diff --git a/index-Blps0pow.js b/index-BXtvCgpn.js similarity index 99% rename from index-Blps0pow.js rename to index-BXtvCgpn.js index 97abcd9..341c0c7 100644 --- a/index-Blps0pow.js +++ b/index-BXtvCgpn.js @@ -1,2 +1,2 @@ -import{a as ei,e as ti,c as gt,p as w1,B as Dg,b as ya,r as ha,d as Ma,_ as Ht,g as We}from"./index-CQYrZ5gL.js";var Ga={},Ze={exports:{}};const Qa=ei(ti);var na;function ri(){return na||(na=1,function(oA,CA){(function(DA){function KA(GA){var B0;(B0=GA)===void 0&&(B0={});var U=B0;typeof U.sodium!="object"&&(typeof gt=="object"?U=gt:typeof window=="object"&&(U=window));var A2=B0;return B0.ready=new Promise(function(f2,l2){(f=A2).onAbort=l2,f.print=function(L){},f.printErr=function(L){},f.onRuntimeInitialized=function(){try{f._crypto_secretbox_keybytes(),f2()}catch(L){l2(L)}},f.useBackupModule=function(){return new Promise(function(L,X){(E={}).onAbort=X,E.onRuntimeInitialized=function(){Object.keys(A2).forEach(function(R){R!=="getRandomValue"&&delete A2[R]}),Object.keys(E).forEach(function(R){A2[R]=E[R]}),L()};var eA,E=E!==void 0?E:{},bA=typeof window=="object",UA=typeof importScripts=="function",r0=typeof w1=="object"&&typeof w1.versions=="object"&&typeof w1.versions.node=="string",S0=Object.assign({},E),v0="";if(r0){var q0=Qa,g2=ya;v0=__dirname+"/",eA=R=>(R=st(R)?new URL(R):g2.normalize(R),q0.readFileSync(R)),!E.thisProgram&&w1.argv.length>1&&w1.argv[1].replace(/\\/g,"/"),w1.argv.slice(2),oA.exports=E}else(bA||UA)&&(UA?v0=self.location.href:typeof document<"u"&&document.currentScript&&(v0=document.currentScript.src),v0=v0.startsWith("blob:")?"":v0.substr(0,v0.replace(/[?#].*/,"").lastIndexOf("/")+1),UA&&(eA=R=>{var Z=new XMLHttpRequest;return Z.open("GET",R,!1),Z.responseType="arraybuffer",Z.send(null),new Uint8Array(Z.response)}));E.print;var j2,AC=E.printErr||void 0;Object.assign(E,S0),S0=null,E.arguments&&E.arguments,E.thisProgram&&E.thisProgram,E.quit&&E.quit,E.wasmBinary&&(j2=E.wasmBinary);var Sg,bg={Memory:function(R){this.buffer=new ArrayBuffer(65536*R.initial)},Module:function(R){},Instance:function(R,Z){this.exports=function(tA){for(var BA,dA=new Uint8Array(123),xA=25;xA>=0;--xA)dA[48+xA]=52+xA,dA[65+xA]=xA,dA[97+xA]=26+xA;function WA(K0,R0,c){for(var A,i,O2=0,M0=R0,A1=c.length,q1=R0+(3*A1>>2)-(c[A1-2]=="=")-(c[A1-1]=="=");O2>4,M0>2),M0>>0>YA>>>0?a+1|0:a)|0,a=(O=(_=YA)>>>0>(YA=YA+O|0)>>>0?a+1|0:a)+u0|0,rA=w0=YA+E0|0,w0=a=w0>>>0>>0?a+1|0:a,YA=G(YA^(i[C+80|0]|i[C+81|0]<<8|i[C+82|0]<<16|i[C+83|0]<<24)^-79577749,O^(i[C+84|0]|i[C+85|0]<<8|i[C+86|0]<<16|i[C+87|0]<<24)^528734635,32),V0=a=y,a=a+1013904242|0,O=YA,H=a=(YA=YA-23791573|0)>>>0<4271175723?a+1|0:a,s0=G(YA^A0,a^s0,40),a=(a=w0)+(w0=y)|0,A0=G(O^(l=A0=s0+rA|0),V0^(v=l>>>0>>0?a+1|0:a),48),a=H+(aA=y)|0,x=a=(A0=YA+(D=A0)|0)>>>0>>0?a+1|0:a,A0=a=G(s0^(M=A0),w0^a,1),H=YA=y,w0=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,V0=a=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,f0=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,YA=(s0=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24)+(O=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24)|0,a=(r2=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24)+(s2=i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24)|0,a=(i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24)+(YA>>>0>>0?a+1|0:a)|0,a=V0+(rA=(_=YA)>>>0>(YA=YA+f0|0)>>>0?a+1|0:a)|0,a=(f0=YA+w0|0)>>>0>>0?a+1|0:a,_=G(YA^(i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24)^725511199,rA^(i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24)^-1694144372,32),B=G(O^(s=_-2067093701|0),s2^(mA=(uA=YA=y)-((_>>>0<2067093701)+1150833018|0)|0),40),a=(EA=y)+a|0,a=(fA=(q=YA=B+f0|0)>>>0>>0?a+1|0:a)+H|0,a=(q>>>0>(YA=q+A0|0)>>>0?a+1|0:a)+i0|0,a=(O=(h=YA)>>>0>(YA=YA+cA|0)>>>0?a+1|0:a)+$A|0,iA=$A=YA+e|0,p=a=$A>>>0>>0?a+1|0:a,b=A0,T0=H,H=YA,rA=O,A0=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,YA=a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,s2=a=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,o=O=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,i0=a,a=(W0=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)+(n=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24)|0,a=o+(($A=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24)>>>0>(h=$A+(O=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)|0)>>>0?a+1|0:a)|0,a=(f0=(i0=h+i0|0)>>>0>>0?a+1|0:a)+YA|0,x0=h=i0+A0|0,h=a=h>>>0>>0?a+1|0:a,Q=$A,$A=G(i0^(i[C+64|0]|i[C+65|0]<<8|i[C+66|0]<<16|i[C+67|0]<<24)^-1377402159,f0^(i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24)^1359893119,32),f0=a=y,a=a+1779033703|0,i0=$A,_A=a=($A=$A-205731576|0)>>>0<4089235720?a+1|0:a,n=G(Q^(V=$A),a^n,40),a=(wA=y)+h|0,Q=G(i0^(h=$A=n+x0|0),f0^(K=n>>>0>h>>>0?a+1|0:a),48),a=G(Q^H,(VA=y)^rA,32),d=$A=y,hA=a,t=a=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,f0=x0=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,z=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,$A=(rA=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24)+(i0=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24)|0,a=(C2=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24)+(vA=i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24)|0,a=(i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24)+($A>>>0>>0?a+1|0:a)|0,a=t+(H=(J=$A)>>>0>($A=z+$A|0)>>>0?a+1|0:a)|0,a=(z=$A+f0|0)>>>0<$A>>>0?a+1|0:a,H=G($A^(i[C+88|0]|i[C+89|0]<<8|i[C+90|0]<<16|i[C+91|0]<<24)^327033209,H^(i[C+92|0]|i[C+93|0]<<8|i[C+94|0]<<16|i[C+95|0]<<24)^1541459225,32),i0=G(i0^(f0=H+1595750129|0),(J=vA)^(vA=(sA=$A=y)-((H>>>0<2699217167)+1521486533|0)|0),40),a=(I0=y)+a|0,$A=G((z=$A=i0+z|0)^H,sA^(J=z>>>0>>0?a+1|0:a),48),a=vA+(c0=y)|0,nA=a=($A=f0+(vA=$A)|0)>>>0>>0?a+1|0:a,a=d+a|0,u=b^(H=hA+(sA=$A)|0),b=a=H>>>0>>0?a+1|0:a,f0=G(u,a^T0,40),a=(T0=y)+p|0,$A=G(iA=hA^(p=$A=f0+iA|0),d^(hA=p>>>0>>0?a+1|0:a),48),a=b+(D0=y)|0,d=a=(b=H+(iA=$A)|0)>>>0>>0?a+1|0:a,$A=(HA=G(b^f0,T0^a,1))+(H=i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)|0,a=(F0=y)+(T0=i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)|0,j0=$A,qA=$A>>>0>>0?a+1|0:a,FA=k0,$A=i[g+96|0]|i[g+97|0]<<8|i[g+98|0]<<16|i[g+99|0]<<24,f0=a=i[g+100|0]|i[g+101|0]<<8|i[g+102|0]<<16|i[g+103|0]<<24,i0=(a=l)+(l=G(sA^i0,nA^I0,1))|0,a=(sA=y)+v|0,a=(l>>>0>i0>>>0?a+1|0:a)+f0|0,a=(v=(v=i0)>>>0>(i0=$A+i0|0)>>>0?a+1|0:a)+FA|0,u=nA=i0+h0|0,nA=a=nA>>>0>>0?a+1|0:a,q=G(_^q,fA^uA,48),fA=a=G(q^i0,(uA=y)^v,32),a=_A+VA|0,a=(I0=i0=y)+(V=(i0=Q+V|0)>>>0>>0?a+1|0:a)|0,_A=a=(v=i0)>>>0>(Q=v+fA|0)>>>0?a+1|0:a,l=G(Q^l,sA^a,40),a=(VA=y)+nA|0,a=(sA=l>>>0>(nA=i0=l+u|0)>>>0?a+1|0:a)+qA|0,a=(_=nA>>>0>(i0=nA+j0|0)>>>0?a+1|0:a)+L0|0,j0=qA=i0+XA|0,qA=a=qA>>>0>>0?a+1|0:a,u=i0,FA=_,i0=i[g+116|0]|i[g+117|0]<<8|i[g+118|0]<<16|i[g+119|0]<<24,g=i[g+112|0]|i[g+113|0]<<8|i[g+114|0]<<16|i[g+115|0]<<24,n=G(n^v,V^wA,1),a=(wA=y)+J|0,a=((_=n+z|0)>>>0>>0?a+1|0:a)+i0|0,a=(v=(V=_)>>>0>(_=g+_|0)>>>0?a+1|0:a)+L0|0,i2=V=_+XA|0,V=a=V>>>0<_>>>0?a+1|0:a,a=G(_^D,v^aA,32),_0=_=y,D=a,v=_,a=uA+mA|0,q=_=s+q|0,z=a=_>>>0>>0?a+1|0:a,a=a+v|0,J=_=_+D|0,aA=a=q>>>0>_>>>0?a+1|0:a,v=G(_^n,wA^a,40),a=(wA=y)+V|0,D=G((_=v+i2|0)^D,_0^(s=_>>>0>>0?a+1|0:a),48),a=G(D^u,(i2=y)^FA,32),_0=n=y,V=a,u=n,B=G(B^q,z^EA,1),a=K+(q=y)|0,a=((n=h)>>>0>(h=h+B|0)>>>0?a+1|0:a)+MA|0,a=(h=(n=h+g0|0)>>>0>>0?a+1|0:a)+T0|0,FA=K=n+H|0,K=a=K>>>0>>0?a+1|0:a,z=B,n=G(n^vA,h^c0,32),a=(vA=y)+x|0,M=G(z^(h=B=n+M|0),(x=n>>>0>h>>>0?a+1|0:a)^q,40),a=(c0=y)+K|0,q=B=M+FA|0,B=G(n^B,vA^(K=B>>>0>>0?a+1|0:a),48),a=x+(I=y)|0,x=B,vA=a=(B=h+B|0)>>>0>>0?a+1|0:a,a=a+u|0,a=(z=B)>>>0>(B=B+V|0)>>>0?a+1|0:a,u=B,B^=HA,HA=a,n=G(B,F0^a,40),a=(F0=y)+qA|0,qA=B=n+j0|0,a=r+(FA=n>>>0>B>>>0?a+1|0:a)|0,j0=B=B+e|0,uA=a=B>>>0>>0?a+1|0:a,B=_,mA=h0,EA=k0,_=G(fA^nA,sA^I0,48),a=_A+(I0=y)|0,fA=_,_A=a=(h=Q+_|0)>>>0>>0?a+1|0:a,_=G(h^l,VA^a,1),a=(Q=y)+EA|0,a=((l=_+mA|0)>>>0<_>>>0?a+1|0:a)+s|0,a=C2+(B=(s=B+l|0)>>>0>>0?a+1|0:a)|0,nA=l=s+rA|0,l=a=l>>>0>>0?a+1|0:a,s=G(s^x,B^I,32),a=d+(sA=y)|0,x=s,b=a=(s=b+s|0)>>>0>>0?a+1|0:a,B=G(_^s,a^Q,40),a=(a=l)+(l=y)|0,Q=_=B+nA|0,_=G(_^x,sA^(nA=_>>>0>>0?a+1|0:a),48),a=b+(VA=y)|0,sA=_,d=a=(b=s+_|0)>>>0>>0?a+1|0:a,_=G(B^b,l^a,1),a=(l=y)+uA|0,a=t+(B=(s=_+j0|0)>>>0<_>>>0?a+1|0:a)|0,j0=x=s+x0|0,x=a=x>>>0>>0?a+1|0:a,uA=_,mA=l,a=aA+i2|0,a=(_=D+J|0)>>>0>>0?a+1|0:a,D=_,J=a,a=G(_^v,wA^a,1),v=l=y,_=a,a=K+i0|0,a=((q=g+q|0)>>>0>>0?a+1|0:a)+l|0,a=N0+(q=(l=_+q|0)>>>0>>0?a+1|0:a)|0,aA=K=l+cA|0,K=a=K>>>0>>0?a+1|0:a,l=G(l^iA,q^D0,32),a=_A+(iA=y)|0,q=l,_A=a=(_A=h)>>>0>(h=h+l|0)>>>0?a+1|0:a,l=G(_^h,a^v,40),a=(wA=y)+K|0,v=_=l+aA|0,_=G(K=_^q,iA^(q=_>>>0>>0?a+1|0:a),48),a=_A+(D0=y)|0,_A=_,K=_=h+_|0,iA=a=_>>>0>>0?a+1|0:a,aA=s,EA=B,_=G(M^z,vA^c0,1),a=(h=y)+$|0,a=hA+((s=_+p0|0)>>>0<_>>>0?a+1|0:a)|0,a=MA+(B=(s=s+p|0)>>>0

>>0?a+1|0:a)|0,hA=p=s+g0|0,p=a=p>>>0>>0?a+1|0:a,M=_,_=(s=G(s^fA,B^I0,32))+D|0,a=(D=y)+J|0,B=_,h=G(_^M,(fA=_>>>0>>0?a+1|0:a)^h,40),a=(I0=y)+p|0,p=_=h+hA|0,z=G(_^s,D^(hA=_>>>0>>0?a+1|0:a),48),s=G(z^aA,(a=EA)^(EA=y),32),a=(aA=y)+iA|0,D=_=s+K|0,M=G(_^uA,(J=_>>>0>>0?a+1|0:a)^mA,40),a=(uA=y)+x|0,x=_=M+j0|0,_=G(_^s,aA^(vA=_>>>0>>0?a+1|0:a),48),a=J+(c0=y)|0,J=_,aA=a=(s=D)>>>0>(D=D+_|0)>>>0?a+1|0:a,_=G(D^M,uA^a,1),a=L0+(j0=y)|0,uA=_,i2=_=XA+_|0,M=a=_>>>0>>0?a+1|0:a,s=E0,_=G(l^K,wA^iA,1),a=nA+(l=y)|0,a=((K=Q)>>>0>(Q=_+Q|0)>>>0?a+1|0:a)+u0|0,a=(K=(s=s+Q|0)>>>0>>0?a+1|0:a)+V0|0,mA=Q=s+w0|0,nA=a=Q>>>0>>0?a+1|0:a,iA=_,Q=G(V^qA,FA^_0,48),a=G(Q^s,(wA=y)^K,32),_0=_=y,V=a,s=_,a=fA+EA|0,a=(_=B+z|0)>>>0>>0?a+1|0:a,B=_,fA=a,a=a+s|0,K=_=_+V|0,z=a=B>>>0>_>>>0?a+1|0:a,s=G(_^iA,a^l,40),a=(a=nA)+(nA=y)|0,iA=_=s+mA|0,qA=a=_>>>0>>0?a+1|0:a,a=a+M|0,FA=a=(l=_+i2|0)>>>0<_>>>0?a+1|0:a,M=a,_=G(h^B,fA^I0,1),a=YA+(h=y)|0,a=q+((B=_+A0|0)>>>0>>0?a+1|0:a)|0,a=f0+(v=(B=B+v|0)>>>0>>0?a+1|0:a)|0,mA=q=B+$A|0,q=a=q>>>0<$A>>>0?a+1|0:a,fA=_,a=G(B^sA,v^VA,32),EA=_=y,B=a,v=_,a=wA+HA|0,sA=_=Q+u|0,HA=a=_>>>0>>0?a+1|0:a,a=a+v|0,a=(Q=_+B|0)>>>0<_>>>0?a+1|0:a,_=Q^fA,fA=a,v=G(_,a^h,40),a=(VA=y)+q|0,h=_=v+mA|0,u=G(_^B,EA^(q=_>>>0>>0?a+1|0:a),48),a=G(u^l,(I0=y)^M,32),i2=_=y,mA=a,M=_,_=G(n^sA,HA^F0,1),a=hA+(n=y)|0,a=W0+((B=_+p|0)>>>0

>>0?a+1|0:a)|0,a=(p=(B=B+O|0)>>>0>>0?a+1|0:a)+r2|0,sA=hA=B+s0|0,hA=a=hA>>>0>>0?a+1|0:a,B=G(B^_A,p^D0,32),a=d+(HA=y)|0,_A=B,p=n,n=a=(B=b+B|0)>>>0>>0?a+1|0:a,p=G(_^B,p^a,40),a=(D0=y)+hA|0,b=_=p+sA|0,_=G(sA=_^_A,HA^(_A=_>>>0

>>0?a+1|0:a),48),a=n+(wA=y)|0,n=_,hA=_=B+_|0,sA=a=_>>>0>>0?a+1|0:a,a=a+M|0,d=a=(M=_+mA|0)>>>0<_>>>0?a+1|0:a,B=G(M^uA,j0^a,40),a=FA+(HA=y)|0,a=((_=B+l|0)>>>0>>0?a+1|0:a)+k0|0,l=_,FA=_=_+h0|0,uA=a=l>>>0>_>>>0?a+1|0:a,EA=MA,l=G(V^iA,qA^_0,48),a=(F0=y)+z|0,V=_=l+K|0,a=G(_^s,(K=_>>>0>>0?a+1|0:a)^nA,1),nA=s=y,_=a,a=q+r|0,a=((h=h+e|0)>>>0>>0?a+1|0:a)+s|0,a=(h=(s=_+h|0)>>>0>>0?a+1|0:a)+EA|0,z=q=s+g0|0,q=a=q>>>0>>0?a+1|0:a,s=G(s^n,h^wA,32),a=aA+(iA=y)|0,D=a=(n=s+D|0)>>>0>>0?a+1|0:a,h=G(_^n,a^nA,40),a=(qA=y)+q|0,q=_=h+z|0,s=G(_^s,iA^(nA=_>>>0>>0?a+1|0:a),48),a=D+(z=y)|0,iA=a=(D=s+n|0)>>>0>>0?a+1|0:a,_=G(h^D,qA^a,1),a=(qA=y)+uA|0,a=T0+((n=_+FA|0)>>>0<_>>>0?a+1|0:a)|0,a=(h=(n=n+H|0)>>>0>>0?a+1|0:a)+$|0,j0=$=n+p0|0,$=a=$>>>0>>0?a+1|0:a,aA=_,EA=n,wA=h,n=E0,_=G(p^hA,sA^D0,1),a=vA+(p=y)|0,a=((h=x)>>>0>(x=_+x|0)>>>0?a+1|0:a)+u0|0,a=r2+(h=(n=n+x|0)>>>0>>0?a+1|0:a)|0,vA=x=n+s0|0,hA=a=x>>>0>>0?a+1|0:a,x=_,h=a=G(n^l,h^F0,32),a=fA+I0|0,a=(sA=_=y)+(Q=(_=Q+u|0)>>>0>>0?a+1|0:a)|0,fA=a=(l=_+h|0)>>>0<_>>>0?a+1|0:a,x=G(l^x,a^p,40),a=(I0=y)+hA|0,hA=G(vA=(n=x+vA|0)^h,sA^(h=n>>>0>>0?a+1|0:a),48),a=G(hA^EA,(D0=y)^wA,32),F0=p=y,vA=a,sA=p,_=G(_^v,Q^VA,1),a=f0+(p=y)|0,a=_A+((Q=_+$A|0)>>>0<$A>>>0?a+1|0:a)|0,a=W0+(b=(Q=Q+b|0)>>>0>>0?a+1|0:a)|0,EA=v=Q+O|0,v=a=v>>>0>>0?a+1|0:a,_A=_,u=p,Q=G(Q^J,b^c0,32),a=(J=y)+K|0,p=_=Q+V|0,b=G(_^_A,(V=_>>>0>>0?a+1|0:a)^u,40),a=(VA=y)+v|0,_A=_=b+EA|0,_=G(_^Q,J^(K=_>>>0>>0?a+1|0:a),48),a=V+(EA=y)|0,v=_,V=_=p+_|0,J=a=_>>>0

>>0?a+1|0:a,a=a+sA|0,sA=_=_+vA|0,Q=qA,qA=a=V>>>0>_>>>0?a+1|0:a,Q=G(_^aA,Q^a,40),a=(a=$)+($=y)|0,u=_=Q+j0|0,aA=a=_>>>0>>0?a+1|0:a,p=h,_=G(mA^FA,uA^i2,48),a=d+(c0=y)|0,d=_,h=(_=M+_|0)^B,B=a=_>>>0>>0?a+1|0:a,h=G(h,a^HA,1),a=(HA=y)+p|0,a=t+((n=h+n|0)>>>0>>0?a+1|0:a)|0,a=(p=(n=n+x0|0)>>>0>>0?a+1|0:a)+YA|0,FA=M=n+A0|0,M=a=M>>>0>>0?a+1|0:a,n=G(n^v,p^EA,32),a=iA+(uA=y)|0,iA=n,D=a=(p=D+n|0)>>>0>>0?a+1|0:a,h=G(h^p,HA^a,40),a=(a=M)+(M=y)|0,v=n=h+FA|0,n=G(mA=n^iA,uA^(iA=n>>>0>>0?a+1|0:a),48),a=D+(j0=y)|0,HA=n,FA=a=(D=p+n|0)>>>0

>>0?a+1|0:a,n=G(h^D,M^a,1),a=(M=y)+aA|0,a=r+((h=n+u|0)>>>0>>0?a+1|0:a)|0,a=i0+(p=(h=h+e|0)>>>0>>0?a+1|0:a)|0,i2=uA=g+h|0,uA=a=uA>>>0>>0?a+1|0:a,mA=n,EA=M,M=h,wA=p,n=G(b^V,J^VA,1),a=(p=y)+nA|0,a=N0+((h=n+q|0)>>>0>>0?a+1|0:a)|0,a=(b=(h=h+cA|0)>>>0>>0?a+1|0:a)+i0|0,nA=q=g+h|0,q=a=q>>>0>>0?a+1|0:a,V=n,h=a=G(h^d,b^c0,32),b=n=y,a=fA+D0|0,fA=a=(n=l+hA|0)>>>0>>0?a+1|0:a,a=a+b|0,a=(l=n)>>>0>(n=n+h|0)>>>0?a+1|0:a,hA=n,n^=V,V=a,p=G(n,a^p,40),a=(VA=y)+q|0,b=G(q=(n=p+nA|0)^h,b^(h=n>>>0

>>0?a+1|0:a),48),a=G(b^M,(a=wA)^(wA=y),32),c0=M=y,q=a,nA=B,B=s,a=G(l^x,fA^I0,1),J=s=y,l=a,a=K+V0|0,a=((x=_A+w0|0)>>>0>>0?a+1|0:a)+s|0,x=a=(s=l+x|0)>>>0>>0?a+1|0:a,B=G(s^B,a^z,32),a=(a=nA)+(nA=y)|0,l=G((_=B+_|0)^l,J^(fA=_>>>0>>0?a+1|0:a),40),a=x+(I0=y)|0,_A=l,a=C2+((K=s)>>>0>(s=s+l|0)>>>0?a+1|0:a)|0,K=a=(l=s+rA|0)>>>0>>0?a+1|0:a,s=G(B^l,nA^a,48),a=fA+(D0=y)|0,z=_,B=s,fA=_=_+s|0,nA=a=z>>>0>_>>>0?a+1|0:a,a=a+M|0,z=a=(M=_+q|0)>>>0<_>>>0?a+1|0:a,_=(x=G(M^mA,a^EA,40))+i2|0,a=(i2=y)+uA|0,J=_,d=_>>>0>>0?a+1|0:a,_=G(vA^u,aA^F0,48),a=(vA=y)+qA|0,sA=s=_+sA|0,mA=$,$=a=s>>>0<_>>>0?a+1|0:a,a=G(s^Q,mA^a,1),u=s=y,Q=a,a=h+t|0,a=((n=n+x0|0)>>>0>>0?a+1|0:a)+s|0,a=T0+(n=(s=n+Q|0)>>>0>>0?a+1|0:a)|0,aA=h=s+H|0,h=a=h>>>0>>0?a+1|0:a,s=G(s^B,n^D0,32),a=FA+(uA=y)|0,qA=s,s=(B=D+s|0)^Q,Q=a=B>>>0>>0?a+1|0:a,n=G(s,u^a,40),a=(a=h)+(h=y)|0,u=s=n+aA|0,s=G(D=s^qA,uA^(qA=s>>>0>>0?a+1|0:a),48),a=Q+(D0=y)|0,FA=s,B=a=(s=B+s|0)>>>0>>0?a+1|0:a,n=G(s^n,h^a,1),a=(D=y)+d|0,a=L0+((h=n+J|0)>>>0>>0?a+1|0:a)|0,a=(Q=(h=h+XA|0)>>>0>>0?a+1|0:a)+MA|0,_0=aA=h+g0|0,aA=a=aA>>>0>>0?a+1|0:a,uA=n,mA=h,EA=Q,n=G(_A^fA,nA^I0,1),a=(nA=y)+k0|0,a=iA+(n>>>0>(h=n+h0|0)>>>0?a+1|0:a)|0,Q=a=(h=h+v|0)>>>0>>0?a+1|0:a,a=G(_^h,a^vA,32),vA=_=y,v=a,a=V+wA|0,a=(_=b+hA|0)>>>0>>0?a+1|0:a,b=_,fA=a,a=vA+a|0,V=_=_+v|0,_A=a=b>>>0>_>>>0?a+1|0:a,_=G(_^n,nA^a,40),a=Q+(wA=y)|0,hA=_,a=f0+((_=h+_|0)>>>0>>0?a+1|0:a)|0,a=(_=_+$A|0)>>>0<$A>>>0?a+1|0:a,nA=_,_^=v,v=a,Q=G(_,vA^a,48),a=G(Q^mA,(a=EA)^(EA=y),32),I0=_=y,vA=a,iA=_,_=G(p^b,fA^VA,1),a=V0+(h=y)|0,a=K+((n=_+w0|0)>>>0>>0?a+1|0:a)|0,a=(p=(n=n+l|0)>>>0>>0?a+1|0:a)+YA|0,K=b=n+A0|0,b=a=b>>>0>>0?a+1|0:a,l=_,fA=h,_=(n=G(n^HA,p^j0,32))+sA|0,a=(sA=y)+$|0,h=_,p=G(p=_^l,(l=_>>>0>>0?a+1|0:a)^fA,40),a=(VA=y)+b|0,b=_=p+K|0,n=G(_^n,sA^($=_>>>0

>>0?a+1|0:a),48),a=l+(fA=y)|0,K=_=n+h|0,sA=a=_>>>0>>0?a+1|0:a,a=a+iA|0,iA=a=(l=_+vA|0)>>>0<_>>>0?a+1|0:a,h=G(l^uA,a^D,40),a=(HA=y)+aA|0,aA=_=h+_0|0,uA=a=_>>>0>>0?a+1|0:a,_=s,D=B,B=n,s=G(q^J,d^c0,48),a=z+(_0=y)|0,q=s,M=a=(n=M+s|0)>>>0>>0?a+1|0:a,a=G(n^x,i2^a,1),z=s=y,x=a,a=v+e2|0,a=((v=nA+p0|0)>>>0>>0?a+1|0:a)+s|0,v=a=(s=v+x|0)>>>0>>0?a+1|0:a,B=G(s^B,a^fA,32),a=(nA=y)+D|0,x=G((_=B+_|0)^x,z^(D=_>>>0>>0?a+1|0:a),40),a=v+(J=y)|0,a=W0+((v=s)>>>0>(s=s+x|0)>>>0?a+1|0:a)|0,fA=a=(v=s+O|0)>>>0>>0?a+1|0:a,s=G(B^v,nA^a,48),a=D+(c0=y)|0,nA=s,z=a=(D=_+s|0)>>>0<_>>>0?a+1|0:a,_=G(D^x,J^a,1),a=(x=y)+uA|0,a=N0+((s=_+aA|0)>>>0<_>>>0?a+1|0:a)|0,a=L0+(B=(s=s+cA|0)>>>0>>0?a+1|0:a)|0,F0=J=s+XA|0,J=a=J>>>0>>0?a+1|0:a,d=_,mA=s,_=G(p^K,sA^VA,1),a=(p=y)+qA|0,a=r2+((s=_+u|0)>>>0<_>>>0?a+1|0:a)|0,a=C2+(K=(s=s+s0|0)>>>0>>0?a+1|0:a)|0,u=sA=s+rA|0,sA=a=sA>>>0>>0?a+1|0:a,qA=_,a=G(s^q,K^_0,32),_0=_=y,s=a,a=_A+EA|0,V=_=Q+V|0,q=a=_>>>0>>0?a+1|0:a,a=_0+a|0,_A=a=(Q=_+s|0)>>>0<_>>>0?a+1|0:a,p=G(Q^qA,a^p,40),a=(EA=y)+sA|0,K=_=p+u|0,qA=G(_^s,_0^(sA=_>>>0

>>0?a+1|0:a),48),a=G(qA^mA,(_0=y)^B,32),VA=_=y,u=a,B=_,s=E0,_=G(V^hA,q^wA,1),a=$+(q=y)|0,a=((V=b)>>>0>(b=_+b|0)>>>0?a+1|0:a)+u0|0,a=N0+(b=(s=s+b|0)>>>0>>0?a+1|0:a)|0,V=$=s+cA|0,$=a=$>>>0>>0?a+1|0:a,s=G(s^FA,b^D0,32),a=M+(hA=y)|0,M=s,a=(s=n+s|0)>>>0>>0?a+1|0:a,n=q,q=a,n=G(_^s,n^a,40),a=(wA=y)+$|0,b=_=n+V|0,_=G(_^M,hA^($=_>>>0>>0?a+1|0:a),48),a=q+(mA=y)|0,q=_,V=_=s+_|0,hA=a=_>>>0>>0?a+1|0:a,a=a+B|0,a=(M=_+u|0)>>>0<_>>>0?a+1|0:a,_=M^d,d=a,x=G(_,a^x,40),a=(D0=y)+J|0,J=_=x+F0|0,FA=_>>>0>>0?a+1|0:a,_=G(vA^aA,uA^I0,48),a=iA+(I0=y)|0,vA=_,a=(_=l+_|0)>>>0>>0?a+1|0:a,l=_,iA=a,a=G(_^h,a^HA,1),HA=_=y,B=a,a=sA+T0|0,a=((s=K+H|0)>>>0>>0?a+1|0:a)+_|0,a=W0+(s=(_=s+B|0)>>>0>>0?a+1|0:a)|0,K=h=_+O|0,h=a=h>>>0>>0?a+1|0:a,_=G(_^q,s^mA,32),a=z+(sA=y)|0,q=_,D=a=(s=D+_|0)>>>0>>0?a+1|0:a,B=G(s^B,HA^a,40),a=(HA=y)+h|0,K=_=B+K|0,_=G(h=_^q,sA^(q=_>>>0>>0?a+1|0:a),48),a=D+(F0=y)|0,D=_,z=a=(h=s+_|0)>>>0>>0?a+1|0:a,_=G(h^B,HA^a,1),a=(sA=y)+FA|0,a=V0+((s=_+J|0)>>>0<_>>>0?a+1|0:a)|0,a=(B=(s=s+w0|0)>>>0>>0?a+1|0:a)+k0|0,j0=HA=s+h0|0,HA=a=HA>>>0>>0?a+1|0:a,aA=_,uA=s,mA=B,_=G(n^V,wA^hA,1),a=r2+(B=y)|0,a=fA+((s=_+s0|0)>>>0>>0?a+1|0:a)|0,a=e2+(n=(s=s+v|0)>>>0>>0?a+1|0:a)|0,hA=v=s+p0|0,v=a=v>>>0>>0?a+1|0:a,fA=_,V=B,a=G(s^vA,n^I0,32),vA=_=y,n=a,s=_,a=_A+_0|0,a=(_=Q+qA|0)>>>0>>0?a+1|0:a,Q=_,_A=a,a=a+s|0,a=(B=_+n|0)>>>0<_>>>0?a+1|0:a,_=B^fA,fA=a,_=G(_,a^V,40),a=(a=v)+(v=y)|0,V=s=_+hA|0,hA=a=s>>>0<_>>>0?a+1|0:a,vA=G(s^n,vA^a,48),a=G(vA^uA,(a=mA)^(mA=y),32),wA=s=y,qA=a,s=G(Q^p,_A^EA,1),a=(Q=y)+u0|0,a=$+((n=s+E0|0)>>>0>>0?a+1|0:a)|0,a=t+(p=(n=n+b|0)>>>0>>0?a+1|0:a)|0,EA=b=n+x0|0,b=a=b>>>0>>0?a+1|0:a,$=s,_A=Q,n=G(n^nA,p^c0,32),a=(nA=y)+iA|0,Q=s=n+l|0,s=(p=G(s^$,(l=s>>>0>>0?a+1|0:a)^_A,40))+EA|0,a=(EA=y)+b|0,$=s,s=G(s^n,nA^(_A=s>>>0

>>0?a+1|0:a),48),a=l+(_0=y)|0,nA=s,iA=s=Q+s|0,uA=a=s>>>0>>0?a+1|0:a,a=wA+a|0,a=(n=s+qA|0)>>>0>>0?a+1|0:a,s=sA,sA=a,Q=G(n^aA,s^a,40),a=(I0=y)+HA|0,b=s=Q+j0|0,a=G(s^qA,wA^(HA=s>>>0>>0?a+1|0:a),48),wA=s=y,qA=a,s=_,a=fA+mA|0,fA=_=B+vA|0,vA=a=_>>>0>>0?a+1|0:a,a=G(_^s,a^v,1),B=s=y,_=a,a=_A+r|0,a=((l=$+e|0)>>>0>>0?a+1|0:a)+s|0,a=f0+(l=(s=_+l|0)>>>0>>0?a+1|0:a)|0,mA=v=s+$A|0,v=a=v>>>0<$A>>>0?a+1|0:a,$=_,_A=B,_=G(J^u,FA^VA,48),a=d+(VA=y)|0,J=_,a=(_=M+_|0)>>>0>>0?a+1|0:a,M=_,s=G(s^D,l^F0,32),d=a,a=a+(u=y)|0,B=_=s+_|0,l=G(_^$,(D=_>>>0>>0?a+1|0:a)^_A,40),a=(FA=y)+v|0,v=_=l+mA|0,_=G(_^s,u^($=_>>>0>>0?a+1|0:a),48),a=D+(c0=y)|0,_A=_,u=a=(D=B+_|0)>>>0>>0?a+1|0:a,_=G(l^D,FA^a,1),a=W0+(mA=y)|0,FA=_,F0=_=O+_|0,B=a=_>>>0>>0?a+1|0:a,_=G(x^M,d^D0,1),a=(l=y)+hA|0,a=C2+((s=_+V|0)>>>0<_>>>0?a+1|0:a)|0,a=MA+(M=(s=s+rA|0)>>>0>>0?a+1|0:a)|0,d=x=s+g0|0,x=a=x>>>0>>0?a+1|0:a,V=l,s=G(s^nA,M^_0,32),a=z+(_0=y)|0,hA=s,a=(l=h+s|0)>>>0>>0?a+1|0:a,h=V,V=a,M=G(_^l,h^a,40),a=(D0=y)+x|0,nA=_=M+d|0,a=(z=_>>>0>>0?a+1|0:a)+B|0,x=a=(B=_+F0|0)>>>0<_>>>0?a+1|0:a,d=a=G(B^qA,a^wA,32),aA=_=y,_=G(p^iA,uA^EA,1),a=(h=y)+q|0,a=i0+((s=_+K|0)>>>0<_>>>0?a+1|0:a)|0,a=(p=(s=g+s|0)>>>0>>0?a+1|0:a)+YA|0,uA=q=s+A0|0,q=a=q>>>0>>0?a+1|0:a,K=_,iA=h,s=G(s^J,p^VA,32),a=(J=y)+vA|0,h=_=s+fA|0,_=(p=G(_^K,(fA=_>>>0>>0?a+1|0:a)^iA,40))+uA|0,a=(uA=y)+q|0,q=_,_=G(_^s,J^(K=_>>>0

>>0?a+1|0:a),48),a=fA+(VA=y)|0,fA=_,J=a=(_=h+_|0)>>>0>>0?a+1|0:a,a=a+aA|0,vA=a=(h=_)>>>0>(_=_+d|0)>>>0?a+1|0:a,s=G(_^FA,mA^a,40),a=x+(mA=y)|0,iA=s,a=r+((s=B+s|0)>>>0>>0?a+1|0:a)|0,FA=s=s+e|0,B=s^d,d=a=s>>>0>>0?a+1|0:a,s=G(B,aA^a,48),a=vA+(aA=y)|0,vA=a=(x=_+s|0)>>>0<_>>>0?a+1|0:a,_=a=G(x^iA,mA^a,1),iA=B=y,B=G(h^p,J^uA,1),a=$+(p=y)|0,a=C2+((h=B+v|0)>>>0>>0?a+1|0:a)|0,a=N0+(v=(h=h+rA|0)>>>0>>0?a+1|0:a)|0,mA=$=h+cA|0,$=a=$>>>0>>0?a+1|0:a,J=B,uA=p,a=sA+wA|0,a=(B=n+qA|0)>>>0>>0?a+1|0:a,sA=B,hA=G(nA^hA,z^_0,48),p=G(h^hA,v^(_0=y),32),nA=a,a=a+(F0=y)|0,v=B=p+B|0,B=G(B^J,(z=B>>>0

>>0?a+1|0:a)^uA,40),a=(J=y)+$|0,uA=a=(n=B+mA|0)>>>0>>0?a+1|0:a,a=a+iA|0,a=t+((qA=n)>>>0>(n=_+n|0)>>>0?a+1|0:a)|0,a=(h=(n=n+x0|0)>>>0>>0?a+1|0:a)+u0|0,j0=$=n+E0|0,mA=a=$>>>0>>0?a+1|0:a,EA=_,wA=n,a=G(Q^sA,nA^I0,1),Q=n=y,_=a,a=K+r2|0,a=(($=q+s0|0)>>>0>>0?a+1|0:a)+n|0,a=f0+($=(n=_+$|0)>>>0<$>>>0?a+1|0:a)|0,nA=q=n+$A|0,q=a=q>>>0<$A>>>0?a+1|0:a,K=_,a=G(n^_A,$^c0,32),sA=_=y,n=a,$=_,a=V+_0|0,V=_=l+hA|0,_A=a=_>>>0>>0?a+1|0:a,a=a+$|0,a=(l=_+n|0)>>>0<_>>>0?a+1|0:a,_=l^K,K=a,$=G(_,a^Q,40),a=(_0=y)+q|0,hA=G(q=(_=$+nA|0)^n,sA^(n=_>>>0<$>>>0?a+1|0:a),48),a=G(a=hA^wA,(wA=y)^h,32),I0=h=y,nA=a,q=h,h=G(M^V,_A^D0,1),a=MA+(M=y)|0,a=HA+((Q=h+g0|0)>>>0>>0?a+1|0:a)|0,a=V0+(b=(Q=Q+b|0)>>>0>>0?a+1|0:a)|0,_A=V=Q+w0|0,V=a=V>>>0>>0?a+1|0:a,Q=G(Q^fA,b^VA,32),a=u+(sA=y)|0,fA=Q,D=a=(Q=D+Q|0)>>>0>>0?a+1|0:a,b=G(h^Q,a^M,40),a=(VA=y)+V|0,M=h=b+_A|0,h=G(V=h^fA,sA^(fA=h>>>0>>0?a+1|0:a),48),a=D+(c0=y)|0,V=h,_A=h=Q+h|0,sA=a=h>>>0>>0?a+1|0:a,a=a+q|0,a=(Q=h+nA|0)>>>0>>0?a+1|0:a,h=iA,iA=a,D=G(Q^EA,h^a,40),a=(HA=y)+mA|0,q=h=D+j0|0,h=G(mA=h^nA,I0^(nA=h>>>0>>0?a+1|0:a),48),a=iA+(I0=y)|0,iA=h,Q=a=(h=Q+h|0)>>>0>>0?a+1|0:a,HA=a=G(h^D,HA^a,1),D0=a,u=D=y,D=n,n=B,B=G(p^qA,uA^F0,48),a=z+(F0=y)|0,z=B,a=(B=v+B|0)>>>0>>0?a+1|0:a,v=_,_=n^B,n=a,_=G(_,a^J,1),a=(J=y)+D|0,a=e2+(_>>>0>(p=v+_|0)>>>0?a+1|0:a)|0,a=k0+(v=(p=p+p0|0)>>>0>>0?a+1|0:a)|0,qA=D=p+h0|0,D=a=D>>>0>>0?a+1|0:a,p=G(p^V,v^c0,32),a=vA+(uA=y)|0,V=a=(v=p+x|0)>>>0>>0?a+1|0:a,x=G(_^v,J^a,40),a=(c0=y)+D|0,J=_=x+qA|0,p=G(_^p,uA^(vA=_>>>0>>0?a+1|0:a),48),a=V+(qA=y)|0,uA=_=p+v|0,V=_,mA=a=_>>>0>>0?a+1|0:a,v=B,D=n,a=K+wA|0,a=(_=l+hA|0)>>>0>>0?a+1|0:a,l=_,_^=$,$=a,a=G(_,_0^a,1),EA=_=y,K=a,n=a,a=fA+YA|0,a=((B=M+A0|0)>>>0>>0?a+1|0:a)+_|0,M=a=(_=B)>>>0>(B=n+B|0)>>>0?a+1|0:a,n=G(s^B,a^aA,32),a=(a=D)+(D=y)|0,hA=_=n+v|0,s=G(s=_^K,EA^(K=_>>>0>>0?a+1|0:a),40),a=M+(aA=y)|0,a=T0+((_=s+B|0)>>>0>>0?a+1|0:a)|0,EA=a=(v=_+H|0)>>>0>>0?a+1|0:a,D=G(n^v,D^a,48),j0=a=y,_=G(b^_A,sA^VA,1),a=(n=y)+d|0,a=L0+((B=_+FA|0)>>>0<_>>>0?a+1|0:a)|0,a=i0+(b=(B=B+XA|0)>>>0>>0?a+1|0:a)|0,d=M=g+B|0,_A=a=M>>>0>>0?a+1|0:a,sA=_,M=G(B^z,b^F0,32),a=(VA=y)+$|0,$=_=M+l|0,B=G(_^sA,(z=_>>>0>>0?a+1|0:a)^n,40),a=(a=_A)+(_A=y)|0,sA=_=B+d|0,d=a=_>>>0>>0?a+1|0:a,n=a,a=i0+u|0,a=((b=g+HA|0)>>>0>>0?a+1|0:a)+n|0,fA=a=(n=_+b|0)>>>0>>0?a+1|0:a,_=G(n^D,j0^a,32),a=(HA=y)+mA|0,l=G((b=_+V|0)^D0,(a=b>>>0<_>>>0?a+1|0:a)^u,40),u=a,a=k0+(V=y)|0,a=fA+((FA=l+h0|0)>>>0>>0?a+1|0:a)|0,a=(fA=n+FA|0)>>>0>>0?a+1|0:a,n=HA,HA=a,n=G(_^fA,n^a,48),a=(a=u)+(u=y)|0,_=l^(b=n+b|0),l=a=b>>>0>>0?a+1|0:a,FA=a=G(_,a^V,1),D0=a,wA=_=y,V=h,_0=Q,h=B,B=G(M^sA,d^VA,48),a=z+(sA=y)|0,M=_=B+$|0,$=a=_>>>0<$>>>0?a+1|0:a,h=G(_^h,a^_A,1),a=(d=y)+e2|0,a=EA+((_=h+p0|0)>>>0>>0?a+1|0:a)|0,v=a=(Q=_+v|0)>>>0>>0?a+1|0:a,_=G(Q^p,a^qA,32),a=(_A=y)+_0|0,V=p=_+V|0,z=a=p>>>0<_>>>0?a+1|0:a,h=G(h^p,a^d,40),a=N0+(F0=y)|0,d=h,a=v+((h=cA+h|0)>>>0>>0?a+1|0:a)|0,Q=a=(h=h+Q|0)>>>0>>0?a+1|0:a,p=G(_^h,a^_A,48),a=(a=z)+(z=y)|0,qA=_=p+V|0,_A=_,EA=a=_>>>0

>>0?a+1|0:a,a=K+j0|0,V=(_=D+hA|0)^s,s=a=_>>>0>>0?a+1|0:a,a=G(V,a^aA,1),aA=v=y,V=a,a=vA+f0|0,a=((D=J+$A|0)>>>0<$A>>>0?a+1|0:a)+v|0,K=a=(K=D)>>>0>(D=D+V|0)>>>0?a+1|0:a,hA=v=G(D^iA,I0^a,32),J=a=y,a=a+$|0,vA=v=v+M|0,iA=a=hA>>>0>v>>>0?a+1|0:a,v=G(v^V,aA^a,40),a=u0+(aA=y)|0,a=K+((M=v+E0|0)>>>0>>0?a+1|0:a)|0,M=a=(V=D)>>>0>(D=D+M|0)>>>0?a+1|0:a,V=G(D^hA,a^J,48),I0=a=y,$=a,x=G(x^uA,mA^c0,1),K=a=y,hA=B,a=a+YA|0,a=nA+((B=x+A0|0)>>>0>>0?a+1|0:a)|0,a=(B=B+q|0)>>>0>>0?a+1|0:a,q=B^hA,hA=a,q=G(q,a^sA,32),a=(c0=y)+s|0,nA=_=q+_|0,s=G(_^x,(s=K)^(K=_>>>0>>0?a+1|0:a),40),a=L0+(J=y)|0,a=hA+((_=s+XA|0)>>>0>>0?a+1|0:a)|0,hA=_=_+B|0,sA=a=_>>>0>>0?a+1|0:a,B=a,a=wA+C2|0,a=((x=FA+rA|0)>>>0>>0?a+1|0:a)+B|0,FA=a=(B=_+x|0)>>>0>>0?a+1|0:a,_=G(B^V,a^$,32),a=(uA=y)+EA|0,$=G((x=_+_A|0)^D0,(a=x>>>0<_>>>0?a+1|0:a)^wA,40),mA=_A=y,wA=a,a=_A+V0|0,a=FA+((_A=$+w0|0)>>>0>>0?a+1|0:a)|0,FA=a=(_A=B+_A|0)>>>0>>0?a+1|0:a,B=G(_^_A,a^uA,48),a=(uA=y)+wA|0,_=(x=B+x|0)^$,$=a=x>>>0>>0?a+1|0:a,mA=a=G(_,a^mA,1),wA=_=y,_0=b,VA=p,p=s,s=G(q^hA,sA^c0,48),a=(q=y)+K|0,K=_=s+nA|0,hA=a=_>>>0>>0?a+1|0:a,p=G(_^p,a^J,1),a=(J=y)+W0|0,a=((_=p+O|0)>>>0

>>0?a+1|0:a)+M|0,D=a=(b=_+D|0)>>>0<_>>>0?a+1|0:a,_=G(b^VA,a^z,32),a=(M=y)+l|0,nA=l=_+_0|0,z=a=l>>>0<_>>>0?a+1|0:a,p=G(p^l,a^J,40),a=t+(VA=y)|0,J=p,a=D+((p=x0+p|0)>>>0>>0?a+1|0:a)|0,sA=a=(l=p+b|0)>>>0>>0?a+1|0:a,p=G(_^l,a^M,48),a=(a=z)+(z=y)|0,nA=_=p+nA|0,_0=a=_>>>0

>>0?a+1|0:a,D=n,b=h,a=iA+I0|0,n=a=(_=V+vA|0)>>>0>>0?a+1|0:a,h=G(_^v,a^aA,1),a=(v=y)+MA|0,a=((M=h+g0|0)>>>0>>0?a+1|0:a)+Q|0,Q=G(D^(b=b+M|0),(a=b>>>0>>0?a+1|0:a)^u,32),M=a,V=h,a=(D=y)+hA|0,a=(h=Q+K|0)>>>0>>0?a+1|0:a,K=h,h^=V,V=a,h=G(h,a^v,40),a=r+(hA=y)|0,a=((v=h+e|0)>>>0>>0?a+1|0:a)+M|0,vA=a=(M=v)>>>0>(v=v+b|0)>>>0?a+1|0:a,D=G(Q^v,a^D,48),I0=a=y,b=a,Q=G(qA^d,EA^F0,1),iA=a=y,d=n,a=a+T0|0,a=HA+((n=Q+H|0)>>>0>>0?a+1|0:a)|0,M=q,q=a=(n=n+fA|0)>>>0>>0?a+1|0:a,M=G(s^n,M^a,32),a=(c0=y)+d|0,fA=_=M+_|0,s=G(_^Q,(s=iA)^(iA=_>>>0>>0?a+1|0:a),40),a=r2+(d=y)|0,a=q+((_=s+s0|0)>>>0>>0?a+1|0:a)|0,HA=_=_+n|0,qA=a=_>>>0>>0?a+1|0:a,n=a,a=wA+f0|0,a=((Q=$A+mA|0)>>>0<$A>>>0?a+1|0:a)+n|0,q=a=(n=_+Q|0)>>>0>>0?a+1|0:a,_=G(n^D,a^b,32),a=(u=y)+_0|0,b=G((Q=_+nA|0)^mA,(a=Q>>>0<_>>>0?a+1|0:a)^wA,40),mA=a,a=YA+(aA=y)|0,a=q+((EA=b+A0|0)>>>0>>0?a+1|0:a)|0,a=(q=n+EA|0)>>>0>>0?a+1|0:a,n=u,u=a,n=G(_^q,n^a,48),a=(a=mA)+(mA=y)|0,_=(Q=n+Q|0)^b,b=a=Q>>>0>>0?a+1|0:a,aA=a=G(_,a^aA,1),EA=_=y,wA=p,p=s,s=G(M^HA,qA^c0,48),a=(a=iA)+(iA=y)|0,fA=_=s+fA|0,M=d,d=a=_>>>0>>0?a+1|0:a,p=G(_^p,M^a,1),a=(HA=y)+V0|0,a=vA+((_=p+w0|0)>>>0

>>0?a+1|0:a)|0,M=v,v=_+v|0,_=z,z=a=M>>>0>v>>>0?a+1|0:a,_=G(v^wA,_^a,32),a=(a=$)+($=y)|0,vA=a=(M=_+x|0)>>>0<_>>>0?a+1|0:a,x=M,p=G(p^M,a^HA,40),a=T0+(c0=y)|0,HA=p,a=z+((p=H+p|0)>>>0>>0?a+1|0:a)|0,z=a=(M=p+v|0)>>>0>>0?a+1|0:a,p=G(_^M,a^$,48),a=(a=vA)+(vA=y)|0,qA=_=p+x|0,wA=a=_>>>0

>>0?a+1|0:a,x=B,a=V+I0|0,B=a=(_=D+K|0)>>>0>>0?a+1|0:a,h=G(_^h,a^hA,1),a=k0+(D=y)|0,a=sA+((v=h+h0|0)>>>0>>0?a+1|0:a)|0,V=(v=l+v|0)^x,x=a=v>>>0>>0?a+1|0:a,l=G(V,a^uA,32),$=a=y,V=h,a=a+d|0,a=(h=l+fA|0)>>>0>>0?a+1|0:a,K=h,h^=V,V=a,h=G(h,a^D,40),a=r+(hA=y)|0,a=x+((D=h+e|0)>>>0>>0?a+1|0:a)|0,sA=a=(D=v+D|0)>>>0>>0?a+1|0:a,x=G(l^D,a^$,48),I0=a=y,v=a,l=G(J^nA,VA^_0,1),fA=a=y,nA=B,a=a+t|0,a=FA+((B=l+x0|0)>>>0>>0?a+1|0:a)|0,_A=a=(B=B+_A|0)>>>0<_A>>>0?a+1|0:a,$=G(s^B,a^iA,32),a=(D0=y)+nA|0,nA=_=$+_|0,s=G(_^l,(J=_>>>0<$>>>0?a+1|0:a)^fA,40),a=i0+(iA=y)|0,a=_A+((_=g+s|0)>>>0>>0?a+1|0:a)|0,_A=_=_+B|0,d=a=_>>>0>>0?a+1|0:a,B=a,a=EA+L0|0,a=((l=aA+XA|0)>>>0>>0?a+1|0:a)+B|0,fA=a=(B=_+l|0)>>>0>>0?a+1|0:a,_=G(B^x,a^v,32),a=(FA=y)+wA|0,v=G((l=_+qA|0)^aA,(a=l>>>0<_>>>0?a+1|0:a)^EA,40),uA=a,a=e2+(aA=y)|0,a=fA+((EA=v+p0|0)>>>0>>0?a+1|0:a)|0,a=(fA=B+EA|0)>>>0>>0?a+1|0:a,B=FA,FA=a,B=G(_^fA,B^a,48),a=(a=uA)+(uA=y)|0,_=(l=B+l|0)^v,v=a=l>>>0>>0?a+1|0:a,aA=a=G(_,a^aA,1),F0=a,EA=_=y,_0=Q,VA=p,Q=s,s=G($^_A,d^D0,48),a=($=y)+J|0,_A=_=s+nA|0,nA=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^iA,1),a=(iA=y)+u0|0,a=sA+((_=Q+E0|0)>>>0>>0?a+1|0:a)|0,D=a=(p=_+D|0)>>>0>>0?a+1|0:a,_=G(p^VA,a^vA,32),a=(J=y)+b|0,vA=a=(b=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^b,a^iA,40),a=W0+(D0=y)|0,sA=Q,a=D+((Q=O+Q|0)>>>0>>0?a+1|0:a)|0,D=Q+p|0,Q=J,J=a=D>>>0

>>0?a+1|0:a,Q=G(_^D,Q^a,48),a=(a=vA)+(vA=y)|0,iA=_=Q+b|0,d=a=_>>>0>>0?a+1|0:a,p=n,a=V+I0|0,n=a=(_=x+K|0)>>>0>>0?a+1|0:a,h=G(_^h,a^hA,1),a=(x=y)+r2|0,a=z+((b=h+s0|0)>>>0>>0?a+1|0:a)|0,p=G(p^(b=b+M|0),(a=b>>>0>>0?a+1|0:a)^mA,32),V=M=y,M=a,K=h,a=V+nA|0,a=(h=p+_A|0)>>>0

>>0?a+1|0:a,_A=h,h^=K,K=a,h=G(h,a^x,40),a=N0+(hA=y)|0,a=((x=h+cA|0)>>>0>>0?a+1|0:a)+M|0,z=V,V=a=(M=b+x|0)>>>0>>0?a+1|0:a,x=G(p^M,z^a,48),I0=a=y,b=a,p=G(qA^HA,wA^c0,1),nA=a=y,z=n,a=a+MA|0,a=u+((n=p+g0|0)>>>0>>0?a+1|0:a)|0,q=a=(n=n+q|0)>>>0>>0?a+1|0:a,$=G(s^n,a^$,32),a=(c0=y)+z|0,z=_=$+_|0,s=G(_^p,(s=nA)^(nA=_>>>0<$>>>0?a+1|0:a),40),a=C2+(HA=y)|0,a=q+((_=s+rA|0)>>>0>>0?a+1|0:a)|0,qA=_=_+n|0,u=a=_>>>0>>0?a+1|0:a,n=a,a=EA+r|0,a=((p=aA+e|0)>>>0>>0?a+1|0:a)+n|0,q=a=(n=_+p|0)>>>0

>>0?a+1|0:a,_=G(n^x,a^b,32),a=(aA=y)+d|0,b=G((p=_+iA|0)^F0,(a=p>>>0<_>>>0?a+1|0:a)^EA,40),EA=a,a=V0+(mA=y)|0,a=q+((wA=b+w0|0)>>>0>>0?a+1|0:a)|0,a=(q=n+wA|0)>>>0>>0?a+1|0:a,n=aA,aA=a,n=G(_^q,n^a,48),a=(a=EA)+(EA=y)|0,_=(p=n+p|0)^b,b=a=p>>>0>>0?a+1|0:a,mA=a=G(_,a^mA,1),wA=_=y,_0=l,VA=Q,Q=s,s=G($^qA,u^c0,48),a=($=y)+nA|0,nA=_=s+z|0,z=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^HA,1),a=(HA=y)+W0|0,a=V+((_=Q+O|0)>>>0>>0?a+1|0:a)|0,M=a=(l=_+M|0)>>>0>>0?a+1|0:a,_=G(l^VA,a^vA,32),a=(V=y)+v|0,vA=a=(v=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^v,a^HA,40),a=MA+(c0=y)|0,HA=Q,a=M+((Q=g0+Q|0)>>>0>>0?a+1|0:a)|0,M=Q+l|0,Q=V,V=a=M>>>0>>0?a+1|0:a,Q=G(_^M,Q^a,48),a=(a=vA)+(vA=y)|0,qA=_=Q+v|0,u=a=_>>>0>>0?a+1|0:a,l=B,a=K+I0|0,B=a=(_=x+_A|0)>>>0>>0?a+1|0:a,h=G(_^h,a^hA,1),a=C2+(x=y)|0,a=J+((v=h+rA|0)>>>0>>0?a+1|0:a)|0,D=a=(v=v+D|0)>>>0>>0?a+1|0:a,l=G(l^v,a^uA,32),_A=a=y,K=h,a=a+z|0,a=(h=l+nA|0)>>>0>>0?a+1|0:a,hA=h,h^=K,K=a,h=G(h,a^x,40),a=L0+(nA=y)|0,a=D+((x=h+XA|0)>>>0>>0?a+1|0:a)|0,a=(D=v+x|0)>>>0>>0?a+1|0:a,v=_A,_A=a,x=G(l^D,v^a,48),I0=a=y,v=a,l=G(sA^iA,d^D0,1),z=a=y,J=B,a=a+i0|0,a=FA+((B=g+l|0)>>>0>>0?a+1|0:a)|0,fA=a=(B=B+fA|0)>>>0>>0?a+1|0:a,$=G(s^B,a^$,32),a=(D0=y)+J|0,J=_=$+_|0,s=G(_^l,(s=z)^(z=_>>>0<$>>>0?a+1|0:a),40),a=T0+(sA=y)|0,a=fA+((_=s+H|0)>>>0>>0?a+1|0:a)|0,iA=_=_+B|0,d=a=_>>>0>>0?a+1|0:a,B=a,a=wA+k0|0,a=((l=mA+h0|0)>>>0>>0?a+1|0:a)+B|0,fA=a=(B=_+l|0)>>>0>>0?a+1|0:a,_=G(B^x,a^v,32),a=(FA=y)+u|0,v=G((l=_+qA|0)^mA,(a=l>>>0<_>>>0?a+1|0:a)^wA,40),mA=a,a=t+(uA=y)|0,a=fA+((wA=v+x0|0)>>>0>>0?a+1|0:a)|0,a=(fA=B+wA|0)>>>0>>0?a+1|0:a,B=FA,FA=a,B=G(_^fA,B^a,48),a=(a=mA)+(mA=y)|0,_=(l=B+l|0)^v,v=a=l>>>0>>0?a+1|0:a,uA=a=G(_,a^uA,1),wA=_=y,_0=p,VA=Q,Q=s,s=G($^iA,d^D0,48),a=($=y)+z|0,z=_=s+J|0,J=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^sA,1),a=(sA=y)+f0|0,a=_A+((_=Q+$A|0)>>>0>>0?a+1|0:a)|0,D=a=(p=_+D|0)>>>0>>0?a+1|0:a,_=G(p^VA,a^vA,32),a=(_A=y)+b|0,vA=a=(b=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^b,a^sA,40),a=r2+(D0=y)|0,sA=Q,a=D+((Q=s0+Q|0)>>>0>>0?a+1|0:a)|0,D=Q+p|0,Q=_A,_A=a=D>>>0

>>0?a+1|0:a,Q=G(_^D,Q^a,48),a=(a=vA)+(vA=y)|0,iA=_=Q+b|0,d=a=_>>>0>>0?a+1|0:a,p=n,a=K+I0|0,n=a=(_=x+hA|0)>>>0>>0?a+1|0:a,h=G(_^h,a^nA,1),a=(x=y)+N0|0,a=V+((b=h+cA|0)>>>0>>0?a+1|0:a)|0,M=a=(b=b+M|0)>>>0>>0?a+1|0:a,p=G(p^b,a^EA,32),V=a=y,K=h,a=a+J|0,a=(h=p+z|0)>>>0

>>0?a+1|0:a,hA=h,h^=K,K=a,h=G(h,a^x,40),a=u0+(nA=y)|0,a=M+((x=h+E0|0)>>>0>>0?a+1|0:a)|0,z=V,V=a=(M=b+x|0)>>>0>>0?a+1|0:a,x=G(p^M,z^a,48),I0=a=y,b=a,p=G(qA^HA,u^c0,1),z=a=y,J=n,a=a+YA|0,a=aA+((n=p+A0|0)>>>0>>0?a+1|0:a)|0,q=a=(n=n+q|0)>>>0>>0?a+1|0:a,$=G(s^n,a^$,32),a=(c0=y)+J|0,J=_=$+_|0,s=G(_^p,(s=z)^(z=_>>>0<$>>>0?a+1|0:a),40),a=e2+(HA=y)|0,a=q+((_=s+p0|0)>>>0>>0?a+1|0:a)|0,qA=_=_+n|0,u=a=_>>>0>>0?a+1|0:a,n=a,a=wA+t|0,a=((p=uA+x0|0)>>>0>>0?a+1|0:a)+n|0,q=a=(n=_+p|0)>>>0

>>0?a+1|0:a,_=G(n^x,a^b,32),a=(aA=y)+d|0,b=G((p=_+iA|0)^uA,(a=p>>>0<_>>>0?a+1|0:a)^wA,40),EA=a,a=C2+(uA=y)|0,a=q+((wA=b+rA|0)>>>0>>0?a+1|0:a)|0,a=(q=n+wA|0)>>>0>>0?a+1|0:a,n=aA,aA=a,n=G(_^q,n^a,48),a=(a=EA)+(EA=y)|0,_=(p=n+p|0)^b,b=a=p>>>0>>0?a+1|0:a,uA=a=G(_,a^uA,1),wA=_=y,_0=l,VA=Q,Q=s,s=G($^qA,u^c0,48),a=($=y)+z|0,z=_=s+J|0,J=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^HA,1),a=(HA=y)+YA|0,a=V+((_=Q+A0|0)>>>0>>0?a+1|0:a)|0,M=a=(l=_+M|0)>>>0>>0?a+1|0:a,_=G(l^VA,a^vA,32),a=(V=y)+v|0,vA=a=(v=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^v,a^HA,40),a=u0+(c0=y)|0,HA=Q,a=M+((Q=E0+Q|0)>>>0>>0?a+1|0:a)|0,M=Q+l|0,Q=V,V=a=M>>>0>>0?a+1|0:a,Q=G(_^M,Q^a,48),a=(a=vA)+(vA=y)|0,qA=_=Q+v|0,u=a=_>>>0>>0?a+1|0:a,l=B,a=K+I0|0,B=a=(_=x+hA|0)>>>0>>0?a+1|0:a,h=G(_^h,a^nA,1),a=N0+(x=y)|0,a=_A+((v=h+cA|0)>>>0>>0?a+1|0:a)|0,D=a=(v=v+D|0)>>>0>>0?a+1|0:a,l=G(l^v,a^mA,32),_A=a=y,K=h,a=a+J|0,a=(h=l+z|0)>>>0>>0?a+1|0:a,hA=h,h^=K,K=a,h=G(h,a^x,40),a=r2+(nA=y)|0,a=D+((x=h+s0|0)>>>0>>0?a+1|0:a)|0,a=(D=v+x|0)>>>0>>0?a+1|0:a,v=_A,_A=a,x=G(l^D,v^a,48),I0=a=y,v=a,l=G(sA^iA,d^D0,1),z=a=y,J=B,a=a+MA|0,a=FA+((B=l+g0|0)>>>0>>0?a+1|0:a)|0,fA=a=(B=B+fA|0)>>>0>>0?a+1|0:a,$=G(s^B,a^$,32),a=(D0=y)+J|0,J=_=$+_|0,s=G(_^l,(s=z)^(z=_>>>0<$>>>0?a+1|0:a),40),a=e2+(sA=y)|0,a=fA+((_=s+p0|0)>>>0>>0?a+1|0:a)|0,iA=_=_+B|0,d=a=_>>>0>>0?a+1|0:a,B=a,a=wA+T0|0,a=((l=uA+H|0)>>>0>>0?a+1|0:a)+B|0,fA=a=(B=_+l|0)>>>0>>0?a+1|0:a,_=G(B^x,a^v,32),a=(FA=y)+u|0,v=G((l=_+qA|0)^uA,(a=l>>>0<_>>>0?a+1|0:a)^wA,40),mA=a,a=i0+(uA=y)|0,a=fA+((wA=g+v|0)>>>0>>0?a+1|0:a)|0,a=(fA=B+wA|0)>>>0>>0?a+1|0:a,B=FA,FA=a,B=G(_^fA,B^a,48),a=(a=mA)+(mA=y)|0,_=(l=B+l|0)^v,v=a=l>>>0>>0?a+1|0:a,uA=a=G(_,a^uA,1),wA=_=y,_0=p,VA=Q,Q=s,s=G($^iA,d^D0,48),a=($=y)+z|0,z=_=s+J|0,J=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^sA,1),a=(sA=y)+L0|0,a=_A+((_=Q+XA|0)>>>0>>0?a+1|0:a)|0,D=a=(p=_+D|0)>>>0>>0?a+1|0:a,_=G(p^VA,a^vA,32),a=(_A=y)+b|0,vA=a=(b=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^b,a^sA,40),a=r+(D0=y)|0,sA=Q,a=D+((Q=e+Q|0)>>>0>>0?a+1|0:a)|0,D=Q+p|0,Q=_A,_A=a=D>>>0

>>0?a+1|0:a,Q=G(_^D,Q^a,48),a=(a=vA)+(vA=y)|0,iA=_=Q+b|0,d=a=_>>>0>>0?a+1|0:a,p=n,a=K+I0|0,n=a=(_=x+hA|0)>>>0>>0?a+1|0:a,h=G(_^h,a^nA,1),a=(x=y)+k0|0,a=V+((b=h+h0|0)>>>0>>0?a+1|0:a)|0,M=a=(b=b+M|0)>>>0>>0?a+1|0:a,p=G(p^b,a^EA,32),V=a=y,K=h,a=a+J|0,a=(h=p+z|0)>>>0

>>0?a+1|0:a,hA=h,h^=K,K=a,h=G(h,a^x,40),a=W0+(nA=y)|0,a=M+((x=h+O|0)>>>0>>0?a+1|0:a)|0,z=V,V=a=(M=b+x|0)>>>0>>0?a+1|0:a,x=G(p^M,z^a,48),I0=a=y,b=a,p=G(qA^HA,u^c0,1),z=a=y,J=n,a=a+V0|0,a=aA+((n=p+w0|0)>>>0>>0?a+1|0:a)|0,q=a=(n=n+q|0)>>>0>>0?a+1|0:a,$=G(s^n,a^$,32),a=(c0=y)+J|0,J=_=$+_|0,s=G(_^p,(s=z)^(z=_>>>0<$>>>0?a+1|0:a),40),a=f0+(HA=y)|0,a=q+((_=s+$A|0)>>>0<$A>>>0?a+1|0:a)|0,qA=_=_+n|0,u=a=_>>>0>>0?a+1|0:a,n=a,a=wA+e2|0,a=((p=uA+p0|0)>>>0>>0?a+1|0:a)+n|0,q=a=(n=_+p|0)>>>0

>>0?a+1|0:a,_=G(n^x,a^b,32),a=(aA=y)+d|0,b=G((p=_+iA|0)^uA,(a=p>>>0<_>>>0?a+1|0:a)^wA,40),EA=a,a=u0+(uA=y)|0,a=q+((wA=b+E0|0)>>>0>>0?a+1|0:a)|0,a=(q=n+wA|0)>>>0>>0?a+1|0:a,n=aA,aA=a,n=G(_^q,n^a,48),a=(a=EA)+(EA=y)|0,_=(p=n+p|0)^b,b=a=p>>>0>>0?a+1|0:a,uA=a=G(_,a^uA,1),wA=_=y,_0=l,VA=Q,Q=s,s=G($^qA,u^c0,48),a=($=y)+z|0,z=_=s+J|0,J=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^HA,1),a=(HA=y)+C2|0,a=V+((_=Q+rA|0)>>>0>>0?a+1|0:a)|0,M=a=(l=_+M|0)>>>0>>0?a+1|0:a,_=G(l^VA,a^vA,32),a=(V=y)+v|0,vA=a=(v=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^v,a^HA,40),a=t+(c0=y)|0,HA=Q,a=M+((Q=x0+Q|0)>>>0>>0?a+1|0:a)|0,M=Q+l|0,Q=V,V=a=M>>>0>>0?a+1|0:a,Q=G(_^M,Q^a,48),a=(a=vA)+(vA=y)|0,qA=_=Q+v|0,u=a=_>>>0>>0?a+1|0:a,l=B,a=K+I0|0,B=a=(_=x+hA|0)>>>0>>0?a+1|0:a,h=G(_^h,a^nA,1),a=W0+(x=y)|0,a=_A+((v=h+O|0)>>>0>>0?a+1|0:a)|0,D=a=(v=v+D|0)>>>0>>0?a+1|0:a,l=G(l^v,a^mA,32),_A=a=y,K=h,a=a+J|0,a=(h=l+z|0)>>>0>>0?a+1|0:a,hA=h,h^=K,K=a,h=G(h,a^x,40),a=YA+(nA=y)|0,a=D+((x=h+A0|0)>>>0>>0?a+1|0:a)|0,a=(D=v+x|0)>>>0>>0?a+1|0:a,v=_A,_A=a,x=G(l^D,v^a,48),I0=a=y,v=a,l=G(sA^iA,d^D0,1),z=a=y,J=B,a=a+r2|0,a=FA+((B=l+s0|0)>>>0>>0?a+1|0:a)|0,fA=a=(B=B+fA|0)>>>0>>0?a+1|0:a,$=G(s^B,a^$,32),a=(D0=y)+J|0,J=_=$+_|0,s=G(_^l,(s=z)^(z=_>>>0<$>>>0?a+1|0:a),40),a=V0+(sA=y)|0,a=fA+((_=s+w0|0)>>>0>>0?a+1|0:a)|0,iA=_=_+B|0,d=a=_>>>0>>0?a+1|0:a,B=a,a=wA+N0|0,a=((l=uA+cA|0)>>>0>>0?a+1|0:a)+B|0,fA=a=(B=_+l|0)>>>0>>0?a+1|0:a,_=G(B^x,a^v,32),a=(FA=y)+u|0,v=G((l=_+qA|0)^uA,(a=l>>>0<_>>>0?a+1|0:a)^wA,40),mA=a,a=r+(uA=y)|0,a=fA+((wA=v+e|0)>>>0>>0?a+1|0:a)|0,a=(fA=B+wA|0)>>>0>>0?a+1|0:a,B=FA,FA=a,B=G(_^fA,B^a,48),a=(a=mA)+(mA=y)|0,_=(l=B+l|0)^v,v=a=l>>>0>>0?a+1|0:a,uA=a=G(_,a^uA,1),wA=_=y,_0=p,VA=Q,Q=s,s=G($^iA,d^D0,48),a=($=y)+z|0,z=_=s+J|0,J=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^sA,1),a=(iA=y)+MA|0,a=_A+((_=Q+g0|0)>>>0>>0?a+1|0:a)|0,D=a=(p=_+D|0)>>>0>>0?a+1|0:a,_=G(p^VA,a^vA,32),a=(_A=y)+b|0,vA=b=_+_0|0,sA=a=b>>>0<_>>>0?a+1|0:a,Q=G(Q^b,a^iA,40),a=T0+(_0=y)|0,iA=Q,a=D+((Q=H+Q|0)>>>0>>0?a+1|0:a)|0,b=Q+p|0,Q=_A,_A=a=b>>>0

>>0?a+1|0:a,Q=G(_^b,Q^a,48),a=(a=sA)+(sA=y)|0,vA=_=Q+vA|0,d=a=_>>>0>>0?a+1|0:a,p=n,a=K+I0|0,n=a=(_=x+hA|0)>>>0>>0?a+1|0:a,h=G(_^h,a^nA,1),a=(x=y)+i0|0,a=V+((D=g+h|0)>>>0>>0?a+1|0:a)|0,M=a=(D=D+M|0)>>>0>>0?a+1|0:a,V=p=G(p^D,a^EA,32),K=a=y,hA=h,a=a+J|0,a=(h=p+z|0)>>>0

>>0?a+1|0:a,nA=h,h^=hA,hA=a,h=G(h,a^x,40),a=L0+(z=y)|0,a=M+((p=h+XA|0)>>>0>>0?a+1|0:a)|0,J=(p=p+D|0)^V,V=a=p>>>0>>0?a+1|0:a,D=G(J,a^K,48),EA=a=y,x=a,K=M=G(qA^HA,u^c0,1),J=a=y,HA=n,a=a+f0|0,a=aA+((n=M+$A|0)>>>0<$A>>>0?a+1|0:a)|0,a=(n=n+q|0)>>>0>>0?a+1|0:a,q=$,$=a,M=G(s^n,q^a,32),a=(VA=y)+HA|0,q=_=M+_|0,s=G(s=_^K,(K=_>>>0>>0?a+1|0:a)^J,40),a=k0+(J=y)|0,a=$+((_=s+h0|0)>>>0>>0?a+1|0:a)|0,$=_=_+n|0,HA=a=_>>>0>>0?a+1|0:a,n=a,a=wA+T0|0,a=((aA=H)>>>0>(H=uA+H|0)>>>0?a+1|0:a)+n|0,T0=a=(_=_+H|0)>>>0>>0?a+1|0:a,H=G(_^D,a^x,32),a=(qA=y)+d|0,x=G((n=vA+H|0)^uA,(a=n>>>0>>0?a+1|0:a)^wA,40),aA=a,a=L0+(u=y)|0,a=T0+((uA=XA)>>>0>(XA=x+XA|0)>>>0?a+1|0:a)|0,a=(XA=_+XA|0)>>>0<_>>>0?a+1|0:a,_=H^XA,H=a,L0=G(_,a^qA,48),a=(T0=y)+aA|0,n=a=(_=n+L0|0)>>>0>>0?a+1|0:a,a=G(_^x,a^u,1),x=y,qA=a,u=l,l=h0,aA=k0,k0=G(M^$,HA^VA,48),a=(M=y)+K|0,K=l,q=a=(h0=q+k0|0)>>>0>>0?a+1|0:a,l=G(s^($=h0),a^J,1),a=(J=y)+aA|0,a=V+(l>>>0>(h0=K+l|0)>>>0?a+1|0:a)|0,s=a=(h0=p+h0|0)>>>0

>>0?a+1|0:a,Q=G(Q^h0,a^sA,32),a=(a=v)+(v=y)|0,V=p=Q+u|0,K=a=p>>>0>>0?a+1|0:a,p=G(p^l,a^J,40),a=(J=y)+C2|0,a=(p>>>0>(rA=p+rA|0)>>>0?a+1|0:a)+s|0,s=a=(s=rA)>>>0>(rA=h0+rA|0)>>>0?a+1|0:a,Q=G(Q^rA,a^v,48),a=(l=y)+K|0,v=h0=Q+V|0,C2=a=h0>>>0>>0?a+1|0:a,V=g,K=i0,a=hA+EA|0,h0=a=(g=D+nA|0)>>>0>>0?a+1|0:a,i0=G(g^h,a^z,1),a=(D=y)+K|0,a=_A+((h=V+i0|0)>>>0>>0?a+1|0:a)|0,B=G((h=h+b|0)^B,(a=h>>>0>>0?a+1|0:a)^mA,32),V=a,_A=cA,cA=i0,a=(b=y)+q|0,q=D,D=a=(i0=B+$|0)>>>0>>0?a+1|0:a,cA=G(i0^cA,q^a,40),a=($=y)+N0|0,a=((N0=_A+cA|0)>>>0>>0?a+1|0:a)+V|0,V=N0,h=B^(N0=h+N0|0),B=a=V>>>0>N0>>>0?a+1|0:a,a=G(h,a^b,48),hA=h=y,b=a,q=g0,V=MA,g0=G(vA^iA,d^_0,1),K=a=y,a=a+e2|0,a=FA+((g0=(_A=g0)+p0|0)>>>0>>0?a+1|0:a)|0,p0=a=(g0=fA+g0|0)>>>0>>0?a+1|0:a,MA=G(g0^k0,a^M,32),a=(fA=y)+h0|0,h0=g=MA+g|0,k0=G(g^_A,(M=g>>>0>>0?a+1|0:a)^K,40),a=(a=V)+(V=y)|0,a=p0+((g=k0+q|0)>>>0>>0?a+1|0:a)|0,p0=g=g+g0|0,e2=a=g>>>0>>0?a+1|0:a,g0=a,a=x+W0|0,a=((_A=O)>>>0>(O=qA+O|0)>>>0?a+1|0:a)+g0|0,W0=a=(g0=g+O|0)>>>0>>0?a+1|0:a,O=G(b^g0,a^h,32),a=(_A=y)+C2|0,h=g=O+v|0,g=G(g^qA,(q=x)^(x=g>>>0>>0?a+1|0:a),40),a=r2+(K=y)|0,r2=g,a=W0+((g=s0+g|0)>>>0>>0?a+1|0:a)|0,a=(g=g+g0|0)>>>0>>0?a+1|0:a,W0=g,nA=(i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24)^g,q=a,z=a^(i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24),g0=G(MA^p0,fA^e2,48),a=(p0=y)+M|0,M=g=g0+h0|0,e2=a=g>>>0>>0?a+1|0:a,MA=E0,a=D+hA|0,E0=a=(g=b+i0|0)>>>0>>0?a+1|0:a,cA=G(g^cA,a^$,1),a=(b=y)+u0|0,a=((MA=cA+MA|0)>>>0>>0?a+1|0:a)+s|0,MA=a=(u0=MA+rA|0)>>>0>>0?a+1|0:a,h0=G(u0^L0,a^T0,32),a=(i0=y)+e2|0,rA=a=(s0=h0+M|0)>>>0>>0?a+1|0:a,L0=h0,h0=G(cA^s0,a^b,40),a=(s=y)+V0|0,a=(h0>>>0>(cA=h0+w0|0)>>>0?a+1|0:a)+MA|0,D=i0,i0=a=(u0=cA+u0|0)>>>0>>0?a+1|0:a,cA=G(L0^(w0=u0),D^a,48),a=(b=y)+rA|0,a=(MA=cA+s0|0)>>>0>>0?a+1|0:a,s0=MA,MA^=nA,c[C+8|0]=MA,c[C+9|0]=MA>>>8,c[C+10|0]=MA>>>16,c[C+11|0]=MA>>>24,rA=a,a^=z,c[C+12|0]=a,c[C+13|0]=a>>>8,c[C+14|0]=a>>>16,c[C+15|0]=a>>>24,u0=g,MA=E0,g=g0,g0=G(p^v,J^C2,1),a=(V0=y)+r|0,a=(g0>>>0>(E0=g0+e|0)>>>0?a+1|0:a)+H|0,XA=a=(v=E0)>>>0>(E0=XA+E0|0)>>>0?a+1|0:a,g=G(g^E0,a^p0,32),a=(a=MA)+(MA=y)|0,p0=a=(u0=g+u0|0)>>>0>>0?a+1|0:a,L0=g,u0=G(g0^(H=u0),a^V0,40),a=(p=y)+t|0,a=XA+((g=u0+x0|0)>>>0>>0?a+1|0:a)|0,a=(g=g+E0|0)>>>0>>0?a+1|0:a,XA=g,g^=L0,L0=a,E0=G(g,a^MA,48),a=(v=y)+p0|0,H=g=E0+H|0,p0=g>>>0>>0?a+1|0:a,k0=g=G(M^k0,V^e2,1),V0=a=y,a=a+YA|0,a=B+((g=g+A0|0)>>>0>>0?a+1|0:a)|0,YA=a=(g0=g+N0|0)>>>0>>0?a+1|0:a,g=(MA=G(Q^g0,a^l,32))+_|0,a=(_=y)+n|0,N0=g,g=(A0=G(B=g^k0,(k0=g>>>0>>0?a+1|0:a)^V0,40))+$A|0,a=($A=y)+f0|0,a=YA+(g>>>0>>0?a+1|0:a)|0,a=(YA=g+g0|0)>>>0>>0?a+1|0:a,g0=YA^s2^H,c[0|(g=C)]=g0,c[g+1|0]=g0>>>8,c[g+2|0]=g0>>>16,c[g+3|0]=g0>>>24,g0=a^o^p0,c[g+4|0]=g0,c[g+5|0]=g0>>>8,c[g+6|0]=g0>>>16,c[g+7|0]=g0>>>24,g0=(MA=G(YA^MA,a^_,48))+N0|0,a=(N0=y)+k0|0,a=(k0=g0>>>0>>0?a+1|0:a)^(i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24)^L0,YA=(i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24)^XA^g0,c[g+16|0]=YA,c[g+17|0]=YA>>>8,c[g+18|0]=YA>>>16,c[g+19|0]=YA>>>24,c[g+20|0]=a,c[g+21|0]=a>>>8,c[g+22|0]=a>>>16,c[g+23|0]=a>>>24,g=G(O^W0,q^_A,48),YA=y,XA=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,a=(i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24)^G(h0^s0,s^rA,1)^g,c[C+32|0]=a,c[C+33|0]=a>>>8,c[C+34|0]=a>>>16,c[C+35|0]=a>>>24,a=y^XA^YA,c[C+36|0]=a,c[C+37|0]=a>>>8,c[C+38|0]=a>>>16,c[C+39|0]=a>>>24,a=x+YA|0,a=(XA=g+h|0)>>>0>>0?a+1|0:a,h0=(i[(g=C)+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)^i0^a,YA=(i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24)^w0^XA,c[g+24|0]=YA,c[g+25|0]=YA>>>8,c[g+26|0]=YA>>>16,c[g+27|0]=YA>>>24,c[g+28|0]=h0,c[g+29|0]=h0>>>8,c[g+30|0]=h0>>>16,c[g+31|0]=h0>>>24,h0=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,g=E0^(i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24)^G(g0^A0,$A^k0,1),c[C+40|0]=g,c[C+41|0]=g>>>8,c[C+42|0]=g>>>16,c[C+43|0]=g>>>24,g=v^y^h0,c[C+44|0]=g,c[C+45|0]=g>>>8,c[C+46|0]=g>>>16,c[C+47|0]=g>>>24,g0=i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24,g=MA^(i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24)^G(H^u0,p^p0,1),c[C+56|0]=g,c[C+57|0]=g>>>8,c[C+58|0]=g>>>16,c[C+59|0]=g>>>24,g=N0^y^g0,c[C+60|0]=g,c[C+61|0]=g>>>8,c[C+62|0]=g>>>16,c[C+63|0]=g>>>24,g0=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,g=cA^(i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24)^G(XA^r2,a^K,1),c[C+48|0]=g,c[C+49|0]=g>>>8,c[C+50|0]=g>>>16,c[C+51|0]=g>>>24,g=b^y^g0,c[C+52|0]=g,c[C+53|0]=g>>>8,c[C+54|0]=g>>>16,c[C+55|0]=g>>>24}function aC(C,g,e,t,r,o,I){var a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA,iA,hA,mA,HA,aA,EA,YA,qA,$A,g0,i0,u,d,H,FA,VA,c0,_0,I0,h0,D0,MA=0,O=0,rA=0,cA=0,XA=0,A0=0,s0=0,p0=0,f0=0,E0=0,w0=0,u0=0,k0=0,F0=0,N0=0,x0=0,L0=0,T0=0,j0=0,V0=0,W0=0,C2=0,e2=0,r2=0,i2=0,s2=0,k2=0,d2=0,m2=0,Y2=0,R2=0,U2=0,W2=0,V2=0,C1=0,c1=0,I1=0,s1=0,h1=0,Q1=0,K1=0,Te=0,je=0,Oe=0,Xe=0,Ve=0;return W=s=W-560|0,b0(rA=s+352|0),I&&x2(rA,35600,34,0),Y0(s+288|0,o,32,0),x2(A0=s+352|0,s+320|0,32,0),x2(A0,e,t,r),e1(A0,p0=s+224|0),E0=i[(O=o)+32|0]|i[O+33|0]<<8|i[O+34|0]<<16|i[O+35|0]<<24,w0=i[O+36|0]|i[O+37|0]<<8|i[O+38|0]<<16|i[O+39|0]<<24,cA=i[O+40|0]|i[O+41|0]<<8|i[O+42|0]<<16|i[O+43|0]<<24,MA=i[O+44|0]|i[O+45|0]<<8|i[O+46|0]<<16|i[O+47|0]<<24,rA=i[O+48|0]|i[O+49|0]<<8|i[O+50|0]<<16|i[O+51|0]<<24,o=i[O+52|0]|i[O+53|0]<<8|i[O+54|0]<<16|i[O+55|0]<<24,XA=i[O+60|0]|i[O+61|0]<<8|i[O+62|0]<<16|i[O+63|0]<<24,O=i[O+56|0]|i[O+57|0]<<8|i[O+58|0]<<16|i[O+59|0]<<24,c[C+56|0]=O,c[C+57|0]=O>>>8,c[C+58|0]=O>>>16,c[C+59|0]=O>>>24,c[C+60|0]=XA,c[C+61|0]=XA>>>8,c[C+62|0]=XA>>>16,c[C+63|0]=XA>>>24,c[C+48|0]=rA,c[C+49|0]=rA>>>8,c[C+50|0]=rA>>>16,c[C+51|0]=rA>>>24,c[C+52|0]=o,c[C+53|0]=o>>>8,c[C+54|0]=o>>>16,c[C+55|0]=o>>>24,c[C+40|0]=cA,c[C+41|0]=cA>>>8,c[C+42|0]=cA>>>16,c[C+43|0]=cA>>>24,c[C+44|0]=MA,c[C+45|0]=MA>>>8,c[C+46|0]=MA>>>16,c[C+47|0]=MA>>>24,c[0|(o=C+32|0)]=E0,c[o+1|0]=E0>>>8,c[o+2|0]=E0>>>16,c[o+3|0]=E0>>>24,c[o+4|0]=w0,c[o+5|0]=w0>>>8,c[o+6|0]=w0>>>16,c[o+7|0]=w0>>>24,d1(p0),Cg(s,p0),eg(C,s),b0(A0),I&&x2(A0,35600,34,0),x2(I=s+352|0,C,64,0),x2(I,e,t,r),e1(I,s0=s+160|0),d1(s0),c[s+288|0]=248&i[s+288|0],c[s+319|0]=63&i[s+319|0]|64,e=i[23+(C=_=s+288|0)|0],cA=w(h=i[C+21|0]|i[C+22|0]<<8|e<<16&2031616,0,n=(i[s0+28|0]|i[s0+29|0]<<8|i[s0+30|0]<<16|i[s0+31|0]<<24)>>>7|0,0),rA=y,e=(C=i[s0+27|0])>>>24|0,r=C<<8|(MA=i[s0+23|0]|i[s0+24|0]<<8|i[s0+25|0]<<16|i[s0+26|0]<<24)>>>24,C=w(B=2097151&((3&(w0=(C=(t=i[s0+28|0])>>>16|0)|e))<<30|(e=(t<<=16)|r)>>>2),0,Q=(I=i[_+23|0]|i[_+24|0]<<8|i[_+25|0]<<16|i[_+26|0]<<24)>>>5&2097151,0),e=y+rA|0,t=C>>>0>(r=C+cA|0)>>>0?e+1|0:e,C=w(p=(e=i[s0+23|0])<<16&2031616|i[s0+21|0]|i[s0+22|0]<<8,0,l=(i[_+28|0]|i[_+29|0]<<8|i[_+30|0]<<16|i[_+31|0]<<24)>>>7|0,0),t=y+t|0,rA=e=C+r|0,r=C>>>0>e>>>0?t+1|0:t,t=(C=i[_+27|0])>>>24|0,I=C<<8|I>>>24,C=w(v=2097151&((3&(t|=e=(C=i[_+28|0])>>>16|0))<<30|(e=(C<<=16)|I)>>>2),0,D=MA>>>5&2097151,0),e=y+r|0,O=t=C+rA|0,r=C>>>0>t>>>0?e+1|0:e,MA=w(Q,0,D,0),rA=y,e=(C=i[_+19|0])>>>24|0,I=C<<8|(T0=i[_+15|0]|i[_+16|0]<<8|i[_+17|0]<<16|i[_+18|0]<<24)>>>24,t=e,e=w(b=(7&(t|=e=(C=i[_+20|0])>>>16|0))<<29|(e=(C<<=16)|I)>>>3,w0=t>>>3|0,n,0),C=y+rA|0,C=e>>>0>(t=e+MA|0)>>>0?C+1|0:C,I=(e=w(h,0,B,0))+t|0,t=y+C|0,e=e>>>0>(MA=I)>>>0?t+1|0:t,t=(C=i[s0+19|0])>>>24|0,rA=C<<8|(N0=i[s0+15|0]|i[s0+16|0]<<8|i[s0+17|0]<<16|i[s0+18|0]<<24)>>>24,C=w(M=(7&(cA=(C=(I=i[s0+20|0])>>>16|0)|t))<<29|(t=(I<<=16)|rA)>>>3,x=cA>>>3|0,l,0),e=y+e|0,e=C>>>0>(t=C+MA|0)>>>0?e+1|0:e,C=w(p,0,v,0),e=y+e|0,E0=e=C>>>0>(p0=C+t|0)>>>0?e+1|0:e,u0=C=e-((p0>>>0<4293918720)-1|0)|0,t=(e=C>>>21|0)+r|0,MA=t=(C=(2097151&C)<<11|(cA=p0- -1048576|0)>>>21)>>>0>(O=C+O|0)>>>0?t+1|0:t,F0=C=t-((O>>>0<4293918720)-1|0)|0,XA=(2097151&C)<<11|(rA=O- -1048576|0)>>>21,I=C>>>21|0,C=w(l,0,D,0),e=y,t=C,C=w(n,0,Q,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,k0=(C=t)+(t=w(B,0,v,0))|0,C=y+e|0,C=t>>>0>k0>>>0?C+1|0:C,A0=k0-(e=-2097152&(t=k0- -1048576|0))|0,e=(C-((131071&(r=C-((k0>>>0<4293918720)-1|0)|0))+(e>>>0>k0>>>0)|0)|0)+I|0,hA=e=(C=XA+A0|0)>>>0>>0?e+1|0:e,mA=C,A0=w(C,e,470296,0),XA=y,e=w(n,0,v,0),C=y,I=e,e=w(B,0,l,0),C=y+C|0,e=e>>>0>(I=I+e|0)>>>0?C+1|0:C,C=r>>>21|0,r=(2097151&r)<<11|t>>>21,t=C+e|0,C2=r=(t=r>>>0>(I=r+I|0)>>>0?t+1|0:t)-((I>>>0<4293918720)-1|0)|0,C=I-(e=-2097152&(W0=I- -1048576|0))|0,HA=I=t-((131071&r)+(e>>>0>I>>>0)|0)|0,aA=e=O-(t=-2097152&rA)|0,EA=r=MA-((t>>>0>O>>>0)+F0|0)|0,YA=C,t=w(C,I,666643,0),C=y+XA|0,C=t>>>0>(I=t+A0|0)>>>0?C+1|0:C,t=w(e,r,654183,0),e=y+C|0,f0=r=t+I|0,rA=t>>>0>r>>>0?e+1|0:e,k0=p0-(C=-2097152&cA)|0,u0=E0-((C>>>0>p0>>>0)+u0|0)|0,e=w(B,0,b,w0),t=y,r=(C=e)+(e=w(q=T0>>>6&2097151,0,n,0))|0,C=y+t|0,C=e>>>0>r>>>0?C+1|0:C,e=w(Q,0,p,0),t=y+C|0,t=e>>>0>(r=e+r|0)>>>0?t+1|0:t,C=w(h,0,D,0),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,t=w(l,0,V=N0>>>6&2097151,0),C=y+e|0,C=t>>>0>(r=t+r|0)>>>0?C+1|0:C,t=w(v,0,M,x),e=y+C|0,p0=r=t+r|0,I=t>>>0>r>>>0?e+1|0:e,e=(C=i[_+14|0])>>>24|0,r=C<<8|(E0=i[_+10|0]|i[_+11|0]<<8|i[_+12|0]<<16|i[_+13|0]<<24)>>>24,e=w($=2097151&((1&(e|=C=(t=i[_+15|0])>>>16|0))<<31|(C=(t<<=16)|r)>>>1),0,n,0),C=y,t=e,e=w(B,0,q,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=w(D,0,b,w0))+t|0,t=y+C|0,t=e>>>0>r>>>0?t+1|0:t,C=w(Q,0,M,x),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,C=w(h,0,p,0),e=y+e|0,cA=t=C+r|0,r=C>>>0>t>>>0?e+1|0:e,e=(C=i[s0+14|0])>>>24|0,MA=C<<8|(O=i[s0+10|0]|i[s0+11|0]<<8|i[s0+12|0]<<16|i[s0+13|0]<<24)>>>24,t=e,e=(C=i[s0+15|0])>>>16|0,e=w(K=2097151&((1&(e|=t))<<31|(C=C<<16|MA)>>>1),0,l,0),C=y+r|0,C=e>>>0>(t=e+cA|0)>>>0?C+1|0:C,e=w(v,0,V,0),C=y+C|0,MA=C=e>>>0>(cA=e+t|0)>>>0?C+1|0:C,e2=e=C-((cA>>>0<4293918720)-1|0)|0,t=(C=e>>>21|0)+I|0,XA=t=(e=(2097151&e)<<11|(A0=cA- -1048576|0)>>>21)>>>0>(F0=e+p0|0)>>>0?t+1|0:t,j0=e=t-((F0>>>0<4293918720)-1|0)|0,C=(C=e>>>21|0)+u0|0,qA=C=(e=(t=(2097151&e)<<11|(p0=F0- -1048576|0)>>>21)+k0|0)>>>0>>0?C+1|0:C,$A=e,C=w(e,C,-997805,-1),e=y+rA|0,f0=t=C+f0|0,rA=C>>>0>t>>>0?e+1|0:e,k0=(s2=i[23+(a=s+224|0)|0]|i[a+24|0]<<8|i[a+25|0]<<16|i[a+26|0]<<24)>>>5&2097151,t=w(J=(C=i[_+2|0])<<16&2031616|i[0|_]|i[_+1|0]<<8,0,D,0),e=y,r=(C=w(p,0,z=(I=i[_+2|0]|i[_+3|0]<<8|i[_+4|0]<<16|i[_+5|0]<<24)>>>5&2097151,0))+t|0,t=y+e|0,t=C>>>0>r>>>0?t+1|0:t,C=w(_A=(i[_+7|0]|i[_+8|0]<<8|i[_+9|0]<<16|i[_+10|0]<<24)>>>7&2097151,0,V,0),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,t=w(K,0,sA=E0>>>4&2097151,0),C=y+e|0,E0=r=t+r|0,r=t>>>0>r>>>0?C+1|0:C,I=(e=i[_+6|0])<<8|I>>>24,t=C=e>>>24|0,e=(C=i[_+7|0])>>>16|0,e=w(nA=2097151&((3&(e|=t))<<30|(C=C<<16|I)>>>2),0,M,x),C=y+r|0,C=e>>>0>(t=e+E0|0)>>>0?C+1|0:C,r=(e=w(q,0,fA=(i[s0+7|0]|i[s0+8|0]<<8|i[s0+9|0]<<16|i[s0+10|0]<<24)>>>7&2097151,0))+t|0,t=y+C|0,t=e>>>0>r>>>0?t+1|0:t,e=w($,0,V0=O>>>4&2097151,0),C=y+t|0,I=e>>>0>(r=e+r|0)>>>0?C+1|0:C,C=(e=i[s0+6|0])>>>24|0,E0=e<<8|(O=i[s0+2|0]|i[s0+3|0]<<8|i[s0+4|0]<<16|i[s0+5|0]<<24)>>>24,e=C,C=w(b,w0,uA=2097151&((3&(e|=t=(C=i[s0+7|0])>>>16|0))<<30|(C=C<<16|E0)>>>2),0),e=y+I|0,e=C>>>0>(t=C+r|0)>>>0?e+1|0:e,r=t,t=w(vA=(C=i[s0+2|0])<<16&2031616|i[0|s0]|i[s0+1|0]<<8,0,Q,0),C=y+e|0,C=t>>>0>(r=r+t|0)>>>0?C+1|0:C,e=w(h,0,wA=O>>>5&2097151,0),C=y+C|0,C=e>>>0>(t=e+r|0)>>>0?C+1|0:C,e=t,E0=t=t+k0|0,I=e=e>>>0>t>>>0?C+1|0:C,r=i[a+21|0]|i[a+22|0]<<8,C=w(p,0,J,0),e=y,O=(t=C)+(C=w(M,x,z,0))|0,t=y+e|0,t=C>>>0>O>>>0?t+1|0:t,C=w(K,0,_A,0),e=y+t|0,e=C>>>0>(O=C+O|0)>>>0?e+1|0:e,C=w(sA,0,V0,0),e=y+e|0,e=C>>>0>(t=C+O|0)>>>0?e+1|0:e,O=(C=t)+(t=w(V,0,nA,0))|0,C=y+e|0,C=t>>>0>O>>>0?C+1|0:C,e=w(q,0,uA,0),C=y+C|0,C=e>>>0>(t=e+O|0)>>>0?C+1|0:C,O=(e=w($,0,fA,0))+t|0,t=y+C|0,t=e>>>0>O>>>0?t+1|0:t,C=w(b,w0,wA,0),e=y+t|0,e=C>>>0>(O=C+O|0)>>>0?e+1|0:e,C=w(h,0,vA,0),e=y+e|0,C=C>>>0>(t=C+O|0)>>>0?e+1|0:e,e=(e=t)>>>0>(t=t+r|0)>>>0?C+1|0:C,r=t,t=(C=i[a+23|0])<<16&2031616,C=e,t=C=t>>>0>(r=r+t|0)>>>0?C+1|0:C,s0=C=C-((r>>>0<4293918720)-1|0)|0,e=(e=C>>>21|0)+I|0,C=(e=(I=E0=(C=(2097151&C)<<11|(O=r- -1048576|0)>>>21)+E0|0)>>>0>>0?e+1|0:e)+rA|0,C=(rA=I+f0|0)>>>0>>0?C+1|0:C,N0=I- -1048576|0,x0=I=e-((I>>>0<4293918720)-1|0)|0,L0=rA-(e=-2097152&N0)|0,r2=C-((e>>>0>rA>>>0)+I|0)|0,E0=r,rA=t,C=w(aA,EA,470296,0),e=y,t=C,C=w(mA,hA,666643,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,r=(C=t)+(t=w($A,qA,654183,0))|0,C=y+e|0,T0=r,I=t>>>0>r>>>0?C+1|0:C,e=w(M,x,J,0),C=y,t=e,e=w(V,0,z,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=t)+(t=w(_A,0,V0,0))|0,e=y+C|0,e=t>>>0>r>>>0?e+1|0:e,C=w(sA,0,fA,0),t=y+e|0,t=C>>>0>(r=C+r|0)>>>0?t+1|0:t,C=w(K,0,nA,0),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,t=w(q,0,wA,0),C=y+e|0,C=t>>>0>(r=t+r|0)>>>0?C+1|0:C,e=w($,0,uA,0),C=y+C|0,C=e>>>0>(t=e+r|0)>>>0?C+1|0:C,r=(e=t)+(t=w(b,w0,vA,0))|0,e=y+C|0,k0=r,t=t>>>0>r>>>0?e+1|0:e,e=(C=i[a+19|0])>>>24|0,u0=C<<8|(f0=i[a+15|0]|i[a+16|0]<<8|i[a+17|0]<<16|i[a+18|0]<<24)>>>24,t=((i2=(C=(r=i[a+20|0])>>>16|0)|e)>>>3|0)+t|0,k0=r=(e=(7&i2)<<29|(e=(r<<=16)|u0)>>>3)+k0|0,r=e>>>0>r>>>0?t+1|0:t,u0=f0>>>6&2097151,C=w(V,0,J,0),e=y,t=C,C=w(K,0,z,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,f0=(C=t)+(t=w(_A,0,fA,0))|0,C=y+e|0,C=t>>>0>f0>>>0?C+1|0:C,t=w(sA,0,uA,0),e=y+C|0,e=t>>>0>(f0=t+f0|0)>>>0?e+1|0:e,t=w(nA,0,V0,0),C=y+e|0,C=t>>>0>(f0=t+f0|0)>>>0?C+1|0:C,e=w(q,0,vA,0),t=y+C|0,t=e>>>0>(f0=e+f0|0)>>>0?t+1|0:t,C=w($,0,wA,0),e=y+t|0,C=C>>>0>(f0=C+f0|0)>>>0?e+1|0:e,C1=C=(d2=f0+u0|0)>>>0>>0?C+1|0:C,Te=C=C-((d2>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(W2=d2- -1048576|0)>>>21,C=(C>>>21|0)+r|0,I1=C=t>>>0>(c1=t+k0|0)>>>0?C+1|0:C,je=C=C-((c1>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(Y2=c1- -1048576|0)>>>21,C=(C>>>21|0)+I|0,e=(t>>>0>(r=t+T0|0)>>>0?C+1|0:C)+rA|0,rA=(t=r+E0|0)-(C=-2097152&O)|0,s0=C=(e=t>>>0>>0?e+1|0:e)-((C>>>0>t>>>0)+s0|0)|0,Oe=C=C-((rA>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(R2=rA- -1048576|0)>>>21,C=(C>>21)+r2|0,r=C=t>>>0>(I=t+L0|0)>>>0?C+1|0:C,K1=C=C-((I>>>0<4293918720)-1|0)|0,U2=(2097151&C)<<11|(T0=I- -1048576|0)>>>21,E0=C>>21,i2=F0-(C=-2097152&p0)|0,j0=XA-((C>>>0>F0>>>0)+j0|0)|0,C=w(n,0,l,0),V2=e=y,L0=C,f0=C- -1048576|0,m2=e=e-((C>>>0<4293918720)-1|0)|0,g0=C=e>>>21|0,C=w(iA=(2097151&e)<<11|f0>>>21,C,-683901,-1),e=y+MA|0,e=C>>>0>(t=C+cA|0)>>>0?e+1|0:e,p0=t-(C=-2097152&A0)|0,O=e-((C>>>0>t>>>0)+e2|0)|0,e=w(D,0,q,0),C=y,t=e,e=w(n,0,sA,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,e=w(B,0,$,0),C=y+C|0,C=e>>>0>(t=e+t|0)>>>0?C+1|0:C,MA=(e=t)+(t=w(p,0,b,w0))|0,e=y+C|0,e=t>>>0>MA>>>0?e+1|0:e,C=w(Q,0,V,0),t=y+e|0,t=C>>>0>(MA=C+MA|0)>>>0?t+1|0:t,C=w(h,0,M,x),e=y+t|0,e=C>>>0>(MA=C+MA|0)>>>0?e+1|0:e,t=w(l,0,V0,0),C=y+e|0,C=t>>>0>(MA=t+MA|0)>>>0?C+1|0:C,e=w(v,0,K,0),C=y+C|0,cA=t=e+MA|0,MA=e>>>0>t>>>0?C+1|0:C,C=w(B,0,sA,0),e=y,t=C,C=w(n,0,_A,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,XA=(C=w(p,0,q,0))+t|0,t=y+e|0,t=C>>>0>XA>>>0?t+1|0:t,C=w(D,0,$,0),e=y+t|0,e=C>>>0>(XA=C+XA|0)>>>0?e+1|0:e,t=w(b,w0,M,x),C=y+e|0,C=t>>>0>(XA=t+XA|0)>>>0?C+1|0:C,e=w(Q,0,K,0),C=y+C|0,C=e>>>0>(t=e+XA|0)>>>0?C+1|0:C,XA=(e=t)+(t=w(h,0,V,0))|0,e=y+C|0,e=t>>>0>XA>>>0?e+1|0:e,C=w(l,0,fA,0),t=y+e|0,t=C>>>0>(XA=C+XA|0)>>>0?t+1|0:t,C=w(v,0,V0,0),e=y+t|0,u0=e=C>>>0>(k0=C+XA|0)>>>0?e+1|0:e,h1=C=e-((k0>>>0<4293918720)-1|0)|0,e=(2097151&C)<<11|(F0=k0- -1048576|0)>>>21,C=(C>>>21|0)+MA|0,A0=C=e>>>0>(e2=e+cA|0)>>>0?C+1|0:C,k2=C=C-((e2>>>0<4293918720)-1|0)|0,e=(t=C>>>21|0)+O|0,p0=e=(C=(2097151&C)<<11|(XA=e2- -1048576|0)>>>21)>>>0>(r2=C+p0|0)>>>0?e+1|0:e,s1=C=e-((r2>>>0<4293918720)-1|0)|0,MA=(2097151&C)<<11|(O=r2- -1048576|0)>>>21,C=(C>>21)+j0|0,i0=C=(e=MA+i2|0)>>>0>>0?C+1|0:C,u=e,C=w(e,C,-683901,-1),e=y+E0|0,U2=t=C+U2|0,E0=C>>>0>t>>>0?e+1|0:e,C=w(B,0,J,0),e=y,t=C,C=w(D,0,z,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,MA=(C=t)+(t=w(M,x,_A,0))|0,C=y+e|0,C=t>>>0>MA>>>0?C+1|0:C,e=w(V,0,sA,0),t=y+C|0,t=e>>>0>(MA=e+MA|0)>>>0?t+1|0:t,e=w(p,0,nA,0),C=y+t|0,C=e>>>0>(MA=e+MA|0)>>>0?C+1|0:C,t=w(q,0,V0,0),e=y+C|0,e=t>>>0>(MA=t+MA|0)>>>0?e+1|0:e,C=w($,0,K,0),e=y+e|0,e=C>>>0>(t=C+MA|0)>>>0?e+1|0:e,MA=(C=t)+(t=w(b,w0,fA,0))|0,C=y+e|0,C=t>>>0>MA>>>0?C+1|0:C,e=w(Q,0,wA,0),t=y+C|0,t=e>>>0>(MA=e+MA|0)>>>0?t+1|0:t,e=w(h,0,uA,0),C=y+t|0,C=e>>>0>(MA=e+MA|0)>>>0?C+1|0:C,t=w(v,0,vA,0),e=y+C|0,j0=MA=t+MA|0,t=t>>>0>MA>>>0?e+1|0:e,e=(C=i[a+27|0])>>>24|0,cA=C<<8|s2>>>24,MA=2097151&((3&(e|=C=(MA=i[a+28|0])>>>16|0))<<30|(C=(MA<<=16)|cA)>>>2),e=t,cA=C=MA+j0|0,MA=C>>>0>>0?e+1|0:e,i2=w(YA,HA,470296,0),j0=y,C=(t=(2097151&C2)<<11|W0>>>21)+(L0-(e=-2097152&f0)|0)|0,e=V2-((524287&m2)+(e>>>0>L0>>>0)|0)+(C2>>>21)|0,d=e=C>>>0>>0?e+1|0:e,H=C,e=w(C,e,666643,0),C=y+j0|0,C=e>>>0>(t=e+i2|0)>>>0?C+1|0:C,f0=(e=w(mA,hA,654183,0))+t|0,t=y+C|0,t=e>>>0>f0>>>0?t+1|0:t,e=w(aA,EA,-997805,-1),C=y+t|0,C=e>>>0>(f0=e+f0|0)>>>0?C+1|0:C,t=w($A,qA,136657,0),e=y+C|0,N0=(C=(2097151&x0)<<11|N0>>>21)+(f0=t+f0|0)|0,e=(x0>>>21|0)+(t>>>0>f0>>>0?e+1|0:e)|0,m2=f0=MA-((cA>>>0<4293918720)-1|0)|0,C=(C>>>0>N0>>>0?e+1|0:e)+MA|0,e=(MA=cA+N0|0)-(t=-2097152&(V2=cA- -1048576|0))|0,t=(C=(C=MA>>>0>>0?C+1|0:C)-((t>>>0>MA>>>0)+f0|0)|0)+E0|0,i2=MA=C-((e>>>0<4293918720)-1|0)|0,L0=(t=(cA=e+U2|0)>>>0>>0?t+1|0:t)-(((e=-2097152&(j0=e- -1048576|0))>>>0>cA>>>0)+MA|0)|0,s2=C=cA-e|0,MA=I,I=r,Q1=r2-(C=-2097152&O)|0,f0=p0-((C>>>0>r2>>>0)+s1|0)|0,C=w(H,d,-683901,-1),e=y,r=(t=C)+(C=w(iA,g0,136657,0))|0,t=y+e|0,e=A0+(C>>>0>r>>>0?t+1|0:t)|0,XA=(t=r+e2|0)-(C=-2097152&XA)|0,p0=(e=t>>>0>>0?e+1|0:e)-((C>>>0>t>>>0)+k2|0)|0,e=w(iA,g0,-997805,-1),C=y+u0|0,C=e>>>0>(t=e+k0|0)>>>0?C+1|0:C,r=(e=w(H,d,136657,0))+t|0,t=y+C|0,t=e>>>0>r>>>0?t+1|0:t,C=w(YA,HA,-683901,-1),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,O=r-(C=-2097152&F0)|0,E0=e-((C>>>0>r>>>0)+h1|0)|0,e=w(D,0,sA,0),C=y,t=e,e=w(B,0,_A,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=w(n,0,nA,0))+t|0,t=y+C|0,t=e>>>0>r>>>0?t+1|0:t,C=w(M,x,q,0),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,t=w(p,0,$,0),C=y+e|0,C=t>>>0>(r=t+r|0)>>>0?C+1|0:C,t=w(b,w0,V,0),e=y+C|0,e=t>>>0>(r=t+r|0)>>>0?e+1|0:e,t=w(Q,0,V0,0),C=y+e|0,C=t>>>0>(r=t+r|0)>>>0?C+1|0:C,e=w(h,0,K,0),t=y+C|0,t=e>>>0>(r=e+r|0)>>>0?t+1|0:t,C=w(l,0,uA,0),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,t=w(v,0,fA,0),C=y+e|0,cA=r=t+r|0,r=t>>>0>r>>>0?C+1|0:C,C=w(D,0,_A,0),e=y,t=C,C=w(n,0,z,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,A0=(C=t)+(t=w(p,0,sA,0))|0,C=y+e|0,C=t>>>0>A0>>>0?C+1|0:C,e=w(B,0,nA,0),t=y+C|0,t=e>>>0>(A0=e+A0|0)>>>0?t+1|0:t,C=w(q,0,V,0),e=y+t|0,e=C>>>0>(A0=C+A0|0)>>>0?e+1|0:e,t=w(M,x,$,0),C=y+e|0,C=t>>>0>(A0=t+A0|0)>>>0?C+1|0:C,t=w(b,w0,K,0),e=y+C|0,e=t>>>0>(A0=t+A0|0)>>>0?e+1|0:e,t=w(Q,0,fA,0),C=y+e|0,C=t>>>0>(A0=t+A0|0)>>>0?C+1|0:C,e=w(h,0,V0,0),t=y+C|0,t=e>>>0>(A0=e+A0|0)>>>0?t+1|0:t,A0=(C=w(l,0,wA,0))+A0|0,e=y+t|0,t=w(v,0,uA,0),C=y+(C>>>0>A0>>>0?e+1|0:e)|0,r2=C=t>>>0>(s1=t+A0|0)>>>0?C+1|0:C,VA=C=C-((s1>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(C2=s1- -1048576|0)>>>21,C=(C>>>21|0)+r|0,W0=C=t>>>0>(U2=t+cA|0)>>>0?C+1|0:C,c0=C=C-((U2>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(x0=U2- -1048576|0)>>>21,C=(C>>>21|0)+E0|0,N0=C=t>>>0>(e2=t+O|0)>>>0?C+1|0:C,_0=C=C-((e2>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(u0=e2- -1048576|0)>>>21,C=(C>>21)+p0|0,r=C=t>>>0>(O=t+XA|0)>>>0?C+1|0:C,p0=C=C-((O>>>0<4293918720)-1|0)|0,E0=(2097151&C)<<11|(t=O- -1048576|0)>>>21,C=(C>>21)+f0|0,h1=C=(cA=E0+Q1|0)>>>0>>0?C+1|0:C,k2=cA,C=w(cA,C,-683901,-1),e=y,cA=C,C=w(u,i0,136657,0),e=y+e|0,C=(C>>>0>(cA=cA+C|0)>>>0?e+1|0:e)+I|0,Xe=(I=MA+cA|0)-(e=-2097152&T0)|0,Ve=(C=I>>>0>>0?C+1|0:C)-((e>>>0>I>>>0)+K1|0)|0,E0=rA,cA=s0,rA=w(k2,h1,136657,0),I=y,Q1=C=O-(e=-2097152&t)|0,FA=r=r-((e>>>0>O>>>0)+p0|0)|0,t=w(u,i0,-997805,-1),e=y+I|0,e=t>>>0>(rA=t+rA|0)>>>0?e+1|0:e,t=w(C,r,-683901,-1),C=y+e|0,K1=r=t+rA|0,MA=t>>>0>r>>>0?C+1|0:C,C=w($A,qA,470296,0),e=y,r=(t=C)+(C=w(aA,EA,666643,0))|0,t=y+e|0,e=I1+(C>>>0>r>>>0?t+1|0:t)|0,T0=C=r+c1|0,I=e=C>>>0>>0?e+1|0:e,e=w($A,qA,666643,0),C=y+C1|0,C=e>>>0>(t=e+d2|0)>>>0?C+1|0:C,XA=t-(e=-2097152&W2)|0,k0=C-((e>>>0>t>>>0)+Te|0)|0,e=w(K,0,J,0),C=y,t=e,e=w(z,0,V0,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=t)+(t=w(_A,0,uA,0))|0,e=y+C|0,e=t>>>0>r>>>0?e+1|0:e,t=w(sA,0,wA,0),C=y+e|0,C=t>>>0>(r=t+r|0)>>>0?C+1|0:C,e=w(nA,0,fA,0),t=y+C|0,t=e>>>0>(r=e+r|0)>>>0?t+1|0:t,C=w($,0,vA,0),e=y+t|0,O=r=C+r|0,r=C>>>0>r>>>0?e+1|0:e,e=(C=i[a+14|0])>>>24|0,rA=C<<8|(p0=i[a+10|0]|i[a+11|0]<<8|i[a+12|0]<<16|i[a+13|0]<<24)>>>24,e=2097151&((1&(e|=t=(C=i[a+15|0])>>>16|0))<<31|(C=rA|C<<16)>>>1),C=r,O=t=e+O|0,r=e>>>0>t>>>0?C+1|0:C,rA=p0>>>4&2097151,C=w(J,0,V0,0),e=y,t=C,C=w(z,0,fA,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,C=w(_A,0,wA,0),e=y+e|0,e=C>>>0>(t=C+t|0)>>>0?e+1|0:e,p0=(C=t)+(t=w(sA,0,vA,0))|0,C=y+e|0,C=t>>>0>p0>>>0?C+1|0:C,e=w(nA,0,uA,0),t=y+C|0,C=e>>>0>(p0=e+p0|0)>>>0?t+1|0:t,s0=C=(W2=rA+p0|0)>>>0>>0?C+1|0:C,I0=C=C-((W2>>>0<4293918720)-1|0)|0,e=(t=C>>>21|0)+r|0,F0=e=(C=(2097151&C)<<11|(f0=W2- -1048576|0)>>>21)>>>0>(I1=C+O|0)>>>0?e+1|0:e,h0=C=e-((I1>>>0<4293918720)-1|0)|0,e=(2097151&C)<<11|(A0=I1- -1048576|0)>>>21,C=(C>>>21|0)+k0|0,p0=C=e>>>0>(XA=e+XA|0)>>>0?C+1|0:C,D0=C=C-((XA>>>0<4293918720)-1|0)|0,e=(t=C>>21)+I|0,Te=e=(e=(C=(2097151&C)<<11|(O=XA- -1048576|0)>>>21)>>>0>(r=C+T0|0)>>>0?e+1|0:e)-(((t=-2097152&Y2)>>>0>r>>>0)+je|0)|0,Y2=C=r-t|0,rA=C- -1048576|0,je=C=e-((C>>>0<4293918720)-1|0)|0,t=(e=C>>21)+MA|0,e=((C=(2097151&C)<<11|rA>>>21)>>>0>(r=C+K1|0)>>>0?t+1|0:t)+cA|0,d2=e=(e=(C=r)>>>0>(r=r+E0|0)>>>0?e+1|0:e)-(((t=-2097152&R2)>>>0>r>>>0)+Oe|0)|0,cA=C=r-t|0,I=C- -1048576|0,C1=C=e-((C>>>0<4293918720)-1|0)|0,t=(e=C>>21)+Ve|0,R2=C=(t=(C=(2097151&C)<<11|I>>>21)>>>0>(MA=C+Xe|0)>>>0?t+1|0:t)-((MA>>>0<4293918720)-1|0)|0,T0=s2- -1048576|0,k0=L0-((s2>>>0<4293918720)-1|0)|0,E0=(2097151&C)<<11|(r=MA- -1048576|0)>>>21,C=(C>>21)+L0|0,Oe=(s2=E0+s2|0)-(e=-2097152&T0)|0,Xe=(E0>>>0>s2>>>0?C+1|0:C)-((e>>>0>s2>>>0)+k0|0)|0,Ve=MA-(C=-2097152&r)|0,K1=t-((C>>>0>MA>>>0)+R2|0)|0,c1=cA-(C=-2097152&I)|0,s2=d2-((C>>>0>cA>>>0)+C1|0)|0,C=w(k2,h1,-997805,-1),e=y,t=C,C=w(u,i0,654183,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,r=(C=t)+(t=w(Q1,FA,136657,0))|0,C=y+e|0,e=Te+(t>>>0>r>>>0?C+1|0:C)|0,d2=(t=r+Y2|0)-(C=-2097152&rA)|0,C1=(e=t>>>0>>0?e+1|0:e)-((C>>>0>t>>>0)+je|0)|0,Y2=e2-(C=-2097152&u0)|0,L0=N0-((C>>>0>e2>>>0)+_0|0)|0,e=w(H,d,-997805,-1),C=y,t=e,e=w(iA,g0,654183,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=t)+(t=w(YA,HA,136657,0))|0,e=y+C|0,e=t>>>0>r>>>0?e+1|0:e,C=w(mA,hA,-683901,-1),t=y+e|0,e=W0+(C>>>0>(r=C+r|0)>>>0?t+1|0:t)|0,u0=(t=r+U2|0)-(C=-2097152&x0)|0,N0=(e=t>>>0>>0?e+1|0:e)-((C>>>0>t>>>0)+c0|0)|0,e=w(H,d,654183,0),C=y,t=e,e=w(iA,g0,470296,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=w(YA,HA,-997805,-1))+t|0,t=y+C|0,e=r2+(e>>>0>r>>>0?t+1|0:t)|0,e=(C=r+s1|0)>>>0>>0?e+1|0:e,t=C,C=w(mA,hA,136657,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,r=(C=t)+(t=w(aA,EA,-683901,-1))|0,C=y+e|0,rA=r-(e=-2097152&C2)|0,I=(t>>>0>r>>>0?C+1|0:C)-((e>>>0>r>>>0)+VA|0)|0,r=(i[a+28|0]|i[a+29|0]<<8|i[a+30|0]<<16|i[a+31|0]<<24)>>>7|0,C=w(n,0,J,0),e=y,MA=(t=C)+(C=w(B,0,z,0))|0,t=y+e|0,t=C>>>0>MA>>>0?t+1|0:t,C=w(p,0,_A,0),e=y+t|0,e=C>>>0>(MA=C+MA|0)>>>0?e+1|0:e,t=w(M,x,sA,0),C=y+e|0,C=t>>>0>(MA=t+MA|0)>>>0?C+1|0:C,t=w(D,0,nA,0),e=y+C|0,e=t>>>0>(MA=t+MA|0)>>>0?e+1|0:e,t=w(q,0,K,0),C=y+e|0,C=t>>>0>(MA=t+MA|0)>>>0?C+1|0:C,e=w(V,0,$,0),t=y+C|0,t=e>>>0>(MA=e+MA|0)>>>0?t+1|0:t,C=w(b,w0,V0,0),e=y+t|0,e=C>>>0>(MA=C+MA|0)>>>0?e+1|0:e,t=w(Q,0,uA,0),C=y+e|0,C=t>>>0>(MA=t+MA|0)>>>0?C+1|0:C,t=w(h,0,fA,0),e=y+C|0,e=t>>>0>(MA=t+MA|0)>>>0?e+1|0:e,t=w(l,0,vA,0),C=y+e|0,C=t>>>0>(MA=t+MA|0)>>>0?C+1|0:C,e=w(v,0,wA,0),t=y+C|0,e=t=e>>>0>(MA=e+MA|0)>>>0?t+1|0:t,W0=(t=(2097151&m2)<<11|V2>>>21)+(C=r+MA|0)|0,C=(m2>>>21|0)+(e=C>>>0>>0?e+1|0:e)|0,E0=C=t>>>0>W0>>>0?C+1|0:C,R2=e=C-((W0>>>0<4293918720)-1|0)|0,t=(C=e>>>21|0)+I|0,cA=t=(e=(2097151&e)<<11|(w0=W0- -1048576|0)>>>21)>>>0>(x0=e+rA|0)>>>0?t+1|0:t,V2=e=t-((x0>>>0<4293918720)-1|0)|0,C=(C=e>>21)+N0|0,rA=C=(e=(2097151&e)<<11|(MA=x0- -1048576|0)>>>21)>>>0>(u0=e+u0|0)>>>0?C+1|0:C,C2=e=C-((u0>>>0<4293918720)-1|0)|0,t=(C=e>>21)+L0|0,m2=t=(e=(r=(2097151&e)<<11|(I=u0- -1048576|0)>>>21)+Y2|0)>>>0>>0?t+1|0:t,L0=e,C=w(e,t,-683901,-1),e=y+C1|0,N0=t=C+d2|0,r=C>>>0>t>>>0?e+1|0:e,e=w(u,i0,470296,0),C=y+p0|0,C=e>>>0>(XA=e+XA|0)>>>0?C+1|0:C,e=w(k2,h1,654183,0),C=y+(C-(((t=-2097152&O)>>>0>XA>>>0)+D0|0)|0)|0,C=e>>>0>(O=e+(XA-t|0)|0)>>>0?C+1|0:C,t=w(Q1,FA,-997805,-1),e=y+C|0,e=t>>>0>(O=t+O|0)>>>0?e+1|0:e,r2=t=u0-(C=-2097152&I)|0,V0=rA=rA-((C>>>0>u0>>>0)+C2|0)|0,O=(I=w(L0,m2,136657,0))+O|0,C=y+e|0,t=w(t,rA,-683901,-1),e=y+(I>>>0>O>>>0?C+1|0:C)|0,rA=e=t>>>0>(p0=t+O|0)>>>0?e+1|0:e,C2=C=e-((p0>>>0<4293918720)-1|0)|0,e=(2097151&C)<<11|(I=p0- -1048576|0)>>>21,C=(C>>21)+r|0,u0=e=(C=e>>>0>(O=e+N0|0)>>>0?C+1|0:C)-((O>>>0<4293918720)-1|0)|0,XA=(2097151&e)<<11|(r=O- -1048576|0)>>>21,e=(e>>21)+s2|0,c1=N0=XA+c1|0,N0=XA>>>0>N0>>>0?e+1|0:e,s2=O-(e=-2097152&r)|0,s1=C-((e>>>0>O>>>0)+u0|0)|0,d2=p0-(C=-2097152&I)|0,C1=rA-((C>>>0>p0>>>0)+C2|0)|0,C=w(u,i0,666643,0),t=F0+y|0,t=(I=C+I1|0)>>>0>>0?t+1|0:t,r=(C=w(k2,h1,470296,0))+(I-(e=-2097152&A0)|0)|0,e=y+(t-((e>>>0>I>>>0)+h0|0)|0)|0,e=C>>>0>r>>>0?e+1|0:e,t=w(Q1,FA,654183,0),C=y+e|0,O=r=t+r|0,r=t>>>0>r>>>0?C+1|0:C,I=x0-(C=-2097152&MA)|0,rA=cA-((C>>>0>x0>>>0)+V2|0)|0,C=w(H,d,470296,0),e=y,t=C,C=w(iA,g0,666643,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,C=w(YA,HA,654183,0),e=y+e|0,e=C>>>0>(t=C+t|0)>>>0?e+1|0:e,MA=(C=t)+(t=w(mA,hA,-997805,-1))|0,C=y+e|0,C=t>>>0>MA>>>0?C+1|0:C,e=w(aA,EA,136657,0),C=y+C|0,C=e>>>0>(t=e+MA|0)>>>0?C+1|0:C,MA=(e=w($A,qA,-683901,-1))+t|0,t=y+C|0,e=E0+(e>>>0>MA>>>0?t+1|0:t)|0,x0=(t=(2097151&i2)<<11|j0>>>21)+((MA=MA+W0|0)-(C=-2097152&w0)|0)|0,C=((e=MA>>>0>>0?e+1|0:e)-((C>>>0>MA>>>0)+R2|0)|0)+(i2>>21)|0,u0=C=t>>>0>x0>>>0?C+1|0:C,Y2=C=C-((x0>>>0<4293918720)-1|0)|0,e=I,I=(2097151&C)<<11|(A0=x0- -1048576|0)>>>21,C=(C>>21)+rA|0,C2=C=(t=e+I|0)>>>0>>0?C+1|0:C,W0=t,C=w(t,C,-683901,-1),e=y+r|0,e=C>>>0>(t=C+O|0)>>>0?e+1|0:e,r=(C=t)+(t=w(L0,m2,-997805,-1))|0,C=y+e|0,C=t>>>0>r>>>0?C+1|0:C,e=w(r2,V0,136657,0),t=y+C|0,j0=r=e+r|0,cA=e>>>0>r>>>0?t+1|0:t,O=W2-(C=-2097152&f0)|0,E0=s0-((C>>>0>W2>>>0)+I0|0)|0,e=w(J,0,fA,0),C=y,t=e,e=w(z,0,uA,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,e=w(_A,0,vA,0),C=y+C|0,C=e>>>0>(t=e+t|0)>>>0?C+1|0:C,r=(e=w(nA,0,wA,0))+t|0,t=y+C|0,e=e>>>0>r>>>0?t+1|0:t,w0=t=(C=(i[a+7|0]|i[a+8|0]<<8|i[a+9|0]<<16|i[a+10|0]<<24)>>>7&2097151)+r|0,MA=C>>>0>t>>>0?e+1|0:e,C=w(J,0,uA,0),e=y,t=C,C=w(z,0,wA,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,r=(C=t)+(t=w(nA,0,vA,0))|0,C=y+e|0,rA=r,r=t>>>0>r>>>0?C+1|0:C,C=(e=i[a+6|0])>>>24|0,I=e<<8|(R2=i[a+2|0]|i[a+3|0]<<8|i[a+4|0]<<16|i[a+5|0]<<24)>>>24,t=C,e=(C=i[a+7|0])>>>16|0,e|=t,t=r,I=t=(C=2097151&((3&e)<<30|(C=C<<16|I)>>>2))>>>0>(rA=C+rA|0)>>>0?t+1|0:t,U2=C=t-((rA>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(F0=rA- -1048576|0)>>>21,C=(C>>>21|0)+MA|0,XA=C=t>>>0>(s0=t+w0|0)>>>0?C+1|0:C,V2=C=C-((s0>>>0<4293918720)-1|0)|0,t=(e=C>>>21|0)+E0|0,t=(C=(2097151&C)<<11|(p0=s0- -1048576|0)>>>21)>>>0>(r=C+O|0)>>>0?t+1|0:t,e=w(k2,h1,666643,0),C=y+t|0,C=e>>>0>(r=e+r|0)>>>0?C+1|0:C,e=w(Q1,FA,470296,0),C=y+C|0,C=e>>>0>(t=e+r|0)>>>0?C+1|0:C,r=(e=t)+(t=w(W0,C2,136657,0))|0,e=y+C|0,e=t>>>0>r>>>0?e+1|0:e,C=w(L0,m2,654183,0),e=y+e|0,e=C>>>0>(t=C+r|0)>>>0?e+1|0:e,O=(C=w(r2,V0,-997805,-1))+t|0,t=y+e|0,E0=t=C>>>0>O>>>0?t+1|0:t,i2=C=t-((O>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(w0=O- -1048576|0)>>>21,C=(C>>21)+cA|0,j0=t=(C=t>>>0>(r=t+j0|0)>>>0?C+1|0:C)-((r>>>0<4293918720)-1|0)|0,MA=(2097151&t)<<11|(cA=r- -1048576|0)>>>21,t=(t>>21)+C1|0,e2=f0=MA+d2|0,f0=MA>>>0>f0>>>0?t+1|0:t,MA=r,e=C,r=(x0-(C=-2097152&A0)|0)+(A0=(2097151&k0)<<11|T0>>>21)|0,C=(u0-((C>>>0>x0>>>0)+Y2|0)|0)+(k0>>21)|0,k0=C=r>>>0>>0?C+1|0:C,d2=C=C-((r>>>0<4293918720)-1|0)|0,x0=t=C>>21,C=w(k2=(2097151&C)<<11|(u0=r- -1048576|0)>>>21,t,-683901,-1),e=y+e|0,e=C>>>0>(t=C+MA|0)>>>0?e+1|0:e,C1=t-(C=-2097152&cA)|0,W2=e-((C>>>0>t>>>0)+j0|0)|0,e=w(k2,x0,136657,0),C=y+E0|0,C=e>>>0>(t=e+O|0)>>>0?C+1|0:C,I1=t-(e=-2097152&w0)|0,i2=C-((e>>>0>t>>>0)+i2|0)|0,e=w(Q1,FA,666643,0),C=y+(XA-(((t=-2097152&p0)>>>0>s0>>>0)+V2|0)|0)|0,C=e>>>0>(MA=e+(s0-t|0)|0)>>>0?C+1|0:C,t=w(W0,C2,-997805,-1),e=y+C|0,e=t>>>0>(MA=t+MA|0)>>>0?e+1|0:e,C=w(L0,m2,470296,0),t=y+e|0,t=C>>>0>(MA=C+MA|0)>>>0?t+1|0:t,e=w(r2,V0,654183,0),C=y+t|0,j0=MA=e+MA|0,E0=e>>>0>MA>>>0?C+1|0:C,t=R2>>>5&2097151,C=w(J,0,wA,0),e=y,cA=C,C=w(z,0,vA,0),e=y+e|0,C=C>>>0>(MA=cA+C|0)>>>0?e+1|0:e,cA=e=t+MA|0,t=C=e>>>0>>0?C+1|0:C,s0=(e=w(J,0,vA,0))+(C=(C=i[a+2|0])<<16&2031616|i[0|a]|i[a+1|0]<<8)|0,e=y,A0=e=C>>>0>s0>>>0?e+1|0:e,Y2=e=e-((s0>>>0<4293918720)-1|0)|0,C=(C=e>>>21|0)+t|0,p0=C=(e=(2097151&e)<<11|(XA=s0- -1048576|0)>>>21)>>>0>(T0=e+cA|0)>>>0?C+1|0:C,R2=e=C-((T0>>>0<4293918720)-1|0)|0,t=(2097151&e)<<11|(O=T0- -1048576|0)>>>21,e=(e>>>21|0)+I|0,e=t>>>0>(MA=t+rA|0)>>>0?e+1|0:e,t=w(W0,C2,654183,0),C=y+(e-(((I=-2097152&F0)>>>0>MA>>>0)+U2|0)|0)|0,C=t>>>0>(rA=t+(MA-I|0)|0)>>>0?C+1|0:C,e=w(L0,m2,666643,0),C=y+C|0,C=e>>>0>(t=e+rA|0)>>>0?C+1|0:C,w0=(e=t)+(t=w(r2,V0,470296,0))|0,e=y+C|0,cA=e=t>>>0>w0>>>0?e+1|0:e,V2=e=e-((w0>>>0<4293918720)-1|0)|0,t=(C=e>>21)+E0|0,F0=e=(t=(e=(2097151&e)<<11|(MA=w0- -1048576|0)>>>21)>>>0>(rA=e+j0|0)>>>0?t+1|0:t)-((rA>>>0<4293918720)-1|0)|0,E0=(2097151&e)<<11|(I=rA- -1048576|0)>>>21,e=(e>>21)+i2|0,m2=L0=E0+I1|0,E0=E0>>>0>L0>>>0?e+1|0:e,C=w(k2,x0,-997805,-1),e=y+t|0,e=C>>>0>(rA=C+rA|0)>>>0?e+1|0:e,i2=rA-(C=-2097152&I)|0,j0=e-((C>>>0>rA>>>0)+F0|0)|0,e=w(k2,x0,654183,0),C=y+cA|0,C=e>>>0>(t=e+w0|0)>>>0?C+1|0:C,L0=t-(e=-2097152&MA)|0,F0=C-((e>>>0>t>>>0)+V2|0)|0,C=w(W0,C2,470296,0),t=y+(p0-(((e=-2097152&O)>>>0>T0>>>0)+R2|0)|0)|0,t=C>>>0>(I=C+(T0-e|0)|0)>>>0?t+1|0:t,e=w(r2,V0,666643,0),C=y+t|0,rA=I=e+I|0,t=e>>>0>I>>>0?C+1|0:C,e=w(W0,C2,666643,0),C=y+(A0-((4095&Y2)+((I=-2097152&XA)>>>0>s0>>>0)|0)|0)|0,w0=C=e>>>0>(O=e+(s0-I|0)|0)>>>0?C+1|0:C,A0=C=C-((O>>>0<4293918720)-1|0)|0,I=(2097151&C)<<11|(cA=O- -1048576|0)>>>21,C=(C>>21)+t|0,t=C=I>>>0>(MA=I+rA|0)>>>0?C+1|0:C,XA=C=C-((MA>>>0<4293918720)-1|0)|0,I=(2097151&C)<<11|(rA=MA- -1048576|0)>>>21,C=(C>>21)+F0|0,I=I>>>0>(p0=I+L0|0)>>>0?C+1|0:C,C=w(k2,x0,470296,0),t=y+t|0,t=C>>>0>(e=C+MA|0)>>>0?t+1|0:t,MA=e-(C=-2097152&rA)|0,rA=t-((C>>>0>e>>>0)+XA|0)|0,e=w(k2,x0,666643,0),C=y+(w0-(((t=-2097152&cA)>>>0>O>>>0)+A0|0)|0)|0,e=(t=(C=e>>>0>(F0=e+(O-t|0)|0)>>>0?C+1|0:C)>>21)+rA|0,C=(C=(e=(C=(2097151&C)<<11|F0>>>21)>>>0>(A0=C+MA|0)>>>0?e+1|0:e)>>21)+I|0,e=(e=(C=(e=(2097151&e)<<11|A0>>>21)>>>0>(XA=e+p0|0)>>>0?C+1|0:C)>>21)+j0|0,t=(C=(e=(C=(2097151&C)<<11|XA>>>21)>>>0>(I=C+i2|0)>>>0?e+1|0:e)>>21)+E0|0,C=(e=(t=(e=(2097151&e)<<11|I>>>21)>>>0>(p0=e+m2|0)>>>0?t+1|0:t)>>21)+W2|0,e=(t=(C=(t=(2097151&t)<<11|p0>>>21)>>>0>(O=t+C1|0)>>>0?C+1|0:C)>>21)+f0|0,C=(C=(e=(C=(2097151&C)<<11|O>>>21)>>>0>(E0=C+e2|0)>>>0?e+1|0:e)>>21)+s1|0,e=(e=(C=(e=(2097151&e)<<11|E0>>>21)>>>0>(w0=e+s2|0)>>>0?C+1|0:C)>>21)+N0|0,t=(C=(e=(C=(2097151&C)<<11|w0>>>21)>>>0>(cA=C+c1|0)>>>0?e+1|0:e)>>21)+K1|0,C=(e=(t=(e=(2097151&e)<<11|cA>>>21)>>>0>(MA=e+Ve|0)>>>0?t+1|0:t)>>21)+Xe|0,u0=(f0=r-(e=-2097152&u0)|0)+((2097151&(C=(t=(2097151&t)<<11|MA>>>21)>>>0>(rA=t+Oe|0)>>>0?C+1|0:C))<<11|rA>>>21)|0,C=(k0-((e>>>0>r>>>0)+d2|0)|0)+(C>>21)|0,k0=e=(C=f0>>>0>u0>>>0?C+1|0:C)>>21,F0=(C=w(N0=(2097151&C)<<11|u0>>>21,e,666643,0))+(e=2097151&F0)|0,C=y,r=C=e>>>0>F0>>>0?C+1|0:C,c[0|o]=F0,c[o+1|0]=(255&C)<<24|F0>>>8,C=2097151&A0,e=w(N0,k0,470296,0)+C|0,t=y,C=(r>>21)+(C>>>0>e>>>0?t+1|0:t)|0,C=(A0=(f0=(2097151&r)<<11|F0>>>21)+e|0)>>>0>>0?C+1|0:C,c[o+4|0]=(2047&C)<<21|A0>>>11,e=C,t=A0,c[o+3|0]=(7&C)<<29|t>>>3,c[o+2|0]=31&((65535&r)<<16|F0>>>16)|t<<5,r=2097151&XA,XA=w(N0,k0,654183,0)+r|0,C=y,A0=(2097151&e)<<11|t>>>21,e=(e>>21)+(r=r>>>0>XA>>>0?C+1|0:C)|0,C=e=(XA=A0+XA|0)>>>0>>0?e+1|0:e,c[o+6|0]=(63&C)<<26|XA>>>6,r=XA,XA=0,c[o+5|0]=XA<<13|(1572864&t)>>>19|r<<2,t=2097151&I,I=w(N0,k0,-997805,-1)+t|0,e=y,e=t>>>0>I>>>0?e+1|0:e,XA=(2097151&(t=C))<<11|r>>>21,t=(C>>=21)+e|0,t=(I=XA+I|0)>>>0>>0?t+1|0:t,c[o+9|0]=(511&t)<<23|I>>>9,c[o+8|0]=(1&t)<<31|I>>>1,e=0,c[o+7|0]=e<<18|(2080768&r)>>>14|I<<7,e=2097151&p0,r=w(N0,k0,136657,0)+e|0,C=y,C=e>>>0>r>>>0?C+1|0:C,p0=(2097151&(e=t))<<11|I>>>21,e=C+(t=e>>21)|0,e=(r=p0+r|0)>>>0>>0?e+1|0:e,c[o+12|0]=(4095&e)<<20|r>>>12,t=r,c[o+11|0]=(15&e)<<28|t>>>4,r=0,c[o+10|0]=r<<15|(1966080&I)>>>17|t<<4,r=2097151&O,I=w(N0,k0,-683901,-1)+r|0,C=y,C=r>>>0>I>>>0?C+1|0:C,r=e,e=C+(e>>=21)|0,e=(r=(O=I)+(I=(2097151&r)<<11|t>>>21)|0)>>>0>>0?e+1|0:e,c[o+14|0]=(127&e)<<25|r>>>7,I=0,c[o+13|0]=I<<12|(1048576&t)>>>20|r<<1,C=e>>21,t=(e=(2097151&e)<<11|r>>>21)>>>0>(I=e+(2097151&E0)|0)>>>0?C+1|0:C,c[o+17|0]=(1023&t)<<22|I>>>10,c[o+16|0]=(3&t)<<30|I>>>2,e=0,c[o+15|0]=e<<17|(2064384&r)>>>15|I<<6,C=t>>21,C=(e=(2097151&t)<<11|I>>>21)>>>0>(t=e+(2097151&w0)|0)>>>0?C+1|0:C,c[o+20|0]=(8191&C)<<19|t>>>13,c[o+19|0]=(31&C)<<27|t>>>5,r=(e=2097151&cA)+(cA=(2097151&C)<<11|t>>>21)|0,e=C>>21,e=r>>>0>>0?e+1|0:e,cA=r,c[o+21|0]=r,w0=0,c[o+18|0]=w0<<14|(1835008&I)>>>18|t<<3,c[o+22|0]=(255&e)<<24|r>>>8,t=e>>21,t=(r=(I=(2097151&e)<<11|r>>>21)+(2097151&MA)|0)>>>0>>0?t+1|0:t,c[o+25|0]=(2047&t)<<21|r>>>11,c[o+24|0]=(7&t)<<29|r>>>3,c[o+23|0]=31&((65535&e)<<16|cA>>>16)|r<<5,C=t>>21,C=(e=(2097151&t)<<11|r>>>21)>>>0>(t=e+(2097151&rA)|0)>>>0?C+1|0:C,c[o+27|0]=(63&C)<<26|t>>>6,I=0,c[o+26|0]=I<<13|(1572864&r)>>>19|t<<2,e=C,C>>=21,e=(r=(rA=(2097151&e)<<11|t>>>21)+(I=2097151&u0)|0)>>>0>>0?C+1|0:C,c[o+31|0]=(131071&e)<<15|r>>>17,C=r,c[o+30|0]=(511&e)<<23|C>>>9,r=0,c[o+28|0]=r<<18|(2080768&t)>>>14|C<<7,c[o+29|0]=rA+u0>>>1,y0(_,64),y0(a,64),g&&(A[g>>2]=64,A[g+4>>2]=0),W=s+560|0,0}function ZA(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA,iA,hA,mA,HA,aA,EA,YA,qA,$A,g0,i0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0,O=0,rA=0,cA=0,XA=0,A0=0,s0=0,p0=0,f0=0,E0=0,w0=0,u0=0,k0=0,F0=0,N0=0,x0=0,L0=0,T0=0,j0=0,V0=0,W0=0,C2=0,e2=0,r2=0,i2=0,s2=0,k2=0,d2=0,m2=0,Y2=0,R2=0,U2=0,W2=0,V2=0,C1=0,c1=0,I1=0,s1=0,h1=0,Q1=0,K1=0;FA=w(t=(d=i[e+2|0])<<16&2031616|i[0|e]|i[e+1|0]<<8,0,r=(O=i[g+23|0]|i[g+24|0]<<8|i[g+25|0]<<16|i[g+26|0]<<24)>>>5&2097151,0),H=y,u=w(o=(d=i[g+23|0])<<16&2031616|i[g+21|0]|i[g+22|0]<<8,0,I=(VA=i[e+2|0]|i[e+3|0]<<8|i[e+4|0]<<16|i[e+5|0]<<24)>>>5&2097151,0),d=y+H|0,d=u>>>0>(FA=u+FA|0)>>>0?d+1|0:d,H=w(a=(i[e+7|0]|i[e+8|0]<<8|i[e+9|0]<<16|i[e+10|0]<<24)>>>7&2097151,0,_=(A0=i[g+15|0]|i[g+16|0]<<8|i[g+17|0]<<16|i[g+18|0]<<24)>>>6&2097151,0),u=y+d|0,I0=FA=H+FA|0,H=H>>>0>FA>>>0?u+1|0:u,u=(d=i[g+14|0])>>>24|0,c0=d<<8|(h0=i[g+10|0]|i[g+11|0]<<8|i[g+12|0]<<16|i[g+13|0]<<24)>>>24,u=w(s=2097151&((1&(D0=(d=u)|(u=(FA=i[g+15|0])>>>16|0)))<<31|(d=(FA<<=16)|c0)>>>1),0,h=(_0=i[e+10|0]|i[e+11|0]<<8|i[e+12|0]<<16|i[e+13|0]<<24)>>>4&2097151,0),H=y+H|0,D0=d=u+I0|0,FA=d>>>0>>0?H+1|0:H,H=(u=i[e+6|0])>>>24|0,I0=u<<8|VA>>>24,VA=n=2097151&((3&(H|=u=(d=i[e+7|0])>>>16|0))<<30|(d=I0|d<<16)>>>2),I0=0,c0=(d=i[g+19|0])<<8|A0>>>24,H=u=d>>>24|0,d=(u=i[g+20|0])>>>16|0,K=H=(d|=H)>>>3|0,u=w(VA,I0,B=(7&d)<<29|(u=u<<16|c0)>>>3,H),d=y+FA|0,d=u>>>0>(c0=u+D0|0)>>>0?d+1|0:d,H=w(Q=(VA=i[e+15|0]|i[e+16|0]<<8|i[e+17|0]<<16|i[e+18|0]<<24)>>>6&2097151,0,p=(i[g+7|0]|i[g+8|0]<<8|i[g+9|0]<<16|i[g+10|0]<<24)>>>7&2097151,0),u=y+d|0,I0=FA=H+c0|0,FA=H>>>0>FA>>>0?u+1|0:u,c0=(d=i[e+14|0])<<8|_0>>>24,d=u=d>>>24|0,H=(u=i[e+15|0])>>>16|0,u=w(l=2097151&((1&(H|=d))<<31|(d=(u<<=16)|c0)>>>1),0,v=h0>>>4&2097151,0),d=y+FA|0,_0=H=u+I0|0,I0=u>>>0>H>>>0?d+1|0:d,d=(u=i[e+19|0])>>>24|0,FA=u<<8|VA>>>24,H=(u=i[e+20|0])>>>16|0,D=(7&(H|=d))<<29|(u=FA|u<<16)>>>3,w0=d=H>>>3|0,FA=d,d=(u=i[g+6|0])>>>24|0,VA=u<<8|(D0=i[g+2|0]|i[g+3|0]<<8|i[g+4|0]<<16|i[g+5|0]<<24)>>>24,H=d,d=(u=i[g+7|0])>>>16|0,d=w(D,FA,b=2097151&((3&(d|=H))<<30|(u=u<<16|VA)>>>2),0),u=y+I0|0,H=d>>>0>(FA=d+_0|0)>>>0?u+1|0:u,d=w(M=(d=i[e+23|0])<<16&2031616|i[e+21|0]|i[e+22|0]<<8,0,x=D0>>>5&2097151,0),u=y+H|0,H=d>>>0>(FA=d+FA|0)>>>0?u+1|0:u,u=w(q=(d=i[g+2|0])<<16&2031616|i[0|g]|i[g+1|0]<<8,0,F0=(D0=i[e+23|0]|i[e+24|0]<<8|i[e+25|0]<<16|i[e+26|0]<<24)>>>5&2097151,0),d=y+H|0,VA=FA=u+FA|0,I0=u>>>0>FA>>>0?d+1|0:d,u=w(o,0,t,0),d=y,FA=(H=u)+(u=w(B,K,I,0))|0,H=y+d|0,H=u>>>0>FA>>>0?H+1|0:H,u=w(a,0,s,0),d=y+H|0,d=u>>>0>(FA=u+FA|0)>>>0?d+1|0:d,H=w(h,0,v,0),u=y+d|0,u=H>>>0>(FA=H+FA|0)>>>0?u+1|0:u,d=w(_,0,n,0),u=y+u|0,u=d>>>0>(H=d+FA|0)>>>0?u+1|0:u,FA=(d=H)+(H=w(Q,0,b,0))|0,d=y+u|0,d=H>>>0>FA>>>0?d+1|0:d,u=w(l,0,p,0),H=y+d|0,H=u>>>0>(FA=u+FA|0)>>>0?H+1|0:H,FA=(u=w(D,w0,x,0))+FA|0,d=y+H|0,H=w(M,0,q,0),u=y+(u>>>0>FA>>>0?d+1|0:d)|0,FA=u=H>>>0>(c0=H+FA|0)>>>0?u+1|0:u,u0=u=u-((c0>>>0<4293918720)-1|0)|0,d=(d=u>>>21|0)+I0|0,cA=H=(d=(u=(2097151&u)<<11|(p0=c0- -1048576|0)>>>21)>>>0>(VA=u+VA|0)>>>0?d+1|0:d)-((VA>>>0<4293918720)-1|0)|0,rA=VA-(u=-2097152&(XA=VA- -1048576|0))|0,MA=d-((u>>>0>VA>>>0)+H|0)|0,I0=(d=i[e+27|0])<<8|D0>>>24,H=u=d>>>24|0,VA=w(V=2097151&((3&(H|=d=(u=i[e+28|0])>>>16|0))<<30|(d=(u<<=16)|I0)>>>2),0,N0=(i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)>>>7|0,0),I0=y,d=(u=i[g+27|0])>>>24|0,g=w($=2097151&((3&(d|=H=(g=i[g+28|0])>>>16|0))<<30|(u=u<<8|O>>>24|g<<16)>>>2),0,x0=(i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24)>>>7|0,0),u=y+I0|0,u=g>>>0>(e=g+VA|0)>>>0?u+1|0:u,H=e,g=w(r,0,x0,0),e=y,I0=(d=g)+(g=w(F0,0,N0,0))|0,d=y+e|0,d=g>>>0>I0>>>0?d+1|0:d,g=w(V,0,$,0),d=y+d|0,I0=d=g>>>0>(D0=g+I0|0)>>>0?d+1|0:d,_0=g=d-((D0>>>0<4293918720)-1|0)|0,d=g>>>21|0,VA=(g=(2097151&g)<<11|(e=D0- -1048576|0)>>>21)+H|0,H=d+u|0,A0=d=(H=g>>>0>VA>>>0?H+1|0:H)-((VA>>>0<4293918720)-1|0)|0,g=VA-(u=-2097152&(h0=VA- -1048576|0))|0,z=u=H-((131071&d)+(u>>>0>VA>>>0)|0)|0,_A=g,g=w(g,u,666643,0),u=y+MA|0,j0=d=g+rA|0,VA=g>>>0>d>>>0?u+1|0:u,rA=D0-(g=-2097152&e)|0,f0=I0-((131071&_0)+(g>>>0>D0>>>0)|0)|0,g=w(M,0,N0,0),e=y,d=(u=g)+(g=w(F0,0,$,0))|0,u=y+e|0,u=g>>>0>d>>>0?u+1|0:u,e=(g=w(o,0,x0,0))+d|0,d=y+u|0,d=g>>>0>e>>>0?d+1|0:d,g=w(r,0,V,0),u=y+d|0,_0=e=g+e|0,g=g>>>0>e>>>0?u+1|0:u,e=w(r,0,F0,0),u=y,H=(d=e)+(e=w(D,w0,N0,0))|0,d=y+u|0,d=e>>>0>H>>>0?d+1|0:d,u=(e=w(M,0,$,0))+H|0,H=y+d|0,H=e>>>0>u>>>0?H+1|0:H,d=(e=w(B,K,x0,0))+u|0,u=y+H|0,u=e>>>0>d>>>0?u+1|0:u,MA=(e=w(o,0,V,0))+d|0,d=y+u|0,D0=d=e>>>0>MA>>>0?d+1|0:d,s0=e=d-((MA>>>0<4293918720)-1|0)|0,d=g+(u=e>>>21|0)|0,e=d=(e=(2097151&e)<<11|(I0=MA- -1048576|0)>>>21)>>>0>(_0=e+_0|0)>>>0?d+1|0:d,O=d=d-((_0>>>0<4293918720)-1|0)|0,u=rA,rA=(2097151&d)<<11|(g=_0- -1048576|0)>>>21,d=(d>>>21|0)+f0|0,sA=d=(H=u+rA|0)>>>0>>0?d+1|0:d,nA=g=_0-(u=-2097152&g)|0,fA=_0=e-((u>>>0>_0>>>0)+O|0)|0,uA=H,e=w(H,d,470296,0),u=y+VA|0,u=e>>>0>(d=e+j0|0)>>>0?u+1|0:u,g=w(g,_0,654183,0),H=y+u|0,f0=e=g+d|0,VA=g>>>0>e>>>0?H+1|0:H,O=MA-(g=-2097152&I0)|0,MA=D0-((g>>>0>MA>>>0)+s0|0)|0,g=w(D,w0,$,0),e=y,d=(u=g)+(g=w(Q,0,N0,0))|0,u=y+e|0,u=g>>>0>d>>>0?u+1|0:u,e=(g=w(o,0,F0,0))+d|0,d=y+u|0,d=g>>>0>e>>>0?d+1|0:d,g=w(r,0,M,0),H=y+d|0,H=g>>>0>(e=g+e|0)>>>0?H+1|0:H,g=w(_,0,x0,0),u=y+H|0,u=g>>>0>(e=g+e|0)>>>0?u+1|0:u,g=w(B,K,V,0),d=y+u|0,D0=e=g+e|0,I0=g>>>0>e>>>0?d+1|0:d,g=w(l,0,N0,0),e=y,d=(u=g)+(g=w(Q,0,$,0))|0,u=y+e|0,u=g>>>0>d>>>0?u+1|0:u,e=(g=w(r,0,D,w0))+d|0,d=y+u|0,d=g>>>0>e>>>0?d+1|0:d,g=w(B,K,F0,0),H=y+d|0,H=g>>>0>(e=g+e|0)>>>0?H+1|0:H,g=w(o,0,M,0),u=y+H|0,u=g>>>0>(e=g+e|0)>>>0?u+1|0:u,g=w(s,0,x0,0),d=y+u|0,d=g>>>0>(e=g+e|0)>>>0?d+1|0:d,g=w(_,0,V,0),u=y+d|0,g=u=g>>>0>(e=g+e|0)>>>0?u+1|0:u,k0=u=u-((e>>>0<4293918720)-1|0)|0,H=(d=u>>>21|0)+I0|0,rA=H=(u=(2097151&u)<<11|(s0=e- -1048576|0)>>>21)>>>0>(L0=u+D0|0)>>>0?H+1|0:H,e2=u=H-((L0>>>0<4293918720)-1|0)|0,I0=(2097151&u)<<11|(_0=L0- -1048576|0)>>>21,u=(u>>>21|0)+MA|0,vA=u=(H=I0+O|0)>>>0>>0?u+1|0:u,wA=H,u=w(H,u,-997805,-1),d=y+VA|0,MA=H=u+f0|0,VA=u>>>0>H>>>0?d+1|0:d,I0=c0,c0=FA,u=w(t,0,B,K),d=y,FA=(H=u)+(u=w(_,0,I,0))|0,H=y+d|0,H=u>>>0>FA>>>0?H+1|0:H,d=w(a,0,v,0),u=y+H|0,u=d>>>0>(FA=d+FA|0)>>>0?u+1|0:u,H=w(h,0,p,0),d=y+u|0,d=H>>>0>(FA=H+FA|0)>>>0?d+1|0:d,H=w(s,0,n,0),u=y+d|0,u=H>>>0>(FA=H+FA|0)>>>0?u+1|0:u,H=w(Q,0,x,0),d=y+u|0,d=H>>>0>(FA=H+FA|0)>>>0?d+1|0:d,u=w(l,0,b,0),H=y+d|0,H=u>>>0>(FA=u+FA|0)>>>0?H+1|0:H,d=w(D,w0,q,0),u=y+H|0,D0=FA=d+FA|0,FA=d>>>0>FA>>>0?u+1|0:u,u=w(t,0,_,0),d=y,H=u,u=w(I,0,s,0),d=y+d|0,d=u>>>0>(H=H+u|0)>>>0?d+1|0:d,O=(u=H)+(H=w(a,0,p,0))|0,u=y+d|0,u=H>>>0>O>>>0?u+1|0:u,H=w(h,0,b,0),d=y+u|0,d=H>>>0>(O=H+O|0)>>>0?d+1|0:d,u=w(n,0,v,0),H=y+d|0,H=u>>>0>(O=u+O|0)>>>0?H+1|0:H,O=(d=w(Q,0,q,0))+O|0,u=y+H|0,H=w(l,0,x,0),d=y+(d>>>0>O>>>0?u+1|0:u)|0,s2=d=H>>>0>(i2=H+O|0)>>>0?d+1|0:d,c1=d=d-((i2>>>0<4293918720)-1|0)|0,H=(2097151&d)<<11|(r2=i2- -1048576|0)>>>21,d=(d>>>21|0)+FA|0,E0=d=H>>>0>(k2=H+D0|0)>>>0?d+1|0:d,I1=d=d-((k2>>>0<4293918720)-1|0)|0,H=(2097151&d)<<11|(j0=k2- -1048576|0)>>>21,d=(d>>>21|0)+c0|0,d=H>>>0>(I0=H+I0|0)>>>0?d+1|0:d,u=w(uA,sA,666643,0),d=y+(d-(((H=-2097152&p0)>>>0>I0>>>0)+u0|0)|0)|0,d=u>>>0>(FA=u+(I0-H|0)|0)>>>0?d+1|0:d,H=w(nA,fA,470296,0),u=y+d|0,u=H>>>0>(FA=H+FA|0)>>>0?u+1|0:u,H=w(wA,vA,654183,0),d=y+u|0,f0=d=H>>>0>(V0=H+FA|0)>>>0?d+1|0:d,W2=d=d-((V0>>>0<4293918720)-1|0)|0,u=(u=d>>21)+VA|0,MA=u=(d=(2097151&d)<<11|(O=V0- -1048576|0)>>>21)>>>0>(u0=d+MA|0)>>>0?u+1|0:u,d2=d=u-((u0>>>0<4293918720)-1|0)|0,R2=(2097151&d)<<11|(p0=u0- -1048576|0)>>>21,D0=d>>21,u=w(t,0,$,0),d=y,H=u,u=w(r,0,I,0),d=y+d|0,d=u>>>0>(H=H+u|0)>>>0?d+1|0:d,FA=(u=w(a,0,B,K))+H|0,H=y+d|0,H=u>>>0>FA>>>0?H+1|0:H,d=w(_,0,h,0),u=y+H|0,u=d>>>0>(FA=d+FA|0)>>>0?u+1|0:u,H=w(o,0,n,0),d=y+u|0,d=H>>>0>(FA=H+FA|0)>>>0?d+1|0:d,H=w(Q,0,v,0),u=y+d|0,u=H>>>0>(FA=H+FA|0)>>>0?u+1|0:u,H=w(l,0,s,0),d=y+u|0,d=H>>>0>(FA=H+FA|0)>>>0?d+1|0:d,u=w(p,0,D,w0),H=y+d|0,H=u>>>0>(FA=u+FA|0)>>>0?H+1|0:H,d=w(x,0,F0,0),u=y+H|0,u=d>>>0>(FA=d+FA|0)>>>0?u+1|0:u,H=w(b,0,M,0),d=y+u|0,d=H>>>0>(FA=H+FA|0)>>>0?d+1|0:d,H=(u=FA)+(FA=w(V,0,q,0))|0,u=y+d|0,VA=H,I0=H>>>0>>0?u+1|0:u,W0=w(N0,0,x0,0),c0=H=(C2=y)-((W0>>>0<4293918720)-1|0)|0,d=W0-(u=-2097152&(FA=W0- -1048576|0))|0,u=(A0>>>21|0)+(u=C2-((524287&H)+(u>>>0>W0>>>0)|0)|0)|0,iA=u=(H=(h0=(2097151&A0)<<11|h0>>>21)+d|0)>>>0>>0?u+1|0:u,hA=H,d=(2097151&cA)<<11|XA>>>21,h0=w(H,u,666643,0)+d|0,u=y+(cA>>>21|0)|0,u=d>>>0>h0>>>0?u+1|0:u,H=w(_A,z,470296,0),d=y+u|0,d=(H>>>0>(h0=H+h0|0)>>>0?d+1|0:d)+I0|0,d=(u=VA+h0|0)>>>0>>0?d+1|0:d,h0=(H=w(uA,sA,654183,0))+u|0,u=y+d|0,U2=VA- -1048576|0,W0=I0=I0-((VA>>>0<4293918720)-1|0)|0,d=w(nA,fA,-997805,-1),H=y+(H>>>0>h0>>>0?u+1|0:u)|0,H=d>>>0>(VA=d+h0|0)>>>0?H+1|0:H,XA=(u=w(wA,vA,136657,0))+(VA-(d=-2097152&U2)|0)|0,d=y+(H-((d>>>0>VA>>>0)+I0|0)|0)|0,H=(A0=u>>>0>XA>>>0?d+1|0:d)+D0|0,m2=u=XA+R2|0,h0=H=u>>>0>>0?H+1|0:H,C2=L0-(u=-2097152&_0)|0,L0=rA-((u>>>0>L0>>>0)+e2|0)|0,mA=H=c0>>>21|0,d=(u=e)+(e=w(J=(2097151&c0)<<11|FA>>>21,H,-683901,-1))|0,u=y+g|0,rA=d-(g=-2097152&s0)|0,cA=(e>>>0>d>>>0?u+1|0:u)-((g>>>0>d>>>0)+k0|0)|0,g=w(r,0,Q,0),e=y,u=g,g=w(h,0,N0,0),d=y+e|0,d=g>>>0>(u=u+g|0)>>>0?d+1|0:d,g=w(l,0,$,0),H=y+d|0,H=g>>>0>(e=g+u|0)>>>0?H+1|0:H,g=w(o,0,D,w0),u=y+H|0,u=g>>>0>(e=g+e|0)>>>0?u+1|0:u,g=w(_,0,F0,0),u=y+u|0,u=g>>>0>(e=g+e|0)>>>0?u+1|0:u,g=w(B,K,M,0),d=y+u|0,d=g>>>0>(e=g+e|0)>>>0?d+1|0:d,g=w(v,0,x0,0),d=y+d|0,d=g>>>0>(e=g+e|0)>>>0?d+1|0:d,g=w(s,0,V,0),H=y+d|0,FA=e=g+e|0,g=g>>>0>e>>>0?H+1|0:H,e=w(h,0,$,0),u=y,d=e,e=w(a,0,N0,0),u=y+u|0,u=e>>>0>(d=d+e|0)>>>0?u+1|0:u,e=w(o,0,Q,0),u=y+u|0,u=e>>>0>(d=e+d|0)>>>0?u+1|0:u,H=(e=w(r,0,l,0))+d|0,d=y+u|0,d=e>>>0>H>>>0?d+1|0:d,e=w(B,K,D,w0),d=y+d|0,d=e>>>0>(u=e+H|0)>>>0?d+1|0:d,e=w(s,0,F0,0),H=y+d|0,H=e>>>0>(u=e+u|0)>>>0?H+1|0:H,d=(e=w(_,0,M,0))+u|0,u=y+H|0,u=e>>>0>d>>>0?u+1|0:u,e=w(p,0,x0,0),u=y+u|0,u=e>>>0>(d=e+d|0)>>>0?u+1|0:u,_0=(e=w(v,0,V,0))+d|0,d=y+u|0,D0=d=e>>>0>_0>>>0?d+1|0:d,Y2=e=d-((_0>>>0<4293918720)-1|0)|0,H=g+(u=e>>>21|0)|0,I0=H=(e=(2097151&e)<<11|(VA=_0- -1048576|0)>>>21)>>>0>(s0=e+FA|0)>>>0?H+1|0:H,k0=g=H-((s0>>>0<4293918720)-1|0)|0,d=(u=g>>>21|0)+cA|0,FA=d=(g=(2097151&g)<<11|(c0=s0- -1048576|0)>>>21)>>>0>(rA=g+rA|0)>>>0?d+1|0:d,cA=e=d-((rA>>>0<4293918720)-1|0)|0,H=(u=e>>21)+L0|0,HA=H=(e=(d=(2097151&e)<<11|(g=rA- -1048576|0)>>>21)+C2|0)>>>0>>0?H+1|0:H,e2=XA- -1048576|0,R2=d=A0-((XA>>>0<4293918720)-1|0)|0,V2=e,e=w(e,H,-683901,-1),u=y+h0|0,C2=u=(d=(u=e>>>0>(H=e+m2|0)>>>0?u+1|0:u)-(((e=-2097152&e2)>>>0>H>>>0)+d|0)|0)-(((h0=H-e|0)>>>0<4293918720)-1|0)|0,YA=h0-(e=-2097152&(L0=h0- -1048576|0))|0,s1=d-((e>>>0>h0>>>0)+u|0)|0,e=w(V2,HA,136657,0),d=y+(MA-(((u=-2097152&p0)>>>0>u0>>>0)+d2|0)|0)|0,C1=H=e+(u0-u|0)|0,e=e>>>0>H>>>0?d+1|0:d,T0=rA-(g&=-2097152)|0,p0=FA-((g>>>0>rA>>>0)+cA|0)|0,g=w(hA,iA,-683901,-1),u=y,d=g,g=w(J,mA,136657,0),u=y+u|0,d=I0+(g>>>0>(H=d+g|0)>>>0?u+1|0:u)|0,A0=(u=H+s0|0)-(g=-2097152&c0)|0,h0=(d=u>>>0>>0?d+1|0:d)-((g>>>0>u>>>0)+k0|0)|0,g=w(J,mA,-997805,-1),u=y+D0|0,u=g>>>0>(d=g+_0|0)>>>0?u+1|0:u,g=w(hA,iA,136657,0),u=y+u|0,u=g>>>0>(d=g+d|0)>>>0?u+1|0:u,H=(g=w(_A,z,-683901,-1))+d|0,d=y+u|0,d=g>>>0>H>>>0?d+1|0:d,I0=H-(g=-2097152&VA)|0,c0=d-((g>>>0>H>>>0)+Y2|0)|0,g=w(r,0,h,0),u=y,H=(d=g)+(g=w(a,0,$,0))|0,d=y+u|0,d=g>>>0>H>>>0?d+1|0:d,g=w(n,0,N0,0),u=y+d|0,u=g>>>0>(H=g+H|0)>>>0?u+1|0:u,g=w(Q,0,B,K),d=y+u|0,d=g>>>0>(H=g+H|0)>>>0?d+1|0:d,g=w(o,0,l,0),u=y+d|0,u=g>>>0>(H=g+H|0)>>>0?u+1|0:u,d=(g=w(_,0,D,w0))+H|0,H=y+u|0,H=g>>>0>d>>>0?H+1|0:H,u=(g=w(v,0,F0,0))+d|0,d=y+H|0,d=g>>>0>u>>>0?d+1|0:d,H=(g=w(s,0,M,0))+u|0,u=y+d|0,u=g>>>0>H>>>0?u+1|0:u,g=w(b,0,x0,0),d=y+u|0,d=g>>>0>(H=g+H|0)>>>0?d+1|0:d,g=w(p,0,V,0),u=y+d|0,FA=H=g+H|0,g=g>>>0>H>>>0?u+1|0:u,u=w(r,0,a,0),d=y,VA=(H=u)+(u=w(I,0,N0,0))|0,H=y+d|0,H=u>>>0>VA>>>0?H+1|0:H,u=w(o,0,h,0),d=y+H|0,d=u>>>0>(VA=u+VA|0)>>>0?d+1|0:d,H=w(n,0,$,0),u=y+d|0,u=H>>>0>(VA=H+VA|0)>>>0?u+1|0:u,H=w(_,0,Q,0),d=y+u|0,d=H>>>0>(VA=H+VA|0)>>>0?d+1|0:d,H=w(B,K,l,0),u=y+d|0,u=H>>>0>(VA=H+VA|0)>>>0?u+1|0:u,d=w(s,0,D,w0),H=y+u|0,H=d>>>0>(VA=d+VA|0)>>>0?H+1|0:H,u=w(p,0,F0,0),d=y+H|0,d=u>>>0>(VA=u+VA|0)>>>0?d+1|0:d,H=w(v,0,M,0),u=y+d|0,u=H>>>0>(VA=H+VA|0)>>>0?u+1|0:u,H=w(x,0,x0,0),d=y+u|0,d=H>>>0>(VA=H+VA|0)>>>0?d+1|0:d,H=w(b,0,V,0),u=y+d|0,u0=u=H>>>0>(d2=H+VA|0)>>>0?u+1|0:u,qA=u=u-((d2>>>0<4293918720)-1|0)|0,d=g+(d=u>>>21|0)|0,XA=d=(u=(2097151&u)<<11|(cA=d2- -1048576|0)>>>21)>>>0>(m2=u+FA|0)>>>0?d+1|0:d,$A=g=d-((m2>>>0<4293918720)-1|0)|0,u=(d=g>>>21|0)+c0|0,rA=u=(g=(2097151&g)<<11|(s0=m2- -1048576|0)>>>21)>>>0>(Y2=g+I0|0)>>>0?u+1|0:u,g0=g=u-((Y2>>>0<4293918720)-1|0)|0,d=(d=g>>21)+h0|0,D0=d=(g=(2097151&g)<<11|(MA=Y2- -1048576|0)>>>21)>>>0>(k0=g+A0|0)>>>0?d+1|0:d,h1=g=d-((k0>>>0<4293918720)-1|0)|0,u=(d=g>>21)+p0|0,aA=u=(g=(H=(2097151&g)<<11|(FA=k0- -1048576|0)>>>21)+T0|0)>>>0>>0?u+1|0:u,T0=g,g=w(g,u,-683901,-1),H=y+e|0,Q1=u=g+C1|0,VA=g>>>0>u>>>0?H+1|0:H,K1=V0-(g=-2097152&O)|0,W2=f0-((g>>>0>V0>>>0)+W2|0)|0,g=w(nA,fA,666643,0),u=y+(E0-(((e=-2097152&j0)>>>0>k2>>>0)+I1|0)|0)|0,u=g>>>0>(d=g+(k2-e|0)|0)>>>0?u+1|0:u,e=(g=w(wA,vA,470296,0))+d|0,d=y+u|0,j0=e,e=g>>>0>e>>>0?d+1|0:d,_0=i2-(g=-2097152&r2)|0,I0=s2-((g>>>0>i2>>>0)+c1|0)|0,g=w(t,0,s,0),u=y,d=g,g=w(I,0,v,0),H=y+u|0,H=g>>>0>(d=d+g|0)>>>0?H+1|0:H,g=w(a,0,b,0),u=y+H|0,u=g>>>0>(d=g+d|0)>>>0?u+1|0:u,H=(g=w(h,0,x,0))+d|0,d=y+u|0,d=g>>>0>H>>>0?d+1|0:d,g=w(n,0,p,0),u=y+d|0,u=g>>>0>(H=g+H|0)>>>0?u+1|0:u,g=w(l,0,q,0),d=y+u|0,c0=H=g+H|0,g=g>>>0>H>>>0?d+1|0:d,u=w(t,0,v,0),d=y,h0=(H=u)+(u=w(I,0,p,0))|0,H=y+d|0,H=u>>>0>h0>>>0?H+1|0:H,d=w(a,0,x,0),u=y+H|0,u=d>>>0>(h0=d+h0|0)>>>0?u+1|0:u,H=w(h,0,q,0),d=y+u|0,d=H>>>0>(h0=H+h0|0)>>>0?d+1|0:d,H=w(n,0,b,0),u=y+d|0,f0=u=H>>>0>(V0=H+h0|0)>>>0?u+1|0:u,i0=u=u-((V0>>>0<4293918720)-1|0)|0,H=g+(d=u>>>21|0)|0,p0=H=(u=(2097151&u)<<11|(O=V0- -1048576|0)>>>21)>>>0>(s2=u+c0|0)>>>0?H+1|0:H,c1=g=H-((s2>>>0<4293918720)-1|0)|0,u=(d=g>>>21|0)+I0|0,u=(g=(2097151&g)<<11|(A0=s2- -1048576|0)>>>21)>>>0>(H=g+_0|0)>>>0?u+1|0:u,g=w(wA,vA,666643,0),d=y+u|0,h0=d=g>>>0>(r2=g+H|0)>>>0?d+1|0:d,I1=g=d-((r2>>>0<4293918720)-1|0)|0,u=e+(u=g>>21)|0,I0=u=(g=(2097151&g)<<11|(_0=r2- -1048576|0)>>>21)>>>0>(E0=g+j0|0)>>>0?u+1|0:u,C1=g=u-((E0>>>0<4293918720)-1|0)|0,d=(u=g>>21)+W2|0,d=(g=(2097151&g)<<11|(c0=E0- -1048576|0)>>>21)>>>0>(e=g+K1|0)>>>0?d+1|0:d,g=w(V2,HA,-997805,-1),H=y+d|0,H=g>>>0>(u=g+e|0)>>>0?H+1|0:H,k2=g=k0-(e=-2097152&FA)|0,EA=d=D0-((e>>>0>k0>>>0)+h1|0)|0,FA=(e=w(T0,aA,136657,0))+u|0,u=y+H|0,g=w(g,d,-683901,-1),u=y+(e>>>0>FA>>>0?u+1|0:u)|0,FA=u=g>>>0>(D0=g+FA|0)>>>0?u+1|0:u,i2=g=u-((D0>>>0<4293918720)-1|0)|0,u=(d=g>>21)+VA|0,e=u=(VA=j0=(g=(2097151&g)<<11|(H=D0- -1048576|0)>>>21)+Q1|0)>>>0>>0?u+1|0:u,k0=u=u-((VA>>>0<4293918720)-1|0)|0,j0=(2097151&u)<<11|(g=VA- -1048576|0)>>>21,u=(u>>21)+s1|0,s1=W2=j0+YA|0,j0=j0>>>0>W2>>>0?u+1|0:u,h1=VA-(g&=-2097152)|0,Q1=e-((g>>>0>VA>>>0)+k0|0)|0,K1=D0-(g=-2097152&H)|0,W2=FA-((g>>>0>D0>>>0)+i2|0)|0,g=w(V2,HA,654183,0),d=y+(I0-(((e=-2097152&c0)>>>0>E0>>>0)+C1|0)|0)|0,d=g>>>0>(u=g+(E0-e|0)|0)>>>0?d+1|0:d,e=(g=w(T0,aA,-997805,-1))+u|0,u=y+d|0,u=g>>>0>e>>>0?u+1|0:u,g=w(k2,EA,136657,0),u=y+u|0,C1=e=g+e|0,g=g>>>0>e>>>0?u+1|0:u,i2=Y2-(e=-2097152&MA)|0,E0=rA-((e>>>0>Y2>>>0)+g0|0)|0,e=w(hA,iA,-997805,-1),u=y,H=(d=e)+(e=w(J,mA,654183,0))|0,d=y+u|0,d=e>>>0>H>>>0?d+1|0:d,e=w(_A,z,136657,0),u=y+d|0,u=e>>>0>(H=e+H|0)>>>0?u+1|0:u,e=w(uA,sA,-683901,-1),u=y+u|0,d=XA+(e>>>0>(H=e+H|0)>>>0?u+1|0:u)|0,MA=(u=H+m2|0)-(e=-2097152&s0)|0,s0=(d=u>>>0>>0?d+1|0:d)-((e>>>0>u>>>0)+$A|0)|0,e=w(hA,iA,654183,0),u=y,H=(d=e)+(e=w(J,mA,470296,0))|0,d=y+u|0,d=e>>>0>H>>>0?d+1|0:d,e=w(_A,z,-997805,-1),u=y+d|0,d=u0+(e>>>0>(H=e+H|0)>>>0?u+1|0:u)|0,d=(e=H+d2|0)>>>0>>0?d+1|0:d,H=(u=e)+(e=w(uA,sA,136657,0))|0,u=y+d|0,u=e>>>0>H>>>0?u+1|0:u,d=(e=w(nA,fA,-683901,-1))+H|0,H=y+u|0,H=e>>>0>d>>>0?H+1|0:H,c0=d-(e=-2097152&cA)|0,FA=H-((e>>>0>d>>>0)+qA|0)|0,e=w(t,0,N0,0),u=y,d=e,e=w(I,0,$,0),u=y+u|0,u=e>>>0>(d=d+e|0)>>>0?u+1|0:u,e=w(o,0,a,0),u=y+u|0,u=e>>>0>(d=e+d|0)>>>0?u+1|0:u,e=w(B,K,h,0),H=y+u|0,H=e>>>0>(d=e+d|0)>>>0?H+1|0:H,u=(e=w(r,0,n,0))+d|0,d=y+H|0,d=e>>>0>u>>>0?d+1|0:d,e=w(Q,0,s,0),d=y+d|0,d=e>>>0>(u=e+u|0)>>>0?d+1|0:d,H=(e=w(_,0,l,0))+u|0,u=y+d|0,u=e>>>0>H>>>0?u+1|0:u,e=w(v,0,D,w0),u=y+u|0,u=e>>>0>(d=e+H|0)>>>0?u+1|0:u,e=w(b,0,F0,0),H=y+u|0,H=e>>>0>(d=e+d|0)>>>0?H+1|0:H,u=(e=w(p,0,M,0))+d|0,d=y+H|0,d=e>>>0>u>>>0?d+1|0:d,e=w(q,0,x0,0),d=y+d|0,d=e>>>0>(u=e+u|0)>>>0?d+1|0:d,H=(e=w(V,0,x,0))+u|0,u=y+d|0,u=(W0>>>21|0)+(u=e>>>0>H>>>0?u+1|0:u)|0,D0=u=(e=(2097151&W0)<<11|U2>>>21)>>>0>(XA=e+H|0)>>>0?u+1|0:u,d2=e=u-((XA>>>0<4293918720)-1|0)|0,d=(d=e>>>21|0)+FA|0,I0=d=(e=(2097151&e)<<11|(VA=XA- -1048576|0)>>>21)>>>0>(rA=e+c0|0)>>>0?d+1|0:d,k0=e=d-((rA>>>0<4293918720)-1|0)|0,u=(d=e>>21)+s0|0,FA=u=(e=(2097151&e)<<11|(c0=rA- -1048576|0)>>>21)>>>0>(MA=e+MA|0)>>>0?u+1|0:u,cA=u=u-((MA>>>0<4293918720)-1|0)|0,d=(d=u>>21)+E0|0,E0=d=(u=(H=(2097151&u)<<11|(e=MA- -1048576|0)>>>21)+i2|0)>>>0>>0?d+1|0:d,U2=u,d=w(u,d,-683901,-1),u=y+g|0,s0=H=d+C1|0,g=d>>>0>H>>>0?u+1|0:u,u=w(V2,HA,470296,0),H=y+(h0-(((d=-2097152&_0)>>>0>r2>>>0)+I1|0)|0)|0,H=u>>>0>(_0=u+(r2-d|0)|0)>>>0?H+1|0:H,u=w(T0,aA,654183,0),d=y+H|0,d=u>>>0>(_0=u+_0|0)>>>0?d+1|0:d,H=w(k2,EA,-997805,-1),u=y+d|0,u=H>>>0>(_0=H+_0|0)>>>0?u+1|0:u,W0=e=MA-(d=-2097152&e)|0,w0=FA=FA-((d>>>0>MA>>>0)+cA|0)|0,_0=(H=w(U2,E0,136657,0))+_0|0,d=y+u|0,e=w(e,FA,-683901,-1),H=y+(H>>>0>_0>>>0?d+1|0:d)|0,FA=H=e>>>0>(h0=e+_0|0)>>>0?H+1|0:H,u0=d=H-((h0>>>0<4293918720)-1|0)|0,H=(2097151&d)<<11|(e=h0- -1048576|0)>>>21,d=(d>>21)+g|0,cA=H=(d=H>>>0>(_0=H+s0|0)>>>0?d+1|0:d)-((_0>>>0<4293918720)-1|0)|0,MA=(2097151&H)<<11|(g=_0- -1048576|0)>>>21,H=(H>>21)+W2|0,F0=s0=MA+K1|0,s0=MA>>>0>s0>>>0?H+1|0:H,N0=_0-(g&=-2097152)|0,x0=d-((g>>>0>_0>>>0)+cA|0)|0,m2=h0-(g=-2097152&e)|0,Y2=FA-((g>>>0>h0>>>0)+u0|0)|0,g=w(V2,HA,666643,0),d=y+(p0-(((e=-2097152&A0)>>>0>s2>>>0)+c1|0)|0)|0,d=g>>>0>(u=g+(s2-e|0)|0)>>>0?d+1|0:d,g=w(T0,aA,470296,0),H=y+d|0,H=g>>>0>(e=g+u|0)>>>0?H+1|0:H,g=w(k2,EA,654183,0),d=y+H|0,_0=e=g+e|0,g=g>>>0>e>>>0?d+1|0:d,c0=rA-(e=-2097152&c0)|0,FA=I0-((e>>>0>rA>>>0)+k0|0)|0,e=w(hA,iA,470296,0),u=y,d=e,e=w(J,mA,666643,0),u=y+u|0,u=e>>>0>(d=d+e|0)>>>0?u+1|0:u,e=w(_A,z,654183,0),H=y+u|0,H=e>>>0>(d=e+d|0)>>>0?H+1|0:H,u=(e=w(uA,sA,-997805,-1))+d|0,d=y+H|0,d=e>>>0>u>>>0?d+1|0:d,e=w(nA,fA,136657,0),d=y+d|0,u=D0+(e>>>0>(H=e+u|0)>>>0?d+1|0:d)|0,u=(e=H+XA|0)>>>0>>0?u+1|0:u,d=e,e=w(wA,vA,-683901,-1),u=y+u|0,u=e>>>0>(H=d+e|0)>>>0?u+1|0:u,cA=(e=(2097151&R2)<<11|e2>>>21)+(H-(d=-2097152&VA)|0)|0,d=(u-((d>>>0>H>>>0)+d2|0)|0)+(R2>>21)|0,rA=d=e>>>0>cA>>>0?d+1|0:d,k0=e=d-((cA>>>0<4293918720)-1|0)|0,d=(u=e>>21)+FA|0,R2=d=(e=(H=(2097151&e)<<11|(MA=cA- -1048576|0)>>>21)+c0|0)>>>0>>0?d+1|0:d,u0=e,e=w(e,d,-683901,-1),H=y+g|0,H=e>>>0>(u=e+_0|0)>>>0?H+1|0:H,g=w(U2,E0,-997805,-1),d=y+H|0,d=g>>>0>(e=g+u|0)>>>0?d+1|0:d,g=w(W0,w0,136657,0),u=y+d|0,e2=e=g+e|0,c0=g>>>0>e>>>0?u+1|0:u,VA=V0-(g=-2097152&O)|0,I0=f0-((g>>>0>V0>>>0)+i0|0)|0,g=w(t,0,p,0),e=y,u=g,g=w(I,0,b,0),d=y+e|0,d=g>>>0>(u=u+g|0)>>>0?d+1|0:d,g=w(a,0,q,0),d=y+d|0,d=g>>>0>(e=g+u|0)>>>0?d+1|0:d,g=w(n,0,x,0),u=y+d|0,g=g>>>0>(d=e=g+e|0)>>>0?u+1|0:u,e=w(t,0,b,0),u=y,FA=(H=e)+(e=w(I,0,x,0))|0,H=y+u|0,H=e>>>0>FA>>>0?H+1|0:H,e=w(n,0,q,0),u=y+H|0,e=u=e>>>0>(FA=e+FA|0)>>>0?u+1|0:u,V2=u=u-((FA>>>0<4293918720)-1|0)|0,H=u>>>21|0,XA=(u=(2097151&u)<<11|(p0=FA- -1048576|0)>>>21)+d|0,d=g+H|0,A0=d=u>>>0>XA>>>0?d+1|0:d,s2=g=d-((XA>>>0<4293918720)-1|0)|0,u=(H=g>>>21|0)+I0|0,u=(g=(2097151&g)<<11|(h0=XA- -1048576|0)>>>21)>>>0>(d=g+VA|0)>>>0?u+1|0:u,H=(g=w(T0,aA,666643,0))+d|0,d=y+u|0,d=g>>>0>H>>>0?d+1|0:d,g=w(k2,EA,470296,0),d=y+d|0,d=g>>>0>(u=g+H|0)>>>0?d+1|0:d,H=(g=w(u0,R2,136657,0))+u|0,u=y+d|0,u=g>>>0>H>>>0?u+1|0:u,d=(g=w(U2,E0,654183,0))+H|0,H=y+u|0,H=g>>>0>d>>>0?H+1|0:H,g=w(W0,w0,-997805,-1),u=y+H|0,D0=u=g>>>0>(_0=g+d|0)>>>0?u+1|0:u,r2=g=u-((_0>>>0<4293918720)-1|0)|0,d=(H=g>>21)+c0|0,e2=u=(d=(g=(u=(2097151&g)<<11|(VA=_0- -1048576|0)>>>21)+e2|0)>>>0>>0?d+1|0:d)-((g>>>0<4293918720)-1|0)|0,c0=(2097151&u)<<11|(I0=g- -1048576|0)>>>21,u=(u>>21)+Y2|0,i2=O=c0+m2|0,f0=c0>>>0>O>>>0?u+1|0:u,c0=g,H=d,d=(rA-(((u=-2097152&MA)>>>0>cA>>>0)+k0|0)|0)+(C2>>21)|0,O=d=(g=(cA-u|0)+(MA=(2097151&C2)<<11|L0>>>21)|0)>>>0>>0?d+1|0:d,d2=d=d-((g>>>0<4293918720)-1|0)|0,cA=u=d>>21,d=w(T0=(2097151&d)<<11|(rA=g- -1048576|0)>>>21,u,-683901,-1),u=y+H|0,u=d>>>0>(c0=d+c0|0)>>>0?u+1|0:u,m2=c0-(d=-2097152&I0)|0,Y2=u-((d>>>0>c0>>>0)+e2|0)|0,u=w(T0,cA,136657,0),d=y+D0|0,d=u>>>0>(H=u+_0|0)>>>0?d+1|0:d,k0=H-(u=-2097152&VA)|0,e2=d-((u>>>0>H>>>0)+r2|0)|0,H=(u=w(k2,EA,666643,0))+(XA-(d=-2097152&h0)|0)|0,d=y+(A0-((d>>>0>XA>>>0)+s2|0)|0)|0,d=u>>>0>H>>>0?d+1|0:d,c0=(u=w(u0,R2,-997805,-1))+H|0,H=y+d|0,H=u>>>0>c0>>>0?H+1|0:H,d=w(U2,E0,470296,0),u=y+H|0,u=d>>>0>(c0=d+c0|0)>>>0?u+1|0:u,H=w(W0,w0,654183,0),d=y+u|0,C2=c0=H+c0|0,D0=H>>>0>c0>>>0?d+1|0:d,c0=FA,FA=e,e=w(I,0,q,0),u=y,d=e,e=w(t,0,x,0),u=y+u|0,u=e>>>0>(H=d+e|0)>>>0?u+1|0:u,e=w(t,0,q,0),V0=d=y,XA=e,A0=e- -1048576|0,s2=e=d-((e>>>0<4293918720)-1|0)|0,d=e>>>21|0,MA=(e=(2097151&e)<<11|A0>>>21)+H|0,H=d+u|0,h0=H=e>>>0>MA>>>0?H+1|0:H,r2=e=H-((MA>>>0<4293918720)-1|0)|0,u=(d=e>>>21|0)+FA|0,u=(e=(2097151&e)<<11|(_0=MA- -1048576|0)>>>21)>>>0>(H=e+c0|0)>>>0?u+1|0:u,FA=(e=w(u0,R2,654183,0))+(H-(d=-2097152&p0)|0)|0,H=y+(u-((8191&V2)+(d>>>0>H>>>0)|0)|0)|0,H=e>>>0>FA>>>0?H+1|0:H,e=w(U2,E0,666643,0),d=y+H|0,d=e>>>0>(u=e+FA|0)>>>0?d+1|0:d,VA=(e=w(W0,w0,470296,0))+u|0,u=y+d|0,I0=u=e>>>0>VA>>>0?u+1|0:u,L0=e=u-((VA>>>0<4293918720)-1|0)|0,d=(d=e>>21)+D0|0,H=d=(e=(2097151&e)<<11|(c0=VA- -1048576|0)>>>21)>>>0>(FA=e+C2|0)>>>0?d+1|0:d,p0=u=d-((FA>>>0<4293918720)-1|0)|0,D0=(2097151&u)<<11|(e=FA- -1048576|0)>>>21,u=(u>>21)+e2|0,D0=D0>>>0>(E0=C2=D0+k0|0)>>>0?u+1|0:u,d=w(T0,cA,-997805,-1),u=y+H|0,U2=(FA=d+FA|0)-(e&=-2097152)|0,e2=(d>>>0>FA>>>0?u+1|0:u)-((e>>>0>FA>>>0)+p0|0)|0,e=w(T0,cA,654183,0),H=y+I0|0,H=e>>>0>(u=e+VA|0)>>>0?H+1|0:H,C2=u-(e=-2097152&c0)|0,L0=H-((e>>>0>u>>>0)+L0|0)|0,e=w(u0,R2,470296,0),d=y+(h0-((8191&r2)+((u=-2097152&_0)>>>0>MA>>>0)|0)|0)|0,d=e>>>0>(H=e+(MA-u|0)|0)>>>0?d+1|0:d,e=w(W0,w0,666643,0),d=y+d|0,d=e>>>0>(u=e+H|0)>>>0?d+1|0:d,FA=u,e=w(u0,R2,666643,0),H=y+(V0-((2047&s2)+((u=-2097152&A0)>>>0>XA>>>0)|0)|0)|0,VA=H=e>>>0>(_0=e+(XA-u|0)|0)>>>0?H+1|0:H,p0=e=H-((_0>>>0<4293918720)-1|0)|0,d=d+(u=e>>21)|0,A0=e=(d=(e=(2097151&e)<<11|(I0=_0- -1048576|0)>>>21)>>>0>(c0=e+FA|0)>>>0?d+1|0:d)-((c0>>>0<4293918720)-1|0)|0,H=(u=e>>21)+L0|0,e=(e=(2097151&e)<<11|(FA=c0- -1048576|0)>>>21)>>>0>(h0=e+C2|0)>>>0?H+1|0:H,u=w(T0,cA,470296,0),d=y+d|0,d=u>>>0>(H=u+c0|0)>>>0?d+1|0:d,FA=H-(u=-2097152&FA)|0,c0=d-((u>>>0>H>>>0)+A0|0)|0,u=w(T0,cA,666643,0),H=y+(VA-(((d=-2097152&I0)>>>0>_0>>>0)+p0|0)|0)|0,u=(d=(H=u>>>0>(MA=u+(_0-d|0)|0)>>>0?H+1|0:H)>>21)+c0|0,d=e+(H=(u=(H=(2097151&H)<<11|MA>>>21)>>>0>(FA=H+FA|0)>>>0?u+1|0:u)>>21)|0,u=(u=(d=(e=c0=(u=(2097151&u)<<11|FA>>>21)+h0|0)>>>0>>0?d+1|0:d)>>21)+e2|0,d=(d=(u=(d=(2097151&d)<<11|e>>>21)>>>0>(p0=d+U2|0)>>>0?u+1|0:u)>>21)+D0|0,H=(u=(d=(u=(2097151&u)<<11|p0>>>21)>>>0>(A0=u+E0|0)>>>0?d+1|0:d)>>21)+Y2|0,u=(d=(H=(d=(2097151&d)<<11|A0>>>21)>>>0>(h0=d+m2|0)>>>0?H+1|0:H)>>21)+f0|0,d=(H=(u=(H=(2097151&H)<<11|h0>>>21)>>>0>(_0=H+i2|0)>>>0?u+1|0:u)>>21)+x0|0,u=(u=(d=(u=(2097151&u)<<11|_0>>>21)>>>0>(D0=u+N0|0)>>>0?d+1|0:d)>>21)+s0|0,d=(d=(u=(d=(2097151&d)<<11|D0>>>21)>>>0>(VA=d+F0|0)>>>0?u+1|0:u)>>21)+Q1|0,H=(u=(d=(u=(2097151&u)<<11|VA>>>21)>>>0>(I0=u+h1|0)>>>0?d+1|0:d)>>21)+j0|0,d=(O-((g>>>0<(u=-2097152&rA)>>>0)+d2|0)|0)+((H=(d=(2097151&d)<<11|I0>>>21)>>>0>(c0=d+s1|0)>>>0?H+1|0:H)>>21)|0,O=u=(d=(rA=(f0=g-u|0)+((2097151&H)<<11|c0>>>21)|0)>>>0>>0?d+1|0:d)>>21,g=(g=w(f0=(2097151&d)<<11|rA>>>21,u,666643,0))+(u=2097151&MA)|0,H=y,c[0|C]=g,H=g>>>0>>0?H+1|0:H,c[C+1|0]=(255&H)<<24|g>>>8,u=2097151&FA,FA=w(f0,O,470296,0)+u|0,d=y,d=(H>>21)+(d=u>>>0>FA>>>0?d+1|0:d)|0,d=(FA=(MA=(2097151&H)<<11|g>>>21)+FA|0)>>>0>>0?d+1|0:d,c[C+4|0]=(2047&d)<<21|FA>>>11,c[C+3|0]=(7&d)<<29|FA>>>3,c[C+2|0]=31&((65535&H)<<16|g>>>16)|FA<<5,g=2097151&e,e=w(f0,O,654183,0)+g|0,H=y,H=g>>>0>e>>>0?H+1|0:H,g=d,u=(d>>=21)+H|0,g=u=(g=(2097151&g)<<11|FA>>>21)>>>0>(e=g+e|0)>>>0?u+1|0:u,c[C+6|0]=(63&u)<<26|e>>>6,d=0,c[C+5|0]=d<<13|(1572864&FA)>>>19|e<<2,d=2097151&p0,H=w(f0,O,-997805,-1)+d|0,u=y,u=d>>>0>H>>>0?u+1|0:u,d=(d=g>>21)+u|0,d=(g=(FA=H)+(H=(2097151&g)<<11|e>>>21)|0)>>>0>>0?d+1|0:d,c[C+9|0]=(511&d)<<23|g>>>9,c[C+8|0]=(1&d)<<31|g>>>1,u=0,c[C+7|0]=u<<18|(2080768&e)>>>14|g<<7,e=2097151&A0,u=w(f0,O,136657,0)+e|0,H=y,H=e>>>0>u>>>0?H+1|0:H,e=(FA=(2097151&(e=d))<<11|g>>>21)+u|0,u=(d>>=21)+H|0,u=e>>>0>>0?u+1|0:u,c[C+12|0]=(4095&u)<<20|e>>>12,c[C+11|0]=(15&u)<<28|e>>>4,d=0,c[C+10|0]=d<<15|(1966080&g)>>>17|e<<4,g=2097151&h0,H=w(f0,O,-683901,-1)+g|0,d=y,d=g>>>0>H>>>0?d+1|0:d,g=u,u=d+(u>>=21)|0,u=(g=(FA=H)+(H=(2097151&g)<<11|e>>>21)|0)>>>0>>0?u+1|0:u,c[C+14|0]=(127&u)<<25|g>>>7,d=0,c[C+13|0]=d<<12|(1048576&e)>>>20|g<<1,d=u>>21,d=(e=(u=(2097151&u)<<11|g>>>21)+(2097151&_0)|0)>>>0>>0?d+1|0:d,c[C+17|0]=(1023&d)<<22|e>>>10,c[C+16|0]=(3&d)<<30|e>>>2,u=0,c[C+15|0]=u<<17|(2064384&g)>>>15|e<<6,g=d,d>>=21,H=(g=(u=(2097151&g)<<11|e>>>21)+(2097151&D0)|0)>>>0>>0?d+1|0:d,c[C+20|0]=(8191&H)<<19|g>>>13,c[C+19|0]=(31&H)<<27|g>>>5,u=H>>21,u=(d=(FA=(2097151&H)<<11|g>>>21)+(2097151&VA)|0)>>>0>>0?u+1|0:u,FA=d,c[C+21|0]=d,d=0,c[C+18|0]=d<<14|(1835008&e)>>>18|g<<3,c[C+22|0]=(255&u)<<24|FA>>>8,d=u>>21,d=(g=(e=(2097151&u)<<11|FA>>>21)+(2097151&I0)|0)>>>0>>0?d+1|0:d,c[C+25|0]=(2047&d)<<21|g>>>11,c[C+24|0]=(7&d)<<29|g>>>3,c[C+23|0]=31&((65535&u)<<16|FA>>>16)|g<<5,u=(2097151&d)<<11|g>>>21,d>>=21,d=(e=u+(2097151&c0)|0)>>>0>>0?d+1|0:d,c[C+27|0]=(63&d)<<26|e>>>6,u=0,c[C+26|0]=u<<13|(1572864&g)>>>19|e<<2,g=d,u=d>>=21,u=(g=(FA=(2097151&g)<<11|e>>>21)+(H=2097151&rA)|0)>>>0>>0?u+1|0:u,c[C+31|0]=(131071&u)<<15|g>>>17,c[C+30|0]=(511&u)<<23|g>>>9,d=0,c[C+28|0]=d<<18|(2080768&e)>>>14|g<<7,c[C+29|0]=FA+rA>>>1}function Yg(C,g,e,t){for(var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0;I=(r=_<<3)+e|0,o=i[0|(r=g+r|0)]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,K=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,s=o<<24|(65280&o)<<8,h=(a=16711680&o)<<24,a=a>>>8|0,r=(B=-16777216&o)>>>24|0,A[I>>2]=h|B<<8|-16777216&((255&K)<<24|o>>>8)|16711680&((16777215&K)<<8|o>>>24)|K>>>8&65280|K>>>24,o=r|a|s,r=0,A[I+4>>2]=o|r,(0|(_=_+1|0))!=16;);for(g=A[C+4>>2],A[t>>2]=A[C>>2],A[t+4>>2]=g,g=A[C+60>>2],A[t+56>>2]=A[C+56>>2],A[t+60>>2]=g,g=A[C+52>>2],A[t+48>>2]=A[C+48>>2],A[t+52>>2]=g,g=A[C+44>>2],A[t+40>>2]=A[C+40>>2],A[t+44>>2]=g,g=A[C+36>>2],A[t+32>>2]=A[C+32>>2],A[t+36>>2]=g,g=A[C+28>>2],A[t+24>>2]=A[C+24>>2],A[t+28>>2]=g,g=A[C+20>>2],A[t+16>>2]=A[C+16>>2],A[t+20>>2]=g,g=A[C+12>>2],A[t+8>>2]=A[C+8>>2],A[t+12>>2]=g;I=A[t+56>>2],a=A[t+60>>2],r=A[(g=K=(J=YA<<3)+e|0)>>2],g=A[g+4>>2],x=o=A[t+36>>2],o=G(D=A[t+32>>2],o,50),_=y,o=G(D,x,46)^o,_^=y,o=G(D,x,23)^o,g=(y^_)+g|0,g=(r=o+r|0)>>>0>>0?g+1|0:g,r=(_=A[(o=J+34416|0)>>2])+r|0,g=A[o+4>>2]+g|0,g=r>>>0<_>>>0?g+1|0:g,o=(_=((h=A[t+48>>2])^(Q=A[t+40>>2]))&D^h)+r|0,r=(((b=A[t+52>>2])^(q=A[t+44>>2]))&x^b)+g|0,g=(o>>>0<_>>>0?r+1|0:r)+a|0,g=(I=o+I|0)>>>0>>0?g+1|0:g,_=(o=A[t+24>>2])+I|0,r=A[t+28>>2]+g|0,p=r=o>>>0>_>>>0?r+1|0:r,A[t+24>>2]=_,A[t+28>>2]=r,M=r=A[t+4>>2],r=G(o=A[t>>2],r,36),a=y,r=G(o,M,30)^r,a^=y,B=I+(G(o,M,25)^r)|0,r=g+(y^a)|0,r=I>>>0>B>>>0?r+1|0:r,s=(g=B)+(B=o&((a=A[t+16>>2])|(I=A[t+8>>2]))|I&a)|0,g=(g=r)+(M&((r=A[t+20>>2])|(l=A[t+12>>2]))|r&l)|0,B=g=s>>>0>>0?g+1|0:g,A[t+56>>2]=s,A[t+60>>2]=g,n=a,v=r,$=A[(g=iA=(V=8|J)+e|0)>>2],_A=A[g+4>>2],r=((x^q)&p^q)+b|0,r=(g=(a=(Q^D)&_^Q)+h|0)>>>0>>0?r+1|0:r,a=G(_,p,50),h=y,a=G(_,p,46)^a,h^=y,a=(b=G(_,p,23)^a)+g|0,g=(y^h)+r|0,g=(a>>>0>>0?g+1|0:g)+_A|0,g=(r=a+$|0)>>>0>>0?g+1|0:g,a=(a=r)+(h=A[(r=V+34416|0)>>2])|0,r=A[r+4>>2]+g|0,r=(g=a>>>0>>0?r+1|0:r)+v|0,b=r=(h=a+n|0)>>>0>>0?r+1|0:r,A[t+16>>2]=h,A[t+20>>2]=r,g=g+((l|M)&B|l&M)|0,g=(r=a+((o|I)&s|o&I)|0)>>>0>>0?g+1|0:g,a=G(s,B,36),n=y,a=G(s,B,30)^a,n^=y,v=r,r=G(s,B,25)^a,g=(y^n)+g|0,n=g=r>>>0>(a=v+r|0)>>>0?g+1|0:g,A[t+48>>2]=a,A[t+52>>2]=g,v=I,V=l,g=(l=A[(r=fA=(I=16|J)+e|0)>>2])+Q|0,r=A[r+4>>2]+q|0,r=g>>>0>>0?r+1|0:r,I=(Q=g)+(l=A[(g=I+34416|0)>>2])|0,g=A[g+4>>2]+r|0,g=((p^x)&b^x)+(g=I>>>0>>0?g+1|0:g)|0,g=(r=(r=I)+(I=(_^D)&h^D)|0)>>>0>>0?g+1|0:g,I=G(h,b,50),l=y,I=G(h,b,46)^I,l^=y,I=(Q=G(h,b,23)^I)+r|0,r=(y^l)+g|0,r=(Q=I>>>0>>0?r+1|0:r)+V|0,V=r=(l=I)>>>0>(I=I+v|0)>>>0?r+1|0:r,A[t+8>>2]=I,A[t+12>>2]=r,g=G(a,n,36),r=y,g=G(a,n,30)^g,r^=y,q=G(a,n,25)^g,g=((B|M)&n|B&M)+(y^r)|0,r=Q+((v=q+((o|s)&a|o&s)|0)>>>0>>0?g+1|0:g)|0,l=r=(Q=l+v|0)>>>0>>0?r+1|0:r,A[t+40>>2]=Q,A[t+44>>2]=r,v=o,r=(r=D)+(D=A[(g=hA=(o=24|J)+e|0)>>2])|0,g=A[g+4>>2]+x|0,g=r>>>0>>0?g+1|0:g,o=(q=r)+(D=A[(r=o+34416|0)>>2])|0,r=A[r+4>>2]+g|0,r=(p^(p^b)&V)+(r=o>>>0>>0?r+1|0:r)|0,r=(g=(g=o)+(o=_^(_^h)&I)|0)>>>0>>0?r+1|0:r,o=G(I,V,50),D=y,o=G(I,V,46)^o,D^=y,o=(x=G(I,V,23)^o)+g|0,g=(y^D)+r|0,r=(g=o>>>0>>0?g+1|0:g)+M|0,x=r=(M=o+v|0)>>>0>>0?r+1|0:r,A[t>>2]=M,A[t+4>>2]=r,r=G(Q,l,36),D=y,r=G(Q,l,30)^r,v=y^D,q=G(Q,l,25)^r,r=((B|n)&l|B&n)+(y^v)|0,g=g+((D=q+((a|s)&Q|a&s)|0)>>>0>>0?r+1|0:r)|0,D=g=(v=o+D|0)>>>0>>0?g+1|0:g,A[t+32>>2]=v,A[t+36>>2]=g,o=A[(r=wA=(g=32|J)+e|0)>>2],r=p+A[r+4>>2]|0,r=(o=o+_|0)>>>0<_>>>0?r+1|0:r,o=(_=A[(g=g+34416|0)>>2])+o|0,g=A[g+4>>2]+r|0,g=(b^(b^V)&x)+(g=o>>>0<_>>>0?g+1|0:g)|0,g=(r=(r=o)+(o=h^(I^h)&M)|0)>>>0>>0?g+1|0:g,o=G(M,x,50),_=y,o=G(M,x,46)^o,_^=y,o=(p=G(M,x,23)^o)+r|0,r=(y^_)+g|0,q=r=o>>>0

>>0?r+1|0:r,g=r,r=G(v,D,36),_=y,r=G(v,D,30)^r,p=y^_,$=G(v,D,25)^r,r=((n|l)&D|n&l)+(y^p)|0,g=((_=$+((a|Q)&v|a&Q)|0)>>>0<$>>>0?r+1|0:r)+g|0,_=g=(p=o+_|0)>>>0<_>>>0?g+1|0:g,A[t+24>>2]=p,A[t+28>>2]=g,r=B+q|0,q=r=(B=o+s|0)>>>0>>0?r+1|0:r,A[t+56>>2]=B,A[t+60>>2]=r,o=A[(g=uA=(r=40|J)+e|0)>>2],g=b+A[g+4>>2]|0,g=(o=o+h|0)>>>0>>0?g+1|0:g,o=(s=A[(r=r+34416|0)>>2])+o|0,r=A[r+4>>2]+g|0,r=(V^(x^V)&q)+(r=o>>>0>>0?r+1|0:r)|0,r=(g=(g=o)+(o=I^(I^M)&B)|0)>>>0>>0?r+1|0:r,o=G(B,q,50),s=y,o=G(B,q,46)^o,s^=y,o=(h=G(B,q,23)^o)+g|0,g=(y^s)+r|0,g=o>>>0>>0?g+1|0:g,r=G(p,_,36),s=y,r=G(p,_,30)^r,h=y^s,b=G(p,_,25)^r,r=((l|D)&_|l&D)+(y^h)|0,r=((s=b+((Q|v)&p|Q&v)|0)>>>0>>0?r+1|0:r)+g|0,s=r=(h=o+s|0)>>>0>>0?r+1|0:r,A[t+16>>2]=h,A[t+20>>2]=r,g=g+n|0,$=g=(n=o+a|0)>>>0>>0?g+1|0:g,A[t+48>>2]=n,A[t+52>>2]=g,o=A[(r=nA=(g=48|J)+e|0)>>2],r=V+A[r+4>>2]|0,r=(o=o+I|0)>>>0>>0?r+1|0:r,o=(I=A[(g=g+34416|0)>>2])+o|0,g=A[g+4>>2]+r|0,g=(x^(x^q)&$)+(g=o>>>0>>0?g+1|0:g)|0,g=(r=(r=o)+(o=M^(B^M)&n)|0)>>>0>>0?g+1|0:g,o=G(n,$,50),I=y,o=G(n,$,46)^o,I^=y,o=(a=G(n,$,23)^o)+r|0,r=(y^I)+g|0,a=r=o>>>0>>0?r+1|0:r,g=r,r=G(h,s,36),I=y,r=G(h,s,30)^r,b=y^I,V=G(h,s,25)^r,r=((_|D)&s|_&D)+(y^b)|0,g=((I=V+((p|v)&h|p&v)|0)>>>0>>0?r+1|0:r)+g|0,b=g=(r=I)>>>0>(I=o+I|0)>>>0?g+1|0:g,A[t+8>>2]=I,A[t+12>>2]=g,r=a+l|0,V=r=(_A=o+Q|0)>>>0>>0?r+1|0:r,A[t+40>>2]=_A,A[t+44>>2]=r,o=A[(g=vA=(r=56|J)+e|0)>>2],g=x+A[g+4>>2]|0,g=(o=o+M|0)>>>0>>0?g+1|0:g,o=(a=A[(r=r+34416|0)>>2])+o|0,r=A[r+4>>2]+g|0,r=(q^(q^$)&V)+(r=o>>>0>>0?r+1|0:r)|0,r=(g=(g=o)+(o=B^(B^n)&_A)|0)>>>0>>0?r+1|0:r,o=G(_A,V,50),a=y,o=G(_A,V,46)^o,a^=y,o=(l=G(_A,V,23)^o)+g|0,g=(y^a)+r|0,g=o>>>0>>0?g+1|0:g,r=G(I,b,36),a=y,r=G(I,b,30)^r,l=y^a,Q=G(I,b,25)^r,r=((_|s)&b|_&s)+(y^l)|0,r=((a=Q+((h|p)&I|h&p)|0)>>>0>>0?r+1|0:r)+g|0,l=r=(l=a)>>>0>(a=o+a|0)>>>0?r+1|0:r,A[t>>2]=a,A[t+4>>2]=r,g=g+D|0,x=g=(Q=o+v|0)>>>0>>0?g+1|0:g,A[t+32>>2]=Q,A[t+36>>2]=g,o=A[(r=mA=(g=64|J)+e|0)>>2],r=q+A[r+4>>2]|0,r=(o=o+B|0)>>>0>>0?r+1|0:r,o=(B=A[(g=g+34416|0)>>2])+o|0,g=A[g+4>>2]+r|0,g=($^(V^$)&x)+(g=o>>>0>>0?g+1|0:g)|0,g=(r=(r=o)+(o=n^(n^_A)&Q)|0)>>>0>>0?g+1|0:g,o=G(Q,x,50),B=y,o=G(Q,x,46)^o,B^=y,o=(M=G(Q,x,23)^o)+r|0,r=(y^B)+g|0,D=r=o>>>0>>0?r+1|0:r,g=r,r=G(a,l,36),B=y,r=G(a,l,30)^r,M=y^B,v=G(a,l,25)^r,r=((s|b)&l|s&b)+(y^M)|0,g=((B=v+((I|h)&a|I&h)|0)>>>0>>0?r+1|0:r)+g|0,B=g=(M=o+B|0)>>>0>>0?g+1|0:g,A[t+56>>2]=M,A[t+60>>2]=g,r=_+D|0,q=r=(_=o+p|0)>>>0>>0?r+1|0:r,A[t+24>>2]=_,A[t+28>>2]=r,o=A[(g=sA=(r=72|J)+e|0)>>2],g=$+A[g+4>>2]|0,g=(o=o+n|0)>>>0>>0?g+1|0:g,o=(n=A[(r=r+34416|0)>>2])+o|0,r=A[r+4>>2]+g|0,r=(V^(x^V)&q)+(r=o>>>0>>0?r+1|0:r)|0,r=(g=(g=o)+(o=_A^(Q^_A)&_)|0)>>>0>>0?r+1|0:r,o=G(_,q,50),n=y,o=G(_,q,46)^o,n^=y,o=(D=G(_,q,23)^o)+g|0,g=(y^n)+r|0,g=o>>>0>>0?g+1|0:g,r=G(M,B,36),n=y,r=G(M,B,30)^r,D=y^n,v=G(M,B,25)^r,r=((l|b)&B|l&b)+(y^D)|0,r=((n=v+((I|a)&M|I&a)|0)>>>0>>0?r+1|0:r)+g|0,n=r=(D=o+n|0)>>>0>>0?r+1|0:r,A[t+48>>2]=D,A[t+52>>2]=r,g=g+s|0,$=g=(s=o+h|0)>>>0>>0?g+1|0:g,A[t+16>>2]=s,A[t+20>>2]=g,g=(g=_A)+(h=A[(r=_A=(o=80|J)+e|0)>>2])|0,r=A[r+4>>2]+V|0,r=g>>>0>>0?r+1|0:r,o=(p=g)+(h=A[(g=o+34416|0)>>2])|0,g=A[g+4>>2]+r|0,g=(x^(x^q)&$)+(g=o>>>0>>0?g+1|0:g)|0,g=(r=(r=o)+(o=Q^(_^Q)&s)|0)>>>0>>0?g+1|0:g,o=G(s,$,50),h=y,o=G(s,$,46)^o,h^=y,o=(v=G(s,$,23)^o)+r|0,r=(y^h)+g|0,p=r=o>>>0>>0?r+1|0:r,g=r,r=G(D,n,36),h=y,r=G(D,n,30)^r,v=y^h,V=G(D,n,25)^r,r=((B|l)&n|B&l)+(y^v)|0,g=((h=V+((a|M)&D|a&M)|0)>>>0>>0?r+1|0:r)+g|0,h=g=(v=o+h|0)>>>0>>0?g+1|0:g,A[t+40>>2]=v,A[t+44>>2]=g,r=p+b|0,b=r=(p=o+I|0)>>>0>>0?r+1|0:r,A[t+8>>2]=p,A[t+12>>2]=r,r=34416+(g=88|J)|0,I=A[(g=z=g+e|0)>>2],o=A[r>>2]+I|0,g=A[r+4>>2]+A[g+4>>2]|0,r=x+(o>>>0>>0?g+1|0:g)|0,r=(q^(q^$)&b)+(r=(g=o+Q|0)>>>0>>0?r+1|0:r)|0,r=(g=(o=_^(_^s)&p)+g|0)>>>0>>0?r+1|0:r,o=G(p,b,50),I=y,o=G(p,b,46)^o,I^=y,o=(Q=G(p,b,23)^o)+g|0,g=(y^I)+r|0,g=o>>>0>>0?g+1|0:g,r=G(v,h,36),I=y,r=G(v,h,30)^r,Q=y^I,V=G(v,h,25)^r,r=((B|n)&h|B&n)+(y^Q)|0,r=((I=V+((D|M)&v|D&M)|0)>>>0>>0?r+1|0:r)+g|0,Q=r=(Q=I)>>>0>(I=o+I|0)>>>0?r+1|0:r,A[t+32>>2]=I,A[t+36>>2]=r,g=g+l|0,l=g=(r=a)>>>0>(a=o+a|0)>>>0?g+1|0:g,A[t>>2]=a,A[t+4>>2]=g,r=34416+(g=96|J)|0,V=A[(g=HA=g+e|0)>>2],o=A[r>>2]+V|0,r=A[r+4>>2]+A[g+4>>2]|0,g=q+(o>>>0>>0?r+1|0:r)|0,g=(r=o+_|0)>>>0<_>>>0?g+1|0:g,o=(_=s^(s^p)&a)+r|0,r=($^(b^$)&l)+g|0,r=o>>>0<_>>>0?r+1|0:r,g=G(a,l,50),_=y,g=G(a,l,46)^g,_^=y,q=o,o=G(a,l,23)^g,r=(y^_)+r|0,x=r=(g=q+o|0)>>>0>>0?r+1|0:r,o=g,g=G(I,Q,36),_=y,g=G(I,Q,30)^g,V=y^_,q=G(I,Q,25)^g,g=((h|n)&Q|h&n)+(y^V)|0,r=((_=q+((D|v)&I|D&v)|0)>>>0>>0?g+1|0:g)+r|0,_=r=(V=o+_|0)>>>0<_>>>0?r+1|0:r,A[t+24>>2]=V,A[t+28>>2]=r,r=B+x|0,B=r=(M=o+M|0)>>>0>>0?r+1|0:r,A[t+56>>2]=M,A[t+60>>2]=r,r=34416+(g=104|J)|0,x=A[(g=EA=g+e|0)>>2],o=A[r>>2]+x|0,g=A[r+4>>2]+A[g+4>>2]|0,r=$+(o>>>0>>0?g+1|0:g)|0,r=(g=o+s|0)>>>0>>0?r+1|0:r,o=(s=p^(a^p)&M)+g|0,g=(b^(l^b)&B)+r|0,g=o>>>0>>0?g+1|0:g,r=G(M,B,50),s=y,r=G(M,B,46)^r,s^=y,x=G(M,B,23)^r,r=(y^s)+g|0,q=r=(o=x+o|0)>>>0>>0?r+1|0:r,g=r,r=G(V,_,36),s=y,r=G(V,_,30)^r,x=y^s,$=G(V,_,25)^r,r=((h|Q)&_|h&Q)+(y^x)|0,g=((s=$+((I|v)&V|I&v)|0)>>>0<$>>>0?r+1|0:r)+g|0,s=g=(x=o+s|0)>>>0>>0?g+1|0:g,A[t+16>>2]=x,A[t+20>>2]=g,g=n+q|0,n=g=(D=o+D|0)>>>0>>0?g+1|0:g,A[t+48>>2]=D,A[t+52>>2]=g,r=34416+(g=112|J)|0,q=A[(o=$=g+e|0)>>2],g=A[r>>2]+q|0,r=A[r+4>>2]+A[o+4>>2]|0,r=b+(g>>>0>>0?r+1|0:r)|0,r=(l^(B^l)&n)+(r=(g=g+p|0)>>>0

>>0?r+1|0:r)|0,r=(g=(o=a^(a^M)&D)+g|0)>>>0>>0?r+1|0:r,o=G(D,n,50),p=y,o=G(D,n,46)^o,p^=y,o=(b=G(D,n,23)^o)+g|0,g=(y^p)+r|0,q=g=o>>>0>>0?g+1|0:g,r=g,g=G(x,s,36),p=y,g=G(x,s,30)^g,b=y^p,aA=G(x,s,25)^g,g=((_|Q)&s|_&Q)+(y^b)|0,r=((p=aA+((I|V)&x|I&V)|0)>>>0>>0?g+1|0:g)+r|0,p=r=(b=o+p|0)>>>0

>>0?r+1|0:r,A[t+8>>2]=b,A[t+12>>2]=r,r=h+q|0,o=r=(h=o+v|0)>>>0>>0?r+1|0:r,A[t+40>>2]=h,A[t+44>>2]=r,r=34416+(g=120|J)|0,J=A[(g=v=g+e|0)>>2],q=A[r>>2]+J|0,r=A[r+4>>2]+A[g+4>>2]|0,g=l+(q>>>0>>0?r+1|0:r)|0,g=(B^(B^n)&o)+(g=(r=a+q|0)>>>0>>0?g+1|0:g)|0,g=(r=(a=M^(D^M)&h)+r|0)>>>0>>0?g+1|0:g,a=G(h,o,50),B=y,a=G(h,o,46)^a,B^=y,o=(a=G(h,o,23)^a)+r|0,r=(y^B)+g|0,r=o>>>0>>0?r+1|0:r,a=o,B=r,g=r,r=G(b,p,36),h=y,r=G(b,p,30)^r,n=y^h,l=G(b,p,25)^r,r=((_|s)&p|_&s)+(y^n)|0,g=((h=l+((x|V)&b|x&V)|0)>>>0>>0?r+1|0:r)+g|0,g=(o=o+h|0)>>>0>>0?g+1|0:g,A[t>>2]=o,A[t+4>>2]=g,r=B+Q|0,r=(n=I)>>>0>(I=I+a|0)>>>0?r+1|0:r,A[t+32>>2]=I,A[t+36>>2]=r,(0|YA)!=64;)s=((YA=YA+16|0)<<3)+e|0,a=A[K>>2],_=A[K+4>>2],aA=A[sA>>2],B=g=A[sA+4>>2],r=g,o=g=A[$+4>>2],g=G(V=A[$>>2],g,45),I=y,n=((63&o)<<26|V>>>6)^(g=G(V,o,3)^g),g=(o>>>6^(h=y^I))+r|0,r=((I=n+aA|0)>>>0>>0?g+1|0:g)+_|0,r=(g=I+a|0)>>>0>>0?r+1|0:r,a=I=A[iA+4>>2],I=G(_=A[iA>>2],I,63),h=y,I=((127&a)<<25|_>>>7)^G(_,a,56)^I,r=(y^h^a>>>7)+r|0,I=r=I>>>0>(x=I+g|0)>>>0?r+1|0:r,A[s>>2]=x,A[s+4>>2]=r,_=($=A[_A>>2])+_|0,g=(s=A[_A+4>>2])+a|0,r=_>>>0<$>>>0?g+1|0:g,a=g=A[v+4>>2],g=G(q=A[v>>2],g,45),h=y,n=_,_=((63&a)<<26|q>>>6)^G(q,a,3)^g,r=(y^h^a>>>6)+r|0,_=_>>>0>(n=n+_|0)>>>0?r+1|0:r,r=G(h=A[fA>>2],g=A[fA+4>>2],63),l=y,p=n,n=((127&g)<<25|h>>>7)^G(h,g,56)^r,r=(y^l^g>>>7)+_|0,_=r=n>>>0>(b=p+n|0)>>>0?r+1|0:r,A[K+136>>2]=b,A[K+140>>2]=r,r=(_A=A[z>>2])+h|0,g=(h=A[z+4>>2])+g|0,n=G(x,I,45),l=y,n=(Q=((63&I)<<26|x>>>6)^G(x,I,3)^n)+r|0,r=(y^l^I>>>6)+(r>>>0<_A>>>0?g+1|0:g)|0,r=n>>>0>>0?r+1|0:r,l=g=A[hA+4>>2],g=G(Q=A[hA>>2],g,63),M=y,p=n,n=((127&l)<<25|Q>>>7)^G(Q,l,56)^g,r=(y^M^l>>>7)+r|0,n=r=n>>>0>(J=p+n|0)>>>0?r+1|0:r,A[K+144>>2]=J,A[K+148>>2]=r,Q=(iA=A[HA>>2])+Q|0,g=(g=l)+(l=A[HA+4>>2])|0,r=Q>>>0>>0?g+1|0:g,g=G(b,_,45),M=y,D=((63&_)<<26|b>>>6)^G(b,_,3)^g,r=(y^M^_>>>6)+r|0,r=(Q=D+Q|0)>>>0>>0?r+1|0:r,M=g=A[wA+4>>2],g=G(D=A[wA>>2],g,63),v=y,p=Q,Q=((127&M)<<25|D>>>7)^G(D,M,56)^g,r=(y^v^M>>>7)+r|0,Q=r=Q>>>0>(fA=p+Q|0)>>>0?r+1|0:r,A[K+152>>2]=fA,A[K+156>>2]=r,g=(hA=A[EA>>2])+D|0,r=(r=M)+(M=A[EA+4>>2])|0,D=G(J,n,45),v=y,D=((63&n)<<26|J>>>6)^G(J,n,3)^D,r=(y^v^n>>>6)+(g>>>0>>0?r+1|0:r)|0,D=(p=D+g|0)>>>0>>0?r+1|0:r,r=G(v=A[uA>>2],g=A[uA+4>>2],63),wA=y,z=p,p=((127&g)<<25|v>>>7)^(r=G(v,g,56)^r),r=(g>>>7^(uA=y^wA))+D|0,D=r=p>>>0>(wA=z+p|0)>>>0?r+1|0:r,A[K+160>>2]=wA,A[K+164>>2]=r,g=g+o|0,g=(r=v+V|0)>>>0>>0?g+1|0:g,v=G(fA,Q,45),p=y,v=(uA=((63&Q)<<26|fA>>>6)^G(fA,Q,3)^v)+r|0,r=(y^p^Q>>>6)+g|0,r=v>>>0>>0?r+1|0:r,p=A[nA>>2],nA=g=A[nA+4>>2],g=G(p,g,63),uA=y,g=G(p,nA,56)^g,z=v,r=(nA>>>7^(sA=y^uA))+r|0,v=r=(v=((127&nA)<<25|p>>>7)^g)>>>0>(uA=z+v|0)>>>0?r+1|0:r,A[K+168>>2]=uA,A[K+172>>2]=r,g=a+nA|0,g=(r=p+q|0)>>>0

>>0?g+1|0:g,z=p=A[vA+4>>2],p=G(sA=A[vA>>2],p,63),nA=y,p=(vA=((127&z)<<25|sA>>>7)^G(sA,z,56)^p)+r|0,r=(y^nA^z>>>7)+g|0,g=p>>>0>>0?r+1|0:r,r=G(wA,D,45),nA=y,r=G(wA,D,3)^r,vA=y^nA,nA=p,g=(D>>>6^vA)+g|0,p=g=(p=((63&D)<<26|wA>>>6)^r)>>>0>(nA=nA+p|0)>>>0?g+1|0:g,A[K+176>>2]=nA,A[K+180>>2]=g,HA=A[mA>>2],mA=g=A[mA+4>>2],vA=g,g=G(aA,B,63),r=y,EA=((127&B)<<25|aA>>>7)^G(aA,B,56)^g,g=(y^r^B>>>7)+_|0,r=((b=EA+b|0)>>>0>>0?g+1|0:g)+vA|0,r=(g=b+HA|0)>>>0>>0?r+1|0:r,_=G(nA,p,45),b=y,vA=(_=((63&p)<<26|nA>>>6)^G(nA,p,3)^_)+g|0,g=(y^b^p>>>6)+r|0,_=g=_>>>0>vA>>>0?g+1|0:g,A[K+192>>2]=vA,A[K+196>>2]=g,r=I+z|0,r=(g=x+sA|0)>>>0>>0?r+1|0:r,b=G(HA,mA,63),sA=y,z=((127&mA)<<25|HA>>>7)^G(HA,mA,56)^b,r=(y^sA^mA>>>7)+r|0,g=(b=z+g|0)>>>0>>0?r+1|0:r,r=G(uA,v,45),sA=y,r=G(uA,v,3)^r,mA=b,g=(v>>>6^(z=y^sA))+g|0,b=g=(b=((63&v)<<26|uA>>>6)^r)>>>0>(sA=mA+b|0)>>>0?g+1|0:g,A[K+184>>2]=sA,A[K+188>>2]=g,g=G(_A,h,63),r=y,g=((127&h)<<25|_A>>>7)^G(_A,h,56)^g,r=(y^r^h>>>7)+s|0,g=Q+(g>>>0>(z=g+$|0)>>>0?r+1|0:r)|0,g=(r=fA+z|0)>>>0>>0?g+1|0:g,Q=G(vA,_,45),fA=y,Q=G(vA,_,3)^Q,z=y^fA,fA=(Q^=(63&_)<<26|vA>>>6)+r|0,r=(_>>>6^z)+g|0,Q=r=Q>>>0>fA>>>0?r+1|0:r,A[K+208>>2]=fA,A[K+212>>2]=r,g=G($,s,63),r=y,z=G($,s,56)^g,r=((g=s>>>7|0)^y^r)+B|0,g=n+((s=($=z^((127&s)<<25|$>>>7))+aA|0)>>>0<$>>>0?r+1|0:r)|0,g=(r=s+J|0)>>>0>>0?g+1|0:g,B=G(sA,b,45),s=y,n=(B=((63&b)<<26|sA>>>6)^G(sA,b,3)^B)+r|0,r=(y^s^b>>>6)+g|0,B=r=B>>>0>n>>>0?r+1|0:r,A[K+200>>2]=n,A[K+204>>2]=r,g=G(hA,M,63),r=y,$=((127&M)<<25|hA>>>7)^G(hA,M,56)^g,g=(y^r^M>>>7)+l|0,r=v+((s=$+iA|0)>>>0<$>>>0?g+1|0:g)|0,r=(g=s+uA|0)>>>0>>0?r+1|0:r,s=G(fA,Q,45),v=y,$=g,g=Q>>>6|0,s=((63&Q)<<26|fA>>>6)^G(fA,Q,3)^s,r=(g^y^v)+r|0,s=r=s>>>0>(Q=$+s|0)>>>0?r+1|0:r,A[K+224>>2]=Q,A[K+228>>2]=r,g=G(iA,l,63),r=y,g=G(iA,l,56)^g,v=y^r,$=((127&l)<<25|iA>>>7)^g,g=((r=l>>>7|0)^v)+h|0,r=D+((l=$+_A|0)>>>0<$>>>0?g+1|0:g)|0,r=(g=l+wA|0)>>>0>>0?r+1|0:r,h=G(n,B,45),l=y,v=g,g=B>>>6|0,B=((63&B)<<26|n>>>6)^G(n,B,3)^h,g=(g^y^l)+r|0,B=g=(h=v+B|0)>>>0>>0?g+1|0:g,A[K+216>>2]=h,A[K+220>>2]=g,g=G(q,a,63),r=y,l=((127&a)<<25|q>>>7)^G(q,a,56)^g,r=(y^r^a>>>7)+o|0,r=b+((g=l+V|0)>>>0>>0?r+1|0:r)|0,g=(n=g+sA|0)>>>0>>0?r+1|0:r,r=G(Q,s,45),l=y,v=n,n=G(Q,s,3)^r,r=s>>>6|0,s=v+(n^=(63&s)<<26|Q>>>6)|0,g=(r^y^l)+g|0,A[K+240>>2]=s,A[K+244>>2]=s>>>0>>0?g+1|0:g,g=G(V,o,63),r=y,g=G(V,o,56)^g,s=y^r,r=((r=o>>>7|0)^s)+M|0,g=p+((g^=(127&o)<<25|V>>>7)>>>0>(o=g+hA|0)>>>0?r+1|0:r)|0,g=(r=o+nA|0)>>>0>>0?g+1|0:g,o=G(h,B,45),s=y,n=r,r=B>>>6|0,o=((63&B)<<26|h>>>6)^G(h,B,3)^o,r=(r^y^s)+g|0,o=r=o>>>0>(B=n+o|0)>>>0?r+1|0:r,A[K+232>>2]=B,A[K+236>>2]=r,g=G(x,I,63),r=y,n=G(x,I,56)^g,r=((g=I>>>7|0)^y^r)+a|0,g=_+((I=(s=n^((127&I)<<25|x>>>7))+q|0)>>>0>>0?r+1|0:r)|0,g=(r=I+vA|0)>>>0>>0?g+1|0:g,I=G(B,o,45),a=y,n=r,r=o>>>6|0,o=n+(I=((63&o)<<26|B>>>6)^G(B,o,3)^I)|0,r=(r^y^a)+g|0,A[K+248>>2]=o,A[K+252>>2]=o>>>0>>0?r+1|0:r;g=g+A[C+4>>2]|0,g=(e=o+A[C>>2]|0)>>>0>>0?g+1|0:g,A[C>>2]=e,A[C+4>>2]=g,r=A[C+12>>2]+A[t+12>>2]|0,g=(e=A[t+8>>2])+A[C+8>>2]|0,A[C+8>>2]=g,A[C+12>>2]=g>>>0>>0?r+1|0:r,r=A[C+20>>2]+A[t+20>>2]|0,g=(e=A[t+16>>2])+A[C+16>>2]|0,A[C+16>>2]=g,A[C+20>>2]=g>>>0>>0?r+1|0:r,g=A[C+28>>2]+A[t+28>>2]|0,e=(r=A[t+24>>2])+A[C+24>>2]|0,A[C+24>>2]=e,A[C+28>>2]=e>>>0>>0?g+1|0:g,r=A[C+36>>2]+A[t+36>>2]|0,g=(e=A[t+32>>2])+A[C+32>>2]|0,A[C+32>>2]=g,A[C+36>>2]=g>>>0>>0?r+1|0:r,g=A[C+44>>2]+A[t+44>>2]|0,e=(r=A[t+40>>2])+A[C+40>>2]|0,A[C+40>>2]=e,A[C+44>>2]=e>>>0>>0?g+1|0:g,r=A[C+52>>2]+A[t+52>>2]|0,g=(e=A[t+48>>2])+A[C+48>>2]|0,A[C+48>>2]=g,A[C+52>>2]=g>>>0>>0?r+1|0:r,r=A[C+60>>2]+A[t+60>>2]|0,g=(e=A[t+56>>2])+A[C+56>>2]|0,A[C+56>>2]=g,A[C+60>>2]=g>>>0>>0?r+1|0:r}function Ug(C,g){var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0,O=0,rA=0,cA=0,XA=0,A0=0;if(W=e=W-4096|0,C){A:{g:{if((0|(I=A[C+36>>2]))==2){if(I0=A[C+4>>2],(d=A[g>>2])|(qA=i[g+8|0])>>>0>=2)break g;d=0}else qA=i[g+8|0],I0=A[C+4>>2],d=A[g>>2];if($0(e+3072|0,0,1024),$0(e+2104|0,0,968),A[e+2048>>2]=d,A[e+2052>>2]=0,nA=A[g+4>>2],A[e+2064>>2]=qA,A[e+2068>>2]=0,A[e+2056>>2]=nA,A[e+2060>>2]=0,A[e+2072>>2]=A[C+16>>2],A[e+2076>>2]=0,nA=A[C+8>>2],A[e+2088>>2]=I,A[e+2092>>2]=0,A[e+2080>>2]=nA,A[e+2084>>2]=0,!A[C+20>>2])break A;for(nA=0;(D=127&s)||(nA=(mA=mA+1|0)?nA:nA+1|0,A[e+2096>>2]=mA,A[e+2100>>2]=nA,I=$0(e,0,1024),$0(I+1024|0,0,1024),iC(t=I+3072|0,I+2048|0,I),iC(t,I,I+1024|0)),D=A[4+(I=(e+1024|0)+(D<<3)|0)>>2],A[(t=(s<<3)+I0|0)>>2]=A[I>>2],A[t+4>>2]=D,(D=A[C+20>>2])>>>0>(s=s+1|0)>>>0;);break A}D=A[C+20>>2],O=1}if(!((nA=(D0=!(qA|d))<<1)>>>0>=D>>>0))for(I=A[C+24>>2],_0=A[g+4>>2],s=(mA=(M0(I,_0)+nA|0)+M0(D,qA)|0)+((mA>>>0)%(I>>>0)|0?-1:I-1|0)|0,rA=qA+1|0;;){t=A[C+28>>2],h0=((mA>>>0)%((I=A[C+24>>2])>>>0)|0)==1?mA-1|0:s,s=O?A[A[C>>2]+4>>2]+(h0<<10)|0:(nA<<3)+I0|0,r=A[s>>2],s=A[s+4>>2],A[g+12>>2]=nA,t=D0?_0:(s>>>0)%(t>>>0)|0;A:if(d)s=I+((0|t)==(0|_0)?~D+nA|0:(nA?0:-1)-D|0)|0,o=0,(0|qA)!=3&&(o=M0(D,rA));else{if(!qA){s=nA-1|0,o=0;break A}if(s=M0(D,qA),(0|t)==(0|_0)){s=(s+nA|0)-1|0,o=0;break A}s=s-!nA|0,o=0}D=o,a=(B=A[A[C>>2]+4>>2])+(M0(t,I)<<10)|0,n=(t=s-1|0)>>>0>(o=t+D|0)>>>0,w(r,0,r,0),w(s,0,y,0),D=o-(s=y)|0,t=0,h=0;A:{g:{C:{e:{t:{o:{i:{r:{c:{a:{if(s=n-(o>>>0>>0)|0){if(!I)break a;break c}$1=D-M0((D>>>0)/(I>>>0)|0,I)|0,Ag=0,y=0;break A}if(!D)break r;break i}if(!((r=I-1|0)&I))break o;_=0-(r=(A1(I)+33|0)-A1(s)|0)|0;break e}$1=0,Ag=s,y=0;break A}if((t=32-A1(s)|0)>>>0<31)break t;break C}if($1=r&D,Ag=0,(0|I)==1)break g;I=31&(D=qe(I)),(63&D)>>>0>=32?r=s>>>I|0:(t=s>>>I|0,r=0),y=t;break A}r=t+1|0,_=63-t|0}if(o=31&(t=63&r),t>>>0>=32?(t=0,n=s>>>o|0):(t=s>>>o|0,n=((1<>>o),o=31&(_&=63),_>>>0>=32?(s=D<>>32-o|s<>>31,n=(t=n<<1|s>>>31)-(V=I&(o=v-(z+(t>>>0>_>>>0)|0)>>31))|0,t=z-(t>>>0>>0)|0,s=s<<1|D>>>31,D=h|D<<1,h=1&o,r=r-1|0;);$1=n,Ag=t,y=s<<1|D>>>31;break A}$1=D,Ag=s,s=0}y=s}if(y=Ag,s=($1<<10)+a|0,I=B+(h0<<10)|0,MA=B+(mA<<10)|0,d)iC(I,s,MA);else{for(P0(e+3072|0,s,1024),s=0;o=A[(r=(D=s<<3)+(t=e+3072|0)|0)>>2],B=A[(n=I+D|0)>>2],n=A[r+4>>2]^A[n+4>>2],A[r>>2]=o^B,A[r+4>>2]=n,n=A[(r=(o=8|D)+t|0)>>2],B=A[(o=I+o|0)>>2],o=A[r+4>>2]^A[o+4>>2],A[r>>2]=n^B,A[r+4>>2]=o,n=A[(r=(o=16|D)+t|0)>>2],B=A[(o=I+o|0)>>2],o=A[r+4>>2]^A[o+4>>2],A[r>>2]=n^B,A[r+4>>2]=o,o=A[(D=(r=24|D)+t|0)>>2],n=A[(r=r+I|0)>>2],r=A[D+4>>2]^A[r+4>>2],A[D>>2]=o^n,A[D+4>>2]=r,(0|(s=s+4|0))!=128;);for(P0(e+2048|0,t,1024),D=0,s=0;o=(n=A[56+(I=(e+3072|0)+(s<<7)|0)>>2])+(r=A[I+24>>2])|0,B=(v=A[I+60>>2])+(t=A[I+28>>2])|0,h=w(r<<1&-2,1&(t<<1|r>>>31),n,0),r=y+(r>>>0>o>>>0?B+1|0:B)|0,B=(t=h+o|0)>>>0>>0?r+1|0:r,a=(h=G(t^A[I+120>>2],B^A[I+124>>2],32))+(r=A[I+88>>2])|0,_=(l=y)+(o=A[I+92>>2])|0,z=w(h,0,r<<1&-2,1&(o<<1|r>>>31)),r=y+(r>>>0>a>>>0?_+1|0:_)|0,V=G(n^(o=z+a|0),v^(uA=o>>>0>>0?r+1|0:r),40),Q=1+(r=B+(VA=y)|0)|0,_=r,n=(r=t+V|0)>>>0>>0?Q:_,z=(t=w(V,0,t<<1&-2,1&(B<<1|t>>>31)))+r|0,r=y+n|0,l=G(z^h,l^(aA=t>>>0>z>>>0?r+1|0:r),48),K=Q=y,n=(p=A[I+44>>2])+(t=A[I+12>>2])|0,h=(B=A[I+40>>2])+(r=A[I+8>>2])|0,a=w(r<<1&-2,1&(t<<1|r>>>31),B,0),r=y+(r>>>0>h>>>0?n+1|0:n)|0,a=(t=h+a|0)>>>0>>0?r+1|0:r,h=(_=G(t^A[I+104>>2],a^A[I+108>>2],32))+(n=A[I+72>>2])|0,v=(M=y)+(r=A[I+76>>2])|0,b=w(_,0,n<<1&-2,1&(r<<1|n>>>31)),n=y+(h>>>0>>0?v+1|0:v)|0,h=G($=B^(r=b+h|0),p^(B=r>>>0>>0?n+1|0:n),40),b=1+(n=a+(v=y)|0)|0,p=n,p=(n=t+h|0)>>>0>>0?b:p,t=w(h,0,t<<1&-2,1&(a<<1|t>>>31)),a=y+p|0,p=G((n=t+n|0)^_,M^(EA=t>>>0>n>>>0?a+1|0:a),48),b=1+(t=B+(c0=y)|0)|0,_=t,a=(t=r+p|0)>>>0>>0?b:_,B=t+(r=w(p,0,r<<1&-2,1&(B<<1|r>>>31)))|0,t=y+a|0,M=G(h^B,v^($A=r>>>0>B>>>0?t+1|0:t),1),H=$=y,h=(J=A[I+36>>2])+(t=A[I+4>>2])|0,_=(a=A[I+32>>2])+(r=A[I>>2])|0,v=w(r<<1&-2,1&(t<<1|r>>>31),a,0),r=y+(r>>>0>_>>>0?h+1|0:h)|0,_=(t=_+v|0)>>>0>>0?r+1|0:r,v=(hA=G(t^A[I+96>>2],_^A[I+100>>2],32))+(r=A[(h=HA=I- -64|0)>>2])|0,b=(i0=y)+(h=A[h+4>>2])|0,vA=w(hA,0,r<<1&-2,1&(h<<1|r>>>31)),r=y+(r>>>0>v>>>0?b+1|0:b)|0,b=G(a^(h=vA+v|0),J^(vA=h>>>0>>0?r+1|0:r),40),v=1+(r=_+(u=y)|0)|0,a=r,a=(r=t+b|0)>>>0>>0?v:a,t=r+(_=w(b,0,t<<1&-2,1&(_<<1|t>>>31)))|0,r=y+a|0,a=1+(r=(YA=t>>>0<_>>>0?r+1|0:r)+$|0)|0,_=r,_=(r=t+M|0)>>>0>>0?a:_,a=r+(v=w(M,0,t<<1&-2,1&(YA<<1|t>>>31)))|0,r=y+_|0,Q=G(a^l,(sA=a>>>0>>0?r+1|0:r)^Q,32),wA=y,v=(x=A[I+52>>2])+(r=A[I+20>>2])|0,J=($=A[I+48>>2])+(_=A[I+16>>2])|0,_A=w(_<<1&-2,1&(r<<1|_>>>31),$,0),_=y+(_>>>0>J>>>0?v+1|0:v)|0,J=(r=J+_A|0)>>>0<_A>>>0?_+1|0:_,iA=(_A=G(r^A[I+112>>2],J^A[I+116>>2],32))+(v=A[I+80>>2])|0,fA=(FA=y)+(_=A[I+84>>2])|0,q=w(_A,0,v<<1&-2,1&(_<<1|v>>>31)),v=y+(v>>>0>iA>>>0?fA+1|0:fA)|0,$=G($^(_=q+iA|0),x^(iA=_>>>0>>0?v+1|0:v),40),q=1+(v=J+(x=y)|0)|0,fA=v,fA=(v=r+$|0)>>>0>>0?q:fA,r=w($,0,r<<1&-2,1&(J<<1|r>>>31)),J=y+fA|0,J=G(q=(v=r+v|0)^_A,FA^(_A=r>>>0>v>>>0?J+1|0:J),48),q=1+(r=iA+(FA=y)|0)|0,fA=r,fA=(r=_+J|0)>>>0<_>>>0?q:fA,_=w(J,0,_<<1&-2,1&(iA<<1|_>>>31)),iA=y+fA|0,q=1+(_=(iA=(r=_+r|0)>>>0<_>>>0?iA+1|0:iA)+wA|0)|0,fA=_,fA=(_=r+Q|0)>>>0>>0?q:fA,g0=M^(_=(q=w(Q,0,r<<1&-2,1&(iA<<1|r>>>31)))+_|0),M=y+fA|0,M=G(g0,H^(fA=_>>>0>>0?M+1|0:M),40),cA=1+(q=sA+(H=y)|0)|0,g0=q,g0=(q=a+M|0)>>>0>>0?cA:g0,a=(sA=w(M,0,a<<1&-2,1&(sA<<1|a>>>31)))+q|0,A[I>>2]=a,q=y+g0|0,sA=a>>>0>>0?q+1|0:q,A[I+4>>2]=sA,a=G(a^Q,sA^wA,48),A[I+120>>2]=a,Q=y,A[I+124>>2]=Q,g0=1+(Q=Q+fA|0)|0,q=Q,sA=(Q=a+_|0)>>>0<_>>>0?g0:q,a=(_=w(a,0,_<<1&-2,1&(fA<<1|_>>>31)))+Q|0,A[I+80>>2]=a,Q=y+sA|0,_=a>>>0<_>>>0?Q+1|0:Q,A[I+84>>2]=_,XA=I,A0=G(a^M,_^H,1),A[XA+40>>2]=A0,A[I+44>>2]=y,a=G(r^$,x^iA,1),Q=1+(r=EA+($=y)|0)|0,_=r,_=(r=a+n|0)>>>0>>0?Q:_,r=r+(M=w(a,0,n<<1&-2,1&(EA<<1|n>>>31)))|0,n=y+_|0,_=G(t^hA,YA^i0,48),n=G(_^r,(M=r>>>0>>0?n+1|0:n)^(EA=y),32),hA=Q=y,x=1+(t=uA+K|0)|0,K=t,YA=(t=o+l|0)>>>0>>0?x:K,o=w(l,0,o<<1&-2,1&(uA<<1|o>>>31)),l=y+YA|0,K=1+(o=(l=(t=o+t|0)>>>0>>0?l+1|0:l)+Q|0)|0,Q=o,Q=(o=t+n|0)>>>0>>0?K:Q,K=a^(o=(uA=w(n,0,t<<1&-2,1&(l<<1|t>>>31)))+o|0),a=y+Q|0,a=G(K,$^(Q=o>>>0>>0?a+1|0:a),40),x=1+(uA=M+($=y)|0)|0,K=uA,YA=(uA=r+a|0)>>>0>>0?x:K,K=n^(r=(M=w(a,0,r<<1&-2,1&(M<<1|r>>>31)))+uA|0),n=y+YA|0,n=G(K,hA^(M=r>>>0>>0?n+1|0:n),48),A[I+96>>2]=n,uA=y,A[I+100>>2]=uA,A[I+8>>2]=r,A[I+12>>2]=M,x=1+(r=Q+uA|0)|0,K=r,M=(r=o+n|0)>>>0>>0?x:K,o=w(n,0,o<<1&-2,1&(Q<<1|o>>>31)),n=y+M|0,XA=I,A0=G((r=o+r|0)^a,$^(o=r>>>0>>0?n+1|0:n),1),A[XA+48>>2]=A0,A[I+52>>2]=y,A[I+88>>2]=r,A[I+92>>2]=o,n=G(t^V,l^VA,1),o=1+(t=_A+(V=y)|0)|0,r=t,o=(t=n+v|0)>>>0>>0?o:r,r=t+(a=w(n,0,v<<1&-2,1&(_A<<1|v>>>31)))|0,t=y+o|0,a=G(r^p,c0^(v=r>>>0>>0?t+1|0:t),32),l=o=y,Q=1+(t=vA+EA|0)|0,o=t,p=(t=h+_|0)>>>0>>0?Q:o,h=w(_,0,h<<1&-2,1&(vA<<1|h>>>31)),o=y+p|0,Q=1+(o=l+(h=(t=h+t|0)>>>0>>0?o+1|0:o)|0)|0,_=o,_=(o=t+a|0)>>>0>>0?Q:_,Q=n^(o=o+(p=w(a,0,t<<1&-2,1&(h<<1|t>>>31)))|0),n=y+_|0,n=G(Q,V^(_=o>>>0

>>0?n+1|0:n),40),K=1+(p=v+(V=y)|0)|0,Q=p,M=(p=r+n|0)>>>0>>0?K:Q,r=(v=w(n,0,r<<1&-2,1&(v<<1|r>>>31)))+p|0,A[I+16>>2]=r,p=y+M|0,v=r>>>0>>0?p+1|0:p,A[I+20>>2]=v,r=G(r^a,v^l,48),A[I+104>>2]=r,a=y,A[I+108>>2]=a,Q=1+(a=a+_|0)|0,l=a,v=(a=r+o|0)>>>0>>0?Q:l,o=(r=w(r,0,o<<1&-2,1&(_<<1|o>>>31)))+a|0,a=y+v|0,v=r=r>>>0>o>>>0?a+1|0:a,A[HA>>2]=o,A[HA+4>>2]=r,r=(h=G(t^b,h^u,1))+z|0,a=(l=y)+aA|0,t=(_=w(z<<1&-2,1&(aA<<1|z>>>31),h,0))+r|0,r=y+(r>>>0>>0?a+1|0:a)|0,a=G(t^J,FA^(_=t>>>0<_>>>0?r+1|0:r),32),p=1+(r=$A+(z=y)|0)|0,Q=r,p=(r=a+B|0)>>>0>>0?p:Q,Q=h^(r=(B=w(a,0,B<<1&-2,1&($A<<1|B>>>31)))+r|0),h=y+p|0,B=G(Q,l^(h=r>>>0>>0?h+1|0:h),40),b=1+(p=_+(l=y)|0)|0,Q=p,M=(p=t+B|0)>>>0>>0?b:Q,Q=a^(_=(t=w(B,0,t<<1&-2,1&(_<<1|t>>>31)))+p|0),a=y+M|0,t=G(Q,z^(a=t>>>0>_>>>0?a+1|0:a),48),b=1+(p=h+(z=y)|0)|0,Q=p,M=(p=t+r|0)>>>0>>0?b:Q,r=(h=w(t,0,r<<1&-2,1&(h<<1|r>>>31)))+p|0,A[I+72>>2]=r,p=y+M|0,h=r>>>0>>0?p+1|0:p,A[I+76>>2]=h,A[I+112>>2]=t,A[I+116>>2]=z,A[I+24>>2]=_,A[I+28>>2]=a,XA=I,A0=G(o^n,v^V,1),A[XA+56>>2]=A0,A[I+60>>2]=y,XA=I,A0=G(r^B,h^l,1),A[XA+32>>2]=A0,A[I+36>>2]=y,(0|(s=s+1|0))!=8;);for(;r=(o=A[392+(I=(e+3072|0)+(D<<4)|0)>>2])+(t=A[I+136>>2])|0,n=(_=A[I+396>>2])+(s=A[I+140>>2])|0,B=w(t<<1&-2,1&(s<<1|t>>>31),o,0),t=y+(t>>>0>r>>>0?n+1|0:n)|0,n=(s=B+r|0)>>>0>>0?t+1|0:t,h=(B=G(s^A[I+904>>2],n^A[I+908>>2],32))+(t=A[I+648>>2])|0,a=(V=y)+(r=A[I+652>>2])|0,v=w(B,0,t<<1&-2,1&(r<<1|t>>>31)),t=y+(t>>>0>h>>>0?a+1|0:a)|0,z=G(o^(r=v+h|0),_^(J=r>>>0>>0?t+1|0:t),40),_=1+(t=n+(iA=y)|0)|0,o=t,o=(t=s+z|0)>>>0>>0?_:o,v=(s=w(z,0,s<<1&-2,1&(n<<1|s>>>31)))+t|0,t=y+o|0,V=G(v^B,V^(uA=s>>>0>v>>>0?t+1|0:t),48),fA=b=y,o=(l=A[I+268>>2])+(s=A[I+12>>2])|0,B=(n=A[I+264>>2])+(t=A[I+8>>2])|0,h=w(t<<1&-2,1&(s<<1|t>>>31),n,0),t=y+(t>>>0>B>>>0?o+1|0:o)|0,h=(s=B+h|0)>>>0>>0?t+1|0:t,B=(a=G(s^A[I+776>>2],h^A[I+780>>2],32))+(o=A[I+520>>2])|0,_=(p=y)+(t=A[I+524>>2])|0,M=w(a,0,o<<1&-2,1&(t<<1|o>>>31)),o=y+(o>>>0>B>>>0?_+1|0:_)|0,B=G(Q=n^(t=M+B|0),l^(n=t>>>0>>0?o+1|0:o),40),Q=1+(o=h+(_=y)|0)|0,l=o,l=(o=s+B|0)>>>0>>0?Q:l,s=w(B,0,s<<1&-2,1&(h<<1|s>>>31)),h=y+l|0,l=G((o=s+o|0)^a,p^(aA=o>>>0>>0?h+1|0:h),48),p=1+(s=n+(VA=y)|0)|0,Q=s,h=(s=t+l|0)>>>0>>0?p:Q,n=s+(t=w(l,0,t<<1&-2,1&(n<<1|t>>>31)))|0,s=y+h|0,p=G(B^n,_^(EA=t>>>0>n>>>0?s+1|0:s),1),K=Q=y,B=($=A[I+260>>2])+(s=A[I+4>>2])|0,a=(h=A[I+256>>2])+(t=A[I>>2])|0,_=w(t<<1&-2,1&(s<<1|t>>>31),h,0),t=y+(t>>>0>a>>>0?B+1|0:B)|0,a=(s=a+_|0)>>>0<_>>>0?t+1|0:t,_=($A=G(s^A[I+768>>2],a^A[I+772>>2],32))+(t=A[I+512>>2])|0,M=(c0=y)+(B=A[I+516>>2])|0,hA=w($A,0,t<<1&-2,1&(B<<1|t>>>31)),t=y+(t>>>0>_>>>0?M+1|0:M)|0,M=G(h^(B=hA+_|0),$^(hA=B>>>0>>0?t+1|0:t),40),h=1+(t=a+(H=y)|0)|0,_=t,h=(t=s+M|0)>>>0>>0?h:_,s=t+(a=w(M,0,s<<1&-2,1&(a<<1|s>>>31)))|0,t=y+h|0,Q=1+(t=(HA=s>>>0>>0?t+1|0:t)+Q|0)|0,_=t,a=(t=s+p|0)>>>0>>0?Q:_,h=t+(_=w(p,0,s<<1&-2,1&(HA<<1|s>>>31)))|0,t=y+a|0,b=G(h^V,(vA=h>>>0<_>>>0?t+1|0:t)^b,32),YA=y,_=(i0=A[I+388>>2])+(t=A[I+132>>2])|0,$=(Q=A[I+384>>2])+(a=A[I+128>>2])|0,sA=w(a<<1&-2,1&(t<<1|a>>>31),Q,0),a=y+(a>>>0>$>>>0?_+1|0:_)|0,$=(t=$+sA|0)>>>0>>0?a+1|0:a,wA=(sA=G(t^A[I+896>>2],$^A[I+900>>2],32))+(_=A[I+640>>2])|0,_A=(u=y)+(a=A[I+644>>2])|0,x=w(sA,0,_<<1&-2,1&(a<<1|_>>>31)),_=y+(_>>>0>wA>>>0?_A+1|0:_A)|0,Q=G(Q^(a=x+wA|0),i0^(wA=a>>>0>>0?_+1|0:_),40),q=1+(_=$+(i0=y)|0)|0,x=_,_A=(_=t+Q|0)>>>0>>0?q:x,t=w(Q,0,t<<1&-2,1&($<<1|t>>>31)),$=y+_A|0,$=G(x=(_=t+_|0)^sA,u^(sA=t>>>0>_>>>0?$+1|0:$),48),q=1+(t=wA+(u=y)|0)|0,x=t,_A=(t=a+$|0)>>>0>>0?q:x,a=w($,0,a<<1&-2,1&(wA<<1|a>>>31)),wA=y+_A|0,q=1+(a=(wA=(t=a+t|0)>>>0>>0?wA+1|0:wA)+YA|0)|0,x=a,_A=(a=t+b|0)>>>0>>0?q:x,q=p^(a=(x=w(b,0,t<<1&-2,1&(wA<<1|t>>>31)))+a|0),p=y+_A|0,p=G(q,K^(_A=a>>>0>>0?p+1|0:p),40),g0=1+(x=vA+(K=y)|0)|0,q=x,FA=(x=h+p|0)>>>0>>0?g0:q,h=(vA=w(p,0,h<<1&-2,1&(vA<<1|h>>>31)))+x|0,A[I>>2]=h,x=y+FA|0,vA=h>>>0>>0?x+1|0:x,A[I+4>>2]=vA,h=G(h^b,vA^YA,48),A[I+904>>2]=h,b=y,A[I+908>>2]=b,q=1+(b=b+_A|0)|0,x=b,vA=(b=a+h|0)>>>0>>0?q:x,h=(a=w(h,0,a<<1&-2,1&(_A<<1|a>>>31)))+b|0,A[I+640>>2]=h,b=y+vA|0,a=a>>>0>h>>>0?b+1|0:b,A[I+644>>2]=a,XA=I,A0=G(h^p,a^K,1),A[XA+264>>2]=A0,A[I+268>>2]=y,h=G(t^Q,wA^i0,1),b=1+(t=aA+(Q=y)|0)|0,p=t,a=(t=o+h|0)>>>0>>0?b:p,t=t+(p=w(h,0,o<<1&-2,1&(aA<<1|o>>>31)))|0,o=y+a|0,a=G(s^$A,HA^c0,48),o=G(a^t,(p=t>>>0

>>0?o+1|0:o)^(aA=y),32),$A=b=y,x=1+(s=J+fA|0)|0,K=s,HA=(s=r+V|0)>>>0>>0?x:K,r=w(V,0,r<<1&-2,1&(J<<1|r>>>31)),V=y+HA|0,K=1+(r=(V=r>>>0>(s=r+s|0)>>>0?V+1|0:V)+b|0)|0,b=r,b=(r=o+s|0)>>>0>>0?K:b,K=h^(r=(J=w(o,0,s<<1&-2,1&(V<<1|s>>>31)))+r|0),h=y+b|0,h=G(K,Q^(b=r>>>0>>0?h+1|0:h),40),x=1+(J=p+(Q=y)|0)|0,K=J,HA=(J=t+h|0)>>>0>>0?x:K,K=o^(t=(p=w(h,0,t<<1&-2,1&(p<<1|t>>>31)))+J|0),o=y+HA|0,o=G(K,$A^(p=t>>>0

>>0?o+1|0:o),48),A[I+768>>2]=o,J=y,A[I+772>>2]=J,A[I+8>>2]=t,A[I+12>>2]=p,K=1+(t=b+J|0)|0,p=t,p=(t=r+o|0)>>>0>>0?K:p,r=w(o,0,r<<1&-2,1&(b<<1|r>>>31)),o=y+p|0,XA=I,A0=G((t=r+t|0)^h,Q^(r=t>>>0>>0?o+1|0:o),1),A[XA+384>>2]=A0,A[I+388>>2]=y,A[I+648>>2]=t,A[I+652>>2]=r,o=G(s^z,V^iA,1),r=1+(s=sA+(z=y)|0)|0,t=s,r=(s=o+_|0)>>>0<_>>>0?r:t,t=s+(h=w(o,0,_<<1&-2,1&(sA<<1|_>>>31)))|0,s=y+r|0,h=G(t^l,VA^(_=t>>>0>>0?s+1|0:s),32),V=r=y,l=1+(s=hA+aA|0)|0,r=s,l=(s=a+B|0)>>>0>>0?l:r,B=w(a,0,B<<1&-2,1&(hA<<1|B>>>31)),r=y+l|0,Q=1+(r=V+(B=(s=B+s|0)>>>0>>0?r+1|0:r)|0)|0,l=r,a=(r=s+h|0)>>>0>>0?Q:l,Q=o^(r=r+(l=w(h,0,s<<1&-2,1&(B<<1|s>>>31)))|0),o=y+a|0,o=G(Q,z^(a=r>>>0>>0?o+1|0:o),40),p=1+(l=_+(z=y)|0)|0,Q=l,p=(l=t+o|0)>>>0>>0?p:Q,t=(_=w(o,0,t<<1&-2,1&(_<<1|t>>>31)))+l|0,A[I+128>>2]=t,l=y+p|0,_=t>>>0<_>>>0?l+1|0:l,A[I+132>>2]=_,t=G(t^h,_^V,48),A[I+776>>2]=t,h=y,A[I+780>>2]=h,l=1+(h=a+h|0)|0,_=h,_=(h=t+r|0)>>>0>>0?l:_,r=(t=w(t,0,r<<1&-2,1&(a<<1|r>>>31)))+h|0,h=y+_|0,_=t=t>>>0>r>>>0?h+1|0:h,A[I+512>>2]=r,A[I+516>>2]=t,t=(B=G(s^M,B^H,1))+v|0,h=(V=y)+uA|0,s=(a=w(v<<1&-2,1&(uA<<1|v>>>31),B,0))+t|0,t=y+(t>>>0>>0?h+1|0:h)|0,h=G(s^$,u^(a=s>>>0>>0?t+1|0:t),32),Q=1+(t=EA+(v=y)|0)|0,l=t,l=(t=h+n|0)>>>0>>0?Q:l,Q=B^(t=(n=w(h,0,n<<1&-2,1&(EA<<1|n>>>31)))+t|0),B=y+l|0,n=G(Q,V^(B=t>>>0>>0?B+1|0:B),40),p=1+(l=a+(V=y)|0)|0,Q=l,p=(l=s+n|0)>>>0>>0?p:Q,l=h^(a=(s=w(n,0,s<<1&-2,1&(a<<1|s>>>31)))+l|0),h=y+p|0,s=G(l,v^(h=s>>>0>a>>>0?h+1|0:h),48),p=1+(l=B+(v=y)|0)|0,Q=l,p=(l=t+s|0)>>>0>>0?p:Q,t=(B=w(s,0,t<<1&-2,1&(B<<1|t>>>31)))+l|0,A[I+520>>2]=t,l=y+p|0,B=t>>>0>>0?l+1|0:l,A[I+524>>2]=B,A[I+896>>2]=s,A[I+900>>2]=v,A[I+136>>2]=a,A[I+140>>2]=h,XA=I,A0=G(r^o,_^z,1),A[XA+392>>2]=A0,A[I+396>>2]=y,XA=I,A0=G(t^n,B^V,1),A[XA+256>>2]=A0,A[I+260>>2]=y,(0|(D=D+1|0))!=8;);for(I=P0(MA,e+2048|0,1024),s=0;o=A[(t=(D=s<<3)+I|0)>>2],B=A[(n=(r=e+3072|0)+D|0)>>2],n=A[t+4>>2]^A[n+4>>2],A[t>>2]=o^B,A[t+4>>2]=n,n=A[(t=(o=8|D)+I|0)>>2],B=A[(o=r+o|0)>>2],o=A[t+4>>2]^A[o+4>>2],A[t>>2]=n^B,A[t+4>>2]=o,n=A[(t=(o=16|D)+I|0)>>2],B=A[(o=r+o|0)>>2],o=A[t+4>>2]^A[o+4>>2],A[t>>2]=n^B,A[t+4>>2]=o,o=A[(D=(t=24|D)+I|0)>>2],r=A[(t=t+r|0)>>2],t=A[D+4>>2]^A[t+4>>2],A[D>>2]=r^o,A[D+4>>2]=t,(0|(s=s+4|0))!=128;);}if(s=h0+1|0,mA=mA+1|0,!((D=A[C+20>>2])>>>0>(nA=nA+1|0)>>>0))break}}W=e+4096|0}function d1(C){var g,e,t,r,o,I,a,_,s,h,n,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0;l=(_A=i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24)>>>5&2097151,p=w(g=(i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24)>>>3|0,0,-683901,-1),Q=(B=i[C+44|0])<<16&2031616|i[C+42|0]|i[C+43|0]<<8,B=y,M=B=Q>>>0>(q=p+Q|0)>>>0?B+1|0:B,J=B=B-((q>>>0<4293918720)-1|0)|0,p=B>>21,B=(Q=l)+(l=(2097151&B)<<11|(D=q- -1048576|0)>>>21)|0,Q=p,wA=Q=B>>>0>>0?Q+1|0:Q,$A=B,K=w(B,Q,-683901,-1),x=y,b=w(e=(i[C+49|0]|i[C+50|0]<<8|i[C+51|0]<<16|i[C+52|0]<<24)>>>7&2097151,0,-997805,-1),p=(B=i[C+27|0])>>>24|0,l=B<<8|(z=i[C+23|0]|i[C+24|0]<<8|i[C+25|0]<<16|i[C+26|0]<<24)>>>24,Q=(B=i[C+28|0])>>>16|0,Q=2097151&((3&(Q|=p))<<30|(B=l|B<<16)>>>2),B=y,B=Q>>>0>(p=Q+b|0)>>>0?B+1|0:B,Q=w(YA=(V=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24)>>>4&2097151,0,654183,0),B=y+B|0,b=p=Q+p|0,p=Q>>>0>p>>>0?B+1|0:B,v=(Q=i[C+48|0])<<8|_A>>>24,Q=B=Q>>>24|0,B=w(t=2097151&((3&(_A=(B=(l=i[C+49|0])>>>16|0)|Q))<<30|(Q=(l<<=16)|v)>>>2),0,136657,0),p=y+p|0,p=B>>>0>(Q=B+b|0)>>>0?p+1|0:p,l=(B=w(r=(i[C+57|0]|i[C+58|0]<<8|i[C+59|0]<<16|i[C+60|0]<<24)>>>6&2097151,0,666643,0))+Q|0,Q=y+p|0,b=l,p=B>>>0>l>>>0?Q+1|0:Q,Q=(B=i[C+56|0])>>>24|0,v=B<<8|V>>>24,Q=w(o=2097151&((1&(V=(B=(l=i[C+57|0])>>>16|0)|Q))<<31|(Q=(l<<=16)|v)>>>1),0,470296,0),B=y+p|0,Q=(B=(p=l=Q+b|0)>>>0>>0?B+1|0:B)+x|0,Q=p>>>0>(l=p+K|0)>>>0?Q+1|0:Q,sA=p- -1048576|0,iA=p=B-((p>>>0<4293918720)-1|0)|0,x=l-(B=-2097152&sA)|0,K=Q-((B>>>0>l>>>0)+p|0)|0,Q=w(e,0,654183,0),B=y,B=Q>>>0>(p=Q+(z>>>5&2097151)|0)>>>0?B+1|0:B,l=(Q=p)+(p=w(YA,0,470296,0))|0,Q=y+B|0,Q=p>>>0>l>>>0?Q+1|0:Q,B=w(t,g0,-997805,-1),Q=y+Q|0,Q=B>>>0>(p=B+l|0)>>>0?Q+1|0:Q,l=(B=p)+(p=w(o,i0,666643,0))|0,B=y+Q|0,v=l,l=p>>>0>l>>>0?B+1|0:B,b=(p=w(e,0,470296,0))+(B=(B=i[C+23|0])<<16&2031616|i[C+21|0]|i[C+22|0]<<8)|0,p=y,p=B>>>0>b>>>0?p+1|0:p,b=(Q=w(YA,0,666643,0))+b|0,B=y+p|0,p=w(t,g0,654183,0),Q=y+(Q>>>0>b>>>0?B+1|0:B)|0,V=Q=p>>>0>(z=p+b|0)>>>0?Q+1|0:Q,EA=Q=Q-((z>>>0<4293918720)-1|0)|0,B=(B=Q>>>21|0)+l|0,p=B=(Q=(2097151&Q)<<11|(b=z- -1048576|0)>>>21)>>>0>(v=Q+v|0)>>>0?B+1|0:B,$=Q=B-((v>>>0<4293918720)-1|0)|0,B=x,x=(2097151&Q)<<11|(l=v- -1048576|0)>>>21,Q=(Q>>21)+K|0,_A=x=(Q=x>>>0>(nA=B+x|0)>>>0?Q+1|0:Q)-((nA>>>0<4293918720)-1|0)|0,qA=nA-(B=-2097152&(K=nA- -1048576|0))|0,u=Q-((B>>>0>nA>>>0)+x|0)|0,B=w($A,wA,136657,0),p=y+p|0,p=B>>>0>(Q=B+v|0)>>>0?p+1|0:p,vA=Q-(B=-2097152&l)|0,fA=p-((B>>>0>Q>>>0)+$|0)|0,nA=q-(B=-2097152&D)|0,J=M-((B>>>0>q>>>0)+J|0)|0,M=w(g,0,136657,0),Q=(B=i[C+40|0])>>>24|0,l=B<<8|(D=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24)>>>24,p=(B=i[C+41|0])>>>16|0,Q=(p|=Q)>>>3|0,p=(7&p)<<29|(B=l|B<<16)>>>3,B=Q+y|0,B=p>>>0>(l=p+M|0)>>>0?B+1|0:B,Q=w(r,0,-683901,-1),B=y+B|0,B=Q>>>0>(p=Q+l|0)>>>0?B+1|0:B,v=p,Q=w(g,0,-997805,-1),p=y,p=Q>>>0>(l=Q+(D>>>6&2097151)|0)>>>0?p+1|0:p,D=(Q=l)+(l=w(r,0,136657,0))|0,Q=y+p|0,p=w(o,i0,-683901,-1),Q=y+(l>>>0>D>>>0?Q+1|0:Q)|0,x=Q=p>>>0>(hA=p+D|0)>>>0?Q+1|0:Q,d=p=Q-((hA>>>0<4293918720)-1|0)|0,B=B+(Q=p>>21)|0,D=B=(p=(2097151&p)<<11|(q=hA- -1048576|0)>>>21)>>>0>($=p+v|0)>>>0?B+1|0:B,mA=B=B-(($>>>0<4293918720)-1|0)|0,Q=(Q=B>>21)+J|0,aA=Q=(B=(p=(2097151&B)<<11|(v=$- -1048576|0)>>>21)+nA|0)>>>0

>>0?Q+1|0:Q,HA=B,Q=w(B,Q,-683901,-1),B=y+fA|0,uA=p=Q+vA|0,l=Q>>>0>p>>>0?B+1|0:B,nA=z-(B=-2097152&b)|0,J=V-((4095&EA)+(B>>>0>z>>>0)|0)|0,z=w(e,0,666643,0),B=(Q=i[C+19|0])>>>24|0,b=Q<<8|(V=i[C+15|0]|i[C+16|0]<<8|i[C+17|0]<<16|i[C+18|0]<<24)>>>24,p=B,Q=(7&(p|=Q=(B=i[C+20|0])>>>16|0))<<29|(Q=(B<<=16)|b)>>>3,p=y+(p>>>3|0)|0,p=Q>>>0>(b=Q+z|0)>>>0?p+1|0:p,B=w(t,g0,470296,0),Q=y+p|0,B=B>>>0>(b=B+b|0)>>>0?Q+1|0:Q,p=w(t,g0,666643,0),Q=y,z=Q=p>>>0>(vA=p+(V>>>6&2097151)|0)>>>0?Q+1|0:Q,H=p=Q-((vA>>>0<4293918720)-1|0)|0,B=B+(Q=p>>>21|0)|0,V=B=(p=(2097151&p)<<11|(M=vA- -1048576|0)>>>21)>>>0>(fA=p+b|0)>>>0?B+1|0:B,FA=B=B-((fA>>>0<4293918720)-1|0)|0,Q=(Q=B>>>21|0)+J|0,Q=(B=(2097151&B)<<11|(b=fA- -1048576|0)>>>21)>>>0>(p=B+nA|0)>>>0?Q+1|0:Q,J=(B=p)+(p=w($A,wA,-997805,-1))|0,B=y+Q|0,B=p>>>0>J>>>0?B+1|0:B,EA=Q=$-(p=-2097152&v)|0,I=v=D-((p>>>0>$>>>0)+mA|0)|0,p=w(HA,aA,136657,0),B=y+B|0,B=p>>>0>(D=p+J|0)>>>0?B+1|0:B,p=w(Q,v,-683901,-1),Q=y+B|0,D=Q=p>>>0>(J=p+D|0)>>>0?Q+1|0:Q,mA=B=Q-((J>>>0<4293918720)-1|0)|0,Q=(2097151&B)<<11|(v=J- -1048576|0)>>>21,B=(B>>21)+l|0,uA=Q=(B=Q>>>0>($=Q+uA|0)>>>0?B+1|0:B)-(($>>>0<4293918720)-1|0)|0,nA=(2097151&Q)<<11|(l=$- -1048576|0)>>>21,Q=(Q>>21)+u|0,_=qA=nA+qA|0,nA=nA>>>0>qA>>>0?Q+1|0:Q,s=$-(Q=-2097152&l)|0,h=B-((Q>>>0>$>>>0)+uA|0)|0,qA=J-(B=-2097152&v)|0,u=D-((B>>>0>J>>>0)+mA|0)|0,p=(B=w($A,wA,654183,0))+(fA-(Q=-2097152&b)|0)|0,Q=y+(V-((2147483647&FA)+(Q>>>0>fA>>>0)|0)|0)|0,Q=B>>>0>p>>>0?Q+1|0:Q,B=w(HA,aA,-997805,-1),Q=y+Q|0,Q=B>>>0>(p=B+p|0)>>>0?Q+1|0:Q,l=(B=p)+(p=w(EA,I,136657,0))|0,B=y+Q|0,uA=l,D=p>>>0>l>>>0?B+1|0:B,fA=hA-(B=-2097152&q)|0,$=x-((B>>>0>hA>>>0)+d|0)|0,V=w(YA,0,-683901,-1),B=(Q=i[C+35|0])>>>24|0,l=Q<<8|(b=i[C+31|0]|i[C+32|0]<<8|i[C+33|0]<<16|i[C+34|0]<<24)>>>24,p=B,Q=(B=i[C+36|0])>>>16|0,Q|=p,p=y,p=(B=2097151&((1&Q)<<31|(B=B<<16|l)>>>1))>>>0>(Q=B+V|0)>>>0?p+1|0:p,l=(B=w(g,0,654183,0))+Q|0,Q=y+p|0,Q=B>>>0>l>>>0?Q+1|0:Q,p=w(r,0,-997805,-1),B=y+Q|0,B=p>>>0>(l=p+l|0)>>>0?B+1|0:B,Q=w(o,i0,136657,0),B=y+B|0,v=p=Q+l|0,l=Q>>>0>p>>>0?B+1|0:B,B=w(e,0,-683901,-1),Q=y,Q=B>>>0>(p=B+(b>>>4&2097151)|0)>>>0?Q+1|0:Q,b=(B=w(YA,0,136657,0))+p|0,p=y+Q|0,p=B>>>0>b>>>0?p+1|0:p,B=w(g,0,470296,0),Q=y+p|0,Q=B>>>0>(b=B+b|0)>>>0?Q+1|0:Q,b=(p=w(r,0,654183,0))+b|0,B=y+Q|0,Q=w(o,i0,-997805,-1),B=y+(p>>>0>b>>>0?B+1|0:B)|0,V=B=Q>>>0>(x=Q+b|0)>>>0?B+1|0:B,n=Q=B-((x>>>0<4293918720)-1|0)|0,p=(B=Q>>21)+l|0,J=Q=(p=(Q=(2097151&Q)<<11|(b=x- -1048576|0)>>>21)>>>0>(q=Q+v|0)>>>0?p+1|0:p)-((q>>>0<4293918720)-1|0)|0,B=(B=Q>>21)+$|0,mA=B=(Q=(l=(2097151&Q)<<11|(v=q- -1048576|0)>>>21)+fA|0)>>>0>>0?B+1|0:B,l=uA,uA=Q,B=w(Q,B,-683901,-1),Q=y+D|0,$=l=l+B|0,l=B>>>0>l>>>0?Q+1|0:Q,D=(B=w($A,wA,470296,0))+(vA-(Q=-2097152&M)|0)|0,Q=y+(z-((2047&H)+(Q>>>0>vA>>>0)|0)|0)|0,Q=B>>>0>D>>>0?Q+1|0:Q,M=(B=D)+(D=w(HA,aA,654183,0))|0,B=y+Q|0,B=D>>>0>M>>>0?B+1|0:B,D=w(EA,I,-997805,-1),Q=y+B|0,Q=D>>>0>(M=D+M|0)>>>0?Q+1|0:Q,hA=v=q-(B=-2097152&v)|0,a=D=p-((B>>>0>q>>>0)+J|0)|0,p=w(uA,mA,136657,0),B=y+Q|0,B=p>>>0>(M=p+M|0)>>>0?B+1|0:B,p=w(v,D,-683901,-1),Q=y+B|0,D=Q=p>>>0>(z=p+M|0)>>>0?Q+1|0:Q,fA=B=Q-((z>>>0<4293918720)-1|0)|0,Q=(2097151&B)<<11|(v=z- -1048576|0)>>>21,B=(B>>21)+l|0,$=Q=(B=Q>>>0>(M=Q+$|0)>>>0?B+1|0:B)-((M>>>0<4293918720)-1|0)|0,q=(2097151&Q)<<11|(l=M- -1048576|0)>>>21,Q=(Q>>21)+u|0,d=J=q+qA|0,J=q>>>0>J>>>0?Q+1|0:Q,H=M-(Q=-2097152&l)|0,FA=B-((Q>>>0>M>>>0)+$|0)|0,qA=z-(B=-2097152&v)|0,u=D-((B>>>0>z>>>0)+fA|0)|0,D=w($A,wA,666643,0),B=(Q=i[C+14|0])>>>24|0,l=Q<<8|($=i[C+10|0]|i[C+11|0]<<8|i[C+12|0]<<16|i[C+13|0]<<24)>>>24,p=B,Q=(B=i[C+15|0])>>>16|0,Q|=p,p=y,p=(B=2097151&((1&Q)<<31|(B=B<<16|l)>>>1))>>>0>(Q=B+D|0)>>>0?p+1|0:p,l=(B=Q)+(Q=w(HA,aA,470296,0))|0,B=y+p|0,B=Q>>>0>l>>>0?B+1|0:B,Q=w(EA,I,654183,0),B=y+B|0,B=Q>>>0>(p=Q+l|0)>>>0?B+1|0:B,l=(Q=p)+(p=w(uA,mA,-997805,-1))|0,Q=y+B|0,Q=p>>>0>l>>>0?Q+1|0:Q,B=w(hA,a,136657,0),Q=y+Q|0,z=p=B+l|0,l=B>>>0>p>>>0?Q+1|0:Q,b=x-(B=-2097152&b)|0,D=V-((B>>>0>x>>>0)+n|0)|0,p=w(e,0,136657,0),B=y,B=(Q=(i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24)>>>7&2097151)>>>0>(p=Q+p|0)>>>0?B+1|0:B,v=(Q=p)+(p=w(YA,0,-997805,-1))|0,Q=y+B|0,Q=p>>>0>v>>>0?Q+1|0:Q,B=w(t,g0,-683901,-1),Q=y+Q|0,Q=B>>>0>(p=B+v|0)>>>0?Q+1|0:Q,v=(B=w(g,0,666643,0))+p|0,p=y+Q|0,p=B>>>0>v>>>0?p+1|0:p,Q=w(r,0,470296,0),B=y+p|0,B=Q>>>0>(v=Q+v|0)>>>0?B+1|0:B,Q=w(o,i0,654183,0),B=y+B|0,Q=(iA>>21)+(Q>>>0>(p=Q+v|0)>>>0?B+1|0:B)|0,q=Q=(v=(2097151&iA)<<11|sA>>>21)>>>0>(sA=v+p|0)>>>0?Q+1|0:Q,iA=B=Q-((sA>>>0<4293918720)-1|0)|0,v=(2097151&B)<<11|(M=sA- -1048576|0)>>>21,B=(B>>21)+D|0,vA=B=(Q=v+b|0)>>>0>>0?B+1|0:B,fA=Q,Q=w(Q,B,-683901,-1),B=y+l|0,v=p=Q+z|0,l=Q>>>0>p>>>0?B+1|0:B,B=w(HA,aA,666643,0),Q=y,Q=B>>>0>(p=B+($>>>4&2097151)|0)>>>0?Q+1|0:Q,B=w(EA,I,470296,0),Q=y+Q|0,Q=B>>>0>(p=B+p|0)>>>0?Q+1|0:Q,D=(B=w(uA,mA,654183,0))+p|0,p=y+Q|0,p=B>>>0>D>>>0?p+1|0:p,Q=w(hA,a,-997805,-1),B=y+p|0,B=Q>>>0>(D=Q+D|0)>>>0?B+1|0:B,Q=w(fA,vA,136657,0),B=y+B|0,V=B=Q>>>0>(x=Q+D|0)>>>0?B+1|0:B,aA=Q=B-((x>>>0<4293918720)-1|0)|0,B=v,v=(2097151&Q)<<11|(b=x- -1048576|0)>>>21,Q=(Q>>21)+l|0,HA=l=(Q=(p=B+v|0)>>>0>>0?Q+1|0:Q)-((p>>>0<4293918720)-1|0)|0,B=(B=l>>21)+u|0,$A=v=(l=(2097151&l)<<11|(D=p- -1048576|0)>>>21)+qA|0,z=l>>>0>v>>>0?B+1|0:B,v=p,p=Q,l=(sA-(Q=-2097152&M)|0)+(M=(2097151&_A)<<11|K>>>21)|0,Q=(q-((Q>>>0>sA>>>0)+iA|0)|0)+(_A>>21)|0,$=Q=l>>>0>>0?Q+1|0:Q,YA=Q=Q-((l>>>0<4293918720)-1|0)|0,K=B=Q>>21,B=w(wA=(2097151&Q)<<11|(iA=l- -1048576|0)>>>21,B,-683901,-1),p=y+p|0,p=B>>>0>(Q=B+v|0)>>>0?p+1|0:p,g0=Q-(B=-2097152&D)|0,i0=p-((B>>>0>Q>>>0)+HA|0)|0,B=w(wA,K,136657,0),Q=V+y|0,HA=(p=B+x|0)-(B=-2097152&b)|0,sA=(Q=p>>>0>>0?Q+1|0:Q)-((B>>>0>p>>>0)+aA|0)|0,Q=w(EA,I,666643,0),p=y,p=(B=(i[C+7|0]|i[C+8|0]<<8|i[C+9|0]<<16|i[C+10|0]<<24)>>>7&2097151)>>>0>(Q=B+Q|0)>>>0?p+1|0:p,v=(B=w(uA,mA,470296,0))+Q|0,Q=y+p|0,Q=B>>>0>v>>>0?Q+1|0:Q,B=w(hA,a,654183,0),Q=y+Q|0,Q=B>>>0>(p=B+v|0)>>>0?Q+1|0:Q,v=(B=p)+(p=w(fA,vA,-997805,-1))|0,B=y+Q|0,M=v,v=p>>>0>v>>>0?B+1|0:B,V=w(uA,mA,666643,0),B=(Q=i[C+6|0])>>>24|0,D=Q<<8|(aA=i[C+2|0]|i[C+3|0]<<8|i[C+4|0]<<16|i[C+5|0]<<24)>>>24,p=B,Q=(B=i[C+7|0])>>>16|0,Q=2097151&((3&(Q|=p))<<30|(B=B<<16|D)>>>2),B=y,B=Q>>>0>(p=Q+V|0)>>>0?B+1|0:B,D=(Q=w(hA,a,470296,0))+p|0,p=y+B|0,p=Q>>>0>D>>>0?p+1|0:p,Q=w(fA,vA,654183,0),B=y+p|0,V=B=Q>>>0>(q=Q+D|0)>>>0?B+1|0:B,_A=B=B-((q>>>0<4293918720)-1|0)|0,Q=(p=B>>21)+v|0,x=B=(Q=(B=(2097151&B)<<11|(b=q- -1048576|0)>>>21)>>>0>(D=B+M|0)>>>0?Q+1|0:Q)-((D>>>0<4293918720)-1|0)|0,M=(2097151&B)<<11|(v=D- -1048576|0)>>>21,B=(B>>21)+sA|0,HA=uA=M+HA|0,M=M>>>0>uA>>>0?B+1|0:B,B=w(wA,K,-997805,-1),Q=y+Q|0,Q=B>>>0>(p=B+D|0)>>>0?Q+1|0:Q,EA=p-(B=-2097152&v)|0,mA=Q-((B>>>0>p>>>0)+x|0)|0,Q=w(wA,K,654183,0),B=V+y|0,uA=(p=Q+q|0)-(Q=-2097152&b)|0,sA=(B=p>>>0>>0?B+1|0:B)-((Q>>>0>p>>>0)+_A|0)|0,B=w(hA,a,666643,0),Q=y,Q=B>>>0>(p=B+(aA>>>5&2097151)|0)>>>0?Q+1|0:Q,B=w(fA,vA,470296,0),Q=y+Q|0,D=p=B+p|0,p=B>>>0>p>>>0?Q+1|0:Q,v=w(fA,vA,666643,0),Q=(B=i[C+2|0])<<16&2031616|i[0|C]|i[C+1|0]<<8,B=y,V=B=Q>>>0>(x=v+Q|0)>>>0?B+1|0:B,vA=B=B-((x>>>0<4293918720)-1|0)|0,v=(2097151&B)<<11|(b=x- -1048576|0)>>>21,B=(B>>21)+p|0,p=B=v>>>0>(q=v+D|0)>>>0?B+1|0:B,_A=B=B-((q>>>0<4293918720)-1|0)|0,v=(2097151&B)<<11|(D=q- -1048576|0)>>>21,B=(B>>21)+sA|0,v=v>>>0>(fA=v+uA|0)>>>0?B+1|0:B,B=w(wA,K,470296,0),p=p+y|0,p=(Q=B+q|0)>>>0>>0?p+1|0:p,q=Q-(B=-2097152&D)|0,D=p-((B>>>0>Q>>>0)+_A|0)|0,Q=w(wA,K,666643,0),B=y+(V-(((p=-2097152&b)>>>0>x>>>0)+vA|0)|0)|0,Q=(p=(B=Q>>>0>(sA=Q+(x-p|0)|0)>>>0?B+1|0:B)>>21)+D|0,B=(B=(Q=(B=(2097151&B)<<11|sA>>>21)>>>0>(_A=B+q|0)>>>0?Q+1|0:Q)>>21)+v|0,Q=(Q=(B=(Q=(2097151&Q)<<11|_A>>>21)>>>0>(K=Q+fA|0)>>>0?B+1|0:B)>>21)+mA|0,p=(B=(Q=(B=(2097151&B)<<11|K>>>21)>>>0>(v=B+EA|0)>>>0?Q+1|0:Q)>>21)+M|0,B=(Q=(p=(Q=(2097151&Q)<<11|v>>>21)>>>0>(x=Q+HA|0)>>>0?p+1|0:p)>>21)+i0|0,Q=(p=(B=(p=(2097151&p)<<11|x>>>21)>>>0>(q=p+g0|0)>>>0?B+1|0:B)>>21)+z|0,z=D=(B=(2097151&B)<<11|q>>>21)+$A|0,B=(B=(Q=B>>>0>D>>>0?Q+1|0:Q)>>21)+FA|0,Q=(Q=(B=(Q=(2097151&Q)<<11|D>>>21)>>>0>(M=Q+H|0)>>>0?B+1|0:B)>>21)+J|0,p=(B=(Q=(B=(2097151&B)<<11|M>>>21)>>>0>(V=B+d|0)>>>0?Q+1|0:Q)>>21)+h|0,B=(Q=(p=(Q=(2097151&Q)<<11|V>>>21)>>>0>(b=Q+s|0)>>>0?p+1|0:p)>>21)+nA|0,iA=(J=l-(Q=-2097152&iA)|0)+((2097151&(B=(p=(2097151&p)<<11|b>>>21)>>>0>(D=p+_|0)>>>0?B+1|0:B))<<11|D>>>21)|0,B=($-((Q>>>0>l>>>0)+YA|0)|0)+(B>>21)|0,$=Q=(B=J>>>0>iA>>>0?B+1|0:B)>>21,sA=(B=w(nA=(2097151&B)<<11|iA>>>21,Q,666643,0))+(Q=2097151&sA)|0,B=y,l=B=Q>>>0>sA>>>0?B+1|0:B,c[0|C]=sA,c[C+1|0]=(255&B)<<24|sA>>>8,B=2097151&_A,Q=w(nA,$,470296,0)+B|0,p=y,B=(l>>21)+(B>>>0>Q>>>0?p+1|0:p)|0,B=(J=(2097151&l)<<11|sA>>>21)>>>0>(_A=J+Q|0)>>>0?B+1|0:B,c[C+4|0]=(2047&B)<<21|_A>>>11,Q=B,p=_A,c[C+3|0]=(7&B)<<29|p>>>3,c[C+2|0]=31&((65535&l)<<16|sA>>>16)|p<<5,l=2097151&K,K=w(nA,$,654183,0)+l|0,B=y,_A=(2097151&Q)<<11|p>>>21,Q=(Q>>21)+(l=l>>>0>K>>>0?B+1|0:B)|0,B=Q=(K=_A+K|0)>>>0<_A>>>0?Q+1|0:Q,c[C+6|0]=(63&B)<<26|K>>>6,l=K,K=0,c[C+5|0]=K<<13|(1572864&p)>>>19|l<<2,p=2097151&v,v=w(nA,$,-997805,-1)+p|0,Q=y,Q=p>>>0>v>>>0?Q+1|0:Q,K=(2097151&(p=B))<<11|l>>>21,p=(B>>=21)+Q|0,p=(v=K+v|0)>>>0>>0?p+1|0:p,c[C+9|0]=(511&p)<<23|v>>>9,c[C+8|0]=(1&p)<<31|v>>>1,Q=0,c[C+7|0]=Q<<18|(2080768&l)>>>14|v<<7,Q=2097151&x,l=w(nA,$,136657,0)+Q|0,B=y,B=Q>>>0>l>>>0?B+1|0:B,x=(2097151&(Q=p))<<11|v>>>21,Q=B+(p=Q>>21)|0,Q=(l=x+l|0)>>>0>>0?Q+1|0:Q,c[C+12|0]=(4095&Q)<<20|l>>>12,p=l,c[C+11|0]=(15&Q)<<28|p>>>4,l=0,c[C+10|0]=l<<15|(1966080&v)>>>17|p<<4,l=2097151&q,v=w(nA,$,-683901,-1)+l|0,B=y,B=l>>>0>v>>>0?B+1|0:B,l=Q,Q=B+(Q>>=21)|0,Q=(l=(uA=v)+(v=(2097151&l)<<11|p>>>21)|0)>>>0>>0?Q+1|0:Q,c[C+14|0]=(127&Q)<<25|l>>>7,v=0,c[C+13|0]=v<<12|(1048576&p)>>>20|l<<1,B=Q>>21,p=(Q=(2097151&Q)<<11|l>>>21)>>>0>(v=Q+(2097151&z)|0)>>>0?B+1|0:B,c[C+17|0]=(1023&p)<<22|v>>>10,c[C+16|0]=(3&p)<<30|v>>>2,Q=0,c[C+15|0]=Q<<17|(2064384&l)>>>15|v<<6,B=p>>21,B=(Q=(2097151&p)<<11|v>>>21)>>>0>(p=Q+(2097151&M)|0)>>>0?B+1|0:B,c[C+20|0]=(8191&B)<<19|p>>>13,c[C+19|0]=(31&B)<<27|p>>>5,l=(Q=2097151&V)+(V=(2097151&B)<<11|p>>>21)|0,Q=B>>21,Q=l>>>0>>0?Q+1|0:Q,V=l,c[C+21|0]=l,M=0,c[C+18|0]=M<<14|(1835008&v)>>>18|p<<3,c[C+22|0]=(255&Q)<<24|l>>>8,p=Q>>21,p=(l=(v=(2097151&Q)<<11|l>>>21)+(2097151&b)|0)>>>0>>0?p+1|0:p,c[C+25|0]=(2047&p)<<21|l>>>11,c[C+24|0]=(7&p)<<29|l>>>3,c[C+23|0]=31&((65535&Q)<<16|V>>>16)|l<<5,B=p>>21,B=(Q=(2097151&p)<<11|l>>>21)>>>0>(p=Q+(2097151&D)|0)>>>0?B+1|0:B,c[C+27|0]=(63&B)<<26|p>>>6,v=0,c[C+26|0]=v<<13|(1572864&l)>>>19|p<<2,Q=B,B>>=21,Q=(l=(D=(2097151&Q)<<11|p>>>21)+(v=2097151&iA)|0)>>>0>>0?B+1|0:B,c[C+31|0]=(131071&Q)<<15|l>>>17,B=l,c[C+30|0]=(511&Q)<<23|B>>>9,l=0,c[C+28|0]=l<<18|(2080768&p)>>>14|B<<7,c[C+29|0]=D+iA>>>1}function iC(C,g,e){var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0;for(W=a=W-2048|0,P0(a+1024|0,g,1024),g=0;o=A[(s=(I=a+1024|0)+(r=g<<3)|0)>>2],_=A[(h=C+r|0)>>2],h=A[s+4>>2]^A[h+4>>2],A[s>>2]=o^_,A[s+4>>2]=h,h=A[(s=(o=8|r)+I|0)>>2],_=A[(o=C+o|0)>>2],o=A[s+4>>2]^A[o+4>>2],A[s>>2]=_^h,A[s+4>>2]=o,h=A[(s=(o=16|r)+I|0)>>2],_=A[(o=C+o|0)>>2],o=A[s+4>>2]^A[o+4>>2],A[s>>2]=_^h,A[s+4>>2]=o,o=A[(r=(s=24|r)+I|0)>>2],h=A[(s=C+s|0)>>2],s=A[r+4>>2]^A[s+4>>2],A[r>>2]=o^h,A[r+4>>2]=s,(0|(g=g+4|0))!=128;);for(t=P0(a,I,1024),C=0,g=0;a=A[(r=(I=g<<3)+t|0)>>2],o=A[(s=e+I|0)>>2],s=A[r+4>>2]^A[s+4>>2],A[r>>2]=o^a,A[r+4>>2]=s,s=A[(r=(a=8|I)+t|0)>>2],o=A[(a=e+a|0)>>2],a=A[r+4>>2]^A[a+4>>2],A[r>>2]=o^s,A[r+4>>2]=a,s=A[(r=(a=16|I)+t|0)>>2],o=A[(a=e+a|0)>>2],a=A[r+4>>2]^A[a+4>>2],A[r>>2]=o^s,A[r+4>>2]=a,a=A[(I=(r=24|I)+t|0)>>2],s=A[(r=e+r|0)>>2],r=A[I+4>>2]^A[r+4>>2],A[I>>2]=a^s,A[I+4>>2]=r,(0|(g=g+4|0))!=128;);for(;h=(o=A[56+(I=(t+1024|0)+(C<<7)|0)>>2])+(r=A[I+24>>2])|0,g=(n=A[I+60>>2])+(a=A[I+28>>2])|0,s=r>>>0>h>>>0?g+1|0:g,a=w(r<<1&-2,1&(a<<1|r>>>31),o,0),g=y+s|0,s=(r=a+h|0)>>>0>>0?g+1|0:g,Q=(h=G(A[I+120>>2]^r,s^A[I+124>>2],32))+(a=A[I+88>>2])|0,g=(p=y)+(_=A[I+92>>2])|0,B=a>>>0>Q>>>0?g+1|0:g,_=w(a<<1&-2,1&(_<<1|a>>>31),h,0),g=y+B|0,mA=G(o^(a=_+Q|0),n^(l=a>>>0<_>>>0?g+1|0:g),40),g=s+($A=y)|0,o=(_=r+mA|0)>>>0>>0?g+1|0:g,r=w(mA,0,r<<1&-2,1&(s<<1|r>>>31)),g=y+o|0,nA=G(h^(q=r+_|0),p^(sA=r>>>0>q>>>0?g+1|0:g),48),g0=g=y,D=nA,Q=g,_=(h=A[I+40>>2])+(r=A[I+8>>2])|0,g=(fA=A[I+44>>2])+(s=A[I+12>>2])|0,o=r>>>0>_>>>0?g+1|0:g,s=w(r<<1&-2,1&(s<<1|r>>>31),h,0),g=y+o|0,o=(r=s+_|0)>>>0>>0?g+1|0:g,p=(_=G(A[I+104>>2]^r,o^A[I+108>>2],32))+(s=A[I+72>>2])|0,g=(b=y)+(B=A[I+76>>2])|0,n=s>>>0>p>>>0?g+1|0:g,B=w(s<<1&-2,1&(B<<1|s>>>31),_,0),g=y+n|0,B=G(n=(s=B+p|0)^h,fA^(h=s>>>0>>0?g+1|0:g),40),g=o+(M=y)|0,n=(p=r+B|0)>>>0>>0?g+1|0:g,o=w(B,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+n|0,HA=G((r=o+p|0)^_,b^(p=r>>>0>>0?g+1|0:g),48),g=h+(aA=y)|0,o=(_=s+HA|0)>>>0>>0?g+1|0:g,h=w(HA,0,s<<1&-2,1&(h<<1|s>>>31)),g=y+o|0,J=G((s=h+_|0)^B,M^(fA=s>>>0>>0?g+1|0:g),1),EA=g=y,x=J,n=g,b=(B=A[I+32>>2])+(o=A[I>>2])|0,g=(uA=A[I+36>>2])+(h=A[I+4>>2])|0,_=o>>>0>b>>>0?g+1|0:g,h=w(o<<1&-2,1&(h<<1|o>>>31),B,0),g=y+_|0,_=(o=h+b|0)>>>0>>0?g+1|0:g,v=(vA=G(A[I+96>>2]^o,_^A[I+100>>2],32))+(h=A[(g=V=I- -64|0)>>2])|0,g=(qA=y)+(b=A[g+4>>2])|0,M=h>>>0>v>>>0?g+1|0:g,b=w(h<<1&-2,1&(b<<1|h>>>31),vA,0),g=y+M|0,uA=G((h=b+v|0)^B,uA^(b=h>>>0>>0?g+1|0:g),40),g=_+(i0=y)|0,B=(M=o+uA|0)>>>0>>0?g+1|0:g,_=w(uA,0,o<<1&-2,1&(_<<1|o>>>31)),g=y+B|0,g=(M=(o=_+M|0)>>>0<_>>>0?g+1|0:g)+n|0,B=(_=o+x|0)>>>0>>0?g+1|0:g,n=w(x,0,o<<1&-2,1&(M<<1|o>>>31)),g=y+B|0,wA=G((_=n+_|0)^D,(v=_>>>0>>0?g+1|0:g)^Q,32),YA=g=y,$=g,x=(D=A[I+48>>2])+(B=A[I+16>>2])|0,g=(iA=A[I+52>>2])+(Q=A[I+20>>2])|0,n=B>>>0>x>>>0?g+1|0:g,Q=w(B<<1&-2,1&(Q<<1|B>>>31),D,0),g=y+n|0,n=(B=Q+x|0)>>>0>>0?g+1|0:g,K=(x=G(A[I+112>>2]^B,n^A[I+116>>2],32))+(Q=A[I+80>>2])|0,g=(hA=y)+(z=A[I+84>>2])|0,_A=Q>>>0>K>>>0?g+1|0:g,z=w(Q<<1&-2,1&(z<<1|Q>>>31),x,0),g=y+_A|0,z=G(K=(Q=z+K|0)^D,iA^(D=Q>>>0>>0?g+1|0:g),40),g=n+(iA=y)|0,_A=(K=B+z|0)>>>0>>0?g+1|0:g,n=w(z,0,B<<1&-2,1&(n<<1|B>>>31)),g=y+_A|0,_A=G(K=(B=n+K|0)^x,hA^(x=n>>>0>B>>>0?g+1|0:g),48),g=D+(hA=y)|0,n=(K=Q+_A|0)>>>0>>0?g+1|0:g,D=w(_A,0,Q<<1&-2,1&(D<<1|Q>>>31)),g=y+n|0,g=(D=(Q=D+K|0)>>>0>>0?g+1|0:g)+$|0,$=(n=Q+wA|0)>>>0>>0?g+1|0:g,K=w(wA,0,Q<<1&-2,1&(D<<1|Q>>>31)),g=y+$|0,$=G($=(n=K+n|0)^J,EA^(J=n>>>0>>0?g+1|0:g),40),g=v+(EA=y)|0,K=(u=_+$|0)>>>0<_>>>0?g+1|0:g,_=(v=w($,0,_<<1&-2,1&(v<<1|_>>>31)))+u|0,g=y+K|0,A[I>>2]=_,g=_>>>0>>0?g+1|0:g,A[I+4>>2]=g,_=G(_^wA,g^YA,48),A[I+120>>2]=_,g=y,A[I+124>>2]=g,g=g+J|0,v=(wA=_+n|0)>>>0>>0?g+1|0:g,_=(n=w(_,0,n<<1&-2,1&(J<<1|n>>>31)))+wA|0,g=y+v|0,A[I+80>>2]=_,g=_>>>0>>0?g+1|0:g,A[I+84>>2]=g,d=I,H=G(_^$,g^EA,1),A[d+40>>2]=H,A[I+44>>2]=y,g=l+g0|0,_=(n=a+nA|0)>>>0>>0?g+1|0:g,a=w(nA,0,a<<1&-2,1&(l<<1|a>>>31)),g=y+_|0,_=g=a>>>0>(n=a+n|0)>>>0?g+1|0:g,a=g,Q=G(Q^z,D^iA,1),g=p+(D=y)|0,l=(v=r+Q|0)>>>0>>0?g+1|0:g,r=(p=w(Q,0,r<<1&-2,1&(p<<1|r>>>31)))+v|0,g=y+l|0,M=G(o^vA,M^qA,48),p=G(M^r,(o=r>>>0

>>0?g+1|0:g)^(J=y),32),g=(nA=y)+a|0,l=p>>>0>(v=p+n|0)>>>0?g+1|0:g,a=(g=v)+(v=w(n<<1&-2,1&(a<<1|n>>>31),p,0))|0,g=y+l|0,l=G($=a^Q,D^(Q=a>>>0>>0?g+1|0:g),40),g=o+(v=y)|0,D=(vA=r+l|0)>>>0>>0?g+1|0:g,r=w(l,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+D|0,r=G((o=r+vA|0)^p,nA^(g=r>>>0>o>>>0?g+1|0:g),48),A[I+96>>2]=r,p=y,A[I+100>>2]=p,A[I+8>>2]=o,A[I+12>>2]=g,g=Q+p|0,o=(p=r+a|0)>>>0>>0?g+1|0:g,a=w(r,0,a<<1&-2,1&(Q<<1|a>>>31)),g=y+o|0,d=I,H=G((r=a+p|0)^l,(g=r>>>0>>0?g+1|0:g)^v,1),A[d+48>>2]=H,A[I+52>>2]=y,A[I+88>>2]=r,A[I+92>>2]=g,Q=G(n^mA,_^$A,1),g=x+(l=y)|0,a=(r=B+Q|0)>>>0>>0?g+1|0:g,o=w(Q,0,B<<1&-2,1&(x<<1|B>>>31)),g=y+a|0,n=G((r=o+r|0)^HA,aA^(_=r>>>0>>0?g+1|0:g),32),p=g=y,o=g,g=b+J|0,B=(a=h+M|0)>>>0>>0?g+1|0:g,h=w(M,0,h<<1&-2,1&(b<<1|h>>>31)),g=y+B|0,g=(h=(a=h+a|0)>>>0>>0?g+1|0:g)+o|0,B=(o=a+n|0)>>>0>>0?g+1|0:g,b=w(n,0,a<<1&-2,1&(h<<1|a>>>31)),g=y+B|0,Q=G((o=b+o|0)^Q,l^(B=o>>>0>>0?g+1|0:g),40),g=_+(b=y)|0,l=(M=r+Q|0)>>>0>>0?g+1|0:g,r=(_=w(Q,0,r<<1&-2,1&(_<<1|r>>>31)))+M|0,g=y+l|0,A[I+16>>2]=r,g=r>>>0<_>>>0?g+1|0:g,A[I+20>>2]=g,r=G(r^n,g^p,48),A[I+104>>2]=r,g=y,A[I+108>>2]=g,_=V,g=g+B|0,n=(l=r+o|0)>>>0>>0?g+1|0:g,o=w(r,0,o<<1&-2,1&(B<<1|o>>>31)),g=y+n|0,B=r=o+l|0,n=g=r>>>0>>0?g+1|0:g,A[_>>2]=r,A[_+4>>2]=g,h=G(a^uA,h^i0,1),g=(p=y)+sA|0,a=(r=h+q|0)>>>0>>0?g+1|0:g,o=w(q<<1&-2,1&(sA<<1|q>>>31),h,0),g=y+a|0,_=G((r=o+r|0)^_A,hA^(o=r>>>0>>0?g+1|0:g),32),g=fA+(q=y)|0,l=(a=_+s|0)>>>0>>0?g+1|0:g,s=w(_,0,s<<1&-2,1&(fA<<1|s>>>31)),g=y+l|0,h=G((a=s+a|0)^h,p^(s=a>>>0>>0?g+1|0:g),40),g=o+(sA=y)|0,l=(p=r+h|0)>>>0>>0?g+1|0:g,o=w(h,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+l|0,g=(r=o+p|0)>>>0>>0?g+1|0:g,o=r,r^=_,_=g,r=G(r,q^g,48),g=s+(q=y)|0,l=(p=r+a|0)>>>0>>0?g+1|0:g,a=(s=w(r,0,a<<1&-2,1&(s<<1|a>>>31)))+p|0,g=y+l|0,A[I+72>>2]=a,g=a>>>0>>0?g+1|0:g,A[I+76>>2]=g,A[I+112>>2]=r,A[I+116>>2]=q,A[I+24>>2]=o,A[I+28>>2]=_,d=I,H=G(B^Q,n^b,1),A[d+56>>2]=H,A[I+60>>2]=y,d=I,H=G(a^h,g^sA,1),A[d+32>>2]=H,A[I+36>>2]=y,(0|(C=C+1|0))!=8;);for(C=0;h=(o=A[392+(I=(t+1024|0)+(C<<4)|0)>>2])+(r=A[I+136>>2])|0,g=(n=A[I+396>>2])+(a=A[I+140>>2])|0,s=r>>>0>h>>>0?g+1|0:g,a=w(r<<1&-2,1&(a<<1|r>>>31),o,0),g=y+s|0,s=(r=a+h|0)>>>0>>0?g+1|0:g,Q=(h=G(A[I+904>>2]^r,s^A[I+908>>2],32))+(a=A[I+648>>2])|0,g=(p=y)+(_=A[I+652>>2])|0,B=a>>>0>Q>>>0?g+1|0:g,_=w(a<<1&-2,1&(_<<1|a>>>31),h,0),g=y+B|0,mA=G(o^(a=_+Q|0),n^(l=a>>>0<_>>>0?g+1|0:g),40),g=s+(K=y)|0,o=(_=r+mA|0)>>>0>>0?g+1|0:g,r=w(mA,0,r<<1&-2,1&(s<<1|r>>>31)),g=y+o|0,nA=G(h^(q=r+_|0),p^(sA=r>>>0>q>>>0?g+1|0:g),48),$A=g=y,D=nA,Q=g,_=(h=A[I+264>>2])+(r=A[I+8>>2])|0,g=(fA=A[I+268>>2])+(s=A[I+12>>2])|0,o=r>>>0>_>>>0?g+1|0:g,s=w(r<<1&-2,1&(s<<1|r>>>31),h,0),g=y+o|0,o=(r=s+_|0)>>>0>>0?g+1|0:g,p=(_=G(A[I+776>>2]^r,o^A[I+780>>2],32))+(s=A[I+520>>2])|0,g=(b=y)+(B=A[I+524>>2])|0,n=s>>>0>p>>>0?g+1|0:g,B=w(s<<1&-2,1&(B<<1|s>>>31),_,0),g=y+n|0,B=G(n=(s=B+p|0)^h,fA^(h=s>>>0>>0?g+1|0:g),40),g=o+(M=y)|0,n=(p=r+B|0)>>>0>>0?g+1|0:g,o=w(B,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+n|0,HA=G((r=o+p|0)^_,b^(p=r>>>0>>0?g+1|0:g),48),g=h+(g0=y)|0,o=(_=s+HA|0)>>>0>>0?g+1|0:g,h=w(HA,0,s<<1&-2,1&(h<<1|s>>>31)),g=y+o|0,J=G((s=h+_|0)^B,M^(fA=s>>>0>>0?g+1|0:g),1),aA=g=y,x=J,n=g,b=(B=A[I+256>>2])+(o=A[I>>2])|0,g=(uA=A[I+260>>2])+(h=A[I+4>>2])|0,_=o>>>0>b>>>0?g+1|0:g,h=w(o<<1&-2,1&(h<<1|o>>>31),B,0),g=y+_|0,_=(o=h+b|0)>>>0>>0?g+1|0:g,v=(vA=G(A[I+768>>2]^o,_^A[I+772>>2],32))+(h=A[I+512>>2])|0,g=(EA=y)+(b=A[I+516>>2])|0,M=h>>>0>v>>>0?g+1|0:g,b=w(h<<1&-2,1&(b<<1|h>>>31),vA,0),g=y+M|0,uA=G((h=b+v|0)^B,uA^(b=h>>>0>>0?g+1|0:g),40),g=_+(qA=y)|0,B=(M=o+uA|0)>>>0>>0?g+1|0:g,_=w(uA,0,o<<1&-2,1&(_<<1|o>>>31)),g=y+B|0,g=(M=(o=_+M|0)>>>0<_>>>0?g+1|0:g)+n|0,B=(_=o+x|0)>>>0>>0?g+1|0:g,n=w(x,0,o<<1&-2,1&(M<<1|o>>>31)),g=y+B|0,wA=G((_=n+_|0)^D,(v=_>>>0>>0?g+1|0:g)^Q,32),i0=g=y,$=g,x=(D=A[I+384>>2])+(B=A[I+128>>2])|0,g=(YA=A[I+388>>2])+(Q=A[I+132>>2])|0,n=B>>>0>x>>>0?g+1|0:g,Q=w(B<<1&-2,1&(Q<<1|B>>>31),D,0),g=y+n|0,n=(B=Q+x|0)>>>0>>0?g+1|0:g,V=(x=G(A[I+896>>2]^B,n^A[I+900>>2],32))+(Q=A[I+640>>2])|0,g=(iA=y)+(z=A[I+644>>2])|0,_A=Q>>>0>V>>>0?g+1|0:g,z=w(Q<<1&-2,1&(z<<1|Q>>>31),x,0),g=y+_A|0,z=G(V=(Q=z+V|0)^D,YA^(D=Q>>>0>>0?g+1|0:g),40),g=n+(YA=y)|0,_A=(V=B+z|0)>>>0>>0?g+1|0:g,n=w(z,0,B<<1&-2,1&(n<<1|B>>>31)),g=y+_A|0,_A=G(V=(B=n+V|0)^x,iA^(x=n>>>0>B>>>0?g+1|0:g),48),g=D+(iA=y)|0,n=(V=Q+_A|0)>>>0>>0?g+1|0:g,D=w(_A,0,Q<<1&-2,1&(D<<1|Q>>>31)),g=y+n|0,g=(D=(Q=D+V|0)>>>0>>0?g+1|0:g)+$|0,$=(n=Q+wA|0)>>>0>>0?g+1|0:g,V=w(wA,0,Q<<1&-2,1&(D<<1|Q>>>31)),g=y+$|0,$=G($=(n=V+n|0)^J,aA^(J=n>>>0>>0?g+1|0:g),40),g=v+(aA=y)|0,V=(hA=_+$|0)>>>0<_>>>0?g+1|0:g,_=(v=w($,0,_<<1&-2,1&(v<<1|_>>>31)))+hA|0,g=y+V|0,A[I>>2]=_,g=_>>>0>>0?g+1|0:g,A[I+4>>2]=g,_=G(_^wA,g^i0,48),A[I+904>>2]=_,g=y,A[I+908>>2]=g,g=g+J|0,v=(wA=_+n|0)>>>0>>0?g+1|0:g,_=(n=w(_,0,n<<1&-2,1&(J<<1|n>>>31)))+wA|0,g=y+v|0,A[I+640>>2]=_,g=_>>>0>>0?g+1|0:g,A[I+644>>2]=g,d=I,H=G(_^$,g^aA,1),A[d+264>>2]=H,A[I+268>>2]=y,g=l+$A|0,_=(n=a+nA|0)>>>0>>0?g+1|0:g,a=w(nA,0,a<<1&-2,1&(l<<1|a>>>31)),g=y+_|0,_=g=a>>>0>(n=a+n|0)>>>0?g+1|0:g,a=g,Q=G(Q^z,D^YA,1),g=p+(D=y)|0,l=(v=r+Q|0)>>>0>>0?g+1|0:g,r=(p=w(Q,0,r<<1&-2,1&(p<<1|r>>>31)))+v|0,g=y+l|0,M=G(o^vA,M^EA,48),p=G(M^r,(o=r>>>0

>>0?g+1|0:g)^(J=y),32),g=(nA=y)+a|0,l=p>>>0>(v=p+n|0)>>>0?g+1|0:g,a=(g=v)+(v=w(n<<1&-2,1&(a<<1|n>>>31),p,0))|0,g=y+l|0,l=G(V=a^Q,D^(Q=a>>>0>>0?g+1|0:g),40),g=o+(v=y)|0,D=(vA=r+l|0)>>>0>>0?g+1|0:g,r=w(l,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+D|0,r=G((o=r+vA|0)^p,nA^(g=r>>>0>o>>>0?g+1|0:g),48),A[I+768>>2]=r,p=y,A[I+772>>2]=p,A[I+8>>2]=o,A[I+12>>2]=g,g=Q+p|0,o=(p=r+a|0)>>>0>>0?g+1|0:g,a=w(r,0,a<<1&-2,1&(Q<<1|a>>>31)),g=y+o|0,d=I,H=G((r=a+p|0)^l,(g=r>>>0>>0?g+1|0:g)^v,1),A[d+384>>2]=H,A[I+388>>2]=y,A[I+648>>2]=r,A[I+652>>2]=g,Q=G(n^mA,_^K,1),g=x+(l=y)|0,a=(r=B+Q|0)>>>0>>0?g+1|0:g,o=w(Q,0,B<<1&-2,1&(x<<1|B>>>31)),g=y+a|0,n=G((r=o+r|0)^HA,g0^(_=r>>>0>>0?g+1|0:g),32),p=g=y,o=g,g=b+J|0,B=(a=h+M|0)>>>0>>0?g+1|0:g,h=w(M,0,h<<1&-2,1&(b<<1|h>>>31)),g=y+B|0,g=(h=(a=h+a|0)>>>0>>0?g+1|0:g)+o|0,B=(o=a+n|0)>>>0>>0?g+1|0:g,b=w(n,0,a<<1&-2,1&(h<<1|a>>>31)),g=y+B|0,Q=G((o=b+o|0)^Q,l^(B=o>>>0>>0?g+1|0:g),40),g=_+(b=y)|0,l=(M=r+Q|0)>>>0>>0?g+1|0:g,r=(_=w(Q,0,r<<1&-2,1&(_<<1|r>>>31)))+M|0,g=y+l|0,A[I+128>>2]=r,g=r>>>0<_>>>0?g+1|0:g,A[I+132>>2]=g,r=G(r^n,g^p,48),A[I+776>>2]=r,g=y,A[I+780>>2]=g,g=g+B|0,_=(n=r+o|0)>>>0>>0?g+1|0:g,o=w(r,0,o<<1&-2,1&(B<<1|o>>>31)),g=y+_|0,B=r=o+n|0,n=g=r>>>0>>0?g+1|0:g,A[I+512>>2]=r,A[I+516>>2]=g,h=G(a^uA,h^qA,1),g=(p=y)+sA|0,a=(r=h+q|0)>>>0>>0?g+1|0:g,o=w(q<<1&-2,1&(sA<<1|q>>>31),h,0),g=y+a|0,_=G((r=o+r|0)^_A,iA^(o=r>>>0>>0?g+1|0:g),32),g=fA+(q=y)|0,l=(a=_+s|0)>>>0>>0?g+1|0:g,s=w(_,0,s<<1&-2,1&(fA<<1|s>>>31)),g=y+l|0,h=G((a=s+a|0)^h,p^(s=a>>>0>>0?g+1|0:g),40),g=o+(sA=y)|0,l=(p=r+h|0)>>>0>>0?g+1|0:g,o=w(h,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+l|0,g=(r=o+p|0)>>>0>>0?g+1|0:g,o=r,r^=_,_=g,r=G(r,q^g,48),g=s+(q=y)|0,l=(p=r+a|0)>>>0>>0?g+1|0:g,a=(s=w(r,0,a<<1&-2,1&(s<<1|a>>>31)))+p|0,g=y+l|0,A[I+520>>2]=a,g=a>>>0>>0?g+1|0:g,A[I+524>>2]=g,A[I+896>>2]=r,A[I+900>>2]=q,A[I+136>>2]=o,A[I+140>>2]=_,d=I,H=G(B^Q,n^b,1),A[d+392>>2]=H,A[I+396>>2]=y,d=I,H=G(a^h,g^sA,1),A[d+256>>2]=H,A[I+260>>2]=y,(0|(C=C+1|0))!=8;);for(g=P0(e,t,1024),C=0;r=A[(I=(e=C<<3)+g|0)>>2],o=A[(s=(a=_=t+1024|0)+e|0)>>2],s=A[I+4>>2]^A[s+4>>2],A[I>>2]=r^o,A[I+4>>2]=s,s=A[(I=(r=8|e)+g|0)>>2],a=A[(r=r+a|0)>>2],r=A[I+4>>2]^A[r+4>>2],A[I>>2]=a^s,A[I+4>>2]=r,a=A[(I=(r=16|e)+g|0)>>2],s=A[(r=r+_|0)>>2],r=A[I+4>>2]^A[r+4>>2],A[I>>2]=a^s,A[I+4>>2]=r,r=A[(e=(I=24|e)+g|0)>>2],a=A[(I=I+_|0)>>2],I=A[e+4>>2]^A[I+4>>2],A[e>>2]=r^a,A[e+4>>2]=I,(0|(C=C+4|0))!=128;);W=t+2048|0}function OC(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0;for(W=t=W-800|0,x=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,V=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,K=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,J=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,b=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,z=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,_A=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,o=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,I=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,a=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,_=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,s=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,h=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,n=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,M=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=e- -64|0,B=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,A[g>>2]=33620224^B,A[e+56>>2]=1496785429,A[e+60>>2]=1652156816,A[(C=e+48|0)>>2]=33620224,A[C+4>>2]=218629379,A[e+40>>2]=1110511904,A[e+44>>2]=-584534669,A[(r=e+32|0)>>2]=1427652059,A[r+4>>2]=-248528275,Q=M^B,A[e>>2]=Q,A[e+92>>2]=-584534669^n,A[e+88>>2]=1110511904^h,A[e+84>>2]=-248528275^s,A[(M=e+80|0)>>2]=1427652059^_,A[e+76>>2]=1652156816^a,A[e+72>>2]=1496785429^I,A[e+68>>2]=218629379^o,_A^=n,A[e+28>>2]=_A,z^=h,A[e+24>>2]=z,p=b^s,A[e+20>>2]=p,J^=_,A[(b=e+16|0)>>2]=J,K^=a,A[e+12>>2]=K,l=V^I,A[e+8>>2]=l,v=x^o,A[e+4>>2]=v,V=0;x=A[M+12>>2],A[t+792>>2]=A[M+8>>2],A[t+796>>2]=x,x=A[M+4>>2],A[t+784>>2]=A[M>>2],A[t+788>>2]=x,x=A[g+12>>2],A[t+760>>2]=A[g+8>>2],A[t+764>>2]=x,x=A[g+4>>2],A[t+752>>2]=A[g>>2],A[t+756>>2]=x,x=A[M+12>>2],A[t+744>>2]=A[M+8>>2],A[t+748>>2]=x,x=A[M+4>>2],A[t+736>>2]=A[M>>2],A[t+740>>2]=x,a0(x=t+768|0,t+752|0,t+736|0),D=A[t+780>>2],A[M+8>>2]=A[t+776>>2],A[M+12>>2]=D,D=A[t+772>>2],A[M>>2]=A[t+768>>2],A[M+4>>2]=D,D=A[C+12>>2],A[t+728>>2]=A[C+8>>2],A[t+732>>2]=D,D=A[C+4>>2],A[t+720>>2]=A[C>>2],A[t+724>>2]=D,D=A[g+12>>2],A[t+712>>2]=A[g+8>>2],A[t+716>>2]=D,D=A[g+4>>2],A[t+704>>2]=A[g>>2],A[t+708>>2]=D,a0(x,t+720|0,t+704|0),D=A[t+780>>2],A[g+8>>2]=A[t+776>>2],A[g+12>>2]=D,D=A[t+772>>2],A[g>>2]=A[t+768>>2],A[g+4>>2]=D,D=A[r+12>>2],A[t+696>>2]=A[r+8>>2],A[t+700>>2]=D,D=A[r+4>>2],A[t+688>>2]=A[r>>2],A[t+692>>2]=D,D=A[C+12>>2],A[t+680>>2]=A[C+8>>2],A[t+684>>2]=D,D=A[C+4>>2],A[t+672>>2]=A[C>>2],A[t+676>>2]=D,a0(x,t+688|0,t+672|0),D=A[t+780>>2],A[C+8>>2]=A[t+776>>2],A[C+12>>2]=D,D=A[t+772>>2],A[C>>2]=A[t+768>>2],A[C+4>>2]=D,D=A[b+12>>2],A[t+664>>2]=A[b+8>>2],A[t+668>>2]=D,D=A[b+4>>2],A[t+656>>2]=A[b>>2],A[t+660>>2]=D,D=A[r+12>>2],A[t+648>>2]=A[r+8>>2],A[t+652>>2]=D,D=A[r+4>>2],A[t+640>>2]=A[r>>2],A[t+644>>2]=D,a0(x,t+656|0,t+640|0),D=A[t+780>>2],A[r+8>>2]=A[t+776>>2],A[r+12>>2]=D,D=A[t+772>>2],A[r>>2]=A[t+768>>2],A[r+4>>2]=D,D=A[e+12>>2],A[t+632>>2]=A[e+8>>2],A[t+636>>2]=D,D=A[e+4>>2],A[t+624>>2]=A[e>>2],A[t+628>>2]=D,D=A[b+12>>2],A[t+616>>2]=A[b+8>>2],A[t+620>>2]=D,D=A[b+4>>2],A[t+608>>2]=A[b>>2],A[t+612>>2]=D,a0(x,t+624|0,t+608|0),D=A[t+780>>2],A[b+8>>2]=A[t+776>>2],A[b+12>>2]=D,D=A[t+772>>2],A[b>>2]=A[t+768>>2],A[b+4>>2]=D,D=A[t+796>>2],A[t+600>>2]=A[t+792>>2],A[t+604>>2]=D,D=A[t+788>>2],A[t+592>>2]=A[t+784>>2],A[t+596>>2]=D,D=A[e+12>>2],A[t+584>>2]=A[e+8>>2],A[t+588>>2]=D,D=A[e+4>>2],A[t+576>>2]=A[e>>2],A[t+580>>2]=D,a0(x,t+592|0,t+576|0),D=A[t+768>>2],q=A[t+772>>2],$=A[t+776>>2],A[e+12>>2]=A[t+780>>2]^a,A[e+8>>2]=$^I,A[e+4>>2]=q^o,A[e>>2]=D^B,D=A[M+12>>2],A[t+792>>2]=A[M+8>>2],A[t+796>>2]=D,D=A[M+4>>2],A[t+784>>2]=A[M>>2],A[t+788>>2]=D,D=A[g+12>>2],A[t+568>>2]=A[g+8>>2],A[t+572>>2]=D,D=A[g+4>>2],A[t+560>>2]=A[g>>2],A[t+564>>2]=D,D=A[M+12>>2],A[t+552>>2]=A[M+8>>2],A[t+556>>2]=D,D=A[M+4>>2],A[t+544>>2]=A[M>>2],A[t+548>>2]=D,a0(x,t+560|0,t+544|0),D=A[t+780>>2],A[M+8>>2]=A[t+776>>2],A[M+12>>2]=D,D=A[t+772>>2],A[M>>2]=A[t+768>>2],A[M+4>>2]=D,D=A[C+12>>2],A[t+536>>2]=A[C+8>>2],A[t+540>>2]=D,D=A[C+4>>2],A[t+528>>2]=A[C>>2],A[t+532>>2]=D,D=A[g+12>>2],A[t+520>>2]=A[g+8>>2],A[t+524>>2]=D,D=A[g+4>>2],A[t+512>>2]=A[g>>2],A[t+516>>2]=D,a0(x,t+528|0,t+512|0),D=A[t+780>>2],A[g+8>>2]=A[t+776>>2],A[g+12>>2]=D,D=A[t+772>>2],A[g>>2]=A[t+768>>2],A[g+4>>2]=D,D=A[r+12>>2],A[t+504>>2]=A[r+8>>2],A[t+508>>2]=D,D=A[r+4>>2],A[t+496>>2]=A[r>>2],A[t+500>>2]=D,D=A[C+12>>2],A[t+488>>2]=A[C+8>>2],A[t+492>>2]=D,D=A[C+4>>2],A[t+480>>2]=A[C>>2],A[t+484>>2]=D,a0(x,t+496|0,t+480|0),D=A[t+780>>2],A[C+8>>2]=A[t+776>>2],A[C+12>>2]=D,D=A[t+772>>2],A[C>>2]=A[t+768>>2],A[C+4>>2]=D,D=A[b+12>>2],A[t+472>>2]=A[b+8>>2],A[t+476>>2]=D,D=A[b+4>>2],A[t+464>>2]=A[b>>2],A[t+468>>2]=D,D=A[r+12>>2],A[t+456>>2]=A[r+8>>2],A[t+460>>2]=D,D=A[r+4>>2],A[t+448>>2]=A[r>>2],A[t+452>>2]=D,a0(x,t+464|0,t+448|0),D=A[t+780>>2],A[r+8>>2]=A[t+776>>2],A[r+12>>2]=D,D=A[t+772>>2],A[r>>2]=A[t+768>>2],A[r+4>>2]=D,D=A[e+12>>2],A[t+440>>2]=A[e+8>>2],A[t+444>>2]=D,D=A[e+4>>2],A[t+432>>2]=A[e>>2],A[t+436>>2]=D,D=A[b+12>>2],A[t+424>>2]=A[b+8>>2],A[t+428>>2]=D,D=A[b+4>>2],A[t+416>>2]=A[b>>2],A[t+420>>2]=D,a0(x,t+432|0,t+416|0),D=A[t+780>>2],A[b+8>>2]=A[t+776>>2],A[b+12>>2]=D,D=A[t+772>>2],A[b>>2]=A[t+768>>2],A[b+4>>2]=D,D=A[t+796>>2],A[t+408>>2]=A[t+792>>2],A[t+412>>2]=D,D=A[t+788>>2],A[t+400>>2]=A[t+784>>2],A[t+404>>2]=D,D=A[e+12>>2],A[t+392>>2]=A[e+8>>2],A[t+396>>2]=D,D=A[e+4>>2],A[t+384>>2]=A[e>>2],A[t+388>>2]=D,a0(x,t+400|0,t+384|0),D=A[t+768>>2],q=A[t+772>>2],$=A[t+776>>2],A[e+12>>2]=A[t+780>>2]^n,A[e+8>>2]=$^h,A[e+4>>2]=q^s,A[e>>2]=D^_,D=A[M+12>>2],A[t+792>>2]=A[M+8>>2],A[t+796>>2]=D,D=A[M+4>>2],A[t+784>>2]=A[M>>2],A[t+788>>2]=D,D=A[g+12>>2],A[t+376>>2]=A[g+8>>2],A[t+380>>2]=D,D=A[g+4>>2],A[t+368>>2]=A[g>>2],A[t+372>>2]=D,D=A[M+12>>2],A[t+360>>2]=A[M+8>>2],A[t+364>>2]=D,D=A[M+4>>2],A[t+352>>2]=A[M>>2],A[t+356>>2]=D,a0(x,t+368|0,t+352|0),D=A[t+780>>2],A[M+8>>2]=A[t+776>>2],A[M+12>>2]=D,D=A[t+772>>2],A[M>>2]=A[t+768>>2],A[M+4>>2]=D,D=A[C+12>>2],A[t+344>>2]=A[C+8>>2],A[t+348>>2]=D,D=A[C+4>>2],A[t+336>>2]=A[C>>2],A[t+340>>2]=D,D=A[g+12>>2],A[t+328>>2]=A[g+8>>2],A[t+332>>2]=D,D=A[g+4>>2],A[t+320>>2]=A[g>>2],A[t+324>>2]=D,a0(x,t+336|0,t+320|0),D=A[t+780>>2],A[g+8>>2]=A[t+776>>2],A[g+12>>2]=D,D=A[t+772>>2],A[g>>2]=A[t+768>>2],A[g+4>>2]=D,D=A[r+12>>2],A[t+312>>2]=A[r+8>>2],A[t+316>>2]=D,D=A[r+4>>2],A[t+304>>2]=A[r>>2],A[t+308>>2]=D,D=A[C+12>>2],A[t+296>>2]=A[C+8>>2],A[t+300>>2]=D,D=A[C+4>>2],A[t+288>>2]=A[C>>2],A[t+292>>2]=D,a0(x,t+304|0,t+288|0),D=A[t+780>>2],A[C+8>>2]=A[t+776>>2],A[C+12>>2]=D,D=A[t+772>>2],A[C>>2]=A[t+768>>2],A[C+4>>2]=D,D=A[b+12>>2],A[t+280>>2]=A[b+8>>2],A[t+284>>2]=D,D=A[b+4>>2],A[t+272>>2]=A[b>>2],A[t+276>>2]=D,D=A[r+12>>2],A[t+264>>2]=A[r+8>>2],A[t+268>>2]=D,D=A[r+4>>2],A[t+256>>2]=A[r>>2],A[t+260>>2]=D,a0(x,t+272|0,t+256|0),D=A[t+780>>2],A[r+8>>2]=A[t+776>>2],A[r+12>>2]=D,D=A[t+772>>2],A[r>>2]=A[t+768>>2],A[r+4>>2]=D,D=A[e+12>>2],A[t+248>>2]=A[e+8>>2],A[t+252>>2]=D,D=A[e+4>>2],A[t+240>>2]=A[e>>2],A[t+244>>2]=D,D=A[b+12>>2],A[t+232>>2]=A[b+8>>2],A[t+236>>2]=D,D=A[b+4>>2],A[t+224>>2]=A[b>>2],A[t+228>>2]=D,a0(x,t+240|0,t+224|0),D=A[t+780>>2],A[b+8>>2]=A[t+776>>2],A[b+12>>2]=D,D=A[t+772>>2],A[b>>2]=A[t+768>>2],A[b+4>>2]=D,D=A[t+796>>2],A[t+216>>2]=A[t+792>>2],A[t+220>>2]=D,D=A[t+788>>2],A[t+208>>2]=A[t+784>>2],A[t+212>>2]=D,D=A[e+12>>2],A[t+200>>2]=A[e+8>>2],A[t+204>>2]=D,D=A[e+4>>2],A[t+192>>2]=A[e>>2],A[t+196>>2]=D,a0(x,t+208|0,t+192|0),D=A[t+768>>2],q=A[t+772>>2],$=A[t+776>>2],A[e+12>>2]=K^A[t+780>>2],A[e+8>>2]=$^l,A[e+4>>2]=q^v,A[e>>2]=D^Q,D=A[M+12>>2],A[t+792>>2]=A[M+8>>2],A[t+796>>2]=D,D=A[M+4>>2],A[t+784>>2]=A[M>>2],A[t+788>>2]=D,D=A[g+12>>2],A[t+184>>2]=A[g+8>>2],A[t+188>>2]=D,D=A[g+4>>2],A[t+176>>2]=A[g>>2],A[t+180>>2]=D,D=A[M+12>>2],A[t+168>>2]=A[M+8>>2],A[t+172>>2]=D,D=A[M+4>>2],A[t+160>>2]=A[M>>2],A[t+164>>2]=D,a0(x,t+176|0,t+160|0),D=A[t+780>>2],A[M+8>>2]=A[t+776>>2],A[M+12>>2]=D,D=A[t+772>>2],A[M>>2]=A[t+768>>2],A[M+4>>2]=D,D=A[C+12>>2],A[t+152>>2]=A[C+8>>2],A[t+156>>2]=D,D=A[C+4>>2],A[t+144>>2]=A[C>>2],A[t+148>>2]=D,D=A[g+12>>2],A[t+136>>2]=A[g+8>>2],A[t+140>>2]=D,D=A[g+4>>2],A[t+128>>2]=A[g>>2],A[t+132>>2]=D,a0(x,t+144|0,t+128|0),D=A[t+780>>2],A[g+8>>2]=A[t+776>>2],A[g+12>>2]=D,D=A[t+772>>2],A[g>>2]=A[t+768>>2],A[g+4>>2]=D,D=A[r+12>>2],A[t+120>>2]=A[r+8>>2],A[t+124>>2]=D,D=A[r+4>>2],A[t+112>>2]=A[r>>2],A[t+116>>2]=D,D=A[C+12>>2],A[t+104>>2]=A[C+8>>2],A[t+108>>2]=D,D=A[C+4>>2],A[t+96>>2]=A[C>>2],A[t+100>>2]=D,a0(x,t+112|0,t+96|0),D=A[t+780>>2],A[C+8>>2]=A[t+776>>2],A[C+12>>2]=D,D=A[t+772>>2],A[C>>2]=A[t+768>>2],A[C+4>>2]=D,D=A[b+12>>2],A[t+88>>2]=A[b+8>>2],A[t+92>>2]=D,D=A[b+4>>2],A[t+80>>2]=A[b>>2],A[t+84>>2]=D,D=A[r+12>>2],A[t+72>>2]=A[r+8>>2],A[t+76>>2]=D,D=A[r+4>>2],A[t+64>>2]=A[r>>2],A[t+68>>2]=D,a0(x,t+80|0,t- -64|0),D=A[t+780>>2],A[r+8>>2]=A[t+776>>2],A[r+12>>2]=D,D=A[t+772>>2],A[r>>2]=A[t+768>>2],A[r+4>>2]=D,D=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=D,D=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=D,D=A[b+12>>2],A[t+40>>2]=A[b+8>>2],A[t+44>>2]=D,D=A[b+4>>2],A[t+32>>2]=A[b>>2],A[t+36>>2]=D,a0(x,t+48|0,t+32|0),D=A[t+780>>2],A[b+8>>2]=A[t+776>>2],A[b+12>>2]=D,D=A[t+772>>2],A[b>>2]=A[t+768>>2],A[b+4>>2]=D,D=A[t+796>>2],A[t+24>>2]=A[t+792>>2],A[t+28>>2]=D,D=A[t+788>>2],A[t+16>>2]=A[t+784>>2],A[t+20>>2]=D,D=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=D,D=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=D,a0(x,t+16|0,t),x=A[t+768>>2],D=A[t+772>>2],q=A[t+776>>2],A[e+12>>2]=_A^A[t+780>>2],A[e+8>>2]=q^z,A[e+4>>2]=D^p,A[e>>2]=x^J,(0|(V=V+1|0))!=4;);W=t+800|0}function XC(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0;for(W=e=W-48|0,z=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,J=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,c[C+24|0]=J,c[C+25|0]=J>>>8,c[C+26|0]=J>>>16,c[C+27|0]=J>>>24,c[C+28|0]=z,c[C+29|0]=z>>>8,c[C+30|0]=z>>>16,c[C+31|0]=z>>>24,z=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,J=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,c[0|C]=J,c[C+1|0]=J>>>8,c[C+2|0]=J>>>16,c[C+3|0]=J>>>24,c[C+4|0]=z,c[C+5|0]=z>>>8,c[C+6|0]=z>>>16,c[C+7|0]=z>>>24,z=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,J=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,c[C+16|0]=J,c[C+17|0]=J>>>8,c[C+18|0]=J>>>16,c[C+19|0]=J>>>24,c[C+20|0]=z,c[C+21|0]=z>>>8,c[C+22|0]=z>>>16,c[C+23|0]=z>>>24,J=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,g=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,c[C+12|0]=J,c[C+13|0]=J>>>8,c[C+14|0]=J>>>16,c[C+15|0]=J>>>24,g=i[C+31|0],c[C+31|0]=127&g,z1(e,C),n=128&g,W=g=W-960|0,ee(J=g+304|0,e),A[g+304>>2]=A[g+304>>2]+1,j1(J,J),z=w(J=A[g+340>>2],J>>31,486662,0),J=y,fA=(iA=z+16777216|0)>>>0<16777216?J+1|0:J,vA=z-(-33554432&iA)|0,K=w(J=A[g+336>>2],J>>31,486662,0),z=y,_A=w(J=A[g+332>>2],J>>31,486662,0),J=y,uA=K,K=(K=(J=(nA=_A+16777216|0)>>>0<16777216?J+1|0:J)>>25)+z|0,J=(J=(33554431&J)<<7|nA>>>25)>>>0>(sA=uA+J|0)>>>0?K+1|0:K,t=((67108863&(J=(z=sA+33554432|0)>>>0<33554432?J+1|0:J))<<6|z>>>26)+vA|0,A[g+292>>2]=0-t,YA=sA-(-67108864&z)|0,A[g+288>>2]=0-YA,vA=_A-(-33554432&nA)|0,z=w(J=A[g+328>>2],J>>31,486662,0),J=y,nA=w(K=A[g+324>>2],K>>31,486662,0),K=y,uA=z,J=J+(z=(K=(sA=nA+16777216|0)>>>0<16777216?K+1|0:K)>>25)|0,J=(K=uA+(_A=(33554431&K)<<7|sA>>>25)|0)>>>0<_A>>>0?J+1|0:J,r=((67108863&(J=(z=K+33554432|0)>>>0<33554432?J+1|0:J))<<6|z>>>26)+vA|0,A[g+284>>2]=0-r,o=K-(-67108864&z)|0,A[g+280>>2]=0-o,vA=nA-(-33554432&sA)|0,K=w(J=A[g+320>>2],J>>31,486662,0),J=y,nA=w(z=A[g+316>>2],z>>31,486662,0),z=y,uA=K,J=(K=(z=(sA=nA+16777216|0)>>>0<16777216?z+1|0:z)>>25)+J|0,K=J=(z=uA+(_A=(33554431&z)<<7|sA>>>25)|0)>>>0<_A>>>0?J+1|0:J,I=((67108863&(K=(_A=z+33554432|0)>>>0<33554432?K+1|0:K))<<6|_A>>>26)+vA|0,A[g+276>>2]=0-I,a=z-(-67108864&_A)|0,A[g+272>>2]=0-a,uA=nA-(-33554432&sA)|0,J=w(J=A[g+312>>2],J>>31,486662,0),vA=y,_A=w(z=A[g+308>>2],z>>31,486662,0),K=y,z=(33554431&(K=(nA=_A+16777216|0)>>>0<16777216?K+1|0:K))<<7|nA>>>25,K=(K>>25)+vA|0,z=z>>>0>(sA=z+J|0)>>>0?K+1|0:K,_=((67108863&(z=(J=sA+33554432|0)>>>0<33554432?z+1|0:z))<<6|J>>>26)+uA|0,A[g+268>>2]=0-_,s=sA-(-67108864&J)|0,A[g+264>>2]=0-s,sA=_A-(-33554432&nA)|0,z=w((33554431&fA)<<7|iA>>>25,fA>>25,19,0),J=y,_A=z,z=w(K=A[g+304>>2],K>>31,486662,0),J=y+J|0,z=(K=_A+z|0)>>>0>>0?J+1|0:J,h=((67108863&(z=(J=K+33554432|0)>>>0<33554432?z+1|0:z))<<6|J>>>26)+sA|0,A[g+260>>2]=0-h,wA=K-(-67108864&J)|0,A[g+256>>2]=0-wA,gA(z=g+208|0,J=g+256|0),kA(g+160|0,J,z),B=A[g+196>>2],Q=A[g+160>>2],hA=A[g+208>>2],p=A[g+164>>2],l=A[g+168>>2],mA=A[g+212>>2],HA=A[g+216>>2],v=A[g+172>>2],D=A[g+176>>2],aA=A[g+220>>2],EA=A[g+224>>2],b=A[g+180>>2],M=A[g+184>>2],uA=A[g+228>>2],vA=A[g+232>>2],x=A[g+188>>2],q=A[g+192>>2],z=w(J=A[g+244>>2],J>>31,486662,0),J=y,fA=(iA=z+16777216|0)>>>0<16777216?J+1|0:J,V=z-(-33554432&iA)|0,J=w(J=A[g+240>>2],J>>31,486662,0),$=y,_A=w(z=A[g+236>>2],z>>31,486662,0),K=y,z=J,J=(33554431&(K=(nA=_A+16777216|0)>>>0<16777216?K+1|0:K))<<7|nA>>>25,K=(K>>25)+$|0,J=J>>>0>(sA=z+J|0)>>>0?K+1|0:K,K=((67108863&(J=(z=sA+33554432|0)>>>0<33554432?J+1|0:J))<<6|z>>>26)+V|0,A[g+244>>2]=K,A[g+388>>2]=K+(B-t|0),J=sA-(-67108864&z)|0,A[g+240>>2]=J,A[g+384>>2]=J+(q-YA|0),YA=_A-(-33554432&nA)|0,J=w(vA,vA>>31,486662,0),_A=y,nA=w(uA,uA>>31,486662,0),z=y,uA=J,J=(J=(z=(sA=nA+16777216|0)>>>0<16777216?z+1|0:z)>>25)+_A|0,K=J=(K=(33554431&z)<<7|sA>>>25)>>>0>(z=uA+K|0)>>>0?J+1|0:J,_A=((67108863&(K=(_A=z+33554432|0)>>>0<33554432?K+1|0:K))<<6|(J=_A)>>>26)+YA|0,A[g+236>>2]=_A,A[g+380>>2]=_A+(x-r|0),J=z-(-67108864&J)|0,A[g+232>>2]=J,A[g+376>>2]=J+(M-o|0),vA=nA-(-33554432&sA)|0,K=w(EA,EA>>31,486662,0),z=y,_A=w(aA,aA>>31,486662,0),J=y,uA=K,K=(K=(J=(nA=_A+16777216|0)>>>0<16777216?J+1|0:J)>>25)+z|0,z=(J=(33554431&J)<<7|nA>>>25)>>>0>(sA=uA+J|0)>>>0?K+1|0:K,K=((67108863&(z=(J=sA+33554432|0)>>>0<33554432?z+1|0:z))<<6|J>>>26)+vA|0,A[g+228>>2]=K,A[g+372>>2]=K+(b-I|0),J=sA-(-67108864&J)|0,A[g+224>>2]=J,A[g+368>>2]=J+(D-a|0),vA=_A-(-33554432&nA)|0,J=w(HA,HA>>31,486662,0),z=y,nA=w(mA,mA>>31,486662,0),K=y,uA=J,z=(J=(K=(sA=nA+16777216|0)>>>0<16777216?K+1|0:K)>>25)+z|0,J=z=(K=uA+(_A=(33554431&K)<<7|sA>>>25)|0)>>>0<_A>>>0?z+1|0:z,_A=((67108863&(J=(_A=K+33554432|0)>>>0<33554432?J+1|0:J))<<6|(z=_A)>>>26)+vA|0,A[g+220>>2]=_A,A[g+364>>2]=_A+(v-_|0),J=K-(-67108864&z)|0,A[g+216>>2]=J,A[g+360>>2]=J+(l-s|0),sA=nA-(-33554432&sA)|0,z=w((33554431&fA)<<7|iA>>>25,fA>>25,19,0),J=y,K=z,z=w(hA,hA>>31,486662,0),J=y+J|0,J=(K=K+z|0)>>>0>>0?J+1|0:J,fA=((67108863&(J=(z=K+33554432|0)>>>0<33554432?J+1|0:J))<<6|z>>>26)+sA|0,A[g+212>>2]=fA,A[g+356>>2]=fA+(p-h|0),J=K-(-67108864&z)|0,A[g+208>>2]=J,A[g+352>>2]=J+(Q-wA|0),kA(J=g+624|0,z=g+352|0,z),kA(g,z,J),gA(z=g+784|0,g),gA(z,z),kA(J=g+912|0,g,z),gA(z=g+576|0,J),gA(z,z),gA(z,z),gA(z,z),kA(K=g+528|0,J,z),gA(K,K),gA(K,K),kA(K,K,g),J=A[g+564>>2],A[g+512>>2]=A[g+560>>2],A[g+516>>2]=J,J=A[g+556>>2],A[g+504>>2]=A[g+552>>2],A[g+508>>2]=J,J=A[g+548>>2],A[g+496>>2]=A[g+544>>2],A[g+500>>2]=J,J=A[g+540>>2],A[g+488>>2]=A[g+536>>2],A[g+492>>2]=J,J=A[g+532>>2],A[g+480>>2]=A[g+528>>2],A[g+484>>2]=J,gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),kA(K,K,J=g+480|0),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),kA(K,K,J),J=A[g+564>>2],A[g+464>>2]=A[g+560>>2],A[g+468>>2]=J,J=A[g+556>>2],A[g+456>>2]=A[g+552>>2],A[g+460>>2]=J,J=A[g+548>>2],A[g+448>>2]=A[g+544>>2],A[g+452>>2]=J,J=A[g+540>>2],A[g+440>>2]=A[g+536>>2],A[g+444>>2]=J,J=A[g+532>>2],A[g+432>>2]=A[g+528>>2],A[g+436>>2]=J,gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),kA(K,K,z=g+432|0),J=A[g+564>>2],A[g+464>>2]=A[g+560>>2],A[g+468>>2]=J,J=A[g+556>>2],A[g+456>>2]=A[g+552>>2],A[g+460>>2]=J,J=A[g+548>>2],A[g+448>>2]=A[g+544>>2],A[g+452>>2]=J,J=A[g+540>>2],A[g+440>>2]=A[g+536>>2],A[g+444>>2]=J,J=A[g+532>>2],A[g+432>>2]=A[g+528>>2],A[g+436>>2]=J,gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),kA(K,K,z),J=A[g+564>>2],A[g+464>>2]=A[g+560>>2],A[g+468>>2]=J,J=A[g+556>>2],A[g+456>>2]=A[g+552>>2],A[g+460>>2]=J,J=A[g+548>>2],A[g+448>>2]=A[g+544>>2],A[g+452>>2]=J,J=A[g+540>>2],A[g+440>>2]=A[g+536>>2],A[g+444>>2]=J,J=A[g+532>>2],A[g+432>>2]=A[g+528>>2],A[g+436>>2]=J;gA(J=g+528|0,J),(0|(qA=qA+1|0))!=120;);kA(J,J,g+432|0),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),kA(J,J,g+480|0),gA(J,J),gA(J,J),gA(J,J),kA(J,J,g),gA(J,J),w2(g+400|0,J),hA=A[g+256>>2],mA=A[g+260>>2],HA=A[g+264>>2],aA=A[g+268>>2],EA=A[g+272>>2],sA=A[g+276>>2],fA=A[g+280>>2],K=A[g+284>>2],z=A[g+288>>2],uA=(wA=0-(1&c[g+401|0])|0)&(0-(J=A[g+292>>2])^J)^J,A[g+660>>2]=uA,vA=z^wA&(z^0-z),A[g+656>>2]=vA,iA=K^wA&(K^0-K),A[g+652>>2]=iA,_A=fA^wA&(fA^0-fA),A[g+648>>2]=_A,nA=sA^wA&(sA^0-sA),A[g+644>>2]=nA,sA=EA^wA&(EA^0-EA),A[g+640>>2]=sA,fA=aA^wA&(aA^0-aA),A[g+636>>2]=fA,K=HA^wA&(HA^0-HA),A[g+632>>2]=K,z=mA^wA&(mA^0-mA),A[g+628>>2]=z,J=(hA^wA&(hA^0-hA))-(486662&wA)|0,A[g+624>>2]=J+1,A[g+820>>2]=uA,A[g+816>>2]=vA,A[g+812>>2]=iA,A[g+808>>2]=_A,A[g+804>>2]=nA,A[g+800>>2]=sA,A[g+796>>2]=fA,A[g+792>>2]=K,A[g+788>>2]=z,A[g+784>>2]=J-1,j1(g,g+624|0),kA(J=g+912|0,g+784|0,g),w2(C,J),c[C+31|0]=i[C+31|0]|n,T1(g,C)&&(sa(),Q0()),J=A[g+36>>2],A[g+816>>2]=A[g+32>>2],A[g+820>>2]=J,J=A[g+28>>2],A[g+808>>2]=A[g+24>>2],A[g+812>>2]=J,J=A[g+20>>2],A[g+800>>2]=A[g+16>>2],A[g+804>>2]=J,J=A[g+12>>2],A[g+792>>2]=A[g+8>>2],A[g+796>>2]=J,J=A[g+52>>2],A[g+832>>2]=A[g+48>>2],A[g+836>>2]=J,J=A[g+60>>2],A[g+840>>2]=A[g+56>>2],A[g+844>>2]=J,J=A[4+(z=g- -64|0)>>2],A[g+848>>2]=A[z>>2],A[g+852>>2]=J,J=A[g+76>>2],A[g+856>>2]=A[g+72>>2],A[g+860>>2]=J,J=A[g+4>>2],A[g+784>>2]=A[g>>2],A[g+788>>2]=J,J=A[g+44>>2],A[g+824>>2]=A[g+40>>2],A[g+828>>2]=J,J=A[g+116>>2],A[g+896>>2]=A[g+112>>2],A[g+900>>2]=J,J=A[g+108>>2],A[g+888>>2]=A[g+104>>2],A[g+892>>2]=J,J=A[g+100>>2],A[g+880>>2]=A[g+96>>2],A[g+884>>2]=J,J=A[g+92>>2],A[g+872>>2]=A[g+88>>2],A[g+876>>2]=J,J=A[g+84>>2],A[g+864>>2]=A[g+80>>2],A[g+868>>2]=J,P2(_A=g+624|0,nA=g+784|0),kA(nA,_A,sA=g+744|0),kA(z=g+824|0,K=g+664|0,fA=g+704|0),kA(J=g+864|0,fA,sA),P2(_A,nA),kA(nA,_A,sA),kA(z,K,fA),kA(J,fA,sA),P2(_A,nA),kA(g,_A,sA),kA(z=g+40|0,K,fA),kA(J=g+80|0,fA,sA),kA(g+120|0,_A,K),j1(_A,J),kA(nA,g,_A),kA(J=g+912|0,z,_A),w2(C,J),w2(g+576|0,nA),c[C+31|0]=i[C+31|0]^i[g+576|0]<<7,W=g+960|0,W=e+48|0}function r1(C){var g,e=0,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0;W=g=W-16|0;A:{g:{C:{e:{t:{o:{i:{r:{c:{a:{if((C|=0)>>>0<=244){if(3&(e=(o=A[9405])>>>(C=(_=C>>>0<11?16:C+11&504)>>>3|0)|0)){C=37660+(e=(t=C+(1&~e)|0)<<3)|0,e=A[e+37668>>2],(0|C)!=(0|(r=A[e+8>>2]))?(A[r+12>>2]=C,A[C+8>>2]=r):(B=37620,Q=pA(-2,t)&o,A[B>>2]=Q),C=e+8|0,t<<=3,A[e+4>>2]=3|t,A[4+(e=e+t|0)>>2]=1|A[e+4>>2];break A}if((s=A[9407])>>>0>=_>>>0)break a;if(e){e=37660+(t=(C=qe((0-(t=2<>2],(0|e)!=(0|(r=A[t+8>>2]))?(A[r+12>>2]=e,A[e+8>>2]=r):(o=pA(-2,C)&o,A[9405]=o),A[t+4>>2]=3|_,I=(C<<=3)-_|0,A[4+(a=t+_|0)>>2]=1|I,A[C+t>>2]=I,s&&(C=37660+(-8&s)|0,r=A[9410],(e=1<<(s>>>3))&o?e=A[C+8>>2]:(A[9405]=e|o,e=C),A[C+8>>2]=r,A[e+12>>2]=r,A[r+12>>2]=C,A[r+8>>2]=e),C=t+8|0,A[9410]=a,A[9407]=I;break A}if(!(n=A[9406]))break a;for(t=A[37924+(qe(n)<<2)>>2],I=(-8&A[t+4>>2])-_|0,e=t;(C=A[e+16>>2])||(C=A[e+20>>2]);)I=(e=(r=(-8&A[C+4>>2])-_|0)>>>0>>0)?r:I,t=e?C:t,e=C;if(h=A[t+24>>2],(0|t)!=(0|(C=A[t+12>>2]))){e=A[t+8>>2],A[e+12>>2]=C,A[C+8>>2]=e;break g}if(e=A[t+20>>2])r=t+20|0;else{if(!(e=A[t+16>>2]))break c;r=t+16|0}for(;a=r,r=(C=e)+20|0,(e=A[C+20>>2])||(r=C+16|0,e=A[C+16>>2]););A[a>>2]=0;break g}if(_=-1,!(C>>>0>4294967231)&&(_=-8&(e=C+11|0),a=A[9406])){s=31,I=0-_|0,C>>>0<=16777204&&(s=62+((_>>>38-(C=A1(e>>>8|0))&1)-(C<<1)|0)|0);_:{I:{if(e=A[37924+(s<<2)>>2])for(C=0,t=_<<((0|s)!=31?25-(s>>>1|0):0);;){if(!((o=(-8&A[e+4>>2])-_|0)>>>0>=I>>>0||(r=e,I=o))){I=0,C=e;break I}if(o=A[e+20>>2],e=A[16+((t>>>29&4)+e|0)>>2],C=o?(0|o)==(0|e)?C:o:C,t<<=1,!e)break}else C=0;if(!(C|r)){if(r=0,!(C=(0-(C=2<>2]}if(!C)break _}for(;I=(e=(t=(-8&A[C+4>>2])-_|0)>>>0>>0)?t:I,r=e?C:r,C=(e=A[C+16>>2])||A[C+20>>2];);}if(!(!r|A[9407]-_>>>0<=I>>>0)){if(s=A[r+24>>2],(0|r)!=(0|(C=A[r+12>>2]))){e=A[r+8>>2],A[e+12>>2]=C,A[C+8>>2]=e;break C}if(e=A[r+20>>2])t=r+20|0;else{if(!(e=A[r+16>>2]))break r;t=r+16|0}for(;o=t,t=(C=e)+20|0,(e=A[C+20>>2])||(t=C+16|0,e=A[C+16>>2]););A[o>>2]=0;break C}}}if((r=A[9407])>>>0>=_>>>0){C=A[9410],(e=r-_|0)>>>0>=16?(A[4+(t=C+_|0)>>2]=1|e,A[C+r>>2]=e,A[C+4>>2]=3|_):(A[C+4>>2]=3|r,A[4+(e=C+r|0)>>2]=1|A[e+4>>2],t=0,e=0),A[9407]=e,A[9410]=t,C=C+8|0;break A}if((t=A[9408])>>>0>_>>>0){e=t-_|0,A[9408]=e,t=(C=A[9411])+_|0,A[9411]=t,A[t+4>>2]=1|e,A[C+4>>2]=3|_,C=C+8|0;break A}if(C=0,I=_+47|0,A[9523]?e=A[9525]:(A[9526]=-1,A[9527]=-1,A[9524]=4096,A[9525]=4096,A[9523]=g+12&-16^1431655768,A[9528]=0,A[9516]=0,e=4096),(e=(o=I+e|0)&(a=0-e|0))>>>0<=_>>>0||(s=A[9515])&&(r=(h=A[9513])+e|0)>>>0<=h>>>0|r>>>0>s>>>0)break A;a:{if(!(4&i[38064])){_:{I:{s:{B:{if(r=A[9411])for(C=38068;;){if((s=A[C>>2])>>>0<=r>>>0&r>>>0>2]>>>0)break B;if(!(C=A[C+8>>2]))break}if((0|(t=Tg(0)))==-1||(o=e,(r=(C=A[9524])-1|0)&t&&(o=(e-t|0)+(t+r&0-C)|0),o>>>0<=_>>>0)||(r=A[9515])&&(C=(a=A[9513])+o|0)>>>0<=a>>>0|C>>>0>r>>>0)break _;if((0|t)!=(0|(C=Tg(o))))break s;break a}if((0|(t=Tg(o=a&o-t)))==(A[C>>2]+A[C+4>>2]|0))break I;C=t}if((0|C)==-1)break _;if(_+48>>>0<=o>>>0){t=C;break a}if((0|Tg(t=(t=A[9525])+(I-o|0)&0-t))==-1)break _;o=t+o|0,t=C;break a}if((0|t)!=-1)break a}A[9516]=4|A[9516]}if((0|(t=Tg(e)))==-1|(0|(C=Tg(0)))==-1|C>>>0<=t>>>0||(o=C-t|0)>>>0<=_+40>>>0)break t}C=A[9513]+o|0,A[9513]=C,C>>>0>O2[9514]&&(A[9514]=C);a:{if(I=A[9411]){for(C=38068;;){if(((e=A[C>>2])+(r=A[C+4>>2])|0)==(0|t))break a;if(!(C=A[C+8>>2]))break}break i}for((C=A[9409])>>>0<=t>>>0&&C||(A[9409]=t),C=0,A[9518]=o,A[9517]=t,A[9413]=-1,A[9414]=A[9523],A[9520]=0;r=37660+(e=C<<3)|0,A[e+37668>>2]=r,A[e+37672>>2]=r,(0|(C=C+1|0))!=32;);r=(C=o-40|0)-(e=-8-t&7)|0,A[9408]=r,e=e+t|0,A[9411]=e,A[e+4>>2]=1|r,A[4+(C+t|0)>>2]=40,A[9412]=A[9527];break o}if(8&A[C+12>>2]|t>>>0<=I>>>0|e>>>0>I>>>0)break i;A[C+4>>2]=r+o,e=(C=-8-I&7)+I|0,A[9411]=e,C=(t=A[9408]+o|0)-C|0,A[9408]=C,A[e+4>>2]=1|C,A[4+(t+I|0)>>2]=40,A[9412]=A[9527];break o}C=0;break g}C=0;break C}O2[9409]>t>>>0&&(A[9409]=t),r=t+o|0,C=38068;i:{for(;;){if((0|(e=A[C>>2]))!=(0|r)){if(C=A[C+8>>2])continue;break i}break}if(!(8&i[C+12|0]))break e}for(C=38068;!((e=A[C>>2])>>>0<=I>>>0&&(r=e+A[C+4>>2]|0)>>>0>I>>>0);)C=A[C+8>>2];for(a=(C=o-40|0)-(e=-8-t&7)|0,A[9408]=a,e=e+t|0,A[9411]=e,A[e+4>>2]=1|a,A[4+(C+t|0)>>2]=40,A[9412]=A[9527],A[(e=(C=(r+(39-r&7)|0)-47|0)>>>0>>0?I:C)+4>>2]=27,C=A[9520],A[e+16>>2]=A[9519],A[e+20>>2]=C,C=A[9518],A[e+8>>2]=A[9517],A[e+12>>2]=C,A[9519]=e+8,A[9518]=o,A[9517]=t,A[9520]=0,C=e+24|0;A[C+4>>2]=7,t=C+8|0,C=C+4|0,t>>>0>>0;);if((0|e)!=(0|I)){A[e+4>>2]=-2&A[e+4>>2],t=e-I|0,A[I+4>>2]=1|t,A[e>>2]=t;i:if(t>>>0<=255)C=37660+(-8&t)|0,(e=A[9405])&(t=1<<(t>>>3))?e=A[C+8>>2]:(A[9405]=e|t,e=C),A[C+8>>2]=I,A[e+12>>2]=I,r=8,t=12;else{C=31,t>>>0<=16777215&&(C=62+((t>>>38-(C=A1(t>>>8|0))&1)-(C<<1)|0)|0),A[I+28>>2]=C,A[I+16>>2]=0,A[I+20>>2]=0,e=37924+(C<<2)|0;r:{if((r=A[9406])&(o=1<>>1|0):0),r=A[e>>2];;){if((0|t)==(-8&A[(e=r)+4>>2]))break r;if(r=C>>>29|0,C<<=1,!(r=A[16+(o=(4&r)+e|0)>>2]))break}A[o+16>>2]=I}else A[9406]=r|o,A[e>>2]=I;A[I+24>>2]=e,C=e=I,r=12,t=8;break i}C=A[e+8>>2],A[C+12>>2]=I,A[e+8>>2]=I,A[I+8>>2]=C,C=0,r=12,t=24}A[r+I>>2]=e,A[t+I>>2]=C}}if(!((C=A[9408])>>>0<=_>>>0)){e=C-_|0,A[9408]=e,t=(C=A[9411])+_|0,A[9411]=t,A[t+4>>2]=1|e,A[C+4>>2]=3|_,C=C+8|0;break A}}A[9404]=48,C=0;break A}A[C>>2]=t,A[C+4>>2]=A[C+4>>2]+o,A[4+(s=(-8-t&7)+t|0)>>2]=3|_,a=(o=e+(-8-e&7)|0)-(I=_+s|0)|0;e:if(A[9411]!=(0|o))if(A[9410]!=(0|o)){if((3&(C=A[o+4>>2]))==1){h=-8&C,t=A[o+12>>2];t:if(C>>>0<=255){if((0|(e=A[o+8>>2]))==(0|t)){B=37620,Q=A[9405]&pA(-2,C>>>3|0),A[B>>2]=Q;break t}A[e+12>>2]=t,A[t+8>>2]=e}else{_=A[o+24>>2];o:if((0|t)==(0|o)){i:{if(C=A[o+20>>2])e=o+20|0;else{if(!(C=A[o+16>>2]))break i;e=o+16|0}for(;r=e,t=C,e=C+20|0,(C=A[C+20>>2])||(e=t+16|0,C=A[t+16>>2]););A[r>>2]=0;break o}t=0}else C=A[o+8>>2],A[C+12>>2]=t,A[t+8>>2]=C;if(_){C=A[o+28>>2];o:{if(A[(e=37924+(C<<2)|0)>>2]==(0|o)){if(A[e>>2]=t,t)break o;B=37624,Q=A[9406]&pA(-2,C),A[B>>2]=Q;break t}if(A[_+(A[_+16>>2]==(0|o)?16:20)>>2]=t,!t)break t}A[t+24>>2]=_,(C=A[o+16>>2])&&(A[t+16>>2]=C,A[C+24>>2]=t),(C=A[o+20>>2])&&(A[t+20>>2]=C,A[C+24>>2]=t)}}a=a+h|0,C=A[4+(o=o+h|0)>>2]}if(A[o+4>>2]=-2&C,A[I+4>>2]=1|a,A[I+a>>2]=a,a>>>0<=255)C=37660+(-8&a)|0,(e=A[9405])&(t=1<<(a>>>3))?e=A[C+8>>2]:(A[9405]=e|t,e=C),A[C+8>>2]=I,A[e+12>>2]=I,A[I+12>>2]=C,A[I+8>>2]=e;else{t=31,a>>>0<=16777215&&(t=62+((a>>>38-(C=A1(a>>>8|0))&1)-(C<<1)|0)|0),A[I+28>>2]=t,A[I+16>>2]=0,A[I+20>>2]=0,C=37924+(t<<2)|0;t:{if((e=A[9406])&(r=1<>>1|0):0),e=A[C>>2];;){if((-8&A[(C=e)+4>>2])==(0|a))break t;if(e=t>>>29|0,t<<=1,!(e=A[16+(r=(4&e)+C|0)>>2]))break}A[r+16>>2]=I}else A[9406]=e|r,A[C>>2]=I;A[I+24>>2]=C,A[I+12>>2]=I,A[I+8>>2]=I;break e}e=A[C+8>>2],A[e+12>>2]=I,A[C+8>>2]=I,A[I+24>>2]=0,A[I+12>>2]=C,A[I+8>>2]=e}}else A[9410]=I,C=A[9407]+a|0,A[9407]=C,A[I+4>>2]=1|C,A[C+I>>2]=C;else A[9411]=I,C=A[9408]+a|0,A[9408]=C,A[I+4>>2]=1|C;C=s+8|0;break A}C:if(s){e=A[r+28>>2];e:{if(A[(t=37924+(e<<2)|0)>>2]==(0|r)){if(A[t>>2]=C,C)break e;a=pA(-2,e)&a,A[9406]=a;break C}if(A[s+(A[s+16>>2]==(0|r)?16:20)>>2]=C,!C)break C}A[C+24>>2]=s,(e=A[r+16>>2])&&(A[C+16>>2]=e,A[e+24>>2]=C),(e=A[r+20>>2])&&(A[C+20>>2]=e,A[e+24>>2]=C)}C:if(I>>>0<=15)C=I+_|0,A[r+4>>2]=3|C,A[4+(C=C+r|0)>>2]=1|A[C+4>>2];else if(A[r+4>>2]=3|_,A[4+(o=r+_|0)>>2]=1|I,A[I+o>>2]=I,I>>>0<=255)C=37660+(-8&I)|0,(e=A[9405])&(t=1<<(I>>>3))?e=A[C+8>>2]:(A[9405]=e|t,e=C),A[C+8>>2]=o,A[e+12>>2]=o,A[o+12>>2]=C,A[o+8>>2]=e;else{C=31,I>>>0<=16777215&&(C=62+((I>>>38-(C=A1(I>>>8|0))&1)-(C<<1)|0)|0),A[o+28>>2]=C,A[o+16>>2]=0,A[o+20>>2]=0,e=37924+(C<<2)|0;e:{if((t=1<>>1|0):0),e=A[e>>2];;){if(t=e,(-8&A[e+4>>2])==(0|I))break e;if(a=C>>>29|0,C<<=1,!(e=A[16+(a=e+(4&a)|0)>>2]))break}A[a+16>>2]=o,A[o+24>>2]=t}else A[9406]=t|a,A[e>>2]=o,A[o+24>>2]=e;A[o+12>>2]=o,A[o+8>>2]=o;break C}C=A[t+8>>2],A[C+12>>2]=o,A[t+8>>2]=o,A[o+24>>2]=0,A[o+12>>2]=t,A[o+8>>2]=C}C=r+8|0;break A}g:if(h){e=A[t+28>>2];C:{if(A[(r=37924+(e<<2)|0)>>2]==(0|t)){if(A[r>>2]=C,C)break C;B=37624,Q=pA(-2,e)&n,A[B>>2]=Q;break g}if(A[h+(A[h+16>>2]==(0|t)?16:20)>>2]=C,!C)break g}A[C+24>>2]=h,(e=A[t+16>>2])&&(A[C+16>>2]=e,A[e+24>>2]=C),(e=A[t+20>>2])&&(A[C+20>>2]=e,A[e+24>>2]=C)}I>>>0<=15?(C=I+_|0,A[t+4>>2]=3|C,A[4+(C=C+t|0)>>2]=1|A[C+4>>2]):(A[t+4>>2]=3|_,A[4+(a=t+_|0)>>2]=1|I,A[I+a>>2]=I,s&&(C=37660+(-8&s)|0,r=A[9410],(e=1<<(s>>>3))&o?e=A[C+8>>2]:(A[9405]=e|o,e=C),A[C+8>>2]=r,A[e+12>>2]=r,A[r+12>>2]=C,A[r+8>>2]=e),A[9410]=a,A[9407]=I),C=t+8|0}return W=g+16|0,0|C}function oC(C,g,e,t,r,o){var I,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0;if(W=I=W-592|0,s=-1,or(_=C+32|0)&&!a1(C)&&O0(r)&&!a1(r)&&!ke(n=I+128|0,r)){for(b0(s=I+384|0),o&&x2(s,35600,34,0),x2(s,C,32,0),x2(s,r,32,0),x2(s,g,e,t),e1(g=s,s=I+320|0),d1(s),t=I+8|0,e=_,r=0,g=0,W=a=W-2272|0;o=a+2016|0,_=i[s+(r>>>3|0)|0],c[o+r|0]=_>>>(6&r)&1,c[(h=o)+(o=1|r)|0]=_>>>(7&o)&1,(0|(r=r+2|0))!=256;);for(;;){g=(o=g)+1|0;A:if(!(o>>>0>254)&&i[0|(Q=(r=a+2016|0)+o|0)]){g:if(r=c[0|(B=g+r|0)])if((0|(r=(s=r<<1)+(_=c[0|Q])|0))<=15)c[0|Q]=r,c[0|B]=0;else{if((0|(r=_-s|0))<-15)break A;for(c[0|Q]=r,r=g;;){if(!i[0|(_=(a+2016|0)+r|0)]){c[0|_]=1;break g}if(c[0|_]=0,_=r>>>0<255,r=r+1|0,!_)break}}if(!(o>>>0>253)){g:if(_=c[0|(h=(r=o+2|0)+(a+2016|0)|0)])if((0|(_=(B=_<<2)+(s=c[0|Q])|0))>=16){if((0|(_=s-B|0))<-15)break A;for(c[0|Q]=_;;){if(i[0|(_=(a+2016|0)+r|0)]){if(c[0|_]=0,_=r>>>0<255,r=r+1|0,_)continue;break g}break}c[0|_]=1}else c[0|Q]=_,c[0|h]=0;if((0|o)!=253){g:if(_=c[0|(h=(r=o+3|0)+(a+2016|0)|0)])if((0|(_=(B=_<<3)+(s=c[0|Q])|0))>=16){if((0|(_=s-B|0))<-15)break A;for(c[0|Q]=_;;){if(i[0|(_=(a+2016|0)+r|0)]){if(c[0|_]=0,_=r>>>0<255,r=r+1|0,_)continue;break g}break}c[0|_]=1}else c[0|Q]=_,c[0|h]=0;if(!(o>>>0>251)){g:if(_=c[0|(h=(r=o+4|0)+(a+2016|0)|0)])if((0|(_=(B=_<<4)+(s=c[0|Q])|0))>=16){if((0|(_=s-B|0))<-15)break A;for(c[0|Q]=_;;){if(i[0|(_=(a+2016|0)+r|0)]){if(c[0|_]=0,_=r>>>0<255,r=r+1|0,_)continue;break g}break}c[0|_]=1}else c[0|Q]=_,c[0|h]=0;if((0|o)!=251){g:if(_=c[0|(h=(r=o+5|0)+(a+2016|0)|0)])if((0|(_=(B=_<<5)+(s=c[0|Q])|0))>=16){if((0|(_=s-B|0))<-15)break A;for(c[0|Q]=_;;){if(i[0|(_=(a+2016|0)+r|0)]){if(c[0|_]=0,_=r>>>0<255,r=r+1|0,_)continue;break g}break}c[0|_]=1}else c[0|Q]=_,c[0|h]=0;if(!(o>>>0>249)&&(o=c[0|(B=(r=o+6|0)+(a+2016|0)|0)]))if((0|(o=(s=o<<6)+(_=c[0|Q])|0))>=16){if((0|(o=_-s|0))<-15)break A;for(c[0|Q]=o;;){if(i[0|(o=(a+2016|0)+r|0)]){if(c[0|o]=0,o=r>>>0<255,r=r+1|0,o)continue;break A}break}c[0|o]=1}else c[0|Q]=o,c[0|B]=0}}}}}if((0|g)==256)break}for(r=0;g=a+1760|0,o=i[e+(r>>>3|0)|0],c[g+r|0]=o>>>(6&r)&1,c[(_=g)+(g=1|r)|0]=o>>>(7&g)&1,(0|(r=r+2|0))!=256;);for(g=0;;){e=g,g=g+1|0;A:if(!(e>>>0>254)&&i[0|(h=(r=a+1760|0)+e|0)]){g:if(r=c[0|(s=g+r|0)])if((0|(r=(_=r<<1)+(o=c[0|h])|0))<=15)c[0|h]=r,c[0|s]=0;else{if((0|(r=o-_|0))<-15)break A;for(c[0|h]=r,r=g;;){if(!i[0|(o=(a+1760|0)+r|0)]){c[0|o]=1;break g}if(c[0|o]=0,o=r>>>0<255,r=r+1|0,!o)break}}if(!(e>>>0>253)){g:if(o=c[0|(B=(r=e+2|0)+(a+1760|0)|0)])if((0|(o=(s=o<<2)+(_=c[0|h])|0))>=16){if((0|(o=_-s|0))<-15)break A;for(c[0|h]=o;;){if(i[0|(o=(a+1760|0)+r|0)]){if(c[0|o]=0,o=r>>>0<255,r=r+1|0,o)continue;break g}break}c[0|o]=1}else c[0|h]=o,c[0|B]=0;if((0|e)!=253){g:if(o=c[0|(B=(r=e+3|0)+(a+1760|0)|0)])if((0|(o=(s=o<<3)+(_=c[0|h])|0))>=16){if((0|(o=_-s|0))<-15)break A;for(c[0|h]=o;;){if(i[0|(o=(a+1760|0)+r|0)]){if(c[0|o]=0,o=r>>>0<255,r=r+1|0,o)continue;break g}break}c[0|o]=1}else c[0|h]=o,c[0|B]=0;if(!(e>>>0>251)){g:if(o=c[0|(B=(r=e+4|0)+(a+1760|0)|0)])if((0|(o=(s=o<<4)+(_=c[0|h])|0))>=16){if((0|(o=_-s|0))<-15)break A;for(c[0|h]=o;;){if(i[0|(o=(a+1760|0)+r|0)]){if(c[0|o]=0,o=r>>>0<255,r=r+1|0,o)continue;break g}break}c[0|o]=1}else c[0|h]=o,c[0|B]=0;if((0|e)!=251){g:if(o=c[0|(B=(r=e+5|0)+(a+1760|0)|0)])if((0|(o=(s=o<<5)+(_=c[0|h])|0))>=16){if((0|(o=_-s|0))<-15)break A;for(c[0|h]=o;;){if(i[0|(o=(a+1760|0)+r|0)]){if(c[0|o]=0,o=r>>>0<255,r=r+1|0,o)continue;break g}break}c[0|o]=1}else c[0|h]=o,c[0|B]=0;if(!(e>>>0>249)&&(e=c[0|(s=(r=e+6|0)+(a+1760|0)|0)]))if((0|(e=(_=e<<6)+(o=c[0|h])|0))>=16){if((0|(e=o-_|0))<-15)break A;for(c[0|h]=e;;){if(i[0|(e=(a+1760|0)+r|0)]){if(c[0|e]=0,e=r>>>0<255,r=r+1|0,e)continue;break A}break}c[0|e]=1}else c[0|h]=e,c[0|s]=0}}}}}if((0|g)==256)break}for(D2(r=a+480|0,n),g=A[n+36>>2],A[a+192>>2]=A[n+32>>2],A[a+196>>2]=g,g=A[n+28>>2],A[a+184>>2]=A[n+24>>2],A[a+188>>2]=g,g=A[n+20>>2],A[a+176>>2]=A[n+16>>2],A[a+180>>2]=g,g=A[n+12>>2],A[a+168>>2]=A[n+8>>2],A[a+172>>2]=g,g=A[n+4>>2],A[a+160>>2]=A[n>>2],A[a+164>>2]=g,g=A[n+52>>2],A[a+208>>2]=A[n+48>>2],A[a+212>>2]=g,g=A[n+60>>2],A[a+216>>2]=A[n+56>>2],A[a+220>>2]=g,g=A[4+(e=n- -64|0)>>2],A[a+224>>2]=A[e>>2],A[a+228>>2]=g,g=A[n+76>>2],A[a+232>>2]=A[n+72>>2],A[a+236>>2]=g,g=A[n+44>>2],A[a+200>>2]=A[n+40>>2],A[a+204>>2]=g,g=A[n+92>>2],A[a+248>>2]=A[n+88>>2],A[a+252>>2]=g,g=A[n+100>>2],A[a+256>>2]=A[n+96>>2],A[a+260>>2]=g,g=A[n+108>>2],A[a+264>>2]=A[n+104>>2],A[a+268>>2]=g,g=A[n+116>>2],A[a+272>>2]=A[n+112>>2],A[a+276>>2]=g,g=A[n+84>>2],A[a+240>>2]=A[n+80>>2],A[a+244>>2]=g,P2(o=a+320|0,e=a+160|0),kA(a,o,p=a+440|0),kA(a+40|0,l=a+360|0,v=a+400|0),kA(a+80|0,v,p),kA(a+120|0,o,l),b2(o,a,r),kA(e,o,p),kA(b=a+200|0,l,v),kA(M=a+240|0,v,p),kA(D=a+280|0,o,l),D2(g=a+640|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(g=a+800|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(g=a+960|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(g=a+1120|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(g=a+1280|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(g=a+1440|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(a+1600|0,e),A[t+32>>2]=0,A[t+36>>2]=0,A[t+24>>2]=0,A[t+28>>2]=0,A[t+16>>2]=0,A[t+20>>2]=0,A[t+8>>2]=0,A[t+12>>2]=0,A[t>>2]=0,A[t+4>>2]=0,A[t+44>>2]=0,A[t+48>>2]=0,A[t+40>>2]=1,A[t+52>>2]=0,A[t+56>>2]=0,A[t+60>>2]=0,A[t+64>>2]=0,A[t+68>>2]=0,A[t+72>>2]=0,A[t+84>>2]=0,A[t+88>>2]=0,A[t+76>>2]=0,A[t+80>>2]=1,A[t+92>>2]=0,A[t+96>>2]=0,A[t+100>>2]=0,A[t+104>>2]=0,A[t+108>>2]=0,A[t+112>>2]=0,A[t+116>>2]=0,EA=t+80|0,YA=t+40|0,g=255;;){A:{g:{if(!i[(e=a+2016|0)+g|0]&&!i[(r=a+1760|0)+g|0]){if(!(i[(o=e)+(e=g-1|0)|0]|i[e+r|0]))break g;g=e}if((0|g)<0)break A;for(;P2(r=a+320|0,t),e=g,(0|(o=c[g+(a+2016|0)|0]))>0?(kA(g=a+160|0,r,p),kA(b,l,v),kA(M,v,p),kA(D,r,l),b2(r,g,(a+480|0)+M0((254&o)>>>1|0,160)|0)):(0|o)>=0||(kA(g=a+160|0,r=a+320|0,p),kA(b,l,v),kA(M,v,p),kA(D,r,l),qg(r,g,(a+480|0)+M0((0-o&254)>>>1|0,160)|0)),(0|(uA=c[e+(a+1760|0)|0]))>0?(kA(g=a+160|0,r=a+320|0,p),kA(b,l,v),kA(M,v,p),kA(D,r,l),yC(r,g,M0((254&uA)>>>1|0,120)+1728|0)):(0|uA)>=0||(kA(a+160|0,vA=a+320|0,p),kA(b,l,v),kA(M,v,p),kA(D,vA,l),x=A[a+160>>2],q=A[a+200>>2],V=A[a+164>>2],$=A[a+204>>2],K=A[a+168>>2],J=A[a+208>>2],z=A[a+172>>2],_A=A[a+212>>2],sA=A[a+176>>2],nA=A[a+216>>2],fA=A[a+180>>2],Q=A[a+220>>2],h=A[a+184>>2],B=A[a+224>>2],s=A[a+188>>2],n=A[a+228>>2],_=A[a+192>>2],o=A[a+232>>2],r=A[a+236>>2],g=A[a+196>>2],A[a+396>>2]=r-g,A[a+392>>2]=o-_,A[a+388>>2]=n-s,A[a+384>>2]=B-h,A[a+380>>2]=Q-fA,A[a+376>>2]=nA-sA,A[a+372>>2]=_A-z,A[a+368>>2]=J-K,A[a+364>>2]=$-V,A[a+360>>2]=q-x,A[a+356>>2]=g+r,A[a+352>>2]=o+_,A[a+348>>2]=s+n,A[a+344>>2]=h+B,A[a+340>>2]=Q+fA,A[a+336>>2]=sA+nA,A[a+332>>2]=z+_A,A[a+328>>2]=K+J,A[a+324>>2]=V+$,A[a+320>>2]=x+q,kA(v,vA,40+(g=M0((0-uA&254)>>>1|0,120)+1728|0)|0),kA(l,l,g),kA(p,g+80|0,D),qA=A[a+276>>2],$A=A[a+272>>2],uA=A[a+268>>2],vA=A[a+264>>2],h=A[a+260>>2],B=A[a+256>>2],s=A[a+252>>2],n=A[a+248>>2],_=A[a+244>>2],o=A[a+240>>2],wA=A[a+360>>2],iA=A[a+400>>2],hA=A[a+364>>2],mA=A[a+404>>2],HA=A[a+368>>2],aA=A[a+408>>2],x=A[a+372>>2],q=A[a+412>>2],V=A[a+376>>2],$=A[a+416>>2],K=A[a+380>>2],J=A[a+420>>2],z=A[a+384>>2],_A=A[a+424>>2],sA=A[a+388>>2],nA=A[a+428>>2],fA=A[a+392>>2],Q=A[a+432>>2],r=A[a+396>>2],g=A[a+436>>2],A[a+396>>2]=r+g,A[a+392>>2]=Q+fA,A[a+388>>2]=sA+nA,A[a+384>>2]=z+_A,A[a+380>>2]=K+J,A[a+376>>2]=V+$,A[a+372>>2]=x+q,A[a+368>>2]=HA+aA,A[a+364>>2]=hA+mA,A[a+360>>2]=wA+iA,A[a+356>>2]=g-r,A[a+352>>2]=Q-fA,A[a+348>>2]=nA-sA,A[a+344>>2]=_A-z,A[a+340>>2]=J-K,A[a+336>>2]=$-V,A[a+332>>2]=q-x,A[a+328>>2]=aA-HA,A[a+324>>2]=mA-hA,A[a+320>>2]=iA-wA,x=o<<1,q=A[a+440>>2],A[a+400>>2]=x-q,V=_<<1,$=A[a+444>>2],A[a+404>>2]=V-$,K=n<<1,J=A[a+448>>2],A[a+408>>2]=K-J,z=s<<1,_A=A[a+452>>2],A[a+412>>2]=z-_A,sA=B<<1,nA=A[a+456>>2],A[a+416>>2]=sA-nA,fA=h<<1,Q=A[a+460>>2],A[a+420>>2]=fA-Q,h=vA<<1,B=A[a+464>>2],A[a+424>>2]=h-B,s=uA<<1,n=A[a+468>>2],A[a+428>>2]=s-n,_=$A<<1,o=A[a+472>>2],A[a+432>>2]=_-o,r=qA<<1,g=A[a+476>>2],A[a+436>>2]=r-g,A[a+440>>2]=x+q,A[a+444>>2]=V+$,A[a+448>>2]=K+J,A[a+452>>2]=z+_A,A[a+456>>2]=sA+nA,A[a+460>>2]=Q+fA,A[a+464>>2]=h+B,A[a+468>>2]=s+n,A[a+472>>2]=o+_,A[a+476>>2]=g+r),kA(t,a+320|0,p),kA(YA,l,v),kA(EA,v,p),g=e-1|0,(0|e)>0;);break A}if(g=g-2|0,e)continue}break}W=a+2272|0,eg(g=I+288|0,t),g0=-1,i0=Xg(g,C),s=((0|C)==(0|g)?g0:i0)|p2(C,g,32)}return W=I+592|0,s}function kA(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA,iA,hA,mA,HA,aA,EA,YA,qA,$A,g0,i0,u,d,H,FA,VA,c0,_0,I0,h0,D0,MA,O=0,rA=0,cA=0,XA=0,A0=0,s0=0,p0=0,f0=0,E0=0,w0=0,u0=0,k0=0,F0=0,N0=0,x0=0,L0=0,T0=0,j0=0,V0=0,W0=0,C2=0,e2=0,r2=0,i2=0,s2=0;O=w(t=A[e+4>>2],B=t>>31,T0=(b=A[g+20>>2])<<1,wA=T0>>31),cA=y,rA=(F0=w(x0=A[e>>2],o=x0>>31,r=A[g+24>>2],I=r>>31))+O|0,O=y+cA|0,O=rA>>>0>>0?O+1|0:O,E0=w(a=A[e+8>>2],l=a>>31,F0=A[g+16>>2],_=F0>>31),cA=y+O|0,cA=(rA=E0+rA|0)>>>0>>0?cA+1|0:cA,O=(E0=w(Q=A[e+12>>2],M=Q>>31,z=(x=A[g+12>>2])<<1,iA=z>>31))+rA|0,rA=y+cA|0,rA=O>>>0>>0?rA+1|0:rA,cA=(N0=w(v=A[e+16>>2],_A=v>>31,E0=A[g+8>>2],s=E0>>31))+O|0,O=y+rA|0,O=cA>>>0>>0?O+1|0:O,rA=cA,cA=w(q=A[e+20>>2],hA=q>>31,sA=(V=A[g+4>>2])<<1,mA=sA>>31),O=y+O|0,O=(rA=rA+cA|0)>>>0>>0?O+1|0:O,FA=p0=A[e+24>>2],cA=(w0=w(p0,d=p0>>31,N0=A[g>>2],h=N0>>31))+rA|0,rA=y+O|0,rA=cA>>>0>>0?rA+1|0:rA,HA=A[e+28>>2],O=(w0=w(k0=M0(HA,19),$=k0>>31,nA=(K=A[g+36>>2])<<1,aA=nA>>31))+cA|0,cA=y+rA|0,cA=O>>>0>>0?cA+1|0:cA,C2=A[e+32>>2],rA=(f0=w(XA=M0(C2,19),D=XA>>31,w0=A[g+32>>2],n=w0>>31))+O|0,O=y+cA|0,O=rA>>>0>>0?O+1|0:O,VA=A[e+36>>2],e=w(f0=M0(VA,19),p=f0>>31,fA=(J=A[g+28>>2])<<1,EA=fA>>31),O=y+O|0,A0=g=e+rA|0,e=g>>>0>>0?O+1|0:O,g=w(F0,_,t,B),O=y,rA=w(x0,o,b,YA=b>>31),cA=y+O|0,cA=(g=rA+g|0)>>>0>>0?cA+1|0:cA,O=w(a,l,x,qA=x>>31),rA=y+cA|0,rA=(g=O+g|0)>>>0>>0?rA+1|0:rA,cA=w(E0,s,Q,M),O=y+rA|0,O=(g=cA+g|0)>>>0>>0?O+1|0:O,rA=w(v,_A,V,$A=V>>31),O=y+O|0,O=(g=rA+g|0)>>>0>>0?O+1|0:O,rA=w(N0,h,q,hA),O=y+O|0,O=(g=rA+g|0)>>>0>>0?O+1|0:O,rA=w(p0=M0(p0,19),uA=p0>>31,K,g0=K>>31),cA=y+O|0,cA=(g=rA+g|0)>>>0>>0?cA+1|0:cA,O=w(w0,n,k0,$),rA=y+cA|0,rA=(g=O+g|0)>>>0>>0?rA+1|0:rA,cA=w(XA,D,J,i0=J>>31),O=y+rA|0,O=(g=cA+g|0)>>>0>>0?O+1|0:O,rA=w(f0,p,r,I),O=y+O|0,r2=g=rA+g|0,j0=g>>>0>>0?O+1|0:O,g=w(t,B,z,iA),O=y,rA=w(x0,o,F0,_),O=y+O|0,O=(g=rA+g|0)>>>0>>0?O+1|0:O,rA=w(E0,s,a,l),cA=y+O|0,cA=(g=rA+g|0)>>>0>>0?cA+1|0:cA,O=w(Q,M,sA,mA),rA=y+cA|0,rA=(g=O+g|0)>>>0>>0?rA+1|0:rA,cA=w(N0,h,v,_A),O=y+rA|0,O=(g=cA+g|0)>>>0>>0?O+1|0:O,rA=w(vA=M0(q,19),u=vA>>31,nA,aA),O=y+O|0,O=(g=rA+g|0)>>>0>>0?O+1|0:O,rA=w(w0,n,p0,uA),O=y+O|0,O=(g=rA+g|0)>>>0>>0?O+1|0:O,rA=w(k0,$,fA,EA),cA=y+O|0,cA=(g=rA+g|0)>>>0>>0?cA+1|0:cA,O=w(XA,D,r,I),rA=y+cA|0,rA=(g=O+g|0)>>>0>>0?rA+1|0:rA,cA=w(f0,p,T0,wA),O=y+rA|0,c0=g=cA+g|0,_0=O=g>>>0>>0?O+1|0:O,I0=g=g+33554432|0,h0=O=g>>>0<33554432?O+1|0:O,cA=(67108863&O)<<6|g>>>26,O=(O>>26)+j0|0,r2=g=cA+r2|0,O=g>>>0>>0?O+1|0:O,D0=g=g+16777216|0,O=e+(rA=(cA=g>>>0<16777216?O+1|0:O)>>25)|0,O=(g=(cA=(33554431&cA)<<7|g>>>25)+A0|0)>>>0>>0?O+1|0:O,V0=e=(rA=g)+33554432|0,g=O=e>>>0<33554432?O+1|0:O,A[C+24>>2]=rA-(-67108864&e),e=w(t,B,sA,mA),O=y,rA=w(x0,o,E0,s),cA=y+O|0,cA=(e=rA+e|0)>>>0>>0?cA+1|0:cA,rA=(O=e)+(e=w(N0,h,a,l))|0,O=y+cA|0,O=e>>>0>rA>>>0?O+1|0:O,cA=w(e=M0(Q,19),W0=e>>31,nA,aA),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,cA=(A0=w(w0,n,j0=M0(v,19),H=j0>>31))+rA|0,rA=y+O|0,rA=cA>>>0>>0?rA+1|0:rA,A0=w(fA,EA,vA,u),O=y+rA|0,O=(cA=A0+cA|0)>>>0>>0?O+1|0:O,rA=(A0=w(r,I,p0,uA))+cA|0,cA=y+O|0,cA=rA>>>0>>0?cA+1|0:cA,A0=w(k0,$,T0,wA),O=y+cA|0,O=(rA=A0+rA|0)>>>0>>0?O+1|0:O,cA=w(XA,D,F0,_),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,cA=(A0=w(f0,p,z,iA))+rA|0,rA=y+O|0,u0=cA,i2=cA>>>0>>0?rA+1|0:rA,O=w(N0,h,t,B),rA=y,cA=(A0=w(x0,o,V,$A))+O|0,O=y+rA|0,O=cA>>>0>>0?O+1|0:O,A0=rA=M0(a,19),rA=(s0=w(rA,e2=rA>>31,K,g0))+cA|0,cA=y+O|0,cA=rA>>>0>>0?cA+1|0:cA,s0=w(w0,n,e,W0),O=y+cA|0,O=(rA=s0+rA|0)>>>0>>0?O+1|0:O,cA=w(j0,H,J,i0),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,cA=(s0=w(r,I,vA,u))+rA|0,rA=y+O|0,rA=cA>>>0>>0?rA+1|0:rA,s0=w(p0,uA,b,YA),O=y+rA|0,O=(cA=s0+cA|0)>>>0>>0?O+1|0:O,rA=(s0=w(F0,_,k0,$))+cA|0,cA=y+O|0,cA=rA>>>0>>0?cA+1|0:cA,s0=w(XA,D,x,qA),O=y+cA|0,O=(rA=s0+rA|0)>>>0>>0?O+1|0:O,cA=w(f0,p,E0,s),O=y+O|0,s2=rA=cA+rA|0,s0=rA>>>0>>0?O+1|0:O,O=w(O=M0(t,19),O>>31,nA,aA),rA=y,cA=w(x0,o,N0,h),rA=y+rA|0,rA=(O=cA+O|0)>>>0>>0?rA+1|0:rA,cA=(A0=w(w0,n,A0,e2))+O|0,O=y+rA|0,e=(rA=w(e,W0,fA,EA))+cA|0,cA=y+(cA>>>0>>0?O+1|0:O)|0,cA=e>>>0>>0?cA+1|0:cA,rA=w(r,I,j0,H),O=y+cA|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,rA=w(T0,wA,vA,u),O=y+O|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,cA=w(F0,_,p0,uA),rA=y+O|0,rA=(e=cA+e|0)>>>0>>0?rA+1|0:rA,cA=w(k0,$,z,iA),O=y+rA|0,O=(e=cA+e|0)>>>0>>0?O+1|0:O,rA=w(XA,D,E0,s),cA=y+O|0,cA=(e=rA+e|0)>>>0>>0?cA+1|0:cA,rA=w(f0,p,sA,mA),O=y+cA|0,A0=e=rA+e|0,W0=O=e>>>0>>0?O+1|0:O,e2=e=e+33554432|0,MA=O=e>>>0<33554432?O+1|0:O,rA=(cA=O>>26)+s0|0,s0=e=(O=(67108863&O)<<6|e>>>26)+s2|0,O=e>>>0>>0?rA+1|0:rA,s2=e=e+16777216|0,rA=(33554431&(O=e>>>0<16777216?O+1|0:O))<<7|e>>>25,O=(O>>25)+i2|0,O=(e=rA+u0|0)>>>0>>0?O+1|0:O,i2=rA=(cA=e)+33554432|0,e=O=rA>>>0<33554432?O+1|0:O,A[C+8>>2]=cA-(-67108864&rA),O=w(r,I,t,B),cA=y,rA=(u0=w(x0,o,J,i0))+O|0,O=y+cA|0,O=rA>>>0>>0?O+1|0:O,cA=w(a,l,b,YA),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,cA=w(F0,_,Q,M),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,u0=w(v,_A,x,qA),cA=y+O|0,cA=(rA=u0+rA|0)>>>0>>0?cA+1|0:cA,O=(u0=w(E0,s,q,hA))+rA|0,rA=y+cA|0,rA=O>>>0>>0?rA+1|0:rA,cA=(u0=w(V,$A,FA,d))+O|0,O=y+rA|0,O=cA>>>0>>0?O+1|0:O,rA=cA,cA=w(N0,h,HA,u0=HA>>31),O=y+O|0,O=(rA=rA+cA|0)>>>0>>0?O+1|0:O,cA=w(XA,D,K,g0),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,L0=w(f0,p,w0,n),cA=y+O|0,O=g>>26,g=(V0=(67108863&g)<<6|V0>>>26)+(rA=L0+rA|0)|0,rA=O+(rA>>>0>>0?cA+1|0:cA)|0,O=(cA=g)>>>0>>0?rA+1|0:rA,V0=rA=cA+16777216|0,g=O=rA>>>0<16777216?O+1|0:O,A[C+28>>2]=cA-(-33554432&rA),O=w(E0,s,t,B),rA=y,L0=w(x0,o,x,qA),cA=y+rA|0,cA=(O=L0+O|0)>>>0>>0?cA+1|0:cA,L0=w(a,l,V,$A),rA=y+cA|0,rA=(O=L0+O|0)>>>0>>0?rA+1|0:rA,cA=(L0=w(N0,h,Q,M))+O|0,O=y+rA|0,O=cA>>>0>>0?O+1|0:O,rA=cA,cA=w(j0,H,K,g0),O=y+O|0,O=(rA=rA+cA|0)>>>0>>0?O+1|0:O,cA=w(w0,n,vA,u),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,rA=(p0=w(p0,uA,J,i0))+rA|0,cA=y+O|0,O=(k0=w(r,I,k0,$))+rA|0,rA=y+(rA>>>0>>0?cA+1|0:cA)|0,cA=(XA=w(XA,D,b,YA))+O|0,O=y+(O>>>0>>0?rA+1|0:rA)|0,O=cA>>>0>>0?O+1|0:O,rA=cA,cA=w(f0,p,F0,_),O=y+O|0,XA=rA=rA+cA|0,O=(O=rA>>>0>>0?O+1|0:O)+(rA=e>>26)|0,XA=e=XA+(cA=(67108863&e)<<6|i2>>>26)|0,O=e>>>0>>0?O+1|0:O,k0=rA=e+16777216|0,e=cA=rA>>>0<16777216?O+1|0:O,A[C+12>>2]=XA-(-33554432&rA),O=w(t,B,fA,EA),cA=y,rA=(XA=w(x0,o,w0,n))+O|0,O=y+cA|0,O=rA>>>0>>0?O+1|0:O,cA=w(r,I,a,l),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,XA=w(Q,M,T0,wA),cA=y+O|0,cA=(rA=XA+rA|0)>>>0>>0?cA+1|0:cA,O=(XA=w(F0,_,v,_A))+rA|0,rA=y+cA|0,rA=O>>>0>>0?rA+1|0:rA,cA=(XA=w(z,iA,q,hA))+O|0,O=y+rA|0,O=cA>>>0>>0?O+1|0:O,rA=cA,cA=w(E0,s,FA,d),O=y+O|0,O=(rA=rA+cA|0)>>>0>>0?O+1|0:O,cA=w(HA,u0,sA,mA),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,rA=(T0=w(N0,h,XA=C2,p0=XA>>31))+rA|0,cA=y+O|0,O=(f0=w(f0,p,nA,aA))+rA|0,rA=y+(rA>>>0>>0?cA+1|0:cA)|0,rA=O>>>0>>0?rA+1|0:rA,C2=O,O=(O=g>>25)+rA|0,O=(g=C2+(cA=(33554431&g)<<7|V0>>>25)|0)>>>0>>0?O+1|0:O,f0=rA=(cA=g)+33554432|0,g=O=rA>>>0<33554432?O+1|0:O,A[C+32>>2]=cA-(-67108864&rA),rA=e>>25,e=(k0=(33554431&e)<<7|k0>>>25)+(c0-(O=-67108864&I0)|0)|0,O=rA+(_0-((O>>>0>c0>>>0)+h0|0)|0)|0,O=e>>>0>>0?O+1|0:O,O=((67108863&(O=(e=(rA=e)+33554432|0)>>>0<33554432?O+1|0:O))<<6|e>>>26)+(cA=r2-(-33554432&D0)|0)|0,A[C+20>>2]=O,A[C+16>>2]=rA-(-67108864&e),e=w(w0,n,t,B),O=y,rA=w(x0,o,K,g0),O=y+O|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,cA=w(a,l,J,i0),rA=y+O|0,rA=(e=cA+e|0)>>>0>>0?rA+1|0:rA,O=w(r,I,Q,M),cA=y+rA|0,cA=(e=O+e|0)>>>0>>0?cA+1|0:cA,rA=w(v,_A,b,YA),O=y+cA|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,rA=w(F0,_,q,hA),O=y+O|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,rA=w(x,qA,FA,d),O=y+O|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,cA=w(E0,s,HA,u0),rA=y+O|0,rA=(e=cA+e|0)>>>0>>0?rA+1|0:rA,O=w(XA,p0,V,$A),cA=y+rA|0,cA=(e=O+e|0)>>>0>>0?cA+1|0:cA,rA=w(N0,h,VA,VA>>31),O=y+cA|0,O=(O=(e=rA+e|0)>>>0>>0?O+1|0:O)+(rA=g>>26)|0,O=(g=(cA=e)+(e=(67108863&g)<<6|f0>>>26)|0)>>>0>>0?O+1|0:O,O=(g=(e=g)+16777216|0)>>>0<16777216?O+1|0:O,A[C+36>>2]=e-(-33554432&g),cA=s0-(-33554432&s2)|0,rA=A0-(e=-67108864&e2)|0,x0=W0-((e>>>0>A0>>>0)+MA|0)|0,g=(e=w((33554431&(e=O))<<7|g>>>25,O>>=25,19,0))+rA|0,rA=y+x0|0,O=g>>>0>>0?rA+1|0:rA,O=((67108863&(O=(g=(e=g)+33554432|0)>>>0<33554432?O+1|0:O))<<6|g>>>26)+cA|0,A[C+4>>2]=O,A[C>>2]=e-(-67108864&g)}function VC(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b=0,M=0,x=0;W=e=W-544|0,t=i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24,r=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24,o=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,I=i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24,a=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24,_=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,s=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,h=i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24,b=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,n=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,B=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,Q=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,p=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,l=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,v=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,D=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,C=A[g+124>>2],A[e+536>>2]=A[g+120>>2],A[e+540>>2]=C,C=A[g+116>>2],A[e+528>>2]=A[g+112>>2],A[e+532>>2]=C,C=A[g+108>>2],A[e+504>>2]=A[g+104>>2],A[e+508>>2]=C,C=A[g+100>>2],A[e+496>>2]=A[g+96>>2],A[e+500>>2]=C,C=A[g+124>>2],A[e+488>>2]=A[g+120>>2],A[e+492>>2]=C,C=A[g+116>>2],A[e+480>>2]=A[g+112>>2],A[e+484>>2]=C,a0(x=e+512|0,e+496|0,e+480|0),C=A[e+524>>2],A[g+120>>2]=A[e+520>>2],A[g+124>>2]=C,C=A[e+516>>2],A[g+112>>2]=A[e+512>>2],A[g+116>>2]=C,C=A[g+92>>2],A[e+472>>2]=A[g+88>>2],A[e+476>>2]=C,C=A[g+84>>2],A[e+464>>2]=A[g+80>>2],A[e+468>>2]=C,C=A[g+108>>2],A[e+456>>2]=A[g+104>>2],A[e+460>>2]=C,C=A[g+100>>2],A[e+448>>2]=A[g+96>>2],A[e+452>>2]=C,a0(x,e+464|0,e+448|0),C=A[e+524>>2],A[g+104>>2]=A[e+520>>2],A[g+108>>2]=C,C=A[e+516>>2],A[g+96>>2]=A[e+512>>2],A[g+100>>2]=C,C=A[g+76>>2],A[e+440>>2]=A[g+72>>2],A[e+444>>2]=C,M=A[4+(C=g- -64|0)>>2],A[e+432>>2]=A[C>>2],A[e+436>>2]=M,M=A[g+92>>2],A[e+424>>2]=A[g+88>>2],A[e+428>>2]=M,M=A[g+84>>2],A[e+416>>2]=A[g+80>>2],A[e+420>>2]=M,a0(x,e+432|0,e+416|0),M=A[e+524>>2],A[g+88>>2]=A[e+520>>2],A[g+92>>2]=M,M=A[e+516>>2],A[g+80>>2]=A[e+512>>2],A[g+84>>2]=M,M=A[g+60>>2],A[e+408>>2]=A[g+56>>2],A[e+412>>2]=M,M=A[g+52>>2],A[e+400>>2]=A[g+48>>2],A[e+404>>2]=M,M=A[g+76>>2],A[e+392>>2]=A[g+72>>2],A[e+396>>2]=M,M=A[C+4>>2],A[e+384>>2]=A[C>>2],A[e+388>>2]=M,a0(x,e+400|0,e+384|0),M=A[e+524>>2],A[g+72>>2]=A[e+520>>2],A[g+76>>2]=M,M=A[e+516>>2],A[C>>2]=A[e+512>>2],A[C+4>>2]=M,M=A[g+44>>2],A[e+376>>2]=A[g+40>>2],A[e+380>>2]=M,M=A[g+36>>2],A[e+368>>2]=A[g+32>>2],A[e+372>>2]=M,M=A[g+60>>2],A[e+360>>2]=A[g+56>>2],A[e+364>>2]=M,M=A[g+52>>2],A[e+352>>2]=A[g+48>>2],A[e+356>>2]=M,a0(x,e+368|0,e+352|0),M=A[e+524>>2],A[g+56>>2]=A[e+520>>2],A[g+60>>2]=M,M=A[e+516>>2],A[g+48>>2]=A[e+512>>2],A[g+52>>2]=M,M=A[g+28>>2],A[e+344>>2]=A[g+24>>2],A[e+348>>2]=M,M=A[g+20>>2],A[e+336>>2]=A[g+16>>2],A[e+340>>2]=M,M=A[g+44>>2],A[e+328>>2]=A[g+40>>2],A[e+332>>2]=M,M=A[g+36>>2],A[e+320>>2]=A[g+32>>2],A[e+324>>2]=M,a0(x,e+336|0,e+320|0),M=A[e+524>>2],A[g+40>>2]=A[e+520>>2],A[g+44>>2]=M,M=A[e+516>>2],A[g+32>>2]=A[e+512>>2],A[g+36>>2]=M,M=A[g+12>>2],A[e+312>>2]=A[g+8>>2],A[e+316>>2]=M,M=A[g+4>>2],A[e+304>>2]=A[g>>2],A[e+308>>2]=M,M=A[g+28>>2],A[e+296>>2]=A[g+24>>2],A[e+300>>2]=M,M=A[g+20>>2],A[e+288>>2]=A[g+16>>2],A[e+292>>2]=M,a0(x,e+304|0,e+288|0),M=A[e+524>>2],A[g+24>>2]=A[e+520>>2],A[g+28>>2]=M,M=A[e+516>>2],A[g+16>>2]=A[e+512>>2],A[g+20>>2]=M,M=A[e+540>>2],A[e+280>>2]=A[e+536>>2],A[e+284>>2]=M,M=A[e+532>>2],A[e+272>>2]=A[e+528>>2],A[e+276>>2]=M,M=A[g+12>>2],A[e+264>>2]=A[g+8>>2],A[e+268>>2]=M,M=A[g+4>>2],A[e+256>>2]=A[g>>2],A[e+260>>2]=M,a0(x,e+272|0,e+256|0),M=A[e+524>>2],A[g+8>>2]=A[e+520>>2],A[g+12>>2]=M,M=A[e+516>>2],A[g>>2]=A[e+512>>2],A[g+4>>2]=M,A[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^v,A[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^l,A[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^p,A[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^D,A[C>>2]=(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24)^Q,A[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^B,A[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^n,A[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^b,b=A[g+124>>2],A[e+536>>2]=A[g+120>>2],A[e+540>>2]=b,b=A[g+116>>2],A[e+528>>2]=A[g+112>>2],A[e+532>>2]=b,b=A[g+108>>2],A[e+248>>2]=A[g+104>>2],A[e+252>>2]=b,b=A[g+100>>2],A[e+240>>2]=A[g+96>>2],A[e+244>>2]=b,b=A[g+124>>2],A[e+232>>2]=A[g+120>>2],A[e+236>>2]=b,b=A[g+116>>2],A[e+224>>2]=A[g+112>>2],A[e+228>>2]=b,a0(x,e+240|0,e+224|0),b=A[e+524>>2],A[g+120>>2]=A[e+520>>2],A[g+124>>2]=b,b=A[e+516>>2],A[g+112>>2]=A[e+512>>2],A[g+116>>2]=b,b=A[g+92>>2],A[e+216>>2]=A[g+88>>2],A[e+220>>2]=b,b=A[g+84>>2],A[e+208>>2]=A[g+80>>2],A[e+212>>2]=b,b=A[g+108>>2],A[e+200>>2]=A[g+104>>2],A[e+204>>2]=b,b=A[g+100>>2],A[e+192>>2]=A[g+96>>2],A[e+196>>2]=b,a0(x,e+208|0,e+192|0),b=A[e+524>>2],A[g+104>>2]=A[e+520>>2],A[g+108>>2]=b,b=A[e+516>>2],A[g+96>>2]=A[e+512>>2],A[g+100>>2]=b,b=A[g+76>>2],A[e+184>>2]=A[g+72>>2],A[e+188>>2]=b,b=A[C+4>>2],A[e+176>>2]=A[C>>2],A[e+180>>2]=b,b=A[g+92>>2],A[e+168>>2]=A[g+88>>2],A[e+172>>2]=b,b=A[g+84>>2],A[e+160>>2]=A[g+80>>2],A[e+164>>2]=b,a0(x,e+176|0,e+160|0),b=A[e+524>>2],A[g+88>>2]=A[e+520>>2],A[g+92>>2]=b,b=A[e+516>>2],A[g+80>>2]=A[e+512>>2],A[g+84>>2]=b,b=A[g+60>>2],A[e+152>>2]=A[g+56>>2],A[e+156>>2]=b,b=A[g+52>>2],A[e+144>>2]=A[g+48>>2],A[e+148>>2]=b,b=A[g+76>>2],A[e+136>>2]=A[g+72>>2],A[e+140>>2]=b,b=A[C+4>>2],A[e+128>>2]=A[C>>2],A[e+132>>2]=b,a0(x,e+144|0,e+128|0),b=A[e+524>>2],A[g+72>>2]=A[e+520>>2],A[g+76>>2]=b,b=A[e+516>>2],A[C>>2]=A[e+512>>2],A[C+4>>2]=b,b=A[g+44>>2],A[e+120>>2]=A[g+40>>2],A[e+124>>2]=b,b=A[g+36>>2],A[e+112>>2]=A[g+32>>2],A[e+116>>2]=b,b=A[g+60>>2],A[e+104>>2]=A[g+56>>2],A[e+108>>2]=b,b=A[g+52>>2],A[e+96>>2]=A[g+48>>2],A[e+100>>2]=b,a0(x,e+112|0,e+96|0),b=A[e+524>>2],A[g+56>>2]=A[e+520>>2],A[g+60>>2]=b,b=A[e+516>>2],A[g+48>>2]=A[e+512>>2],A[g+52>>2]=b,b=A[g+28>>2],A[e+88>>2]=A[g+24>>2],A[e+92>>2]=b,b=A[g+20>>2],A[e+80>>2]=A[g+16>>2],A[e+84>>2]=b,b=A[g+44>>2],A[e+72>>2]=A[g+40>>2],A[e+76>>2]=b,b=A[g+36>>2],A[e+64>>2]=A[g+32>>2],A[e+68>>2]=b,a0(x,e+80|0,e- -64|0),b=A[e+524>>2],A[g+40>>2]=A[e+520>>2],A[g+44>>2]=b,b=A[e+516>>2],A[g+32>>2]=A[e+512>>2],A[g+36>>2]=b,b=A[g+12>>2],A[e+56>>2]=A[g+8>>2],A[e+60>>2]=b,b=A[g+4>>2],A[e+48>>2]=A[g>>2],A[e+52>>2]=b,b=A[g+28>>2],A[e+40>>2]=A[g+24>>2],A[e+44>>2]=b,b=A[g+20>>2],A[e+32>>2]=A[g+16>>2],A[e+36>>2]=b,a0(x,e+48|0,e+32|0),b=A[e+524>>2],A[g+24>>2]=A[e+520>>2],A[g+28>>2]=b,b=A[e+516>>2],A[g+16>>2]=A[e+512>>2],A[g+20>>2]=b,b=A[e+540>>2],A[e+24>>2]=A[e+536>>2],A[e+28>>2]=b,b=A[e+532>>2],A[e+16>>2]=A[e+528>>2],A[e+20>>2]=b,b=A[g+12>>2],A[e+8>>2]=A[g+8>>2],A[e+12>>2]=b,b=A[g+4>>2],A[e>>2]=A[g>>2],A[e+4>>2]=b,a0(x,e+16|0,e),x=A[e+524>>2],A[g+8>>2]=A[e+520>>2],A[g+12>>2]=x,x=A[e+516>>2],A[g>>2]=A[e+512>>2],A[g+4>>2]=x,A[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^h,A[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^s,A[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^_,A[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^a,A[C>>2]=(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24)^I,A[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^o,A[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^r,A[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^t,W=e+544|0}function WC(C,g,e,t,r){var o,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0;for(W=o=W-288|0,p=(i[r+44|0]|i[r+45|0]<<8|i[r+46|0]<<16|i[r+47|0]<<24)^t>>>29,l=(i[r+40|0]|i[r+41|0]<<8|i[r+42|0]<<16|i[r+43|0]<<24)^t<<3,v=(i[r+36|0]|i[r+37|0]<<8|i[r+38|0]<<16|i[r+39|0]<<24)^e>>>29,t=(i[0|(_=r+32|0)]|i[_+1|0]<<8|i[_+2|0]<<16|i[_+3|0]<<24)^e<<3,B=r+16|0,h=r+48|0,a=r- -64|0,n=r+80|0,I=r+96|0,s=r+112|0;e=A[s+12>>2],A[o+280>>2]=A[s+8>>2],A[o+284>>2]=e,e=A[s+4>>2],A[o+272>>2]=A[s>>2],A[o+276>>2]=e,e=A[I+12>>2],A[o+248>>2]=A[I+8>>2],A[o+252>>2]=e,e=A[I+4>>2],A[o+240>>2]=A[I>>2],A[o+244>>2]=e,e=A[s+12>>2],A[o+232>>2]=A[s+8>>2],A[o+236>>2]=e,e=A[s+4>>2],A[o+224>>2]=A[s>>2],A[o+228>>2]=e,a0(Q=o+256|0,o+240|0,o+224|0),e=A[o+268>>2],A[s+8>>2]=A[o+264>>2],A[s+12>>2]=e,e=A[o+260>>2],A[s>>2]=A[o+256>>2],A[s+4>>2]=e,e=A[n+12>>2],A[o+216>>2]=A[n+8>>2],A[o+220>>2]=e,e=A[n+4>>2],A[o+208>>2]=A[n>>2],A[o+212>>2]=e,e=A[I+12>>2],A[o+200>>2]=A[I+8>>2],A[o+204>>2]=e,e=A[I+4>>2],A[o+192>>2]=A[I>>2],A[o+196>>2]=e,a0(Q,o+208|0,o+192|0),e=A[o+268>>2],A[I+8>>2]=A[o+264>>2],A[I+12>>2]=e,e=A[o+260>>2],A[I>>2]=A[o+256>>2],A[I+4>>2]=e,e=A[a+12>>2],A[o+184>>2]=A[a+8>>2],A[o+188>>2]=e,e=A[a+4>>2],A[o+176>>2]=A[a>>2],A[o+180>>2]=e,e=A[n+12>>2],A[o+168>>2]=A[n+8>>2],A[o+172>>2]=e,e=A[n+4>>2],A[o+160>>2]=A[n>>2],A[o+164>>2]=e,a0(Q,o+176|0,o+160|0),e=A[o+268>>2],A[n+8>>2]=A[o+264>>2],A[n+12>>2]=e,e=A[o+260>>2],A[n>>2]=A[o+256>>2],A[n+4>>2]=e,e=A[h+12>>2],A[o+152>>2]=A[h+8>>2],A[o+156>>2]=e,e=A[h+4>>2],A[o+144>>2]=A[h>>2],A[o+148>>2]=e,e=A[a+12>>2],A[o+136>>2]=A[a+8>>2],A[o+140>>2]=e,e=A[a+4>>2],A[o+128>>2]=A[a>>2],A[o+132>>2]=e,a0(Q,o+144|0,o+128|0),e=A[o+268>>2],A[a+8>>2]=A[o+264>>2],A[a+12>>2]=e,e=A[o+260>>2],A[a>>2]=A[o+256>>2],A[a+4>>2]=e,e=A[_+12>>2],A[o+120>>2]=A[_+8>>2],A[o+124>>2]=e,e=A[_+4>>2],A[o+112>>2]=A[_>>2],A[o+116>>2]=e,e=A[h+12>>2],A[o+104>>2]=A[h+8>>2],A[o+108>>2]=e,e=A[h+4>>2],A[o+96>>2]=A[h>>2],A[o+100>>2]=e,a0(Q,o+112|0,o+96|0),e=A[o+268>>2],A[h+8>>2]=A[o+264>>2],A[h+12>>2]=e,e=A[o+260>>2],A[h>>2]=A[o+256>>2],A[h+4>>2]=e,e=A[B+12>>2],A[o+88>>2]=A[B+8>>2],A[o+92>>2]=e,e=A[B+4>>2],A[o+80>>2]=A[B>>2],A[o+84>>2]=e,e=A[_+12>>2],A[o+72>>2]=A[_+8>>2],A[o+76>>2]=e,e=A[_+4>>2],A[o+64>>2]=A[_>>2],A[o+68>>2]=e,a0(Q,o+80|0,o- -64|0),e=A[o+268>>2],A[_+8>>2]=A[o+264>>2],A[_+12>>2]=e,e=A[o+260>>2],A[_>>2]=A[o+256>>2],A[_+4>>2]=e,e=A[r+12>>2],A[o+56>>2]=A[r+8>>2],A[o+60>>2]=e,e=A[r+4>>2],A[o+48>>2]=A[r>>2],A[o+52>>2]=e,e=A[B+12>>2],A[o+40>>2]=A[B+8>>2],A[o+44>>2]=e,e=A[B+4>>2],A[o+32>>2]=A[B>>2],A[o+36>>2]=e,a0(Q,o+48|0,o+32|0),e=A[o+268>>2],A[B+8>>2]=A[o+264>>2],A[B+12>>2]=e,e=A[o+260>>2],A[B>>2]=A[o+256>>2],A[B+4>>2]=e,e=A[o+284>>2],A[o+24>>2]=A[o+280>>2],A[o+28>>2]=e,e=A[o+276>>2],A[o+16>>2]=A[o+272>>2],A[o+20>>2]=e,e=A[r+12>>2],A[o+8>>2]=A[r+8>>2],A[o+12>>2]=e,e=A[r+4>>2],A[o>>2]=A[r>>2],A[o+4>>2]=e,a0(Q,o+16|0,o),e=A[o+268>>2],A[r+8>>2]=A[o+264>>2],A[r+12>>2]=e,e=A[o+260>>2],A[r>>2]=A[o+256>>2],A[r+4>>2]=e,b=p^(i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24),A[r+12>>2]=b,M=l^(i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24),A[r+8>>2]=M,x=v^(i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24),A[r+4>>2]=x,q=t^(i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),A[r>>2]=q,V=t^(i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24),A[a>>2]=V,$=v^(i[r+68|0]|i[r+69|0]<<8|i[r+70|0]<<16|i[r+71|0]<<24),A[r+68>>2]=$,K=l^(i[r+72|0]|i[r+73|0]<<8|i[r+74|0]<<16|i[r+75|0]<<24),A[r+72>>2]=K,J=p^(i[r+76|0]|i[r+77|0]<<8|i[r+78|0]<<16|i[r+79|0]<<24),A[r+76>>2]=J,(0|(D=D+1|0))!=7;);A:{g:{C:{if(e=g-16|0){if((0|e)==16)break C;break g}a=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,_=i[r+48|0]|i[r+49|0]<<8|i[r+50|0]<<16|i[r+51|0]<<24,B=i[r+32|0]|i[r+33|0]<<8|i[r+34|0]<<16|i[r+35|0]<<24,h=i[r+96|0]|i[r+97|0]<<8|i[r+98|0]<<16|i[r+99|0]<<24,n=i[r+80|0]|i[r+81|0]<<8|i[r+82|0]<<16|i[r+83|0]<<24,I=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,s=i[r+52|0]|i[r+53|0]<<8|i[r+54|0]<<16|i[r+55|0]<<24,Q=i[r+36|0]|i[r+37|0]<<8|i[r+38|0]<<16|i[r+39|0]<<24,p=i[r+100|0]|i[r+101|0]<<8|i[r+102|0]<<16|i[r+103|0]<<24,l=i[r+84|0]|i[r+85|0]<<8|i[r+86|0]<<16|i[r+87|0]<<24,v=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,D=i[r+56|0]|i[r+57|0]<<8|i[r+58|0]<<16|i[r+59|0]<<24,t=i[r+40|0]|i[r+41|0]<<8|i[r+42|0]<<16|i[r+43|0]<<24,e=i[r+104|0]|i[r+105|0]<<8|i[r+106|0]<<16|i[r+107|0]<<24,g=i[r+88|0]|i[r+89|0]<<8|i[r+90|0]<<16|i[r+91|0]<<24,r=b^(i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24)^(i[r+60|0]|i[r+61|0]<<8|i[r+62|0]<<16|i[r+63|0]<<24)^(i[r+44|0]|i[r+45|0]<<8|i[r+46|0]<<16|i[r+47|0]<<24)^(i[r+92|0]|i[r+93|0]<<8|i[r+94|0]<<16|i[r+95|0]<<24)^(i[r+108|0]|i[r+109|0]<<8|i[r+110|0]<<16|i[r+111|0]<<24)^J,c[C+12|0]=r,c[C+13|0]=r>>>8,c[C+14|0]=r>>>16,c[C+15|0]=r>>>24,g=v^D^t^g^e^K^M,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=I^s^Q^p^l^$^x,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=a^_^B^h^n^V^q,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24;break A}s=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,Q=i[r+48|0]|i[r+49|0]<<8|i[r+50|0]<<16|i[r+51|0]<<24,p=i[r+32|0]|i[r+33|0]<<8|i[r+34|0]<<16|i[r+35|0]<<24,l=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,v=i[r+52|0]|i[r+53|0]<<8|i[r+54|0]<<16|i[r+55|0]<<24,D=i[r+36|0]|i[r+37|0]<<8|i[r+38|0]<<16|i[r+39|0]<<24,t=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,e=i[r+56|0]|i[r+57|0]<<8|i[r+58|0]<<16|i[r+59|0]<<24,g=i[r+40|0]|i[r+41|0]<<8|i[r+42|0]<<16|i[r+43|0]<<24,I=b^(i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24)^(i[r+60|0]|i[r+61|0]<<8|i[r+62|0]<<16|i[r+63|0]<<24)^(i[r+44|0]|i[r+45|0]<<8|i[r+46|0]<<16|i[r+47|0]<<24),c[C+12|0]=I,c[C+13|0]=I>>>8,c[C+14|0]=I>>>16,c[C+15|0]=I>>>24,g=t^g^e^M,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=l^v^D^x,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=s^Q^p^q,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,h=i[r+80|0]|i[r+81|0]<<8|i[r+82|0]<<16|i[r+83|0]<<24,n=i[0|(g=r- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,I=i[r+112|0]|i[r+113|0]<<8|i[r+114|0]<<16|i[r+115|0]<<24,s=i[r+96|0]|i[r+97|0]<<8|i[r+98|0]<<16|i[r+99|0]<<24,Q=i[r+84|0]|i[r+85|0]<<8|i[r+86|0]<<16|i[r+87|0]<<24,p=i[r+68|0]|i[r+69|0]<<8|i[r+70|0]<<16|i[r+71|0]<<24,l=i[r+116|0]|i[r+117|0]<<8|i[r+118|0]<<16|i[r+119|0]<<24,v=i[r+100|0]|i[r+101|0]<<8|i[r+102|0]<<16|i[r+103|0]<<24,D=i[r+88|0]|i[r+89|0]<<8|i[r+90|0]<<16|i[r+91|0]<<24,t=i[r+72|0]|i[r+73|0]<<8|i[r+74|0]<<16|i[r+75|0]<<24,e=i[r+120|0]|i[r+121|0]<<8|i[r+122|0]<<16|i[r+123|0]<<24,g=i[r+104|0]|i[r+105|0]<<8|i[r+106|0]<<16|i[r+107|0]<<24,r=(i[r+92|0]|i[r+93|0]<<8|i[r+94|0]<<16|i[r+95|0]<<24)^(i[r+76|0]|i[r+77|0]<<8|i[r+78|0]<<16|i[r+79|0]<<24)^(i[r+124|0]|i[r+125|0]<<8|i[r+126|0]<<16|i[r+127|0]<<24)^(i[r+108|0]|i[r+109|0]<<8|i[r+110|0]<<16|i[r+111|0]<<24),c[C+28|0]=r,c[C+29|0]=r>>>8,c[C+30|0]=r>>>16,c[C+31|0]=r>>>24,g=D^t^g^e,c[C+24|0]=g,c[C+25|0]=g>>>8,c[C+26|0]=g>>>16,c[C+27|0]=g>>>24,g=Q^p^l^v,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=h^n^I^s,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24;break A}$0(C,0,g)}W=o+288|0}function Hg(C,g,e,t){var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0;for(r=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,A[e>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[e+4>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,A[e+8>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,A[e+12>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[e+16>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[e+20>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[e+24>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[e+28>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,A[e+32>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,A[e+36>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,A[e+40>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,A[e+44>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,A[e+48>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,A[e+52>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,A[e+56>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,g=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,A[e+60>>2]=g<<24|(65280&g)<<8|g>>>8&65280|g>>>24,g=A[C+28>>2],A[t+24>>2]=A[C+24>>2],A[t+28>>2]=g,g=A[C+20>>2],A[t+16>>2]=A[C+16>>2],A[t+20>>2]=g,g=A[C+12>>2],A[t+8>>2]=A[C+8>>2],A[t+12>>2]=g,g=A[C+4>>2],A[t>>2]=A[C>>2],A[t+4>>2]=g;_=A[t+28>>2],r=(g=x<<2)+e|0,I=A[t+16>>2],s=A[r>>2]+(pA(I,26)^pA(I,21)^pA(I,7))|0,n=(_=((o=A[g+35264>>2]+s|0)+(I&((s=A[t+24>>2])^(B=A[t+20>>2]))^s)|0)+_|0)+A[t+12>>2]|0,A[t+12>>2]=n,_=(p=_+(pA(h=A[t>>2],30)^pA(h,19)^pA(h,10))|0)+(h&((o=A[t+8>>2])|(a=A[t+4>>2]))|o&a)|0,A[t+28>>2]=_,o=(p=o)+(s=(A[(v=(o=4|g)+e|0)>>2]+((s+(B^n&(I^B))|0)+(pA(n,26)^pA(n,21)^pA(n,7))|0)|0)+A[o+35264>>2]|0)|0,A[t+8>>2]=o,s=(s+(_&(a|h)|a&h)|0)+(pA(_,30)^pA(_,19)^pA(_,10))|0,A[t+24>>2]=s,B=(p=a)+(a=(((B+A[(M=(a=8|g)+e|0)>>2]|0)+A[a+35264>>2]|0)+(I^o&(I^n))|0)+(pA(o,26)^pA(o,21)^pA(o,7))|0)|0,A[t+4>>2]=B,a=a+((s&(_|h)|_&h)+(pA(s,30)^pA(s,19)^pA(s,10))|0)|0,A[t+20>>2]=a,I=(p=h)+(h=(((I+A[(q=(h=12|g)+e|0)>>2]|0)+A[h+35264>>2]|0)+(n^B&(o^n))|0)+(pA(B,26)^pA(B,21)^pA(B,7))|0)|0,A[t>>2]=I,h=h+((a&(_|s)|_&s)+(pA(a,30)^pA(a,19)^pA(a,10))|0)|0,A[t+16>>2]=h,n=(Q=((((p=n)+A[(V=(n=16|g)+e|0)>>2]|0)+A[n+35264>>2]|0)+(o^I&(o^B))|0)+(pA(I,26)^pA(I,21)^pA(I,7))|0)+((h&(a|s)|a&s)+(pA(h,30)^pA(h,19)^pA(h,10))|0)|0,A[t+12>>2]=n,Q=_+Q|0,A[t+28>>2]=Q,_=(o=(((o+A[($=(_=20|g)+e|0)>>2]|0)+A[_+35264>>2]|0)+(B^Q&(I^B))|0)+(pA(Q,26)^pA(Q,21)^pA(Q,7))|0)+((n&(a|h)|a&h)+(pA(n,30)^pA(n,19)^pA(n,10))|0)|0,A[t+8>>2]=_,o=o+s|0,A[t+24>>2]=o,s=(B=(((B+A[(K=(s=24|g)+e|0)>>2]|0)+A[s+35264>>2]|0)+(I^o&(I^Q))|0)+(pA(o,26)^pA(o,21)^pA(o,7))|0)+((_&(h|n)|h&n)+(pA(_,30)^pA(_,19)^pA(_,10))|0)|0,A[t+4>>2]=s,B=a+B|0,A[t+20>>2]=B,a=(I=(((I+A[(J=(a=28|g)+e|0)>>2]|0)+A[a+35264>>2]|0)+(Q^B&(o^Q))|0)+(pA(B,26)^pA(B,21)^pA(B,7))|0)+((s&(_|n)|_&n)+(pA(s,30)^pA(s,19)^pA(s,10))|0)|0,A[t>>2]=a,I=I+h|0,A[t+16>>2]=I,h=(Q=(((Q+A[(z=(h=32|g)+e|0)>>2]|0)+A[h+35264>>2]|0)+(o^I&(o^B))|0)+(pA(I,26)^pA(I,21)^pA(I,7))|0)+((a&(_|s)|_&s)+(pA(a,30)^pA(a,19)^pA(a,10))|0)|0,A[t+28>>2]=h,Q=n+Q|0,A[t+12>>2]=Q,n=(o=(((o+A[(_A=(n=36|g)+e|0)>>2]|0)+A[n+35264>>2]|0)+(B^Q&(I^B))|0)+(pA(Q,26)^pA(Q,21)^pA(Q,7))|0)+((h&(a|s)|a&s)+(pA(h,30)^pA(h,19)^pA(h,10))|0)|0,A[t+24>>2]=n,o=o+_|0,A[t+8>>2]=o,_=(B=(((B+A[(sA=(_=40|g)+e|0)>>2]|0)+A[_+35264>>2]|0)+(I^o&(I^Q))|0)+(pA(o,26)^pA(o,21)^pA(o,7))|0)+((n&(a|h)|a&h)+(pA(n,30)^pA(n,19)^pA(n,10))|0)|0,A[t+20>>2]=_,B=s+B|0,A[t+4>>2]=B,p=(s=44|g)+e|0,s=(I=((I+(A[s+35264>>2]+A[p>>2]|0)|0)+(Q^B&(o^Q))|0)+(pA(B,26)^pA(B,21)^pA(B,7))|0)+((_&(h|n)|h&n)+(pA(_,30)^pA(_,19)^pA(_,10))|0)|0,A[t+16>>2]=s,a=a+I|0,A[t>>2]=a,b=(I=48|g)+e|0,I=(Q=((Q+(A[I+35264>>2]+A[b>>2]|0)|0)+(o^a&(o^B))|0)+(pA(a,26)^pA(a,21)^pA(a,7))|0)+((s&(_|n)|_&n)+(pA(s,30)^pA(s,19)^pA(s,10))|0)|0,A[t+12>>2]=I,h=h+Q|0,A[t+28>>2]=h,D=(Q=52|g)+e|0,o=(Q=(((A[Q+35264>>2]+A[D>>2]|0)+o|0)+(B^h&(a^B))|0)+(pA(h,26)^pA(h,21)^pA(h,7))|0)+((I&(_|s)|_&s)+(pA(I,30)^pA(I,19)^pA(I,10))|0)|0,A[t+8>>2]=o,n=n+Q|0,A[t+24>>2]=n,Q=(l=56|g)+e|0,B=(l=(((A[l+35264>>2]+A[Q>>2]|0)+B|0)+(a^n&(a^h))|0)+(pA(n,26)^pA(n,21)^pA(n,7))|0)+((o&(s|I)|s&I)+(pA(o,30)^pA(o,19)^pA(o,10))|0)|0,A[t+4>>2]=B,_=_+l|0,A[t+20>>2]=_,l=(g|=60)+e|0,_=(g=((a+(A[g+35264>>2]+A[l>>2]|0)|0)+(h^_&(h^n))|0)+(pA(_,26)^pA(_,21)^pA(_,7))|0)+((B&(o|I)|o&I)+(pA(B,30)^pA(B,19)^pA(B,10))|0)|0,A[t>>2]=_,A[t+16>>2]=g+s,(0|x)!=48;)a=A[_A>>2],x=x+16|0,g=A[Q>>2],_=(o=A[r>>2]+(a+(pA(g,15)^pA(g,13)^g>>>10)|0)|0)+(pA(s=A[v>>2],25)^pA(s,14)^s>>>3)|0,A[(x<<2)+e>>2]=_,n=(I=(o=(h=A[sA>>2])+s|0)+(pA(s=A[l>>2],15)^pA(s,13)^s>>>10)|0)+(pA(o=A[M>>2],25)^pA(o,14)^o>>>3)|0,A[r+68>>2]=n,B=(p=((I=o)+(o=A[p>>2])|0)+(pA(_,15)^pA(_,13)^_>>>10)|0)+(pA(I=A[q>>2],25)^pA(I,14)^I>>>3)|0,A[r+72>>2]=B,Q=(l=((p=I)+(I=A[b>>2])|0)+(pA(n,15)^pA(n,13)^n>>>10)|0)+(pA(p=A[V>>2],25)^pA(p,14)^p>>>3)|0,A[r+76>>2]=Q,b=(l=((l=p)+(p=A[D>>2])|0)+(pA(B,15)^pA(B,13)^B>>>10)|0)+(pA(D=A[$>>2],25)^pA(D,14)^D>>>3)|0,A[r+80>>2]=b,D=(v=(g+D|0)+(pA(Q,15)^pA(Q,13)^Q>>>10)|0)+(pA(l=A[K>>2],25)^pA(l,14)^l>>>3)|0,A[r+84>>2]=D,l=((s+l|0)+(pA(M=A[J>>2],25)^pA(M,14)^M>>>3)|0)+(pA(b,15)^pA(b,13)^b>>>10)|0,A[r+88>>2]=l,n=((v=A[z>>2])+(n+(pA(a,25)^pA(a,14)^a>>>3)|0)|0)+(pA(l,15)^pA(l,13)^l>>>10)|0,A[r+96>>2]=n,v=((_+M|0)+(pA(v,25)^pA(v,14)^v>>>3)|0)+(pA(D,15)^pA(D,13)^D>>>10)|0,A[r+92>>2]=v,Q=(Q+(h+(pA(o,25)^pA(o,14)^o>>>3)|0)|0)+(pA(n,15)^pA(n,13)^n>>>10)|0,A[r+104>>2]=Q,a=(B+(a+(pA(h,25)^pA(h,14)^h>>>3)|0)|0)+(pA(v,15)^pA(v,13)^v>>>10)|0,A[r+100>>2]=a,h=(D+(I+(pA(p,25)^pA(p,14)^p>>>3)|0)|0)+(pA(Q,15)^pA(Q,13)^Q>>>10)|0,A[r+112>>2]=h,a=(b+(o+(pA(I,25)^pA(I,14)^I>>>3)|0)|0)+(pA(a,15)^pA(a,13)^a>>>10)|0,A[r+108>>2]=a,nA=r,fA=(v+(g+(pA(s,25)^pA(s,14)^s>>>3)|0)|0)+(pA(h,15)^pA(h,13)^h>>>10)|0,A[nA+120>>2]=fA,g=(l+(p+(pA(g,25)^pA(g,14)^g>>>3)|0)|0)+(pA(a,15)^pA(a,13)^a>>>10)|0,A[r+116>>2]=g,nA=r,fA=(n+(s+(pA(_,25)^pA(_,14)^_>>>3)|0)|0)+(pA(g,15)^pA(g,13)^g>>>10)|0,A[nA+124>>2]=fA;A[C>>2]=_+A[C>>2],A[C+4>>2]=A[C+4>>2]+A[t+4>>2],A[C+8>>2]=A[C+8>>2]+A[t+8>>2],A[C+12>>2]=A[C+12>>2]+A[t+12>>2],A[C+16>>2]=A[C+16>>2]+A[t+16>>2],A[C+20>>2]=A[C+20>>2]+A[t+20>>2],A[C+24>>2]=A[C+24>>2]+A[t+24>>2],A[C+28>>2]=A[C+28>>2]+A[t+28>>2]}function ZC(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0;W=t=W-288|0,s=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,h=i[e+48|0]|i[e+49|0]<<8|i[e+50|0]<<16|i[e+51|0]<<24,n=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,B=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,Q=i[e+52|0]|i[e+53|0]<<8|i[e+54|0]<<16|i[e+55|0]<<24,p=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,l=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,v=i[e+56|0]|i[e+57|0]<<8|i[e+58|0]<<16|i[e+59|0]<<24,fA=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,D=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,b=i[e+60|0]|i[e+61|0]<<8|i[e+62|0]<<16|i[e+63|0]<<24,_A=i[e+32|0]|i[e+33|0]<<8|i[e+34|0]<<16|i[e+35|0]<<24,uA=i[e+80|0]|i[e+81|0]<<8|i[e+82|0]<<16|i[e+83|0]<<24,M=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,x=i[e+112|0]|i[e+113|0]<<8|i[e+114|0]<<16|i[e+115|0]<<24,z=i[e+96|0]|i[e+97|0]<<8|i[e+98|0]<<16|i[e+99|0]<<24,sA=i[e+36|0]|i[e+37|0]<<8|i[e+38|0]<<16|i[e+39|0]<<24,vA=i[e+84|0]|i[e+85|0]<<8|i[e+86|0]<<16|i[e+87|0]<<24,q=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,V=i[e+116|0]|i[e+117|0]<<8|i[e+118|0]<<16|i[e+119|0]<<24,o=i[e+100|0]|i[e+101|0]<<8|i[e+102|0]<<16|i[e+103|0]<<24,nA=i[e+40|0]|i[e+41|0]<<8|i[e+42|0]<<16|i[e+43|0]<<24,wA=i[e+88|0]|i[e+89|0]<<8|i[e+90|0]<<16|i[e+91|0]<<24,$=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,K=i[e+120|0]|i[e+121|0]<<8|i[e+122|0]<<16|i[e+123|0]<<24,I=i[e+104|0]|i[e+105|0]<<8|i[e+106|0]<<16|i[e+107|0]<<24,J=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,r=(a=i[e+44|0]|i[e+45|0]<<8|i[e+46|0]<<16|i[e+47|0]<<24)^(_=i[e+108|0]|i[e+109|0]<<8|i[e+110|0]<<16|i[e+111|0]<<24)&(i[e+124|0]|i[e+125|0]<<8|i[e+126|0]<<16|i[e+127|0]<<24)^(i[e+92|0]|i[e+93|0]<<8|i[e+94|0]<<16|i[e+95|0]<<24)^(i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24),c[C+28|0]=r,c[C+29|0]=r>>>8,c[C+30|0]=r>>>16,c[C+31|0]=r>>>24,wA=nA^I&K^wA^$,c[C+24|0]=wA,c[C+25|0]=wA>>>8,c[C+26|0]=wA>>>16,c[C+27|0]=wA>>>24,vA=sA^o&V^vA^q,c[C+20|0]=vA,c[C+21|0]=vA>>>8,c[C+22|0]=vA>>>16,c[C+23|0]=vA>>>24,uA=_A^z&x^uA^M,c[C+16|0]=uA,c[C+17|0]=uA>>>8,c[C+18|0]=uA>>>16,c[C+19|0]=uA>>>24,fA=b&a^fA^D^_,c[C+12|0]=fA,c[C+13|0]=fA>>>8,c[C+14|0]=fA>>>16,c[C+15|0]=fA>>>24,nA=nA&v^p^l^I,c[C+8|0]=nA,c[C+9|0]=nA>>>8,c[C+10|0]=nA>>>16,c[C+11|0]=nA>>>24,sA=sA&Q^n^B^o,c[C+4|0]=sA,c[C+5|0]=sA>>>8,c[C+6|0]=sA>>>16,c[C+7|0]=sA>>>24,_A=z^_A&h^s^J,c[0|C]=_A,c[C+1|0]=_A>>>8,c[C+2|0]=_A>>>16,c[C+3|0]=_A>>>24,C=A[e+124>>2],A[t+280>>2]=A[e+120>>2],A[t+284>>2]=C,C=A[e+116>>2],A[t+272>>2]=A[e+112>>2],A[t+276>>2]=C,C=A[e+108>>2],A[t+248>>2]=A[e+104>>2],A[t+252>>2]=C,C=A[e+100>>2],A[t+240>>2]=A[e+96>>2],A[t+244>>2]=C,C=A[e+124>>2],A[t+232>>2]=A[e+120>>2],A[t+236>>2]=C,C=A[e+116>>2],A[t+224>>2]=A[e+112>>2],A[t+228>>2]=C,a0(g=t+256|0,t+240|0,t+224|0),C=A[t+268>>2],A[e+120>>2]=A[t+264>>2],A[e+124>>2]=C,C=A[t+260>>2],A[e+112>>2]=A[t+256>>2],A[e+116>>2]=C,C=A[e+92>>2],A[t+216>>2]=A[e+88>>2],A[t+220>>2]=C,C=A[e+84>>2],A[t+208>>2]=A[e+80>>2],A[t+212>>2]=C,C=A[e+108>>2],A[t+200>>2]=A[e+104>>2],A[t+204>>2]=C,C=A[e+100>>2],A[t+192>>2]=A[e+96>>2],A[t+196>>2]=C,a0(g,t+208|0,t+192|0),C=A[t+268>>2],A[e+104>>2]=A[t+264>>2],A[e+108>>2]=C,C=A[t+260>>2],A[e+96>>2]=A[t+256>>2],A[e+100>>2]=C,C=A[e+76>>2],A[t+184>>2]=A[e+72>>2],A[t+188>>2]=C,z=A[4+(C=e- -64|0)>>2],A[t+176>>2]=A[C>>2],A[t+180>>2]=z,z=A[e+92>>2],A[t+168>>2]=A[e+88>>2],A[t+172>>2]=z,z=A[e+84>>2],A[t+160>>2]=A[e+80>>2],A[t+164>>2]=z,a0(g,t+176|0,t+160|0),z=A[t+268>>2],A[e+88>>2]=A[t+264>>2],A[e+92>>2]=z,z=A[t+260>>2],A[e+80>>2]=A[t+256>>2],A[e+84>>2]=z,z=A[e+60>>2],A[t+152>>2]=A[e+56>>2],A[t+156>>2]=z,z=A[e+52>>2],A[t+144>>2]=A[e+48>>2],A[t+148>>2]=z,z=A[e+76>>2],A[t+136>>2]=A[e+72>>2],A[t+140>>2]=z,z=A[C+4>>2],A[t+128>>2]=A[C>>2],A[t+132>>2]=z,a0(g,t+144|0,t+128|0),z=A[t+268>>2],A[e+72>>2]=A[t+264>>2],A[e+76>>2]=z,z=A[t+260>>2],A[C>>2]=A[t+256>>2],A[C+4>>2]=z,z=A[e+44>>2],A[t+120>>2]=A[e+40>>2],A[t+124>>2]=z,z=A[e+36>>2],A[t+112>>2]=A[e+32>>2],A[t+116>>2]=z,z=A[e+60>>2],A[t+104>>2]=A[e+56>>2],A[t+108>>2]=z,z=A[e+52>>2],A[t+96>>2]=A[e+48>>2],A[t+100>>2]=z,a0(g,t+112|0,t+96|0),z=A[t+268>>2],A[e+56>>2]=A[t+264>>2],A[e+60>>2]=z,z=A[t+260>>2],A[e+48>>2]=A[t+256>>2],A[e+52>>2]=z,z=A[e+28>>2],A[t+88>>2]=A[e+24>>2],A[t+92>>2]=z,z=A[e+20>>2],A[t+80>>2]=A[e+16>>2],A[t+84>>2]=z,z=A[e+44>>2],A[t+72>>2]=A[e+40>>2],A[t+76>>2]=z,z=A[e+36>>2],A[t+64>>2]=A[e+32>>2],A[t+68>>2]=z,a0(g,t+80|0,t- -64|0),z=A[t+268>>2],A[e+40>>2]=A[t+264>>2],A[e+44>>2]=z,z=A[t+260>>2],A[e+32>>2]=A[t+256>>2],A[e+36>>2]=z,z=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=z,z=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=z,z=A[e+28>>2],A[t+40>>2]=A[e+24>>2],A[t+44>>2]=z,z=A[e+20>>2],A[t+32>>2]=A[e+16>>2],A[t+36>>2]=z,a0(g,t+48|0,t+32|0),z=A[t+268>>2],A[e+24>>2]=A[t+264>>2],A[e+28>>2]=z,z=A[t+260>>2],A[e+16>>2]=A[t+256>>2],A[e+20>>2]=z,z=A[t+284>>2],A[t+24>>2]=A[t+280>>2],A[t+28>>2]=z,z=A[t+276>>2],A[t+16>>2]=A[t+272>>2],A[t+20>>2]=z,z=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=z,z=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=z,a0(g,t+16|0,t),g=A[t+268>>2],A[e+8>>2]=A[t+264>>2],A[e+12>>2]=g,g=A[t+260>>2],A[e>>2]=A[t+256>>2],A[e+4>>2]=g,A[e+12>>2]=fA^(i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24),A[e+8>>2]=nA^(i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24),A[e+4>>2]=sA^(i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24),A[e>>2]=_A^(i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24),A[C>>2]=uA^(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),A[e+68>>2]=vA^(i[e+68|0]|i[e+69|0]<<8|i[e+70|0]<<16|i[e+71|0]<<24),A[e+72>>2]=wA^(i[e+72|0]|i[e+73|0]<<8|i[e+74|0]<<16|i[e+75|0]<<24),A[e+76>>2]=r^(i[e+76|0]|i[e+77|0]<<8|i[e+78|0]<<16|i[e+79|0]<<24),W=t+288|0}function $C(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA=0;W=t=W-288|0,M=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,x=i[e+48|0]|i[e+49|0]<<8|i[e+50|0]<<16|i[e+51|0]<<24,r=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,q=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,V=i[e+52|0]|i[e+53|0]<<8|i[e+54|0]<<16|i[e+55|0]<<24,o=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,$=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,K=i[e+56|0]|i[e+57|0]<<8|i[e+58|0]<<16|i[e+59|0]<<24,I=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,J=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,z=i[e+60|0]|i[e+61|0]<<8|i[e+62|0]<<16|i[e+63|0]<<24,wA=i[e+32|0]|i[e+33|0]<<8|i[e+34|0]<<16|i[e+35|0]<<24,a=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,_A=i[e+80|0]|i[e+81|0]<<8|i[e+82|0]<<16|i[e+83|0]<<24,sA=i[e+112|0]|i[e+113|0]<<8|i[e+114|0]<<16|i[e+115|0]<<24,_=i[e+96|0]|i[e+97|0]<<8|i[e+98|0]<<16|i[e+99|0]<<24,s=i[e+36|0]|i[e+37|0]<<8|i[e+38|0]<<16|i[e+39|0]<<24,h=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,nA=i[e+84|0]|i[e+85|0]<<8|i[e+86|0]<<16|i[e+87|0]<<24,fA=i[e+116|0]|i[e+117|0]<<8|i[e+118|0]<<16|i[e+119|0]<<24,n=i[e+100|0]|i[e+101|0]<<8|i[e+102|0]<<16|i[e+103|0]<<24,B=i[e+40|0]|i[e+41|0]<<8|i[e+42|0]<<16|i[e+43|0]<<24,Q=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,uA=i[e+88|0]|i[e+89|0]<<8|i[e+90|0]<<16|i[e+91|0]<<24,vA=i[e+120|0]|i[e+121|0]<<8|i[e+122|0]<<16|i[e+123|0]<<24,p=i[e+104|0]|i[e+105|0]<<8|i[e+106|0]<<16|i[e+107|0]<<24,l=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(v=i[e+44|0]|i[e+45|0]<<8|i[e+46|0]<<16|i[e+47|0]<<24)^(D=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)^(b=i[e+108|0]|i[e+109|0]<<8|i[e+110|0]<<16|i[e+111|0]<<24)&(i[e+124|0]|i[e+125|0]<<8|i[e+126|0]<<16|i[e+127|0]<<24)^(i[e+92|0]|i[e+93|0]<<8|i[e+94|0]<<16|i[e+95|0]<<24),c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=p&vA^uA^Q^B,c[C+24|0]=g,c[C+25|0]=g>>>8,c[C+26|0]=g>>>16,c[C+27|0]=g>>>24,g=n&fA^nA^h^s,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=wA^_&sA^_A^a,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24,g=z&v^J^I^b,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=B&K^$^o^p,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=s&V^q^r^n,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=wA&x^M^l^_,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,C=A[e+124>>2],A[t+280>>2]=A[e+120>>2],A[t+284>>2]=C,C=A[e+116>>2],A[t+272>>2]=A[e+112>>2],A[t+276>>2]=C,C=A[e+108>>2],A[t+248>>2]=A[e+104>>2],A[t+252>>2]=C,C=A[e+100>>2],A[t+240>>2]=A[e+96>>2],A[t+244>>2]=C,C=A[e+124>>2],A[t+232>>2]=A[e+120>>2],A[t+236>>2]=C,C=A[e+116>>2],A[t+224>>2]=A[e+112>>2],A[t+228>>2]=C,a0(g=t+256|0,t+240|0,t+224|0),C=A[t+268>>2],A[e+120>>2]=A[t+264>>2],A[e+124>>2]=C,C=A[t+260>>2],A[e+112>>2]=A[t+256>>2],A[e+116>>2]=C,C=A[e+92>>2],A[t+216>>2]=A[e+88>>2],A[t+220>>2]=C,C=A[e+84>>2],A[t+208>>2]=A[e+80>>2],A[t+212>>2]=C,C=A[e+108>>2],A[t+200>>2]=A[e+104>>2],A[t+204>>2]=C,C=A[e+100>>2],A[t+192>>2]=A[e+96>>2],A[t+196>>2]=C,a0(g,t+208|0,t+192|0),C=A[t+268>>2],A[e+104>>2]=A[t+264>>2],A[e+108>>2]=C,C=A[t+260>>2],A[e+96>>2]=A[t+256>>2],A[e+100>>2]=C,C=A[e+76>>2],A[t+184>>2]=A[e+72>>2],A[t+188>>2]=C,wA=A[4+(C=e- -64|0)>>2],A[t+176>>2]=A[C>>2],A[t+180>>2]=wA,wA=A[e+92>>2],A[t+168>>2]=A[e+88>>2],A[t+172>>2]=wA,wA=A[e+84>>2],A[t+160>>2]=A[e+80>>2],A[t+164>>2]=wA,a0(g,t+176|0,t+160|0),wA=A[t+268>>2],A[e+88>>2]=A[t+264>>2],A[e+92>>2]=wA,wA=A[t+260>>2],A[e+80>>2]=A[t+256>>2],A[e+84>>2]=wA,wA=A[e+60>>2],A[t+152>>2]=A[e+56>>2],A[t+156>>2]=wA,wA=A[e+52>>2],A[t+144>>2]=A[e+48>>2],A[t+148>>2]=wA,wA=A[e+76>>2],A[t+136>>2]=A[e+72>>2],A[t+140>>2]=wA,wA=A[C+4>>2],A[t+128>>2]=A[C>>2],A[t+132>>2]=wA,a0(g,t+144|0,t+128|0),wA=A[t+268>>2],A[e+72>>2]=A[t+264>>2],A[e+76>>2]=wA,wA=A[t+260>>2],A[C>>2]=A[t+256>>2],A[C+4>>2]=wA,wA=A[e+44>>2],A[t+120>>2]=A[e+40>>2],A[t+124>>2]=wA,wA=A[e+36>>2],A[t+112>>2]=A[e+32>>2],A[t+116>>2]=wA,wA=A[e+60>>2],A[t+104>>2]=A[e+56>>2],A[t+108>>2]=wA,wA=A[e+52>>2],A[t+96>>2]=A[e+48>>2],A[t+100>>2]=wA,a0(g,t+112|0,t+96|0),wA=A[t+268>>2],A[e+56>>2]=A[t+264>>2],A[e+60>>2]=wA,wA=A[t+260>>2],A[e+48>>2]=A[t+256>>2],A[e+52>>2]=wA,wA=A[e+28>>2],A[t+88>>2]=A[e+24>>2],A[t+92>>2]=wA,wA=A[e+20>>2],A[t+80>>2]=A[e+16>>2],A[t+84>>2]=wA,wA=A[e+44>>2],A[t+72>>2]=A[e+40>>2],A[t+76>>2]=wA,wA=A[e+36>>2],A[t+64>>2]=A[e+32>>2],A[t+68>>2]=wA,a0(g,t+80|0,t- -64|0),wA=A[t+268>>2],A[e+40>>2]=A[t+264>>2],A[e+44>>2]=wA,wA=A[t+260>>2],A[e+32>>2]=A[t+256>>2],A[e+36>>2]=wA,wA=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=wA,wA=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=wA,wA=A[e+28>>2],A[t+40>>2]=A[e+24>>2],A[t+44>>2]=wA,wA=A[e+20>>2],A[t+32>>2]=A[e+16>>2],A[t+36>>2]=wA,a0(g,t+48|0,t+32|0),wA=A[t+268>>2],A[e+24>>2]=A[t+264>>2],A[e+28>>2]=wA,wA=A[t+260>>2],A[e+16>>2]=A[t+256>>2],A[e+20>>2]=wA,wA=A[t+284>>2],A[t+24>>2]=A[t+280>>2],A[t+28>>2]=wA,wA=A[t+276>>2],A[t+16>>2]=A[t+272>>2],A[t+20>>2]=wA,wA=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=wA,wA=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=wA,a0(g,t+16|0,t),g=A[t+268>>2],A[e+8>>2]=A[t+264>>2],A[e+12>>2]=g,g=A[t+260>>2],A[e>>2]=A[t+256>>2],A[e+4>>2]=g,A[e+12>>2]=(i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24)^I,A[e+8>>2]=(i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24)^o,A[e+4>>2]=(i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24)^r,A[e>>2]=(i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24)^l,A[C>>2]=(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24)^a,A[e+68>>2]=(i[e+68|0]|i[e+69|0]<<8|i[e+70|0]<<16|i[e+71|0]<<24)^h,A[e+72>>2]=(i[e+72|0]|i[e+73|0]<<8|i[e+74|0]<<16|i[e+75|0]<<24)^Q,A[e+76>>2]=D^(i[e+76|0]|i[e+77|0]<<8|i[e+78|0]<<16|i[e+79|0]<<24),W=t+288|0}function Ae(C,g,e,t,r){var o,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0;for(W=o=W-224|0,l=(i[r+60|0]|i[r+61|0]<<8|i[r+62|0]<<16|i[r+63|0]<<24)^t>>>29,v=(i[r+56|0]|i[r+57|0]<<8|i[r+58|0]<<16|i[r+59|0]<<24)^t<<3,n=(i[r+52|0]|i[r+53|0]<<8|i[r+54|0]<<16|i[r+55|0]<<24)^e>>>29,Q=(i[0|(I=r+48|0)]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24)^e<<3,a=r+16|0,_=r+32|0,s=r- -64|0,h=r+80|0;e=A[h+12>>2],A[o+216>>2]=A[h+8>>2],A[o+220>>2]=e,e=A[h+4>>2],A[o+208>>2]=A[h>>2],A[o+212>>2]=e,e=A[s+12>>2],A[o+184>>2]=A[s+8>>2],A[o+188>>2]=e,e=A[s+4>>2],A[o+176>>2]=A[s>>2],A[o+180>>2]=e,e=A[h+12>>2],A[o+168>>2]=A[h+8>>2],A[o+172>>2]=e,e=A[h+4>>2],A[o+160>>2]=A[h>>2],A[o+164>>2]=e,a0(t=o+192|0,o+176|0,o+160|0),e=A[o+204>>2],A[h+8>>2]=A[o+200>>2],A[h+12>>2]=e,e=A[o+196>>2],A[h>>2]=A[o+192>>2],A[h+4>>2]=e,e=A[I+12>>2],A[o+152>>2]=A[I+8>>2],A[o+156>>2]=e,e=A[I+4>>2],A[o+144>>2]=A[I>>2],A[o+148>>2]=e,e=A[s+12>>2],A[o+136>>2]=A[s+8>>2],A[o+140>>2]=e,e=A[s+4>>2],A[o+128>>2]=A[s>>2],A[o+132>>2]=e,a0(t,o+144|0,o+128|0),e=A[o+204>>2],A[s+8>>2]=A[o+200>>2],A[s+12>>2]=e,e=A[o+196>>2],A[s>>2]=A[o+192>>2],A[s+4>>2]=e,e=A[_+12>>2],A[o+120>>2]=A[_+8>>2],A[o+124>>2]=e,e=A[_+4>>2],A[o+112>>2]=A[_>>2],A[o+116>>2]=e,e=A[I+12>>2],A[o+104>>2]=A[I+8>>2],A[o+108>>2]=e,e=A[I+4>>2],A[o+96>>2]=A[I>>2],A[o+100>>2]=e,a0(t,o+112|0,o+96|0),e=A[o+204>>2],A[I+8>>2]=A[o+200>>2],A[I+12>>2]=e,e=A[o+196>>2],A[I>>2]=A[o+192>>2],A[I+4>>2]=e,e=A[a+12>>2],A[o+88>>2]=A[a+8>>2],A[o+92>>2]=e,e=A[a+4>>2],A[o+80>>2]=A[a>>2],A[o+84>>2]=e,e=A[_+12>>2],A[o+72>>2]=A[_+8>>2],A[o+76>>2]=e,e=A[_+4>>2],A[o+64>>2]=A[_>>2],A[o+68>>2]=e,a0(t,o+80|0,o- -64|0),e=A[o+204>>2],A[_+8>>2]=A[o+200>>2],A[_+12>>2]=e,e=A[o+196>>2],A[_>>2]=A[o+192>>2],A[_+4>>2]=e,e=A[r+12>>2],A[o+56>>2]=A[r+8>>2],A[o+60>>2]=e,e=A[r+4>>2],A[o+48>>2]=A[r>>2],A[o+52>>2]=e,e=A[a+12>>2],A[o+40>>2]=A[a+8>>2],A[o+44>>2]=e,e=A[a+4>>2],A[o+32>>2]=A[a>>2],A[o+36>>2]=e,a0(t,o+48|0,o+32|0),e=A[o+204>>2],A[a+8>>2]=A[o+200>>2],A[a+12>>2]=e,e=A[o+196>>2],A[a>>2]=A[o+192>>2],A[a+4>>2]=e,e=A[o+220>>2],A[o+24>>2]=A[o+216>>2],A[o+28>>2]=e,e=A[o+212>>2],A[o+16>>2]=A[o+208>>2],A[o+20>>2]=e,e=A[r+12>>2],A[o+8>>2]=A[r+8>>2],A[o+12>>2]=e,e=A[r+4>>2],A[o>>2]=A[r>>2],A[o+4>>2]=e,a0(t,o+16|0,o),p=A[o+192>>2],t=A[o+196>>2],e=A[o+200>>2],D=l^A[o+204>>2],A[r+12>>2]=D,b=e^v,A[r+8>>2]=b,M=t^n,A[r+4>>2]=M,x=Q^p,A[r>>2]=x,(0|(B=B+1|0))!=7;);A:{g:{C:{if(e=g-16|0){if((0|e)==16)break C;break g}q=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,I=i[r+48|0]|i[r+49|0]<<8|i[r+50|0]<<16|i[r+51|0]<<24,a=i[r+32|0]|i[r+33|0]<<8|i[r+34|0]<<16|i[r+35|0]<<24,_=i[r+80|0]|i[r+81|0]<<8|i[r+82|0]<<16|i[r+83|0]<<24,s=i[0|(g=r- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,h=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,l=i[r+52|0]|i[r+53|0]<<8|i[r+54|0]<<16|i[r+55|0]<<24,v=i[r+36|0]|i[r+37|0]<<8|i[r+38|0]<<16|i[r+39|0]<<24,n=i[r+84|0]|i[r+85|0]<<8|i[r+86|0]<<16|i[r+87|0]<<24,Q=i[r+68|0]|i[r+69|0]<<8|i[r+70|0]<<16|i[r+71|0]<<24,p=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,B=i[r+56|0]|i[r+57|0]<<8|i[r+58|0]<<16|i[r+59|0]<<24,t=i[r+40|0]|i[r+41|0]<<8|i[r+42|0]<<16|i[r+43|0]<<24,e=i[r+88|0]|i[r+89|0]<<8|i[r+90|0]<<16|i[r+91|0]<<24,g=i[r+72|0]|i[r+73|0]<<8|i[r+74|0]<<16|i[r+75|0]<<24,r=D^(i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24)^(i[r+60|0]|i[r+61|0]<<8|i[r+62|0]<<16|i[r+63|0]<<24)^(i[r+44|0]|i[r+45|0]<<8|i[r+46|0]<<16|i[r+47|0]<<24)^(i[r+92|0]|i[r+93|0]<<8|i[r+94|0]<<16|i[r+95|0]<<24)^(i[r+76|0]|i[r+77|0]<<8|i[r+78|0]<<16|i[r+79|0]<<24),c[C+12|0]=r,c[C+13|0]=r>>>8,c[C+14|0]=r>>>16,c[C+15|0]=r>>>24,g=b^p^g^e^t^B,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=M^h^l^v^n^Q,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=x^q^I^a^_^s,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24;break A}Q=i[r+32|0]|i[r+33|0]<<8|i[r+34|0]<<16|i[r+35|0]<<24,p=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,B=i[r+36|0]|i[r+37|0]<<8|i[r+38|0]<<16|i[r+39|0]<<24,t=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,e=i[r+40|0]|i[r+41|0]<<8|i[r+42|0]<<16|i[r+43|0]<<24,g=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,n=D^(i[r+44|0]|i[r+45|0]<<8|i[r+46|0]<<16|i[r+47|0]<<24)^(i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24),c[C+12|0]=n,c[C+13|0]=n>>>8,c[C+14|0]=n>>>16,c[C+15|0]=n>>>24,g=b^g^e,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=M^t^B,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=x^Q^p,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,l=i[r+48|0]|i[r+49|0]<<8|i[r+50|0]<<16|i[r+51|0]<<24,v=i[r+80|0]|i[r+81|0]<<8|i[r+82|0]<<16|i[r+83|0]<<24,n=i[0|(g=r- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,Q=i[r+52|0]|i[r+53|0]<<8|i[r+54|0]<<16|i[r+55|0]<<24,p=i[r+84|0]|i[r+85|0]<<8|i[r+86|0]<<16|i[r+87|0]<<24,B=i[r+68|0]|i[r+69|0]<<8|i[r+70|0]<<16|i[r+71|0]<<24,t=i[r+56|0]|i[r+57|0]<<8|i[r+58|0]<<16|i[r+59|0]<<24,e=i[r+88|0]|i[r+89|0]<<8|i[r+90|0]<<16|i[r+91|0]<<24,g=i[r+72|0]|i[r+73|0]<<8|i[r+74|0]<<16|i[r+75|0]<<24,r=(i[r+60|0]|i[r+61|0]<<8|i[r+62|0]<<16|i[r+63|0]<<24)^(i[r+92|0]|i[r+93|0]<<8|i[r+94|0]<<16|i[r+95|0]<<24)^(i[r+76|0]|i[r+77|0]<<8|i[r+78|0]<<16|i[r+79|0]<<24),c[C+28|0]=r,c[C+29|0]=r>>>8,c[C+30|0]=r>>>16,c[C+31|0]=r>>>24,g=t^g^e,c[C+24|0]=g,c[C+25|0]=g>>>8,c[C+26|0]=g>>>16,c[C+27|0]=g>>>24,g=Q^p^B,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=l^n^v,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24;break A}$0(C,0,g)}W=o+224|0}function ge(C,g,e){var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0;for(W=t=W-4032|0,D2(t+160|0,e),a=A[e+36>>2],A[(I=t+3840|0)>>2]=A[e+32>>2],A[I+4>>2]=a,_=A[e+28>>2],A[(a=t+3832|0)>>2]=A[e+24>>2],A[a+4>>2]=_,h=A[e+20>>2],A[(_=t+3824|0)>>2]=A[e+16>>2],A[_+4>>2]=h,n=A[e+12>>2],A[(h=t+3816|0)>>2]=A[e+8>>2],A[h+4>>2]=n,n=A[e+4>>2],A[t+3808>>2]=A[e>>2],A[t+3812>>2]=n,p=A[e+52>>2],A[(n=t+3856|0)>>2]=A[e+48>>2],A[n+4>>2]=p,D=A[e+60>>2],A[(p=t+3864|0)>>2]=A[e+56>>2],A[p+4>>2]=D,B=A[4+(l=e- -64|0)>>2],A[(D=t+3872|0)>>2]=A[l>>2],A[D+4>>2]=B,B=A[e+76>>2],A[(l=t+3880|0)>>2]=A[e+72>>2],A[l+4>>2]=B,B=A[e+44>>2],A[t+3848>>2]=A[e+40>>2],A[t+3852>>2]=B,b=A[e+92>>2],A[(B=t+3896|0)>>2]=A[e+88>>2],A[B+4>>2]=b,M=A[e+100>>2],A[(b=t+3904|0)>>2]=A[e+96>>2],A[b+4>>2]=M,x=A[e+108>>2],A[(M=t+3912|0)>>2]=A[e+104>>2],A[M+4>>2]=x,q=A[e+116>>2],A[(x=t+3920|0)>>2]=A[e+112>>2],A[x+4>>2]=q,q=A[e+84>>2],A[t+3888>>2]=A[e+80>>2],A[t+3892>>2]=q,P2(r=t+3528|0,q=t+3808|0),kA(o=t+2408|0,r,s=t+3648|0),kA(t+2448|0,Q=t+3568|0,v=t+3608|0),kA(t+2488|0,v,s),kA(t+2528|0,r,Q),D2(s=t+320|0,o),b2(r=t+3368|0,e,s),kA(o=t+2248|0,r,s=t+3488|0),kA(t+2288|0,Q=t+3408|0,v=t+3448|0),kA(t+2328|0,v,s),kA(t+2368|0,r,Q),D2(t+480|0,o),o=A[4+(r=t+2440|0)>>2],A[I>>2]=A[r>>2],A[I+4>>2]=o,o=A[4+(r=t+2432|0)>>2],A[a>>2]=A[r>>2],A[a+4>>2]=o,o=A[4+(r=t+2424|0)>>2],A[_>>2]=A[r>>2],A[_+4>>2]=o,o=A[4+(r=t+2416|0)>>2],A[h>>2]=A[r>>2],A[h+4>>2]=o,o=A[4+(r=t+2456|0)>>2],A[n>>2]=A[r>>2],A[n+4>>2]=o,o=A[4+(r=t+2464|0)>>2],A[p>>2]=A[r>>2],A[p+4>>2]=o,o=A[4+(r=t+2472|0)>>2],A[D>>2]=A[r>>2],A[D+4>>2]=o,o=A[4+(r=t+2480|0)>>2],A[l>>2]=A[r>>2],A[l+4>>2]=o,r=A[t+2412>>2],A[t+3808>>2]=A[t+2408>>2],A[t+3812>>2]=r,r=A[t+2452>>2],A[t+3848>>2]=A[t+2448>>2],A[t+3852>>2]=r,o=A[4+(r=t+2520|0)>>2],A[x>>2]=A[r>>2],A[x+4>>2]=o,o=A[4+(r=t+2512|0)>>2],A[M>>2]=A[r>>2],A[M+4>>2]=o,o=A[4+(r=t+2504|0)>>2],A[b>>2]=A[r>>2],A[b+4>>2]=o,o=A[4+(r=t+2496|0)>>2],A[B>>2]=A[r>>2],A[B+4>>2]=o,r=A[t+2492>>2],A[t+3888>>2]=A[t+2488>>2],A[t+3892>>2]=r,P2(r=t+3208|0,q),kA(o=t+2088|0,r,s=t+3328|0),kA(t+2128|0,Q=t+3248|0,v=t+3288|0),kA(t+2168|0,v,s),kA(t+2208|0,r,Q),D2(s=t+640|0,o),b2(r=t+3048|0,e,s),kA(o=t+1928|0,r,s=t+3168|0),kA(t+1968|0,Q=t+3088|0,v=t+3128|0),kA(t+2008|0,v,s),kA(t+2048|0,r,Q),D2(t+800|0,o),o=A[4+(r=t+2280|0)>>2],A[I>>2]=A[r>>2],A[I+4>>2]=o,o=A[4+(r=t+2272|0)>>2],A[a>>2]=A[r>>2],A[a+4>>2]=o,o=A[4+(r=t+2264|0)>>2],A[_>>2]=A[r>>2],A[_+4>>2]=o,o=A[4+(r=t+2256|0)>>2],A[h>>2]=A[r>>2],A[h+4>>2]=o,o=A[4+(r=t+2296|0)>>2],A[n>>2]=A[r>>2],A[n+4>>2]=o,o=A[4+(r=t+2304|0)>>2],A[p>>2]=A[r>>2],A[p+4>>2]=o,o=A[4+(r=t+2312|0)>>2],A[D>>2]=A[r>>2],A[D+4>>2]=o,o=A[4+(r=t+2320|0)>>2],A[l>>2]=A[r>>2],A[l+4>>2]=o,r=A[t+2252>>2],A[t+3808>>2]=A[t+2248>>2],A[t+3812>>2]=r,r=A[t+2292>>2],A[t+3848>>2]=A[t+2288>>2],A[t+3852>>2]=r,o=A[4+(r=t+2360|0)>>2],A[x>>2]=A[r>>2],A[x+4>>2]=o,o=A[4+(r=t+2352|0)>>2],A[M>>2]=A[r>>2],A[M+4>>2]=o,o=A[4+(r=t+2344|0)>>2],A[b>>2]=A[r>>2],A[b+4>>2]=o,o=A[4+(r=t+2336|0)>>2],A[B>>2]=A[r>>2],A[B+4>>2]=o,r=A[t+2332>>2],A[t+3888>>2]=A[t+2328>>2],A[t+3892>>2]=r,P2(r=t+2888|0,q),kA(o=t+1768|0,r,s=t+3008|0),kA(t+1808|0,Q=t+2928|0,v=t+2968|0),kA(t+1848|0,v,s),kA(t+1888|0,r,Q),D2(s=t+960|0,o),b2(r=t+2728|0,e,s),kA(e=t+1608|0,r,o=t+2848|0),kA(t+1648|0,s=t+2768|0,Q=t+2808|0),kA(t+1688|0,Q,o),kA(t+1728|0,r,s),D2(t+1120|0,e),r=A[4+(e=t+2120|0)>>2],A[I>>2]=A[e>>2],A[I+4>>2]=r,I=A[4+(e=t+2112|0)>>2],A[a>>2]=A[e>>2],A[a+4>>2]=I,I=A[4+(e=t+2104|0)>>2],A[_>>2]=A[e>>2],A[_+4>>2]=I,I=A[4+(e=t+2096|0)>>2],A[h>>2]=A[e>>2],A[h+4>>2]=I,I=A[4+(e=t+2136|0)>>2],A[n>>2]=A[e>>2],A[n+4>>2]=I,I=A[4+(e=t+2144|0)>>2],A[p>>2]=A[e>>2],A[p+4>>2]=I,I=A[4+(e=t+2152|0)>>2],A[D>>2]=A[e>>2],A[D+4>>2]=I,I=A[4+(e=t+2160|0)>>2],A[l>>2]=A[e>>2],A[l+4>>2]=I,e=A[t+2092>>2],A[t+3808>>2]=A[t+2088>>2],A[t+3812>>2]=e,e=A[t+2132>>2],A[t+3848>>2]=A[t+2128>>2],A[t+3852>>2]=e,I=A[4+(e=t+2200|0)>>2],A[x>>2]=A[e>>2],A[x+4>>2]=I,I=A[4+(e=t+2192|0)>>2],A[M>>2]=A[e>>2],A[M+4>>2]=I,I=A[4+(e=t+2184|0)>>2],A[b>>2]=A[e>>2],A[b+4>>2]=I,I=A[4+(e=t+2176|0)>>2],A[B>>2]=A[e>>2],A[B+4>>2]=I,e=A[t+2172>>2],A[t+3888>>2]=A[t+2168>>2],A[t+3892>>2]=e,P2(e=t+2568|0,q),kA(I=t+1448|0,e,a=t+2688|0),kA(t+1488|0,_=t+2608|0,h=t+2648|0),kA(t+1528|0,h,a),kA(t+1568|0,e,_),D2(t+1280|0,I),I=0,e=0;_=(a=t+3968|0)+(e<<1)|0,h=i[g+e|0],c[_+1|0]=h>>>4,c[0|_]=15&h,a=a+((_=1|e)<<1)|0,_=i[g+_|0],c[a+1|0]=_>>>4,c[0|a]=15&_,(0|(e=e+2|0))!=32;);for(g=0;e=8+(a=(e=g)+i[0|(g=(t+3968|0)+I|0)]|0)|0,c[0|g]=a-(240&e),e=8+(a=i[g+1|0]+(e<<24>>24>>4)|0)|0,c[g+1|0]=a-(240&e),e=8+(a=i[g+2|0]+(e<<24>>24>>4)|0)|0,c[g+2|0]=a-(240&e),g=e<<24>>24>>4,(0|(I=I+3|0))!=63;);for(c[t+4031|0]=i[t+4031|0]+g,A[C+32>>2]=0,A[C+36>>2]=0,A[C+24>>2]=0,A[C+28>>2]=0,A[C+16>>2]=0,A[C+20>>2]=0,A[C+8>>2]=0,A[C+12>>2]=0,A[C>>2]=0,A[C+4>>2]=0,A[C+44>>2]=0,A[C+48>>2]=0,A[C+40>>2]=1,A[C+52>>2]=0,A[C+56>>2]=0,A[C+60>>2]=0,A[C+64>>2]=0,A[C+68>>2]=0,A[C+72>>2]=0,A[C+76>>2]=0,A[C+80>>2]=1,$0(C+84|0,0,76),D=C+120|0,l=C+80|0,B=C+40|0,h=t+3768|0,e=t+3888|0,a=t+3848|0,n=t+3728|0,I=t+3928|0,p=63;pe(t,b=t+160|0,c[(t+3968|0)+p|0]),b2(g=t+3808|0,C,t),kA(_=t+3688|0,g,I),kA(n,a,e),kA(h,e,I),P2(g,_),kA(_,g,I),kA(n,a,e),kA(h,e,I),P2(g,_),kA(_,g,I),kA(n,a,e),kA(h,e,I),P2(g,_),kA(_,g,I),kA(n,a,e),kA(h,e,I),P2(g,_),kA(C,g,I),kA(B,a,e),kA(l,e,I),kA(D,g,a),p=p-1|0;);pe(t,b,c[t+3968|0]),b2(g,C,t),kA(C,g,I),kA(B,a,e),kA(l,e,I),kA(D,g,a),W=t+4032|0}function Ce(C,g,e,t){var r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0;W=r=W-320|0,A[r+280>>2]=0,A[r+284>>2]=0,A[r+272>>2]=0,A[r+276>>2]=0,A[r+264>>2]=0,A[r+268>>2]=0,A[r+256>>2]=0,A[r+260>>2]=0,P0(_A=r+256|0,g,e),wA=i[t+16|0]|i[t+17|0]<<8|i[t+18|0]<<16|i[t+19|0]<<24,z=i[t+48|0]|i[t+49|0]<<8|i[t+50|0]<<16|i[t+51|0]<<24,a=i[t+20|0]|i[t+21|0]<<8|i[t+22|0]<<16|i[t+23|0]<<24,_=i[t+52|0]|i[t+53|0]<<8|i[t+54|0]<<16|i[t+55|0]<<24,s=i[t+24|0]|i[t+25|0]<<8|i[t+26|0]<<16|i[t+27|0]<<24,h=i[t+56|0]|i[t+57|0]<<8|i[t+58|0]<<16|i[t+59|0]<<24,n=i[t+28|0]|i[t+29|0]<<8|i[t+30|0]<<16|i[t+31|0]<<24,B=i[t+60|0]|i[t+61|0]<<8|i[t+62|0]<<16|i[t+63|0]<<24,g=i[t+36|0]|i[t+37|0]<<8|i[t+38|0]<<16|i[t+39|0]<<24,Q=i[t+84|0]|i[t+85|0]<<8|i[t+86|0]<<16|i[t+87|0]<<24,p=i[t+116|0]|i[t+117|0]<<8|i[t+118|0]<<16|i[t+119|0]<<24,sA=i[t+100|0]|i[t+101|0]<<8|i[t+102|0]<<16|i[t+103|0]<<24,nA=i[t+44|0]|i[t+45|0]<<8|i[t+46|0]<<16|i[t+47|0]<<24,l=i[t+92|0]|i[t+93|0]<<8|i[t+94|0]<<16|i[t+95|0]<<24,v=i[t+124|0]|i[t+125|0]<<8|i[t+126|0]<<16|i[t+127|0]<<24,fA=i[t+108|0]|i[t+109|0]<<8|i[t+110|0]<<16|i[t+111|0]<<24,uA=i[t+32|0]|i[t+33|0]<<8|i[t+34|0]<<16|i[t+35|0]<<24,D=i[t+80|0]|i[t+81|0]<<8|i[t+82|0]<<16|i[t+83|0]<<24,b=i[t+112|0]|i[t+113|0]<<8|i[t+114|0]<<16|i[t+115|0]<<24,vA=i[t+96|0]|i[t+97|0]<<8|i[t+98|0]<<16|i[t+99|0]<<24,M=A[r+272>>2],x=A[r+256>>2],q=A[r+260>>2],V=A[r+264>>2],$=A[r+268>>2],K=A[r+276>>2],J=A[r+284>>2],o=i[t+40|0]|i[t+41|0]<<8|i[t+42|0]<<16|i[t+43|0]<<24,I=i[t+104|0]|i[t+105|0]<<8|i[t+106|0]<<16|i[t+107|0]<<24,A[r+280>>2]=o^I&(i[t+120|0]|i[t+121|0]<<8|i[t+122|0]<<16|i[t+123|0]<<24)^A[r+280>>2]^(i[t+88|0]|i[t+89|0]<<8|i[t+90|0]<<16|i[t+91|0]<<24),A[r+272>>2]=uA^vA&b^D^M,A[r+284>>2]=nA^fA&v^l^J,A[r+276>>2]=g^sA&p^Q^K,A[r+268>>2]=fA^nA&B^n^$,A[r+264>>2]=h&o^s^V^I,A[r+260>>2]=sA^g&_^a^q,A[r+256>>2]=vA^z&uA^wA^x,$0(e+_A|0,0,32-e|0),P0(C,_A,e),e=A[r+280>>2],_A=A[r+272>>2],sA=A[r+284>>2],nA=A[r+276>>2],fA=A[r+256>>2],uA=A[r+260>>2],vA=A[r+264>>2],wA=A[r+268>>2],C=A[t+124>>2],A[r+312>>2]=A[t+120>>2],A[r+316>>2]=C,C=A[t+116>>2],A[r+304>>2]=A[t+112>>2],A[r+308>>2]=C,C=A[t+108>>2],A[r+248>>2]=A[t+104>>2],A[r+252>>2]=C,C=A[t+100>>2],A[r+240>>2]=A[t+96>>2],A[r+244>>2]=C,C=A[t+124>>2],A[r+232>>2]=A[t+120>>2],A[r+236>>2]=C,C=A[t+116>>2],A[r+224>>2]=A[t+112>>2],A[r+228>>2]=C,a0(g=r+288|0,r+240|0,r+224|0),C=A[r+300>>2],A[t+120>>2]=A[r+296>>2],A[t+124>>2]=C,C=A[r+292>>2],A[t+112>>2]=A[r+288>>2],A[t+116>>2]=C,C=A[t+92>>2],A[r+216>>2]=A[t+88>>2],A[r+220>>2]=C,C=A[t+84>>2],A[r+208>>2]=A[t+80>>2],A[r+212>>2]=C,C=A[t+108>>2],A[r+200>>2]=A[t+104>>2],A[r+204>>2]=C,C=A[t+100>>2],A[r+192>>2]=A[t+96>>2],A[r+196>>2]=C,a0(g,r+208|0,r+192|0),C=A[r+300>>2],A[t+104>>2]=A[r+296>>2],A[t+108>>2]=C,C=A[r+292>>2],A[t+96>>2]=A[r+288>>2],A[t+100>>2]=C,C=A[t+76>>2],A[r+184>>2]=A[t+72>>2],A[r+188>>2]=C,z=A[4+(C=t- -64|0)>>2],A[r+176>>2]=A[C>>2],A[r+180>>2]=z,z=A[t+92>>2],A[r+168>>2]=A[t+88>>2],A[r+172>>2]=z,z=A[t+84>>2],A[r+160>>2]=A[t+80>>2],A[r+164>>2]=z,a0(g,r+176|0,r+160|0),z=A[r+300>>2],A[t+88>>2]=A[r+296>>2],A[t+92>>2]=z,z=A[r+292>>2],A[t+80>>2]=A[r+288>>2],A[t+84>>2]=z,z=A[t+60>>2],A[r+152>>2]=A[t+56>>2],A[r+156>>2]=z,z=A[t+52>>2],A[r+144>>2]=A[t+48>>2],A[r+148>>2]=z,z=A[t+76>>2],A[r+136>>2]=A[t+72>>2],A[r+140>>2]=z,z=A[C+4>>2],A[r+128>>2]=A[C>>2],A[r+132>>2]=z,a0(g,r+144|0,r+128|0),z=A[r+300>>2],A[t+72>>2]=A[r+296>>2],A[t+76>>2]=z,z=A[r+292>>2],A[C>>2]=A[r+288>>2],A[C+4>>2]=z,z=A[t+44>>2],A[r+120>>2]=A[t+40>>2],A[r+124>>2]=z,z=A[t+36>>2],A[r+112>>2]=A[t+32>>2],A[r+116>>2]=z,z=A[t+60>>2],A[r+104>>2]=A[t+56>>2],A[r+108>>2]=z,z=A[t+52>>2],A[r+96>>2]=A[t+48>>2],A[r+100>>2]=z,a0(g,r+112|0,r+96|0),z=A[r+300>>2],A[t+56>>2]=A[r+296>>2],A[t+60>>2]=z,z=A[r+292>>2],A[t+48>>2]=A[r+288>>2],A[t+52>>2]=z,z=A[t+28>>2],A[r+88>>2]=A[t+24>>2],A[r+92>>2]=z,z=A[t+20>>2],A[r+80>>2]=A[t+16>>2],A[r+84>>2]=z,z=A[t+44>>2],A[r+72>>2]=A[t+40>>2],A[r+76>>2]=z,z=A[t+36>>2],A[r+64>>2]=A[t+32>>2],A[r+68>>2]=z,a0(g,r+80|0,r- -64|0),z=A[r+300>>2],A[t+40>>2]=A[r+296>>2],A[t+44>>2]=z,z=A[r+292>>2],A[t+32>>2]=A[r+288>>2],A[t+36>>2]=z,z=A[t+12>>2],A[r+56>>2]=A[t+8>>2],A[r+60>>2]=z,z=A[t+4>>2],A[r+48>>2]=A[t>>2],A[r+52>>2]=z,z=A[t+28>>2],A[r+40>>2]=A[t+24>>2],A[r+44>>2]=z,z=A[t+20>>2],A[r+32>>2]=A[t+16>>2],A[r+36>>2]=z,a0(g,r+48|0,r+32|0),z=A[r+300>>2],A[t+24>>2]=A[r+296>>2],A[t+28>>2]=z,z=A[r+292>>2],A[t+16>>2]=A[r+288>>2],A[t+20>>2]=z,z=A[r+316>>2],A[r+24>>2]=A[r+312>>2],A[r+28>>2]=z,z=A[r+308>>2],A[r+16>>2]=A[r+304>>2],A[r+20>>2]=z,z=A[t+12>>2],A[r+8>>2]=A[t+8>>2],A[r+12>>2]=z,z=A[t+4>>2],A[r>>2]=A[t>>2],A[r+4>>2]=z,a0(g,r+16|0,r),g=A[r+300>>2],A[t+8>>2]=A[r+296>>2],A[t+12>>2]=g,g=A[r+292>>2],A[t>>2]=A[r+288>>2],A[t+4>>2]=g,A[t+12>>2]=wA^(i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24),A[t+8>>2]=vA^(i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24),A[t+4>>2]=uA^(i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24),A[t>>2]=fA^(i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24),A[C>>2]=_A^(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),A[t+68>>2]=nA^(i[t+68|0]|i[t+69|0]<<8|i[t+70|0]<<16|i[t+71|0]<<24),A[t+72>>2]=e^(i[t+72|0]|i[t+73|0]<<8|i[t+74|0]<<16|i[t+75|0]<<24),A[t+76>>2]=sA^(i[t+76|0]|i[t+77|0]<<8|i[t+78|0]<<16|i[t+79|0]<<24),W=r+320|0}function ee(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA,iA,hA,mA,HA,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0,O=0,rA=0,cA=0;aA=w(t=(v=A[g+12>>2])<<1,a=t>>31,c0=(qA=A[g+4>>2])<<1,r=c0>>31),YA=y,q=H=A[g+8>>2],EA=(FA=w(H,D=H>>31,H,D))+aA|0,aA=y+YA|0,aA=EA>>>0>>0?aA+1|0:aA,YA=w(g0=A[g+16>>2],_=g0>>31,FA=($A=A[g>>2])<<1,o=FA>>31),aA=y+aA|0,aA=(EA=YA+EA|0)>>>0>>0?aA+1|0:aA,B=A[g+28>>2],YA=w(MA=M0(B,38),b=MA>>31,B,V=B>>31),aA=y+aA|0,aA=(EA=YA+EA|0)>>>0>>0?aA+1|0:aA,YA=EA,Q=A[g+32>>2],i0=w(u=M0(Q,19),s=u>>31,EA=(e=A[g+24>>2])<<1,EA>>31),EA=y+aA|0,EA=(YA=YA+i0|0)>>>0>>0?EA+1|0:EA,nA=A[g+36>>2],aA=w(i0=M0(nA,38),I=i0>>31,_0=(h=A[g+20>>2])<<1,p=_0>>31),g=y+EA|0,uA=aA=(aA>>>0>(YA=aA+YA|0)>>>0?g+1:g)<<1|YA>>>31,vA=EA=33554432+($=YA<<1)|0,wA=aA=EA>>>0<33554432?aA+1|0:aA,g=aA>>26,VA=(67108863&aA)<<6|EA>>>26,aA=w(c0,r,g0,_),YA=y,EA=(I0=w(H<<=1,l=H>>31,v,K=v>>31))+aA|0,aA=y+YA|0,aA=EA>>>0>>0?aA+1|0:aA,YA=(I0=w(h,M=h>>31,FA,o))+EA|0,EA=y+aA|0,EA=YA>>>0>>0?EA+1|0:EA,rA=w(u,s,I0=B<<1,J=I0>>31),aA=y+EA|0,aA=(YA=rA+YA|0)>>>0>>0?aA+1|0:aA,EA=w(i0,I,e,n=e>>31),aA=y+aA|0,g=g+(EA=(EA>>>0>(YA=EA+YA|0)>>>0?aA+1:aA)<<1|YA>>>31)|0,rA=YA=(aA=YA<<1)+VA|0,aA=g=aA>>>0>YA>>>0?g+1|0:g,iA=YA=YA+16777216|0,VA=(33554431&(aA=YA>>>0<16777216?aA+1|0:aA))<<7|YA>>>25,YA=aA>>25,g=w(t,a,v,K),aA=y,EA=w(g0,_,H,l),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=w(c0,r,_0,p),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(h0=w(FA,o,e,n))+g|0,g=y+aA|0,g=EA>>>0>>0?g+1|0:g,h0=w(u,s,Q,x=Q>>31),aA=y+g|0,aA=(EA=h0+EA|0)>>>0>>0?aA+1|0:aA,g=(h0=w(i0,I,I0,J))+EA|0,EA=y+aA|0,g=((aA=g)>>>0>>0?EA+1:EA)<<1|aA>>>31,EA=VA,VA=aA<<1,aA=g+YA|0,aA=(EA=EA+VA|0)>>>0>>0?aA+1|0:aA,h0=g=EA+33554432|0,YA=aA=g>>>0<33554432?aA+1|0:aA,A[C+24>>2]=EA-(-67108864&g),EA=w(g=M0(h,38),g>>31,h,M),VA=y,g=(aA=w(g=$A,aA=g>>31,g,aA))+EA|0,EA=y+VA|0,EA=g>>>0>>0?EA+1|0:EA,D0=w($A=M0(e,19),z=$A>>31,VA=g0<<1,_A=VA>>31),aA=y+EA|0,aA=(g=D0+g|0)>>>0>>0?aA+1|0:aA,EA=w(t,a,MA,b),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(D0=w(u,s,H,l))+g|0,g=y+aA|0,g=EA>>>0>>0?g+1|0:g,D0=w(c0,r,i0,I),aA=y+g|0,D0=aA=((EA=D0+EA|0)>>>0>>0?aA+1:aA)<<1|EA>>>31,hA=g=33554432+(sA=EA<<1)|0,mA=EA=g>>>0<33554432?aA+1|0:aA,O=(67108863&EA)<<6|g>>>26,cA=EA>>26,g=w($A,z,_0,p),aA=y,EA=w(FA,o,qA,fA=qA>>31),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(d=w(g0,_,MA,b))+g|0,g=y+aA|0,g=EA>>>0>>0?g+1|0:g,d=w(u,s,t,a),aA=y+g|0,aA=(EA=d+EA|0)>>>0>>0?aA+1|0:aA,d=(g=w(i0,I,q,D))+EA|0,EA=y+aA|0,aA=(g=(g>>>0>d>>>0?EA+1:EA)<<1|d>>>31)+cA|0,aA=(EA=(d<<=1)+O|0)>>>0>>0?aA+1|0:aA,cA=EA,d=EA=EA+16777216|0,HA=(33554431&(aA=EA>>>0<16777216?aA+1|0:aA))<<7|EA>>>25,O=aA>>25,g=w(FA,o,q,D),aA=y,EA=w(c0,r,qA,fA),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,qA=w($A,z,e,n),EA=y+aA|0,EA=(g=qA+g|0)>>>0>>0?EA+1|0:EA,qA=w(_0,p,MA,b),aA=y+EA|0,aA=(g=qA+g|0)>>>0>>0?aA+1|0:aA,EA=w(u,s,VA,_A),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(qA=w(i0,I,t,a))+g|0,g=y+aA|0,aA=(aA=(EA>>>0>>0?g+1:g)<<1|EA>>>31)+O|0,$A=g=(EA<<=1)+HA|0,aA=g>>>0>>0?aA+1|0:aA,O=g=g+33554432|0,qA=EA=g>>>0<33554432?aA+1|0:aA,A[C+8>>2]=$A-(-67108864&g),g=w(H,l,h,M),EA=y,aA=($A=w(g0,_,t,a))+g|0,g=y+EA|0,g=aA>>>0<$A>>>0?g+1|0:g,EA=($A=w(c0,r,e,n))+aA|0,aA=y+g|0,aA=EA>>>0<$A>>>0?aA+1|0:aA,g=($A=w(FA,o,B,V))+EA|0,EA=y+aA|0,EA=g>>>0<$A>>>0?EA+1|0:EA,$A=w(i0,I,Q,x),aA=y+EA|0,aA=(aA=((g=$A+g|0)>>>0<$A>>>0?aA+1:aA)<<1|g>>>31)+(EA=YA>>26)|0,g=(EA=YA=($A=g<<1)+(g=(67108863&YA)<<6|h0>>>26)|0)>>>0>>0?aA+1|0:aA,$A=aA=EA+16777216|0,YA=g=aA>>>0<16777216?g+1|0:g,A[C+28>>2]=EA-(-33554432&aA),g=w(FA,o,v,K),aA=y,EA=w(c0,r,q,D),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=w(e,n,MA,b),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(u=w(u,s,_0,p))+g|0,g=y+aA|0,g=EA>>>0>>0?g+1|0:g,aA=(u=w(i0,I,g0,_))+EA|0,EA=y+g|0,g=aA,aA=(aA>>>0>>0?EA+1:EA)<<1|aA>>>31,EA=g<<1,aA=(g=qA>>26)+aA|0,aA=(EA=EA+(qA=(67108863&qA)<<6|O>>>26)|0)>>>0>>0?aA+1|0:aA,u=g=EA+16777216|0,qA=aA=g>>>0<16777216?aA+1|0:aA,A[C+12>>2]=EA-(-33554432&g),g=w(e,n,H,l),aA=y,EA=w(g0,_,g0,_),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=w(t,a,_0,p),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=w(c0,r,I0,J),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(g0=w(FA,o,Q,x))+g|0,g=y+aA|0,g=EA>>>0>>0?g+1|0:g,aA=(g0=w(aA=i0,I,i0=nA,_0=i0>>31))+EA|0,EA=y+g|0,g=aA,aA=(aA>>>0>>0?EA+1:EA)<<1|aA>>>31,EA=g<<1,aA=(g=YA>>25)+aA|0,aA=(EA=EA+(YA=(33554431&YA)<<7|$A>>>25)|0)>>>0>>0?aA+1|0:aA,g0=g=EA+33554432|0,YA=aA=g>>>0<33554432?aA+1|0:aA,A[C+32>>2]=EA-(-67108864&g),aA=qA>>25,EA=(qA=(33554431&qA)<<7|u>>>25)+($-(g=-67108864&vA)|0)|0,g=aA+(uA-((g>>>0>$>>>0)+wA|0)|0)|0,g=EA>>>0>>0?g+1|0:g,qA=EA,aA=g,g=((67108863&(aA=(EA=EA+33554432|0)>>>0<33554432?aA+1|0:aA))<<6|EA>>>26)+(MA=rA-(-33554432&iA)|0)|0,A[C+20>>2]=g,A[C+16>>2]=qA-(-67108864&EA),g=w(t,a,e,n),EA=y,aA=(qA=w(h,M,VA,_A))+g|0,g=y+EA|0,g=aA>>>0>>0?g+1|0:g,EA=(qA=w(H,l,B,V))+aA|0,aA=y+g|0,aA=EA>>>0>>0?aA+1|0:aA,g=(qA=w(c0,r,Q,x))+EA|0,EA=y+aA|0,EA=g>>>0>>0?EA+1|0:EA,qA=w(FA,o,i0,_0),aA=y+EA|0,aA=((g=qA+g|0)>>>0>>0?aA+1:aA)<<1|g>>>31,qA=g<<1,aA=aA+(EA=YA>>26)|0,g=(g=(67108863&YA)<<6|g0>>>26)>>>0>(YA=qA+g|0)>>>0?aA+1|0:aA,g=(aA=YA+16777216|0)>>>0<16777216?g+1|0:g,A[C+36>>2]=YA-(-33554432&aA),qA=cA-(-33554432&d)|0,YA=sA-(EA=-67108864&hA)|0,c0=D0-((EA>>>0>sA>>>0)+mA|0)|0,g=w((33554431&g)<<7|aA>>>25,g>>25,19,0),EA=y+c0|0,YA=aA=g+YA|0,g=g>>>0>aA>>>0?EA+1|0:EA,g=((67108863&(g=(aA=aA+33554432|0)>>>0<33554432?g+1|0:g))<<6|aA>>>26)+qA|0,A[C+4>>2]=g,A[C>>2]=YA-(-67108864&aA)}function gA(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0;iA=w(t=(D=A[g+12>>2])<<1,a=t>>31,D,V=D>>31),mA=y,hA=($A=w(aA=A[g+16>>2],_=aA>>31,s=(HA=A[g+8>>2])<<1,Q=s>>31))+iA|0,iA=y+mA|0,iA=hA>>>0<$A>>>0?iA+1|0:iA,mA=(g0=w(d=(h=A[g+20>>2])<<1,p=d>>31,$A=(EA=A[g+4>>2])<<1,r=$A>>31))+hA|0,hA=y+iA|0,hA=mA>>>0>>0?hA+1|0:hA,YA=w(e=A[g+24>>2],n=e>>31,g0=(VA=A[g>>2])<<1,o=g0>>31),iA=y+hA|0,iA=(mA=YA+mA|0)>>>0>>0?iA+1|0:iA,hA=mA,l=A[g+32>>2],mA=w(i0=M0(l,19),B=i0>>31,l,M=l>>31),iA=y+iA|0,iA=(hA=hA+mA|0)>>>0>>0?iA+1|0:iA,_A=A[g+36>>2],mA=w(YA=M0(_A,38),I=YA>>31,x=(v=A[g+28>>2])<<1,$=x>>31),g=y+iA|0,FA=hA=mA+hA|0,mA=hA>>>0>>0?g+1|0:g,g=w($A,r,aA,_),iA=y,hA=w(s,Q,D,V),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,qA=w(h,q=h>>31,g0,o),hA=y+iA|0,hA=(g=qA+g|0)>>>0>>0?hA+1|0:hA,qA=w(i0,B,x,$),iA=y+hA|0,iA=(g=qA+g|0)>>>0>>0?iA+1|0:iA,hA=w(YA,I,e,n),iA=y+iA|0,D0=g=hA+g|0,u=g>>>0>>0?iA+1|0:iA,iA=w($A,r,t,a),hA=y,K=g=HA,HA=w(g,H=g>>31,g,H),g=y+hA|0,g=(iA=HA+iA|0)>>>0>>0?g+1|0:g,hA=(HA=w(g0,o,aA,_))+iA|0,iA=y+g|0,iA=hA>>>0>>0?iA+1|0:iA,g=(HA=w(qA=M0(v,38),b=qA>>31,v,J=v>>31))+hA|0,hA=y+iA|0,hA=g>>>0>>0?hA+1|0:hA,g=(iA=g)+(HA=w(i0,B,g=e<<1,g>>31))|0,iA=y+hA|0,iA=g>>>0>>0?iA+1|0:iA,hA=g,g=w(YA,I,d,p),iA=y+iA|0,sA=hA=hA+g|0,nA=iA=g>>>0>hA>>>0?iA+1|0:iA,g=iA,fA=hA=hA+33554432|0,uA=g=hA>>>0<33554432?g+1|0:g,iA=(iA=g>>26)+u|0,D0=g=(hA=(67108863&g)<<6|hA>>>26)+D0|0,iA=g>>>0>>0?iA+1|0:iA,vA=g=g+16777216|0,iA=(iA=(hA=g>>>0<16777216?iA+1|0:iA)>>25)+mA|0,g=(g=(33554431&hA)<<7|g>>>25)>>>0>(hA=g+FA|0)>>>0?iA+1|0:iA,FA=iA=hA+33554432|0,HA=g=iA>>>0<33554432?g+1|0:g,A[C+24>>2]=hA-(-67108864&iA),g=w(g0,o,K,H),iA=y,mA=w($A,r,EA,c0=EA>>31),hA=y+iA|0,hA=(g=mA+g|0)>>>0>>0?hA+1|0:hA,u=w(mA=M0(e,19),h0=mA>>31,e,n),iA=y+hA|0,iA=(g=u+g|0)>>>0>>0?iA+1|0:iA,hA=(u=w(d,p,qA,b))+g|0,g=y+iA|0,g=hA>>>0>>0?g+1|0:g,_0=w(i0,B,u=aA<<1,z=u>>31),iA=y+g|0,iA=(hA=_0+hA|0)>>>0<_0>>>0?iA+1|0:iA,g=hA,hA=w(YA,I,t,a),iA=y+iA|0,I0=g=g+hA|0,_0=g>>>0>>0?iA+1|0:iA,g=w(d,p,mA,h0),iA=y,EA=w(g0,o,EA,c0),hA=y+iA|0,hA=(g=EA+g|0)>>>0>>0?hA+1|0:hA,EA=w(aA,_,qA,b),iA=y+hA|0,iA=(g=EA+g|0)>>>0>>0?iA+1|0:iA,hA=(EA=w(i0,B,t,a))+g|0,g=y+iA|0,g=hA>>>0>>0?g+1|0:g,EA=w(YA,I,K,H),iA=y+g|0,MA=hA=EA+hA|0,c0=hA>>>0>>0?iA+1|0:iA,hA=w(g=M0(h,38),g>>31,h,q),EA=y,g=VA,VA=hA,hA=w(g,iA=g>>31,g,iA),iA=y+EA|0,iA=(g=VA+hA|0)>>>0>>0?iA+1|0:iA,mA=w(mA,h0,u,z),hA=y+iA|0,hA=(g=mA+g|0)>>>0>>0?hA+1|0:hA,mA=w(t,a,qA,b),iA=y+hA|0,iA=(g=mA+g|0)>>>0>>0?iA+1|0:iA,hA=(mA=w(i0,B,s,Q))+g|0,g=y+iA|0,g=hA>>>0>>0?g+1|0:g,mA=w($A,r,YA,I),iA=y+g|0,EA=hA=mA+hA|0,VA=iA=hA>>>0>>0?iA+1|0:iA,h0=hA=hA+33554432|0,wA=iA=hA>>>0<33554432?iA+1|0:iA,g=iA>>26,iA=(67108863&iA)<<6|hA>>>26,hA=g+c0|0,c0=mA=iA+MA|0,iA=iA>>>0>mA>>>0?hA+1|0:hA,MA=hA=mA+16777216|0,mA=(33554431&(iA=hA>>>0<16777216?iA+1|0:iA))<<7|hA>>>25,iA=(iA>>25)+_0|0,iA=(hA=mA+I0|0)>>>0>>0?iA+1|0:iA,_0=g=hA+33554432|0,mA=iA=g>>>0<33554432?iA+1|0:iA,A[C+8>>2]=hA-(-67108864&g),g=w(s,Q,h,q),iA=y,hA=w(aA,_,t,a),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,hA=w($A,r,e,n),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,hA=w(g0,o,v,J),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,I0=(hA=w(YA,I,l,M))+g|0,g=y+iA|0,hA=(iA=HA>>26)+(hA=hA>>>0>I0>>>0?g+1|0:g)|0,FA=g=(HA=(67108863&HA)<<6|FA>>>26)+I0|0,iA=g>>>0>>0?hA+1|0:hA,I0=g=g+16777216|0,HA=iA=g>>>0<16777216?iA+1|0:iA,A[C+28>>2]=FA-(-33554432&g),g=w(g0,o,D,V),hA=y,iA=(H=w($A,r,K,H))+g|0,g=y+hA|0,g=iA>>>0>>0?g+1|0:g,iA=(qA=w(e,n,qA,b))+iA|0,hA=y+g|0,g=(i0=w(i0,B,d,p))+iA|0,iA=y+(iA>>>0>>0?hA+1|0:hA)|0,iA=g>>>0>>0?iA+1|0:iA,hA=w(YA,I,aA,_),iA=y+iA|0,iA=(iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA)+(hA=mA>>26)|0,g=(hA=mA=(FA=g)+(g=(67108863&mA)<<6|_0>>>26)|0)>>>0>>0?iA+1|0:iA,i0=iA=hA+16777216|0,mA=g=iA>>>0<16777216?g+1|0:g,A[C+12>>2]=hA-(-33554432&iA),g=w(e,n,s,Q),iA=y,hA=w(aA,_,aA,_),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,hA=w(t,a,d,p),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,hA=(aA=w($A,r,x,$))+g|0,g=y+iA|0,g=hA>>>0>>0?g+1|0:g,iA=(aA=w(g0,o,l,M))+hA|0,hA=y+g|0,hA=iA>>>0>>0?hA+1|0:hA,g=(aA=w(g=YA,I,YA=_A,d=YA>>31))+iA|0,iA=y+hA|0,iA=g>>>0>>0?iA+1|0:iA,hA=g,iA=(g=HA>>25)+iA|0,iA=(hA=hA+(HA=(33554431&HA)<<7|I0>>>25)|0)>>>0>>0?iA+1|0:iA,aA=g=hA+33554432|0,HA=iA=g>>>0<33554432?iA+1|0:iA,A[C+32>>2]=hA-(-67108864&g),iA=mA>>25,hA=(mA=(33554431&mA)<<7|i0>>>25)+(sA-(g=-67108864&fA)|0)|0,g=iA+(nA-((g>>>0>sA>>>0)+uA|0)|0)|0,g=hA>>>0>>0?g+1|0:g,mA=hA,g=((67108863&(iA=(hA=hA+33554432|0)>>>0<33554432?g+1|0:g))<<6|hA>>>26)+(qA=D0-(-33554432&vA)|0)|0,A[C+20>>2]=g,A[C+16>>2]=mA-(-67108864&hA),g=w(t,a,e,n),hA=y,iA=(mA=w(h,q,u,z))+g|0,g=y+hA|0,g=iA>>>0>>0?g+1|0:g,hA=(mA=w(s,Q,v,J))+iA|0,iA=y+g|0,iA=hA>>>0>>0?iA+1|0:iA,g=(mA=w($A,r,l,M))+hA|0,hA=y+iA|0,hA=g>>>0>>0?hA+1|0:hA,mA=(iA=g)+(g=w(g0,o,YA,d))|0,iA=y+hA|0,iA=(g=g>>>0>mA>>>0?iA+1|0:iA)+(iA=HA>>26)|0,g=(hA=(HA=(67108863&HA)<<6|aA>>>26)+mA|0)>>>0>>0?iA+1|0:iA,g=(iA=hA+16777216|0)>>>0<16777216?g+1|0:g,A[C+36>>2]=hA-(-33554432&iA),HA=c0-(-33554432&MA)|0,mA=EA-(hA=-67108864&h0)|0,$A=VA-((hA>>>0>EA>>>0)+wA|0)|0,g=w((33554431&g)<<7|iA>>>25,g>>25,19,0),iA=y+$A|0,g=g>>>0>(hA=g+mA|0)>>>0?iA+1|0:iA,g=((67108863&(g=(iA=hA+33554432|0)>>>0<33554432?g+1|0:g))<<6|iA>>>26)+HA|0,A[C+4>>2]=g,A[C>>2]=hA-(-67108864&iA)}function te(C,g){var e,t,r,o,I,a,_,s,h,n,B=0,Q=0,p=0;W=e=W-416|0,t=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,r=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,o=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,I=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,p=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,a=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,_=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,s=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,C=A[g+92>>2],A[e+408>>2]=A[g+88>>2],A[e+412>>2]=C,C=A[g+84>>2],A[e+400>>2]=A[g+80>>2],A[e+404>>2]=C,C=A[g+76>>2],A[e+376>>2]=A[g+72>>2],A[e+380>>2]=C,B=A[4+(C=Q=g- -64|0)>>2],A[e+368>>2]=A[C>>2],A[e+372>>2]=B,C=A[g+92>>2],A[e+360>>2]=A[g+88>>2],A[e+364>>2]=C,C=A[g+84>>2],A[e+352>>2]=A[g+80>>2],A[e+356>>2]=C,a0(C=e+384|0,e+368|0,e+352|0),B=A[e+396>>2],A[g+88>>2]=A[e+392>>2],A[g+92>>2]=B,B=A[e+388>>2],A[g+80>>2]=A[e+384>>2],A[g+84>>2]=B,B=A[g+60>>2],A[e+344>>2]=A[g+56>>2],A[e+348>>2]=B,B=A[g+52>>2],A[e+336>>2]=A[g+48>>2],A[e+340>>2]=B,B=A[g+76>>2],A[e+328>>2]=A[g+72>>2],A[e+332>>2]=B,B=A[Q+4>>2],A[e+320>>2]=A[Q>>2],A[e+324>>2]=B,a0(C,e+336|0,e+320|0),B=A[e+396>>2],A[g+72>>2]=A[e+392>>2],A[g+76>>2]=B,B=A[e+388>>2],A[Q>>2]=A[e+384>>2],A[Q+4>>2]=B,B=A[g+44>>2],A[e+312>>2]=A[g+40>>2],A[e+316>>2]=B,B=A[g+36>>2],A[e+304>>2]=A[g+32>>2],A[e+308>>2]=B,B=A[g+60>>2],A[e+296>>2]=A[g+56>>2],A[e+300>>2]=B,B=A[g+52>>2],A[e+288>>2]=A[g+48>>2],A[e+292>>2]=B,a0(C,e+304|0,e+288|0),B=A[e+396>>2],A[g+56>>2]=A[e+392>>2],A[g+60>>2]=B,B=A[e+388>>2],A[g+48>>2]=A[e+384>>2],A[g+52>>2]=B,B=A[g+28>>2],A[e+280>>2]=A[g+24>>2],A[e+284>>2]=B,B=A[g+20>>2],A[e+272>>2]=A[g+16>>2],A[e+276>>2]=B,B=A[g+44>>2],A[e+264>>2]=A[g+40>>2],A[e+268>>2]=B,B=A[g+36>>2],A[e+256>>2]=A[g+32>>2],A[e+260>>2]=B,a0(C,e+272|0,e+256|0),B=A[e+396>>2],A[g+40>>2]=A[e+392>>2],A[g+44>>2]=B,B=A[e+388>>2],A[g+32>>2]=A[e+384>>2],A[g+36>>2]=B,B=A[g+12>>2],A[e+248>>2]=A[g+8>>2],A[e+252>>2]=B,B=A[g+4>>2],A[e+240>>2]=A[g>>2],A[e+244>>2]=B,B=A[g+28>>2],A[e+232>>2]=A[g+24>>2],A[e+236>>2]=B,B=A[g+20>>2],A[e+224>>2]=A[g+16>>2],A[e+228>>2]=B,a0(C,e+240|0,e+224|0),B=A[e+396>>2],A[g+24>>2]=A[e+392>>2],A[g+28>>2]=B,B=A[e+388>>2],A[g+16>>2]=A[e+384>>2],A[g+20>>2]=B,B=A[e+412>>2],A[e+216>>2]=A[e+408>>2],A[e+220>>2]=B,B=A[e+404>>2],A[e+208>>2]=A[e+400>>2],A[e+212>>2]=B,B=A[g+12>>2],A[e+200>>2]=A[g+8>>2],A[e+204>>2]=B,B=A[g+4>>2],A[e+192>>2]=A[g>>2],A[e+196>>2]=B,a0(C,e+208|0,e+192|0),B=A[e+384>>2],h=A[e+388>>2],n=A[e+392>>2],A[g+12>>2]=A[e+396>>2]^_,A[g+8>>2]=a^n,A[g+4>>2]=p^h,A[g>>2]=B^s,p=A[g+92>>2],A[e+408>>2]=A[g+88>>2],A[e+412>>2]=p,p=A[g+84>>2],A[e+400>>2]=A[g+80>>2],A[e+404>>2]=p,p=A[g+76>>2],A[e+184>>2]=A[g+72>>2],A[e+188>>2]=p,p=A[Q+4>>2],A[e+176>>2]=A[Q>>2],A[e+180>>2]=p,p=A[g+92>>2],A[e+168>>2]=A[g+88>>2],A[e+172>>2]=p,p=A[g+84>>2],A[e+160>>2]=A[g+80>>2],A[e+164>>2]=p,a0(C,e+176|0,e+160|0),p=A[e+396>>2],A[g+88>>2]=A[e+392>>2],A[g+92>>2]=p,p=A[e+388>>2],A[g+80>>2]=A[e+384>>2],A[g+84>>2]=p,p=A[g+60>>2],A[e+152>>2]=A[g+56>>2],A[e+156>>2]=p,p=A[g+52>>2],A[e+144>>2]=A[g+48>>2],A[e+148>>2]=p,p=A[g+76>>2],A[e+136>>2]=A[g+72>>2],A[e+140>>2]=p,p=A[Q+4>>2],A[e+128>>2]=A[Q>>2],A[e+132>>2]=p,a0(C,e+144|0,e+128|0),p=A[e+396>>2],A[g+72>>2]=A[e+392>>2],A[g+76>>2]=p,p=A[e+388>>2],A[Q>>2]=A[e+384>>2],A[Q+4>>2]=p,Q=A[g+44>>2],A[e+120>>2]=A[g+40>>2],A[e+124>>2]=Q,Q=A[g+36>>2],A[e+112>>2]=A[g+32>>2],A[e+116>>2]=Q,Q=A[g+60>>2],A[e+104>>2]=A[g+56>>2],A[e+108>>2]=Q,Q=A[g+52>>2],A[e+96>>2]=A[g+48>>2],A[e+100>>2]=Q,a0(C,e+112|0,e+96|0),Q=A[e+396>>2],A[g+56>>2]=A[e+392>>2],A[g+60>>2]=Q,Q=A[e+388>>2],A[g+48>>2]=A[e+384>>2],A[g+52>>2]=Q,Q=A[g+28>>2],A[e+88>>2]=A[g+24>>2],A[e+92>>2]=Q,Q=A[g+20>>2],A[e+80>>2]=A[g+16>>2],A[e+84>>2]=Q,Q=A[g+44>>2],A[e+72>>2]=A[g+40>>2],A[e+76>>2]=Q,Q=A[g+36>>2],A[e+64>>2]=A[g+32>>2],A[e+68>>2]=Q,a0(C,e+80|0,e- -64|0),Q=A[e+396>>2],A[g+40>>2]=A[e+392>>2],A[g+44>>2]=Q,Q=A[e+388>>2],A[g+32>>2]=A[e+384>>2],A[g+36>>2]=Q,Q=A[g+12>>2],A[e+56>>2]=A[g+8>>2],A[e+60>>2]=Q,Q=A[g+4>>2],A[e+48>>2]=A[g>>2],A[e+52>>2]=Q,Q=A[g+28>>2],A[e+40>>2]=A[g+24>>2],A[e+44>>2]=Q,Q=A[g+20>>2],A[e+32>>2]=A[g+16>>2],A[e+36>>2]=Q,a0(C,e+48|0,e+32|0),Q=A[e+396>>2],A[g+24>>2]=A[e+392>>2],A[g+28>>2]=Q,Q=A[e+388>>2],A[g+16>>2]=A[e+384>>2],A[g+20>>2]=Q,Q=A[e+412>>2],A[e+24>>2]=A[e+408>>2],A[e+28>>2]=Q,Q=A[e+404>>2],A[e+16>>2]=A[e+400>>2],A[e+20>>2]=Q,Q=A[g+12>>2],A[e+8>>2]=A[g+8>>2],A[e+12>>2]=Q,Q=A[g+4>>2],A[e>>2]=A[g>>2],A[e+4>>2]=Q,a0(C,e+16|0,e),C=A[e+384>>2],Q=A[e+388>>2],p=A[e+392>>2],A[g+12>>2]=A[e+396>>2]^I,A[g+8>>2]=p^o,A[g+4>>2]=Q^r,A[g>>2]=C^t,W=e+416|0}function re(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D=0,b=0,M=0;for(W=t=W-288|0,Q=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,p=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,l=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,s=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,h=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,n=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,v=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=e+112|0,C=33620224^(B=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),A[g>>2]=C,A[(a=e+96|0)>>2]=1427652059^B,A[(_=e+80|0)>>2]=C,b=B^v,A[(C=e- -64|0)>>2]=b,A[e+56>>2]=1110511904,A[e+60>>2]=-584534669,A[(r=e+48|0)>>2]=1427652059,A[r+4>>2]=-248528275,A[e+40>>2]=1496785429,A[e+44>>2]=1652156816,A[(o=e+32|0)>>2]=33620224,A[o+4>>2]=218629379,A[e+24>>2]=1110511904,A[e+28>>2]=-584534669,A[(I=e+16|0)>>2]=1427652059,A[I+4>>2]=-248528275,A[e>>2]=b,b=1652156816^n,A[e+124>>2]=b,M=1496785429^h,A[e+120>>2]=M,D=218629379^s,A[e+116>>2]=D,A[e+108>>2]=-584534669^n,A[e+104>>2]=1110511904^h,A[e+100>>2]=-248528275^s,A[e+92>>2]=b,A[e+88>>2]=M,A[e+84>>2]=D,b=n^l,A[e+76>>2]=b,M=h^p,A[e+72>>2]=M,D=s^Q,A[e+68>>2]=D,A[e+12>>2]=b,A[e+8>>2]=M,A[e+4>>2]=D,M=0;b=A[g+12>>2],A[t+280>>2]=A[g+8>>2],A[t+284>>2]=b,b=A[g+4>>2],A[t+272>>2]=A[g>>2],A[t+276>>2]=b,b=A[a+12>>2],A[t+248>>2]=A[a+8>>2],A[t+252>>2]=b,b=A[a+4>>2],A[t+240>>2]=A[a>>2],A[t+244>>2]=b,b=A[g+12>>2],A[t+232>>2]=A[g+8>>2],A[t+236>>2]=b,b=A[g+4>>2],A[t+224>>2]=A[g>>2],A[t+228>>2]=b,a0(b=t+256|0,t+240|0,t+224|0),D=A[t+268>>2],A[g+8>>2]=A[t+264>>2],A[g+12>>2]=D,D=A[t+260>>2],A[g>>2]=A[t+256>>2],A[g+4>>2]=D,D=A[_+12>>2],A[t+216>>2]=A[_+8>>2],A[t+220>>2]=D,D=A[_+4>>2],A[t+208>>2]=A[_>>2],A[t+212>>2]=D,D=A[a+12>>2],A[t+200>>2]=A[a+8>>2],A[t+204>>2]=D,D=A[a+4>>2],A[t+192>>2]=A[a>>2],A[t+196>>2]=D,a0(b,t+208|0,t+192|0),D=A[t+268>>2],A[a+8>>2]=A[t+264>>2],A[a+12>>2]=D,D=A[t+260>>2],A[a>>2]=A[t+256>>2],A[a+4>>2]=D,D=A[C+12>>2],A[t+184>>2]=A[C+8>>2],A[t+188>>2]=D,D=A[C+4>>2],A[t+176>>2]=A[C>>2],A[t+180>>2]=D,D=A[_+12>>2],A[t+168>>2]=A[_+8>>2],A[t+172>>2]=D,D=A[_+4>>2],A[t+160>>2]=A[_>>2],A[t+164>>2]=D,a0(b,t+176|0,t+160|0),D=A[t+268>>2],A[_+8>>2]=A[t+264>>2],A[_+12>>2]=D,D=A[t+260>>2],A[_>>2]=A[t+256>>2],A[_+4>>2]=D,D=A[r+12>>2],A[t+152>>2]=A[r+8>>2],A[t+156>>2]=D,D=A[r+4>>2],A[t+144>>2]=A[r>>2],A[t+148>>2]=D,D=A[C+12>>2],A[t+136>>2]=A[C+8>>2],A[t+140>>2]=D,D=A[C+4>>2],A[t+128>>2]=A[C>>2],A[t+132>>2]=D,a0(b,t+144|0,t+128|0),D=A[t+268>>2],A[C+8>>2]=A[t+264>>2],A[C+12>>2]=D,D=A[t+260>>2],A[C>>2]=A[t+256>>2],A[C+4>>2]=D,D=A[o+12>>2],A[t+120>>2]=A[o+8>>2],A[t+124>>2]=D,D=A[o+4>>2],A[t+112>>2]=A[o>>2],A[t+116>>2]=D,D=A[r+12>>2],A[t+104>>2]=A[r+8>>2],A[t+108>>2]=D,D=A[r+4>>2],A[t+96>>2]=A[r>>2],A[t+100>>2]=D,a0(b,t+112|0,t+96|0),D=A[t+268>>2],A[r+8>>2]=A[t+264>>2],A[r+12>>2]=D,D=A[t+260>>2],A[r>>2]=A[t+256>>2],A[r+4>>2]=D,D=A[I+12>>2],A[t+88>>2]=A[I+8>>2],A[t+92>>2]=D,D=A[I+4>>2],A[t+80>>2]=A[I>>2],A[t+84>>2]=D,D=A[o+12>>2],A[t+72>>2]=A[o+8>>2],A[t+76>>2]=D,D=A[o+4>>2],A[t+64>>2]=A[o>>2],A[t+68>>2]=D,a0(b,t+80|0,t- -64|0),D=A[t+268>>2],A[o+8>>2]=A[t+264>>2],A[o+12>>2]=D,D=A[t+260>>2],A[o>>2]=A[t+256>>2],A[o+4>>2]=D,D=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=D,D=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=D,D=A[I+12>>2],A[t+40>>2]=A[I+8>>2],A[t+44>>2]=D,D=A[I+4>>2],A[t+32>>2]=A[I>>2],A[t+36>>2]=D,a0(b,t+48|0,t+32|0),D=A[t+268>>2],A[I+8>>2]=A[t+264>>2],A[I+12>>2]=D,D=A[t+260>>2],A[I>>2]=A[t+256>>2],A[I+4>>2]=D,D=A[t+284>>2],A[t+24>>2]=A[t+280>>2],A[t+28>>2]=D,D=A[t+276>>2],A[t+16>>2]=A[t+272>>2],A[t+20>>2]=D,D=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=D,D=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=D,a0(b,t+16|0,t),b=A[t+268>>2],A[e+8>>2]=A[t+264>>2],A[e+12>>2]=b,b=A[t+260>>2],A[e>>2]=A[t+256>>2],A[e+4>>2]=b,A[e+12>>2]=(i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24)^l,A[e+8>>2]=(i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24)^p,A[e+4>>2]=(i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24)^Q,A[e>>2]=(i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24)^v,A[C>>2]=(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24)^B,A[e+68>>2]=(i[e+68|0]|i[e+69|0]<<8|i[e+70|0]<<16|i[e+71|0]<<24)^s,A[e+72>>2]=(i[e+72|0]|i[e+73|0]<<8|i[e+74|0]<<16|i[e+75|0]<<24)^h,A[e+76>>2]=(i[e+76|0]|i[e+77|0]<<8|i[e+78|0]<<16|i[e+79|0]<<24)^n,(0|(M=M+1|0))!=10;);W=t+288|0}function Jg(C,g){var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0;if(W=e=W-48|0,!((t=n0(C))||(t=-26,g-3>>>0<4294967294))){o=A[C+44>>2],t=A[C+48>>2],A[e+4>>2]=0,r=A[C+40>>2],A[e+32>>2]=t,A[e+16>>2]=-1,A[e+12>>2]=r,t=((s=(r=t<<3)>>>0>>0?o:r)>>>0)/((o=t<<2)>>>0)|0,A[e+24>>2]=t,A[e+28>>2]=t<<2,A[e+20>>2]=M0(t,o),t=A[C+52>>2],A[e+40>>2]=g,A[e+36>>2]=t,n=g=W,W=t=g-1152&-64,g=-25;A:{if(!(!(o=e+4|0)|!C)&&(r=r1(A[o+20>>2]<<3),A[o+4>>2]=r,g=-22,r)){g:{if((g=A[o+16>>2])&&(((r=g<<10)>>>0)/(g>>>0)|0)==1024&&(g=r1(12),A[o>>2]=g,g)){if(A[g>>2]=0,A[g+4>>2]=0,g=m(t+128|0,r),A[9404]=g,g)A[t+128>>2]=0;else if(g=A[t+128>>2])break g;M2(A[o>>2]),A[o>>2]=0}ar(o,A[C+56>>2]),W=n,g=-22;break A}if(A[A[o>>2]>>2]=g,A[A[o>>2]+4>>2]=g,A[A[o>>2]+8>>2]=r,B=A[o+36>>2],sg(g=t+128|0,0,0,64),A[t+124>>2]=A[C+48>>2],q2(g,r=t+124|0,4,0),A[t+124>>2]=A[C+4>>2],q2(g,r,4,0),A[t+124>>2]=A[C+44>>2],q2(g,r,4,0),A[t+124>>2]=A[C+40>>2],q2(g,r,4,0),A[t+124>>2]=19,q2(g,r,4,0),A[t+124>>2]=B,q2(g,r,4,0),A[t+124>>2]=A[C+12>>2],q2(g,r,4,0),(r=A[C+8>>2])&&(q2(g,r,A[C+12>>2],0),1&c[C+56|0]&&(y0(A[C+8>>2],A[C+12>>2]),A[C+12>>2]=0)),A[t+124>>2]=A[C+20>>2],q2(g=t+128|0,t+124|0,4,0),(r=A[C+16>>2])&&q2(g,r,A[C+20>>2],0),A[t+124>>2]=A[C+28>>2],q2(g=t+128|0,t+124|0,4,0),(r=A[C+24>>2])&&(q2(g,r,A[C+28>>2],0),2&i[C+56|0]&&(y0(A[C+24>>2],A[C+28>>2]),A[C+28>>2]=0)),A[t+124>>2]=A[C+36>>2],q2(g=t+128|0,t+124|0,4,0),(r=A[C+32>>2])&&q2(g,r,A[C+36>>2],0),lC(t+128|0,t+48|0,64),y0(t+112|0,8),A[o+28>>2])for(r=0;;){for(A[t+112>>2]=0,A[t+116>>2]=r,sC(t+128|0,1024,t+48|0,72),B=A[A[o>>2]+4>>2]+(M0(A[o+24>>2],r)<<10)|0,g=0;I=(_=g<<3)+B|0,a=A[4+(h=(s=t+128|0)+_|0)>>2],A[I>>2]=A[h>>2],A[I+4>>2]=a,h=(I=8|_)+B|0,a=A[4+(I=I+s|0)>>2],A[h>>2]=A[I>>2],A[h+4>>2]=a,h=(I=16|_)+B|0,a=A[4+(I=I+s|0)>>2],A[h>>2]=A[I>>2],A[h+4>>2]=a,I=(_|=24)+B|0,h=A[4+(_=_+s|0)>>2],A[I>>2]=A[_>>2],A[I+4>>2]=h,(0|(g=g+4|0))!=128;);for(A[t+112>>2]=1,sC(s,1024,t+48|0,72),B=1024+(A[A[o>>2]+4>>2]+(M0(A[o+24>>2],r)<<10)|0)|0,g=0;I=(_=g<<3)+B|0,a=A[4+(h=(s=t+128|0)+_|0)>>2],A[I>>2]=A[h>>2],A[I+4>>2]=a,h=(I=8|_)+B|0,a=A[4+(I=I+s|0)>>2],A[h>>2]=A[I>>2],A[h+4>>2]=a,h=(I=16|_)+B|0,a=A[4+(I=I+s|0)>>2],A[h>>2]=A[I>>2],A[h+4>>2]=a,I=(_|=24)+B|0,s=A[4+(_=_+s|0)>>2],A[I>>2]=A[_>>2],A[I+4>>2]=s,(0|(g=g+4|0))!=128;);if(!((r=r+1|0)>>>0>2]))break}y0(t+128|0,1024),y0(t+48|0,72),g=0}W=n}if(t=g,!g){if(A[e+12>>2])for(;;){if(W=g=W-80|0,!(!(o=e+4|0)|!A[o+28>>2])){for(c[g+72|0]=0,A[g+64>>2]=p,t=0;A[g+76>>2]=0,r=A[g+76>>2],A[g+56>>2]=A[g+72>>2],A[g+60>>2]=r,A[g+68>>2]=t,r=A[g+68>>2],A[g+48>>2]=A[g+64>>2],A[g+52>>2]=r,Ug(o,g+48|0),(t=t+1|0)>>>0<(r=A[o+28>>2])>>>0;);if(c[g+72|0]=1,r){for(t=0;A[g+76>>2]=0,r=A[g+76>>2],A[g+40>>2]=A[g+72>>2],A[g+44>>2]=r,A[g+68>>2]=t,r=A[g+68>>2],A[g+32>>2]=A[g+64>>2],A[g+36>>2]=r,Ug(o,g+32|0),(t=t+1|0)>>>0<(r=A[o+28>>2])>>>0;);if(c[g+72|0]=2,r){for(t=0;A[g+76>>2]=0,r=A[g+76>>2],A[g+24>>2]=A[g+72>>2],A[g+28>>2]=r,A[g+68>>2]=t,r=A[g+68>>2],A[g+16>>2]=A[g+64>>2],A[g+20>>2]=r,Ug(o,g+16|0),(t=t+1|0)>>>0<(r=A[o+28>>2])>>>0;);if(c[g+72|0]=3,r)for(t=0;A[g+76>>2]=0,r=A[g+76>>2],A[g+8>>2]=A[g+72>>2],A[g+12>>2]=r,A[g+68>>2]=t,r=A[g+68>>2],A[g>>2]=A[g+64>>2],A[g+4>>2]=r,Ug(o,g),(t=t+1|0)>>>0>2];);}}}if(W=g+80|0,!((p=p+1|0)>>>0>2]))break}if(W=g=W-2048|0,!(!C|!(t=e+4|0))){if(p=A[t+24>>2],P0(g+1024|0,I=(A[A[t>>2]+4>>2]+(p<<10)|0)-1024|0,1024),(h=A[t+28>>2])>>>0>=2)for(B=1;;){for(o=I+(M0(B,p)<<10)|0,_=0;a=A[(n=(r=_<<3)+(s=g+1024|0)|0)>>2],l=A[(Q=r+o|0)>>2],Q=A[n+4>>2]^A[Q+4>>2],A[n>>2]=a^l,A[n+4>>2]=Q,Q=A[(n=(a=8|r)+s|0)>>2],l=A[(a=o+a|0)>>2],a=A[n+4>>2]^A[a+4>>2],A[n>>2]=Q^l,A[n+4>>2]=a,Q=A[(n=(a=16|r)+s|0)>>2],l=A[(a=o+a|0)>>2],a=A[n+4>>2]^A[a+4>>2],A[n>>2]=Q^l,A[n+4>>2]=a,n=A[(r=(n=s)+(s=24|r)|0)>>2],a=A[(s=o+s|0)>>2],s=A[r+4>>2]^A[s+4>>2],A[r>>2]=a^n,A[r+4>>2]=s,(0|(_=_+4|0))!=128;);if((0|h)==(0|(B=B+1|0)))break}o=P0(g,g+1024|0,1024),sC(A[C>>2],A[C+4>>2],o,1024),y0(o+1024|0,1024),y0(o,1024),ar(t,A[C+56>>2])}W=g+2048|0,t=0}}return W=e+48|0,t}function Rg(C,g,e,t,r){var o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0;for(o=W+-64|0,I=A[C+60>>2],a=A[C+56>>2],EA=A[C+52>>2],aA=A[C+48>>2],_=A[C+44>>2],s=A[C+40>>2],h=A[C+36>>2],n=A[C+32>>2],B=A[C+28>>2],Q=A[C+24>>2],p=A[C+20>>2],l=A[C+16>>2],v=A[C+12>>2],D=A[C+8>>2],b=A[C+4>>2],M=A[C>>2];;){if(!r&t>>>0>63|r)x=e;else{if(A[o+56>>2]=0,A[o+60>>2]=0,A[o+48>>2]=0,A[o+52>>2]=0,A[o+40>>2]=0,A[o+44>>2]=0,A[o+32>>2]=0,A[o+36>>2]=0,A[o+24>>2]=0,A[o+28>>2]=0,A[o+16>>2]=0,A[o+20>>2]=0,A[o+8>>2]=0,A[o+12>>2]=0,A[o>>2]=0,A[o+4>>2]=0,V=0,t|r)for(;c[V+o|0]=i[g+V|0],!r&(V=V+1|0)>>>0>>0|r;);g=x=o,i0=e}for(YA=20,q=M,nA=b,fA=D,wA=v,V=l,e=p,K=Q,J=B,z=n,hA=h,uA=s,$=I,mA=a,iA=EA,vA=aA,_A=_;sA=V,q=pA((V=q+V|0)^vA,16),sA=vA=pA(sA^(z=q+z|0),12),vA=pA((HA=V+vA|0)^q,8),V=pA(sA^(z=vA+z|0),7),$=pA((q=J+wA|0)^$,16),J=pA((_A=$+_A|0)^J,12),wA=pA((fA=K+fA|0)^mA,16),K=pA((uA=wA+uA|0)^K,12),mA=(qA=q+J|0)+V|0,$A=pA((fA=K+fA|0)^wA,8),q=pA(mA^$A,16),wA=pA((nA=e+nA|0)^iA,16),e=pA((hA=wA+hA|0)^e,12),sA=V,iA=pA((nA=e+nA|0)^wA,8),sA=pA(sA^(V=(g0=iA+hA|0)+q|0),12),mA=pA(q^(wA=sA+mA|0),8),V=pA((hA=mA+V|0)^sA,7),sA=z,z=fA,q=pA($^qA,8),fA=pA(($=q+_A|0)^J,7),iA=pA((z=z+fA|0)^iA,16),_A=pA((J=sA+iA|0)^fA,12),iA=pA(iA^(fA=_A+z|0),8),J=pA((z=J+iA|0)^_A,7),_A=$,$=nA,nA=pA((uA=uA+$A|0)^K,7),K=_A+(vA=pA(($=$+nA|0)^vA,16))|0,_A=$,$=pA(K^nA,12),vA=pA(vA^(nA=_A+$|0),8),K=pA((_A=K+vA|0)^$,7),sA=uA,$=q,q=pA(e^g0,7),$=pA($^(uA=q+HA|0),16),HA=pA((e=sA+$|0)^q,12),$=pA($^(q=HA+uA|0),8),e=pA((uA=e+$|0)^HA,7),YA=YA-2|0;);if(YA=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,HA=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,qA=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,$A=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g0=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,sA=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,u=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,d=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,H=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,FA=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,VA=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,c0=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,_0=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,I0=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,h0=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,q=q+M^(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),c[0|x]=q,c[x+1|0]=q>>>8,c[x+2|0]=q>>>16,c[x+3|0]=q>>>24,q=$+I^h0,c[x+60|0]=q,c[x+61|0]=q>>>8,c[x+62|0]=q>>>16,c[x+63|0]=q>>>24,q=mA+a^I0,c[x+56|0]=q,c[x+57|0]=q>>>8,c[x+58|0]=q>>>16,c[x+59|0]=q>>>24,q=iA+EA^_0,c[x+52|0]=q,c[x+53|0]=q>>>8,c[x+54|0]=q>>>16,c[x+55|0]=q>>>24,q=vA+aA^c0,c[x+48|0]=q,c[x+49|0]=q>>>8,c[x+50|0]=q>>>16,c[x+51|0]=q>>>24,q=_A+_^VA,c[x+44|0]=q,c[x+45|0]=q>>>8,c[x+46|0]=q>>>16,c[x+47|0]=q>>>24,q=uA+s^FA,c[x+40|0]=q,c[x+41|0]=q>>>8,c[x+42|0]=q>>>16,c[x+43|0]=q>>>24,q=hA+h^H,c[x+36|0]=q,c[x+37|0]=q>>>8,c[x+38|0]=q>>>16,c[x+39|0]=q>>>24,q=z+n^d,c[x+32|0]=q,c[x+33|0]=q>>>8,c[x+34|0]=q>>>16,c[x+35|0]=q>>>24,J=J+B^u,c[x+28|0]=J,c[x+29|0]=J>>>8,c[x+30|0]=J>>>16,c[x+31|0]=J>>>24,K=sA^K+Q,c[x+24|0]=K,c[x+25|0]=K>>>8,c[x+26|0]=K>>>16,c[x+27|0]=K>>>24,e=g0^e+p,c[x+20|0]=e,c[x+21|0]=e>>>8,c[x+22|0]=e>>>16,c[x+23|0]=e>>>24,e=$A^V+l,c[x+16|0]=e,c[x+17|0]=e>>>8,c[x+18|0]=e>>>16,c[x+19|0]=e>>>24,e=qA^wA+v,c[x+12|0]=e,c[x+13|0]=e>>>8,c[x+14|0]=e>>>16,c[x+15|0]=e>>>24,e=HA^fA+D,c[x+8|0]=e,c[x+9|0]=e>>>8,c[x+10|0]=e>>>16,c[x+11|0]=e>>>24,e=YA^nA+b,c[x+4|0]=e,c[x+5|0]=e>>>8,c[x+6|0]=e>>>16,c[x+7|0]=e>>>24,EA=!(aA=aA+1|0)+EA|0,!r&t>>>0<=64){if(!(!(t|r)|!r&t>>>0>63|!!(0|r)))for(V=0;c[V+i0|0]=i[x+V|0],t>>>0>(V=V+1|0)>>>0;);A[C+52>>2]=EA,A[C+48>>2]=aA;break}g=g- -64|0,e=x- -64|0,r=r-1|0,r=(t=t+-64|0)>>>0<4294967232?r+1|0:r}}function e1(C,g){g|=0;var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0;return W=e=W-704|0,t=80+((r=A[72+(C|=0)>>2]>>>3&127)+C|0)|0,r>>>0>=112?(P0(t,35056,128-r|0),Yg(C,r=C+80|0,e,e+640|0),$0(r,0,112)):P0(t,35056,112-r|0),_=(o=A[C+64>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+68>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[C+192|0]=t,c[C+193|0]=t>>>8,c[C+194|0]=t>>>16,c[C+195|0]=t>>>24,t=r|I|_,r=0,r|=t,c[C+196|0]=r,c[C+197|0]=r>>>8,c[C+198|0]=r>>>16,c[C+199|0]=r>>>24,_=(o=A[C+72>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+76>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[C+200|0]=t,c[C+201|0]=t>>>8,c[C+202|0]=t>>>16,c[C+203|0]=t>>>24,t=r|I|_,r=0,r|=t,c[C+204|0]=r,c[C+205|0]=r>>>8,c[C+206|0]=r>>>16,c[C+207|0]=r>>>24,Yg(C,C+80|0,e,e+640|0),_=(o=A[C>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+4>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[0|g]=t,c[g+1|0]=t>>>8,c[g+2|0]=t>>>16,c[g+3|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+4|0]=r,c[g+5|0]=r>>>8,c[g+6|0]=r>>>16,c[g+7|0]=r>>>24,_=(o=A[C+8>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+12>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+8|0]=t,c[g+9|0]=t>>>8,c[g+10|0]=t>>>16,c[g+11|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+12|0]=r,c[g+13|0]=r>>>8,c[g+14|0]=r>>>16,c[g+15|0]=r>>>24,_=(o=A[C+16>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+20>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+16|0]=t,c[g+17|0]=t>>>8,c[g+18|0]=t>>>16,c[g+19|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+20|0]=r,c[g+21|0]=r>>>8,c[g+22|0]=r>>>16,c[g+23|0]=r>>>24,_=(o=A[C+24>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+28>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+24|0]=t,c[g+25|0]=t>>>8,c[g+26|0]=t>>>16,c[g+27|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+28|0]=r,c[g+29|0]=r>>>8,c[g+30|0]=r>>>16,c[g+31|0]=r>>>24,_=(o=A[C+32>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+36>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+32|0]=t,c[g+33|0]=t>>>8,c[g+34|0]=t>>>16,c[g+35|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+36|0]=r,c[g+37|0]=r>>>8,c[g+38|0]=r>>>16,c[g+39|0]=r>>>24,_=(o=A[C+40>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+44>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+40|0]=t,c[g+41|0]=t>>>8,c[g+42|0]=t>>>16,c[g+43|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+44|0]=r,c[g+45|0]=r>>>8,c[g+46|0]=r>>>16,c[g+47|0]=r>>>24,_=(o=A[C+48>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+52>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+48|0]=t,c[g+49|0]=t>>>8,c[g+50|0]=t>>>16,c[g+51|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+52|0]=r,c[g+53|0]=r>>>8,c[g+54|0]=r>>>16,c[g+55|0]=r>>>24,_=(o=A[C+56>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,t=g,s=I<<24,I=(a=-16777216&o)>>>24|0,g=s|a<<8|-16777216&((255&(g=A[C+60>>2]))<<24|o>>>8)|16711680&((16777215&g)<<8|o>>>24)|g>>>8&65280|g>>>24,c[t+56|0]=g,c[t+57|0]=g>>>8,c[t+58|0]=g>>>16,c[t+59|0]=g>>>24,g=r|I|_,g|=r=0,c[t+60|0]=g,c[t+61|0]=g>>>8,c[t+62|0]=g>>>16,c[t+63|0]=g>>>24,y0(e,704),y0(C,208),W=e+704|0,0}function ae(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$=0;W=t=W-224|0,_=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,s=i[0|($=e- -64|0)]|i[$+1|0]<<8|i[$+2|0]<<16|i[$+3|0]<<24,h=i[e+80|0]|i[e+81|0]<<8|i[e+82|0]<<16|i[e+83|0]<<24,n=i[e+32|0]|i[e+33|0]<<8|i[e+34|0]<<16|i[e+35|0]<<24,B=i[e+48|0]|i[e+49|0]<<8|i[e+50|0]<<16|i[e+51|0]<<24,r=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,Q=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,p=i[e+68|0]|i[e+69|0]<<8|i[e+70|0]<<16|i[e+71|0]<<24,l=i[e+84|0]|i[e+85|0]<<8|i[e+86|0]<<16|i[e+87|0]<<24,v=i[e+36|0]|i[e+37|0]<<8|i[e+38|0]<<16|i[e+39|0]<<24,D=i[e+52|0]|i[e+53|0]<<8|i[e+54|0]<<16|i[e+55|0]<<24,o=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,b=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,M=i[e+72|0]|i[e+73|0]<<8|i[e+74|0]<<16|i[e+75|0]<<24,x=i[e+88|0]|i[e+89|0]<<8|i[e+90|0]<<16|i[e+91|0]<<24,q=i[e+40|0]|i[e+41|0]<<8|i[e+42|0]<<16|i[e+43|0]<<24,V=i[e+56|0]|i[e+57|0]<<8|i[e+58|0]<<16|i[e+59|0]<<24,I=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^(i[e+44|0]|i[e+45|0]<<8|i[e+46|0]<<16|i[e+47|0]<<24)&(i[e+60|0]|i[e+61|0]<<8|i[e+62|0]<<16|i[e+63|0]<<24)^(i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24)^(i[e+92|0]|i[e+93|0]<<8|i[e+94|0]<<16|i[e+95|0]<<24)^(i[e+76|0]|i[e+77|0]<<8|i[e+78|0]<<16|i[e+79|0]<<24),c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=q&V^M^x^b^o,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=v&D^p^l^Q^r,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=n&B^_^s^h^I,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,C=A[e+92>>2],A[t+216>>2]=A[e+88>>2],A[t+220>>2]=C,C=A[e+84>>2],A[t+208>>2]=A[e+80>>2],A[t+212>>2]=C,C=A[e+76>>2],A[t+184>>2]=A[e+72>>2],A[t+188>>2]=C,C=A[$+4>>2],A[t+176>>2]=A[$>>2],A[t+180>>2]=C,C=A[e+92>>2],A[t+168>>2]=A[e+88>>2],A[t+172>>2]=C,C=A[e+84>>2],A[t+160>>2]=A[e+80>>2],A[t+164>>2]=C,a0(C=t+192|0,t+176|0,t+160|0),g=A[t+204>>2],A[e+88>>2]=A[t+200>>2],A[e+92>>2]=g,g=A[t+196>>2],A[e+80>>2]=A[t+192>>2],A[e+84>>2]=g,g=A[e+60>>2],A[t+152>>2]=A[e+56>>2],A[t+156>>2]=g,g=A[e+52>>2],A[t+144>>2]=A[e+48>>2],A[t+148>>2]=g,g=A[e+76>>2],A[t+136>>2]=A[e+72>>2],A[t+140>>2]=g,g=A[$+4>>2],A[t+128>>2]=A[$>>2],A[t+132>>2]=g,a0(C,t+144|0,t+128|0),g=A[t+204>>2],A[e+72>>2]=A[t+200>>2],A[e+76>>2]=g,g=A[t+196>>2],A[$>>2]=A[t+192>>2],A[$+4>>2]=g,g=A[e+44>>2],A[t+120>>2]=A[e+40>>2],A[t+124>>2]=g,g=A[e+36>>2],A[t+112>>2]=A[e+32>>2],A[t+116>>2]=g,g=A[e+60>>2],A[t+104>>2]=A[e+56>>2],A[t+108>>2]=g,g=A[e+52>>2],A[t+96>>2]=A[e+48>>2],A[t+100>>2]=g,a0(C,t+112|0,t+96|0),g=A[t+204>>2],A[e+56>>2]=A[t+200>>2],A[e+60>>2]=g,g=A[t+196>>2],A[e+48>>2]=A[t+192>>2],A[e+52>>2]=g,g=A[e+28>>2],A[t+88>>2]=A[e+24>>2],A[t+92>>2]=g,g=A[e+20>>2],A[t+80>>2]=A[e+16>>2],A[t+84>>2]=g,g=A[e+44>>2],A[t+72>>2]=A[e+40>>2],A[t+76>>2]=g,g=A[e+36>>2],A[t+64>>2]=A[e+32>>2],A[t+68>>2]=g,a0(C,t+80|0,t- -64|0),g=A[t+204>>2],A[e+40>>2]=A[t+200>>2],A[e+44>>2]=g,g=A[t+196>>2],A[e+32>>2]=A[t+192>>2],A[e+36>>2]=g,g=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=g,g=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=g,g=A[e+28>>2],A[t+40>>2]=A[e+24>>2],A[t+44>>2]=g,g=A[e+20>>2],A[t+32>>2]=A[e+16>>2],A[t+36>>2]=g,a0(C,t+48|0,t+32|0),g=A[t+204>>2],A[e+24>>2]=A[t+200>>2],A[e+28>>2]=g,g=A[t+196>>2],A[e+16>>2]=A[t+192>>2],A[e+20>>2]=g,g=A[t+220>>2],A[t+24>>2]=A[t+216>>2],A[t+28>>2]=g,g=A[t+212>>2],A[t+16>>2]=A[t+208>>2],A[t+20>>2]=g,g=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=g,g=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=g,a0(C,t+16|0,t),C=A[t+192>>2],g=A[t+196>>2],$=A[t+200>>2],A[e+12>>2]=a^A[t+204>>2],A[e+8>>2]=$^o,A[e+4>>2]=g^r,A[e>>2]=C^I,W=t+224|0}function ie(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b=0,M=0,x=0,q=0,V=0;W=t=W-224|0,x=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,M=i[0|(b=e- -64|0)]|i[b+1|0]<<8|i[b+2|0]<<16|i[b+3|0]<<24,r=i[e+80|0]|i[e+81|0]<<8|i[e+82|0]<<16|i[e+83|0]<<24,o=i[e+32|0]|i[e+33|0]<<8|i[e+34|0]<<16|i[e+35|0]<<24,I=i[e+48|0]|i[e+49|0]<<8|i[e+50|0]<<16|i[e+51|0]<<24,q=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,a=i[e+68|0]|i[e+69|0]<<8|i[e+70|0]<<16|i[e+71|0]<<24,_=i[e+84|0]|i[e+85|0]<<8|i[e+86|0]<<16|i[e+87|0]<<24,s=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,h=i[e+36|0]|i[e+37|0]<<8|i[e+38|0]<<16|i[e+39|0]<<24,n=i[e+52|0]|i[e+53|0]<<8|i[e+54|0]<<16|i[e+55|0]<<24,V=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,B=i[e+72|0]|i[e+73|0]<<8|i[e+74|0]<<16|i[e+75|0]<<24,Q=i[e+88|0]|i[e+89|0]<<8|i[e+90|0]<<16|i[e+91|0]<<24,p=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,l=i[e+40|0]|i[e+41|0]<<8|i[e+42|0]<<16|i[e+43|0]<<24,v=i[e+56|0]|i[e+57|0]<<8|i[e+58|0]<<16|i[e+59|0]<<24,D=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(i[e+44|0]|i[e+45|0]<<8|i[e+46|0]<<16|i[e+47|0]<<24)&(i[e+60|0]|i[e+61|0]<<8|i[e+62|0]<<16|i[e+63|0]<<24)^(i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24)^(i[e+76|0]|i[e+77|0]<<8|i[e+78|0]<<16|i[e+79|0]<<24)^(i[e+92|0]|i[e+93|0]<<8|i[e+94|0]<<16|i[e+95|0]<<24)^(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24),c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,V=l&v^V^Q^p^B,c[C+8|0]=V,c[C+9|0]=V>>>8,c[C+10|0]=V>>>16,c[C+11|0]=V>>>24,q=h&n^q^_^s^a,c[C+4|0]=q,c[C+5|0]=q>>>8,c[C+6|0]=q>>>16,c[C+7|0]=q>>>24,x=o&I^x^M^r^D,c[0|C]=x,c[C+1|0]=x>>>8,c[C+2|0]=x>>>16,c[C+3|0]=x>>>24,C=A[e+92>>2],A[t+216>>2]=A[e+88>>2],A[t+220>>2]=C,C=A[e+84>>2],A[t+208>>2]=A[e+80>>2],A[t+212>>2]=C,C=A[e+76>>2],A[t+184>>2]=A[e+72>>2],A[t+188>>2]=C,C=A[b+4>>2],A[t+176>>2]=A[b>>2],A[t+180>>2]=C,C=A[e+92>>2],A[t+168>>2]=A[e+88>>2],A[t+172>>2]=C,C=A[e+84>>2],A[t+160>>2]=A[e+80>>2],A[t+164>>2]=C,a0(C=t+192|0,t+176|0,t+160|0),M=A[t+204>>2],A[e+88>>2]=A[t+200>>2],A[e+92>>2]=M,M=A[t+196>>2],A[e+80>>2]=A[t+192>>2],A[e+84>>2]=M,M=A[e+60>>2],A[t+152>>2]=A[e+56>>2],A[t+156>>2]=M,M=A[e+52>>2],A[t+144>>2]=A[e+48>>2],A[t+148>>2]=M,M=A[e+76>>2],A[t+136>>2]=A[e+72>>2],A[t+140>>2]=M,M=A[b+4>>2],A[t+128>>2]=A[b>>2],A[t+132>>2]=M,a0(C,t+144|0,t+128|0),M=A[t+204>>2],A[e+72>>2]=A[t+200>>2],A[e+76>>2]=M,M=A[t+196>>2],A[b>>2]=A[t+192>>2],A[b+4>>2]=M,b=A[e+44>>2],A[t+120>>2]=A[e+40>>2],A[t+124>>2]=b,b=A[e+36>>2],A[t+112>>2]=A[e+32>>2],A[t+116>>2]=b,b=A[e+60>>2],A[t+104>>2]=A[e+56>>2],A[t+108>>2]=b,b=A[e+52>>2],A[t+96>>2]=A[e+48>>2],A[t+100>>2]=b,a0(C,t+112|0,t+96|0),b=A[t+204>>2],A[e+56>>2]=A[t+200>>2],A[e+60>>2]=b,b=A[t+196>>2],A[e+48>>2]=A[t+192>>2],A[e+52>>2]=b,b=A[e+28>>2],A[t+88>>2]=A[e+24>>2],A[t+92>>2]=b,b=A[e+20>>2],A[t+80>>2]=A[e+16>>2],A[t+84>>2]=b,b=A[e+44>>2],A[t+72>>2]=A[e+40>>2],A[t+76>>2]=b,b=A[e+36>>2],A[t+64>>2]=A[e+32>>2],A[t+68>>2]=b,a0(C,t+80|0,t- -64|0),b=A[t+204>>2],A[e+40>>2]=A[t+200>>2],A[e+44>>2]=b,b=A[t+196>>2],A[e+32>>2]=A[t+192>>2],A[e+36>>2]=b,b=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=b,b=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=b,b=A[e+28>>2],A[t+40>>2]=A[e+24>>2],A[t+44>>2]=b,b=A[e+20>>2],A[t+32>>2]=A[e+16>>2],A[t+36>>2]=b,a0(C,t+48|0,t+32|0),b=A[t+204>>2],A[e+24>>2]=A[t+200>>2],A[e+28>>2]=b,b=A[t+196>>2],A[e+16>>2]=A[t+192>>2],A[e+20>>2]=b,b=A[t+220>>2],A[t+24>>2]=A[t+216>>2],A[t+28>>2]=b,b=A[t+212>>2],A[t+16>>2]=A[t+208>>2],A[t+20>>2]=b,b=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=b,b=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=b,a0(C,t+16|0,t),C=A[t+192>>2],b=A[t+196>>2],M=A[t+200>>2],A[e+12>>2]=g^A[t+204>>2],A[e+8>>2]=M^V,A[e+4>>2]=b^q,A[e>>2]=C^x,W=t+224|0}function Ig(C,g){var e,t,r,o,I,a,_,s,h,n,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0;W=e=W-800|0,B=A[g+44>>2],p=A[g+84>>2],l=A[g+48>>2],v=A[g+88>>2],D=A[g+52>>2],Q=A[g+92>>2],q=A[g+56>>2],b=A[g+96>>2],J=A[g+60>>2],V=A[g+100>>2],_A=A[(z=g- -64|0)>>2],sA=A[g+104>>2],nA=A[g+68>>2],fA=A[g+108>>2],uA=A[g+72>>2],vA=A[g+112>>2],wA=A[g+40>>2],iA=A[g+80>>2],M=A[g+76>>2],x=A[g+116>>2],A[e+324>>2]=M+x,A[e+320>>2]=uA+vA,A[e+316>>2]=nA+fA,A[e+312>>2]=_A+sA,A[e+308>>2]=V+J,A[e+304>>2]=b+q,A[e+300>>2]=Q+D,A[e+296>>2]=l+v,A[e+292>>2]=B+p,A[e+288>>2]=wA+iA,A[e+36>>2]=x-M,A[e+32>>2]=vA-uA,A[e+28>>2]=fA-nA,A[e+24>>2]=sA-_A,A[e+20>>2]=V-J,A[e+16>>2]=b-q,A[e+12>>2]=Q-D,A[e+8>>2]=v-l,A[e+4>>2]=p-B,A[e>>2]=iA-wA,kA(B=e+288|0,B,e),kA(l=e+240|0,g,D=g+40|0),gA(p=e+192|0,l),kA(p,B,p),A[e+452>>2]=0,A[e+456>>2]=0,A[e+460>>2]=0,A[e+464>>2]=0,A[e+468>>2]=0,A[e+436>>2]=0,A[e+440>>2]=0,A[e+444>>2]=0,A[e+448>>2]=0,A[e+432>>2]=1,QC(v=e+576|0,e+432|0,p),kA(p=e+720|0,v,B),kA(J=e+672|0,v,l),kA(b=e+48|0,p,J),kA(b,b,B=g+120|0),kA(e+528|0,g,1632),kA(e+480|0,D,1632),kA(e+624|0,p,2944),kA(p=e+336|0,B,b),w2(q=e+384|0,p),Q=i[e+384|0],p=A[g+36>>2],B=A[g+32>>2],A[e+176>>2]=B,A[e+180>>2]=p,l=A[g+28>>2],p=A[g+24>>2],A[e+168>>2]=p,A[e+172>>2]=l,v=A[g+20>>2],l=A[g+16>>2],A[e+160>>2]=l,A[e+164>>2]=v,D=A[g+12>>2],v=A[g+8>>2],A[e+152>>2]=v,A[e+156>>2]=D,V=A[g+4>>2],D=A[g>>2],A[e+144>>2]=D,A[e+148>>2]=V,V=A[g+44>>2],_A=A[g+48>>2],sA=A[g+52>>2],nA=A[g+56>>2],fA=A[g+60>>2],uA=A[z>>2],vA=A[g+68>>2],wA=A[g+72>>2],iA=A[g+76>>2],z=A[g+40>>2],HA=A[e+484>>2],M=A[e+148>>2],aA=A[e+492>>2],x=A[e+156>>2],EA=A[e+500>>2],$=A[e+164>>2],YA=A[e+508>>2],K=A[e+172>>2],qA=A[e+516>>2],hA=A[e+180>>2],$A=A[e+480>>2],g0=A[e+488>>2],i0=A[e+496>>2],u=A[e+504>>2],Q=0-(1&Q)|0,A[e+176>>2]=B^Q&(B^A[e+512>>2]),A[e+168>>2]=p^Q&(p^u),A[e+160>>2]=l^Q&(l^i0),A[e+152>>2]=v^Q&(v^g0),A[e+144>>2]=D^Q&(D^$A),A[e+180>>2]=hA^Q&(hA^qA),A[e+172>>2]=K^Q&(K^YA),A[e+164>>2]=$^Q&($^EA),A[e+156>>2]=x^Q&(x^aA),A[e+148>>2]=M^Q&(M^HA),hA=A[e+528>>2],HA=A[e+532>>2],aA=A[e+536>>2],EA=A[e+540>>2],YA=A[e+544>>2],qA=A[e+548>>2],$A=A[e+552>>2],g0=A[e+556>>2],i0=A[e+560>>2],u=A[e+564>>2],B=A[e+672>>2],t=A[e+624>>2],p=A[e+676>>2],r=A[e+628>>2],l=A[e+680>>2],o=A[e+632>>2],v=A[e+684>>2],I=A[e+636>>2],D=A[e+688>>2],a=A[e+640>>2],M=A[e+692>>2],_=A[e+644>>2],x=A[e+696>>2],s=A[e+648>>2],$=A[e+700>>2],h=A[e+652>>2],K=A[e+704>>2],n=A[e+656>>2],mA=A[e+708>>2],A[e+708>>2]=mA^Q&(A[e+660>>2]^mA),A[e+704>>2]=K^Q&(K^n),A[e+700>>2]=$^Q&($^h),A[e+696>>2]=x^Q&(x^s),A[e+692>>2]=M^Q&(M^_),A[e+688>>2]=D^Q&(D^a),A[e+684>>2]=v^Q&(v^I),A[e+680>>2]=l^Q&(l^o),A[e+676>>2]=p^Q&(p^r),A[e+672>>2]=B^Q&(B^t),kA(B=e+96|0,e+144|0,b),w2(q,B),p=A[g+84>>2],l=A[g+88>>2],v=A[g+92>>2],D=A[g+96>>2],b=A[g+100>>2],M=A[g+104>>2],x=A[g+108>>2],$=A[g+112>>2],K=A[g+80>>2],mA=A[g+116>>2],g=0-(1&c[e+384|0])|0,B=iA^Q&(iA^u),A[e+420>>2]=mA-(g&(0-B^B)^B),B=wA^Q&(wA^i0),A[e+416>>2]=$-(g&(0-B^B)^B),B=vA^Q&(vA^g0),A[e+412>>2]=x-(g&(0-B^B)^B),B=uA^Q&(uA^$A),A[e+408>>2]=M-(g&(0-B^B)^B),B=fA^Q&(fA^qA),A[e+404>>2]=b-(g&(0-B^B)^B),B=nA^Q&(nA^YA),A[e+400>>2]=D-(g&(0-B^B)^B),B=sA^Q&(sA^EA),A[e+396>>2]=v-(g&(0-B^B)^B),B=_A^Q&(_A^aA),A[e+392>>2]=l-(g&(0-B^B)^B),B=V^Q&(V^HA),A[e+388>>2]=p-(g&(0-B^B)^B),B=g,g=z^Q&(z^hA),A[e+384>>2]=K-(B&(0-g^g)^g),kA(q,J,q),w2(e+768|0,q),g=0-(1&c[e+768|0])|0,B=A[e+384>>2],A[e+384>>2]=g&(0-B^B)^B,B=A[e+388>>2],A[e+388>>2]=g&(0-B^B)^B,B=A[e+392>>2],A[e+392>>2]=g&(0-B^B)^B,B=A[e+396>>2],A[e+396>>2]=g&(0-B^B)^B,B=A[e+400>>2],A[e+400>>2]=g&(0-B^B)^B,B=A[e+404>>2],A[e+404>>2]=g&(0-B^B)^B,B=A[e+408>>2],A[e+408>>2]=g&(0-B^B)^B,B=A[e+412>>2],A[e+412>>2]=g&(0-B^B)^B,B=A[e+416>>2],A[e+416>>2]=g&(0-B^B)^B,B=g,g=A[e+420>>2],A[e+420>>2]=B&(0-g^g)^g,w2(C,q),W=e+800|0}function Lg(C,g){var e,t,r,o,I,a,_,s,h,n=0,B=0;W=e=W-288|0,t=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,r=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,o=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,I=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,a=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,_=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,s=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,h=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,C=A[g+124>>2],A[e+280>>2]=A[g+120>>2],A[e+284>>2]=C,C=A[g+116>>2],A[e+272>>2]=A[g+112>>2],A[e+276>>2]=C,C=A[g+108>>2],A[e+248>>2]=A[g+104>>2],A[e+252>>2]=C,C=A[g+100>>2],A[e+240>>2]=A[g+96>>2],A[e+244>>2]=C,C=A[g+124>>2],A[e+232>>2]=A[g+120>>2],A[e+236>>2]=C,C=A[g+116>>2],A[e+224>>2]=A[g+112>>2],A[e+228>>2]=C,a0(B=e+256|0,e+240|0,e+224|0),C=A[e+268>>2],A[g+120>>2]=A[e+264>>2],A[g+124>>2]=C,C=A[e+260>>2],A[g+112>>2]=A[e+256>>2],A[g+116>>2]=C,C=A[g+92>>2],A[e+216>>2]=A[g+88>>2],A[e+220>>2]=C,C=A[g+84>>2],A[e+208>>2]=A[g+80>>2],A[e+212>>2]=C,C=A[g+108>>2],A[e+200>>2]=A[g+104>>2],A[e+204>>2]=C,C=A[g+100>>2],A[e+192>>2]=A[g+96>>2],A[e+196>>2]=C,a0(B,e+208|0,e+192|0),C=A[e+268>>2],A[g+104>>2]=A[e+264>>2],A[g+108>>2]=C,C=A[e+260>>2],A[g+96>>2]=A[e+256>>2],A[g+100>>2]=C,C=A[g+76>>2],A[e+184>>2]=A[g+72>>2],A[e+188>>2]=C,n=A[4+(C=g- -64|0)>>2],A[e+176>>2]=A[C>>2],A[e+180>>2]=n,n=A[g+92>>2],A[e+168>>2]=A[g+88>>2],A[e+172>>2]=n,n=A[g+84>>2],A[e+160>>2]=A[g+80>>2],A[e+164>>2]=n,a0(B,e+176|0,e+160|0),n=A[e+268>>2],A[g+88>>2]=A[e+264>>2],A[g+92>>2]=n,n=A[e+260>>2],A[g+80>>2]=A[e+256>>2],A[g+84>>2]=n,n=A[g+60>>2],A[e+152>>2]=A[g+56>>2],A[e+156>>2]=n,n=A[g+52>>2],A[e+144>>2]=A[g+48>>2],A[e+148>>2]=n,n=A[g+76>>2],A[e+136>>2]=A[g+72>>2],A[e+140>>2]=n,n=A[C+4>>2],A[e+128>>2]=A[C>>2],A[e+132>>2]=n,a0(B,e+144|0,e+128|0),n=A[e+268>>2],A[g+72>>2]=A[e+264>>2],A[g+76>>2]=n,n=A[e+260>>2],A[C>>2]=A[e+256>>2],A[C+4>>2]=n,n=A[g+44>>2],A[e+120>>2]=A[g+40>>2],A[e+124>>2]=n,n=A[g+36>>2],A[e+112>>2]=A[g+32>>2],A[e+116>>2]=n,n=A[g+60>>2],A[e+104>>2]=A[g+56>>2],A[e+108>>2]=n,n=A[g+52>>2],A[e+96>>2]=A[g+48>>2],A[e+100>>2]=n,a0(B,e+112|0,e+96|0),n=A[e+268>>2],A[g+56>>2]=A[e+264>>2],A[g+60>>2]=n,n=A[e+260>>2],A[g+48>>2]=A[e+256>>2],A[g+52>>2]=n,n=A[g+28>>2],A[e+88>>2]=A[g+24>>2],A[e+92>>2]=n,n=A[g+20>>2],A[e+80>>2]=A[g+16>>2],A[e+84>>2]=n,n=A[g+44>>2],A[e+72>>2]=A[g+40>>2],A[e+76>>2]=n,n=A[g+36>>2],A[e+64>>2]=A[g+32>>2],A[e+68>>2]=n,a0(B,e+80|0,e- -64|0),n=A[e+268>>2],A[g+40>>2]=A[e+264>>2],A[g+44>>2]=n,n=A[e+260>>2],A[g+32>>2]=A[e+256>>2],A[g+36>>2]=n,n=A[g+12>>2],A[e+56>>2]=A[g+8>>2],A[e+60>>2]=n,n=A[g+4>>2],A[e+48>>2]=A[g>>2],A[e+52>>2]=n,n=A[g+28>>2],A[e+40>>2]=A[g+24>>2],A[e+44>>2]=n,n=A[g+20>>2],A[e+32>>2]=A[g+16>>2],A[e+36>>2]=n,a0(B,e+48|0,e+32|0),n=A[e+268>>2],A[g+24>>2]=A[e+264>>2],A[g+28>>2]=n,n=A[e+260>>2],A[g+16>>2]=A[e+256>>2],A[g+20>>2]=n,n=A[e+284>>2],A[e+24>>2]=A[e+280>>2],A[e+28>>2]=n,n=A[e+276>>2],A[e+16>>2]=A[e+272>>2],A[e+20>>2]=n,n=A[g+12>>2],A[e+8>>2]=A[g+8>>2],A[e+12>>2]=n,n=A[g+4>>2],A[e>>2]=A[g>>2],A[e+4>>2]=n,a0(B,e+16|0,e),B=A[e+268>>2],A[g+8>>2]=A[e+264>>2],A[g+12>>2]=B,B=A[e+260>>2],A[g>>2]=A[e+256>>2],A[g+4>>2]=B,A[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^s,A[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^_,A[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^a,A[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^h,A[C>>2]=(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24)^I,A[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^o,A[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^r,A[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^t,W=e+288|0}function oe(C,g,e,t){var r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x=0,q=0,V=0,$=0;W=r=W-240|0,A[r+200>>2]=0,A[r+204>>2]=0,A[r+192>>2]=0,A[r+196>>2]=0,P0(q=r+192|0,g,e),V=i[t+16|0]|i[t+17|0]<<8|i[t+18|0]<<16|i[t+19|0]<<24,$=i[0|(g=t- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,x=i[t+80|0]|i[t+81|0]<<8|i[t+82|0]<<16|i[t+83|0]<<24,o=i[t+32|0]|i[t+33|0]<<8|i[t+34|0]<<16|i[t+35|0]<<24,I=i[t+48|0]|i[t+49|0]<<8|i[t+50|0]<<16|i[t+51|0]<<24,a=i[t+20|0]|i[t+21|0]<<8|i[t+22|0]<<16|i[t+23|0]<<24,_=i[t+68|0]|i[t+69|0]<<8|i[t+70|0]<<16|i[t+71|0]<<24,s=i[t+84|0]|i[t+85|0]<<8|i[t+86|0]<<16|i[t+87|0]<<24,h=i[t+36|0]|i[t+37|0]<<8|i[t+38|0]<<16|i[t+39|0]<<24,n=i[t+52|0]|i[t+53|0]<<8|i[t+54|0]<<16|i[t+55|0]<<24,B=i[t+24|0]|i[t+25|0]<<8|i[t+26|0]<<16|i[t+27|0]<<24,Q=i[t+72|0]|i[t+73|0]<<8|i[t+74|0]<<16|i[t+75|0]<<24,p=i[t+88|0]|i[t+89|0]<<8|i[t+90|0]<<16|i[t+91|0]<<24,l=i[t+40|0]|i[t+41|0]<<8|i[t+42|0]<<16|i[t+43|0]<<24,v=i[t+56|0]|i[t+57|0]<<8|i[t+58|0]<<16|i[t+59|0]<<24,D=A[r+192>>2],b=A[r+196>>2],M=A[r+200>>2],A[r+204>>2]=(i[t+44|0]|i[t+45|0]<<8|i[t+46|0]<<16|i[t+47|0]<<24)&(i[t+60|0]|i[t+61|0]<<8|i[t+62|0]<<16|i[t+63|0]<<24)^(i[t+28|0]|i[t+29|0]<<8|i[t+30|0]<<16|i[t+31|0]<<24)^(i[t+76|0]|i[t+77|0]<<8|i[t+78|0]<<16|i[t+79|0]<<24)^A[r+204>>2]^(i[t+92|0]|i[t+93|0]<<8|i[t+94|0]<<16|i[t+95|0]<<24),A[r+200>>2]=l&v^p^M^Q^B,A[r+196>>2]=h&n^s^b^_^a,A[r+192>>2]=o&I^V^$^x^D,$0(e+q|0,0,16-e|0),P0(C,q,e),e=A[r+192>>2],q=A[r+196>>2],V=A[r+200>>2],$=A[r+204>>2],C=A[t+92>>2],A[r+232>>2]=A[t+88>>2],A[r+236>>2]=C,C=A[t+84>>2],A[r+224>>2]=A[t+80>>2],A[r+228>>2]=C,C=A[t+76>>2],A[r+184>>2]=A[t+72>>2],A[r+188>>2]=C,C=A[g+4>>2],A[r+176>>2]=A[g>>2],A[r+180>>2]=C,C=A[t+92>>2],A[r+168>>2]=A[t+88>>2],A[r+172>>2]=C,C=A[t+84>>2],A[r+160>>2]=A[t+80>>2],A[r+164>>2]=C,a0(C=r+208|0,r+176|0,r+160|0),x=A[r+220>>2],A[t+88>>2]=A[r+216>>2],A[t+92>>2]=x,x=A[r+212>>2],A[t+80>>2]=A[r+208>>2],A[t+84>>2]=x,x=A[t+60>>2],A[r+152>>2]=A[t+56>>2],A[r+156>>2]=x,x=A[t+52>>2],A[r+144>>2]=A[t+48>>2],A[r+148>>2]=x,x=A[t+76>>2],A[r+136>>2]=A[t+72>>2],A[r+140>>2]=x,x=A[g+4>>2],A[r+128>>2]=A[g>>2],A[r+132>>2]=x,a0(C,r+144|0,r+128|0),x=A[r+220>>2],A[t+72>>2]=A[r+216>>2],A[t+76>>2]=x,x=A[r+212>>2],A[g>>2]=A[r+208>>2],A[g+4>>2]=x,g=A[t+44>>2],A[r+120>>2]=A[t+40>>2],A[r+124>>2]=g,g=A[t+36>>2],A[r+112>>2]=A[t+32>>2],A[r+116>>2]=g,g=A[t+60>>2],A[r+104>>2]=A[t+56>>2],A[r+108>>2]=g,g=A[t+52>>2],A[r+96>>2]=A[t+48>>2],A[r+100>>2]=g,a0(C,r+112|0,r+96|0),g=A[r+220>>2],A[t+56>>2]=A[r+216>>2],A[t+60>>2]=g,g=A[r+212>>2],A[t+48>>2]=A[r+208>>2],A[t+52>>2]=g,g=A[t+28>>2],A[r+88>>2]=A[t+24>>2],A[r+92>>2]=g,g=A[t+20>>2],A[r+80>>2]=A[t+16>>2],A[r+84>>2]=g,g=A[t+44>>2],A[r+72>>2]=A[t+40>>2],A[r+76>>2]=g,g=A[t+36>>2],A[r+64>>2]=A[t+32>>2],A[r+68>>2]=g,a0(C,r+80|0,r- -64|0),g=A[r+220>>2],A[t+40>>2]=A[r+216>>2],A[t+44>>2]=g,g=A[r+212>>2],A[t+32>>2]=A[r+208>>2],A[t+36>>2]=g,g=A[t+12>>2],A[r+56>>2]=A[t+8>>2],A[r+60>>2]=g,g=A[t+4>>2],A[r+48>>2]=A[t>>2],A[r+52>>2]=g,g=A[t+28>>2],A[r+40>>2]=A[t+24>>2],A[r+44>>2]=g,g=A[t+20>>2],A[r+32>>2]=A[t+16>>2],A[r+36>>2]=g,a0(C,r+48|0,r+32|0),g=A[r+220>>2],A[t+24>>2]=A[r+216>>2],A[t+28>>2]=g,g=A[r+212>>2],A[t+16>>2]=A[r+208>>2],A[t+20>>2]=g,g=A[r+236>>2],A[r+24>>2]=A[r+232>>2],A[r+28>>2]=g,g=A[r+228>>2],A[r+16>>2]=A[r+224>>2],A[r+20>>2]=g,g=A[t+12>>2],A[r+8>>2]=A[t+8>>2],A[r+12>>2]=g,g=A[t+4>>2],A[r>>2]=A[t>>2],A[r+4>>2]=g,a0(C,r+16|0,r),C=A[r+208>>2],g=A[r+212>>2],x=A[r+216>>2],A[t+12>>2]=$^A[r+220>>2],A[t+8>>2]=x^V,A[t+4>>2]=g^q,A[t>>2]=C^e,W=r+240|0}function _e(C,g,e,t,r){C|=0,g|=0,e|=0,t|=0;var o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0;if(a=1886610805^(t=i[0|(r|=0)]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),I=1936682341^(o=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24),s=1852142177^t,_=1819895653^o,o=1852075885^(t=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24),r=1685025377^(n=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24),h=2037671283^t,n^=1952801890,(0|(l=(g+e|0)-(Q=7&e)|0))!=(0|g))for(;h=s=s+(t=h^(b=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))|0,_=_+(n^=M=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)|0,_=t>>>0>s>>>0?_+1|0:_,I=r+I|0,I=(p=a)>>>0>(a=o+a|0)>>>0?I+1|0:I,r=s+(o=G(o,r,13)^a)|0,s=_+(B=y^I)|0,B=G(o,B,17)^r,v=G(B,s=(p=r>>>0>>0?s+1|0:s)^y,13),D=y,t=G(t,n,16),o=_^y,_=t^h,a=G(a,I,32),h=s,s=y+o|0,h=1+(a=h+(I=(t=_+a|0)>>>0>>0?s+1|0:s)|0)|0,s=a,s=(a=t+B|0)>>>0>>0?h:s,v=G(h=a^v,n=s^D,17),D=y,o=G(_,o,21),I^=y,x=t^o,r=G(r,p,32),o=y+I|0,r=n+(p=(t=x+r|0)>>>0>>0?o+1|0:o)|0,o=(_=t+h|0)^v,r=(B=_>>>0>>0?r+1|0:r)^D,I=G(x,I,16),n=h=p^y,I=G(t^=I,h,21),p=y,h=(t=(a=G(a,s,32))+t|0)^I,s=y+n|0,n=(I=t>>>0>>0?s+1|0:s)^p,s=G(_,B,32),_=y,a=t^b,I^=M,(0|l)!=(0|(g=g+8|0)););switch(e<<=24,t=0,Q-1|0){case 6:e|=i[g+6|0]<<16;case 5:e|=i[g+5|0]<<8;case 4:e|=i[g+4|0];case 3:B=(t=i[g+3|0])>>>8|0,t<<=24,e|=B;case 2:t|=(B=i[g+2|0])<<16,e|=Q=B>>>16|0;case 1:t|=(B=i[g+1|0])<<8,e|=Q=B>>>24|0;case 0:t=i[0|g]|t}return n=G(g=t^h,h=e^n,16),_=_+h|0,s=(g=g+s|0)>>>0>>0?_+1|0:_,n=G(_=g^n,h=s^y,21),B=y,p=1+(I=r+I|0)|0,Q=I,Q=a=a>>>0>(I=o+a|0)>>>0?p:Q,l=G(I,a,32),h=y+h|0,B=G(_=n^(a=_+l|0),n=B^(h=a>>>0>>0?h+1|0:h),16),l=y,r=G(o,r,13)^I,o=(o=s)+(s=y^Q)|0,Q=G(g=g+r|0,I=g>>>0>>0?o+1|0:o,32),n=y+n|0,Q=G(_=B^(o=_+Q|0),B=(n=o>>>0>>0?n+1|0:n)^l,21),l=y,g=a+(r=s=G(r,s,17)^g)|0,a=(I^=y)+h|0,h=r=g>>>0>>0?a+1|0:a,p=Q,a=_+(Q=G(g,r,32))|0,_=y+B|0,Q=G(r=p^a,B=(_=a>>>0>>0?_+1|0:_)^l,16),l=y,p=o,I=G(s,I,13)^g,s=(h^=y)+n|0,n=o=(g=p+(o=I)|0)>>>0>>0?s+1|0:s,o=G(g,o,32),s=B+y|0,B=(p=r)>>>0>(r=r+(255^o)|0)>>>0?s+1|0:s,Q=G(s=r^Q,o=l^B,21),l=y,I=G(I,h,17)^g,e=(h=n^y)+(e^_)|0,_=e=(g=I+(t^=a)|0)>>>0>>0?e+1|0:e,e=G(g,e,32),t=o+y|0,s=G(a=(e=e+s|0)^Q,t=(o=e>>>0>>0?t+1|0:t)^l,16),n=y,I=G(I,h,13)^g,h=B+(_^=y)|0,h=r=(g=r+I|0)>>>0>>0?h+1|0:h,r=G(g,r,32),Q=n,p=1+(t=t+y|0)|0,n=t,n=(t=r+a|0)>>>0>>0?p:n,s=G(a=t^s,r=Q^n,21),B=y,I=G(I,_,17),p=1+(o=o+(_=h^y)|0)|0,h=o,I=g=(Q=e)>>>0>(e=e+(o=g^I)|0)>>>0?p:h,g=G(e,g,32),r=r+y|0,h=(g=g+a|0)>>>0>>0?r+1|0:r,s=G(a=g^s,r=h^B,16),B=y,o=G(o,_,13),_=n+(I^=y)|0,_=e=(n=t)>>>0>(t=t+(o^=e)|0)>>>0?_+1|0:_,e=G(t,e,32),r=r+y|0,n=(e=e+a|0)>>>0>>0?r+1|0:r,s=G(a=e^s,r=n^B,21),B=y,o=G(o,I,17),Q=1+(_=h+(I=_^y)|0)|0,h=_,g=G(t=g+(_=t^o)|0,o=t>>>0>>0?Q:h,32),r=r+y|0,h=(g=g+a|0)>>>0>>0?r+1|0:r,s=G(a=g^s,r=h^B,16),B=y,I=G(_,I,13),_=n+(o^=y)|0,_=e=(t=e+(I^=t)|0)>>>0>>0?_+1|0:_,e=G(t,e,32),r=r+y|0,a=G((e=e+a|0)^s,(r=e>>>0>>0?r+1|0:r)^B,21),s=y,t=G(I,o,17)^t,I=G(t,o=_^y,13),o=o+h|0,g=y^(g>>>0>(t=g+t|0)>>>0?o+1:o),a=G(t^=I,g,17)^a,o=y^s,_=1+(g=g+r|0)|0,r=g,g=G(g=e+t|0,e=e>>>0>g>>>0?_:r,32)^a^g,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,g=e^y^o,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,0}function ce(C,g){var e,t,r,o,I,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0;W=e=W-624|0,gA(a=e+480|0,g),kA(a,1632,a),s=A[e+516>>2],A[e+276>>2]=s,h=A[e+512>>2],A[e+272>>2]=h,n=A[e+508>>2],A[e+268>>2]=n,B=A[e+504>>2],A[e+264>>2]=B,Q=A[e+500>>2],A[e+260>>2]=Q,p=A[e+496>>2],A[e+256>>2]=p,l=A[e+492>>2],A[e+252>>2]=l,v=A[e+488>>2],A[e+248>>2]=v,D=A[e+484>>2],A[e+244>>2]=D,M=A[e+480>>2],A[e+240>>2]=M+1,kA(_=e+240|0,_,33968),A[e+468>>2]=s-12055116,A[e+464>>2]=h-18696448,A[e+460>>2]=n-3247719,A[e+456>>2]=B-6275908,A[e+452>>2]=Q-8787816,A[e+448>>2]=p+114729,A[e+444>>2]=l+6949391,A[e+440>>2]=v-15372611,A[e+436>>2]=D+13857413,A[e+432>>2]=M-10913610,kA(b=e+192|0,a,1584),A[e+228>>2]=0-A[e+228>>2],A[e+224>>2]=0-A[e+224>>2],A[e+220>>2]=0-A[e+220>>2],A[e+216>>2]=0-A[e+216>>2],A[e+212>>2]=0-A[e+212>>2],A[e+208>>2]=0-A[e+208>>2],A[e+204>>2]=0-A[e+204>>2],A[e+200>>2]=0-A[e+200>>2],A[e+196>>2]=0-A[e+196>>2],A[e+192>>2]=~A[e+192>>2],kA(b,b,e+432|0),a=QC(t=e+384|0,_,b),kA(_=e+336|0,t,g),w2(r=e+576|0,_),I=i[e+576|0],nA=A[e+420>>2],_=A[e+372>>2],fA=A[e+416>>2],x=A[e+368>>2],uA=A[e+412>>2],q=A[e+364>>2],vA=A[e+408>>2],V=A[e+360>>2],wA=A[e+404>>2],$=A[e+356>>2],iA=A[e+400>>2],K=A[e+352>>2],hA=A[e+396>>2],J=A[e+348>>2],mA=A[e+392>>2],z=A[e+344>>2],HA=A[e+388>>2],_A=A[e+340>>2],o=A[e+384>>2],sA=A[e+336>>2],g=a-1|0,A[e+612>>2]=g&s,A[e+608>>2]=g&h,A[e+604>>2]=g&n,A[e+600>>2]=g&B,A[e+596>>2]=g&Q,A[e+592>>2]=g&p,A[e+588>>2]=g&l,A[e+584>>2]=g&v,A[e+580>>2]=g&D,A[e+576>>2]=M|0-a,sA=g&(0-(sA^(a=0-(1&I)|0)&(sA^0-sA))^o)^o,A[e+384>>2]=sA,_A=HA^g&(HA^0-(_A^a&(_A^0-_A))),A[e+388>>2]=_A,z=mA^g&(mA^0-(z^a&(z^0-z))),A[e+392>>2]=z,J=hA^g&(hA^0-(J^a&(J^0-J))),A[e+396>>2]=J,K=iA^g&(iA^0-(K^a&(K^0-K))),A[e+400>>2]=K,$=wA^g&(wA^0-($^a&($^0-$))),A[e+404>>2]=$,V=vA^g&(vA^0-(V^a&(V^0-V))),A[e+408>>2]=V,q=uA^g&(uA^0-(q^a&(q^0-q))),A[e+412>>2]=q,x=fA^g&(fA^0-(x^a&(x^0-x))),A[e+416>>2]=x,a=nA^g&(nA^0-(_^a&(_^0-_))),A[e+420>>2]=a,A[e+564>>2]=s,A[e+560>>2]=h,A[e+556>>2]=n,A[e+552>>2]=B,A[e+548>>2]=Q,A[e+544>>2]=p,A[e+540>>2]=l,A[e+536>>2]=v,A[e+532>>2]=D,A[e+528>>2]=M-1,kA(g=e+528|0,g,r),kA(g,g,34016),s=A[e+192>>2],h=A[e+528>>2],n=A[e+196>>2],B=A[e+532>>2],Q=A[e+200>>2],p=A[e+536>>2],l=A[e+204>>2],v=A[e+540>>2],D=A[e+208>>2],M=A[e+544>>2],_=A[e+212>>2],nA=A[e+548>>2],fA=A[e+216>>2],uA=A[e+552>>2],vA=A[e+220>>2],wA=A[e+556>>2],iA=A[e+224>>2],hA=A[e+560>>2],mA=A[e+228>>2],HA=A[e+564>>2],A[e+180>>2]=a<<1,A[e+176>>2]=x<<1,A[e+172>>2]=q<<1,A[e+168>>2]=V<<1,A[e+164>>2]=$<<1,A[e+160>>2]=K<<1,A[e+156>>2]=J<<1,A[e+152>>2]=z<<1,A[e+148>>2]=_A<<1,A[e+144>>2]=sA<<1,A[e+564>>2]=HA-mA,A[e+560>>2]=hA-iA,A[e+556>>2]=wA-vA,A[e+552>>2]=uA-fA,A[e+548>>2]=nA-_,A[e+544>>2]=M-D,A[e+540>>2]=v-l,A[e+536>>2]=p-Q,A[e+532>>2]=B-n,A[e+528>>2]=h-s,kA(a=e+144|0,a,b),kA(b=e+96|0,g,34064),gA(e+288|0,t),g=A[e+324>>2],A[e+84>>2]=0-g,s=A[e+320>>2],A[e+80>>2]=0-s,h=A[e+316>>2],A[e+76>>2]=0-h,n=A[e+312>>2],A[e+72>>2]=0-n,B=A[e+308>>2],A[e+68>>2]=0-B,Q=A[e+304>>2],A[e+64>>2]=0-Q,p=A[e+300>>2],A[e+60>>2]=0-p,l=A[e+296>>2],A[e+56>>2]=0-l,v=A[e+292>>2],A[e+52>>2]=0-v,D=A[e+288>>2],A[e+48>>2]=1-D,A[e+36>>2]=g,A[e+32>>2]=s,A[e+28>>2]=h,A[e+24>>2]=n,A[e+20>>2]=B,A[e+16>>2]=Q,A[e+12>>2]=p,A[e+8>>2]=l,A[e+4>>2]=v,A[e>>2]=D+1,kA(C,a,e),kA(C+40|0,g=e+48|0,b),kA(C+80|0,b,e),kA(C+120|0,a,g),W=e+624|0}function _C(C,g,e){var t,r=0,o=0,I=0,a=0,_=0;W=t=W+-64|0;A:{if((e-65&255)>>>0>191){if(o=-1,!(i[C+80|0]|i[C+81|0]<<8|i[C+82|0]<<16|i[C+83|0]<<24|i[C+84|0]|i[C+85|0]<<8|i[C+86|0]<<16|i[C+87|0]<<24)){if((I=i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)>>>0>=129){if(a=r=i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24,r=(I=128+(o=i[C+64|0]|i[C+65|0]<<8|i[C+66|0]<<16|i[C+67|0]<<24)|0)>>>0<128?r+1|0:r,c[C+64|0]=I,c[C+65|0]=I>>>8,c[C+66|0]=I>>>16,c[C+67|0]=I>>>24,c[C+68|0]=r,c[C+69|0]=r>>>8,c[C+70|0]=r>>>16,c[C+71|0]=r>>>24,r=i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24,r=(_=o=(0|a)==-1&o>>>0>4294967167)>>>0>(o=o+(i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24)|0)>>>0?r+1|0:r,c[C+72|0]=o,c[C+73|0]=o>>>8,c[C+74|0]=o>>>16,c[C+75|0]=o>>>24,c[C+76|0]=r,c[C+77|0]=r>>>8,c[C+78|0]=r>>>16,c[C+79|0]=r>>>24,cg(C,r=C+96|0),o=(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)-128|0,c[C+352|0]=o,c[C+353|0]=o>>>8,c[C+354|0]=o>>>16,c[C+355|0]=o>>>24,o>>>0>=129)break A;P0(r,C+224|0,o),I=i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24}o=_=i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24,o=(a=I+(r=i[C+64|0]|i[C+65|0]<<8|i[C+66|0]<<16|i[C+67|0]<<24)|0)>>>0>>0?o+1|0:o,c[C+64|0]=a,c[C+65|0]=a>>>8,c[C+66|0]=a>>>16,c[C+67|0]=a>>>24,c[C+68|0]=o,c[C+69|0]=o>>>8,c[C+70|0]=o>>>16,c[C+71|0]=o>>>24,o=(0|o)==(0|_)&r>>>0>a>>>0|o>>>0<_>>>0,r=i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24,r=(_=o)>>>0>(o=o+(i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24)|0)>>>0?r+1|0:r,c[C+72|0]=o,c[C+73|0]=o>>>8,c[C+74|0]=o>>>16,c[C+75|0]=o>>>24,c[C+76|0]=r,c[C+77|0]=r>>>8,c[C+78|0]=r>>>16,c[C+79|0]=r>>>24,i[C+356|0]&&(c[C+88|0]=255,c[C+89|0]=255,c[C+90|0]=255,c[C+91|0]=255,c[C+92|0]=255,c[C+93|0]=255,c[C+94|0]=255,c[C+95|0]=255),c[C+80|0]=255,c[C+81|0]=255,c[C+82|0]=255,c[C+83|0]=255,c[C+84|0]=255,c[C+85|0]=255,c[C+86|0]=255,c[C+87|0]=255,$0((o=C+96|0)+I|0,0,256-I|0),cg(C,o),r=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,A[t>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,A[t+4>>2]=r,r=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,A[t+8>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,A[t+12>>2]=r,r=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,A[t+16>>2]=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,A[t+20>>2]=r,r=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,A[t+24>>2]=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,A[t+28>>2]=r,r=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,A[t+32>>2]=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24,A[t+36>>2]=r,r=i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24,A[t+40>>2]=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,A[t+44>>2]=r,r=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,A[t+48>>2]=i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24,A[t+52>>2]=r,r=i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24,A[t+56>>2]=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24,A[t+60>>2]=r,P0(g,t,e),y0(C,64),y0(o,256),o=0}return W=t- -64|0,o}h2(),Q0()}xg(1386,1234,306,1142),Q0()}function Ie(C,g,e){C|=0,g|=0,e|=0;var t,r,o,I=0,a=0;W=t=W-192|0,A[t+144>>2]=0,A[t+148>>2]=0,A[t+152>>2]=0,A[t+156>>2]=0,A[t+104>>2]=0,A[t+108>>2]=0,A[t+112>>2]=0,A[t+116>>2]=0,A[t+120>>2]=0,A[t+124>>2]=0,I=A[8799],A[t+168>>2]=A[8798],A[t+172>>2]=I,I=A[8801],A[t+176>>2]=A[8800],A[t+180>>2]=I,I=A[8803],A[t+184>>2]=A[8802],A[t+188>>2]=I,A[t+128>>2]=0,A[t+132>>2]=0,A[t+136>>2]=0,A[t+140>>2]=0,A[t+96>>2]=0,A[t+100>>2]=0,I=A[8797],A[t+160>>2]=A[8796],A[t+164>>2]=I,I=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,A[t+80>>2]=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,A[t+84>>2]=I,I=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,A[t+88>>2]=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,A[t+92>>2]=I,I=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,A[t+64>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,A[t+68>>2]=I,I=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,A[t+72>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,A[t+76>>2]=I,pt(e=t+128|0,I=t- -64|0),d1(e),a=A[t+156>>2],A[t+24>>2]=A[t+152>>2],A[t+28>>2]=a,a=A[t+148>>2],A[t+16>>2]=A[t+144>>2],A[t+20>>2]=a,a=A[t+140>>2],A[t+8>>2]=A[t+136>>2],A[t+12>>2]=a,a=A[t+132>>2],A[t>>2]=A[t+128>>2],A[t+4>>2]=a,A[t+120>>2]=0,A[t+124>>2]=0,A[t+112>>2]=0,A[t+116>>2]=0,A[t+104>>2]=0,A[t+108>>2]=0,A[t+96>>2]=0,A[t+100>>2]=0,a=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[t+80>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[t+84>>2]=a,a=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[t+88>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[t+92>>2]=a,a=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,r=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,o=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[t+56>>2]=0,A[t+60>>2]=0,A[t+48>>2]=0,A[t+52>>2]=0,A[t+40>>2]=0,A[t+44>>2]=0,A[t+64>>2]=o,A[t+68>>2]=g,A[t+72>>2]=a,A[t+76>>2]=r,A[t+32>>2]=0,A[t+36>>2]=0,yr(I,t),g=A[t+124>>2],A[t+184>>2]=A[t+120>>2],A[t+188>>2]=g,g=A[t+116>>2],A[t+176>>2]=A[t+112>>2],A[t+180>>2]=g,g=A[t+108>>2],A[t+168>>2]=A[t+104>>2],A[t+172>>2]=g,g=A[t+100>>2],A[t+160>>2]=A[t+96>>2],A[t+164>>2]=g,g=A[t+92>>2],A[t+152>>2]=A[t+88>>2],A[t+156>>2]=g,g=A[t+84>>2],A[t+144>>2]=A[t+80>>2],A[t+148>>2]=g,g=A[t+76>>2],A[t+136>>2]=A[t+72>>2],A[t+140>>2]=g,g=A[t+68>>2],A[t+128>>2]=A[t+64>>2],A[t+132>>2]=g,d1(e),g=A[t+156>>2],I=A[t+152>>2],c[C+24|0]=I,c[C+25|0]=I>>>8,c[C+26|0]=I>>>16,c[C+27|0]=I>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[t+148>>2],I=A[t+144>>2],c[C+16|0]=I,c[C+17|0]=I>>>8,c[C+18|0]=I>>>16,c[C+19|0]=I>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[t+140>>2],I=A[t+136>>2],c[C+8|0]=I,c[C+9|0]=I>>>8,c[C+10|0]=I>>>16,c[C+11|0]=I>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[t+132>>2],I=A[t+128>>2],c[0|C]=I,c[C+1|0]=I>>>8,c[C+2|0]=I>>>16,c[C+3|0]=I>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,y0(e,64),W=t+192|0}function cC(C){var g,e,t,r,o,I,a,_,s,h,n=0,B=0,Q=0,p=0,l=0;for(W=g=W-2048|0,D2(p=g+640|0,C),n=A[C+36>>2],A[g+352>>2]=A[C+32>>2],A[g+356>>2]=n,n=A[C+28>>2],A[g+344>>2]=A[C+24>>2],A[g+348>>2]=n,n=A[C+20>>2],A[g+336>>2]=A[C+16>>2],A[g+340>>2]=n,n=A[C+12>>2],A[g+328>>2]=A[C+8>>2],A[g+332>>2]=n,n=A[C+4>>2],A[g+320>>2]=A[C>>2],A[g+324>>2]=n,n=A[C+52>>2],A[g+368>>2]=A[C+48>>2],A[g+372>>2]=n,n=A[C+60>>2],A[g+376>>2]=A[C+56>>2],A[g+380>>2]=n,n=A[4+(Q=C- -64|0)>>2],A[g+384>>2]=A[Q>>2],A[g+388>>2]=n,n=A[C+76>>2],A[g+392>>2]=A[C+72>>2],A[g+396>>2]=n,n=A[C+44>>2],A[g+360>>2]=A[C+40>>2],A[g+364>>2]=n,n=A[C+92>>2],A[g+408>>2]=A[C+88>>2],A[g+412>>2]=n,n=A[C+100>>2],A[g+416>>2]=A[C+96>>2],A[g+420>>2]=n,n=A[C+108>>2],A[g+424>>2]=A[C+104>>2],A[g+428>>2]=n,n=A[C+116>>2],A[g+432>>2]=A[C+112>>2],A[g+436>>2]=n,n=A[C+84>>2],A[g+400>>2]=A[C+80>>2],A[g+404>>2]=n,P2(B=g+480|0,Q=g+320|0),kA(n=g+160|0,B,e=g+600|0),kA(g+200|0,t=g+520|0,r=g+560|0),kA(g+240|0,r,e),kA(g+280|0,B,t),b2(B,n,p),kA(Q,B,e),kA(a=g+360|0,t,r),kA(_=g+400|0,r,e),kA(s=g+440|0,B,t),D2(C=g+800|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(C=g+960|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(C=g+1120|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(C=g+1280|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(C=g+1440|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(C=g+1600|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(g+1760|0,Q),A[g+32>>2]=0,A[g+36>>2]=0,A[g+24>>2]=0,A[g+28>>2]=0,A[g+16>>2]=0,A[g+20>>2]=0,A[g+8>>2]=0,A[g+12>>2]=0,A[g+52>>2]=0,A[g+56>>2]=0,A[g+60>>2]=0,A[g+64>>2]=0,A[g+68>>2]=0,A[g+72>>2]=0,A[g+76>>2]=0,A[g+80>>2]=1,A[g>>2]=0,A[g+4>>2]=0,A[g+44>>2]=0,A[g+48>>2]=0,A[g+40>>2]=1,$0(g+84|0,0,76),h=g+120|0,o=g+2008|0,I=g+1968|0,p=g+80|0,Q=g+40|0,C=252;n=A[g+36>>2],A[(B=g+1960|0)>>2]=A[g+32>>2],A[B+4>>2]=n,n=A[g+28>>2],A[(B=g+1952|0)>>2]=A[g+24>>2],A[B+4>>2]=n,n=A[g+20>>2],A[(B=g+1944|0)>>2]=A[g+16>>2],A[B+4>>2]=n,n=A[g+12>>2],A[(B=g+1936|0)>>2]=A[g+8>>2],A[B+4>>2]=n,n=A[g+4>>2],A[g+1928>>2]=A[g>>2],A[g+1932>>2]=n,n=A[Q+36>>2],A[I+32>>2]=A[Q+32>>2],A[I+36>>2]=n,n=A[Q+28>>2],A[I+24>>2]=A[Q+24>>2],A[I+28>>2]=n,n=A[Q+20>>2],A[I+16>>2]=A[Q+16>>2],A[I+20>>2]=n,n=A[Q+12>>2],A[I+8>>2]=A[Q+8>>2],A[I+12>>2]=n,n=A[Q+4>>2],A[I>>2]=A[Q>>2],A[I+4>>2]=n,n=A[p+36>>2],A[o+32>>2]=A[p+32>>2],A[o+36>>2]=n,n=A[p+28>>2],A[o+24>>2]=A[p+24>>2],A[o+28>>2]=n,n=A[p+20>>2],A[o+16>>2]=A[p+16>>2],A[o+20>>2]=n,n=A[p+12>>2],A[o+8>>2]=A[p+8>>2],A[o+12>>2]=n,n=A[p+4>>2],A[o>>2]=A[p>>2],A[o+4>>2]=n,n=C,l=c[C+33712|0],P2(B=g+480|0,g+1928|0),(0|l)>0?(kA(C=g+320|0,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),b2(B,C,(g+640|0)+M0((254&l)>>>1|0,160)|0)):(0|l)>=0||(kA(C=g+320|0,B=g+480|0,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),qg(B,C,(g+640|0)+M0((0-l&254)>>>1|0,160)|0)),kA(g,C=g+480|0,e),kA(Q,t,r),kA(p,r,e),kA(h,C,t),C=n-1|0,n;);return w2(C=g+640|0,g),C=X0(C,32),W=g+2048|0,C}function IC(C,g,e,t,r){var o,I,a,_,s,h,n,B,Q,p,l,v,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0;if(t?(wA=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,hA=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,iA=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,mA=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24):(wA=1797285236,iA=1634760805,hA=2036477234,mA=857760878),t=o=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,K=I=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,sA=a=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,M=wA,$=_=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,J=hA,nA=s=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,z=h=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,x=n=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,g=B=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,_A=mA,D=Q=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,b=p=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,q=l=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,e=v=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,V=iA,(0|r)>0)for(;fA=pA(e+_A|0,7)^nA,HA=pA(fA+_A|0,9)^K,uA=pA(t+V|0,7)^D,aA=pA(uA+V|0,9)^z,EA=pA(uA+aA|0,13)^t,vA=pA(M+$|0,7)^b,x=pA(vA+M|0,9)^x,b=pA(x+vA|0,13)^$,M=pA(x+b|0,18)^M,D=pA(g+J|0,7)^sA,t=EA^pA(M+D|0,7),K=pA(t+M|0,9)^HA,sA=pA(t+K|0,13)^D,M=pA(K+sA|0,18)^M,q=pA(D+J|0,9)^q,D=pA(q+D|0,13)^g,g=pA(D+q|0,18)^J,$=pA(g+fA|0,7)^b,z=pA($+g|0,9)^aA,nA=pA($+z|0,13)^fA,J=pA(z+nA|0,18)^g,e=pA(fA+HA|0,13)^e,b=pA(e+HA|0,18)^_A,g=pA(b+uA|0,7)^D,x=pA(g+b|0,9)^x,D=pA(g+x|0,13)^uA,_A=pA(x+D|0,18)^b,V=pA(aA+EA|0,18)^V,e=pA(V+vA|0,7)^e,q=pA(e+V|0,9)^q,b=pA(e+q|0,13)^vA,V=pA(q+b|0,18)^V,(0|(YA=YA+2|0))<(0|r););r=M+wA|0,c[C+60|0]=r,c[C+61|0]=r>>>8,c[C+62|0]=r>>>16,c[C+63|0]=r>>>24,r=sA+a|0,c[C+56|0]=r,c[C+57|0]=r>>>8,c[C+58|0]=r>>>16,c[C+59|0]=r>>>24,r=K+I|0,c[C+52|0]=r,c[C+53|0]=r>>>8,c[C+54|0]=r>>>16,c[C+55|0]=r>>>24,t=t+o|0,c[C+48|0]=t,c[C+49|0]=t>>>8,c[C+50|0]=t>>>16,c[C+51|0]=t>>>24,t=$+_|0,c[C+44|0]=t,c[C+45|0]=t>>>8,c[C+46|0]=t>>>16,c[C+47|0]=t>>>24,t=J+hA|0,c[C+40|0]=t,c[C+41|0]=t>>>8,c[C+42|0]=t>>>16,c[C+43|0]=t>>>24,t=nA+s|0,c[C+36|0]=t,c[C+37|0]=t>>>8,c[C+38|0]=t>>>16,c[C+39|0]=t>>>24,t=z+h|0,c[C+32|0]=t,c[C+33|0]=t>>>8,c[C+34|0]=t>>>16,c[C+35|0]=t>>>24,t=x+n|0,c[C+28|0]=t,c[C+29|0]=t>>>8,c[C+30|0]=t>>>16,c[C+31|0]=t>>>24,g=g+B|0,c[C+24|0]=g,c[C+25|0]=g>>>8,c[C+26|0]=g>>>16,c[C+27|0]=g>>>24,g=_A+mA|0,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=D+Q|0,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24,g=b+p|0,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=q+l|0,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=e+v|0,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=V+iA|0,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24}function M2(C){var g=0,e=0,t=0,r=0,o=0,I=0,a=0,_=0,s=0;A:if(C|=0){o=(t=C-8|0)+(C=-8&(g=A[C-4>>2]))|0;g:if(!(1&g)){if(!(2&g)||(t=t-(g=A[t>>2])|0)>>>0>2],g>>>0<=255){if((0|(r=A[t+8>>2]))!=(0|e))break t;_=37620,s=A[9405]&pA(-2,g>>>3|0),A[_>>2]=s;break g}if(a=A[t+24>>2],(0|e)!=(0|t)){g=A[t+8>>2],A[g+12>>2]=e,A[e+8>>2]=g;break C}if(r=A[t+20>>2])g=t+20|0;else{if(!(r=A[t+16>>2]))break e;g=t+16|0}for(;I=g,g=(e=r)+20|0,(r=A[e+20>>2])||(g=e+16|0,r=A[e+16>>2]););A[I>>2]=0;break C}if(3&~(g=A[o+4>>2]))break g;return A[9407]=C,A[o+4>>2]=-2&g,A[t+4>>2]=1|C,void(A[o>>2]=C)}A[r+12>>2]=e,A[e+8>>2]=r;break g}e=0}if(a){g=A[t+28>>2];C:{if(A[(r=37924+(g<<2)|0)>>2]==(0|t)){if(A[r>>2]=e,e)break C;_=37624,s=A[9406]&pA(-2,g),A[_>>2]=s;break g}if(A[a+(A[a+16>>2]==(0|t)?16:20)>>2]=e,!e)break g}A[e+24>>2]=a,(g=A[t+16>>2])&&(A[e+16>>2]=g,A[g+24>>2]=e),(g=A[t+20>>2])&&(A[e+20>>2]=g,A[g+24>>2]=e)}}if(!(t>>>0>=o>>>0)&&1&(g=A[o+4>>2])){g:{C:{e:{t:{if(!(2&g)){if((0|o)==A[9411]){if(A[9411]=t,C=A[9408]+C|0,A[9408]=C,A[t+4>>2]=1|C,A[9410]!=(0|t))break A;return A[9407]=0,void(A[9410]=0)}if((0|o)==A[9410])return A[9410]=t,C=A[9407]+C|0,A[9407]=C,A[t+4>>2]=1|C,void(A[C+t>>2]=C);if(C=(-8&g)+C|0,e=A[o+12>>2],g>>>0<=255){if((0|(r=A[o+8>>2]))==(0|e)){_=37620,s=A[9405]&pA(-2,g>>>3|0),A[_>>2]=s;break C}A[r+12>>2]=e,A[e+8>>2]=r;break C}if(a=A[o+24>>2],(0|e)!=(0|o)){g=A[o+8>>2],A[g+12>>2]=e,A[e+8>>2]=g;break e}if(r=A[o+20>>2])g=o+20|0;else{if(!(r=A[o+16>>2]))break t;g=o+16|0}for(;I=g,g=(e=r)+20|0,(r=A[e+20>>2])||(g=e+16|0,r=A[e+16>>2]););A[I>>2]=0;break e}A[o+4>>2]=-2&g,A[t+4>>2]=1|C,A[C+t>>2]=C;break g}e=0}if(a){g=A[o+28>>2];e:{if((0|o)==A[(r=37924+(g<<2)|0)>>2]){if(A[r>>2]=e,e)break e;_=37624,s=A[9406]&pA(-2,g),A[_>>2]=s;break C}if(A[a+((0|o)==A[a+16>>2]?16:20)>>2]=e,!e)break C}A[e+24>>2]=a,(g=A[o+16>>2])&&(A[e+16>>2]=g,A[g+24>>2]=e),(g=A[o+20>>2])&&(A[e+20>>2]=g,A[g+24>>2]=e)}}if(A[t+4>>2]=1|C,A[C+t>>2]=C,A[9410]==(0|t))return void(A[9407]=C)}if(C>>>0<=255)return g=37660+(-8&C)|0,(r=A[9405])&(C=1<<(C>>>3))?C=A[g+8>>2]:(A[9405]=C|r,C=g),A[g+8>>2]=t,A[C+12>>2]=t,A[t+12>>2]=g,void(A[t+8>>2]=C);e=31,C>>>0<=16777215&&(e=62+((C>>>38-(g=A1(C>>>8|0))&1)-(g<<1)|0)|0),A[t+28>>2]=e,A[t+16>>2]=0,A[t+20>>2]=0,I=37924+(e<<2)|0;g:{C:{if((g=A[9406])&(r=1<>>1|0):0),g=A[I>>2];;){if(r=g,(-8&A[g+4>>2])==(0|C))break C;if(g=e>>>29|0,e<<=1,!(g=A[(I=16+((4&g)+r|0)|0)>>2]))break}e=24,g=r}else A[9406]=g|r,e=24,g=I;r=t,o=t,C=8;break g}g=A[r+8>>2],A[g+12>>2]=t,e=8,I=r+8|0,o=0,C=24}A[I>>2]=t,A[e+t>>2]=g,A[t+12>>2]=r,A[C+t>>2]=o,C=A[9413]-1|0,A[9413]=C||-1}}}function se(C,g,e,t,r,o,I,a,_){var s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0;if(g-65>>>0<4294967232|I>>>0>64)C=-1;else{v=s=W,W=s=s-512&-64;A:{g:if(!(!(!(t|r)|e)|!C|((p=255&g)-65&255)>>>0<=191|!(!(g=255&I)||o)|g>>>0>=65)){if(g){if(!o)break g;a?(h=725511199^(i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24),n=-1694144372^(i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24),I=-1377402159^(i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24),a=1359893119^(i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24)):(h=725511199,n=-1694144372,I=-1377402159,a=1359893119),_?(B=327033209^(i[_+8|0]|i[_+9|0]<<8|i[_+10|0]<<16|i[_+11|0]<<24),Q=1541459225^(i[_+12|0]|i[_+13|0]<<8|i[_+14|0]<<16|i[_+15|0]<<24),l=-79577749^(i[0|_]|i[_+1|0]<<8|i[_+2|0]<<16|i[_+3|0]<<24),_=528734635^(i[_+4|0]|i[_+5|0]<<8|i[_+6|0]<<16|i[_+7|0]<<24)):(B=327033209,Q=1541459225,l=-79577749,_=528734635),$0(s- -64|0,0,293),A[s+56>>2]=B,A[s+60>>2]=Q,A[s+48>>2]=l,A[s+52>>2]=_,A[s+40>>2]=h,A[s+44>>2]=n,A[s+32>>2]=I,A[s+36>>2]=a,A[s+24>>2]=1595750129,A[s+28>>2]=-1521486534,A[s+16>>2]=-23791573,A[s+20>>2]=1013904242,A[s+8>>2]=-2067093701,A[s+12>>2]=-1150833019,A[s>>2]=-222443256^(g<<8|p),A[s+4>>2]=g>>>24^1779033703,$0((I=s+384|0)+g|0,0,128-g|0),P0(I,o,g),P0(s+96|0,I,128),A[s+352>>2]=128,y0(I,128),g=128}else a?(h=725511199^(i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24),n=-1694144372^(i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24),o=1359893119^(i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24),g=-1377402159^(i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24)):(h=725511199,n=-1694144372,o=1359893119,g=-1377402159),_?(B=327033209^(i[_+8|0]|i[_+9|0]<<8|i[_+10|0]<<16|i[_+11|0]<<24),Q=1541459225^(i[_+12|0]|i[_+13|0]<<8|i[_+14|0]<<16|i[_+15|0]<<24),a=528734635^(i[_+4|0]|i[_+5|0]<<8|i[_+6|0]<<16|i[_+7|0]<<24),I=-79577749^(i[0|_]|i[_+1|0]<<8|i[_+2|0]<<16|i[_+3|0]<<24)):(B=327033209,Q=1541459225,a=528734635,I=-79577749),$0(s- -64|0,0,293),A[s+56>>2]=B,A[s+60>>2]=Q,A[s+48>>2]=I,A[s+52>>2]=a,A[s+40>>2]=h,A[s+44>>2]=n,A[s+32>>2]=g,A[s+36>>2]=o,A[s+24>>2]=1595750129,A[s+28>>2]=-1521486534,A[s+16>>2]=-23791573,A[s+20>>2]=1013904242,A[s+8>>2]=-2067093701,A[s+12>>2]=-1150833019,A[s>>2]=-222443256^p,A[s+4>>2]=1779033703,g=0;C:if(t|r)for(_=s+224|0,a=s+96|0;;){if(I=g+a|0,!r&t>>>0<=(o=256-g|0)>>>0){P0(I,e,t),A[s+352>>2]=t+A[s+352>>2];break C}if(P0(I,e,o),A[s+352>>2]=o+A[s+352>>2],h=g=A[s+68>>2],g=(n=(I=A[s+64>>2])+128|0)>>>0<128?g+1|0:g,A[s+64>>2]=n,A[s+68>>2]=g,g=A[s+76>>2],g=(h=I=(0|h)==-1&I>>>0>4294967167)>>>0>(I=I+A[s+72>>2]|0)>>>0?g+1|0:g,A[s+72>>2]=I,A[s+76>>2]=g,cg(s,a),P0(a,_,128),g=A[s+352>>2]-128|0,A[s+352>>2]=g,e=e+o|0,!((r=r-(t>>>0>>0)|0)|(t=t-o|0)))break}_C(s,C,p),W=v;break A}h2(),Q0()}C=0}return C}function Be(C,g,e,t,r,o,I){var a,_,s=0,h=0,n=0;if(W=a=W+-64|0,_=r1(32)){A[a+36>>2]=0,A[a+40>>2]=0,A[a+28>>2]=0,A[a+32>>2]=0,A[a+24>>2]=16,A[a+20>>2]=r,A[a+16>>2]=t,A[a+12>>2]=e,A[a+8>>2]=32,A[a+4>>2]=_,A[a+60>>2]=0,A[a+56>>2]=1,A[a+52>>2]=1,A[a+48>>2]=g,A[a+44>>2]=C;A:if(C=Jg(a+4|0,I))y0(_,32);else{if(o){s=a+4|0,W=r=W-32|0,C=-31;g:{C:{e:switch(I-1|0){case 1:C=i[1434]|i[1435]<<8|i[1436]<<16|i[1437]<<24,g=i[1430]|i[1431]<<8|i[1432]<<16|i[1433]<<24,c[0|o]=g,c[o+1|0]=g>>>8,c[o+2|0]=g>>>16,c[o+3|0]=g>>>24,c[o+4|0]=C,c[o+5|0]=C>>>8,c[o+6|0]=C>>>16,c[o+7|0]=C>>>24,C=i[1439]|i[1440]<<8|i[1441]<<16|i[1442]<<24,g=i[1435]|i[1436]<<8|i[1437]<<16|i[1438]<<24,c[o+5|0]=g,c[o+6|0]=g>>>8,c[o+7|0]=g>>>16,c[o+8|0]=g>>>24,c[o+9|0]=C,c[o+10|0]=C>>>8,c[o+11|0]=C>>>16,c[o+12|0]=C>>>24,e=-12,g=12;break C;case 0:break e;default:break g}C=i[1422]|i[1423]<<8|i[1424]<<16|i[1425]<<24,g=i[1418]|i[1419]<<8|i[1420]<<16|i[1421]<<24,c[0|o]=g,c[o+1|0]=g>>>8,c[o+2|0]=g>>>16,c[o+3|0]=g>>>24,c[o+4|0]=C,c[o+5|0]=C>>>8,c[o+6|0]=C>>>16,c[o+7|0]=C>>>24,C=i[1426]|i[1427]<<8|i[1428]<<16|i[1429]<<24,c[o+8|0]=C,c[o+9|0]=C>>>8,c[o+10|0]=C>>>16,c[o+11|0]=C>>>24,e=-11,g=11}if(!(C=n0(s)))if(c[r+13|0]=0,c[r+11|0]=49,c[r+12|0]=57,(e=e+128|0)>>>0<=(C=p1(r+11|0))>>>0)C=-31;else if(g=P0(g+o|0,r+11|0,C+1|0),(h=e-C|0)>>>0<4)C=-31;else{for(c[0|(I=C+g|0)]=36,c[I+1|0]=109,c[I+2|0]=61,c[I+3|0]=0,C=A[s+44>>2],g=10;e=g,t=(C>>>0)/10|0,c[0|(n=(g=g-1|0)+(r+22|0)|0)]=C-M0(t,10)|48,!(C>>>0<10)&&(C=t,g););if(P0(C=r+11|0,n,g=11-e|0),c[C+g|0]=0,(g=h-3|0)>>>0<=(C=p1(C))>>>0)C=-31;else if(e=P0(I+3|0,r+11|0,C+1|0),(h=g-C|0)>>>0<4)C=-31;else{for(c[0|(I=C+e|0)]=44,c[I+1|0]=116,c[I+2|0]=61,c[I+3|0]=0,C=A[s+40>>2],g=10;e=g,t=(C>>>0)/10|0,c[0|(n=(g=g-1|0)+(r+22|0)|0)]=C-M0(t,10)|48,!(C>>>0<10)&&(C=t,g););if(P0(C=r+11|0,n,g=11-e|0),c[C+g|0]=0,(g=h-3|0)>>>0<=(C=p1(C))>>>0)C=-31;else if(e=P0(I+3|0,r+11|0,C+1|0),(h=g-C|0)>>>0<4)C=-31;else{for(c[0|(I=C+e|0)]=44,c[I+1|0]=112,c[I+2|0]=61,c[I+3|0]=0,C=A[s+48>>2],g=10;e=g,t=(C>>>0)/10|0,c[0|(n=(g=g-1|0)+(r+22|0)|0)]=C-M0(t,10)|48,!(C>>>0<10)&&(C=t,g););P0(C=r+11|0,n,g=11-e|0),c[C+g|0]=0,(g=h-3|0)>>>0<=(C=p1(C))>>>0?C=-31:(e=P0(I+3|0,r+11|0,C+1|0),(t=g-C|0)>>>0<2?C=-31:(c[0|(C=C+e|0)]=36,c[C+1|0]=0,DC(g=C+1|0,e=t-1|0,A[s+16>>2],A[s+20>>2],3)?(C=-31,(t=(t=e)-(e=p1(g))|0)>>>0<2||(c[0|(C=g+e|0)]=36,c[C+1|0]=0,C=DC(C+1|0,t-1|0,A[s>>2],A[s+4>>2],3)?0:-31)):C=-31))}}}}if(W=r+32|0,C){y0(_,32),y0(o,128),C=-31;break A}}y0(_,32),C=0}M2(_)}else C=-22;return W=a- -64|0,C}function ye(C,g){var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0;e=C+g|0;A:{g:if(!(1&(t=A[C+4>>2]))){if(!(2&t))break A;g=(t=A[C>>2])+g|0;C:{e:{t:{if((0|(C=C-t|0))!=A[9410]){if(r=A[C+12>>2],t>>>0<=255){if((0|(o=A[C+8>>2]))!=(0|r))break t;_=37620,s=A[9405]&pA(-2,t>>>3|0),A[_>>2]=s;break g}if(I=A[C+24>>2],(0|C)!=(0|r)){t=A[C+8>>2],A[t+12>>2]=r,A[r+8>>2]=t;break C}if(o=A[C+20>>2])t=C+20|0;else{if(!(o=A[C+16>>2]))break e;t=C+16|0}for(;a=t,t=(r=o)+20|0,(o=A[r+20>>2])||(t=r+16|0,o=A[r+16>>2]););A[a>>2]=0;break C}if(3&~(t=A[e+4>>2]))break g;return A[9407]=g,A[e+4>>2]=-2&t,A[C+4>>2]=1|g,void(A[e>>2]=g)}A[o+12>>2]=r,A[r+8>>2]=o;break g}r=0}if(I){t=A[C+28>>2];C:{if(A[(o=37924+(t<<2)|0)>>2]==(0|C)){if(A[o>>2]=r,r)break C;_=37624,s=A[9406]&pA(-2,t),A[_>>2]=s;break g}if(A[I+(A[I+16>>2]==(0|C)?16:20)>>2]=r,!r)break g}A[r+24>>2]=I,(t=A[C+16>>2])&&(A[r+16>>2]=t,A[t+24>>2]=r),(t=A[C+20>>2])&&(A[r+20>>2]=t,A[t+24>>2]=r)}}g:{C:{e:{t:{if(!(2&(t=A[e+4>>2]))){if(A[9411]==(0|e)){if(A[9411]=C,g=A[9408]+g|0,A[9408]=g,A[C+4>>2]=1|g,A[9410]!=(0|C))break A;return A[9407]=0,void(A[9410]=0)}if(A[9410]==(0|e))return A[9410]=C,g=A[9407]+g|0,A[9407]=g,A[C+4>>2]=1|g,void(A[C+g>>2]=g);if(g=(-8&t)+g|0,r=A[e+12>>2],t>>>0<=255){if((0|(o=A[e+8>>2]))==(0|r)){_=37620,s=A[9405]&pA(-2,t>>>3|0),A[_>>2]=s;break C}A[o+12>>2]=r,A[r+8>>2]=o;break C}if(I=A[e+24>>2],(0|r)!=(0|e)){t=A[e+8>>2],A[t+12>>2]=r,A[r+8>>2]=t;break e}if(o=A[e+20>>2])t=e+20|0;else{if(!(o=A[e+16>>2]))break t;t=e+16|0}for(;a=t,t=(r=o)+20|0,(o=A[r+20>>2])||(t=r+16|0,o=A[r+16>>2]););A[a>>2]=0;break e}A[e+4>>2]=-2&t,A[C+4>>2]=1|g,A[C+g>>2]=g;break g}r=0}if(I){t=A[e+28>>2];e:{if(A[(o=37924+(t<<2)|0)>>2]==(0|e)){if(A[o>>2]=r,r)break e;_=37624,s=A[9406]&pA(-2,t),A[_>>2]=s;break C}if(A[I+(A[I+16>>2]==(0|e)?16:20)>>2]=r,!r)break C}A[r+24>>2]=I,(t=A[e+16>>2])&&(A[r+16>>2]=t,A[t+24>>2]=r),(t=A[e+20>>2])&&(A[r+20>>2]=t,A[t+24>>2]=r)}}if(A[C+4>>2]=1|g,A[C+g>>2]=g,A[9410]==(0|C))return void(A[9407]=g)}if(g>>>0<=255)return t=37660+(-8&g)|0,(r=A[9405])&(g=1<<(g>>>3))?g=A[t+8>>2]:(A[9405]=g|r,g=t),A[t+8>>2]=C,A[g+12>>2]=C,A[C+12>>2]=t,void(A[C+8>>2]=g);r=31,g>>>0<=16777215&&(r=62+((g>>>38-(t=A1(g>>>8|0))&1)-(t<<1)|0)|0),A[C+28>>2]=r,A[C+16>>2]=0,A[C+20>>2]=0,t=37924+(r<<2)|0;g:{if((o=A[9406])&(a=1<>>1|0):0),t=A[t>>2];;){if(o=t,(-8&A[t+4>>2])==(0|g))break g;if(t=r>>>29|0,r<<=1,!(t=A[16+(a=o+(4&t)|0)>>2]))break}A[a+16>>2]=C,A[C+24>>2]=o}else A[9406]=o|a,A[t>>2]=C,A[C+24>>2]=t;return A[C+12>>2]=C,void(A[C+8>>2]=C)}g=A[o+8>>2],A[g+12>>2]=C,A[o+8>>2]=C,A[C+24>>2]=0,A[C+12>>2]=o,A[C+8>>2]=g}}function gg(C,g){var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0;return W=e=W-512|0,t=-1,o=i[g+31|0],r=i[0|g],1&(((255&(127&~o|~(i[g+1|0]&i[g+2|0]&i[g+3|0]&i[g+4|0]&i[g+5|0]&i[g+6|0]&i[g+7|0]&i[g+8|0]&i[g+9|0]&i[g+10|0]&i[g+11|0]&i[g+12|0]&i[g+13|0]&i[g+14|0]&i[g+15|0]&i[g+16|0]&i[g+17|0]&i[g+18|0]&i[g+19|0]&i[g+20|0]&i[g+21|0]&i[g+22|0]&i[g+23|0]&i[g+24|0]&i[g+25|0]&i[g+26|0]&i[g+27|0]&i[g+28|0]&i[g+29|0]&i[g+30|0])))-1&236-r)>>>8|r|o>>>7)||(z1(o=e+336|0,g),gA(e+288|0,o),g=A[e+324>>2],A[e+276>>2]=0-g,t=A[e+320>>2],A[e+272>>2]=0-t,r=A[e+316>>2],A[e+268>>2]=0-r,I=A[e+312>>2],A[e+264>>2]=0-I,a=A[e+308>>2],A[e+260>>2]=0-a,_=A[e+304>>2],A[e+256>>2]=0-_,s=A[e+300>>2],A[e+252>>2]=0-s,h=A[e+296>>2],A[e+248>>2]=0-h,n=A[e+292>>2],A[e+244>>2]=0-n,B=A[e+288>>2],A[e+240>>2]=1-B,gA(Q=e+144|0,v=e+240|0),A[e+228>>2]=g,A[e+224>>2]=t,A[e+220>>2]=r,A[e+216>>2]=I,A[e+212>>2]=a,A[e+208>>2]=_,A[e+204>>2]=s,A[e+200>>2]=h,A[e+196>>2]=n,A[e+192>>2]=B+1,gA(t=e+96|0,I=e+192|0),kA(g=e+48|0,1584,Q),r=A[e+96>>2],a=A[e+48>>2],_=A[e+100>>2],s=A[e+52>>2],h=A[e+104>>2],n=A[e+56>>2],B=A[e+108>>2],Q=A[e+60>>2],p=A[e+112>>2],l=A[e+64>>2],D=A[e+116>>2],b=A[e+68>>2],M=A[e+120>>2],x=A[e+72>>2],q=A[e+124>>2],V=A[e+76>>2],$=A[e+128>>2],K=A[e+80>>2],A[e+84>>2]=0-(A[e+84>>2]+A[e+132>>2]|0),A[e+80>>2]=0-($+K|0),A[e+76>>2]=0-(q+V|0),A[e+72>>2]=0-(M+x|0),A[e+68>>2]=0-(D+b|0),A[e+64>>2]=0-(p+l|0),A[e+60>>2]=0-(B+Q|0),A[e+56>>2]=0-(h+n|0),A[e+52>>2]=0-(_+s|0),A[e+48>>2]=0-(r+a|0),kA(e,g,t),A[e+404>>2]=0,A[e+408>>2]=0,A[e+412>>2]=0,A[e+416>>2]=0,A[e+420>>2]=0,A[e+388>>2]=0,A[e+392>>2]=0,A[e+384>>2]=1,A[e+396>>2]=0,A[e+400>>2]=0,l=QC(r=e+432|0,e+384|0,e),kA(C,r,I),kA(t=C+40|0,r,C),kA(t,t,g),kA(C,C,o),o=A[C+36>>2]<<1,A[C+36>>2]=o,r=A[C+32>>2]<<1,A[C+32>>2]=r,I=A[C+28>>2]<<1,A[C+28>>2]=I,a=A[C+24>>2]<<1,A[C+24>>2]=a,_=A[C+20>>2]<<1,A[C+20>>2]=_,s=A[C+16>>2]<<1,A[C+16>>2]=s,h=A[C+12>>2]<<1,A[C+12>>2]=h,n=A[C+8>>2]<<1,A[C+8>>2]=n,B=A[C+4>>2]<<1,A[C+4>>2]=B,Q=A[C>>2]<<1,A[C>>2]=Q,w2(p=e+480|0,C),g=0-(1&c[e+480|0])|0,A[C+36>>2]=o^g&(o^0-o),A[C+32>>2]=r^g&(r^0-r),A[C+28>>2]=I^g&(I^0-I),A[C+24>>2]=a^g&(a^0-a),A[C+20>>2]=_^g&(_^0-_),A[C+16>>2]=s^g&(s^0-s),A[C+12>>2]=h^g&(h^0-h),A[C+8>>2]=n^g&(n^0-n),A[C+4>>2]=B^g&(B^0-B),A[C>>2]=Q^g&(Q^0-Q),kA(t,v,t),A[C+84>>2]=0,A[C+88>>2]=0,A[C+80>>2]=1,A[C+92>>2]=0,A[C+96>>2]=0,A[C+100>>2]=0,A[C+104>>2]=0,A[C+108>>2]=0,A[C+112>>2]=0,A[C+116>>2]=0,kA(g=C+120|0,C,t),w2(p,g),C=i[e+480|0],w2(p,t),t=0-(X0(p,32)|1-l|1&C)|0),W=e+512|0,t}function sC(C,g,e,t){var r,o=0,I=0;r=o=W,W=o=o-576&-64,A[o+188>>2]=g;A:if(g>>>0<=64){if((0|sg(I=o+192|0,0,0,g))<0)break A;(0|q2(I,o+188|0,4,0))<0,(0|q2(I,e,t,0))<0,lC(I,C,g)}else if(!((0|sg(I=o+192|0,0,0,64))<0||(0|q2(I,o+188|0,4,0))<0||(0|q2(I,e,t,0))<0||(0|lC(I,o+112|0,64))<0)){if(e=A[o+116>>2],t=A[o+112>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=e,c[C+5|0]=e>>>8,c[C+6|0]=e>>>16,c[C+7|0]=e>>>24,e=A[o+124>>2],t=A[o+120>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=e,c[C+13|0]=e>>>8,c[C+14|0]=e>>>16,c[C+15|0]=e>>>24,e=A[o+140>>2],t=A[o+136>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=e,c[C+29|0]=e>>>8,c[C+30|0]=e>>>16,c[C+31|0]=e>>>24,e=A[o+132>>2],t=A[o+128>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=e,c[C+21|0]=e>>>8,c[C+22|0]=e>>>16,c[C+23|0]=e>>>24,C=C+32|0,(g=g-32|0)>>>0>=65)for(;;){if(e=A[o+172>>2],A[o+104>>2]=A[o+168>>2],A[o+108>>2]=e,e=A[o+164>>2],A[o+96>>2]=A[o+160>>2],A[o+100>>2]=e,e=A[o+156>>2],A[o+88>>2]=A[o+152>>2],A[o+92>>2]=e,e=A[o+148>>2],A[o+80>>2]=A[o+144>>2],A[o+84>>2]=e,e=A[o+140>>2],A[o+72>>2]=A[o+136>>2],A[o+76>>2]=e,t=A[o+132>>2],A[(e=o- -64|0)>>2]=A[o+128>>2],A[e+4>>2]=t,e=A[o+124>>2],A[o+56>>2]=A[o+120>>2],A[o+60>>2]=e,e=A[o+116>>2],A[o+48>>2]=A[o+112>>2],A[o+52>>2]=e,(0|EC(o+112|0,64,o+48|0,64,0,0,0))<0)break A;if(e=A[o+116>>2],t=A[o+112>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=e,c[C+5|0]=e>>>8,c[C+6|0]=e>>>16,c[C+7|0]=e>>>24,e=A[o+124>>2],t=A[o+120>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=e,c[C+13|0]=e>>>8,c[C+14|0]=e>>>16,c[C+15|0]=e>>>24,e=A[o+140>>2],t=A[o+136>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=e,c[C+29|0]=e>>>8,c[C+30|0]=e>>>16,c[C+31|0]=e>>>24,e=A[o+132>>2],t=A[o+128>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=e,c[C+21|0]=e>>>8,c[C+22|0]=e>>>16,c[C+23|0]=e>>>24,C=C+32|0,!((g=g-32|0)>>>0>64))break}e=A[o+172>>2],A[o+104>>2]=A[o+168>>2],A[o+108>>2]=e,e=A[o+164>>2],A[o+96>>2]=A[o+160>>2],A[o+100>>2]=e,e=A[o+156>>2],A[o+88>>2]=A[o+152>>2],A[o+92>>2]=e,e=A[o+148>>2],A[o+80>>2]=A[o+144>>2],A[o+84>>2]=e,e=A[o+140>>2],A[o+72>>2]=A[o+136>>2],A[o+76>>2]=e,t=A[o+132>>2],A[(e=o- -64|0)>>2]=A[o+128>>2],A[e+4>>2]=t,e=A[o+124>>2],A[o+56>>2]=A[o+120>>2],A[o+60>>2]=e,e=A[o+116>>2],A[o+48>>2]=A[o+112>>2],A[o+52>>2]=e,(0|EC(e=o+112|0,g,o+48|0,64,0,0,0))<0||P0(C,e,g)}y0(o+192|0,384),W=r}function he(C,g,e,t,r,o,I,a,_,s,h){var n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0;if(n=w(_,0,a,0),!(l=y)&n>>>0>=1073741824|l||(0|I)==1|I>>>0>1)return A[9404]=22,-1;if(n=I,!(!(o&(l=o-1|0)|I&(n=(0|l)!=-1?n+1|0:n))&(!I&o>>>0>=2|!!(0|I)))||!_||!a)return A[9404]=28,-1;if(!(33554431/(_>>>0)>>>0>>0|a>>>0>16777215)&&!I&33554431/(a>>>0)>>>0>=o>>>0&&!((q=M0(x=a<<7,_))>>>0>(n=(v=M0(o,x))+q|0)>>>0||(B=n)>>>0>(n=((D=a<<8)+n|0)- -64|0)>>>0)){A:{if(n>>>0>O2[C+8>>2]&&(p=-1,Ye(C),W=l=W-16|0,B=m(l+12|0,n),A[9404]=B,B=B?0:A[l+12>>2],A[C+4>>2]=B,A[C>>2]=B,A[C+8>>2]=B?n:0,W=l+16|0,!B))break A;for(NA(g,e,t,r,$=A[C+4>>2],q),z=((v=(B=(V=q+$|0)+v|0)+(a<<7)|0)+x|0)-64|0,r=o-1|0,M=a<<5,K=B+D|0,_A=(B+x|0)-64|0;;){for(D=M0(x,J)+$|0,p=0;t=(C=p<<2)+D|0,A[C+B>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,n=(t=4|C)+B|0,t=t+D|0,A[n>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,n=(t=8|C)+B|0,t=t+D|0,A[n>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,t=(C|=12)+B|0,C=C+D|0,A[t>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,l=0,n=0,(0|M)!=(0|(p=p+4|0)););for(t=0,C=0;P0(V+(M0(t,M)<<2)|0,B,x),Pg(B,v,K,a),P0(V+(M0(M,1|t)<<2)|0,v,x),Pg(v,B,K,a),(0|I)==(0|(C=(t=t+2|0)>>>0<2?C+1|0:C))&t>>>0>>0|C>>>0>>0;);for(;;){for(C=V+(M0(M,r&A[_A>>2])<<2)|0,p=0;A[(Q=(t=p<<2)+B|0)>>2]=A[Q>>2]^A[C+t>>2],A[(b=(Q=4|t)+B|0)>>2]=A[b>>2]^A[C+Q>>2],A[(b=(Q=8|t)+B|0)>>2]=A[b>>2]^A[C+Q>>2],A[(Q=(t|=12)+B|0)>>2]=A[Q>>2]^A[C+t>>2],(0|M)!=(0|(p=p+4|0)););for(Pg(B,v,K,a),C=V+(M0(M,r&A[z>>2])<<2)|0,p=0;A[(Q=(t=p<<2)+v|0)>>2]=A[Q>>2]^A[C+t>>2],A[(b=(Q=4|t)+v|0)>>2]=A[b>>2]^A[C+Q>>2],A[(b=(Q=8|t)+v|0)>>2]=A[b>>2]^A[C+Q>>2],A[(Q=(t|=12)+v|0)>>2]=A[Q>>2]^A[C+t>>2],(0|M)!=(0|(p=p+4|0)););if(Pg(v,B,K,a),p=0,!((0|I)==(0|(n=(l=l+2|0)>>>0<2?n+1|0:n))&o>>>0>l>>>0|I>>>0>n>>>0))break}for(;t=(C=p<<2)+D|0,n=A[C+B>>2],c[0|t]=n,c[t+1|0]=n>>>8,c[t+2|0]=n>>>16,c[t+3|0]=n>>>24,t=(n=4|C)+D|0,n=A[n+B>>2],c[0|t]=n,c[t+1|0]=n>>>8,c[t+2|0]=n>>>16,c[t+3|0]=n>>>24,t=(n=8|C)+D|0,n=A[n+B>>2],c[0|t]=n,c[t+1|0]=n>>>8,c[t+2|0]=n>>>16,c[t+3|0]=n>>>24,C=(t=12|C)+D|0,t=A[t+B>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,(0|M)!=(0|(p=p+4|0)););if((0|(J=J+1|0))==(0|_))break}NA(g,e,$,q,s,h),p=0}return p}return A[9404]=48,-1}function Qe(C,g,e){C|=0,g|=0,e|=0;var t,r,o,I=0;W=t=W-192|0,A[t+96>>2]=0,A[t+100>>2]=0,A[t+104>>2]=0,A[t+108>>2]=0,A[t+112>>2]=0,A[t+116>>2]=0,A[t+120>>2]=0,A[t+124>>2]=0,I=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[t+80>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[t+84>>2]=I,I=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[t+88>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[t+92>>2]=I,r=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,o=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,I=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[t+40>>2]=0,A[t+44>>2]=0,A[t+48>>2]=0,A[t+52>>2]=0,A[t+56>>2]=0,A[t+60>>2]=0,A[t+64>>2]=I,A[t+68>>2]=g,A[t+72>>2]=r,A[t+76>>2]=o,A[t+32>>2]=0,A[t+36>>2]=0,g=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,A[t+16>>2]=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,A[t+20>>2]=g,g=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,A[t+24>>2]=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,A[t+28>>2]=g,g=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,A[t>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,A[t+4>>2]=g,g=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,A[t+8>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,A[t+12>>2]=g,yr(t- -64|0,t),e=A[t+124>>2],A[t+184>>2]=A[t+120>>2],A[t+188>>2]=e,g=A[t+116>>2],A[t+176>>2]=A[t+112>>2],A[t+180>>2]=g,g=A[t+108>>2],A[t+168>>2]=A[t+104>>2],A[t+172>>2]=g,g=A[t+100>>2],A[t+160>>2]=A[t+96>>2],A[t+164>>2]=g,g=A[t+92>>2],A[t+152>>2]=A[t+88>>2],A[t+156>>2]=g,g=A[t+84>>2],A[t+144>>2]=A[t+80>>2],A[t+148>>2]=g,g=A[t+76>>2],A[t+136>>2]=A[t+72>>2],A[t+140>>2]=g,g=A[t+68>>2],A[t+128>>2]=A[t+64>>2],A[t+132>>2]=g,d1(g=t+128|0),I=A[t+156>>2],e=A[t+152>>2],c[C+24|0]=e,c[C+25|0]=e>>>8,c[C+26|0]=e>>>16,c[C+27|0]=e>>>24,c[C+28|0]=I,c[C+29|0]=I>>>8,c[C+30|0]=I>>>16,c[C+31|0]=I>>>24,I=A[t+148>>2],e=A[t+144>>2],c[C+16|0]=e,c[C+17|0]=e>>>8,c[C+18|0]=e>>>16,c[C+19|0]=e>>>24,c[C+20|0]=I,c[C+21|0]=I>>>8,c[C+22|0]=I>>>16,c[C+23|0]=I>>>24,I=A[t+140>>2],e=A[t+136>>2],c[C+8|0]=e,c[C+9|0]=e>>>8,c[C+10|0]=e>>>16,c[C+11|0]=e>>>24,c[C+12|0]=I,c[C+13|0]=I>>>8,c[C+14|0]=I>>>16,c[C+15|0]=I>>>24,I=A[t+132>>2],e=A[t+128>>2],c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,c[C+4|0]=I,c[C+5|0]=I>>>8,c[C+6|0]=I>>>16,c[C+7|0]=I>>>24,y0(g,64),W=t+192|0}function Pg(C,g,e,t){var r=0,o=0,I=0,a=0,_=0;if(o=A[4+(r=((t<<7)+C|0)-64|0)>>2],A[e>>2]=A[r>>2],A[e+4>>2]=o,o=A[r+60>>2],A[e+56>>2]=A[r+56>>2],A[e+60>>2]=o,o=A[r+52>>2],A[e+48>>2]=A[r+48>>2],A[e+52>>2]=o,o=A[r+44>>2],A[e+40>>2]=A[r+40>>2],A[e+44>>2]=o,o=A[r+36>>2],A[e+32>>2]=A[r+32>>2],A[e+36>>2]=o,o=A[r+28>>2],A[e+24>>2]=A[r+24>>2],A[e+28>>2]=o,o=A[r+20>>2],A[e+16>>2]=A[r+16>>2],A[e+20>>2]=o,o=A[r+12>>2],A[e+8>>2]=A[r+8>>2],A[e+12>>2]=o,t)for(o=t<<1,_=t<<6;t=(a<<6)+C|0,A[e>>2]=A[e>>2]^A[t>>2],A[e+4>>2]=A[e+4>>2]^A[t+4>>2],A[e+8>>2]=A[e+8>>2]^A[t+8>>2],A[e+12>>2]=A[e+12>>2]^A[t+12>>2],A[e+16>>2]=A[e+16>>2]^A[t+16>>2],A[e+20>>2]=A[e+20>>2]^A[t+20>>2],A[e+24>>2]=A[e+24>>2]^A[t+24>>2],A[e+28>>2]=A[e+28>>2]^A[t+28>>2],A[e+32>>2]=A[e+32>>2]^A[t+32>>2],A[e+36>>2]=A[e+36>>2]^A[t+36>>2],A[e+40>>2]=A[e+40>>2]^A[t+40>>2],A[e+44>>2]=A[e+44>>2]^A[t+44>>2],A[e+48>>2]=A[e+48>>2]^A[t+48>>2],A[e+52>>2]=A[e+52>>2]^A[t+52>>2],A[e+56>>2]=A[e+56>>2]^A[t+56>>2],A[e+60>>2]=A[e+60>>2]^A[t+60>>2],Se(e),I=A[e+60>>2],A[56+(r=(a<<5)+g|0)>>2]=A[e+56>>2],A[r+60>>2]=I,I=A[e+52>>2],A[r+48>>2]=A[e+48>>2],A[r+52>>2]=I,I=A[e+44>>2],A[r+40>>2]=A[e+40>>2],A[r+44>>2]=I,I=A[e+36>>2],A[r+32>>2]=A[e+32>>2],A[r+36>>2]=I,I=A[e+28>>2],A[r+24>>2]=A[e+24>>2],A[r+28>>2]=I,I=A[e+20>>2],A[r+16>>2]=A[e+16>>2],A[r+20>>2]=I,I=A[e+12>>2],A[r+8>>2]=A[e+8>>2],A[r+12>>2]=I,I=A[e+4>>2],A[r>>2]=A[e>>2],A[r+4>>2]=I,A[e>>2]=A[e>>2]^A[t- -64>>2],A[e+4>>2]=A[e+4>>2]^A[t+68>>2],A[e+8>>2]=A[e+8>>2]^A[t+72>>2],A[e+12>>2]=A[e+12>>2]^A[t+76>>2],A[e+16>>2]=A[e+16>>2]^A[t+80>>2],A[e+20>>2]=A[e+20>>2]^A[t+84>>2],A[e+24>>2]=A[e+24>>2]^A[t+88>>2],A[e+28>>2]=A[e+28>>2]^A[t+92>>2],A[e+32>>2]=A[e+32>>2]^A[t+96>>2],A[e+36>>2]=A[e+36>>2]^A[t+100>>2],A[e+40>>2]=A[e+40>>2]^A[t+104>>2],A[e+44>>2]=A[e+44>>2]^A[t+108>>2],A[e+48>>2]=A[e+48>>2]^A[t+112>>2],A[e+52>>2]=A[e+52>>2]^A[t+116>>2],A[e+56>>2]=A[e+56>>2]^A[t+120>>2],A[e+60>>2]=A[e+60>>2]^A[t+124>>2],Se(e),t=r+_|0,r=A[e+60>>2],A[t+56>>2]=A[e+56>>2],A[t+60>>2]=r,r=A[e+52>>2],A[t+48>>2]=A[e+48>>2],A[t+52>>2]=r,r=A[e+44>>2],A[t+40>>2]=A[e+40>>2],A[t+44>>2]=r,r=A[e+36>>2],A[t+32>>2]=A[e+32>>2],A[t+36>>2]=r,r=A[e+28>>2],A[t+24>>2]=A[e+24>>2],A[t+28>>2]=r,r=A[e+20>>2],A[t+16>>2]=A[e+16>>2],A[t+20>>2]=r,r=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=r,r=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=r,o>>>0>(a=a+2|0)>>>0;);}function BC(C,g,e,t){var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0;if(p=A[C+36>>2],B=A[C+32>>2],Q=A[C+28>>2],h=A[C+24>>2],n=A[C+20>>2],!t&e>>>0>=16|t)for(K=!i[C+80|0]<<24,v=A[C+4>>2],J=M0(v,5),b=A[C+8>>2],V=M0(b,5),x=A[C+12>>2],q=M0(x,5),$=A[C+16>>2],M=M0($,5),D=A[C>>2];r=w(I=((i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108863)+h|0,0,x,0),_=y,n=(a=w(h=(67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))+n|0,0,$,0))+r|0,r=y+_|0,r=a>>>0>n>>>0?r+1|0:r,_=w(Q=((i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67108863)+Q|0,0,b,0),r=y+r|0,r=_>>>0>(n=_+n|0)>>>0?r+1|0:r,_=w(B=((i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6|0)+B|0,0,v,0),r=y+r|0,r=_>>>0>(n=_+n|0)>>>0?r+1|0:r,_=w(p=p+K+((i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)>>>8)|0,0,D,0),r=y+r|0,z=n=_+n|0,n=_>>>0>n>>>0?r+1|0:r,r=w(I,0,b,0),_=y,a=w(h,0,x,0),o=y+_|0,o=(r=a+r|0)>>>0>>0?o+1|0:o,_=(a=w(Q,0,v,0))+r|0,r=y+o|0,r=a>>>0>_>>>0?r+1|0:r,a=w(B,0,D,0),r=y+r|0,r=a>>>0>(_=a+_|0)>>>0?r+1|0:r,a=w(p,0,M,0),r=y+r|0,_A=_=a+_|0,_=a>>>0>_>>>0?r+1|0:r,r=w(I,0,v,0),s=y,a=(o=w(h,0,b,0))+r|0,r=y+s|0,r=o>>>0>a>>>0?r+1|0:r,s=w(Q,0,D,0),o=y+r|0,o=(a=s+a|0)>>>0>>0?o+1|0:o,s=w(B,0,M,0),r=y+o|0,r=(a=s+a|0)>>>0>>0?r+1|0:r,s=w(p,0,q,0),r=y+r|0,sA=a=s+a|0,a=a>>>0>>0?r+1|0:r,r=w(I,0,D,0),o=y,s=(l=w(h,0,v,0))+r|0,r=y+o|0,r=s>>>0>>0?r+1|0:r,o=w(Q,0,M,0),r=y+r|0,r=o>>>0>(s=o+s|0)>>>0?r+1|0:r,l=w(B,0,q,0),o=y+r|0,o=(s=l+s|0)>>>0>>0?o+1|0:o,l=w(p,0,V,0),r=y+o|0,r=(s=l+s|0)>>>0>>0?r+1|0:r,l=s,s=r,r=w(I,0,M,0),o=y,I=(h=w(h,0,D,0))+r|0,r=y+o|0,r=I>>>0>>0?r+1|0:r,h=w(Q,0,q,0),r=y+r|0,r=(I=h+I|0)>>>0>>0?r+1|0:r,h=w(B,0,V,0),r=y+r|0,r=(I=h+I|0)>>>0>>0?r+1|0:r,h=w(p,0,J,0),o=y+r|0,o=(I=h+I|0)>>>0>>0?o+1|0:o,h=I,r=s,r=(I=(Q=(67108863&o)<<6|I>>>26)+l|0)>>>0>>0?r+1|0:r,Q=I,B=(67108863&r)<<6|I>>>26,r=a,r=(I=B+sA|0)>>>0>>0?r+1|0:r,B=I,o=_,p=r=(I=(67108863&r)<<6|I>>>26)+_A|0,_=(67108863&(o=r>>>0>>0?o+1|0:o))<<6|r>>>26,r=n,h=(67108863&Q)+((r=M0((67108863&((I=_+z|0)>>>0<_>>>0?r+1:r))<<6|I>>>26,5)+(67108863&h)|0)>>>26|0)|0,Q=67108863&B,B=67108863&p,p=67108863&I,n=67108863&r,g=g+16|0,!(t=t-(e>>>0<16)|0)&(e=e-16|0)>>>0>15|t;);A[C+20>>2]=n,A[C+36>>2]=p,A[C+32>>2]=B,A[C+28>>2]=Q,A[C+24>>2]=h}function sg(C,g,e,t){C|=0,g|=0;var r=0;return r=-1,(t|=0)-65>>>0<4294967232|(e|=0)>>>0>64||(e&&g?(W=r=W-128|0,!g|((t&=255)-65&255)>>>0<=191|((e&=255)-65&255)>>>0<=191?(h2(),Q0()):($0(C- -64|0,0,293),c[C+56|0]=121,c[C+57|0]=33,c[C+58|0]=126,c[C+59|0]=19,c[C+60|0]=25,c[C+61|0]=205,c[C+62|0]=224,c[C+63|0]=91,c[C+48|0]=107,c[C+49|0]=189,c[C+50|0]=65,c[C+51|0]=251,c[C+52|0]=171,c[C+53|0]=217,c[C+54|0]=131,c[C+55|0]=31,c[C+40|0]=31,c[C+41|0]=108,c[C+42|0]=62,c[C+43|0]=43,c[C+44|0]=140,c[C+45|0]=104,c[C+46|0]=5,c[C+47|0]=155,c[C+32|0]=209,c[C+33|0]=130,c[C+34|0]=230,c[C+35|0]=173,c[C+36|0]=127,c[C+37|0]=82,c[C+38|0]=14,c[C+39|0]=81,c[C+24|0]=241,c[C+25|0]=54,c[C+26|0]=29,c[C+27|0]=95,c[C+28|0]=58,c[C+29|0]=245,c[C+30|0]=79,c[C+31|0]=165,c[C+16|0]=43,c[C+17|0]=248,c[C+18|0]=148,c[C+19|0]=254,c[C+20|0]=114,c[C+21|0]=243,c[C+22|0]=110,c[C+23|0]=60,c[C+8|0]=59,c[C+9|0]=167,c[C+10|0]=202,c[C+11|0]=132,c[C+12|0]=133,c[C+13|0]=174,c[C+14|0]=103,c[C+15|0]=187,t=-222443256^(e<<8|t),c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,t=e>>>24^1779033703,c[C+4|0]=t,c[C+5|0]=t>>>8,c[C+6|0]=t>>>16,c[C+7|0]=t>>>24,e=P0($0(r,0,128),g,e),P0(C+96|0,e,128),g=128+(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)|0,c[C+352|0]=g,c[C+353|0]=g>>>8,c[C+354|0]=g>>>16,c[C+355|0]=g>>>24,y0(e,128),W=e+128|0)):(((g=255&t)-65&255)>>>0<=191&&(h2(),Q0()),$0(C- -64|0,0,293),c[C+56|0]=121,c[C+57|0]=33,c[C+58|0]=126,c[C+59|0]=19,c[C+60|0]=25,c[C+61|0]=205,c[C+62|0]=224,c[C+63|0]=91,c[C+48|0]=107,c[C+49|0]=189,c[C+50|0]=65,c[C+51|0]=251,c[C+52|0]=171,c[C+53|0]=217,c[C+54|0]=131,c[C+55|0]=31,c[C+40|0]=31,c[C+41|0]=108,c[C+42|0]=62,c[C+43|0]=43,c[C+44|0]=140,c[C+45|0]=104,c[C+46|0]=5,c[C+47|0]=155,c[C+32|0]=209,c[C+33|0]=130,c[C+34|0]=230,c[C+35|0]=173,c[C+36|0]=127,c[C+37|0]=82,c[C+38|0]=14,c[C+39|0]=81,c[C+24|0]=241,c[C+25|0]=54,c[C+26|0]=29,c[C+27|0]=95,c[C+28|0]=58,c[C+29|0]=245,c[C+30|0]=79,c[C+31|0]=165,c[C+16|0]=43,c[C+17|0]=248,c[C+18|0]=148,c[C+19|0]=254,c[C+20|0]=114,c[C+21|0]=243,c[C+22|0]=110,c[C+23|0]=60,c[C+8|0]=59,c[C+9|0]=167,c[C+10|0]=202,c[C+11|0]=132,c[C+12|0]=133,c[C+13|0]=174,c[C+14|0]=103,c[C+15|0]=187,g^=-222443256,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,c[C+4|0]=103,c[C+5|0]=230,c[C+6|0]=9,c[C+7|0]=106),r=0),0|r}function g1(C,g,e,t){C|=0,g|=0,e|=0;var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0;for((t|=0)?(o=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,I=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,r=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,h=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24):(o=2036477234,I=857760878,r=1634760805,h=1797285236),a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,B=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,_=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,Q=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,s=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,M=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,p=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,t=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,l=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,v=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,g=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,e=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24;n=e,e=pA((D=g)^(g=e+r|0),16),n=p=pA(n^(r=e+p|0),12),b=pA((D=g+p|0)^e,8),g=pA(n^(p=b+r|0),7),a=pA((e=t+h|0)^a,16),t=pA((Q=a+Q|0)^t,12),n=l,o=pA((h=o+l|0)^B,16),r=pA(n^(l=o+s|0),12),s=pA((s=o)^(o=r+h|0),8),e=pA(s^(h=(x=e+t|0)+g|0),16),B=pA((I=I+v|0)^_,16),v=pA((_=B+M|0)^v,12),n=g,g=pA((I=v+I|0)^B,8),n=pA(n^(_=(q=g+_|0)+e|0),12),B=pA(e^(h=n+h|0),8),e=pA((M=B+_|0)^n,7),a=pA(a^x,8),t=pA((Q=a+Q|0)^t,7),_=pA((o=t+o|0)^g,16),t=pA((g=_+p|0)^t,12),_=pA(_^(o=t+o|0),8),t=pA((p=g+_|0)^t,7),g=pA((s=s+l|0)^r,7),l=pA((I=g+I|0)^b,16),b=pA(g^(r=l+Q|0),12),g=pA(l^(I=b+I|0),8),l=pA((Q=r+g|0)^b,7),n=s,s=a,r=pA(v^q,7),s=pA(s^(a=r+D|0),16),D=pA(r^(v=n+s|0),12),a=pA(s^(r=D+a|0),8),v=pA((s=v+a|0)^D,7),(0|(V=V+1|0))!=10;);return c[0|C]=r,c[C+1|0]=r>>>8,c[C+2|0]=r>>>16,c[C+3|0]=r>>>24,c[C+28|0]=a,c[C+29|0]=a>>>8,c[C+30|0]=a>>>16,c[C+31|0]=a>>>24,c[C+24|0]=B,c[C+25|0]=B>>>8,c[C+26|0]=B>>>16,c[C+27|0]=B>>>24,c[C+20|0]=_,c[C+21|0]=_>>>8,c[C+22|0]=_>>>16,c[C+23|0]=_>>>24,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24,c[C+12|0]=h,c[C+13|0]=h>>>8,c[C+14|0]=h>>>16,c[C+15|0]=h>>>24,c[C+8|0]=o,c[C+9|0]=o>>>8,c[C+10|0]=o>>>16,c[C+11|0]=o>>>24,c[C+4|0]=I,c[C+5|0]=I>>>8,c[C+6|0]=I>>>16,c[C+7|0]=I>>>24,0}function b2(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0;p=A[g+4>>2],Q=A[g+44>>2],v=A[g+8>>2],D=A[g+48>>2],b=A[g+12>>2],M=A[g+52>>2],x=A[g+16>>2],q=A[g+56>>2],V=A[g+20>>2],$=A[g+60>>2],K=A[g+24>>2],J=A[(l=g- -64|0)>>2],z=A[g+28>>2],_A=A[g+68>>2],sA=A[g+32>>2],nA=A[g+72>>2],fA=A[g+36>>2],uA=A[g+76>>2],A[C>>2]=A[g>>2]+A[g+40>>2],A[C+36>>2]=fA+uA,A[C+32>>2]=sA+nA,A[C+28>>2]=z+_A,A[C+24>>2]=K+J,A[C+20>>2]=V+$,A[C+16>>2]=x+q,A[C+12>>2]=b+M,A[C+8>>2]=v+D,A[C+4>>2]=Q+p,Q=A[g+4>>2],v=A[g+44>>2],D=A[g+8>>2],b=A[g+48>>2],M=A[g+12>>2],x=A[g+52>>2],q=A[g+16>>2],V=A[g+56>>2],$=A[g+20>>2],K=A[g+60>>2],J=A[g+24>>2],l=A[l>>2],p=A[g+28>>2],z=A[g+68>>2],_A=A[g+32>>2],sA=A[g+72>>2],nA=A[g>>2],fA=A[g+40>>2],A[C+76>>2]=A[g+76>>2]-A[g+36>>2],A[C+72>>2]=sA-_A,A[C+68>>2]=z-p,A[(p=C- -64|0)>>2]=l-J,A[C+60>>2]=K-$,A[C+56>>2]=V-q,A[C+52>>2]=x-M,A[C+48>>2]=b-D,A[C+44>>2]=v-Q,A[C+40>>2]=fA-nA,kA(C+80|0,C,e),kA(Q=C+40|0,Q,e+40|0),kA(C+120|0,e+120|0,g+120|0),kA(C,g+80|0,e+80|0),fA=A[C+4>>2],uA=A[C+8>>2],o=A[C+12>>2],I=A[C+16>>2],a=A[C+20>>2],_=A[C+24>>2],s=A[C+28>>2],h=A[C+32>>2],n=A[C+36>>2],g=A[C+44>>2],e=A[C+84>>2],Q=A[C+48>>2],v=A[C+88>>2],D=A[C+52>>2],b=A[C+92>>2],M=A[C+56>>2],x=A[C+96>>2],q=A[C+60>>2],V=A[C+100>>2],$=A[p>>2],K=A[C+104>>2],l=A[C+68>>2],J=A[C+108>>2],z=A[C+72>>2],_A=A[C+112>>2],B=A[C>>2],sA=A[C+40>>2],nA=A[C+80>>2],t=A[C+76>>2],r=A[C+116>>2],A[C+76>>2]=t+r,A[C+72>>2]=z+_A,A[C+68>>2]=l+J,A[p>>2]=$+K,A[C+60>>2]=q+V,A[C+56>>2]=M+x,A[C+52>>2]=D+b,A[C+48>>2]=Q+v,A[C+44>>2]=g+e,A[C+40>>2]=sA+nA,A[C+36>>2]=r-t,A[C+32>>2]=_A-z,A[C+28>>2]=J-l,A[C+24>>2]=K-$,A[C+20>>2]=V-q,A[C+16>>2]=x-M,A[C+12>>2]=b-D,A[C+8>>2]=v-Q,A[C+4>>2]=e-g,A[C>>2]=nA-sA,g=n<<1,e=A[C+156>>2],A[C+156>>2]=g-e,p=h<<1,Q=A[C+152>>2],A[C+152>>2]=p-Q,v=s<<1,D=A[C+148>>2],A[C+148>>2]=v-D,b=_<<1,M=A[C+144>>2],A[C+144>>2]=b-M,x=a<<1,q=A[C+140>>2],A[C+140>>2]=x-q,V=I<<1,$=A[C+136>>2],A[C+136>>2]=V-$,K=o<<1,l=A[C+132>>2],A[C+132>>2]=K-l,J=uA<<1,z=A[C+128>>2],A[C+128>>2]=J-z,_A=fA<<1,sA=A[C+124>>2],A[C+124>>2]=_A-sA,nA=B<<1,fA=A[C+120>>2],A[C+120>>2]=nA-fA,A[C+112>>2]=Q+p,A[C+108>>2]=v+D,A[C+104>>2]=b+M,A[C+100>>2]=x+q,A[C+96>>2]=V+$,A[C+92>>2]=K+l,A[C+88>>2]=J+z,A[C+84>>2]=_A+sA,A[C+80>>2]=nA+fA,A[C+116>>2]=g+e}function qg(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0;p=A[g+4>>2],Q=A[g+44>>2],v=A[g+8>>2],D=A[g+48>>2],b=A[g+12>>2],M=A[g+52>>2],x=A[g+16>>2],q=A[g+56>>2],V=A[g+20>>2],$=A[g+60>>2],K=A[g+24>>2],J=A[(l=g- -64|0)>>2],z=A[g+28>>2],_A=A[g+68>>2],sA=A[g+32>>2],nA=A[g+72>>2],fA=A[g+36>>2],uA=A[g+76>>2],A[C>>2]=A[g>>2]+A[g+40>>2],A[C+36>>2]=fA+uA,A[C+32>>2]=sA+nA,A[C+28>>2]=z+_A,A[C+24>>2]=K+J,A[C+20>>2]=V+$,A[C+16>>2]=x+q,A[C+12>>2]=b+M,A[C+8>>2]=v+D,A[C+4>>2]=Q+p,Q=A[g+4>>2],v=A[g+44>>2],D=A[g+8>>2],b=A[g+48>>2],M=A[g+12>>2],x=A[g+52>>2],q=A[g+16>>2],V=A[g+56>>2],$=A[g+20>>2],K=A[g+60>>2],J=A[g+24>>2],l=A[l>>2],p=A[g+28>>2],z=A[g+68>>2],_A=A[g+32>>2],sA=A[g+72>>2],nA=A[g>>2],fA=A[g+40>>2],A[C+76>>2]=A[g+76>>2]-A[g+36>>2],A[C+72>>2]=sA-_A,A[C+68>>2]=z-p,A[(p=C- -64|0)>>2]=l-J,A[C+60>>2]=K-$,A[C+56>>2]=V-q,A[C+52>>2]=x-M,A[C+48>>2]=b-D,A[C+44>>2]=v-Q,A[C+40>>2]=fA-nA,kA(C+80|0,C,e+40|0),kA(Q=C+40|0,Q,e),kA(C+120|0,e+120|0,g+120|0),kA(C,g+80|0,e+80|0),fA=A[C+4>>2],uA=A[C+8>>2],o=A[C+12>>2],I=A[C+16>>2],a=A[C+20>>2],_=A[C+24>>2],s=A[C+28>>2],h=A[C+32>>2],n=A[C+36>>2],g=A[C+44>>2],e=A[C+84>>2],Q=A[C+48>>2],v=A[C+88>>2],D=A[C+52>>2],b=A[C+92>>2],M=A[C+56>>2],x=A[C+96>>2],q=A[C+60>>2],V=A[C+100>>2],$=A[p>>2],K=A[C+104>>2],l=A[C+68>>2],J=A[C+108>>2],z=A[C+72>>2],_A=A[C+112>>2],B=A[C>>2],sA=A[C+40>>2],nA=A[C+80>>2],t=A[C+76>>2],r=A[C+116>>2],A[C+76>>2]=t+r,A[C+72>>2]=z+_A,A[C+68>>2]=l+J,A[p>>2]=$+K,A[C+60>>2]=q+V,A[C+56>>2]=M+x,A[C+52>>2]=D+b,A[C+48>>2]=Q+v,A[C+44>>2]=g+e,A[C+40>>2]=sA+nA,A[C+36>>2]=r-t,A[C+32>>2]=_A-z,A[C+28>>2]=J-l,A[C+24>>2]=K-$,A[C+20>>2]=V-q,A[C+16>>2]=x-M,A[C+12>>2]=b-D,A[C+8>>2]=v-Q,A[C+4>>2]=e-g,A[C>>2]=nA-sA,g=A[C+156>>2],e=n<<1,A[C+156>>2]=g+e,p=A[C+152>>2],Q=h<<1,A[C+152>>2]=p+Q,v=A[C+148>>2],D=s<<1,A[C+148>>2]=v+D,b=A[C+144>>2],M=_<<1,A[C+144>>2]=b+M,x=A[C+140>>2],q=a<<1,A[C+140>>2]=x+q,V=A[C+136>>2],$=I<<1,A[C+136>>2]=V+$,K=A[C+132>>2],l=o<<1,A[C+132>>2]=K+l,J=A[C+128>>2],z=uA<<1,A[C+128>>2]=J+z,_A=A[C+124>>2],sA=fA<<1,A[C+124>>2]=_A+sA,nA=A[C+120>>2],fA=B<<1,A[C+120>>2]=nA+fA,A[C+112>>2]=Q-p,A[C+108>>2]=D-v,A[C+104>>2]=M-b,A[C+100>>2]=q-x,A[C+96>>2]=$-V,A[C+92>>2]=l-K,A[C+88>>2]=z-J,A[C+84>>2]=sA-_A,A[C+80>>2]=fA-nA,A[C+116>>2]=e-g}function yC(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0;p=A[g+4>>2],Q=A[g+44>>2],v=A[g+8>>2],D=A[g+48>>2],b=A[g+12>>2],M=A[g+52>>2],x=A[g+16>>2],q=A[g+56>>2],V=A[g+20>>2],$=A[g+60>>2],K=A[g+24>>2],J=A[(l=g- -64|0)>>2],z=A[g+28>>2],_A=A[g+68>>2],sA=A[g+32>>2],nA=A[g+72>>2],fA=A[g+36>>2],uA=A[g+76>>2],A[C>>2]=A[g>>2]+A[g+40>>2],A[C+36>>2]=fA+uA,A[C+32>>2]=sA+nA,A[C+28>>2]=z+_A,A[C+24>>2]=K+J,A[C+20>>2]=V+$,A[C+16>>2]=x+q,A[C+12>>2]=b+M,A[C+8>>2]=v+D,A[C+4>>2]=Q+p,Q=A[g+4>>2],v=A[g+44>>2],D=A[g+8>>2],b=A[g+48>>2],M=A[g+12>>2],x=A[g+52>>2],q=A[g+16>>2],V=A[g+56>>2],$=A[g+20>>2],K=A[g+60>>2],J=A[g+24>>2],l=A[l>>2],p=A[g+28>>2],z=A[g+68>>2],_A=A[g+32>>2],sA=A[g+72>>2],nA=A[g>>2],fA=A[g+40>>2],A[C+76>>2]=A[g+76>>2]-A[g+36>>2],A[C+72>>2]=sA-_A,A[C+68>>2]=z-p,A[(p=C- -64|0)>>2]=l-J,A[C+60>>2]=K-$,A[C+56>>2]=V-q,A[C+52>>2]=x-M,A[C+48>>2]=b-D,A[C+44>>2]=v-Q,A[C+40>>2]=fA-nA,kA(C+80|0,C,e),kA(Q=C+40|0,Q,e+40|0),kA(C+120|0,e+80|0,g+120|0),fA=A[g+84>>2],uA=A[g+88>>2],o=A[g+92>>2],I=A[g+96>>2],a=A[g+100>>2],_=A[g+104>>2],s=A[g+108>>2],h=A[g+112>>2],n=A[g+116>>2],e=A[C+44>>2],Q=A[C+84>>2],v=A[C+48>>2],D=A[C+88>>2],b=A[C+52>>2],M=A[C+92>>2],x=A[C+56>>2],q=A[C+96>>2],V=A[C+60>>2],$=A[C+100>>2],K=A[p>>2],l=A[C+104>>2],J=A[C+68>>2],z=A[C+108>>2],_A=A[C+72>>2],sA=A[C+112>>2],B=A[g+80>>2],g=A[C+40>>2],nA=A[C+80>>2],t=A[C+76>>2],r=A[C+116>>2],A[C+76>>2]=t+r,A[C+72>>2]=_A+sA,A[C+68>>2]=J+z,A[p>>2]=K+l,A[C+60>>2]=V+$,A[C+56>>2]=x+q,A[C+52>>2]=b+M,A[C+48>>2]=v+D,A[C+44>>2]=e+Q,A[C+40>>2]=g+nA,A[C+36>>2]=r-t,A[C+32>>2]=sA-_A,A[C+28>>2]=z-J,A[C+24>>2]=l-K,A[C+20>>2]=$-V,A[C+16>>2]=q-x,A[C+12>>2]=M-b,A[C+8>>2]=D-v,A[C+4>>2]=Q-e,A[C>>2]=nA-g,g=n<<1,e=A[C+156>>2],A[C+156>>2]=g-e,p=h<<1,Q=A[C+152>>2],A[C+152>>2]=p-Q,v=s<<1,D=A[C+148>>2],A[C+148>>2]=v-D,b=_<<1,M=A[C+144>>2],A[C+144>>2]=b-M,x=a<<1,q=A[C+140>>2],A[C+140>>2]=x-q,V=I<<1,$=A[C+136>>2],A[C+136>>2]=V-$,K=o<<1,l=A[C+132>>2],A[C+132>>2]=K-l,J=uA<<1,z=A[C+128>>2],A[C+128>>2]=J-z,_A=fA<<1,sA=A[C+124>>2],A[C+124>>2]=_A-sA,nA=B<<1,fA=A[C+120>>2],A[C+120>>2]=nA-fA,A[C+112>>2]=Q+p,A[C+108>>2]=v+D,A[C+104>>2]=b+M,A[C+100>>2]=x+q,A[C+96>>2]=V+$,A[C+92>>2]=K+l,A[C+88>>2]=J+z,A[C+84>>2]=_A+sA,A[C+80>>2]=nA+fA,A[C+116>>2]=g+e}function z1(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0;p=i[g+31|0],e=i[g+30|0],t=i[g+29|0],r=i[g+6|0],o=i[g+5|0],I=i[g+4|0],a=i[g+9|0],_=i[g+8|0],s=i[g+7|0],h=i[g+12|0],z=i[g+11|0],_A=i[g+10|0],n=i[g+15|0],sA=i[g+14|0],B=i[g+13|0],V=i[g+28|0],J=i[g+27|0],$=i[g+26|0],q=i[g+25|0],M=i[g+24|0],b=i[g+23|0],l=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,x=(D=i[g+21|0])<<15,D=v=D>>>17|0,K=x,K|=(x=i[g+20|0])<<7,x=(v=x>>>25|0)|D,D=(v=i[g+22|0])>>>9|0,v=v<<23|K,D|=x,Q=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=0,x=v,v=(33554431&(g=(K=Q+16777216|0)>>>0<16777216?1:g))<<7|K>>>25,g=(g>>>25|0)+D|0,v=(D=x=x+v|0)>>>0>>0?g+1|0:g,g=(x=D+33554432|0)>>>0<33554432?v+1|0:v,A[C+24>>2]=D-(-67108864&x),v=(D=b>>>27|0)|M>>>19|q>>>11,D=b=(M=q<<21|(b=M<<13|b<<5))+(D=(67108863&(D=g))<<6|x>>>26)|0,g=v,v=(b=M+16777216|0)>>>0<16777216?g+1|0:g,A[C+28>>2]=D-(1040187392&b),D=(v=(g=v)>>>25|0)+(D=J>>>20|$>>>28|V>>>12)|0,g=D=(v=b=(g=(33554431&g)<<7|b>>>25)+(J<<12|$<<4|V<<20)|0)>>>0>>0?D+1|0:D,b=(V=v+33554432|0)>>>0<33554432?g+1|0:g,A[C+32>>2]=v-(-67108864&V),D=h>>>13|(v=z>>>21|_A>>>29),g=(D=(J=16777216+(z=z<<11|_A<<3|h<<19)|0)>>>0<16777216?D+1|0:D)>>>25|0,D=(v=M=sA<<10|B<<2|n<<18)+(M=(33554431&D)<<7|J>>>25)|0,v=g+(q=sA>>>22|B>>>30|n>>>14)|0,g=v=D>>>0>>0?v+1|0:v,M=((67108863&(g=(M=D+33554432|0)>>>0<33554432?g+1|0:g))<<6|(v=M)>>>26)+($=Q-(-33554432&K)|0)|0,A[C+20>>2]=M,A[C+16>>2]=D-(-67108864&v),v=o>>>18|I>>>26|r>>>10,D=(v=($=16777216+(_A=o<<14|I<<6|r<<22)|0)>>>0<16777216?v+1|0:v)>>>25|0,v=(g=M=_<<13|s<<5|a<<21)+(M=(33554431&v)<<7|$>>>25)|0,g=D+(q=_>>>19|s>>>27|a>>>11)|0,g=v>>>0>>0?g+1|0:g,D=(q=v+33554432|0)>>>0<33554432?g+1|0:g,A[C+8>>2]=v-(-67108864&q),V=(b=(67108863&b)<<6|V>>>26)+(sA=p<<18&33292288|e<<10|t<<2)|0,g=v=e>>>22|t>>>30,v=(b=sA+16777216|0)>>>0<16777216?g+1|0:g,A[C+36>>2]=V-(33554432&b),D=z+((67108863&D)<<6|q>>>26)|0,A[C+12>>2]=D-(234881024&J),M=_A-(2113929216&$)|0,D=w((33554431&(g=v))<<7|b>>>25,v=g>>>25|0,19,0),g=y,D=(v=D+l|0)>>>0>>0?g+1|0:g,b=((67108863&(D=(g=v+33554432|0)>>>0<33554432?D+1|0:D))<<6|g>>>26)+M|0,A[C+4>>2]=b,A[C>>2]=v-(-67108864&g)}function hC(C,g,e,t,r,o,I,a){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0;var _=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0;if((-7&(a|=0))==1){A:{g:{C:{e:{t:{o:{i:{if(t){r:{c:{if(a>>>0<=3){for(;;){n=s;a:{_:{I:{s:{for(;;){if(_=(_=(h=c[e+n|0])-65|0)&(~(90-h)&~_)>>>8&255|h+4&(~(h+65488)&~(57-h))>>>8&255|h+185&(~(h+65439)&~(122-h))>>>8&255|~(1+(16336^h))>>>8&63|~(1+(16340^h))>>>8&62,(0|(_|=(_-1&1+(65470^h))>>>8&255))!=255)break s;if(_=0,!r)break r;if(!l0(r,h))break;if((n=n+1|0)>>>0>=t>>>0)break I}s=n;break r}if(p=_+(p<<6)|0,B>>>0>1)break _;B=B+6|0;break a}s=(C=s+1|0)>>>0>>0?t:C;break r}if(B=B-2|0,g>>>0<=Q>>>0)break c;c[C+Q|0]=p>>>B,Q=Q+1|0}if(_=0,!((s=n+1|0)>>>0>>0))break}break r}for(;;){a:{if(_=(_=(h=c[e+n|0])-65|0)&(~(90-h)&~_)>>>8&255|h+4&(~(h+65488)&~(57-h))>>>8&255|h+185&(~(h+65439)&~(122-h))>>>8&255|~(1+(16288^h))>>>8&63|~(1+(16338^h))>>>8&62,(0|(_|=(_-1&1+(65470^h))>>>8&255))==255){if(_=0,!r)break r;if(l0(r,h)){if((n=n+1|0)>>>0>=t>>>0)break a;continue}s=n;break r}if(p=_+(p<<6)|0,B>>>0<2)B=B+6|0;else{if(B=B-2|0,g>>>0<=Q>>>0)break c;c[C+Q|0]=p>>>B,Q=Q+1|0}if(_=0,(s=n+1|0)>>>0>=t>>>0)break r;n=s;continue}break}s=(C=s+1|0)>>>0>>0?t:C;break r}s=n,A[9404]=68,_=1}if(B>>>0>4)break i;C=s}else C=0;if(g=-1,_){s=C;break A}if(~(-1<>>0<2){a=C;break t}if(s=C>>>0>t>>>0?C:t,n=B>>>1|0,!r)break o;for(a=C;;){if((0|a)==(0|s)){_=68;break e}if((0|(C=c[e+a|0]))!=61){if(!l0(r,C)){_=28,s=a;break e}}else n=n-1|0;if(a=a+1|0,!n)break}break t}g=-1;break A}if(_=68,C>>>0>=t>>>0)break e;if(i[C+e|0]!=61){s=C,_=28;break e}if(a=C+n|0,(0|n)!=1){if((0|(B=C+1|0))==(0|s))break e;if(i[e+B|0]!=61){s=B,_=28;break e}if((0|n)!=2&&((0|(C=C+2|0))==(0|s)||(_=28,s=C,i[C+e|0]!=61)))break e}}if(g=0,r)break C;break g}A[9404]=_;break A}if(!(t>>>0<=a>>>0)){for(;;){if(!l0(r,c[e+a|0]))break g;if((0|(a=a+1|0))==(0|t))break}a=t}}s=a,l=Q}return I?A[I>>2]=e+s:(0|t)!=(0|s)&&(A[9404]=28,g=-1),o&&(A[o>>2]=l),0|g}h2(),Q0()}function S1(C,g,e,t){C|=0,g|=0,e|=0;var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0;for((t|=0)?(r=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,_=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,s=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,t=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24):(r=1797285236,_=2036477234,s=857760878,t=1634760805),o=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,a=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,I=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,D=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,v=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,b=20,p=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,l=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,n=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,B=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,Q=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,g=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,e=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24;h=pA(e+s|0,7)^o,M=pA(h+s|0,9)^v,n=pA(t+p|0,7)^n,x=pA(n+t|0,9)^a,q=pA(x+n|0,13)^p,B=pA(r+l|0,7)^B,I=pA(B+r|0,9)^I,a=pA(I+B|0,13)^l,r=pA(I+a|0,18)^r,o=pA(g+_|0,7)^D,p=q^pA(r+o|0,7),v=M^pA(p+r|0,9),D=pA(p+v|0,13)^o,r=pA(v+D|0,18)^r,Q=pA(o+_|0,9)^Q,V=pA(Q+o|0,13)^g,g=pA(V+Q|0,18)^_,l=pA(g+h|0,7)^a,a=pA(l+g|0,9)^x,o=pA(a+l|0,13)^h,_=pA(o+a|0,18)^g,h=pA(h+M|0,13)^e,e=pA(h+M|0,18)^s,g=pA(e+n|0,7)^V,I=pA(g+e|0,9)^I,n=pA(g+I|0,13)^n,s=pA(I+n|0,18)^e,t=pA(x+q|0,18)^t,e=pA(t+B|0,7)^h,Q=pA(e+t|0,9)^Q,B=pA(e+Q|0,13)^B,t=pA(Q+B|0,18)^t,h=b>>>0>2,b=b-2|0,h;);return c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+28|0]=o,c[C+29|0]=o>>>8,c[C+30|0]=o>>>16,c[C+31|0]=o>>>24,c[C+24|0]=a,c[C+25|0]=a>>>8,c[C+26|0]=a>>>16,c[C+27|0]=a>>>24,c[C+20|0]=I,c[C+21|0]=I>>>8,c[C+22|0]=I>>>16,c[C+23|0]=I>>>24,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24,c[C+12|0]=r,c[C+13|0]=r>>>8,c[C+14|0]=r>>>16,c[C+15|0]=r>>>24,c[C+8|0]=_,c[C+9|0]=_>>>8,c[C+10|0]=_>>>16,c[C+11|0]=_>>>24,c[C+4|0]=s,c[C+5|0]=s>>>8,c[C+6|0]=s>>>16,c[C+7|0]=s>>>24,0}function Cg(C,g){var e,t,r,o,I=0,a=0,_=0,s=0,h=0,n=0;for(W=e=W-480|0;_=(a=e+288|0)+(I<<1)|0,s=i[g+I|0],c[_+1|0]=s>>>4,c[0|_]=15&s,a=a+((_=1|I)<<1)|0,_=i[g+_|0],c[a+1|0]=_>>>4,c[0|a]=15&_,(0|(I=I+2|0))!=32;);for(g=0;I=8+(a=(I=g)+i[0|(g=(e+288|0)+h|0)]|0)|0,c[0|g]=a-(240&I),I=8+(a=i[g+1|0]+(I<<24>>24>>4)|0)|0,c[g+1|0]=a-(240&I),I=8+(a=i[g+2|0]+(I<<24>>24>>4)|0)|0,c[g+2|0]=a-(240&I),g=I<<24>>24>>4,(0|(h=h+3|0))!=63;);for(c[e+351|0]=i[e+351|0]+g,A[C+32>>2]=0,A[C+36>>2]=0,A[C+24>>2]=0,A[C+28>>2]=0,A[C+16>>2]=0,A[C+20>>2]=0,A[C+8>>2]=0,A[C+12>>2]=0,A[C>>2]=0,A[C+4>>2]=0,A[C+44>>2]=0,A[C+48>>2]=0,A[C+40>>2]=1,A[C+52>>2]=0,A[C+56>>2]=0,A[C+60>>2]=0,A[C+64>>2]=0,A[C+68>>2]=0,A[C+72>>2]=0,A[C+76>>2]=0,A[C+80>>2]=1,$0(C+84|0,0,76),r=C+120|0,h=C+80|0,g=C+40|0,a=e+208|0,t=e+168|0,_=e+248|0,I=1;ue(n=e+8|0,I>>>1|0,c[(e+288|0)+I|0]),yC(s=e+128|0,C,n),kA(C,s,_),kA(g,t,a),kA(h,a,_),kA(r,s,t),n=I>>>0<62,I=I+2|0,n;);for(I=A[C+36>>2],A[e+392>>2]=A[C+32>>2],A[e+396>>2]=I,I=A[C+28>>2],A[e+384>>2]=A[C+24>>2],A[e+388>>2]=I,I=A[C+20>>2],A[e+376>>2]=A[C+16>>2],A[e+380>>2]=I,I=A[C+12>>2],A[e+368>>2]=A[C+8>>2],A[e+372>>2]=I,I=A[C+4>>2],A[e+360>>2]=A[C>>2],A[e+364>>2]=I,I=A[g+12>>2],A[e+408>>2]=A[g+8>>2],A[e+412>>2]=I,I=A[g+20>>2],A[e+416>>2]=A[g+16>>2],A[e+420>>2]=I,I=A[g+28>>2],A[e+424>>2]=A[g+24>>2],A[e+428>>2]=I,I=A[g+36>>2],A[e+432>>2]=A[g+32>>2],A[e+436>>2]=I,I=A[g+4>>2],A[e+400>>2]=A[g>>2],A[e+404>>2]=I,I=A[h+12>>2],A[e+448>>2]=A[h+8>>2],A[e+452>>2]=I,I=A[h+20>>2],A[e+456>>2]=A[h+16>>2],A[e+460>>2]=I,I=A[h+28>>2],A[e+464>>2]=A[h+24>>2],A[e+468>>2]=I,I=A[h+36>>2],A[e+472>>2]=A[h+32>>2],A[e+476>>2]=I,I=A[h+4>>2],A[e+440>>2]=A[h>>2],A[e+444>>2]=I,P2(s,I=e+360|0),kA(I,s,_),kA(n=e+400|0,t,a),kA(o=e+440|0,a,_),P2(s,I),kA(I,s,_),kA(n,t,a),kA(o,a,_),P2(s,I),kA(I,s,_),kA(n,t,a),kA(o,a,_),P2(s,I),kA(C,s,_),kA(g,t,a),kA(h,a,_),kA(r,s,t),I=0;ue(n=e+8|0,I>>>1|0,c[(e+288|0)+I|0]),yC(s=e+128|0,C,n),kA(C,s,_),kA(g,t,a),kA(h,a,_),kA(r,s,t),s=I>>>0<62,I=I+2|0,s;);W=e+480|0}function ne(C,g){C|=0;var e,t,r,o,I,a=0,_=0,s=0,h=0,n=0,B=0;for(W=e=W-736|0,ZA(n=e+704|0,g|=0,g),ZA(_=e+224|0,g,n),ZA(h=e+672|0,g,_),ZA(s=e+640|0,h,h),ZA(t=e+416|0,n,s),ZA(n=e+320|0,g,t),ZA(a=e+608|0,s,s),ZA(s=e+288|0,n,n),ZA(B=e+576|0,t,s),ZA(I=e+448|0,a,s),ZA(r=e+544|0,B,B),ZA(B=e+384|0,a,r),ZA(o=e+352|0,_,B),ZA(_=e+192|0,a,o),ZA(a=e+160|0,h,_),ZA(e+96|0,h,a),ZA(_=e+512|0,r,o),ZA(a=e+480|0,h,_),ZA(_=e+256|0,I,a),ZA(e+128|0,s,_),ZA(s=e- -64|0,B,a),ZA(a=e+32|0,h,s),ZA(e,t,a),ZA(C,n,e),h=0;ZA(C,C,C),(0|(h=h+1|0))!=126;);return ZA(C,C,e+352|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+704|0),ZA(C,C,e),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+160|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+256|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e- -64|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+96|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+320|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+512|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+192|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+480|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+128|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+32|0),W=e+736|0,0-X0(g,32)|0}function Ee(C,g,e){C|=0;var t,r,o,I,a=0,_=0,s=0,h=0,n=0;return W=o=W-160|0,Y0(g|=0,e|=0,32,0),c[0|g]=248&i[0|g],c[g+31|0]=63&i[g+31|0]|64,Cg(o,g),eg(C,o),_=i[(r=e)+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,a=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,s=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,h=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,n=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,e=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,I=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,t=g,g=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,c[t+24|0]=g,c[t+25|0]=g>>>8,c[t+26|0]=g>>>16,c[t+27|0]=g>>>24,c[t+28|0]=I,c[t+29|0]=I>>>8,c[t+30|0]=I>>>16,c[t+31|0]=I>>>24,c[t+16|0]=s,c[t+17|0]=s>>>8,c[t+18|0]=s>>>16,c[t+19|0]=s>>>24,c[t+20|0]=h,c[t+21|0]=h>>>8,c[t+22|0]=h>>>16,c[t+23|0]=h>>>24,c[t+8|0]=_,c[t+9|0]=_>>>8,c[t+10|0]=_>>>16,c[t+11|0]=_>>>24,c[t+12|0]=a,c[t+13|0]=a>>>8,c[t+14|0]=a>>>16,c[t+15|0]=a>>>24,c[0|t]=n,c[t+1|0]=n>>>8,c[t+2|0]=n>>>16,c[t+3|0]=n>>>24,c[t+4|0]=e,c[t+5|0]=e>>>8,c[t+6|0]=e>>>16,c[t+7|0]=e>>>24,s=i[(a=C)+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,h=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,n=i[a+16|0]|i[a+17|0]<<8|i[a+18|0]<<16|i[a+19|0]<<24,e=i[a+20|0]|i[a+21|0]<<8|i[a+22|0]<<16|i[a+23|0]<<24,g=i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,C=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,_=i[a+28|0]|i[a+29|0]<<8|i[a+30|0]<<16|i[a+31|0]<<24,a=i[a+24|0]|i[a+25|0]<<8|i[a+26|0]<<16|i[a+27|0]<<24,c[t+56|0]=a,c[t+57|0]=a>>>8,c[t+58|0]=a>>>16,c[t+59|0]=a>>>24,c[t+60|0]=_,c[t+61|0]=_>>>8,c[t+62|0]=_>>>16,c[t+63|0]=_>>>24,c[t+48|0]=n,c[t+49|0]=n>>>8,c[t+50|0]=n>>>16,c[t+51|0]=n>>>24,c[t+52|0]=e,c[t+53|0]=e>>>8,c[t+54|0]=e>>>16,c[t+55|0]=e>>>24,c[t+40|0]=s,c[t+41|0]=s>>>8,c[t+42|0]=s>>>16,c[t+43|0]=s>>>24,c[t+44|0]=h,c[t+45|0]=h>>>8,c[t+46|0]=h>>>16,c[t+47|0]=h>>>24,c[t+32|0]=g,c[t+33|0]=g>>>8,c[t+34|0]=g>>>16,c[t+35|0]=g>>>24,c[t+36|0]=C,c[t+37|0]=C>>>8,c[t+38|0]=C>>>16,c[t+39|0]=C>>>24,W=o+160|0,0}function x2(C,g,e,t){var r,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0;if(W=r=W-704|0,e|t)if(o=(t<<3|e>>>29)+(I=_=A[C+76>>2])|0,a=(h=A[C+72>>2])+(s=e<<3)|0,A[C+72>>2]=a,o=a>>>0>>0?o+1|0:o,A[C+76>>2]=o,_=A[C+68>>2],o=(o=a=(0|o)==(0|I)&a>>>0>>0|o>>>0>>0)>>>0>(a=a+A[C+64>>2]|0)>>>0?_+1|0:_,a=(s=t>>>29|0)+a|0,A[C+64>>2]=a,A[C+68>>2]=a>>>0>>0?o+1|0:o,a=C+80|0,(0|t)==(0|(_=l=0-((o=0)+((s=127&((7&I)<<29|h>>>3))>>>0>128)|0)|0))&e>>>0>=(h=128-s|0)>>>0|t>>>0>_>>>0){if(I=0,_=0,!o&(127^s)>>>0>=3|o)for(v=252&h;c[(o=I+s|0)+a|0]=i[g+I|0],c[a+(s+(o=1|I)|0)|0]=i[g+o|0],c[a+(s+(o=2|I)|0)|0]=i[g+o|0],c[a+(s+(o=3|I)|0)|0]=i[g+o|0],o=_,_=(I=I+4|0)>>>0<4?o+1|0:o,o=Q,Q=o=(n=n+4|0)>>>0<4?o+1|0:o,(0|n)!=(0|v)|(0|p)!=(0|o););if(Q=o=0,o|(n=3&h))for(;c[(o=I+s|0)+a|0]=i[g+I|0],o=_,_=(I=I+1|0)?o:o+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|n)!=(0|B)|(0|Q)!=(0|o););if(Yg(C,a,r,I=r+640|0),g=g+h|0,!(t=t-((e>>>0>>0)+l|0)|0)&(e=e-h|0)>>>0>127|t)for(;Yg(C,g,r,I),g=g+128|0,!(t=t-(e>>>0<128)|0)&(e=e-128|0)>>>0>127|t;);if(e|t){if(C=3&e,B=0,p=0,I=0,_=0,!t&e>>>0>=4|t)for(n=124&e,h=0,e=0,t=0;c[I+a|0]=i[g+I|0],c[(o=1|I)+a|0]=i[g+o|0],c[(o=2|I)+a|0]=i[g+o|0],c[(o=3|I)+a|0]=i[g+o|0],o=_,_=(I=I+4|0)>>>0<4?o+1|0:o,o=t,t=o=(e=e+4|0)>>>0<4?o+1|0:o,(0|e)!=(0|n)|(0|h)!=(0|o););if(C|Q)for(;c[I+a|0]=i[g+I|0],_=(I=I+1|0)?_:_+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|C)!=(0|B)|(0|Q)!=(0|o););}y0(r,704)}else{if(I=0,_=0,!t&e>>>0>=4|t)for(C=-4&e;c[(o=I+s|0)+a|0]=i[g+I|0],c[a+(h=s+(o=1|I)|0)|0]=i[g+o|0],c[a+(h=s+(o=2|I)|0)|0]=i[g+o|0],c[a+(h=s+(o=3|I)|0)|0]=i[g+o|0],o=_,_=(I=I+4|0)>>>0<4?o+1|0:o,o=Q,Q=o=(n=n+4|0)>>>0<4?o+1|0:o,(0|C)!=(0|n)|(0|t)!=(0|o););if((e&=3)|(C=0))for(;c[(t=I+s|0)+a|0]=i[g+I|0],_=(I=I+1|0)?_:_+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|e)!=(0|B)|(0|C)!=(0|o););}return W=r+704|0,0}function b1(C,g,e){var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0;l=A[g+4>>2],r=A[C+4>>2],v=A[g+8>>2],o=A[C+8>>2],D=A[g+12>>2],I=A[C+12>>2],b=A[g+16>>2],a=A[C+16>>2],M=A[g+20>>2],_=A[C+20>>2],p=A[g+24>>2],s=A[C+24>>2],x=A[g+28>>2],h=A[C+28>>2],q=A[g+32>>2],n=A[C+32>>2],V=A[g+36>>2],B=A[C+36>>2],e=0-e|0,Q=A[C>>2],A[C>>2]=e&(Q^A[g>>2])^Q,A[C+36>>2]=B^e&(B^V),A[C+32>>2]=n^e&(n^q),A[C+28>>2]=h^e&(h^x),A[C+24>>2]=s^e&(s^p),A[C+20>>2]=_^e&(_^M),A[C+16>>2]=a^e&(a^b),A[C+12>>2]=I^e&(I^D),A[C+8>>2]=o^e&(o^v),A[C+4>>2]=r^e&(r^l),r=A[C+44>>2],l=A[g+44>>2],o=A[C+48>>2],v=A[g+48>>2],I=A[C+52>>2],D=A[g+52>>2],a=A[C+56>>2],b=A[g+56>>2],_=A[C+60>>2],M=A[g+60>>2],s=A[(p=C- -64|0)>>2],x=A[g- -64>>2],h=A[C+68>>2],q=A[g+68>>2],n=A[C+72>>2],V=A[g+72>>2],B=A[C+40>>2],Q=A[g+40>>2],t=A[C+76>>2],A[C+76>>2]=t^e&(A[g+76>>2]^t),A[C+72>>2]=n^e&(n^V),A[C+68>>2]=h^e&(h^q),A[p>>2]=s^e&(s^x),A[C+60>>2]=_^e&(_^M),A[C+56>>2]=a^e&(a^b),A[C+52>>2]=I^e&(I^D),A[C+48>>2]=o^e&(o^v),A[C+44>>2]=r^e&(r^l),A[C+40>>2]=B^e&(B^Q),r=A[C+84>>2],l=A[g+84>>2],o=A[C+88>>2],v=A[g+88>>2],I=A[C+92>>2],D=A[g+92>>2],a=A[C+96>>2],b=A[g+96>>2],_=A[C+100>>2],M=A[g+100>>2],s=A[C+104>>2],p=A[g+104>>2],h=A[C+108>>2],x=A[g+108>>2],n=A[C+112>>2],q=A[g+112>>2],B=A[C+80>>2],V=A[g+80>>2],Q=A[C+116>>2],A[C+116>>2]=e&(Q^A[g+116>>2])^Q,A[C+112>>2]=n^e&(n^q),A[C+108>>2]=h^e&(h^x),A[C+104>>2]=s^e&(s^p),A[C+100>>2]=_^e&(_^M),A[C+96>>2]=a^e&(a^b),A[C+92>>2]=I^e&(I^D),A[C+88>>2]=o^e&(o^v),A[C+84>>2]=r^e&(r^l),A[C+80>>2]=B^e&(B^V),r=A[C+124>>2],l=A[g+124>>2],o=A[C+128>>2],v=A[g+128>>2],I=A[C+132>>2],D=A[g+132>>2],a=A[C+136>>2],b=A[g+136>>2],_=A[C+140>>2],M=A[g+140>>2],s=A[C+144>>2],p=A[g+144>>2],h=A[C+148>>2],x=A[g+148>>2],n=A[C+152>>2],q=A[g+152>>2],B=A[C+120>>2],V=A[g+120>>2],Q=A[g+156>>2],g=A[C+156>>2],A[C+156>>2]=e&(Q^g)^g,A[C+152>>2]=n^e&(n^q),A[C+148>>2]=h^e&(h^x),A[C+144>>2]=s^e&(s^p),A[C+140>>2]=_^e&(_^M),A[C+136>>2]=a^e&(a^b),A[C+132>>2]=I^e&(I^D),A[C+128>>2]=o^e&(o^v),A[C+124>>2]=r^e&(r^l),A[C+120>>2]=B^e&(B^V)}function QC(C,g,e){var t,r,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0;return W=t=W-320|0,gA(o=t+240|0,e),kA(o,o,e),gA(C,o),kA(C,C,e),kA(C,C,g),fC(C,C),kA(C,C,o),kA(C,C,g),gA(o=t+192|0,C),kA(o,o,e),I=A[g+4>>2],p=A[g+8>>2],v=A[g+12>>2],D=A[g+16>>2],b=A[g+20>>2],M=A[g+24>>2],x=A[g+28>>2],q=A[g+32>>2],V=A[g>>2],e=A[t+192>>2],o=A[t+196>>2],a=A[t+200>>2],_=A[t+204>>2],s=A[t+208>>2],h=A[t+212>>2],n=A[t+216>>2],B=A[t+220>>2],Q=A[t+224>>2],l=A[t+228>>2],$=A[g+36>>2],A[t+180>>2]=l-$,A[t+176>>2]=Q-q,A[t+172>>2]=B-x,A[t+168>>2]=n-M,A[t+164>>2]=h-b,A[t+160>>2]=s-D,A[t+156>>2]=_-v,A[t+152>>2]=a-p,A[t+148>>2]=o-I,A[t+144>>2]=e-V,A[t+132>>2]=l+$,A[t+128>>2]=Q+q,A[t+124>>2]=B+x,A[t+120>>2]=n+M,A[t+116>>2]=h+b,A[t+112>>2]=s+D,A[t+108>>2]=_+v,A[t+104>>2]=a+p,A[t+100>>2]=o+I,A[t+96>>2]=e+V,kA(I=t+48|0,g,1632),A[t+84>>2]=l+A[t+84>>2],A[t+80>>2]=Q+A[t+80>>2],A[t+76>>2]=B+A[t+76>>2],A[t+72>>2]=n+A[t+72>>2],A[t+68>>2]=h+A[t+68>>2],A[t+64>>2]=s+A[t+64>>2],A[t+60>>2]=_+A[t+60>>2],A[t+56>>2]=a+A[t+56>>2],A[t+52>>2]=o+A[t+52>>2],A[t+48>>2]=e+A[t+48>>2],w2(t,t+144|0),v=X0(t,32),w2(t,t+96|0),p=X0(t,32),w2(t,I),g=X0(t,32),kA(t,C,1632),Q=A[C+4>>2],B=A[C+8>>2],n=A[C+12>>2],h=A[C+16>>2],s=A[C+20>>2],_=A[C+24>>2],a=A[C+28>>2],o=A[C+32>>2],I=A[C>>2],D=A[t>>2],b=A[t+4>>2],M=A[t+8>>2],x=A[t+12>>2],q=A[t+16>>2],V=A[t+20>>2],l=A[t+24>>2],$=A[t+28>>2],r=A[t+32>>2],e=(g=0-(g|p)|0)&((e=A[C+36>>2])^A[t+36>>2])^e,A[C+36>>2]=e,o^=g&(o^r),A[C+32>>2]=o,a^=g&(a^$),A[C+28>>2]=a,_^=g&(_^l),A[C+24>>2]=_,s^=g&(s^V),A[C+20>>2]=s,h^=g&(h^q),A[C+16>>2]=h,n^=g&(n^x),A[C+12>>2]=n,B^=g&(B^M),A[C+8>>2]=B,Q^=g&(Q^b),A[C+4>>2]=Q,I^=g&(I^D),A[C>>2]=I,w2(t+288|0,C),g=0-(1&c[t+288|0])|0,A[C+36>>2]=e^g&(e^0-e),A[C+32>>2]=o^g&(o^0-o),A[C+28>>2]=a^g&(a^0-a),A[C+24>>2]=_^g&(_^0-_),A[C+20>>2]=s^g&(s^0-s),A[C+16>>2]=h^g&(h^0-h),A[C+12>>2]=n^g&(n^0-n),A[C+8>>2]=B^g&(B^0-B),A[C+4>>2]=Q^g&(Q^0-Q),A[C>>2]=I^g&(I^0-I),W=t+320|0,p|v}function T1(C,g){var e,t,r,o,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0;return W=e=W-320|0,z1(t=C+40|0,g),A[C+84>>2]=0,A[C+88>>2]=0,A[C+80>>2]=1,A[C+92>>2]=0,A[C+96>>2]=0,A[C+100>>2]=0,A[C+104>>2]=0,A[C+108>>2]=0,A[C+112>>2]=0,A[C+116>>2]=0,gA(I=e+240|0,t),kA(a=e+192|0,I,1584),A[e+192>>2]=A[e+192>>2]+1,_=A[e+240>>2]-1|0,A[e+240>>2]=_,s=A[e+244>>2],h=A[e+248>>2],n=A[e+252>>2],B=A[e+256>>2],Q=A[e+260>>2],p=A[e+264>>2],l=A[e+268>>2],v=A[e+272>>2],D=A[e+276>>2],kA(C,I,a),fC(C,C),kA(C,I,C),gA(I=e+144|0,C),kA(I,I,a),I=A[e+180>>2],A[e+132>>2]=I-D,a=A[e+176>>2],A[e+128>>2]=a-v,b=A[e+172>>2],A[e+124>>2]=b-l,M=A[e+168>>2],A[e+120>>2]=M-p,x=A[e+164>>2],A[e+116>>2]=x-Q,q=A[e+160>>2],A[e+112>>2]=q-B,V=A[e+156>>2],A[e+108>>2]=V-n,$=A[e+152>>2],A[e+104>>2]=$-h,K=A[e+148>>2],A[e+100>>2]=K-s,J=A[e+144>>2],A[e+96>>2]=J-_,A[e+84>>2]=I+D,A[e+80>>2]=a+v,A[e+76>>2]=l+b,A[e+72>>2]=p+M,A[e+68>>2]=Q+x,A[e+64>>2]=B+q,A[e+60>>2]=n+V,A[e+56>>2]=h+$,A[e+52>>2]=s+K,A[e+48>>2]=_+J,w2(e,e+96|0),v=X0(e,32),w2(e,e+48|0),b=X0(e,32),kA(e,C,1632),l=A[C+4>>2],p=A[C+8>>2],Q=A[C+12>>2],B=A[C+16>>2],n=A[C+20>>2],h=A[C+24>>2],s=A[C+28>>2],_=A[C+32>>2],D=A[C>>2],M=A[e>>2],x=A[e+4>>2],q=A[e+8>>2],V=A[e+12>>2],$=A[e+16>>2],K=A[e+20>>2],J=A[e+24>>2],r=A[e+28>>2],o=A[e+32>>2],a=(I=v-1|0)&((a=A[C+36>>2])^A[e+36>>2])^a,A[C+36>>2]=a,_^=I&(_^o),A[C+32>>2]=_,s^=I&(s^r),A[C+28>>2]=s,h^=I&(h^J),A[C+24>>2]=h,n^=I&(n^K),A[C+20>>2]=n,B^=I&(B^$),A[C+16>>2]=B,Q^=I&(Q^V),A[C+12>>2]=Q,p^=I&(p^q),A[C+8>>2]=p,l^=I&(l^x),A[C+4>>2]=l,I=D^I&(D^M),A[C>>2]=I,w2(e+288|0,C),g=0-(1&c[e+288|0]^i[g+31|0]>>>7^i[38144]>>>2)|0,A[C+36>>2]=a^g&(a^0-a),A[C+32>>2]=_^g&(_^0-_),A[C+28>>2]=s^g&(s^0-s),A[C+24>>2]=h^g&(h^0-h),A[C+20>>2]=n^g&(n^0-n),A[C+16>>2]=B^g&(B^0-B),A[C+12>>2]=Q^g&(Q^0-Q),A[C+8>>2]=p^g&(p^0-p),A[C+4>>2]=l^g&(l^0-l),A[C>>2]=I^g&(I^0-I),kA(C+120|0,C,t),W=e+320|0,(v|b)-1|0}function P2(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0;W=e=W-48|0,gA(C,g),gA(C+80|0,g+40|0),ee(C+120|0,g+80|0),l=A[g+44>>2],v=A[g+4>>2],x=A[g+48>>2],D=A[g+8>>2],q=A[g+52>>2],b=A[g+12>>2],V=A[g+56>>2],M=A[g+16>>2],_A=A[g+60>>2],$=A[g+20>>2],sA=A[g- -64>>2],K=A[g+24>>2],nA=A[g+68>>2],J=A[g+28>>2],fA=A[g+72>>2],uA=A[g+32>>2],vA=A[g+40>>2],z=A[g>>2],A[C+76>>2]=A[g+76>>2]+A[g+36>>2],A[C+72>>2]=fA+uA,A[C+68>>2]=nA+J,A[(t=C- -64|0)>>2]=sA+K,A[C+60>>2]=_A+$,A[C+56>>2]=V+M,A[C+52>>2]=q+b,A[C+48>>2]=x+D,A[C+44>>2]=l+v,A[C+40>>2]=vA+z,gA(e,C+40|0),g=A[C+4>>2],l=A[C+84>>2],v=A[C+8>>2],x=A[C+88>>2],D=A[C+12>>2],q=A[C+92>>2],b=A[C+16>>2],V=A[C+96>>2],M=A[C+20>>2],_A=A[C+100>>2],$=A[C+24>>2],sA=A[C+104>>2],K=A[C+28>>2],nA=A[C+108>>2],J=A[C+32>>2],fA=A[C+112>>2],uA=A[C>>2],vA=A[C+80>>2],o=(z=A[C+116>>2])-(r=A[C+36>>2])|0,A[C+116>>2]=o,I=fA-J|0,A[C+112>>2]=I,a=nA-K|0,A[C+108>>2]=a,_=sA-$|0,A[C+104>>2]=_,s=_A-M|0,A[C+100>>2]=s,h=V-b|0,A[C+96>>2]=h,n=q-D|0,A[C+92>>2]=n,B=x-v|0,A[C+88>>2]=B,Q=l-g|0,A[C+84>>2]=Q,p=vA-uA|0,A[C+80>>2]=p,z=z+r|0,A[C+76>>2]=z,J=J+fA|0,A[C+72>>2]=J,K=K+nA|0,A[C+68>>2]=K,$=$+sA|0,A[t>>2]=$,M=M+_A|0,A[C+60>>2]=M,b=b+V|0,A[C+56>>2]=b,D=D+q|0,A[C+52>>2]=D,v=v+x|0,A[C+48>>2]=v,g=g+l|0,A[C+44>>2]=g,l=uA+vA|0,A[C+40>>2]=l,x=A[e>>2],q=A[e+4>>2],V=A[e+8>>2],_A=A[e+12>>2],sA=A[e+16>>2],nA=A[e+20>>2],fA=A[e+24>>2],uA=A[e+28>>2],vA=A[e+32>>2],A[C+36>>2]=A[e+36>>2]-z,A[C+32>>2]=vA-J,A[C+28>>2]=uA-K,A[C+24>>2]=fA-$,A[C+20>>2]=nA-M,A[C+16>>2]=sA-b,A[C+12>>2]=_A-D,A[C+8>>2]=V-v,A[C+4>>2]=q-g,A[C>>2]=x-l,g=A[C+124>>2],l=A[C+128>>2],v=A[C+132>>2],x=A[C+136>>2],D=A[C+140>>2],q=A[C+144>>2],b=A[C+148>>2],V=A[C+152>>2],M=A[C+120>>2],A[C+156>>2]=A[C+156>>2]-o,A[C+152>>2]=V-I,A[C+148>>2]=b-a,A[C+144>>2]=q-_,A[C+140>>2]=D-s,A[C+136>>2]=x-h,A[C+132>>2]=v-n,A[C+128>>2]=l-B,A[C+124>>2]=g-Q,A[C+120>>2]=M-p,W=e+48|0}function y1(C,g,e,t){var r,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0;if(W=r=W-288|0,e|t)if(o=(t<<3|e>>>29)+(I=_=A[C+36>>2])|0,a=(s=A[C+32>>2])+(h=e<<3)|0,A[C+32>>2]=a,A[C+36>>2]=a>>>0>>0?o+1|0:o,_=C+40|0,(0|t)==(0|(a=l=0-((o=0)+((h=63&((7&I)<<29|s>>>3))>>>0>64)|0)|0))&e>>>0>=(s=64-h|0)>>>0|t>>>0>a>>>0){if(I=0,a=0,!o&(63^h)>>>0>=3|o)for(v=124&s;c[(o=I+h|0)+_|0]=i[g+I|0],c[_+(h+(o=1|I)|0)|0]=i[g+o|0],c[_+(h+(o=2|I)|0)|0]=i[g+o|0],c[_+(h+(o=3|I)|0)|0]=i[g+o|0],o=a,a=(I=I+4|0)>>>0<4?o+1|0:o,o=Q,Q=o=(n=n+4|0)>>>0<4?o+1|0:o,(0|n)!=(0|v)|(0|p)!=(0|o););if(Q=o=0,o|(n=3&s))for(;c[(o=I+h|0)+_|0]=i[g+I|0],o=a,a=(I=I+1|0)?o:o+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|n)!=(0|B)|(0|Q)!=(0|o););if(Hg(C,_,r,I=r+256|0),g=g+s|0,!(t=t-((e>>>0>>0)+l|0)|0)&(e=e-s|0)>>>0>63|t)for(;Hg(C,g,r,I),g=g- -64|0,o=t-1|0,!(t=(e=e+-64|0)>>>0<4294967232?o+1|0:o)&e>>>0>63|t;);if(e|t){if(C=3&e,B=0,p=0,I=0,a=0,!t&e>>>0>=4|t)for(n=60&e,s=0,e=0,t=0;c[I+_|0]=i[g+I|0],c[(o=1|I)+_|0]=i[g+o|0],c[(o=2|I)+_|0]=i[g+o|0],c[(o=3|I)+_|0]=i[g+o|0],o=a,a=(I=I+4|0)>>>0<4?o+1|0:o,o=t,t=o=(e=e+4|0)>>>0<4?o+1|0:o,(0|e)!=(0|n)|(0|s)!=(0|o););if(C|Q)for(;c[I+_|0]=i[g+I|0],a=(I=I+1|0)?a:a+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|C)!=(0|B)|(0|Q)!=(0|o););}y0(r,288)}else{if(I=0,a=0,!t&e>>>0>=4|t)for(C=-4&e;c[(o=I+h|0)+_|0]=i[g+I|0],c[_+(s=h+(o=1|I)|0)|0]=i[g+o|0],c[_+(s=h+(o=2|I)|0)|0]=i[g+o|0],c[_+(s=h+(o=3|I)|0)|0]=i[g+o|0],o=a,a=(I=I+4|0)>>>0<4?o+1|0:o,o=Q,Q=o=(n=n+4|0)>>>0<4?o+1|0:o,(0|C)!=(0|n)|(0|t)!=(0|o););if((e&=3)|(C=0))for(;c[(t=I+h|0)+_|0]=i[g+I|0],a=(I=I+1|0)?a:a+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|e)!=(0|B)|(0|C)!=(0|o););}return W=r+288|0,0}function nC(C,g,e,t,r,o){var I=0;A[o>>2]=8;A:{g:{I=C,I=(C=!g&C>>>0<=32768)?32768:I;C:{e:{if(!(C=C?0:g)&e>>>5>>>0<=I>>>0|C){if(e>>>0>=4096)break e;g=1;break C}if(A[r>>2]=1,C=1,(g=(I>>>0)/(A[o>>2]<<2>>>0)|0)>>>0<4||(C=2,g>>>0<8))break A;if(g>>>0<16)return void(A[t>>2]=3);if(g>>>0<32)return void(A[t>>2]=4);if(g>>>0<64)return void(A[t>>2]=5);if(g>>>0<128)return void(A[t>>2]=6);if(g>>>0<256)return void(A[t>>2]=7);if(g>>>0<512)return void(A[t>>2]=8);if(g>>>0<1024)return void(A[t>>2]=9);if(g>>>0<2048)return void(A[t>>2]=10);if(g>>>0<4096)return void(A[t>>2]=11);if(g>>>0<8192)return void(A[t>>2]=12);if(g>>>0<16384)return void(A[t>>2]=13);if(g>>>0<32768)return void(A[t>>2]=14);if(g>>>0<65536)return void(A[t>>2]=15);if(g>>>0<131072)return void(A[t>>2]=16);if(g>>>0<262144)return void(A[t>>2]=17);if(g>>>0<524288)return void(A[t>>2]=18);if(g>>>0<1048576)return void(A[t>>2]=19);if(g>>>0<2097152)return void(A[t>>2]=20);if(g>>>0<4194304)return void(A[t>>2]=21);if(g>>>0<8388608)return void(A[t>>2]=22);if(g>>>0<16777216)return void(A[t>>2]=23);if(g>>>0>=33554432)break g;return void(A[t>>2]=24)}g=2,e>>>0<8192||(g=3,e>>>0<16384||(g=4,e>>>0<32768||(g=5,e>>>0<65536||(g=6,e>>>0<131072||(g=7,e>>>0<262144||(g=8,e>>>0<524288||(g=9,e>>>0<1048576||(g=10,e>>>0<2097152||(g=11,e>>>0<4194304||(g=12,e>>>0<8388608||(g=13,e>>>0<16777216||(g=14,e>>>0<33554432||(g=15,e>>>0<67108864||(g=16,e>>>0<134217728||(g=17,e>>>0<268435456||(g=18,e>>>0<536870912||(g=19,e>>>0<1073741824||(g=(0|e)>=0?20:21))))))))))))))))))}return e=g,A[t>>2]=e,C=(g=C)>>>2|0,g=(3&g)<<30|I>>>2,t=31&e,(63&e)>>>0>=32?(e=0,C=C>>>t|0):(e=C>>>t|0,C=((1<>>t),void(A[r>>2]=((!e&C>>>0>=1073741823|e?1073741823:C)>>>0)/O2[o>>2])}C=g>>>0<67108864?25:26}A[t>>2]=C}function pe(C,g,e){var t,r,o,I,a,_,s,h,n=0;W=t=W-160|0,A[C>>2]=1,A[C+4>>2]=0,A[C+8>>2]=0,A[C+12>>2]=0,A[C+16>>2]=0,A[C+20>>2]=0,A[C+24>>2]=0,A[C+28>>2]=0,A[C+32>>2]=0,A[C+44>>2]=0,A[C+48>>2]=0,A[C+36>>2]=0,A[C+40>>2]=1,A[C+52>>2]=0,A[C+56>>2]=0,A[C+60>>2]=0,A[C+64>>2]=0,A[C+68>>2]=0,A[C+72>>2]=0,A[C+76>>2]=0,A[C+80>>2]=1,$0(C+84|0,0,76),b1(C,g,(255&(1^(n=e-((e>>31&e)<<1)|0)))-1>>>31|0),b1(C,g+160|0,(255&(2^n))-1>>>31|0),b1(C,g+320|0,(255&(3^n))-1>>>31|0),b1(C,g+480|0,(255&(4^n))-1>>>31|0),b1(C,g+640|0,(255&(5^n))-1>>>31|0),b1(C,g+800|0,(255&(6^n))-1>>>31|0),b1(C,g+960|0,(255&(7^n))-1>>>31|0),b1(C,g+1120|0,(255&(8^n))-1>>>31|0),g=A[C+76>>2],A[t+32>>2]=A[C+72>>2],A[t+36>>2]=g,n=A[4+(g=C- -64|0)>>2],A[t+24>>2]=A[g>>2],A[t+28>>2]=n,g=A[C+60>>2],A[t+16>>2]=A[C+56>>2],A[t+20>>2]=g,g=A[C+52>>2],A[t+8>>2]=A[C+48>>2],A[t+12>>2]=g,g=A[C+44>>2],A[t>>2]=A[C+40>>2],A[t+4>>2]=g,g=A[C+36>>2],A[t+72>>2]=A[C+32>>2],A[t+76>>2]=g,n=A[C+28>>2],A[(g=t- -64|0)>>2]=A[C+24>>2],A[g+4>>2]=n,g=A[C+20>>2],A[t+56>>2]=A[C+16>>2],A[t+60>>2]=g,g=A[C+12>>2],A[t+48>>2]=A[C+8>>2],A[t+52>>2]=g,g=A[C+4>>2],A[t+40>>2]=A[C>>2],A[t+44>>2]=g,g=A[C+92>>2],A[t+88>>2]=A[C+88>>2],A[t+92>>2]=g,g=A[C+100>>2],A[t+96>>2]=A[C+96>>2],A[t+100>>2]=g,g=A[C+108>>2],A[t+104>>2]=A[C+104>>2],A[t+108>>2]=g,g=A[C+116>>2],A[t+112>>2]=A[C+112>>2],A[t+116>>2]=g,g=A[C+84>>2],A[t+80>>2]=A[C+80>>2],A[t+84>>2]=g,g=A[C+124>>2],n=A[C+128>>2],r=A[C+132>>2],o=A[C+136>>2],I=A[C+140>>2],a=A[C+144>>2],_=A[C+148>>2],s=A[C+152>>2],h=A[C+120>>2],A[t+156>>2]=0-A[C+156>>2],A[t+152>>2]=0-s,A[t+148>>2]=0-_,A[t+144>>2]=0-a,A[t+140>>2]=0-I,A[t+136>>2]=0-o,A[t+132>>2]=0-r,A[t+128>>2]=0-n,A[t+124>>2]=0-g,A[t+120>>2]=0-h,b1(C,t,(128&e)>>>7|0),W=t+160|0}function fe(C,g){C|=0,g|=0;var e,t,r,o,I,a=0,_=0,s=0;return W=_=W-192|0,X2(_,32),Y0(g,_,32,0),c[0|g]=248&i[0|g],c[g+31|0]=63&i[g+31|0]|64,Cg(s=_+32|0,g),eg(C,s),e=_,s=A[_+28>>2],_=A[_+24>>2],c[g+24|0]=_,c[g+25|0]=_>>>8,c[g+26|0]=_>>>16,c[g+27|0]=_>>>24,c[g+28|0]=s,c[g+29|0]=s>>>8,c[g+30|0]=s>>>16,c[g+31|0]=s>>>24,s=A[e+20>>2],_=A[e+16>>2],c[g+16|0]=_,c[g+17|0]=_>>>8,c[g+18|0]=_>>>16,c[g+19|0]=_>>>24,c[g+20|0]=s,c[g+21|0]=s>>>8,c[g+22|0]=s>>>16,c[g+23|0]=s>>>24,s=A[e+12>>2],_=A[e+8>>2],c[g+8|0]=_,c[g+9|0]=_>>>8,c[g+10|0]=_>>>16,c[g+11|0]=_>>>24,c[g+12|0]=s,c[g+13|0]=s>>>8,c[g+14|0]=s>>>16,c[g+15|0]=s>>>24,s=A[e+4>>2],_=A[e>>2],c[0|g]=_,c[g+1|0]=_>>>8,c[g+2|0]=_>>>16,c[g+3|0]=_>>>24,c[g+4|0]=s,c[g+5|0]=s>>>8,c[g+6|0]=s>>>16,c[g+7|0]=s>>>24,t=i[(a=C)+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,r=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,o=i[a+16|0]|i[a+17|0]<<8|i[a+18|0]<<16|i[a+19|0]<<24,s=i[a+20|0]|i[a+21|0]<<8|i[a+22|0]<<16|i[a+23|0]<<24,_=i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,C=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,I=i[a+28|0]|i[a+29|0]<<8|i[a+30|0]<<16|i[a+31|0]<<24,a=i[a+24|0]|i[a+25|0]<<8|i[a+26|0]<<16|i[a+27|0]<<24,c[g+56|0]=a,c[g+57|0]=a>>>8,c[g+58|0]=a>>>16,c[g+59|0]=a>>>24,c[g+60|0]=I,c[g+61|0]=I>>>8,c[g+62|0]=I>>>16,c[g+63|0]=I>>>24,c[g+48|0]=o,c[g+49|0]=o>>>8,c[g+50|0]=o>>>16,c[g+51|0]=o>>>24,c[g+52|0]=s,c[g+53|0]=s>>>8,c[g+54|0]=s>>>16,c[g+55|0]=s>>>24,c[g+40|0]=t,c[g+41|0]=t>>>8,c[g+42|0]=t>>>16,c[g+43|0]=t>>>24,c[g+44|0]=r,c[g+45|0]=r>>>8,c[g+46|0]=r>>>16,c[g+47|0]=r>>>24,c[g+32|0]=_,c[g+33|0]=_>>>8,c[g+34|0]=_>>>16,c[g+35|0]=_>>>24,c[g+36|0]=C,c[g+37|0]=C>>>8,c[g+38|0]=C>>>16,c[g+39|0]=C>>>24,y0(e,32),W=e+192|0,0}function v1(C,g){g|=0;var e,t,r=0,o=0,I=0,a=0;return W=e=W-288|0,o=40+((r=A[32+(C|=0)>>2]>>>3&63)+C|0)|0,r>>>0>=56?(P0(o,35520,64-r|0),Hg(C,C+40|0,e,e+256|0),A[C+88>>2]=0,A[C+92>>2]=0,A[C+80>>2]=0,A[C+84>>2]=0,A[C+72>>2]=0,A[C+76>>2]=0,A[(r=C- -64|0)>>2]=0,A[r+4>>2]=0,A[C+56>>2]=0,A[C+60>>2]=0,A[C+48>>2]=0,A[C+52>>2]=0,A[C+40>>2]=0,A[C+44>>2]=0):P0(o,35520,56-r|0),I=(r=16711680&(o=A[C+32>>2]))>>>8|0,a=r<<24,t=(r=-16777216&o)>>>24|0,r=(a|=r<<8)|-16777216&((255&(r=A[C+36>>2]))<<24|o>>>8)|16711680&((16777215&r)<<8|o>>>24)|r>>>8&65280|r>>>24,c[C+96|0]=r,c[C+97|0]=r>>>8,c[C+98|0]=r>>>16,c[C+99|0]=r>>>24,r=I|t|o<<24|(65280&o)<<8,r|=I=0,c[C+100|0]=r,c[C+101|0]=r>>>8,c[C+102|0]=r>>>16,c[C+103|0]=r>>>24,Hg(C,C+40|0,e,e+256|0),r=(r=A[C>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[0|g]=r,c[g+1|0]=r>>>8,c[g+2|0]=r>>>16,c[g+3|0]=r>>>24,r=(r=A[C+4>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+4|0]=r,c[g+5|0]=r>>>8,c[g+6|0]=r>>>16,c[g+7|0]=r>>>24,r=(r=A[C+8>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+8|0]=r,c[g+9|0]=r>>>8,c[g+10|0]=r>>>16,c[g+11|0]=r>>>24,r=(r=A[C+12>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+12|0]=r,c[g+13|0]=r>>>8,c[g+14|0]=r>>>16,c[g+15|0]=r>>>24,r=(r=A[C+16>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+16|0]=r,c[g+17|0]=r>>>8,c[g+18|0]=r>>>16,c[g+19|0]=r>>>24,r=(r=A[C+20>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+20|0]=r,c[g+21|0]=r>>>8,c[g+22|0]=r>>>16,c[g+23|0]=r>>>24,r=(r=A[C+24>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+24|0]=r,c[g+25|0]=r>>>8,c[g+26|0]=r>>>16,c[g+27|0]=r>>>24,r=(r=A[C+28>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+28|0]=r,c[g+29|0]=r>>>8,c[g+30|0]=r>>>16,c[g+31|0]=r>>>24,y0(e,288),y0(C,104),W=e+288|0,0}function De(C,g){C|=0;var e,t=0;W=e=W+-64|0,t=i[60+(g|=0)|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,A[e+56>>2]=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,A[e+60>>2]=t,t=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,A[e+48>>2]=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,A[e+52>>2]=t,t=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,A[e+40>>2]=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,A[e+44>>2]=t,t=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,A[e+32>>2]=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,A[e+36>>2]=t,t=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[e+24>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[e+28>>2]=t,t=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[e+16>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[e+20>>2]=t,t=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[e>>2]=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,A[e+4>>2]=t,t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,A[e+8>>2]=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,A[e+12>>2]=t,d1(e),g=A[e+28>>2],t=A[e+24>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[e+20>>2],t=A[e+16>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[e+12>>2],t=A[e+8>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[e+4>>2],t=A[e>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,y0(e,64),W=e- -64|0}function Y1(C,g,e){C|=0,g|=0;var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0;if(W=t=W-96|0,(e|=0)>>>0>=65&&(Me(C),y1(C,g,e,0),v1(C,t),e=32,g=t),Me(C),A[t+88>>2]=909522486,A[t+92>>2]=909522486,A[t+80>>2]=909522486,A[t+84>>2]=909522486,A[t+72>>2]=909522486,A[t+76>>2]=909522486,A[(I=h=t- -64|0)>>2]=909522486,A[I+4>>2]=909522486,A[t+56>>2]=909522486,A[t+60>>2]=909522486,A[t+48>>2]=909522486,A[t+52>>2]=909522486,A[t+40>>2]=909522486,A[t+44>>2]=909522486,A[t+32>>2]=909522486,A[t+36>>2]=909522486,e){if(e>>>0>=4)for(a=124&e;c[0|(o=(I=t+32|0)+r|0)]=i[0|o]^i[g+r|0],c[0|(n=(o=1|r)+I|0)]=i[0|n]^i[g+o|0],c[0|(n=(o=2|r)+I|0)]=i[0|n]^i[g+o|0],c[0|(o=(o=I)+(I=3|r)|0)]=i[0|o]^i[g+I|0],r=r+4|0,(0|a)!=(0|(_=_+4|0)););if(_=3&e)for(;c[0|(I=(t+32|0)+r|0)]=i[0|I]^i[g+r|0],r=r+1|0,(0|_)!=(0|(s=s+1|0)););}if(y1(C,t+32|0,64,0),Me(I=C+104|0),A[t+88>>2]=1549556828,A[t+92>>2]=1549556828,A[t+80>>2]=1549556828,A[t+84>>2]=1549556828,A[t+72>>2]=1549556828,A[t+76>>2]=1549556828,A[h>>2]=1549556828,A[h+4>>2]=1549556828,A[t+56>>2]=1549556828,A[t+60>>2]=1549556828,A[t+48>>2]=1549556828,A[t+52>>2]=1549556828,A[t+40>>2]=1549556828,A[t+44>>2]=1549556828,A[t+32>>2]=1549556828,A[t+36>>2]=1549556828,e){if(s=0,r=0,e>>>0>=4)for(h=124&e,_=0;c[0|(a=(C=t+32|0)+r|0)]=i[0|a]^i[g+r|0],c[0|(o=(a=1|r)+C|0)]=i[0|o]^i[g+a|0],c[0|(o=(a=2|r)+C|0)]=i[0|o]^i[g+a|0],c[0|(a=(o=C)+(C=3|r)|0)]=i[0|a]^i[C+g|0],r=r+4|0,(0|h)!=(0|(_=_+4|0)););if(C=3&e)for(;c[0|(e=(t+32|0)+r|0)]=i[0|e]^i[g+r|0],r=r+1|0,(0|C)!=(0|(s=s+1|0)););}return y1(I,C=t+32|0,64,0),y0(C,64),y0(t,32),W=t+96|0,0}function EC(C,g,e,t,r,o,I){var a=0,_=0,s=0,h=0,n=0,B=0,Q=0;if(g-65>>>0<4294967232|I>>>0>64)C=-1;else{B=a=W,W=a=a-512&-64;A:{g:if(!(!(!(t|r)|e)|!C|((_=255&g)-65&255)>>>0<=191|!(!(g=255&I)||o)|g>>>0>=65)){if(g){if(!o)break g;$0(a- -64|0,0,293),A[a+56>>2]=327033209,A[a+60>>2]=1541459225,A[a+48>>2]=-79577749,A[a+52>>2]=528734635,A[a+40>>2]=725511199,A[a+44>>2]=-1694144372,A[a+32>>2]=-1377402159,A[a+36>>2]=1359893119,A[a+24>>2]=1595750129,A[a+28>>2]=-1521486534,A[a+16>>2]=-23791573,A[a+20>>2]=1013904242,A[a+8>>2]=-2067093701,A[a+12>>2]=-1150833019,A[a>>2]=-222443256^(g<<8|_),A[a+4>>2]=g>>>24^1779033703,$0((I=a+384|0)+g|0,0,128-g|0),P0(I,o,g),P0(a+96|0,I,128),A[a+352>>2]=128,y0(I,128),g=128}else $0(a- -64|0,0,293),A[a+56>>2]=327033209,A[a+60>>2]=1541459225,A[a+48>>2]=-79577749,A[a+52>>2]=528734635,A[a+40>>2]=725511199,A[a+44>>2]=-1694144372,A[a+32>>2]=-1377402159,A[a+36>>2]=1359893119,A[a+24>>2]=1595750129,A[a+28>>2]=-1521486534,A[a+16>>2]=-23791573,A[a+20>>2]=1013904242,A[a+8>>2]=-2067093701,A[a+12>>2]=-1150833019,A[a>>2]=-222443256^_,A[a+4>>2]=1779033703,g=0;C:if(t|r)for(Q=a+224|0,s=a+96|0;;){if(I=g+s|0,!r&t>>>0<=(o=256-g|0)>>>0){P0(I,e,t),A[a+352>>2]=t+A[a+352>>2];break C}if(P0(I,e,o),A[a+352>>2]=o+A[a+352>>2],h=g=A[a+68>>2],g=(n=(I=A[a+64>>2])+128|0)>>>0<128?g+1|0:g,A[a+64>>2]=n,A[a+68>>2]=g,g=A[a+76>>2],g=(h=I=(0|h)==-1&I>>>0>4294967167)>>>0>(I=I+A[a+72>>2]|0)>>>0?g+1|0:g,A[a+72>>2]=I,A[a+76>>2]=g,cg(a,s),P0(s,Q,128),g=A[a+352>>2]-128|0,A[a+352>>2]=g,e=e+o|0,!((r=r-(t>>>0>>0)|0)|(t=t-o|0)))break}_C(a,C,_),W=B;break A}h2(),Q0()}C=0}return C}function we(C,g){C|=0,g|=0;var e,t=0;W=e=W-128|0,A[e+80>>2]=0,A[e+84>>2]=0,A[e+88>>2]=0,A[e+92>>2]=0,A[e+40>>2]=0,A[e+44>>2]=0,A[e+48>>2]=0,A[e+52>>2]=0,A[e+56>>2]=0,A[e+60>>2]=0,t=A[8799],A[e+104>>2]=A[8798],A[e+108>>2]=t,t=A[8801],A[e+112>>2]=A[8800],A[e+116>>2]=t,t=A[8803],A[e+120>>2]=A[8802],A[e+124>>2]=t,A[e+64>>2]=0,A[e+68>>2]=0,A[e+72>>2]=0,A[e+76>>2]=0,c[e+64|0]=1,A[e+32>>2]=0,A[e+36>>2]=0,t=A[8797],A[e+96>>2]=A[8796],A[e+100>>2]=t,t=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[e+24>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[e+28>>2]=t,t=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[e+16>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[e+20>>2]=t,t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,A[e+8>>2]=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,A[e+12>>2]=t,t=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[e>>2]=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,A[e+4>>2]=t,pt(g=e- -64|0,e),d1(g),g=A[e+92>>2],t=A[e+88>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[e+84>>2],t=A[e+80>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[e+76>>2],t=A[e+72>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[e+68>>2],t=A[e+64>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,W=e+128|0}function le(C,g){C|=0,g|=0;var e,t=0;W=e=W-128|0,A[e+80>>2]=0,A[e+84>>2]=0,A[e+88>>2]=0,A[e+92>>2]=0,A[e+40>>2]=0,A[e+44>>2]=0,A[e+48>>2]=0,A[e+52>>2]=0,A[e+56>>2]=0,A[e+60>>2]=0,t=A[8799],A[e+104>>2]=A[8798],A[e+108>>2]=t,t=A[8801],A[e+112>>2]=A[8800],A[e+116>>2]=t,t=A[8803],A[e+120>>2]=A[8802],A[e+124>>2]=t,A[e+64>>2]=0,A[e+68>>2]=0,A[e+72>>2]=0,A[e+76>>2]=0,A[e+32>>2]=0,A[e+36>>2]=0,t=A[8797],A[e+96>>2]=A[8796],A[e+100>>2]=t,t=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[e+16>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[e+20>>2]=t,t=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[e+24>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[e+28>>2]=t,t=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[e>>2]=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,A[e+4>>2]=t,t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,A[e+8>>2]=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,A[e+12>>2]=t,pt(g=e- -64|0,e),d1(g),g=A[e+92>>2],t=A[e+88>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[e+84>>2],t=A[e+80>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[e+76>>2],t=A[e+72>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[e+68>>2],t=A[e+64>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,W=e+128|0}function pC(C,g,e,t){var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0;A:{if((o=A[C+56>>2])|(r=A[C+60>>2])){if(n=a=16-o|0,s=(a=(0|(I=0-((o>>>0>16)+r|0)|0))==(0|t)&e>>>0>a>>>0|t>>>0>I>>>0)?n:e,n=a=a?I:t,a|s){if(a=C- -64|0,I=0,o=0,!n&s>>>0>=4|n)for(h=-4&s;r=I+A[C+56>>2]|0,c[r+a|0]=i[g+I|0],r=(B=1|I)+A[C+56>>2]|0,c[r+a|0]=i[g+B|0],r=(B=2|I)+A[C+56>>2]|0,c[r+a|0]=i[g+B|0],r=(B=3|I)+A[C+56>>2]|0,c[r+a|0]=i[g+B|0],r=o,o=(I=I+4|0)>>>0<4?r+1|0:r,r=p,p=r=(_=_+4|0)>>>0<4?r+1|0:r,(0|_)!=(0|h)|(0|n)!=(0|r););if(p=r=0,r|(_=3&s))for(;r=I+A[C+56>>2]|0,c[r+a|0]=i[g+I|0],o=(I=I+1|0)?o:o+1|0,r=l,l=r=(Q=Q+1|0)?r:r+1|0,(0|_)!=(0|Q)|(0|p)!=(0|r););o=A[C+56>>2],r=A[C+60>>2]}if(r=r+n|0,r=(o=o+s|0)>>>0>>0?r+1|0:r,A[C+56>>2]=o,A[C+60>>2]=r,!r&o>>>0<16)break A;BC(C,C- -64|0,16,0),A[C+56>>2]=0,A[C+60>>2]=0,e=(o=e)-s|0,t=t-((o>>>0>>0)+n|0)|0,g=g+s|0}if(!t&e>>>0>=16|t&&(BC(C,g,o=-16&e,t),e&=15,t=0,g=g+o|0),e|t){if(a=C- -64|0,Q=0,l=0,I=0,o=0,!t&e>>>0>=4|t)for(s=12&e,n=0,_=0;r=I+A[C+56>>2]|0,c[r+a|0]=i[g+I|0],r=(h=1|I)+A[C+56>>2]|0,c[r+a|0]=i[g+h|0],r=(h=2|I)+A[C+56>>2]|0,c[r+a|0]=i[g+h|0],r=(h=3|I)+A[C+56>>2]|0,c[r+a|0]=i[g+h|0],o=(I=I+4|0)>>>0<4?o+1|0:o,r=p,p=r=(_=_+4|0)>>>0<4?r+1|0:r,(0|s)!=(0|_)|(0|n)!=(0|r););if(p=r=0,r|(_=3&e))for(;r=I+A[C+56>>2]|0,c[r+a|0]=i[g+I|0],o=(I=I+1|0)?o:o+1|0,r=l,l=r=(Q=Q+1|0)?r:r+1|0,(0|_)!=(0|Q)|(0|p)!=(0|r););o=t+A[C+60>>2]|0,o=(g=e+A[C+56>>2]|0)>>>0>>0?o+1|0:o,A[C+56>>2]=g,A[C+60>>2]=o}}}function F1(C,g,e){var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0;l=A[g+4>>2],r=A[C+4>>2],v=A[g+8>>2],o=A[C+8>>2],D=A[g+12>>2],I=A[C+12>>2],b=A[g+16>>2],a=A[C+16>>2],M=A[g+20>>2],_=A[C+20>>2],Q=A[g+24>>2],s=A[C+24>>2],x=A[g+28>>2],h=A[C+28>>2],q=A[g+32>>2],n=A[C+32>>2],V=A[g+36>>2],B=A[C+36>>2],e=0-e|0,p=A[C>>2],A[C>>2]=e&(p^A[g>>2])^p,A[C+36>>2]=B^e&(B^V),A[C+32>>2]=n^e&(n^q),A[C+28>>2]=h^e&(h^x),A[C+24>>2]=s^e&(s^Q),A[C+20>>2]=_^e&(_^M),A[C+16>>2]=a^e&(a^b),A[C+12>>2]=I^e&(I^D),A[C+8>>2]=o^e&(o^v),A[C+4>>2]=r^e&(r^l),r=A[C+44>>2],l=A[g+44>>2],o=A[C+48>>2],v=A[g+48>>2],I=A[C+52>>2],D=A[g+52>>2],a=A[C+56>>2],b=A[g+56>>2],_=A[C+60>>2],M=A[g+60>>2],s=A[(Q=C- -64|0)>>2],x=A[g- -64>>2],h=A[C+68>>2],q=A[g+68>>2],n=A[C+72>>2],V=A[g+72>>2],B=A[C+40>>2],p=A[g+40>>2],t=A[C+76>>2],A[C+76>>2]=t^e&(A[g+76>>2]^t),A[C+72>>2]=n^e&(n^V),A[C+68>>2]=h^e&(h^q),A[Q>>2]=s^e&(s^x),A[C+60>>2]=_^e&(_^M),A[C+56>>2]=a^e&(a^b),A[C+52>>2]=I^e&(I^D),A[C+48>>2]=o^e&(o^v),A[C+44>>2]=r^e&(r^l),A[C+40>>2]=B^e&(B^p),r=A[C+84>>2],l=A[g+84>>2],o=A[C+88>>2],v=A[g+88>>2],I=A[C+92>>2],D=A[g+92>>2],a=A[C+96>>2],b=A[g+96>>2],_=A[C+100>>2],M=A[g+100>>2],s=A[C+104>>2],Q=A[g+104>>2],h=A[C+108>>2],x=A[g+108>>2],n=A[C+112>>2],q=A[g+112>>2],B=A[C+80>>2],V=A[g+80>>2],p=A[g+116>>2],g=A[C+116>>2],A[C+116>>2]=e&(p^g)^g,A[C+112>>2]=n^e&(n^q),A[C+108>>2]=h^e&(h^x),A[C+104>>2]=s^e&(s^Q),A[C+100>>2]=_^e&(_^M),A[C+96>>2]=a^e&(a^b),A[C+92>>2]=I^e&(I^D),A[C+88>>2]=o^e&(o^v),A[C+84>>2]=r^e&(r^l),A[C+80>>2]=B^e&(B^V)}function j1(C,g){var e,t,r=0;for(W=e=W-192|0,gA(t=e+144|0,g),gA(r=e+96|0,t),gA(r,r),kA(r,g,r),kA(t,t,r),gA(g=e+48|0,t),kA(r,r,g),gA(g,r),gA(g,g),gA(g,g),gA(g,g),gA(g,g),kA(r,g,r),gA(g,r),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),kA(g,g,r),gA(e,g),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),kA(g,e,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),kA(r,g,r),gA(g,r),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),kA(g,g,r),gA(e,g),g=1;gA(e,e),(0|(g=g+1|0))!=100;);kA(g=e+48|0,e,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),kA(r=e+96|0,g,r),gA(r,r),gA(r,r),gA(r,r),gA(r,r),gA(r,r),kA(C,r,e+144|0),W=e+192|0}function fC(C,g){var e,t=0,r=0;for(W=e=W-144|0,gA(r=e+96|0,g),gA(t=e+48|0,r),gA(t,t),kA(t,g,t),kA(r,r,t),gA(r,r),kA(r,t,r),gA(t,r),gA(t,t),gA(t,t),gA(t,t),gA(t,t),kA(r,t,r),gA(t,r),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),kA(t,t,r),gA(e,t),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),kA(t,e,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),kA(r,t,r),gA(t,r),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),kA(t,t,r),gA(e,t),t=1;gA(e,e),(0|(t=t+1|0))!=100;);kA(t=e+48|0,e,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),kA(r=e+96|0,t,r),gA(r,r),gA(r,r),kA(C,r,g),W=e+144|0}function ke(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q=0,V=0,$=0,K=0;W=e=W-320|0,z1(t=C+40|0,g),A[C+84>>2]=0,A[C+88>>2]=0,A[C+80>>2]=1,A[C+92>>2]=0,A[C+96>>2]=0,A[C+100>>2]=0,A[C+104>>2]=0,A[C+108>>2]=0,A[C+112>>2]=0,A[C+116>>2]=0,gA($=e+240|0,t),kA(V=e+192|0,$,1584),K=-1,r=A[e+240>>2]-1|0,A[e+240>>2]=r,A[e+192>>2]=A[e+192>>2]+1,o=A[e+244>>2],I=A[e+248>>2],a=A[e+252>>2],_=A[e+256>>2],s=A[e+260>>2],h=A[e+264>>2],n=A[e+268>>2],B=A[e+272>>2],Q=A[e+276>>2],gA(q=e+144|0,V),kA(q,q,V),gA(C,q),kA(C,C,V),kA(C,C,$),fC(C,C),kA(C,C,q),kA(C,C,$),gA(q=e+96|0,C),kA(q,q,V),V=A[e+132>>2],A[e+84>>2]=V-Q,q=A[e+128>>2],A[e+80>>2]=q-B,$=A[e+124>>2],A[e+76>>2]=$-n,p=A[e+120>>2],A[e+72>>2]=p-h,l=A[e+116>>2],A[e+68>>2]=l-s,v=A[e+112>>2],A[e+64>>2]=v-_,D=A[e+108>>2],A[e+60>>2]=D-a,b=A[e+104>>2],A[e+56>>2]=b-I,M=A[e+100>>2],A[e+52>>2]=M-o,x=A[e+96>>2],A[e+48>>2]=x-r,w2(e,e+48|0);A:{if(!X0(e,32)){if(A[e+36>>2]=V+Q,A[e+32>>2]=q+B,A[e+28>>2]=$+n,A[e+24>>2]=h+p,A[e+20>>2]=s+l,A[e+16>>2]=_+v,A[e+12>>2]=a+D,A[e+8>>2]=I+b,A[e+4>>2]=o+M,A[e>>2]=r+x,w2(V=e+288|0,e),!X0(V,32))break A;kA(C,C,1632)}w2(e+288|0,C),(1&c[e+288|0])==(i[g+31|0]>>>7|0)&&(A[C>>2]=0-A[C>>2],A[C+36>>2]=0-A[C+36>>2],A[C+32>>2]=0-A[C+32>>2],A[C+28>>2]=0-A[C+28>>2],A[C+24>>2]=0-A[C+24>>2],A[C+20>>2]=0-A[C+20>>2],A[C+16>>2]=0-A[C+16>>2],A[C+12>>2]=0-A[C+12>>2],A[C+8>>2]=0-A[C+8>>2],A[C+4>>2]=0-A[C+4>>2]),kA(C+120|0,C,t),K=0}return W=e+320|0,K}function ue(C,g,e){var t,r,o,I,a,_,s,h,n=0;W=t=W-128|0,A[C>>2]=1,A[C+4>>2]=0,A[C+8>>2]=0,A[C+12>>2]=0,A[C+16>>2]=0,A[C+20>>2]=0,A[C+24>>2]=0,A[C+28>>2]=0,A[C+32>>2]=0,A[C+36>>2]=0,A[C+40>>2]=1,$0(C+44|0,0,76),F1(C,g=M0(g,960)+2992|0,(255&(1^(n=e-((e>>31&e)<<1)|0)))-1>>>31|0),F1(C,g+120|0,(255&(2^n))-1>>>31|0),F1(C,g+240|0,(255&(3^n))-1>>>31|0),F1(C,g+360|0,(255&(4^n))-1>>>31|0),F1(C,g+480|0,(255&(5^n))-1>>>31|0),F1(C,g+600|0,(255&(6^n))-1>>>31|0),F1(C,g+720|0,(255&(7^n))-1>>>31|0),F1(C,g+840|0,(255&(8^n))-1>>>31|0),g=A[C+76>>2],A[t+40>>2]=A[C+72>>2],A[t+44>>2]=g,n=A[4+(g=C- -64|0)>>2],A[t+32>>2]=A[g>>2],A[t+36>>2]=n,g=A[C+60>>2],A[t+24>>2]=A[C+56>>2],A[t+28>>2]=g,g=A[C+52>>2],A[t+16>>2]=A[C+48>>2],A[t+20>>2]=g,g=A[C+44>>2],A[t+8>>2]=A[C+40>>2],A[t+12>>2]=g,g=A[C+12>>2],A[t+56>>2]=A[C+8>>2],A[t+60>>2]=g,n=A[C+20>>2],A[(g=t- -64|0)>>2]=A[C+16>>2],A[g+4>>2]=n,g=A[C+28>>2],A[t+72>>2]=A[C+24>>2],A[t+76>>2]=g,g=A[C+36>>2],A[t+80>>2]=A[C+32>>2],A[t+84>>2]=g,g=A[C+4>>2],A[t+48>>2]=A[C>>2],A[t+52>>2]=g,g=A[C+84>>2],n=A[C+88>>2],r=A[C+92>>2],o=A[C+96>>2],I=A[C+100>>2],a=A[C+104>>2],_=A[C+108>>2],s=A[C+112>>2],h=A[C+80>>2],A[t+124>>2]=0-A[C+116>>2],A[t+120>>2]=0-s,A[t+116>>2]=0-_,A[t+112>>2]=0-a,A[t+108>>2]=0-I,A[t+104>>2]=0-o,A[t+100>>2]=0-r,A[t+96>>2]=0-n,A[t+92>>2]=0-g,A[t+88>>2]=0-h,F1(C,t+8|0,(128&e)>>>7|0),W=t+128|0}function Bg(C){var g,e,t,r,o,I,a,_,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0;return W=g=W-320|0,gA(h=g+240|0,C),gA(n=g+192|0,C+40|0),gA(s=g+144|0,C+80|0),C=A[g+240>>2],B=A[g+192>>2],Q=A[g+244>>2],p=A[g+196>>2],l=A[g+248>>2],v=A[g+200>>2],D=A[g+252>>2],b=A[g+204>>2],M=A[g+256>>2],x=A[g+208>>2],q=A[g+260>>2],V=A[g+212>>2],$=A[g+264>>2],K=A[g+216>>2],J=A[g+268>>2],z=A[g+220>>2],_A=A[g+272>>2],sA=A[g+224>>2],A[g+84>>2]=A[g+228>>2]-A[g+276>>2],A[g+80>>2]=sA-_A,A[g+76>>2]=z-J,A[g+72>>2]=K-$,A[g+68>>2]=V-q,A[g+64>>2]=x-M,A[g+60>>2]=b-D,A[g+56>>2]=v-l,A[g+52>>2]=p-Q,A[g+48>>2]=B-C,kA(C=g+48|0,C,s),kA(g,h,n),kA(g,g,1584),gA(g+96|0,s),s=A[g+48>>2],h=A[g+96>>2],n=A[g>>2],B=A[g+52>>2],Q=A[g+100>>2],p=A[g+4>>2],l=A[g+56>>2],v=A[g+104>>2],D=A[g+8>>2],b=A[g+60>>2],M=A[g+108>>2],x=A[g+12>>2],q=A[g+64>>2],V=A[g+112>>2],$=A[g+16>>2],K=A[g+68>>2],J=A[g+116>>2],z=A[g+20>>2],_A=A[g+72>>2],sA=A[g+120>>2],e=A[g+24>>2],t=A[g+76>>2],r=A[g+124>>2],o=A[g+28>>2],I=A[g+80>>2],a=A[g+128>>2],_=A[g+32>>2],A[g+84>>2]=A[g+84>>2]-(A[g+132>>2]+A[g+36>>2]|0),A[g+80>>2]=I-(a+_|0),A[g+76>>2]=t-(r+o|0),A[g+72>>2]=_A-(sA+e|0),A[g+68>>2]=K-(J+z|0),A[g+64>>2]=q-(V+$|0),A[g+60>>2]=b-(M+x|0),A[g+56>>2]=l-(v+D|0),A[g+52>>2]=B-(Q+p|0),A[g+48>>2]=s-(h+n|0),w2(s=g+288|0,C),C=X0(s,32),W=g+320|0,C}function DC(C,g,e,t,r){C|=0,g|=0,e|=0,t|=0;var o=0,I=0,a=0,_=0,s=0,h=0,n=0;A:{g:{C:{e:{t:{o:{i:{if((-7&(r|=0))==1&&(a=(o=(t>>>0)/3|0)<<2,(o=M0(o,-3)+t|0)&&(a=2&r?2+((o>>>1|0)+a|0)|0:a+4|0),!(g>>>0<=a>>>0))){if(!(r>>>0>=4)){if(!t){r=0;break e}o=0,r=0;break i}if(!t){r=0;break e}for(o=0,r=0;;){for(s=i[e+_|0]|s<<8,o|=8;h=65510+(I=s>>>(o=o-6|0)&63)>>>8|0,n=I+65484>>>8|0,c[C+r|0]=~(1+(16321^I))>>>8&45|I+252&I+65474>>>8&~n|~(I+32705)>>>8&95|h&I+65|n&I+71&~h,r=r+1|0,o>>>0>5;);if((0|(_=_+1|0))==(0|t))break}if(!o)break t;_=45,I=32705,t=95;break o}h2(),Q0()}for(;;){for(s=i[e+_|0]|s<<8,o|=8;h=65510+(I=s>>>(o=o-6|0)&63)>>>8|0,n=I+65484>>>8|0,c[C+r|0]=~(1+(16321^I))>>>8&43|I+252&I+65474>>>8&~n|~(I+16321)>>>8&47|h&I+65|n&I+71&~h,r=r+1|0,o>>>0>5;);if((0|(_=_+1|0))==(0|t))break}if(!o)break t;_=43,I=16321,t=47}I=~((e=s<<6-o&63)+I)>>>8&t|(o=e+65510>>>8|0)&e+65,t=e+65484>>>8|0,c[C+r|0]=~(1+(16321^e))>>>8&_|I|e+252&e+65474>>>8&~t|t&e+71&~o,r=r+1|0}if(r>>>0>a>>>0)break C}if(r>>>0>>0)break g;a=r;break A}xg(1104,1218,231,1503),Q0()}$0(C+r|0,61,a-r|0)}return $0(C+a|0,0,(g>>>0>(e=a+1|0)>>>0?g:e)-a|0),0|C}function de(C,g,e){var t,r,o,I=0,a=0,_=0,s=0,h=0;W=t=W-16|0,r=A[C+20>>2],A[C+20>>2]=0,o=A[C+4>>2],A[C+4>>2]=0,_=-26;A:{g:{C:{e:switch(e-1|0){case 1:if(zg(g,1182,9))break g;g=g+9|0;break C;case 0:break e;default:break A}if(zg(g,1173,8))break g;g=g+8|0}if(i[0|g]!=36|i[g+1|0]!=118||(I=i[g+2|0]==61),I&&!(((s=i[0|(e=g+3|0)])-58&255)>>>0<246)){for(h=I?e:g,g=0,I=s;;){if(a=e,g>>>0>429496729||(e=(255&I)-48|0)>>>0>~(g=M0(g,10))>>>0)break g;if(g=g+e|0,!(((I=i[0|(e=a+1|0)])-58&255)>>>0>245))break}if(!((0|s)==48&(0|a)!=(0|h)|(0|e)==(0|h))){if((0|g)!=19)break A;if(!((255&I)!=36|i[a+2|0]!=109|i[a+3|0]!=61)&&(e=Et(a+4|0,g=t+12|0))&&(A[C+44>>2]=A[t+12>>2],!(i[0|e]!=44|i[e+1|0]!=116|i[e+2|0]!=61)&&(e=Et(e+3|0,g))&&(A[C+40>>2]=A[t+12>>2],!(i[0|e]!=44|i[e+1|0]!=112|i[e+2|0]!=61)&&(e=Et(e+3|0,g))&&(I=A[t+12>>2],A[C+48>>2]=I,A[C+52>>2]=I,i[0|e]==36&&(A[t+12>>2]=r,!hC(a=A[C+16>>2],r,I=e=e+1|0,s=p1(e),0,g,e=t+8|0,3)&&(A[C+20>>2]=A[t+12>>2],I=A[t+8>>2],i[0|I]==36&&(A[t+12>>2]=o,I=I+1|0,!hC(A[C>>2],o,I,p1(I),0,g,e,3)))))))){if(A[C+4>>2]=A[t+12>>2],g=A[t+8>>2],_=n0(C))break A;_=i[0|g]?-32:0;break A}}}}_=-32}return W=t+16|0,_}function q2(C,g,e,t){var r=0,o=0,I=0,a=0,_=0,s=0,h=0;if(e|t)A:for(h=C+224|0,_=C+96|0,o=i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24;;){if(r=o+_|0,!t&e>>>0<=(I=256-o|0)>>>0){P0(r,g,e),g=e+(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)|0,c[C+352|0]=g,c[C+353|0]=g>>>8,c[C+354|0]=g>>>16,c[C+355|0]=g>>>24;break A}if(P0(r,g,I),r=(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)+I|0,c[C+352|0]=r,c[C+353|0]=r>>>8,c[C+354|0]=r>>>16,c[C+355|0]=r>>>24,s=o=i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24,o=(a=128+(r=i[C+64|0]|i[C+65|0]<<8|i[C+66|0]<<16|i[C+67|0]<<24)|0)>>>0<128?o+1|0:o,c[C+64|0]=a,c[C+65|0]=a>>>8,c[C+66|0]=a>>>16,c[C+67|0]=a>>>24,c[C+68|0]=o,c[C+69|0]=o>>>8,c[C+70|0]=o>>>16,c[C+71|0]=o>>>24,o=i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24,o=(s=r=(0|s)==-1&r>>>0>4294967167)>>>0>(r=r+(i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24)|0)>>>0?o+1|0:o,c[C+72|0]=r,c[C+73|0]=r>>>8,c[C+74|0]=r>>>16,c[C+75|0]=r>>>24,c[C+76|0]=o,c[C+77|0]=o>>>8,c[C+78|0]=o>>>16,c[C+79|0]=o>>>24,cg(C,_),P0(_,h,128),r=o=(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)-128|0,c[C+352|0]=r,c[C+353|0]=r>>>8,c[C+354|0]=r>>>16,c[C+355|0]=r>>>24,g=g+I|0,!((t=t-(e>>>0>>0)|0)|(e=e-I|0)))break}return 0}function Se(C){var g=0,e=0,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0;for(e=A[C+60>>2],v=A[C+56>>2],l=A[C+52>>2],Q=A[C+48>>2],g=A[C+44>>2],t=A[C+40>>2],D=A[C+36>>2],B=A[C+32>>2],r=A[C+28>>2],o=A[C+24>>2],I=A[C+20>>2],a=A[C+16>>2],_=A[C+12>>2],s=A[C+8>>2],h=A[C+4>>2],n=A[C>>2];p=pA(I+h|0,7)^D,b=pA(p+I|0,9)^l,a=pA(n+Q|0,7)^a,M=pA(a+n|0,9)^B,x=pA(M+a|0,13)^Q,_=pA(g+e|0,7)^_,r=pA(_+e|0,9)^r,B=pA(r+_|0,13)^g,e=pA(r+B|0,18)^e,g=pA(t+o|0,7)^v,Q=x^pA(e+g|0,7),l=b^pA(Q+e|0,9),v=pA(Q+l|0,13)^g,e=pA(l+v|0,18)^e,s=pA(g+t|0,9)^s,o=pA(s+g|0,13)^o,t=pA(o+s|0,18)^t,g=pA(t+p|0,7)^B,B=pA(g+t|0,9)^M,D=pA(g+B|0,13)^p,t=pA(B+D|0,18)^t,h=pA(p+b|0,13)^h,I=pA(h+b|0,18)^I,o=pA(I+a|0,7)^o,r=pA(o+I|0,9)^r,a=pA(r+o|0,13)^a,I=pA(a+r|0,18)^I,n=pA(M+x|0,18)^n,h=pA(n+_|0,7)^h,s=pA(h+n|0,9)^s,_=pA(s+h|0,13)^_,n=pA(_+s|0,18)^n,p=q>>>0<6,q=q+2|0,p;);A[C>>2]=A[C>>2]+n,A[C+4>>2]=A[C+4>>2]+h,A[C+8>>2]=A[C+8>>2]+s,A[C+12>>2]=A[C+12>>2]+_,A[C+16>>2]=A[C+16>>2]+a,A[C+20>>2]=A[C+20>>2]+I,A[C+24>>2]=A[C+24>>2]+o,A[C+28>>2]=A[C+28>>2]+r,A[C+32>>2]=A[C+32>>2]+B,A[C+36>>2]=A[C+36>>2]+D,A[C+40>>2]=A[C+40>>2]+t,A[C+44>>2]=A[C+44>>2]+g,A[C+48>>2]=A[C+48>>2]+Q,A[C+52>>2]=A[C+52>>2]+l,A[C+56>>2]=A[C+56>>2]+v,A[C+60>>2]=A[C+60>>2]+e}function be(C,g,e,t){var r,o=0;return W=r=W-320|0,o=-1,O0(e)&&(a1(e)||T1(r,e)||cC(r)&&(c[0|C]=i[0|g],c[C+1|0]=i[g+1|0],c[C+2|0]=i[g+2|0],c[C+3|0]=i[g+3|0],c[C+4|0]=i[g+4|0],c[C+5|0]=i[g+5|0],c[C+6|0]=i[g+6|0],c[C+7|0]=i[g+7|0],c[C+8|0]=i[g+8|0],c[C+9|0]=i[g+9|0],c[C+10|0]=i[g+10|0],c[C+11|0]=i[g+11|0],c[C+12|0]=i[g+12|0],c[C+13|0]=i[g+13|0],c[C+14|0]=i[g+14|0],c[C+15|0]=i[g+15|0],c[C+16|0]=i[g+16|0],c[C+17|0]=i[g+17|0],c[C+18|0]=i[g+18|0],c[C+19|0]=i[g+19|0],c[C+20|0]=i[g+20|0],c[C+21|0]=i[g+21|0],c[C+22|0]=i[g+22|0],c[C+23|0]=i[g+23|0],c[C+24|0]=i[g+24|0],c[C+25|0]=i[g+25|0],c[C+26|0]=i[g+26|0],c[C+27|0]=i[g+27|0],c[C+28|0]=i[g+28|0],c[C+29|0]=i[g+29|0],c[C+30|0]=i[g+30|0],e=i[g+31|0],t&&(c[0|C]=248&i[0|C],e|=64),c[C+31|0]=127&e,ge(e=r+160|0,C,r),eg(C,e),(127&i[C+31|0]|i[C+30|0]|i[C+29|0]|i[C+28|0]|i[C+27|0]|i[C+26|0]|i[C+25|0]|i[C+24|0]|i[C+23|0]|i[C+22|0]|i[C+21|0]|i[C+20|0]|i[C+19|0]|i[C+18|0]|i[C+17|0]|i[C+16|0]|i[C+15|0]|i[C+14|0]|i[C+13|0]|i[C+12|0]|i[C+11|0]|i[C+10|0]|i[C+9|0]|i[C+8|0]|i[C+7|0]|i[C+6|0]|i[C+5|0]|i[C+4|0]|i[C+3|0]|i[C+2|0]|i[C+1|0]|1^i[0|C])-1&256||(o=X0(g,32)?-1:0))),W=r+320|0,o}function ve(C,g,e,t,r){var o,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0;if(W=o=W-48|0,r&&X2(r,102),!(i[0|t]!=36|i[t+1|0]!=55|i[t+2|0]!=36)&&(h=yg(i[t+3|0]))&&(I=me(o+12|0,t+4|0))&&(s=me(o+8|0,I))){for(a=p1(s)+1|0;I=0,a&&i[0|(I=s+(a=a-1|0)|0)]!=36;);if(_=I-s|0,I||(_=p1(s)),!((_=45+(a=(I=_)+(s-t|0)|0)|0)>>>0>102|I>>>0>_>>>0||(_=C,B=g,Q=e,C=31&(h=h-1024|0),(63&h)>>>0>=32?(g=1<>>32-C,he(_,B,Q,s,I,e,g,A[o+12>>2],A[o+8>>2],o+16|0,32)))){for(I=P0(r,t,a),c[0|(C=I+a|0)]=36,n=(_=I+102|0)-(r=C+1|0)|0,e=0;;){A:if((g=e)>>>0>31)t=r;else if(C=r,e=(a=g+1|0)+(B=(e=31-g|0)>>>0>=2?2:e)|0,t=0,s=0,r=i[(h=o+16|0)+g|0],B&&(r=i[a+h|0]<<8|r,(0|(g=g+2|0))!=(0|e)&&(s=1,r=i[g+h|0]<<16|r)),n&&(c[0|C]=i[1024+(63&r)|0],(0|n)!=1)){if(c[C+1|0]=i[1024+(r>>>6&63)|0],B=C+n|0,g=C+2|0,(0|e)!=(0|a)){if((0|n)==2)break A;if(c[C+2|0]=i[1024+(r>>>12&63)|0],g=C+3|0,s){if((0|n)==3)break A;c[C+3|0]=i[1024+(r>>>18|0)|0],g=C+4|0}}if(n=B-(r=g)|0,r)continue}break}y0(o+16|0,32),n=0,!t|t>>>0>=_>>>0||(c[0|t]=0,n=I)}}return W=o+48|0,n}function D2(C,g){var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0;t=A[g+4>>2],o=A[g+44>>2],I=A[g+8>>2],a=A[g+48>>2],_=A[g+12>>2],s=A[g+52>>2],h=A[g+16>>2],n=A[g+56>>2],B=A[g+20>>2],Q=A[g+60>>2],p=A[g+24>>2],l=A[(r=g- -64|0)>>2],v=A[g+28>>2],D=A[g+68>>2],b=A[g+32>>2],M=A[g+72>>2],x=A[g+36>>2],e=A[g+76>>2],A[C>>2]=A[g>>2]+A[g+40>>2],A[C+36>>2]=x+e,A[C+32>>2]=b+M,A[C+28>>2]=v+D,A[C+24>>2]=p+l,A[C+20>>2]=B+Q,A[C+16>>2]=h+n,A[C+12>>2]=_+s,A[C+8>>2]=I+a,A[C+4>>2]=t+o,t=A[g+4>>2],o=A[g+44>>2],I=A[g+8>>2],a=A[g+48>>2],_=A[g+12>>2],s=A[g+52>>2],h=A[g+16>>2],n=A[g+56>>2],B=A[g+20>>2],Q=A[g+60>>2],p=A[g+24>>2],r=A[r>>2],l=A[g+28>>2],v=A[g+68>>2],D=A[g+32>>2],b=A[g+72>>2],M=A[g>>2],x=A[g+40>>2],A[C+76>>2]=A[g+76>>2]-A[g+36>>2],A[C+72>>2]=b-D,A[C+68>>2]=v-l,A[C- -64>>2]=r-p,A[C+60>>2]=Q-B,A[C+56>>2]=n-h,A[C+52>>2]=s-_,A[C+48>>2]=a-I,A[C+44>>2]=o-t,A[C+40>>2]=x-M,t=A[g+84>>2],A[C+80>>2]=A[g+80>>2],A[C+84>>2]=t,t=A[g+92>>2],A[C+88>>2]=A[g+88>>2],A[C+92>>2]=t,t=A[g+100>>2],A[C+96>>2]=A[g+96>>2],A[C+100>>2]=t,t=A[g+108>>2],A[C+104>>2]=A[g+104>>2],A[C+108>>2]=t,t=A[g+116>>2],A[C+112>>2]=A[g+112>>2],A[C+116>>2]=t,kA(C+120|0,g+120|0,1680)}function a0(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l=0,v=0,D=0,b=0,M=0;l=A[g+12>>2],v=A[g+8>>2],D=A[g+4>>2],t=W+-64&-64,g=A[g>>2],A[t>>2]=A[35744+((255&g)<<2)>>2],A[t+4>>2]=A[35744+(D>>>6&1020)>>2],A[t+8>>2]=A[35744+(v>>>14&1020)>>2],A[t+12>>2]=A[35744+(l>>>22&1020)>>2],A[t+16>>2]=A[35744+((255&D)<<2)>>2],A[t+20>>2]=A[35744+(v>>>6&1020)>>2],A[t+24>>2]=A[35744+(l>>>14&1020)>>2],A[t+28>>2]=A[35744+(g>>>22&1020)>>2],A[t+32>>2]=A[35744+((255&v)<<2)>>2],A[t+36>>2]=A[35744+(l>>>6&1020)>>2],A[t+40>>2]=A[35744+(g>>>14&1020)>>2],A[t+44>>2]=A[35744+(D>>>22&1020)>>2],A[t+48>>2]=A[35744+((255&l)<<2)>>2],A[t+52>>2]=A[35744+(g>>>6&1020)>>2],A[t+56>>2]=A[35744+(D>>>14&1020)>>2],A[t+60>>2]=A[35744+(v>>>22&1020)>>2],g=A[t+12>>2],l=A[t>>2],v=A[t+4>>2],D=A[t+8>>2],r=A[t+28>>2],o=A[t+16>>2],I=A[t+20>>2],a=A[t+24>>2],_=A[t+44>>2],s=A[t+32>>2],h=A[t+36>>2],n=A[t+40>>2],B=A[e>>2],Q=A[e+4>>2],p=A[e+8>>2],b=C,M=A[e+12>>2]^A[t+48>>2]^pA(A[t+52>>2],8)^pA(A[t+56>>2],16)^pA(A[t+60>>2],24),A[b+12>>2]=M,b=C,M=pA(h,8)^s^pA(n,16)^pA(_,24)^p,A[b+8>>2]=M,b=C,M=pA(I,8)^o^pA(a,16)^pA(r,24)^Q,A[b+4>>2]=M,b=C,M=pA(v,8)^l^pA(D,16)^pA(g,24)^B,A[b>>2]=M}function Fe(C,g,e){var t,r=0;return W=t=W-160|0,c[0|C]=i[0|g],c[C+1|0]=i[g+1|0],c[C+2|0]=i[g+2|0],c[C+3|0]=i[g+3|0],c[C+4|0]=i[g+4|0],c[C+5|0]=i[g+5|0],c[C+6|0]=i[g+6|0],c[C+7|0]=i[g+7|0],c[C+8|0]=i[g+8|0],c[C+9|0]=i[g+9|0],c[C+10|0]=i[g+10|0],c[C+11|0]=i[g+11|0],c[C+12|0]=i[g+12|0],c[C+13|0]=i[g+13|0],c[C+14|0]=i[g+14|0],c[C+15|0]=i[g+15|0],c[C+16|0]=i[g+16|0],c[C+17|0]=i[g+17|0],c[C+18|0]=i[g+18|0],c[C+19|0]=i[g+19|0],c[C+20|0]=i[g+20|0],c[C+21|0]=i[g+21|0],c[C+22|0]=i[g+22|0],c[C+23|0]=i[g+23|0],c[C+24|0]=i[g+24|0],c[C+25|0]=i[g+25|0],c[C+26|0]=i[g+26|0],c[C+27|0]=i[g+27|0],c[C+28|0]=i[g+28|0],c[C+29|0]=i[g+29|0],c[C+30|0]=i[g+30|0],r=i[g+31|0],e&&(c[0|C]=248&i[0|C],r|=64),c[C+31|0]=127&r,Cg(t,C),eg(C,t),e=-1,(127&i[C+31|0]|i[C+30|0]|i[C+29|0]|i[C+28|0]|i[C+27|0]|i[C+26|0]|i[C+25|0]|i[C+24|0]|i[C+23|0]|i[C+22|0]|i[C+21|0]|i[C+20|0]|i[C+19|0]|i[C+18|0]|i[C+17|0]|i[C+16|0]|i[C+15|0]|i[C+14|0]|i[C+13|0]|i[C+12|0]|i[C+11|0]|i[C+10|0]|i[C+9|0]|i[C+8|0]|i[C+7|0]|i[C+6|0]|i[C+5|0]|i[C+4|0]|i[C+3|0]|i[C+2|0]|i[C+1|0]|1^i[0|C])-1&256||(e=X0(g,32)?-1:0),W=t+160|0,e}function wC(C,g){var e,t,r,o,I,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0;(a=A[C+56>>2])|(_=A[C+60>>2])&&(c[(h=C- -64|0)+a|0]=1,!((v=a+1|0)?_:_+1|0)&v>>>0<=15&&$0(65+(C+a|0)|0,0,15-a|0),c[C+80|0]=1,BC(C,h,16,0)),v=A[C+52>>2],p=A[C+48>>2],h=A[C+44>>2],a=A[C+24>>2],n=A[C+28>>2]+(a>>>26|0)|0,s=A[C+32>>2]+(n>>>26|0)|0,e=A[C+36>>2]+(s>>>26|0)|0,_=(Q=(a=(a=(67108863&a)+((B=A[C+20>>2]+M0(e>>>26|0,5)|0)>>>26|0)|0)&(n=(s=(I=(67108863&e)+((o=(t=67108863&s)+((r=(l=67108863&n)+((B=a+((_=5+(Q=67108863&B)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)-67108864|0)>>31)|B&(s=67108863&(B=(s>>>31|0)-1|0)))<<26|_&s|n&Q)+A[C+40>>2]|0,c[0|g]=_,c[g+1|0]=_>>>8,c[g+2|0]=_>>>16,c[g+3|0]=_>>>24,Q=_>>>0>>0,_=0,_=(a=(l=n&l|s&r)<<20|a>>>6)>>>0>(a=a+h|0)>>>0?1:_,_=(h=a)>>>0>(a=a+Q|0)>>>0?_+1|0:_,c[g+4|0]=a,c[g+5|0]=a>>>8,c[g+6|0]=a>>>16,c[g+7|0]=a>>>24,a=0,h=(h=(s=n&t|s&o)<<14|l>>>12)>>>0>(p=h+p|0)>>>0?1:a,a=p,p=_,a=a+_|0,_=h,_=a>>>0

>>0?_+1|0:_,c[g+8|0]=a,c[g+9|0]=a>>>8,c[g+10|0]=a>>>16,c[g+11|0]=a>>>24,_=(a=(a=(B&I|n&e)<<8|s>>>18)+v|0)+_|0,c[g+12|0]=_,c[g+13|0]=_>>>8,c[g+14|0]=_>>>16,c[g+15|0]=_>>>24,y0(C,88)}function E1(C,g,e){C|=0,g|=0,e|=0;var t,r=0;return W=t=W-16|0,c[t+15|0]=0,r=-1,0|G2[A[8930]](C,g,e)||(c[t+15|0]=i[0|C]|i[t+15|0],c[t+15|0]=i[C+1|0]|i[t+15|0],c[t+15|0]=i[C+2|0]|i[t+15|0],c[t+15|0]=i[C+3|0]|i[t+15|0],c[t+15|0]=i[C+4|0]|i[t+15|0],c[t+15|0]=i[C+5|0]|i[t+15|0],c[t+15|0]=i[C+6|0]|i[t+15|0],c[t+15|0]=i[C+7|0]|i[t+15|0],c[t+15|0]=i[C+8|0]|i[t+15|0],c[t+15|0]=i[C+9|0]|i[t+15|0],c[t+15|0]=i[C+10|0]|i[t+15|0],c[t+15|0]=i[C+11|0]|i[t+15|0],c[t+15|0]=i[C+12|0]|i[t+15|0],c[t+15|0]=i[C+13|0]|i[t+15|0],c[t+15|0]=i[C+14|0]|i[t+15|0],c[t+15|0]=i[C+15|0]|i[t+15|0],c[t+15|0]=i[C+16|0]|i[t+15|0],c[t+15|0]=i[C+17|0]|i[t+15|0],c[t+15|0]=i[C+18|0]|i[t+15|0],c[t+15|0]=i[C+19|0]|i[t+15|0],c[t+15|0]=i[C+20|0]|i[t+15|0],c[t+15|0]=i[C+21|0]|i[t+15|0],c[t+15|0]=i[C+22|0]|i[t+15|0],c[t+15|0]=i[C+23|0]|i[t+15|0],c[t+15|0]=i[C+24|0]|i[t+15|0],c[t+15|0]=i[C+25|0]|i[t+15|0],c[t+15|0]=i[C+26|0]|i[t+15|0],c[t+15|0]=i[C+27|0]|i[t+15|0],c[t+15|0]=i[C+28|0]|i[t+15|0],c[t+15|0]=i[C+29|0]|i[t+15|0],c[t+15|0]=i[C+30|0]|i[t+15|0],c[t+15|0]=i[C+31|0]|i[t+15|0],r=(i[t+15|0]<<23)-8388608>>31),W=t+16|0,0|r}function Ne(C,g,e,t,r){var o=0,I=0,a=0,_=0,s=0,h=0,n=0;A:{if((0|t)==1|t>>>0>1)A[9404]=22;else{W=t=W-128|0,A[t- -64>>2]=0,A[t+56>>2]=0,A[t+60>>2]=0,A[t+48>>2]=0,A[t+52>>2]=0,A[t+40>>2]=0,A[t+44>>2]=0,A[t+32>>2]=0,A[t+36>>2]=0,A[t+24>>2]=0,A[t+28>>2]=0,A[t+16>>2]=0,A[t+20>>2]=0,o=p1(C),A[t+28>>2]=o,A[t+44>>2]=o,A[t+12>>2]=o,I=r1(o),A[t+40>>2]=I,a=r1(o),A[t+24>>2]=a,_=r1(o),A[t+8>>2]=_;g:if(!_|!I|!a||!(o=r1(o)))M2(I),M2(a),M2(_),C=-22;else{if(C=de(t+8|0,C,r)){M2(A[t+40>>2]),M2(A[t+24>>2]),M2(A[t+8>>2]),M2(o);break g}_=A[t+28>>2],s=A[t+24>>2],C=A[t+60>>2],h=A[t+52>>2],n=A[t+48>>2],X2(o,I=A[t+12>>2]),(a=r1(I))?(A[t+100>>2]=0,A[t+104>>2]=0,A[t+92>>2]=0,A[t+96>>2]=0,A[t+88>>2]=_,A[t+84>>2]=s,A[t+80>>2]=e,A[t+76>>2]=g,A[t+72>>2]=I,A[t+68>>2]=a,A[t+124>>2]=0,A[t+120>>2]=C,A[t+116>>2]=C,A[t+112>>2]=h,A[t+108>>2]=n,(C=Jg(t+68|0,r))||P0(o,a,I),y0(a,I),M2(a)):C=-22,M2(A[t+40>>2]),M2(A[t+24>>2]),C||(C=p2(o,A[t+8>>2],A[t+12>>2])?-35:0),M2(o),M2(A[t+8>>2])}if(W=t+128|0,g=C,!C)break A;(0|C)==-35&&(A[9404]=28)}g=-1}return g}function w2(C,g){var e,t,r,o,I,a,_,s=0,h=0;t=A[g+32>>2],r=A[g+28>>2],o=A[g+24>>2],I=A[g+20>>2],a=A[g+16>>2],_=A[g+12>>2],s=A[g+4>>2],h=A[g>>2],e=A[g+36>>2],g=A[g+8>>2],h=M0((t+(r+(o+(I+(a+(_+((s+(h+(M0(e,19)+16777216>>>25|0)>>26)>>25)+g>>26)>>25)>>26)>>25)>>26)>>25)>>26)+e>>25,19)+h|0,c[0|C]=h,c[C+2|0]=h>>>16,c[C+1|0]=h>>>8,s=s+(h>>26)|0,c[C+5|0]=s>>>14,c[C+4|0]=s>>>6,c[C+3|0]=h>>>24&3|s<<2,g=g+(s>>25)|0,c[C+8|0]=g>>>13,c[C+7|0]=g>>>5,c[C+6|0]=g<<3|(29360128&s)>>>22,h=(g>>26)+_|0,c[C+11|0]=h>>>11,c[C+10|0]=h>>>3,c[C+9|0]=h<<5|(65011712&g)>>>21,s=(h>>25)+a|0,c[C+15|0]=s>>>18,c[C+14|0]=s>>>10,c[C+13|0]=s>>>2,g=(s>>26)+I|0,c[C+16|0]=g,c[C+12|0]=s<<6|(33030144&h)>>>19,c[C+18|0]=g>>>16,c[C+17|0]=g>>>8,s=(g>>25)+o|0,c[C+21|0]=s>>>15,c[C+20|0]=s>>>7,c[C+19|0]=g>>>24&1|s<<1,g=(s>>26)+r|0,c[C+24|0]=g>>>13,c[C+23|0]=g>>>5,c[C+22|0]=g<<3|(58720256&s)>>>23,s=(g>>25)+t|0,c[C+27|0]=s>>>12,c[C+26|0]=s>>>4,c[C+25|0]=s<<4|(31457280&g)>>>21,g=e+(s>>26)|0,c[C+30|0]=g>>>10,c[C+29|0]=g>>>2,c[C+31|0]=(33292288&g)>>>18,c[C+28|0]=g<<6|(66060288&s)>>>20}function N1(C,g,e){C|=0,g|=0;var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0;if(W=t=W-192|0,(e|=0)>>>0>=129&&(b0(C),x2(C,g,e,0),e1(C,t),e=64,g=t),b0(C),$0(t- -64|0,54,128),e){if(e>>>0>=4)for(h=252&e;c[0|(r=(I=t- -64|0)+o|0)]=i[0|r]^i[g+o|0],c[0|(a=(r=1|o)+I|0)]=i[0|a]^i[g+r|0],c[0|(a=(r=2|o)+I|0)]=i[0|a]^i[g+r|0],c[0|(r=(r=I)+(I=3|o)|0)]=i[0|r]^i[g+I|0],o=o+4|0,(0|h)!=(0|(_=_+4|0)););if(_=3&e)for(;c[0|(I=(t- -64|0)+o|0)]=i[0|I]^i[g+o|0],o=o+1|0,(0|_)!=(0|(s=s+1|0)););}if(x2(C,o=t- -64|0,128,0),b0(I=C+208|0),$0(o,92,128),e){if(s=0,o=0,e>>>0>=4)for(h=252&e,_=0;c[0|(r=(C=t- -64|0)+o|0)]=i[0|r]^i[g+o|0],c[0|(a=(r=1|o)+C|0)]=i[0|a]^i[g+r|0],c[0|(a=(r=2|o)+C|0)]=i[0|a]^i[g+r|0],c[0|(r=(r=C)+(C=3|o)|0)]=i[0|r]^i[C+g|0],o=o+4|0,(0|h)!=(0|(_=_+4|0)););if(C=3&e)for(;c[0|(e=(t- -64|0)+o|0)]=i[0|e]^i[g+o|0],o=o+1|0,(0|C)!=(0|(s=s+1|0)););}return x2(I,C=t- -64|0,128,0),y0(C,128),y0(t,64),W=t+192|0,0}function O1(C,g){var e;return C|=0,g|=0,A[12+(e=W-16|0)>>2]=C,A[e+8>>2]=g,A[e+4>>2]=0,A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]]^i[A[e+8>>2]],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+1|0]^i[A[e+8>>2]+1|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+2|0]^i[A[e+8>>2]+2|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+3|0]^i[A[e+8>>2]+3|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+4|0]^i[A[e+8>>2]+4|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+5|0]^i[A[e+8>>2]+5|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+6|0]^i[A[e+8>>2]+6|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+7|0]^i[A[e+8>>2]+7|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+8|0]^i[A[e+8>>2]+8|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+9|0]^i[A[e+8>>2]+9|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+10|0]^i[A[e+8>>2]+10|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+11|0]^i[A[e+8>>2]+11|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+12|0]^i[A[e+8>>2]+12|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+13|0]^i[A[e+8>>2]+13|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+14|0]^i[A[e+8>>2]+14|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+15|0]^i[A[e+8>>2]+15|0],(A[e+4>>2]-1>>>8&1)-1|0}function S(C,g,e,t,r,o,I){var a,_,s,h=0,n=0,B=0,Q=0;W=a=W-352|0,g1(a,o,I,0);A:{if(!(((h=!!(0|r))|!r&t>>>0>C-e>>>0)&C>>>0>e>>>0)&(!r&e-C>>>0>=t>>>0|C>>>0>=e>>>0)){if(A[a+56>>2]=0,A[a+60>>2]=0,A[a+48>>2]=0,A[a+52>>2]=0,A[a+40>>2]=0,A[a+44>>2]=0,A[a+32>>2]=0,A[a+36>>2]=0,n=(I=(h=!!(0|r))|!r&t>>>0>=32)?32:t,B=I?0:r,I=h|!r&t>>>0>32,!(t|r)){Q=1;break A}}else e=jg(C,e,t),A[a+56>>2]=0,A[a+60>>2]=0,A[a+48>>2]=0,A[a+52>>2]=0,A[a+40>>2]=0,A[a+44>>2]=0,A[a+32>>2]=0,A[a+36>>2]=0,n=(I=h|!r&t>>>0>=32)?32:t,B=I?0:r,I=h|!r&t>>>0>32;P0(a- -64|0,e,n),Q=0}return h=B,Ke(_=a+32|0,_,s=n+32|0,h=s>>>0<32?h+1|0:h,h=o+16|0,a),f1(a+96|0,_),Q||P0(C,a- -64|0,n),y0(a+32|0,64),I&&Qg(C+n|0,e+n|0,t-n|0,r-((t>>>0>>0)+B|0)|0,h,1,0,a),y0(a,32),a2(e=a+96|0,C,t,r),D1(e,g),y0(e,256),W=a+352|0,0}function N(C,g,e,t,r,o,I){var a,_,s,h=0,n=0,B=0,Q=0;W=a=W-352|0,S1(a,o,I,0);A:{if(!(((h=!!(0|r))|!r&t>>>0>C-e>>>0)&C>>>0>e>>>0)&(!r&e-C>>>0>=t>>>0|C>>>0>=e>>>0)){if(A[a+56>>2]=0,A[a+60>>2]=0,A[a+48>>2]=0,A[a+52>>2]=0,A[a+40>>2]=0,A[a+44>>2]=0,A[a+32>>2]=0,A[a+36>>2]=0,n=(I=(h=!!(0|r))|!r&t>>>0>=32)?32:t,B=I?0:r,I=h|!r&t>>>0>32,!(t|r)){Q=1;break A}}else e=jg(C,e,t),A[a+56>>2]=0,A[a+60>>2]=0,A[a+48>>2]=0,A[a+52>>2]=0,A[a+40>>2]=0,A[a+44>>2]=0,A[a+32>>2]=0,A[a+36>>2]=0,n=(I=h|!r&t>>>0>=32)?32:t,B=I?0:r,I=h|!r&t>>>0>32;P0(a- -64|0,e,n),Q=0}return h=B,Je(_=a+32|0,_,s=n+32|0,h=s>>>0<32?h+1|0:h,h=o+16|0,a),f1(a+96|0,_),Q||P0(C,a- -64|0,n),y0(a+32|0,64),I&&bC(C+n|0,e+n|0,t-n|0,r-((t>>>0>>0)+B|0)|0,h,1,0,a),y0(a,32),a2(e=a+96|0,C,t,r),D1(e,g),y0(e,256),W=a+352|0,0}function F(C,g,e,t,r){var o;return C|=0,g|=0,e|=0,t|=0,W=o=W-480|0,N1(o,r|=0,32),m1(o,g,e,t),tg(o,o+416|0),g=A[o+444>>2],e=A[o+440>>2],c[C+24|0]=e,c[C+25|0]=e>>>8,c[C+26|0]=e>>>16,c[C+27|0]=e>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[o+436>>2],e=A[o+432>>2],c[C+16|0]=e,c[C+17|0]=e>>>8,c[C+18|0]=e>>>16,c[C+19|0]=e>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[o+428>>2],e=A[o+424>>2],c[C+8|0]=e,c[C+9|0]=e>>>8,c[C+10|0]=e>>>16,c[C+11|0]=e>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[o+420>>2],e=A[o+416>>2],c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,W=o+480|0,0}function k(C,g,e){C|=0,g|=0;var t,r=0;return W=t=W+-64|0,Y0(t,e|=0,32,0),e=A[t+28>>2],r=A[t+24>>2],c[g+24|0]=r,c[g+25|0]=r>>>8,c[g+26|0]=r>>>16,c[g+27|0]=r>>>24,c[g+28|0]=e,c[g+29|0]=e>>>8,c[g+30|0]=e>>>16,c[g+31|0]=e>>>24,e=A[t+20>>2],r=A[t+16>>2],c[g+16|0]=r,c[g+17|0]=r>>>8,c[g+18|0]=r>>>16,c[g+19|0]=r>>>24,c[g+20|0]=e,c[g+21|0]=e>>>8,c[g+22|0]=e>>>16,c[g+23|0]=e>>>24,e=A[t+12>>2],r=A[t+8>>2],c[g+8|0]=r,c[g+9|0]=r>>>8,c[g+10|0]=r>>>16,c[g+11|0]=r>>>24,c[g+12|0]=e,c[g+13|0]=e>>>8,c[g+14|0]=e>>>16,c[g+15|0]=e>>>24,e=A[t+4>>2],r=A[t>>2],c[0|g]=r,c[g+1|0]=r>>>8,c[g+2|0]=r>>>16,c[g+3|0]=r>>>24,c[g+4|0]=e,c[g+5|0]=e>>>8,c[g+6|0]=e>>>16,c[g+7|0]=e>>>24,y0(t,64),C=Pe(C,g),W=t- -64|0,0|C}function m(C,g){var e=0,t=0,r=0,o=0,I=0,a=0;return g>>>0>4294967168?48:(g>>>0>=4294967168?(A[9404]=48,e=0):(e=0,(g=r1(76+(o=g>>>0<11?16:g+11&-8)|0))&&(e=g-8|0,63&g?(r=(-8&(a=A[(I=g-4|0)>>2]))-(t=(g=((g=(g+63&-64)-8|0)-e>>>0<=15?64:0)+g|0)-e|0)|0,3&a?(A[g+4>>2]=r|1&A[g+4>>2]|2,A[4+(r=g+r|0)>>2]=1|A[r+4>>2],A[I>>2]=t|1&A[I>>2]|2,A[4+(r=e+t|0)>>2]=1|A[r+4>>2],ye(e,t)):(e=A[e>>2],A[g+4>>2]=r,A[g>>2]=e+t)):g=e,3&(e=A[g+4>>2])&&((t=-8&e)>>>0<=o+16>>>0||(A[g+4>>2]=o|1&e|2,e=g+o|0,o=t-o|0,A[e+4>>2]=3|o,A[4+(t=g+t|0)>>2]=1|A[t+4>>2],ye(e,o))),e=g+8|0)),e?(A[C>>2]=e,0):48)}function P(C,g,e,t,r,o,I,a,_,s,h){var n;if(n=$0(C,0,g),(0|e)==1|e>>>0>1)return A[9404]=22,-1;if(!(!e&g>>>0<=15)){if(!(!(o|_)&s>>>0<2147483649))return A[9404]=22,-1;if(!(!((!_&a>>>0>=3|!!(0|_))&s>>>0>8191)|(0|t)==(0|n)))return(0|h)==1?(o=s>>>10|0,W=C=W+-64|0,n&&X2(n,g),(e=r1(g))?(A[C+36>>2]=0,A[C+40>>2]=0,A[C+28>>2]=0,A[C+32>>2]=0,A[C+24>>2]=16,A[C+20>>2]=I,A[C+16>>2]=r,A[C+12>>2]=t,A[C+8>>2]=g,A[C+4>>2]=e,A[C+60>>2]=0,A[C+56>>2]=1,A[C+52>>2]=1,A[C+48>>2]=o,A[C+44>>2]=a,(t=Jg(C+4|0,1))|!n||P0(n,e,g),y0(e,g),M2(e)):t=-22,W=C- -64|0,t?-1:0):(A[9404]=28,-1)}return A[9404]=28,-1}function Y(C,g,e,t,r,o,I){var a,_,s=0,h=0,n=0;W=a=W-96|0,S1(a,o,I,0),kt(I=a+32|0,32,0,_=o+16|0,a),o=-1;A:{g:if(!Le(e,g,t,r,I)){if(o=0,!C)break A;C:{if(!(((e=!!(0|r))|!r&t>>>0>g-C>>>0)&C>>>0>>0)&(!r&t>>>0<=C-g>>>0|C>>>0<=g>>>0)){if(!(t|r))break C;e=(o=!r&t>>>0>=32|!!(0|r))?32:t,s=o?0:r}else g=jg(C,g,t),e=(o=e|!r&t>>>0>=32)?32:t,s=o?0:r;if(o=s,n=P0(a- -64|0,g,e),Je(I=a+32|0,I,h=e+32|0,o=h>>>0<32?o+1|0:o,_,a),C=P0(C,n,e),y0(I,64),o=0,!r&t>>>0<33)break g;bC(C+e|0,g+e|0,t-e|0,r-(s+(e>>>0>t>>>0)|0)|0,_,1,0,a);break g}Je(C=a+32|0,C,32,0,_,a),y0(C,64)}y0(a,32)}return W=a+96|0,o}function AA(C,g,e,t,r,o,I,a,_,s,h){var n;if(n=$0(C,0,g),(0|e)==1|e>>>0>1)return A[9404]=22,-1;if(!(!e&g>>>0<=15)){if(!(!(o|_)&s>>>0<2147483649))return A[9404]=22,-1;if(!(!(!!(a|_)&s>>>0>8191)|(0|t)==(0|n)))return(0|h)==2?(o=s>>>10|0,W=C=W+-64|0,n&&X2(n,g),(e=r1(g))?(A[C+36>>2]=0,A[C+40>>2]=0,A[C+28>>2]=0,A[C+32>>2]=0,A[C+24>>2]=16,A[C+20>>2]=I,A[C+16>>2]=r,A[C+12>>2]=t,A[C+8>>2]=g,A[C+4>>2]=e,A[C+60>>2]=0,A[C+56>>2]=1,A[C+52>>2]=1,A[C+48>>2]=o,A[C+44>>2]=a,(t=Jg(C+4|0,2))|!n||P0(n,e,g),y0(e,g),M2(e)):t=-22,W=C- -64|0,t?-1:0):(A[9404]=28,-1)}return A[9404]=28,-1}function QA(C,g,e,t,r,o,I){var a,_,s=0,h=0;W=a=W-96|0,g1(a,o,I,0),kC(I=a+32|0,32,0,_=o+16|0,a),o=-1;A:{g:if(!Le(e,g,t,r,I)){if(o=0,!C)break A;C:{if(!(((e=!!(0|r))|!r&t>>>0>g-C>>>0)&C>>>0>>0)&(!r&t>>>0<=C-g>>>0|C>>>0<=g>>>0)){if(!(t|r))break C;e=(o=!r&t>>>0>=32|!!(0|r))?32:t,I=o?0:r}else g=jg(C,g,t),e=(o=e|!r&t>>>0>=32)?32:t,I=o?0:r;if(s=e,h=P0(a- -64|0,g,e),Ke(e=a+32|0,e,o=s+32|0,o>>>0<32?I+1|0:I,_,a),e=P0(C,h,s),o=0,!r&t>>>0<33)break g;Qg(e+s|0,g+s|0,t-s|0,r-(I+(t>>>0>>0)|0)|0,_,1,0,a);break g}Ke(C=a+32|0,C,32,0,_,a)}y0(a,32)}return W=a+96|0,o}function lA(C,g,e,t,r,o,I,a,_,s){var h,n;return W=h=W-400|0,A[h+4>>2]=0,g1(n=h+16|0,_,s,0),s=i[_+20|0]|i[_+21|0]<<8|i[_+22|0]<<16|i[_+23|0]<<24,A[h+8>>2]=i[_+16|0]|i[_+17|0]<<8|i[_+18|0]<<16|i[_+19|0]<<24,A[h+12>>2]=s,rg(s=h+80|0,64,0,h+4|0,n),f1(_=h+144|0,s),y0(s,64),a2(_,o,I,a),a2(_,35680,0-I&15,0),a2(_,g,e,t),a2(_,35680,0-e&15,0),A[h+72>>2]=I,A[h+76>>2]=a,a2(_,o=h+72|0,8,0),A[h+72>>2]=e,A[h+76>>2]=t,a2(_,o,8,0),D1(_,o=h+48|0),y0(_,256),_=O1(o,r),y0(o,16),C&&(_?($0(C,0,e),_=-1):(Gr(C,g,e,t,h+4|0,h+16|0),_=0)),y0(h+16|0,32),W=h+400|0,_}function NA(C,g,e,t,r,o){var I,a;if(W=I=W-496|0,Y1(a=I+288|0,C,g),M1(a,e,t,0),o)for(C=0,g=0;e=(g=g+1|0)<<24|(65280&g)<<8|g>>>8&65280|g>>>24,c[I+76|0]=e,c[I+77|0]=e>>>8,c[I+78|0]=e>>>16,c[I+79|0]=e>>>24,P0(e=I+80|0,I+288|0,208),M1(e,I+76|0,4,0),Og(e,I+32|0),e=A[I+60>>2],A[I+24>>2]=A[I+56>>2],A[I+28>>2]=e,e=A[I+52>>2],A[I+16>>2]=A[I+48>>2],A[I+20>>2]=e,e=A[I+44>>2],A[I+8>>2]=A[I+40>>2],A[I+12>>2]=e,e=A[I+36>>2],A[I>>2]=A[I+32>>2],A[I+4>>2]=e,P0(e=C+r|0,I,(C=o-C|0)>>>0>=32?32:C),o>>>0>(C=g<<5)>>>0;);y0(I+288|0,208),W=I+496|0}function PA(C,g,e,t,r,o){var I,a,_=0;return W=I=W-32|0,_=-1,(a=e>>>0<32)&!t||(Sr(I,32,0,r,o),Le(g+16|0,g+32|0,e-32|0,t-a|0,I)||(ft(C,g,e,t,r,o),c[C+24|0]=0,c[C+25|0]=0,c[C+26|0]=0,c[C+27|0]=0,c[C+28|0]=0,c[C+29|0]=0,c[C+30|0]=0,c[C+31|0]=0,c[C+16|0]=0,c[C+17|0]=0,c[C+18|0]=0,c[C+19|0]=0,c[C+20|0]=0,c[C+21|0]=0,c[C+22|0]=0,c[C+23|0]=0,c[C+8|0]=0,c[C+9|0]=0,c[C+10|0]=0,c[C+11|0]=0,c[C+12|0]=0,c[C+13|0]=0,c[C+14|0]=0,c[C+15|0]=0,c[0|C]=0,c[C+1|0]=0,c[C+2|0]=0,c[C+3|0]=0,c[C+4|0]=0,c[C+5|0]=0,c[C+6|0]=0,c[C+7|0]=0,_=0)),W=I+32|0,_}function jA(C,g,e,t,r,o,I,a,_,s,h){var n,B,Q;return W=n=W-384|0,A[n+4>>2]=0,g1(B=n+16|0,s,h,0),h=i[s+20|0]|i[s+21|0]<<8|i[s+22|0]<<16|i[s+23|0]<<24,A[n+8>>2]=i[s+16|0]|i[s+17|0]<<8|i[s+18|0]<<16|i[s+19|0]<<24,A[n+12>>2]=h,rg(h=n- -64|0,64,0,Q=n+4|0,B),f1(s=n+128|0,h),y0(h,64),a2(s,I,a,_),a2(s,35680,0-a&15,0),Gr(C,t,r,o,Q,B),a2(s,C,r,o),a2(s,35680,0-r&15,0),A[n+56>>2]=a,A[n+60>>2]=_,a2(s,C=n+56|0,8,0),A[n+56>>2]=r,A[n+60>>2]=o,a2(s,C,8,0),D1(s,g),y0(s,256),e&&(A[e>>2]=16,A[e+4>>2]=0),y0(n+16|0,32),W=n+384|0,0}function C0(C,g,e,t,r){var o,I,a=0;return W=o=W+-64|0,!e&(I=p1(C))>>>0<128?(A[o+60>>2]=0,A[o+52>>2]=0,A[o+56>>2]=0,A[o+44>>2]=0,A[o+48>>2]=0,e=0,I&&(e=I,(1|I)>>>0<65536||(e=I)),!(a=r1(e))|!(3&i[a-4|0])||$0(a,0,e),a?(A[o+36>>2]=0,A[o+40>>2]=0,A[o+12>>2]=a,A[o+20>>2]=a,A[o+24>>2]=I,A[o+4>>2]=a,A[o+16>>2]=I,A[o+28>>2]=0,A[o+32>>2]=0,A[o+8>>2]=I,de(o+4|0,C,r)?(A[9404]=28,C=-1):C=A[o+44>>2]!=(0|g)|A[o+48>>2]!=(t>>>10|0),M2(a)):C=-1):(A[9404]=28,C=-1),W=o- -64|0,C}function n0(C){var g,e=0,t=0;if(!C)return-25;if(!A[C>>2])return-1;if(O2[C+4>>2]<16)return-2;if(!(A[C+8>>2]|!A[C+12>>2]))return-18;if(e=A[C+20>>2],!A[C+16>>2])return e?-19:-6;if(e>>>0<8)return-6;if(!(A[C+24>>2]|!A[C+28>>2]))return-20;if(!(A[C+32>>2]|!A[C+36>>2]))return-21;if(!(e=A[C+48>>2]))return-16;if(e>>>0>16777215)return-17;if(t=-14,!((g=A[C+44>>2])>>>0<8)){if(g>>>0>2097152)return-15;if(!(e<<3>>>0>g>>>0)){if(!A[C+40>>2])return-12;if(!(C=A[C+52>>2]))return-28;t=C>>>0>16777215?-29:0}}return t}function l0(C,g){var e,t=0,r=0;e=g;A:{g:{C:{if(g&=255){if(3&C)for(;;){if(!(t=i[0|C])|(0|g)==(0|t))break A;if(!(3&(C=C+1|0)))break}if((-2139062144&((t=A[C>>2])|16843008-t))!=-2139062144)break C;for(r=M0(g,16843009);;){if((-2139062144&(16843008-(g=t^r)|g))!=-2139062144)break C;if(t=A[C+4>>2],C=g=C+4|0,(-2139062144&(16843008-t|t))!=-2139062144)break}break g}C=p1(C)+C|0;break A}g=C}for(;;){if(!(t=i[0|(C=g)]))break A;if(g=C+1|0,(0|t)==(255&e))break}}return i[0|C]==(255&e)?C:0}function Y0(C,g,e,t){var r,o=0;return W=r=W-208|0,A[r+72>>2]=0,A[r+76>>2]=0,o=A[8591],A[r+8>>2]=A[8590],A[r+12>>2]=o,o=A[8593],A[r+16>>2]=A[8592],A[r+20>>2]=o,o=A[8595],A[r+24>>2]=A[8594],A[r+28>>2]=o,o=A[8597],A[r+32>>2]=A[8596],A[r+36>>2]=o,o=A[8599],A[r+40>>2]=A[8598],A[r+44>>2]=o,o=A[8601],A[r+48>>2]=A[8600],A[r+52>>2]=o,o=A[8603],A[r+56>>2]=A[8602],A[r+60>>2]=o,A[r+64>>2]=0,A[r+68>>2]=0,o=A[8589],A[r>>2]=A[8588],A[r+4>>2]=o,x2(r,g,e,t),e1(r,C),W=r+208|0,0}function b0(C){var g=0;return A[64+(C|=0)>>2]=0,A[C+68>>2]=0,A[C+72>>2]=0,A[C+76>>2]=0,g=A[8589],A[C>>2]=A[8588],A[C+4>>2]=g,g=A[8591],A[C+8>>2]=A[8590],A[C+12>>2]=g,g=A[8593],A[C+16>>2]=A[8592],A[C+20>>2]=g,g=A[8595],A[C+24>>2]=A[8594],A[C+28>>2]=g,g=A[8597],A[C+32>>2]=A[8596],A[C+36>>2]=g,g=A[8599],A[C+40>>2]=A[8598],A[C+44>>2]=g,g=A[8601],A[C+48>>2]=A[8600],A[C+52>>2]=g,g=A[8603],A[C+56>>2]=A[8602],A[C+60>>2]=g,0}function O0(C){return~((127&~i[C+31|0]|i[C+1|0]&i[C+2|0]&i[C+3|0]&i[C+4|0]&i[C+5|0]&i[C+6|0]&i[C+7|0]&i[C+8|0]&i[C+9|0]&i[C+10|0]&i[C+11|0]&i[C+12|0]&i[C+13|0]&i[C+14|0]&i[C+15|0]&i[C+16|0]&i[C+17|0]&i[C+18|0]&i[C+19|0]&i[C+20|0]&i[C+21|0]&i[C+22|0]&i[C+23|0]&i[C+24|0]&i[C+25|0]&i[C+26|0]&i[C+27|0]&i[C+28|0]&i[C+30|0]&i[C+29|0]^255)-1&236-i[0|C])>>>8&1}function X0(C,g){var e,t=0,r=0,o=0,I=0;if(c[15+(e=W-16|0)|0]=0,g){if(g>>>0>=4)for(I=-4&g;t=C+r|0,c[e+15|0]=i[0|t]|i[e+15|0],c[e+15|0]=i[t+1|0]|i[e+15|0],c[e+15|0]=i[t+2|0]|i[e+15|0],c[e+15|0]=i[t+3|0]|i[e+15|0],r=r+4|0,(0|I)!=(0|(o=o+4|0)););if(t=3&g)for(g=0;c[e+15|0]=i[C+r|0]|i[e+15|0],r=r+1|0,(0|t)!=(0|(g=g+1|0)););}return i[e+15|0]-1>>>8&1}function p2(C,g,e){var t,r=0,o=0;if(A[12+(t=W-16|0)>>2]=C,A[t+8>>2]=g,C=0,c[t+7|0]=0,e){if(g=1&e,(0|e)!=1)for(o=-2&e,e=0;c[t+7|0]=i[t+7|0]|i[A[t+12>>2]+C|0]^i[A[t+8>>2]+C|0],r=1|C,c[t+7|0]=i[t+7|0]|i[r+A[t+12>>2]|0]^i[A[t+8>>2]+r|0],C=C+2|0,(0|o)!=(0|(e=e+2|0)););g&&(c[t+7|0]=i[t+7|0]|i[A[t+12>>2]+C|0]^i[A[t+8>>2]+C|0])}return(i[t+7|0]-1>>>8&1)-1|0}function a1(C){for(var g=0,e=0,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0;r=(e=i[C+t|0])^i[0|(g=t+2688|0)]|r,o=e^i[g+192|0]|o,I=e^i[g+160|0]|I,a=e^i[g+128|0]|a,_=e^i[g+96|0]|_,s=e^i[g- -64|0]|s,h=e^i[g+32|0]|h,(0|(t=t+1|0))!=31;);return((255&((g=127^(C=127&i[C+31|0]))|o))-1|(255&(g|I))-1|(255&(g|a))-1|(255&(122^C|_))-1|(255&(5^C|s))-1|(255&(C|h))-1|(255&(C|r))-1)>>>8&1}function G(C,g,e){var t=0,r=0,o=0,I=0;return r=31&(o=I=63&e),o=o>>>0>=32?-1>>>r|0:(t=-1>>>r|0)|(1<>>0>=32?(t=o<>>32-r|t<>>0>=32?(t=-1<>>32-t,C&=e,g&=t,t=31&r,r>>>0>=32?(e=0,C=g>>>t|0):(e=g>>>t|0,C=((1<>>t),y=e|o,C|I}function Tt(C,g,e,t,r,o){C|=0,g|=0,e|=0;var I=0,a=0;A:g:{C:{if(!(!(r|=0)&(t|=0)>>>0<64||(a=1+(r=r-1|0)|0,I=r,!(t=(r=t+-64|0)>>>0<4294967232?a:I)&r>>>0>4294967231|t))){if(!oC(I=e,e=e- -64|0,r,t,o|=0,0))break C;C&&$0(C,0,r)}if(t=-1,!g)break g;A[g>>2]=0,A[g+4>>2]=0,t=-1;break A}g&&(A[g>>2]=r,A[g+4>>2]=t),t=0,C&&jg(C,e,r)}return 0|t}function jt(C,g,e,t,r,o,I,a,_,s){var h,n,B;return W=h=W-352|0,rg(B=h+32|0,64,0,_,s),f1(n=h+96|0,B),y0(B,64),a2(n,o,I,a),a2(n,35648,0-I&15,0),a2(n,g,e,t),a2(n,35648,0-e&15,0),A[h+24>>2]=I,A[h+28>>2]=a,a2(n,o=h+24|0,8,0),A[h+24>>2]=e,A[h+28>>2]=t,a2(n,o,8,0),D1(n,h),y0(n,256),o=O1(h,r),y0(h,16),C&&(o?($0(C,0,e),o=-1):(hg(C,g,e,t,_,1,s),o=0)),W=h+352|0,o}function Ot(C,g,e,t,r,o){var I,a;return C|=0,g|=0,e|=0,t|=0,o|=0,W=I=W-32|0,a=i[0|(r|=0)]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,r=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[I+24>>2]=0,A[I+28>>2]=0,A[I+16>>2]=a,A[I+20>>2]=r,A[I+8>>2]=0,A[I+12>>2]=0,A[I>>2]=e,A[I+4>>2]=t,g-65>>>0<=4294967246?(A[9404]=28,C=-1):C=se(C,g,0,0,0,o,32,I,I+16|0),W=I+32|0,0|C}function Xt(C,g,e,t,r){var o,I;return C|=0,g|=0,e|=0,t|=0,W=o=W-512|0,N1(I=o+32|0,r|=0,32),m1(I,g,e,t),tg(I,o+448|0),g=A[o+476>>2],A[o+24>>2]=A[o+472>>2],A[o+28>>2]=g,g=A[o+468>>2],A[o+16>>2]=A[o+464>>2],A[o+20>>2]=g,g=A[o+460>>2],A[o+8>>2]=A[o+456>>2],A[o+12>>2]=g,g=A[o+452>>2],A[o>>2]=A[o+448>>2],A[o+4>>2]=g,g=Xg(C,o),e=p2(o,C,32),W=o+512|0,((0|C)==(0|o)?-1:g)|e}function Vt(C,g,e,t,r,o,I,a,_,s){var h,n,B;return W=h=W-352|0,kC(B=h+32|0,64,0,_,s),f1(n=h+96|0,B),y0(B,64),a2(n,o,I,a),A[h+24>>2]=I,A[h+28>>2]=a,a2(n,o=h+24|0,8,0),a2(n,g,e,t),A[h+24>>2]=e,A[h+28>>2]=t,a2(n,o,8,0),D1(n,h),y0(n,256),o=O1(h,r),y0(h,16),C&&(o?($0(C,0,e),o=-1):(Qg(C,g,e,t,_,1,0,s),o=0)),W=h+352|0,o}function Wt(C,g,e,t,r,o,I,a,_,s,h){var n,B,Q;return W=n=W-336|0,rg(Q=n+16|0,64,0,s,h),f1(B=n+80|0,Q),y0(Q,64),a2(B,I,a,_),a2(B,35648,0-a&15,0),hg(C,t,r,o,s,1,h),a2(B,C,r,o),a2(B,35648,0-r&15,0),A[n+8>>2]=a,A[n+12>>2]=_,a2(B,C=n+8|0,8,0),A[n+8>>2]=r,A[n+12>>2]=o,a2(B,C,8,0),D1(B,g),y0(B,256),e&&(A[e>>2]=16,A[e+4>>2]=0),W=n+336|0,0}function Et(C,g){var e,t=0,r=0,o=0,I=0,a=0;A:if(!(((e=i[0|C])-58&255)>>>0<246)){for(t=e,r=C;;){if(I=r,o>>>0>429496729||(t=(255&t)-48|0)>>>0>~(o=M0(o,10))>>>0)break A;if(o=o+t|0,!(((t=i[0|(r=r+1|0)])-58&255)>>>0>245))break}(0|e)==48&(0|C)!=(0|I)|(0|C)==(0|r)||(A[g>>2]=o,a=r)}return a}function yg(C){var g=0,e=0,t=0,r=0;g=65,e=1024;A:{g:{if((0|(t=255&C))!=i[1024])for(t=M0(t,16843009);;){if((-2139062144&((r=t^A[e>>2])|16843008-r))!=-2139062144)break g;if(e=e+4|0,!((g=g-4|0)>>>0>3))break}if(!g)break A}for(C&=255;;){if((0|C)==i[0|e])return e;if(e=e+1|0,!(g=g-1|0))break}}return 0}function Zt(C,g,e,t,r,o,I,a,_,s,h){var n,B,Q;return W=n=W-336|0,kC(Q=n+16|0,64,0,s,h),f1(B=n+80|0,Q),y0(Q,64),a2(B,I,a,_),A[n+8>>2]=a,A[n+12>>2]=_,a2(B,I=n+8|0,8,0),Qg(C,t,r,o,s,1,0,h),a2(B,C,r,o),A[n+8>>2]=r,A[n+12>>2]=o,a2(B,I,8,0),D1(B,g),y0(B,256),e&&(A[e>>2]=16,A[e+4>>2]=0),W=n+336|0,0}function $t(C,g,e,t,r,o){return!t&e>>>0>=32|t?(ft(C,g,e,t,r,o),qr(C+16|0,C+32|0,e-32|0,t-(e>>>0<32)|0,C),c[C+8|0]=0,c[C+9|0]=0,c[C+10|0]=0,c[C+11|0]=0,c[C+12|0]=0,c[C+13|0]=0,c[C+14|0]=0,c[C+15|0]=0,c[0|C]=0,c[C+1|0]=0,c[C+2|0]=0,c[C+3|0]=0,c[C+4|0]=0,c[C+5|0]=0,c[C+6|0]=0,c[C+7|0]=0,C=0):C=-1,C}function p1(C){var g=0,e=0,t=0;A:{g:if(3&(g=C)){if(!i[0|g])return 0;for(;;){if(!(3&(g=g+1|0)))break g;if(!i[0|g])break}break A}for(;e=g,g=g+4|0,(-2139062144&((t=A[e>>2])|16843008-t))==-2139062144;);for(;e=(g=e)+1|0,i[0|g];);}return g-C|0}function Ar(C,g,e,t,r,o){g|=0,r|=0,o|=0;var I,a=0;return W=I=W-16|0,aC(C|=0,I+8|0,jg(C- -64|0,e|=0,t|=0),t,r,o,0),A[I+12>>2]|A[I+8>>2]!=64?(g&&(A[g>>2]=0,A[g+4>>2]=0),$0(C,0,t- -64|0),a=-1):g&&(A[g>>2]=t- -64,A[g+4>>2]=r-((t>>>0<4294967232)-1|0)),W=I+16|0,0|a}function me(C,g){var e,t=0,r=0,o=0,I=0;return(e=yg(i[0|g]))&&(t=yg(i[g+1|0]))&&(r=yg(i[g+2|0]))&&(o=yg(i[g+3|0]))&&(I=yg(i[g+4|0]))?(A[C>>2]=e-1024|t-1024<<6|r-1024<<12|o-1024<<18|I-1024<<24,g+5|0):(A[C>>2]=0,0)}function gr(C,g,e){var t;for(A[12+(t=W-16|0)>>2]=C,A[t+8>>2]=g,C=0,A[t+4>>2]=0;A[t+4>>2]=A[t+4>>2]|i[A[t+12>>2]+C|0]^i[A[t+8>>2]+C|0],g=1|C,A[t+4>>2]=A[t+4>>2]|i[g+A[t+12>>2]|0]^i[g+A[t+8>>2]|0],(0|e)!=(0|(C=C+2|0)););return(A[t+4>>2]-1>>>8&1)-1|0}function Cr(C,g,e,t,r,o,I,a,_,s,h){var n=0,B=0,Q=0;return B=-1,(n=t>>>0<32)&!r||!(n=r-n|0)&(Q=t-32|0)>>>0>4294967263|n|!a&I>>>0>4294967263|a||(B=0|G2[A[h>>2]](C,e,Q,(e+t|0)-32|0,32,o,I,_,s)),g&&(A[g>>2]=B?0:t-32|0,A[g+4>>2]=B?0:r-(t>>>0<32)|0),B}function er(C,g){var e,t=0,r=0,o=0;W=e=W-896|0,z1(t=e+848|0,g),z1(r=e+800|0,g+32|0),ce(o=e+320|0,t),ce(g=e+160|0,r),D2(t=e+640|0,g),b2(g=e+480|0,o,t),kA(e,g,t=e+600|0),kA(e+40|0,r=e+520|0,o=e+560|0),kA(e+80|0,o,t),kA(e+120|0,g,r),Ig(C,e),W=e+896|0}function tr(C){var g=0,e=0,t=0,r=0,o=0;for(g=1;e=(t=g)+i[0|(g=C+r|0)]|0,c[0|g]=e,e=i[g+1|0]+(e>>>8|0)|0,c[g+1|0]=e,e=i[g+2|0]+(e>>>8|0)|0,c[g+2|0]=e,t=g,g=i[g+3|0]+(e>>>8|0)|0,c[t+3|0]=g,g=g>>>8|0,r=r+4|0,(0|(o=o+4|0))!=4;);}function rr(C,g,e,t,r,o,I){var a;return W=a=W-16|0,C=$0(C,0,128),!(t|o)&I>>>0<2147483649?(!o&r>>>0>=3|!!(0|o))&I>>>0>8191?(X2(a,16),C=Be(r,I>>>10|0,g,e,a,C,1)?-1:0):(A[9404]=28,C=-1):(A[9404]=22,C=-1),W=a+16|0,C}function ar(C,g){var e=0;4&g&&((g=A[C>>2])&&y0(A[g+4>>2],A[C+16>>2]<<10),(g=A[C+4>>2])&&y0(g,A[C+20>>2]<<3)),M2(A[C+4>>2]),A[C+4>>2]=0,(g=A[C>>2])&&(e=A[g>>2])&&M2(e),M2(g),A[C>>2]=0}function ir(C,g,e,t,r,o,I,a,_,s,h){return!r&t>>>0>4294967263|!!(0|r)|!a&I>>>0>=4294967264|!!(0|a)?(h2(),Q0()):(C=0|G2[A[h>>2]](C,C+t|0,32,e,t,o,I,_,s),g&&(t=(e=t+32|0)>>>0<32?r+1|0:r,A[g>>2]=C?0:e,A[g+4>>2]=C?0:t)),C}function or(C){var g=0,e=0,t=0,r=0,o=0,I=0,a=0,_=0;for(g=32,e=1;_|=(r=i[(t=g-2|0)+C|0])-(o=i[t+2912|0])>>8&(g=((I=i[2912+(g=g-1|0)|0])^(a=i[C+g|0]))-1>>8&e)|a-I>>8&e,e=g&(r^o)-1>>8,g=t;);return!!(255&_)}function _r(C,g,e,t,r,o,I){var a;return W=a=W-16|0,C=$0(C,0,128),!(t|o)&I>>>0<2147483649?!!(r|o)&I>>>0>8191?(X2(a,16),C=Be(r,I>>>10|0,g,e,a,C,2)?-1:0):(A[9404]=28,C=-1):(A[9404]=22,C=-1),W=a+16|0,C}function Me(C){var g=0;return A[32+(C|=0)>>2]=0,A[C+36>>2]=0,g=A[8809],A[C>>2]=A[8808],A[C+4>>2]=g,g=A[8811],A[C+8>>2]=A[8810],A[C+12>>2]=g,g=A[8813],A[C+16>>2]=A[8812],A[C+20>>2]=g,g=A[8815],A[C+24>>2]=A[8814],A[C+28>>2]=g,0}function cr(C,g,e,t,r,o,I){var a,_,s=0,h=0;return W=a=W+-64|0,s=-1,(_=e>>>0<16)&!t||E1(h=a+32|0,I,o)||g1(a,35584,h,0)||(s=QA(C,g+16|0,g,e-16|0,t-_|0,r,a),y0(a,32)),W=a- -64|0,s}function w(C,g,e,t){var r,o,I,a,_=0,s=0;return a=M0(_=e>>>16|0,s=C>>>16|0),_=(65535&(s=((I=M0(r=65535&e,o=65535&C))>>>16|0)+M0(s,r)|0))+M0(_,o)|0,y=(M0(g,e)+a|0)+M0(C,t)+(s>>>16)+(_>>>16)|0,65535&I|_<<16}function zg(C,g,e){var t=0,r=0;if(!e)return 0;if(t=i[0|C])A:{for(;;){if((0|(r=i[0|g]))!=(0|t)|!r||!(e=e-1|0))break A;if(g=g+1|0,t=i[C+1|0],C=C+1|0,!t)break}t=0}else t=0;return t-i[0|g]|0}function hg(C,g,e,t,r,o,I){var a=0,_=0;if(a=t,!((((a=(_=e+63|0)>>>0<63?a+1|0:a)>>>6|0)+!!(0|(a=(63&a)<<26|_>>>6))|0)==1&o>>>0>(_=0-a|0)>>>0|(0|t)==1|t>>>0>1))return 0|G2[A[9199]](C,g,e,t,r,o,I);h2(),Q0()}function Ir(C,g,e,t,r,o,I){var a;return C|=0,g|=0,e|=0,t|=0,r|=0,W=a=W+-64|0,E1(a+32|0,I|=0,o|=0)?o=-1:(o=-1,S1(a,35664,a+32|0,0)||(o=$t(C,g,e,t,r,a),y0(a,32))),W=a- -64|0,0|o}function sr(C,g,e,t,r,o,I){var a;return C|=0,g|=0,e|=0,t|=0,r|=0,W=a=W+-64|0,E1(a+32|0,I|=0,o|=0)?o=-1:(o=-1,S1(a,35664,a+32|0,0)||(o=PA(C,g,e,t,r,a),y0(a,32))),W=a- -64|0,0|o}function Br(C,g,e,t,r,o,I){var a;if(W=a=W+-64|0,!t&e>>>0<4294967280)return E1(a+32|0,I,o)?I=-1:(I=-1,g1(a,35584,a+32|0,0)||(I=S(C+16|0,C,g,e,t,r,a),y0(a,32))),W=a- -64|0,I;h2(),Q0()}function yr(C,g){for(var e=0,t=0,r=0,o=0,I=0;t=C+r|0,e=i[g+r|0]+(i[0|t]+e|0)|0,c[0|t]=e,o=(t=1|r)+C|0,e=i[g+t|0]+(i[0|o]+(e>>>8|0)|0)|0,c[0|o]=e,e=e>>>8|0,r=r+2|0,(0|(I=I+2|0))!=32;);}function pt(C,g){for(var e=0,t=0,r=0,o=0,I=0;e=(i[0|(t=C+r|0)]-i[g+r|0]|0)+e|0,c[0|t]=e,e=(i[0|(o=(t=1|r)+C|0)]-i[g+t|0]|0)+(e>>8)|0,c[0|o]=e,e>>=8,r=r+2|0,(0|(I=I+2|0))!=64;);}function X2(C,g){C|=0;var e,t=0,r=0,o=0;if(W=e=W-16|0,g|=0)for(;c[e+15|0]=0,r=C+t|0,o=0|_g(36800,e+15|0,0),c[0|r]=o,(0|(t=t+1|0))!=(0|g););W=e+16|0}function hr(C,g,e,t,r,o,I){var a,_,s=0;return W=a=W-32|0,s=-1,(_=e>>>0<16)&!t||vC(a,o,I)||(s=Y(C,g+16|0,g,e-16|0,t-_|0,r,a),y0(a,32)),W=a+32|0,s}function Tg(C){var g,e;A:{if(!((C=(g=A[8924])+(e=C+7&-8)|0)>>>0<=g>>>0&&e)&&(C>>>0<=Ba()<<16>>>0||0|nt(0|C)))break A;return A[9404]=48,-1}return A[8924]=C,g}function eg(C,g){var e,t,r;W=e=W-176|0,j1(t=e+96|0,g+80|0),kA(r=e+48|0,g,t),kA(e,g+40|0,t),w2(C,e),w2(e+144|0,r),c[C+31|0]=i[C+31|0]^i[e+144|0]<<7,W=e+176|0}function Qr(C,g,e,t,r,o,I,a,_,s){var h,n,B=0,Q=0,p=0;return W=h=W-16|0,B=-1,wt(n=h+4|0)||(Q=-1,p=he(n,C,g,e,t,r,o,I,a,_,s),B=Ye(n)?Q:p),W=h+16|0,B}function nr(C,g,e,t,r,o,I,a,_,s,h,n){return e&&(A[e>>2]=32,A[e+4>>2]=0),!_&a>>>0<4294967264&!o&r>>>0<=4294967263||(h2(),Q0()),0|G2[A[n>>2]](C,g,32,t,r,I,a,s,h)}function jg(C,g,e){var t=0;if(C>>>0>>0)return P0(C,g,e);if(e)for(t=C+e|0,g=g+e|0;g=g-1|0,c[0|(t=t-1|0)]=i[0|g],e=e-1|0;);return C}function Er(C,g,e,t,r,o,I){var a,_=0;if(W=a=W-32|0,!t&e>>>0<4294967280)return _=-1,vC(a,o,I)||(_=N(C+16|0,C,g,e,t,r,a),y0(a,32)),W=a+32|0,_;h2(),Q0()}function pr(C,g,e,t,r,o){return g|=0,0|(!(t|=0)&(e|=0)>>>0>=16|t?Y(C|=0,g+16|0,g,e-16|0,t-(e>>>0<16)|0,r|=0,o|=0):-1)}function fr(C,g,e,t,r,o){return g|=0,0|(!(t|=0)&(e|=0)>>>0>=16|t?QA(C|=0,g+16|0,g,e-16|0,t-(e>>>0<16)|0,r|=0,o|=0):-1)}function Dr(C,g,e,t,r,o,I,a,_,s,h){return!t&e>>>0>4294967263|t|!a&I>>>0>4294967263|a?-1:0|G2[A[h>>2]](C,g,e,r,32,o,I,_,s)}function wr(C,g,e){C|=0;var t,r=0;return W=t=W-32|0,r=-1,E1(t,e|=0,g|=0)||(r=S1(C,35664,t,0)),W=t+32|0,0|r}function tg(C,g){var e;return g|=0,W=e=W+-64|0,e1(C|=0,e),x2(C=C+208|0,e,64,0),e1(C,g),y0(e,64),W=e- -64|0,0}function lr(C,g,e,t){var r;return g|=0,e|=0,t|=0,W=r=W+-64|0,e1(C|=0,r),C=aC(g,e,r,64,0,t,1),W=r- -64|0,0|C}function Ge(C,g){var e,t,r;kA(C,g,e=g+120|0),kA(C+40|0,t=g+40|0,r=g+80|0),kA(C+80|0,r,e),kA(C+120|0,g,t)}function kr(C,g,e,t,r,o,I){return 0|_r(C|=0,g|=0,(C=0)|(e|=0),t|=0,C|(r|=0),o|=0,I|=0)}function Og(C,g){var e;return g|=0,W=e=W-32|0,v1(C|=0,e),y1(C=C+104|0,e,32,0),v1(C,g),y0(e,32),W=e+32|0,0}function P0(C,g,e){var t=0;if(e)for(t=C;c[0|t]=i[0|g],t=t+1|0,g=g+1|0,e=e-1|0;);return C}function ft(C,g,e,t,r,o){var I;return W=I=W-32|0,S1(I,r,o,0),C=bC(C,g,e,t,r+16|0,0,0,I),y0(I,32),W=I+32|0,C}function ur(C){for(C|=0;X2(C,32),c[C+31|0]=31&i[C+31|0],!or(C)||X0(C,32););}function dr(C,g,e){var t;return g|=0,e|=0,W=t=W+-64|0,e1(C|=0,t),C=oC(g,t,64,0,e,1),W=t- -64|0,0|C}function Sr(C,g,e,t,r){var o;return W=o=W-32|0,S1(o,t,r,0),C=kt(C,g,e,t+16|0,o),y0(o,32),W=o+32|0,C}function $0(C,g,e){var t=0;if(e)for(t=C;c[0|t]=g,t=t+1|0,e=e-1|0;);return C}function lC(C,g,e){return C|=0,g|=0,(e|=0)>>>0>=256&&(xg(1366,1279,107,1123),Q0()),0|_C(C,g,255&e)}function br(C,g,e,t,r,o,I){return 0|N(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)}function vr(C,g,e,t,r,o,I){return 0|Y(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)}function Fr(C,g,e,t,r,o,I){return 0|S(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)}function Qg(C,g,e,t,r,o,I,a){return(0|t)==1|t>>>0>1&&(h2(),Q0()),0|G2[A[9198]](C,g,e,t,r,o,I,a)}function Nr(C,g,e,t,r,o,I){return 0|QA(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)}function Ke(C,g,e,t,r,o){return(0|t)==1|t>>>0>1&&(h2(),Q0()),0|G2[A[9198]](C,g,e,t,r,0,0,o)}function xe(C,g,e,t,r,o){return(0|t)==1|t>>>0>1&&(h2(),Q0()),0|G2[A[9199]](C,g,e,t,r,0,o)}function mr(C,g,e,t,r,o){return aC(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,0),0}function Ye(C){var g;return(g=A[C>>2])&&M2(g),A[C+8>>2]=0,A[C>>2]=0,A[C+4>>2]=0,0}function pA(C,g){var e=0;return(-1>>>(e=31&g)&C)<>>C}function Ue(C,g,e,t,r,o){return 0|$t(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)}function He(C,g,e,t,r,o){return 0|PA(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)}function Mr(C,g,e,t,r,o){return 0|ft(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)}function rg(C,g,e,t,r){return(0|e)==1|e>>>0>1&&(h2(),Q0()),0|G2[A[9197]](C,g,e,t,r)}function kC(C,g,e,t,r){return(0|e)==1|e>>>0>1&&(h2(),Q0()),0|G2[A[9196]](C,g,e,t,r)}function Gr(C,g,e,t,r,o){(0|t)==1|t>>>0>1&&(h2(),Q0()),G2[A[9199]](C,g,e,t,r,1,o)}function Kr(C,g,e,t,r){return 0|oC(C|=0,g|=0,e|=0,t|=0,r|=0,0)}function xr(C,g,e,t,r){return 0|qr(C|=0,g|=0,e|=0,t|=0,r|=0)}function Yr(C,g,e,t,r){return 0|Le(C|=0,g|=0,e|=0,t|=0,r|=0)}function Ur(C,g,e,t,r){return 0|Sr(C|=0,g|=0,e|=0,t|=0,r|=0)}function Hr(){var C;W=C=W-16|0,c[C+15|0]=0,_g(36836,C+15|0,0),W=C+16|0}function uC(C,g,e,t){return IC(C|=0,g|=0,e|=0,t|=0,20),0}function dC(C,g,e,t){return IC(C|=0,g|=0,e|=0,t|=0,12),0}function SC(C,g,e,t){return IC(C|=0,g|=0,e|=0,t|=0,8),0}function Jr(C,g,e,t){return 0|Y0(C|=0,g|=0,e|=0,t|=0)}function Rr(C,g,e,t){return 0|a2(C|=0,g|=0,e|=0,t|=0)}function Dt(C,g,e,t){return 0|x2(C|=0,g|=0,e|=0,t|=0)}function ng(C,g,e,t){return 0|sg(C|=0,g|=0,e|=0,t|=0)}function bC(C,g,e,t,r,o,I,a){return 0|G2[A[8933]](C,g,e,t,r,o,I,a)}function Lr(C,g,e,t){return 0|m1(C|=0,g|=0,e|=0,t|=0)}function Je(C,g,e,t,r,o){return 0|G2[A[8933]](C,g,e,t,r,0,0,o)}function wt(C){return A[C+8>>2]=0,A[C>>2]=0,A[C+4>>2]=0,0}function vC(C,g,e){return 0|wr(C|=0,g|=0,e|=0)}function lt(C,g,e){return 0|E1(C|=0,g|=0,e|=0)}function h2(){var C;(C=A[9538])&&G2[0|C](),sa(),Q0()}function Eg(C,g,e){return 0|lC(C|=0,g|=0,e|=0)}function Pr(C,g,e){return 0|N1(C|=0,g|=0,e|=0)}function Re(C,g){return C|=0,X2(g|=0,32),0|Pe(C,g)}function qr(C,g,e,t,r){return 0|G2[A[8925]](C,g,e,t,r)}function kt(C,g,e,t,r){return 0|G2[A[8932]](C,g,e,t,r)}function Le(C,g,e,t,r){return 0|G2[A[8926]](C,g,e,t,r)}function Pe(C,g){return C|=0,g|=0,0|G2[A[8931]](C,g)}function f1(C,g){return C|=0,g|=0,0|G2[A[8927]](C,g)}function D1(C,g){return C|=0,g|=0,0|G2[A[8929]](C,g)}function ut(C,g,e,t,r,o,I){return EC(C,g,e,t,r,o,I)}function qe(C){return C?31-A1(C-1^C)|0:32}function a2(C,g,e,t){return 0|G2[A[8928]](C,g,e,t)}function Xg(C,g){return 0|gr(C|=0,g|=0,32)}function zr(C,g){return 0|gr(C|=0,g|=0,64)}function Tr(C,g,e){ZA(C|=0,g|=0,e|=0)}function dt(C,g){return 0|Pe(C|=0,g|=0)}function jr(C,g){return 0|Re(C|=0,g|=0)}function Or(C,g,e,t){return Ne(C,g,e,t,1)}function Xr(C,g,e,t){return C0(C,g,e,t,1)}function Vr(C,g,e,t){return C0(C,g,e,t,2)}function Wr(C,g,e,t){return Ne(C,g,e,t,2)}function m1(C,g,e,t){return x2(C,g,e,t),0}function M1(C,g,e,t){return y1(C,g,e,t),0}function t1(C,g,e,t){return q2(C,g,e,t)}function Zr(C){return b0(C|=0),0}function St(){return-2147483648}function bt(){return 1073741824}function $r(){return 268435456}function Aa(){return 33554432}function N2(C){X2(C|=0,32)}function ga(){return 67108864}function Ca(C){X2(C|=0,16)}function ea(){return 16777216}function y0(C,g){$0(C,0,g)}function ta(){return 1564}function ra(){return 1338}function vt(){return 8192}function aa(){return 384}function ia(){return 256}function Ft(){return 416}function Nt(){return 128}function FC(){return 208}function J2(){return 64}function o2(){return 16}function G0(){return 32}function oa(){return-65}function _a(){return-33}function ca(){return 48}function X1(){return-17}function Ia(){return 12}function G1(){return 24}function z2(){return-1}function pg(){return 2}function ze(){return 3}function U1(){return 8}function NC(){return 1}function mt(){return 4}function _1(){return 0}function sa(){Qt(),Q0()}WA(BA=i,1024,"Li8wMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5egBqcwByYW5kb21ieXRlcwBiNjRfcG9zIDw9IGI2NF9sZW4AY3J5cHRvX2dlbmVyaWNoYXNoX2JsYWtlMmJfZmluYWwAYXJnb24yaWQsYXJnb24yaQAkYXJnb24yaQAkYXJnb24yaWQAcmFuZG9tYnl0ZXMvcmFuZG9tYnl0ZXMuYwBzb2RpdW0vY29kZWNzLmMAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2JsYWtlMmItcmVmLmMAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2dlbmVyaWNoYXNoX2JsYWtlMmIuYwB4MjU1MTlibGFrZTJiAGJ1Zl9sZW4gPD0gU0laRV9NQVgAb3V0bGVuIDw9IFVJTlQ4X01BWABTLT5idWZsZW4gPD0gQkxBS0UyQl9CTE9DS0JZVEVTACRhcmdvbjJpJHY9ACRhcmdvbjJpZCR2PQBjdXJ2ZTI1NTE5AGVkMjU1MTkAaG1hY3NoYTUxMjI1NgBjdXJ2ZTI1NTE5eHNhbHNhMjBwb2x5MTMwNQBzb2RpdW1fYmluMmJhc2U2NABzaXBoYXNoMjQAc2hhNTEyAHhzYWxzYTIwADEuMC4yMAAkYXJnb24yaSQAJGFyZ29uMmlkJAAkNyQAAAAAAAC2eFn/hXLTAL1uFf8PCmoAKcABAJjoef+8PKD/mXHO/wC34v60DUj/AAAAAAAAAACwoA7+08mG/54YjwB/aTUAYAy9AKfX+/+fTID+amXh/x78BACSDK4="),WA(BA,1680,"WfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQ"),WA(BA,1728,"hTuMAb3xJP/4JcMBYNw3ALdMPv/DQj0AMkykAeGkTP9MPaP/dT4fAFGRQP92QQ4AonPW/waKLgB85vT/CoqPADQawgC49EwAgY8pAb70E/97qnr/YoFEAHnVkwBWZR7/oWebAIxZQ//v5b4BQwu1AMbwif7uRbz/Q5fuABMqbP/lVXEBMkSH/xFqCQAyZwH/UAGoASOYHv8QqLkBOFno/2XS/AAp+kcAzKpP/w4u7/9QTe8AvdZL/xGN+QAmUEz/vlV1AFbkqgCc2NABw8+k/5ZCTP+v4RD/jVBiAUzb8gDGonIALtqYAJsr8f6boGj/M7ulAAIRrwBCVKAB9zoeACNBNf5F7L8ALYb1AaN73QAgbhT/NBelALrWRwDpsGAA8u82ATlZigBTAFT/iKBkAFyOeP5ofL4AtbE+//opVQCYgioBYPz2AJeXP/7vhT4AIDicAC2nvf+OhbMBg1bTALuzlv76qg7/0qNOACU0lwBjTRoA7pzV/9XA0QFJLlQAFEEpATbOTwDJg5L+qm8Y/7EhMv6rJsv/Tvd0ANHdmQCFgLIBOiwZAMknOwG9E/wAMeXSAXW7dQC1s7gBAHLbADBekwD1KTgAfQ3M/vStdwAs3SD+VOoUAPmgxgHsfur/L2Oo/qrimf9ms9gA4o16/3pCmf629YYA4+QZAdY56//YrTj/tefSAHeAnf+BX4j/bn4zAAKpt/8HgmL+RbBe/3QE4wHZ8pH/yq0fAWkBJ/8ur0UA5C86/9fgRf7POEX/EP6L/xfP1P/KFH7/X9Vg/wmwIQDIBc//8SqA/iMhwP/45cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/"),WA(BA,2720,"AQ=="),WA(BA,2752,"JuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQ="),WA(BA,2943,"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"),WA(BA,33964,"AQAAAHbBXwBlcAL/UPyh/vJqxv+FBrIA5N9wAN/uVf4z8xoAPiuL/stBCg=="),WA(BA,34016,"M03tAJGqVv82JjP/8YBl/yl5Sv/sTpsAqZdp/pwpSADCZq//zqJl/wAAAAAAAAAAGy57ARKo/f/Tr5f+w9tgADh2vv7+0fX/mWR+/uiBFf81uPL/x6Td"),WA(BA,34144,"AQ=="),WA(BA,34176,"4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f0xpYnNvZGl1bURSRwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4KZykpFPwv0kaFCrcnJskmXDghGy7tKsRa/G0sTd+zlZ0TDThT3mOvi1RzCmWosnc8uwpqduau7UcuycKBOzWCFIUscpJkA/FMoei/ogEwQrxLZhqokZf40HCLS8IwvlQGo1FsxxhS79YZ6JLREKllVSQGmdYqIHFXhTUO9LjRuzJwoGoQyNDSuBbBpBlTq0FRCGw3Hpnrjt9Md0gnqEib4bW8sDRjWsnFswwcOcuKQeNKqthOc+Njd0/KnFujuLLW828uaPyy713ugo90YC8XQ29jpXhyq/ChFHjIhOw5ZBoIAseMKB5jI/r/vpDpvYLe62xQpBV5xrL3o/m+K1Ny4/J4ccacYSbqzj4nygfCwCHHuIbRHuvgzdZ92up40W7uf0999bpvF3KqZ/AGppjIosV9YwquDfm+BJg/ERtHHBM1C3EbhH0EI/V32yiTJMdAe6vKMry+yRUKvp48TA0QnMRnHUO2Qj7LvtTFTCp+ZfycKX9Z7PrWOqtvy18XWEdKjBlEbIA="),WA(BA,35184,"7dP1XBpjEljWnPei3vneFA=="),WA(BA,35215,"EA=="),WA(BA,35232,"Z+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FuYL4pCkUQ3cc/7wLWl27XpW8JWOfER8Vmkgj+S1V4cq5iqB9gBW4MSvoUxJMN9DFV0Xb5y/rHegKcG3Jt08ZvBwWmb5IZHvu/GncEPzKEMJG8s6S2qhHRK3KmwXNqI+XZSUT6YbcYxqMgnA7DHf1m/8wvgxkeRp9VRY8oGZykpFIUKtyc4IRsu/G0sTRMNOFNUcwpluwpqdi7JwoGFLHKSoei/oktmGqhwi0vCo1FsxxnoktEkBpnWhTUO9HCgahAWwaQZCGw3Hkx3SCe1vLA0swwcOUqq2E5Pypxb828uaO6Cj3RvY6V4FHjIhAgCx4z6/76Q62xQpPej+b7yeHHGgA=="),WA(BA,35600,"U2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMB"),WA(BA,35696,"EJUBAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQ=="),WA(BA,35744,"xmNjpfh8fITud3eZ9nt7jf/y8g3Wa2u93m9vsZHFxVRgMDBQAgEBA85nZ6lWKyt95/7+GbXX12JNq6vm7HZ2mo/KykUfgoKdicnJQPp9fYfv+voVsllZ645HR8n78PALQa2t7LPU1GdfoqL9Ra+v6iOcnL9TpKT35HJylpvAwFt1t7fC4f39HD2Tk65MJiZqbDY2Wn4/P0H19/cCg8zMT2g0NFxRpaX00eXlNPnx8QjicXGTq9jYc2IxMVMqFRU/CAQEDJXHx1JGIyNlncPDXjAYGCg3lpahCgUFDy+amrUOBwcJJBISNhuAgJvf4uI9zevrJk4nJ2l/srLN6nV1nxIJCRsdg4OeWCwsdDQaGi42Gxst3G5usrRaWu5boKD7pFJS9nY7O0231tZhfbOzzlIpKXvd4+M+Xi8vcROEhJemU1P1udHRaAAAAADB7e0sQCAgYOP8/B95sbHItltb7dRqar6Ny8tGZ76+2XI5OUuUSkremExM1LBYWOiFz89Ku9DQa8Xv7ypPqqrl7fv7FoZDQ8WaTU3XZjMzVRGFhZSKRUXP6fn5EAQCAgb+f3+BoFBQ8Hg8PEQln5+6S6io46JRUfNdo6P+gEBAwAWPj4o/kpKtIZ2dvHA4OEjx9fUEY7y833e2tsGv2tp1QiEhYyAQEDDl//8a/fPzDr/S0m2Bzc1MGAwMFCYTEzXD7Owvvl9f4TWXl6KIRETMLhcXOZPExFdVp6fy/H5+gno9PUfIZGSsul1d5zIZGSvmc3OVwGBgoBmBgZieT0/Ro9zcf0QiImZUKip+O5CQqwuIiIOMRkbKx+7uKWu4uNMoFBQ8p97eebxeXuIWCwsdrdvbdtvg4DtkMjJWdDo6ThQKCh6SSUnbDAYGCkgkJGy4XFzkn8LCXb3T025DrKzvxGJipjmRkagxlZWk0+TkN/J5eYvV5+cyi8jIQ243N1nabW23AY2NjLHV1WScTk7SSamp4NhsbLSsVlb68/T0B8/q6iXKZWWv9Hp6jkeurukQCAgYb7q61fB4eIhKJSVvXC4ucjgcHCRXpqbxc7S0x5fGxlHL6Ogjod3dfOh0dJw+Hx8hlktL3WG9vdwNi4uGD4qKheBwcJB8Pj5CcbW1xMxmZqqQSEjYBgMDBff29gEcDg4SwmFho2o1NV+uV1f5abm50BeGhpGZwcFYOh0dJyeenrnZ4eE46/j4EyuYmLMiEREz0mlpu6nZ2XAHjo6JM5SUpy2bm7Y8Hh4iFYeHksnp6SCHzs5JqlVV/1AoKHil3996A4yMj1mhofgJiYmAGg0NF2W/v9rX5uYxhEJCxtBoaLiCQUHDKZmZsFotLXceDw8Re7Cwy6hUVPxtu7vWLBYWOgoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAAR");var mC,G2=(mC=[null,function(C,g,e,t,r){var o,I,a;return C|=0,g|=0,e|=0,t|=0,r|=0,W=o=(I=W)-128&-64,A[o>>2]=67108863&(i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),A[o+4>>2]=(i[r+3|0]|i[r+4|0]<<8|i[r+5|0]<<16|i[r+6|0]<<24)>>>2&67108611,A[o+8>>2]=(i[r+6|0]|i[r+7|0]<<8|i[r+8|0]<<16|i[r+9|0]<<24)>>>4&67092735,A[o+12>>2]=(i[r+9|0]|i[r+10|0]<<8|i[r+11|0]<<16|i[r+12|0]<<24)>>>6&66076671,a=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+20>>2]=0,A[o+24>>2]=0,A[o+28>>2]=0,A[o+32>>2]=0,A[o+36>>2]=0,A[o+16>>2]=a>>>8&1048575,A[o+40>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+44>>2]=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+48>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,r=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,c[o+80|0]=0,A[o+56>>2]=0,A[o+60>>2]=0,A[o+52>>2]=r,pC(o,g,e,t),wC(o,C),W=I,0},function(C,g,e,t,r){var o,I,a;return C|=0,g|=0,e|=0,t|=0,r|=0,W=o=(I=W)-192&-64,A[o+64>>2]=67108863&(i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),A[o+68>>2]=(i[r+3|0]|i[r+4|0]<<8|i[r+5|0]<<16|i[r+6|0]<<24)>>>2&67108611,A[o+72>>2]=(i[r+6|0]|i[r+7|0]<<8|i[r+8|0]<<16|i[r+9|0]<<24)>>>4&67092735,A[o+76>>2]=(i[r+9|0]|i[r+10|0]<<8|i[r+11|0]<<16|i[r+12|0]<<24)>>>6&66076671,a=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+84>>2]=0,A[o+88>>2]=0,A[o+92>>2]=0,A[o+96>>2]=0,A[o+100>>2]=0,A[o+80>>2]=a>>>8&1048575,A[o+104>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+108>>2]=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+112>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,r=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,c[o+144|0]=0,A[o+120>>2]=0,A[o+124>>2]=0,A[o+116>>2]=r,pC(r=o- -64|0,g,e,t),wC(r,g=o+48|0),C=O1(C,g),W=I,0|C},function(C,g){var e;return g|=0,A[(C|=0)>>2]=67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),A[C+4>>2]=(i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108611,A[C+8>>2]=(i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67092735,A[C+12>>2]=(i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6&66076671,e=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,A[C+20>>2]=0,A[C+24>>2]=0,A[C+28>>2]=0,A[C+32>>2]=0,A[C+36>>2]=0,A[C+16>>2]=e>>>8&1048575,A[C+40>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[C+44>>2]=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[C+48>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,c[C+80|0]=0,A[C+56>>2]=0,A[C+60>>2]=0,A[C+52>>2]=g,0},function(C,g,e,t){return pC(C|=0,g|=0,e|=0,t|=0),0},function(C,g){return wC(C|=0,g|=0),0},function(C,g,e){C|=0,g|=0,e|=0;var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0,O=0,rA=0,cA=0,XA=0,A0=0,s0=0,p0=0,f0=0,E0=0,w0=0,u0=0,k0=0,F0=0,N0=0;for(W=t=W-368|0;p=(I=i[e+r|0])^i[0|(_=r+34112|0)]|p,Q=I^i[_+192|0]|Q,B=I^i[_+160|0]|B,n=I^i[_+128|0]|n,a=I^i[_+96|0]|a,s=I^i[_- -64|0]|s,o=I^i[_+32|0]|o,(0|(r=r+1|0))!=31;);if(r=-1,!(256&((255&((I=127^(_=127&i[e+31|0]))|Q))-1|(255&(I|B))-1|(255&(I|n))-1|(255&(87^_|a))-1|(255&(s|_))-1|(255&(o|_))-1|(255&(_|p))-1))){for(r=g,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[t+360>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,A[t+364>>2]=g,g=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[t+352>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[t+356>>2]=g,o=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,g=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[t+336>>2]=g,A[t+340>>2]=o,o=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[t+344>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[t+348>>2]=o,c[t+336|0]=248&g,c[t+367|0]=63&i[t+367|0]|64,z1(t+288|0,e),A[t+260>>2]=0,A[t+264>>2]=0,A[t+268>>2]=0,A[t+272>>2]=0,A[t+276>>2]=0,A[t+208>>2]=0,A[t+212>>2]=0,A[t+216>>2]=0,A[t+220>>2]=0,A[t+224>>2]=0,A[t+228>>2]=0,g=A[t+308>>2],A[t+160>>2]=A[t+304>>2],A[t+164>>2]=g,g=A[t+316>>2],A[t+168>>2]=A[t+312>>2],A[t+172>>2]=g,g=A[t+324>>2],A[t+176>>2]=A[t+320>>2],A[t+180>>2]=g,A[t+244>>2]=0,A[t+248>>2]=0,A[t+240>>2]=1,A[t+252>>2]=0,A[t+256>>2]=0,A[t+192>>2]=0,A[t+196>>2]=0,A[t+200>>2]=0,A[t+204>>2]=0,g=A[t+292>>2],A[t+144>>2]=A[t+288>>2],A[t+148>>2]=g,g=A[t+300>>2],A[t+152>>2]=A[t+296>>2],A[t+156>>2]=g,A[t+116>>2]=0,A[t+120>>2]=0,A[t+124>>2]=0,A[t+128>>2]=0,A[t+132>>2]=0,A[t+100>>2]=0,A[t+104>>2]=0,A[t+96>>2]=1,A[t+108>>2]=0,A[t+112>>2]=0,e=254;i0=A[t+276>>2],I=A[t+180>>2],u=A[t+96>>2],d=A[t+192>>2],H=A[t+144>>2],FA=A[t+240>>2],VA=A[t+100>>2],c0=A[t+196>>2],_0=A[t+148>>2],I0=A[t+244>>2],J=A[t+104>>2],h0=A[t+200>>2],z=A[t+152>>2],D0=A[t+248>>2],nA=A[t+108>>2],MA=A[t+204>>2],fA=A[t+156>>2],O=A[t+252>>2],_A=A[t+112>>2],rA=A[t+208>>2],$=A[t+160>>2],cA=A[t+256>>2],p=A[t+116>>2],XA=A[t+212>>2],h=A[t+164>>2],A0=A[t+260>>2],Q=A[t+120>>2],s0=A[t+216>>2],B=A[t+168>>2],p0=A[t+264>>2],n=A[t+124>>2],f0=A[t+220>>2],a=A[t+172>>2],E0=A[t+268>>2],s=A[t+128>>2],w0=A[t+224>>2],o=A[t+176>>2],V=A[t+272>>2],u0=e,K=(M=(g=0-((g=g0)^(g0=i[(k0=t+336|0)+(e>>>3|0)|0]>>>(7&e)&1))|0)&((r=A[t+132>>2])^(EA=A[t+228>>2])))^r,A[t+132>>2]=K,YA=I^(x=g&(I^i0)),A[t+84>>2]=YA-K,sA=s^(v=g&(s^w0)),A[t+128>>2]=sA,qA=(q=g&(o^V))^o,A[t+80>>2]=qA-sA,vA=n^(D=g&(n^f0)),A[t+124>>2]=vA,F0=a^(b=g&(a^E0)),A[t+76>>2]=F0-vA,wA=Q^(l=g&(Q^s0)),A[t+120>>2]=wA,N0=B^(_=g&(B^p0)),A[t+72>>2]=N0-wA,iA=p^(I=g&(p^XA)),A[t+116>>2]=iA,hA=h^(p=g&(h^A0)),A[t+68>>2]=hA-iA,mA=_A^(Q=g&(_A^rA)),A[t+112>>2]=mA,uA=$^(B=g&($^cA)),A[t+64>>2]=uA-mA,HA=nA^(n=g&(nA^MA)),A[t+108>>2]=HA,$A=fA^(a=g&(fA^O)),A[t+60>>2]=$A-HA,aA=J^(s=g&(J^h0)),A[t+104>>2]=aA,nA=z^(o=g&(z^D0)),A[t+56>>2]=nA-aA,J=VA^(r=g&(VA^c0)),A[t+100>>2]=J,fA=_0^(e=g&(_0^I0)),A[t+52>>2]=fA-J,z=u^(_A=g&(u^d)),A[t+96>>2]=z,$=(g&=H^FA)^H,A[t+48>>2]=$-z,h=x^i0,M^=EA,A[t+36>>2]=h-M,x=q^V,v^=w0,A[t+32>>2]=x-v,q=b^E0,D^=f0,A[t+28>>2]=q-D,b=_^p0,l^=s0,A[t+24>>2]=b-l,_=p^A0,I^=XA,A[t+20>>2]=_-I,p=B^cA,Q^=rA,A[t+16>>2]=p-Q,B=a^O,n^=MA,A[t+12>>2]=B-n,a=o^D0,s^=h0,A[t+8>>2]=a-s,o=e^I0,r^=c0,A[t+4>>2]=o-r,e=g^FA,g=_A^d,A[t>>2]=e-g,A[t+276>>2]=h+M,A[t+272>>2]=x+v,A[t+268>>2]=D+q,A[t+264>>2]=l+b,A[t+260>>2]=I+_,A[t+256>>2]=Q+p,A[t+248>>2]=a+s,A[t+244>>2]=r+o,A[t+240>>2]=g+e,A[t+252>>2]=n+B,A[t+228>>2]=K+YA,A[t+224>>2]=sA+qA,A[t+220>>2]=vA+F0,A[t+216>>2]=wA+N0,A[t+212>>2]=iA+hA,A[t+208>>2]=uA+mA,A[t+204>>2]=HA+$A,A[t+200>>2]=nA+aA,A[t+196>>2]=J+fA,A[t+192>>2]=$+z,kA(YA=t+96|0,sA=t+48|0,K=t+240|0),kA(V=t+192|0,V,t),gA(sA,t),gA(t,K),h=A[t+192>>2],M=A[t+96>>2],x=A[t+196>>2],v=A[t+100>>2],q=A[t+200>>2],D=A[t+104>>2],b=A[t+204>>2],l=A[t+108>>2],_=A[t+208>>2],I=A[t+112>>2],p=A[t+212>>2],Q=A[t+116>>2],B=A[t+216>>2],n=A[t+120>>2],a=A[t+220>>2],s=A[t+124>>2],o=A[t+224>>2],r=A[t+128>>2],e=A[t+228>>2],g=A[t+132>>2],A[t+180>>2]=e+g,A[t+176>>2]=r+o,A[t+172>>2]=a+s,A[t+168>>2]=n+B,A[t+164>>2]=Q+p,A[t+160>>2]=I+_,A[t+156>>2]=l+b,A[t+152>>2]=D+q,A[t+148>>2]=x+v,A[t+144>>2]=h+M,A[t+228>>2]=g-e,A[t+224>>2]=r-o,A[t+220>>2]=s-a,A[t+216>>2]=n-B,A[t+212>>2]=Q-p,A[t+208>>2]=I-_,A[t+204>>2]=l-b,A[t+200>>2]=D-q,A[t+196>>2]=v-x,A[t+192>>2]=M-h,kA(K,t,sA),vA=A[t+52>>2],l=A[t+4>>2],wA=A[t+56>>2],_=A[t+8>>2],iA=A[t+64>>2],B=A[t+16>>2],mA=A[t+60>>2],n=A[t+12>>2],HA=A[t+72>>2],a=A[t+24>>2],aA=A[t+68>>2],s=A[t+20>>2],J=A[t+80>>2],o=A[t+32>>2],z=A[t+76>>2],r=A[t+28>>2],EA=A[t+84>>2],g=A[t+36>>2],qA=A[t+48>>2],e=A[t>>2]-qA|0,A[t>>2]=e,g=g-EA|0,A[t+36>>2]=g,_A=r-z|0,A[t+28>>2]=_A,$=o-J|0,A[t+32>>2]=$,I=s-aA|0,A[t+20>>2]=I,p=a-HA|0,A[t+24>>2]=p,Q=n-mA|0,A[t+12>>2]=Q,B=B-iA|0,A[t+16>>2]=B,n=_-wA|0,A[t+8>>2]=n,o=l-vA|0,A[t+4>>2]=o,gA(V,V),g=w(g,g>>31,121666,0),r=y,$A=g,g=w((33554431&(r=(h=g+16777216|0)>>>0<16777216?r+1|0:r))<<7|h>>>25,r>>25,19,0),s=y,r=g,g=w(e,e>>31,121666,0),uA=y+s|0,g=g>>>0>(r=r+g|0)>>>0?uA+1|0:uA,e=(a=r+33554432|0)>>>0<33554432?g+1|0:g,M=r-(-67108864&a)|0,A[t+96>>2]=M,s=w(o,o>>31,121666,0),r=y,r=(o=s+16777216|0)>>>0<16777216?r+1|0:r,x=(s-(-33554432&o)|0)+((67108863&e)<<6|a>>>26)|0,A[t+100>>2]=x,uA=(g=r)>>25,r=(33554431&g)<<7|o>>>25,e=w(n,n>>31,121666,0)+r|0,g=uA+y|0,g=e>>>0>>0?g+1|0:g,s=(v=e+33554432|0)>>>0<33554432?g+1|0:g,q=e-(-67108864&v)|0,A[t+104>>2]=q,r=w(B,B>>31,121666,0),o=y,e=w(Q,Q>>31,121666,0),g=y,hA=r,nA=e,r=(33554431&(g=(D=e+16777216|0)>>>0<16777216?g+1|0:g))<<7|D>>>25,g=(g>>25)+o|0,g=(e=hA+r|0)>>>0>>0?g+1|0:g,o=(b=e+33554432|0)>>>0<33554432?g+1|0:g,l=e-(-67108864&b)|0,A[t+112>>2]=l,r=w(p,p>>31,121666,0),a=y,e=w(I,I>>31,121666,0),g=y,hA=r,fA=e,r=(33554431&(g=(_=e+16777216|0)>>>0<16777216?g+1|0:g))<<7|_>>>25,g=(g>>25)+a|0,g=(e=hA+r|0)>>>0>>0?g+1|0:g,r=(I=e+33554432|0)>>>0<33554432?g+1|0:g,p=e-(-67108864&I)|0,A[t+120>>2]=p,a=w($,$>>31,121666,0),n=y,e=w(_A,_A>>31,121666,0),g=y,$=e,e=(33554431&(g=(Q=e+16777216|0)>>>0<16777216?g+1|0:g))<<7|Q>>>25,g=(g>>25)+n|0,g=e>>>0>(a=e+a|0)>>>0?g+1|0:g,e=(B=a+33554432|0)>>>0<33554432?g+1|0:g,n=a-(-67108864&B)|0,A[t+128>>2]=n,a=(s=nA+((67108863&s)<<6|v>>>26)|0)-(-33554432&D)|0,A[t+108>>2]=a,s=(o=fA+((67108863&o)<<6|b>>>26)|0)-(-33554432&_)|0,A[t+116>>2]=s,o=(g=$+((67108863&r)<<6|I>>>26)|0)-(-33554432&Q)|0,A[t+124>>2]=o,e=(e=$A+((67108863&e)<<6|B>>>26)|0)-(-33554432&h)|0,A[t+132>>2]=e,gA(g=t+144|0,g),A[t+84>>2]=e+EA,A[t+80>>2]=n+J,A[t+76>>2]=o+z,A[t+72>>2]=p+HA,A[t+68>>2]=s+aA,A[t+64>>2]=l+iA,A[t+60>>2]=a+mA,A[t+56>>2]=q+wA,A[t+52>>2]=x+vA,A[t+48>>2]=M+qA,e=u0-1|0,kA(YA,t+288|0,V),kA(V,t,sA),u0;);p=A[t+144>>2],M=A[t+240>>2],Q=A[t+148>>2],x=A[t+244>>2],B=A[t+152>>2],v=A[t+248>>2],n=A[t+156>>2],q=A[t+252>>2],a=A[t+160>>2],D=A[t+256>>2],s=A[t+164>>2],b=A[t+260>>2],o=A[t+168>>2],l=A[t+264>>2],r=A[t+172>>2],_=A[t+268>>2],e=A[t+176>>2],I=A[t+272>>2],h=0-g0|0,g=A[t+276>>2],A[t+276>>2]=h&(g^A[t+180>>2])^g,A[t+272>>2]=I^h&(e^I),A[t+268>>2]=_^h&(r^_),A[t+264>>2]=l^h&(o^l),A[t+260>>2]=b^h&(s^b),A[t+256>>2]=D^h&(a^D),A[t+252>>2]=q^h&(n^q),A[t+248>>2]=v^h&(B^v),A[t+244>>2]=x^h&(Q^x),A[t+240>>2]=M^h&(p^M),M=A[t+192>>2],p=A[t+96>>2],x=A[t+196>>2],Q=A[t+100>>2],v=A[t+200>>2],B=A[t+104>>2],q=A[t+204>>2],n=A[t+108>>2],D=A[t+208>>2],a=A[t+112>>2],b=A[t+212>>2],s=A[t+116>>2],l=A[t+216>>2],o=A[t+120>>2],_=A[t+220>>2],r=A[t+124>>2],I=A[t+224>>2],e=A[t+128>>2],g=A[t+228>>2],A[t+228>>2]=h&(g^A[t+132>>2])^g,A[t+224>>2]=I^h&(e^I),A[t+220>>2]=_^h&(r^_),A[t+216>>2]=l^h&(o^l),A[t+212>>2]=b^h&(s^b),A[t+208>>2]=D^h&(a^D),A[t+204>>2]=q^h&(n^q),A[t+200>>2]=v^h&(B^v),A[t+196>>2]=x^h&(Q^x),A[t+192>>2]=M^h&(p^M),j1(V,V),kA(K,K,V),w2(C,K),y0(k0,32),r=0}return W=t+368|0,0|r},function(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q;return g|=0,W=e=W-304|0,c[0|(C|=0)]=i[0|g],c[C+1|0]=i[g+1|0],c[C+2|0]=i[g+2|0],c[C+3|0]=i[g+3|0],c[C+4|0]=i[g+4|0],c[C+5|0]=i[g+5|0],c[C+6|0]=i[g+6|0],c[C+7|0]=i[g+7|0],c[C+8|0]=i[g+8|0],c[C+9|0]=i[g+9|0],c[C+10|0]=i[g+10|0],c[C+11|0]=i[g+11|0],c[C+12|0]=i[g+12|0],c[C+13|0]=i[g+13|0],c[C+14|0]=i[g+14|0],c[C+15|0]=i[g+15|0],c[C+16|0]=i[g+16|0],c[C+17|0]=i[g+17|0],c[C+18|0]=i[g+18|0],c[C+19|0]=i[g+19|0],c[C+20|0]=i[g+20|0],c[C+21|0]=i[g+21|0],c[C+22|0]=i[g+22|0],c[C+23|0]=i[g+23|0],c[C+24|0]=i[g+24|0],c[C+25|0]=i[g+25|0],c[C+26|0]=i[g+26|0],c[C+27|0]=i[g+27|0],c[C+28|0]=i[g+28|0],c[C+29|0]=i[g+29|0],c[C+30|0]=i[g+30|0],g=i[g+31|0],c[0|C]=248&i[0|C],c[C+31|0]=63&g|64,Cg(e+48|0,C),g=A[e+128>>2],t=A[e+88>>2],r=A[e+132>>2],o=A[e+92>>2],I=A[e+136>>2],a=A[e+96>>2],_=A[e+140>>2],s=A[e+100>>2],h=A[e+144>>2],n=A[e+104>>2],B=A[e+148>>2],Q=A[e+108>>2],p=A[e+152>>2],l=A[e+112>>2],v=A[e+156>>2],D=A[e+116>>2],b=A[e+160>>2],M=A[e+120>>2],x=A[e+124>>2],q=A[e+164>>2],A[e+292>>2]=x+q,A[e+288>>2]=b+M,A[e+284>>2]=v+D,A[e+280>>2]=p+l,A[e+276>>2]=B+Q,A[e+272>>2]=h+n,A[e+268>>2]=_+s,A[e+264>>2]=I+a,A[e+260>>2]=r+o,A[e+256>>2]=g+t,A[e+244>>2]=q-x,A[e+240>>2]=b-M,A[e+236>>2]=v-D,A[e+232>>2]=p-l,A[e+228>>2]=B-Q,A[e+224>>2]=h-n,A[e+220>>2]=_-s,A[e+216>>2]=I-a,A[e+212>>2]=r-o,A[e+208>>2]=g-t,j1(g=e+208|0,g),kA(e,e+256|0,g),w2(C,e),W=e+304|0,0},function(C,g,e,t,r){C|=0,t|=0,r|=0;var o,I=0,a=0,_=0,s=0;if(W=o=W-112|0,(g|=0)|(e|=0)){I=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,A[o+24>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,A[o+28>>2]=I,I=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+16>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+20>>2]=I,I=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[o>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[o+4>>2]=I,I=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+8>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[o+12>>2]=I,r=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,t=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,A[o+104>>2]=0,A[o+108>>2]=0,A[o+96>>2]=r,A[o+100>>2]=t;A:{if(!e&g>>>0>=64|e){for(;uC(C,o+96|0,o,0),t=i[o+104|0]+1|0,c[o+104|0]=t,t=i[o+105|0]+(t>>>8|0)|0,c[o+105|0]=t,t=i[o+106|0]+(t>>>8|0)|0,c[o+106|0]=t,t=i[o+107|0]+(t>>>8|0)|0,c[o+107|0]=t,t=i[o+108|0]+(t>>>8|0)|0,c[o+108|0]=t,t=i[o+109|0]+(t>>>8|0)|0,c[o+109|0]=t,t=i[o+110|0]+(t>>>8|0)|0,c[o+110|0]=t,c[o+111|0]=i[o+111|0]+(t>>>8|0),C=C- -64|0,e=e-1|0,!(e=(g=g+-64|0)>>>0<4294967232?e+1|0:e)&g>>>0>63|e;);if(!(g|e))break A}if(t=0,uC(o+32|0,o+96|0,o,0),I=3&g,r=0,!e&g>>>0>=4|e)for(e=60&g,g=0;a=_=o+32|0,c[C+r|0]=i[a+r|0],c[(s=1|r)+C|0]=i[a+s|0],c[(a=2|r)+C|0]=i[a+_|0],c[(a=3|r)+C|0]=i[a+(o+32|0)|0],r=r+4|0,(0|e)!=(0|(g=g+4|0)););if(I)for(;c[C+r|0]=i[(o+32|0)+r|0],r=r+1|0,(0|I)!=(0|(t=t+1|0)););}y0(o+32|0,64),y0(o,32)}return W=o+112|0,0},function(C,g,e,t,r,o,I,a){C|=0,g|=0,r|=0,o|=0,I|=0,a|=0;var _,s=0;if(W=_=W-112|0,(e|=0)|(t|=0)){s=i[a+28|0]|i[a+29|0]<<8|i[a+30|0]<<16|i[a+31|0]<<24,A[_+24>>2]=i[a+24|0]|i[a+25|0]<<8|i[a+26|0]<<16|i[a+27|0]<<24,A[_+28>>2]=s,s=i[a+20|0]|i[a+21|0]<<8|i[a+22|0]<<16|i[a+23|0]<<24,A[_+16>>2]=i[a+16|0]|i[a+17|0]<<8|i[a+18|0]<<16|i[a+19|0]<<24,A[_+20>>2]=s,s=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,A[_>>2]=i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,A[_+4>>2]=s,s=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,A[_+8>>2]=i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,A[_+12>>2]=s,a=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[_+96>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[_+100>>2]=a,c[_+104|0]=o,c[_+111|0]=I>>>24,c[_+110|0]=I>>>16,c[_+109|0]=I>>>8,c[_+108|0]=I,c[_+107|0]=(16777215&I)<<8|o>>>24,c[_+106|0]=(65535&I)<<16|o>>>16,c[_+105|0]=(255&I)<<24|o>>>8;A:{if(!t&e>>>0>=64|t){for(;;){for(a=0,uC(_+32|0,_+96|0,_,0);o=_+32|0,c[C+a|0]=i[o+a|0]^i[g+a|0],c[(r=1|a)+C|0]=i[r+o|0]^i[g+r|0],(0|(a=a+2|0))!=64;);if(r=i[_+104|0]+1|0,c[_+104|0]=r,r=i[_+105|0]+(r>>>8|0)|0,c[_+105|0]=r,r=i[_+106|0]+(r>>>8|0)|0,c[_+106|0]=r,r=i[_+107|0]+(r>>>8|0)|0,c[_+107|0]=r,r=i[_+108|0]+(r>>>8|0)|0,c[_+108|0]=r,r=i[_+109|0]+(r>>>8|0)|0,c[_+109|0]=r,r=i[_+110|0]+(r>>>8|0)|0,c[_+110|0]=r,c[_+111|0]=i[_+111|0]+(r>>>8|0),g=g- -64|0,C=C- -64|0,t=t-1|0,!(!(t=(e=e+-64|0)>>>0<4294967232?t+1|0:t)&e>>>0>63|t))break}if(!(e|t))break A}if(a=0,uC(_+32|0,_+96|0,_,0),o=1&e,(0|e)!=1|t)for(t=62&e,r=0;I=_+32|0,c[C+a|0]=i[I+a|0]^i[g+a|0],c[(e=1|a)+C|0]=i[e+I|0]^i[g+e|0],a=a+2|0,(0|t)!=(0|(r=r+2|0)););o&&(c[C+a|0]=i[(_+32|0)+a|0]^i[g+a|0])}y0(_+32|0,64),y0(_,32)}return W=_+112|0,0},function(C,g,e,t,r,o,I,a,_){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0;var s,h,n=0;if(h=n=W,W=s=n-192&-32,re(_|=0,a|=0,s- -64|0),_=0,I>>>0<=63)a=0;else for(n=64;VC(o+_|0,s- -64|0),_=a=n,(n=a- -64|0)>>>0<=I>>>0;);if((n=32|a)>>>0>I>>>0)_=a;else for(;Lg(o+a|0,s- -64|0),_=n,(n=(a=n)+32|0)>>>0<=I>>>0;);if((a=31&I)&&($0((n=s+32|0)|a,0,32-a|0),P0(n,o+_|0,a),Lg(n,s- -64|0)),_=32,a=0,r>>>0<32)o=0;else for(;$C(C+a|0,t+a|0,s- -64|0),o=_,(_=(a=_)+32|0)>>>0<=r>>>0;);return(a=31&r)&&($0((_=s+32|0)|a,0,32-a|0),P0(_,t+o|0,a),$C(s,_,s- -64|0),P0(C+o|0,s,a)),WC(g,e,I,r,s- -64|0),W=h,0},function(C,g,e,t,r,o,I,a,_){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0;var s,h,n=0;if(h=n=W,W=s=n-224&-32,re(_|=0,a|=0,s+96|0),_=0,I>>>0<=63)a=0;else for(n=64;VC(o+_|0,s+96|0),_=a=n,(n=a- -64|0)>>>0<=I>>>0;);if((n=32|a)>>>0>I>>>0)_=a;else for(;Lg(o+a|0,s+96|0),_=n,(n=(a=n)+32|0)>>>0<=I>>>0;);(a=31&I)&&($0((n=s- -64|0)|a,0,32-a|0),P0(n,o+_|0,a),Lg(n,s+96|0));A:{g:{C:{e:{t:{if(C){if(_=32,e>>>0<32)break t;for(o=0;ZC(C+o|0,g+o|0,s+96|0),o=a=_,(_=a+32|0)>>>0<=e>>>0;);}else{if(o=32,e>>>0<32)break C;for(_=0;ZC(s+32|0,g+_|0,s+96|0),_=a=o,(o=a+32|0)>>>0<=e>>>0;);}if(!(o=31&e))break A;if(C)break e;break g}if(a=0,o=e,!e)break A}Ce(C+a|0,g+a|0,o,s+96|0);break A}if(a=0,o=e,!e)break A}Ce(s+32|0,g+a|0,o,s+96|0)}WC(s,r,I,e,s+96|0),a=-1;A:{g:{if(g=r-16|0){if((0|g)==16)break g;break A}a=O1(s,t);break A}a=Xg(s,t)}return!C|!a||$0(C,0,e),W=h,0|a},function(C,g,e,t,r,o,I,a,_){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0;var s,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0;if(W=s=W-528|0,OC(_|=0,a|=0,s+400|0),_=0,I>>>0<=31)a=0;else for(n=32;te(o+_|0,s+400|0),_=a=n,(n=a+32|0)>>>0<=I>>>0;);if((_=16|a)>>>0<=I>>>0)for(n=s+416|0,Q=s+432|0,p=s+448|0,B=s+464|0,l=s+480|0;v=i[0|(a=o+a|0)]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,D=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,b=i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,M=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,a=A[l+12>>2],A[s+520>>2]=A[l+8>>2],A[s+524>>2]=a,a=A[l+4>>2],A[s+512>>2]=A[l>>2],A[s+516>>2]=a,a=A[B+12>>2],A[s+376>>2]=A[B+8>>2],A[s+380>>2]=a,a=A[B+4>>2],A[s+368>>2]=A[B>>2],A[s+372>>2]=a,a=A[l+12>>2],A[s+360>>2]=A[l+8>>2],A[s+364>>2]=a,a=A[l+4>>2],A[s+352>>2]=A[l>>2],A[s+356>>2]=a,a0(a=s+496|0,s+368|0,s+352|0),h=A[s+508>>2],A[l+8>>2]=A[s+504>>2],A[l+12>>2]=h,h=A[s+500>>2],A[l>>2]=A[s+496>>2],A[l+4>>2]=h,h=A[p+12>>2],A[s+344>>2]=A[p+8>>2],A[s+348>>2]=h,h=A[p+4>>2],A[s+336>>2]=A[p>>2],A[s+340>>2]=h,h=A[B+12>>2],A[s+328>>2]=A[B+8>>2],A[s+332>>2]=h,h=A[B+4>>2],A[s+320>>2]=A[B>>2],A[s+324>>2]=h,a0(a,s+336|0,s+320|0),h=A[s+508>>2],A[B+8>>2]=A[s+504>>2],A[B+12>>2]=h,h=A[s+500>>2],A[B>>2]=A[s+496>>2],A[B+4>>2]=h,h=A[Q+12>>2],A[s+312>>2]=A[Q+8>>2],A[s+316>>2]=h,h=A[Q+4>>2],A[s+304>>2]=A[Q>>2],A[s+308>>2]=h,h=A[p+12>>2],A[s+296>>2]=A[p+8>>2],A[s+300>>2]=h,h=A[p+4>>2],A[s+288>>2]=A[p>>2],A[s+292>>2]=h,a0(a,s+304|0,s+288|0),h=A[s+508>>2],A[p+8>>2]=A[s+504>>2],A[p+12>>2]=h,h=A[s+500>>2],A[p>>2]=A[s+496>>2],A[p+4>>2]=h,h=A[n+12>>2],A[s+280>>2]=A[n+8>>2],A[s+284>>2]=h,h=A[n+4>>2],A[s+272>>2]=A[n>>2],A[s+276>>2]=h,h=A[Q+12>>2],A[s+264>>2]=A[Q+8>>2],A[s+268>>2]=h,h=A[Q+4>>2],A[s+256>>2]=A[Q>>2],A[s+260>>2]=h,a0(a,s+272|0,s+256|0),h=A[s+508>>2],A[Q+8>>2]=A[s+504>>2],A[Q+12>>2]=h,h=A[s+500>>2],A[Q>>2]=A[s+496>>2],A[Q+4>>2]=h,h=A[s+412>>2],A[s+248>>2]=A[s+408>>2],A[s+252>>2]=h,h=A[s+404>>2],A[s+240>>2]=A[s+400>>2],A[s+244>>2]=h,h=A[n+12>>2],A[s+232>>2]=A[n+8>>2],A[s+236>>2]=h,h=A[n+4>>2],A[s+224>>2]=A[n>>2],A[s+228>>2]=h,a0(a,s+240|0,s+224|0),h=A[s+508>>2],A[n+8>>2]=A[s+504>>2],A[n+12>>2]=h,h=A[s+500>>2],A[n>>2]=A[s+496>>2],A[n+4>>2]=h,h=A[s+524>>2],A[s+216>>2]=A[s+520>>2],A[s+220>>2]=h,h=A[s+412>>2],A[s+200>>2]=A[s+408>>2],A[s+204>>2]=h,h=A[s+516>>2],A[s+208>>2]=A[s+512>>2],A[s+212>>2]=h,h=A[s+404>>2],A[s+192>>2]=A[s+400>>2],A[s+196>>2]=h,a0(a,s+208|0,s+192|0),A[s+412>>2]=M^A[s+508>>2],A[s+408>>2]=A[s+504>>2]^b,A[s+404>>2]=A[s+500>>2]^D,A[s+400>>2]=A[s+496>>2]^v,(_=(a=_)+16|0)>>>0<=I>>>0;);if((_=15&I)&&($0((n=s+384|0)|_,0,16-_|0),P0(n,o+a|0,_),_=A[s+384>>2],n=A[s+388>>2],Q=A[s+392>>2],p=A[s+396>>2],a=A[s+492>>2],o=A[s+488>>2],A[s+520>>2]=o,A[s+524>>2]=a,B=A[s+476>>2],A[s+184>>2]=A[s+472>>2],A[s+188>>2]=B,A[s+168>>2]=o,A[s+172>>2]=a,a=A[s+484>>2],o=A[s+480>>2],A[s+512>>2]=o,A[s+516>>2]=a,B=A[s+468>>2],A[s+176>>2]=A[s+464>>2],A[s+180>>2]=B,A[s+160>>2]=o,A[s+164>>2]=a,a0(o=s+496|0,s+176|0,s+160|0),a=A[s+508>>2],A[s+488>>2]=A[s+504>>2],A[s+492>>2]=a,a=A[s+460>>2],A[s+152>>2]=A[s+456>>2],A[s+156>>2]=a,a=A[s+476>>2],A[s+136>>2]=A[s+472>>2],A[s+140>>2]=a,a=A[s+500>>2],A[s+480>>2]=A[s+496>>2],A[s+484>>2]=a,a=A[s+452>>2],A[s+144>>2]=A[s+448>>2],A[s+148>>2]=a,a=A[s+468>>2],A[s+128>>2]=A[s+464>>2],A[s+132>>2]=a,a0(o,s+144|0,s+128|0),a=A[s+508>>2],A[s+472>>2]=A[s+504>>2],A[s+476>>2]=a,a=A[s+444>>2],A[s+120>>2]=A[s+440>>2],A[s+124>>2]=a,a=A[s+460>>2],A[s+104>>2]=A[s+456>>2],A[s+108>>2]=a,a=A[s+500>>2],A[s+464>>2]=A[s+496>>2],A[s+468>>2]=a,a=A[s+436>>2],A[s+112>>2]=A[s+432>>2],A[s+116>>2]=a,a=A[s+452>>2],A[s+96>>2]=A[s+448>>2],A[s+100>>2]=a,a0(o,s+112|0,s+96|0),a=A[s+508>>2],A[s+456>>2]=A[s+504>>2],A[s+460>>2]=a,a=A[s+428>>2],A[s+88>>2]=A[s+424>>2],A[s+92>>2]=a,a=A[s+444>>2],A[s+72>>2]=A[s+440>>2],A[s+76>>2]=a,a=A[s+500>>2],A[s+448>>2]=A[s+496>>2],A[s+452>>2]=a,a=A[s+420>>2],A[s+80>>2]=A[s+416>>2],A[s+84>>2]=a,a=A[s+436>>2],A[s+64>>2]=A[s+432>>2],A[s+68>>2]=a,a0(o,s+80|0,s- -64|0),a=A[s+508>>2],A[s+440>>2]=A[s+504>>2],A[s+444>>2]=a,a=A[s+412>>2],A[s+56>>2]=A[s+408>>2],A[s+60>>2]=a,a=A[s+428>>2],A[s+40>>2]=A[s+424>>2],A[s+44>>2]=a,a=A[s+500>>2],A[s+432>>2]=A[s+496>>2],A[s+436>>2]=a,a=A[s+404>>2],A[s+48>>2]=A[s+400>>2],A[s+52>>2]=a,a=A[s+420>>2],A[s+32>>2]=A[s+416>>2],A[s+36>>2]=a,a0(o,s+48|0,s+32|0),a=A[s+508>>2],A[s+424>>2]=A[s+504>>2],A[s+428>>2]=a,a=A[s+524>>2],A[s+24>>2]=A[s+520>>2],A[s+28>>2]=a,a=A[s+412>>2],A[s+8>>2]=A[s+408>>2],A[s+12>>2]=a,a=A[s+500>>2],A[s+416>>2]=A[s+496>>2],A[s+420>>2]=a,a=A[s+516>>2],A[s+16>>2]=A[s+512>>2],A[s+20>>2]=a,a=A[s+404>>2],A[s>>2]=A[s+400>>2],A[s+4>>2]=a,a0(o,s+16|0,s),A[s+412>>2]=p^A[s+508>>2],A[s+408>>2]=Q^A[s+504>>2],A[s+404>>2]=n^A[s+500>>2],A[s+400>>2]=_^A[s+496>>2]),n=16,a=0,r>>>0<16)_=0;else for(;ae(C+a|0,t+a|0,s+400|0),_=n,(n=(a=n)+16|0)>>>0<=r>>>0;);return(o=15&r)&&($0((a=s+384|0)|o,0,16-o|0),P0(a,t+_|0,o),ae(t=s+512|0,a,s+400|0),P0(C+_|0,t,o)),Ae(g,e,I,r,s+400|0),W=s+528|0,0},function(C,g,e,t,r,o,I,a,_){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0;var s,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0;if(W=s=W-544|0,OC(_|=0,a|=0,s+432|0),_=0,I>>>0<=31)a=0;else for(n=32;te(o+_|0,s+432|0),_=a=n,(n=a+32|0)>>>0<=I>>>0;);if((_=16|a)>>>0<=I>>>0)for(n=s+448|0,Q=s+464|0,p=s+480|0,B=s+496|0,l=s+512|0;v=i[0|(a=o+a|0)]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,D=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,b=i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,M=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,a=A[l+12>>2],A[s+392>>2]=A[l+8>>2],A[s+396>>2]=a,a=A[l+4>>2],A[s+384>>2]=A[l>>2],A[s+388>>2]=a,a=A[B+12>>2],A[s+376>>2]=A[B+8>>2],A[s+380>>2]=a,a=A[B+4>>2],A[s+368>>2]=A[B>>2],A[s+372>>2]=a,a=A[l+12>>2],A[s+360>>2]=A[l+8>>2],A[s+364>>2]=a,a=A[l+4>>2],A[s+352>>2]=A[l>>2],A[s+356>>2]=a,a0(a=s+528|0,s+368|0,s+352|0),h=A[s+540>>2],A[l+8>>2]=A[s+536>>2],A[l+12>>2]=h,h=A[s+532>>2],A[l>>2]=A[s+528>>2],A[l+4>>2]=h,h=A[p+12>>2],A[s+344>>2]=A[p+8>>2],A[s+348>>2]=h,h=A[p+4>>2],A[s+336>>2]=A[p>>2],A[s+340>>2]=h,h=A[B+12>>2],A[s+328>>2]=A[B+8>>2],A[s+332>>2]=h,h=A[B+4>>2],A[s+320>>2]=A[B>>2],A[s+324>>2]=h,a0(a,s+336|0,s+320|0),h=A[s+540>>2],A[B+8>>2]=A[s+536>>2],A[B+12>>2]=h,h=A[s+532>>2],A[B>>2]=A[s+528>>2],A[B+4>>2]=h,h=A[Q+12>>2],A[s+312>>2]=A[Q+8>>2],A[s+316>>2]=h,h=A[Q+4>>2],A[s+304>>2]=A[Q>>2],A[s+308>>2]=h,h=A[p+12>>2],A[s+296>>2]=A[p+8>>2],A[s+300>>2]=h,h=A[p+4>>2],A[s+288>>2]=A[p>>2],A[s+292>>2]=h,a0(a,s+304|0,s+288|0),h=A[s+540>>2],A[p+8>>2]=A[s+536>>2],A[p+12>>2]=h,h=A[s+532>>2],A[p>>2]=A[s+528>>2],A[p+4>>2]=h,h=A[n+12>>2],A[s+280>>2]=A[n+8>>2],A[s+284>>2]=h,h=A[n+4>>2],A[s+272>>2]=A[n>>2],A[s+276>>2]=h,h=A[Q+12>>2],A[s+264>>2]=A[Q+8>>2],A[s+268>>2]=h,h=A[Q+4>>2],A[s+256>>2]=A[Q>>2],A[s+260>>2]=h,a0(a,s+272|0,s+256|0),h=A[s+540>>2],A[Q+8>>2]=A[s+536>>2],A[Q+12>>2]=h,h=A[s+532>>2],A[Q>>2]=A[s+528>>2],A[Q+4>>2]=h,h=A[s+444>>2],A[s+248>>2]=A[s+440>>2],A[s+252>>2]=h,h=A[s+436>>2],A[s+240>>2]=A[s+432>>2],A[s+244>>2]=h,h=A[n+12>>2],A[s+232>>2]=A[n+8>>2],A[s+236>>2]=h,h=A[n+4>>2],A[s+224>>2]=A[n>>2],A[s+228>>2]=h,a0(a,s+240|0,s+224|0),h=A[s+540>>2],A[n+8>>2]=A[s+536>>2],A[n+12>>2]=h,h=A[s+532>>2],A[n>>2]=A[s+528>>2],A[n+4>>2]=h,h=A[s+396>>2],A[s+216>>2]=A[s+392>>2],A[s+220>>2]=h,h=A[s+444>>2],A[s+200>>2]=A[s+440>>2],A[s+204>>2]=h,h=A[s+388>>2],A[s+208>>2]=A[s+384>>2],A[s+212>>2]=h,h=A[s+436>>2],A[s+192>>2]=A[s+432>>2],A[s+196>>2]=h,a0(a,s+208|0,s+192|0),A[s+444>>2]=M^A[s+540>>2],A[s+440>>2]=A[s+536>>2]^b,A[s+436>>2]=A[s+532>>2]^D,A[s+432>>2]=A[s+528>>2]^v,(_=(a=_)+16|0)>>>0<=I>>>0;);(_=15&I)&&($0((n=s+416|0)|_,0,16-_|0),P0(n,o+a|0,_),_=A[s+416>>2],n=A[s+420>>2],Q=A[s+424>>2],p=A[s+428>>2],a=A[s+524>>2],o=A[s+520>>2],A[s+392>>2]=o,A[s+396>>2]=a,B=A[s+508>>2],A[s+184>>2]=A[s+504>>2],A[s+188>>2]=B,A[s+168>>2]=o,A[s+172>>2]=a,a=A[s+516>>2],o=A[s+512>>2],A[s+384>>2]=o,A[s+388>>2]=a,B=A[s+500>>2],A[s+176>>2]=A[s+496>>2],A[s+180>>2]=B,A[s+160>>2]=o,A[s+164>>2]=a,a0(o=s+528|0,s+176|0,s+160|0),a=A[s+540>>2],A[s+520>>2]=A[s+536>>2],A[s+524>>2]=a,a=A[s+492>>2],A[s+152>>2]=A[s+488>>2],A[s+156>>2]=a,a=A[s+508>>2],A[s+136>>2]=A[s+504>>2],A[s+140>>2]=a,a=A[s+532>>2],A[s+512>>2]=A[s+528>>2],A[s+516>>2]=a,a=A[s+484>>2],A[s+144>>2]=A[s+480>>2],A[s+148>>2]=a,a=A[s+500>>2],A[s+128>>2]=A[s+496>>2],A[s+132>>2]=a,a0(o,s+144|0,s+128|0),a=A[s+540>>2],A[s+504>>2]=A[s+536>>2],A[s+508>>2]=a,a=A[s+476>>2],A[s+120>>2]=A[s+472>>2],A[s+124>>2]=a,a=A[s+492>>2],A[s+104>>2]=A[s+488>>2],A[s+108>>2]=a,a=A[s+532>>2],A[s+496>>2]=A[s+528>>2],A[s+500>>2]=a,a=A[s+468>>2],A[s+112>>2]=A[s+464>>2],A[s+116>>2]=a,a=A[s+484>>2],A[s+96>>2]=A[s+480>>2],A[s+100>>2]=a,a0(o,s+112|0,s+96|0),a=A[s+540>>2],A[s+488>>2]=A[s+536>>2],A[s+492>>2]=a,a=A[s+460>>2],A[s+88>>2]=A[s+456>>2],A[s+92>>2]=a,a=A[s+476>>2],A[s+72>>2]=A[s+472>>2],A[s+76>>2]=a,a=A[s+532>>2],A[s+480>>2]=A[s+528>>2],A[s+484>>2]=a,a=A[s+452>>2],A[s+80>>2]=A[s+448>>2],A[s+84>>2]=a,a=A[s+468>>2],A[s+64>>2]=A[s+464>>2],A[s+68>>2]=a,a0(o,s+80|0,s- -64|0),a=A[s+540>>2],A[s+472>>2]=A[s+536>>2],A[s+476>>2]=a,a=A[s+444>>2],A[s+56>>2]=A[s+440>>2],A[s+60>>2]=a,a=A[s+460>>2],A[s+40>>2]=A[s+456>>2],A[s+44>>2]=a,a=A[s+532>>2],A[s+464>>2]=A[s+528>>2],A[s+468>>2]=a,a=A[s+436>>2],A[s+48>>2]=A[s+432>>2],A[s+52>>2]=a,a=A[s+452>>2],A[s+32>>2]=A[s+448>>2],A[s+36>>2]=a,a0(o,s+48|0,s+32|0),a=A[s+540>>2],A[s+456>>2]=A[s+536>>2],A[s+460>>2]=a,a=A[s+396>>2],A[s+24>>2]=A[s+392>>2],A[s+28>>2]=a,a=A[s+444>>2],A[s+8>>2]=A[s+440>>2],A[s+12>>2]=a,a=A[s+532>>2],A[s+448>>2]=A[s+528>>2],A[s+452>>2]=a,a=A[s+388>>2],A[s+16>>2]=A[s+384>>2],A[s+20>>2]=a,a=A[s+436>>2],A[s>>2]=A[s+432>>2],A[s+4>>2]=a,a0(o,s+16|0,s),A[s+444>>2]=p^A[s+540>>2],A[s+440>>2]=Q^A[s+536>>2],A[s+436>>2]=n^A[s+532>>2],A[s+432>>2]=_^A[s+528>>2]);A:{g:{C:{e:{t:{if(C){if(n=16,e>>>0<16)break t;for(_=0;ie(C+_|0,g+_|0,s+432|0),_=a=n,(n=a+16|0)>>>0<=e>>>0;);}else{if(_=16,e>>>0<16)break C;for(n=0;ie(s+528|0,g+n|0,s+432|0),n=a=_,(_=a+16|0)>>>0<=e>>>0;);}if(!(_=15&e))break A;if(C)break e;break g}if(a=0,!(_=e))break A}oe(C+a|0,g+a|0,_,s+432|0);break A}if(a=0,!(_=e))break A}oe(s+528|0,g+a|0,_,s+432|0)}Ae(s+384|0,r,I,e,s+432|0),a=-1;A:{g:{if(g=r-16|0){if((0|g)==16)break g;break A}a=O1(s+384|0,t);break A}a=Xg(s+384|0,t)}return!C|!a||$0(C,0,e),W=s+544|0,0|a},function(C,g,e,t,r){var o;return C|=0,t|=0,r|=0,W=o=W+-64|0,(g|=0)|(e|=0)&&(A[o+8>>2]=2036477234,A[o+12>>2]=1797285236,A[o>>2]=1634760805,A[o+4>>2]=857760878,A[o+16>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[o+20>>2]=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[o+24>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[o+28>>2]=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+32>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+36>>2]=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+40>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,r=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,A[o+48>>2]=0,A[o+52>>2]=0,A[o+44>>2]=r,A[o+56>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,A[o+60>>2]=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,Rg(o,C=$0(C,0,g),C,g,e),y0(o,64)),W=o- -64|0,0},function(C,g,e,t,r){var o;return C|=0,t|=0,r|=0,W=o=W+-64|0,(g|=0)|(e|=0)&&(A[o+8>>2]=2036477234,A[o+12>>2]=1797285236,A[o>>2]=1634760805,A[o+4>>2]=857760878,A[o+16>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[o+20>>2]=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[o+24>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[o+28>>2]=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+32>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+36>>2]=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+40>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,r=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,A[o+48>>2]=0,A[o+44>>2]=r,A[o+52>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,A[o+56>>2]=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,A[o+60>>2]=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,Rg(o,C=$0(C,0,g),C,g,e),y0(o,64)),W=o- -64|0,0},function(C,g,e,t,r,o,I,a){var _;return C|=0,g|=0,r|=0,o|=0,I|=0,a|=0,W=_=W+-64|0,(e|=0)|(t|=0)&&(A[_+8>>2]=2036477234,A[_+12>>2]=1797285236,A[_>>2]=1634760805,A[_+4>>2]=857760878,A[_+16>>2]=i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,A[_+20>>2]=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,A[_+24>>2]=i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,A[_+28>>2]=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,A[_+32>>2]=i[a+16|0]|i[a+17|0]<<8|i[a+18|0]<<16|i[a+19|0]<<24,A[_+36>>2]=i[a+20|0]|i[a+21|0]<<8|i[a+22|0]<<16|i[a+23|0]<<24,A[_+40>>2]=i[a+24|0]|i[a+25|0]<<8|i[a+26|0]<<16|i[a+27|0]<<24,A[_+44>>2]=i[a+28|0]|i[a+29|0]<<8|i[a+30|0]<<16|i[a+31|0]<<24,A[_+48>>2]=o,A[_+52>>2]=I,A[_+56>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[_+60>>2]=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,Rg(_,g,C,e,t),y0(_,64)),W=_- -64|0,0},function(C,g,e,t,r,o,I){var a;return C|=0,g|=0,r|=0,o|=0,I|=0,W=a=W+-64|0,(e|=0)|(t|=0)&&(A[a+8>>2]=2036477234,A[a+12>>2]=1797285236,A[a>>2]=1634760805,A[a+4>>2]=857760878,A[a+16>>2]=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24,A[a+20>>2]=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,A[a+24>>2]=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,A[a+28>>2]=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,A[a+32>>2]=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,A[a+36>>2]=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,A[a+40>>2]=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,I=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,A[a+48>>2]=o,A[a+44>>2]=I,A[a+52>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[a+56>>2]=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[a+60>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,Rg(a,g,C,e,t),y0(a,64)),W=a- -64|0,0}],mC.grow=function(C){var g=this.length;return this.length=this.length+C,g},mC.set=function(C,g){this[C]=g},mC.get=function(C){return this[C]},mC);function Ba(){return R0.byteLength/65536|0}return{e:Object.create(Object.prototype,{grow:{value:function(C){C|=0;var g=0|Ba(),e=g+C|0;if(g>>0<4294967280?(Zt(C,C+t|0,0,e|=0,t,r,o|=0,I,a|=0,s|=0,h|=0),g&&(r=(C=t+16|0)>>>0<16?r+1|0:r,A[g>>2]=C,A[g+4>>2]=r)):(h2(),Q0()),0},D:function(C,g,e,t,r,o,I,a,_,s,h,n){return 0|Wt(C|=0,g|=0,e|=0,t|=0,(C=0)|(r|=0),o|=0,I|=0,C|(a|=0),_|=0,h|=0,n|=0)},E:function(C,g,e,t,r,o,I,a,_,s,h){return C|=0,g|=0,t|=0,I|=0,_|=0,I|=_=0,!(r|=0)&(t|=_)>>>0<4294967280?(Wt(C,C+t|0,0,e|=0,t,r,o|=0,I,a|=0,s|=0,h|=0),g&&(r=(C=t+16|0)>>>0<16?r+1|0:r,A[g>>2]=C,A[g+4>>2]=r)):(h2(),Q0()),0},F:function(C,g,e,t,r,o,I,a,_,s,h){return 0|Vt(C|=0,e|=0,(C=0)|(t|=0),r|=0,o|=0,I|=0,C|(a|=0),_|=0,s|=0,h|=0)},G:function(C,g,e,t,r,o,I,a,_,s,h){return g|=0,e|=0,t|=0,r|=0,a|=0,a|=0,e=-1,!(o|=0)&(r|=0)>>>0>=16|o&&(e=Vt(C|=0,t,r-16|0,o-(r>>>0<16)|0,(t+r|0)-16|0,I|=0,a,_|=0,s|=0,h|=0)),g&&(A[g>>2]=e?0:r-16|0,A[g+4>>2]=e?0:o-(r>>>0<16)|0),0|e},H:function(C,g,e,t,r,o,I,a,_,s,h){return 0|jt(C|=0,e|=0,(C=0)|(t|=0),r|=0,o|=0,I|=0,C|(a|=0),_|=0,s|=0,h|=0)},I:function(C,g,e,t,r,o,I,a,_,s,h){return g|=0,e|=0,t|=0,r|=0,a|=0,a|=0,e=-1,!(o|=0)&(r|=0)>>>0>=16|o&&(e=jt(C|=0,t,r-16|0,o-(r>>>0<16)|0,(t+r|0)-16|0,I|=0,a,_|=0,s|=0,h|=0)),g&&(A[g>>2]=e?0:r-16|0,A[g+4>>2]=e?0:o-(r>>>0<16)|0),0|e},J:G0,K:Ia,L:_1,M:o2,N:X1,O:N2,P:G0,Q:U1,R:_1,S:o2,T:X1,U:N2,V:function(C,g,e,t,r,o,I,a,_,s,h,n){return 0|jA(C|=0,g|=0,e|=0,t|=0,(C=0)|(r|=0),o|=0,I|=0,C|(a|=0),_|=0,h|=0,n|=0)},W:function(C,g,e,t,r,o,I,a,_,s,h){return C|=0,g|=0,t|=0,I|=0,_|=0,I|=_=0,!(r|=0)&(t|=_)>>>0<4294967280?(jA(C,C+t|0,0,e|=0,t,r,o|=0,I,a|=0,s|=0,h|=0),g&&(r=(C=t+16|0)>>>0<16?r+1|0:r,A[g>>2]=C,A[g+4>>2]=r)):(h2(),Q0()),0},X:function(C,g,e,t,r,o,I,a,_,s,h){return 0|lA(C|=0,e|=0,(C=0)|(t|=0),r|=0,o|=0,I|=0,C|(a|=0),_|=0,s|=0,h|=0)},Y:function(C,g,e,t,r,o,I,a,_,s,h){return g|=0,e|=0,t|=0,r|=0,a|=0,a|=0,e=-1,!(o|=0)&(r|=0)>>>0>=16|o&&(e=lA(C|=0,t,r-16|0,o-(r>>>0<16)|0,(t+r|0)-16|0,I|=0,a,_|=0,s|=0,h|=0)),g&&(A[g>>2]=e?0:r-16|0,A[g+4>>2]=e?0:o-(r>>>0<16)|0),0|e},Z:G0,_:G1,$:_1,aa:o2,ba:X1,ca:N2,da:G0,ea:G0,fa:function(){return 1462},ga:F,ha:Xt,ia:N2,ja:G0,ka:G0,la:FC,ma:N2,na:Y1,oa:function(C,g,e,t){return 0|M1(C|=0,g|=0,e|=0,t|=0)},pa:Og,qa:function(C,g,e,t,r){var o;return C|=0,g|=0,e|=0,t|=0,W=o=W-240|0,Y1(o,r|=0,32),y1(o,g,e,t),v1(o,g=o+208|0),y1(e=o+104|0,g,32,0),v1(e,C),y0(g,32),W=o+240|0,0},ra:function(C,g,e,t,r){var o,I;return C|=0,g|=0,e|=0,t|=0,W=o=W-272|0,Y1(I=o+32|0,r|=0,32),y1(I,g,e,t),v1(I,g=o+240|0),y1(e=o+136|0,g,32,0),v1(e,o),y0(g,32),g=Xg(C,o),e=p2(o,C,32),W=o+272|0,((0|C)==(0|o)?-1:g)|e},sa:J2,ta:G0,ua:Ft,va:N2,wa:N1,xa:Lr,ya:tg,za:function(C,g,e,t,r){var o;return C|=0,g|=0,e|=0,t|=0,W=o=W-480|0,N1(o,r|=0,32),x2(o,g,e,t),e1(o,g=o+416|0),x2(e=o+208|0,g,64,0),e1(e,C),y0(g,64),W=o+480|0,0},Aa:function(C,g,e,t,r){var o,I;return C|=0,g|=0,e|=0,t|=0,W=o=W-544|0,N1(I=o- -64|0,r|=0,32),x2(I,g,e,t),e1(I,g=o+480|0),x2(e=o+272|0,g,64,0),e1(e,o),y0(g,64),g=zr(C,o),e=p2(o,C,64),W=o+544|0,((0|C)==(0|o)?-1:g)|e},Ba:G0,Ca:G0,Da:Ft,Ea:N2,Fa:Pr,Ga:Lr,Ha:function(C,g){g|=0;var e,t=0;return W=e=W+-64|0,tg(C|=0,e),t=A[e+28>>2],C=A[e+24>>2],c[g+24|0]=C,c[g+25|0]=C>>>8,c[g+26|0]=C>>>16,c[g+27|0]=C>>>24,c[g+28|0]=t,c[g+29|0]=t>>>8,c[g+30|0]=t>>>16,c[g+31|0]=t>>>24,t=A[e+20>>2],C=A[e+16>>2],c[g+16|0]=C,c[g+17|0]=C>>>8,c[g+18|0]=C>>>16,c[g+19|0]=C>>>24,c[g+20|0]=t,c[g+21|0]=t>>>8,c[g+22|0]=t>>>16,c[g+23|0]=t>>>24,t=A[e+12>>2],C=A[e+8>>2],c[g+8|0]=C,c[g+9|0]=C>>>8,c[g+10|0]=C>>>16,c[g+11|0]=C>>>24,c[g+12|0]=t,c[g+13|0]=t>>>8,c[g+14|0]=t>>>16,c[g+15|0]=t>>>24,t=A[e+4>>2],C=A[e>>2],c[0|g]=C,c[g+1|0]=C>>>8,c[g+2|0]=C>>>16,c[g+3|0]=C>>>24,c[g+4|0]=t,c[g+5|0]=t>>>8,c[g+6|0]=t>>>16,c[g+7|0]=t>>>24,W=e- -64|0,0},Ia:F,Ja:Xt,Ka:G0,La:G0,Ma:G0,Na:G0,Oa:G1,Pa:G0,Qa:o2,Ra:o2,Sa:X1,Ta:function(){return 1476},Ua:function(C,g,e){return 0|k(C|=0,g|=0,e|=0)},Va:jr,Wa:vC,Xa:Ue,Ya:He,Za:Ir,_a:sr,$a:br,ab:function(C,g,e,t,r,o,I,a){C|=0,g|=0,e|=0,o|=0;var _,s=0;return s=t|=0,t=r|=0,_=0|s,W=s=W-32|0,r=-1,vC(s,I|=0,a|=0)||(r=N(C,g,e,_,t,o,s),y0(s,32)),W=s+32|0,0|r},bb:function(C,g,e,t,r,o){return C|=0,g|=0,r|=0,o|=0,!(t|=0)&(e|=0)>>>0>=4294967280|t&&(h2(),Q0()),0|N(C+16|0,C,g,e,t,r,o)},cb:function(C,g,e,t,r,o,I){return 0|Er(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},db:vr,eb:function(C,g,e,t,r,o,I,a){C|=0,g|=0,e|=0,o|=0;var _,s=0;return s=t|=0,t=r|=0,_=0|s,W=s=W-32|0,r=-1,vC(s,I|=0,a|=0)||(r=Y(C,g,e,_,t,o,s),y0(s,32)),W=s+32|0,0|r},fb:pr,gb:function(C,g,e,t,r,o,I){return 0|hr(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},hb:function(C,g,e,t,r){C|=0,g|=0,r|=0;var o,I,a,_,s=0,h=0;return s=e|=0,e=t|=0,_=0|s,s=t=W,W=o=t-512&-64,t=-1,jr(I=o- -64|0,a=o+32|0)||(ng(t=o+128|0,0,0,24),t1(t,I,32,0),t1(t,r,32,0),Eg(t,h=o+96|0,24),t=Er(C+32|0,g,_,e,h,r,a),g=A[o+92>>2],e=A[o+88>>2],c[C+24|0]=e,c[C+25|0]=e>>>8,c[C+26|0]=e>>>16,c[C+27|0]=e>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[o+84>>2],e=A[o+80>>2],c[C+16|0]=e,c[C+17|0]=e>>>8,c[C+18|0]=e>>>16,c[C+19|0]=e>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[o+76>>2],e=A[o+72>>2],c[C+8|0]=e,c[C+9|0]=e>>>8,c[C+10|0]=e>>>16,c[C+11|0]=e>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[o+68>>2],e=A[o+64>>2],c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,y0(a,32),y0(I,32),y0(h,24)),W=s,0|t},ib:function(C,g,e,t,r,o){C|=0,g|=0,r|=0,o|=0;var I,a,_=0;return a=_=W,W=I=_-448&-64,_=-1,!(t|=0)&(e|=0)>>>0>=48|t&&(ng(_=I- -64|0,0,0,24),t1(_,g,32,0),t1(_,r,32,0),Eg(_,r=I+32|0,24),_=hr(C,g+32|0,e-32|0,t-(e>>>0<32)|0,r,g,o)),W=a,0|_},jb:ca,kb:k,lb:Re,mb:wr,nb:Ue,ob:He,pb:Ir,qb:sr,rb:G0,sb:G0,tb:G0,ub:G0,vb:G1,wb:G0,xb:o2,yb:o2,zb:X1,Ab:g1,Bb:G0,Cb:o2,Db:G0,Eb:o2,Fb:S1,Gb:G0,Hb:o2,Ib:G0,Jb:o2,Kb:uC,Lb:J2,Mb:o2,Nb:G0,Ob:o2,Pb:dC,Qb:J2,Rb:o2,Sb:G0,Tb:o2,Ub:SC,Vb:J2,Wb:o2,Xb:G0,Yb:o2,Zb:o2,_b:J2,$b:G0,ac:o2,bc:J2,cc:G0,dc:ra,ec:aa,fc:function(C,g,e,t,r,o,I){return 0|ut(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},gc:ng,hc:function(C,g,e,t){return 0|t1(C|=0,g|=0,e|=0,t|=0)},ic:Eg,jc:N2,kc:o2,lc:J2,mc:G0,nc:o2,oc:J2,pc:G0,qc:o2,rc:o2,sc:aa,tc:N2,uc:ut,vc:function(C,g,e,t,r,o,I,a,_){return 0|se(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0,a|=0,_|=0)},wc:sg,xc:function(C,g,e,t,r,o){C|=0,g|=0,r|=0,o|=0;var I=0,a=0,_=0,s=0,h=0,n=0,B=0;if(I=-1,!((t|=0)-65>>>0<4294967232|(e|=0)>>>0>64)){A:{if(!e||!g){if(((s=255&t)-65&255)>>>0>191){r?(a=725511199^(i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24),e=-1694144372^(i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24),g=-1377402159^(i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),r=1359893119^(i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24)):(a=725511199,e=-1694144372,g=-1377402159,r=1359893119),o?(_=327033209^(i[o+8|0]|i[o+9|0]<<8|i[o+10|0]<<16|i[o+11|0]<<24),t=1541459225^(i[o+12|0]|i[o+13|0]<<8|i[o+14|0]<<16|i[o+15|0]<<24),I=-79577749^(i[0|o]|i[o+1|0]<<8|i[o+2|0]<<16|i[o+3|0]<<24),o=528734635^(i[o+4|0]|i[o+5|0]<<8|i[o+6|0]<<16|i[o+7|0]<<24)):(_=327033209,t=1541459225,I=-79577749,o=528734635),$0(C- -64|0,0,293),c[C+56|0]=_,c[C+57|0]=_>>>8,c[C+58|0]=_>>>16,c[C+59|0]=_>>>24,c[C+60|0]=t,c[C+61|0]=t>>>8,c[C+62|0]=t>>>16,c[C+63|0]=t>>>24,c[C+48|0]=I,c[C+49|0]=I>>>8,c[C+50|0]=I>>>16,c[C+51|0]=I>>>24,c[C+52|0]=o,c[C+53|0]=o>>>8,c[C+54|0]=o>>>16,c[C+55|0]=o>>>24,c[C+40|0]=a,c[C+41|0]=a>>>8,c[C+42|0]=a>>>16,c[C+43|0]=a>>>24,c[C+44|0]=e,c[C+45|0]=e>>>8,c[C+46|0]=e>>>16,c[C+47|0]=e>>>24,c[C+32|0]=g,c[C+33|0]=g>>>8,c[C+34|0]=g>>>16,c[C+35|0]=g>>>24,c[C+36|0]=r,c[C+37|0]=r>>>8,c[C+38|0]=r>>>16,c[C+39|0]=r>>>24,c[C+24|0]=241,c[C+25|0]=54,c[C+26|0]=29,c[C+27|0]=95,c[C+28|0]=58,c[C+29|0]=245,c[C+30|0]=79,c[C+31|0]=165,c[C+16|0]=43,c[C+17|0]=248,c[C+18|0]=148,c[C+19|0]=254,c[C+20|0]=114,c[C+21|0]=243,c[C+22|0]=110,c[C+23|0]=60,c[C+8|0]=59,c[C+9|0]=167,c[C+10|0]=202,c[C+11|0]=132,c[C+12|0]=133,c[C+13|0]=174,c[C+14|0]=103,c[C+15|0]=187,g=-222443256^s,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,c[C+4|0]=103,c[C+5|0]=230,c[C+6|0]=9,c[C+7|0]=106;break A}h2(),Q0()}W=n=W-128|0,!g|((B=255&t)-65&255)>>>0<=191|((s=255&e)-65&255)>>>0<=191?(h2(),Q0()):(r?(a=725511199^(i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24),e=-1694144372^(i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24),I=-1377402159^(i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),r=1359893119^(i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24)):(a=725511199,e=-1694144372,I=-1377402159,r=1359893119),o?(_=327033209^(i[o+8|0]|i[o+9|0]<<8|i[o+10|0]<<16|i[o+11|0]<<24),t=1541459225^(i[o+12|0]|i[o+13|0]<<8|i[o+14|0]<<16|i[o+15|0]<<24),h=-79577749^(i[0|o]|i[o+1|0]<<8|i[o+2|0]<<16|i[o+3|0]<<24),o=528734635^(i[o+4|0]|i[o+5|0]<<8|i[o+6|0]<<16|i[o+7|0]<<24)):(_=327033209,t=1541459225,h=-79577749,o=528734635),$0(C- -64|0,0,293),c[C+56|0]=_,c[C+57|0]=_>>>8,c[C+58|0]=_>>>16,c[C+59|0]=_>>>24,c[C+60|0]=t,c[C+61|0]=t>>>8,c[C+62|0]=t>>>16,c[C+63|0]=t>>>24,c[C+48|0]=h,c[C+49|0]=h>>>8,c[C+50|0]=h>>>16,c[C+51|0]=h>>>24,c[C+52|0]=o,c[C+53|0]=o>>>8,c[C+54|0]=o>>>16,c[C+55|0]=o>>>24,c[C+40|0]=a,c[C+41|0]=a>>>8,c[C+42|0]=a>>>16,c[C+43|0]=a>>>24,c[C+44|0]=e,c[C+45|0]=e>>>8,c[C+46|0]=e>>>16,c[C+47|0]=e>>>24,c[C+32|0]=I,c[C+33|0]=I>>>8,c[C+34|0]=I>>>16,c[C+35|0]=I>>>24,c[C+36|0]=r,c[C+37|0]=r>>>8,c[C+38|0]=r>>>16,c[C+39|0]=r>>>24,c[C+24|0]=241,c[C+25|0]=54,c[C+26|0]=29,c[C+27|0]=95,c[C+28|0]=58,c[C+29|0]=245,c[C+30|0]=79,c[C+31|0]=165,c[C+16|0]=43,c[C+17|0]=248,c[C+18|0]=148,c[C+19|0]=254,c[C+20|0]=114,c[C+21|0]=243,c[C+22|0]=110,c[C+23|0]=60,c[C+8|0]=59,c[C+9|0]=167,c[C+10|0]=202,c[C+11|0]=132,c[C+12|0]=133,c[C+13|0]=174,c[C+14|0]=103,c[C+15|0]=187,e=-222443256^(s<<8|B),c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,e=s>>>24^1779033703,c[C+4|0]=e,c[C+5|0]=e>>>8,c[C+6|0]=e>>>16,c[C+7|0]=e>>>24,e=P0($0(n,0,128),g,s),P0(C+96|0,e,128),g=128+(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)|0,c[C+352|0]=g,c[C+353|0]=g>>>8,c[C+354|0]=g>>>16,c[C+355|0]=g>>>24,y0(e,128),W=e+128|0)}I=0}return 0|I},yc:t1,zc:lC,Ac:J2,Bc:Jr,Cc:function(){return 1531},Dc:G0,Ec:function(){return 104},Fc:Me,Gc:function(C,g,e,t){return 0|y1(C|=0,g|=0,e|=0,t|=0)},Hc:v1,Ic:function(C,g,e,t){C|=0,g|=0,e|=0,t|=0;var r,o=0;return W=r=W-112|0,o=A[8811],A[r+16>>2]=A[8810],A[r+20>>2]=o,o=A[8813],A[r+24>>2]=A[8812],A[r+28>>2]=o,o=A[8815],A[r+32>>2]=A[8814],A[r+36>>2]=o,A[r+40>>2]=0,A[r+44>>2]=0,o=A[8809],A[r+8>>2]=A[8808],A[r+12>>2]=o,y1(o=r+8|0,g,e,t),v1(o,C),W=r+112|0,0},Jc:J2,Kc:FC,Lc:b0,Mc:Dt,Nc:e1,Oc:Jr,Pc:o2,Qc:J2,Rc:U1,Sc:G0,Tc:Ot,Uc:ra,Vc:o2,Wc:J2,Xc:U1,Yc:G0,Zc:Ot,_c:N2,$c:function(C,g,e){return 0|Y1(C|=0,g|=0,e|=0)},ad:function(C,g,e){return 0|M1(C|=0,g|=0,e|=0,0)},bd:function(C,g){return Og(C|=0,g|=0),y0(C,4),0},cd:function(C,g,e,t,r){var o;return C|=0,t|=0,r|=0,W=o=W-208|0,Y1(o,g|=0,e|=0),M1(o,t,r,0),Og(o,C),y0(o,4),W=o+208|0,0},dd:N2,ed:function(C,g,e,t,r){C|=0,g|=0,e|=0,t|=0,r|=0;var o,I=0,a=0,_=0,s=0;if(W=o=W-256|0,c[o+15|0]=1,g>>>0<=8160){if(g>>>0>=32)for(s=C-32|0,I=32;_=I,Y1(I=o+48|0,r,32),a&&M1(I,a+s|0,32,0),M1(I=o+48|0,e,t,0),M1(I,o+15|0,1,0),Og(I,C+a|0),c[o+15|0]=i[o+15|0]+1,(I=(a=_)+32|0)>>>0<=g>>>0;);(a=31&g)&&(Y1(g=o+48|0,r,32),_&&M1(g,(C+_|0)-32|0,32,0),M1(g=o+48|0,e,t,0),M1(g,o+15|0,1,0),Og(e=g,g=o+16|0),P0(C+_|0,g,a),y0(g,32)),y0(o+48|0,208),C=0}else A[9404]=28,C=-1;return W=o+256|0,0|C},fd:G0,gd:_1,hd:function(){return 8160},id:FC,jd:Pr,kd:function(C,g,e){return 0|m1(C|=0,g|=0,e|=0,0)},ld:function(C,g){return tg(C|=0,g|=0),y0(C,4),0},md:function(C,g,e,t,r){var o;return C|=0,t|=0,r|=0,W=o=W-416|0,N1(o,g|=0,e|=0),m1(o,t,r,0),tg(o,C),y0(o,4),W=o+416|0,0},nd:function(C){X2(C|=0,64)},od:function(C,g,e,t,r){C|=0,g|=0,e|=0,t|=0,r|=0;var o,I=0,a=0,_=0,s=0;if(W=o=W-496|0,c[o+15|0]=1,g>>>0<=16320){if(g>>>0>=64)for(s=C+-64|0,I=64;_=I,N1(I=o+80|0,r,64),a&&m1(I,a+s|0,64,0),m1(I=o+80|0,e,t,0),m1(I,o+15|0,1,0),tg(I,C+a|0),c[o+15|0]=i[o+15|0]+1,(I=(a=_)- -64|0)>>>0<=g>>>0;);(a=63&g)&&(N1(g=o+80|0,r,64),_&&m1(g,(C+_|0)-64|0,64,0),m1(g=o+80|0,e,t,0),m1(g,o+15|0,1,0),tg(e=g,g=o+16|0),P0(C+_|0,g,a),y0(g,64)),y0(o+80|0,416),C=0}else A[9404]=28,C=-1;return W=o+496|0,0|C},pd:J2,qd:_1,rd:function(){return 16320},sd:Ft,td:function(C,g,e){return C|=0,ut(g|=0,32,e|=0,32,0,0,0),0|dt(C,g)},ud:function(C,g){return C|=0,X2(g|=0,32),0|dt(C,g)},vd:function(C,g,e,t,r){g|=0,e|=0,t|=0,r|=0;var o,I,a=0,_=0,s=0;if(I=a=W,W=a=a-512&-64,o=(C|=0)||g){if(s=-1,!lt(_=a+96|0,t,r)){for(t=g||C,C=0,ng(g=a+128|0,0,0,64),t1(g,_,32,0),y0(_,32),t1(g,e,32,0),t1(g,r,32,0),Eg(g,a+32|0,64),y0(g,384);e=(g=a+32|0)+C|0,c[C+o|0]=i[0|e],c[C+t|0]=i[e+32|0],c[(e=1|C)+o|0]=i[g+e|0],c[e+t|0]=i[g+(33|C)|0],(0|(C=C+2|0))!=32;);y0(g,64),s=0}return W=I,0|s}h2(),Q0()},wd:function(C,g,e,t,r){g|=0,e|=0,t|=0,r|=0;var o,I,a=0,_=0,s=0;if(I=a=W,W=a=a-512&-64,o=(C|=0)||g){if(s=-1,!lt(_=a+96|0,t,r)){for(t=g||C,C=0,ng(g=a+128|0,0,0,64),t1(g,_,32,0),y0(_,32),t1(g,r,32,0),t1(g,e,32,0),Eg(g,a+32|0,64),y0(g,384);e=(g=a+32|0)+C|0,c[C+t|0]=i[0|e],c[C+o|0]=i[e+32|0],c[(e=1|C)+t|0]=i[g+e|0],c[e+o|0]=i[g+(33|C)|0],(0|(C=C+2|0))!=32;);y0(g,64),s=0}return W=I,0|s}h2(),Q0()},xd:G0,yd:G0,zd:G0,Ad:G0,Bd:function(){return 1332},Cd:ia,Dd:o2,Ed:G0,Fd:xr,Gd:Yr,Hd:function(C,g){return 0|f1(C|=0,g|=0)},Id:Rr,Jd:function(C,g){return 0|D1(C|=0,g|=0)},Kd:function(){return 1494},Ld:N2,Md:xr,Nd:Yr,Od:f1,Pd:Rr,Qd:D1,Rd:o2,Sd:G0,Td:ia,Ud:N2,Vd:NC,Wd:o2,Xd:z2,Yd:_1,Zd:z2,_d:o2,$d:Nt,ae:function(){return 1554},be:ze,ce:z2,de:vt,ee:St,fe:mt,ge:Aa,he:function(){return 6},ie:function(){return 134217728},je:U1,ke:function(){return 536870912},le:function(C,g,e,t,r,o,I,a,_,s,h){return 0|P(C|=0,(C=0)|(g|=0),e|=0,t|=0,C|(r|=0),o|=0,I|=0,C|(a|=0),_|=0,s|=0,h|=0)},me:function(C,g,e,t,r,o,I){return 0|rr(C|=0,g|=0,(C=0)|(e|=0),t|=0,C|(r|=0),o|=0,I|=0)},ne:function(C,g,e,t){return 0|Or(C|=0,g|=0,e|=0,t|=0)},oe:function(C,g,e,t){return 0|Xr(C|=0,g|=0,e|=0,t|=0)},pe:function(C,g,e,t){return 0|Vr(C|=0,g|=0,e|=0,t|=0)},qe:pg,re:o2,se:z2,te:_1,ue:z2,ve:o2,we:Nt,xe:ta,ye:NC,ze:z2,Ae:vt,Be:St,Ce:pg,De:ga,Ee:ze,Fe:$r,Ge:mt,He:bt,Ie:function(C,g,e,t,r,o,I,a,_,s,h){return 0|AA(C|=0,(C=0)|(g|=0),e|=0,t|=0,C|(r|=0),o|=0,I|=0,C|(a|=0),_|=0,s|=0,h|=0)},Je:kr,Ke:function(C,g,e,t){return 0|Wr(C|=0,g|=0,e|=0,t|=0)},Le:NC,Me:pg,Ne:pg,Oe:o2,Pe:z2,Qe:_1,Re:z2,Se:o2,Te:Nt,Ue:ta,Ve:NC,We:z2,Xe:vt,Ye:St,Ze:pg,_e:ga,$e:ze,af:$r,bf:mt,cf:bt,df:function(C,g,e,t,r,o,I,a,_,s,h){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0,a|=0,_|=0,s|=0,g|=0,r|=0,a|=0;A:{switch((h|=0)-1|0){case 0:C=P(C,g,e,t,r,o,I,a,_,s,1);break A;case 1:C=AA(C,g,e,t,r,o,I,a,_,s,2);break A}A[9404]=28,C=-1}return 0|C},ef:kr,ff:function(C,g,e,t,r,o,I,a){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0,e|=0,r|=0;A:{switch((a|=0)-1|0){case 1:C=_r(C,g,e,t,r,o,I);break A;default:h2(),Q0();case 0:}C=rr(C,g,e,t,r,o,I)}return 0|C},gf:function(C,g,e,t){return g|=0,e|=0,t|=0,zg(C|=0,1564,10)?zg(C,1554,9)?(A[9404]=28,C=-1):C=Or(C,g,e,t):C=Wr(C,g,e,t),0|C},hf:function(C,g,e,t){return g|=0,e|=0,t|=0,zg(C|=0,1564,10)?zg(C,1554,9)?(A[9404]=28,C=-1):C=Xr(C,g,e,t):C=Vr(C,g,e,t),0|C},jf:function(){return 1156},kf:function(){return 1443},lf:dt,mf:lt,nf:G0,of:G0,pf:E1,qf:Pe,rf:G0,sf:G0,tf:G0,uf:G1,vf:G0,wf:o2,xf:o2,yf:X1,zf:function(){return 1486},Af:Ue,Bf:He,Cf:N2,Df:br,Ef:function(C,g,e,t,r,o){return C|=0,g|=0,r|=0,o|=0,!(t|=0)&(e|=0)>>>0>=4294967280|t&&(h2(),Q0()),N(C+16|0,C,g,e,t,r,o),0},Ff:vr,Gf:pr,Hf:Ue,If:He,Jf:G0,Kf:G1,Lf:G0,Mf:o2,Nf:o2,Of:X1,Pf:N2,Qf:N2,Rf:function(C,g,e){return C|=0,e|=0,X2(g|=0,24),g1(C,g,e,0),c[C+32|0]=1,c[C+33|0]=0,c[C+34|0]=0,c[C+35|0]=0,e=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,c[C+44|0]=0,c[C+45|0]=0,c[C+46|0]=0,c[C+47|0]=0,c[C+48|0]=0,c[C+49|0]=0,c[C+50|0]=0,c[C+51|0]=0,c[C+36|0]=e,c[C+37|0]=e>>>8,c[C+38|0]=e>>>16,c[C+39|0]=e>>>24,c[C+40|0]=g,c[C+41|0]=g>>>8,c[C+42|0]=g>>>16,c[C+43|0]=g>>>24,0},Sf:function(C,g,e){return g1(C|=0,g|=0,e|=0,0),c[C+32|0]=1,c[C+33|0]=0,c[C+34|0]=0,c[C+35|0]=0,e=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,c[C+44|0]=0,c[C+45|0]=0,c[C+46|0]=0,c[C+47|0]=0,c[C+48|0]=0,c[C+49|0]=0,c[C+50|0]=0,c[C+51|0]=0,c[C+36|0]=e,c[C+37|0]=e>>>8,c[C+38|0]=e>>>16,c[C+39|0]=e>>>24,c[C+40|0]=g,c[C+41|0]=g>>>8,c[C+42|0]=g>>>16,c[C+43|0]=g>>>24,0},Tf:function(C){var g,e=0,t=0;W=g=W-48|0,e=i[28+(C|=0)|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,A[g+24>>2]=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,A[g+28>>2]=e,e=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,A[g+16>>2]=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,A[g+20>>2]=e,e=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,A[g>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,A[g+4>>2]=e,e=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,A[g+8>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,A[g+12>>2]=e,e=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,A[g+32>>2]=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,A[g+36>>2]=e,xe(g,g,40,0,C+32|0,C),e=A[g+28>>2],t=A[g+24>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=e,c[C+29|0]=e>>>8,c[C+30|0]=e>>>16,c[C+31|0]=e>>>24,e=A[g+20>>2],t=A[g+16>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=e,c[C+21|0]=e>>>8,c[C+22|0]=e>>>16,c[C+23|0]=e>>>24,e=A[g+12>>2],t=A[g+8>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=e,c[C+13|0]=e>>>8,c[C+14|0]=e>>>16,c[C+15|0]=e>>>24,e=A[g+4>>2],t=A[g>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=e,c[C+5|0]=e>>>8,c[C+6|0]=e>>>16,c[C+7|0]=e>>>24,t=A[g+36>>2],e=A[g+32>>2],c[C+32|0]=1,c[C+33|0]=0,c[C+34|0]=0,c[C+35|0]=0,c[C+36|0]=e,c[C+37|0]=e>>>8,c[C+38|0]=e>>>16,c[C+39|0]=e>>>24,c[C+40|0]=t,c[C+41|0]=t>>>8,c[C+42|0]=t>>>16,c[C+43|0]=t>>>24,W=g+48|0},Uf:function(C,g,e,t,r,o,I,a,_,s){C|=0,g|=0,t|=0,o|=0,I|=0,_|=0,s|=0;var h,n=0,B=0,Q=0;return n=r|=0,n|=r=0,h=r|(a|=0),W=r=W-384|0,(e|=0)&&(A[e>>2]=0,A[e+4>>2]=0),!o&n>>>0<4294967279?(rg(B=r+16|0,64,0,Q=C+32|0,C),f1(a=r+80|0,B),y0(B,64),a2(a,I,h,_),a2(a,35216,0-h&15,0),A[r+72>>2]=0,A[r+76>>2]=0,A[(I=r- -64|0)>>2]=0,A[I+4>>2]=0,A[r+56>>2]=0,A[r+60>>2]=0,A[r+48>>2]=0,A[r+52>>2]=0,A[r+40>>2]=0,A[r+44>>2]=0,A[r+32>>2]=0,A[r+36>>2]=0,A[r+16>>2]=0,A[r+20>>2]=0,A[r+24>>2]=0,A[r+28>>2]=0,c[r+16|0]=s,hg(B,B,64,0,Q,1,C),a2(a,B,64,0),c[0|g]=i[r+16|0],hg(g=g+1|0,t,n,o,Q,2,C),a2(a,g,n,o),a2(a,35216,15&n,0),A[r+8>>2]=h,A[r+12>>2]=_,a2(a,t=r+8|0,8,0),A[r+8>>2]=n- -64,A[r+12>>2]=o-((n>>>0<4294967232)-1|0),a2(a,t,8,0),D1(a,g=g+n|0),y0(a,256),c[C+36|0]=i[C+36|0]^i[0|g],c[C+37|0]=i[C+37|0]^i[g+1|0],c[C+38|0]=i[C+38|0]^i[g+2|0],c[C+39|0]=i[C+39|0]^i[g+3|0],c[C+40|0]=i[C+40|0]^i[g+4|0],c[C+41|0]=i[C+41|0]^i[g+5|0],c[C+42|0]=i[C+42|0]^i[g+6|0],c[C+43|0]=i[C+43|0]^i[g+7|0],tr(Q),(2&s||X0(Q,4))&&(g=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,A[r+360>>2]=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,A[r+364>>2]=g,g=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,A[r+352>>2]=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,A[r+356>>2]=g,g=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,A[r+336>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,A[r+340>>2]=g,g=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,A[r+344>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,A[r+348>>2]=g,g=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,A[r+368>>2]=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,A[r+372>>2]=g,xe(g=r+336|0,g,40,0,Q,C),g=A[r+364>>2],t=A[r+360>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[r+356>>2],t=A[r+352>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[r+348>>2],t=A[r+344>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[r+340>>2],t=A[r+336>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=A[r+368>>2],t=A[r+372>>2],c[C+32|0]=1,c[C+33|0]=0,c[C+34|0]=0,c[C+35|0]=0,c[C+36|0]=g,c[C+37|0]=g>>>8,c[C+38|0]=g>>>16,c[C+39|0]=g>>>24,c[C+40|0]=t,c[C+41|0]=t>>>8,c[C+42|0]=t>>>16,c[C+43|0]=t>>>24),e&&(o=(C=n+17|0)>>>0<17?o+1|0:o,A[e>>2]=C,A[e+4>>2]=o),W=r+384|0):(h2(),Q0()),0},Vf:function(C,g,e,t,r,o,I,a,_,s){C|=0,g|=0,t|=0,r|=0,a|=0,s|=0;var h,n=0,B=0,Q=0,p=0,l=0,v=0;n=o|=0,o=I|=0,B=0|n,h=_|=0,W=I=W-400|0,(e|=0)&&(A[e>>2]=0,A[e+4>>2]=0),t&&(c[0|t]=255),v=-1;A:{g:{if(!((_=B>>>0<17)&!o)){if(l=n=o-_|0,!n&(_=B-17|0)>>>0>=4294967279|n)break g;rg(Q=I+32|0,64,0,p=C+32|0,C),f1(n=I+96|0,Q),y0(Q,64),a2(n,a,h,s),a2(n,35216,0-h&15,0),A[I+88>>2]=0,A[I+92>>2]=0,A[I+80>>2]=0,A[I+84>>2]=0,A[I+72>>2]=0,A[I+76>>2]=0,A[(a=I- -64|0)>>2]=0,A[a+4>>2]=0,A[I+56>>2]=0,A[I+60>>2]=0,A[I+48>>2]=0,A[I+52>>2]=0,A[I+40>>2]=0,A[I+44>>2]=0,A[I+32>>2]=0,A[I+36>>2]=0,c[I+32|0]=i[0|r],hg(Q,Q,64,0,p,1,C),a=i[I+32|0],c[I+32|0]=i[0|r],a2(n,Q,64,0),a2(n,r=r+1|0,_,l),a2(n,35216,B-1&15,0),A[I+24>>2]=h,A[I+28>>2]=s,a2(n,s=I+24|0,8,0),o=(B=B+47|0)>>>0<47?o+1|0:o,A[I+24>>2]=B,A[I+28>>2]=o,a2(n,s,8,0),D1(n,I),y0(n,256),p2(I,r+_|0,16)?y0(I,16):(hg(g,r,_,l,p,2,C),c[C+36|0]=i[C+36|0]^i[0|I],c[C+37|0]=i[C+37|0]^i[I+1|0],c[C+38|0]=i[C+38|0]^i[I+2|0],c[C+39|0]=i[C+39|0]^i[I+3|0],c[C+40|0]=i[C+40|0]^i[I+4|0],c[C+41|0]=i[C+41|0]^i[I+5|0],c[C+42|0]=i[C+42|0]^i[I+6|0],c[C+43|0]=i[C+43|0]^i[I+7|0],tr(p),(2&a||X0(p,4))&&(g=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,A[I+376>>2]=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,A[I+380>>2]=g,g=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,A[I+368>>2]=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,A[I+372>>2]=g,g=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,A[I+352>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,A[I+356>>2]=g,g=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,A[I+360>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,A[I+364>>2]=g,g=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,A[I+384>>2]=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,A[I+388>>2]=g,xe(g=I+352|0,g,40,0,p,C),g=A[I+380>>2],r=A[I+376>>2],c[C+24|0]=r,c[C+25|0]=r>>>8,c[C+26|0]=r>>>16,c[C+27|0]=r>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[I+372>>2],r=A[I+368>>2],c[C+16|0]=r,c[C+17|0]=r>>>8,c[C+18|0]=r>>>16,c[C+19|0]=r>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[I+364>>2],r=A[I+360>>2],c[C+8|0]=r,c[C+9|0]=r>>>8,c[C+10|0]=r>>>16,c[C+11|0]=r>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[I+356>>2],r=A[I+352>>2],c[0|C]=r,c[C+1|0]=r>>>8,c[C+2|0]=r>>>16,c[C+3|0]=r>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=A[I+384>>2],r=A[I+388>>2],c[C+32|0]=1,c[C+33|0]=0,c[C+34|0]=0,c[C+35|0]=0,c[C+36|0]=g,c[C+37|0]=g>>>8,c[C+38|0]=g>>>16,c[C+39|0]=g>>>24,c[C+40|0]=r,c[C+41|0]=r>>>8,c[C+42|0]=r>>>16,c[C+43|0]=r>>>24),e&&(A[e>>2]=_,A[e+4>>2]=l),v=0,t&&(c[0|t]=a))}W=I+400|0;break A}h2(),Q0()}return 0|v},Wf:function(){return 52},Xf:function(){return 17},Yf:G1,Zf:G0,_f:function(){return-18},$f:_1,ag:NC,bg:pg,cg:ze,dg:U1,eg:o2,fg:function(){return 1521},gg:_e,hg:Ca,ig:U1,jg:o2,kg:_e,lg:FC,mg:J2,ng:G0,og:G0,pg:J2,qg:oa,rg:function(){return 1454},sg:function(C,g,e){return 0|Ee(C|=0,g|=0,e|=0)},tg:function(C,g){return 0|fe(C|=0,g|=0)},ug:Ar,vg:Tt,wg:mr,xg:Kr,yg:function(C){return 0|Zr(C|=0)},zg:Dt,Ag:function(C,g,e,t){return 0|lr(C|=0,g|=0,e|=0,t|=0)},Bg:function(C,g,e){return 0|dr(C|=0,g|=0,e|=0)},Cg:FC,Dg:J2,Eg:G0,Fg:G0,Gg:J2,Hg:oa,Ig:function(C,g){C|=0;var e,t,r,o,I,a,_=0;return e=i[8+(_=g|=0)|0]|i[_+9|0]<<8|i[_+10|0]<<16|i[_+11|0]<<24,t=i[_+12|0]|i[_+13|0]<<8|i[_+14|0]<<16|i[_+15|0]<<24,r=i[_+16|0]|i[_+17|0]<<8|i[_+18|0]<<16|i[_+19|0]<<24,o=i[_+20|0]|i[_+21|0]<<8|i[_+22|0]<<16|i[_+23|0]<<24,I=i[0|_]|i[_+1|0]<<8|i[_+2|0]<<16|i[_+3|0]<<24,g=i[_+4|0]|i[_+5|0]<<8|i[_+6|0]<<16|i[_+7|0]<<24,a=i[_+28|0]|i[_+29|0]<<8|i[_+30|0]<<16|i[_+31|0]<<24,_=i[_+24|0]|i[_+25|0]<<8|i[_+26|0]<<16|i[_+27|0]<<24,c[C+24|0]=_,c[C+25|0]=_>>>8,c[C+26|0]=_>>>16,c[C+27|0]=_>>>24,c[C+28|0]=a,c[C+29|0]=a>>>8,c[C+30|0]=a>>>16,c[C+31|0]=a>>>24,c[C+16|0]=r,c[C+17|0]=r>>>8,c[C+18|0]=r>>>16,c[C+19|0]=r>>>24,c[C+20|0]=o,c[C+21|0]=o>>>8,c[C+22|0]=o>>>16,c[C+23|0]=o>>>24,c[C+8|0]=e,c[C+9|0]=e>>>8,c[C+10|0]=e>>>16,c[C+11|0]=e>>>24,c[C+12|0]=t,c[C+13|0]=t>>>8,c[C+14|0]=t>>>16,c[C+15|0]=t>>>24,c[0|C]=I,c[C+1|0]=I>>>8,c[C+2|0]=I>>>16,c[C+3|0]=I>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,0},Jg:function(C,g){C|=0;var e,t,r,o,I,a,_=0;return e=i[32+(_=g|=0)|0]|i[_+33|0]<<8|i[_+34|0]<<16|i[_+35|0]<<24,t=i[_+36|0]|i[_+37|0]<<8|i[_+38|0]<<16|i[_+39|0]<<24,r=i[_+40|0]|i[_+41|0]<<8|i[_+42|0]<<16|i[_+43|0]<<24,o=i[_+44|0]|i[_+45|0]<<8|i[_+46|0]<<16|i[_+47|0]<<24,I=i[_+48|0]|i[_+49|0]<<8|i[_+50|0]<<16|i[_+51|0]<<24,g=i[_+52|0]|i[_+53|0]<<8|i[_+54|0]<<16|i[_+55|0]<<24,a=i[_+60|0]|i[_+61|0]<<8|i[_+62|0]<<16|i[_+63|0]<<24,_=i[_+56|0]|i[_+57|0]<<8|i[_+58|0]<<16|i[_+59|0]<<24,c[C+24|0]=_,c[C+25|0]=_>>>8,c[C+26|0]=_>>>16,c[C+27|0]=_>>>24,c[C+28|0]=a,c[C+29|0]=a>>>8,c[C+30|0]=a>>>16,c[C+31|0]=a>>>24,c[C+16|0]=I,c[C+17|0]=I>>>8,c[C+18|0]=I>>>16,c[C+19|0]=I>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,c[C+8|0]=r,c[C+9|0]=r>>>8,c[C+10|0]=r>>>16,c[C+11|0]=r>>>24,c[C+12|0]=o,c[C+13|0]=o>>>8,c[C+14|0]=o>>>16,c[C+15|0]=o>>>24,c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,c[C+4|0]=t,c[C+5|0]=t>>>8,c[C+6|0]=t>>>16,c[C+7|0]=t>>>24,0},Kg:Zr,Lg:Dt,Mg:lr,Ng:dr,Og:Ee,Pg:fe,Qg:function(C,g){C|=0;var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0,O=0,rA=0,cA=0,XA=0,A0=0,s0=0,p0=0,f0=0,E0=0,w0=0,u0=0,k0=0,F0=0,N0=0,x0=0,L0=0,T0=0,j0=0,V0=0,W0=0,C2=0,e2=0,r2=0,i2=0,s2=0,k2=0,d2=0;return W=e=W-256|0,V0=-1,a1(g|=0)||ke(t=e+96|0,g)||cC(t)&&(V0=0,iA=A[e+172>>2],A[e+36>>2]=0-iA,b=A[e+168>>2],A[e+32>>2]=0-b,hA=A[e+164>>2],A[e+28>>2]=0-hA,M=A[e+160>>2],A[e+24>>2]=0-M,mA=A[e+156>>2],A[e+20>>2]=0-mA,x=A[e+152>>2],A[e+16>>2]=0-x,HA=A[e+148>>2],A[e+12>>2]=0-HA,q=A[e+144>>2],A[e+8>>2]=0-q,aA=A[e+140>>2],A[e+4>>2]=0-aA,o=A[e+136>>2],A[e>>2]=1-o,j1(e,e),g=w(V=A[e+4>>2],uA=V>>31,$=mA<<1,_0=$>>31),t=y,r=w(v=A[e>>2],K=v>>31,M,J=M>>31),t=y+t|0,t=(g=r+g|0)>>>0>>0?t+1|0:t,r=(I=w(z=A[e+8>>2],EA=z>>31,x,_A=x>>31))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(vA=A[e+12>>2],$A=vA>>31,u=HA<<1,I0=u>>31),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=w(YA=A[e+16>>2],d=YA>>31,q,sA=q>>31),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,F0=I=A[e+20>>2],p=w(I,h0=I>>31,H=aA<<1,D0=H>>31),r=y+g|0,r=(t=p+t|0)>>>0

>>0?r+1|0:r,N0=n=A[e+24>>2],g=(o=w(n,w0=n>>31,p=o+1|0,nA=p>>31))+t|0,t=y+r|0,t=g>>>0>>0?t+1|0:t,MA=A[e+28>>2],r=(o=w(D=M0(MA,19),g0=D>>31,FA=iA<<1,O=FA>>31))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,W0=A[e+32>>2],r=w(_=M0(W0,19),qA=_>>31,b,fA=b>>31),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,C2=A[e+36>>2],r=w(Q=M0(C2,19),wA=Q>>31,VA=hA<<1,rA=VA>>31),g=y+g|0,s=t=r+t|0,o=t>>>0>>0?g+1|0:g,g=w(x,_A,V,uA),t=y,a=w(v,K,mA,cA=mA>>31),r=y+t|0,r=(g=a+g|0)>>>0>>0?r+1|0:r,a=w(z,EA,HA,XA=HA>>31),t=y+r|0,t=(g=a+g|0)>>>0>>0?t+1|0:t,r=(a=w(q,sA,vA,$A))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(YA,d,aA,A0=aA>>31),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=w(p,nA,I,h0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,a=w(n=M0(n,19),c0=n>>31,iA,s0=iA>>31),r=y+g|0,r=(t=a+t|0)>>>0>>0?r+1|0:r,g=(a=w(b,fA,D,g0))+t|0,t=y+r|0,t=g>>>0>>0?t+1|0:t,r=(a=w(_,qA,hA,p0=hA>>31))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(Q,wA,M,J),g=y+g|0,x0=t=t+r|0,i0=t>>>0>>0?g+1|0:g,g=w(V,uA,u,I0),r=y,t=(a=w(v,K,x,_A))+g|0,g=y+r|0,g=t>>>0>>0?g+1|0:g,a=w(q,sA,z,EA),r=y+g|0,r=(t=a+t|0)>>>0>>0?r+1|0:r,g=(a=w(vA,$A,H,D0))+t|0,t=y+r|0,t=g>>>0>>0?t+1|0:t,r=(a=w(p,nA,YA,d))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(a=M0(I,19),f0=a>>31,FA,O),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=w(b,fA,n,c0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,I=w(D,g0,VA,rA),r=y+g|0,r=(t=I+t|0)>>>0>>0?r+1|0:r,g=(I=w(_,qA,M,J))+t|0,t=y+r|0,t=g>>>0>>0?t+1|0:t,r=(I=w(Q,wA,$,_0))+g|0,g=y+t|0,e2=r,r2=g=r>>>0>>0?g+1|0:g,i2=r=r+33554432|0,s2=g=r>>>0<33554432?g+1|0:g,r=(67108863&g)<<6|r>>>26,g=(g>>26)+i0|0,x0=I=r+x0|0,g=r>>>0>I>>>0?g+1|0:g,k2=I=I+16777216|0,g=(t=(r=I>>>0<16777216?g+1|0:g)>>25)+o|0,g=(r=(I=(33554431&r)<<7|I>>>25)+s|0)>>>0>>0?g+1|0:g,l=t=r+33554432|0,I=g=t>>>0<33554432?g+1|0:g,A[e+72>>2]=r-(-67108864&t),g=w(V,uA,H,D0),t=y,o=w(v,K,q,sA),r=y+t|0,r=(g=o+g|0)>>>0>>0?r+1|0:r,t=(o=w(p,nA,z,EA))+g|0,g=y+r|0,g=t>>>0>>0?g+1|0:g,r=w(o=M0(vA,19),E0=o>>31,FA,O),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=(s=w(i0=M0(YA,19),u0=i0>>31,b,fA))+t|0,t=y+g|0,t=r>>>0>>0?t+1|0:t,s=w(VA,rA,a,f0),g=y+t|0,g=(r=s+r|0)>>>0>>0?g+1|0:g,t=(s=w(M,J,n,c0))+r|0,r=y+g|0,r=t>>>0>>0?r+1|0:r,s=w(D,g0,$,_0),g=y+r|0,g=(t=s+t|0)>>>0>>0?g+1|0:g,r=w(_,qA,x,_A),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=(s=w(Q,wA,u,I0))+t|0,t=y+g|0,B=r,L0=r>>>0>>0?t+1|0:t,g=w(p,nA,V,uA),t=y,r=(s=w(v,K,aA,A0))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,s=t=M0(z,19),t=(h=w(t,k0=t>>31,iA,s0))+r|0,r=y+g|0,r=t>>>0>>0?r+1|0:r,h=w(b,fA,o,E0),g=y+r|0,g=(t=h+t|0)>>>0>>0?g+1|0:g,r=w(i0,u0,hA,p0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=(h=w(M,J,a,f0))+t|0,t=y+g|0,t=r>>>0>>0?t+1|0:t,h=w(n,c0,mA,cA),g=y+t|0,g=(r=h+r|0)>>>0>>0?g+1|0:g,t=(h=w(x,_A,D,g0))+r|0,r=y+g|0,r=t>>>0>>0?r+1|0:r,h=w(_,qA,HA,XA),g=y+r|0,g=(t=h+t|0)>>>0>>0?g+1|0:g,r=w(Q,wA,q,sA),g=y+g|0,T0=t=r+t|0,h=t>>>0>>0?g+1|0:g,g=w(g=M0(V,19),g>>31,FA,O),t=y,r=w(v,K,p,nA),t=y+t|0,t=(g=r+g|0)>>>0>>0?t+1|0:t,r=(s=w(b,fA,s,k0))+g|0,g=y+t|0,t=(o=w(o,E0,VA,rA))+r|0,r=y+(r>>>0>>0?g+1|0:g)|0,r=t>>>0>>0?r+1|0:r,o=w(M,J,i0,u0),g=y+r|0,g=(t=o+t|0)>>>0>>0?g+1|0:g,r=w($,_0,a,f0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=(o=w(x,_A,n,c0))+t|0,t=y+g|0,t=r>>>0>>0?t+1|0:t,o=w(D,g0,u,I0),g=y+t|0,g=(r=o+r|0)>>>0>>0?g+1|0:g,t=(o=w(_,qA,q,sA))+r|0,r=y+g|0,r=t>>>0>>0?r+1|0:r,o=w(Q,wA,H,D0),g=y+r|0,s=t=o+t|0,E0=g=t>>>0>>0?g+1|0:g,k0=t=t+33554432|0,d2=g=t>>>0<33554432?g+1|0:g,r=g>>26,g=(67108863&g)<<6|t>>>26,t=r+h|0,h=o=g+T0|0,g=t=g>>>0>o>>>0?t+1|0:t,T0=o=o+16777216|0,o=(33554431&(g=o>>>0<16777216?g+1|0:g))<<7|o>>>25,g=(g>>25)+L0|0,g=(t=o+B|0)>>>0>>0?g+1|0:g,r=t,L0=t=t+33554432|0,o=g=t>>>0<33554432?g+1|0:g,A[e+56>>2]=r-(-67108864&t),g=w(M,J,V,uA),r=y,t=(B=w(v,K,hA,p0))+g|0,g=y+r|0,g=t>>>0>>0?g+1|0:g,r=w(z,EA,mA,cA),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=w(x,_A,vA,$A),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,B=w(YA,d,HA,XA),r=y+g|0,r=(t=B+t|0)>>>0>>0?r+1|0:r,g=(B=w(q,sA,F0,h0))+t|0,t=y+r|0,t=g>>>0>>0?t+1|0:t,r=(B=w(aA,A0,N0,w0))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(MA,j0=MA>>31,p,nA),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=w(_,qA,iA,s0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,B=(r=t)+(t=w(Q,wA,b,fA))|0,r=y+g|0,t=(g=I>>26)+(t=t>>>0>B>>>0?r+1|0:r)|0,l=r=(I=(67108863&I)<<6|l>>>26)+B|0,g=t=r>>>0>>0?t+1|0:t,B=r=r+16777216|0,I=g=r>>>0<16777216?g+1|0:g,A[e+76>>2]=l-(-33554432&r),g=w(q,sA,V,uA),t=y,l=w(v,K,HA,XA),r=y+t|0,r=(g=l+g|0)>>>0>>0?r+1|0:r,l=w(z,EA,aA,A0),t=y+r|0,t=(g=l+g|0)>>>0>>0?t+1|0:t,r=(l=w(p,nA,vA,$A))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(i0,u0,iA,s0),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=w(b,fA,a,f0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,t=(n=w(n,c0,hA,p0))+t|0,r=y+g|0,g=(D=w(M,J,D,g0))+t|0,t=y+(t>>>0>>0?r+1|0:r)|0,r=(_=w(_,qA,mA,cA))+g|0,g=y+(g>>>0>>0?t+1|0:t)|0,g=r>>>0<_>>>0?g+1|0:g,t=r,r=w(Q,wA,x,_A),g=y+g|0,l=t=t+r|0,g=(g=t>>>0>>0?g+1|0:g)+(t=o>>26)|0,_=o=l+(r=(67108863&o)<<6|L0>>>26)|0,g=r>>>0>o>>>0?g+1|0:g,D=t=o+16777216|0,o=r=t>>>0<16777216?g+1|0:g,A[e+60>>2]=_-(-33554432&t),g=w(V,uA,VA,rA),r=y,t=(_=w(v,K,b,fA))+g|0,g=y+r|0,g=t>>>0<_>>>0?g+1|0:g,r=w(M,J,z,EA),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,_=w(vA,$A,$,_0),r=y+g|0,r=(t=_+t|0)>>>0<_>>>0?r+1|0:r,g=(_=w(x,_A,YA,d))+t|0,t=y+r|0,t=g>>>0<_>>>0?t+1|0:t,r=(_=w(u,I0,F0,h0))+g|0,g=y+t|0,g=r>>>0<_>>>0?g+1|0:g,t=r,r=w(q,sA,N0,w0),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=t,t=w(MA,j0,H,D0),g=y+g|0,g=t>>>0>(r=r+t|0)>>>0?g+1|0:g,_=t=W0,t=($=w(t,n=t>>31,p,nA))+r|0,r=y+g|0,g=(Q=w(Q,wA,FA,O))+t|0,t=y+(t>>>0<$>>>0?r+1|0:r)|0,r=g>>>0>>0?t+1|0:t,t=g,g=(g=I>>25)+r|0,g=(t=t+(I=(33554431&I)<<7|B>>>25)|0)>>>0>>0?g+1|0:g,r=t,Q=t=t+33554432|0,I=g=t>>>0<33554432?g+1|0:g,A[e+80>>2]=r-(-67108864&t),t=o>>25,r=(o=(33554431&o)<<7|D>>>25)+(e2-(g=-67108864&i2)|0)|0,g=t+(r2-((g>>>0>e2>>>0)+s2|0)|0)|0,g=r>>>0>>0?g+1|0:g,g=((67108863&(g=(t=r+33554432|0)>>>0<33554432?g+1|0:g))<<6|t>>>26)+($=x0-(-33554432&k2)|0)|0,A[e+68>>2]=g,A[e+64>>2]=r-(-67108864&t),g=w(b,fA,V,uA),r=y,t=(o=w(v,K,iA,s0))+g|0,g=y+r|0,g=t>>>0>>0?g+1|0:g,r=(o=w(z,EA,hA,p0))+t|0,t=y+g|0,t=r>>>0>>0?t+1|0:t,g=(o=w(M,J,vA,$A))+r|0,r=y+t|0,r=g>>>0>>0?r+1|0:r,t=(o=w(YA,d,mA,cA))+g|0,g=y+r|0,g=t>>>0>>0?g+1|0:g,r=w(x,_A,F0,h0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=w(HA,XA,N0,w0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=(o=w(q,sA,MA,j0))+t|0,t=y+g|0,t=r>>>0>>0?t+1|0:t,o=(g=w(_,n,aA,A0))+r|0,r=y+t|0,r=g>>>0>o>>>0?r+1|0:r,t=o,o=w(g=C2,g>>31,p,nA),g=y+r|0,r=t=t+o|0,g=(g=t>>>0>>0?g+1|0:g)+(t=I>>26)|0,g=(r=r+(I=(67108863&I)<<6|Q>>>26)|0)>>>0>>0?g+1|0:g,g=(t=r+16777216|0)>>>0<16777216?g+1|0:g,A[e+84>>2]=r-(-33554432&t),I=h-(-33554432&T0)|0,o=s-(r=-67108864&k0)|0,v=E0-((r>>>0>s>>>0)+d2|0)|0,g=w((33554431&(r=g))<<7|t>>>25,g>>=25,19,0),t=y+v|0,g=g>>>0>(r=g+o|0)>>>0?t+1|0:t,g=((67108863&(g=(t=r+33554432|0)>>>0<33554432?g+1|0:g))<<6|t>>>26)+I|0,A[e+52>>2]=g,A[e+48>>2]=r-(-67108864&t),w2(C,e+48|0)),W=e+256|0,0|V0},Rg:function(C,g){C|=0;var e,t=0;return W=e=W+-64|0,Y0(e,g|=0,32,0),c[0|e]=248&i[0|e],c[e+31|0]=63&i[e+31|0]|64,g=A[e+20>>2],t=A[e+16>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[e+12>>2],t=A[e+8>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[e+4>>2],t=A[e>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=A[e+28>>2],t=A[e+24>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,y0(e,64),W=e- -64|0,0},Sg:Kr,Tg:Tt,Ug:mr,Vg:Ar,Wg:G0,Xg:U1,Yg:z2,Zg:G0,_g:Ia,$g:z2,ah:function(C,g,e,t,r){return 0|kC(C|=0,g|=0,e|=0,t|=0,r|=0)},bh:function(C,g,e,t,r,o,I,a){return 0|Qg(C|=0,g|=0,(C=0)|(e|=0),t|=0,r|=0,C|(o|=0),I|=0,a|=0)},ch:function(C,g,e,t,r,o){return 0|Ke(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)},dh:function(C,g,e,t,r){return 0|rg(C|=0,g|=0,e|=0,t|=0,r|=0)},eh:function(C,g,e,t,r,o,I){return 0|hg(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},fh:function(C,g,e,t,r,o){return 0|xe(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)},gh:N2,hh:N2,ih:G0,jh:G1,kh:z2,lh:function(){return 1538},mh:Ur,nh:Mr,oh:N2,ph:G0,qh:U1,rh:z2,sh:function(C,g,e,t,r){return 0|kt(C|=0,g|=0,e|=0,t|=0,r|=0)},th:function(C,g,e,t,r,o,I,a){return 0|bC(C|=0,g|=0,(C=0)|(e|=0),t|=0,r|=0,C|(o|=0),I|=0,a|=0)},uh:function(C,g,e,t,r,o){return 0|Je(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)},vh:N2,wh:Ur,xh:function(C,g,e,t,r,o,I,a){var _;return C|=0,g|=0,e|=0,t|=0,o|=0,I|=0,W=_=W-32|0,S1(_,r|=0,a|=0,0),C=bC(a=C,g,(C=0)|e,t,r+16|0,C|o,I,_),y0(_,32),W=_+32|0,0|C},yh:Mr,zh:G0,Ah:G1,Bh:z2,Ch:N2,Dh:o2,Eh:G0,Fh:J2,Gh:O1,Hh:Xg,Ih:zr,Jh:function(){return 1089},Kh:function(){var C,g;return W=C=W-16|0,c[C+15|0]=0,g=0|_g(36800,C+15|0,0),W=C+16|0,0|g},Lh:Hr,Mh:function(C){var g,e=0,t=0;if(W=g=W-16|0,(C|=0)>>>0>=2){for(e=(0-C>>>0)%(C>>>0)|0;c[g+15|0]=0,e>>>0>(t=0|_g(36800,g+15|0,0))>>>0;);e=(t>>>0)%(C>>>0)|0}return W=g+16|0,0|e},Nh:X2,Oh:function(C,g,e){rg(C|=0,g|=0,0,34336,e|=0)},Ph:G0,Qh:function(){var C=0,g=0;return(C=A[9539])&&(C=A[C+20>>2])&&(g=0|G2[0|C]()),0|g},Rh:function(C,g,e){C|=0,g|=0;var t,r=0,o=0,I=0;if(W=t=W-16|0,e|=0)xg(1346,1192,198,1092),Q0();else{if(g|e)for(;c[t+15|0]=0,o=C+r|0,I=0|_g(36800,t+15|0,0),c[0|o]=I,(0|g)!=(0|(r=r+1|0)););W=t+16|0}},Sh:function(C,g,e,t){C|=0,e|=0;var r=0,o=0,I=0;if(!((t|=0)>>>0>2147483646|t<<1>>>0>=(g|=0)>>>0)){if(g=0,t){for(;r=(g<<1)+C|0,o=15&(I=i[g+e|0]),c[r+1|0]=22272+((o<<8)+(o+65526&55552)|0)>>>8,o=r,r=I>>>4|0,c[0|o]=87+((r+65526>>>8&217)+r|0),(0|t)!=(0|(g=g+1|0)););g=t<<1}else g=0;return c[g+C|0]=0,0|C}h2(),Q0()},Th:function(C,g,e,t,r,o,I){C|=0,g|=0,e|=0,r|=0,o|=0,I|=0;var a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0;A:{g:{C:{e:{t:{o:{i:{r:{c:{if(t|=0){if(r)break c;for(_=1,r=0;;){if(!(255&((Q=(65526+(s=(223&(n=i[e+a|0]))-55&255)^s+65520)>>>8|0)|(p=65526+(n^=48)>>>8|0))))break i;if(g>>>0<=B>>>0)break r;if(s=s&Q|n&p,255&h?(c[C+B|0]=r|s,B=B+1|0):r=s<<4,h=~h,(0|(a=a+1|0))==(0|t))break}a=t;break i}if(C=0,!I)break A;break C}for(;;){c:{a:{_:{I:{s:{if(!(255&((n=(65526+(_=(223&(s=i[e+a|0]))-55&255)^_+65520)>>>8|0)|(p=65526+(Q=48^s)>>>8|0)))){if(255&h)break o;if(_=0,!l0(r,s))break e;if((a=h=a+1|0)>>>0>>0)break s;break e}if(g>>>0<=B>>>0)break r;if(_=_&n|Q&p,!(255&h))break I;c[C+B|0]=_|l,B=B+1|0;break c}for(;;){if(!(255&((Q=(65526+(n=(223&(s=i[e+a|0]))-55&255)^n+65520)>>>8|0)|(l=65526+(p=48^s)>>>8|0)))){if(!l0(r,s))break e;if((a=a+1|0)>>>0>>0)continue;break _}break}if(g>>>0<=B>>>0)break a;_=n&Q|p&l}l=_<<4,h=0;break c}a=t>>>0>h>>>0?t:h;break e}h=0;break r}if(h=~h,_=1,!((a=a+1|0)>>>0>>0))break}break i}A[9404]=68,_=0}if(!(255&h))break t}A[9404]=28,_=-1,a=a-1|0,B=0;break e}B=_?B:0,_=_-1|0}if(!I){if((0|t)!=(0|a))break g;C=_;break A}}A[I>>2]=e+a,C=_;break A}A[9404]=28,C=-1}return o&&(A[o>>2]=B),0|C},Uh:function(C,g){C|=0;var e=0;return(-7&(g|=0))!=1&&(h2(),Q0()),1+((3&(e=(e=C)+M0(C=(C>>>0)/3|0,-3)|0)?2&g?e+1|0:4:0)+(C<<2)|0)|0},Vh:DC,Wh:hC,Xh:function(){var C=0;return A[9537]?C=1:(Hr(),X2(38128,16),A[9537]=1,C=0),0|C},Yh:function(C,g,e,t,r){C|=0,g|=0,e|=0,r|=0;var o,I=0,a=0,_=0;W=o=W-16|0;A:{if(t|=0){if((I=t-1|0)&t?(a=~e,I=I-((e>>>0)%(t>>>0)|0)|0):I&=a=~e,I>>>0>=a>>>0)break A;if((e=e+I|0)>>>0>=r>>>0)g=-1;else for(C&&(A[C>>2]=e+1),C=g+e|0,g=0,c[o+15|0]=0,e=0;a=r=C-e|0,_=i[0|r]&i[o+15|0],r=(e^I)-1>>>24|0,c[0|a]=_|128&r,c[o+15|0]=r|i[o+15|0],(0|t)!=(0|(e=e+1|0)););}else g=-1;return W=o+16|0,0|g}h2(),Q0()},Zh:function(C,g,e,t){C|=0,g|=0,e|=0,t|=0;var r,o=0,I=0,a=0,_=0,s=0;if(A[12+(r=W-16|0)>>2]=0,t-1>>>0>>0){for(s=(o=e-1|0)+g|0,e=0,g=0;_=((128^(I=i[s-e|0]))-1&A[r+12>>2]-1&a-1)>>>8&1,A[r+12>>2]=A[r+12>>2]|0-_&e,g|=_,a|=I,(0|t)!=(0|(e=e+1|0)););A[C>>2]=o-A[r+12>>2],C=(255&g)-1|0}else C=-1;return 0|C},_h:function(){return 1547},$h:function(){return 26},ai:pg,bi:_1,ci:k,di:Re,ei:function(C,g,e){C|=0;var t,r=0;return W=t=W-32|0,r=-1,E1(t,e|=0,g|=0)||(r=g1(C,35584,t,0)),W=t+32|0,0|r},fi:Fr,gi:function(C,g,e,t,r,o,I,a){var _,s;return C|=0,g|=0,e|=0,o|=0,s=t|=0,t=r|=0,W=_=W+-64|0,E1(_+32|0,a|=0,I|=0)?r=-1:(r=-1,g1(_,35584,_+32|0,0)||(r=S(C,g,e,s,t,o,_),y0(_,32))),W=_- -64|0,0|r},hi:function(C,g,e,t,r,o){return C|=0,g|=0,r|=0,o|=0,!(t|=0)&(e|=0)>>>0>=4294967280|t&&(h2(),Q0()),0|S(C+16|0,C,g,e,t,r,o)},ii:function(C,g,e,t,r,o,I){return 0|Br(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},ji:Nr,ki:function(C,g,e,t,r,o,I,a){var _,s;return C|=0,g|=0,e|=0,o|=0,s=t|=0,t=r|=0,W=_=W+-64|0,E1(_+32|0,a|=0,I|=0)?r=-1:(r=-1,g1(_,35584,_+32|0,0)||(r=QA(C,g,e,s,t,o,_),y0(_,32))),W=_- -64|0,0|r},li:fr,mi:function(C,g,e,t,r,o,I){return 0|cr(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},ni:G0,oi:G0,pi:G0,qi:G0,ri:G1,si:o2,ti:X1,ui:function(C,g,e,t,r){C|=0,g|=0,r|=0;var o,I,a,_,s=0,h=0;return s=e|=0,e=t|=0,_=0|s,s=t=W,W=o=t-512&-64,t=-1,Re(I=o- -64|0,a=o+32|0)||(ng(t=o+128|0,0,0,24),t1(t,I,32,0),t1(t,r,32,0),Eg(t,h=o+96|0,24),t=Br(C+32|0,g,_,e,h,r,a),g=A[o+92>>2],e=A[o+88>>2],c[C+24|0]=e,c[C+25|0]=e>>>8,c[C+26|0]=e>>>16,c[C+27|0]=e>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[o+84>>2],e=A[o+80>>2],c[C+16|0]=e,c[C+17|0]=e>>>8,c[C+18|0]=e>>>16,c[C+19|0]=e>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[o+76>>2],e=A[o+72>>2],c[C+8|0]=e,c[C+9|0]=e>>>8,c[C+10|0]=e>>>16,c[C+11|0]=e>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[o+68>>2],e=A[o+64>>2],c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,y0(a,32),y0(I,32),y0(h,24)),W=s,0|t},vi:function(C,g,e,t,r,o){C|=0,g|=0,r|=0,o|=0;var I,a,_=0;return a=_=W,W=I=_-448&-64,_=-1,!(t|=0)&(e|=0)>>>0>=48|t&&(ng(_=I- -64|0,0,0,24),t1(_,g,32,0),t1(_,r,32,0),Eg(_,r=I+32|0,24),_=cr(C,g+32|0,e-32|0,t-(e>>>0<32)|0,r,g,o)),W=a,0|_},wi:ca,xi:function(C){var g,e=0;return W=g=W-160|0,O0(C|=0)&&(a1(C)||T1(g,C)||Bg(g)&&(e=!!(0|cC(g)))),W=g+160|0,0|e},yi:function(C,g,e){C|=0,e|=0;var t,r,o=0;return W=t=W-800|0,o=-1,T1(r=t+640|0,g|=0)||Bg(r)&&(T1(g=t+480|0,e)||Bg(g)&&(D2(t,g),b2(g=t+160|0,r,t),Ge(e=t+320|0,g),eg(C,e),o=0)),W=t+800|0,0|o},zi:function(C,g,e){C|=0,e|=0;var t,r,o=0;return W=t=W-800|0,o=-1,T1(r=t+640|0,g|=0)||Bg(r)&&(T1(g=t+480|0,e)||Bg(g)&&(D2(t,g),qg(g=t+160|0,r,t),Ge(e=t+320|0,g),eg(C,e),o=0)),W=t+800|0,0|o},Ai:function(C,g){return XC(C|=0,g|=0),0},Bi:function(C){var g;C|=0,W=g=W-32|0,X2(g,32),XC(C,g),W=g+32|0},Ci:ur,Di:ne,Ei:le,Fi:we,Gi:Qe,Hi:De,Ii:Ie,Ji:Tr,Ki:G0,Li:J2,Mi:G0,Ni:J2,Oi:G0,Pi:function(C){var g;return W=g=W-160|0,C=gg(g,C|=0),W=g+160|0,0|!C},Qi:function(C,g,e){C|=0,e|=0;var t,r,o=0;return W=t=W-800|0,o=-1,gg(r=t+640|0,g|=0)||gg(g=t+480|0,e)||(D2(t,g),b2(g=t+160|0,r,t),Ge(e=t+320|0,g),Ig(C,e),o=0),W=t+800|0,0|o},Ri:function(C,g,e){C|=0,e|=0;var t,r,o=0;return W=t=W-800|0,o=-1,gg(r=t+640|0,g|=0)||gg(g=t+480|0,e)||(D2(t,g),qg(g=t+160|0,r,t),Ge(e=t+320|0,g),Ig(C,e),o=0),W=t+800|0,0|o},Si:function(C,g){return er(C|=0,g|=0),0},Ti:function(C){var g;C|=0,W=g=W+-64|0,X2(g,64),er(C,g),W=g- -64|0},Ui:function(C){ur(C|=0)},Vi:function(C,g){return 0|ne(C|=0,g|=0)},Wi:function(C,g){le(C|=0,g|=0)},Xi:function(C,g){we(C|=0,g|=0)},Yi:function(C,g,e){Qe(C|=0,g|=0,e|=0)},Zi:function(C,g,e){Ie(C|=0,g|=0,e|=0)},_i:Tr,$i:function(C,g){De(C|=0,g|=0)},aj:G0,bj:J2,cj:J2,dj:G0,ej:function(C,g,e,t,r,o,I,a,_,s){return 0|Qr(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0,a|=0,_|=0,s|=0)},fj:o2,gj:z2,hj:_1,ij:z2,jj:G0,kj:function(){return 102},lj:function(){return 1575},mj:function(){return 32768},nj:z2,oj:ea,pj:z2,qj:function(){return 524288},rj:ea,sj:Aa,tj:bt,uj:function(C,g,e,t,r,o,I,a,_,s){var h,n,B;g|=0,e|=0,t|=0,r|=0,o|=0,I|=0,_|=0,s|=0,n=0|(a|=0),W=a=W-16|0,B=g|=0,h=$0(C|=0,0,g),C=0|r;A:if((0|(r=e|o))==1|r>>>0>1)A[9404]=22,C=-1;else if(!e&g>>>0>=16|e){if(nC(n,_,s,a+12|0,a+8|0,a+4|0),(0|t)==(0|h)){A[9404]=28,C=-1;break A}r=C,C=31&(g=A[a+12>>2]),(63&g)>>>0>=32?(g=1<>>32-C,C=Qr(t,r,I,32,e,g,A[a+4>>2],A[a+8>>2],h,B)}else A[9404]=28,C=-1;return W=a+16|0,0|C},vj:function(C,g,e,t,r,o,I){g|=0,e|=0,t|=0,o|=0,I|=0;var a,_,s,h=0,n=0,B=0,Q=0,p=0,l=0,v=0;h=r|=0,h|=r=0,W=a=W-128|0,_=$0(C|=0,0,102),p=22,s=e|r;A:{{if(!t){nC(h,o,I,a+16|0,a+12|0,a+8|0),X2(n=a+96|0,32),p=28,e=a+32|0,o=A[a+16>>2],I=w(C=A[a+12>>2],0,t=A[a+8>>2],0);g:if(!(!(h=y)&I>>>0>1073741823|h|o>>>0>63)&&(c[0|e]=36,c[e+1|0]=55,c[e+2|0]=36,c[e+4|0]=i[1024+(63&t)|0],c[e+3|0]=i[o+1024|0],c[e+8|0]=i[1024+(t>>>24&63)|0],c[e+7|0]=i[1024+(t>>>18&63)|0],c[e+6|0]=i[1024+(t>>>12&63)|0],c[e+5|0]=i[1024+(t>>>6&63)|0],(t=e+9|0)&&(0|t)!=(0|(B=e+58|0))&&(c[0|t]=i[1024+(63&C)|0],(0|(t=B-t|0))!=1&&(c[e+10|0]=i[1024+(C>>>6&63)|0],(0|t)!=2&&(c[e+11|0]=i[1024+(C>>>12&63)|0],(0|t)!=3&&(c[e+12|0]=i[1024+(C>>>18&63)|0],(0|t)!=4&&(c[e+13|0]=i[1024+(C>>>24&63)|0],o=e+14|0))))))){for(h=B-o|0,C=0;;){if(t=o,!(C>>>0>=32)){if(o=i[C+n|0],(l=(I=C+1|0)>>>0>=32)?Q=0:(o=i[I+n|0]<<8|o,(I=C+2|0)>>>0>=32?Q=0:(o=i[I+n|0]<<16|o,Q=1,I=C+3|0)),C=I,!h||(c[0|t]=i[1024+(63&o)|0],(0|h)==1))break g;if(c[t+1|0]=i[1024+(o>>>6&63)|0],v=t+h|0,I=t+2|0,!l){if((0|h)==2)break g;if(c[t+2|0]=i[1024+(o>>>12&63)|0],I=t+3|0,Q){if((0|h)==3)break g;c[t+3|0]=i[1024+(o>>>18|0)|0],I=t+4|0}}if(h=v-(o=I)|0,o)continue;break g}break}t>>>0>=B>>>0||(c[0|t]=0,r=e)}if(r&&(wt(C=a+20|0),g=ve(C,g,s,e,_),Ye(C),g)){C=0;break A}}A[9404]=p}C=-1}return W=a+128|0,0|C},wj:function(C,g,e,t){g|=0,t|=0;var r,o,I=0;r=C|=0,o=e|=0,e=0,W=t=W-128|0;A:{g:{for(;;){if(!i[e+r|0]){C=e;break g}if(!i[r+(C=e+1|0)|0]||!i[r+(C=e+2|0)|0])break g;if((0|(e=e+3|0))==102)break}e=-1;break A}e=-1,(0|C)==101&&(wt(I=t+4|0)||($0(C=t+16|0,0,102),g=ve(I,g,o,r,C),Ye(I),g&&(e=p2(C,r,102),y0(C,102))))}return W=t+128|0,0|e},xj:function(C,g,e,t){var r,o;o=C|=0,W=r=W-32|0,nC(g|=0,e|=0,t|=0,r+28|0,r+20|0,r+12|0),C=0;A:{g:{C:{for(;;){if(i[C+o|0]){if(i[o+(g=C+1|0)|0]&&i[o+(g=C+2|0)|0]){if((0|(C=C+3|0))!=102)continue;break C}}else g=C;break}if((0|g)==101){if(e=r+8|0,t=r+16|0,C=0,i[0|o]!=36|i[o+1|0]!=55|i[o+2|0]!=36||(g=yg(i[o+3|0]),A[r+24>>2]=g?g-1024|0:0,g&&(g=me(e,o+4|0))&&(C=me(t,g))),C)break g;A[9404]=28,C=-1;break A}}A[9404]=28,C=-1;break A}C=1,A[r+28>>2]!=A[r+24>>2]|A[r+12>>2]!=A[r+8>>2]||(C=A[r+20>>2]!=A[r+16>>2])}return W=r+32|0,0|C},yj:function(C,g,e){return 0|be(C|=0,g|=0,e|=0,1)},zj:function(C,g,e){return 0|be(C|=0,g|=0,e|=0,0)},Aj:function(C,g){return 0|Fe(C|=0,g|=0,1)},Bj:function(C,g){return 0|Fe(C|=0,g|=0,0)},Cj:G0,Dj:G0,Ej:function(C,g,e){C|=0,g|=0;var t,r=0;return W=t=W-320|0,r=-1,gg(t,e|=0)||(c[0|C]=i[0|g],c[C+1|0]=i[g+1|0],c[C+2|0]=i[g+2|0],c[C+3|0]=i[g+3|0],c[C+4|0]=i[g+4|0],c[C+5|0]=i[g+5|0],c[C+6|0]=i[g+6|0],c[C+7|0]=i[g+7|0],c[C+8|0]=i[g+8|0],c[C+9|0]=i[g+9|0],c[C+10|0]=i[g+10|0],c[C+11|0]=i[g+11|0],c[C+12|0]=i[g+12|0],c[C+13|0]=i[g+13|0],c[C+14|0]=i[g+14|0],c[C+15|0]=i[g+15|0],c[C+16|0]=i[g+16|0],c[C+17|0]=i[g+17|0],c[C+18|0]=i[g+18|0],c[C+19|0]=i[g+19|0],c[C+20|0]=i[g+20|0],c[C+21|0]=i[g+21|0],c[C+22|0]=i[g+22|0],c[C+23|0]=i[g+23|0],c[C+24|0]=i[g+24|0],c[C+25|0]=i[g+25|0],c[C+26|0]=i[g+26|0],c[C+27|0]=i[g+27|0],c[C+28|0]=i[g+28|0],c[C+29|0]=i[g+29|0],c[C+30|0]=i[g+30|0],c[C+31|0]=127&i[g+31|0],ge(g=t+160|0,C,t),Ig(C,g),r=X0(C,32)?-1:0),W=t+320|0,0|r},Fj:function(C,g){var e;return g|=0,W=e=W-160|0,c[0|(C|=0)]=i[0|g],c[C+1|0]=i[g+1|0],c[C+2|0]=i[g+2|0],c[C+3|0]=i[g+3|0],c[C+4|0]=i[g+4|0],c[C+5|0]=i[g+5|0],c[C+6|0]=i[g+6|0],c[C+7|0]=i[g+7|0],c[C+8|0]=i[g+8|0],c[C+9|0]=i[g+9|0],c[C+10|0]=i[g+10|0],c[C+11|0]=i[g+11|0],c[C+12|0]=i[g+12|0],c[C+13|0]=i[g+13|0],c[C+14|0]=i[g+14|0],c[C+15|0]=i[g+15|0],c[C+16|0]=i[g+16|0],c[C+17|0]=i[g+17|0],c[C+18|0]=i[g+18|0],c[C+19|0]=i[g+19|0],c[C+20|0]=i[g+20|0],c[C+21|0]=i[g+21|0],c[C+22|0]=i[g+22|0],c[C+23|0]=i[g+23|0],c[C+24|0]=i[g+24|0],c[C+25|0]=i[g+25|0],c[C+26|0]=i[g+26|0],c[C+27|0]=i[g+27|0],c[C+28|0]=i[g+28|0],c[C+29|0]=i[g+29|0],c[C+30|0]=i[g+30|0],c[C+31|0]=127&i[g+31|0],Cg(e,C),Ig(C,e),C=X0(C,32),W=e+160|0,0|(C?-1:0)},Gj:G0,Hj:G0,Ij:Fr,Jj:function(C,g,e,t,r,o){return C|=0,g|=0,r|=0,o|=0,!(t|=0)&(e|=0)>>>0>=4294967280|t&&(h2(),Q0()),S(C+16|0,C,g,e,t,r,o),0},Kj:Nr,Lj:fr,Mj:G0,Nj:G1,Oj:o2,Pj:X1,Qj:o2,Rj:o2,Sj:function(C,g,e,t,r){C|=0,g|=0,e|=0,t|=0;var o,I,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0;if(D=1886610805^(a=i[0|(r|=0)]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),v=1936682341^(_=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24),a^=1852142177,s=1819895653^_,b=1852075907^(_=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24),M=1685025377^(r=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24),h=2037671283^_,_=1952801890^r,p=e,(0|(I=(e+g|0)-(o=7&e)|0))!=(0|g))for(;e=(B=_^(x=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24))+s|0,h=t=a+(r=h^(Q=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))|0,n=e=t>>>0>>0?e+1|0:e,a=t,t=e,e=v+M|0,e=(_=D+b|0)>>>0>>0?e+1|0:e,l=(s=G(b,M,13)^_)+a|0,t=(a=y^e)+t|0,a=G(s,a,17)^l,D=G(a,t=(s=s>>>0>l>>>0?t+1|0:t)^y,13),v=y,B=G(r,B,16),r=n^y,B^=h,n=G(_,e,32),e=y+r|0,e=(h=t)+(t=(_=B+n|0)>>>0>>0?e+1|0:e)|0,n=e=(h=a+_|0)>>>0<_>>>0?e+1|0:e,D=G(a=h^D,e^=v,17),v=y,B=G(B,r,21),r=t^y,B^=_,_=G(l,s,32),t=y+r|0,e=(_=(s=B+_|0)>>>0<_>>>0?t+1|0:t)+e|0,b=(a=a+s|0)^D,t=e=a>>>0>>0?e+1|0:e,M=e^v,e=G(B,r,16),B=_^=y,l=G(e^=s,_,21),s=y,n=(_=G(h,n,32))+e|0,e=y+B|0,h=n^l,_=(e=_>>>0>n>>>0?e+1|0:e)^s,a=G(a,t,32),s=y,D=Q^n,v=e^x,(0|I)!=(0|(g=g+8|0)););switch(Q=0,r=p<<24,o-1|0){case 6:r|=i[g+6|0]<<16;case 5:r|=i[g+5|0]<<8;case 4:r|=i[g+4|0];case 3:Q|=(e=i[g+3|0])<<24,r|=t=e>>>8|0;case 2:Q|=(t=i[g+2|0])<<16,r|=e=t>>>16|0;case 1:Q|=(e=i[g+1|0])<<8,r|=t=e>>>24|0;case 0:Q=i[0|g]|Q}return l=r,g=r^_,t=G(r=h^Q,g,16),g=g+s|0,n=g=(h=r+a|0)>>>0>>0?g+1|0:g,p=G(r=t^h,g^=e=y,21),_=y,e=v+M|0,t=e=(a=D+b|0)>>>0>>0?e+1|0:e,s=r,r=G(a,e,32),e=y+g|0,g=_,_=e=r>>>0>(s=s+r|0)>>>0?e+1|0:e,D=G(r=s^p,g^=e,16),v=y,e=(a=B=G(b,M,13)^a)+h|0,t=(h=y^t)+n|0,n=r,r=G(e,t=e>>>0>>0?t+1|0:t,32),g=y+g|0,x=r=(a=r>>>0>(p=n+r|0)>>>0?g+1|0:g)^v,n=D^=p,v=G(B,h,17)^e,e=(B=y^t)+_|0,g=e=(t=s=(g=v)+s|0)>>>0>>0?e+1|0:e,_=G(t,e,32),e=y+r|0,s=(h=_+n|0)^Q,l^=n=_>>>0>h>>>0?e+1|0:e,r=G(v,B,13)^t,t=G(r,g^=y,17),g=g+a|0,r=t^(_=r+p|0),t=g=_>>>0

>>0?g+1|0:g,e=(g^=e=y)+l|0,e=r>>>0>(s=r+s|0)>>>0?e+1|0:e,r=G(r,g,13)^s,a=e,p=G(r,g=e^y,17),Q=y,l=G(D,x,21),B=n^y,n=h^l,_=238^G(_,t,32),e=y+B|0,e=(l=g)+(g=(t=n+_|0)>>>0<_>>>0?e+1|0:e)|0,_=e=(h=t+r|0)>>>0>>0?e+1|0:e,Q=G(r=h^p,e^=Q,13),l=y,n=G(n,B,16),B=g^y,p=t^n,t=G(s,a,32),g=y+B|0,t=(s=e)+(e=t>>>0>(a=p+t|0)>>>0?g+1|0:g)|0,s=t=(n=r+a|0)>>>0>>0?t+1|0:t,Q=G(r=Q^n,g=t^l,17),l=y,t=G(p,B,21),B=e^y,p=t^a,t=G(h,_,32),e=y+B|0,e=(t=t>>>0>(a=p+t|0)>>>0?e+1|0:e)+g|0,_=e=(h=r+a|0)>>>0>>0?e+1|0:e,Q=G(r=h^Q,g=e^l,13),l=y,e=G(p,B,16),B=t^y,p=e^a,e=G(n,s,32),t=y+B|0,e=(t=e>>>0>(a=p+e|0)>>>0?t+1|0:t)+g|0,s=e=(n=r+a|0)>>>0>>0?e+1|0:e,Q=G(r=Q^n,g=e^l,17),l=y,e=G(p,B,21),B=t^y,p=e^a,a=G(h,_,32),e=y+B|0,g=(e=(t=p+a|0)>>>0>>0?e+1|0:e)+g|0,a=g=(_=t+r|0)>>>0>>0?g+1|0:g,Q=G(r=_^Q,g^=l,13),l=y,h=G(p,B,16),p=e^y,h^=t,s=G(n,s,32),e=y+p|0,e=(n=g)+(g=(t=h+s|0)>>>0>>0?e+1|0:e)|0,s=e=(n=t+r|0)>>>0>>0?e+1|0:e,Q=G(r=Q^n,e^=l,17),l=y,h=G(h,p,21),p=g^y,h^=t,t=G(_,a,32),g=y+p|0,t=(_=e)+(e=t>>>0>(a=h+t|0)>>>0?g+1|0:g)|0,_=r=(t=(g=r+a|0)>>>0>>0?t+1|0:t)^l,Q^=g,h=G(h,p,16),B=e^y,a=(h^=a)+(s=G(n,s,32))|0,e=y+B|0,g=G(g,t,32),p=y,t=e=a>>>0>>0?e+1|0:e,s=C,h=(n=G(h,B,21)^a)^g^a^Q,c[0|s]=h,c[s+1|0]=h>>>8,c[s+2|0]=h>>>16,c[s+3|0]=h>>>24,e=(B=p^e^r)^(r=e^y),c[s+4|0]=e,c[s+5|0]=e>>>8,c[s+6|0]=e>>>16,c[s+7|0]=e>>>24,e=r+p|0,e=(s=g)>>>0>(g=g+n|0)>>>0?e+1|0:e,l=g,r=G(n,r,16)^g,n=e,p=g=e^y,t=(e=_)+t|0,_=a=(s=Q^=221)+a|0,a=G(a,t=a>>>0>>0?t+1|0:t,32),g=y+g|0,g=a>>>0>(h=a+r|0)>>>0?g+1|0:g,a=G(r,p,21)^h,s=g,v=G(a,r=g^y,16),B=y,g=G(Q,e,13),e=n+(p=t^y)|0,g=e=(t=l+(Q=g^_)|0)>>>0>>0?e+1|0:e,_=a,a=G(t,e,32),e=y+r|0,B=e=(_=a>>>0>(n=_+a|0)>>>0?e+1|0:e)^B,l=G(v^=n,e,21),a=y,e=G(Q,p,17),g=s+(p=g^y)|0,t=g=(r=h+(Q=e^t)|0)>>>0>>0?g+1|0:g,g=G(r,g,32),e=B+y|0,B=e=(s=a)^(a=(g=g+v|0)>>>0>>0?e+1|0:e),s=g,l=G(v=l^g,e,16),h=y,g=G(Q,p,13),e=_+(p=t^y)|0,g=G(r=n+(Q=g^r)|0,e=r>>>0>>0?e+1|0:e,32),t=B+y|0,B=t=(_=(g=g+v|0)>>>0>>0?t+1|0:t)^h,n=g,l=G(v=l^g,t,21),h=y,g=G(Q,p,17),e=a+(p=e^y)|0,t=e=(r=s+(Q=g^r)|0)>>>0>>0?e+1|0:e,g=G(r,e,32),e=B+y|0,B=e=(a=(g=g+v|0)>>>0>>0?e+1|0:e)^h,s=g,l=G(v=l^g,e,16),h=y,g=G(Q,p,13),t=_+(p=t^y)|0,e=G(r=n+(Q=g^r)|0,t=r>>>0>>0?t+1|0:t,32),g=B+y|0,_=e=e+v|0,l=G(l^e,(g=e>>>0>>0?g+1|0:g)^h,21),h=y,n=G(Q,p,17),e=t^y,n=G(t=r^n,e,13),e=e+a|0,e=(t=t+s|0)>>>0>>0?e+1|0:e,r=G(a=t^n,e^=r=y,17)^l,t=y^h,e=g+e|0,g=G(g=a+_|0,e=g>>>0<_>>>0?e+1|0:e,32)^r^g,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=e^y^t,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,0},Tj:function(C,g,e,t,r){C|=0,t|=0,r|=0;var o,I=0,a=0,_=0,s=0;if(W=o=W-112|0,I=g|=0,g|(a=e|=0)){g=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,A[o+24>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,A[o+28>>2]=g,g=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+16>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+20>>2]=g,g=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[o>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[o+4>>2]=g,g=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+8>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[o+12>>2]=g,g=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,e=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,A[o+104>>2]=0,A[o+108>>2]=0,A[o+96>>2]=g,A[o+100>>2]=e;A:{if(!a&I>>>0>=64|a){for(;dC(C,o+96|0,o,0),g=i[o+104|0]+1|0,c[o+104|0]=g,g=i[o+105|0]+(g>>>8|0)|0,c[o+105|0]=g,g=i[o+106|0]+(g>>>8|0)|0,c[o+106|0]=g,g=i[o+107|0]+(g>>>8|0)|0,c[o+107|0]=g,g=i[o+108|0]+(g>>>8|0)|0,c[o+108|0]=g,g=i[o+109|0]+(g>>>8|0)|0,c[o+109|0]=g,g=i[o+110|0]+(g>>>8|0)|0,c[o+110|0]=g,c[o+111|0]=i[o+111|0]+(g>>>8|0),C=C- -64|0,a=a-1|0,!(a=(I=I+-64|0)>>>0<4294967232?a+1|0:a)&I>>>0>63|a;);if(!(I|a))break A}if(e=0,dC(o+32|0,o+96|0,o,0),t=3&I,g=0,!a&I>>>0>=4|a)for(a=60&I,r=0;I=s=o+32|0,c[C+g|0]=i[I+g|0],c[(_=1|g)+C|0]=i[I+_|0],c[(_=2|g)+C|0]=i[I+_|0],c[(I=3|g)+C|0]=i[I+s|0],g=g+4|0,(0|a)!=(0|(r=r+4|0)););if(t)for(;c[C+g|0]=i[(o+32|0)+g|0],g=g+1|0,(0|t)!=(0|(e=e+1|0)););}y0(o+32|0,64),y0(o,32)}return W=o+112|0,0},Uj:function(C,g,e,t,r,o){C|=0,g|=0,r|=0,o|=0;var I,a=0,_=0;if(W=I=W-112|0,a=e|=0,(t|=0)|e){e=i[o+28|0]|i[o+29|0]<<8|i[o+30|0]<<16|i[o+31|0]<<24,A[I+24>>2]=i[o+24|0]|i[o+25|0]<<8|i[o+26|0]<<16|i[o+27|0]<<24,A[I+28>>2]=e,e=i[o+20|0]|i[o+21|0]<<8|i[o+22|0]<<16|i[o+23|0]<<24,A[I+16>>2]=i[o+16|0]|i[o+17|0]<<8|i[o+18|0]<<16|i[o+19|0]<<24,A[I+20>>2]=e,e=i[o+4|0]|i[o+5|0]<<8|i[o+6|0]<<16|i[o+7|0]<<24,A[I>>2]=i[0|o]|i[o+1|0]<<8|i[o+2|0]<<16|i[o+3|0]<<24,A[I+4>>2]=e,e=i[o+12|0]|i[o+13|0]<<8|i[o+14|0]<<16|i[o+15|0]<<24,A[I+8>>2]=i[o+8|0]|i[o+9|0]<<8|i[o+10|0]<<16|i[o+11|0]<<24,A[I+12>>2]=e,e=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,r=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[I+104>>2]=0,A[I+108>>2]=0,A[I+96>>2]=e,A[I+100>>2]=r;A:{if(!t&a>>>0>=64|t){for(;;){for(e=0,dC(I+32|0,I+96|0,I,0);o=I+32|0,c[C+e|0]=i[o+e|0]^i[g+e|0],c[(r=1|e)+C|0]=i[r+o|0]^i[g+r|0],(0|(e=e+2|0))!=64;);if(e=i[I+104|0]+1|0,c[I+104|0]=e,e=i[I+105|0]+(e>>>8|0)|0,c[I+105|0]=e,e=i[I+106|0]+(e>>>8|0)|0,c[I+106|0]=e,e=i[I+107|0]+(e>>>8|0)|0,c[I+107|0]=e,e=i[I+108|0]+(e>>>8|0)|0,c[I+108|0]=e,e=i[I+109|0]+(e>>>8|0)|0,c[I+109|0]=e,e=i[I+110|0]+(e>>>8|0)|0,c[I+110|0]=e,c[I+111|0]=i[I+111|0]+(e>>>8|0),g=g- -64|0,C=C- -64|0,t=t-1|0,!(!(t=(a=a+-64|0)>>>0<4294967232?t+1|0:t)&a>>>0>63|t))break}if(!(t|a))break A}if(e=0,dC(I+32|0,I+96|0,I,0),o=1&a,(0|a)!=1|t)for(a&=62,t=0;_=I+32|0,c[C+e|0]=i[_+e|0]^i[g+e|0],c[(r=1|e)+C|0]=i[r+_|0]^i[g+r|0],e=e+2|0,(0|a)!=(0|(t=t+2|0)););o&&(c[C+e|0]=i[(I+32|0)+e|0]^i[g+e|0])}y0(I+32|0,64),y0(I,32)}return W=I+112|0,0},Vj:G0,Wj:U1,Xj:z2,Yj:N2,Zj:function(C,g,e,t,r){C|=0,t|=0,r|=0;var o,I=0,a=0,_=0,s=0;if(W=o=W-112|0,I=g|=0,g|(a=e|=0)){g=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,A[o+24>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,A[o+28>>2]=g,g=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+16>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+20>>2]=g,g=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[o>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[o+4>>2]=g,g=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+8>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[o+12>>2]=g,g=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,e=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,A[o+104>>2]=0,A[o+108>>2]=0,A[o+96>>2]=g,A[o+100>>2]=e;A:{if(!a&I>>>0>=64|a){for(;SC(C,o+96|0,o,0),g=i[o+104|0]+1|0,c[o+104|0]=g,g=i[o+105|0]+(g>>>8|0)|0,c[o+105|0]=g,g=i[o+106|0]+(g>>>8|0)|0,c[o+106|0]=g,g=i[o+107|0]+(g>>>8|0)|0,c[o+107|0]=g,g=i[o+108|0]+(g>>>8|0)|0,c[o+108|0]=g,g=i[o+109|0]+(g>>>8|0)|0,c[o+109|0]=g,g=i[o+110|0]+(g>>>8|0)|0,c[o+110|0]=g,c[o+111|0]=i[o+111|0]+(g>>>8|0),C=C- -64|0,a=a-1|0,!(a=(I=I+-64|0)>>>0<4294967232?a+1|0:a)&I>>>0>63|a;);if(!(I|a))break A}if(e=0,SC(o+32|0,o+96|0,o,0),t=3&I,g=0,!a&I>>>0>=4|a)for(a=60&I,r=0;I=s=o+32|0,c[C+g|0]=i[I+g|0],c[(_=1|g)+C|0]=i[I+_|0],c[(_=2|g)+C|0]=i[I+_|0],c[(I=3|g)+C|0]=i[I+s|0],g=g+4|0,(0|a)!=(0|(r=r+4|0)););if(t)for(;c[C+g|0]=i[(o+32|0)+g|0],g=g+1|0,(0|t)!=(0|(e=e+1|0)););}y0(o+32|0,64),y0(o,32)}return W=o+112|0,0},_j:function(C,g,e,t,r,o){C|=0,g|=0,r|=0,o|=0;var I,a=0,_=0;if(W=I=W-112|0,a=e|=0,(t|=0)|e){e=i[o+28|0]|i[o+29|0]<<8|i[o+30|0]<<16|i[o+31|0]<<24,A[I+24>>2]=i[o+24|0]|i[o+25|0]<<8|i[o+26|0]<<16|i[o+27|0]<<24,A[I+28>>2]=e,e=i[o+20|0]|i[o+21|0]<<8|i[o+22|0]<<16|i[o+23|0]<<24,A[I+16>>2]=i[o+16|0]|i[o+17|0]<<8|i[o+18|0]<<16|i[o+19|0]<<24,A[I+20>>2]=e,e=i[o+4|0]|i[o+5|0]<<8|i[o+6|0]<<16|i[o+7|0]<<24,A[I>>2]=i[0|o]|i[o+1|0]<<8|i[o+2|0]<<16|i[o+3|0]<<24,A[I+4>>2]=e,e=i[o+12|0]|i[o+13|0]<<8|i[o+14|0]<<16|i[o+15|0]<<24,A[I+8>>2]=i[o+8|0]|i[o+9|0]<<8|i[o+10|0]<<16|i[o+11|0]<<24,A[I+12>>2]=e,e=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,r=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[I+104>>2]=0,A[I+108>>2]=0,A[I+96>>2]=e,A[I+100>>2]=r;A:{if(!t&a>>>0>=64|t){for(;;){for(e=0,SC(I+32|0,I+96|0,I,0);o=I+32|0,c[C+e|0]=i[o+e|0]^i[g+e|0],c[(r=1|e)+C|0]=i[r+o|0]^i[g+r|0],(0|(e=e+2|0))!=64;);if(e=i[I+104|0]+1|0,c[I+104|0]=e,e=i[I+105|0]+(e>>>8|0)|0,c[I+105|0]=e,e=i[I+106|0]+(e>>>8|0)|0,c[I+106|0]=e,e=i[I+107|0]+(e>>>8|0)|0,c[I+107|0]=e,e=i[I+108|0]+(e>>>8|0)|0,c[I+108|0]=e,e=i[I+109|0]+(e>>>8|0)|0,c[I+109|0]=e,e=i[I+110|0]+(e>>>8|0)|0,c[I+110|0]=e,c[I+111|0]=i[I+111|0]+(e>>>8|0),g=g- -64|0,C=C- -64|0,t=t-1|0,!(!(t=(a=a+-64|0)>>>0<4294967232?t+1|0:t)&a>>>0>63|t))break}if(!(t|a))break A}if(e=0,SC(I+32|0,I+96|0,I,0),o=1&a,(0|a)!=1|t)for(a&=62,t=0;_=I+32|0,c[C+e|0]=i[_+e|0]^i[g+e|0],c[(r=1|e)+C|0]=i[r+_|0]^i[g+r|0],e=e+2|0,(0|a)!=(0|(t=t+2|0)););o&&(c[C+e|0]=i[(I+32|0)+e|0]^i[g+e|0])}y0(I+32|0,64),y0(I,32)}return W=I+112|0,0},$j:G0,ak:U1,bk:z2,ck:N2,dk:G0,ek:G1,fk:z2,gk:function(C,g,e,t,r){var o;return C|=0,g|=0,e|=0,W=o=W-32|0,g1(o,t|=0,r|=0,0),C=kC(C,g,e,t+16|0,o),W=o+32|0,0|C},hk:function(C,g,e,t,r,o,I,a){var _;return C|=0,g|=0,e|=0,t|=0,o|=0,I|=0,W=_=W-32|0,g1(_,r|=0,a|=0,0),C=Qg(a=C,g,(C=0)|e,t,r+16|0,C|o,I,_),W=_+32|0,0|C},ik:function(C,g,e,t,r,o){var I;return C|=0,g|=0,e|=0,t|=0,W=I=W-32|0,g1(I,r|=0,o|=0,0),C=Qg(C,g,e,t,r+16|0,0,0,I),W=I+32|0,0|C},jk:N2,kk:r1,lk:M2,mk:G2}}(tA)}(Z)},instantiate:function(R,Z){return{then:function(tA){var BA=new bg.Module(R);tA({instance:new bg.Instance(BA,Z)})}}},RuntimeError:Error};j2=[];var gC,vg,CC,Fg,Ng,eC,mg,RC=!1;function LC(){var R=Sg.buffer;E.HEAP8=gC=new Int8Array(R),E.HEAP16=CC=new Int16Array(R),E.HEAPU8=vg=new Uint8Array(R),E.HEAPU16=new Uint16Array(R),E.HEAP32=Fg=new Int32Array(R),E.HEAPU32=Ng=new Uint32Array(R),E.HEAPF32=eC=new Float32Array(R),E.HEAPF64=mg=new Float64Array(R)}var PC=[],qC=[],zC=[],L1=0,og=null;function P1(R){throw E.onAbort?.(R),AC(R="Aborted("+R+")"),RC=!0,R+=". Build with -sASSERTIONS for more info.",new bg.RuntimeError(R)}var Mg,st=R=>R.startsWith("file://"),Bt={36800:()=>E.getRandomValue(),36836:()=>{if(E.getRandomValue===void 0)try{var R=typeof window=="object"?window:self,Z=R.crypto!==void 0?R.crypto:R.msCrypto;Z=Z===void 0?BA:Z;var tA=function(){var xA=new Uint32Array(1);return Z.getRandomValues(xA),xA[0]>>>0};tA(),E.getRandomValue=tA}catch{try{var BA=ha(),dA=function(){var WA=BA.randomBytes(4);return(WA[0]<<24|WA[1]<<16|WA[2]<<8|WA[3])>>>0};dA(),E.getRandomValue=dA}catch{throw"No secure random number generator found"}}}},tC=R=>{for(;R.length>0;)R.shift()(E)};E.noExitRuntime;var Gg,TC=typeof TextDecoder<"u"?new TextDecoder:void 0,Kg=(R,Z)=>R?((tA,BA,dA)=>{for(var xA=BA+dA,WA=BA;tA[WA]&&!(WA>=xA);)++WA;if(WA-BA>16&&tA.buffer&&TC)return TC.decode(tA.subarray(BA,WA));for(var Q0="";BA>10,56320|1023&A)}}else Q0+=String.fromCharCode((31&K0)<<6|R0)}else Q0+=String.fromCharCode(K0)}return Q0})(vg,R,Z):"",rC=[],yt=R=>{var Z=(R-Sg.buffer.byteLength+65535)/65536;try{return Sg.grow(Z),LC(),1}catch{}},ht={b:(R,Z,tA,BA)=>{P1(`Assertion failed: ${Kg(R)}, at: `+[Z?Kg(Z):"unknown filename",tA,BA?Kg(BA):"unknown function"])},c:()=>{P1("")},a:(R,Z,tA)=>((BA,dA,xA)=>{var WA=((Q0,K0)=>{var R0;for(rC.length=0;R0=vg[Q0++];){var c=R0!=105;K0+=(c&=R0!=112)&&K0%8?4:0,rC.push(R0==112?Ng[K0>>2]:R0==105?Fg[K0>>2]:mg[K0>>3]),K0+=c?8:4}return rC})(dA,xA);return Bt[BA](...WA)})(R,Z,tA),d:R=>{var Z=vg.length,tA=2147483648;if((R>>>=0)>tA)return!1;for(var BA,dA=1;dA<=4;dA*=2){var xA=Z*(1+.2/dA);xA=Math.min(xA,R+100663296);var WA=Math.min(tA,(BA=Math.max(R,xA))+(65536-BA%65536)%65536);if(yt(WA))return!0}return!1}},T=function(){var R={a:ht};function Z(tA,BA){var dA;return T=tA.exports,Sg=T.e,LC(),dA=T.f,qC.unshift(dA),function(xA){if(L1--,E.monitorRunDependencies?.(L1),L1==0&&og){var WA=og;og=null,WA()}}(),T}if(L1++,E.monitorRunDependencies?.(L1),E.instantiateWasm)try{return E.instantiateWasm(R,Z)}catch(tA){return AC(`Module.instantiateWasm callback failed with error: ${tA}`),!1}return Mg||(Mg="<<< WASM_BINARY_FILE >>>"),function(tA,BA,dA){(function(xA){return Promise.resolve().then(()=>function(WA){if(WA==Mg&&j2)return new Uint8Array(j2);if(eA)return eA(WA);throw"both async and sync fetching of the wasm failed"}(xA))})(tA).then(xA=>bg.instantiate(xA,BA)).then(dA,xA=>{AC(`failed to asynchronously prepare wasm: ${xA}`),P1(xA)})}(Mg,R,function(tA){Z(tA.instance)}),{}}();function jC(){function R(){Gg||(Gg=!0,E.calledRun=!0,RC||(tC(qC),E.onRuntimeInitialized?.(),function(){if(E.postRun)for(typeof E.postRun=="function"&&(E.postRun=[E.postRun]);E.postRun.length;)Z=E.postRun.shift(),zC.unshift(Z);var Z;tC(zC)}()))}L1>0||(function(){if(E.preRun)for(typeof E.preRun=="function"&&(E.preRun=[E.preRun]);E.preRun.length;)Z=E.preRun.shift(),PC.unshift(Z);var Z;tC(PC)}(),L1>0||(E.setStatus?(E.setStatus("Running..."),setTimeout(function(){setTimeout(function(){E.setStatus("")},1),R()},1)):R()))}if(E._crypto_aead_aegis128l_keybytes=()=>(E._crypto_aead_aegis128l_keybytes=T.g)(),E._crypto_aead_aegis128l_nsecbytes=()=>(E._crypto_aead_aegis128l_nsecbytes=T.h)(),E._crypto_aead_aegis128l_npubbytes=()=>(E._crypto_aead_aegis128l_npubbytes=T.i)(),E._crypto_aead_aegis128l_abytes=()=>(E._crypto_aead_aegis128l_abytes=T.j)(),E._crypto_aead_aegis128l_messagebytes_max=()=>(E._crypto_aead_aegis128l_messagebytes_max=T.k)(),E._crypto_aead_aegis128l_keygen=R=>(E._crypto_aead_aegis128l_keygen=T.l)(R),E._crypto_aead_aegis128l_encrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis128l_encrypt=T.m)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aegis128l_encrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A)=>(E._crypto_aead_aegis128l_encrypt_detached=T.n)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A),E._crypto_aead_aegis128l_decrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis128l_decrypt=T.o)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aegis128l_decrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis128l_decrypt_detached=T.p)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aegis256_keybytes=()=>(E._crypto_aead_aegis256_keybytes=T.q)(),E._crypto_aead_aegis256_nsecbytes=()=>(E._crypto_aead_aegis256_nsecbytes=T.r)(),E._crypto_aead_aegis256_npubbytes=()=>(E._crypto_aead_aegis256_npubbytes=T.s)(),E._crypto_aead_aegis256_abytes=()=>(E._crypto_aead_aegis256_abytes=T.t)(),E._crypto_aead_aegis256_messagebytes_max=()=>(E._crypto_aead_aegis256_messagebytes_max=T.u)(),E._crypto_aead_aegis256_keygen=R=>(E._crypto_aead_aegis256_keygen=T.v)(R),E._crypto_aead_aegis256_encrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis256_encrypt=T.w)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aegis256_encrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A)=>(E._crypto_aead_aegis256_encrypt_detached=T.x)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A),E._crypto_aead_aegis256_decrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis256_decrypt=T.y)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aegis256_decrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis256_decrypt_detached=T.z)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aes256gcm_is_available=()=>(E._crypto_aead_aes256gcm_is_available=T.A)(),E._crypto_aead_chacha20poly1305_encrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A)=>(E._crypto_aead_chacha20poly1305_encrypt_detached=T.B)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A),E._crypto_aead_chacha20poly1305_encrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_encrypt=T.C)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A)=>(E._crypto_aead_chacha20poly1305_ietf_encrypt_detached=T.D)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A),E._crypto_aead_chacha20poly1305_ietf_encrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_ietf_encrypt=T.E)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_decrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_decrypt_detached=T.F)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_decrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_decrypt=T.G)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_ietf_decrypt_detached=T.H)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_ietf_decrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_ietf_decrypt=T.I)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(E._crypto_aead_chacha20poly1305_ietf_keybytes=T.J)(),E._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(E._crypto_aead_chacha20poly1305_ietf_npubbytes=T.K)(),E._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(E._crypto_aead_chacha20poly1305_ietf_nsecbytes=T.L)(),E._crypto_aead_chacha20poly1305_ietf_abytes=()=>(E._crypto_aead_chacha20poly1305_ietf_abytes=T.M)(),E._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(E._crypto_aead_chacha20poly1305_ietf_messagebytes_max=T.N)(),E._crypto_aead_chacha20poly1305_ietf_keygen=R=>(E._crypto_aead_chacha20poly1305_ietf_keygen=T.O)(R),E._crypto_aead_chacha20poly1305_keybytes=()=>(E._crypto_aead_chacha20poly1305_keybytes=T.P)(),E._crypto_aead_chacha20poly1305_npubbytes=()=>(E._crypto_aead_chacha20poly1305_npubbytes=T.Q)(),E._crypto_aead_chacha20poly1305_nsecbytes=()=>(E._crypto_aead_chacha20poly1305_nsecbytes=T.R)(),E._crypto_aead_chacha20poly1305_abytes=()=>(E._crypto_aead_chacha20poly1305_abytes=T.S)(),E._crypto_aead_chacha20poly1305_messagebytes_max=()=>(E._crypto_aead_chacha20poly1305_messagebytes_max=T.T)(),E._crypto_aead_chacha20poly1305_keygen=R=>(E._crypto_aead_chacha20poly1305_keygen=T.U)(R),E._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A)=>(E._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=T.V)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A),E._crypto_aead_xchacha20poly1305_ietf_encrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_xchacha20poly1305_ietf_encrypt=T.W)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=T.X)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_xchacha20poly1305_ietf_decrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_xchacha20poly1305_ietf_decrypt=T.Y)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(E._crypto_aead_xchacha20poly1305_ietf_keybytes=T.Z)(),E._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(E._crypto_aead_xchacha20poly1305_ietf_npubbytes=T._)(),E._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(E._crypto_aead_xchacha20poly1305_ietf_nsecbytes=T.$)(),E._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(E._crypto_aead_xchacha20poly1305_ietf_abytes=T.aa)(),E._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(E._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=T.ba)(),E._crypto_aead_xchacha20poly1305_ietf_keygen=R=>(E._crypto_aead_xchacha20poly1305_ietf_keygen=T.ca)(R),E._crypto_auth_bytes=()=>(E._crypto_auth_bytes=T.da)(),E._crypto_auth_keybytes=()=>(E._crypto_auth_keybytes=T.ea)(),E._crypto_auth_primitive=()=>(E._crypto_auth_primitive=T.fa)(),E._crypto_auth=(R,Z,tA,BA,dA)=>(E._crypto_auth=T.ga)(R,Z,tA,BA,dA),E._crypto_auth_verify=(R,Z,tA,BA,dA)=>(E._crypto_auth_verify=T.ha)(R,Z,tA,BA,dA),E._crypto_auth_keygen=R=>(E._crypto_auth_keygen=T.ia)(R),E._crypto_auth_hmacsha256_bytes=()=>(E._crypto_auth_hmacsha256_bytes=T.ja)(),E._crypto_auth_hmacsha256_keybytes=()=>(E._crypto_auth_hmacsha256_keybytes=T.ka)(),E._crypto_auth_hmacsha256_statebytes=()=>(E._crypto_auth_hmacsha256_statebytes=T.la)(),E._crypto_auth_hmacsha256_keygen=R=>(E._crypto_auth_hmacsha256_keygen=T.ma)(R),E._crypto_auth_hmacsha256_init=(R,Z,tA)=>(E._crypto_auth_hmacsha256_init=T.na)(R,Z,tA),E._crypto_auth_hmacsha256_update=(R,Z,tA,BA)=>(E._crypto_auth_hmacsha256_update=T.oa)(R,Z,tA,BA),E._crypto_auth_hmacsha256_final=(R,Z)=>(E._crypto_auth_hmacsha256_final=T.pa)(R,Z),E._crypto_auth_hmacsha256=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha256=T.qa)(R,Z,tA,BA,dA),E._crypto_auth_hmacsha256_verify=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha256_verify=T.ra)(R,Z,tA,BA,dA),E._crypto_auth_hmacsha512_bytes=()=>(E._crypto_auth_hmacsha512_bytes=T.sa)(),E._crypto_auth_hmacsha512_keybytes=()=>(E._crypto_auth_hmacsha512_keybytes=T.ta)(),E._crypto_auth_hmacsha512_statebytes=()=>(E._crypto_auth_hmacsha512_statebytes=T.ua)(),E._crypto_auth_hmacsha512_keygen=R=>(E._crypto_auth_hmacsha512_keygen=T.va)(R),E._crypto_auth_hmacsha512_init=(R,Z,tA)=>(E._crypto_auth_hmacsha512_init=T.wa)(R,Z,tA),E._crypto_auth_hmacsha512_update=(R,Z,tA,BA)=>(E._crypto_auth_hmacsha512_update=T.xa)(R,Z,tA,BA),E._crypto_auth_hmacsha512_final=(R,Z)=>(E._crypto_auth_hmacsha512_final=T.ya)(R,Z),E._crypto_auth_hmacsha512=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha512=T.za)(R,Z,tA,BA,dA),E._crypto_auth_hmacsha512_verify=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha512_verify=T.Aa)(R,Z,tA,BA,dA),E._crypto_auth_hmacsha512256_bytes=()=>(E._crypto_auth_hmacsha512256_bytes=T.Ba)(),E._crypto_auth_hmacsha512256_keybytes=()=>(E._crypto_auth_hmacsha512256_keybytes=T.Ca)(),E._crypto_auth_hmacsha512256_statebytes=()=>(E._crypto_auth_hmacsha512256_statebytes=T.Da)(),E._crypto_auth_hmacsha512256_keygen=R=>(E._crypto_auth_hmacsha512256_keygen=T.Ea)(R),E._crypto_auth_hmacsha512256_init=(R,Z,tA)=>(E._crypto_auth_hmacsha512256_init=T.Fa)(R,Z,tA),E._crypto_auth_hmacsha512256_update=(R,Z,tA,BA)=>(E._crypto_auth_hmacsha512256_update=T.Ga)(R,Z,tA,BA),E._crypto_auth_hmacsha512256_final=(R,Z)=>(E._crypto_auth_hmacsha512256_final=T.Ha)(R,Z),E._crypto_auth_hmacsha512256=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha512256=T.Ia)(R,Z,tA,BA,dA),E._crypto_auth_hmacsha512256_verify=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha512256_verify=T.Ja)(R,Z,tA,BA,dA),E._crypto_box_seedbytes=()=>(E._crypto_box_seedbytes=T.Ka)(),E._crypto_box_publickeybytes=()=>(E._crypto_box_publickeybytes=T.La)(),E._crypto_box_secretkeybytes=()=>(E._crypto_box_secretkeybytes=T.Ma)(),E._crypto_box_beforenmbytes=()=>(E._crypto_box_beforenmbytes=T.Na)(),E._crypto_box_noncebytes=()=>(E._crypto_box_noncebytes=T.Oa)(),E._crypto_box_zerobytes=()=>(E._crypto_box_zerobytes=T.Pa)(),E._crypto_box_boxzerobytes=()=>(E._crypto_box_boxzerobytes=T.Qa)(),E._crypto_box_macbytes=()=>(E._crypto_box_macbytes=T.Ra)(),E._crypto_box_messagebytes_max=()=>(E._crypto_box_messagebytes_max=T.Sa)(),E._crypto_box_primitive=()=>(E._crypto_box_primitive=T.Ta)(),E._crypto_box_seed_keypair=(R,Z,tA)=>(E._crypto_box_seed_keypair=T.Ua)(R,Z,tA),E._crypto_box_keypair=(R,Z)=>(E._crypto_box_keypair=T.Va)(R,Z),E._crypto_box_beforenm=(R,Z,tA)=>(E._crypto_box_beforenm=T.Wa)(R,Z,tA),E._crypto_box_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_afternm=T.Xa)(R,Z,tA,BA,dA,xA),E._crypto_box_open_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_open_afternm=T.Ya)(R,Z,tA,BA,dA,xA),E._crypto_box=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box=T.Za)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_open=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_open=T._a)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_detached_afternm=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_detached_afternm=T.$a)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_detached=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_box_detached=T.ab)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_box_easy_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_easy_afternm=T.bb)(R,Z,tA,BA,dA,xA),E._crypto_box_easy=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_easy=T.cb)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_open_detached_afternm=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_open_detached_afternm=T.db)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_open_detached=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_box_open_detached=T.eb)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_box_open_easy_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_open_easy_afternm=T.fb)(R,Z,tA,BA,dA,xA),E._crypto_box_open_easy=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_open_easy=T.gb)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_seal=(R,Z,tA,BA,dA)=>(E._crypto_box_seal=T.hb)(R,Z,tA,BA,dA),E._crypto_box_seal_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_seal_open=T.ib)(R,Z,tA,BA,dA,xA),E._crypto_box_sealbytes=()=>(E._crypto_box_sealbytes=T.jb)(),E._crypto_box_curve25519xsalsa20poly1305_seed_keypair=(R,Z,tA)=>(E._crypto_box_curve25519xsalsa20poly1305_seed_keypair=T.kb)(R,Z,tA),E._crypto_box_curve25519xsalsa20poly1305_keypair=(R,Z)=>(E._crypto_box_curve25519xsalsa20poly1305_keypair=T.lb)(R,Z),E._crypto_box_curve25519xsalsa20poly1305_beforenm=(R,Z,tA)=>(E._crypto_box_curve25519xsalsa20poly1305_beforenm=T.mb)(R,Z,tA),E._crypto_box_curve25519xsalsa20poly1305_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_curve25519xsalsa20poly1305_afternm=T.nb)(R,Z,tA,BA,dA,xA),E._crypto_box_curve25519xsalsa20poly1305_open_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_curve25519xsalsa20poly1305_open_afternm=T.ob)(R,Z,tA,BA,dA,xA),E._crypto_box_curve25519xsalsa20poly1305=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xsalsa20poly1305=T.pb)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xsalsa20poly1305_open=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xsalsa20poly1305_open=T.qb)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xsalsa20poly1305_seedbytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_seedbytes=T.rb)(),E._crypto_box_curve25519xsalsa20poly1305_publickeybytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_publickeybytes=T.sb)(),E._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=T.tb)(),E._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=T.ub)(),E._crypto_box_curve25519xsalsa20poly1305_noncebytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_noncebytes=T.vb)(),E._crypto_box_curve25519xsalsa20poly1305_zerobytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_zerobytes=T.wb)(),E._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=T.xb)(),E._crypto_box_curve25519xsalsa20poly1305_macbytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_macbytes=T.yb)(),E._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=()=>(E._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=T.zb)(),E._crypto_core_hchacha20=(R,Z,tA,BA)=>(E._crypto_core_hchacha20=T.Ab)(R,Z,tA,BA),E._crypto_core_hchacha20_outputbytes=()=>(E._crypto_core_hchacha20_outputbytes=T.Bb)(),E._crypto_core_hchacha20_inputbytes=()=>(E._crypto_core_hchacha20_inputbytes=T.Cb)(),E._crypto_core_hchacha20_keybytes=()=>(E._crypto_core_hchacha20_keybytes=T.Db)(),E._crypto_core_hchacha20_constbytes=()=>(E._crypto_core_hchacha20_constbytes=T.Eb)(),E._crypto_core_hsalsa20=(R,Z,tA,BA)=>(E._crypto_core_hsalsa20=T.Fb)(R,Z,tA,BA),E._crypto_core_hsalsa20_outputbytes=()=>(E._crypto_core_hsalsa20_outputbytes=T.Gb)(),E._crypto_core_hsalsa20_inputbytes=()=>(E._crypto_core_hsalsa20_inputbytes=T.Hb)(),E._crypto_core_hsalsa20_keybytes=()=>(E._crypto_core_hsalsa20_keybytes=T.Ib)(),E._crypto_core_hsalsa20_constbytes=()=>(E._crypto_core_hsalsa20_constbytes=T.Jb)(),E._crypto_core_salsa20=(R,Z,tA,BA)=>(E._crypto_core_salsa20=T.Kb)(R,Z,tA,BA),E._crypto_core_salsa20_outputbytes=()=>(E._crypto_core_salsa20_outputbytes=T.Lb)(),E._crypto_core_salsa20_inputbytes=()=>(E._crypto_core_salsa20_inputbytes=T.Mb)(),E._crypto_core_salsa20_keybytes=()=>(E._crypto_core_salsa20_keybytes=T.Nb)(),E._crypto_core_salsa20_constbytes=()=>(E._crypto_core_salsa20_constbytes=T.Ob)(),E._crypto_core_salsa2012=(R,Z,tA,BA)=>(E._crypto_core_salsa2012=T.Pb)(R,Z,tA,BA),E._crypto_core_salsa2012_outputbytes=()=>(E._crypto_core_salsa2012_outputbytes=T.Qb)(),E._crypto_core_salsa2012_inputbytes=()=>(E._crypto_core_salsa2012_inputbytes=T.Rb)(),E._crypto_core_salsa2012_keybytes=()=>(E._crypto_core_salsa2012_keybytes=T.Sb)(),E._crypto_core_salsa2012_constbytes=()=>(E._crypto_core_salsa2012_constbytes=T.Tb)(),E._crypto_core_salsa208=(R,Z,tA,BA)=>(E._crypto_core_salsa208=T.Ub)(R,Z,tA,BA),E._crypto_core_salsa208_outputbytes=()=>(E._crypto_core_salsa208_outputbytes=T.Vb)(),E._crypto_core_salsa208_inputbytes=()=>(E._crypto_core_salsa208_inputbytes=T.Wb)(),E._crypto_core_salsa208_keybytes=()=>(E._crypto_core_salsa208_keybytes=T.Xb)(),E._crypto_core_salsa208_constbytes=()=>(E._crypto_core_salsa208_constbytes=T.Yb)(),E._crypto_generichash_bytes_min=()=>(E._crypto_generichash_bytes_min=T.Zb)(),E._crypto_generichash_bytes_max=()=>(E._crypto_generichash_bytes_max=T._b)(),E._crypto_generichash_bytes=()=>(E._crypto_generichash_bytes=T.$b)(),E._crypto_generichash_keybytes_min=()=>(E._crypto_generichash_keybytes_min=T.ac)(),E._crypto_generichash_keybytes_max=()=>(E._crypto_generichash_keybytes_max=T.bc)(),E._crypto_generichash_keybytes=()=>(E._crypto_generichash_keybytes=T.cc)(),E._crypto_generichash_primitive=()=>(E._crypto_generichash_primitive=T.dc)(),E._crypto_generichash_statebytes=()=>(E._crypto_generichash_statebytes=T.ec)(),E._crypto_generichash=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_generichash=T.fc)(R,Z,tA,BA,dA,xA,WA),E._crypto_generichash_init=(R,Z,tA,BA)=>(E._crypto_generichash_init=T.gc)(R,Z,tA,BA),E._crypto_generichash_update=(R,Z,tA,BA)=>(E._crypto_generichash_update=T.hc)(R,Z,tA,BA),E._crypto_generichash_final=(R,Z,tA)=>(E._crypto_generichash_final=T.ic)(R,Z,tA),E._crypto_generichash_keygen=R=>(E._crypto_generichash_keygen=T.jc)(R),E._crypto_generichash_blake2b_bytes_min=()=>(E._crypto_generichash_blake2b_bytes_min=T.kc)(),E._crypto_generichash_blake2b_bytes_max=()=>(E._crypto_generichash_blake2b_bytes_max=T.lc)(),E._crypto_generichash_blake2b_bytes=()=>(E._crypto_generichash_blake2b_bytes=T.mc)(),E._crypto_generichash_blake2b_keybytes_min=()=>(E._crypto_generichash_blake2b_keybytes_min=T.nc)(),E._crypto_generichash_blake2b_keybytes_max=()=>(E._crypto_generichash_blake2b_keybytes_max=T.oc)(),E._crypto_generichash_blake2b_keybytes=()=>(E._crypto_generichash_blake2b_keybytes=T.pc)(),E._crypto_generichash_blake2b_saltbytes=()=>(E._crypto_generichash_blake2b_saltbytes=T.qc)(),E._crypto_generichash_blake2b_personalbytes=()=>(E._crypto_generichash_blake2b_personalbytes=T.rc)(),E._crypto_generichash_blake2b_statebytes=()=>(E._crypto_generichash_blake2b_statebytes=T.sc)(),E._crypto_generichash_blake2b_keygen=R=>(E._crypto_generichash_blake2b_keygen=T.tc)(R),E._crypto_generichash_blake2b=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_generichash_blake2b=T.uc)(R,Z,tA,BA,dA,xA,WA),E._crypto_generichash_blake2b_salt_personal=(R,Z,tA,BA,dA,xA,WA,Q0,K0)=>(E._crypto_generichash_blake2b_salt_personal=T.vc)(R,Z,tA,BA,dA,xA,WA,Q0,K0),E._crypto_generichash_blake2b_init=(R,Z,tA,BA)=>(E._crypto_generichash_blake2b_init=T.wc)(R,Z,tA,BA),E._crypto_generichash_blake2b_init_salt_personal=(R,Z,tA,BA,dA,xA)=>(E._crypto_generichash_blake2b_init_salt_personal=T.xc)(R,Z,tA,BA,dA,xA),E._crypto_generichash_blake2b_update=(R,Z,tA,BA)=>(E._crypto_generichash_blake2b_update=T.yc)(R,Z,tA,BA),E._crypto_generichash_blake2b_final=(R,Z,tA)=>(E._crypto_generichash_blake2b_final=T.zc)(R,Z,tA),E._crypto_hash_bytes=()=>(E._crypto_hash_bytes=T.Ac)(),E._crypto_hash=(R,Z,tA,BA)=>(E._crypto_hash=T.Bc)(R,Z,tA,BA),E._crypto_hash_primitive=()=>(E._crypto_hash_primitive=T.Cc)(),E._crypto_hash_sha256_bytes=()=>(E._crypto_hash_sha256_bytes=T.Dc)(),E._crypto_hash_sha256_statebytes=()=>(E._crypto_hash_sha256_statebytes=T.Ec)(),E._crypto_hash_sha256_init=R=>(E._crypto_hash_sha256_init=T.Fc)(R),E._crypto_hash_sha256_update=(R,Z,tA,BA)=>(E._crypto_hash_sha256_update=T.Gc)(R,Z,tA,BA),E._crypto_hash_sha256_final=(R,Z)=>(E._crypto_hash_sha256_final=T.Hc)(R,Z),E._crypto_hash_sha256=(R,Z,tA,BA)=>(E._crypto_hash_sha256=T.Ic)(R,Z,tA,BA),E._crypto_hash_sha512_bytes=()=>(E._crypto_hash_sha512_bytes=T.Jc)(),E._crypto_hash_sha512_statebytes=()=>(E._crypto_hash_sha512_statebytes=T.Kc)(),E._crypto_hash_sha512_init=R=>(E._crypto_hash_sha512_init=T.Lc)(R),E._crypto_hash_sha512_update=(R,Z,tA,BA)=>(E._crypto_hash_sha512_update=T.Mc)(R,Z,tA,BA),E._crypto_hash_sha512_final=(R,Z)=>(E._crypto_hash_sha512_final=T.Nc)(R,Z),E._crypto_hash_sha512=(R,Z,tA,BA)=>(E._crypto_hash_sha512=T.Oc)(R,Z,tA,BA),E._crypto_kdf_blake2b_bytes_min=()=>(E._crypto_kdf_blake2b_bytes_min=T.Pc)(),E._crypto_kdf_blake2b_bytes_max=()=>(E._crypto_kdf_blake2b_bytes_max=T.Qc)(),E._crypto_kdf_blake2b_contextbytes=()=>(E._crypto_kdf_blake2b_contextbytes=T.Rc)(),E._crypto_kdf_blake2b_keybytes=()=>(E._crypto_kdf_blake2b_keybytes=T.Sc)(),E._crypto_kdf_blake2b_derive_from_key=(R,Z,tA,BA,dA,xA)=>(E._crypto_kdf_blake2b_derive_from_key=T.Tc)(R,Z,tA,BA,dA,xA),E._crypto_kdf_primitive=()=>(E._crypto_kdf_primitive=T.Uc)(),E._crypto_kdf_bytes_min=()=>(E._crypto_kdf_bytes_min=T.Vc)(),E._crypto_kdf_bytes_max=()=>(E._crypto_kdf_bytes_max=T.Wc)(),E._crypto_kdf_contextbytes=()=>(E._crypto_kdf_contextbytes=T.Xc)(),E._crypto_kdf_keybytes=()=>(E._crypto_kdf_keybytes=T.Yc)(),E._crypto_kdf_derive_from_key=(R,Z,tA,BA,dA,xA)=>(E._crypto_kdf_derive_from_key=T.Zc)(R,Z,tA,BA,dA,xA),E._crypto_kdf_keygen=R=>(E._crypto_kdf_keygen=T._c)(R),E._crypto_kdf_hkdf_sha256_extract_init=(R,Z,tA)=>(E._crypto_kdf_hkdf_sha256_extract_init=T.$c)(R,Z,tA),E._crypto_kdf_hkdf_sha256_extract_update=(R,Z,tA)=>(E._crypto_kdf_hkdf_sha256_extract_update=T.ad)(R,Z,tA),E._crypto_kdf_hkdf_sha256_extract_final=(R,Z)=>(E._crypto_kdf_hkdf_sha256_extract_final=T.bd)(R,Z),E._crypto_kdf_hkdf_sha256_extract=(R,Z,tA,BA,dA)=>(E._crypto_kdf_hkdf_sha256_extract=T.cd)(R,Z,tA,BA,dA),E._crypto_kdf_hkdf_sha256_keygen=R=>(E._crypto_kdf_hkdf_sha256_keygen=T.dd)(R),E._crypto_kdf_hkdf_sha256_expand=(R,Z,tA,BA,dA)=>(E._crypto_kdf_hkdf_sha256_expand=T.ed)(R,Z,tA,BA,dA),E._crypto_kdf_hkdf_sha256_keybytes=()=>(E._crypto_kdf_hkdf_sha256_keybytes=T.fd)(),E._crypto_kdf_hkdf_sha256_bytes_min=()=>(E._crypto_kdf_hkdf_sha256_bytes_min=T.gd)(),E._crypto_kdf_hkdf_sha256_bytes_max=()=>(E._crypto_kdf_hkdf_sha256_bytes_max=T.hd)(),E._crypto_kdf_hkdf_sha256_statebytes=()=>(E._crypto_kdf_hkdf_sha256_statebytes=T.id)(),E._crypto_kdf_hkdf_sha512_extract_init=(R,Z,tA)=>(E._crypto_kdf_hkdf_sha512_extract_init=T.jd)(R,Z,tA),E._crypto_kdf_hkdf_sha512_extract_update=(R,Z,tA)=>(E._crypto_kdf_hkdf_sha512_extract_update=T.kd)(R,Z,tA),E._crypto_kdf_hkdf_sha512_extract_final=(R,Z)=>(E._crypto_kdf_hkdf_sha512_extract_final=T.ld)(R,Z),E._crypto_kdf_hkdf_sha512_extract=(R,Z,tA,BA,dA)=>(E._crypto_kdf_hkdf_sha512_extract=T.md)(R,Z,tA,BA,dA),E._crypto_kdf_hkdf_sha512_keygen=R=>(E._crypto_kdf_hkdf_sha512_keygen=T.nd)(R),E._crypto_kdf_hkdf_sha512_expand=(R,Z,tA,BA,dA)=>(E._crypto_kdf_hkdf_sha512_expand=T.od)(R,Z,tA,BA,dA),E._crypto_kdf_hkdf_sha512_keybytes=()=>(E._crypto_kdf_hkdf_sha512_keybytes=T.pd)(),E._crypto_kdf_hkdf_sha512_bytes_min=()=>(E._crypto_kdf_hkdf_sha512_bytes_min=T.qd)(),E._crypto_kdf_hkdf_sha512_bytes_max=()=>(E._crypto_kdf_hkdf_sha512_bytes_max=T.rd)(),E._crypto_kdf_hkdf_sha512_statebytes=()=>(E._crypto_kdf_hkdf_sha512_statebytes=T.sd)(),E._crypto_kx_seed_keypair=(R,Z,tA)=>(E._crypto_kx_seed_keypair=T.td)(R,Z,tA),E._crypto_kx_keypair=(R,Z)=>(E._crypto_kx_keypair=T.ud)(R,Z),E._crypto_kx_client_session_keys=(R,Z,tA,BA,dA)=>(E._crypto_kx_client_session_keys=T.vd)(R,Z,tA,BA,dA),E._crypto_kx_server_session_keys=(R,Z,tA,BA,dA)=>(E._crypto_kx_server_session_keys=T.wd)(R,Z,tA,BA,dA),E._crypto_kx_publickeybytes=()=>(E._crypto_kx_publickeybytes=T.xd)(),E._crypto_kx_secretkeybytes=()=>(E._crypto_kx_secretkeybytes=T.yd)(),E._crypto_kx_seedbytes=()=>(E._crypto_kx_seedbytes=T.zd)(),E._crypto_kx_sessionkeybytes=()=>(E._crypto_kx_sessionkeybytes=T.Ad)(),E._crypto_kx_primitive=()=>(E._crypto_kx_primitive=T.Bd)(),E._crypto_onetimeauth_statebytes=()=>(E._crypto_onetimeauth_statebytes=T.Cd)(),E._crypto_onetimeauth_bytes=()=>(E._crypto_onetimeauth_bytes=T.Dd)(),E._crypto_onetimeauth_keybytes=()=>(E._crypto_onetimeauth_keybytes=T.Ed)(),E._crypto_onetimeauth=(R,Z,tA,BA,dA)=>(E._crypto_onetimeauth=T.Fd)(R,Z,tA,BA,dA),E._crypto_onetimeauth_verify=(R,Z,tA,BA,dA)=>(E._crypto_onetimeauth_verify=T.Gd)(R,Z,tA,BA,dA),E._crypto_onetimeauth_init=(R,Z)=>(E._crypto_onetimeauth_init=T.Hd)(R,Z),E._crypto_onetimeauth_update=(R,Z,tA,BA)=>(E._crypto_onetimeauth_update=T.Id)(R,Z,tA,BA),E._crypto_onetimeauth_final=(R,Z)=>(E._crypto_onetimeauth_final=T.Jd)(R,Z),E._crypto_onetimeauth_primitive=()=>(E._crypto_onetimeauth_primitive=T.Kd)(),E._crypto_onetimeauth_keygen=R=>(E._crypto_onetimeauth_keygen=T.Ld)(R),E._crypto_onetimeauth_poly1305=(R,Z,tA,BA,dA)=>(E._crypto_onetimeauth_poly1305=T.Md)(R,Z,tA,BA,dA),E._crypto_onetimeauth_poly1305_verify=(R,Z,tA,BA,dA)=>(E._crypto_onetimeauth_poly1305_verify=T.Nd)(R,Z,tA,BA,dA),E._crypto_onetimeauth_poly1305_init=(R,Z)=>(E._crypto_onetimeauth_poly1305_init=T.Od)(R,Z),E._crypto_onetimeauth_poly1305_update=(R,Z,tA,BA)=>(E._crypto_onetimeauth_poly1305_update=T.Pd)(R,Z,tA,BA),E._crypto_onetimeauth_poly1305_final=(R,Z)=>(E._crypto_onetimeauth_poly1305_final=T.Qd)(R,Z),E._crypto_onetimeauth_poly1305_bytes=()=>(E._crypto_onetimeauth_poly1305_bytes=T.Rd)(),E._crypto_onetimeauth_poly1305_keybytes=()=>(E._crypto_onetimeauth_poly1305_keybytes=T.Sd)(),E._crypto_onetimeauth_poly1305_statebytes=()=>(E._crypto_onetimeauth_poly1305_statebytes=T.Td)(),E._crypto_onetimeauth_poly1305_keygen=R=>(E._crypto_onetimeauth_poly1305_keygen=T.Ud)(R),E._crypto_pwhash_argon2i_alg_argon2i13=()=>(E._crypto_pwhash_argon2i_alg_argon2i13=T.Vd)(),E._crypto_pwhash_argon2i_bytes_min=()=>(E._crypto_pwhash_argon2i_bytes_min=T.Wd)(),E._crypto_pwhash_argon2i_bytes_max=()=>(E._crypto_pwhash_argon2i_bytes_max=T.Xd)(),E._crypto_pwhash_argon2i_passwd_min=()=>(E._crypto_pwhash_argon2i_passwd_min=T.Yd)(),E._crypto_pwhash_argon2i_passwd_max=()=>(E._crypto_pwhash_argon2i_passwd_max=T.Zd)(),E._crypto_pwhash_argon2i_saltbytes=()=>(E._crypto_pwhash_argon2i_saltbytes=T._d)(),E._crypto_pwhash_argon2i_strbytes=()=>(E._crypto_pwhash_argon2i_strbytes=T.$d)(),E._crypto_pwhash_argon2i_strprefix=()=>(E._crypto_pwhash_argon2i_strprefix=T.ae)(),E._crypto_pwhash_argon2i_opslimit_min=()=>(E._crypto_pwhash_argon2i_opslimit_min=T.be)(),E._crypto_pwhash_argon2i_opslimit_max=()=>(E._crypto_pwhash_argon2i_opslimit_max=T.ce)(),E._crypto_pwhash_argon2i_memlimit_min=()=>(E._crypto_pwhash_argon2i_memlimit_min=T.de)(),E._crypto_pwhash_argon2i_memlimit_max=()=>(E._crypto_pwhash_argon2i_memlimit_max=T.ee)(),E._crypto_pwhash_argon2i_opslimit_interactive=()=>(E._crypto_pwhash_argon2i_opslimit_interactive=T.fe)(),E._crypto_pwhash_argon2i_memlimit_interactive=()=>(E._crypto_pwhash_argon2i_memlimit_interactive=T.ge)(),E._crypto_pwhash_argon2i_opslimit_moderate=()=>(E._crypto_pwhash_argon2i_opslimit_moderate=T.he)(),E._crypto_pwhash_argon2i_memlimit_moderate=()=>(E._crypto_pwhash_argon2i_memlimit_moderate=T.ie)(),E._crypto_pwhash_argon2i_opslimit_sensitive=()=>(E._crypto_pwhash_argon2i_opslimit_sensitive=T.je)(),E._crypto_pwhash_argon2i_memlimit_sensitive=()=>(E._crypto_pwhash_argon2i_memlimit_sensitive=T.ke)(),E._crypto_pwhash_argon2i=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_pwhash_argon2i=T.le)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_pwhash_argon2i_str=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_pwhash_argon2i_str=T.me)(R,Z,tA,BA,dA,xA,WA),E._crypto_pwhash_argon2i_str_verify=(R,Z,tA,BA)=>(E._crypto_pwhash_argon2i_str_verify=T.ne)(R,Z,tA,BA),E._crypto_pwhash_argon2i_str_needs_rehash=(R,Z,tA,BA)=>(E._crypto_pwhash_argon2i_str_needs_rehash=T.oe)(R,Z,tA,BA),E._crypto_pwhash_argon2id_str_needs_rehash=(R,Z,tA,BA)=>(E._crypto_pwhash_argon2id_str_needs_rehash=T.pe)(R,Z,tA,BA),E._crypto_pwhash_argon2id_alg_argon2id13=()=>(E._crypto_pwhash_argon2id_alg_argon2id13=T.qe)(),E._crypto_pwhash_argon2id_bytes_min=()=>(E._crypto_pwhash_argon2id_bytes_min=T.re)(),E._crypto_pwhash_argon2id_bytes_max=()=>(E._crypto_pwhash_argon2id_bytes_max=T.se)(),E._crypto_pwhash_argon2id_passwd_min=()=>(E._crypto_pwhash_argon2id_passwd_min=T.te)(),E._crypto_pwhash_argon2id_passwd_max=()=>(E._crypto_pwhash_argon2id_passwd_max=T.ue)(),E._crypto_pwhash_argon2id_saltbytes=()=>(E._crypto_pwhash_argon2id_saltbytes=T.ve)(),E._crypto_pwhash_argon2id_strbytes=()=>(E._crypto_pwhash_argon2id_strbytes=T.we)(),E._crypto_pwhash_argon2id_strprefix=()=>(E._crypto_pwhash_argon2id_strprefix=T.xe)(),E._crypto_pwhash_argon2id_opslimit_min=()=>(E._crypto_pwhash_argon2id_opslimit_min=T.ye)(),E._crypto_pwhash_argon2id_opslimit_max=()=>(E._crypto_pwhash_argon2id_opslimit_max=T.ze)(),E._crypto_pwhash_argon2id_memlimit_min=()=>(E._crypto_pwhash_argon2id_memlimit_min=T.Ae)(),E._crypto_pwhash_argon2id_memlimit_max=()=>(E._crypto_pwhash_argon2id_memlimit_max=T.Be)(),E._crypto_pwhash_argon2id_opslimit_interactive=()=>(E._crypto_pwhash_argon2id_opslimit_interactive=T.Ce)(),E._crypto_pwhash_argon2id_memlimit_interactive=()=>(E._crypto_pwhash_argon2id_memlimit_interactive=T.De)(),E._crypto_pwhash_argon2id_opslimit_moderate=()=>(E._crypto_pwhash_argon2id_opslimit_moderate=T.Ee)(),E._crypto_pwhash_argon2id_memlimit_moderate=()=>(E._crypto_pwhash_argon2id_memlimit_moderate=T.Fe)(),E._crypto_pwhash_argon2id_opslimit_sensitive=()=>(E._crypto_pwhash_argon2id_opslimit_sensitive=T.Ge)(),E._crypto_pwhash_argon2id_memlimit_sensitive=()=>(E._crypto_pwhash_argon2id_memlimit_sensitive=T.He)(),E._crypto_pwhash_argon2id=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_pwhash_argon2id=T.Ie)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_pwhash_argon2id_str=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_pwhash_argon2id_str=T.Je)(R,Z,tA,BA,dA,xA,WA),E._crypto_pwhash_argon2id_str_verify=(R,Z,tA,BA)=>(E._crypto_pwhash_argon2id_str_verify=T.Ke)(R,Z,tA,BA),E._crypto_pwhash_alg_argon2i13=()=>(E._crypto_pwhash_alg_argon2i13=T.Le)(),E._crypto_pwhash_alg_argon2id13=()=>(E._crypto_pwhash_alg_argon2id13=T.Me)(),E._crypto_pwhash_alg_default=()=>(E._crypto_pwhash_alg_default=T.Ne)(),E._crypto_pwhash_bytes_min=()=>(E._crypto_pwhash_bytes_min=T.Oe)(),E._crypto_pwhash_bytes_max=()=>(E._crypto_pwhash_bytes_max=T.Pe)(),E._crypto_pwhash_passwd_min=()=>(E._crypto_pwhash_passwd_min=T.Qe)(),E._crypto_pwhash_passwd_max=()=>(E._crypto_pwhash_passwd_max=T.Re)(),E._crypto_pwhash_saltbytes=()=>(E._crypto_pwhash_saltbytes=T.Se)(),E._crypto_pwhash_strbytes=()=>(E._crypto_pwhash_strbytes=T.Te)(),E._crypto_pwhash_strprefix=()=>(E._crypto_pwhash_strprefix=T.Ue)(),E._crypto_pwhash_opslimit_min=()=>(E._crypto_pwhash_opslimit_min=T.Ve)(),E._crypto_pwhash_opslimit_max=()=>(E._crypto_pwhash_opslimit_max=T.We)(),E._crypto_pwhash_memlimit_min=()=>(E._crypto_pwhash_memlimit_min=T.Xe)(),E._crypto_pwhash_memlimit_max=()=>(E._crypto_pwhash_memlimit_max=T.Ye)(),E._crypto_pwhash_opslimit_interactive=()=>(E._crypto_pwhash_opslimit_interactive=T.Ze)(),E._crypto_pwhash_memlimit_interactive=()=>(E._crypto_pwhash_memlimit_interactive=T._e)(),E._crypto_pwhash_opslimit_moderate=()=>(E._crypto_pwhash_opslimit_moderate=T.$e)(),E._crypto_pwhash_memlimit_moderate=()=>(E._crypto_pwhash_memlimit_moderate=T.af)(),E._crypto_pwhash_opslimit_sensitive=()=>(E._crypto_pwhash_opslimit_sensitive=T.bf)(),E._crypto_pwhash_memlimit_sensitive=()=>(E._crypto_pwhash_memlimit_sensitive=T.cf)(),E._crypto_pwhash=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_pwhash=T.df)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_pwhash_str=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_pwhash_str=T.ef)(R,Z,tA,BA,dA,xA,WA),E._crypto_pwhash_str_alg=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_pwhash_str_alg=T.ff)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_pwhash_str_verify=(R,Z,tA,BA)=>(E._crypto_pwhash_str_verify=T.gf)(R,Z,tA,BA),E._crypto_pwhash_str_needs_rehash=(R,Z,tA,BA)=>(E._crypto_pwhash_str_needs_rehash=T.hf)(R,Z,tA,BA),E._crypto_pwhash_primitive=()=>(E._crypto_pwhash_primitive=T.jf)(),E._crypto_scalarmult_primitive=()=>(E._crypto_scalarmult_primitive=T.kf)(),E._crypto_scalarmult_base=(R,Z)=>(E._crypto_scalarmult_base=T.lf)(R,Z),E._crypto_scalarmult=(R,Z,tA)=>(E._crypto_scalarmult=T.mf)(R,Z,tA),E._crypto_scalarmult_bytes=()=>(E._crypto_scalarmult_bytes=T.nf)(),E._crypto_scalarmult_scalarbytes=()=>(E._crypto_scalarmult_scalarbytes=T.of)(),E._crypto_scalarmult_curve25519=(R,Z,tA)=>(E._crypto_scalarmult_curve25519=T.pf)(R,Z,tA),E._crypto_scalarmult_curve25519_base=(R,Z)=>(E._crypto_scalarmult_curve25519_base=T.qf)(R,Z),E._crypto_scalarmult_curve25519_bytes=()=>(E._crypto_scalarmult_curve25519_bytes=T.rf)(),E._crypto_scalarmult_curve25519_scalarbytes=()=>(E._crypto_scalarmult_curve25519_scalarbytes=T.sf)(),E._crypto_secretbox_keybytes=()=>(E._crypto_secretbox_keybytes=T.tf)(),E._crypto_secretbox_noncebytes=()=>(E._crypto_secretbox_noncebytes=T.uf)(),E._crypto_secretbox_zerobytes=()=>(E._crypto_secretbox_zerobytes=T.vf)(),E._crypto_secretbox_boxzerobytes=()=>(E._crypto_secretbox_boxzerobytes=T.wf)(),E._crypto_secretbox_macbytes=()=>(E._crypto_secretbox_macbytes=T.xf)(),E._crypto_secretbox_messagebytes_max=()=>(E._crypto_secretbox_messagebytes_max=T.yf)(),E._crypto_secretbox_primitive=()=>(E._crypto_secretbox_primitive=T.zf)(),E._crypto_secretbox=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox=T.Af)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_open=T.Bf)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_keygen=R=>(E._crypto_secretbox_keygen=T.Cf)(R),E._crypto_secretbox_detached=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_secretbox_detached=T.Df)(R,Z,tA,BA,dA,xA,WA),E._crypto_secretbox_easy=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_easy=T.Ef)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_open_detached=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_secretbox_open_detached=T.Ff)(R,Z,tA,BA,dA,xA,WA),E._crypto_secretbox_open_easy=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_open_easy=T.Gf)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_xsalsa20poly1305=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_xsalsa20poly1305=T.Hf)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_xsalsa20poly1305_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_xsalsa20poly1305_open=T.If)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_xsalsa20poly1305_keybytes=()=>(E._crypto_secretbox_xsalsa20poly1305_keybytes=T.Jf)(),E._crypto_secretbox_xsalsa20poly1305_noncebytes=()=>(E._crypto_secretbox_xsalsa20poly1305_noncebytes=T.Kf)(),E._crypto_secretbox_xsalsa20poly1305_zerobytes=()=>(E._crypto_secretbox_xsalsa20poly1305_zerobytes=T.Lf)(),E._crypto_secretbox_xsalsa20poly1305_boxzerobytes=()=>(E._crypto_secretbox_xsalsa20poly1305_boxzerobytes=T.Mf)(),E._crypto_secretbox_xsalsa20poly1305_macbytes=()=>(E._crypto_secretbox_xsalsa20poly1305_macbytes=T.Nf)(),E._crypto_secretbox_xsalsa20poly1305_messagebytes_max=()=>(E._crypto_secretbox_xsalsa20poly1305_messagebytes_max=T.Of)(),E._crypto_secretbox_xsalsa20poly1305_keygen=R=>(E._crypto_secretbox_xsalsa20poly1305_keygen=T.Pf)(R),E._crypto_secretstream_xchacha20poly1305_keygen=R=>(E._crypto_secretstream_xchacha20poly1305_keygen=T.Qf)(R),E._crypto_secretstream_xchacha20poly1305_init_push=(R,Z,tA)=>(E._crypto_secretstream_xchacha20poly1305_init_push=T.Rf)(R,Z,tA),E._crypto_secretstream_xchacha20poly1305_init_pull=(R,Z,tA)=>(E._crypto_secretstream_xchacha20poly1305_init_pull=T.Sf)(R,Z,tA),E._crypto_secretstream_xchacha20poly1305_rekey=R=>(E._crypto_secretstream_xchacha20poly1305_rekey=T.Tf)(R),E._crypto_secretstream_xchacha20poly1305_push=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0)=>(E._crypto_secretstream_xchacha20poly1305_push=T.Uf)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0),E._crypto_secretstream_xchacha20poly1305_pull=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0)=>(E._crypto_secretstream_xchacha20poly1305_pull=T.Vf)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0),E._crypto_secretstream_xchacha20poly1305_statebytes=()=>(E._crypto_secretstream_xchacha20poly1305_statebytes=T.Wf)(),E._crypto_secretstream_xchacha20poly1305_abytes=()=>(E._crypto_secretstream_xchacha20poly1305_abytes=T.Xf)(),E._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(E._crypto_secretstream_xchacha20poly1305_headerbytes=T.Yf)(),E._crypto_secretstream_xchacha20poly1305_keybytes=()=>(E._crypto_secretstream_xchacha20poly1305_keybytes=T.Zf)(),E._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(E._crypto_secretstream_xchacha20poly1305_messagebytes_max=T._f)(),E._crypto_secretstream_xchacha20poly1305_tag_message=()=>(E._crypto_secretstream_xchacha20poly1305_tag_message=T.$f)(),E._crypto_secretstream_xchacha20poly1305_tag_push=()=>(E._crypto_secretstream_xchacha20poly1305_tag_push=T.ag)(),E._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(E._crypto_secretstream_xchacha20poly1305_tag_rekey=T.bg)(),E._crypto_secretstream_xchacha20poly1305_tag_final=()=>(E._crypto_secretstream_xchacha20poly1305_tag_final=T.cg)(),E._crypto_shorthash_bytes=()=>(E._crypto_shorthash_bytes=T.dg)(),E._crypto_shorthash_keybytes=()=>(E._crypto_shorthash_keybytes=T.eg)(),E._crypto_shorthash_primitive=()=>(E._crypto_shorthash_primitive=T.fg)(),E._crypto_shorthash=(R,Z,tA,BA,dA)=>(E._crypto_shorthash=T.gg)(R,Z,tA,BA,dA),E._crypto_shorthash_keygen=R=>(E._crypto_shorthash_keygen=T.hg)(R),E._crypto_shorthash_siphash24_bytes=()=>(E._crypto_shorthash_siphash24_bytes=T.ig)(),E._crypto_shorthash_siphash24_keybytes=()=>(E._crypto_shorthash_siphash24_keybytes=T.jg)(),E._crypto_shorthash_siphash24=(R,Z,tA,BA,dA)=>(E._crypto_shorthash_siphash24=T.kg)(R,Z,tA,BA,dA),E._crypto_sign_statebytes=()=>(E._crypto_sign_statebytes=T.lg)(),E._crypto_sign_bytes=()=>(E._crypto_sign_bytes=T.mg)(),E._crypto_sign_seedbytes=()=>(E._crypto_sign_seedbytes=T.ng)(),E._crypto_sign_publickeybytes=()=>(E._crypto_sign_publickeybytes=T.og)(),E._crypto_sign_secretkeybytes=()=>(E._crypto_sign_secretkeybytes=T.pg)(),E._crypto_sign_messagebytes_max=()=>(E._crypto_sign_messagebytes_max=T.qg)(),E._crypto_sign_primitive=()=>(E._crypto_sign_primitive=T.rg)(),E._crypto_sign_seed_keypair=(R,Z,tA)=>(E._crypto_sign_seed_keypair=T.sg)(R,Z,tA),E._crypto_sign_keypair=(R,Z)=>(E._crypto_sign_keypair=T.tg)(R,Z),E._crypto_sign=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign=T.ug)(R,Z,tA,BA,dA,xA),E._crypto_sign_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign_open=T.vg)(R,Z,tA,BA,dA,xA),E._crypto_sign_detached=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign_detached=T.wg)(R,Z,tA,BA,dA,xA),E._crypto_sign_verify_detached=(R,Z,tA,BA,dA)=>(E._crypto_sign_verify_detached=T.xg)(R,Z,tA,BA,dA),E._crypto_sign_init=R=>(E._crypto_sign_init=T.yg)(R),E._crypto_sign_update=(R,Z,tA,BA)=>(E._crypto_sign_update=T.zg)(R,Z,tA,BA),E._crypto_sign_final_create=(R,Z,tA,BA)=>(E._crypto_sign_final_create=T.Ag)(R,Z,tA,BA),E._crypto_sign_final_verify=(R,Z,tA)=>(E._crypto_sign_final_verify=T.Bg)(R,Z,tA),E._crypto_sign_ed25519ph_statebytes=()=>(E._crypto_sign_ed25519ph_statebytes=T.Cg)(),E._crypto_sign_ed25519_bytes=()=>(E._crypto_sign_ed25519_bytes=T.Dg)(),E._crypto_sign_ed25519_seedbytes=()=>(E._crypto_sign_ed25519_seedbytes=T.Eg)(),E._crypto_sign_ed25519_publickeybytes=()=>(E._crypto_sign_ed25519_publickeybytes=T.Fg)(),E._crypto_sign_ed25519_secretkeybytes=()=>(E._crypto_sign_ed25519_secretkeybytes=T.Gg)(),E._crypto_sign_ed25519_messagebytes_max=()=>(E._crypto_sign_ed25519_messagebytes_max=T.Hg)(),E._crypto_sign_ed25519_sk_to_seed=(R,Z)=>(E._crypto_sign_ed25519_sk_to_seed=T.Ig)(R,Z),E._crypto_sign_ed25519_sk_to_pk=(R,Z)=>(E._crypto_sign_ed25519_sk_to_pk=T.Jg)(R,Z),E._crypto_sign_ed25519ph_init=R=>(E._crypto_sign_ed25519ph_init=T.Kg)(R),E._crypto_sign_ed25519ph_update=(R,Z,tA,BA)=>(E._crypto_sign_ed25519ph_update=T.Lg)(R,Z,tA,BA),E._crypto_sign_ed25519ph_final_create=(R,Z,tA,BA)=>(E._crypto_sign_ed25519ph_final_create=T.Mg)(R,Z,tA,BA),E._crypto_sign_ed25519ph_final_verify=(R,Z,tA)=>(E._crypto_sign_ed25519ph_final_verify=T.Ng)(R,Z,tA),E._crypto_sign_ed25519_seed_keypair=(R,Z,tA)=>(E._crypto_sign_ed25519_seed_keypair=T.Og)(R,Z,tA),E._crypto_sign_ed25519_keypair=(R,Z)=>(E._crypto_sign_ed25519_keypair=T.Pg)(R,Z),E._crypto_sign_ed25519_pk_to_curve25519=(R,Z)=>(E._crypto_sign_ed25519_pk_to_curve25519=T.Qg)(R,Z),E._crypto_sign_ed25519_sk_to_curve25519=(R,Z)=>(E._crypto_sign_ed25519_sk_to_curve25519=T.Rg)(R,Z),E._crypto_sign_ed25519_verify_detached=(R,Z,tA,BA,dA)=>(E._crypto_sign_ed25519_verify_detached=T.Sg)(R,Z,tA,BA,dA),E._crypto_sign_ed25519_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign_ed25519_open=T.Tg)(R,Z,tA,BA,dA,xA),E._crypto_sign_ed25519_detached=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign_ed25519_detached=T.Ug)(R,Z,tA,BA,dA,xA),E._crypto_sign_ed25519=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign_ed25519=T.Vg)(R,Z,tA,BA,dA,xA),E._crypto_stream_chacha20_keybytes=()=>(E._crypto_stream_chacha20_keybytes=T.Wg)(),E._crypto_stream_chacha20_noncebytes=()=>(E._crypto_stream_chacha20_noncebytes=T.Xg)(),E._crypto_stream_chacha20_messagebytes_max=()=>(E._crypto_stream_chacha20_messagebytes_max=T.Yg)(),E._crypto_stream_chacha20_ietf_keybytes=()=>(E._crypto_stream_chacha20_ietf_keybytes=T.Zg)(),E._crypto_stream_chacha20_ietf_noncebytes=()=>(E._crypto_stream_chacha20_ietf_noncebytes=T._g)(),E._crypto_stream_chacha20_ietf_messagebytes_max=()=>(E._crypto_stream_chacha20_ietf_messagebytes_max=T.$g)(),E._crypto_stream_chacha20=(R,Z,tA,BA,dA)=>(E._crypto_stream_chacha20=T.ah)(R,Z,tA,BA,dA),E._crypto_stream_chacha20_xor_ic=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_stream_chacha20_xor_ic=T.bh)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_stream_chacha20_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_chacha20_xor=T.ch)(R,Z,tA,BA,dA,xA),E._crypto_stream_chacha20_ietf=(R,Z,tA,BA,dA)=>(E._crypto_stream_chacha20_ietf=T.dh)(R,Z,tA,BA,dA),E._crypto_stream_chacha20_ietf_xor_ic=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_stream_chacha20_ietf_xor_ic=T.eh)(R,Z,tA,BA,dA,xA,WA),E._crypto_stream_chacha20_ietf_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_chacha20_ietf_xor=T.fh)(R,Z,tA,BA,dA,xA),E._crypto_stream_chacha20_ietf_keygen=R=>(E._crypto_stream_chacha20_ietf_keygen=T.gh)(R),E._crypto_stream_chacha20_keygen=R=>(E._crypto_stream_chacha20_keygen=T.hh)(R),E._crypto_stream_keybytes=()=>(E._crypto_stream_keybytes=T.ih)(),E._crypto_stream_noncebytes=()=>(E._crypto_stream_noncebytes=T.jh)(),E._crypto_stream_messagebytes_max=()=>(E._crypto_stream_messagebytes_max=T.kh)(),E._crypto_stream_primitive=()=>(E._crypto_stream_primitive=T.lh)(),E._crypto_stream=(R,Z,tA,BA,dA)=>(E._crypto_stream=T.mh)(R,Z,tA,BA,dA),E._crypto_stream_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_xor=T.nh)(R,Z,tA,BA,dA,xA),E._crypto_stream_keygen=R=>(E._crypto_stream_keygen=T.oh)(R),E._crypto_stream_salsa20_keybytes=()=>(E._crypto_stream_salsa20_keybytes=T.ph)(),E._crypto_stream_salsa20_noncebytes=()=>(E._crypto_stream_salsa20_noncebytes=T.qh)(),E._crypto_stream_salsa20_messagebytes_max=()=>(E._crypto_stream_salsa20_messagebytes_max=T.rh)(),E._crypto_stream_salsa20=(R,Z,tA,BA,dA)=>(E._crypto_stream_salsa20=T.sh)(R,Z,tA,BA,dA),E._crypto_stream_salsa20_xor_ic=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_stream_salsa20_xor_ic=T.th)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_stream_salsa20_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_salsa20_xor=T.uh)(R,Z,tA,BA,dA,xA),E._crypto_stream_salsa20_keygen=R=>(E._crypto_stream_salsa20_keygen=T.vh)(R),E._crypto_stream_xsalsa20=(R,Z,tA,BA,dA)=>(E._crypto_stream_xsalsa20=T.wh)(R,Z,tA,BA,dA),E._crypto_stream_xsalsa20_xor_ic=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_stream_xsalsa20_xor_ic=T.xh)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_stream_xsalsa20_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_xsalsa20_xor=T.yh)(R,Z,tA,BA,dA,xA),E._crypto_stream_xsalsa20_keybytes=()=>(E._crypto_stream_xsalsa20_keybytes=T.zh)(),E._crypto_stream_xsalsa20_noncebytes=()=>(E._crypto_stream_xsalsa20_noncebytes=T.Ah)(),E._crypto_stream_xsalsa20_messagebytes_max=()=>(E._crypto_stream_xsalsa20_messagebytes_max=T.Bh)(),E._crypto_stream_xsalsa20_keygen=R=>(E._crypto_stream_xsalsa20_keygen=T.Ch)(R),E._crypto_verify_16_bytes=()=>(E._crypto_verify_16_bytes=T.Dh)(),E._crypto_verify_32_bytes=()=>(E._crypto_verify_32_bytes=T.Eh)(),E._crypto_verify_64_bytes=()=>(E._crypto_verify_64_bytes=T.Fh)(),E._crypto_verify_16=(R,Z)=>(E._crypto_verify_16=T.Gh)(R,Z),E._crypto_verify_32=(R,Z)=>(E._crypto_verify_32=T.Hh)(R,Z),E._crypto_verify_64=(R,Z)=>(E._crypto_verify_64=T.Ih)(R,Z),E._randombytes_implementation_name=()=>(E._randombytes_implementation_name=T.Jh)(),E._randombytes_random=()=>(E._randombytes_random=T.Kh)(),E._randombytes_stir=()=>(E._randombytes_stir=T.Lh)(),E._randombytes_uniform=R=>(E._randombytes_uniform=T.Mh)(R),E._randombytes_buf=(R,Z)=>(E._randombytes_buf=T.Nh)(R,Z),E._randombytes_buf_deterministic=(R,Z,tA)=>(E._randombytes_buf_deterministic=T.Oh)(R,Z,tA),E._randombytes_seedbytes=()=>(E._randombytes_seedbytes=T.Ph)(),E._randombytes_close=()=>(E._randombytes_close=T.Qh)(),E._randombytes=(R,Z,tA)=>(E._randombytes=T.Rh)(R,Z,tA),E._sodium_bin2hex=(R,Z,tA,BA)=>(E._sodium_bin2hex=T.Sh)(R,Z,tA,BA),E._sodium_hex2bin=(R,Z,tA,BA,dA,xA,WA)=>(E._sodium_hex2bin=T.Th)(R,Z,tA,BA,dA,xA,WA),E._sodium_base64_encoded_len=(R,Z)=>(E._sodium_base64_encoded_len=T.Uh)(R,Z),E._sodium_bin2base64=(R,Z,tA,BA,dA)=>(E._sodium_bin2base64=T.Vh)(R,Z,tA,BA,dA),E._sodium_base642bin=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._sodium_base642bin=T.Wh)(R,Z,tA,BA,dA,xA,WA,Q0),E._sodium_init=()=>(E._sodium_init=T.Xh)(),E._sodium_pad=(R,Z,tA,BA,dA)=>(E._sodium_pad=T.Yh)(R,Z,tA,BA,dA),E._sodium_unpad=(R,Z,tA,BA)=>(E._sodium_unpad=T.Zh)(R,Z,tA,BA),E._sodium_version_string=()=>(E._sodium_version_string=T._h)(),E._sodium_library_version_major=()=>(E._sodium_library_version_major=T.$h)(),E._sodium_library_version_minor=()=>(E._sodium_library_version_minor=T.ai)(),E._sodium_library_minimal=()=>(E._sodium_library_minimal=T.bi)(),E._crypto_box_curve25519xchacha20poly1305_seed_keypair=(R,Z,tA)=>(E._crypto_box_curve25519xchacha20poly1305_seed_keypair=T.ci)(R,Z,tA),E._crypto_box_curve25519xchacha20poly1305_keypair=(R,Z)=>(E._crypto_box_curve25519xchacha20poly1305_keypair=T.di)(R,Z),E._crypto_box_curve25519xchacha20poly1305_beforenm=(R,Z,tA)=>(E._crypto_box_curve25519xchacha20poly1305_beforenm=T.ei)(R,Z,tA),E._crypto_box_curve25519xchacha20poly1305_detached_afternm=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xchacha20poly1305_detached_afternm=T.fi)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xchacha20poly1305_detached=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_box_curve25519xchacha20poly1305_detached=T.gi)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_box_curve25519xchacha20poly1305_easy_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_curve25519xchacha20poly1305_easy_afternm=T.hi)(R,Z,tA,BA,dA,xA),E._crypto_box_curve25519xchacha20poly1305_easy=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xchacha20poly1305_easy=T.ii)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=T.ji)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xchacha20poly1305_open_detached=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_box_curve25519xchacha20poly1305_open_detached=T.ki)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=T.li)(R,Z,tA,BA,dA,xA),E._crypto_box_curve25519xchacha20poly1305_open_easy=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xchacha20poly1305_open_easy=T.mi)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xchacha20poly1305_seedbytes=()=>(E._crypto_box_curve25519xchacha20poly1305_seedbytes=T.ni)(),E._crypto_box_curve25519xchacha20poly1305_publickeybytes=()=>(E._crypto_box_curve25519xchacha20poly1305_publickeybytes=T.oi)(),E._crypto_box_curve25519xchacha20poly1305_secretkeybytes=()=>(E._crypto_box_curve25519xchacha20poly1305_secretkeybytes=T.pi)(),E._crypto_box_curve25519xchacha20poly1305_beforenmbytes=()=>(E._crypto_box_curve25519xchacha20poly1305_beforenmbytes=T.qi)(),E._crypto_box_curve25519xchacha20poly1305_noncebytes=()=>(E._crypto_box_curve25519xchacha20poly1305_noncebytes=T.ri)(),E._crypto_box_curve25519xchacha20poly1305_macbytes=()=>(E._crypto_box_curve25519xchacha20poly1305_macbytes=T.si)(),E._crypto_box_curve25519xchacha20poly1305_messagebytes_max=()=>(E._crypto_box_curve25519xchacha20poly1305_messagebytes_max=T.ti)(),E._crypto_box_curve25519xchacha20poly1305_seal=(R,Z,tA,BA,dA)=>(E._crypto_box_curve25519xchacha20poly1305_seal=T.ui)(R,Z,tA,BA,dA),E._crypto_box_curve25519xchacha20poly1305_seal_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_curve25519xchacha20poly1305_seal_open=T.vi)(R,Z,tA,BA,dA,xA),E._crypto_box_curve25519xchacha20poly1305_sealbytes=()=>(E._crypto_box_curve25519xchacha20poly1305_sealbytes=T.wi)(),E._crypto_core_ed25519_is_valid_point=R=>(E._crypto_core_ed25519_is_valid_point=T.xi)(R),E._crypto_core_ed25519_add=(R,Z,tA)=>(E._crypto_core_ed25519_add=T.yi)(R,Z,tA),E._crypto_core_ed25519_sub=(R,Z,tA)=>(E._crypto_core_ed25519_sub=T.zi)(R,Z,tA),E._crypto_core_ed25519_from_uniform=(R,Z)=>(E._crypto_core_ed25519_from_uniform=T.Ai)(R,Z),E._crypto_core_ed25519_random=R=>(E._crypto_core_ed25519_random=T.Bi)(R),E._crypto_core_ed25519_scalar_random=R=>(E._crypto_core_ed25519_scalar_random=T.Ci)(R),E._crypto_core_ed25519_scalar_invert=(R,Z)=>(E._crypto_core_ed25519_scalar_invert=T.Di)(R,Z),E._crypto_core_ed25519_scalar_negate=(R,Z)=>(E._crypto_core_ed25519_scalar_negate=T.Ei)(R,Z),E._crypto_core_ed25519_scalar_complement=(R,Z)=>(E._crypto_core_ed25519_scalar_complement=T.Fi)(R,Z),E._crypto_core_ed25519_scalar_add=(R,Z,tA)=>(E._crypto_core_ed25519_scalar_add=T.Gi)(R,Z,tA),E._crypto_core_ed25519_scalar_reduce=(R,Z)=>(E._crypto_core_ed25519_scalar_reduce=T.Hi)(R,Z),E._crypto_core_ed25519_scalar_sub=(R,Z,tA)=>(E._crypto_core_ed25519_scalar_sub=T.Ii)(R,Z,tA),E._crypto_core_ed25519_scalar_mul=(R,Z,tA)=>(E._crypto_core_ed25519_scalar_mul=T.Ji)(R,Z,tA),E._crypto_core_ed25519_bytes=()=>(E._crypto_core_ed25519_bytes=T.Ki)(),E._crypto_core_ed25519_nonreducedscalarbytes=()=>(E._crypto_core_ed25519_nonreducedscalarbytes=T.Li)(),E._crypto_core_ed25519_uniformbytes=()=>(E._crypto_core_ed25519_uniformbytes=T.Mi)(),E._crypto_core_ed25519_hashbytes=()=>(E._crypto_core_ed25519_hashbytes=T.Ni)(),E._crypto_core_ed25519_scalarbytes=()=>(E._crypto_core_ed25519_scalarbytes=T.Oi)(),E._crypto_core_ristretto255_is_valid_point=R=>(E._crypto_core_ristretto255_is_valid_point=T.Pi)(R),E._crypto_core_ristretto255_add=(R,Z,tA)=>(E._crypto_core_ristretto255_add=T.Qi)(R,Z,tA),E._crypto_core_ristretto255_sub=(R,Z,tA)=>(E._crypto_core_ristretto255_sub=T.Ri)(R,Z,tA),E._crypto_core_ristretto255_from_hash=(R,Z)=>(E._crypto_core_ristretto255_from_hash=T.Si)(R,Z),E._crypto_core_ristretto255_random=R=>(E._crypto_core_ristretto255_random=T.Ti)(R),E._crypto_core_ristretto255_scalar_random=R=>(E._crypto_core_ristretto255_scalar_random=T.Ui)(R),E._crypto_core_ristretto255_scalar_invert=(R,Z)=>(E._crypto_core_ristretto255_scalar_invert=T.Vi)(R,Z),E._crypto_core_ristretto255_scalar_negate=(R,Z)=>(E._crypto_core_ristretto255_scalar_negate=T.Wi)(R,Z),E._crypto_core_ristretto255_scalar_complement=(R,Z)=>(E._crypto_core_ristretto255_scalar_complement=T.Xi)(R,Z),E._crypto_core_ristretto255_scalar_add=(R,Z,tA)=>(E._crypto_core_ristretto255_scalar_add=T.Yi)(R,Z,tA),E._crypto_core_ristretto255_scalar_sub=(R,Z,tA)=>(E._crypto_core_ristretto255_scalar_sub=T.Zi)(R,Z,tA),E._crypto_core_ristretto255_scalar_mul=(R,Z,tA)=>(E._crypto_core_ristretto255_scalar_mul=T._i)(R,Z,tA),E._crypto_core_ristretto255_scalar_reduce=(R,Z)=>(E._crypto_core_ristretto255_scalar_reduce=T.$i)(R,Z),E._crypto_core_ristretto255_bytes=()=>(E._crypto_core_ristretto255_bytes=T.aj)(),E._crypto_core_ristretto255_nonreducedscalarbytes=()=>(E._crypto_core_ristretto255_nonreducedscalarbytes=T.bj)(),E._crypto_core_ristretto255_hashbytes=()=>(E._crypto_core_ristretto255_hashbytes=T.cj)(),E._crypto_core_ristretto255_scalarbytes=()=>(E._crypto_core_ristretto255_scalarbytes=T.dj)(),E._crypto_pwhash_scryptsalsa208sha256_ll=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0)=>(E._crypto_pwhash_scryptsalsa208sha256_ll=T.ej)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0),E._crypto_pwhash_scryptsalsa208sha256_bytes_min=()=>(E._crypto_pwhash_scryptsalsa208sha256_bytes_min=T.fj)(),E._crypto_pwhash_scryptsalsa208sha256_bytes_max=()=>(E._crypto_pwhash_scryptsalsa208sha256_bytes_max=T.gj)(),E._crypto_pwhash_scryptsalsa208sha256_passwd_min=()=>(E._crypto_pwhash_scryptsalsa208sha256_passwd_min=T.hj)(),E._crypto_pwhash_scryptsalsa208sha256_passwd_max=()=>(E._crypto_pwhash_scryptsalsa208sha256_passwd_max=T.ij)(),E._crypto_pwhash_scryptsalsa208sha256_saltbytes=()=>(E._crypto_pwhash_scryptsalsa208sha256_saltbytes=T.jj)(),E._crypto_pwhash_scryptsalsa208sha256_strbytes=()=>(E._crypto_pwhash_scryptsalsa208sha256_strbytes=T.kj)(),E._crypto_pwhash_scryptsalsa208sha256_strprefix=()=>(E._crypto_pwhash_scryptsalsa208sha256_strprefix=T.lj)(),E._crypto_pwhash_scryptsalsa208sha256_opslimit_min=()=>(E._crypto_pwhash_scryptsalsa208sha256_opslimit_min=T.mj)(),E._crypto_pwhash_scryptsalsa208sha256_opslimit_max=()=>(E._crypto_pwhash_scryptsalsa208sha256_opslimit_max=T.nj)(),E._crypto_pwhash_scryptsalsa208sha256_memlimit_min=()=>(E._crypto_pwhash_scryptsalsa208sha256_memlimit_min=T.oj)(),E._crypto_pwhash_scryptsalsa208sha256_memlimit_max=()=>(E._crypto_pwhash_scryptsalsa208sha256_memlimit_max=T.pj)(),E._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=()=>(E._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=T.qj)(),E._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=()=>(E._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=T.rj)(),E._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=()=>(E._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=T.sj)(),E._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=()=>(E._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=T.tj)(),E._crypto_pwhash_scryptsalsa208sha256=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0)=>(E._crypto_pwhash_scryptsalsa208sha256=T.uj)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0),E._crypto_pwhash_scryptsalsa208sha256_str=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_pwhash_scryptsalsa208sha256_str=T.vj)(R,Z,tA,BA,dA,xA,WA),E._crypto_pwhash_scryptsalsa208sha256_str_verify=(R,Z,tA,BA)=>(E._crypto_pwhash_scryptsalsa208sha256_str_verify=T.wj)(R,Z,tA,BA),E._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=(R,Z,tA,BA)=>(E._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=T.xj)(R,Z,tA,BA),E._crypto_scalarmult_ed25519=(R,Z,tA)=>(E._crypto_scalarmult_ed25519=T.yj)(R,Z,tA),E._crypto_scalarmult_ed25519_noclamp=(R,Z,tA)=>(E._crypto_scalarmult_ed25519_noclamp=T.zj)(R,Z,tA),E._crypto_scalarmult_ed25519_base=(R,Z)=>(E._crypto_scalarmult_ed25519_base=T.Aj)(R,Z),E._crypto_scalarmult_ed25519_base_noclamp=(R,Z)=>(E._crypto_scalarmult_ed25519_base_noclamp=T.Bj)(R,Z),E._crypto_scalarmult_ed25519_bytes=()=>(E._crypto_scalarmult_ed25519_bytes=T.Cj)(),E._crypto_scalarmult_ed25519_scalarbytes=()=>(E._crypto_scalarmult_ed25519_scalarbytes=T.Dj)(),E._crypto_scalarmult_ristretto255=(R,Z,tA)=>(E._crypto_scalarmult_ristretto255=T.Ej)(R,Z,tA),E._crypto_scalarmult_ristretto255_base=(R,Z)=>(E._crypto_scalarmult_ristretto255_base=T.Fj)(R,Z),E._crypto_scalarmult_ristretto255_bytes=()=>(E._crypto_scalarmult_ristretto255_bytes=T.Gj)(),E._crypto_scalarmult_ristretto255_scalarbytes=()=>(E._crypto_scalarmult_ristretto255_scalarbytes=T.Hj)(),E._crypto_secretbox_xchacha20poly1305_detached=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_secretbox_xchacha20poly1305_detached=T.Ij)(R,Z,tA,BA,dA,xA,WA),E._crypto_secretbox_xchacha20poly1305_easy=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_xchacha20poly1305_easy=T.Jj)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_xchacha20poly1305_open_detached=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_secretbox_xchacha20poly1305_open_detached=T.Kj)(R,Z,tA,BA,dA,xA,WA),E._crypto_secretbox_xchacha20poly1305_open_easy=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_xchacha20poly1305_open_easy=T.Lj)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_xchacha20poly1305_keybytes=()=>(E._crypto_secretbox_xchacha20poly1305_keybytes=T.Mj)(),E._crypto_secretbox_xchacha20poly1305_noncebytes=()=>(E._crypto_secretbox_xchacha20poly1305_noncebytes=T.Nj)(),E._crypto_secretbox_xchacha20poly1305_macbytes=()=>(E._crypto_secretbox_xchacha20poly1305_macbytes=T.Oj)(),E._crypto_secretbox_xchacha20poly1305_messagebytes_max=()=>(E._crypto_secretbox_xchacha20poly1305_messagebytes_max=T.Pj)(),E._crypto_shorthash_siphashx24_bytes=()=>(E._crypto_shorthash_siphashx24_bytes=T.Qj)(),E._crypto_shorthash_siphashx24_keybytes=()=>(E._crypto_shorthash_siphashx24_keybytes=T.Rj)(),E._crypto_shorthash_siphashx24=(R,Z,tA,BA,dA)=>(E._crypto_shorthash_siphashx24=T.Sj)(R,Z,tA,BA,dA),E._crypto_stream_salsa2012=(R,Z,tA,BA,dA)=>(E._crypto_stream_salsa2012=T.Tj)(R,Z,tA,BA,dA),E._crypto_stream_salsa2012_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_salsa2012_xor=T.Uj)(R,Z,tA,BA,dA,xA),E._crypto_stream_salsa2012_keybytes=()=>(E._crypto_stream_salsa2012_keybytes=T.Vj)(),E._crypto_stream_salsa2012_noncebytes=()=>(E._crypto_stream_salsa2012_noncebytes=T.Wj)(),E._crypto_stream_salsa2012_messagebytes_max=()=>(E._crypto_stream_salsa2012_messagebytes_max=T.Xj)(),E._crypto_stream_salsa2012_keygen=R=>(E._crypto_stream_salsa2012_keygen=T.Yj)(R),E._crypto_stream_salsa208=(R,Z,tA,BA,dA)=>(E._crypto_stream_salsa208=T.Zj)(R,Z,tA,BA,dA),E._crypto_stream_salsa208_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_salsa208_xor=T._j)(R,Z,tA,BA,dA,xA),E._crypto_stream_salsa208_keybytes=()=>(E._crypto_stream_salsa208_keybytes=T.$j)(),E._crypto_stream_salsa208_noncebytes=()=>(E._crypto_stream_salsa208_noncebytes=T.ak)(),E._crypto_stream_salsa208_messagebytes_max=()=>(E._crypto_stream_salsa208_messagebytes_max=T.bk)(),E._crypto_stream_salsa208_keygen=R=>(E._crypto_stream_salsa208_keygen=T.ck)(R),E._crypto_stream_xchacha20_keybytes=()=>(E._crypto_stream_xchacha20_keybytes=T.dk)(),E._crypto_stream_xchacha20_noncebytes=()=>(E._crypto_stream_xchacha20_noncebytes=T.ek)(),E._crypto_stream_xchacha20_messagebytes_max=()=>(E._crypto_stream_xchacha20_messagebytes_max=T.fk)(),E._crypto_stream_xchacha20=(R,Z,tA,BA,dA)=>(E._crypto_stream_xchacha20=T.gk)(R,Z,tA,BA,dA),E._crypto_stream_xchacha20_xor_ic=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_stream_xchacha20_xor_ic=T.hk)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_stream_xchacha20_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_xchacha20_xor=T.ik)(R,Z,tA,BA,dA,xA),E._crypto_stream_xchacha20_keygen=R=>(E._crypto_stream_xchacha20_keygen=T.jk)(R),E._malloc=R=>(E._malloc=T.kk)(R),E._free=R=>(E._free=T.lk)(R),E.setValue=function(R,Z,tA="i8"){switch(tA.endsWith("*")&&(tA="*"),tA){case"i1":case"i8":gC[R]=Z;break;case"i16":CC[R>>1]=Z;break;case"i32":Fg[R>>2]=Z;break;case"i64":P1("to do setValue(i64) use WASM_BIGINT");case"float":eC[R>>2]=Z;break;case"double":mg[R>>3]=Z;break;case"*":Ng[R>>2]=Z;break;default:P1(`invalid type for setValue: ${tA}`)}},E.getValue=function(R,Z="i8"){switch(Z.endsWith("*")&&(Z="*"),Z){case"i1":case"i8":return gC[R];case"i16":return CC[R>>1];case"i32":return Fg[R>>2];case"i64":P1("to do getValue(i64) use WASM_BIGINT");case"float":return eC[R>>2];case"double":return mg[R>>3];case"*":return Ng[R>>2];default:P1(`invalid type for getValue: ${Z}`)}},E.UTF8ToString=Kg,og=function R(){Gg||jC(),Gg||(og=R)},E.preInit)for(typeof E.preInit=="function"&&(E.preInit=[E.preInit]);E.preInit.length>0;)E.preInit.pop()();jC()})};var n2,f=f!==void 0?f:{},K2=typeof window=="object",c2=typeof importScripts=="function",u2=typeof w1=="object"&&typeof w1.versions=="object"&&typeof w1.versions.node=="string",TA=Object.assign({},f),S2="";if(u2){var LA=Qa,RA=ya;S2=__dirname+"/",n2=L=>(L=o1(L)?new URL(L):RA.normalize(L),LA.readFileSync(L)),!f.thisProgram&&w1.argv.length>1&&w1.argv[1].replace(/\\/g,"/"),w1.argv.slice(2),oA.exports=f}else(K2||c2)&&(c2?S2=self.location.href:typeof document<"u"&&document.currentScript&&(S2=document.currentScript.src),S2=S2.startsWith("blob:")?"":S2.substr(0,S2.replace(/[?#].*/,"").lastIndexOf("/")+1),c2&&(n2=L=>{var X=new XMLHttpRequest;return X.open("GET",L,!1),X.responseType="arraybuffer",X.send(null),new Uint8Array(X.response)}));f.print;var IA,_2,JA=f.printErr||void 0;Object.assign(f,TA),TA=null,f.arguments&&f.arguments,f.thisProgram&&f.thisProgram,f.quit&&f.quit,f.wasmBinary&&(IA=f.wasmBinary);var e0,SA,z0,yA,x1,W1,Z1,o0=!1;function J0(){var L=_2.buffer;f.HEAP8=e0=new Int8Array(L),f.HEAP16=z0=new Int16Array(L),f.HEAPU8=SA=new Uint8Array(L),f.HEAPU16=new Uint16Array(L),f.HEAP32=yA=new Int32Array(L),f.HEAPU32=x1=new Uint32Array(L),f.HEAPF32=W1=new Float32Array(L),f.HEAPF64=Z1=new Float64Array(L)}var m0=[],d0=[],U0=[],Z0=0,I2=null;function t2(L){throw f.onAbort?.(L),JA(L="Aborted("+L+")"),o0=!0,L+=". Build with -sASSERTIONS for more info.",new WebAssembly.RuntimeError(L)}var y2,E2="data:application/octet-stream;base64,",o1=L=>L.startsWith("file://");function n1(L){return Promise.resolve().then(()=>function(X){if(X==y2&&IA)return new Uint8Array(IA);var eA=function(E){if((bA=>bA.startsWith(E2))(E))return function(bA){if(u2!==void 0&&u2){var UA=Dg.from(bA,"base64");return new Uint8Array(UA.buffer,UA.byteOffset,UA.length)}for(var r0=atob(bA),S0=new Uint8Array(r0.length),v0=0;v0f.getRandomValue(),36836:()=>{if(f.getRandomValue===void 0)try{var L=typeof window=="object"?window:self,X=L.crypto!==void 0?L.crypto:L.msCrypto;X=X===void 0?E:X;var eA=function(){var UA=new Uint32Array(1);return X.getRandomValues(UA),UA[0]>>>0};eA(),f.getRandomValue=eA}catch{try{var E=ha(),bA=function(){var r0=E.randomBytes(4);return(r0[0]<<24|r0[1]<<16|r0[2]<<8|r0[3])>>>0};bA(),f.getRandomValue=bA}catch{throw"No secure random number generator found"}}}},Zg=L=>{for(;L.length>0;)L.shift()(f)};f.noExitRuntime;var ug,HC=typeof TextDecoder<"u"?new TextDecoder:void 0,dg=(L,X)=>L?((eA,E,bA)=>{for(var UA=E+bA,r0=E;eA[r0]&&!(r0>=UA);)++r0;if(r0-E>16&&eA.buffer&&HC)return HC.decode(eA.subarray(E,r0));for(var S0="";E>10,56320|1023&j2)}}else S0+=String.fromCharCode((31&v0)<<6|q0)}else S0+=String.fromCharCode(v0)}return S0})(SA,L,X):"",$g=[],ct=L=>{var X=(L-_2.buffer.byteLength+65535)/65536;try{return _2.grow(X),J0(),1}catch{}},It={b:(L,X,eA,E)=>{t2(`Assertion failed: ${dg(L)}, at: `+[X?dg(X):"unknown filename",eA,E?dg(E):"unknown function"])},c:()=>{t2("")},d:(L,X,eA)=>SA.copyWithin(L,X,X+eA),a:(L,X,eA)=>((E,bA,UA)=>{var r0=((S0,v0)=>{var q0;for($g.length=0;q0=SA[S0++];){var g2=q0!=105;v0+=(g2&=q0!=112)&&v0%8?4:0,$g.push(q0==112?x1[v0>>2]:q0==105?yA[v0>>2]:Z1[v0>>3]),v0+=g2?8:4}return $g})(bA,UA);return R1[E](...r0)})(L,X,eA),e:L=>{var X=SA.length,eA=2147483648;if((L>>>=0)>eA)return!1;for(var E,bA=1;bA<=4;bA*=2){var UA=X*(1+.2/bA);UA=Math.min(UA,L+100663296);var r0=Math.min(eA,(E=Math.max(L,UA))+(65536-E%65536)%65536);if(ct(r0))return!0}return!1}},j=function(){var L,X={a:It};function eA(E,bA){return j=E.exports,_2=j.f,J0(),function(UA){if(Z0--,f.monitorRunDependencies?.(Z0),Z0==0&&I2){var r0=I2;I2=null,r0()}}(),j}if(Z0++,f.monitorRunDependencies?.(Z0),f.instantiateWasm)try{return f.instantiateWasm(X,eA)}catch(E){return JA(`Module.instantiateWasm callback failed with error: ${E}`),!1}return y2||(y2="data:application/octet-stream;base64,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AkJmAFcCQ2YAEgJEZgCrAQJFZgCjAgJGZgCqAQJHZgCpAQJIZgBYAklmAFcCSmYACgJLZgAlAkxmAAoCTWYADQJOZgANAk9mACwCUGYAEgJRZgASAlJmAJ4DAlNmAJ0DAlRmAJwDAlVmAKICAlZmAKECAldmAJsDAlhmAJoDAllmACUCWmYACgJfZgCZAwIkZgAcAmFnAFECYmcAOQJjZwBkAmRnACcCZWcADQJmZwDoAgJnZwChAQJoZwDzAQJpZwAnAmpnAA0Ca2cAoQECbGcAUAJtZwAWAm5nAAoCb2cACgJwZwAWAnFnAMoBAnJnAIADAnNnAP8CAnRnAP4CAnVnAKABAnZnAJ8BAndnAJ4BAnhnAJ0BAnlnAP0CAnpnAHECQWcA/AICQmcA+wICQ2cAUAJEZwAWAkVnAAoCRmcACgJHZwAWAkhnAMoBAklnAIIDAkpnAIEDAktnAMkBAkxnAHECTWcAyAECTmcAxwECT2cAzAECUGcAywECUWcAhwMCUmcAhgMCU2cAnQECVGcAnwECVWcAngECVmcAoAECV2cACgJYZwAnAllnABQCWmcACgJfZwDrAQIkZwAUAmFoAJ8CAmJoAJ4CAmNoAJ0CAmRoAJwCAmVoAJsCAmZoAJoCAmdoABICaGgAEgJpaAAKAmpoACUCa2gAFAJsaACIAwJtaACcAQJuaACbAQJvaAASAnBoAAoCcWgAJwJyaAAUAnNoAJgCAnRoAJcCAnVoAJYCAnZoABICd2gAnAECeGgAlQICeWgAmwECemgACgJBaAAlAkJoABQCQ2gAEgJEaAANAkVoAAoCRmgAFgJHaAA3AkhoAD8CSWgAsQECSmgAvAMCS2gAuwMCTGgA6AECTWgAugMCTmgAGQJPaAC5AwJQaAAKAlFoALgDAlJoAJQCAlNoAJIDAlRoAJEDAlVoAJADAlZoAIIBAldoAIEBAlhoAMEDAlloALQDAlpoAKsDAl9oANgCAiRoANcCAmFpADkCYmkAHAJjaQB6AmRpAEECZWkAiQMCZmkAmgECZ2kAkwICaGkAkgICaWkAkAICamkAmQECa2kAjwICbGkAmAECbWkAjgICbmkACgJvaQAKAnBpAAoCcWkACgJyaQAlAnNpAA0CdGkALAJ1aQCNAgJ2aQCMAgJ3aQDBAQJ4aQCwAwJ5aQCvAwJ6aQCuAwJBaQCt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iEL///8AgyIIIAEoAA8iO0EGdkH///8Aca0iBn58IAEoAAoiPEEYdq0gATEADkIIhoQgATEAD0IQhoRCAYhC////AIMiDCACKAAKIj1BBHZB////AHGtIg1+fCA5QRh2rSACMQAGQgiGhCACMQAHQhCGhEICiEL///8AgyIOIDtBGHatIAExABNCCIaEIAExABRCEIaEQgOIIgl+fCACKAAPIjlBBnZB////AHGtIgcgATUAB0IHiEL///8AgyIPfnwgPUEYdq0gAjEADkIIhoQgAjEAD0IQhoRCAYhC////AIMiCiA8QQR2Qf///wBxrSIQfnwgOUEYdq0gAjEAE0IIhoQgAjEAFEIQhoRCA4giESABKAACIjlBGHatIAExAAZCCIaEIAExAAdCEIaEQgKIQv///wCDIhJ+fCACMwAVIAIxABdCEIZCgID8AIOEIhUgOUEFdkH///8Aca0iFn58IAEzAAAgATEAAkIQhkKAgPwAg4QiFyACKAAXIjlBBXZB////AHGtIhh+fCAEIAV+IAkgC358IAggDH58IA0gEH58IAYgDn58IAcgEn58IAogD358IBEgFn58IBUgF358Ih1CgIBAfSIeQhWIfCITIBNCgIBAfSIgQoCAgH+DfSA5QRh2rSACMQAbQgiGhCACMQAcQhCGhEICiEL///8AgyITIAEoABxBB3atIhl+IDpBGHatIAExABtCCIaEIAExABxCEIaEQgKIQv///wCDIhogAigAHEEHdq0iG358IAMgG34gGCAZfnwgEyAafnwiIUKAgEB9Ih9CFYh8IiIgIkKAgEB9IhxCgICA/////wCDfSIiQpPYKH58ICEgH0KAgID/////AIN9IBUgGX4gGCAafnwgBCAbfnwgAyATfnwgAyAYfiARIBl+fCAVIBp+fCAJIBt+fCAEIBN+fCIjQoCAQH0iFEIViHwiH0KAgEB9IiRCFYh8IiFCmNocfnwgHyAkQoCAgH+DfSIfQuf2J358ICMgFEKAgIB/g30gESAafiAHIBl+fCAEIBh+fCADIBV+fCAGIBt+fCAJIBN+fCAKIBl+IAcgGn58IAMgEX58IAkgGH58IAQgFX58IAwgG358IAYgE358IhRCgIBAfSIkQhWIfCIlQoCAQH0iJkIViHwiI0LTjEN+fCAdIAUgCX4gBiALfnwgCCAQfnwgDSAP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SQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAvyAgICfwF+AkAgAkUNACAAIAE6AAAgACACaiIDQQFrIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0EDayABOgAAIANBAmsgAToAACACQQdJDQAgACABOgADIANBBGsgAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAsEAEEQCxkBAX9BiKoCKAIAIgAEQCAAERYACxCLAQAL1AECBX8CfgJ/IAJCAFIEQCAAQeABaiEHIABB4ABqIQMgACgA4AIhBANAIAMgBGohBkGAAiAEayIFrSIIIAJaBEAgBiABIAKnIgEQCxogACAAKADgAiABajYA4AJBAAwDCyAGIAEgBRALGiAAIAAoAOACIAVqNgDgAiAAIAApAEAiCUKAAXw3AEAgACAAKQBIIAlC/35WrXw3AEggACADEFIgAyAHQYABEAsaIAAgACgA4AJBgAFrIgQ2AOACIAEgBWohASACIAh9IgJCAFINAAsLQQALC58EARN/IAEoAgQhAiABKAIsIQMgASgCCCEEIAEoAjAhBSABKAIMIQYgASgCNCEHIAEoAhAhCCABKAI4IQkgASgCFCEKIAEoAjwhCyABKAIYIQwgAUFAayINKAIAIQ4gASgCHCEPIAEoAkQhECABKAIgIREgASgCSCESIAEoAiQhEyABKAJMIRQgACABKAIAIAEoAihqNgIAIAAgEyAUajYCJCAAIBEgEmo2AiAgACAPIBBqNgIcIAAgDCAOajYCGCAAIAogC2o2AhQgACAIIAlqNgIQIAAgBiAHajYCDCAAIAQgBWo2AgggACACIANqNgIEIAEoAgQhAiABKAIsIQMgASgCCCEEIAEoAjAhBSABKAIMIQYgASgCNCEHIAEoAhAhCCABKAI4IQkgASgCFCEKIAEoAjwhCyABKAIYIQwgDSgCACENIAEoAhwhDiABKAJEIQ8gASgCICEQIAEoAkghESABKAIAIRIgASgCKCETIAAgASgCTCABKAIkazYCTCAAIBEgEGs2AkggACAPIA5rNgJEIABBQGsgDSAMazYCACAAIAsgCms2AjwgACAJIAhrNgI4IAAgByAGazYCNCAAIAUgBGs2AjAgACADIAJrNgIsIAAgEyASazYCKCAAIAEpAlA3AlAgACABKQJYNwJYIAAgASkCYDcCYCAAIAEpAmg3AmggACABKQJwNwJwIABB+ABqIAFB+ABqQZANEAYL6AQBCX8gACABKAIgIgUgASgCHCIGIAEoAhgiByABKAIUIgggASgCECIJIAEoAgwiCiABKAIIIgQgASgCBCIDIAEoAgAiAiABKAIkIgFBE2xBgICACGpBGXZqQRp1akEZdWpBGnVqQRl1akEadWpBGXVqQRp1akEZdWpBGnUgAWpBGXVBE2wgAmoiAjoAACAAIAJBEHY6AAIgACACQQh2OgABIAAgAyACQRp1aiIDQQ52OgAFIAAgA0EGdjoABCAAIAJBGHZBA3EgA0ECdHI6AAMgACAEIANBGXVqIgJBDXY6AAggACACQQV2OgAHIAAgAkEDdCADQYCAgA5xQRZ2cjoABiAAIAogAkEadWoiBEELdjoACyAAIARBA3Y6AAogACAEQQV0IAJBgICAH3FBFXZyOgAJIAAgCSAEQRl1aiICQRJ2OgAPIAAgAkEKdjoADiAAIAJBAnY6AA0gACAIIAJBGnVqIgM6ABAgACACQQZ0IARBgIDgD3FBE3ZyOgAMIAAgA0EQdjoAEiAAIANBCHY6ABEgACAHIANBGXVqIgJBD3Y6ABUgACACQQd2OgAUIAAgA0EYdkEBcSACQQF0cjoAEyAAIAYgAkEadWoiA0ENdjoAGCAAIANBBXY6ABcgACADQQN0IAJBgICAHHFBF3ZyOgAWIAAgBSADQRl1aiICQQx2OgAbIAAgAkEEdjoAGiAAIAJBBHQgA0GAgIAPcUEVdnI6ABkgACABIAJBGnVqIgFBCnY6AB4gACABQQJ2OgAdIAAgAUGAgPAPcUESdjoAHyAAIAFBBnQgAkGAgMAfcUEUdnI6ABwLCAAgAEEgEBkL8AkBHX8gASgCBCEEIAEoAiwhAyABKAIIIQUgASgCMCEGIAEoAgwhByABKAI0IQggASgCECEJIAEoAjghCiABKAIUIQsgASgCPCEMIAEoAhghDSABQUBrIg4oAgAhDyABKAIcIRAgASgCRCERIAEoAiAhEiABKAJIIRMgASgCJCEUIAEoAkwhFSAAIAEoAgAgASgCKGo2AgAgACAUIBVqNgIkIAAgEiATajYCICAAIBAgEWo2AhwgACANIA9qNgIYIAAgCyAMajYCFCAAIAkgCmo2AhAgACAHIAhqNgIMIAAgBSAGajYCCCAAIAMgBGo2AgQgASgCBCEDIAEoAiwhBSABKAIIIQYgASgCMCEHIAEoAgwhCCABKAI0IQkgASgCECEKIAEoAjghCyABKAIUIQwgASgCPCENIAEoAhghDyAOKAIAIQ4gASgCHCEEIAEoAkQhECABKAIgIREgASgCSCESIAEoAgAhEyABKAIoIRQgACABKAJMIAEoAiRrNgJMIAAgEiARazYCSCAAIBAgBGs2AkQgAEFAayIEIA4gD2s2AgAgACANIAxrNgI8IAAgCyAKazYCOCAAIAkgCGs2AjQgACAHIAZrNgIwIAAgBSADazYCLCAAIBQgE2s2AiggAEHQAGogACACEAYgAEEoaiIDIAMgAkEoahAGIABB+ABqIAJB+ABqIAFB+ABqEAYgACABQdAAaiACQdAAahAGIAAoAgQhFCAAKAIIIRUgACgCDCEWIAAoAhAhFyAAKAIUIRggACgCGCEZIAAoAhwhGiAAKAIgIRsgACgCJCEcIAAoAiwhASAAKAJUIQIgACgCMCEDIAAoAlghBSAAKAI0IQYgACgCXCEHIAAoAjghCCAAKAJgIQkgACgCPCEKIAAoAmQhCyAEKAIAIQwgACgCaCENIAAoAkQhDiAAKAJsIQ8gACgCSCEQIAAoAnAhESAAKAIAIR0gACgCKCESIAAoAlAhEyAAIAAoAkwiHiAAKAJ0Ih9qNgJMIAAgECARajYCSCAAIA4gD2o2AkQgBCAMIA1qNgIAIAAgCiALajYCPCAAIAggCWo2AjggACAGIAdqNgI0IAAgAyAFajYCMCAAIAEgAmo2AiwgACASIBNqNgIoIAAgHyAeazYCJCAAIBEgEGs2AiAgACAPIA5rNgIcIAAgDSAMazYCGCAAIAsgCms2AhQgACAJIAhrNgIQIAAgByAGazYCDCAAIAUgA2s2AgggACACIAFrNgIEIAAgEyASazYCACAAIBxBAXQiASAAKAKcASICazYCnAEgACAbQQF0IgQgACgCmAEiA2s2ApgBIAAgGkEBdCIFIAAoApQBIgZrNgKUASAAIBlBAXQiByAAKAKQASIIazYCkAEgACAYQQF0IgkgACgCjAEiCms2AowBIAAgF0EBdCILIAAoAogBIgxrNgKIASAAIBZBAXQiDSAAKAKEASIOazYChAEgACAVQQF0Ig8gACgCgAEiEGs2AoABIAAgFEEBdCIRIAAoAnwiEms2AnwgACAdQQF0IhMgACgCeCIUazYCeCAAIAMgBGo2AnAgACAFIAZqNgJsIAAgByAIajYCaCAAIAkgCmo2AmQgACALIAxqNgJgIAAgDSAOajYCXCAAIA8gEGo2AlggACARIBJqNgJUIAAgEyAUajYCUCAAIAEgAmo2AnQLBABBfwvuCwEHfwJAIABFDQAgAEEIayIDIABBBGsoAgAiAUF4cSIAaiEFAkAgAUEBcQ0AIAFBAnFFDQEgAyADKAIAIgFrIgNBhKYCKAIASQ0BIAAgAWohAAJAAkACQEGIpgIoAgAgA0cEQCADKAIMIQIgAUH/AU0EQCACIAMoAggiBEcNAkH0pQJB9KUCKAIAQX4gAUEDdndxNgIADAULIAMoAhghBiACIANHBEAgAygCCCIBIAI2AgwgAiABNgIIDAQLIAMoAhQiAQR/IANBFGoFIAMoAhAiAUUNAyADQRBqCyEEA0AgBCEHIAEiAkEUaiEEIAIoAhQiAQ0AIAJBEGohBCACKAIQIgENAAsgB0EANgIADAMLIAUoAgQiAUEDcUEDRw0DQfylAiAANgIAIAUgAUF+cTYCBCADIABBAXI2AgQgBSAANgIADwsgBCACNgIMIAIgBDYCCAwCC0EAIQILIAZFDQACQCADKAIcIgFBAnRBpKgCaiIEKAIAIANGBEAgBCACNgIAIAINAUH4pQJB+KUCKAIAQX4gAXdxNgIADAILIAZBEEEUIAYoAhAgA0YbaiACNgIAIAJFDQELIAIgBjYCGCADKAIQIgEEQCACIAE2AhAgASACNgIYCyADKAIUIgFFDQAgAiABNgIUIAEgAjYCGAsgAyAFTw0AIAUoAgQiAUEBcUUNAAJAAkACQAJAIAFBAnFFBEBBjKYCKAIAIAVGBEBBjKYCIAM2AgBBgKYCQYCmAigCACAAaiIANgIAIAMgAEEBcjYCBCADQYimAigCAEcNBkH8pQJBADYCAEGIpgJBADYCAA8LQYimAigCACAFRgRAQYimAiADNgIAQfylAkH8pQIoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgAUF4cSAAaiEAIAUoAgwhAiABQf8BTQRAIAUoAggiBCACRgRAQfSlAkH0pQIoAgBBfiABQQN2d3E2AgAMBQsgBCACNgIMIAIgBDYCCAwECyAFKAIYIQYgAiAFRwRAIAUoAggiASACNgIMIAIgATYCCAwDCyAFKAIUIgEEfyAFQRRqBSAFKAIQIgFFDQIgBUEQagshBANAIAQhByABIgJBFGohBCACKAIUIgENACACQRBqIQQgAigCECIBDQALIAdBADYCAAwCCyAFIAFBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAwDC0EAIQILIAZFDQACQCAFKAIcIgFBAnRBpKgCaiIEKAIAIAVGBEAgBCACNgIAIAINAUH4pQJB+KUCKAIAQX4gAXdxNgIADAILIAZBEEEUIAYoAhAgBUYbaiACNgIAIAJFDQELIAIgBjYCGCAFKAIQIgEEQCACIAE2AhAgASACNgIYCyAFKAIUIgFFDQAgAiABNgIUIAEgAjYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADQYimAigCAEcNAEH8pQIgADYCAA8LIABB/wFNBEAgAEF4cUGcpgJqIQECf0H0pQIoAgAiBEEBIABBA3Z0IgBxRQRAQfSlAiAAIARyNgIAIAEMAQsgASgCCAshACABIAM2AgggACADNgIMIAMgATYCDCADIAA2AggPC0EfIQIgAEH///8HTQRAIABBJiAAQQh2ZyIBa3ZBAXEgAUEBdGtBPmohAgsgAyACNgIcIANCADcCECACQQJ0QaSoAmohBwJ/AkACf0H4pQIoAgAiAUEBIAJ0IgRxRQRAQfilAiABIARyNgIAQRghAiAHIQRBCAwBCyAAQRkgAkEBdmtBACACQR9HG3QhAiAHKAIAIQQDQCAEIgEoAgRBeHEgAEYNAiACQR12IQQgAkEBdCECIAEgBEEEcWpBEGoiBygCACIEDQALQRghAiABIQRBCAshACADIgEMAQsgASgCCCIEIAM2AgxBCCECIAFBCGohB0EYIQBBAAshBSAHIAM2AgAgAiADaiAENgIAIAMgATYCDCAAIANqIAU2AgBBlKYCQZSmAigCAEEBayIAQX8gABs2AgALCwUAQcAAC4kGAgd+A38jAEHABWsiCyQAAkAgAlANACAAIAApA0giAyACQgOGfCIENwNIIAAgACkDQCADIARWrXwgAkI9iHw3A0AgAEHQAGohCkKAASADQgOIQv8AgyIEfSIIIAJYBEBCACEDIARC/wCFQgNaBEAgCEL8AYMhBwNAIAogAyAEfKdqIAEgA6dqLQAAOgAAIAogA0IBhCIJIAR8p2ogASAJp2otAAA6AAAgCiADQgKEIgkgBHynaiABIAmnai0AADoAACAKIANCA4QiCSAEfKdqIAEgCadqLQAAOgAAIANCBHwhAyAFQgR8IgUgB1INAAsLIAhCA4MiBUIAUgRAA0AgCiADIAR8p2ogASADp2otAAA6AAAgA0IBfCEDIAZCAXwiBiAFUg0ACwsgACAKIAsgC0GABWoiDBBlIAEgCKdqIQEgAiAIfSICQv8AVgRAA0AgACABIAsgDBBlIAFBgAFqIQEgAkKAAX0iAkL/AFYNAAsLAkAgAlANACACQgODIQRCACEGQgAhAyACQgRaBEAgAkL8AIMhBUIAIQIDQCAKIAOnIgBqIAAgAWotAAA6AAAgCiAAQQFyIgxqIAEgDGotAAA6AAAgCiAAQQJyIgxqIAEgDGotAAA6AAAgCiAAQQNyIgBqIAAgAWotAAA6AAAgA0IEfCEDIAJCBHwiAiAFUg0ACwsgBFANAANAIAogA6ciAGogACABai0AADoAACADQgF8IQMgBkIBfCIGIARSDQALCyALQcAFEAkMAQtCACEDIAJCBFoEQCACQnyDIQgDQCAKIAMgBHynaiABIAOnai0AADoAACAKIANCAYQiByAEfKdqIAEgB6dqLQAAOgAAIAogA0IChCIHIAR8p2ogASAHp2otAAA6AAAgCiADQgOEIgcgBHynaiABIAenai0AADoAACADQgR8IQMgBUIEfCIFIAhSDQALCyACQgODIgJQDQADQCAKIAMgBHynaiABIAOnai0AADoAACADQgF8IQMgBkIBfCIGIAJSDQALCyALQcAFaiQAQQALgwgBH38jAEEwayICJAAgACABEAUgAEHQAGogAUEoahAFIABB+ABqIAFB0ABqEJIBIAEoAiwhAyABKAIEIQQgASgCMCEFIAEoAgghBiABKAI0IQcgASgCDCEIIAEoAjghCSABKAIQIQogASgCPCELIAEoAhQhDCABQUBrKAIAIQ0gASgCGCEOIAEoAkQhDyABKAIcIRAgASgCSCERIAEoAiAhEiABKAIoIRMgASgCACEUIAAgASgCTCABKAIkajYCTCAAIBEgEmo2AkggACAPIBBqNgJEIABBQGsiFSANIA5qNgIAIAAgCyAMajYCPCAAIAkgCmo2AjggACAHIAhqNgI0IAAgBSAGajYCMCAAIAMgBGo2AiwgACATIBRqNgIoIAIgAEEoahAFIAAoAgQhASAAKAJUIQMgACgCCCEEIAAoAlghBSAAKAIMIQYgACgCXCEHIAAoAhAhCCAAKAJgIQkgACgCFCEKIAAoAmQhCyAAKAIYIQwgACgCaCENIAAoAhwhDiAAKAJsIQ8gACgCICEQIAAoAnAhESAAKAIAIRIgACgCUCETIAAgACgCdCIUIAAoAiQiFmsiFzYCdCAAIBEgEGsiGDYCcCAAIA8gDmsiGTYCbCAAIA0gDGsiGjYCaCAAIAsgCmsiGzYCZCAAIAkgCGsiHDYCYCAAIAcgBmsiHTYCXCAAIAUgBGsiHjYCWCAAIAMgAWsiHzYCVCAAIBMgEmsiIDYCUCAAIBQgFmoiFDYCTCAAIBAgEWoiEDYCSCAAIA4gD2oiDjYCRCAVIAwgDWoiDDYCACAAIAogC2oiCjYCPCAAIAggCWoiCDYCOCAAIAYgB2oiBjYCNCAAIAQgBWoiBDYCMCAAIAEgA2oiATYCLCAAIBIgE2oiAzYCKCACKAIAIQUgAigCBCEHIAIoAgghCSACKAIMIQsgAigCECENIAIoAhQhDyACKAIYIREgAigCHCESIAIoAiAhEyAAIAIoAiQgFGs2AiQgACATIBBrNgIgIAAgEiAOazYCHCAAIBEgDGs2AhggACAPIAprNgIUIAAgDSAIazYCECAAIAsgBms2AgwgACAJIARrNgIIIAAgByABazYCBCAAIAUgA2s2AgAgACgCfCEBIAAoAoABIQMgACgChAEhBCAAKAKIASEFIAAoAowBIQYgACgCkAEhByAAKAKUASEIIAAoApgBIQkgACgCeCEKIAAgACgCnAEgF2s2ApwBIAAgCSAYazYCmAEgACAIIBlrNgKUASAAIAcgGms2ApABIAAgBiAbazYCjAEgACAFIBxrNgKIASAAIAQgHWs2AoQBIAAgAyAeazYCgAEgACABIB9rNgJ8IAAgCiAgazYCeCACQTBqJAALRAECfyMAQRBrIgIkACABBEADQCACQQA6AA8gACADakHAnwIgAkEPakEAEAA6AAAgA0EBaiIDIAFHDQALCyACQRBqJAALxwEBBX8jAEEQayICQQA6AA8CQCABRQ0AIAFBBE8EQCABQXxxIQYDQCACIAAgA2oiBC0AACACLQAPcjoADyACIAQtAAEgAi0AD3I6AA8gAiAELQACIAItAA9yOgAPIAIgBC0AAyACLQAPcjoADyADQQRqIQMgBUEEaiIFIAZHDQALCyABQQNxIgRFDQBBACEBA0AgAiAAIANqLQAAIAItAA9yOgAPIANBAWohAyABQQFqIgEgBEcNAAsLIAItAA9BAWtBCHZBAXELjgUBEX8CfyADRQRAQbLaiMsHIQZB7siBmQMhB0Hl8MGLBiEEQfTKgdkGDAELIAMoAAghBiADKAAEIQcgAygAACEEIAMoAAwLIQ8gASgADCEFIAEoAAghDCABKAAEIQggAigAHCEKIAIoABghCyACKAAUIRAgAigAECEOIAIoAAwhAyACKAAIIQ0gAigABCEJIAEoAAAhASACKAAAIQIDQCACIAEgAiAEaiICc0EQdyIBIA5qIgRzQQx3Ig4gAmoiESABc0EIdyIBIARqIgQgDnNBB3ciAiADIAUgAyAPaiIDc0EQdyIFIApqIgpzQQx3Ig4gA2oiA2oiDyANIAwgBiANaiIGc0EQdyIMIAtqIg1zQQx3IgsgBmoiBiAMc0EIdyITc0EQdyIMIAkgCCAHIAlqIgdzQRB3IgggEGoiCXNBDHciFCAHaiIHIAhzQQh3IgggCWoiCWoiECACc0EMdyICIA9qIg8gDHNBCHciDCAQaiIQIAJzQQd3IQIgBCADIAVzQQh3IgQgCmoiBSAOc0EHdyIDIAZqIgYgCHNBEHciCGoiCiADc0EMdyIDIAZqIgYgCHNBCHciCCAKaiIOIANzQQd3IQMgBSABIA0gE2oiBSALc0EHdyIBIAdqIgdzQRB3Ig1qIgogAXNBDHciCyAHaiIHIA1zQQh3IgEgCmoiCiALc0EHdyENIAUgBCAJIBRzQQd3IgQgEWoiBXNBEHciCWoiCyAEc0EMdyIRIAVqIgQgCXNBCHciBSALaiILIBFzQQd3IQkgEkEBaiISQQpHDQALIAAgBDYAACAAIAU2ABwgACAMNgAYIAAgCDYAFCAAIAE2ABAgACAPNgAMIAAgBjYACCAAIAc2AARBAAsEAEEAC78IAgF+A38jAEHABWsiAyQAIAAgACgCSEEDdkH/AHEiBGpB0ABqIQUCQCAEQfAATwRAIAVB8JECQYABIARrEAsaIAAgAEHQAGoiBCADIANBgAVqEGUgBEEAQfAAEAwaDAELIAVB8JECQfAAIARrEAsaCyAAIAApA0AiAkI4hiACQoD+A4NCKIaEIAJCgID8B4NCGIYgAkKAgID4D4NCCIaEhCACQgiIQoCAgPgPgyACQhiIQoCA/AeDhCACQiiIQoD+A4MgAkI4iISEhDcAwAEgACAAKQNIIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQ3AMgBIAAgAEHQAGogAyADQYAFahBlIAEgACkDACICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISENwAAIAEgACkDCCICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISENwAIIAEgACkDECICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISENwAQIAEgACkDGCICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISENwAYIAEgACkDICICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISENwAgIAEgACkDKCICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISENwAoIAEgACkDMCICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISENwAwIAEgACkDOCICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISENwA4IANBwAUQCSAAQdABEAkgA0HABWokAEEAC8AoAQt/IwBBEGsiCiQAAkACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEH0pQIoAgAiBEEQIABBC2pB+ANxIABBC0kbIgZBA3YiAHYiAUEDcQRAAkAgAUF/c0EBcSAAaiICQQN0IgFBnKYCaiIAIAFBpKYCaigCACIBKAIIIgVGBEBB9KUCIARBfiACd3E2AgAMAQsgBSAANgIMIAAgBTYCCAsgAUEIaiEAIAEgAkEDdCICQQNyNgIEIAEgAmoiASABKAIEQQFyNgIEDAsLIAZB/KUCKAIAIghNDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIBQQN0IgBBnKYCaiICIABBpKYCaigCACIAKAIIIgVGBEBB9KUCIARBfiABd3EiBDYCAAwBCyAFIAI2AgwgAiAFNgIICyAAIAZBA3I2AgQgACAGaiIHIAFBA3QiASAGayIFQQFyNgIEIAAgAWogBTYCACAIBEAgCEF4cUGcpgJqIQFBiKYCKAIAIQICfyAEQQEgCEEDdnQiA3FFBEBB9KUCIAMgBHI2AgAgAQwBCyABKAIICyEDIAEgAjYCCCADIAI2AgwgAiABNgIMIAIgAzYCCAsgAEEIaiEAQYimAiAHNgIAQfylAiAFNgIADAsLQfilAigCACILRQ0BIAtoQQJ0QaSoAmooAgAiAigCBEF4cSAGayEDIAIhAQNAAkAgASgCECIARQRAIAEoAhQiAEUNAQsgACgCBEF4cSAGayIBIAMgASADSSIBGyEDIAAgAiABGyECIAAhAQwBCwsgAigCGCEJIAIgAigCDCIARwRAIAIoAggiASAANgIMIAAgATYCCAwKCyACKAIUIgEEfyACQRRqBSACKAIQIgFFDQMgAkEQagshBQNAIAUhByABIgBBFGohBSAAKAIUIgENACAAQRBqIQUgACgCECIBDQALIAdBADYCAAwJC0F/IQYgAEG/f0sNACAAQQtqIgFBeHEhBkH4pQIoAgAiB0UNAEEfIQhBACAGayEDIABB9P//B00EQCAGQSYgAUEIdmciAGt2QQFxIABBAXRrQT5qIQgLAkACQAJAIAhBAnRBpKgCaigCACIBRQRAQQAhAAwBC0EAIQAgBkEZIAhBAXZrQQAgCEEfRxt0IQIDQAJAIAEoAgRBeHEgBmsiBCADTw0AIAEhBSAEIgMNAEEAIQMgASEADAMLIAAgASgCFCIEIAQgASACQR12QQRxaigCECIBRhsgACAEGyEAIAJBAXQhAiABDQALCyAAIAVyRQRAQQAhBUECIAh0IgBBACAAa3IgB3EiAEUNAyAAaEECdEGkqAJqKAIAIQALIABFDQELA0AgACgCBEF4cSAGayICIANJIQEgAiADIAEbIQMgACAFIAEbIQUgACgCECIBBH8gAQUgACgCFAsiAA0ACwsgBUUNACADQfylAigCACAGa08NACAFKAIYIQggBSAFKAIMIgBHBEAgBSgCCCIBIAA2AgwgACABNgIIDAgLIAUoAhQiAQR/IAVBFGoFIAUoAhAiAUUNAyAFQRBqCyECA0AgAiEEIAEiAEEUaiECIAAoAhQiAQ0AIABBEGohAiAAKAIQIgENAAsgBEEANgIADAcLIAZB/KUCKAIAIgVNBEBBiKYCKAIAIQACQCAFIAZrIgFBEE8EQCAAIAZqIgIgAUEBcjYCBCAAIAVqIAE2AgAgACAGQQNyNgIEDAELIAAgBUEDcjYCBCAAIAVqIgEgASgCBEEBcjYCBEEAIQJBACEBC0H8pQIgATYCAEGIpgIgAjYCACAAQQhqIQAMCQsgBkGApgIoAgAiAkkEQEGApgIgAiAGayIBNgIAQYymAkGMpgIoAgAiACAGaiICNgIAIAIgAUEBcjYCBCAAIAZBA3I2AgQgAEEIaiEADAkLQQAhACAGQS9qIgMCf0HMqQIoAgAEQEHUqQIoAgAMAQtB2KkCQn83AgBB0KkCQoCggICAgAQ3AgBBzKkCIApBDGpBcHFB2KrVqgVzNgIAQeCpAkEANgIAQbCpAkEANgIAQYAgCyIBaiIEQQAgAWsiB3EiASAGTQ0IQaypAigCACIFBEBBpKkCKAIAIgggAWoiCSAITQ0JIAUgCUkNCQsCQEGwqQItAABBBHFFBEACQAJAAkACQEGMpgIoAgAiBQRAQbSpAiEAA0AgBSAAKAIAIghPBEAgCCAAKAIEaiAFSw0DCyAAKAIIIgANAAsLQQAQRSICQX9GDQMgASEEQdCpAigCACIAQQFrIgUgAnEEQCABIAJrIAIgBWpBACAAa3FqIQQLIAQgBk0NA0GsqQIoAgAiAARAQaSpAigCACIFIARqIgcgBU0NBCAAIAdJDQQLIAQQRSIAIAJHDQEMBQsgBCACayAHcSIEEEUiAiAAKAIAIAAoAgRqRg0BIAIhAAsgAEF/Rg0BIAZBMGogBE0EQCAAIQIMBAtB1KkCKAIAIgIgAyAEa2pBACACa3EiAhBFQX9GDQEgAiAEaiEEIAAhAgwDCyACQX9HDQILQbCpAkGwqQIoAgBBBHI2AgALIAEQRSECQQAQRSEAIAJBf0YNBSAAQX9GDQUgACACTQ0FIAAgAmsiBCAGQShqTQ0FC0GkqQJBpKkCKAIAIARqIgA2AgBBqKkCKAIAIABJBEBBqKkCIAA2AgALAkBBjKYCKAIAIgMEQEG0qQIhAANAIAIgACgCACIBIAAoAgQiBWpGDQIgACgCCCIADQALDAQLQYSmAigCACIAQQAgACACTRtFBEBBhKYCIAI2AgALQQAhAEG4qQIgBDYCAEG0qQIgAjYCAEGUpgJBfzYCAEGYpgJBzKkCKAIANgIAQcCpAkEANgIAA0AgAEEDdCIBQaSmAmogAUGcpgJqIgU2AgAgAUGopgJqIAU2AgAgAEEBaiIAQSBHDQALQYCmAiAEQShrIgBBeCACa0EHcSIBayIFNgIAQYymAiABIAJqIgE2AgAgASAFQQFyNgIEIAAgAmpBKDYCBEGQpgJB3KkCKAIANgIADAQLIAIgA00NAiABIANLDQIgACgCDEEIcQ0CIAAgBCAFajYCBEGMpgIgA0F4IANrQQdxIgBqIgE2AgBBgKYCQYCmAigCACAEaiICIABrIgA2AgAgASAAQQFyNgIEIAIgA2pBKDYCBEGQpgJB3KkCKAIANgIADAMLQQAhAAwGC0EAIQAMBAtBhKYCKAIAIAJLBEBBhKYCIAI2AgALIAIgBGohBUG0qQIhAAJAA0AgBSAAKAIAIgFHBEAgACgCCCIADQEMAgsLIAAtAAxBCHFFDQMLQbSpAiEAA0ACQCADIAAoAgAiAU8EQCABIAAoAgRqIgUgA0sNAQsgACgCCCEADAELC0GApgIgBEEoayIAQXggAmtBB3EiAWsiBzYCAEGMpgIgASACaiIBNgIAIAEgB0EBcjYCBCAAIAJqQSg2AgRBkKYCQdypAigCADYCACADIAVBJyAFa0EHcWpBL2siACAAIANBEGpJGyIBQRs2AgQgAUG8qQIpAgA3AhAgAUG0qQIpAgA3AghBvKkCIAFBCGo2AgBBuKkCIAQ2AgBBtKkCIAI2AgBBwKkCQQA2AgAgAUEYaiEAA0AgAEEHNgIEIABBCGogAEEEaiEAIAVJDQALIAEgA0YNACABIAEoAgRBfnE2AgQgAyABIANrIgJBAXI2AgQgASACNgIAAn8gAkH/AU0EQCACQXhxQZymAmohAAJ/QfSlAigCACIBQQEgAkEDdnQiAnFFBEBB9KUCIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgAzYCCCABIAM2AgxBDCECQQgMAQtBHyEAIAJB////B00EQCACQSYgAkEIdmciAGt2QQFxIABBAXRrQT5qIQALIAMgADYCHCADQgA3AhAgAEECdEGkqAJqIQECQAJAQfilAigCACIFQQEgAHQiBHFFBEBB+KUCIAQgBXI2AgAgASADNgIADAELIAJBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhBQNAIAUiASgCBEF4cSACRg0CIABBHXYhBSAAQQF0IQAgASAFQQRxaiIEKAIQIgUNAAsgBCADNgIQCyADIAE2AhhBCCECIAMiASEAQQwMAQsgASgCCCIAIAM2AgwgASADNgIIIAMgADYCCEEAIQBBGCECQQwLIANqIAE2AgAgAiADaiAANgIAC0GApgIoAgAiACAGTQ0AQYCmAiAAIAZrIgE2AgBBjKYCQYymAigCACIAIAZqIgI2AgAgAiABQQFyNgIEIAAgBkEDcjYCBCAAQQhqIQAMBAtB8KUCQTA2AgBBACEADAMLIAAgAjYCACAAIAAoAgQgBGo2AgQgAkF4IAJrQQdxaiIIIAZBA3I2AgQgAUF4IAFrQQdxaiIEIAYgCGoiA2shBwJAQYymAigCACAERgRAQYymAiADNgIAQYCmAkGApgIoAgAgB2oiADYCACADIABBAXI2AgQMAQtBiKYCKAIAIARGBEBBiKYCIAM2AgBB/KUCQfylAigCACAHaiIANgIAIAMgAEEBcjYCBCAAIANqIAA2AgAMAQsgBCgCBCIAQQNxQQFGBEAgAEF4cSEJIAQoAgwhAgJAIABB/wFNBEAgBCgCCCIBIAJGBEBB9KUCQfSlAigCAEF+IABBA3Z3cTYCAAwCCyABIAI2AgwgAiABNgIIDAELIAQoAhghBgJAIAIgBEcEQCAEKAIIIgAgAjYCDCACIAA2AggMAQsCQCAEKAIUIgAEfyAEQRRqBSAEKAIQIgBFDQEgBEEQagshAQNAIAEhBSAAIgJBFGohASAAKAIUIgANACACQRBqIQEgAigCECIADQALIAVBADYCAAwBC0EAIQILIAZFDQACQCAEKAIcIgBBAnRBpKgCaiIBKAIAIARGBEAgASACNgIAIAINAUH4pQJB+KUCKAIAQX4gAHdxNgIADAILIAZBEEEUIAYoAhAgBEYbaiACNgIAIAJFDQELIAIgBjYCGCAEKAIQIgAEQCACIAA2AhAgACACNgIYCyAEKAIUIgBFDQAgAiAANgIUIAAgAjYCGAsgByAJaiEHIAQgCWoiBCgCBCEACyAEIABBfnE2AgQgAyAHQQFyNgIEIAMgB2ogBzYCACAHQf8BTQRAIAdBeHFBnKYCaiEAAn9B9KUCKAIAIgFBASAHQQN2dCICcUUEQEH0pQIgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDCADIAA2AgwgAyABNgIIDAELQR8hAiAHQf///wdNBEAgB0EmIAdBCHZnIgBrdkEBcSAAQQF0a0E+aiECCyADIAI2AhwgA0IANwIQIAJBAnRBpKgCaiEAAkACQEH4pQIoAgAiAUEBIAJ0IgVxRQRAQfilAiABIAVyNgIAIAAgAzYCAAwBCyAHQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQEDQCABIgAoAgRBeHEgB0YNAiACQR12IQEgAkEBdCECIAAgAUEEcWoiBSgCECIBDQALIAUgAzYCEAsgAyAANgIYIAMgAzYCDCADIAM2AggMAQsgACgCCCIBIAM2AgwgACADNgIIIANBADYCGCADIAA2AgwgAyABNgIICyAIQQhqIQAMAgsCQCAIRQ0AAkAgBSgCHCIBQQJ0QaSoAmoiAigCACAFRgRAIAIgADYCACAADQFB+KUCIAdBfiABd3EiBzYCAAwCCyAIQRBBFCAIKAIQIAVGG2ogADYCACAARQ0BCyAAIAg2AhggBSgCECIBBEAgACABNgIQIAEgADYCGAsgBSgCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgA0EPTQRAIAUgAyAGaiIAQQNyNgIEIAAgBWoiACAAKAIEQQFyNgIEDAELIAUgBkEDcjYCBCAFIAZqIgQgA0EBcjYCBCADIARqIAM2AgAgA0H/AU0EQCADQXhxQZymAmohAAJ/QfSlAigCACIBQQEgA0EDdnQiAnFFBEBB9KUCIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgBDYCCCABIAQ2AgwgBCAANgIMIAQgATYCCAwBC0EfIQAgA0H///8HTQRAIANBJiADQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgBCAANgIcIARCADcCECAAQQJ0QaSoAmohAQJAAkAgB0EBIAB0IgJxRQRAQfilAiACIAdyNgIAIAEgBDYCACAEIAE2AhgMAQsgA0EZIABBAXZrQQAgAEEfRxt0IQAgASgCACEBA0AgASICKAIEQXhxIANGDQIgAEEddiEBIABBAXQhACACIAFBBHFqIgcoAhAiAQ0ACyAHIAQ2AhAgBCACNgIYCyAEIAQ2AgwgBCAENgIIDAELIAIoAggiACAENgIMIAIgBDYCCCAEQQA2AhggBCACNgIMIAQgADYCCAsgBUEIaiEADAELAkAgCUUNAAJAIAIoAhwiAUECdEGkqAJqIgUoAgAgAkYEQCAFIAA2AgAgAA0BQfilAiALQX4gAXdxNgIADAILIAlBEEEUIAkoAhAgAkYbaiAANgIAIABFDQELIAAgCTYCGCACKAIQIgEEQCAAIAE2AhAgASAANgIYCyACKAIUIgFFDQAgACABNgIUIAEgADYCGAsCQCADQQ9NBEAgAiADIAZqIgBBA3I2AgQgACACaiIAIAAoAgRBAXI2AgQMAQsgAiAGQQNyNgIEIAIgBmoiBSADQQFyNgIEIAMgBWogAzYCACAIBEAgCEF4cUGcpgJqIQBBiKYCKAIAIQECf0EBIAhBA3Z0IgcgBHFFBEBB9KUCIAQgB3I2AgAgAAwBCyAAKAIICyEEIAAgATYCCCAEIAE2AgwgASAANgIMIAEgBDYCCAtBiKYCIAU2AgBB/KUCIAM2AgALIAJBCGohAAsgCkEQaiQAIAALyAQBAn8jAEEQayIDJAAgA0EAOgAPQX8hBCAAIAEgAkGIlwIoAgARAwBFBEAgAyAALQAAIAMtAA9yOgAPIAMgAC0AASADLQAPcjoADyADIAAtAAIgAy0AD3I6AA8gAyAALQADIAMtAA9yOgAPIAMgAC0ABCADLQAPcjoADyADIAAtAAUgAy0AD3I6AA8gAyAALQAGIAMtAA9yOgAPIAMgAC0AByADLQAPcjoADyADIAAtAAggAy0AD3I6AA8gAyAALQAJIAMtAA9yOgAPIAMgAC0ACiADLQAPcjoADyADIAAtAAsgAy0AD3I6AA8gAyAALQAMIAMtAA9yOgAPIAMgAC0ADSADLQAPcjoADyADIAAtAA4gAy0AD3I6AA8gAyAALQAPIAMtAA9yOgAPIAMgAC0AECADLQAPcjoADyADIAAtABEgAy0AD3I6AA8gAyAALQASIAMtAA9yOgAPIAMgAC0AEyADLQAPcjoADyADIAAtABQgAy0AD3I6AA8gAyAALQAVIAMtAA9yOgAPIAMgAC0AFiADLQAPcjoADyADIAAtABcgAy0AD3I6AA8gAyAALQAYIAMtAA9yOgAPIAMgAC0AGSADLQAPcjoADyADIAAtABogAy0AD3I6AA8gAyAALQAbIAMtAA9yOgAPIAMgAC0AHCADLQAPcjoADyADIAAtAB0gAy0AD3I6AA8gAyAALQAeIAMtAA9yOgAPIAMgAC0AHyADLQAPcjoADyADLQAPQRd0QYCAgARrQR91IQQLIANBEGokACAEC30BA38CQAJAIAAiAUEDcUUNACABLQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQFBgIKECCACKAIAIgNrIANyQYCBgoR4cUGAgYKEeEYNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrCycAIAJBgAJPBEBB1gpB/wlB6wBB4wgQAQALIAAgASACQf8BcRCDAQv7AwECf0F/IQQCQCACQcAASw0AIANBwQBrQUBJDQACQCABQQAgAhtFBEAgA0H/AXEiAUHBAGtB/wFxQb8BTQRAEA4ACyAAQUBrQQBBpQIQDBogAEL5wvibkaOz8NsANwA4IABC6/qG2r+19sEfNwAwIABCn9j52cKR2oKbfzcAKCAAQtGFmu/6z5SH0QA3ACAgAELx7fT4paf9p6V/NwAYIABCq/DT9K/uvLc8NwAQIABCu86qptjQ67O7fzcACCAAIAGtQoiS95X/zPmE6gCFNwAADAELAn8gAkH/AXEhAiMAQYABayIFJAACQCADQf8BcSIDQcEAa0H/AXFBvwFNDQAgAUUNACACQcEAa0H/AXFBvwFNDQAgAEFAa0EAQaUCEAwaIABC+cL4m5Gjs/DbADcAOCAAQuv6htq/tfbBHzcAMCAAQp/Y+dnCkdqCm383ACggAELRhZrv+s+Uh9EANwAgIABC8e30+KWn/aelfzcAGCAAQqvw0/Sv7ry3PDcAECAAQrvOqqbY0Ouzu383AAggACADrSACrUIIhoRCiJL3lf/M+YTqAIU3AAAgAEHgAGogBUEAQYABEAwgASACEAsiAUGAARALGiAAIAAoAOACQYABajYA4AIgAUGAARAJIAFBgAFqJABBAAwBCxAOAAsNAQtBACEECyAECw0AIAAgASACECQaQQAL6AUCB34DfyMAQaACayILJAACQCACUA0AIAAgACkDICIDIAJCA4Z8NwMgIABBKGohCkLAACADQgOIQj+DIgR9IgggAlgEQEIAIQMgBEI/hUIDWgRAIAhC/ACDIQcDQCAKIAMgBHynaiABIAOnai0AADoAACAKIANCAYQiCSAEfKdqIAEgCadqLQAAOgAAIAogA0IChCIJIAR8p2ogASAJp2otAAA6AAAgCiADQgOEIgkgBHynaiABIAmnai0AADoAACADQgR8IQMgBUIEfCIFIAdSDQALCyAIQgODIgVCAFIEQANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIANCAXwhAyAGQgF8IgYgBVINAAsLIAAgCiALIAtBgAJqIgwQYiABIAinaiEBIAIgCH0iAkI/VgRAA0AgACABIAsgDBBiIAFBQGshASACQkB8IgJCP1YNAAsLAkAgAlANACACQgODIQRCACEGQgAhAyACQgRaBEAgAkI8gyEFQgAhAgNAIAogA6ciAGogACABai0AADoAACAKIABBAXIiDGogASAMai0AADoAACAKIABBAnIiDGogASAMai0AADoAACAKIABBA3IiAGogACABai0AADoAACADQgR8IQMgAkIEfCICIAVSDQALCyAEUA0AA0AgCiADpyIAaiAAIAFqLQAAOgAAIANCAXwhAyAGQgF8IgYgBFINAAsLIAtBoAIQCQwBC0IAIQMgAkIEWgRAIAJCfIMhCANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIAogA0IBhCIHIAR8p2ogASAHp2otAAA6AAAgCiADQgKEIgcgBHynaiABIAenai0AADoAACAKIANCA4QiByAEfKdqIAEgB6dqLQAAOgAAIANCBHwhAyAFQgR8IgUgCFINAAsLIAJCA4MiAlANAANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIANCAXwhAyAGQgF8IgYgAlINAAsLIAtBoAJqJABBAAsEAEEYCw0AIAAgASACEBcaQQALBABBCAv3EgIVfgN/IAAgACgALCIWQQV2Qf///wBxrSAAKAA8QQN2rSICQoOhVn4gADMAKiAAMQAsQhCGQoCA/ACDhHwiC0KAgEB9IghCFYd8IgFCg6FWfiAANQAxQgeIQv///wCDIgNC04xDfiAAKAAXIhdBGHatIAAxABtCCIaEIAAxABxCEIaEQgKIQv///wCDfCAAKAA0IhhBBHZB////AHGtIgRC5/YnfnwgFkEY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QbABaiQAC7sGAQl/IwBB4ABrIgMkACACQcEATwRAIAAQYxogACABIAKtECQaIAAgAxAtGkEgIQIgAyEBCyAAEGMaIANCtuzYsePGjZs2NwNYIANCtuzYsePGjZs2NwNQIANCtuzYsePGjZs2NwNIIANBQGsiCkK27Nix48aNmzY3AwAgA0K27Nix48aNmzY3AzggA0K27Nix48aNmzY3AzAgA0K27Nix48aNmzY3AyggA0K27Nix48aNmzY3AyACQCACRQ0AIAJBBE8EQCACQfwAcSEGA0AgA0EgaiILIARqIgUgBS0AACABIARqLQAAczoAACALIARBAXIiBWoiCCAILQAAIAEgBWotAABzOgAAIAsgBEECciIFaiIIIAgtAAAgASAFai0AAHM6AAAgCyAEQQNyIgVqIgggCC0AACABIAVqLQAAczoAACAEQQRqIQQgB0EEaiIHIAZHDQALCyACQQNxIgdFDQADQCADQSBqIARqIgYgBi0AACABIARqLQAAczoAACAEQQFqIQQgCUEBaiIJIAdHDQALCyAAIANBIGpCwAAQJBogAEHoAGoiABBjGiADQty48eLFi5eu3AA3A1ggA0LcuPHixYuXrtwANwNQIANC3Ljx4sWLl67cADcDSCAKQty48eLFi5eu3AA3AwAgA0LcuPHixYuXrtwANwM4IANC3Ljx4sWLl67cADcDMCADQty48eLFi5eu3AA3AyggA0LcuPHixYuXrtwANwMgAkAgAkUNAEEAIQlBACEEIAJBBE8EQCACQfwAcSEKQQAhBwNAIANBIGoiCCAEaiIGIAYtAAAgASAEai0AAHM6AAAgCCAEQQFyIgZqIgUgBS0AACABIAZqLQAAczoAACAIIARBAnIiBmoiBSAFLQAAIAEgBmotAABzOgAAIAggBEEDciIGaiIFIAUtAAAgASAGai0AAHM6AAAgBEEEaiEEIAdBBGoiByAKRw0ACwsgAkEDcSICRQ0AA0AgA0EgaiAEaiIHIActAAAgASAEai0AAHM6AAAgBEEBaiEEIAlBAWoiCSACRw0ACwsgACADQSBqIgBCwAAQJBogAEHAABAJIANBIBAJIANB4ABqJABBAAs7AQF/IwBBQGoiAiQAIAAgAhAdGiAAQdABaiIAIAJCwAAQFxogACABEB0aIAJBwAAQCSACQUBrJABBAAtyACAAQgA3A0AgAEIANwNIIABBsIwCKQMANwMAIABBuIwCKQMANwMIIABBwIwCKQMANwMQIABByIwCKQMANwMYIABB0IwCKQMANwMgIABB2IwCKQMANwMoIABB4IwCKQMANwMwIABB6IwCKQMANwM4QQALIwAgAUKAgICAEFoEQBAOAAsgACABIAIgA0G0nwIoAgARDwAL5QgBGH8jAEHAAmsiAiQAIABBKGoiFyABEDYgAEIANwJUIABBATYCUCAAQgA3AlwgAEIANwJkIABCADcCbCAAQQA2AnQgAkHwAWoiBCAXEAUgAkHAAWoiDiAEQbAMEAYgAiACKALAAUEBajYCwAEgAiACKALwAUEBayIDNgLwASACKAL0ASENIAIoAvgBIQUgAigC/AEhBiACKAKAAiEHIAIoAoQCIQggAigCiAIhCSACKAKMAiEKIAIoApACIQsgAigClAIhDCAAIAQgDhAGIAAgABBuIAAgBCAAEAYgAkGQAWoiBCAAEAUgBCAEIA4QBiACIAIoArQBIgQgDGs2AoQBIAIgAigCsAEiDiALazYCgAEgAiACKAKsASIPIAprNgJ8IAIgAigCqAEiECAJazYCeCACIAIoAqQBIhEgCGs2AnQgAiACKAKgASISIAdrNgJwIAIgAigCnAEiEyAGazYCbCACIAIoApgBIhQgBWs2AmggAiACKAKUASIVIA1rNgJkIAIgAigCkAEiFiADazYCYCACIAQgDGo2AlQgAiALIA5qNgJQIAIgCiAPajYCTCACIAkgEGo2AkggAiAIIBFqNgJEIAIgByASajYCQCACIAYgE2o2AjwgAiAFIBRqNgI4IAIgDSAVajYCNCACIAMgFmo2AjAgAiACQeAAahARIAJBIBAaIQQgAiACQTBqEBEgAkEgEBohDyACIABB4AwQBiAAKAIEIQwgACgCCCELIAAoAgwhCiAAKAIQIQkgACgCFCEIIAAoAhghByAAKAIcIQYgACgCICEFIAAoAgAhDiACKAIAIRAgAigCBCERIAIoAgghEiACKAIMIRMgAigCECEUIAIoAhQhFSACKAIYIRYgAigCHCEYIAIoAiAhGSAAIARBAWsiAyAAKAIkIg0gAigCJHNxIA1zIg02AiQgACAFIAUgGXMgA3FzIgU2AiAgACAGIAYgGHMgA3FzIgY2AhwgACAHIAcgFnMgA3FzIgc2AhggACAIIAggFXMgA3FzIgg2AhQgACAJIAkgFHMgA3FzIgk2AhAgACAKIAogE3MgA3FzIgo2AgwgACALIAsgEnMgA3FzIgs2AgggACAMIAwgEXMgA3FzIgw2AgQgACAOIA4gEHMgA3FzIgM2AgAgAkGgAmogABARIABBACACLQCgAkEBcSABLQAfQQd2c0GAqgItAABBAnZzayIBIA1BACANa3NxIA1zNgIkIAAgBUEAIAVrcyABcSAFczYCICAAIAZBACAGa3MgAXEgBnM2AhwgACAHQQAgB2tzIAFxIAdzNgIYIAAgCEEAIAhrcyABcSAIczYCFCAAIAlBACAJa3MgAXEgCXM2AhAgACAKQQAgCmtzIAFxIApzNgIMIAAgC0EAIAtrcyABcSALczYCCCAAIAxBACAMa3MgAXEgDHM2AgQgACADQQAgA2tzIAFxIANzNgIAIABB+ABqIAAgFxAGIAJBwAJqJAAgBCAPckEBawvKCAEDfyMAQcABayICJAAgAkGQAWoiBCABEAUgAkHgAGoiAyAEEAUgAyADEAUgAyABIAMQBiAEIAQgAxAGIAJBMGoiASAEEAUgAyADIAEQBiABIAMQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSADIAEgAxAGIAEgAxAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASADEAYgAiABEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgASACIAEQBiABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSADIAEgAxAGIAEgAxAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASADEAYgAiABEAVBASEBA0AgAiACEAUgAUEBaiIBQeQARw0ACyACQTBqIgEgAiABEAYgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgAkHgAGoiAyABIAMQBiADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSAAIAMgAkGQAWoQBiACQcABaiQAC/QEARl+IAExAB8hAiABMQAeIQYgATEAHSEOIAExAAYhByABMQAFIQggATEABCEDIAExAAkhDyABMQAIIRAgATEAByERIAExAAwhCSABMQALIQogATEACiELIAExAA8hDCABMQAOIRIgATEADSETIAExABwhBCABMQAbIRQgATEAGiEVIAExABkhBSABMQAYIRYgATEAFyEXIAE1AAAhGCAAIAExABVCD4YgATEAFEIHhoQgATEAFkIXhoQgATUAECIZQoCAgAh8IhpCGYh8Ig0gDUKAgIAQfCINQoCAgOAPg30+AhggACAWQg2GIBdCBYaEIAVCFYaEIgUgDUIaiHwgBUKAgIAIfCIFQoCAgPADg30+AhwgACAUQgyGIBVCBIaEIARCFIaEIAVCGYh8IgQgBEKAgIAQfCIEQoCAgOAPg30+AiAg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ASACIAk2AsgBIAIgCjYCxAEgAiALQQFqNgLAASACQeAAaiISIAJBwAFqIhMQBSACQTBqIhBBsAwgDBAGIAIoAmAhASACKAIwIQMgAigCZCEEIAIoAjQhBSACKAJoIQYgAigCOCEHIAIoAmwhCCACKAI8IQkgAigCcCEKIAIoAkAhCyACKAJ0IQwgAigCRCEOIAIoAnghDyACKAJIIRQgAigCfCEVIAIoAkwhFiACKAKAASEXIAIoAlAhGCACQQAgAigCVCACKAKEAWprNgJUIAJBACAXIBhqazYCUCACQQAgFSAWams2AkwgAkEAIA8gFGprNgJIIAJBACAMIA5qazYCRCACQQAgCiALams2AkAgAkEAIAggCWprNgI8IAJBACAGIAdqazYCOCACQQAgBCAFams2AjQgAkEAIAEgA2prNgIwIAIgECASEAYgAkIANwKUAyACQgA3ApwDIAJBADYCpAMgAkIANwKEAyACQQE2AoADIAJCADcCjAMgAkGwA2oiASACQYADaiACEGohDyAAIAEgExAGIABBKGoiAyABIAAQBiADIAMgEBAGIAAgACANEAYgACAAKAIkQQF0IgQ2AiQgACAAKAIgQQF0IgU2AiAgACAAKAIcQQF0IgY2AhwgACAAKAIYQQF0Igc2AhggACAAKAIUQQF0Igg2AhQgACAAKAIQQQF0Igk2AhAgACAAKAIMQQF0Igo2AgwgACAAKAIIQQF0Igs2AgggACAAKAIEQQF0Igw2AgQgACAAKAIAQQF0Ig42AgAgAkHgA2oiDSAAEBEgAEEAIAItAOADQQFxayIBIARBACAEa3NxIARzNgIkIAAgBUEAIAVrcyABcSAFczYCICAAIAZBACAGa3MgAXEgBnM2AhwgACAHQQAgB2tzIAFxIAdzNgIYIAAgCEEAIAhrcyABcSAIczYCFCAAIAlBACAJa3MgAXEgCXM2AhAgACAKQQAgCmtzIAFxIApzNgIMIAAgC0EAIAtrcyABcSALczYCCCAAIAxBACAMa3MgAXEgDHM2AgQgACAOQQAgDmtzIAFxIA5zNgIAIAMgESADEAYgAEIANwJUIABBATYCUCAAQgA3AlwgAEIANwJkIABCADcCbCAAQQA2AnQgAEH4AGoiASAAIAMQBiANIAEQESACLQDgAyEAIA0gAxARQQAgDUEgEBpBASAPayAA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RQ0BIAJBAWsiAkUNASABQQFqIQEgAC0AASEDIABBAWohACADDQALQQAhAwsgAwVBAAsgAS0AAGsLUgECf0HwlgIoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQBA0BC0HwpQJBMDYCAEF/DwtB8JYCIAA2AgAgAQs5AQF/IwBBIGsiAiQAIAAgAhAtGiAAQegAaiIAIAJCIBAkGiAAIAEQLRogAkEgEAkgAkEgaiQAQQALlgEBAX8jAEHQAWsiAyQAIANCADcDSCADQbiMAikDADcDCCADQcCMAikDADcDECADQciMAikDADcDGCADQdCMAikDADcDICADQdiMAikDADcDKCADQeCMAikDADcDMCADQeiMAikDADcDOCADQgA3A0AgA0GwjAIpAwA3AwAgAyABIAIQFxogAyAAEB0aIANB0AFqJABBAAsQACAAIAEgAiADQQgQaUEACxAAIAAgASACIANBDBBpQQALEAAgACABIAIgA0EUEGlBAAuhEQIsfwV+IwBBoAZrIgIkACABKAIsIQMgASgCVCEFIAEoAjAhDCABKAJYIQ0gASgCNCEOIAEoAlwhDyABKAI4IRAgASgCYCERIAEoAjwhEiABKAJkIRMgAUFAayIUKAIAIRYgASgCaCEEIAEoAkQhBiABKAJsIQcgASgCSCEIIAEoAnAhCSABKAIoIQogASgCUCELIAIgASgCTCIVIAEoAnQiF2o2AsQCIAIgCCAJajYCwAIgAiAGIAdqNgK8AiACIAQgFmo2ArgCIAIgEiATajYCtAIgAiAQIBFqNgKwAiACIA4gD2o2AqwCIAIgDCANajYCqAIgAiADIAVqNgKkAiACIAogC2o2AqACIAIgFyAVazYCJCACIAkgCGs2AiAgAiAHIAZrNgIcIAIgBCAWazYCGCACIBMgEms2AhQgAiARIBBrNgIQIAIgDyAOazYCDCACIA0gDGs2AgggAiAFIANrNgIEIAIgCyAKazYCACACQaACaiIFIAUgAhAGIAJB8AFqIgYgASABQShqIgMQBiACQcABaiIEIAYQBSAEIAUgBBAGIAJCADcCxAMgAkIANwLMAyACQQA2AtQDIAJCADcCtAMgAkIANwK8AyACQQE2ArADIAJBwARqIgcgAkGwA2ogBBBqGiACQdAFaiIEIAcgBRAGIAJBoAVqIh8gByAGEAYgAkEwaiIdIAQgHxAGIB0gHSABQfgAaiIFEAYgAkGQBGogAUHgDBAGIAJB4ANqIANB4AwQBiACQfAEaiAEQYAXEAYgAkHQAmoiAyAFIB0QBiACQYADaiIYIAMQESACLQCAAyEDIAIgASkCICIuNwOwASACIAEpAhgiLzcDqAEgAiABKQIQIjA3A6ABIAIgASkCCCIxNwOYASACIAEpAgAiMjcDkAEgASgCLCEFIAEoAjAhDCABKAI0IQ0gASgCOCEOIAEoAjwhDyAUKAIAIRAgASgCRCERIAEoAkghEiABKAJMIRMgASgCKCEWIAIoAuQDIQogAigClAEhBCACKALsAyELIAIoApwBIQYgAigC9AMhFCACKAKkASEHIAIoAvwDIRUgAigCrAEhCCACKAKEBCEXIAIoArQBIQkgAigC4AMhHiACKALoAyEZIAIoAvADIRogAigC+AMhGyACQQAgA0EBcWsiAyAupyIcIAIoAoAEc3EgHHM2ArABIAIgGyAvpyIccyADcSAcczYCqAEgAiAaIDCnIhtzIANxIBtzNgKgASACIBkgMaciGnMgA3EgGnM2ApgBIAIgHiAypyIZcyADcSAZczYCkAEgAiAJIAkgF3MgA3FzNgK0ASACIAggCCAVcyADcXM2AqwBIAIgByAHIBRzIANxczYCpAEgAiAGIAYgC3MgA3FzNgKcASACIAQgBCAKcyADcXM2ApQBIAIoApAEIRcgAigClAQhHiACKAKYBCEZIAIoApwEIRogAigCoAQhGyACKAKkBCEcIAIoAqgEISAgAigCrAQhISACKAKwBCEiIAIoArQEISMgAigCoAUhBCACKALwBCEkIAIoAqQFIQYgAigC9AQhJSACKAKoBSEHIAIoAvgEISYgAigCrAUhCCACKAL8BCEnIAIoArAFIQkgAigCgAUhKCACKAK0BSEKIAIoAoQFISkgAigCuAUhCyACKAKIBSEqIAIoArwFIRQgAigCjAUhKyACKALABSEVIAIoApAFISwgAiACKALEBSItIAIoApQFcyADcSAtczYCxAUgAiAVIBUgLHMgA3FzNgLABSACIBQgFCArcyADcXM2ArwFIAIgCyALICpzIANxczYCuAUgAiAKIAogKXMgA3FzNgK0BSACIAkgCSAocyADcXM2ArAFIAIgCCAIICdzIANxczYCrAUgAiAHIAcgJnMgA3FzNgKoBSACIAYgBiAlcyADcXM2AqQFIAIgBCAEICRzIANxczYCoAUgAkHgAGoiBCACQZABaiAdEAYgGCAEEBEgASgCVCEEIAEoAlghBiABKAJcIQcgASgCYCEIIAEoAmQhCSABKAJoIQogASgCbCELIAEoAnAhFCABKAJQIRUgAiABKAJ0QQAgAi0AgANBAXFrIgEgEyATICNzIANxcyITQQAgE2tzcSATc2s2AqQDIAIgFCASIBIgInMgA3FzIhJBACASa3MgAXEgEnNrNgKgAyACIAsgESARICFzIANxcyIRQQAgEWtzIAFxIBFzazYCnAMgAiAKIBAgECAgcyADcXMiEEEAIBBrcyABcSAQc2s2ApgDIAIgCSAPIA8gHHMgA3FzIg9BACAPa3MgAXEgD3NrNgKUAyACIAggDiAOIBtzIANxcyIOQQAgDmtzIAFxIA5zazYCkAMgAiAHIA0gDSAacyADcXMiDUEAIA1rcyABcSANc2s2AowDIAIgBiAMIAwgGXMgA3FzIgxBACAMa3MgAXEgDHNrNgKIAyACIAQgBSAFIB5zIANxcyIFQQAgBWtzIAFxIAVzazYChAMgAiAVIAEgFiAWIBdzIANxcyIBQQAgAWtzcSABc2s2AoADIBggHyAYEAYgAkGABmogGBARIAJBACACLQCABkEBcWsiASACKAKAAyIDQQAgA2tzcSADczYCgAMgAiACKAKEAyIDQQAgA2tzIAFxIANzNgKEAyACIAIoAogDIgNBACADa3MgAXEgA3M2AogDIAIgAigCjAMiA0EAIANrcyABcSADczYCjAMgAiACKAKQAyIDQQAgA2tzIAFxIANzNgKQAyACIAIoApQDIgNBACADa3MgAXEgA3M2ApQDIAIgAigCmAMiA0EAIANrcyABcSADczYCmAMgAiACKAKcAyIDQQAgA2tzIAFxIANzNgKcAyACIAIoAqADIgNBACADa3MgAXEgA3M2AqADIAIgASACKAKkAyIBQQAgAWtzcSABczYCpAMgACAYEBEgAkGgBmokAAv4AQEKfwNAIAQgACADai0AACIBIANBgBVqIgItAABzciEEIAogASACLQDAAXNyIQogCSABIAItAKABc3IhCSAIIAEgAi0AgAFzciEIIAcgASACLQBgc3IhByAGIAEgAkFAay0AAHNyIQYgBSABIAItACBzciEFIANBAWoiA0EfRw0ACyAKIAAtAB9B/wBxIgBB/wBzIgFyQf8BcUEBayABIAlyQf8BcUEBayABIAhyQf8BcUEBayAHIABB+gBzckH/AXFBAWsgBiAAQQVzckH/AXFBAWsgACAFckH/AXFBAWsgACAEckH/AXFBAWtycnJycnJBCHZBAXELwQUBHH8jAEHAAmsiASQAIAFB8AFqIgMgABAFIAFBwAFqIgQgAEEoahAFIAFBkAFqIgIgAEHQAGoQBSABKALwASEAIAEoAsABIQUgASgC9AEhBiABKALEASEHIAEoAvgBIQggASgCyAEhCSABKAL8ASEKIAEoAswBIQsgASgCgAIhDCABKALQASENIAEoAoQCIQ4gASgC1AEhDyABKAKIAiEQIAEoAtgBIREgASgCjAIhEiABKALcASETIAEoApACIRQgASgC4AEhFSABIAEoAuQBIAEoApQCazYCVCABIBUgFGs2AlAgASATIBJrNgJMIAEgESAQazYCSCABIA8gDms2AkQgASANIAxrNgJAIAEgCyAKazYCPCABIAkgCGs2AjggASAHIAZrNgI0IAEgBSAAazYCMCABQTBqIhYgFiACEAYgASADIAQQBiABIAFBsAwQBiABQeAAaiACEAUgASgCMCEAIAEoAmAhBSABKAIAIQYgASgCNCEHIAEoAmQhCCABKAIEIQkgASgCOCEKIAEoAmghCyABKAIIIQwgASgCPCENIAEoAmwhDiABKAIMIQ8gASgCQCEQIAEoAnAhESABKAIQIRIgASgCRCETIAEoAnQhFCABKAIUIRUgASgCSCECIAEoAnghAyABKAIYIQQgASgCTCEXIAEoAnwhGCABKAIcIRkgASgCUCEaIAEoAoABIRsgASgCICEcIAEgASgCVCABKAKEASABKAIkams2AlQgASAaIBsgHGprNgJQIAEgFyAYIBlqazYCTCABIAIgAyAEams2AkggASATIBQgFWprNgJEIAEgECARIBJqazYCQCABIA0gDiAPams2AjwgASAKIAsgDGprNgI4IAEgByAIIAlqazYCNCABIAAgBSAGams2AjAgAUGgAmoiACAWEBEgAEEgEBogAUHAAmokAAuFAwIDfwF+IwBB4AJrIgYkACAGIAQgBUEAECsaAn8C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IAEpAhA3A1AgAiABKQIoNwNIIAIgASkCIDcDQCADIAJB0ABqIAJBQGsQCCABIAIpAogCNwIoIAEgAikCgAI3AiAgAiABKQIINwM4IAIgASkCADcDMCACIAEpAhg3AyggAiABKQIQNwMgIAMgAkEwaiACQSBqEAggASACKQKIAjcCGCABIAIpAoACNwIQIAIgAikDmAI3AxggAiACKQOQAjcDECACIAEpAgg3AwggAiABKQIANwMAIAMgAkEQaiACEAggASACKQKIAjcCCCABIAIpAoACNwIAIAEgCiABKAAMczYCDCABIAkgASgACHM2AgggASAIIAEoAARzNgIEIAEgCyABKAAAczYCACAAIAcgACgAAHM2AgAgASAGIAEoAERzNgJEIAEgBSABKABIczYCSCABIAQgASgATHM2AkwgAkGgAmokAAvwCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgCDCEHIAEoAjQhCCABKAIQIQkgASgCOCEKIAEoAhQhCyABKAI8IQwgASgCGCENIAFBQGsiDigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAJBKGoQBiAAQShqIgMgAyACEAYgAEH4AGogAkH4AGogAUH4AGoQBiAAIAFB0ABqIAJB0ABqEAYgACgCBCEUIAAoAgghFSAAKAIMIRYgACgCECEXIAAoAhQhGCAAKAIYIRkgACgCHCEaIAAoAiAhGyAAKAIkIRwgACgCLCEBIAAoAlQhAiAAKAIwIQMgACgCWCEFIAAoAjQhBiAAKAJcIQcgACgCOCEIIAAoAmAhCSAAKAI8IQogACgCZCELIAQoAgAhDCAAKAJoIQ0gACgCRCEOIAAoAmwhDyAAKAJIIRAgACgCcCERIAAoAgAhHSAAKAIoIRIgACgCUCETIAAgACgCTCIeIAAoAnQiH2o2AkwgACAQIBFqNgJIIAAgDiAPajYCRCAEIAwgDWo2AgAgACAKIAtqNgI8IAAgCCAJajYCOCAAIAYgB2o2AjQgACADIAVqNgIwIAAgASACajYCLCAAIBIgE2o2AiggACAfIB5rNgIkIAAgESAQazYCICAAIA8gDms2AhwgACANIAxrNgIYIAAgCyAKazYCFCAAIAkgCGs2AhAgACAHIAZrNgIMIAAgBSADazYCCCAAIAIgAWs2AgQgACATIBJrNgIAIAAgACgCnAEiASAcQQF0IgJqNgKcASAAIAAoApgBIgQgG0EBdCIDajYCmAEgACAAKAKUASIFIBpBAXQiBmo2ApQBIAAgACgCkAEiByAZQQF0IghqNgKQASAAIAAoAowBIgkgGEEBdCIKajYCjAEgACAAKAKIASILIBdBAXQiDGo2AogBIAAgACgChAEiDSAWQQF0Ig5qNgKEASAAIAAoAoABIg8gFUEBdCIQajYCgAEgACAAKAJ8IhEgFEEBdCISajYCfCAAIAAoAngiEyAdQQF0IhRqNgJ4IAAgAyAEazYCcCAAIAYgBWs2AmwgACAIIAdrNgJoIAAgCiAJazYCZCAAIAwgC2s2AmAgACAOIA1rNgJcIAAgECAPazYCWCAAIBIgEWs2AlQgACAUIBNrNgJQIAAgAiABazYCdAtAAQN/IAAgASABQfgAaiICEAYgAEEoaiABQShqIgMgAUHQAGoiBBAGIABB0ABqIAQgAhAGIABB+ABqIAEgAxAGCxcAIAAgASACrSADrUIghoQgBCAFEL8BCxcAIAAgASACrSADrUIghoQgBCAFEMABC4UBAQV/AkAgAS0AABA4IgJFDQAgAS0AARA4IgNFDQAgAS0AAhA4IgRFDQAgAS0AAxA4IgVFDQAgAS0ABBA4IgZFDQAgACACQYAIayADQYAIa0EGdHIgBEGACGtBDHRyIAVBgAhrQRJ0ciAGQYAIa0EYdHI2AgAgAUEFag8LIABBADYCAEEAC8MGAQR/IAIgACADQQd0akFAaiIEKQIANwIAIAIgBCkCODcCOCACIAQpAjA3AjAgAiAEKQIoNwIoIAIgBCkCIDcCICACIAQpAhg3AhggAiAEKQIQNwIQIAIgBCkCCDcCCCADBEAgA0EBdCEGIANBBnQhBwNAIAIgAigCACAAIAVBBnRqIgMoAgBzNgIAIAIgAigCBCADKAIEczYCBCACIAIoAgggAygCCHM2AgggAiACKAIMIAMoAgxzNgIMIAIgAigCECADKAIQczYCECACIAIoAhQgAygCFHM2AhQgAiACKAIYIAMoAhhzNgIYIAIgAigCHCADKAIcczYCHCACIAIoAiAgAygCIHM2AiAgAiACKAIkIAMoAiRzNgIkIAIgAigCKCADKAIoczYCKCACIAIoAiwgAygCLHM2AiwgAiACKAIwIAMoAjBzNgIwIAIgAigCNCADKAI0czYCNCACIAIoAjggAygCOHM2AjggAiACKAI8IAMoAjxzNgI8IAIQuwEgASAFQQV0aiIEIAIpAjg3AjggBCACKQIwNwIwIAQgAikCKDcCKCAEIAIpAiA3AiAgBCACKQIYNwIYIAQgAikCEDcCECAEIAIpAgg3AgggBCACKQIANwIAIAIgAigCACADQUBrKAIAczYCACACIAIoAgQgAygCRHM2AgQgAiACKAIIIAMoAkhzNgIIIAIgAigCDCADKAJMczYCDCACIAIoAhAgAygCUHM2AhAgAiACKAIUIAMoAlRzNgIUIAIgAigCGCADKAJYczYCGCACIAIoAhwgAygCXHM2AhwgAiACKAIgIAMoAmBzNgIgIAIgAigCJCADKAJkczYCJCACIAIoAiggAygCaHM2AiggAiACKAIsIAMoAmxzNgIsIAIgAigCMCADKAJwczYCMCACIAIoAjQgAygCdHM2AjQgAiACKAI4IAMoAnhzNgI4IAIgAigCPCADKAJ8czYCPCACELsBIAQgB2oiAyACKQI4NwI4IAMgAikCMDcCMCADIAIpAig3AiggAyACKQIgNwIgIAMgAikCGDcCGCADIAIpAhA3AhAgAyACKQIINwIIIAMgAikCADcCACAFQQJqIgUgBkkNAAsLCyIBAX8gACgCACIBBEAgARAVCyAAQQA2AgggAEIANwIAQQALkR4CEX8UfiMAQYAgayIFJAACQCAARQ0AAkACQAJ/IAAoAiQiAkECRwRAIAEtAAghCSAAKAIEIQ4gASgCAAwBCyAAKAIEIQ4gAS0ACCEJIAEoAgAiDA0BIAlBAk8NAUEACyEMIAVBgBhqQQBBgAgQDBogBUG4EGpBAEHIBxAMGiAFIAytNwOAECABNQIEIRcgBSAJrUL/AYM3A5AQIAUgFzcDiBAgBSAANQIQNwOYECAANQIIIRcgBSACrTcDqBAgBSAXNwOgECAAKAIURQ0BQgAhFwNAIARB/wBxIgNFBEAgBSAXQgF8Ihc3A7AQIAVBAEGACBAMIgJBgAhqQQBBgAgQDBogAkGAGGoiBiACQYAQaiACEHUgBiACIAJBgAhqEHULIA4gBEEDdGogBUGACGogA0EDdGopAwA3AwAgBEEBaiIEIAAoAhQiA0kNAAsMAQsgACgCFCEDQQEhEAsgCSAMckUiEUEBdCIIIANPDQBBfyAAKAIYIgJBAWsgCCACIAEoAgQiDWxqIAMgCWxqIgogAnAbIApqIQQgCUEBaiESIA2tISYDQCAKQQFrIAQgCiAAKAIYIgJwQQFGGyENIAAoAhwhByAQBH8gACgCACgCBCANQQp0agUgDiAIQQN0agspAwAhEyABIAg2AgwgJiATQiCIpyAHcK0gERshGAJ+IAxFBEAgCUUEQCAIQQFrIQRCAAwCCyADIAlsIQQgGCAmUQRAIAQgCGpBAWshBEIADAILIAQgCEVrIQRCAAwBCyAYICZRBH8gCCADQX9zagVBAEF/IAgbIANrCyACaiEEQgAgCUEDRg0AGiADIBJsrQshFyAAKAIAKAIEIgMgAiAYp2xBCnRqIBcgBEEBa618IAStIBNC/////w+DIhcgF35CIIh+QiCIfSACrYKnQQp0aiEEIAMgDUEKdGohAiADIApBCnRqIQcCQCAMBEAgAiAEIAcQdQwBCyAFQYAYaiAEQYAIEAsaQQAhBANAIARBA3QiAyAFQYAYaiILaiIGIAYpAwAgAiADaikDAIU3AwAgCyADQQhyIgZqIg8gDykDACACIAZqKQMAhTcDACALIANBEHIiBmoiDyAPKQMAIAIgBmopAwCFNwMAIAsgA0EYciIDaiIGIAYpAwAgAiADaikDAIU3AwAgBEEEaiIEQYABRw0ACyAFQYAQaiALQYAIEAsaQQAhA0EAIQQDQCAFQYAYaiAEQQd0aiICIAIpAzgiFyACKQMYIhh8IBhCAYZC/v///x+DIBdC/////w+DfnwiGCACKQN4hUIgiSITIAIpA1giFnwgE0L/////D4MgFkIBhkL+////H4N+fCIWIBeFQiiJIhcgGHwgF0L/////D4MgGEIBhkL+////H4N+fCIYIBOFQjCJIhMgAikDKCIUIAIpAwgiFXwgFUIBhkL+////H4MgFEL/////D4N+fCIVIAIpA2iFQiCJIhsgAikDSCIcfCAbQv////8PgyAcQgGGQv7///8fg358IhwgFIVCKIkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhUgG4VCMIkiGyAcfCAbQv////8PgyAcQgGGQv7///8fg358IhwgFIVCAYkiFCACKQMgIh8gAikDACIafCAaQgGGQv7///8fgyAfQv////8Pg358IhogAikDYIVCIIkiICACQUBrIgYpAwAiI3wgIEL/////D4MgI0IBhkL+////H4N+fCIjIB+FQiiJIh8gGnwgH0L/////D4MgGkIBhkL+////H4N+fCIafCAUQv////8PgyAaQgGGQv7///8fg358IhmFQiCJIiQgAikDMCIhIAIpAxAiHXwgHUIBhkL+////H4MgIUL/////D4N+fCIdIAIpA3CFQiCJIiIgAikDUCIefCAiQv////8PgyAeQgGGQv7///8fg358Ih4gIYVCKIkiISAdfCAhQv////8PgyAdQgGGQv7///8fg358Ih0gIoVCMIkiIiAefCAiQv////8PgyAeQgGGQv7///8fg358Ih58ICRC/////w+DIB5CAYZC/v///x+DfnwiJSAUhUIoiSIUIBl8IBRC/////w+DIBlCAYZC/v///x+DfnwiGTcDACACIBkgJIVCMIkiGTcDeCACIBkgJXwgGUL/////D4MgJUIBhkL+////H4N+fCIZNwNQIAIgFCAZhUIBiTcDKCACIB4gIYVCAYkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhUgGiAghUIwiSIahUIgiSIgIBMgFnwgE0L/////D4MgFkIBhkL+////H4N+fCITfCAgQv////8PgyATQgGGQv7///8fg358IhYgFIVCKIkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhkgIIVCMIkiFTcDYCACIBk3AwggAiAVIBZ8IBVC/////w+DIBZCAYZC/v///x+DfnwiFiAUhUIBiTcDMCACIBY3A1ggAiATIBeFQgGJIhcgHXwgF0L/////D4MgHUIBhkL+////H4N+fCITIBuFQiCJIhYgGiAjfCAaQv////8PgyAjQgGGQv7///8fg358IhR8IBZC/////w+DIBRCAYZC/v///x+DfnwiFSAXhUIoiSIXIBN8IBdC/////w+DIBNCAYZC/v///x+DfnwiEzcDECACIBMgFoVCMIkiEzcDaCAGIBMgFXwgE0L/////D4MgFUIBhkL+////H4N+fCIVNwMAIAIgGCAUIB+FQgGJIhN8IBhCAYZC/v///x+DIBNC/////w+DfnwiGCAihUIgiSIWIBx8IBZC/////w+DIBxCAYZC/v///x+DfnwiFCAThUIoiSITIBh8IBNC/////w+DIBhCAYZC/v///x+DfnwiGyAWhUIwiSIYIBR8IBhC/////w+DIBRCAYZC/v///x+DfnwiFjcDSCACIBg3A3AgAiAbNwMYIAIgFSAXhUIBiTcDOCACIBMgFoVCAYk3AyAgBEEBaiIEQQhHDQALA0AgBUGAGGogA0EEdGoiAiACKQOIAyIXIAIpA4gBIhh8IBhCAYZC/v///x+DIBdC/////w+DfnwiGCACKQOIB4VCIIkiEyACKQOIBSIWfCATQv////8PgyAWQgGGQv7///8fg358IhYgF4VCKIkiFyAYfCAXQv////8PgyAYQgGGQv7///8fg358IhggE4VCMIkiEyACKQOIAiIUIAIpAwgiFXwgFUIBhkL+////H4MgFEL/////D4N+fCIVIAIpA4gGhUIgiSIbIAIpA4gEIhx8IBtC/////w+DIBxCAYZC/v///x+DfnwiHCAUhUIoiSIUIBV8IBRC/////w+DIBVCAYZC/v///x+DfnwiFSAbhUIwiSIbIBx8IBtC/////w+DIBxCAYZC/v///x+DfnwiHCAUhUIBiSIUIAIpA4ACIh8gAikDACIafCAaQgGGQv7///8fgyAfQv////8Pg358IhogAikDgAaFQiCJIiAgAikDgAQiI3wgIEL/////D4MgI0IBhkL+////H4N+fCIjIB+FQiiJIh8gGnwgH0L/////D4MgGkIBhkL+////H4N+fCIafCAUQv////8PgyAaQgGGQv7///8fg358IhmFQiCJIiQgAikDgAMiISACKQOAASIdfCAdQgGGQv7///8fgyAhQv////8Pg358Ih0gAikDgAeFQiCJIiIgAikDgAUiHnwgIkL/////D4MgHkIBhkL+////H4N+fCIeICGFQiiJIiEgHXwgIUL/////D4MgHUIBhkL+////H4N+fCIdICKFQjCJIiIgHnwgIkL/////D4MgHkIBhkL+////H4N+fCIefCAkQv////8PgyAeQgGGQv7///8fg358IiUgFIVCKIkiFCAZfCAUQv////8PgyAZQgGGQv7///8fg358Ihk3AwAgAiAZICSFQjCJIhk3A4gHIAIgGSAlfCAZQv////8PgyAlQgGGQv7///8fg358Ihk3A4AFIAIgFCAZhUIBiTcDiAIgAiAeICGFQgGJIhQgFXwgFEL/////D4MgFUIBhkL+////H4N+fCIVIBogIIVCMIkiGoVCIIkiICATIBZ8IBNC/////w+DIBZCAYZC/v///x+DfnwiE3wgIEL/////D4MgE0IBhkL+////H4N+fCIWIBSFQiiJIhQgFXwgFEL/////D4MgFUIBhkL+////H4N+fCIZICCFQjCJIhU3A4AGIAIgGTcDCCACIBUgFnwgFUL/////D4MgFkIBhkL+////H4N+fCIWIBSFQgGJNwOAAyACIBY3A4gFIAIgEyAXhUIBiSIXIB18IBdC/////w+DIB1CAYZC/v///x+DfnwiEyAbhUIgiSIWIBogI3wgGkL/////D4MgI0IBhkL+////H4N+fCIUfCAWQv////8PgyAUQgGGQv7///8fg358IhUgF4VCKIkiFyATfCAXQv////8PgyATQgGGQv7///8fg358IhM3A4ABIAIgEyAWhUIwiSITNwOIBiACIBMgFXwgE0L/////D4MgFUIBhkL+////H4N+fCIVNwOABCACIBggFCAfhUIBiSITfCAYQgGGQv7///8fgyATQv////8Pg358IhggIoVCIIkiFiAcfCAWQv////8PgyAcQgGGQv7///8fg358IhQgE4VCKIkiEyAYfCATQv////8PgyAYQgGGQv7///8fg358IhsgFoVCMIkiGCAUfCAYQv////8PgyAUQgGGQv7///8f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IAAgARAGIAAgABBuIAAgACAEEAYgACAAIAEQBiADQcABaiIEIAAQBSAEIAQgAhAGIAEoAgQhBSABKAIIIQ0gASgCDCEOIAEoAhAhDyABKAIUIRAgASgCGCERIAEoAhwhEiABKAIgIRMgASgCACEUIAMoAsABIQIgAygCxAEhBCADKALIASEGIAMoAswBIQcgAygC0AEhCCADKALUASEJIAMoAtgBIQogAygC3AEhCyADKALgASEMIAMgAygC5AEiFSABKAIkIhZrNgK0ASADIAwgE2s2ArABIAMgCyASazYCrAEgAyAKIBFrNgKoASADIAkgEGs2AqQBIAMgCCAPazYCoAEgAyAHIA5rNgKcASADIAYgDWs2ApgBIAMgBCAFazYClAEgAyACIBRrNgKQASADIBUgFmo2AoQBIAMgDCATajYCgAEgAyALIBJqNgJ8IAMgCiARajYCeCADIAkgEGo2AnQgAyAIIA9qNgJwIAMgByAOajYCbCADIAYgDWo2AmggAyAEIAVqNgJkIAMgAiAUajYCYCADQTBqIgUgAUHgDBAGIAMgFSADKAJUajYCVCADIAwgAygCUGo2AlAgAyALIAMoAkxqNgJMIAMgCiADKAJIajYCSCADIAkgAygCRGo2AkQgAyAIIAMoAkBqNgJAIAMgByADKAI8ajYCPCADIAYgAygCOGo2AjggAyAEIAMoAjRqNgI0IAMgAiADKAIwajYCMCADIANBkAFqEBEgA0EgEBohDiADIANB4ABqEBEgA0EgEBohDSADIAUQESADQSAQGiEBIAMgAEHgDBAGIAAoAgQhDCAAKAIIIQsgACgCDCEKIAAoAhAhCSAAKAIUIQggACgCGCEHIAAoAhwhBiAAKAIgIQQgACgCACEFIAMoAgAhDyADKAIEIRAgAygCCCERIAMoAgwhEiADKAIQIRMgAygCFCEUIAMoAhghFSADKAIcIRYgAygCICEXIABBACABIA1yayIBIAAoAiQiAiADKAIkc3EgAnMiAjYCJCAAIAQgBCAXcyABcXMiBDYCICAAIAYgBiAWcyABcXMiBjYCHCAAIAcgByAVcyABcXMiBzYCGCAAIAggCCAUcyABcXMiCDYCFCAAIAkgCSATcyABcXMiCTYCECAAIAogCiAScyABcXMiCjYCDCAAIAsgCyARcyABcXMiCzYCCCAAIAwgDCAQcyABcXMiDDYCBCAAIAUgBSAPcyABcXMiBTYCACADQaACaiAAEBEgAEEAIAMtAKACQQFxayIBIAJBACACa3NxIAJzNgIkIAAgBEEAIARrcyABcSAEczYCICAAIAZBACAGa3MgAXEgBnM2AhwgACAHQQAgB2tzIAFxIAdzNgIYIAAgCEEAIAhrcyABcSAIczYCFCAAIAlBACAJa3MgAXEgCXM2AhAgACAKQQAgCmtzIAFxIApzNgIMIAAgC0EAIAtrcyABcSALczYCCCAAIAxBACAMa3MgAXEgDHM2AgQgACAFQQAgBWtzIAFxIAVzNgIAIANBwAJqJAAgDSAOcgvcAQAgAC0AH0F/c0H/AHEgAC0AASAALQACIAAtAAMgAC0ABCAALQAFIAAtAAYgAC0AByAALQAIIAAtAAkgAC0ACiAALQALIAAtAAwgAC0ADSAALQAOIAAtAA8gAC0AECAALQARIAAtABIgAC0AEyAALQAUIAAtABUgAC0AFiAALQAXIAAtABggAC0AGSAALQAaIAAtABsgAC0AHCAALQAeIAAtAB1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcUH/AXNyQQFrQewBIAAtAABrcUF/c0EIdkEBcQvPCQEPfyMAQYAQayIBJAAgAUGABWoiCCAAEBAgASAAKQIgNwPgAiABIAApAhg3A9gCIAEgACkCEDcD0AIgASAAKQIINwPIAiABIAApAgA3A8ACIAEgACkCMDcD8AIgASAAKQI4NwP4AiABIABBQGspAgA3A4ADIAEgACkCSDcDiAMgASAAKQIoNwPoAiABIAApAlg3A5gDIAEgACkCYDcDoAMgASAAKQJoNwOoAyABIAApAnA3A7ADIAEgACkCUDcDkAMgAUHgA2oiAiABQcACaiIDEBggAUGgAWoiByACIAFB2ARqIgQQBiABQcgBaiABQYgEaiIFIAFBsARqIgYQBiABQfABaiAGIAQQBiABQZgCaiACIAUQBiACIAcgCBATIAMgAiAEEAYgAUHoAmoiCCAFIAYQBiABQZADaiIJIAYgBBAGIAFBuANqIgogAiAFEAYgAUGgBmoiACADEBAgAiAHIAAQEyADIAIgBBAGIAggBSAGEAYgCSAGIAQQBiAKIAIgBRAGIAFBwAdqIgAgAxAQIAIgByAAEBMgAyACIAQQBiAIIAUgBhAGIAkgBiAEEAYgCiACIAUQBiABQeAIaiIAIAMQECACIAcgABATIAMgAiAEEAYgCCAFIAYQBiAJIAYgBBAGIAogAiAFEAYgAUGACmoiACADEBAgAiAHIAAQEyADIAIgBBAGIAggBSAGEAYgCSAGIAQQBiAKIAIgBRAGIAFBoAtqIgAgAxAQIAIgByAAEBMgAyACIAQQBiAIIAUgBhAGIAkgBiAEEAYgCiACIAUQBiABQcAMaiIAIAMQECACIAcgABATIAMgAiAEEAYgCCAFIAYQBiAJIAYgBBAGIAogAiAFEAYgAUHgDWogAxAQIAFCADcDICABQgA3AxggAUIANwMQIAFCADcDCCABQgA3AjQgAUIANwI8IAFCADcCRCABQoCAgIAQNwJMIAFCADcDACABQgA3AiwgAUEBNgIoIAFB1ABqQQBBzAAQDBogAUH4AGohDyABQdgPaiEMIAFBsA9qIQ0gAUHQAGohAyABQShqIQdB/AEhAANAIAFBqA9qIAEpAyA3AwAgAUGgD2ogASkDGDcDACABQZgPaiABKQMQNwMAIAFBkA9qIAEpAwg3AwAgASABKQMANwOIDyANIAcpAiA3AiAgDSAHKQIYNwIYIA0gBykCEDcCECANIAcpAgg3AgggDSAHKQIANwIAIAwgAykCIDcCICAMIAMpAhg3AhggDCADKQIQNwIQIAwgAykCCDcCCCAMIAMpAgA3AgAgACICQbCHAmosAAAhACABQeADaiILIAFBiA9qEBgCQCAAQQBKBEAgAUHAAmoiDiALIAQQBiAIIAUgBhAGIAkgBiAEEAYgCiALIAUQBiALIA4gAUGABWogAEH+AXFBAXZBoAFsahATDAELIABBAE4NACABQcACaiIOIAFB4ANqIgsgBBAGIAggBSAGEAYgCSAGIAQQBiAKIAsgBRAGIAsgDiABQYAFakEAIABrQf4BcUEBdkGgAWxqEFULIAEgAUHgA2oiACAEEAYgByAFIAYQBiADIAYgBBAGIA8gACAFEAYgAkEBayEAIAINAAsgAUGABWoiACABEBEgAEEgEBogAUGAEGokAAvgCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgCDCEHIAEoAjQhCCABKAIQIQkgASgCOCEKIAEoAhQhCyABKAI8IQwgASgCGCENIAFBQGsiDigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAIQBiAAQShqIgMgAyACQShqEAYgAEH4AGogAkHQAGogAUH4AGoQBiABKAJUIRQgASgCWCEVIAEoAlwhFiABKAJgIRcgASgCZCEYIAEoAmghGSABKAJsIRogASgCcCEbIAEoAnQhHCAAKAIsIQIgACgCVCEDIAAoAjAhBSAAKAJYIQYgACgCNCEHIAAoAlwhCCAAKAI4IQkgACgCYCEKIAAoAjwhCyAAKAJkIQwgBCgCACENIAAoAmghDiAAKAJEIQ8gACgCbCEQIAAoAkghESAAKAJwIRIgASgCUCEdIAAoAighASAAKAJQIRMgACAAKAJMIh4gACgCdCIfajYCTCAAIBEgEmo2AkggACAPIBBqNgJEIAQgDSAOajYCACAAIAsgDGo2AjwgACAJIApqNgI4IAAgByAIajYCNCAAIAUgBmo2AjAgACACIANqNgIsIAAgASATajYCKCAAIB8gHms2AiQgACASIBFrNgIgIAAgECAPazYCHCAAIA4gDWs2AhggACAMIAtrNgIUIAAgCiAJazYCECAAIAggB2s2AgwgACAGIAVrNgIIIAAgAyACazYCBCAAIBMgAWs2AgAgACAcQQF0IgEgACgCnAEiAms2ApwBIAAgG0EBdCIEIAAoApgBIgNrNgKYASAAIBpBAXQiBSAAKAKUASIGazYClAEgACAZQQF0IgcgACgCkAEiCGs2ApABIAAgGEEBdCIJIAAoAowBIgprNgKMASAAIBdBAXQiCyAAKAKIASIMazYCiAEgACAWQQF0Ig0gACgChAEiDms2AoQBIAAgFUEBdCIPIAAoAoABIhBrNgKAASAAIBRBAXQiESAAKAJ8IhJrNgJ8IAAgHUEBdCITIAAoAngiFGs2AnggACADIARqNgJwIAAgBSAGajYCbCAAIAcgCGo2AmggACAJIApqNgJkIAAgCyAMajYCYCAAIA0gDmo2AlwgACAPIBBqNgJYIAAgESASajYCVCAAIBMgFGo2AlAgACABIAJqNgJ0C64IAQN/IwBBkAFrIgMkACADQeAAaiIEIAEQBSADQTBqIgIgBBAFIAIgAhAFIAIgASACEAYgBCAEIAIQBiAEIAQQBSAEIAIgBBAGIAIgBBAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAQgAiAEEAYgAiAEEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACIAQQBiADIAIQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSACIAMgAhAGIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAQgAiAEEAYgAiAEEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACIAQQBiADIAIQBUEBIQIDQCADIAMQBSACQQFqIgJB5ABHDQALIANBMGoiAiADIAIQBiACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSADQeAAaiIEIAIgBBAGIAQgBBAFIAQgBBAFIAAgBCABEAYgA0GQAWokAAumBAIOfgp/IAAoAiQhEiAAKAIgIRMgACgCHCEUIAAoAhghFSAAKAIUIREgAkIQWgRAIAAtAFBFQRh0IRYgACgCECIXrSEPIAAoAgwiGK0hDSAAKAIIIhmtIQsgACgCBCIarSEJIBpBBWytIRAgGUEFbK0hDiAYQQVsrSEMIBdBBWytIQogADUCACEIA0AgASgAA0ECdkH///8fcSAVaq0iAyANfiABKAAAQf///x9xIBFqrSIEIA9+fCABKAAGQQR2Qf///x9xIBRqrSIFIAt+fCABKAAJQQZ2IBNqrSIGIAl+fCASIBZqIAEoAAxBCHZqrSIHIAh+fCADIAt+IAQgDX58IAUgCX58IAYgCH58IAcgCn58IAMgCX4gBCALfnwgBSAIfnwgBiAKfnwgByAMfnwgAyAIfiAEIAl+fCAFIAp+fCAGIAx+fCAHIA5+fCADIAp+IAQgCH58IAUgDH58IAYgDn58IAcgEH58IgNCGohC/////w+DfCIEQhqIQv////8Pg3wiBUIaiEL/////D4N8IgZCGohC/////w+DfCIHQhqIp0EFbCADp0H///8fcWoiEUEadiAEp0H///8fcWohFSAFp0H///8fcSEUIAan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aIVCIIkiCyABKQNIIgx8IAxCAYZC/v///x+DIAtC/////w+DfnwiDCADhUIoiSIDIAZ8IANC/////w+DIAZCAYZC/v///x+DfnwiBiALhUIwiSILIAx8IAtC/////w+DIAxCAYZC/v///x+DfnwiDCADhUIBiSIDIAEpAyAiDyABKQMAIgp8IApCAYZC/v///x+DIA9C/////w+DfnwiCiABKQNghUIgiSIQIAFBQGsiFikDACITfCATQgGGQv7///8fgyAQQv////8Pg358IhMgD4VCKIkiDyAKfCAPQv////8PgyAKQgGGQv7///8fg358Igp8IANC/////w+DIApCAYZC/v///x+DfnwiCYVCIIkiFCABKQMwIhEgASkDECINfCANQgGGQv7///8fgyARQv////8Pg358Ig0gASkDcIVCIIkiEiABKQNQIg58IA5CAYZC/v///x+DIBJC/////w+DfnwiDiARhUIoiSIRIA18IBFC/////w+DIA1CAYZC/v///x+DfnwiDSAShUIwiSISIA58IBJC/////w+DIA5CAYZC/v///x+DfnwiDnwgFEL/////D4MgDkIBhkL+////H4N+fCIVIAOFQiiJIgMgCXwgA0L/////D4MgCUIBhkL+////H4N+fCIJNwMAIAEgCSAUhUIwiSIJNwN4IAEgCSAVfCAJQv////8PgyAVQgGGQv7///8fg358Igk3A1AgASADIAmFQgGJNwMoIAEgBCAFfCAEQv////8PgyAFQgGGQv7///8fg358IgQgDiARhUIBiSIFIAZ8IAVC/////w+DIAZCAYZC/v///x+DfnwiAyAKIBCFQjCJIgaFQiCJIgp8IARCAYZC/v///x+DIApC/////w+DfnwiECAFhUIoiSIFIAN8IAVC/////w+DIANCAYZC/v///x+DfnwiCSAKhUIwiSIDNwNgIAEgCTcDCCABIAUgAyAQfCADQv////8PgyAQQgGGQv7///8fg358IgWFQgGJNwMwIAEgBTcDWCABIAQgCIVCAYkiCCANfCAIQv////8PgyANQgGGQv7///8fg358IgQgC4VCIIkiBSAGIBN8IAZC/////w+DIBNCAYZC/v///x+DfnwiA3wgBUL/////D4MgA0IBhkL+////H4N+fCIGIAiFQiiJIgggBHwgCEL/////D4MgBEIBhkL+////H4N+fCIENwMQIAEgBCAFhUIwiSIENwNoIBYgBCAGfCAEQv////8PgyAGQgGGQv7///8fg358IgY3AwAgASAHIAMgD4VCAYkiBHwgB0IBhkL+////H4MgBEL/////D4N+fCIHIBKFQiCJIgUgDHwgBUL/////D4MgDEIBhkL+////H4N+fCIDIASFQiiJIgQgB3wgBEL/////D4MgB0IBhkL+////H4N+fCILIAWFQjCJIgcgA3wgB0L/////D4MgA0IBhkL+////H4N+fCIFNwNIIAEgBzcDcCABIAs3AxggASAGIAiFQgGJNwM4IAEgBCAFhUIBiTcDICAAQQFqIgBBCEcNAAtBACEAA0AgGEGACGogAEEEdGoiASABKQOIAyIIIAEpA4gBIgd8IAdCAYZC/v///x+DIAhC/////w+DfnwiByABKQOIB4VCIIkiBCABKQOIBSIFfCAFQgGGQv7///8fgyAEQv////8Pg358IgUgCIVCKIkiCCAHfCAIQv////8PgyAHQgGGQv7///8fg358IgcgBIVCMIkiBCABKQOIAiIDIAEpAwgiBnwgBkIBhkL+////H4MgA0L/////D4N+fCIGIAEpA4gGhUIgiSILIAEpA4gEIgx8IAxCAYZC/v///x+DIAtC/////w+DfnwiDCADhUIoiSIDIAZ8IANC/////w+DIAZCAYZC/v///x+DfnwiBiALhUIwiSILIAx8IAtC/////w+DIAxCAYZC/v///x+DfnwiDCADhUIBiSIDIAEpA4ACIg8gASkDACIKfCAKQgGGQv7///8fgyAPQv////8Pg358IgogASkDgAaFQiCJIhAgASkDgAQiE3wgE0IBhkL+////H4MgEEL/////D4N+fCITIA+FQiiJIg8gCnwgD0L/////D4MgCkIBhkL+////H4N+fCIKfCADQv////8PgyAKQgGGQv7///8fg358IgmFQiCJIhQgASkDgAMiESABKQOAASINfCANQgGGQv7///8fgyARQv////8Pg358Ig0gASkDgAeFQiCJIhIgASkDgAUiDnwgDkIBhkL+////H4MgEkL/////D4N+fCIOIBGFQiiJIhEgDXwgEUL/////D4MgDUIBhkL+////H4N+fCINIBKFQjCJIhIgDnwgEkL/////D4MgDkIBhkL+////H4N+fCIOfCAUQv////8PgyAOQgGGQv7///8fg358IhUgA4VCKIkiAyAJfCADQv////8PgyAJQgGGQv7///8fg358Igk3AwAgASAJIBSFQjCJIgk3A4gHIAEgCSAVfCAJQv////8PgyAVQgGGQv7///8fg358Igk3A4AFIAEgAyAJhUIBiTcDiAIgASAEIAV8IARC/////w+DIAVCAYZC/v///x+DfnwiBCAOIBGFQgGJIgUgBnwgBUL/////D4MgBkIBhkL+////H4N+fCIDIAogEIVCMIkiBoVCIIkiCnwgBEIBhkL+////H4MgCkL/////D4N+fCIQIAWFQiiJIgUgA3wgBUL/////D4MgA0IBhkL+////H4N+fCIJIAqFQjCJIgM3A4AGIAEgCTcDCCABIAUgAyAQfCADQv////8PgyAQQgGGQv7///8fg358IgWFQgGJNwOAAyABIAU3A4gFIAEgBCAIhUIBiSIIIA18IAhC/////w+DIA1CAYZC/v///x+DfnwiBCALhUIgiSIFIAYgE3wgBkL/////D4MgE0IBhkL+////H4N+fCIDfCAFQv////8PgyADQgGGQv7///8fg358IgYgCIVCKIkiCCAEfCAIQv////8PgyAEQgGGQv7///8fg358IgQ3A4ABIAEgBCAFhUIwiSIENwOIBiABIAQgBnwgBEL/////D4MgBkIBhkL+////H4N+fCIGNwOABCABIAcgAyAPhUIBiSIEfCAHQgGGQv7///8fgyAEQv////8Pg358IgcgEoVCIIkiBSAMfCAFQv////8PgyAMQgGGQv7///8fg358IgMgBIVCKIkiBCAHfCAEQv////8PgyAHQgGGQv7///8fg358IgsgBYVCMIkiByADfCAHQv////8PgyADQgGGQv7///8fg358IgU3A4gEIAEgBzcDgAcgASALNwOIASABIAYgCIVCAYk3A4gDIAEgBCAFhUIBiTcDgAIgAEEBaiIAQQhHDQALIAIgGEGACBALIQFBACEAA0AgASAAQQN0IgJqIhYgFikDACAYQYAIaiIZIAJqKQMAhTcDACABIAJBCHIiFmoiFyAXKQMAIBYgGWopAwCFNwMAIAEgAkEQciIWaiIXIBcpAwAgGEGACGogFmopAwCFNwMAIAEgAkEYciICaiIWIBYpAwAgGEGACGogAmop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AnA3A+ADIAJBgARqIgMgAkHwA2ogAkHgA2oQCCABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJYNwPYAyACIAEpAlA3A9ADIAIgASkCaDcDyAMgAiABKQJgNwPAAyADIAJB0ANqIAJBwANqEAggASACKQKIBDcCaCABIAIpAoAENwJgIAIgASkCSDcDuAMgAiABQUBrIgApAgA3A7ADIAIgASkCWDcDqAMgAiABKQJQNwOgAyADIAJBsANqIAJBoANqEAggASACKQKIBDcCWCABIAIpAoAENwJQIAIgASkCODcDmAMgAiABKQIwNwOQAyACIAEpAkg3A4gDIAIgACkCADcDgAMgAyACQZADaiACQYADahAIIAEgAikCiAQ3AkggACACKQKABDcCACACIAEpAig3A/gCIAIgASkCIDcD8AIgAiABKQI4NwPoAiACIAEpAjA3A+ACIAMgAkHwAmogAkHgAmoQCCABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIYNwPYAiACIAEpAhA3A9ACIAIgASkCKDcDyAIgAiABKQIgNwPAAiADIAJB0AJqIAJBwAJqEAggASACKQKIBDcCKCABIAIpAoAENwIgIAIgASkCCDcDuAIgAiABKQIANwOwAiACIAEpAhg3A6gCIAIgASkCEDcDoAIgAyACQbACaiACQaACahAIIAEgAikCiAQ3AhggASACKQKABDcCECACIAIpA5gENwOYAiACIAIpA5AENwOQAiACIAEpAgg3A4gCIAIgASkCADcDgAIgAyACQZACaiACQYACahAIIAEgAikCiAQ3AgggASACKQKABDcCACABIBIgASgADHM2AgwgASARIAEoAAhzNgIIIAEgECABKAAEczYCBCABIBMgASgAAHM2AgAgACAPIAAoAABzNgIAIAEgDiABKABEczYCRCABIA0gASgASHM2AkggASAMIAEoAExzNgJMIAIgASkCeDcDmAQgAiABKQJwNwOQBCACIAEpAmg3A/gBIAIgASkCYDcD8AEgAiABKQJ4NwPoASACIAEpAnA3A+ABIAMgAkHwAWogAkHgAWoQCCABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJYNwPYASACIAEpAlA3A9ABIAIgASkCaDcDyAEgAiABKQJgNwPAASADIAJB0AFqIAJBwAFqEAggASACKQKIBDcCaCABIAIpAoAENwJgIAIgASkCSDcDuAEgAiAAKQIANwOwASACIAEpAlg3A6gBIAIgASkCUDcDoAEgAyACQbABaiACQaABahAIIAEgAikCiAQ3AlggASACKQKABDcCUCACIAEpAjg3A5gBIAIgASkCMDcDkAEgAiABKQJINwOIASACIAApAgA3A4ABIAMgAkGQAWogAkGAAWoQCCABIAIpAogENwJIIAAgAikCgAQ3AgAgAiABKQIoNwN4IAIgASkCIDcDcCACIAEpAjg3A2ggAiABKQIwNwNgIAMgAkHwAGogAkHgAGoQCCABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIYNwNYIAIgASkCEDcDUCACIAEpAig3A0ggAiABKQIgNwNAIAMgAkHQAGogAkFAaxAIIAEgAikCiAQ3AiggASACKQKABDcCICACIAEpAgg3AzggAiABKQIANwMwIAIgASkCGDcDKCACIAEpAhA3AyAgAyACQTBqIAJBIGoQCCABIAIpAogENwIYIAEgAikCgAQ3AhAgAiACKQOYBDcDGCACIAIpA5AENwMQIAIgASkCCDcDCCACIAEpAgA3AwAgAyACQRBqIAIQCCABIAIpAogENwIIIAEgAikCgAQ3AgAgASALIAEoAAxzNgIMIAEgCiABKAAIczYCCCABIAkgASgABHM2AgQgASAIIAEoAABzNgIAIAAgByAAKAAAczYCACABIAYgASgARHM2AkQgASAFIAEoAEhzNgJIIAEgBCABKABMczYCTCACQaAEaiQAC70JARF/IwBBoAJrIgMkACABKAAEIRAgASgACCERIAEoAAwhEiAAKAAEIQsgACgACCEMIAAoAAwhDSABKAAAIRMgAkHwAGoiASAAKAAAIg5BgIKEEHMiADYCACACQeAAaiIGIA5B2/vgqAVzNgIAIAJB0ABqIgcgADYCACACQUBrIgAgDiATcyIFNgIAIAJCoKLEkbSurZRdNwI4IAJBMGoiCELb++Co1c3wl3E3AgAgAkKVxNzJhbL6vOIANwIoIAJBIGoiCUKAgoSQsKCBhA03AgAgAkKgosSRtK6tlF03AhggAkEQaiIKQtv74KjVzfCXcTcCACACIAU2AgAgAiANQZDT55MGcyIFNgJ8IAIgDEGVxNzJBXMiBDYCeCACIAtBg4qg6ABzIg82AnQgAiANQfPqoul9czYCbCACIAxBoKLEkQRzNgJoIAIgC0HthL+Jf3M2AmQgAiAFNgJcIAIgBDYCWCACIA82AlQgAiANIBJzIgU2AkwgAiAMIBFzIgQ2AkggAiALIBBzIg82AkQgAiAFNgIMIAIgBDYCCCACIA82AgRBACEFA0AgAyABKQIINwOYAiADIAEpAgA3A5ACIAMgBikCCDcD+AEgAyAGKQIANwPwASADIAEpAgg3A+gBIAMgASkCADcD4AEgA0GAAmoiBCADQfABaiADQeABahAIIAEgAykCiAI3AgggASADKQKAAjcCACADIAcpAgg3A9gBIAMgBykCADcD0AEgAyAGKQIINwPIASADIAYpAgA3A8ABIAQgA0HQAWogA0HAAWoQCCAGIAMpAogCNwIIIAYgAykCgAI3AgAgAyAAKQIINwO4ASADIAApAgA3A7ABIAMgBykCCDcDqAEgAyAHKQIANwOgASAEIANBsAFqIANBoAFqEAggByADKQKIAjcCCCAHIAMpAoACNwIAIAMgCCkCCDcDmAEgAyAIKQIANwOQASADIAApAgg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAAgAykCiAI3AgggACADKQKAAjcCACADIAkpAgg3A3ggAyAJKQIANwNwIAMgCCkCCDcDaCADIAgpAgA3A2AgBCADQfAAaiADQeAAahAIIAggAykCiAI3AgggCCADKQKAAjcCACADIAopAgg3A1ggAyAKKQIANwNQIAMgCSkCCDcDSCADIAkpAgA3A0AgBCADQdAAaiADQUBrEAggCSADKQKIAjcCCCAJIAMpAoACNwIAIAMgAikCCDcDOCADIAIpAgA3AzAgAyAKKQIINwMoIAMgCikCADcDICAEIANBMGogA0EgahAIIAogAykCiAI3AgggCiADKQKAAjcCACADIAMpA5gCNwMYIAMgAykDkAI3AxAgAyACKQIINwMIIAMgAikCADcDACAEIANBEGogAxAIIAIgAykCiAI3AgggAiADKQKAAjcCACACIAIoAAwgEnM2AgwgAiACKAAIIBFzNgIIIAIgAigABCAQczYCBCACIAIoAAAgE3M2AgAgACAAKAAAIA5zNgIAIAIgAigARCALczYCRCACIAIoAEggDHM2AkggAiACKABMIA1zNgJMIAVBAWoiBUEKRw0ACyADQaACaiQACxAAIAAgAUGMlwIoAgARAAAL0g8BJH8jAEHwBGsiAiQAIAJB4ANqIgMgARAFIANB4AwgAxAGIAIgAigChAQiBzYClAIgAiACKAKABCIINgKQAiACIAIoAvwDIgk2AowCIAIgAigC+AMiCjYCiAIgAiACKAL0AyILNgKEAiACIAIoAvADIgw2AoACIAIgAigC7AMiDTYC/AEgAiACKALoAyIONgL4ASACIAIoAuQDIgU2AvQBIAIgAigC4AMiBkEBajYC8AEgAkHwAWoiBCAEQbCJAhAGIAIgB0HM5N8FazYC1AMgAiAIQYCS9QhrNgLQAyACIAlB55zGAWs2AswDIAIgCkHEhv8CazYCyAMgAiALQeiumARrNgLEAyACIAxBqYAHajYCwAMgAiANQY+UqANqNgK8AyACIA5Bw6KqB2s2ArgDIAIgBUGF5c0GajYCtAMgAiAGQcqOmgVrNgKwAyACQcABaiIZIANBsAwQBiACQQAgAigC5AFrNgLkASACQQAgAigC4AFrNgLgASACQQAgAigC3AFrNgLcASACQQAgAigC2AFrNgLYASACQQAgAigC1AFrNgLUASACQQAgAigC0AFrNgLQASACQQAgAigCzAFrNgLMASACQQAgAigCyAFrNgLIASACQQAgAigCxAFrNgLEASACIAIoAsABQX9zNgLAASAZIBkgAkGwA2oQBiACQYADaiIiIAQgGRBqIQMgAkHQAmoiBCAiIAEQBiACQcAEaiIkIAQQESACLQDABCElIAIoAqQDIRogAigC9AIhBCACKAKgAyEbIAIoAvACIRAgAigCnAMhHCACKALsAiERIAIoApgDIR0gAigC6AIhEiACKAKUAyEeIAIoAuQCIRMgAigCkAMhHyACKALgAiEUIAIoAowDISAgAigC3AIhFSACKAKIAyEhIAIoAtgCIRYgAigChAMhDyACKALUAiEXIAIoAoADISMgAigC0AIhGCACIAcgA0EBayIBcTYC5AQgAiABIAhxNgLgBCACIAEgCXE2AtwEIAIgASAKcTYC2AQgAiABIAtxNgLUBCACIAEgDHE2AtAEIAIgASANcTYCzAQgAiABIA5xNgLIBCACIAEgBXE2AsQEIAIgBkEAIANrcjYCwAQgAiAjICNBACAYQQAgJUEBcWsiAyAYQQAg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IAIgASADEAYgAkGQBmoiASACEAUgASABEAUgAkGQB2oiBSACIAEQBiACQcAEaiIDIAUQBSADIAMQBSADIAMQBSADIAMQBSACQZAEaiIBIAUgAxAGIAEgARAFIAEgARAFIAEgASACEAYgAiACKQOwBDcDgAQgAiACKQOoBDcD+AMgAiACKQOgBDcD8AMgAiACKQOYBDcD6AMgAiACKQOQBDcD4AMgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAJB4ANqIgMQBiABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEgAxAGIAIgAikDsAQ3A9ADIAIgAikDqAQ3A8gDIAIgAikDoAQ3A8ADIAIgAikDmAQ3A7gDIAIgAikDkAQ3A7ADIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASACQbADaiIDEAYgAiACKQOwBDcD0AMgAiACKQOoBDcDyAMgAiACKQOgBDcDwAMgAiACKQOYBDcDuAMgAiACKQOQBDcDsAMgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAMQBiACIAIpA7AENwPQAyACIAIpA6gENwPIAyACIAIpA6AENwPAAyACIAIpA5gENwO4AyACIAIpA5AENwOwAwNAIAJBkARqIgEgARAFIARBAWoiBEH4AEcNAAsgASABIAJBsANqEAYgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAJB4ANqEAYgASABEAUgASABEAUgASABEAUgASABIAIQBiABIAEQBSACQZADaiABEBEgAigCgAIhAyACKAKEAiEEIAIoAogCIQUgAigCjAIhBiACKAKQAiEHIAIoApQCIQggAigCmAIhCSACKAKcAiEKIAIoAqACIQsgAkEAIAItAJEDQQFxayIBIAIoAqQCIgxBACAMa3NxIAxzIgw2ApQFIAIgCyALQQAgC2tzIAFxcyILNgKQBSACIAogCkEAIAprcyABcXMiCjYCjAUgAiAJIAlBACAJa3MgAXFzIgk2AogFIAIgCCAIQQAgCGtzIAFxcyIINgKEBSACIAcgB0EAIAdrcyABcXMiBzYCgAUgAiAGIAZBACAGa3MgAXFzIgY2AvwEIAIgBSAFQQAgBWtzIAFxcyIFNgL4BCACIAQgBEEAIARrcyABcXMiBDYC9AQgAiADIANBACADa3MgAXFzIAFBhtodcWsiAUEBajYC8AQgAiAMNgK0BiACIAs2ArAGIAIgCjYCrAYgAiAJNgKoBiACIAg2AqQGIAIgBzYCoAYgAiAGNgKcBiACIAU2ApgGIAIgBDYClAYgAiABQQFrNgKQBiACIAJB8ARqEDUgAkGQB2oiASACQZAGaiACEAYgACABEBEgACAALQAfIBByOgAfIAIgABA0BEAQiwEACyACIAIpAiA3A7AGIAIgAikCGDcDqAYgAiACKQIQNwOgBiACIAIpAgg3A5gGIAIgAikCMDcDwAYgAiACKQI4NwPIBiACIAJBQGspAgA3A9AGIAIgAikCSDcD2AYgAiACKQIANwOQBiACIAIpAig3A7gGIAIgAikCcDcDgAcgAiACKQJoNwP4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QQFrQR92ECogACABQcAHaiAEQQdzQf8BcUEBa0EfdhAqIAAgAUHgCGogBEEIc0H/AXFBAWtBH3YQKiADIAApAkg3AyAgAyAAQUBrKQIANwMYIAMgACkCODcDECADIAApAjA3AwggAyAAKQIoNwMAIAMgACkCIDcDSCADQUBrIAApAhg3AwAgAyAAKQIQNwM4IAMgACkCCDcDMCADIAApAgA3AyggAyAAKQJYNwNYIAMgACkCYDcDYCADIAApAmg3A2ggAyAAKQJwNwNwIAMgACkCUDcDUCAAKAJ8IQEgACgCgAEhBCAAKAKEASEFIAAoAogBIQYgACgCjAEhByAAKAKQASEIIAAoApQBIQkgACgCmAEhCiAAKAJ4IQsgA0EAIAAoApwBazYCnAEgA0EAIAprNgKYASADQQAgCWs2ApQBIANBACAIazYCkAEgA0EAIAdrNgKMASADQQAgBms2AogBIANBACAFazYChAEgA0EAIARrNgKAASADQQAgAWs2AnwgA0EAIAtrNgJ4IAAgAyACQYABcUEHdhAqIANBoAFqJAALjhEBE38jAEHAH2siAyQAIANBoAFqIAIQECADQYAeaiIGIAIpAiA3AwAgA0H4HWoiByACKQIYNwMAIANB8B1qIgkgAikCEDcDACADQegdaiIMIAIpAgg3AwAgAyACKQIANwPgHSADQZAeaiINIAIpAjA3AwAgA0GYHmoiDiACKQI4NwMAIANBoB5qIg8gAkFAaykCADcDACADQageaiIQIAIpAkg3AwAgAyACKQIoNwOIHiADQbgeaiIRIAIpAlg3AwAgA0HAHmoiEiACKQJgNwMAIANByB5qIhMgAikCaDcDACADQdAeaiIUIAIpAnA3AwAgAyACKQJQNwOwHiADQcgbaiIIIANB4B1qIhUQGCADQegSaiILIAggA0HAHGoiBBAGIANBkBNqIANB8BtqIgUgA0GYHGoiChAGIANBuBNqIAogBBAGIANB4BNqIAggBRAGIANBwAJqIgQgCxAQIANBqBpqIgggAiAEEBMgA0HIEWoiCyAIIANBoBtqIgQQBiADQfARaiADQdAaaiIFIANB+BpqIgoQBiADQZgSaiAKIAQQBiADQcASaiAIIAUQBiADQeADaiALEBAgBiADQYgTaikCADcDACAHIANBgBNqKQIANwMAIAkgA0H4EmopAgA3AwAgDCADQfASaikCADcDACANIANBmBNqKQIANwMAIA4gA0GgE2opAgA3AwAgDyADQagTaikCADcDACAQIANBsBNqKQIANwMAIAMgAykC6BI3A+AdIAMgAykCkBM3A4geIBQgA0HYE2opAgA3AwAgEyADQdATaikCADcDACASIANByBNqKQIANwMAIBEgA0HAE2opAgA3AwAgAyADKQK4EzcDsB4gA0GIGWoiCCAVEBggA0GoEGoiCyAIIANBgBpqIgQQBiADQdAQaiADQbAZaiIFIANB2BlqIgoQBiADQfgQaiAKIAQQBiADQaARaiAIIAUQBiADQYAFaiIEIAsQECADQegXaiIIIAIgBBATIANBiA9qIgsgCCADQeAYaiIEEAYgA0GwD2ogA0GQGGoiBSADQbgYaiIKEAYgA0HYD2ogCiAEEAYgA0GAEGogCCAFEAYgA0GgBmogCxAQIAYgA0HoEWopAgA3AwAgByADQeARaikCADcDACAJIANB2BFqKQIANwMAIAwgA0HQEWopAgA3AwAgDSADQfgRaikCADcDACAOIANBgBJqKQIANwMAIA8gA0GIEmopAgA3AwAgECADQZASaikCADcDACADIAMpAsgRNwPgHSADIAMpAvARNwOIHiAUIANBuBJqKQIANwMAIBMgA0GwEmopAgA3AwAgEiADQagSaikCADcDACARIANBoBJqKQIANwMAIAMgAykCmBI3A7AeIANByBZqIgggFRAYIANB6A1qIgsgCCADQcAXaiIEEAYgA0GQDmogA0HwFmoiBSADQZgXaiIKEAYgA0G4DmogCiAEEAYgA0HgDmogCCAFEAYgA0HAB2oiBCALEBAgA0GoFWoiCiACIAQQEyADQcgMaiIIIAogA0GgFmoiAhAGIANB8AxqIANB0BVqIgQgA0H4FWoiBRAGIANBmA1qIAUgAhAGIANBwA1qIAogBBAGIANB4AhqIAgQECAGIANByBBqKQIANwMAIAcgA0HAEGopAgA3AwAgCSADQbgQaikCADcDACAMIANBsBBqKQIANwMAIA0gA0HYEGopAgA3AwAgDiADQeAQaikCADcDACAPIANB6BBqKQIANwMAIBAgA0HwEGopAgA3AwAgAyADKQKoEDcD4B0gAyADKQLQEDcDiB4gFCADQZgRaikCADcDACATIANBkBFqKQIA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azYCACAAQQAgACgCJGs2AiQgAEEAIAAoAiBrNgIgIABBACAAKAIcazYCHCAAQQAgACgCGGs2AhggAEEAIAAoAhRrNgIUIABBACAAKAIQazYCECAAQQAgACgCDGs2AgwgAEEAIAAoAghrNgIIIABBACAAKAIEazYCBAsgAEH4AGogACAGEAZBACEHCyACQcACaiQAIAcLBQBBgAILEAAgACABQYSXAigCABEAAAsQACAAIAFB/JYCKAIAEQAACy0BAX4gAq0gA61CIIaEIgZCEFoEfyAAIAFBEGogASAGQhB9IAQgBRBeBUF/CwsYACAAIAEgAiADrSAErUIghoQgBSAGEF4LGAAgACABIAIgA60gBK1CIIaEIAUgBhBPCxYAIAAgASACrSADrUIghoQgBCAFEHkLFQAgACABrSACrUIghoQgAyAEEM0BCxYAIAAgASACrSADrUIghoQgBEEAEHYLFwAgACABIAIgA60gBK1CIIaEIAUQhQMLFwAgACABIAIgA60gBK1CIIaEIAUQgwMLFwAgACABIAIgA60gBK1CIIaEIAUQhAMLFQAgACABIAKtIAOtQiCGhCAEEOkCCx8AIAAgASACrSADrUIghoQgBK0gBa1CIIaEIAYQ0QELGgAgACABIAKtIAOtQiCGhEGAlwIoAgARAgALHAAgACABIAKtIAOtQiCGhCAEQfiWAigCABERAAscACAAIAEgAq0gA61CIIaEIARB9JYCKAIAEREACxcAIAAgASACrSADrUIghoQgBCAFEOoCCxIAIAAgASACrSADrUIghoQQRwsYACAAIAEgAiADrSAErUIghoQgBSAGEGELLQEBfiACrSADrUIghoQiBkIQWgR/IAAgAUEQaiABIAZCEH0gBCAFEF0FQX8LCxgAIAAgASACIAOtIAStQiCGhCAFIAYQXQsYACAAIAEgAiADrSAErUIghoQgBSAGEE4LGQAgACABIAKtIAOtQiCGhCAEIAUgBhD3AgsZACAAIAEgAq0gA61CIIaEIAQgBSAGEPgCCxIAIAAgASACrSADrUIghoQQJgsVACAAIAEgAq0gA61CIIaEIAQQ4gILFQAgACABIAKtIAOtQiCGhCAEEOMCC4wBAQF/IwBBEGsiAiAANgIMIAIgATYCCEEAIQAgAkEANgIEA0AgAiACKAIEIAIoAgwgAGotAAAgAigCCCAAai0AAHNyNgIEIAIgAigCBCAAQQFyIgEgAigCDGotAAAgAigCCCABai0AAHNyNgIEIABBAmoiAEHAAEcNAAsgAigCBEEBa0EIdkEBcUEBawvaAgECfyMAQZADayIIJAAgCEEANgIEIAhBEGoiCSAGIAdBABAbGiAIIAYpABA3AgggCEHQAGoiB0LAACAIQQRqIAkQMxogCEGQAWoiBiAHQfyWAigCABEAABogB0HAABAJIAYgBCAFQYCXAigCABECABogBkHglgJCACAFfUIPg0GAlwIoAgARAgAaIAYgASACQYCXAigCABECABogBkHglgJCACACfUIPg0GAlwIoAgARAgAaIAggBTcDSCAGIAhByABqIgRCCEGAlwIoAgARAgAaIAggAjcDSCAGIARCCEGAlwIoAgARAgAaIAYgCEEwaiIEQYSXAigCABEAABogBkGAAhAJIAQgAxA3IQYgBEEQEAkCQCAARQ0AIAYEQCAAQQAgAqcQDBpBfyEGDAELIAAgASACIAhBBGogCEEQahDqAUEAIQYLIAhBEGpBIBAJIAhBkANqJAAgBgusAgEDfyMAQYADayIJJAAgCUEANgIEIAlBEGoiCiAHIAhBABAbGiAJIAcpABA3AgggCUFAayIIQsAAIAlBBGoiCyAKEDMaIAlBgAFqIgcgCEH8lgIoAgARAAAaIAhBwAAQCSAHIAUgBkGAlwIoAgARAgAaIAdB4JYCQgAgBn1CD4NBgJcCKAIAEQIAGiAAIAMgBCALIAoQ6gEgByAAIARBgJcCKAIAEQIAGiAHQeCWAkIAIAR9Qg+DQYCXAigCABECABogCSAGNwM4IAcgCUE4aiIAQghBgJcCKAIAEQIAGiAJIAQ3AzggByAAQghBgJcCKAIAEQIAGiAHIAFBhJcCKAIAEQAAGiAHQYACEAkgAgRAIAJCEDcDAAsgCUEQakEgEAkgCUGAA2okAEEAC0oBAn8jAEEgayIGJABBfyEHAkAgAkIQVA0AIAYgBCAFEEANACAAIAFBEGogASACQhB9IAMgBhBdIQcgBkEgEAkLIAZBIGokACAHC08BAn8jAEEgayIGJAAgAkLw////D1QEQEF/IQcgBiAEIAUQQEUEQCAAQRBqIAAgASACIAMgBhBOIQcgBkEgEAkLIAZBIGokACAHDwsQDgAL6AQBAn8jAEGgAWsiBCQAIAAgAS0AADoAACAAIAEtAAE6AAEgACABLQACOgACIAAgAS0AAzoAAyAAIAEtAAQ6AAQgACABLQAFOgAFIAAgAS0ABjoABiAAIAEtAAc6AAcgACABLQAIOgAIIAAgAS0ACToACSAAIAEtAAo6AAogACABLQALOgALIAAgAS0ADDoADCAAIAEtAA06AA0gACABLQAOOgAOIAAgAS0ADzoADyAAIAEtABA6ABAgACABLQAROgARIAAgAS0AEjoAEiAAIAEtABM6ABMgACABLQAUOgAUIAAgAS0AFToAFSAAIAEtABY6ABYgACABLQAXOgAXIAAgAS0AGDoAGCAAIAEtABk6ABkgACABLQAaOgAaIAAgAS0AGzoAGyAAIAEtABw6ABwgACABLQAdOgAdIAAgAS0AHjoAHiABLQAfIQMgACACBH8gACAALQAAQfgBcToAACADQcAAcgUgAwtB/wBxOgAfIAQgABA+IAAgBBAvQX8hAyAALQAfQf8AcSAALQAeIAAtAB0gAC0AHCAALQAbIAAtABogAC0AGSAALQAYIAAtABcgAC0AFiAALQAVIAAtABQgAC0AEyAALQASIAAtABEgAC0AECAALQAPIAAtAA4gAC0ADSAALQAMIAAtAAsgAC0ACiAALQAJIAAtAAggAC0AByAALQAGIAAtAAUgAC0ABCAALQADIAAtAAIgAC0AASAALQAAQQFzcnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyckEBa0GAAnFFBEBBf0EAIAFBIBAaGyEDCyAEQaABaiQAIAMLjgUBAn8jAEHAAmsiBCQAQX8hBQJAIAIQa0UNACACEEwNACAEIAIQNA0AIAQQbEUNACAAIAEtAAA6AAAgACABLQABOgABIAAgAS0AAjoAAiAAIAEtAAM6AAMgACABLQAEOgAEIAAgAS0ABToABSAAIAEtAAY6AAYgACABLQAHOgAHIAAgAS0ACDoACCAAIAEtAAk6AAkgACABLQAKOgAKIAAgAS0ACzoACyAAIAEtAAw6AAwgACABLQANOgANIAAgAS0ADjoADiAAIAEtAA86AA8gACABLQAQOgAQIAAgAS0AEToAESAAIAEtABI6ABIgACABLQATOgATIAAgAS0AFDoAFCAAIAEtABU6ABUgACABLQAWOgAWIAAgAS0AFzoAFyAA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DCAHKQAAQuv6htq/tfbBH4ULIQ4gAUFAa0EAQaUCEAwaIAEgDDcDOCABIA43AzAgASALNwMoIAEgDTcDICABQvHt9Pilp/2npX83AxggAUKr8NP0r+68tzw3AxAgAUK7zqqm2NDrs7t/NwMIIAEgCK1CiJL3lf/M+YTqAIU3AwBBAAshBAJAIANQDQAgAUHgAWohCSABQeAAaiEFA0AgBCAFaiEHQYACIARrIgatIgsgA1oEQCAHIAIgA6ciAhALGiABIAEoAuACIAJqNgLgAgwCCyAHIAIgBhALGiABIAEoAuACIAZqNgLgAiABIAEpA0AiDEKAAXw3A0AgASABKQNIIAxC/35WrXw3A0ggASAFEFIgBSAJQYABEAsaIAEgASgC4AJBgAFrIgQ2AuACIAIgBmohAiADIAt9IgNCAFINAAsLIAEgACAIEIMBGiAKJABBAAwBCxAOAAshCAsgCAsFAEGAAwsKACAAIAEgAhAHC/ADAgJ/An4jAEHAAWsiAyQAIANCADcDkAEgA0IANwOYASADQgA3A2ggA0IANwNwIANCADcDeCADQfiSAikDADcDqAEgA0GAkwIpAwA3A7ABIANBiJMCKQMANwO4ASADQgA3A4ABIANCADcDiAEgA0IANwNgIANB8JICKQMANwOgASADIAIpABA3A1AgAyACKQAYNwNYIAMgAikAADcDQCADIAIpAAg3A0ggA0GAAWoiAiADQUBrIgQQhQEgAhAoIAMgAykDmAE3AxggAyADKQOQATcDECADIAMpA4gBNwMIIAMgAykDgAE3AwAgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIAMgASkAEDcDUCADIAEpABg3A1ggASkACCEFIAEpAAAhBiADQgA3AzggA0IANwMwIANCADcDKCADIAY3A0AgAyAFNwNIIANCADcDICAEIAMQ6QEgAyADKQN4NwO4ASADIAMpA3A3A7ABIAMgAykDaDcDqAEgAyADKQNgNwOgASADIAMpA1g3A5gBIAMgAykDUDcDkAEgAyADKQNINwOIASADIAMpA0A3A4ABIAIQKCAAIAMpA5gBNwAYIAAgAykDkAE3ABAgACADKQOIATcACCAAIAMpA4ABNwAAIAJBwAAQCSADQcABaiQAC5cBAQF/IwBBQGoiAiQAIAIgASkAODcDOCACIAEpADA3AzAgAiABKQAoNwMoIAIgASkAIDcDICACIAEpABg3AxggAiABKQAQNwMQIAIgASkAADcDACACIAEpAAg3AwggAhAoIAAgAikDGDcAGCAAIAIpAxA3ABAgACACKQMINwAIIAAgAikDADcAACACQcAAEAkgAkFAayQAC8cCAgF/An4jAEHAAWsiAyQAIANCADcDYCADQgA3A2ggA0IANwNwIANCADcDeCADIAEpABA3A1AgAyABKQAYNwNYIAEpAAghBCABKQAAIQUgA0IANwMoIANCADcDMCADQgA3AzggAyAFNwNAIAMgBDcDSCADQgA3AyAgAyACKQAQNwMQIAMgAikAGDcDGCADIAIpAAA3AwAgAyACKQAINwMIIANBQGsgAxDpASADIAMpA3g3A7gBIAMgAykDcDcDsAEgAyADKQNoNwOoASADIAMpA2A3A6ABIAMgAykDWDcDmAEgAyADKQNQNwOQASADIAMpA0g3A4gBIAMgAykDQDcDgAEgA0GAAWoiARAoIAAgAykDmAE3ABggACADKQOQATcAECAAIAMpA4gBNwAIIAAgAykDgAE3AAAgAUHAABAJIANBwAFqJAAL5QEBAX8jAEGAAWsiAiQAIAJCADcDUCACQgA3A1ggAkIANwMoIAJCADcDMCACQgA3AzggAkH4kgIpAwA3A2ggAkGAkwIpAwA3A3AgAkGIkwIpAwA3A3ggAkIANwNAIAJCADcDSCACQQE6AEAgAkIANwMgIAJB8JICKQMANwNgIAIgASkAGDcDGCACIAEpABA3AxAgAiABKQAINwMIIAIgASkAADcDACACQUBrIgEgAhCFASABECggACACKQNYNwAYIAAgAikDUDcAECAAIAIpA0g3AAggACACKQNANwAAIAJBgAFqJAAL3gEBAX8jAEGAAWsiAiQAIAJCADcDUCACQgA3A1ggAkIANwMoIAJCADcDMCACQgA3AzggAkH4kgIpAwA3A2ggAkGAkwIpAwA3A3AgAkGIkwIpAwA3A3ggAkIANwNAIAJCADcDSCACQgA3AyAgAkHwkgIpAwA3A2AgAiABKQAQNwMQIAIgASkAGDcDGCACIAEpAAA3AwAgAiABKQAINwMIIAJBQGsiASACEIUBIAEQKCAAIAIpA1g3ABggACACKQNQNwAQIAAgAikDSDcACCAAIAIpA0A3AAAgAkGAAWokAAvPCwELfyMAQeAFayICJAAgAkHABWoiByABIAEQByACQeABaiIGIAEgBxAHIAJBoAVqIgQgASAGEAcgAkGABWoiBSAEIAQQByACQaADaiIJIAcgBRAHIAJBwAJqIgcgASAJEAcgAkHgBGoiAyAFIAUQByACQaACaiIFIAcgBxAHIAJBwARqIgggCSAFEAcgAkHAA2oiDCADIAUQByACQaAEaiIKIAggCBAHIAJBgANqIgggAyAKEAcgAkHgAmoiCyAGIAgQByACQcABaiIGIAMgCxAHIAJBoAFqIgMgBCAGEAcgAkHgAGogBCADEAcgAkGABGoiBiAKIAsQByACQeADaiIDIAQgBhAHIAJBgAJqIgYgDCADEAcgAkGAAWogBSAGEAcgAkFAayIFIAggAxAHIAJBIGoiAyAEIAUQByACIAkgAxAHIAAgByACEAdBACEEA0AgACAAIAAQByAEQQFqIgRB/gBHDQALIAAgACACQeACahAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACQcAFahAHIAAgACACEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkGgAWoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAhAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkGAAmoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAJBQGsQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHgAGoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHAAmoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAJBgARqEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHAAWoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHgA2oQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACQYABahAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkEgahAHIAJB4AVqJABBACABQSAQGmsLKAADQCAAQSAQGSAAIAAtAB9BH3E6AB8gABCNAUUNACAAQSAQGg0ACwsKACAAIAEgAhAuCykBAX8jAEEQayIAJAAgAEEAOgAPQeSfAiAAQQ9qQQAQABogAEEQaiQAC2MBBX8DQCAAIANqIgIgASADai0AACAEIAItAABqaiICOgAAIAAgA0EBciIEaiIGIAEgBGotAAAgBi0AACACQQh2amoiAjoAACACQQh2IQQgA0ECaiEDIAVBAmoiBUEgRw0ACwsoACACQoCAgIAQWgRAEA4ACyAAIAEgAiADQQEgBEG8nwIoAgAREAAaCwQAQQwLdAEFfwJAQQEhAgNAIAAgA2oiASACIAEtAABqIgI6AAAgASABLQABIAJBCHZqIgI6AAEgASABLQACIAJBCHZqIgI6AAIgASABLQADIAJBCHZqIgE6AAMgAUEIdiECIANBBGohAyAEQQRqIgRBBEcNAAsMAAsLggcBFH8jAEHwAWsiBCQAIARCADcDyAEgBEIANwPAASAEQcABaiIJIAEgAhALGiADKAAQIQYgA0FAayIBKAAAIQcgAygAUCEFIAMoACAhCCADKAAwIQogAygAFCELIAMoAEQhDCADKABUIQ0gAygAJCEOIAMoADQhDyADKAAYIRAgAygASCERIAMoAFghEiADKAAoIRMgAygAOCEUIAQoAsABIRUgBCgCxAEhFiAEKALIASEXIAQgAygALCADKAA8cSADKAAcIAMoAEwgAygAXCAEKALMAXNzc3M2AswBIAQgEyAUcSAQIBEgEiAXc3NzczYCyAEgBCAOIA9xIAsgDCANIBZzc3NzNgLEASAEIAggCnEgBiAHIAUgFXNzc3M2AsABIAIgCWpBAEEQIAJrEAwaIAAgCSACEAsaIAQoAsABIQAgBCgCxAEhAiAEKALIASEGIAQoAswBIQcgBCADKQJYNwPoASAEIAMpAlA3A+ABIAQgAykCSDcDuAEgBCABKQIANwOwASAEIAMpAlg3A6gBIAQgAykCUDcDoAEgBEHQAWoiBSAEQbABaiAEQaABahAIIAMgBCkC2AE3AlggAyAEKQLQATcCUCAEIAMpAjg3A5gBIAQgAykCMDcDkAEgBCADKQJINwOIASAEIAEpAgA3A4ABIAUgBEGQAWogBEGAAWoQCCADIAQpAtgBNwJIIAEgBCkC0AE3AgAgBCADKQIoNwN4IAQgAykCIDcDcCAEIAMpAjg3A2ggBCADKQIwNwNgIAUgBEHwAGogBEHgAGoQCCADIAQpAtgBNwI4IAMgBCkC0AE3AjAgBCADKQIYNwNYIAQgAykCEDcDUCAEIAMpAig3A0ggBCADKQIgNwNAIAUgBEHQAGogBEFAaxAIIAMgBCkC2AE3AiggAyAEKQLQATcCICAEIAMpAgg3AzggBCADKQIANwMwIAQgAykCGDcDKCAEIAMpAhA3AyAgBSAEQTBqIARBIGoQCCADIAQpAtgBNwIYIAMgBCkC0AE3AhAgBCAEKQPoATcDGCAEIAQpA+ABNwMQIAQgAykCCDcDCCAEIAMpAgA3AwAgBSAEQRBqIAQQCCAEKALQASEBIAQoAtQBIQUgBCgC2AEhCCADIAcgBCgC3AFzNgIMIAMgBiAIczYCCCADIAIgBXM2AgQgAyAAIAFzNgIAIARB8AFqJAALqwYBFH8jAEHgAWsiAyQAIAIoABAhBCACQUBrIgUoAAAhBiACKABQIQkgAigAICEKIAIoADAhCyACKAAUIQcgAigARCEMIAIoAFQhDSABKAAEIQ4gAigAJCEPIAIoADQhECACKAAYIQggAigASCERIAIoAFghEiABKAAIIRMgAigAKCEUIAIoADghFSABKAAAIRYgACACKAAsIAIoADxxIAIoABwgAigATCACKABcIAEoAAxzc3NzIgE2AAwgACAUIBVxIAggESASIBNzc3NzIgg2AAggACAPIBBxIAcgDCANIA5zc3NzIgc2AAQgACAKIAtxIAQgBiAJIBZzc3NzIgA2AAAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCSDcDuAEgAyAFKQIANwOwASADIAIpAlg3A6gBIAMgAikCUDcDoAEgA0HAAWoiBCADQbABaiADQaABahAIIAIgAykCyAE3AlggAiADKQLAATcCUCADIAIpAjg3A5gBIAMgAikCMDcDkAEgAyACKQJINwOIASADIAUpAgA3A4ABIAQgA0GQAWogA0GAAWoQCCACIAMpAsgBNwJIIAUgAykCwAE3AgAgAyACKQIoNwN4IAMgAikCIDcDcCADIAIpAjg3A2ggAyACKQIwNwNgIAQgA0HwAGogA0HgAGoQCCACIAMpAsgBNwI4IAIgAykCwAE3AjAgAyACKQIYNwNYIAMgAikCEDcDUCADIAIpAig3A0ggAyACKQIgNwNAIAQgA0HQAGogA0FAaxAIIAIgAykCyAE3AiggAiADKQLAATcCICADIAIpAgg3AzggAyACKQIANwMwIAMgAikCGDcDKCADIAIpAhA3AyAgBCADQTBqIANBIGoQCCACIAMpAsgBNwIYIAIgAykCwAE3AhAgAyADKQPYATcDGCADIAMpA9ABNwMQIAMgAikCCDcDCCADIAIpAgA3AwAgBCADQRBqIAMQCCADKALAASEFIAMoAsQBIQQgAygCyAEhBiACIAMoAswBIAFzNgIMIAIgBiAIczYCCCACIAQgB3M2AgQgAiAAIAVzNgIAIANB4AFqJAALiwkBEX8jAEHgAWsiBSQAIAQoADwgA0EddnMhDiAEKAA4IANBA3RzIQ8gBCgANCACQR12cyEQIARBMGoiAygAACACQQN0cyERIARBEGohAiAEQSBqIQYgBEFAayEHIARB0ABqIQgDQCAFIAgpAgg3A9gBIAUgCCkCADcD0AEgBSAHKQIINwO4ASAFIAcpAgA3A7ABIAUgCCkCCDcDqAEgBSAIKQIANwOgASAFQcABaiIJIAVBsAFqIAVBoAFqEAggCCAFKQLIATcCCCAIIAUpAsABNwIAIAUgAykCCDcDmAEgBSADKQIANwOQASAFIAcpAgg3A4gBIAUgBykCADcDgAEgCSAFQZABaiAFQYABahAIIAcgBSkCyAE3AgggByAFKQLAATcCACAFIAYpAgg3A3ggBSAGKQIANwNwIAUgAykCCDcDaCAFIAMpAgA3A2AgCSAFQfAAaiAFQeAAahAIIAMgBSkCyAE3AgggAyAFKQLAATcCACAFIAIpAgg3A1ggBSACKQIANwNQIAUgBikCCDcDSCAFIAYpAgA3A0AgCSAFQdAAaiAFQUBrEAggBiAFKQLIATcCCCAGIAUpAsABNwIAIAUgBCkCCDcDOCAFIAQpAgA3AzAgBSACKQIINwMoIAUgAikCADcDICAJIAVBMGogBUEgahAIIAIgBSkCyAE3AgggAiAFKQLAATcCACAFIAUpA9gBNwMYIAUgBSkD0AE3AxAgBSAEKQIINwMIIAUgBCkCADcDACAJIAVBEGogBRAIIAUoAsABIQsgBSgCxAEhDCAFKALIASEJIAQgDiAFKALMAXMiDTYCDCAEIAkgD3MiCTYCCCAEIAwgEHMiDDYCBCAEIAsgEXMiCzYCACAKQQFqIgpBB0cNAAsCQAJAAkACQCABQRBrDhEAAgICAgICAgICAgICAgICAQILIAQoABAhASAEKAAwIQIgBCgAICEDIAQoAFAhBiAEQUBrKAAAIQcgBCgAFCEIIAQoADQhCiAEKAAkIQ4gBCgAVCEPIAQoAEQhECAEKAAYIREgBCgAOCESIAQoACghEyAEKABYIRQgBCgASCEVIAAgBCgAHCAEKAA8IAQoACwgBCgAXCAEKABMc3NzcyANczYADCAAIBEgEiATIBQgFXNzc3MgCXM2AAggACAIIAogDiAPIBBzc3NzIAxzNgAEIAAgASACIAMgBiAHc3NzcyALczYAAAwCCyAEKAAgIQEgBCgAECECIAQoACQhAyAEKAAUIQYgBCgAKCEHIAQoABghCCAAIAQoACwgBCgAHHMgDXM2AAwgACAHIAhzIAlzNgAIIAAgAyAGcyAMczYABCAAIAEgAnMgC3M2AAAgBCgAMCEBIAQoAFAhAiAEQUBrKAAAIQMgBCgANCEGIAQoAFQhByAEKABEIQggBCgAOCEKIAQoAFghDSAEKABIIQkgACAEKAA8IAQoAFwgBCgATHNzNgAcIAAgCiAJIA1zczYAGCAAIAYgByAIc3M2ABQgACABIAIgA3NzNgAQDAELIABBACABEAwaCyAFQeABaiQAC6UGARR/IwBB4AFrIgMkACACKAAQIQUgAkFAayIEKAAAIQkgAigAUCEKIAIoACAhCyACKAAwIQwgASgABCEGIAIoABQhDSACKABEIQ4gAigAVCEPIAIoACQhECACKAA0IREgASgACCEHIAIoABghEiACKABIIRMgAigAWCEUIAIoACghFSACKAA4IRYgASgAACEIIAAgASgADCIBIAIoACwgAigAPHEgAigAHCACKABcIAIoAExzc3NzNgAMIAAgByAVIBZxIBIgEyAUc3NzczYACCAAIAYgECARcSANIA4gD3Nzc3M2AAQgACAIIAsgDHEgBSAJIApzc3NzNgAAIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAkg3A7gBIAMgBCkCADcDsAEgAyACKQJYNwOoASADIAIpAlA3A6ABIANBwAFqIgAgA0GwAWogA0GgAWoQCCACIAMpAsgBNwJYIAIgAykCwAE3AlAgAyACKQI4NwOYASADIAIpAjA3A5ABIAMgAikCSDcDiAEgAyAEKQIANwOAASAAIANBkAFqIANBgAFqEAggAiADKQLIATcCSCAEIAMpAsABNwIAIAMgAikCKDcDeCADIAIpAiA3A3AgAyACKQI4NwNoIAMgAikCMDcDYCAAIANB8ABqIANB4ABqEAggAiADKQLIATcCOCACIAMpAsABNwIwIAMgAikCGDcDWCADIAIpAhA3A1AgAyACKQIoNwNIIAMgAikCIDcDQCAAIANB0ABqIANBQGsQCCACIAMpAsgBNwIoIAIgAykCwAE3AiAgAyACKQIINwM4IAMgAikCADcDMCADIAIpAhg3AyggAyACKQIQNwMgIAAgA0EwaiADQSBqEAggAiADKQLIATcCGCACIAMpAsABNwIQIAMgAykD2AE3AxggAyADKQPQATcDECADIAIpAgg3AwggAyACKQIANwMAIAAgA0EQaiADEAggAygCwAEhACADKALEASEEIAMoAsgBIQUgAiABIAMoAswBczYCDCACIAUgB3M2AgggAiAEIAZzNgIEIAIgACAIczYCACADQeABaiQAC6UJAQ1/IwBBoANrIgIkACAAKAAQIQYgACgAFCEHIAAoABghCCAAKAAcIQkgACgABCEEIAAoAAghBSAAKAAMIQogACgAACELIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAEpAkg3A/gCIAIgAUFAayIAKQIANwPwAiACIAEpAlg3A+gCIAIgASkCUDcD4AIgAkGAA2oiAyACQfACaiACQeACahAIIAEgAikCiAM3AlggASACKQKAAzcCUCACIAEpAjg3A9gCIAIgASkCMDcD0AIgAiABKQJINwPIAiACIAApAgA3A8ACIAMgAkHQAmogAkHAAmoQCCABIAIpAogDNwJIIAAgAikCgAM3AgAgAiABKQIoNwO4AiACIAEpAiA3A7ACIAIgASkCODcDqAIgAiABKQIwNwOgAiADIAJBsAJqIAJBoAJqEAggASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCGDcDmAIgAiABKQIQNwOQAiACIAEpAig3A4gCIAIgASkCIDcDgAIgAyACQZACaiACQYACahAIIAEgAikCiAM3AiggASACKQKAAzcCICACIAEpAgg3A/gBIAIgASkCADcD8AEgAiABKQIYNwPoASACIAEpAhA3A+ABIAMgAkHwAWogAkHgAWoQCCABIAIpAogDNwIYIAEgAikCgAM3AhAgAiACKQOYAzcD2AEgAiACKQOQAzcD0AEgAiABKQIINwPIASACIAEpAgA3A8ABIAMgAkHQAWogAkHAAWoQCCACKAKAAyEMIAIoAoQDIQ0gAigCiAMhDiABIAogAigCjANzNgIMIAEgBSAOczYCCCABIAQgDXM2AgQgASALIAxzNgIAIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAEpAkg3A7gBIAIgACkCADcDsAEgAiABKQJYNwOoASACIAEpAlA3A6ABIAMgAkGwAWogAkGgAWoQCCABIAIpAogDNwJYIAEgAikCgAM3AlAgAiABKQI4NwOYASACIAEpAjA3A5ABIAIgASkCSDcDiAEgAiAAKQIANwOAASADIAJBkAFqIAJBgAFqEAggASACKQKIAzcCSCAAIAIpAoADNwIAIAIgASkCKDcDeCACIAEpAiA3A3AgAiABKQI4NwNoIAIgASkCMDcDYCADIAJB8ABqIAJB4ABqEAggASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCGDcDWCACIAEpAhA3A1AgAiABKQIoNwNIIAIgASkCIDcDQCADIAJB0ABqIAJBQGsQCCABIAIpAogDNwIoIAEgAikCgAM3AiAgAiABKQIINwM4IAIgASkCADcDMCACIAEpAhg3AyggAiABKQIQNwMgIAMgAkEwaiACQSBqEAggASACKQKIAzcCGCABIAIpAoADNwIQIAIgAikDmAM3AxggAiACKQOQAzcDECACIAEpAgg3AwggAiABKQIANwMAIAMgAkEQaiACEAggAigCgAMhACACKAKEAyEEIAIoAogDIQUgASAJIAIoAowDczYCDCABIAUgCHM2AgggASAEIAdzNgIEIAEgACAGczYCACACQaADaiQAC/MUARl/IwBBoAZrIgMkACABKAAEIQsgASgACCEMIAEoAAwhDSABKAAQIQ4gASgAFCEEIAEoABghDyABKAAcIRAgACgABCERIAAoAAghEiAAKAAMIRMgACgAECEUIAAoABQhFSAAKAAYIRYgACgAHCEXIAEoAAAhBSACQUBrIgEgACgAACIYQYCChBBzNgIAIAJClcTcyYWy+rziADcCOCACQTBqIgBCgIKEkLCggYQNNwIAIAJCoKLEkbSurZRdNwIoIAJBIGoiBkLb++Co1c3wl3E3AgAgAiAFIBhzIhk2AgAgAiAXQfPqoul9czYCXCACIBZBoKLEkQRzNgJYIAIgFUHthL+Jf3M2AlQgAkHQAGoiBSAUQdv74KgFczYCACACIBNBkNPnkwZzNgJMIAIgEkGVxNzJBXM2AkggAiARQYOKoOgAczYCRCACIBAgF3MiEDYCHCACIA8gFnMiDzYCGCACIAQgFXMiGjYCFCACQRBqIgQgDiAUcyIONgIAIAIgDSATcyINNgIMIAIgDCAScyIMNgIIIAIgCyARcyIbNgIEQQAhCwNAIAMgBSkCCDcDmAYgAyAFKQIANwOQBiADIAEpAgg3A/gFIAMgASkCADcD8AUgAyAFKQIINwPoBSADIAUpAgA3A+AFIANBgAZqIgcgA0HwBWogA0HgBWoQCCAFIAMpAogGNwIIIAUgAykCgAY3AgAgAyAAKQIINwPYBSADIAApAgA3A9AFIAMgASkCCDcDyAUgAyABKQIANwPABSAHIANB0AVqIANBwAVqEAggASADKQKIBjcCCCABIAMpAoAGNwIAIAMgBikCCDcDuAUgAyAGKQIANwOwBSADIAApAgg3A6gFIAMgACkCADcDoAUgByADQbAFaiADQaAFahAIIAAgAykCiAY3AgggACADKQKABjcCACADIAQpAgg3A5gFIAMgBCkCADcDkAUgAyAGKQIINwOIBSADIAYpAgA3A4AFIAcgA0GQBWogA0GABWoQCCAGIAMpAogGNwIIIAYgAykCgAY3AgAgAyACKQIINwP4BCADIAIpAgA3A/AEIAMgBCkCCDcD6AQgAyAEKQIANwPgBCAHIANB8ARqIANB4ARqEAggBCADKQKIBjcCCCAEIAMpAoAGNwIAIAMgAykDmAY3A9gEIAMgAykDkAY3A9AEIAMgAikCCDcDyAQgAyACKQIANwPABCAHIANB0ARqIANBwARqEAggAygCgAYhCCADKAKEBiEJIAMoAogGIQogAiADKAKMBiATczYCDCACIAogEnM2AgggAiAJIBFzNgIEIAIgCCAYczYCACADIAUpAgg3A5gGIAMgBSkCADcDkAYgAyABKQIINwO4BCADIAEpAgA3A7AEIAMgBSkCCDcDqAQgAyAFKQIANwOgBCAHIANBsARqIANBoARqEAggBSADKQKIBjcCCCAFIAMpAoAGNwIAIAMgACkCCDcDmAQgAyAAKQIANwOQBCADIAEpAgg3A4gEIAMgASkCADcDgAQgByADQZAEaiADQYAEahAIIAEgAykCiAY3AgggASADKQKABjcCACADIAYpAgg3A/gDIAMgBikCADcD8AMgAyAAKQIINwPoAyADIAApAgA3A+ADIAcgA0HwA2ogA0HgA2oQCCAAIAMpAogGNwIIIAAgAykCgAY3AgAgAyAEKQIINwPYAyADIAQpAgA3A9ADIAMgBikCCDcDyAMgAyAGKQIANwPAAyAHIANB0ANqIANBwANqEAggBiADKQKIBjcCCCAGIAMpAoAGNwIAIAMgAikCCDcDuAMgAyACKQIANwOwAyADIAQpAgg3A6gDIAMgBCkCADcDoAMgByADQbADaiADQaADahAIIAQgAykCiAY3AgggBCADKQKABjcCACADIAMpA5gGNwOYAyADIAMpA5AGNwOQAyADIAIpAgg3A4gDIAMgAikCADcDgAMgByADQZADaiADQYADahAIIAMoAoAGIQggAygChAYhCSADKAKIBiEKIAIgAygCjAYgF3M2AgwgAiAKIBZzNgIIIAIgCSAVczYCBCACIAggFHM2AgAgAyAFKQIINwOYBiADIAUpAgA3A5AGIAMgASkCCDcD+AIgAyABKQIANwPwAiADIAUpAgg3A+gCIAMgBSkCADcD4AIgByADQfACaiADQeACahAIIAUgAykCiAY3AgggBSADKQKABjcCACADIAApAgg3A9gCIAMgACkCADcD0AIgAyABKQIINwPIAiADIAEpAgA3A8ACIAcgA0HQAmogA0HAAmoQCCABIAMpAogGNwIIIAEgAykCgAY3AgAgAyAGKQIINwO4AiADIAYpAgA3A7ACIAMgACkCCDcDqAIgAyAAKQIANwOgAiAHIANBsAJqIANBoAJqEAggACADKQKIBjcCCCAAIAMpAoAGNwIAIAMgBCkCCDcDmAIgAyAEKQIANwOQAiADIAYpAgg3A4gCIAMgBikCADcDgAIgByADQZACaiADQYACahAIIAYgAykCiAY3AgggBiADKQKABjcCACADIAIpAgg3A/gBIAMgAikCADcD8AEgAyAEKQIINwPoASADIAQpAgA3A+ABIAcgA0HwAWogA0HgAWoQCCAEIAMpAogGNwIIIAQgAykCgAY3AgAgAyADKQOYBjcD2AEgAyADKQOQBjcD0AEgAyACKQIINwPIASADIAIpAgA3A8ABIAcgA0HQAWogA0HAAWoQCCADKAKABiEIIAMoAoQGIQkgAygCiAYhCiACIAMoAowGIA1zNgIMIAIgCiAMczYCCCACIAkgG3M2AgQgAiAIIBlzNgIAIAMgBSkCCDcDmAYgAyAFKQIANwOQBiADIAEpAgg3A7gBIAMgASkCADcDsAEgAyAFKQIINwOoASADIAUpAgA3A6ABIAcgA0GwAWogA0GgAWoQCCAFIAMpAogGNwIIIAUgAykCgAY3AgAgAyAAKQIINwOYASADIAApAgA3A5ABIAMgASkCCDcDiAEgAyABKQIANwOAASAHIANBkAFqIANBgAFqEAggASADKQKIBjcCCCABIAMpAoAGNwIAIAMgBikCCDcDeCADIAYpAgA3A3AgAyAAKQIINwNoIAMgACkCADcDYCAHIANB8ABqIANB4ABqEAggACADKQKIBjcCCCAAIAMpAoAGNwIAIAMgBCkCCDcDWCADIAQpAgA3A1AgAyAGKQIINwNIIAMgBikCADcDQCAHIANB0ABqIANBQGsQCCAGIAMpAogGNwIIIAYgAykCgAY3AgAgAyACKQIINwM4IAMgAikCADcDMCADIAQpAgg3AyggAyAEKQIANwMgIAcgA0EwaiADQSBqEAggBCADKQKIBjcCCCAEIAMpAoAGNwIAIAMgAykDmAY3AxggAyADKQOQBjcDECADIAIpAgg3AwggAyACKQIANwMAIAcgA0EQaiADEAggAygCgAYhCCADKAKEBiEJIAMoAogGIQogAiADKAKMBiAQczYCDCACIAogD3M2AgggAiAJIBpzNgIEIAIgCCAOczYCACALQQFqIgtBBEcNAAsgA0GgBmokAAsIACAAQRAQGQsEAEFfC5gKAR5/IwBBwAJrIgQkACAEQgA3A5gCIARCADcDkAIgBEIANwOIAiAEQgA3A4ACIARBgAJqIgUgASACEAsaIAMoABAhCyADKAAwIQwgAygAFCENIAMoADQhDiADKAAYIQ8gAygAOCEQIAMoABwhESADKAA8IRIgAygAJCEBIAMoAFQhEyADKAB0IRQgAygAZCEGIAMoACwhByADKABcIRUgAygAfCEWIAMoAGwhCCADKAAgIQkgAygAUCEXIAMoAHAhGCADKABgIQogBCgCkAIhGSAEKAKAAiEaIAQoAoQCIRsgBCgCiAIhHCAEKAKMAiEdIAQoApQCIR4gBCgCnAIhHyAEIAMoACgiICADKABoIiEgAygAeHEgAygAWCAEKAKYAnNzczYCmAIgBCAJIAogGHEgFyAZc3NzNgKQAiAEIAcgCCAWcSAVIB9zc3M2ApwCIAQgASAGIBRxIBMgHnNzczYClAIgBCAIIAcgEnEgESAdc3NzNgKMAiAEICEgECAgcSAPIBxzc3M2AogCIAQgBiABIA5xIA0gG3NzczYChAIgBCAKIAkgDHEgCyAac3NzNgKAAiACIAVqQQBBICACaxAMGiAAIAUgAhALGiAEKAKYAiEBIAQoApACIQIgBCgCnAIhBiAEKAKUAiEHIAQoAoACIQggBCgChAIhCSAEKAKIAiEKIAQoAowCIQsgBCADKQJ4NwO4AiAEIAMpAnA3A7ACIAQgAykCaDcD+AEgBCADKQJgNwPwASAEIAMpAng3A+gBIAQgAykCcDcD4AEgBEGgAmoiBSAEQfABaiAEQeABahAIIAMgBCkCqAI3AnggAyAEKQKgAjcCcCAEIAMpAlg3A9gBIAQgAykCUDcD0AEgBCADKQJoNwPIASAEIAMpAmA3A8ABIAUgBEHQAWogBEHAAWoQCCADIAQpAqgCNwJoIAMgBCkCoAI3AmAgBCADKQJINwO4ASAEIANBQGsiACkCADcDsAEgBCADKQJYNwOoASAEIAMpAlA3A6ABIAUgBEGwAWogBEGgAWoQCCADIAQpAqgCNwJYIAMgBCkCoAI3AlAgBCADKQI4NwOYASAEIAMpAjA3A5ABIAQgAykCSDcDiAEgBCAAKQIANwOAASAFIARBkAFqIARBgAFqEAggAyAEKQKoAjcCSCAAIAQpAqACNwIAIAQgAykCKDcDeCAEIAMpAiA3A3AgBCADKQI4NwNoIAQgAykCMDcDYCAFIARB8ABqIARB4ABqEAggAyAEKQKoAjcCOCADIAQpAqACNwIwIAQgAykCGDcDWCAEIAMpAhA3A1AgBCADKQIoNwNIIAQgAykCIDcDQCAFIARB0ABqIARBQGsQCCADIAQpAqgCNwIoIAMgBCkCoAI3AiAgBCADKQIINwM4IAQgAykCADcDMCAEIAMpAhg3AyggBCADKQIQNwMgIAUgBEEwaiAEQSBqEAggAyAEKQKoAjcCGCADIAQpAqACNwIQIAQgBCkDuAI3AxggBCAEKQOwAjcDECAEIAMpAgg3AwggBCADKQIANwMAIAUgBEEQaiAEEAggAyAEKQKoAjcCCCADIAQpAqACNwIAIAMgCyADKAAMczYCDCADIAogAygACHM2AgggAyAJIAMoAARzNgIEIAMgCCADKAAAczYCACAAIAIgACgAAHM2AgAgAyAHIAMoAERzNgJEIAMgASADKABIczYCSCADIAYgAygATHM2AkwgBEHAAmokAAuRCQEefyMAQaACayIDJAAgAigAECEOIAIoADAhDyACKAAUIRAgASgABCERIAIoADQhEiACKAAYIRMgASgACCEUIAIoADghFSACKAAcIQggASgADCEWIAIoADwhFyACKAAgIQUgAigAUCEJIAEoABAhGCACKABwIRkgAigAYCEEIAIoACQhBiACKABUIQogASgAFCEaIAIoAHQhGyACKABkIQwgAigAKCEHIAIoAFghCyABKAAYIRwgAigAeCEdIAIoAGghDSABKAAAIR4gACACKAAsIh8gAigAbCIgIAIoAHxxIAIoAFwgASgAHHNzcyIBNgAcIAAgByANIB1xIAsgHHNzcyILNgAYIAAgBiAMIBtxIAogGnNzcyIKNgAUIAAgBSAEIBlxIAkgGHNzcyIJNgAQIAAgICAXIB9xIAggFnNzcyIINgAMIAAgDSAHIBVxIBMgFHNzcyIHNgAIIAAgDCAGIBJxIBAgEXNzcyIGNgAEIAAgBCAFIA9xIA4gHnNzcyIFNgAAIAMgAikCeDcDmAIgAyACKQJwNwOQAiADIAIpAmg3A/gBIAMgAikCYDcD8AEgAyACKQJ4NwPoASADIAIpAnA3A+ABIANBgAJqIgQgA0HwAWogA0HgAWoQCCACIAMpAogCNwJ4IAIgAykCgAI3AnAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCaDcDyAEgAyACKQJgNwPAASAEIANB0AFqIANBwAFqEAggAiADKQKIAjcCaCACIAMpAoACNwJgIAMgAikCSDcDuAEgAyACQUBrIgApAgA3A7ABIAMgAikCWDcDqAEgAyACKQJQNwOgASAEIANBsAFqIANBoAFqEAggAiADKQKIAjcCWCACIAMpAoACNwJQIAMgAikCODcDmAEgAyACKQIwNwOQASADIAIpAkg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAIgAykCiAI3AkggACADKQKAAjcCACADIAIpAig3A3ggAyACKQIgNwNwIAMgAikCODcDaCADIAIpAjA3A2AgBCADQfAAaiADQeAAahAIIAIgAykCiAI3AjggAiADKQKAAjcCMCADIAIpAhg3A1ggAyACKQIQNwNQIAMgAikCKDcDSCADIAIpAiA3A0AgBCADQdAAaiADQUBrEAggAiADKQKIAjcCKCACIAMpAoACNwIgIAMgAikCCDcDOCADIAIpAgA3AzAgAyACKQIYNwMoIAMgAikCEDcDICAEIANBMGogA0EgahAIIAIgAykCiAI3AhggAiADKQKAAjcCECADIAMpA5gCNwMYIAMgAykDkAI3AxAgAyACKQIINwMIIAMgAikCADcDACAEIANBEGogAxAIIAIgAykCiAI3AgggAiADKQKAAjcCACACIAIoAAwgCHM2AgwgAiACKAAIIAdzNgIIIAIgAigABCAGczYCBCACIAIoAAAgBXM2AgAgACAAKAAAIAlzNgIAIAIgAigARCAKczYCRCACIAIoAEggC3M2AkggAiACKABMIAFzNgJMIANBoAJqJAAL0gsBFX8jAEGgAmsiBSQAIAQoACwgA0EddnMhDCAEKAAoIANBA3RzIQ0gBCgAJCACQR12cyEOIARBIGoiAygAACACQQN0cyEPIARBEGohBiAEQTBqIQcgBEFAayECIARB0ABqIQggBEHgAGohCSAEQfAAaiEKA0AgBSAKKQIINwOYAiAFIAopAgA3A5ACIAUgCSkCCDcD+AEgBSAJKQIANwPwASAFIAopAgg3A+gBIAUgCikCADcD4AEgBUGAAmoiCyAFQfABaiAFQeABahAIIAogBSkCiAI3AgggCiAFKQKAAjcCACAFIAgpAgg3A9gBIAUgCCkCADcD0AEgBSAJKQIINwPIASAFIAkpAgA3A8ABIAsgBUHQAWogBUHAAWoQCCAJIAUpAogCNwIIIAkgBSkCgAI3AgAgBSACKQIINwO4ASAFIAIpAgA3A7ABIAUgCCkCCDcDqAEgBSAIKQIANwOgASALIAVBsAFqIAVBoAFqEAggCCAFKQKIAjcCCCAIIAUpAoACNwIAIAUgBykCCDcDmAEgBSAHKQIANwOQASAFIAIpAgg3A4gBIAUgAikCADcDgAEgCyAFQZABaiAFQYABahAIIAIgBSkCiAI3AgggAiAFKQKAAjcCACAFIAMpAgg3A3ggBSADKQIANwNwIAUgBykCCDcDaCAFIAcpAgA3A2AgCyAFQfAAaiAFQeAAahAIIAcgBSkCiAI3AgggByAFKQKAAjcCACAFIAYpAgg3A1ggBSAGKQIANwNQIAUgAykCCDcDSCAFIAMpAgA3A0AgCyAFQdAAaiAFQUBrEAggAyAFKQKIAjcCCCADIAUpAoACNwIAIAUgBCkCCDcDOCAFIAQpAgA3AzAgBSAGKQIINwMoIAUgBikCADcDICALIAVBMGogBUEgahAIIAYgBSkCiAI3AgggBiAFKQKAAjcCACAFIAUpA5gCNwMYIAUgBSkDkAI3AxAgBSAEKQIINwMIIAUgBCkCADcDACALIAVBEGogBRAIIAQgBSkCiAI3AgggBCAFKQKAAjcCACAEIAQoAAwgDHMiCzYCDCAEIAQoAAggDXMiETYCCCAEIAQoAAQgDnMiEjYCBCAEIAQoAAAgD3MiEzYCACACIAIoAAAgD3MiFDYCACAEIAQoAEQgDnMiFTYCRCAEIAQoAEggDXMiFjYCSCAEIAQoAEwgDHMiFzYCTCAQQQFqIhBBB0cNAAsCQAJAAkACQCABQRBrDhEAAgICAgICAgICAgICAgICAQILIAQoABAhASAEKAAwIQIgBCgAICEDIAQoAGAhBiAEKABQIQcgBCgAFCEIIAQoADQhCSAEKAAkIQogBCgAZCEMIAQoAFQhDSAEKAAYIQ4gBCgAOCEPIAQoACghECAEKABoIRggBCgAWCEZIAAgBCgAHCAEKAA8IAQoACwgBCgAXCAEKABsc3NzcyAXcyALczYADCAAIA4gDyAQIBggGXNzc3MgFnMgEXM2AAggACAIIAkgCiAMIA1zc3NzIBVzIBJzNgAEIAAgASACIAMgBiAHc3NzcyAUcyATczYAAAwCCyAEKAAQIQEgBCgAMCECIAQoACAhAyAEKAAUIQYgBCgANCEHIAQoACQhCCAEKAAYIQkgBCgAOCEKIAQoACghDCAAIAQoABwgBCgAPCAEKAAsc3MgC3M2AAwgACAJIAogDHNzIBFzNgAIIAAgBiAHIAhzcyASczYABCAAIAEgAiADc3MgE3M2AAAgBCgAUCEBIARBQGsoAAAhAiAEKABwIQMgBCgAYCEGIAQoAFQhByAEKABEIQggBCgAdCEJIAQoAGQhCiAEKABYIQwgBCgASCENIAQoAHghDiAEKABoIQ8gACAEKABcIAQoAEwgBCgAfCAEKABsc3NzNgAcIAAgDCANIA4gD3NzczYAGCAAIAcgCCAJIApzc3M2ABQgACABIAIgAyAGc3NzNgAQDAELIABBACABEAwaCyAFQaACaiQAC4MJAR5/IwBBoAJrIgMkACACKAAQIREgAigAMCESIAEoAAQhBSACKAAUIRMgAigANCEUIAEoAAghBiACKAAYIRUgAigAOCEWIAEoAAwhByACKAAcIRcgAigAPCEYIAIoACAhBCABKAAQIQggAigAUCEZIAIoAHAhGiACKABgIQkgAigAJCEKIAEoABQhCyACKABUIRsgAigAdCEcIAIoAGQhDCACKAAoIQ0gASgAGCEOIAIoAFghHSACKAB4IR4gAigAaCEPIAEoAAAhECAAIAIoACwiHyABKAAcIgEgAigAXCACKABsIiAgAigAfHFzc3M2ABwgACANIA4gHSAPIB5xc3NzNgAYIAAgCiALIBsgDCAccXNzczYAFCAAIAQgCCAZIAkgGnFzc3M2ABAgACAgIAcgFyAYIB9xc3NzNgAMIAAgDyAGIBUgDSAWcXNzczYACCAAIAwgBSATIAogFHFzc3M2AAQgACAJIBAgESAEIBJxc3NzNgAAIAMgAikCeDcDmAIgAyACKQJwNwOQAiADIAIpAmg3A/gBIAMgAikCYDcD8AEgAyACKQJ4NwPoASADIAIpAnA3A+ABIANBgAJqIgQgA0HwAWogA0HgAWoQCCACIAMpAogCNwJ4IAIgAykCgAI3AnAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCaDcDyAEgAyACKQJgNwPAASAEIANB0AFqIANBwAFqEAggAiADKQKIAjcCaCACIAMpAoACNwJgIAMgAikCSDcDuAEgAyACQUBrIgApAgA3A7ABIAMgAikCWDcDqAEgAyACKQJQNwOgASAEIANBsAFqIANBoAFqEAggAiADKQKIAjcCWCACIAMpAoACNwJQIAMgAikCODcDmAEgAyACKQIwNwOQASADIAIpAkg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAIgAykCiAI3AkggACADKQKAAjcCACADIAIpAig3A3ggAyACKQIgNwNwIAMgAikCODcDaCADIAIpAjA3A2AgBCADQfAAaiADQeAAahAIIAIgAykCiAI3AjggAiADKQKAAjcCMCADIAIpAhg3A1ggAyACKQIQNwNQIAMgAikCKDcDSCADIAIpAiA3A0AgBCADQdAAaiADQUBrEAggAiADKQKIAjcCKCACIAMpAoACNwIgIAMgAikCCDcDOCADIAIpAgA3AzAgAyACKQIYNwMoIAMgAikCEDcDICAEIANBMGogA0EgahAIIAIgAykCiAI3AhggAiADKQKAAjcCECADIAMpA5gCNwMYIAMgAykDkAI3AxAgAyACKQIINwMIIAMgAikCADcDACAE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ACJDNwPQAiADIAEpAAg3A9gCIAMgQ6dB+AFxOgDQAiADIAMtAO8CQT9xQcAAcjoA7wIgA0GgAmogAhA2IANCADcChAIgA0IANwKMAiADQQA2ApQCIANCADcD0AEgA0IANwPYASADQgA3A+ABIAMgAykDsAI3A6ABIAMgAykDuAI3A6gBIAMgAykDwAI3A7ABIANCADcC9AEgA0EBNgLwASADQgA3AvwBIANCADcDwAEgA0IANwPIASADIAMpA6ACNwOQASADIAMpA6gCNwOYASADQgA3AnQgA0IANwJ8IANBADYChAEgA0IANwJkIANBATYCYCADQgA3AmxB/gEhAkEAIQQDQCADKAKUAiEJIAMoArQBIQYgAygCYCEHIAMoAsABIQogAygCkAEhCyADKALwASENIAMoAmQhCCADKALEASEMIAMoApQBIQUgAygC9AEhECADKAJoIQ4gAygCyAEhESADKAKYASESIAMoAvgBIRMgAygCbCEPIAMoAswBIRQgAygCnAEhFSADKAL8ASEXIAMoAnAhGCADKALQASEcIAMoAqABIR0gAygCgAIhHiADKAJ0IRkgAygC1AEhHyADKAKkASEgIAMoAoQCISEgAygCeCEaIAMoAtgBISIgAygCqAEhIyADKAKIAiEkIAMoAnwhGyADKALcASElIAMoAqwBISYgAygCjAIhJyADKAKAASEWIAMoAuABISggAygCsAEhKSADKAKQAiEsIANBACAEIANB0AJqIi0gAiIBQQN2ai0AACACQQdxdkEBcSIEc2siAiADKAKEASIqIAMoAuQBIitzcSIuICpzIio2AoQBIAMgBiAGIAlzIAJxIi9zIjAgKms2AlQgAyAWIBYgKHMgAnEiMXMiBjYCgAEgAyApICkgLHMgAnEiFnMiKSAGazYCUCADIBsgGyAlcyACcSIycyIbNgJ8IAMgJiAmICdzIAJxIjNzIiYgG2s2AkwgAyAaIBogInMgAnEiNHMiGjYCeCADICMgIyAkcyACcSI1cyIjIBprNgJIIAMgGSAZIB9zIAJxIjZzIhk2AnQgAyAgICAgIXMgAnEiN3MiICAZazYCRCADIBggGCAccyACcSI4cyIYNgJwIAMgHSAdIB5zIAJxIjlzIh0gGGs2AkAgAyAPIA8gFHMgAnEiOnMiDzYCbCADIBUgFSAXcyACcSI7cyIVIA9rNgI8IAMgDiAOIBFzIAJxIjxzIg42AmggAyASIBIgE3MgAnEiPXMiEiAOazYCOCADIAggCCAMcyACcSI+cyIINgJkIAMgBSAFIBBzIAJxIj9zIgUgCGs2AjQgAyAHIAcgCnMgAnEiQHMiBzYCYCADIAsgCyANcyACcSICcyILIAdrNgIwIAMgCSAvcyIJICsgLnMiK2s2AiQgAyAWICxzIhYgKCAxcyIoazYCICADICcgM3MiJyAlIDJzIiVrNgIcIAMgJCA1cyIkICIgNHMiIms2AhggAyAhIDdzIiEgHyA2cyIfazYCFCADIB4gOXMiHiAcIDhzIhxrNgIQIAMgFyA7cyIXIBQgOnMiFGs2AgwgAyATID1zIhMgESA8cyIRazYCCCADIBAgP3MiECAMID5zIgxrNgIEIAMgAiANcyICIAogQHMiCms2AgAgAyAJICtqNgKUAiADIBYgKGo2ApACIAMgJSAnajYCjAIgAyAiICRqNgKIAiADIB8gIWo2AoQCIAMgHCAeajYCgAIgAyARIBNqNgL4ASADIAwgEGo2AvQBIAMgAiAKajYC8AEgAyAUIBdqNgL8ASADICogMGo2AuQBIAMgBiApajYC4AEgAyAbICZqNgLcASADIBogI2o2AtgBIAMgGSAgajYC1AEgAyAYIB1qNgLQASADIA8gFWo2AswBIAMgDiASajYCyAEgAyAFIAhqNgLEASADIAcgC2o2AsABIANB4ABqIhsgA0EwaiIaIANB8AFqIhkQBiADQcABaiIWIBYgAxAGIBogAxAFIAMgGRAFIAMoAsABIQIgAygCYCEJIAMoAsQBIQYgAygCZCEHIAMoAsgBIQogAygCaCELIAMoAswBIQ0gAygCbCEIIAMoAtABIQwgAygCcCEFIAMoAtQBIRAgAygCdCEOIAMoAtgBIREgAygCeCESIAMoAtwBIRMgAygCfCEPIAMoAuABIRQgAygCgAEhFSADIAMoAuQBIhcgAygChAEiGGo2ArQBIAMgFCAVajYCsAEgAyAPIBNqNgKsASADIBEgEmo2AqgBIAMgDiAQajYCpAEgAyAFIAxqNgKgASADIAggDWo2ApwBIAMgCiALajYCmAEgAyAGIAdqNgKUASADIAIgCWo2ApABIAMgGCAXazYC5AEgAyAVIBRrNgLgASADIA8gE2s2AtwBIAMgEiARazYC2AEgAyAOIBBrNgLUASADIAUgDGs2AtABIAMgCCANazYCzAEgAyALIAprNgLIASADIAcgBms2AsQBIAMgCSACazYCwAEgGSADIBoQBiADKAI0IQIgAygCBCEFIAMoAjghCSADKAIIIRAgAygCQCEGIAMoAhAhDiADKAI8IQcgAygCDCERIAMoAkghCiADKAIYIRIgAygCRCELIAMoAhQhEyADKAJQIQ0gAygCICEPIAMoAkwhCCADKAIcIRQgAygCVCEMIAMoAiQhFSADIAMoAgAgAygCMCIXayIYNgIAIAMgFSAMayIVNgIkIAMgFCAIayIUNgIcIAMgDyANayIPNgIgIAMgEyALayITNgIUIAMgEiAKayISNgIYIAMgESAHayIRNgIMIAMgDiAGayIONgIQIAMgECAJayIQNgIIIAMgBSACayIFNgIEIBYgFhAFIAMgFaxCwrYHfiJDQoCAgAh8IkdCGYdCE34gGKxCwrYHfnwiQSBBQoCAgBB8IkFCgICA4A+DfaciFTYCYCADIAWsQsK2B34iQiBCQoCAgAh8IkJCgICA8A+DfSBBQhqIfKciBTYCZCADIBCsQsK2B34gQkIZh3wiQSBBQoCAgBB8IkFCgICA4A+DfaciEDYCaCADIA6sQsK2B34gEaxCwrYHfiJCQoCAgAh8IkhCGYd8IkQgREKAgIAQfCJEQoCAgOAPg32nIg42AnAgAyASrELCtgd+IBOsQsK2B34iSUKAgIAIfCJKQhmHfCJFIEVCgICAEHwiRUKAgIDgD4N9pyIRNgJ4IAMgD6xCwrYHfiAUrELCtgd+IktCgICACHwiTEIZh3wiRiBGQoCAgBB8IkZCgICA4A+DfaciEjYCgAEgAyBBQhqIIEJ8IEhCgICA8A+DfaciEzYCbCADIERCGoggSXwgSkKAgIDwD4N9pyIPNgJ0IAMgRUIaiCBLfCBMQoCAgPAPg32nIhQ2AnwgAyBGQhqIIEN8IEdCgICA8A+DfaciGDYChAEgA0GQAWoiHCAcEAUgAyAMIBhqNgJUIAMgDSASajYCUCADIAggFGo2AkwgAyAKIBFqNgJIIAMgCyAPajYCRCADIAYgDmo2AkAgAyAHIBNqNgI8IAMgCSAQajYCOCADIAIgBWo2AjQgAyAVIBdqNgIwIAFBAWshAiAbIANBoAJqIBYQBiAWIAMgGhAGIAENAAsgAygCkAEhECADKALwASECIAMoApQBIQ4gAygC9AEhBiADKAKYASERIAMoAvgBIQcgAygCnAEhEiADKAL8ASEKIAMoAqABIRMgAygCgAIhCyADKAKkASEPIAMoAoQCIQ0gAygCqAEhFCADKAKIAiEIIAMoAqwBIRUgAygCjAIhDCADKAKwASEXIAMoApACIQUgA0EAIARrIgEgAygClAIiBCADKAK0AXNxIARzNgKUAiADIAUgBSAXcyABcXM2ApACIAMgDCAMIBVzIAFxczYCjAIgAyAIIAggFHMgAXFzNgKIAiADIA0gDSAPcyABcXM2AoQCIAMgCyALIBNzIAFxczYCgAIgAyAKIAogEnMgAXFzNgL8ASADIAcgByARcyABcXM2AvgBIAMgBiAGIA5zIAFxczYC9AEgAyACIAIgEHMgAXFzNgLwASADKALAASECIAMoAmAhBSADKALEASEEIAMoAmQhECADKALIASEGIAMoAmghDiADKALMASEHIAMoAmwhESADKALQASEKIAMoAnAhEiADKALUASELIAMoAnQhEyADKALYASENIAMoAnghDyADKALcASEIIAMoAnwhFCADKALgASEMIAMoAoABIRUgAyADKALkASIXIAMoAoQBcyABcSAXczYC5AEgAyAMIAwgFXMgAXFzNgLgASADIAggCCAUcyABcXM2AtwBIAMgDSANIA9zIAFxczYC2AEgAyALIAsgE3MgAXFzNgLUASADIAogCiAScyABcXM2AtABIAMgByAHIBFzIAFxczYCzAEgAyAGIAYgDnMgAXFzNgLIASADIAQgBCAQcyABcXM2AsQBIAMgAiACIAVzIAFxczYCwAEgFiAWEDUgGSAZIBYQBiAAIBkQESAtQSAQCUEAIQkLIANB8AJqJAAgCQs4AQF/IwBBIGsiBiQAIAYgBCAFQQAQGxogACABIAKtIAOtQiCGhCAEQRBqQgAgBhA7IAZBIGokAAtAAQF/IwBBIGsiCCQAIAggBCAHQQAQGxogACABIAKtIAOtQiCGhCAEQRBqIAWtIAatQiCGhCAIEDsgCEEgaiQACzQBAX8jAEEgayIFJAAgBSADIARBABAbGiAAIAGtIAKtQiCGhCADQRBqIAUQUyAFQSBqJAALtgQCA38CfiMAQfAAayIGJAAgAq0gA61C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IwtbAQJ+IAetIAitQiCGhCEMQX8hAiAErSAFrUIghoQiC0IQWgRAIAAgAyALQhB9IAMgC6dqQRBrIAYgDCAJIAoQsgEhAgsgAQRAIAFCACALQhB9IAIbNwMACyACCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQsgELWQECfgJ/IAatIAetQiCGhCEMIAOtIAStQiCGhCILQvD///8PVARAIAAgACALp2pBACACIAsgBSAMIAkgChCzARogAQRAIAEgC0IQfDcDAAtBAAwBCxAOAAsLJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALELMBC1sBAn4gB60gCK1CIIaEIQxBfyECIAStIAWtQiCGhCILQhBaBEAgACADIAtCEH0gAyALp2pBEGsgBiAMIAkgChDDASECCyABBEAgAUIAIAtCEH0gAhs3AwALIAILJQAgACACIAOtIAStQiCGhCAFIAYgB60gCK1CIIaEIAkgChDDAQtbAQJ+IAetIAitQiCGhCEMQX8hAiAErSAFrUIghoQiC0IQWgRAIAAgAyALQhB9IAMgC6dqQRBrIAYgDCAJIAoQxAEhAgsgAQRAIAFCACALQhB9IAIbNwMACyACCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQxAELWQECfgJ/IAatIAetQiCGhCEMIAOtIAStQiCGhCILQvD///8PVARAIAAgACALp2pBACACIAsgBSAMIAkgChDFARogAQRAIAEgC0IQfDcDAAtBAAwBCxAOAAsLJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEMUBC1kBAn4CfyAGrSAHrUIghoQhDCADrSAErUIghoQiC0Lw////D1QEQCAAIAAgC6dqQQAgAiALIAUgDCAJIAoQxgEaIAEEQCABIAtCEHw3AwALQQAMAQsQDgALCycAIAAgASACIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAogCxDGAQtZAQJ+IAetIAitQiCGhCELQX8hAQJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC3////w9WDQAgACACIAynIAVBICAGIAunIAkgCkGsnwIoAgARDQAhAQsgAQuAAQEDfiAHrSAIrUIghoQhDEF/IQICQCAErSAFrUIghoQiC0IgVA0AIAtCIH0iDULf////D1YNACAMQt////8PVg0AIAAgAyANpyADIAunakEga0EgIAYgDKcgCSAKQayfAigCABENACECCyABBEAgAUIAIAtCIH0gAhs3AwALIAILYAECfiAErSAFrUIghoQhDCAHrSAIrUIghoQhDSACBEAgAkIgNwMACyANQuD///8PVCAMQt////8PWHFFBEAQDgALIAAgAUEgIAMgDKcgBiANpyAKIAtBqJ8CKAIAEQ0AC3YBAn4CfyAGrSAHrUIghoQhCwJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC4P///w9aDQAgACAAIAynIgNqQSAgAiADIAUgC6cgCSAKQaifAigCABENACEAIAEEQCABQgAgDEIgfCAAGzcDAAsgAAwBCxAOAAsLWQECfiAHrSAIrUIghoQhC0F/IQECQCADrSAErUIghoQiDELf////D1YNACALQt////8PVg0AIAAgAiAMpyAFQSAgBiALpyAJIApBpJ8CKAIAEQ0AIQELIAELgAEBA34gB60gCK1CIIaEIQxBfyECAkAgBK0gBa1CIIaEIgtCIFQNACALQiB9Ig1C3////w9WDQAgDELf////D1YNACAAIAMgDacgAyALp2pBIGtBICAGIAynIAkgCkGknwIoAgARDQAhAgsgAQRAIAFCACALQiB9IAIbNwMACyACC2ABAn4gBK0gBa1CIIaEIQwgB60gCK1CIIaEIQ0gAgRAIAJCIDcDAAsgDULg////D1QgDELf////D1hxRQRAEA4ACyAAIAFBICADIAynIAYgDacgCiALQaCfAigCABENAAt2AQJ+An8gBq0gB61CIIaEIQsCQCADrSAErUIghoQiDELf////D1YNACALQuD///8PWg0AIAAgACAMpyIDakEgIAIgAyAFIAunIAkgCkGgnwIoAgARDQAhACABBEAgAUIAIAxCIHwgABs3AwALIAAMAQsQDgALCwUAQegACwQAQRoLBQBBiwwLBQBBtAoL/QEBBX8jACIFIQkgBUGABGtBQHEiBSQAIAAgASAAGyIHBEBBfyEGIAVB4ABqIgggAyAEEB9FBEAgASAAIAEbIQNBACEAIAVBgAFqIgFBAEEAQcAAECIaIAEgCEIgEA8aIAhBIBAJIAEgBEIgEA8aIAEgAkIgEA8aIAEg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ACABIAIgAxAiCwsAIAAgASACEMcBCw0AIAAgASACIAMQyAELBwAgABDJAQsJACAAIAEQywELCwAgACABIAIQzAELBQBBrgsLOgEDfiABKQAgIQIgASkAKCEDIAEpADAhBCAAIAEpADg3ABggACAENwAQIAAgAzcACCAAIAI3AABBAAs6AQN+IAEpAAghAiABKQAQIQMgASkAACEEIAAgASkAGDcAGCAAIAM3ABAgACACNwAIIAAgBDcAAEEAC3wBAX8CQAJAAkAgA0LAAFQNACADQkB8IgNCv////w9WDQAgAiACQUBrIgUgAyAEQQAQdkUNASAARQ0AIABBACADpxAMGgtBfyECIAFFDQEgAUIANwMAQX8PCyABBEAgASADNwMAC0EAIQIgAEUNACAAIAUgA6cQQhoLIAILcAECfyMAQRBrIgUkACAAIAVBCGogAEFAayACIAOnIgIQQiADIARBABB4GgJAIAUpAwhCwABSBEAgAQRAIAFCADcDAAsgAEEAIAJBQGsQDBpBfyEGDAELIAFFDQAgASADQkB9NwMACyAFQRBqJAAgBgsTACAAIAEgAiADIARBABB4GkEAC20BAX8jAEFAaiICJAAgAiABQiAQRxogAiACLQAAQfgBcToAACACIAItAB9BP3FBwAByOgAfIAAgAikDEDcAECAAIAIpAwg3AAggACACKQMANwAAIAAgAikDGDcAGCACQcAAEAkgAkFAayQAQQAL5woCD38nfiMAQYACayICJABBfyEIAkAgARBMDQAgAkHgAGoiAyABEJQBDQAgAxBsRQ0AQQAhCCACQQAgAigCrAEiAWs2AiQgAkEAIAIoAqgBIgNrNgIgIAJBACACKAKkASIJazYCHCACQQAgAigCoAEiBGs2AhggAkEAIAIoApwBIgprNgIUIAJBACACKAKYASIFazYCECACQQAgAigClAEiC2s2AgwgAkEAIAIoApABIgZrNgIIIAJBACACKAKMASIMazYCBCACQQEgAigCiAEiB2s2AgAgAiACEDUgAiACKAIEIg2sIhkgCkEBdKwiIn4gAjQCACIRIASsIhR+fCACKAIIIgSsIhsgBawiFX58IAIoAgwiBawiHiALQQF0rCIjfnwgAigCECIOrCIfIAasIhZ+fCACKAIUIgasIiQgDEEBdKwiJX58IAIoAhgiD6wiLiAH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IAIQPQ0AIAMgARAQIANBoAFqIgEgBSADEFUgA0HAAmoiAiABEFYgACACEEtBACEECyADQaAGaiQAIAQLZQEDfyMAQaAGayIDJABBfyEEAkAgA0GABWoiBSABED0NACADQeADaiIBIAIQPQ0AIAMgARAQIANBoAFqIgEgBSADEBMgA0HAAmoiAiABEFYgACACEEtBACEECyADQaAGaiQAIAQLHQEBfyMAQaABayIBJAAgASAAED0gAUGgAWokAEULpQEBBn8jAEEQayIFQQA2AgxBfyEEIAIgA0EBa0sEfyABIAJBAWsiB2ohCEEAIQJBACEBQQAhBANAIAUgBSgCDCIGQQAgCCACay0AACIJQYABc0EBayAGQQFrIARBAWtxcUEIdkEBcSIGayACcXI2AgwgASAGciEBIAQgCXIhBCACQQFqIgIgA0cNAAsgACAHIAUoAgxrNgIAIAFB/wFxQQFrBUF/CwshAQF/IwBBIGsiASQAIAFBIBAZIAAgARCMASABQSBqJAALCwAgACABEIwBQQALcwEDfyMAQaAGayIDJABBfyEEAkAgA0GABWoiBSABEDQNACAFEE1FDQAgA0HgA2oiASACEDQNACABEE1FDQAgAyABEBAgA0GgAWoiASAFIAMQVSADQcACaiICIAEQViAAIAIQL0EAIQQLIANBoAZqJAAgBAtzAQN/IwBBoAZrIgMkAEF/IQQCQCADQYAFaiIFIAEQNA0AIAUQTUUNACADQeADaiIBIAIQNA0AIAEQTUUNACADIAEQECADQaABaiIBIAUgAxATIANBwAJqIgIgARBWIAAgAhAvQQAhBAsgA0GgBmokACAEC0ABAn8jAEGgAWsiASQAAkAgABBrRQ0AIAAQTA0AIAEgABA0DQAgARBNRQ0AIAEQbEEARyECCyABQaABaiQAIAILBgBBwP8AC7UCAgV/AX4jAEHwA2siBSQAIAVBAToADwJ/IAFBwP8ATQRAIAFBwABPBEAgAEFAaiEJIAOtIQpBwAAhBgNAIAYhByAFQdAAaiIGIARBwAAQLhogCARAIAYgCCAJakLAABAmGgsgBUHQAGoiBiACIAoQJhogBiAFQQ9qQgEQJhogBiAAIAhqEDEaIAUgBS0AD0EBajoADyAHIQggB0FAayIGIAFNDQALCyABQT9xIggEQCAFQdAAaiIBIARBwAAQ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ZABcjnj+aHy+ALWxPv/6KVUAmIIqAWD89gCXlz/+74U+ACA4nAAtp73/joWzAYNW0wC7s5b++qoO/9KjTgAlNJcAY00aAO6c1f/VwNEBSS5UABRBKQE2zk8AyYOS/qpvGP+xITL+qybL/073dADR3ZkAhYCyATosGQDJJzsBvRP8ADHl0gF1u3UAtbO4AQBy2wAwXpMA9Sk4AH0NzP70rXcALN0g/lTqFAD5oMYB7H7q/y9jqP6q4pn/ZrPYAOKNev96Qpn+tvWGAOPkGQHWOev/2K04/7Xn0gB3gJ3/gV+I/25+MwACqbf/B4Ji/kWwXv90BOMB2fKR/8qtHwFpASf/Lq9FAOQvOv/X4EX+zzhF/xD+i/8Xz9T/yhR+/1/VYP8JsCEAyAXP//EqgP4jIcD/+OXEAYEReAD7Z5f/BzRw/4w4Qv8o4vX/2UYl/qzWCf9IQ4YBksDW/ywmcABEuEv/zlr7AJXrjQC1qjoAdPTvAFydAgBmrWIA6YlgAX8xywAFm5QAF5QJ/9N6DAAihhr/28yIAIYIKf/gUyv+VRn3AG1/AP6piDAA7nfb/+et1QDOEv7+CLoH/34JBwFvKkgAbzTs/mA/jQCTv3/+zU7A/w5q7QG720wAr/O7/mlZrQBVGVkBovOUAAJ20f4hngkAi6Mu/11GKABsKo7+b/yO/5vfkAAz5af/Sfyb/150DP+YoNr/nO4l/7Pqz//FALP/mqSNAOHEaAAKIxn+0dTy/2H93v64ZeUA3hJ/AaSIh/8ez4z+kmHzAIHAGv7JVCH/bwpO/5NRsv8EBBgAoe7X/waNIQA11w7/KbXQ/+eLnQCzy93//7lxAL3irP9xQtb/yj4t/2ZACP9OrhD+hXVE/wBBoBULAQEAQcAVC7ABJuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQAQf8WC6zxARD9QF0AoGo/ADnTV/4M0roAWLx0/kHYAQD/yD0B2EKU/wD7XAAksuH/AAAA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AZGInAD8dan+keLuAO8XawBttbz/5nAx/kmq7f/nt+P/UNwUAMJrfwF/zWUALjTFAdKrJP9YA1r/OJeNAGC7//8qTsgA/kZGAfR9qADMRIoBfNdGAGZCyP4RNOQAddyP/sv4ewA4Eq7/upek/zPo0AGg5Cv/+R0ZAUS+PwANAAAAAP8AAAAA9QAAAAAAAPsAAAAAAAD9AAAAAPMAAAAABwAAAAAAAwAAAADzAAAAAAUAAAAAAAAAAAsAAAAAAAsAAAAA8wAAAAAAAP0AAAAAAP8AAAAAAwAAAAD1AAAAAAAAAA8AAAAAAP8AAAAA/wAAAAAHAAAAAAUAQayJAgsrAQAAAHbBXwBlcAL/UPyh/vJqxv+FBrIA5N9wAN/uVf4z8xoAPiuL/stBCgBB4IkCC1czTe0AkapW/zYmM//xgGX/KXlK/+xOmwCpl2n+nClIAMJmr//OomX/AAAAAAAAAAAbLnsBEqj9/9Ovl/7D22AAOHa+/v7R9f+ZZH7+6IEV/zW48v/HpN0AQeCKAgsBAQBBgIsCC/EG4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f0xpYnNvZGl1bURSRwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4K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"),L=X,n1(y2).then(E=>WebAssembly.instantiate(E,L)).then(function(E){eA(E.instance)},E=>{JA(`failed to asynchronously prepare wasm: ${E}`),t2(E)}),{}}();function JC(){function L(){ug||(ug=!0,f.calledRun=!0,o0||(Zg(d0),f.onRuntimeInitialized?.(),function(){if(f.postRun)for(typeof f.postRun=="function"&&(f.postRun=[f.postRun]);f.postRun.length;)X=f.postRun.shift(),U0.unshift(X);var X;Zg(U0)}()))}Z0>0||(function(){if(f.preRun)for(typeof f.preRun=="function"&&(f.preRun=[f.preRun]);f.preRun.length;)X=f.preRun.shift(),m0.unshift(X);var X;Zg(m0)}(),Z0>0||(f.setStatus?(f.setStatus("Running..."),setTimeout(function(){setTimeout(function(){f.setStatus("")},1),L()},1)):L()))}if(f._crypto_aead_aegis128l_keybytes=()=>(f._crypto_aead_aegis128l_keybytes=j.g)(),f._crypto_aead_aegis128l_nsecbytes=()=>(f._crypto_aead_aegis128l_nsecbytes=j.h)(),f._crypto_aead_aegis128l_npubbytes=()=>(f._crypto_aead_aegis128l_npubbytes=j.i)(),f._crypto_aead_aegis128l_abytes=()=>(f._crypto_aead_aegis128l_abytes=j.j)(),f._crypto_aead_aegis128l_messagebytes_max=()=>(f._crypto_aead_aegis128l_messagebytes_max=j.k)(),f._crypto_aead_aegis128l_keygen=L=>(f._crypto_aead_aegis128l_keygen=j.l)(L),f._crypto_aead_aegis128l_encrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis128l_encrypt=j.m)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aegis128l_encrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2)=>(f._crypto_aead_aegis128l_encrypt_detached=j.n)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2),f._crypto_aead_aegis128l_decrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis128l_decrypt=j.o)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aegis128l_decrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis128l_decrypt_detached=j.p)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aegis256_keybytes=()=>(f._crypto_aead_aegis256_keybytes=j.q)(),f._crypto_aead_aegis256_nsecbytes=()=>(f._crypto_aead_aegis256_nsecbytes=j.r)(),f._crypto_aead_aegis256_npubbytes=()=>(f._crypto_aead_aegis256_npubbytes=j.s)(),f._crypto_aead_aegis256_abytes=()=>(f._crypto_aead_aegis256_abytes=j.t)(),f._crypto_aead_aegis256_messagebytes_max=()=>(f._crypto_aead_aegis256_messagebytes_max=j.u)(),f._crypto_aead_aegis256_keygen=L=>(f._crypto_aead_aegis256_keygen=j.v)(L),f._crypto_aead_aegis256_encrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis256_encrypt=j.w)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aegis256_encrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2)=>(f._crypto_aead_aegis256_encrypt_detached=j.x)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2),f._crypto_aead_aegis256_decrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis256_decrypt=j.y)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aegis256_decrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis256_decrypt_detached=j.z)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aes256gcm_is_available=()=>(f._crypto_aead_aes256gcm_is_available=j.A)(),f._crypto_aead_chacha20poly1305_encrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2)=>(f._crypto_aead_chacha20poly1305_encrypt_detached=j.B)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2),f._crypto_aead_chacha20poly1305_encrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_encrypt=j.C)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2)=>(f._crypto_aead_chacha20poly1305_ietf_encrypt_detached=j.D)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2),f._crypto_aead_chacha20poly1305_ietf_encrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_ietf_encrypt=j.E)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_decrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_decrypt_detached=j.F)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_decrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_decrypt=j.G)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_ietf_decrypt_detached=j.H)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_ietf_decrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_ietf_decrypt=j.I)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(f._crypto_aead_chacha20poly1305_ietf_keybytes=j.J)(),f._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(f._crypto_aead_chacha20poly1305_ietf_npubbytes=j.K)(),f._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(f._crypto_aead_chacha20poly1305_ietf_nsecbytes=j.L)(),f._crypto_aead_chacha20poly1305_ietf_abytes=()=>(f._crypto_aead_chacha20poly1305_ietf_abytes=j.M)(),f._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(f._crypto_aead_chacha20poly1305_ietf_messagebytes_max=j.N)(),f._crypto_aead_chacha20poly1305_ietf_keygen=L=>(f._crypto_aead_chacha20poly1305_ietf_keygen=j.O)(L),f._crypto_aead_chacha20poly1305_keybytes=()=>(f._crypto_aead_chacha20poly1305_keybytes=j.P)(),f._crypto_aead_chacha20poly1305_npubbytes=()=>(f._crypto_aead_chacha20poly1305_npubbytes=j.Q)(),f._crypto_aead_chacha20poly1305_nsecbytes=()=>(f._crypto_aead_chacha20poly1305_nsecbytes=j.R)(),f._crypto_aead_chacha20poly1305_abytes=()=>(f._crypto_aead_chacha20poly1305_abytes=j.S)(),f._crypto_aead_chacha20poly1305_messagebytes_max=()=>(f._crypto_aead_chacha20poly1305_messagebytes_max=j.T)(),f._crypto_aead_chacha20poly1305_keygen=L=>(f._crypto_aead_chacha20poly1305_keygen=j.U)(L),f._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2)=>(f._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=j.V)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2),f._crypto_aead_xchacha20poly1305_ietf_encrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_xchacha20poly1305_ietf_encrypt=j.W)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=j.X)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_xchacha20poly1305_ietf_decrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_xchacha20poly1305_ietf_decrypt=j.Y)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(f._crypto_aead_xchacha20poly1305_ietf_keybytes=j.Z)(),f._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(f._crypto_aead_xchacha20poly1305_ietf_npubbytes=j._)(),f._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(f._crypto_aead_xchacha20poly1305_ietf_nsecbytes=j.$)(),f._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(f._crypto_aead_xchacha20poly1305_ietf_abytes=j.aa)(),f._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(f._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=j.ba)(),f._crypto_aead_xchacha20poly1305_ietf_keygen=L=>(f._crypto_aead_xchacha20poly1305_ietf_keygen=j.ca)(L),f._crypto_auth_bytes=()=>(f._crypto_auth_bytes=j.da)(),f._crypto_auth_keybytes=()=>(f._crypto_auth_keybytes=j.ea)(),f._crypto_auth_primitive=()=>(f._crypto_auth_primitive=j.fa)(),f._crypto_auth=(L,X,eA,E,bA)=>(f._crypto_auth=j.ga)(L,X,eA,E,bA),f._crypto_auth_verify=(L,X,eA,E,bA)=>(f._crypto_auth_verify=j.ha)(L,X,eA,E,bA),f._crypto_auth_keygen=L=>(f._crypto_auth_keygen=j.ia)(L),f._crypto_auth_hmacsha256_bytes=()=>(f._crypto_auth_hmacsha256_bytes=j.ja)(),f._crypto_auth_hmacsha256_keybytes=()=>(f._crypto_auth_hmacsha256_keybytes=j.ka)(),f._crypto_auth_hmacsha256_statebytes=()=>(f._crypto_auth_hmacsha256_statebytes=j.la)(),f._crypto_auth_hmacsha256_keygen=L=>(f._crypto_auth_hmacsha256_keygen=j.ma)(L),f._crypto_auth_hmacsha256_init=(L,X,eA)=>(f._crypto_auth_hmacsha256_init=j.na)(L,X,eA),f._crypto_auth_hmacsha256_update=(L,X,eA,E)=>(f._crypto_auth_hmacsha256_update=j.oa)(L,X,eA,E),f._crypto_auth_hmacsha256_final=(L,X)=>(f._crypto_auth_hmacsha256_final=j.pa)(L,X),f._crypto_auth_hmacsha256=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha256=j.qa)(L,X,eA,E,bA),f._crypto_auth_hmacsha256_verify=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha256_verify=j.ra)(L,X,eA,E,bA),f._crypto_auth_hmacsha512_bytes=()=>(f._crypto_auth_hmacsha512_bytes=j.sa)(),f._crypto_auth_hmacsha512_keybytes=()=>(f._crypto_auth_hmacsha512_keybytes=j.ta)(),f._crypto_auth_hmacsha512_statebytes=()=>(f._crypto_auth_hmacsha512_statebytes=j.ua)(),f._crypto_auth_hmacsha512_keygen=L=>(f._crypto_auth_hmacsha512_keygen=j.va)(L),f._crypto_auth_hmacsha512_init=(L,X,eA)=>(f._crypto_auth_hmacsha512_init=j.wa)(L,X,eA),f._crypto_auth_hmacsha512_update=(L,X,eA,E)=>(f._crypto_auth_hmacsha512_update=j.xa)(L,X,eA,E),f._crypto_auth_hmacsha512_final=(L,X)=>(f._crypto_auth_hmacsha512_final=j.ya)(L,X),f._crypto_auth_hmacsha512=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha512=j.za)(L,X,eA,E,bA),f._crypto_auth_hmacsha512_verify=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha512_verify=j.Aa)(L,X,eA,E,bA),f._crypto_auth_hmacsha512256_bytes=()=>(f._crypto_auth_hmacsha512256_bytes=j.Ba)(),f._crypto_auth_hmacsha512256_keybytes=()=>(f._crypto_auth_hmacsha512256_keybytes=j.Ca)(),f._crypto_auth_hmacsha512256_statebytes=()=>(f._crypto_auth_hmacsha512256_statebytes=j.Da)(),f._crypto_auth_hmacsha512256_keygen=L=>(f._crypto_auth_hmacsha512256_keygen=j.Ea)(L),f._crypto_auth_hmacsha512256_init=(L,X,eA)=>(f._crypto_auth_hmacsha512256_init=j.Fa)(L,X,eA),f._crypto_auth_hmacsha512256_update=(L,X,eA,E)=>(f._crypto_auth_hmacsha512256_update=j.Ga)(L,X,eA,E),f._crypto_auth_hmacsha512256_final=(L,X)=>(f._crypto_auth_hmacsha512256_final=j.Ha)(L,X),f._crypto_auth_hmacsha512256=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha512256=j.Ia)(L,X,eA,E,bA),f._crypto_auth_hmacsha512256_verify=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha512256_verify=j.Ja)(L,X,eA,E,bA),f._crypto_box_seedbytes=()=>(f._crypto_box_seedbytes=j.Ka)(),f._crypto_box_publickeybytes=()=>(f._crypto_box_publickeybytes=j.La)(),f._crypto_box_secretkeybytes=()=>(f._crypto_box_secretkeybytes=j.Ma)(),f._crypto_box_beforenmbytes=()=>(f._crypto_box_beforenmbytes=j.Na)(),f._crypto_box_noncebytes=()=>(f._crypto_box_noncebytes=j.Oa)(),f._crypto_box_zerobytes=()=>(f._crypto_box_zerobytes=j.Pa)(),f._crypto_box_boxzerobytes=()=>(f._crypto_box_boxzerobytes=j.Qa)(),f._crypto_box_macbytes=()=>(f._crypto_box_macbytes=j.Ra)(),f._crypto_box_messagebytes_max=()=>(f._crypto_box_messagebytes_max=j.Sa)(),f._crypto_box_primitive=()=>(f._crypto_box_primitive=j.Ta)(),f._crypto_box_seed_keypair=(L,X,eA)=>(f._crypto_box_seed_keypair=j.Ua)(L,X,eA),f._crypto_box_keypair=(L,X)=>(f._crypto_box_keypair=j.Va)(L,X),f._crypto_box_beforenm=(L,X,eA)=>(f._crypto_box_beforenm=j.Wa)(L,X,eA),f._crypto_box_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_afternm=j.Xa)(L,X,eA,E,bA,UA),f._crypto_box_open_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_open_afternm=j.Ya)(L,X,eA,E,bA,UA),f._crypto_box=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box=j.Za)(L,X,eA,E,bA,UA,r0),f._crypto_box_open=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_open=j._a)(L,X,eA,E,bA,UA,r0),f._crypto_box_detached_afternm=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_detached_afternm=j.$a)(L,X,eA,E,bA,UA,r0),f._crypto_box_detached=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_box_detached=j.ab)(L,X,eA,E,bA,UA,r0,S0),f._crypto_box_easy_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_easy_afternm=j.bb)(L,X,eA,E,bA,UA),f._crypto_box_easy=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_easy=j.cb)(L,X,eA,E,bA,UA,r0),f._crypto_box_open_detached_afternm=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_open_detached_afternm=j.db)(L,X,eA,E,bA,UA,r0),f._crypto_box_open_detached=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_box_open_detached=j.eb)(L,X,eA,E,bA,UA,r0,S0),f._crypto_box_open_easy_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_open_easy_afternm=j.fb)(L,X,eA,E,bA,UA),f._crypto_box_open_easy=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_open_easy=j.gb)(L,X,eA,E,bA,UA,r0),f._crypto_box_seal=(L,X,eA,E,bA)=>(f._crypto_box_seal=j.hb)(L,X,eA,E,bA),f._crypto_box_seal_open=(L,X,eA,E,bA,UA)=>(f._crypto_box_seal_open=j.ib)(L,X,eA,E,bA,UA),f._crypto_box_sealbytes=()=>(f._crypto_box_sealbytes=j.jb)(),f._crypto_box_curve25519xsalsa20poly1305_seed_keypair=(L,X,eA)=>(f._crypto_box_curve25519xsalsa20poly1305_seed_keypair=j.kb)(L,X,eA),f._crypto_box_curve25519xsalsa20poly1305_keypair=(L,X)=>(f._crypto_box_curve25519xsalsa20poly1305_keypair=j.lb)(L,X),f._crypto_box_curve25519xsalsa20poly1305_beforenm=(L,X,eA)=>(f._crypto_box_curve25519xsalsa20poly1305_beforenm=j.mb)(L,X,eA),f._crypto_box_curve25519xsalsa20poly1305_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_curve25519xsalsa20poly1305_afternm=j.nb)(L,X,eA,E,bA,UA),f._crypto_box_curve25519xsalsa20poly1305_open_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_curve25519xsalsa20poly1305_open_afternm=j.ob)(L,X,eA,E,bA,UA),f._crypto_box_curve25519xsalsa20poly1305=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xsalsa20poly1305=j.pb)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xsalsa20poly1305_open=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xsalsa20poly1305_open=j.qb)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xsalsa20poly1305_seedbytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_seedbytes=j.rb)(),f._crypto_box_curve25519xsalsa20poly1305_publickeybytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_publickeybytes=j.sb)(),f._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=j.tb)(),f._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=j.ub)(),f._crypto_box_curve25519xsalsa20poly1305_noncebytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_noncebytes=j.vb)(),f._crypto_box_curve25519xsalsa20poly1305_zerobytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_zerobytes=j.wb)(),f._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=j.xb)(),f._crypto_box_curve25519xsalsa20poly1305_macbytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_macbytes=j.yb)(),f._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=()=>(f._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=j.zb)(),f._crypto_core_hchacha20=(L,X,eA,E)=>(f._crypto_core_hchacha20=j.Ab)(L,X,eA,E),f._crypto_core_hchacha20_outputbytes=()=>(f._crypto_core_hchacha20_outputbytes=j.Bb)(),f._crypto_core_hchacha20_inputbytes=()=>(f._crypto_core_hchacha20_inputbytes=j.Cb)(),f._crypto_core_hchacha20_keybytes=()=>(f._crypto_core_hchacha20_keybytes=j.Db)(),f._crypto_core_hchacha20_constbytes=()=>(f._crypto_core_hchacha20_constbytes=j.Eb)(),f._crypto_core_hsalsa20=(L,X,eA,E)=>(f._crypto_core_hsalsa20=j.Fb)(L,X,eA,E),f._crypto_core_hsalsa20_outputbytes=()=>(f._crypto_core_hsalsa20_outputbytes=j.Gb)(),f._crypto_core_hsalsa20_inputbytes=()=>(f._crypto_core_hsalsa20_inputbytes=j.Hb)(),f._crypto_core_hsalsa20_keybytes=()=>(f._crypto_core_hsalsa20_keybytes=j.Ib)(),f._crypto_core_hsalsa20_constbytes=()=>(f._crypto_core_hsalsa20_constbytes=j.Jb)(),f._crypto_core_salsa20=(L,X,eA,E)=>(f._crypto_core_salsa20=j.Kb)(L,X,eA,E),f._crypto_core_salsa20_outputbytes=()=>(f._crypto_core_salsa20_outputbytes=j.Lb)(),f._crypto_core_salsa20_inputbytes=()=>(f._crypto_core_salsa20_inputbytes=j.Mb)(),f._crypto_core_salsa20_keybytes=()=>(f._crypto_core_salsa20_keybytes=j.Nb)(),f._crypto_core_salsa20_constbytes=()=>(f._crypto_core_salsa20_constbytes=j.Ob)(),f._crypto_core_salsa2012=(L,X,eA,E)=>(f._crypto_core_salsa2012=j.Pb)(L,X,eA,E),f._crypto_core_salsa2012_outputbytes=()=>(f._crypto_core_salsa2012_outputbytes=j.Qb)(),f._crypto_core_salsa2012_inputbytes=()=>(f._crypto_core_salsa2012_inputbytes=j.Rb)(),f._crypto_core_salsa2012_keybytes=()=>(f._crypto_core_salsa2012_keybytes=j.Sb)(),f._crypto_core_salsa2012_constbytes=()=>(f._crypto_core_salsa2012_constbytes=j.Tb)(),f._crypto_core_salsa208=(L,X,eA,E)=>(f._crypto_core_salsa208=j.Ub)(L,X,eA,E),f._crypto_core_salsa208_outputbytes=()=>(f._crypto_core_salsa208_outputbytes=j.Vb)(),f._crypto_core_salsa208_inputbytes=()=>(f._crypto_core_salsa208_inputbytes=j.Wb)(),f._crypto_core_salsa208_keybytes=()=>(f._crypto_core_salsa208_keybytes=j.Xb)(),f._crypto_core_salsa208_constbytes=()=>(f._crypto_core_salsa208_constbytes=j.Yb)(),f._crypto_generichash_bytes_min=()=>(f._crypto_generichash_bytes_min=j.Zb)(),f._crypto_generichash_bytes_max=()=>(f._crypto_generichash_bytes_max=j._b)(),f._crypto_generichash_bytes=()=>(f._crypto_generichash_bytes=j.$b)(),f._crypto_generichash_keybytes_min=()=>(f._crypto_generichash_keybytes_min=j.ac)(),f._crypto_generichash_keybytes_max=()=>(f._crypto_generichash_keybytes_max=j.bc)(),f._crypto_generichash_keybytes=()=>(f._crypto_generichash_keybytes=j.cc)(),f._crypto_generichash_primitive=()=>(f._crypto_generichash_primitive=j.dc)(),f._crypto_generichash_statebytes=()=>(f._crypto_generichash_statebytes=j.ec)(),f._crypto_generichash=(L,X,eA,E,bA,UA,r0)=>(f._crypto_generichash=j.fc)(L,X,eA,E,bA,UA,r0),f._crypto_generichash_init=(L,X,eA,E)=>(f._crypto_generichash_init=j.gc)(L,X,eA,E),f._crypto_generichash_update=(L,X,eA,E)=>(f._crypto_generichash_update=j.hc)(L,X,eA,E),f._crypto_generichash_final=(L,X,eA)=>(f._crypto_generichash_final=j.ic)(L,X,eA),f._crypto_generichash_keygen=L=>(f._crypto_generichash_keygen=j.jc)(L),f._crypto_generichash_blake2b_bytes_min=()=>(f._crypto_generichash_blake2b_bytes_min=j.kc)(),f._crypto_generichash_blake2b_bytes_max=()=>(f._crypto_generichash_blake2b_bytes_max=j.lc)(),f._crypto_generichash_blake2b_bytes=()=>(f._crypto_generichash_blake2b_bytes=j.mc)(),f._crypto_generichash_blake2b_keybytes_min=()=>(f._crypto_generichash_blake2b_keybytes_min=j.nc)(),f._crypto_generichash_blake2b_keybytes_max=()=>(f._crypto_generichash_blake2b_keybytes_max=j.oc)(),f._crypto_generichash_blake2b_keybytes=()=>(f._crypto_generichash_blake2b_keybytes=j.pc)(),f._crypto_generichash_blake2b_saltbytes=()=>(f._crypto_generichash_blake2b_saltbytes=j.qc)(),f._crypto_generichash_blake2b_personalbytes=()=>(f._crypto_generichash_blake2b_personalbytes=j.rc)(),f._crypto_generichash_blake2b_statebytes=()=>(f._crypto_generichash_blake2b_statebytes=j.sc)(),f._crypto_generichash_blake2b_keygen=L=>(f._crypto_generichash_blake2b_keygen=j.tc)(L),f._crypto_generichash_blake2b=(L,X,eA,E,bA,UA,r0)=>(f._crypto_generichash_blake2b=j.uc)(L,X,eA,E,bA,UA,r0),f._crypto_generichash_blake2b_salt_personal=(L,X,eA,E,bA,UA,r0,S0,v0)=>(f._crypto_generichash_blake2b_salt_personal=j.vc)(L,X,eA,E,bA,UA,r0,S0,v0),f._crypto_generichash_blake2b_init=(L,X,eA,E)=>(f._crypto_generichash_blake2b_init=j.wc)(L,X,eA,E),f._crypto_generichash_blake2b_init_salt_personal=(L,X,eA,E,bA,UA)=>(f._crypto_generichash_blake2b_init_salt_personal=j.xc)(L,X,eA,E,bA,UA),f._crypto_generichash_blake2b_update=(L,X,eA,E)=>(f._crypto_generichash_blake2b_update=j.yc)(L,X,eA,E),f._crypto_generichash_blake2b_final=(L,X,eA)=>(f._crypto_generichash_blake2b_final=j.zc)(L,X,eA),f._crypto_hash_bytes=()=>(f._crypto_hash_bytes=j.Ac)(),f._crypto_hash=(L,X,eA,E)=>(f._crypto_hash=j.Bc)(L,X,eA,E),f._crypto_hash_primitive=()=>(f._crypto_hash_primitive=j.Cc)(),f._crypto_hash_sha256_bytes=()=>(f._crypto_hash_sha256_bytes=j.Dc)(),f._crypto_hash_sha256_statebytes=()=>(f._crypto_hash_sha256_statebytes=j.Ec)(),f._crypto_hash_sha256_init=L=>(f._crypto_hash_sha256_init=j.Fc)(L),f._crypto_hash_sha256_update=(L,X,eA,E)=>(f._crypto_hash_sha256_update=j.Gc)(L,X,eA,E),f._crypto_hash_sha256_final=(L,X)=>(f._crypto_hash_sha256_final=j.Hc)(L,X),f._crypto_hash_sha256=(L,X,eA,E)=>(f._crypto_hash_sha256=j.Ic)(L,X,eA,E),f._crypto_hash_sha512_bytes=()=>(f._crypto_hash_sha512_bytes=j.Jc)(),f._crypto_hash_sha512_statebytes=()=>(f._crypto_hash_sha512_statebytes=j.Kc)(),f._crypto_hash_sha512_init=L=>(f._crypto_hash_sha512_init=j.Lc)(L),f._crypto_hash_sha512_update=(L,X,eA,E)=>(f._crypto_hash_sha512_update=j.Mc)(L,X,eA,E),f._crypto_hash_sha512_final=(L,X)=>(f._crypto_hash_sha512_final=j.Nc)(L,X),f._crypto_hash_sha512=(L,X,eA,E)=>(f._crypto_hash_sha512=j.Oc)(L,X,eA,E),f._crypto_kdf_blake2b_bytes_min=()=>(f._crypto_kdf_blake2b_bytes_min=j.Pc)(),f._crypto_kdf_blake2b_bytes_max=()=>(f._crypto_kdf_blake2b_bytes_max=j.Qc)(),f._crypto_kdf_blake2b_contextbytes=()=>(f._crypto_kdf_blake2b_contextbytes=j.Rc)(),f._crypto_kdf_blake2b_keybytes=()=>(f._crypto_kdf_blake2b_keybytes=j.Sc)(),f._crypto_kdf_blake2b_derive_from_key=(L,X,eA,E,bA,UA)=>(f._crypto_kdf_blake2b_derive_from_key=j.Tc)(L,X,eA,E,bA,UA),f._crypto_kdf_primitive=()=>(f._crypto_kdf_primitive=j.Uc)(),f._crypto_kdf_bytes_min=()=>(f._crypto_kdf_bytes_min=j.Vc)(),f._crypto_kdf_bytes_max=()=>(f._crypto_kdf_bytes_max=j.Wc)(),f._crypto_kdf_contextbytes=()=>(f._crypto_kdf_contextbytes=j.Xc)(),f._crypto_kdf_keybytes=()=>(f._crypto_kdf_keybytes=j.Yc)(),f._crypto_kdf_derive_from_key=(L,X,eA,E,bA,UA)=>(f._crypto_kdf_derive_from_key=j.Zc)(L,X,eA,E,bA,UA),f._crypto_kdf_keygen=L=>(f._crypto_kdf_keygen=j._c)(L),f._crypto_kdf_hkdf_sha256_extract_init=(L,X,eA)=>(f._crypto_kdf_hkdf_sha256_extract_init=j.$c)(L,X,eA),f._crypto_kdf_hkdf_sha256_extract_update=(L,X,eA)=>(f._crypto_kdf_hkdf_sha256_extract_update=j.ad)(L,X,eA),f._crypto_kdf_hkdf_sha256_extract_final=(L,X)=>(f._crypto_kdf_hkdf_sha256_extract_final=j.bd)(L,X),f._crypto_kdf_hkdf_sha256_extract=(L,X,eA,E,bA)=>(f._crypto_kdf_hkdf_sha256_extract=j.cd)(L,X,eA,E,bA),f._crypto_kdf_hkdf_sha256_keygen=L=>(f._crypto_kdf_hkdf_sha256_keygen=j.dd)(L),f._crypto_kdf_hkdf_sha256_expand=(L,X,eA,E,bA)=>(f._crypto_kdf_hkdf_sha256_expand=j.ed)(L,X,eA,E,bA),f._crypto_kdf_hkdf_sha256_keybytes=()=>(f._crypto_kdf_hkdf_sha256_keybytes=j.fd)(),f._crypto_kdf_hkdf_sha256_bytes_min=()=>(f._crypto_kdf_hkdf_sha256_bytes_min=j.gd)(),f._crypto_kdf_hkdf_sha256_bytes_max=()=>(f._crypto_kdf_hkdf_sha256_bytes_max=j.hd)(),f._crypto_kdf_hkdf_sha256_statebytes=()=>(f._crypto_kdf_hkdf_sha256_statebytes=j.id)(),f._crypto_kdf_hkdf_sha512_extract_init=(L,X,eA)=>(f._crypto_kdf_hkdf_sha512_extract_init=j.jd)(L,X,eA),f._crypto_kdf_hkdf_sha512_extract_update=(L,X,eA)=>(f._crypto_kdf_hkdf_sha512_extract_update=j.kd)(L,X,eA),f._crypto_kdf_hkdf_sha512_extract_final=(L,X)=>(f._crypto_kdf_hkdf_sha512_extract_final=j.ld)(L,X),f._crypto_kdf_hkdf_sha512_extract=(L,X,eA,E,bA)=>(f._crypto_kdf_hkdf_sha512_extract=j.md)(L,X,eA,E,bA),f._crypto_kdf_hkdf_sha512_keygen=L=>(f._crypto_kdf_hkdf_sha512_keygen=j.nd)(L),f._crypto_kdf_hkdf_sha512_expand=(L,X,eA,E,bA)=>(f._crypto_kdf_hkdf_sha512_expand=j.od)(L,X,eA,E,bA),f._crypto_kdf_hkdf_sha512_keybytes=()=>(f._crypto_kdf_hkdf_sha512_keybytes=j.pd)(),f._crypto_kdf_hkdf_sha512_bytes_min=()=>(f._crypto_kdf_hkdf_sha512_bytes_min=j.qd)(),f._crypto_kdf_hkdf_sha512_bytes_max=()=>(f._crypto_kdf_hkdf_sha512_bytes_max=j.rd)(),f._crypto_kdf_hkdf_sha512_statebytes=()=>(f._crypto_kdf_hkdf_sha512_statebytes=j.sd)(),f._crypto_kx_seed_keypair=(L,X,eA)=>(f._crypto_kx_seed_keypair=j.td)(L,X,eA),f._crypto_kx_keypair=(L,X)=>(f._crypto_kx_keypair=j.ud)(L,X),f._crypto_kx_client_session_keys=(L,X,eA,E,bA)=>(f._crypto_kx_client_session_keys=j.vd)(L,X,eA,E,bA),f._crypto_kx_server_session_keys=(L,X,eA,E,bA)=>(f._crypto_kx_server_session_keys=j.wd)(L,X,eA,E,bA),f._crypto_kx_publickeybytes=()=>(f._crypto_kx_publickeybytes=j.xd)(),f._crypto_kx_secretkeybytes=()=>(f._crypto_kx_secretkeybytes=j.yd)(),f._crypto_kx_seedbytes=()=>(f._crypto_kx_seedbytes=j.zd)(),f._crypto_kx_sessionkeybytes=()=>(f._crypto_kx_sessionkeybytes=j.Ad)(),f._crypto_kx_primitive=()=>(f._crypto_kx_primitive=j.Bd)(),f._crypto_onetimeauth_statebytes=()=>(f._crypto_onetimeauth_statebytes=j.Cd)(),f._crypto_onetimeauth_bytes=()=>(f._crypto_onetimeauth_bytes=j.Dd)(),f._crypto_onetimeauth_keybytes=()=>(f._crypto_onetimeauth_keybytes=j.Ed)(),f._crypto_onetimeauth=(L,X,eA,E,bA)=>(f._crypto_onetimeauth=j.Fd)(L,X,eA,E,bA),f._crypto_onetimeauth_verify=(L,X,eA,E,bA)=>(f._crypto_onetimeauth_verify=j.Gd)(L,X,eA,E,bA),f._crypto_onetimeauth_init=(L,X)=>(f._crypto_onetimeauth_init=j.Hd)(L,X),f._crypto_onetimeauth_update=(L,X,eA,E)=>(f._crypto_onetimeauth_update=j.Id)(L,X,eA,E),f._crypto_onetimeauth_final=(L,X)=>(f._crypto_onetimeauth_final=j.Jd)(L,X),f._crypto_onetimeauth_primitive=()=>(f._crypto_onetimeauth_primitive=j.Kd)(),f._crypto_onetimeauth_keygen=L=>(f._crypto_onetimeauth_keygen=j.Ld)(L),f._crypto_onetimeauth_poly1305=(L,X,eA,E,bA)=>(f._crypto_onetimeauth_poly1305=j.Md)(L,X,eA,E,bA),f._crypto_onetimeauth_poly1305_verify=(L,X,eA,E,bA)=>(f._crypto_onetimeauth_poly1305_verify=j.Nd)(L,X,eA,E,bA),f._crypto_onetimeauth_poly1305_init=(L,X)=>(f._crypto_onetimeauth_poly1305_init=j.Od)(L,X),f._crypto_onetimeauth_poly1305_update=(L,X,eA,E)=>(f._crypto_onetimeauth_poly1305_update=j.Pd)(L,X,eA,E),f._crypto_onetimeauth_poly1305_final=(L,X)=>(f._crypto_onetimeauth_poly1305_final=j.Qd)(L,X),f._crypto_onetimeauth_poly1305_bytes=()=>(f._crypto_onetimeauth_poly1305_bytes=j.Rd)(),f._crypto_onetimeauth_poly1305_keybytes=()=>(f._crypto_onetimeauth_poly1305_keybytes=j.Sd)(),f._crypto_onetimeauth_poly1305_statebytes=()=>(f._crypto_onetimeauth_poly1305_statebytes=j.Td)(),f._crypto_onetimeauth_poly1305_keygen=L=>(f._crypto_onetimeauth_poly1305_keygen=j.Ud)(L),f._crypto_pwhash_argon2i_alg_argon2i13=()=>(f._crypto_pwhash_argon2i_alg_argon2i13=j.Vd)(),f._crypto_pwhash_argon2i_bytes_min=()=>(f._crypto_pwhash_argon2i_bytes_min=j.Wd)(),f._crypto_pwhash_argon2i_bytes_max=()=>(f._crypto_pwhash_argon2i_bytes_max=j.Xd)(),f._crypto_pwhash_argon2i_passwd_min=()=>(f._crypto_pwhash_argon2i_passwd_min=j.Yd)(),f._crypto_pwhash_argon2i_passwd_max=()=>(f._crypto_pwhash_argon2i_passwd_max=j.Zd)(),f._crypto_pwhash_argon2i_saltbytes=()=>(f._crypto_pwhash_argon2i_saltbytes=j._d)(),f._crypto_pwhash_argon2i_strbytes=()=>(f._crypto_pwhash_argon2i_strbytes=j.$d)(),f._crypto_pwhash_argon2i_strprefix=()=>(f._crypto_pwhash_argon2i_strprefix=j.ae)(),f._crypto_pwhash_argon2i_opslimit_min=()=>(f._crypto_pwhash_argon2i_opslimit_min=j.be)(),f._crypto_pwhash_argon2i_opslimit_max=()=>(f._crypto_pwhash_argon2i_opslimit_max=j.ce)(),f._crypto_pwhash_argon2i_memlimit_min=()=>(f._crypto_pwhash_argon2i_memlimit_min=j.de)(),f._crypto_pwhash_argon2i_memlimit_max=()=>(f._crypto_pwhash_argon2i_memlimit_max=j.ee)(),f._crypto_pwhash_argon2i_opslimit_interactive=()=>(f._crypto_pwhash_argon2i_opslimit_interactive=j.fe)(),f._crypto_pwhash_argon2i_memlimit_interactive=()=>(f._crypto_pwhash_argon2i_memlimit_interactive=j.ge)(),f._crypto_pwhash_argon2i_opslimit_moderate=()=>(f._crypto_pwhash_argon2i_opslimit_moderate=j.he)(),f._crypto_pwhash_argon2i_memlimit_moderate=()=>(f._crypto_pwhash_argon2i_memlimit_moderate=j.ie)(),f._crypto_pwhash_argon2i_opslimit_sensitive=()=>(f._crypto_pwhash_argon2i_opslimit_sensitive=j.je)(),f._crypto_pwhash_argon2i_memlimit_sensitive=()=>(f._crypto_pwhash_argon2i_memlimit_sensitive=j.ke)(),f._crypto_pwhash_argon2i=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_pwhash_argon2i=j.le)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_pwhash_argon2i_str=(L,X,eA,E,bA,UA,r0)=>(f._crypto_pwhash_argon2i_str=j.me)(L,X,eA,E,bA,UA,r0),f._crypto_pwhash_argon2i_str_verify=(L,X,eA,E)=>(f._crypto_pwhash_argon2i_str_verify=j.ne)(L,X,eA,E),f._crypto_pwhash_argon2i_str_needs_rehash=(L,X,eA,E)=>(f._crypto_pwhash_argon2i_str_needs_rehash=j.oe)(L,X,eA,E),f._crypto_pwhash_argon2id_str_needs_rehash=(L,X,eA,E)=>(f._crypto_pwhash_argon2id_str_needs_rehash=j.pe)(L,X,eA,E),f._crypto_pwhash_argon2id_alg_argon2id13=()=>(f._crypto_pwhash_argon2id_alg_argon2id13=j.qe)(),f._crypto_pwhash_argon2id_bytes_min=()=>(f._crypto_pwhash_argon2id_bytes_min=j.re)(),f._crypto_pwhash_argon2id_bytes_max=()=>(f._crypto_pwhash_argon2id_bytes_max=j.se)(),f._crypto_pwhash_argon2id_passwd_min=()=>(f._crypto_pwhash_argon2id_passwd_min=j.te)(),f._crypto_pwhash_argon2id_passwd_max=()=>(f._crypto_pwhash_argon2id_passwd_max=j.ue)(),f._crypto_pwhash_argon2id_saltbytes=()=>(f._crypto_pwhash_argon2id_saltbytes=j.ve)(),f._crypto_pwhash_argon2id_strbytes=()=>(f._crypto_pwhash_argon2id_strbytes=j.we)(),f._crypto_pwhash_argon2id_strprefix=()=>(f._crypto_pwhash_argon2id_strprefix=j.xe)(),f._crypto_pwhash_argon2id_opslimit_min=()=>(f._crypto_pwhash_argon2id_opslimit_min=j.ye)(),f._crypto_pwhash_argon2id_opslimit_max=()=>(f._crypto_pwhash_argon2id_opslimit_max=j.ze)(),f._crypto_pwhash_argon2id_memlimit_min=()=>(f._crypto_pwhash_argon2id_memlimit_min=j.Ae)(),f._crypto_pwhash_argon2id_memlimit_max=()=>(f._crypto_pwhash_argon2id_memlimit_max=j.Be)(),f._crypto_pwhash_argon2id_opslimit_interactive=()=>(f._crypto_pwhash_argon2id_opslimit_interactive=j.Ce)(),f._crypto_pwhash_argon2id_memlimit_interactive=()=>(f._crypto_pwhash_argon2id_memlimit_interactive=j.De)(),f._crypto_pwhash_argon2id_opslimit_moderate=()=>(f._crypto_pwhash_argon2id_opslimit_moderate=j.Ee)(),f._crypto_pwhash_argon2id_memlimit_moderate=()=>(f._crypto_pwhash_argon2id_memlimit_moderate=j.Fe)(),f._crypto_pwhash_argon2id_opslimit_sensitive=()=>(f._crypto_pwhash_argon2id_opslimit_sensitive=j.Ge)(),f._crypto_pwhash_argon2id_memlimit_sensitive=()=>(f._crypto_pwhash_argon2id_memlimit_sensitive=j.He)(),f._crypto_pwhash_argon2id=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_pwhash_argon2id=j.Ie)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_pwhash_argon2id_str=(L,X,eA,E,bA,UA,r0)=>(f._crypto_pwhash_argon2id_str=j.Je)(L,X,eA,E,bA,UA,r0),f._crypto_pwhash_argon2id_str_verify=(L,X,eA,E)=>(f._crypto_pwhash_argon2id_str_verify=j.Ke)(L,X,eA,E),f._crypto_pwhash_alg_argon2i13=()=>(f._crypto_pwhash_alg_argon2i13=j.Le)(),f._crypto_pwhash_alg_argon2id13=()=>(f._crypto_pwhash_alg_argon2id13=j.Me)(),f._crypto_pwhash_alg_default=()=>(f._crypto_pwhash_alg_default=j.Ne)(),f._crypto_pwhash_bytes_min=()=>(f._crypto_pwhash_bytes_min=j.Oe)(),f._crypto_pwhash_bytes_max=()=>(f._crypto_pwhash_bytes_max=j.Pe)(),f._crypto_pwhash_passwd_min=()=>(f._crypto_pwhash_passwd_min=j.Qe)(),f._crypto_pwhash_passwd_max=()=>(f._crypto_pwhash_passwd_max=j.Re)(),f._crypto_pwhash_saltbytes=()=>(f._crypto_pwhash_saltbytes=j.Se)(),f._crypto_pwhash_strbytes=()=>(f._crypto_pwhash_strbytes=j.Te)(),f._crypto_pwhash_strprefix=()=>(f._crypto_pwhash_strprefix=j.Ue)(),f._crypto_pwhash_opslimit_min=()=>(f._crypto_pwhash_opslimit_min=j.Ve)(),f._crypto_pwhash_opslimit_max=()=>(f._crypto_pwhash_opslimit_max=j.We)(),f._crypto_pwhash_memlimit_min=()=>(f._crypto_pwhash_memlimit_min=j.Xe)(),f._crypto_pwhash_memlimit_max=()=>(f._crypto_pwhash_memlimit_max=j.Ye)(),f._crypto_pwhash_opslimit_interactive=()=>(f._crypto_pwhash_opslimit_interactive=j.Ze)(),f._crypto_pwhash_memlimit_interactive=()=>(f._crypto_pwhash_memlimit_interactive=j._e)(),f._crypto_pwhash_opslimit_moderate=()=>(f._crypto_pwhash_opslimit_moderate=j.$e)(),f._crypto_pwhash_memlimit_moderate=()=>(f._crypto_pwhash_memlimit_moderate=j.af)(),f._crypto_pwhash_opslimit_sensitive=()=>(f._crypto_pwhash_opslimit_sensitive=j.bf)(),f._crypto_pwhash_memlimit_sensitive=()=>(f._crypto_pwhash_memlimit_sensitive=j.cf)(),f._crypto_pwhash=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_pwhash=j.df)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_pwhash_str=(L,X,eA,E,bA,UA,r0)=>(f._crypto_pwhash_str=j.ef)(L,X,eA,E,bA,UA,r0),f._crypto_pwhash_str_alg=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_pwhash_str_alg=j.ff)(L,X,eA,E,bA,UA,r0,S0),f._crypto_pwhash_str_verify=(L,X,eA,E)=>(f._crypto_pwhash_str_verify=j.gf)(L,X,eA,E),f._crypto_pwhash_str_needs_rehash=(L,X,eA,E)=>(f._crypto_pwhash_str_needs_rehash=j.hf)(L,X,eA,E),f._crypto_pwhash_primitive=()=>(f._crypto_pwhash_primitive=j.jf)(),f._crypto_scalarmult_primitive=()=>(f._crypto_scalarmult_primitive=j.kf)(),f._crypto_scalarmult_base=(L,X)=>(f._crypto_scalarmult_base=j.lf)(L,X),f._crypto_scalarmult=(L,X,eA)=>(f._crypto_scalarmult=j.mf)(L,X,eA),f._crypto_scalarmult_bytes=()=>(f._crypto_scalarmult_bytes=j.nf)(),f._crypto_scalarmult_scalarbytes=()=>(f._crypto_scalarmult_scalarbytes=j.of)(),f._crypto_scalarmult_curve25519=(L,X,eA)=>(f._crypto_scalarmult_curve25519=j.pf)(L,X,eA),f._crypto_scalarmult_curve25519_base=(L,X)=>(f._crypto_scalarmult_curve25519_base=j.qf)(L,X),f._crypto_scalarmult_curve25519_bytes=()=>(f._crypto_scalarmult_curve25519_bytes=j.rf)(),f._crypto_scalarmult_curve25519_scalarbytes=()=>(f._crypto_scalarmult_curve25519_scalarbytes=j.sf)(),f._crypto_secretbox_keybytes=()=>(f._crypto_secretbox_keybytes=j.tf)(),f._crypto_secretbox_noncebytes=()=>(f._crypto_secretbox_noncebytes=j.uf)(),f._crypto_secretbox_zerobytes=()=>(f._crypto_secretbox_zerobytes=j.vf)(),f._crypto_secretbox_boxzerobytes=()=>(f._crypto_secretbox_boxzerobytes=j.wf)(),f._crypto_secretbox_macbytes=()=>(f._crypto_secretbox_macbytes=j.xf)(),f._crypto_secretbox_messagebytes_max=()=>(f._crypto_secretbox_messagebytes_max=j.yf)(),f._crypto_secretbox_primitive=()=>(f._crypto_secretbox_primitive=j.zf)(),f._crypto_secretbox=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox=j.Af)(L,X,eA,E,bA,UA),f._crypto_secretbox_open=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_open=j.Bf)(L,X,eA,E,bA,UA),f._crypto_secretbox_keygen=L=>(f._crypto_secretbox_keygen=j.Cf)(L),f._crypto_secretbox_detached=(L,X,eA,E,bA,UA,r0)=>(f._crypto_secretbox_detached=j.Df)(L,X,eA,E,bA,UA,r0),f._crypto_secretbox_easy=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_easy=j.Ef)(L,X,eA,E,bA,UA),f._crypto_secretbox_open_detached=(L,X,eA,E,bA,UA,r0)=>(f._crypto_secretbox_open_detached=j.Ff)(L,X,eA,E,bA,UA,r0),f._crypto_secretbox_open_easy=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_open_easy=j.Gf)(L,X,eA,E,bA,UA),f._crypto_secretbox_xsalsa20poly1305=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_xsalsa20poly1305=j.Hf)(L,X,eA,E,bA,UA),f._crypto_secretbox_xsalsa20poly1305_open=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_xsalsa20poly1305_open=j.If)(L,X,eA,E,bA,UA),f._crypto_secretbox_xsalsa20poly1305_keybytes=()=>(f._crypto_secretbox_xsalsa20poly1305_keybytes=j.Jf)(),f._crypto_secretbox_xsalsa20poly1305_noncebytes=()=>(f._crypto_secretbox_xsalsa20poly1305_noncebytes=j.Kf)(),f._crypto_secretbox_xsalsa20poly1305_zerobytes=()=>(f._crypto_secretbox_xsalsa20poly1305_zerobytes=j.Lf)(),f._crypto_secretbox_xsalsa20poly1305_boxzerobytes=()=>(f._crypto_secretbox_xsalsa20poly1305_boxzerobytes=j.Mf)(),f._crypto_secretbox_xsalsa20poly1305_macbytes=()=>(f._crypto_secretbox_xsalsa20poly1305_macbytes=j.Nf)(),f._crypto_secretbox_xsalsa20poly1305_messagebytes_max=()=>(f._crypto_secretbox_xsalsa20poly1305_messagebytes_max=j.Of)(),f._crypto_secretbox_xsalsa20poly1305_keygen=L=>(f._crypto_secretbox_xsalsa20poly1305_keygen=j.Pf)(L),f._crypto_secretstream_xchacha20poly1305_keygen=L=>(f._crypto_secretstream_xchacha20poly1305_keygen=j.Qf)(L),f._crypto_secretstream_xchacha20poly1305_init_push=(L,X,eA)=>(f._crypto_secretstream_xchacha20poly1305_init_push=j.Rf)(L,X,eA),f._crypto_secretstream_xchacha20poly1305_init_pull=(L,X,eA)=>(f._crypto_secretstream_xchacha20poly1305_init_pull=j.Sf)(L,X,eA),f._crypto_secretstream_xchacha20poly1305_rekey=L=>(f._crypto_secretstream_xchacha20poly1305_rekey=j.Tf)(L),f._crypto_secretstream_xchacha20poly1305_push=(L,X,eA,E,bA,UA,r0,S0,v0,q0)=>(f._crypto_secretstream_xchacha20poly1305_push=j.Uf)(L,X,eA,E,bA,UA,r0,S0,v0,q0),f._crypto_secretstream_xchacha20poly1305_pull=(L,X,eA,E,bA,UA,r0,S0,v0,q0)=>(f._crypto_secretstream_xchacha20poly1305_pull=j.Vf)(L,X,eA,E,bA,UA,r0,S0,v0,q0),f._crypto_secretstream_xchacha20poly1305_statebytes=()=>(f._crypto_secretstream_xchacha20poly1305_statebytes=j.Wf)(),f._crypto_secretstream_xchacha20poly1305_abytes=()=>(f._crypto_secretstream_xchacha20poly1305_abytes=j.Xf)(),f._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(f._crypto_secretstream_xchacha20poly1305_headerbytes=j.Yf)(),f._crypto_secretstream_xchacha20poly1305_keybytes=()=>(f._crypto_secretstream_xchacha20poly1305_keybytes=j.Zf)(),f._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(f._crypto_secretstream_xchacha20poly1305_messagebytes_max=j._f)(),f._crypto_secretstream_xchacha20poly1305_tag_message=()=>(f._crypto_secretstream_xchacha20poly1305_tag_message=j.$f)(),f._crypto_secretstream_xchacha20poly1305_tag_push=()=>(f._crypto_secretstream_xchacha20poly1305_tag_push=j.ag)(),f._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(f._crypto_secretstream_xchacha20poly1305_tag_rekey=j.bg)(),f._crypto_secretstream_xchacha20poly1305_tag_final=()=>(f._crypto_secretstream_xchacha20poly1305_tag_final=j.cg)(),f._crypto_shorthash_bytes=()=>(f._crypto_shorthash_bytes=j.dg)(),f._crypto_shorthash_keybytes=()=>(f._crypto_shorthash_keybytes=j.eg)(),f._crypto_shorthash_primitive=()=>(f._crypto_shorthash_primitive=j.fg)(),f._crypto_shorthash=(L,X,eA,E,bA)=>(f._crypto_shorthash=j.gg)(L,X,eA,E,bA),f._crypto_shorthash_keygen=L=>(f._crypto_shorthash_keygen=j.hg)(L),f._crypto_shorthash_siphash24_bytes=()=>(f._crypto_shorthash_siphash24_bytes=j.ig)(),f._crypto_shorthash_siphash24_keybytes=()=>(f._crypto_shorthash_siphash24_keybytes=j.jg)(),f._crypto_shorthash_siphash24=(L,X,eA,E,bA)=>(f._crypto_shorthash_siphash24=j.kg)(L,X,eA,E,bA),f._crypto_sign_statebytes=()=>(f._crypto_sign_statebytes=j.lg)(),f._crypto_sign_bytes=()=>(f._crypto_sign_bytes=j.mg)(),f._crypto_sign_seedbytes=()=>(f._crypto_sign_seedbytes=j.ng)(),f._crypto_sign_publickeybytes=()=>(f._crypto_sign_publickeybytes=j.og)(),f._crypto_sign_secretkeybytes=()=>(f._crypto_sign_secretkeybytes=j.pg)(),f._crypto_sign_messagebytes_max=()=>(f._crypto_sign_messagebytes_max=j.qg)(),f._crypto_sign_primitive=()=>(f._crypto_sign_primitive=j.rg)(),f._crypto_sign_seed_keypair=(L,X,eA)=>(f._crypto_sign_seed_keypair=j.sg)(L,X,eA),f._crypto_sign_keypair=(L,X)=>(f._crypto_sign_keypair=j.tg)(L,X),f._crypto_sign=(L,X,eA,E,bA,UA)=>(f._crypto_sign=j.ug)(L,X,eA,E,bA,UA),f._crypto_sign_open=(L,X,eA,E,bA,UA)=>(f._crypto_sign_open=j.vg)(L,X,eA,E,bA,UA),f._crypto_sign_detached=(L,X,eA,E,bA,UA)=>(f._crypto_sign_detached=j.wg)(L,X,eA,E,bA,UA),f._crypto_sign_verify_detached=(L,X,eA,E,bA)=>(f._crypto_sign_verify_detached=j.xg)(L,X,eA,E,bA),f._crypto_sign_init=L=>(f._crypto_sign_init=j.yg)(L),f._crypto_sign_update=(L,X,eA,E)=>(f._crypto_sign_update=j.zg)(L,X,eA,E),f._crypto_sign_final_create=(L,X,eA,E)=>(f._crypto_sign_final_create=j.Ag)(L,X,eA,E),f._crypto_sign_final_verify=(L,X,eA)=>(f._crypto_sign_final_verify=j.Bg)(L,X,eA),f._crypto_sign_ed25519ph_statebytes=()=>(f._crypto_sign_ed25519ph_statebytes=j.Cg)(),f._crypto_sign_ed25519_bytes=()=>(f._crypto_sign_ed25519_bytes=j.Dg)(),f._crypto_sign_ed25519_seedbytes=()=>(f._crypto_sign_ed25519_seedbytes=j.Eg)(),f._crypto_sign_ed25519_publickeybytes=()=>(f._crypto_sign_ed25519_publickeybytes=j.Fg)(),f._crypto_sign_ed25519_secretkeybytes=()=>(f._crypto_sign_ed25519_secretkeybytes=j.Gg)(),f._crypto_sign_ed25519_messagebytes_max=()=>(f._crypto_sign_ed25519_messagebytes_max=j.Hg)(),f._crypto_sign_ed25519_sk_to_seed=(L,X)=>(f._crypto_sign_ed25519_sk_to_seed=j.Ig)(L,X),f._crypto_sign_ed25519_sk_to_pk=(L,X)=>(f._crypto_sign_ed25519_sk_to_pk=j.Jg)(L,X),f._crypto_sign_ed25519ph_init=L=>(f._crypto_sign_ed25519ph_init=j.Kg)(L),f._crypto_sign_ed25519ph_update=(L,X,eA,E)=>(f._crypto_sign_ed25519ph_update=j.Lg)(L,X,eA,E),f._crypto_sign_ed25519ph_final_create=(L,X,eA,E)=>(f._crypto_sign_ed25519ph_final_create=j.Mg)(L,X,eA,E),f._crypto_sign_ed25519ph_final_verify=(L,X,eA)=>(f._crypto_sign_ed25519ph_final_verify=j.Ng)(L,X,eA),f._crypto_sign_ed25519_seed_keypair=(L,X,eA)=>(f._crypto_sign_ed25519_seed_keypair=j.Og)(L,X,eA),f._crypto_sign_ed25519_keypair=(L,X)=>(f._crypto_sign_ed25519_keypair=j.Pg)(L,X),f._crypto_sign_ed25519_pk_to_curve25519=(L,X)=>(f._crypto_sign_ed25519_pk_to_curve25519=j.Qg)(L,X),f._crypto_sign_ed25519_sk_to_curve25519=(L,X)=>(f._crypto_sign_ed25519_sk_to_curve25519=j.Rg)(L,X),f._crypto_sign_ed25519_verify_detached=(L,X,eA,E,bA)=>(f._crypto_sign_ed25519_verify_detached=j.Sg)(L,X,eA,E,bA),f._crypto_sign_ed25519_open=(L,X,eA,E,bA,UA)=>(f._crypto_sign_ed25519_open=j.Tg)(L,X,eA,E,bA,UA),f._crypto_sign_ed25519_detached=(L,X,eA,E,bA,UA)=>(f._crypto_sign_ed25519_detached=j.Ug)(L,X,eA,E,bA,UA),f._crypto_sign_ed25519=(L,X,eA,E,bA,UA)=>(f._crypto_sign_ed25519=j.Vg)(L,X,eA,E,bA,UA),f._crypto_stream_chacha20_keybytes=()=>(f._crypto_stream_chacha20_keybytes=j.Wg)(),f._crypto_stream_chacha20_noncebytes=()=>(f._crypto_stream_chacha20_noncebytes=j.Xg)(),f._crypto_stream_chacha20_messagebytes_max=()=>(f._crypto_stream_chacha20_messagebytes_max=j.Yg)(),f._crypto_stream_chacha20_ietf_keybytes=()=>(f._crypto_stream_chacha20_ietf_keybytes=j.Zg)(),f._crypto_stream_chacha20_ietf_noncebytes=()=>(f._crypto_stream_chacha20_ietf_noncebytes=j._g)(),f._crypto_stream_chacha20_ietf_messagebytes_max=()=>(f._crypto_stream_chacha20_ietf_messagebytes_max=j.$g)(),f._crypto_stream_chacha20=(L,X,eA,E,bA)=>(f._crypto_stream_chacha20=j.ah)(L,X,eA,E,bA),f._crypto_stream_chacha20_xor_ic=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_stream_chacha20_xor_ic=j.bh)(L,X,eA,E,bA,UA,r0,S0),f._crypto_stream_chacha20_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_chacha20_xor=j.ch)(L,X,eA,E,bA,UA),f._crypto_stream_chacha20_ietf=(L,X,eA,E,bA)=>(f._crypto_stream_chacha20_ietf=j.dh)(L,X,eA,E,bA),f._crypto_stream_chacha20_ietf_xor_ic=(L,X,eA,E,bA,UA,r0)=>(f._crypto_stream_chacha20_ietf_xor_ic=j.eh)(L,X,eA,E,bA,UA,r0),f._crypto_stream_chacha20_ietf_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_chacha20_ietf_xor=j.fh)(L,X,eA,E,bA,UA),f._crypto_stream_chacha20_ietf_keygen=L=>(f._crypto_stream_chacha20_ietf_keygen=j.gh)(L),f._crypto_stream_chacha20_keygen=L=>(f._crypto_stream_chacha20_keygen=j.hh)(L),f._crypto_stream_keybytes=()=>(f._crypto_stream_keybytes=j.ih)(),f._crypto_stream_noncebytes=()=>(f._crypto_stream_noncebytes=j.jh)(),f._crypto_stream_messagebytes_max=()=>(f._crypto_stream_messagebytes_max=j.kh)(),f._crypto_stream_primitive=()=>(f._crypto_stream_primitive=j.lh)(),f._crypto_stream=(L,X,eA,E,bA)=>(f._crypto_stream=j.mh)(L,X,eA,E,bA),f._crypto_stream_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_xor=j.nh)(L,X,eA,E,bA,UA),f._crypto_stream_keygen=L=>(f._crypto_stream_keygen=j.oh)(L),f._crypto_stream_salsa20_keybytes=()=>(f._crypto_stream_salsa20_keybytes=j.ph)(),f._crypto_stream_salsa20_noncebytes=()=>(f._crypto_stream_salsa20_noncebytes=j.qh)(),f._crypto_stream_salsa20_messagebytes_max=()=>(f._crypto_stream_salsa20_messagebytes_max=j.rh)(),f._crypto_stream_salsa20=(L,X,eA,E,bA)=>(f._crypto_stream_salsa20=j.sh)(L,X,eA,E,bA),f._crypto_stream_salsa20_xor_ic=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_stream_salsa20_xor_ic=j.th)(L,X,eA,E,bA,UA,r0,S0),f._crypto_stream_salsa20_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_salsa20_xor=j.uh)(L,X,eA,E,bA,UA),f._crypto_stream_salsa20_keygen=L=>(f._crypto_stream_salsa20_keygen=j.vh)(L),f._crypto_stream_xsalsa20=(L,X,eA,E,bA)=>(f._crypto_stream_xsalsa20=j.wh)(L,X,eA,E,bA),f._crypto_stream_xsalsa20_xor_ic=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_stream_xsalsa20_xor_ic=j.xh)(L,X,eA,E,bA,UA,r0,S0),f._crypto_stream_xsalsa20_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_xsalsa20_xor=j.yh)(L,X,eA,E,bA,UA),f._crypto_stream_xsalsa20_keybytes=()=>(f._crypto_stream_xsalsa20_keybytes=j.zh)(),f._crypto_stream_xsalsa20_noncebytes=()=>(f._crypto_stream_xsalsa20_noncebytes=j.Ah)(),f._crypto_stream_xsalsa20_messagebytes_max=()=>(f._crypto_stream_xsalsa20_messagebytes_max=j.Bh)(),f._crypto_stream_xsalsa20_keygen=L=>(f._crypto_stream_xsalsa20_keygen=j.Ch)(L),f._crypto_verify_16_bytes=()=>(f._crypto_verify_16_bytes=j.Dh)(),f._crypto_verify_32_bytes=()=>(f._crypto_verify_32_bytes=j.Eh)(),f._crypto_verify_64_bytes=()=>(f._crypto_verify_64_bytes=j.Fh)(),f._crypto_verify_16=(L,X)=>(f._crypto_verify_16=j.Gh)(L,X),f._crypto_verify_32=(L,X)=>(f._crypto_verify_32=j.Hh)(L,X),f._crypto_verify_64=(L,X)=>(f._crypto_verify_64=j.Ih)(L,X),f._randombytes_implementation_name=()=>(f._randombytes_implementation_name=j.Jh)(),f._randombytes_random=()=>(f._randombytes_random=j.Kh)(),f._randombytes_stir=()=>(f._randombytes_stir=j.Lh)(),f._randombytes_uniform=L=>(f._randombytes_uniform=j.Mh)(L),f._randombytes_buf=(L,X)=>(f._randombytes_buf=j.Nh)(L,X),f._randombytes_buf_deterministic=(L,X,eA)=>(f._randombytes_buf_deterministic=j.Oh)(L,X,eA),f._randombytes_seedbytes=()=>(f._randombytes_seedbytes=j.Ph)(),f._randombytes_close=()=>(f._randombytes_close=j.Qh)(),f._randombytes=(L,X,eA)=>(f._randombytes=j.Rh)(L,X,eA),f._sodium_bin2hex=(L,X,eA,E)=>(f._sodium_bin2hex=j.Sh)(L,X,eA,E),f._sodium_hex2bin=(L,X,eA,E,bA,UA,r0)=>(f._sodium_hex2bin=j.Th)(L,X,eA,E,bA,UA,r0),f._sodium_base64_encoded_len=(L,X)=>(f._sodium_base64_encoded_len=j.Uh)(L,X),f._sodium_bin2base64=(L,X,eA,E,bA)=>(f._sodium_bin2base64=j.Vh)(L,X,eA,E,bA),f._sodium_base642bin=(L,X,eA,E,bA,UA,r0,S0)=>(f._sodium_base642bin=j.Wh)(L,X,eA,E,bA,UA,r0,S0),f._sodium_init=()=>(f._sodium_init=j.Xh)(),f._sodium_pad=(L,X,eA,E,bA)=>(f._sodium_pad=j.Yh)(L,X,eA,E,bA),f._sodium_unpad=(L,X,eA,E)=>(f._sodium_unpad=j.Zh)(L,X,eA,E),f._sodium_version_string=()=>(f._sodium_version_string=j._h)(),f._sodium_library_version_major=()=>(f._sodium_library_version_major=j.$h)(),f._sodium_library_version_minor=()=>(f._sodium_library_version_minor=j.ai)(),f._sodium_library_minimal=()=>(f._sodium_library_minimal=j.bi)(),f._crypto_box_curve25519xchacha20poly1305_seed_keypair=(L,X,eA)=>(f._crypto_box_curve25519xchacha20poly1305_seed_keypair=j.ci)(L,X,eA),f._crypto_box_curve25519xchacha20poly1305_keypair=(L,X)=>(f._crypto_box_curve25519xchacha20poly1305_keypair=j.di)(L,X),f._crypto_box_curve25519xchacha20poly1305_beforenm=(L,X,eA)=>(f._crypto_box_curve25519xchacha20poly1305_beforenm=j.ei)(L,X,eA),f._crypto_box_curve25519xchacha20poly1305_detached_afternm=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xchacha20poly1305_detached_afternm=j.fi)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xchacha20poly1305_detached=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_box_curve25519xchacha20poly1305_detached=j.gi)(L,X,eA,E,bA,UA,r0,S0),f._crypto_box_curve25519xchacha20poly1305_easy_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_curve25519xchacha20poly1305_easy_afternm=j.hi)(L,X,eA,E,bA,UA),f._crypto_box_curve25519xchacha20poly1305_easy=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xchacha20poly1305_easy=j.ii)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=j.ji)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xchacha20poly1305_open_detached=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_box_curve25519xchacha20poly1305_open_detached=j.ki)(L,X,eA,E,bA,UA,r0,S0),f._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=j.li)(L,X,eA,E,bA,UA),f._crypto_box_curve25519xchacha20poly1305_open_easy=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xchacha20poly1305_open_easy=j.mi)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xchacha20poly1305_seedbytes=()=>(f._crypto_box_curve25519xchacha20poly1305_seedbytes=j.ni)(),f._crypto_box_curve25519xchacha20poly1305_publickeybytes=()=>(f._crypto_box_curve25519xchacha20poly1305_publickeybytes=j.oi)(),f._crypto_box_curve25519xchacha20poly1305_secretkeybytes=()=>(f._crypto_box_curve25519xchacha20poly1305_secretkeybytes=j.pi)(),f._crypto_box_curve25519xchacha20poly1305_beforenmbytes=()=>(f._crypto_box_curve25519xchacha20poly1305_beforenmbytes=j.qi)(),f._crypto_box_curve25519xchacha20poly1305_noncebytes=()=>(f._crypto_box_curve25519xchacha20poly1305_noncebytes=j.ri)(),f._crypto_box_curve25519xchacha20poly1305_macbytes=()=>(f._crypto_box_curve25519xchacha20poly1305_macbytes=j.si)(),f._crypto_box_curve25519xchacha20poly1305_messagebytes_max=()=>(f._crypto_box_curve25519xchacha20poly1305_messagebytes_max=j.ti)(),f._crypto_box_curve25519xchacha20poly1305_seal=(L,X,eA,E,bA)=>(f._crypto_box_curve25519xchacha20poly1305_seal=j.ui)(L,X,eA,E,bA),f._crypto_box_curve25519xchacha20poly1305_seal_open=(L,X,eA,E,bA,UA)=>(f._crypto_box_curve25519xchacha20poly1305_seal_open=j.vi)(L,X,eA,E,bA,UA),f._crypto_box_curve25519xchacha20poly1305_sealbytes=()=>(f._crypto_box_curve25519xchacha20poly1305_sealbytes=j.wi)(),f._crypto_core_ed25519_is_valid_point=L=>(f._crypto_core_ed25519_is_valid_point=j.xi)(L),f._crypto_core_ed25519_add=(L,X,eA)=>(f._crypto_core_ed25519_add=j.yi)(L,X,eA),f._crypto_core_ed25519_sub=(L,X,eA)=>(f._crypto_core_ed25519_sub=j.zi)(L,X,eA),f._crypto_core_ed25519_from_uniform=(L,X)=>(f._crypto_core_ed25519_from_uniform=j.Ai)(L,X),f._crypto_core_ed25519_random=L=>(f._crypto_core_ed25519_random=j.Bi)(L),f._crypto_core_ed25519_scalar_random=L=>(f._crypto_core_ed25519_scalar_random=j.Ci)(L),f._crypto_core_ed25519_scalar_invert=(L,X)=>(f._crypto_core_ed25519_scalar_invert=j.Di)(L,X),f._crypto_core_ed25519_scalar_negate=(L,X)=>(f._crypto_core_ed25519_scalar_negate=j.Ei)(L,X),f._crypto_core_ed25519_scalar_complement=(L,X)=>(f._crypto_core_ed25519_scalar_complement=j.Fi)(L,X),f._crypto_core_ed25519_scalar_add=(L,X,eA)=>(f._crypto_core_ed25519_scalar_add=j.Gi)(L,X,eA),f._crypto_core_ed25519_scalar_reduce=(L,X)=>(f._crypto_core_ed25519_scalar_reduce=j.Hi)(L,X),f._crypto_core_ed25519_scalar_sub=(L,X,eA)=>(f._crypto_core_ed25519_scalar_sub=j.Ii)(L,X,eA),f._crypto_core_ed25519_scalar_mul=(L,X,eA)=>(f._crypto_core_ed25519_scalar_mul=j.Ji)(L,X,eA),f._crypto_core_ed25519_bytes=()=>(f._crypto_core_ed25519_bytes=j.Ki)(),f._crypto_core_ed25519_nonreducedscalarbytes=()=>(f._crypto_core_ed25519_nonreducedscalarbytes=j.Li)(),f._crypto_core_ed25519_uniformbytes=()=>(f._crypto_core_ed25519_uniformbytes=j.Mi)(),f._crypto_core_ed25519_hashbytes=()=>(f._crypto_core_ed25519_hashbytes=j.Ni)(),f._crypto_core_ed25519_scalarbytes=()=>(f._crypto_core_ed25519_scalarbytes=j.Oi)(),f._crypto_core_ristretto255_is_valid_point=L=>(f._crypto_core_ristretto255_is_valid_point=j.Pi)(L),f._crypto_core_ristretto255_add=(L,X,eA)=>(f._crypto_core_ristretto255_add=j.Qi)(L,X,eA),f._crypto_core_ristretto255_sub=(L,X,eA)=>(f._crypto_core_ristretto255_sub=j.Ri)(L,X,eA),f._crypto_core_ristretto255_from_hash=(L,X)=>(f._crypto_core_ristretto255_from_hash=j.Si)(L,X),f._crypto_core_ristretto255_random=L=>(f._crypto_core_ristretto255_random=j.Ti)(L),f._crypto_core_ristretto255_scalar_random=L=>(f._crypto_core_ristretto255_scalar_random=j.Ui)(L),f._crypto_core_ristretto255_scalar_invert=(L,X)=>(f._crypto_core_ristretto255_scalar_invert=j.Vi)(L,X),f._crypto_core_ristretto255_scalar_negate=(L,X)=>(f._crypto_core_ristretto255_scalar_negate=j.Wi)(L,X),f._crypto_core_ristretto255_scalar_complement=(L,X)=>(f._crypto_core_ristretto255_scalar_complement=j.Xi)(L,X),f._crypto_core_ristretto255_scalar_add=(L,X,eA)=>(f._crypto_core_ristretto255_scalar_add=j.Yi)(L,X,eA),f._crypto_core_ristretto255_scalar_sub=(L,X,eA)=>(f._crypto_core_ristretto255_scalar_sub=j.Zi)(L,X,eA),f._crypto_core_ristretto255_scalar_mul=(L,X,eA)=>(f._crypto_core_ristretto255_scalar_mul=j._i)(L,X,eA),f._crypto_core_ristretto255_scalar_reduce=(L,X)=>(f._crypto_core_ristretto255_scalar_reduce=j.$i)(L,X),f._crypto_core_ristretto255_bytes=()=>(f._crypto_core_ristretto255_bytes=j.aj)(),f._crypto_core_ristretto255_nonreducedscalarbytes=()=>(f._crypto_core_ristretto255_nonreducedscalarbytes=j.bj)(),f._crypto_core_ristretto255_hashbytes=()=>(f._crypto_core_ristretto255_hashbytes=j.cj)(),f._crypto_core_ristretto255_scalarbytes=()=>(f._crypto_core_ristretto255_scalarbytes=j.dj)(),f._crypto_pwhash_scryptsalsa208sha256_ll=(L,X,eA,E,bA,UA,r0,S0,v0,q0)=>(f._crypto_pwhash_scryptsalsa208sha256_ll=j.ej)(L,X,eA,E,bA,UA,r0,S0,v0,q0),f._crypto_pwhash_scryptsalsa208sha256_bytes_min=()=>(f._crypto_pwhash_scryptsalsa208sha256_bytes_min=j.fj)(),f._crypto_pwhash_scryptsalsa208sha256_bytes_max=()=>(f._crypto_pwhash_scryptsalsa208sha256_bytes_max=j.gj)(),f._crypto_pwhash_scryptsalsa208sha256_passwd_min=()=>(f._crypto_pwhash_scryptsalsa208sha256_passwd_min=j.hj)(),f._crypto_pwhash_scryptsalsa208sha256_passwd_max=()=>(f._crypto_pwhash_scryptsalsa208sha256_passwd_max=j.ij)(),f._crypto_pwhash_scryptsalsa208sha256_saltbytes=()=>(f._crypto_pwhash_scryptsalsa208sha256_saltbytes=j.jj)(),f._crypto_pwhash_scryptsalsa208sha256_strbytes=()=>(f._crypto_pwhash_scryptsalsa208sha256_strbytes=j.kj)(),f._crypto_pwhash_scryptsalsa208sha256_strprefix=()=>(f._crypto_pwhash_scryptsalsa208sha256_strprefix=j.lj)(),f._crypto_pwhash_scryptsalsa208sha256_opslimit_min=()=>(f._crypto_pwhash_scryptsalsa208sha256_opslimit_min=j.mj)(),f._crypto_pwhash_scryptsalsa208sha256_opslimit_max=()=>(f._crypto_pwhash_scryptsalsa208sha256_opslimit_max=j.nj)(),f._crypto_pwhash_scryptsalsa208sha256_memlimit_min=()=>(f._crypto_pwhash_scryptsalsa208sha256_memlimit_min=j.oj)(),f._crypto_pwhash_scryptsalsa208sha256_memlimit_max=()=>(f._crypto_pwhash_scryptsalsa208sha256_memlimit_max=j.pj)(),f._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=()=>(f._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=j.qj)(),f._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=()=>(f._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=j.rj)(),f._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=()=>(f._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=j.sj)(),f._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=()=>(f._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=j.tj)(),f._crypto_pwhash_scryptsalsa208sha256=(L,X,eA,E,bA,UA,r0,S0,v0,q0)=>(f._crypto_pwhash_scryptsalsa208sha256=j.uj)(L,X,eA,E,bA,UA,r0,S0,v0,q0),f._crypto_pwhash_scryptsalsa208sha256_str=(L,X,eA,E,bA,UA,r0)=>(f._crypto_pwhash_scryptsalsa208sha256_str=j.vj)(L,X,eA,E,bA,UA,r0),f._crypto_pwhash_scryptsalsa208sha256_str_verify=(L,X,eA,E)=>(f._crypto_pwhash_scryptsalsa208sha256_str_verify=j.wj)(L,X,eA,E),f._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=(L,X,eA,E)=>(f._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=j.xj)(L,X,eA,E),f._crypto_scalarmult_ed25519=(L,X,eA)=>(f._crypto_scalarmult_ed25519=j.yj)(L,X,eA),f._crypto_scalarmult_ed25519_noclamp=(L,X,eA)=>(f._crypto_scalarmult_ed25519_noclamp=j.zj)(L,X,eA),f._crypto_scalarmult_ed25519_base=(L,X)=>(f._crypto_scalarmult_ed25519_base=j.Aj)(L,X),f._crypto_scalarmult_ed25519_base_noclamp=(L,X)=>(f._crypto_scalarmult_ed25519_base_noclamp=j.Bj)(L,X),f._crypto_scalarmult_ed25519_bytes=()=>(f._crypto_scalarmult_ed25519_bytes=j.Cj)(),f._crypto_scalarmult_ed25519_scalarbytes=()=>(f._crypto_scalarmult_ed25519_scalarbytes=j.Dj)(),f._crypto_scalarmult_ristretto255=(L,X,eA)=>(f._crypto_scalarmult_ristretto255=j.Ej)(L,X,eA),f._crypto_scalarmult_ristretto255_base=(L,X)=>(f._crypto_scalarmult_ristretto255_base=j.Fj)(L,X),f._crypto_scalarmult_ristretto255_bytes=()=>(f._crypto_scalarmult_ristretto255_bytes=j.Gj)(),f._crypto_scalarmult_ristretto255_scalarbytes=()=>(f._crypto_scalarmult_ristretto255_scalarbytes=j.Hj)(),f._crypto_secretbox_xchacha20poly1305_detached=(L,X,eA,E,bA,UA,r0)=>(f._crypto_secretbox_xchacha20poly1305_detached=j.Ij)(L,X,eA,E,bA,UA,r0),f._crypto_secretbox_xchacha20poly1305_easy=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_xchacha20poly1305_easy=j.Jj)(L,X,eA,E,bA,UA),f._crypto_secretbox_xchacha20poly1305_open_detached=(L,X,eA,E,bA,UA,r0)=>(f._crypto_secretbox_xchacha20poly1305_open_detached=j.Kj)(L,X,eA,E,bA,UA,r0),f._crypto_secretbox_xchacha20poly1305_open_easy=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_xchacha20poly1305_open_easy=j.Lj)(L,X,eA,E,bA,UA),f._crypto_secretbox_xchacha20poly1305_keybytes=()=>(f._crypto_secretbox_xchacha20poly1305_keybytes=j.Mj)(),f._crypto_secretbox_xchacha20poly1305_noncebytes=()=>(f._crypto_secretbox_xchacha20poly1305_noncebytes=j.Nj)(),f._crypto_secretbox_xchacha20poly1305_macbytes=()=>(f._crypto_secretbox_xchacha20poly1305_macbytes=j.Oj)(),f._crypto_secretbox_xchacha20poly1305_messagebytes_max=()=>(f._crypto_secretbox_xchacha20poly1305_messagebytes_max=j.Pj)(),f._crypto_shorthash_siphashx24_bytes=()=>(f._crypto_shorthash_siphashx24_bytes=j.Qj)(),f._crypto_shorthash_siphashx24_keybytes=()=>(f._crypto_shorthash_siphashx24_keybytes=j.Rj)(),f._crypto_shorthash_siphashx24=(L,X,eA,E,bA)=>(f._crypto_shorthash_siphashx24=j.Sj)(L,X,eA,E,bA),f._crypto_stream_salsa2012=(L,X,eA,E,bA)=>(f._crypto_stream_salsa2012=j.Tj)(L,X,eA,E,bA),f._crypto_stream_salsa2012_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_salsa2012_xor=j.Uj)(L,X,eA,E,bA,UA),f._crypto_stream_salsa2012_keybytes=()=>(f._crypto_stream_salsa2012_keybytes=j.Vj)(),f._crypto_stream_salsa2012_noncebytes=()=>(f._crypto_stream_salsa2012_noncebytes=j.Wj)(),f._crypto_stream_salsa2012_messagebytes_max=()=>(f._crypto_stream_salsa2012_messagebytes_max=j.Xj)(),f._crypto_stream_salsa2012_keygen=L=>(f._crypto_stream_salsa2012_keygen=j.Yj)(L),f._crypto_stream_salsa208=(L,X,eA,E,bA)=>(f._crypto_stream_salsa208=j.Zj)(L,X,eA,E,bA),f._crypto_stream_salsa208_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_salsa208_xor=j._j)(L,X,eA,E,bA,UA),f._crypto_stream_salsa208_keybytes=()=>(f._crypto_stream_salsa208_keybytes=j.$j)(),f._crypto_stream_salsa208_noncebytes=()=>(f._crypto_stream_salsa208_noncebytes=j.ak)(),f._crypto_stream_salsa208_messagebytes_max=()=>(f._crypto_stream_salsa208_messagebytes_max=j.bk)(),f._crypto_stream_salsa208_keygen=L=>(f._crypto_stream_salsa208_keygen=j.ck)(L),f._crypto_stream_xchacha20_keybytes=()=>(f._crypto_stream_xchacha20_keybytes=j.dk)(),f._crypto_stream_xchacha20_noncebytes=()=>(f._crypto_stream_xchacha20_noncebytes=j.ek)(),f._crypto_stream_xchacha20_messagebytes_max=()=>(f._crypto_stream_xchacha20_messagebytes_max=j.fk)(),f._crypto_stream_xchacha20=(L,X,eA,E,bA)=>(f._crypto_stream_xchacha20=j.gk)(L,X,eA,E,bA),f._crypto_stream_xchacha20_xor_ic=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_stream_xchacha20_xor_ic=j.hk)(L,X,eA,E,bA,UA,r0,S0),f._crypto_stream_xchacha20_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_xchacha20_xor=j.ik)(L,X,eA,E,bA,UA),f._crypto_stream_xchacha20_keygen=L=>(f._crypto_stream_xchacha20_keygen=j.jk)(L),f._malloc=L=>(f._malloc=j.kk)(L),f._free=L=>(f._free=j.lk)(L),f.setValue=function(L,X,eA="i8"){switch(eA.endsWith("*")&&(eA="*"),eA){case"i1":case"i8":e0[L]=X;break;case"i16":z0[L>>1]=X;break;case"i32":yA[L>>2]=X;break;case"i64":t2("to do setValue(i64) use WASM_BIGINT");case"float":W1[L>>2]=X;break;case"double":Z1[L>>3]=X;break;case"*":x1[L>>2]=X;break;default:t2(`invalid type for setValue: ${eA}`)}},f.getValue=function(L,X="i8"){switch(X.endsWith("*")&&(X="*"),X){case"i1":case"i8":return e0[L];case"i16":return z0[L>>1];case"i32":return yA[L>>2];case"i64":t2("to do getValue(i64) use WASM_BIGINT");case"float":return W1[L>>2];case"double":return Z1[L>>3];case"*":return x1[L>>2];default:t2(`invalid type for getValue: ${X}`)}},f.UTF8ToString=dg,I2=function L(){ug||JC(),ug||(I2=L)},f.preInit)for(typeof f.preInit=="function"&&(f.preInit=[f.preInit]);f.preInit.length>0;)f.preInit.pop()();JC()}).catch(function(){return A2.useBackupModule()}),B0}typeof CA.nodeName!="string"?KA(CA):DA.libsodium=KA(DA.libsodium_mod||(DA.commonJsStrict={}))})(gt)}(Ze,Ze.exports)),Ze.exports}(function(oA){(function(CA){function DA(GA,B0){var U,A2="uint8array",f2=B0.ready.then(function(){function S(){if(U._sodium_init()!==0)throw new Error("libsodium was not correctly initialized.");for(var Y=["crypto_aead_aegis128l_decrypt","crypto_aead_aegis128l_decrypt_detached","crypto_aead_aegis128l_encrypt","crypto_aead_aegis128l_encrypt_detached","crypto_aead_aegis128l_keygen","crypto_aead_aegis256_decrypt","crypto_aead_aegis256_decrypt_detached","crypto_aead_aegis256_encrypt","crypto_aead_aegis256_encrypt_detached","crypto_aead_aegis256_keygen","crypto_aead_chacha20poly1305_decrypt","crypto_aead_chacha20poly1305_decrypt_detached","crypto_aead_chacha20poly1305_encrypt","crypto_aead_chacha20poly1305_encrypt_detached","crypto_aead_chacha20poly1305_ietf_decrypt","crypto_aead_chacha20poly1305_ietf_decrypt_detached","crypto_aead_chacha20poly1305_ietf_encrypt","crypto_aead_chacha20poly1305_ietf_encrypt_detached","crypto_aead_chacha20poly1305_ietf_keygen","crypto_aead_chacha20poly1305_keygen","crypto_aead_xchacha20poly1305_ietf_decrypt","crypto_aead_xchacha20poly1305_ietf_decrypt_detached","crypto_aead_xchacha20poly1305_ietf_encrypt","crypto_aead_xchacha20poly1305_ietf_encrypt_detached","crypto_aead_xchacha20poly1305_ietf_keygen","crypto_auth","crypto_auth_hmacsha256","crypto_auth_hmacsha256_final","crypto_auth_hmacsha256_init","crypto_auth_hmacsha256_keygen","crypto_auth_hmacsha256_update","crypto_auth_hmacsha256_verify","crypto_auth_hmacsha512","crypto_auth_hmacsha512256","crypto_auth_hmacsha512256_final","crypto_auth_hmacsha512256_init","crypto_auth_hmacsha512256_keygen","crypto_auth_hmacsha512256_update","crypto_auth_hmacsha512256_verify","crypto_auth_hmacsha512_final","crypto_auth_hmacsha512_init","crypto_auth_hmacsha512_keygen","crypto_auth_hmacsha512_update","crypto_auth_hmacsha512_verify","crypto_auth_keygen","crypto_auth_verify","crypto_box_beforenm","crypto_box_curve25519xchacha20poly1305_beforenm","crypto_box_curve25519xchacha20poly1305_detached","crypto_box_curve25519xchacha20poly1305_detached_afternm","crypto_box_curve25519xchacha20poly1305_easy","crypto_box_curve25519xchacha20poly1305_easy_afternm","crypto_box_curve25519xchacha20poly1305_keypair","crypto_box_curve25519xchacha20poly1305_open_detached","crypto_box_curve25519xchacha20poly1305_open_detached_afternm","crypto_box_curve25519xchacha20poly1305_open_easy","crypto_box_curve25519xchacha20poly1305_open_easy_afternm","crypto_box_curve25519xchacha20poly1305_seal","crypto_box_curve25519xchacha20poly1305_seal_open","crypto_box_curve25519xchacha20poly1305_seed_keypair","crypto_box_detached","crypto_box_easy","crypto_box_easy_afternm","crypto_box_keypair","crypto_box_open_detached","crypto_box_open_easy","crypto_box_open_easy_afternm","crypto_box_seal","crypto_box_seal_open","crypto_box_seed_keypair","crypto_core_ed25519_add","crypto_core_ed25519_from_hash","crypto_core_ed25519_from_uniform","crypto_core_ed25519_is_valid_point","crypto_core_ed25519_random","crypto_core_ed25519_scalar_add","crypto_core_ed25519_scalar_complement","crypto_core_ed25519_scalar_invert","crypto_core_ed25519_scalar_mul","crypto_core_ed25519_scalar_negate","crypto_core_ed25519_scalar_random","crypto_core_ed25519_scalar_reduce","crypto_core_ed25519_scalar_sub","crypto_core_ed25519_sub","crypto_core_hchacha20","crypto_core_hsalsa20","crypto_core_ristretto255_add","crypto_core_ristretto255_from_hash","crypto_core_ristretto255_is_valid_point","crypto_core_ristretto255_random","crypto_core_ristretto255_scalar_add","crypto_core_ristretto255_scalar_complement","crypto_core_ristretto255_scalar_invert","crypto_core_ristretto255_scalar_mul","crypto_core_ristretto255_scalar_negate","crypto_core_ristretto255_scalar_random","crypto_core_ristretto255_scalar_reduce","crypto_core_ristretto255_scalar_sub","crypto_core_ristretto255_sub","crypto_generichash","crypto_generichash_blake2b_salt_personal","crypto_generichash_final","crypto_generichash_init","crypto_generichash_keygen","crypto_generichash_update","crypto_hash","crypto_hash_sha256","crypto_hash_sha256_final","crypto_hash_sha256_init","crypto_hash_sha256_update","crypto_hash_sha512","crypto_hash_sha512_final","crypto_hash_sha512_init","crypto_hash_sha512_update","crypto_kdf_derive_from_key","crypto_kdf_keygen","crypto_kx_client_session_keys","crypto_kx_keypair","crypto_kx_seed_keypair","crypto_kx_server_session_keys","crypto_onetimeauth","crypto_onetimeauth_final","crypto_onetimeauth_init","crypto_onetimeauth_keygen","crypto_onetimeauth_update","crypto_onetimeauth_verify","crypto_pwhash","crypto_pwhash_scryptsalsa208sha256","crypto_pwhash_scryptsalsa208sha256_ll","crypto_pwhash_scryptsalsa208sha256_str","crypto_pwhash_scryptsalsa208sha256_str_verify","crypto_pwhash_str","crypto_pwhash_str_needs_rehash","crypto_pwhash_str_verify","crypto_scalarmult","crypto_scalarmult_base","crypto_scalarmult_ed25519","crypto_scalarmult_ed25519_base","crypto_scalarmult_ed25519_base_noclamp","crypto_scalarmult_ed25519_noclamp","crypto_scalarmult_ristretto255","crypto_scalarmult_ristretto255_base","crypto_secretbox_detached","crypto_secretbox_easy","crypto_secretbox_keygen","crypto_secretbox_open_detached","crypto_secretbox_open_easy","crypto_secretstream_xchacha20poly1305_init_pull","crypto_secretstream_xchacha20poly1305_init_push","crypto_secretstream_xchacha20poly1305_keygen","crypto_secretstream_xchacha20poly1305_pull","crypto_secretstream_xchacha20poly1305_push","crypto_secretstream_xchacha20poly1305_rekey","crypto_shorthash","crypto_shorthash_keygen","crypto_shorthash_siphashx24","crypto_sign","crypto_sign_detached","crypto_sign_ed25519_pk_to_curve25519","crypto_sign_ed25519_sk_to_curve25519","crypto_sign_ed25519_sk_to_pk","crypto_sign_ed25519_sk_to_seed","crypto_sign_final_create","crypto_sign_final_verify","crypto_sign_init","crypto_sign_keypair","crypto_sign_open","crypto_sign_seed_keypair","crypto_sign_update","crypto_sign_verify_detached","crypto_stream_chacha20","crypto_stream_chacha20_ietf_xor","crypto_stream_chacha20_ietf_xor_ic","crypto_stream_chacha20_keygen","crypto_stream_chacha20_xor","crypto_stream_chacha20_xor_ic","crypto_stream_keygen","crypto_stream_xchacha20_keygen","crypto_stream_xchacha20_xor","crypto_stream_xchacha20_xor_ic","randombytes_buf","randombytes_buf_deterministic","randombytes_close","randombytes_random","randombytes_set_implementation","randombytes_stir","randombytes_uniform","sodium_version_string"],AA=[x1,W1,Z1,o0,J0,m0,d0,U0,Z0,I2,t2,y2,E2,o1,n1,R1,Zg,ug,HC,dg,$g,ct,It,j,JC,L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2,AC,Sg,bg,gC,vg,CC,Fg,Ng,eC,mg,RC,LC,PC,qC,zC,L1,og,P1,Mg,st,Bt,tC,Gg,TC,Kg,rC,yt,ht,T,jC,R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A,i,O2,M0,A1,q1,_g,xg,Qt,nt,W,$1,Ag,y,cg,aC,ZA,Yg,Ug,d1,iC,OC,XC,r1,oC,kA,VC,WC,Hg,ZC,$C,Ae,ge,Ce,ee,gA,te,re,Jg,Rg,e1,ae,ie,Ig,Lg,oe,_e,ce,_C,Ie,cC,IC,M2,se,Be,ye,gg,sC,he,Qe,Pg,BC,sg,g1,b2,qg,yC,z1,hC,S1,Cg,ne,Ee,x2,b1,QC,T1,P2,y1,nC,pe,fe,v1,De,Y1,EC,we,le,pC,F1,j1,fC,ke,ue,Bg,DC,de,q2,Se,be,ve,D2,a0,Fe,wC,E1,Ne,w2,N1,O1],QA=0;QA=240?(lA=4,AA=!0):NA>=224?(lA=3,AA=!0):NA>=192?(lA=2,AA=!0):NA<128&&(lA=1,AA=!0)}while(!AA);for(var PA=lA-(Y.length-QA),jA=0;jA>8&-39)<<8|87+(N=S[P]>>>4)+(N-10>>8&-39),m+=String.fromCharCode(255&k)+String.fromCharCode(k>>>8);return m}var K2={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function c2(S){if(S==null)return K2.URLSAFE_NO_PADDING;if(S!==K2.ORIGINAL&&S!==K2.ORIGINAL_NO_PADDING&&S!==K2.URLSAFE&&S!=K2.URLSAFE_NO_PADDING)throw new Error("unsupported base64 variant");return S}function u2(S,N){N=c2(N),S=yA(k,S,"input");var F,k=[],m=0|Math.floor(S.length/3),P=S.length-3*m,Y=4*m+(P!==0?2&N?2+(P>>>1):4:0),AA=new RA(Y+1),QA=IA(S);return k.push(QA),k.push(AA.address),U._sodium_bin2base64(AA.address,AA.length,QA,S.length,N)===0&&e0(k,"conversion failed"),AA.length=Y,F=n2(AA.to_Uint8Array()),JA(k),F}function TA(S,N){var F=N||A2;if(!S2(F))throw new Error(F+" output format is not available");if(S instanceof RA){if(F==="uint8array")return S.to_Uint8Array();if(F==="text")return n2(S.to_Uint8Array());if(F==="hex")return f(S.to_Uint8Array());if(F==="base64")return u2(S.to_Uint8Array(),K2.URLSAFE_NO_PADDING);throw new Error('What is output format "'+F+'"?')}if(typeof S=="object"){for(var k=Object.keys(S),m={},P=0;P=BigInt(0)){const l0=N>>BigInt(32);l0>BigInt(4294967295)&&SA(P,"subkey_id cannot be more than 64 bits"),AA=Number(l0),Y=Number(N&BigInt(4294967295))}else typeof N=="number"&&(0|N)===N&&N>=0?Y=N:SA(P,"subkey_id must be an unsigned integer or bigint");typeof F!="string"&&SA(P,"ctx must be a string"),F=l2(F+"\0"),lA!=null&&F.length-1!==lA&&SA(P,"invalid ctx length");var QA=IA(F),lA=F.length-1;P.push(QA),k=yA(P,k,"key");var NA,PA=0|U._crypto_kdf_keybytes();k.length!==PA&&SA(P,"invalid key length"),NA=IA(k),P.push(NA);var jA=new RA(0|S),C0=jA.address;P.push(C0),U._crypto_kdf_derive_from_key(C0,S,Y,AA,QA,NA);var n0=TA(jA,m);return JA(P),n0}function re(S){var N=[];LA(S);var F=new RA(0|U._crypto_kdf_keybytes()),k=F.address;N.push(k),U._crypto_kdf_keygen(k);var m=TA(F,S);return JA(N),m}function Jg(S,N,F,k){var m=[];LA(k),S=yA(m,S,"clientPublicKey");var P,Y=0|U._crypto_kx_publickeybytes();S.length!==Y&&SA(m,"invalid clientPublicKey length"),P=IA(S),m.push(P),N=yA(m,N,"clientSecretKey");var AA,QA=0|U._crypto_kx_secretkeybytes();N.length!==QA&&SA(m,"invalid clientSecretKey length"),AA=IA(N),m.push(AA),F=yA(m,F,"serverPublicKey");var lA,NA=0|U._crypto_kx_publickeybytes();F.length!==NA&&SA(m,"invalid serverPublicKey length"),lA=IA(F),m.push(lA);var PA=new RA(0|U._crypto_kx_sessionkeybytes()),jA=PA.address;m.push(jA);var C0=new RA(0|U._crypto_kx_sessionkeybytes()),n0=C0.address;if(m.push(n0),!(0|U._crypto_kx_client_session_keys(jA,n0,P,AA,lA))){var l0=TA({sharedRx:PA,sharedTx:C0},k);return JA(m),l0}e0(m,"invalid usage")}function Rg(S){var N=[];LA(S);var F=new RA(0|U._crypto_kx_publickeybytes()),k=F.address;N.push(k);var m=new RA(0|U._crypto_kx_secretkeybytes()),P=m.address;if(N.push(P),!(0|U._crypto_kx_keypair(k,P))){var Y={publicKey:TA(F,S),privateKey:TA(m,S),keyType:"x25519"};return JA(N),Y}e0(N,"internal error")}function e1(S,N){var F=[];LA(N),S=yA(F,S,"seed");var k,m=0|U._crypto_kx_seedbytes();S.length!==m&&SA(F,"invalid seed length"),k=IA(S),F.push(k);var P=new RA(0|U._crypto_kx_publickeybytes()),Y=P.address;F.push(Y);var AA=new RA(0|U._crypto_kx_secretkeybytes()),QA=AA.address;if(F.push(QA),!(0|U._crypto_kx_seed_keypair(Y,QA,k))){var lA={publicKey:TA(P,N),privateKey:TA(AA,N),keyType:"x25519"};return JA(F),lA}e0(F,"internal error")}function ae(S,N,F,k){var m=[];LA(k),S=yA(m,S,"serverPublicKey");var P,Y=0|U._crypto_kx_publickeybytes();S.length!==Y&&SA(m,"invalid serverPublicKey length"),P=IA(S),m.push(P),N=yA(m,N,"serverSecretKey");var AA,QA=0|U._crypto_kx_secretkeybytes();N.length!==QA&&SA(m,"invalid serverSecretKey length"),AA=IA(N),m.push(AA),F=yA(m,F,"clientPublicKey");var lA,NA=0|U._crypto_kx_publickeybytes();F.length!==NA&&SA(m,"invalid clientPublicKey length"),lA=IA(F),m.push(lA);var PA=new RA(0|U._crypto_kx_sessionkeybytes()),jA=PA.address;m.push(jA);var C0=new RA(0|U._crypto_kx_sessionkeybytes()),n0=C0.address;if(m.push(n0),!(0|U._crypto_kx_server_session_keys(jA,n0,P,AA,lA))){var l0=TA({sharedRx:PA,sharedTx:C0},k);return JA(m),l0}e0(m,"invalid usage")}function ie(S,N,F){var k=[];LA(F);var m=IA(S=yA(k,S,"message")),P=S.length;k.push(m),N=yA(k,N,"key");var Y,AA=0|U._crypto_onetimeauth_keybytes();N.length!==AA&&SA(k,"invalid key length"),Y=IA(N),k.push(Y);var QA=new RA(0|U._crypto_onetimeauth_bytes()),lA=QA.address;if(k.push(lA),!(0|U._crypto_onetimeauth(lA,m,P,0,Y))){var NA=TA(QA,F);return JA(k),NA}e0(k,"invalid usage")}function Ig(S,N){var F=[];LA(N),z0(F,S,"state_address");var k=new RA(0|U._crypto_onetimeauth_bytes()),m=k.address;if(F.push(m),!(0|U._crypto_onetimeauth_final(S,m))){var P=(U._free(S),TA(k,N));return JA(F),P}e0(F,"invalid usage")}function Lg(S,N){var F=[];LA(N);var k=null;S!=null&&(k=IA(S=yA(F,S,"key")),S.length,F.push(k));var m=new RA(144).address;if(!(0|U._crypto_onetimeauth_init(m,k))){var P=m;return JA(F),P}e0(F,"invalid usage")}function oe(S){var N=[];LA(S);var F=new RA(0|U._crypto_onetimeauth_keybytes()),k=F.address;N.push(k),U._crypto_onetimeauth_keygen(k);var m=TA(F,S);return JA(N),m}function _e(S,N,F){var k=[];LA(F),z0(k,S,"state_address");var m=IA(N=yA(k,N,"message_chunk")),P=N.length;k.push(m),0|U._crypto_onetimeauth_update(S,m,P)&&e0(k,"invalid usage"),JA(k)}function ce(S,N,F){var k=[];S=yA(k,S,"hash");var m,P=0|U._crypto_onetimeauth_bytes();S.length!==P&&SA(k,"invalid hash length"),m=IA(S),k.push(m);var Y=IA(N=yA(k,N,"message")),AA=N.length;k.push(Y),F=yA(k,F,"key");var QA,lA=0|U._crypto_onetimeauth_keybytes();F.length!==lA&&SA(k,"invalid key length"),QA=IA(F),k.push(QA);var NA=!(0|U._crypto_onetimeauth_verify(m,Y,AA,0,QA));return JA(k),NA}function _C(S,N,F,k,m,P,Y){var AA=[];LA(Y),z0(AA,S,"keyLength"),(typeof S!="number"||(0|S)!==S||S<0)&&SA(AA,"keyLength must be an unsigned integer");var QA=IA(N=yA(AA,N,"password")),lA=N.length;AA.push(QA),F=yA(AA,F,"salt");var NA,PA=0|U._crypto_pwhash_saltbytes();F.length!==PA&&SA(AA,"invalid salt length"),NA=IA(F),AA.push(NA),z0(AA,k,"opsLimit"),(typeof k!="number"||(0|k)!==k||k<0)&&SA(AA,"opsLimit must be an unsigned integer"),z0(AA,m,"memLimit"),(typeof m!="number"||(0|m)!==m||m<0)&&SA(AA,"memLimit must be an unsigned integer"),z0(AA,P,"algorithm"),(typeof P!="number"||(0|P)!==P||P<0)&&SA(AA,"algorithm must be an unsigned integer");var jA=new RA(0|S),C0=jA.address;if(AA.push(C0),!(0|U._crypto_pwhash(C0,S,0,QA,lA,0,NA,k,0,m,P))){var n0=TA(jA,Y);return JA(AA),n0}e0(AA,"invalid usage")}function Ie(S,N,F,k,m,P){var Y=[];LA(P),z0(Y,S,"keyLength"),(typeof S!="number"||(0|S)!==S||S<0)&&SA(Y,"keyLength must be an unsigned integer");var AA=IA(N=yA(Y,N,"password")),QA=N.length;Y.push(AA),F=yA(Y,F,"salt");var lA,NA=0|U._crypto_pwhash_scryptsalsa208sha256_saltbytes();F.length!==NA&&SA(Y,"invalid salt length"),lA=IA(F),Y.push(lA),z0(Y,k,"opsLimit"),(typeof k!="number"||(0|k)!==k||k<0)&&SA(Y,"opsLimit must be an unsigned integer"),z0(Y,m,"memLimit"),(typeof m!="number"||(0|m)!==m||m<0)&&SA(Y,"memLimit must be an unsigned integer");var PA=new RA(0|S),jA=PA.address;if(Y.push(jA),!(0|U._crypto_pwhash_scryptsalsa208sha256(jA,S,0,AA,QA,0,lA,k,0,m))){var C0=TA(PA,P);return JA(Y),C0}e0(Y,"invalid usage")}function cC(S,N,F,k,m,P,Y){var AA=[];LA(Y);var QA=IA(S=yA(AA,S,"password")),lA=S.length;AA.push(QA);var NA=IA(N=yA(AA,N,"salt")),PA=N.length;AA.push(NA),z0(AA,F,"opsLimit"),(typeof F!="number"||(0|F)!==F||F<0)&&SA(AA,"opsLimit must be an unsigned integer"),z0(AA,k,"r"),(typeof k!="number"||(0|k)!==k||k<0)&&SA(AA,"r must be an unsigned integer"),z0(AA,m,"p"),(typeof m!="number"||(0|m)!==m||m<0)&&SA(AA,"p must be an unsigned integer"),z0(AA,P,"keyLength"),(typeof P!="number"||(0|P)!==P||P<0)&&SA(AA,"keyLength must be an unsigned integer");var jA=new RA(0|P),C0=jA.address;if(AA.push(C0),!(0|U._crypto_pwhash_scryptsalsa208sha256_ll(QA,lA,NA,PA,F,0,k,m,C0,P))){var n0=TA(jA,Y);return JA(AA),n0}e0(AA,"invalid usage")}function IC(S,N,F,k){var m=[];LA(k);var P=IA(S=yA(m,S,"password")),Y=S.length;m.push(P),z0(m,N,"opsLimit"),(typeof N!="number"||(0|N)!==N||N<0)&&SA(m,"opsLimit must be an unsigned integer"),z0(m,F,"memLimit"),(typeof F!="number"||(0|F)!==F||F<0)&&SA(m,"memLimit must be an unsigned integer");var AA=new RA(0|U._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(m.push(AA),!(0|U._crypto_pwhash_scryptsalsa208sha256_str(AA,P,Y,0,N,0,F))){var QA=U.UTF8ToString(AA);return JA(m),QA}e0(m,"invalid usage")}function M2(S,N,F){var k=[];LA(F),typeof S!="string"&&SA(k,"hashed_password must be a string"),S=l2(S+"\0"),P!=null&&S.length-1!==P&&SA(k,"invalid hashed_password length");var m=IA(S),P=S.length-1;k.push(m);var Y=IA(N=yA(k,N,"password")),AA=N.length;k.push(Y);var QA=!(0|U._crypto_pwhash_scryptsalsa208sha256_str_verify(m,Y,AA,0));return JA(k),QA}function se(S,N,F,k){var m=[];LA(k);var P=IA(S=yA(m,S,"password")),Y=S.length;m.push(P),z0(m,N,"opsLimit"),(typeof N!="number"||(0|N)!==N||N<0)&&SA(m,"opsLimit must be an unsigned integer"),z0(m,F,"memLimit"),(typeof F!="number"||(0|F)!==F||F<0)&&SA(m,"memLimit must be an unsigned integer");var AA=new RA(0|U._crypto_pwhash_strbytes()).address;if(m.push(AA),!(0|U._crypto_pwhash_str(AA,P,Y,0,N,0,F))){var QA=U.UTF8ToString(AA);return JA(m),QA}e0(m,"invalid usage")}function Be(S,N,F,k){var m=[];LA(k),typeof S!="string"&&SA(m,"hashed_password must be a string"),S=l2(S+"\0"),Y!=null&&S.length-1!==Y&&SA(m,"invalid hashed_password length");var P=IA(S),Y=S.length-1;m.push(P),z0(m,N,"opsLimit"),(typeof N!="number"||(0|N)!==N||N<0)&&SA(m,"opsLimit must be an unsigned integer"),z0(m,F,"memLimit"),(typeof F!="number"||(0|F)!==F||F<0)&&SA(m,"memLimit must be an unsigned integer");var AA=!!(0|U._crypto_pwhash_str_needs_rehash(P,N,0,F));return JA(m),AA}function ye(S,N,F){var k=[];LA(F),typeof S!="string"&&SA(k,"hashed_password must be a string"),S=l2(S+"\0"),P!=null&&S.length-1!==P&&SA(k,"invalid hashed_password length");var m=IA(S),P=S.length-1;k.push(m);var Y=IA(N=yA(k,N,"password")),AA=N.length;k.push(Y);var QA=!(0|U._crypto_pwhash_str_verify(m,Y,AA,0));return JA(k),QA}function gg(S,N,F){var k=[];LA(F),S=yA(k,S,"privateKey");var m,P=0|U._crypto_scalarmult_scalarbytes();S.length!==P&&SA(k,"invalid privateKey length"),m=IA(S),k.push(m),N=yA(k,N,"publicKey");var Y,AA=0|U._crypto_scalarmult_bytes();N.length!==AA&&SA(k,"invalid publicKey length"),Y=IA(N),k.push(Y);var QA=new RA(0|U._crypto_scalarmult_bytes()),lA=QA.address;if(k.push(lA),!(0|U._crypto_scalarmult(lA,m,Y))){var NA=TA(QA,F);return JA(k),NA}e0(k,"weak public key")}function sC(S,N){var F=[];LA(N),S=yA(F,S,"privateKey");var k,m=0|U._crypto_scalarmult_scalarbytes();S.length!==m&&SA(F,"invalid privateKey length"),k=IA(S),F.push(k);var P=new RA(0|U._crypto_scalarmult_bytes()),Y=P.address;if(F.push(Y),!(0|U._crypto_scalarmult_base(Y,k))){var AA=TA(P,N);return JA(F),AA}e0(F,"unknown error")}function he(S,N,F){var k=[];LA(F),S=yA(k,S,"n");var m,P=0|U._crypto_scalarmult_ed25519_scalarbytes();S.length!==P&&SA(k,"invalid n length"),m=IA(S),k.push(m),N=yA(k,N,"p");var Y,AA=0|U._crypto_scalarmult_ed25519_bytes();N.length!==AA&&SA(k,"invalid p length"),Y=IA(N),k.push(Y);var QA=new RA(0|U._crypto_scalarmult_ed25519_bytes()),lA=QA.address;if(k.push(lA),!(0|U._crypto_scalarmult_ed25519(lA,m,Y))){var NA=TA(QA,F);return JA(k),NA}e0(k,"invalid point or scalar is 0")}function Qe(S,N){var F=[];LA(N),S=yA(F,S,"scalar");var k,m=0|U._crypto_scalarmult_ed25519_scalarbytes();S.length!==m&&SA(F,"invalid scalar length"),k=IA(S),F.push(k);var P=new RA(0|U._crypto_scalarmult_ed25519_bytes()),Y=P.address;if(F.push(Y),!(0|U._crypto_scalarmult_ed25519_base(Y,k))){var AA=TA(P,N);return JA(F),AA}e0(F,"scalar is 0")}function Pg(S,N){var F=[];LA(N),S=yA(F,S,"scalar");var k,m=0|U._crypto_scalarmult_ed25519_scalarbytes();S.length!==m&&SA(F,"invalid scalar length"),k=IA(S),F.push(k);var P=new RA(0|U._crypto_scalarmult_ed25519_bytes()),Y=P.address;if(F.push(Y),!(0|U._crypto_scalarmult_ed25519_base_noclamp(Y,k))){var AA=TA(P,N);return JA(F),AA}e0(F,"scalar is 0")}function BC(S,N,F){var k=[];LA(F),S=yA(k,S,"n");var m,P=0|U._crypto_scalarmult_ed25519_scalarbytes();S.length!==P&&SA(k,"invalid n length"),m=IA(S),k.push(m),N=yA(k,N,"p");var Y,AA=0|U._crypto_scalarmult_ed25519_bytes();N.length!==AA&&SA(k,"invalid p length"),Y=IA(N),k.push(Y);var QA=new RA(0|U._crypto_scalarmult_ed25519_bytes()),lA=QA.address;if(k.push(lA),!(0|U._crypto_scalarmult_ed25519_noclamp(lA,m,Y))){var NA=TA(QA,F);return JA(k),NA}e0(k,"invalid point or scalar is 0")}function sg(S,N,F){var k=[];LA(F),S=yA(k,S,"scalar");var m,P=0|U._crypto_scalarmult_ristretto255_scalarbytes();S.length!==P&&SA(k,"invalid scalar length"),m=IA(S),k.push(m),N=yA(k,N,"element");var Y,AA=0|U._crypto_scalarmult_ristretto255_bytes();N.length!==AA&&SA(k,"invalid element length"),Y=IA(N),k.push(Y);var QA=new RA(0|U._crypto_scalarmult_ristretto255_bytes()),lA=QA.address;if(k.push(lA),!(0|U._crypto_scalarmult_ristretto255(lA,m,Y))){var NA=TA(QA,F);return JA(k),NA}e0(k,"result is identity element")}function g1(S,N){var F=[];LA(N),S=yA(F,S,"scalar");var k,m=0|U._crypto_core_ristretto255_scalarbytes();S.length!==m&&SA(F,"invalid scalar length"),k=IA(S),F.push(k);var P=new RA(0|U._crypto_core_ristretto255_bytes()),Y=P.address;if(F.push(Y),!(0|U._crypto_scalarmult_ristretto255_base(Y,k))){var AA=TA(P,N);return JA(F),AA}e0(F,"scalar is 0")}function b2(S,N,F,k){var m=[];LA(k);var P=IA(S=yA(m,S,"message")),Y=S.length;m.push(P),N=yA(m,N,"nonce");var AA,QA=0|U._crypto_secretbox_noncebytes();N.length!==QA&&SA(m,"invalid nonce length"),AA=IA(N),m.push(AA),F=yA(m,F,"key");var lA,NA=0|U._crypto_secretbox_keybytes();F.length!==NA&&SA(m,"invalid key length"),lA=IA(F),m.push(lA);var PA=new RA(0|Y),jA=PA.address;m.push(jA);var C0=new RA(0|U._crypto_secretbox_macbytes()),n0=C0.address;if(m.push(n0),!(0|U._crypto_secretbox_detached(jA,n0,P,Y,0,AA,lA))){var l0=TA({mac:C0,cipher:PA},k);return JA(m),l0}e0(m,"invalid usage")}function qg(S,N,F,k){var m=[];LA(k);var P=IA(S=yA(m,S,"message")),Y=S.length;m.push(P),N=yA(m,N,"nonce");var AA,QA=0|U._crypto_secretbox_noncebytes();N.length!==QA&&SA(m,"invalid nonce length"),AA=IA(N),m.push(AA),F=yA(m,F,"key");var lA,NA=0|U._crypto_secretbox_keybytes();F.length!==NA&&SA(m,"invalid key length"),lA=IA(F),m.push(lA);var PA=new RA(Y+U._crypto_secretbox_macbytes()|0),jA=PA.address;if(m.push(jA),!(0|U._crypto_secretbox_easy(jA,P,Y,0,AA,lA))){var C0=TA(PA,k);return JA(m),C0}e0(m,"invalid usage")}function yC(S){var N=[];LA(S);var F=new RA(0|U._crypto_secretbox_keybytes()),k=F.address;N.push(k),U._crypto_secretbox_keygen(k);var m=TA(F,S);return JA(N),m}function z1(S,N,F,k,m){var P=[];LA(m);var Y=IA(S=yA(P,S,"ciphertext")),AA=S.length;P.push(Y),N=yA(P,N,"mac");var QA,lA=0|U._crypto_secretbox_macbytes();N.length!==lA&&SA(P,"invalid mac length"),QA=IA(N),P.push(QA),F=yA(P,F,"nonce");var NA,PA=0|U._crypto_secretbox_noncebytes();F.length!==PA&&SA(P,"invalid nonce length"),NA=IA(F),P.push(NA),k=yA(P,k,"key");var jA,C0=0|U._crypto_secretbox_keybytes();k.length!==C0&&SA(P,"invalid key length"),jA=IA(k),P.push(jA);var n0=new RA(0|AA),l0=n0.address;if(P.push(l0),!(0|U._crypto_secretbox_open_detached(l0,Y,QA,AA,0,NA,jA))){var Y0=TA(n0,m);return JA(P),Y0}e0(P,"wrong secret key for the given ciphertext")}function hC(S,N,F,k){var m=[];LA(k),S=yA(m,S,"ciphertext");var P,Y=U._crypto_secretbox_macbytes(),AA=S.length;AA>>0;return JA([]),N}function Ne(S,N){var F=[];LA(N);for(var k=U._malloc(24),m=0;m<6;m++)U.setValue(k+4*m,U.Runtime.addFunction(S[["implementation_name","random","stir","uniform","buf","close"][m]]),"i32");0|U._randombytes_set_implementation(k)&&e0(F,"unsupported implementation"),JA(F)}function w2(S){LA(S),U._randombytes_stir()}function N1(S,N){var F=[];LA(N),z0(F,S,"upper_bound"),(typeof S!="number"||(0|S)!==S||S<0)&&SA(F,"upper_bound must be an unsigned integer");var k=U._randombytes_uniform(S)>>>0;return JA(F),k}function O1(){var S=U._sodium_version_string(),N=U.UTF8ToString(S);return JA([]),N}return RA.prototype.to_Uint8Array=function(){var S=new Uint8Array(this.length);return S.set(U.HEAPU8.subarray(this.address,this.address+this.length)),S},GA.add=function(S,N){if(!(S instanceof Uint8Array&&N instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can added");var F=S.length,k=0,m=0;if(N.length!=S.length)throw new TypeError("Arguments must have the same length");for(m=0;m>=8,k+=S[m]+N[m],S[m]=255&k},GA.base64_variants=K2,GA.compare=function(S,N){if(!(S instanceof Uint8Array&&N instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(S.length!==N.length)throw new TypeError("Only instances of identical length can be compared");for(var F=0,k=1,m=S.length;m-- >0;)F|=N[m]-S[m]>>8&k,k&=(N[m]^S[m])-1>>8;return F+F+k-1},GA.from_base64=function(S,N){N=c2(N);var F,k=[],m=new RA(3*(S=yA(k,S,"input")).length/4),P=IA(S),Y=_2(4),AA=_2(4);return k.push(P),k.push(m.address),k.push(m.result_bin_len_p),k.push(m.b64_end_p),U._sodium_base642bin(m.address,m.length,P,S.length,0,Y,AA,N)!==0&&e0(k,"invalid input"),U.getValue(AA,"i32")-P!==S.length&&e0(k,"incomplete input"),m.length=U.getValue(Y,"i32"),F=m.to_Uint8Array(),JA(k),F},GA.from_hex=function(S){var N,F=[],k=new RA((S=yA(F,S,"input")).length/2),m=IA(S),P=_2(4);return F.push(m),F.push(k.address),F.push(k.hex_end_p),U._sodium_hex2bin(k.address,k.length,m,S.length,0,0,P)!==0&&e0(F,"invalid input"),U.getValue(P,"i32")-m!==S.length&&e0(F,"incomplete input"),N=k.to_Uint8Array(),JA(F),N},GA.from_string=l2,GA.increment=function(S){if(!(S instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be incremented");for(var N=256,F=0,k=S.length;F>=8,N+=S[F],S[F]=255&N},GA.is_zero=function(S){if(!(S instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be checked");for(var N=0,F=0,k=S.length;F 0");var F,k=[],m=_2(4),P=1,Y=0,AA=0|S.length,QA=new RA(AA+N);k.push(m),k.push(QA.address);for(var lA=QA.address,NA=QA.address+AA+N;lA>>48|AA>>>32|AA>>>16|AA))-1>>16);return U._sodium_pad(m,QA.address,S.length,N,QA.length)!==0&&e0(k,"internal error"),QA.length=U.getValue(m,"i32"),F=QA.to_Uint8Array(),JA(k),F},GA.unpad=function(S,N){if(!(S instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((N|=0)<=0)throw new Error("block size must be > 0");var F=[],k=IA(S),m=_2(4);return F.push(k),F.push(m),U._sodium_unpad(m,k,S.length,N)!==0&&e0(F,"unsupported/invalid padding"),S=(S=new Uint8Array(S)).subarray(0,U.getValue(m,"i32")),JA(F),S},GA.ready=f2,GA.symbols=function(){return Object.keys(GA).sort()},GA.to_base64=u2,GA.to_hex=f,GA.to_string=n2,GA}var KA=typeof CA.sodium=="object"&&typeof CA.sodium.onload=="function"?CA.sodium.onload:null;typeof oA.nodeName!="string"?DA(oA,ri()):CA.sodium=DA(CA.commonJsStrict={},CA.libsodium),KA&&CA.sodium.ready.then(function(){KA(CA.sodium)})})(gt)})(Ga);const L2=Ma(Ga);var Kt;try{Kt=new TextDecoder}catch{}var H0,k1,zA=0,F2={},Q2,ag,l1=0,H1=0,$2,V1,B1=[],B2,Ea={useRecords:!1,mapsAsObjects:!0};class Ka{}const xa=new Ka;xa.name="MessagePack 0xC1";var ig=!1,Ya=2,pa;try{new Function("")}catch{Ya=1/0}class KC{constructor(CA){CA&&(CA.useRecords===!1&&CA.mapsAsObjects===void 0&&(CA.mapsAsObjects=!0),CA.sequential&&CA.trusted!==!1&&(CA.trusted=!0,!CA.structures&&CA.useRecords!=!1&&(CA.structures=[],CA.maxSharedStructures||(CA.maxSharedStructures=0))),CA.structures?CA.structures.sharedLength=CA.structures.length:CA.getStructures&&((CA.structures=[]).uninitialized=!0,CA.structures.sharedLength=0),CA.int64AsNumber&&(CA.int64AsType="number")),Object.assign(this,CA)}unpack(CA,DA){if(H0)return Pa(()=>(Yt(),this?this.unpack(CA,DA):KC.prototype.unpack.call(Ea,CA,DA)));!CA.buffer&&CA.constructor===ArrayBuffer&&(CA=typeof Dg<"u"?Dg.from(CA):new Uint8Array(CA)),typeof DA=="object"?(k1=DA.end||CA.length,zA=DA.start||0):(zA=0,k1=DA>-1?DA:CA.length),H1=0,ag=null,$2=null,H0=CA;try{B2=CA.dataView||(CA.dataView=new DataView(CA.buffer,CA.byteOffset,CA.byteLength))}catch(KA){throw H0=null,CA instanceof Uint8Array?KA:new Error("Source must be a Uint8Array or Buffer but was a "+(CA&&typeof CA=="object"?CA.constructor.name:typeof CA))}if(this instanceof KC){if(F2=this,this.structures)return Q2=this.structures,$e(DA);(!Q2||Q2.length>0)&&(Q2=[])}else F2=Ea,(!Q2||Q2.length>0)&&(Q2=[]);return $e(DA)}unpackMultiple(CA,DA){let KA,GA=0;try{ig=!0;let B0=CA.length,U=this?this.unpack(CA,B0):at.unpack(CA,B0);if(DA){if(DA(U,GA,zA)===!1)return;for(;zAKA.slice(0)));for(let KA=0,GA=CA.length;KA=32&&(B0.highByte=KA-32>>5))}CA.sharedLength=CA.length;for(let KA in DA||[])if(KA>=0){let GA=CA[KA],B0=DA[KA];B0&&(GA&&((CA.restoreStructures||(CA.restoreStructures=[]))[KA]=GA),CA[KA]=B0)}return this.structures=CA}decode(CA,DA){return this.unpack(CA,DA)}}function $e(oA){try{if(!F2.trusted&&!ig){let DA=Q2.sharedLength||0;DA=32&&pa?(CA=pa(H0,zA,k1,F2),H0=null,!(oA&&oA.lazy)&&CA&&(CA=CA.toJSON()),zA=k1):CA=T2(),$2&&(zA=$2.postBundlePosition,$2=null),ig&&(Q2.restoreStructures=null),zA==k1)Q2&&Q2.restoreStructures&&fa(),Q2=null,H0=null,V1&&(V1=null);else{if(zA>k1)throw new Error("Unexpected end of MessagePack data");if(!ig){let DA;try{DA=JSON.stringify(CA,(KA,GA)=>typeof GA=="bigint"?`${GA}n`:GA).slice(0,100)}catch(KA){DA="(JSON view not available "+KA+")"}throw new Error("Data read, but end of buffer not reached "+DA)}}return CA}catch(CA){throw Q2&&Q2.restoreStructures&&fa(),Yt(),(CA instanceof RangeError||CA.message.startsWith("Unexpected end of buffer")||zA>k1)&&(CA.incomplete=!0),CA}}function fa(){for(let oA in Q2.restoreStructures)Q2[oA]=Q2.restoreStructures[oA];Q2.restoreStructures=null}function T2(){let oA=H0[zA++];if(oA<160)if(oA<128){if(oA<64)return oA;{let CA=Q2[oA&63]||F2.getStructures&&Ua()[oA&63];return CA?(CA.read||(CA.read=Jt(CA,oA&63)),CA.read()):oA}}else if(oA<144)if(oA-=128,F2.mapsAsObjects){let CA={};for(let DA=0;DA=zA)return ag.slice(zA-l1,(zA+=CA)-l1);if(H1==0&&k1<140){let DA=CA<16?Rt(CA):Ha(CA);if(DA!=null)return DA}return xt(CA)}else{let CA;switch(oA){case 192:return null;case 193:return $2?(CA=T2(),CA>0?$2[1].slice($2.position1,$2.position1+=CA):$2[0].slice($2.position0,$2.position0-=CA)):xa;case 194:return!1;case 195:return!0;case 196:if(CA=H0[zA++],CA===void 0)throw new Error("Unexpected end of buffer");return Mt(CA);case 197:return CA=B2.getUint16(zA),zA+=2,Mt(CA);case 198:return CA=B2.getUint32(zA),zA+=4,Mt(CA);case 199:return fg(H0[zA++]);case 200:return CA=B2.getUint16(zA),zA+=2,fg(CA);case 201:return CA=B2.getUint32(zA),zA+=4,fg(CA);case 202:if(CA=B2.getFloat32(zA),F2.useFloat32>2){let DA=Lt[(H0[zA]&127)<<1|H0[zA+1]>>7];return zA+=4,(DA*CA+(CA>0?.5:-.5)>>0)/DA}return zA+=4,CA;case 203:return CA=B2.getFloat64(zA),zA+=8,CA;case 204:return H0[zA++];case 205:return CA=B2.getUint16(zA),zA+=2,CA;case 206:return CA=B2.getUint32(zA),zA+=4,CA;case 207:return F2.int64AsType==="number"?(CA=B2.getUint32(zA)*4294967296,CA+=B2.getUint32(zA+4)):F2.int64AsType==="string"?CA=B2.getBigUint64(zA).toString():F2.int64AsType==="auto"?(CA=B2.getBigUint64(zA),CA<=BigInt(2)<=BigInt(-2)<=zA?ag.slice(zA-l1,(zA+=CA)-l1):ii(CA);case 218:return CA=B2.getUint16(zA),zA+=2,H1>=zA?ag.slice(zA-l1,(zA+=CA)-l1):oi(CA);case 219:return CA=B2.getUint32(zA),zA+=4,H1>=zA?ag.slice(zA-l1,(zA+=CA)-l1):_i(CA);case 220:return CA=B2.getUint16(zA),zA+=2,wa(CA);case 221:return CA=B2.getUint32(zA),zA+=4,wa(CA);case 222:return CA=B2.getUint16(zA),zA+=2,la(CA);case 223:return CA=B2.getUint32(zA),zA+=4,la(CA);default:if(oA>=224)return oA-256;if(oA===void 0){let DA=new Error("Unexpected end of MessagePack data");throw DA.incomplete=!0,DA}throw new Error("Unknown MessagePack token "+oA)}}}const ai=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Jt(oA,CA){function DA(){if(DA.count++>Ya){let GA=oA.read=new Function("r","return function(){return "+(F2.freezeData?"Object.freeze":"")+"({"+oA.map(B0=>B0==="__proto__"?"__proto_:r()":ai.test(B0)?B0+":r()":"["+JSON.stringify(B0)+"]:r()").join(",")+"})}")(T2);return oA.highByte===0&&(oA.read=Da(CA,oA.read)),GA()}let KA={};for(let GA=0,B0=oA.length;GAfunction(){let DA=H0[zA++];if(DA===0)return CA();let KA=oA<32?-(oA+(DA<<5)):oA+(DA<<5),GA=Q2[KA]||Ua()[KA];if(!GA)throw new Error("Record id is not defined for "+KA);return GA.read||(GA.read=Jt(GA,oA)),GA.read()};function Ua(){let oA=Pa(()=>(H0=null,F2.getStructures()));return Q2=F2._mergeStructures(oA,Q2)}var xt=YC,ii=YC,oi=YC,_i=YC;function YC(oA){let CA;if(oA<16&&(CA=Rt(oA)))return CA;if(oA>64&&Kt)return Kt.decode(H0.subarray(zA,zA+=oA));const DA=zA+oA,KA=[];for(CA="";zA65535&&(f2-=65536,KA.push(f2>>>10&1023|55296),f2=56320|f2&1023),KA.push(f2)}else KA.push(GA);KA.length>=4096&&(CA+=Z2.apply(String,KA),KA.length=0)}return KA.length>0&&(CA+=Z2.apply(String,KA)),CA}function wa(oA){let CA=new Array(oA);for(let DA=0;DA0){zA=CA;return}DA[KA]=GA}return Z2.apply(String,DA)}function Rt(oA){if(oA<4)if(oA<2){if(oA===0)return"";{let CA=H0[zA++];if((CA&128)>1){zA-=1;return}return Z2(CA)}}else{let CA=H0[zA++],DA=H0[zA++];if((CA&128)>0||(DA&128)>0){zA-=2;return}if(oA<3)return Z2(CA,DA);let KA=H0[zA++];if((KA&128)>0){zA-=3;return}return Z2(CA,DA,KA)}else{let CA=H0[zA++],DA=H0[zA++],KA=H0[zA++],GA=H0[zA++];if((CA&128)>0||(DA&128)>0||(KA&128)>0||(GA&128)>0){zA-=4;return}if(oA<6){if(oA===4)return Z2(CA,DA,KA,GA);{let B0=H0[zA++];if((B0&128)>0){zA-=5;return}return Z2(CA,DA,KA,GA,B0)}}else if(oA<8){let B0=H0[zA++],U=H0[zA++];if((B0&128)>0||(U&128)>0){zA-=6;return}if(oA<7)return Z2(CA,DA,KA,GA,B0,U);let A2=H0[zA++];if((A2&128)>0){zA-=7;return}return Z2(CA,DA,KA,GA,B0,U,A2)}else{let B0=H0[zA++],U=H0[zA++],A2=H0[zA++],f2=H0[zA++];if((B0&128)>0||(U&128)>0||(A2&128)>0||(f2&128)>0){zA-=8;return}if(oA<10){if(oA===8)return Z2(CA,DA,KA,GA,B0,U,A2,f2);{let l2=H0[zA++];if((l2&128)>0){zA-=9;return}return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2)}}else if(oA<12){let l2=H0[zA++],n2=H0[zA++];if((l2&128)>0||(n2&128)>0){zA-=10;return}if(oA<11)return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2);let f=H0[zA++];if((f&128)>0){zA-=11;return}return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2,f)}else{let l2=H0[zA++],n2=H0[zA++],f=H0[zA++],K2=H0[zA++];if((l2&128)>0||(n2&128)>0||(f&128)>0||(K2&128)>0){zA-=12;return}if(oA<14){if(oA===12)return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2,f,K2);{let c2=H0[zA++];if((c2&128)>0){zA-=13;return}return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2,f,K2,c2)}}else{let c2=H0[zA++],u2=H0[zA++];if((c2&128)>0||(u2&128)>0){zA-=14;return}if(oA<15)return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2,f,K2,c2,u2);let TA=H0[zA++];if((TA&128)>0){zA-=15;return}return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2,f,K2,c2,u2,TA)}}}}}function ka(){let oA=H0[zA++],CA;if(oA<192)CA=oA-160;else switch(oA){case 217:CA=H0[zA++];break;case 218:CA=B2.getUint16(zA),zA+=2;break;case 219:CA=B2.getUint32(zA),zA+=4;break;default:throw new Error("Expected string")}return YC(CA)}function Mt(oA){return F2.copyBuffers?Uint8Array.prototype.slice.call(H0,zA,zA+=oA):H0.subarray(zA,zA+=oA)}function fg(oA){let CA=H0[zA++];if(B1[CA]){let DA;return B1[CA](H0.subarray(zA,DA=zA+=oA),KA=>{zA=KA;try{return T2()}finally{zA=DA}})}else throw new Error("Unknown extension type "+CA)}var ua=new Array(4096);function Ja(){let oA=H0[zA++];if(oA>=160&&oA<192){if(oA=oA-160,H1>=zA)return ag.slice(zA-l1,(zA+=oA)-l1);if(!(H1==0&&k1<180))return xt(oA)}else return zA--,Ra(T2());let CA=(oA<<5^(oA>1?B2.getUint16(zA):oA>0?H0[zA]:0))&4095,DA=ua[CA],KA=zA,GA=zA+oA-3,B0,U=0;if(DA&&DA.bytes==oA){for(;KA{let DA=T2().map(Ra),KA=oA;CA!==void 0&&(oA=oA<32?-((CA<<5)+oA):(CA<<5)+oA,DA.highByte=CA);let GA=Q2[oA];return GA&&(GA.isShared||ig)&&((Q2.restoreStructures||(Q2.restoreStructures=[]))[oA]=GA),Q2[oA]=DA,DA.read=Jt(DA,KA),DA.read()};B1[0]=()=>{};B1[0].noBuffer=!0;B1[66]=oA=>{let CA=oA.length,DA=BigInt(oA[0]&128?oA[0]-256:oA[0]);for(let KA=1;KA{let oA=T2();return(ci[oA[0]]||Error)(oA[1],{cause:oA[2]})};B1[105]=oA=>{if(F2.structuredClone===!1)throw new Error("Structured clone extension is disabled");let CA=B2.getUint32(zA-4);V1||(V1=new Map);let DA=H0[zA],KA;DA>=144&&DA<160||DA==220||DA==221?KA=[]:KA={};let GA={target:KA};V1.set(CA,GA);let B0=T2();return GA.used?Object.assign(KA,B0):(GA.target=B0,B0)};B1[112]=oA=>{if(F2.structuredClone===!1)throw new Error("Structured clone extension is disabled");let CA=B2.getUint32(zA-4),DA=V1.get(CA);return DA.used=!0,DA.target};B1[115]=()=>new Set(T2());const La=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(oA=>oA+"Array");let Ii=typeof globalThis=="object"?globalThis:window;B1[116]=oA=>{let CA=oA[0],DA=La[CA];if(!DA){if(CA===16){let KA=new ArrayBuffer(oA.length-1);return new Uint8Array(KA).set(oA.subarray(1)),KA}throw new Error("Could not find typed array for code "+CA)}return new Ii[DA](Uint8Array.prototype.slice.call(oA,1).buffer)};B1[120]=()=>{let oA=T2();return new RegExp(oA[0],oA[1])};const si=[];B1[98]=oA=>{let CA=(oA[0]<<24)+(oA[1]<<16)+(oA[2]<<8)+oA[3],DA=zA;return zA+=CA-oA.length,$2=si,$2=[ka(),ka()],$2.position0=0,$2.position1=0,$2.postBundlePosition=zA,zA=DA,T2()};B1[255]=oA=>oA.length==4?new Date((oA[0]*16777216+(oA[1]<<16)+(oA[2]<<8)+oA[3])*1e3):oA.length==8?new Date(((oA[0]<<22)+(oA[1]<<14)+(oA[2]<<6)+(oA[3]>>2))/1e6+((oA[3]&3)*4294967296+oA[4]*16777216+(oA[5]<<16)+(oA[6]<<8)+oA[7])*1e3):oA.length==12?new Date(((oA[0]<<24)+(oA[1]<<16)+(oA[2]<<8)+oA[3])/1e6+((oA[4]&128?-281474976710656:0)+oA[6]*1099511627776+oA[7]*4294967296+oA[8]*16777216+(oA[9]<<16)+(oA[10]<<8)+oA[11])*1e3):new Date("invalid");function Pa(oA){let CA=k1,DA=zA,KA=l1,GA=H1,B0=ag,U=V1,A2=$2,f2=new Uint8Array(H0.slice(0,k1)),l2=Q2,n2=Q2.slice(0,Q2.length),f=F2,K2=ig,c2=oA();return k1=CA,zA=DA,l1=KA,H1=GA,ag=B0,V1=U,$2=A2,H0=f2,ig=K2,Q2=l2,Q2.splice(0,Q2.length,...n2),F2=f,B2=new DataView(H0.buffer,H0.byteOffset,H0.byteLength),c2}function Yt(){H0=null,V1=null,Q2=null}const Lt=new Array(147);for(let oA=0;oA<256;oA++)Lt[oA]=+("1e"+Math.floor(45.15-oA*.30103));var at=new KC({useRecords:!1});const tt=at.unpack;at.unpackMultiple;at.unpack;let Bi=new Float32Array(1);new Uint8Array(Bi.buffer,0,4);let Ct;try{Ct=new TextEncoder}catch{}let Ut,qa;const it=typeof Dg<"u",At=it?function(oA){return Dg.allocUnsafeSlow(oA)}:Uint8Array,za=it?Dg:Uint8Array,Sa=it?4294967296:2144337920;let t0,MC,v2,OA=0,i1,H2=null,yi;const hi=21760,Qi=/[\u0080-\uFFFF]/,Vg=Symbol("record-id");class ni extends KC{constructor(CA){super(CA),this.offset=0;let DA,KA,GA,B0,U=za.prototype.utf8Write?function(o0,J0){return t0.utf8Write(o0,J0,4294967295)}:Ct&&Ct.encodeInto?function(o0,J0){return Ct.encodeInto(o0,t0.subarray(J0)).written}:!1,A2=this;CA||(CA={});let f2=CA&&CA.sequential,l2=CA.structures||CA.saveStructures,n2=CA.maxSharedStructures;if(n2==null&&(n2=l2?32:0),n2>8160)throw new Error("Maximum maxSharedStructure is 8160");CA.structuredClone&&CA.moreTypes==null&&(this.moreTypes=!0);let f=CA.maxOwnStructures;f==null&&(f=l2?32:64),!this.structures&&CA.useRecords!=!1&&(this.structures=[]);let K2=n2>32||f+n2>64,c2=n2+64,u2=n2+f+64;if(u2>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let TA=[],S2=0,LA=0;this.pack=this.encode=function(o0,J0){if(t0||(t0=new At(8192),v2=t0.dataView||(t0.dataView=new DataView(t0.buffer,0,8192)),OA=0),i1=t0.length-10,i1-OA<2048?(t0=new At(t0.length),v2=t0.dataView||(t0.dataView=new DataView(t0.buffer,0,t0.length)),i1=t0.length-10,OA=0):OA=OA+7&2147483640,DA=OA,J0&li&&(OA+=J0&255),B0=A2.structuredClone?new Map:null,A2.bundleStrings&&typeof o0!="string"?(H2=[],H2.size=1/0):H2=null,GA=A2.structures,GA){GA.uninitialized&&(GA=A2._mergeStructures(A2.getStructures()));let d0=GA.sharedLength||0;if(d0>n2)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+GA.sharedLength);if(!GA.transitions){GA.transitions=Object.create(null);for(let U0=0;U0y2.offset>E2.offset?1:-1),Z0=U0.length,I2=-1;for(;d0&&Z0>0;){let y2=U0[--Z0].offset+DA;y2d0.position+DA?I2>=0&&(I2+=6):(I2>=0&&(v2.setUint32(d0.position+DA,v2.getUint32(d0.position+DA)+I2),I2=-1),d0=d0.previous,Z0++)}I2>=0&&d0&&v2.setUint32(d0.position+DA,v2.getUint32(d0.position+DA)+I2),OA+=U0.length*6,OA>i1&&yA(OA),A2.offset=OA;let t2=pi(t0.subarray(DA,OA),U0);return B0=null,t2}return A2.offset=OA,J0&Di?(t0.start=DA,t0.end=OA,t0):t0.subarray(DA,OA)}catch(d0){throw m0=d0,d0}finally{if(GA&&(RA(),KA&&A2.saveStructures)){let d0=GA.sharedLength||0,U0=t0.subarray(DA,OA),Z0=fi(GA,A2);if(!m0)return A2.saveStructures(Z0,Z0.isCompatible)===!1?A2.pack(o0,J0):(A2.lastNamedStructuresLength=d0,t0.length>1073741824&&(t0=null),U0)}t0.length>1073741824&&(t0=null),J0&wi&&(OA=DA)}};const RA=()=>{LA<10&&LA++;let o0=GA.sharedLength||0;if(GA.length>o0&&!f2&&(GA.length=o0),S2>1e4)GA.transitions=null,LA=0,S2=0,TA.length>0&&(TA=[]);else if(TA.length>0&&!f2){for(let J0=0,m0=TA.length;J0{var J0=o0.length;J0<16?t0[OA++]=144|J0:J0<65536?(t0[OA++]=220,t0[OA++]=J0>>8,t0[OA++]=J0&255):(t0[OA++]=221,v2.setUint32(OA,J0),OA+=4);for(let m0=0;m0{OA>i1&&(t0=yA(OA));var J0=typeof o0,m0;if(J0==="string"){let d0=o0.length;if(H2&&d0>=4&&d0<4096){if((H2.size+=d0)>hi){let t2,y2=(H2[0]?H2[0].length*3+H2[1].length:0)+10;OA+y2>i1&&(t0=yA(OA+y2));let E2;H2.position?(E2=H2,t0[OA]=200,OA+=3,t0[OA++]=98,t2=OA-DA,OA+=4,Fa(DA,_2,0),v2.setUint16(t2+DA-3,OA-DA-t2)):(t0[OA++]=214,t0[OA++]=98,t2=OA-DA,OA+=4),H2=["",""],H2.previous=E2,H2.size=0,H2.position=t2}let I2=Qi.test(o0);H2[I2?0:1]+=o0,t0[OA++]=193,_2(I2?-d0:d0);return}let U0;d0<32?U0=1:d0<256?U0=2:d0<65536?U0=3:U0=5;let Z0=d0*3;if(OA+Z0>i1&&(t0=yA(OA+Z0)),d0<64||!U){let I2,t2,y2,E2=OA+U0;for(I2=0;I2>6|192,t0[E2++]=t2&63|128):(t2&64512)===55296&&((y2=o0.charCodeAt(I2+1))&64512)===56320?(t2=65536+((t2&1023)<<10)+(y2&1023),I2++,t0[E2++]=t2>>18|240,t0[E2++]=t2>>12&63|128,t0[E2++]=t2>>6&63|128,t0[E2++]=t2&63|128):(t0[E2++]=t2>>12|224,t0[E2++]=t2>>6&63|128,t0[E2++]=t2&63|128);m0=E2-OA-U0}else m0=U(o0,OA+U0);m0<32?t0[OA++]=160|m0:m0<256?(U0<2&&t0.copyWithin(OA+2,OA+1,OA+1+m0),t0[OA++]=217,t0[OA++]=m0):m0<65536?(U0<3&&t0.copyWithin(OA+3,OA+2,OA+2+m0),t0[OA++]=218,t0[OA++]=m0>>8,t0[OA++]=m0&255):(U0<5&&t0.copyWithin(OA+5,OA+3,OA+3+m0),t0[OA++]=219,v2.setUint32(OA,m0),OA+=4),OA+=m0}else if(J0==="number")if(o0>>>0===o0)o0<32||o0<128&&this.useRecords===!1||o0<64&&!this.randomAccessStructure?t0[OA++]=o0:o0<256?(t0[OA++]=204,t0[OA++]=o0):o0<65536?(t0[OA++]=205,t0[OA++]=o0>>8,t0[OA++]=o0&255):(t0[OA++]=206,v2.setUint32(OA,o0),OA+=4);else if(o0>>0===o0)o0>=-32?t0[OA++]=256+o0:o0>=-128?(t0[OA++]=208,t0[OA++]=o0+256):o0>=-32768?(t0[OA++]=209,v2.setInt16(OA,o0),OA+=2):(t0[OA++]=210,v2.setInt32(OA,o0),OA+=4);else{let d0;if((d0=this.useFloat32)>0&&o0<4294967296&&o0>=-2147483648){t0[OA++]=202,v2.setFloat32(OA,o0);let U0;if(d0<4||(U0=o0*Lt[(t0[OA]&127)<<1|t0[OA+1]>>7])>>0===U0){OA+=4;return}else OA--}t0[OA++]=203,v2.setFloat64(OA,o0),OA+=8}else if(J0==="object"||J0==="function")if(!o0)t0[OA++]=192;else{if(B0){let U0=B0.get(o0);if(U0){if(!U0.id){let Z0=B0.idsToInsert||(B0.idsToInsert=[]);U0.id=Z0.push(U0)}t0[OA++]=214,t0[OA++]=112,v2.setUint32(OA,U0.id),OA+=4;return}else B0.set(o0,{offset:OA-DA})}let d0=o0.constructor;if(d0===Object)z0(o0);else if(d0===Array)IA(o0);else if(d0===Map)if(this.mapAsEmptyObject)t0[OA++]=128;else{m0=o0.size,m0<16?t0[OA++]=128|m0:m0<65536?(t0[OA++]=222,t0[OA++]=m0>>8,t0[OA++]=m0&255):(t0[OA++]=223,v2.setUint32(OA,m0),OA+=4);for(let[U0,Z0]of o0)_2(U0),_2(Z0)}else{for(let U0=0,Z0=Ut.length;U0(t0=y2,y2=null,OA+=R1,OA>i1&&yA(OA),{target:t0,targetView:v2,position:OA-R1}),_2)}finally{y2&&(t0=y2,v2=E2,OA=o1,i1=t0.length-10)}n1&&(n1.length+OA>i1&&yA(n1.length+OA),OA=Ei(n1,t0,OA,t2.type));return}}if(Array.isArray(o0))IA(o0);else{if(o0.toJSON){const U0=o0.toJSON();if(U0!==o0)return _2(U0)}if(J0==="function")return _2(this.writeFunction&&this.writeFunction(o0));z0(o0)}}}else if(J0==="boolean")t0[OA++]=o0?195:194;else if(J0==="bigint"){if(o0=-(BigInt(1)<0)t0[OA++]=207,v2.setBigUint64(OA,o0);else if(this.largeBigIntToFloat)t0[OA++]=203,v2.setFloat64(OA,Number(o0));else if(this.useBigIntExtension&&o0<2n**1023n&&o0>-(2n**1023n)){t0[OA++]=199,OA++,t0[OA++]=66;let d0=[],U0;do{let Z0=o0&0xffn;U0=(Z0&0x80n)===(o0<0n?0x80n:0n),d0.push(Z0),o0>>=8n}while(!((o0===0n||o0===-1n)&&U0));t0[OA-2]=d0.length;for(let Z0=d0.length;Z0>0;)t0[OA++]=Number(d0[--Z0]);return}else throw new RangeError(o0+" was too large to fit in MessagePack 64-bit integer format, use useBigIntExtension or set largeBigIntToFloat to convert to float-64");OA+=8}else if(J0==="undefined")this.encodeUndefinedAsNil?t0[OA++]=192:(t0[OA++]=212,t0[OA++]=0,t0[OA++]=0);else throw new Error("Unknown type: "+J0)},JA=this.variableMapSize||this.coercibleKeyAsNumber||this.skipValues?o0=>{let J0;if(this.skipValues){J0=[];for(let U0 in o0)(typeof o0.hasOwnProperty!="function"||o0.hasOwnProperty(U0))&&!this.skipValues.includes(o0[U0])&&J0.push(U0)}else J0=Object.keys(o0);let m0=J0.length;m0<16?t0[OA++]=128|m0:m0<65536?(t0[OA++]=222,t0[OA++]=m0>>8,t0[OA++]=m0&255):(t0[OA++]=223,v2.setUint32(OA,m0),OA+=4);let d0;if(this.coercibleKeyAsNumber)for(let U0=0;U0{t0[OA++]=222;let J0=OA-DA;OA+=2;let m0=0;for(let d0 in o0)(typeof o0.hasOwnProperty!="function"||o0.hasOwnProperty(d0))&&(_2(d0),_2(o0[d0]),m0++);t0[J0+++DA]=m0>>8,t0[J0+DA]=m0&255},e0=this.useRecords===!1?JA:CA.progressiveRecords&&!K2?o0=>{let J0,m0=GA.transitions||(GA.transitions=Object.create(null)),d0=OA++-DA,U0;for(let Z0 in o0)if(typeof o0.hasOwnProperty!="function"||o0.hasOwnProperty(Z0)){if(J0=m0[Z0],J0)m0=J0;else{let I2=Object.keys(o0),t2=m0;m0=GA.transitions;let y2=0;for(let E2=0,o1=I2.length;E2{let J0,m0=GA.transitions||(GA.transitions=Object.create(null)),d0=0;for(let Z0 in o0)(typeof o0.hasOwnProperty!="function"||o0.hasOwnProperty(Z0))&&(J0=m0[Z0],J0||(J0=m0[Z0]=Object.create(null),d0++),m0=J0);let U0=m0[Vg];U0?U0>=96&&K2?(t0[OA++]=((U0-=96)&31)+96,t0[OA++]=U0>>5):t0[OA++]=U0:x1(m0,m0.__keys__||Object.keys(o0),d0);for(let Z0 in o0)(typeof o0.hasOwnProperty!="function"||o0.hasOwnProperty(Z0))&&_2(o0[Z0])},SA=typeof this.useRecords=="function"&&this.useRecords,z0=SA?o0=>{SA(o0)?e0(o0):JA(o0)}:e0,yA=o0=>{let J0;if(o0>16777216){if(o0-DA>Sa)throw new Error("Packed buffer would be larger than maximum buffer size");J0=Math.min(Sa,Math.round(Math.max((o0-DA)*(o0>67108864?1.25:2),4194304)/4096)*4096)}else J0=(Math.max(o0-DA<<2,t0.length-1)>>12)+1<<12;let m0=new At(J0);return v2=m0.dataView||(m0.dataView=new DataView(m0.buffer,0,J0)),o0=Math.min(o0,t0.length),t0.copy?t0.copy(m0,0,DA,o0):m0.set(t0.slice(DA,o0)),OA-=DA,DA=0,i1=m0.length-10,t0=m0},x1=(o0,J0,m0)=>{let d0=GA.nextId;d0||(d0=64),d0=u2&&(d0=c2),GA.nextId=d0+1);let U0=J0.highByte=d0>=96&&K2?d0-96>>5:-1;o0[Vg]=d0,o0.__keys__=J0,GA[d0-64]=J0,d0=0?(t0[OA++]=(d0&31)+96,t0[OA++]=U0):t0[OA++]=d0):(U0>=0?(t0[OA++]=213,t0[OA++]=114,t0[OA++]=(d0&31)+96,t0[OA++]=U0):(t0[OA++]=212,t0[OA++]=114,t0[OA++]=d0),m0&&(S2+=LA*m0),TA.length>=f&&(TA.shift()[Vg]=0),TA.push(o0),_2(J0))},W1=(o0,J0,m0,d0)=>{let U0=t0,Z0=OA,I2=i1,t2=DA;t0=MC,OA=0,DA=0,t0||(MC=t0=new At(8192)),i1=t0.length-10,x1(o0,J0,d0),MC=t0;let y2=OA;if(t0=U0,OA=Z0,i1=I2,DA=t2,y2>1){let E2=OA+y2-1;E2>i1&&yA(E2);let o1=m0+DA;t0.copyWithin(o1+y2,o1+1,OA),t0.set(MC.slice(0,y2),o1),OA=E2}else t0[m0+DA]=MC[0]},Z1=o0=>{let J0=yi(o0,t0,DA,OA,GA,yA,(m0,d0,U0)=>{if(U0)return KA=!0;OA=d0;let Z0=t0;return _2(m0),RA(),Z0!==t0?{position:OA,targetView:v2,target:t0}:OA},this);if(J0===0)return z0(o0);OA=J0}}useBuffer(CA){t0=CA,t0.dataView||(t0.dataView=new DataView(t0.buffer,t0.byteOffset,t0.byteLength)),OA=0}set position(CA){OA=CA}get position(){return OA}clearSharedData(){this.structures&&(this.structures=[]),this.typedStructs&&(this.typedStructs=[])}}qa=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ka];Ut=[{pack(oA,CA,DA){let KA=oA.getTime()/1e3;if((this.useTimestamp32||oA.getMilliseconds()===0)&&KA>=0&&KA<4294967296){let{target:GA,targetView:B0,position:U}=CA(6);GA[U++]=214,GA[U++]=255,B0.setUint32(U,KA)}else if(KA>0&&KA<4294967296){let{target:GA,targetView:B0,position:U}=CA(10);GA[U++]=215,GA[U++]=255,B0.setUint32(U,oA.getMilliseconds()*4e6+(KA/1e3/4294967296>>0)),B0.setUint32(U+4,KA)}else if(isNaN(KA)){if(this.onInvalidDate)return CA(0),DA(this.onInvalidDate());let{target:GA,targetView:B0,position:U}=CA(3);GA[U++]=212,GA[U++]=255,GA[U++]=255}else{let{target:GA,targetView:B0,position:U}=CA(15);GA[U++]=199,GA[U++]=12,GA[U++]=255,B0.setUint32(U,oA.getMilliseconds()*1e6),B0.setBigInt64(U+4,BigInt(Math.floor(KA)))}}},{pack(oA,CA,DA){if(this.setAsEmptyObject)return CA(0),DA({});let KA=Array.from(oA),{target:GA,position:B0}=CA(this.moreTypes?3:0);this.moreTypes&&(GA[B0++]=212,GA[B0++]=115,GA[B0++]=0),DA(KA)}},{pack(oA,CA,DA){let{target:KA,position:GA}=CA(this.moreTypes?3:0);this.moreTypes&&(KA[GA++]=212,KA[GA++]=101,KA[GA++]=0),DA([oA.name,oA.message,oA.cause])}},{pack(oA,CA,DA){let{target:KA,position:GA}=CA(this.moreTypes?3:0);this.moreTypes&&(KA[GA++]=212,KA[GA++]=120,KA[GA++]=0),DA([oA.source,oA.flags])}},{pack(oA,CA){this.moreTypes?ba(oA,16,CA):va(it?Dg.from(oA):new Uint8Array(oA),CA)}},{pack(oA,CA){let DA=oA.constructor;DA!==za&&this.moreTypes?ba(oA,La.indexOf(DA.name),CA):va(oA,CA)}},{pack(oA,CA){let{target:DA,position:KA}=CA(1);DA[KA]=193}}];function ba(oA,CA,DA,KA){let GA=oA.byteLength;if(GA+1<256){var{target:B0,position:U}=DA(4+GA);B0[U++]=199,B0[U++]=GA+1}else if(GA+1<65536){var{target:B0,position:U}=DA(5+GA);B0[U++]=200,B0[U++]=GA+1>>8,B0[U++]=GA+1&255}else{var{target:B0,position:U,targetView:A2}=DA(7+GA);B0[U++]=201,A2.setUint32(U,GA+1),U+=4}B0[U++]=116,B0[U++]=CA,oA.buffer||(oA=new Uint8Array(oA)),B0.set(new Uint8Array(oA.buffer,oA.byteOffset,oA.byteLength),U)}function va(oA,CA){let DA=oA.byteLength;var KA,GA;if(DA<256){var{target:KA,position:GA}=CA(DA+2);KA[GA++]=196,KA[GA++]=DA}else if(DA<65536){var{target:KA,position:GA}=CA(DA+3);KA[GA++]=197,KA[GA++]=DA>>8,KA[GA++]=DA&255}else{var{target:KA,position:GA,targetView:B0}=CA(DA+5);KA[GA++]=198,B0.setUint32(GA,DA),GA+=4}KA.set(oA,GA)}function Ei(oA,CA,DA,KA){let GA=oA.length;switch(GA){case 1:CA[DA++]=212;break;case 2:CA[DA++]=213;break;case 4:CA[DA++]=214;break;case 8:CA[DA++]=215;break;case 16:CA[DA++]=216;break;default:GA<256?(CA[DA++]=199,CA[DA++]=GA):GA<65536?(CA[DA++]=200,CA[DA++]=GA>>8,CA[DA++]=GA&255):(CA[DA++]=201,CA[DA++]=GA>>24,CA[DA++]=GA>>16&255,CA[DA++]=GA>>8&255,CA[DA++]=GA&255)}return CA[DA++]=KA,CA.set(oA,DA),DA+=GA,DA}function pi(oA,CA){let DA,KA=CA.length*6,GA=oA.length-KA;for(;DA=CA.pop();){let B0=DA.offset,U=DA.id;oA.copyWithin(B0+KA,B0,GA),KA-=6;let A2=B0+KA;oA[A2++]=214,oA[A2++]=105,oA[A2++]=U>>24,oA[A2++]=U>>16&255,oA[A2++]=U>>8&255,oA[A2++]=U&255,GA=B0}return oA}function Fa(oA,CA,DA){if(H2.length>0){v2.setUint32(H2.position+oA,OA+DA-H2.position-oA),H2.stringsPosition=OA-oA;let KA=H2;H2=null,CA(KA[0]),CA(KA[1])}}function fi(oA,CA){return oA.isCompatible=DA=>{let KA=!DA||(CA.lastNamedStructuresLength||0)===DA.length;return KA||CA._mergeStructures(DA),KA},oA}let Ta=new ni({useRecords:!1});const wg=Ta.pack;Ta.pack;const Di=512,wi=1024,li=2048;function et(oA,CA=0){if(CA+=1,CA>10)return oA;if(typeof oA=="string")return[[/\u001B\[\d+m/g,""],[/\\n/g,""],[/(Uint8Array\(\d+\)) \[.+]/g,KA=>`${KA.slice(0,20)}...]`],[/({ ('\d+': \d+,?\s*)+})/g,KA=>`${KA.slice(0,20)}...}`],[/<(Buffer) ([a-f\d\s]+)>/g,KA=>`${KA.slice(0,20)}...>`],[/{"type":"Buffer","data":\[(\d+,?\s*)+]}/g,KA=>`${KA.slice(0,40)}...]}`]].reduce((KA,[GA,B0])=>KA.replaceAll(GA,B0),oA);if(Array.isArray(oA))return oA.map(DA=>et(DA,CA));if(typeof oA=="object"){const DA={};for(const KA in oA){const GA=oA[KA];DA[et(KA,CA)]=et(GA,CA)}return DA}return oA}const ki=Ht.formatArgs;Ht.formatArgs=function(oA){for(let CA=0;CA-1}function Eo(oA,CA){var DA=this.__data__,KA=ot(DA,oA);return KA<0?(++this.size,DA.push([oA,CA])):DA[KA][1]=CA,this}function Wg(oA){var CA=-1,DA=oA==null?0:oA.length;for(this.clear();++CA=255)throw new TypeError("Alphabet too long");for(var CA=new Uint8Array(256),DA=0;DA>>0,IA=new Uint8Array(RA);S2!==LA;){for(var _2=c2[S2],JA=0,e0=RA-1;(_2!==0||JA>>0,IA[e0]=_2%U>>>0,_2=_2/U>>>0;if(_2!==0)throw new Error("Non-zero carry");TA=JA,S2++}for(var SA=RA-TA;SA!==RA&&IA[SA]===0;)SA++;for(var z0=A2.repeat(u2);SA>>0,RA=new Uint8Array(LA);c2[u2];){var IA=CA[c2.charCodeAt(u2)];if(IA===255)return;for(var _2=0,JA=LA-1;(IA!==0||_2>>0,RA[JA]=IA%256>>>0,IA=IA/256>>>0;if(IA!==0)throw new Error("Non-zero carry");S2=_2,u2++}for(var e0=LA-S2;e0!==LA&&RA[e0]===0;)e0++;for(var SA=new Uint8Array(TA+(LA-e0)),z0=TA;e0!==LA;)SA[z0++]=RA[e0++];return SA}function K2(c2){var u2=f(c2);if(u2)return u2;throw new Error("Non-base"+U+" character")}return{encode:n2,decodeUnsafe:f,decode:K2}}var Fo=vo;const No=Fo,mo="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var Mo=No(mo);const Go=Ma(Mo);var{encode:Ko,decode:xo}=Go,J1={encode:oA=>Ko(oA),decode:xo,detect:oA=>/^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$/.test(oA)},zt=oA=>({publicKey:J1.encode(oA.publicKey),secretKey:J1.encode(oA.privateKey)}),u1=(oA,CA="base58")=>{if(CA==="utf8")return new TextEncoder().encode(oA);if(CA==="base58")return J1.decode(oA);throw new Error(`Unknown encoding: ${CA}`)},UC=bo(oA=>{const CA=typeof oA=="string"?u1(oA,"utf8"):oA,DA=J1.decode("H5B4DLSXw5xwNYFdz1Wr6e");if(CA.length>=16)return L2.crypto_generichash(32,CA,DA);const KA=L2.crypto_pwhash_OPSLIMIT_INTERACTIVE,GA=L2.crypto_pwhash_MEMLIMIT_INTERACTIVE;return L2.crypto_pwhash(32,CA,DA,KA,GA,L2.crypto_pwhash_ALG_DEFAULT)}),Yo=oA=>{const CA=oA?L2.crypto_box_seed_keypair(UC(oA)):L2.crypto_box_keypair();return zt(CA)},Va=({secret:oA,recipientPublicKey:CA,senderSecretKey:DA})=>{const KA=wg(oA),GA=L2.randombytes_buf(L2.crypto_box_NONCEBYTES);let B0;if(DA===void 0){const f2=Za.keyPair();DA=f2.secretKey,B0=f2.publicKey}else B0=void 0;const U=L2.crypto_box_easy(KA,GA,u1(CA),u1(DA));return wg({nonce:GA,message:U,senderPublicKey:B0})},Wa=({cipher:oA,recipientSecretKey:CA,senderPublicKey:DA})=>{const KA=tt(oA),{nonce:GA,message:B0}=KA;DA=DA??KA.senderPublicKey;const U=L2.crypto_box_open_easy(B0,GA,u1(DA),u1(CA));return tt(U)},Uo=({secret:oA,recipientPublicKey:CA,senderSecretKey:DA})=>{const KA=Va({secret:oA,recipientPublicKey:CA,senderSecretKey:DA});return J1.encode(KA)},Ho=({cipher:oA,recipientSecretKey:CA,senderPublicKey:DA})=>{const KA=u1(oA);return Wa({cipher:KA,recipientSecretKey:CA,senderPublicKey:DA})},Za={keyPair:Yo,encryptBytes:Va,decryptBytes:Wa,encrypt:Uo,decrypt:Ho},Jo=(oA,CA)=>J1.encode($a(oA,CA)),$a=(oA,CA)=>{const DA=u1(oA,"utf8"),KA=wg(CA);return L2.crypto_generichash(32,KA,DA)},Ai=(oA=32)=>L2.randombytes_buf(oA),Ro=(oA=16)=>J1.encode(Ai(oA*3)).slice(0,oA),Lo=oA=>{const CA=oA?L2.crypto_sign_seed_keypair(UC(oA)):L2.crypto_sign_keypair();return zt(CA)},Po=(oA,CA)=>{const DA=wg(oA),KA=u1(CA),GA=L2.crypto_sign_detached(DA,KA);return J1.encode(GA)},qo=({payload:oA,signature:CA,publicKey:DA})=>{const KA=wg(oA),GA=u1(CA),B0=u1(DA);return L2.crypto_sign_verify_detached(GA,KA,B0)},zo={keyPair:Lo,sign:Po,verify:qo},gi=(oA,CA)=>{const DA=wg(oA),KA=UC(CA),GA=L2.randombytes_buf(L2.crypto_secretbox_NONCEBYTES),B0=L2.crypto_secretbox_easy(DA,GA,KA);return wg({nonce:GA,message:B0})},Ci=(oA,CA)=>{const DA=UC(CA),{nonce:KA,message:GA}=tt(oA),B0=L2.crypto_secretbox_open_easy(GA,KA,DA);return tt(B0)},To=(oA,CA)=>{const DA=gi(oA,CA);return J1.encode(DA)},jo=(oA,CA)=>{const DA=u1(oA);return Ci(DA,CA)},Oo={encryptBytes:gi,decryptBytes:Ci,encrypt:To,decrypt:jo};await L2.ready;const Wo=Object.freeze(Object.defineProperty({__proto__:null,asymmetric:Za,base58:J1,hash:Jo,hashBytes:$a,keyToBytes:u1,keypairToBase58:zt,randomKey:Ro,randomKeyBytes:Ai,signatures:zo,stretch:UC,symmetric:Oo},Symbol.toStringTag,{value:"Module"}));export{Wg as L,po as M,rt as S,Ji as a,Ki as b,kg as c,bo as d,Ao as e,ui as f,Xa as g,zo as h,Oa as i,Jo as j,Za as k,Ro as l,qt as m,Vo as n,Oo as o,wg as p,Ai as q,Pt as r,UC as s,qi as t,tt as u,J1 as v,et as w,$a as x,Wo as y}; -//# sourceMappingURL=index-Blps0pow.js.map +import{a as ei,e as ti,c as gt,p as w1,B as Dg,b as ya,r as ha,d as Ma,_ as Ht,g as We}from"./index-D8bkrfVo.js";var Ga={},Ze={exports:{}};const Qa=ei(ti);var na;function ri(){return na||(na=1,function(oA,CA){(function(DA){function KA(GA){var B0;(B0=GA)===void 0&&(B0={});var U=B0;typeof U.sodium!="object"&&(typeof gt=="object"?U=gt:typeof window=="object"&&(U=window));var A2=B0;return B0.ready=new Promise(function(f2,l2){(f=A2).onAbort=l2,f.print=function(L){},f.printErr=function(L){},f.onRuntimeInitialized=function(){try{f._crypto_secretbox_keybytes(),f2()}catch(L){l2(L)}},f.useBackupModule=function(){return new Promise(function(L,X){(E={}).onAbort=X,E.onRuntimeInitialized=function(){Object.keys(A2).forEach(function(R){R!=="getRandomValue"&&delete A2[R]}),Object.keys(E).forEach(function(R){A2[R]=E[R]}),L()};var eA,E=E!==void 0?E:{},bA=typeof window=="object",UA=typeof importScripts=="function",r0=typeof w1=="object"&&typeof w1.versions=="object"&&typeof w1.versions.node=="string",S0=Object.assign({},E),v0="";if(r0){var q0=Qa,g2=ya;v0=__dirname+"/",eA=R=>(R=st(R)?new URL(R):g2.normalize(R),q0.readFileSync(R)),!E.thisProgram&&w1.argv.length>1&&w1.argv[1].replace(/\\/g,"/"),w1.argv.slice(2),oA.exports=E}else(bA||UA)&&(UA?v0=self.location.href:typeof document<"u"&&document.currentScript&&(v0=document.currentScript.src),v0=v0.startsWith("blob:")?"":v0.substr(0,v0.replace(/[?#].*/,"").lastIndexOf("/")+1),UA&&(eA=R=>{var Z=new XMLHttpRequest;return Z.open("GET",R,!1),Z.responseType="arraybuffer",Z.send(null),new Uint8Array(Z.response)}));E.print;var j2,AC=E.printErr||void 0;Object.assign(E,S0),S0=null,E.arguments&&E.arguments,E.thisProgram&&E.thisProgram,E.quit&&E.quit,E.wasmBinary&&(j2=E.wasmBinary);var Sg,bg={Memory:function(R){this.buffer=new ArrayBuffer(65536*R.initial)},Module:function(R){},Instance:function(R,Z){this.exports=function(tA){for(var BA,dA=new Uint8Array(123),xA=25;xA>=0;--xA)dA[48+xA]=52+xA,dA[65+xA]=xA,dA[97+xA]=26+xA;function WA(K0,R0,c){for(var A,i,O2=0,M0=R0,A1=c.length,q1=R0+(3*A1>>2)-(c[A1-2]=="=")-(c[A1-1]=="=");O2>4,M0>2),M0>>0>YA>>>0?a+1|0:a)|0,a=(O=(_=YA)>>>0>(YA=YA+O|0)>>>0?a+1|0:a)+u0|0,rA=w0=YA+E0|0,w0=a=w0>>>0>>0?a+1|0:a,YA=G(YA^(i[C+80|0]|i[C+81|0]<<8|i[C+82|0]<<16|i[C+83|0]<<24)^-79577749,O^(i[C+84|0]|i[C+85|0]<<8|i[C+86|0]<<16|i[C+87|0]<<24)^528734635,32),V0=a=y,a=a+1013904242|0,O=YA,H=a=(YA=YA-23791573|0)>>>0<4271175723?a+1|0:a,s0=G(YA^A0,a^s0,40),a=(a=w0)+(w0=y)|0,A0=G(O^(l=A0=s0+rA|0),V0^(v=l>>>0>>0?a+1|0:a),48),a=H+(aA=y)|0,x=a=(A0=YA+(D=A0)|0)>>>0>>0?a+1|0:a,A0=a=G(s0^(M=A0),w0^a,1),H=YA=y,w0=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,V0=a=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,f0=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,YA=(s0=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24)+(O=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24)|0,a=(r2=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24)+(s2=i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24)|0,a=(i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24)+(YA>>>0>>0?a+1|0:a)|0,a=V0+(rA=(_=YA)>>>0>(YA=YA+f0|0)>>>0?a+1|0:a)|0,a=(f0=YA+w0|0)>>>0>>0?a+1|0:a,_=G(YA^(i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24)^725511199,rA^(i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24)^-1694144372,32),B=G(O^(s=_-2067093701|0),s2^(mA=(uA=YA=y)-((_>>>0<2067093701)+1150833018|0)|0),40),a=(EA=y)+a|0,a=(fA=(q=YA=B+f0|0)>>>0>>0?a+1|0:a)+H|0,a=(q>>>0>(YA=q+A0|0)>>>0?a+1|0:a)+i0|0,a=(O=(h=YA)>>>0>(YA=YA+cA|0)>>>0?a+1|0:a)+$A|0,iA=$A=YA+e|0,p=a=$A>>>0>>0?a+1|0:a,b=A0,T0=H,H=YA,rA=O,A0=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,YA=a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,s2=a=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,o=O=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,i0=a,a=(W0=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)+(n=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24)|0,a=o+(($A=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24)>>>0>(h=$A+(O=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)|0)>>>0?a+1|0:a)|0,a=(f0=(i0=h+i0|0)>>>0>>0?a+1|0:a)+YA|0,x0=h=i0+A0|0,h=a=h>>>0>>0?a+1|0:a,Q=$A,$A=G(i0^(i[C+64|0]|i[C+65|0]<<8|i[C+66|0]<<16|i[C+67|0]<<24)^-1377402159,f0^(i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24)^1359893119,32),f0=a=y,a=a+1779033703|0,i0=$A,_A=a=($A=$A-205731576|0)>>>0<4089235720?a+1|0:a,n=G(Q^(V=$A),a^n,40),a=(wA=y)+h|0,Q=G(i0^(h=$A=n+x0|0),f0^(K=n>>>0>h>>>0?a+1|0:a),48),a=G(Q^H,(VA=y)^rA,32),d=$A=y,hA=a,t=a=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,f0=x0=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,z=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,$A=(rA=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24)+(i0=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24)|0,a=(C2=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24)+(vA=i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24)|0,a=(i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24)+($A>>>0>>0?a+1|0:a)|0,a=t+(H=(J=$A)>>>0>($A=z+$A|0)>>>0?a+1|0:a)|0,a=(z=$A+f0|0)>>>0<$A>>>0?a+1|0:a,H=G($A^(i[C+88|0]|i[C+89|0]<<8|i[C+90|0]<<16|i[C+91|0]<<24)^327033209,H^(i[C+92|0]|i[C+93|0]<<8|i[C+94|0]<<16|i[C+95|0]<<24)^1541459225,32),i0=G(i0^(f0=H+1595750129|0),(J=vA)^(vA=(sA=$A=y)-((H>>>0<2699217167)+1521486533|0)|0),40),a=(I0=y)+a|0,$A=G((z=$A=i0+z|0)^H,sA^(J=z>>>0>>0?a+1|0:a),48),a=vA+(c0=y)|0,nA=a=($A=f0+(vA=$A)|0)>>>0>>0?a+1|0:a,a=d+a|0,u=b^(H=hA+(sA=$A)|0),b=a=H>>>0>>0?a+1|0:a,f0=G(u,a^T0,40),a=(T0=y)+p|0,$A=G(iA=hA^(p=$A=f0+iA|0),d^(hA=p>>>0>>0?a+1|0:a),48),a=b+(D0=y)|0,d=a=(b=H+(iA=$A)|0)>>>0>>0?a+1|0:a,$A=(HA=G(b^f0,T0^a,1))+(H=i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)|0,a=(F0=y)+(T0=i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)|0,j0=$A,qA=$A>>>0>>0?a+1|0:a,FA=k0,$A=i[g+96|0]|i[g+97|0]<<8|i[g+98|0]<<16|i[g+99|0]<<24,f0=a=i[g+100|0]|i[g+101|0]<<8|i[g+102|0]<<16|i[g+103|0]<<24,i0=(a=l)+(l=G(sA^i0,nA^I0,1))|0,a=(sA=y)+v|0,a=(l>>>0>i0>>>0?a+1|0:a)+f0|0,a=(v=(v=i0)>>>0>(i0=$A+i0|0)>>>0?a+1|0:a)+FA|0,u=nA=i0+h0|0,nA=a=nA>>>0>>0?a+1|0:a,q=G(_^q,fA^uA,48),fA=a=G(q^i0,(uA=y)^v,32),a=_A+VA|0,a=(I0=i0=y)+(V=(i0=Q+V|0)>>>0>>0?a+1|0:a)|0,_A=a=(v=i0)>>>0>(Q=v+fA|0)>>>0?a+1|0:a,l=G(Q^l,sA^a,40),a=(VA=y)+nA|0,a=(sA=l>>>0>(nA=i0=l+u|0)>>>0?a+1|0:a)+qA|0,a=(_=nA>>>0>(i0=nA+j0|0)>>>0?a+1|0:a)+L0|0,j0=qA=i0+XA|0,qA=a=qA>>>0>>0?a+1|0:a,u=i0,FA=_,i0=i[g+116|0]|i[g+117|0]<<8|i[g+118|0]<<16|i[g+119|0]<<24,g=i[g+112|0]|i[g+113|0]<<8|i[g+114|0]<<16|i[g+115|0]<<24,n=G(n^v,V^wA,1),a=(wA=y)+J|0,a=((_=n+z|0)>>>0>>0?a+1|0:a)+i0|0,a=(v=(V=_)>>>0>(_=g+_|0)>>>0?a+1|0:a)+L0|0,i2=V=_+XA|0,V=a=V>>>0<_>>>0?a+1|0:a,a=G(_^D,v^aA,32),_0=_=y,D=a,v=_,a=uA+mA|0,q=_=s+q|0,z=a=_>>>0>>0?a+1|0:a,a=a+v|0,J=_=_+D|0,aA=a=q>>>0>_>>>0?a+1|0:a,v=G(_^n,wA^a,40),a=(wA=y)+V|0,D=G((_=v+i2|0)^D,_0^(s=_>>>0>>0?a+1|0:a),48),a=G(D^u,(i2=y)^FA,32),_0=n=y,V=a,u=n,B=G(B^q,z^EA,1),a=K+(q=y)|0,a=((n=h)>>>0>(h=h+B|0)>>>0?a+1|0:a)+MA|0,a=(h=(n=h+g0|0)>>>0>>0?a+1|0:a)+T0|0,FA=K=n+H|0,K=a=K>>>0>>0?a+1|0:a,z=B,n=G(n^vA,h^c0,32),a=(vA=y)+x|0,M=G(z^(h=B=n+M|0),(x=n>>>0>h>>>0?a+1|0:a)^q,40),a=(c0=y)+K|0,q=B=M+FA|0,B=G(n^B,vA^(K=B>>>0>>0?a+1|0:a),48),a=x+(I=y)|0,x=B,vA=a=(B=h+B|0)>>>0>>0?a+1|0:a,a=a+u|0,a=(z=B)>>>0>(B=B+V|0)>>>0?a+1|0:a,u=B,B^=HA,HA=a,n=G(B,F0^a,40),a=(F0=y)+qA|0,qA=B=n+j0|0,a=r+(FA=n>>>0>B>>>0?a+1|0:a)|0,j0=B=B+e|0,uA=a=B>>>0>>0?a+1|0:a,B=_,mA=h0,EA=k0,_=G(fA^nA,sA^I0,48),a=_A+(I0=y)|0,fA=_,_A=a=(h=Q+_|0)>>>0>>0?a+1|0:a,_=G(h^l,VA^a,1),a=(Q=y)+EA|0,a=((l=_+mA|0)>>>0<_>>>0?a+1|0:a)+s|0,a=C2+(B=(s=B+l|0)>>>0>>0?a+1|0:a)|0,nA=l=s+rA|0,l=a=l>>>0>>0?a+1|0:a,s=G(s^x,B^I,32),a=d+(sA=y)|0,x=s,b=a=(s=b+s|0)>>>0>>0?a+1|0:a,B=G(_^s,a^Q,40),a=(a=l)+(l=y)|0,Q=_=B+nA|0,_=G(_^x,sA^(nA=_>>>0>>0?a+1|0:a),48),a=b+(VA=y)|0,sA=_,d=a=(b=s+_|0)>>>0>>0?a+1|0:a,_=G(B^b,l^a,1),a=(l=y)+uA|0,a=t+(B=(s=_+j0|0)>>>0<_>>>0?a+1|0:a)|0,j0=x=s+x0|0,x=a=x>>>0>>0?a+1|0:a,uA=_,mA=l,a=aA+i2|0,a=(_=D+J|0)>>>0>>0?a+1|0:a,D=_,J=a,a=G(_^v,wA^a,1),v=l=y,_=a,a=K+i0|0,a=((q=g+q|0)>>>0>>0?a+1|0:a)+l|0,a=N0+(q=(l=_+q|0)>>>0>>0?a+1|0:a)|0,aA=K=l+cA|0,K=a=K>>>0>>0?a+1|0:a,l=G(l^iA,q^D0,32),a=_A+(iA=y)|0,q=l,_A=a=(_A=h)>>>0>(h=h+l|0)>>>0?a+1|0:a,l=G(_^h,a^v,40),a=(wA=y)+K|0,v=_=l+aA|0,_=G(K=_^q,iA^(q=_>>>0>>0?a+1|0:a),48),a=_A+(D0=y)|0,_A=_,K=_=h+_|0,iA=a=_>>>0>>0?a+1|0:a,aA=s,EA=B,_=G(M^z,vA^c0,1),a=(h=y)+$|0,a=hA+((s=_+p0|0)>>>0<_>>>0?a+1|0:a)|0,a=MA+(B=(s=s+p|0)>>>0

>>0?a+1|0:a)|0,hA=p=s+g0|0,p=a=p>>>0>>0?a+1|0:a,M=_,_=(s=G(s^fA,B^I0,32))+D|0,a=(D=y)+J|0,B=_,h=G(_^M,(fA=_>>>0>>0?a+1|0:a)^h,40),a=(I0=y)+p|0,p=_=h+hA|0,z=G(_^s,D^(hA=_>>>0>>0?a+1|0:a),48),s=G(z^aA,(a=EA)^(EA=y),32),a=(aA=y)+iA|0,D=_=s+K|0,M=G(_^uA,(J=_>>>0>>0?a+1|0:a)^mA,40),a=(uA=y)+x|0,x=_=M+j0|0,_=G(_^s,aA^(vA=_>>>0>>0?a+1|0:a),48),a=J+(c0=y)|0,J=_,aA=a=(s=D)>>>0>(D=D+_|0)>>>0?a+1|0:a,_=G(D^M,uA^a,1),a=L0+(j0=y)|0,uA=_,i2=_=XA+_|0,M=a=_>>>0>>0?a+1|0:a,s=E0,_=G(l^K,wA^iA,1),a=nA+(l=y)|0,a=((K=Q)>>>0>(Q=_+Q|0)>>>0?a+1|0:a)+u0|0,a=(K=(s=s+Q|0)>>>0>>0?a+1|0:a)+V0|0,mA=Q=s+w0|0,nA=a=Q>>>0>>0?a+1|0:a,iA=_,Q=G(V^qA,FA^_0,48),a=G(Q^s,(wA=y)^K,32),_0=_=y,V=a,s=_,a=fA+EA|0,a=(_=B+z|0)>>>0>>0?a+1|0:a,B=_,fA=a,a=a+s|0,K=_=_+V|0,z=a=B>>>0>_>>>0?a+1|0:a,s=G(_^iA,a^l,40),a=(a=nA)+(nA=y)|0,iA=_=s+mA|0,qA=a=_>>>0>>0?a+1|0:a,a=a+M|0,FA=a=(l=_+i2|0)>>>0<_>>>0?a+1|0:a,M=a,_=G(h^B,fA^I0,1),a=YA+(h=y)|0,a=q+((B=_+A0|0)>>>0>>0?a+1|0:a)|0,a=f0+(v=(B=B+v|0)>>>0>>0?a+1|0:a)|0,mA=q=B+$A|0,q=a=q>>>0<$A>>>0?a+1|0:a,fA=_,a=G(B^sA,v^VA,32),EA=_=y,B=a,v=_,a=wA+HA|0,sA=_=Q+u|0,HA=a=_>>>0>>0?a+1|0:a,a=a+v|0,a=(Q=_+B|0)>>>0<_>>>0?a+1|0:a,_=Q^fA,fA=a,v=G(_,a^h,40),a=(VA=y)+q|0,h=_=v+mA|0,u=G(_^B,EA^(q=_>>>0>>0?a+1|0:a),48),a=G(u^l,(I0=y)^M,32),i2=_=y,mA=a,M=_,_=G(n^sA,HA^F0,1),a=hA+(n=y)|0,a=W0+((B=_+p|0)>>>0

>>0?a+1|0:a)|0,a=(p=(B=B+O|0)>>>0>>0?a+1|0:a)+r2|0,sA=hA=B+s0|0,hA=a=hA>>>0>>0?a+1|0:a,B=G(B^_A,p^D0,32),a=d+(HA=y)|0,_A=B,p=n,n=a=(B=b+B|0)>>>0>>0?a+1|0:a,p=G(_^B,p^a,40),a=(D0=y)+hA|0,b=_=p+sA|0,_=G(sA=_^_A,HA^(_A=_>>>0

>>0?a+1|0:a),48),a=n+(wA=y)|0,n=_,hA=_=B+_|0,sA=a=_>>>0>>0?a+1|0:a,a=a+M|0,d=a=(M=_+mA|0)>>>0<_>>>0?a+1|0:a,B=G(M^uA,j0^a,40),a=FA+(HA=y)|0,a=((_=B+l|0)>>>0>>0?a+1|0:a)+k0|0,l=_,FA=_=_+h0|0,uA=a=l>>>0>_>>>0?a+1|0:a,EA=MA,l=G(V^iA,qA^_0,48),a=(F0=y)+z|0,V=_=l+K|0,a=G(_^s,(K=_>>>0>>0?a+1|0:a)^nA,1),nA=s=y,_=a,a=q+r|0,a=((h=h+e|0)>>>0>>0?a+1|0:a)+s|0,a=(h=(s=_+h|0)>>>0>>0?a+1|0:a)+EA|0,z=q=s+g0|0,q=a=q>>>0>>0?a+1|0:a,s=G(s^n,h^wA,32),a=aA+(iA=y)|0,D=a=(n=s+D|0)>>>0>>0?a+1|0:a,h=G(_^n,a^nA,40),a=(qA=y)+q|0,q=_=h+z|0,s=G(_^s,iA^(nA=_>>>0>>0?a+1|0:a),48),a=D+(z=y)|0,iA=a=(D=s+n|0)>>>0>>0?a+1|0:a,_=G(h^D,qA^a,1),a=(qA=y)+uA|0,a=T0+((n=_+FA|0)>>>0<_>>>0?a+1|0:a)|0,a=(h=(n=n+H|0)>>>0>>0?a+1|0:a)+$|0,j0=$=n+p0|0,$=a=$>>>0>>0?a+1|0:a,aA=_,EA=n,wA=h,n=E0,_=G(p^hA,sA^D0,1),a=vA+(p=y)|0,a=((h=x)>>>0>(x=_+x|0)>>>0?a+1|0:a)+u0|0,a=r2+(h=(n=n+x|0)>>>0>>0?a+1|0:a)|0,vA=x=n+s0|0,hA=a=x>>>0>>0?a+1|0:a,x=_,h=a=G(n^l,h^F0,32),a=fA+I0|0,a=(sA=_=y)+(Q=(_=Q+u|0)>>>0>>0?a+1|0:a)|0,fA=a=(l=_+h|0)>>>0<_>>>0?a+1|0:a,x=G(l^x,a^p,40),a=(I0=y)+hA|0,hA=G(vA=(n=x+vA|0)^h,sA^(h=n>>>0>>0?a+1|0:a),48),a=G(hA^EA,(D0=y)^wA,32),F0=p=y,vA=a,sA=p,_=G(_^v,Q^VA,1),a=f0+(p=y)|0,a=_A+((Q=_+$A|0)>>>0<$A>>>0?a+1|0:a)|0,a=W0+(b=(Q=Q+b|0)>>>0>>0?a+1|0:a)|0,EA=v=Q+O|0,v=a=v>>>0>>0?a+1|0:a,_A=_,u=p,Q=G(Q^J,b^c0,32),a=(J=y)+K|0,p=_=Q+V|0,b=G(_^_A,(V=_>>>0>>0?a+1|0:a)^u,40),a=(VA=y)+v|0,_A=_=b+EA|0,_=G(_^Q,J^(K=_>>>0>>0?a+1|0:a),48),a=V+(EA=y)|0,v=_,V=_=p+_|0,J=a=_>>>0

>>0?a+1|0:a,a=a+sA|0,sA=_=_+vA|0,Q=qA,qA=a=V>>>0>_>>>0?a+1|0:a,Q=G(_^aA,Q^a,40),a=(a=$)+($=y)|0,u=_=Q+j0|0,aA=a=_>>>0>>0?a+1|0:a,p=h,_=G(mA^FA,uA^i2,48),a=d+(c0=y)|0,d=_,h=(_=M+_|0)^B,B=a=_>>>0>>0?a+1|0:a,h=G(h,a^HA,1),a=(HA=y)+p|0,a=t+((n=h+n|0)>>>0>>0?a+1|0:a)|0,a=(p=(n=n+x0|0)>>>0>>0?a+1|0:a)+YA|0,FA=M=n+A0|0,M=a=M>>>0>>0?a+1|0:a,n=G(n^v,p^EA,32),a=iA+(uA=y)|0,iA=n,D=a=(p=D+n|0)>>>0>>0?a+1|0:a,h=G(h^p,HA^a,40),a=(a=M)+(M=y)|0,v=n=h+FA|0,n=G(mA=n^iA,uA^(iA=n>>>0>>0?a+1|0:a),48),a=D+(j0=y)|0,HA=n,FA=a=(D=p+n|0)>>>0

>>0?a+1|0:a,n=G(h^D,M^a,1),a=(M=y)+aA|0,a=r+((h=n+u|0)>>>0>>0?a+1|0:a)|0,a=i0+(p=(h=h+e|0)>>>0>>0?a+1|0:a)|0,i2=uA=g+h|0,uA=a=uA>>>0>>0?a+1|0:a,mA=n,EA=M,M=h,wA=p,n=G(b^V,J^VA,1),a=(p=y)+nA|0,a=N0+((h=n+q|0)>>>0>>0?a+1|0:a)|0,a=(b=(h=h+cA|0)>>>0>>0?a+1|0:a)+i0|0,nA=q=g+h|0,q=a=q>>>0>>0?a+1|0:a,V=n,h=a=G(h^d,b^c0,32),b=n=y,a=fA+D0|0,fA=a=(n=l+hA|0)>>>0>>0?a+1|0:a,a=a+b|0,a=(l=n)>>>0>(n=n+h|0)>>>0?a+1|0:a,hA=n,n^=V,V=a,p=G(n,a^p,40),a=(VA=y)+q|0,b=G(q=(n=p+nA|0)^h,b^(h=n>>>0

>>0?a+1|0:a),48),a=G(b^M,(a=wA)^(wA=y),32),c0=M=y,q=a,nA=B,B=s,a=G(l^x,fA^I0,1),J=s=y,l=a,a=K+V0|0,a=((x=_A+w0|0)>>>0>>0?a+1|0:a)+s|0,x=a=(s=l+x|0)>>>0>>0?a+1|0:a,B=G(s^B,a^z,32),a=(a=nA)+(nA=y)|0,l=G((_=B+_|0)^l,J^(fA=_>>>0>>0?a+1|0:a),40),a=x+(I0=y)|0,_A=l,a=C2+((K=s)>>>0>(s=s+l|0)>>>0?a+1|0:a)|0,K=a=(l=s+rA|0)>>>0>>0?a+1|0:a,s=G(B^l,nA^a,48),a=fA+(D0=y)|0,z=_,B=s,fA=_=_+s|0,nA=a=z>>>0>_>>>0?a+1|0:a,a=a+M|0,z=a=(M=_+q|0)>>>0<_>>>0?a+1|0:a,_=(x=G(M^mA,a^EA,40))+i2|0,a=(i2=y)+uA|0,J=_,d=_>>>0>>0?a+1|0:a,_=G(vA^u,aA^F0,48),a=(vA=y)+qA|0,sA=s=_+sA|0,mA=$,$=a=s>>>0<_>>>0?a+1|0:a,a=G(s^Q,mA^a,1),u=s=y,Q=a,a=h+t|0,a=((n=n+x0|0)>>>0>>0?a+1|0:a)+s|0,a=T0+(n=(s=n+Q|0)>>>0>>0?a+1|0:a)|0,aA=h=s+H|0,h=a=h>>>0>>0?a+1|0:a,s=G(s^B,n^D0,32),a=FA+(uA=y)|0,qA=s,s=(B=D+s|0)^Q,Q=a=B>>>0>>0?a+1|0:a,n=G(s,u^a,40),a=(a=h)+(h=y)|0,u=s=n+aA|0,s=G(D=s^qA,uA^(qA=s>>>0>>0?a+1|0:a),48),a=Q+(D0=y)|0,FA=s,B=a=(s=B+s|0)>>>0>>0?a+1|0:a,n=G(s^n,h^a,1),a=(D=y)+d|0,a=L0+((h=n+J|0)>>>0>>0?a+1|0:a)|0,a=(Q=(h=h+XA|0)>>>0>>0?a+1|0:a)+MA|0,_0=aA=h+g0|0,aA=a=aA>>>0>>0?a+1|0:a,uA=n,mA=h,EA=Q,n=G(_A^fA,nA^I0,1),a=(nA=y)+k0|0,a=iA+(n>>>0>(h=n+h0|0)>>>0?a+1|0:a)|0,Q=a=(h=h+v|0)>>>0>>0?a+1|0:a,a=G(_^h,a^vA,32),vA=_=y,v=a,a=V+wA|0,a=(_=b+hA|0)>>>0>>0?a+1|0:a,b=_,fA=a,a=vA+a|0,V=_=_+v|0,_A=a=b>>>0>_>>>0?a+1|0:a,_=G(_^n,nA^a,40),a=Q+(wA=y)|0,hA=_,a=f0+((_=h+_|0)>>>0>>0?a+1|0:a)|0,a=(_=_+$A|0)>>>0<$A>>>0?a+1|0:a,nA=_,_^=v,v=a,Q=G(_,vA^a,48),a=G(Q^mA,(a=EA)^(EA=y),32),I0=_=y,vA=a,iA=_,_=G(p^b,fA^VA,1),a=V0+(h=y)|0,a=K+((n=_+w0|0)>>>0>>0?a+1|0:a)|0,a=(p=(n=n+l|0)>>>0>>0?a+1|0:a)+YA|0,K=b=n+A0|0,b=a=b>>>0>>0?a+1|0:a,l=_,fA=h,_=(n=G(n^HA,p^j0,32))+sA|0,a=(sA=y)+$|0,h=_,p=G(p=_^l,(l=_>>>0>>0?a+1|0:a)^fA,40),a=(VA=y)+b|0,b=_=p+K|0,n=G(_^n,sA^($=_>>>0

>>0?a+1|0:a),48),a=l+(fA=y)|0,K=_=n+h|0,sA=a=_>>>0>>0?a+1|0:a,a=a+iA|0,iA=a=(l=_+vA|0)>>>0<_>>>0?a+1|0:a,h=G(l^uA,a^D,40),a=(HA=y)+aA|0,aA=_=h+_0|0,uA=a=_>>>0>>0?a+1|0:a,_=s,D=B,B=n,s=G(q^J,d^c0,48),a=z+(_0=y)|0,q=s,M=a=(n=M+s|0)>>>0>>0?a+1|0:a,a=G(n^x,i2^a,1),z=s=y,x=a,a=v+e2|0,a=((v=nA+p0|0)>>>0>>0?a+1|0:a)+s|0,v=a=(s=v+x|0)>>>0>>0?a+1|0:a,B=G(s^B,a^fA,32),a=(nA=y)+D|0,x=G((_=B+_|0)^x,z^(D=_>>>0>>0?a+1|0:a),40),a=v+(J=y)|0,a=W0+((v=s)>>>0>(s=s+x|0)>>>0?a+1|0:a)|0,fA=a=(v=s+O|0)>>>0>>0?a+1|0:a,s=G(B^v,nA^a,48),a=D+(c0=y)|0,nA=s,z=a=(D=_+s|0)>>>0<_>>>0?a+1|0:a,_=G(D^x,J^a,1),a=(x=y)+uA|0,a=N0+((s=_+aA|0)>>>0<_>>>0?a+1|0:a)|0,a=L0+(B=(s=s+cA|0)>>>0>>0?a+1|0:a)|0,F0=J=s+XA|0,J=a=J>>>0>>0?a+1|0:a,d=_,mA=s,_=G(p^K,sA^VA,1),a=(p=y)+qA|0,a=r2+((s=_+u|0)>>>0<_>>>0?a+1|0:a)|0,a=C2+(K=(s=s+s0|0)>>>0>>0?a+1|0:a)|0,u=sA=s+rA|0,sA=a=sA>>>0>>0?a+1|0:a,qA=_,a=G(s^q,K^_0,32),_0=_=y,s=a,a=_A+EA|0,V=_=Q+V|0,q=a=_>>>0>>0?a+1|0:a,a=_0+a|0,_A=a=(Q=_+s|0)>>>0<_>>>0?a+1|0:a,p=G(Q^qA,a^p,40),a=(EA=y)+sA|0,K=_=p+u|0,qA=G(_^s,_0^(sA=_>>>0

>>0?a+1|0:a),48),a=G(qA^mA,(_0=y)^B,32),VA=_=y,u=a,B=_,s=E0,_=G(V^hA,q^wA,1),a=$+(q=y)|0,a=((V=b)>>>0>(b=_+b|0)>>>0?a+1|0:a)+u0|0,a=N0+(b=(s=s+b|0)>>>0>>0?a+1|0:a)|0,V=$=s+cA|0,$=a=$>>>0>>0?a+1|0:a,s=G(s^FA,b^D0,32),a=M+(hA=y)|0,M=s,a=(s=n+s|0)>>>0>>0?a+1|0:a,n=q,q=a,n=G(_^s,n^a,40),a=(wA=y)+$|0,b=_=n+V|0,_=G(_^M,hA^($=_>>>0>>0?a+1|0:a),48),a=q+(mA=y)|0,q=_,V=_=s+_|0,hA=a=_>>>0>>0?a+1|0:a,a=a+B|0,a=(M=_+u|0)>>>0<_>>>0?a+1|0:a,_=M^d,d=a,x=G(_,a^x,40),a=(D0=y)+J|0,J=_=x+F0|0,FA=_>>>0>>0?a+1|0:a,_=G(vA^aA,uA^I0,48),a=iA+(I0=y)|0,vA=_,a=(_=l+_|0)>>>0>>0?a+1|0:a,l=_,iA=a,a=G(_^h,a^HA,1),HA=_=y,B=a,a=sA+T0|0,a=((s=K+H|0)>>>0>>0?a+1|0:a)+_|0,a=W0+(s=(_=s+B|0)>>>0>>0?a+1|0:a)|0,K=h=_+O|0,h=a=h>>>0>>0?a+1|0:a,_=G(_^q,s^mA,32),a=z+(sA=y)|0,q=_,D=a=(s=D+_|0)>>>0>>0?a+1|0:a,B=G(s^B,HA^a,40),a=(HA=y)+h|0,K=_=B+K|0,_=G(h=_^q,sA^(q=_>>>0>>0?a+1|0:a),48),a=D+(F0=y)|0,D=_,z=a=(h=s+_|0)>>>0>>0?a+1|0:a,_=G(h^B,HA^a,1),a=(sA=y)+FA|0,a=V0+((s=_+J|0)>>>0<_>>>0?a+1|0:a)|0,a=(B=(s=s+w0|0)>>>0>>0?a+1|0:a)+k0|0,j0=HA=s+h0|0,HA=a=HA>>>0>>0?a+1|0:a,aA=_,uA=s,mA=B,_=G(n^V,wA^hA,1),a=r2+(B=y)|0,a=fA+((s=_+s0|0)>>>0>>0?a+1|0:a)|0,a=e2+(n=(s=s+v|0)>>>0>>0?a+1|0:a)|0,hA=v=s+p0|0,v=a=v>>>0>>0?a+1|0:a,fA=_,V=B,a=G(s^vA,n^I0,32),vA=_=y,n=a,s=_,a=_A+_0|0,a=(_=Q+qA|0)>>>0>>0?a+1|0:a,Q=_,_A=a,a=a+s|0,a=(B=_+n|0)>>>0<_>>>0?a+1|0:a,_=B^fA,fA=a,_=G(_,a^V,40),a=(a=v)+(v=y)|0,V=s=_+hA|0,hA=a=s>>>0<_>>>0?a+1|0:a,vA=G(s^n,vA^a,48),a=G(vA^uA,(a=mA)^(mA=y),32),wA=s=y,qA=a,s=G(Q^p,_A^EA,1),a=(Q=y)+u0|0,a=$+((n=s+E0|0)>>>0>>0?a+1|0:a)|0,a=t+(p=(n=n+b|0)>>>0>>0?a+1|0:a)|0,EA=b=n+x0|0,b=a=b>>>0>>0?a+1|0:a,$=s,_A=Q,n=G(n^nA,p^c0,32),a=(nA=y)+iA|0,Q=s=n+l|0,s=(p=G(s^$,(l=s>>>0>>0?a+1|0:a)^_A,40))+EA|0,a=(EA=y)+b|0,$=s,s=G(s^n,nA^(_A=s>>>0

>>0?a+1|0:a),48),a=l+(_0=y)|0,nA=s,iA=s=Q+s|0,uA=a=s>>>0>>0?a+1|0:a,a=wA+a|0,a=(n=s+qA|0)>>>0>>0?a+1|0:a,s=sA,sA=a,Q=G(n^aA,s^a,40),a=(I0=y)+HA|0,b=s=Q+j0|0,a=G(s^qA,wA^(HA=s>>>0>>0?a+1|0:a),48),wA=s=y,qA=a,s=_,a=fA+mA|0,fA=_=B+vA|0,vA=a=_>>>0>>0?a+1|0:a,a=G(_^s,a^v,1),B=s=y,_=a,a=_A+r|0,a=((l=$+e|0)>>>0>>0?a+1|0:a)+s|0,a=f0+(l=(s=_+l|0)>>>0>>0?a+1|0:a)|0,mA=v=s+$A|0,v=a=v>>>0<$A>>>0?a+1|0:a,$=_,_A=B,_=G(J^u,FA^VA,48),a=d+(VA=y)|0,J=_,a=(_=M+_|0)>>>0>>0?a+1|0:a,M=_,s=G(s^D,l^F0,32),d=a,a=a+(u=y)|0,B=_=s+_|0,l=G(_^$,(D=_>>>0>>0?a+1|0:a)^_A,40),a=(FA=y)+v|0,v=_=l+mA|0,_=G(_^s,u^($=_>>>0>>0?a+1|0:a),48),a=D+(c0=y)|0,_A=_,u=a=(D=B+_|0)>>>0>>0?a+1|0:a,_=G(l^D,FA^a,1),a=W0+(mA=y)|0,FA=_,F0=_=O+_|0,B=a=_>>>0>>0?a+1|0:a,_=G(x^M,d^D0,1),a=(l=y)+hA|0,a=C2+((s=_+V|0)>>>0<_>>>0?a+1|0:a)|0,a=MA+(M=(s=s+rA|0)>>>0>>0?a+1|0:a)|0,d=x=s+g0|0,x=a=x>>>0>>0?a+1|0:a,V=l,s=G(s^nA,M^_0,32),a=z+(_0=y)|0,hA=s,a=(l=h+s|0)>>>0>>0?a+1|0:a,h=V,V=a,M=G(_^l,h^a,40),a=(D0=y)+x|0,nA=_=M+d|0,a=(z=_>>>0>>0?a+1|0:a)+B|0,x=a=(B=_+F0|0)>>>0<_>>>0?a+1|0:a,d=a=G(B^qA,a^wA,32),aA=_=y,_=G(p^iA,uA^EA,1),a=(h=y)+q|0,a=i0+((s=_+K|0)>>>0<_>>>0?a+1|0:a)|0,a=(p=(s=g+s|0)>>>0>>0?a+1|0:a)+YA|0,uA=q=s+A0|0,q=a=q>>>0>>0?a+1|0:a,K=_,iA=h,s=G(s^J,p^VA,32),a=(J=y)+vA|0,h=_=s+fA|0,_=(p=G(_^K,(fA=_>>>0>>0?a+1|0:a)^iA,40))+uA|0,a=(uA=y)+q|0,q=_,_=G(_^s,J^(K=_>>>0

>>0?a+1|0:a),48),a=fA+(VA=y)|0,fA=_,J=a=(_=h+_|0)>>>0>>0?a+1|0:a,a=a+aA|0,vA=a=(h=_)>>>0>(_=_+d|0)>>>0?a+1|0:a,s=G(_^FA,mA^a,40),a=x+(mA=y)|0,iA=s,a=r+((s=B+s|0)>>>0>>0?a+1|0:a)|0,FA=s=s+e|0,B=s^d,d=a=s>>>0>>0?a+1|0:a,s=G(B,aA^a,48),a=vA+(aA=y)|0,vA=a=(x=_+s|0)>>>0<_>>>0?a+1|0:a,_=a=G(x^iA,mA^a,1),iA=B=y,B=G(h^p,J^uA,1),a=$+(p=y)|0,a=C2+((h=B+v|0)>>>0>>0?a+1|0:a)|0,a=N0+(v=(h=h+rA|0)>>>0>>0?a+1|0:a)|0,mA=$=h+cA|0,$=a=$>>>0>>0?a+1|0:a,J=B,uA=p,a=sA+wA|0,a=(B=n+qA|0)>>>0>>0?a+1|0:a,sA=B,hA=G(nA^hA,z^_0,48),p=G(h^hA,v^(_0=y),32),nA=a,a=a+(F0=y)|0,v=B=p+B|0,B=G(B^J,(z=B>>>0

>>0?a+1|0:a)^uA,40),a=(J=y)+$|0,uA=a=(n=B+mA|0)>>>0>>0?a+1|0:a,a=a+iA|0,a=t+((qA=n)>>>0>(n=_+n|0)>>>0?a+1|0:a)|0,a=(h=(n=n+x0|0)>>>0>>0?a+1|0:a)+u0|0,j0=$=n+E0|0,mA=a=$>>>0>>0?a+1|0:a,EA=_,wA=n,a=G(Q^sA,nA^I0,1),Q=n=y,_=a,a=K+r2|0,a=(($=q+s0|0)>>>0>>0?a+1|0:a)+n|0,a=f0+($=(n=_+$|0)>>>0<$>>>0?a+1|0:a)|0,nA=q=n+$A|0,q=a=q>>>0<$A>>>0?a+1|0:a,K=_,a=G(n^_A,$^c0,32),sA=_=y,n=a,$=_,a=V+_0|0,V=_=l+hA|0,_A=a=_>>>0>>0?a+1|0:a,a=a+$|0,a=(l=_+n|0)>>>0<_>>>0?a+1|0:a,_=l^K,K=a,$=G(_,a^Q,40),a=(_0=y)+q|0,hA=G(q=(_=$+nA|0)^n,sA^(n=_>>>0<$>>>0?a+1|0:a),48),a=G(a=hA^wA,(wA=y)^h,32),I0=h=y,nA=a,q=h,h=G(M^V,_A^D0,1),a=MA+(M=y)|0,a=HA+((Q=h+g0|0)>>>0>>0?a+1|0:a)|0,a=V0+(b=(Q=Q+b|0)>>>0>>0?a+1|0:a)|0,_A=V=Q+w0|0,V=a=V>>>0>>0?a+1|0:a,Q=G(Q^fA,b^VA,32),a=u+(sA=y)|0,fA=Q,D=a=(Q=D+Q|0)>>>0>>0?a+1|0:a,b=G(h^Q,a^M,40),a=(VA=y)+V|0,M=h=b+_A|0,h=G(V=h^fA,sA^(fA=h>>>0>>0?a+1|0:a),48),a=D+(c0=y)|0,V=h,_A=h=Q+h|0,sA=a=h>>>0>>0?a+1|0:a,a=a+q|0,a=(Q=h+nA|0)>>>0>>0?a+1|0:a,h=iA,iA=a,D=G(Q^EA,h^a,40),a=(HA=y)+mA|0,q=h=D+j0|0,h=G(mA=h^nA,I0^(nA=h>>>0>>0?a+1|0:a),48),a=iA+(I0=y)|0,iA=h,Q=a=(h=Q+h|0)>>>0>>0?a+1|0:a,HA=a=G(h^D,HA^a,1),D0=a,u=D=y,D=n,n=B,B=G(p^qA,uA^F0,48),a=z+(F0=y)|0,z=B,a=(B=v+B|0)>>>0>>0?a+1|0:a,v=_,_=n^B,n=a,_=G(_,a^J,1),a=(J=y)+D|0,a=e2+(_>>>0>(p=v+_|0)>>>0?a+1|0:a)|0,a=k0+(v=(p=p+p0|0)>>>0>>0?a+1|0:a)|0,qA=D=p+h0|0,D=a=D>>>0>>0?a+1|0:a,p=G(p^V,v^c0,32),a=vA+(uA=y)|0,V=a=(v=p+x|0)>>>0>>0?a+1|0:a,x=G(_^v,J^a,40),a=(c0=y)+D|0,J=_=x+qA|0,p=G(_^p,uA^(vA=_>>>0>>0?a+1|0:a),48),a=V+(qA=y)|0,uA=_=p+v|0,V=_,mA=a=_>>>0>>0?a+1|0:a,v=B,D=n,a=K+wA|0,a=(_=l+hA|0)>>>0>>0?a+1|0:a,l=_,_^=$,$=a,a=G(_,_0^a,1),EA=_=y,K=a,n=a,a=fA+YA|0,a=((B=M+A0|0)>>>0>>0?a+1|0:a)+_|0,M=a=(_=B)>>>0>(B=n+B|0)>>>0?a+1|0:a,n=G(s^B,a^aA,32),a=(a=D)+(D=y)|0,hA=_=n+v|0,s=G(s=_^K,EA^(K=_>>>0>>0?a+1|0:a),40),a=M+(aA=y)|0,a=T0+((_=s+B|0)>>>0>>0?a+1|0:a)|0,EA=a=(v=_+H|0)>>>0>>0?a+1|0:a,D=G(n^v,D^a,48),j0=a=y,_=G(b^_A,sA^VA,1),a=(n=y)+d|0,a=L0+((B=_+FA|0)>>>0<_>>>0?a+1|0:a)|0,a=i0+(b=(B=B+XA|0)>>>0>>0?a+1|0:a)|0,d=M=g+B|0,_A=a=M>>>0>>0?a+1|0:a,sA=_,M=G(B^z,b^F0,32),a=(VA=y)+$|0,$=_=M+l|0,B=G(_^sA,(z=_>>>0>>0?a+1|0:a)^n,40),a=(a=_A)+(_A=y)|0,sA=_=B+d|0,d=a=_>>>0>>0?a+1|0:a,n=a,a=i0+u|0,a=((b=g+HA|0)>>>0>>0?a+1|0:a)+n|0,fA=a=(n=_+b|0)>>>0>>0?a+1|0:a,_=G(n^D,j0^a,32),a=(HA=y)+mA|0,l=G((b=_+V|0)^D0,(a=b>>>0<_>>>0?a+1|0:a)^u,40),u=a,a=k0+(V=y)|0,a=fA+((FA=l+h0|0)>>>0>>0?a+1|0:a)|0,a=(fA=n+FA|0)>>>0>>0?a+1|0:a,n=HA,HA=a,n=G(_^fA,n^a,48),a=(a=u)+(u=y)|0,_=l^(b=n+b|0),l=a=b>>>0>>0?a+1|0:a,FA=a=G(_,a^V,1),D0=a,wA=_=y,V=h,_0=Q,h=B,B=G(M^sA,d^VA,48),a=z+(sA=y)|0,M=_=B+$|0,$=a=_>>>0<$>>>0?a+1|0:a,h=G(_^h,a^_A,1),a=(d=y)+e2|0,a=EA+((_=h+p0|0)>>>0>>0?a+1|0:a)|0,v=a=(Q=_+v|0)>>>0>>0?a+1|0:a,_=G(Q^p,a^qA,32),a=(_A=y)+_0|0,V=p=_+V|0,z=a=p>>>0<_>>>0?a+1|0:a,h=G(h^p,a^d,40),a=N0+(F0=y)|0,d=h,a=v+((h=cA+h|0)>>>0>>0?a+1|0:a)|0,Q=a=(h=h+Q|0)>>>0>>0?a+1|0:a,p=G(_^h,a^_A,48),a=(a=z)+(z=y)|0,qA=_=p+V|0,_A=_,EA=a=_>>>0

>>0?a+1|0:a,a=K+j0|0,V=(_=D+hA|0)^s,s=a=_>>>0>>0?a+1|0:a,a=G(V,a^aA,1),aA=v=y,V=a,a=vA+f0|0,a=((D=J+$A|0)>>>0<$A>>>0?a+1|0:a)+v|0,K=a=(K=D)>>>0>(D=D+V|0)>>>0?a+1|0:a,hA=v=G(D^iA,I0^a,32),J=a=y,a=a+$|0,vA=v=v+M|0,iA=a=hA>>>0>v>>>0?a+1|0:a,v=G(v^V,aA^a,40),a=u0+(aA=y)|0,a=K+((M=v+E0|0)>>>0>>0?a+1|0:a)|0,M=a=(V=D)>>>0>(D=D+M|0)>>>0?a+1|0:a,V=G(D^hA,a^J,48),I0=a=y,$=a,x=G(x^uA,mA^c0,1),K=a=y,hA=B,a=a+YA|0,a=nA+((B=x+A0|0)>>>0>>0?a+1|0:a)|0,a=(B=B+q|0)>>>0>>0?a+1|0:a,q=B^hA,hA=a,q=G(q,a^sA,32),a=(c0=y)+s|0,nA=_=q+_|0,s=G(_^x,(s=K)^(K=_>>>0>>0?a+1|0:a),40),a=L0+(J=y)|0,a=hA+((_=s+XA|0)>>>0>>0?a+1|0:a)|0,hA=_=_+B|0,sA=a=_>>>0>>0?a+1|0:a,B=a,a=wA+C2|0,a=((x=FA+rA|0)>>>0>>0?a+1|0:a)+B|0,FA=a=(B=_+x|0)>>>0>>0?a+1|0:a,_=G(B^V,a^$,32),a=(uA=y)+EA|0,$=G((x=_+_A|0)^D0,(a=x>>>0<_>>>0?a+1|0:a)^wA,40),mA=_A=y,wA=a,a=_A+V0|0,a=FA+((_A=$+w0|0)>>>0>>0?a+1|0:a)|0,FA=a=(_A=B+_A|0)>>>0>>0?a+1|0:a,B=G(_^_A,a^uA,48),a=(uA=y)+wA|0,_=(x=B+x|0)^$,$=a=x>>>0>>0?a+1|0:a,mA=a=G(_,a^mA,1),wA=_=y,_0=b,VA=p,p=s,s=G(q^hA,sA^c0,48),a=(q=y)+K|0,K=_=s+nA|0,hA=a=_>>>0>>0?a+1|0:a,p=G(_^p,a^J,1),a=(J=y)+W0|0,a=((_=p+O|0)>>>0

>>0?a+1|0:a)+M|0,D=a=(b=_+D|0)>>>0<_>>>0?a+1|0:a,_=G(b^VA,a^z,32),a=(M=y)+l|0,nA=l=_+_0|0,z=a=l>>>0<_>>>0?a+1|0:a,p=G(p^l,a^J,40),a=t+(VA=y)|0,J=p,a=D+((p=x0+p|0)>>>0>>0?a+1|0:a)|0,sA=a=(l=p+b|0)>>>0>>0?a+1|0:a,p=G(_^l,a^M,48),a=(a=z)+(z=y)|0,nA=_=p+nA|0,_0=a=_>>>0

>>0?a+1|0:a,D=n,b=h,a=iA+I0|0,n=a=(_=V+vA|0)>>>0>>0?a+1|0:a,h=G(_^v,a^aA,1),a=(v=y)+MA|0,a=((M=h+g0|0)>>>0>>0?a+1|0:a)+Q|0,Q=G(D^(b=b+M|0),(a=b>>>0>>0?a+1|0:a)^u,32),M=a,V=h,a=(D=y)+hA|0,a=(h=Q+K|0)>>>0>>0?a+1|0:a,K=h,h^=V,V=a,h=G(h,a^v,40),a=r+(hA=y)|0,a=((v=h+e|0)>>>0>>0?a+1|0:a)+M|0,vA=a=(M=v)>>>0>(v=v+b|0)>>>0?a+1|0:a,D=G(Q^v,a^D,48),I0=a=y,b=a,Q=G(qA^d,EA^F0,1),iA=a=y,d=n,a=a+T0|0,a=HA+((n=Q+H|0)>>>0>>0?a+1|0:a)|0,M=q,q=a=(n=n+fA|0)>>>0>>0?a+1|0:a,M=G(s^n,M^a,32),a=(c0=y)+d|0,fA=_=M+_|0,s=G(_^Q,(s=iA)^(iA=_>>>0>>0?a+1|0:a),40),a=r2+(d=y)|0,a=q+((_=s+s0|0)>>>0>>0?a+1|0:a)|0,HA=_=_+n|0,qA=a=_>>>0>>0?a+1|0:a,n=a,a=wA+f0|0,a=((Q=$A+mA|0)>>>0<$A>>>0?a+1|0:a)+n|0,q=a=(n=_+Q|0)>>>0>>0?a+1|0:a,_=G(n^D,a^b,32),a=(u=y)+_0|0,b=G((Q=_+nA|0)^mA,(a=Q>>>0<_>>>0?a+1|0:a)^wA,40),mA=a,a=YA+(aA=y)|0,a=q+((EA=b+A0|0)>>>0>>0?a+1|0:a)|0,a=(q=n+EA|0)>>>0>>0?a+1|0:a,n=u,u=a,n=G(_^q,n^a,48),a=(a=mA)+(mA=y)|0,_=(Q=n+Q|0)^b,b=a=Q>>>0>>0?a+1|0:a,aA=a=G(_,a^aA,1),EA=_=y,wA=p,p=s,s=G(M^HA,qA^c0,48),a=(a=iA)+(iA=y)|0,fA=_=s+fA|0,M=d,d=a=_>>>0>>0?a+1|0:a,p=G(_^p,M^a,1),a=(HA=y)+V0|0,a=vA+((_=p+w0|0)>>>0

>>0?a+1|0:a)|0,M=v,v=_+v|0,_=z,z=a=M>>>0>v>>>0?a+1|0:a,_=G(v^wA,_^a,32),a=(a=$)+($=y)|0,vA=a=(M=_+x|0)>>>0<_>>>0?a+1|0:a,x=M,p=G(p^M,a^HA,40),a=T0+(c0=y)|0,HA=p,a=z+((p=H+p|0)>>>0>>0?a+1|0:a)|0,z=a=(M=p+v|0)>>>0>>0?a+1|0:a,p=G(_^M,a^$,48),a=(a=vA)+(vA=y)|0,qA=_=p+x|0,wA=a=_>>>0

>>0?a+1|0:a,x=B,a=V+I0|0,B=a=(_=D+K|0)>>>0>>0?a+1|0:a,h=G(_^h,a^hA,1),a=k0+(D=y)|0,a=sA+((v=h+h0|0)>>>0>>0?a+1|0:a)|0,V=(v=l+v|0)^x,x=a=v>>>0>>0?a+1|0:a,l=G(V,a^uA,32),$=a=y,V=h,a=a+d|0,a=(h=l+fA|0)>>>0>>0?a+1|0:a,K=h,h^=V,V=a,h=G(h,a^D,40),a=r+(hA=y)|0,a=x+((D=h+e|0)>>>0>>0?a+1|0:a)|0,sA=a=(D=v+D|0)>>>0>>0?a+1|0:a,x=G(l^D,a^$,48),I0=a=y,v=a,l=G(J^nA,VA^_0,1),fA=a=y,nA=B,a=a+t|0,a=FA+((B=l+x0|0)>>>0>>0?a+1|0:a)|0,_A=a=(B=B+_A|0)>>>0<_A>>>0?a+1|0:a,$=G(s^B,a^iA,32),a=(D0=y)+nA|0,nA=_=$+_|0,s=G(_^l,(J=_>>>0<$>>>0?a+1|0:a)^fA,40),a=i0+(iA=y)|0,a=_A+((_=g+s|0)>>>0>>0?a+1|0:a)|0,_A=_=_+B|0,d=a=_>>>0>>0?a+1|0:a,B=a,a=EA+L0|0,a=((l=aA+XA|0)>>>0>>0?a+1|0:a)+B|0,fA=a=(B=_+l|0)>>>0>>0?a+1|0:a,_=G(B^x,a^v,32),a=(FA=y)+wA|0,v=G((l=_+qA|0)^aA,(a=l>>>0<_>>>0?a+1|0:a)^EA,40),uA=a,a=e2+(aA=y)|0,a=fA+((EA=v+p0|0)>>>0>>0?a+1|0:a)|0,a=(fA=B+EA|0)>>>0>>0?a+1|0:a,B=FA,FA=a,B=G(_^fA,B^a,48),a=(a=uA)+(uA=y)|0,_=(l=B+l|0)^v,v=a=l>>>0>>0?a+1|0:a,aA=a=G(_,a^aA,1),F0=a,EA=_=y,_0=Q,VA=p,Q=s,s=G($^_A,d^D0,48),a=($=y)+J|0,_A=_=s+nA|0,nA=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^iA,1),a=(iA=y)+u0|0,a=sA+((_=Q+E0|0)>>>0>>0?a+1|0:a)|0,D=a=(p=_+D|0)>>>0>>0?a+1|0:a,_=G(p^VA,a^vA,32),a=(J=y)+b|0,vA=a=(b=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^b,a^iA,40),a=W0+(D0=y)|0,sA=Q,a=D+((Q=O+Q|0)>>>0>>0?a+1|0:a)|0,D=Q+p|0,Q=J,J=a=D>>>0

>>0?a+1|0:a,Q=G(_^D,Q^a,48),a=(a=vA)+(vA=y)|0,iA=_=Q+b|0,d=a=_>>>0>>0?a+1|0:a,p=n,a=V+I0|0,n=a=(_=x+K|0)>>>0>>0?a+1|0:a,h=G(_^h,a^hA,1),a=(x=y)+r2|0,a=z+((b=h+s0|0)>>>0>>0?a+1|0:a)|0,p=G(p^(b=b+M|0),(a=b>>>0>>0?a+1|0:a)^mA,32),V=M=y,M=a,K=h,a=V+nA|0,a=(h=p+_A|0)>>>0

>>0?a+1|0:a,_A=h,h^=K,K=a,h=G(h,a^x,40),a=N0+(hA=y)|0,a=((x=h+cA|0)>>>0>>0?a+1|0:a)+M|0,z=V,V=a=(M=b+x|0)>>>0>>0?a+1|0:a,x=G(p^M,z^a,48),I0=a=y,b=a,p=G(qA^HA,wA^c0,1),nA=a=y,z=n,a=a+MA|0,a=u+((n=p+g0|0)>>>0>>0?a+1|0:a)|0,q=a=(n=n+q|0)>>>0>>0?a+1|0:a,$=G(s^n,a^$,32),a=(c0=y)+z|0,z=_=$+_|0,s=G(_^p,(s=nA)^(nA=_>>>0<$>>>0?a+1|0:a),40),a=C2+(HA=y)|0,a=q+((_=s+rA|0)>>>0>>0?a+1|0:a)|0,qA=_=_+n|0,u=a=_>>>0>>0?a+1|0:a,n=a,a=EA+r|0,a=((p=aA+e|0)>>>0>>0?a+1|0:a)+n|0,q=a=(n=_+p|0)>>>0

>>0?a+1|0:a,_=G(n^x,a^b,32),a=(aA=y)+d|0,b=G((p=_+iA|0)^F0,(a=p>>>0<_>>>0?a+1|0:a)^EA,40),EA=a,a=V0+(mA=y)|0,a=q+((wA=b+w0|0)>>>0>>0?a+1|0:a)|0,a=(q=n+wA|0)>>>0>>0?a+1|0:a,n=aA,aA=a,n=G(_^q,n^a,48),a=(a=EA)+(EA=y)|0,_=(p=n+p|0)^b,b=a=p>>>0>>0?a+1|0:a,mA=a=G(_,a^mA,1),wA=_=y,_0=l,VA=Q,Q=s,s=G($^qA,u^c0,48),a=($=y)+nA|0,nA=_=s+z|0,z=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^HA,1),a=(HA=y)+W0|0,a=V+((_=Q+O|0)>>>0>>0?a+1|0:a)|0,M=a=(l=_+M|0)>>>0>>0?a+1|0:a,_=G(l^VA,a^vA,32),a=(V=y)+v|0,vA=a=(v=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^v,a^HA,40),a=MA+(c0=y)|0,HA=Q,a=M+((Q=g0+Q|0)>>>0>>0?a+1|0:a)|0,M=Q+l|0,Q=V,V=a=M>>>0>>0?a+1|0:a,Q=G(_^M,Q^a,48),a=(a=vA)+(vA=y)|0,qA=_=Q+v|0,u=a=_>>>0>>0?a+1|0:a,l=B,a=K+I0|0,B=a=(_=x+_A|0)>>>0>>0?a+1|0:a,h=G(_^h,a^hA,1),a=C2+(x=y)|0,a=J+((v=h+rA|0)>>>0>>0?a+1|0:a)|0,D=a=(v=v+D|0)>>>0>>0?a+1|0:a,l=G(l^v,a^uA,32),_A=a=y,K=h,a=a+z|0,a=(h=l+nA|0)>>>0>>0?a+1|0:a,hA=h,h^=K,K=a,h=G(h,a^x,40),a=L0+(nA=y)|0,a=D+((x=h+XA|0)>>>0>>0?a+1|0:a)|0,a=(D=v+x|0)>>>0>>0?a+1|0:a,v=_A,_A=a,x=G(l^D,v^a,48),I0=a=y,v=a,l=G(sA^iA,d^D0,1),z=a=y,J=B,a=a+i0|0,a=FA+((B=g+l|0)>>>0>>0?a+1|0:a)|0,fA=a=(B=B+fA|0)>>>0>>0?a+1|0:a,$=G(s^B,a^$,32),a=(D0=y)+J|0,J=_=$+_|0,s=G(_^l,(s=z)^(z=_>>>0<$>>>0?a+1|0:a),40),a=T0+(sA=y)|0,a=fA+((_=s+H|0)>>>0>>0?a+1|0:a)|0,iA=_=_+B|0,d=a=_>>>0>>0?a+1|0:a,B=a,a=wA+k0|0,a=((l=mA+h0|0)>>>0>>0?a+1|0:a)+B|0,fA=a=(B=_+l|0)>>>0>>0?a+1|0:a,_=G(B^x,a^v,32),a=(FA=y)+u|0,v=G((l=_+qA|0)^mA,(a=l>>>0<_>>>0?a+1|0:a)^wA,40),mA=a,a=t+(uA=y)|0,a=fA+((wA=v+x0|0)>>>0>>0?a+1|0:a)|0,a=(fA=B+wA|0)>>>0>>0?a+1|0:a,B=FA,FA=a,B=G(_^fA,B^a,48),a=(a=mA)+(mA=y)|0,_=(l=B+l|0)^v,v=a=l>>>0>>0?a+1|0:a,uA=a=G(_,a^uA,1),wA=_=y,_0=p,VA=Q,Q=s,s=G($^iA,d^D0,48),a=($=y)+z|0,z=_=s+J|0,J=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^sA,1),a=(sA=y)+f0|0,a=_A+((_=Q+$A|0)>>>0>>0?a+1|0:a)|0,D=a=(p=_+D|0)>>>0>>0?a+1|0:a,_=G(p^VA,a^vA,32),a=(_A=y)+b|0,vA=a=(b=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^b,a^sA,40),a=r2+(D0=y)|0,sA=Q,a=D+((Q=s0+Q|0)>>>0>>0?a+1|0:a)|0,D=Q+p|0,Q=_A,_A=a=D>>>0

>>0?a+1|0:a,Q=G(_^D,Q^a,48),a=(a=vA)+(vA=y)|0,iA=_=Q+b|0,d=a=_>>>0>>0?a+1|0:a,p=n,a=K+I0|0,n=a=(_=x+hA|0)>>>0>>0?a+1|0:a,h=G(_^h,a^nA,1),a=(x=y)+N0|0,a=V+((b=h+cA|0)>>>0>>0?a+1|0:a)|0,M=a=(b=b+M|0)>>>0>>0?a+1|0:a,p=G(p^b,a^EA,32),V=a=y,K=h,a=a+J|0,a=(h=p+z|0)>>>0

>>0?a+1|0:a,hA=h,h^=K,K=a,h=G(h,a^x,40),a=u0+(nA=y)|0,a=M+((x=h+E0|0)>>>0>>0?a+1|0:a)|0,z=V,V=a=(M=b+x|0)>>>0>>0?a+1|0:a,x=G(p^M,z^a,48),I0=a=y,b=a,p=G(qA^HA,u^c0,1),z=a=y,J=n,a=a+YA|0,a=aA+((n=p+A0|0)>>>0>>0?a+1|0:a)|0,q=a=(n=n+q|0)>>>0>>0?a+1|0:a,$=G(s^n,a^$,32),a=(c0=y)+J|0,J=_=$+_|0,s=G(_^p,(s=z)^(z=_>>>0<$>>>0?a+1|0:a),40),a=e2+(HA=y)|0,a=q+((_=s+p0|0)>>>0>>0?a+1|0:a)|0,qA=_=_+n|0,u=a=_>>>0>>0?a+1|0:a,n=a,a=wA+t|0,a=((p=uA+x0|0)>>>0>>0?a+1|0:a)+n|0,q=a=(n=_+p|0)>>>0

>>0?a+1|0:a,_=G(n^x,a^b,32),a=(aA=y)+d|0,b=G((p=_+iA|0)^uA,(a=p>>>0<_>>>0?a+1|0:a)^wA,40),EA=a,a=C2+(uA=y)|0,a=q+((wA=b+rA|0)>>>0>>0?a+1|0:a)|0,a=(q=n+wA|0)>>>0>>0?a+1|0:a,n=aA,aA=a,n=G(_^q,n^a,48),a=(a=EA)+(EA=y)|0,_=(p=n+p|0)^b,b=a=p>>>0>>0?a+1|0:a,uA=a=G(_,a^uA,1),wA=_=y,_0=l,VA=Q,Q=s,s=G($^qA,u^c0,48),a=($=y)+z|0,z=_=s+J|0,J=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^HA,1),a=(HA=y)+YA|0,a=V+((_=Q+A0|0)>>>0>>0?a+1|0:a)|0,M=a=(l=_+M|0)>>>0>>0?a+1|0:a,_=G(l^VA,a^vA,32),a=(V=y)+v|0,vA=a=(v=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^v,a^HA,40),a=u0+(c0=y)|0,HA=Q,a=M+((Q=E0+Q|0)>>>0>>0?a+1|0:a)|0,M=Q+l|0,Q=V,V=a=M>>>0>>0?a+1|0:a,Q=G(_^M,Q^a,48),a=(a=vA)+(vA=y)|0,qA=_=Q+v|0,u=a=_>>>0>>0?a+1|0:a,l=B,a=K+I0|0,B=a=(_=x+hA|0)>>>0>>0?a+1|0:a,h=G(_^h,a^nA,1),a=N0+(x=y)|0,a=_A+((v=h+cA|0)>>>0>>0?a+1|0:a)|0,D=a=(v=v+D|0)>>>0>>0?a+1|0:a,l=G(l^v,a^mA,32),_A=a=y,K=h,a=a+J|0,a=(h=l+z|0)>>>0>>0?a+1|0:a,hA=h,h^=K,K=a,h=G(h,a^x,40),a=r2+(nA=y)|0,a=D+((x=h+s0|0)>>>0>>0?a+1|0:a)|0,a=(D=v+x|0)>>>0>>0?a+1|0:a,v=_A,_A=a,x=G(l^D,v^a,48),I0=a=y,v=a,l=G(sA^iA,d^D0,1),z=a=y,J=B,a=a+MA|0,a=FA+((B=l+g0|0)>>>0>>0?a+1|0:a)|0,fA=a=(B=B+fA|0)>>>0>>0?a+1|0:a,$=G(s^B,a^$,32),a=(D0=y)+J|0,J=_=$+_|0,s=G(_^l,(s=z)^(z=_>>>0<$>>>0?a+1|0:a),40),a=e2+(sA=y)|0,a=fA+((_=s+p0|0)>>>0>>0?a+1|0:a)|0,iA=_=_+B|0,d=a=_>>>0>>0?a+1|0:a,B=a,a=wA+T0|0,a=((l=uA+H|0)>>>0>>0?a+1|0:a)+B|0,fA=a=(B=_+l|0)>>>0>>0?a+1|0:a,_=G(B^x,a^v,32),a=(FA=y)+u|0,v=G((l=_+qA|0)^uA,(a=l>>>0<_>>>0?a+1|0:a)^wA,40),mA=a,a=i0+(uA=y)|0,a=fA+((wA=g+v|0)>>>0>>0?a+1|0:a)|0,a=(fA=B+wA|0)>>>0>>0?a+1|0:a,B=FA,FA=a,B=G(_^fA,B^a,48),a=(a=mA)+(mA=y)|0,_=(l=B+l|0)^v,v=a=l>>>0>>0?a+1|0:a,uA=a=G(_,a^uA,1),wA=_=y,_0=p,VA=Q,Q=s,s=G($^iA,d^D0,48),a=($=y)+z|0,z=_=s+J|0,J=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^sA,1),a=(sA=y)+L0|0,a=_A+((_=Q+XA|0)>>>0>>0?a+1|0:a)|0,D=a=(p=_+D|0)>>>0>>0?a+1|0:a,_=G(p^VA,a^vA,32),a=(_A=y)+b|0,vA=a=(b=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^b,a^sA,40),a=r+(D0=y)|0,sA=Q,a=D+((Q=e+Q|0)>>>0>>0?a+1|0:a)|0,D=Q+p|0,Q=_A,_A=a=D>>>0

>>0?a+1|0:a,Q=G(_^D,Q^a,48),a=(a=vA)+(vA=y)|0,iA=_=Q+b|0,d=a=_>>>0>>0?a+1|0:a,p=n,a=K+I0|0,n=a=(_=x+hA|0)>>>0>>0?a+1|0:a,h=G(_^h,a^nA,1),a=(x=y)+k0|0,a=V+((b=h+h0|0)>>>0>>0?a+1|0:a)|0,M=a=(b=b+M|0)>>>0>>0?a+1|0:a,p=G(p^b,a^EA,32),V=a=y,K=h,a=a+J|0,a=(h=p+z|0)>>>0

>>0?a+1|0:a,hA=h,h^=K,K=a,h=G(h,a^x,40),a=W0+(nA=y)|0,a=M+((x=h+O|0)>>>0>>0?a+1|0:a)|0,z=V,V=a=(M=b+x|0)>>>0>>0?a+1|0:a,x=G(p^M,z^a,48),I0=a=y,b=a,p=G(qA^HA,u^c0,1),z=a=y,J=n,a=a+V0|0,a=aA+((n=p+w0|0)>>>0>>0?a+1|0:a)|0,q=a=(n=n+q|0)>>>0>>0?a+1|0:a,$=G(s^n,a^$,32),a=(c0=y)+J|0,J=_=$+_|0,s=G(_^p,(s=z)^(z=_>>>0<$>>>0?a+1|0:a),40),a=f0+(HA=y)|0,a=q+((_=s+$A|0)>>>0<$A>>>0?a+1|0:a)|0,qA=_=_+n|0,u=a=_>>>0>>0?a+1|0:a,n=a,a=wA+e2|0,a=((p=uA+p0|0)>>>0>>0?a+1|0:a)+n|0,q=a=(n=_+p|0)>>>0

>>0?a+1|0:a,_=G(n^x,a^b,32),a=(aA=y)+d|0,b=G((p=_+iA|0)^uA,(a=p>>>0<_>>>0?a+1|0:a)^wA,40),EA=a,a=u0+(uA=y)|0,a=q+((wA=b+E0|0)>>>0>>0?a+1|0:a)|0,a=(q=n+wA|0)>>>0>>0?a+1|0:a,n=aA,aA=a,n=G(_^q,n^a,48),a=(a=EA)+(EA=y)|0,_=(p=n+p|0)^b,b=a=p>>>0>>0?a+1|0:a,uA=a=G(_,a^uA,1),wA=_=y,_0=l,VA=Q,Q=s,s=G($^qA,u^c0,48),a=($=y)+z|0,z=_=s+J|0,J=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^HA,1),a=(HA=y)+C2|0,a=V+((_=Q+rA|0)>>>0>>0?a+1|0:a)|0,M=a=(l=_+M|0)>>>0>>0?a+1|0:a,_=G(l^VA,a^vA,32),a=(V=y)+v|0,vA=a=(v=_+_0|0)>>>0<_>>>0?a+1|0:a,Q=G(Q^v,a^HA,40),a=t+(c0=y)|0,HA=Q,a=M+((Q=x0+Q|0)>>>0>>0?a+1|0:a)|0,M=Q+l|0,Q=V,V=a=M>>>0>>0?a+1|0:a,Q=G(_^M,Q^a,48),a=(a=vA)+(vA=y)|0,qA=_=Q+v|0,u=a=_>>>0>>0?a+1|0:a,l=B,a=K+I0|0,B=a=(_=x+hA|0)>>>0>>0?a+1|0:a,h=G(_^h,a^nA,1),a=W0+(x=y)|0,a=_A+((v=h+O|0)>>>0>>0?a+1|0:a)|0,D=a=(v=v+D|0)>>>0>>0?a+1|0:a,l=G(l^v,a^mA,32),_A=a=y,K=h,a=a+J|0,a=(h=l+z|0)>>>0>>0?a+1|0:a,hA=h,h^=K,K=a,h=G(h,a^x,40),a=YA+(nA=y)|0,a=D+((x=h+A0|0)>>>0>>0?a+1|0:a)|0,a=(D=v+x|0)>>>0>>0?a+1|0:a,v=_A,_A=a,x=G(l^D,v^a,48),I0=a=y,v=a,l=G(sA^iA,d^D0,1),z=a=y,J=B,a=a+r2|0,a=FA+((B=l+s0|0)>>>0>>0?a+1|0:a)|0,fA=a=(B=B+fA|0)>>>0>>0?a+1|0:a,$=G(s^B,a^$,32),a=(D0=y)+J|0,J=_=$+_|0,s=G(_^l,(s=z)^(z=_>>>0<$>>>0?a+1|0:a),40),a=V0+(sA=y)|0,a=fA+((_=s+w0|0)>>>0>>0?a+1|0:a)|0,iA=_=_+B|0,d=a=_>>>0>>0?a+1|0:a,B=a,a=wA+N0|0,a=((l=uA+cA|0)>>>0>>0?a+1|0:a)+B|0,fA=a=(B=_+l|0)>>>0>>0?a+1|0:a,_=G(B^x,a^v,32),a=(FA=y)+u|0,v=G((l=_+qA|0)^uA,(a=l>>>0<_>>>0?a+1|0:a)^wA,40),mA=a,a=r+(uA=y)|0,a=fA+((wA=v+e|0)>>>0>>0?a+1|0:a)|0,a=(fA=B+wA|0)>>>0>>0?a+1|0:a,B=FA,FA=a,B=G(_^fA,B^a,48),a=(a=mA)+(mA=y)|0,_=(l=B+l|0)^v,v=a=l>>>0>>0?a+1|0:a,uA=a=G(_,a^uA,1),wA=_=y,_0=p,VA=Q,Q=s,s=G($^iA,d^D0,48),a=($=y)+z|0,z=_=s+J|0,J=a=_>>>0>>0?a+1|0:a,Q=G(_^Q,a^sA,1),a=(iA=y)+MA|0,a=_A+((_=Q+g0|0)>>>0>>0?a+1|0:a)|0,D=a=(p=_+D|0)>>>0>>0?a+1|0:a,_=G(p^VA,a^vA,32),a=(_A=y)+b|0,vA=b=_+_0|0,sA=a=b>>>0<_>>>0?a+1|0:a,Q=G(Q^b,a^iA,40),a=T0+(_0=y)|0,iA=Q,a=D+((Q=H+Q|0)>>>0>>0?a+1|0:a)|0,b=Q+p|0,Q=_A,_A=a=b>>>0

>>0?a+1|0:a,Q=G(_^b,Q^a,48),a=(a=sA)+(sA=y)|0,vA=_=Q+vA|0,d=a=_>>>0>>0?a+1|0:a,p=n,a=K+I0|0,n=a=(_=x+hA|0)>>>0>>0?a+1|0:a,h=G(_^h,a^nA,1),a=(x=y)+i0|0,a=V+((D=g+h|0)>>>0>>0?a+1|0:a)|0,M=a=(D=D+M|0)>>>0>>0?a+1|0:a,V=p=G(p^D,a^EA,32),K=a=y,hA=h,a=a+J|0,a=(h=p+z|0)>>>0

>>0?a+1|0:a,nA=h,h^=hA,hA=a,h=G(h,a^x,40),a=L0+(z=y)|0,a=M+((p=h+XA|0)>>>0>>0?a+1|0:a)|0,J=(p=p+D|0)^V,V=a=p>>>0>>0?a+1|0:a,D=G(J,a^K,48),EA=a=y,x=a,K=M=G(qA^HA,u^c0,1),J=a=y,HA=n,a=a+f0|0,a=aA+((n=M+$A|0)>>>0<$A>>>0?a+1|0:a)|0,a=(n=n+q|0)>>>0>>0?a+1|0:a,q=$,$=a,M=G(s^n,q^a,32),a=(VA=y)+HA|0,q=_=M+_|0,s=G(s=_^K,(K=_>>>0>>0?a+1|0:a)^J,40),a=k0+(J=y)|0,a=$+((_=s+h0|0)>>>0>>0?a+1|0:a)|0,$=_=_+n|0,HA=a=_>>>0>>0?a+1|0:a,n=a,a=wA+T0|0,a=((aA=H)>>>0>(H=uA+H|0)>>>0?a+1|0:a)+n|0,T0=a=(_=_+H|0)>>>0>>0?a+1|0:a,H=G(_^D,a^x,32),a=(qA=y)+d|0,x=G((n=vA+H|0)^uA,(a=n>>>0>>0?a+1|0:a)^wA,40),aA=a,a=L0+(u=y)|0,a=T0+((uA=XA)>>>0>(XA=x+XA|0)>>>0?a+1|0:a)|0,a=(XA=_+XA|0)>>>0<_>>>0?a+1|0:a,_=H^XA,H=a,L0=G(_,a^qA,48),a=(T0=y)+aA|0,n=a=(_=n+L0|0)>>>0>>0?a+1|0:a,a=G(_^x,a^u,1),x=y,qA=a,u=l,l=h0,aA=k0,k0=G(M^$,HA^VA,48),a=(M=y)+K|0,K=l,q=a=(h0=q+k0|0)>>>0>>0?a+1|0:a,l=G(s^($=h0),a^J,1),a=(J=y)+aA|0,a=V+(l>>>0>(h0=K+l|0)>>>0?a+1|0:a)|0,s=a=(h0=p+h0|0)>>>0

>>0?a+1|0:a,Q=G(Q^h0,a^sA,32),a=(a=v)+(v=y)|0,V=p=Q+u|0,K=a=p>>>0>>0?a+1|0:a,p=G(p^l,a^J,40),a=(J=y)+C2|0,a=(p>>>0>(rA=p+rA|0)>>>0?a+1|0:a)+s|0,s=a=(s=rA)>>>0>(rA=h0+rA|0)>>>0?a+1|0:a,Q=G(Q^rA,a^v,48),a=(l=y)+K|0,v=h0=Q+V|0,C2=a=h0>>>0>>0?a+1|0:a,V=g,K=i0,a=hA+EA|0,h0=a=(g=D+nA|0)>>>0>>0?a+1|0:a,i0=G(g^h,a^z,1),a=(D=y)+K|0,a=_A+((h=V+i0|0)>>>0>>0?a+1|0:a)|0,B=G((h=h+b|0)^B,(a=h>>>0>>0?a+1|0:a)^mA,32),V=a,_A=cA,cA=i0,a=(b=y)+q|0,q=D,D=a=(i0=B+$|0)>>>0>>0?a+1|0:a,cA=G(i0^cA,q^a,40),a=($=y)+N0|0,a=((N0=_A+cA|0)>>>0>>0?a+1|0:a)+V|0,V=N0,h=B^(N0=h+N0|0),B=a=V>>>0>N0>>>0?a+1|0:a,a=G(h,a^b,48),hA=h=y,b=a,q=g0,V=MA,g0=G(vA^iA,d^_0,1),K=a=y,a=a+e2|0,a=FA+((g0=(_A=g0)+p0|0)>>>0>>0?a+1|0:a)|0,p0=a=(g0=fA+g0|0)>>>0>>0?a+1|0:a,MA=G(g0^k0,a^M,32),a=(fA=y)+h0|0,h0=g=MA+g|0,k0=G(g^_A,(M=g>>>0>>0?a+1|0:a)^K,40),a=(a=V)+(V=y)|0,a=p0+((g=k0+q|0)>>>0>>0?a+1|0:a)|0,p0=g=g+g0|0,e2=a=g>>>0>>0?a+1|0:a,g0=a,a=x+W0|0,a=((_A=O)>>>0>(O=qA+O|0)>>>0?a+1|0:a)+g0|0,W0=a=(g0=g+O|0)>>>0>>0?a+1|0:a,O=G(b^g0,a^h,32),a=(_A=y)+C2|0,h=g=O+v|0,g=G(g^qA,(q=x)^(x=g>>>0>>0?a+1|0:a),40),a=r2+(K=y)|0,r2=g,a=W0+((g=s0+g|0)>>>0>>0?a+1|0:a)|0,a=(g=g+g0|0)>>>0>>0?a+1|0:a,W0=g,nA=(i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24)^g,q=a,z=a^(i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24),g0=G(MA^p0,fA^e2,48),a=(p0=y)+M|0,M=g=g0+h0|0,e2=a=g>>>0>>0?a+1|0:a,MA=E0,a=D+hA|0,E0=a=(g=b+i0|0)>>>0>>0?a+1|0:a,cA=G(g^cA,a^$,1),a=(b=y)+u0|0,a=((MA=cA+MA|0)>>>0>>0?a+1|0:a)+s|0,MA=a=(u0=MA+rA|0)>>>0>>0?a+1|0:a,h0=G(u0^L0,a^T0,32),a=(i0=y)+e2|0,rA=a=(s0=h0+M|0)>>>0>>0?a+1|0:a,L0=h0,h0=G(cA^s0,a^b,40),a=(s=y)+V0|0,a=(h0>>>0>(cA=h0+w0|0)>>>0?a+1|0:a)+MA|0,D=i0,i0=a=(u0=cA+u0|0)>>>0>>0?a+1|0:a,cA=G(L0^(w0=u0),D^a,48),a=(b=y)+rA|0,a=(MA=cA+s0|0)>>>0>>0?a+1|0:a,s0=MA,MA^=nA,c[C+8|0]=MA,c[C+9|0]=MA>>>8,c[C+10|0]=MA>>>16,c[C+11|0]=MA>>>24,rA=a,a^=z,c[C+12|0]=a,c[C+13|0]=a>>>8,c[C+14|0]=a>>>16,c[C+15|0]=a>>>24,u0=g,MA=E0,g=g0,g0=G(p^v,J^C2,1),a=(V0=y)+r|0,a=(g0>>>0>(E0=g0+e|0)>>>0?a+1|0:a)+H|0,XA=a=(v=E0)>>>0>(E0=XA+E0|0)>>>0?a+1|0:a,g=G(g^E0,a^p0,32),a=(a=MA)+(MA=y)|0,p0=a=(u0=g+u0|0)>>>0>>0?a+1|0:a,L0=g,u0=G(g0^(H=u0),a^V0,40),a=(p=y)+t|0,a=XA+((g=u0+x0|0)>>>0>>0?a+1|0:a)|0,a=(g=g+E0|0)>>>0>>0?a+1|0:a,XA=g,g^=L0,L0=a,E0=G(g,a^MA,48),a=(v=y)+p0|0,H=g=E0+H|0,p0=g>>>0>>0?a+1|0:a,k0=g=G(M^k0,V^e2,1),V0=a=y,a=a+YA|0,a=B+((g=g+A0|0)>>>0>>0?a+1|0:a)|0,YA=a=(g0=g+N0|0)>>>0>>0?a+1|0:a,g=(MA=G(Q^g0,a^l,32))+_|0,a=(_=y)+n|0,N0=g,g=(A0=G(B=g^k0,(k0=g>>>0>>0?a+1|0:a)^V0,40))+$A|0,a=($A=y)+f0|0,a=YA+(g>>>0>>0?a+1|0:a)|0,a=(YA=g+g0|0)>>>0>>0?a+1|0:a,g0=YA^s2^H,c[0|(g=C)]=g0,c[g+1|0]=g0>>>8,c[g+2|0]=g0>>>16,c[g+3|0]=g0>>>24,g0=a^o^p0,c[g+4|0]=g0,c[g+5|0]=g0>>>8,c[g+6|0]=g0>>>16,c[g+7|0]=g0>>>24,g0=(MA=G(YA^MA,a^_,48))+N0|0,a=(N0=y)+k0|0,a=(k0=g0>>>0>>0?a+1|0:a)^(i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24)^L0,YA=(i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24)^XA^g0,c[g+16|0]=YA,c[g+17|0]=YA>>>8,c[g+18|0]=YA>>>16,c[g+19|0]=YA>>>24,c[g+20|0]=a,c[g+21|0]=a>>>8,c[g+22|0]=a>>>16,c[g+23|0]=a>>>24,g=G(O^W0,q^_A,48),YA=y,XA=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,a=(i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24)^G(h0^s0,s^rA,1)^g,c[C+32|0]=a,c[C+33|0]=a>>>8,c[C+34|0]=a>>>16,c[C+35|0]=a>>>24,a=y^XA^YA,c[C+36|0]=a,c[C+37|0]=a>>>8,c[C+38|0]=a>>>16,c[C+39|0]=a>>>24,a=x+YA|0,a=(XA=g+h|0)>>>0>>0?a+1|0:a,h0=(i[(g=C)+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)^i0^a,YA=(i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24)^w0^XA,c[g+24|0]=YA,c[g+25|0]=YA>>>8,c[g+26|0]=YA>>>16,c[g+27|0]=YA>>>24,c[g+28|0]=h0,c[g+29|0]=h0>>>8,c[g+30|0]=h0>>>16,c[g+31|0]=h0>>>24,h0=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,g=E0^(i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24)^G(g0^A0,$A^k0,1),c[C+40|0]=g,c[C+41|0]=g>>>8,c[C+42|0]=g>>>16,c[C+43|0]=g>>>24,g=v^y^h0,c[C+44|0]=g,c[C+45|0]=g>>>8,c[C+46|0]=g>>>16,c[C+47|0]=g>>>24,g0=i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24,g=MA^(i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24)^G(H^u0,p^p0,1),c[C+56|0]=g,c[C+57|0]=g>>>8,c[C+58|0]=g>>>16,c[C+59|0]=g>>>24,g=N0^y^g0,c[C+60|0]=g,c[C+61|0]=g>>>8,c[C+62|0]=g>>>16,c[C+63|0]=g>>>24,g0=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,g=cA^(i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24)^G(XA^r2,a^K,1),c[C+48|0]=g,c[C+49|0]=g>>>8,c[C+50|0]=g>>>16,c[C+51|0]=g>>>24,g=b^y^g0,c[C+52|0]=g,c[C+53|0]=g>>>8,c[C+54|0]=g>>>16,c[C+55|0]=g>>>24}function aC(C,g,e,t,r,o,I){var a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA,iA,hA,mA,HA,aA,EA,YA,qA,$A,g0,i0,u,d,H,FA,VA,c0,_0,I0,h0,D0,MA=0,O=0,rA=0,cA=0,XA=0,A0=0,s0=0,p0=0,f0=0,E0=0,w0=0,u0=0,k0=0,F0=0,N0=0,x0=0,L0=0,T0=0,j0=0,V0=0,W0=0,C2=0,e2=0,r2=0,i2=0,s2=0,k2=0,d2=0,m2=0,Y2=0,R2=0,U2=0,W2=0,V2=0,C1=0,c1=0,I1=0,s1=0,h1=0,Q1=0,K1=0,Te=0,je=0,Oe=0,Xe=0,Ve=0;return W=s=W-560|0,b0(rA=s+352|0),I&&x2(rA,35600,34,0),Y0(s+288|0,o,32,0),x2(A0=s+352|0,s+320|0,32,0),x2(A0,e,t,r),e1(A0,p0=s+224|0),E0=i[(O=o)+32|0]|i[O+33|0]<<8|i[O+34|0]<<16|i[O+35|0]<<24,w0=i[O+36|0]|i[O+37|0]<<8|i[O+38|0]<<16|i[O+39|0]<<24,cA=i[O+40|0]|i[O+41|0]<<8|i[O+42|0]<<16|i[O+43|0]<<24,MA=i[O+44|0]|i[O+45|0]<<8|i[O+46|0]<<16|i[O+47|0]<<24,rA=i[O+48|0]|i[O+49|0]<<8|i[O+50|0]<<16|i[O+51|0]<<24,o=i[O+52|0]|i[O+53|0]<<8|i[O+54|0]<<16|i[O+55|0]<<24,XA=i[O+60|0]|i[O+61|0]<<8|i[O+62|0]<<16|i[O+63|0]<<24,O=i[O+56|0]|i[O+57|0]<<8|i[O+58|0]<<16|i[O+59|0]<<24,c[C+56|0]=O,c[C+57|0]=O>>>8,c[C+58|0]=O>>>16,c[C+59|0]=O>>>24,c[C+60|0]=XA,c[C+61|0]=XA>>>8,c[C+62|0]=XA>>>16,c[C+63|0]=XA>>>24,c[C+48|0]=rA,c[C+49|0]=rA>>>8,c[C+50|0]=rA>>>16,c[C+51|0]=rA>>>24,c[C+52|0]=o,c[C+53|0]=o>>>8,c[C+54|0]=o>>>16,c[C+55|0]=o>>>24,c[C+40|0]=cA,c[C+41|0]=cA>>>8,c[C+42|0]=cA>>>16,c[C+43|0]=cA>>>24,c[C+44|0]=MA,c[C+45|0]=MA>>>8,c[C+46|0]=MA>>>16,c[C+47|0]=MA>>>24,c[0|(o=C+32|0)]=E0,c[o+1|0]=E0>>>8,c[o+2|0]=E0>>>16,c[o+3|0]=E0>>>24,c[o+4|0]=w0,c[o+5|0]=w0>>>8,c[o+6|0]=w0>>>16,c[o+7|0]=w0>>>24,d1(p0),Cg(s,p0),eg(C,s),b0(A0),I&&x2(A0,35600,34,0),x2(I=s+352|0,C,64,0),x2(I,e,t,r),e1(I,s0=s+160|0),d1(s0),c[s+288|0]=248&i[s+288|0],c[s+319|0]=63&i[s+319|0]|64,e=i[23+(C=_=s+288|0)|0],cA=w(h=i[C+21|0]|i[C+22|0]<<8|e<<16&2031616,0,n=(i[s0+28|0]|i[s0+29|0]<<8|i[s0+30|0]<<16|i[s0+31|0]<<24)>>>7|0,0),rA=y,e=(C=i[s0+27|0])>>>24|0,r=C<<8|(MA=i[s0+23|0]|i[s0+24|0]<<8|i[s0+25|0]<<16|i[s0+26|0]<<24)>>>24,C=w(B=2097151&((3&(w0=(C=(t=i[s0+28|0])>>>16|0)|e))<<30|(e=(t<<=16)|r)>>>2),0,Q=(I=i[_+23|0]|i[_+24|0]<<8|i[_+25|0]<<16|i[_+26|0]<<24)>>>5&2097151,0),e=y+rA|0,t=C>>>0>(r=C+cA|0)>>>0?e+1|0:e,C=w(p=(e=i[s0+23|0])<<16&2031616|i[s0+21|0]|i[s0+22|0]<<8,0,l=(i[_+28|0]|i[_+29|0]<<8|i[_+30|0]<<16|i[_+31|0]<<24)>>>7|0,0),t=y+t|0,rA=e=C+r|0,r=C>>>0>e>>>0?t+1|0:t,t=(C=i[_+27|0])>>>24|0,I=C<<8|I>>>24,C=w(v=2097151&((3&(t|=e=(C=i[_+28|0])>>>16|0))<<30|(e=(C<<=16)|I)>>>2),0,D=MA>>>5&2097151,0),e=y+r|0,O=t=C+rA|0,r=C>>>0>t>>>0?e+1|0:e,MA=w(Q,0,D,0),rA=y,e=(C=i[_+19|0])>>>24|0,I=C<<8|(T0=i[_+15|0]|i[_+16|0]<<8|i[_+17|0]<<16|i[_+18|0]<<24)>>>24,t=e,e=w(b=(7&(t|=e=(C=i[_+20|0])>>>16|0))<<29|(e=(C<<=16)|I)>>>3,w0=t>>>3|0,n,0),C=y+rA|0,C=e>>>0>(t=e+MA|0)>>>0?C+1|0:C,I=(e=w(h,0,B,0))+t|0,t=y+C|0,e=e>>>0>(MA=I)>>>0?t+1|0:t,t=(C=i[s0+19|0])>>>24|0,rA=C<<8|(N0=i[s0+15|0]|i[s0+16|0]<<8|i[s0+17|0]<<16|i[s0+18|0]<<24)>>>24,C=w(M=(7&(cA=(C=(I=i[s0+20|0])>>>16|0)|t))<<29|(t=(I<<=16)|rA)>>>3,x=cA>>>3|0,l,0),e=y+e|0,e=C>>>0>(t=C+MA|0)>>>0?e+1|0:e,C=w(p,0,v,0),e=y+e|0,E0=e=C>>>0>(p0=C+t|0)>>>0?e+1|0:e,u0=C=e-((p0>>>0<4293918720)-1|0)|0,t=(e=C>>>21|0)+r|0,MA=t=(C=(2097151&C)<<11|(cA=p0- -1048576|0)>>>21)>>>0>(O=C+O|0)>>>0?t+1|0:t,F0=C=t-((O>>>0<4293918720)-1|0)|0,XA=(2097151&C)<<11|(rA=O- -1048576|0)>>>21,I=C>>>21|0,C=w(l,0,D,0),e=y,t=C,C=w(n,0,Q,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,k0=(C=t)+(t=w(B,0,v,0))|0,C=y+e|0,C=t>>>0>k0>>>0?C+1|0:C,A0=k0-(e=-2097152&(t=k0- -1048576|0))|0,e=(C-((131071&(r=C-((k0>>>0<4293918720)-1|0)|0))+(e>>>0>k0>>>0)|0)|0)+I|0,hA=e=(C=XA+A0|0)>>>0>>0?e+1|0:e,mA=C,A0=w(C,e,470296,0),XA=y,e=w(n,0,v,0),C=y,I=e,e=w(B,0,l,0),C=y+C|0,e=e>>>0>(I=I+e|0)>>>0?C+1|0:C,C=r>>>21|0,r=(2097151&r)<<11|t>>>21,t=C+e|0,C2=r=(t=r>>>0>(I=r+I|0)>>>0?t+1|0:t)-((I>>>0<4293918720)-1|0)|0,C=I-(e=-2097152&(W0=I- -1048576|0))|0,HA=I=t-((131071&r)+(e>>>0>I>>>0)|0)|0,aA=e=O-(t=-2097152&rA)|0,EA=r=MA-((t>>>0>O>>>0)+F0|0)|0,YA=C,t=w(C,I,666643,0),C=y+XA|0,C=t>>>0>(I=t+A0|0)>>>0?C+1|0:C,t=w(e,r,654183,0),e=y+C|0,f0=r=t+I|0,rA=t>>>0>r>>>0?e+1|0:e,k0=p0-(C=-2097152&cA)|0,u0=E0-((C>>>0>p0>>>0)+u0|0)|0,e=w(B,0,b,w0),t=y,r=(C=e)+(e=w(q=T0>>>6&2097151,0,n,0))|0,C=y+t|0,C=e>>>0>r>>>0?C+1|0:C,e=w(Q,0,p,0),t=y+C|0,t=e>>>0>(r=e+r|0)>>>0?t+1|0:t,C=w(h,0,D,0),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,t=w(l,0,V=N0>>>6&2097151,0),C=y+e|0,C=t>>>0>(r=t+r|0)>>>0?C+1|0:C,t=w(v,0,M,x),e=y+C|0,p0=r=t+r|0,I=t>>>0>r>>>0?e+1|0:e,e=(C=i[_+14|0])>>>24|0,r=C<<8|(E0=i[_+10|0]|i[_+11|0]<<8|i[_+12|0]<<16|i[_+13|0]<<24)>>>24,e=w($=2097151&((1&(e|=C=(t=i[_+15|0])>>>16|0))<<31|(C=(t<<=16)|r)>>>1),0,n,0),C=y,t=e,e=w(B,0,q,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=w(D,0,b,w0))+t|0,t=y+C|0,t=e>>>0>r>>>0?t+1|0:t,C=w(Q,0,M,x),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,C=w(h,0,p,0),e=y+e|0,cA=t=C+r|0,r=C>>>0>t>>>0?e+1|0:e,e=(C=i[s0+14|0])>>>24|0,MA=C<<8|(O=i[s0+10|0]|i[s0+11|0]<<8|i[s0+12|0]<<16|i[s0+13|0]<<24)>>>24,t=e,e=(C=i[s0+15|0])>>>16|0,e=w(K=2097151&((1&(e|=t))<<31|(C=C<<16|MA)>>>1),0,l,0),C=y+r|0,C=e>>>0>(t=e+cA|0)>>>0?C+1|0:C,e=w(v,0,V,0),C=y+C|0,MA=C=e>>>0>(cA=e+t|0)>>>0?C+1|0:C,e2=e=C-((cA>>>0<4293918720)-1|0)|0,t=(C=e>>>21|0)+I|0,XA=t=(e=(2097151&e)<<11|(A0=cA- -1048576|0)>>>21)>>>0>(F0=e+p0|0)>>>0?t+1|0:t,j0=e=t-((F0>>>0<4293918720)-1|0)|0,C=(C=e>>>21|0)+u0|0,qA=C=(e=(t=(2097151&e)<<11|(p0=F0- -1048576|0)>>>21)+k0|0)>>>0>>0?C+1|0:C,$A=e,C=w(e,C,-997805,-1),e=y+rA|0,f0=t=C+f0|0,rA=C>>>0>t>>>0?e+1|0:e,k0=(s2=i[23+(a=s+224|0)|0]|i[a+24|0]<<8|i[a+25|0]<<16|i[a+26|0]<<24)>>>5&2097151,t=w(J=(C=i[_+2|0])<<16&2031616|i[0|_]|i[_+1|0]<<8,0,D,0),e=y,r=(C=w(p,0,z=(I=i[_+2|0]|i[_+3|0]<<8|i[_+4|0]<<16|i[_+5|0]<<24)>>>5&2097151,0))+t|0,t=y+e|0,t=C>>>0>r>>>0?t+1|0:t,C=w(_A=(i[_+7|0]|i[_+8|0]<<8|i[_+9|0]<<16|i[_+10|0]<<24)>>>7&2097151,0,V,0),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,t=w(K,0,sA=E0>>>4&2097151,0),C=y+e|0,E0=r=t+r|0,r=t>>>0>r>>>0?C+1|0:C,I=(e=i[_+6|0])<<8|I>>>24,t=C=e>>>24|0,e=(C=i[_+7|0])>>>16|0,e=w(nA=2097151&((3&(e|=t))<<30|(C=C<<16|I)>>>2),0,M,x),C=y+r|0,C=e>>>0>(t=e+E0|0)>>>0?C+1|0:C,r=(e=w(q,0,fA=(i[s0+7|0]|i[s0+8|0]<<8|i[s0+9|0]<<16|i[s0+10|0]<<24)>>>7&2097151,0))+t|0,t=y+C|0,t=e>>>0>r>>>0?t+1|0:t,e=w($,0,V0=O>>>4&2097151,0),C=y+t|0,I=e>>>0>(r=e+r|0)>>>0?C+1|0:C,C=(e=i[s0+6|0])>>>24|0,E0=e<<8|(O=i[s0+2|0]|i[s0+3|0]<<8|i[s0+4|0]<<16|i[s0+5|0]<<24)>>>24,e=C,C=w(b,w0,uA=2097151&((3&(e|=t=(C=i[s0+7|0])>>>16|0))<<30|(C=C<<16|E0)>>>2),0),e=y+I|0,e=C>>>0>(t=C+r|0)>>>0?e+1|0:e,r=t,t=w(vA=(C=i[s0+2|0])<<16&2031616|i[0|s0]|i[s0+1|0]<<8,0,Q,0),C=y+e|0,C=t>>>0>(r=r+t|0)>>>0?C+1|0:C,e=w(h,0,wA=O>>>5&2097151,0),C=y+C|0,C=e>>>0>(t=e+r|0)>>>0?C+1|0:C,e=t,E0=t=t+k0|0,I=e=e>>>0>t>>>0?C+1|0:C,r=i[a+21|0]|i[a+22|0]<<8,C=w(p,0,J,0),e=y,O=(t=C)+(C=w(M,x,z,0))|0,t=y+e|0,t=C>>>0>O>>>0?t+1|0:t,C=w(K,0,_A,0),e=y+t|0,e=C>>>0>(O=C+O|0)>>>0?e+1|0:e,C=w(sA,0,V0,0),e=y+e|0,e=C>>>0>(t=C+O|0)>>>0?e+1|0:e,O=(C=t)+(t=w(V,0,nA,0))|0,C=y+e|0,C=t>>>0>O>>>0?C+1|0:C,e=w(q,0,uA,0),C=y+C|0,C=e>>>0>(t=e+O|0)>>>0?C+1|0:C,O=(e=w($,0,fA,0))+t|0,t=y+C|0,t=e>>>0>O>>>0?t+1|0:t,C=w(b,w0,wA,0),e=y+t|0,e=C>>>0>(O=C+O|0)>>>0?e+1|0:e,C=w(h,0,vA,0),e=y+e|0,C=C>>>0>(t=C+O|0)>>>0?e+1|0:e,e=(e=t)>>>0>(t=t+r|0)>>>0?C+1|0:C,r=t,t=(C=i[a+23|0])<<16&2031616,C=e,t=C=t>>>0>(r=r+t|0)>>>0?C+1|0:C,s0=C=C-((r>>>0<4293918720)-1|0)|0,e=(e=C>>>21|0)+I|0,C=(e=(I=E0=(C=(2097151&C)<<11|(O=r- -1048576|0)>>>21)+E0|0)>>>0>>0?e+1|0:e)+rA|0,C=(rA=I+f0|0)>>>0>>0?C+1|0:C,N0=I- -1048576|0,x0=I=e-((I>>>0<4293918720)-1|0)|0,L0=rA-(e=-2097152&N0)|0,r2=C-((e>>>0>rA>>>0)+I|0)|0,E0=r,rA=t,C=w(aA,EA,470296,0),e=y,t=C,C=w(mA,hA,666643,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,r=(C=t)+(t=w($A,qA,654183,0))|0,C=y+e|0,T0=r,I=t>>>0>r>>>0?C+1|0:C,e=w(M,x,J,0),C=y,t=e,e=w(V,0,z,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=t)+(t=w(_A,0,V0,0))|0,e=y+C|0,e=t>>>0>r>>>0?e+1|0:e,C=w(sA,0,fA,0),t=y+e|0,t=C>>>0>(r=C+r|0)>>>0?t+1|0:t,C=w(K,0,nA,0),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,t=w(q,0,wA,0),C=y+e|0,C=t>>>0>(r=t+r|0)>>>0?C+1|0:C,e=w($,0,uA,0),C=y+C|0,C=e>>>0>(t=e+r|0)>>>0?C+1|0:C,r=(e=t)+(t=w(b,w0,vA,0))|0,e=y+C|0,k0=r,t=t>>>0>r>>>0?e+1|0:e,e=(C=i[a+19|0])>>>24|0,u0=C<<8|(f0=i[a+15|0]|i[a+16|0]<<8|i[a+17|0]<<16|i[a+18|0]<<24)>>>24,t=((i2=(C=(r=i[a+20|0])>>>16|0)|e)>>>3|0)+t|0,k0=r=(e=(7&i2)<<29|(e=(r<<=16)|u0)>>>3)+k0|0,r=e>>>0>r>>>0?t+1|0:t,u0=f0>>>6&2097151,C=w(V,0,J,0),e=y,t=C,C=w(K,0,z,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,f0=(C=t)+(t=w(_A,0,fA,0))|0,C=y+e|0,C=t>>>0>f0>>>0?C+1|0:C,t=w(sA,0,uA,0),e=y+C|0,e=t>>>0>(f0=t+f0|0)>>>0?e+1|0:e,t=w(nA,0,V0,0),C=y+e|0,C=t>>>0>(f0=t+f0|0)>>>0?C+1|0:C,e=w(q,0,vA,0),t=y+C|0,t=e>>>0>(f0=e+f0|0)>>>0?t+1|0:t,C=w($,0,wA,0),e=y+t|0,C=C>>>0>(f0=C+f0|0)>>>0?e+1|0:e,C1=C=(d2=f0+u0|0)>>>0>>0?C+1|0:C,Te=C=C-((d2>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(W2=d2- -1048576|0)>>>21,C=(C>>>21|0)+r|0,I1=C=t>>>0>(c1=t+k0|0)>>>0?C+1|0:C,je=C=C-((c1>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(Y2=c1- -1048576|0)>>>21,C=(C>>>21|0)+I|0,e=(t>>>0>(r=t+T0|0)>>>0?C+1|0:C)+rA|0,rA=(t=r+E0|0)-(C=-2097152&O)|0,s0=C=(e=t>>>0>>0?e+1|0:e)-((C>>>0>t>>>0)+s0|0)|0,Oe=C=C-((rA>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(R2=rA- -1048576|0)>>>21,C=(C>>21)+r2|0,r=C=t>>>0>(I=t+L0|0)>>>0?C+1|0:C,K1=C=C-((I>>>0<4293918720)-1|0)|0,U2=(2097151&C)<<11|(T0=I- -1048576|0)>>>21,E0=C>>21,i2=F0-(C=-2097152&p0)|0,j0=XA-((C>>>0>F0>>>0)+j0|0)|0,C=w(n,0,l,0),V2=e=y,L0=C,f0=C- -1048576|0,m2=e=e-((C>>>0<4293918720)-1|0)|0,g0=C=e>>>21|0,C=w(iA=(2097151&e)<<11|f0>>>21,C,-683901,-1),e=y+MA|0,e=C>>>0>(t=C+cA|0)>>>0?e+1|0:e,p0=t-(C=-2097152&A0)|0,O=e-((C>>>0>t>>>0)+e2|0)|0,e=w(D,0,q,0),C=y,t=e,e=w(n,0,sA,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,e=w(B,0,$,0),C=y+C|0,C=e>>>0>(t=e+t|0)>>>0?C+1|0:C,MA=(e=t)+(t=w(p,0,b,w0))|0,e=y+C|0,e=t>>>0>MA>>>0?e+1|0:e,C=w(Q,0,V,0),t=y+e|0,t=C>>>0>(MA=C+MA|0)>>>0?t+1|0:t,C=w(h,0,M,x),e=y+t|0,e=C>>>0>(MA=C+MA|0)>>>0?e+1|0:e,t=w(l,0,V0,0),C=y+e|0,C=t>>>0>(MA=t+MA|0)>>>0?C+1|0:C,e=w(v,0,K,0),C=y+C|0,cA=t=e+MA|0,MA=e>>>0>t>>>0?C+1|0:C,C=w(B,0,sA,0),e=y,t=C,C=w(n,0,_A,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,XA=(C=w(p,0,q,0))+t|0,t=y+e|0,t=C>>>0>XA>>>0?t+1|0:t,C=w(D,0,$,0),e=y+t|0,e=C>>>0>(XA=C+XA|0)>>>0?e+1|0:e,t=w(b,w0,M,x),C=y+e|0,C=t>>>0>(XA=t+XA|0)>>>0?C+1|0:C,e=w(Q,0,K,0),C=y+C|0,C=e>>>0>(t=e+XA|0)>>>0?C+1|0:C,XA=(e=t)+(t=w(h,0,V,0))|0,e=y+C|0,e=t>>>0>XA>>>0?e+1|0:e,C=w(l,0,fA,0),t=y+e|0,t=C>>>0>(XA=C+XA|0)>>>0?t+1|0:t,C=w(v,0,V0,0),e=y+t|0,u0=e=C>>>0>(k0=C+XA|0)>>>0?e+1|0:e,h1=C=e-((k0>>>0<4293918720)-1|0)|0,e=(2097151&C)<<11|(F0=k0- -1048576|0)>>>21,C=(C>>>21|0)+MA|0,A0=C=e>>>0>(e2=e+cA|0)>>>0?C+1|0:C,k2=C=C-((e2>>>0<4293918720)-1|0)|0,e=(t=C>>>21|0)+O|0,p0=e=(C=(2097151&C)<<11|(XA=e2- -1048576|0)>>>21)>>>0>(r2=C+p0|0)>>>0?e+1|0:e,s1=C=e-((r2>>>0<4293918720)-1|0)|0,MA=(2097151&C)<<11|(O=r2- -1048576|0)>>>21,C=(C>>21)+j0|0,i0=C=(e=MA+i2|0)>>>0>>0?C+1|0:C,u=e,C=w(e,C,-683901,-1),e=y+E0|0,U2=t=C+U2|0,E0=C>>>0>t>>>0?e+1|0:e,C=w(B,0,J,0),e=y,t=C,C=w(D,0,z,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,MA=(C=t)+(t=w(M,x,_A,0))|0,C=y+e|0,C=t>>>0>MA>>>0?C+1|0:C,e=w(V,0,sA,0),t=y+C|0,t=e>>>0>(MA=e+MA|0)>>>0?t+1|0:t,e=w(p,0,nA,0),C=y+t|0,C=e>>>0>(MA=e+MA|0)>>>0?C+1|0:C,t=w(q,0,V0,0),e=y+C|0,e=t>>>0>(MA=t+MA|0)>>>0?e+1|0:e,C=w($,0,K,0),e=y+e|0,e=C>>>0>(t=C+MA|0)>>>0?e+1|0:e,MA=(C=t)+(t=w(b,w0,fA,0))|0,C=y+e|0,C=t>>>0>MA>>>0?C+1|0:C,e=w(Q,0,wA,0),t=y+C|0,t=e>>>0>(MA=e+MA|0)>>>0?t+1|0:t,e=w(h,0,uA,0),C=y+t|0,C=e>>>0>(MA=e+MA|0)>>>0?C+1|0:C,t=w(v,0,vA,0),e=y+C|0,j0=MA=t+MA|0,t=t>>>0>MA>>>0?e+1|0:e,e=(C=i[a+27|0])>>>24|0,cA=C<<8|s2>>>24,MA=2097151&((3&(e|=C=(MA=i[a+28|0])>>>16|0))<<30|(C=(MA<<=16)|cA)>>>2),e=t,cA=C=MA+j0|0,MA=C>>>0>>0?e+1|0:e,i2=w(YA,HA,470296,0),j0=y,C=(t=(2097151&C2)<<11|W0>>>21)+(L0-(e=-2097152&f0)|0)|0,e=V2-((524287&m2)+(e>>>0>L0>>>0)|0)+(C2>>>21)|0,d=e=C>>>0>>0?e+1|0:e,H=C,e=w(C,e,666643,0),C=y+j0|0,C=e>>>0>(t=e+i2|0)>>>0?C+1|0:C,f0=(e=w(mA,hA,654183,0))+t|0,t=y+C|0,t=e>>>0>f0>>>0?t+1|0:t,e=w(aA,EA,-997805,-1),C=y+t|0,C=e>>>0>(f0=e+f0|0)>>>0?C+1|0:C,t=w($A,qA,136657,0),e=y+C|0,N0=(C=(2097151&x0)<<11|N0>>>21)+(f0=t+f0|0)|0,e=(x0>>>21|0)+(t>>>0>f0>>>0?e+1|0:e)|0,m2=f0=MA-((cA>>>0<4293918720)-1|0)|0,C=(C>>>0>N0>>>0?e+1|0:e)+MA|0,e=(MA=cA+N0|0)-(t=-2097152&(V2=cA- -1048576|0))|0,t=(C=(C=MA>>>0>>0?C+1|0:C)-((t>>>0>MA>>>0)+f0|0)|0)+E0|0,i2=MA=C-((e>>>0<4293918720)-1|0)|0,L0=(t=(cA=e+U2|0)>>>0>>0?t+1|0:t)-(((e=-2097152&(j0=e- -1048576|0))>>>0>cA>>>0)+MA|0)|0,s2=C=cA-e|0,MA=I,I=r,Q1=r2-(C=-2097152&O)|0,f0=p0-((C>>>0>r2>>>0)+s1|0)|0,C=w(H,d,-683901,-1),e=y,r=(t=C)+(C=w(iA,g0,136657,0))|0,t=y+e|0,e=A0+(C>>>0>r>>>0?t+1|0:t)|0,XA=(t=r+e2|0)-(C=-2097152&XA)|0,p0=(e=t>>>0>>0?e+1|0:e)-((C>>>0>t>>>0)+k2|0)|0,e=w(iA,g0,-997805,-1),C=y+u0|0,C=e>>>0>(t=e+k0|0)>>>0?C+1|0:C,r=(e=w(H,d,136657,0))+t|0,t=y+C|0,t=e>>>0>r>>>0?t+1|0:t,C=w(YA,HA,-683901,-1),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,O=r-(C=-2097152&F0)|0,E0=e-((C>>>0>r>>>0)+h1|0)|0,e=w(D,0,sA,0),C=y,t=e,e=w(B,0,_A,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=w(n,0,nA,0))+t|0,t=y+C|0,t=e>>>0>r>>>0?t+1|0:t,C=w(M,x,q,0),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,t=w(p,0,$,0),C=y+e|0,C=t>>>0>(r=t+r|0)>>>0?C+1|0:C,t=w(b,w0,V,0),e=y+C|0,e=t>>>0>(r=t+r|0)>>>0?e+1|0:e,t=w(Q,0,V0,0),C=y+e|0,C=t>>>0>(r=t+r|0)>>>0?C+1|0:C,e=w(h,0,K,0),t=y+C|0,t=e>>>0>(r=e+r|0)>>>0?t+1|0:t,C=w(l,0,uA,0),e=y+t|0,e=C>>>0>(r=C+r|0)>>>0?e+1|0:e,t=w(v,0,fA,0),C=y+e|0,cA=r=t+r|0,r=t>>>0>r>>>0?C+1|0:C,C=w(D,0,_A,0),e=y,t=C,C=w(n,0,z,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,A0=(C=t)+(t=w(p,0,sA,0))|0,C=y+e|0,C=t>>>0>A0>>>0?C+1|0:C,e=w(B,0,nA,0),t=y+C|0,t=e>>>0>(A0=e+A0|0)>>>0?t+1|0:t,C=w(q,0,V,0),e=y+t|0,e=C>>>0>(A0=C+A0|0)>>>0?e+1|0:e,t=w(M,x,$,0),C=y+e|0,C=t>>>0>(A0=t+A0|0)>>>0?C+1|0:C,t=w(b,w0,K,0),e=y+C|0,e=t>>>0>(A0=t+A0|0)>>>0?e+1|0:e,t=w(Q,0,fA,0),C=y+e|0,C=t>>>0>(A0=t+A0|0)>>>0?C+1|0:C,e=w(h,0,V0,0),t=y+C|0,t=e>>>0>(A0=e+A0|0)>>>0?t+1|0:t,A0=(C=w(l,0,wA,0))+A0|0,e=y+t|0,t=w(v,0,uA,0),C=y+(C>>>0>A0>>>0?e+1|0:e)|0,r2=C=t>>>0>(s1=t+A0|0)>>>0?C+1|0:C,VA=C=C-((s1>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(C2=s1- -1048576|0)>>>21,C=(C>>>21|0)+r|0,W0=C=t>>>0>(U2=t+cA|0)>>>0?C+1|0:C,c0=C=C-((U2>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(x0=U2- -1048576|0)>>>21,C=(C>>>21|0)+E0|0,N0=C=t>>>0>(e2=t+O|0)>>>0?C+1|0:C,_0=C=C-((e2>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(u0=e2- -1048576|0)>>>21,C=(C>>21)+p0|0,r=C=t>>>0>(O=t+XA|0)>>>0?C+1|0:C,p0=C=C-((O>>>0<4293918720)-1|0)|0,E0=(2097151&C)<<11|(t=O- -1048576|0)>>>21,C=(C>>21)+f0|0,h1=C=(cA=E0+Q1|0)>>>0>>0?C+1|0:C,k2=cA,C=w(cA,C,-683901,-1),e=y,cA=C,C=w(u,i0,136657,0),e=y+e|0,C=(C>>>0>(cA=cA+C|0)>>>0?e+1|0:e)+I|0,Xe=(I=MA+cA|0)-(e=-2097152&T0)|0,Ve=(C=I>>>0>>0?C+1|0:C)-((e>>>0>I>>>0)+K1|0)|0,E0=rA,cA=s0,rA=w(k2,h1,136657,0),I=y,Q1=C=O-(e=-2097152&t)|0,FA=r=r-((e>>>0>O>>>0)+p0|0)|0,t=w(u,i0,-997805,-1),e=y+I|0,e=t>>>0>(rA=t+rA|0)>>>0?e+1|0:e,t=w(C,r,-683901,-1),C=y+e|0,K1=r=t+rA|0,MA=t>>>0>r>>>0?C+1|0:C,C=w($A,qA,470296,0),e=y,r=(t=C)+(C=w(aA,EA,666643,0))|0,t=y+e|0,e=I1+(C>>>0>r>>>0?t+1|0:t)|0,T0=C=r+c1|0,I=e=C>>>0>>0?e+1|0:e,e=w($A,qA,666643,0),C=y+C1|0,C=e>>>0>(t=e+d2|0)>>>0?C+1|0:C,XA=t-(e=-2097152&W2)|0,k0=C-((e>>>0>t>>>0)+Te|0)|0,e=w(K,0,J,0),C=y,t=e,e=w(z,0,V0,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=t)+(t=w(_A,0,uA,0))|0,e=y+C|0,e=t>>>0>r>>>0?e+1|0:e,t=w(sA,0,wA,0),C=y+e|0,C=t>>>0>(r=t+r|0)>>>0?C+1|0:C,e=w(nA,0,fA,0),t=y+C|0,t=e>>>0>(r=e+r|0)>>>0?t+1|0:t,C=w($,0,vA,0),e=y+t|0,O=r=C+r|0,r=C>>>0>r>>>0?e+1|0:e,e=(C=i[a+14|0])>>>24|0,rA=C<<8|(p0=i[a+10|0]|i[a+11|0]<<8|i[a+12|0]<<16|i[a+13|0]<<24)>>>24,e=2097151&((1&(e|=t=(C=i[a+15|0])>>>16|0))<<31|(C=rA|C<<16)>>>1),C=r,O=t=e+O|0,r=e>>>0>t>>>0?C+1|0:C,rA=p0>>>4&2097151,C=w(J,0,V0,0),e=y,t=C,C=w(z,0,fA,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,C=w(_A,0,wA,0),e=y+e|0,e=C>>>0>(t=C+t|0)>>>0?e+1|0:e,p0=(C=t)+(t=w(sA,0,vA,0))|0,C=y+e|0,C=t>>>0>p0>>>0?C+1|0:C,e=w(nA,0,uA,0),t=y+C|0,C=e>>>0>(p0=e+p0|0)>>>0?t+1|0:t,s0=C=(W2=rA+p0|0)>>>0>>0?C+1|0:C,I0=C=C-((W2>>>0<4293918720)-1|0)|0,e=(t=C>>>21|0)+r|0,F0=e=(C=(2097151&C)<<11|(f0=W2- -1048576|0)>>>21)>>>0>(I1=C+O|0)>>>0?e+1|0:e,h0=C=e-((I1>>>0<4293918720)-1|0)|0,e=(2097151&C)<<11|(A0=I1- -1048576|0)>>>21,C=(C>>>21|0)+k0|0,p0=C=e>>>0>(XA=e+XA|0)>>>0?C+1|0:C,D0=C=C-((XA>>>0<4293918720)-1|0)|0,e=(t=C>>21)+I|0,Te=e=(e=(C=(2097151&C)<<11|(O=XA- -1048576|0)>>>21)>>>0>(r=C+T0|0)>>>0?e+1|0:e)-(((t=-2097152&Y2)>>>0>r>>>0)+je|0)|0,Y2=C=r-t|0,rA=C- -1048576|0,je=C=e-((C>>>0<4293918720)-1|0)|0,t=(e=C>>21)+MA|0,e=((C=(2097151&C)<<11|rA>>>21)>>>0>(r=C+K1|0)>>>0?t+1|0:t)+cA|0,d2=e=(e=(C=r)>>>0>(r=r+E0|0)>>>0?e+1|0:e)-(((t=-2097152&R2)>>>0>r>>>0)+Oe|0)|0,cA=C=r-t|0,I=C- -1048576|0,C1=C=e-((C>>>0<4293918720)-1|0)|0,t=(e=C>>21)+Ve|0,R2=C=(t=(C=(2097151&C)<<11|I>>>21)>>>0>(MA=C+Xe|0)>>>0?t+1|0:t)-((MA>>>0<4293918720)-1|0)|0,T0=s2- -1048576|0,k0=L0-((s2>>>0<4293918720)-1|0)|0,E0=(2097151&C)<<11|(r=MA- -1048576|0)>>>21,C=(C>>21)+L0|0,Oe=(s2=E0+s2|0)-(e=-2097152&T0)|0,Xe=(E0>>>0>s2>>>0?C+1|0:C)-((e>>>0>s2>>>0)+k0|0)|0,Ve=MA-(C=-2097152&r)|0,K1=t-((C>>>0>MA>>>0)+R2|0)|0,c1=cA-(C=-2097152&I)|0,s2=d2-((C>>>0>cA>>>0)+C1|0)|0,C=w(k2,h1,-997805,-1),e=y,t=C,C=w(u,i0,654183,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,r=(C=t)+(t=w(Q1,FA,136657,0))|0,C=y+e|0,e=Te+(t>>>0>r>>>0?C+1|0:C)|0,d2=(t=r+Y2|0)-(C=-2097152&rA)|0,C1=(e=t>>>0>>0?e+1|0:e)-((C>>>0>t>>>0)+je|0)|0,Y2=e2-(C=-2097152&u0)|0,L0=N0-((C>>>0>e2>>>0)+_0|0)|0,e=w(H,d,-997805,-1),C=y,t=e,e=w(iA,g0,654183,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=t)+(t=w(YA,HA,136657,0))|0,e=y+C|0,e=t>>>0>r>>>0?e+1|0:e,C=w(mA,hA,-683901,-1),t=y+e|0,e=W0+(C>>>0>(r=C+r|0)>>>0?t+1|0:t)|0,u0=(t=r+U2|0)-(C=-2097152&x0)|0,N0=(e=t>>>0>>0?e+1|0:e)-((C>>>0>t>>>0)+c0|0)|0,e=w(H,d,654183,0),C=y,t=e,e=w(iA,g0,470296,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,r=(e=w(YA,HA,-997805,-1))+t|0,t=y+C|0,e=r2+(e>>>0>r>>>0?t+1|0:t)|0,e=(C=r+s1|0)>>>0>>0?e+1|0:e,t=C,C=w(mA,hA,136657,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,r=(C=t)+(t=w(aA,EA,-683901,-1))|0,C=y+e|0,rA=r-(e=-2097152&C2)|0,I=(t>>>0>r>>>0?C+1|0:C)-((e>>>0>r>>>0)+VA|0)|0,r=(i[a+28|0]|i[a+29|0]<<8|i[a+30|0]<<16|i[a+31|0]<<24)>>>7|0,C=w(n,0,J,0),e=y,MA=(t=C)+(C=w(B,0,z,0))|0,t=y+e|0,t=C>>>0>MA>>>0?t+1|0:t,C=w(p,0,_A,0),e=y+t|0,e=C>>>0>(MA=C+MA|0)>>>0?e+1|0:e,t=w(M,x,sA,0),C=y+e|0,C=t>>>0>(MA=t+MA|0)>>>0?C+1|0:C,t=w(D,0,nA,0),e=y+C|0,e=t>>>0>(MA=t+MA|0)>>>0?e+1|0:e,t=w(q,0,K,0),C=y+e|0,C=t>>>0>(MA=t+MA|0)>>>0?C+1|0:C,e=w(V,0,$,0),t=y+C|0,t=e>>>0>(MA=e+MA|0)>>>0?t+1|0:t,C=w(b,w0,V0,0),e=y+t|0,e=C>>>0>(MA=C+MA|0)>>>0?e+1|0:e,t=w(Q,0,uA,0),C=y+e|0,C=t>>>0>(MA=t+MA|0)>>>0?C+1|0:C,t=w(h,0,fA,0),e=y+C|0,e=t>>>0>(MA=t+MA|0)>>>0?e+1|0:e,t=w(l,0,vA,0),C=y+e|0,C=t>>>0>(MA=t+MA|0)>>>0?C+1|0:C,e=w(v,0,wA,0),t=y+C|0,e=t=e>>>0>(MA=e+MA|0)>>>0?t+1|0:t,W0=(t=(2097151&m2)<<11|V2>>>21)+(C=r+MA|0)|0,C=(m2>>>21|0)+(e=C>>>0>>0?e+1|0:e)|0,E0=C=t>>>0>W0>>>0?C+1|0:C,R2=e=C-((W0>>>0<4293918720)-1|0)|0,t=(C=e>>>21|0)+I|0,cA=t=(e=(2097151&e)<<11|(w0=W0- -1048576|0)>>>21)>>>0>(x0=e+rA|0)>>>0?t+1|0:t,V2=e=t-((x0>>>0<4293918720)-1|0)|0,C=(C=e>>21)+N0|0,rA=C=(e=(2097151&e)<<11|(MA=x0- -1048576|0)>>>21)>>>0>(u0=e+u0|0)>>>0?C+1|0:C,C2=e=C-((u0>>>0<4293918720)-1|0)|0,t=(C=e>>21)+L0|0,m2=t=(e=(r=(2097151&e)<<11|(I=u0- -1048576|0)>>>21)+Y2|0)>>>0>>0?t+1|0:t,L0=e,C=w(e,t,-683901,-1),e=y+C1|0,N0=t=C+d2|0,r=C>>>0>t>>>0?e+1|0:e,e=w(u,i0,470296,0),C=y+p0|0,C=e>>>0>(XA=e+XA|0)>>>0?C+1|0:C,e=w(k2,h1,654183,0),C=y+(C-(((t=-2097152&O)>>>0>XA>>>0)+D0|0)|0)|0,C=e>>>0>(O=e+(XA-t|0)|0)>>>0?C+1|0:C,t=w(Q1,FA,-997805,-1),e=y+C|0,e=t>>>0>(O=t+O|0)>>>0?e+1|0:e,r2=t=u0-(C=-2097152&I)|0,V0=rA=rA-((C>>>0>u0>>>0)+C2|0)|0,O=(I=w(L0,m2,136657,0))+O|0,C=y+e|0,t=w(t,rA,-683901,-1),e=y+(I>>>0>O>>>0?C+1|0:C)|0,rA=e=t>>>0>(p0=t+O|0)>>>0?e+1|0:e,C2=C=e-((p0>>>0<4293918720)-1|0)|0,e=(2097151&C)<<11|(I=p0- -1048576|0)>>>21,C=(C>>21)+r|0,u0=e=(C=e>>>0>(O=e+N0|0)>>>0?C+1|0:C)-((O>>>0<4293918720)-1|0)|0,XA=(2097151&e)<<11|(r=O- -1048576|0)>>>21,e=(e>>21)+s2|0,c1=N0=XA+c1|0,N0=XA>>>0>N0>>>0?e+1|0:e,s2=O-(e=-2097152&r)|0,s1=C-((e>>>0>O>>>0)+u0|0)|0,d2=p0-(C=-2097152&I)|0,C1=rA-((C>>>0>p0>>>0)+C2|0)|0,C=w(u,i0,666643,0),t=F0+y|0,t=(I=C+I1|0)>>>0>>0?t+1|0:t,r=(C=w(k2,h1,470296,0))+(I-(e=-2097152&A0)|0)|0,e=y+(t-((e>>>0>I>>>0)+h0|0)|0)|0,e=C>>>0>r>>>0?e+1|0:e,t=w(Q1,FA,654183,0),C=y+e|0,O=r=t+r|0,r=t>>>0>r>>>0?C+1|0:C,I=x0-(C=-2097152&MA)|0,rA=cA-((C>>>0>x0>>>0)+V2|0)|0,C=w(H,d,470296,0),e=y,t=C,C=w(iA,g0,666643,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,C=w(YA,HA,654183,0),e=y+e|0,e=C>>>0>(t=C+t|0)>>>0?e+1|0:e,MA=(C=t)+(t=w(mA,hA,-997805,-1))|0,C=y+e|0,C=t>>>0>MA>>>0?C+1|0:C,e=w(aA,EA,136657,0),C=y+C|0,C=e>>>0>(t=e+MA|0)>>>0?C+1|0:C,MA=(e=w($A,qA,-683901,-1))+t|0,t=y+C|0,e=E0+(e>>>0>MA>>>0?t+1|0:t)|0,x0=(t=(2097151&i2)<<11|j0>>>21)+((MA=MA+W0|0)-(C=-2097152&w0)|0)|0,C=((e=MA>>>0>>0?e+1|0:e)-((C>>>0>MA>>>0)+R2|0)|0)+(i2>>21)|0,u0=C=t>>>0>x0>>>0?C+1|0:C,Y2=C=C-((x0>>>0<4293918720)-1|0)|0,e=I,I=(2097151&C)<<11|(A0=x0- -1048576|0)>>>21,C=(C>>21)+rA|0,C2=C=(t=e+I|0)>>>0>>0?C+1|0:C,W0=t,C=w(t,C,-683901,-1),e=y+r|0,e=C>>>0>(t=C+O|0)>>>0?e+1|0:e,r=(C=t)+(t=w(L0,m2,-997805,-1))|0,C=y+e|0,C=t>>>0>r>>>0?C+1|0:C,e=w(r2,V0,136657,0),t=y+C|0,j0=r=e+r|0,cA=e>>>0>r>>>0?t+1|0:t,O=W2-(C=-2097152&f0)|0,E0=s0-((C>>>0>W2>>>0)+I0|0)|0,e=w(J,0,fA,0),C=y,t=e,e=w(z,0,uA,0),C=y+C|0,C=e>>>0>(t=t+e|0)>>>0?C+1|0:C,e=w(_A,0,vA,0),C=y+C|0,C=e>>>0>(t=e+t|0)>>>0?C+1|0:C,r=(e=w(nA,0,wA,0))+t|0,t=y+C|0,e=e>>>0>r>>>0?t+1|0:t,w0=t=(C=(i[a+7|0]|i[a+8|0]<<8|i[a+9|0]<<16|i[a+10|0]<<24)>>>7&2097151)+r|0,MA=C>>>0>t>>>0?e+1|0:e,C=w(J,0,uA,0),e=y,t=C,C=w(z,0,wA,0),e=y+e|0,e=C>>>0>(t=t+C|0)>>>0?e+1|0:e,r=(C=t)+(t=w(nA,0,vA,0))|0,C=y+e|0,rA=r,r=t>>>0>r>>>0?C+1|0:C,C=(e=i[a+6|0])>>>24|0,I=e<<8|(R2=i[a+2|0]|i[a+3|0]<<8|i[a+4|0]<<16|i[a+5|0]<<24)>>>24,t=C,e=(C=i[a+7|0])>>>16|0,e|=t,t=r,I=t=(C=2097151&((3&e)<<30|(C=C<<16|I)>>>2))>>>0>(rA=C+rA|0)>>>0?t+1|0:t,U2=C=t-((rA>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(F0=rA- -1048576|0)>>>21,C=(C>>>21|0)+MA|0,XA=C=t>>>0>(s0=t+w0|0)>>>0?C+1|0:C,V2=C=C-((s0>>>0<4293918720)-1|0)|0,t=(e=C>>>21|0)+E0|0,t=(C=(2097151&C)<<11|(p0=s0- -1048576|0)>>>21)>>>0>(r=C+O|0)>>>0?t+1|0:t,e=w(k2,h1,666643,0),C=y+t|0,C=e>>>0>(r=e+r|0)>>>0?C+1|0:C,e=w(Q1,FA,470296,0),C=y+C|0,C=e>>>0>(t=e+r|0)>>>0?C+1|0:C,r=(e=t)+(t=w(W0,C2,136657,0))|0,e=y+C|0,e=t>>>0>r>>>0?e+1|0:e,C=w(L0,m2,654183,0),e=y+e|0,e=C>>>0>(t=C+r|0)>>>0?e+1|0:e,O=(C=w(r2,V0,-997805,-1))+t|0,t=y+e|0,E0=t=C>>>0>O>>>0?t+1|0:t,i2=C=t-((O>>>0<4293918720)-1|0)|0,t=(2097151&C)<<11|(w0=O- -1048576|0)>>>21,C=(C>>21)+cA|0,j0=t=(C=t>>>0>(r=t+j0|0)>>>0?C+1|0:C)-((r>>>0<4293918720)-1|0)|0,MA=(2097151&t)<<11|(cA=r- -1048576|0)>>>21,t=(t>>21)+C1|0,e2=f0=MA+d2|0,f0=MA>>>0>f0>>>0?t+1|0:t,MA=r,e=C,r=(x0-(C=-2097152&A0)|0)+(A0=(2097151&k0)<<11|T0>>>21)|0,C=(u0-((C>>>0>x0>>>0)+Y2|0)|0)+(k0>>21)|0,k0=C=r>>>0>>0?C+1|0:C,d2=C=C-((r>>>0<4293918720)-1|0)|0,x0=t=C>>21,C=w(k2=(2097151&C)<<11|(u0=r- -1048576|0)>>>21,t,-683901,-1),e=y+e|0,e=C>>>0>(t=C+MA|0)>>>0?e+1|0:e,C1=t-(C=-2097152&cA)|0,W2=e-((C>>>0>t>>>0)+j0|0)|0,e=w(k2,x0,136657,0),C=y+E0|0,C=e>>>0>(t=e+O|0)>>>0?C+1|0:C,I1=t-(e=-2097152&w0)|0,i2=C-((e>>>0>t>>>0)+i2|0)|0,e=w(Q1,FA,666643,0),C=y+(XA-(((t=-2097152&p0)>>>0>s0>>>0)+V2|0)|0)|0,C=e>>>0>(MA=e+(s0-t|0)|0)>>>0?C+1|0:C,t=w(W0,C2,-997805,-1),e=y+C|0,e=t>>>0>(MA=t+MA|0)>>>0?e+1|0:e,C=w(L0,m2,470296,0),t=y+e|0,t=C>>>0>(MA=C+MA|0)>>>0?t+1|0:t,e=w(r2,V0,654183,0),C=y+t|0,j0=MA=e+MA|0,E0=e>>>0>MA>>>0?C+1|0:C,t=R2>>>5&2097151,C=w(J,0,wA,0),e=y,cA=C,C=w(z,0,vA,0),e=y+e|0,C=C>>>0>(MA=cA+C|0)>>>0?e+1|0:e,cA=e=t+MA|0,t=C=e>>>0>>0?C+1|0:C,s0=(e=w(J,0,vA,0))+(C=(C=i[a+2|0])<<16&2031616|i[0|a]|i[a+1|0]<<8)|0,e=y,A0=e=C>>>0>s0>>>0?e+1|0:e,Y2=e=e-((s0>>>0<4293918720)-1|0)|0,C=(C=e>>>21|0)+t|0,p0=C=(e=(2097151&e)<<11|(XA=s0- -1048576|0)>>>21)>>>0>(T0=e+cA|0)>>>0?C+1|0:C,R2=e=C-((T0>>>0<4293918720)-1|0)|0,t=(2097151&e)<<11|(O=T0- -1048576|0)>>>21,e=(e>>>21|0)+I|0,e=t>>>0>(MA=t+rA|0)>>>0?e+1|0:e,t=w(W0,C2,654183,0),C=y+(e-(((I=-2097152&F0)>>>0>MA>>>0)+U2|0)|0)|0,C=t>>>0>(rA=t+(MA-I|0)|0)>>>0?C+1|0:C,e=w(L0,m2,666643,0),C=y+C|0,C=e>>>0>(t=e+rA|0)>>>0?C+1|0:C,w0=(e=t)+(t=w(r2,V0,470296,0))|0,e=y+C|0,cA=e=t>>>0>w0>>>0?e+1|0:e,V2=e=e-((w0>>>0<4293918720)-1|0)|0,t=(C=e>>21)+E0|0,F0=e=(t=(e=(2097151&e)<<11|(MA=w0- -1048576|0)>>>21)>>>0>(rA=e+j0|0)>>>0?t+1|0:t)-((rA>>>0<4293918720)-1|0)|0,E0=(2097151&e)<<11|(I=rA- -1048576|0)>>>21,e=(e>>21)+i2|0,m2=L0=E0+I1|0,E0=E0>>>0>L0>>>0?e+1|0:e,C=w(k2,x0,-997805,-1),e=y+t|0,e=C>>>0>(rA=C+rA|0)>>>0?e+1|0:e,i2=rA-(C=-2097152&I)|0,j0=e-((C>>>0>rA>>>0)+F0|0)|0,e=w(k2,x0,654183,0),C=y+cA|0,C=e>>>0>(t=e+w0|0)>>>0?C+1|0:C,L0=t-(e=-2097152&MA)|0,F0=C-((e>>>0>t>>>0)+V2|0)|0,C=w(W0,C2,470296,0),t=y+(p0-(((e=-2097152&O)>>>0>T0>>>0)+R2|0)|0)|0,t=C>>>0>(I=C+(T0-e|0)|0)>>>0?t+1|0:t,e=w(r2,V0,666643,0),C=y+t|0,rA=I=e+I|0,t=e>>>0>I>>>0?C+1|0:C,e=w(W0,C2,666643,0),C=y+(A0-((4095&Y2)+((I=-2097152&XA)>>>0>s0>>>0)|0)|0)|0,w0=C=e>>>0>(O=e+(s0-I|0)|0)>>>0?C+1|0:C,A0=C=C-((O>>>0<4293918720)-1|0)|0,I=(2097151&C)<<11|(cA=O- -1048576|0)>>>21,C=(C>>21)+t|0,t=C=I>>>0>(MA=I+rA|0)>>>0?C+1|0:C,XA=C=C-((MA>>>0<4293918720)-1|0)|0,I=(2097151&C)<<11|(rA=MA- -1048576|0)>>>21,C=(C>>21)+F0|0,I=I>>>0>(p0=I+L0|0)>>>0?C+1|0:C,C=w(k2,x0,470296,0),t=y+t|0,t=C>>>0>(e=C+MA|0)>>>0?t+1|0:t,MA=e-(C=-2097152&rA)|0,rA=t-((C>>>0>e>>>0)+XA|0)|0,e=w(k2,x0,666643,0),C=y+(w0-(((t=-2097152&cA)>>>0>O>>>0)+A0|0)|0)|0,e=(t=(C=e>>>0>(F0=e+(O-t|0)|0)>>>0?C+1|0:C)>>21)+rA|0,C=(C=(e=(C=(2097151&C)<<11|F0>>>21)>>>0>(A0=C+MA|0)>>>0?e+1|0:e)>>21)+I|0,e=(e=(C=(e=(2097151&e)<<11|A0>>>21)>>>0>(XA=e+p0|0)>>>0?C+1|0:C)>>21)+j0|0,t=(C=(e=(C=(2097151&C)<<11|XA>>>21)>>>0>(I=C+i2|0)>>>0?e+1|0:e)>>21)+E0|0,C=(e=(t=(e=(2097151&e)<<11|I>>>21)>>>0>(p0=e+m2|0)>>>0?t+1|0:t)>>21)+W2|0,e=(t=(C=(t=(2097151&t)<<11|p0>>>21)>>>0>(O=t+C1|0)>>>0?C+1|0:C)>>21)+f0|0,C=(C=(e=(C=(2097151&C)<<11|O>>>21)>>>0>(E0=C+e2|0)>>>0?e+1|0:e)>>21)+s1|0,e=(e=(C=(e=(2097151&e)<<11|E0>>>21)>>>0>(w0=e+s2|0)>>>0?C+1|0:C)>>21)+N0|0,t=(C=(e=(C=(2097151&C)<<11|w0>>>21)>>>0>(cA=C+c1|0)>>>0?e+1|0:e)>>21)+K1|0,C=(e=(t=(e=(2097151&e)<<11|cA>>>21)>>>0>(MA=e+Ve|0)>>>0?t+1|0:t)>>21)+Xe|0,u0=(f0=r-(e=-2097152&u0)|0)+((2097151&(C=(t=(2097151&t)<<11|MA>>>21)>>>0>(rA=t+Oe|0)>>>0?C+1|0:C))<<11|rA>>>21)|0,C=(k0-((e>>>0>r>>>0)+d2|0)|0)+(C>>21)|0,k0=e=(C=f0>>>0>u0>>>0?C+1|0:C)>>21,F0=(C=w(N0=(2097151&C)<<11|u0>>>21,e,666643,0))+(e=2097151&F0)|0,C=y,r=C=e>>>0>F0>>>0?C+1|0:C,c[0|o]=F0,c[o+1|0]=(255&C)<<24|F0>>>8,C=2097151&A0,e=w(N0,k0,470296,0)+C|0,t=y,C=(r>>21)+(C>>>0>e>>>0?t+1|0:t)|0,C=(A0=(f0=(2097151&r)<<11|F0>>>21)+e|0)>>>0>>0?C+1|0:C,c[o+4|0]=(2047&C)<<21|A0>>>11,e=C,t=A0,c[o+3|0]=(7&C)<<29|t>>>3,c[o+2|0]=31&((65535&r)<<16|F0>>>16)|t<<5,r=2097151&XA,XA=w(N0,k0,654183,0)+r|0,C=y,A0=(2097151&e)<<11|t>>>21,e=(e>>21)+(r=r>>>0>XA>>>0?C+1|0:C)|0,C=e=(XA=A0+XA|0)>>>0>>0?e+1|0:e,c[o+6|0]=(63&C)<<26|XA>>>6,r=XA,XA=0,c[o+5|0]=XA<<13|(1572864&t)>>>19|r<<2,t=2097151&I,I=w(N0,k0,-997805,-1)+t|0,e=y,e=t>>>0>I>>>0?e+1|0:e,XA=(2097151&(t=C))<<11|r>>>21,t=(C>>=21)+e|0,t=(I=XA+I|0)>>>0>>0?t+1|0:t,c[o+9|0]=(511&t)<<23|I>>>9,c[o+8|0]=(1&t)<<31|I>>>1,e=0,c[o+7|0]=e<<18|(2080768&r)>>>14|I<<7,e=2097151&p0,r=w(N0,k0,136657,0)+e|0,C=y,C=e>>>0>r>>>0?C+1|0:C,p0=(2097151&(e=t))<<11|I>>>21,e=C+(t=e>>21)|0,e=(r=p0+r|0)>>>0>>0?e+1|0:e,c[o+12|0]=(4095&e)<<20|r>>>12,t=r,c[o+11|0]=(15&e)<<28|t>>>4,r=0,c[o+10|0]=r<<15|(1966080&I)>>>17|t<<4,r=2097151&O,I=w(N0,k0,-683901,-1)+r|0,C=y,C=r>>>0>I>>>0?C+1|0:C,r=e,e=C+(e>>=21)|0,e=(r=(O=I)+(I=(2097151&r)<<11|t>>>21)|0)>>>0>>0?e+1|0:e,c[o+14|0]=(127&e)<<25|r>>>7,I=0,c[o+13|0]=I<<12|(1048576&t)>>>20|r<<1,C=e>>21,t=(e=(2097151&e)<<11|r>>>21)>>>0>(I=e+(2097151&E0)|0)>>>0?C+1|0:C,c[o+17|0]=(1023&t)<<22|I>>>10,c[o+16|0]=(3&t)<<30|I>>>2,e=0,c[o+15|0]=e<<17|(2064384&r)>>>15|I<<6,C=t>>21,C=(e=(2097151&t)<<11|I>>>21)>>>0>(t=e+(2097151&w0)|0)>>>0?C+1|0:C,c[o+20|0]=(8191&C)<<19|t>>>13,c[o+19|0]=(31&C)<<27|t>>>5,r=(e=2097151&cA)+(cA=(2097151&C)<<11|t>>>21)|0,e=C>>21,e=r>>>0>>0?e+1|0:e,cA=r,c[o+21|0]=r,w0=0,c[o+18|0]=w0<<14|(1835008&I)>>>18|t<<3,c[o+22|0]=(255&e)<<24|r>>>8,t=e>>21,t=(r=(I=(2097151&e)<<11|r>>>21)+(2097151&MA)|0)>>>0>>0?t+1|0:t,c[o+25|0]=(2047&t)<<21|r>>>11,c[o+24|0]=(7&t)<<29|r>>>3,c[o+23|0]=31&((65535&e)<<16|cA>>>16)|r<<5,C=t>>21,C=(e=(2097151&t)<<11|r>>>21)>>>0>(t=e+(2097151&rA)|0)>>>0?C+1|0:C,c[o+27|0]=(63&C)<<26|t>>>6,I=0,c[o+26|0]=I<<13|(1572864&r)>>>19|t<<2,e=C,C>>=21,e=(r=(rA=(2097151&e)<<11|t>>>21)+(I=2097151&u0)|0)>>>0>>0?C+1|0:C,c[o+31|0]=(131071&e)<<15|r>>>17,C=r,c[o+30|0]=(511&e)<<23|C>>>9,r=0,c[o+28|0]=r<<18|(2080768&t)>>>14|C<<7,c[o+29|0]=rA+u0>>>1,y0(_,64),y0(a,64),g&&(A[g>>2]=64,A[g+4>>2]=0),W=s+560|0,0}function ZA(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA,iA,hA,mA,HA,aA,EA,YA,qA,$A,g0,i0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0,O=0,rA=0,cA=0,XA=0,A0=0,s0=0,p0=0,f0=0,E0=0,w0=0,u0=0,k0=0,F0=0,N0=0,x0=0,L0=0,T0=0,j0=0,V0=0,W0=0,C2=0,e2=0,r2=0,i2=0,s2=0,k2=0,d2=0,m2=0,Y2=0,R2=0,U2=0,W2=0,V2=0,C1=0,c1=0,I1=0,s1=0,h1=0,Q1=0,K1=0;FA=w(t=(d=i[e+2|0])<<16&2031616|i[0|e]|i[e+1|0]<<8,0,r=(O=i[g+23|0]|i[g+24|0]<<8|i[g+25|0]<<16|i[g+26|0]<<24)>>>5&2097151,0),H=y,u=w(o=(d=i[g+23|0])<<16&2031616|i[g+21|0]|i[g+22|0]<<8,0,I=(VA=i[e+2|0]|i[e+3|0]<<8|i[e+4|0]<<16|i[e+5|0]<<24)>>>5&2097151,0),d=y+H|0,d=u>>>0>(FA=u+FA|0)>>>0?d+1|0:d,H=w(a=(i[e+7|0]|i[e+8|0]<<8|i[e+9|0]<<16|i[e+10|0]<<24)>>>7&2097151,0,_=(A0=i[g+15|0]|i[g+16|0]<<8|i[g+17|0]<<16|i[g+18|0]<<24)>>>6&2097151,0),u=y+d|0,I0=FA=H+FA|0,H=H>>>0>FA>>>0?u+1|0:u,u=(d=i[g+14|0])>>>24|0,c0=d<<8|(h0=i[g+10|0]|i[g+11|0]<<8|i[g+12|0]<<16|i[g+13|0]<<24)>>>24,u=w(s=2097151&((1&(D0=(d=u)|(u=(FA=i[g+15|0])>>>16|0)))<<31|(d=(FA<<=16)|c0)>>>1),0,h=(_0=i[e+10|0]|i[e+11|0]<<8|i[e+12|0]<<16|i[e+13|0]<<24)>>>4&2097151,0),H=y+H|0,D0=d=u+I0|0,FA=d>>>0>>0?H+1|0:H,H=(u=i[e+6|0])>>>24|0,I0=u<<8|VA>>>24,VA=n=2097151&((3&(H|=u=(d=i[e+7|0])>>>16|0))<<30|(d=I0|d<<16)>>>2),I0=0,c0=(d=i[g+19|0])<<8|A0>>>24,H=u=d>>>24|0,d=(u=i[g+20|0])>>>16|0,K=H=(d|=H)>>>3|0,u=w(VA,I0,B=(7&d)<<29|(u=u<<16|c0)>>>3,H),d=y+FA|0,d=u>>>0>(c0=u+D0|0)>>>0?d+1|0:d,H=w(Q=(VA=i[e+15|0]|i[e+16|0]<<8|i[e+17|0]<<16|i[e+18|0]<<24)>>>6&2097151,0,p=(i[g+7|0]|i[g+8|0]<<8|i[g+9|0]<<16|i[g+10|0]<<24)>>>7&2097151,0),u=y+d|0,I0=FA=H+c0|0,FA=H>>>0>FA>>>0?u+1|0:u,c0=(d=i[e+14|0])<<8|_0>>>24,d=u=d>>>24|0,H=(u=i[e+15|0])>>>16|0,u=w(l=2097151&((1&(H|=d))<<31|(d=(u<<=16)|c0)>>>1),0,v=h0>>>4&2097151,0),d=y+FA|0,_0=H=u+I0|0,I0=u>>>0>H>>>0?d+1|0:d,d=(u=i[e+19|0])>>>24|0,FA=u<<8|VA>>>24,H=(u=i[e+20|0])>>>16|0,D=(7&(H|=d))<<29|(u=FA|u<<16)>>>3,w0=d=H>>>3|0,FA=d,d=(u=i[g+6|0])>>>24|0,VA=u<<8|(D0=i[g+2|0]|i[g+3|0]<<8|i[g+4|0]<<16|i[g+5|0]<<24)>>>24,H=d,d=(u=i[g+7|0])>>>16|0,d=w(D,FA,b=2097151&((3&(d|=H))<<30|(u=u<<16|VA)>>>2),0),u=y+I0|0,H=d>>>0>(FA=d+_0|0)>>>0?u+1|0:u,d=w(M=(d=i[e+23|0])<<16&2031616|i[e+21|0]|i[e+22|0]<<8,0,x=D0>>>5&2097151,0),u=y+H|0,H=d>>>0>(FA=d+FA|0)>>>0?u+1|0:u,u=w(q=(d=i[g+2|0])<<16&2031616|i[0|g]|i[g+1|0]<<8,0,F0=(D0=i[e+23|0]|i[e+24|0]<<8|i[e+25|0]<<16|i[e+26|0]<<24)>>>5&2097151,0),d=y+H|0,VA=FA=u+FA|0,I0=u>>>0>FA>>>0?d+1|0:d,u=w(o,0,t,0),d=y,FA=(H=u)+(u=w(B,K,I,0))|0,H=y+d|0,H=u>>>0>FA>>>0?H+1|0:H,u=w(a,0,s,0),d=y+H|0,d=u>>>0>(FA=u+FA|0)>>>0?d+1|0:d,H=w(h,0,v,0),u=y+d|0,u=H>>>0>(FA=H+FA|0)>>>0?u+1|0:u,d=w(_,0,n,0),u=y+u|0,u=d>>>0>(H=d+FA|0)>>>0?u+1|0:u,FA=(d=H)+(H=w(Q,0,b,0))|0,d=y+u|0,d=H>>>0>FA>>>0?d+1|0:d,u=w(l,0,p,0),H=y+d|0,H=u>>>0>(FA=u+FA|0)>>>0?H+1|0:H,FA=(u=w(D,w0,x,0))+FA|0,d=y+H|0,H=w(M,0,q,0),u=y+(u>>>0>FA>>>0?d+1|0:d)|0,FA=u=H>>>0>(c0=H+FA|0)>>>0?u+1|0:u,u0=u=u-((c0>>>0<4293918720)-1|0)|0,d=(d=u>>>21|0)+I0|0,cA=H=(d=(u=(2097151&u)<<11|(p0=c0- -1048576|0)>>>21)>>>0>(VA=u+VA|0)>>>0?d+1|0:d)-((VA>>>0<4293918720)-1|0)|0,rA=VA-(u=-2097152&(XA=VA- -1048576|0))|0,MA=d-((u>>>0>VA>>>0)+H|0)|0,I0=(d=i[e+27|0])<<8|D0>>>24,H=u=d>>>24|0,VA=w(V=2097151&((3&(H|=d=(u=i[e+28|0])>>>16|0))<<30|(d=(u<<=16)|I0)>>>2),0,N0=(i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)>>>7|0,0),I0=y,d=(u=i[g+27|0])>>>24|0,g=w($=2097151&((3&(d|=H=(g=i[g+28|0])>>>16|0))<<30|(u=u<<8|O>>>24|g<<16)>>>2),0,x0=(i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24)>>>7|0,0),u=y+I0|0,u=g>>>0>(e=g+VA|0)>>>0?u+1|0:u,H=e,g=w(r,0,x0,0),e=y,I0=(d=g)+(g=w(F0,0,N0,0))|0,d=y+e|0,d=g>>>0>I0>>>0?d+1|0:d,g=w(V,0,$,0),d=y+d|0,I0=d=g>>>0>(D0=g+I0|0)>>>0?d+1|0:d,_0=g=d-((D0>>>0<4293918720)-1|0)|0,d=g>>>21|0,VA=(g=(2097151&g)<<11|(e=D0- -1048576|0)>>>21)+H|0,H=d+u|0,A0=d=(H=g>>>0>VA>>>0?H+1|0:H)-((VA>>>0<4293918720)-1|0)|0,g=VA-(u=-2097152&(h0=VA- -1048576|0))|0,z=u=H-((131071&d)+(u>>>0>VA>>>0)|0)|0,_A=g,g=w(g,u,666643,0),u=y+MA|0,j0=d=g+rA|0,VA=g>>>0>d>>>0?u+1|0:u,rA=D0-(g=-2097152&e)|0,f0=I0-((131071&_0)+(g>>>0>D0>>>0)|0)|0,g=w(M,0,N0,0),e=y,d=(u=g)+(g=w(F0,0,$,0))|0,u=y+e|0,u=g>>>0>d>>>0?u+1|0:u,e=(g=w(o,0,x0,0))+d|0,d=y+u|0,d=g>>>0>e>>>0?d+1|0:d,g=w(r,0,V,0),u=y+d|0,_0=e=g+e|0,g=g>>>0>e>>>0?u+1|0:u,e=w(r,0,F0,0),u=y,H=(d=e)+(e=w(D,w0,N0,0))|0,d=y+u|0,d=e>>>0>H>>>0?d+1|0:d,u=(e=w(M,0,$,0))+H|0,H=y+d|0,H=e>>>0>u>>>0?H+1|0:H,d=(e=w(B,K,x0,0))+u|0,u=y+H|0,u=e>>>0>d>>>0?u+1|0:u,MA=(e=w(o,0,V,0))+d|0,d=y+u|0,D0=d=e>>>0>MA>>>0?d+1|0:d,s0=e=d-((MA>>>0<4293918720)-1|0)|0,d=g+(u=e>>>21|0)|0,e=d=(e=(2097151&e)<<11|(I0=MA- -1048576|0)>>>21)>>>0>(_0=e+_0|0)>>>0?d+1|0:d,O=d=d-((_0>>>0<4293918720)-1|0)|0,u=rA,rA=(2097151&d)<<11|(g=_0- -1048576|0)>>>21,d=(d>>>21|0)+f0|0,sA=d=(H=u+rA|0)>>>0>>0?d+1|0:d,nA=g=_0-(u=-2097152&g)|0,fA=_0=e-((u>>>0>_0>>>0)+O|0)|0,uA=H,e=w(H,d,470296,0),u=y+VA|0,u=e>>>0>(d=e+j0|0)>>>0?u+1|0:u,g=w(g,_0,654183,0),H=y+u|0,f0=e=g+d|0,VA=g>>>0>e>>>0?H+1|0:H,O=MA-(g=-2097152&I0)|0,MA=D0-((g>>>0>MA>>>0)+s0|0)|0,g=w(D,w0,$,0),e=y,d=(u=g)+(g=w(Q,0,N0,0))|0,u=y+e|0,u=g>>>0>d>>>0?u+1|0:u,e=(g=w(o,0,F0,0))+d|0,d=y+u|0,d=g>>>0>e>>>0?d+1|0:d,g=w(r,0,M,0),H=y+d|0,H=g>>>0>(e=g+e|0)>>>0?H+1|0:H,g=w(_,0,x0,0),u=y+H|0,u=g>>>0>(e=g+e|0)>>>0?u+1|0:u,g=w(B,K,V,0),d=y+u|0,D0=e=g+e|0,I0=g>>>0>e>>>0?d+1|0:d,g=w(l,0,N0,0),e=y,d=(u=g)+(g=w(Q,0,$,0))|0,u=y+e|0,u=g>>>0>d>>>0?u+1|0:u,e=(g=w(r,0,D,w0))+d|0,d=y+u|0,d=g>>>0>e>>>0?d+1|0:d,g=w(B,K,F0,0),H=y+d|0,H=g>>>0>(e=g+e|0)>>>0?H+1|0:H,g=w(o,0,M,0),u=y+H|0,u=g>>>0>(e=g+e|0)>>>0?u+1|0:u,g=w(s,0,x0,0),d=y+u|0,d=g>>>0>(e=g+e|0)>>>0?d+1|0:d,g=w(_,0,V,0),u=y+d|0,g=u=g>>>0>(e=g+e|0)>>>0?u+1|0:u,k0=u=u-((e>>>0<4293918720)-1|0)|0,H=(d=u>>>21|0)+I0|0,rA=H=(u=(2097151&u)<<11|(s0=e- -1048576|0)>>>21)>>>0>(L0=u+D0|0)>>>0?H+1|0:H,e2=u=H-((L0>>>0<4293918720)-1|0)|0,I0=(2097151&u)<<11|(_0=L0- -1048576|0)>>>21,u=(u>>>21|0)+MA|0,vA=u=(H=I0+O|0)>>>0>>0?u+1|0:u,wA=H,u=w(H,u,-997805,-1),d=y+VA|0,MA=H=u+f0|0,VA=u>>>0>H>>>0?d+1|0:d,I0=c0,c0=FA,u=w(t,0,B,K),d=y,FA=(H=u)+(u=w(_,0,I,0))|0,H=y+d|0,H=u>>>0>FA>>>0?H+1|0:H,d=w(a,0,v,0),u=y+H|0,u=d>>>0>(FA=d+FA|0)>>>0?u+1|0:u,H=w(h,0,p,0),d=y+u|0,d=H>>>0>(FA=H+FA|0)>>>0?d+1|0:d,H=w(s,0,n,0),u=y+d|0,u=H>>>0>(FA=H+FA|0)>>>0?u+1|0:u,H=w(Q,0,x,0),d=y+u|0,d=H>>>0>(FA=H+FA|0)>>>0?d+1|0:d,u=w(l,0,b,0),H=y+d|0,H=u>>>0>(FA=u+FA|0)>>>0?H+1|0:H,d=w(D,w0,q,0),u=y+H|0,D0=FA=d+FA|0,FA=d>>>0>FA>>>0?u+1|0:u,u=w(t,0,_,0),d=y,H=u,u=w(I,0,s,0),d=y+d|0,d=u>>>0>(H=H+u|0)>>>0?d+1|0:d,O=(u=H)+(H=w(a,0,p,0))|0,u=y+d|0,u=H>>>0>O>>>0?u+1|0:u,H=w(h,0,b,0),d=y+u|0,d=H>>>0>(O=H+O|0)>>>0?d+1|0:d,u=w(n,0,v,0),H=y+d|0,H=u>>>0>(O=u+O|0)>>>0?H+1|0:H,O=(d=w(Q,0,q,0))+O|0,u=y+H|0,H=w(l,0,x,0),d=y+(d>>>0>O>>>0?u+1|0:u)|0,s2=d=H>>>0>(i2=H+O|0)>>>0?d+1|0:d,c1=d=d-((i2>>>0<4293918720)-1|0)|0,H=(2097151&d)<<11|(r2=i2- -1048576|0)>>>21,d=(d>>>21|0)+FA|0,E0=d=H>>>0>(k2=H+D0|0)>>>0?d+1|0:d,I1=d=d-((k2>>>0<4293918720)-1|0)|0,H=(2097151&d)<<11|(j0=k2- -1048576|0)>>>21,d=(d>>>21|0)+c0|0,d=H>>>0>(I0=H+I0|0)>>>0?d+1|0:d,u=w(uA,sA,666643,0),d=y+(d-(((H=-2097152&p0)>>>0>I0>>>0)+u0|0)|0)|0,d=u>>>0>(FA=u+(I0-H|0)|0)>>>0?d+1|0:d,H=w(nA,fA,470296,0),u=y+d|0,u=H>>>0>(FA=H+FA|0)>>>0?u+1|0:u,H=w(wA,vA,654183,0),d=y+u|0,f0=d=H>>>0>(V0=H+FA|0)>>>0?d+1|0:d,W2=d=d-((V0>>>0<4293918720)-1|0)|0,u=(u=d>>21)+VA|0,MA=u=(d=(2097151&d)<<11|(O=V0- -1048576|0)>>>21)>>>0>(u0=d+MA|0)>>>0?u+1|0:u,d2=d=u-((u0>>>0<4293918720)-1|0)|0,R2=(2097151&d)<<11|(p0=u0- -1048576|0)>>>21,D0=d>>21,u=w(t,0,$,0),d=y,H=u,u=w(r,0,I,0),d=y+d|0,d=u>>>0>(H=H+u|0)>>>0?d+1|0:d,FA=(u=w(a,0,B,K))+H|0,H=y+d|0,H=u>>>0>FA>>>0?H+1|0:H,d=w(_,0,h,0),u=y+H|0,u=d>>>0>(FA=d+FA|0)>>>0?u+1|0:u,H=w(o,0,n,0),d=y+u|0,d=H>>>0>(FA=H+FA|0)>>>0?d+1|0:d,H=w(Q,0,v,0),u=y+d|0,u=H>>>0>(FA=H+FA|0)>>>0?u+1|0:u,H=w(l,0,s,0),d=y+u|0,d=H>>>0>(FA=H+FA|0)>>>0?d+1|0:d,u=w(p,0,D,w0),H=y+d|0,H=u>>>0>(FA=u+FA|0)>>>0?H+1|0:H,d=w(x,0,F0,0),u=y+H|0,u=d>>>0>(FA=d+FA|0)>>>0?u+1|0:u,H=w(b,0,M,0),d=y+u|0,d=H>>>0>(FA=H+FA|0)>>>0?d+1|0:d,H=(u=FA)+(FA=w(V,0,q,0))|0,u=y+d|0,VA=H,I0=H>>>0>>0?u+1|0:u,W0=w(N0,0,x0,0),c0=H=(C2=y)-((W0>>>0<4293918720)-1|0)|0,d=W0-(u=-2097152&(FA=W0- -1048576|0))|0,u=(A0>>>21|0)+(u=C2-((524287&H)+(u>>>0>W0>>>0)|0)|0)|0,iA=u=(H=(h0=(2097151&A0)<<11|h0>>>21)+d|0)>>>0>>0?u+1|0:u,hA=H,d=(2097151&cA)<<11|XA>>>21,h0=w(H,u,666643,0)+d|0,u=y+(cA>>>21|0)|0,u=d>>>0>h0>>>0?u+1|0:u,H=w(_A,z,470296,0),d=y+u|0,d=(H>>>0>(h0=H+h0|0)>>>0?d+1|0:d)+I0|0,d=(u=VA+h0|0)>>>0>>0?d+1|0:d,h0=(H=w(uA,sA,654183,0))+u|0,u=y+d|0,U2=VA- -1048576|0,W0=I0=I0-((VA>>>0<4293918720)-1|0)|0,d=w(nA,fA,-997805,-1),H=y+(H>>>0>h0>>>0?u+1|0:u)|0,H=d>>>0>(VA=d+h0|0)>>>0?H+1|0:H,XA=(u=w(wA,vA,136657,0))+(VA-(d=-2097152&U2)|0)|0,d=y+(H-((d>>>0>VA>>>0)+I0|0)|0)|0,H=(A0=u>>>0>XA>>>0?d+1|0:d)+D0|0,m2=u=XA+R2|0,h0=H=u>>>0>>0?H+1|0:H,C2=L0-(u=-2097152&_0)|0,L0=rA-((u>>>0>L0>>>0)+e2|0)|0,mA=H=c0>>>21|0,d=(u=e)+(e=w(J=(2097151&c0)<<11|FA>>>21,H,-683901,-1))|0,u=y+g|0,rA=d-(g=-2097152&s0)|0,cA=(e>>>0>d>>>0?u+1|0:u)-((g>>>0>d>>>0)+k0|0)|0,g=w(r,0,Q,0),e=y,u=g,g=w(h,0,N0,0),d=y+e|0,d=g>>>0>(u=u+g|0)>>>0?d+1|0:d,g=w(l,0,$,0),H=y+d|0,H=g>>>0>(e=g+u|0)>>>0?H+1|0:H,g=w(o,0,D,w0),u=y+H|0,u=g>>>0>(e=g+e|0)>>>0?u+1|0:u,g=w(_,0,F0,0),u=y+u|0,u=g>>>0>(e=g+e|0)>>>0?u+1|0:u,g=w(B,K,M,0),d=y+u|0,d=g>>>0>(e=g+e|0)>>>0?d+1|0:d,g=w(v,0,x0,0),d=y+d|0,d=g>>>0>(e=g+e|0)>>>0?d+1|0:d,g=w(s,0,V,0),H=y+d|0,FA=e=g+e|0,g=g>>>0>e>>>0?H+1|0:H,e=w(h,0,$,0),u=y,d=e,e=w(a,0,N0,0),u=y+u|0,u=e>>>0>(d=d+e|0)>>>0?u+1|0:u,e=w(o,0,Q,0),u=y+u|0,u=e>>>0>(d=e+d|0)>>>0?u+1|0:u,H=(e=w(r,0,l,0))+d|0,d=y+u|0,d=e>>>0>H>>>0?d+1|0:d,e=w(B,K,D,w0),d=y+d|0,d=e>>>0>(u=e+H|0)>>>0?d+1|0:d,e=w(s,0,F0,0),H=y+d|0,H=e>>>0>(u=e+u|0)>>>0?H+1|0:H,d=(e=w(_,0,M,0))+u|0,u=y+H|0,u=e>>>0>d>>>0?u+1|0:u,e=w(p,0,x0,0),u=y+u|0,u=e>>>0>(d=e+d|0)>>>0?u+1|0:u,_0=(e=w(v,0,V,0))+d|0,d=y+u|0,D0=d=e>>>0>_0>>>0?d+1|0:d,Y2=e=d-((_0>>>0<4293918720)-1|0)|0,H=g+(u=e>>>21|0)|0,I0=H=(e=(2097151&e)<<11|(VA=_0- -1048576|0)>>>21)>>>0>(s0=e+FA|0)>>>0?H+1|0:H,k0=g=H-((s0>>>0<4293918720)-1|0)|0,d=(u=g>>>21|0)+cA|0,FA=d=(g=(2097151&g)<<11|(c0=s0- -1048576|0)>>>21)>>>0>(rA=g+rA|0)>>>0?d+1|0:d,cA=e=d-((rA>>>0<4293918720)-1|0)|0,H=(u=e>>21)+L0|0,HA=H=(e=(d=(2097151&e)<<11|(g=rA- -1048576|0)>>>21)+C2|0)>>>0>>0?H+1|0:H,e2=XA- -1048576|0,R2=d=A0-((XA>>>0<4293918720)-1|0)|0,V2=e,e=w(e,H,-683901,-1),u=y+h0|0,C2=u=(d=(u=e>>>0>(H=e+m2|0)>>>0?u+1|0:u)-(((e=-2097152&e2)>>>0>H>>>0)+d|0)|0)-(((h0=H-e|0)>>>0<4293918720)-1|0)|0,YA=h0-(e=-2097152&(L0=h0- -1048576|0))|0,s1=d-((e>>>0>h0>>>0)+u|0)|0,e=w(V2,HA,136657,0),d=y+(MA-(((u=-2097152&p0)>>>0>u0>>>0)+d2|0)|0)|0,C1=H=e+(u0-u|0)|0,e=e>>>0>H>>>0?d+1|0:d,T0=rA-(g&=-2097152)|0,p0=FA-((g>>>0>rA>>>0)+cA|0)|0,g=w(hA,iA,-683901,-1),u=y,d=g,g=w(J,mA,136657,0),u=y+u|0,d=I0+(g>>>0>(H=d+g|0)>>>0?u+1|0:u)|0,A0=(u=H+s0|0)-(g=-2097152&c0)|0,h0=(d=u>>>0>>0?d+1|0:d)-((g>>>0>u>>>0)+k0|0)|0,g=w(J,mA,-997805,-1),u=y+D0|0,u=g>>>0>(d=g+_0|0)>>>0?u+1|0:u,g=w(hA,iA,136657,0),u=y+u|0,u=g>>>0>(d=g+d|0)>>>0?u+1|0:u,H=(g=w(_A,z,-683901,-1))+d|0,d=y+u|0,d=g>>>0>H>>>0?d+1|0:d,I0=H-(g=-2097152&VA)|0,c0=d-((g>>>0>H>>>0)+Y2|0)|0,g=w(r,0,h,0),u=y,H=(d=g)+(g=w(a,0,$,0))|0,d=y+u|0,d=g>>>0>H>>>0?d+1|0:d,g=w(n,0,N0,0),u=y+d|0,u=g>>>0>(H=g+H|0)>>>0?u+1|0:u,g=w(Q,0,B,K),d=y+u|0,d=g>>>0>(H=g+H|0)>>>0?d+1|0:d,g=w(o,0,l,0),u=y+d|0,u=g>>>0>(H=g+H|0)>>>0?u+1|0:u,d=(g=w(_,0,D,w0))+H|0,H=y+u|0,H=g>>>0>d>>>0?H+1|0:H,u=(g=w(v,0,F0,0))+d|0,d=y+H|0,d=g>>>0>u>>>0?d+1|0:d,H=(g=w(s,0,M,0))+u|0,u=y+d|0,u=g>>>0>H>>>0?u+1|0:u,g=w(b,0,x0,0),d=y+u|0,d=g>>>0>(H=g+H|0)>>>0?d+1|0:d,g=w(p,0,V,0),u=y+d|0,FA=H=g+H|0,g=g>>>0>H>>>0?u+1|0:u,u=w(r,0,a,0),d=y,VA=(H=u)+(u=w(I,0,N0,0))|0,H=y+d|0,H=u>>>0>VA>>>0?H+1|0:H,u=w(o,0,h,0),d=y+H|0,d=u>>>0>(VA=u+VA|0)>>>0?d+1|0:d,H=w(n,0,$,0),u=y+d|0,u=H>>>0>(VA=H+VA|0)>>>0?u+1|0:u,H=w(_,0,Q,0),d=y+u|0,d=H>>>0>(VA=H+VA|0)>>>0?d+1|0:d,H=w(B,K,l,0),u=y+d|0,u=H>>>0>(VA=H+VA|0)>>>0?u+1|0:u,d=w(s,0,D,w0),H=y+u|0,H=d>>>0>(VA=d+VA|0)>>>0?H+1|0:H,u=w(p,0,F0,0),d=y+H|0,d=u>>>0>(VA=u+VA|0)>>>0?d+1|0:d,H=w(v,0,M,0),u=y+d|0,u=H>>>0>(VA=H+VA|0)>>>0?u+1|0:u,H=w(x,0,x0,0),d=y+u|0,d=H>>>0>(VA=H+VA|0)>>>0?d+1|0:d,H=w(b,0,V,0),u=y+d|0,u0=u=H>>>0>(d2=H+VA|0)>>>0?u+1|0:u,qA=u=u-((d2>>>0<4293918720)-1|0)|0,d=g+(d=u>>>21|0)|0,XA=d=(u=(2097151&u)<<11|(cA=d2- -1048576|0)>>>21)>>>0>(m2=u+FA|0)>>>0?d+1|0:d,$A=g=d-((m2>>>0<4293918720)-1|0)|0,u=(d=g>>>21|0)+c0|0,rA=u=(g=(2097151&g)<<11|(s0=m2- -1048576|0)>>>21)>>>0>(Y2=g+I0|0)>>>0?u+1|0:u,g0=g=u-((Y2>>>0<4293918720)-1|0)|0,d=(d=g>>21)+h0|0,D0=d=(g=(2097151&g)<<11|(MA=Y2- -1048576|0)>>>21)>>>0>(k0=g+A0|0)>>>0?d+1|0:d,h1=g=d-((k0>>>0<4293918720)-1|0)|0,u=(d=g>>21)+p0|0,aA=u=(g=(H=(2097151&g)<<11|(FA=k0- -1048576|0)>>>21)+T0|0)>>>0>>0?u+1|0:u,T0=g,g=w(g,u,-683901,-1),H=y+e|0,Q1=u=g+C1|0,VA=g>>>0>u>>>0?H+1|0:H,K1=V0-(g=-2097152&O)|0,W2=f0-((g>>>0>V0>>>0)+W2|0)|0,g=w(nA,fA,666643,0),u=y+(E0-(((e=-2097152&j0)>>>0>k2>>>0)+I1|0)|0)|0,u=g>>>0>(d=g+(k2-e|0)|0)>>>0?u+1|0:u,e=(g=w(wA,vA,470296,0))+d|0,d=y+u|0,j0=e,e=g>>>0>e>>>0?d+1|0:d,_0=i2-(g=-2097152&r2)|0,I0=s2-((g>>>0>i2>>>0)+c1|0)|0,g=w(t,0,s,0),u=y,d=g,g=w(I,0,v,0),H=y+u|0,H=g>>>0>(d=d+g|0)>>>0?H+1|0:H,g=w(a,0,b,0),u=y+H|0,u=g>>>0>(d=g+d|0)>>>0?u+1|0:u,H=(g=w(h,0,x,0))+d|0,d=y+u|0,d=g>>>0>H>>>0?d+1|0:d,g=w(n,0,p,0),u=y+d|0,u=g>>>0>(H=g+H|0)>>>0?u+1|0:u,g=w(l,0,q,0),d=y+u|0,c0=H=g+H|0,g=g>>>0>H>>>0?d+1|0:d,u=w(t,0,v,0),d=y,h0=(H=u)+(u=w(I,0,p,0))|0,H=y+d|0,H=u>>>0>h0>>>0?H+1|0:H,d=w(a,0,x,0),u=y+H|0,u=d>>>0>(h0=d+h0|0)>>>0?u+1|0:u,H=w(h,0,q,0),d=y+u|0,d=H>>>0>(h0=H+h0|0)>>>0?d+1|0:d,H=w(n,0,b,0),u=y+d|0,f0=u=H>>>0>(V0=H+h0|0)>>>0?u+1|0:u,i0=u=u-((V0>>>0<4293918720)-1|0)|0,H=g+(d=u>>>21|0)|0,p0=H=(u=(2097151&u)<<11|(O=V0- -1048576|0)>>>21)>>>0>(s2=u+c0|0)>>>0?H+1|0:H,c1=g=H-((s2>>>0<4293918720)-1|0)|0,u=(d=g>>>21|0)+I0|0,u=(g=(2097151&g)<<11|(A0=s2- -1048576|0)>>>21)>>>0>(H=g+_0|0)>>>0?u+1|0:u,g=w(wA,vA,666643,0),d=y+u|0,h0=d=g>>>0>(r2=g+H|0)>>>0?d+1|0:d,I1=g=d-((r2>>>0<4293918720)-1|0)|0,u=e+(u=g>>21)|0,I0=u=(g=(2097151&g)<<11|(_0=r2- -1048576|0)>>>21)>>>0>(E0=g+j0|0)>>>0?u+1|0:u,C1=g=u-((E0>>>0<4293918720)-1|0)|0,d=(u=g>>21)+W2|0,d=(g=(2097151&g)<<11|(c0=E0- -1048576|0)>>>21)>>>0>(e=g+K1|0)>>>0?d+1|0:d,g=w(V2,HA,-997805,-1),H=y+d|0,H=g>>>0>(u=g+e|0)>>>0?H+1|0:H,k2=g=k0-(e=-2097152&FA)|0,EA=d=D0-((e>>>0>k0>>>0)+h1|0)|0,FA=(e=w(T0,aA,136657,0))+u|0,u=y+H|0,g=w(g,d,-683901,-1),u=y+(e>>>0>FA>>>0?u+1|0:u)|0,FA=u=g>>>0>(D0=g+FA|0)>>>0?u+1|0:u,i2=g=u-((D0>>>0<4293918720)-1|0)|0,u=(d=g>>21)+VA|0,e=u=(VA=j0=(g=(2097151&g)<<11|(H=D0- -1048576|0)>>>21)+Q1|0)>>>0>>0?u+1|0:u,k0=u=u-((VA>>>0<4293918720)-1|0)|0,j0=(2097151&u)<<11|(g=VA- -1048576|0)>>>21,u=(u>>21)+s1|0,s1=W2=j0+YA|0,j0=j0>>>0>W2>>>0?u+1|0:u,h1=VA-(g&=-2097152)|0,Q1=e-((g>>>0>VA>>>0)+k0|0)|0,K1=D0-(g=-2097152&H)|0,W2=FA-((g>>>0>D0>>>0)+i2|0)|0,g=w(V2,HA,654183,0),d=y+(I0-(((e=-2097152&c0)>>>0>E0>>>0)+C1|0)|0)|0,d=g>>>0>(u=g+(E0-e|0)|0)>>>0?d+1|0:d,e=(g=w(T0,aA,-997805,-1))+u|0,u=y+d|0,u=g>>>0>e>>>0?u+1|0:u,g=w(k2,EA,136657,0),u=y+u|0,C1=e=g+e|0,g=g>>>0>e>>>0?u+1|0:u,i2=Y2-(e=-2097152&MA)|0,E0=rA-((e>>>0>Y2>>>0)+g0|0)|0,e=w(hA,iA,-997805,-1),u=y,H=(d=e)+(e=w(J,mA,654183,0))|0,d=y+u|0,d=e>>>0>H>>>0?d+1|0:d,e=w(_A,z,136657,0),u=y+d|0,u=e>>>0>(H=e+H|0)>>>0?u+1|0:u,e=w(uA,sA,-683901,-1),u=y+u|0,d=XA+(e>>>0>(H=e+H|0)>>>0?u+1|0:u)|0,MA=(u=H+m2|0)-(e=-2097152&s0)|0,s0=(d=u>>>0>>0?d+1|0:d)-((e>>>0>u>>>0)+$A|0)|0,e=w(hA,iA,654183,0),u=y,H=(d=e)+(e=w(J,mA,470296,0))|0,d=y+u|0,d=e>>>0>H>>>0?d+1|0:d,e=w(_A,z,-997805,-1),u=y+d|0,d=u0+(e>>>0>(H=e+H|0)>>>0?u+1|0:u)|0,d=(e=H+d2|0)>>>0>>0?d+1|0:d,H=(u=e)+(e=w(uA,sA,136657,0))|0,u=y+d|0,u=e>>>0>H>>>0?u+1|0:u,d=(e=w(nA,fA,-683901,-1))+H|0,H=y+u|0,H=e>>>0>d>>>0?H+1|0:H,c0=d-(e=-2097152&cA)|0,FA=H-((e>>>0>d>>>0)+qA|0)|0,e=w(t,0,N0,0),u=y,d=e,e=w(I,0,$,0),u=y+u|0,u=e>>>0>(d=d+e|0)>>>0?u+1|0:u,e=w(o,0,a,0),u=y+u|0,u=e>>>0>(d=e+d|0)>>>0?u+1|0:u,e=w(B,K,h,0),H=y+u|0,H=e>>>0>(d=e+d|0)>>>0?H+1|0:H,u=(e=w(r,0,n,0))+d|0,d=y+H|0,d=e>>>0>u>>>0?d+1|0:d,e=w(Q,0,s,0),d=y+d|0,d=e>>>0>(u=e+u|0)>>>0?d+1|0:d,H=(e=w(_,0,l,0))+u|0,u=y+d|0,u=e>>>0>H>>>0?u+1|0:u,e=w(v,0,D,w0),u=y+u|0,u=e>>>0>(d=e+H|0)>>>0?u+1|0:u,e=w(b,0,F0,0),H=y+u|0,H=e>>>0>(d=e+d|0)>>>0?H+1|0:H,u=(e=w(p,0,M,0))+d|0,d=y+H|0,d=e>>>0>u>>>0?d+1|0:d,e=w(q,0,x0,0),d=y+d|0,d=e>>>0>(u=e+u|0)>>>0?d+1|0:d,H=(e=w(V,0,x,0))+u|0,u=y+d|0,u=(W0>>>21|0)+(u=e>>>0>H>>>0?u+1|0:u)|0,D0=u=(e=(2097151&W0)<<11|U2>>>21)>>>0>(XA=e+H|0)>>>0?u+1|0:u,d2=e=u-((XA>>>0<4293918720)-1|0)|0,d=(d=e>>>21|0)+FA|0,I0=d=(e=(2097151&e)<<11|(VA=XA- -1048576|0)>>>21)>>>0>(rA=e+c0|0)>>>0?d+1|0:d,k0=e=d-((rA>>>0<4293918720)-1|0)|0,u=(d=e>>21)+s0|0,FA=u=(e=(2097151&e)<<11|(c0=rA- -1048576|0)>>>21)>>>0>(MA=e+MA|0)>>>0?u+1|0:u,cA=u=u-((MA>>>0<4293918720)-1|0)|0,d=(d=u>>21)+E0|0,E0=d=(u=(H=(2097151&u)<<11|(e=MA- -1048576|0)>>>21)+i2|0)>>>0>>0?d+1|0:d,U2=u,d=w(u,d,-683901,-1),u=y+g|0,s0=H=d+C1|0,g=d>>>0>H>>>0?u+1|0:u,u=w(V2,HA,470296,0),H=y+(h0-(((d=-2097152&_0)>>>0>r2>>>0)+I1|0)|0)|0,H=u>>>0>(_0=u+(r2-d|0)|0)>>>0?H+1|0:H,u=w(T0,aA,654183,0),d=y+H|0,d=u>>>0>(_0=u+_0|0)>>>0?d+1|0:d,H=w(k2,EA,-997805,-1),u=y+d|0,u=H>>>0>(_0=H+_0|0)>>>0?u+1|0:u,W0=e=MA-(d=-2097152&e)|0,w0=FA=FA-((d>>>0>MA>>>0)+cA|0)|0,_0=(H=w(U2,E0,136657,0))+_0|0,d=y+u|0,e=w(e,FA,-683901,-1),H=y+(H>>>0>_0>>>0?d+1|0:d)|0,FA=H=e>>>0>(h0=e+_0|0)>>>0?H+1|0:H,u0=d=H-((h0>>>0<4293918720)-1|0)|0,H=(2097151&d)<<11|(e=h0- -1048576|0)>>>21,d=(d>>21)+g|0,cA=H=(d=H>>>0>(_0=H+s0|0)>>>0?d+1|0:d)-((_0>>>0<4293918720)-1|0)|0,MA=(2097151&H)<<11|(g=_0- -1048576|0)>>>21,H=(H>>21)+W2|0,F0=s0=MA+K1|0,s0=MA>>>0>s0>>>0?H+1|0:H,N0=_0-(g&=-2097152)|0,x0=d-((g>>>0>_0>>>0)+cA|0)|0,m2=h0-(g=-2097152&e)|0,Y2=FA-((g>>>0>h0>>>0)+u0|0)|0,g=w(V2,HA,666643,0),d=y+(p0-(((e=-2097152&A0)>>>0>s2>>>0)+c1|0)|0)|0,d=g>>>0>(u=g+(s2-e|0)|0)>>>0?d+1|0:d,g=w(T0,aA,470296,0),H=y+d|0,H=g>>>0>(e=g+u|0)>>>0?H+1|0:H,g=w(k2,EA,654183,0),d=y+H|0,_0=e=g+e|0,g=g>>>0>e>>>0?d+1|0:d,c0=rA-(e=-2097152&c0)|0,FA=I0-((e>>>0>rA>>>0)+k0|0)|0,e=w(hA,iA,470296,0),u=y,d=e,e=w(J,mA,666643,0),u=y+u|0,u=e>>>0>(d=d+e|0)>>>0?u+1|0:u,e=w(_A,z,654183,0),H=y+u|0,H=e>>>0>(d=e+d|0)>>>0?H+1|0:H,u=(e=w(uA,sA,-997805,-1))+d|0,d=y+H|0,d=e>>>0>u>>>0?d+1|0:d,e=w(nA,fA,136657,0),d=y+d|0,u=D0+(e>>>0>(H=e+u|0)>>>0?d+1|0:d)|0,u=(e=H+XA|0)>>>0>>0?u+1|0:u,d=e,e=w(wA,vA,-683901,-1),u=y+u|0,u=e>>>0>(H=d+e|0)>>>0?u+1|0:u,cA=(e=(2097151&R2)<<11|e2>>>21)+(H-(d=-2097152&VA)|0)|0,d=(u-((d>>>0>H>>>0)+d2|0)|0)+(R2>>21)|0,rA=d=e>>>0>cA>>>0?d+1|0:d,k0=e=d-((cA>>>0<4293918720)-1|0)|0,d=(u=e>>21)+FA|0,R2=d=(e=(H=(2097151&e)<<11|(MA=cA- -1048576|0)>>>21)+c0|0)>>>0>>0?d+1|0:d,u0=e,e=w(e,d,-683901,-1),H=y+g|0,H=e>>>0>(u=e+_0|0)>>>0?H+1|0:H,g=w(U2,E0,-997805,-1),d=y+H|0,d=g>>>0>(e=g+u|0)>>>0?d+1|0:d,g=w(W0,w0,136657,0),u=y+d|0,e2=e=g+e|0,c0=g>>>0>e>>>0?u+1|0:u,VA=V0-(g=-2097152&O)|0,I0=f0-((g>>>0>V0>>>0)+i0|0)|0,g=w(t,0,p,0),e=y,u=g,g=w(I,0,b,0),d=y+e|0,d=g>>>0>(u=u+g|0)>>>0?d+1|0:d,g=w(a,0,q,0),d=y+d|0,d=g>>>0>(e=g+u|0)>>>0?d+1|0:d,g=w(n,0,x,0),u=y+d|0,g=g>>>0>(d=e=g+e|0)>>>0?u+1|0:u,e=w(t,0,b,0),u=y,FA=(H=e)+(e=w(I,0,x,0))|0,H=y+u|0,H=e>>>0>FA>>>0?H+1|0:H,e=w(n,0,q,0),u=y+H|0,e=u=e>>>0>(FA=e+FA|0)>>>0?u+1|0:u,V2=u=u-((FA>>>0<4293918720)-1|0)|0,H=u>>>21|0,XA=(u=(2097151&u)<<11|(p0=FA- -1048576|0)>>>21)+d|0,d=g+H|0,A0=d=u>>>0>XA>>>0?d+1|0:d,s2=g=d-((XA>>>0<4293918720)-1|0)|0,u=(H=g>>>21|0)+I0|0,u=(g=(2097151&g)<<11|(h0=XA- -1048576|0)>>>21)>>>0>(d=g+VA|0)>>>0?u+1|0:u,H=(g=w(T0,aA,666643,0))+d|0,d=y+u|0,d=g>>>0>H>>>0?d+1|0:d,g=w(k2,EA,470296,0),d=y+d|0,d=g>>>0>(u=g+H|0)>>>0?d+1|0:d,H=(g=w(u0,R2,136657,0))+u|0,u=y+d|0,u=g>>>0>H>>>0?u+1|0:u,d=(g=w(U2,E0,654183,0))+H|0,H=y+u|0,H=g>>>0>d>>>0?H+1|0:H,g=w(W0,w0,-997805,-1),u=y+H|0,D0=u=g>>>0>(_0=g+d|0)>>>0?u+1|0:u,r2=g=u-((_0>>>0<4293918720)-1|0)|0,d=(H=g>>21)+c0|0,e2=u=(d=(g=(u=(2097151&g)<<11|(VA=_0- -1048576|0)>>>21)+e2|0)>>>0>>0?d+1|0:d)-((g>>>0<4293918720)-1|0)|0,c0=(2097151&u)<<11|(I0=g- -1048576|0)>>>21,u=(u>>21)+Y2|0,i2=O=c0+m2|0,f0=c0>>>0>O>>>0?u+1|0:u,c0=g,H=d,d=(rA-(((u=-2097152&MA)>>>0>cA>>>0)+k0|0)|0)+(C2>>21)|0,O=d=(g=(cA-u|0)+(MA=(2097151&C2)<<11|L0>>>21)|0)>>>0>>0?d+1|0:d,d2=d=d-((g>>>0<4293918720)-1|0)|0,cA=u=d>>21,d=w(T0=(2097151&d)<<11|(rA=g- -1048576|0)>>>21,u,-683901,-1),u=y+H|0,u=d>>>0>(c0=d+c0|0)>>>0?u+1|0:u,m2=c0-(d=-2097152&I0)|0,Y2=u-((d>>>0>c0>>>0)+e2|0)|0,u=w(T0,cA,136657,0),d=y+D0|0,d=u>>>0>(H=u+_0|0)>>>0?d+1|0:d,k0=H-(u=-2097152&VA)|0,e2=d-((u>>>0>H>>>0)+r2|0)|0,H=(u=w(k2,EA,666643,0))+(XA-(d=-2097152&h0)|0)|0,d=y+(A0-((d>>>0>XA>>>0)+s2|0)|0)|0,d=u>>>0>H>>>0?d+1|0:d,c0=(u=w(u0,R2,-997805,-1))+H|0,H=y+d|0,H=u>>>0>c0>>>0?H+1|0:H,d=w(U2,E0,470296,0),u=y+H|0,u=d>>>0>(c0=d+c0|0)>>>0?u+1|0:u,H=w(W0,w0,654183,0),d=y+u|0,C2=c0=H+c0|0,D0=H>>>0>c0>>>0?d+1|0:d,c0=FA,FA=e,e=w(I,0,q,0),u=y,d=e,e=w(t,0,x,0),u=y+u|0,u=e>>>0>(H=d+e|0)>>>0?u+1|0:u,e=w(t,0,q,0),V0=d=y,XA=e,A0=e- -1048576|0,s2=e=d-((e>>>0<4293918720)-1|0)|0,d=e>>>21|0,MA=(e=(2097151&e)<<11|A0>>>21)+H|0,H=d+u|0,h0=H=e>>>0>MA>>>0?H+1|0:H,r2=e=H-((MA>>>0<4293918720)-1|0)|0,u=(d=e>>>21|0)+FA|0,u=(e=(2097151&e)<<11|(_0=MA- -1048576|0)>>>21)>>>0>(H=e+c0|0)>>>0?u+1|0:u,FA=(e=w(u0,R2,654183,0))+(H-(d=-2097152&p0)|0)|0,H=y+(u-((8191&V2)+(d>>>0>H>>>0)|0)|0)|0,H=e>>>0>FA>>>0?H+1|0:H,e=w(U2,E0,666643,0),d=y+H|0,d=e>>>0>(u=e+FA|0)>>>0?d+1|0:d,VA=(e=w(W0,w0,470296,0))+u|0,u=y+d|0,I0=u=e>>>0>VA>>>0?u+1|0:u,L0=e=u-((VA>>>0<4293918720)-1|0)|0,d=(d=e>>21)+D0|0,H=d=(e=(2097151&e)<<11|(c0=VA- -1048576|0)>>>21)>>>0>(FA=e+C2|0)>>>0?d+1|0:d,p0=u=d-((FA>>>0<4293918720)-1|0)|0,D0=(2097151&u)<<11|(e=FA- -1048576|0)>>>21,u=(u>>21)+e2|0,D0=D0>>>0>(E0=C2=D0+k0|0)>>>0?u+1|0:u,d=w(T0,cA,-997805,-1),u=y+H|0,U2=(FA=d+FA|0)-(e&=-2097152)|0,e2=(d>>>0>FA>>>0?u+1|0:u)-((e>>>0>FA>>>0)+p0|0)|0,e=w(T0,cA,654183,0),H=y+I0|0,H=e>>>0>(u=e+VA|0)>>>0?H+1|0:H,C2=u-(e=-2097152&c0)|0,L0=H-((e>>>0>u>>>0)+L0|0)|0,e=w(u0,R2,470296,0),d=y+(h0-((8191&r2)+((u=-2097152&_0)>>>0>MA>>>0)|0)|0)|0,d=e>>>0>(H=e+(MA-u|0)|0)>>>0?d+1|0:d,e=w(W0,w0,666643,0),d=y+d|0,d=e>>>0>(u=e+H|0)>>>0?d+1|0:d,FA=u,e=w(u0,R2,666643,0),H=y+(V0-((2047&s2)+((u=-2097152&A0)>>>0>XA>>>0)|0)|0)|0,VA=H=e>>>0>(_0=e+(XA-u|0)|0)>>>0?H+1|0:H,p0=e=H-((_0>>>0<4293918720)-1|0)|0,d=d+(u=e>>21)|0,A0=e=(d=(e=(2097151&e)<<11|(I0=_0- -1048576|0)>>>21)>>>0>(c0=e+FA|0)>>>0?d+1|0:d)-((c0>>>0<4293918720)-1|0)|0,H=(u=e>>21)+L0|0,e=(e=(2097151&e)<<11|(FA=c0- -1048576|0)>>>21)>>>0>(h0=e+C2|0)>>>0?H+1|0:H,u=w(T0,cA,470296,0),d=y+d|0,d=u>>>0>(H=u+c0|0)>>>0?d+1|0:d,FA=H-(u=-2097152&FA)|0,c0=d-((u>>>0>H>>>0)+A0|0)|0,u=w(T0,cA,666643,0),H=y+(VA-(((d=-2097152&I0)>>>0>_0>>>0)+p0|0)|0)|0,u=(d=(H=u>>>0>(MA=u+(_0-d|0)|0)>>>0?H+1|0:H)>>21)+c0|0,d=e+(H=(u=(H=(2097151&H)<<11|MA>>>21)>>>0>(FA=H+FA|0)>>>0?u+1|0:u)>>21)|0,u=(u=(d=(e=c0=(u=(2097151&u)<<11|FA>>>21)+h0|0)>>>0>>0?d+1|0:d)>>21)+e2|0,d=(d=(u=(d=(2097151&d)<<11|e>>>21)>>>0>(p0=d+U2|0)>>>0?u+1|0:u)>>21)+D0|0,H=(u=(d=(u=(2097151&u)<<11|p0>>>21)>>>0>(A0=u+E0|0)>>>0?d+1|0:d)>>21)+Y2|0,u=(d=(H=(d=(2097151&d)<<11|A0>>>21)>>>0>(h0=d+m2|0)>>>0?H+1|0:H)>>21)+f0|0,d=(H=(u=(H=(2097151&H)<<11|h0>>>21)>>>0>(_0=H+i2|0)>>>0?u+1|0:u)>>21)+x0|0,u=(u=(d=(u=(2097151&u)<<11|_0>>>21)>>>0>(D0=u+N0|0)>>>0?d+1|0:d)>>21)+s0|0,d=(d=(u=(d=(2097151&d)<<11|D0>>>21)>>>0>(VA=d+F0|0)>>>0?u+1|0:u)>>21)+Q1|0,H=(u=(d=(u=(2097151&u)<<11|VA>>>21)>>>0>(I0=u+h1|0)>>>0?d+1|0:d)>>21)+j0|0,d=(O-((g>>>0<(u=-2097152&rA)>>>0)+d2|0)|0)+((H=(d=(2097151&d)<<11|I0>>>21)>>>0>(c0=d+s1|0)>>>0?H+1|0:H)>>21)|0,O=u=(d=(rA=(f0=g-u|0)+((2097151&H)<<11|c0>>>21)|0)>>>0>>0?d+1|0:d)>>21,g=(g=w(f0=(2097151&d)<<11|rA>>>21,u,666643,0))+(u=2097151&MA)|0,H=y,c[0|C]=g,H=g>>>0>>0?H+1|0:H,c[C+1|0]=(255&H)<<24|g>>>8,u=2097151&FA,FA=w(f0,O,470296,0)+u|0,d=y,d=(H>>21)+(d=u>>>0>FA>>>0?d+1|0:d)|0,d=(FA=(MA=(2097151&H)<<11|g>>>21)+FA|0)>>>0>>0?d+1|0:d,c[C+4|0]=(2047&d)<<21|FA>>>11,c[C+3|0]=(7&d)<<29|FA>>>3,c[C+2|0]=31&((65535&H)<<16|g>>>16)|FA<<5,g=2097151&e,e=w(f0,O,654183,0)+g|0,H=y,H=g>>>0>e>>>0?H+1|0:H,g=d,u=(d>>=21)+H|0,g=u=(g=(2097151&g)<<11|FA>>>21)>>>0>(e=g+e|0)>>>0?u+1|0:u,c[C+6|0]=(63&u)<<26|e>>>6,d=0,c[C+5|0]=d<<13|(1572864&FA)>>>19|e<<2,d=2097151&p0,H=w(f0,O,-997805,-1)+d|0,u=y,u=d>>>0>H>>>0?u+1|0:u,d=(d=g>>21)+u|0,d=(g=(FA=H)+(H=(2097151&g)<<11|e>>>21)|0)>>>0>>0?d+1|0:d,c[C+9|0]=(511&d)<<23|g>>>9,c[C+8|0]=(1&d)<<31|g>>>1,u=0,c[C+7|0]=u<<18|(2080768&e)>>>14|g<<7,e=2097151&A0,u=w(f0,O,136657,0)+e|0,H=y,H=e>>>0>u>>>0?H+1|0:H,e=(FA=(2097151&(e=d))<<11|g>>>21)+u|0,u=(d>>=21)+H|0,u=e>>>0>>0?u+1|0:u,c[C+12|0]=(4095&u)<<20|e>>>12,c[C+11|0]=(15&u)<<28|e>>>4,d=0,c[C+10|0]=d<<15|(1966080&g)>>>17|e<<4,g=2097151&h0,H=w(f0,O,-683901,-1)+g|0,d=y,d=g>>>0>H>>>0?d+1|0:d,g=u,u=d+(u>>=21)|0,u=(g=(FA=H)+(H=(2097151&g)<<11|e>>>21)|0)>>>0>>0?u+1|0:u,c[C+14|0]=(127&u)<<25|g>>>7,d=0,c[C+13|0]=d<<12|(1048576&e)>>>20|g<<1,d=u>>21,d=(e=(u=(2097151&u)<<11|g>>>21)+(2097151&_0)|0)>>>0>>0?d+1|0:d,c[C+17|0]=(1023&d)<<22|e>>>10,c[C+16|0]=(3&d)<<30|e>>>2,u=0,c[C+15|0]=u<<17|(2064384&g)>>>15|e<<6,g=d,d>>=21,H=(g=(u=(2097151&g)<<11|e>>>21)+(2097151&D0)|0)>>>0>>0?d+1|0:d,c[C+20|0]=(8191&H)<<19|g>>>13,c[C+19|0]=(31&H)<<27|g>>>5,u=H>>21,u=(d=(FA=(2097151&H)<<11|g>>>21)+(2097151&VA)|0)>>>0>>0?u+1|0:u,FA=d,c[C+21|0]=d,d=0,c[C+18|0]=d<<14|(1835008&e)>>>18|g<<3,c[C+22|0]=(255&u)<<24|FA>>>8,d=u>>21,d=(g=(e=(2097151&u)<<11|FA>>>21)+(2097151&I0)|0)>>>0>>0?d+1|0:d,c[C+25|0]=(2047&d)<<21|g>>>11,c[C+24|0]=(7&d)<<29|g>>>3,c[C+23|0]=31&((65535&u)<<16|FA>>>16)|g<<5,u=(2097151&d)<<11|g>>>21,d>>=21,d=(e=u+(2097151&c0)|0)>>>0>>0?d+1|0:d,c[C+27|0]=(63&d)<<26|e>>>6,u=0,c[C+26|0]=u<<13|(1572864&g)>>>19|e<<2,g=d,u=d>>=21,u=(g=(FA=(2097151&g)<<11|e>>>21)+(H=2097151&rA)|0)>>>0>>0?u+1|0:u,c[C+31|0]=(131071&u)<<15|g>>>17,c[C+30|0]=(511&u)<<23|g>>>9,d=0,c[C+28|0]=d<<18|(2080768&e)>>>14|g<<7,c[C+29|0]=FA+rA>>>1}function Yg(C,g,e,t){for(var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0;I=(r=_<<3)+e|0,o=i[0|(r=g+r|0)]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,K=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,s=o<<24|(65280&o)<<8,h=(a=16711680&o)<<24,a=a>>>8|0,r=(B=-16777216&o)>>>24|0,A[I>>2]=h|B<<8|-16777216&((255&K)<<24|o>>>8)|16711680&((16777215&K)<<8|o>>>24)|K>>>8&65280|K>>>24,o=r|a|s,r=0,A[I+4>>2]=o|r,(0|(_=_+1|0))!=16;);for(g=A[C+4>>2],A[t>>2]=A[C>>2],A[t+4>>2]=g,g=A[C+60>>2],A[t+56>>2]=A[C+56>>2],A[t+60>>2]=g,g=A[C+52>>2],A[t+48>>2]=A[C+48>>2],A[t+52>>2]=g,g=A[C+44>>2],A[t+40>>2]=A[C+40>>2],A[t+44>>2]=g,g=A[C+36>>2],A[t+32>>2]=A[C+32>>2],A[t+36>>2]=g,g=A[C+28>>2],A[t+24>>2]=A[C+24>>2],A[t+28>>2]=g,g=A[C+20>>2],A[t+16>>2]=A[C+16>>2],A[t+20>>2]=g,g=A[C+12>>2],A[t+8>>2]=A[C+8>>2],A[t+12>>2]=g;I=A[t+56>>2],a=A[t+60>>2],r=A[(g=K=(J=YA<<3)+e|0)>>2],g=A[g+4>>2],x=o=A[t+36>>2],o=G(D=A[t+32>>2],o,50),_=y,o=G(D,x,46)^o,_^=y,o=G(D,x,23)^o,g=(y^_)+g|0,g=(r=o+r|0)>>>0>>0?g+1|0:g,r=(_=A[(o=J+34416|0)>>2])+r|0,g=A[o+4>>2]+g|0,g=r>>>0<_>>>0?g+1|0:g,o=(_=((h=A[t+48>>2])^(Q=A[t+40>>2]))&D^h)+r|0,r=(((b=A[t+52>>2])^(q=A[t+44>>2]))&x^b)+g|0,g=(o>>>0<_>>>0?r+1|0:r)+a|0,g=(I=o+I|0)>>>0>>0?g+1|0:g,_=(o=A[t+24>>2])+I|0,r=A[t+28>>2]+g|0,p=r=o>>>0>_>>>0?r+1|0:r,A[t+24>>2]=_,A[t+28>>2]=r,M=r=A[t+4>>2],r=G(o=A[t>>2],r,36),a=y,r=G(o,M,30)^r,a^=y,B=I+(G(o,M,25)^r)|0,r=g+(y^a)|0,r=I>>>0>B>>>0?r+1|0:r,s=(g=B)+(B=o&((a=A[t+16>>2])|(I=A[t+8>>2]))|I&a)|0,g=(g=r)+(M&((r=A[t+20>>2])|(l=A[t+12>>2]))|r&l)|0,B=g=s>>>0>>0?g+1|0:g,A[t+56>>2]=s,A[t+60>>2]=g,n=a,v=r,$=A[(g=iA=(V=8|J)+e|0)>>2],_A=A[g+4>>2],r=((x^q)&p^q)+b|0,r=(g=(a=(Q^D)&_^Q)+h|0)>>>0>>0?r+1|0:r,a=G(_,p,50),h=y,a=G(_,p,46)^a,h^=y,a=(b=G(_,p,23)^a)+g|0,g=(y^h)+r|0,g=(a>>>0>>0?g+1|0:g)+_A|0,g=(r=a+$|0)>>>0>>0?g+1|0:g,a=(a=r)+(h=A[(r=V+34416|0)>>2])|0,r=A[r+4>>2]+g|0,r=(g=a>>>0>>0?r+1|0:r)+v|0,b=r=(h=a+n|0)>>>0>>0?r+1|0:r,A[t+16>>2]=h,A[t+20>>2]=r,g=g+((l|M)&B|l&M)|0,g=(r=a+((o|I)&s|o&I)|0)>>>0>>0?g+1|0:g,a=G(s,B,36),n=y,a=G(s,B,30)^a,n^=y,v=r,r=G(s,B,25)^a,g=(y^n)+g|0,n=g=r>>>0>(a=v+r|0)>>>0?g+1|0:g,A[t+48>>2]=a,A[t+52>>2]=g,v=I,V=l,g=(l=A[(r=fA=(I=16|J)+e|0)>>2])+Q|0,r=A[r+4>>2]+q|0,r=g>>>0>>0?r+1|0:r,I=(Q=g)+(l=A[(g=I+34416|0)>>2])|0,g=A[g+4>>2]+r|0,g=((p^x)&b^x)+(g=I>>>0>>0?g+1|0:g)|0,g=(r=(r=I)+(I=(_^D)&h^D)|0)>>>0>>0?g+1|0:g,I=G(h,b,50),l=y,I=G(h,b,46)^I,l^=y,I=(Q=G(h,b,23)^I)+r|0,r=(y^l)+g|0,r=(Q=I>>>0>>0?r+1|0:r)+V|0,V=r=(l=I)>>>0>(I=I+v|0)>>>0?r+1|0:r,A[t+8>>2]=I,A[t+12>>2]=r,g=G(a,n,36),r=y,g=G(a,n,30)^g,r^=y,q=G(a,n,25)^g,g=((B|M)&n|B&M)+(y^r)|0,r=Q+((v=q+((o|s)&a|o&s)|0)>>>0>>0?g+1|0:g)|0,l=r=(Q=l+v|0)>>>0>>0?r+1|0:r,A[t+40>>2]=Q,A[t+44>>2]=r,v=o,r=(r=D)+(D=A[(g=hA=(o=24|J)+e|0)>>2])|0,g=A[g+4>>2]+x|0,g=r>>>0>>0?g+1|0:g,o=(q=r)+(D=A[(r=o+34416|0)>>2])|0,r=A[r+4>>2]+g|0,r=(p^(p^b)&V)+(r=o>>>0>>0?r+1|0:r)|0,r=(g=(g=o)+(o=_^(_^h)&I)|0)>>>0>>0?r+1|0:r,o=G(I,V,50),D=y,o=G(I,V,46)^o,D^=y,o=(x=G(I,V,23)^o)+g|0,g=(y^D)+r|0,r=(g=o>>>0>>0?g+1|0:g)+M|0,x=r=(M=o+v|0)>>>0>>0?r+1|0:r,A[t>>2]=M,A[t+4>>2]=r,r=G(Q,l,36),D=y,r=G(Q,l,30)^r,v=y^D,q=G(Q,l,25)^r,r=((B|n)&l|B&n)+(y^v)|0,g=g+((D=q+((a|s)&Q|a&s)|0)>>>0>>0?r+1|0:r)|0,D=g=(v=o+D|0)>>>0>>0?g+1|0:g,A[t+32>>2]=v,A[t+36>>2]=g,o=A[(r=wA=(g=32|J)+e|0)>>2],r=p+A[r+4>>2]|0,r=(o=o+_|0)>>>0<_>>>0?r+1|0:r,o=(_=A[(g=g+34416|0)>>2])+o|0,g=A[g+4>>2]+r|0,g=(b^(b^V)&x)+(g=o>>>0<_>>>0?g+1|0:g)|0,g=(r=(r=o)+(o=h^(I^h)&M)|0)>>>0>>0?g+1|0:g,o=G(M,x,50),_=y,o=G(M,x,46)^o,_^=y,o=(p=G(M,x,23)^o)+r|0,r=(y^_)+g|0,q=r=o>>>0

>>0?r+1|0:r,g=r,r=G(v,D,36),_=y,r=G(v,D,30)^r,p=y^_,$=G(v,D,25)^r,r=((n|l)&D|n&l)+(y^p)|0,g=((_=$+((a|Q)&v|a&Q)|0)>>>0<$>>>0?r+1|0:r)+g|0,_=g=(p=o+_|0)>>>0<_>>>0?g+1|0:g,A[t+24>>2]=p,A[t+28>>2]=g,r=B+q|0,q=r=(B=o+s|0)>>>0>>0?r+1|0:r,A[t+56>>2]=B,A[t+60>>2]=r,o=A[(g=uA=(r=40|J)+e|0)>>2],g=b+A[g+4>>2]|0,g=(o=o+h|0)>>>0>>0?g+1|0:g,o=(s=A[(r=r+34416|0)>>2])+o|0,r=A[r+4>>2]+g|0,r=(V^(x^V)&q)+(r=o>>>0>>0?r+1|0:r)|0,r=(g=(g=o)+(o=I^(I^M)&B)|0)>>>0>>0?r+1|0:r,o=G(B,q,50),s=y,o=G(B,q,46)^o,s^=y,o=(h=G(B,q,23)^o)+g|0,g=(y^s)+r|0,g=o>>>0>>0?g+1|0:g,r=G(p,_,36),s=y,r=G(p,_,30)^r,h=y^s,b=G(p,_,25)^r,r=((l|D)&_|l&D)+(y^h)|0,r=((s=b+((Q|v)&p|Q&v)|0)>>>0>>0?r+1|0:r)+g|0,s=r=(h=o+s|0)>>>0>>0?r+1|0:r,A[t+16>>2]=h,A[t+20>>2]=r,g=g+n|0,$=g=(n=o+a|0)>>>0>>0?g+1|0:g,A[t+48>>2]=n,A[t+52>>2]=g,o=A[(r=nA=(g=48|J)+e|0)>>2],r=V+A[r+4>>2]|0,r=(o=o+I|0)>>>0>>0?r+1|0:r,o=(I=A[(g=g+34416|0)>>2])+o|0,g=A[g+4>>2]+r|0,g=(x^(x^q)&$)+(g=o>>>0>>0?g+1|0:g)|0,g=(r=(r=o)+(o=M^(B^M)&n)|0)>>>0>>0?g+1|0:g,o=G(n,$,50),I=y,o=G(n,$,46)^o,I^=y,o=(a=G(n,$,23)^o)+r|0,r=(y^I)+g|0,a=r=o>>>0>>0?r+1|0:r,g=r,r=G(h,s,36),I=y,r=G(h,s,30)^r,b=y^I,V=G(h,s,25)^r,r=((_|D)&s|_&D)+(y^b)|0,g=((I=V+((p|v)&h|p&v)|0)>>>0>>0?r+1|0:r)+g|0,b=g=(r=I)>>>0>(I=o+I|0)>>>0?g+1|0:g,A[t+8>>2]=I,A[t+12>>2]=g,r=a+l|0,V=r=(_A=o+Q|0)>>>0>>0?r+1|0:r,A[t+40>>2]=_A,A[t+44>>2]=r,o=A[(g=vA=(r=56|J)+e|0)>>2],g=x+A[g+4>>2]|0,g=(o=o+M|0)>>>0>>0?g+1|0:g,o=(a=A[(r=r+34416|0)>>2])+o|0,r=A[r+4>>2]+g|0,r=(q^(q^$)&V)+(r=o>>>0>>0?r+1|0:r)|0,r=(g=(g=o)+(o=B^(B^n)&_A)|0)>>>0>>0?r+1|0:r,o=G(_A,V,50),a=y,o=G(_A,V,46)^o,a^=y,o=(l=G(_A,V,23)^o)+g|0,g=(y^a)+r|0,g=o>>>0>>0?g+1|0:g,r=G(I,b,36),a=y,r=G(I,b,30)^r,l=y^a,Q=G(I,b,25)^r,r=((_|s)&b|_&s)+(y^l)|0,r=((a=Q+((h|p)&I|h&p)|0)>>>0>>0?r+1|0:r)+g|0,l=r=(l=a)>>>0>(a=o+a|0)>>>0?r+1|0:r,A[t>>2]=a,A[t+4>>2]=r,g=g+D|0,x=g=(Q=o+v|0)>>>0>>0?g+1|0:g,A[t+32>>2]=Q,A[t+36>>2]=g,o=A[(r=mA=(g=64|J)+e|0)>>2],r=q+A[r+4>>2]|0,r=(o=o+B|0)>>>0>>0?r+1|0:r,o=(B=A[(g=g+34416|0)>>2])+o|0,g=A[g+4>>2]+r|0,g=($^(V^$)&x)+(g=o>>>0>>0?g+1|0:g)|0,g=(r=(r=o)+(o=n^(n^_A)&Q)|0)>>>0>>0?g+1|0:g,o=G(Q,x,50),B=y,o=G(Q,x,46)^o,B^=y,o=(M=G(Q,x,23)^o)+r|0,r=(y^B)+g|0,D=r=o>>>0>>0?r+1|0:r,g=r,r=G(a,l,36),B=y,r=G(a,l,30)^r,M=y^B,v=G(a,l,25)^r,r=((s|b)&l|s&b)+(y^M)|0,g=((B=v+((I|h)&a|I&h)|0)>>>0>>0?r+1|0:r)+g|0,B=g=(M=o+B|0)>>>0>>0?g+1|0:g,A[t+56>>2]=M,A[t+60>>2]=g,r=_+D|0,q=r=(_=o+p|0)>>>0>>0?r+1|0:r,A[t+24>>2]=_,A[t+28>>2]=r,o=A[(g=sA=(r=72|J)+e|0)>>2],g=$+A[g+4>>2]|0,g=(o=o+n|0)>>>0>>0?g+1|0:g,o=(n=A[(r=r+34416|0)>>2])+o|0,r=A[r+4>>2]+g|0,r=(V^(x^V)&q)+(r=o>>>0>>0?r+1|0:r)|0,r=(g=(g=o)+(o=_A^(Q^_A)&_)|0)>>>0>>0?r+1|0:r,o=G(_,q,50),n=y,o=G(_,q,46)^o,n^=y,o=(D=G(_,q,23)^o)+g|0,g=(y^n)+r|0,g=o>>>0>>0?g+1|0:g,r=G(M,B,36),n=y,r=G(M,B,30)^r,D=y^n,v=G(M,B,25)^r,r=((l|b)&B|l&b)+(y^D)|0,r=((n=v+((I|a)&M|I&a)|0)>>>0>>0?r+1|0:r)+g|0,n=r=(D=o+n|0)>>>0>>0?r+1|0:r,A[t+48>>2]=D,A[t+52>>2]=r,g=g+s|0,$=g=(s=o+h|0)>>>0>>0?g+1|0:g,A[t+16>>2]=s,A[t+20>>2]=g,g=(g=_A)+(h=A[(r=_A=(o=80|J)+e|0)>>2])|0,r=A[r+4>>2]+V|0,r=g>>>0>>0?r+1|0:r,o=(p=g)+(h=A[(g=o+34416|0)>>2])|0,g=A[g+4>>2]+r|0,g=(x^(x^q)&$)+(g=o>>>0>>0?g+1|0:g)|0,g=(r=(r=o)+(o=Q^(_^Q)&s)|0)>>>0>>0?g+1|0:g,o=G(s,$,50),h=y,o=G(s,$,46)^o,h^=y,o=(v=G(s,$,23)^o)+r|0,r=(y^h)+g|0,p=r=o>>>0>>0?r+1|0:r,g=r,r=G(D,n,36),h=y,r=G(D,n,30)^r,v=y^h,V=G(D,n,25)^r,r=((B|l)&n|B&l)+(y^v)|0,g=((h=V+((a|M)&D|a&M)|0)>>>0>>0?r+1|0:r)+g|0,h=g=(v=o+h|0)>>>0>>0?g+1|0:g,A[t+40>>2]=v,A[t+44>>2]=g,r=p+b|0,b=r=(p=o+I|0)>>>0>>0?r+1|0:r,A[t+8>>2]=p,A[t+12>>2]=r,r=34416+(g=88|J)|0,I=A[(g=z=g+e|0)>>2],o=A[r>>2]+I|0,g=A[r+4>>2]+A[g+4>>2]|0,r=x+(o>>>0>>0?g+1|0:g)|0,r=(q^(q^$)&b)+(r=(g=o+Q|0)>>>0>>0?r+1|0:r)|0,r=(g=(o=_^(_^s)&p)+g|0)>>>0>>0?r+1|0:r,o=G(p,b,50),I=y,o=G(p,b,46)^o,I^=y,o=(Q=G(p,b,23)^o)+g|0,g=(y^I)+r|0,g=o>>>0>>0?g+1|0:g,r=G(v,h,36),I=y,r=G(v,h,30)^r,Q=y^I,V=G(v,h,25)^r,r=((B|n)&h|B&n)+(y^Q)|0,r=((I=V+((D|M)&v|D&M)|0)>>>0>>0?r+1|0:r)+g|0,Q=r=(Q=I)>>>0>(I=o+I|0)>>>0?r+1|0:r,A[t+32>>2]=I,A[t+36>>2]=r,g=g+l|0,l=g=(r=a)>>>0>(a=o+a|0)>>>0?g+1|0:g,A[t>>2]=a,A[t+4>>2]=g,r=34416+(g=96|J)|0,V=A[(g=HA=g+e|0)>>2],o=A[r>>2]+V|0,r=A[r+4>>2]+A[g+4>>2]|0,g=q+(o>>>0>>0?r+1|0:r)|0,g=(r=o+_|0)>>>0<_>>>0?g+1|0:g,o=(_=s^(s^p)&a)+r|0,r=($^(b^$)&l)+g|0,r=o>>>0<_>>>0?r+1|0:r,g=G(a,l,50),_=y,g=G(a,l,46)^g,_^=y,q=o,o=G(a,l,23)^g,r=(y^_)+r|0,x=r=(g=q+o|0)>>>0>>0?r+1|0:r,o=g,g=G(I,Q,36),_=y,g=G(I,Q,30)^g,V=y^_,q=G(I,Q,25)^g,g=((h|n)&Q|h&n)+(y^V)|0,r=((_=q+((D|v)&I|D&v)|0)>>>0>>0?g+1|0:g)+r|0,_=r=(V=o+_|0)>>>0<_>>>0?r+1|0:r,A[t+24>>2]=V,A[t+28>>2]=r,r=B+x|0,B=r=(M=o+M|0)>>>0>>0?r+1|0:r,A[t+56>>2]=M,A[t+60>>2]=r,r=34416+(g=104|J)|0,x=A[(g=EA=g+e|0)>>2],o=A[r>>2]+x|0,g=A[r+4>>2]+A[g+4>>2]|0,r=$+(o>>>0>>0?g+1|0:g)|0,r=(g=o+s|0)>>>0>>0?r+1|0:r,o=(s=p^(a^p)&M)+g|0,g=(b^(l^b)&B)+r|0,g=o>>>0>>0?g+1|0:g,r=G(M,B,50),s=y,r=G(M,B,46)^r,s^=y,x=G(M,B,23)^r,r=(y^s)+g|0,q=r=(o=x+o|0)>>>0>>0?r+1|0:r,g=r,r=G(V,_,36),s=y,r=G(V,_,30)^r,x=y^s,$=G(V,_,25)^r,r=((h|Q)&_|h&Q)+(y^x)|0,g=((s=$+((I|v)&V|I&v)|0)>>>0<$>>>0?r+1|0:r)+g|0,s=g=(x=o+s|0)>>>0>>0?g+1|0:g,A[t+16>>2]=x,A[t+20>>2]=g,g=n+q|0,n=g=(D=o+D|0)>>>0>>0?g+1|0:g,A[t+48>>2]=D,A[t+52>>2]=g,r=34416+(g=112|J)|0,q=A[(o=$=g+e|0)>>2],g=A[r>>2]+q|0,r=A[r+4>>2]+A[o+4>>2]|0,r=b+(g>>>0>>0?r+1|0:r)|0,r=(l^(B^l)&n)+(r=(g=g+p|0)>>>0

>>0?r+1|0:r)|0,r=(g=(o=a^(a^M)&D)+g|0)>>>0>>0?r+1|0:r,o=G(D,n,50),p=y,o=G(D,n,46)^o,p^=y,o=(b=G(D,n,23)^o)+g|0,g=(y^p)+r|0,q=g=o>>>0>>0?g+1|0:g,r=g,g=G(x,s,36),p=y,g=G(x,s,30)^g,b=y^p,aA=G(x,s,25)^g,g=((_|Q)&s|_&Q)+(y^b)|0,r=((p=aA+((I|V)&x|I&V)|0)>>>0>>0?g+1|0:g)+r|0,p=r=(b=o+p|0)>>>0

>>0?r+1|0:r,A[t+8>>2]=b,A[t+12>>2]=r,r=h+q|0,o=r=(h=o+v|0)>>>0>>0?r+1|0:r,A[t+40>>2]=h,A[t+44>>2]=r,r=34416+(g=120|J)|0,J=A[(g=v=g+e|0)>>2],q=A[r>>2]+J|0,r=A[r+4>>2]+A[g+4>>2]|0,g=l+(q>>>0>>0?r+1|0:r)|0,g=(B^(B^n)&o)+(g=(r=a+q|0)>>>0>>0?g+1|0:g)|0,g=(r=(a=M^(D^M)&h)+r|0)>>>0>>0?g+1|0:g,a=G(h,o,50),B=y,a=G(h,o,46)^a,B^=y,o=(a=G(h,o,23)^a)+r|0,r=(y^B)+g|0,r=o>>>0>>0?r+1|0:r,a=o,B=r,g=r,r=G(b,p,36),h=y,r=G(b,p,30)^r,n=y^h,l=G(b,p,25)^r,r=((_|s)&p|_&s)+(y^n)|0,g=((h=l+((x|V)&b|x&V)|0)>>>0>>0?r+1|0:r)+g|0,g=(o=o+h|0)>>>0>>0?g+1|0:g,A[t>>2]=o,A[t+4>>2]=g,r=B+Q|0,r=(n=I)>>>0>(I=I+a|0)>>>0?r+1|0:r,A[t+32>>2]=I,A[t+36>>2]=r,(0|YA)!=64;)s=((YA=YA+16|0)<<3)+e|0,a=A[K>>2],_=A[K+4>>2],aA=A[sA>>2],B=g=A[sA+4>>2],r=g,o=g=A[$+4>>2],g=G(V=A[$>>2],g,45),I=y,n=((63&o)<<26|V>>>6)^(g=G(V,o,3)^g),g=(o>>>6^(h=y^I))+r|0,r=((I=n+aA|0)>>>0>>0?g+1|0:g)+_|0,r=(g=I+a|0)>>>0>>0?r+1|0:r,a=I=A[iA+4>>2],I=G(_=A[iA>>2],I,63),h=y,I=((127&a)<<25|_>>>7)^G(_,a,56)^I,r=(y^h^a>>>7)+r|0,I=r=I>>>0>(x=I+g|0)>>>0?r+1|0:r,A[s>>2]=x,A[s+4>>2]=r,_=($=A[_A>>2])+_|0,g=(s=A[_A+4>>2])+a|0,r=_>>>0<$>>>0?g+1|0:g,a=g=A[v+4>>2],g=G(q=A[v>>2],g,45),h=y,n=_,_=((63&a)<<26|q>>>6)^G(q,a,3)^g,r=(y^h^a>>>6)+r|0,_=_>>>0>(n=n+_|0)>>>0?r+1|0:r,r=G(h=A[fA>>2],g=A[fA+4>>2],63),l=y,p=n,n=((127&g)<<25|h>>>7)^G(h,g,56)^r,r=(y^l^g>>>7)+_|0,_=r=n>>>0>(b=p+n|0)>>>0?r+1|0:r,A[K+136>>2]=b,A[K+140>>2]=r,r=(_A=A[z>>2])+h|0,g=(h=A[z+4>>2])+g|0,n=G(x,I,45),l=y,n=(Q=((63&I)<<26|x>>>6)^G(x,I,3)^n)+r|0,r=(y^l^I>>>6)+(r>>>0<_A>>>0?g+1|0:g)|0,r=n>>>0>>0?r+1|0:r,l=g=A[hA+4>>2],g=G(Q=A[hA>>2],g,63),M=y,p=n,n=((127&l)<<25|Q>>>7)^G(Q,l,56)^g,r=(y^M^l>>>7)+r|0,n=r=n>>>0>(J=p+n|0)>>>0?r+1|0:r,A[K+144>>2]=J,A[K+148>>2]=r,Q=(iA=A[HA>>2])+Q|0,g=(g=l)+(l=A[HA+4>>2])|0,r=Q>>>0>>0?g+1|0:g,g=G(b,_,45),M=y,D=((63&_)<<26|b>>>6)^G(b,_,3)^g,r=(y^M^_>>>6)+r|0,r=(Q=D+Q|0)>>>0>>0?r+1|0:r,M=g=A[wA+4>>2],g=G(D=A[wA>>2],g,63),v=y,p=Q,Q=((127&M)<<25|D>>>7)^G(D,M,56)^g,r=(y^v^M>>>7)+r|0,Q=r=Q>>>0>(fA=p+Q|0)>>>0?r+1|0:r,A[K+152>>2]=fA,A[K+156>>2]=r,g=(hA=A[EA>>2])+D|0,r=(r=M)+(M=A[EA+4>>2])|0,D=G(J,n,45),v=y,D=((63&n)<<26|J>>>6)^G(J,n,3)^D,r=(y^v^n>>>6)+(g>>>0>>0?r+1|0:r)|0,D=(p=D+g|0)>>>0>>0?r+1|0:r,r=G(v=A[uA>>2],g=A[uA+4>>2],63),wA=y,z=p,p=((127&g)<<25|v>>>7)^(r=G(v,g,56)^r),r=(g>>>7^(uA=y^wA))+D|0,D=r=p>>>0>(wA=z+p|0)>>>0?r+1|0:r,A[K+160>>2]=wA,A[K+164>>2]=r,g=g+o|0,g=(r=v+V|0)>>>0>>0?g+1|0:g,v=G(fA,Q,45),p=y,v=(uA=((63&Q)<<26|fA>>>6)^G(fA,Q,3)^v)+r|0,r=(y^p^Q>>>6)+g|0,r=v>>>0>>0?r+1|0:r,p=A[nA>>2],nA=g=A[nA+4>>2],g=G(p,g,63),uA=y,g=G(p,nA,56)^g,z=v,r=(nA>>>7^(sA=y^uA))+r|0,v=r=(v=((127&nA)<<25|p>>>7)^g)>>>0>(uA=z+v|0)>>>0?r+1|0:r,A[K+168>>2]=uA,A[K+172>>2]=r,g=a+nA|0,g=(r=p+q|0)>>>0

>>0?g+1|0:g,z=p=A[vA+4>>2],p=G(sA=A[vA>>2],p,63),nA=y,p=(vA=((127&z)<<25|sA>>>7)^G(sA,z,56)^p)+r|0,r=(y^nA^z>>>7)+g|0,g=p>>>0>>0?r+1|0:r,r=G(wA,D,45),nA=y,r=G(wA,D,3)^r,vA=y^nA,nA=p,g=(D>>>6^vA)+g|0,p=g=(p=((63&D)<<26|wA>>>6)^r)>>>0>(nA=nA+p|0)>>>0?g+1|0:g,A[K+176>>2]=nA,A[K+180>>2]=g,HA=A[mA>>2],mA=g=A[mA+4>>2],vA=g,g=G(aA,B,63),r=y,EA=((127&B)<<25|aA>>>7)^G(aA,B,56)^g,g=(y^r^B>>>7)+_|0,r=((b=EA+b|0)>>>0>>0?g+1|0:g)+vA|0,r=(g=b+HA|0)>>>0>>0?r+1|0:r,_=G(nA,p,45),b=y,vA=(_=((63&p)<<26|nA>>>6)^G(nA,p,3)^_)+g|0,g=(y^b^p>>>6)+r|0,_=g=_>>>0>vA>>>0?g+1|0:g,A[K+192>>2]=vA,A[K+196>>2]=g,r=I+z|0,r=(g=x+sA|0)>>>0>>0?r+1|0:r,b=G(HA,mA,63),sA=y,z=((127&mA)<<25|HA>>>7)^G(HA,mA,56)^b,r=(y^sA^mA>>>7)+r|0,g=(b=z+g|0)>>>0>>0?r+1|0:r,r=G(uA,v,45),sA=y,r=G(uA,v,3)^r,mA=b,g=(v>>>6^(z=y^sA))+g|0,b=g=(b=((63&v)<<26|uA>>>6)^r)>>>0>(sA=mA+b|0)>>>0?g+1|0:g,A[K+184>>2]=sA,A[K+188>>2]=g,g=G(_A,h,63),r=y,g=((127&h)<<25|_A>>>7)^G(_A,h,56)^g,r=(y^r^h>>>7)+s|0,g=Q+(g>>>0>(z=g+$|0)>>>0?r+1|0:r)|0,g=(r=fA+z|0)>>>0>>0?g+1|0:g,Q=G(vA,_,45),fA=y,Q=G(vA,_,3)^Q,z=y^fA,fA=(Q^=(63&_)<<26|vA>>>6)+r|0,r=(_>>>6^z)+g|0,Q=r=Q>>>0>fA>>>0?r+1|0:r,A[K+208>>2]=fA,A[K+212>>2]=r,g=G($,s,63),r=y,z=G($,s,56)^g,r=((g=s>>>7|0)^y^r)+B|0,g=n+((s=($=z^((127&s)<<25|$>>>7))+aA|0)>>>0<$>>>0?r+1|0:r)|0,g=(r=s+J|0)>>>0>>0?g+1|0:g,B=G(sA,b,45),s=y,n=(B=((63&b)<<26|sA>>>6)^G(sA,b,3)^B)+r|0,r=(y^s^b>>>6)+g|0,B=r=B>>>0>n>>>0?r+1|0:r,A[K+200>>2]=n,A[K+204>>2]=r,g=G(hA,M,63),r=y,$=((127&M)<<25|hA>>>7)^G(hA,M,56)^g,g=(y^r^M>>>7)+l|0,r=v+((s=$+iA|0)>>>0<$>>>0?g+1|0:g)|0,r=(g=s+uA|0)>>>0>>0?r+1|0:r,s=G(fA,Q,45),v=y,$=g,g=Q>>>6|0,s=((63&Q)<<26|fA>>>6)^G(fA,Q,3)^s,r=(g^y^v)+r|0,s=r=s>>>0>(Q=$+s|0)>>>0?r+1|0:r,A[K+224>>2]=Q,A[K+228>>2]=r,g=G(iA,l,63),r=y,g=G(iA,l,56)^g,v=y^r,$=((127&l)<<25|iA>>>7)^g,g=((r=l>>>7|0)^v)+h|0,r=D+((l=$+_A|0)>>>0<$>>>0?g+1|0:g)|0,r=(g=l+wA|0)>>>0>>0?r+1|0:r,h=G(n,B,45),l=y,v=g,g=B>>>6|0,B=((63&B)<<26|n>>>6)^G(n,B,3)^h,g=(g^y^l)+r|0,B=g=(h=v+B|0)>>>0>>0?g+1|0:g,A[K+216>>2]=h,A[K+220>>2]=g,g=G(q,a,63),r=y,l=((127&a)<<25|q>>>7)^G(q,a,56)^g,r=(y^r^a>>>7)+o|0,r=b+((g=l+V|0)>>>0>>0?r+1|0:r)|0,g=(n=g+sA|0)>>>0>>0?r+1|0:r,r=G(Q,s,45),l=y,v=n,n=G(Q,s,3)^r,r=s>>>6|0,s=v+(n^=(63&s)<<26|Q>>>6)|0,g=(r^y^l)+g|0,A[K+240>>2]=s,A[K+244>>2]=s>>>0>>0?g+1|0:g,g=G(V,o,63),r=y,g=G(V,o,56)^g,s=y^r,r=((r=o>>>7|0)^s)+M|0,g=p+((g^=(127&o)<<25|V>>>7)>>>0>(o=g+hA|0)>>>0?r+1|0:r)|0,g=(r=o+nA|0)>>>0>>0?g+1|0:g,o=G(h,B,45),s=y,n=r,r=B>>>6|0,o=((63&B)<<26|h>>>6)^G(h,B,3)^o,r=(r^y^s)+g|0,o=r=o>>>0>(B=n+o|0)>>>0?r+1|0:r,A[K+232>>2]=B,A[K+236>>2]=r,g=G(x,I,63),r=y,n=G(x,I,56)^g,r=((g=I>>>7|0)^y^r)+a|0,g=_+((I=(s=n^((127&I)<<25|x>>>7))+q|0)>>>0>>0?r+1|0:r)|0,g=(r=I+vA|0)>>>0>>0?g+1|0:g,I=G(B,o,45),a=y,n=r,r=o>>>6|0,o=n+(I=((63&o)<<26|B>>>6)^G(B,o,3)^I)|0,r=(r^y^a)+g|0,A[K+248>>2]=o,A[K+252>>2]=o>>>0>>0?r+1|0:r;g=g+A[C+4>>2]|0,g=(e=o+A[C>>2]|0)>>>0>>0?g+1|0:g,A[C>>2]=e,A[C+4>>2]=g,r=A[C+12>>2]+A[t+12>>2]|0,g=(e=A[t+8>>2])+A[C+8>>2]|0,A[C+8>>2]=g,A[C+12>>2]=g>>>0>>0?r+1|0:r,r=A[C+20>>2]+A[t+20>>2]|0,g=(e=A[t+16>>2])+A[C+16>>2]|0,A[C+16>>2]=g,A[C+20>>2]=g>>>0>>0?r+1|0:r,g=A[C+28>>2]+A[t+28>>2]|0,e=(r=A[t+24>>2])+A[C+24>>2]|0,A[C+24>>2]=e,A[C+28>>2]=e>>>0>>0?g+1|0:g,r=A[C+36>>2]+A[t+36>>2]|0,g=(e=A[t+32>>2])+A[C+32>>2]|0,A[C+32>>2]=g,A[C+36>>2]=g>>>0>>0?r+1|0:r,g=A[C+44>>2]+A[t+44>>2]|0,e=(r=A[t+40>>2])+A[C+40>>2]|0,A[C+40>>2]=e,A[C+44>>2]=e>>>0>>0?g+1|0:g,r=A[C+52>>2]+A[t+52>>2]|0,g=(e=A[t+48>>2])+A[C+48>>2]|0,A[C+48>>2]=g,A[C+52>>2]=g>>>0>>0?r+1|0:r,r=A[C+60>>2]+A[t+60>>2]|0,g=(e=A[t+56>>2])+A[C+56>>2]|0,A[C+56>>2]=g,A[C+60>>2]=g>>>0>>0?r+1|0:r}function Ug(C,g){var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0,O=0,rA=0,cA=0,XA=0,A0=0;if(W=e=W-4096|0,C){A:{g:{if((0|(I=A[C+36>>2]))==2){if(I0=A[C+4>>2],(d=A[g>>2])|(qA=i[g+8|0])>>>0>=2)break g;d=0}else qA=i[g+8|0],I0=A[C+4>>2],d=A[g>>2];if($0(e+3072|0,0,1024),$0(e+2104|0,0,968),A[e+2048>>2]=d,A[e+2052>>2]=0,nA=A[g+4>>2],A[e+2064>>2]=qA,A[e+2068>>2]=0,A[e+2056>>2]=nA,A[e+2060>>2]=0,A[e+2072>>2]=A[C+16>>2],A[e+2076>>2]=0,nA=A[C+8>>2],A[e+2088>>2]=I,A[e+2092>>2]=0,A[e+2080>>2]=nA,A[e+2084>>2]=0,!A[C+20>>2])break A;for(nA=0;(D=127&s)||(nA=(mA=mA+1|0)?nA:nA+1|0,A[e+2096>>2]=mA,A[e+2100>>2]=nA,I=$0(e,0,1024),$0(I+1024|0,0,1024),iC(t=I+3072|0,I+2048|0,I),iC(t,I,I+1024|0)),D=A[4+(I=(e+1024|0)+(D<<3)|0)>>2],A[(t=(s<<3)+I0|0)>>2]=A[I>>2],A[t+4>>2]=D,(D=A[C+20>>2])>>>0>(s=s+1|0)>>>0;);break A}D=A[C+20>>2],O=1}if(!((nA=(D0=!(qA|d))<<1)>>>0>=D>>>0))for(I=A[C+24>>2],_0=A[g+4>>2],s=(mA=(M0(I,_0)+nA|0)+M0(D,qA)|0)+((mA>>>0)%(I>>>0)|0?-1:I-1|0)|0,rA=qA+1|0;;){t=A[C+28>>2],h0=((mA>>>0)%((I=A[C+24>>2])>>>0)|0)==1?mA-1|0:s,s=O?A[A[C>>2]+4>>2]+(h0<<10)|0:(nA<<3)+I0|0,r=A[s>>2],s=A[s+4>>2],A[g+12>>2]=nA,t=D0?_0:(s>>>0)%(t>>>0)|0;A:if(d)s=I+((0|t)==(0|_0)?~D+nA|0:(nA?0:-1)-D|0)|0,o=0,(0|qA)!=3&&(o=M0(D,rA));else{if(!qA){s=nA-1|0,o=0;break A}if(s=M0(D,qA),(0|t)==(0|_0)){s=(s+nA|0)-1|0,o=0;break A}s=s-!nA|0,o=0}D=o,a=(B=A[A[C>>2]+4>>2])+(M0(t,I)<<10)|0,n=(t=s-1|0)>>>0>(o=t+D|0)>>>0,w(r,0,r,0),w(s,0,y,0),D=o-(s=y)|0,t=0,h=0;A:{g:{C:{e:{t:{o:{i:{r:{c:{a:{if(s=n-(o>>>0>>0)|0){if(!I)break a;break c}$1=D-M0((D>>>0)/(I>>>0)|0,I)|0,Ag=0,y=0;break A}if(!D)break r;break i}if(!((r=I-1|0)&I))break o;_=0-(r=(A1(I)+33|0)-A1(s)|0)|0;break e}$1=0,Ag=s,y=0;break A}if((t=32-A1(s)|0)>>>0<31)break t;break C}if($1=r&D,Ag=0,(0|I)==1)break g;I=31&(D=qe(I)),(63&D)>>>0>=32?r=s>>>I|0:(t=s>>>I|0,r=0),y=t;break A}r=t+1|0,_=63-t|0}if(o=31&(t=63&r),t>>>0>=32?(t=0,n=s>>>o|0):(t=s>>>o|0,n=((1<>>o),o=31&(_&=63),_>>>0>=32?(s=D<>>32-o|s<>>31,n=(t=n<<1|s>>>31)-(V=I&(o=v-(z+(t>>>0>_>>>0)|0)>>31))|0,t=z-(t>>>0>>0)|0,s=s<<1|D>>>31,D=h|D<<1,h=1&o,r=r-1|0;);$1=n,Ag=t,y=s<<1|D>>>31;break A}$1=D,Ag=s,s=0}y=s}if(y=Ag,s=($1<<10)+a|0,I=B+(h0<<10)|0,MA=B+(mA<<10)|0,d)iC(I,s,MA);else{for(P0(e+3072|0,s,1024),s=0;o=A[(r=(D=s<<3)+(t=e+3072|0)|0)>>2],B=A[(n=I+D|0)>>2],n=A[r+4>>2]^A[n+4>>2],A[r>>2]=o^B,A[r+4>>2]=n,n=A[(r=(o=8|D)+t|0)>>2],B=A[(o=I+o|0)>>2],o=A[r+4>>2]^A[o+4>>2],A[r>>2]=n^B,A[r+4>>2]=o,n=A[(r=(o=16|D)+t|0)>>2],B=A[(o=I+o|0)>>2],o=A[r+4>>2]^A[o+4>>2],A[r>>2]=n^B,A[r+4>>2]=o,o=A[(D=(r=24|D)+t|0)>>2],n=A[(r=r+I|0)>>2],r=A[D+4>>2]^A[r+4>>2],A[D>>2]=o^n,A[D+4>>2]=r,(0|(s=s+4|0))!=128;);for(P0(e+2048|0,t,1024),D=0,s=0;o=(n=A[56+(I=(e+3072|0)+(s<<7)|0)>>2])+(r=A[I+24>>2])|0,B=(v=A[I+60>>2])+(t=A[I+28>>2])|0,h=w(r<<1&-2,1&(t<<1|r>>>31),n,0),r=y+(r>>>0>o>>>0?B+1|0:B)|0,B=(t=h+o|0)>>>0>>0?r+1|0:r,a=(h=G(t^A[I+120>>2],B^A[I+124>>2],32))+(r=A[I+88>>2])|0,_=(l=y)+(o=A[I+92>>2])|0,z=w(h,0,r<<1&-2,1&(o<<1|r>>>31)),r=y+(r>>>0>a>>>0?_+1|0:_)|0,V=G(n^(o=z+a|0),v^(uA=o>>>0>>0?r+1|0:r),40),Q=1+(r=B+(VA=y)|0)|0,_=r,n=(r=t+V|0)>>>0>>0?Q:_,z=(t=w(V,0,t<<1&-2,1&(B<<1|t>>>31)))+r|0,r=y+n|0,l=G(z^h,l^(aA=t>>>0>z>>>0?r+1|0:r),48),K=Q=y,n=(p=A[I+44>>2])+(t=A[I+12>>2])|0,h=(B=A[I+40>>2])+(r=A[I+8>>2])|0,a=w(r<<1&-2,1&(t<<1|r>>>31),B,0),r=y+(r>>>0>h>>>0?n+1|0:n)|0,a=(t=h+a|0)>>>0>>0?r+1|0:r,h=(_=G(t^A[I+104>>2],a^A[I+108>>2],32))+(n=A[I+72>>2])|0,v=(M=y)+(r=A[I+76>>2])|0,b=w(_,0,n<<1&-2,1&(r<<1|n>>>31)),n=y+(h>>>0>>0?v+1|0:v)|0,h=G($=B^(r=b+h|0),p^(B=r>>>0>>0?n+1|0:n),40),b=1+(n=a+(v=y)|0)|0,p=n,p=(n=t+h|0)>>>0>>0?b:p,t=w(h,0,t<<1&-2,1&(a<<1|t>>>31)),a=y+p|0,p=G((n=t+n|0)^_,M^(EA=t>>>0>n>>>0?a+1|0:a),48),b=1+(t=B+(c0=y)|0)|0,_=t,a=(t=r+p|0)>>>0>>0?b:_,B=t+(r=w(p,0,r<<1&-2,1&(B<<1|r>>>31)))|0,t=y+a|0,M=G(h^B,v^($A=r>>>0>B>>>0?t+1|0:t),1),H=$=y,h=(J=A[I+36>>2])+(t=A[I+4>>2])|0,_=(a=A[I+32>>2])+(r=A[I>>2])|0,v=w(r<<1&-2,1&(t<<1|r>>>31),a,0),r=y+(r>>>0>_>>>0?h+1|0:h)|0,_=(t=_+v|0)>>>0>>0?r+1|0:r,v=(hA=G(t^A[I+96>>2],_^A[I+100>>2],32))+(r=A[(h=HA=I- -64|0)>>2])|0,b=(i0=y)+(h=A[h+4>>2])|0,vA=w(hA,0,r<<1&-2,1&(h<<1|r>>>31)),r=y+(r>>>0>v>>>0?b+1|0:b)|0,b=G(a^(h=vA+v|0),J^(vA=h>>>0>>0?r+1|0:r),40),v=1+(r=_+(u=y)|0)|0,a=r,a=(r=t+b|0)>>>0>>0?v:a,t=r+(_=w(b,0,t<<1&-2,1&(_<<1|t>>>31)))|0,r=y+a|0,a=1+(r=(YA=t>>>0<_>>>0?r+1|0:r)+$|0)|0,_=r,_=(r=t+M|0)>>>0>>0?a:_,a=r+(v=w(M,0,t<<1&-2,1&(YA<<1|t>>>31)))|0,r=y+_|0,Q=G(a^l,(sA=a>>>0>>0?r+1|0:r)^Q,32),wA=y,v=(x=A[I+52>>2])+(r=A[I+20>>2])|0,J=($=A[I+48>>2])+(_=A[I+16>>2])|0,_A=w(_<<1&-2,1&(r<<1|_>>>31),$,0),_=y+(_>>>0>J>>>0?v+1|0:v)|0,J=(r=J+_A|0)>>>0<_A>>>0?_+1|0:_,iA=(_A=G(r^A[I+112>>2],J^A[I+116>>2],32))+(v=A[I+80>>2])|0,fA=(FA=y)+(_=A[I+84>>2])|0,q=w(_A,0,v<<1&-2,1&(_<<1|v>>>31)),v=y+(v>>>0>iA>>>0?fA+1|0:fA)|0,$=G($^(_=q+iA|0),x^(iA=_>>>0>>0?v+1|0:v),40),q=1+(v=J+(x=y)|0)|0,fA=v,fA=(v=r+$|0)>>>0>>0?q:fA,r=w($,0,r<<1&-2,1&(J<<1|r>>>31)),J=y+fA|0,J=G(q=(v=r+v|0)^_A,FA^(_A=r>>>0>v>>>0?J+1|0:J),48),q=1+(r=iA+(FA=y)|0)|0,fA=r,fA=(r=_+J|0)>>>0<_>>>0?q:fA,_=w(J,0,_<<1&-2,1&(iA<<1|_>>>31)),iA=y+fA|0,q=1+(_=(iA=(r=_+r|0)>>>0<_>>>0?iA+1|0:iA)+wA|0)|0,fA=_,fA=(_=r+Q|0)>>>0>>0?q:fA,g0=M^(_=(q=w(Q,0,r<<1&-2,1&(iA<<1|r>>>31)))+_|0),M=y+fA|0,M=G(g0,H^(fA=_>>>0>>0?M+1|0:M),40),cA=1+(q=sA+(H=y)|0)|0,g0=q,g0=(q=a+M|0)>>>0>>0?cA:g0,a=(sA=w(M,0,a<<1&-2,1&(sA<<1|a>>>31)))+q|0,A[I>>2]=a,q=y+g0|0,sA=a>>>0>>0?q+1|0:q,A[I+4>>2]=sA,a=G(a^Q,sA^wA,48),A[I+120>>2]=a,Q=y,A[I+124>>2]=Q,g0=1+(Q=Q+fA|0)|0,q=Q,sA=(Q=a+_|0)>>>0<_>>>0?g0:q,a=(_=w(a,0,_<<1&-2,1&(fA<<1|_>>>31)))+Q|0,A[I+80>>2]=a,Q=y+sA|0,_=a>>>0<_>>>0?Q+1|0:Q,A[I+84>>2]=_,XA=I,A0=G(a^M,_^H,1),A[XA+40>>2]=A0,A[I+44>>2]=y,a=G(r^$,x^iA,1),Q=1+(r=EA+($=y)|0)|0,_=r,_=(r=a+n|0)>>>0>>0?Q:_,r=r+(M=w(a,0,n<<1&-2,1&(EA<<1|n>>>31)))|0,n=y+_|0,_=G(t^hA,YA^i0,48),n=G(_^r,(M=r>>>0>>0?n+1|0:n)^(EA=y),32),hA=Q=y,x=1+(t=uA+K|0)|0,K=t,YA=(t=o+l|0)>>>0>>0?x:K,o=w(l,0,o<<1&-2,1&(uA<<1|o>>>31)),l=y+YA|0,K=1+(o=(l=(t=o+t|0)>>>0>>0?l+1|0:l)+Q|0)|0,Q=o,Q=(o=t+n|0)>>>0>>0?K:Q,K=a^(o=(uA=w(n,0,t<<1&-2,1&(l<<1|t>>>31)))+o|0),a=y+Q|0,a=G(K,$^(Q=o>>>0>>0?a+1|0:a),40),x=1+(uA=M+($=y)|0)|0,K=uA,YA=(uA=r+a|0)>>>0>>0?x:K,K=n^(r=(M=w(a,0,r<<1&-2,1&(M<<1|r>>>31)))+uA|0),n=y+YA|0,n=G(K,hA^(M=r>>>0>>0?n+1|0:n),48),A[I+96>>2]=n,uA=y,A[I+100>>2]=uA,A[I+8>>2]=r,A[I+12>>2]=M,x=1+(r=Q+uA|0)|0,K=r,M=(r=o+n|0)>>>0>>0?x:K,o=w(n,0,o<<1&-2,1&(Q<<1|o>>>31)),n=y+M|0,XA=I,A0=G((r=o+r|0)^a,$^(o=r>>>0>>0?n+1|0:n),1),A[XA+48>>2]=A0,A[I+52>>2]=y,A[I+88>>2]=r,A[I+92>>2]=o,n=G(t^V,l^VA,1),o=1+(t=_A+(V=y)|0)|0,r=t,o=(t=n+v|0)>>>0>>0?o:r,r=t+(a=w(n,0,v<<1&-2,1&(_A<<1|v>>>31)))|0,t=y+o|0,a=G(r^p,c0^(v=r>>>0>>0?t+1|0:t),32),l=o=y,Q=1+(t=vA+EA|0)|0,o=t,p=(t=h+_|0)>>>0>>0?Q:o,h=w(_,0,h<<1&-2,1&(vA<<1|h>>>31)),o=y+p|0,Q=1+(o=l+(h=(t=h+t|0)>>>0>>0?o+1|0:o)|0)|0,_=o,_=(o=t+a|0)>>>0>>0?Q:_,Q=n^(o=o+(p=w(a,0,t<<1&-2,1&(h<<1|t>>>31)))|0),n=y+_|0,n=G(Q,V^(_=o>>>0

>>0?n+1|0:n),40),K=1+(p=v+(V=y)|0)|0,Q=p,M=(p=r+n|0)>>>0>>0?K:Q,r=(v=w(n,0,r<<1&-2,1&(v<<1|r>>>31)))+p|0,A[I+16>>2]=r,p=y+M|0,v=r>>>0>>0?p+1|0:p,A[I+20>>2]=v,r=G(r^a,v^l,48),A[I+104>>2]=r,a=y,A[I+108>>2]=a,Q=1+(a=a+_|0)|0,l=a,v=(a=r+o|0)>>>0>>0?Q:l,o=(r=w(r,0,o<<1&-2,1&(_<<1|o>>>31)))+a|0,a=y+v|0,v=r=r>>>0>o>>>0?a+1|0:a,A[HA>>2]=o,A[HA+4>>2]=r,r=(h=G(t^b,h^u,1))+z|0,a=(l=y)+aA|0,t=(_=w(z<<1&-2,1&(aA<<1|z>>>31),h,0))+r|0,r=y+(r>>>0>>0?a+1|0:a)|0,a=G(t^J,FA^(_=t>>>0<_>>>0?r+1|0:r),32),p=1+(r=$A+(z=y)|0)|0,Q=r,p=(r=a+B|0)>>>0>>0?p:Q,Q=h^(r=(B=w(a,0,B<<1&-2,1&($A<<1|B>>>31)))+r|0),h=y+p|0,B=G(Q,l^(h=r>>>0>>0?h+1|0:h),40),b=1+(p=_+(l=y)|0)|0,Q=p,M=(p=t+B|0)>>>0>>0?b:Q,Q=a^(_=(t=w(B,0,t<<1&-2,1&(_<<1|t>>>31)))+p|0),a=y+M|0,t=G(Q,z^(a=t>>>0>_>>>0?a+1|0:a),48),b=1+(p=h+(z=y)|0)|0,Q=p,M=(p=t+r|0)>>>0>>0?b:Q,r=(h=w(t,0,r<<1&-2,1&(h<<1|r>>>31)))+p|0,A[I+72>>2]=r,p=y+M|0,h=r>>>0>>0?p+1|0:p,A[I+76>>2]=h,A[I+112>>2]=t,A[I+116>>2]=z,A[I+24>>2]=_,A[I+28>>2]=a,XA=I,A0=G(o^n,v^V,1),A[XA+56>>2]=A0,A[I+60>>2]=y,XA=I,A0=G(r^B,h^l,1),A[XA+32>>2]=A0,A[I+36>>2]=y,(0|(s=s+1|0))!=8;);for(;r=(o=A[392+(I=(e+3072|0)+(D<<4)|0)>>2])+(t=A[I+136>>2])|0,n=(_=A[I+396>>2])+(s=A[I+140>>2])|0,B=w(t<<1&-2,1&(s<<1|t>>>31),o,0),t=y+(t>>>0>r>>>0?n+1|0:n)|0,n=(s=B+r|0)>>>0>>0?t+1|0:t,h=(B=G(s^A[I+904>>2],n^A[I+908>>2],32))+(t=A[I+648>>2])|0,a=(V=y)+(r=A[I+652>>2])|0,v=w(B,0,t<<1&-2,1&(r<<1|t>>>31)),t=y+(t>>>0>h>>>0?a+1|0:a)|0,z=G(o^(r=v+h|0),_^(J=r>>>0>>0?t+1|0:t),40),_=1+(t=n+(iA=y)|0)|0,o=t,o=(t=s+z|0)>>>0>>0?_:o,v=(s=w(z,0,s<<1&-2,1&(n<<1|s>>>31)))+t|0,t=y+o|0,V=G(v^B,V^(uA=s>>>0>v>>>0?t+1|0:t),48),fA=b=y,o=(l=A[I+268>>2])+(s=A[I+12>>2])|0,B=(n=A[I+264>>2])+(t=A[I+8>>2])|0,h=w(t<<1&-2,1&(s<<1|t>>>31),n,0),t=y+(t>>>0>B>>>0?o+1|0:o)|0,h=(s=B+h|0)>>>0>>0?t+1|0:t,B=(a=G(s^A[I+776>>2],h^A[I+780>>2],32))+(o=A[I+520>>2])|0,_=(p=y)+(t=A[I+524>>2])|0,M=w(a,0,o<<1&-2,1&(t<<1|o>>>31)),o=y+(o>>>0>B>>>0?_+1|0:_)|0,B=G(Q=n^(t=M+B|0),l^(n=t>>>0>>0?o+1|0:o),40),Q=1+(o=h+(_=y)|0)|0,l=o,l=(o=s+B|0)>>>0>>0?Q:l,s=w(B,0,s<<1&-2,1&(h<<1|s>>>31)),h=y+l|0,l=G((o=s+o|0)^a,p^(aA=o>>>0>>0?h+1|0:h),48),p=1+(s=n+(VA=y)|0)|0,Q=s,h=(s=t+l|0)>>>0>>0?p:Q,n=s+(t=w(l,0,t<<1&-2,1&(n<<1|t>>>31)))|0,s=y+h|0,p=G(B^n,_^(EA=t>>>0>n>>>0?s+1|0:s),1),K=Q=y,B=($=A[I+260>>2])+(s=A[I+4>>2])|0,a=(h=A[I+256>>2])+(t=A[I>>2])|0,_=w(t<<1&-2,1&(s<<1|t>>>31),h,0),t=y+(t>>>0>a>>>0?B+1|0:B)|0,a=(s=a+_|0)>>>0<_>>>0?t+1|0:t,_=($A=G(s^A[I+768>>2],a^A[I+772>>2],32))+(t=A[I+512>>2])|0,M=(c0=y)+(B=A[I+516>>2])|0,hA=w($A,0,t<<1&-2,1&(B<<1|t>>>31)),t=y+(t>>>0>_>>>0?M+1|0:M)|0,M=G(h^(B=hA+_|0),$^(hA=B>>>0>>0?t+1|0:t),40),h=1+(t=a+(H=y)|0)|0,_=t,h=(t=s+M|0)>>>0>>0?h:_,s=t+(a=w(M,0,s<<1&-2,1&(a<<1|s>>>31)))|0,t=y+h|0,Q=1+(t=(HA=s>>>0>>0?t+1|0:t)+Q|0)|0,_=t,a=(t=s+p|0)>>>0>>0?Q:_,h=t+(_=w(p,0,s<<1&-2,1&(HA<<1|s>>>31)))|0,t=y+a|0,b=G(h^V,(vA=h>>>0<_>>>0?t+1|0:t)^b,32),YA=y,_=(i0=A[I+388>>2])+(t=A[I+132>>2])|0,$=(Q=A[I+384>>2])+(a=A[I+128>>2])|0,sA=w(a<<1&-2,1&(t<<1|a>>>31),Q,0),a=y+(a>>>0>$>>>0?_+1|0:_)|0,$=(t=$+sA|0)>>>0>>0?a+1|0:a,wA=(sA=G(t^A[I+896>>2],$^A[I+900>>2],32))+(_=A[I+640>>2])|0,_A=(u=y)+(a=A[I+644>>2])|0,x=w(sA,0,_<<1&-2,1&(a<<1|_>>>31)),_=y+(_>>>0>wA>>>0?_A+1|0:_A)|0,Q=G(Q^(a=x+wA|0),i0^(wA=a>>>0>>0?_+1|0:_),40),q=1+(_=$+(i0=y)|0)|0,x=_,_A=(_=t+Q|0)>>>0>>0?q:x,t=w(Q,0,t<<1&-2,1&($<<1|t>>>31)),$=y+_A|0,$=G(x=(_=t+_|0)^sA,u^(sA=t>>>0>_>>>0?$+1|0:$),48),q=1+(t=wA+(u=y)|0)|0,x=t,_A=(t=a+$|0)>>>0>>0?q:x,a=w($,0,a<<1&-2,1&(wA<<1|a>>>31)),wA=y+_A|0,q=1+(a=(wA=(t=a+t|0)>>>0>>0?wA+1|0:wA)+YA|0)|0,x=a,_A=(a=t+b|0)>>>0>>0?q:x,q=p^(a=(x=w(b,0,t<<1&-2,1&(wA<<1|t>>>31)))+a|0),p=y+_A|0,p=G(q,K^(_A=a>>>0>>0?p+1|0:p),40),g0=1+(x=vA+(K=y)|0)|0,q=x,FA=(x=h+p|0)>>>0>>0?g0:q,h=(vA=w(p,0,h<<1&-2,1&(vA<<1|h>>>31)))+x|0,A[I>>2]=h,x=y+FA|0,vA=h>>>0>>0?x+1|0:x,A[I+4>>2]=vA,h=G(h^b,vA^YA,48),A[I+904>>2]=h,b=y,A[I+908>>2]=b,q=1+(b=b+_A|0)|0,x=b,vA=(b=a+h|0)>>>0>>0?q:x,h=(a=w(h,0,a<<1&-2,1&(_A<<1|a>>>31)))+b|0,A[I+640>>2]=h,b=y+vA|0,a=a>>>0>h>>>0?b+1|0:b,A[I+644>>2]=a,XA=I,A0=G(h^p,a^K,1),A[XA+264>>2]=A0,A[I+268>>2]=y,h=G(t^Q,wA^i0,1),b=1+(t=aA+(Q=y)|0)|0,p=t,a=(t=o+h|0)>>>0>>0?b:p,t=t+(p=w(h,0,o<<1&-2,1&(aA<<1|o>>>31)))|0,o=y+a|0,a=G(s^$A,HA^c0,48),o=G(a^t,(p=t>>>0

>>0?o+1|0:o)^(aA=y),32),$A=b=y,x=1+(s=J+fA|0)|0,K=s,HA=(s=r+V|0)>>>0>>0?x:K,r=w(V,0,r<<1&-2,1&(J<<1|r>>>31)),V=y+HA|0,K=1+(r=(V=r>>>0>(s=r+s|0)>>>0?V+1|0:V)+b|0)|0,b=r,b=(r=o+s|0)>>>0>>0?K:b,K=h^(r=(J=w(o,0,s<<1&-2,1&(V<<1|s>>>31)))+r|0),h=y+b|0,h=G(K,Q^(b=r>>>0>>0?h+1|0:h),40),x=1+(J=p+(Q=y)|0)|0,K=J,HA=(J=t+h|0)>>>0>>0?x:K,K=o^(t=(p=w(h,0,t<<1&-2,1&(p<<1|t>>>31)))+J|0),o=y+HA|0,o=G(K,$A^(p=t>>>0

>>0?o+1|0:o),48),A[I+768>>2]=o,J=y,A[I+772>>2]=J,A[I+8>>2]=t,A[I+12>>2]=p,K=1+(t=b+J|0)|0,p=t,p=(t=r+o|0)>>>0>>0?K:p,r=w(o,0,r<<1&-2,1&(b<<1|r>>>31)),o=y+p|0,XA=I,A0=G((t=r+t|0)^h,Q^(r=t>>>0>>0?o+1|0:o),1),A[XA+384>>2]=A0,A[I+388>>2]=y,A[I+648>>2]=t,A[I+652>>2]=r,o=G(s^z,V^iA,1),r=1+(s=sA+(z=y)|0)|0,t=s,r=(s=o+_|0)>>>0<_>>>0?r:t,t=s+(h=w(o,0,_<<1&-2,1&(sA<<1|_>>>31)))|0,s=y+r|0,h=G(t^l,VA^(_=t>>>0>>0?s+1|0:s),32),V=r=y,l=1+(s=hA+aA|0)|0,r=s,l=(s=a+B|0)>>>0>>0?l:r,B=w(a,0,B<<1&-2,1&(hA<<1|B>>>31)),r=y+l|0,Q=1+(r=V+(B=(s=B+s|0)>>>0>>0?r+1|0:r)|0)|0,l=r,a=(r=s+h|0)>>>0>>0?Q:l,Q=o^(r=r+(l=w(h,0,s<<1&-2,1&(B<<1|s>>>31)))|0),o=y+a|0,o=G(Q,z^(a=r>>>0>>0?o+1|0:o),40),p=1+(l=_+(z=y)|0)|0,Q=l,p=(l=t+o|0)>>>0>>0?p:Q,t=(_=w(o,0,t<<1&-2,1&(_<<1|t>>>31)))+l|0,A[I+128>>2]=t,l=y+p|0,_=t>>>0<_>>>0?l+1|0:l,A[I+132>>2]=_,t=G(t^h,_^V,48),A[I+776>>2]=t,h=y,A[I+780>>2]=h,l=1+(h=a+h|0)|0,_=h,_=(h=t+r|0)>>>0>>0?l:_,r=(t=w(t,0,r<<1&-2,1&(a<<1|r>>>31)))+h|0,h=y+_|0,_=t=t>>>0>r>>>0?h+1|0:h,A[I+512>>2]=r,A[I+516>>2]=t,t=(B=G(s^M,B^H,1))+v|0,h=(V=y)+uA|0,s=(a=w(v<<1&-2,1&(uA<<1|v>>>31),B,0))+t|0,t=y+(t>>>0>>0?h+1|0:h)|0,h=G(s^$,u^(a=s>>>0>>0?t+1|0:t),32),Q=1+(t=EA+(v=y)|0)|0,l=t,l=(t=h+n|0)>>>0>>0?Q:l,Q=B^(t=(n=w(h,0,n<<1&-2,1&(EA<<1|n>>>31)))+t|0),B=y+l|0,n=G(Q,V^(B=t>>>0>>0?B+1|0:B),40),p=1+(l=a+(V=y)|0)|0,Q=l,p=(l=s+n|0)>>>0>>0?p:Q,l=h^(a=(s=w(n,0,s<<1&-2,1&(a<<1|s>>>31)))+l|0),h=y+p|0,s=G(l,v^(h=s>>>0>a>>>0?h+1|0:h),48),p=1+(l=B+(v=y)|0)|0,Q=l,p=(l=t+s|0)>>>0>>0?p:Q,t=(B=w(s,0,t<<1&-2,1&(B<<1|t>>>31)))+l|0,A[I+520>>2]=t,l=y+p|0,B=t>>>0>>0?l+1|0:l,A[I+524>>2]=B,A[I+896>>2]=s,A[I+900>>2]=v,A[I+136>>2]=a,A[I+140>>2]=h,XA=I,A0=G(r^o,_^z,1),A[XA+392>>2]=A0,A[I+396>>2]=y,XA=I,A0=G(t^n,B^V,1),A[XA+256>>2]=A0,A[I+260>>2]=y,(0|(D=D+1|0))!=8;);for(I=P0(MA,e+2048|0,1024),s=0;o=A[(t=(D=s<<3)+I|0)>>2],B=A[(n=(r=e+3072|0)+D|0)>>2],n=A[t+4>>2]^A[n+4>>2],A[t>>2]=o^B,A[t+4>>2]=n,n=A[(t=(o=8|D)+I|0)>>2],B=A[(o=r+o|0)>>2],o=A[t+4>>2]^A[o+4>>2],A[t>>2]=n^B,A[t+4>>2]=o,n=A[(t=(o=16|D)+I|0)>>2],B=A[(o=r+o|0)>>2],o=A[t+4>>2]^A[o+4>>2],A[t>>2]=n^B,A[t+4>>2]=o,o=A[(D=(t=24|D)+I|0)>>2],r=A[(t=t+r|0)>>2],t=A[D+4>>2]^A[t+4>>2],A[D>>2]=r^o,A[D+4>>2]=t,(0|(s=s+4|0))!=128;);}if(s=h0+1|0,mA=mA+1|0,!((D=A[C+20>>2])>>>0>(nA=nA+1|0)>>>0))break}}W=e+4096|0}function d1(C){var g,e,t,r,o,I,a,_,s,h,n,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0;l=(_A=i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24)>>>5&2097151,p=w(g=(i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24)>>>3|0,0,-683901,-1),Q=(B=i[C+44|0])<<16&2031616|i[C+42|0]|i[C+43|0]<<8,B=y,M=B=Q>>>0>(q=p+Q|0)>>>0?B+1|0:B,J=B=B-((q>>>0<4293918720)-1|0)|0,p=B>>21,B=(Q=l)+(l=(2097151&B)<<11|(D=q- -1048576|0)>>>21)|0,Q=p,wA=Q=B>>>0>>0?Q+1|0:Q,$A=B,K=w(B,Q,-683901,-1),x=y,b=w(e=(i[C+49|0]|i[C+50|0]<<8|i[C+51|0]<<16|i[C+52|0]<<24)>>>7&2097151,0,-997805,-1),p=(B=i[C+27|0])>>>24|0,l=B<<8|(z=i[C+23|0]|i[C+24|0]<<8|i[C+25|0]<<16|i[C+26|0]<<24)>>>24,Q=(B=i[C+28|0])>>>16|0,Q=2097151&((3&(Q|=p))<<30|(B=l|B<<16)>>>2),B=y,B=Q>>>0>(p=Q+b|0)>>>0?B+1|0:B,Q=w(YA=(V=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24)>>>4&2097151,0,654183,0),B=y+B|0,b=p=Q+p|0,p=Q>>>0>p>>>0?B+1|0:B,v=(Q=i[C+48|0])<<8|_A>>>24,Q=B=Q>>>24|0,B=w(t=2097151&((3&(_A=(B=(l=i[C+49|0])>>>16|0)|Q))<<30|(Q=(l<<=16)|v)>>>2),0,136657,0),p=y+p|0,p=B>>>0>(Q=B+b|0)>>>0?p+1|0:p,l=(B=w(r=(i[C+57|0]|i[C+58|0]<<8|i[C+59|0]<<16|i[C+60|0]<<24)>>>6&2097151,0,666643,0))+Q|0,Q=y+p|0,b=l,p=B>>>0>l>>>0?Q+1|0:Q,Q=(B=i[C+56|0])>>>24|0,v=B<<8|V>>>24,Q=w(o=2097151&((1&(V=(B=(l=i[C+57|0])>>>16|0)|Q))<<31|(Q=(l<<=16)|v)>>>1),0,470296,0),B=y+p|0,Q=(B=(p=l=Q+b|0)>>>0>>0?B+1|0:B)+x|0,Q=p>>>0>(l=p+K|0)>>>0?Q+1|0:Q,sA=p- -1048576|0,iA=p=B-((p>>>0<4293918720)-1|0)|0,x=l-(B=-2097152&sA)|0,K=Q-((B>>>0>l>>>0)+p|0)|0,Q=w(e,0,654183,0),B=y,B=Q>>>0>(p=Q+(z>>>5&2097151)|0)>>>0?B+1|0:B,l=(Q=p)+(p=w(YA,0,470296,0))|0,Q=y+B|0,Q=p>>>0>l>>>0?Q+1|0:Q,B=w(t,g0,-997805,-1),Q=y+Q|0,Q=B>>>0>(p=B+l|0)>>>0?Q+1|0:Q,l=(B=p)+(p=w(o,i0,666643,0))|0,B=y+Q|0,v=l,l=p>>>0>l>>>0?B+1|0:B,b=(p=w(e,0,470296,0))+(B=(B=i[C+23|0])<<16&2031616|i[C+21|0]|i[C+22|0]<<8)|0,p=y,p=B>>>0>b>>>0?p+1|0:p,b=(Q=w(YA,0,666643,0))+b|0,B=y+p|0,p=w(t,g0,654183,0),Q=y+(Q>>>0>b>>>0?B+1|0:B)|0,V=Q=p>>>0>(z=p+b|0)>>>0?Q+1|0:Q,EA=Q=Q-((z>>>0<4293918720)-1|0)|0,B=(B=Q>>>21|0)+l|0,p=B=(Q=(2097151&Q)<<11|(b=z- -1048576|0)>>>21)>>>0>(v=Q+v|0)>>>0?B+1|0:B,$=Q=B-((v>>>0<4293918720)-1|0)|0,B=x,x=(2097151&Q)<<11|(l=v- -1048576|0)>>>21,Q=(Q>>21)+K|0,_A=x=(Q=x>>>0>(nA=B+x|0)>>>0?Q+1|0:Q)-((nA>>>0<4293918720)-1|0)|0,qA=nA-(B=-2097152&(K=nA- -1048576|0))|0,u=Q-((B>>>0>nA>>>0)+x|0)|0,B=w($A,wA,136657,0),p=y+p|0,p=B>>>0>(Q=B+v|0)>>>0?p+1|0:p,vA=Q-(B=-2097152&l)|0,fA=p-((B>>>0>Q>>>0)+$|0)|0,nA=q-(B=-2097152&D)|0,J=M-((B>>>0>q>>>0)+J|0)|0,M=w(g,0,136657,0),Q=(B=i[C+40|0])>>>24|0,l=B<<8|(D=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24)>>>24,p=(B=i[C+41|0])>>>16|0,Q=(p|=Q)>>>3|0,p=(7&p)<<29|(B=l|B<<16)>>>3,B=Q+y|0,B=p>>>0>(l=p+M|0)>>>0?B+1|0:B,Q=w(r,0,-683901,-1),B=y+B|0,B=Q>>>0>(p=Q+l|0)>>>0?B+1|0:B,v=p,Q=w(g,0,-997805,-1),p=y,p=Q>>>0>(l=Q+(D>>>6&2097151)|0)>>>0?p+1|0:p,D=(Q=l)+(l=w(r,0,136657,0))|0,Q=y+p|0,p=w(o,i0,-683901,-1),Q=y+(l>>>0>D>>>0?Q+1|0:Q)|0,x=Q=p>>>0>(hA=p+D|0)>>>0?Q+1|0:Q,d=p=Q-((hA>>>0<4293918720)-1|0)|0,B=B+(Q=p>>21)|0,D=B=(p=(2097151&p)<<11|(q=hA- -1048576|0)>>>21)>>>0>($=p+v|0)>>>0?B+1|0:B,mA=B=B-(($>>>0<4293918720)-1|0)|0,Q=(Q=B>>21)+J|0,aA=Q=(B=(p=(2097151&B)<<11|(v=$- -1048576|0)>>>21)+nA|0)>>>0

>>0?Q+1|0:Q,HA=B,Q=w(B,Q,-683901,-1),B=y+fA|0,uA=p=Q+vA|0,l=Q>>>0>p>>>0?B+1|0:B,nA=z-(B=-2097152&b)|0,J=V-((4095&EA)+(B>>>0>z>>>0)|0)|0,z=w(e,0,666643,0),B=(Q=i[C+19|0])>>>24|0,b=Q<<8|(V=i[C+15|0]|i[C+16|0]<<8|i[C+17|0]<<16|i[C+18|0]<<24)>>>24,p=B,Q=(7&(p|=Q=(B=i[C+20|0])>>>16|0))<<29|(Q=(B<<=16)|b)>>>3,p=y+(p>>>3|0)|0,p=Q>>>0>(b=Q+z|0)>>>0?p+1|0:p,B=w(t,g0,470296,0),Q=y+p|0,B=B>>>0>(b=B+b|0)>>>0?Q+1|0:Q,p=w(t,g0,666643,0),Q=y,z=Q=p>>>0>(vA=p+(V>>>6&2097151)|0)>>>0?Q+1|0:Q,H=p=Q-((vA>>>0<4293918720)-1|0)|0,B=B+(Q=p>>>21|0)|0,V=B=(p=(2097151&p)<<11|(M=vA- -1048576|0)>>>21)>>>0>(fA=p+b|0)>>>0?B+1|0:B,FA=B=B-((fA>>>0<4293918720)-1|0)|0,Q=(Q=B>>>21|0)+J|0,Q=(B=(2097151&B)<<11|(b=fA- -1048576|0)>>>21)>>>0>(p=B+nA|0)>>>0?Q+1|0:Q,J=(B=p)+(p=w($A,wA,-997805,-1))|0,B=y+Q|0,B=p>>>0>J>>>0?B+1|0:B,EA=Q=$-(p=-2097152&v)|0,I=v=D-((p>>>0>$>>>0)+mA|0)|0,p=w(HA,aA,136657,0),B=y+B|0,B=p>>>0>(D=p+J|0)>>>0?B+1|0:B,p=w(Q,v,-683901,-1),Q=y+B|0,D=Q=p>>>0>(J=p+D|0)>>>0?Q+1|0:Q,mA=B=Q-((J>>>0<4293918720)-1|0)|0,Q=(2097151&B)<<11|(v=J- -1048576|0)>>>21,B=(B>>21)+l|0,uA=Q=(B=Q>>>0>($=Q+uA|0)>>>0?B+1|0:B)-(($>>>0<4293918720)-1|0)|0,nA=(2097151&Q)<<11|(l=$- -1048576|0)>>>21,Q=(Q>>21)+u|0,_=qA=nA+qA|0,nA=nA>>>0>qA>>>0?Q+1|0:Q,s=$-(Q=-2097152&l)|0,h=B-((Q>>>0>$>>>0)+uA|0)|0,qA=J-(B=-2097152&v)|0,u=D-((B>>>0>J>>>0)+mA|0)|0,p=(B=w($A,wA,654183,0))+(fA-(Q=-2097152&b)|0)|0,Q=y+(V-((2147483647&FA)+(Q>>>0>fA>>>0)|0)|0)|0,Q=B>>>0>p>>>0?Q+1|0:Q,B=w(HA,aA,-997805,-1),Q=y+Q|0,Q=B>>>0>(p=B+p|0)>>>0?Q+1|0:Q,l=(B=p)+(p=w(EA,I,136657,0))|0,B=y+Q|0,uA=l,D=p>>>0>l>>>0?B+1|0:B,fA=hA-(B=-2097152&q)|0,$=x-((B>>>0>hA>>>0)+d|0)|0,V=w(YA,0,-683901,-1),B=(Q=i[C+35|0])>>>24|0,l=Q<<8|(b=i[C+31|0]|i[C+32|0]<<8|i[C+33|0]<<16|i[C+34|0]<<24)>>>24,p=B,Q=(B=i[C+36|0])>>>16|0,Q|=p,p=y,p=(B=2097151&((1&Q)<<31|(B=B<<16|l)>>>1))>>>0>(Q=B+V|0)>>>0?p+1|0:p,l=(B=w(g,0,654183,0))+Q|0,Q=y+p|0,Q=B>>>0>l>>>0?Q+1|0:Q,p=w(r,0,-997805,-1),B=y+Q|0,B=p>>>0>(l=p+l|0)>>>0?B+1|0:B,Q=w(o,i0,136657,0),B=y+B|0,v=p=Q+l|0,l=Q>>>0>p>>>0?B+1|0:B,B=w(e,0,-683901,-1),Q=y,Q=B>>>0>(p=B+(b>>>4&2097151)|0)>>>0?Q+1|0:Q,b=(B=w(YA,0,136657,0))+p|0,p=y+Q|0,p=B>>>0>b>>>0?p+1|0:p,B=w(g,0,470296,0),Q=y+p|0,Q=B>>>0>(b=B+b|0)>>>0?Q+1|0:Q,b=(p=w(r,0,654183,0))+b|0,B=y+Q|0,Q=w(o,i0,-997805,-1),B=y+(p>>>0>b>>>0?B+1|0:B)|0,V=B=Q>>>0>(x=Q+b|0)>>>0?B+1|0:B,n=Q=B-((x>>>0<4293918720)-1|0)|0,p=(B=Q>>21)+l|0,J=Q=(p=(Q=(2097151&Q)<<11|(b=x- -1048576|0)>>>21)>>>0>(q=Q+v|0)>>>0?p+1|0:p)-((q>>>0<4293918720)-1|0)|0,B=(B=Q>>21)+$|0,mA=B=(Q=(l=(2097151&Q)<<11|(v=q- -1048576|0)>>>21)+fA|0)>>>0>>0?B+1|0:B,l=uA,uA=Q,B=w(Q,B,-683901,-1),Q=y+D|0,$=l=l+B|0,l=B>>>0>l>>>0?Q+1|0:Q,D=(B=w($A,wA,470296,0))+(vA-(Q=-2097152&M)|0)|0,Q=y+(z-((2047&H)+(Q>>>0>vA>>>0)|0)|0)|0,Q=B>>>0>D>>>0?Q+1|0:Q,M=(B=D)+(D=w(HA,aA,654183,0))|0,B=y+Q|0,B=D>>>0>M>>>0?B+1|0:B,D=w(EA,I,-997805,-1),Q=y+B|0,Q=D>>>0>(M=D+M|0)>>>0?Q+1|0:Q,hA=v=q-(B=-2097152&v)|0,a=D=p-((B>>>0>q>>>0)+J|0)|0,p=w(uA,mA,136657,0),B=y+Q|0,B=p>>>0>(M=p+M|0)>>>0?B+1|0:B,p=w(v,D,-683901,-1),Q=y+B|0,D=Q=p>>>0>(z=p+M|0)>>>0?Q+1|0:Q,fA=B=Q-((z>>>0<4293918720)-1|0)|0,Q=(2097151&B)<<11|(v=z- -1048576|0)>>>21,B=(B>>21)+l|0,$=Q=(B=Q>>>0>(M=Q+$|0)>>>0?B+1|0:B)-((M>>>0<4293918720)-1|0)|0,q=(2097151&Q)<<11|(l=M- -1048576|0)>>>21,Q=(Q>>21)+u|0,d=J=q+qA|0,J=q>>>0>J>>>0?Q+1|0:Q,H=M-(Q=-2097152&l)|0,FA=B-((Q>>>0>M>>>0)+$|0)|0,qA=z-(B=-2097152&v)|0,u=D-((B>>>0>z>>>0)+fA|0)|0,D=w($A,wA,666643,0),B=(Q=i[C+14|0])>>>24|0,l=Q<<8|($=i[C+10|0]|i[C+11|0]<<8|i[C+12|0]<<16|i[C+13|0]<<24)>>>24,p=B,Q=(B=i[C+15|0])>>>16|0,Q|=p,p=y,p=(B=2097151&((1&Q)<<31|(B=B<<16|l)>>>1))>>>0>(Q=B+D|0)>>>0?p+1|0:p,l=(B=Q)+(Q=w(HA,aA,470296,0))|0,B=y+p|0,B=Q>>>0>l>>>0?B+1|0:B,Q=w(EA,I,654183,0),B=y+B|0,B=Q>>>0>(p=Q+l|0)>>>0?B+1|0:B,l=(Q=p)+(p=w(uA,mA,-997805,-1))|0,Q=y+B|0,Q=p>>>0>l>>>0?Q+1|0:Q,B=w(hA,a,136657,0),Q=y+Q|0,z=p=B+l|0,l=B>>>0>p>>>0?Q+1|0:Q,b=x-(B=-2097152&b)|0,D=V-((B>>>0>x>>>0)+n|0)|0,p=w(e,0,136657,0),B=y,B=(Q=(i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24)>>>7&2097151)>>>0>(p=Q+p|0)>>>0?B+1|0:B,v=(Q=p)+(p=w(YA,0,-997805,-1))|0,Q=y+B|0,Q=p>>>0>v>>>0?Q+1|0:Q,B=w(t,g0,-683901,-1),Q=y+Q|0,Q=B>>>0>(p=B+v|0)>>>0?Q+1|0:Q,v=(B=w(g,0,666643,0))+p|0,p=y+Q|0,p=B>>>0>v>>>0?p+1|0:p,Q=w(r,0,470296,0),B=y+p|0,B=Q>>>0>(v=Q+v|0)>>>0?B+1|0:B,Q=w(o,i0,654183,0),B=y+B|0,Q=(iA>>21)+(Q>>>0>(p=Q+v|0)>>>0?B+1|0:B)|0,q=Q=(v=(2097151&iA)<<11|sA>>>21)>>>0>(sA=v+p|0)>>>0?Q+1|0:Q,iA=B=Q-((sA>>>0<4293918720)-1|0)|0,v=(2097151&B)<<11|(M=sA- -1048576|0)>>>21,B=(B>>21)+D|0,vA=B=(Q=v+b|0)>>>0>>0?B+1|0:B,fA=Q,Q=w(Q,B,-683901,-1),B=y+l|0,v=p=Q+z|0,l=Q>>>0>p>>>0?B+1|0:B,B=w(HA,aA,666643,0),Q=y,Q=B>>>0>(p=B+($>>>4&2097151)|0)>>>0?Q+1|0:Q,B=w(EA,I,470296,0),Q=y+Q|0,Q=B>>>0>(p=B+p|0)>>>0?Q+1|0:Q,D=(B=w(uA,mA,654183,0))+p|0,p=y+Q|0,p=B>>>0>D>>>0?p+1|0:p,Q=w(hA,a,-997805,-1),B=y+p|0,B=Q>>>0>(D=Q+D|0)>>>0?B+1|0:B,Q=w(fA,vA,136657,0),B=y+B|0,V=B=Q>>>0>(x=Q+D|0)>>>0?B+1|0:B,aA=Q=B-((x>>>0<4293918720)-1|0)|0,B=v,v=(2097151&Q)<<11|(b=x- -1048576|0)>>>21,Q=(Q>>21)+l|0,HA=l=(Q=(p=B+v|0)>>>0>>0?Q+1|0:Q)-((p>>>0<4293918720)-1|0)|0,B=(B=l>>21)+u|0,$A=v=(l=(2097151&l)<<11|(D=p- -1048576|0)>>>21)+qA|0,z=l>>>0>v>>>0?B+1|0:B,v=p,p=Q,l=(sA-(Q=-2097152&M)|0)+(M=(2097151&_A)<<11|K>>>21)|0,Q=(q-((Q>>>0>sA>>>0)+iA|0)|0)+(_A>>21)|0,$=Q=l>>>0>>0?Q+1|0:Q,YA=Q=Q-((l>>>0<4293918720)-1|0)|0,K=B=Q>>21,B=w(wA=(2097151&Q)<<11|(iA=l- -1048576|0)>>>21,B,-683901,-1),p=y+p|0,p=B>>>0>(Q=B+v|0)>>>0?p+1|0:p,g0=Q-(B=-2097152&D)|0,i0=p-((B>>>0>Q>>>0)+HA|0)|0,B=w(wA,K,136657,0),Q=V+y|0,HA=(p=B+x|0)-(B=-2097152&b)|0,sA=(Q=p>>>0>>0?Q+1|0:Q)-((B>>>0>p>>>0)+aA|0)|0,Q=w(EA,I,666643,0),p=y,p=(B=(i[C+7|0]|i[C+8|0]<<8|i[C+9|0]<<16|i[C+10|0]<<24)>>>7&2097151)>>>0>(Q=B+Q|0)>>>0?p+1|0:p,v=(B=w(uA,mA,470296,0))+Q|0,Q=y+p|0,Q=B>>>0>v>>>0?Q+1|0:Q,B=w(hA,a,654183,0),Q=y+Q|0,Q=B>>>0>(p=B+v|0)>>>0?Q+1|0:Q,v=(B=p)+(p=w(fA,vA,-997805,-1))|0,B=y+Q|0,M=v,v=p>>>0>v>>>0?B+1|0:B,V=w(uA,mA,666643,0),B=(Q=i[C+6|0])>>>24|0,D=Q<<8|(aA=i[C+2|0]|i[C+3|0]<<8|i[C+4|0]<<16|i[C+5|0]<<24)>>>24,p=B,Q=(B=i[C+7|0])>>>16|0,Q=2097151&((3&(Q|=p))<<30|(B=B<<16|D)>>>2),B=y,B=Q>>>0>(p=Q+V|0)>>>0?B+1|0:B,D=(Q=w(hA,a,470296,0))+p|0,p=y+B|0,p=Q>>>0>D>>>0?p+1|0:p,Q=w(fA,vA,654183,0),B=y+p|0,V=B=Q>>>0>(q=Q+D|0)>>>0?B+1|0:B,_A=B=B-((q>>>0<4293918720)-1|0)|0,Q=(p=B>>21)+v|0,x=B=(Q=(B=(2097151&B)<<11|(b=q- -1048576|0)>>>21)>>>0>(D=B+M|0)>>>0?Q+1|0:Q)-((D>>>0<4293918720)-1|0)|0,M=(2097151&B)<<11|(v=D- -1048576|0)>>>21,B=(B>>21)+sA|0,HA=uA=M+HA|0,M=M>>>0>uA>>>0?B+1|0:B,B=w(wA,K,-997805,-1),Q=y+Q|0,Q=B>>>0>(p=B+D|0)>>>0?Q+1|0:Q,EA=p-(B=-2097152&v)|0,mA=Q-((B>>>0>p>>>0)+x|0)|0,Q=w(wA,K,654183,0),B=V+y|0,uA=(p=Q+q|0)-(Q=-2097152&b)|0,sA=(B=p>>>0>>0?B+1|0:B)-((Q>>>0>p>>>0)+_A|0)|0,B=w(hA,a,666643,0),Q=y,Q=B>>>0>(p=B+(aA>>>5&2097151)|0)>>>0?Q+1|0:Q,B=w(fA,vA,470296,0),Q=y+Q|0,D=p=B+p|0,p=B>>>0>p>>>0?Q+1|0:Q,v=w(fA,vA,666643,0),Q=(B=i[C+2|0])<<16&2031616|i[0|C]|i[C+1|0]<<8,B=y,V=B=Q>>>0>(x=v+Q|0)>>>0?B+1|0:B,vA=B=B-((x>>>0<4293918720)-1|0)|0,v=(2097151&B)<<11|(b=x- -1048576|0)>>>21,B=(B>>21)+p|0,p=B=v>>>0>(q=v+D|0)>>>0?B+1|0:B,_A=B=B-((q>>>0<4293918720)-1|0)|0,v=(2097151&B)<<11|(D=q- -1048576|0)>>>21,B=(B>>21)+sA|0,v=v>>>0>(fA=v+uA|0)>>>0?B+1|0:B,B=w(wA,K,470296,0),p=p+y|0,p=(Q=B+q|0)>>>0>>0?p+1|0:p,q=Q-(B=-2097152&D)|0,D=p-((B>>>0>Q>>>0)+_A|0)|0,Q=w(wA,K,666643,0),B=y+(V-(((p=-2097152&b)>>>0>x>>>0)+vA|0)|0)|0,Q=(p=(B=Q>>>0>(sA=Q+(x-p|0)|0)>>>0?B+1|0:B)>>21)+D|0,B=(B=(Q=(B=(2097151&B)<<11|sA>>>21)>>>0>(_A=B+q|0)>>>0?Q+1|0:Q)>>21)+v|0,Q=(Q=(B=(Q=(2097151&Q)<<11|_A>>>21)>>>0>(K=Q+fA|0)>>>0?B+1|0:B)>>21)+mA|0,p=(B=(Q=(B=(2097151&B)<<11|K>>>21)>>>0>(v=B+EA|0)>>>0?Q+1|0:Q)>>21)+M|0,B=(Q=(p=(Q=(2097151&Q)<<11|v>>>21)>>>0>(x=Q+HA|0)>>>0?p+1|0:p)>>21)+i0|0,Q=(p=(B=(p=(2097151&p)<<11|x>>>21)>>>0>(q=p+g0|0)>>>0?B+1|0:B)>>21)+z|0,z=D=(B=(2097151&B)<<11|q>>>21)+$A|0,B=(B=(Q=B>>>0>D>>>0?Q+1|0:Q)>>21)+FA|0,Q=(Q=(B=(Q=(2097151&Q)<<11|D>>>21)>>>0>(M=Q+H|0)>>>0?B+1|0:B)>>21)+J|0,p=(B=(Q=(B=(2097151&B)<<11|M>>>21)>>>0>(V=B+d|0)>>>0?Q+1|0:Q)>>21)+h|0,B=(Q=(p=(Q=(2097151&Q)<<11|V>>>21)>>>0>(b=Q+s|0)>>>0?p+1|0:p)>>21)+nA|0,iA=(J=l-(Q=-2097152&iA)|0)+((2097151&(B=(p=(2097151&p)<<11|b>>>21)>>>0>(D=p+_|0)>>>0?B+1|0:B))<<11|D>>>21)|0,B=($-((Q>>>0>l>>>0)+YA|0)|0)+(B>>21)|0,$=Q=(B=J>>>0>iA>>>0?B+1|0:B)>>21,sA=(B=w(nA=(2097151&B)<<11|iA>>>21,Q,666643,0))+(Q=2097151&sA)|0,B=y,l=B=Q>>>0>sA>>>0?B+1|0:B,c[0|C]=sA,c[C+1|0]=(255&B)<<24|sA>>>8,B=2097151&_A,Q=w(nA,$,470296,0)+B|0,p=y,B=(l>>21)+(B>>>0>Q>>>0?p+1|0:p)|0,B=(J=(2097151&l)<<11|sA>>>21)>>>0>(_A=J+Q|0)>>>0?B+1|0:B,c[C+4|0]=(2047&B)<<21|_A>>>11,Q=B,p=_A,c[C+3|0]=(7&B)<<29|p>>>3,c[C+2|0]=31&((65535&l)<<16|sA>>>16)|p<<5,l=2097151&K,K=w(nA,$,654183,0)+l|0,B=y,_A=(2097151&Q)<<11|p>>>21,Q=(Q>>21)+(l=l>>>0>K>>>0?B+1|0:B)|0,B=Q=(K=_A+K|0)>>>0<_A>>>0?Q+1|0:Q,c[C+6|0]=(63&B)<<26|K>>>6,l=K,K=0,c[C+5|0]=K<<13|(1572864&p)>>>19|l<<2,p=2097151&v,v=w(nA,$,-997805,-1)+p|0,Q=y,Q=p>>>0>v>>>0?Q+1|0:Q,K=(2097151&(p=B))<<11|l>>>21,p=(B>>=21)+Q|0,p=(v=K+v|0)>>>0>>0?p+1|0:p,c[C+9|0]=(511&p)<<23|v>>>9,c[C+8|0]=(1&p)<<31|v>>>1,Q=0,c[C+7|0]=Q<<18|(2080768&l)>>>14|v<<7,Q=2097151&x,l=w(nA,$,136657,0)+Q|0,B=y,B=Q>>>0>l>>>0?B+1|0:B,x=(2097151&(Q=p))<<11|v>>>21,Q=B+(p=Q>>21)|0,Q=(l=x+l|0)>>>0>>0?Q+1|0:Q,c[C+12|0]=(4095&Q)<<20|l>>>12,p=l,c[C+11|0]=(15&Q)<<28|p>>>4,l=0,c[C+10|0]=l<<15|(1966080&v)>>>17|p<<4,l=2097151&q,v=w(nA,$,-683901,-1)+l|0,B=y,B=l>>>0>v>>>0?B+1|0:B,l=Q,Q=B+(Q>>=21)|0,Q=(l=(uA=v)+(v=(2097151&l)<<11|p>>>21)|0)>>>0>>0?Q+1|0:Q,c[C+14|0]=(127&Q)<<25|l>>>7,v=0,c[C+13|0]=v<<12|(1048576&p)>>>20|l<<1,B=Q>>21,p=(Q=(2097151&Q)<<11|l>>>21)>>>0>(v=Q+(2097151&z)|0)>>>0?B+1|0:B,c[C+17|0]=(1023&p)<<22|v>>>10,c[C+16|0]=(3&p)<<30|v>>>2,Q=0,c[C+15|0]=Q<<17|(2064384&l)>>>15|v<<6,B=p>>21,B=(Q=(2097151&p)<<11|v>>>21)>>>0>(p=Q+(2097151&M)|0)>>>0?B+1|0:B,c[C+20|0]=(8191&B)<<19|p>>>13,c[C+19|0]=(31&B)<<27|p>>>5,l=(Q=2097151&V)+(V=(2097151&B)<<11|p>>>21)|0,Q=B>>21,Q=l>>>0>>0?Q+1|0:Q,V=l,c[C+21|0]=l,M=0,c[C+18|0]=M<<14|(1835008&v)>>>18|p<<3,c[C+22|0]=(255&Q)<<24|l>>>8,p=Q>>21,p=(l=(v=(2097151&Q)<<11|l>>>21)+(2097151&b)|0)>>>0>>0?p+1|0:p,c[C+25|0]=(2047&p)<<21|l>>>11,c[C+24|0]=(7&p)<<29|l>>>3,c[C+23|0]=31&((65535&Q)<<16|V>>>16)|l<<5,B=p>>21,B=(Q=(2097151&p)<<11|l>>>21)>>>0>(p=Q+(2097151&D)|0)>>>0?B+1|0:B,c[C+27|0]=(63&B)<<26|p>>>6,v=0,c[C+26|0]=v<<13|(1572864&l)>>>19|p<<2,Q=B,B>>=21,Q=(l=(D=(2097151&Q)<<11|p>>>21)+(v=2097151&iA)|0)>>>0>>0?B+1|0:B,c[C+31|0]=(131071&Q)<<15|l>>>17,B=l,c[C+30|0]=(511&Q)<<23|B>>>9,l=0,c[C+28|0]=l<<18|(2080768&p)>>>14|B<<7,c[C+29|0]=D+iA>>>1}function iC(C,g,e){var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0;for(W=a=W-2048|0,P0(a+1024|0,g,1024),g=0;o=A[(s=(I=a+1024|0)+(r=g<<3)|0)>>2],_=A[(h=C+r|0)>>2],h=A[s+4>>2]^A[h+4>>2],A[s>>2]=o^_,A[s+4>>2]=h,h=A[(s=(o=8|r)+I|0)>>2],_=A[(o=C+o|0)>>2],o=A[s+4>>2]^A[o+4>>2],A[s>>2]=_^h,A[s+4>>2]=o,h=A[(s=(o=16|r)+I|0)>>2],_=A[(o=C+o|0)>>2],o=A[s+4>>2]^A[o+4>>2],A[s>>2]=_^h,A[s+4>>2]=o,o=A[(r=(s=24|r)+I|0)>>2],h=A[(s=C+s|0)>>2],s=A[r+4>>2]^A[s+4>>2],A[r>>2]=o^h,A[r+4>>2]=s,(0|(g=g+4|0))!=128;);for(t=P0(a,I,1024),C=0,g=0;a=A[(r=(I=g<<3)+t|0)>>2],o=A[(s=e+I|0)>>2],s=A[r+4>>2]^A[s+4>>2],A[r>>2]=o^a,A[r+4>>2]=s,s=A[(r=(a=8|I)+t|0)>>2],o=A[(a=e+a|0)>>2],a=A[r+4>>2]^A[a+4>>2],A[r>>2]=o^s,A[r+4>>2]=a,s=A[(r=(a=16|I)+t|0)>>2],o=A[(a=e+a|0)>>2],a=A[r+4>>2]^A[a+4>>2],A[r>>2]=o^s,A[r+4>>2]=a,a=A[(I=(r=24|I)+t|0)>>2],s=A[(r=e+r|0)>>2],r=A[I+4>>2]^A[r+4>>2],A[I>>2]=a^s,A[I+4>>2]=r,(0|(g=g+4|0))!=128;);for(;h=(o=A[56+(I=(t+1024|0)+(C<<7)|0)>>2])+(r=A[I+24>>2])|0,g=(n=A[I+60>>2])+(a=A[I+28>>2])|0,s=r>>>0>h>>>0?g+1|0:g,a=w(r<<1&-2,1&(a<<1|r>>>31),o,0),g=y+s|0,s=(r=a+h|0)>>>0>>0?g+1|0:g,Q=(h=G(A[I+120>>2]^r,s^A[I+124>>2],32))+(a=A[I+88>>2])|0,g=(p=y)+(_=A[I+92>>2])|0,B=a>>>0>Q>>>0?g+1|0:g,_=w(a<<1&-2,1&(_<<1|a>>>31),h,0),g=y+B|0,mA=G(o^(a=_+Q|0),n^(l=a>>>0<_>>>0?g+1|0:g),40),g=s+($A=y)|0,o=(_=r+mA|0)>>>0>>0?g+1|0:g,r=w(mA,0,r<<1&-2,1&(s<<1|r>>>31)),g=y+o|0,nA=G(h^(q=r+_|0),p^(sA=r>>>0>q>>>0?g+1|0:g),48),g0=g=y,D=nA,Q=g,_=(h=A[I+40>>2])+(r=A[I+8>>2])|0,g=(fA=A[I+44>>2])+(s=A[I+12>>2])|0,o=r>>>0>_>>>0?g+1|0:g,s=w(r<<1&-2,1&(s<<1|r>>>31),h,0),g=y+o|0,o=(r=s+_|0)>>>0>>0?g+1|0:g,p=(_=G(A[I+104>>2]^r,o^A[I+108>>2],32))+(s=A[I+72>>2])|0,g=(b=y)+(B=A[I+76>>2])|0,n=s>>>0>p>>>0?g+1|0:g,B=w(s<<1&-2,1&(B<<1|s>>>31),_,0),g=y+n|0,B=G(n=(s=B+p|0)^h,fA^(h=s>>>0>>0?g+1|0:g),40),g=o+(M=y)|0,n=(p=r+B|0)>>>0>>0?g+1|0:g,o=w(B,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+n|0,HA=G((r=o+p|0)^_,b^(p=r>>>0>>0?g+1|0:g),48),g=h+(aA=y)|0,o=(_=s+HA|0)>>>0>>0?g+1|0:g,h=w(HA,0,s<<1&-2,1&(h<<1|s>>>31)),g=y+o|0,J=G((s=h+_|0)^B,M^(fA=s>>>0>>0?g+1|0:g),1),EA=g=y,x=J,n=g,b=(B=A[I+32>>2])+(o=A[I>>2])|0,g=(uA=A[I+36>>2])+(h=A[I+4>>2])|0,_=o>>>0>b>>>0?g+1|0:g,h=w(o<<1&-2,1&(h<<1|o>>>31),B,0),g=y+_|0,_=(o=h+b|0)>>>0>>0?g+1|0:g,v=(vA=G(A[I+96>>2]^o,_^A[I+100>>2],32))+(h=A[(g=V=I- -64|0)>>2])|0,g=(qA=y)+(b=A[g+4>>2])|0,M=h>>>0>v>>>0?g+1|0:g,b=w(h<<1&-2,1&(b<<1|h>>>31),vA,0),g=y+M|0,uA=G((h=b+v|0)^B,uA^(b=h>>>0>>0?g+1|0:g),40),g=_+(i0=y)|0,B=(M=o+uA|0)>>>0>>0?g+1|0:g,_=w(uA,0,o<<1&-2,1&(_<<1|o>>>31)),g=y+B|0,g=(M=(o=_+M|0)>>>0<_>>>0?g+1|0:g)+n|0,B=(_=o+x|0)>>>0>>0?g+1|0:g,n=w(x,0,o<<1&-2,1&(M<<1|o>>>31)),g=y+B|0,wA=G((_=n+_|0)^D,(v=_>>>0>>0?g+1|0:g)^Q,32),YA=g=y,$=g,x=(D=A[I+48>>2])+(B=A[I+16>>2])|0,g=(iA=A[I+52>>2])+(Q=A[I+20>>2])|0,n=B>>>0>x>>>0?g+1|0:g,Q=w(B<<1&-2,1&(Q<<1|B>>>31),D,0),g=y+n|0,n=(B=Q+x|0)>>>0>>0?g+1|0:g,K=(x=G(A[I+112>>2]^B,n^A[I+116>>2],32))+(Q=A[I+80>>2])|0,g=(hA=y)+(z=A[I+84>>2])|0,_A=Q>>>0>K>>>0?g+1|0:g,z=w(Q<<1&-2,1&(z<<1|Q>>>31),x,0),g=y+_A|0,z=G(K=(Q=z+K|0)^D,iA^(D=Q>>>0>>0?g+1|0:g),40),g=n+(iA=y)|0,_A=(K=B+z|0)>>>0>>0?g+1|0:g,n=w(z,0,B<<1&-2,1&(n<<1|B>>>31)),g=y+_A|0,_A=G(K=(B=n+K|0)^x,hA^(x=n>>>0>B>>>0?g+1|0:g),48),g=D+(hA=y)|0,n=(K=Q+_A|0)>>>0>>0?g+1|0:g,D=w(_A,0,Q<<1&-2,1&(D<<1|Q>>>31)),g=y+n|0,g=(D=(Q=D+K|0)>>>0>>0?g+1|0:g)+$|0,$=(n=Q+wA|0)>>>0>>0?g+1|0:g,K=w(wA,0,Q<<1&-2,1&(D<<1|Q>>>31)),g=y+$|0,$=G($=(n=K+n|0)^J,EA^(J=n>>>0>>0?g+1|0:g),40),g=v+(EA=y)|0,K=(u=_+$|0)>>>0<_>>>0?g+1|0:g,_=(v=w($,0,_<<1&-2,1&(v<<1|_>>>31)))+u|0,g=y+K|0,A[I>>2]=_,g=_>>>0>>0?g+1|0:g,A[I+4>>2]=g,_=G(_^wA,g^YA,48),A[I+120>>2]=_,g=y,A[I+124>>2]=g,g=g+J|0,v=(wA=_+n|0)>>>0>>0?g+1|0:g,_=(n=w(_,0,n<<1&-2,1&(J<<1|n>>>31)))+wA|0,g=y+v|0,A[I+80>>2]=_,g=_>>>0>>0?g+1|0:g,A[I+84>>2]=g,d=I,H=G(_^$,g^EA,1),A[d+40>>2]=H,A[I+44>>2]=y,g=l+g0|0,_=(n=a+nA|0)>>>0>>0?g+1|0:g,a=w(nA,0,a<<1&-2,1&(l<<1|a>>>31)),g=y+_|0,_=g=a>>>0>(n=a+n|0)>>>0?g+1|0:g,a=g,Q=G(Q^z,D^iA,1),g=p+(D=y)|0,l=(v=r+Q|0)>>>0>>0?g+1|0:g,r=(p=w(Q,0,r<<1&-2,1&(p<<1|r>>>31)))+v|0,g=y+l|0,M=G(o^vA,M^qA,48),p=G(M^r,(o=r>>>0

>>0?g+1|0:g)^(J=y),32),g=(nA=y)+a|0,l=p>>>0>(v=p+n|0)>>>0?g+1|0:g,a=(g=v)+(v=w(n<<1&-2,1&(a<<1|n>>>31),p,0))|0,g=y+l|0,l=G($=a^Q,D^(Q=a>>>0>>0?g+1|0:g),40),g=o+(v=y)|0,D=(vA=r+l|0)>>>0>>0?g+1|0:g,r=w(l,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+D|0,r=G((o=r+vA|0)^p,nA^(g=r>>>0>o>>>0?g+1|0:g),48),A[I+96>>2]=r,p=y,A[I+100>>2]=p,A[I+8>>2]=o,A[I+12>>2]=g,g=Q+p|0,o=(p=r+a|0)>>>0>>0?g+1|0:g,a=w(r,0,a<<1&-2,1&(Q<<1|a>>>31)),g=y+o|0,d=I,H=G((r=a+p|0)^l,(g=r>>>0>>0?g+1|0:g)^v,1),A[d+48>>2]=H,A[I+52>>2]=y,A[I+88>>2]=r,A[I+92>>2]=g,Q=G(n^mA,_^$A,1),g=x+(l=y)|0,a=(r=B+Q|0)>>>0>>0?g+1|0:g,o=w(Q,0,B<<1&-2,1&(x<<1|B>>>31)),g=y+a|0,n=G((r=o+r|0)^HA,aA^(_=r>>>0>>0?g+1|0:g),32),p=g=y,o=g,g=b+J|0,B=(a=h+M|0)>>>0>>0?g+1|0:g,h=w(M,0,h<<1&-2,1&(b<<1|h>>>31)),g=y+B|0,g=(h=(a=h+a|0)>>>0>>0?g+1|0:g)+o|0,B=(o=a+n|0)>>>0>>0?g+1|0:g,b=w(n,0,a<<1&-2,1&(h<<1|a>>>31)),g=y+B|0,Q=G((o=b+o|0)^Q,l^(B=o>>>0>>0?g+1|0:g),40),g=_+(b=y)|0,l=(M=r+Q|0)>>>0>>0?g+1|0:g,r=(_=w(Q,0,r<<1&-2,1&(_<<1|r>>>31)))+M|0,g=y+l|0,A[I+16>>2]=r,g=r>>>0<_>>>0?g+1|0:g,A[I+20>>2]=g,r=G(r^n,g^p,48),A[I+104>>2]=r,g=y,A[I+108>>2]=g,_=V,g=g+B|0,n=(l=r+o|0)>>>0>>0?g+1|0:g,o=w(r,0,o<<1&-2,1&(B<<1|o>>>31)),g=y+n|0,B=r=o+l|0,n=g=r>>>0>>0?g+1|0:g,A[_>>2]=r,A[_+4>>2]=g,h=G(a^uA,h^i0,1),g=(p=y)+sA|0,a=(r=h+q|0)>>>0>>0?g+1|0:g,o=w(q<<1&-2,1&(sA<<1|q>>>31),h,0),g=y+a|0,_=G((r=o+r|0)^_A,hA^(o=r>>>0>>0?g+1|0:g),32),g=fA+(q=y)|0,l=(a=_+s|0)>>>0>>0?g+1|0:g,s=w(_,0,s<<1&-2,1&(fA<<1|s>>>31)),g=y+l|0,h=G((a=s+a|0)^h,p^(s=a>>>0>>0?g+1|0:g),40),g=o+(sA=y)|0,l=(p=r+h|0)>>>0>>0?g+1|0:g,o=w(h,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+l|0,g=(r=o+p|0)>>>0>>0?g+1|0:g,o=r,r^=_,_=g,r=G(r,q^g,48),g=s+(q=y)|0,l=(p=r+a|0)>>>0>>0?g+1|0:g,a=(s=w(r,0,a<<1&-2,1&(s<<1|a>>>31)))+p|0,g=y+l|0,A[I+72>>2]=a,g=a>>>0>>0?g+1|0:g,A[I+76>>2]=g,A[I+112>>2]=r,A[I+116>>2]=q,A[I+24>>2]=o,A[I+28>>2]=_,d=I,H=G(B^Q,n^b,1),A[d+56>>2]=H,A[I+60>>2]=y,d=I,H=G(a^h,g^sA,1),A[d+32>>2]=H,A[I+36>>2]=y,(0|(C=C+1|0))!=8;);for(C=0;h=(o=A[392+(I=(t+1024|0)+(C<<4)|0)>>2])+(r=A[I+136>>2])|0,g=(n=A[I+396>>2])+(a=A[I+140>>2])|0,s=r>>>0>h>>>0?g+1|0:g,a=w(r<<1&-2,1&(a<<1|r>>>31),o,0),g=y+s|0,s=(r=a+h|0)>>>0>>0?g+1|0:g,Q=(h=G(A[I+904>>2]^r,s^A[I+908>>2],32))+(a=A[I+648>>2])|0,g=(p=y)+(_=A[I+652>>2])|0,B=a>>>0>Q>>>0?g+1|0:g,_=w(a<<1&-2,1&(_<<1|a>>>31),h,0),g=y+B|0,mA=G(o^(a=_+Q|0),n^(l=a>>>0<_>>>0?g+1|0:g),40),g=s+(K=y)|0,o=(_=r+mA|0)>>>0>>0?g+1|0:g,r=w(mA,0,r<<1&-2,1&(s<<1|r>>>31)),g=y+o|0,nA=G(h^(q=r+_|0),p^(sA=r>>>0>q>>>0?g+1|0:g),48),$A=g=y,D=nA,Q=g,_=(h=A[I+264>>2])+(r=A[I+8>>2])|0,g=(fA=A[I+268>>2])+(s=A[I+12>>2])|0,o=r>>>0>_>>>0?g+1|0:g,s=w(r<<1&-2,1&(s<<1|r>>>31),h,0),g=y+o|0,o=(r=s+_|0)>>>0>>0?g+1|0:g,p=(_=G(A[I+776>>2]^r,o^A[I+780>>2],32))+(s=A[I+520>>2])|0,g=(b=y)+(B=A[I+524>>2])|0,n=s>>>0>p>>>0?g+1|0:g,B=w(s<<1&-2,1&(B<<1|s>>>31),_,0),g=y+n|0,B=G(n=(s=B+p|0)^h,fA^(h=s>>>0>>0?g+1|0:g),40),g=o+(M=y)|0,n=(p=r+B|0)>>>0>>0?g+1|0:g,o=w(B,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+n|0,HA=G((r=o+p|0)^_,b^(p=r>>>0>>0?g+1|0:g),48),g=h+(g0=y)|0,o=(_=s+HA|0)>>>0>>0?g+1|0:g,h=w(HA,0,s<<1&-2,1&(h<<1|s>>>31)),g=y+o|0,J=G((s=h+_|0)^B,M^(fA=s>>>0>>0?g+1|0:g),1),aA=g=y,x=J,n=g,b=(B=A[I+256>>2])+(o=A[I>>2])|0,g=(uA=A[I+260>>2])+(h=A[I+4>>2])|0,_=o>>>0>b>>>0?g+1|0:g,h=w(o<<1&-2,1&(h<<1|o>>>31),B,0),g=y+_|0,_=(o=h+b|0)>>>0>>0?g+1|0:g,v=(vA=G(A[I+768>>2]^o,_^A[I+772>>2],32))+(h=A[I+512>>2])|0,g=(EA=y)+(b=A[I+516>>2])|0,M=h>>>0>v>>>0?g+1|0:g,b=w(h<<1&-2,1&(b<<1|h>>>31),vA,0),g=y+M|0,uA=G((h=b+v|0)^B,uA^(b=h>>>0>>0?g+1|0:g),40),g=_+(qA=y)|0,B=(M=o+uA|0)>>>0>>0?g+1|0:g,_=w(uA,0,o<<1&-2,1&(_<<1|o>>>31)),g=y+B|0,g=(M=(o=_+M|0)>>>0<_>>>0?g+1|0:g)+n|0,B=(_=o+x|0)>>>0>>0?g+1|0:g,n=w(x,0,o<<1&-2,1&(M<<1|o>>>31)),g=y+B|0,wA=G((_=n+_|0)^D,(v=_>>>0>>0?g+1|0:g)^Q,32),i0=g=y,$=g,x=(D=A[I+384>>2])+(B=A[I+128>>2])|0,g=(YA=A[I+388>>2])+(Q=A[I+132>>2])|0,n=B>>>0>x>>>0?g+1|0:g,Q=w(B<<1&-2,1&(Q<<1|B>>>31),D,0),g=y+n|0,n=(B=Q+x|0)>>>0>>0?g+1|0:g,V=(x=G(A[I+896>>2]^B,n^A[I+900>>2],32))+(Q=A[I+640>>2])|0,g=(iA=y)+(z=A[I+644>>2])|0,_A=Q>>>0>V>>>0?g+1|0:g,z=w(Q<<1&-2,1&(z<<1|Q>>>31),x,0),g=y+_A|0,z=G(V=(Q=z+V|0)^D,YA^(D=Q>>>0>>0?g+1|0:g),40),g=n+(YA=y)|0,_A=(V=B+z|0)>>>0>>0?g+1|0:g,n=w(z,0,B<<1&-2,1&(n<<1|B>>>31)),g=y+_A|0,_A=G(V=(B=n+V|0)^x,iA^(x=n>>>0>B>>>0?g+1|0:g),48),g=D+(iA=y)|0,n=(V=Q+_A|0)>>>0>>0?g+1|0:g,D=w(_A,0,Q<<1&-2,1&(D<<1|Q>>>31)),g=y+n|0,g=(D=(Q=D+V|0)>>>0>>0?g+1|0:g)+$|0,$=(n=Q+wA|0)>>>0>>0?g+1|0:g,V=w(wA,0,Q<<1&-2,1&(D<<1|Q>>>31)),g=y+$|0,$=G($=(n=V+n|0)^J,aA^(J=n>>>0>>0?g+1|0:g),40),g=v+(aA=y)|0,V=(hA=_+$|0)>>>0<_>>>0?g+1|0:g,_=(v=w($,0,_<<1&-2,1&(v<<1|_>>>31)))+hA|0,g=y+V|0,A[I>>2]=_,g=_>>>0>>0?g+1|0:g,A[I+4>>2]=g,_=G(_^wA,g^i0,48),A[I+904>>2]=_,g=y,A[I+908>>2]=g,g=g+J|0,v=(wA=_+n|0)>>>0>>0?g+1|0:g,_=(n=w(_,0,n<<1&-2,1&(J<<1|n>>>31)))+wA|0,g=y+v|0,A[I+640>>2]=_,g=_>>>0>>0?g+1|0:g,A[I+644>>2]=g,d=I,H=G(_^$,g^aA,1),A[d+264>>2]=H,A[I+268>>2]=y,g=l+$A|0,_=(n=a+nA|0)>>>0>>0?g+1|0:g,a=w(nA,0,a<<1&-2,1&(l<<1|a>>>31)),g=y+_|0,_=g=a>>>0>(n=a+n|0)>>>0?g+1|0:g,a=g,Q=G(Q^z,D^YA,1),g=p+(D=y)|0,l=(v=r+Q|0)>>>0>>0?g+1|0:g,r=(p=w(Q,0,r<<1&-2,1&(p<<1|r>>>31)))+v|0,g=y+l|0,M=G(o^vA,M^EA,48),p=G(M^r,(o=r>>>0

>>0?g+1|0:g)^(J=y),32),g=(nA=y)+a|0,l=p>>>0>(v=p+n|0)>>>0?g+1|0:g,a=(g=v)+(v=w(n<<1&-2,1&(a<<1|n>>>31),p,0))|0,g=y+l|0,l=G(V=a^Q,D^(Q=a>>>0>>0?g+1|0:g),40),g=o+(v=y)|0,D=(vA=r+l|0)>>>0>>0?g+1|0:g,r=w(l,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+D|0,r=G((o=r+vA|0)^p,nA^(g=r>>>0>o>>>0?g+1|0:g),48),A[I+768>>2]=r,p=y,A[I+772>>2]=p,A[I+8>>2]=o,A[I+12>>2]=g,g=Q+p|0,o=(p=r+a|0)>>>0>>0?g+1|0:g,a=w(r,0,a<<1&-2,1&(Q<<1|a>>>31)),g=y+o|0,d=I,H=G((r=a+p|0)^l,(g=r>>>0>>0?g+1|0:g)^v,1),A[d+384>>2]=H,A[I+388>>2]=y,A[I+648>>2]=r,A[I+652>>2]=g,Q=G(n^mA,_^K,1),g=x+(l=y)|0,a=(r=B+Q|0)>>>0>>0?g+1|0:g,o=w(Q,0,B<<1&-2,1&(x<<1|B>>>31)),g=y+a|0,n=G((r=o+r|0)^HA,g0^(_=r>>>0>>0?g+1|0:g),32),p=g=y,o=g,g=b+J|0,B=(a=h+M|0)>>>0>>0?g+1|0:g,h=w(M,0,h<<1&-2,1&(b<<1|h>>>31)),g=y+B|0,g=(h=(a=h+a|0)>>>0>>0?g+1|0:g)+o|0,B=(o=a+n|0)>>>0>>0?g+1|0:g,b=w(n,0,a<<1&-2,1&(h<<1|a>>>31)),g=y+B|0,Q=G((o=b+o|0)^Q,l^(B=o>>>0>>0?g+1|0:g),40),g=_+(b=y)|0,l=(M=r+Q|0)>>>0>>0?g+1|0:g,r=(_=w(Q,0,r<<1&-2,1&(_<<1|r>>>31)))+M|0,g=y+l|0,A[I+128>>2]=r,g=r>>>0<_>>>0?g+1|0:g,A[I+132>>2]=g,r=G(r^n,g^p,48),A[I+776>>2]=r,g=y,A[I+780>>2]=g,g=g+B|0,_=(n=r+o|0)>>>0>>0?g+1|0:g,o=w(r,0,o<<1&-2,1&(B<<1|o>>>31)),g=y+_|0,B=r=o+n|0,n=g=r>>>0>>0?g+1|0:g,A[I+512>>2]=r,A[I+516>>2]=g,h=G(a^uA,h^qA,1),g=(p=y)+sA|0,a=(r=h+q|0)>>>0>>0?g+1|0:g,o=w(q<<1&-2,1&(sA<<1|q>>>31),h,0),g=y+a|0,_=G((r=o+r|0)^_A,iA^(o=r>>>0>>0?g+1|0:g),32),g=fA+(q=y)|0,l=(a=_+s|0)>>>0>>0?g+1|0:g,s=w(_,0,s<<1&-2,1&(fA<<1|s>>>31)),g=y+l|0,h=G((a=s+a|0)^h,p^(s=a>>>0>>0?g+1|0:g),40),g=o+(sA=y)|0,l=(p=r+h|0)>>>0>>0?g+1|0:g,o=w(h,0,r<<1&-2,1&(o<<1|r>>>31)),g=y+l|0,g=(r=o+p|0)>>>0>>0?g+1|0:g,o=r,r^=_,_=g,r=G(r,q^g,48),g=s+(q=y)|0,l=(p=r+a|0)>>>0>>0?g+1|0:g,a=(s=w(r,0,a<<1&-2,1&(s<<1|a>>>31)))+p|0,g=y+l|0,A[I+520>>2]=a,g=a>>>0>>0?g+1|0:g,A[I+524>>2]=g,A[I+896>>2]=r,A[I+900>>2]=q,A[I+136>>2]=o,A[I+140>>2]=_,d=I,H=G(B^Q,n^b,1),A[d+392>>2]=H,A[I+396>>2]=y,d=I,H=G(a^h,g^sA,1),A[d+256>>2]=H,A[I+260>>2]=y,(0|(C=C+1|0))!=8;);for(g=P0(e,t,1024),C=0;r=A[(I=(e=C<<3)+g|0)>>2],o=A[(s=(a=_=t+1024|0)+e|0)>>2],s=A[I+4>>2]^A[s+4>>2],A[I>>2]=r^o,A[I+4>>2]=s,s=A[(I=(r=8|e)+g|0)>>2],a=A[(r=r+a|0)>>2],r=A[I+4>>2]^A[r+4>>2],A[I>>2]=a^s,A[I+4>>2]=r,a=A[(I=(r=16|e)+g|0)>>2],s=A[(r=r+_|0)>>2],r=A[I+4>>2]^A[r+4>>2],A[I>>2]=a^s,A[I+4>>2]=r,r=A[(e=(I=24|e)+g|0)>>2],a=A[(I=I+_|0)>>2],I=A[e+4>>2]^A[I+4>>2],A[e>>2]=r^a,A[e+4>>2]=I,(0|(C=C+4|0))!=128;);W=t+2048|0}function OC(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0;for(W=t=W-800|0,x=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,V=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,K=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,J=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,b=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,z=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,_A=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,o=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,I=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,a=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,_=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,s=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,h=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,n=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,M=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=e- -64|0,B=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,A[g>>2]=33620224^B,A[e+56>>2]=1496785429,A[e+60>>2]=1652156816,A[(C=e+48|0)>>2]=33620224,A[C+4>>2]=218629379,A[e+40>>2]=1110511904,A[e+44>>2]=-584534669,A[(r=e+32|0)>>2]=1427652059,A[r+4>>2]=-248528275,Q=M^B,A[e>>2]=Q,A[e+92>>2]=-584534669^n,A[e+88>>2]=1110511904^h,A[e+84>>2]=-248528275^s,A[(M=e+80|0)>>2]=1427652059^_,A[e+76>>2]=1652156816^a,A[e+72>>2]=1496785429^I,A[e+68>>2]=218629379^o,_A^=n,A[e+28>>2]=_A,z^=h,A[e+24>>2]=z,p=b^s,A[e+20>>2]=p,J^=_,A[(b=e+16|0)>>2]=J,K^=a,A[e+12>>2]=K,l=V^I,A[e+8>>2]=l,v=x^o,A[e+4>>2]=v,V=0;x=A[M+12>>2],A[t+792>>2]=A[M+8>>2],A[t+796>>2]=x,x=A[M+4>>2],A[t+784>>2]=A[M>>2],A[t+788>>2]=x,x=A[g+12>>2],A[t+760>>2]=A[g+8>>2],A[t+764>>2]=x,x=A[g+4>>2],A[t+752>>2]=A[g>>2],A[t+756>>2]=x,x=A[M+12>>2],A[t+744>>2]=A[M+8>>2],A[t+748>>2]=x,x=A[M+4>>2],A[t+736>>2]=A[M>>2],A[t+740>>2]=x,a0(x=t+768|0,t+752|0,t+736|0),D=A[t+780>>2],A[M+8>>2]=A[t+776>>2],A[M+12>>2]=D,D=A[t+772>>2],A[M>>2]=A[t+768>>2],A[M+4>>2]=D,D=A[C+12>>2],A[t+728>>2]=A[C+8>>2],A[t+732>>2]=D,D=A[C+4>>2],A[t+720>>2]=A[C>>2],A[t+724>>2]=D,D=A[g+12>>2],A[t+712>>2]=A[g+8>>2],A[t+716>>2]=D,D=A[g+4>>2],A[t+704>>2]=A[g>>2],A[t+708>>2]=D,a0(x,t+720|0,t+704|0),D=A[t+780>>2],A[g+8>>2]=A[t+776>>2],A[g+12>>2]=D,D=A[t+772>>2],A[g>>2]=A[t+768>>2],A[g+4>>2]=D,D=A[r+12>>2],A[t+696>>2]=A[r+8>>2],A[t+700>>2]=D,D=A[r+4>>2],A[t+688>>2]=A[r>>2],A[t+692>>2]=D,D=A[C+12>>2],A[t+680>>2]=A[C+8>>2],A[t+684>>2]=D,D=A[C+4>>2],A[t+672>>2]=A[C>>2],A[t+676>>2]=D,a0(x,t+688|0,t+672|0),D=A[t+780>>2],A[C+8>>2]=A[t+776>>2],A[C+12>>2]=D,D=A[t+772>>2],A[C>>2]=A[t+768>>2],A[C+4>>2]=D,D=A[b+12>>2],A[t+664>>2]=A[b+8>>2],A[t+668>>2]=D,D=A[b+4>>2],A[t+656>>2]=A[b>>2],A[t+660>>2]=D,D=A[r+12>>2],A[t+648>>2]=A[r+8>>2],A[t+652>>2]=D,D=A[r+4>>2],A[t+640>>2]=A[r>>2],A[t+644>>2]=D,a0(x,t+656|0,t+640|0),D=A[t+780>>2],A[r+8>>2]=A[t+776>>2],A[r+12>>2]=D,D=A[t+772>>2],A[r>>2]=A[t+768>>2],A[r+4>>2]=D,D=A[e+12>>2],A[t+632>>2]=A[e+8>>2],A[t+636>>2]=D,D=A[e+4>>2],A[t+624>>2]=A[e>>2],A[t+628>>2]=D,D=A[b+12>>2],A[t+616>>2]=A[b+8>>2],A[t+620>>2]=D,D=A[b+4>>2],A[t+608>>2]=A[b>>2],A[t+612>>2]=D,a0(x,t+624|0,t+608|0),D=A[t+780>>2],A[b+8>>2]=A[t+776>>2],A[b+12>>2]=D,D=A[t+772>>2],A[b>>2]=A[t+768>>2],A[b+4>>2]=D,D=A[t+796>>2],A[t+600>>2]=A[t+792>>2],A[t+604>>2]=D,D=A[t+788>>2],A[t+592>>2]=A[t+784>>2],A[t+596>>2]=D,D=A[e+12>>2],A[t+584>>2]=A[e+8>>2],A[t+588>>2]=D,D=A[e+4>>2],A[t+576>>2]=A[e>>2],A[t+580>>2]=D,a0(x,t+592|0,t+576|0),D=A[t+768>>2],q=A[t+772>>2],$=A[t+776>>2],A[e+12>>2]=A[t+780>>2]^a,A[e+8>>2]=$^I,A[e+4>>2]=q^o,A[e>>2]=D^B,D=A[M+12>>2],A[t+792>>2]=A[M+8>>2],A[t+796>>2]=D,D=A[M+4>>2],A[t+784>>2]=A[M>>2],A[t+788>>2]=D,D=A[g+12>>2],A[t+568>>2]=A[g+8>>2],A[t+572>>2]=D,D=A[g+4>>2],A[t+560>>2]=A[g>>2],A[t+564>>2]=D,D=A[M+12>>2],A[t+552>>2]=A[M+8>>2],A[t+556>>2]=D,D=A[M+4>>2],A[t+544>>2]=A[M>>2],A[t+548>>2]=D,a0(x,t+560|0,t+544|0),D=A[t+780>>2],A[M+8>>2]=A[t+776>>2],A[M+12>>2]=D,D=A[t+772>>2],A[M>>2]=A[t+768>>2],A[M+4>>2]=D,D=A[C+12>>2],A[t+536>>2]=A[C+8>>2],A[t+540>>2]=D,D=A[C+4>>2],A[t+528>>2]=A[C>>2],A[t+532>>2]=D,D=A[g+12>>2],A[t+520>>2]=A[g+8>>2],A[t+524>>2]=D,D=A[g+4>>2],A[t+512>>2]=A[g>>2],A[t+516>>2]=D,a0(x,t+528|0,t+512|0),D=A[t+780>>2],A[g+8>>2]=A[t+776>>2],A[g+12>>2]=D,D=A[t+772>>2],A[g>>2]=A[t+768>>2],A[g+4>>2]=D,D=A[r+12>>2],A[t+504>>2]=A[r+8>>2],A[t+508>>2]=D,D=A[r+4>>2],A[t+496>>2]=A[r>>2],A[t+500>>2]=D,D=A[C+12>>2],A[t+488>>2]=A[C+8>>2],A[t+492>>2]=D,D=A[C+4>>2],A[t+480>>2]=A[C>>2],A[t+484>>2]=D,a0(x,t+496|0,t+480|0),D=A[t+780>>2],A[C+8>>2]=A[t+776>>2],A[C+12>>2]=D,D=A[t+772>>2],A[C>>2]=A[t+768>>2],A[C+4>>2]=D,D=A[b+12>>2],A[t+472>>2]=A[b+8>>2],A[t+476>>2]=D,D=A[b+4>>2],A[t+464>>2]=A[b>>2],A[t+468>>2]=D,D=A[r+12>>2],A[t+456>>2]=A[r+8>>2],A[t+460>>2]=D,D=A[r+4>>2],A[t+448>>2]=A[r>>2],A[t+452>>2]=D,a0(x,t+464|0,t+448|0),D=A[t+780>>2],A[r+8>>2]=A[t+776>>2],A[r+12>>2]=D,D=A[t+772>>2],A[r>>2]=A[t+768>>2],A[r+4>>2]=D,D=A[e+12>>2],A[t+440>>2]=A[e+8>>2],A[t+444>>2]=D,D=A[e+4>>2],A[t+432>>2]=A[e>>2],A[t+436>>2]=D,D=A[b+12>>2],A[t+424>>2]=A[b+8>>2],A[t+428>>2]=D,D=A[b+4>>2],A[t+416>>2]=A[b>>2],A[t+420>>2]=D,a0(x,t+432|0,t+416|0),D=A[t+780>>2],A[b+8>>2]=A[t+776>>2],A[b+12>>2]=D,D=A[t+772>>2],A[b>>2]=A[t+768>>2],A[b+4>>2]=D,D=A[t+796>>2],A[t+408>>2]=A[t+792>>2],A[t+412>>2]=D,D=A[t+788>>2],A[t+400>>2]=A[t+784>>2],A[t+404>>2]=D,D=A[e+12>>2],A[t+392>>2]=A[e+8>>2],A[t+396>>2]=D,D=A[e+4>>2],A[t+384>>2]=A[e>>2],A[t+388>>2]=D,a0(x,t+400|0,t+384|0),D=A[t+768>>2],q=A[t+772>>2],$=A[t+776>>2],A[e+12>>2]=A[t+780>>2]^n,A[e+8>>2]=$^h,A[e+4>>2]=q^s,A[e>>2]=D^_,D=A[M+12>>2],A[t+792>>2]=A[M+8>>2],A[t+796>>2]=D,D=A[M+4>>2],A[t+784>>2]=A[M>>2],A[t+788>>2]=D,D=A[g+12>>2],A[t+376>>2]=A[g+8>>2],A[t+380>>2]=D,D=A[g+4>>2],A[t+368>>2]=A[g>>2],A[t+372>>2]=D,D=A[M+12>>2],A[t+360>>2]=A[M+8>>2],A[t+364>>2]=D,D=A[M+4>>2],A[t+352>>2]=A[M>>2],A[t+356>>2]=D,a0(x,t+368|0,t+352|0),D=A[t+780>>2],A[M+8>>2]=A[t+776>>2],A[M+12>>2]=D,D=A[t+772>>2],A[M>>2]=A[t+768>>2],A[M+4>>2]=D,D=A[C+12>>2],A[t+344>>2]=A[C+8>>2],A[t+348>>2]=D,D=A[C+4>>2],A[t+336>>2]=A[C>>2],A[t+340>>2]=D,D=A[g+12>>2],A[t+328>>2]=A[g+8>>2],A[t+332>>2]=D,D=A[g+4>>2],A[t+320>>2]=A[g>>2],A[t+324>>2]=D,a0(x,t+336|0,t+320|0),D=A[t+780>>2],A[g+8>>2]=A[t+776>>2],A[g+12>>2]=D,D=A[t+772>>2],A[g>>2]=A[t+768>>2],A[g+4>>2]=D,D=A[r+12>>2],A[t+312>>2]=A[r+8>>2],A[t+316>>2]=D,D=A[r+4>>2],A[t+304>>2]=A[r>>2],A[t+308>>2]=D,D=A[C+12>>2],A[t+296>>2]=A[C+8>>2],A[t+300>>2]=D,D=A[C+4>>2],A[t+288>>2]=A[C>>2],A[t+292>>2]=D,a0(x,t+304|0,t+288|0),D=A[t+780>>2],A[C+8>>2]=A[t+776>>2],A[C+12>>2]=D,D=A[t+772>>2],A[C>>2]=A[t+768>>2],A[C+4>>2]=D,D=A[b+12>>2],A[t+280>>2]=A[b+8>>2],A[t+284>>2]=D,D=A[b+4>>2],A[t+272>>2]=A[b>>2],A[t+276>>2]=D,D=A[r+12>>2],A[t+264>>2]=A[r+8>>2],A[t+268>>2]=D,D=A[r+4>>2],A[t+256>>2]=A[r>>2],A[t+260>>2]=D,a0(x,t+272|0,t+256|0),D=A[t+780>>2],A[r+8>>2]=A[t+776>>2],A[r+12>>2]=D,D=A[t+772>>2],A[r>>2]=A[t+768>>2],A[r+4>>2]=D,D=A[e+12>>2],A[t+248>>2]=A[e+8>>2],A[t+252>>2]=D,D=A[e+4>>2],A[t+240>>2]=A[e>>2],A[t+244>>2]=D,D=A[b+12>>2],A[t+232>>2]=A[b+8>>2],A[t+236>>2]=D,D=A[b+4>>2],A[t+224>>2]=A[b>>2],A[t+228>>2]=D,a0(x,t+240|0,t+224|0),D=A[t+780>>2],A[b+8>>2]=A[t+776>>2],A[b+12>>2]=D,D=A[t+772>>2],A[b>>2]=A[t+768>>2],A[b+4>>2]=D,D=A[t+796>>2],A[t+216>>2]=A[t+792>>2],A[t+220>>2]=D,D=A[t+788>>2],A[t+208>>2]=A[t+784>>2],A[t+212>>2]=D,D=A[e+12>>2],A[t+200>>2]=A[e+8>>2],A[t+204>>2]=D,D=A[e+4>>2],A[t+192>>2]=A[e>>2],A[t+196>>2]=D,a0(x,t+208|0,t+192|0),D=A[t+768>>2],q=A[t+772>>2],$=A[t+776>>2],A[e+12>>2]=K^A[t+780>>2],A[e+8>>2]=$^l,A[e+4>>2]=q^v,A[e>>2]=D^Q,D=A[M+12>>2],A[t+792>>2]=A[M+8>>2],A[t+796>>2]=D,D=A[M+4>>2],A[t+784>>2]=A[M>>2],A[t+788>>2]=D,D=A[g+12>>2],A[t+184>>2]=A[g+8>>2],A[t+188>>2]=D,D=A[g+4>>2],A[t+176>>2]=A[g>>2],A[t+180>>2]=D,D=A[M+12>>2],A[t+168>>2]=A[M+8>>2],A[t+172>>2]=D,D=A[M+4>>2],A[t+160>>2]=A[M>>2],A[t+164>>2]=D,a0(x,t+176|0,t+160|0),D=A[t+780>>2],A[M+8>>2]=A[t+776>>2],A[M+12>>2]=D,D=A[t+772>>2],A[M>>2]=A[t+768>>2],A[M+4>>2]=D,D=A[C+12>>2],A[t+152>>2]=A[C+8>>2],A[t+156>>2]=D,D=A[C+4>>2],A[t+144>>2]=A[C>>2],A[t+148>>2]=D,D=A[g+12>>2],A[t+136>>2]=A[g+8>>2],A[t+140>>2]=D,D=A[g+4>>2],A[t+128>>2]=A[g>>2],A[t+132>>2]=D,a0(x,t+144|0,t+128|0),D=A[t+780>>2],A[g+8>>2]=A[t+776>>2],A[g+12>>2]=D,D=A[t+772>>2],A[g>>2]=A[t+768>>2],A[g+4>>2]=D,D=A[r+12>>2],A[t+120>>2]=A[r+8>>2],A[t+124>>2]=D,D=A[r+4>>2],A[t+112>>2]=A[r>>2],A[t+116>>2]=D,D=A[C+12>>2],A[t+104>>2]=A[C+8>>2],A[t+108>>2]=D,D=A[C+4>>2],A[t+96>>2]=A[C>>2],A[t+100>>2]=D,a0(x,t+112|0,t+96|0),D=A[t+780>>2],A[C+8>>2]=A[t+776>>2],A[C+12>>2]=D,D=A[t+772>>2],A[C>>2]=A[t+768>>2],A[C+4>>2]=D,D=A[b+12>>2],A[t+88>>2]=A[b+8>>2],A[t+92>>2]=D,D=A[b+4>>2],A[t+80>>2]=A[b>>2],A[t+84>>2]=D,D=A[r+12>>2],A[t+72>>2]=A[r+8>>2],A[t+76>>2]=D,D=A[r+4>>2],A[t+64>>2]=A[r>>2],A[t+68>>2]=D,a0(x,t+80|0,t- -64|0),D=A[t+780>>2],A[r+8>>2]=A[t+776>>2],A[r+12>>2]=D,D=A[t+772>>2],A[r>>2]=A[t+768>>2],A[r+4>>2]=D,D=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=D,D=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=D,D=A[b+12>>2],A[t+40>>2]=A[b+8>>2],A[t+44>>2]=D,D=A[b+4>>2],A[t+32>>2]=A[b>>2],A[t+36>>2]=D,a0(x,t+48|0,t+32|0),D=A[t+780>>2],A[b+8>>2]=A[t+776>>2],A[b+12>>2]=D,D=A[t+772>>2],A[b>>2]=A[t+768>>2],A[b+4>>2]=D,D=A[t+796>>2],A[t+24>>2]=A[t+792>>2],A[t+28>>2]=D,D=A[t+788>>2],A[t+16>>2]=A[t+784>>2],A[t+20>>2]=D,D=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=D,D=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=D,a0(x,t+16|0,t),x=A[t+768>>2],D=A[t+772>>2],q=A[t+776>>2],A[e+12>>2]=_A^A[t+780>>2],A[e+8>>2]=q^z,A[e+4>>2]=D^p,A[e>>2]=x^J,(0|(V=V+1|0))!=4;);W=t+800|0}function XC(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0;for(W=e=W-48|0,z=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,J=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,c[C+24|0]=J,c[C+25|0]=J>>>8,c[C+26|0]=J>>>16,c[C+27|0]=J>>>24,c[C+28|0]=z,c[C+29|0]=z>>>8,c[C+30|0]=z>>>16,c[C+31|0]=z>>>24,z=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,J=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,c[0|C]=J,c[C+1|0]=J>>>8,c[C+2|0]=J>>>16,c[C+3|0]=J>>>24,c[C+4|0]=z,c[C+5|0]=z>>>8,c[C+6|0]=z>>>16,c[C+7|0]=z>>>24,z=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,J=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,c[C+16|0]=J,c[C+17|0]=J>>>8,c[C+18|0]=J>>>16,c[C+19|0]=J>>>24,c[C+20|0]=z,c[C+21|0]=z>>>8,c[C+22|0]=z>>>16,c[C+23|0]=z>>>24,J=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,g=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,c[C+12|0]=J,c[C+13|0]=J>>>8,c[C+14|0]=J>>>16,c[C+15|0]=J>>>24,g=i[C+31|0],c[C+31|0]=127&g,z1(e,C),n=128&g,W=g=W-960|0,ee(J=g+304|0,e),A[g+304>>2]=A[g+304>>2]+1,j1(J,J),z=w(J=A[g+340>>2],J>>31,486662,0),J=y,fA=(iA=z+16777216|0)>>>0<16777216?J+1|0:J,vA=z-(-33554432&iA)|0,K=w(J=A[g+336>>2],J>>31,486662,0),z=y,_A=w(J=A[g+332>>2],J>>31,486662,0),J=y,uA=K,K=(K=(J=(nA=_A+16777216|0)>>>0<16777216?J+1|0:J)>>25)+z|0,J=(J=(33554431&J)<<7|nA>>>25)>>>0>(sA=uA+J|0)>>>0?K+1|0:K,t=((67108863&(J=(z=sA+33554432|0)>>>0<33554432?J+1|0:J))<<6|z>>>26)+vA|0,A[g+292>>2]=0-t,YA=sA-(-67108864&z)|0,A[g+288>>2]=0-YA,vA=_A-(-33554432&nA)|0,z=w(J=A[g+328>>2],J>>31,486662,0),J=y,nA=w(K=A[g+324>>2],K>>31,486662,0),K=y,uA=z,J=J+(z=(K=(sA=nA+16777216|0)>>>0<16777216?K+1|0:K)>>25)|0,J=(K=uA+(_A=(33554431&K)<<7|sA>>>25)|0)>>>0<_A>>>0?J+1|0:J,r=((67108863&(J=(z=K+33554432|0)>>>0<33554432?J+1|0:J))<<6|z>>>26)+vA|0,A[g+284>>2]=0-r,o=K-(-67108864&z)|0,A[g+280>>2]=0-o,vA=nA-(-33554432&sA)|0,K=w(J=A[g+320>>2],J>>31,486662,0),J=y,nA=w(z=A[g+316>>2],z>>31,486662,0),z=y,uA=K,J=(K=(z=(sA=nA+16777216|0)>>>0<16777216?z+1|0:z)>>25)+J|0,K=J=(z=uA+(_A=(33554431&z)<<7|sA>>>25)|0)>>>0<_A>>>0?J+1|0:J,I=((67108863&(K=(_A=z+33554432|0)>>>0<33554432?K+1|0:K))<<6|_A>>>26)+vA|0,A[g+276>>2]=0-I,a=z-(-67108864&_A)|0,A[g+272>>2]=0-a,uA=nA-(-33554432&sA)|0,J=w(J=A[g+312>>2],J>>31,486662,0),vA=y,_A=w(z=A[g+308>>2],z>>31,486662,0),K=y,z=(33554431&(K=(nA=_A+16777216|0)>>>0<16777216?K+1|0:K))<<7|nA>>>25,K=(K>>25)+vA|0,z=z>>>0>(sA=z+J|0)>>>0?K+1|0:K,_=((67108863&(z=(J=sA+33554432|0)>>>0<33554432?z+1|0:z))<<6|J>>>26)+uA|0,A[g+268>>2]=0-_,s=sA-(-67108864&J)|0,A[g+264>>2]=0-s,sA=_A-(-33554432&nA)|0,z=w((33554431&fA)<<7|iA>>>25,fA>>25,19,0),J=y,_A=z,z=w(K=A[g+304>>2],K>>31,486662,0),J=y+J|0,z=(K=_A+z|0)>>>0>>0?J+1|0:J,h=((67108863&(z=(J=K+33554432|0)>>>0<33554432?z+1|0:z))<<6|J>>>26)+sA|0,A[g+260>>2]=0-h,wA=K-(-67108864&J)|0,A[g+256>>2]=0-wA,gA(z=g+208|0,J=g+256|0),kA(g+160|0,J,z),B=A[g+196>>2],Q=A[g+160>>2],hA=A[g+208>>2],p=A[g+164>>2],l=A[g+168>>2],mA=A[g+212>>2],HA=A[g+216>>2],v=A[g+172>>2],D=A[g+176>>2],aA=A[g+220>>2],EA=A[g+224>>2],b=A[g+180>>2],M=A[g+184>>2],uA=A[g+228>>2],vA=A[g+232>>2],x=A[g+188>>2],q=A[g+192>>2],z=w(J=A[g+244>>2],J>>31,486662,0),J=y,fA=(iA=z+16777216|0)>>>0<16777216?J+1|0:J,V=z-(-33554432&iA)|0,J=w(J=A[g+240>>2],J>>31,486662,0),$=y,_A=w(z=A[g+236>>2],z>>31,486662,0),K=y,z=J,J=(33554431&(K=(nA=_A+16777216|0)>>>0<16777216?K+1|0:K))<<7|nA>>>25,K=(K>>25)+$|0,J=J>>>0>(sA=z+J|0)>>>0?K+1|0:K,K=((67108863&(J=(z=sA+33554432|0)>>>0<33554432?J+1|0:J))<<6|z>>>26)+V|0,A[g+244>>2]=K,A[g+388>>2]=K+(B-t|0),J=sA-(-67108864&z)|0,A[g+240>>2]=J,A[g+384>>2]=J+(q-YA|0),YA=_A-(-33554432&nA)|0,J=w(vA,vA>>31,486662,0),_A=y,nA=w(uA,uA>>31,486662,0),z=y,uA=J,J=(J=(z=(sA=nA+16777216|0)>>>0<16777216?z+1|0:z)>>25)+_A|0,K=J=(K=(33554431&z)<<7|sA>>>25)>>>0>(z=uA+K|0)>>>0?J+1|0:J,_A=((67108863&(K=(_A=z+33554432|0)>>>0<33554432?K+1|0:K))<<6|(J=_A)>>>26)+YA|0,A[g+236>>2]=_A,A[g+380>>2]=_A+(x-r|0),J=z-(-67108864&J)|0,A[g+232>>2]=J,A[g+376>>2]=J+(M-o|0),vA=nA-(-33554432&sA)|0,K=w(EA,EA>>31,486662,0),z=y,_A=w(aA,aA>>31,486662,0),J=y,uA=K,K=(K=(J=(nA=_A+16777216|0)>>>0<16777216?J+1|0:J)>>25)+z|0,z=(J=(33554431&J)<<7|nA>>>25)>>>0>(sA=uA+J|0)>>>0?K+1|0:K,K=((67108863&(z=(J=sA+33554432|0)>>>0<33554432?z+1|0:z))<<6|J>>>26)+vA|0,A[g+228>>2]=K,A[g+372>>2]=K+(b-I|0),J=sA-(-67108864&J)|0,A[g+224>>2]=J,A[g+368>>2]=J+(D-a|0),vA=_A-(-33554432&nA)|0,J=w(HA,HA>>31,486662,0),z=y,nA=w(mA,mA>>31,486662,0),K=y,uA=J,z=(J=(K=(sA=nA+16777216|0)>>>0<16777216?K+1|0:K)>>25)+z|0,J=z=(K=uA+(_A=(33554431&K)<<7|sA>>>25)|0)>>>0<_A>>>0?z+1|0:z,_A=((67108863&(J=(_A=K+33554432|0)>>>0<33554432?J+1|0:J))<<6|(z=_A)>>>26)+vA|0,A[g+220>>2]=_A,A[g+364>>2]=_A+(v-_|0),J=K-(-67108864&z)|0,A[g+216>>2]=J,A[g+360>>2]=J+(l-s|0),sA=nA-(-33554432&sA)|0,z=w((33554431&fA)<<7|iA>>>25,fA>>25,19,0),J=y,K=z,z=w(hA,hA>>31,486662,0),J=y+J|0,J=(K=K+z|0)>>>0>>0?J+1|0:J,fA=((67108863&(J=(z=K+33554432|0)>>>0<33554432?J+1|0:J))<<6|z>>>26)+sA|0,A[g+212>>2]=fA,A[g+356>>2]=fA+(p-h|0),J=K-(-67108864&z)|0,A[g+208>>2]=J,A[g+352>>2]=J+(Q-wA|0),kA(J=g+624|0,z=g+352|0,z),kA(g,z,J),gA(z=g+784|0,g),gA(z,z),kA(J=g+912|0,g,z),gA(z=g+576|0,J),gA(z,z),gA(z,z),gA(z,z),kA(K=g+528|0,J,z),gA(K,K),gA(K,K),kA(K,K,g),J=A[g+564>>2],A[g+512>>2]=A[g+560>>2],A[g+516>>2]=J,J=A[g+556>>2],A[g+504>>2]=A[g+552>>2],A[g+508>>2]=J,J=A[g+548>>2],A[g+496>>2]=A[g+544>>2],A[g+500>>2]=J,J=A[g+540>>2],A[g+488>>2]=A[g+536>>2],A[g+492>>2]=J,J=A[g+532>>2],A[g+480>>2]=A[g+528>>2],A[g+484>>2]=J,gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),kA(K,K,J=g+480|0),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),kA(K,K,J),J=A[g+564>>2],A[g+464>>2]=A[g+560>>2],A[g+468>>2]=J,J=A[g+556>>2],A[g+456>>2]=A[g+552>>2],A[g+460>>2]=J,J=A[g+548>>2],A[g+448>>2]=A[g+544>>2],A[g+452>>2]=J,J=A[g+540>>2],A[g+440>>2]=A[g+536>>2],A[g+444>>2]=J,J=A[g+532>>2],A[g+432>>2]=A[g+528>>2],A[g+436>>2]=J,gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),kA(K,K,z=g+432|0),J=A[g+564>>2],A[g+464>>2]=A[g+560>>2],A[g+468>>2]=J,J=A[g+556>>2],A[g+456>>2]=A[g+552>>2],A[g+460>>2]=J,J=A[g+548>>2],A[g+448>>2]=A[g+544>>2],A[g+452>>2]=J,J=A[g+540>>2],A[g+440>>2]=A[g+536>>2],A[g+444>>2]=J,J=A[g+532>>2],A[g+432>>2]=A[g+528>>2],A[g+436>>2]=J,gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),gA(K,K),kA(K,K,z),J=A[g+564>>2],A[g+464>>2]=A[g+560>>2],A[g+468>>2]=J,J=A[g+556>>2],A[g+456>>2]=A[g+552>>2],A[g+460>>2]=J,J=A[g+548>>2],A[g+448>>2]=A[g+544>>2],A[g+452>>2]=J,J=A[g+540>>2],A[g+440>>2]=A[g+536>>2],A[g+444>>2]=J,J=A[g+532>>2],A[g+432>>2]=A[g+528>>2],A[g+436>>2]=J;gA(J=g+528|0,J),(0|(qA=qA+1|0))!=120;);kA(J,J,g+432|0),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),gA(J,J),kA(J,J,g+480|0),gA(J,J),gA(J,J),gA(J,J),kA(J,J,g),gA(J,J),w2(g+400|0,J),hA=A[g+256>>2],mA=A[g+260>>2],HA=A[g+264>>2],aA=A[g+268>>2],EA=A[g+272>>2],sA=A[g+276>>2],fA=A[g+280>>2],K=A[g+284>>2],z=A[g+288>>2],uA=(wA=0-(1&c[g+401|0])|0)&(0-(J=A[g+292>>2])^J)^J,A[g+660>>2]=uA,vA=z^wA&(z^0-z),A[g+656>>2]=vA,iA=K^wA&(K^0-K),A[g+652>>2]=iA,_A=fA^wA&(fA^0-fA),A[g+648>>2]=_A,nA=sA^wA&(sA^0-sA),A[g+644>>2]=nA,sA=EA^wA&(EA^0-EA),A[g+640>>2]=sA,fA=aA^wA&(aA^0-aA),A[g+636>>2]=fA,K=HA^wA&(HA^0-HA),A[g+632>>2]=K,z=mA^wA&(mA^0-mA),A[g+628>>2]=z,J=(hA^wA&(hA^0-hA))-(486662&wA)|0,A[g+624>>2]=J+1,A[g+820>>2]=uA,A[g+816>>2]=vA,A[g+812>>2]=iA,A[g+808>>2]=_A,A[g+804>>2]=nA,A[g+800>>2]=sA,A[g+796>>2]=fA,A[g+792>>2]=K,A[g+788>>2]=z,A[g+784>>2]=J-1,j1(g,g+624|0),kA(J=g+912|0,g+784|0,g),w2(C,J),c[C+31|0]=i[C+31|0]|n,T1(g,C)&&(sa(),Q0()),J=A[g+36>>2],A[g+816>>2]=A[g+32>>2],A[g+820>>2]=J,J=A[g+28>>2],A[g+808>>2]=A[g+24>>2],A[g+812>>2]=J,J=A[g+20>>2],A[g+800>>2]=A[g+16>>2],A[g+804>>2]=J,J=A[g+12>>2],A[g+792>>2]=A[g+8>>2],A[g+796>>2]=J,J=A[g+52>>2],A[g+832>>2]=A[g+48>>2],A[g+836>>2]=J,J=A[g+60>>2],A[g+840>>2]=A[g+56>>2],A[g+844>>2]=J,J=A[4+(z=g- -64|0)>>2],A[g+848>>2]=A[z>>2],A[g+852>>2]=J,J=A[g+76>>2],A[g+856>>2]=A[g+72>>2],A[g+860>>2]=J,J=A[g+4>>2],A[g+784>>2]=A[g>>2],A[g+788>>2]=J,J=A[g+44>>2],A[g+824>>2]=A[g+40>>2],A[g+828>>2]=J,J=A[g+116>>2],A[g+896>>2]=A[g+112>>2],A[g+900>>2]=J,J=A[g+108>>2],A[g+888>>2]=A[g+104>>2],A[g+892>>2]=J,J=A[g+100>>2],A[g+880>>2]=A[g+96>>2],A[g+884>>2]=J,J=A[g+92>>2],A[g+872>>2]=A[g+88>>2],A[g+876>>2]=J,J=A[g+84>>2],A[g+864>>2]=A[g+80>>2],A[g+868>>2]=J,P2(_A=g+624|0,nA=g+784|0),kA(nA,_A,sA=g+744|0),kA(z=g+824|0,K=g+664|0,fA=g+704|0),kA(J=g+864|0,fA,sA),P2(_A,nA),kA(nA,_A,sA),kA(z,K,fA),kA(J,fA,sA),P2(_A,nA),kA(g,_A,sA),kA(z=g+40|0,K,fA),kA(J=g+80|0,fA,sA),kA(g+120|0,_A,K),j1(_A,J),kA(nA,g,_A),kA(J=g+912|0,z,_A),w2(C,J),w2(g+576|0,nA),c[C+31|0]=i[C+31|0]^i[g+576|0]<<7,W=g+960|0,W=e+48|0}function r1(C){var g,e=0,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0;W=g=W-16|0;A:{g:{C:{e:{t:{o:{i:{r:{c:{a:{if((C|=0)>>>0<=244){if(3&(e=(o=A[9405])>>>(C=(_=C>>>0<11?16:C+11&504)>>>3|0)|0)){C=37660+(e=(t=C+(1&~e)|0)<<3)|0,e=A[e+37668>>2],(0|C)!=(0|(r=A[e+8>>2]))?(A[r+12>>2]=C,A[C+8>>2]=r):(B=37620,Q=pA(-2,t)&o,A[B>>2]=Q),C=e+8|0,t<<=3,A[e+4>>2]=3|t,A[4+(e=e+t|0)>>2]=1|A[e+4>>2];break A}if((s=A[9407])>>>0>=_>>>0)break a;if(e){e=37660+(t=(C=qe((0-(t=2<>2],(0|e)!=(0|(r=A[t+8>>2]))?(A[r+12>>2]=e,A[e+8>>2]=r):(o=pA(-2,C)&o,A[9405]=o),A[t+4>>2]=3|_,I=(C<<=3)-_|0,A[4+(a=t+_|0)>>2]=1|I,A[C+t>>2]=I,s&&(C=37660+(-8&s)|0,r=A[9410],(e=1<<(s>>>3))&o?e=A[C+8>>2]:(A[9405]=e|o,e=C),A[C+8>>2]=r,A[e+12>>2]=r,A[r+12>>2]=C,A[r+8>>2]=e),C=t+8|0,A[9410]=a,A[9407]=I;break A}if(!(n=A[9406]))break a;for(t=A[37924+(qe(n)<<2)>>2],I=(-8&A[t+4>>2])-_|0,e=t;(C=A[e+16>>2])||(C=A[e+20>>2]);)I=(e=(r=(-8&A[C+4>>2])-_|0)>>>0>>0)?r:I,t=e?C:t,e=C;if(h=A[t+24>>2],(0|t)!=(0|(C=A[t+12>>2]))){e=A[t+8>>2],A[e+12>>2]=C,A[C+8>>2]=e;break g}if(e=A[t+20>>2])r=t+20|0;else{if(!(e=A[t+16>>2]))break c;r=t+16|0}for(;a=r,r=(C=e)+20|0,(e=A[C+20>>2])||(r=C+16|0,e=A[C+16>>2]););A[a>>2]=0;break g}if(_=-1,!(C>>>0>4294967231)&&(_=-8&(e=C+11|0),a=A[9406])){s=31,I=0-_|0,C>>>0<=16777204&&(s=62+((_>>>38-(C=A1(e>>>8|0))&1)-(C<<1)|0)|0);_:{I:{if(e=A[37924+(s<<2)>>2])for(C=0,t=_<<((0|s)!=31?25-(s>>>1|0):0);;){if(!((o=(-8&A[e+4>>2])-_|0)>>>0>=I>>>0||(r=e,I=o))){I=0,C=e;break I}if(o=A[e+20>>2],e=A[16+((t>>>29&4)+e|0)>>2],C=o?(0|o)==(0|e)?C:o:C,t<<=1,!e)break}else C=0;if(!(C|r)){if(r=0,!(C=(0-(C=2<>2]}if(!C)break _}for(;I=(e=(t=(-8&A[C+4>>2])-_|0)>>>0>>0)?t:I,r=e?C:r,C=(e=A[C+16>>2])||A[C+20>>2];);}if(!(!r|A[9407]-_>>>0<=I>>>0)){if(s=A[r+24>>2],(0|r)!=(0|(C=A[r+12>>2]))){e=A[r+8>>2],A[e+12>>2]=C,A[C+8>>2]=e;break C}if(e=A[r+20>>2])t=r+20|0;else{if(!(e=A[r+16>>2]))break r;t=r+16|0}for(;o=t,t=(C=e)+20|0,(e=A[C+20>>2])||(t=C+16|0,e=A[C+16>>2]););A[o>>2]=0;break C}}}if((r=A[9407])>>>0>=_>>>0){C=A[9410],(e=r-_|0)>>>0>=16?(A[4+(t=C+_|0)>>2]=1|e,A[C+r>>2]=e,A[C+4>>2]=3|_):(A[C+4>>2]=3|r,A[4+(e=C+r|0)>>2]=1|A[e+4>>2],t=0,e=0),A[9407]=e,A[9410]=t,C=C+8|0;break A}if((t=A[9408])>>>0>_>>>0){e=t-_|0,A[9408]=e,t=(C=A[9411])+_|0,A[9411]=t,A[t+4>>2]=1|e,A[C+4>>2]=3|_,C=C+8|0;break A}if(C=0,I=_+47|0,A[9523]?e=A[9525]:(A[9526]=-1,A[9527]=-1,A[9524]=4096,A[9525]=4096,A[9523]=g+12&-16^1431655768,A[9528]=0,A[9516]=0,e=4096),(e=(o=I+e|0)&(a=0-e|0))>>>0<=_>>>0||(s=A[9515])&&(r=(h=A[9513])+e|0)>>>0<=h>>>0|r>>>0>s>>>0)break A;a:{if(!(4&i[38064])){_:{I:{s:{B:{if(r=A[9411])for(C=38068;;){if((s=A[C>>2])>>>0<=r>>>0&r>>>0>2]>>>0)break B;if(!(C=A[C+8>>2]))break}if((0|(t=Tg(0)))==-1||(o=e,(r=(C=A[9524])-1|0)&t&&(o=(e-t|0)+(t+r&0-C)|0),o>>>0<=_>>>0)||(r=A[9515])&&(C=(a=A[9513])+o|0)>>>0<=a>>>0|C>>>0>r>>>0)break _;if((0|t)!=(0|(C=Tg(o))))break s;break a}if((0|(t=Tg(o=a&o-t)))==(A[C>>2]+A[C+4>>2]|0))break I;C=t}if((0|C)==-1)break _;if(_+48>>>0<=o>>>0){t=C;break a}if((0|Tg(t=(t=A[9525])+(I-o|0)&0-t))==-1)break _;o=t+o|0,t=C;break a}if((0|t)!=-1)break a}A[9516]=4|A[9516]}if((0|(t=Tg(e)))==-1|(0|(C=Tg(0)))==-1|C>>>0<=t>>>0||(o=C-t|0)>>>0<=_+40>>>0)break t}C=A[9513]+o|0,A[9513]=C,C>>>0>O2[9514]&&(A[9514]=C);a:{if(I=A[9411]){for(C=38068;;){if(((e=A[C>>2])+(r=A[C+4>>2])|0)==(0|t))break a;if(!(C=A[C+8>>2]))break}break i}for((C=A[9409])>>>0<=t>>>0&&C||(A[9409]=t),C=0,A[9518]=o,A[9517]=t,A[9413]=-1,A[9414]=A[9523],A[9520]=0;r=37660+(e=C<<3)|0,A[e+37668>>2]=r,A[e+37672>>2]=r,(0|(C=C+1|0))!=32;);r=(C=o-40|0)-(e=-8-t&7)|0,A[9408]=r,e=e+t|0,A[9411]=e,A[e+4>>2]=1|r,A[4+(C+t|0)>>2]=40,A[9412]=A[9527];break o}if(8&A[C+12>>2]|t>>>0<=I>>>0|e>>>0>I>>>0)break i;A[C+4>>2]=r+o,e=(C=-8-I&7)+I|0,A[9411]=e,C=(t=A[9408]+o|0)-C|0,A[9408]=C,A[e+4>>2]=1|C,A[4+(t+I|0)>>2]=40,A[9412]=A[9527];break o}C=0;break g}C=0;break C}O2[9409]>t>>>0&&(A[9409]=t),r=t+o|0,C=38068;i:{for(;;){if((0|(e=A[C>>2]))!=(0|r)){if(C=A[C+8>>2])continue;break i}break}if(!(8&i[C+12|0]))break e}for(C=38068;!((e=A[C>>2])>>>0<=I>>>0&&(r=e+A[C+4>>2]|0)>>>0>I>>>0);)C=A[C+8>>2];for(a=(C=o-40|0)-(e=-8-t&7)|0,A[9408]=a,e=e+t|0,A[9411]=e,A[e+4>>2]=1|a,A[4+(C+t|0)>>2]=40,A[9412]=A[9527],A[(e=(C=(r+(39-r&7)|0)-47|0)>>>0>>0?I:C)+4>>2]=27,C=A[9520],A[e+16>>2]=A[9519],A[e+20>>2]=C,C=A[9518],A[e+8>>2]=A[9517],A[e+12>>2]=C,A[9519]=e+8,A[9518]=o,A[9517]=t,A[9520]=0,C=e+24|0;A[C+4>>2]=7,t=C+8|0,C=C+4|0,t>>>0>>0;);if((0|e)!=(0|I)){A[e+4>>2]=-2&A[e+4>>2],t=e-I|0,A[I+4>>2]=1|t,A[e>>2]=t;i:if(t>>>0<=255)C=37660+(-8&t)|0,(e=A[9405])&(t=1<<(t>>>3))?e=A[C+8>>2]:(A[9405]=e|t,e=C),A[C+8>>2]=I,A[e+12>>2]=I,r=8,t=12;else{C=31,t>>>0<=16777215&&(C=62+((t>>>38-(C=A1(t>>>8|0))&1)-(C<<1)|0)|0),A[I+28>>2]=C,A[I+16>>2]=0,A[I+20>>2]=0,e=37924+(C<<2)|0;r:{if((r=A[9406])&(o=1<>>1|0):0),r=A[e>>2];;){if((0|t)==(-8&A[(e=r)+4>>2]))break r;if(r=C>>>29|0,C<<=1,!(r=A[16+(o=(4&r)+e|0)>>2]))break}A[o+16>>2]=I}else A[9406]=r|o,A[e>>2]=I;A[I+24>>2]=e,C=e=I,r=12,t=8;break i}C=A[e+8>>2],A[C+12>>2]=I,A[e+8>>2]=I,A[I+8>>2]=C,C=0,r=12,t=24}A[r+I>>2]=e,A[t+I>>2]=C}}if(!((C=A[9408])>>>0<=_>>>0)){e=C-_|0,A[9408]=e,t=(C=A[9411])+_|0,A[9411]=t,A[t+4>>2]=1|e,A[C+4>>2]=3|_,C=C+8|0;break A}}A[9404]=48,C=0;break A}A[C>>2]=t,A[C+4>>2]=A[C+4>>2]+o,A[4+(s=(-8-t&7)+t|0)>>2]=3|_,a=(o=e+(-8-e&7)|0)-(I=_+s|0)|0;e:if(A[9411]!=(0|o))if(A[9410]!=(0|o)){if((3&(C=A[o+4>>2]))==1){h=-8&C,t=A[o+12>>2];t:if(C>>>0<=255){if((0|(e=A[o+8>>2]))==(0|t)){B=37620,Q=A[9405]&pA(-2,C>>>3|0),A[B>>2]=Q;break t}A[e+12>>2]=t,A[t+8>>2]=e}else{_=A[o+24>>2];o:if((0|t)==(0|o)){i:{if(C=A[o+20>>2])e=o+20|0;else{if(!(C=A[o+16>>2]))break i;e=o+16|0}for(;r=e,t=C,e=C+20|0,(C=A[C+20>>2])||(e=t+16|0,C=A[t+16>>2]););A[r>>2]=0;break o}t=0}else C=A[o+8>>2],A[C+12>>2]=t,A[t+8>>2]=C;if(_){C=A[o+28>>2];o:{if(A[(e=37924+(C<<2)|0)>>2]==(0|o)){if(A[e>>2]=t,t)break o;B=37624,Q=A[9406]&pA(-2,C),A[B>>2]=Q;break t}if(A[_+(A[_+16>>2]==(0|o)?16:20)>>2]=t,!t)break t}A[t+24>>2]=_,(C=A[o+16>>2])&&(A[t+16>>2]=C,A[C+24>>2]=t),(C=A[o+20>>2])&&(A[t+20>>2]=C,A[C+24>>2]=t)}}a=a+h|0,C=A[4+(o=o+h|0)>>2]}if(A[o+4>>2]=-2&C,A[I+4>>2]=1|a,A[I+a>>2]=a,a>>>0<=255)C=37660+(-8&a)|0,(e=A[9405])&(t=1<<(a>>>3))?e=A[C+8>>2]:(A[9405]=e|t,e=C),A[C+8>>2]=I,A[e+12>>2]=I,A[I+12>>2]=C,A[I+8>>2]=e;else{t=31,a>>>0<=16777215&&(t=62+((a>>>38-(C=A1(a>>>8|0))&1)-(C<<1)|0)|0),A[I+28>>2]=t,A[I+16>>2]=0,A[I+20>>2]=0,C=37924+(t<<2)|0;t:{if((e=A[9406])&(r=1<>>1|0):0),e=A[C>>2];;){if((-8&A[(C=e)+4>>2])==(0|a))break t;if(e=t>>>29|0,t<<=1,!(e=A[16+(r=(4&e)+C|0)>>2]))break}A[r+16>>2]=I}else A[9406]=e|r,A[C>>2]=I;A[I+24>>2]=C,A[I+12>>2]=I,A[I+8>>2]=I;break e}e=A[C+8>>2],A[e+12>>2]=I,A[C+8>>2]=I,A[I+24>>2]=0,A[I+12>>2]=C,A[I+8>>2]=e}}else A[9410]=I,C=A[9407]+a|0,A[9407]=C,A[I+4>>2]=1|C,A[C+I>>2]=C;else A[9411]=I,C=A[9408]+a|0,A[9408]=C,A[I+4>>2]=1|C;C=s+8|0;break A}C:if(s){e=A[r+28>>2];e:{if(A[(t=37924+(e<<2)|0)>>2]==(0|r)){if(A[t>>2]=C,C)break e;a=pA(-2,e)&a,A[9406]=a;break C}if(A[s+(A[s+16>>2]==(0|r)?16:20)>>2]=C,!C)break C}A[C+24>>2]=s,(e=A[r+16>>2])&&(A[C+16>>2]=e,A[e+24>>2]=C),(e=A[r+20>>2])&&(A[C+20>>2]=e,A[e+24>>2]=C)}C:if(I>>>0<=15)C=I+_|0,A[r+4>>2]=3|C,A[4+(C=C+r|0)>>2]=1|A[C+4>>2];else if(A[r+4>>2]=3|_,A[4+(o=r+_|0)>>2]=1|I,A[I+o>>2]=I,I>>>0<=255)C=37660+(-8&I)|0,(e=A[9405])&(t=1<<(I>>>3))?e=A[C+8>>2]:(A[9405]=e|t,e=C),A[C+8>>2]=o,A[e+12>>2]=o,A[o+12>>2]=C,A[o+8>>2]=e;else{C=31,I>>>0<=16777215&&(C=62+((I>>>38-(C=A1(I>>>8|0))&1)-(C<<1)|0)|0),A[o+28>>2]=C,A[o+16>>2]=0,A[o+20>>2]=0,e=37924+(C<<2)|0;e:{if((t=1<>>1|0):0),e=A[e>>2];;){if(t=e,(-8&A[e+4>>2])==(0|I))break e;if(a=C>>>29|0,C<<=1,!(e=A[16+(a=e+(4&a)|0)>>2]))break}A[a+16>>2]=o,A[o+24>>2]=t}else A[9406]=t|a,A[e>>2]=o,A[o+24>>2]=e;A[o+12>>2]=o,A[o+8>>2]=o;break C}C=A[t+8>>2],A[C+12>>2]=o,A[t+8>>2]=o,A[o+24>>2]=0,A[o+12>>2]=t,A[o+8>>2]=C}C=r+8|0;break A}g:if(h){e=A[t+28>>2];C:{if(A[(r=37924+(e<<2)|0)>>2]==(0|t)){if(A[r>>2]=C,C)break C;B=37624,Q=pA(-2,e)&n,A[B>>2]=Q;break g}if(A[h+(A[h+16>>2]==(0|t)?16:20)>>2]=C,!C)break g}A[C+24>>2]=h,(e=A[t+16>>2])&&(A[C+16>>2]=e,A[e+24>>2]=C),(e=A[t+20>>2])&&(A[C+20>>2]=e,A[e+24>>2]=C)}I>>>0<=15?(C=I+_|0,A[t+4>>2]=3|C,A[4+(C=C+t|0)>>2]=1|A[C+4>>2]):(A[t+4>>2]=3|_,A[4+(a=t+_|0)>>2]=1|I,A[I+a>>2]=I,s&&(C=37660+(-8&s)|0,r=A[9410],(e=1<<(s>>>3))&o?e=A[C+8>>2]:(A[9405]=e|o,e=C),A[C+8>>2]=r,A[e+12>>2]=r,A[r+12>>2]=C,A[r+8>>2]=e),A[9410]=a,A[9407]=I),C=t+8|0}return W=g+16|0,0|C}function oC(C,g,e,t,r,o){var I,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0;if(W=I=W-592|0,s=-1,or(_=C+32|0)&&!a1(C)&&O0(r)&&!a1(r)&&!ke(n=I+128|0,r)){for(b0(s=I+384|0),o&&x2(s,35600,34,0),x2(s,C,32,0),x2(s,r,32,0),x2(s,g,e,t),e1(g=s,s=I+320|0),d1(s),t=I+8|0,e=_,r=0,g=0,W=a=W-2272|0;o=a+2016|0,_=i[s+(r>>>3|0)|0],c[o+r|0]=_>>>(6&r)&1,c[(h=o)+(o=1|r)|0]=_>>>(7&o)&1,(0|(r=r+2|0))!=256;);for(;;){g=(o=g)+1|0;A:if(!(o>>>0>254)&&i[0|(Q=(r=a+2016|0)+o|0)]){g:if(r=c[0|(B=g+r|0)])if((0|(r=(s=r<<1)+(_=c[0|Q])|0))<=15)c[0|Q]=r,c[0|B]=0;else{if((0|(r=_-s|0))<-15)break A;for(c[0|Q]=r,r=g;;){if(!i[0|(_=(a+2016|0)+r|0)]){c[0|_]=1;break g}if(c[0|_]=0,_=r>>>0<255,r=r+1|0,!_)break}}if(!(o>>>0>253)){g:if(_=c[0|(h=(r=o+2|0)+(a+2016|0)|0)])if((0|(_=(B=_<<2)+(s=c[0|Q])|0))>=16){if((0|(_=s-B|0))<-15)break A;for(c[0|Q]=_;;){if(i[0|(_=(a+2016|0)+r|0)]){if(c[0|_]=0,_=r>>>0<255,r=r+1|0,_)continue;break g}break}c[0|_]=1}else c[0|Q]=_,c[0|h]=0;if((0|o)!=253){g:if(_=c[0|(h=(r=o+3|0)+(a+2016|0)|0)])if((0|(_=(B=_<<3)+(s=c[0|Q])|0))>=16){if((0|(_=s-B|0))<-15)break A;for(c[0|Q]=_;;){if(i[0|(_=(a+2016|0)+r|0)]){if(c[0|_]=0,_=r>>>0<255,r=r+1|0,_)continue;break g}break}c[0|_]=1}else c[0|Q]=_,c[0|h]=0;if(!(o>>>0>251)){g:if(_=c[0|(h=(r=o+4|0)+(a+2016|0)|0)])if((0|(_=(B=_<<4)+(s=c[0|Q])|0))>=16){if((0|(_=s-B|0))<-15)break A;for(c[0|Q]=_;;){if(i[0|(_=(a+2016|0)+r|0)]){if(c[0|_]=0,_=r>>>0<255,r=r+1|0,_)continue;break g}break}c[0|_]=1}else c[0|Q]=_,c[0|h]=0;if((0|o)!=251){g:if(_=c[0|(h=(r=o+5|0)+(a+2016|0)|0)])if((0|(_=(B=_<<5)+(s=c[0|Q])|0))>=16){if((0|(_=s-B|0))<-15)break A;for(c[0|Q]=_;;){if(i[0|(_=(a+2016|0)+r|0)]){if(c[0|_]=0,_=r>>>0<255,r=r+1|0,_)continue;break g}break}c[0|_]=1}else c[0|Q]=_,c[0|h]=0;if(!(o>>>0>249)&&(o=c[0|(B=(r=o+6|0)+(a+2016|0)|0)]))if((0|(o=(s=o<<6)+(_=c[0|Q])|0))>=16){if((0|(o=_-s|0))<-15)break A;for(c[0|Q]=o;;){if(i[0|(o=(a+2016|0)+r|0)]){if(c[0|o]=0,o=r>>>0<255,r=r+1|0,o)continue;break A}break}c[0|o]=1}else c[0|Q]=o,c[0|B]=0}}}}}if((0|g)==256)break}for(r=0;g=a+1760|0,o=i[e+(r>>>3|0)|0],c[g+r|0]=o>>>(6&r)&1,c[(_=g)+(g=1|r)|0]=o>>>(7&g)&1,(0|(r=r+2|0))!=256;);for(g=0;;){e=g,g=g+1|0;A:if(!(e>>>0>254)&&i[0|(h=(r=a+1760|0)+e|0)]){g:if(r=c[0|(s=g+r|0)])if((0|(r=(_=r<<1)+(o=c[0|h])|0))<=15)c[0|h]=r,c[0|s]=0;else{if((0|(r=o-_|0))<-15)break A;for(c[0|h]=r,r=g;;){if(!i[0|(o=(a+1760|0)+r|0)]){c[0|o]=1;break g}if(c[0|o]=0,o=r>>>0<255,r=r+1|0,!o)break}}if(!(e>>>0>253)){g:if(o=c[0|(B=(r=e+2|0)+(a+1760|0)|0)])if((0|(o=(s=o<<2)+(_=c[0|h])|0))>=16){if((0|(o=_-s|0))<-15)break A;for(c[0|h]=o;;){if(i[0|(o=(a+1760|0)+r|0)]){if(c[0|o]=0,o=r>>>0<255,r=r+1|0,o)continue;break g}break}c[0|o]=1}else c[0|h]=o,c[0|B]=0;if((0|e)!=253){g:if(o=c[0|(B=(r=e+3|0)+(a+1760|0)|0)])if((0|(o=(s=o<<3)+(_=c[0|h])|0))>=16){if((0|(o=_-s|0))<-15)break A;for(c[0|h]=o;;){if(i[0|(o=(a+1760|0)+r|0)]){if(c[0|o]=0,o=r>>>0<255,r=r+1|0,o)continue;break g}break}c[0|o]=1}else c[0|h]=o,c[0|B]=0;if(!(e>>>0>251)){g:if(o=c[0|(B=(r=e+4|0)+(a+1760|0)|0)])if((0|(o=(s=o<<4)+(_=c[0|h])|0))>=16){if((0|(o=_-s|0))<-15)break A;for(c[0|h]=o;;){if(i[0|(o=(a+1760|0)+r|0)]){if(c[0|o]=0,o=r>>>0<255,r=r+1|0,o)continue;break g}break}c[0|o]=1}else c[0|h]=o,c[0|B]=0;if((0|e)!=251){g:if(o=c[0|(B=(r=e+5|0)+(a+1760|0)|0)])if((0|(o=(s=o<<5)+(_=c[0|h])|0))>=16){if((0|(o=_-s|0))<-15)break A;for(c[0|h]=o;;){if(i[0|(o=(a+1760|0)+r|0)]){if(c[0|o]=0,o=r>>>0<255,r=r+1|0,o)continue;break g}break}c[0|o]=1}else c[0|h]=o,c[0|B]=0;if(!(e>>>0>249)&&(e=c[0|(s=(r=e+6|0)+(a+1760|0)|0)]))if((0|(e=(_=e<<6)+(o=c[0|h])|0))>=16){if((0|(e=o-_|0))<-15)break A;for(c[0|h]=e;;){if(i[0|(e=(a+1760|0)+r|0)]){if(c[0|e]=0,e=r>>>0<255,r=r+1|0,e)continue;break A}break}c[0|e]=1}else c[0|h]=e,c[0|s]=0}}}}}if((0|g)==256)break}for(D2(r=a+480|0,n),g=A[n+36>>2],A[a+192>>2]=A[n+32>>2],A[a+196>>2]=g,g=A[n+28>>2],A[a+184>>2]=A[n+24>>2],A[a+188>>2]=g,g=A[n+20>>2],A[a+176>>2]=A[n+16>>2],A[a+180>>2]=g,g=A[n+12>>2],A[a+168>>2]=A[n+8>>2],A[a+172>>2]=g,g=A[n+4>>2],A[a+160>>2]=A[n>>2],A[a+164>>2]=g,g=A[n+52>>2],A[a+208>>2]=A[n+48>>2],A[a+212>>2]=g,g=A[n+60>>2],A[a+216>>2]=A[n+56>>2],A[a+220>>2]=g,g=A[4+(e=n- -64|0)>>2],A[a+224>>2]=A[e>>2],A[a+228>>2]=g,g=A[n+76>>2],A[a+232>>2]=A[n+72>>2],A[a+236>>2]=g,g=A[n+44>>2],A[a+200>>2]=A[n+40>>2],A[a+204>>2]=g,g=A[n+92>>2],A[a+248>>2]=A[n+88>>2],A[a+252>>2]=g,g=A[n+100>>2],A[a+256>>2]=A[n+96>>2],A[a+260>>2]=g,g=A[n+108>>2],A[a+264>>2]=A[n+104>>2],A[a+268>>2]=g,g=A[n+116>>2],A[a+272>>2]=A[n+112>>2],A[a+276>>2]=g,g=A[n+84>>2],A[a+240>>2]=A[n+80>>2],A[a+244>>2]=g,P2(o=a+320|0,e=a+160|0),kA(a,o,p=a+440|0),kA(a+40|0,l=a+360|0,v=a+400|0),kA(a+80|0,v,p),kA(a+120|0,o,l),b2(o,a,r),kA(e,o,p),kA(b=a+200|0,l,v),kA(M=a+240|0,v,p),kA(D=a+280|0,o,l),D2(g=a+640|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(g=a+800|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(g=a+960|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(g=a+1120|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(g=a+1280|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(g=a+1440|0,e),b2(o,a,g),kA(e,o,p),kA(b,l,v),kA(M,v,p),kA(D,o,l),D2(a+1600|0,e),A[t+32>>2]=0,A[t+36>>2]=0,A[t+24>>2]=0,A[t+28>>2]=0,A[t+16>>2]=0,A[t+20>>2]=0,A[t+8>>2]=0,A[t+12>>2]=0,A[t>>2]=0,A[t+4>>2]=0,A[t+44>>2]=0,A[t+48>>2]=0,A[t+40>>2]=1,A[t+52>>2]=0,A[t+56>>2]=0,A[t+60>>2]=0,A[t+64>>2]=0,A[t+68>>2]=0,A[t+72>>2]=0,A[t+84>>2]=0,A[t+88>>2]=0,A[t+76>>2]=0,A[t+80>>2]=1,A[t+92>>2]=0,A[t+96>>2]=0,A[t+100>>2]=0,A[t+104>>2]=0,A[t+108>>2]=0,A[t+112>>2]=0,A[t+116>>2]=0,EA=t+80|0,YA=t+40|0,g=255;;){A:{g:{if(!i[(e=a+2016|0)+g|0]&&!i[(r=a+1760|0)+g|0]){if(!(i[(o=e)+(e=g-1|0)|0]|i[e+r|0]))break g;g=e}if((0|g)<0)break A;for(;P2(r=a+320|0,t),e=g,(0|(o=c[g+(a+2016|0)|0]))>0?(kA(g=a+160|0,r,p),kA(b,l,v),kA(M,v,p),kA(D,r,l),b2(r,g,(a+480|0)+M0((254&o)>>>1|0,160)|0)):(0|o)>=0||(kA(g=a+160|0,r=a+320|0,p),kA(b,l,v),kA(M,v,p),kA(D,r,l),qg(r,g,(a+480|0)+M0((0-o&254)>>>1|0,160)|0)),(0|(uA=c[e+(a+1760|0)|0]))>0?(kA(g=a+160|0,r=a+320|0,p),kA(b,l,v),kA(M,v,p),kA(D,r,l),yC(r,g,M0((254&uA)>>>1|0,120)+1728|0)):(0|uA)>=0||(kA(a+160|0,vA=a+320|0,p),kA(b,l,v),kA(M,v,p),kA(D,vA,l),x=A[a+160>>2],q=A[a+200>>2],V=A[a+164>>2],$=A[a+204>>2],K=A[a+168>>2],J=A[a+208>>2],z=A[a+172>>2],_A=A[a+212>>2],sA=A[a+176>>2],nA=A[a+216>>2],fA=A[a+180>>2],Q=A[a+220>>2],h=A[a+184>>2],B=A[a+224>>2],s=A[a+188>>2],n=A[a+228>>2],_=A[a+192>>2],o=A[a+232>>2],r=A[a+236>>2],g=A[a+196>>2],A[a+396>>2]=r-g,A[a+392>>2]=o-_,A[a+388>>2]=n-s,A[a+384>>2]=B-h,A[a+380>>2]=Q-fA,A[a+376>>2]=nA-sA,A[a+372>>2]=_A-z,A[a+368>>2]=J-K,A[a+364>>2]=$-V,A[a+360>>2]=q-x,A[a+356>>2]=g+r,A[a+352>>2]=o+_,A[a+348>>2]=s+n,A[a+344>>2]=h+B,A[a+340>>2]=Q+fA,A[a+336>>2]=sA+nA,A[a+332>>2]=z+_A,A[a+328>>2]=K+J,A[a+324>>2]=V+$,A[a+320>>2]=x+q,kA(v,vA,40+(g=M0((0-uA&254)>>>1|0,120)+1728|0)|0),kA(l,l,g),kA(p,g+80|0,D),qA=A[a+276>>2],$A=A[a+272>>2],uA=A[a+268>>2],vA=A[a+264>>2],h=A[a+260>>2],B=A[a+256>>2],s=A[a+252>>2],n=A[a+248>>2],_=A[a+244>>2],o=A[a+240>>2],wA=A[a+360>>2],iA=A[a+400>>2],hA=A[a+364>>2],mA=A[a+404>>2],HA=A[a+368>>2],aA=A[a+408>>2],x=A[a+372>>2],q=A[a+412>>2],V=A[a+376>>2],$=A[a+416>>2],K=A[a+380>>2],J=A[a+420>>2],z=A[a+384>>2],_A=A[a+424>>2],sA=A[a+388>>2],nA=A[a+428>>2],fA=A[a+392>>2],Q=A[a+432>>2],r=A[a+396>>2],g=A[a+436>>2],A[a+396>>2]=r+g,A[a+392>>2]=Q+fA,A[a+388>>2]=sA+nA,A[a+384>>2]=z+_A,A[a+380>>2]=K+J,A[a+376>>2]=V+$,A[a+372>>2]=x+q,A[a+368>>2]=HA+aA,A[a+364>>2]=hA+mA,A[a+360>>2]=wA+iA,A[a+356>>2]=g-r,A[a+352>>2]=Q-fA,A[a+348>>2]=nA-sA,A[a+344>>2]=_A-z,A[a+340>>2]=J-K,A[a+336>>2]=$-V,A[a+332>>2]=q-x,A[a+328>>2]=aA-HA,A[a+324>>2]=mA-hA,A[a+320>>2]=iA-wA,x=o<<1,q=A[a+440>>2],A[a+400>>2]=x-q,V=_<<1,$=A[a+444>>2],A[a+404>>2]=V-$,K=n<<1,J=A[a+448>>2],A[a+408>>2]=K-J,z=s<<1,_A=A[a+452>>2],A[a+412>>2]=z-_A,sA=B<<1,nA=A[a+456>>2],A[a+416>>2]=sA-nA,fA=h<<1,Q=A[a+460>>2],A[a+420>>2]=fA-Q,h=vA<<1,B=A[a+464>>2],A[a+424>>2]=h-B,s=uA<<1,n=A[a+468>>2],A[a+428>>2]=s-n,_=$A<<1,o=A[a+472>>2],A[a+432>>2]=_-o,r=qA<<1,g=A[a+476>>2],A[a+436>>2]=r-g,A[a+440>>2]=x+q,A[a+444>>2]=V+$,A[a+448>>2]=K+J,A[a+452>>2]=z+_A,A[a+456>>2]=sA+nA,A[a+460>>2]=Q+fA,A[a+464>>2]=h+B,A[a+468>>2]=s+n,A[a+472>>2]=o+_,A[a+476>>2]=g+r),kA(t,a+320|0,p),kA(YA,l,v),kA(EA,v,p),g=e-1|0,(0|e)>0;);break A}if(g=g-2|0,e)continue}break}W=a+2272|0,eg(g=I+288|0,t),g0=-1,i0=Xg(g,C),s=((0|C)==(0|g)?g0:i0)|p2(C,g,32)}return W=I+592|0,s}function kA(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA,iA,hA,mA,HA,aA,EA,YA,qA,$A,g0,i0,u,d,H,FA,VA,c0,_0,I0,h0,D0,MA,O=0,rA=0,cA=0,XA=0,A0=0,s0=0,p0=0,f0=0,E0=0,w0=0,u0=0,k0=0,F0=0,N0=0,x0=0,L0=0,T0=0,j0=0,V0=0,W0=0,C2=0,e2=0,r2=0,i2=0,s2=0;O=w(t=A[e+4>>2],B=t>>31,T0=(b=A[g+20>>2])<<1,wA=T0>>31),cA=y,rA=(F0=w(x0=A[e>>2],o=x0>>31,r=A[g+24>>2],I=r>>31))+O|0,O=y+cA|0,O=rA>>>0>>0?O+1|0:O,E0=w(a=A[e+8>>2],l=a>>31,F0=A[g+16>>2],_=F0>>31),cA=y+O|0,cA=(rA=E0+rA|0)>>>0>>0?cA+1|0:cA,O=(E0=w(Q=A[e+12>>2],M=Q>>31,z=(x=A[g+12>>2])<<1,iA=z>>31))+rA|0,rA=y+cA|0,rA=O>>>0>>0?rA+1|0:rA,cA=(N0=w(v=A[e+16>>2],_A=v>>31,E0=A[g+8>>2],s=E0>>31))+O|0,O=y+rA|0,O=cA>>>0>>0?O+1|0:O,rA=cA,cA=w(q=A[e+20>>2],hA=q>>31,sA=(V=A[g+4>>2])<<1,mA=sA>>31),O=y+O|0,O=(rA=rA+cA|0)>>>0>>0?O+1|0:O,FA=p0=A[e+24>>2],cA=(w0=w(p0,d=p0>>31,N0=A[g>>2],h=N0>>31))+rA|0,rA=y+O|0,rA=cA>>>0>>0?rA+1|0:rA,HA=A[e+28>>2],O=(w0=w(k0=M0(HA,19),$=k0>>31,nA=(K=A[g+36>>2])<<1,aA=nA>>31))+cA|0,cA=y+rA|0,cA=O>>>0>>0?cA+1|0:cA,C2=A[e+32>>2],rA=(f0=w(XA=M0(C2,19),D=XA>>31,w0=A[g+32>>2],n=w0>>31))+O|0,O=y+cA|0,O=rA>>>0>>0?O+1|0:O,VA=A[e+36>>2],e=w(f0=M0(VA,19),p=f0>>31,fA=(J=A[g+28>>2])<<1,EA=fA>>31),O=y+O|0,A0=g=e+rA|0,e=g>>>0>>0?O+1|0:O,g=w(F0,_,t,B),O=y,rA=w(x0,o,b,YA=b>>31),cA=y+O|0,cA=(g=rA+g|0)>>>0>>0?cA+1|0:cA,O=w(a,l,x,qA=x>>31),rA=y+cA|0,rA=(g=O+g|0)>>>0>>0?rA+1|0:rA,cA=w(E0,s,Q,M),O=y+rA|0,O=(g=cA+g|0)>>>0>>0?O+1|0:O,rA=w(v,_A,V,$A=V>>31),O=y+O|0,O=(g=rA+g|0)>>>0>>0?O+1|0:O,rA=w(N0,h,q,hA),O=y+O|0,O=(g=rA+g|0)>>>0>>0?O+1|0:O,rA=w(p0=M0(p0,19),uA=p0>>31,K,g0=K>>31),cA=y+O|0,cA=(g=rA+g|0)>>>0>>0?cA+1|0:cA,O=w(w0,n,k0,$),rA=y+cA|0,rA=(g=O+g|0)>>>0>>0?rA+1|0:rA,cA=w(XA,D,J,i0=J>>31),O=y+rA|0,O=(g=cA+g|0)>>>0>>0?O+1|0:O,rA=w(f0,p,r,I),O=y+O|0,r2=g=rA+g|0,j0=g>>>0>>0?O+1|0:O,g=w(t,B,z,iA),O=y,rA=w(x0,o,F0,_),O=y+O|0,O=(g=rA+g|0)>>>0>>0?O+1|0:O,rA=w(E0,s,a,l),cA=y+O|0,cA=(g=rA+g|0)>>>0>>0?cA+1|0:cA,O=w(Q,M,sA,mA),rA=y+cA|0,rA=(g=O+g|0)>>>0>>0?rA+1|0:rA,cA=w(N0,h,v,_A),O=y+rA|0,O=(g=cA+g|0)>>>0>>0?O+1|0:O,rA=w(vA=M0(q,19),u=vA>>31,nA,aA),O=y+O|0,O=(g=rA+g|0)>>>0>>0?O+1|0:O,rA=w(w0,n,p0,uA),O=y+O|0,O=(g=rA+g|0)>>>0>>0?O+1|0:O,rA=w(k0,$,fA,EA),cA=y+O|0,cA=(g=rA+g|0)>>>0>>0?cA+1|0:cA,O=w(XA,D,r,I),rA=y+cA|0,rA=(g=O+g|0)>>>0>>0?rA+1|0:rA,cA=w(f0,p,T0,wA),O=y+rA|0,c0=g=cA+g|0,_0=O=g>>>0>>0?O+1|0:O,I0=g=g+33554432|0,h0=O=g>>>0<33554432?O+1|0:O,cA=(67108863&O)<<6|g>>>26,O=(O>>26)+j0|0,r2=g=cA+r2|0,O=g>>>0>>0?O+1|0:O,D0=g=g+16777216|0,O=e+(rA=(cA=g>>>0<16777216?O+1|0:O)>>25)|0,O=(g=(cA=(33554431&cA)<<7|g>>>25)+A0|0)>>>0>>0?O+1|0:O,V0=e=(rA=g)+33554432|0,g=O=e>>>0<33554432?O+1|0:O,A[C+24>>2]=rA-(-67108864&e),e=w(t,B,sA,mA),O=y,rA=w(x0,o,E0,s),cA=y+O|0,cA=(e=rA+e|0)>>>0>>0?cA+1|0:cA,rA=(O=e)+(e=w(N0,h,a,l))|0,O=y+cA|0,O=e>>>0>rA>>>0?O+1|0:O,cA=w(e=M0(Q,19),W0=e>>31,nA,aA),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,cA=(A0=w(w0,n,j0=M0(v,19),H=j0>>31))+rA|0,rA=y+O|0,rA=cA>>>0>>0?rA+1|0:rA,A0=w(fA,EA,vA,u),O=y+rA|0,O=(cA=A0+cA|0)>>>0>>0?O+1|0:O,rA=(A0=w(r,I,p0,uA))+cA|0,cA=y+O|0,cA=rA>>>0>>0?cA+1|0:cA,A0=w(k0,$,T0,wA),O=y+cA|0,O=(rA=A0+rA|0)>>>0>>0?O+1|0:O,cA=w(XA,D,F0,_),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,cA=(A0=w(f0,p,z,iA))+rA|0,rA=y+O|0,u0=cA,i2=cA>>>0>>0?rA+1|0:rA,O=w(N0,h,t,B),rA=y,cA=(A0=w(x0,o,V,$A))+O|0,O=y+rA|0,O=cA>>>0>>0?O+1|0:O,A0=rA=M0(a,19),rA=(s0=w(rA,e2=rA>>31,K,g0))+cA|0,cA=y+O|0,cA=rA>>>0>>0?cA+1|0:cA,s0=w(w0,n,e,W0),O=y+cA|0,O=(rA=s0+rA|0)>>>0>>0?O+1|0:O,cA=w(j0,H,J,i0),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,cA=(s0=w(r,I,vA,u))+rA|0,rA=y+O|0,rA=cA>>>0>>0?rA+1|0:rA,s0=w(p0,uA,b,YA),O=y+rA|0,O=(cA=s0+cA|0)>>>0>>0?O+1|0:O,rA=(s0=w(F0,_,k0,$))+cA|0,cA=y+O|0,cA=rA>>>0>>0?cA+1|0:cA,s0=w(XA,D,x,qA),O=y+cA|0,O=(rA=s0+rA|0)>>>0>>0?O+1|0:O,cA=w(f0,p,E0,s),O=y+O|0,s2=rA=cA+rA|0,s0=rA>>>0>>0?O+1|0:O,O=w(O=M0(t,19),O>>31,nA,aA),rA=y,cA=w(x0,o,N0,h),rA=y+rA|0,rA=(O=cA+O|0)>>>0>>0?rA+1|0:rA,cA=(A0=w(w0,n,A0,e2))+O|0,O=y+rA|0,e=(rA=w(e,W0,fA,EA))+cA|0,cA=y+(cA>>>0>>0?O+1|0:O)|0,cA=e>>>0>>0?cA+1|0:cA,rA=w(r,I,j0,H),O=y+cA|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,rA=w(T0,wA,vA,u),O=y+O|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,cA=w(F0,_,p0,uA),rA=y+O|0,rA=(e=cA+e|0)>>>0>>0?rA+1|0:rA,cA=w(k0,$,z,iA),O=y+rA|0,O=(e=cA+e|0)>>>0>>0?O+1|0:O,rA=w(XA,D,E0,s),cA=y+O|0,cA=(e=rA+e|0)>>>0>>0?cA+1|0:cA,rA=w(f0,p,sA,mA),O=y+cA|0,A0=e=rA+e|0,W0=O=e>>>0>>0?O+1|0:O,e2=e=e+33554432|0,MA=O=e>>>0<33554432?O+1|0:O,rA=(cA=O>>26)+s0|0,s0=e=(O=(67108863&O)<<6|e>>>26)+s2|0,O=e>>>0>>0?rA+1|0:rA,s2=e=e+16777216|0,rA=(33554431&(O=e>>>0<16777216?O+1|0:O))<<7|e>>>25,O=(O>>25)+i2|0,O=(e=rA+u0|0)>>>0>>0?O+1|0:O,i2=rA=(cA=e)+33554432|0,e=O=rA>>>0<33554432?O+1|0:O,A[C+8>>2]=cA-(-67108864&rA),O=w(r,I,t,B),cA=y,rA=(u0=w(x0,o,J,i0))+O|0,O=y+cA|0,O=rA>>>0>>0?O+1|0:O,cA=w(a,l,b,YA),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,cA=w(F0,_,Q,M),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,u0=w(v,_A,x,qA),cA=y+O|0,cA=(rA=u0+rA|0)>>>0>>0?cA+1|0:cA,O=(u0=w(E0,s,q,hA))+rA|0,rA=y+cA|0,rA=O>>>0>>0?rA+1|0:rA,cA=(u0=w(V,$A,FA,d))+O|0,O=y+rA|0,O=cA>>>0>>0?O+1|0:O,rA=cA,cA=w(N0,h,HA,u0=HA>>31),O=y+O|0,O=(rA=rA+cA|0)>>>0>>0?O+1|0:O,cA=w(XA,D,K,g0),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,L0=w(f0,p,w0,n),cA=y+O|0,O=g>>26,g=(V0=(67108863&g)<<6|V0>>>26)+(rA=L0+rA|0)|0,rA=O+(rA>>>0>>0?cA+1|0:cA)|0,O=(cA=g)>>>0>>0?rA+1|0:rA,V0=rA=cA+16777216|0,g=O=rA>>>0<16777216?O+1|0:O,A[C+28>>2]=cA-(-33554432&rA),O=w(E0,s,t,B),rA=y,L0=w(x0,o,x,qA),cA=y+rA|0,cA=(O=L0+O|0)>>>0>>0?cA+1|0:cA,L0=w(a,l,V,$A),rA=y+cA|0,rA=(O=L0+O|0)>>>0>>0?rA+1|0:rA,cA=(L0=w(N0,h,Q,M))+O|0,O=y+rA|0,O=cA>>>0>>0?O+1|0:O,rA=cA,cA=w(j0,H,K,g0),O=y+O|0,O=(rA=rA+cA|0)>>>0>>0?O+1|0:O,cA=w(w0,n,vA,u),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,rA=(p0=w(p0,uA,J,i0))+rA|0,cA=y+O|0,O=(k0=w(r,I,k0,$))+rA|0,rA=y+(rA>>>0>>0?cA+1|0:cA)|0,cA=(XA=w(XA,D,b,YA))+O|0,O=y+(O>>>0>>0?rA+1|0:rA)|0,O=cA>>>0>>0?O+1|0:O,rA=cA,cA=w(f0,p,F0,_),O=y+O|0,XA=rA=rA+cA|0,O=(O=rA>>>0>>0?O+1|0:O)+(rA=e>>26)|0,XA=e=XA+(cA=(67108863&e)<<6|i2>>>26)|0,O=e>>>0>>0?O+1|0:O,k0=rA=e+16777216|0,e=cA=rA>>>0<16777216?O+1|0:O,A[C+12>>2]=XA-(-33554432&rA),O=w(t,B,fA,EA),cA=y,rA=(XA=w(x0,o,w0,n))+O|0,O=y+cA|0,O=rA>>>0>>0?O+1|0:O,cA=w(r,I,a,l),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,XA=w(Q,M,T0,wA),cA=y+O|0,cA=(rA=XA+rA|0)>>>0>>0?cA+1|0:cA,O=(XA=w(F0,_,v,_A))+rA|0,rA=y+cA|0,rA=O>>>0>>0?rA+1|0:rA,cA=(XA=w(z,iA,q,hA))+O|0,O=y+rA|0,O=cA>>>0>>0?O+1|0:O,rA=cA,cA=w(E0,s,FA,d),O=y+O|0,O=(rA=rA+cA|0)>>>0>>0?O+1|0:O,cA=w(HA,u0,sA,mA),O=y+O|0,O=(rA=cA+rA|0)>>>0>>0?O+1|0:O,rA=(T0=w(N0,h,XA=C2,p0=XA>>31))+rA|0,cA=y+O|0,O=(f0=w(f0,p,nA,aA))+rA|0,rA=y+(rA>>>0>>0?cA+1|0:cA)|0,rA=O>>>0>>0?rA+1|0:rA,C2=O,O=(O=g>>25)+rA|0,O=(g=C2+(cA=(33554431&g)<<7|V0>>>25)|0)>>>0>>0?O+1|0:O,f0=rA=(cA=g)+33554432|0,g=O=rA>>>0<33554432?O+1|0:O,A[C+32>>2]=cA-(-67108864&rA),rA=e>>25,e=(k0=(33554431&e)<<7|k0>>>25)+(c0-(O=-67108864&I0)|0)|0,O=rA+(_0-((O>>>0>c0>>>0)+h0|0)|0)|0,O=e>>>0>>0?O+1|0:O,O=((67108863&(O=(e=(rA=e)+33554432|0)>>>0<33554432?O+1|0:O))<<6|e>>>26)+(cA=r2-(-33554432&D0)|0)|0,A[C+20>>2]=O,A[C+16>>2]=rA-(-67108864&e),e=w(w0,n,t,B),O=y,rA=w(x0,o,K,g0),O=y+O|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,cA=w(a,l,J,i0),rA=y+O|0,rA=(e=cA+e|0)>>>0>>0?rA+1|0:rA,O=w(r,I,Q,M),cA=y+rA|0,cA=(e=O+e|0)>>>0>>0?cA+1|0:cA,rA=w(v,_A,b,YA),O=y+cA|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,rA=w(F0,_,q,hA),O=y+O|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,rA=w(x,qA,FA,d),O=y+O|0,O=(e=rA+e|0)>>>0>>0?O+1|0:O,cA=w(E0,s,HA,u0),rA=y+O|0,rA=(e=cA+e|0)>>>0>>0?rA+1|0:rA,O=w(XA,p0,V,$A),cA=y+rA|0,cA=(e=O+e|0)>>>0>>0?cA+1|0:cA,rA=w(N0,h,VA,VA>>31),O=y+cA|0,O=(O=(e=rA+e|0)>>>0>>0?O+1|0:O)+(rA=g>>26)|0,O=(g=(cA=e)+(e=(67108863&g)<<6|f0>>>26)|0)>>>0>>0?O+1|0:O,O=(g=(e=g)+16777216|0)>>>0<16777216?O+1|0:O,A[C+36>>2]=e-(-33554432&g),cA=s0-(-33554432&s2)|0,rA=A0-(e=-67108864&e2)|0,x0=W0-((e>>>0>A0>>>0)+MA|0)|0,g=(e=w((33554431&(e=O))<<7|g>>>25,O>>=25,19,0))+rA|0,rA=y+x0|0,O=g>>>0>>0?rA+1|0:rA,O=((67108863&(O=(g=(e=g)+33554432|0)>>>0<33554432?O+1|0:O))<<6|g>>>26)+cA|0,A[C+4>>2]=O,A[C>>2]=e-(-67108864&g)}function VC(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b=0,M=0,x=0;W=e=W-544|0,t=i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24,r=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24,o=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,I=i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24,a=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24,_=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,s=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,h=i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24,b=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,n=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,B=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,Q=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,p=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,l=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,v=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,D=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,C=A[g+124>>2],A[e+536>>2]=A[g+120>>2],A[e+540>>2]=C,C=A[g+116>>2],A[e+528>>2]=A[g+112>>2],A[e+532>>2]=C,C=A[g+108>>2],A[e+504>>2]=A[g+104>>2],A[e+508>>2]=C,C=A[g+100>>2],A[e+496>>2]=A[g+96>>2],A[e+500>>2]=C,C=A[g+124>>2],A[e+488>>2]=A[g+120>>2],A[e+492>>2]=C,C=A[g+116>>2],A[e+480>>2]=A[g+112>>2],A[e+484>>2]=C,a0(x=e+512|0,e+496|0,e+480|0),C=A[e+524>>2],A[g+120>>2]=A[e+520>>2],A[g+124>>2]=C,C=A[e+516>>2],A[g+112>>2]=A[e+512>>2],A[g+116>>2]=C,C=A[g+92>>2],A[e+472>>2]=A[g+88>>2],A[e+476>>2]=C,C=A[g+84>>2],A[e+464>>2]=A[g+80>>2],A[e+468>>2]=C,C=A[g+108>>2],A[e+456>>2]=A[g+104>>2],A[e+460>>2]=C,C=A[g+100>>2],A[e+448>>2]=A[g+96>>2],A[e+452>>2]=C,a0(x,e+464|0,e+448|0),C=A[e+524>>2],A[g+104>>2]=A[e+520>>2],A[g+108>>2]=C,C=A[e+516>>2],A[g+96>>2]=A[e+512>>2],A[g+100>>2]=C,C=A[g+76>>2],A[e+440>>2]=A[g+72>>2],A[e+444>>2]=C,M=A[4+(C=g- -64|0)>>2],A[e+432>>2]=A[C>>2],A[e+436>>2]=M,M=A[g+92>>2],A[e+424>>2]=A[g+88>>2],A[e+428>>2]=M,M=A[g+84>>2],A[e+416>>2]=A[g+80>>2],A[e+420>>2]=M,a0(x,e+432|0,e+416|0),M=A[e+524>>2],A[g+88>>2]=A[e+520>>2],A[g+92>>2]=M,M=A[e+516>>2],A[g+80>>2]=A[e+512>>2],A[g+84>>2]=M,M=A[g+60>>2],A[e+408>>2]=A[g+56>>2],A[e+412>>2]=M,M=A[g+52>>2],A[e+400>>2]=A[g+48>>2],A[e+404>>2]=M,M=A[g+76>>2],A[e+392>>2]=A[g+72>>2],A[e+396>>2]=M,M=A[C+4>>2],A[e+384>>2]=A[C>>2],A[e+388>>2]=M,a0(x,e+400|0,e+384|0),M=A[e+524>>2],A[g+72>>2]=A[e+520>>2],A[g+76>>2]=M,M=A[e+516>>2],A[C>>2]=A[e+512>>2],A[C+4>>2]=M,M=A[g+44>>2],A[e+376>>2]=A[g+40>>2],A[e+380>>2]=M,M=A[g+36>>2],A[e+368>>2]=A[g+32>>2],A[e+372>>2]=M,M=A[g+60>>2],A[e+360>>2]=A[g+56>>2],A[e+364>>2]=M,M=A[g+52>>2],A[e+352>>2]=A[g+48>>2],A[e+356>>2]=M,a0(x,e+368|0,e+352|0),M=A[e+524>>2],A[g+56>>2]=A[e+520>>2],A[g+60>>2]=M,M=A[e+516>>2],A[g+48>>2]=A[e+512>>2],A[g+52>>2]=M,M=A[g+28>>2],A[e+344>>2]=A[g+24>>2],A[e+348>>2]=M,M=A[g+20>>2],A[e+336>>2]=A[g+16>>2],A[e+340>>2]=M,M=A[g+44>>2],A[e+328>>2]=A[g+40>>2],A[e+332>>2]=M,M=A[g+36>>2],A[e+320>>2]=A[g+32>>2],A[e+324>>2]=M,a0(x,e+336|0,e+320|0),M=A[e+524>>2],A[g+40>>2]=A[e+520>>2],A[g+44>>2]=M,M=A[e+516>>2],A[g+32>>2]=A[e+512>>2],A[g+36>>2]=M,M=A[g+12>>2],A[e+312>>2]=A[g+8>>2],A[e+316>>2]=M,M=A[g+4>>2],A[e+304>>2]=A[g>>2],A[e+308>>2]=M,M=A[g+28>>2],A[e+296>>2]=A[g+24>>2],A[e+300>>2]=M,M=A[g+20>>2],A[e+288>>2]=A[g+16>>2],A[e+292>>2]=M,a0(x,e+304|0,e+288|0),M=A[e+524>>2],A[g+24>>2]=A[e+520>>2],A[g+28>>2]=M,M=A[e+516>>2],A[g+16>>2]=A[e+512>>2],A[g+20>>2]=M,M=A[e+540>>2],A[e+280>>2]=A[e+536>>2],A[e+284>>2]=M,M=A[e+532>>2],A[e+272>>2]=A[e+528>>2],A[e+276>>2]=M,M=A[g+12>>2],A[e+264>>2]=A[g+8>>2],A[e+268>>2]=M,M=A[g+4>>2],A[e+256>>2]=A[g>>2],A[e+260>>2]=M,a0(x,e+272|0,e+256|0),M=A[e+524>>2],A[g+8>>2]=A[e+520>>2],A[g+12>>2]=M,M=A[e+516>>2],A[g>>2]=A[e+512>>2],A[g+4>>2]=M,A[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^v,A[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^l,A[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^p,A[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^D,A[C>>2]=(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24)^Q,A[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^B,A[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^n,A[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^b,b=A[g+124>>2],A[e+536>>2]=A[g+120>>2],A[e+540>>2]=b,b=A[g+116>>2],A[e+528>>2]=A[g+112>>2],A[e+532>>2]=b,b=A[g+108>>2],A[e+248>>2]=A[g+104>>2],A[e+252>>2]=b,b=A[g+100>>2],A[e+240>>2]=A[g+96>>2],A[e+244>>2]=b,b=A[g+124>>2],A[e+232>>2]=A[g+120>>2],A[e+236>>2]=b,b=A[g+116>>2],A[e+224>>2]=A[g+112>>2],A[e+228>>2]=b,a0(x,e+240|0,e+224|0),b=A[e+524>>2],A[g+120>>2]=A[e+520>>2],A[g+124>>2]=b,b=A[e+516>>2],A[g+112>>2]=A[e+512>>2],A[g+116>>2]=b,b=A[g+92>>2],A[e+216>>2]=A[g+88>>2],A[e+220>>2]=b,b=A[g+84>>2],A[e+208>>2]=A[g+80>>2],A[e+212>>2]=b,b=A[g+108>>2],A[e+200>>2]=A[g+104>>2],A[e+204>>2]=b,b=A[g+100>>2],A[e+192>>2]=A[g+96>>2],A[e+196>>2]=b,a0(x,e+208|0,e+192|0),b=A[e+524>>2],A[g+104>>2]=A[e+520>>2],A[g+108>>2]=b,b=A[e+516>>2],A[g+96>>2]=A[e+512>>2],A[g+100>>2]=b,b=A[g+76>>2],A[e+184>>2]=A[g+72>>2],A[e+188>>2]=b,b=A[C+4>>2],A[e+176>>2]=A[C>>2],A[e+180>>2]=b,b=A[g+92>>2],A[e+168>>2]=A[g+88>>2],A[e+172>>2]=b,b=A[g+84>>2],A[e+160>>2]=A[g+80>>2],A[e+164>>2]=b,a0(x,e+176|0,e+160|0),b=A[e+524>>2],A[g+88>>2]=A[e+520>>2],A[g+92>>2]=b,b=A[e+516>>2],A[g+80>>2]=A[e+512>>2],A[g+84>>2]=b,b=A[g+60>>2],A[e+152>>2]=A[g+56>>2],A[e+156>>2]=b,b=A[g+52>>2],A[e+144>>2]=A[g+48>>2],A[e+148>>2]=b,b=A[g+76>>2],A[e+136>>2]=A[g+72>>2],A[e+140>>2]=b,b=A[C+4>>2],A[e+128>>2]=A[C>>2],A[e+132>>2]=b,a0(x,e+144|0,e+128|0),b=A[e+524>>2],A[g+72>>2]=A[e+520>>2],A[g+76>>2]=b,b=A[e+516>>2],A[C>>2]=A[e+512>>2],A[C+4>>2]=b,b=A[g+44>>2],A[e+120>>2]=A[g+40>>2],A[e+124>>2]=b,b=A[g+36>>2],A[e+112>>2]=A[g+32>>2],A[e+116>>2]=b,b=A[g+60>>2],A[e+104>>2]=A[g+56>>2],A[e+108>>2]=b,b=A[g+52>>2],A[e+96>>2]=A[g+48>>2],A[e+100>>2]=b,a0(x,e+112|0,e+96|0),b=A[e+524>>2],A[g+56>>2]=A[e+520>>2],A[g+60>>2]=b,b=A[e+516>>2],A[g+48>>2]=A[e+512>>2],A[g+52>>2]=b,b=A[g+28>>2],A[e+88>>2]=A[g+24>>2],A[e+92>>2]=b,b=A[g+20>>2],A[e+80>>2]=A[g+16>>2],A[e+84>>2]=b,b=A[g+44>>2],A[e+72>>2]=A[g+40>>2],A[e+76>>2]=b,b=A[g+36>>2],A[e+64>>2]=A[g+32>>2],A[e+68>>2]=b,a0(x,e+80|0,e- -64|0),b=A[e+524>>2],A[g+40>>2]=A[e+520>>2],A[g+44>>2]=b,b=A[e+516>>2],A[g+32>>2]=A[e+512>>2],A[g+36>>2]=b,b=A[g+12>>2],A[e+56>>2]=A[g+8>>2],A[e+60>>2]=b,b=A[g+4>>2],A[e+48>>2]=A[g>>2],A[e+52>>2]=b,b=A[g+28>>2],A[e+40>>2]=A[g+24>>2],A[e+44>>2]=b,b=A[g+20>>2],A[e+32>>2]=A[g+16>>2],A[e+36>>2]=b,a0(x,e+48|0,e+32|0),b=A[e+524>>2],A[g+24>>2]=A[e+520>>2],A[g+28>>2]=b,b=A[e+516>>2],A[g+16>>2]=A[e+512>>2],A[g+20>>2]=b,b=A[e+540>>2],A[e+24>>2]=A[e+536>>2],A[e+28>>2]=b,b=A[e+532>>2],A[e+16>>2]=A[e+528>>2],A[e+20>>2]=b,b=A[g+12>>2],A[e+8>>2]=A[g+8>>2],A[e+12>>2]=b,b=A[g+4>>2],A[e>>2]=A[g>>2],A[e+4>>2]=b,a0(x,e+16|0,e),x=A[e+524>>2],A[g+8>>2]=A[e+520>>2],A[g+12>>2]=x,x=A[e+516>>2],A[g>>2]=A[e+512>>2],A[g+4>>2]=x,A[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^h,A[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^s,A[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^_,A[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^a,A[C>>2]=(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24)^I,A[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^o,A[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^r,A[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^t,W=e+544|0}function WC(C,g,e,t,r){var o,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0;for(W=o=W-288|0,p=(i[r+44|0]|i[r+45|0]<<8|i[r+46|0]<<16|i[r+47|0]<<24)^t>>>29,l=(i[r+40|0]|i[r+41|0]<<8|i[r+42|0]<<16|i[r+43|0]<<24)^t<<3,v=(i[r+36|0]|i[r+37|0]<<8|i[r+38|0]<<16|i[r+39|0]<<24)^e>>>29,t=(i[0|(_=r+32|0)]|i[_+1|0]<<8|i[_+2|0]<<16|i[_+3|0]<<24)^e<<3,B=r+16|0,h=r+48|0,a=r- -64|0,n=r+80|0,I=r+96|0,s=r+112|0;e=A[s+12>>2],A[o+280>>2]=A[s+8>>2],A[o+284>>2]=e,e=A[s+4>>2],A[o+272>>2]=A[s>>2],A[o+276>>2]=e,e=A[I+12>>2],A[o+248>>2]=A[I+8>>2],A[o+252>>2]=e,e=A[I+4>>2],A[o+240>>2]=A[I>>2],A[o+244>>2]=e,e=A[s+12>>2],A[o+232>>2]=A[s+8>>2],A[o+236>>2]=e,e=A[s+4>>2],A[o+224>>2]=A[s>>2],A[o+228>>2]=e,a0(Q=o+256|0,o+240|0,o+224|0),e=A[o+268>>2],A[s+8>>2]=A[o+264>>2],A[s+12>>2]=e,e=A[o+260>>2],A[s>>2]=A[o+256>>2],A[s+4>>2]=e,e=A[n+12>>2],A[o+216>>2]=A[n+8>>2],A[o+220>>2]=e,e=A[n+4>>2],A[o+208>>2]=A[n>>2],A[o+212>>2]=e,e=A[I+12>>2],A[o+200>>2]=A[I+8>>2],A[o+204>>2]=e,e=A[I+4>>2],A[o+192>>2]=A[I>>2],A[o+196>>2]=e,a0(Q,o+208|0,o+192|0),e=A[o+268>>2],A[I+8>>2]=A[o+264>>2],A[I+12>>2]=e,e=A[o+260>>2],A[I>>2]=A[o+256>>2],A[I+4>>2]=e,e=A[a+12>>2],A[o+184>>2]=A[a+8>>2],A[o+188>>2]=e,e=A[a+4>>2],A[o+176>>2]=A[a>>2],A[o+180>>2]=e,e=A[n+12>>2],A[o+168>>2]=A[n+8>>2],A[o+172>>2]=e,e=A[n+4>>2],A[o+160>>2]=A[n>>2],A[o+164>>2]=e,a0(Q,o+176|0,o+160|0),e=A[o+268>>2],A[n+8>>2]=A[o+264>>2],A[n+12>>2]=e,e=A[o+260>>2],A[n>>2]=A[o+256>>2],A[n+4>>2]=e,e=A[h+12>>2],A[o+152>>2]=A[h+8>>2],A[o+156>>2]=e,e=A[h+4>>2],A[o+144>>2]=A[h>>2],A[o+148>>2]=e,e=A[a+12>>2],A[o+136>>2]=A[a+8>>2],A[o+140>>2]=e,e=A[a+4>>2],A[o+128>>2]=A[a>>2],A[o+132>>2]=e,a0(Q,o+144|0,o+128|0),e=A[o+268>>2],A[a+8>>2]=A[o+264>>2],A[a+12>>2]=e,e=A[o+260>>2],A[a>>2]=A[o+256>>2],A[a+4>>2]=e,e=A[_+12>>2],A[o+120>>2]=A[_+8>>2],A[o+124>>2]=e,e=A[_+4>>2],A[o+112>>2]=A[_>>2],A[o+116>>2]=e,e=A[h+12>>2],A[o+104>>2]=A[h+8>>2],A[o+108>>2]=e,e=A[h+4>>2],A[o+96>>2]=A[h>>2],A[o+100>>2]=e,a0(Q,o+112|0,o+96|0),e=A[o+268>>2],A[h+8>>2]=A[o+264>>2],A[h+12>>2]=e,e=A[o+260>>2],A[h>>2]=A[o+256>>2],A[h+4>>2]=e,e=A[B+12>>2],A[o+88>>2]=A[B+8>>2],A[o+92>>2]=e,e=A[B+4>>2],A[o+80>>2]=A[B>>2],A[o+84>>2]=e,e=A[_+12>>2],A[o+72>>2]=A[_+8>>2],A[o+76>>2]=e,e=A[_+4>>2],A[o+64>>2]=A[_>>2],A[o+68>>2]=e,a0(Q,o+80|0,o- -64|0),e=A[o+268>>2],A[_+8>>2]=A[o+264>>2],A[_+12>>2]=e,e=A[o+260>>2],A[_>>2]=A[o+256>>2],A[_+4>>2]=e,e=A[r+12>>2],A[o+56>>2]=A[r+8>>2],A[o+60>>2]=e,e=A[r+4>>2],A[o+48>>2]=A[r>>2],A[o+52>>2]=e,e=A[B+12>>2],A[o+40>>2]=A[B+8>>2],A[o+44>>2]=e,e=A[B+4>>2],A[o+32>>2]=A[B>>2],A[o+36>>2]=e,a0(Q,o+48|0,o+32|0),e=A[o+268>>2],A[B+8>>2]=A[o+264>>2],A[B+12>>2]=e,e=A[o+260>>2],A[B>>2]=A[o+256>>2],A[B+4>>2]=e,e=A[o+284>>2],A[o+24>>2]=A[o+280>>2],A[o+28>>2]=e,e=A[o+276>>2],A[o+16>>2]=A[o+272>>2],A[o+20>>2]=e,e=A[r+12>>2],A[o+8>>2]=A[r+8>>2],A[o+12>>2]=e,e=A[r+4>>2],A[o>>2]=A[r>>2],A[o+4>>2]=e,a0(Q,o+16|0,o),e=A[o+268>>2],A[r+8>>2]=A[o+264>>2],A[r+12>>2]=e,e=A[o+260>>2],A[r>>2]=A[o+256>>2],A[r+4>>2]=e,b=p^(i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24),A[r+12>>2]=b,M=l^(i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24),A[r+8>>2]=M,x=v^(i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24),A[r+4>>2]=x,q=t^(i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),A[r>>2]=q,V=t^(i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24),A[a>>2]=V,$=v^(i[r+68|0]|i[r+69|0]<<8|i[r+70|0]<<16|i[r+71|0]<<24),A[r+68>>2]=$,K=l^(i[r+72|0]|i[r+73|0]<<8|i[r+74|0]<<16|i[r+75|0]<<24),A[r+72>>2]=K,J=p^(i[r+76|0]|i[r+77|0]<<8|i[r+78|0]<<16|i[r+79|0]<<24),A[r+76>>2]=J,(0|(D=D+1|0))!=7;);A:{g:{C:{if(e=g-16|0){if((0|e)==16)break C;break g}a=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,_=i[r+48|0]|i[r+49|0]<<8|i[r+50|0]<<16|i[r+51|0]<<24,B=i[r+32|0]|i[r+33|0]<<8|i[r+34|0]<<16|i[r+35|0]<<24,h=i[r+96|0]|i[r+97|0]<<8|i[r+98|0]<<16|i[r+99|0]<<24,n=i[r+80|0]|i[r+81|0]<<8|i[r+82|0]<<16|i[r+83|0]<<24,I=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,s=i[r+52|0]|i[r+53|0]<<8|i[r+54|0]<<16|i[r+55|0]<<24,Q=i[r+36|0]|i[r+37|0]<<8|i[r+38|0]<<16|i[r+39|0]<<24,p=i[r+100|0]|i[r+101|0]<<8|i[r+102|0]<<16|i[r+103|0]<<24,l=i[r+84|0]|i[r+85|0]<<8|i[r+86|0]<<16|i[r+87|0]<<24,v=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,D=i[r+56|0]|i[r+57|0]<<8|i[r+58|0]<<16|i[r+59|0]<<24,t=i[r+40|0]|i[r+41|0]<<8|i[r+42|0]<<16|i[r+43|0]<<24,e=i[r+104|0]|i[r+105|0]<<8|i[r+106|0]<<16|i[r+107|0]<<24,g=i[r+88|0]|i[r+89|0]<<8|i[r+90|0]<<16|i[r+91|0]<<24,r=b^(i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24)^(i[r+60|0]|i[r+61|0]<<8|i[r+62|0]<<16|i[r+63|0]<<24)^(i[r+44|0]|i[r+45|0]<<8|i[r+46|0]<<16|i[r+47|0]<<24)^(i[r+92|0]|i[r+93|0]<<8|i[r+94|0]<<16|i[r+95|0]<<24)^(i[r+108|0]|i[r+109|0]<<8|i[r+110|0]<<16|i[r+111|0]<<24)^J,c[C+12|0]=r,c[C+13|0]=r>>>8,c[C+14|0]=r>>>16,c[C+15|0]=r>>>24,g=v^D^t^g^e^K^M,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=I^s^Q^p^l^$^x,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=a^_^B^h^n^V^q,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24;break A}s=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,Q=i[r+48|0]|i[r+49|0]<<8|i[r+50|0]<<16|i[r+51|0]<<24,p=i[r+32|0]|i[r+33|0]<<8|i[r+34|0]<<16|i[r+35|0]<<24,l=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,v=i[r+52|0]|i[r+53|0]<<8|i[r+54|0]<<16|i[r+55|0]<<24,D=i[r+36|0]|i[r+37|0]<<8|i[r+38|0]<<16|i[r+39|0]<<24,t=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,e=i[r+56|0]|i[r+57|0]<<8|i[r+58|0]<<16|i[r+59|0]<<24,g=i[r+40|0]|i[r+41|0]<<8|i[r+42|0]<<16|i[r+43|0]<<24,I=b^(i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24)^(i[r+60|0]|i[r+61|0]<<8|i[r+62|0]<<16|i[r+63|0]<<24)^(i[r+44|0]|i[r+45|0]<<8|i[r+46|0]<<16|i[r+47|0]<<24),c[C+12|0]=I,c[C+13|0]=I>>>8,c[C+14|0]=I>>>16,c[C+15|0]=I>>>24,g=t^g^e^M,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=l^v^D^x,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=s^Q^p^q,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,h=i[r+80|0]|i[r+81|0]<<8|i[r+82|0]<<16|i[r+83|0]<<24,n=i[0|(g=r- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,I=i[r+112|0]|i[r+113|0]<<8|i[r+114|0]<<16|i[r+115|0]<<24,s=i[r+96|0]|i[r+97|0]<<8|i[r+98|0]<<16|i[r+99|0]<<24,Q=i[r+84|0]|i[r+85|0]<<8|i[r+86|0]<<16|i[r+87|0]<<24,p=i[r+68|0]|i[r+69|0]<<8|i[r+70|0]<<16|i[r+71|0]<<24,l=i[r+116|0]|i[r+117|0]<<8|i[r+118|0]<<16|i[r+119|0]<<24,v=i[r+100|0]|i[r+101|0]<<8|i[r+102|0]<<16|i[r+103|0]<<24,D=i[r+88|0]|i[r+89|0]<<8|i[r+90|0]<<16|i[r+91|0]<<24,t=i[r+72|0]|i[r+73|0]<<8|i[r+74|0]<<16|i[r+75|0]<<24,e=i[r+120|0]|i[r+121|0]<<8|i[r+122|0]<<16|i[r+123|0]<<24,g=i[r+104|0]|i[r+105|0]<<8|i[r+106|0]<<16|i[r+107|0]<<24,r=(i[r+92|0]|i[r+93|0]<<8|i[r+94|0]<<16|i[r+95|0]<<24)^(i[r+76|0]|i[r+77|0]<<8|i[r+78|0]<<16|i[r+79|0]<<24)^(i[r+124|0]|i[r+125|0]<<8|i[r+126|0]<<16|i[r+127|0]<<24)^(i[r+108|0]|i[r+109|0]<<8|i[r+110|0]<<16|i[r+111|0]<<24),c[C+28|0]=r,c[C+29|0]=r>>>8,c[C+30|0]=r>>>16,c[C+31|0]=r>>>24,g=D^t^g^e,c[C+24|0]=g,c[C+25|0]=g>>>8,c[C+26|0]=g>>>16,c[C+27|0]=g>>>24,g=Q^p^l^v,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=h^n^I^s,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24;break A}$0(C,0,g)}W=o+288|0}function Hg(C,g,e,t){var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0;for(r=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,A[e>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[e+4>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,A[e+8>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,A[e+12>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[e+16>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[e+20>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[e+24>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[e+28>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,A[e+32>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,A[e+36>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,A[e+40>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,A[e+44>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,A[e+48>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,A[e+52>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,r=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,A[e+56>>2]=r<<24|(65280&r)<<8|r>>>8&65280|r>>>24,g=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,A[e+60>>2]=g<<24|(65280&g)<<8|g>>>8&65280|g>>>24,g=A[C+28>>2],A[t+24>>2]=A[C+24>>2],A[t+28>>2]=g,g=A[C+20>>2],A[t+16>>2]=A[C+16>>2],A[t+20>>2]=g,g=A[C+12>>2],A[t+8>>2]=A[C+8>>2],A[t+12>>2]=g,g=A[C+4>>2],A[t>>2]=A[C>>2],A[t+4>>2]=g;_=A[t+28>>2],r=(g=x<<2)+e|0,I=A[t+16>>2],s=A[r>>2]+(pA(I,26)^pA(I,21)^pA(I,7))|0,n=(_=((o=A[g+35264>>2]+s|0)+(I&((s=A[t+24>>2])^(B=A[t+20>>2]))^s)|0)+_|0)+A[t+12>>2]|0,A[t+12>>2]=n,_=(p=_+(pA(h=A[t>>2],30)^pA(h,19)^pA(h,10))|0)+(h&((o=A[t+8>>2])|(a=A[t+4>>2]))|o&a)|0,A[t+28>>2]=_,o=(p=o)+(s=(A[(v=(o=4|g)+e|0)>>2]+((s+(B^n&(I^B))|0)+(pA(n,26)^pA(n,21)^pA(n,7))|0)|0)+A[o+35264>>2]|0)|0,A[t+8>>2]=o,s=(s+(_&(a|h)|a&h)|0)+(pA(_,30)^pA(_,19)^pA(_,10))|0,A[t+24>>2]=s,B=(p=a)+(a=(((B+A[(M=(a=8|g)+e|0)>>2]|0)+A[a+35264>>2]|0)+(I^o&(I^n))|0)+(pA(o,26)^pA(o,21)^pA(o,7))|0)|0,A[t+4>>2]=B,a=a+((s&(_|h)|_&h)+(pA(s,30)^pA(s,19)^pA(s,10))|0)|0,A[t+20>>2]=a,I=(p=h)+(h=(((I+A[(q=(h=12|g)+e|0)>>2]|0)+A[h+35264>>2]|0)+(n^B&(o^n))|0)+(pA(B,26)^pA(B,21)^pA(B,7))|0)|0,A[t>>2]=I,h=h+((a&(_|s)|_&s)+(pA(a,30)^pA(a,19)^pA(a,10))|0)|0,A[t+16>>2]=h,n=(Q=((((p=n)+A[(V=(n=16|g)+e|0)>>2]|0)+A[n+35264>>2]|0)+(o^I&(o^B))|0)+(pA(I,26)^pA(I,21)^pA(I,7))|0)+((h&(a|s)|a&s)+(pA(h,30)^pA(h,19)^pA(h,10))|0)|0,A[t+12>>2]=n,Q=_+Q|0,A[t+28>>2]=Q,_=(o=(((o+A[($=(_=20|g)+e|0)>>2]|0)+A[_+35264>>2]|0)+(B^Q&(I^B))|0)+(pA(Q,26)^pA(Q,21)^pA(Q,7))|0)+((n&(a|h)|a&h)+(pA(n,30)^pA(n,19)^pA(n,10))|0)|0,A[t+8>>2]=_,o=o+s|0,A[t+24>>2]=o,s=(B=(((B+A[(K=(s=24|g)+e|0)>>2]|0)+A[s+35264>>2]|0)+(I^o&(I^Q))|0)+(pA(o,26)^pA(o,21)^pA(o,7))|0)+((_&(h|n)|h&n)+(pA(_,30)^pA(_,19)^pA(_,10))|0)|0,A[t+4>>2]=s,B=a+B|0,A[t+20>>2]=B,a=(I=(((I+A[(J=(a=28|g)+e|0)>>2]|0)+A[a+35264>>2]|0)+(Q^B&(o^Q))|0)+(pA(B,26)^pA(B,21)^pA(B,7))|0)+((s&(_|n)|_&n)+(pA(s,30)^pA(s,19)^pA(s,10))|0)|0,A[t>>2]=a,I=I+h|0,A[t+16>>2]=I,h=(Q=(((Q+A[(z=(h=32|g)+e|0)>>2]|0)+A[h+35264>>2]|0)+(o^I&(o^B))|0)+(pA(I,26)^pA(I,21)^pA(I,7))|0)+((a&(_|s)|_&s)+(pA(a,30)^pA(a,19)^pA(a,10))|0)|0,A[t+28>>2]=h,Q=n+Q|0,A[t+12>>2]=Q,n=(o=(((o+A[(_A=(n=36|g)+e|0)>>2]|0)+A[n+35264>>2]|0)+(B^Q&(I^B))|0)+(pA(Q,26)^pA(Q,21)^pA(Q,7))|0)+((h&(a|s)|a&s)+(pA(h,30)^pA(h,19)^pA(h,10))|0)|0,A[t+24>>2]=n,o=o+_|0,A[t+8>>2]=o,_=(B=(((B+A[(sA=(_=40|g)+e|0)>>2]|0)+A[_+35264>>2]|0)+(I^o&(I^Q))|0)+(pA(o,26)^pA(o,21)^pA(o,7))|0)+((n&(a|h)|a&h)+(pA(n,30)^pA(n,19)^pA(n,10))|0)|0,A[t+20>>2]=_,B=s+B|0,A[t+4>>2]=B,p=(s=44|g)+e|0,s=(I=((I+(A[s+35264>>2]+A[p>>2]|0)|0)+(Q^B&(o^Q))|0)+(pA(B,26)^pA(B,21)^pA(B,7))|0)+((_&(h|n)|h&n)+(pA(_,30)^pA(_,19)^pA(_,10))|0)|0,A[t+16>>2]=s,a=a+I|0,A[t>>2]=a,b=(I=48|g)+e|0,I=(Q=((Q+(A[I+35264>>2]+A[b>>2]|0)|0)+(o^a&(o^B))|0)+(pA(a,26)^pA(a,21)^pA(a,7))|0)+((s&(_|n)|_&n)+(pA(s,30)^pA(s,19)^pA(s,10))|0)|0,A[t+12>>2]=I,h=h+Q|0,A[t+28>>2]=h,D=(Q=52|g)+e|0,o=(Q=(((A[Q+35264>>2]+A[D>>2]|0)+o|0)+(B^h&(a^B))|0)+(pA(h,26)^pA(h,21)^pA(h,7))|0)+((I&(_|s)|_&s)+(pA(I,30)^pA(I,19)^pA(I,10))|0)|0,A[t+8>>2]=o,n=n+Q|0,A[t+24>>2]=n,Q=(l=56|g)+e|0,B=(l=(((A[l+35264>>2]+A[Q>>2]|0)+B|0)+(a^n&(a^h))|0)+(pA(n,26)^pA(n,21)^pA(n,7))|0)+((o&(s|I)|s&I)+(pA(o,30)^pA(o,19)^pA(o,10))|0)|0,A[t+4>>2]=B,_=_+l|0,A[t+20>>2]=_,l=(g|=60)+e|0,_=(g=((a+(A[g+35264>>2]+A[l>>2]|0)|0)+(h^_&(h^n))|0)+(pA(_,26)^pA(_,21)^pA(_,7))|0)+((B&(o|I)|o&I)+(pA(B,30)^pA(B,19)^pA(B,10))|0)|0,A[t>>2]=_,A[t+16>>2]=g+s,(0|x)!=48;)a=A[_A>>2],x=x+16|0,g=A[Q>>2],_=(o=A[r>>2]+(a+(pA(g,15)^pA(g,13)^g>>>10)|0)|0)+(pA(s=A[v>>2],25)^pA(s,14)^s>>>3)|0,A[(x<<2)+e>>2]=_,n=(I=(o=(h=A[sA>>2])+s|0)+(pA(s=A[l>>2],15)^pA(s,13)^s>>>10)|0)+(pA(o=A[M>>2],25)^pA(o,14)^o>>>3)|0,A[r+68>>2]=n,B=(p=((I=o)+(o=A[p>>2])|0)+(pA(_,15)^pA(_,13)^_>>>10)|0)+(pA(I=A[q>>2],25)^pA(I,14)^I>>>3)|0,A[r+72>>2]=B,Q=(l=((p=I)+(I=A[b>>2])|0)+(pA(n,15)^pA(n,13)^n>>>10)|0)+(pA(p=A[V>>2],25)^pA(p,14)^p>>>3)|0,A[r+76>>2]=Q,b=(l=((l=p)+(p=A[D>>2])|0)+(pA(B,15)^pA(B,13)^B>>>10)|0)+(pA(D=A[$>>2],25)^pA(D,14)^D>>>3)|0,A[r+80>>2]=b,D=(v=(g+D|0)+(pA(Q,15)^pA(Q,13)^Q>>>10)|0)+(pA(l=A[K>>2],25)^pA(l,14)^l>>>3)|0,A[r+84>>2]=D,l=((s+l|0)+(pA(M=A[J>>2],25)^pA(M,14)^M>>>3)|0)+(pA(b,15)^pA(b,13)^b>>>10)|0,A[r+88>>2]=l,n=((v=A[z>>2])+(n+(pA(a,25)^pA(a,14)^a>>>3)|0)|0)+(pA(l,15)^pA(l,13)^l>>>10)|0,A[r+96>>2]=n,v=((_+M|0)+(pA(v,25)^pA(v,14)^v>>>3)|0)+(pA(D,15)^pA(D,13)^D>>>10)|0,A[r+92>>2]=v,Q=(Q+(h+(pA(o,25)^pA(o,14)^o>>>3)|0)|0)+(pA(n,15)^pA(n,13)^n>>>10)|0,A[r+104>>2]=Q,a=(B+(a+(pA(h,25)^pA(h,14)^h>>>3)|0)|0)+(pA(v,15)^pA(v,13)^v>>>10)|0,A[r+100>>2]=a,h=(D+(I+(pA(p,25)^pA(p,14)^p>>>3)|0)|0)+(pA(Q,15)^pA(Q,13)^Q>>>10)|0,A[r+112>>2]=h,a=(b+(o+(pA(I,25)^pA(I,14)^I>>>3)|0)|0)+(pA(a,15)^pA(a,13)^a>>>10)|0,A[r+108>>2]=a,nA=r,fA=(v+(g+(pA(s,25)^pA(s,14)^s>>>3)|0)|0)+(pA(h,15)^pA(h,13)^h>>>10)|0,A[nA+120>>2]=fA,g=(l+(p+(pA(g,25)^pA(g,14)^g>>>3)|0)|0)+(pA(a,15)^pA(a,13)^a>>>10)|0,A[r+116>>2]=g,nA=r,fA=(n+(s+(pA(_,25)^pA(_,14)^_>>>3)|0)|0)+(pA(g,15)^pA(g,13)^g>>>10)|0,A[nA+124>>2]=fA;A[C>>2]=_+A[C>>2],A[C+4>>2]=A[C+4>>2]+A[t+4>>2],A[C+8>>2]=A[C+8>>2]+A[t+8>>2],A[C+12>>2]=A[C+12>>2]+A[t+12>>2],A[C+16>>2]=A[C+16>>2]+A[t+16>>2],A[C+20>>2]=A[C+20>>2]+A[t+20>>2],A[C+24>>2]=A[C+24>>2]+A[t+24>>2],A[C+28>>2]=A[C+28>>2]+A[t+28>>2]}function ZC(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0;W=t=W-288|0,s=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,h=i[e+48|0]|i[e+49|0]<<8|i[e+50|0]<<16|i[e+51|0]<<24,n=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,B=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,Q=i[e+52|0]|i[e+53|0]<<8|i[e+54|0]<<16|i[e+55|0]<<24,p=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,l=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,v=i[e+56|0]|i[e+57|0]<<8|i[e+58|0]<<16|i[e+59|0]<<24,fA=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,D=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,b=i[e+60|0]|i[e+61|0]<<8|i[e+62|0]<<16|i[e+63|0]<<24,_A=i[e+32|0]|i[e+33|0]<<8|i[e+34|0]<<16|i[e+35|0]<<24,uA=i[e+80|0]|i[e+81|0]<<8|i[e+82|0]<<16|i[e+83|0]<<24,M=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,x=i[e+112|0]|i[e+113|0]<<8|i[e+114|0]<<16|i[e+115|0]<<24,z=i[e+96|0]|i[e+97|0]<<8|i[e+98|0]<<16|i[e+99|0]<<24,sA=i[e+36|0]|i[e+37|0]<<8|i[e+38|0]<<16|i[e+39|0]<<24,vA=i[e+84|0]|i[e+85|0]<<8|i[e+86|0]<<16|i[e+87|0]<<24,q=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,V=i[e+116|0]|i[e+117|0]<<8|i[e+118|0]<<16|i[e+119|0]<<24,o=i[e+100|0]|i[e+101|0]<<8|i[e+102|0]<<16|i[e+103|0]<<24,nA=i[e+40|0]|i[e+41|0]<<8|i[e+42|0]<<16|i[e+43|0]<<24,wA=i[e+88|0]|i[e+89|0]<<8|i[e+90|0]<<16|i[e+91|0]<<24,$=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,K=i[e+120|0]|i[e+121|0]<<8|i[e+122|0]<<16|i[e+123|0]<<24,I=i[e+104|0]|i[e+105|0]<<8|i[e+106|0]<<16|i[e+107|0]<<24,J=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,r=(a=i[e+44|0]|i[e+45|0]<<8|i[e+46|0]<<16|i[e+47|0]<<24)^(_=i[e+108|0]|i[e+109|0]<<8|i[e+110|0]<<16|i[e+111|0]<<24)&(i[e+124|0]|i[e+125|0]<<8|i[e+126|0]<<16|i[e+127|0]<<24)^(i[e+92|0]|i[e+93|0]<<8|i[e+94|0]<<16|i[e+95|0]<<24)^(i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24),c[C+28|0]=r,c[C+29|0]=r>>>8,c[C+30|0]=r>>>16,c[C+31|0]=r>>>24,wA=nA^I&K^wA^$,c[C+24|0]=wA,c[C+25|0]=wA>>>8,c[C+26|0]=wA>>>16,c[C+27|0]=wA>>>24,vA=sA^o&V^vA^q,c[C+20|0]=vA,c[C+21|0]=vA>>>8,c[C+22|0]=vA>>>16,c[C+23|0]=vA>>>24,uA=_A^z&x^uA^M,c[C+16|0]=uA,c[C+17|0]=uA>>>8,c[C+18|0]=uA>>>16,c[C+19|0]=uA>>>24,fA=b&a^fA^D^_,c[C+12|0]=fA,c[C+13|0]=fA>>>8,c[C+14|0]=fA>>>16,c[C+15|0]=fA>>>24,nA=nA&v^p^l^I,c[C+8|0]=nA,c[C+9|0]=nA>>>8,c[C+10|0]=nA>>>16,c[C+11|0]=nA>>>24,sA=sA&Q^n^B^o,c[C+4|0]=sA,c[C+5|0]=sA>>>8,c[C+6|0]=sA>>>16,c[C+7|0]=sA>>>24,_A=z^_A&h^s^J,c[0|C]=_A,c[C+1|0]=_A>>>8,c[C+2|0]=_A>>>16,c[C+3|0]=_A>>>24,C=A[e+124>>2],A[t+280>>2]=A[e+120>>2],A[t+284>>2]=C,C=A[e+116>>2],A[t+272>>2]=A[e+112>>2],A[t+276>>2]=C,C=A[e+108>>2],A[t+248>>2]=A[e+104>>2],A[t+252>>2]=C,C=A[e+100>>2],A[t+240>>2]=A[e+96>>2],A[t+244>>2]=C,C=A[e+124>>2],A[t+232>>2]=A[e+120>>2],A[t+236>>2]=C,C=A[e+116>>2],A[t+224>>2]=A[e+112>>2],A[t+228>>2]=C,a0(g=t+256|0,t+240|0,t+224|0),C=A[t+268>>2],A[e+120>>2]=A[t+264>>2],A[e+124>>2]=C,C=A[t+260>>2],A[e+112>>2]=A[t+256>>2],A[e+116>>2]=C,C=A[e+92>>2],A[t+216>>2]=A[e+88>>2],A[t+220>>2]=C,C=A[e+84>>2],A[t+208>>2]=A[e+80>>2],A[t+212>>2]=C,C=A[e+108>>2],A[t+200>>2]=A[e+104>>2],A[t+204>>2]=C,C=A[e+100>>2],A[t+192>>2]=A[e+96>>2],A[t+196>>2]=C,a0(g,t+208|0,t+192|0),C=A[t+268>>2],A[e+104>>2]=A[t+264>>2],A[e+108>>2]=C,C=A[t+260>>2],A[e+96>>2]=A[t+256>>2],A[e+100>>2]=C,C=A[e+76>>2],A[t+184>>2]=A[e+72>>2],A[t+188>>2]=C,z=A[4+(C=e- -64|0)>>2],A[t+176>>2]=A[C>>2],A[t+180>>2]=z,z=A[e+92>>2],A[t+168>>2]=A[e+88>>2],A[t+172>>2]=z,z=A[e+84>>2],A[t+160>>2]=A[e+80>>2],A[t+164>>2]=z,a0(g,t+176|0,t+160|0),z=A[t+268>>2],A[e+88>>2]=A[t+264>>2],A[e+92>>2]=z,z=A[t+260>>2],A[e+80>>2]=A[t+256>>2],A[e+84>>2]=z,z=A[e+60>>2],A[t+152>>2]=A[e+56>>2],A[t+156>>2]=z,z=A[e+52>>2],A[t+144>>2]=A[e+48>>2],A[t+148>>2]=z,z=A[e+76>>2],A[t+136>>2]=A[e+72>>2],A[t+140>>2]=z,z=A[C+4>>2],A[t+128>>2]=A[C>>2],A[t+132>>2]=z,a0(g,t+144|0,t+128|0),z=A[t+268>>2],A[e+72>>2]=A[t+264>>2],A[e+76>>2]=z,z=A[t+260>>2],A[C>>2]=A[t+256>>2],A[C+4>>2]=z,z=A[e+44>>2],A[t+120>>2]=A[e+40>>2],A[t+124>>2]=z,z=A[e+36>>2],A[t+112>>2]=A[e+32>>2],A[t+116>>2]=z,z=A[e+60>>2],A[t+104>>2]=A[e+56>>2],A[t+108>>2]=z,z=A[e+52>>2],A[t+96>>2]=A[e+48>>2],A[t+100>>2]=z,a0(g,t+112|0,t+96|0),z=A[t+268>>2],A[e+56>>2]=A[t+264>>2],A[e+60>>2]=z,z=A[t+260>>2],A[e+48>>2]=A[t+256>>2],A[e+52>>2]=z,z=A[e+28>>2],A[t+88>>2]=A[e+24>>2],A[t+92>>2]=z,z=A[e+20>>2],A[t+80>>2]=A[e+16>>2],A[t+84>>2]=z,z=A[e+44>>2],A[t+72>>2]=A[e+40>>2],A[t+76>>2]=z,z=A[e+36>>2],A[t+64>>2]=A[e+32>>2],A[t+68>>2]=z,a0(g,t+80|0,t- -64|0),z=A[t+268>>2],A[e+40>>2]=A[t+264>>2],A[e+44>>2]=z,z=A[t+260>>2],A[e+32>>2]=A[t+256>>2],A[e+36>>2]=z,z=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=z,z=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=z,z=A[e+28>>2],A[t+40>>2]=A[e+24>>2],A[t+44>>2]=z,z=A[e+20>>2],A[t+32>>2]=A[e+16>>2],A[t+36>>2]=z,a0(g,t+48|0,t+32|0),z=A[t+268>>2],A[e+24>>2]=A[t+264>>2],A[e+28>>2]=z,z=A[t+260>>2],A[e+16>>2]=A[t+256>>2],A[e+20>>2]=z,z=A[t+284>>2],A[t+24>>2]=A[t+280>>2],A[t+28>>2]=z,z=A[t+276>>2],A[t+16>>2]=A[t+272>>2],A[t+20>>2]=z,z=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=z,z=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=z,a0(g,t+16|0,t),g=A[t+268>>2],A[e+8>>2]=A[t+264>>2],A[e+12>>2]=g,g=A[t+260>>2],A[e>>2]=A[t+256>>2],A[e+4>>2]=g,A[e+12>>2]=fA^(i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24),A[e+8>>2]=nA^(i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24),A[e+4>>2]=sA^(i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24),A[e>>2]=_A^(i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24),A[C>>2]=uA^(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),A[e+68>>2]=vA^(i[e+68|0]|i[e+69|0]<<8|i[e+70|0]<<16|i[e+71|0]<<24),A[e+72>>2]=wA^(i[e+72|0]|i[e+73|0]<<8|i[e+74|0]<<16|i[e+75|0]<<24),A[e+76>>2]=r^(i[e+76|0]|i[e+77|0]<<8|i[e+78|0]<<16|i[e+79|0]<<24),W=t+288|0}function $C(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA=0;W=t=W-288|0,M=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,x=i[e+48|0]|i[e+49|0]<<8|i[e+50|0]<<16|i[e+51|0]<<24,r=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,q=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,V=i[e+52|0]|i[e+53|0]<<8|i[e+54|0]<<16|i[e+55|0]<<24,o=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,$=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,K=i[e+56|0]|i[e+57|0]<<8|i[e+58|0]<<16|i[e+59|0]<<24,I=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,J=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,z=i[e+60|0]|i[e+61|0]<<8|i[e+62|0]<<16|i[e+63|0]<<24,wA=i[e+32|0]|i[e+33|0]<<8|i[e+34|0]<<16|i[e+35|0]<<24,a=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,_A=i[e+80|0]|i[e+81|0]<<8|i[e+82|0]<<16|i[e+83|0]<<24,sA=i[e+112|0]|i[e+113|0]<<8|i[e+114|0]<<16|i[e+115|0]<<24,_=i[e+96|0]|i[e+97|0]<<8|i[e+98|0]<<16|i[e+99|0]<<24,s=i[e+36|0]|i[e+37|0]<<8|i[e+38|0]<<16|i[e+39|0]<<24,h=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,nA=i[e+84|0]|i[e+85|0]<<8|i[e+86|0]<<16|i[e+87|0]<<24,fA=i[e+116|0]|i[e+117|0]<<8|i[e+118|0]<<16|i[e+119|0]<<24,n=i[e+100|0]|i[e+101|0]<<8|i[e+102|0]<<16|i[e+103|0]<<24,B=i[e+40|0]|i[e+41|0]<<8|i[e+42|0]<<16|i[e+43|0]<<24,Q=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,uA=i[e+88|0]|i[e+89|0]<<8|i[e+90|0]<<16|i[e+91|0]<<24,vA=i[e+120|0]|i[e+121|0]<<8|i[e+122|0]<<16|i[e+123|0]<<24,p=i[e+104|0]|i[e+105|0]<<8|i[e+106|0]<<16|i[e+107|0]<<24,l=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(v=i[e+44|0]|i[e+45|0]<<8|i[e+46|0]<<16|i[e+47|0]<<24)^(D=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)^(b=i[e+108|0]|i[e+109|0]<<8|i[e+110|0]<<16|i[e+111|0]<<24)&(i[e+124|0]|i[e+125|0]<<8|i[e+126|0]<<16|i[e+127|0]<<24)^(i[e+92|0]|i[e+93|0]<<8|i[e+94|0]<<16|i[e+95|0]<<24),c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=p&vA^uA^Q^B,c[C+24|0]=g,c[C+25|0]=g>>>8,c[C+26|0]=g>>>16,c[C+27|0]=g>>>24,g=n&fA^nA^h^s,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=wA^_&sA^_A^a,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24,g=z&v^J^I^b,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=B&K^$^o^p,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=s&V^q^r^n,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=wA&x^M^l^_,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,C=A[e+124>>2],A[t+280>>2]=A[e+120>>2],A[t+284>>2]=C,C=A[e+116>>2],A[t+272>>2]=A[e+112>>2],A[t+276>>2]=C,C=A[e+108>>2],A[t+248>>2]=A[e+104>>2],A[t+252>>2]=C,C=A[e+100>>2],A[t+240>>2]=A[e+96>>2],A[t+244>>2]=C,C=A[e+124>>2],A[t+232>>2]=A[e+120>>2],A[t+236>>2]=C,C=A[e+116>>2],A[t+224>>2]=A[e+112>>2],A[t+228>>2]=C,a0(g=t+256|0,t+240|0,t+224|0),C=A[t+268>>2],A[e+120>>2]=A[t+264>>2],A[e+124>>2]=C,C=A[t+260>>2],A[e+112>>2]=A[t+256>>2],A[e+116>>2]=C,C=A[e+92>>2],A[t+216>>2]=A[e+88>>2],A[t+220>>2]=C,C=A[e+84>>2],A[t+208>>2]=A[e+80>>2],A[t+212>>2]=C,C=A[e+108>>2],A[t+200>>2]=A[e+104>>2],A[t+204>>2]=C,C=A[e+100>>2],A[t+192>>2]=A[e+96>>2],A[t+196>>2]=C,a0(g,t+208|0,t+192|0),C=A[t+268>>2],A[e+104>>2]=A[t+264>>2],A[e+108>>2]=C,C=A[t+260>>2],A[e+96>>2]=A[t+256>>2],A[e+100>>2]=C,C=A[e+76>>2],A[t+184>>2]=A[e+72>>2],A[t+188>>2]=C,wA=A[4+(C=e- -64|0)>>2],A[t+176>>2]=A[C>>2],A[t+180>>2]=wA,wA=A[e+92>>2],A[t+168>>2]=A[e+88>>2],A[t+172>>2]=wA,wA=A[e+84>>2],A[t+160>>2]=A[e+80>>2],A[t+164>>2]=wA,a0(g,t+176|0,t+160|0),wA=A[t+268>>2],A[e+88>>2]=A[t+264>>2],A[e+92>>2]=wA,wA=A[t+260>>2],A[e+80>>2]=A[t+256>>2],A[e+84>>2]=wA,wA=A[e+60>>2],A[t+152>>2]=A[e+56>>2],A[t+156>>2]=wA,wA=A[e+52>>2],A[t+144>>2]=A[e+48>>2],A[t+148>>2]=wA,wA=A[e+76>>2],A[t+136>>2]=A[e+72>>2],A[t+140>>2]=wA,wA=A[C+4>>2],A[t+128>>2]=A[C>>2],A[t+132>>2]=wA,a0(g,t+144|0,t+128|0),wA=A[t+268>>2],A[e+72>>2]=A[t+264>>2],A[e+76>>2]=wA,wA=A[t+260>>2],A[C>>2]=A[t+256>>2],A[C+4>>2]=wA,wA=A[e+44>>2],A[t+120>>2]=A[e+40>>2],A[t+124>>2]=wA,wA=A[e+36>>2],A[t+112>>2]=A[e+32>>2],A[t+116>>2]=wA,wA=A[e+60>>2],A[t+104>>2]=A[e+56>>2],A[t+108>>2]=wA,wA=A[e+52>>2],A[t+96>>2]=A[e+48>>2],A[t+100>>2]=wA,a0(g,t+112|0,t+96|0),wA=A[t+268>>2],A[e+56>>2]=A[t+264>>2],A[e+60>>2]=wA,wA=A[t+260>>2],A[e+48>>2]=A[t+256>>2],A[e+52>>2]=wA,wA=A[e+28>>2],A[t+88>>2]=A[e+24>>2],A[t+92>>2]=wA,wA=A[e+20>>2],A[t+80>>2]=A[e+16>>2],A[t+84>>2]=wA,wA=A[e+44>>2],A[t+72>>2]=A[e+40>>2],A[t+76>>2]=wA,wA=A[e+36>>2],A[t+64>>2]=A[e+32>>2],A[t+68>>2]=wA,a0(g,t+80|0,t- -64|0),wA=A[t+268>>2],A[e+40>>2]=A[t+264>>2],A[e+44>>2]=wA,wA=A[t+260>>2],A[e+32>>2]=A[t+256>>2],A[e+36>>2]=wA,wA=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=wA,wA=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=wA,wA=A[e+28>>2],A[t+40>>2]=A[e+24>>2],A[t+44>>2]=wA,wA=A[e+20>>2],A[t+32>>2]=A[e+16>>2],A[t+36>>2]=wA,a0(g,t+48|0,t+32|0),wA=A[t+268>>2],A[e+24>>2]=A[t+264>>2],A[e+28>>2]=wA,wA=A[t+260>>2],A[e+16>>2]=A[t+256>>2],A[e+20>>2]=wA,wA=A[t+284>>2],A[t+24>>2]=A[t+280>>2],A[t+28>>2]=wA,wA=A[t+276>>2],A[t+16>>2]=A[t+272>>2],A[t+20>>2]=wA,wA=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=wA,wA=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=wA,a0(g,t+16|0,t),g=A[t+268>>2],A[e+8>>2]=A[t+264>>2],A[e+12>>2]=g,g=A[t+260>>2],A[e>>2]=A[t+256>>2],A[e+4>>2]=g,A[e+12>>2]=(i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24)^I,A[e+8>>2]=(i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24)^o,A[e+4>>2]=(i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24)^r,A[e>>2]=(i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24)^l,A[C>>2]=(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24)^a,A[e+68>>2]=(i[e+68|0]|i[e+69|0]<<8|i[e+70|0]<<16|i[e+71|0]<<24)^h,A[e+72>>2]=(i[e+72|0]|i[e+73|0]<<8|i[e+74|0]<<16|i[e+75|0]<<24)^Q,A[e+76>>2]=D^(i[e+76|0]|i[e+77|0]<<8|i[e+78|0]<<16|i[e+79|0]<<24),W=t+288|0}function Ae(C,g,e,t,r){var o,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0;for(W=o=W-224|0,l=(i[r+60|0]|i[r+61|0]<<8|i[r+62|0]<<16|i[r+63|0]<<24)^t>>>29,v=(i[r+56|0]|i[r+57|0]<<8|i[r+58|0]<<16|i[r+59|0]<<24)^t<<3,n=(i[r+52|0]|i[r+53|0]<<8|i[r+54|0]<<16|i[r+55|0]<<24)^e>>>29,Q=(i[0|(I=r+48|0)]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24)^e<<3,a=r+16|0,_=r+32|0,s=r- -64|0,h=r+80|0;e=A[h+12>>2],A[o+216>>2]=A[h+8>>2],A[o+220>>2]=e,e=A[h+4>>2],A[o+208>>2]=A[h>>2],A[o+212>>2]=e,e=A[s+12>>2],A[o+184>>2]=A[s+8>>2],A[o+188>>2]=e,e=A[s+4>>2],A[o+176>>2]=A[s>>2],A[o+180>>2]=e,e=A[h+12>>2],A[o+168>>2]=A[h+8>>2],A[o+172>>2]=e,e=A[h+4>>2],A[o+160>>2]=A[h>>2],A[o+164>>2]=e,a0(t=o+192|0,o+176|0,o+160|0),e=A[o+204>>2],A[h+8>>2]=A[o+200>>2],A[h+12>>2]=e,e=A[o+196>>2],A[h>>2]=A[o+192>>2],A[h+4>>2]=e,e=A[I+12>>2],A[o+152>>2]=A[I+8>>2],A[o+156>>2]=e,e=A[I+4>>2],A[o+144>>2]=A[I>>2],A[o+148>>2]=e,e=A[s+12>>2],A[o+136>>2]=A[s+8>>2],A[o+140>>2]=e,e=A[s+4>>2],A[o+128>>2]=A[s>>2],A[o+132>>2]=e,a0(t,o+144|0,o+128|0),e=A[o+204>>2],A[s+8>>2]=A[o+200>>2],A[s+12>>2]=e,e=A[o+196>>2],A[s>>2]=A[o+192>>2],A[s+4>>2]=e,e=A[_+12>>2],A[o+120>>2]=A[_+8>>2],A[o+124>>2]=e,e=A[_+4>>2],A[o+112>>2]=A[_>>2],A[o+116>>2]=e,e=A[I+12>>2],A[o+104>>2]=A[I+8>>2],A[o+108>>2]=e,e=A[I+4>>2],A[o+96>>2]=A[I>>2],A[o+100>>2]=e,a0(t,o+112|0,o+96|0),e=A[o+204>>2],A[I+8>>2]=A[o+200>>2],A[I+12>>2]=e,e=A[o+196>>2],A[I>>2]=A[o+192>>2],A[I+4>>2]=e,e=A[a+12>>2],A[o+88>>2]=A[a+8>>2],A[o+92>>2]=e,e=A[a+4>>2],A[o+80>>2]=A[a>>2],A[o+84>>2]=e,e=A[_+12>>2],A[o+72>>2]=A[_+8>>2],A[o+76>>2]=e,e=A[_+4>>2],A[o+64>>2]=A[_>>2],A[o+68>>2]=e,a0(t,o+80|0,o- -64|0),e=A[o+204>>2],A[_+8>>2]=A[o+200>>2],A[_+12>>2]=e,e=A[o+196>>2],A[_>>2]=A[o+192>>2],A[_+4>>2]=e,e=A[r+12>>2],A[o+56>>2]=A[r+8>>2],A[o+60>>2]=e,e=A[r+4>>2],A[o+48>>2]=A[r>>2],A[o+52>>2]=e,e=A[a+12>>2],A[o+40>>2]=A[a+8>>2],A[o+44>>2]=e,e=A[a+4>>2],A[o+32>>2]=A[a>>2],A[o+36>>2]=e,a0(t,o+48|0,o+32|0),e=A[o+204>>2],A[a+8>>2]=A[o+200>>2],A[a+12>>2]=e,e=A[o+196>>2],A[a>>2]=A[o+192>>2],A[a+4>>2]=e,e=A[o+220>>2],A[o+24>>2]=A[o+216>>2],A[o+28>>2]=e,e=A[o+212>>2],A[o+16>>2]=A[o+208>>2],A[o+20>>2]=e,e=A[r+12>>2],A[o+8>>2]=A[r+8>>2],A[o+12>>2]=e,e=A[r+4>>2],A[o>>2]=A[r>>2],A[o+4>>2]=e,a0(t,o+16|0,o),p=A[o+192>>2],t=A[o+196>>2],e=A[o+200>>2],D=l^A[o+204>>2],A[r+12>>2]=D,b=e^v,A[r+8>>2]=b,M=t^n,A[r+4>>2]=M,x=Q^p,A[r>>2]=x,(0|(B=B+1|0))!=7;);A:{g:{C:{if(e=g-16|0){if((0|e)==16)break C;break g}q=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,I=i[r+48|0]|i[r+49|0]<<8|i[r+50|0]<<16|i[r+51|0]<<24,a=i[r+32|0]|i[r+33|0]<<8|i[r+34|0]<<16|i[r+35|0]<<24,_=i[r+80|0]|i[r+81|0]<<8|i[r+82|0]<<16|i[r+83|0]<<24,s=i[0|(g=r- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,h=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,l=i[r+52|0]|i[r+53|0]<<8|i[r+54|0]<<16|i[r+55|0]<<24,v=i[r+36|0]|i[r+37|0]<<8|i[r+38|0]<<16|i[r+39|0]<<24,n=i[r+84|0]|i[r+85|0]<<8|i[r+86|0]<<16|i[r+87|0]<<24,Q=i[r+68|0]|i[r+69|0]<<8|i[r+70|0]<<16|i[r+71|0]<<24,p=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,B=i[r+56|0]|i[r+57|0]<<8|i[r+58|0]<<16|i[r+59|0]<<24,t=i[r+40|0]|i[r+41|0]<<8|i[r+42|0]<<16|i[r+43|0]<<24,e=i[r+88|0]|i[r+89|0]<<8|i[r+90|0]<<16|i[r+91|0]<<24,g=i[r+72|0]|i[r+73|0]<<8|i[r+74|0]<<16|i[r+75|0]<<24,r=D^(i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24)^(i[r+60|0]|i[r+61|0]<<8|i[r+62|0]<<16|i[r+63|0]<<24)^(i[r+44|0]|i[r+45|0]<<8|i[r+46|0]<<16|i[r+47|0]<<24)^(i[r+92|0]|i[r+93|0]<<8|i[r+94|0]<<16|i[r+95|0]<<24)^(i[r+76|0]|i[r+77|0]<<8|i[r+78|0]<<16|i[r+79|0]<<24),c[C+12|0]=r,c[C+13|0]=r>>>8,c[C+14|0]=r>>>16,c[C+15|0]=r>>>24,g=b^p^g^e^t^B,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=M^h^l^v^n^Q,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=x^q^I^a^_^s,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24;break A}Q=i[r+32|0]|i[r+33|0]<<8|i[r+34|0]<<16|i[r+35|0]<<24,p=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,B=i[r+36|0]|i[r+37|0]<<8|i[r+38|0]<<16|i[r+39|0]<<24,t=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,e=i[r+40|0]|i[r+41|0]<<8|i[r+42|0]<<16|i[r+43|0]<<24,g=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,n=D^(i[r+44|0]|i[r+45|0]<<8|i[r+46|0]<<16|i[r+47|0]<<24)^(i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24),c[C+12|0]=n,c[C+13|0]=n>>>8,c[C+14|0]=n>>>16,c[C+15|0]=n>>>24,g=b^g^e,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=M^t^B,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=x^Q^p,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,l=i[r+48|0]|i[r+49|0]<<8|i[r+50|0]<<16|i[r+51|0]<<24,v=i[r+80|0]|i[r+81|0]<<8|i[r+82|0]<<16|i[r+83|0]<<24,n=i[0|(g=r- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,Q=i[r+52|0]|i[r+53|0]<<8|i[r+54|0]<<16|i[r+55|0]<<24,p=i[r+84|0]|i[r+85|0]<<8|i[r+86|0]<<16|i[r+87|0]<<24,B=i[r+68|0]|i[r+69|0]<<8|i[r+70|0]<<16|i[r+71|0]<<24,t=i[r+56|0]|i[r+57|0]<<8|i[r+58|0]<<16|i[r+59|0]<<24,e=i[r+88|0]|i[r+89|0]<<8|i[r+90|0]<<16|i[r+91|0]<<24,g=i[r+72|0]|i[r+73|0]<<8|i[r+74|0]<<16|i[r+75|0]<<24,r=(i[r+60|0]|i[r+61|0]<<8|i[r+62|0]<<16|i[r+63|0]<<24)^(i[r+92|0]|i[r+93|0]<<8|i[r+94|0]<<16|i[r+95|0]<<24)^(i[r+76|0]|i[r+77|0]<<8|i[r+78|0]<<16|i[r+79|0]<<24),c[C+28|0]=r,c[C+29|0]=r>>>8,c[C+30|0]=r>>>16,c[C+31|0]=r>>>24,g=t^g^e,c[C+24|0]=g,c[C+25|0]=g>>>8,c[C+26|0]=g>>>16,c[C+27|0]=g>>>24,g=Q^p^B,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=l^n^v,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24;break A}$0(C,0,g)}W=o+224|0}function ge(C,g,e){var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0;for(W=t=W-4032|0,D2(t+160|0,e),a=A[e+36>>2],A[(I=t+3840|0)>>2]=A[e+32>>2],A[I+4>>2]=a,_=A[e+28>>2],A[(a=t+3832|0)>>2]=A[e+24>>2],A[a+4>>2]=_,h=A[e+20>>2],A[(_=t+3824|0)>>2]=A[e+16>>2],A[_+4>>2]=h,n=A[e+12>>2],A[(h=t+3816|0)>>2]=A[e+8>>2],A[h+4>>2]=n,n=A[e+4>>2],A[t+3808>>2]=A[e>>2],A[t+3812>>2]=n,p=A[e+52>>2],A[(n=t+3856|0)>>2]=A[e+48>>2],A[n+4>>2]=p,D=A[e+60>>2],A[(p=t+3864|0)>>2]=A[e+56>>2],A[p+4>>2]=D,B=A[4+(l=e- -64|0)>>2],A[(D=t+3872|0)>>2]=A[l>>2],A[D+4>>2]=B,B=A[e+76>>2],A[(l=t+3880|0)>>2]=A[e+72>>2],A[l+4>>2]=B,B=A[e+44>>2],A[t+3848>>2]=A[e+40>>2],A[t+3852>>2]=B,b=A[e+92>>2],A[(B=t+3896|0)>>2]=A[e+88>>2],A[B+4>>2]=b,M=A[e+100>>2],A[(b=t+3904|0)>>2]=A[e+96>>2],A[b+4>>2]=M,x=A[e+108>>2],A[(M=t+3912|0)>>2]=A[e+104>>2],A[M+4>>2]=x,q=A[e+116>>2],A[(x=t+3920|0)>>2]=A[e+112>>2],A[x+4>>2]=q,q=A[e+84>>2],A[t+3888>>2]=A[e+80>>2],A[t+3892>>2]=q,P2(r=t+3528|0,q=t+3808|0),kA(o=t+2408|0,r,s=t+3648|0),kA(t+2448|0,Q=t+3568|0,v=t+3608|0),kA(t+2488|0,v,s),kA(t+2528|0,r,Q),D2(s=t+320|0,o),b2(r=t+3368|0,e,s),kA(o=t+2248|0,r,s=t+3488|0),kA(t+2288|0,Q=t+3408|0,v=t+3448|0),kA(t+2328|0,v,s),kA(t+2368|0,r,Q),D2(t+480|0,o),o=A[4+(r=t+2440|0)>>2],A[I>>2]=A[r>>2],A[I+4>>2]=o,o=A[4+(r=t+2432|0)>>2],A[a>>2]=A[r>>2],A[a+4>>2]=o,o=A[4+(r=t+2424|0)>>2],A[_>>2]=A[r>>2],A[_+4>>2]=o,o=A[4+(r=t+2416|0)>>2],A[h>>2]=A[r>>2],A[h+4>>2]=o,o=A[4+(r=t+2456|0)>>2],A[n>>2]=A[r>>2],A[n+4>>2]=o,o=A[4+(r=t+2464|0)>>2],A[p>>2]=A[r>>2],A[p+4>>2]=o,o=A[4+(r=t+2472|0)>>2],A[D>>2]=A[r>>2],A[D+4>>2]=o,o=A[4+(r=t+2480|0)>>2],A[l>>2]=A[r>>2],A[l+4>>2]=o,r=A[t+2412>>2],A[t+3808>>2]=A[t+2408>>2],A[t+3812>>2]=r,r=A[t+2452>>2],A[t+3848>>2]=A[t+2448>>2],A[t+3852>>2]=r,o=A[4+(r=t+2520|0)>>2],A[x>>2]=A[r>>2],A[x+4>>2]=o,o=A[4+(r=t+2512|0)>>2],A[M>>2]=A[r>>2],A[M+4>>2]=o,o=A[4+(r=t+2504|0)>>2],A[b>>2]=A[r>>2],A[b+4>>2]=o,o=A[4+(r=t+2496|0)>>2],A[B>>2]=A[r>>2],A[B+4>>2]=o,r=A[t+2492>>2],A[t+3888>>2]=A[t+2488>>2],A[t+3892>>2]=r,P2(r=t+3208|0,q),kA(o=t+2088|0,r,s=t+3328|0),kA(t+2128|0,Q=t+3248|0,v=t+3288|0),kA(t+2168|0,v,s),kA(t+2208|0,r,Q),D2(s=t+640|0,o),b2(r=t+3048|0,e,s),kA(o=t+1928|0,r,s=t+3168|0),kA(t+1968|0,Q=t+3088|0,v=t+3128|0),kA(t+2008|0,v,s),kA(t+2048|0,r,Q),D2(t+800|0,o),o=A[4+(r=t+2280|0)>>2],A[I>>2]=A[r>>2],A[I+4>>2]=o,o=A[4+(r=t+2272|0)>>2],A[a>>2]=A[r>>2],A[a+4>>2]=o,o=A[4+(r=t+2264|0)>>2],A[_>>2]=A[r>>2],A[_+4>>2]=o,o=A[4+(r=t+2256|0)>>2],A[h>>2]=A[r>>2],A[h+4>>2]=o,o=A[4+(r=t+2296|0)>>2],A[n>>2]=A[r>>2],A[n+4>>2]=o,o=A[4+(r=t+2304|0)>>2],A[p>>2]=A[r>>2],A[p+4>>2]=o,o=A[4+(r=t+2312|0)>>2],A[D>>2]=A[r>>2],A[D+4>>2]=o,o=A[4+(r=t+2320|0)>>2],A[l>>2]=A[r>>2],A[l+4>>2]=o,r=A[t+2252>>2],A[t+3808>>2]=A[t+2248>>2],A[t+3812>>2]=r,r=A[t+2292>>2],A[t+3848>>2]=A[t+2288>>2],A[t+3852>>2]=r,o=A[4+(r=t+2360|0)>>2],A[x>>2]=A[r>>2],A[x+4>>2]=o,o=A[4+(r=t+2352|0)>>2],A[M>>2]=A[r>>2],A[M+4>>2]=o,o=A[4+(r=t+2344|0)>>2],A[b>>2]=A[r>>2],A[b+4>>2]=o,o=A[4+(r=t+2336|0)>>2],A[B>>2]=A[r>>2],A[B+4>>2]=o,r=A[t+2332>>2],A[t+3888>>2]=A[t+2328>>2],A[t+3892>>2]=r,P2(r=t+2888|0,q),kA(o=t+1768|0,r,s=t+3008|0),kA(t+1808|0,Q=t+2928|0,v=t+2968|0),kA(t+1848|0,v,s),kA(t+1888|0,r,Q),D2(s=t+960|0,o),b2(r=t+2728|0,e,s),kA(e=t+1608|0,r,o=t+2848|0),kA(t+1648|0,s=t+2768|0,Q=t+2808|0),kA(t+1688|0,Q,o),kA(t+1728|0,r,s),D2(t+1120|0,e),r=A[4+(e=t+2120|0)>>2],A[I>>2]=A[e>>2],A[I+4>>2]=r,I=A[4+(e=t+2112|0)>>2],A[a>>2]=A[e>>2],A[a+4>>2]=I,I=A[4+(e=t+2104|0)>>2],A[_>>2]=A[e>>2],A[_+4>>2]=I,I=A[4+(e=t+2096|0)>>2],A[h>>2]=A[e>>2],A[h+4>>2]=I,I=A[4+(e=t+2136|0)>>2],A[n>>2]=A[e>>2],A[n+4>>2]=I,I=A[4+(e=t+2144|0)>>2],A[p>>2]=A[e>>2],A[p+4>>2]=I,I=A[4+(e=t+2152|0)>>2],A[D>>2]=A[e>>2],A[D+4>>2]=I,I=A[4+(e=t+2160|0)>>2],A[l>>2]=A[e>>2],A[l+4>>2]=I,e=A[t+2092>>2],A[t+3808>>2]=A[t+2088>>2],A[t+3812>>2]=e,e=A[t+2132>>2],A[t+3848>>2]=A[t+2128>>2],A[t+3852>>2]=e,I=A[4+(e=t+2200|0)>>2],A[x>>2]=A[e>>2],A[x+4>>2]=I,I=A[4+(e=t+2192|0)>>2],A[M>>2]=A[e>>2],A[M+4>>2]=I,I=A[4+(e=t+2184|0)>>2],A[b>>2]=A[e>>2],A[b+4>>2]=I,I=A[4+(e=t+2176|0)>>2],A[B>>2]=A[e>>2],A[B+4>>2]=I,e=A[t+2172>>2],A[t+3888>>2]=A[t+2168>>2],A[t+3892>>2]=e,P2(e=t+2568|0,q),kA(I=t+1448|0,e,a=t+2688|0),kA(t+1488|0,_=t+2608|0,h=t+2648|0),kA(t+1528|0,h,a),kA(t+1568|0,e,_),D2(t+1280|0,I),I=0,e=0;_=(a=t+3968|0)+(e<<1)|0,h=i[g+e|0],c[_+1|0]=h>>>4,c[0|_]=15&h,a=a+((_=1|e)<<1)|0,_=i[g+_|0],c[a+1|0]=_>>>4,c[0|a]=15&_,(0|(e=e+2|0))!=32;);for(g=0;e=8+(a=(e=g)+i[0|(g=(t+3968|0)+I|0)]|0)|0,c[0|g]=a-(240&e),e=8+(a=i[g+1|0]+(e<<24>>24>>4)|0)|0,c[g+1|0]=a-(240&e),e=8+(a=i[g+2|0]+(e<<24>>24>>4)|0)|0,c[g+2|0]=a-(240&e),g=e<<24>>24>>4,(0|(I=I+3|0))!=63;);for(c[t+4031|0]=i[t+4031|0]+g,A[C+32>>2]=0,A[C+36>>2]=0,A[C+24>>2]=0,A[C+28>>2]=0,A[C+16>>2]=0,A[C+20>>2]=0,A[C+8>>2]=0,A[C+12>>2]=0,A[C>>2]=0,A[C+4>>2]=0,A[C+44>>2]=0,A[C+48>>2]=0,A[C+40>>2]=1,A[C+52>>2]=0,A[C+56>>2]=0,A[C+60>>2]=0,A[C+64>>2]=0,A[C+68>>2]=0,A[C+72>>2]=0,A[C+76>>2]=0,A[C+80>>2]=1,$0(C+84|0,0,76),D=C+120|0,l=C+80|0,B=C+40|0,h=t+3768|0,e=t+3888|0,a=t+3848|0,n=t+3728|0,I=t+3928|0,p=63;pe(t,b=t+160|0,c[(t+3968|0)+p|0]),b2(g=t+3808|0,C,t),kA(_=t+3688|0,g,I),kA(n,a,e),kA(h,e,I),P2(g,_),kA(_,g,I),kA(n,a,e),kA(h,e,I),P2(g,_),kA(_,g,I),kA(n,a,e),kA(h,e,I),P2(g,_),kA(_,g,I),kA(n,a,e),kA(h,e,I),P2(g,_),kA(C,g,I),kA(B,a,e),kA(l,e,I),kA(D,g,a),p=p-1|0;);pe(t,b,c[t+3968|0]),b2(g,C,t),kA(C,g,I),kA(B,a,e),kA(l,e,I),kA(D,g,a),W=t+4032|0}function Ce(C,g,e,t){var r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0;W=r=W-320|0,A[r+280>>2]=0,A[r+284>>2]=0,A[r+272>>2]=0,A[r+276>>2]=0,A[r+264>>2]=0,A[r+268>>2]=0,A[r+256>>2]=0,A[r+260>>2]=0,P0(_A=r+256|0,g,e),wA=i[t+16|0]|i[t+17|0]<<8|i[t+18|0]<<16|i[t+19|0]<<24,z=i[t+48|0]|i[t+49|0]<<8|i[t+50|0]<<16|i[t+51|0]<<24,a=i[t+20|0]|i[t+21|0]<<8|i[t+22|0]<<16|i[t+23|0]<<24,_=i[t+52|0]|i[t+53|0]<<8|i[t+54|0]<<16|i[t+55|0]<<24,s=i[t+24|0]|i[t+25|0]<<8|i[t+26|0]<<16|i[t+27|0]<<24,h=i[t+56|0]|i[t+57|0]<<8|i[t+58|0]<<16|i[t+59|0]<<24,n=i[t+28|0]|i[t+29|0]<<8|i[t+30|0]<<16|i[t+31|0]<<24,B=i[t+60|0]|i[t+61|0]<<8|i[t+62|0]<<16|i[t+63|0]<<24,g=i[t+36|0]|i[t+37|0]<<8|i[t+38|0]<<16|i[t+39|0]<<24,Q=i[t+84|0]|i[t+85|0]<<8|i[t+86|0]<<16|i[t+87|0]<<24,p=i[t+116|0]|i[t+117|0]<<8|i[t+118|0]<<16|i[t+119|0]<<24,sA=i[t+100|0]|i[t+101|0]<<8|i[t+102|0]<<16|i[t+103|0]<<24,nA=i[t+44|0]|i[t+45|0]<<8|i[t+46|0]<<16|i[t+47|0]<<24,l=i[t+92|0]|i[t+93|0]<<8|i[t+94|0]<<16|i[t+95|0]<<24,v=i[t+124|0]|i[t+125|0]<<8|i[t+126|0]<<16|i[t+127|0]<<24,fA=i[t+108|0]|i[t+109|0]<<8|i[t+110|0]<<16|i[t+111|0]<<24,uA=i[t+32|0]|i[t+33|0]<<8|i[t+34|0]<<16|i[t+35|0]<<24,D=i[t+80|0]|i[t+81|0]<<8|i[t+82|0]<<16|i[t+83|0]<<24,b=i[t+112|0]|i[t+113|0]<<8|i[t+114|0]<<16|i[t+115|0]<<24,vA=i[t+96|0]|i[t+97|0]<<8|i[t+98|0]<<16|i[t+99|0]<<24,M=A[r+272>>2],x=A[r+256>>2],q=A[r+260>>2],V=A[r+264>>2],$=A[r+268>>2],K=A[r+276>>2],J=A[r+284>>2],o=i[t+40|0]|i[t+41|0]<<8|i[t+42|0]<<16|i[t+43|0]<<24,I=i[t+104|0]|i[t+105|0]<<8|i[t+106|0]<<16|i[t+107|0]<<24,A[r+280>>2]=o^I&(i[t+120|0]|i[t+121|0]<<8|i[t+122|0]<<16|i[t+123|0]<<24)^A[r+280>>2]^(i[t+88|0]|i[t+89|0]<<8|i[t+90|0]<<16|i[t+91|0]<<24),A[r+272>>2]=uA^vA&b^D^M,A[r+284>>2]=nA^fA&v^l^J,A[r+276>>2]=g^sA&p^Q^K,A[r+268>>2]=fA^nA&B^n^$,A[r+264>>2]=h&o^s^V^I,A[r+260>>2]=sA^g&_^a^q,A[r+256>>2]=vA^z&uA^wA^x,$0(e+_A|0,0,32-e|0),P0(C,_A,e),e=A[r+280>>2],_A=A[r+272>>2],sA=A[r+284>>2],nA=A[r+276>>2],fA=A[r+256>>2],uA=A[r+260>>2],vA=A[r+264>>2],wA=A[r+268>>2],C=A[t+124>>2],A[r+312>>2]=A[t+120>>2],A[r+316>>2]=C,C=A[t+116>>2],A[r+304>>2]=A[t+112>>2],A[r+308>>2]=C,C=A[t+108>>2],A[r+248>>2]=A[t+104>>2],A[r+252>>2]=C,C=A[t+100>>2],A[r+240>>2]=A[t+96>>2],A[r+244>>2]=C,C=A[t+124>>2],A[r+232>>2]=A[t+120>>2],A[r+236>>2]=C,C=A[t+116>>2],A[r+224>>2]=A[t+112>>2],A[r+228>>2]=C,a0(g=r+288|0,r+240|0,r+224|0),C=A[r+300>>2],A[t+120>>2]=A[r+296>>2],A[t+124>>2]=C,C=A[r+292>>2],A[t+112>>2]=A[r+288>>2],A[t+116>>2]=C,C=A[t+92>>2],A[r+216>>2]=A[t+88>>2],A[r+220>>2]=C,C=A[t+84>>2],A[r+208>>2]=A[t+80>>2],A[r+212>>2]=C,C=A[t+108>>2],A[r+200>>2]=A[t+104>>2],A[r+204>>2]=C,C=A[t+100>>2],A[r+192>>2]=A[t+96>>2],A[r+196>>2]=C,a0(g,r+208|0,r+192|0),C=A[r+300>>2],A[t+104>>2]=A[r+296>>2],A[t+108>>2]=C,C=A[r+292>>2],A[t+96>>2]=A[r+288>>2],A[t+100>>2]=C,C=A[t+76>>2],A[r+184>>2]=A[t+72>>2],A[r+188>>2]=C,z=A[4+(C=t- -64|0)>>2],A[r+176>>2]=A[C>>2],A[r+180>>2]=z,z=A[t+92>>2],A[r+168>>2]=A[t+88>>2],A[r+172>>2]=z,z=A[t+84>>2],A[r+160>>2]=A[t+80>>2],A[r+164>>2]=z,a0(g,r+176|0,r+160|0),z=A[r+300>>2],A[t+88>>2]=A[r+296>>2],A[t+92>>2]=z,z=A[r+292>>2],A[t+80>>2]=A[r+288>>2],A[t+84>>2]=z,z=A[t+60>>2],A[r+152>>2]=A[t+56>>2],A[r+156>>2]=z,z=A[t+52>>2],A[r+144>>2]=A[t+48>>2],A[r+148>>2]=z,z=A[t+76>>2],A[r+136>>2]=A[t+72>>2],A[r+140>>2]=z,z=A[C+4>>2],A[r+128>>2]=A[C>>2],A[r+132>>2]=z,a0(g,r+144|0,r+128|0),z=A[r+300>>2],A[t+72>>2]=A[r+296>>2],A[t+76>>2]=z,z=A[r+292>>2],A[C>>2]=A[r+288>>2],A[C+4>>2]=z,z=A[t+44>>2],A[r+120>>2]=A[t+40>>2],A[r+124>>2]=z,z=A[t+36>>2],A[r+112>>2]=A[t+32>>2],A[r+116>>2]=z,z=A[t+60>>2],A[r+104>>2]=A[t+56>>2],A[r+108>>2]=z,z=A[t+52>>2],A[r+96>>2]=A[t+48>>2],A[r+100>>2]=z,a0(g,r+112|0,r+96|0),z=A[r+300>>2],A[t+56>>2]=A[r+296>>2],A[t+60>>2]=z,z=A[r+292>>2],A[t+48>>2]=A[r+288>>2],A[t+52>>2]=z,z=A[t+28>>2],A[r+88>>2]=A[t+24>>2],A[r+92>>2]=z,z=A[t+20>>2],A[r+80>>2]=A[t+16>>2],A[r+84>>2]=z,z=A[t+44>>2],A[r+72>>2]=A[t+40>>2],A[r+76>>2]=z,z=A[t+36>>2],A[r+64>>2]=A[t+32>>2],A[r+68>>2]=z,a0(g,r+80|0,r- -64|0),z=A[r+300>>2],A[t+40>>2]=A[r+296>>2],A[t+44>>2]=z,z=A[r+292>>2],A[t+32>>2]=A[r+288>>2],A[t+36>>2]=z,z=A[t+12>>2],A[r+56>>2]=A[t+8>>2],A[r+60>>2]=z,z=A[t+4>>2],A[r+48>>2]=A[t>>2],A[r+52>>2]=z,z=A[t+28>>2],A[r+40>>2]=A[t+24>>2],A[r+44>>2]=z,z=A[t+20>>2],A[r+32>>2]=A[t+16>>2],A[r+36>>2]=z,a0(g,r+48|0,r+32|0),z=A[r+300>>2],A[t+24>>2]=A[r+296>>2],A[t+28>>2]=z,z=A[r+292>>2],A[t+16>>2]=A[r+288>>2],A[t+20>>2]=z,z=A[r+316>>2],A[r+24>>2]=A[r+312>>2],A[r+28>>2]=z,z=A[r+308>>2],A[r+16>>2]=A[r+304>>2],A[r+20>>2]=z,z=A[t+12>>2],A[r+8>>2]=A[t+8>>2],A[r+12>>2]=z,z=A[t+4>>2],A[r>>2]=A[t>>2],A[r+4>>2]=z,a0(g,r+16|0,r),g=A[r+300>>2],A[t+8>>2]=A[r+296>>2],A[t+12>>2]=g,g=A[r+292>>2],A[t>>2]=A[r+288>>2],A[t+4>>2]=g,A[t+12>>2]=wA^(i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24),A[t+8>>2]=vA^(i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24),A[t+4>>2]=uA^(i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24),A[t>>2]=fA^(i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24),A[C>>2]=_A^(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),A[t+68>>2]=nA^(i[t+68|0]|i[t+69|0]<<8|i[t+70|0]<<16|i[t+71|0]<<24),A[t+72>>2]=e^(i[t+72|0]|i[t+73|0]<<8|i[t+74|0]<<16|i[t+75|0]<<24),A[t+76>>2]=sA^(i[t+76|0]|i[t+77|0]<<8|i[t+78|0]<<16|i[t+79|0]<<24),W=r+320|0}function ee(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA,iA,hA,mA,HA,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0,O=0,rA=0,cA=0;aA=w(t=(v=A[g+12>>2])<<1,a=t>>31,c0=(qA=A[g+4>>2])<<1,r=c0>>31),YA=y,q=H=A[g+8>>2],EA=(FA=w(H,D=H>>31,H,D))+aA|0,aA=y+YA|0,aA=EA>>>0>>0?aA+1|0:aA,YA=w(g0=A[g+16>>2],_=g0>>31,FA=($A=A[g>>2])<<1,o=FA>>31),aA=y+aA|0,aA=(EA=YA+EA|0)>>>0>>0?aA+1|0:aA,B=A[g+28>>2],YA=w(MA=M0(B,38),b=MA>>31,B,V=B>>31),aA=y+aA|0,aA=(EA=YA+EA|0)>>>0>>0?aA+1|0:aA,YA=EA,Q=A[g+32>>2],i0=w(u=M0(Q,19),s=u>>31,EA=(e=A[g+24>>2])<<1,EA>>31),EA=y+aA|0,EA=(YA=YA+i0|0)>>>0>>0?EA+1|0:EA,nA=A[g+36>>2],aA=w(i0=M0(nA,38),I=i0>>31,_0=(h=A[g+20>>2])<<1,p=_0>>31),g=y+EA|0,uA=aA=(aA>>>0>(YA=aA+YA|0)>>>0?g+1:g)<<1|YA>>>31,vA=EA=33554432+($=YA<<1)|0,wA=aA=EA>>>0<33554432?aA+1|0:aA,g=aA>>26,VA=(67108863&aA)<<6|EA>>>26,aA=w(c0,r,g0,_),YA=y,EA=(I0=w(H<<=1,l=H>>31,v,K=v>>31))+aA|0,aA=y+YA|0,aA=EA>>>0>>0?aA+1|0:aA,YA=(I0=w(h,M=h>>31,FA,o))+EA|0,EA=y+aA|0,EA=YA>>>0>>0?EA+1|0:EA,rA=w(u,s,I0=B<<1,J=I0>>31),aA=y+EA|0,aA=(YA=rA+YA|0)>>>0>>0?aA+1|0:aA,EA=w(i0,I,e,n=e>>31),aA=y+aA|0,g=g+(EA=(EA>>>0>(YA=EA+YA|0)>>>0?aA+1:aA)<<1|YA>>>31)|0,rA=YA=(aA=YA<<1)+VA|0,aA=g=aA>>>0>YA>>>0?g+1|0:g,iA=YA=YA+16777216|0,VA=(33554431&(aA=YA>>>0<16777216?aA+1|0:aA))<<7|YA>>>25,YA=aA>>25,g=w(t,a,v,K),aA=y,EA=w(g0,_,H,l),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=w(c0,r,_0,p),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(h0=w(FA,o,e,n))+g|0,g=y+aA|0,g=EA>>>0>>0?g+1|0:g,h0=w(u,s,Q,x=Q>>31),aA=y+g|0,aA=(EA=h0+EA|0)>>>0>>0?aA+1|0:aA,g=(h0=w(i0,I,I0,J))+EA|0,EA=y+aA|0,g=((aA=g)>>>0>>0?EA+1:EA)<<1|aA>>>31,EA=VA,VA=aA<<1,aA=g+YA|0,aA=(EA=EA+VA|0)>>>0>>0?aA+1|0:aA,h0=g=EA+33554432|0,YA=aA=g>>>0<33554432?aA+1|0:aA,A[C+24>>2]=EA-(-67108864&g),EA=w(g=M0(h,38),g>>31,h,M),VA=y,g=(aA=w(g=$A,aA=g>>31,g,aA))+EA|0,EA=y+VA|0,EA=g>>>0>>0?EA+1|0:EA,D0=w($A=M0(e,19),z=$A>>31,VA=g0<<1,_A=VA>>31),aA=y+EA|0,aA=(g=D0+g|0)>>>0>>0?aA+1|0:aA,EA=w(t,a,MA,b),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(D0=w(u,s,H,l))+g|0,g=y+aA|0,g=EA>>>0>>0?g+1|0:g,D0=w(c0,r,i0,I),aA=y+g|0,D0=aA=((EA=D0+EA|0)>>>0>>0?aA+1:aA)<<1|EA>>>31,hA=g=33554432+(sA=EA<<1)|0,mA=EA=g>>>0<33554432?aA+1|0:aA,O=(67108863&EA)<<6|g>>>26,cA=EA>>26,g=w($A,z,_0,p),aA=y,EA=w(FA,o,qA,fA=qA>>31),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(d=w(g0,_,MA,b))+g|0,g=y+aA|0,g=EA>>>0>>0?g+1|0:g,d=w(u,s,t,a),aA=y+g|0,aA=(EA=d+EA|0)>>>0>>0?aA+1|0:aA,d=(g=w(i0,I,q,D))+EA|0,EA=y+aA|0,aA=(g=(g>>>0>d>>>0?EA+1:EA)<<1|d>>>31)+cA|0,aA=(EA=(d<<=1)+O|0)>>>0>>0?aA+1|0:aA,cA=EA,d=EA=EA+16777216|0,HA=(33554431&(aA=EA>>>0<16777216?aA+1|0:aA))<<7|EA>>>25,O=aA>>25,g=w(FA,o,q,D),aA=y,EA=w(c0,r,qA,fA),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,qA=w($A,z,e,n),EA=y+aA|0,EA=(g=qA+g|0)>>>0>>0?EA+1|0:EA,qA=w(_0,p,MA,b),aA=y+EA|0,aA=(g=qA+g|0)>>>0>>0?aA+1|0:aA,EA=w(u,s,VA,_A),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(qA=w(i0,I,t,a))+g|0,g=y+aA|0,aA=(aA=(EA>>>0>>0?g+1:g)<<1|EA>>>31)+O|0,$A=g=(EA<<=1)+HA|0,aA=g>>>0>>0?aA+1|0:aA,O=g=g+33554432|0,qA=EA=g>>>0<33554432?aA+1|0:aA,A[C+8>>2]=$A-(-67108864&g),g=w(H,l,h,M),EA=y,aA=($A=w(g0,_,t,a))+g|0,g=y+EA|0,g=aA>>>0<$A>>>0?g+1|0:g,EA=($A=w(c0,r,e,n))+aA|0,aA=y+g|0,aA=EA>>>0<$A>>>0?aA+1|0:aA,g=($A=w(FA,o,B,V))+EA|0,EA=y+aA|0,EA=g>>>0<$A>>>0?EA+1|0:EA,$A=w(i0,I,Q,x),aA=y+EA|0,aA=(aA=((g=$A+g|0)>>>0<$A>>>0?aA+1:aA)<<1|g>>>31)+(EA=YA>>26)|0,g=(EA=YA=($A=g<<1)+(g=(67108863&YA)<<6|h0>>>26)|0)>>>0>>0?aA+1|0:aA,$A=aA=EA+16777216|0,YA=g=aA>>>0<16777216?g+1|0:g,A[C+28>>2]=EA-(-33554432&aA),g=w(FA,o,v,K),aA=y,EA=w(c0,r,q,D),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=w(e,n,MA,b),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(u=w(u,s,_0,p))+g|0,g=y+aA|0,g=EA>>>0>>0?g+1|0:g,aA=(u=w(i0,I,g0,_))+EA|0,EA=y+g|0,g=aA,aA=(aA>>>0>>0?EA+1:EA)<<1|aA>>>31,EA=g<<1,aA=(g=qA>>26)+aA|0,aA=(EA=EA+(qA=(67108863&qA)<<6|O>>>26)|0)>>>0>>0?aA+1|0:aA,u=g=EA+16777216|0,qA=aA=g>>>0<16777216?aA+1|0:aA,A[C+12>>2]=EA-(-33554432&g),g=w(e,n,H,l),aA=y,EA=w(g0,_,g0,_),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=w(t,a,_0,p),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=w(c0,r,I0,J),aA=y+aA|0,aA=(g=EA+g|0)>>>0>>0?aA+1|0:aA,EA=(g0=w(FA,o,Q,x))+g|0,g=y+aA|0,g=EA>>>0>>0?g+1|0:g,aA=(g0=w(aA=i0,I,i0=nA,_0=i0>>31))+EA|0,EA=y+g|0,g=aA,aA=(aA>>>0>>0?EA+1:EA)<<1|aA>>>31,EA=g<<1,aA=(g=YA>>25)+aA|0,aA=(EA=EA+(YA=(33554431&YA)<<7|$A>>>25)|0)>>>0>>0?aA+1|0:aA,g0=g=EA+33554432|0,YA=aA=g>>>0<33554432?aA+1|0:aA,A[C+32>>2]=EA-(-67108864&g),aA=qA>>25,EA=(qA=(33554431&qA)<<7|u>>>25)+($-(g=-67108864&vA)|0)|0,g=aA+(uA-((g>>>0>$>>>0)+wA|0)|0)|0,g=EA>>>0>>0?g+1|0:g,qA=EA,aA=g,g=((67108863&(aA=(EA=EA+33554432|0)>>>0<33554432?aA+1|0:aA))<<6|EA>>>26)+(MA=rA-(-33554432&iA)|0)|0,A[C+20>>2]=g,A[C+16>>2]=qA-(-67108864&EA),g=w(t,a,e,n),EA=y,aA=(qA=w(h,M,VA,_A))+g|0,g=y+EA|0,g=aA>>>0>>0?g+1|0:g,EA=(qA=w(H,l,B,V))+aA|0,aA=y+g|0,aA=EA>>>0>>0?aA+1|0:aA,g=(qA=w(c0,r,Q,x))+EA|0,EA=y+aA|0,EA=g>>>0>>0?EA+1|0:EA,qA=w(FA,o,i0,_0),aA=y+EA|0,aA=((g=qA+g|0)>>>0>>0?aA+1:aA)<<1|g>>>31,qA=g<<1,aA=aA+(EA=YA>>26)|0,g=(g=(67108863&YA)<<6|g0>>>26)>>>0>(YA=qA+g|0)>>>0?aA+1|0:aA,g=(aA=YA+16777216|0)>>>0<16777216?g+1|0:g,A[C+36>>2]=YA-(-33554432&aA),qA=cA-(-33554432&d)|0,YA=sA-(EA=-67108864&hA)|0,c0=D0-((EA>>>0>sA>>>0)+mA|0)|0,g=w((33554431&g)<<7|aA>>>25,g>>25,19,0),EA=y+c0|0,YA=aA=g+YA|0,g=g>>>0>aA>>>0?EA+1|0:EA,g=((67108863&(g=(aA=aA+33554432|0)>>>0<33554432?g+1|0:g))<<6|aA>>>26)+qA|0,A[C+4>>2]=g,A[C>>2]=YA-(-67108864&aA)}function gA(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$,K,J,z,_A,sA,nA,fA,uA,vA,wA,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0;iA=w(t=(D=A[g+12>>2])<<1,a=t>>31,D,V=D>>31),mA=y,hA=($A=w(aA=A[g+16>>2],_=aA>>31,s=(HA=A[g+8>>2])<<1,Q=s>>31))+iA|0,iA=y+mA|0,iA=hA>>>0<$A>>>0?iA+1|0:iA,mA=(g0=w(d=(h=A[g+20>>2])<<1,p=d>>31,$A=(EA=A[g+4>>2])<<1,r=$A>>31))+hA|0,hA=y+iA|0,hA=mA>>>0>>0?hA+1|0:hA,YA=w(e=A[g+24>>2],n=e>>31,g0=(VA=A[g>>2])<<1,o=g0>>31),iA=y+hA|0,iA=(mA=YA+mA|0)>>>0>>0?iA+1|0:iA,hA=mA,l=A[g+32>>2],mA=w(i0=M0(l,19),B=i0>>31,l,M=l>>31),iA=y+iA|0,iA=(hA=hA+mA|0)>>>0>>0?iA+1|0:iA,_A=A[g+36>>2],mA=w(YA=M0(_A,38),I=YA>>31,x=(v=A[g+28>>2])<<1,$=x>>31),g=y+iA|0,FA=hA=mA+hA|0,mA=hA>>>0>>0?g+1|0:g,g=w($A,r,aA,_),iA=y,hA=w(s,Q,D,V),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,qA=w(h,q=h>>31,g0,o),hA=y+iA|0,hA=(g=qA+g|0)>>>0>>0?hA+1|0:hA,qA=w(i0,B,x,$),iA=y+hA|0,iA=(g=qA+g|0)>>>0>>0?iA+1|0:iA,hA=w(YA,I,e,n),iA=y+iA|0,D0=g=hA+g|0,u=g>>>0>>0?iA+1|0:iA,iA=w($A,r,t,a),hA=y,K=g=HA,HA=w(g,H=g>>31,g,H),g=y+hA|0,g=(iA=HA+iA|0)>>>0>>0?g+1|0:g,hA=(HA=w(g0,o,aA,_))+iA|0,iA=y+g|0,iA=hA>>>0>>0?iA+1|0:iA,g=(HA=w(qA=M0(v,38),b=qA>>31,v,J=v>>31))+hA|0,hA=y+iA|0,hA=g>>>0>>0?hA+1|0:hA,g=(iA=g)+(HA=w(i0,B,g=e<<1,g>>31))|0,iA=y+hA|0,iA=g>>>0>>0?iA+1|0:iA,hA=g,g=w(YA,I,d,p),iA=y+iA|0,sA=hA=hA+g|0,nA=iA=g>>>0>hA>>>0?iA+1|0:iA,g=iA,fA=hA=hA+33554432|0,uA=g=hA>>>0<33554432?g+1|0:g,iA=(iA=g>>26)+u|0,D0=g=(hA=(67108863&g)<<6|hA>>>26)+D0|0,iA=g>>>0>>0?iA+1|0:iA,vA=g=g+16777216|0,iA=(iA=(hA=g>>>0<16777216?iA+1|0:iA)>>25)+mA|0,g=(g=(33554431&hA)<<7|g>>>25)>>>0>(hA=g+FA|0)>>>0?iA+1|0:iA,FA=iA=hA+33554432|0,HA=g=iA>>>0<33554432?g+1|0:g,A[C+24>>2]=hA-(-67108864&iA),g=w(g0,o,K,H),iA=y,mA=w($A,r,EA,c0=EA>>31),hA=y+iA|0,hA=(g=mA+g|0)>>>0>>0?hA+1|0:hA,u=w(mA=M0(e,19),h0=mA>>31,e,n),iA=y+hA|0,iA=(g=u+g|0)>>>0>>0?iA+1|0:iA,hA=(u=w(d,p,qA,b))+g|0,g=y+iA|0,g=hA>>>0>>0?g+1|0:g,_0=w(i0,B,u=aA<<1,z=u>>31),iA=y+g|0,iA=(hA=_0+hA|0)>>>0<_0>>>0?iA+1|0:iA,g=hA,hA=w(YA,I,t,a),iA=y+iA|0,I0=g=g+hA|0,_0=g>>>0>>0?iA+1|0:iA,g=w(d,p,mA,h0),iA=y,EA=w(g0,o,EA,c0),hA=y+iA|0,hA=(g=EA+g|0)>>>0>>0?hA+1|0:hA,EA=w(aA,_,qA,b),iA=y+hA|0,iA=(g=EA+g|0)>>>0>>0?iA+1|0:iA,hA=(EA=w(i0,B,t,a))+g|0,g=y+iA|0,g=hA>>>0>>0?g+1|0:g,EA=w(YA,I,K,H),iA=y+g|0,MA=hA=EA+hA|0,c0=hA>>>0>>0?iA+1|0:iA,hA=w(g=M0(h,38),g>>31,h,q),EA=y,g=VA,VA=hA,hA=w(g,iA=g>>31,g,iA),iA=y+EA|0,iA=(g=VA+hA|0)>>>0>>0?iA+1|0:iA,mA=w(mA,h0,u,z),hA=y+iA|0,hA=(g=mA+g|0)>>>0>>0?hA+1|0:hA,mA=w(t,a,qA,b),iA=y+hA|0,iA=(g=mA+g|0)>>>0>>0?iA+1|0:iA,hA=(mA=w(i0,B,s,Q))+g|0,g=y+iA|0,g=hA>>>0>>0?g+1|0:g,mA=w($A,r,YA,I),iA=y+g|0,EA=hA=mA+hA|0,VA=iA=hA>>>0>>0?iA+1|0:iA,h0=hA=hA+33554432|0,wA=iA=hA>>>0<33554432?iA+1|0:iA,g=iA>>26,iA=(67108863&iA)<<6|hA>>>26,hA=g+c0|0,c0=mA=iA+MA|0,iA=iA>>>0>mA>>>0?hA+1|0:hA,MA=hA=mA+16777216|0,mA=(33554431&(iA=hA>>>0<16777216?iA+1|0:iA))<<7|hA>>>25,iA=(iA>>25)+_0|0,iA=(hA=mA+I0|0)>>>0>>0?iA+1|0:iA,_0=g=hA+33554432|0,mA=iA=g>>>0<33554432?iA+1|0:iA,A[C+8>>2]=hA-(-67108864&g),g=w(s,Q,h,q),iA=y,hA=w(aA,_,t,a),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,hA=w($A,r,e,n),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,hA=w(g0,o,v,J),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,I0=(hA=w(YA,I,l,M))+g|0,g=y+iA|0,hA=(iA=HA>>26)+(hA=hA>>>0>I0>>>0?g+1|0:g)|0,FA=g=(HA=(67108863&HA)<<6|FA>>>26)+I0|0,iA=g>>>0>>0?hA+1|0:hA,I0=g=g+16777216|0,HA=iA=g>>>0<16777216?iA+1|0:iA,A[C+28>>2]=FA-(-33554432&g),g=w(g0,o,D,V),hA=y,iA=(H=w($A,r,K,H))+g|0,g=y+hA|0,g=iA>>>0>>0?g+1|0:g,iA=(qA=w(e,n,qA,b))+iA|0,hA=y+g|0,g=(i0=w(i0,B,d,p))+iA|0,iA=y+(iA>>>0>>0?hA+1|0:hA)|0,iA=g>>>0>>0?iA+1|0:iA,hA=w(YA,I,aA,_),iA=y+iA|0,iA=(iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA)+(hA=mA>>26)|0,g=(hA=mA=(FA=g)+(g=(67108863&mA)<<6|_0>>>26)|0)>>>0>>0?iA+1|0:iA,i0=iA=hA+16777216|0,mA=g=iA>>>0<16777216?g+1|0:g,A[C+12>>2]=hA-(-33554432&iA),g=w(e,n,s,Q),iA=y,hA=w(aA,_,aA,_),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,hA=w(t,a,d,p),iA=y+iA|0,iA=(g=hA+g|0)>>>0>>0?iA+1|0:iA,hA=(aA=w($A,r,x,$))+g|0,g=y+iA|0,g=hA>>>0>>0?g+1|0:g,iA=(aA=w(g0,o,l,M))+hA|0,hA=y+g|0,hA=iA>>>0>>0?hA+1|0:hA,g=(aA=w(g=YA,I,YA=_A,d=YA>>31))+iA|0,iA=y+hA|0,iA=g>>>0>>0?iA+1|0:iA,hA=g,iA=(g=HA>>25)+iA|0,iA=(hA=hA+(HA=(33554431&HA)<<7|I0>>>25)|0)>>>0>>0?iA+1|0:iA,aA=g=hA+33554432|0,HA=iA=g>>>0<33554432?iA+1|0:iA,A[C+32>>2]=hA-(-67108864&g),iA=mA>>25,hA=(mA=(33554431&mA)<<7|i0>>>25)+(sA-(g=-67108864&fA)|0)|0,g=iA+(nA-((g>>>0>sA>>>0)+uA|0)|0)|0,g=hA>>>0>>0?g+1|0:g,mA=hA,g=((67108863&(iA=(hA=hA+33554432|0)>>>0<33554432?g+1|0:g))<<6|hA>>>26)+(qA=D0-(-33554432&vA)|0)|0,A[C+20>>2]=g,A[C+16>>2]=mA-(-67108864&hA),g=w(t,a,e,n),hA=y,iA=(mA=w(h,q,u,z))+g|0,g=y+hA|0,g=iA>>>0>>0?g+1|0:g,hA=(mA=w(s,Q,v,J))+iA|0,iA=y+g|0,iA=hA>>>0>>0?iA+1|0:iA,g=(mA=w($A,r,l,M))+hA|0,hA=y+iA|0,hA=g>>>0>>0?hA+1|0:hA,mA=(iA=g)+(g=w(g0,o,YA,d))|0,iA=y+hA|0,iA=(g=g>>>0>mA>>>0?iA+1|0:iA)+(iA=HA>>26)|0,g=(hA=(HA=(67108863&HA)<<6|aA>>>26)+mA|0)>>>0>>0?iA+1|0:iA,g=(iA=hA+16777216|0)>>>0<16777216?g+1|0:g,A[C+36>>2]=hA-(-33554432&iA),HA=c0-(-33554432&MA)|0,mA=EA-(hA=-67108864&h0)|0,$A=VA-((hA>>>0>EA>>>0)+wA|0)|0,g=w((33554431&g)<<7|iA>>>25,g>>25,19,0),iA=y+$A|0,g=g>>>0>(hA=g+mA|0)>>>0?iA+1|0:iA,g=((67108863&(g=(iA=hA+33554432|0)>>>0<33554432?g+1|0:g))<<6|iA>>>26)+HA|0,A[C+4>>2]=g,A[C>>2]=hA-(-67108864&iA)}function te(C,g){var e,t,r,o,I,a,_,s,h,n,B=0,Q=0,p=0;W=e=W-416|0,t=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,r=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,o=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,I=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,p=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,a=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,_=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,s=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,C=A[g+92>>2],A[e+408>>2]=A[g+88>>2],A[e+412>>2]=C,C=A[g+84>>2],A[e+400>>2]=A[g+80>>2],A[e+404>>2]=C,C=A[g+76>>2],A[e+376>>2]=A[g+72>>2],A[e+380>>2]=C,B=A[4+(C=Q=g- -64|0)>>2],A[e+368>>2]=A[C>>2],A[e+372>>2]=B,C=A[g+92>>2],A[e+360>>2]=A[g+88>>2],A[e+364>>2]=C,C=A[g+84>>2],A[e+352>>2]=A[g+80>>2],A[e+356>>2]=C,a0(C=e+384|0,e+368|0,e+352|0),B=A[e+396>>2],A[g+88>>2]=A[e+392>>2],A[g+92>>2]=B,B=A[e+388>>2],A[g+80>>2]=A[e+384>>2],A[g+84>>2]=B,B=A[g+60>>2],A[e+344>>2]=A[g+56>>2],A[e+348>>2]=B,B=A[g+52>>2],A[e+336>>2]=A[g+48>>2],A[e+340>>2]=B,B=A[g+76>>2],A[e+328>>2]=A[g+72>>2],A[e+332>>2]=B,B=A[Q+4>>2],A[e+320>>2]=A[Q>>2],A[e+324>>2]=B,a0(C,e+336|0,e+320|0),B=A[e+396>>2],A[g+72>>2]=A[e+392>>2],A[g+76>>2]=B,B=A[e+388>>2],A[Q>>2]=A[e+384>>2],A[Q+4>>2]=B,B=A[g+44>>2],A[e+312>>2]=A[g+40>>2],A[e+316>>2]=B,B=A[g+36>>2],A[e+304>>2]=A[g+32>>2],A[e+308>>2]=B,B=A[g+60>>2],A[e+296>>2]=A[g+56>>2],A[e+300>>2]=B,B=A[g+52>>2],A[e+288>>2]=A[g+48>>2],A[e+292>>2]=B,a0(C,e+304|0,e+288|0),B=A[e+396>>2],A[g+56>>2]=A[e+392>>2],A[g+60>>2]=B,B=A[e+388>>2],A[g+48>>2]=A[e+384>>2],A[g+52>>2]=B,B=A[g+28>>2],A[e+280>>2]=A[g+24>>2],A[e+284>>2]=B,B=A[g+20>>2],A[e+272>>2]=A[g+16>>2],A[e+276>>2]=B,B=A[g+44>>2],A[e+264>>2]=A[g+40>>2],A[e+268>>2]=B,B=A[g+36>>2],A[e+256>>2]=A[g+32>>2],A[e+260>>2]=B,a0(C,e+272|0,e+256|0),B=A[e+396>>2],A[g+40>>2]=A[e+392>>2],A[g+44>>2]=B,B=A[e+388>>2],A[g+32>>2]=A[e+384>>2],A[g+36>>2]=B,B=A[g+12>>2],A[e+248>>2]=A[g+8>>2],A[e+252>>2]=B,B=A[g+4>>2],A[e+240>>2]=A[g>>2],A[e+244>>2]=B,B=A[g+28>>2],A[e+232>>2]=A[g+24>>2],A[e+236>>2]=B,B=A[g+20>>2],A[e+224>>2]=A[g+16>>2],A[e+228>>2]=B,a0(C,e+240|0,e+224|0),B=A[e+396>>2],A[g+24>>2]=A[e+392>>2],A[g+28>>2]=B,B=A[e+388>>2],A[g+16>>2]=A[e+384>>2],A[g+20>>2]=B,B=A[e+412>>2],A[e+216>>2]=A[e+408>>2],A[e+220>>2]=B,B=A[e+404>>2],A[e+208>>2]=A[e+400>>2],A[e+212>>2]=B,B=A[g+12>>2],A[e+200>>2]=A[g+8>>2],A[e+204>>2]=B,B=A[g+4>>2],A[e+192>>2]=A[g>>2],A[e+196>>2]=B,a0(C,e+208|0,e+192|0),B=A[e+384>>2],h=A[e+388>>2],n=A[e+392>>2],A[g+12>>2]=A[e+396>>2]^_,A[g+8>>2]=a^n,A[g+4>>2]=p^h,A[g>>2]=B^s,p=A[g+92>>2],A[e+408>>2]=A[g+88>>2],A[e+412>>2]=p,p=A[g+84>>2],A[e+400>>2]=A[g+80>>2],A[e+404>>2]=p,p=A[g+76>>2],A[e+184>>2]=A[g+72>>2],A[e+188>>2]=p,p=A[Q+4>>2],A[e+176>>2]=A[Q>>2],A[e+180>>2]=p,p=A[g+92>>2],A[e+168>>2]=A[g+88>>2],A[e+172>>2]=p,p=A[g+84>>2],A[e+160>>2]=A[g+80>>2],A[e+164>>2]=p,a0(C,e+176|0,e+160|0),p=A[e+396>>2],A[g+88>>2]=A[e+392>>2],A[g+92>>2]=p,p=A[e+388>>2],A[g+80>>2]=A[e+384>>2],A[g+84>>2]=p,p=A[g+60>>2],A[e+152>>2]=A[g+56>>2],A[e+156>>2]=p,p=A[g+52>>2],A[e+144>>2]=A[g+48>>2],A[e+148>>2]=p,p=A[g+76>>2],A[e+136>>2]=A[g+72>>2],A[e+140>>2]=p,p=A[Q+4>>2],A[e+128>>2]=A[Q>>2],A[e+132>>2]=p,a0(C,e+144|0,e+128|0),p=A[e+396>>2],A[g+72>>2]=A[e+392>>2],A[g+76>>2]=p,p=A[e+388>>2],A[Q>>2]=A[e+384>>2],A[Q+4>>2]=p,Q=A[g+44>>2],A[e+120>>2]=A[g+40>>2],A[e+124>>2]=Q,Q=A[g+36>>2],A[e+112>>2]=A[g+32>>2],A[e+116>>2]=Q,Q=A[g+60>>2],A[e+104>>2]=A[g+56>>2],A[e+108>>2]=Q,Q=A[g+52>>2],A[e+96>>2]=A[g+48>>2],A[e+100>>2]=Q,a0(C,e+112|0,e+96|0),Q=A[e+396>>2],A[g+56>>2]=A[e+392>>2],A[g+60>>2]=Q,Q=A[e+388>>2],A[g+48>>2]=A[e+384>>2],A[g+52>>2]=Q,Q=A[g+28>>2],A[e+88>>2]=A[g+24>>2],A[e+92>>2]=Q,Q=A[g+20>>2],A[e+80>>2]=A[g+16>>2],A[e+84>>2]=Q,Q=A[g+44>>2],A[e+72>>2]=A[g+40>>2],A[e+76>>2]=Q,Q=A[g+36>>2],A[e+64>>2]=A[g+32>>2],A[e+68>>2]=Q,a0(C,e+80|0,e- -64|0),Q=A[e+396>>2],A[g+40>>2]=A[e+392>>2],A[g+44>>2]=Q,Q=A[e+388>>2],A[g+32>>2]=A[e+384>>2],A[g+36>>2]=Q,Q=A[g+12>>2],A[e+56>>2]=A[g+8>>2],A[e+60>>2]=Q,Q=A[g+4>>2],A[e+48>>2]=A[g>>2],A[e+52>>2]=Q,Q=A[g+28>>2],A[e+40>>2]=A[g+24>>2],A[e+44>>2]=Q,Q=A[g+20>>2],A[e+32>>2]=A[g+16>>2],A[e+36>>2]=Q,a0(C,e+48|0,e+32|0),Q=A[e+396>>2],A[g+24>>2]=A[e+392>>2],A[g+28>>2]=Q,Q=A[e+388>>2],A[g+16>>2]=A[e+384>>2],A[g+20>>2]=Q,Q=A[e+412>>2],A[e+24>>2]=A[e+408>>2],A[e+28>>2]=Q,Q=A[e+404>>2],A[e+16>>2]=A[e+400>>2],A[e+20>>2]=Q,Q=A[g+12>>2],A[e+8>>2]=A[g+8>>2],A[e+12>>2]=Q,Q=A[g+4>>2],A[e>>2]=A[g>>2],A[e+4>>2]=Q,a0(C,e+16|0,e),C=A[e+384>>2],Q=A[e+388>>2],p=A[e+392>>2],A[g+12>>2]=A[e+396>>2]^I,A[g+8>>2]=p^o,A[g+4>>2]=Q^r,A[g>>2]=C^t,W=e+416|0}function re(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D=0,b=0,M=0;for(W=t=W-288|0,Q=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,p=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,l=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,s=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,h=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,n=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,v=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=e+112|0,C=33620224^(B=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),A[g>>2]=C,A[(a=e+96|0)>>2]=1427652059^B,A[(_=e+80|0)>>2]=C,b=B^v,A[(C=e- -64|0)>>2]=b,A[e+56>>2]=1110511904,A[e+60>>2]=-584534669,A[(r=e+48|0)>>2]=1427652059,A[r+4>>2]=-248528275,A[e+40>>2]=1496785429,A[e+44>>2]=1652156816,A[(o=e+32|0)>>2]=33620224,A[o+4>>2]=218629379,A[e+24>>2]=1110511904,A[e+28>>2]=-584534669,A[(I=e+16|0)>>2]=1427652059,A[I+4>>2]=-248528275,A[e>>2]=b,b=1652156816^n,A[e+124>>2]=b,M=1496785429^h,A[e+120>>2]=M,D=218629379^s,A[e+116>>2]=D,A[e+108>>2]=-584534669^n,A[e+104>>2]=1110511904^h,A[e+100>>2]=-248528275^s,A[e+92>>2]=b,A[e+88>>2]=M,A[e+84>>2]=D,b=n^l,A[e+76>>2]=b,M=h^p,A[e+72>>2]=M,D=s^Q,A[e+68>>2]=D,A[e+12>>2]=b,A[e+8>>2]=M,A[e+4>>2]=D,M=0;b=A[g+12>>2],A[t+280>>2]=A[g+8>>2],A[t+284>>2]=b,b=A[g+4>>2],A[t+272>>2]=A[g>>2],A[t+276>>2]=b,b=A[a+12>>2],A[t+248>>2]=A[a+8>>2],A[t+252>>2]=b,b=A[a+4>>2],A[t+240>>2]=A[a>>2],A[t+244>>2]=b,b=A[g+12>>2],A[t+232>>2]=A[g+8>>2],A[t+236>>2]=b,b=A[g+4>>2],A[t+224>>2]=A[g>>2],A[t+228>>2]=b,a0(b=t+256|0,t+240|0,t+224|0),D=A[t+268>>2],A[g+8>>2]=A[t+264>>2],A[g+12>>2]=D,D=A[t+260>>2],A[g>>2]=A[t+256>>2],A[g+4>>2]=D,D=A[_+12>>2],A[t+216>>2]=A[_+8>>2],A[t+220>>2]=D,D=A[_+4>>2],A[t+208>>2]=A[_>>2],A[t+212>>2]=D,D=A[a+12>>2],A[t+200>>2]=A[a+8>>2],A[t+204>>2]=D,D=A[a+4>>2],A[t+192>>2]=A[a>>2],A[t+196>>2]=D,a0(b,t+208|0,t+192|0),D=A[t+268>>2],A[a+8>>2]=A[t+264>>2],A[a+12>>2]=D,D=A[t+260>>2],A[a>>2]=A[t+256>>2],A[a+4>>2]=D,D=A[C+12>>2],A[t+184>>2]=A[C+8>>2],A[t+188>>2]=D,D=A[C+4>>2],A[t+176>>2]=A[C>>2],A[t+180>>2]=D,D=A[_+12>>2],A[t+168>>2]=A[_+8>>2],A[t+172>>2]=D,D=A[_+4>>2],A[t+160>>2]=A[_>>2],A[t+164>>2]=D,a0(b,t+176|0,t+160|0),D=A[t+268>>2],A[_+8>>2]=A[t+264>>2],A[_+12>>2]=D,D=A[t+260>>2],A[_>>2]=A[t+256>>2],A[_+4>>2]=D,D=A[r+12>>2],A[t+152>>2]=A[r+8>>2],A[t+156>>2]=D,D=A[r+4>>2],A[t+144>>2]=A[r>>2],A[t+148>>2]=D,D=A[C+12>>2],A[t+136>>2]=A[C+8>>2],A[t+140>>2]=D,D=A[C+4>>2],A[t+128>>2]=A[C>>2],A[t+132>>2]=D,a0(b,t+144|0,t+128|0),D=A[t+268>>2],A[C+8>>2]=A[t+264>>2],A[C+12>>2]=D,D=A[t+260>>2],A[C>>2]=A[t+256>>2],A[C+4>>2]=D,D=A[o+12>>2],A[t+120>>2]=A[o+8>>2],A[t+124>>2]=D,D=A[o+4>>2],A[t+112>>2]=A[o>>2],A[t+116>>2]=D,D=A[r+12>>2],A[t+104>>2]=A[r+8>>2],A[t+108>>2]=D,D=A[r+4>>2],A[t+96>>2]=A[r>>2],A[t+100>>2]=D,a0(b,t+112|0,t+96|0),D=A[t+268>>2],A[r+8>>2]=A[t+264>>2],A[r+12>>2]=D,D=A[t+260>>2],A[r>>2]=A[t+256>>2],A[r+4>>2]=D,D=A[I+12>>2],A[t+88>>2]=A[I+8>>2],A[t+92>>2]=D,D=A[I+4>>2],A[t+80>>2]=A[I>>2],A[t+84>>2]=D,D=A[o+12>>2],A[t+72>>2]=A[o+8>>2],A[t+76>>2]=D,D=A[o+4>>2],A[t+64>>2]=A[o>>2],A[t+68>>2]=D,a0(b,t+80|0,t- -64|0),D=A[t+268>>2],A[o+8>>2]=A[t+264>>2],A[o+12>>2]=D,D=A[t+260>>2],A[o>>2]=A[t+256>>2],A[o+4>>2]=D,D=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=D,D=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=D,D=A[I+12>>2],A[t+40>>2]=A[I+8>>2],A[t+44>>2]=D,D=A[I+4>>2],A[t+32>>2]=A[I>>2],A[t+36>>2]=D,a0(b,t+48|0,t+32|0),D=A[t+268>>2],A[I+8>>2]=A[t+264>>2],A[I+12>>2]=D,D=A[t+260>>2],A[I>>2]=A[t+256>>2],A[I+4>>2]=D,D=A[t+284>>2],A[t+24>>2]=A[t+280>>2],A[t+28>>2]=D,D=A[t+276>>2],A[t+16>>2]=A[t+272>>2],A[t+20>>2]=D,D=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=D,D=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=D,a0(b,t+16|0,t),b=A[t+268>>2],A[e+8>>2]=A[t+264>>2],A[e+12>>2]=b,b=A[t+260>>2],A[e>>2]=A[t+256>>2],A[e+4>>2]=b,A[e+12>>2]=(i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24)^l,A[e+8>>2]=(i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24)^p,A[e+4>>2]=(i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24)^Q,A[e>>2]=(i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24)^v,A[C>>2]=(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24)^B,A[e+68>>2]=(i[e+68|0]|i[e+69|0]<<8|i[e+70|0]<<16|i[e+71|0]<<24)^s,A[e+72>>2]=(i[e+72|0]|i[e+73|0]<<8|i[e+74|0]<<16|i[e+75|0]<<24)^h,A[e+76>>2]=(i[e+76|0]|i[e+77|0]<<8|i[e+78|0]<<16|i[e+79|0]<<24)^n,(0|(M=M+1|0))!=10;);W=t+288|0}function Jg(C,g){var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0;if(W=e=W-48|0,!((t=n0(C))||(t=-26,g-3>>>0<4294967294))){o=A[C+44>>2],t=A[C+48>>2],A[e+4>>2]=0,r=A[C+40>>2],A[e+32>>2]=t,A[e+16>>2]=-1,A[e+12>>2]=r,t=((s=(r=t<<3)>>>0>>0?o:r)>>>0)/((o=t<<2)>>>0)|0,A[e+24>>2]=t,A[e+28>>2]=t<<2,A[e+20>>2]=M0(t,o),t=A[C+52>>2],A[e+40>>2]=g,A[e+36>>2]=t,n=g=W,W=t=g-1152&-64,g=-25;A:{if(!(!(o=e+4|0)|!C)&&(r=r1(A[o+20>>2]<<3),A[o+4>>2]=r,g=-22,r)){g:{if((g=A[o+16>>2])&&(((r=g<<10)>>>0)/(g>>>0)|0)==1024&&(g=r1(12),A[o>>2]=g,g)){if(A[g>>2]=0,A[g+4>>2]=0,g=m(t+128|0,r),A[9404]=g,g)A[t+128>>2]=0;else if(g=A[t+128>>2])break g;M2(A[o>>2]),A[o>>2]=0}ar(o,A[C+56>>2]),W=n,g=-22;break A}if(A[A[o>>2]>>2]=g,A[A[o>>2]+4>>2]=g,A[A[o>>2]+8>>2]=r,B=A[o+36>>2],sg(g=t+128|0,0,0,64),A[t+124>>2]=A[C+48>>2],q2(g,r=t+124|0,4,0),A[t+124>>2]=A[C+4>>2],q2(g,r,4,0),A[t+124>>2]=A[C+44>>2],q2(g,r,4,0),A[t+124>>2]=A[C+40>>2],q2(g,r,4,0),A[t+124>>2]=19,q2(g,r,4,0),A[t+124>>2]=B,q2(g,r,4,0),A[t+124>>2]=A[C+12>>2],q2(g,r,4,0),(r=A[C+8>>2])&&(q2(g,r,A[C+12>>2],0),1&c[C+56|0]&&(y0(A[C+8>>2],A[C+12>>2]),A[C+12>>2]=0)),A[t+124>>2]=A[C+20>>2],q2(g=t+128|0,t+124|0,4,0),(r=A[C+16>>2])&&q2(g,r,A[C+20>>2],0),A[t+124>>2]=A[C+28>>2],q2(g=t+128|0,t+124|0,4,0),(r=A[C+24>>2])&&(q2(g,r,A[C+28>>2],0),2&i[C+56|0]&&(y0(A[C+24>>2],A[C+28>>2]),A[C+28>>2]=0)),A[t+124>>2]=A[C+36>>2],q2(g=t+128|0,t+124|0,4,0),(r=A[C+32>>2])&&q2(g,r,A[C+36>>2],0),lC(t+128|0,t+48|0,64),y0(t+112|0,8),A[o+28>>2])for(r=0;;){for(A[t+112>>2]=0,A[t+116>>2]=r,sC(t+128|0,1024,t+48|0,72),B=A[A[o>>2]+4>>2]+(M0(A[o+24>>2],r)<<10)|0,g=0;I=(_=g<<3)+B|0,a=A[4+(h=(s=t+128|0)+_|0)>>2],A[I>>2]=A[h>>2],A[I+4>>2]=a,h=(I=8|_)+B|0,a=A[4+(I=I+s|0)>>2],A[h>>2]=A[I>>2],A[h+4>>2]=a,h=(I=16|_)+B|0,a=A[4+(I=I+s|0)>>2],A[h>>2]=A[I>>2],A[h+4>>2]=a,I=(_|=24)+B|0,h=A[4+(_=_+s|0)>>2],A[I>>2]=A[_>>2],A[I+4>>2]=h,(0|(g=g+4|0))!=128;);for(A[t+112>>2]=1,sC(s,1024,t+48|0,72),B=1024+(A[A[o>>2]+4>>2]+(M0(A[o+24>>2],r)<<10)|0)|0,g=0;I=(_=g<<3)+B|0,a=A[4+(h=(s=t+128|0)+_|0)>>2],A[I>>2]=A[h>>2],A[I+4>>2]=a,h=(I=8|_)+B|0,a=A[4+(I=I+s|0)>>2],A[h>>2]=A[I>>2],A[h+4>>2]=a,h=(I=16|_)+B|0,a=A[4+(I=I+s|0)>>2],A[h>>2]=A[I>>2],A[h+4>>2]=a,I=(_|=24)+B|0,s=A[4+(_=_+s|0)>>2],A[I>>2]=A[_>>2],A[I+4>>2]=s,(0|(g=g+4|0))!=128;);if(!((r=r+1|0)>>>0>2]))break}y0(t+128|0,1024),y0(t+48|0,72),g=0}W=n}if(t=g,!g){if(A[e+12>>2])for(;;){if(W=g=W-80|0,!(!(o=e+4|0)|!A[o+28>>2])){for(c[g+72|0]=0,A[g+64>>2]=p,t=0;A[g+76>>2]=0,r=A[g+76>>2],A[g+56>>2]=A[g+72>>2],A[g+60>>2]=r,A[g+68>>2]=t,r=A[g+68>>2],A[g+48>>2]=A[g+64>>2],A[g+52>>2]=r,Ug(o,g+48|0),(t=t+1|0)>>>0<(r=A[o+28>>2])>>>0;);if(c[g+72|0]=1,r){for(t=0;A[g+76>>2]=0,r=A[g+76>>2],A[g+40>>2]=A[g+72>>2],A[g+44>>2]=r,A[g+68>>2]=t,r=A[g+68>>2],A[g+32>>2]=A[g+64>>2],A[g+36>>2]=r,Ug(o,g+32|0),(t=t+1|0)>>>0<(r=A[o+28>>2])>>>0;);if(c[g+72|0]=2,r){for(t=0;A[g+76>>2]=0,r=A[g+76>>2],A[g+24>>2]=A[g+72>>2],A[g+28>>2]=r,A[g+68>>2]=t,r=A[g+68>>2],A[g+16>>2]=A[g+64>>2],A[g+20>>2]=r,Ug(o,g+16|0),(t=t+1|0)>>>0<(r=A[o+28>>2])>>>0;);if(c[g+72|0]=3,r)for(t=0;A[g+76>>2]=0,r=A[g+76>>2],A[g+8>>2]=A[g+72>>2],A[g+12>>2]=r,A[g+68>>2]=t,r=A[g+68>>2],A[g>>2]=A[g+64>>2],A[g+4>>2]=r,Ug(o,g),(t=t+1|0)>>>0>2];);}}}if(W=g+80|0,!((p=p+1|0)>>>0>2]))break}if(W=g=W-2048|0,!(!C|!(t=e+4|0))){if(p=A[t+24>>2],P0(g+1024|0,I=(A[A[t>>2]+4>>2]+(p<<10)|0)-1024|0,1024),(h=A[t+28>>2])>>>0>=2)for(B=1;;){for(o=I+(M0(B,p)<<10)|0,_=0;a=A[(n=(r=_<<3)+(s=g+1024|0)|0)>>2],l=A[(Q=r+o|0)>>2],Q=A[n+4>>2]^A[Q+4>>2],A[n>>2]=a^l,A[n+4>>2]=Q,Q=A[(n=(a=8|r)+s|0)>>2],l=A[(a=o+a|0)>>2],a=A[n+4>>2]^A[a+4>>2],A[n>>2]=Q^l,A[n+4>>2]=a,Q=A[(n=(a=16|r)+s|0)>>2],l=A[(a=o+a|0)>>2],a=A[n+4>>2]^A[a+4>>2],A[n>>2]=Q^l,A[n+4>>2]=a,n=A[(r=(n=s)+(s=24|r)|0)>>2],a=A[(s=o+s|0)>>2],s=A[r+4>>2]^A[s+4>>2],A[r>>2]=a^n,A[r+4>>2]=s,(0|(_=_+4|0))!=128;);if((0|h)==(0|(B=B+1|0)))break}o=P0(g,g+1024|0,1024),sC(A[C>>2],A[C+4>>2],o,1024),y0(o+1024|0,1024),y0(o,1024),ar(t,A[C+56>>2])}W=g+2048|0,t=0}}return W=e+48|0,t}function Rg(C,g,e,t,r){var o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0;for(o=W+-64|0,I=A[C+60>>2],a=A[C+56>>2],EA=A[C+52>>2],aA=A[C+48>>2],_=A[C+44>>2],s=A[C+40>>2],h=A[C+36>>2],n=A[C+32>>2],B=A[C+28>>2],Q=A[C+24>>2],p=A[C+20>>2],l=A[C+16>>2],v=A[C+12>>2],D=A[C+8>>2],b=A[C+4>>2],M=A[C>>2];;){if(!r&t>>>0>63|r)x=e;else{if(A[o+56>>2]=0,A[o+60>>2]=0,A[o+48>>2]=0,A[o+52>>2]=0,A[o+40>>2]=0,A[o+44>>2]=0,A[o+32>>2]=0,A[o+36>>2]=0,A[o+24>>2]=0,A[o+28>>2]=0,A[o+16>>2]=0,A[o+20>>2]=0,A[o+8>>2]=0,A[o+12>>2]=0,A[o>>2]=0,A[o+4>>2]=0,V=0,t|r)for(;c[V+o|0]=i[g+V|0],!r&(V=V+1|0)>>>0>>0|r;);g=x=o,i0=e}for(YA=20,q=M,nA=b,fA=D,wA=v,V=l,e=p,K=Q,J=B,z=n,hA=h,uA=s,$=I,mA=a,iA=EA,vA=aA,_A=_;sA=V,q=pA((V=q+V|0)^vA,16),sA=vA=pA(sA^(z=q+z|0),12),vA=pA((HA=V+vA|0)^q,8),V=pA(sA^(z=vA+z|0),7),$=pA((q=J+wA|0)^$,16),J=pA((_A=$+_A|0)^J,12),wA=pA((fA=K+fA|0)^mA,16),K=pA((uA=wA+uA|0)^K,12),mA=(qA=q+J|0)+V|0,$A=pA((fA=K+fA|0)^wA,8),q=pA(mA^$A,16),wA=pA((nA=e+nA|0)^iA,16),e=pA((hA=wA+hA|0)^e,12),sA=V,iA=pA((nA=e+nA|0)^wA,8),sA=pA(sA^(V=(g0=iA+hA|0)+q|0),12),mA=pA(q^(wA=sA+mA|0),8),V=pA((hA=mA+V|0)^sA,7),sA=z,z=fA,q=pA($^qA,8),fA=pA(($=q+_A|0)^J,7),iA=pA((z=z+fA|0)^iA,16),_A=pA((J=sA+iA|0)^fA,12),iA=pA(iA^(fA=_A+z|0),8),J=pA((z=J+iA|0)^_A,7),_A=$,$=nA,nA=pA((uA=uA+$A|0)^K,7),K=_A+(vA=pA(($=$+nA|0)^vA,16))|0,_A=$,$=pA(K^nA,12),vA=pA(vA^(nA=_A+$|0),8),K=pA((_A=K+vA|0)^$,7),sA=uA,$=q,q=pA(e^g0,7),$=pA($^(uA=q+HA|0),16),HA=pA((e=sA+$|0)^q,12),$=pA($^(q=HA+uA|0),8),e=pA((uA=e+$|0)^HA,7),YA=YA-2|0;);if(YA=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,HA=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,qA=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,$A=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g0=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,sA=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,u=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,d=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,H=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,FA=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,VA=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,c0=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,_0=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,I0=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,h0=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,q=q+M^(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),c[0|x]=q,c[x+1|0]=q>>>8,c[x+2|0]=q>>>16,c[x+3|0]=q>>>24,q=$+I^h0,c[x+60|0]=q,c[x+61|0]=q>>>8,c[x+62|0]=q>>>16,c[x+63|0]=q>>>24,q=mA+a^I0,c[x+56|0]=q,c[x+57|0]=q>>>8,c[x+58|0]=q>>>16,c[x+59|0]=q>>>24,q=iA+EA^_0,c[x+52|0]=q,c[x+53|0]=q>>>8,c[x+54|0]=q>>>16,c[x+55|0]=q>>>24,q=vA+aA^c0,c[x+48|0]=q,c[x+49|0]=q>>>8,c[x+50|0]=q>>>16,c[x+51|0]=q>>>24,q=_A+_^VA,c[x+44|0]=q,c[x+45|0]=q>>>8,c[x+46|0]=q>>>16,c[x+47|0]=q>>>24,q=uA+s^FA,c[x+40|0]=q,c[x+41|0]=q>>>8,c[x+42|0]=q>>>16,c[x+43|0]=q>>>24,q=hA+h^H,c[x+36|0]=q,c[x+37|0]=q>>>8,c[x+38|0]=q>>>16,c[x+39|0]=q>>>24,q=z+n^d,c[x+32|0]=q,c[x+33|0]=q>>>8,c[x+34|0]=q>>>16,c[x+35|0]=q>>>24,J=J+B^u,c[x+28|0]=J,c[x+29|0]=J>>>8,c[x+30|0]=J>>>16,c[x+31|0]=J>>>24,K=sA^K+Q,c[x+24|0]=K,c[x+25|0]=K>>>8,c[x+26|0]=K>>>16,c[x+27|0]=K>>>24,e=g0^e+p,c[x+20|0]=e,c[x+21|0]=e>>>8,c[x+22|0]=e>>>16,c[x+23|0]=e>>>24,e=$A^V+l,c[x+16|0]=e,c[x+17|0]=e>>>8,c[x+18|0]=e>>>16,c[x+19|0]=e>>>24,e=qA^wA+v,c[x+12|0]=e,c[x+13|0]=e>>>8,c[x+14|0]=e>>>16,c[x+15|0]=e>>>24,e=HA^fA+D,c[x+8|0]=e,c[x+9|0]=e>>>8,c[x+10|0]=e>>>16,c[x+11|0]=e>>>24,e=YA^nA+b,c[x+4|0]=e,c[x+5|0]=e>>>8,c[x+6|0]=e>>>16,c[x+7|0]=e>>>24,EA=!(aA=aA+1|0)+EA|0,!r&t>>>0<=64){if(!(!(t|r)|!r&t>>>0>63|!!(0|r)))for(V=0;c[V+i0|0]=i[x+V|0],t>>>0>(V=V+1|0)>>>0;);A[C+52>>2]=EA,A[C+48>>2]=aA;break}g=g- -64|0,e=x- -64|0,r=r-1|0,r=(t=t+-64|0)>>>0<4294967232?r+1|0:r}}function e1(C,g){g|=0;var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0;return W=e=W-704|0,t=80+((r=A[72+(C|=0)>>2]>>>3&127)+C|0)|0,r>>>0>=112?(P0(t,35056,128-r|0),Yg(C,r=C+80|0,e,e+640|0),$0(r,0,112)):P0(t,35056,112-r|0),_=(o=A[C+64>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+68>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[C+192|0]=t,c[C+193|0]=t>>>8,c[C+194|0]=t>>>16,c[C+195|0]=t>>>24,t=r|I|_,r=0,r|=t,c[C+196|0]=r,c[C+197|0]=r>>>8,c[C+198|0]=r>>>16,c[C+199|0]=r>>>24,_=(o=A[C+72>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+76>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[C+200|0]=t,c[C+201|0]=t>>>8,c[C+202|0]=t>>>16,c[C+203|0]=t>>>24,t=r|I|_,r=0,r|=t,c[C+204|0]=r,c[C+205|0]=r>>>8,c[C+206|0]=r>>>16,c[C+207|0]=r>>>24,Yg(C,C+80|0,e,e+640|0),_=(o=A[C>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+4>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[0|g]=t,c[g+1|0]=t>>>8,c[g+2|0]=t>>>16,c[g+3|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+4|0]=r,c[g+5|0]=r>>>8,c[g+6|0]=r>>>16,c[g+7|0]=r>>>24,_=(o=A[C+8>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+12>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+8|0]=t,c[g+9|0]=t>>>8,c[g+10|0]=t>>>16,c[g+11|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+12|0]=r,c[g+13|0]=r>>>8,c[g+14|0]=r>>>16,c[g+15|0]=r>>>24,_=(o=A[C+16>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+20>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+16|0]=t,c[g+17|0]=t>>>8,c[g+18|0]=t>>>16,c[g+19|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+20|0]=r,c[g+21|0]=r>>>8,c[g+22|0]=r>>>16,c[g+23|0]=r>>>24,_=(o=A[C+24>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+28>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+24|0]=t,c[g+25|0]=t>>>8,c[g+26|0]=t>>>16,c[g+27|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+28|0]=r,c[g+29|0]=r>>>8,c[g+30|0]=r>>>16,c[g+31|0]=r>>>24,_=(o=A[C+32>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+36>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+32|0]=t,c[g+33|0]=t>>>8,c[g+34|0]=t>>>16,c[g+35|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+36|0]=r,c[g+37|0]=r>>>8,c[g+38|0]=r>>>16,c[g+39|0]=r>>>24,_=(o=A[C+40>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+44>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+40|0]=t,c[g+41|0]=t>>>8,c[g+42|0]=t>>>16,c[g+43|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+44|0]=r,c[g+45|0]=r>>>8,c[g+46|0]=r>>>16,c[g+47|0]=r>>>24,_=(o=A[C+48>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,s=I<<24,I=(a=-16777216&o)>>>24|0,t=s|a<<8|-16777216&((255&(t=A[C+52>>2]))<<24|o>>>8)|16711680&((16777215&t)<<8|o>>>24)|t>>>8&65280|t>>>24,c[g+48|0]=t,c[g+49|0]=t>>>8,c[g+50|0]=t>>>16,c[g+51|0]=t>>>24,t=r|I|_,r=0,r|=t,c[g+52|0]=r,c[g+53|0]=r>>>8,c[g+54|0]=r>>>16,c[g+55|0]=r>>>24,_=(o=A[C+56>>2])<<24|(65280&o)<<8,r=(I=16711680&o)>>>8|0,t=g,s=I<<24,I=(a=-16777216&o)>>>24|0,g=s|a<<8|-16777216&((255&(g=A[C+60>>2]))<<24|o>>>8)|16711680&((16777215&g)<<8|o>>>24)|g>>>8&65280|g>>>24,c[t+56|0]=g,c[t+57|0]=g>>>8,c[t+58|0]=g>>>16,c[t+59|0]=g>>>24,g=r|I|_,g|=r=0,c[t+60|0]=g,c[t+61|0]=g>>>8,c[t+62|0]=g>>>16,c[t+63|0]=g>>>24,y0(e,704),y0(C,208),W=e+704|0,0}function ae(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q,V,$=0;W=t=W-224|0,_=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,s=i[0|($=e- -64|0)]|i[$+1|0]<<8|i[$+2|0]<<16|i[$+3|0]<<24,h=i[e+80|0]|i[e+81|0]<<8|i[e+82|0]<<16|i[e+83|0]<<24,n=i[e+32|0]|i[e+33|0]<<8|i[e+34|0]<<16|i[e+35|0]<<24,B=i[e+48|0]|i[e+49|0]<<8|i[e+50|0]<<16|i[e+51|0]<<24,r=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,Q=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,p=i[e+68|0]|i[e+69|0]<<8|i[e+70|0]<<16|i[e+71|0]<<24,l=i[e+84|0]|i[e+85|0]<<8|i[e+86|0]<<16|i[e+87|0]<<24,v=i[e+36|0]|i[e+37|0]<<8|i[e+38|0]<<16|i[e+39|0]<<24,D=i[e+52|0]|i[e+53|0]<<8|i[e+54|0]<<16|i[e+55|0]<<24,o=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,b=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,M=i[e+72|0]|i[e+73|0]<<8|i[e+74|0]<<16|i[e+75|0]<<24,x=i[e+88|0]|i[e+89|0]<<8|i[e+90|0]<<16|i[e+91|0]<<24,q=i[e+40|0]|i[e+41|0]<<8|i[e+42|0]<<16|i[e+43|0]<<24,V=i[e+56|0]|i[e+57|0]<<8|i[e+58|0]<<16|i[e+59|0]<<24,I=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^(i[e+44|0]|i[e+45|0]<<8|i[e+46|0]<<16|i[e+47|0]<<24)&(i[e+60|0]|i[e+61|0]<<8|i[e+62|0]<<16|i[e+63|0]<<24)^(i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24)^(i[e+92|0]|i[e+93|0]<<8|i[e+94|0]<<16|i[e+95|0]<<24)^(i[e+76|0]|i[e+77|0]<<8|i[e+78|0]<<16|i[e+79|0]<<24),c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=q&V^M^x^b^o,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=v&D^p^l^Q^r,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=n&B^_^s^h^I,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,C=A[e+92>>2],A[t+216>>2]=A[e+88>>2],A[t+220>>2]=C,C=A[e+84>>2],A[t+208>>2]=A[e+80>>2],A[t+212>>2]=C,C=A[e+76>>2],A[t+184>>2]=A[e+72>>2],A[t+188>>2]=C,C=A[$+4>>2],A[t+176>>2]=A[$>>2],A[t+180>>2]=C,C=A[e+92>>2],A[t+168>>2]=A[e+88>>2],A[t+172>>2]=C,C=A[e+84>>2],A[t+160>>2]=A[e+80>>2],A[t+164>>2]=C,a0(C=t+192|0,t+176|0,t+160|0),g=A[t+204>>2],A[e+88>>2]=A[t+200>>2],A[e+92>>2]=g,g=A[t+196>>2],A[e+80>>2]=A[t+192>>2],A[e+84>>2]=g,g=A[e+60>>2],A[t+152>>2]=A[e+56>>2],A[t+156>>2]=g,g=A[e+52>>2],A[t+144>>2]=A[e+48>>2],A[t+148>>2]=g,g=A[e+76>>2],A[t+136>>2]=A[e+72>>2],A[t+140>>2]=g,g=A[$+4>>2],A[t+128>>2]=A[$>>2],A[t+132>>2]=g,a0(C,t+144|0,t+128|0),g=A[t+204>>2],A[e+72>>2]=A[t+200>>2],A[e+76>>2]=g,g=A[t+196>>2],A[$>>2]=A[t+192>>2],A[$+4>>2]=g,g=A[e+44>>2],A[t+120>>2]=A[e+40>>2],A[t+124>>2]=g,g=A[e+36>>2],A[t+112>>2]=A[e+32>>2],A[t+116>>2]=g,g=A[e+60>>2],A[t+104>>2]=A[e+56>>2],A[t+108>>2]=g,g=A[e+52>>2],A[t+96>>2]=A[e+48>>2],A[t+100>>2]=g,a0(C,t+112|0,t+96|0),g=A[t+204>>2],A[e+56>>2]=A[t+200>>2],A[e+60>>2]=g,g=A[t+196>>2],A[e+48>>2]=A[t+192>>2],A[e+52>>2]=g,g=A[e+28>>2],A[t+88>>2]=A[e+24>>2],A[t+92>>2]=g,g=A[e+20>>2],A[t+80>>2]=A[e+16>>2],A[t+84>>2]=g,g=A[e+44>>2],A[t+72>>2]=A[e+40>>2],A[t+76>>2]=g,g=A[e+36>>2],A[t+64>>2]=A[e+32>>2],A[t+68>>2]=g,a0(C,t+80|0,t- -64|0),g=A[t+204>>2],A[e+40>>2]=A[t+200>>2],A[e+44>>2]=g,g=A[t+196>>2],A[e+32>>2]=A[t+192>>2],A[e+36>>2]=g,g=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=g,g=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=g,g=A[e+28>>2],A[t+40>>2]=A[e+24>>2],A[t+44>>2]=g,g=A[e+20>>2],A[t+32>>2]=A[e+16>>2],A[t+36>>2]=g,a0(C,t+48|0,t+32|0),g=A[t+204>>2],A[e+24>>2]=A[t+200>>2],A[e+28>>2]=g,g=A[t+196>>2],A[e+16>>2]=A[t+192>>2],A[e+20>>2]=g,g=A[t+220>>2],A[t+24>>2]=A[t+216>>2],A[t+28>>2]=g,g=A[t+212>>2],A[t+16>>2]=A[t+208>>2],A[t+20>>2]=g,g=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=g,g=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=g,a0(C,t+16|0,t),C=A[t+192>>2],g=A[t+196>>2],$=A[t+200>>2],A[e+12>>2]=a^A[t+204>>2],A[e+8>>2]=$^o,A[e+4>>2]=g^r,A[e>>2]=C^I,W=t+224|0}function ie(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b=0,M=0,x=0,q=0,V=0;W=t=W-224|0,x=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,M=i[0|(b=e- -64|0)]|i[b+1|0]<<8|i[b+2|0]<<16|i[b+3|0]<<24,r=i[e+80|0]|i[e+81|0]<<8|i[e+82|0]<<16|i[e+83|0]<<24,o=i[e+32|0]|i[e+33|0]<<8|i[e+34|0]<<16|i[e+35|0]<<24,I=i[e+48|0]|i[e+49|0]<<8|i[e+50|0]<<16|i[e+51|0]<<24,q=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,a=i[e+68|0]|i[e+69|0]<<8|i[e+70|0]<<16|i[e+71|0]<<24,_=i[e+84|0]|i[e+85|0]<<8|i[e+86|0]<<16|i[e+87|0]<<24,s=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,h=i[e+36|0]|i[e+37|0]<<8|i[e+38|0]<<16|i[e+39|0]<<24,n=i[e+52|0]|i[e+53|0]<<8|i[e+54|0]<<16|i[e+55|0]<<24,V=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,B=i[e+72|0]|i[e+73|0]<<8|i[e+74|0]<<16|i[e+75|0]<<24,Q=i[e+88|0]|i[e+89|0]<<8|i[e+90|0]<<16|i[e+91|0]<<24,p=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,l=i[e+40|0]|i[e+41|0]<<8|i[e+42|0]<<16|i[e+43|0]<<24,v=i[e+56|0]|i[e+57|0]<<8|i[e+58|0]<<16|i[e+59|0]<<24,D=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(i[e+44|0]|i[e+45|0]<<8|i[e+46|0]<<16|i[e+47|0]<<24)&(i[e+60|0]|i[e+61|0]<<8|i[e+62|0]<<16|i[e+63|0]<<24)^(i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24)^(i[e+76|0]|i[e+77|0]<<8|i[e+78|0]<<16|i[e+79|0]<<24)^(i[e+92|0]|i[e+93|0]<<8|i[e+94|0]<<16|i[e+95|0]<<24)^(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24),c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,V=l&v^V^Q^p^B,c[C+8|0]=V,c[C+9|0]=V>>>8,c[C+10|0]=V>>>16,c[C+11|0]=V>>>24,q=h&n^q^_^s^a,c[C+4|0]=q,c[C+5|0]=q>>>8,c[C+6|0]=q>>>16,c[C+7|0]=q>>>24,x=o&I^x^M^r^D,c[0|C]=x,c[C+1|0]=x>>>8,c[C+2|0]=x>>>16,c[C+3|0]=x>>>24,C=A[e+92>>2],A[t+216>>2]=A[e+88>>2],A[t+220>>2]=C,C=A[e+84>>2],A[t+208>>2]=A[e+80>>2],A[t+212>>2]=C,C=A[e+76>>2],A[t+184>>2]=A[e+72>>2],A[t+188>>2]=C,C=A[b+4>>2],A[t+176>>2]=A[b>>2],A[t+180>>2]=C,C=A[e+92>>2],A[t+168>>2]=A[e+88>>2],A[t+172>>2]=C,C=A[e+84>>2],A[t+160>>2]=A[e+80>>2],A[t+164>>2]=C,a0(C=t+192|0,t+176|0,t+160|0),M=A[t+204>>2],A[e+88>>2]=A[t+200>>2],A[e+92>>2]=M,M=A[t+196>>2],A[e+80>>2]=A[t+192>>2],A[e+84>>2]=M,M=A[e+60>>2],A[t+152>>2]=A[e+56>>2],A[t+156>>2]=M,M=A[e+52>>2],A[t+144>>2]=A[e+48>>2],A[t+148>>2]=M,M=A[e+76>>2],A[t+136>>2]=A[e+72>>2],A[t+140>>2]=M,M=A[b+4>>2],A[t+128>>2]=A[b>>2],A[t+132>>2]=M,a0(C,t+144|0,t+128|0),M=A[t+204>>2],A[e+72>>2]=A[t+200>>2],A[e+76>>2]=M,M=A[t+196>>2],A[b>>2]=A[t+192>>2],A[b+4>>2]=M,b=A[e+44>>2],A[t+120>>2]=A[e+40>>2],A[t+124>>2]=b,b=A[e+36>>2],A[t+112>>2]=A[e+32>>2],A[t+116>>2]=b,b=A[e+60>>2],A[t+104>>2]=A[e+56>>2],A[t+108>>2]=b,b=A[e+52>>2],A[t+96>>2]=A[e+48>>2],A[t+100>>2]=b,a0(C,t+112|0,t+96|0),b=A[t+204>>2],A[e+56>>2]=A[t+200>>2],A[e+60>>2]=b,b=A[t+196>>2],A[e+48>>2]=A[t+192>>2],A[e+52>>2]=b,b=A[e+28>>2],A[t+88>>2]=A[e+24>>2],A[t+92>>2]=b,b=A[e+20>>2],A[t+80>>2]=A[e+16>>2],A[t+84>>2]=b,b=A[e+44>>2],A[t+72>>2]=A[e+40>>2],A[t+76>>2]=b,b=A[e+36>>2],A[t+64>>2]=A[e+32>>2],A[t+68>>2]=b,a0(C,t+80|0,t- -64|0),b=A[t+204>>2],A[e+40>>2]=A[t+200>>2],A[e+44>>2]=b,b=A[t+196>>2],A[e+32>>2]=A[t+192>>2],A[e+36>>2]=b,b=A[e+12>>2],A[t+56>>2]=A[e+8>>2],A[t+60>>2]=b,b=A[e+4>>2],A[t+48>>2]=A[e>>2],A[t+52>>2]=b,b=A[e+28>>2],A[t+40>>2]=A[e+24>>2],A[t+44>>2]=b,b=A[e+20>>2],A[t+32>>2]=A[e+16>>2],A[t+36>>2]=b,a0(C,t+48|0,t+32|0),b=A[t+204>>2],A[e+24>>2]=A[t+200>>2],A[e+28>>2]=b,b=A[t+196>>2],A[e+16>>2]=A[t+192>>2],A[e+20>>2]=b,b=A[t+220>>2],A[t+24>>2]=A[t+216>>2],A[t+28>>2]=b,b=A[t+212>>2],A[t+16>>2]=A[t+208>>2],A[t+20>>2]=b,b=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=b,b=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=b,a0(C,t+16|0,t),C=A[t+192>>2],b=A[t+196>>2],M=A[t+200>>2],A[e+12>>2]=g^A[t+204>>2],A[e+8>>2]=M^V,A[e+4>>2]=b^q,A[e>>2]=C^x,W=t+224|0}function Ig(C,g){var e,t,r,o,I,a,_,s,h,n,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0;W=e=W-800|0,B=A[g+44>>2],p=A[g+84>>2],l=A[g+48>>2],v=A[g+88>>2],D=A[g+52>>2],Q=A[g+92>>2],q=A[g+56>>2],b=A[g+96>>2],J=A[g+60>>2],V=A[g+100>>2],_A=A[(z=g- -64|0)>>2],sA=A[g+104>>2],nA=A[g+68>>2],fA=A[g+108>>2],uA=A[g+72>>2],vA=A[g+112>>2],wA=A[g+40>>2],iA=A[g+80>>2],M=A[g+76>>2],x=A[g+116>>2],A[e+324>>2]=M+x,A[e+320>>2]=uA+vA,A[e+316>>2]=nA+fA,A[e+312>>2]=_A+sA,A[e+308>>2]=V+J,A[e+304>>2]=b+q,A[e+300>>2]=Q+D,A[e+296>>2]=l+v,A[e+292>>2]=B+p,A[e+288>>2]=wA+iA,A[e+36>>2]=x-M,A[e+32>>2]=vA-uA,A[e+28>>2]=fA-nA,A[e+24>>2]=sA-_A,A[e+20>>2]=V-J,A[e+16>>2]=b-q,A[e+12>>2]=Q-D,A[e+8>>2]=v-l,A[e+4>>2]=p-B,A[e>>2]=iA-wA,kA(B=e+288|0,B,e),kA(l=e+240|0,g,D=g+40|0),gA(p=e+192|0,l),kA(p,B,p),A[e+452>>2]=0,A[e+456>>2]=0,A[e+460>>2]=0,A[e+464>>2]=0,A[e+468>>2]=0,A[e+436>>2]=0,A[e+440>>2]=0,A[e+444>>2]=0,A[e+448>>2]=0,A[e+432>>2]=1,QC(v=e+576|0,e+432|0,p),kA(p=e+720|0,v,B),kA(J=e+672|0,v,l),kA(b=e+48|0,p,J),kA(b,b,B=g+120|0),kA(e+528|0,g,1632),kA(e+480|0,D,1632),kA(e+624|0,p,2944),kA(p=e+336|0,B,b),w2(q=e+384|0,p),Q=i[e+384|0],p=A[g+36>>2],B=A[g+32>>2],A[e+176>>2]=B,A[e+180>>2]=p,l=A[g+28>>2],p=A[g+24>>2],A[e+168>>2]=p,A[e+172>>2]=l,v=A[g+20>>2],l=A[g+16>>2],A[e+160>>2]=l,A[e+164>>2]=v,D=A[g+12>>2],v=A[g+8>>2],A[e+152>>2]=v,A[e+156>>2]=D,V=A[g+4>>2],D=A[g>>2],A[e+144>>2]=D,A[e+148>>2]=V,V=A[g+44>>2],_A=A[g+48>>2],sA=A[g+52>>2],nA=A[g+56>>2],fA=A[g+60>>2],uA=A[z>>2],vA=A[g+68>>2],wA=A[g+72>>2],iA=A[g+76>>2],z=A[g+40>>2],HA=A[e+484>>2],M=A[e+148>>2],aA=A[e+492>>2],x=A[e+156>>2],EA=A[e+500>>2],$=A[e+164>>2],YA=A[e+508>>2],K=A[e+172>>2],qA=A[e+516>>2],hA=A[e+180>>2],$A=A[e+480>>2],g0=A[e+488>>2],i0=A[e+496>>2],u=A[e+504>>2],Q=0-(1&Q)|0,A[e+176>>2]=B^Q&(B^A[e+512>>2]),A[e+168>>2]=p^Q&(p^u),A[e+160>>2]=l^Q&(l^i0),A[e+152>>2]=v^Q&(v^g0),A[e+144>>2]=D^Q&(D^$A),A[e+180>>2]=hA^Q&(hA^qA),A[e+172>>2]=K^Q&(K^YA),A[e+164>>2]=$^Q&($^EA),A[e+156>>2]=x^Q&(x^aA),A[e+148>>2]=M^Q&(M^HA),hA=A[e+528>>2],HA=A[e+532>>2],aA=A[e+536>>2],EA=A[e+540>>2],YA=A[e+544>>2],qA=A[e+548>>2],$A=A[e+552>>2],g0=A[e+556>>2],i0=A[e+560>>2],u=A[e+564>>2],B=A[e+672>>2],t=A[e+624>>2],p=A[e+676>>2],r=A[e+628>>2],l=A[e+680>>2],o=A[e+632>>2],v=A[e+684>>2],I=A[e+636>>2],D=A[e+688>>2],a=A[e+640>>2],M=A[e+692>>2],_=A[e+644>>2],x=A[e+696>>2],s=A[e+648>>2],$=A[e+700>>2],h=A[e+652>>2],K=A[e+704>>2],n=A[e+656>>2],mA=A[e+708>>2],A[e+708>>2]=mA^Q&(A[e+660>>2]^mA),A[e+704>>2]=K^Q&(K^n),A[e+700>>2]=$^Q&($^h),A[e+696>>2]=x^Q&(x^s),A[e+692>>2]=M^Q&(M^_),A[e+688>>2]=D^Q&(D^a),A[e+684>>2]=v^Q&(v^I),A[e+680>>2]=l^Q&(l^o),A[e+676>>2]=p^Q&(p^r),A[e+672>>2]=B^Q&(B^t),kA(B=e+96|0,e+144|0,b),w2(q,B),p=A[g+84>>2],l=A[g+88>>2],v=A[g+92>>2],D=A[g+96>>2],b=A[g+100>>2],M=A[g+104>>2],x=A[g+108>>2],$=A[g+112>>2],K=A[g+80>>2],mA=A[g+116>>2],g=0-(1&c[e+384|0])|0,B=iA^Q&(iA^u),A[e+420>>2]=mA-(g&(0-B^B)^B),B=wA^Q&(wA^i0),A[e+416>>2]=$-(g&(0-B^B)^B),B=vA^Q&(vA^g0),A[e+412>>2]=x-(g&(0-B^B)^B),B=uA^Q&(uA^$A),A[e+408>>2]=M-(g&(0-B^B)^B),B=fA^Q&(fA^qA),A[e+404>>2]=b-(g&(0-B^B)^B),B=nA^Q&(nA^YA),A[e+400>>2]=D-(g&(0-B^B)^B),B=sA^Q&(sA^EA),A[e+396>>2]=v-(g&(0-B^B)^B),B=_A^Q&(_A^aA),A[e+392>>2]=l-(g&(0-B^B)^B),B=V^Q&(V^HA),A[e+388>>2]=p-(g&(0-B^B)^B),B=g,g=z^Q&(z^hA),A[e+384>>2]=K-(B&(0-g^g)^g),kA(q,J,q),w2(e+768|0,q),g=0-(1&c[e+768|0])|0,B=A[e+384>>2],A[e+384>>2]=g&(0-B^B)^B,B=A[e+388>>2],A[e+388>>2]=g&(0-B^B)^B,B=A[e+392>>2],A[e+392>>2]=g&(0-B^B)^B,B=A[e+396>>2],A[e+396>>2]=g&(0-B^B)^B,B=A[e+400>>2],A[e+400>>2]=g&(0-B^B)^B,B=A[e+404>>2],A[e+404>>2]=g&(0-B^B)^B,B=A[e+408>>2],A[e+408>>2]=g&(0-B^B)^B,B=A[e+412>>2],A[e+412>>2]=g&(0-B^B)^B,B=A[e+416>>2],A[e+416>>2]=g&(0-B^B)^B,B=g,g=A[e+420>>2],A[e+420>>2]=B&(0-g^g)^g,w2(C,q),W=e+800|0}function Lg(C,g){var e,t,r,o,I,a,_,s,h,n=0,B=0;W=e=W-288|0,t=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,r=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,o=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,I=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,a=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,_=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,s=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,h=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,C=A[g+124>>2],A[e+280>>2]=A[g+120>>2],A[e+284>>2]=C,C=A[g+116>>2],A[e+272>>2]=A[g+112>>2],A[e+276>>2]=C,C=A[g+108>>2],A[e+248>>2]=A[g+104>>2],A[e+252>>2]=C,C=A[g+100>>2],A[e+240>>2]=A[g+96>>2],A[e+244>>2]=C,C=A[g+124>>2],A[e+232>>2]=A[g+120>>2],A[e+236>>2]=C,C=A[g+116>>2],A[e+224>>2]=A[g+112>>2],A[e+228>>2]=C,a0(B=e+256|0,e+240|0,e+224|0),C=A[e+268>>2],A[g+120>>2]=A[e+264>>2],A[g+124>>2]=C,C=A[e+260>>2],A[g+112>>2]=A[e+256>>2],A[g+116>>2]=C,C=A[g+92>>2],A[e+216>>2]=A[g+88>>2],A[e+220>>2]=C,C=A[g+84>>2],A[e+208>>2]=A[g+80>>2],A[e+212>>2]=C,C=A[g+108>>2],A[e+200>>2]=A[g+104>>2],A[e+204>>2]=C,C=A[g+100>>2],A[e+192>>2]=A[g+96>>2],A[e+196>>2]=C,a0(B,e+208|0,e+192|0),C=A[e+268>>2],A[g+104>>2]=A[e+264>>2],A[g+108>>2]=C,C=A[e+260>>2],A[g+96>>2]=A[e+256>>2],A[g+100>>2]=C,C=A[g+76>>2],A[e+184>>2]=A[g+72>>2],A[e+188>>2]=C,n=A[4+(C=g- -64|0)>>2],A[e+176>>2]=A[C>>2],A[e+180>>2]=n,n=A[g+92>>2],A[e+168>>2]=A[g+88>>2],A[e+172>>2]=n,n=A[g+84>>2],A[e+160>>2]=A[g+80>>2],A[e+164>>2]=n,a0(B,e+176|0,e+160|0),n=A[e+268>>2],A[g+88>>2]=A[e+264>>2],A[g+92>>2]=n,n=A[e+260>>2],A[g+80>>2]=A[e+256>>2],A[g+84>>2]=n,n=A[g+60>>2],A[e+152>>2]=A[g+56>>2],A[e+156>>2]=n,n=A[g+52>>2],A[e+144>>2]=A[g+48>>2],A[e+148>>2]=n,n=A[g+76>>2],A[e+136>>2]=A[g+72>>2],A[e+140>>2]=n,n=A[C+4>>2],A[e+128>>2]=A[C>>2],A[e+132>>2]=n,a0(B,e+144|0,e+128|0),n=A[e+268>>2],A[g+72>>2]=A[e+264>>2],A[g+76>>2]=n,n=A[e+260>>2],A[C>>2]=A[e+256>>2],A[C+4>>2]=n,n=A[g+44>>2],A[e+120>>2]=A[g+40>>2],A[e+124>>2]=n,n=A[g+36>>2],A[e+112>>2]=A[g+32>>2],A[e+116>>2]=n,n=A[g+60>>2],A[e+104>>2]=A[g+56>>2],A[e+108>>2]=n,n=A[g+52>>2],A[e+96>>2]=A[g+48>>2],A[e+100>>2]=n,a0(B,e+112|0,e+96|0),n=A[e+268>>2],A[g+56>>2]=A[e+264>>2],A[g+60>>2]=n,n=A[e+260>>2],A[g+48>>2]=A[e+256>>2],A[g+52>>2]=n,n=A[g+28>>2],A[e+88>>2]=A[g+24>>2],A[e+92>>2]=n,n=A[g+20>>2],A[e+80>>2]=A[g+16>>2],A[e+84>>2]=n,n=A[g+44>>2],A[e+72>>2]=A[g+40>>2],A[e+76>>2]=n,n=A[g+36>>2],A[e+64>>2]=A[g+32>>2],A[e+68>>2]=n,a0(B,e+80|0,e- -64|0),n=A[e+268>>2],A[g+40>>2]=A[e+264>>2],A[g+44>>2]=n,n=A[e+260>>2],A[g+32>>2]=A[e+256>>2],A[g+36>>2]=n,n=A[g+12>>2],A[e+56>>2]=A[g+8>>2],A[e+60>>2]=n,n=A[g+4>>2],A[e+48>>2]=A[g>>2],A[e+52>>2]=n,n=A[g+28>>2],A[e+40>>2]=A[g+24>>2],A[e+44>>2]=n,n=A[g+20>>2],A[e+32>>2]=A[g+16>>2],A[e+36>>2]=n,a0(B,e+48|0,e+32|0),n=A[e+268>>2],A[g+24>>2]=A[e+264>>2],A[g+28>>2]=n,n=A[e+260>>2],A[g+16>>2]=A[e+256>>2],A[g+20>>2]=n,n=A[e+284>>2],A[e+24>>2]=A[e+280>>2],A[e+28>>2]=n,n=A[e+276>>2],A[e+16>>2]=A[e+272>>2],A[e+20>>2]=n,n=A[g+12>>2],A[e+8>>2]=A[g+8>>2],A[e+12>>2]=n,n=A[g+4>>2],A[e>>2]=A[g>>2],A[e+4>>2]=n,a0(B,e+16|0,e),B=A[e+268>>2],A[g+8>>2]=A[e+264>>2],A[g+12>>2]=B,B=A[e+260>>2],A[g>>2]=A[e+256>>2],A[g+4>>2]=B,A[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^s,A[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^_,A[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^a,A[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^h,A[C>>2]=(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24)^I,A[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^o,A[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^r,A[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^t,W=e+288|0}function oe(C,g,e,t){var r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x=0,q=0,V=0,$=0;W=r=W-240|0,A[r+200>>2]=0,A[r+204>>2]=0,A[r+192>>2]=0,A[r+196>>2]=0,P0(q=r+192|0,g,e),V=i[t+16|0]|i[t+17|0]<<8|i[t+18|0]<<16|i[t+19|0]<<24,$=i[0|(g=t- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,x=i[t+80|0]|i[t+81|0]<<8|i[t+82|0]<<16|i[t+83|0]<<24,o=i[t+32|0]|i[t+33|0]<<8|i[t+34|0]<<16|i[t+35|0]<<24,I=i[t+48|0]|i[t+49|0]<<8|i[t+50|0]<<16|i[t+51|0]<<24,a=i[t+20|0]|i[t+21|0]<<8|i[t+22|0]<<16|i[t+23|0]<<24,_=i[t+68|0]|i[t+69|0]<<8|i[t+70|0]<<16|i[t+71|0]<<24,s=i[t+84|0]|i[t+85|0]<<8|i[t+86|0]<<16|i[t+87|0]<<24,h=i[t+36|0]|i[t+37|0]<<8|i[t+38|0]<<16|i[t+39|0]<<24,n=i[t+52|0]|i[t+53|0]<<8|i[t+54|0]<<16|i[t+55|0]<<24,B=i[t+24|0]|i[t+25|0]<<8|i[t+26|0]<<16|i[t+27|0]<<24,Q=i[t+72|0]|i[t+73|0]<<8|i[t+74|0]<<16|i[t+75|0]<<24,p=i[t+88|0]|i[t+89|0]<<8|i[t+90|0]<<16|i[t+91|0]<<24,l=i[t+40|0]|i[t+41|0]<<8|i[t+42|0]<<16|i[t+43|0]<<24,v=i[t+56|0]|i[t+57|0]<<8|i[t+58|0]<<16|i[t+59|0]<<24,D=A[r+192>>2],b=A[r+196>>2],M=A[r+200>>2],A[r+204>>2]=(i[t+44|0]|i[t+45|0]<<8|i[t+46|0]<<16|i[t+47|0]<<24)&(i[t+60|0]|i[t+61|0]<<8|i[t+62|0]<<16|i[t+63|0]<<24)^(i[t+28|0]|i[t+29|0]<<8|i[t+30|0]<<16|i[t+31|0]<<24)^(i[t+76|0]|i[t+77|0]<<8|i[t+78|0]<<16|i[t+79|0]<<24)^A[r+204>>2]^(i[t+92|0]|i[t+93|0]<<8|i[t+94|0]<<16|i[t+95|0]<<24),A[r+200>>2]=l&v^p^M^Q^B,A[r+196>>2]=h&n^s^b^_^a,A[r+192>>2]=o&I^V^$^x^D,$0(e+q|0,0,16-e|0),P0(C,q,e),e=A[r+192>>2],q=A[r+196>>2],V=A[r+200>>2],$=A[r+204>>2],C=A[t+92>>2],A[r+232>>2]=A[t+88>>2],A[r+236>>2]=C,C=A[t+84>>2],A[r+224>>2]=A[t+80>>2],A[r+228>>2]=C,C=A[t+76>>2],A[r+184>>2]=A[t+72>>2],A[r+188>>2]=C,C=A[g+4>>2],A[r+176>>2]=A[g>>2],A[r+180>>2]=C,C=A[t+92>>2],A[r+168>>2]=A[t+88>>2],A[r+172>>2]=C,C=A[t+84>>2],A[r+160>>2]=A[t+80>>2],A[r+164>>2]=C,a0(C=r+208|0,r+176|0,r+160|0),x=A[r+220>>2],A[t+88>>2]=A[r+216>>2],A[t+92>>2]=x,x=A[r+212>>2],A[t+80>>2]=A[r+208>>2],A[t+84>>2]=x,x=A[t+60>>2],A[r+152>>2]=A[t+56>>2],A[r+156>>2]=x,x=A[t+52>>2],A[r+144>>2]=A[t+48>>2],A[r+148>>2]=x,x=A[t+76>>2],A[r+136>>2]=A[t+72>>2],A[r+140>>2]=x,x=A[g+4>>2],A[r+128>>2]=A[g>>2],A[r+132>>2]=x,a0(C,r+144|0,r+128|0),x=A[r+220>>2],A[t+72>>2]=A[r+216>>2],A[t+76>>2]=x,x=A[r+212>>2],A[g>>2]=A[r+208>>2],A[g+4>>2]=x,g=A[t+44>>2],A[r+120>>2]=A[t+40>>2],A[r+124>>2]=g,g=A[t+36>>2],A[r+112>>2]=A[t+32>>2],A[r+116>>2]=g,g=A[t+60>>2],A[r+104>>2]=A[t+56>>2],A[r+108>>2]=g,g=A[t+52>>2],A[r+96>>2]=A[t+48>>2],A[r+100>>2]=g,a0(C,r+112|0,r+96|0),g=A[r+220>>2],A[t+56>>2]=A[r+216>>2],A[t+60>>2]=g,g=A[r+212>>2],A[t+48>>2]=A[r+208>>2],A[t+52>>2]=g,g=A[t+28>>2],A[r+88>>2]=A[t+24>>2],A[r+92>>2]=g,g=A[t+20>>2],A[r+80>>2]=A[t+16>>2],A[r+84>>2]=g,g=A[t+44>>2],A[r+72>>2]=A[t+40>>2],A[r+76>>2]=g,g=A[t+36>>2],A[r+64>>2]=A[t+32>>2],A[r+68>>2]=g,a0(C,r+80|0,r- -64|0),g=A[r+220>>2],A[t+40>>2]=A[r+216>>2],A[t+44>>2]=g,g=A[r+212>>2],A[t+32>>2]=A[r+208>>2],A[t+36>>2]=g,g=A[t+12>>2],A[r+56>>2]=A[t+8>>2],A[r+60>>2]=g,g=A[t+4>>2],A[r+48>>2]=A[t>>2],A[r+52>>2]=g,g=A[t+28>>2],A[r+40>>2]=A[t+24>>2],A[r+44>>2]=g,g=A[t+20>>2],A[r+32>>2]=A[t+16>>2],A[r+36>>2]=g,a0(C,r+48|0,r+32|0),g=A[r+220>>2],A[t+24>>2]=A[r+216>>2],A[t+28>>2]=g,g=A[r+212>>2],A[t+16>>2]=A[r+208>>2],A[t+20>>2]=g,g=A[r+236>>2],A[r+24>>2]=A[r+232>>2],A[r+28>>2]=g,g=A[r+228>>2],A[r+16>>2]=A[r+224>>2],A[r+20>>2]=g,g=A[t+12>>2],A[r+8>>2]=A[t+8>>2],A[r+12>>2]=g,g=A[t+4>>2],A[r>>2]=A[t>>2],A[r+4>>2]=g,a0(C,r+16|0,r),C=A[r+208>>2],g=A[r+212>>2],x=A[r+216>>2],A[t+12>>2]=$^A[r+220>>2],A[t+8>>2]=x^V,A[t+4>>2]=g^q,A[t>>2]=C^e,W=r+240|0}function _e(C,g,e,t,r){C|=0,g|=0,e|=0,t|=0;var o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0;if(a=1886610805^(t=i[0|(r|=0)]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),I=1936682341^(o=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24),s=1852142177^t,_=1819895653^o,o=1852075885^(t=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24),r=1685025377^(n=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24),h=2037671283^t,n^=1952801890,(0|(l=(g+e|0)-(Q=7&e)|0))!=(0|g))for(;h=s=s+(t=h^(b=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))|0,_=_+(n^=M=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)|0,_=t>>>0>s>>>0?_+1|0:_,I=r+I|0,I=(p=a)>>>0>(a=o+a|0)>>>0?I+1|0:I,r=s+(o=G(o,r,13)^a)|0,s=_+(B=y^I)|0,B=G(o,B,17)^r,v=G(B,s=(p=r>>>0>>0?s+1|0:s)^y,13),D=y,t=G(t,n,16),o=_^y,_=t^h,a=G(a,I,32),h=s,s=y+o|0,h=1+(a=h+(I=(t=_+a|0)>>>0>>0?s+1|0:s)|0)|0,s=a,s=(a=t+B|0)>>>0>>0?h:s,v=G(h=a^v,n=s^D,17),D=y,o=G(_,o,21),I^=y,x=t^o,r=G(r,p,32),o=y+I|0,r=n+(p=(t=x+r|0)>>>0>>0?o+1|0:o)|0,o=(_=t+h|0)^v,r=(B=_>>>0>>0?r+1|0:r)^D,I=G(x,I,16),n=h=p^y,I=G(t^=I,h,21),p=y,h=(t=(a=G(a,s,32))+t|0)^I,s=y+n|0,n=(I=t>>>0>>0?s+1|0:s)^p,s=G(_,B,32),_=y,a=t^b,I^=M,(0|l)!=(0|(g=g+8|0)););switch(e<<=24,t=0,Q-1|0){case 6:e|=i[g+6|0]<<16;case 5:e|=i[g+5|0]<<8;case 4:e|=i[g+4|0];case 3:B=(t=i[g+3|0])>>>8|0,t<<=24,e|=B;case 2:t|=(B=i[g+2|0])<<16,e|=Q=B>>>16|0;case 1:t|=(B=i[g+1|0])<<8,e|=Q=B>>>24|0;case 0:t=i[0|g]|t}return n=G(g=t^h,h=e^n,16),_=_+h|0,s=(g=g+s|0)>>>0>>0?_+1|0:_,n=G(_=g^n,h=s^y,21),B=y,p=1+(I=r+I|0)|0,Q=I,Q=a=a>>>0>(I=o+a|0)>>>0?p:Q,l=G(I,a,32),h=y+h|0,B=G(_=n^(a=_+l|0),n=B^(h=a>>>0>>0?h+1|0:h),16),l=y,r=G(o,r,13)^I,o=(o=s)+(s=y^Q)|0,Q=G(g=g+r|0,I=g>>>0>>0?o+1|0:o,32),n=y+n|0,Q=G(_=B^(o=_+Q|0),B=(n=o>>>0>>0?n+1|0:n)^l,21),l=y,g=a+(r=s=G(r,s,17)^g)|0,a=(I^=y)+h|0,h=r=g>>>0>>0?a+1|0:a,p=Q,a=_+(Q=G(g,r,32))|0,_=y+B|0,Q=G(r=p^a,B=(_=a>>>0>>0?_+1|0:_)^l,16),l=y,p=o,I=G(s,I,13)^g,s=(h^=y)+n|0,n=o=(g=p+(o=I)|0)>>>0>>0?s+1|0:s,o=G(g,o,32),s=B+y|0,B=(p=r)>>>0>(r=r+(255^o)|0)>>>0?s+1|0:s,Q=G(s=r^Q,o=l^B,21),l=y,I=G(I,h,17)^g,e=(h=n^y)+(e^_)|0,_=e=(g=I+(t^=a)|0)>>>0>>0?e+1|0:e,e=G(g,e,32),t=o+y|0,s=G(a=(e=e+s|0)^Q,t=(o=e>>>0>>0?t+1|0:t)^l,16),n=y,I=G(I,h,13)^g,h=B+(_^=y)|0,h=r=(g=r+I|0)>>>0>>0?h+1|0:h,r=G(g,r,32),Q=n,p=1+(t=t+y|0)|0,n=t,n=(t=r+a|0)>>>0>>0?p:n,s=G(a=t^s,r=Q^n,21),B=y,I=G(I,_,17),p=1+(o=o+(_=h^y)|0)|0,h=o,I=g=(Q=e)>>>0>(e=e+(o=g^I)|0)>>>0?p:h,g=G(e,g,32),r=r+y|0,h=(g=g+a|0)>>>0>>0?r+1|0:r,s=G(a=g^s,r=h^B,16),B=y,o=G(o,_,13),_=n+(I^=y)|0,_=e=(n=t)>>>0>(t=t+(o^=e)|0)>>>0?_+1|0:_,e=G(t,e,32),r=r+y|0,n=(e=e+a|0)>>>0>>0?r+1|0:r,s=G(a=e^s,r=n^B,21),B=y,o=G(o,I,17),Q=1+(_=h+(I=_^y)|0)|0,h=_,g=G(t=g+(_=t^o)|0,o=t>>>0>>0?Q:h,32),r=r+y|0,h=(g=g+a|0)>>>0>>0?r+1|0:r,s=G(a=g^s,r=h^B,16),B=y,I=G(_,I,13),_=n+(o^=y)|0,_=e=(t=e+(I^=t)|0)>>>0>>0?_+1|0:_,e=G(t,e,32),r=r+y|0,a=G((e=e+a|0)^s,(r=e>>>0>>0?r+1|0:r)^B,21),s=y,t=G(I,o,17)^t,I=G(t,o=_^y,13),o=o+h|0,g=y^(g>>>0>(t=g+t|0)>>>0?o+1:o),a=G(t^=I,g,17)^a,o=y^s,_=1+(g=g+r|0)|0,r=g,g=G(g=e+t|0,e=e>>>0>g>>>0?_:r,32)^a^g,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,g=e^y^o,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,0}function ce(C,g){var e,t,r,o,I,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0;W=e=W-624|0,gA(a=e+480|0,g),kA(a,1632,a),s=A[e+516>>2],A[e+276>>2]=s,h=A[e+512>>2],A[e+272>>2]=h,n=A[e+508>>2],A[e+268>>2]=n,B=A[e+504>>2],A[e+264>>2]=B,Q=A[e+500>>2],A[e+260>>2]=Q,p=A[e+496>>2],A[e+256>>2]=p,l=A[e+492>>2],A[e+252>>2]=l,v=A[e+488>>2],A[e+248>>2]=v,D=A[e+484>>2],A[e+244>>2]=D,M=A[e+480>>2],A[e+240>>2]=M+1,kA(_=e+240|0,_,33968),A[e+468>>2]=s-12055116,A[e+464>>2]=h-18696448,A[e+460>>2]=n-3247719,A[e+456>>2]=B-6275908,A[e+452>>2]=Q-8787816,A[e+448>>2]=p+114729,A[e+444>>2]=l+6949391,A[e+440>>2]=v-15372611,A[e+436>>2]=D+13857413,A[e+432>>2]=M-10913610,kA(b=e+192|0,a,1584),A[e+228>>2]=0-A[e+228>>2],A[e+224>>2]=0-A[e+224>>2],A[e+220>>2]=0-A[e+220>>2],A[e+216>>2]=0-A[e+216>>2],A[e+212>>2]=0-A[e+212>>2],A[e+208>>2]=0-A[e+208>>2],A[e+204>>2]=0-A[e+204>>2],A[e+200>>2]=0-A[e+200>>2],A[e+196>>2]=0-A[e+196>>2],A[e+192>>2]=~A[e+192>>2],kA(b,b,e+432|0),a=QC(t=e+384|0,_,b),kA(_=e+336|0,t,g),w2(r=e+576|0,_),I=i[e+576|0],nA=A[e+420>>2],_=A[e+372>>2],fA=A[e+416>>2],x=A[e+368>>2],uA=A[e+412>>2],q=A[e+364>>2],vA=A[e+408>>2],V=A[e+360>>2],wA=A[e+404>>2],$=A[e+356>>2],iA=A[e+400>>2],K=A[e+352>>2],hA=A[e+396>>2],J=A[e+348>>2],mA=A[e+392>>2],z=A[e+344>>2],HA=A[e+388>>2],_A=A[e+340>>2],o=A[e+384>>2],sA=A[e+336>>2],g=a-1|0,A[e+612>>2]=g&s,A[e+608>>2]=g&h,A[e+604>>2]=g&n,A[e+600>>2]=g&B,A[e+596>>2]=g&Q,A[e+592>>2]=g&p,A[e+588>>2]=g&l,A[e+584>>2]=g&v,A[e+580>>2]=g&D,A[e+576>>2]=M|0-a,sA=g&(0-(sA^(a=0-(1&I)|0)&(sA^0-sA))^o)^o,A[e+384>>2]=sA,_A=HA^g&(HA^0-(_A^a&(_A^0-_A))),A[e+388>>2]=_A,z=mA^g&(mA^0-(z^a&(z^0-z))),A[e+392>>2]=z,J=hA^g&(hA^0-(J^a&(J^0-J))),A[e+396>>2]=J,K=iA^g&(iA^0-(K^a&(K^0-K))),A[e+400>>2]=K,$=wA^g&(wA^0-($^a&($^0-$))),A[e+404>>2]=$,V=vA^g&(vA^0-(V^a&(V^0-V))),A[e+408>>2]=V,q=uA^g&(uA^0-(q^a&(q^0-q))),A[e+412>>2]=q,x=fA^g&(fA^0-(x^a&(x^0-x))),A[e+416>>2]=x,a=nA^g&(nA^0-(_^a&(_^0-_))),A[e+420>>2]=a,A[e+564>>2]=s,A[e+560>>2]=h,A[e+556>>2]=n,A[e+552>>2]=B,A[e+548>>2]=Q,A[e+544>>2]=p,A[e+540>>2]=l,A[e+536>>2]=v,A[e+532>>2]=D,A[e+528>>2]=M-1,kA(g=e+528|0,g,r),kA(g,g,34016),s=A[e+192>>2],h=A[e+528>>2],n=A[e+196>>2],B=A[e+532>>2],Q=A[e+200>>2],p=A[e+536>>2],l=A[e+204>>2],v=A[e+540>>2],D=A[e+208>>2],M=A[e+544>>2],_=A[e+212>>2],nA=A[e+548>>2],fA=A[e+216>>2],uA=A[e+552>>2],vA=A[e+220>>2],wA=A[e+556>>2],iA=A[e+224>>2],hA=A[e+560>>2],mA=A[e+228>>2],HA=A[e+564>>2],A[e+180>>2]=a<<1,A[e+176>>2]=x<<1,A[e+172>>2]=q<<1,A[e+168>>2]=V<<1,A[e+164>>2]=$<<1,A[e+160>>2]=K<<1,A[e+156>>2]=J<<1,A[e+152>>2]=z<<1,A[e+148>>2]=_A<<1,A[e+144>>2]=sA<<1,A[e+564>>2]=HA-mA,A[e+560>>2]=hA-iA,A[e+556>>2]=wA-vA,A[e+552>>2]=uA-fA,A[e+548>>2]=nA-_,A[e+544>>2]=M-D,A[e+540>>2]=v-l,A[e+536>>2]=p-Q,A[e+532>>2]=B-n,A[e+528>>2]=h-s,kA(a=e+144|0,a,b),kA(b=e+96|0,g,34064),gA(e+288|0,t),g=A[e+324>>2],A[e+84>>2]=0-g,s=A[e+320>>2],A[e+80>>2]=0-s,h=A[e+316>>2],A[e+76>>2]=0-h,n=A[e+312>>2],A[e+72>>2]=0-n,B=A[e+308>>2],A[e+68>>2]=0-B,Q=A[e+304>>2],A[e+64>>2]=0-Q,p=A[e+300>>2],A[e+60>>2]=0-p,l=A[e+296>>2],A[e+56>>2]=0-l,v=A[e+292>>2],A[e+52>>2]=0-v,D=A[e+288>>2],A[e+48>>2]=1-D,A[e+36>>2]=g,A[e+32>>2]=s,A[e+28>>2]=h,A[e+24>>2]=n,A[e+20>>2]=B,A[e+16>>2]=Q,A[e+12>>2]=p,A[e+8>>2]=l,A[e+4>>2]=v,A[e>>2]=D+1,kA(C,a,e),kA(C+40|0,g=e+48|0,b),kA(C+80|0,b,e),kA(C+120|0,a,g),W=e+624|0}function _C(C,g,e){var t,r=0,o=0,I=0,a=0,_=0;W=t=W+-64|0;A:{if((e-65&255)>>>0>191){if(o=-1,!(i[C+80|0]|i[C+81|0]<<8|i[C+82|0]<<16|i[C+83|0]<<24|i[C+84|0]|i[C+85|0]<<8|i[C+86|0]<<16|i[C+87|0]<<24)){if((I=i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)>>>0>=129){if(a=r=i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24,r=(I=128+(o=i[C+64|0]|i[C+65|0]<<8|i[C+66|0]<<16|i[C+67|0]<<24)|0)>>>0<128?r+1|0:r,c[C+64|0]=I,c[C+65|0]=I>>>8,c[C+66|0]=I>>>16,c[C+67|0]=I>>>24,c[C+68|0]=r,c[C+69|0]=r>>>8,c[C+70|0]=r>>>16,c[C+71|0]=r>>>24,r=i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24,r=(_=o=(0|a)==-1&o>>>0>4294967167)>>>0>(o=o+(i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24)|0)>>>0?r+1|0:r,c[C+72|0]=o,c[C+73|0]=o>>>8,c[C+74|0]=o>>>16,c[C+75|0]=o>>>24,c[C+76|0]=r,c[C+77|0]=r>>>8,c[C+78|0]=r>>>16,c[C+79|0]=r>>>24,cg(C,r=C+96|0),o=(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)-128|0,c[C+352|0]=o,c[C+353|0]=o>>>8,c[C+354|0]=o>>>16,c[C+355|0]=o>>>24,o>>>0>=129)break A;P0(r,C+224|0,o),I=i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24}o=_=i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24,o=(a=I+(r=i[C+64|0]|i[C+65|0]<<8|i[C+66|0]<<16|i[C+67|0]<<24)|0)>>>0>>0?o+1|0:o,c[C+64|0]=a,c[C+65|0]=a>>>8,c[C+66|0]=a>>>16,c[C+67|0]=a>>>24,c[C+68|0]=o,c[C+69|0]=o>>>8,c[C+70|0]=o>>>16,c[C+71|0]=o>>>24,o=(0|o)==(0|_)&r>>>0>a>>>0|o>>>0<_>>>0,r=i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24,r=(_=o)>>>0>(o=o+(i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24)|0)>>>0?r+1|0:r,c[C+72|0]=o,c[C+73|0]=o>>>8,c[C+74|0]=o>>>16,c[C+75|0]=o>>>24,c[C+76|0]=r,c[C+77|0]=r>>>8,c[C+78|0]=r>>>16,c[C+79|0]=r>>>24,i[C+356|0]&&(c[C+88|0]=255,c[C+89|0]=255,c[C+90|0]=255,c[C+91|0]=255,c[C+92|0]=255,c[C+93|0]=255,c[C+94|0]=255,c[C+95|0]=255),c[C+80|0]=255,c[C+81|0]=255,c[C+82|0]=255,c[C+83|0]=255,c[C+84|0]=255,c[C+85|0]=255,c[C+86|0]=255,c[C+87|0]=255,$0((o=C+96|0)+I|0,0,256-I|0),cg(C,o),r=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,A[t>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,A[t+4>>2]=r,r=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,A[t+8>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,A[t+12>>2]=r,r=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,A[t+16>>2]=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,A[t+20>>2]=r,r=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,A[t+24>>2]=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,A[t+28>>2]=r,r=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,A[t+32>>2]=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24,A[t+36>>2]=r,r=i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24,A[t+40>>2]=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,A[t+44>>2]=r,r=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,A[t+48>>2]=i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24,A[t+52>>2]=r,r=i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24,A[t+56>>2]=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24,A[t+60>>2]=r,P0(g,t,e),y0(C,64),y0(o,256),o=0}return W=t- -64|0,o}h2(),Q0()}xg(1386,1234,306,1142),Q0()}function Ie(C,g,e){C|=0,g|=0,e|=0;var t,r,o,I=0,a=0;W=t=W-192|0,A[t+144>>2]=0,A[t+148>>2]=0,A[t+152>>2]=0,A[t+156>>2]=0,A[t+104>>2]=0,A[t+108>>2]=0,A[t+112>>2]=0,A[t+116>>2]=0,A[t+120>>2]=0,A[t+124>>2]=0,I=A[8799],A[t+168>>2]=A[8798],A[t+172>>2]=I,I=A[8801],A[t+176>>2]=A[8800],A[t+180>>2]=I,I=A[8803],A[t+184>>2]=A[8802],A[t+188>>2]=I,A[t+128>>2]=0,A[t+132>>2]=0,A[t+136>>2]=0,A[t+140>>2]=0,A[t+96>>2]=0,A[t+100>>2]=0,I=A[8797],A[t+160>>2]=A[8796],A[t+164>>2]=I,I=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,A[t+80>>2]=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,A[t+84>>2]=I,I=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,A[t+88>>2]=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,A[t+92>>2]=I,I=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,A[t+64>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,A[t+68>>2]=I,I=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,A[t+72>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,A[t+76>>2]=I,pt(e=t+128|0,I=t- -64|0),d1(e),a=A[t+156>>2],A[t+24>>2]=A[t+152>>2],A[t+28>>2]=a,a=A[t+148>>2],A[t+16>>2]=A[t+144>>2],A[t+20>>2]=a,a=A[t+140>>2],A[t+8>>2]=A[t+136>>2],A[t+12>>2]=a,a=A[t+132>>2],A[t>>2]=A[t+128>>2],A[t+4>>2]=a,A[t+120>>2]=0,A[t+124>>2]=0,A[t+112>>2]=0,A[t+116>>2]=0,A[t+104>>2]=0,A[t+108>>2]=0,A[t+96>>2]=0,A[t+100>>2]=0,a=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[t+80>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[t+84>>2]=a,a=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[t+88>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[t+92>>2]=a,a=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,r=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,o=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[t+56>>2]=0,A[t+60>>2]=0,A[t+48>>2]=0,A[t+52>>2]=0,A[t+40>>2]=0,A[t+44>>2]=0,A[t+64>>2]=o,A[t+68>>2]=g,A[t+72>>2]=a,A[t+76>>2]=r,A[t+32>>2]=0,A[t+36>>2]=0,yr(I,t),g=A[t+124>>2],A[t+184>>2]=A[t+120>>2],A[t+188>>2]=g,g=A[t+116>>2],A[t+176>>2]=A[t+112>>2],A[t+180>>2]=g,g=A[t+108>>2],A[t+168>>2]=A[t+104>>2],A[t+172>>2]=g,g=A[t+100>>2],A[t+160>>2]=A[t+96>>2],A[t+164>>2]=g,g=A[t+92>>2],A[t+152>>2]=A[t+88>>2],A[t+156>>2]=g,g=A[t+84>>2],A[t+144>>2]=A[t+80>>2],A[t+148>>2]=g,g=A[t+76>>2],A[t+136>>2]=A[t+72>>2],A[t+140>>2]=g,g=A[t+68>>2],A[t+128>>2]=A[t+64>>2],A[t+132>>2]=g,d1(e),g=A[t+156>>2],I=A[t+152>>2],c[C+24|0]=I,c[C+25|0]=I>>>8,c[C+26|0]=I>>>16,c[C+27|0]=I>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[t+148>>2],I=A[t+144>>2],c[C+16|0]=I,c[C+17|0]=I>>>8,c[C+18|0]=I>>>16,c[C+19|0]=I>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[t+140>>2],I=A[t+136>>2],c[C+8|0]=I,c[C+9|0]=I>>>8,c[C+10|0]=I>>>16,c[C+11|0]=I>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[t+132>>2],I=A[t+128>>2],c[0|C]=I,c[C+1|0]=I>>>8,c[C+2|0]=I>>>16,c[C+3|0]=I>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,y0(e,64),W=t+192|0}function cC(C){var g,e,t,r,o,I,a,_,s,h,n=0,B=0,Q=0,p=0,l=0;for(W=g=W-2048|0,D2(p=g+640|0,C),n=A[C+36>>2],A[g+352>>2]=A[C+32>>2],A[g+356>>2]=n,n=A[C+28>>2],A[g+344>>2]=A[C+24>>2],A[g+348>>2]=n,n=A[C+20>>2],A[g+336>>2]=A[C+16>>2],A[g+340>>2]=n,n=A[C+12>>2],A[g+328>>2]=A[C+8>>2],A[g+332>>2]=n,n=A[C+4>>2],A[g+320>>2]=A[C>>2],A[g+324>>2]=n,n=A[C+52>>2],A[g+368>>2]=A[C+48>>2],A[g+372>>2]=n,n=A[C+60>>2],A[g+376>>2]=A[C+56>>2],A[g+380>>2]=n,n=A[4+(Q=C- -64|0)>>2],A[g+384>>2]=A[Q>>2],A[g+388>>2]=n,n=A[C+76>>2],A[g+392>>2]=A[C+72>>2],A[g+396>>2]=n,n=A[C+44>>2],A[g+360>>2]=A[C+40>>2],A[g+364>>2]=n,n=A[C+92>>2],A[g+408>>2]=A[C+88>>2],A[g+412>>2]=n,n=A[C+100>>2],A[g+416>>2]=A[C+96>>2],A[g+420>>2]=n,n=A[C+108>>2],A[g+424>>2]=A[C+104>>2],A[g+428>>2]=n,n=A[C+116>>2],A[g+432>>2]=A[C+112>>2],A[g+436>>2]=n,n=A[C+84>>2],A[g+400>>2]=A[C+80>>2],A[g+404>>2]=n,P2(B=g+480|0,Q=g+320|0),kA(n=g+160|0,B,e=g+600|0),kA(g+200|0,t=g+520|0,r=g+560|0),kA(g+240|0,r,e),kA(g+280|0,B,t),b2(B,n,p),kA(Q,B,e),kA(a=g+360|0,t,r),kA(_=g+400|0,r,e),kA(s=g+440|0,B,t),D2(C=g+800|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(C=g+960|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(C=g+1120|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(C=g+1280|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(C=g+1440|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(C=g+1600|0,Q),b2(B,n,C),kA(Q,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),D2(g+1760|0,Q),A[g+32>>2]=0,A[g+36>>2]=0,A[g+24>>2]=0,A[g+28>>2]=0,A[g+16>>2]=0,A[g+20>>2]=0,A[g+8>>2]=0,A[g+12>>2]=0,A[g+52>>2]=0,A[g+56>>2]=0,A[g+60>>2]=0,A[g+64>>2]=0,A[g+68>>2]=0,A[g+72>>2]=0,A[g+76>>2]=0,A[g+80>>2]=1,A[g>>2]=0,A[g+4>>2]=0,A[g+44>>2]=0,A[g+48>>2]=0,A[g+40>>2]=1,$0(g+84|0,0,76),h=g+120|0,o=g+2008|0,I=g+1968|0,p=g+80|0,Q=g+40|0,C=252;n=A[g+36>>2],A[(B=g+1960|0)>>2]=A[g+32>>2],A[B+4>>2]=n,n=A[g+28>>2],A[(B=g+1952|0)>>2]=A[g+24>>2],A[B+4>>2]=n,n=A[g+20>>2],A[(B=g+1944|0)>>2]=A[g+16>>2],A[B+4>>2]=n,n=A[g+12>>2],A[(B=g+1936|0)>>2]=A[g+8>>2],A[B+4>>2]=n,n=A[g+4>>2],A[g+1928>>2]=A[g>>2],A[g+1932>>2]=n,n=A[Q+36>>2],A[I+32>>2]=A[Q+32>>2],A[I+36>>2]=n,n=A[Q+28>>2],A[I+24>>2]=A[Q+24>>2],A[I+28>>2]=n,n=A[Q+20>>2],A[I+16>>2]=A[Q+16>>2],A[I+20>>2]=n,n=A[Q+12>>2],A[I+8>>2]=A[Q+8>>2],A[I+12>>2]=n,n=A[Q+4>>2],A[I>>2]=A[Q>>2],A[I+4>>2]=n,n=A[p+36>>2],A[o+32>>2]=A[p+32>>2],A[o+36>>2]=n,n=A[p+28>>2],A[o+24>>2]=A[p+24>>2],A[o+28>>2]=n,n=A[p+20>>2],A[o+16>>2]=A[p+16>>2],A[o+20>>2]=n,n=A[p+12>>2],A[o+8>>2]=A[p+8>>2],A[o+12>>2]=n,n=A[p+4>>2],A[o>>2]=A[p>>2],A[o+4>>2]=n,n=C,l=c[C+33712|0],P2(B=g+480|0,g+1928|0),(0|l)>0?(kA(C=g+320|0,B,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),b2(B,C,(g+640|0)+M0((254&l)>>>1|0,160)|0)):(0|l)>=0||(kA(C=g+320|0,B=g+480|0,e),kA(a,t,r),kA(_,r,e),kA(s,B,t),qg(B,C,(g+640|0)+M0((0-l&254)>>>1|0,160)|0)),kA(g,C=g+480|0,e),kA(Q,t,r),kA(p,r,e),kA(h,C,t),C=n-1|0,n;);return w2(C=g+640|0,g),C=X0(C,32),W=g+2048|0,C}function IC(C,g,e,t,r){var o,I,a,_,s,h,n,B,Q,p,l,v,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0;if(t?(wA=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,hA=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,iA=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,mA=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24):(wA=1797285236,iA=1634760805,hA=2036477234,mA=857760878),t=o=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,K=I=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,sA=a=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,M=wA,$=_=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,J=hA,nA=s=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,z=h=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,x=n=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,g=B=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,_A=mA,D=Q=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,b=p=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,q=l=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,e=v=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,V=iA,(0|r)>0)for(;fA=pA(e+_A|0,7)^nA,HA=pA(fA+_A|0,9)^K,uA=pA(t+V|0,7)^D,aA=pA(uA+V|0,9)^z,EA=pA(uA+aA|0,13)^t,vA=pA(M+$|0,7)^b,x=pA(vA+M|0,9)^x,b=pA(x+vA|0,13)^$,M=pA(x+b|0,18)^M,D=pA(g+J|0,7)^sA,t=EA^pA(M+D|0,7),K=pA(t+M|0,9)^HA,sA=pA(t+K|0,13)^D,M=pA(K+sA|0,18)^M,q=pA(D+J|0,9)^q,D=pA(q+D|0,13)^g,g=pA(D+q|0,18)^J,$=pA(g+fA|0,7)^b,z=pA($+g|0,9)^aA,nA=pA($+z|0,13)^fA,J=pA(z+nA|0,18)^g,e=pA(fA+HA|0,13)^e,b=pA(e+HA|0,18)^_A,g=pA(b+uA|0,7)^D,x=pA(g+b|0,9)^x,D=pA(g+x|0,13)^uA,_A=pA(x+D|0,18)^b,V=pA(aA+EA|0,18)^V,e=pA(V+vA|0,7)^e,q=pA(e+V|0,9)^q,b=pA(e+q|0,13)^vA,V=pA(q+b|0,18)^V,(0|(YA=YA+2|0))<(0|r););r=M+wA|0,c[C+60|0]=r,c[C+61|0]=r>>>8,c[C+62|0]=r>>>16,c[C+63|0]=r>>>24,r=sA+a|0,c[C+56|0]=r,c[C+57|0]=r>>>8,c[C+58|0]=r>>>16,c[C+59|0]=r>>>24,r=K+I|0,c[C+52|0]=r,c[C+53|0]=r>>>8,c[C+54|0]=r>>>16,c[C+55|0]=r>>>24,t=t+o|0,c[C+48|0]=t,c[C+49|0]=t>>>8,c[C+50|0]=t>>>16,c[C+51|0]=t>>>24,t=$+_|0,c[C+44|0]=t,c[C+45|0]=t>>>8,c[C+46|0]=t>>>16,c[C+47|0]=t>>>24,t=J+hA|0,c[C+40|0]=t,c[C+41|0]=t>>>8,c[C+42|0]=t>>>16,c[C+43|0]=t>>>24,t=nA+s|0,c[C+36|0]=t,c[C+37|0]=t>>>8,c[C+38|0]=t>>>16,c[C+39|0]=t>>>24,t=z+h|0,c[C+32|0]=t,c[C+33|0]=t>>>8,c[C+34|0]=t>>>16,c[C+35|0]=t>>>24,t=x+n|0,c[C+28|0]=t,c[C+29|0]=t>>>8,c[C+30|0]=t>>>16,c[C+31|0]=t>>>24,g=g+B|0,c[C+24|0]=g,c[C+25|0]=g>>>8,c[C+26|0]=g>>>16,c[C+27|0]=g>>>24,g=_A+mA|0,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=D+Q|0,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24,g=b+p|0,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=q+l|0,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=e+v|0,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=V+iA|0,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24}function M2(C){var g=0,e=0,t=0,r=0,o=0,I=0,a=0,_=0,s=0;A:if(C|=0){o=(t=C-8|0)+(C=-8&(g=A[C-4>>2]))|0;g:if(!(1&g)){if(!(2&g)||(t=t-(g=A[t>>2])|0)>>>0>2],g>>>0<=255){if((0|(r=A[t+8>>2]))!=(0|e))break t;_=37620,s=A[9405]&pA(-2,g>>>3|0),A[_>>2]=s;break g}if(a=A[t+24>>2],(0|e)!=(0|t)){g=A[t+8>>2],A[g+12>>2]=e,A[e+8>>2]=g;break C}if(r=A[t+20>>2])g=t+20|0;else{if(!(r=A[t+16>>2]))break e;g=t+16|0}for(;I=g,g=(e=r)+20|0,(r=A[e+20>>2])||(g=e+16|0,r=A[e+16>>2]););A[I>>2]=0;break C}if(3&~(g=A[o+4>>2]))break g;return A[9407]=C,A[o+4>>2]=-2&g,A[t+4>>2]=1|C,void(A[o>>2]=C)}A[r+12>>2]=e,A[e+8>>2]=r;break g}e=0}if(a){g=A[t+28>>2];C:{if(A[(r=37924+(g<<2)|0)>>2]==(0|t)){if(A[r>>2]=e,e)break C;_=37624,s=A[9406]&pA(-2,g),A[_>>2]=s;break g}if(A[a+(A[a+16>>2]==(0|t)?16:20)>>2]=e,!e)break g}A[e+24>>2]=a,(g=A[t+16>>2])&&(A[e+16>>2]=g,A[g+24>>2]=e),(g=A[t+20>>2])&&(A[e+20>>2]=g,A[g+24>>2]=e)}}if(!(t>>>0>=o>>>0)&&1&(g=A[o+4>>2])){g:{C:{e:{t:{if(!(2&g)){if((0|o)==A[9411]){if(A[9411]=t,C=A[9408]+C|0,A[9408]=C,A[t+4>>2]=1|C,A[9410]!=(0|t))break A;return A[9407]=0,void(A[9410]=0)}if((0|o)==A[9410])return A[9410]=t,C=A[9407]+C|0,A[9407]=C,A[t+4>>2]=1|C,void(A[C+t>>2]=C);if(C=(-8&g)+C|0,e=A[o+12>>2],g>>>0<=255){if((0|(r=A[o+8>>2]))==(0|e)){_=37620,s=A[9405]&pA(-2,g>>>3|0),A[_>>2]=s;break C}A[r+12>>2]=e,A[e+8>>2]=r;break C}if(a=A[o+24>>2],(0|e)!=(0|o)){g=A[o+8>>2],A[g+12>>2]=e,A[e+8>>2]=g;break e}if(r=A[o+20>>2])g=o+20|0;else{if(!(r=A[o+16>>2]))break t;g=o+16|0}for(;I=g,g=(e=r)+20|0,(r=A[e+20>>2])||(g=e+16|0,r=A[e+16>>2]););A[I>>2]=0;break e}A[o+4>>2]=-2&g,A[t+4>>2]=1|C,A[C+t>>2]=C;break g}e=0}if(a){g=A[o+28>>2];e:{if((0|o)==A[(r=37924+(g<<2)|0)>>2]){if(A[r>>2]=e,e)break e;_=37624,s=A[9406]&pA(-2,g),A[_>>2]=s;break C}if(A[a+((0|o)==A[a+16>>2]?16:20)>>2]=e,!e)break C}A[e+24>>2]=a,(g=A[o+16>>2])&&(A[e+16>>2]=g,A[g+24>>2]=e),(g=A[o+20>>2])&&(A[e+20>>2]=g,A[g+24>>2]=e)}}if(A[t+4>>2]=1|C,A[C+t>>2]=C,A[9410]==(0|t))return void(A[9407]=C)}if(C>>>0<=255)return g=37660+(-8&C)|0,(r=A[9405])&(C=1<<(C>>>3))?C=A[g+8>>2]:(A[9405]=C|r,C=g),A[g+8>>2]=t,A[C+12>>2]=t,A[t+12>>2]=g,void(A[t+8>>2]=C);e=31,C>>>0<=16777215&&(e=62+((C>>>38-(g=A1(C>>>8|0))&1)-(g<<1)|0)|0),A[t+28>>2]=e,A[t+16>>2]=0,A[t+20>>2]=0,I=37924+(e<<2)|0;g:{C:{if((g=A[9406])&(r=1<>>1|0):0),g=A[I>>2];;){if(r=g,(-8&A[g+4>>2])==(0|C))break C;if(g=e>>>29|0,e<<=1,!(g=A[(I=16+((4&g)+r|0)|0)>>2]))break}e=24,g=r}else A[9406]=g|r,e=24,g=I;r=t,o=t,C=8;break g}g=A[r+8>>2],A[g+12>>2]=t,e=8,I=r+8|0,o=0,C=24}A[I>>2]=t,A[e+t>>2]=g,A[t+12>>2]=r,A[C+t>>2]=o,C=A[9413]-1|0,A[9413]=C||-1}}}function se(C,g,e,t,r,o,I,a,_){var s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0;if(g-65>>>0<4294967232|I>>>0>64)C=-1;else{v=s=W,W=s=s-512&-64;A:{g:if(!(!(!(t|r)|e)|!C|((p=255&g)-65&255)>>>0<=191|!(!(g=255&I)||o)|g>>>0>=65)){if(g){if(!o)break g;a?(h=725511199^(i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24),n=-1694144372^(i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24),I=-1377402159^(i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24),a=1359893119^(i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24)):(h=725511199,n=-1694144372,I=-1377402159,a=1359893119),_?(B=327033209^(i[_+8|0]|i[_+9|0]<<8|i[_+10|0]<<16|i[_+11|0]<<24),Q=1541459225^(i[_+12|0]|i[_+13|0]<<8|i[_+14|0]<<16|i[_+15|0]<<24),l=-79577749^(i[0|_]|i[_+1|0]<<8|i[_+2|0]<<16|i[_+3|0]<<24),_=528734635^(i[_+4|0]|i[_+5|0]<<8|i[_+6|0]<<16|i[_+7|0]<<24)):(B=327033209,Q=1541459225,l=-79577749,_=528734635),$0(s- -64|0,0,293),A[s+56>>2]=B,A[s+60>>2]=Q,A[s+48>>2]=l,A[s+52>>2]=_,A[s+40>>2]=h,A[s+44>>2]=n,A[s+32>>2]=I,A[s+36>>2]=a,A[s+24>>2]=1595750129,A[s+28>>2]=-1521486534,A[s+16>>2]=-23791573,A[s+20>>2]=1013904242,A[s+8>>2]=-2067093701,A[s+12>>2]=-1150833019,A[s>>2]=-222443256^(g<<8|p),A[s+4>>2]=g>>>24^1779033703,$0((I=s+384|0)+g|0,0,128-g|0),P0(I,o,g),P0(s+96|0,I,128),A[s+352>>2]=128,y0(I,128),g=128}else a?(h=725511199^(i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24),n=-1694144372^(i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24),o=1359893119^(i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24),g=-1377402159^(i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24)):(h=725511199,n=-1694144372,o=1359893119,g=-1377402159),_?(B=327033209^(i[_+8|0]|i[_+9|0]<<8|i[_+10|0]<<16|i[_+11|0]<<24),Q=1541459225^(i[_+12|0]|i[_+13|0]<<8|i[_+14|0]<<16|i[_+15|0]<<24),a=528734635^(i[_+4|0]|i[_+5|0]<<8|i[_+6|0]<<16|i[_+7|0]<<24),I=-79577749^(i[0|_]|i[_+1|0]<<8|i[_+2|0]<<16|i[_+3|0]<<24)):(B=327033209,Q=1541459225,a=528734635,I=-79577749),$0(s- -64|0,0,293),A[s+56>>2]=B,A[s+60>>2]=Q,A[s+48>>2]=I,A[s+52>>2]=a,A[s+40>>2]=h,A[s+44>>2]=n,A[s+32>>2]=g,A[s+36>>2]=o,A[s+24>>2]=1595750129,A[s+28>>2]=-1521486534,A[s+16>>2]=-23791573,A[s+20>>2]=1013904242,A[s+8>>2]=-2067093701,A[s+12>>2]=-1150833019,A[s>>2]=-222443256^p,A[s+4>>2]=1779033703,g=0;C:if(t|r)for(_=s+224|0,a=s+96|0;;){if(I=g+a|0,!r&t>>>0<=(o=256-g|0)>>>0){P0(I,e,t),A[s+352>>2]=t+A[s+352>>2];break C}if(P0(I,e,o),A[s+352>>2]=o+A[s+352>>2],h=g=A[s+68>>2],g=(n=(I=A[s+64>>2])+128|0)>>>0<128?g+1|0:g,A[s+64>>2]=n,A[s+68>>2]=g,g=A[s+76>>2],g=(h=I=(0|h)==-1&I>>>0>4294967167)>>>0>(I=I+A[s+72>>2]|0)>>>0?g+1|0:g,A[s+72>>2]=I,A[s+76>>2]=g,cg(s,a),P0(a,_,128),g=A[s+352>>2]-128|0,A[s+352>>2]=g,e=e+o|0,!((r=r-(t>>>0>>0)|0)|(t=t-o|0)))break}_C(s,C,p),W=v;break A}h2(),Q0()}C=0}return C}function Be(C,g,e,t,r,o,I){var a,_,s=0,h=0,n=0;if(W=a=W+-64|0,_=r1(32)){A[a+36>>2]=0,A[a+40>>2]=0,A[a+28>>2]=0,A[a+32>>2]=0,A[a+24>>2]=16,A[a+20>>2]=r,A[a+16>>2]=t,A[a+12>>2]=e,A[a+8>>2]=32,A[a+4>>2]=_,A[a+60>>2]=0,A[a+56>>2]=1,A[a+52>>2]=1,A[a+48>>2]=g,A[a+44>>2]=C;A:if(C=Jg(a+4|0,I))y0(_,32);else{if(o){s=a+4|0,W=r=W-32|0,C=-31;g:{C:{e:switch(I-1|0){case 1:C=i[1434]|i[1435]<<8|i[1436]<<16|i[1437]<<24,g=i[1430]|i[1431]<<8|i[1432]<<16|i[1433]<<24,c[0|o]=g,c[o+1|0]=g>>>8,c[o+2|0]=g>>>16,c[o+3|0]=g>>>24,c[o+4|0]=C,c[o+5|0]=C>>>8,c[o+6|0]=C>>>16,c[o+7|0]=C>>>24,C=i[1439]|i[1440]<<8|i[1441]<<16|i[1442]<<24,g=i[1435]|i[1436]<<8|i[1437]<<16|i[1438]<<24,c[o+5|0]=g,c[o+6|0]=g>>>8,c[o+7|0]=g>>>16,c[o+8|0]=g>>>24,c[o+9|0]=C,c[o+10|0]=C>>>8,c[o+11|0]=C>>>16,c[o+12|0]=C>>>24,e=-12,g=12;break C;case 0:break e;default:break g}C=i[1422]|i[1423]<<8|i[1424]<<16|i[1425]<<24,g=i[1418]|i[1419]<<8|i[1420]<<16|i[1421]<<24,c[0|o]=g,c[o+1|0]=g>>>8,c[o+2|0]=g>>>16,c[o+3|0]=g>>>24,c[o+4|0]=C,c[o+5|0]=C>>>8,c[o+6|0]=C>>>16,c[o+7|0]=C>>>24,C=i[1426]|i[1427]<<8|i[1428]<<16|i[1429]<<24,c[o+8|0]=C,c[o+9|0]=C>>>8,c[o+10|0]=C>>>16,c[o+11|0]=C>>>24,e=-11,g=11}if(!(C=n0(s)))if(c[r+13|0]=0,c[r+11|0]=49,c[r+12|0]=57,(e=e+128|0)>>>0<=(C=p1(r+11|0))>>>0)C=-31;else if(g=P0(g+o|0,r+11|0,C+1|0),(h=e-C|0)>>>0<4)C=-31;else{for(c[0|(I=C+g|0)]=36,c[I+1|0]=109,c[I+2|0]=61,c[I+3|0]=0,C=A[s+44>>2],g=10;e=g,t=(C>>>0)/10|0,c[0|(n=(g=g-1|0)+(r+22|0)|0)]=C-M0(t,10)|48,!(C>>>0<10)&&(C=t,g););if(P0(C=r+11|0,n,g=11-e|0),c[C+g|0]=0,(g=h-3|0)>>>0<=(C=p1(C))>>>0)C=-31;else if(e=P0(I+3|0,r+11|0,C+1|0),(h=g-C|0)>>>0<4)C=-31;else{for(c[0|(I=C+e|0)]=44,c[I+1|0]=116,c[I+2|0]=61,c[I+3|0]=0,C=A[s+40>>2],g=10;e=g,t=(C>>>0)/10|0,c[0|(n=(g=g-1|0)+(r+22|0)|0)]=C-M0(t,10)|48,!(C>>>0<10)&&(C=t,g););if(P0(C=r+11|0,n,g=11-e|0),c[C+g|0]=0,(g=h-3|0)>>>0<=(C=p1(C))>>>0)C=-31;else if(e=P0(I+3|0,r+11|0,C+1|0),(h=g-C|0)>>>0<4)C=-31;else{for(c[0|(I=C+e|0)]=44,c[I+1|0]=112,c[I+2|0]=61,c[I+3|0]=0,C=A[s+48>>2],g=10;e=g,t=(C>>>0)/10|0,c[0|(n=(g=g-1|0)+(r+22|0)|0)]=C-M0(t,10)|48,!(C>>>0<10)&&(C=t,g););P0(C=r+11|0,n,g=11-e|0),c[C+g|0]=0,(g=h-3|0)>>>0<=(C=p1(C))>>>0?C=-31:(e=P0(I+3|0,r+11|0,C+1|0),(t=g-C|0)>>>0<2?C=-31:(c[0|(C=C+e|0)]=36,c[C+1|0]=0,DC(g=C+1|0,e=t-1|0,A[s+16>>2],A[s+20>>2],3)?(C=-31,(t=(t=e)-(e=p1(g))|0)>>>0<2||(c[0|(C=g+e|0)]=36,c[C+1|0]=0,C=DC(C+1|0,t-1|0,A[s>>2],A[s+4>>2],3)?0:-31)):C=-31))}}}}if(W=r+32|0,C){y0(_,32),y0(o,128),C=-31;break A}}y0(_,32),C=0}M2(_)}else C=-22;return W=a- -64|0,C}function ye(C,g){var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0;e=C+g|0;A:{g:if(!(1&(t=A[C+4>>2]))){if(!(2&t))break A;g=(t=A[C>>2])+g|0;C:{e:{t:{if((0|(C=C-t|0))!=A[9410]){if(r=A[C+12>>2],t>>>0<=255){if((0|(o=A[C+8>>2]))!=(0|r))break t;_=37620,s=A[9405]&pA(-2,t>>>3|0),A[_>>2]=s;break g}if(I=A[C+24>>2],(0|C)!=(0|r)){t=A[C+8>>2],A[t+12>>2]=r,A[r+8>>2]=t;break C}if(o=A[C+20>>2])t=C+20|0;else{if(!(o=A[C+16>>2]))break e;t=C+16|0}for(;a=t,t=(r=o)+20|0,(o=A[r+20>>2])||(t=r+16|0,o=A[r+16>>2]););A[a>>2]=0;break C}if(3&~(t=A[e+4>>2]))break g;return A[9407]=g,A[e+4>>2]=-2&t,A[C+4>>2]=1|g,void(A[e>>2]=g)}A[o+12>>2]=r,A[r+8>>2]=o;break g}r=0}if(I){t=A[C+28>>2];C:{if(A[(o=37924+(t<<2)|0)>>2]==(0|C)){if(A[o>>2]=r,r)break C;_=37624,s=A[9406]&pA(-2,t),A[_>>2]=s;break g}if(A[I+(A[I+16>>2]==(0|C)?16:20)>>2]=r,!r)break g}A[r+24>>2]=I,(t=A[C+16>>2])&&(A[r+16>>2]=t,A[t+24>>2]=r),(t=A[C+20>>2])&&(A[r+20>>2]=t,A[t+24>>2]=r)}}g:{C:{e:{t:{if(!(2&(t=A[e+4>>2]))){if(A[9411]==(0|e)){if(A[9411]=C,g=A[9408]+g|0,A[9408]=g,A[C+4>>2]=1|g,A[9410]!=(0|C))break A;return A[9407]=0,void(A[9410]=0)}if(A[9410]==(0|e))return A[9410]=C,g=A[9407]+g|0,A[9407]=g,A[C+4>>2]=1|g,void(A[C+g>>2]=g);if(g=(-8&t)+g|0,r=A[e+12>>2],t>>>0<=255){if((0|(o=A[e+8>>2]))==(0|r)){_=37620,s=A[9405]&pA(-2,t>>>3|0),A[_>>2]=s;break C}A[o+12>>2]=r,A[r+8>>2]=o;break C}if(I=A[e+24>>2],(0|r)!=(0|e)){t=A[e+8>>2],A[t+12>>2]=r,A[r+8>>2]=t;break e}if(o=A[e+20>>2])t=e+20|0;else{if(!(o=A[e+16>>2]))break t;t=e+16|0}for(;a=t,t=(r=o)+20|0,(o=A[r+20>>2])||(t=r+16|0,o=A[r+16>>2]););A[a>>2]=0;break e}A[e+4>>2]=-2&t,A[C+4>>2]=1|g,A[C+g>>2]=g;break g}r=0}if(I){t=A[e+28>>2];e:{if(A[(o=37924+(t<<2)|0)>>2]==(0|e)){if(A[o>>2]=r,r)break e;_=37624,s=A[9406]&pA(-2,t),A[_>>2]=s;break C}if(A[I+(A[I+16>>2]==(0|e)?16:20)>>2]=r,!r)break C}A[r+24>>2]=I,(t=A[e+16>>2])&&(A[r+16>>2]=t,A[t+24>>2]=r),(t=A[e+20>>2])&&(A[r+20>>2]=t,A[t+24>>2]=r)}}if(A[C+4>>2]=1|g,A[C+g>>2]=g,A[9410]==(0|C))return void(A[9407]=g)}if(g>>>0<=255)return t=37660+(-8&g)|0,(r=A[9405])&(g=1<<(g>>>3))?g=A[t+8>>2]:(A[9405]=g|r,g=t),A[t+8>>2]=C,A[g+12>>2]=C,A[C+12>>2]=t,void(A[C+8>>2]=g);r=31,g>>>0<=16777215&&(r=62+((g>>>38-(t=A1(g>>>8|0))&1)-(t<<1)|0)|0),A[C+28>>2]=r,A[C+16>>2]=0,A[C+20>>2]=0,t=37924+(r<<2)|0;g:{if((o=A[9406])&(a=1<>>1|0):0),t=A[t>>2];;){if(o=t,(-8&A[t+4>>2])==(0|g))break g;if(t=r>>>29|0,r<<=1,!(t=A[16+(a=o+(4&t)|0)>>2]))break}A[a+16>>2]=C,A[C+24>>2]=o}else A[9406]=o|a,A[t>>2]=C,A[C+24>>2]=t;return A[C+12>>2]=C,void(A[C+8>>2]=C)}g=A[o+8>>2],A[g+12>>2]=C,A[o+8>>2]=C,A[C+24>>2]=0,A[C+12>>2]=o,A[C+8>>2]=g}}function gg(C,g){var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0;return W=e=W-512|0,t=-1,o=i[g+31|0],r=i[0|g],1&(((255&(127&~o|~(i[g+1|0]&i[g+2|0]&i[g+3|0]&i[g+4|0]&i[g+5|0]&i[g+6|0]&i[g+7|0]&i[g+8|0]&i[g+9|0]&i[g+10|0]&i[g+11|0]&i[g+12|0]&i[g+13|0]&i[g+14|0]&i[g+15|0]&i[g+16|0]&i[g+17|0]&i[g+18|0]&i[g+19|0]&i[g+20|0]&i[g+21|0]&i[g+22|0]&i[g+23|0]&i[g+24|0]&i[g+25|0]&i[g+26|0]&i[g+27|0]&i[g+28|0]&i[g+29|0]&i[g+30|0])))-1&236-r)>>>8|r|o>>>7)||(z1(o=e+336|0,g),gA(e+288|0,o),g=A[e+324>>2],A[e+276>>2]=0-g,t=A[e+320>>2],A[e+272>>2]=0-t,r=A[e+316>>2],A[e+268>>2]=0-r,I=A[e+312>>2],A[e+264>>2]=0-I,a=A[e+308>>2],A[e+260>>2]=0-a,_=A[e+304>>2],A[e+256>>2]=0-_,s=A[e+300>>2],A[e+252>>2]=0-s,h=A[e+296>>2],A[e+248>>2]=0-h,n=A[e+292>>2],A[e+244>>2]=0-n,B=A[e+288>>2],A[e+240>>2]=1-B,gA(Q=e+144|0,v=e+240|0),A[e+228>>2]=g,A[e+224>>2]=t,A[e+220>>2]=r,A[e+216>>2]=I,A[e+212>>2]=a,A[e+208>>2]=_,A[e+204>>2]=s,A[e+200>>2]=h,A[e+196>>2]=n,A[e+192>>2]=B+1,gA(t=e+96|0,I=e+192|0),kA(g=e+48|0,1584,Q),r=A[e+96>>2],a=A[e+48>>2],_=A[e+100>>2],s=A[e+52>>2],h=A[e+104>>2],n=A[e+56>>2],B=A[e+108>>2],Q=A[e+60>>2],p=A[e+112>>2],l=A[e+64>>2],D=A[e+116>>2],b=A[e+68>>2],M=A[e+120>>2],x=A[e+72>>2],q=A[e+124>>2],V=A[e+76>>2],$=A[e+128>>2],K=A[e+80>>2],A[e+84>>2]=0-(A[e+84>>2]+A[e+132>>2]|0),A[e+80>>2]=0-($+K|0),A[e+76>>2]=0-(q+V|0),A[e+72>>2]=0-(M+x|0),A[e+68>>2]=0-(D+b|0),A[e+64>>2]=0-(p+l|0),A[e+60>>2]=0-(B+Q|0),A[e+56>>2]=0-(h+n|0),A[e+52>>2]=0-(_+s|0),A[e+48>>2]=0-(r+a|0),kA(e,g,t),A[e+404>>2]=0,A[e+408>>2]=0,A[e+412>>2]=0,A[e+416>>2]=0,A[e+420>>2]=0,A[e+388>>2]=0,A[e+392>>2]=0,A[e+384>>2]=1,A[e+396>>2]=0,A[e+400>>2]=0,l=QC(r=e+432|0,e+384|0,e),kA(C,r,I),kA(t=C+40|0,r,C),kA(t,t,g),kA(C,C,o),o=A[C+36>>2]<<1,A[C+36>>2]=o,r=A[C+32>>2]<<1,A[C+32>>2]=r,I=A[C+28>>2]<<1,A[C+28>>2]=I,a=A[C+24>>2]<<1,A[C+24>>2]=a,_=A[C+20>>2]<<1,A[C+20>>2]=_,s=A[C+16>>2]<<1,A[C+16>>2]=s,h=A[C+12>>2]<<1,A[C+12>>2]=h,n=A[C+8>>2]<<1,A[C+8>>2]=n,B=A[C+4>>2]<<1,A[C+4>>2]=B,Q=A[C>>2]<<1,A[C>>2]=Q,w2(p=e+480|0,C),g=0-(1&c[e+480|0])|0,A[C+36>>2]=o^g&(o^0-o),A[C+32>>2]=r^g&(r^0-r),A[C+28>>2]=I^g&(I^0-I),A[C+24>>2]=a^g&(a^0-a),A[C+20>>2]=_^g&(_^0-_),A[C+16>>2]=s^g&(s^0-s),A[C+12>>2]=h^g&(h^0-h),A[C+8>>2]=n^g&(n^0-n),A[C+4>>2]=B^g&(B^0-B),A[C>>2]=Q^g&(Q^0-Q),kA(t,v,t),A[C+84>>2]=0,A[C+88>>2]=0,A[C+80>>2]=1,A[C+92>>2]=0,A[C+96>>2]=0,A[C+100>>2]=0,A[C+104>>2]=0,A[C+108>>2]=0,A[C+112>>2]=0,A[C+116>>2]=0,kA(g=C+120|0,C,t),w2(p,g),C=i[e+480|0],w2(p,t),t=0-(X0(p,32)|1-l|1&C)|0),W=e+512|0,t}function sC(C,g,e,t){var r,o=0,I=0;r=o=W,W=o=o-576&-64,A[o+188>>2]=g;A:if(g>>>0<=64){if((0|sg(I=o+192|0,0,0,g))<0)break A;(0|q2(I,o+188|0,4,0))<0,(0|q2(I,e,t,0))<0,lC(I,C,g)}else if(!((0|sg(I=o+192|0,0,0,64))<0||(0|q2(I,o+188|0,4,0))<0||(0|q2(I,e,t,0))<0||(0|lC(I,o+112|0,64))<0)){if(e=A[o+116>>2],t=A[o+112>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=e,c[C+5|0]=e>>>8,c[C+6|0]=e>>>16,c[C+7|0]=e>>>24,e=A[o+124>>2],t=A[o+120>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=e,c[C+13|0]=e>>>8,c[C+14|0]=e>>>16,c[C+15|0]=e>>>24,e=A[o+140>>2],t=A[o+136>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=e,c[C+29|0]=e>>>8,c[C+30|0]=e>>>16,c[C+31|0]=e>>>24,e=A[o+132>>2],t=A[o+128>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=e,c[C+21|0]=e>>>8,c[C+22|0]=e>>>16,c[C+23|0]=e>>>24,C=C+32|0,(g=g-32|0)>>>0>=65)for(;;){if(e=A[o+172>>2],A[o+104>>2]=A[o+168>>2],A[o+108>>2]=e,e=A[o+164>>2],A[o+96>>2]=A[o+160>>2],A[o+100>>2]=e,e=A[o+156>>2],A[o+88>>2]=A[o+152>>2],A[o+92>>2]=e,e=A[o+148>>2],A[o+80>>2]=A[o+144>>2],A[o+84>>2]=e,e=A[o+140>>2],A[o+72>>2]=A[o+136>>2],A[o+76>>2]=e,t=A[o+132>>2],A[(e=o- -64|0)>>2]=A[o+128>>2],A[e+4>>2]=t,e=A[o+124>>2],A[o+56>>2]=A[o+120>>2],A[o+60>>2]=e,e=A[o+116>>2],A[o+48>>2]=A[o+112>>2],A[o+52>>2]=e,(0|EC(o+112|0,64,o+48|0,64,0,0,0))<0)break A;if(e=A[o+116>>2],t=A[o+112>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=e,c[C+5|0]=e>>>8,c[C+6|0]=e>>>16,c[C+7|0]=e>>>24,e=A[o+124>>2],t=A[o+120>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=e,c[C+13|0]=e>>>8,c[C+14|0]=e>>>16,c[C+15|0]=e>>>24,e=A[o+140>>2],t=A[o+136>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=e,c[C+29|0]=e>>>8,c[C+30|0]=e>>>16,c[C+31|0]=e>>>24,e=A[o+132>>2],t=A[o+128>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=e,c[C+21|0]=e>>>8,c[C+22|0]=e>>>16,c[C+23|0]=e>>>24,C=C+32|0,!((g=g-32|0)>>>0>64))break}e=A[o+172>>2],A[o+104>>2]=A[o+168>>2],A[o+108>>2]=e,e=A[o+164>>2],A[o+96>>2]=A[o+160>>2],A[o+100>>2]=e,e=A[o+156>>2],A[o+88>>2]=A[o+152>>2],A[o+92>>2]=e,e=A[o+148>>2],A[o+80>>2]=A[o+144>>2],A[o+84>>2]=e,e=A[o+140>>2],A[o+72>>2]=A[o+136>>2],A[o+76>>2]=e,t=A[o+132>>2],A[(e=o- -64|0)>>2]=A[o+128>>2],A[e+4>>2]=t,e=A[o+124>>2],A[o+56>>2]=A[o+120>>2],A[o+60>>2]=e,e=A[o+116>>2],A[o+48>>2]=A[o+112>>2],A[o+52>>2]=e,(0|EC(e=o+112|0,g,o+48|0,64,0,0,0))<0||P0(C,e,g)}y0(o+192|0,384),W=r}function he(C,g,e,t,r,o,I,a,_,s,h){var n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0;if(n=w(_,0,a,0),!(l=y)&n>>>0>=1073741824|l||(0|I)==1|I>>>0>1)return A[9404]=22,-1;if(n=I,!(!(o&(l=o-1|0)|I&(n=(0|l)!=-1?n+1|0:n))&(!I&o>>>0>=2|!!(0|I)))||!_||!a)return A[9404]=28,-1;if(!(33554431/(_>>>0)>>>0>>0|a>>>0>16777215)&&!I&33554431/(a>>>0)>>>0>=o>>>0&&!((q=M0(x=a<<7,_))>>>0>(n=(v=M0(o,x))+q|0)>>>0||(B=n)>>>0>(n=((D=a<<8)+n|0)- -64|0)>>>0)){A:{if(n>>>0>O2[C+8>>2]&&(p=-1,Ye(C),W=l=W-16|0,B=m(l+12|0,n),A[9404]=B,B=B?0:A[l+12>>2],A[C+4>>2]=B,A[C>>2]=B,A[C+8>>2]=B?n:0,W=l+16|0,!B))break A;for(NA(g,e,t,r,$=A[C+4>>2],q),z=((v=(B=(V=q+$|0)+v|0)+(a<<7)|0)+x|0)-64|0,r=o-1|0,M=a<<5,K=B+D|0,_A=(B+x|0)-64|0;;){for(D=M0(x,J)+$|0,p=0;t=(C=p<<2)+D|0,A[C+B>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,n=(t=4|C)+B|0,t=t+D|0,A[n>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,n=(t=8|C)+B|0,t=t+D|0,A[n>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,t=(C|=12)+B|0,C=C+D|0,A[t>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,l=0,n=0,(0|M)!=(0|(p=p+4|0)););for(t=0,C=0;P0(V+(M0(t,M)<<2)|0,B,x),Pg(B,v,K,a),P0(V+(M0(M,1|t)<<2)|0,v,x),Pg(v,B,K,a),(0|I)==(0|(C=(t=t+2|0)>>>0<2?C+1|0:C))&t>>>0>>0|C>>>0>>0;);for(;;){for(C=V+(M0(M,r&A[_A>>2])<<2)|0,p=0;A[(Q=(t=p<<2)+B|0)>>2]=A[Q>>2]^A[C+t>>2],A[(b=(Q=4|t)+B|0)>>2]=A[b>>2]^A[C+Q>>2],A[(b=(Q=8|t)+B|0)>>2]=A[b>>2]^A[C+Q>>2],A[(Q=(t|=12)+B|0)>>2]=A[Q>>2]^A[C+t>>2],(0|M)!=(0|(p=p+4|0)););for(Pg(B,v,K,a),C=V+(M0(M,r&A[z>>2])<<2)|0,p=0;A[(Q=(t=p<<2)+v|0)>>2]=A[Q>>2]^A[C+t>>2],A[(b=(Q=4|t)+v|0)>>2]=A[b>>2]^A[C+Q>>2],A[(b=(Q=8|t)+v|0)>>2]=A[b>>2]^A[C+Q>>2],A[(Q=(t|=12)+v|0)>>2]=A[Q>>2]^A[C+t>>2],(0|M)!=(0|(p=p+4|0)););if(Pg(v,B,K,a),p=0,!((0|I)==(0|(n=(l=l+2|0)>>>0<2?n+1|0:n))&o>>>0>l>>>0|I>>>0>n>>>0))break}for(;t=(C=p<<2)+D|0,n=A[C+B>>2],c[0|t]=n,c[t+1|0]=n>>>8,c[t+2|0]=n>>>16,c[t+3|0]=n>>>24,t=(n=4|C)+D|0,n=A[n+B>>2],c[0|t]=n,c[t+1|0]=n>>>8,c[t+2|0]=n>>>16,c[t+3|0]=n>>>24,t=(n=8|C)+D|0,n=A[n+B>>2],c[0|t]=n,c[t+1|0]=n>>>8,c[t+2|0]=n>>>16,c[t+3|0]=n>>>24,C=(t=12|C)+D|0,t=A[t+B>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,(0|M)!=(0|(p=p+4|0)););if((0|(J=J+1|0))==(0|_))break}NA(g,e,$,q,s,h),p=0}return p}return A[9404]=48,-1}function Qe(C,g,e){C|=0,g|=0,e|=0;var t,r,o,I=0;W=t=W-192|0,A[t+96>>2]=0,A[t+100>>2]=0,A[t+104>>2]=0,A[t+108>>2]=0,A[t+112>>2]=0,A[t+116>>2]=0,A[t+120>>2]=0,A[t+124>>2]=0,I=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[t+80>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[t+84>>2]=I,I=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[t+88>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[t+92>>2]=I,r=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,o=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,I=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[t+40>>2]=0,A[t+44>>2]=0,A[t+48>>2]=0,A[t+52>>2]=0,A[t+56>>2]=0,A[t+60>>2]=0,A[t+64>>2]=I,A[t+68>>2]=g,A[t+72>>2]=r,A[t+76>>2]=o,A[t+32>>2]=0,A[t+36>>2]=0,g=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,A[t+16>>2]=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,A[t+20>>2]=g,g=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,A[t+24>>2]=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,A[t+28>>2]=g,g=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,A[t>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,A[t+4>>2]=g,g=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,A[t+8>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,A[t+12>>2]=g,yr(t- -64|0,t),e=A[t+124>>2],A[t+184>>2]=A[t+120>>2],A[t+188>>2]=e,g=A[t+116>>2],A[t+176>>2]=A[t+112>>2],A[t+180>>2]=g,g=A[t+108>>2],A[t+168>>2]=A[t+104>>2],A[t+172>>2]=g,g=A[t+100>>2],A[t+160>>2]=A[t+96>>2],A[t+164>>2]=g,g=A[t+92>>2],A[t+152>>2]=A[t+88>>2],A[t+156>>2]=g,g=A[t+84>>2],A[t+144>>2]=A[t+80>>2],A[t+148>>2]=g,g=A[t+76>>2],A[t+136>>2]=A[t+72>>2],A[t+140>>2]=g,g=A[t+68>>2],A[t+128>>2]=A[t+64>>2],A[t+132>>2]=g,d1(g=t+128|0),I=A[t+156>>2],e=A[t+152>>2],c[C+24|0]=e,c[C+25|0]=e>>>8,c[C+26|0]=e>>>16,c[C+27|0]=e>>>24,c[C+28|0]=I,c[C+29|0]=I>>>8,c[C+30|0]=I>>>16,c[C+31|0]=I>>>24,I=A[t+148>>2],e=A[t+144>>2],c[C+16|0]=e,c[C+17|0]=e>>>8,c[C+18|0]=e>>>16,c[C+19|0]=e>>>24,c[C+20|0]=I,c[C+21|0]=I>>>8,c[C+22|0]=I>>>16,c[C+23|0]=I>>>24,I=A[t+140>>2],e=A[t+136>>2],c[C+8|0]=e,c[C+9|0]=e>>>8,c[C+10|0]=e>>>16,c[C+11|0]=e>>>24,c[C+12|0]=I,c[C+13|0]=I>>>8,c[C+14|0]=I>>>16,c[C+15|0]=I>>>24,I=A[t+132>>2],e=A[t+128>>2],c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,c[C+4|0]=I,c[C+5|0]=I>>>8,c[C+6|0]=I>>>16,c[C+7|0]=I>>>24,y0(g,64),W=t+192|0}function Pg(C,g,e,t){var r=0,o=0,I=0,a=0,_=0;if(o=A[4+(r=((t<<7)+C|0)-64|0)>>2],A[e>>2]=A[r>>2],A[e+4>>2]=o,o=A[r+60>>2],A[e+56>>2]=A[r+56>>2],A[e+60>>2]=o,o=A[r+52>>2],A[e+48>>2]=A[r+48>>2],A[e+52>>2]=o,o=A[r+44>>2],A[e+40>>2]=A[r+40>>2],A[e+44>>2]=o,o=A[r+36>>2],A[e+32>>2]=A[r+32>>2],A[e+36>>2]=o,o=A[r+28>>2],A[e+24>>2]=A[r+24>>2],A[e+28>>2]=o,o=A[r+20>>2],A[e+16>>2]=A[r+16>>2],A[e+20>>2]=o,o=A[r+12>>2],A[e+8>>2]=A[r+8>>2],A[e+12>>2]=o,t)for(o=t<<1,_=t<<6;t=(a<<6)+C|0,A[e>>2]=A[e>>2]^A[t>>2],A[e+4>>2]=A[e+4>>2]^A[t+4>>2],A[e+8>>2]=A[e+8>>2]^A[t+8>>2],A[e+12>>2]=A[e+12>>2]^A[t+12>>2],A[e+16>>2]=A[e+16>>2]^A[t+16>>2],A[e+20>>2]=A[e+20>>2]^A[t+20>>2],A[e+24>>2]=A[e+24>>2]^A[t+24>>2],A[e+28>>2]=A[e+28>>2]^A[t+28>>2],A[e+32>>2]=A[e+32>>2]^A[t+32>>2],A[e+36>>2]=A[e+36>>2]^A[t+36>>2],A[e+40>>2]=A[e+40>>2]^A[t+40>>2],A[e+44>>2]=A[e+44>>2]^A[t+44>>2],A[e+48>>2]=A[e+48>>2]^A[t+48>>2],A[e+52>>2]=A[e+52>>2]^A[t+52>>2],A[e+56>>2]=A[e+56>>2]^A[t+56>>2],A[e+60>>2]=A[e+60>>2]^A[t+60>>2],Se(e),I=A[e+60>>2],A[56+(r=(a<<5)+g|0)>>2]=A[e+56>>2],A[r+60>>2]=I,I=A[e+52>>2],A[r+48>>2]=A[e+48>>2],A[r+52>>2]=I,I=A[e+44>>2],A[r+40>>2]=A[e+40>>2],A[r+44>>2]=I,I=A[e+36>>2],A[r+32>>2]=A[e+32>>2],A[r+36>>2]=I,I=A[e+28>>2],A[r+24>>2]=A[e+24>>2],A[r+28>>2]=I,I=A[e+20>>2],A[r+16>>2]=A[e+16>>2],A[r+20>>2]=I,I=A[e+12>>2],A[r+8>>2]=A[e+8>>2],A[r+12>>2]=I,I=A[e+4>>2],A[r>>2]=A[e>>2],A[r+4>>2]=I,A[e>>2]=A[e>>2]^A[t- -64>>2],A[e+4>>2]=A[e+4>>2]^A[t+68>>2],A[e+8>>2]=A[e+8>>2]^A[t+72>>2],A[e+12>>2]=A[e+12>>2]^A[t+76>>2],A[e+16>>2]=A[e+16>>2]^A[t+80>>2],A[e+20>>2]=A[e+20>>2]^A[t+84>>2],A[e+24>>2]=A[e+24>>2]^A[t+88>>2],A[e+28>>2]=A[e+28>>2]^A[t+92>>2],A[e+32>>2]=A[e+32>>2]^A[t+96>>2],A[e+36>>2]=A[e+36>>2]^A[t+100>>2],A[e+40>>2]=A[e+40>>2]^A[t+104>>2],A[e+44>>2]=A[e+44>>2]^A[t+108>>2],A[e+48>>2]=A[e+48>>2]^A[t+112>>2],A[e+52>>2]=A[e+52>>2]^A[t+116>>2],A[e+56>>2]=A[e+56>>2]^A[t+120>>2],A[e+60>>2]=A[e+60>>2]^A[t+124>>2],Se(e),t=r+_|0,r=A[e+60>>2],A[t+56>>2]=A[e+56>>2],A[t+60>>2]=r,r=A[e+52>>2],A[t+48>>2]=A[e+48>>2],A[t+52>>2]=r,r=A[e+44>>2],A[t+40>>2]=A[e+40>>2],A[t+44>>2]=r,r=A[e+36>>2],A[t+32>>2]=A[e+32>>2],A[t+36>>2]=r,r=A[e+28>>2],A[t+24>>2]=A[e+24>>2],A[t+28>>2]=r,r=A[e+20>>2],A[t+16>>2]=A[e+16>>2],A[t+20>>2]=r,r=A[e+12>>2],A[t+8>>2]=A[e+8>>2],A[t+12>>2]=r,r=A[e+4>>2],A[t>>2]=A[e>>2],A[t+4>>2]=r,o>>>0>(a=a+2|0)>>>0;);}function BC(C,g,e,t){var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0;if(p=A[C+36>>2],B=A[C+32>>2],Q=A[C+28>>2],h=A[C+24>>2],n=A[C+20>>2],!t&e>>>0>=16|t)for(K=!i[C+80|0]<<24,v=A[C+4>>2],J=M0(v,5),b=A[C+8>>2],V=M0(b,5),x=A[C+12>>2],q=M0(x,5),$=A[C+16>>2],M=M0($,5),D=A[C>>2];r=w(I=((i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108863)+h|0,0,x,0),_=y,n=(a=w(h=(67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))+n|0,0,$,0))+r|0,r=y+_|0,r=a>>>0>n>>>0?r+1|0:r,_=w(Q=((i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67108863)+Q|0,0,b,0),r=y+r|0,r=_>>>0>(n=_+n|0)>>>0?r+1|0:r,_=w(B=((i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6|0)+B|0,0,v,0),r=y+r|0,r=_>>>0>(n=_+n|0)>>>0?r+1|0:r,_=w(p=p+K+((i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)>>>8)|0,0,D,0),r=y+r|0,z=n=_+n|0,n=_>>>0>n>>>0?r+1|0:r,r=w(I,0,b,0),_=y,a=w(h,0,x,0),o=y+_|0,o=(r=a+r|0)>>>0>>0?o+1|0:o,_=(a=w(Q,0,v,0))+r|0,r=y+o|0,r=a>>>0>_>>>0?r+1|0:r,a=w(B,0,D,0),r=y+r|0,r=a>>>0>(_=a+_|0)>>>0?r+1|0:r,a=w(p,0,M,0),r=y+r|0,_A=_=a+_|0,_=a>>>0>_>>>0?r+1|0:r,r=w(I,0,v,0),s=y,a=(o=w(h,0,b,0))+r|0,r=y+s|0,r=o>>>0>a>>>0?r+1|0:r,s=w(Q,0,D,0),o=y+r|0,o=(a=s+a|0)>>>0>>0?o+1|0:o,s=w(B,0,M,0),r=y+o|0,r=(a=s+a|0)>>>0>>0?r+1|0:r,s=w(p,0,q,0),r=y+r|0,sA=a=s+a|0,a=a>>>0>>0?r+1|0:r,r=w(I,0,D,0),o=y,s=(l=w(h,0,v,0))+r|0,r=y+o|0,r=s>>>0>>0?r+1|0:r,o=w(Q,0,M,0),r=y+r|0,r=o>>>0>(s=o+s|0)>>>0?r+1|0:r,l=w(B,0,q,0),o=y+r|0,o=(s=l+s|0)>>>0>>0?o+1|0:o,l=w(p,0,V,0),r=y+o|0,r=(s=l+s|0)>>>0>>0?r+1|0:r,l=s,s=r,r=w(I,0,M,0),o=y,I=(h=w(h,0,D,0))+r|0,r=y+o|0,r=I>>>0>>0?r+1|0:r,h=w(Q,0,q,0),r=y+r|0,r=(I=h+I|0)>>>0>>0?r+1|0:r,h=w(B,0,V,0),r=y+r|0,r=(I=h+I|0)>>>0>>0?r+1|0:r,h=w(p,0,J,0),o=y+r|0,o=(I=h+I|0)>>>0>>0?o+1|0:o,h=I,r=s,r=(I=(Q=(67108863&o)<<6|I>>>26)+l|0)>>>0>>0?r+1|0:r,Q=I,B=(67108863&r)<<6|I>>>26,r=a,r=(I=B+sA|0)>>>0>>0?r+1|0:r,B=I,o=_,p=r=(I=(67108863&r)<<6|I>>>26)+_A|0,_=(67108863&(o=r>>>0>>0?o+1|0:o))<<6|r>>>26,r=n,h=(67108863&Q)+((r=M0((67108863&((I=_+z|0)>>>0<_>>>0?r+1:r))<<6|I>>>26,5)+(67108863&h)|0)>>>26|0)|0,Q=67108863&B,B=67108863&p,p=67108863&I,n=67108863&r,g=g+16|0,!(t=t-(e>>>0<16)|0)&(e=e-16|0)>>>0>15|t;);A[C+20>>2]=n,A[C+36>>2]=p,A[C+32>>2]=B,A[C+28>>2]=Q,A[C+24>>2]=h}function sg(C,g,e,t){C|=0,g|=0;var r=0;return r=-1,(t|=0)-65>>>0<4294967232|(e|=0)>>>0>64||(e&&g?(W=r=W-128|0,!g|((t&=255)-65&255)>>>0<=191|((e&=255)-65&255)>>>0<=191?(h2(),Q0()):($0(C- -64|0,0,293),c[C+56|0]=121,c[C+57|0]=33,c[C+58|0]=126,c[C+59|0]=19,c[C+60|0]=25,c[C+61|0]=205,c[C+62|0]=224,c[C+63|0]=91,c[C+48|0]=107,c[C+49|0]=189,c[C+50|0]=65,c[C+51|0]=251,c[C+52|0]=171,c[C+53|0]=217,c[C+54|0]=131,c[C+55|0]=31,c[C+40|0]=31,c[C+41|0]=108,c[C+42|0]=62,c[C+43|0]=43,c[C+44|0]=140,c[C+45|0]=104,c[C+46|0]=5,c[C+47|0]=155,c[C+32|0]=209,c[C+33|0]=130,c[C+34|0]=230,c[C+35|0]=173,c[C+36|0]=127,c[C+37|0]=82,c[C+38|0]=14,c[C+39|0]=81,c[C+24|0]=241,c[C+25|0]=54,c[C+26|0]=29,c[C+27|0]=95,c[C+28|0]=58,c[C+29|0]=245,c[C+30|0]=79,c[C+31|0]=165,c[C+16|0]=43,c[C+17|0]=248,c[C+18|0]=148,c[C+19|0]=254,c[C+20|0]=114,c[C+21|0]=243,c[C+22|0]=110,c[C+23|0]=60,c[C+8|0]=59,c[C+9|0]=167,c[C+10|0]=202,c[C+11|0]=132,c[C+12|0]=133,c[C+13|0]=174,c[C+14|0]=103,c[C+15|0]=187,t=-222443256^(e<<8|t),c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,t=e>>>24^1779033703,c[C+4|0]=t,c[C+5|0]=t>>>8,c[C+6|0]=t>>>16,c[C+7|0]=t>>>24,e=P0($0(r,0,128),g,e),P0(C+96|0,e,128),g=128+(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)|0,c[C+352|0]=g,c[C+353|0]=g>>>8,c[C+354|0]=g>>>16,c[C+355|0]=g>>>24,y0(e,128),W=e+128|0)):(((g=255&t)-65&255)>>>0<=191&&(h2(),Q0()),$0(C- -64|0,0,293),c[C+56|0]=121,c[C+57|0]=33,c[C+58|0]=126,c[C+59|0]=19,c[C+60|0]=25,c[C+61|0]=205,c[C+62|0]=224,c[C+63|0]=91,c[C+48|0]=107,c[C+49|0]=189,c[C+50|0]=65,c[C+51|0]=251,c[C+52|0]=171,c[C+53|0]=217,c[C+54|0]=131,c[C+55|0]=31,c[C+40|0]=31,c[C+41|0]=108,c[C+42|0]=62,c[C+43|0]=43,c[C+44|0]=140,c[C+45|0]=104,c[C+46|0]=5,c[C+47|0]=155,c[C+32|0]=209,c[C+33|0]=130,c[C+34|0]=230,c[C+35|0]=173,c[C+36|0]=127,c[C+37|0]=82,c[C+38|0]=14,c[C+39|0]=81,c[C+24|0]=241,c[C+25|0]=54,c[C+26|0]=29,c[C+27|0]=95,c[C+28|0]=58,c[C+29|0]=245,c[C+30|0]=79,c[C+31|0]=165,c[C+16|0]=43,c[C+17|0]=248,c[C+18|0]=148,c[C+19|0]=254,c[C+20|0]=114,c[C+21|0]=243,c[C+22|0]=110,c[C+23|0]=60,c[C+8|0]=59,c[C+9|0]=167,c[C+10|0]=202,c[C+11|0]=132,c[C+12|0]=133,c[C+13|0]=174,c[C+14|0]=103,c[C+15|0]=187,g^=-222443256,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,c[C+4|0]=103,c[C+5|0]=230,c[C+6|0]=9,c[C+7|0]=106),r=0),0|r}function g1(C,g,e,t){C|=0,g|=0,e|=0;var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0;for((t|=0)?(o=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,I=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,r=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,h=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24):(o=2036477234,I=857760878,r=1634760805,h=1797285236),a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,B=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,_=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,Q=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,s=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,M=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,p=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,t=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,l=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,v=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,g=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,e=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24;n=e,e=pA((D=g)^(g=e+r|0),16),n=p=pA(n^(r=e+p|0),12),b=pA((D=g+p|0)^e,8),g=pA(n^(p=b+r|0),7),a=pA((e=t+h|0)^a,16),t=pA((Q=a+Q|0)^t,12),n=l,o=pA((h=o+l|0)^B,16),r=pA(n^(l=o+s|0),12),s=pA((s=o)^(o=r+h|0),8),e=pA(s^(h=(x=e+t|0)+g|0),16),B=pA((I=I+v|0)^_,16),v=pA((_=B+M|0)^v,12),n=g,g=pA((I=v+I|0)^B,8),n=pA(n^(_=(q=g+_|0)+e|0),12),B=pA(e^(h=n+h|0),8),e=pA((M=B+_|0)^n,7),a=pA(a^x,8),t=pA((Q=a+Q|0)^t,7),_=pA((o=t+o|0)^g,16),t=pA((g=_+p|0)^t,12),_=pA(_^(o=t+o|0),8),t=pA((p=g+_|0)^t,7),g=pA((s=s+l|0)^r,7),l=pA((I=g+I|0)^b,16),b=pA(g^(r=l+Q|0),12),g=pA(l^(I=b+I|0),8),l=pA((Q=r+g|0)^b,7),n=s,s=a,r=pA(v^q,7),s=pA(s^(a=r+D|0),16),D=pA(r^(v=n+s|0),12),a=pA(s^(r=D+a|0),8),v=pA((s=v+a|0)^D,7),(0|(V=V+1|0))!=10;);return c[0|C]=r,c[C+1|0]=r>>>8,c[C+2|0]=r>>>16,c[C+3|0]=r>>>24,c[C+28|0]=a,c[C+29|0]=a>>>8,c[C+30|0]=a>>>16,c[C+31|0]=a>>>24,c[C+24|0]=B,c[C+25|0]=B>>>8,c[C+26|0]=B>>>16,c[C+27|0]=B>>>24,c[C+20|0]=_,c[C+21|0]=_>>>8,c[C+22|0]=_>>>16,c[C+23|0]=_>>>24,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24,c[C+12|0]=h,c[C+13|0]=h>>>8,c[C+14|0]=h>>>16,c[C+15|0]=h>>>24,c[C+8|0]=o,c[C+9|0]=o>>>8,c[C+10|0]=o>>>16,c[C+11|0]=o>>>24,c[C+4|0]=I,c[C+5|0]=I>>>8,c[C+6|0]=I>>>16,c[C+7|0]=I>>>24,0}function b2(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0;p=A[g+4>>2],Q=A[g+44>>2],v=A[g+8>>2],D=A[g+48>>2],b=A[g+12>>2],M=A[g+52>>2],x=A[g+16>>2],q=A[g+56>>2],V=A[g+20>>2],$=A[g+60>>2],K=A[g+24>>2],J=A[(l=g- -64|0)>>2],z=A[g+28>>2],_A=A[g+68>>2],sA=A[g+32>>2],nA=A[g+72>>2],fA=A[g+36>>2],uA=A[g+76>>2],A[C>>2]=A[g>>2]+A[g+40>>2],A[C+36>>2]=fA+uA,A[C+32>>2]=sA+nA,A[C+28>>2]=z+_A,A[C+24>>2]=K+J,A[C+20>>2]=V+$,A[C+16>>2]=x+q,A[C+12>>2]=b+M,A[C+8>>2]=v+D,A[C+4>>2]=Q+p,Q=A[g+4>>2],v=A[g+44>>2],D=A[g+8>>2],b=A[g+48>>2],M=A[g+12>>2],x=A[g+52>>2],q=A[g+16>>2],V=A[g+56>>2],$=A[g+20>>2],K=A[g+60>>2],J=A[g+24>>2],l=A[l>>2],p=A[g+28>>2],z=A[g+68>>2],_A=A[g+32>>2],sA=A[g+72>>2],nA=A[g>>2],fA=A[g+40>>2],A[C+76>>2]=A[g+76>>2]-A[g+36>>2],A[C+72>>2]=sA-_A,A[C+68>>2]=z-p,A[(p=C- -64|0)>>2]=l-J,A[C+60>>2]=K-$,A[C+56>>2]=V-q,A[C+52>>2]=x-M,A[C+48>>2]=b-D,A[C+44>>2]=v-Q,A[C+40>>2]=fA-nA,kA(C+80|0,C,e),kA(Q=C+40|0,Q,e+40|0),kA(C+120|0,e+120|0,g+120|0),kA(C,g+80|0,e+80|0),fA=A[C+4>>2],uA=A[C+8>>2],o=A[C+12>>2],I=A[C+16>>2],a=A[C+20>>2],_=A[C+24>>2],s=A[C+28>>2],h=A[C+32>>2],n=A[C+36>>2],g=A[C+44>>2],e=A[C+84>>2],Q=A[C+48>>2],v=A[C+88>>2],D=A[C+52>>2],b=A[C+92>>2],M=A[C+56>>2],x=A[C+96>>2],q=A[C+60>>2],V=A[C+100>>2],$=A[p>>2],K=A[C+104>>2],l=A[C+68>>2],J=A[C+108>>2],z=A[C+72>>2],_A=A[C+112>>2],B=A[C>>2],sA=A[C+40>>2],nA=A[C+80>>2],t=A[C+76>>2],r=A[C+116>>2],A[C+76>>2]=t+r,A[C+72>>2]=z+_A,A[C+68>>2]=l+J,A[p>>2]=$+K,A[C+60>>2]=q+V,A[C+56>>2]=M+x,A[C+52>>2]=D+b,A[C+48>>2]=Q+v,A[C+44>>2]=g+e,A[C+40>>2]=sA+nA,A[C+36>>2]=r-t,A[C+32>>2]=_A-z,A[C+28>>2]=J-l,A[C+24>>2]=K-$,A[C+20>>2]=V-q,A[C+16>>2]=x-M,A[C+12>>2]=b-D,A[C+8>>2]=v-Q,A[C+4>>2]=e-g,A[C>>2]=nA-sA,g=n<<1,e=A[C+156>>2],A[C+156>>2]=g-e,p=h<<1,Q=A[C+152>>2],A[C+152>>2]=p-Q,v=s<<1,D=A[C+148>>2],A[C+148>>2]=v-D,b=_<<1,M=A[C+144>>2],A[C+144>>2]=b-M,x=a<<1,q=A[C+140>>2],A[C+140>>2]=x-q,V=I<<1,$=A[C+136>>2],A[C+136>>2]=V-$,K=o<<1,l=A[C+132>>2],A[C+132>>2]=K-l,J=uA<<1,z=A[C+128>>2],A[C+128>>2]=J-z,_A=fA<<1,sA=A[C+124>>2],A[C+124>>2]=_A-sA,nA=B<<1,fA=A[C+120>>2],A[C+120>>2]=nA-fA,A[C+112>>2]=Q+p,A[C+108>>2]=v+D,A[C+104>>2]=b+M,A[C+100>>2]=x+q,A[C+96>>2]=V+$,A[C+92>>2]=K+l,A[C+88>>2]=J+z,A[C+84>>2]=_A+sA,A[C+80>>2]=nA+fA,A[C+116>>2]=g+e}function qg(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0;p=A[g+4>>2],Q=A[g+44>>2],v=A[g+8>>2],D=A[g+48>>2],b=A[g+12>>2],M=A[g+52>>2],x=A[g+16>>2],q=A[g+56>>2],V=A[g+20>>2],$=A[g+60>>2],K=A[g+24>>2],J=A[(l=g- -64|0)>>2],z=A[g+28>>2],_A=A[g+68>>2],sA=A[g+32>>2],nA=A[g+72>>2],fA=A[g+36>>2],uA=A[g+76>>2],A[C>>2]=A[g>>2]+A[g+40>>2],A[C+36>>2]=fA+uA,A[C+32>>2]=sA+nA,A[C+28>>2]=z+_A,A[C+24>>2]=K+J,A[C+20>>2]=V+$,A[C+16>>2]=x+q,A[C+12>>2]=b+M,A[C+8>>2]=v+D,A[C+4>>2]=Q+p,Q=A[g+4>>2],v=A[g+44>>2],D=A[g+8>>2],b=A[g+48>>2],M=A[g+12>>2],x=A[g+52>>2],q=A[g+16>>2],V=A[g+56>>2],$=A[g+20>>2],K=A[g+60>>2],J=A[g+24>>2],l=A[l>>2],p=A[g+28>>2],z=A[g+68>>2],_A=A[g+32>>2],sA=A[g+72>>2],nA=A[g>>2],fA=A[g+40>>2],A[C+76>>2]=A[g+76>>2]-A[g+36>>2],A[C+72>>2]=sA-_A,A[C+68>>2]=z-p,A[(p=C- -64|0)>>2]=l-J,A[C+60>>2]=K-$,A[C+56>>2]=V-q,A[C+52>>2]=x-M,A[C+48>>2]=b-D,A[C+44>>2]=v-Q,A[C+40>>2]=fA-nA,kA(C+80|0,C,e+40|0),kA(Q=C+40|0,Q,e),kA(C+120|0,e+120|0,g+120|0),kA(C,g+80|0,e+80|0),fA=A[C+4>>2],uA=A[C+8>>2],o=A[C+12>>2],I=A[C+16>>2],a=A[C+20>>2],_=A[C+24>>2],s=A[C+28>>2],h=A[C+32>>2],n=A[C+36>>2],g=A[C+44>>2],e=A[C+84>>2],Q=A[C+48>>2],v=A[C+88>>2],D=A[C+52>>2],b=A[C+92>>2],M=A[C+56>>2],x=A[C+96>>2],q=A[C+60>>2],V=A[C+100>>2],$=A[p>>2],K=A[C+104>>2],l=A[C+68>>2],J=A[C+108>>2],z=A[C+72>>2],_A=A[C+112>>2],B=A[C>>2],sA=A[C+40>>2],nA=A[C+80>>2],t=A[C+76>>2],r=A[C+116>>2],A[C+76>>2]=t+r,A[C+72>>2]=z+_A,A[C+68>>2]=l+J,A[p>>2]=$+K,A[C+60>>2]=q+V,A[C+56>>2]=M+x,A[C+52>>2]=D+b,A[C+48>>2]=Q+v,A[C+44>>2]=g+e,A[C+40>>2]=sA+nA,A[C+36>>2]=r-t,A[C+32>>2]=_A-z,A[C+28>>2]=J-l,A[C+24>>2]=K-$,A[C+20>>2]=V-q,A[C+16>>2]=x-M,A[C+12>>2]=b-D,A[C+8>>2]=v-Q,A[C+4>>2]=e-g,A[C>>2]=nA-sA,g=A[C+156>>2],e=n<<1,A[C+156>>2]=g+e,p=A[C+152>>2],Q=h<<1,A[C+152>>2]=p+Q,v=A[C+148>>2],D=s<<1,A[C+148>>2]=v+D,b=A[C+144>>2],M=_<<1,A[C+144>>2]=b+M,x=A[C+140>>2],q=a<<1,A[C+140>>2]=x+q,V=A[C+136>>2],$=I<<1,A[C+136>>2]=V+$,K=A[C+132>>2],l=o<<1,A[C+132>>2]=K+l,J=A[C+128>>2],z=uA<<1,A[C+128>>2]=J+z,_A=A[C+124>>2],sA=fA<<1,A[C+124>>2]=_A+sA,nA=A[C+120>>2],fA=B<<1,A[C+120>>2]=nA+fA,A[C+112>>2]=Q-p,A[C+108>>2]=D-v,A[C+104>>2]=M-b,A[C+100>>2]=q-x,A[C+96>>2]=$-V,A[C+92>>2]=l-K,A[C+88>>2]=z-J,A[C+84>>2]=sA-_A,A[C+80>>2]=fA-nA,A[C+116>>2]=e-g}function yC(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0;p=A[g+4>>2],Q=A[g+44>>2],v=A[g+8>>2],D=A[g+48>>2],b=A[g+12>>2],M=A[g+52>>2],x=A[g+16>>2],q=A[g+56>>2],V=A[g+20>>2],$=A[g+60>>2],K=A[g+24>>2],J=A[(l=g- -64|0)>>2],z=A[g+28>>2],_A=A[g+68>>2],sA=A[g+32>>2],nA=A[g+72>>2],fA=A[g+36>>2],uA=A[g+76>>2],A[C>>2]=A[g>>2]+A[g+40>>2],A[C+36>>2]=fA+uA,A[C+32>>2]=sA+nA,A[C+28>>2]=z+_A,A[C+24>>2]=K+J,A[C+20>>2]=V+$,A[C+16>>2]=x+q,A[C+12>>2]=b+M,A[C+8>>2]=v+D,A[C+4>>2]=Q+p,Q=A[g+4>>2],v=A[g+44>>2],D=A[g+8>>2],b=A[g+48>>2],M=A[g+12>>2],x=A[g+52>>2],q=A[g+16>>2],V=A[g+56>>2],$=A[g+20>>2],K=A[g+60>>2],J=A[g+24>>2],l=A[l>>2],p=A[g+28>>2],z=A[g+68>>2],_A=A[g+32>>2],sA=A[g+72>>2],nA=A[g>>2],fA=A[g+40>>2],A[C+76>>2]=A[g+76>>2]-A[g+36>>2],A[C+72>>2]=sA-_A,A[C+68>>2]=z-p,A[(p=C- -64|0)>>2]=l-J,A[C+60>>2]=K-$,A[C+56>>2]=V-q,A[C+52>>2]=x-M,A[C+48>>2]=b-D,A[C+44>>2]=v-Q,A[C+40>>2]=fA-nA,kA(C+80|0,C,e),kA(Q=C+40|0,Q,e+40|0),kA(C+120|0,e+80|0,g+120|0),fA=A[g+84>>2],uA=A[g+88>>2],o=A[g+92>>2],I=A[g+96>>2],a=A[g+100>>2],_=A[g+104>>2],s=A[g+108>>2],h=A[g+112>>2],n=A[g+116>>2],e=A[C+44>>2],Q=A[C+84>>2],v=A[C+48>>2],D=A[C+88>>2],b=A[C+52>>2],M=A[C+92>>2],x=A[C+56>>2],q=A[C+96>>2],V=A[C+60>>2],$=A[C+100>>2],K=A[p>>2],l=A[C+104>>2],J=A[C+68>>2],z=A[C+108>>2],_A=A[C+72>>2],sA=A[C+112>>2],B=A[g+80>>2],g=A[C+40>>2],nA=A[C+80>>2],t=A[C+76>>2],r=A[C+116>>2],A[C+76>>2]=t+r,A[C+72>>2]=_A+sA,A[C+68>>2]=J+z,A[p>>2]=K+l,A[C+60>>2]=V+$,A[C+56>>2]=x+q,A[C+52>>2]=b+M,A[C+48>>2]=v+D,A[C+44>>2]=e+Q,A[C+40>>2]=g+nA,A[C+36>>2]=r-t,A[C+32>>2]=sA-_A,A[C+28>>2]=z-J,A[C+24>>2]=l-K,A[C+20>>2]=$-V,A[C+16>>2]=q-x,A[C+12>>2]=M-b,A[C+8>>2]=D-v,A[C+4>>2]=Q-e,A[C>>2]=nA-g,g=n<<1,e=A[C+156>>2],A[C+156>>2]=g-e,p=h<<1,Q=A[C+152>>2],A[C+152>>2]=p-Q,v=s<<1,D=A[C+148>>2],A[C+148>>2]=v-D,b=_<<1,M=A[C+144>>2],A[C+144>>2]=b-M,x=a<<1,q=A[C+140>>2],A[C+140>>2]=x-q,V=I<<1,$=A[C+136>>2],A[C+136>>2]=V-$,K=o<<1,l=A[C+132>>2],A[C+132>>2]=K-l,J=uA<<1,z=A[C+128>>2],A[C+128>>2]=J-z,_A=fA<<1,sA=A[C+124>>2],A[C+124>>2]=_A-sA,nA=B<<1,fA=A[C+120>>2],A[C+120>>2]=nA-fA,A[C+112>>2]=Q+p,A[C+108>>2]=v+D,A[C+104>>2]=b+M,A[C+100>>2]=x+q,A[C+96>>2]=V+$,A[C+92>>2]=K+l,A[C+88>>2]=J+z,A[C+84>>2]=_A+sA,A[C+80>>2]=nA+fA,A[C+116>>2]=g+e}function z1(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0;p=i[g+31|0],e=i[g+30|0],t=i[g+29|0],r=i[g+6|0],o=i[g+5|0],I=i[g+4|0],a=i[g+9|0],_=i[g+8|0],s=i[g+7|0],h=i[g+12|0],z=i[g+11|0],_A=i[g+10|0],n=i[g+15|0],sA=i[g+14|0],B=i[g+13|0],V=i[g+28|0],J=i[g+27|0],$=i[g+26|0],q=i[g+25|0],M=i[g+24|0],b=i[g+23|0],l=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,x=(D=i[g+21|0])<<15,D=v=D>>>17|0,K=x,K|=(x=i[g+20|0])<<7,x=(v=x>>>25|0)|D,D=(v=i[g+22|0])>>>9|0,v=v<<23|K,D|=x,Q=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=0,x=v,v=(33554431&(g=(K=Q+16777216|0)>>>0<16777216?1:g))<<7|K>>>25,g=(g>>>25|0)+D|0,v=(D=x=x+v|0)>>>0>>0?g+1|0:g,g=(x=D+33554432|0)>>>0<33554432?v+1|0:v,A[C+24>>2]=D-(-67108864&x),v=(D=b>>>27|0)|M>>>19|q>>>11,D=b=(M=q<<21|(b=M<<13|b<<5))+(D=(67108863&(D=g))<<6|x>>>26)|0,g=v,v=(b=M+16777216|0)>>>0<16777216?g+1|0:g,A[C+28>>2]=D-(1040187392&b),D=(v=(g=v)>>>25|0)+(D=J>>>20|$>>>28|V>>>12)|0,g=D=(v=b=(g=(33554431&g)<<7|b>>>25)+(J<<12|$<<4|V<<20)|0)>>>0>>0?D+1|0:D,b=(V=v+33554432|0)>>>0<33554432?g+1|0:g,A[C+32>>2]=v-(-67108864&V),D=h>>>13|(v=z>>>21|_A>>>29),g=(D=(J=16777216+(z=z<<11|_A<<3|h<<19)|0)>>>0<16777216?D+1|0:D)>>>25|0,D=(v=M=sA<<10|B<<2|n<<18)+(M=(33554431&D)<<7|J>>>25)|0,v=g+(q=sA>>>22|B>>>30|n>>>14)|0,g=v=D>>>0>>0?v+1|0:v,M=((67108863&(g=(M=D+33554432|0)>>>0<33554432?g+1|0:g))<<6|(v=M)>>>26)+($=Q-(-33554432&K)|0)|0,A[C+20>>2]=M,A[C+16>>2]=D-(-67108864&v),v=o>>>18|I>>>26|r>>>10,D=(v=($=16777216+(_A=o<<14|I<<6|r<<22)|0)>>>0<16777216?v+1|0:v)>>>25|0,v=(g=M=_<<13|s<<5|a<<21)+(M=(33554431&v)<<7|$>>>25)|0,g=D+(q=_>>>19|s>>>27|a>>>11)|0,g=v>>>0>>0?g+1|0:g,D=(q=v+33554432|0)>>>0<33554432?g+1|0:g,A[C+8>>2]=v-(-67108864&q),V=(b=(67108863&b)<<6|V>>>26)+(sA=p<<18&33292288|e<<10|t<<2)|0,g=v=e>>>22|t>>>30,v=(b=sA+16777216|0)>>>0<16777216?g+1|0:g,A[C+36>>2]=V-(33554432&b),D=z+((67108863&D)<<6|q>>>26)|0,A[C+12>>2]=D-(234881024&J),M=_A-(2113929216&$)|0,D=w((33554431&(g=v))<<7|b>>>25,v=g>>>25|0,19,0),g=y,D=(v=D+l|0)>>>0>>0?g+1|0:g,b=((67108863&(D=(g=v+33554432|0)>>>0<33554432?D+1|0:D))<<6|g>>>26)+M|0,A[C+4>>2]=b,A[C>>2]=v-(-67108864&g)}function hC(C,g,e,t,r,o,I,a){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0;var _=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0;if((-7&(a|=0))==1){A:{g:{C:{e:{t:{o:{i:{if(t){r:{c:{if(a>>>0<=3){for(;;){n=s;a:{_:{I:{s:{for(;;){if(_=(_=(h=c[e+n|0])-65|0)&(~(90-h)&~_)>>>8&255|h+4&(~(h+65488)&~(57-h))>>>8&255|h+185&(~(h+65439)&~(122-h))>>>8&255|~(1+(16336^h))>>>8&63|~(1+(16340^h))>>>8&62,(0|(_|=(_-1&1+(65470^h))>>>8&255))!=255)break s;if(_=0,!r)break r;if(!l0(r,h))break;if((n=n+1|0)>>>0>=t>>>0)break I}s=n;break r}if(p=_+(p<<6)|0,B>>>0>1)break _;B=B+6|0;break a}s=(C=s+1|0)>>>0>>0?t:C;break r}if(B=B-2|0,g>>>0<=Q>>>0)break c;c[C+Q|0]=p>>>B,Q=Q+1|0}if(_=0,!((s=n+1|0)>>>0>>0))break}break r}for(;;){a:{if(_=(_=(h=c[e+n|0])-65|0)&(~(90-h)&~_)>>>8&255|h+4&(~(h+65488)&~(57-h))>>>8&255|h+185&(~(h+65439)&~(122-h))>>>8&255|~(1+(16288^h))>>>8&63|~(1+(16338^h))>>>8&62,(0|(_|=(_-1&1+(65470^h))>>>8&255))==255){if(_=0,!r)break r;if(l0(r,h)){if((n=n+1|0)>>>0>=t>>>0)break a;continue}s=n;break r}if(p=_+(p<<6)|0,B>>>0<2)B=B+6|0;else{if(B=B-2|0,g>>>0<=Q>>>0)break c;c[C+Q|0]=p>>>B,Q=Q+1|0}if(_=0,(s=n+1|0)>>>0>=t>>>0)break r;n=s;continue}break}s=(C=s+1|0)>>>0>>0?t:C;break r}s=n,A[9404]=68,_=1}if(B>>>0>4)break i;C=s}else C=0;if(g=-1,_){s=C;break A}if(~(-1<>>0<2){a=C;break t}if(s=C>>>0>t>>>0?C:t,n=B>>>1|0,!r)break o;for(a=C;;){if((0|a)==(0|s)){_=68;break e}if((0|(C=c[e+a|0]))!=61){if(!l0(r,C)){_=28,s=a;break e}}else n=n-1|0;if(a=a+1|0,!n)break}break t}g=-1;break A}if(_=68,C>>>0>=t>>>0)break e;if(i[C+e|0]!=61){s=C,_=28;break e}if(a=C+n|0,(0|n)!=1){if((0|(B=C+1|0))==(0|s))break e;if(i[e+B|0]!=61){s=B,_=28;break e}if((0|n)!=2&&((0|(C=C+2|0))==(0|s)||(_=28,s=C,i[C+e|0]!=61)))break e}}if(g=0,r)break C;break g}A[9404]=_;break A}if(!(t>>>0<=a>>>0)){for(;;){if(!l0(r,c[e+a|0]))break g;if((0|(a=a+1|0))==(0|t))break}a=t}}s=a,l=Q}return I?A[I>>2]=e+s:(0|t)!=(0|s)&&(A[9404]=28,g=-1),o&&(A[o>>2]=l),0|g}h2(),Q0()}function S1(C,g,e,t){C|=0,g|=0,e|=0;var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0;for((t|=0)?(r=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,_=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,s=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,t=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24):(r=1797285236,_=2036477234,s=857760878,t=1634760805),o=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,a=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,I=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,D=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,v=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,b=20,p=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,l=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,n=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,B=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,Q=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,g=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,e=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24;h=pA(e+s|0,7)^o,M=pA(h+s|0,9)^v,n=pA(t+p|0,7)^n,x=pA(n+t|0,9)^a,q=pA(x+n|0,13)^p,B=pA(r+l|0,7)^B,I=pA(B+r|0,9)^I,a=pA(I+B|0,13)^l,r=pA(I+a|0,18)^r,o=pA(g+_|0,7)^D,p=q^pA(r+o|0,7),v=M^pA(p+r|0,9),D=pA(p+v|0,13)^o,r=pA(v+D|0,18)^r,Q=pA(o+_|0,9)^Q,V=pA(Q+o|0,13)^g,g=pA(V+Q|0,18)^_,l=pA(g+h|0,7)^a,a=pA(l+g|0,9)^x,o=pA(a+l|0,13)^h,_=pA(o+a|0,18)^g,h=pA(h+M|0,13)^e,e=pA(h+M|0,18)^s,g=pA(e+n|0,7)^V,I=pA(g+e|0,9)^I,n=pA(g+I|0,13)^n,s=pA(I+n|0,18)^e,t=pA(x+q|0,18)^t,e=pA(t+B|0,7)^h,Q=pA(e+t|0,9)^Q,B=pA(e+Q|0,13)^B,t=pA(Q+B|0,18)^t,h=b>>>0>2,b=b-2|0,h;);return c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+28|0]=o,c[C+29|0]=o>>>8,c[C+30|0]=o>>>16,c[C+31|0]=o>>>24,c[C+24|0]=a,c[C+25|0]=a>>>8,c[C+26|0]=a>>>16,c[C+27|0]=a>>>24,c[C+20|0]=I,c[C+21|0]=I>>>8,c[C+22|0]=I>>>16,c[C+23|0]=I>>>24,c[C+16|0]=g,c[C+17|0]=g>>>8,c[C+18|0]=g>>>16,c[C+19|0]=g>>>24,c[C+12|0]=r,c[C+13|0]=r>>>8,c[C+14|0]=r>>>16,c[C+15|0]=r>>>24,c[C+8|0]=_,c[C+9|0]=_>>>8,c[C+10|0]=_>>>16,c[C+11|0]=_>>>24,c[C+4|0]=s,c[C+5|0]=s>>>8,c[C+6|0]=s>>>16,c[C+7|0]=s>>>24,0}function Cg(C,g){var e,t,r,o,I=0,a=0,_=0,s=0,h=0,n=0;for(W=e=W-480|0;_=(a=e+288|0)+(I<<1)|0,s=i[g+I|0],c[_+1|0]=s>>>4,c[0|_]=15&s,a=a+((_=1|I)<<1)|0,_=i[g+_|0],c[a+1|0]=_>>>4,c[0|a]=15&_,(0|(I=I+2|0))!=32;);for(g=0;I=8+(a=(I=g)+i[0|(g=(e+288|0)+h|0)]|0)|0,c[0|g]=a-(240&I),I=8+(a=i[g+1|0]+(I<<24>>24>>4)|0)|0,c[g+1|0]=a-(240&I),I=8+(a=i[g+2|0]+(I<<24>>24>>4)|0)|0,c[g+2|0]=a-(240&I),g=I<<24>>24>>4,(0|(h=h+3|0))!=63;);for(c[e+351|0]=i[e+351|0]+g,A[C+32>>2]=0,A[C+36>>2]=0,A[C+24>>2]=0,A[C+28>>2]=0,A[C+16>>2]=0,A[C+20>>2]=0,A[C+8>>2]=0,A[C+12>>2]=0,A[C>>2]=0,A[C+4>>2]=0,A[C+44>>2]=0,A[C+48>>2]=0,A[C+40>>2]=1,A[C+52>>2]=0,A[C+56>>2]=0,A[C+60>>2]=0,A[C+64>>2]=0,A[C+68>>2]=0,A[C+72>>2]=0,A[C+76>>2]=0,A[C+80>>2]=1,$0(C+84|0,0,76),r=C+120|0,h=C+80|0,g=C+40|0,a=e+208|0,t=e+168|0,_=e+248|0,I=1;ue(n=e+8|0,I>>>1|0,c[(e+288|0)+I|0]),yC(s=e+128|0,C,n),kA(C,s,_),kA(g,t,a),kA(h,a,_),kA(r,s,t),n=I>>>0<62,I=I+2|0,n;);for(I=A[C+36>>2],A[e+392>>2]=A[C+32>>2],A[e+396>>2]=I,I=A[C+28>>2],A[e+384>>2]=A[C+24>>2],A[e+388>>2]=I,I=A[C+20>>2],A[e+376>>2]=A[C+16>>2],A[e+380>>2]=I,I=A[C+12>>2],A[e+368>>2]=A[C+8>>2],A[e+372>>2]=I,I=A[C+4>>2],A[e+360>>2]=A[C>>2],A[e+364>>2]=I,I=A[g+12>>2],A[e+408>>2]=A[g+8>>2],A[e+412>>2]=I,I=A[g+20>>2],A[e+416>>2]=A[g+16>>2],A[e+420>>2]=I,I=A[g+28>>2],A[e+424>>2]=A[g+24>>2],A[e+428>>2]=I,I=A[g+36>>2],A[e+432>>2]=A[g+32>>2],A[e+436>>2]=I,I=A[g+4>>2],A[e+400>>2]=A[g>>2],A[e+404>>2]=I,I=A[h+12>>2],A[e+448>>2]=A[h+8>>2],A[e+452>>2]=I,I=A[h+20>>2],A[e+456>>2]=A[h+16>>2],A[e+460>>2]=I,I=A[h+28>>2],A[e+464>>2]=A[h+24>>2],A[e+468>>2]=I,I=A[h+36>>2],A[e+472>>2]=A[h+32>>2],A[e+476>>2]=I,I=A[h+4>>2],A[e+440>>2]=A[h>>2],A[e+444>>2]=I,P2(s,I=e+360|0),kA(I,s,_),kA(n=e+400|0,t,a),kA(o=e+440|0,a,_),P2(s,I),kA(I,s,_),kA(n,t,a),kA(o,a,_),P2(s,I),kA(I,s,_),kA(n,t,a),kA(o,a,_),P2(s,I),kA(C,s,_),kA(g,t,a),kA(h,a,_),kA(r,s,t),I=0;ue(n=e+8|0,I>>>1|0,c[(e+288|0)+I|0]),yC(s=e+128|0,C,n),kA(C,s,_),kA(g,t,a),kA(h,a,_),kA(r,s,t),s=I>>>0<62,I=I+2|0,s;);W=e+480|0}function ne(C,g){C|=0;var e,t,r,o,I,a=0,_=0,s=0,h=0,n=0,B=0;for(W=e=W-736|0,ZA(n=e+704|0,g|=0,g),ZA(_=e+224|0,g,n),ZA(h=e+672|0,g,_),ZA(s=e+640|0,h,h),ZA(t=e+416|0,n,s),ZA(n=e+320|0,g,t),ZA(a=e+608|0,s,s),ZA(s=e+288|0,n,n),ZA(B=e+576|0,t,s),ZA(I=e+448|0,a,s),ZA(r=e+544|0,B,B),ZA(B=e+384|0,a,r),ZA(o=e+352|0,_,B),ZA(_=e+192|0,a,o),ZA(a=e+160|0,h,_),ZA(e+96|0,h,a),ZA(_=e+512|0,r,o),ZA(a=e+480|0,h,_),ZA(_=e+256|0,I,a),ZA(e+128|0,s,_),ZA(s=e- -64|0,B,a),ZA(a=e+32|0,h,s),ZA(e,t,a),ZA(C,n,e),h=0;ZA(C,C,C),(0|(h=h+1|0))!=126;);return ZA(C,C,e+352|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+704|0),ZA(C,C,e),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+160|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+256|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e- -64|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+96|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+320|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+512|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+192|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+480|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+128|0),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,C),ZA(C,C,e+32|0),W=e+736|0,0-X0(g,32)|0}function Ee(C,g,e){C|=0;var t,r,o,I,a=0,_=0,s=0,h=0,n=0;return W=o=W-160|0,Y0(g|=0,e|=0,32,0),c[0|g]=248&i[0|g],c[g+31|0]=63&i[g+31|0]|64,Cg(o,g),eg(C,o),_=i[(r=e)+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,a=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,s=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,h=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,n=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,e=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,I=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,t=g,g=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,c[t+24|0]=g,c[t+25|0]=g>>>8,c[t+26|0]=g>>>16,c[t+27|0]=g>>>24,c[t+28|0]=I,c[t+29|0]=I>>>8,c[t+30|0]=I>>>16,c[t+31|0]=I>>>24,c[t+16|0]=s,c[t+17|0]=s>>>8,c[t+18|0]=s>>>16,c[t+19|0]=s>>>24,c[t+20|0]=h,c[t+21|0]=h>>>8,c[t+22|0]=h>>>16,c[t+23|0]=h>>>24,c[t+8|0]=_,c[t+9|0]=_>>>8,c[t+10|0]=_>>>16,c[t+11|0]=_>>>24,c[t+12|0]=a,c[t+13|0]=a>>>8,c[t+14|0]=a>>>16,c[t+15|0]=a>>>24,c[0|t]=n,c[t+1|0]=n>>>8,c[t+2|0]=n>>>16,c[t+3|0]=n>>>24,c[t+4|0]=e,c[t+5|0]=e>>>8,c[t+6|0]=e>>>16,c[t+7|0]=e>>>24,s=i[(a=C)+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,h=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,n=i[a+16|0]|i[a+17|0]<<8|i[a+18|0]<<16|i[a+19|0]<<24,e=i[a+20|0]|i[a+21|0]<<8|i[a+22|0]<<16|i[a+23|0]<<24,g=i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,C=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,_=i[a+28|0]|i[a+29|0]<<8|i[a+30|0]<<16|i[a+31|0]<<24,a=i[a+24|0]|i[a+25|0]<<8|i[a+26|0]<<16|i[a+27|0]<<24,c[t+56|0]=a,c[t+57|0]=a>>>8,c[t+58|0]=a>>>16,c[t+59|0]=a>>>24,c[t+60|0]=_,c[t+61|0]=_>>>8,c[t+62|0]=_>>>16,c[t+63|0]=_>>>24,c[t+48|0]=n,c[t+49|0]=n>>>8,c[t+50|0]=n>>>16,c[t+51|0]=n>>>24,c[t+52|0]=e,c[t+53|0]=e>>>8,c[t+54|0]=e>>>16,c[t+55|0]=e>>>24,c[t+40|0]=s,c[t+41|0]=s>>>8,c[t+42|0]=s>>>16,c[t+43|0]=s>>>24,c[t+44|0]=h,c[t+45|0]=h>>>8,c[t+46|0]=h>>>16,c[t+47|0]=h>>>24,c[t+32|0]=g,c[t+33|0]=g>>>8,c[t+34|0]=g>>>16,c[t+35|0]=g>>>24,c[t+36|0]=C,c[t+37|0]=C>>>8,c[t+38|0]=C>>>16,c[t+39|0]=C>>>24,W=o+160|0,0}function x2(C,g,e,t){var r,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0;if(W=r=W-704|0,e|t)if(o=(t<<3|e>>>29)+(I=_=A[C+76>>2])|0,a=(h=A[C+72>>2])+(s=e<<3)|0,A[C+72>>2]=a,o=a>>>0>>0?o+1|0:o,A[C+76>>2]=o,_=A[C+68>>2],o=(o=a=(0|o)==(0|I)&a>>>0>>0|o>>>0>>0)>>>0>(a=a+A[C+64>>2]|0)>>>0?_+1|0:_,a=(s=t>>>29|0)+a|0,A[C+64>>2]=a,A[C+68>>2]=a>>>0>>0?o+1|0:o,a=C+80|0,(0|t)==(0|(_=l=0-((o=0)+((s=127&((7&I)<<29|h>>>3))>>>0>128)|0)|0))&e>>>0>=(h=128-s|0)>>>0|t>>>0>_>>>0){if(I=0,_=0,!o&(127^s)>>>0>=3|o)for(v=252&h;c[(o=I+s|0)+a|0]=i[g+I|0],c[a+(s+(o=1|I)|0)|0]=i[g+o|0],c[a+(s+(o=2|I)|0)|0]=i[g+o|0],c[a+(s+(o=3|I)|0)|0]=i[g+o|0],o=_,_=(I=I+4|0)>>>0<4?o+1|0:o,o=Q,Q=o=(n=n+4|0)>>>0<4?o+1|0:o,(0|n)!=(0|v)|(0|p)!=(0|o););if(Q=o=0,o|(n=3&h))for(;c[(o=I+s|0)+a|0]=i[g+I|0],o=_,_=(I=I+1|0)?o:o+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|n)!=(0|B)|(0|Q)!=(0|o););if(Yg(C,a,r,I=r+640|0),g=g+h|0,!(t=t-((e>>>0>>0)+l|0)|0)&(e=e-h|0)>>>0>127|t)for(;Yg(C,g,r,I),g=g+128|0,!(t=t-(e>>>0<128)|0)&(e=e-128|0)>>>0>127|t;);if(e|t){if(C=3&e,B=0,p=0,I=0,_=0,!t&e>>>0>=4|t)for(n=124&e,h=0,e=0,t=0;c[I+a|0]=i[g+I|0],c[(o=1|I)+a|0]=i[g+o|0],c[(o=2|I)+a|0]=i[g+o|0],c[(o=3|I)+a|0]=i[g+o|0],o=_,_=(I=I+4|0)>>>0<4?o+1|0:o,o=t,t=o=(e=e+4|0)>>>0<4?o+1|0:o,(0|e)!=(0|n)|(0|h)!=(0|o););if(C|Q)for(;c[I+a|0]=i[g+I|0],_=(I=I+1|0)?_:_+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|C)!=(0|B)|(0|Q)!=(0|o););}y0(r,704)}else{if(I=0,_=0,!t&e>>>0>=4|t)for(C=-4&e;c[(o=I+s|0)+a|0]=i[g+I|0],c[a+(h=s+(o=1|I)|0)|0]=i[g+o|0],c[a+(h=s+(o=2|I)|0)|0]=i[g+o|0],c[a+(h=s+(o=3|I)|0)|0]=i[g+o|0],o=_,_=(I=I+4|0)>>>0<4?o+1|0:o,o=Q,Q=o=(n=n+4|0)>>>0<4?o+1|0:o,(0|C)!=(0|n)|(0|t)!=(0|o););if((e&=3)|(C=0))for(;c[(t=I+s|0)+a|0]=i[g+I|0],_=(I=I+1|0)?_:_+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|e)!=(0|B)|(0|C)!=(0|o););}return W=r+704|0,0}function b1(C,g,e){var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0;l=A[g+4>>2],r=A[C+4>>2],v=A[g+8>>2],o=A[C+8>>2],D=A[g+12>>2],I=A[C+12>>2],b=A[g+16>>2],a=A[C+16>>2],M=A[g+20>>2],_=A[C+20>>2],p=A[g+24>>2],s=A[C+24>>2],x=A[g+28>>2],h=A[C+28>>2],q=A[g+32>>2],n=A[C+32>>2],V=A[g+36>>2],B=A[C+36>>2],e=0-e|0,Q=A[C>>2],A[C>>2]=e&(Q^A[g>>2])^Q,A[C+36>>2]=B^e&(B^V),A[C+32>>2]=n^e&(n^q),A[C+28>>2]=h^e&(h^x),A[C+24>>2]=s^e&(s^p),A[C+20>>2]=_^e&(_^M),A[C+16>>2]=a^e&(a^b),A[C+12>>2]=I^e&(I^D),A[C+8>>2]=o^e&(o^v),A[C+4>>2]=r^e&(r^l),r=A[C+44>>2],l=A[g+44>>2],o=A[C+48>>2],v=A[g+48>>2],I=A[C+52>>2],D=A[g+52>>2],a=A[C+56>>2],b=A[g+56>>2],_=A[C+60>>2],M=A[g+60>>2],s=A[(p=C- -64|0)>>2],x=A[g- -64>>2],h=A[C+68>>2],q=A[g+68>>2],n=A[C+72>>2],V=A[g+72>>2],B=A[C+40>>2],Q=A[g+40>>2],t=A[C+76>>2],A[C+76>>2]=t^e&(A[g+76>>2]^t),A[C+72>>2]=n^e&(n^V),A[C+68>>2]=h^e&(h^q),A[p>>2]=s^e&(s^x),A[C+60>>2]=_^e&(_^M),A[C+56>>2]=a^e&(a^b),A[C+52>>2]=I^e&(I^D),A[C+48>>2]=o^e&(o^v),A[C+44>>2]=r^e&(r^l),A[C+40>>2]=B^e&(B^Q),r=A[C+84>>2],l=A[g+84>>2],o=A[C+88>>2],v=A[g+88>>2],I=A[C+92>>2],D=A[g+92>>2],a=A[C+96>>2],b=A[g+96>>2],_=A[C+100>>2],M=A[g+100>>2],s=A[C+104>>2],p=A[g+104>>2],h=A[C+108>>2],x=A[g+108>>2],n=A[C+112>>2],q=A[g+112>>2],B=A[C+80>>2],V=A[g+80>>2],Q=A[C+116>>2],A[C+116>>2]=e&(Q^A[g+116>>2])^Q,A[C+112>>2]=n^e&(n^q),A[C+108>>2]=h^e&(h^x),A[C+104>>2]=s^e&(s^p),A[C+100>>2]=_^e&(_^M),A[C+96>>2]=a^e&(a^b),A[C+92>>2]=I^e&(I^D),A[C+88>>2]=o^e&(o^v),A[C+84>>2]=r^e&(r^l),A[C+80>>2]=B^e&(B^V),r=A[C+124>>2],l=A[g+124>>2],o=A[C+128>>2],v=A[g+128>>2],I=A[C+132>>2],D=A[g+132>>2],a=A[C+136>>2],b=A[g+136>>2],_=A[C+140>>2],M=A[g+140>>2],s=A[C+144>>2],p=A[g+144>>2],h=A[C+148>>2],x=A[g+148>>2],n=A[C+152>>2],q=A[g+152>>2],B=A[C+120>>2],V=A[g+120>>2],Q=A[g+156>>2],g=A[C+156>>2],A[C+156>>2]=e&(Q^g)^g,A[C+152>>2]=n^e&(n^q),A[C+148>>2]=h^e&(h^x),A[C+144>>2]=s^e&(s^p),A[C+140>>2]=_^e&(_^M),A[C+136>>2]=a^e&(a^b),A[C+132>>2]=I^e&(I^D),A[C+128>>2]=o^e&(o^v),A[C+124>>2]=r^e&(r^l),A[C+120>>2]=B^e&(B^V)}function QC(C,g,e){var t,r,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0;return W=t=W-320|0,gA(o=t+240|0,e),kA(o,o,e),gA(C,o),kA(C,C,e),kA(C,C,g),fC(C,C),kA(C,C,o),kA(C,C,g),gA(o=t+192|0,C),kA(o,o,e),I=A[g+4>>2],p=A[g+8>>2],v=A[g+12>>2],D=A[g+16>>2],b=A[g+20>>2],M=A[g+24>>2],x=A[g+28>>2],q=A[g+32>>2],V=A[g>>2],e=A[t+192>>2],o=A[t+196>>2],a=A[t+200>>2],_=A[t+204>>2],s=A[t+208>>2],h=A[t+212>>2],n=A[t+216>>2],B=A[t+220>>2],Q=A[t+224>>2],l=A[t+228>>2],$=A[g+36>>2],A[t+180>>2]=l-$,A[t+176>>2]=Q-q,A[t+172>>2]=B-x,A[t+168>>2]=n-M,A[t+164>>2]=h-b,A[t+160>>2]=s-D,A[t+156>>2]=_-v,A[t+152>>2]=a-p,A[t+148>>2]=o-I,A[t+144>>2]=e-V,A[t+132>>2]=l+$,A[t+128>>2]=Q+q,A[t+124>>2]=B+x,A[t+120>>2]=n+M,A[t+116>>2]=h+b,A[t+112>>2]=s+D,A[t+108>>2]=_+v,A[t+104>>2]=a+p,A[t+100>>2]=o+I,A[t+96>>2]=e+V,kA(I=t+48|0,g,1632),A[t+84>>2]=l+A[t+84>>2],A[t+80>>2]=Q+A[t+80>>2],A[t+76>>2]=B+A[t+76>>2],A[t+72>>2]=n+A[t+72>>2],A[t+68>>2]=h+A[t+68>>2],A[t+64>>2]=s+A[t+64>>2],A[t+60>>2]=_+A[t+60>>2],A[t+56>>2]=a+A[t+56>>2],A[t+52>>2]=o+A[t+52>>2],A[t+48>>2]=e+A[t+48>>2],w2(t,t+144|0),v=X0(t,32),w2(t,t+96|0),p=X0(t,32),w2(t,I),g=X0(t,32),kA(t,C,1632),Q=A[C+4>>2],B=A[C+8>>2],n=A[C+12>>2],h=A[C+16>>2],s=A[C+20>>2],_=A[C+24>>2],a=A[C+28>>2],o=A[C+32>>2],I=A[C>>2],D=A[t>>2],b=A[t+4>>2],M=A[t+8>>2],x=A[t+12>>2],q=A[t+16>>2],V=A[t+20>>2],l=A[t+24>>2],$=A[t+28>>2],r=A[t+32>>2],e=(g=0-(g|p)|0)&((e=A[C+36>>2])^A[t+36>>2])^e,A[C+36>>2]=e,o^=g&(o^r),A[C+32>>2]=o,a^=g&(a^$),A[C+28>>2]=a,_^=g&(_^l),A[C+24>>2]=_,s^=g&(s^V),A[C+20>>2]=s,h^=g&(h^q),A[C+16>>2]=h,n^=g&(n^x),A[C+12>>2]=n,B^=g&(B^M),A[C+8>>2]=B,Q^=g&(Q^b),A[C+4>>2]=Q,I^=g&(I^D),A[C>>2]=I,w2(t+288|0,C),g=0-(1&c[t+288|0])|0,A[C+36>>2]=e^g&(e^0-e),A[C+32>>2]=o^g&(o^0-o),A[C+28>>2]=a^g&(a^0-a),A[C+24>>2]=_^g&(_^0-_),A[C+20>>2]=s^g&(s^0-s),A[C+16>>2]=h^g&(h^0-h),A[C+12>>2]=n^g&(n^0-n),A[C+8>>2]=B^g&(B^0-B),A[C+4>>2]=Q^g&(Q^0-Q),A[C>>2]=I^g&(I^0-I),W=t+320|0,p|v}function T1(C,g){var e,t,r,o,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0;return W=e=W-320|0,z1(t=C+40|0,g),A[C+84>>2]=0,A[C+88>>2]=0,A[C+80>>2]=1,A[C+92>>2]=0,A[C+96>>2]=0,A[C+100>>2]=0,A[C+104>>2]=0,A[C+108>>2]=0,A[C+112>>2]=0,A[C+116>>2]=0,gA(I=e+240|0,t),kA(a=e+192|0,I,1584),A[e+192>>2]=A[e+192>>2]+1,_=A[e+240>>2]-1|0,A[e+240>>2]=_,s=A[e+244>>2],h=A[e+248>>2],n=A[e+252>>2],B=A[e+256>>2],Q=A[e+260>>2],p=A[e+264>>2],l=A[e+268>>2],v=A[e+272>>2],D=A[e+276>>2],kA(C,I,a),fC(C,C),kA(C,I,C),gA(I=e+144|0,C),kA(I,I,a),I=A[e+180>>2],A[e+132>>2]=I-D,a=A[e+176>>2],A[e+128>>2]=a-v,b=A[e+172>>2],A[e+124>>2]=b-l,M=A[e+168>>2],A[e+120>>2]=M-p,x=A[e+164>>2],A[e+116>>2]=x-Q,q=A[e+160>>2],A[e+112>>2]=q-B,V=A[e+156>>2],A[e+108>>2]=V-n,$=A[e+152>>2],A[e+104>>2]=$-h,K=A[e+148>>2],A[e+100>>2]=K-s,J=A[e+144>>2],A[e+96>>2]=J-_,A[e+84>>2]=I+D,A[e+80>>2]=a+v,A[e+76>>2]=l+b,A[e+72>>2]=p+M,A[e+68>>2]=Q+x,A[e+64>>2]=B+q,A[e+60>>2]=n+V,A[e+56>>2]=h+$,A[e+52>>2]=s+K,A[e+48>>2]=_+J,w2(e,e+96|0),v=X0(e,32),w2(e,e+48|0),b=X0(e,32),kA(e,C,1632),l=A[C+4>>2],p=A[C+8>>2],Q=A[C+12>>2],B=A[C+16>>2],n=A[C+20>>2],h=A[C+24>>2],s=A[C+28>>2],_=A[C+32>>2],D=A[C>>2],M=A[e>>2],x=A[e+4>>2],q=A[e+8>>2],V=A[e+12>>2],$=A[e+16>>2],K=A[e+20>>2],J=A[e+24>>2],r=A[e+28>>2],o=A[e+32>>2],a=(I=v-1|0)&((a=A[C+36>>2])^A[e+36>>2])^a,A[C+36>>2]=a,_^=I&(_^o),A[C+32>>2]=_,s^=I&(s^r),A[C+28>>2]=s,h^=I&(h^J),A[C+24>>2]=h,n^=I&(n^K),A[C+20>>2]=n,B^=I&(B^$),A[C+16>>2]=B,Q^=I&(Q^V),A[C+12>>2]=Q,p^=I&(p^q),A[C+8>>2]=p,l^=I&(l^x),A[C+4>>2]=l,I=D^I&(D^M),A[C>>2]=I,w2(e+288|0,C),g=0-(1&c[e+288|0]^i[g+31|0]>>>7^i[38144]>>>2)|0,A[C+36>>2]=a^g&(a^0-a),A[C+32>>2]=_^g&(_^0-_),A[C+28>>2]=s^g&(s^0-s),A[C+24>>2]=h^g&(h^0-h),A[C+20>>2]=n^g&(n^0-n),A[C+16>>2]=B^g&(B^0-B),A[C+12>>2]=Q^g&(Q^0-Q),A[C+8>>2]=p^g&(p^0-p),A[C+4>>2]=l^g&(l^0-l),A[C>>2]=I^g&(I^0-I),kA(C+120|0,C,t),W=e+320|0,(v|b)-1|0}function P2(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0;W=e=W-48|0,gA(C,g),gA(C+80|0,g+40|0),ee(C+120|0,g+80|0),l=A[g+44>>2],v=A[g+4>>2],x=A[g+48>>2],D=A[g+8>>2],q=A[g+52>>2],b=A[g+12>>2],V=A[g+56>>2],M=A[g+16>>2],_A=A[g+60>>2],$=A[g+20>>2],sA=A[g- -64>>2],K=A[g+24>>2],nA=A[g+68>>2],J=A[g+28>>2],fA=A[g+72>>2],uA=A[g+32>>2],vA=A[g+40>>2],z=A[g>>2],A[C+76>>2]=A[g+76>>2]+A[g+36>>2],A[C+72>>2]=fA+uA,A[C+68>>2]=nA+J,A[(t=C- -64|0)>>2]=sA+K,A[C+60>>2]=_A+$,A[C+56>>2]=V+M,A[C+52>>2]=q+b,A[C+48>>2]=x+D,A[C+44>>2]=l+v,A[C+40>>2]=vA+z,gA(e,C+40|0),g=A[C+4>>2],l=A[C+84>>2],v=A[C+8>>2],x=A[C+88>>2],D=A[C+12>>2],q=A[C+92>>2],b=A[C+16>>2],V=A[C+96>>2],M=A[C+20>>2],_A=A[C+100>>2],$=A[C+24>>2],sA=A[C+104>>2],K=A[C+28>>2],nA=A[C+108>>2],J=A[C+32>>2],fA=A[C+112>>2],uA=A[C>>2],vA=A[C+80>>2],o=(z=A[C+116>>2])-(r=A[C+36>>2])|0,A[C+116>>2]=o,I=fA-J|0,A[C+112>>2]=I,a=nA-K|0,A[C+108>>2]=a,_=sA-$|0,A[C+104>>2]=_,s=_A-M|0,A[C+100>>2]=s,h=V-b|0,A[C+96>>2]=h,n=q-D|0,A[C+92>>2]=n,B=x-v|0,A[C+88>>2]=B,Q=l-g|0,A[C+84>>2]=Q,p=vA-uA|0,A[C+80>>2]=p,z=z+r|0,A[C+76>>2]=z,J=J+fA|0,A[C+72>>2]=J,K=K+nA|0,A[C+68>>2]=K,$=$+sA|0,A[t>>2]=$,M=M+_A|0,A[C+60>>2]=M,b=b+V|0,A[C+56>>2]=b,D=D+q|0,A[C+52>>2]=D,v=v+x|0,A[C+48>>2]=v,g=g+l|0,A[C+44>>2]=g,l=uA+vA|0,A[C+40>>2]=l,x=A[e>>2],q=A[e+4>>2],V=A[e+8>>2],_A=A[e+12>>2],sA=A[e+16>>2],nA=A[e+20>>2],fA=A[e+24>>2],uA=A[e+28>>2],vA=A[e+32>>2],A[C+36>>2]=A[e+36>>2]-z,A[C+32>>2]=vA-J,A[C+28>>2]=uA-K,A[C+24>>2]=fA-$,A[C+20>>2]=nA-M,A[C+16>>2]=sA-b,A[C+12>>2]=_A-D,A[C+8>>2]=V-v,A[C+4>>2]=q-g,A[C>>2]=x-l,g=A[C+124>>2],l=A[C+128>>2],v=A[C+132>>2],x=A[C+136>>2],D=A[C+140>>2],q=A[C+144>>2],b=A[C+148>>2],V=A[C+152>>2],M=A[C+120>>2],A[C+156>>2]=A[C+156>>2]-o,A[C+152>>2]=V-I,A[C+148>>2]=b-a,A[C+144>>2]=q-_,A[C+140>>2]=D-s,A[C+136>>2]=x-h,A[C+132>>2]=v-n,A[C+128>>2]=l-B,A[C+124>>2]=g-Q,A[C+120>>2]=M-p,W=e+48|0}function y1(C,g,e,t){var r,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0;if(W=r=W-288|0,e|t)if(o=(t<<3|e>>>29)+(I=_=A[C+36>>2])|0,a=(s=A[C+32>>2])+(h=e<<3)|0,A[C+32>>2]=a,A[C+36>>2]=a>>>0>>0?o+1|0:o,_=C+40|0,(0|t)==(0|(a=l=0-((o=0)+((h=63&((7&I)<<29|s>>>3))>>>0>64)|0)|0))&e>>>0>=(s=64-h|0)>>>0|t>>>0>a>>>0){if(I=0,a=0,!o&(63^h)>>>0>=3|o)for(v=124&s;c[(o=I+h|0)+_|0]=i[g+I|0],c[_+(h+(o=1|I)|0)|0]=i[g+o|0],c[_+(h+(o=2|I)|0)|0]=i[g+o|0],c[_+(h+(o=3|I)|0)|0]=i[g+o|0],o=a,a=(I=I+4|0)>>>0<4?o+1|0:o,o=Q,Q=o=(n=n+4|0)>>>0<4?o+1|0:o,(0|n)!=(0|v)|(0|p)!=(0|o););if(Q=o=0,o|(n=3&s))for(;c[(o=I+h|0)+_|0]=i[g+I|0],o=a,a=(I=I+1|0)?o:o+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|n)!=(0|B)|(0|Q)!=(0|o););if(Hg(C,_,r,I=r+256|0),g=g+s|0,!(t=t-((e>>>0>>0)+l|0)|0)&(e=e-s|0)>>>0>63|t)for(;Hg(C,g,r,I),g=g- -64|0,o=t-1|0,!(t=(e=e+-64|0)>>>0<4294967232?o+1|0:o)&e>>>0>63|t;);if(e|t){if(C=3&e,B=0,p=0,I=0,a=0,!t&e>>>0>=4|t)for(n=60&e,s=0,e=0,t=0;c[I+_|0]=i[g+I|0],c[(o=1|I)+_|0]=i[g+o|0],c[(o=2|I)+_|0]=i[g+o|0],c[(o=3|I)+_|0]=i[g+o|0],o=a,a=(I=I+4|0)>>>0<4?o+1|0:o,o=t,t=o=(e=e+4|0)>>>0<4?o+1|0:o,(0|e)!=(0|n)|(0|s)!=(0|o););if(C|Q)for(;c[I+_|0]=i[g+I|0],a=(I=I+1|0)?a:a+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|C)!=(0|B)|(0|Q)!=(0|o););}y0(r,288)}else{if(I=0,a=0,!t&e>>>0>=4|t)for(C=-4&e;c[(o=I+h|0)+_|0]=i[g+I|0],c[_+(s=h+(o=1|I)|0)|0]=i[g+o|0],c[_+(s=h+(o=2|I)|0)|0]=i[g+o|0],c[_+(s=h+(o=3|I)|0)|0]=i[g+o|0],o=a,a=(I=I+4|0)>>>0<4?o+1|0:o,o=Q,Q=o=(n=n+4|0)>>>0<4?o+1|0:o,(0|C)!=(0|n)|(0|t)!=(0|o););if((e&=3)|(C=0))for(;c[(t=I+h|0)+_|0]=i[g+I|0],a=(I=I+1|0)?a:a+1|0,o=p,p=o=(B=B+1|0)?o:o+1|0,(0|e)!=(0|B)|(0|C)!=(0|o););}return W=r+288|0,0}function nC(C,g,e,t,r,o){var I=0;A[o>>2]=8;A:{g:{I=C,I=(C=!g&C>>>0<=32768)?32768:I;C:{e:{if(!(C=C?0:g)&e>>>5>>>0<=I>>>0|C){if(e>>>0>=4096)break e;g=1;break C}if(A[r>>2]=1,C=1,(g=(I>>>0)/(A[o>>2]<<2>>>0)|0)>>>0<4||(C=2,g>>>0<8))break A;if(g>>>0<16)return void(A[t>>2]=3);if(g>>>0<32)return void(A[t>>2]=4);if(g>>>0<64)return void(A[t>>2]=5);if(g>>>0<128)return void(A[t>>2]=6);if(g>>>0<256)return void(A[t>>2]=7);if(g>>>0<512)return void(A[t>>2]=8);if(g>>>0<1024)return void(A[t>>2]=9);if(g>>>0<2048)return void(A[t>>2]=10);if(g>>>0<4096)return void(A[t>>2]=11);if(g>>>0<8192)return void(A[t>>2]=12);if(g>>>0<16384)return void(A[t>>2]=13);if(g>>>0<32768)return void(A[t>>2]=14);if(g>>>0<65536)return void(A[t>>2]=15);if(g>>>0<131072)return void(A[t>>2]=16);if(g>>>0<262144)return void(A[t>>2]=17);if(g>>>0<524288)return void(A[t>>2]=18);if(g>>>0<1048576)return void(A[t>>2]=19);if(g>>>0<2097152)return void(A[t>>2]=20);if(g>>>0<4194304)return void(A[t>>2]=21);if(g>>>0<8388608)return void(A[t>>2]=22);if(g>>>0<16777216)return void(A[t>>2]=23);if(g>>>0>=33554432)break g;return void(A[t>>2]=24)}g=2,e>>>0<8192||(g=3,e>>>0<16384||(g=4,e>>>0<32768||(g=5,e>>>0<65536||(g=6,e>>>0<131072||(g=7,e>>>0<262144||(g=8,e>>>0<524288||(g=9,e>>>0<1048576||(g=10,e>>>0<2097152||(g=11,e>>>0<4194304||(g=12,e>>>0<8388608||(g=13,e>>>0<16777216||(g=14,e>>>0<33554432||(g=15,e>>>0<67108864||(g=16,e>>>0<134217728||(g=17,e>>>0<268435456||(g=18,e>>>0<536870912||(g=19,e>>>0<1073741824||(g=(0|e)>=0?20:21))))))))))))))))))}return e=g,A[t>>2]=e,C=(g=C)>>>2|0,g=(3&g)<<30|I>>>2,t=31&e,(63&e)>>>0>=32?(e=0,C=C>>>t|0):(e=C>>>t|0,C=((1<>>t),void(A[r>>2]=((!e&C>>>0>=1073741823|e?1073741823:C)>>>0)/O2[o>>2])}C=g>>>0<67108864?25:26}A[t>>2]=C}function pe(C,g,e){var t,r,o,I,a,_,s,h,n=0;W=t=W-160|0,A[C>>2]=1,A[C+4>>2]=0,A[C+8>>2]=0,A[C+12>>2]=0,A[C+16>>2]=0,A[C+20>>2]=0,A[C+24>>2]=0,A[C+28>>2]=0,A[C+32>>2]=0,A[C+44>>2]=0,A[C+48>>2]=0,A[C+36>>2]=0,A[C+40>>2]=1,A[C+52>>2]=0,A[C+56>>2]=0,A[C+60>>2]=0,A[C+64>>2]=0,A[C+68>>2]=0,A[C+72>>2]=0,A[C+76>>2]=0,A[C+80>>2]=1,$0(C+84|0,0,76),b1(C,g,(255&(1^(n=e-((e>>31&e)<<1)|0)))-1>>>31|0),b1(C,g+160|0,(255&(2^n))-1>>>31|0),b1(C,g+320|0,(255&(3^n))-1>>>31|0),b1(C,g+480|0,(255&(4^n))-1>>>31|0),b1(C,g+640|0,(255&(5^n))-1>>>31|0),b1(C,g+800|0,(255&(6^n))-1>>>31|0),b1(C,g+960|0,(255&(7^n))-1>>>31|0),b1(C,g+1120|0,(255&(8^n))-1>>>31|0),g=A[C+76>>2],A[t+32>>2]=A[C+72>>2],A[t+36>>2]=g,n=A[4+(g=C- -64|0)>>2],A[t+24>>2]=A[g>>2],A[t+28>>2]=n,g=A[C+60>>2],A[t+16>>2]=A[C+56>>2],A[t+20>>2]=g,g=A[C+52>>2],A[t+8>>2]=A[C+48>>2],A[t+12>>2]=g,g=A[C+44>>2],A[t>>2]=A[C+40>>2],A[t+4>>2]=g,g=A[C+36>>2],A[t+72>>2]=A[C+32>>2],A[t+76>>2]=g,n=A[C+28>>2],A[(g=t- -64|0)>>2]=A[C+24>>2],A[g+4>>2]=n,g=A[C+20>>2],A[t+56>>2]=A[C+16>>2],A[t+60>>2]=g,g=A[C+12>>2],A[t+48>>2]=A[C+8>>2],A[t+52>>2]=g,g=A[C+4>>2],A[t+40>>2]=A[C>>2],A[t+44>>2]=g,g=A[C+92>>2],A[t+88>>2]=A[C+88>>2],A[t+92>>2]=g,g=A[C+100>>2],A[t+96>>2]=A[C+96>>2],A[t+100>>2]=g,g=A[C+108>>2],A[t+104>>2]=A[C+104>>2],A[t+108>>2]=g,g=A[C+116>>2],A[t+112>>2]=A[C+112>>2],A[t+116>>2]=g,g=A[C+84>>2],A[t+80>>2]=A[C+80>>2],A[t+84>>2]=g,g=A[C+124>>2],n=A[C+128>>2],r=A[C+132>>2],o=A[C+136>>2],I=A[C+140>>2],a=A[C+144>>2],_=A[C+148>>2],s=A[C+152>>2],h=A[C+120>>2],A[t+156>>2]=0-A[C+156>>2],A[t+152>>2]=0-s,A[t+148>>2]=0-_,A[t+144>>2]=0-a,A[t+140>>2]=0-I,A[t+136>>2]=0-o,A[t+132>>2]=0-r,A[t+128>>2]=0-n,A[t+124>>2]=0-g,A[t+120>>2]=0-h,b1(C,t,(128&e)>>>7|0),W=t+160|0}function fe(C,g){C|=0,g|=0;var e,t,r,o,I,a=0,_=0,s=0;return W=_=W-192|0,X2(_,32),Y0(g,_,32,0),c[0|g]=248&i[0|g],c[g+31|0]=63&i[g+31|0]|64,Cg(s=_+32|0,g),eg(C,s),e=_,s=A[_+28>>2],_=A[_+24>>2],c[g+24|0]=_,c[g+25|0]=_>>>8,c[g+26|0]=_>>>16,c[g+27|0]=_>>>24,c[g+28|0]=s,c[g+29|0]=s>>>8,c[g+30|0]=s>>>16,c[g+31|0]=s>>>24,s=A[e+20>>2],_=A[e+16>>2],c[g+16|0]=_,c[g+17|0]=_>>>8,c[g+18|0]=_>>>16,c[g+19|0]=_>>>24,c[g+20|0]=s,c[g+21|0]=s>>>8,c[g+22|0]=s>>>16,c[g+23|0]=s>>>24,s=A[e+12>>2],_=A[e+8>>2],c[g+8|0]=_,c[g+9|0]=_>>>8,c[g+10|0]=_>>>16,c[g+11|0]=_>>>24,c[g+12|0]=s,c[g+13|0]=s>>>8,c[g+14|0]=s>>>16,c[g+15|0]=s>>>24,s=A[e+4>>2],_=A[e>>2],c[0|g]=_,c[g+1|0]=_>>>8,c[g+2|0]=_>>>16,c[g+3|0]=_>>>24,c[g+4|0]=s,c[g+5|0]=s>>>8,c[g+6|0]=s>>>16,c[g+7|0]=s>>>24,t=i[(a=C)+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,r=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,o=i[a+16|0]|i[a+17|0]<<8|i[a+18|0]<<16|i[a+19|0]<<24,s=i[a+20|0]|i[a+21|0]<<8|i[a+22|0]<<16|i[a+23|0]<<24,_=i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,C=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,I=i[a+28|0]|i[a+29|0]<<8|i[a+30|0]<<16|i[a+31|0]<<24,a=i[a+24|0]|i[a+25|0]<<8|i[a+26|0]<<16|i[a+27|0]<<24,c[g+56|0]=a,c[g+57|0]=a>>>8,c[g+58|0]=a>>>16,c[g+59|0]=a>>>24,c[g+60|0]=I,c[g+61|0]=I>>>8,c[g+62|0]=I>>>16,c[g+63|0]=I>>>24,c[g+48|0]=o,c[g+49|0]=o>>>8,c[g+50|0]=o>>>16,c[g+51|0]=o>>>24,c[g+52|0]=s,c[g+53|0]=s>>>8,c[g+54|0]=s>>>16,c[g+55|0]=s>>>24,c[g+40|0]=t,c[g+41|0]=t>>>8,c[g+42|0]=t>>>16,c[g+43|0]=t>>>24,c[g+44|0]=r,c[g+45|0]=r>>>8,c[g+46|0]=r>>>16,c[g+47|0]=r>>>24,c[g+32|0]=_,c[g+33|0]=_>>>8,c[g+34|0]=_>>>16,c[g+35|0]=_>>>24,c[g+36|0]=C,c[g+37|0]=C>>>8,c[g+38|0]=C>>>16,c[g+39|0]=C>>>24,y0(e,32),W=e+192|0,0}function v1(C,g){g|=0;var e,t,r=0,o=0,I=0,a=0;return W=e=W-288|0,o=40+((r=A[32+(C|=0)>>2]>>>3&63)+C|0)|0,r>>>0>=56?(P0(o,35520,64-r|0),Hg(C,C+40|0,e,e+256|0),A[C+88>>2]=0,A[C+92>>2]=0,A[C+80>>2]=0,A[C+84>>2]=0,A[C+72>>2]=0,A[C+76>>2]=0,A[(r=C- -64|0)>>2]=0,A[r+4>>2]=0,A[C+56>>2]=0,A[C+60>>2]=0,A[C+48>>2]=0,A[C+52>>2]=0,A[C+40>>2]=0,A[C+44>>2]=0):P0(o,35520,56-r|0),I=(r=16711680&(o=A[C+32>>2]))>>>8|0,a=r<<24,t=(r=-16777216&o)>>>24|0,r=(a|=r<<8)|-16777216&((255&(r=A[C+36>>2]))<<24|o>>>8)|16711680&((16777215&r)<<8|o>>>24)|r>>>8&65280|r>>>24,c[C+96|0]=r,c[C+97|0]=r>>>8,c[C+98|0]=r>>>16,c[C+99|0]=r>>>24,r=I|t|o<<24|(65280&o)<<8,r|=I=0,c[C+100|0]=r,c[C+101|0]=r>>>8,c[C+102|0]=r>>>16,c[C+103|0]=r>>>24,Hg(C,C+40|0,e,e+256|0),r=(r=A[C>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[0|g]=r,c[g+1|0]=r>>>8,c[g+2|0]=r>>>16,c[g+3|0]=r>>>24,r=(r=A[C+4>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+4|0]=r,c[g+5|0]=r>>>8,c[g+6|0]=r>>>16,c[g+7|0]=r>>>24,r=(r=A[C+8>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+8|0]=r,c[g+9|0]=r>>>8,c[g+10|0]=r>>>16,c[g+11|0]=r>>>24,r=(r=A[C+12>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+12|0]=r,c[g+13|0]=r>>>8,c[g+14|0]=r>>>16,c[g+15|0]=r>>>24,r=(r=A[C+16>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+16|0]=r,c[g+17|0]=r>>>8,c[g+18|0]=r>>>16,c[g+19|0]=r>>>24,r=(r=A[C+20>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+20|0]=r,c[g+21|0]=r>>>8,c[g+22|0]=r>>>16,c[g+23|0]=r>>>24,r=(r=A[C+24>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+24|0]=r,c[g+25|0]=r>>>8,c[g+26|0]=r>>>16,c[g+27|0]=r>>>24,r=(r=A[C+28>>2])<<24|(65280&r)<<8|r>>>8&65280|r>>>24,c[g+28|0]=r,c[g+29|0]=r>>>8,c[g+30|0]=r>>>16,c[g+31|0]=r>>>24,y0(e,288),y0(C,104),W=e+288|0,0}function De(C,g){C|=0;var e,t=0;W=e=W+-64|0,t=i[60+(g|=0)|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,A[e+56>>2]=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,A[e+60>>2]=t,t=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,A[e+48>>2]=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,A[e+52>>2]=t,t=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,A[e+40>>2]=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,A[e+44>>2]=t,t=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,A[e+32>>2]=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,A[e+36>>2]=t,t=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[e+24>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[e+28>>2]=t,t=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[e+16>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[e+20>>2]=t,t=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[e>>2]=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,A[e+4>>2]=t,t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,A[e+8>>2]=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,A[e+12>>2]=t,d1(e),g=A[e+28>>2],t=A[e+24>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[e+20>>2],t=A[e+16>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[e+12>>2],t=A[e+8>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[e+4>>2],t=A[e>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,y0(e,64),W=e- -64|0}function Y1(C,g,e){C|=0,g|=0;var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0;if(W=t=W-96|0,(e|=0)>>>0>=65&&(Me(C),y1(C,g,e,0),v1(C,t),e=32,g=t),Me(C),A[t+88>>2]=909522486,A[t+92>>2]=909522486,A[t+80>>2]=909522486,A[t+84>>2]=909522486,A[t+72>>2]=909522486,A[t+76>>2]=909522486,A[(I=h=t- -64|0)>>2]=909522486,A[I+4>>2]=909522486,A[t+56>>2]=909522486,A[t+60>>2]=909522486,A[t+48>>2]=909522486,A[t+52>>2]=909522486,A[t+40>>2]=909522486,A[t+44>>2]=909522486,A[t+32>>2]=909522486,A[t+36>>2]=909522486,e){if(e>>>0>=4)for(a=124&e;c[0|(o=(I=t+32|0)+r|0)]=i[0|o]^i[g+r|0],c[0|(n=(o=1|r)+I|0)]=i[0|n]^i[g+o|0],c[0|(n=(o=2|r)+I|0)]=i[0|n]^i[g+o|0],c[0|(o=(o=I)+(I=3|r)|0)]=i[0|o]^i[g+I|0],r=r+4|0,(0|a)!=(0|(_=_+4|0)););if(_=3&e)for(;c[0|(I=(t+32|0)+r|0)]=i[0|I]^i[g+r|0],r=r+1|0,(0|_)!=(0|(s=s+1|0)););}if(y1(C,t+32|0,64,0),Me(I=C+104|0),A[t+88>>2]=1549556828,A[t+92>>2]=1549556828,A[t+80>>2]=1549556828,A[t+84>>2]=1549556828,A[t+72>>2]=1549556828,A[t+76>>2]=1549556828,A[h>>2]=1549556828,A[h+4>>2]=1549556828,A[t+56>>2]=1549556828,A[t+60>>2]=1549556828,A[t+48>>2]=1549556828,A[t+52>>2]=1549556828,A[t+40>>2]=1549556828,A[t+44>>2]=1549556828,A[t+32>>2]=1549556828,A[t+36>>2]=1549556828,e){if(s=0,r=0,e>>>0>=4)for(h=124&e,_=0;c[0|(a=(C=t+32|0)+r|0)]=i[0|a]^i[g+r|0],c[0|(o=(a=1|r)+C|0)]=i[0|o]^i[g+a|0],c[0|(o=(a=2|r)+C|0)]=i[0|o]^i[g+a|0],c[0|(a=(o=C)+(C=3|r)|0)]=i[0|a]^i[C+g|0],r=r+4|0,(0|h)!=(0|(_=_+4|0)););if(C=3&e)for(;c[0|(e=(t+32|0)+r|0)]=i[0|e]^i[g+r|0],r=r+1|0,(0|C)!=(0|(s=s+1|0)););}return y1(I,C=t+32|0,64,0),y0(C,64),y0(t,32),W=t+96|0,0}function EC(C,g,e,t,r,o,I){var a=0,_=0,s=0,h=0,n=0,B=0,Q=0;if(g-65>>>0<4294967232|I>>>0>64)C=-1;else{B=a=W,W=a=a-512&-64;A:{g:if(!(!(!(t|r)|e)|!C|((_=255&g)-65&255)>>>0<=191|!(!(g=255&I)||o)|g>>>0>=65)){if(g){if(!o)break g;$0(a- -64|0,0,293),A[a+56>>2]=327033209,A[a+60>>2]=1541459225,A[a+48>>2]=-79577749,A[a+52>>2]=528734635,A[a+40>>2]=725511199,A[a+44>>2]=-1694144372,A[a+32>>2]=-1377402159,A[a+36>>2]=1359893119,A[a+24>>2]=1595750129,A[a+28>>2]=-1521486534,A[a+16>>2]=-23791573,A[a+20>>2]=1013904242,A[a+8>>2]=-2067093701,A[a+12>>2]=-1150833019,A[a>>2]=-222443256^(g<<8|_),A[a+4>>2]=g>>>24^1779033703,$0((I=a+384|0)+g|0,0,128-g|0),P0(I,o,g),P0(a+96|0,I,128),A[a+352>>2]=128,y0(I,128),g=128}else $0(a- -64|0,0,293),A[a+56>>2]=327033209,A[a+60>>2]=1541459225,A[a+48>>2]=-79577749,A[a+52>>2]=528734635,A[a+40>>2]=725511199,A[a+44>>2]=-1694144372,A[a+32>>2]=-1377402159,A[a+36>>2]=1359893119,A[a+24>>2]=1595750129,A[a+28>>2]=-1521486534,A[a+16>>2]=-23791573,A[a+20>>2]=1013904242,A[a+8>>2]=-2067093701,A[a+12>>2]=-1150833019,A[a>>2]=-222443256^_,A[a+4>>2]=1779033703,g=0;C:if(t|r)for(Q=a+224|0,s=a+96|0;;){if(I=g+s|0,!r&t>>>0<=(o=256-g|0)>>>0){P0(I,e,t),A[a+352>>2]=t+A[a+352>>2];break C}if(P0(I,e,o),A[a+352>>2]=o+A[a+352>>2],h=g=A[a+68>>2],g=(n=(I=A[a+64>>2])+128|0)>>>0<128?g+1|0:g,A[a+64>>2]=n,A[a+68>>2]=g,g=A[a+76>>2],g=(h=I=(0|h)==-1&I>>>0>4294967167)>>>0>(I=I+A[a+72>>2]|0)>>>0?g+1|0:g,A[a+72>>2]=I,A[a+76>>2]=g,cg(a,s),P0(s,Q,128),g=A[a+352>>2]-128|0,A[a+352>>2]=g,e=e+o|0,!((r=r-(t>>>0>>0)|0)|(t=t-o|0)))break}_C(a,C,_),W=B;break A}h2(),Q0()}C=0}return C}function we(C,g){C|=0,g|=0;var e,t=0;W=e=W-128|0,A[e+80>>2]=0,A[e+84>>2]=0,A[e+88>>2]=0,A[e+92>>2]=0,A[e+40>>2]=0,A[e+44>>2]=0,A[e+48>>2]=0,A[e+52>>2]=0,A[e+56>>2]=0,A[e+60>>2]=0,t=A[8799],A[e+104>>2]=A[8798],A[e+108>>2]=t,t=A[8801],A[e+112>>2]=A[8800],A[e+116>>2]=t,t=A[8803],A[e+120>>2]=A[8802],A[e+124>>2]=t,A[e+64>>2]=0,A[e+68>>2]=0,A[e+72>>2]=0,A[e+76>>2]=0,c[e+64|0]=1,A[e+32>>2]=0,A[e+36>>2]=0,t=A[8797],A[e+96>>2]=A[8796],A[e+100>>2]=t,t=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[e+24>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[e+28>>2]=t,t=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[e+16>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[e+20>>2]=t,t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,A[e+8>>2]=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,A[e+12>>2]=t,t=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[e>>2]=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,A[e+4>>2]=t,pt(g=e- -64|0,e),d1(g),g=A[e+92>>2],t=A[e+88>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[e+84>>2],t=A[e+80>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[e+76>>2],t=A[e+72>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[e+68>>2],t=A[e+64>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,W=e+128|0}function le(C,g){C|=0,g|=0;var e,t=0;W=e=W-128|0,A[e+80>>2]=0,A[e+84>>2]=0,A[e+88>>2]=0,A[e+92>>2]=0,A[e+40>>2]=0,A[e+44>>2]=0,A[e+48>>2]=0,A[e+52>>2]=0,A[e+56>>2]=0,A[e+60>>2]=0,t=A[8799],A[e+104>>2]=A[8798],A[e+108>>2]=t,t=A[8801],A[e+112>>2]=A[8800],A[e+116>>2]=t,t=A[8803],A[e+120>>2]=A[8802],A[e+124>>2]=t,A[e+64>>2]=0,A[e+68>>2]=0,A[e+72>>2]=0,A[e+76>>2]=0,A[e+32>>2]=0,A[e+36>>2]=0,t=A[8797],A[e+96>>2]=A[8796],A[e+100>>2]=t,t=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[e+16>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[e+20>>2]=t,t=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[e+24>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,A[e+28>>2]=t,t=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,A[e>>2]=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,A[e+4>>2]=t,t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,A[e+8>>2]=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,A[e+12>>2]=t,pt(g=e- -64|0,e),d1(g),g=A[e+92>>2],t=A[e+88>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[e+84>>2],t=A[e+80>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[e+76>>2],t=A[e+72>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[e+68>>2],t=A[e+64>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,W=e+128|0}function pC(C,g,e,t){var r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0;A:{if((o=A[C+56>>2])|(r=A[C+60>>2])){if(n=a=16-o|0,s=(a=(0|(I=0-((o>>>0>16)+r|0)|0))==(0|t)&e>>>0>a>>>0|t>>>0>I>>>0)?n:e,n=a=a?I:t,a|s){if(a=C- -64|0,I=0,o=0,!n&s>>>0>=4|n)for(h=-4&s;r=I+A[C+56>>2]|0,c[r+a|0]=i[g+I|0],r=(B=1|I)+A[C+56>>2]|0,c[r+a|0]=i[g+B|0],r=(B=2|I)+A[C+56>>2]|0,c[r+a|0]=i[g+B|0],r=(B=3|I)+A[C+56>>2]|0,c[r+a|0]=i[g+B|0],r=o,o=(I=I+4|0)>>>0<4?r+1|0:r,r=p,p=r=(_=_+4|0)>>>0<4?r+1|0:r,(0|_)!=(0|h)|(0|n)!=(0|r););if(p=r=0,r|(_=3&s))for(;r=I+A[C+56>>2]|0,c[r+a|0]=i[g+I|0],o=(I=I+1|0)?o:o+1|0,r=l,l=r=(Q=Q+1|0)?r:r+1|0,(0|_)!=(0|Q)|(0|p)!=(0|r););o=A[C+56>>2],r=A[C+60>>2]}if(r=r+n|0,r=(o=o+s|0)>>>0>>0?r+1|0:r,A[C+56>>2]=o,A[C+60>>2]=r,!r&o>>>0<16)break A;BC(C,C- -64|0,16,0),A[C+56>>2]=0,A[C+60>>2]=0,e=(o=e)-s|0,t=t-((o>>>0>>0)+n|0)|0,g=g+s|0}if(!t&e>>>0>=16|t&&(BC(C,g,o=-16&e,t),e&=15,t=0,g=g+o|0),e|t){if(a=C- -64|0,Q=0,l=0,I=0,o=0,!t&e>>>0>=4|t)for(s=12&e,n=0,_=0;r=I+A[C+56>>2]|0,c[r+a|0]=i[g+I|0],r=(h=1|I)+A[C+56>>2]|0,c[r+a|0]=i[g+h|0],r=(h=2|I)+A[C+56>>2]|0,c[r+a|0]=i[g+h|0],r=(h=3|I)+A[C+56>>2]|0,c[r+a|0]=i[g+h|0],o=(I=I+4|0)>>>0<4?o+1|0:o,r=p,p=r=(_=_+4|0)>>>0<4?r+1|0:r,(0|s)!=(0|_)|(0|n)!=(0|r););if(p=r=0,r|(_=3&e))for(;r=I+A[C+56>>2]|0,c[r+a|0]=i[g+I|0],o=(I=I+1|0)?o:o+1|0,r=l,l=r=(Q=Q+1|0)?r:r+1|0,(0|_)!=(0|Q)|(0|p)!=(0|r););o=t+A[C+60>>2]|0,o=(g=e+A[C+56>>2]|0)>>>0>>0?o+1|0:o,A[C+56>>2]=g,A[C+60>>2]=o}}}function F1(C,g,e){var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0;l=A[g+4>>2],r=A[C+4>>2],v=A[g+8>>2],o=A[C+8>>2],D=A[g+12>>2],I=A[C+12>>2],b=A[g+16>>2],a=A[C+16>>2],M=A[g+20>>2],_=A[C+20>>2],Q=A[g+24>>2],s=A[C+24>>2],x=A[g+28>>2],h=A[C+28>>2],q=A[g+32>>2],n=A[C+32>>2],V=A[g+36>>2],B=A[C+36>>2],e=0-e|0,p=A[C>>2],A[C>>2]=e&(p^A[g>>2])^p,A[C+36>>2]=B^e&(B^V),A[C+32>>2]=n^e&(n^q),A[C+28>>2]=h^e&(h^x),A[C+24>>2]=s^e&(s^Q),A[C+20>>2]=_^e&(_^M),A[C+16>>2]=a^e&(a^b),A[C+12>>2]=I^e&(I^D),A[C+8>>2]=o^e&(o^v),A[C+4>>2]=r^e&(r^l),r=A[C+44>>2],l=A[g+44>>2],o=A[C+48>>2],v=A[g+48>>2],I=A[C+52>>2],D=A[g+52>>2],a=A[C+56>>2],b=A[g+56>>2],_=A[C+60>>2],M=A[g+60>>2],s=A[(Q=C- -64|0)>>2],x=A[g- -64>>2],h=A[C+68>>2],q=A[g+68>>2],n=A[C+72>>2],V=A[g+72>>2],B=A[C+40>>2],p=A[g+40>>2],t=A[C+76>>2],A[C+76>>2]=t^e&(A[g+76>>2]^t),A[C+72>>2]=n^e&(n^V),A[C+68>>2]=h^e&(h^q),A[Q>>2]=s^e&(s^x),A[C+60>>2]=_^e&(_^M),A[C+56>>2]=a^e&(a^b),A[C+52>>2]=I^e&(I^D),A[C+48>>2]=o^e&(o^v),A[C+44>>2]=r^e&(r^l),A[C+40>>2]=B^e&(B^p),r=A[C+84>>2],l=A[g+84>>2],o=A[C+88>>2],v=A[g+88>>2],I=A[C+92>>2],D=A[g+92>>2],a=A[C+96>>2],b=A[g+96>>2],_=A[C+100>>2],M=A[g+100>>2],s=A[C+104>>2],Q=A[g+104>>2],h=A[C+108>>2],x=A[g+108>>2],n=A[C+112>>2],q=A[g+112>>2],B=A[C+80>>2],V=A[g+80>>2],p=A[g+116>>2],g=A[C+116>>2],A[C+116>>2]=e&(p^g)^g,A[C+112>>2]=n^e&(n^q),A[C+108>>2]=h^e&(h^x),A[C+104>>2]=s^e&(s^Q),A[C+100>>2]=_^e&(_^M),A[C+96>>2]=a^e&(a^b),A[C+92>>2]=I^e&(I^D),A[C+88>>2]=o^e&(o^v),A[C+84>>2]=r^e&(r^l),A[C+80>>2]=B^e&(B^V)}function j1(C,g){var e,t,r=0;for(W=e=W-192|0,gA(t=e+144|0,g),gA(r=e+96|0,t),gA(r,r),kA(r,g,r),kA(t,t,r),gA(g=e+48|0,t),kA(r,r,g),gA(g,r),gA(g,g),gA(g,g),gA(g,g),gA(g,g),kA(r,g,r),gA(g,r),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),kA(g,g,r),gA(e,g),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),kA(g,e,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),kA(r,g,r),gA(g,r),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),kA(g,g,r),gA(e,g),g=1;gA(e,e),(0|(g=g+1|0))!=100;);kA(g=e+48|0,e,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),gA(g,g),kA(r=e+96|0,g,r),gA(r,r),gA(r,r),gA(r,r),gA(r,r),gA(r,r),kA(C,r,e+144|0),W=e+192|0}function fC(C,g){var e,t=0,r=0;for(W=e=W-144|0,gA(r=e+96|0,g),gA(t=e+48|0,r),gA(t,t),kA(t,g,t),kA(r,r,t),gA(r,r),kA(r,t,r),gA(t,r),gA(t,t),gA(t,t),gA(t,t),gA(t,t),kA(r,t,r),gA(t,r),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),kA(t,t,r),gA(e,t),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),gA(e,e),kA(t,e,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),kA(r,t,r),gA(t,r),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),kA(t,t,r),gA(e,t),t=1;gA(e,e),(0|(t=t+1|0))!=100;);kA(t=e+48|0,e,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),gA(t,t),kA(r=e+96|0,t,r),gA(r,r),gA(r,r),kA(C,r,g),W=e+144|0}function ke(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q=0,V=0,$=0,K=0;W=e=W-320|0,z1(t=C+40|0,g),A[C+84>>2]=0,A[C+88>>2]=0,A[C+80>>2]=1,A[C+92>>2]=0,A[C+96>>2]=0,A[C+100>>2]=0,A[C+104>>2]=0,A[C+108>>2]=0,A[C+112>>2]=0,A[C+116>>2]=0,gA($=e+240|0,t),kA(V=e+192|0,$,1584),K=-1,r=A[e+240>>2]-1|0,A[e+240>>2]=r,A[e+192>>2]=A[e+192>>2]+1,o=A[e+244>>2],I=A[e+248>>2],a=A[e+252>>2],_=A[e+256>>2],s=A[e+260>>2],h=A[e+264>>2],n=A[e+268>>2],B=A[e+272>>2],Q=A[e+276>>2],gA(q=e+144|0,V),kA(q,q,V),gA(C,q),kA(C,C,V),kA(C,C,$),fC(C,C),kA(C,C,q),kA(C,C,$),gA(q=e+96|0,C),kA(q,q,V),V=A[e+132>>2],A[e+84>>2]=V-Q,q=A[e+128>>2],A[e+80>>2]=q-B,$=A[e+124>>2],A[e+76>>2]=$-n,p=A[e+120>>2],A[e+72>>2]=p-h,l=A[e+116>>2],A[e+68>>2]=l-s,v=A[e+112>>2],A[e+64>>2]=v-_,D=A[e+108>>2],A[e+60>>2]=D-a,b=A[e+104>>2],A[e+56>>2]=b-I,M=A[e+100>>2],A[e+52>>2]=M-o,x=A[e+96>>2],A[e+48>>2]=x-r,w2(e,e+48|0);A:{if(!X0(e,32)){if(A[e+36>>2]=V+Q,A[e+32>>2]=q+B,A[e+28>>2]=$+n,A[e+24>>2]=h+p,A[e+20>>2]=s+l,A[e+16>>2]=_+v,A[e+12>>2]=a+D,A[e+8>>2]=I+b,A[e+4>>2]=o+M,A[e>>2]=r+x,w2(V=e+288|0,e),!X0(V,32))break A;kA(C,C,1632)}w2(e+288|0,C),(1&c[e+288|0])==(i[g+31|0]>>>7|0)&&(A[C>>2]=0-A[C>>2],A[C+36>>2]=0-A[C+36>>2],A[C+32>>2]=0-A[C+32>>2],A[C+28>>2]=0-A[C+28>>2],A[C+24>>2]=0-A[C+24>>2],A[C+20>>2]=0-A[C+20>>2],A[C+16>>2]=0-A[C+16>>2],A[C+12>>2]=0-A[C+12>>2],A[C+8>>2]=0-A[C+8>>2],A[C+4>>2]=0-A[C+4>>2]),kA(C+120|0,C,t),K=0}return W=e+320|0,K}function ue(C,g,e){var t,r,o,I,a,_,s,h,n=0;W=t=W-128|0,A[C>>2]=1,A[C+4>>2]=0,A[C+8>>2]=0,A[C+12>>2]=0,A[C+16>>2]=0,A[C+20>>2]=0,A[C+24>>2]=0,A[C+28>>2]=0,A[C+32>>2]=0,A[C+36>>2]=0,A[C+40>>2]=1,$0(C+44|0,0,76),F1(C,g=M0(g,960)+2992|0,(255&(1^(n=e-((e>>31&e)<<1)|0)))-1>>>31|0),F1(C,g+120|0,(255&(2^n))-1>>>31|0),F1(C,g+240|0,(255&(3^n))-1>>>31|0),F1(C,g+360|0,(255&(4^n))-1>>>31|0),F1(C,g+480|0,(255&(5^n))-1>>>31|0),F1(C,g+600|0,(255&(6^n))-1>>>31|0),F1(C,g+720|0,(255&(7^n))-1>>>31|0),F1(C,g+840|0,(255&(8^n))-1>>>31|0),g=A[C+76>>2],A[t+40>>2]=A[C+72>>2],A[t+44>>2]=g,n=A[4+(g=C- -64|0)>>2],A[t+32>>2]=A[g>>2],A[t+36>>2]=n,g=A[C+60>>2],A[t+24>>2]=A[C+56>>2],A[t+28>>2]=g,g=A[C+52>>2],A[t+16>>2]=A[C+48>>2],A[t+20>>2]=g,g=A[C+44>>2],A[t+8>>2]=A[C+40>>2],A[t+12>>2]=g,g=A[C+12>>2],A[t+56>>2]=A[C+8>>2],A[t+60>>2]=g,n=A[C+20>>2],A[(g=t- -64|0)>>2]=A[C+16>>2],A[g+4>>2]=n,g=A[C+28>>2],A[t+72>>2]=A[C+24>>2],A[t+76>>2]=g,g=A[C+36>>2],A[t+80>>2]=A[C+32>>2],A[t+84>>2]=g,g=A[C+4>>2],A[t+48>>2]=A[C>>2],A[t+52>>2]=g,g=A[C+84>>2],n=A[C+88>>2],r=A[C+92>>2],o=A[C+96>>2],I=A[C+100>>2],a=A[C+104>>2],_=A[C+108>>2],s=A[C+112>>2],h=A[C+80>>2],A[t+124>>2]=0-A[C+116>>2],A[t+120>>2]=0-s,A[t+116>>2]=0-_,A[t+112>>2]=0-a,A[t+108>>2]=0-I,A[t+104>>2]=0-o,A[t+100>>2]=0-r,A[t+96>>2]=0-n,A[t+92>>2]=0-g,A[t+88>>2]=0-h,F1(C,t+8|0,(128&e)>>>7|0),W=t+128|0}function Bg(C){var g,e,t,r,o,I,a,_,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0;return W=g=W-320|0,gA(h=g+240|0,C),gA(n=g+192|0,C+40|0),gA(s=g+144|0,C+80|0),C=A[g+240>>2],B=A[g+192>>2],Q=A[g+244>>2],p=A[g+196>>2],l=A[g+248>>2],v=A[g+200>>2],D=A[g+252>>2],b=A[g+204>>2],M=A[g+256>>2],x=A[g+208>>2],q=A[g+260>>2],V=A[g+212>>2],$=A[g+264>>2],K=A[g+216>>2],J=A[g+268>>2],z=A[g+220>>2],_A=A[g+272>>2],sA=A[g+224>>2],A[g+84>>2]=A[g+228>>2]-A[g+276>>2],A[g+80>>2]=sA-_A,A[g+76>>2]=z-J,A[g+72>>2]=K-$,A[g+68>>2]=V-q,A[g+64>>2]=x-M,A[g+60>>2]=b-D,A[g+56>>2]=v-l,A[g+52>>2]=p-Q,A[g+48>>2]=B-C,kA(C=g+48|0,C,s),kA(g,h,n),kA(g,g,1584),gA(g+96|0,s),s=A[g+48>>2],h=A[g+96>>2],n=A[g>>2],B=A[g+52>>2],Q=A[g+100>>2],p=A[g+4>>2],l=A[g+56>>2],v=A[g+104>>2],D=A[g+8>>2],b=A[g+60>>2],M=A[g+108>>2],x=A[g+12>>2],q=A[g+64>>2],V=A[g+112>>2],$=A[g+16>>2],K=A[g+68>>2],J=A[g+116>>2],z=A[g+20>>2],_A=A[g+72>>2],sA=A[g+120>>2],e=A[g+24>>2],t=A[g+76>>2],r=A[g+124>>2],o=A[g+28>>2],I=A[g+80>>2],a=A[g+128>>2],_=A[g+32>>2],A[g+84>>2]=A[g+84>>2]-(A[g+132>>2]+A[g+36>>2]|0),A[g+80>>2]=I-(a+_|0),A[g+76>>2]=t-(r+o|0),A[g+72>>2]=_A-(sA+e|0),A[g+68>>2]=K-(J+z|0),A[g+64>>2]=q-(V+$|0),A[g+60>>2]=b-(M+x|0),A[g+56>>2]=l-(v+D|0),A[g+52>>2]=B-(Q+p|0),A[g+48>>2]=s-(h+n|0),w2(s=g+288|0,C),C=X0(s,32),W=g+320|0,C}function DC(C,g,e,t,r){C|=0,g|=0,e|=0,t|=0;var o=0,I=0,a=0,_=0,s=0,h=0,n=0;A:{g:{C:{e:{t:{o:{i:{if((-7&(r|=0))==1&&(a=(o=(t>>>0)/3|0)<<2,(o=M0(o,-3)+t|0)&&(a=2&r?2+((o>>>1|0)+a|0)|0:a+4|0),!(g>>>0<=a>>>0))){if(!(r>>>0>=4)){if(!t){r=0;break e}o=0,r=0;break i}if(!t){r=0;break e}for(o=0,r=0;;){for(s=i[e+_|0]|s<<8,o|=8;h=65510+(I=s>>>(o=o-6|0)&63)>>>8|0,n=I+65484>>>8|0,c[C+r|0]=~(1+(16321^I))>>>8&45|I+252&I+65474>>>8&~n|~(I+32705)>>>8&95|h&I+65|n&I+71&~h,r=r+1|0,o>>>0>5;);if((0|(_=_+1|0))==(0|t))break}if(!o)break t;_=45,I=32705,t=95;break o}h2(),Q0()}for(;;){for(s=i[e+_|0]|s<<8,o|=8;h=65510+(I=s>>>(o=o-6|0)&63)>>>8|0,n=I+65484>>>8|0,c[C+r|0]=~(1+(16321^I))>>>8&43|I+252&I+65474>>>8&~n|~(I+16321)>>>8&47|h&I+65|n&I+71&~h,r=r+1|0,o>>>0>5;);if((0|(_=_+1|0))==(0|t))break}if(!o)break t;_=43,I=16321,t=47}I=~((e=s<<6-o&63)+I)>>>8&t|(o=e+65510>>>8|0)&e+65,t=e+65484>>>8|0,c[C+r|0]=~(1+(16321^e))>>>8&_|I|e+252&e+65474>>>8&~t|t&e+71&~o,r=r+1|0}if(r>>>0>a>>>0)break C}if(r>>>0>>0)break g;a=r;break A}xg(1104,1218,231,1503),Q0()}$0(C+r|0,61,a-r|0)}return $0(C+a|0,0,(g>>>0>(e=a+1|0)>>>0?g:e)-a|0),0|C}function de(C,g,e){var t,r,o,I=0,a=0,_=0,s=0,h=0;W=t=W-16|0,r=A[C+20>>2],A[C+20>>2]=0,o=A[C+4>>2],A[C+4>>2]=0,_=-26;A:{g:{C:{e:switch(e-1|0){case 1:if(zg(g,1182,9))break g;g=g+9|0;break C;case 0:break e;default:break A}if(zg(g,1173,8))break g;g=g+8|0}if(i[0|g]!=36|i[g+1|0]!=118||(I=i[g+2|0]==61),I&&!(((s=i[0|(e=g+3|0)])-58&255)>>>0<246)){for(h=I?e:g,g=0,I=s;;){if(a=e,g>>>0>429496729||(e=(255&I)-48|0)>>>0>~(g=M0(g,10))>>>0)break g;if(g=g+e|0,!(((I=i[0|(e=a+1|0)])-58&255)>>>0>245))break}if(!((0|s)==48&(0|a)!=(0|h)|(0|e)==(0|h))){if((0|g)!=19)break A;if(!((255&I)!=36|i[a+2|0]!=109|i[a+3|0]!=61)&&(e=Et(a+4|0,g=t+12|0))&&(A[C+44>>2]=A[t+12>>2],!(i[0|e]!=44|i[e+1|0]!=116|i[e+2|0]!=61)&&(e=Et(e+3|0,g))&&(A[C+40>>2]=A[t+12>>2],!(i[0|e]!=44|i[e+1|0]!=112|i[e+2|0]!=61)&&(e=Et(e+3|0,g))&&(I=A[t+12>>2],A[C+48>>2]=I,A[C+52>>2]=I,i[0|e]==36&&(A[t+12>>2]=r,!hC(a=A[C+16>>2],r,I=e=e+1|0,s=p1(e),0,g,e=t+8|0,3)&&(A[C+20>>2]=A[t+12>>2],I=A[t+8>>2],i[0|I]==36&&(A[t+12>>2]=o,I=I+1|0,!hC(A[C>>2],o,I,p1(I),0,g,e,3)))))))){if(A[C+4>>2]=A[t+12>>2],g=A[t+8>>2],_=n0(C))break A;_=i[0|g]?-32:0;break A}}}}_=-32}return W=t+16|0,_}function q2(C,g,e,t){var r=0,o=0,I=0,a=0,_=0,s=0,h=0;if(e|t)A:for(h=C+224|0,_=C+96|0,o=i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24;;){if(r=o+_|0,!t&e>>>0<=(I=256-o|0)>>>0){P0(r,g,e),g=e+(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)|0,c[C+352|0]=g,c[C+353|0]=g>>>8,c[C+354|0]=g>>>16,c[C+355|0]=g>>>24;break A}if(P0(r,g,I),r=(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)+I|0,c[C+352|0]=r,c[C+353|0]=r>>>8,c[C+354|0]=r>>>16,c[C+355|0]=r>>>24,s=o=i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24,o=(a=128+(r=i[C+64|0]|i[C+65|0]<<8|i[C+66|0]<<16|i[C+67|0]<<24)|0)>>>0<128?o+1|0:o,c[C+64|0]=a,c[C+65|0]=a>>>8,c[C+66|0]=a>>>16,c[C+67|0]=a>>>24,c[C+68|0]=o,c[C+69|0]=o>>>8,c[C+70|0]=o>>>16,c[C+71|0]=o>>>24,o=i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24,o=(s=r=(0|s)==-1&r>>>0>4294967167)>>>0>(r=r+(i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24)|0)>>>0?o+1|0:o,c[C+72|0]=r,c[C+73|0]=r>>>8,c[C+74|0]=r>>>16,c[C+75|0]=r>>>24,c[C+76|0]=o,c[C+77|0]=o>>>8,c[C+78|0]=o>>>16,c[C+79|0]=o>>>24,cg(C,_),P0(_,h,128),r=o=(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)-128|0,c[C+352|0]=r,c[C+353|0]=r>>>8,c[C+354|0]=r>>>16,c[C+355|0]=r>>>24,g=g+I|0,!((t=t-(e>>>0>>0)|0)|(e=e-I|0)))break}return 0}function Se(C){var g=0,e=0,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0;for(e=A[C+60>>2],v=A[C+56>>2],l=A[C+52>>2],Q=A[C+48>>2],g=A[C+44>>2],t=A[C+40>>2],D=A[C+36>>2],B=A[C+32>>2],r=A[C+28>>2],o=A[C+24>>2],I=A[C+20>>2],a=A[C+16>>2],_=A[C+12>>2],s=A[C+8>>2],h=A[C+4>>2],n=A[C>>2];p=pA(I+h|0,7)^D,b=pA(p+I|0,9)^l,a=pA(n+Q|0,7)^a,M=pA(a+n|0,9)^B,x=pA(M+a|0,13)^Q,_=pA(g+e|0,7)^_,r=pA(_+e|0,9)^r,B=pA(r+_|0,13)^g,e=pA(r+B|0,18)^e,g=pA(t+o|0,7)^v,Q=x^pA(e+g|0,7),l=b^pA(Q+e|0,9),v=pA(Q+l|0,13)^g,e=pA(l+v|0,18)^e,s=pA(g+t|0,9)^s,o=pA(s+g|0,13)^o,t=pA(o+s|0,18)^t,g=pA(t+p|0,7)^B,B=pA(g+t|0,9)^M,D=pA(g+B|0,13)^p,t=pA(B+D|0,18)^t,h=pA(p+b|0,13)^h,I=pA(h+b|0,18)^I,o=pA(I+a|0,7)^o,r=pA(o+I|0,9)^r,a=pA(r+o|0,13)^a,I=pA(a+r|0,18)^I,n=pA(M+x|0,18)^n,h=pA(n+_|0,7)^h,s=pA(h+n|0,9)^s,_=pA(s+h|0,13)^_,n=pA(_+s|0,18)^n,p=q>>>0<6,q=q+2|0,p;);A[C>>2]=A[C>>2]+n,A[C+4>>2]=A[C+4>>2]+h,A[C+8>>2]=A[C+8>>2]+s,A[C+12>>2]=A[C+12>>2]+_,A[C+16>>2]=A[C+16>>2]+a,A[C+20>>2]=A[C+20>>2]+I,A[C+24>>2]=A[C+24>>2]+o,A[C+28>>2]=A[C+28>>2]+r,A[C+32>>2]=A[C+32>>2]+B,A[C+36>>2]=A[C+36>>2]+D,A[C+40>>2]=A[C+40>>2]+t,A[C+44>>2]=A[C+44>>2]+g,A[C+48>>2]=A[C+48>>2]+Q,A[C+52>>2]=A[C+52>>2]+l,A[C+56>>2]=A[C+56>>2]+v,A[C+60>>2]=A[C+60>>2]+e}function be(C,g,e,t){var r,o=0;return W=r=W-320|0,o=-1,O0(e)&&(a1(e)||T1(r,e)||cC(r)&&(c[0|C]=i[0|g],c[C+1|0]=i[g+1|0],c[C+2|0]=i[g+2|0],c[C+3|0]=i[g+3|0],c[C+4|0]=i[g+4|0],c[C+5|0]=i[g+5|0],c[C+6|0]=i[g+6|0],c[C+7|0]=i[g+7|0],c[C+8|0]=i[g+8|0],c[C+9|0]=i[g+9|0],c[C+10|0]=i[g+10|0],c[C+11|0]=i[g+11|0],c[C+12|0]=i[g+12|0],c[C+13|0]=i[g+13|0],c[C+14|0]=i[g+14|0],c[C+15|0]=i[g+15|0],c[C+16|0]=i[g+16|0],c[C+17|0]=i[g+17|0],c[C+18|0]=i[g+18|0],c[C+19|0]=i[g+19|0],c[C+20|0]=i[g+20|0],c[C+21|0]=i[g+21|0],c[C+22|0]=i[g+22|0],c[C+23|0]=i[g+23|0],c[C+24|0]=i[g+24|0],c[C+25|0]=i[g+25|0],c[C+26|0]=i[g+26|0],c[C+27|0]=i[g+27|0],c[C+28|0]=i[g+28|0],c[C+29|0]=i[g+29|0],c[C+30|0]=i[g+30|0],e=i[g+31|0],t&&(c[0|C]=248&i[0|C],e|=64),c[C+31|0]=127&e,ge(e=r+160|0,C,r),eg(C,e),(127&i[C+31|0]|i[C+30|0]|i[C+29|0]|i[C+28|0]|i[C+27|0]|i[C+26|0]|i[C+25|0]|i[C+24|0]|i[C+23|0]|i[C+22|0]|i[C+21|0]|i[C+20|0]|i[C+19|0]|i[C+18|0]|i[C+17|0]|i[C+16|0]|i[C+15|0]|i[C+14|0]|i[C+13|0]|i[C+12|0]|i[C+11|0]|i[C+10|0]|i[C+9|0]|i[C+8|0]|i[C+7|0]|i[C+6|0]|i[C+5|0]|i[C+4|0]|i[C+3|0]|i[C+2|0]|i[C+1|0]|1^i[0|C])-1&256||(o=X0(g,32)?-1:0))),W=r+320|0,o}function ve(C,g,e,t,r){var o,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0;if(W=o=W-48|0,r&&X2(r,102),!(i[0|t]!=36|i[t+1|0]!=55|i[t+2|0]!=36)&&(h=yg(i[t+3|0]))&&(I=me(o+12|0,t+4|0))&&(s=me(o+8|0,I))){for(a=p1(s)+1|0;I=0,a&&i[0|(I=s+(a=a-1|0)|0)]!=36;);if(_=I-s|0,I||(_=p1(s)),!((_=45+(a=(I=_)+(s-t|0)|0)|0)>>>0>102|I>>>0>_>>>0||(_=C,B=g,Q=e,C=31&(h=h-1024|0),(63&h)>>>0>=32?(g=1<>>32-C,he(_,B,Q,s,I,e,g,A[o+12>>2],A[o+8>>2],o+16|0,32)))){for(I=P0(r,t,a),c[0|(C=I+a|0)]=36,n=(_=I+102|0)-(r=C+1|0)|0,e=0;;){A:if((g=e)>>>0>31)t=r;else if(C=r,e=(a=g+1|0)+(B=(e=31-g|0)>>>0>=2?2:e)|0,t=0,s=0,r=i[(h=o+16|0)+g|0],B&&(r=i[a+h|0]<<8|r,(0|(g=g+2|0))!=(0|e)&&(s=1,r=i[g+h|0]<<16|r)),n&&(c[0|C]=i[1024+(63&r)|0],(0|n)!=1)){if(c[C+1|0]=i[1024+(r>>>6&63)|0],B=C+n|0,g=C+2|0,(0|e)!=(0|a)){if((0|n)==2)break A;if(c[C+2|0]=i[1024+(r>>>12&63)|0],g=C+3|0,s){if((0|n)==3)break A;c[C+3|0]=i[1024+(r>>>18|0)|0],g=C+4|0}}if(n=B-(r=g)|0,r)continue}break}y0(o+16|0,32),n=0,!t|t>>>0>=_>>>0||(c[0|t]=0,n=I)}}return W=o+48|0,n}function D2(C,g){var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0;t=A[g+4>>2],o=A[g+44>>2],I=A[g+8>>2],a=A[g+48>>2],_=A[g+12>>2],s=A[g+52>>2],h=A[g+16>>2],n=A[g+56>>2],B=A[g+20>>2],Q=A[g+60>>2],p=A[g+24>>2],l=A[(r=g- -64|0)>>2],v=A[g+28>>2],D=A[g+68>>2],b=A[g+32>>2],M=A[g+72>>2],x=A[g+36>>2],e=A[g+76>>2],A[C>>2]=A[g>>2]+A[g+40>>2],A[C+36>>2]=x+e,A[C+32>>2]=b+M,A[C+28>>2]=v+D,A[C+24>>2]=p+l,A[C+20>>2]=B+Q,A[C+16>>2]=h+n,A[C+12>>2]=_+s,A[C+8>>2]=I+a,A[C+4>>2]=t+o,t=A[g+4>>2],o=A[g+44>>2],I=A[g+8>>2],a=A[g+48>>2],_=A[g+12>>2],s=A[g+52>>2],h=A[g+16>>2],n=A[g+56>>2],B=A[g+20>>2],Q=A[g+60>>2],p=A[g+24>>2],r=A[r>>2],l=A[g+28>>2],v=A[g+68>>2],D=A[g+32>>2],b=A[g+72>>2],M=A[g>>2],x=A[g+40>>2],A[C+76>>2]=A[g+76>>2]-A[g+36>>2],A[C+72>>2]=b-D,A[C+68>>2]=v-l,A[C- -64>>2]=r-p,A[C+60>>2]=Q-B,A[C+56>>2]=n-h,A[C+52>>2]=s-_,A[C+48>>2]=a-I,A[C+44>>2]=o-t,A[C+40>>2]=x-M,t=A[g+84>>2],A[C+80>>2]=A[g+80>>2],A[C+84>>2]=t,t=A[g+92>>2],A[C+88>>2]=A[g+88>>2],A[C+92>>2]=t,t=A[g+100>>2],A[C+96>>2]=A[g+96>>2],A[C+100>>2]=t,t=A[g+108>>2],A[C+104>>2]=A[g+104>>2],A[C+108>>2]=t,t=A[g+116>>2],A[C+112>>2]=A[g+112>>2],A[C+116>>2]=t,kA(C+120|0,g+120|0,1680)}function a0(C,g,e){var t,r,o,I,a,_,s,h,n,B,Q,p,l=0,v=0,D=0,b=0,M=0;l=A[g+12>>2],v=A[g+8>>2],D=A[g+4>>2],t=W+-64&-64,g=A[g>>2],A[t>>2]=A[35744+((255&g)<<2)>>2],A[t+4>>2]=A[35744+(D>>>6&1020)>>2],A[t+8>>2]=A[35744+(v>>>14&1020)>>2],A[t+12>>2]=A[35744+(l>>>22&1020)>>2],A[t+16>>2]=A[35744+((255&D)<<2)>>2],A[t+20>>2]=A[35744+(v>>>6&1020)>>2],A[t+24>>2]=A[35744+(l>>>14&1020)>>2],A[t+28>>2]=A[35744+(g>>>22&1020)>>2],A[t+32>>2]=A[35744+((255&v)<<2)>>2],A[t+36>>2]=A[35744+(l>>>6&1020)>>2],A[t+40>>2]=A[35744+(g>>>14&1020)>>2],A[t+44>>2]=A[35744+(D>>>22&1020)>>2],A[t+48>>2]=A[35744+((255&l)<<2)>>2],A[t+52>>2]=A[35744+(g>>>6&1020)>>2],A[t+56>>2]=A[35744+(D>>>14&1020)>>2],A[t+60>>2]=A[35744+(v>>>22&1020)>>2],g=A[t+12>>2],l=A[t>>2],v=A[t+4>>2],D=A[t+8>>2],r=A[t+28>>2],o=A[t+16>>2],I=A[t+20>>2],a=A[t+24>>2],_=A[t+44>>2],s=A[t+32>>2],h=A[t+36>>2],n=A[t+40>>2],B=A[e>>2],Q=A[e+4>>2],p=A[e+8>>2],b=C,M=A[e+12>>2]^A[t+48>>2]^pA(A[t+52>>2],8)^pA(A[t+56>>2],16)^pA(A[t+60>>2],24),A[b+12>>2]=M,b=C,M=pA(h,8)^s^pA(n,16)^pA(_,24)^p,A[b+8>>2]=M,b=C,M=pA(I,8)^o^pA(a,16)^pA(r,24)^Q,A[b+4>>2]=M,b=C,M=pA(v,8)^l^pA(D,16)^pA(g,24)^B,A[b>>2]=M}function Fe(C,g,e){var t,r=0;return W=t=W-160|0,c[0|C]=i[0|g],c[C+1|0]=i[g+1|0],c[C+2|0]=i[g+2|0],c[C+3|0]=i[g+3|0],c[C+4|0]=i[g+4|0],c[C+5|0]=i[g+5|0],c[C+6|0]=i[g+6|0],c[C+7|0]=i[g+7|0],c[C+8|0]=i[g+8|0],c[C+9|0]=i[g+9|0],c[C+10|0]=i[g+10|0],c[C+11|0]=i[g+11|0],c[C+12|0]=i[g+12|0],c[C+13|0]=i[g+13|0],c[C+14|0]=i[g+14|0],c[C+15|0]=i[g+15|0],c[C+16|0]=i[g+16|0],c[C+17|0]=i[g+17|0],c[C+18|0]=i[g+18|0],c[C+19|0]=i[g+19|0],c[C+20|0]=i[g+20|0],c[C+21|0]=i[g+21|0],c[C+22|0]=i[g+22|0],c[C+23|0]=i[g+23|0],c[C+24|0]=i[g+24|0],c[C+25|0]=i[g+25|0],c[C+26|0]=i[g+26|0],c[C+27|0]=i[g+27|0],c[C+28|0]=i[g+28|0],c[C+29|0]=i[g+29|0],c[C+30|0]=i[g+30|0],r=i[g+31|0],e&&(c[0|C]=248&i[0|C],r|=64),c[C+31|0]=127&r,Cg(t,C),eg(C,t),e=-1,(127&i[C+31|0]|i[C+30|0]|i[C+29|0]|i[C+28|0]|i[C+27|0]|i[C+26|0]|i[C+25|0]|i[C+24|0]|i[C+23|0]|i[C+22|0]|i[C+21|0]|i[C+20|0]|i[C+19|0]|i[C+18|0]|i[C+17|0]|i[C+16|0]|i[C+15|0]|i[C+14|0]|i[C+13|0]|i[C+12|0]|i[C+11|0]|i[C+10|0]|i[C+9|0]|i[C+8|0]|i[C+7|0]|i[C+6|0]|i[C+5|0]|i[C+4|0]|i[C+3|0]|i[C+2|0]|i[C+1|0]|1^i[0|C])-1&256||(e=X0(g,32)?-1:0),W=t+160|0,e}function wC(C,g){var e,t,r,o,I,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0;(a=A[C+56>>2])|(_=A[C+60>>2])&&(c[(h=C- -64|0)+a|0]=1,!((v=a+1|0)?_:_+1|0)&v>>>0<=15&&$0(65+(C+a|0)|0,0,15-a|0),c[C+80|0]=1,BC(C,h,16,0)),v=A[C+52>>2],p=A[C+48>>2],h=A[C+44>>2],a=A[C+24>>2],n=A[C+28>>2]+(a>>>26|0)|0,s=A[C+32>>2]+(n>>>26|0)|0,e=A[C+36>>2]+(s>>>26|0)|0,_=(Q=(a=(a=(67108863&a)+((B=A[C+20>>2]+M0(e>>>26|0,5)|0)>>>26|0)|0)&(n=(s=(I=(67108863&e)+((o=(t=67108863&s)+((r=(l=67108863&n)+((B=a+((_=5+(Q=67108863&B)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)-67108864|0)>>31)|B&(s=67108863&(B=(s>>>31|0)-1|0)))<<26|_&s|n&Q)+A[C+40>>2]|0,c[0|g]=_,c[g+1|0]=_>>>8,c[g+2|0]=_>>>16,c[g+3|0]=_>>>24,Q=_>>>0>>0,_=0,_=(a=(l=n&l|s&r)<<20|a>>>6)>>>0>(a=a+h|0)>>>0?1:_,_=(h=a)>>>0>(a=a+Q|0)>>>0?_+1|0:_,c[g+4|0]=a,c[g+5|0]=a>>>8,c[g+6|0]=a>>>16,c[g+7|0]=a>>>24,a=0,h=(h=(s=n&t|s&o)<<14|l>>>12)>>>0>(p=h+p|0)>>>0?1:a,a=p,p=_,a=a+_|0,_=h,_=a>>>0

>>0?_+1|0:_,c[g+8|0]=a,c[g+9|0]=a>>>8,c[g+10|0]=a>>>16,c[g+11|0]=a>>>24,_=(a=(a=(B&I|n&e)<<8|s>>>18)+v|0)+_|0,c[g+12|0]=_,c[g+13|0]=_>>>8,c[g+14|0]=_>>>16,c[g+15|0]=_>>>24,y0(C,88)}function E1(C,g,e){C|=0,g|=0,e|=0;var t,r=0;return W=t=W-16|0,c[t+15|0]=0,r=-1,0|G2[A[8930]](C,g,e)||(c[t+15|0]=i[0|C]|i[t+15|0],c[t+15|0]=i[C+1|0]|i[t+15|0],c[t+15|0]=i[C+2|0]|i[t+15|0],c[t+15|0]=i[C+3|0]|i[t+15|0],c[t+15|0]=i[C+4|0]|i[t+15|0],c[t+15|0]=i[C+5|0]|i[t+15|0],c[t+15|0]=i[C+6|0]|i[t+15|0],c[t+15|0]=i[C+7|0]|i[t+15|0],c[t+15|0]=i[C+8|0]|i[t+15|0],c[t+15|0]=i[C+9|0]|i[t+15|0],c[t+15|0]=i[C+10|0]|i[t+15|0],c[t+15|0]=i[C+11|0]|i[t+15|0],c[t+15|0]=i[C+12|0]|i[t+15|0],c[t+15|0]=i[C+13|0]|i[t+15|0],c[t+15|0]=i[C+14|0]|i[t+15|0],c[t+15|0]=i[C+15|0]|i[t+15|0],c[t+15|0]=i[C+16|0]|i[t+15|0],c[t+15|0]=i[C+17|0]|i[t+15|0],c[t+15|0]=i[C+18|0]|i[t+15|0],c[t+15|0]=i[C+19|0]|i[t+15|0],c[t+15|0]=i[C+20|0]|i[t+15|0],c[t+15|0]=i[C+21|0]|i[t+15|0],c[t+15|0]=i[C+22|0]|i[t+15|0],c[t+15|0]=i[C+23|0]|i[t+15|0],c[t+15|0]=i[C+24|0]|i[t+15|0],c[t+15|0]=i[C+25|0]|i[t+15|0],c[t+15|0]=i[C+26|0]|i[t+15|0],c[t+15|0]=i[C+27|0]|i[t+15|0],c[t+15|0]=i[C+28|0]|i[t+15|0],c[t+15|0]=i[C+29|0]|i[t+15|0],c[t+15|0]=i[C+30|0]|i[t+15|0],c[t+15|0]=i[C+31|0]|i[t+15|0],r=(i[t+15|0]<<23)-8388608>>31),W=t+16|0,0|r}function Ne(C,g,e,t,r){var o=0,I=0,a=0,_=0,s=0,h=0,n=0;A:{if((0|t)==1|t>>>0>1)A[9404]=22;else{W=t=W-128|0,A[t- -64>>2]=0,A[t+56>>2]=0,A[t+60>>2]=0,A[t+48>>2]=0,A[t+52>>2]=0,A[t+40>>2]=0,A[t+44>>2]=0,A[t+32>>2]=0,A[t+36>>2]=0,A[t+24>>2]=0,A[t+28>>2]=0,A[t+16>>2]=0,A[t+20>>2]=0,o=p1(C),A[t+28>>2]=o,A[t+44>>2]=o,A[t+12>>2]=o,I=r1(o),A[t+40>>2]=I,a=r1(o),A[t+24>>2]=a,_=r1(o),A[t+8>>2]=_;g:if(!_|!I|!a||!(o=r1(o)))M2(I),M2(a),M2(_),C=-22;else{if(C=de(t+8|0,C,r)){M2(A[t+40>>2]),M2(A[t+24>>2]),M2(A[t+8>>2]),M2(o);break g}_=A[t+28>>2],s=A[t+24>>2],C=A[t+60>>2],h=A[t+52>>2],n=A[t+48>>2],X2(o,I=A[t+12>>2]),(a=r1(I))?(A[t+100>>2]=0,A[t+104>>2]=0,A[t+92>>2]=0,A[t+96>>2]=0,A[t+88>>2]=_,A[t+84>>2]=s,A[t+80>>2]=e,A[t+76>>2]=g,A[t+72>>2]=I,A[t+68>>2]=a,A[t+124>>2]=0,A[t+120>>2]=C,A[t+116>>2]=C,A[t+112>>2]=h,A[t+108>>2]=n,(C=Jg(t+68|0,r))||P0(o,a,I),y0(a,I),M2(a)):C=-22,M2(A[t+40>>2]),M2(A[t+24>>2]),C||(C=p2(o,A[t+8>>2],A[t+12>>2])?-35:0),M2(o),M2(A[t+8>>2])}if(W=t+128|0,g=C,!C)break A;(0|C)==-35&&(A[9404]=28)}g=-1}return g}function w2(C,g){var e,t,r,o,I,a,_,s=0,h=0;t=A[g+32>>2],r=A[g+28>>2],o=A[g+24>>2],I=A[g+20>>2],a=A[g+16>>2],_=A[g+12>>2],s=A[g+4>>2],h=A[g>>2],e=A[g+36>>2],g=A[g+8>>2],h=M0((t+(r+(o+(I+(a+(_+((s+(h+(M0(e,19)+16777216>>>25|0)>>26)>>25)+g>>26)>>25)>>26)>>25)>>26)>>25)>>26)+e>>25,19)+h|0,c[0|C]=h,c[C+2|0]=h>>>16,c[C+1|0]=h>>>8,s=s+(h>>26)|0,c[C+5|0]=s>>>14,c[C+4|0]=s>>>6,c[C+3|0]=h>>>24&3|s<<2,g=g+(s>>25)|0,c[C+8|0]=g>>>13,c[C+7|0]=g>>>5,c[C+6|0]=g<<3|(29360128&s)>>>22,h=(g>>26)+_|0,c[C+11|0]=h>>>11,c[C+10|0]=h>>>3,c[C+9|0]=h<<5|(65011712&g)>>>21,s=(h>>25)+a|0,c[C+15|0]=s>>>18,c[C+14|0]=s>>>10,c[C+13|0]=s>>>2,g=(s>>26)+I|0,c[C+16|0]=g,c[C+12|0]=s<<6|(33030144&h)>>>19,c[C+18|0]=g>>>16,c[C+17|0]=g>>>8,s=(g>>25)+o|0,c[C+21|0]=s>>>15,c[C+20|0]=s>>>7,c[C+19|0]=g>>>24&1|s<<1,g=(s>>26)+r|0,c[C+24|0]=g>>>13,c[C+23|0]=g>>>5,c[C+22|0]=g<<3|(58720256&s)>>>23,s=(g>>25)+t|0,c[C+27|0]=s>>>12,c[C+26|0]=s>>>4,c[C+25|0]=s<<4|(31457280&g)>>>21,g=e+(s>>26)|0,c[C+30|0]=g>>>10,c[C+29|0]=g>>>2,c[C+31|0]=(33292288&g)>>>18,c[C+28|0]=g<<6|(66060288&s)>>>20}function N1(C,g,e){C|=0,g|=0;var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0;if(W=t=W-192|0,(e|=0)>>>0>=129&&(b0(C),x2(C,g,e,0),e1(C,t),e=64,g=t),b0(C),$0(t- -64|0,54,128),e){if(e>>>0>=4)for(h=252&e;c[0|(r=(I=t- -64|0)+o|0)]=i[0|r]^i[g+o|0],c[0|(a=(r=1|o)+I|0)]=i[0|a]^i[g+r|0],c[0|(a=(r=2|o)+I|0)]=i[0|a]^i[g+r|0],c[0|(r=(r=I)+(I=3|o)|0)]=i[0|r]^i[g+I|0],o=o+4|0,(0|h)!=(0|(_=_+4|0)););if(_=3&e)for(;c[0|(I=(t- -64|0)+o|0)]=i[0|I]^i[g+o|0],o=o+1|0,(0|_)!=(0|(s=s+1|0)););}if(x2(C,o=t- -64|0,128,0),b0(I=C+208|0),$0(o,92,128),e){if(s=0,o=0,e>>>0>=4)for(h=252&e,_=0;c[0|(r=(C=t- -64|0)+o|0)]=i[0|r]^i[g+o|0],c[0|(a=(r=1|o)+C|0)]=i[0|a]^i[g+r|0],c[0|(a=(r=2|o)+C|0)]=i[0|a]^i[g+r|0],c[0|(r=(r=C)+(C=3|o)|0)]=i[0|r]^i[C+g|0],o=o+4|0,(0|h)!=(0|(_=_+4|0)););if(C=3&e)for(;c[0|(e=(t- -64|0)+o|0)]=i[0|e]^i[g+o|0],o=o+1|0,(0|C)!=(0|(s=s+1|0)););}return x2(I,C=t- -64|0,128,0),y0(C,128),y0(t,64),W=t+192|0,0}function O1(C,g){var e;return C|=0,g|=0,A[12+(e=W-16|0)>>2]=C,A[e+8>>2]=g,A[e+4>>2]=0,A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]]^i[A[e+8>>2]],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+1|0]^i[A[e+8>>2]+1|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+2|0]^i[A[e+8>>2]+2|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+3|0]^i[A[e+8>>2]+3|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+4|0]^i[A[e+8>>2]+4|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+5|0]^i[A[e+8>>2]+5|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+6|0]^i[A[e+8>>2]+6|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+7|0]^i[A[e+8>>2]+7|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+8|0]^i[A[e+8>>2]+8|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+9|0]^i[A[e+8>>2]+9|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+10|0]^i[A[e+8>>2]+10|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+11|0]^i[A[e+8>>2]+11|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+12|0]^i[A[e+8>>2]+12|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+13|0]^i[A[e+8>>2]+13|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+14|0]^i[A[e+8>>2]+14|0],A[e+4>>2]=A[e+4>>2]|i[A[e+12>>2]+15|0]^i[A[e+8>>2]+15|0],(A[e+4>>2]-1>>>8&1)-1|0}function S(C,g,e,t,r,o,I){var a,_,s,h=0,n=0,B=0,Q=0;W=a=W-352|0,g1(a,o,I,0);A:{if(!(((h=!!(0|r))|!r&t>>>0>C-e>>>0)&C>>>0>e>>>0)&(!r&e-C>>>0>=t>>>0|C>>>0>=e>>>0)){if(A[a+56>>2]=0,A[a+60>>2]=0,A[a+48>>2]=0,A[a+52>>2]=0,A[a+40>>2]=0,A[a+44>>2]=0,A[a+32>>2]=0,A[a+36>>2]=0,n=(I=(h=!!(0|r))|!r&t>>>0>=32)?32:t,B=I?0:r,I=h|!r&t>>>0>32,!(t|r)){Q=1;break A}}else e=jg(C,e,t),A[a+56>>2]=0,A[a+60>>2]=0,A[a+48>>2]=0,A[a+52>>2]=0,A[a+40>>2]=0,A[a+44>>2]=0,A[a+32>>2]=0,A[a+36>>2]=0,n=(I=h|!r&t>>>0>=32)?32:t,B=I?0:r,I=h|!r&t>>>0>32;P0(a- -64|0,e,n),Q=0}return h=B,Ke(_=a+32|0,_,s=n+32|0,h=s>>>0<32?h+1|0:h,h=o+16|0,a),f1(a+96|0,_),Q||P0(C,a- -64|0,n),y0(a+32|0,64),I&&Qg(C+n|0,e+n|0,t-n|0,r-((t>>>0>>0)+B|0)|0,h,1,0,a),y0(a,32),a2(e=a+96|0,C,t,r),D1(e,g),y0(e,256),W=a+352|0,0}function N(C,g,e,t,r,o,I){var a,_,s,h=0,n=0,B=0,Q=0;W=a=W-352|0,S1(a,o,I,0);A:{if(!(((h=!!(0|r))|!r&t>>>0>C-e>>>0)&C>>>0>e>>>0)&(!r&e-C>>>0>=t>>>0|C>>>0>=e>>>0)){if(A[a+56>>2]=0,A[a+60>>2]=0,A[a+48>>2]=0,A[a+52>>2]=0,A[a+40>>2]=0,A[a+44>>2]=0,A[a+32>>2]=0,A[a+36>>2]=0,n=(I=(h=!!(0|r))|!r&t>>>0>=32)?32:t,B=I?0:r,I=h|!r&t>>>0>32,!(t|r)){Q=1;break A}}else e=jg(C,e,t),A[a+56>>2]=0,A[a+60>>2]=0,A[a+48>>2]=0,A[a+52>>2]=0,A[a+40>>2]=0,A[a+44>>2]=0,A[a+32>>2]=0,A[a+36>>2]=0,n=(I=h|!r&t>>>0>=32)?32:t,B=I?0:r,I=h|!r&t>>>0>32;P0(a- -64|0,e,n),Q=0}return h=B,Je(_=a+32|0,_,s=n+32|0,h=s>>>0<32?h+1|0:h,h=o+16|0,a),f1(a+96|0,_),Q||P0(C,a- -64|0,n),y0(a+32|0,64),I&&bC(C+n|0,e+n|0,t-n|0,r-((t>>>0>>0)+B|0)|0,h,1,0,a),y0(a,32),a2(e=a+96|0,C,t,r),D1(e,g),y0(e,256),W=a+352|0,0}function F(C,g,e,t,r){var o;return C|=0,g|=0,e|=0,t|=0,W=o=W-480|0,N1(o,r|=0,32),m1(o,g,e,t),tg(o,o+416|0),g=A[o+444>>2],e=A[o+440>>2],c[C+24|0]=e,c[C+25|0]=e>>>8,c[C+26|0]=e>>>16,c[C+27|0]=e>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[o+436>>2],e=A[o+432>>2],c[C+16|0]=e,c[C+17|0]=e>>>8,c[C+18|0]=e>>>16,c[C+19|0]=e>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[o+428>>2],e=A[o+424>>2],c[C+8|0]=e,c[C+9|0]=e>>>8,c[C+10|0]=e>>>16,c[C+11|0]=e>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[o+420>>2],e=A[o+416>>2],c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,W=o+480|0,0}function k(C,g,e){C|=0,g|=0;var t,r=0;return W=t=W+-64|0,Y0(t,e|=0,32,0),e=A[t+28>>2],r=A[t+24>>2],c[g+24|0]=r,c[g+25|0]=r>>>8,c[g+26|0]=r>>>16,c[g+27|0]=r>>>24,c[g+28|0]=e,c[g+29|0]=e>>>8,c[g+30|0]=e>>>16,c[g+31|0]=e>>>24,e=A[t+20>>2],r=A[t+16>>2],c[g+16|0]=r,c[g+17|0]=r>>>8,c[g+18|0]=r>>>16,c[g+19|0]=r>>>24,c[g+20|0]=e,c[g+21|0]=e>>>8,c[g+22|0]=e>>>16,c[g+23|0]=e>>>24,e=A[t+12>>2],r=A[t+8>>2],c[g+8|0]=r,c[g+9|0]=r>>>8,c[g+10|0]=r>>>16,c[g+11|0]=r>>>24,c[g+12|0]=e,c[g+13|0]=e>>>8,c[g+14|0]=e>>>16,c[g+15|0]=e>>>24,e=A[t+4>>2],r=A[t>>2],c[0|g]=r,c[g+1|0]=r>>>8,c[g+2|0]=r>>>16,c[g+3|0]=r>>>24,c[g+4|0]=e,c[g+5|0]=e>>>8,c[g+6|0]=e>>>16,c[g+7|0]=e>>>24,y0(t,64),C=Pe(C,g),W=t- -64|0,0|C}function m(C,g){var e=0,t=0,r=0,o=0,I=0,a=0;return g>>>0>4294967168?48:(g>>>0>=4294967168?(A[9404]=48,e=0):(e=0,(g=r1(76+(o=g>>>0<11?16:g+11&-8)|0))&&(e=g-8|0,63&g?(r=(-8&(a=A[(I=g-4|0)>>2]))-(t=(g=((g=(g+63&-64)-8|0)-e>>>0<=15?64:0)+g|0)-e|0)|0,3&a?(A[g+4>>2]=r|1&A[g+4>>2]|2,A[4+(r=g+r|0)>>2]=1|A[r+4>>2],A[I>>2]=t|1&A[I>>2]|2,A[4+(r=e+t|0)>>2]=1|A[r+4>>2],ye(e,t)):(e=A[e>>2],A[g+4>>2]=r,A[g>>2]=e+t)):g=e,3&(e=A[g+4>>2])&&((t=-8&e)>>>0<=o+16>>>0||(A[g+4>>2]=o|1&e|2,e=g+o|0,o=t-o|0,A[e+4>>2]=3|o,A[4+(t=g+t|0)>>2]=1|A[t+4>>2],ye(e,o))),e=g+8|0)),e?(A[C>>2]=e,0):48)}function P(C,g,e,t,r,o,I,a,_,s,h){var n;if(n=$0(C,0,g),(0|e)==1|e>>>0>1)return A[9404]=22,-1;if(!(!e&g>>>0<=15)){if(!(!(o|_)&s>>>0<2147483649))return A[9404]=22,-1;if(!(!((!_&a>>>0>=3|!!(0|_))&s>>>0>8191)|(0|t)==(0|n)))return(0|h)==1?(o=s>>>10|0,W=C=W+-64|0,n&&X2(n,g),(e=r1(g))?(A[C+36>>2]=0,A[C+40>>2]=0,A[C+28>>2]=0,A[C+32>>2]=0,A[C+24>>2]=16,A[C+20>>2]=I,A[C+16>>2]=r,A[C+12>>2]=t,A[C+8>>2]=g,A[C+4>>2]=e,A[C+60>>2]=0,A[C+56>>2]=1,A[C+52>>2]=1,A[C+48>>2]=o,A[C+44>>2]=a,(t=Jg(C+4|0,1))|!n||P0(n,e,g),y0(e,g),M2(e)):t=-22,W=C- -64|0,t?-1:0):(A[9404]=28,-1)}return A[9404]=28,-1}function Y(C,g,e,t,r,o,I){var a,_,s=0,h=0,n=0;W=a=W-96|0,S1(a,o,I,0),kt(I=a+32|0,32,0,_=o+16|0,a),o=-1;A:{g:if(!Le(e,g,t,r,I)){if(o=0,!C)break A;C:{if(!(((e=!!(0|r))|!r&t>>>0>g-C>>>0)&C>>>0>>0)&(!r&t>>>0<=C-g>>>0|C>>>0<=g>>>0)){if(!(t|r))break C;e=(o=!r&t>>>0>=32|!!(0|r))?32:t,s=o?0:r}else g=jg(C,g,t),e=(o=e|!r&t>>>0>=32)?32:t,s=o?0:r;if(o=s,n=P0(a- -64|0,g,e),Je(I=a+32|0,I,h=e+32|0,o=h>>>0<32?o+1|0:o,_,a),C=P0(C,n,e),y0(I,64),o=0,!r&t>>>0<33)break g;bC(C+e|0,g+e|0,t-e|0,r-(s+(e>>>0>t>>>0)|0)|0,_,1,0,a);break g}Je(C=a+32|0,C,32,0,_,a),y0(C,64)}y0(a,32)}return W=a+96|0,o}function AA(C,g,e,t,r,o,I,a,_,s,h){var n;if(n=$0(C,0,g),(0|e)==1|e>>>0>1)return A[9404]=22,-1;if(!(!e&g>>>0<=15)){if(!(!(o|_)&s>>>0<2147483649))return A[9404]=22,-1;if(!(!(!!(a|_)&s>>>0>8191)|(0|t)==(0|n)))return(0|h)==2?(o=s>>>10|0,W=C=W+-64|0,n&&X2(n,g),(e=r1(g))?(A[C+36>>2]=0,A[C+40>>2]=0,A[C+28>>2]=0,A[C+32>>2]=0,A[C+24>>2]=16,A[C+20>>2]=I,A[C+16>>2]=r,A[C+12>>2]=t,A[C+8>>2]=g,A[C+4>>2]=e,A[C+60>>2]=0,A[C+56>>2]=1,A[C+52>>2]=1,A[C+48>>2]=o,A[C+44>>2]=a,(t=Jg(C+4|0,2))|!n||P0(n,e,g),y0(e,g),M2(e)):t=-22,W=C- -64|0,t?-1:0):(A[9404]=28,-1)}return A[9404]=28,-1}function QA(C,g,e,t,r,o,I){var a,_,s=0,h=0;W=a=W-96|0,g1(a,o,I,0),kC(I=a+32|0,32,0,_=o+16|0,a),o=-1;A:{g:if(!Le(e,g,t,r,I)){if(o=0,!C)break A;C:{if(!(((e=!!(0|r))|!r&t>>>0>g-C>>>0)&C>>>0>>0)&(!r&t>>>0<=C-g>>>0|C>>>0<=g>>>0)){if(!(t|r))break C;e=(o=!r&t>>>0>=32|!!(0|r))?32:t,I=o?0:r}else g=jg(C,g,t),e=(o=e|!r&t>>>0>=32)?32:t,I=o?0:r;if(s=e,h=P0(a- -64|0,g,e),Ke(e=a+32|0,e,o=s+32|0,o>>>0<32?I+1|0:I,_,a),e=P0(C,h,s),o=0,!r&t>>>0<33)break g;Qg(e+s|0,g+s|0,t-s|0,r-(I+(t>>>0>>0)|0)|0,_,1,0,a);break g}Ke(C=a+32|0,C,32,0,_,a)}y0(a,32)}return W=a+96|0,o}function lA(C,g,e,t,r,o,I,a,_,s){var h,n;return W=h=W-400|0,A[h+4>>2]=0,g1(n=h+16|0,_,s,0),s=i[_+20|0]|i[_+21|0]<<8|i[_+22|0]<<16|i[_+23|0]<<24,A[h+8>>2]=i[_+16|0]|i[_+17|0]<<8|i[_+18|0]<<16|i[_+19|0]<<24,A[h+12>>2]=s,rg(s=h+80|0,64,0,h+4|0,n),f1(_=h+144|0,s),y0(s,64),a2(_,o,I,a),a2(_,35680,0-I&15,0),a2(_,g,e,t),a2(_,35680,0-e&15,0),A[h+72>>2]=I,A[h+76>>2]=a,a2(_,o=h+72|0,8,0),A[h+72>>2]=e,A[h+76>>2]=t,a2(_,o,8,0),D1(_,o=h+48|0),y0(_,256),_=O1(o,r),y0(o,16),C&&(_?($0(C,0,e),_=-1):(Gr(C,g,e,t,h+4|0,h+16|0),_=0)),y0(h+16|0,32),W=h+400|0,_}function NA(C,g,e,t,r,o){var I,a;if(W=I=W-496|0,Y1(a=I+288|0,C,g),M1(a,e,t,0),o)for(C=0,g=0;e=(g=g+1|0)<<24|(65280&g)<<8|g>>>8&65280|g>>>24,c[I+76|0]=e,c[I+77|0]=e>>>8,c[I+78|0]=e>>>16,c[I+79|0]=e>>>24,P0(e=I+80|0,I+288|0,208),M1(e,I+76|0,4,0),Og(e,I+32|0),e=A[I+60>>2],A[I+24>>2]=A[I+56>>2],A[I+28>>2]=e,e=A[I+52>>2],A[I+16>>2]=A[I+48>>2],A[I+20>>2]=e,e=A[I+44>>2],A[I+8>>2]=A[I+40>>2],A[I+12>>2]=e,e=A[I+36>>2],A[I>>2]=A[I+32>>2],A[I+4>>2]=e,P0(e=C+r|0,I,(C=o-C|0)>>>0>=32?32:C),o>>>0>(C=g<<5)>>>0;);y0(I+288|0,208),W=I+496|0}function PA(C,g,e,t,r,o){var I,a,_=0;return W=I=W-32|0,_=-1,(a=e>>>0<32)&!t||(Sr(I,32,0,r,o),Le(g+16|0,g+32|0,e-32|0,t-a|0,I)||(ft(C,g,e,t,r,o),c[C+24|0]=0,c[C+25|0]=0,c[C+26|0]=0,c[C+27|0]=0,c[C+28|0]=0,c[C+29|0]=0,c[C+30|0]=0,c[C+31|0]=0,c[C+16|0]=0,c[C+17|0]=0,c[C+18|0]=0,c[C+19|0]=0,c[C+20|0]=0,c[C+21|0]=0,c[C+22|0]=0,c[C+23|0]=0,c[C+8|0]=0,c[C+9|0]=0,c[C+10|0]=0,c[C+11|0]=0,c[C+12|0]=0,c[C+13|0]=0,c[C+14|0]=0,c[C+15|0]=0,c[0|C]=0,c[C+1|0]=0,c[C+2|0]=0,c[C+3|0]=0,c[C+4|0]=0,c[C+5|0]=0,c[C+6|0]=0,c[C+7|0]=0,_=0)),W=I+32|0,_}function jA(C,g,e,t,r,o,I,a,_,s,h){var n,B,Q;return W=n=W-384|0,A[n+4>>2]=0,g1(B=n+16|0,s,h,0),h=i[s+20|0]|i[s+21|0]<<8|i[s+22|0]<<16|i[s+23|0]<<24,A[n+8>>2]=i[s+16|0]|i[s+17|0]<<8|i[s+18|0]<<16|i[s+19|0]<<24,A[n+12>>2]=h,rg(h=n- -64|0,64,0,Q=n+4|0,B),f1(s=n+128|0,h),y0(h,64),a2(s,I,a,_),a2(s,35680,0-a&15,0),Gr(C,t,r,o,Q,B),a2(s,C,r,o),a2(s,35680,0-r&15,0),A[n+56>>2]=a,A[n+60>>2]=_,a2(s,C=n+56|0,8,0),A[n+56>>2]=r,A[n+60>>2]=o,a2(s,C,8,0),D1(s,g),y0(s,256),e&&(A[e>>2]=16,A[e+4>>2]=0),y0(n+16|0,32),W=n+384|0,0}function C0(C,g,e,t,r){var o,I,a=0;return W=o=W+-64|0,!e&(I=p1(C))>>>0<128?(A[o+60>>2]=0,A[o+52>>2]=0,A[o+56>>2]=0,A[o+44>>2]=0,A[o+48>>2]=0,e=0,I&&(e=I,(1|I)>>>0<65536||(e=I)),!(a=r1(e))|!(3&i[a-4|0])||$0(a,0,e),a?(A[o+36>>2]=0,A[o+40>>2]=0,A[o+12>>2]=a,A[o+20>>2]=a,A[o+24>>2]=I,A[o+4>>2]=a,A[o+16>>2]=I,A[o+28>>2]=0,A[o+32>>2]=0,A[o+8>>2]=I,de(o+4|0,C,r)?(A[9404]=28,C=-1):C=A[o+44>>2]!=(0|g)|A[o+48>>2]!=(t>>>10|0),M2(a)):C=-1):(A[9404]=28,C=-1),W=o- -64|0,C}function n0(C){var g,e=0,t=0;if(!C)return-25;if(!A[C>>2])return-1;if(O2[C+4>>2]<16)return-2;if(!(A[C+8>>2]|!A[C+12>>2]))return-18;if(e=A[C+20>>2],!A[C+16>>2])return e?-19:-6;if(e>>>0<8)return-6;if(!(A[C+24>>2]|!A[C+28>>2]))return-20;if(!(A[C+32>>2]|!A[C+36>>2]))return-21;if(!(e=A[C+48>>2]))return-16;if(e>>>0>16777215)return-17;if(t=-14,!((g=A[C+44>>2])>>>0<8)){if(g>>>0>2097152)return-15;if(!(e<<3>>>0>g>>>0)){if(!A[C+40>>2])return-12;if(!(C=A[C+52>>2]))return-28;t=C>>>0>16777215?-29:0}}return t}function l0(C,g){var e,t=0,r=0;e=g;A:{g:{C:{if(g&=255){if(3&C)for(;;){if(!(t=i[0|C])|(0|g)==(0|t))break A;if(!(3&(C=C+1|0)))break}if((-2139062144&((t=A[C>>2])|16843008-t))!=-2139062144)break C;for(r=M0(g,16843009);;){if((-2139062144&(16843008-(g=t^r)|g))!=-2139062144)break C;if(t=A[C+4>>2],C=g=C+4|0,(-2139062144&(16843008-t|t))!=-2139062144)break}break g}C=p1(C)+C|0;break A}g=C}for(;;){if(!(t=i[0|(C=g)]))break A;if(g=C+1|0,(0|t)==(255&e))break}}return i[0|C]==(255&e)?C:0}function Y0(C,g,e,t){var r,o=0;return W=r=W-208|0,A[r+72>>2]=0,A[r+76>>2]=0,o=A[8591],A[r+8>>2]=A[8590],A[r+12>>2]=o,o=A[8593],A[r+16>>2]=A[8592],A[r+20>>2]=o,o=A[8595],A[r+24>>2]=A[8594],A[r+28>>2]=o,o=A[8597],A[r+32>>2]=A[8596],A[r+36>>2]=o,o=A[8599],A[r+40>>2]=A[8598],A[r+44>>2]=o,o=A[8601],A[r+48>>2]=A[8600],A[r+52>>2]=o,o=A[8603],A[r+56>>2]=A[8602],A[r+60>>2]=o,A[r+64>>2]=0,A[r+68>>2]=0,o=A[8589],A[r>>2]=A[8588],A[r+4>>2]=o,x2(r,g,e,t),e1(r,C),W=r+208|0,0}function b0(C){var g=0;return A[64+(C|=0)>>2]=0,A[C+68>>2]=0,A[C+72>>2]=0,A[C+76>>2]=0,g=A[8589],A[C>>2]=A[8588],A[C+4>>2]=g,g=A[8591],A[C+8>>2]=A[8590],A[C+12>>2]=g,g=A[8593],A[C+16>>2]=A[8592],A[C+20>>2]=g,g=A[8595],A[C+24>>2]=A[8594],A[C+28>>2]=g,g=A[8597],A[C+32>>2]=A[8596],A[C+36>>2]=g,g=A[8599],A[C+40>>2]=A[8598],A[C+44>>2]=g,g=A[8601],A[C+48>>2]=A[8600],A[C+52>>2]=g,g=A[8603],A[C+56>>2]=A[8602],A[C+60>>2]=g,0}function O0(C){return~((127&~i[C+31|0]|i[C+1|0]&i[C+2|0]&i[C+3|0]&i[C+4|0]&i[C+5|0]&i[C+6|0]&i[C+7|0]&i[C+8|0]&i[C+9|0]&i[C+10|0]&i[C+11|0]&i[C+12|0]&i[C+13|0]&i[C+14|0]&i[C+15|0]&i[C+16|0]&i[C+17|0]&i[C+18|0]&i[C+19|0]&i[C+20|0]&i[C+21|0]&i[C+22|0]&i[C+23|0]&i[C+24|0]&i[C+25|0]&i[C+26|0]&i[C+27|0]&i[C+28|0]&i[C+30|0]&i[C+29|0]^255)-1&236-i[0|C])>>>8&1}function X0(C,g){var e,t=0,r=0,o=0,I=0;if(c[15+(e=W-16|0)|0]=0,g){if(g>>>0>=4)for(I=-4&g;t=C+r|0,c[e+15|0]=i[0|t]|i[e+15|0],c[e+15|0]=i[t+1|0]|i[e+15|0],c[e+15|0]=i[t+2|0]|i[e+15|0],c[e+15|0]=i[t+3|0]|i[e+15|0],r=r+4|0,(0|I)!=(0|(o=o+4|0)););if(t=3&g)for(g=0;c[e+15|0]=i[C+r|0]|i[e+15|0],r=r+1|0,(0|t)!=(0|(g=g+1|0)););}return i[e+15|0]-1>>>8&1}function p2(C,g,e){var t,r=0,o=0;if(A[12+(t=W-16|0)>>2]=C,A[t+8>>2]=g,C=0,c[t+7|0]=0,e){if(g=1&e,(0|e)!=1)for(o=-2&e,e=0;c[t+7|0]=i[t+7|0]|i[A[t+12>>2]+C|0]^i[A[t+8>>2]+C|0],r=1|C,c[t+7|0]=i[t+7|0]|i[r+A[t+12>>2]|0]^i[A[t+8>>2]+r|0],C=C+2|0,(0|o)!=(0|(e=e+2|0)););g&&(c[t+7|0]=i[t+7|0]|i[A[t+12>>2]+C|0]^i[A[t+8>>2]+C|0])}return(i[t+7|0]-1>>>8&1)-1|0}function a1(C){for(var g=0,e=0,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0;r=(e=i[C+t|0])^i[0|(g=t+2688|0)]|r,o=e^i[g+192|0]|o,I=e^i[g+160|0]|I,a=e^i[g+128|0]|a,_=e^i[g+96|0]|_,s=e^i[g- -64|0]|s,h=e^i[g+32|0]|h,(0|(t=t+1|0))!=31;);return((255&((g=127^(C=127&i[C+31|0]))|o))-1|(255&(g|I))-1|(255&(g|a))-1|(255&(122^C|_))-1|(255&(5^C|s))-1|(255&(C|h))-1|(255&(C|r))-1)>>>8&1}function G(C,g,e){var t=0,r=0,o=0,I=0;return r=31&(o=I=63&e),o=o>>>0>=32?-1>>>r|0:(t=-1>>>r|0)|(1<>>0>=32?(t=o<>>32-r|t<>>0>=32?(t=-1<>>32-t,C&=e,g&=t,t=31&r,r>>>0>=32?(e=0,C=g>>>t|0):(e=g>>>t|0,C=((1<>>t),y=e|o,C|I}function Tt(C,g,e,t,r,o){C|=0,g|=0,e|=0;var I=0,a=0;A:g:{C:{if(!(!(r|=0)&(t|=0)>>>0<64||(a=1+(r=r-1|0)|0,I=r,!(t=(r=t+-64|0)>>>0<4294967232?a:I)&r>>>0>4294967231|t))){if(!oC(I=e,e=e- -64|0,r,t,o|=0,0))break C;C&&$0(C,0,r)}if(t=-1,!g)break g;A[g>>2]=0,A[g+4>>2]=0,t=-1;break A}g&&(A[g>>2]=r,A[g+4>>2]=t),t=0,C&&jg(C,e,r)}return 0|t}function jt(C,g,e,t,r,o,I,a,_,s){var h,n,B;return W=h=W-352|0,rg(B=h+32|0,64,0,_,s),f1(n=h+96|0,B),y0(B,64),a2(n,o,I,a),a2(n,35648,0-I&15,0),a2(n,g,e,t),a2(n,35648,0-e&15,0),A[h+24>>2]=I,A[h+28>>2]=a,a2(n,o=h+24|0,8,0),A[h+24>>2]=e,A[h+28>>2]=t,a2(n,o,8,0),D1(n,h),y0(n,256),o=O1(h,r),y0(h,16),C&&(o?($0(C,0,e),o=-1):(hg(C,g,e,t,_,1,s),o=0)),W=h+352|0,o}function Ot(C,g,e,t,r,o){var I,a;return C|=0,g|=0,e|=0,t|=0,o|=0,W=I=W-32|0,a=i[0|(r|=0)]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,r=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[I+24>>2]=0,A[I+28>>2]=0,A[I+16>>2]=a,A[I+20>>2]=r,A[I+8>>2]=0,A[I+12>>2]=0,A[I>>2]=e,A[I+4>>2]=t,g-65>>>0<=4294967246?(A[9404]=28,C=-1):C=se(C,g,0,0,0,o,32,I,I+16|0),W=I+32|0,0|C}function Xt(C,g,e,t,r){var o,I;return C|=0,g|=0,e|=0,t|=0,W=o=W-512|0,N1(I=o+32|0,r|=0,32),m1(I,g,e,t),tg(I,o+448|0),g=A[o+476>>2],A[o+24>>2]=A[o+472>>2],A[o+28>>2]=g,g=A[o+468>>2],A[o+16>>2]=A[o+464>>2],A[o+20>>2]=g,g=A[o+460>>2],A[o+8>>2]=A[o+456>>2],A[o+12>>2]=g,g=A[o+452>>2],A[o>>2]=A[o+448>>2],A[o+4>>2]=g,g=Xg(C,o),e=p2(o,C,32),W=o+512|0,((0|C)==(0|o)?-1:g)|e}function Vt(C,g,e,t,r,o,I,a,_,s){var h,n,B;return W=h=W-352|0,kC(B=h+32|0,64,0,_,s),f1(n=h+96|0,B),y0(B,64),a2(n,o,I,a),A[h+24>>2]=I,A[h+28>>2]=a,a2(n,o=h+24|0,8,0),a2(n,g,e,t),A[h+24>>2]=e,A[h+28>>2]=t,a2(n,o,8,0),D1(n,h),y0(n,256),o=O1(h,r),y0(h,16),C&&(o?($0(C,0,e),o=-1):(Qg(C,g,e,t,_,1,0,s),o=0)),W=h+352|0,o}function Wt(C,g,e,t,r,o,I,a,_,s,h){var n,B,Q;return W=n=W-336|0,rg(Q=n+16|0,64,0,s,h),f1(B=n+80|0,Q),y0(Q,64),a2(B,I,a,_),a2(B,35648,0-a&15,0),hg(C,t,r,o,s,1,h),a2(B,C,r,o),a2(B,35648,0-r&15,0),A[n+8>>2]=a,A[n+12>>2]=_,a2(B,C=n+8|0,8,0),A[n+8>>2]=r,A[n+12>>2]=o,a2(B,C,8,0),D1(B,g),y0(B,256),e&&(A[e>>2]=16,A[e+4>>2]=0),W=n+336|0,0}function Et(C,g){var e,t=0,r=0,o=0,I=0,a=0;A:if(!(((e=i[0|C])-58&255)>>>0<246)){for(t=e,r=C;;){if(I=r,o>>>0>429496729||(t=(255&t)-48|0)>>>0>~(o=M0(o,10))>>>0)break A;if(o=o+t|0,!(((t=i[0|(r=r+1|0)])-58&255)>>>0>245))break}(0|e)==48&(0|C)!=(0|I)|(0|C)==(0|r)||(A[g>>2]=o,a=r)}return a}function yg(C){var g=0,e=0,t=0,r=0;g=65,e=1024;A:{g:{if((0|(t=255&C))!=i[1024])for(t=M0(t,16843009);;){if((-2139062144&((r=t^A[e>>2])|16843008-r))!=-2139062144)break g;if(e=e+4|0,!((g=g-4|0)>>>0>3))break}if(!g)break A}for(C&=255;;){if((0|C)==i[0|e])return e;if(e=e+1|0,!(g=g-1|0))break}}return 0}function Zt(C,g,e,t,r,o,I,a,_,s,h){var n,B,Q;return W=n=W-336|0,kC(Q=n+16|0,64,0,s,h),f1(B=n+80|0,Q),y0(Q,64),a2(B,I,a,_),A[n+8>>2]=a,A[n+12>>2]=_,a2(B,I=n+8|0,8,0),Qg(C,t,r,o,s,1,0,h),a2(B,C,r,o),A[n+8>>2]=r,A[n+12>>2]=o,a2(B,I,8,0),D1(B,g),y0(B,256),e&&(A[e>>2]=16,A[e+4>>2]=0),W=n+336|0,0}function $t(C,g,e,t,r,o){return!t&e>>>0>=32|t?(ft(C,g,e,t,r,o),qr(C+16|0,C+32|0,e-32|0,t-(e>>>0<32)|0,C),c[C+8|0]=0,c[C+9|0]=0,c[C+10|0]=0,c[C+11|0]=0,c[C+12|0]=0,c[C+13|0]=0,c[C+14|0]=0,c[C+15|0]=0,c[0|C]=0,c[C+1|0]=0,c[C+2|0]=0,c[C+3|0]=0,c[C+4|0]=0,c[C+5|0]=0,c[C+6|0]=0,c[C+7|0]=0,C=0):C=-1,C}function p1(C){var g=0,e=0,t=0;A:{g:if(3&(g=C)){if(!i[0|g])return 0;for(;;){if(!(3&(g=g+1|0)))break g;if(!i[0|g])break}break A}for(;e=g,g=g+4|0,(-2139062144&((t=A[e>>2])|16843008-t))==-2139062144;);for(;e=(g=e)+1|0,i[0|g];);}return g-C|0}function Ar(C,g,e,t,r,o){g|=0,r|=0,o|=0;var I,a=0;return W=I=W-16|0,aC(C|=0,I+8|0,jg(C- -64|0,e|=0,t|=0),t,r,o,0),A[I+12>>2]|A[I+8>>2]!=64?(g&&(A[g>>2]=0,A[g+4>>2]=0),$0(C,0,t- -64|0),a=-1):g&&(A[g>>2]=t- -64,A[g+4>>2]=r-((t>>>0<4294967232)-1|0)),W=I+16|0,0|a}function me(C,g){var e,t=0,r=0,o=0,I=0;return(e=yg(i[0|g]))&&(t=yg(i[g+1|0]))&&(r=yg(i[g+2|0]))&&(o=yg(i[g+3|0]))&&(I=yg(i[g+4|0]))?(A[C>>2]=e-1024|t-1024<<6|r-1024<<12|o-1024<<18|I-1024<<24,g+5|0):(A[C>>2]=0,0)}function gr(C,g,e){var t;for(A[12+(t=W-16|0)>>2]=C,A[t+8>>2]=g,C=0,A[t+4>>2]=0;A[t+4>>2]=A[t+4>>2]|i[A[t+12>>2]+C|0]^i[A[t+8>>2]+C|0],g=1|C,A[t+4>>2]=A[t+4>>2]|i[g+A[t+12>>2]|0]^i[g+A[t+8>>2]|0],(0|e)!=(0|(C=C+2|0)););return(A[t+4>>2]-1>>>8&1)-1|0}function Cr(C,g,e,t,r,o,I,a,_,s,h){var n=0,B=0,Q=0;return B=-1,(n=t>>>0<32)&!r||!(n=r-n|0)&(Q=t-32|0)>>>0>4294967263|n|!a&I>>>0>4294967263|a||(B=0|G2[A[h>>2]](C,e,Q,(e+t|0)-32|0,32,o,I,_,s)),g&&(A[g>>2]=B?0:t-32|0,A[g+4>>2]=B?0:r-(t>>>0<32)|0),B}function er(C,g){var e,t=0,r=0,o=0;W=e=W-896|0,z1(t=e+848|0,g),z1(r=e+800|0,g+32|0),ce(o=e+320|0,t),ce(g=e+160|0,r),D2(t=e+640|0,g),b2(g=e+480|0,o,t),kA(e,g,t=e+600|0),kA(e+40|0,r=e+520|0,o=e+560|0),kA(e+80|0,o,t),kA(e+120|0,g,r),Ig(C,e),W=e+896|0}function tr(C){var g=0,e=0,t=0,r=0,o=0;for(g=1;e=(t=g)+i[0|(g=C+r|0)]|0,c[0|g]=e,e=i[g+1|0]+(e>>>8|0)|0,c[g+1|0]=e,e=i[g+2|0]+(e>>>8|0)|0,c[g+2|0]=e,t=g,g=i[g+3|0]+(e>>>8|0)|0,c[t+3|0]=g,g=g>>>8|0,r=r+4|0,(0|(o=o+4|0))!=4;);}function rr(C,g,e,t,r,o,I){var a;return W=a=W-16|0,C=$0(C,0,128),!(t|o)&I>>>0<2147483649?(!o&r>>>0>=3|!!(0|o))&I>>>0>8191?(X2(a,16),C=Be(r,I>>>10|0,g,e,a,C,1)?-1:0):(A[9404]=28,C=-1):(A[9404]=22,C=-1),W=a+16|0,C}function ar(C,g){var e=0;4&g&&((g=A[C>>2])&&y0(A[g+4>>2],A[C+16>>2]<<10),(g=A[C+4>>2])&&y0(g,A[C+20>>2]<<3)),M2(A[C+4>>2]),A[C+4>>2]=0,(g=A[C>>2])&&(e=A[g>>2])&&M2(e),M2(g),A[C>>2]=0}function ir(C,g,e,t,r,o,I,a,_,s,h){return!r&t>>>0>4294967263|!!(0|r)|!a&I>>>0>=4294967264|!!(0|a)?(h2(),Q0()):(C=0|G2[A[h>>2]](C,C+t|0,32,e,t,o,I,_,s),g&&(t=(e=t+32|0)>>>0<32?r+1|0:r,A[g>>2]=C?0:e,A[g+4>>2]=C?0:t)),C}function or(C){var g=0,e=0,t=0,r=0,o=0,I=0,a=0,_=0;for(g=32,e=1;_|=(r=i[(t=g-2|0)+C|0])-(o=i[t+2912|0])>>8&(g=((I=i[2912+(g=g-1|0)|0])^(a=i[C+g|0]))-1>>8&e)|a-I>>8&e,e=g&(r^o)-1>>8,g=t;);return!!(255&_)}function _r(C,g,e,t,r,o,I){var a;return W=a=W-16|0,C=$0(C,0,128),!(t|o)&I>>>0<2147483649?!!(r|o)&I>>>0>8191?(X2(a,16),C=Be(r,I>>>10|0,g,e,a,C,2)?-1:0):(A[9404]=28,C=-1):(A[9404]=22,C=-1),W=a+16|0,C}function Me(C){var g=0;return A[32+(C|=0)>>2]=0,A[C+36>>2]=0,g=A[8809],A[C>>2]=A[8808],A[C+4>>2]=g,g=A[8811],A[C+8>>2]=A[8810],A[C+12>>2]=g,g=A[8813],A[C+16>>2]=A[8812],A[C+20>>2]=g,g=A[8815],A[C+24>>2]=A[8814],A[C+28>>2]=g,0}function cr(C,g,e,t,r,o,I){var a,_,s=0,h=0;return W=a=W+-64|0,s=-1,(_=e>>>0<16)&!t||E1(h=a+32|0,I,o)||g1(a,35584,h,0)||(s=QA(C,g+16|0,g,e-16|0,t-_|0,r,a),y0(a,32)),W=a- -64|0,s}function w(C,g,e,t){var r,o,I,a,_=0,s=0;return a=M0(_=e>>>16|0,s=C>>>16|0),_=(65535&(s=((I=M0(r=65535&e,o=65535&C))>>>16|0)+M0(s,r)|0))+M0(_,o)|0,y=(M0(g,e)+a|0)+M0(C,t)+(s>>>16)+(_>>>16)|0,65535&I|_<<16}function zg(C,g,e){var t=0,r=0;if(!e)return 0;if(t=i[0|C])A:{for(;;){if((0|(r=i[0|g]))!=(0|t)|!r||!(e=e-1|0))break A;if(g=g+1|0,t=i[C+1|0],C=C+1|0,!t)break}t=0}else t=0;return t-i[0|g]|0}function hg(C,g,e,t,r,o,I){var a=0,_=0;if(a=t,!((((a=(_=e+63|0)>>>0<63?a+1|0:a)>>>6|0)+!!(0|(a=(63&a)<<26|_>>>6))|0)==1&o>>>0>(_=0-a|0)>>>0|(0|t)==1|t>>>0>1))return 0|G2[A[9199]](C,g,e,t,r,o,I);h2(),Q0()}function Ir(C,g,e,t,r,o,I){var a;return C|=0,g|=0,e|=0,t|=0,r|=0,W=a=W+-64|0,E1(a+32|0,I|=0,o|=0)?o=-1:(o=-1,S1(a,35664,a+32|0,0)||(o=$t(C,g,e,t,r,a),y0(a,32))),W=a- -64|0,0|o}function sr(C,g,e,t,r,o,I){var a;return C|=0,g|=0,e|=0,t|=0,r|=0,W=a=W+-64|0,E1(a+32|0,I|=0,o|=0)?o=-1:(o=-1,S1(a,35664,a+32|0,0)||(o=PA(C,g,e,t,r,a),y0(a,32))),W=a- -64|0,0|o}function Br(C,g,e,t,r,o,I){var a;if(W=a=W+-64|0,!t&e>>>0<4294967280)return E1(a+32|0,I,o)?I=-1:(I=-1,g1(a,35584,a+32|0,0)||(I=S(C+16|0,C,g,e,t,r,a),y0(a,32))),W=a- -64|0,I;h2(),Q0()}function yr(C,g){for(var e=0,t=0,r=0,o=0,I=0;t=C+r|0,e=i[g+r|0]+(i[0|t]+e|0)|0,c[0|t]=e,o=(t=1|r)+C|0,e=i[g+t|0]+(i[0|o]+(e>>>8|0)|0)|0,c[0|o]=e,e=e>>>8|0,r=r+2|0,(0|(I=I+2|0))!=32;);}function pt(C,g){for(var e=0,t=0,r=0,o=0,I=0;e=(i[0|(t=C+r|0)]-i[g+r|0]|0)+e|0,c[0|t]=e,e=(i[0|(o=(t=1|r)+C|0)]-i[g+t|0]|0)+(e>>8)|0,c[0|o]=e,e>>=8,r=r+2|0,(0|(I=I+2|0))!=64;);}function X2(C,g){C|=0;var e,t=0,r=0,o=0;if(W=e=W-16|0,g|=0)for(;c[e+15|0]=0,r=C+t|0,o=0|_g(36800,e+15|0,0),c[0|r]=o,(0|(t=t+1|0))!=(0|g););W=e+16|0}function hr(C,g,e,t,r,o,I){var a,_,s=0;return W=a=W-32|0,s=-1,(_=e>>>0<16)&!t||vC(a,o,I)||(s=Y(C,g+16|0,g,e-16|0,t-_|0,r,a),y0(a,32)),W=a+32|0,s}function Tg(C){var g,e;A:{if(!((C=(g=A[8924])+(e=C+7&-8)|0)>>>0<=g>>>0&&e)&&(C>>>0<=Ba()<<16>>>0||0|nt(0|C)))break A;return A[9404]=48,-1}return A[8924]=C,g}function eg(C,g){var e,t,r;W=e=W-176|0,j1(t=e+96|0,g+80|0),kA(r=e+48|0,g,t),kA(e,g+40|0,t),w2(C,e),w2(e+144|0,r),c[C+31|0]=i[C+31|0]^i[e+144|0]<<7,W=e+176|0}function Qr(C,g,e,t,r,o,I,a,_,s){var h,n,B=0,Q=0,p=0;return W=h=W-16|0,B=-1,wt(n=h+4|0)||(Q=-1,p=he(n,C,g,e,t,r,o,I,a,_,s),B=Ye(n)?Q:p),W=h+16|0,B}function nr(C,g,e,t,r,o,I,a,_,s,h,n){return e&&(A[e>>2]=32,A[e+4>>2]=0),!_&a>>>0<4294967264&!o&r>>>0<=4294967263||(h2(),Q0()),0|G2[A[n>>2]](C,g,32,t,r,I,a,s,h)}function jg(C,g,e){var t=0;if(C>>>0>>0)return P0(C,g,e);if(e)for(t=C+e|0,g=g+e|0;g=g-1|0,c[0|(t=t-1|0)]=i[0|g],e=e-1|0;);return C}function Er(C,g,e,t,r,o,I){var a,_=0;if(W=a=W-32|0,!t&e>>>0<4294967280)return _=-1,vC(a,o,I)||(_=N(C+16|0,C,g,e,t,r,a),y0(a,32)),W=a+32|0,_;h2(),Q0()}function pr(C,g,e,t,r,o){return g|=0,0|(!(t|=0)&(e|=0)>>>0>=16|t?Y(C|=0,g+16|0,g,e-16|0,t-(e>>>0<16)|0,r|=0,o|=0):-1)}function fr(C,g,e,t,r,o){return g|=0,0|(!(t|=0)&(e|=0)>>>0>=16|t?QA(C|=0,g+16|0,g,e-16|0,t-(e>>>0<16)|0,r|=0,o|=0):-1)}function Dr(C,g,e,t,r,o,I,a,_,s,h){return!t&e>>>0>4294967263|t|!a&I>>>0>4294967263|a?-1:0|G2[A[h>>2]](C,g,e,r,32,o,I,_,s)}function wr(C,g,e){C|=0;var t,r=0;return W=t=W-32|0,r=-1,E1(t,e|=0,g|=0)||(r=S1(C,35664,t,0)),W=t+32|0,0|r}function tg(C,g){var e;return g|=0,W=e=W+-64|0,e1(C|=0,e),x2(C=C+208|0,e,64,0),e1(C,g),y0(e,64),W=e- -64|0,0}function lr(C,g,e,t){var r;return g|=0,e|=0,t|=0,W=r=W+-64|0,e1(C|=0,r),C=aC(g,e,r,64,0,t,1),W=r- -64|0,0|C}function Ge(C,g){var e,t,r;kA(C,g,e=g+120|0),kA(C+40|0,t=g+40|0,r=g+80|0),kA(C+80|0,r,e),kA(C+120|0,g,t)}function kr(C,g,e,t,r,o,I){return 0|_r(C|=0,g|=0,(C=0)|(e|=0),t|=0,C|(r|=0),o|=0,I|=0)}function Og(C,g){var e;return g|=0,W=e=W-32|0,v1(C|=0,e),y1(C=C+104|0,e,32,0),v1(C,g),y0(e,32),W=e+32|0,0}function P0(C,g,e){var t=0;if(e)for(t=C;c[0|t]=i[0|g],t=t+1|0,g=g+1|0,e=e-1|0;);return C}function ft(C,g,e,t,r,o){var I;return W=I=W-32|0,S1(I,r,o,0),C=bC(C,g,e,t,r+16|0,0,0,I),y0(I,32),W=I+32|0,C}function ur(C){for(C|=0;X2(C,32),c[C+31|0]=31&i[C+31|0],!or(C)||X0(C,32););}function dr(C,g,e){var t;return g|=0,e|=0,W=t=W+-64|0,e1(C|=0,t),C=oC(g,t,64,0,e,1),W=t- -64|0,0|C}function Sr(C,g,e,t,r){var o;return W=o=W-32|0,S1(o,t,r,0),C=kt(C,g,e,t+16|0,o),y0(o,32),W=o+32|0,C}function $0(C,g,e){var t=0;if(e)for(t=C;c[0|t]=g,t=t+1|0,e=e-1|0;);return C}function lC(C,g,e){return C|=0,g|=0,(e|=0)>>>0>=256&&(xg(1366,1279,107,1123),Q0()),0|_C(C,g,255&e)}function br(C,g,e,t,r,o,I){return 0|N(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)}function vr(C,g,e,t,r,o,I){return 0|Y(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)}function Fr(C,g,e,t,r,o,I){return 0|S(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)}function Qg(C,g,e,t,r,o,I,a){return(0|t)==1|t>>>0>1&&(h2(),Q0()),0|G2[A[9198]](C,g,e,t,r,o,I,a)}function Nr(C,g,e,t,r,o,I){return 0|QA(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)}function Ke(C,g,e,t,r,o){return(0|t)==1|t>>>0>1&&(h2(),Q0()),0|G2[A[9198]](C,g,e,t,r,0,0,o)}function xe(C,g,e,t,r,o){return(0|t)==1|t>>>0>1&&(h2(),Q0()),0|G2[A[9199]](C,g,e,t,r,0,o)}function mr(C,g,e,t,r,o){return aC(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,0),0}function Ye(C){var g;return(g=A[C>>2])&&M2(g),A[C+8>>2]=0,A[C>>2]=0,A[C+4>>2]=0,0}function pA(C,g){var e=0;return(-1>>>(e=31&g)&C)<>>C}function Ue(C,g,e,t,r,o){return 0|$t(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)}function He(C,g,e,t,r,o){return 0|PA(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)}function Mr(C,g,e,t,r,o){return 0|ft(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)}function rg(C,g,e,t,r){return(0|e)==1|e>>>0>1&&(h2(),Q0()),0|G2[A[9197]](C,g,e,t,r)}function kC(C,g,e,t,r){return(0|e)==1|e>>>0>1&&(h2(),Q0()),0|G2[A[9196]](C,g,e,t,r)}function Gr(C,g,e,t,r,o){(0|t)==1|t>>>0>1&&(h2(),Q0()),G2[A[9199]](C,g,e,t,r,1,o)}function Kr(C,g,e,t,r){return 0|oC(C|=0,g|=0,e|=0,t|=0,r|=0,0)}function xr(C,g,e,t,r){return 0|qr(C|=0,g|=0,e|=0,t|=0,r|=0)}function Yr(C,g,e,t,r){return 0|Le(C|=0,g|=0,e|=0,t|=0,r|=0)}function Ur(C,g,e,t,r){return 0|Sr(C|=0,g|=0,e|=0,t|=0,r|=0)}function Hr(){var C;W=C=W-16|0,c[C+15|0]=0,_g(36836,C+15|0,0),W=C+16|0}function uC(C,g,e,t){return IC(C|=0,g|=0,e|=0,t|=0,20),0}function dC(C,g,e,t){return IC(C|=0,g|=0,e|=0,t|=0,12),0}function SC(C,g,e,t){return IC(C|=0,g|=0,e|=0,t|=0,8),0}function Jr(C,g,e,t){return 0|Y0(C|=0,g|=0,e|=0,t|=0)}function Rr(C,g,e,t){return 0|a2(C|=0,g|=0,e|=0,t|=0)}function Dt(C,g,e,t){return 0|x2(C|=0,g|=0,e|=0,t|=0)}function ng(C,g,e,t){return 0|sg(C|=0,g|=0,e|=0,t|=0)}function bC(C,g,e,t,r,o,I,a){return 0|G2[A[8933]](C,g,e,t,r,o,I,a)}function Lr(C,g,e,t){return 0|m1(C|=0,g|=0,e|=0,t|=0)}function Je(C,g,e,t,r,o){return 0|G2[A[8933]](C,g,e,t,r,0,0,o)}function wt(C){return A[C+8>>2]=0,A[C>>2]=0,A[C+4>>2]=0,0}function vC(C,g,e){return 0|wr(C|=0,g|=0,e|=0)}function lt(C,g,e){return 0|E1(C|=0,g|=0,e|=0)}function h2(){var C;(C=A[9538])&&G2[0|C](),sa(),Q0()}function Eg(C,g,e){return 0|lC(C|=0,g|=0,e|=0)}function Pr(C,g,e){return 0|N1(C|=0,g|=0,e|=0)}function Re(C,g){return C|=0,X2(g|=0,32),0|Pe(C,g)}function qr(C,g,e,t,r){return 0|G2[A[8925]](C,g,e,t,r)}function kt(C,g,e,t,r){return 0|G2[A[8932]](C,g,e,t,r)}function Le(C,g,e,t,r){return 0|G2[A[8926]](C,g,e,t,r)}function Pe(C,g){return C|=0,g|=0,0|G2[A[8931]](C,g)}function f1(C,g){return C|=0,g|=0,0|G2[A[8927]](C,g)}function D1(C,g){return C|=0,g|=0,0|G2[A[8929]](C,g)}function ut(C,g,e,t,r,o,I){return EC(C,g,e,t,r,o,I)}function qe(C){return C?31-A1(C-1^C)|0:32}function a2(C,g,e,t){return 0|G2[A[8928]](C,g,e,t)}function Xg(C,g){return 0|gr(C|=0,g|=0,32)}function zr(C,g){return 0|gr(C|=0,g|=0,64)}function Tr(C,g,e){ZA(C|=0,g|=0,e|=0)}function dt(C,g){return 0|Pe(C|=0,g|=0)}function jr(C,g){return 0|Re(C|=0,g|=0)}function Or(C,g,e,t){return Ne(C,g,e,t,1)}function Xr(C,g,e,t){return C0(C,g,e,t,1)}function Vr(C,g,e,t){return C0(C,g,e,t,2)}function Wr(C,g,e,t){return Ne(C,g,e,t,2)}function m1(C,g,e,t){return x2(C,g,e,t),0}function M1(C,g,e,t){return y1(C,g,e,t),0}function t1(C,g,e,t){return q2(C,g,e,t)}function Zr(C){return b0(C|=0),0}function St(){return-2147483648}function bt(){return 1073741824}function $r(){return 268435456}function Aa(){return 33554432}function N2(C){X2(C|=0,32)}function ga(){return 67108864}function Ca(C){X2(C|=0,16)}function ea(){return 16777216}function y0(C,g){$0(C,0,g)}function ta(){return 1564}function ra(){return 1338}function vt(){return 8192}function aa(){return 384}function ia(){return 256}function Ft(){return 416}function Nt(){return 128}function FC(){return 208}function J2(){return 64}function o2(){return 16}function G0(){return 32}function oa(){return-65}function _a(){return-33}function ca(){return 48}function X1(){return-17}function Ia(){return 12}function G1(){return 24}function z2(){return-1}function pg(){return 2}function ze(){return 3}function U1(){return 8}function NC(){return 1}function mt(){return 4}function _1(){return 0}function sa(){Qt(),Q0()}WA(BA=i,1024,"Li8wMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5egBqcwByYW5kb21ieXRlcwBiNjRfcG9zIDw9IGI2NF9sZW4AY3J5cHRvX2dlbmVyaWNoYXNoX2JsYWtlMmJfZmluYWwAYXJnb24yaWQsYXJnb24yaQAkYXJnb24yaQAkYXJnb24yaWQAcmFuZG9tYnl0ZXMvcmFuZG9tYnl0ZXMuYwBzb2RpdW0vY29kZWNzLmMAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2JsYWtlMmItcmVmLmMAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2dlbmVyaWNoYXNoX2JsYWtlMmIuYwB4MjU1MTlibGFrZTJiAGJ1Zl9sZW4gPD0gU0laRV9NQVgAb3V0bGVuIDw9IFVJTlQ4X01BWABTLT5idWZsZW4gPD0gQkxBS0UyQl9CTE9DS0JZVEVTACRhcmdvbjJpJHY9ACRhcmdvbjJpZCR2PQBjdXJ2ZTI1NTE5AGVkMjU1MTkAaG1hY3NoYTUxMjI1NgBjdXJ2ZTI1NTE5eHNhbHNhMjBwb2x5MTMwNQBzb2RpdW1fYmluMmJhc2U2NABzaXBoYXNoMjQAc2hhNTEyAHhzYWxzYTIwADEuMC4yMAAkYXJnb24yaSQAJGFyZ29uMmlkJAAkNyQAAAAAAAC2eFn/hXLTAL1uFf8PCmoAKcABAJjoef+8PKD/mXHO/wC34v60DUj/AAAAAAAAAACwoA7+08mG/54YjwB/aTUAYAy9AKfX+/+fTID+amXh/x78BACSDK4="),WA(BA,1680,"WfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQ"),WA(BA,1728,"hTuMAb3xJP/4JcMBYNw3ALdMPv/DQj0AMkykAeGkTP9MPaP/dT4fAFGRQP92QQ4AonPW/waKLgB85vT/CoqPADQawgC49EwAgY8pAb70E/97qnr/YoFEAHnVkwBWZR7/oWebAIxZQ//v5b4BQwu1AMbwif7uRbz/Q5fuABMqbP/lVXEBMkSH/xFqCQAyZwH/UAGoASOYHv8QqLkBOFno/2XS/AAp+kcAzKpP/w4u7/9QTe8AvdZL/xGN+QAmUEz/vlV1AFbkqgCc2NABw8+k/5ZCTP+v4RD/jVBiAUzb8gDGonIALtqYAJsr8f6boGj/M7ulAAIRrwBCVKAB9zoeACNBNf5F7L8ALYb1AaN73QAgbhT/NBelALrWRwDpsGAA8u82ATlZigBTAFT/iKBkAFyOeP5ofL4AtbE+//opVQCYgioBYPz2AJeXP/7vhT4AIDicAC2nvf+OhbMBg1bTALuzlv76qg7/0qNOACU0lwBjTRoA7pzV/9XA0QFJLlQAFEEpATbOTwDJg5L+qm8Y/7EhMv6rJsv/Tvd0ANHdmQCFgLIBOiwZAMknOwG9E/wAMeXSAXW7dQC1s7gBAHLbADBekwD1KTgAfQ3M/vStdwAs3SD+VOoUAPmgxgHsfur/L2Oo/qrimf9ms9gA4o16/3pCmf629YYA4+QZAdY56//YrTj/tefSAHeAnf+BX4j/bn4zAAKpt/8HgmL+RbBe/3QE4wHZ8pH/yq0fAWkBJ/8ur0UA5C86/9fgRf7POEX/EP6L/xfP1P/KFH7/X9Vg/wmwIQDIBc//8SqA/iMhwP/45cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/"),WA(BA,2720,"AQ=="),WA(BA,2752,"JuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQ="),WA(BA,2943,"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"),WA(BA,33964,"AQAAAHbBXwBlcAL/UPyh/vJqxv+FBrIA5N9wAN/uVf4z8xoAPiuL/stBCg=="),WA(BA,34016,"M03tAJGqVv82JjP/8YBl/yl5Sv/sTpsAqZdp/pwpSADCZq//zqJl/wAAAAAAAAAAGy57ARKo/f/Tr5f+w9tgADh2vv7+0fX/mWR+/uiBFf81uPL/x6Td"),WA(BA,34144,"AQ=="),WA(BA,34176,"4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f0xpYnNvZGl1bURSRwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4KZykpFPwv0kaFCrcnJskmXDghGy7tKsRa/G0sTd+zlZ0TDThT3mOvi1RzCmWosnc8uwpqduau7UcuycKBOzWCFIUscpJkA/FMoei/ogEwQrxLZhqokZf40HCLS8IwvlQGo1FsxxhS79YZ6JLREKllVSQGmdYqIHFXhTUO9LjRuzJwoGoQyNDSuBbBpBlTq0FRCGw3Hpnrjt9Md0gnqEib4bW8sDRjWsnFswwcOcuKQeNKqthOc+Njd0/KnFujuLLW828uaPyy713ugo90YC8XQ29jpXhyq/ChFHjIhOw5ZBoIAseMKB5jI/r/vpDpvYLe62xQpBV5xrL3o/m+K1Ny4/J4ccacYSbqzj4nygfCwCHHuIbRHuvgzdZ92up40W7uf0999bpvF3KqZ/AGppjIosV9YwquDfm+BJg/ERtHHBM1C3EbhH0EI/V32yiTJMdAe6vKMry+yRUKvp48TA0QnMRnHUO2Qj7LvtTFTCp+ZfycKX9Z7PrWOqtvy18XWEdKjBlEbIA="),WA(BA,35184,"7dP1XBpjEljWnPei3vneFA=="),WA(BA,35215,"EA=="),WA(BA,35232,"Z+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FuYL4pCkUQ3cc/7wLWl27XpW8JWOfER8Vmkgj+S1V4cq5iqB9gBW4MSvoUxJMN9DFV0Xb5y/rHegKcG3Jt08ZvBwWmb5IZHvu/GncEPzKEMJG8s6S2qhHRK3KmwXNqI+XZSUT6YbcYxqMgnA7DHf1m/8wvgxkeRp9VRY8oGZykpFIUKtyc4IRsu/G0sTRMNOFNUcwpluwpqdi7JwoGFLHKSoei/oktmGqhwi0vCo1FsxxnoktEkBpnWhTUO9HCgahAWwaQZCGw3Hkx3SCe1vLA0swwcOUqq2E5Pypxb828uaO6Cj3RvY6V4FHjIhAgCx4z6/76Q62xQpPej+b7yeHHGgA=="),WA(BA,35600,"U2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMB"),WA(BA,35696,"EJUBAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQ=="),WA(BA,35744,"xmNjpfh8fITud3eZ9nt7jf/y8g3Wa2u93m9vsZHFxVRgMDBQAgEBA85nZ6lWKyt95/7+GbXX12JNq6vm7HZ2mo/KykUfgoKdicnJQPp9fYfv+voVsllZ645HR8n78PALQa2t7LPU1GdfoqL9Ra+v6iOcnL9TpKT35HJylpvAwFt1t7fC4f39HD2Tk65MJiZqbDY2Wn4/P0H19/cCg8zMT2g0NFxRpaX00eXlNPnx8QjicXGTq9jYc2IxMVMqFRU/CAQEDJXHx1JGIyNlncPDXjAYGCg3lpahCgUFDy+amrUOBwcJJBISNhuAgJvf4uI9zevrJk4nJ2l/srLN6nV1nxIJCRsdg4OeWCwsdDQaGi42Gxst3G5usrRaWu5boKD7pFJS9nY7O0231tZhfbOzzlIpKXvd4+M+Xi8vcROEhJemU1P1udHRaAAAAADB7e0sQCAgYOP8/B95sbHItltb7dRqar6Ny8tGZ76+2XI5OUuUSkremExM1LBYWOiFz89Ku9DQa8Xv7ypPqqrl7fv7FoZDQ8WaTU3XZjMzVRGFhZSKRUXP6fn5EAQCAgb+f3+BoFBQ8Hg8PEQln5+6S6io46JRUfNdo6P+gEBAwAWPj4o/kpKtIZ2dvHA4OEjx9fUEY7y833e2tsGv2tp1QiEhYyAQEDDl//8a/fPzDr/S0m2Bzc1MGAwMFCYTEzXD7Owvvl9f4TWXl6KIRETMLhcXOZPExFdVp6fy/H5+gno9PUfIZGSsul1d5zIZGSvmc3OVwGBgoBmBgZieT0/Ro9zcf0QiImZUKip+O5CQqwuIiIOMRkbKx+7uKWu4uNMoFBQ8p97eebxeXuIWCwsdrdvbdtvg4DtkMjJWdDo6ThQKCh6SSUnbDAYGCkgkJGy4XFzkn8LCXb3T025DrKzvxGJipjmRkagxlZWk0+TkN/J5eYvV5+cyi8jIQ243N1nabW23AY2NjLHV1WScTk7SSamp4NhsbLSsVlb68/T0B8/q6iXKZWWv9Hp6jkeurukQCAgYb7q61fB4eIhKJSVvXC4ucjgcHCRXpqbxc7S0x5fGxlHL6Ogjod3dfOh0dJw+Hx8hlktL3WG9vdwNi4uGD4qKheBwcJB8Pj5CcbW1xMxmZqqQSEjYBgMDBff29gEcDg4SwmFho2o1NV+uV1f5abm50BeGhpGZwcFYOh0dJyeenrnZ4eE46/j4EyuYmLMiEREz0mlpu6nZ2XAHjo6JM5SUpy2bm7Y8Hh4iFYeHksnp6SCHzs5JqlVV/1AoKHil3996A4yMj1mhofgJiYmAGg0NF2W/v9rX5uYxhEJCxtBoaLiCQUHDKZmZsFotLXceDw8Re7Cwy6hUVPxtu7vWLBYWOgoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAAR");var mC,G2=(mC=[null,function(C,g,e,t,r){var o,I,a;return C|=0,g|=0,e|=0,t|=0,r|=0,W=o=(I=W)-128&-64,A[o>>2]=67108863&(i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),A[o+4>>2]=(i[r+3|0]|i[r+4|0]<<8|i[r+5|0]<<16|i[r+6|0]<<24)>>>2&67108611,A[o+8>>2]=(i[r+6|0]|i[r+7|0]<<8|i[r+8|0]<<16|i[r+9|0]<<24)>>>4&67092735,A[o+12>>2]=(i[r+9|0]|i[r+10|0]<<8|i[r+11|0]<<16|i[r+12|0]<<24)>>>6&66076671,a=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+20>>2]=0,A[o+24>>2]=0,A[o+28>>2]=0,A[o+32>>2]=0,A[o+36>>2]=0,A[o+16>>2]=a>>>8&1048575,A[o+40>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+44>>2]=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+48>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,r=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,c[o+80|0]=0,A[o+56>>2]=0,A[o+60>>2]=0,A[o+52>>2]=r,pC(o,g,e,t),wC(o,C),W=I,0},function(C,g,e,t,r){var o,I,a;return C|=0,g|=0,e|=0,t|=0,r|=0,W=o=(I=W)-192&-64,A[o+64>>2]=67108863&(i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),A[o+68>>2]=(i[r+3|0]|i[r+4|0]<<8|i[r+5|0]<<16|i[r+6|0]<<24)>>>2&67108611,A[o+72>>2]=(i[r+6|0]|i[r+7|0]<<8|i[r+8|0]<<16|i[r+9|0]<<24)>>>4&67092735,A[o+76>>2]=(i[r+9|0]|i[r+10|0]<<8|i[r+11|0]<<16|i[r+12|0]<<24)>>>6&66076671,a=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+84>>2]=0,A[o+88>>2]=0,A[o+92>>2]=0,A[o+96>>2]=0,A[o+100>>2]=0,A[o+80>>2]=a>>>8&1048575,A[o+104>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+108>>2]=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+112>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,r=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,c[o+144|0]=0,A[o+120>>2]=0,A[o+124>>2]=0,A[o+116>>2]=r,pC(r=o- -64|0,g,e,t),wC(r,g=o+48|0),C=O1(C,g),W=I,0|C},function(C,g){var e;return g|=0,A[(C|=0)>>2]=67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),A[C+4>>2]=(i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108611,A[C+8>>2]=(i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67092735,A[C+12>>2]=(i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6&66076671,e=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,A[C+20>>2]=0,A[C+24>>2]=0,A[C+28>>2]=0,A[C+32>>2]=0,A[C+36>>2]=0,A[C+16>>2]=e>>>8&1048575,A[C+40>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,A[C+44>>2]=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,A[C+48>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,c[C+80|0]=0,A[C+56>>2]=0,A[C+60>>2]=0,A[C+52>>2]=g,0},function(C,g,e,t){return pC(C|=0,g|=0,e|=0,t|=0),0},function(C,g){return wC(C|=0,g|=0),0},function(C,g,e){C|=0,g|=0,e|=0;var t,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0,O=0,rA=0,cA=0,XA=0,A0=0,s0=0,p0=0,f0=0,E0=0,w0=0,u0=0,k0=0,F0=0,N0=0;for(W=t=W-368|0;p=(I=i[e+r|0])^i[0|(_=r+34112|0)]|p,Q=I^i[_+192|0]|Q,B=I^i[_+160|0]|B,n=I^i[_+128|0]|n,a=I^i[_+96|0]|a,s=I^i[_- -64|0]|s,o=I^i[_+32|0]|o,(0|(r=r+1|0))!=31;);if(r=-1,!(256&((255&((I=127^(_=127&i[e+31|0]))|Q))-1|(255&(I|B))-1|(255&(I|n))-1|(255&(87^_|a))-1|(255&(s|_))-1|(255&(o|_))-1|(255&(_|p))-1))){for(r=g,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,A[t+360>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,A[t+364>>2]=g,g=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[t+352>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[t+356>>2]=g,o=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,g=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[t+336>>2]=g,A[t+340>>2]=o,o=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[t+344>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[t+348>>2]=o,c[t+336|0]=248&g,c[t+367|0]=63&i[t+367|0]|64,z1(t+288|0,e),A[t+260>>2]=0,A[t+264>>2]=0,A[t+268>>2]=0,A[t+272>>2]=0,A[t+276>>2]=0,A[t+208>>2]=0,A[t+212>>2]=0,A[t+216>>2]=0,A[t+220>>2]=0,A[t+224>>2]=0,A[t+228>>2]=0,g=A[t+308>>2],A[t+160>>2]=A[t+304>>2],A[t+164>>2]=g,g=A[t+316>>2],A[t+168>>2]=A[t+312>>2],A[t+172>>2]=g,g=A[t+324>>2],A[t+176>>2]=A[t+320>>2],A[t+180>>2]=g,A[t+244>>2]=0,A[t+248>>2]=0,A[t+240>>2]=1,A[t+252>>2]=0,A[t+256>>2]=0,A[t+192>>2]=0,A[t+196>>2]=0,A[t+200>>2]=0,A[t+204>>2]=0,g=A[t+292>>2],A[t+144>>2]=A[t+288>>2],A[t+148>>2]=g,g=A[t+300>>2],A[t+152>>2]=A[t+296>>2],A[t+156>>2]=g,A[t+116>>2]=0,A[t+120>>2]=0,A[t+124>>2]=0,A[t+128>>2]=0,A[t+132>>2]=0,A[t+100>>2]=0,A[t+104>>2]=0,A[t+96>>2]=1,A[t+108>>2]=0,A[t+112>>2]=0,e=254;i0=A[t+276>>2],I=A[t+180>>2],u=A[t+96>>2],d=A[t+192>>2],H=A[t+144>>2],FA=A[t+240>>2],VA=A[t+100>>2],c0=A[t+196>>2],_0=A[t+148>>2],I0=A[t+244>>2],J=A[t+104>>2],h0=A[t+200>>2],z=A[t+152>>2],D0=A[t+248>>2],nA=A[t+108>>2],MA=A[t+204>>2],fA=A[t+156>>2],O=A[t+252>>2],_A=A[t+112>>2],rA=A[t+208>>2],$=A[t+160>>2],cA=A[t+256>>2],p=A[t+116>>2],XA=A[t+212>>2],h=A[t+164>>2],A0=A[t+260>>2],Q=A[t+120>>2],s0=A[t+216>>2],B=A[t+168>>2],p0=A[t+264>>2],n=A[t+124>>2],f0=A[t+220>>2],a=A[t+172>>2],E0=A[t+268>>2],s=A[t+128>>2],w0=A[t+224>>2],o=A[t+176>>2],V=A[t+272>>2],u0=e,K=(M=(g=0-((g=g0)^(g0=i[(k0=t+336|0)+(e>>>3|0)|0]>>>(7&e)&1))|0)&((r=A[t+132>>2])^(EA=A[t+228>>2])))^r,A[t+132>>2]=K,YA=I^(x=g&(I^i0)),A[t+84>>2]=YA-K,sA=s^(v=g&(s^w0)),A[t+128>>2]=sA,qA=(q=g&(o^V))^o,A[t+80>>2]=qA-sA,vA=n^(D=g&(n^f0)),A[t+124>>2]=vA,F0=a^(b=g&(a^E0)),A[t+76>>2]=F0-vA,wA=Q^(l=g&(Q^s0)),A[t+120>>2]=wA,N0=B^(_=g&(B^p0)),A[t+72>>2]=N0-wA,iA=p^(I=g&(p^XA)),A[t+116>>2]=iA,hA=h^(p=g&(h^A0)),A[t+68>>2]=hA-iA,mA=_A^(Q=g&(_A^rA)),A[t+112>>2]=mA,uA=$^(B=g&($^cA)),A[t+64>>2]=uA-mA,HA=nA^(n=g&(nA^MA)),A[t+108>>2]=HA,$A=fA^(a=g&(fA^O)),A[t+60>>2]=$A-HA,aA=J^(s=g&(J^h0)),A[t+104>>2]=aA,nA=z^(o=g&(z^D0)),A[t+56>>2]=nA-aA,J=VA^(r=g&(VA^c0)),A[t+100>>2]=J,fA=_0^(e=g&(_0^I0)),A[t+52>>2]=fA-J,z=u^(_A=g&(u^d)),A[t+96>>2]=z,$=(g&=H^FA)^H,A[t+48>>2]=$-z,h=x^i0,M^=EA,A[t+36>>2]=h-M,x=q^V,v^=w0,A[t+32>>2]=x-v,q=b^E0,D^=f0,A[t+28>>2]=q-D,b=_^p0,l^=s0,A[t+24>>2]=b-l,_=p^A0,I^=XA,A[t+20>>2]=_-I,p=B^cA,Q^=rA,A[t+16>>2]=p-Q,B=a^O,n^=MA,A[t+12>>2]=B-n,a=o^D0,s^=h0,A[t+8>>2]=a-s,o=e^I0,r^=c0,A[t+4>>2]=o-r,e=g^FA,g=_A^d,A[t>>2]=e-g,A[t+276>>2]=h+M,A[t+272>>2]=x+v,A[t+268>>2]=D+q,A[t+264>>2]=l+b,A[t+260>>2]=I+_,A[t+256>>2]=Q+p,A[t+248>>2]=a+s,A[t+244>>2]=r+o,A[t+240>>2]=g+e,A[t+252>>2]=n+B,A[t+228>>2]=K+YA,A[t+224>>2]=sA+qA,A[t+220>>2]=vA+F0,A[t+216>>2]=wA+N0,A[t+212>>2]=iA+hA,A[t+208>>2]=uA+mA,A[t+204>>2]=HA+$A,A[t+200>>2]=nA+aA,A[t+196>>2]=J+fA,A[t+192>>2]=$+z,kA(YA=t+96|0,sA=t+48|0,K=t+240|0),kA(V=t+192|0,V,t),gA(sA,t),gA(t,K),h=A[t+192>>2],M=A[t+96>>2],x=A[t+196>>2],v=A[t+100>>2],q=A[t+200>>2],D=A[t+104>>2],b=A[t+204>>2],l=A[t+108>>2],_=A[t+208>>2],I=A[t+112>>2],p=A[t+212>>2],Q=A[t+116>>2],B=A[t+216>>2],n=A[t+120>>2],a=A[t+220>>2],s=A[t+124>>2],o=A[t+224>>2],r=A[t+128>>2],e=A[t+228>>2],g=A[t+132>>2],A[t+180>>2]=e+g,A[t+176>>2]=r+o,A[t+172>>2]=a+s,A[t+168>>2]=n+B,A[t+164>>2]=Q+p,A[t+160>>2]=I+_,A[t+156>>2]=l+b,A[t+152>>2]=D+q,A[t+148>>2]=x+v,A[t+144>>2]=h+M,A[t+228>>2]=g-e,A[t+224>>2]=r-o,A[t+220>>2]=s-a,A[t+216>>2]=n-B,A[t+212>>2]=Q-p,A[t+208>>2]=I-_,A[t+204>>2]=l-b,A[t+200>>2]=D-q,A[t+196>>2]=v-x,A[t+192>>2]=M-h,kA(K,t,sA),vA=A[t+52>>2],l=A[t+4>>2],wA=A[t+56>>2],_=A[t+8>>2],iA=A[t+64>>2],B=A[t+16>>2],mA=A[t+60>>2],n=A[t+12>>2],HA=A[t+72>>2],a=A[t+24>>2],aA=A[t+68>>2],s=A[t+20>>2],J=A[t+80>>2],o=A[t+32>>2],z=A[t+76>>2],r=A[t+28>>2],EA=A[t+84>>2],g=A[t+36>>2],qA=A[t+48>>2],e=A[t>>2]-qA|0,A[t>>2]=e,g=g-EA|0,A[t+36>>2]=g,_A=r-z|0,A[t+28>>2]=_A,$=o-J|0,A[t+32>>2]=$,I=s-aA|0,A[t+20>>2]=I,p=a-HA|0,A[t+24>>2]=p,Q=n-mA|0,A[t+12>>2]=Q,B=B-iA|0,A[t+16>>2]=B,n=_-wA|0,A[t+8>>2]=n,o=l-vA|0,A[t+4>>2]=o,gA(V,V),g=w(g,g>>31,121666,0),r=y,$A=g,g=w((33554431&(r=(h=g+16777216|0)>>>0<16777216?r+1|0:r))<<7|h>>>25,r>>25,19,0),s=y,r=g,g=w(e,e>>31,121666,0),uA=y+s|0,g=g>>>0>(r=r+g|0)>>>0?uA+1|0:uA,e=(a=r+33554432|0)>>>0<33554432?g+1|0:g,M=r-(-67108864&a)|0,A[t+96>>2]=M,s=w(o,o>>31,121666,0),r=y,r=(o=s+16777216|0)>>>0<16777216?r+1|0:r,x=(s-(-33554432&o)|0)+((67108863&e)<<6|a>>>26)|0,A[t+100>>2]=x,uA=(g=r)>>25,r=(33554431&g)<<7|o>>>25,e=w(n,n>>31,121666,0)+r|0,g=uA+y|0,g=e>>>0>>0?g+1|0:g,s=(v=e+33554432|0)>>>0<33554432?g+1|0:g,q=e-(-67108864&v)|0,A[t+104>>2]=q,r=w(B,B>>31,121666,0),o=y,e=w(Q,Q>>31,121666,0),g=y,hA=r,nA=e,r=(33554431&(g=(D=e+16777216|0)>>>0<16777216?g+1|0:g))<<7|D>>>25,g=(g>>25)+o|0,g=(e=hA+r|0)>>>0>>0?g+1|0:g,o=(b=e+33554432|0)>>>0<33554432?g+1|0:g,l=e-(-67108864&b)|0,A[t+112>>2]=l,r=w(p,p>>31,121666,0),a=y,e=w(I,I>>31,121666,0),g=y,hA=r,fA=e,r=(33554431&(g=(_=e+16777216|0)>>>0<16777216?g+1|0:g))<<7|_>>>25,g=(g>>25)+a|0,g=(e=hA+r|0)>>>0>>0?g+1|0:g,r=(I=e+33554432|0)>>>0<33554432?g+1|0:g,p=e-(-67108864&I)|0,A[t+120>>2]=p,a=w($,$>>31,121666,0),n=y,e=w(_A,_A>>31,121666,0),g=y,$=e,e=(33554431&(g=(Q=e+16777216|0)>>>0<16777216?g+1|0:g))<<7|Q>>>25,g=(g>>25)+n|0,g=e>>>0>(a=e+a|0)>>>0?g+1|0:g,e=(B=a+33554432|0)>>>0<33554432?g+1|0:g,n=a-(-67108864&B)|0,A[t+128>>2]=n,a=(s=nA+((67108863&s)<<6|v>>>26)|0)-(-33554432&D)|0,A[t+108>>2]=a,s=(o=fA+((67108863&o)<<6|b>>>26)|0)-(-33554432&_)|0,A[t+116>>2]=s,o=(g=$+((67108863&r)<<6|I>>>26)|0)-(-33554432&Q)|0,A[t+124>>2]=o,e=(e=$A+((67108863&e)<<6|B>>>26)|0)-(-33554432&h)|0,A[t+132>>2]=e,gA(g=t+144|0,g),A[t+84>>2]=e+EA,A[t+80>>2]=n+J,A[t+76>>2]=o+z,A[t+72>>2]=p+HA,A[t+68>>2]=s+aA,A[t+64>>2]=l+iA,A[t+60>>2]=a+mA,A[t+56>>2]=q+wA,A[t+52>>2]=x+vA,A[t+48>>2]=M+qA,e=u0-1|0,kA(YA,t+288|0,V),kA(V,t,sA),u0;);p=A[t+144>>2],M=A[t+240>>2],Q=A[t+148>>2],x=A[t+244>>2],B=A[t+152>>2],v=A[t+248>>2],n=A[t+156>>2],q=A[t+252>>2],a=A[t+160>>2],D=A[t+256>>2],s=A[t+164>>2],b=A[t+260>>2],o=A[t+168>>2],l=A[t+264>>2],r=A[t+172>>2],_=A[t+268>>2],e=A[t+176>>2],I=A[t+272>>2],h=0-g0|0,g=A[t+276>>2],A[t+276>>2]=h&(g^A[t+180>>2])^g,A[t+272>>2]=I^h&(e^I),A[t+268>>2]=_^h&(r^_),A[t+264>>2]=l^h&(o^l),A[t+260>>2]=b^h&(s^b),A[t+256>>2]=D^h&(a^D),A[t+252>>2]=q^h&(n^q),A[t+248>>2]=v^h&(B^v),A[t+244>>2]=x^h&(Q^x),A[t+240>>2]=M^h&(p^M),M=A[t+192>>2],p=A[t+96>>2],x=A[t+196>>2],Q=A[t+100>>2],v=A[t+200>>2],B=A[t+104>>2],q=A[t+204>>2],n=A[t+108>>2],D=A[t+208>>2],a=A[t+112>>2],b=A[t+212>>2],s=A[t+116>>2],l=A[t+216>>2],o=A[t+120>>2],_=A[t+220>>2],r=A[t+124>>2],I=A[t+224>>2],e=A[t+128>>2],g=A[t+228>>2],A[t+228>>2]=h&(g^A[t+132>>2])^g,A[t+224>>2]=I^h&(e^I),A[t+220>>2]=_^h&(r^_),A[t+216>>2]=l^h&(o^l),A[t+212>>2]=b^h&(s^b),A[t+208>>2]=D^h&(a^D),A[t+204>>2]=q^h&(n^q),A[t+200>>2]=v^h&(B^v),A[t+196>>2]=x^h&(Q^x),A[t+192>>2]=M^h&(p^M),j1(V,V),kA(K,K,V),w2(C,K),y0(k0,32),r=0}return W=t+368|0,0|r},function(C,g){var e,t,r,o,I,a,_,s,h,n,B,Q,p,l,v,D,b,M,x,q;return g|=0,W=e=W-304|0,c[0|(C|=0)]=i[0|g],c[C+1|0]=i[g+1|0],c[C+2|0]=i[g+2|0],c[C+3|0]=i[g+3|0],c[C+4|0]=i[g+4|0],c[C+5|0]=i[g+5|0],c[C+6|0]=i[g+6|0],c[C+7|0]=i[g+7|0],c[C+8|0]=i[g+8|0],c[C+9|0]=i[g+9|0],c[C+10|0]=i[g+10|0],c[C+11|0]=i[g+11|0],c[C+12|0]=i[g+12|0],c[C+13|0]=i[g+13|0],c[C+14|0]=i[g+14|0],c[C+15|0]=i[g+15|0],c[C+16|0]=i[g+16|0],c[C+17|0]=i[g+17|0],c[C+18|0]=i[g+18|0],c[C+19|0]=i[g+19|0],c[C+20|0]=i[g+20|0],c[C+21|0]=i[g+21|0],c[C+22|0]=i[g+22|0],c[C+23|0]=i[g+23|0],c[C+24|0]=i[g+24|0],c[C+25|0]=i[g+25|0],c[C+26|0]=i[g+26|0],c[C+27|0]=i[g+27|0],c[C+28|0]=i[g+28|0],c[C+29|0]=i[g+29|0],c[C+30|0]=i[g+30|0],g=i[g+31|0],c[0|C]=248&i[0|C],c[C+31|0]=63&g|64,Cg(e+48|0,C),g=A[e+128>>2],t=A[e+88>>2],r=A[e+132>>2],o=A[e+92>>2],I=A[e+136>>2],a=A[e+96>>2],_=A[e+140>>2],s=A[e+100>>2],h=A[e+144>>2],n=A[e+104>>2],B=A[e+148>>2],Q=A[e+108>>2],p=A[e+152>>2],l=A[e+112>>2],v=A[e+156>>2],D=A[e+116>>2],b=A[e+160>>2],M=A[e+120>>2],x=A[e+124>>2],q=A[e+164>>2],A[e+292>>2]=x+q,A[e+288>>2]=b+M,A[e+284>>2]=v+D,A[e+280>>2]=p+l,A[e+276>>2]=B+Q,A[e+272>>2]=h+n,A[e+268>>2]=_+s,A[e+264>>2]=I+a,A[e+260>>2]=r+o,A[e+256>>2]=g+t,A[e+244>>2]=q-x,A[e+240>>2]=b-M,A[e+236>>2]=v-D,A[e+232>>2]=p-l,A[e+228>>2]=B-Q,A[e+224>>2]=h-n,A[e+220>>2]=_-s,A[e+216>>2]=I-a,A[e+212>>2]=r-o,A[e+208>>2]=g-t,j1(g=e+208|0,g),kA(e,e+256|0,g),w2(C,e),W=e+304|0,0},function(C,g,e,t,r){C|=0,t|=0,r|=0;var o,I=0,a=0,_=0,s=0;if(W=o=W-112|0,(g|=0)|(e|=0)){I=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,A[o+24>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,A[o+28>>2]=I,I=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+16>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+20>>2]=I,I=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[o>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[o+4>>2]=I,I=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+8>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[o+12>>2]=I,r=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,t=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,A[o+104>>2]=0,A[o+108>>2]=0,A[o+96>>2]=r,A[o+100>>2]=t;A:{if(!e&g>>>0>=64|e){for(;uC(C,o+96|0,o,0),t=i[o+104|0]+1|0,c[o+104|0]=t,t=i[o+105|0]+(t>>>8|0)|0,c[o+105|0]=t,t=i[o+106|0]+(t>>>8|0)|0,c[o+106|0]=t,t=i[o+107|0]+(t>>>8|0)|0,c[o+107|0]=t,t=i[o+108|0]+(t>>>8|0)|0,c[o+108|0]=t,t=i[o+109|0]+(t>>>8|0)|0,c[o+109|0]=t,t=i[o+110|0]+(t>>>8|0)|0,c[o+110|0]=t,c[o+111|0]=i[o+111|0]+(t>>>8|0),C=C- -64|0,e=e-1|0,!(e=(g=g+-64|0)>>>0<4294967232?e+1|0:e)&g>>>0>63|e;);if(!(g|e))break A}if(t=0,uC(o+32|0,o+96|0,o,0),I=3&g,r=0,!e&g>>>0>=4|e)for(e=60&g,g=0;a=_=o+32|0,c[C+r|0]=i[a+r|0],c[(s=1|r)+C|0]=i[a+s|0],c[(a=2|r)+C|0]=i[a+_|0],c[(a=3|r)+C|0]=i[a+(o+32|0)|0],r=r+4|0,(0|e)!=(0|(g=g+4|0)););if(I)for(;c[C+r|0]=i[(o+32|0)+r|0],r=r+1|0,(0|I)!=(0|(t=t+1|0)););}y0(o+32|0,64),y0(o,32)}return W=o+112|0,0},function(C,g,e,t,r,o,I,a){C|=0,g|=0,r|=0,o|=0,I|=0,a|=0;var _,s=0;if(W=_=W-112|0,(e|=0)|(t|=0)){s=i[a+28|0]|i[a+29|0]<<8|i[a+30|0]<<16|i[a+31|0]<<24,A[_+24>>2]=i[a+24|0]|i[a+25|0]<<8|i[a+26|0]<<16|i[a+27|0]<<24,A[_+28>>2]=s,s=i[a+20|0]|i[a+21|0]<<8|i[a+22|0]<<16|i[a+23|0]<<24,A[_+16>>2]=i[a+16|0]|i[a+17|0]<<8|i[a+18|0]<<16|i[a+19|0]<<24,A[_+20>>2]=s,s=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,A[_>>2]=i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,A[_+4>>2]=s,s=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,A[_+8>>2]=i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,A[_+12>>2]=s,a=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[_+96>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[_+100>>2]=a,c[_+104|0]=o,c[_+111|0]=I>>>24,c[_+110|0]=I>>>16,c[_+109|0]=I>>>8,c[_+108|0]=I,c[_+107|0]=(16777215&I)<<8|o>>>24,c[_+106|0]=(65535&I)<<16|o>>>16,c[_+105|0]=(255&I)<<24|o>>>8;A:{if(!t&e>>>0>=64|t){for(;;){for(a=0,uC(_+32|0,_+96|0,_,0);o=_+32|0,c[C+a|0]=i[o+a|0]^i[g+a|0],c[(r=1|a)+C|0]=i[r+o|0]^i[g+r|0],(0|(a=a+2|0))!=64;);if(r=i[_+104|0]+1|0,c[_+104|0]=r,r=i[_+105|0]+(r>>>8|0)|0,c[_+105|0]=r,r=i[_+106|0]+(r>>>8|0)|0,c[_+106|0]=r,r=i[_+107|0]+(r>>>8|0)|0,c[_+107|0]=r,r=i[_+108|0]+(r>>>8|0)|0,c[_+108|0]=r,r=i[_+109|0]+(r>>>8|0)|0,c[_+109|0]=r,r=i[_+110|0]+(r>>>8|0)|0,c[_+110|0]=r,c[_+111|0]=i[_+111|0]+(r>>>8|0),g=g- -64|0,C=C- -64|0,t=t-1|0,!(!(t=(e=e+-64|0)>>>0<4294967232?t+1|0:t)&e>>>0>63|t))break}if(!(e|t))break A}if(a=0,uC(_+32|0,_+96|0,_,0),o=1&e,(0|e)!=1|t)for(t=62&e,r=0;I=_+32|0,c[C+a|0]=i[I+a|0]^i[g+a|0],c[(e=1|a)+C|0]=i[e+I|0]^i[g+e|0],a=a+2|0,(0|t)!=(0|(r=r+2|0)););o&&(c[C+a|0]=i[(_+32|0)+a|0]^i[g+a|0])}y0(_+32|0,64),y0(_,32)}return W=_+112|0,0},function(C,g,e,t,r,o,I,a,_){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0;var s,h,n=0;if(h=n=W,W=s=n-192&-32,re(_|=0,a|=0,s- -64|0),_=0,I>>>0<=63)a=0;else for(n=64;VC(o+_|0,s- -64|0),_=a=n,(n=a- -64|0)>>>0<=I>>>0;);if((n=32|a)>>>0>I>>>0)_=a;else for(;Lg(o+a|0,s- -64|0),_=n,(n=(a=n)+32|0)>>>0<=I>>>0;);if((a=31&I)&&($0((n=s+32|0)|a,0,32-a|0),P0(n,o+_|0,a),Lg(n,s- -64|0)),_=32,a=0,r>>>0<32)o=0;else for(;$C(C+a|0,t+a|0,s- -64|0),o=_,(_=(a=_)+32|0)>>>0<=r>>>0;);return(a=31&r)&&($0((_=s+32|0)|a,0,32-a|0),P0(_,t+o|0,a),$C(s,_,s- -64|0),P0(C+o|0,s,a)),WC(g,e,I,r,s- -64|0),W=h,0},function(C,g,e,t,r,o,I,a,_){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0;var s,h,n=0;if(h=n=W,W=s=n-224&-32,re(_|=0,a|=0,s+96|0),_=0,I>>>0<=63)a=0;else for(n=64;VC(o+_|0,s+96|0),_=a=n,(n=a- -64|0)>>>0<=I>>>0;);if((n=32|a)>>>0>I>>>0)_=a;else for(;Lg(o+a|0,s+96|0),_=n,(n=(a=n)+32|0)>>>0<=I>>>0;);(a=31&I)&&($0((n=s- -64|0)|a,0,32-a|0),P0(n,o+_|0,a),Lg(n,s+96|0));A:{g:{C:{e:{t:{if(C){if(_=32,e>>>0<32)break t;for(o=0;ZC(C+o|0,g+o|0,s+96|0),o=a=_,(_=a+32|0)>>>0<=e>>>0;);}else{if(o=32,e>>>0<32)break C;for(_=0;ZC(s+32|0,g+_|0,s+96|0),_=a=o,(o=a+32|0)>>>0<=e>>>0;);}if(!(o=31&e))break A;if(C)break e;break g}if(a=0,o=e,!e)break A}Ce(C+a|0,g+a|0,o,s+96|0);break A}if(a=0,o=e,!e)break A}Ce(s+32|0,g+a|0,o,s+96|0)}WC(s,r,I,e,s+96|0),a=-1;A:{g:{if(g=r-16|0){if((0|g)==16)break g;break A}a=O1(s,t);break A}a=Xg(s,t)}return!C|!a||$0(C,0,e),W=h,0|a},function(C,g,e,t,r,o,I,a,_){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0;var s,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0;if(W=s=W-528|0,OC(_|=0,a|=0,s+400|0),_=0,I>>>0<=31)a=0;else for(n=32;te(o+_|0,s+400|0),_=a=n,(n=a+32|0)>>>0<=I>>>0;);if((_=16|a)>>>0<=I>>>0)for(n=s+416|0,Q=s+432|0,p=s+448|0,B=s+464|0,l=s+480|0;v=i[0|(a=o+a|0)]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,D=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,b=i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,M=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,a=A[l+12>>2],A[s+520>>2]=A[l+8>>2],A[s+524>>2]=a,a=A[l+4>>2],A[s+512>>2]=A[l>>2],A[s+516>>2]=a,a=A[B+12>>2],A[s+376>>2]=A[B+8>>2],A[s+380>>2]=a,a=A[B+4>>2],A[s+368>>2]=A[B>>2],A[s+372>>2]=a,a=A[l+12>>2],A[s+360>>2]=A[l+8>>2],A[s+364>>2]=a,a=A[l+4>>2],A[s+352>>2]=A[l>>2],A[s+356>>2]=a,a0(a=s+496|0,s+368|0,s+352|0),h=A[s+508>>2],A[l+8>>2]=A[s+504>>2],A[l+12>>2]=h,h=A[s+500>>2],A[l>>2]=A[s+496>>2],A[l+4>>2]=h,h=A[p+12>>2],A[s+344>>2]=A[p+8>>2],A[s+348>>2]=h,h=A[p+4>>2],A[s+336>>2]=A[p>>2],A[s+340>>2]=h,h=A[B+12>>2],A[s+328>>2]=A[B+8>>2],A[s+332>>2]=h,h=A[B+4>>2],A[s+320>>2]=A[B>>2],A[s+324>>2]=h,a0(a,s+336|0,s+320|0),h=A[s+508>>2],A[B+8>>2]=A[s+504>>2],A[B+12>>2]=h,h=A[s+500>>2],A[B>>2]=A[s+496>>2],A[B+4>>2]=h,h=A[Q+12>>2],A[s+312>>2]=A[Q+8>>2],A[s+316>>2]=h,h=A[Q+4>>2],A[s+304>>2]=A[Q>>2],A[s+308>>2]=h,h=A[p+12>>2],A[s+296>>2]=A[p+8>>2],A[s+300>>2]=h,h=A[p+4>>2],A[s+288>>2]=A[p>>2],A[s+292>>2]=h,a0(a,s+304|0,s+288|0),h=A[s+508>>2],A[p+8>>2]=A[s+504>>2],A[p+12>>2]=h,h=A[s+500>>2],A[p>>2]=A[s+496>>2],A[p+4>>2]=h,h=A[n+12>>2],A[s+280>>2]=A[n+8>>2],A[s+284>>2]=h,h=A[n+4>>2],A[s+272>>2]=A[n>>2],A[s+276>>2]=h,h=A[Q+12>>2],A[s+264>>2]=A[Q+8>>2],A[s+268>>2]=h,h=A[Q+4>>2],A[s+256>>2]=A[Q>>2],A[s+260>>2]=h,a0(a,s+272|0,s+256|0),h=A[s+508>>2],A[Q+8>>2]=A[s+504>>2],A[Q+12>>2]=h,h=A[s+500>>2],A[Q>>2]=A[s+496>>2],A[Q+4>>2]=h,h=A[s+412>>2],A[s+248>>2]=A[s+408>>2],A[s+252>>2]=h,h=A[s+404>>2],A[s+240>>2]=A[s+400>>2],A[s+244>>2]=h,h=A[n+12>>2],A[s+232>>2]=A[n+8>>2],A[s+236>>2]=h,h=A[n+4>>2],A[s+224>>2]=A[n>>2],A[s+228>>2]=h,a0(a,s+240|0,s+224|0),h=A[s+508>>2],A[n+8>>2]=A[s+504>>2],A[n+12>>2]=h,h=A[s+500>>2],A[n>>2]=A[s+496>>2],A[n+4>>2]=h,h=A[s+524>>2],A[s+216>>2]=A[s+520>>2],A[s+220>>2]=h,h=A[s+412>>2],A[s+200>>2]=A[s+408>>2],A[s+204>>2]=h,h=A[s+516>>2],A[s+208>>2]=A[s+512>>2],A[s+212>>2]=h,h=A[s+404>>2],A[s+192>>2]=A[s+400>>2],A[s+196>>2]=h,a0(a,s+208|0,s+192|0),A[s+412>>2]=M^A[s+508>>2],A[s+408>>2]=A[s+504>>2]^b,A[s+404>>2]=A[s+500>>2]^D,A[s+400>>2]=A[s+496>>2]^v,(_=(a=_)+16|0)>>>0<=I>>>0;);if((_=15&I)&&($0((n=s+384|0)|_,0,16-_|0),P0(n,o+a|0,_),_=A[s+384>>2],n=A[s+388>>2],Q=A[s+392>>2],p=A[s+396>>2],a=A[s+492>>2],o=A[s+488>>2],A[s+520>>2]=o,A[s+524>>2]=a,B=A[s+476>>2],A[s+184>>2]=A[s+472>>2],A[s+188>>2]=B,A[s+168>>2]=o,A[s+172>>2]=a,a=A[s+484>>2],o=A[s+480>>2],A[s+512>>2]=o,A[s+516>>2]=a,B=A[s+468>>2],A[s+176>>2]=A[s+464>>2],A[s+180>>2]=B,A[s+160>>2]=o,A[s+164>>2]=a,a0(o=s+496|0,s+176|0,s+160|0),a=A[s+508>>2],A[s+488>>2]=A[s+504>>2],A[s+492>>2]=a,a=A[s+460>>2],A[s+152>>2]=A[s+456>>2],A[s+156>>2]=a,a=A[s+476>>2],A[s+136>>2]=A[s+472>>2],A[s+140>>2]=a,a=A[s+500>>2],A[s+480>>2]=A[s+496>>2],A[s+484>>2]=a,a=A[s+452>>2],A[s+144>>2]=A[s+448>>2],A[s+148>>2]=a,a=A[s+468>>2],A[s+128>>2]=A[s+464>>2],A[s+132>>2]=a,a0(o,s+144|0,s+128|0),a=A[s+508>>2],A[s+472>>2]=A[s+504>>2],A[s+476>>2]=a,a=A[s+444>>2],A[s+120>>2]=A[s+440>>2],A[s+124>>2]=a,a=A[s+460>>2],A[s+104>>2]=A[s+456>>2],A[s+108>>2]=a,a=A[s+500>>2],A[s+464>>2]=A[s+496>>2],A[s+468>>2]=a,a=A[s+436>>2],A[s+112>>2]=A[s+432>>2],A[s+116>>2]=a,a=A[s+452>>2],A[s+96>>2]=A[s+448>>2],A[s+100>>2]=a,a0(o,s+112|0,s+96|0),a=A[s+508>>2],A[s+456>>2]=A[s+504>>2],A[s+460>>2]=a,a=A[s+428>>2],A[s+88>>2]=A[s+424>>2],A[s+92>>2]=a,a=A[s+444>>2],A[s+72>>2]=A[s+440>>2],A[s+76>>2]=a,a=A[s+500>>2],A[s+448>>2]=A[s+496>>2],A[s+452>>2]=a,a=A[s+420>>2],A[s+80>>2]=A[s+416>>2],A[s+84>>2]=a,a=A[s+436>>2],A[s+64>>2]=A[s+432>>2],A[s+68>>2]=a,a0(o,s+80|0,s- -64|0),a=A[s+508>>2],A[s+440>>2]=A[s+504>>2],A[s+444>>2]=a,a=A[s+412>>2],A[s+56>>2]=A[s+408>>2],A[s+60>>2]=a,a=A[s+428>>2],A[s+40>>2]=A[s+424>>2],A[s+44>>2]=a,a=A[s+500>>2],A[s+432>>2]=A[s+496>>2],A[s+436>>2]=a,a=A[s+404>>2],A[s+48>>2]=A[s+400>>2],A[s+52>>2]=a,a=A[s+420>>2],A[s+32>>2]=A[s+416>>2],A[s+36>>2]=a,a0(o,s+48|0,s+32|0),a=A[s+508>>2],A[s+424>>2]=A[s+504>>2],A[s+428>>2]=a,a=A[s+524>>2],A[s+24>>2]=A[s+520>>2],A[s+28>>2]=a,a=A[s+412>>2],A[s+8>>2]=A[s+408>>2],A[s+12>>2]=a,a=A[s+500>>2],A[s+416>>2]=A[s+496>>2],A[s+420>>2]=a,a=A[s+516>>2],A[s+16>>2]=A[s+512>>2],A[s+20>>2]=a,a=A[s+404>>2],A[s>>2]=A[s+400>>2],A[s+4>>2]=a,a0(o,s+16|0,s),A[s+412>>2]=p^A[s+508>>2],A[s+408>>2]=Q^A[s+504>>2],A[s+404>>2]=n^A[s+500>>2],A[s+400>>2]=_^A[s+496>>2]),n=16,a=0,r>>>0<16)_=0;else for(;ae(C+a|0,t+a|0,s+400|0),_=n,(n=(a=n)+16|0)>>>0<=r>>>0;);return(o=15&r)&&($0((a=s+384|0)|o,0,16-o|0),P0(a,t+_|0,o),ae(t=s+512|0,a,s+400|0),P0(C+_|0,t,o)),Ae(g,e,I,r,s+400|0),W=s+528|0,0},function(C,g,e,t,r,o,I,a,_){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0;var s,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0;if(W=s=W-544|0,OC(_|=0,a|=0,s+432|0),_=0,I>>>0<=31)a=0;else for(n=32;te(o+_|0,s+432|0),_=a=n,(n=a+32|0)>>>0<=I>>>0;);if((_=16|a)>>>0<=I>>>0)for(n=s+448|0,Q=s+464|0,p=s+480|0,B=s+496|0,l=s+512|0;v=i[0|(a=o+a|0)]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,D=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,b=i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,M=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,a=A[l+12>>2],A[s+392>>2]=A[l+8>>2],A[s+396>>2]=a,a=A[l+4>>2],A[s+384>>2]=A[l>>2],A[s+388>>2]=a,a=A[B+12>>2],A[s+376>>2]=A[B+8>>2],A[s+380>>2]=a,a=A[B+4>>2],A[s+368>>2]=A[B>>2],A[s+372>>2]=a,a=A[l+12>>2],A[s+360>>2]=A[l+8>>2],A[s+364>>2]=a,a=A[l+4>>2],A[s+352>>2]=A[l>>2],A[s+356>>2]=a,a0(a=s+528|0,s+368|0,s+352|0),h=A[s+540>>2],A[l+8>>2]=A[s+536>>2],A[l+12>>2]=h,h=A[s+532>>2],A[l>>2]=A[s+528>>2],A[l+4>>2]=h,h=A[p+12>>2],A[s+344>>2]=A[p+8>>2],A[s+348>>2]=h,h=A[p+4>>2],A[s+336>>2]=A[p>>2],A[s+340>>2]=h,h=A[B+12>>2],A[s+328>>2]=A[B+8>>2],A[s+332>>2]=h,h=A[B+4>>2],A[s+320>>2]=A[B>>2],A[s+324>>2]=h,a0(a,s+336|0,s+320|0),h=A[s+540>>2],A[B+8>>2]=A[s+536>>2],A[B+12>>2]=h,h=A[s+532>>2],A[B>>2]=A[s+528>>2],A[B+4>>2]=h,h=A[Q+12>>2],A[s+312>>2]=A[Q+8>>2],A[s+316>>2]=h,h=A[Q+4>>2],A[s+304>>2]=A[Q>>2],A[s+308>>2]=h,h=A[p+12>>2],A[s+296>>2]=A[p+8>>2],A[s+300>>2]=h,h=A[p+4>>2],A[s+288>>2]=A[p>>2],A[s+292>>2]=h,a0(a,s+304|0,s+288|0),h=A[s+540>>2],A[p+8>>2]=A[s+536>>2],A[p+12>>2]=h,h=A[s+532>>2],A[p>>2]=A[s+528>>2],A[p+4>>2]=h,h=A[n+12>>2],A[s+280>>2]=A[n+8>>2],A[s+284>>2]=h,h=A[n+4>>2],A[s+272>>2]=A[n>>2],A[s+276>>2]=h,h=A[Q+12>>2],A[s+264>>2]=A[Q+8>>2],A[s+268>>2]=h,h=A[Q+4>>2],A[s+256>>2]=A[Q>>2],A[s+260>>2]=h,a0(a,s+272|0,s+256|0),h=A[s+540>>2],A[Q+8>>2]=A[s+536>>2],A[Q+12>>2]=h,h=A[s+532>>2],A[Q>>2]=A[s+528>>2],A[Q+4>>2]=h,h=A[s+444>>2],A[s+248>>2]=A[s+440>>2],A[s+252>>2]=h,h=A[s+436>>2],A[s+240>>2]=A[s+432>>2],A[s+244>>2]=h,h=A[n+12>>2],A[s+232>>2]=A[n+8>>2],A[s+236>>2]=h,h=A[n+4>>2],A[s+224>>2]=A[n>>2],A[s+228>>2]=h,a0(a,s+240|0,s+224|0),h=A[s+540>>2],A[n+8>>2]=A[s+536>>2],A[n+12>>2]=h,h=A[s+532>>2],A[n>>2]=A[s+528>>2],A[n+4>>2]=h,h=A[s+396>>2],A[s+216>>2]=A[s+392>>2],A[s+220>>2]=h,h=A[s+444>>2],A[s+200>>2]=A[s+440>>2],A[s+204>>2]=h,h=A[s+388>>2],A[s+208>>2]=A[s+384>>2],A[s+212>>2]=h,h=A[s+436>>2],A[s+192>>2]=A[s+432>>2],A[s+196>>2]=h,a0(a,s+208|0,s+192|0),A[s+444>>2]=M^A[s+540>>2],A[s+440>>2]=A[s+536>>2]^b,A[s+436>>2]=A[s+532>>2]^D,A[s+432>>2]=A[s+528>>2]^v,(_=(a=_)+16|0)>>>0<=I>>>0;);(_=15&I)&&($0((n=s+416|0)|_,0,16-_|0),P0(n,o+a|0,_),_=A[s+416>>2],n=A[s+420>>2],Q=A[s+424>>2],p=A[s+428>>2],a=A[s+524>>2],o=A[s+520>>2],A[s+392>>2]=o,A[s+396>>2]=a,B=A[s+508>>2],A[s+184>>2]=A[s+504>>2],A[s+188>>2]=B,A[s+168>>2]=o,A[s+172>>2]=a,a=A[s+516>>2],o=A[s+512>>2],A[s+384>>2]=o,A[s+388>>2]=a,B=A[s+500>>2],A[s+176>>2]=A[s+496>>2],A[s+180>>2]=B,A[s+160>>2]=o,A[s+164>>2]=a,a0(o=s+528|0,s+176|0,s+160|0),a=A[s+540>>2],A[s+520>>2]=A[s+536>>2],A[s+524>>2]=a,a=A[s+492>>2],A[s+152>>2]=A[s+488>>2],A[s+156>>2]=a,a=A[s+508>>2],A[s+136>>2]=A[s+504>>2],A[s+140>>2]=a,a=A[s+532>>2],A[s+512>>2]=A[s+528>>2],A[s+516>>2]=a,a=A[s+484>>2],A[s+144>>2]=A[s+480>>2],A[s+148>>2]=a,a=A[s+500>>2],A[s+128>>2]=A[s+496>>2],A[s+132>>2]=a,a0(o,s+144|0,s+128|0),a=A[s+540>>2],A[s+504>>2]=A[s+536>>2],A[s+508>>2]=a,a=A[s+476>>2],A[s+120>>2]=A[s+472>>2],A[s+124>>2]=a,a=A[s+492>>2],A[s+104>>2]=A[s+488>>2],A[s+108>>2]=a,a=A[s+532>>2],A[s+496>>2]=A[s+528>>2],A[s+500>>2]=a,a=A[s+468>>2],A[s+112>>2]=A[s+464>>2],A[s+116>>2]=a,a=A[s+484>>2],A[s+96>>2]=A[s+480>>2],A[s+100>>2]=a,a0(o,s+112|0,s+96|0),a=A[s+540>>2],A[s+488>>2]=A[s+536>>2],A[s+492>>2]=a,a=A[s+460>>2],A[s+88>>2]=A[s+456>>2],A[s+92>>2]=a,a=A[s+476>>2],A[s+72>>2]=A[s+472>>2],A[s+76>>2]=a,a=A[s+532>>2],A[s+480>>2]=A[s+528>>2],A[s+484>>2]=a,a=A[s+452>>2],A[s+80>>2]=A[s+448>>2],A[s+84>>2]=a,a=A[s+468>>2],A[s+64>>2]=A[s+464>>2],A[s+68>>2]=a,a0(o,s+80|0,s- -64|0),a=A[s+540>>2],A[s+472>>2]=A[s+536>>2],A[s+476>>2]=a,a=A[s+444>>2],A[s+56>>2]=A[s+440>>2],A[s+60>>2]=a,a=A[s+460>>2],A[s+40>>2]=A[s+456>>2],A[s+44>>2]=a,a=A[s+532>>2],A[s+464>>2]=A[s+528>>2],A[s+468>>2]=a,a=A[s+436>>2],A[s+48>>2]=A[s+432>>2],A[s+52>>2]=a,a=A[s+452>>2],A[s+32>>2]=A[s+448>>2],A[s+36>>2]=a,a0(o,s+48|0,s+32|0),a=A[s+540>>2],A[s+456>>2]=A[s+536>>2],A[s+460>>2]=a,a=A[s+396>>2],A[s+24>>2]=A[s+392>>2],A[s+28>>2]=a,a=A[s+444>>2],A[s+8>>2]=A[s+440>>2],A[s+12>>2]=a,a=A[s+532>>2],A[s+448>>2]=A[s+528>>2],A[s+452>>2]=a,a=A[s+388>>2],A[s+16>>2]=A[s+384>>2],A[s+20>>2]=a,a=A[s+436>>2],A[s>>2]=A[s+432>>2],A[s+4>>2]=a,a0(o,s+16|0,s),A[s+444>>2]=p^A[s+540>>2],A[s+440>>2]=Q^A[s+536>>2],A[s+436>>2]=n^A[s+532>>2],A[s+432>>2]=_^A[s+528>>2]);A:{g:{C:{e:{t:{if(C){if(n=16,e>>>0<16)break t;for(_=0;ie(C+_|0,g+_|0,s+432|0),_=a=n,(n=a+16|0)>>>0<=e>>>0;);}else{if(_=16,e>>>0<16)break C;for(n=0;ie(s+528|0,g+n|0,s+432|0),n=a=_,(_=a+16|0)>>>0<=e>>>0;);}if(!(_=15&e))break A;if(C)break e;break g}if(a=0,!(_=e))break A}oe(C+a|0,g+a|0,_,s+432|0);break A}if(a=0,!(_=e))break A}oe(s+528|0,g+a|0,_,s+432|0)}Ae(s+384|0,r,I,e,s+432|0),a=-1;A:{g:{if(g=r-16|0){if((0|g)==16)break g;break A}a=O1(s+384|0,t);break A}a=Xg(s+384|0,t)}return!C|!a||$0(C,0,e),W=s+544|0,0|a},function(C,g,e,t,r){var o;return C|=0,t|=0,r|=0,W=o=W+-64|0,(g|=0)|(e|=0)&&(A[o+8>>2]=2036477234,A[o+12>>2]=1797285236,A[o>>2]=1634760805,A[o+4>>2]=857760878,A[o+16>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[o+20>>2]=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[o+24>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[o+28>>2]=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+32>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+36>>2]=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+40>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,r=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,A[o+48>>2]=0,A[o+52>>2]=0,A[o+44>>2]=r,A[o+56>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,A[o+60>>2]=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,Rg(o,C=$0(C,0,g),C,g,e),y0(o,64)),W=o- -64|0,0},function(C,g,e,t,r){var o;return C|=0,t|=0,r|=0,W=o=W+-64|0,(g|=0)|(e|=0)&&(A[o+8>>2]=2036477234,A[o+12>>2]=1797285236,A[o>>2]=1634760805,A[o+4>>2]=857760878,A[o+16>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[o+20>>2]=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[o+24>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[o+28>>2]=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+32>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+36>>2]=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+40>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,r=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,A[o+48>>2]=0,A[o+44>>2]=r,A[o+52>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,A[o+56>>2]=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,A[o+60>>2]=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,Rg(o,C=$0(C,0,g),C,g,e),y0(o,64)),W=o- -64|0,0},function(C,g,e,t,r,o,I,a){var _;return C|=0,g|=0,r|=0,o|=0,I|=0,a|=0,W=_=W+-64|0,(e|=0)|(t|=0)&&(A[_+8>>2]=2036477234,A[_+12>>2]=1797285236,A[_>>2]=1634760805,A[_+4>>2]=857760878,A[_+16>>2]=i[0|a]|i[a+1|0]<<8|i[a+2|0]<<16|i[a+3|0]<<24,A[_+20>>2]=i[a+4|0]|i[a+5|0]<<8|i[a+6|0]<<16|i[a+7|0]<<24,A[_+24>>2]=i[a+8|0]|i[a+9|0]<<8|i[a+10|0]<<16|i[a+11|0]<<24,A[_+28>>2]=i[a+12|0]|i[a+13|0]<<8|i[a+14|0]<<16|i[a+15|0]<<24,A[_+32>>2]=i[a+16|0]|i[a+17|0]<<8|i[a+18|0]<<16|i[a+19|0]<<24,A[_+36>>2]=i[a+20|0]|i[a+21|0]<<8|i[a+22|0]<<16|i[a+23|0]<<24,A[_+40>>2]=i[a+24|0]|i[a+25|0]<<8|i[a+26|0]<<16|i[a+27|0]<<24,A[_+44>>2]=i[a+28|0]|i[a+29|0]<<8|i[a+30|0]<<16|i[a+31|0]<<24,A[_+48>>2]=o,A[_+52>>2]=I,A[_+56>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[_+60>>2]=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,Rg(_,g,C,e,t),y0(_,64)),W=_- -64|0,0},function(C,g,e,t,r,o,I){var a;return C|=0,g|=0,r|=0,o|=0,I|=0,W=a=W+-64|0,(e|=0)|(t|=0)&&(A[a+8>>2]=2036477234,A[a+12>>2]=1797285236,A[a>>2]=1634760805,A[a+4>>2]=857760878,A[a+16>>2]=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24,A[a+20>>2]=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,A[a+24>>2]=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,A[a+28>>2]=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,A[a+32>>2]=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,A[a+36>>2]=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,A[a+40>>2]=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,I=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,A[a+48>>2]=o,A[a+44>>2]=I,A[a+52>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[a+56>>2]=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[a+60>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,Rg(a,g,C,e,t),y0(a,64)),W=a- -64|0,0}],mC.grow=function(C){var g=this.length;return this.length=this.length+C,g},mC.set=function(C,g){this[C]=g},mC.get=function(C){return this[C]},mC);function Ba(){return R0.byteLength/65536|0}return{e:Object.create(Object.prototype,{grow:{value:function(C){C|=0;var g=0|Ba(),e=g+C|0;if(g>>0<4294967280?(Zt(C,C+t|0,0,e|=0,t,r,o|=0,I,a|=0,s|=0,h|=0),g&&(r=(C=t+16|0)>>>0<16?r+1|0:r,A[g>>2]=C,A[g+4>>2]=r)):(h2(),Q0()),0},D:function(C,g,e,t,r,o,I,a,_,s,h,n){return 0|Wt(C|=0,g|=0,e|=0,t|=0,(C=0)|(r|=0),o|=0,I|=0,C|(a|=0),_|=0,h|=0,n|=0)},E:function(C,g,e,t,r,o,I,a,_,s,h){return C|=0,g|=0,t|=0,I|=0,_|=0,I|=_=0,!(r|=0)&(t|=_)>>>0<4294967280?(Wt(C,C+t|0,0,e|=0,t,r,o|=0,I,a|=0,s|=0,h|=0),g&&(r=(C=t+16|0)>>>0<16?r+1|0:r,A[g>>2]=C,A[g+4>>2]=r)):(h2(),Q0()),0},F:function(C,g,e,t,r,o,I,a,_,s,h){return 0|Vt(C|=0,e|=0,(C=0)|(t|=0),r|=0,o|=0,I|=0,C|(a|=0),_|=0,s|=0,h|=0)},G:function(C,g,e,t,r,o,I,a,_,s,h){return g|=0,e|=0,t|=0,r|=0,a|=0,a|=0,e=-1,!(o|=0)&(r|=0)>>>0>=16|o&&(e=Vt(C|=0,t,r-16|0,o-(r>>>0<16)|0,(t+r|0)-16|0,I|=0,a,_|=0,s|=0,h|=0)),g&&(A[g>>2]=e?0:r-16|0,A[g+4>>2]=e?0:o-(r>>>0<16)|0),0|e},H:function(C,g,e,t,r,o,I,a,_,s,h){return 0|jt(C|=0,e|=0,(C=0)|(t|=0),r|=0,o|=0,I|=0,C|(a|=0),_|=0,s|=0,h|=0)},I:function(C,g,e,t,r,o,I,a,_,s,h){return g|=0,e|=0,t|=0,r|=0,a|=0,a|=0,e=-1,!(o|=0)&(r|=0)>>>0>=16|o&&(e=jt(C|=0,t,r-16|0,o-(r>>>0<16)|0,(t+r|0)-16|0,I|=0,a,_|=0,s|=0,h|=0)),g&&(A[g>>2]=e?0:r-16|0,A[g+4>>2]=e?0:o-(r>>>0<16)|0),0|e},J:G0,K:Ia,L:_1,M:o2,N:X1,O:N2,P:G0,Q:U1,R:_1,S:o2,T:X1,U:N2,V:function(C,g,e,t,r,o,I,a,_,s,h,n){return 0|jA(C|=0,g|=0,e|=0,t|=0,(C=0)|(r|=0),o|=0,I|=0,C|(a|=0),_|=0,h|=0,n|=0)},W:function(C,g,e,t,r,o,I,a,_,s,h){return C|=0,g|=0,t|=0,I|=0,_|=0,I|=_=0,!(r|=0)&(t|=_)>>>0<4294967280?(jA(C,C+t|0,0,e|=0,t,r,o|=0,I,a|=0,s|=0,h|=0),g&&(r=(C=t+16|0)>>>0<16?r+1|0:r,A[g>>2]=C,A[g+4>>2]=r)):(h2(),Q0()),0},X:function(C,g,e,t,r,o,I,a,_,s,h){return 0|lA(C|=0,e|=0,(C=0)|(t|=0),r|=0,o|=0,I|=0,C|(a|=0),_|=0,s|=0,h|=0)},Y:function(C,g,e,t,r,o,I,a,_,s,h){return g|=0,e|=0,t|=0,r|=0,a|=0,a|=0,e=-1,!(o|=0)&(r|=0)>>>0>=16|o&&(e=lA(C|=0,t,r-16|0,o-(r>>>0<16)|0,(t+r|0)-16|0,I|=0,a,_|=0,s|=0,h|=0)),g&&(A[g>>2]=e?0:r-16|0,A[g+4>>2]=e?0:o-(r>>>0<16)|0),0|e},Z:G0,_:G1,$:_1,aa:o2,ba:X1,ca:N2,da:G0,ea:G0,fa:function(){return 1462},ga:F,ha:Xt,ia:N2,ja:G0,ka:G0,la:FC,ma:N2,na:Y1,oa:function(C,g,e,t){return 0|M1(C|=0,g|=0,e|=0,t|=0)},pa:Og,qa:function(C,g,e,t,r){var o;return C|=0,g|=0,e|=0,t|=0,W=o=W-240|0,Y1(o,r|=0,32),y1(o,g,e,t),v1(o,g=o+208|0),y1(e=o+104|0,g,32,0),v1(e,C),y0(g,32),W=o+240|0,0},ra:function(C,g,e,t,r){var o,I;return C|=0,g|=0,e|=0,t|=0,W=o=W-272|0,Y1(I=o+32|0,r|=0,32),y1(I,g,e,t),v1(I,g=o+240|0),y1(e=o+136|0,g,32,0),v1(e,o),y0(g,32),g=Xg(C,o),e=p2(o,C,32),W=o+272|0,((0|C)==(0|o)?-1:g)|e},sa:J2,ta:G0,ua:Ft,va:N2,wa:N1,xa:Lr,ya:tg,za:function(C,g,e,t,r){var o;return C|=0,g|=0,e|=0,t|=0,W=o=W-480|0,N1(o,r|=0,32),x2(o,g,e,t),e1(o,g=o+416|0),x2(e=o+208|0,g,64,0),e1(e,C),y0(g,64),W=o+480|0,0},Aa:function(C,g,e,t,r){var o,I;return C|=0,g|=0,e|=0,t|=0,W=o=W-544|0,N1(I=o- -64|0,r|=0,32),x2(I,g,e,t),e1(I,g=o+480|0),x2(e=o+272|0,g,64,0),e1(e,o),y0(g,64),g=zr(C,o),e=p2(o,C,64),W=o+544|0,((0|C)==(0|o)?-1:g)|e},Ba:G0,Ca:G0,Da:Ft,Ea:N2,Fa:Pr,Ga:Lr,Ha:function(C,g){g|=0;var e,t=0;return W=e=W+-64|0,tg(C|=0,e),t=A[e+28>>2],C=A[e+24>>2],c[g+24|0]=C,c[g+25|0]=C>>>8,c[g+26|0]=C>>>16,c[g+27|0]=C>>>24,c[g+28|0]=t,c[g+29|0]=t>>>8,c[g+30|0]=t>>>16,c[g+31|0]=t>>>24,t=A[e+20>>2],C=A[e+16>>2],c[g+16|0]=C,c[g+17|0]=C>>>8,c[g+18|0]=C>>>16,c[g+19|0]=C>>>24,c[g+20|0]=t,c[g+21|0]=t>>>8,c[g+22|0]=t>>>16,c[g+23|0]=t>>>24,t=A[e+12>>2],C=A[e+8>>2],c[g+8|0]=C,c[g+9|0]=C>>>8,c[g+10|0]=C>>>16,c[g+11|0]=C>>>24,c[g+12|0]=t,c[g+13|0]=t>>>8,c[g+14|0]=t>>>16,c[g+15|0]=t>>>24,t=A[e+4>>2],C=A[e>>2],c[0|g]=C,c[g+1|0]=C>>>8,c[g+2|0]=C>>>16,c[g+3|0]=C>>>24,c[g+4|0]=t,c[g+5|0]=t>>>8,c[g+6|0]=t>>>16,c[g+7|0]=t>>>24,W=e- -64|0,0},Ia:F,Ja:Xt,Ka:G0,La:G0,Ma:G0,Na:G0,Oa:G1,Pa:G0,Qa:o2,Ra:o2,Sa:X1,Ta:function(){return 1476},Ua:function(C,g,e){return 0|k(C|=0,g|=0,e|=0)},Va:jr,Wa:vC,Xa:Ue,Ya:He,Za:Ir,_a:sr,$a:br,ab:function(C,g,e,t,r,o,I,a){C|=0,g|=0,e|=0,o|=0;var _,s=0;return s=t|=0,t=r|=0,_=0|s,W=s=W-32|0,r=-1,vC(s,I|=0,a|=0)||(r=N(C,g,e,_,t,o,s),y0(s,32)),W=s+32|0,0|r},bb:function(C,g,e,t,r,o){return C|=0,g|=0,r|=0,o|=0,!(t|=0)&(e|=0)>>>0>=4294967280|t&&(h2(),Q0()),0|N(C+16|0,C,g,e,t,r,o)},cb:function(C,g,e,t,r,o,I){return 0|Er(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},db:vr,eb:function(C,g,e,t,r,o,I,a){C|=0,g|=0,e|=0,o|=0;var _,s=0;return s=t|=0,t=r|=0,_=0|s,W=s=W-32|0,r=-1,vC(s,I|=0,a|=0)||(r=Y(C,g,e,_,t,o,s),y0(s,32)),W=s+32|0,0|r},fb:pr,gb:function(C,g,e,t,r,o,I){return 0|hr(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},hb:function(C,g,e,t,r){C|=0,g|=0,r|=0;var o,I,a,_,s=0,h=0;return s=e|=0,e=t|=0,_=0|s,s=t=W,W=o=t-512&-64,t=-1,jr(I=o- -64|0,a=o+32|0)||(ng(t=o+128|0,0,0,24),t1(t,I,32,0),t1(t,r,32,0),Eg(t,h=o+96|0,24),t=Er(C+32|0,g,_,e,h,r,a),g=A[o+92>>2],e=A[o+88>>2],c[C+24|0]=e,c[C+25|0]=e>>>8,c[C+26|0]=e>>>16,c[C+27|0]=e>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[o+84>>2],e=A[o+80>>2],c[C+16|0]=e,c[C+17|0]=e>>>8,c[C+18|0]=e>>>16,c[C+19|0]=e>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[o+76>>2],e=A[o+72>>2],c[C+8|0]=e,c[C+9|0]=e>>>8,c[C+10|0]=e>>>16,c[C+11|0]=e>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[o+68>>2],e=A[o+64>>2],c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,y0(a,32),y0(I,32),y0(h,24)),W=s,0|t},ib:function(C,g,e,t,r,o){C|=0,g|=0,r|=0,o|=0;var I,a,_=0;return a=_=W,W=I=_-448&-64,_=-1,!(t|=0)&(e|=0)>>>0>=48|t&&(ng(_=I- -64|0,0,0,24),t1(_,g,32,0),t1(_,r,32,0),Eg(_,r=I+32|0,24),_=hr(C,g+32|0,e-32|0,t-(e>>>0<32)|0,r,g,o)),W=a,0|_},jb:ca,kb:k,lb:Re,mb:wr,nb:Ue,ob:He,pb:Ir,qb:sr,rb:G0,sb:G0,tb:G0,ub:G0,vb:G1,wb:G0,xb:o2,yb:o2,zb:X1,Ab:g1,Bb:G0,Cb:o2,Db:G0,Eb:o2,Fb:S1,Gb:G0,Hb:o2,Ib:G0,Jb:o2,Kb:uC,Lb:J2,Mb:o2,Nb:G0,Ob:o2,Pb:dC,Qb:J2,Rb:o2,Sb:G0,Tb:o2,Ub:SC,Vb:J2,Wb:o2,Xb:G0,Yb:o2,Zb:o2,_b:J2,$b:G0,ac:o2,bc:J2,cc:G0,dc:ra,ec:aa,fc:function(C,g,e,t,r,o,I){return 0|ut(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},gc:ng,hc:function(C,g,e,t){return 0|t1(C|=0,g|=0,e|=0,t|=0)},ic:Eg,jc:N2,kc:o2,lc:J2,mc:G0,nc:o2,oc:J2,pc:G0,qc:o2,rc:o2,sc:aa,tc:N2,uc:ut,vc:function(C,g,e,t,r,o,I,a,_){return 0|se(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0,a|=0,_|=0)},wc:sg,xc:function(C,g,e,t,r,o){C|=0,g|=0,r|=0,o|=0;var I=0,a=0,_=0,s=0,h=0,n=0,B=0;if(I=-1,!((t|=0)-65>>>0<4294967232|(e|=0)>>>0>64)){A:{if(!e||!g){if(((s=255&t)-65&255)>>>0>191){r?(a=725511199^(i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24),e=-1694144372^(i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24),g=-1377402159^(i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),r=1359893119^(i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24)):(a=725511199,e=-1694144372,g=-1377402159,r=1359893119),o?(_=327033209^(i[o+8|0]|i[o+9|0]<<8|i[o+10|0]<<16|i[o+11|0]<<24),t=1541459225^(i[o+12|0]|i[o+13|0]<<8|i[o+14|0]<<16|i[o+15|0]<<24),I=-79577749^(i[0|o]|i[o+1|0]<<8|i[o+2|0]<<16|i[o+3|0]<<24),o=528734635^(i[o+4|0]|i[o+5|0]<<8|i[o+6|0]<<16|i[o+7|0]<<24)):(_=327033209,t=1541459225,I=-79577749,o=528734635),$0(C- -64|0,0,293),c[C+56|0]=_,c[C+57|0]=_>>>8,c[C+58|0]=_>>>16,c[C+59|0]=_>>>24,c[C+60|0]=t,c[C+61|0]=t>>>8,c[C+62|0]=t>>>16,c[C+63|0]=t>>>24,c[C+48|0]=I,c[C+49|0]=I>>>8,c[C+50|0]=I>>>16,c[C+51|0]=I>>>24,c[C+52|0]=o,c[C+53|0]=o>>>8,c[C+54|0]=o>>>16,c[C+55|0]=o>>>24,c[C+40|0]=a,c[C+41|0]=a>>>8,c[C+42|0]=a>>>16,c[C+43|0]=a>>>24,c[C+44|0]=e,c[C+45|0]=e>>>8,c[C+46|0]=e>>>16,c[C+47|0]=e>>>24,c[C+32|0]=g,c[C+33|0]=g>>>8,c[C+34|0]=g>>>16,c[C+35|0]=g>>>24,c[C+36|0]=r,c[C+37|0]=r>>>8,c[C+38|0]=r>>>16,c[C+39|0]=r>>>24,c[C+24|0]=241,c[C+25|0]=54,c[C+26|0]=29,c[C+27|0]=95,c[C+28|0]=58,c[C+29|0]=245,c[C+30|0]=79,c[C+31|0]=165,c[C+16|0]=43,c[C+17|0]=248,c[C+18|0]=148,c[C+19|0]=254,c[C+20|0]=114,c[C+21|0]=243,c[C+22|0]=110,c[C+23|0]=60,c[C+8|0]=59,c[C+9|0]=167,c[C+10|0]=202,c[C+11|0]=132,c[C+12|0]=133,c[C+13|0]=174,c[C+14|0]=103,c[C+15|0]=187,g=-222443256^s,c[0|C]=g,c[C+1|0]=g>>>8,c[C+2|0]=g>>>16,c[C+3|0]=g>>>24,c[C+4|0]=103,c[C+5|0]=230,c[C+6|0]=9,c[C+7|0]=106;break A}h2(),Q0()}W=n=W-128|0,!g|((B=255&t)-65&255)>>>0<=191|((s=255&e)-65&255)>>>0<=191?(h2(),Q0()):(r?(a=725511199^(i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24),e=-1694144372^(i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24),I=-1377402159^(i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),r=1359893119^(i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24)):(a=725511199,e=-1694144372,I=-1377402159,r=1359893119),o?(_=327033209^(i[o+8|0]|i[o+9|0]<<8|i[o+10|0]<<16|i[o+11|0]<<24),t=1541459225^(i[o+12|0]|i[o+13|0]<<8|i[o+14|0]<<16|i[o+15|0]<<24),h=-79577749^(i[0|o]|i[o+1|0]<<8|i[o+2|0]<<16|i[o+3|0]<<24),o=528734635^(i[o+4|0]|i[o+5|0]<<8|i[o+6|0]<<16|i[o+7|0]<<24)):(_=327033209,t=1541459225,h=-79577749,o=528734635),$0(C- -64|0,0,293),c[C+56|0]=_,c[C+57|0]=_>>>8,c[C+58|0]=_>>>16,c[C+59|0]=_>>>24,c[C+60|0]=t,c[C+61|0]=t>>>8,c[C+62|0]=t>>>16,c[C+63|0]=t>>>24,c[C+48|0]=h,c[C+49|0]=h>>>8,c[C+50|0]=h>>>16,c[C+51|0]=h>>>24,c[C+52|0]=o,c[C+53|0]=o>>>8,c[C+54|0]=o>>>16,c[C+55|0]=o>>>24,c[C+40|0]=a,c[C+41|0]=a>>>8,c[C+42|0]=a>>>16,c[C+43|0]=a>>>24,c[C+44|0]=e,c[C+45|0]=e>>>8,c[C+46|0]=e>>>16,c[C+47|0]=e>>>24,c[C+32|0]=I,c[C+33|0]=I>>>8,c[C+34|0]=I>>>16,c[C+35|0]=I>>>24,c[C+36|0]=r,c[C+37|0]=r>>>8,c[C+38|0]=r>>>16,c[C+39|0]=r>>>24,c[C+24|0]=241,c[C+25|0]=54,c[C+26|0]=29,c[C+27|0]=95,c[C+28|0]=58,c[C+29|0]=245,c[C+30|0]=79,c[C+31|0]=165,c[C+16|0]=43,c[C+17|0]=248,c[C+18|0]=148,c[C+19|0]=254,c[C+20|0]=114,c[C+21|0]=243,c[C+22|0]=110,c[C+23|0]=60,c[C+8|0]=59,c[C+9|0]=167,c[C+10|0]=202,c[C+11|0]=132,c[C+12|0]=133,c[C+13|0]=174,c[C+14|0]=103,c[C+15|0]=187,e=-222443256^(s<<8|B),c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,e=s>>>24^1779033703,c[C+4|0]=e,c[C+5|0]=e>>>8,c[C+6|0]=e>>>16,c[C+7|0]=e>>>24,e=P0($0(n,0,128),g,s),P0(C+96|0,e,128),g=128+(i[C+352|0]|i[C+353|0]<<8|i[C+354|0]<<16|i[C+355|0]<<24)|0,c[C+352|0]=g,c[C+353|0]=g>>>8,c[C+354|0]=g>>>16,c[C+355|0]=g>>>24,y0(e,128),W=e+128|0)}I=0}return 0|I},yc:t1,zc:lC,Ac:J2,Bc:Jr,Cc:function(){return 1531},Dc:G0,Ec:function(){return 104},Fc:Me,Gc:function(C,g,e,t){return 0|y1(C|=0,g|=0,e|=0,t|=0)},Hc:v1,Ic:function(C,g,e,t){C|=0,g|=0,e|=0,t|=0;var r,o=0;return W=r=W-112|0,o=A[8811],A[r+16>>2]=A[8810],A[r+20>>2]=o,o=A[8813],A[r+24>>2]=A[8812],A[r+28>>2]=o,o=A[8815],A[r+32>>2]=A[8814],A[r+36>>2]=o,A[r+40>>2]=0,A[r+44>>2]=0,o=A[8809],A[r+8>>2]=A[8808],A[r+12>>2]=o,y1(o=r+8|0,g,e,t),v1(o,C),W=r+112|0,0},Jc:J2,Kc:FC,Lc:b0,Mc:Dt,Nc:e1,Oc:Jr,Pc:o2,Qc:J2,Rc:U1,Sc:G0,Tc:Ot,Uc:ra,Vc:o2,Wc:J2,Xc:U1,Yc:G0,Zc:Ot,_c:N2,$c:function(C,g,e){return 0|Y1(C|=0,g|=0,e|=0)},ad:function(C,g,e){return 0|M1(C|=0,g|=0,e|=0,0)},bd:function(C,g){return Og(C|=0,g|=0),y0(C,4),0},cd:function(C,g,e,t,r){var o;return C|=0,t|=0,r|=0,W=o=W-208|0,Y1(o,g|=0,e|=0),M1(o,t,r,0),Og(o,C),y0(o,4),W=o+208|0,0},dd:N2,ed:function(C,g,e,t,r){C|=0,g|=0,e|=0,t|=0,r|=0;var o,I=0,a=0,_=0,s=0;if(W=o=W-256|0,c[o+15|0]=1,g>>>0<=8160){if(g>>>0>=32)for(s=C-32|0,I=32;_=I,Y1(I=o+48|0,r,32),a&&M1(I,a+s|0,32,0),M1(I=o+48|0,e,t,0),M1(I,o+15|0,1,0),Og(I,C+a|0),c[o+15|0]=i[o+15|0]+1,(I=(a=_)+32|0)>>>0<=g>>>0;);(a=31&g)&&(Y1(g=o+48|0,r,32),_&&M1(g,(C+_|0)-32|0,32,0),M1(g=o+48|0,e,t,0),M1(g,o+15|0,1,0),Og(e=g,g=o+16|0),P0(C+_|0,g,a),y0(g,32)),y0(o+48|0,208),C=0}else A[9404]=28,C=-1;return W=o+256|0,0|C},fd:G0,gd:_1,hd:function(){return 8160},id:FC,jd:Pr,kd:function(C,g,e){return 0|m1(C|=0,g|=0,e|=0,0)},ld:function(C,g){return tg(C|=0,g|=0),y0(C,4),0},md:function(C,g,e,t,r){var o;return C|=0,t|=0,r|=0,W=o=W-416|0,N1(o,g|=0,e|=0),m1(o,t,r,0),tg(o,C),y0(o,4),W=o+416|0,0},nd:function(C){X2(C|=0,64)},od:function(C,g,e,t,r){C|=0,g|=0,e|=0,t|=0,r|=0;var o,I=0,a=0,_=0,s=0;if(W=o=W-496|0,c[o+15|0]=1,g>>>0<=16320){if(g>>>0>=64)for(s=C+-64|0,I=64;_=I,N1(I=o+80|0,r,64),a&&m1(I,a+s|0,64,0),m1(I=o+80|0,e,t,0),m1(I,o+15|0,1,0),tg(I,C+a|0),c[o+15|0]=i[o+15|0]+1,(I=(a=_)- -64|0)>>>0<=g>>>0;);(a=63&g)&&(N1(g=o+80|0,r,64),_&&m1(g,(C+_|0)-64|0,64,0),m1(g=o+80|0,e,t,0),m1(g,o+15|0,1,0),tg(e=g,g=o+16|0),P0(C+_|0,g,a),y0(g,64)),y0(o+80|0,416),C=0}else A[9404]=28,C=-1;return W=o+496|0,0|C},pd:J2,qd:_1,rd:function(){return 16320},sd:Ft,td:function(C,g,e){return C|=0,ut(g|=0,32,e|=0,32,0,0,0),0|dt(C,g)},ud:function(C,g){return C|=0,X2(g|=0,32),0|dt(C,g)},vd:function(C,g,e,t,r){g|=0,e|=0,t|=0,r|=0;var o,I,a=0,_=0,s=0;if(I=a=W,W=a=a-512&-64,o=(C|=0)||g){if(s=-1,!lt(_=a+96|0,t,r)){for(t=g||C,C=0,ng(g=a+128|0,0,0,64),t1(g,_,32,0),y0(_,32),t1(g,e,32,0),t1(g,r,32,0),Eg(g,a+32|0,64),y0(g,384);e=(g=a+32|0)+C|0,c[C+o|0]=i[0|e],c[C+t|0]=i[e+32|0],c[(e=1|C)+o|0]=i[g+e|0],c[e+t|0]=i[g+(33|C)|0],(0|(C=C+2|0))!=32;);y0(g,64),s=0}return W=I,0|s}h2(),Q0()},wd:function(C,g,e,t,r){g|=0,e|=0,t|=0,r|=0;var o,I,a=0,_=0,s=0;if(I=a=W,W=a=a-512&-64,o=(C|=0)||g){if(s=-1,!lt(_=a+96|0,t,r)){for(t=g||C,C=0,ng(g=a+128|0,0,0,64),t1(g,_,32,0),y0(_,32),t1(g,r,32,0),t1(g,e,32,0),Eg(g,a+32|0,64),y0(g,384);e=(g=a+32|0)+C|0,c[C+t|0]=i[0|e],c[C+o|0]=i[e+32|0],c[(e=1|C)+t|0]=i[g+e|0],c[e+o|0]=i[g+(33|C)|0],(0|(C=C+2|0))!=32;);y0(g,64),s=0}return W=I,0|s}h2(),Q0()},xd:G0,yd:G0,zd:G0,Ad:G0,Bd:function(){return 1332},Cd:ia,Dd:o2,Ed:G0,Fd:xr,Gd:Yr,Hd:function(C,g){return 0|f1(C|=0,g|=0)},Id:Rr,Jd:function(C,g){return 0|D1(C|=0,g|=0)},Kd:function(){return 1494},Ld:N2,Md:xr,Nd:Yr,Od:f1,Pd:Rr,Qd:D1,Rd:o2,Sd:G0,Td:ia,Ud:N2,Vd:NC,Wd:o2,Xd:z2,Yd:_1,Zd:z2,_d:o2,$d:Nt,ae:function(){return 1554},be:ze,ce:z2,de:vt,ee:St,fe:mt,ge:Aa,he:function(){return 6},ie:function(){return 134217728},je:U1,ke:function(){return 536870912},le:function(C,g,e,t,r,o,I,a,_,s,h){return 0|P(C|=0,(C=0)|(g|=0),e|=0,t|=0,C|(r|=0),o|=0,I|=0,C|(a|=0),_|=0,s|=0,h|=0)},me:function(C,g,e,t,r,o,I){return 0|rr(C|=0,g|=0,(C=0)|(e|=0),t|=0,C|(r|=0),o|=0,I|=0)},ne:function(C,g,e,t){return 0|Or(C|=0,g|=0,e|=0,t|=0)},oe:function(C,g,e,t){return 0|Xr(C|=0,g|=0,e|=0,t|=0)},pe:function(C,g,e,t){return 0|Vr(C|=0,g|=0,e|=0,t|=0)},qe:pg,re:o2,se:z2,te:_1,ue:z2,ve:o2,we:Nt,xe:ta,ye:NC,ze:z2,Ae:vt,Be:St,Ce:pg,De:ga,Ee:ze,Fe:$r,Ge:mt,He:bt,Ie:function(C,g,e,t,r,o,I,a,_,s,h){return 0|AA(C|=0,(C=0)|(g|=0),e|=0,t|=0,C|(r|=0),o|=0,I|=0,C|(a|=0),_|=0,s|=0,h|=0)},Je:kr,Ke:function(C,g,e,t){return 0|Wr(C|=0,g|=0,e|=0,t|=0)},Le:NC,Me:pg,Ne:pg,Oe:o2,Pe:z2,Qe:_1,Re:z2,Se:o2,Te:Nt,Ue:ta,Ve:NC,We:z2,Xe:vt,Ye:St,Ze:pg,_e:ga,$e:ze,af:$r,bf:mt,cf:bt,df:function(C,g,e,t,r,o,I,a,_,s,h){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0,a|=0,_|=0,s|=0,g|=0,r|=0,a|=0;A:{switch((h|=0)-1|0){case 0:C=P(C,g,e,t,r,o,I,a,_,s,1);break A;case 1:C=AA(C,g,e,t,r,o,I,a,_,s,2);break A}A[9404]=28,C=-1}return 0|C},ef:kr,ff:function(C,g,e,t,r,o,I,a){C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0,e|=0,r|=0;A:{switch((a|=0)-1|0){case 1:C=_r(C,g,e,t,r,o,I);break A;default:h2(),Q0();case 0:}C=rr(C,g,e,t,r,o,I)}return 0|C},gf:function(C,g,e,t){return g|=0,e|=0,t|=0,zg(C|=0,1564,10)?zg(C,1554,9)?(A[9404]=28,C=-1):C=Or(C,g,e,t):C=Wr(C,g,e,t),0|C},hf:function(C,g,e,t){return g|=0,e|=0,t|=0,zg(C|=0,1564,10)?zg(C,1554,9)?(A[9404]=28,C=-1):C=Xr(C,g,e,t):C=Vr(C,g,e,t),0|C},jf:function(){return 1156},kf:function(){return 1443},lf:dt,mf:lt,nf:G0,of:G0,pf:E1,qf:Pe,rf:G0,sf:G0,tf:G0,uf:G1,vf:G0,wf:o2,xf:o2,yf:X1,zf:function(){return 1486},Af:Ue,Bf:He,Cf:N2,Df:br,Ef:function(C,g,e,t,r,o){return C|=0,g|=0,r|=0,o|=0,!(t|=0)&(e|=0)>>>0>=4294967280|t&&(h2(),Q0()),N(C+16|0,C,g,e,t,r,o),0},Ff:vr,Gf:pr,Hf:Ue,If:He,Jf:G0,Kf:G1,Lf:G0,Mf:o2,Nf:o2,Of:X1,Pf:N2,Qf:N2,Rf:function(C,g,e){return C|=0,e|=0,X2(g|=0,24),g1(C,g,e,0),c[C+32|0]=1,c[C+33|0]=0,c[C+34|0]=0,c[C+35|0]=0,e=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,c[C+44|0]=0,c[C+45|0]=0,c[C+46|0]=0,c[C+47|0]=0,c[C+48|0]=0,c[C+49|0]=0,c[C+50|0]=0,c[C+51|0]=0,c[C+36|0]=e,c[C+37|0]=e>>>8,c[C+38|0]=e>>>16,c[C+39|0]=e>>>24,c[C+40|0]=g,c[C+41|0]=g>>>8,c[C+42|0]=g>>>16,c[C+43|0]=g>>>24,0},Sf:function(C,g,e){return g1(C|=0,g|=0,e|=0,0),c[C+32|0]=1,c[C+33|0]=0,c[C+34|0]=0,c[C+35|0]=0,e=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,c[C+44|0]=0,c[C+45|0]=0,c[C+46|0]=0,c[C+47|0]=0,c[C+48|0]=0,c[C+49|0]=0,c[C+50|0]=0,c[C+51|0]=0,c[C+36|0]=e,c[C+37|0]=e>>>8,c[C+38|0]=e>>>16,c[C+39|0]=e>>>24,c[C+40|0]=g,c[C+41|0]=g>>>8,c[C+42|0]=g>>>16,c[C+43|0]=g>>>24,0},Tf:function(C){var g,e=0,t=0;W=g=W-48|0,e=i[28+(C|=0)|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,A[g+24>>2]=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,A[g+28>>2]=e,e=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,A[g+16>>2]=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,A[g+20>>2]=e,e=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,A[g>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,A[g+4>>2]=e,e=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,A[g+8>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,A[g+12>>2]=e,e=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,A[g+32>>2]=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,A[g+36>>2]=e,xe(g,g,40,0,C+32|0,C),e=A[g+28>>2],t=A[g+24>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=e,c[C+29|0]=e>>>8,c[C+30|0]=e>>>16,c[C+31|0]=e>>>24,e=A[g+20>>2],t=A[g+16>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=e,c[C+21|0]=e>>>8,c[C+22|0]=e>>>16,c[C+23|0]=e>>>24,e=A[g+12>>2],t=A[g+8>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=e,c[C+13|0]=e>>>8,c[C+14|0]=e>>>16,c[C+15|0]=e>>>24,e=A[g+4>>2],t=A[g>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=e,c[C+5|0]=e>>>8,c[C+6|0]=e>>>16,c[C+7|0]=e>>>24,t=A[g+36>>2],e=A[g+32>>2],c[C+32|0]=1,c[C+33|0]=0,c[C+34|0]=0,c[C+35|0]=0,c[C+36|0]=e,c[C+37|0]=e>>>8,c[C+38|0]=e>>>16,c[C+39|0]=e>>>24,c[C+40|0]=t,c[C+41|0]=t>>>8,c[C+42|0]=t>>>16,c[C+43|0]=t>>>24,W=g+48|0},Uf:function(C,g,e,t,r,o,I,a,_,s){C|=0,g|=0,t|=0,o|=0,I|=0,_|=0,s|=0;var h,n=0,B=0,Q=0;return n=r|=0,n|=r=0,h=r|(a|=0),W=r=W-384|0,(e|=0)&&(A[e>>2]=0,A[e+4>>2]=0),!o&n>>>0<4294967279?(rg(B=r+16|0,64,0,Q=C+32|0,C),f1(a=r+80|0,B),y0(B,64),a2(a,I,h,_),a2(a,35216,0-h&15,0),A[r+72>>2]=0,A[r+76>>2]=0,A[(I=r- -64|0)>>2]=0,A[I+4>>2]=0,A[r+56>>2]=0,A[r+60>>2]=0,A[r+48>>2]=0,A[r+52>>2]=0,A[r+40>>2]=0,A[r+44>>2]=0,A[r+32>>2]=0,A[r+36>>2]=0,A[r+16>>2]=0,A[r+20>>2]=0,A[r+24>>2]=0,A[r+28>>2]=0,c[r+16|0]=s,hg(B,B,64,0,Q,1,C),a2(a,B,64,0),c[0|g]=i[r+16|0],hg(g=g+1|0,t,n,o,Q,2,C),a2(a,g,n,o),a2(a,35216,15&n,0),A[r+8>>2]=h,A[r+12>>2]=_,a2(a,t=r+8|0,8,0),A[r+8>>2]=n- -64,A[r+12>>2]=o-((n>>>0<4294967232)-1|0),a2(a,t,8,0),D1(a,g=g+n|0),y0(a,256),c[C+36|0]=i[C+36|0]^i[0|g],c[C+37|0]=i[C+37|0]^i[g+1|0],c[C+38|0]=i[C+38|0]^i[g+2|0],c[C+39|0]=i[C+39|0]^i[g+3|0],c[C+40|0]=i[C+40|0]^i[g+4|0],c[C+41|0]=i[C+41|0]^i[g+5|0],c[C+42|0]=i[C+42|0]^i[g+6|0],c[C+43|0]=i[C+43|0]^i[g+7|0],tr(Q),(2&s||X0(Q,4))&&(g=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,A[r+360>>2]=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,A[r+364>>2]=g,g=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,A[r+352>>2]=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,A[r+356>>2]=g,g=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,A[r+336>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,A[r+340>>2]=g,g=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,A[r+344>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,A[r+348>>2]=g,g=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,A[r+368>>2]=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,A[r+372>>2]=g,xe(g=r+336|0,g,40,0,Q,C),g=A[r+364>>2],t=A[r+360>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[r+356>>2],t=A[r+352>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[r+348>>2],t=A[r+344>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[r+340>>2],t=A[r+336>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=A[r+368>>2],t=A[r+372>>2],c[C+32|0]=1,c[C+33|0]=0,c[C+34|0]=0,c[C+35|0]=0,c[C+36|0]=g,c[C+37|0]=g>>>8,c[C+38|0]=g>>>16,c[C+39|0]=g>>>24,c[C+40|0]=t,c[C+41|0]=t>>>8,c[C+42|0]=t>>>16,c[C+43|0]=t>>>24),e&&(o=(C=n+17|0)>>>0<17?o+1|0:o,A[e>>2]=C,A[e+4>>2]=o),W=r+384|0):(h2(),Q0()),0},Vf:function(C,g,e,t,r,o,I,a,_,s){C|=0,g|=0,t|=0,r|=0,a|=0,s|=0;var h,n=0,B=0,Q=0,p=0,l=0,v=0;n=o|=0,o=I|=0,B=0|n,h=_|=0,W=I=W-400|0,(e|=0)&&(A[e>>2]=0,A[e+4>>2]=0),t&&(c[0|t]=255),v=-1;A:{g:{if(!((_=B>>>0<17)&!o)){if(l=n=o-_|0,!n&(_=B-17|0)>>>0>=4294967279|n)break g;rg(Q=I+32|0,64,0,p=C+32|0,C),f1(n=I+96|0,Q),y0(Q,64),a2(n,a,h,s),a2(n,35216,0-h&15,0),A[I+88>>2]=0,A[I+92>>2]=0,A[I+80>>2]=0,A[I+84>>2]=0,A[I+72>>2]=0,A[I+76>>2]=0,A[(a=I- -64|0)>>2]=0,A[a+4>>2]=0,A[I+56>>2]=0,A[I+60>>2]=0,A[I+48>>2]=0,A[I+52>>2]=0,A[I+40>>2]=0,A[I+44>>2]=0,A[I+32>>2]=0,A[I+36>>2]=0,c[I+32|0]=i[0|r],hg(Q,Q,64,0,p,1,C),a=i[I+32|0],c[I+32|0]=i[0|r],a2(n,Q,64,0),a2(n,r=r+1|0,_,l),a2(n,35216,B-1&15,0),A[I+24>>2]=h,A[I+28>>2]=s,a2(n,s=I+24|0,8,0),o=(B=B+47|0)>>>0<47?o+1|0:o,A[I+24>>2]=B,A[I+28>>2]=o,a2(n,s,8,0),D1(n,I),y0(n,256),p2(I,r+_|0,16)?y0(I,16):(hg(g,r,_,l,p,2,C),c[C+36|0]=i[C+36|0]^i[0|I],c[C+37|0]=i[C+37|0]^i[I+1|0],c[C+38|0]=i[C+38|0]^i[I+2|0],c[C+39|0]=i[C+39|0]^i[I+3|0],c[C+40|0]=i[C+40|0]^i[I+4|0],c[C+41|0]=i[C+41|0]^i[I+5|0],c[C+42|0]=i[C+42|0]^i[I+6|0],c[C+43|0]=i[C+43|0]^i[I+7|0],tr(p),(2&a||X0(p,4))&&(g=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,A[I+376>>2]=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,A[I+380>>2]=g,g=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,A[I+368>>2]=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,A[I+372>>2]=g,g=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,A[I+352>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,A[I+356>>2]=g,g=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,A[I+360>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,A[I+364>>2]=g,g=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,A[I+384>>2]=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,A[I+388>>2]=g,xe(g=I+352|0,g,40,0,p,C),g=A[I+380>>2],r=A[I+376>>2],c[C+24|0]=r,c[C+25|0]=r>>>8,c[C+26|0]=r>>>16,c[C+27|0]=r>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[I+372>>2],r=A[I+368>>2],c[C+16|0]=r,c[C+17|0]=r>>>8,c[C+18|0]=r>>>16,c[C+19|0]=r>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[I+364>>2],r=A[I+360>>2],c[C+8|0]=r,c[C+9|0]=r>>>8,c[C+10|0]=r>>>16,c[C+11|0]=r>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[I+356>>2],r=A[I+352>>2],c[0|C]=r,c[C+1|0]=r>>>8,c[C+2|0]=r>>>16,c[C+3|0]=r>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=A[I+384>>2],r=A[I+388>>2],c[C+32|0]=1,c[C+33|0]=0,c[C+34|0]=0,c[C+35|0]=0,c[C+36|0]=g,c[C+37|0]=g>>>8,c[C+38|0]=g>>>16,c[C+39|0]=g>>>24,c[C+40|0]=r,c[C+41|0]=r>>>8,c[C+42|0]=r>>>16,c[C+43|0]=r>>>24),e&&(A[e>>2]=_,A[e+4>>2]=l),v=0,t&&(c[0|t]=a))}W=I+400|0;break A}h2(),Q0()}return 0|v},Wf:function(){return 52},Xf:function(){return 17},Yf:G1,Zf:G0,_f:function(){return-18},$f:_1,ag:NC,bg:pg,cg:ze,dg:U1,eg:o2,fg:function(){return 1521},gg:_e,hg:Ca,ig:U1,jg:o2,kg:_e,lg:FC,mg:J2,ng:G0,og:G0,pg:J2,qg:oa,rg:function(){return 1454},sg:function(C,g,e){return 0|Ee(C|=0,g|=0,e|=0)},tg:function(C,g){return 0|fe(C|=0,g|=0)},ug:Ar,vg:Tt,wg:mr,xg:Kr,yg:function(C){return 0|Zr(C|=0)},zg:Dt,Ag:function(C,g,e,t){return 0|lr(C|=0,g|=0,e|=0,t|=0)},Bg:function(C,g,e){return 0|dr(C|=0,g|=0,e|=0)},Cg:FC,Dg:J2,Eg:G0,Fg:G0,Gg:J2,Hg:oa,Ig:function(C,g){C|=0;var e,t,r,o,I,a,_=0;return e=i[8+(_=g|=0)|0]|i[_+9|0]<<8|i[_+10|0]<<16|i[_+11|0]<<24,t=i[_+12|0]|i[_+13|0]<<8|i[_+14|0]<<16|i[_+15|0]<<24,r=i[_+16|0]|i[_+17|0]<<8|i[_+18|0]<<16|i[_+19|0]<<24,o=i[_+20|0]|i[_+21|0]<<8|i[_+22|0]<<16|i[_+23|0]<<24,I=i[0|_]|i[_+1|0]<<8|i[_+2|0]<<16|i[_+3|0]<<24,g=i[_+4|0]|i[_+5|0]<<8|i[_+6|0]<<16|i[_+7|0]<<24,a=i[_+28|0]|i[_+29|0]<<8|i[_+30|0]<<16|i[_+31|0]<<24,_=i[_+24|0]|i[_+25|0]<<8|i[_+26|0]<<16|i[_+27|0]<<24,c[C+24|0]=_,c[C+25|0]=_>>>8,c[C+26|0]=_>>>16,c[C+27|0]=_>>>24,c[C+28|0]=a,c[C+29|0]=a>>>8,c[C+30|0]=a>>>16,c[C+31|0]=a>>>24,c[C+16|0]=r,c[C+17|0]=r>>>8,c[C+18|0]=r>>>16,c[C+19|0]=r>>>24,c[C+20|0]=o,c[C+21|0]=o>>>8,c[C+22|0]=o>>>16,c[C+23|0]=o>>>24,c[C+8|0]=e,c[C+9|0]=e>>>8,c[C+10|0]=e>>>16,c[C+11|0]=e>>>24,c[C+12|0]=t,c[C+13|0]=t>>>8,c[C+14|0]=t>>>16,c[C+15|0]=t>>>24,c[0|C]=I,c[C+1|0]=I>>>8,c[C+2|0]=I>>>16,c[C+3|0]=I>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,0},Jg:function(C,g){C|=0;var e,t,r,o,I,a,_=0;return e=i[32+(_=g|=0)|0]|i[_+33|0]<<8|i[_+34|0]<<16|i[_+35|0]<<24,t=i[_+36|0]|i[_+37|0]<<8|i[_+38|0]<<16|i[_+39|0]<<24,r=i[_+40|0]|i[_+41|0]<<8|i[_+42|0]<<16|i[_+43|0]<<24,o=i[_+44|0]|i[_+45|0]<<8|i[_+46|0]<<16|i[_+47|0]<<24,I=i[_+48|0]|i[_+49|0]<<8|i[_+50|0]<<16|i[_+51|0]<<24,g=i[_+52|0]|i[_+53|0]<<8|i[_+54|0]<<16|i[_+55|0]<<24,a=i[_+60|0]|i[_+61|0]<<8|i[_+62|0]<<16|i[_+63|0]<<24,_=i[_+56|0]|i[_+57|0]<<8|i[_+58|0]<<16|i[_+59|0]<<24,c[C+24|0]=_,c[C+25|0]=_>>>8,c[C+26|0]=_>>>16,c[C+27|0]=_>>>24,c[C+28|0]=a,c[C+29|0]=a>>>8,c[C+30|0]=a>>>16,c[C+31|0]=a>>>24,c[C+16|0]=I,c[C+17|0]=I>>>8,c[C+18|0]=I>>>16,c[C+19|0]=I>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,c[C+8|0]=r,c[C+9|0]=r>>>8,c[C+10|0]=r>>>16,c[C+11|0]=r>>>24,c[C+12|0]=o,c[C+13|0]=o>>>8,c[C+14|0]=o>>>16,c[C+15|0]=o>>>24,c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,c[C+4|0]=t,c[C+5|0]=t>>>8,c[C+6|0]=t>>>16,c[C+7|0]=t>>>24,0},Kg:Zr,Lg:Dt,Mg:lr,Ng:dr,Og:Ee,Pg:fe,Qg:function(C,g){C|=0;var e,t=0,r=0,o=0,I=0,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0,q=0,V=0,$=0,K=0,J=0,z=0,_A=0,sA=0,nA=0,fA=0,uA=0,vA=0,wA=0,iA=0,hA=0,mA=0,HA=0,aA=0,EA=0,YA=0,qA=0,$A=0,g0=0,i0=0,u=0,d=0,H=0,FA=0,VA=0,c0=0,_0=0,I0=0,h0=0,D0=0,MA=0,O=0,rA=0,cA=0,XA=0,A0=0,s0=0,p0=0,f0=0,E0=0,w0=0,u0=0,k0=0,F0=0,N0=0,x0=0,L0=0,T0=0,j0=0,V0=0,W0=0,C2=0,e2=0,r2=0,i2=0,s2=0,k2=0,d2=0;return W=e=W-256|0,V0=-1,a1(g|=0)||ke(t=e+96|0,g)||cC(t)&&(V0=0,iA=A[e+172>>2],A[e+36>>2]=0-iA,b=A[e+168>>2],A[e+32>>2]=0-b,hA=A[e+164>>2],A[e+28>>2]=0-hA,M=A[e+160>>2],A[e+24>>2]=0-M,mA=A[e+156>>2],A[e+20>>2]=0-mA,x=A[e+152>>2],A[e+16>>2]=0-x,HA=A[e+148>>2],A[e+12>>2]=0-HA,q=A[e+144>>2],A[e+8>>2]=0-q,aA=A[e+140>>2],A[e+4>>2]=0-aA,o=A[e+136>>2],A[e>>2]=1-o,j1(e,e),g=w(V=A[e+4>>2],uA=V>>31,$=mA<<1,_0=$>>31),t=y,r=w(v=A[e>>2],K=v>>31,M,J=M>>31),t=y+t|0,t=(g=r+g|0)>>>0>>0?t+1|0:t,r=(I=w(z=A[e+8>>2],EA=z>>31,x,_A=x>>31))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(vA=A[e+12>>2],$A=vA>>31,u=HA<<1,I0=u>>31),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=w(YA=A[e+16>>2],d=YA>>31,q,sA=q>>31),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,F0=I=A[e+20>>2],p=w(I,h0=I>>31,H=aA<<1,D0=H>>31),r=y+g|0,r=(t=p+t|0)>>>0

>>0?r+1|0:r,N0=n=A[e+24>>2],g=(o=w(n,w0=n>>31,p=o+1|0,nA=p>>31))+t|0,t=y+r|0,t=g>>>0>>0?t+1|0:t,MA=A[e+28>>2],r=(o=w(D=M0(MA,19),g0=D>>31,FA=iA<<1,O=FA>>31))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,W0=A[e+32>>2],r=w(_=M0(W0,19),qA=_>>31,b,fA=b>>31),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,C2=A[e+36>>2],r=w(Q=M0(C2,19),wA=Q>>31,VA=hA<<1,rA=VA>>31),g=y+g|0,s=t=r+t|0,o=t>>>0>>0?g+1|0:g,g=w(x,_A,V,uA),t=y,a=w(v,K,mA,cA=mA>>31),r=y+t|0,r=(g=a+g|0)>>>0>>0?r+1|0:r,a=w(z,EA,HA,XA=HA>>31),t=y+r|0,t=(g=a+g|0)>>>0>>0?t+1|0:t,r=(a=w(q,sA,vA,$A))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(YA,d,aA,A0=aA>>31),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=w(p,nA,I,h0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,a=w(n=M0(n,19),c0=n>>31,iA,s0=iA>>31),r=y+g|0,r=(t=a+t|0)>>>0>>0?r+1|0:r,g=(a=w(b,fA,D,g0))+t|0,t=y+r|0,t=g>>>0>>0?t+1|0:t,r=(a=w(_,qA,hA,p0=hA>>31))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(Q,wA,M,J),g=y+g|0,x0=t=t+r|0,i0=t>>>0>>0?g+1|0:g,g=w(V,uA,u,I0),r=y,t=(a=w(v,K,x,_A))+g|0,g=y+r|0,g=t>>>0>>0?g+1|0:g,a=w(q,sA,z,EA),r=y+g|0,r=(t=a+t|0)>>>0>>0?r+1|0:r,g=(a=w(vA,$A,H,D0))+t|0,t=y+r|0,t=g>>>0>>0?t+1|0:t,r=(a=w(p,nA,YA,d))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(a=M0(I,19),f0=a>>31,FA,O),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=w(b,fA,n,c0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,I=w(D,g0,VA,rA),r=y+g|0,r=(t=I+t|0)>>>0>>0?r+1|0:r,g=(I=w(_,qA,M,J))+t|0,t=y+r|0,t=g>>>0>>0?t+1|0:t,r=(I=w(Q,wA,$,_0))+g|0,g=y+t|0,e2=r,r2=g=r>>>0>>0?g+1|0:g,i2=r=r+33554432|0,s2=g=r>>>0<33554432?g+1|0:g,r=(67108863&g)<<6|r>>>26,g=(g>>26)+i0|0,x0=I=r+x0|0,g=r>>>0>I>>>0?g+1|0:g,k2=I=I+16777216|0,g=(t=(r=I>>>0<16777216?g+1|0:g)>>25)+o|0,g=(r=(I=(33554431&r)<<7|I>>>25)+s|0)>>>0>>0?g+1|0:g,l=t=r+33554432|0,I=g=t>>>0<33554432?g+1|0:g,A[e+72>>2]=r-(-67108864&t),g=w(V,uA,H,D0),t=y,o=w(v,K,q,sA),r=y+t|0,r=(g=o+g|0)>>>0>>0?r+1|0:r,t=(o=w(p,nA,z,EA))+g|0,g=y+r|0,g=t>>>0>>0?g+1|0:g,r=w(o=M0(vA,19),E0=o>>31,FA,O),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=(s=w(i0=M0(YA,19),u0=i0>>31,b,fA))+t|0,t=y+g|0,t=r>>>0>>0?t+1|0:t,s=w(VA,rA,a,f0),g=y+t|0,g=(r=s+r|0)>>>0>>0?g+1|0:g,t=(s=w(M,J,n,c0))+r|0,r=y+g|0,r=t>>>0>>0?r+1|0:r,s=w(D,g0,$,_0),g=y+r|0,g=(t=s+t|0)>>>0>>0?g+1|0:g,r=w(_,qA,x,_A),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=(s=w(Q,wA,u,I0))+t|0,t=y+g|0,B=r,L0=r>>>0>>0?t+1|0:t,g=w(p,nA,V,uA),t=y,r=(s=w(v,K,aA,A0))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,s=t=M0(z,19),t=(h=w(t,k0=t>>31,iA,s0))+r|0,r=y+g|0,r=t>>>0>>0?r+1|0:r,h=w(b,fA,o,E0),g=y+r|0,g=(t=h+t|0)>>>0>>0?g+1|0:g,r=w(i0,u0,hA,p0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=(h=w(M,J,a,f0))+t|0,t=y+g|0,t=r>>>0>>0?t+1|0:t,h=w(n,c0,mA,cA),g=y+t|0,g=(r=h+r|0)>>>0>>0?g+1|0:g,t=(h=w(x,_A,D,g0))+r|0,r=y+g|0,r=t>>>0>>0?r+1|0:r,h=w(_,qA,HA,XA),g=y+r|0,g=(t=h+t|0)>>>0>>0?g+1|0:g,r=w(Q,wA,q,sA),g=y+g|0,T0=t=r+t|0,h=t>>>0>>0?g+1|0:g,g=w(g=M0(V,19),g>>31,FA,O),t=y,r=w(v,K,p,nA),t=y+t|0,t=(g=r+g|0)>>>0>>0?t+1|0:t,r=(s=w(b,fA,s,k0))+g|0,g=y+t|0,t=(o=w(o,E0,VA,rA))+r|0,r=y+(r>>>0>>0?g+1|0:g)|0,r=t>>>0>>0?r+1|0:r,o=w(M,J,i0,u0),g=y+r|0,g=(t=o+t|0)>>>0>>0?g+1|0:g,r=w($,_0,a,f0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=(o=w(x,_A,n,c0))+t|0,t=y+g|0,t=r>>>0>>0?t+1|0:t,o=w(D,g0,u,I0),g=y+t|0,g=(r=o+r|0)>>>0>>0?g+1|0:g,t=(o=w(_,qA,q,sA))+r|0,r=y+g|0,r=t>>>0>>0?r+1|0:r,o=w(Q,wA,H,D0),g=y+r|0,s=t=o+t|0,E0=g=t>>>0>>0?g+1|0:g,k0=t=t+33554432|0,d2=g=t>>>0<33554432?g+1|0:g,r=g>>26,g=(67108863&g)<<6|t>>>26,t=r+h|0,h=o=g+T0|0,g=t=g>>>0>o>>>0?t+1|0:t,T0=o=o+16777216|0,o=(33554431&(g=o>>>0<16777216?g+1|0:g))<<7|o>>>25,g=(g>>25)+L0|0,g=(t=o+B|0)>>>0>>0?g+1|0:g,r=t,L0=t=t+33554432|0,o=g=t>>>0<33554432?g+1|0:g,A[e+56>>2]=r-(-67108864&t),g=w(M,J,V,uA),r=y,t=(B=w(v,K,hA,p0))+g|0,g=y+r|0,g=t>>>0>>0?g+1|0:g,r=w(z,EA,mA,cA),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=w(x,_A,vA,$A),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,B=w(YA,d,HA,XA),r=y+g|0,r=(t=B+t|0)>>>0>>0?r+1|0:r,g=(B=w(q,sA,F0,h0))+t|0,t=y+r|0,t=g>>>0>>0?t+1|0:t,r=(B=w(aA,A0,N0,w0))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(MA,j0=MA>>31,p,nA),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=w(_,qA,iA,s0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,B=(r=t)+(t=w(Q,wA,b,fA))|0,r=y+g|0,t=(g=I>>26)+(t=t>>>0>B>>>0?r+1|0:r)|0,l=r=(I=(67108863&I)<<6|l>>>26)+B|0,g=t=r>>>0>>0?t+1|0:t,B=r=r+16777216|0,I=g=r>>>0<16777216?g+1|0:g,A[e+76>>2]=l-(-33554432&r),g=w(q,sA,V,uA),t=y,l=w(v,K,HA,XA),r=y+t|0,r=(g=l+g|0)>>>0>>0?r+1|0:r,l=w(z,EA,aA,A0),t=y+r|0,t=(g=l+g|0)>>>0>>0?t+1|0:t,r=(l=w(p,nA,vA,$A))+g|0,g=y+t|0,g=r>>>0>>0?g+1|0:g,t=r,r=w(i0,u0,iA,s0),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=w(b,fA,a,f0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,t=(n=w(n,c0,hA,p0))+t|0,r=y+g|0,g=(D=w(M,J,D,g0))+t|0,t=y+(t>>>0>>0?r+1|0:r)|0,r=(_=w(_,qA,mA,cA))+g|0,g=y+(g>>>0>>0?t+1|0:t)|0,g=r>>>0<_>>>0?g+1|0:g,t=r,r=w(Q,wA,x,_A),g=y+g|0,l=t=t+r|0,g=(g=t>>>0>>0?g+1|0:g)+(t=o>>26)|0,_=o=l+(r=(67108863&o)<<6|L0>>>26)|0,g=r>>>0>o>>>0?g+1|0:g,D=t=o+16777216|0,o=r=t>>>0<16777216?g+1|0:g,A[e+60>>2]=_-(-33554432&t),g=w(V,uA,VA,rA),r=y,t=(_=w(v,K,b,fA))+g|0,g=y+r|0,g=t>>>0<_>>>0?g+1|0:g,r=w(M,J,z,EA),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,_=w(vA,$A,$,_0),r=y+g|0,r=(t=_+t|0)>>>0<_>>>0?r+1|0:r,g=(_=w(x,_A,YA,d))+t|0,t=y+r|0,t=g>>>0<_>>>0?t+1|0:t,r=(_=w(u,I0,F0,h0))+g|0,g=y+t|0,g=r>>>0<_>>>0?g+1|0:g,t=r,r=w(q,sA,N0,w0),g=y+g|0,g=(t=t+r|0)>>>0>>0?g+1|0:g,r=t,t=w(MA,j0,H,D0),g=y+g|0,g=t>>>0>(r=r+t|0)>>>0?g+1|0:g,_=t=W0,t=($=w(t,n=t>>31,p,nA))+r|0,r=y+g|0,g=(Q=w(Q,wA,FA,O))+t|0,t=y+(t>>>0<$>>>0?r+1|0:r)|0,r=g>>>0>>0?t+1|0:t,t=g,g=(g=I>>25)+r|0,g=(t=t+(I=(33554431&I)<<7|B>>>25)|0)>>>0>>0?g+1|0:g,r=t,Q=t=t+33554432|0,I=g=t>>>0<33554432?g+1|0:g,A[e+80>>2]=r-(-67108864&t),t=o>>25,r=(o=(33554431&o)<<7|D>>>25)+(e2-(g=-67108864&i2)|0)|0,g=t+(r2-((g>>>0>e2>>>0)+s2|0)|0)|0,g=r>>>0>>0?g+1|0:g,g=((67108863&(g=(t=r+33554432|0)>>>0<33554432?g+1|0:g))<<6|t>>>26)+($=x0-(-33554432&k2)|0)|0,A[e+68>>2]=g,A[e+64>>2]=r-(-67108864&t),g=w(b,fA,V,uA),r=y,t=(o=w(v,K,iA,s0))+g|0,g=y+r|0,g=t>>>0>>0?g+1|0:g,r=(o=w(z,EA,hA,p0))+t|0,t=y+g|0,t=r>>>0>>0?t+1|0:t,g=(o=w(M,J,vA,$A))+r|0,r=y+t|0,r=g>>>0>>0?r+1|0:r,t=(o=w(YA,d,mA,cA))+g|0,g=y+r|0,g=t>>>0>>0?g+1|0:g,r=w(x,_A,F0,h0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=w(HA,XA,N0,w0),g=y+g|0,g=(t=r+t|0)>>>0>>0?g+1|0:g,r=(o=w(q,sA,MA,j0))+t|0,t=y+g|0,t=r>>>0>>0?t+1|0:t,o=(g=w(_,n,aA,A0))+r|0,r=y+t|0,r=g>>>0>o>>>0?r+1|0:r,t=o,o=w(g=C2,g>>31,p,nA),g=y+r|0,r=t=t+o|0,g=(g=t>>>0>>0?g+1|0:g)+(t=I>>26)|0,g=(r=r+(I=(67108863&I)<<6|Q>>>26)|0)>>>0>>0?g+1|0:g,g=(t=r+16777216|0)>>>0<16777216?g+1|0:g,A[e+84>>2]=r-(-33554432&t),I=h-(-33554432&T0)|0,o=s-(r=-67108864&k0)|0,v=E0-((r>>>0>s>>>0)+d2|0)|0,g=w((33554431&(r=g))<<7|t>>>25,g>>=25,19,0),t=y+v|0,g=g>>>0>(r=g+o|0)>>>0?t+1|0:t,g=((67108863&(g=(t=r+33554432|0)>>>0<33554432?g+1|0:g))<<6|t>>>26)+I|0,A[e+52>>2]=g,A[e+48>>2]=r-(-67108864&t),w2(C,e+48|0)),W=e+256|0,0|V0},Rg:function(C,g){C|=0;var e,t=0;return W=e=W+-64|0,Y0(e,g|=0,32,0),c[0|e]=248&i[0|e],c[e+31|0]=63&i[e+31|0]|64,g=A[e+20>>2],t=A[e+16>>2],c[C+16|0]=t,c[C+17|0]=t>>>8,c[C+18|0]=t>>>16,c[C+19|0]=t>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[e+12>>2],t=A[e+8>>2],c[C+8|0]=t,c[C+9|0]=t>>>8,c[C+10|0]=t>>>16,c[C+11|0]=t>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[e+4>>2],t=A[e>>2],c[0|C]=t,c[C+1|0]=t>>>8,c[C+2|0]=t>>>16,c[C+3|0]=t>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,g=A[e+28>>2],t=A[e+24>>2],c[C+24|0]=t,c[C+25|0]=t>>>8,c[C+26|0]=t>>>16,c[C+27|0]=t>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,y0(e,64),W=e- -64|0,0},Sg:Kr,Tg:Tt,Ug:mr,Vg:Ar,Wg:G0,Xg:U1,Yg:z2,Zg:G0,_g:Ia,$g:z2,ah:function(C,g,e,t,r){return 0|kC(C|=0,g|=0,e|=0,t|=0,r|=0)},bh:function(C,g,e,t,r,o,I,a){return 0|Qg(C|=0,g|=0,(C=0)|(e|=0),t|=0,r|=0,C|(o|=0),I|=0,a|=0)},ch:function(C,g,e,t,r,o){return 0|Ke(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)},dh:function(C,g,e,t,r){return 0|rg(C|=0,g|=0,e|=0,t|=0,r|=0)},eh:function(C,g,e,t,r,o,I){return 0|hg(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},fh:function(C,g,e,t,r,o){return 0|xe(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)},gh:N2,hh:N2,ih:G0,jh:G1,kh:z2,lh:function(){return 1538},mh:Ur,nh:Mr,oh:N2,ph:G0,qh:U1,rh:z2,sh:function(C,g,e,t,r){return 0|kt(C|=0,g|=0,e|=0,t|=0,r|=0)},th:function(C,g,e,t,r,o,I,a){return 0|bC(C|=0,g|=0,(C=0)|(e|=0),t|=0,r|=0,C|(o|=0),I|=0,a|=0)},uh:function(C,g,e,t,r,o){return 0|Je(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0)},vh:N2,wh:Ur,xh:function(C,g,e,t,r,o,I,a){var _;return C|=0,g|=0,e|=0,t|=0,o|=0,I|=0,W=_=W-32|0,S1(_,r|=0,a|=0,0),C=bC(a=C,g,(C=0)|e,t,r+16|0,C|o,I,_),y0(_,32),W=_+32|0,0|C},yh:Mr,zh:G0,Ah:G1,Bh:z2,Ch:N2,Dh:o2,Eh:G0,Fh:J2,Gh:O1,Hh:Xg,Ih:zr,Jh:function(){return 1089},Kh:function(){var C,g;return W=C=W-16|0,c[C+15|0]=0,g=0|_g(36800,C+15|0,0),W=C+16|0,0|g},Lh:Hr,Mh:function(C){var g,e=0,t=0;if(W=g=W-16|0,(C|=0)>>>0>=2){for(e=(0-C>>>0)%(C>>>0)|0;c[g+15|0]=0,e>>>0>(t=0|_g(36800,g+15|0,0))>>>0;);e=(t>>>0)%(C>>>0)|0}return W=g+16|0,0|e},Nh:X2,Oh:function(C,g,e){rg(C|=0,g|=0,0,34336,e|=0)},Ph:G0,Qh:function(){var C=0,g=0;return(C=A[9539])&&(C=A[C+20>>2])&&(g=0|G2[0|C]()),0|g},Rh:function(C,g,e){C|=0,g|=0;var t,r=0,o=0,I=0;if(W=t=W-16|0,e|=0)xg(1346,1192,198,1092),Q0();else{if(g|e)for(;c[t+15|0]=0,o=C+r|0,I=0|_g(36800,t+15|0,0),c[0|o]=I,(0|g)!=(0|(r=r+1|0)););W=t+16|0}},Sh:function(C,g,e,t){C|=0,e|=0;var r=0,o=0,I=0;if(!((t|=0)>>>0>2147483646|t<<1>>>0>=(g|=0)>>>0)){if(g=0,t){for(;r=(g<<1)+C|0,o=15&(I=i[g+e|0]),c[r+1|0]=22272+((o<<8)+(o+65526&55552)|0)>>>8,o=r,r=I>>>4|0,c[0|o]=87+((r+65526>>>8&217)+r|0),(0|t)!=(0|(g=g+1|0)););g=t<<1}else g=0;return c[g+C|0]=0,0|C}h2(),Q0()},Th:function(C,g,e,t,r,o,I){C|=0,g|=0,e|=0,r|=0,o|=0,I|=0;var a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0;A:{g:{C:{e:{t:{o:{i:{r:{c:{if(t|=0){if(r)break c;for(_=1,r=0;;){if(!(255&((Q=(65526+(s=(223&(n=i[e+a|0]))-55&255)^s+65520)>>>8|0)|(p=65526+(n^=48)>>>8|0))))break i;if(g>>>0<=B>>>0)break r;if(s=s&Q|n&p,255&h?(c[C+B|0]=r|s,B=B+1|0):r=s<<4,h=~h,(0|(a=a+1|0))==(0|t))break}a=t;break i}if(C=0,!I)break A;break C}for(;;){c:{a:{_:{I:{s:{if(!(255&((n=(65526+(_=(223&(s=i[e+a|0]))-55&255)^_+65520)>>>8|0)|(p=65526+(Q=48^s)>>>8|0)))){if(255&h)break o;if(_=0,!l0(r,s))break e;if((a=h=a+1|0)>>>0>>0)break s;break e}if(g>>>0<=B>>>0)break r;if(_=_&n|Q&p,!(255&h))break I;c[C+B|0]=_|l,B=B+1|0;break c}for(;;){if(!(255&((Q=(65526+(n=(223&(s=i[e+a|0]))-55&255)^n+65520)>>>8|0)|(l=65526+(p=48^s)>>>8|0)))){if(!l0(r,s))break e;if((a=a+1|0)>>>0>>0)continue;break _}break}if(g>>>0<=B>>>0)break a;_=n&Q|p&l}l=_<<4,h=0;break c}a=t>>>0>h>>>0?t:h;break e}h=0;break r}if(h=~h,_=1,!((a=a+1|0)>>>0>>0))break}break i}A[9404]=68,_=0}if(!(255&h))break t}A[9404]=28,_=-1,a=a-1|0,B=0;break e}B=_?B:0,_=_-1|0}if(!I){if((0|t)!=(0|a))break g;C=_;break A}}A[I>>2]=e+a,C=_;break A}A[9404]=28,C=-1}return o&&(A[o>>2]=B),0|C},Uh:function(C,g){C|=0;var e=0;return(-7&(g|=0))!=1&&(h2(),Q0()),1+((3&(e=(e=C)+M0(C=(C>>>0)/3|0,-3)|0)?2&g?e+1|0:4:0)+(C<<2)|0)|0},Vh:DC,Wh:hC,Xh:function(){var C=0;return A[9537]?C=1:(Hr(),X2(38128,16),A[9537]=1,C=0),0|C},Yh:function(C,g,e,t,r){C|=0,g|=0,e|=0,r|=0;var o,I=0,a=0,_=0;W=o=W-16|0;A:{if(t|=0){if((I=t-1|0)&t?(a=~e,I=I-((e>>>0)%(t>>>0)|0)|0):I&=a=~e,I>>>0>=a>>>0)break A;if((e=e+I|0)>>>0>=r>>>0)g=-1;else for(C&&(A[C>>2]=e+1),C=g+e|0,g=0,c[o+15|0]=0,e=0;a=r=C-e|0,_=i[0|r]&i[o+15|0],r=(e^I)-1>>>24|0,c[0|a]=_|128&r,c[o+15|0]=r|i[o+15|0],(0|t)!=(0|(e=e+1|0)););}else g=-1;return W=o+16|0,0|g}h2(),Q0()},Zh:function(C,g,e,t){C|=0,g|=0,e|=0,t|=0;var r,o=0,I=0,a=0,_=0,s=0;if(A[12+(r=W-16|0)>>2]=0,t-1>>>0>>0){for(s=(o=e-1|0)+g|0,e=0,g=0;_=((128^(I=i[s-e|0]))-1&A[r+12>>2]-1&a-1)>>>8&1,A[r+12>>2]=A[r+12>>2]|0-_&e,g|=_,a|=I,(0|t)!=(0|(e=e+1|0)););A[C>>2]=o-A[r+12>>2],C=(255&g)-1|0}else C=-1;return 0|C},_h:function(){return 1547},$h:function(){return 26},ai:pg,bi:_1,ci:k,di:Re,ei:function(C,g,e){C|=0;var t,r=0;return W=t=W-32|0,r=-1,E1(t,e|=0,g|=0)||(r=g1(C,35584,t,0)),W=t+32|0,0|r},fi:Fr,gi:function(C,g,e,t,r,o,I,a){var _,s;return C|=0,g|=0,e|=0,o|=0,s=t|=0,t=r|=0,W=_=W+-64|0,E1(_+32|0,a|=0,I|=0)?r=-1:(r=-1,g1(_,35584,_+32|0,0)||(r=S(C,g,e,s,t,o,_),y0(_,32))),W=_- -64|0,0|r},hi:function(C,g,e,t,r,o){return C|=0,g|=0,r|=0,o|=0,!(t|=0)&(e|=0)>>>0>=4294967280|t&&(h2(),Q0()),0|S(C+16|0,C,g,e,t,r,o)},ii:function(C,g,e,t,r,o,I){return 0|Br(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},ji:Nr,ki:function(C,g,e,t,r,o,I,a){var _,s;return C|=0,g|=0,e|=0,o|=0,s=t|=0,t=r|=0,W=_=W+-64|0,E1(_+32|0,a|=0,I|=0)?r=-1:(r=-1,g1(_,35584,_+32|0,0)||(r=QA(C,g,e,s,t,o,_),y0(_,32))),W=_- -64|0,0|r},li:fr,mi:function(C,g,e,t,r,o,I){return 0|cr(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0)},ni:G0,oi:G0,pi:G0,qi:G0,ri:G1,si:o2,ti:X1,ui:function(C,g,e,t,r){C|=0,g|=0,r|=0;var o,I,a,_,s=0,h=0;return s=e|=0,e=t|=0,_=0|s,s=t=W,W=o=t-512&-64,t=-1,Re(I=o- -64|0,a=o+32|0)||(ng(t=o+128|0,0,0,24),t1(t,I,32,0),t1(t,r,32,0),Eg(t,h=o+96|0,24),t=Br(C+32|0,g,_,e,h,r,a),g=A[o+92>>2],e=A[o+88>>2],c[C+24|0]=e,c[C+25|0]=e>>>8,c[C+26|0]=e>>>16,c[C+27|0]=e>>>24,c[C+28|0]=g,c[C+29|0]=g>>>8,c[C+30|0]=g>>>16,c[C+31|0]=g>>>24,g=A[o+84>>2],e=A[o+80>>2],c[C+16|0]=e,c[C+17|0]=e>>>8,c[C+18|0]=e>>>16,c[C+19|0]=e>>>24,c[C+20|0]=g,c[C+21|0]=g>>>8,c[C+22|0]=g>>>16,c[C+23|0]=g>>>24,g=A[o+76>>2],e=A[o+72>>2],c[C+8|0]=e,c[C+9|0]=e>>>8,c[C+10|0]=e>>>16,c[C+11|0]=e>>>24,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,g=A[o+68>>2],e=A[o+64>>2],c[0|C]=e,c[C+1|0]=e>>>8,c[C+2|0]=e>>>16,c[C+3|0]=e>>>24,c[C+4|0]=g,c[C+5|0]=g>>>8,c[C+6|0]=g>>>16,c[C+7|0]=g>>>24,y0(a,32),y0(I,32),y0(h,24)),W=s,0|t},vi:function(C,g,e,t,r,o){C|=0,g|=0,r|=0,o|=0;var I,a,_=0;return a=_=W,W=I=_-448&-64,_=-1,!(t|=0)&(e|=0)>>>0>=48|t&&(ng(_=I- -64|0,0,0,24),t1(_,g,32,0),t1(_,r,32,0),Eg(_,r=I+32|0,24),_=cr(C,g+32|0,e-32|0,t-(e>>>0<32)|0,r,g,o)),W=a,0|_},wi:ca,xi:function(C){var g,e=0;return W=g=W-160|0,O0(C|=0)&&(a1(C)||T1(g,C)||Bg(g)&&(e=!!(0|cC(g)))),W=g+160|0,0|e},yi:function(C,g,e){C|=0,e|=0;var t,r,o=0;return W=t=W-800|0,o=-1,T1(r=t+640|0,g|=0)||Bg(r)&&(T1(g=t+480|0,e)||Bg(g)&&(D2(t,g),b2(g=t+160|0,r,t),Ge(e=t+320|0,g),eg(C,e),o=0)),W=t+800|0,0|o},zi:function(C,g,e){C|=0,e|=0;var t,r,o=0;return W=t=W-800|0,o=-1,T1(r=t+640|0,g|=0)||Bg(r)&&(T1(g=t+480|0,e)||Bg(g)&&(D2(t,g),qg(g=t+160|0,r,t),Ge(e=t+320|0,g),eg(C,e),o=0)),W=t+800|0,0|o},Ai:function(C,g){return XC(C|=0,g|=0),0},Bi:function(C){var g;C|=0,W=g=W-32|0,X2(g,32),XC(C,g),W=g+32|0},Ci:ur,Di:ne,Ei:le,Fi:we,Gi:Qe,Hi:De,Ii:Ie,Ji:Tr,Ki:G0,Li:J2,Mi:G0,Ni:J2,Oi:G0,Pi:function(C){var g;return W=g=W-160|0,C=gg(g,C|=0),W=g+160|0,0|!C},Qi:function(C,g,e){C|=0,e|=0;var t,r,o=0;return W=t=W-800|0,o=-1,gg(r=t+640|0,g|=0)||gg(g=t+480|0,e)||(D2(t,g),b2(g=t+160|0,r,t),Ge(e=t+320|0,g),Ig(C,e),o=0),W=t+800|0,0|o},Ri:function(C,g,e){C|=0,e|=0;var t,r,o=0;return W=t=W-800|0,o=-1,gg(r=t+640|0,g|=0)||gg(g=t+480|0,e)||(D2(t,g),qg(g=t+160|0,r,t),Ge(e=t+320|0,g),Ig(C,e),o=0),W=t+800|0,0|o},Si:function(C,g){return er(C|=0,g|=0),0},Ti:function(C){var g;C|=0,W=g=W+-64|0,X2(g,64),er(C,g),W=g- -64|0},Ui:function(C){ur(C|=0)},Vi:function(C,g){return 0|ne(C|=0,g|=0)},Wi:function(C,g){le(C|=0,g|=0)},Xi:function(C,g){we(C|=0,g|=0)},Yi:function(C,g,e){Qe(C|=0,g|=0,e|=0)},Zi:function(C,g,e){Ie(C|=0,g|=0,e|=0)},_i:Tr,$i:function(C,g){De(C|=0,g|=0)},aj:G0,bj:J2,cj:J2,dj:G0,ej:function(C,g,e,t,r,o,I,a,_,s){return 0|Qr(C|=0,g|=0,e|=0,t|=0,r|=0,o|=0,I|=0,a|=0,_|=0,s|=0)},fj:o2,gj:z2,hj:_1,ij:z2,jj:G0,kj:function(){return 102},lj:function(){return 1575},mj:function(){return 32768},nj:z2,oj:ea,pj:z2,qj:function(){return 524288},rj:ea,sj:Aa,tj:bt,uj:function(C,g,e,t,r,o,I,a,_,s){var h,n,B;g|=0,e|=0,t|=0,r|=0,o|=0,I|=0,_|=0,s|=0,n=0|(a|=0),W=a=W-16|0,B=g|=0,h=$0(C|=0,0,g),C=0|r;A:if((0|(r=e|o))==1|r>>>0>1)A[9404]=22,C=-1;else if(!e&g>>>0>=16|e){if(nC(n,_,s,a+12|0,a+8|0,a+4|0),(0|t)==(0|h)){A[9404]=28,C=-1;break A}r=C,C=31&(g=A[a+12>>2]),(63&g)>>>0>=32?(g=1<>>32-C,C=Qr(t,r,I,32,e,g,A[a+4>>2],A[a+8>>2],h,B)}else A[9404]=28,C=-1;return W=a+16|0,0|C},vj:function(C,g,e,t,r,o,I){g|=0,e|=0,t|=0,o|=0,I|=0;var a,_,s,h=0,n=0,B=0,Q=0,p=0,l=0,v=0;h=r|=0,h|=r=0,W=a=W-128|0,_=$0(C|=0,0,102),p=22,s=e|r;A:{{if(!t){nC(h,o,I,a+16|0,a+12|0,a+8|0),X2(n=a+96|0,32),p=28,e=a+32|0,o=A[a+16>>2],I=w(C=A[a+12>>2],0,t=A[a+8>>2],0);g:if(!(!(h=y)&I>>>0>1073741823|h|o>>>0>63)&&(c[0|e]=36,c[e+1|0]=55,c[e+2|0]=36,c[e+4|0]=i[1024+(63&t)|0],c[e+3|0]=i[o+1024|0],c[e+8|0]=i[1024+(t>>>24&63)|0],c[e+7|0]=i[1024+(t>>>18&63)|0],c[e+6|0]=i[1024+(t>>>12&63)|0],c[e+5|0]=i[1024+(t>>>6&63)|0],(t=e+9|0)&&(0|t)!=(0|(B=e+58|0))&&(c[0|t]=i[1024+(63&C)|0],(0|(t=B-t|0))!=1&&(c[e+10|0]=i[1024+(C>>>6&63)|0],(0|t)!=2&&(c[e+11|0]=i[1024+(C>>>12&63)|0],(0|t)!=3&&(c[e+12|0]=i[1024+(C>>>18&63)|0],(0|t)!=4&&(c[e+13|0]=i[1024+(C>>>24&63)|0],o=e+14|0))))))){for(h=B-o|0,C=0;;){if(t=o,!(C>>>0>=32)){if(o=i[C+n|0],(l=(I=C+1|0)>>>0>=32)?Q=0:(o=i[I+n|0]<<8|o,(I=C+2|0)>>>0>=32?Q=0:(o=i[I+n|0]<<16|o,Q=1,I=C+3|0)),C=I,!h||(c[0|t]=i[1024+(63&o)|0],(0|h)==1))break g;if(c[t+1|0]=i[1024+(o>>>6&63)|0],v=t+h|0,I=t+2|0,!l){if((0|h)==2)break g;if(c[t+2|0]=i[1024+(o>>>12&63)|0],I=t+3|0,Q){if((0|h)==3)break g;c[t+3|0]=i[1024+(o>>>18|0)|0],I=t+4|0}}if(h=v-(o=I)|0,o)continue;break g}break}t>>>0>=B>>>0||(c[0|t]=0,r=e)}if(r&&(wt(C=a+20|0),g=ve(C,g,s,e,_),Ye(C),g)){C=0;break A}}A[9404]=p}C=-1}return W=a+128|0,0|C},wj:function(C,g,e,t){g|=0,t|=0;var r,o,I=0;r=C|=0,o=e|=0,e=0,W=t=W-128|0;A:{g:{for(;;){if(!i[e+r|0]){C=e;break g}if(!i[r+(C=e+1|0)|0]||!i[r+(C=e+2|0)|0])break g;if((0|(e=e+3|0))==102)break}e=-1;break A}e=-1,(0|C)==101&&(wt(I=t+4|0)||($0(C=t+16|0,0,102),g=ve(I,g,o,r,C),Ye(I),g&&(e=p2(C,r,102),y0(C,102))))}return W=t+128|0,0|e},xj:function(C,g,e,t){var r,o;o=C|=0,W=r=W-32|0,nC(g|=0,e|=0,t|=0,r+28|0,r+20|0,r+12|0),C=0;A:{g:{C:{for(;;){if(i[C+o|0]){if(i[o+(g=C+1|0)|0]&&i[o+(g=C+2|0)|0]){if((0|(C=C+3|0))!=102)continue;break C}}else g=C;break}if((0|g)==101){if(e=r+8|0,t=r+16|0,C=0,i[0|o]!=36|i[o+1|0]!=55|i[o+2|0]!=36||(g=yg(i[o+3|0]),A[r+24>>2]=g?g-1024|0:0,g&&(g=me(e,o+4|0))&&(C=me(t,g))),C)break g;A[9404]=28,C=-1;break A}}A[9404]=28,C=-1;break A}C=1,A[r+28>>2]!=A[r+24>>2]|A[r+12>>2]!=A[r+8>>2]||(C=A[r+20>>2]!=A[r+16>>2])}return W=r+32|0,0|C},yj:function(C,g,e){return 0|be(C|=0,g|=0,e|=0,1)},zj:function(C,g,e){return 0|be(C|=0,g|=0,e|=0,0)},Aj:function(C,g){return 0|Fe(C|=0,g|=0,1)},Bj:function(C,g){return 0|Fe(C|=0,g|=0,0)},Cj:G0,Dj:G0,Ej:function(C,g,e){C|=0,g|=0;var t,r=0;return W=t=W-320|0,r=-1,gg(t,e|=0)||(c[0|C]=i[0|g],c[C+1|0]=i[g+1|0],c[C+2|0]=i[g+2|0],c[C+3|0]=i[g+3|0],c[C+4|0]=i[g+4|0],c[C+5|0]=i[g+5|0],c[C+6|0]=i[g+6|0],c[C+7|0]=i[g+7|0],c[C+8|0]=i[g+8|0],c[C+9|0]=i[g+9|0],c[C+10|0]=i[g+10|0],c[C+11|0]=i[g+11|0],c[C+12|0]=i[g+12|0],c[C+13|0]=i[g+13|0],c[C+14|0]=i[g+14|0],c[C+15|0]=i[g+15|0],c[C+16|0]=i[g+16|0],c[C+17|0]=i[g+17|0],c[C+18|0]=i[g+18|0],c[C+19|0]=i[g+19|0],c[C+20|0]=i[g+20|0],c[C+21|0]=i[g+21|0],c[C+22|0]=i[g+22|0],c[C+23|0]=i[g+23|0],c[C+24|0]=i[g+24|0],c[C+25|0]=i[g+25|0],c[C+26|0]=i[g+26|0],c[C+27|0]=i[g+27|0],c[C+28|0]=i[g+28|0],c[C+29|0]=i[g+29|0],c[C+30|0]=i[g+30|0],c[C+31|0]=127&i[g+31|0],ge(g=t+160|0,C,t),Ig(C,g),r=X0(C,32)?-1:0),W=t+320|0,0|r},Fj:function(C,g){var e;return g|=0,W=e=W-160|0,c[0|(C|=0)]=i[0|g],c[C+1|0]=i[g+1|0],c[C+2|0]=i[g+2|0],c[C+3|0]=i[g+3|0],c[C+4|0]=i[g+4|0],c[C+5|0]=i[g+5|0],c[C+6|0]=i[g+6|0],c[C+7|0]=i[g+7|0],c[C+8|0]=i[g+8|0],c[C+9|0]=i[g+9|0],c[C+10|0]=i[g+10|0],c[C+11|0]=i[g+11|0],c[C+12|0]=i[g+12|0],c[C+13|0]=i[g+13|0],c[C+14|0]=i[g+14|0],c[C+15|0]=i[g+15|0],c[C+16|0]=i[g+16|0],c[C+17|0]=i[g+17|0],c[C+18|0]=i[g+18|0],c[C+19|0]=i[g+19|0],c[C+20|0]=i[g+20|0],c[C+21|0]=i[g+21|0],c[C+22|0]=i[g+22|0],c[C+23|0]=i[g+23|0],c[C+24|0]=i[g+24|0],c[C+25|0]=i[g+25|0],c[C+26|0]=i[g+26|0],c[C+27|0]=i[g+27|0],c[C+28|0]=i[g+28|0],c[C+29|0]=i[g+29|0],c[C+30|0]=i[g+30|0],c[C+31|0]=127&i[g+31|0],Cg(e,C),Ig(C,e),C=X0(C,32),W=e+160|0,0|(C?-1:0)},Gj:G0,Hj:G0,Ij:Fr,Jj:function(C,g,e,t,r,o){return C|=0,g|=0,r|=0,o|=0,!(t|=0)&(e|=0)>>>0>=4294967280|t&&(h2(),Q0()),S(C+16|0,C,g,e,t,r,o),0},Kj:Nr,Lj:fr,Mj:G0,Nj:G1,Oj:o2,Pj:X1,Qj:o2,Rj:o2,Sj:function(C,g,e,t,r){C|=0,g|=0,e|=0,t|=0;var o,I,a=0,_=0,s=0,h=0,n=0,B=0,Q=0,p=0,l=0,v=0,D=0,b=0,M=0,x=0;if(D=1886610805^(a=i[0|(r|=0)]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24),v=1936682341^(_=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24),a^=1852142177,s=1819895653^_,b=1852075907^(_=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24),M=1685025377^(r=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24),h=2037671283^_,_=1952801890^r,p=e,(0|(I=(e+g|0)-(o=7&e)|0))!=(0|g))for(;e=(B=_^(x=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24))+s|0,h=t=a+(r=h^(Q=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))|0,n=e=t>>>0>>0?e+1|0:e,a=t,t=e,e=v+M|0,e=(_=D+b|0)>>>0>>0?e+1|0:e,l=(s=G(b,M,13)^_)+a|0,t=(a=y^e)+t|0,a=G(s,a,17)^l,D=G(a,t=(s=s>>>0>l>>>0?t+1|0:t)^y,13),v=y,B=G(r,B,16),r=n^y,B^=h,n=G(_,e,32),e=y+r|0,e=(h=t)+(t=(_=B+n|0)>>>0>>0?e+1|0:e)|0,n=e=(h=a+_|0)>>>0<_>>>0?e+1|0:e,D=G(a=h^D,e^=v,17),v=y,B=G(B,r,21),r=t^y,B^=_,_=G(l,s,32),t=y+r|0,e=(_=(s=B+_|0)>>>0<_>>>0?t+1|0:t)+e|0,b=(a=a+s|0)^D,t=e=a>>>0>>0?e+1|0:e,M=e^v,e=G(B,r,16),B=_^=y,l=G(e^=s,_,21),s=y,n=(_=G(h,n,32))+e|0,e=y+B|0,h=n^l,_=(e=_>>>0>n>>>0?e+1|0:e)^s,a=G(a,t,32),s=y,D=Q^n,v=e^x,(0|I)!=(0|(g=g+8|0)););switch(Q=0,r=p<<24,o-1|0){case 6:r|=i[g+6|0]<<16;case 5:r|=i[g+5|0]<<8;case 4:r|=i[g+4|0];case 3:Q|=(e=i[g+3|0])<<24,r|=t=e>>>8|0;case 2:Q|=(t=i[g+2|0])<<16,r|=e=t>>>16|0;case 1:Q|=(e=i[g+1|0])<<8,r|=t=e>>>24|0;case 0:Q=i[0|g]|Q}return l=r,g=r^_,t=G(r=h^Q,g,16),g=g+s|0,n=g=(h=r+a|0)>>>0>>0?g+1|0:g,p=G(r=t^h,g^=e=y,21),_=y,e=v+M|0,t=e=(a=D+b|0)>>>0>>0?e+1|0:e,s=r,r=G(a,e,32),e=y+g|0,g=_,_=e=r>>>0>(s=s+r|0)>>>0?e+1|0:e,D=G(r=s^p,g^=e,16),v=y,e=(a=B=G(b,M,13)^a)+h|0,t=(h=y^t)+n|0,n=r,r=G(e,t=e>>>0>>0?t+1|0:t,32),g=y+g|0,x=r=(a=r>>>0>(p=n+r|0)>>>0?g+1|0:g)^v,n=D^=p,v=G(B,h,17)^e,e=(B=y^t)+_|0,g=e=(t=s=(g=v)+s|0)>>>0>>0?e+1|0:e,_=G(t,e,32),e=y+r|0,s=(h=_+n|0)^Q,l^=n=_>>>0>h>>>0?e+1|0:e,r=G(v,B,13)^t,t=G(r,g^=y,17),g=g+a|0,r=t^(_=r+p|0),t=g=_>>>0

>>0?g+1|0:g,e=(g^=e=y)+l|0,e=r>>>0>(s=r+s|0)>>>0?e+1|0:e,r=G(r,g,13)^s,a=e,p=G(r,g=e^y,17),Q=y,l=G(D,x,21),B=n^y,n=h^l,_=238^G(_,t,32),e=y+B|0,e=(l=g)+(g=(t=n+_|0)>>>0<_>>>0?e+1|0:e)|0,_=e=(h=t+r|0)>>>0>>0?e+1|0:e,Q=G(r=h^p,e^=Q,13),l=y,n=G(n,B,16),B=g^y,p=t^n,t=G(s,a,32),g=y+B|0,t=(s=e)+(e=t>>>0>(a=p+t|0)>>>0?g+1|0:g)|0,s=t=(n=r+a|0)>>>0>>0?t+1|0:t,Q=G(r=Q^n,g=t^l,17),l=y,t=G(p,B,21),B=e^y,p=t^a,t=G(h,_,32),e=y+B|0,e=(t=t>>>0>(a=p+t|0)>>>0?e+1|0:e)+g|0,_=e=(h=r+a|0)>>>0>>0?e+1|0:e,Q=G(r=h^Q,g=e^l,13),l=y,e=G(p,B,16),B=t^y,p=e^a,e=G(n,s,32),t=y+B|0,e=(t=e>>>0>(a=p+e|0)>>>0?t+1|0:t)+g|0,s=e=(n=r+a|0)>>>0>>0?e+1|0:e,Q=G(r=Q^n,g=e^l,17),l=y,e=G(p,B,21),B=t^y,p=e^a,a=G(h,_,32),e=y+B|0,g=(e=(t=p+a|0)>>>0>>0?e+1|0:e)+g|0,a=g=(_=t+r|0)>>>0>>0?g+1|0:g,Q=G(r=_^Q,g^=l,13),l=y,h=G(p,B,16),p=e^y,h^=t,s=G(n,s,32),e=y+p|0,e=(n=g)+(g=(t=h+s|0)>>>0>>0?e+1|0:e)|0,s=e=(n=t+r|0)>>>0>>0?e+1|0:e,Q=G(r=Q^n,e^=l,17),l=y,h=G(h,p,21),p=g^y,h^=t,t=G(_,a,32),g=y+p|0,t=(_=e)+(e=t>>>0>(a=h+t|0)>>>0?g+1|0:g)|0,_=r=(t=(g=r+a|0)>>>0>>0?t+1|0:t)^l,Q^=g,h=G(h,p,16),B=e^y,a=(h^=a)+(s=G(n,s,32))|0,e=y+B|0,g=G(g,t,32),p=y,t=e=a>>>0>>0?e+1|0:e,s=C,h=(n=G(h,B,21)^a)^g^a^Q,c[0|s]=h,c[s+1|0]=h>>>8,c[s+2|0]=h>>>16,c[s+3|0]=h>>>24,e=(B=p^e^r)^(r=e^y),c[s+4|0]=e,c[s+5|0]=e>>>8,c[s+6|0]=e>>>16,c[s+7|0]=e>>>24,e=r+p|0,e=(s=g)>>>0>(g=g+n|0)>>>0?e+1|0:e,l=g,r=G(n,r,16)^g,n=e,p=g=e^y,t=(e=_)+t|0,_=a=(s=Q^=221)+a|0,a=G(a,t=a>>>0>>0?t+1|0:t,32),g=y+g|0,g=a>>>0>(h=a+r|0)>>>0?g+1|0:g,a=G(r,p,21)^h,s=g,v=G(a,r=g^y,16),B=y,g=G(Q,e,13),e=n+(p=t^y)|0,g=e=(t=l+(Q=g^_)|0)>>>0>>0?e+1|0:e,_=a,a=G(t,e,32),e=y+r|0,B=e=(_=a>>>0>(n=_+a|0)>>>0?e+1|0:e)^B,l=G(v^=n,e,21),a=y,e=G(Q,p,17),g=s+(p=g^y)|0,t=g=(r=h+(Q=e^t)|0)>>>0>>0?g+1|0:g,g=G(r,g,32),e=B+y|0,B=e=(s=a)^(a=(g=g+v|0)>>>0>>0?e+1|0:e),s=g,l=G(v=l^g,e,16),h=y,g=G(Q,p,13),e=_+(p=t^y)|0,g=G(r=n+(Q=g^r)|0,e=r>>>0>>0?e+1|0:e,32),t=B+y|0,B=t=(_=(g=g+v|0)>>>0>>0?t+1|0:t)^h,n=g,l=G(v=l^g,t,21),h=y,g=G(Q,p,17),e=a+(p=e^y)|0,t=e=(r=s+(Q=g^r)|0)>>>0>>0?e+1|0:e,g=G(r,e,32),e=B+y|0,B=e=(a=(g=g+v|0)>>>0>>0?e+1|0:e)^h,s=g,l=G(v=l^g,e,16),h=y,g=G(Q,p,13),t=_+(p=t^y)|0,e=G(r=n+(Q=g^r)|0,t=r>>>0>>0?t+1|0:t,32),g=B+y|0,_=e=e+v|0,l=G(l^e,(g=e>>>0>>0?g+1|0:g)^h,21),h=y,n=G(Q,p,17),e=t^y,n=G(t=r^n,e,13),e=e+a|0,e=(t=t+s|0)>>>0>>0?e+1|0:e,r=G(a=t^n,e^=r=y,17)^l,t=y^h,e=g+e|0,g=G(g=a+_|0,e=g>>>0<_>>>0?e+1|0:e,32)^r^g,c[C+8|0]=g,c[C+9|0]=g>>>8,c[C+10|0]=g>>>16,c[C+11|0]=g>>>24,g=e^y^t,c[C+12|0]=g,c[C+13|0]=g>>>8,c[C+14|0]=g>>>16,c[C+15|0]=g>>>24,0},Tj:function(C,g,e,t,r){C|=0,t|=0,r|=0;var o,I=0,a=0,_=0,s=0;if(W=o=W-112|0,I=g|=0,g|(a=e|=0)){g=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,A[o+24>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,A[o+28>>2]=g,g=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+16>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+20>>2]=g,g=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[o>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[o+4>>2]=g,g=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+8>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[o+12>>2]=g,g=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,e=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,A[o+104>>2]=0,A[o+108>>2]=0,A[o+96>>2]=g,A[o+100>>2]=e;A:{if(!a&I>>>0>=64|a){for(;dC(C,o+96|0,o,0),g=i[o+104|0]+1|0,c[o+104|0]=g,g=i[o+105|0]+(g>>>8|0)|0,c[o+105|0]=g,g=i[o+106|0]+(g>>>8|0)|0,c[o+106|0]=g,g=i[o+107|0]+(g>>>8|0)|0,c[o+107|0]=g,g=i[o+108|0]+(g>>>8|0)|0,c[o+108|0]=g,g=i[o+109|0]+(g>>>8|0)|0,c[o+109|0]=g,g=i[o+110|0]+(g>>>8|0)|0,c[o+110|0]=g,c[o+111|0]=i[o+111|0]+(g>>>8|0),C=C- -64|0,a=a-1|0,!(a=(I=I+-64|0)>>>0<4294967232?a+1|0:a)&I>>>0>63|a;);if(!(I|a))break A}if(e=0,dC(o+32|0,o+96|0,o,0),t=3&I,g=0,!a&I>>>0>=4|a)for(a=60&I,r=0;I=s=o+32|0,c[C+g|0]=i[I+g|0],c[(_=1|g)+C|0]=i[I+_|0],c[(_=2|g)+C|0]=i[I+_|0],c[(I=3|g)+C|0]=i[I+s|0],g=g+4|0,(0|a)!=(0|(r=r+4|0)););if(t)for(;c[C+g|0]=i[(o+32|0)+g|0],g=g+1|0,(0|t)!=(0|(e=e+1|0)););}y0(o+32|0,64),y0(o,32)}return W=o+112|0,0},Uj:function(C,g,e,t,r,o){C|=0,g|=0,r|=0,o|=0;var I,a=0,_=0;if(W=I=W-112|0,a=e|=0,(t|=0)|e){e=i[o+28|0]|i[o+29|0]<<8|i[o+30|0]<<16|i[o+31|0]<<24,A[I+24>>2]=i[o+24|0]|i[o+25|0]<<8|i[o+26|0]<<16|i[o+27|0]<<24,A[I+28>>2]=e,e=i[o+20|0]|i[o+21|0]<<8|i[o+22|0]<<16|i[o+23|0]<<24,A[I+16>>2]=i[o+16|0]|i[o+17|0]<<8|i[o+18|0]<<16|i[o+19|0]<<24,A[I+20>>2]=e,e=i[o+4|0]|i[o+5|0]<<8|i[o+6|0]<<16|i[o+7|0]<<24,A[I>>2]=i[0|o]|i[o+1|0]<<8|i[o+2|0]<<16|i[o+3|0]<<24,A[I+4>>2]=e,e=i[o+12|0]|i[o+13|0]<<8|i[o+14|0]<<16|i[o+15|0]<<24,A[I+8>>2]=i[o+8|0]|i[o+9|0]<<8|i[o+10|0]<<16|i[o+11|0]<<24,A[I+12>>2]=e,e=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,r=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[I+104>>2]=0,A[I+108>>2]=0,A[I+96>>2]=e,A[I+100>>2]=r;A:{if(!t&a>>>0>=64|t){for(;;){for(e=0,dC(I+32|0,I+96|0,I,0);o=I+32|0,c[C+e|0]=i[o+e|0]^i[g+e|0],c[(r=1|e)+C|0]=i[r+o|0]^i[g+r|0],(0|(e=e+2|0))!=64;);if(e=i[I+104|0]+1|0,c[I+104|0]=e,e=i[I+105|0]+(e>>>8|0)|0,c[I+105|0]=e,e=i[I+106|0]+(e>>>8|0)|0,c[I+106|0]=e,e=i[I+107|0]+(e>>>8|0)|0,c[I+107|0]=e,e=i[I+108|0]+(e>>>8|0)|0,c[I+108|0]=e,e=i[I+109|0]+(e>>>8|0)|0,c[I+109|0]=e,e=i[I+110|0]+(e>>>8|0)|0,c[I+110|0]=e,c[I+111|0]=i[I+111|0]+(e>>>8|0),g=g- -64|0,C=C- -64|0,t=t-1|0,!(!(t=(a=a+-64|0)>>>0<4294967232?t+1|0:t)&a>>>0>63|t))break}if(!(t|a))break A}if(e=0,dC(I+32|0,I+96|0,I,0),o=1&a,(0|a)!=1|t)for(a&=62,t=0;_=I+32|0,c[C+e|0]=i[_+e|0]^i[g+e|0],c[(r=1|e)+C|0]=i[r+_|0]^i[g+r|0],e=e+2|0,(0|a)!=(0|(t=t+2|0)););o&&(c[C+e|0]=i[(I+32|0)+e|0]^i[g+e|0])}y0(I+32|0,64),y0(I,32)}return W=I+112|0,0},Vj:G0,Wj:U1,Xj:z2,Yj:N2,Zj:function(C,g,e,t,r){C|=0,t|=0,r|=0;var o,I=0,a=0,_=0,s=0;if(W=o=W-112|0,I=g|=0,g|(a=e|=0)){g=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,A[o+24>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,A[o+28>>2]=g,g=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,A[o+16>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,A[o+20>>2]=g,g=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[o>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,A[o+4>>2]=g,g=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,A[o+8>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,A[o+12>>2]=g,g=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,e=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,A[o+104>>2]=0,A[o+108>>2]=0,A[o+96>>2]=g,A[o+100>>2]=e;A:{if(!a&I>>>0>=64|a){for(;SC(C,o+96|0,o,0),g=i[o+104|0]+1|0,c[o+104|0]=g,g=i[o+105|0]+(g>>>8|0)|0,c[o+105|0]=g,g=i[o+106|0]+(g>>>8|0)|0,c[o+106|0]=g,g=i[o+107|0]+(g>>>8|0)|0,c[o+107|0]=g,g=i[o+108|0]+(g>>>8|0)|0,c[o+108|0]=g,g=i[o+109|0]+(g>>>8|0)|0,c[o+109|0]=g,g=i[o+110|0]+(g>>>8|0)|0,c[o+110|0]=g,c[o+111|0]=i[o+111|0]+(g>>>8|0),C=C- -64|0,a=a-1|0,!(a=(I=I+-64|0)>>>0<4294967232?a+1|0:a)&I>>>0>63|a;);if(!(I|a))break A}if(e=0,SC(o+32|0,o+96|0,o,0),t=3&I,g=0,!a&I>>>0>=4|a)for(a=60&I,r=0;I=s=o+32|0,c[C+g|0]=i[I+g|0],c[(_=1|g)+C|0]=i[I+_|0],c[(_=2|g)+C|0]=i[I+_|0],c[(I=3|g)+C|0]=i[I+s|0],g=g+4|0,(0|a)!=(0|(r=r+4|0)););if(t)for(;c[C+g|0]=i[(o+32|0)+g|0],g=g+1|0,(0|t)!=(0|(e=e+1|0)););}y0(o+32|0,64),y0(o,32)}return W=o+112|0,0},_j:function(C,g,e,t,r,o){C|=0,g|=0,r|=0,o|=0;var I,a=0,_=0;if(W=I=W-112|0,a=e|=0,(t|=0)|e){e=i[o+28|0]|i[o+29|0]<<8|i[o+30|0]<<16|i[o+31|0]<<24,A[I+24>>2]=i[o+24|0]|i[o+25|0]<<8|i[o+26|0]<<16|i[o+27|0]<<24,A[I+28>>2]=e,e=i[o+20|0]|i[o+21|0]<<8|i[o+22|0]<<16|i[o+23|0]<<24,A[I+16>>2]=i[o+16|0]|i[o+17|0]<<8|i[o+18|0]<<16|i[o+19|0]<<24,A[I+20>>2]=e,e=i[o+4|0]|i[o+5|0]<<8|i[o+6|0]<<16|i[o+7|0]<<24,A[I>>2]=i[0|o]|i[o+1|0]<<8|i[o+2|0]<<16|i[o+3|0]<<24,A[I+4>>2]=e,e=i[o+12|0]|i[o+13|0]<<8|i[o+14|0]<<16|i[o+15|0]<<24,A[I+8>>2]=i[o+8|0]|i[o+9|0]<<8|i[o+10|0]<<16|i[o+11|0]<<24,A[I+12>>2]=e,e=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,r=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,A[I+104>>2]=0,A[I+108>>2]=0,A[I+96>>2]=e,A[I+100>>2]=r;A:{if(!t&a>>>0>=64|t){for(;;){for(e=0,SC(I+32|0,I+96|0,I,0);o=I+32|0,c[C+e|0]=i[o+e|0]^i[g+e|0],c[(r=1|e)+C|0]=i[r+o|0]^i[g+r|0],(0|(e=e+2|0))!=64;);if(e=i[I+104|0]+1|0,c[I+104|0]=e,e=i[I+105|0]+(e>>>8|0)|0,c[I+105|0]=e,e=i[I+106|0]+(e>>>8|0)|0,c[I+106|0]=e,e=i[I+107|0]+(e>>>8|0)|0,c[I+107|0]=e,e=i[I+108|0]+(e>>>8|0)|0,c[I+108|0]=e,e=i[I+109|0]+(e>>>8|0)|0,c[I+109|0]=e,e=i[I+110|0]+(e>>>8|0)|0,c[I+110|0]=e,c[I+111|0]=i[I+111|0]+(e>>>8|0),g=g- -64|0,C=C- -64|0,t=t-1|0,!(!(t=(a=a+-64|0)>>>0<4294967232?t+1|0:t)&a>>>0>63|t))break}if(!(t|a))break A}if(e=0,SC(I+32|0,I+96|0,I,0),o=1&a,(0|a)!=1|t)for(a&=62,t=0;_=I+32|0,c[C+e|0]=i[_+e|0]^i[g+e|0],c[(r=1|e)+C|0]=i[r+_|0]^i[g+r|0],e=e+2|0,(0|a)!=(0|(t=t+2|0)););o&&(c[C+e|0]=i[(I+32|0)+e|0]^i[g+e|0])}y0(I+32|0,64),y0(I,32)}return W=I+112|0,0},$j:G0,ak:U1,bk:z2,ck:N2,dk:G0,ek:G1,fk:z2,gk:function(C,g,e,t,r){var o;return C|=0,g|=0,e|=0,W=o=W-32|0,g1(o,t|=0,r|=0,0),C=kC(C,g,e,t+16|0,o),W=o+32|0,0|C},hk:function(C,g,e,t,r,o,I,a){var _;return C|=0,g|=0,e|=0,t|=0,o|=0,I|=0,W=_=W-32|0,g1(_,r|=0,a|=0,0),C=Qg(a=C,g,(C=0)|e,t,r+16|0,C|o,I,_),W=_+32|0,0|C},ik:function(C,g,e,t,r,o){var I;return C|=0,g|=0,e|=0,t|=0,W=I=W-32|0,g1(I,r|=0,o|=0,0),C=Qg(C,g,e,t,r+16|0,0,0,I),W=I+32|0,0|C},jk:N2,kk:r1,lk:M2,mk:G2}}(tA)}(Z)},instantiate:function(R,Z){return{then:function(tA){var BA=new bg.Module(R);tA({instance:new bg.Instance(BA,Z)})}}},RuntimeError:Error};j2=[];var gC,vg,CC,Fg,Ng,eC,mg,RC=!1;function LC(){var R=Sg.buffer;E.HEAP8=gC=new Int8Array(R),E.HEAP16=CC=new Int16Array(R),E.HEAPU8=vg=new Uint8Array(R),E.HEAPU16=new Uint16Array(R),E.HEAP32=Fg=new Int32Array(R),E.HEAPU32=Ng=new Uint32Array(R),E.HEAPF32=eC=new Float32Array(R),E.HEAPF64=mg=new Float64Array(R)}var PC=[],qC=[],zC=[],L1=0,og=null;function P1(R){throw E.onAbort?.(R),AC(R="Aborted("+R+")"),RC=!0,R+=". Build with -sASSERTIONS for more info.",new bg.RuntimeError(R)}var Mg,st=R=>R.startsWith("file://"),Bt={36800:()=>E.getRandomValue(),36836:()=>{if(E.getRandomValue===void 0)try{var R=typeof window=="object"?window:self,Z=R.crypto!==void 0?R.crypto:R.msCrypto;Z=Z===void 0?BA:Z;var tA=function(){var xA=new Uint32Array(1);return Z.getRandomValues(xA),xA[0]>>>0};tA(),E.getRandomValue=tA}catch{try{var BA=ha(),dA=function(){var WA=BA.randomBytes(4);return(WA[0]<<24|WA[1]<<16|WA[2]<<8|WA[3])>>>0};dA(),E.getRandomValue=dA}catch{throw"No secure random number generator found"}}}},tC=R=>{for(;R.length>0;)R.shift()(E)};E.noExitRuntime;var Gg,TC=typeof TextDecoder<"u"?new TextDecoder:void 0,Kg=(R,Z)=>R?((tA,BA,dA)=>{for(var xA=BA+dA,WA=BA;tA[WA]&&!(WA>=xA);)++WA;if(WA-BA>16&&tA.buffer&&TC)return TC.decode(tA.subarray(BA,WA));for(var Q0="";BA>10,56320|1023&A)}}else Q0+=String.fromCharCode((31&K0)<<6|R0)}else Q0+=String.fromCharCode(K0)}return Q0})(vg,R,Z):"",rC=[],yt=R=>{var Z=(R-Sg.buffer.byteLength+65535)/65536;try{return Sg.grow(Z),LC(),1}catch{}},ht={b:(R,Z,tA,BA)=>{P1(`Assertion failed: ${Kg(R)}, at: `+[Z?Kg(Z):"unknown filename",tA,BA?Kg(BA):"unknown function"])},c:()=>{P1("")},a:(R,Z,tA)=>((BA,dA,xA)=>{var WA=((Q0,K0)=>{var R0;for(rC.length=0;R0=vg[Q0++];){var c=R0!=105;K0+=(c&=R0!=112)&&K0%8?4:0,rC.push(R0==112?Ng[K0>>2]:R0==105?Fg[K0>>2]:mg[K0>>3]),K0+=c?8:4}return rC})(dA,xA);return Bt[BA](...WA)})(R,Z,tA),d:R=>{var Z=vg.length,tA=2147483648;if((R>>>=0)>tA)return!1;for(var BA,dA=1;dA<=4;dA*=2){var xA=Z*(1+.2/dA);xA=Math.min(xA,R+100663296);var WA=Math.min(tA,(BA=Math.max(R,xA))+(65536-BA%65536)%65536);if(yt(WA))return!0}return!1}},T=function(){var R={a:ht};function Z(tA,BA){var dA;return T=tA.exports,Sg=T.e,LC(),dA=T.f,qC.unshift(dA),function(xA){if(L1--,E.monitorRunDependencies?.(L1),L1==0&&og){var WA=og;og=null,WA()}}(),T}if(L1++,E.monitorRunDependencies?.(L1),E.instantiateWasm)try{return E.instantiateWasm(R,Z)}catch(tA){return AC(`Module.instantiateWasm callback failed with error: ${tA}`),!1}return Mg||(Mg="<<< WASM_BINARY_FILE >>>"),function(tA,BA,dA){(function(xA){return Promise.resolve().then(()=>function(WA){if(WA==Mg&&j2)return new Uint8Array(j2);if(eA)return eA(WA);throw"both async and sync fetching of the wasm failed"}(xA))})(tA).then(xA=>bg.instantiate(xA,BA)).then(dA,xA=>{AC(`failed to asynchronously prepare wasm: ${xA}`),P1(xA)})}(Mg,R,function(tA){Z(tA.instance)}),{}}();function jC(){function R(){Gg||(Gg=!0,E.calledRun=!0,RC||(tC(qC),E.onRuntimeInitialized?.(),function(){if(E.postRun)for(typeof E.postRun=="function"&&(E.postRun=[E.postRun]);E.postRun.length;)Z=E.postRun.shift(),zC.unshift(Z);var Z;tC(zC)}()))}L1>0||(function(){if(E.preRun)for(typeof E.preRun=="function"&&(E.preRun=[E.preRun]);E.preRun.length;)Z=E.preRun.shift(),PC.unshift(Z);var Z;tC(PC)}(),L1>0||(E.setStatus?(E.setStatus("Running..."),setTimeout(function(){setTimeout(function(){E.setStatus("")},1),R()},1)):R()))}if(E._crypto_aead_aegis128l_keybytes=()=>(E._crypto_aead_aegis128l_keybytes=T.g)(),E._crypto_aead_aegis128l_nsecbytes=()=>(E._crypto_aead_aegis128l_nsecbytes=T.h)(),E._crypto_aead_aegis128l_npubbytes=()=>(E._crypto_aead_aegis128l_npubbytes=T.i)(),E._crypto_aead_aegis128l_abytes=()=>(E._crypto_aead_aegis128l_abytes=T.j)(),E._crypto_aead_aegis128l_messagebytes_max=()=>(E._crypto_aead_aegis128l_messagebytes_max=T.k)(),E._crypto_aead_aegis128l_keygen=R=>(E._crypto_aead_aegis128l_keygen=T.l)(R),E._crypto_aead_aegis128l_encrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis128l_encrypt=T.m)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aegis128l_encrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A)=>(E._crypto_aead_aegis128l_encrypt_detached=T.n)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A),E._crypto_aead_aegis128l_decrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis128l_decrypt=T.o)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aegis128l_decrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis128l_decrypt_detached=T.p)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aegis256_keybytes=()=>(E._crypto_aead_aegis256_keybytes=T.q)(),E._crypto_aead_aegis256_nsecbytes=()=>(E._crypto_aead_aegis256_nsecbytes=T.r)(),E._crypto_aead_aegis256_npubbytes=()=>(E._crypto_aead_aegis256_npubbytes=T.s)(),E._crypto_aead_aegis256_abytes=()=>(E._crypto_aead_aegis256_abytes=T.t)(),E._crypto_aead_aegis256_messagebytes_max=()=>(E._crypto_aead_aegis256_messagebytes_max=T.u)(),E._crypto_aead_aegis256_keygen=R=>(E._crypto_aead_aegis256_keygen=T.v)(R),E._crypto_aead_aegis256_encrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis256_encrypt=T.w)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aegis256_encrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A)=>(E._crypto_aead_aegis256_encrypt_detached=T.x)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A),E._crypto_aead_aegis256_decrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis256_decrypt=T.y)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aegis256_decrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_aegis256_decrypt_detached=T.z)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_aes256gcm_is_available=()=>(E._crypto_aead_aes256gcm_is_available=T.A)(),E._crypto_aead_chacha20poly1305_encrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A)=>(E._crypto_aead_chacha20poly1305_encrypt_detached=T.B)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A),E._crypto_aead_chacha20poly1305_encrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_encrypt=T.C)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A)=>(E._crypto_aead_chacha20poly1305_ietf_encrypt_detached=T.D)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A),E._crypto_aead_chacha20poly1305_ietf_encrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_ietf_encrypt=T.E)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_decrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_decrypt_detached=T.F)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_decrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_decrypt=T.G)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_ietf_decrypt_detached=T.H)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_ietf_decrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_chacha20poly1305_ietf_decrypt=T.I)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(E._crypto_aead_chacha20poly1305_ietf_keybytes=T.J)(),E._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(E._crypto_aead_chacha20poly1305_ietf_npubbytes=T.K)(),E._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(E._crypto_aead_chacha20poly1305_ietf_nsecbytes=T.L)(),E._crypto_aead_chacha20poly1305_ietf_abytes=()=>(E._crypto_aead_chacha20poly1305_ietf_abytes=T.M)(),E._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(E._crypto_aead_chacha20poly1305_ietf_messagebytes_max=T.N)(),E._crypto_aead_chacha20poly1305_ietf_keygen=R=>(E._crypto_aead_chacha20poly1305_ietf_keygen=T.O)(R),E._crypto_aead_chacha20poly1305_keybytes=()=>(E._crypto_aead_chacha20poly1305_keybytes=T.P)(),E._crypto_aead_chacha20poly1305_npubbytes=()=>(E._crypto_aead_chacha20poly1305_npubbytes=T.Q)(),E._crypto_aead_chacha20poly1305_nsecbytes=()=>(E._crypto_aead_chacha20poly1305_nsecbytes=T.R)(),E._crypto_aead_chacha20poly1305_abytes=()=>(E._crypto_aead_chacha20poly1305_abytes=T.S)(),E._crypto_aead_chacha20poly1305_messagebytes_max=()=>(E._crypto_aead_chacha20poly1305_messagebytes_max=T.T)(),E._crypto_aead_chacha20poly1305_keygen=R=>(E._crypto_aead_chacha20poly1305_keygen=T.U)(R),E._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A)=>(E._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=T.V)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A),E._crypto_aead_xchacha20poly1305_ietf_encrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_xchacha20poly1305_ietf_encrypt=T.W)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=T.X)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_xchacha20poly1305_ietf_decrypt=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_aead_xchacha20poly1305_ietf_decrypt=T.Y)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(E._crypto_aead_xchacha20poly1305_ietf_keybytes=T.Z)(),E._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(E._crypto_aead_xchacha20poly1305_ietf_npubbytes=T._)(),E._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(E._crypto_aead_xchacha20poly1305_ietf_nsecbytes=T.$)(),E._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(E._crypto_aead_xchacha20poly1305_ietf_abytes=T.aa)(),E._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(E._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=T.ba)(),E._crypto_aead_xchacha20poly1305_ietf_keygen=R=>(E._crypto_aead_xchacha20poly1305_ietf_keygen=T.ca)(R),E._crypto_auth_bytes=()=>(E._crypto_auth_bytes=T.da)(),E._crypto_auth_keybytes=()=>(E._crypto_auth_keybytes=T.ea)(),E._crypto_auth_primitive=()=>(E._crypto_auth_primitive=T.fa)(),E._crypto_auth=(R,Z,tA,BA,dA)=>(E._crypto_auth=T.ga)(R,Z,tA,BA,dA),E._crypto_auth_verify=(R,Z,tA,BA,dA)=>(E._crypto_auth_verify=T.ha)(R,Z,tA,BA,dA),E._crypto_auth_keygen=R=>(E._crypto_auth_keygen=T.ia)(R),E._crypto_auth_hmacsha256_bytes=()=>(E._crypto_auth_hmacsha256_bytes=T.ja)(),E._crypto_auth_hmacsha256_keybytes=()=>(E._crypto_auth_hmacsha256_keybytes=T.ka)(),E._crypto_auth_hmacsha256_statebytes=()=>(E._crypto_auth_hmacsha256_statebytes=T.la)(),E._crypto_auth_hmacsha256_keygen=R=>(E._crypto_auth_hmacsha256_keygen=T.ma)(R),E._crypto_auth_hmacsha256_init=(R,Z,tA)=>(E._crypto_auth_hmacsha256_init=T.na)(R,Z,tA),E._crypto_auth_hmacsha256_update=(R,Z,tA,BA)=>(E._crypto_auth_hmacsha256_update=T.oa)(R,Z,tA,BA),E._crypto_auth_hmacsha256_final=(R,Z)=>(E._crypto_auth_hmacsha256_final=T.pa)(R,Z),E._crypto_auth_hmacsha256=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha256=T.qa)(R,Z,tA,BA,dA),E._crypto_auth_hmacsha256_verify=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha256_verify=T.ra)(R,Z,tA,BA,dA),E._crypto_auth_hmacsha512_bytes=()=>(E._crypto_auth_hmacsha512_bytes=T.sa)(),E._crypto_auth_hmacsha512_keybytes=()=>(E._crypto_auth_hmacsha512_keybytes=T.ta)(),E._crypto_auth_hmacsha512_statebytes=()=>(E._crypto_auth_hmacsha512_statebytes=T.ua)(),E._crypto_auth_hmacsha512_keygen=R=>(E._crypto_auth_hmacsha512_keygen=T.va)(R),E._crypto_auth_hmacsha512_init=(R,Z,tA)=>(E._crypto_auth_hmacsha512_init=T.wa)(R,Z,tA),E._crypto_auth_hmacsha512_update=(R,Z,tA,BA)=>(E._crypto_auth_hmacsha512_update=T.xa)(R,Z,tA,BA),E._crypto_auth_hmacsha512_final=(R,Z)=>(E._crypto_auth_hmacsha512_final=T.ya)(R,Z),E._crypto_auth_hmacsha512=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha512=T.za)(R,Z,tA,BA,dA),E._crypto_auth_hmacsha512_verify=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha512_verify=T.Aa)(R,Z,tA,BA,dA),E._crypto_auth_hmacsha512256_bytes=()=>(E._crypto_auth_hmacsha512256_bytes=T.Ba)(),E._crypto_auth_hmacsha512256_keybytes=()=>(E._crypto_auth_hmacsha512256_keybytes=T.Ca)(),E._crypto_auth_hmacsha512256_statebytes=()=>(E._crypto_auth_hmacsha512256_statebytes=T.Da)(),E._crypto_auth_hmacsha512256_keygen=R=>(E._crypto_auth_hmacsha512256_keygen=T.Ea)(R),E._crypto_auth_hmacsha512256_init=(R,Z,tA)=>(E._crypto_auth_hmacsha512256_init=T.Fa)(R,Z,tA),E._crypto_auth_hmacsha512256_update=(R,Z,tA,BA)=>(E._crypto_auth_hmacsha512256_update=T.Ga)(R,Z,tA,BA),E._crypto_auth_hmacsha512256_final=(R,Z)=>(E._crypto_auth_hmacsha512256_final=T.Ha)(R,Z),E._crypto_auth_hmacsha512256=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha512256=T.Ia)(R,Z,tA,BA,dA),E._crypto_auth_hmacsha512256_verify=(R,Z,tA,BA,dA)=>(E._crypto_auth_hmacsha512256_verify=T.Ja)(R,Z,tA,BA,dA),E._crypto_box_seedbytes=()=>(E._crypto_box_seedbytes=T.Ka)(),E._crypto_box_publickeybytes=()=>(E._crypto_box_publickeybytes=T.La)(),E._crypto_box_secretkeybytes=()=>(E._crypto_box_secretkeybytes=T.Ma)(),E._crypto_box_beforenmbytes=()=>(E._crypto_box_beforenmbytes=T.Na)(),E._crypto_box_noncebytes=()=>(E._crypto_box_noncebytes=T.Oa)(),E._crypto_box_zerobytes=()=>(E._crypto_box_zerobytes=T.Pa)(),E._crypto_box_boxzerobytes=()=>(E._crypto_box_boxzerobytes=T.Qa)(),E._crypto_box_macbytes=()=>(E._crypto_box_macbytes=T.Ra)(),E._crypto_box_messagebytes_max=()=>(E._crypto_box_messagebytes_max=T.Sa)(),E._crypto_box_primitive=()=>(E._crypto_box_primitive=T.Ta)(),E._crypto_box_seed_keypair=(R,Z,tA)=>(E._crypto_box_seed_keypair=T.Ua)(R,Z,tA),E._crypto_box_keypair=(R,Z)=>(E._crypto_box_keypair=T.Va)(R,Z),E._crypto_box_beforenm=(R,Z,tA)=>(E._crypto_box_beforenm=T.Wa)(R,Z,tA),E._crypto_box_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_afternm=T.Xa)(R,Z,tA,BA,dA,xA),E._crypto_box_open_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_open_afternm=T.Ya)(R,Z,tA,BA,dA,xA),E._crypto_box=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box=T.Za)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_open=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_open=T._a)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_detached_afternm=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_detached_afternm=T.$a)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_detached=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_box_detached=T.ab)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_box_easy_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_easy_afternm=T.bb)(R,Z,tA,BA,dA,xA),E._crypto_box_easy=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_easy=T.cb)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_open_detached_afternm=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_open_detached_afternm=T.db)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_open_detached=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_box_open_detached=T.eb)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_box_open_easy_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_open_easy_afternm=T.fb)(R,Z,tA,BA,dA,xA),E._crypto_box_open_easy=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_open_easy=T.gb)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_seal=(R,Z,tA,BA,dA)=>(E._crypto_box_seal=T.hb)(R,Z,tA,BA,dA),E._crypto_box_seal_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_seal_open=T.ib)(R,Z,tA,BA,dA,xA),E._crypto_box_sealbytes=()=>(E._crypto_box_sealbytes=T.jb)(),E._crypto_box_curve25519xsalsa20poly1305_seed_keypair=(R,Z,tA)=>(E._crypto_box_curve25519xsalsa20poly1305_seed_keypair=T.kb)(R,Z,tA),E._crypto_box_curve25519xsalsa20poly1305_keypair=(R,Z)=>(E._crypto_box_curve25519xsalsa20poly1305_keypair=T.lb)(R,Z),E._crypto_box_curve25519xsalsa20poly1305_beforenm=(R,Z,tA)=>(E._crypto_box_curve25519xsalsa20poly1305_beforenm=T.mb)(R,Z,tA),E._crypto_box_curve25519xsalsa20poly1305_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_curve25519xsalsa20poly1305_afternm=T.nb)(R,Z,tA,BA,dA,xA),E._crypto_box_curve25519xsalsa20poly1305_open_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_curve25519xsalsa20poly1305_open_afternm=T.ob)(R,Z,tA,BA,dA,xA),E._crypto_box_curve25519xsalsa20poly1305=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xsalsa20poly1305=T.pb)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xsalsa20poly1305_open=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xsalsa20poly1305_open=T.qb)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xsalsa20poly1305_seedbytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_seedbytes=T.rb)(),E._crypto_box_curve25519xsalsa20poly1305_publickeybytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_publickeybytes=T.sb)(),E._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=T.tb)(),E._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=T.ub)(),E._crypto_box_curve25519xsalsa20poly1305_noncebytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_noncebytes=T.vb)(),E._crypto_box_curve25519xsalsa20poly1305_zerobytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_zerobytes=T.wb)(),E._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=T.xb)(),E._crypto_box_curve25519xsalsa20poly1305_macbytes=()=>(E._crypto_box_curve25519xsalsa20poly1305_macbytes=T.yb)(),E._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=()=>(E._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=T.zb)(),E._crypto_core_hchacha20=(R,Z,tA,BA)=>(E._crypto_core_hchacha20=T.Ab)(R,Z,tA,BA),E._crypto_core_hchacha20_outputbytes=()=>(E._crypto_core_hchacha20_outputbytes=T.Bb)(),E._crypto_core_hchacha20_inputbytes=()=>(E._crypto_core_hchacha20_inputbytes=T.Cb)(),E._crypto_core_hchacha20_keybytes=()=>(E._crypto_core_hchacha20_keybytes=T.Db)(),E._crypto_core_hchacha20_constbytes=()=>(E._crypto_core_hchacha20_constbytes=T.Eb)(),E._crypto_core_hsalsa20=(R,Z,tA,BA)=>(E._crypto_core_hsalsa20=T.Fb)(R,Z,tA,BA),E._crypto_core_hsalsa20_outputbytes=()=>(E._crypto_core_hsalsa20_outputbytes=T.Gb)(),E._crypto_core_hsalsa20_inputbytes=()=>(E._crypto_core_hsalsa20_inputbytes=T.Hb)(),E._crypto_core_hsalsa20_keybytes=()=>(E._crypto_core_hsalsa20_keybytes=T.Ib)(),E._crypto_core_hsalsa20_constbytes=()=>(E._crypto_core_hsalsa20_constbytes=T.Jb)(),E._crypto_core_salsa20=(R,Z,tA,BA)=>(E._crypto_core_salsa20=T.Kb)(R,Z,tA,BA),E._crypto_core_salsa20_outputbytes=()=>(E._crypto_core_salsa20_outputbytes=T.Lb)(),E._crypto_core_salsa20_inputbytes=()=>(E._crypto_core_salsa20_inputbytes=T.Mb)(),E._crypto_core_salsa20_keybytes=()=>(E._crypto_core_salsa20_keybytes=T.Nb)(),E._crypto_core_salsa20_constbytes=()=>(E._crypto_core_salsa20_constbytes=T.Ob)(),E._crypto_core_salsa2012=(R,Z,tA,BA)=>(E._crypto_core_salsa2012=T.Pb)(R,Z,tA,BA),E._crypto_core_salsa2012_outputbytes=()=>(E._crypto_core_salsa2012_outputbytes=T.Qb)(),E._crypto_core_salsa2012_inputbytes=()=>(E._crypto_core_salsa2012_inputbytes=T.Rb)(),E._crypto_core_salsa2012_keybytes=()=>(E._crypto_core_salsa2012_keybytes=T.Sb)(),E._crypto_core_salsa2012_constbytes=()=>(E._crypto_core_salsa2012_constbytes=T.Tb)(),E._crypto_core_salsa208=(R,Z,tA,BA)=>(E._crypto_core_salsa208=T.Ub)(R,Z,tA,BA),E._crypto_core_salsa208_outputbytes=()=>(E._crypto_core_salsa208_outputbytes=T.Vb)(),E._crypto_core_salsa208_inputbytes=()=>(E._crypto_core_salsa208_inputbytes=T.Wb)(),E._crypto_core_salsa208_keybytes=()=>(E._crypto_core_salsa208_keybytes=T.Xb)(),E._crypto_core_salsa208_constbytes=()=>(E._crypto_core_salsa208_constbytes=T.Yb)(),E._crypto_generichash_bytes_min=()=>(E._crypto_generichash_bytes_min=T.Zb)(),E._crypto_generichash_bytes_max=()=>(E._crypto_generichash_bytes_max=T._b)(),E._crypto_generichash_bytes=()=>(E._crypto_generichash_bytes=T.$b)(),E._crypto_generichash_keybytes_min=()=>(E._crypto_generichash_keybytes_min=T.ac)(),E._crypto_generichash_keybytes_max=()=>(E._crypto_generichash_keybytes_max=T.bc)(),E._crypto_generichash_keybytes=()=>(E._crypto_generichash_keybytes=T.cc)(),E._crypto_generichash_primitive=()=>(E._crypto_generichash_primitive=T.dc)(),E._crypto_generichash_statebytes=()=>(E._crypto_generichash_statebytes=T.ec)(),E._crypto_generichash=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_generichash=T.fc)(R,Z,tA,BA,dA,xA,WA),E._crypto_generichash_init=(R,Z,tA,BA)=>(E._crypto_generichash_init=T.gc)(R,Z,tA,BA),E._crypto_generichash_update=(R,Z,tA,BA)=>(E._crypto_generichash_update=T.hc)(R,Z,tA,BA),E._crypto_generichash_final=(R,Z,tA)=>(E._crypto_generichash_final=T.ic)(R,Z,tA),E._crypto_generichash_keygen=R=>(E._crypto_generichash_keygen=T.jc)(R),E._crypto_generichash_blake2b_bytes_min=()=>(E._crypto_generichash_blake2b_bytes_min=T.kc)(),E._crypto_generichash_blake2b_bytes_max=()=>(E._crypto_generichash_blake2b_bytes_max=T.lc)(),E._crypto_generichash_blake2b_bytes=()=>(E._crypto_generichash_blake2b_bytes=T.mc)(),E._crypto_generichash_blake2b_keybytes_min=()=>(E._crypto_generichash_blake2b_keybytes_min=T.nc)(),E._crypto_generichash_blake2b_keybytes_max=()=>(E._crypto_generichash_blake2b_keybytes_max=T.oc)(),E._crypto_generichash_blake2b_keybytes=()=>(E._crypto_generichash_blake2b_keybytes=T.pc)(),E._crypto_generichash_blake2b_saltbytes=()=>(E._crypto_generichash_blake2b_saltbytes=T.qc)(),E._crypto_generichash_blake2b_personalbytes=()=>(E._crypto_generichash_blake2b_personalbytes=T.rc)(),E._crypto_generichash_blake2b_statebytes=()=>(E._crypto_generichash_blake2b_statebytes=T.sc)(),E._crypto_generichash_blake2b_keygen=R=>(E._crypto_generichash_blake2b_keygen=T.tc)(R),E._crypto_generichash_blake2b=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_generichash_blake2b=T.uc)(R,Z,tA,BA,dA,xA,WA),E._crypto_generichash_blake2b_salt_personal=(R,Z,tA,BA,dA,xA,WA,Q0,K0)=>(E._crypto_generichash_blake2b_salt_personal=T.vc)(R,Z,tA,BA,dA,xA,WA,Q0,K0),E._crypto_generichash_blake2b_init=(R,Z,tA,BA)=>(E._crypto_generichash_blake2b_init=T.wc)(R,Z,tA,BA),E._crypto_generichash_blake2b_init_salt_personal=(R,Z,tA,BA,dA,xA)=>(E._crypto_generichash_blake2b_init_salt_personal=T.xc)(R,Z,tA,BA,dA,xA),E._crypto_generichash_blake2b_update=(R,Z,tA,BA)=>(E._crypto_generichash_blake2b_update=T.yc)(R,Z,tA,BA),E._crypto_generichash_blake2b_final=(R,Z,tA)=>(E._crypto_generichash_blake2b_final=T.zc)(R,Z,tA),E._crypto_hash_bytes=()=>(E._crypto_hash_bytes=T.Ac)(),E._crypto_hash=(R,Z,tA,BA)=>(E._crypto_hash=T.Bc)(R,Z,tA,BA),E._crypto_hash_primitive=()=>(E._crypto_hash_primitive=T.Cc)(),E._crypto_hash_sha256_bytes=()=>(E._crypto_hash_sha256_bytes=T.Dc)(),E._crypto_hash_sha256_statebytes=()=>(E._crypto_hash_sha256_statebytes=T.Ec)(),E._crypto_hash_sha256_init=R=>(E._crypto_hash_sha256_init=T.Fc)(R),E._crypto_hash_sha256_update=(R,Z,tA,BA)=>(E._crypto_hash_sha256_update=T.Gc)(R,Z,tA,BA),E._crypto_hash_sha256_final=(R,Z)=>(E._crypto_hash_sha256_final=T.Hc)(R,Z),E._crypto_hash_sha256=(R,Z,tA,BA)=>(E._crypto_hash_sha256=T.Ic)(R,Z,tA,BA),E._crypto_hash_sha512_bytes=()=>(E._crypto_hash_sha512_bytes=T.Jc)(),E._crypto_hash_sha512_statebytes=()=>(E._crypto_hash_sha512_statebytes=T.Kc)(),E._crypto_hash_sha512_init=R=>(E._crypto_hash_sha512_init=T.Lc)(R),E._crypto_hash_sha512_update=(R,Z,tA,BA)=>(E._crypto_hash_sha512_update=T.Mc)(R,Z,tA,BA),E._crypto_hash_sha512_final=(R,Z)=>(E._crypto_hash_sha512_final=T.Nc)(R,Z),E._crypto_hash_sha512=(R,Z,tA,BA)=>(E._crypto_hash_sha512=T.Oc)(R,Z,tA,BA),E._crypto_kdf_blake2b_bytes_min=()=>(E._crypto_kdf_blake2b_bytes_min=T.Pc)(),E._crypto_kdf_blake2b_bytes_max=()=>(E._crypto_kdf_blake2b_bytes_max=T.Qc)(),E._crypto_kdf_blake2b_contextbytes=()=>(E._crypto_kdf_blake2b_contextbytes=T.Rc)(),E._crypto_kdf_blake2b_keybytes=()=>(E._crypto_kdf_blake2b_keybytes=T.Sc)(),E._crypto_kdf_blake2b_derive_from_key=(R,Z,tA,BA,dA,xA)=>(E._crypto_kdf_blake2b_derive_from_key=T.Tc)(R,Z,tA,BA,dA,xA),E._crypto_kdf_primitive=()=>(E._crypto_kdf_primitive=T.Uc)(),E._crypto_kdf_bytes_min=()=>(E._crypto_kdf_bytes_min=T.Vc)(),E._crypto_kdf_bytes_max=()=>(E._crypto_kdf_bytes_max=T.Wc)(),E._crypto_kdf_contextbytes=()=>(E._crypto_kdf_contextbytes=T.Xc)(),E._crypto_kdf_keybytes=()=>(E._crypto_kdf_keybytes=T.Yc)(),E._crypto_kdf_derive_from_key=(R,Z,tA,BA,dA,xA)=>(E._crypto_kdf_derive_from_key=T.Zc)(R,Z,tA,BA,dA,xA),E._crypto_kdf_keygen=R=>(E._crypto_kdf_keygen=T._c)(R),E._crypto_kdf_hkdf_sha256_extract_init=(R,Z,tA)=>(E._crypto_kdf_hkdf_sha256_extract_init=T.$c)(R,Z,tA),E._crypto_kdf_hkdf_sha256_extract_update=(R,Z,tA)=>(E._crypto_kdf_hkdf_sha256_extract_update=T.ad)(R,Z,tA),E._crypto_kdf_hkdf_sha256_extract_final=(R,Z)=>(E._crypto_kdf_hkdf_sha256_extract_final=T.bd)(R,Z),E._crypto_kdf_hkdf_sha256_extract=(R,Z,tA,BA,dA)=>(E._crypto_kdf_hkdf_sha256_extract=T.cd)(R,Z,tA,BA,dA),E._crypto_kdf_hkdf_sha256_keygen=R=>(E._crypto_kdf_hkdf_sha256_keygen=T.dd)(R),E._crypto_kdf_hkdf_sha256_expand=(R,Z,tA,BA,dA)=>(E._crypto_kdf_hkdf_sha256_expand=T.ed)(R,Z,tA,BA,dA),E._crypto_kdf_hkdf_sha256_keybytes=()=>(E._crypto_kdf_hkdf_sha256_keybytes=T.fd)(),E._crypto_kdf_hkdf_sha256_bytes_min=()=>(E._crypto_kdf_hkdf_sha256_bytes_min=T.gd)(),E._crypto_kdf_hkdf_sha256_bytes_max=()=>(E._crypto_kdf_hkdf_sha256_bytes_max=T.hd)(),E._crypto_kdf_hkdf_sha256_statebytes=()=>(E._crypto_kdf_hkdf_sha256_statebytes=T.id)(),E._crypto_kdf_hkdf_sha512_extract_init=(R,Z,tA)=>(E._crypto_kdf_hkdf_sha512_extract_init=T.jd)(R,Z,tA),E._crypto_kdf_hkdf_sha512_extract_update=(R,Z,tA)=>(E._crypto_kdf_hkdf_sha512_extract_update=T.kd)(R,Z,tA),E._crypto_kdf_hkdf_sha512_extract_final=(R,Z)=>(E._crypto_kdf_hkdf_sha512_extract_final=T.ld)(R,Z),E._crypto_kdf_hkdf_sha512_extract=(R,Z,tA,BA,dA)=>(E._crypto_kdf_hkdf_sha512_extract=T.md)(R,Z,tA,BA,dA),E._crypto_kdf_hkdf_sha512_keygen=R=>(E._crypto_kdf_hkdf_sha512_keygen=T.nd)(R),E._crypto_kdf_hkdf_sha512_expand=(R,Z,tA,BA,dA)=>(E._crypto_kdf_hkdf_sha512_expand=T.od)(R,Z,tA,BA,dA),E._crypto_kdf_hkdf_sha512_keybytes=()=>(E._crypto_kdf_hkdf_sha512_keybytes=T.pd)(),E._crypto_kdf_hkdf_sha512_bytes_min=()=>(E._crypto_kdf_hkdf_sha512_bytes_min=T.qd)(),E._crypto_kdf_hkdf_sha512_bytes_max=()=>(E._crypto_kdf_hkdf_sha512_bytes_max=T.rd)(),E._crypto_kdf_hkdf_sha512_statebytes=()=>(E._crypto_kdf_hkdf_sha512_statebytes=T.sd)(),E._crypto_kx_seed_keypair=(R,Z,tA)=>(E._crypto_kx_seed_keypair=T.td)(R,Z,tA),E._crypto_kx_keypair=(R,Z)=>(E._crypto_kx_keypair=T.ud)(R,Z),E._crypto_kx_client_session_keys=(R,Z,tA,BA,dA)=>(E._crypto_kx_client_session_keys=T.vd)(R,Z,tA,BA,dA),E._crypto_kx_server_session_keys=(R,Z,tA,BA,dA)=>(E._crypto_kx_server_session_keys=T.wd)(R,Z,tA,BA,dA),E._crypto_kx_publickeybytes=()=>(E._crypto_kx_publickeybytes=T.xd)(),E._crypto_kx_secretkeybytes=()=>(E._crypto_kx_secretkeybytes=T.yd)(),E._crypto_kx_seedbytes=()=>(E._crypto_kx_seedbytes=T.zd)(),E._crypto_kx_sessionkeybytes=()=>(E._crypto_kx_sessionkeybytes=T.Ad)(),E._crypto_kx_primitive=()=>(E._crypto_kx_primitive=T.Bd)(),E._crypto_onetimeauth_statebytes=()=>(E._crypto_onetimeauth_statebytes=T.Cd)(),E._crypto_onetimeauth_bytes=()=>(E._crypto_onetimeauth_bytes=T.Dd)(),E._crypto_onetimeauth_keybytes=()=>(E._crypto_onetimeauth_keybytes=T.Ed)(),E._crypto_onetimeauth=(R,Z,tA,BA,dA)=>(E._crypto_onetimeauth=T.Fd)(R,Z,tA,BA,dA),E._crypto_onetimeauth_verify=(R,Z,tA,BA,dA)=>(E._crypto_onetimeauth_verify=T.Gd)(R,Z,tA,BA,dA),E._crypto_onetimeauth_init=(R,Z)=>(E._crypto_onetimeauth_init=T.Hd)(R,Z),E._crypto_onetimeauth_update=(R,Z,tA,BA)=>(E._crypto_onetimeauth_update=T.Id)(R,Z,tA,BA),E._crypto_onetimeauth_final=(R,Z)=>(E._crypto_onetimeauth_final=T.Jd)(R,Z),E._crypto_onetimeauth_primitive=()=>(E._crypto_onetimeauth_primitive=T.Kd)(),E._crypto_onetimeauth_keygen=R=>(E._crypto_onetimeauth_keygen=T.Ld)(R),E._crypto_onetimeauth_poly1305=(R,Z,tA,BA,dA)=>(E._crypto_onetimeauth_poly1305=T.Md)(R,Z,tA,BA,dA),E._crypto_onetimeauth_poly1305_verify=(R,Z,tA,BA,dA)=>(E._crypto_onetimeauth_poly1305_verify=T.Nd)(R,Z,tA,BA,dA),E._crypto_onetimeauth_poly1305_init=(R,Z)=>(E._crypto_onetimeauth_poly1305_init=T.Od)(R,Z),E._crypto_onetimeauth_poly1305_update=(R,Z,tA,BA)=>(E._crypto_onetimeauth_poly1305_update=T.Pd)(R,Z,tA,BA),E._crypto_onetimeauth_poly1305_final=(R,Z)=>(E._crypto_onetimeauth_poly1305_final=T.Qd)(R,Z),E._crypto_onetimeauth_poly1305_bytes=()=>(E._crypto_onetimeauth_poly1305_bytes=T.Rd)(),E._crypto_onetimeauth_poly1305_keybytes=()=>(E._crypto_onetimeauth_poly1305_keybytes=T.Sd)(),E._crypto_onetimeauth_poly1305_statebytes=()=>(E._crypto_onetimeauth_poly1305_statebytes=T.Td)(),E._crypto_onetimeauth_poly1305_keygen=R=>(E._crypto_onetimeauth_poly1305_keygen=T.Ud)(R),E._crypto_pwhash_argon2i_alg_argon2i13=()=>(E._crypto_pwhash_argon2i_alg_argon2i13=T.Vd)(),E._crypto_pwhash_argon2i_bytes_min=()=>(E._crypto_pwhash_argon2i_bytes_min=T.Wd)(),E._crypto_pwhash_argon2i_bytes_max=()=>(E._crypto_pwhash_argon2i_bytes_max=T.Xd)(),E._crypto_pwhash_argon2i_passwd_min=()=>(E._crypto_pwhash_argon2i_passwd_min=T.Yd)(),E._crypto_pwhash_argon2i_passwd_max=()=>(E._crypto_pwhash_argon2i_passwd_max=T.Zd)(),E._crypto_pwhash_argon2i_saltbytes=()=>(E._crypto_pwhash_argon2i_saltbytes=T._d)(),E._crypto_pwhash_argon2i_strbytes=()=>(E._crypto_pwhash_argon2i_strbytes=T.$d)(),E._crypto_pwhash_argon2i_strprefix=()=>(E._crypto_pwhash_argon2i_strprefix=T.ae)(),E._crypto_pwhash_argon2i_opslimit_min=()=>(E._crypto_pwhash_argon2i_opslimit_min=T.be)(),E._crypto_pwhash_argon2i_opslimit_max=()=>(E._crypto_pwhash_argon2i_opslimit_max=T.ce)(),E._crypto_pwhash_argon2i_memlimit_min=()=>(E._crypto_pwhash_argon2i_memlimit_min=T.de)(),E._crypto_pwhash_argon2i_memlimit_max=()=>(E._crypto_pwhash_argon2i_memlimit_max=T.ee)(),E._crypto_pwhash_argon2i_opslimit_interactive=()=>(E._crypto_pwhash_argon2i_opslimit_interactive=T.fe)(),E._crypto_pwhash_argon2i_memlimit_interactive=()=>(E._crypto_pwhash_argon2i_memlimit_interactive=T.ge)(),E._crypto_pwhash_argon2i_opslimit_moderate=()=>(E._crypto_pwhash_argon2i_opslimit_moderate=T.he)(),E._crypto_pwhash_argon2i_memlimit_moderate=()=>(E._crypto_pwhash_argon2i_memlimit_moderate=T.ie)(),E._crypto_pwhash_argon2i_opslimit_sensitive=()=>(E._crypto_pwhash_argon2i_opslimit_sensitive=T.je)(),E._crypto_pwhash_argon2i_memlimit_sensitive=()=>(E._crypto_pwhash_argon2i_memlimit_sensitive=T.ke)(),E._crypto_pwhash_argon2i=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_pwhash_argon2i=T.le)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_pwhash_argon2i_str=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_pwhash_argon2i_str=T.me)(R,Z,tA,BA,dA,xA,WA),E._crypto_pwhash_argon2i_str_verify=(R,Z,tA,BA)=>(E._crypto_pwhash_argon2i_str_verify=T.ne)(R,Z,tA,BA),E._crypto_pwhash_argon2i_str_needs_rehash=(R,Z,tA,BA)=>(E._crypto_pwhash_argon2i_str_needs_rehash=T.oe)(R,Z,tA,BA),E._crypto_pwhash_argon2id_str_needs_rehash=(R,Z,tA,BA)=>(E._crypto_pwhash_argon2id_str_needs_rehash=T.pe)(R,Z,tA,BA),E._crypto_pwhash_argon2id_alg_argon2id13=()=>(E._crypto_pwhash_argon2id_alg_argon2id13=T.qe)(),E._crypto_pwhash_argon2id_bytes_min=()=>(E._crypto_pwhash_argon2id_bytes_min=T.re)(),E._crypto_pwhash_argon2id_bytes_max=()=>(E._crypto_pwhash_argon2id_bytes_max=T.se)(),E._crypto_pwhash_argon2id_passwd_min=()=>(E._crypto_pwhash_argon2id_passwd_min=T.te)(),E._crypto_pwhash_argon2id_passwd_max=()=>(E._crypto_pwhash_argon2id_passwd_max=T.ue)(),E._crypto_pwhash_argon2id_saltbytes=()=>(E._crypto_pwhash_argon2id_saltbytes=T.ve)(),E._crypto_pwhash_argon2id_strbytes=()=>(E._crypto_pwhash_argon2id_strbytes=T.we)(),E._crypto_pwhash_argon2id_strprefix=()=>(E._crypto_pwhash_argon2id_strprefix=T.xe)(),E._crypto_pwhash_argon2id_opslimit_min=()=>(E._crypto_pwhash_argon2id_opslimit_min=T.ye)(),E._crypto_pwhash_argon2id_opslimit_max=()=>(E._crypto_pwhash_argon2id_opslimit_max=T.ze)(),E._crypto_pwhash_argon2id_memlimit_min=()=>(E._crypto_pwhash_argon2id_memlimit_min=T.Ae)(),E._crypto_pwhash_argon2id_memlimit_max=()=>(E._crypto_pwhash_argon2id_memlimit_max=T.Be)(),E._crypto_pwhash_argon2id_opslimit_interactive=()=>(E._crypto_pwhash_argon2id_opslimit_interactive=T.Ce)(),E._crypto_pwhash_argon2id_memlimit_interactive=()=>(E._crypto_pwhash_argon2id_memlimit_interactive=T.De)(),E._crypto_pwhash_argon2id_opslimit_moderate=()=>(E._crypto_pwhash_argon2id_opslimit_moderate=T.Ee)(),E._crypto_pwhash_argon2id_memlimit_moderate=()=>(E._crypto_pwhash_argon2id_memlimit_moderate=T.Fe)(),E._crypto_pwhash_argon2id_opslimit_sensitive=()=>(E._crypto_pwhash_argon2id_opslimit_sensitive=T.Ge)(),E._crypto_pwhash_argon2id_memlimit_sensitive=()=>(E._crypto_pwhash_argon2id_memlimit_sensitive=T.He)(),E._crypto_pwhash_argon2id=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_pwhash_argon2id=T.Ie)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_pwhash_argon2id_str=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_pwhash_argon2id_str=T.Je)(R,Z,tA,BA,dA,xA,WA),E._crypto_pwhash_argon2id_str_verify=(R,Z,tA,BA)=>(E._crypto_pwhash_argon2id_str_verify=T.Ke)(R,Z,tA,BA),E._crypto_pwhash_alg_argon2i13=()=>(E._crypto_pwhash_alg_argon2i13=T.Le)(),E._crypto_pwhash_alg_argon2id13=()=>(E._crypto_pwhash_alg_argon2id13=T.Me)(),E._crypto_pwhash_alg_default=()=>(E._crypto_pwhash_alg_default=T.Ne)(),E._crypto_pwhash_bytes_min=()=>(E._crypto_pwhash_bytes_min=T.Oe)(),E._crypto_pwhash_bytes_max=()=>(E._crypto_pwhash_bytes_max=T.Pe)(),E._crypto_pwhash_passwd_min=()=>(E._crypto_pwhash_passwd_min=T.Qe)(),E._crypto_pwhash_passwd_max=()=>(E._crypto_pwhash_passwd_max=T.Re)(),E._crypto_pwhash_saltbytes=()=>(E._crypto_pwhash_saltbytes=T.Se)(),E._crypto_pwhash_strbytes=()=>(E._crypto_pwhash_strbytes=T.Te)(),E._crypto_pwhash_strprefix=()=>(E._crypto_pwhash_strprefix=T.Ue)(),E._crypto_pwhash_opslimit_min=()=>(E._crypto_pwhash_opslimit_min=T.Ve)(),E._crypto_pwhash_opslimit_max=()=>(E._crypto_pwhash_opslimit_max=T.We)(),E._crypto_pwhash_memlimit_min=()=>(E._crypto_pwhash_memlimit_min=T.Xe)(),E._crypto_pwhash_memlimit_max=()=>(E._crypto_pwhash_memlimit_max=T.Ye)(),E._crypto_pwhash_opslimit_interactive=()=>(E._crypto_pwhash_opslimit_interactive=T.Ze)(),E._crypto_pwhash_memlimit_interactive=()=>(E._crypto_pwhash_memlimit_interactive=T._e)(),E._crypto_pwhash_opslimit_moderate=()=>(E._crypto_pwhash_opslimit_moderate=T.$e)(),E._crypto_pwhash_memlimit_moderate=()=>(E._crypto_pwhash_memlimit_moderate=T.af)(),E._crypto_pwhash_opslimit_sensitive=()=>(E._crypto_pwhash_opslimit_sensitive=T.bf)(),E._crypto_pwhash_memlimit_sensitive=()=>(E._crypto_pwhash_memlimit_sensitive=T.cf)(),E._crypto_pwhash=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c)=>(E._crypto_pwhash=T.df)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c),E._crypto_pwhash_str=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_pwhash_str=T.ef)(R,Z,tA,BA,dA,xA,WA),E._crypto_pwhash_str_alg=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_pwhash_str_alg=T.ff)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_pwhash_str_verify=(R,Z,tA,BA)=>(E._crypto_pwhash_str_verify=T.gf)(R,Z,tA,BA),E._crypto_pwhash_str_needs_rehash=(R,Z,tA,BA)=>(E._crypto_pwhash_str_needs_rehash=T.hf)(R,Z,tA,BA),E._crypto_pwhash_primitive=()=>(E._crypto_pwhash_primitive=T.jf)(),E._crypto_scalarmult_primitive=()=>(E._crypto_scalarmult_primitive=T.kf)(),E._crypto_scalarmult_base=(R,Z)=>(E._crypto_scalarmult_base=T.lf)(R,Z),E._crypto_scalarmult=(R,Z,tA)=>(E._crypto_scalarmult=T.mf)(R,Z,tA),E._crypto_scalarmult_bytes=()=>(E._crypto_scalarmult_bytes=T.nf)(),E._crypto_scalarmult_scalarbytes=()=>(E._crypto_scalarmult_scalarbytes=T.of)(),E._crypto_scalarmult_curve25519=(R,Z,tA)=>(E._crypto_scalarmult_curve25519=T.pf)(R,Z,tA),E._crypto_scalarmult_curve25519_base=(R,Z)=>(E._crypto_scalarmult_curve25519_base=T.qf)(R,Z),E._crypto_scalarmult_curve25519_bytes=()=>(E._crypto_scalarmult_curve25519_bytes=T.rf)(),E._crypto_scalarmult_curve25519_scalarbytes=()=>(E._crypto_scalarmult_curve25519_scalarbytes=T.sf)(),E._crypto_secretbox_keybytes=()=>(E._crypto_secretbox_keybytes=T.tf)(),E._crypto_secretbox_noncebytes=()=>(E._crypto_secretbox_noncebytes=T.uf)(),E._crypto_secretbox_zerobytes=()=>(E._crypto_secretbox_zerobytes=T.vf)(),E._crypto_secretbox_boxzerobytes=()=>(E._crypto_secretbox_boxzerobytes=T.wf)(),E._crypto_secretbox_macbytes=()=>(E._crypto_secretbox_macbytes=T.xf)(),E._crypto_secretbox_messagebytes_max=()=>(E._crypto_secretbox_messagebytes_max=T.yf)(),E._crypto_secretbox_primitive=()=>(E._crypto_secretbox_primitive=T.zf)(),E._crypto_secretbox=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox=T.Af)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_open=T.Bf)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_keygen=R=>(E._crypto_secretbox_keygen=T.Cf)(R),E._crypto_secretbox_detached=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_secretbox_detached=T.Df)(R,Z,tA,BA,dA,xA,WA),E._crypto_secretbox_easy=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_easy=T.Ef)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_open_detached=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_secretbox_open_detached=T.Ff)(R,Z,tA,BA,dA,xA,WA),E._crypto_secretbox_open_easy=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_open_easy=T.Gf)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_xsalsa20poly1305=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_xsalsa20poly1305=T.Hf)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_xsalsa20poly1305_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_xsalsa20poly1305_open=T.If)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_xsalsa20poly1305_keybytes=()=>(E._crypto_secretbox_xsalsa20poly1305_keybytes=T.Jf)(),E._crypto_secretbox_xsalsa20poly1305_noncebytes=()=>(E._crypto_secretbox_xsalsa20poly1305_noncebytes=T.Kf)(),E._crypto_secretbox_xsalsa20poly1305_zerobytes=()=>(E._crypto_secretbox_xsalsa20poly1305_zerobytes=T.Lf)(),E._crypto_secretbox_xsalsa20poly1305_boxzerobytes=()=>(E._crypto_secretbox_xsalsa20poly1305_boxzerobytes=T.Mf)(),E._crypto_secretbox_xsalsa20poly1305_macbytes=()=>(E._crypto_secretbox_xsalsa20poly1305_macbytes=T.Nf)(),E._crypto_secretbox_xsalsa20poly1305_messagebytes_max=()=>(E._crypto_secretbox_xsalsa20poly1305_messagebytes_max=T.Of)(),E._crypto_secretbox_xsalsa20poly1305_keygen=R=>(E._crypto_secretbox_xsalsa20poly1305_keygen=T.Pf)(R),E._crypto_secretstream_xchacha20poly1305_keygen=R=>(E._crypto_secretstream_xchacha20poly1305_keygen=T.Qf)(R),E._crypto_secretstream_xchacha20poly1305_init_push=(R,Z,tA)=>(E._crypto_secretstream_xchacha20poly1305_init_push=T.Rf)(R,Z,tA),E._crypto_secretstream_xchacha20poly1305_init_pull=(R,Z,tA)=>(E._crypto_secretstream_xchacha20poly1305_init_pull=T.Sf)(R,Z,tA),E._crypto_secretstream_xchacha20poly1305_rekey=R=>(E._crypto_secretstream_xchacha20poly1305_rekey=T.Tf)(R),E._crypto_secretstream_xchacha20poly1305_push=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0)=>(E._crypto_secretstream_xchacha20poly1305_push=T.Uf)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0),E._crypto_secretstream_xchacha20poly1305_pull=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0)=>(E._crypto_secretstream_xchacha20poly1305_pull=T.Vf)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0),E._crypto_secretstream_xchacha20poly1305_statebytes=()=>(E._crypto_secretstream_xchacha20poly1305_statebytes=T.Wf)(),E._crypto_secretstream_xchacha20poly1305_abytes=()=>(E._crypto_secretstream_xchacha20poly1305_abytes=T.Xf)(),E._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(E._crypto_secretstream_xchacha20poly1305_headerbytes=T.Yf)(),E._crypto_secretstream_xchacha20poly1305_keybytes=()=>(E._crypto_secretstream_xchacha20poly1305_keybytes=T.Zf)(),E._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(E._crypto_secretstream_xchacha20poly1305_messagebytes_max=T._f)(),E._crypto_secretstream_xchacha20poly1305_tag_message=()=>(E._crypto_secretstream_xchacha20poly1305_tag_message=T.$f)(),E._crypto_secretstream_xchacha20poly1305_tag_push=()=>(E._crypto_secretstream_xchacha20poly1305_tag_push=T.ag)(),E._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(E._crypto_secretstream_xchacha20poly1305_tag_rekey=T.bg)(),E._crypto_secretstream_xchacha20poly1305_tag_final=()=>(E._crypto_secretstream_xchacha20poly1305_tag_final=T.cg)(),E._crypto_shorthash_bytes=()=>(E._crypto_shorthash_bytes=T.dg)(),E._crypto_shorthash_keybytes=()=>(E._crypto_shorthash_keybytes=T.eg)(),E._crypto_shorthash_primitive=()=>(E._crypto_shorthash_primitive=T.fg)(),E._crypto_shorthash=(R,Z,tA,BA,dA)=>(E._crypto_shorthash=T.gg)(R,Z,tA,BA,dA),E._crypto_shorthash_keygen=R=>(E._crypto_shorthash_keygen=T.hg)(R),E._crypto_shorthash_siphash24_bytes=()=>(E._crypto_shorthash_siphash24_bytes=T.ig)(),E._crypto_shorthash_siphash24_keybytes=()=>(E._crypto_shorthash_siphash24_keybytes=T.jg)(),E._crypto_shorthash_siphash24=(R,Z,tA,BA,dA)=>(E._crypto_shorthash_siphash24=T.kg)(R,Z,tA,BA,dA),E._crypto_sign_statebytes=()=>(E._crypto_sign_statebytes=T.lg)(),E._crypto_sign_bytes=()=>(E._crypto_sign_bytes=T.mg)(),E._crypto_sign_seedbytes=()=>(E._crypto_sign_seedbytes=T.ng)(),E._crypto_sign_publickeybytes=()=>(E._crypto_sign_publickeybytes=T.og)(),E._crypto_sign_secretkeybytes=()=>(E._crypto_sign_secretkeybytes=T.pg)(),E._crypto_sign_messagebytes_max=()=>(E._crypto_sign_messagebytes_max=T.qg)(),E._crypto_sign_primitive=()=>(E._crypto_sign_primitive=T.rg)(),E._crypto_sign_seed_keypair=(R,Z,tA)=>(E._crypto_sign_seed_keypair=T.sg)(R,Z,tA),E._crypto_sign_keypair=(R,Z)=>(E._crypto_sign_keypair=T.tg)(R,Z),E._crypto_sign=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign=T.ug)(R,Z,tA,BA,dA,xA),E._crypto_sign_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign_open=T.vg)(R,Z,tA,BA,dA,xA),E._crypto_sign_detached=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign_detached=T.wg)(R,Z,tA,BA,dA,xA),E._crypto_sign_verify_detached=(R,Z,tA,BA,dA)=>(E._crypto_sign_verify_detached=T.xg)(R,Z,tA,BA,dA),E._crypto_sign_init=R=>(E._crypto_sign_init=T.yg)(R),E._crypto_sign_update=(R,Z,tA,BA)=>(E._crypto_sign_update=T.zg)(R,Z,tA,BA),E._crypto_sign_final_create=(R,Z,tA,BA)=>(E._crypto_sign_final_create=T.Ag)(R,Z,tA,BA),E._crypto_sign_final_verify=(R,Z,tA)=>(E._crypto_sign_final_verify=T.Bg)(R,Z,tA),E._crypto_sign_ed25519ph_statebytes=()=>(E._crypto_sign_ed25519ph_statebytes=T.Cg)(),E._crypto_sign_ed25519_bytes=()=>(E._crypto_sign_ed25519_bytes=T.Dg)(),E._crypto_sign_ed25519_seedbytes=()=>(E._crypto_sign_ed25519_seedbytes=T.Eg)(),E._crypto_sign_ed25519_publickeybytes=()=>(E._crypto_sign_ed25519_publickeybytes=T.Fg)(),E._crypto_sign_ed25519_secretkeybytes=()=>(E._crypto_sign_ed25519_secretkeybytes=T.Gg)(),E._crypto_sign_ed25519_messagebytes_max=()=>(E._crypto_sign_ed25519_messagebytes_max=T.Hg)(),E._crypto_sign_ed25519_sk_to_seed=(R,Z)=>(E._crypto_sign_ed25519_sk_to_seed=T.Ig)(R,Z),E._crypto_sign_ed25519_sk_to_pk=(R,Z)=>(E._crypto_sign_ed25519_sk_to_pk=T.Jg)(R,Z),E._crypto_sign_ed25519ph_init=R=>(E._crypto_sign_ed25519ph_init=T.Kg)(R),E._crypto_sign_ed25519ph_update=(R,Z,tA,BA)=>(E._crypto_sign_ed25519ph_update=T.Lg)(R,Z,tA,BA),E._crypto_sign_ed25519ph_final_create=(R,Z,tA,BA)=>(E._crypto_sign_ed25519ph_final_create=T.Mg)(R,Z,tA,BA),E._crypto_sign_ed25519ph_final_verify=(R,Z,tA)=>(E._crypto_sign_ed25519ph_final_verify=T.Ng)(R,Z,tA),E._crypto_sign_ed25519_seed_keypair=(R,Z,tA)=>(E._crypto_sign_ed25519_seed_keypair=T.Og)(R,Z,tA),E._crypto_sign_ed25519_keypair=(R,Z)=>(E._crypto_sign_ed25519_keypair=T.Pg)(R,Z),E._crypto_sign_ed25519_pk_to_curve25519=(R,Z)=>(E._crypto_sign_ed25519_pk_to_curve25519=T.Qg)(R,Z),E._crypto_sign_ed25519_sk_to_curve25519=(R,Z)=>(E._crypto_sign_ed25519_sk_to_curve25519=T.Rg)(R,Z),E._crypto_sign_ed25519_verify_detached=(R,Z,tA,BA,dA)=>(E._crypto_sign_ed25519_verify_detached=T.Sg)(R,Z,tA,BA,dA),E._crypto_sign_ed25519_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign_ed25519_open=T.Tg)(R,Z,tA,BA,dA,xA),E._crypto_sign_ed25519_detached=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign_ed25519_detached=T.Ug)(R,Z,tA,BA,dA,xA),E._crypto_sign_ed25519=(R,Z,tA,BA,dA,xA)=>(E._crypto_sign_ed25519=T.Vg)(R,Z,tA,BA,dA,xA),E._crypto_stream_chacha20_keybytes=()=>(E._crypto_stream_chacha20_keybytes=T.Wg)(),E._crypto_stream_chacha20_noncebytes=()=>(E._crypto_stream_chacha20_noncebytes=T.Xg)(),E._crypto_stream_chacha20_messagebytes_max=()=>(E._crypto_stream_chacha20_messagebytes_max=T.Yg)(),E._crypto_stream_chacha20_ietf_keybytes=()=>(E._crypto_stream_chacha20_ietf_keybytes=T.Zg)(),E._crypto_stream_chacha20_ietf_noncebytes=()=>(E._crypto_stream_chacha20_ietf_noncebytes=T._g)(),E._crypto_stream_chacha20_ietf_messagebytes_max=()=>(E._crypto_stream_chacha20_ietf_messagebytes_max=T.$g)(),E._crypto_stream_chacha20=(R,Z,tA,BA,dA)=>(E._crypto_stream_chacha20=T.ah)(R,Z,tA,BA,dA),E._crypto_stream_chacha20_xor_ic=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_stream_chacha20_xor_ic=T.bh)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_stream_chacha20_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_chacha20_xor=T.ch)(R,Z,tA,BA,dA,xA),E._crypto_stream_chacha20_ietf=(R,Z,tA,BA,dA)=>(E._crypto_stream_chacha20_ietf=T.dh)(R,Z,tA,BA,dA),E._crypto_stream_chacha20_ietf_xor_ic=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_stream_chacha20_ietf_xor_ic=T.eh)(R,Z,tA,BA,dA,xA,WA),E._crypto_stream_chacha20_ietf_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_chacha20_ietf_xor=T.fh)(R,Z,tA,BA,dA,xA),E._crypto_stream_chacha20_ietf_keygen=R=>(E._crypto_stream_chacha20_ietf_keygen=T.gh)(R),E._crypto_stream_chacha20_keygen=R=>(E._crypto_stream_chacha20_keygen=T.hh)(R),E._crypto_stream_keybytes=()=>(E._crypto_stream_keybytes=T.ih)(),E._crypto_stream_noncebytes=()=>(E._crypto_stream_noncebytes=T.jh)(),E._crypto_stream_messagebytes_max=()=>(E._crypto_stream_messagebytes_max=T.kh)(),E._crypto_stream_primitive=()=>(E._crypto_stream_primitive=T.lh)(),E._crypto_stream=(R,Z,tA,BA,dA)=>(E._crypto_stream=T.mh)(R,Z,tA,BA,dA),E._crypto_stream_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_xor=T.nh)(R,Z,tA,BA,dA,xA),E._crypto_stream_keygen=R=>(E._crypto_stream_keygen=T.oh)(R),E._crypto_stream_salsa20_keybytes=()=>(E._crypto_stream_salsa20_keybytes=T.ph)(),E._crypto_stream_salsa20_noncebytes=()=>(E._crypto_stream_salsa20_noncebytes=T.qh)(),E._crypto_stream_salsa20_messagebytes_max=()=>(E._crypto_stream_salsa20_messagebytes_max=T.rh)(),E._crypto_stream_salsa20=(R,Z,tA,BA,dA)=>(E._crypto_stream_salsa20=T.sh)(R,Z,tA,BA,dA),E._crypto_stream_salsa20_xor_ic=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_stream_salsa20_xor_ic=T.th)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_stream_salsa20_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_salsa20_xor=T.uh)(R,Z,tA,BA,dA,xA),E._crypto_stream_salsa20_keygen=R=>(E._crypto_stream_salsa20_keygen=T.vh)(R),E._crypto_stream_xsalsa20=(R,Z,tA,BA,dA)=>(E._crypto_stream_xsalsa20=T.wh)(R,Z,tA,BA,dA),E._crypto_stream_xsalsa20_xor_ic=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_stream_xsalsa20_xor_ic=T.xh)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_stream_xsalsa20_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_xsalsa20_xor=T.yh)(R,Z,tA,BA,dA,xA),E._crypto_stream_xsalsa20_keybytes=()=>(E._crypto_stream_xsalsa20_keybytes=T.zh)(),E._crypto_stream_xsalsa20_noncebytes=()=>(E._crypto_stream_xsalsa20_noncebytes=T.Ah)(),E._crypto_stream_xsalsa20_messagebytes_max=()=>(E._crypto_stream_xsalsa20_messagebytes_max=T.Bh)(),E._crypto_stream_xsalsa20_keygen=R=>(E._crypto_stream_xsalsa20_keygen=T.Ch)(R),E._crypto_verify_16_bytes=()=>(E._crypto_verify_16_bytes=T.Dh)(),E._crypto_verify_32_bytes=()=>(E._crypto_verify_32_bytes=T.Eh)(),E._crypto_verify_64_bytes=()=>(E._crypto_verify_64_bytes=T.Fh)(),E._crypto_verify_16=(R,Z)=>(E._crypto_verify_16=T.Gh)(R,Z),E._crypto_verify_32=(R,Z)=>(E._crypto_verify_32=T.Hh)(R,Z),E._crypto_verify_64=(R,Z)=>(E._crypto_verify_64=T.Ih)(R,Z),E._randombytes_implementation_name=()=>(E._randombytes_implementation_name=T.Jh)(),E._randombytes_random=()=>(E._randombytes_random=T.Kh)(),E._randombytes_stir=()=>(E._randombytes_stir=T.Lh)(),E._randombytes_uniform=R=>(E._randombytes_uniform=T.Mh)(R),E._randombytes_buf=(R,Z)=>(E._randombytes_buf=T.Nh)(R,Z),E._randombytes_buf_deterministic=(R,Z,tA)=>(E._randombytes_buf_deterministic=T.Oh)(R,Z,tA),E._randombytes_seedbytes=()=>(E._randombytes_seedbytes=T.Ph)(),E._randombytes_close=()=>(E._randombytes_close=T.Qh)(),E._randombytes=(R,Z,tA)=>(E._randombytes=T.Rh)(R,Z,tA),E._sodium_bin2hex=(R,Z,tA,BA)=>(E._sodium_bin2hex=T.Sh)(R,Z,tA,BA),E._sodium_hex2bin=(R,Z,tA,BA,dA,xA,WA)=>(E._sodium_hex2bin=T.Th)(R,Z,tA,BA,dA,xA,WA),E._sodium_base64_encoded_len=(R,Z)=>(E._sodium_base64_encoded_len=T.Uh)(R,Z),E._sodium_bin2base64=(R,Z,tA,BA,dA)=>(E._sodium_bin2base64=T.Vh)(R,Z,tA,BA,dA),E._sodium_base642bin=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._sodium_base642bin=T.Wh)(R,Z,tA,BA,dA,xA,WA,Q0),E._sodium_init=()=>(E._sodium_init=T.Xh)(),E._sodium_pad=(R,Z,tA,BA,dA)=>(E._sodium_pad=T.Yh)(R,Z,tA,BA,dA),E._sodium_unpad=(R,Z,tA,BA)=>(E._sodium_unpad=T.Zh)(R,Z,tA,BA),E._sodium_version_string=()=>(E._sodium_version_string=T._h)(),E._sodium_library_version_major=()=>(E._sodium_library_version_major=T.$h)(),E._sodium_library_version_minor=()=>(E._sodium_library_version_minor=T.ai)(),E._sodium_library_minimal=()=>(E._sodium_library_minimal=T.bi)(),E._crypto_box_curve25519xchacha20poly1305_seed_keypair=(R,Z,tA)=>(E._crypto_box_curve25519xchacha20poly1305_seed_keypair=T.ci)(R,Z,tA),E._crypto_box_curve25519xchacha20poly1305_keypair=(R,Z)=>(E._crypto_box_curve25519xchacha20poly1305_keypair=T.di)(R,Z),E._crypto_box_curve25519xchacha20poly1305_beforenm=(R,Z,tA)=>(E._crypto_box_curve25519xchacha20poly1305_beforenm=T.ei)(R,Z,tA),E._crypto_box_curve25519xchacha20poly1305_detached_afternm=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xchacha20poly1305_detached_afternm=T.fi)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xchacha20poly1305_detached=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_box_curve25519xchacha20poly1305_detached=T.gi)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_box_curve25519xchacha20poly1305_easy_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_curve25519xchacha20poly1305_easy_afternm=T.hi)(R,Z,tA,BA,dA,xA),E._crypto_box_curve25519xchacha20poly1305_easy=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xchacha20poly1305_easy=T.ii)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=T.ji)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xchacha20poly1305_open_detached=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_box_curve25519xchacha20poly1305_open_detached=T.ki)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=T.li)(R,Z,tA,BA,dA,xA),E._crypto_box_curve25519xchacha20poly1305_open_easy=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_box_curve25519xchacha20poly1305_open_easy=T.mi)(R,Z,tA,BA,dA,xA,WA),E._crypto_box_curve25519xchacha20poly1305_seedbytes=()=>(E._crypto_box_curve25519xchacha20poly1305_seedbytes=T.ni)(),E._crypto_box_curve25519xchacha20poly1305_publickeybytes=()=>(E._crypto_box_curve25519xchacha20poly1305_publickeybytes=T.oi)(),E._crypto_box_curve25519xchacha20poly1305_secretkeybytes=()=>(E._crypto_box_curve25519xchacha20poly1305_secretkeybytes=T.pi)(),E._crypto_box_curve25519xchacha20poly1305_beforenmbytes=()=>(E._crypto_box_curve25519xchacha20poly1305_beforenmbytes=T.qi)(),E._crypto_box_curve25519xchacha20poly1305_noncebytes=()=>(E._crypto_box_curve25519xchacha20poly1305_noncebytes=T.ri)(),E._crypto_box_curve25519xchacha20poly1305_macbytes=()=>(E._crypto_box_curve25519xchacha20poly1305_macbytes=T.si)(),E._crypto_box_curve25519xchacha20poly1305_messagebytes_max=()=>(E._crypto_box_curve25519xchacha20poly1305_messagebytes_max=T.ti)(),E._crypto_box_curve25519xchacha20poly1305_seal=(R,Z,tA,BA,dA)=>(E._crypto_box_curve25519xchacha20poly1305_seal=T.ui)(R,Z,tA,BA,dA),E._crypto_box_curve25519xchacha20poly1305_seal_open=(R,Z,tA,BA,dA,xA)=>(E._crypto_box_curve25519xchacha20poly1305_seal_open=T.vi)(R,Z,tA,BA,dA,xA),E._crypto_box_curve25519xchacha20poly1305_sealbytes=()=>(E._crypto_box_curve25519xchacha20poly1305_sealbytes=T.wi)(),E._crypto_core_ed25519_is_valid_point=R=>(E._crypto_core_ed25519_is_valid_point=T.xi)(R),E._crypto_core_ed25519_add=(R,Z,tA)=>(E._crypto_core_ed25519_add=T.yi)(R,Z,tA),E._crypto_core_ed25519_sub=(R,Z,tA)=>(E._crypto_core_ed25519_sub=T.zi)(R,Z,tA),E._crypto_core_ed25519_from_uniform=(R,Z)=>(E._crypto_core_ed25519_from_uniform=T.Ai)(R,Z),E._crypto_core_ed25519_random=R=>(E._crypto_core_ed25519_random=T.Bi)(R),E._crypto_core_ed25519_scalar_random=R=>(E._crypto_core_ed25519_scalar_random=T.Ci)(R),E._crypto_core_ed25519_scalar_invert=(R,Z)=>(E._crypto_core_ed25519_scalar_invert=T.Di)(R,Z),E._crypto_core_ed25519_scalar_negate=(R,Z)=>(E._crypto_core_ed25519_scalar_negate=T.Ei)(R,Z),E._crypto_core_ed25519_scalar_complement=(R,Z)=>(E._crypto_core_ed25519_scalar_complement=T.Fi)(R,Z),E._crypto_core_ed25519_scalar_add=(R,Z,tA)=>(E._crypto_core_ed25519_scalar_add=T.Gi)(R,Z,tA),E._crypto_core_ed25519_scalar_reduce=(R,Z)=>(E._crypto_core_ed25519_scalar_reduce=T.Hi)(R,Z),E._crypto_core_ed25519_scalar_sub=(R,Z,tA)=>(E._crypto_core_ed25519_scalar_sub=T.Ii)(R,Z,tA),E._crypto_core_ed25519_scalar_mul=(R,Z,tA)=>(E._crypto_core_ed25519_scalar_mul=T.Ji)(R,Z,tA),E._crypto_core_ed25519_bytes=()=>(E._crypto_core_ed25519_bytes=T.Ki)(),E._crypto_core_ed25519_nonreducedscalarbytes=()=>(E._crypto_core_ed25519_nonreducedscalarbytes=T.Li)(),E._crypto_core_ed25519_uniformbytes=()=>(E._crypto_core_ed25519_uniformbytes=T.Mi)(),E._crypto_core_ed25519_hashbytes=()=>(E._crypto_core_ed25519_hashbytes=T.Ni)(),E._crypto_core_ed25519_scalarbytes=()=>(E._crypto_core_ed25519_scalarbytes=T.Oi)(),E._crypto_core_ristretto255_is_valid_point=R=>(E._crypto_core_ristretto255_is_valid_point=T.Pi)(R),E._crypto_core_ristretto255_add=(R,Z,tA)=>(E._crypto_core_ristretto255_add=T.Qi)(R,Z,tA),E._crypto_core_ristretto255_sub=(R,Z,tA)=>(E._crypto_core_ristretto255_sub=T.Ri)(R,Z,tA),E._crypto_core_ristretto255_from_hash=(R,Z)=>(E._crypto_core_ristretto255_from_hash=T.Si)(R,Z),E._crypto_core_ristretto255_random=R=>(E._crypto_core_ristretto255_random=T.Ti)(R),E._crypto_core_ristretto255_scalar_random=R=>(E._crypto_core_ristretto255_scalar_random=T.Ui)(R),E._crypto_core_ristretto255_scalar_invert=(R,Z)=>(E._crypto_core_ristretto255_scalar_invert=T.Vi)(R,Z),E._crypto_core_ristretto255_scalar_negate=(R,Z)=>(E._crypto_core_ristretto255_scalar_negate=T.Wi)(R,Z),E._crypto_core_ristretto255_scalar_complement=(R,Z)=>(E._crypto_core_ristretto255_scalar_complement=T.Xi)(R,Z),E._crypto_core_ristretto255_scalar_add=(R,Z,tA)=>(E._crypto_core_ristretto255_scalar_add=T.Yi)(R,Z,tA),E._crypto_core_ristretto255_scalar_sub=(R,Z,tA)=>(E._crypto_core_ristretto255_scalar_sub=T.Zi)(R,Z,tA),E._crypto_core_ristretto255_scalar_mul=(R,Z,tA)=>(E._crypto_core_ristretto255_scalar_mul=T._i)(R,Z,tA),E._crypto_core_ristretto255_scalar_reduce=(R,Z)=>(E._crypto_core_ristretto255_scalar_reduce=T.$i)(R,Z),E._crypto_core_ristretto255_bytes=()=>(E._crypto_core_ristretto255_bytes=T.aj)(),E._crypto_core_ristretto255_nonreducedscalarbytes=()=>(E._crypto_core_ristretto255_nonreducedscalarbytes=T.bj)(),E._crypto_core_ristretto255_hashbytes=()=>(E._crypto_core_ristretto255_hashbytes=T.cj)(),E._crypto_core_ristretto255_scalarbytes=()=>(E._crypto_core_ristretto255_scalarbytes=T.dj)(),E._crypto_pwhash_scryptsalsa208sha256_ll=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0)=>(E._crypto_pwhash_scryptsalsa208sha256_ll=T.ej)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0),E._crypto_pwhash_scryptsalsa208sha256_bytes_min=()=>(E._crypto_pwhash_scryptsalsa208sha256_bytes_min=T.fj)(),E._crypto_pwhash_scryptsalsa208sha256_bytes_max=()=>(E._crypto_pwhash_scryptsalsa208sha256_bytes_max=T.gj)(),E._crypto_pwhash_scryptsalsa208sha256_passwd_min=()=>(E._crypto_pwhash_scryptsalsa208sha256_passwd_min=T.hj)(),E._crypto_pwhash_scryptsalsa208sha256_passwd_max=()=>(E._crypto_pwhash_scryptsalsa208sha256_passwd_max=T.ij)(),E._crypto_pwhash_scryptsalsa208sha256_saltbytes=()=>(E._crypto_pwhash_scryptsalsa208sha256_saltbytes=T.jj)(),E._crypto_pwhash_scryptsalsa208sha256_strbytes=()=>(E._crypto_pwhash_scryptsalsa208sha256_strbytes=T.kj)(),E._crypto_pwhash_scryptsalsa208sha256_strprefix=()=>(E._crypto_pwhash_scryptsalsa208sha256_strprefix=T.lj)(),E._crypto_pwhash_scryptsalsa208sha256_opslimit_min=()=>(E._crypto_pwhash_scryptsalsa208sha256_opslimit_min=T.mj)(),E._crypto_pwhash_scryptsalsa208sha256_opslimit_max=()=>(E._crypto_pwhash_scryptsalsa208sha256_opslimit_max=T.nj)(),E._crypto_pwhash_scryptsalsa208sha256_memlimit_min=()=>(E._crypto_pwhash_scryptsalsa208sha256_memlimit_min=T.oj)(),E._crypto_pwhash_scryptsalsa208sha256_memlimit_max=()=>(E._crypto_pwhash_scryptsalsa208sha256_memlimit_max=T.pj)(),E._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=()=>(E._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=T.qj)(),E._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=()=>(E._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=T.rj)(),E._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=()=>(E._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=T.sj)(),E._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=()=>(E._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=T.tj)(),E._crypto_pwhash_scryptsalsa208sha256=(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0)=>(E._crypto_pwhash_scryptsalsa208sha256=T.uj)(R,Z,tA,BA,dA,xA,WA,Q0,K0,R0),E._crypto_pwhash_scryptsalsa208sha256_str=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_pwhash_scryptsalsa208sha256_str=T.vj)(R,Z,tA,BA,dA,xA,WA),E._crypto_pwhash_scryptsalsa208sha256_str_verify=(R,Z,tA,BA)=>(E._crypto_pwhash_scryptsalsa208sha256_str_verify=T.wj)(R,Z,tA,BA),E._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=(R,Z,tA,BA)=>(E._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=T.xj)(R,Z,tA,BA),E._crypto_scalarmult_ed25519=(R,Z,tA)=>(E._crypto_scalarmult_ed25519=T.yj)(R,Z,tA),E._crypto_scalarmult_ed25519_noclamp=(R,Z,tA)=>(E._crypto_scalarmult_ed25519_noclamp=T.zj)(R,Z,tA),E._crypto_scalarmult_ed25519_base=(R,Z)=>(E._crypto_scalarmult_ed25519_base=T.Aj)(R,Z),E._crypto_scalarmult_ed25519_base_noclamp=(R,Z)=>(E._crypto_scalarmult_ed25519_base_noclamp=T.Bj)(R,Z),E._crypto_scalarmult_ed25519_bytes=()=>(E._crypto_scalarmult_ed25519_bytes=T.Cj)(),E._crypto_scalarmult_ed25519_scalarbytes=()=>(E._crypto_scalarmult_ed25519_scalarbytes=T.Dj)(),E._crypto_scalarmult_ristretto255=(R,Z,tA)=>(E._crypto_scalarmult_ristretto255=T.Ej)(R,Z,tA),E._crypto_scalarmult_ristretto255_base=(R,Z)=>(E._crypto_scalarmult_ristretto255_base=T.Fj)(R,Z),E._crypto_scalarmult_ristretto255_bytes=()=>(E._crypto_scalarmult_ristretto255_bytes=T.Gj)(),E._crypto_scalarmult_ristretto255_scalarbytes=()=>(E._crypto_scalarmult_ristretto255_scalarbytes=T.Hj)(),E._crypto_secretbox_xchacha20poly1305_detached=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_secretbox_xchacha20poly1305_detached=T.Ij)(R,Z,tA,BA,dA,xA,WA),E._crypto_secretbox_xchacha20poly1305_easy=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_xchacha20poly1305_easy=T.Jj)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_xchacha20poly1305_open_detached=(R,Z,tA,BA,dA,xA,WA)=>(E._crypto_secretbox_xchacha20poly1305_open_detached=T.Kj)(R,Z,tA,BA,dA,xA,WA),E._crypto_secretbox_xchacha20poly1305_open_easy=(R,Z,tA,BA,dA,xA)=>(E._crypto_secretbox_xchacha20poly1305_open_easy=T.Lj)(R,Z,tA,BA,dA,xA),E._crypto_secretbox_xchacha20poly1305_keybytes=()=>(E._crypto_secretbox_xchacha20poly1305_keybytes=T.Mj)(),E._crypto_secretbox_xchacha20poly1305_noncebytes=()=>(E._crypto_secretbox_xchacha20poly1305_noncebytes=T.Nj)(),E._crypto_secretbox_xchacha20poly1305_macbytes=()=>(E._crypto_secretbox_xchacha20poly1305_macbytes=T.Oj)(),E._crypto_secretbox_xchacha20poly1305_messagebytes_max=()=>(E._crypto_secretbox_xchacha20poly1305_messagebytes_max=T.Pj)(),E._crypto_shorthash_siphashx24_bytes=()=>(E._crypto_shorthash_siphashx24_bytes=T.Qj)(),E._crypto_shorthash_siphashx24_keybytes=()=>(E._crypto_shorthash_siphashx24_keybytes=T.Rj)(),E._crypto_shorthash_siphashx24=(R,Z,tA,BA,dA)=>(E._crypto_shorthash_siphashx24=T.Sj)(R,Z,tA,BA,dA),E._crypto_stream_salsa2012=(R,Z,tA,BA,dA)=>(E._crypto_stream_salsa2012=T.Tj)(R,Z,tA,BA,dA),E._crypto_stream_salsa2012_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_salsa2012_xor=T.Uj)(R,Z,tA,BA,dA,xA),E._crypto_stream_salsa2012_keybytes=()=>(E._crypto_stream_salsa2012_keybytes=T.Vj)(),E._crypto_stream_salsa2012_noncebytes=()=>(E._crypto_stream_salsa2012_noncebytes=T.Wj)(),E._crypto_stream_salsa2012_messagebytes_max=()=>(E._crypto_stream_salsa2012_messagebytes_max=T.Xj)(),E._crypto_stream_salsa2012_keygen=R=>(E._crypto_stream_salsa2012_keygen=T.Yj)(R),E._crypto_stream_salsa208=(R,Z,tA,BA,dA)=>(E._crypto_stream_salsa208=T.Zj)(R,Z,tA,BA,dA),E._crypto_stream_salsa208_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_salsa208_xor=T._j)(R,Z,tA,BA,dA,xA),E._crypto_stream_salsa208_keybytes=()=>(E._crypto_stream_salsa208_keybytes=T.$j)(),E._crypto_stream_salsa208_noncebytes=()=>(E._crypto_stream_salsa208_noncebytes=T.ak)(),E._crypto_stream_salsa208_messagebytes_max=()=>(E._crypto_stream_salsa208_messagebytes_max=T.bk)(),E._crypto_stream_salsa208_keygen=R=>(E._crypto_stream_salsa208_keygen=T.ck)(R),E._crypto_stream_xchacha20_keybytes=()=>(E._crypto_stream_xchacha20_keybytes=T.dk)(),E._crypto_stream_xchacha20_noncebytes=()=>(E._crypto_stream_xchacha20_noncebytes=T.ek)(),E._crypto_stream_xchacha20_messagebytes_max=()=>(E._crypto_stream_xchacha20_messagebytes_max=T.fk)(),E._crypto_stream_xchacha20=(R,Z,tA,BA,dA)=>(E._crypto_stream_xchacha20=T.gk)(R,Z,tA,BA,dA),E._crypto_stream_xchacha20_xor_ic=(R,Z,tA,BA,dA,xA,WA,Q0)=>(E._crypto_stream_xchacha20_xor_ic=T.hk)(R,Z,tA,BA,dA,xA,WA,Q0),E._crypto_stream_xchacha20_xor=(R,Z,tA,BA,dA,xA)=>(E._crypto_stream_xchacha20_xor=T.ik)(R,Z,tA,BA,dA,xA),E._crypto_stream_xchacha20_keygen=R=>(E._crypto_stream_xchacha20_keygen=T.jk)(R),E._malloc=R=>(E._malloc=T.kk)(R),E._free=R=>(E._free=T.lk)(R),E.setValue=function(R,Z,tA="i8"){switch(tA.endsWith("*")&&(tA="*"),tA){case"i1":case"i8":gC[R]=Z;break;case"i16":CC[R>>1]=Z;break;case"i32":Fg[R>>2]=Z;break;case"i64":P1("to do setValue(i64) use WASM_BIGINT");case"float":eC[R>>2]=Z;break;case"double":mg[R>>3]=Z;break;case"*":Ng[R>>2]=Z;break;default:P1(`invalid type for setValue: ${tA}`)}},E.getValue=function(R,Z="i8"){switch(Z.endsWith("*")&&(Z="*"),Z){case"i1":case"i8":return gC[R];case"i16":return CC[R>>1];case"i32":return Fg[R>>2];case"i64":P1("to do getValue(i64) use WASM_BIGINT");case"float":return eC[R>>2];case"double":return mg[R>>3];case"*":return Ng[R>>2];default:P1(`invalid type for getValue: ${Z}`)}},E.UTF8ToString=Kg,og=function R(){Gg||jC(),Gg||(og=R)},E.preInit)for(typeof E.preInit=="function"&&(E.preInit=[E.preInit]);E.preInit.length>0;)E.preInit.pop()();jC()})};var n2,f=f!==void 0?f:{},K2=typeof window=="object",c2=typeof importScripts=="function",u2=typeof w1=="object"&&typeof w1.versions=="object"&&typeof w1.versions.node=="string",TA=Object.assign({},f),S2="";if(u2){var LA=Qa,RA=ya;S2=__dirname+"/",n2=L=>(L=o1(L)?new URL(L):RA.normalize(L),LA.readFileSync(L)),!f.thisProgram&&w1.argv.length>1&&w1.argv[1].replace(/\\/g,"/"),w1.argv.slice(2),oA.exports=f}else(K2||c2)&&(c2?S2=self.location.href:typeof document<"u"&&document.currentScript&&(S2=document.currentScript.src),S2=S2.startsWith("blob:")?"":S2.substr(0,S2.replace(/[?#].*/,"").lastIndexOf("/")+1),c2&&(n2=L=>{var X=new XMLHttpRequest;return X.open("GET",L,!1),X.responseType="arraybuffer",X.send(null),new Uint8Array(X.response)}));f.print;var IA,_2,JA=f.printErr||void 0;Object.assign(f,TA),TA=null,f.arguments&&f.arguments,f.thisProgram&&f.thisProgram,f.quit&&f.quit,f.wasmBinary&&(IA=f.wasmBinary);var e0,SA,z0,yA,x1,W1,Z1,o0=!1;function J0(){var L=_2.buffer;f.HEAP8=e0=new Int8Array(L),f.HEAP16=z0=new Int16Array(L),f.HEAPU8=SA=new Uint8Array(L),f.HEAPU16=new Uint16Array(L),f.HEAP32=yA=new Int32Array(L),f.HEAPU32=x1=new Uint32Array(L),f.HEAPF32=W1=new Float32Array(L),f.HEAPF64=Z1=new Float64Array(L)}var m0=[],d0=[],U0=[],Z0=0,I2=null;function t2(L){throw f.onAbort?.(L),JA(L="Aborted("+L+")"),o0=!0,L+=". Build with -sASSERTIONS for more info.",new WebAssembly.RuntimeError(L)}var y2,E2="data:application/octet-stream;base64,",o1=L=>L.startsWith("file://");function n1(L){return Promise.resolve().then(()=>function(X){if(X==y2&&IA)return new Uint8Array(IA);var eA=function(E){if((bA=>bA.startsWith(E2))(E))return function(bA){if(u2!==void 0&&u2){var UA=Dg.from(bA,"base64");return new Uint8Array(UA.buffer,UA.byteOffset,UA.length)}for(var r0=atob(bA),S0=new Uint8Array(r0.length),v0=0;v0f.getRandomValue(),36836:()=>{if(f.getRandomValue===void 0)try{var L=typeof window=="object"?window:self,X=L.crypto!==void 0?L.crypto:L.msCrypto;X=X===void 0?E:X;var eA=function(){var UA=new Uint32Array(1);return X.getRandomValues(UA),UA[0]>>>0};eA(),f.getRandomValue=eA}catch{try{var E=ha(),bA=function(){var r0=E.randomBytes(4);return(r0[0]<<24|r0[1]<<16|r0[2]<<8|r0[3])>>>0};bA(),f.getRandomValue=bA}catch{throw"No secure random number generator found"}}}},Zg=L=>{for(;L.length>0;)L.shift()(f)};f.noExitRuntime;var ug,HC=typeof TextDecoder<"u"?new TextDecoder:void 0,dg=(L,X)=>L?((eA,E,bA)=>{for(var UA=E+bA,r0=E;eA[r0]&&!(r0>=UA);)++r0;if(r0-E>16&&eA.buffer&&HC)return HC.decode(eA.subarray(E,r0));for(var S0="";E>10,56320|1023&j2)}}else S0+=String.fromCharCode((31&v0)<<6|q0)}else S0+=String.fromCharCode(v0)}return S0})(SA,L,X):"",$g=[],ct=L=>{var X=(L-_2.buffer.byteLength+65535)/65536;try{return _2.grow(X),J0(),1}catch{}},It={b:(L,X,eA,E)=>{t2(`Assertion failed: ${dg(L)}, at: `+[X?dg(X):"unknown filename",eA,E?dg(E):"unknown function"])},c:()=>{t2("")},d:(L,X,eA)=>SA.copyWithin(L,X,X+eA),a:(L,X,eA)=>((E,bA,UA)=>{var r0=((S0,v0)=>{var q0;for($g.length=0;q0=SA[S0++];){var g2=q0!=105;v0+=(g2&=q0!=112)&&v0%8?4:0,$g.push(q0==112?x1[v0>>2]:q0==105?yA[v0>>2]:Z1[v0>>3]),v0+=g2?8:4}return $g})(bA,UA);return R1[E](...r0)})(L,X,eA),e:L=>{var X=SA.length,eA=2147483648;if((L>>>=0)>eA)return!1;for(var E,bA=1;bA<=4;bA*=2){var UA=X*(1+.2/bA);UA=Math.min(UA,L+100663296);var r0=Math.min(eA,(E=Math.max(L,UA))+(65536-E%65536)%65536);if(ct(r0))return!0}return!1}},j=function(){var L,X={a:It};function eA(E,bA){return j=E.exports,_2=j.f,J0(),function(UA){if(Z0--,f.monitorRunDependencies?.(Z0),Z0==0&&I2){var r0=I2;I2=null,r0()}}(),j}if(Z0++,f.monitorRunDependencies?.(Z0),f.instantiateWasm)try{return f.instantiateWasm(X,eA)}catch(E){return JA(`Module.instantiateWasm callback failed with error: ${E}`),!1}return y2||(y2="data:application/octet-stream;base64,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AkJmAFcCQ2YAEgJEZgCrAQJFZgCjAgJGZgCqAQJHZgCpAQJIZgBYAklmAFcCSmYACgJLZgAlAkxmAAoCTWYADQJOZgANAk9mACwCUGYAEgJRZgASAlJmAJ4DAlNmAJ0DAlRmAJwDAlVmAKICAlZmAKECAldmAJsDAlhmAJoDAllmACUCWmYACgJfZgCZAwIkZgAcAmFnAFECYmcAOQJjZwBkAmRnACcCZWcADQJmZwDoAgJnZwChAQJoZwDzAQJpZwAnAmpnAA0Ca2cAoQECbGcAUAJtZwAWAm5nAAoCb2cACgJwZwAWAnFnAMoBAnJnAIADAnNnAP8CAnRnAP4CAnVnAKABAnZnAJ8BAndnAJ4BAnhnAJ0BAnlnAP0CAnpnAHECQWcA/AICQmcA+wICQ2cAUAJEZwAWAkVnAAoCRmcACgJHZwAWAkhnAMoBAklnAIIDAkpnAIEDAktnAMkBAkxnAHECTWcAyAECTmcAxwECT2cAzAECUGcAywECUWcAhwMCUmcAhgMCU2cAnQECVGcAnwECVWcAngECVmcAoAECV2cACgJYZwAnAllnABQCWmcACgJfZwDrAQIkZwAUAmFoAJ8CAmJoAJ4CAmNoAJ0CAmRoAJwCAmVoAJsCAmZoAJoCAmdoABICaGgAEgJpaAAKAmpoACUCa2gAFAJsaACIAwJtaACcAQJuaACbAQJvaAASAnBoAAoCcWgAJwJyaAAUAnNoAJgCAnRoAJcCAnVoAJYCAnZoABICd2gAnAECeGgAlQICeWgAmwECemgACgJBaAAlAkJoABQCQ2gAEgJEaAANAkVoAAoCRmgAFgJHaAA3AkhoAD8CSWgAsQECSmgAvAMCS2gAuwMCTGgA6AECTWgAugMCTmgAGQJPaAC5AwJQaAAKAlFoALgDAlJoAJQCAlNoAJIDAlRoAJEDAlVoAJADAlZoAIIBAldoAIEBAlhoAMEDAlloALQDAlpoAKsDAl9oANgCAiRoANcCAmFpADkCYmkAHAJjaQB6AmRpAEECZWkAiQMCZmkAmgECZ2kAkwICaGkAkgICaWkAkAICamkAmQECa2kAjwICbGkAmAECbWkAjgICbmkACgJvaQAKAnBpAAoCcWkACgJyaQAlAnNpAA0CdGkALAJ1aQCNAgJ2aQCMAgJ3aQDBAQJ4aQCwAwJ5aQCvAwJ6aQCuAwJBaQCt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iEL///8AgyIIIAEoAA8iO0EGdkH///8Aca0iBn58IAEoAAoiPEEYdq0gATEADkIIhoQgATEAD0IQhoRCAYhC////AIMiDCACKAAKIj1BBHZB////AHGtIg1+fCA5QRh2rSACMQAGQgiGhCACMQAHQhCGhEICiEL///8AgyIOIDtBGHatIAExABNCCIaEIAExABRCEIaEQgOIIgl+fCACKAAPIjlBBnZB////AHGtIgcgATUAB0IHiEL///8AgyIPfnwgPUEYdq0gAjEADkIIhoQgAjEAD0IQhoRCAYhC////AIMiCiA8QQR2Qf///wBxrSIQfnwgOUEYdq0gAjEAE0IIhoQgAjEAFEIQhoRCA4giESABKAACIjlBGHatIAExAAZCCIaEIAExAAdCEIaEQgKIQv///wCDIhJ+fCACMwAVIAIxABdCEIZCgID8AIOEIhUgOUEFdkH///8Aca0iFn58IAEzAAAgATEAAkIQhkKAgPwAg4QiFyACKAAXIjlBBXZB////AHGtIhh+fCAEIAV+IAkgC358IAggDH58IA0gEH58IAYgDn58IAcgEn58IAogD358IBEgFn58IBUgF358Ih1CgIBAfSIeQhWIfCITIBNCgIBAfSIgQoCAgH+DfSA5QRh2rSACMQAbQgiGhCACMQAcQhCGhEICiEL///8AgyITIAEoABxBB3atIhl+IDpBGHatIAExABtCCIaEIAExABxCEIaEQgKIQv///wCDIhogAigAHEEHdq0iG358IAMgG34gGCAZfnwgEyAafnwiIUKAgEB9Ih9CFYh8IiIgIkKAgEB9IhxCgICA/////wCDfSIiQpPYKH58ICEgH0KAgID/////AIN9IBUgGX4gGCAafnwgBCAbfnwgAyATfnwgAyAYfiARIBl+fCAVIBp+fCAJIBt+fCAEIBN+fCIjQoCAQH0iFEIViHwiH0KAgEB9IiRCFYh8IiFCmNocfnwgHyAkQoCAgH+DfSIfQuf2J358ICMgFEKAgIB/g30gESAafiAHIBl+fCAEIBh+fCADIBV+fCAGIBt+fCAJIBN+fCAKIBl+IAcgGn58IAMgEX58IAkgGH58IAQgFX58IAwgG358IAYgE358IhRCgIBAfSIkQhWIfCIlQoCAQH0iJkIViHwiI0LTjEN+fCAdIAUgCX4gBiALfnwgCCAQfnwgDSAP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SQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAvyAgICfwF+AkAgAkUNACAAIAE6AAAgACACaiIDQQFrIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0EDayABOgAAIANBAmsgAToAACACQQdJDQAgACABOgADIANBBGsgAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAsEAEEQCxkBAX9BiKoCKAIAIgAEQCAAERYACxCLAQAL1AECBX8CfgJ/IAJCAFIEQCAAQeABaiEHIABB4ABqIQMgACgA4AIhBANAIAMgBGohBkGAAiAEayIFrSIIIAJaBEAgBiABIAKnIgEQCxogACAAKADgAiABajYA4AJBAAwDCyAGIAEgBRALGiAAIAAoAOACIAVqNgDgAiAAIAApAEAiCUKAAXw3AEAgACAAKQBIIAlC/35WrXw3AEggACADEFIgAyAHQYABEAsaIAAgACgA4AJBgAFrIgQ2AOACIAEgBWohASACIAh9IgJCAFINAAsLQQALC58EARN/IAEoAgQhAiABKAIsIQMgASgCCCEEIAEoAjAhBSABKAIMIQYgASgCNCEHIAEoAhAhCCABKAI4IQkgASgCFCEKIAEoAjwhCyABKAIYIQwgAUFAayINKAIAIQ4gASgCHCEPIAEoAkQhECABKAIgIREgASgCSCESIAEoAiQhEyABKAJMIRQgACABKAIAIAEoAihqNgIAIAAgEyAUajYCJCAAIBEgEmo2AiAgACAPIBBqNgIcIAAgDCAOajYCGCAAIAogC2o2AhQgACAIIAlqNgIQIAAgBiAHajYCDCAAIAQgBWo2AgggACACIANqNgIEIAEoAgQhAiABKAIsIQMgASgCCCEEIAEoAjAhBSABKAIMIQYgASgCNCEHIAEoAhAhCCABKAI4IQkgASgCFCEKIAEoAjwhCyABKAIYIQwgDSgCACENIAEoAhwhDiABKAJEIQ8gASgCICEQIAEoAkghESABKAIAIRIgASgCKCETIAAgASgCTCABKAIkazYCTCAAIBEgEGs2AkggACAPIA5rNgJEIABBQGsgDSAMazYCACAAIAsgCms2AjwgACAJIAhrNgI4IAAgByAGazYCNCAAIAUgBGs2AjAgACADIAJrNgIsIAAgEyASazYCKCAAIAEpAlA3AlAgACABKQJYNwJYIAAgASkCYDcCYCAAIAEpAmg3AmggACABKQJwNwJwIABB+ABqIAFB+ABqQZANEAYL6AQBCX8gACABKAIgIgUgASgCHCIGIAEoAhgiByABKAIUIgggASgCECIJIAEoAgwiCiABKAIIIgQgASgCBCIDIAEoAgAiAiABKAIkIgFBE2xBgICACGpBGXZqQRp1akEZdWpBGnVqQRl1akEadWpBGXVqQRp1akEZdWpBGnUgAWpBGXVBE2wgAmoiAjoAACAAIAJBEHY6AAIgACACQQh2OgABIAAgAyACQRp1aiIDQQ52OgAFIAAgA0EGdjoABCAAIAJBGHZBA3EgA0ECdHI6AAMgACAEIANBGXVqIgJBDXY6AAggACACQQV2OgAHIAAgAkEDdCADQYCAgA5xQRZ2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ABcgAy0AD3I6AA8gAyAALQAYIAMtAA9yOgAPIAMgAC0AGSADLQAPcjoADyADIAAtABogAy0AD3I6AA8gAyAALQAbIAMtAA9yOgAPIAMgAC0AHCADLQAPcjoADyADIAAtAB0gAy0AD3I6AA8gAyAALQAeIAMtAA9yOgAPIAMgAC0AHyADLQAPcjoADyADLQAPQRd0QYCAgARrQR91IQQLIANBEGokACAEC30BA38CQAJAIAAiAUEDcUUNACABLQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQFBgIKECCACKAIAIgNrIANyQYCBgoR4cUGAgYKEeEYNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrCycAIAJBgAJPBEBB1gpB/wlB6wBB4wgQAQALIAAgASACQf8BcRCDAQv7AwECf0F/IQQCQCACQcAASw0AIANBwQBrQUBJDQACQCABQQAgAhtFBEAgA0H/AXEiAUHBAGtB/wFxQb8BTQRAEA4ACyAAQUBrQQBBpQIQDBogAEL5wvibkaOz8NsANwA4IABC6/qG2r+19sEfNwAwIABCn9j52cKR2oKbfzcAKCAAQtGFmu/6z5SH0QA3ACAgAELx7fT4paf9p6V/NwAYIABCq/DT9K/uvLc8NwAQIABCu86qptjQ67O7fzcACCAAIAGtQoiS95X/zPmE6gCFNwAADAELAn8gAkH/AXEhAiMAQYABayIFJAACQCADQf8BcSIDQcEAa0H/AXFBvwFNDQAgAUUNACACQcEAa0H/AXFBvwFNDQAgAEFAa0EAQaUCEAwaIABC+cL4m5Gjs/DbADcAOCAAQuv6htq/tfbBHzcAMCAAQp/Y+dnCkdqCm383ACggAELRhZrv+s+Uh9EANwAgIABC8e30+KWn/aelfzcAGCAAQqvw0/Sv7ry3PDcAECAAQrvOqqbY0Ouzu383AAggACADrSACrUIIhoRCiJL3lf/M+YTqAIU3AAAgAEHgAGogBUEAQYABEAwgASACEAsiAUGAARALGiAAIAAoAOACQYABajYA4AIgAUGAARAJIAFBgAFqJABBAAwBCxAOAAsNAQtBACEECyAECw0AIAAgASACECQaQQAL6AUCB34DfyMAQaACayILJAACQCACUA0AIAAgACkDICIDIAJCA4Z8NwMgIABBKGohCkLAACADQgOIQj+DIgR9IgggAlgEQEIAIQMgBEI/hUIDWgRAIAhC/ACDIQcDQCAKIAMgBHynaiABIAOnai0AADoAACAKIANCAYQiCSAEfKdqIAEgCadqLQAAOgAAIAogA0IChCIJIAR8p2ogASAJp2otAAA6AAAgCiADQgOEIgkgBHynaiABIAmnai0AADoAACADQgR8IQMgBUIEfCIFIAdSDQALCyAIQgODIgVCAFIEQANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIANCAXwhAyAGQgF8IgYgBVINAAsLIAAgCiALIAtBgAJqIgwQYiABIAinaiEBIAIgCH0iAkI/VgRAA0AgACABIAsgDBBiIAFBQGshASACQkB8IgJCP1YNAAsLAkAgAlANACACQgODIQRCACEGQgAhAyACQgRaBEAgAkI8gyEFQgAhAgNAIAogA6ciAGogACABai0AADoAACAKIABBAXIiDGogASAMai0AADoAACAKIABBAnIiDGogASAMai0AADoAACAKIABBA3IiAGogACABai0AADoAACADQgR8IQMgAkIEfCICIAVSDQALCyAEUA0AA0AgCiADpyIAaiAAIAFqLQAAOgAAIANCAXwhAyAGQgF8IgYgBFINAAsLIAtBoAIQCQwBC0IAIQMgAkIEWgRAIAJCfIMhCANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIAogA0IBhCIHIAR8p2ogASAHp2otAAA6AAAgCiADQgKEIgcgBHynaiABIAenai0AADoAACAKIANCA4QiByAEfKdqIAEgB6dqLQAAOgAAIANCBHwhAyAFQgR8IgUgCFINAAsLIAJCA4MiAlANAANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIANCAXwhAyAGQgF8IgYgAlINAAsLIAtBoAJqJABBAAsEAEEYCw0AIAAgASACEBcaQQALBABBCAv3EgIVfgN/IAAgACgALCIWQQV2Qf///wBxrSAAKAA8QQN2rSICQoOhVn4gADMAKiAAMQAsQhCGQoCA/ACDhHwiC0KAgEB9IghCFYd8IgFCg6FWfiAANQAxQgeIQv///wCDIgNC04xDfiAAKAAXIhdBGHatIAAxABtCCIaEIAAxABxCEIaEQgKIQv///wCDfCAAKAA0IhhBBHZB////AHGtIgRC5/YnfnwgFkEY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QbABaiQAC7sGAQl/IwBB4ABrIgMkACACQcEATwRAIAAQYxogACABIAKtECQaIAAgAxAtGkEgIQIgAyEBCyAAEGMaIANCtuzYsePGjZs2NwNYIANCtuzYsePGjZs2NwNQIANCtuzYsePGjZs2NwNIIANBQGsiCkK27Nix48aNmzY3AwAgA0K27Nix48aNmzY3AzggA0K27Nix48aNmzY3AzAgA0K27Nix48aNmzY3AyggA0K27Nix48aNmzY3AyACQCACRQ0AIAJBBE8EQCACQfwAcSEGA0AgA0EgaiILIARqIgUgBS0AACABIARqLQAAczoAACALIARBAXIiBWoiCCAILQAAIAEgBWotAABzOgAAIAsgBEECciIFaiIIIAgtAAAgASAFai0AAHM6AAAgCyAEQQNyIgVqIgggCC0AACABIAVqLQAAczoAACAEQQRqIQQgB0EEaiIHIAZHDQALCyACQQNxIgdFDQADQCADQSBqIARqIgYgBi0AACABIARqLQAAczoAACAEQQFqIQQgCUEBaiIJIAdHDQALCyAAIANBIGpCwAAQJBogAEHoAGoiABBjGiADQty48eLFi5eu3AA3A1ggA0LcuPHixYuXrtwANwNQIANC3Ljx4sWLl67cADcDSCAKQty48eLFi5eu3AA3AwAgA0LcuPHixYuXrtwANwM4IANC3Ljx4sWLl67cADcDMCADQty48eLFi5eu3AA3AyggA0LcuPHixYuXrtwANwMgAkAgAkUNAEEAIQlBACEEIAJBBE8EQCACQfwAcSEKQQAhBwNAIANBIGoiCCAEaiIGIAYtAAAgASAEai0AAHM6AAAgCCAEQQFyIgZqIgUgBS0AACABIAZqLQAAczoAACAIIARBAnIiBmoiBSAFLQAAIAEgBmotAABzOgAAIAggBEEDciIGaiIFIAUtAAAgASAGai0AAHM6AAAgBEEEaiEEIAdBBGoiByAKRw0ACwsgAkEDcSICRQ0AA0AgA0EgaiAEaiIHIActAAAgASAEai0AAHM6AAAgBEEBaiEEIAlBAWoiCSACRw0ACwsgACADQSBqIgBCwAAQJBogAEHAABAJIANBIBAJIANB4ABqJABBAAs7AQF/IwBBQGoiAiQAIAAgAhAdGiAAQdABaiIAIAJCwAAQFxogACABEB0aIAJBwAAQCSACQUBrJABBAAtyACAAQgA3A0AgAEIANwNIIABBsIwCKQMANwMAIABBuIwCKQMANwMIIABBwIwCKQMANwMQIABByIwCKQMANwMYIABB0IwCKQMANwMgIABB2IwCKQMANwMoIABB4IwCKQMANwMwIABB6IwCKQMANwM4QQALIwAgAUKAgICAEFoEQBAOAAsgACABIAIgA0G0nwIoAgARDwAL5QgBGH8jAEHAAmsiAiQAIABBKGoiFyABEDYgAEIANwJUIABBATYCUCAAQgA3AlwgAEIANwJkIABCADcCbCAAQQA2AnQgAkHwAWoiBCAXEAUgAkHAAWoiDiAEQbAMEAYgAiACKALAAUEBajYCwAEgAiACKALwAUEBayIDNgLwASACKAL0ASENIAIoAvgBIQUgAigC/AEhBiACKAKAAiEHIAIoAoQCIQggAigCiAIhCSACKAKMAiEKIAIoApACIQsgAigClAIhDCAAIAQgDhAGIAAgABBuIAAgBCAAEAYgAkGQAWoiBCAAEAUgBCAEIA4QBiACIAIoArQBIgQgDGs2AoQBIAIgAigCsAEiDiALazYCgAEgAiACKAKsASIPIAprNgJ8IAIgAigCqAEiECAJazYCeCACIAIoAqQBIhEgCGs2AnQgAiACKAKgASISIAdrNgJwIAIgAigCnAEiEyAGazYCbCACIAIoApgBIhQgBWs2AmggAiACKAKUASIVIA1rNgJkIAIgAigCkAEiFiADazYCYCACIAQgDGo2AlQgAiALIA5qNgJQIAIgCiAPajYCTCACIAkgEGo2AkggAiAIIBFqNgJEIAIgByASajYCQCACIAYgE2o2AjwgAiAFIBRqNgI4IAIgDSAVajYCNCACIAMgFmo2AjAgAiACQeAAahARIAJBIBAaIQQgAiACQTBqEBEgAkEgEBohDyACIABB4AwQBiAAKAIEIQwgACgCCCELIAAoAgwhCiAAKAIQIQkgACgCFCEIIAAoAhghByAAKAIcIQYgACgCICEFIAAoAgAhDiACKAIAIRAgAigCBCERIAIoAgghEiACKAIMIRMgAigCECEUIAIoAhQhFSACKAIYIRYgAigCHCEYIAIoAiAhGSAAIARBAWsiAyAAKAIkIg0gAigCJHNxIA1zIg02AiQgACAFIAUgGXMgA3FzIgU2AiAgACAGIAYgGHMgA3FzIgY2AhwgACAHIAcgFnMgA3FzIgc2AhggACAIIAggFXMgA3FzIgg2AhQgACAJIAkgFHMgA3FzIgk2AhAgACAKIAogE3MgA3FzIgo2AgwgACALIAsgEnMgA3FzIgs2AgggACAMIAwgEXMgA3FzIgw2AgQgACAOIA4gEHMgA3FzIgM2AgAgAkGgAmogABARIABBACACLQCgAkEBcSABLQAfQQd2c0GAqgItAABBAnZzayIBIA1BACANa3NxIA1zNgIkIAAgBUEAIAVrcyABcSAFczYCICAAIAZBACAGa3MgAXEgBnM2AhwgACAHQQAgB2tzIAFxIAdzNgIYIAAgCEEAIAhrcyABcSAIczYCFCAAIAlBACAJa3MgAXEgCXM2AhAgACAKQQAgCmtzIAFxIApzNgIMIAAgC0EAIAtrcyABcSALczYCCCAAIAxBACAMa3MgAXEgDHM2AgQgACADQQAgA2tzIAFxIANzNgIAIABB+ABqIAAgFxAGIAJBwAJqJAAgBCAPckEBawvKCAEDfyMAQcABayICJAAgAkGQAWoiBCABEAUgAkHgAGoiAyAEEAUgAyADEAUgAyABIAMQBiAEIAQgAxAGIAJBMGoiASAEEAUgAyADIAEQBiABIAMQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSADIAEgAxAGIAEgAxAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASADEAYgAiABEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgASACIAEQBiABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSADIAEgAxAGIAEgAxAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASADEAYgAiABEAVBASEBA0AgAiACEAUgAUEBaiIBQeQARw0ACyACQTBqIgEgAiABEAYgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgAkHgAGoiAyABIAMQBiADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSAAIAMgAkGQAWoQBiACQcABaiQAC/QEARl+IAExAB8hAiABMQAeIQYgATEAHSEOIAExAAYhByABMQAFIQggATEABCEDIAExAAkhDyABMQAIIRAgATEAByERIAExAAwhCSABMQALIQogATEACiELIAExAA8hDCABMQAOIRIgATEADSETIAExABwhBCABMQAbIRQgATEAGiEVIAExABkhBSABMQAYIRYgATEAFyEXIAE1AAAhGCAAIAExABVCD4YgATEAFEIHhoQgATEAFkIXhoQgATUAECIZQoCAgAh8IhpCGYh8Ig0gDUKAgIAQfCINQoCAgOAPg30+AhggACAWQg2GIBdCBYaEIAVCFYaEIgUgDUIaiHwgBUKAgIAIfCIFQoCAgPADg30+AhwgACAUQgyGIBVCBIaEIARCFIaEIAVCGYh8IgQgBEKAgIAQfCIEQoCAgOAPg30+AiAg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ASACIAk2AsgBIAIgCjYCxAEgAiALQQFqNgLAASACQeAAaiISIAJBwAFqIhMQBSACQTBqIhBBsAwgDBAGIAIoAmAhASACKAIwIQMgAigCZCEEIAIoAjQhBSACKAJoIQYgAigCOCEHIAIoAmwhCCACKAI8IQkgAigCcCEKIAIoAkAhCyACKAJ0IQwgAigCRCEOIAIoAnghDyACKAJIIRQgAigCfCEVIAIoAkwhFiACKAKAASEXIAIoAlAhGCACQQAgAigCVCACKAKEAWprNgJUIAJBACAXIBhqazYCUCACQQAgFSAWams2AkwgAkEAIA8gFGprNgJIIAJBACAMIA5qazYCRCACQQAgCiALams2AkAgAkEAIAggCWprNgI8IAJBACAGIAdqazYCOCACQQAgBCAFams2AjQgAkEAIAEgA2prNgIwIAIgECASEAYgAkIANwKUAyACQgA3ApwDIAJBADYCpAMgAkIANwKEAyACQQE2AoADIAJCADcCjAMgAkGwA2oiASACQYADaiACEGohDyAAIAEgExAGIABBKGoiAyABIAAQBiADIAMgEBAGIAAgACANEAYgACAAKAIkQQF0IgQ2AiQgACAAKAIgQQF0IgU2AiAgACAAKAIcQQF0IgY2AhwgACAAKAIYQQF0Igc2AhggACAAKAIUQQF0Igg2AhQgACAAKAIQQQF0Igk2AhAgACAAKAIMQQF0Igo2AgwgACAAKAIIQQF0Igs2AgggACAAKAIEQQF0Igw2AgQgACAAKAIAQQF0Ig42AgAgAkHgA2oiDSAAEBEgAEEAIAItAOADQQFxayIBIARBACAEa3NxIARzNgIkIAAgBUEAIAVrcyABcSAFczYCICAAIAZBACAGa3MgAXEgBnM2AhwgACAHQQAgB2tzIAFxIAdzNgIYIAAgCEEAIAhrcyABcSAIczYCFCAAIAlBACAJa3MgAXEgCXM2AhAgACAKQQAgCmtzIAFxIApzNgIMIAAgC0EAIAtrcyABcSALczYCCCAAIAxBACAMa3MgAXEgDHM2AgQgACAOQQAgDmtzIAFxIA5zNgIAIAMgESADEAYgAEIANwJUIABBATYCUCAAQgA3AlwgAEIANwJkIABCADcCbCAAQQA2AnQgAEH4AGoiASAAIAMQBiANIAEQESACLQDgAyEAIA0gAxARQQAgDUEgEBpBASAPayAA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RQ0BIAJBAWsiAkUNASABQQFqIQEgAC0AASEDIABBAWohACADDQALQQAhAwsgAwVBAAsgAS0AAGsLUgECf0HwlgIoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQBA0BC0HwpQJBMDYCAEF/DwtB8JYCIAA2AgAgAQs5AQF/IwBBIGsiAiQAIAAgAhAtGiAAQegAaiIAIAJCIBAkGiAAIAEQLRogAkEgEAkgAkEgaiQAQQALlgEBAX8jAEHQAWsiAyQAIANCADcDSCADQbiMAikDADcDCCADQcCMAikDADcDECADQciMAikDADcDGCADQdCMAikDADcDICADQdiMAikDADcDKCADQeCMAikDADcDMCADQeiMAikDADcDOCADQgA3A0AgA0GwjAIpAwA3AwAgAyABIAIQFxogAyAAEB0aIANB0AFqJABBAAsQACAAIAEgAiADQQgQaUEACxAAIAAgASACIANBDBBpQQALEAAgACABIAIgA0EUEGlBAAuhEQIsfwV+IwBBoAZrIgIkACABKAIsIQMgASgCVCEFIAEoAjAhDCABKAJYIQ0gASgCNCEOIAEoAlwhDyABKAI4IRAgASgCYCERIAEoAjwhEiABKAJkIRMgAUFAayIUKAIAIRYgASgCaCEEIAEoAkQhBiABKAJsIQcgASgCSCEIIAEoAnAhCSABKAIoIQogASgCUCELIAIgASgCTCIVIAEoAnQiF2o2AsQCIAIgCCAJajYCwAIgAiAGIAdqNgK8AiACIAQgFmo2ArgCIAIgEiATajYCtAIgAiAQIBFqNgKwAiACIA4gD2o2AqwCIAIgDCANajYCqAIgAiADIAVqNgKkAiACIAogC2o2AqACIAIgFyAVazYCJCACIAkgCGs2AiAgAiAHIAZrNgIcIAIgBCAWazYCGCACIBMgEms2AhQgAiARIBBrNgIQIAIgDyAOazYCDCACIA0gDGs2AgggAiAFIANrNgIEIAIgCyAKazYCACACQaACaiIFIAUgAhAGIAJB8AFqIgYgASABQShqIgMQBiACQcABaiIEIAYQBSAEIAUgBBAGIAJCADcCxAMgAkIANwLMAyACQQA2AtQDIAJCADcCtAMgAkIANwK8AyACQQE2ArADIAJBwARqIgcgAkGwA2ogBBBqGiACQdAFaiIEIAcgBRAGIAJBoAVqIh8gByAGEAYgAkEwaiIdIAQgHxAGIB0gHSABQfgAaiIFEAYgAkGQBGogAUHgDBAGIAJB4ANqIANB4AwQBiACQfAEaiAEQYAXEAYgAkHQAmoiAyAFIB0QBiACQYADaiIYIAMQESACLQCAAyEDIAIgASkCICIuNwOwASACIAEpAhgiLzcDqAEgAiABKQIQIjA3A6ABIAIgASkCCCIxNwOYASACIAEpAgAiMjcDkAEgASgCLCEFIAEoAjAhDCABKAI0IQ0gASgCOCEOIAEoAjwhDyAUKAIAIRAgASgCRCERIAEoAkghEiABKAJMIRMgASgCKCEWIAIoAuQDIQogAigClAEhBCACKALsAyELIAIoApwBIQYgAigC9AMhFCACKAKkASEHIAIoAvwDIRUgAigCrAEhCCACKAKEBCEXIAIoArQBIQkgAigC4AMhHiACKALoAyEZIAIoAvADIRogAigC+AMhGyACQQAgA0EBcWsiAyAupyIcIAIoAoAEc3EgHHM2ArABIAIgGyAvpyIccyADcSAcczYCqAEgAiAaIDCnIhtzIANxIBtzNgKgASACIBkgMaciGnMgA3EgGnM2ApgBIAIgHiAypyIZcyADcSAZczYCkAEgAiAJIAkgF3MgA3FzNgK0ASACIAggCCAVcyADcXM2AqwBIAIgByAHIBRzIANxczYCpAEgAiAGIAYgC3MgA3FzNgKcASACIAQgBCAKcyADcXM2ApQBIAIoApAEIRcgAigClAQhHiACKAKYBCEZIAIoApwEIRogAigCoAQhGyACKAKkBCEcIAIoAqgEISAgAigCrAQhISACKAKwBCEiIAIoArQEISMgAigCoAUhBCACKALwBCEkIAIoAqQFIQYgAigC9AQhJSACKAKoBSEHIAIoAvgEISYgAigCrAUhCCACKAL8BCEnIAIoArAFIQkgAigCgAUhKCACKAK0BSEKIAIoAoQFISkgAigCuAUhCyACKAKIBSEqIAIoArwFIRQgAigCjAUhKyACKALABSEVIAIoApAFISwgAiACKALEBSItIAIoApQFcyADcSAtczYCxAUgAiAVIBUgLHMgA3FzNgLABSACIBQgFCArcyADcXM2ArwFIAIgCyALICpzIANxczYCuAUgAiAKIAogKXMgA3FzNgK0BSACIAkgCSAocyADcXM2ArAFIAIgCCAIICdzIANxczYCrAUgAiAHIAcgJnMgA3FzNgKoBSACIAYgBiAlcyADcXM2AqQFIAIgBCAEICRzIANxczYCoAUgAkHgAGoiBCACQZABaiAdEAYgGCAEEBEgASgCVCEEIAEoAlghBiABKAJcIQcgASgCYCEIIAEoAmQhCSABKAJoIQogASgCbCELIAEoAnAhFCABKAJQIRUgAiABKAJ0QQAgAi0AgANBAXFrIgEgEyATICNzIANxcyITQQAgE2tzcSATc2s2AqQDIAIgFCASIBIgInMgA3FzIhJBACASa3MgAXEgEnNrNgKgAyACIAsgESARICFzIANxcyIRQQAgEWtzIAFxIBFzazYCnAMgAiAKIBAgECAgcyADcXMiEEEAIBBrcyABcSAQc2s2ApgDIAIgCSAPIA8gHHMgA3FzIg9BACAPa3MgAXEgD3NrNgKUAyACIAggDiAOIBtzIANxcyIOQQAgDmtzIAFxIA5zazYCkAMgAiAHIA0gDSAacyADcXMiDUEAIA1rcyABcSANc2s2AowDIAIgBiAMIAwgGXMgA3FzIgxBACAMa3MgAXEgDHNrNgKIAyACIAQgBSAFIB5zIANxcyIFQQAgBWtzIAFxIAVzazYChAMgAiAVIAEgFiAWIBdzIANxcyIBQQAgAWtzcSABc2s2AoADIBggHyAYEAYgAkGABmogGBARIAJBACACLQCABkEBcWsiASACKAKAAyIDQQAgA2tzcSADczYCgAMgAiACKAKEAyIDQQAgA2tzIAFxIANzNgKEAyACIAIoAogDIgNBACADa3MgAXEgA3M2AogDIAIgAigCjAMiA0EAIANrcyABcSADczYCjAMgAiACKAKQAyIDQQAgA2tzIAFxIANzNgKQAyACIAIoApQDIgNBACADa3MgAXEgA3M2ApQDIAIgAigCmAMiA0EAIANrcyABcSADczYCmAMgAiACKAKcAyIDQQAgA2tzIAFxIANzNgKcAyACIAIoAqADIgNBACADa3MgAXEgA3M2AqADIAIgASACKAKkAyIBQQAgAWtzcSABczYCpAMgACAYEBEgAkGgBmokAAv4AQEKfwNAIAQgACADai0AACIBIANBgBVqIgItAABzciEEIAogASACLQDAAXNyIQogCSABIAItAKABc3IhCSAIIAEgAi0AgAFzciEIIAcgASACLQBgc3IhByAGIAEgAkFAay0AAHNyIQYgBSABIAItACBzciEFIANBAWoiA0EfRw0ACyAKIAAtAB9B/wBxIgBB/wBzIgFyQf8BcUEBayABIAlyQf8BcUEBayABIAhyQf8BcUEBayAHIABB+gBzckH/AXFBAWsgBiAAQQVzckH/AXFBAWsgACAFckH/AXFBAWsgACAEckH/AXFBAWtycnJycnJBCHZBAXELwQUBHH8jAEHAAmsiASQAIAFB8AFqIgMgABAFIAFBwAFqIgQgAEEoahAFIAFBkAFqIgIgAEHQAGoQBSABKALwASEAIAEoAsABIQUgASgC9AEhBiABKALEASEHIAEoAvgBIQggASgCyAEhCSABKAL8ASEKIAEoAswBIQsgASgCgAIhDCABKALQASENIAEoAoQCIQ4gASgC1AEhDyABKAKIAiEQIAEoAtgBIREgASgCjAIhEiABKALcASETIAEoApACIRQgASgC4AEhFSABIAEoAuQBIAEoApQCazYCVCABIBUgFGs2AlAgASATIBJrNgJMIAEgESAQazYCSCABIA8gDms2AkQgASANIAxrNgJAIAEgCyAKazYCPCABIAkgCGs2AjggASAHIAZrNgI0IAEgBSAAazYCMCABQTBqIhYgFiACEAYgASADIAQQBiABIAFBsAwQBiABQeAAaiACEAUgASgCMCEAIAEoAmAhBSABKAIAIQYgASgCNCEHIAEoAmQhCCABKAIEIQkgASgCOCEKIAEoAmghCyABKAIIIQwgASgCPCENIAEoAmwhDiABKAIMIQ8gASgCQCEQIAEoAnAhESABKAIQIRIgASgCRCETIAEoAnQhFCABKAIUIRUgASgCSCECIAEoAnghAyABKAIYIQQgASgCTCEXIAEoAnwhGCABKAIcIRkgASgCUCEaIAEoAoABIRsgASgCICEcIAEgASgCVCABKAKEASABKAIkams2AlQgASAaIBsgHGprNgJQIAEgFyAYIBlqazYCTCABIAIgAyAEams2AkggASATIBQgFWprNgJEIAEgECARIBJqazYCQCABIA0gDiAPams2AjwgASAKIAsgDGprNgI4IAEgByAIIAlqazYCNCABIAAgBSAGams2AjAgAUGgAmoiACAWEBEgAEEgEBogAUHAAmokAAuFAwIDfwF+IwBB4AJrIgYkACAGIAQgBUEAECsaAn8C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IAEpAhA3A1AgAiABKQIoNwNIIAIgASkCIDcDQCADIAJB0ABqIAJBQGsQCCABIAIpAogCNwIoIAEgAikCgAI3AiAgAiABKQIINwM4IAIgASkCADcDMCACIAEpAhg3AyggAiABKQIQNwMgIAMgAkEwaiACQSBqEAggASACKQKIAjcCGCABIAIpAoACNwIQIAIgAikDmAI3AxggAiACKQOQAjcDECACIAEpAgg3AwggAiABKQIANwMAIAMgAkEQaiACEAggASACKQKIAjcCCCABIAIpAoACNwIAIAEgCiABKAAMczYCDCABIAkgASgACHM2AgggASAIIAEoAARzNgIEIAEgCyABKAAAczYCACAAIAcgACgAAHM2AgAgASAGIAEoAERzNgJEIAEgBSABKABIczYCSCABIAQgASgATHM2AkwgAkGgAmokAAvwCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgCDCEHIAEoAjQhCCABKAIQIQkgASgCOCEKIAEoAhQhCyABKAI8IQwgASgCGCENIAFBQGsiDigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAJBKGoQBiAAQShqIgMgAyACEAYgAEH4AGogAkH4AGogAUH4AGoQBiAAIAFB0ABqIAJB0ABqEAYgACgCBCEUIAAoAgghFSAAKAIMIRYgACgCECEXIAAoAhQhGCAAKAIYIRkgACgCHCEaIAAoAiAhGyAAKAIkIRwgACgCLCEBIAAoAlQhAiAAKAIwIQMgACgCWCEFIAAoAjQhBiAAKAJcIQcgACgCOCEIIAAoAmAhCSAAKAI8IQogACgCZCELIAQoAgAhDCAAKAJoIQ0gACgCRCEOIAAoAmwhDyAAKAJIIRAgACgCcCERIAAoAgAhHSAAKAIoIRIgACgCUCETIAAgACgCTCIeIAAoAnQiH2o2AkwgACAQIBFqNgJIIAAgDiAPajYCRCAEIAwgDWo2AgAgACAKIAtqNgI8IAAgCCAJajYCOCAAIAYgB2o2AjQgACADIAVqNgIwIAAgASACajYCLCAAIBIgE2o2AiggACAfIB5rNgIkIAAgESAQazYCICAAIA8gDms2AhwgACANIAxrNgIYIAAgCyAKazYCFCAAIAkgCGs2AhAgACAHIAZrNgIMIAAgBSADazYCCCAAIAIgAWs2AgQgACATIBJrNgIAIAAgACgCnAEiASAcQQF0IgJqNgKcASAAIAAoApgBIgQgG0EBdCIDajYCmAEgACAAKAKUASIFIBpBAXQiBmo2ApQBIAAgACgCkAEiByAZQQF0IghqNgKQASAAIAAoAowBIgkgGEEBdCIKajYCjAEgACAAKAKIASILIBdBAXQiDGo2AogBIAAgACgChAEiDSAWQQF0Ig5qNgKEASAAIAAoAoABIg8gFUEBdCIQajYCgAEgACAAKAJ8IhEgFEEBdCISajYCfCAAIAAoAngiEyAdQQF0IhRqNgJ4IAAgAyAEazYCcCAAIAYgBWs2AmwgACAIIAdrNgJoIAAgCiAJazYCZCAAIAwgC2s2AmAgACAOIA1rNgJcIAAgECAPazYCWCAAIBIgEWs2AlQgACAUIBNrNgJQIAAgAiABazYCdAtAAQN/IAAgASABQfgAaiICEAYgAEEoaiABQShqIgMgAUHQAGoiBBAGIABB0ABqIAQgAhAGIABB+ABqIAEgAxAGCxcAIAAgASACrSADrUIghoQgBCAFEL8BCxcAIAAgASACrSADrUIghoQgBCAFEMABC4UBAQV/AkAgAS0AABA4IgJFDQAgAS0AARA4IgNFDQAgAS0AAhA4IgRFDQAgAS0AAxA4IgVFDQAgAS0ABBA4IgZFDQAgACACQYAIayADQYAIa0EGdHIgBEGACGtBDHRyIAVBgAhrQRJ0ciAGQYAIa0EYdHI2AgAgAUEFag8LIABBADYCAEEAC8MGAQR/IAIgACADQQd0akFAaiIEKQIANwIAIAIgBCkCODcCOCACIAQpAjA3AjAgAiAEKQIoNwIoIAIgBCkCIDcCICACIAQpAhg3AhggAiAEKQIQNwIQIAIgBCkCCDcCCCADBEAgA0EBdCEGIANBBnQhBwNAIAIgAigCACAAIAVBBnRqIgMoAgBzNgIAIAIgAigCBCADKAIEczYCBCACIAIoAgggAygCCHM2AgggAiACKAIMIAMoAgxzNgIMIAIgAigCECADKAIQczYCECACIAIoAhQgAygCFHM2AhQgAiACKAIYIAMoAhhzNgIYIAIgAigCHCADKAIcczYCHCACIAIoAiAgAygCIHM2AiAgAiACKAIkIAMoAiRzNgIkIAIgAigCKCADKAIoczYCKCACIAIoAiwgAygCLHM2AiwgAiACKAIwIAMoAjBzNgIwIAIgAigCNCADKAI0czYCNCACIAIoAjggAygCOHM2AjggAiACKAI8IAMoAjxzNgI8IAIQuwEgASAFQQV0aiIEIAIpAjg3AjggBCACKQIwNwIwIAQgAikCKDcCKCAEIAIpAiA3AiAgBCACKQIYNwIYIAQgAikCEDcCECAEIAIpAgg3AgggBCACKQIANwIAIAIgAigCACADQUBrKAIAczYCACACIAIoAgQgAygCRHM2AgQgAiACKAIIIAMoAkhzNgIIIAIgAigCDCADKAJMczYCDCACIAIoAhAgAygCUHM2AhAgAiACKAIUIAMoAlRzNgIUIAIgAigCGCADKAJYczYCGCACIAIoAhwgAygCXHM2AhwgAiACKAIgIAMoAmBzNgIgIAIgAigCJCADKAJkczYCJCACIAIoAiggAygCaHM2AiggAiACKAIsIAMoAmxzNgIsIAIgAigCMCADKAJwczYCMCACIAIoAjQgAygCdHM2AjQgAiACKAI4IAMoAnhzNgI4IAIgAigCPCADKAJ8czYCPCACELsBIAQgB2oiAyACKQI4NwI4IAMgAikCMDcCMCADIAIpAig3AiggAyACKQIgNwIgIAMgAikCGDcCGCADIAIpAhA3AhAgAyACKQIINwIIIAMgAikCADcCACAFQQJqIgUgBkkNAAsLCyIBAX8gACgCACIBBEAgARAVCyAAQQA2AgggAEIANwIAQQALkR4CEX8UfiMAQYAgayIFJAACQCAARQ0AAkACQAJ/IAAoAiQiAkECRwRAIAEtAAghCSAAKAIEIQ4gASgCAAwBCyAAKAIEIQ4gAS0ACCEJIAEoAgAiDA0BIAlBAk8NAUEACyEMIAVBgBhqQQBBgAgQDBogBUG4EGpBAEHIBxAMGiAFIAytNwOAECABNQIEIRcgBSAJrUL/AYM3A5AQIAUgFzcDiBAgBSAANQIQNwOYECAANQIIIRcgBSACrTcDqBAgBSAXNwOgECAAKAIURQ0BQgAhFwNAIARB/wBxIgNFBEAgBSAXQgF8Ihc3A7AQIAVBAEGACBAMIgJBgAhqQQBBgAgQDBogAkGAGGoiBiACQYAQaiACEHUgBiACIAJBgAhqEHULIA4gBEEDdGogBUGACGogA0EDdGopAwA3AwAgBEEBaiIEIAAoAhQiA0kNAAsMAQsgACgCFCEDQQEhEAsgCSAMckUiEUEBdCIIIANPDQBBfyAAKAIYIgJBAWsgCCACIAEoAgQiDWxqIAMgCWxqIgogAnAbIApqIQQgCUEBaiESIA2tISYDQCAKQQFrIAQgCiAAKAIYIgJwQQFGGyENIAAoAhwhByAQBH8gACgCACgCBCANQQp0agUgDiAIQQN0agspAwAhEyABIAg2AgwgJiATQiCIpyAHcK0gERshGAJ+IAxFBEAgCUUEQCAIQQFrIQRCAAwCCyADIAlsIQQgGCAmUQRAIAQgCGpBAWshBEIADAILIAQgCEVrIQRCAAwBCyAYICZRBH8gCCADQX9zagVBAEF/IAgbIANrCyACaiEEQgAgCUEDRg0AGiADIBJsrQshFyAAKAIAKAIEIgMgAiAYp2xBCnRqIBcgBEEBa618IAStIBNC/////w+DIhcgF35CIIh+QiCIfSACrYKnQQp0aiEEIAMgDUEKdGohAiADIApBCnRqIQcCQCAMBEAgAiAEIAcQdQwBCyAFQYAYaiAEQYAIEAsaQQAhBANAIARBA3QiAyAFQYAYaiILaiIGIAYpAwAgAiADaikDAIU3AwAgCyADQQhyIgZqIg8gDykDACACIAZqKQMAhTcDACALIANBEHIiBmoiDyAPKQMAIAIgBmopAwCFNwMAIAsgA0EYciIDaiIGIAYpAwAgAiADaikDAIU3AwAgBEEEaiIEQYABRw0ACyAFQYAQaiALQYAIEAsaQQAhA0EAIQQDQCAFQYAYaiAEQQd0aiICIAIpAzgiFyACKQMYIhh8IBhCAYZC/v///x+DIBdC/////w+DfnwiGCACKQN4hUIgiSITIAIpA1giFnwgE0L/////D4MgFkIBhkL+////H4N+fCIWIBeFQiiJIhcgGHwgF0L/////D4MgGEIBhkL+////H4N+fCIYIBOFQjCJIhMgAikDKCIUIAIpAwgiFXwgFUIBhkL+////H4MgFEL/////D4N+fCIVIAIpA2iFQiCJIhsgAikDSCIcfCAbQv////8PgyAcQgGGQv7///8fg358IhwgFIVCKIkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhUgG4VCMIkiGyAcfCAbQv////8PgyAcQgGGQv7///8fg358IhwgFIVCAYkiFCACKQMgIh8gAikDACIafCAaQgGGQv7///8fgyAfQv////8Pg358IhogAikDYIVCIIkiICACQUBrIgYpAwAiI3wgIEL/////D4MgI0IBhkL+////H4N+fCIjIB+FQiiJIh8gGnwgH0L/////D4MgGkIBhkL+////H4N+fCIafCAUQv////8PgyAaQgGGQv7///8fg358IhmFQiCJIiQgAikDMCIhIAIpAxAiHXwgHUIBhkL+////H4MgIUL/////D4N+fCIdIAIpA3CFQiCJIiIgAikDUCIefCAiQv////8PgyAeQgGGQv7///8fg358Ih4gIYVCKIkiISAdfCAhQv////8PgyAdQgGGQv7///8fg358Ih0gIoVCMIkiIiAefCAiQv////8PgyAeQgGGQv7///8fg358Ih58ICRC/////w+DIB5CAYZC/v///x+DfnwiJSAUhUIoiSIUIBl8IBRC/////w+DIBlCAYZC/v///x+DfnwiGTcDACACIBkgJIVCMIkiGTcDeCACIBkgJXwgGUL/////D4MgJUIBhkL+////H4N+fCIZNwNQIAIgFCAZhUIBiTcDKCACIB4gIYVCAYkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhUgGiAghUIwiSIahUIgiSIgIBMgFnwgE0L/////D4MgFkIBhkL+////H4N+fCITfCAgQv////8PgyATQgGGQv7///8fg358IhYgFIVCKIkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhkgIIVCMIkiFTcDYCACIBk3AwggAiAVIBZ8IBVC/////w+DIBZCAYZC/v///x+DfnwiFiAUhUIBiTcDMCACIBY3A1ggAiATIBeFQgGJIhcgHXwgF0L/////D4MgHUIBhkL+////H4N+fCITIBuFQiCJIhYgGiAjfCAaQv////8PgyAjQgGGQv7///8fg358IhR8IBZC/////w+DIBRCAYZC/v///x+DfnwiFSAXhUIoiSIXIBN8IBdC/////w+DIBNCAYZC/v///x+DfnwiEzcDECACIBMgFoVCMIkiEzcDaCAGIBMgFXwgE0L/////D4MgFUIBhkL+////H4N+fCIVNwMAIAIgGCAUIB+FQgGJIhN8IBhCAYZC/v///x+DIBNC/////w+DfnwiGCAihUIgiSIWIBx8IBZC/////w+DIBxCAYZC/v///x+DfnwiFCAThUIoiSITIBh8IBNC/////w+DIBhCAYZC/v///x+DfnwiGyAWhUIwiSIYIBR8IBhC/////w+DIBRCAYZC/v///x+DfnwiFjcDSCACIBg3A3AgAiAbNwMYIAIgFSAXhUIBiTcDOCACIBMgFoVCAYk3AyAgBEEBaiIEQQhHDQALA0AgBUGAGGogA0EEdGoiAiACKQOIAyIXIAIpA4gBIhh8IBhCAYZC/v///x+DIBdC/////w+DfnwiGCACKQOIB4VCIIkiEyACKQOIBSIWfCATQv////8PgyAWQgGGQv7///8fg358IhYgF4VCKIkiFyAYfCAXQv////8PgyAYQgGGQv7///8fg358IhggE4VCMIkiEyACKQOIAiIUIAIpAwgiFXwgFUIBhkL+////H4MgFEL/////D4N+fCIVIAIpA4gGhUIgiSIbIAIpA4gEIhx8IBtC/////w+DIBxCAYZC/v///x+DfnwiHCAUhUIoiSIUIBV8IBRC/////w+DIBVCAYZC/v///x+DfnwiFSAbhUIwiSIbIBx8IBtC/////w+DIBxCAYZC/v///x+DfnwiHCAUhUIBiSIUIAIpA4ACIh8gAikDACIafCAaQgGGQv7///8fgyAfQv////8Pg358IhogAikDgAaFQiCJIiAgAikDgAQiI3wgIEL/////D4MgI0IBhkL+////H4N+fCIjIB+FQiiJIh8gGnwgH0L/////D4MgGkIBhkL+////H4N+fCIafCAUQv////8PgyAaQgGGQv7///8fg358IhmFQiCJIiQgAikDgAMiISACKQOAASIdfCAdQgGGQv7///8fgyAhQv////8Pg358Ih0gAikDgAeFQiCJIiIgAikDgAUiHnwgIkL/////D4MgHkIBhkL+////H4N+fCIeICGFQiiJIiEgHXwgIUL/////D4MgHUIBhkL+////H4N+fCIdICKFQjCJIiIgHnwgIkL/////D4MgHkIBhkL+////H4N+fCIefCAkQv////8PgyAeQgGGQv7///8fg358IiUgFIVCKIkiFCAZfCAUQv////8PgyAZQgGGQv7///8fg358Ihk3AwAgAiAZICSFQjCJIhk3A4gHIAIgGSAlfCAZQv////8PgyAlQgGGQv7///8fg358Ihk3A4AFIAIgFCAZhUIBiTcDiAIgAiAeICGFQgGJIhQgFXwgFEL/////D4MgFUIBhkL+////H4N+fCIVIBogIIVCMIkiGoVCIIkiICATIBZ8IBNC/////w+DIBZCAYZC/v///x+DfnwiE3wgIEL/////D4MgE0IBhkL+////H4N+fCIWIBSFQiiJIhQgFXwgFEL/////D4MgFUIBhkL+////H4N+fCIZICCFQjCJIhU3A4AGIAIgGTcDCCACIBUgFnwgFUL/////D4MgFkIBhkL+////H4N+fCIWIBSFQgGJNwOAAyACIBY3A4gFIAIgEyAXhUIBiSIXIB18IBdC/////w+DIB1CAYZC/v///x+DfnwiEyAbhUIgiSIWIBogI3wgGkL/////D4MgI0IBhkL+////H4N+fCIUfCAWQv////8PgyAUQgGGQv7///8fg358IhUgF4VCKIkiFyATfCAXQv////8PgyATQgGGQv7///8fg358IhM3A4ABIAIgEyAWhUIwiSITNwOIBiACIBMgFXwgE0L/////D4MgFUIBhkL+////H4N+fCIVNwOABCACIBggFCAfhUIBiSITfCAYQgGGQv7///8fgyATQv////8Pg358IhggIoVCIIkiFiAcfCAWQv////8PgyAcQgGGQv7///8fg358IhQgE4VCKIkiEyAYfCATQv////8PgyAYQgGGQv7///8fg358IhsgFoVCMIkiGCAUfCAYQv////8PgyAUQgGGQv7///8f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IAAgARAGIAAgABBuIAAgACAEEAYgACAAIAEQBiADQcABaiIEIAAQBSAEIAQgAhAGIAEoAgQhBSABKAIIIQ0gASgCDCEOIAEoAhAhDyABKAIUIRAgASgCGCERIAEoAhwhEiABKAIgIRMgASgCACEUIAMoAsABIQIgAygCxAEhBCADKALIASEGIAMoAswBIQcgAygC0AEhCCADKALUASEJIAMoAtgBIQogAygC3AEhCyADKALgASEMIAMgAygC5AEiFSABKAIkIhZrNgK0ASADIAwgE2s2ArABIAMgCyASazYCrAEgAyAKIBFrNgKoASADIAkgEGs2AqQBIAMgCCAPazYCoAEgAyAHIA5rNgKcASADIAYgDWs2ApgBIAMgBCAFazYClAEgAyACIBRrNgKQASADIBUgFmo2AoQBIAMgDCATajYCgAEgAyALIBJqNgJ8IAMgCiARajYCeCADIAkgEGo2AnQgAyAIIA9qNgJwIAMgByAOajYCbCADIAYgDWo2AmggAyAEIAVqNgJkIAMgAiAUajYCYCADQTBqIgUgAUHgDBAGIAMgFSADKAJUajYCVCADIAwgAygCUGo2AlAgAyALIAMoAkxqNgJMIAMgCiADKAJIajYCSCADIAkgAygCRGo2AkQgAyAIIAMoAkBqNgJAIAMgByADKAI8ajYCPCADIAYgAygCOGo2AjggAyAEIAMoAjRqNgI0IAMgAiADKAIwajYCMCADIANBkAFqEBEgA0EgEBohDiADIANB4ABqEBEgA0EgEBohDSADIAUQESADQSAQGiEBIAMgAEHgDBAGIAAoAgQhDCAAKAIIIQsgACgCDCEKIAAoAhAhCSAAKAIUIQggACgCGCEHIAAoAhwhBiAAKAIgIQQgACgCACEFIAMoAgAhDyADKAIEIRAgAygCCCERIAMoAgwhEiADKAIQIRMgAygCFCEUIAMoAhghFSADKAIcIRYgAygCICEXIABBACABIA1yayIBIAAoAiQiAiADKAIkc3EgAnMiAjYCJCAAIAQgBCAXcyABcXMiBDYCICAAIAYgBiAWcyABcXMiBjYCHCAAIAcgByAVcyABcXMiBzYCGCAAIAggCCAUcyABcXMiCDYCFCAAIAkgCSATcyABcXMiCTYCECAAIAogCiAScyABcXMiCjYCDCAAIAsgCyARcyABcXMiCzYCCCAAIAwg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DigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAIQBiAAQShqIgMgAyACQShqEAYgAEH4AGogAkHQAGogAUH4AGoQBiABKAJUIRQgASgCWCEVIAEoAlwhFiABKAJgIRcgASgCZCEYIAEoAmghGSABKAJsIRogASgCcCEbIAEoAnQhHCAAKAIsIQIgACgCVCEDIAAoAjAhBSAAKAJYIQYgACgCNCEHIAAoAlwhCCAAKAI4IQkgACgCYCEKIAAoAjwhCyAAKAJkIQwgBCgCACENIAAoAmghDiAAKAJEIQ8gACgCbCEQIAAoAkghESAAKAJwIRIgASgCUCEdIAAoAighASAAKAJQIRMgACAAKAJMIh4gACgCdCIfajYCTCAAIBEgEmo2AkggACAPIBBqNgJEIAQgDSAOajYCACAAIAsgDGo2AjwgACAJIApqNgI4IAAgByAIajYCNCAAIAUgBmo2AjAgACACIANqNgIsIAAgASATajYCKCAAIB8gHms2AiQgACASIBFrNgIgIAAgECAPazYCHCAAIA4gDWs2AhggACAMIAtrNgIUIAAgCiAJazYCECAAIAggB2s2AgwgACAGIAVrNgIIIAAgAyACazYCBCAAIBMgAWs2AgAgACAcQQF0IgEgACgCnAEiAms2ApwBIAAgG0EBdCIEIAAoApgBIgNrNgKYASAAIBpBAXQiBSAAKAKUASIGazYClAEgACAZQQF0IgcgACgCkAEiCGs2ApABIAAgGEEBdCIJIAAoAowBIgprNgKMASAAIBdBAXQiCyAAKAKIASIMazYCiAEgACAWQQF0Ig0gACgChAEiDms2AoQBIAAgFUEBdCIPIAAoAoABIhBrNgKAASAAIBRBAXQiESAAKAJ8IhJrNgJ8IAAgHUEBdCITIAAoAngiFGs2AnggACADIARqNgJwIAAgBSAGajYCbCAAIAcgCGo2AmggACAJIApqNgJkIAAgCyAMajYCYCAAIA0gDmo2AlwgACAPIBBqNgJYIAAgESASajYCVCAAIBMgFGo2AlAgACABIAJqNgJ0C64IAQN/IwBBkAFrIgMkACADQeAAaiIEIAEQBSADQTBqIgIgBBAFIAIgAhAFIAIgASACEAYgBCAEIAIQBiAEIAQQBSAEIAIgBBAGIAIgBBAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAQgAiAEEAYgAiAEEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACIAQQBiADIAIQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSACIAMgAhAGIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAQgAiAEEAYgAiAEEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACIAQQBiADIAIQBUEBIQIDQCADIAMQBSACQQFqIgJB5ABHDQALIANBMGoiAiADIAIQBiACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSADQeAAaiIEIAIgBBAGIAQgBBAFIAQgBBAFIAAgBCABEAYgA0GQAWokAAumBAIOfgp/IAAoAiQhEiAAKAIgIRMgACgCHCEUIAAoAhghFSAAKAIUIREgAkIQWgRAIAAtAFBFQRh0IRYgACgCECIXrSEPIAAoAgwiGK0hDSAAKAIIIhmtIQsgACgCBCIarSEJIBpBBWytIRAgGUEFbK0hDiAYQQVsrSEMIBdBBWytIQogADUCACEIA0AgASgAA0ECdkH///8fcSAVaq0iAyANfiABKAAAQf///x9xIBFqrSIEIA9+fCABKAAGQQR2Qf///x9xIBRqrSIFIAt+fCABKAAJQQZ2IBNqrSIGIAl+fCASIBZqIAEoAAxBCHZqrSIHIAh+fCADIAt+IAQgDX58IAUgCX58IAYgCH58IAcgCn58IAMgCX4gBCALfnwgBSAIfnwgBiAKfnwgByAMfnwgAyAIfiAEIAl+fCAFIAp+fCAGIAx+fCAHIA5+fCADIAp+IAQgCH58IAUgDH58IAYgDn58IAcgEH58IgNCGohC/////w+DfCIEQhqIQv////8Pg3wiBUIaiEL/////D4N8IgZCGohC/////w+DfCIHQhqIp0EFbCADp0H///8fcWoiEUEadiAEp0H///8fcWohFSAFp0H///8fcSEUIAan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aIVCIIkiCyABKQNIIgx8IAxCAYZC/v///x+DIAtC/////w+DfnwiDCADhUIoiSIDIAZ8IANC/////w+DIAZCAYZC/v///x+DfnwiBiALhUIwiSILIAx8IAtC/////w+DIAxCAYZC/v///x+DfnwiDCADhUIBiSIDIAEpAyAiDyABKQMAIgp8IApCAYZC/v///x+DIA9C/////w+DfnwiCiABKQNghUIgiSIQIAFBQGsiFikDACITfCATQgGGQv7///8fgyAQQv////8Pg358IhMgD4VCKIkiDyAKfCAPQv////8PgyAKQgGGQv7///8fg358Igp8IANC/////w+DIApCAYZC/v///x+DfnwiCYVCIIkiFCABKQMwIhEgASkDECINfCANQgGGQv7///8fgyARQv////8Pg358Ig0gASkDcIVCIIkiEiABKQNQIg58IA5CAYZC/v///x+DIBJC/////w+DfnwiDiARhUIoiSIRIA18IBFC/////w+DIA1CAYZC/v///x+DfnwiDSAShUIwiSISIA58IBJC/////w+DIA5CAYZC/v///x+DfnwiDnwgFEL/////D4MgDkIBhkL+////H4N+fCIVIAOFQiiJIgMgCXwgA0L/////D4MgCUIBhkL+////H4N+fCIJNwMAIAEgCSAUhUIwiSIJNwN4IAEgCSAVfCAJQv////8PgyAVQgGGQv7///8fg358Igk3A1AgASADIAmFQgGJNwMoIAEgBCAFfCAEQv////8PgyAFQgGGQv7///8fg358IgQgDiARhUIBiSIFIAZ8IAVC/////w+DIAZCAYZC/v///x+DfnwiAyAKIBCFQjCJIgaFQiCJIgp8IARCAYZC/v///x+DIApC/////w+DfnwiECAFhUIoiSIFIAN8IAVC/////w+DIANCAYZC/v///x+DfnwiCSAKhUIwiSIDNwNgIAEgCTcDCCABIAUgAyAQfCADQv////8PgyAQQgGGQv7///8fg358IgWFQgGJNwMwIAEgBTcDWCABIAQgCIVCAYkiCCANfCAIQv////8PgyANQgGGQv7///8fg358IgQgC4VCIIkiBSAGIBN8IAZC/////w+DIBNCAYZC/v///x+DfnwiA3wgBUL/////D4MgA0IBhkL+////H4N+fCIGIAiFQiiJIgggBHwgCEL/////D4MgBEIBhkL+////H4N+fCIENwMQIAEgBCAFhUIwiSIENwNoIBYgBCAGfCAEQv////8PgyAGQgGGQv7///8fg358IgY3AwAgASAHIAMgD4VCAYkiBHwgB0IBhkL+////H4MgBEL/////D4N+fCIHIBKFQiCJIgUgDHwgBUL/////D4MgDEIBhkL+////H4N+fCIDIASFQiiJIgQgB3wgBEL/////D4MgB0IBhkL+////H4N+fCILIAWFQjCJIgcgA3wgB0L/////D4MgA0IBhkL+////H4N+fCIFNwNIIAEgBzcDcCABIAs3AxggASAGIAiFQgGJNwM4IAEgBCAFhUIBiTcDICAAQQFqIgBBCEcNAAtBACEAA0AgGEGACGogAEEEdGoiASABKQOIAyIIIAEpA4gBIgd8IAdCAYZC/v///x+DIAhC/////w+DfnwiByABKQOIB4VCIIkiBCABKQOIBSIFfCAFQgGGQv7///8fgyAEQv////8Pg358IgUgCIVCKIkiCCAHfCAIQv////8PgyAHQgGGQv7///8fg358IgcgBIVCMIkiBCABKQOIAiIDIAEpAwgiBnwgBkIBhkL+////H4MgA0L/////D4N+fCIGIAEpA4gGhUIgiSILIAEpA4gEIgx8IAxCAYZC/v///x+DIAtC/////w+DfnwiDCADhUIoiSIDIAZ8IANC/////w+DIAZCAYZC/v///x+DfnwiBiALhUIwiSILIAx8IAtC/////w+DIAxCAYZC/v///x+DfnwiDCADhUIBiSIDIAEpA4ACIg8gASkDACIKfCAKQgGGQv7///8fgyAPQv////8Pg358IgogASkDgAaFQiCJIhAgASkDgAQiE3wgE0IBhkL+////H4MgEEL/////D4N+fCITIA+FQiiJIg8gCnwgD0L/////D4MgCkIBhkL+////H4N+fCIKfCADQv////8PgyAKQgGGQv7///8fg358IgmFQiCJIhQgASkDgAMiESABKQOAASINfCANQgGGQv7///8fgyARQv////8Pg358Ig0gASkDgAeFQiCJIhIgASkDgAUiDnwgDkIBhkL+////H4MgEkL/////D4N+fCIOIBGFQiiJIhEgDXwgEUL/////D4MgDUIBhkL+////H4N+fCINIBKFQjCJIhIgDnwgEkL/////D4MgDkIBhkL+////H4N+fCIOfCAUQv////8PgyAOQgGGQv7///8fg358IhUgA4VCKIkiAyAJfCADQv////8PgyAJQgGGQv7///8fg358Igk3AwAgASAJIBSFQjCJIgk3A4gHIAEgCSAVfCAJQv////8PgyAVQgGGQv7///8fg358Igk3A4AFIAEgAyAJhUIBiTcDiAIgASAEIAV8IARC/////w+DIAVCAYZC/v///x+DfnwiBCAOIBGFQgGJIgUgBnwgBUL/////D4MgBkIBhkL+////H4N+fCIDIAogEIVCMIkiBoVCIIkiCnwgBEIBhkL+////H4MgCkL/////D4N+fCIQIAWFQiiJIgUgA3wgBUL/////D4MgA0IBhkL+////H4N+fCIJIAqFQjCJIgM3A4AGIAEgCTcDCCABIAUgAyAQfCADQv////8PgyAQQgGGQv7///8fg358IgWFQgGJNwOAAyABIAU3A4gFIAEgBCAIhUIBiSIIIA18IAhC/////w+DIA1CAYZC/v///x+DfnwiBCALhUIgiSIFIAYgE3wgBkL/////D4MgE0IBhkL+////H4N+fCIDfCAFQv////8PgyADQgGGQv7///8fg358IgYgCIVCKIkiCCAEfCAIQv////8PgyAEQgGGQv7///8fg358IgQ3A4ABIAEgBCAFhUIwiSIENwOIBiABIAQgBnwgBEL/////D4MgBkIBhkL+////H4N+fCIGNwOABCABIAcgAyAPhUIBiSIEfCAHQgGGQv7///8fgyAEQv////8Pg358IgcgEoVCIIkiBSAMfCAFQv////8PgyAMQgGGQv7///8fg358IgMgBIVCKIkiBCAHfCAEQv////8PgyAHQgGGQv7///8fg358IgsgBYVCMIkiByADfCAHQv////8PgyADQgGGQv7///8fg358IgU3A4gEIAEgBzcDgAcgASALNwOIASABIAYgCIVCAYk3A4gDIAEgBCAFhUIBiTcDgAIgAEEBaiIAQQhHDQALIAIgGEGACBALIQFBACEAA0AgASAAQQN0IgJqIhYgFikDACAYQYAIaiIZIAJqKQMAhTcDACABIAJBCHIiFmoiFyAXKQMAIBYgGWopAwCFNwMAIAEgAkEQciIWaiIXIBcpAwAgGEGACGogFmopAwCFNwMAIAEgAkEYciICaiIWIBYpAwAgGEGACGogAmop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AnA3A+ADIAJBgARqIgMgAkHwA2ogAkHgA2oQCCABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJYNwPYAyACIAEpAlA3A9ADIAIgASkCaDcDyAMgAiABKQJgNwPAAyADIAJB0ANqIAJBwANqEAggASACKQKIBDcCaCABIAIpAoAENwJgIAIgASkCSDcDuAMgAiABQUBrIgApAgA3A7ADIAIgASkCWDcDqAMgAiABKQJQNwOgAyADIAJBsANqIAJBoANqEAggASACKQKIBDcCWCABIAIpAoAENwJQIAIgASkCODcDmAMgAiABKQIwNwOQAyACIAEpAkg3A4gDIAIgACkCADcDgAMgAyACQZADaiACQYADahAIIAEgAikCiAQ3AkggACACKQKABDcCACACIAEpAig3A/gCIAIgASkCIDcD8AIgAiABKQI4NwPoAiACIAEpAjA3A+ACIAMgAkHwAmogAkHgAmoQCCABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIYNwPYAiACIAEpAhA3A9ACIAIgASkCKDcDyAIgAiABKQIgNwPAAiADIAJB0AJqIAJBwAJqEAggASACKQKIBDcCKCABIAIpAoAENwIgIAIgASkCCDcDuAIgAiABKQIANwOwAiACIAEpAhg3A6gCIAIgASkCEDcDoAIgAyACQbACaiACQaACahAIIAEgAikCiAQ3AhggASACKQKABDcCECACIAIpA5gENwOYAiACIAIpA5AENwOQAiACIAEpAgg3A4gCIAIgASkCADcDgAIgAyACQZACaiACQYACahAIIAEgAikCiAQ3AgggASACKQKABDcCACABIBIgASgADHM2AgwgASARIAEoAAhzNgIIIAEgECABKAAEczYCBCABIBMgASgAAHM2AgAgACAPIAAoAABzNgIAIAEgDiABKABEczYCRCABIA0gASgASHM2AkggASAMIAEoAExzNgJMIAIgASkCeDcDmAQgAiABKQJwNwOQBCACIAEpAmg3A/gBIAIgASkCYDcD8AEgAiABKQJ4NwPoASACIAEpAnA3A+ABIAMgAkHwAWogAkHgAWoQCCABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJYNwPYASACIAEpAlA3A9ABIAIgASkCaDcDyAEgAiABKQJgNwPAASADIAJB0AFqIAJBwAFqEAggASACKQKIBDcCaCABIAIpAoAENwJgIAIgASkCSDcDuAEgAiAAKQIANwOwASACIAEpAlg3A6gBIAIgASkCUDcDoAEgAyACQbABaiACQaABahAIIAEgAikCiAQ3AlggASACKQKABDcCUCACIAEpAjg3A5gBIAIgASkCMDcDkAEgAiABKQJINwOIASACIAApAgA3A4ABIAMgAkGQAWogAkGAAWoQCCABIAIpAogENwJIIAAgAikCgAQ3AgAgAiABKQIoNwN4IAIgASkCIDcDcCACIAEpAjg3A2ggAiABKQIwNwNgIAMgAkHwAGogAkHgAGoQCCABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIYNwNYIAIgASkCEDcDUCACIAEpAig3A0ggAiABKQIgNwNAIAMgAkHQAGogAkFAaxAIIAEgAikCiAQ3AiggASACKQKABDcCICACIAEpAgg3AzggAiABKQIANwMwIAIgASkCGDcDKCACIAEpAhA3AyAgAyACQTBqIAJBIGoQCCABIAIpAogENwIYIAEgAikCgAQ3AhAgAiACKQOYBDcDGCACIAIpA5AENwMQIAIgASkCCDcDCCACIAEpAgA3AwAgAyACQRBqIAIQCCABIAIpAogENwIIIAEgAikCgAQ3AgAgASALIAEoAAxzNgIMIAEgCiABKAAIczYCCCABIAkgASgABHM2AgQgASAIIAEoAABzNgIAIAAgByAAKAAAczYCACABIAYgASgARHM2AkQgASAFIAEoAEhzNgJIIAEgBCABKABMczYCTCACQaAEaiQAC70JARF/IwBBoAJrIgMkACABKAAEIRAgASgACCERIAEoAAwhEiAAKAAEIQsgACgACCEMIAAoAAwhDSABKAAAIRMgAkHwAGoiASAAKAAAIg5BgIKEEHMiADYCACACQeAAaiIGIA5B2/vgqAVzNgIAIAJB0ABqIgcgADYCACACQUBrIgAgDiATcyIFNgIAIAJCoKLEkbSurZRdNwI4IAJBMGoiCELb++Co1c3wl3E3AgAgAkKVxNzJhbL6vOIANwIoIAJBIGoiCUKAgoSQsKCBhA03AgAgAkKgosSRtK6tlF03AhggAkEQaiIKQtv74KjVzfCXcTcCACACIAU2AgAgAiANQZDT55MGcyIFNgJ8IAIgDEGVxNzJBXMiBDYCeCACIAtBg4qg6ABzIg82AnQgAiANQfPqoul9czYCbCACIAxBoKLEkQRzNgJoIAIgC0HthL+Jf3M2AmQgAiAFNgJcIAIgBDYCWCACIA82AlQgAiANIBJzIgU2AkwgAiAMIBFzIgQ2AkggAiALIBBzIg82AkQgAiAFNgIMIAIgBDYCCCACIA82AgRBACEFA0AgAyABKQIINwOYAiADIAEpAgA3A5ACIAMgBikCCDcD+AEgAyAGKQIANwPwASADIAEpAgg3A+gBIAMgASkCADcD4AEgA0GAAmoiBCADQfABaiADQeABahAIIAEgAykCiAI3AgggASADKQKAAjcCACADIAcpAgg3A9gBIAMgBykCADcD0AEgAyAGKQIINwPIASADIAYpAgA3A8ABIAQgA0HQAWogA0HAAWoQCCAGIAMpAogCNwIIIAYgAykCgAI3AgAgAyAAKQIINwO4ASADIAApAgA3A7ABIAMgBykCCDcDqAEgAyAHKQIANwOgASAEIANBsAFqIANBoAFqEAggByADKQKIAjcCCCAHIAMpAoACNwIAIAMgCCkCCDcDmAEgAyAIKQIANwOQASADIAApAgg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAAgAykCiAI3AgggACADKQKAAjcCACADIAkpAgg3A3ggAyAJKQIANwNwIAMgCCkCCDcDaCADIAgpAgA3A2AgBCADQfAAaiADQeAAahAIIAggAykCiAI3AgggCCADKQKAAjcCACADIAopAgg3A1ggAyAKKQIANwNQIAMgCSkCCDcDSCADIAkpAgA3A0AgBCADQdAAaiADQUBrEAggCSADKQKIAjcCCCAJIAMpAoACNwIAIAMgAikCCDcDOCADIAIpAgA3AzAgAyAKKQIINwMoIAMgCikCADcDICAEIANBMGogA0EgahAIIAogAykCiAI3AgggCiADKQKAAjcCACADIAMpA5gCNwMYIAMgAykDkAI3AxAgAyACKQIINwMIIAMgAikCADcDACAEIANBEGogAxAIIAIgAykCiAI3AgggAiADKQKAAjcCACACIAIoAAwgEnM2AgwgAiACKAAIIBFzNgIIIAIgAigABCAQczYCBCACIAIoAAAgE3M2AgAgACAAKAAAIA5zNgIAIAIgAigARCALczYCRCACIAIoAEggDHM2AkggAiACKABMIA1zNgJMIAVBAWoiBUEKRw0ACyADQaACaiQACxAAIAAgAUGMlwIoAgARAAAL0g8BJH8jAEHwBGsiAiQAIAJB4ANqIgMgARAFIANB4AwgAxAGIAIgAigChAQiBzYClAIgAiACKAKABCIINgKQAiACIAIoAvwDIgk2AowCIAIgAigC+AMiCjYCiAIgAiACKAL0AyILNgKEAiACIAIoAvADIgw2AoACIAIgAigC7AMiDTYC/AEgAiACKALoAyIONgL4ASACIAIoAuQDIgU2AvQBIAIgAigC4AMiBkEBajYC8AEgAkHwAWoiBCAEQbCJAhAGIAIgB0HM5N8FazYC1AMgAiAIQYCS9QhrNgLQAyACIAlB55zGAWs2AswDIAIgCkHEhv8CazYCyAMgAiALQeiumARrNgLEAyACIAxBqYAHajYCwAMgAiANQY+UqANqNgK8AyACIA5Bw6KqB2s2ArgDIAIgBUGF5c0GajYCtAMgAiAGQcqOmgVrNgKwAyACQcABaiIZIANBsAwQBiACQQAgAigC5AFrNgLkASACQQAgAigC4AFrNgLgASACQQAgAigC3AFrNgLcASACQQAgAigC2AFrNgLYASACQQAgAigC1AFrNgLUASACQQAgAigC0AFrNgLQASACQQAgAigCzAFrNgLMASACQQAgAigCyAFrNgLIASACQQAgAigCxAFrNgLEASACIAIoAsABQX9zNgLAASAZIBkgAkGwA2oQBiACQYADaiIiIAQgGRBqIQMgAkHQAmoiBCAiIAEQBiACQcAEaiIkIAQQESACLQDABCElIAIoAqQDIRogAigC9AIhBCACKAKgAyEbIAIoAvACIRAgAigCnAMhHCACKALsAiERIAIoApgDIR0gAigC6AIhEiACKAKUAyEeIAIoAuQCIRMgAigCkAMhHyACKALgAiEUIAIoAowDISAgAigC3AIhFSACKAKIAyEhIAIoAtgCIRYgAigChAMhDyACKALUAiEXIAIoAoADISMgAigC0AIhGCACIAcgA0EBayIBcTYC5AQgAiABIAhxNgLgBCACIAEgCXE2AtwEIAIgASAKcTYC2AQgAiABIAtxNgLUBCACIAEgDHE2AtAEIAIgASANcTYCzAQgAiABIA5xNgLIBCACIAEgBXE2AsQEIAIgBkEAIANrcjYCwAQgAiAjICNBACAYQQAgJUEBcWsiAyAYQQAg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IAIgASADEAYgAkGQBmoiASACEAUgASABEAUgAkGQB2oiBSACIAEQBiACQcAEaiIDIAUQBSADIAMQBSADIAMQBSADIAMQBSACQZAEaiIBIAUgAxAGIAEgARAFIAEgARAFIAEgASACEAYgAiACKQOwBDcDgAQgAiACKQOoBDcD+AMgAiACKQOgBDcD8AMgAiACKQOYBDcD6AMgAiACKQOQBDcD4AMgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAJB4ANqIgMQBiABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEgAxAGIAIgAikDsAQ3A9ADIAIgAikDqAQ3A8gDIAIgAikDoAQ3A8ADIAIgAikDmAQ3A7gDIAIgAikDkAQ3A7ADIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASACQbADaiIDEAYgAiACKQOwBDcD0AMgAiACKQOoBDcDyAMgAiACKQOgBDcDwAMgAiACKQOYBDcDuAMgAiACKQOQBDcDsAMgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAMQBiACIAIpA7AENwPQAyACIAIpA6gENwPIAyACIAIpA6AENwPAAyACIAIpA5gENwO4AyACIAIpA5AENwOwAwNAIAJBkARqIgEgARAFIARBAWoiBEH4AEcNAAsgASABIAJBsANqEAYgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAJB4ANqEAYgASABEAUgASABEAUgASABEAUgASABIAIQBiABIAEQBSACQZADaiABEBEgAigCgAIhAyACKAKEAiEEIAIoAogCIQUgAigCjAIhBiACKAKQAiEHIAIoApQCIQggAigCmAIhCSACKAKcAiEKIAIoAqACIQsgAkEAIAItAJEDQQFxayIBIAIoAqQCIgxBACAMa3NxIAxzIgw2ApQFIAIgCyALQQAgC2tzIAFxcyILNgKQBSACIAogCkEAIAprcyABcXMiCjYCjAUgAiAJIAlBACAJa3MgAXFzIgk2AogFIAIgCCAIQQAgCGtzIAFxcyIINgKEBSACIAcgB0EAIAdrcyABcXMiBzYCgAUgAiAGIAZBACAGa3MgAXFzIgY2AvwEIAIgBSAFQQAgBWtzIAFxcyIFNgL4BCACIAQgBEEAIARrcyABcXMiBDYC9AQgAiADIANBACADa3MgAXFzIAFBhtodcWsiAUEBajYC8AQgAiAMNgK0BiACIAs2ArAGIAIgCjYCrAYgAiAJNgKoBiACIAg2AqQGIAIgBzYCoAYgAiAGNgKcBiACIAU2ApgGIAIgBDYClAYgAiABQQFrNgKQBiACIAJB8ARqEDUgAkGQB2oiASACQZAGaiACEAYgACABEBEgACAALQAfIBByOgAfIAIgABA0BEAQiwEACyACIAIpAiA3A7AGIAIgAikCGDcDqAYgAiACKQIQNwOgBiACIAIpAgg3A5gGIAIgAikCMDcDwAYgAiACKQI4NwPIBiACIAJBQGspAgA3A9AGIAIgAikCSDcD2AYgAiACKQIANwOQBiACIAIpAig3A7gGIAIgAikCcDcDgAcgAiACKQJoNwP4BiACIAIpAmA3A/AGIAIgAikCWDcD6AYgAiACKQJQNwPgBiACQfAEaiIBIAJBkAZqIgMQGCADIAEgAkHoBWoiBBAGIAJBuAZqIgcgAkGYBWoiBiACQcAFaiIFEAYgAkHgBmoiCCAFIAQQBiABIAMQGCADIAEgBBAGIAcgBiAFEAYgCCAFIAQQBiABIAMQGCACIAEgBBAGIAJBKGoiByAGIAUQBiACQdAAaiIIIAUgBBAGIAJB+ABqIAEgBhAGIAEgCBA1IAMgAiABEAYgAkGQB2oiBCAHIAEQBiAAIAQQESACQcAEaiADEBEgACAALQAfIAItAMAEQQd0czoAHyACQcAHaiQAIA1BMGokAAuEAQEIf0EgIQFBASECA0AgACABQQJrIgRqLQAAIgUgBEHgFmotAAAiBmtBCHUgAUEBayIBQeAWai0AACIHIAAgAWotAAAiCHNBAWtBCHUgAnEiAXEgCCAHa0EIdSACcSADcnIhAyAFIAZzQQFrQQh1IAFxIQIgBCIBDQALIANB/wFxQQBHC5wLAQZ/IAAgAWohBQJAAkAgACgCBCICQQFxDQAgAkECcUUNASAAKAIAIgIgAWohAQJAAkACQCAAIAJrIgBBiKYCKAIARwRAIAAoAgwhAyACQf8BTQRAIAMgACgCCCIERw0CQfSlAkH0pQIoAgBBfiACQQN2d3E2AgAMBQsgACgCGCEGIAAgA0cEQCAAKAIIIgIgAzYCDCADIAI2AggMBAsgACgCFCIEBH8gAEEUagUgACgCECIERQ0DIABBEGoLIQIDQCACIQcgBCIDQRRqIQIgAygCFCIEDQAgA0EQaiECIAMoAhAiBA0ACyAHQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNB/KUCIAE2AgAgBSACQX5xNgIEIAAgAUEBcjYCBCAFIAE2AgAPCyAEIAM2AgwgAyAENgIIDAILQQAhAwsgBkUNAAJAIAAoAhwiAkECdEGkqAJqIgQoAgAgAEYEQCAEIAM2AgAgAw0BQfilAkH4pQIoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAARhtqIAM2AgAgA0UNAQsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNACADIAI2AhQgAiADNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEGMpgIoAgAgBUYEQEGMpgIgADYCAEGApgJBgKYCKAIAIAFqIgE2AgAgACABQQFyNgIEIABBiKYCKAIARw0GQfylAkEANgIAQYimAkEANgIADwtBiKYCKAIAIAVGBEBBiKYCIAA2AgBB/KUCQfylAigCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyACQXhxIAFqIQEgBSgCDCEDIAJB/wFNBEAgBSgCCCIEIANGBEBB9KUCQfSlAigCAEF+IAJBA3Z3cTYCAAwFCyAEIAM2AgwgAyAENgIIDAQLIAUoAhghBiADIAVHBEAgBSgCCCICIAM2AgwgAyACNgIIDAMLIAUoAhQiBAR/IAVBFGoFIAUoAhAiBEUNAiAFQRBqCyECA0AgAiEHIAQiA0EUaiECIAMoAhQiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIADAILIAUgAkF+cTYCBCAAIAFBAXI2AgQgACABaiABNgIADAMLQQAhAwsgBkUNAAJAIAUoAhwiAkECdEGkqAJqIgQoAgAgBUYEQCAEIAM2AgAgAw0BQfilAkH4pQIoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAM2AgAgA0UNAQsgAyAGNgIYIAUoAhAiAgRAIAMgAjYCECACIAM2AhgLIAUoAhQiAkUNACADIAI2AhQgAiADNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABBiKYCKAIARw0AQfylAiABNgIADwsgAUH/AU0EQCABQXhxQZymAmohAgJ/QfSlAigCACIDQQEgAUEDdnQiAXFFBEBB9KUCIAEgA3I2AgAgAgwBCyACKAIICyEBIAIgADYCCCABIAA2AgwgACACNgIMIAAgATYCCA8LQR8hAyABQf///wdNBEAgAUEmIAFBCHZnIgJrdkEBcSACQQF0a0E+aiEDCyAAIAM2AhwgAEIANwIQIANBAnRBpKgCaiECAkACQEH4pQIoAgAiBEEBIAN0IgdxRQRAQfilAiAEIAdyNgIAIAIgADYCACAAIAI2AhgMAQsgAUEZIANBAXZrQQAgA0EfRxt0IQMgAigCACECA0AgAiIEKAIEQXhxIAFGDQIgA0EddiECIANBAXQhAyAEIAJBBHFqIgdBEGooAgAiAg0ACyAHIAA2AhAgACAENgIYCyAAIAA2AgwgACAANgIIDwsgBCgCCCIBIAA2AgwgBCAANgIIIABBADYCGCAAIAQ2AgwgACABNgIICwvPBAEJfyMAQYABayIDJAAgAEEBNgIAIABCADcCBCAAQgA3AgwgAEIANwIUIABCADcCHCAAQoCAgIAQNwIkIABBLGpBAEHMABAMGiAAIAFBwAdsQbAXaiIBIAIgAkEfdSACcUEBdGsiBEEBc0H/AXFBAWtBH3YQKSAAIAFB+ABqIARBAnNB/wFxQQFrQR92ECkgACABQfABaiAEQQNzQf8BcUEBa0EfdhApIAAgAUHoAmogBEEEc0H/AXFBAWtBH3YQKSAAIAFB4ANqIARBBXNB/wFxQQFrQR92ECkgACABQdgEaiAEQQZzQf8BcUEBa0EfdhApIAAgAUHQBWogBEEHc0H/AXFBAWtBH3YQKSAAIAFByAZqIARBCHNB/wFxQQFrQR92ECkgAyAAKQJINwMoIAMgAEFAaykCADcDICADIAApAjg3AxggAyAAKQIwNwMQIAMgACkCKDcDCCADIAApAgg3AzggA0FAayAAKQIQNwMAIAMgACkCGDcDSCADIAApAiA3A1AgAyAAKQIANwMwIAAoAlQhASAAKAJYIQQgACgCXCEFIAAoAmAhBiAAKAJkIQcgACgCaCEIIAAoAmwhCSAAKAJwIQogACgCUCELIANBACAAKAJ0azYCfCADQQAgCms2AnggA0EAIAlrNgJ0IANBACAIazYCcCADQQAgB2s2AmwgA0EAIAZrNgJoIANBACAFazYCZCADQQAgBGs2AmAgA0EAIAFrNgJcIANBACALazYCWCAAIANBCGogAkGAAXFBB3YQKSADQYABaiQAC6wFAQl/IwBBoAFrIgMkACAAQQE2AgAgAEIANwIEIABCADcCDCAAQgA3AhQgAEIANwIcIABCADcCLCAAQoCAgIAQNwIkIABCADcCNCAAQgA3AjwgAEIANwJEIABCgICAgBA3AkwgAEHUAGpBAEHMABAMGiAAIAEgAiACQR91IAJxQQF0ayIEQQFzQf8BcUEBa0EfdhAqIAAgAUGgAWogBEECc0H/AXFBAWtBH3YQKiAAIAFBwAJqIARBA3NB/wFxQQFrQR92ECogACABQeADaiAEQQRzQf8BcUEBa0EfdhAqIAAgAUGABWogBEEFc0H/AXFBAWtBH3YQKiAAIAFBoAZqIARBBnNB/wFxQQFrQR92ECogACABQcAHaiAEQQdzQf8BcUEBa0EfdhAqIAAgAUHgCGogBEEIc0H/AXFBAWtBH3YQKiADIAApAkg3AyAgAyAAQUBrKQIANwMYIAMgACkCODcDECADIAApAjA3AwggAyAAKQIoNwMAIAMgACkCIDcDSCADQUBrIAApAhg3AwAgAyAAKQIQNwM4IAMgACkCCDcDMCADIAApAgA3AyggAyAAKQJYNwNYIAMgACkCYDcDYCADIAApAmg3A2ggAyAAKQJwNwNwIAMgACkCUDcDUCAAKAJ8IQEgACgCgAEhBCAAKAKEASEFIAAoAogBIQYgACgCjAEhByAAKAKQASEIIAAoApQBIQkgACgCmAEhCiAAKAJ4IQsgA0EAIAAoApwBazYCnAEgA0EAIAprNgKYASADQQAgCWs2ApQBIANBACAIazYCkAEgA0EAIAdrNgKMASADQQAgBms2AogBIANBACAFazYChAEgA0EAIARrNgKAASADQQAgAWs2AnwgA0EAIAtrNgJ4IAAgAyACQYABcUEHdhAqIANBoAFqJAALjhEBE38jAEHAH2siAyQAIANBoAFqIAIQECADQYAeaiIGIAIpAiA3AwAgA0H4HWoiByACKQIYNwMAIANB8B1qIgkgAikCEDcDACADQegdaiIMIAIpAgg3AwAgAyACKQIANwPgHSADQZAeaiINIAIpAjA3AwAgA0GYHmoiDiACKQI4NwMAIANBoB5qIg8gAkFAaykCADcDACADQageaiIQIAIpAkg3AwAgAyACKQIoNwOIHiADQbgeaiIRIAIpAlg3AwAgA0HAHmoiEiACKQJgNwMAIANByB5qIhMgAikCaDcDACADQdAeaiIUIAIpAnA3AwAgAyACKQJQNwOwHiADQcgbaiIIIANB4B1qIhUQGCADQegSaiILIAggA0HAHGoiBBAGIANBkBNqIANB8BtqIgUgA0GYHGoiChAGIANBuBNqIAogBBAGIANB4BNqIAggBRAGIANBwAJqIgQgCxAQIANBqBpqIgggAiAEEBMgA0HIEWoiCyAIIANBoBtqIgQQBiADQfARaiADQdAaaiIFIANB+BpqIgoQBiADQZgSaiAKIAQQBiADQcASaiAIIAUQBiADQeADaiALEBAgBiADQYgTaikCADcDACAHIANBgBNqKQIANwMAIAkgA0H4EmopAgA3AwAgDCADQfASaikCADcDACANIANBmBNqKQIANwMAIA4gA0GgE2opAgA3AwAgDyADQagTaikCADcDACAQIANBsBNqKQIANwMAIAMgAykC6BI3A+AdIAMgAykCkBM3A4geIBQgA0HYE2opAgA3AwAgEyADQdATaikCADcDACASIANByBNqKQIANwMAIBEgA0HAE2opAgA3AwAgAyADKQK4EzcDsB4gA0GIGWoiCCAVEBggA0GoEGoiCyAIIANBgBpqIgQQBiADQdAQaiADQbAZaiIFIANB2BlqIgoQBiADQfgQaiAKIAQQBiADQaARaiAIIAUQBiADQYAFaiIEIAsQECADQegXaiIIIAIgBBATIANBiA9qIgsgCCADQeAYaiIEEAYgA0GwD2ogA0GQGGoiBSADQbgYaiIKEAYgA0HYD2ogCiAEEAYgA0GAEGogCCAFEAYgA0GgBmogCxAQIAYgA0HoEWopAgA3AwAgByADQeARaikCADcDACAJIANB2BFqKQIANwMAIAwgA0HQEWopAgA3AwAgDSADQfgRaikCADcDACAOIANBgBJqKQIANwMAIA8gA0GIEmopAgA3AwAgECADQZASaikCADcDACADIAMpAsgRNwPgHSADIAMpAvARNwOIHiAUIANBuBJqKQIANwMAIBMgA0GwEmopAgA3AwAgEiADQagSaikCADcDACARIANBoBJqKQIANwMAIAMgAykCmBI3A7AeIANByBZqIgggFRAYIANB6A1qIgsgCCADQcAXaiIEEAYgA0GQDmogA0HwFmoiBSADQZgXaiIKEAYgA0G4DmogCiAEEAYgA0HgDmogCCAFEAYgA0HAB2oiBCALEBAgA0GoFWoiCiACIAQQEyADQcgMaiIIIAogA0GgFmoiAhAGIANB8AxqIANB0BVqIgQgA0H4FWoiBRAGIANBmA1qIAUgAhAGIANBwA1qIAogBBAGIANB4AhqIAgQECAGIANByBBqKQIANwMAIAcgA0HAEGopAgA3AwAgCSADQbgQaikCADcDACAMIANBsBBqKQIANwMAIA0gA0HYEGopAgA3AwAgDiADQeAQaikCADcDACAPIANB6BBqKQIANwMAIBAgA0HwEGopAgA3AwAgAyADKQKoEDcD4B0gAyADKQLQEDcDiB4gFCADQZgRaikCADcDACATIANBkBFqKQIA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azYCACAAQQAgACgCJGs2AiQgAEEAIAAoAiBrNgIgIABBACAAKAIcazYCHCAAQQAgACgCGGs2AhggAEEAIAAoAhRrNgIUIABBACAAKAIQazYCECAAQQAgACgCDGs2AgwgAEEAIAAoAghrNgIIIABBACAAKAIEazYCBAsgAEH4AGogACAGEAZBACEHCyACQcACaiQAIAcLBQBBgAILEAAgACABQYSXAigCABEAAAsQACAAIAFB/JYCKAIAEQAACy0BAX4gAq0gA61CIIaEIgZCEFoEfyAAIAFBEGogASAGQhB9IAQgBRBeBUF/CwsYACAAIAEgAiADrSAErUIghoQgBSAGEF4LGAAgACABIAIgA60gBK1CIIaEIAUgBhBPCxYAIAAgASACrSADrUIghoQgBCAFEHkLFQAgACABrSACrUIghoQgAyAEEM0BCxYAIAAgASACrSADrUIghoQgBEEAEHYLFwAgACABIAIgA60gBK1CIIaEIAUQhQMLFwAgACABIAIgA60gBK1CIIaEIAUQgwMLFwAgACABIAIgA60gBK1CIIaEIAUQhAMLFQAgACABIAKtIAOtQiCGhCAEEOkCCx8AIAAgASACrSADrUIghoQgBK0gBa1CIIaEIAYQ0QELGgAgACABIAKtIAOtQiCGhEGAlwIoAgARAgALHAAgACABIAKtIAOtQiCGhCAEQfiWAigCABERAAscACAAIAEgAq0gA61CIIaEIARB9JYCKAIAEREACxcAIAAgASACrSADrUIghoQgBCAFEOoCCxIAIAAgASACrSADrUIghoQQRwsYACAAIAEgAiADrSAErUIghoQgBSAGEGELLQEBfiACrSADrUIghoQiBkIQWgR/IAAgAUEQaiABIAZCEH0gBCAFEF0FQX8LCxgAIAAgASACIAOtIAStQiCGhCAFIAYQXQsYACAAIAEgAiADrSAErUIghoQgBSAGEE4LGQAgACABIAKtIAOtQiCGhCAEIAUgBhD3AgsZACAAIAEgAq0gA61CIIaEIAQgBSAGEPgCCxIAIAAgASACrSADrUIghoQQJgsVACAAIAEgAq0gA61CIIaEIAQQ4gILFQAgACABIAKtIAOtQiCGhCAEEOMCC4wBAQF/IwBBEGsiAiAANgIMIAIgATYCCEEAIQAgAkEANgIEA0AgAiACKAIEIAIoAgwgAGotAAAgAigCCCAAai0AAHNyNgIEIAIgAigCBCAAQQFyIgEgAigCDGotAAAgAigCCCABai0AAHNyNgIEIABBAmoiAEHAAEcNAAsgAigCBEEBa0EIdkEBcUEBawvaAgECfyMAQZADayIIJAAgCEEANgIEIAhBEGoiCSAGIAdBABAbGiAIIAYpABA3AgggCEHQAGoiB0LAACAIQQRqIAkQMxogCEGQAWoiBiAHQfyWAigCABEAABogB0HAABAJIAYgBCAFQYCXAigCABECABogBkHglgJCACAFfUIPg0GAlwIoAgARAgAaIAYgASACQYCXAigCABECABogBkHglgJCACACfUIPg0GAlwIoAgARAgAaIAggBTcDSCAGIAhByABqIgRCCEGAlwIoAgARAgAaIAggAjcDSCAGIARCCEGAlwIoAgARAgAaIAYgCEEwaiIEQYSXAigCABEAABogBkGAAhAJIAQgAxA3IQYgBEEQEAkCQCAARQ0AIAYEQCAAQQAgAqcQDBpBfyEGDAELIAAgASACIAhBBGogCEEQahDqAUEAIQYLIAhBEGpBIBAJIAhBkANqJAAgBgusAgEDfyMAQYADayIJJAAgCUEANgIEIAlBEGoiCiAHIAhBABAbGiAJIAcpABA3AgggCUFAayIIQsAAIAlBBGoiCyAKEDMaIAlBgAFqIgcgCEH8lgIoAgARAAAaIAhBwAAQCSAHIAUgBkGAlwIoAgARAgAaIAdB4JYCQgAgBn1CD4NBgJcCKAIAEQIAGiAAIAMgBCALIAoQ6gEgByAAIARBgJcCKAIAEQIAGiAHQeCWAkIAIAR9Qg+DQYCXAigCABECABogCSAGNwM4IAcgCUE4aiIAQghBgJcCKAIAEQIAGiAJIAQ3AzggByAAQghBgJcCKAIAEQIAGiAHIAFBhJcCKAIAEQAAGiAHQYACEAkgAgRAIAJCEDcDAAsgCUEQakEgEAkgCUGAA2okAEEAC0oBAn8jAEEgayIGJABBfyEHAkAgAkIQVA0AIAYgBCAFEEANACAAIAFBEGogASACQhB9IAMgBhBdIQcgBkEgEAkLIAZBIGokACAHC08BAn8jAEEgayIGJAAgAkLw////D1QEQEF/IQcgBiAEIAUQQEUEQCAAQRBqIAAgASACIAMgBhBOIQcgBkEgEAkLIAZBIGokACAHDwsQDgAL6AQBAn8jAEGgAWsiBCQAIAAgAS0AADoAACAAIAEtAAE6AAEgACABLQACOgACIAAgAS0AAzoAAyAAIAEtAAQ6AAQgACABLQAFOgAFIAAgAS0ABjoABiAAIAEtAAc6AAcgACABLQAIOgAIIAAgAS0ACToACSAAIAEtAAo6AAogACABLQALOgALIAAgAS0ADDoADCAAIAEtAA06AA0gACABLQAOOgAOIAAgAS0ADzoADyAAIAEtABA6ABAgACABLQAROgARIAAgAS0AEjoAEiAAIAEtABM6ABMgACABLQAUOgAUIAAgAS0AFToAFSAAIAEtABY6ABYgACABLQAXOgAXIAAgAS0AGDoAGCAAIAEtABk6ABkgACABLQAaOgAaIAAgAS0AGzoAGyAAIAEtABw6ABwgACABLQAdOgAdIAAgAS0AHjoAHiABLQAfIQMgACACBH8gACAALQAAQfgBcToAACADQcAAcgUgAwtB/wBxOgAfIAQgABA+IAAgBBAvQX8hAyAALQAfQf8AcSAALQAeIAAtAB0gAC0AHCAALQAbIAAtABogAC0AGSAALQAYIAAtABcgAC0AFiAALQAVIAAtABQgAC0AEyAALQASIAAtABEgAC0AECAALQAPIAAtAA4gAC0ADSAALQAMIAAtAAsgAC0ACiAALQAJIAAtAAggAC0AByAALQAGIAAtAAUgAC0ABCAALQADIAAtAAIgAC0AASAALQAAQQFzcnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyckEBa0GAAnFFBEBBf0EAIAFBIBAaGyEDCyAEQaABaiQAIAMLjgUBAn8jAEHAAmsiBCQAQX8hBQJAIAIQa0UNACACEEwNACAEIAIQNA0AIAQQbEUNACAAIAEtAAA6AAAgACABLQABOgABIAAgAS0AAjoAAiAAIAEtAAM6AAMgACABLQAEOgAEIAAgAS0ABToABSAAIAEtAAY6AAYgACABLQAHOgAHIAAgAS0ACDoACCAAIAEtAAk6AAkgACABLQAKOgAKIAAgAS0ACzoACyAAIAEtAAw6AAwgACABLQANOgANIAAgAS0ADjoADiAAIAEtAA86AA8gACABLQAQOgAQIAAgAS0AEToAESAAIAEtABI6ABIgACABLQATOgATIAAgAS0AFDoAFCAAIAEtABU6ABUgACABLQAWOgAWIAAgAS0AFzoAFyAA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DCAHKQAAQuv6htq/tfbBH4ULIQ4gAUFAa0EAQaUCEAwaIAEgDDcDOCABIA43AzAgASALNwMoIAEgDTcDICABQvHt9Pilp/2npX83AxggAUKr8NP0r+68tzw3AxAgAUK7zqqm2NDrs7t/NwMIIAEgCK1CiJL3lf/M+YTqAIU3AwBBAAshBAJAIANQDQAgAUHgAWohCSABQeAAaiEFA0AgBCAFaiEHQYACIARrIgatIgsgA1oEQCAHIAIgA6ciAhALGiABIAEoAuACIAJqNgLgAgwCCyAHIAIgBhALGiABIAEoAuACIAZqNgLgAiABIAEpA0AiDEKAAXw3A0AgASABKQNIIAxC/35WrXw3A0ggASAFEFIgBSAJQYABEAsaIAEgASgC4AJBgAFrIgQ2AuACIAIgBmohAiADIAt9IgNCAFINAAsLIAEgACAIEIMBGiAKJABBAAwBCxAOAAshCAsgCAsFAEGAAwsKACAAIAEgAhAHC/ADAgJ/An4jAEHAAWsiAyQAIANCADcDkAEgA0IANwOYASADQgA3A2ggA0IANwNwIANCADcDeCADQfiSAikDADcDqAEgA0GAkwIpAwA3A7ABIANBiJMCKQMANwO4ASADQgA3A4ABIANCADcDiAEgA0IANwNgIANB8JICKQMANwOgASADIAIpABA3A1AgAyACKQAYNwNYIAMgAikAADcDQCADIAIpAAg3A0ggA0GAAWoiAiADQUBrIgQQhQEgAhAoIAMgAykDmAE3AxggAyADKQOQATcDECADIAMpA4gBNwMIIAMgAykDgAE3AwAgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIAMgASkAEDcDUCADIAEpABg3A1ggASkACCEFIAEpAAAhBiADQgA3AzggA0IANwMwIANCADcDKCADIAY3A0AgAyAFNwNIIANCADcDICAEIAMQ6QEgAyADKQN4NwO4ASADIAMpA3A3A7ABIAMgAykDaDcDqAEgAyADKQNgNwOgASADIAMpA1g3A5gBIAMgAykDUDcDkAEgAyADKQNINwOIASADIAMpA0A3A4ABIAIQKCAAIAMpA5gBNwAYIAAgAykDkAE3ABAgACADKQOIATcACCAAIAMpA4ABNwAAIAJBwAAQCSADQcABaiQAC5cBAQF/IwBBQGoiAiQAIAIgASkAODcDOCACIAEpADA3AzAgAiABKQAoNwMoIAIgASkAIDcDICACIAEpABg3AxggAiABKQAQNwMQIAIgASkAADcDACACIAEpAAg3AwggAhAoIAAgAikDGDcAGCAAIAIpAxA3ABAgACACKQMINwAIIAAgAikDADcAACACQcAAEAkgAkFAayQAC8cCAgF/An4jAEHAAWsiAyQAIANCADcDYCADQgA3A2ggA0IANwNwIANCADcDeCADIAEpABA3A1AgAyABKQAYNwNYIAEpAAghBCABKQAAIQUgA0IANwMoIANCADcDMCADQgA3AzggAyAFNwNAIAMgBDcDSCADQgA3AyAgAyACKQAQNwMQIAMgAikAGDcDGCADIAIpAAA3AwAgAyACKQAINwMIIANBQGsgAxDpASADIAMpA3g3A7gBIAMgAykDcDcDsAEgAyADKQNoNwOoASADIAMpA2A3A6ABIAMgAykDWDcDmAEgAyADKQNQNwOQASADIAMpA0g3A4gBIAMgAykDQDcDgAEgA0GAAWoiARAoIAAgAykDmAE3ABggACADKQOQATcAECAAIAMpA4gBNwAIIAAgAykDgAE3AAAgAUHAABAJIANBwAFqJAAL5QEBAX8jAEGAAWsiAiQAIAJCADcDUCACQgA3A1ggAkIANwMoIAJCADcDMCACQgA3AzggAkH4kgIpAwA3A2ggAkGAkwIpAwA3A3AgAkGIkwIpAwA3A3ggAkIANwNAIAJCADcDSCACQQE6AEAgAkIANwMgIAJB8JICKQMANwNgIAIgASkAGDcDGCACIAEpABA3AxAgAiABKQAINwMIIAIgASkAADcDACACQUBrIgEgAhCFASABECggACACKQNYNwAYIAAgAikDUDcAECAAIAIpA0g3AAggACACKQNANwAAIAJBgAFqJAAL3gEBAX8jAEGAAWsiAiQAIAJCADcDUCACQgA3A1ggAkIANwMoIAJCADcDMCACQgA3AzggAkH4kgIpAwA3A2ggAkGAkwIpAwA3A3AgAkGIkwIpAwA3A3ggAkIANwNAIAJCADcDSCACQgA3AyAgAkHwkgIpAwA3A2AgAiABKQAQNwMQIAIgASkAGDcDGCACIAEpAAA3AwAgAiABKQAINwMIIAJBQGsiASACEIUBIAEQKCAAIAIpA1g3ABggACACKQNQNwAQIAAgAikDSDcACCAAIAIpA0A3AAAgAkGAAWokAAvPCwELfyMAQeAFayICJAAgAkHABWoiByABIAEQByACQeABaiIGIAEgBxAHIAJBoAVqIgQgASAGEAcgAkGABWoiBSAEIAQQByACQaADaiIJIAcgBRAHIAJBwAJqIgcgASAJEAcgAkHgBGoiAyAFIAUQByACQaACaiIFIAcgBxAHIAJBwARqIgggCSAFEAcgAkHAA2oiDCADIAUQByACQaAEaiIKIAggCBAHIAJBgANqIgggAyAKEAcgAkHgAmoiCyAGIAgQByACQcABaiIGIAMgCxAHIAJBoAFqIgMgBCAGEAcgAkHgAGogBCADEAcgAkGABGoiBiAKIAsQByACQeADaiIDIAQgBhAHIAJBgAJqIgYgDCADEAcgAkGAAWogBSAGEAcgAkFAayIFIAggAxAHIAJBIGoiAyAEIAUQByACIAkgAxAHIAAgByACEAdBACEEA0AgACAAIAAQByAEQQFqIgRB/gBHDQALIAAgACACQeACahAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACQcAFahAHIAAgACACEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkGgAWoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAhAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkGAAmoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAJBQGsQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHgAGoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHAAmoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAJBgARqEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHAAWoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHgA2oQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACQYABahAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkEgahAHIAJB4AVqJABBACABQSAQGmsLKAADQCAAQSAQGSAAIAAtAB9BH3E6AB8gABCNAUUNACAAQSAQGg0ACwsKACAAIAEgAhAuCykBAX8jAEEQayIAJAAgAEEAOgAPQeSfAiAAQQ9qQQAQABogAEEQaiQAC2MBBX8DQCAAIANqIgIgASADai0AACAEIAItAABqaiICOgAAIAAgA0EBciIEaiIGIAEgBGotAAAgBi0AACACQQh2amoiAjoAACACQQh2IQQgA0ECaiEDIAVBAmoiBUEgRw0ACwsoACACQoCAgIAQWgRAEA4ACyAAIAEgAiADQQEgBEG8nwIoAgAREAAaCwQAQQwLdAEFfwJAQQEhAgNAIAAgA2oiASACIAEtAABqIgI6AAAgASABLQABIAJBCHZqIgI6AAEgASABLQACIAJBCHZqIgI6AAIgASABLQADIAJBCHZqIgE6AAMgAUEIdiECIANBBGohAyAEQQRqIgRBBEcNAAsMAAsLggcBFH8jAEHwAWsiBCQAIARCADcDyAEgBEIANwPAASAEQcABaiIJIAEgAhALGiADKAAQIQYgA0FAayIBKAAAIQcgAygAUCEFIAMoACAhCCADKAAwIQogAygAFCELIAMoAEQhDCADKABUIQ0gAygAJCEOIAMoADQhDyADKAAYIRAgAygASCERIAMoAFghEiADKAAoIRMgAygAOCEUIAQoAsABIRUgBCgCxAEhFiAEKALIASEXIAQgAygALCADKAA8cSADKAAcIAMoAEwgAygAXCAEKALMAXNzc3M2AswBIAQgEyAUcSAQIBEgEiAXc3NzczYCyAEgBCAOIA9xIAsgDCANIBZzc3NzNgLEASAEIAggCnEgBiAHIAUgFXNzc3M2AsABIAIgCWpBAEEQIAJrEAwaIAAgCSACEAsaIAQoAsABIQAgBCgCxAEhAiAEKALIASEGIAQoAswBIQcgBCADKQJYNwPoASAEIAMpAlA3A+ABIAQgAykCSDcDuAEgBCABKQIANwOwASAEIAMpAlg3A6gBIAQgAykCUDcDoAEgBEHQAWoiBSAEQbABaiAEQaABahAIIAMgBCkC2AE3AlggAyAEKQLQATcCUCAEIAMpAjg3A5gBIAQgAykCMDcDkAEgBCADKQJINwOIASAEIAEpAgA3A4ABIAUgBEGQAWogBEGAAWoQCCADIAQpAtgBNwJIIAEgBCkC0AE3AgAgBCADKQIoNwN4IAQgAykCIDcDcCAEIAMpAjg3A2ggBCADKQIwNwNgIAUgBEHwAGogBEHgAGoQCCADIAQpAtgBNwI4IAMgBCkC0AE3AjAgBCADKQIYNwNYIAQgAykCEDcDUCAEIAMpAig3A0ggBCADKQIgNwNAIAUgBEHQAGogBEFAaxAIIAMgBCkC2AE3AiggAyAEKQLQATcCICAEIAMpAgg3AzggBCADKQIANwMwIAQgAykCGDcDKCAEIAMpAhA3AyAgBSAEQTBqIARBIGoQCCADIAQpAtgBNwIYIAMgBCkC0AE3AhAgBCAEKQPoATcDGCAEIAQpA+ABNwMQIAQgAykCCDcDCCAEIAMpAgA3AwAgBSAEQRBqIAQQCCAEKALQASEBIAQoAtQBIQUgBCgC2AEhCCADIAcgBCgC3AFzNgIMIAMgBiAIczYCCCADIAIgBXM2AgQgAyAAIAFzNgIAIARB8AFqJAALqwYBFH8jAEHgAWsiAyQAIAIoABAhBCACQUBrIgUoAAAhBiACKABQIQkgAigAICEKIAIoADAhCyACKAAUIQcgAigARCEMIAIoAFQhDSABKAAEIQ4gAigAJCEPIAIoADQhECACKAAYIQggAigASCERIAIoAFghEiABKAAIIRMgAigAKCEUIAIoADghFSABKAAAIRYgACACKAAsIAIoADxxIAIoABwgAigATCACKABcIAEoAAxzc3NzIgE2AAwgACAUIBVxIAggESASIBNzc3NzIgg2AAggACAPIBBxIAcgDCANIA5zc3NzIgc2AAQgACAKIAtxIAQgBiAJIBZzc3NzIgA2AAAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCSDcDuAEgAyAFKQIANwOwASADIAIpAlg3A6gBIAMgAikCUDcDoAEgA0HAAWoiBCADQbABaiADQaABahAIIAIgAykCyAE3AlggAiADKQLAATcCUCADIAIpAjg3A5gBIAMgAikCMDcDkAEgAyACKQJINwOIASADIAUpAgA3A4ABIAQgA0GQAWogA0GAAWoQCCACIAMpAsgBNwJIIAUgAykCwAE3AgAgAyACKQIoNwN4IAMgAikCIDcDcCADIAIpAjg3A2ggAyACKQIwNwNgIAQgA0HwAGogA0HgAGoQCCACIAMpAsgBNwI4IAIgAykCwAE3AjAgAyACKQIYNwNYIAMgAikCEDcDUCADIAIpAig3A0ggAyACKQIgNwNAIAQgA0HQAGogA0FAaxAIIAIgAykCyAE3AiggAiADKQLAATcCICADIAIpAgg3AzggAyACKQIANwMwIAMgAikCGDcDKCADIAIpAhA3AyAgBCADQTBqIANBIGoQCCACIAMpAsgBNwIYIAIgAykCwAE3AhAgAyADKQPYATcDGCADIAMpA9ABNwMQIAMgAikCCDcDCCADIAIpAgA3AwAgBCADQRBqIAMQCCADKALAASEFIAMoAsQBIQQgAygCyAEhBiACIAMoAswBIAFzNgIMIAIgBiAIczYCCCACIAQgB3M2AgQgAiAAIAVzNgIAIANB4AFqJAALiwkBEX8jAEHgAWsiBSQAIAQoADwgA0EddnMhDiAEKAA4IANBA3RzIQ8gBCgANCACQR12cyEQIARBMGoiAygAACACQQN0cyERIARBEGohAiAEQSBqIQYgBEFAayEHIARB0ABqIQgDQCAFIAgpAgg3A9gBIAUgCCkCADcD0AEgBSAHKQIINwO4ASAFIAcpAgA3A7ABIAUgCCkCCDcDqAEgBSAIKQIANwOgASAFQcABaiIJIAVBsAFqIAVBoAFqEAggCCAFKQLIATcCCCAIIAUpAsABNwIAIAUgAykCCDcDmAEgBSADKQIANwOQASAFIAcpAgg3A4gBIAUgBykCADcDgAEgCSAFQZABaiAFQYABahAIIAcgBSkCyAE3AgggByAFKQLAATcCACAFIAYpAgg3A3ggBSAGKQIANwNwIAUgAykCCDcDaCAFIAMpAgA3A2AgCSAFQfAAaiAFQeAAahAIIAMgBSkCyAE3AgggAyAFKQLAATcCACAFIAIpAgg3A1ggBSACKQIANwNQIAUgBikCCDcDSCAFIAYpAgA3A0AgCSAFQdAAaiAFQUBrEAggBiAFKQLIATcCCCAGIAUpAsABNwIAIAUgBCkCCDcDOCAFIAQpAgA3AzAgBSACKQIINwMoIAUgAikCADcDICAJIAVBMGogBUEgahAIIAIgBSkCyAE3AgggAiAFKQLAATcCACAFIAUpA9gBNwMYIAUgBSkD0AE3AxAgBSAEKQIINwMIIAUgBCkCADcDACAJIAVBEGogBRAIIAUoAsABIQsgBSgCxAEhDCAFKALIASEJIAQgDiAFKALMAXMiDTYCDCAEIAkgD3MiCTYCCCAEIAwgEHMiDDYCBCAEIAsgEXMiCzYCACAKQQFqIgpBB0cNAAsCQAJAAkACQCABQRBrDhEAAgICAgICAgICAgICAgICAQILIAQoABAhASAEKAAwIQIgBCgAICEDIAQoAFAhBiAEQUBrKAAAIQcgBCgAFCEIIAQoADQhCiAEKAAkIQ4gBCgAVCEPIAQoAEQhECAEKAAYIREgBCgAOCESIAQoACghEyAEKABYIRQgBCgASCEVIAAgBCgAHCAEKAA8IAQoACwgBCgAXCAEKABMc3NzcyANczYADCAAIBEgEiATIBQgFXNzc3MgCXM2AAggACAIIAogDiAPIBBzc3NzIAxzNgAEIAAgASACIAMgBiAHc3NzcyALczYAAAwCCyAEKAAgIQEgBCgAECECIAQoACQhAyAEKAAUIQYgBCgAKCEHIAQoABghCCAAIAQoACwgBCgAHHMgDXM2AAwgACAHIAhzIAlzNgAIIAAgAyAGcyAMczYABCAAIAEgAnMgC3M2AAAgBCgAMCEBIAQoAFAhAiAEQUBrKAAAIQMgBCgANCEGIAQoAFQhByAEKABEIQggBCgAOCEKIAQoAFghDSAEKABIIQkgACAEKAA8IAQoAFwgBCgATHNzNgAcIAAgCiAJIA1zczYAGCAAIAYgByAIc3M2ABQgACABIAIgA3NzNgAQDAELIABBACABEAwaCyAFQeABaiQAC6UGARR/IwBB4AFrIgMkACACKAAQIQUgAkFAayIEKAAAIQkgAigAUCEKIAIoACAhCyACKAAwIQwgASgABCEGIAIoABQhDSACKABEIQ4gAigAVCEPIAIoACQhECACKAA0IREgASgACCEHIAIoABghEiACKABIIRMgAigAWCEUIAIoACghFSACKAA4IRYgASgAACEIIAAgASgADCIBIAIoACwgAigAPHEgAigAHCACKABcIAIoAExzc3NzNgAMIAAgByAVIBZxIBIgEyAUc3NzczYACCAAIAYgECARcSANIA4gD3Nzc3M2AAQgACAIIAsgDHEgBSAJIApzc3NzNgAAIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAkg3A7gBIAMgBCkCADcDsAEgAyACKQJYNwOoASADIAIpAlA3A6ABIANBwAFqIgAgA0GwAWogA0GgAWoQCCACIAMpAsgBNwJYIAIgAykCwAE3AlAgAyACKQI4NwOYASADIAIpAjA3A5ABIAMgAikCSDcDiAEgAyAEKQIANwOAASAAIANBkAFqIANBgAFqEAggAiADKQLIATcCSCAEIAMpAsABNwIAIAMgAikCKDcDeCADIAIpAiA3A3AgAyACKQI4NwNoIAMgAikCMDcDYCAAIANB8ABqIANB4ABqEAggAiADKQLIATcCOCACIAMpAsABNwIwIAMgAikCGDcDWCADIAIpAhA3A1AgAyACKQIoNwNIIAMgAikCIDcDQCAAIANB0ABqIANBQGsQCCACIAMpAsgBNwIoIAIgAykCwAE3AiAgAyACKQIINwM4IAMgAikCADcDMCADIAIpAhg3AyggAyACKQIQNwMgIAAgA0EwaiADQSBqEAggAiADKQLIATcCGCACIAMpAsABNwIQIAMgAykD2AE3AxggAyADKQPQATcDECADIAIpAgg3AwggAyACKQIANwMAIAAgA0EQaiADEAggAygCwAEhACADKALEASEEIAMoAsgBIQUgAiABIAMoAswBczYCDCACIAUgB3M2AgggAiAEIAZzNgIEIAIgACAIczYCACADQeABaiQAC6UJAQ1/IwBBoANrIgIkACAAKAAQIQYgACgAFCEHIAAoABghCCAAKAAcIQkgACgABCEEIAAoAAghBSAAKAAMIQogACgAACELIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAEpAkg3A/gCIAIgAUFAayIAKQIANwPwAiACIAEpAlg3A+gCIAIgASkCUDcD4AIgAkGAA2oiAyACQfACaiACQeACahAIIAEgAikCiAM3AlggASACKQKAAzcCUCACIAEpAjg3A9gCIAIgASkCMDcD0AIgAiABKQJINwPIAiACIAApAgA3A8ACIAMgAkHQAmogAkHAAmoQCCABIAIpAogDNwJIIAAgAikCgAM3AgAgAiABKQIoNwO4AiACIAEpAiA3A7ACIAIgASkCODcDqAIgAiABKQIwNwOgAiADIAJBsAJqIAJBoAJqEAggASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCGDcDmAIgAiABKQIQNwOQAiACIAEpAig3A4gCIAIgASkCIDcDgAIgAyACQZACaiACQYACahAIIAEgAikCiAM3AiggASACKQKAAzcCICACIAEpAgg3A/gBIAIgASkCADcD8AEgAiABKQIYNwPoASACIAEpAhA3A+ABIAMgAkHwAWogAkHgAWoQCCABIAIpAogDNwIYIAEgAikCgAM3AhAgAiACKQOYAzcD2AEgAiACKQOQAzcD0AEgAiABKQIINwPIASACIAEpAgA3A8ABIAMgAkHQAWogAkHAAWoQCCACKAKAAyEMIAIoAoQDIQ0gAigCiAMhDiABIAogAigCjANzNgIMIAEgBSAOczYCCCABIAQgDXM2AgQgASALIAxzNgIAIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAEpAkg3A7gBIAIgACkCADcDsAEgAiABKQJYNwOoASACIAEpAlA3A6ABIAMgAkGwAWogAkGgAWoQCCABIAIpAogDNwJYIAEgAikCgAM3AlAgAiABKQI4NwOYASACIAEpAjA3A5ABIAIgASkCSDcDiAEgAiAAKQIANwOAASADIAJBkAFqIAJBgAFqEAggASACKQKIAzcCSCAAIAIpAoADNwIAIAIgASkCKDcDeCACIAEpAiA3A3AgAiABKQI4NwNoIAIgASkCMDcDYCADIAJB8ABqIAJB4ABqEAggASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCGDcDWCACIAEpAhA3A1AgAiABKQIoNwNIIAIgASkCIDcDQCADIAJB0ABqIAJBQGsQCCABIAIpAogDNwIoIAEgAikCgAM3AiAgAiABKQIINwM4IAIgASkCADcDMCACIAEpAhg3AyggAiABKQIQNwMgIAMgAkEwaiACQSBqEAggASACKQKIAzcCGCABIAIpAoADNwIQIAIgAikDmAM3AxggAiACKQOQAzcDECACIAEpAgg3AwggAiABKQIANwMAIAMgAkEQaiACEAggAigCgAMhACACKAKEAyEEIAIoAogDIQUgASAJIAIoAowDczYCDCABIAUgCHM2AgggASAEIAdzNgIEIAEgACAGczYCACACQaADaiQAC/MUARl/IwBBoAZrIgMkACABKAAEIQsgASgACCEMIAEoAAwhDSABKAAQIQ4gASgAFCEEIAEoABghDyABKAAcIRAgACgABCERIAAoAAghEiAAKAAMIRMgACgAECEUIAAoABQhFSAAKAAYIRYgACgAHCEXIAEoAAAhBSACQUBrIgEgACgAACIYQYCChBBzNgIAIAJClcTcyYWy+rziADcCOCACQTBqIgBCgIKEkLCggYQNNwIAIAJCoKLEkbSurZRdNwIoIAJBIGoiBkLb++Co1c3wl3E3AgAgAiAFIBhzIhk2AgAgAiAXQfPqoul9czYCXCACIBZBoKLEkQRzNgJYIAIgFUHthL+Jf3M2AlQgAkHQAGoiBSAUQdv74KgFczYCACACIBNBkNPnkwZzNgJMIAIgEkGVxNzJBXM2AkggAiARQYOKoOgAczYCRCACIBAgF3MiEDYCHCACIA8gFnMiDzYCGCACIAQgFXMiGjYCFCACQRBqIgQgDiAUcyIONgIAIAIgDSATcyINNgIMIAIgDCAScyIMNgIIIAIgCyARcyIbNgIEQQAhCwNAIAMgBSkCCDcDmAYgAyAFKQIANwOQBiADIAEpAgg3A/gFIAMgASkCADcD8AUgAyAFKQIINwPoBSADIAUpAgA3A+AFIANBgAZqIgcgA0HwBWogA0HgBWoQCCAFIAMpAogGNwIIIAUgAykCgAY3AgAgAyAAKQIINwPYBSADIAApAgA3A9AFIAMgASkCCDcDyAUgAyABKQIANwPABSAHIANB0AVqIANBwAVqEAggASADKQKIBjcCCCABIAMpAoAGNwIAIAMgBikCCDcDuAUgAyAGKQIANwOwBSADIAApAgg3A6gFIAMgACkCADcDoAUgByADQbAFaiADQaAFahAIIAAgAykCiAY3AgggACADKQKABjcCACADIAQpAgg3A5gFIAMgBCkCADcDkAUgAyAGKQIINwOIBSADIAYpAgA3A4AFIAcgA0GQBWogA0GABWoQCCAGIAMpAogGNwIIIAYgAykCgAY3AgAgAyACKQIINwP4BCADIAIpAgA3A/AEIAMgBCkCCDcD6AQgAyAEKQIANwPgBCAHIANB8ARqIANB4ARqEAggBCADKQKIBjcCCCAEIAMpAoAGNwIAIAMgAykDmAY3A9gEIAMgAykDkAY3A9AEIAMgAikCCDcDyAQgAyACKQIANwPABCAHIANB0ARqIANBwARqEAggAygCgAYhCCADKAKEBiEJIAMoAogGIQogAiADKAKMBiATczYCDCACIAogEnM2AgggAiAJIBFzNgIEIAIgCCAYczYCACADIAUpAgg3A5gGIAMgBSkCADcDkAYgAyABKQIINwO4BCADIAEpAgA3A7AEIAMgBSkCCDcDqAQgAyAFKQIANwOgBCAHIANBsARqIANBoARqEAggBSADKQKIBjcCCCAFIAMpAoAGNwIAIAMgACkCCDcDmAQgAyAAKQIANwOQBCADIAEpAgg3A4gEIAMgASkCADcDgAQgByADQZAEaiADQYAEahAIIAEgAykCiAY3AgggASADKQKABjcCACADIAYpAgg3A/gDIAMgBikCADcD8AMgAyAAKQIINwPoAyADIAApAgA3A+ADIAcgA0HwA2ogA0HgA2oQCCAAIAMpAogGNwIIIAAgAykCgAY3AgAgAyAEKQIINwPYAyADIAQpAgA3A9ADIAMgBikCCDcDyAMgAyAGKQIANwPAAyAHIANB0ANqIANBwANqEAggBiADKQKIBjcCCCAGIAMpAoAGNwIAIAMgAikCCDcDuAMgAyACKQIANwOwAyADIAQpAgg3A6gDIAMgBCkCADcDoAMgByADQbADaiADQaADahAIIAQgAykCiAY3AgggBCADKQKABjcCACADIAMpA5gGNwOYAyADIAMpA5AGNwOQAyADIAIpAgg3A4gDIAMgAikCADcDgAMgByADQZADaiADQYADahAIIAMoAoAGIQggAygChAYhCSADKAKIBiEKIAIgAygCjAYgF3M2AgwgAiAKIBZzNgIIIAIgCSAVczYCBCACIAggFHM2AgAgAyAFKQIINwOYBiADIAUpAgA3A5AGIAMgASkCCDcD+AIgAyABKQIANwPwAiADIAUpAgg3A+gCIAMgBSkCADcD4AIgByADQfACaiADQeACahAIIAUgAykCiAY3AgggBSADKQKABjcCACADIAApAgg3A9gCIAMgACkCADcD0AIgAyABKQIINwPIAiADIAEpAgA3A8ACIAcgA0HQAmogA0HAAmoQCCABIAMpAogGNwIIIAEgAykCgAY3AgAgAyAGKQIINwO4AiADIAYpAgA3A7ACIAMgACkCCDcDqAIgAyAAKQIANwOgAiAHIANBsAJqIANBoAJqEAggACADKQKIBjcCCCAAIAMpAoAGNwIAIAMgBCkCCDcDmAIgAyAEKQIANwOQAiADIAYpAgg3A4gCIAMgBikCADcDgAIgByADQZACaiADQYACahAIIAYgAykCiAY3AgggBiADKQKABjcCACADIAIpAgg3A/gBIAMgAikCADcD8AEgAyAEKQIINwPoASADIAQpAgA3A+ABIAcgA0HwAWogA0HgAWoQCCAEIAMpAogGNwIIIAQgAykCgAY3AgAgAyADKQOYBjcD2AEgAyADKQOQBjcD0AEgAyACKQIINwPIASADIAIpAgA3A8ABIAcgA0HQAWogA0HAAWoQCCADKAKABiEIIAMoAoQGIQkgAygCiAYhCiACIAMoAowGIA1zNgIMIAIgCiAMczYCCCACIAkgG3M2AgQgAiAIIBlzNgIAIAMgBSkCCDcDmAYgAyAFKQIANwOQBiADIAEpAgg3A7gBIAMgASkCADcDsAEgAyAFKQIINwOoASADIAUpAgA3A6ABIAcgA0GwAWogA0GgAWoQCCAFIAMpAogGNwIIIAUgAykCgAY3AgAgAyAAKQIINwOYASADIAApAgA3A5ABIAMgASkCCDcDiAEgAyABKQIANwOAASAHIANBkAFqIANBgAFqEAggASADKQKIBjcCCCABIAMpAoAGNwIAIAMgBikCCDcDeCADIAYpAgA3A3AgAyAAKQIINwNoIAMgACkCADcDYCAHIANB8ABqIANB4ABqEAggACADKQKIBjcCCCAAIAMpAoAGNwIAIAMgBCkCCDcDWCADIAQpAgA3A1AgAyAGKQIINwNIIAMgBikCADcDQCAHIANB0ABqIANBQGsQCCAGIAMpAogGNwIIIAYgAykCgAY3AgAgAyACKQIINwM4IAMgAikCADcDMCADIAQpAgg3AyggAyAEKQIANwMgIAcgA0EwaiADQSBqEAggBCADKQKIBjcCCCAEIAMpAoAGNwIAIAMgAykDmAY3AxggAyADKQOQBjcDECADIAIpAgg3AwggAyACKQIANwMAIAcgA0EQaiADEAggAygCgAYhCCADKAKEBiEJIAMoAogGIQogAiADKAKMBiAQczYCDCACIAogD3M2AgggAiAJIBpzNgIEIAIgCCAOczYCACALQQFqIgtBBEcNAAsgA0GgBmokAAsIACAAQRAQGQsEAEFfC5gKAR5/IwBBwAJrIgQkACAEQgA3A5gCIARCADcDkAIgBEIANwOIAiAEQgA3A4ACIARBgAJqIgUgASACEAsaIAMoABAhCyADKAAwIQwgAygAFCENIAMoADQhDiADKAAYIQ8gAygAOCEQIAMoABwhESADKAA8IRIgAygAJCEBIAMoAFQhEyADKAB0IRQgAygAZCEGIAMoACwhByADKABcIRUgAygAfCEWIAMoAGwhCCADKAAgIQkgAygAUCEXIAMoAHAhGCADKABgIQogBCgCkAIhGSAEKAKAAiEaIAQoAoQCIRsgBCgCiAIhHCAEKAKMAiEdIAQoApQCIR4gBCgCnAIhHyAEIAMoACgiICADKABoIiEgAygAeHEgAygAWCAEKAKYAnNzczYCmAIgBCAJIAogGHEgFyAZc3NzNgKQAiAEIAcgCCAWcSAVIB9zc3M2ApwCIAQgASAGIBRxIBMgHnNzczYClAIgBCAIIAcgEnEgESAdc3NzNgKMAiAEICEgECAgcSAPIBxzc3M2AogCIAQgBiABIA5xIA0gG3NzczYChAIgBCAKIAkgDHEgCyAac3NzNgKAAiACIAVqQQBBICACaxAMGiAAIAUgAhALGiAEKAKYAiEBIAQoApACIQIgBCgCnAIhBiAEKAKUAiEHIAQoAoACIQggBCgChAIhCSAEKAKIAiEKIAQoAowCIQsgBCADKQJ4NwO4AiAEIAMpAnA3A7ACIAQgAykCaDcD+AEgBCADKQJgNwPwASAEIAMpAng3A+gBIAQgAykCcDcD4AEgBEGgAmoiBSAEQfABaiAEQeABahAIIAMgBCkCqAI3AnggAyAEKQKgAjcCcCAEIAMpAlg3A9gBIAQgAykCUDcD0AEgBCADKQJoNwPIASAEIAMpAmA3A8ABIAUgBEHQAWogBEHAAWoQCCADIAQpAqgCNwJoIAMgBCkCoAI3AmAgBCADKQJINwO4ASAEIANBQGsiACkCADcDsAEgBCADKQJYNwOoASAEIAMpAlA3A6ABIAUgBEGwAWogBEGgAWoQCCADIAQpAqgCNwJYIAMgBCkCoAI3AlAgBCADKQI4NwOYASAEIAMpAjA3A5ABIAQgAykCSDcDiAEgBCAAKQIANwOAASAFIARBkAFqIARBgAFqEAggAyAEKQKoAjcCSCAAIAQpAqACNwIAIAQgAykCKDcDeCAEIAMpAiA3A3AgBCADKQI4NwNoIAQgAykCMDcDYCAFIARB8ABqIARB4ABqEAggAyAEKQKoAjcCOCADIAQpAqACNwIwIAQgAykCGDcDWCAEIAMpAhA3A1AgBCADKQIoNwNIIAQgAykCIDcDQCAFIARB0ABqIARBQGsQCCADIAQpAqgCNwIoIAMgBCkCoAI3AiAgBCADKQIINwM4IAQgAykCADcDMCAEIAMpAhg3AyggBCADKQIQNwMgIAUgBEEwaiAEQSBqEAggAyAEKQKoAjcCGCADIAQpAqACNwIQIAQgBCkDuAI3AxggBCAEKQOwAjcDECAEIAMpAgg3AwggBCADKQIANwMAIAUgBEEQaiAEEAggAyAEKQKoAjcCCCADIAQpAqACNwIAIAMgCyADKAAMczYCDCADIAogAygACHM2AgggAyAJIAMoAARzNgIEIAMgCCADKAAAczYCACAAIAIgACgAAHM2AgAgAyAHIAMoAERzNgJEIAMgASADKABIczYCSCADIAYgAygATHM2AkwgBEHAAmokAAuRCQEefyMAQaACayIDJAAgAigAECEOIAIoADAhDyACKAAUIRAgASgABCERIAIoADQhEiACKAAYIRMgASgACCEUIAIoADghFSACKAAcIQggASgADCEWIAIoADwhFyACKAAgIQUgAigAUCEJIAEoABAhGCACKABwIRkgAigAYCEEIAIoACQhBiACKABUIQogASgAFCEaIAIoAHQhGyACKABkIQwgAigAKCEHIAIoAFghCyABKAAYIRwgAigAeCEdIAIoAGghDSABKAAAIR4gACACKAAsIh8gAigAbCIgIAIoAHxxIAIoAFwgASgAHHNzcyIBNgAcIAAgByANIB1xIAsgHHNzcyILNgAYIAAgBiAMIBtxIAogGnNzcyIKNgAUIAAgBSAEIBlxIAkgGHNzcyIJNgAQIAAgICAXIB9xIAggFnNzcyIINgAMIAAgDSAHIBVxIBMgFHNzcyIHNgAIIAAgDCAGIBJxIBAgEXNzcyIGNgAEIAAgBCAFIA9xIA4gHnNzcyIFNgAAIAMgAikCeDcDmAIgAyACKQJwNwOQAiADIAIpAmg3A/gBIAMgAikCYDcD8AEgAyACKQJ4NwPoASADIAIpAnA3A+ABIANBgAJqIgQgA0HwAWogA0HgAWoQCCACIAMpAogCNwJ4IAIgAykCgAI3AnAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCaDcDyAEgAyACKQJgNwPAASAEIANB0AFqIANBwAFqEAggAiADKQKIAjcCaCACIAMpAoACNwJgIAMgAikCSDcDuAEgAyACQUBrIgApAgA3A7ABIAMgAikCWDcDqAEgAyACKQJQNwOgASAEIANBsAFqIANBoAFqEAggAiADKQKIAjcCWCACIAMpAoACNwJQIAMgAikCODcDmAEgAyACKQIwNwOQASADIAIpAkg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAIgAykCiAI3AkggACADKQKAAjcCACADIAIpAig3A3ggAyACKQIgNwNwIAMgAikCODcDaCADIAIpAjA3A2AgBCADQfAAaiADQeAAahAIIAIgAykCiAI3AjggAiADKQKAAjcCMCADIAIpAhg3A1ggAyACKQIQNwNQIAMgAikCKDcDSCADIAIpAiA3A0AgBCADQdAAaiADQUBrEAggAiADKQKIAjcCKCACIAMpAoACNwIgIAMgAikCCDcDOCADIAIpAgA3AzAgAyACKQIYNwMoIAMgAikCEDcDICAEIANBMGogA0EgahAIIAIgAykCiAI3AhggAiAD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IAIoAHAhGiACKABgIQkgAigAJCEKIAEoABQhCyACKABUIRsgAigAdCEcIAIoAGQhDCACKAAoIQ0gASgAGCEOIAIoAFghHSACKAB4IR4gAigAaCEPIAEoAAAhECAAIAIoACwiHyABKAAcIgEgAigAXCACKABsIiAgAigAfHFzc3M2ABwgACANIA4gHSAPIB5xc3NzNgAYIAAgCiALIBsgDCAccXNzczYAFCAAIAQgCCAZIAkgGnFzc3M2ABAgACAgIAcgFyAYIB9xc3NzNgAMIAAgDyAGIBUgDSAWcXNzczYACCAAIAwgBSATIAogFHFzc3M2AAQgACAJIBAgESAEIBJxc3NzNgAAIAMgAikCeDcDmAIgAyACKQJwNwOQAiADIAIpAmg3A/gBIAMgAikCYDcD8AEgAyACKQJ4NwPoASADIAIpAnA3A+ABIANBgAJqIgQgA0HwAWogA0HgAWoQCCACIAMpAogCNwJ4IAIgAykCgAI3AnAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCaDcDyAEgAyACKQJgNwPAASAEIANB0AFqIANBwAFqEAggAiADKQKIAjcCaCACIAMpAoACNwJgIAMgAikCSDcDuAEgAyACQUBrIgApAgA3A7ABIAMgAikCWDcDqAEgAyACKQJQNwOgASAEIANBsAFqIANBoAFqEAggAiADKQKIAjcCWCACIAMpAoACNwJQIAMgAikCODcDmAEgAyACKQIwNwOQASADIAIpAkg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAIgAykCiAI3AkggACADKQKAAjcCACADIAIpAig3A3ggAyACKQIgNwNwIAMgAikCODcDaCADIAIpAjA3A2AgBCADQfAAaiADQeAAahAIIAIgAykCiAI3AjggAiADKQKAAjcCMCADIAIpAhg3A1ggAyACKQIQNwNQIAMgAikCKDcDSCADIAIpAiA3A0AgBCADQdAAaiADQUBrEAggAiADKQKIAjcCKCACIAMpAoACNwIgIAMgAikCCDcDOCADIAIpAgA3AzAgAyACKQIYNwMoIAMgAikCEDcDICAEIANBMGogA0EgahAIIAIgAykCiAI3AhggAiADKQKAAjcCECADIAMpA5gCNwMYIAMgAykDkAI3AxAgAyACKQIINwMIIAMgAikCADcDACAE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ACJDNwPQAiADIAEpAAg3A9gCIAMgQ6dB+AFxOgDQAiADIAMtAO8CQT9xQcAAcjoA7wIgA0GgAmogAhA2IANCADcChAIgA0IANwKMAiADQQA2ApQCIANCADcD0AEgA0IANwPYASADQgA3A+ABIAMgAykDsAI3A6ABIAMgAykDuAI3A6gBIAMgAykDwAI3A7ABIANCADcC9AEgA0EBNgLwASADQgA3AvwBIANCADcDwAEgA0IANwPIASADIAMpA6ACNwOQASADIAMpA6gCNwOYASADQgA3AnQgA0IANwJ8IANBADYChAEgA0IANwJkIANBATYCYCADQgA3AmxB/gEhAkEAIQQDQCADKAKUAiEJIAMoArQBIQYgAygCYCEHIAMoAsABIQogAygCkAEhCyADKALwASENIAMoAmQhCCADKALEASEMIAMoApQBIQUgAygC9AEhECADKAJoIQ4gAygCyAEhESADKAKYASESIAMoAvgBIRMgAygCbCEPIAMoAswBIRQgAygCnAEhFSADKAL8ASEXIAMoAnAhGCADKALQASEcIAMoAqABIR0gAygCgAIhHiADKAJ0IRkgAygC1AEhHyADKAKkASEgIAMoAoQCISEgAygCeCEaIAMoAtgBISIgAygCqAEhIyADKAKIAiEkIAMoAnwhGyADKALcASElIAMoAqwBISYgAygCjAIhJyADKAKAASEWIAMoAuABISggAygCsAEhKSADKAKQAiEsIANBACAEIANB0AJqIi0gAiIBQQN2ai0AACACQQdxdkEBcSIEc2siAiADKAKEASIqIAMoAuQBIitzcSIuICpzIio2AoQBIAMgBiAGIAlzIAJxIi9zIjAgKms2AlQgAyAWIBYgKHMgAnEiMXMiBjYCgAEgAyApICkgLHMgAnEiFnMiKSAGazYCUCADIBsgGyAlcyACcSIycyIbNgJ8IAMgJiAmICdzIAJxIjNzIiYgG2s2AkwgAyAaIBogInMgAnEiNHMiGjYCeCADICMgIyAkcyACcSI1cyIjIBprNgJIIAMgGSAZIB9zIAJxIjZzIhk2AnQgAyAgICAgIXMgAnEiN3MiICAZazYCRCADIBggGCAccyACcSI4cyIYNgJwIAMgHSAdIB5zIAJxIjlzIh0gGGs2AkAgAyAPIA8gFHMgAnEiOnMiDzYCbCADIBUgFSAXcyACcSI7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BiAWIAMgGhAGIAENAAsgAygCkAEhECADKALwASECIAMoApQBIQ4gAygC9AEhBiADKAKYASERIAMoAvgBIQcgAygCnAEhEiADKAL8ASEKIAMoAqABIRMgAygCgAIhCyADKAKkASEPIAMoAoQCIQ0gAygCqAEhFCADKAKIAiEIIAMoAqwBIRUgAygCjAIhDCADKAKwASEXIAMoApACIQUgA0EAIARrIgEgAygClAIiBCADKAK0AXNxIARzNgKUAiADIAUgBSAXcyABcXM2ApACIAMgDCAMIBVzIAFxczYCjAIgAyAIIAggFHMgAXFzNgKIAiADIA0gDSAPcyABcXM2AoQCIAMgCyALIBNzIAFxczYCgAIgAyAKIAogEnMgAXFzNgL8ASADIAcgByARcyABcXM2AvgBIAMgBiAGIA5zIAFxczYC9AEgAyACIAIgEHMgAXFzNgLwASADKALAASECIAMoAmAhBSADKALEASEEIAMoAmQhECADKALIASEGIAMoAmghDiADKALMASEHIAMoAmwhESADKALQASEKIAMoAnAhEiADKALUASELIAMoAnQhEyADKALYASENIAMoAnghDyADKALcASEIIAMoAnwhFCADKALgASEMIAMoAoABIRUgAyADKALkASIXIAMoAoQBcyABcSAXczYC5AEgAyAMIAwgFXMgAXFzNgLgASADIAggCCAUcyABcXM2AtwBIAMgDSANIA9zIAFxczYC2AEgAyALIAsgE3MgAXFzNgLUASADIAogCiAScyABcXM2AtABIAMgByAHIBFzIAFxczYCzAEgAyAGIAYgDnMgAXFzNgLIASADIAQgBCAQcyABcXM2AsQBIAMgAiACIAVzIAFxczYCwAEgFiAWEDUgGSAZIBYQBiAAIBkQESAtQSAQCUEAIQkLIANB8AJqJAAgCQs4AQF/IwBBIGsiBiQAIAYgBCAFQQAQGxogACABIAKtIAOtQiCGhCAEQRBqQgAgBhA7IAZBIGokAAtAAQF/IwBBIGsiCCQAIAggBCAHQQAQGxogACABIAKtIAOtQiCGhCAEQRBqIAWtIAatQiCGhCAIEDsgCEEgaiQACzQBAX8jAEEgayIFJAAgBSADIARBABAbGiAAIAGtIAKtQiCGhCADQRBqIAUQUyAFQSBqJAALtgQCA38CfiMAQfAAayIGJAAgAq0gA61C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IwtbAQJ+IAetIAitQiCGhCEMQX8hAiAErSAFrUIghoQiC0IQWgRAIAAgAyALQhB9IAMgC6dqQRBrIAYgDCAJIAoQsgEhAgsgAQRAIAFCACALQhB9IAIbNwMACyACCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQsgELWQECfgJ/IAatIAetQiCGhCEMIAOtIAStQiCGhCILQvD///8PVARAIAAgACALp2pBACACIAsgBSAMIAkgChCzARogAQRAIAEgC0IQfDcDAAtBAAwBCxAOAAsLJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALELMBC1sBAn4gB60gCK1CIIaEIQxBfyECIAStIAWtQiCGhCILQhBaBEAgACADIAtCEH0gAyALp2pBEGsgBiAMIAkgChDDASECCyABBEAgAUIAIAtCEH0gAhs3AwALIAILJQAgACACIAOtIAStQiCGhCAFIAYgB60gCK1CIIaEIAkgChDDAQtbAQJ+IAetIAitQiCGhCEMQX8hAiAErSAFrUIghoQiC0IQWgRAIAAgAyALQhB9IAMgC6dqQRBrIAYgDCAJIAoQxAEhAgsgAQRAIAFCACALQhB9IAIbNwMACyACCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQxAELWQECfgJ/IAatIAetQiCGhCEMIAOtIAStQiCGhCILQvD///8PVARAIAAgACALp2pBACACIAsgBSAMIAkgChDFARogAQRAIAEgC0IQfDcDAAtBAAwBCxAOAAsLJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEMUBC1kBAn4CfyAGrSAHrUIghoQhDCADrSAErUIghoQiC0Lw////D1QEQCAAIAAgC6dqQQAgAiALIAUgDCAJIAoQxgEaIAEEQCABIAtCEHw3AwALQQAMAQsQDgALCycAIAAgASACIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAogCxDGAQtZAQJ+IAetIAitQiCGhCELQX8hAQJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC3////w9WDQAgACACIAynIAVBICAGIAunIAkgCkGsnwIoAgARDQAhAQsgAQuAAQEDfiAHrSAIrUIghoQhDEF/IQICQCAErSAFrUIghoQiC0IgVA0AIAtCIH0iDULf////D1YNACAMQt////8PVg0AIAAgAyANpyADIAunakEga0EgIAYgDKcgCSAKQayfAigCABENACECCyABBEAgAUIAIAtCIH0gAhs3AwALIAILYAECfiAErSAFrUIghoQhDCAHrSAIrUIghoQhDSACBEAgAkIgNwMACyANQuD///8PVCAMQt////8PWHFFBEAQDgALIAAgAUEgIAMgDKcgBiANpyAKIAtBqJ8CKAIAEQ0AC3YBAn4CfyAGrSAHrUIghoQhCwJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC4P///w9aDQAgACAAIAynIgNqQSAgAiADIAUgC6cgCSAKQaifAigCABENACEAIAEEQCABQgAgDEIgfCAAGzcDAAsgAAwBCxAOAAsLWQECfiAHrSAIrUIghoQhC0F/IQECQCADrSAErUIghoQiDELf////D1YNACALQt////8PVg0AIAAgAiAMpyAFQSAgBiALpyAJIApBpJ8CKAIAEQ0AIQELIAELgAEBA34gB60gCK1CIIaEIQxBfyECAkAgBK0gBa1CIIaEIgtCIFQNACALQiB9Ig1C3////w9WDQAgDELf////D1YNACAAIAMgDacgAyALp2pBIGtBICAGIAynIAkgCkGknwIoAgARDQAhAgsgAQRAIAFCACALQiB9IAIbNwMACyACC2ABAn4gBK0gBa1CIIaEIQwgB60gCK1CIIaEIQ0gAgRAIAJCIDcDAAsgDULg////D1QgDELf////D1hxRQRAEA4ACyAAIAFBICADIAynIAYgDacgCiALQaCfAigCABENAAt2AQJ+An8gBq0gB61CIIaEIQsCQCADrSAErUIghoQiDELf////D1YNACALQuD///8PWg0AIAAgACAMpyIDakEgIAIgAyAFIAunIAkgCkGgnwIoAgARDQAhACABBEAgAUIAIAxCIHwgABs3AwALIAAMAQsQDgALCwUAQegACwQAQRoLBQBBiwwLBQBBtAoL/QEBBX8jACIFIQkgBUGABGtBQHEiBSQAIAAgASAAGyIHBEBBfyEGIAVB4ABqIgggAyAEEB9FBEAgASAAIAEbIQNBACEAIAVBgAFqIgFBAEEAQcAAECIaIAEgCEIgEA8aIAhBIBAJIAEgBEIgEA8aIAEgAkIgEA8aIAEg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ACABIAIgAxAiCwsAIAAgASACEMcBCw0AIAAgASACIAMQyAELBwAgABDJAQsJACAAIAEQywELCwAgACABIAIQzAELBQBBrgsLOgEDfiABKQAgIQIgASkAKCEDIAEpADAhBCAAIAEpADg3ABggACAENwAQIAAgAzcACCAAIAI3AABBAAs6AQN+IAEpAAghAiABKQAQIQMgASkAACEEIAAgASkAGDcAGCAAIAM3ABAgACACNwAIIAAgBDcAAEEAC3wBAX8CQAJAAkAgA0LAAFQNACADQkB8IgNCv////w9WDQAgAiACQUBrIgUgAyAEQQAQdkUNASAARQ0AIABBACADpxAMGgtBfyECIAFFDQEgAUIANwMAQX8PCyABBEAgASADNwMAC0EAIQIgAEUNACAAIAUgA6cQQhoLIAILcAECfyMAQRBrIgUkACAAIAVBCGogAEFAayACIAOnIgIQQiADIARBABB4GgJAIAUpAwhCwABSBEAgAQRAIAFCADcDAAsgAEEAIAJBQGsQDBpBfyEGDAELIAFFDQAgASADQkB9NwMACyAFQRBqJAAgBgsTACAAIAEgAiADIARBABB4GkEAC20BAX8jAEFAaiICJAAgAiABQiAQRxogAiACLQAAQfgBcToAACACIAItAB9BP3FBwAByOgAfIAAgAikDEDcAECAAIAIpAwg3AAggACACKQMANwAAIAAgAikDGDcAGCACQcAAEAkgAkFAayQAQQAL5woCD38nfiMAQYACayICJABBfyEIAkAgARBMDQAgAkHgAGoiAyABEJQBDQAgAxBsRQ0AQQAhCCACQQAgAigCrAEiAWs2AiQgAkEAIAIoAqgBIgNrNgIgIAJBACACKAKkASIJazYCHCACQQAgAigCoAEiBGs2AhggAkEAIAIoApwBIgprNgIUIAJBACACKAKYASIFazYCECACQQAgAigClAEiC2s2AgwgAkEAIAIoApABIgZrNgIIIAJBACACKAKMASIMazYCBCACQQEgAigCiAEiB2s2AgAgAiACEDUgAiACKAIEIg2sIhkgCkEBdKwiIn4gAjQCACIRIASsIhR+fCACKAIIIgSsIhsgBawiFX58IAIoAgwiBawiHiALQQF0rCIjfnwgAigCECIOrCIfIAasIhZ+fCACKAIUIgasIiQgDEEBdKwiJX58IAIoAhgiD6wiLiAH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IAIQPQ0AIAMgARAQIANBoAFqIgEgBSADEFUgA0HAAmoiAiABEFYgACACEEtBACEECyADQaAGaiQAIAQLZQEDfyMAQaAGayIDJABBfyEEAkAgA0GABWoiBSABED0NACADQeADaiIBIAIQPQ0AIAMgARAQIANBoAFqIgEgBSADEBMgA0HAAmoiAiABEFYgACACEEtBACEECyADQaAGaiQAIAQLHQEBfyMAQaABayIBJAAgASAAED0gAUGgAWokAEULpQEBBn8jAEEQayIFQQA2AgxBfyEEIAIgA0EBa0sEfyABIAJBAWsiB2ohCEEAIQJBACEBQQAhBANAIAUgBSgCDCIGQQAgCCACay0AACIJQYABc0EBayAGQQFrIARBAWtxcUEIdkEBcSIGayACcXI2AgwgASAGciEBIAQgCXIhBCACQQFqIgIgA0cNAAsgACAHIAUoAgxrNgIAIAFB/wFxQQFrBUF/CwshAQF/IwBBIGsiASQAIAFBIBAZIAAgARCMASABQSBqJAALCwAgACABEIwBQQALcwEDfyMAQaAGayIDJABBfyEEAkAgA0GABWoiBSABEDQNACAFEE1FDQAgA0HgA2oiASACEDQNACABEE1FDQAgAyABEBAgA0GgAWoiASAFIAMQVSADQcACaiICIAEQViAAIAIQL0EAIQQLIANBoAZqJAAgBAtzAQN/IwBBoAZrIgMkAEF/IQQCQCADQYAFaiIFIAEQNA0AIAUQTUUNACADQeADaiIBIAIQNA0AIAEQTUUNACADIAEQECADQaABaiIBIAUgAxATIANBwAJqIgIgARBWIAAgAhAvQQAhBAsgA0GgBmokACAEC0ABAn8jAEGgAWsiASQAAkAgABBrRQ0AIAAQTA0AIAEgABA0DQAgARBNRQ0AIAEQbEEARyECCyABQaABaiQAIAILBgBBwP8AC7UCAgV/AX4jAEHwA2siBSQAIAVBAToADwJ/IAFBwP8ATQRAIAFBwABPBEAgAEFAaiEJIAOtIQpBwAAhBgNAIAYhByAFQdAAaiIGIARBwAAQLhogCARAIAYgCCAJakLAABAmGgsgBUHQAGoiBiACIAoQJhogBiAFQQ9qQgEQJhogBiAAIAhqEDEaIAUgBS0AD0EBajoADyAHIQggB0FAayIGIAFNDQALCyABQT9xIggEQCAFQdAAaiIBIARBwAAQ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ZABcjnj+aHy+ALWxPv/6KVUAmIIqAWD89gCXlz/+74U+ACA4nAAtp73/joWzAYNW0wC7s5b++qoO/9KjTgAlNJcAY00aAO6c1f/VwNEBSS5UABRBKQE2zk8AyYOS/qpvGP+xITL+qybL/073dADR3ZkAhYCyATosGQDJJzsBvRP8ADHl0gF1u3UAtbO4AQBy2wAwXpMA9Sk4AH0NzP70rXcALN0g/lTqFAD5oMYB7H7q/y9jqP6q4pn/ZrPYAOKNev96Qpn+tvWGAOPkGQHWOev/2K04/7Xn0gB3gJ3/gV+I/25+MwACqbf/B4Ji/kWwXv90BOMB2fKR/8qtHwFpASf/Lq9FAOQvOv/X4EX+zzhF/xD+i/8Xz9T/yhR+/1/VYP8JsCEAyAXP//EqgP4jIcD/+OXEAYEReAD7Z5f/BzRw/4w4Qv8o4vX/2UYl/qzWCf9IQ4YBksDW/ywmcABEuEv/zlr7AJXrjQC1qjoAdPTvAFydAgBmrWIA6YlgAX8xywAFm5QAF5QJ/9N6DAAihhr/28yIAIYIKf/gUyv+VRn3AG1/AP6piDAA7nfb/+et1QDOEv7+CLoH/34JBwFvKkgAbzTs/mA/jQCTv3/+zU7A/w5q7QG720wAr/O7/mlZrQBVGVkBovOUAAJ20f4hngkAi6Mu/11GKABsKo7+b/yO/5vfkAAz5af/Sfyb/150DP+YoNr/nO4l/7Pqz//FALP/mqSNAOHEaAAKIxn+0dTy/2H93v64ZeUA3hJ/AaSIh/8ez4z+kmHzAIHAGv7JVCH/bwpO/5NRsv8EBBgAoe7X/waNIQA11w7/KbXQ/+eLnQCzy93//7lxAL3irP9xQtb/yj4t/2ZACP9OrhD+hXVE/wBBoBULAQEAQcAVC7ABJuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQAQf8WC6zxARD9QF0AoGo/ADnTV/4M0roAWLx0/kHYAQD/yD0B2EKU/wD7XAAksuH/AAAAAAAAAACFO4wBvfEk//glwwFg3DcAt0w+/8NCPQAyTKQB4aRM/0w9o/91Ph8AUZFA/3ZBDgCic9b/BoouAHzm9P8Kio8ANBrCALj0TACBjykBvvQT/3uqev9igUQAedWTAFZlHv+hZ5sAjFlD/+/lvgFDC7UAxvCJ/u5FvP/qcTz/Jf85/0Wytv6A0LMAdhp9/gMH1v/xMk3/VcvF/9OH+v8ZMGT/u9W0/hFYaQBT0Z4BBXNiAASuPP6rN27/2bUR/xS8qgCSnGb+V9au/3J6mwHpLKoAfwjvAdbs6gCvBdsAMWo9/wZC0P8Cam7/UeoT/9drwP9Dl+4AEyps/+VVcQEyRIf/EWoJADJnAf9QAagBI5ge/xCouQE4Wej/ZdL8ACn6RwDMqk//Di7v/1BN7wC91kv/EY35ACZQTP++VXUAVuSqAJzY0AHDz6T/lkJM/6/hEP+NUGIBTNvyAMaicgAu2pgAmyvx/pugaP+yCfz+ZG7UAA4FpwDp76P/HJedAWWSCv/+nkb+R/nkAFgeMgBEOqD/vxhoAYFCgf/AMlX/CLOK/yb6yQBzUKAAg+ZxAH1YkwBaRMcA/UyeABz/dgBx+v4AQksuAObaKwDleLoBlEQrAIh87gG7a8X/VDX2/zN0/v8zu6UAAhGvAEJUoAH3Oh4AI0E1/kXsvwAthvUBo3vdACBuFP80F6UAutZHAOmwYADy7zYBOVmKAFMAVP+IoGQAXI54/mh8vgC1sT7/+ilVAJiCKgFg/PYAl5c//u+FPgAgOJwALae9/46FswGDVtMAu7OW/vqqDv9EcRX/3ro7/0IH8QFFBkgAVpxs/jenWQBtNNv+DbAX/8Qsav/vlUf/pIx9/5+tAQAzKecAkT4hAIpvXQG5U0UAkHMuAGGXEP8Y5BoAMdniAHFL6v7BmQz/tjBg/w4NGgCAw/n+RcE7AIQlUf59ajwA1vCpAaTjQgDSo04AJTSXAGNNGgDunNX/1cDRAUkuVAAUQSkBNs5PAMmDkv6qbxj/sSEy/qsmy/9O93QA0d2ZAIWAsgE6LBkAySc7Ab0T/AAx5dIBdbt1ALWzuAEActsAMF6TAPUpOAB9Dcz+9K13ACzdIP5U6hQA+aDGAex+6v+PPt0AgVnW/zeLBf5EFL//DsyyASPD2QAvM84BJvalAM4bBv6eVyQA2TSS/3171/9VPB//qw0HANr1WP78IzwAN9ag/4VlOADgIBP+k0DqABqRogFydn0A+Pz6AGVexP/GjeL+Myq2AIcMCf5trNL/xezCAfFBmgAwnC//mUM3/9qlIv5KtLMA2kJHAVh6YwDUtdv/XCrn/+8AmgD1Tbf/XlGqARLV2ACrXUcANF74ABKXof7F0UL/rvQP/qIwtwAxPfD+tl3DAMfkBgHIBRH/iS3t/2yUBABaT+3/Jz9N/zVSzwGOFnb/ZegSAVwaQwAFyFj/IaiK/5XhSAAC0Rv/LPWoAdztEf8e02n+je7dAIBQ9f5v/g4A3l++Ad8J8QCSTNT/bM1o/z91mQCQRTAAI+RvAMAhwf9w1r7+c5iXABdmWAAzSvgA4seP/syiZf/QYb0B9WgSAOb2Hv8XlEUAblg0/uK1Wf/QL1r+cqFQ/yF0+ACzmFf/RZCxAVjuGv86IHEBAU1FADt5NP+Y7lMANAjBAOcn6f/HIooA3kStAFs58v7c0n//wAf2/pcjuwDD7KUAb13OANT3hQGahdH/m+cKAEBOJgB6+WQBHhNh/z5b+QH4hU0AxT+o/nQKUgC47HH+1MvC/z1k/P4kBcr/d1uZ/4FPHQBnZ6v+7ddv/9g1RQDv8BcAwpXd/ybh3gDo/7T+dlKF/znRsQGL6IUAnrAu/sJzLgBY9+UBHGe/AN3er/6V6ywAl+QZ/tppZwCOVdIAlYG+/9VBXv51huD/UsZ1AJ3d3ACjZSQAxXIlAGispv4LtgAAUUi8/2G8EP9FBgoAx5OR/wgJcwFB1q//2a3RAFB/pgD35QT+p7d8/1oczP6vO/D/Cyn4AWwoM/+QscP+lvp+AIpbQQF4PN7/9cHvAB3Wvf+AAhkAUJqiAE3cawHqzUr/NqZn/3RICQDkXi//HsgZ/yPWWf89sIz/U+Kj/0uCrACAJhEAX4mY/9d8nwFPXQAAlFKd/sOC+/8oykz/+37gAJ1jPv7PB+H/YETDAIy6nf+DE+f/KoD+ADTbPf5my0gAjQcL/7qk1QAfencAhfKRAND86P9b1bb/jwT6/vnXSgClHm8BqwnfAOV7IgFcghr/TZstAcOLHP874E4AiBH3AGx5IABP+r3/YOP8/ibxPgA+rn3/m29d/wrmzgFhxSj/ADE5/kH6DQAS+5b/3G3S/wWupv4sgb0A6yOT/yX3jf9IjQT/Z2v/APdaBAA1LCoAAh7wAAQ7PwBYTiQAcae0AL5Hwf/HnqT/OgisAE0hDABBPwMAmU0h/6z+ZgHk3QT/Vx7+AZIpVv+KzO/+bI0R/7vyhwDS0H8ARC0O/klgPgBRPBj/qgYk/wP5GgAj1W0AFoE2/xUj4f/qPTj/OtkGAI98WADsfkIA0Sa3/yLuBv+ukWYAXxbTAMQPmf4uVOj/dSKSAef6Sv8bhmQBXLvD/6rGcAB4HCoA0UZDAB1RHwAdqGQBqa2gAGsjdQA+YDv/UQxFAYfvvv/c/BIAo9w6/4mJvP9TZm0AYAZMAOre0v+5rs0BPJ7V/w3x1gCsgYwAXWjyAMCc+wArdR4A4VGeAH/o2gDiHMsA6RuX/3UrBf/yDi//IRQGAIn7LP4bH/X/t9Z9/ih5lQC6ntX/WQjjAEVYAP7Lh+EAya7LAJNHuAASeSn+XgVOAODW8P4kBbQA+4fnAaOK1ADS+XT+WIG7ABMIMf4+DpD/n0zTANYzUgBtdeT+Z9/L/0v8DwGaR9z/Fw1bAY2oYP+1toUA+jM3AOrq1P6vP54AJ/A0AZ69JP/VKFUBILT3/xNmGgFUGGH/RRXeAJSLev/c1esB6Mv/AHk5kwDjB5oANRaTAUgB4QBShjD+Uzyd/5FIqQAiZ+8AxukvAHQTBP+4agn/t4FTACSw5gEiZ0gA26KGAPUqngAglWD+pSyQAMrvSP7XlgUAKkIkAYTXrwBWrlb/GsWc/zHoh/5ntlIA/YCwAZmyegD1+goA7BiyAIlqhAAoHSkAMh6Y/3xpJgDmv0sAjyuqACyDFP8sDRf/7f+bAZ9tZP9wtRj/aNxsADfTgwBjDNX/mJeR/+4FnwBhmwgAIWxRAAEDZwA+bSL/+pu0ACBHw/8mRpEBn1/1AEXlZQGIHPAAT+AZAE5uef/4qHwAu4D3AAKT6/5PC4QARjoMAbUIo/9PiYX/JaoL/43zVf+w59f/zJak/+/XJ/8uV5z+CKNY/6wi6ABCLGb/GzYp/uxjV/8pe6kBNHIrAHWGKACbhhoA589b/iOEJv8TZn3+JOOF/3YDcf8dDXwAmGBKAViSzv+nv9z+ohJY/7ZkFwAfdTQAUS5qAQwCBwBFUMkB0fasAAwwjQHg01gAdOKfAHpiggBB7OoB4eIJ/8/iewFZ1jsAcIdYAVr0y/8xCyYBgWy6AFlwDwFlLsz/f8wt/k//3f8zSRL/fypl//EVygCg4wcAaTLsAE80xf9oytABtA8QAGXFTv9iTcsAKbnxASPBfAAjmxf/zzXAAAt9owH5nrn/BIMwABVdb/89eecBRcgk/7kwuf9v7hX/JzIZ/2PXo/9X1B7/pJMF/4AGIwFs327/wkyyAEpltADzLzAArhkr/1Kt/QE2csD/KDdbANdssP8LOAcA4OlMANFiyv7yGX0ALMFd/ssIsQCHsBMAcEfV/847sAEEQxoADo/V/io30P88Q3gAwRWjAGOkcwAKFHYAnNTe/qAH2f9y9UwBdTt7ALDCVv7VD7AATs7P/tWBOwDp+xYBYDeY/+z/D//FWVT/XZWFAK6gcQDqY6n/mHRYAJCkU/9fHcb/Ii8P/2N4hv8F7MEA+fd+/5O7HgAy5nX/bNnb/6NRpv9IGan+m3lP/xybWf4HfhEAk0EhAS/q/QAaMxIAaVPH/6PE5gBx+KQA4v7aAL3Ry/+k997+/yOlAAS88wF/s0cAJe3+/2S68AAFOUf+Z0hJ//QSUf7l0oT/7ga0/wvlrv/j3cABETEcAKPXxP4JdgT/M/BHAHGBbf9M8OcAvLF/AH1HLAEar/MAXqkZ/hvmHQAPi3cBqKq6/6zFTP/8S7wAiXzEAEgWYP8tl/kB3JFkAEDAn/947+IAgbKSAADAfQDriuoAt52SAFPHwP+4rEj/SeGAAE0G+v+6QUMAaPbPALwgiv/aGPIAQ4pR/u2Bef8Uz5YBKccQ/wYUgACfdgUAtRCP/9wmDwAXQJP+SRoNAFfkOQHMfIAAKxjfANtjxwAWSxT/Ext+AJ0+1wBuHeYAs6f/ATb8vgDdzLb+s55B/1GdAwDC2p8Aqt8AAOALIP8mxWIAqKQlABdYBwGkum4AYCSGAOry5QD6eRMA8v5w/wMvXgEJ7wb/UYaZ/tb9qP9DfOAA9V9KABweLP4Bbdz/sllZAPwkTAAYxi7/TE1vAIbqiP8nXh0AuUjq/0ZEh//nZgf+TeeMAKcvOgGUYXb/EBvhAabOj/9ustb/tIOiAI+N4QEN2k7/cpkhAWJozACvcnUBp85LAMrEUwE6QEMAii9vAcT3gP+J4OD+nnDPAJpk/wGGJWsAxoBP/3/Rm/+j/rn+PA7zAB/bcP4d2UEAyA10/ns8xP/gO7j+8lnEAHsQS/6VEM4ARf4wAed03//RoEEByFBiACXCuP6UPyIAi/BB/9mQhP84Ji3+x3jSAGyxpv+g3gQA3H53/qVroP9S3PgB8a+IAJCNF/+pilQAoIlO/+J2UP80G4T/P2CL/5j6JwC8mw8A6DOW/igP6P/w5Qn/ia8b/0tJYQHa1AsAhwWiAWu51QAC+Wv/KPJGANvIGQAZnQ0AQ1JQ/8T5F/+RFJUAMkiSAF5MlAEY+0EAH8AXALjUyf976aIB961IAKJX2/5+hlkAnwsM/qZpHQBJG+QBcXi3/0KjbQHUjwv/n+eoAf+AWgA5Djr+WTQK//0IowEAkdL/CoFVAS61GwBniKD+frzR/yIjbwDX2xj/1AvW/mUFdgDoxYX/36dt/+1QVv9Gi14AnsG/AZsPM/8PvnMATofP//kKGwG1fekAX6wN/qrVof8n7Ir/X11X/76AXwB9D84AppafAOMPnv/Onnj/Ko2AAGWyeAGcbYMA2g4s/veozv/UcBwAcBHk/1oQJQHF3mwA/s9T/wla8//z9KwAGlhz/810egC/5sEAtGQLAdklYP+aTpwA6+of/86ysv+VwPsAtvqHAPYWaQB8wW3/AtKV/6kRqgAAYG7/dQkIATJ7KP/BvWMAIuOgADBQRv7TM+wALXr1/iyuCACtJen/nkGrAHpF1/9aUAL/g2pg/uNyhwDNMXf+sD5A/1IzEf/xFPP/gg0I/oDZ8/+iGwH+WnbxAPbG9v83EHb/yJ+dAKMRAQCMa3kAVaF2/yYAlQCcL+4ACaamAUtitf8yShkAQg8vAIvhnwBMA47/Du64AAvPNf+3wLoBqyCu/79M3QH3qtsAGawy/tkJ6QDLfkT/t1wwAH+ntwFBMf4AED9/Af4Vqv874H/+FjA//xtOgv4owx0A+oRw/iPLkABoqagAz/0e/2goJv5e5FgAzhCA/9Q3ev/fFuoA38V/AP21tQGRZnYA7Jkk/9TZSP8UJhj+ij4+AJiMBADm3GP/ARXU/5TJ5wD0ewn+AKvSADM6Jf8B/w7/9LeR/gDypgAWSoQAedgpAF/Dcv6FGJf/nOLn//cFTf/2lHP+4VxR/95Q9v6qe1n/SseNAB0UCP+KiEb/XUtcAN2TMf40fuIA5XwXAC4JtQDNQDQBg/4cAJee1ACDQE4AzhmrAADmiwC//W7+Z/enAEAoKAEqpfH/O0vk/nzzvf/EXLL/goxW/41ZOAGTxgX/y/ie/pCijQALrOIAgioV/wGnj/+QJCT/MFik/qiq3ABiR9YAW9BPAJ9MyQGmKtb/Rf8A/waAff++AYwAklPa/9fuSAF6fzUAvXSl/1QIQv/WA9D/1W6FAMOoLAGe50UAokDI/ls6aAC2Orv++eSIAMuGTP5j3ekAS/7W/lBFmgBAmPj+7IjK/51pmf6VrxQAFiMT/3x56QC6+sb+hOWLAIlQrv+lfUQAkMqU/uvv+ACHuHYAZV4R/3pIRv5FgpIAf974AUV/dv8eUtf+vEoT/+Wnwv51GUL/Qeo4/tUWnACXO13+LRwb/7p+pP8gBu8Af3JjAds0Av9jYKb+Pr5+/2zeqAFL4q4A5uLHADx12v/8+BQB1rzMAB/Chv57RcD/qa0k/jdiWwDfKmb+iQFmAJ1aGQDvekD//AbpAAc2FP9SdK4AhyU2/w+6fQDjcK//ZLTh/yrt9P/0reL++BIhAKtjlv9K6zL/dVIg/mqo7QDPbdAB5Am6AIc8qf6zXI8A9Kpo/+stfP9GY7oAdYm3AOAf1wAoCWQAGhBfAUTZVwAIlxT/GmQ6/7ClywE0dkYAByD+/vT+9f+nkML/fXEX/7B5tQCIVNEAigYe/1kwHAAhmw7/GfCaAI3NbQFGcz7/FChr/oqax/9e3+L/nasmAKOxGf4tdgP/Dt4XAdG+Uf92e+gBDdVl/3s3e/4b9qUAMmNM/4zWIP9hQUP/GAwcAK5WTgFA92AAoIdDAEI38/+TzGD/GgYh/2IzUwGZ1dD/Arg2/xnaCwAxQ/b+EpVI/w0ZSAAqT9YAKgQmARuLkP+VuxcAEqSEAPVUuP54xmj/ftpgADh16v8NHdb+RC8K/6eahP6YJsYAQrJZ/8guq/8NY1P/0rv9/6otKgGK0XwA1qKNAAzmnABmJHD+A5NDADTXe//pqzb/Yok+APfaJ//n2uwA979/AMOSVAClsFz/E9Re/xFK4wBYKJkBxpMB/85D9f7wA9r/PY3V/2G3agDD6Ov+X1aaANEwzf520fH/8HjfAdUdnwCjf5P/DdpdAFUYRP5GFFD/vQWMAVJh/v9jY7//hFSF/2vadP9wei4AaREgAMKgP/9E3icB2P1cALFpzf+VycMAKuEL/yiicwAJB1EApdrbALQWAP4dkvz/ks/hAbSHYAAfo3AAsQvb/4UMwf4rTjIAQXF5ATvZBv9uXhgBcKxvAAcPYAAkVXsAR5YV/9BJvADAC6cB1fUiAAnmXACijif/11obAGJhWQBeT9MAWp3wAF/cfgFmsOIAJB7g/iMffwDn6HMBVVOCANJJ9f8vj3L/REHFADtIPv+3ha3+XXl2/zuxUf/qRa3/zYCxANz0MwAa9NEBSd5N/6MIYP6WldMAnv7LATZ/iwCh4DsABG0W/94qLf/Qkmb/7I67ADLN9f8KSln+ME+OAN5Mgv8epj8A7AwN/zG49AC7cWYA2mX9AJk5tv4glioAGcaSAe3xOACMRAUAW6Ss/06Ruv5DNM0A28+BAW1zEQA2jzoBFfh4/7P/HgDB7EL/Af8H//3AMP8TRdkBA9YA/0BlkgHffSP/60mz//mn4gDhrwoBYaI6AGpwqwFUrAX/hYyy/4b1jgBhWn3/usu5/99NF//AXGoAD8Zz/9mY+ACrsnj/5IY1ALA2wQH6+zUA1QpkASLHagCXH/T+rOBX/w7tF//9VRr/fyd0/6xoZAD7Dkb/1NCK//3T+gCwMaUAD0x7/yXaoP9chxABCn5y/0YF4P/3+Y0ARBQ8AfHSvf/D2bsBlwNxAJdcrgDnPrL/27fhABcXIf/NtVAAObj4/0O0Af9ae13/JwCi/2D4NP9UQowAIn/k/8KKBwGmbrwAFRGbAZq+xv/WUDv/EgePAEgd4gHH2fkA6KFHAZW+yQDZr1/+cZND/4qPx/9/zAEAHbZTAc7mm/+6zDwACn1V/+hgGf//Wff/1f6vAejBUQAcK5z+DEUIAJMY+AASxjEAhjwjAHb2Ev8xWP7+5BW6/7ZBcAHbFgH/Fn40/701Mf9wGY8AJn83/+Jlo/7QhT3/iUWuAb52kf88Ytv/2Q31//qICgBU/uIAyR99AfAz+/8fg4L/Aooy/9fXsQHfDO7//JU4/3xbRP9Ifqr+d/9kAIKH6P8OT7IA+oPFAIrG0AB52Iv+dxIk/x3BegAQKi3/1fDrAea+qf/GI+T+bq1IANbd8f84lIcAwHVO/o1dz/+PQZUAFRJi/18s9AFqv00A/lUI/tZusP9JrRP+oMTH/+1akADBrHH/yJuI/uRa3QCJMUoBpN3X/9G9Bf9p7Df/Kh+BAcH/7AAu2TwAili7/+JS7P9RRZf/jr4QAQ2GCAB/ejD/UUCcAKvziwDtI/YAeo/B/tR6kgBfKf8BV4RNAATUHwARH04AJy2t/hiO2f9fCQb/41MGAGI7gv4+HiEACHPTAaJhgP8HuBf+dByo//iKl/9i9PAAunaCAHL46/9prcgBoHxH/14kpAGvQZL/7vGq/srGxQDkR4r+LfZt/8I0ngCFu7AAU/ya/lm93f+qSfwAlDp9ACREM/4qRbH/qExW/yZkzP8mNSMArxNhAOHu/f9RUYcA0hv//utJawAIz3MAUn+IAFRjFf7PE4gAZKRlAFDQTf+Ez+3/DwMP/yGmbgCcX1X/JblvAZZqI/+ml0wAcleH/5/CQAAMeh//6Adl/q13YgCaR9z+vzk1/6jooP/gIGP/2pylAJeZowDZDZQBxXFZAJUcof7PFx4AaYTj/zbmXv+Frcz/XLed/1iQ/P5mIVoAn2EDALXam//wcncAatY1/6W+cwGYW+H/WGos/9A9cQCXNHwAvxuc/2427AEOHqb/J3/PAeXHHAC85Lz+ZJ3rAPbatwFrFsH/zqBfAEzvkwDPoXUAM6YC/zR1Cv5JOOP/mMHhAIReiP9lv9EAIGvl/8YrtAFk0nYAckOZ/xdYGv9ZmlwB3HiM/5Byz//8c/r/Is5IAIqFf/8IsnwBV0thAA/lXP7wQ4P/dnvj/pJ4aP+R1f8BgbtG/9t3NgABE60ALZaUAfhTSADL6akBjms4APf5JgEt8lD/HulnAGBSRgAXyW8AUSce/6G3Tv/C6iH/ROOM/tjOdABGG+v/aJBPAKTmXf7Wh5wAmrvy/rwUg/8kba4An3DxAAVulQEkpdoAph0TAbIuSQBdKyD++L3tAGabjQDJXcP/8Yv9/w9vYv9sQaP+m0++/0muwf72KDD/a1gL/sphVf/9zBL/cfJCAG6gwv7QEroAURU8ALxop/98pmH+0oWOADjyif4pb4IAb5c6AW/Vjf+3rPH/JgbE/7kHe/8uC/YA9Wl3AQ8Cof8Izi3/EspK/1N8cwHUjZ0AUwjR/osP6P+sNq3+MveEANa91QCQuGkA3/74AP+T8P8XvEgABzM2ALwZtP7ctAD/U6AUAKO98/860cL/V0k8AGoYMQD1+dwAFq2nAHYLw/8Tfu0Abp8l/ztSLwC0u1YAvJTQAWQlhf8HcMEAgbyc/1Rqgf+F4coADuxv/ygUZQCsrDH+MzZK//u5uP9dm+D/tPngAeaykgBIOTb+sj64AHfNSAC57/3/PQ/aAMRDOP/qIKsBLtvkANBs6v8UP+j/pTXHAYXkBf80zWsASu6M/5ac2/7vrLL/+73f/iCO0//aD4oB8cRQABwkYv4W6scAPe3c//Y5JQCOEY7/nT4aACvuX/4D2Qb/1RnwASfcrv+azTD+Ew3A//QiNv6MEJsA8LUF/pvBPACmgAT/JJE4/5bw2wB4M5EAUpkqAYzskgBrXPgBvQoDAD+I8gDTJxgAE8qhAa0buv/SzO/+KdGi/7b+n/+sdDQAw2fe/s1FOwA1FikB2jDCAFDS8gDSvM8Au6Gh/tgRAQCI4XEA+rg/AN8eYv5NqKIAOzWvABPJCv+L4MIAk8Ga/9S9DP4ByK7/MoVxAV6zWgCttocAXrFxACtZ1/+I/Gr/e4ZT/gX1Qv9SMScB3ALgAGGBsQBNO1kAPR2bAcur3P9cTosAkSG1/6kYjQE3lrMAizxQ/9onYQACk2v/PPhIAK3mLwEGU7b/EGmi/onUUf+0uIYBJ96k/91p+wHvcH0APwdhAD9o4/+UOgwAWjzg/1TU/ABP16gA+N3HAXN5AQAkrHgAIKK7/zlrMf+TKhUAasYrATlKVwB+y1H/gYfDAIwfsQDdi8IAA97XAINE5wCxVrL+fJe0ALh8JgFGoxEA+fu1ASo34wDioSwAF+xuADOVjgFdBewA2rdq/kMYTQAo9dH/3nmZAKU5HgBTfTwARiZSAeUGvABt3p3/N3Y//82XugDjIZX//rD2AeOx4wAiaqP+sCtPAGpfTgG58Xr/uQ49ACQBygANsqL/9wuEAKHmXAFBAbn/1DKlAY2SQP+e8toAFaR9ANWLegFDR1cAy56yAZdcKwCYbwX/JwPv/9n/+v+wP0f/SvVNAfquEv8iMeP/9i77/5ojMAF9nT3/aiRO/2HsmQCIu3j/cYar/xPV2f7YXtH//AU9AF4DygADGrf/QL8r/x4XFQCBjU3/ZngHAcJMjAC8rzT/EVGUAOhWNwHhMKwAhioq/+4yLwCpEv4AFJNX/w7D7/9F9xcA7uWA/7ExcACoYvv/eUf4APMIkf7245n/26mx/vuLpf8Mo7n/pCir/5mfG/7zbVv/3hhwARLW5wBrnbX+w5MA/8JjaP9ZjL7/sUJ+/mq5QgAx2h8A/K6eALxP5gHuKeAA1OoIAYgLtQCmdVP/RMNeAC6EyQDwmFgApDlF/qDgKv8710P/d8ON/yS0ef7PLwj/rtLfAGXFRP//Uo0B+onpAGFWhQEQUEUAhIOfAHRdZAAtjYsAmKyd/1orWwBHmS4AJxBw/9mIYf/cxhn+sTUxAN5Yhv+ADzwAz8Cp/8B00f9qTtMByNW3/wcMev7eyzz/IW7H/vtqdQDk4QQBeDoH/93BVP5whRsAvcjJ/4uHlgDqN7D/PTJBAJhsqf/cVQH/cIfjAKIaugDPYLn+9IhrAF2ZMgHGYZcAbgtW/491rv9z1MgABcq3AO2kCv657z4A7HgS/mJ7Y/+oycL+LurWAL+FMf9jqXcAvrsjAXMVLf/5g0gAcAZ7/9Yxtf6m6SIAXMVm/v3kzf8DO8kBKmIuANslI/+pwyYAXnzBAZwr3wBfSIX+eM6/AHrF7/+xu0///i4CAfqnvgBUgRMAy3Gm//kfvf5Incr/0EdJ/88YSAAKEBIB0lFM/1jQwP9+82v/7o14/8d56v+JDDv/JNx7/5SzPP7wDB0AQgBhASQeJv9zAV3/YGfn/8WeOwHApPAAyso5/xiuMABZTZsBKkzXAPSX6QAXMFEA7380/uOCJf/4dF0BfIR2AK3+wAEG61P/bq/nAfsctgCB+V3+VLiAAEy1PgCvgLoAZDWI/m0d4gDd6ToBFGNKAAAWoACGDRUACTQ3/xFZjACvIjsAVKV3/+Di6v8HSKb/e3P/ARLW9gD6B0cB2dy5ANQjTP8mfa8AvWHSAHLuLP8pvKn+LbqaAFFcFgCEoMEAedBi/w1RLP/LnFIARzoV/9Byv/4yJpMAmtjDAGUZEgA8+tf/6YTr/2evjgEQDlwAjR9u/u7xLf+Z2e8BYagv//lVEAEcrz7/Of42AN7nfgCmLXX+Er1g/+RMMgDI9F4Axph4AUQiRf8MQaD+ZRNaAKfFeP9ENrn/Kdq8AHGoMABYab0BGlIg/7ldpAHk8O3/QrY1AKvFXP9rCekBx3iQ/04xCv9tqmn/WgQf/xz0cf9KOgsAPtz2/3mayP6Q0rL/fjmBASv6Dv9lbxwBL1bx/z1Glv81SQX/HhqeANEaVgCK7UoApF+8AI48Hf6idPj/u6+gAJcSEADRb0H+y4Yn/1hsMf+DGkf/3RvX/mhpXf8f7B/+hwDT/49/bgHUSeUA6UOn/sMB0P+EEd3/M9laAEPrMv/f0o8AszWCAelqxgDZrdz/cOUY/6+aXf5Hy/b/MEKF/wOI5v8X3XH+62/VAKp4X/773QIALYKe/mle2f/yNLT+1UQt/2gmHAD0nkwAochg/881Df+7Q5QAqjb4AHeisv9TFAsAKirAAZKfo/+36G8ATeUV/0c1jwAbTCIA9ogv/9sntv9c4MkBE44O/0W28f+jdvUACW1qAaq19/9OL+7/VNKw/9VriwAnJgsASBWWAEiCRQDNTZv+joUVAEdvrP7iKjv/swDXASGA8QDq/A0BuE8IAG4eSf/2jb0Aqs/aAUqaRf+K9jH/myBkAH1Kaf9aVT3/I+Wx/z59wf+ZVrwBSXjUANF79v6H0Sb/lzosAVxF1v8ODFj//Jmm//3PcP88TlP/43xuALRg/P81dSH+pNxS/ykBG/8mpKb/pGOp/j2QRv/AphIAa/pCAMVBMgABsxL//2gB/yuZI/9Qb6gAbq+oAClpLf/bDs3/pOmM/isBdgDpQ8MAslKf/4pXev/U7lr/kCN8/hmMpAD71yz+hUZr/2XjUP5cqTcA1yoxAHK0Vf8h6BsBrNUZAD6we/4ghRj/4b8+AF1GmQC1KmgBFr/g/8jIjP/56iUAlTmNAMM40P/+gkb/IK3w/x3cxwBuZHP/hOX5AOTp3/8l2NH+srHR/7ctpf7gYXIAiWGo/+HerAClDTEB0uvM//wEHP5GoJcA6L40/lP4Xf8+100Br6+z/6AyQgB5MNAAP6nR/wDSyADguywBSaJSAAmwj/8TTMH/HTunARgrmgAcvr4AjbyBAOjry//qAG3/NkGfADxY6P95/Zb+/OmD/8ZuKQFTTUf/yBY7/mr98v8VDM//7UK9AFrGygHhrH8ANRbKADjmhAABVrcAbb4qAPNErgFt5JoAyLF6ASOgt/+xMFX/Wtqp//iYTgDK/m4ABjQrAI5iQf8/kRYARmpdAOiKawFusz3/04HaAfLRXAAjWtkBto9q/3Rl2f9y+t3/rcwGADyWowBJrCz/725Q/+1Mmf6hjPkAlejlAIUfKP+upHcAcTPWAIHkAv5AIvMAa+P0/65qyP9UmUYBMiMQAPpK2P7svUL/mfkNAOayBP/dKe4AduN5/15XjP7+d1wASe/2/nVXgAAT05H/sS78AOVb9gFFgPf/yk02AQgLCf+ZYKYA2dat/4bAAgEAzwAAva5rAYyGZACewfMBtmarAOuaMwCOBXv/PKhZAdkOXP8T1gUB06f+ACwGyv54Euz/D3G4/7jfiwAosXf+tnta/7ClsAD3TcIAG+p4AOcA1v87Jx4AfWOR/5ZERAGN3vgAmXvS/25/mP/lIdYBh93FAIlhAgAMj8z/USm8AHNPgv9eA4QAmK+7/3yNCv9+wLP/C2fGAJUGLQDbVbsB5hKy/0i2mAADxrj/gHDgAWGh5gD+Yyb/Op/FAJdC2wA7RY//uXD5AHeIL/97goQAqEdf/3GwKAHoua0Az111AUSdbP9mBZP+MWEhAFlBb/73HqP/fNndAWb62ADGrkv+OTcSAOMF7AHl1a0AyW3aATHp7wAeN54BGbJqAJtvvAFefowA1x/uAU3wEADV8hkBJkeoAM26Xf4x04z/2wC0/4Z2pQCgk4b/broj/8bzKgDzkncAhuujAQTxh//BLsH+Z7RP/+EEuP7ydoIAkoewAepvHgBFQtX+KWB7AHleKv+yv8P/LoIqAHVUCP/pMdb+7nptAAZHWQHs03sA9A0w/neUDgByHFb/S+0Z/5HlEP6BZDX/hpZ4/qidMgAXSGj/4DEOAP97Fv+XuZf/qlC4AYa2FAApZGUBmSEQAEyabwFWzur/wKCk/qV7Xf8B2KT+QxGv/6kLO/+eKT3/SbwO/8MGif8Wkx3/FGcD//aC4/96KIAA4i8Y/iMkIACYurf/RcoUAMOFwwDeM/cAqateAbcAoP9AzRIBnFMP/8U6+f77WW7/MgpY/jMr2ABi8sYB9ZdxAKvswgHFH8f/5VEmASk7FAD9aOYAmF0O//bykv7WqfD/8GZs/qCn7ACa2rwAlunK/xsT+gECR4X/rww/AZG3xgBoeHP/gvv3ABHUp/8+e4T/92S9AJvfmACPxSEAmzss/5Zd8AF/A1f/X0fPAadVAf+8mHT/ChcXAInDXQE2YmEA8ACo/5S8fwCGa5cATP2rAFqEwACSFjYA4EI2/ua65f8ntsQAlPuC/0GDbP6AAaAAqTGn/sf+lP/7BoMAu/6B/1VSPgCyFzr//oQFAKTVJwCG/JL+JTVR/5uGUgDNp+7/Xi20/4QooQD+b3ABNkvZALPm3QHrXr//F/MwAcqRy/8ndir/dY39AP4A3gAr+zIANqnqAVBE0ACUy/P+kQeHAAb+AAD8uX8AYgiB/yYjSP/TJNwBKBpZAKhAxf4D3u//AlPX/rSfaQA6c8IAunRq/+X32/+BdsEAyq63AaahSADJa5P+7YhKAOnmagFpb6gAQOAeAQHlAwBml6//wu7k//761AC77XkAQ/tgAcUeCwC3X8wAzVmKAEDdJQH/3x7/sjDT//HIWv+n0WD/OYLdAC5yyP89uEIAN7YY/m62IQCrvuj/cl4fABLdCAAv5/4A/3BTAHYP1/+tGSj+wMEf/+4Vkv+rwXb/Zeo1/oPUcABZwGsBCNAbALXZD//nlegAjOx+AJAJx/8MT7X+k7bK/xNttv8x1OEASqPLAK/plAAacDMAwcEJ/w+H+QCW44IAzADbARjyzQDu0HX/FvRwABrlIgAlULz/Ji3O/vBa4f8dAy//KuBMALrzpwAghA//BTN9AIuHGAAG8dsArOWF//bWMgDnC8//v35TAbSjqv/1OBgBsqTT/wMQygFiOXb/jYNZ/iEzGADzlVv//TQOACOpQ/4xHlj/sxsk/6WMtwA6vZcAWB8AAEupQgBCZcf/GNjHAXnEGv8OT8v+8OJR/14cCv9TwfD/zMGD/14PVgDaKJ0AM8HRAADysQBmufcAnm10ACaHWwDfr5UA3EIB/1Y86AAZYCX/4XqiAde7qP+enS4AOKuiAOjwZQF6FgkAMwkV/zUZ7v/ZHuj+famUAA3oZgCUCSUApWGNAeSDKQDeD/P//hIRAAY87QFqA3EAO4S9AFxwHgBp0NUAMFSz/7t55/4b2G3/ot1r/knvw//6Hzn/lYdZ/7kXcwEDo53/EnD6ABk5u/+hYKQALxDzAAyN+/5D6rj/KRKhAK8GYP+grDT+GLC3/8bBVQF8eYn/lzJy/9zLPP/P7wUBACZr/zfuXv5GmF4A1dxNAXgRRf9VpL7/y+pRACYxJf49kHwAiU4x/qj3MABfpPwAaamHAP3khgBApksAUUkU/8/SCgDqapb/XiJa//6fOf7chWMAi5O0/hgXuQApOR7/vWFMAEG73//grCX/Ij5fAeeQ8ABNan7+QJhbAB1imwDi+zX/6tMF/5DL3v+ksN3+BecYALN6zQAkAYb/fUaX/mHk/ACsgRf+MFrR/5bgUgFUhh4A8cQuAGdx6v8uZXn+KHz6/4ct8v4J+aj/jGyD/4+jqwAyrcf/WN6O/8hfngCOwKP/B3WHAG98FgDsDEH+RCZB/+Ou/gD09SYA8DLQ/6E/+gA80e8AeiMTAA4h5v4Cn3EAahR//+TNYACJ0q7+tNSQ/1limgEiWIsAp6JwAUFuxQDxJakAQjiD/wrJU/6F/bv/sXAt/sT7AADE+pf/7ujW/5bRzQAc8HYAR0xTAexjWwAq+oMBYBJA/3beIwBx1sv/ene4/0ITJADMQPkAklmLAIY+hwFo6WUAvFQaADH5gQDQ1kv/z4JN/3Ov6wCrAon/r5G6ATf1h/+aVrUBZDr2/23HPP9SzIb/1zHmAYzlwP/ewfv/UYgP/7OVov8XJx3/B19L/r9R3gDxUVr/azHJ//TTnQDejJX/Qds4/r32Wv+yO50BMNs0AGIi1wAcEbv/r6kYAFxPof/syMIBk4/qAOXhBwHFqA4A6zM1Af14rgDFBqj/ynWrAKMVzgByVVr/DykK/8ITYwBBN9j+opJ0ADLO1P9Akh3/np6DAWSlgv+sF4H/fTUJ/w/BEgEaMQv/ta7JAYfJDv9kE5UA22JPACpjj/5gADD/xflT/miVT//rboj+UoAs/0EpJP5Y0woAu3m7AGKGxwCrvLP+0gvu/0J7gv406j0AMHEX/gZWeP93svUAV4HJAPKN0QDKclUAlBahAGfDMAAZMav/ikOCALZJev6UGIIA0+WaACCbngBUaT0AscIJ/6ZZVgE2U7sA+Sh1/20D1/81kiwBPy+zAMLYA/4OVIgAiLEN/0jzuv91EX3/0zrT/11P3wBaWPX/i9Fv/0beLwAK9k//xtmyAOPhCwFOfrP/Pit+AGeUIwCBCKX+9fCUAD0zjgBR0IYAD4lz/9N37P+f9fj/AoaI/+aLOgGgpP4AclWN/zGmtv+QRlQBVbYHAC41XQAJpqH/N6Ky/y24vACSHCz+qVoxAHiy8QEOe3//B/HHAb1CMv/Gj2X+vfOH/40YGP5LYVcAdvuaAe02nACrks//g8T2/4hAcQGX6DkA8NpzADE9G/9AgUkB/Kkb/yiECgFaycH//HnwAbrOKQArxmEAkWS3AMzYUP6slkEA+eXE/mh7Sf9NaGD+grQIAGh7OQDcyuX/ZvnTAFYO6P+2TtEA7+GkAGoNIP94SRH/hkPpAFP+tQC37HABMECD//HY8/9BweIAzvFk/mSGpv/tysUANw1RACB8Zv8o5LEAdrUfAeeghv93u8oAAI48/4Amvf+myZYAz3gaATa4rAAM8sz+hULmACImHwG4cFAAIDOl/r/zNwA6SZL+m6fN/2RomP/F/s//rRP3AO4KygDvl/IAXjsn//AdZv8KXJr/5VTb/6GBUADQWswB8Nuu/55mkQE1skz/NGyoAVPeawDTJG0Adjo4AAgdFgDtoMcAqtGdAIlHLwCPViAAxvICANQwiAFcrLoA5pdpAWC/5QCKUL/+8NiC/2IrBv6oxDEA/RJbAZBJeQA9kicBP2gY/7ilcP5+62IAUNVi/3s8V/9SjPUB33it/w/GhgHOPO8A5+pc/yHuE/+lcY4BsHcmAKArpv7vW2kAaz3CARkERAAPizMApIRq/yJ0Lv6oX8UAidQXAEicOgCJcEX+lmma/+zJnQAX1Jr/iFLj/uI73f9flcAAUXY0/yEr1wEOk0v/WZx5/g4STwCT0IsBl9o+/5xYCAHSuGL/FK97/2ZT5QDcQXQBlvoE/1yO3P8i90L/zOGz/pdRlwBHKOz/ij8+AAZP8P+3ubUAdjIbAD/jwAB7YzoBMuCb/xHh3/7c4E3/Dix7AY2ArwD41MgAlju3/5NhHQCWzLUA/SVHAJFVdwCayLoAAoD5/1MYfAAOV48AqDP1AXyX5//Q8MUBfL65ADA69gAU6egAfRJi/w3+H//1sYL/bI4jAKt98v6MDCL/paGiAM7NZQD3GSIBZJE5ACdGOQB2zMv/8gCiAKX0HgDGdOIAgG+Z/4w2tgE8eg//mzo5ATYyxgCr0x3/a4qn/61rx/9tocEAWUjy/85zWf/6/o7+scpe/1FZMgAHaUL/Gf7//stAF/9P3mz/J/lLAPF8MgDvmIUA3fFpAJOXYgDVoXn+8jGJAOkl+f4qtxsAuHfm/9kgo//Q++QBiT6D/09ACf5eMHEAEYoy/sH/FgD3EsUBQzdoABDNX/8wJUIAN5w/AUBSSv/INUf+70N9ABrg3gDfiV3/HuDK/wnchADGJusBZo1WADwrUQGIHBoA6SQI/s/ylACkoj8AMy7g/3IwT/8Jr+IA3gPB/y+g6P//XWn+DirmABqKUgHQK/QAGycm/2LQf/9Albb/BfrRALs8HP4xGdr/qXTN/3cSeACcdJP/hDVt/w0KygBuU6cAnduJ/wYDgv8ypx7/PJ8v/4GAnf5eA70AA6ZEAFPf1wCWWsIBD6hBAONTM//Nq0L/Nrs8AZhmLf93muEA8PeIAGTFsv+LR9//zFIQASnOKv+cwN3/2Hv0/9rauf+7uu///Kyg/8M0FgCQrrX+u2Rz/9NOsP8bB8EAk9Vo/1rJCv9Qe0IBFiG6AAEHY/4ezgoA5eoFADUe0gCKCNz+RzenAEjhVgF2vrwA/sFlAav5rP9enrf+XQJs/7BdTP9JY0//SkCB/vYuQQBj8X/+9pdm/yw10P47ZuoAmq+k/1jyIABvJgEA/7a+/3OwD/6pPIEAeu3xAFpMPwA+Snj/esNuAHcEsgDe8tIAgiEu/pwoKQCnknABMaNv/3mw6wBMzw7/AxnGASnr1QBVJNYBMVxt/8gYHv6o7MMAkSd8AezDlQBaJLj/Q1Wq/yYjGv6DfET/75sj/zbJpADEFnX/MQ/NABjgHQF+cZAAdRW2AMufjQDfh00AsOaw/77l1/9jJbX/MxWK/xm9Wf8xMKX+mC33AKps3gBQygUAG0Vn/swWgf+0/D7+0gFb/5Ju/v/bohwA3/zVATsIIQDOEPQAgdMwAGug0ABwO9EAbU3Y/iIVuf/2Yzj/s4sT/7kdMv9UWRMASvpi/+EqyP/A2c3/0hCnAGOEXwEr5jkA/gvL/2O8P/93wfv+UGk2AOi1vQG3RXD/0Kul/y9ttP97U6UAkqI0/5oLBP+X41r/kolh/j3pKf9eKjf/bKTsAJhE/gAKjIP/CmpP/vOeiQBDskL+sXvG/w8+IgDFWCr/lV+x/5gAxv+V/nH/4Vqj/33Z9wASEeAAgEJ4/sAZCf8y3c0AMdRGAOn/pAAC0QkA3TTb/qzg9P9eOM4B8rMC/x9bpAHmLor/vebcADkvPf9vC50AsVuYABzmYgBhV34AxlmR/6dPawD5TaABHenm/5YVVv48C8EAlyUk/rmW8//k1FMBrJe0AMmpmwD0POoAjusEAUPaPADAcUsBdPPP/0GsmwBRHpz/UEgh/hLnbf+OaxX+fRqE/7AQO/+WyToAzqnJANB54gAorA7/lj1e/zg5nP+NPJH/LWyV/+6Rm//RVR/+wAzSAGNiXf6YEJcA4bncAI3rLP+grBX+Rxof/w1AXf4cOMYAsT74AbYI8QCmZZT/TlGF/4He1wG8qYH/6AdhADFwPP/Z5fsAd2yKACcTe/6DMesAhFSRAILmlP8ZSrsABfU2/7nb8QESwuT/8cpmAGlxygCb608AFQmy/5wB7wDIlD0Ac/fS/zHdhwA6vQgBIy4JAFFBBf80nrn/fXQu/0qMDf/SXKz+kxdHANng/f5zbLT/kTow/tuxGP+c/zwBmpPyAP2GVwA1S+UAMMPe/x+vMv+c0nj/0CPe/xL4swECCmX/ncL4/57MZf9o/sX/Tz4EALKsZQFgkvv/QQqcAAKJpf90BOcA8tcBABMjHf8roU8AO5X2AftCsADIIQP/UG6O/8OhEQHkOEL/ey+R/oQEpABDrqwAGf1yAFdhVwH63FQAYFvI/yV9OwATQXYAoTTx/+2sBv+wv///AUGC/t++5gBl/ef/kiNtAPodTQExABMAe1qbARZWIP/a1UEAb11/ADxdqf8If7YAEboO/v2J9v/VGTD+TO4A//hcRv9j4IsAuAn/AQek0ADNg8YBV9bHAILWXwDdld4AFyar/sVu1QArc4z+17F2AGA0QgF1nu0ADkC2/y4/rv+eX77/4c2x/ysFjv+sY9T/9LuTAB0zmf/kdBj+HmXPABP2lv+G5wUAfYbiAU1BYgDsgiH/BW4+AEVsf/8HcRYAkRRT/sKh5/+DtTwA2dGx/+WU1P4Dg7gAdbG7ARwOH/+wZlAAMlSX/30fNv8VnYX/E7OLAeDoGgAidar/p/yr/0mNzv6B+iMASE/sAdzlFP8pyq3/Y0zu/8YW4P9sxsP/JI1gAeyeO/9qZFcAbuICAOPq3gCaXXf/SnCk/0NbAv8VkSH/ZtaJ/6/mZ/6j9qYAXfd0/qfgHP/cAjkBq85UAHvkEf8beHcAdwuTAbQv4f9oyLn+pQJyAE1O1AAtmrH/GMR5/lKdtgBaEL4BDJPFAF/vmP8L60cAVpJ3/6yG1gA8g8QAoeGBAB+CeP5fyDMAaefS/zoJlP8rqN3/fO2OAMbTMv4u9WcApPhUAJhG0P+0dbEARk+5APNKIACVnM8AxcShAfU17wAPXfb+i/Ax/8RYJP+iJnsAgMidAa5MZ/+tqSL+2AGr/3IzEQCI5MIAbpY4/mr2nwATuE//lk3w/5tQogAANan/HZdWAEReEABcB27+YnWV//lN5v/9CowA1nxc/iN26wBZMDkBFjWmALiQPf+z/8IA1vg9/jtu9gB5FVH+pgPkAGpAGv9F6Ib/8tw1/i7cVQBxlff/YbNn/75/CwCH0bYAXzSBAaqQzv96yMz/qGSSADyQlf5GPCgAejSx//bTZf+u7QgABzN4ABMfrQB+75z/j73LAMSAWP/pheL/Hn2t/8lsMgB7ZDv//qMDAd2Utf/WiDn+3rSJ/89YNv8cIfv/Q9Y0AdLQZABRql4AkSg1AOBv5/4jHPT/4sfD/u4R5gDZ2aT+qZ3dANouogHHz6P/bHOiAQ5gu/92PEwAuJ+YANHnR/4qpLr/upkz/t2rtv+ijq0A6y/BAAeLEAFfpED/EN2mANvFEACEHSz/ZEV1/zzrWP4oUa0AR749/7tYnQDnCxcA7XWkAOGo3/+acnT/o5jyARggqgB9YnH+qBNMABGd3P6bNAUAE2+h/0da/P+tbvAACsZ5//3/8P9Ce9IA3cLX/nmjEf/hB2MAvjG2AHMJhQHoGor/1USEACx3ev+zYjMAlVpqAEcy5v8KmXb/sUYZAKVXzQA3iuoA7h5hAHGbzwBimX8AImvb/nVyrP9MtP/+8jmz/90irP44ojH/UwP//3Hdvf+8GeT+EFhZ/0ccxv4WEZX/83n+/2vKY/8Jzg4B3C+ZAGuJJwFhMcL/lTPF/ro6C/9rK+gByAYO/7WFQf7d5Kv/ez7nAePqs/8ivdT+9Lv5AL4NUAGCWQEA34WtAAnexv9Cf0oAp9hd/5uoxgFCkQAARGYuAaxamgDYgEv/oCgzAJ4RGwF88DEA7Mqw/5d8wP8mwb4AX7Y9AKOTfP//pTP/HCgR/tdgTgBWkdr+HyTK/1YJBQBvKcj/7WxhADk+LAB1uA8BLfF0AJgB3P+dpbwA+g+DATwsff9B3Pv/SzK4ADVagP/nUML/iIF/ARUSu/8tOqH/R5MiAK75C/4jjR0A70Sx/3NuOgDuvrEBV/Wm/74x9/+SU7j/rQ4n/5LXaACO33gAlcib/9TPkQEQtdkArSBX//8jtQB336EByN9e/0YGuv/AQ1X/MqmYAJAae/8487P+FESIACeMvP790AX/yHOHASus5f+caLsAl/unADSHFwCXmUgAk8Vr/pSeBf/uj84AfpmJ/1iYxf4HRKcA/J+l/+9ONv8YPzf/Jt5eAO23DP/OzNIAEyf2/h5K5wCHbB0Bs3MAAHV2dAGEBvz/kYGhAWlDjQBSJeL/7uLk/8zWgf6ie2T/uXnqAC1s5wBCCDj/hIiAAKzgQv6vnbwA5t/i/vLbRQC4DncBUqI4AHJ7FACiZ1X/Me9j/pyH1wBv/6f+J8TWAJAmTwH5qH0Am2Gc/xc02/+WFpAALJWl/yh/twDETen/doHS/6qH5v/Wd8YA6fAjAP00B/91ZjD/Fcya/7OIsf8XAgMBlYJZ//wRnwFGPBoAkGsRALS+PP84tjv/bkc2/8YSgf+V4Ff/3xWY/4oWtv/6nM0A7C3Q/0+U8gFlRtEAZ06uAGWQrP+YiO0Bv8KIAHFQfQGYBI0Am5Y1/8R09QDvckn+E1IR/3x96v8oNL8AKtKe/5uEpQCyBSoBQFwo/yRVTf+y5HYAiUJg/nPiQgBu8EX+l29QAKeu7P/jbGv/vPJB/7dR/wA5zrX/LyK1/9XwngFHS18AnCgY/2bSUQCrx+T/miIpAOOvSwAV78MAiuVfAUzAMQB1e1cB4+GCAH0+P/8CxqsA/iQN/pG6zgCU//T/IwCmAB6W2wFc5NQAXMY8/j6FyP/JKTsAfe5t/7Sj7gGMelIACRZY/8WdL/+ZXjkAWB62AFShVQCyknwApqYH/xXQ3wCctvIAm3m5AFOcrv6aEHb/ulPoAd86ef8dF1gAI31//6oFlf6kDIL/m8QdAKFgiAAHIx0BoiX7AAMu8v8A2bwAOa7iAc7pAgA5u4j+e70J/8l1f/+6JMwA5xnYAFBOaQAThoH/lMtEAI1Rff74pcj/1pCHAJc3pv8m61sAFS6aAN/+lv8jmbT/fbAdAStiHv/Yeub/6aAMADm5DP7wcQf/BQkQ/hpbbABtxssACJMoAIGG5P98uij/cmKE/qaEFwBjRSwACfLu/7g1OwCEgWb/NCDz/pPfyP97U7P+h5DJ/40lOAGXPOP/WkmcAcusuwBQly//Xonn/yS/O//h0bX/StfV/gZ2s/+ZNsEBMgDnAGidSAGM45r/tuIQ/mDhXP9zFKr+BvpOAPhLrf81WQb/ALR2AEitAQBACM4BroXfALk+hf/WC2IAxR/QAKun9P8W57UBltq5APepYQGli/f/L3iVAWf4MwA8RRz+GbPEAHwH2v46a1EAuOmc//xKJAB2vEMAjV81/95epf4uPTUAzjtz/y/s+v9KBSABgZru/2og4gB5uz3/A6bx/kOqrP8d2LL/F8n8AP1u8wDIfTkAbcBg/zRz7gAmefP/yTghAMJ2ggBLYBn/qh7m/ic//QAkLfr/+wHvAKDUXAEt0e0A8yFX/u1Uyf/UEp3+1GN//9liEP6LrO8AqMmC/4/Bqf/ul8EB12gpAO89pf4CA/IAFsux/rHMFgCVgdX+Hwsp/wCfef6gGXL/olDIAJ2XCwCahk4B2Db8ADBnhQBp3MUA/ahN/jWzFwAYefAB/y5g/2s8h/5izfn/P/l3/3g70/9ytDf+W1XtAJXUTQE4STEAVsaWAF3RoABFzbb/9ForABQksAB6dN0AM6cnAecBP/8NxYYAA9Ei/4c7ygCnZE4AL99MALk8PgCypnsBhAyh/z2uKwDDRZAAfy+/ASIsTgA56jQB/xYo//ZekgBT5IAAPE7g/wBg0v+Zr+wAnxVJALRzxP6D4WoA/6eGAJ8IcP94RML/sMTG/3YwqP9dqQEAcMhmAUoY/gATjQT+jj4/AIOzu/9NnJv/d1akAKrQkv/QhZr/lJs6/6J46P781ZsA8Q0qAF4ygwCzqnAAjFOX/zd3VAGMI+//mS1DAeyvJwA2l2f/nipB/8Tvh/5WNcsAlWEv/tgjEf9GA0YBZyRa/ygarQC4MA0Ao9vZ/1EGAf/dqmz+6dBdAGTJ+f5WJCP/0ZoeAePJ+/8Cvaf+ZDkDAA2AKQDFZEsAlszr/5GuOwB4+JX/VTfhAHLSNf7HzHcADvdKAT/7gQBDaJcBh4JQAE9ZN/915p3/GWCPANWRBQBF8XgBlfNf/3IqFACDSAIAmjUU/0k+bQDEZpgAKQzM/3omCwH6CpEAz32UAPb03v8pIFUBcNV+AKL5VgFHxn//UQkVAWInBP/MRy0BS2+JAOo75wAgMF//zB9yAR3Etf8z8af+XW2OAGiQLQDrDLX/NHCkAEz+yv+uDqIAPeuT/ytAuf7pfdkA81in/koxCACczEIAfNZ7ACbddgGScOwAcmKxAJdZxwBXxXAAuZWhACxgpQD4sxT/vNvY/ig+DQDzjo0A5ePO/6zKI/91sOH/Um4mASr1Dv8UU2EAMasKAPJ3eAAZ6D0A1PCT/wRzOP+REe/+yhH7//kS9f9jde8AuASz//btM/8l74n/pnCm/1G8If+5+o7/NrutANBwyQD2K+QBaLhY/9Q0xP8zdWz//nWbAC5bD/9XDpD/V+PMAFMaUwGfTOMAnxvVARiXbAB1kLP+idFSACafCgBzhckA37acAW7EXf85POkABadp/5rFpABgIrr/k4UlAdxjvgABp1T/FJGrAMLF+/5fToX//Pjz/+Fdg/+7hsT/2JmqABR2nv6MAXYAVp4PAS3TKf+TAWT+cXRM/9N/bAFnDzAAwRBmAUUzX/9rgJ0AiavpAFp8kAFqobYAr0zsAciNrP+jOmgA6bQ0//D9Dv+icf7/Ju+K/jQupgDxZSH+g7qcAG/QPv98XqD/H6z+AHCuOP+8Yxv/Q4r7AH06gAGcmK7/sgz3//xUngBSxQ7+rMhT/yUnLgFqz6cAGL0iAIOykADO1QQAoeLSAEgzaf9hLbv/Trjf/7Ad+wBPoFb/dCWyAFJN1QFSVI3/4mXUAa9Yx//1XvcBrHZt/6a5vgCDtXgAV/5d/4bwSf8g9Y//i6Jn/7NiEv7ZzHAAk994/zUK8wCmjJYAfVDI/w5t2/9b2gH//Pwv/m2cdP9zMX8BzFfT/5TK2f8aVfn/DvWGAUxZqf/yLeYAO2Ks/3JJhP5OmzH/nn5UADGvK/8QtlT/nWcjAGjBbf9D3ZoAyawB/giiWAClAR3/fZvl/x6a3AFn71wA3AFt/8rGAQBeAo4BJDYsAOvinv+q+9b/uU0JAGFK8gDbo5X/8CN2/99yWP7AxwMAaiUY/8mhdv9hWWMB4Dpn/2XHk/7ePGMA6hk7ATSHGwBmA1v+qNjrAOXoiABoPIEALqjuACe/QwBLoy8Aj2Fi/zjYqAGo6fz/I28W/1xUKwAayFcBW/2YAMo4RgCOCE0AUAqvAfzHTAAWblL/gQHCAAuAPQFXDpH//d6+AQ9IrgBVo1b+OmMs/y0YvP4azQ8AE+XS/vhDwwBjR7gAmscl/5fzef8mM0v/yVWC/ixB+gA5k/P+kis7/1kcNQAhVBj/szMS/r1GUwALnLMBYoZ3AJ5vbwB3mkn/yD+M/i0NDf+awAL+UUgqAC6guf4scAYAkteVARqwaABEHFcB7DKZ/7OA+v7Owb//plyJ/jUo7wDSAcz+qK0jAI3zLQEkMm3/D/LC/+Ofev+wr8r+RjlIACjfOADQojr/t2JdAA9vDAAeCEz/hH/2/y3yZwBFtQ//CtEeAAOzeQDx6NoBe8dY/wLSygG8glH/XmXQAWckLQBMwRgBXxrx/6WiuwAkcowAykIF/yU4kwCYC/MBf1Xo//qH1AG5sXEAWtxL/0X4kgAybzIAXBZQAPQkc/6jZFL/GcEGAX89JAD9Qx7+Qeyq/6ER1/4/r4wAN38EAE9w6QBtoCgAj1MH/0Ea7v/ZqYz/Tl69/wCTvv+TR7r+ak1//+md6QGHV+3/0A3sAZttJP+0ZNoAtKMSAL5uCQERP3v/s4i0/6V7e/+QvFH+R/Bs/xlwC//j2jP/pzLq/3JPbP8fE3P/t/BjAONXj/9I2fj/ZqlfAYGVlQDuhQwB48wjANBzGgFmCOoAcFiPAZD5DgDwnqz+ZHB3AMKNmf4oOFP/ebAuACo1TP+ev5oAW9FcAK0NEAEFSOL/zP6VAFC4zwBkCXr+dmWr//zLAP6gzzYAOEj5ATiMDf8KQGv+W2U0/+G1+AGL/4QA5pERAOk4FwB3AfH/1amX/2NjCf65D7//rWdtAa4N+/+yWAf+GztE/wohAv/4YTsAGh6SAbCTCgBfec8BvFgYALle/v5zN8kAGDJGAHg1BgCOQpIA5OL5/2jA3gGtRNsAorgk/49mif+dCxcAfS1iAOtd4f44cKD/RnTzAZn5N/+BJxEB8VD0AFdFFQFe5En/TkJB/8Lj5wA9klf/rZsX/3B02/7YJgv/g7qFAF7UuwBkL1sAzP6v/94S1/6tRGz/4+RP/ybd1QCj45b+H74SAKCzCwEKWl7/3K5YAKPT5f/HiDQAgl/d/4y85/6LcYD/davs/jHcFP87FKv/5G28ABThIP7DEK4A4/6IAYcnaQCWTc7/0u7iADfUhP7vOXwAqsJd//kQ9/8Ylz7/CpcKAE+Lsv948soAGtvVAD59I/+QAmz/5iFT/1Et2AHgPhEA1tl9AGKZmf+zsGr+g12K/20+JP+yeSD/ePxGANz4JQDMWGcBgNz7/+zjBwFqMcb/PDhrAGNy7gDczF4BSbsBAFmaIgBO2aX/DsP5/wnm/f/Nh/UAGvwH/1TNGwGGAnAAJZ4gAOdb7f+/qsz/mAfeAG3AMQDBppL/6BO1/2mONP9nEBsB/cilAMPZBP80vZD/e5ug/leCNv9OeD3/DjgpABkpff9XqPUA1qVGANSpBv/b08L+SF2k/8UhZ/8rjo0Ag+GsAPRpHABEROEAiFQN/4I5KP6LTTgAVJY1ADZfnQCQDbH+X3O6AHUXdv/0pvH/C7qHALJqy/9h2l0AK/0tAKSYBACLdu8AYAEY/uuZ0/+obhT/Mu+wAHIp6ADB+jUA/qBv/oh6Kf9hbEMA15gX/4zR1AAqvaMAyioy/2pqvf++RNn/6Tp1AOXc8wHFAwQAJXg2/gSchv8kPav+pYhk/9ToDgBargoA2MZB/wwDQAB0cXP/+GcIAOd9Ev+gHMUAHrgjAd9J+f97FC7+hzgl/60N5QF3oSL/9T1JAM19cACJaIYA2fYe/+2OjwBBn2b/bKS+ANt1rf8iJXj+yEVQAB982v5KG6D/uprH/0fH/ABoUZ8BEcgnANM9wAEa7lsAlNkMADtb1f8LUbf/geZ6/3LLkQF3tEL/SIq0AOCVagB3Umj/0IwrAGIJtv/NZYb/EmUmAF/Fpv/L8ZMAPtCR/4X2+wACqQ4ADfe4AI4H/gAkyBf/WM3fAFuBNP8Vuh4Aj+TSAffq+P/mRR/+sLqH/+7NNAGLTysAEbDZ/iDzQwDyb+kALCMJ/+NyUQEERwz/Jmm/AAd1Mv9RTxAAP0RB/50kbv9N8QP/4i37AY4ZzgB4e9EBHP7u/wWAfv9b3tf/og+/AFbwSQCHuVH+LPGjANTb0v9wopsAz2V2AKhIOP/EBTQASKzy/34Wnf+SYDv/onmY/owQXwDD/sj+UpaiAHcrkf7MrE7/puCfAGgT7f/1ftD/4jvVAHXZxQCYSO0A3B8X/g5a5/+81EABPGX2/1UYVgABsW0AklMgAUu2wAB38eAAue0b/7hlUgHrJU3//YYTAOj2egA8arMAwwsMAG1C6wF9cTsAPSikAK9o8AACL7v/MgyNAMKLtf+H+mgAYVze/9mVyf/L8Xb/T5dDAHqO2v+V9e8AiirI/lAlYf98cKf/JIpX/4Idk//xV07/zGETAbHRFv/343/+Y3dT/9QZxgEQs7MAkU2s/lmZDv/avacAa+k7/yMh8/4scHD/oX9PAcyvCgAoFYr+aHTkAMdfif+Fvqj/kqXqAbdjJwC33Db+/96FAKLbef4/7wYA4WY2//sS9gAEIoEBhySDAM4yOwEPYbcAq9iH/2WYK/+W+1sAJpFfACLMJv6yjFP/GYHz/0yQJQBqJBr+dpCs/0S65f9rodX/LqNE/5Wq/QC7EQ8A2qCl/6sj9gFgDRMApct1ANZrwP/0e7EBZANoALLyYf/7TIL/000qAfpPRv8/9FABaWX2AD2IOgHuW9UADjti/6dUTQARhC7+Oa/F/7k+uABMQM8ArK/Q/q9KJQCKG9P+lH3CAApZUQCoy2X/K9XRAev1NgAeI+L/CX5GAOJ9Xv6cdRT/OfhwAeYwQP+kXKYB4Nbm/yR4jwA3CCv/+wH1AWpipQBKa2r+NQQ2/1qylgEDeHv/9AVZAXL6Pf/+mVIBTQ8RADnuWgFf3+YA7DQv/meUpP95zyQBEhC5/0sUSgC7C2UALjCB/xbv0v9N7IH/b03M/z1IYf/H2fv/KtfMAIWRyf855pIB62TGAJJJI/5sxhT/tk/S/1JniAD2bLAAIhE8/xNKcv6oqk7/ne8U/5UpqAA6eRwAT7OG/+d5h/+u0WL/83q+AKumzQDUdDAAHWxC/6LetgEOdxUA1Sf5//7f5P+3pcYAhb4wAHzQbf93r1X/CdF5ATCrvf/DR4YBiNsz/7Zbjf4xn0gAI3b1/3C64/87iR8AiSyjAHJnPP4I1ZYAogpx/8JoSADcg3T/sk9cAMv61f5dwb3/gv8i/tS8lwCIERT/FGVT/9TOpgDl7kn/l0oD/6hX1wCbvIX/poFJAPBPhf+y01H/y0ij/sGopQAOpMf+Hv/MAEFIWwGmSmb/yCoA/8Jx4/9CF9AA5dhk/xjvGgAK6T7/ewqyARokrv9328cBLaO+ABCoKgCmOcb/HBoaAH6l5wD7bGT/PeV5/zp2igBMzxEADSJw/lkQqAAl0Gn/I8nX/yhqZf4G73IAKGfi/vZ/bv8/pzoAhPCOAAWeWP+BSZ7/XlmSAOY2kgAILa0AT6kBAHO69wBUQIMAQ+D9/8+9QACaHFEBLbg2/1fU4P8AYEn/gSHrATRCUP/7rpv/BLMlAOqkXf5dr/0AxkVX/+BqLgBjHdIAPrxy/yzqCACpr/f/F22J/+W2JwDApV7+9WXZAL9YYADEXmP/au4L/jV+8wBeAWX/LpMCAMl8fP+NDNoADaadATD77f+b+nz/apSS/7YNygAcPacA2ZgI/tyCLf/I5v8BN0FX/12/Yf5y+w4AIGlcARrPjQAYzw3+FTIw/7qUdP/TK+EAJSKi/qTSKv9EF2D/ttYI//V1if9CwzIASwxT/lCMpAAJpSQB5G7jAPERWgEZNNQABt8M/4vzOQAMcUsB9re//9W/Rf/mD44AAcPE/4qrL/9AP2oBEKnW/8+uOAFYSYX/toWMALEOGf+TuDX/CuOh/3jY9P9JTekAne6LATtB6QBG+9gBKbiZ/yDLcACSk/0AV2VtASxShf/0ljX/Xpjo/ztdJ/9Yk9z/TlENASAv/P+gE3L/XWsn/3YQ0wG5d9H/49t//lhp7P+ibhf/JKZu/1vs3f9C6nQAbxP0/grpGgAgtwb+Ar/yANqcNf4pPEb/qOxvAHm5fv/ujs//N340ANyB0P5QzKT/QxeQ/toobP9/yqQAyyED/wKeAAAlYLz/wDFKAG0EAABvpwr+W9qH/8tCrf+WwuIAyf0G/65meQDNv24ANcIEAFEoLf4jZo//DGzG/xAb6P/8R7oBsG5yAI4DdQFxTY4AE5zFAVwv/AA16BYBNhLrAC4jvf/s1IEAAmDQ/sjux/87r6T/kivnAMLZNP8D3wwAijay/lXrzwDozyIAMTQy/6ZxWf8KLdj/Pq0cAG+l9gB2c1v/gFQ8AKeQywBXDfMAFh7kAbFxkv+Bqub+/JmB/5HhKwBG5wX/eml+/lb2lP9uJZr+0QNbAESRPgDkEKX/N935/rLSWwBTkuL+RZK6AF3SaP4QGa0A57omAL16jP/7DXD/aW5dAPtIqgDAF9//GAPKAeFd5ACZk8f+baoWAPhl9v+yfAz/sv5m/jcEQQB91rQAt2CTAC11F/6Ev/kAj7DL/oi3Nv+S6rEAkmVW/yx7jwEh0ZgAwFop/lMPff/VrFIA16mQABANIgAg0WT/VBL5AcUR7P/ZuuYAMaCw/292Yf/taOsATztc/kX5C/8jrEoBE3ZEAN58pf+0QiP/Vq72ACtKb/9+kFb/5OpbAPLVGP5FLOv/3LQjAAj4B/9mL1z/8M1m/3HmqwEfucn/wvZG/3oRuwCGRsf/lQOW/3U/ZwBBaHv/1DYTAQaNWABThvP/iDVnAKkbtACxMRgAbzanAMM91/8fAWwBPCpGALkDov/ClSj/9n8m/r53Jv89dwgBYKHb/yrL3QGx8qT/9Z8KAHTEAAAFXc3+gH+zAH3t9v+Votn/VyUU/ozuwAAJCcEAYQHiAB0mCgAAiD//5UjS/iaGXP9O2tABaCRU/wwFwf/yrz3/v6kuAbOTk/9xvov+fawfAANL/P7XJA8AwRsYAf9Flf9ugXYAy135AIqJQP4mRgYAmXTeAKFKewDBY0//djte/z0MKwGSsZ0ALpO/ABD/JgALMx8BPDpi/2/CTQGaW/QAjCiQAa0K+wDL0TL+bIJOAOS0WgCuB/oAH648ACmrHgB0Y1L/dsGL/7utxv7abzgAuXvYAPmeNAA0tF3/yQlb/zgtpv6Em8v/OuhuADTTWf/9AKIBCVe3AJGILAFeevUAVbyrAZNcxgAACGgAHl+uAN3mNAH39+v/ia41/yMVzP9H49YB6FLCAAsw4/+qSbj/xvv8/ixwIgCDZYP/SKi7AISHff+KaGH/7rio//NoVP+H2OL/i5DtALyJlgFQOIz/Vqmn/8JOGf/cEbT/EQ3BAHWJ1P+N4JcAMfSvAMFjr/8TY5oB/0E+/5zSN//y9AP/+g6VAJ5Y2f+dz4b+++gcAC6c+/+rOLj/7zPqAI6Kg/8Z/vMBCsnCAD9hSwDS76IAwMgfAXXW8wAYR97+Nijo/0y3b/6QDlf/1k+I/9jE1ACEG4z+gwX9AHxsE/8c10sATN43/um2PwBEq7/+NG/e/wppTf9QqusAjxhY/y3neQCUgeABPfZUAP0u2//vTCEAMZQS/uYlRQBDhhb+jpteAB+d0/7VKh7/BOT3/vywDf8nAB/+8fT//6otCv793vkA3nKEAP8vBv+0o7MBVF6X/1nRUv7lNKn/1ewAAdY45P+Hd5f/cMnBAFOgNf4Gl0IAEqIRAOlhWwCDBU4BtXg1/3VfP//tdbkAv36I/5B36QC3OWEBL8m7/6eldwEtZH4AFWIG/pGWX/94NpgA0WJoAI9vHv64lPkA69guAPjKlP85XxYA8uGjAOn36P9HqxP/Z/Qx/1RnXf9EefQBUuANAClPK//5zqf/1zQV/sAgFv/3bzwAZUom/xZbVP4dHA3/xufX/vSayADfie0A04QOAF9Azv8RPvf/6YN5AV0XTQDNzDT+Ub2IALTbigGPEl4AzCuM/ryv2wBvYo//lz+i/9MyR/4TkjUAki1T/rJS7v8QhVT/4sZd/8lhFP94diP/cjLn/6LlnP/TGgwAcidz/87UhgDF2aD/dIFe/sfX2/9L3/kB/XS1/+jXaP/kgvb/uXVWAA4FCADvHT0B7VeF/32Sif7MqN8ALqj1AJppFgDc1KH/a0UY/4natf/xVMb/gnrT/40Imf++sXYAYFmyAP8QMP56YGn/dTbo/yJ+af/MQ6YA6DSK/9OTDAAZNgcALA/X/jPsLQC+RIEBapPhABxdLf7sjQ//ET2hANxzwADskRj+b6ipAOA6P/9/pLwAUupLAeCehgDRRG4B2abZAEbhpgG7wY//EAdY/wrNjAB1wJwBETgmABt8bAGr1zf/X/3UAJuHqP/2spn+mkRKAOg9YP5phDsAIUzHAb2wgv8JaBn+S8Zm/+kBcABs3BT/cuZGAIzChf85nqT+kgZQ/6nEYQFVt4IARp7eATvt6v9gGRr/6K9h/wt5+P5YI8IA27T8/koI4wDD40kBuG6h/zHppAGANS8AUg55/8G+OgAwrnX/hBcgACgKhgEWMxn/8Auw/245kgB1j+8BnWV2/zZUTADNuBL/LwRI/05wVf/BMkIBXRA0/whphgAMbUj/Opz7AJAjzAAsoHX+MmvCAAFEpf9vbqIAnlMo/kzW6gA62M3/q2CT/yjjcgGw4/EARvm3AYhUi/88evf+jwl1/7Guif5J948A7Ll+/z4Z9/8tQDj/ofQGACI5OAFpylMAgJPQAAZnCv9KikH/YVBk/9auIf8yhkr/bpeC/m9UrABUx0v++Dtw/wjYsgEJt18A7hsI/qrN3ADD5YcAYkzt/+JbGgFS2yf/4b7HAdnIef9Rswj/jEHOALLPV/76/C7/aFluAf29nv+Q1p7/oPU2/zW3XAEVyML/kiFxAdEB/wDraiv/pzToAJ3l3QAzHhkA+t0bAUGTV/9Pe8QAQcTf/0wsEQFV8UQAyrf5/0HU1P8JIZoBRztQAK/CO/+NSAkAZKD0AObQOAA7GUv+UMLCABIDyP6gn3MAhI/3AW9dOf867QsBht6H/3qjbAF7K77/+73O/lC2SP/Q9uABETwJAKHPJgCNbVsA2A/T/4hObgBio2j/FVB5/62ytwF/jwQAaDxS/tYQDf9g7iEBnpTm/3+BPv8z/9L/Po3s/p034P9yJ/QAwLz6/+RMNQBiVFH/rcs9/pMyN//M678ANMX0AFgr0/4bv3cAvOeaAEJRoQBcwaAB+uN4AHs34gC4EUgAhagK/haHnP8pGWf/MMo6ALqVUf+8hu8A67W9/tmLvP9KMFIALtrlAL39+wAy5Qz/042/AYD0Gf+p53r+Vi+9/4S3F/8lspb/M4n9AMhOHwAWaTIAgjwAAISjW/4X57sAwE/vAJ1mpP/AUhQBGLVn//AJ6gABe6T/hekA/8ry8gA8uvUA8RDH/+B0nv6/fVv/4FbPAHkl5//jCcb/D5nv/3no2f5LcFIAXww5/jPWaf+U3GEBx2IkAJzRDP4K1DQA2bQ3/tSq6P/YFFT/nfqHAJ1jf/4BzikAlSRGATbEyf9XdAD+66uWABuj6gDKh7QA0F8A/nucXQC3PksAieu2AMzh///Wi9L/AnMI/x0MbwA0nAEA/RX7/yWlH/4MgtMAahI1/ipjmgAO2T3+2Atc/8jFcP6TJscAJPx4/mupTQABe5//z0tmAKOvxAAsAfAAeLqw/g1iTP/tfPH/6JK8/8hg4ADMHykA0MgNABXhYP+vnMQA99B+AD649P4Cq1EAVXOeADZALf8TinIAh0fNAOMvkwHa50IA/dEcAPQPrf8GD3b+EJbQ/7kWMv9WcM//S3HXAT+SK/8E4RP+4xc+/w7/1v4tCM3/V8WX/tJS1//1+Pf/gPhGAOH3VwBaeEYA1fVcAA2F4gAvtQUBXKNp/wYehf7osj3/5pUY/xIxngDkZD3+dPP7/01LXAFR25P/TKP+/o3V9gDoJZj+YSxkAMklMgHU9DkArqu3//lKcACmnB4A3t1h//NdSf77ZWT/2Nld//6Ku/+OvjT/O8ux/8heNABzcp7/pZhoAX5j4v92nfQBa8gQAMFa5QB5BlgAnCBd/n3x0/8O7Z3/pZoV/7jgFv/6GJj/cU0fAPerF//tscz/NImR/8K2cgDg6pUACm9nAcmBBADujk4ANAYo/27Vpf48z/0APtdFAGBhAP8xLcoAeHkW/+uLMAHGLSL/tjIbAYPSW/8uNoAAr3tp/8aNTv5D9O//9TZn/k4m8v8CXPn++65X/4s/kAAYbBv/ImYSASIWmABC5Xb+Mo9jAJCplQF2HpgAsgh5AQifEgBaZeb/gR13AEQkCwHotzcAF/9g/6Epwf8/i94AD7PzAP9kD/9SNYcAiTmVAWPwqv8W5uT+MbRS/z1SKwBu9dkAx309AC79NACNxdsA05/BADd5af63FIEAqXeq/8uyi/+HKLb/rA3K/0GylAAIzysAejV/AUqhMADj1oD+Vgvz/2RWBwH1RIb/PSsVAZhUXv++PPr+73bo/9aIJQFxTGv/XWhkAZDOF/9ulpoB5Ge5ANoxMv6HTYv/uQFOAAChlP9hHen/z5SV/6CoAABbgKv/BhwT/gtv9wAnu5b/iuiVAHU+RP8/2Lz/6+og/h05oP8ZDPEBqTy/ACCDjf/tn3v/XsVe/nT+A/9cs2H+eWFc/6pwDgAVlfgA+OMDAFBgbQBLwEoBDFri/6FqRAHQcn//cir//koaSv/3s5b+eYw8AJNGyP/WKKH/obzJ/41Bh//yc/wAPi/KALSV//6CN+0ApRG6/wqpwgCcbdr/cIx7/2iA3/6xjmz/eSXb/4BNEv9vbBcBW8BLAK71Fv8E7D7/K0CZAeOt/gDteoQBf1m6/45SgP78VK4AWrOxAfPWV/9nPKL/0IIO/wuCiwDOgdv/Xtmd/+/m5v90c5/+pGtfADPaAgHYfcb/jMqA/gtfRP83CV3+rpkG/8ysYABFoG4A1SYx/htQ1QB2fXIARkZD/w+OSf+Dern/8xQy/oLtKADSn4wBxZdB/1SZQgDDfloAEO7sAXa7Zv8DGIX/u0XmADjFXAHVRV7/UIrlAc4H5gDeb+YBW+l3/wlZBwECYgEAlEqF/zP2tP/ksXABOr1s/8LL7f4V0cMAkwojAVad4gAfo4v+OAdL/z5adAC1PKkAiqLU/lGnHwDNWnD/IXDjAFOXdQGx4En/rpDZ/+bMT/8WTej/ck7qAOA5fv4JMY0A8pOlAWi2jP+nhAwBe0R/AOFXJwH7bAgAxsGPAXmHz/+sFkYAMkR0/2WvKP/4aekApssHAG7F2gDX/hr+qOL9AB+PYAALZykAt4HL/mT3Sv/VfoQA0pMsAMfqGwGUL7UAm1ueATZpr/8CTpH+ZppfAIDPf/40fOz/glRHAN3z0wCYqs8A3mrHALdUXv5cyDj/irZzAY5gkgCFiOQAYRKWADf7QgCMZgQAymeXAB4T+P8zuM8AysZZADfF4f6pX/n/QkFE/7zqfgCm32QBcO/0AJAXwgA6J7YA9CwY/q9Es/+YdpoBsKKCANlyzP6tfk7/Id4e/yQCW/8Cj/MACevXAAOrlwEY1/X/qC+k/vGSzwBFgbQARPNxAJA1SP77LQ4AF26oAERET/9uRl/+rluQ/yHOX/+JKQf/E7uZ/iP/cP8Jkbn+Mp0lAAtwMQFmCL7/6vOpATxVFwBKJ70AdDHvAK3V0gAuoWz/n5YlAMR4uf8iYgb/mcM+/2HmR/9mPUwAGtTs/6RhEADGO5IAoxfEADgYPQC1YsEA+5Pl/2K9GP8uNs7/6lL2ALdnJgFtPswACvDgAJIWdf+OmngARdQjANBjdgF5/wP/SAbCAHURxf99DxcAmk+ZANZexf+5N5P/Pv5O/n9SmQBuZj//bFKh/2m71AFQiicAPP9d/0gMugDS+x8BvqeQ/+QsE/6AQ+gA1vlr/oiRVv+ELrAAvbvj/9AWjADZ03QAMlG6/ov6HwAeQMYBh5tkAKDOF/67otP/ELw/AP7QMQBVVL8A8cDy/5l+kQHqoqL/5mHYAUCHfgC+lN8BNAAr/xwnvQFAiO4Ar8S5AGLi1f9/n/QB4q88AKDpjgG088//RZhZAR9lFQCQGaT+i7/RAFsZeQAgkwUAJ7p7/z9z5v9dp8b/j9Xc/7OcE/8ZQnoA1qDZ/wItPv9qT5L+M4lj/1dk5/+vkej/ZbgB/64JfQBSJaEBJHKN/zDejv/1upoABa7d/j9ym/+HN6ABUB+HAH76swHs2i0AFByRARCTSQD5vYQBEb3A/9+Oxv9IFA//+jXt/g8LEgAb03H+1Ws4/66Tkv9gfjAAF8FtASWiXgDHnfn+GIC7/80xsv5dpCr/K3frAVi37f/a0gH/a/4qAOYKY/+iAOIA2+1bAIGyywDQMl/+ztBf//e/Wf5u6k//pT3zABR6cP/29rn+ZwR7AOlj5gHbW/z/x94W/7P16f/T8eoAb/rA/1VUiABlOjL/g62c/nctM/926RD+8lrWAF6f2wEDA+r/Ykxc/lA25gAF5Of+NRjf/3E4dgEUhAH/q9LsADjxnv+6cxP/COWuADAsAAFycqb/Bkni/81Z9ACJ40sB+K04AEp49v53Awv/UXjG/4h6Yv+S8d0BbcJO/9/xRgHWyKn/Yb4v/y9nrv9jXEj+dum0/8Ej6f4a5SD/3vzGAMwrR//HVKwAhma+AG/uYf7mKOYA481A/sgM4QCmGd4AcUUz/4+fGACnuEoAHeB0/p7Q6QDBdH7/1AuF/xY6jAHMJDP/6B4rAOtGtf9AOJL+qRJU/+IBDf/IMrD/NNX1/qjRYQC/RzcAIk6cAOiQOgG5Sr0Auo6V/kBFf/+hy5P/sJe/AIjny/6jtokAoX77/ukgQgBEz0IAHhwlAF1yYAH+XPf/LKtFAMp3C/+8djIB/1OI/0dSGgBG4wIAIOt5AbUpmgBHhuX+yv8kACmYBQCaP0n/IrZ8AHndlv8azNUBKaxXAFqdkv9tghQAR2vI//NmvQABw5H+Llh1AAjO4wC/bv3/bYAU/oZVM/+JsXAB2CIW/4MQ0P95laoAchMXAaZQH/9x8HoA6LP6AERutP7SqncA32yk/89P6f8b5eL+0WJR/09EBwCDuWQAqh2i/xGia/85FQsBZMi1/39BpgGlhswAaKeoAAGkTwCShzsBRjKA/2Z3Df7jBocAoo6z/6Bk3gAb4NsBnl3D/+qNiQAQGH3/7s4v/2ERYv90bgz/YHNNAFvj6P/4/k//XOUG/ljGiwDOS4EA+k3O/430ewGKRdwAIJcGAYOnFv/tRKf+x72WAKOriv8zvAb/Xx2J/pTiswC1a9D/hh9S/5dlLf+ByuEA4EiTADCKl//DQM7+7dqeAGodif79ven/Zw8R/8Jh/wCyLan+xuGbACcwdf+HanMAYSa1AJYvQf9TguX+9iaBAFzvmv5bY38AoW8h/+7Z8v+DucP/1b+e/ymW2gCEqYMAWVT8AatGgP+j+Mv+ATK0/3xMVQH7b1AAY0Lv/5rttv/dfoX+Ssxj/0GTd/9jOKf/T/iV/3Sb5P/tKw7+RYkL/xb68QFbeo//zfnzANQaPP8wtrABMBe//8t5mP4tStX/PloS/vWj5v+5anT/UyOfAAwhAv9QIj4AEFeu/61lVQDKJFH+oEXM/0DhuwA6zl4AVpAvAOVW9QA/kb4BJQUnAG37GgCJk+oAonmR/5B0zv/F6Ln/t76M/0kM/v+LFPL/qlrv/2FCu//1tYf+3og0APUFM/7LL04AmGXYAEkXfQD+YCEB69JJ/yvRWAEHgW0Aemjk/qryywDyzIf/yhzp/0EGfwCfkEcAZIxfAE6WDQD7a3YBtjp9/wEmbP+NvdH/CJt9AXGjW/95T77/hu9s/0wv+ACj5O8AEW8KAFiVS//X6+8Ap58Y/y+XbP9r0bwA6edj/hzKlP+uI4r/bhhE/wJFtQBrZlIAZu0HAFwk7f/dolMBN8oG/4fqh/8Y+t4AQV6o/vX40v+nbMn+/6FvAM0I/gCIDXQAZLCE/yvXfv+xhYL/nk+UAEPgJQEMzhX/PiJuAe1or/9QhG//jq5IAFTltP5ps4wAQPgP/+mKEAD1Q3v+2nnU/z9f2gHVhYn/j7ZS/zAcCwD0co0B0a9M/521lv+65QP/pJ1vAee9iwB3yr7/2mpA/0TrP/5gGqz/uy8LAdcS+/9RVFkARDqAAF5xBQFcgdD/YQ9T/gkcvADvCaQAPM2YAMCjYv+4EjwA2baLAG07eP8EwPsAqdLw/yWsXP6U0/X/s0E0AP0NcwC5rs4BcryV/+1arQArx8D/WGxxADQjTABCGZT/3QQH/5fxcv++0egAYjLHAJeW1f8SSiQBNSgHABOHQf8arEUAru1VAGNfKQADOBAAJ6Cx/8hq2v65RFT/W7o9/kOPjf8N9Kb/Y3LGAMduo//BEroAfO/2AW5EFgAC6y4B1DxrAGkqaQEO5pgABwWDAI1omv/VAwYAg+Si/7NkHAHne1X/zg7fAf1g5gAmmJUBYol6ANbNA//imLP/BoWJAJ5FjP9xopr/tPOs/xu9c/+PLtz/1Ybh/34dRQC8K4kB8kYJAFrM///nqpMAFzgT/jh9nf8ws9r/T7b9/ybUvwEp63wAYJccAIeUvgDN+Sf+NGCI/9QsiP9D0YP//IIX/9uAFP/GgXYAbGULALIFkgE+B2T/texe/hwapABMFnD/eGZPAMrA5QHIsNcAKUD0/864TgCnLT8BoCMA/zsMjv/MCZD/217lAXobcAC9aW3/QNBK//t/NwEC4sYALEzRAJeYTf/SFy4ByatF/yzT5wC+JeD/9cQ+/6m13v8i0xEAd/HF/+UjmAEVRSj/suKhAJSzwQDbwv4BKM4z/+dc+gFDmaoAFZTxAKpFUv95Euf/XHIDALg+5gDhyVf/kmCi/7Xy3ACtu90B4j6q/zh+2QF1DeP/syzvAJ2Nm/+Q3VMA69HQACoRpQH7UYUAfPXJ/mHTGP9T1qYAmiQJ//gvfwBa24z/odkm/tSTP/9CVJQBzwMBAOaGWQF/Tnr/4JsB/1KISgCynND/uhkx/94D0gHllr7/VaI0/ylUjf9Je1T+XRGWAHcTHAEgFtf/HBfM/47xNP/kNH0AHUzPANen+v6vpOYAN89pAW279f+hLNwBKWWA/6cQXgBd1mv/dkgA/lA96v95r30Ai6n7AGEnk/76xDH/pbNu/t9Gu/8Wjn0BmrOK/3awKgEKrpkAnFxmAKgNof+PECAA+sW0/8ujLAFXICQAoZkU/3v8DwAZ41AAPFiOABEWyQGazU3/Jz8vAAh6jQCAF7b+zCcT/wRwHf8XJIz/0up0/jUyP/95q2j/oNteAFdSDv7nKgUApYt//lZOJgCCPEL+yx4t/y7EegH5NaL/iI9n/tfScgDnB6D+qZgq/28t9gCOg4f/g0fM/yTiCwAAHPL/4YrV//cu2P71A7cAbPxKAc4aMP/NNvb/08Yk/3kjMgA02Mr/JouB/vJJlABD543/Ki/MAE50GQEE4b//BpPkADpYsQB6peX//FPJ/+CnYAGxuJ7/8mmzAfjG8ACFQssB/iQvAC0Yc/93Pv4AxOG6/nuNrAAaVSn/4m+3ANXnlwAEOwf/7oqUAEKTIf8f9o3/0Y10/2hwHwBYoawAU9fm/i9vlwAtJjQBhC3MAIqAbf7pdYb/876t/vHs8ABSf+z+KN+h/2624f97ru8Ah/KRATPRmgCWA3P+2aT8/zecRQFUXv//6EktARQT1P9gxTv+YPshACbHSQFArPf/dXQ4/+QREgA+imcB9uWk//R2yf5WIJ//bSKJAVXTugAKwcH+esKxAHruZv+i2qsAbNmhAZ6qIgCwL5sBteQL/wicAAAQS10AzmL/ATqaIwAM87j+Q3VC/+blewDJKm4AhuSy/rpsdv86E5r/Uqk+/3KPcwHvxDL/rTDB/5MCVP+WhpP+X+hJAG3jNP6/iQoAKMwe/kw0Yf+k634A/ny8AEq2FQF5HSP/8R4H/lXa1v8HVJb+URt1/6CfmP5CGN3/4wo8AY2HZgDQvZYBdbNcAIQWiP94xxwAFYFP/rYJQQDao6kA9pPG/2smkAFOr83/1gX6/i9YHf+kL8z/KzcG/4OGz/50ZNYAYIxLAWrckADDIBwBrFEF/8ezNP8lVMsAqnCuAAsEWwBF9BsBdYNcACGYr/+MmWv/+4cr/leKBP/G6pP+eZhU/81lmwGdCRkASGoR/myZAP+95boAwQiw/66V0QDugh0A6dZ+AT3iZgA5owQBxm8z/y1PTgFz0gr/2gkZ/56Lxv/TUrv+UIVTAJ2B5gHzhYb/KIgQAE1rT/+3VVwBsczKAKNHk/+YRb4ArDO8AfrSrP/T8nEBWVka/0BCb/50mCoAoScb/zZQ/gBq0XMBZ3xhAN3mYv8f5wYAssB4/g/Zy/98nk8AcJH3AFz6MAGjtcH/JS+O/pC9pf8ukvAABkuAACmdyP5XedUAAXHsAAUt+gCQDFIAH2znAOHvd/+nB73/u+SE/269IgBeLMwBojTFAE688f45FI0A9JIvAc5kMwB9a5T+G8NNAJj9WgEHj5D/MyUfACJ3Jv8HxXYAmbzTAJcUdP71QTT/tP1uAS+x0QChYxH/dt7KAH2z/AF7Nn7/kTm/ADe6eQAK84oAzdPl/32c8f6UnLn/4xO8/3wpIP8fIs7+ETlTAMwWJf8qYGIAd2a4AQO+HABuUtr/yMzA/8mRdgB1zJIAhCBiAcDCeQBqofgB7Vh8ABfUGgDNq1r/+DDYAY0l5v98ywD+nqge/9b4FQBwuwf/S4Xv/0rj8//6k0YA1niiAKcJs/8WnhIA2k3RAWFtUf/0IbP/OTQ5/0Gs0v/5R9H/jqnuAJ69mf+u/mf+YiEOAI1M5v9xizT/DzrUAKjXyf/4zNcB30Sg/zmat/4v53kAaqaJAFGIigClKzMA54s9ADlfO/52Yhn/lz/sAV6++v+puXIBBfo6/0tpYQHX34YAcWOjAYA+cABjapMAo8MKACHNtgDWDq7/gSbn/zW23wBiKp//9w0oALzSsQEGFQD//z2U/oktgf9ZGnT+fiZyAPsy8v55hoD/zPmn/qXr1wDKsfMAhY0+APCCvgFur/8AABSSASXSef8HJ4IAjvpU/43IzwAJX2j/C/SuAIbofgCnAXv+EMGV/+jp7wHVRnD//HSg/vLe3P/NVeMAB7k6AHb3PwF0TbH/PvXI/j8SJf9rNej+Mt3TAKLbB/4CXisAtj62/qBOyP+HjKoA67jkAK81iv5QOk3/mMkCAT/EIgAFHrgAq7CaAHk7zgAmYycArFBN/gCGlwC6IfH+Xv3f/yxy/ABsfjn/ySgN/yflG/8n7xcBl3kz/5mW+AAK6q7/dvYE/sj1JgBFofIBELKWAHE4ggCrH2kAGlhs/zEqagD7qUIARV2VABQ5/gCkGW8AWrxa/8wExQAo1TIB1GCE/1iKtP7kknz/uPb3AEF1Vv/9ZtL+/nkkAIlzA/88GNgAhhIdADviYQCwjkcAB9GhAL1UM/6b+kgA1VTr/y3e4ADulI//qio1/06ndQC6ACj/fbFn/0XhQgDjB1gBS6wGAKkt4wEQJEb/MgIJ/4vBFgCPt+f+2kUyAOw4oQHVgyoAipEs/ojlKP8xPyP/PZH1/2XAAv7op3EAmGgmAXm52gB5i9P+d/AjAEG92f67s6L/oLvmAD74Dv88TmEA//ej/+E7W/9rRzr/8S8hATJ17ADbsT/+9FqzACPC1/+9QzL/F4eBAGi9Jf+5OcIAIz7n/9z4bAAM57IAj1BbAYNdZf+QJwIB//qyAAUR7P6LIC4AzLwm/vVzNP+/cUn+v2xF/xZF9QEXy7IAqmOqAEH4bwAlbJn/QCVFAABYPv5ZlJD/v0TgAfEnNQApy+3/kX7C/90q/f8ZY5cAYf3fAUpzMf8Gr0j/O7DLAHy3+QHk5GMAgQzP/qjAw//MsBD+mOqrAE0lVf8heIf/jsLjAR/WOgDVu33/6C48/750Kv6XshP/Mz7t/szswQDC6DwArCKd/70QuP5nA1//jekk/ikZC/8Vw6YAdvUtAEPVlf+fDBL/u6TjAaAZBQAMTsMBK8XhADCOKf7Emzz/38cSAZGInAD8dan+keLuAO8XawBttbz/5nAx/kmq7f/nt+P/UNwUAMJrfwF/zWUALjTFAdKrJP9YA1r/OJeNAGC7//8qTsgA/kZGAfR9qADMRIoBfNdGAGZCyP4RNOQAddyP/sv4ewA4Eq7/upek/zPo0AGg5Cv/+R0ZAUS+PwANAAAAAP8AAAAA9QAAAAAAAPsAAAAAAAD9AAAAAPMAAAAABwAAAAAAAwAAAADzAAAAAAUAAAAAAAAAAAsAAAAAAAsAAAAA8wAAAAAAAP0AAAAAAP8AAAAAAwAAAAD1AAAAAAAAAA8AAAAAAP8AAAAA/wAAAAAHAAAAAAUAQayJAgsrAQAAAHbBXwBlcAL/UPyh/vJqxv+FBrIA5N9wAN/uVf4z8xoAPiuL/stBCgBB4IkCC1czTe0AkapW/zYmM//xgGX/KXlK/+xOmwCpl2n+nClIAMJmr//OomX/AAAAAAAAAAAbLnsBEqj9/9Ovl/7D22AAOHa+/v7R9f+ZZH7+6IEV/zW48v/HpN0AQeCKAgsBAQBBgIsCC/EG4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f0xpYnNvZGl1bURSRwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4K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"),L=X,n1(y2).then(E=>WebAssembly.instantiate(E,L)).then(function(E){eA(E.instance)},E=>{JA(`failed to asynchronously prepare wasm: ${E}`),t2(E)}),{}}();function JC(){function L(){ug||(ug=!0,f.calledRun=!0,o0||(Zg(d0),f.onRuntimeInitialized?.(),function(){if(f.postRun)for(typeof f.postRun=="function"&&(f.postRun=[f.postRun]);f.postRun.length;)X=f.postRun.shift(),U0.unshift(X);var X;Zg(U0)}()))}Z0>0||(function(){if(f.preRun)for(typeof f.preRun=="function"&&(f.preRun=[f.preRun]);f.preRun.length;)X=f.preRun.shift(),m0.unshift(X);var X;Zg(m0)}(),Z0>0||(f.setStatus?(f.setStatus("Running..."),setTimeout(function(){setTimeout(function(){f.setStatus("")},1),L()},1)):L()))}if(f._crypto_aead_aegis128l_keybytes=()=>(f._crypto_aead_aegis128l_keybytes=j.g)(),f._crypto_aead_aegis128l_nsecbytes=()=>(f._crypto_aead_aegis128l_nsecbytes=j.h)(),f._crypto_aead_aegis128l_npubbytes=()=>(f._crypto_aead_aegis128l_npubbytes=j.i)(),f._crypto_aead_aegis128l_abytes=()=>(f._crypto_aead_aegis128l_abytes=j.j)(),f._crypto_aead_aegis128l_messagebytes_max=()=>(f._crypto_aead_aegis128l_messagebytes_max=j.k)(),f._crypto_aead_aegis128l_keygen=L=>(f._crypto_aead_aegis128l_keygen=j.l)(L),f._crypto_aead_aegis128l_encrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis128l_encrypt=j.m)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aegis128l_encrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2)=>(f._crypto_aead_aegis128l_encrypt_detached=j.n)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2),f._crypto_aead_aegis128l_decrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis128l_decrypt=j.o)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aegis128l_decrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis128l_decrypt_detached=j.p)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aegis256_keybytes=()=>(f._crypto_aead_aegis256_keybytes=j.q)(),f._crypto_aead_aegis256_nsecbytes=()=>(f._crypto_aead_aegis256_nsecbytes=j.r)(),f._crypto_aead_aegis256_npubbytes=()=>(f._crypto_aead_aegis256_npubbytes=j.s)(),f._crypto_aead_aegis256_abytes=()=>(f._crypto_aead_aegis256_abytes=j.t)(),f._crypto_aead_aegis256_messagebytes_max=()=>(f._crypto_aead_aegis256_messagebytes_max=j.u)(),f._crypto_aead_aegis256_keygen=L=>(f._crypto_aead_aegis256_keygen=j.v)(L),f._crypto_aead_aegis256_encrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis256_encrypt=j.w)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aegis256_encrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2)=>(f._crypto_aead_aegis256_encrypt_detached=j.x)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2),f._crypto_aead_aegis256_decrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis256_decrypt=j.y)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aegis256_decrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_aegis256_decrypt_detached=j.z)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_aes256gcm_is_available=()=>(f._crypto_aead_aes256gcm_is_available=j.A)(),f._crypto_aead_chacha20poly1305_encrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2)=>(f._crypto_aead_chacha20poly1305_encrypt_detached=j.B)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2),f._crypto_aead_chacha20poly1305_encrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_encrypt=j.C)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2)=>(f._crypto_aead_chacha20poly1305_ietf_encrypt_detached=j.D)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2),f._crypto_aead_chacha20poly1305_ietf_encrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_ietf_encrypt=j.E)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_decrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_decrypt_detached=j.F)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_decrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_decrypt=j.G)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_ietf_decrypt_detached=j.H)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_ietf_decrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_chacha20poly1305_ietf_decrypt=j.I)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(f._crypto_aead_chacha20poly1305_ietf_keybytes=j.J)(),f._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(f._crypto_aead_chacha20poly1305_ietf_npubbytes=j.K)(),f._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(f._crypto_aead_chacha20poly1305_ietf_nsecbytes=j.L)(),f._crypto_aead_chacha20poly1305_ietf_abytes=()=>(f._crypto_aead_chacha20poly1305_ietf_abytes=j.M)(),f._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(f._crypto_aead_chacha20poly1305_ietf_messagebytes_max=j.N)(),f._crypto_aead_chacha20poly1305_ietf_keygen=L=>(f._crypto_aead_chacha20poly1305_ietf_keygen=j.O)(L),f._crypto_aead_chacha20poly1305_keybytes=()=>(f._crypto_aead_chacha20poly1305_keybytes=j.P)(),f._crypto_aead_chacha20poly1305_npubbytes=()=>(f._crypto_aead_chacha20poly1305_npubbytes=j.Q)(),f._crypto_aead_chacha20poly1305_nsecbytes=()=>(f._crypto_aead_chacha20poly1305_nsecbytes=j.R)(),f._crypto_aead_chacha20poly1305_abytes=()=>(f._crypto_aead_chacha20poly1305_abytes=j.S)(),f._crypto_aead_chacha20poly1305_messagebytes_max=()=>(f._crypto_aead_chacha20poly1305_messagebytes_max=j.T)(),f._crypto_aead_chacha20poly1305_keygen=L=>(f._crypto_aead_chacha20poly1305_keygen=j.U)(L),f._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2)=>(f._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=j.V)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2),f._crypto_aead_xchacha20poly1305_ietf_encrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_xchacha20poly1305_ietf_encrypt=j.W)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=j.X)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_xchacha20poly1305_ietf_decrypt=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_aead_xchacha20poly1305_ietf_decrypt=j.Y)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(f._crypto_aead_xchacha20poly1305_ietf_keybytes=j.Z)(),f._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(f._crypto_aead_xchacha20poly1305_ietf_npubbytes=j._)(),f._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(f._crypto_aead_xchacha20poly1305_ietf_nsecbytes=j.$)(),f._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(f._crypto_aead_xchacha20poly1305_ietf_abytes=j.aa)(),f._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(f._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=j.ba)(),f._crypto_aead_xchacha20poly1305_ietf_keygen=L=>(f._crypto_aead_xchacha20poly1305_ietf_keygen=j.ca)(L),f._crypto_auth_bytes=()=>(f._crypto_auth_bytes=j.da)(),f._crypto_auth_keybytes=()=>(f._crypto_auth_keybytes=j.ea)(),f._crypto_auth_primitive=()=>(f._crypto_auth_primitive=j.fa)(),f._crypto_auth=(L,X,eA,E,bA)=>(f._crypto_auth=j.ga)(L,X,eA,E,bA),f._crypto_auth_verify=(L,X,eA,E,bA)=>(f._crypto_auth_verify=j.ha)(L,X,eA,E,bA),f._crypto_auth_keygen=L=>(f._crypto_auth_keygen=j.ia)(L),f._crypto_auth_hmacsha256_bytes=()=>(f._crypto_auth_hmacsha256_bytes=j.ja)(),f._crypto_auth_hmacsha256_keybytes=()=>(f._crypto_auth_hmacsha256_keybytes=j.ka)(),f._crypto_auth_hmacsha256_statebytes=()=>(f._crypto_auth_hmacsha256_statebytes=j.la)(),f._crypto_auth_hmacsha256_keygen=L=>(f._crypto_auth_hmacsha256_keygen=j.ma)(L),f._crypto_auth_hmacsha256_init=(L,X,eA)=>(f._crypto_auth_hmacsha256_init=j.na)(L,X,eA),f._crypto_auth_hmacsha256_update=(L,X,eA,E)=>(f._crypto_auth_hmacsha256_update=j.oa)(L,X,eA,E),f._crypto_auth_hmacsha256_final=(L,X)=>(f._crypto_auth_hmacsha256_final=j.pa)(L,X),f._crypto_auth_hmacsha256=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha256=j.qa)(L,X,eA,E,bA),f._crypto_auth_hmacsha256_verify=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha256_verify=j.ra)(L,X,eA,E,bA),f._crypto_auth_hmacsha512_bytes=()=>(f._crypto_auth_hmacsha512_bytes=j.sa)(),f._crypto_auth_hmacsha512_keybytes=()=>(f._crypto_auth_hmacsha512_keybytes=j.ta)(),f._crypto_auth_hmacsha512_statebytes=()=>(f._crypto_auth_hmacsha512_statebytes=j.ua)(),f._crypto_auth_hmacsha512_keygen=L=>(f._crypto_auth_hmacsha512_keygen=j.va)(L),f._crypto_auth_hmacsha512_init=(L,X,eA)=>(f._crypto_auth_hmacsha512_init=j.wa)(L,X,eA),f._crypto_auth_hmacsha512_update=(L,X,eA,E)=>(f._crypto_auth_hmacsha512_update=j.xa)(L,X,eA,E),f._crypto_auth_hmacsha512_final=(L,X)=>(f._crypto_auth_hmacsha512_final=j.ya)(L,X),f._crypto_auth_hmacsha512=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha512=j.za)(L,X,eA,E,bA),f._crypto_auth_hmacsha512_verify=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha512_verify=j.Aa)(L,X,eA,E,bA),f._crypto_auth_hmacsha512256_bytes=()=>(f._crypto_auth_hmacsha512256_bytes=j.Ba)(),f._crypto_auth_hmacsha512256_keybytes=()=>(f._crypto_auth_hmacsha512256_keybytes=j.Ca)(),f._crypto_auth_hmacsha512256_statebytes=()=>(f._crypto_auth_hmacsha512256_statebytes=j.Da)(),f._crypto_auth_hmacsha512256_keygen=L=>(f._crypto_auth_hmacsha512256_keygen=j.Ea)(L),f._crypto_auth_hmacsha512256_init=(L,X,eA)=>(f._crypto_auth_hmacsha512256_init=j.Fa)(L,X,eA),f._crypto_auth_hmacsha512256_update=(L,X,eA,E)=>(f._crypto_auth_hmacsha512256_update=j.Ga)(L,X,eA,E),f._crypto_auth_hmacsha512256_final=(L,X)=>(f._crypto_auth_hmacsha512256_final=j.Ha)(L,X),f._crypto_auth_hmacsha512256=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha512256=j.Ia)(L,X,eA,E,bA),f._crypto_auth_hmacsha512256_verify=(L,X,eA,E,bA)=>(f._crypto_auth_hmacsha512256_verify=j.Ja)(L,X,eA,E,bA),f._crypto_box_seedbytes=()=>(f._crypto_box_seedbytes=j.Ka)(),f._crypto_box_publickeybytes=()=>(f._crypto_box_publickeybytes=j.La)(),f._crypto_box_secretkeybytes=()=>(f._crypto_box_secretkeybytes=j.Ma)(),f._crypto_box_beforenmbytes=()=>(f._crypto_box_beforenmbytes=j.Na)(),f._crypto_box_noncebytes=()=>(f._crypto_box_noncebytes=j.Oa)(),f._crypto_box_zerobytes=()=>(f._crypto_box_zerobytes=j.Pa)(),f._crypto_box_boxzerobytes=()=>(f._crypto_box_boxzerobytes=j.Qa)(),f._crypto_box_macbytes=()=>(f._crypto_box_macbytes=j.Ra)(),f._crypto_box_messagebytes_max=()=>(f._crypto_box_messagebytes_max=j.Sa)(),f._crypto_box_primitive=()=>(f._crypto_box_primitive=j.Ta)(),f._crypto_box_seed_keypair=(L,X,eA)=>(f._crypto_box_seed_keypair=j.Ua)(L,X,eA),f._crypto_box_keypair=(L,X)=>(f._crypto_box_keypair=j.Va)(L,X),f._crypto_box_beforenm=(L,X,eA)=>(f._crypto_box_beforenm=j.Wa)(L,X,eA),f._crypto_box_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_afternm=j.Xa)(L,X,eA,E,bA,UA),f._crypto_box_open_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_open_afternm=j.Ya)(L,X,eA,E,bA,UA),f._crypto_box=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box=j.Za)(L,X,eA,E,bA,UA,r0),f._crypto_box_open=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_open=j._a)(L,X,eA,E,bA,UA,r0),f._crypto_box_detached_afternm=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_detached_afternm=j.$a)(L,X,eA,E,bA,UA,r0),f._crypto_box_detached=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_box_detached=j.ab)(L,X,eA,E,bA,UA,r0,S0),f._crypto_box_easy_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_easy_afternm=j.bb)(L,X,eA,E,bA,UA),f._crypto_box_easy=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_easy=j.cb)(L,X,eA,E,bA,UA,r0),f._crypto_box_open_detached_afternm=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_open_detached_afternm=j.db)(L,X,eA,E,bA,UA,r0),f._crypto_box_open_detached=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_box_open_detached=j.eb)(L,X,eA,E,bA,UA,r0,S0),f._crypto_box_open_easy_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_open_easy_afternm=j.fb)(L,X,eA,E,bA,UA),f._crypto_box_open_easy=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_open_easy=j.gb)(L,X,eA,E,bA,UA,r0),f._crypto_box_seal=(L,X,eA,E,bA)=>(f._crypto_box_seal=j.hb)(L,X,eA,E,bA),f._crypto_box_seal_open=(L,X,eA,E,bA,UA)=>(f._crypto_box_seal_open=j.ib)(L,X,eA,E,bA,UA),f._crypto_box_sealbytes=()=>(f._crypto_box_sealbytes=j.jb)(),f._crypto_box_curve25519xsalsa20poly1305_seed_keypair=(L,X,eA)=>(f._crypto_box_curve25519xsalsa20poly1305_seed_keypair=j.kb)(L,X,eA),f._crypto_box_curve25519xsalsa20poly1305_keypair=(L,X)=>(f._crypto_box_curve25519xsalsa20poly1305_keypair=j.lb)(L,X),f._crypto_box_curve25519xsalsa20poly1305_beforenm=(L,X,eA)=>(f._crypto_box_curve25519xsalsa20poly1305_beforenm=j.mb)(L,X,eA),f._crypto_box_curve25519xsalsa20poly1305_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_curve25519xsalsa20poly1305_afternm=j.nb)(L,X,eA,E,bA,UA),f._crypto_box_curve25519xsalsa20poly1305_open_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_curve25519xsalsa20poly1305_open_afternm=j.ob)(L,X,eA,E,bA,UA),f._crypto_box_curve25519xsalsa20poly1305=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xsalsa20poly1305=j.pb)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xsalsa20poly1305_open=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xsalsa20poly1305_open=j.qb)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xsalsa20poly1305_seedbytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_seedbytes=j.rb)(),f._crypto_box_curve25519xsalsa20poly1305_publickeybytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_publickeybytes=j.sb)(),f._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=j.tb)(),f._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=j.ub)(),f._crypto_box_curve25519xsalsa20poly1305_noncebytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_noncebytes=j.vb)(),f._crypto_box_curve25519xsalsa20poly1305_zerobytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_zerobytes=j.wb)(),f._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=j.xb)(),f._crypto_box_curve25519xsalsa20poly1305_macbytes=()=>(f._crypto_box_curve25519xsalsa20poly1305_macbytes=j.yb)(),f._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=()=>(f._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=j.zb)(),f._crypto_core_hchacha20=(L,X,eA,E)=>(f._crypto_core_hchacha20=j.Ab)(L,X,eA,E),f._crypto_core_hchacha20_outputbytes=()=>(f._crypto_core_hchacha20_outputbytes=j.Bb)(),f._crypto_core_hchacha20_inputbytes=()=>(f._crypto_core_hchacha20_inputbytes=j.Cb)(),f._crypto_core_hchacha20_keybytes=()=>(f._crypto_core_hchacha20_keybytes=j.Db)(),f._crypto_core_hchacha20_constbytes=()=>(f._crypto_core_hchacha20_constbytes=j.Eb)(),f._crypto_core_hsalsa20=(L,X,eA,E)=>(f._crypto_core_hsalsa20=j.Fb)(L,X,eA,E),f._crypto_core_hsalsa20_outputbytes=()=>(f._crypto_core_hsalsa20_outputbytes=j.Gb)(),f._crypto_core_hsalsa20_inputbytes=()=>(f._crypto_core_hsalsa20_inputbytes=j.Hb)(),f._crypto_core_hsalsa20_keybytes=()=>(f._crypto_core_hsalsa20_keybytes=j.Ib)(),f._crypto_core_hsalsa20_constbytes=()=>(f._crypto_core_hsalsa20_constbytes=j.Jb)(),f._crypto_core_salsa20=(L,X,eA,E)=>(f._crypto_core_salsa20=j.Kb)(L,X,eA,E),f._crypto_core_salsa20_outputbytes=()=>(f._crypto_core_salsa20_outputbytes=j.Lb)(),f._crypto_core_salsa20_inputbytes=()=>(f._crypto_core_salsa20_inputbytes=j.Mb)(),f._crypto_core_salsa20_keybytes=()=>(f._crypto_core_salsa20_keybytes=j.Nb)(),f._crypto_core_salsa20_constbytes=()=>(f._crypto_core_salsa20_constbytes=j.Ob)(),f._crypto_core_salsa2012=(L,X,eA,E)=>(f._crypto_core_salsa2012=j.Pb)(L,X,eA,E),f._crypto_core_salsa2012_outputbytes=()=>(f._crypto_core_salsa2012_outputbytes=j.Qb)(),f._crypto_core_salsa2012_inputbytes=()=>(f._crypto_core_salsa2012_inputbytes=j.Rb)(),f._crypto_core_salsa2012_keybytes=()=>(f._crypto_core_salsa2012_keybytes=j.Sb)(),f._crypto_core_salsa2012_constbytes=()=>(f._crypto_core_salsa2012_constbytes=j.Tb)(),f._crypto_core_salsa208=(L,X,eA,E)=>(f._crypto_core_salsa208=j.Ub)(L,X,eA,E),f._crypto_core_salsa208_outputbytes=()=>(f._crypto_core_salsa208_outputbytes=j.Vb)(),f._crypto_core_salsa208_inputbytes=()=>(f._crypto_core_salsa208_inputbytes=j.Wb)(),f._crypto_core_salsa208_keybytes=()=>(f._crypto_core_salsa208_keybytes=j.Xb)(),f._crypto_core_salsa208_constbytes=()=>(f._crypto_core_salsa208_constbytes=j.Yb)(),f._crypto_generichash_bytes_min=()=>(f._crypto_generichash_bytes_min=j.Zb)(),f._crypto_generichash_bytes_max=()=>(f._crypto_generichash_bytes_max=j._b)(),f._crypto_generichash_bytes=()=>(f._crypto_generichash_bytes=j.$b)(),f._crypto_generichash_keybytes_min=()=>(f._crypto_generichash_keybytes_min=j.ac)(),f._crypto_generichash_keybytes_max=()=>(f._crypto_generichash_keybytes_max=j.bc)(),f._crypto_generichash_keybytes=()=>(f._crypto_generichash_keybytes=j.cc)(),f._crypto_generichash_primitive=()=>(f._crypto_generichash_primitive=j.dc)(),f._crypto_generichash_statebytes=()=>(f._crypto_generichash_statebytes=j.ec)(),f._crypto_generichash=(L,X,eA,E,bA,UA,r0)=>(f._crypto_generichash=j.fc)(L,X,eA,E,bA,UA,r0),f._crypto_generichash_init=(L,X,eA,E)=>(f._crypto_generichash_init=j.gc)(L,X,eA,E),f._crypto_generichash_update=(L,X,eA,E)=>(f._crypto_generichash_update=j.hc)(L,X,eA,E),f._crypto_generichash_final=(L,X,eA)=>(f._crypto_generichash_final=j.ic)(L,X,eA),f._crypto_generichash_keygen=L=>(f._crypto_generichash_keygen=j.jc)(L),f._crypto_generichash_blake2b_bytes_min=()=>(f._crypto_generichash_blake2b_bytes_min=j.kc)(),f._crypto_generichash_blake2b_bytes_max=()=>(f._crypto_generichash_blake2b_bytes_max=j.lc)(),f._crypto_generichash_blake2b_bytes=()=>(f._crypto_generichash_blake2b_bytes=j.mc)(),f._crypto_generichash_blake2b_keybytes_min=()=>(f._crypto_generichash_blake2b_keybytes_min=j.nc)(),f._crypto_generichash_blake2b_keybytes_max=()=>(f._crypto_generichash_blake2b_keybytes_max=j.oc)(),f._crypto_generichash_blake2b_keybytes=()=>(f._crypto_generichash_blake2b_keybytes=j.pc)(),f._crypto_generichash_blake2b_saltbytes=()=>(f._crypto_generichash_blake2b_saltbytes=j.qc)(),f._crypto_generichash_blake2b_personalbytes=()=>(f._crypto_generichash_blake2b_personalbytes=j.rc)(),f._crypto_generichash_blake2b_statebytes=()=>(f._crypto_generichash_blake2b_statebytes=j.sc)(),f._crypto_generichash_blake2b_keygen=L=>(f._crypto_generichash_blake2b_keygen=j.tc)(L),f._crypto_generichash_blake2b=(L,X,eA,E,bA,UA,r0)=>(f._crypto_generichash_blake2b=j.uc)(L,X,eA,E,bA,UA,r0),f._crypto_generichash_blake2b_salt_personal=(L,X,eA,E,bA,UA,r0,S0,v0)=>(f._crypto_generichash_blake2b_salt_personal=j.vc)(L,X,eA,E,bA,UA,r0,S0,v0),f._crypto_generichash_blake2b_init=(L,X,eA,E)=>(f._crypto_generichash_blake2b_init=j.wc)(L,X,eA,E),f._crypto_generichash_blake2b_init_salt_personal=(L,X,eA,E,bA,UA)=>(f._crypto_generichash_blake2b_init_salt_personal=j.xc)(L,X,eA,E,bA,UA),f._crypto_generichash_blake2b_update=(L,X,eA,E)=>(f._crypto_generichash_blake2b_update=j.yc)(L,X,eA,E),f._crypto_generichash_blake2b_final=(L,X,eA)=>(f._crypto_generichash_blake2b_final=j.zc)(L,X,eA),f._crypto_hash_bytes=()=>(f._crypto_hash_bytes=j.Ac)(),f._crypto_hash=(L,X,eA,E)=>(f._crypto_hash=j.Bc)(L,X,eA,E),f._crypto_hash_primitive=()=>(f._crypto_hash_primitive=j.Cc)(),f._crypto_hash_sha256_bytes=()=>(f._crypto_hash_sha256_bytes=j.Dc)(),f._crypto_hash_sha256_statebytes=()=>(f._crypto_hash_sha256_statebytes=j.Ec)(),f._crypto_hash_sha256_init=L=>(f._crypto_hash_sha256_init=j.Fc)(L),f._crypto_hash_sha256_update=(L,X,eA,E)=>(f._crypto_hash_sha256_update=j.Gc)(L,X,eA,E),f._crypto_hash_sha256_final=(L,X)=>(f._crypto_hash_sha256_final=j.Hc)(L,X),f._crypto_hash_sha256=(L,X,eA,E)=>(f._crypto_hash_sha256=j.Ic)(L,X,eA,E),f._crypto_hash_sha512_bytes=()=>(f._crypto_hash_sha512_bytes=j.Jc)(),f._crypto_hash_sha512_statebytes=()=>(f._crypto_hash_sha512_statebytes=j.Kc)(),f._crypto_hash_sha512_init=L=>(f._crypto_hash_sha512_init=j.Lc)(L),f._crypto_hash_sha512_update=(L,X,eA,E)=>(f._crypto_hash_sha512_update=j.Mc)(L,X,eA,E),f._crypto_hash_sha512_final=(L,X)=>(f._crypto_hash_sha512_final=j.Nc)(L,X),f._crypto_hash_sha512=(L,X,eA,E)=>(f._crypto_hash_sha512=j.Oc)(L,X,eA,E),f._crypto_kdf_blake2b_bytes_min=()=>(f._crypto_kdf_blake2b_bytes_min=j.Pc)(),f._crypto_kdf_blake2b_bytes_max=()=>(f._crypto_kdf_blake2b_bytes_max=j.Qc)(),f._crypto_kdf_blake2b_contextbytes=()=>(f._crypto_kdf_blake2b_contextbytes=j.Rc)(),f._crypto_kdf_blake2b_keybytes=()=>(f._crypto_kdf_blake2b_keybytes=j.Sc)(),f._crypto_kdf_blake2b_derive_from_key=(L,X,eA,E,bA,UA)=>(f._crypto_kdf_blake2b_derive_from_key=j.Tc)(L,X,eA,E,bA,UA),f._crypto_kdf_primitive=()=>(f._crypto_kdf_primitive=j.Uc)(),f._crypto_kdf_bytes_min=()=>(f._crypto_kdf_bytes_min=j.Vc)(),f._crypto_kdf_bytes_max=()=>(f._crypto_kdf_bytes_max=j.Wc)(),f._crypto_kdf_contextbytes=()=>(f._crypto_kdf_contextbytes=j.Xc)(),f._crypto_kdf_keybytes=()=>(f._crypto_kdf_keybytes=j.Yc)(),f._crypto_kdf_derive_from_key=(L,X,eA,E,bA,UA)=>(f._crypto_kdf_derive_from_key=j.Zc)(L,X,eA,E,bA,UA),f._crypto_kdf_keygen=L=>(f._crypto_kdf_keygen=j._c)(L),f._crypto_kdf_hkdf_sha256_extract_init=(L,X,eA)=>(f._crypto_kdf_hkdf_sha256_extract_init=j.$c)(L,X,eA),f._crypto_kdf_hkdf_sha256_extract_update=(L,X,eA)=>(f._crypto_kdf_hkdf_sha256_extract_update=j.ad)(L,X,eA),f._crypto_kdf_hkdf_sha256_extract_final=(L,X)=>(f._crypto_kdf_hkdf_sha256_extract_final=j.bd)(L,X),f._crypto_kdf_hkdf_sha256_extract=(L,X,eA,E,bA)=>(f._crypto_kdf_hkdf_sha256_extract=j.cd)(L,X,eA,E,bA),f._crypto_kdf_hkdf_sha256_keygen=L=>(f._crypto_kdf_hkdf_sha256_keygen=j.dd)(L),f._crypto_kdf_hkdf_sha256_expand=(L,X,eA,E,bA)=>(f._crypto_kdf_hkdf_sha256_expand=j.ed)(L,X,eA,E,bA),f._crypto_kdf_hkdf_sha256_keybytes=()=>(f._crypto_kdf_hkdf_sha256_keybytes=j.fd)(),f._crypto_kdf_hkdf_sha256_bytes_min=()=>(f._crypto_kdf_hkdf_sha256_bytes_min=j.gd)(),f._crypto_kdf_hkdf_sha256_bytes_max=()=>(f._crypto_kdf_hkdf_sha256_bytes_max=j.hd)(),f._crypto_kdf_hkdf_sha256_statebytes=()=>(f._crypto_kdf_hkdf_sha256_statebytes=j.id)(),f._crypto_kdf_hkdf_sha512_extract_init=(L,X,eA)=>(f._crypto_kdf_hkdf_sha512_extract_init=j.jd)(L,X,eA),f._crypto_kdf_hkdf_sha512_extract_update=(L,X,eA)=>(f._crypto_kdf_hkdf_sha512_extract_update=j.kd)(L,X,eA),f._crypto_kdf_hkdf_sha512_extract_final=(L,X)=>(f._crypto_kdf_hkdf_sha512_extract_final=j.ld)(L,X),f._crypto_kdf_hkdf_sha512_extract=(L,X,eA,E,bA)=>(f._crypto_kdf_hkdf_sha512_extract=j.md)(L,X,eA,E,bA),f._crypto_kdf_hkdf_sha512_keygen=L=>(f._crypto_kdf_hkdf_sha512_keygen=j.nd)(L),f._crypto_kdf_hkdf_sha512_expand=(L,X,eA,E,bA)=>(f._crypto_kdf_hkdf_sha512_expand=j.od)(L,X,eA,E,bA),f._crypto_kdf_hkdf_sha512_keybytes=()=>(f._crypto_kdf_hkdf_sha512_keybytes=j.pd)(),f._crypto_kdf_hkdf_sha512_bytes_min=()=>(f._crypto_kdf_hkdf_sha512_bytes_min=j.qd)(),f._crypto_kdf_hkdf_sha512_bytes_max=()=>(f._crypto_kdf_hkdf_sha512_bytes_max=j.rd)(),f._crypto_kdf_hkdf_sha512_statebytes=()=>(f._crypto_kdf_hkdf_sha512_statebytes=j.sd)(),f._crypto_kx_seed_keypair=(L,X,eA)=>(f._crypto_kx_seed_keypair=j.td)(L,X,eA),f._crypto_kx_keypair=(L,X)=>(f._crypto_kx_keypair=j.ud)(L,X),f._crypto_kx_client_session_keys=(L,X,eA,E,bA)=>(f._crypto_kx_client_session_keys=j.vd)(L,X,eA,E,bA),f._crypto_kx_server_session_keys=(L,X,eA,E,bA)=>(f._crypto_kx_server_session_keys=j.wd)(L,X,eA,E,bA),f._crypto_kx_publickeybytes=()=>(f._crypto_kx_publickeybytes=j.xd)(),f._crypto_kx_secretkeybytes=()=>(f._crypto_kx_secretkeybytes=j.yd)(),f._crypto_kx_seedbytes=()=>(f._crypto_kx_seedbytes=j.zd)(),f._crypto_kx_sessionkeybytes=()=>(f._crypto_kx_sessionkeybytes=j.Ad)(),f._crypto_kx_primitive=()=>(f._crypto_kx_primitive=j.Bd)(),f._crypto_onetimeauth_statebytes=()=>(f._crypto_onetimeauth_statebytes=j.Cd)(),f._crypto_onetimeauth_bytes=()=>(f._crypto_onetimeauth_bytes=j.Dd)(),f._crypto_onetimeauth_keybytes=()=>(f._crypto_onetimeauth_keybytes=j.Ed)(),f._crypto_onetimeauth=(L,X,eA,E,bA)=>(f._crypto_onetimeauth=j.Fd)(L,X,eA,E,bA),f._crypto_onetimeauth_verify=(L,X,eA,E,bA)=>(f._crypto_onetimeauth_verify=j.Gd)(L,X,eA,E,bA),f._crypto_onetimeauth_init=(L,X)=>(f._crypto_onetimeauth_init=j.Hd)(L,X),f._crypto_onetimeauth_update=(L,X,eA,E)=>(f._crypto_onetimeauth_update=j.Id)(L,X,eA,E),f._crypto_onetimeauth_final=(L,X)=>(f._crypto_onetimeauth_final=j.Jd)(L,X),f._crypto_onetimeauth_primitive=()=>(f._crypto_onetimeauth_primitive=j.Kd)(),f._crypto_onetimeauth_keygen=L=>(f._crypto_onetimeauth_keygen=j.Ld)(L),f._crypto_onetimeauth_poly1305=(L,X,eA,E,bA)=>(f._crypto_onetimeauth_poly1305=j.Md)(L,X,eA,E,bA),f._crypto_onetimeauth_poly1305_verify=(L,X,eA,E,bA)=>(f._crypto_onetimeauth_poly1305_verify=j.Nd)(L,X,eA,E,bA),f._crypto_onetimeauth_poly1305_init=(L,X)=>(f._crypto_onetimeauth_poly1305_init=j.Od)(L,X),f._crypto_onetimeauth_poly1305_update=(L,X,eA,E)=>(f._crypto_onetimeauth_poly1305_update=j.Pd)(L,X,eA,E),f._crypto_onetimeauth_poly1305_final=(L,X)=>(f._crypto_onetimeauth_poly1305_final=j.Qd)(L,X),f._crypto_onetimeauth_poly1305_bytes=()=>(f._crypto_onetimeauth_poly1305_bytes=j.Rd)(),f._crypto_onetimeauth_poly1305_keybytes=()=>(f._crypto_onetimeauth_poly1305_keybytes=j.Sd)(),f._crypto_onetimeauth_poly1305_statebytes=()=>(f._crypto_onetimeauth_poly1305_statebytes=j.Td)(),f._crypto_onetimeauth_poly1305_keygen=L=>(f._crypto_onetimeauth_poly1305_keygen=j.Ud)(L),f._crypto_pwhash_argon2i_alg_argon2i13=()=>(f._crypto_pwhash_argon2i_alg_argon2i13=j.Vd)(),f._crypto_pwhash_argon2i_bytes_min=()=>(f._crypto_pwhash_argon2i_bytes_min=j.Wd)(),f._crypto_pwhash_argon2i_bytes_max=()=>(f._crypto_pwhash_argon2i_bytes_max=j.Xd)(),f._crypto_pwhash_argon2i_passwd_min=()=>(f._crypto_pwhash_argon2i_passwd_min=j.Yd)(),f._crypto_pwhash_argon2i_passwd_max=()=>(f._crypto_pwhash_argon2i_passwd_max=j.Zd)(),f._crypto_pwhash_argon2i_saltbytes=()=>(f._crypto_pwhash_argon2i_saltbytes=j._d)(),f._crypto_pwhash_argon2i_strbytes=()=>(f._crypto_pwhash_argon2i_strbytes=j.$d)(),f._crypto_pwhash_argon2i_strprefix=()=>(f._crypto_pwhash_argon2i_strprefix=j.ae)(),f._crypto_pwhash_argon2i_opslimit_min=()=>(f._crypto_pwhash_argon2i_opslimit_min=j.be)(),f._crypto_pwhash_argon2i_opslimit_max=()=>(f._crypto_pwhash_argon2i_opslimit_max=j.ce)(),f._crypto_pwhash_argon2i_memlimit_min=()=>(f._crypto_pwhash_argon2i_memlimit_min=j.de)(),f._crypto_pwhash_argon2i_memlimit_max=()=>(f._crypto_pwhash_argon2i_memlimit_max=j.ee)(),f._crypto_pwhash_argon2i_opslimit_interactive=()=>(f._crypto_pwhash_argon2i_opslimit_interactive=j.fe)(),f._crypto_pwhash_argon2i_memlimit_interactive=()=>(f._crypto_pwhash_argon2i_memlimit_interactive=j.ge)(),f._crypto_pwhash_argon2i_opslimit_moderate=()=>(f._crypto_pwhash_argon2i_opslimit_moderate=j.he)(),f._crypto_pwhash_argon2i_memlimit_moderate=()=>(f._crypto_pwhash_argon2i_memlimit_moderate=j.ie)(),f._crypto_pwhash_argon2i_opslimit_sensitive=()=>(f._crypto_pwhash_argon2i_opslimit_sensitive=j.je)(),f._crypto_pwhash_argon2i_memlimit_sensitive=()=>(f._crypto_pwhash_argon2i_memlimit_sensitive=j.ke)(),f._crypto_pwhash_argon2i=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_pwhash_argon2i=j.le)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_pwhash_argon2i_str=(L,X,eA,E,bA,UA,r0)=>(f._crypto_pwhash_argon2i_str=j.me)(L,X,eA,E,bA,UA,r0),f._crypto_pwhash_argon2i_str_verify=(L,X,eA,E)=>(f._crypto_pwhash_argon2i_str_verify=j.ne)(L,X,eA,E),f._crypto_pwhash_argon2i_str_needs_rehash=(L,X,eA,E)=>(f._crypto_pwhash_argon2i_str_needs_rehash=j.oe)(L,X,eA,E),f._crypto_pwhash_argon2id_str_needs_rehash=(L,X,eA,E)=>(f._crypto_pwhash_argon2id_str_needs_rehash=j.pe)(L,X,eA,E),f._crypto_pwhash_argon2id_alg_argon2id13=()=>(f._crypto_pwhash_argon2id_alg_argon2id13=j.qe)(),f._crypto_pwhash_argon2id_bytes_min=()=>(f._crypto_pwhash_argon2id_bytes_min=j.re)(),f._crypto_pwhash_argon2id_bytes_max=()=>(f._crypto_pwhash_argon2id_bytes_max=j.se)(),f._crypto_pwhash_argon2id_passwd_min=()=>(f._crypto_pwhash_argon2id_passwd_min=j.te)(),f._crypto_pwhash_argon2id_passwd_max=()=>(f._crypto_pwhash_argon2id_passwd_max=j.ue)(),f._crypto_pwhash_argon2id_saltbytes=()=>(f._crypto_pwhash_argon2id_saltbytes=j.ve)(),f._crypto_pwhash_argon2id_strbytes=()=>(f._crypto_pwhash_argon2id_strbytes=j.we)(),f._crypto_pwhash_argon2id_strprefix=()=>(f._crypto_pwhash_argon2id_strprefix=j.xe)(),f._crypto_pwhash_argon2id_opslimit_min=()=>(f._crypto_pwhash_argon2id_opslimit_min=j.ye)(),f._crypto_pwhash_argon2id_opslimit_max=()=>(f._crypto_pwhash_argon2id_opslimit_max=j.ze)(),f._crypto_pwhash_argon2id_memlimit_min=()=>(f._crypto_pwhash_argon2id_memlimit_min=j.Ae)(),f._crypto_pwhash_argon2id_memlimit_max=()=>(f._crypto_pwhash_argon2id_memlimit_max=j.Be)(),f._crypto_pwhash_argon2id_opslimit_interactive=()=>(f._crypto_pwhash_argon2id_opslimit_interactive=j.Ce)(),f._crypto_pwhash_argon2id_memlimit_interactive=()=>(f._crypto_pwhash_argon2id_memlimit_interactive=j.De)(),f._crypto_pwhash_argon2id_opslimit_moderate=()=>(f._crypto_pwhash_argon2id_opslimit_moderate=j.Ee)(),f._crypto_pwhash_argon2id_memlimit_moderate=()=>(f._crypto_pwhash_argon2id_memlimit_moderate=j.Fe)(),f._crypto_pwhash_argon2id_opslimit_sensitive=()=>(f._crypto_pwhash_argon2id_opslimit_sensitive=j.Ge)(),f._crypto_pwhash_argon2id_memlimit_sensitive=()=>(f._crypto_pwhash_argon2id_memlimit_sensitive=j.He)(),f._crypto_pwhash_argon2id=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_pwhash_argon2id=j.Ie)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_pwhash_argon2id_str=(L,X,eA,E,bA,UA,r0)=>(f._crypto_pwhash_argon2id_str=j.Je)(L,X,eA,E,bA,UA,r0),f._crypto_pwhash_argon2id_str_verify=(L,X,eA,E)=>(f._crypto_pwhash_argon2id_str_verify=j.Ke)(L,X,eA,E),f._crypto_pwhash_alg_argon2i13=()=>(f._crypto_pwhash_alg_argon2i13=j.Le)(),f._crypto_pwhash_alg_argon2id13=()=>(f._crypto_pwhash_alg_argon2id13=j.Me)(),f._crypto_pwhash_alg_default=()=>(f._crypto_pwhash_alg_default=j.Ne)(),f._crypto_pwhash_bytes_min=()=>(f._crypto_pwhash_bytes_min=j.Oe)(),f._crypto_pwhash_bytes_max=()=>(f._crypto_pwhash_bytes_max=j.Pe)(),f._crypto_pwhash_passwd_min=()=>(f._crypto_pwhash_passwd_min=j.Qe)(),f._crypto_pwhash_passwd_max=()=>(f._crypto_pwhash_passwd_max=j.Re)(),f._crypto_pwhash_saltbytes=()=>(f._crypto_pwhash_saltbytes=j.Se)(),f._crypto_pwhash_strbytes=()=>(f._crypto_pwhash_strbytes=j.Te)(),f._crypto_pwhash_strprefix=()=>(f._crypto_pwhash_strprefix=j.Ue)(),f._crypto_pwhash_opslimit_min=()=>(f._crypto_pwhash_opslimit_min=j.Ve)(),f._crypto_pwhash_opslimit_max=()=>(f._crypto_pwhash_opslimit_max=j.We)(),f._crypto_pwhash_memlimit_min=()=>(f._crypto_pwhash_memlimit_min=j.Xe)(),f._crypto_pwhash_memlimit_max=()=>(f._crypto_pwhash_memlimit_max=j.Ye)(),f._crypto_pwhash_opslimit_interactive=()=>(f._crypto_pwhash_opslimit_interactive=j.Ze)(),f._crypto_pwhash_memlimit_interactive=()=>(f._crypto_pwhash_memlimit_interactive=j._e)(),f._crypto_pwhash_opslimit_moderate=()=>(f._crypto_pwhash_opslimit_moderate=j.$e)(),f._crypto_pwhash_memlimit_moderate=()=>(f._crypto_pwhash_memlimit_moderate=j.af)(),f._crypto_pwhash_opslimit_sensitive=()=>(f._crypto_pwhash_opslimit_sensitive=j.bf)(),f._crypto_pwhash_memlimit_sensitive=()=>(f._crypto_pwhash_memlimit_sensitive=j.cf)(),f._crypto_pwhash=(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2)=>(f._crypto_pwhash=j.df)(L,X,eA,E,bA,UA,r0,S0,v0,q0,g2),f._crypto_pwhash_str=(L,X,eA,E,bA,UA,r0)=>(f._crypto_pwhash_str=j.ef)(L,X,eA,E,bA,UA,r0),f._crypto_pwhash_str_alg=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_pwhash_str_alg=j.ff)(L,X,eA,E,bA,UA,r0,S0),f._crypto_pwhash_str_verify=(L,X,eA,E)=>(f._crypto_pwhash_str_verify=j.gf)(L,X,eA,E),f._crypto_pwhash_str_needs_rehash=(L,X,eA,E)=>(f._crypto_pwhash_str_needs_rehash=j.hf)(L,X,eA,E),f._crypto_pwhash_primitive=()=>(f._crypto_pwhash_primitive=j.jf)(),f._crypto_scalarmult_primitive=()=>(f._crypto_scalarmult_primitive=j.kf)(),f._crypto_scalarmult_base=(L,X)=>(f._crypto_scalarmult_base=j.lf)(L,X),f._crypto_scalarmult=(L,X,eA)=>(f._crypto_scalarmult=j.mf)(L,X,eA),f._crypto_scalarmult_bytes=()=>(f._crypto_scalarmult_bytes=j.nf)(),f._crypto_scalarmult_scalarbytes=()=>(f._crypto_scalarmult_scalarbytes=j.of)(),f._crypto_scalarmult_curve25519=(L,X,eA)=>(f._crypto_scalarmult_curve25519=j.pf)(L,X,eA),f._crypto_scalarmult_curve25519_base=(L,X)=>(f._crypto_scalarmult_curve25519_base=j.qf)(L,X),f._crypto_scalarmult_curve25519_bytes=()=>(f._crypto_scalarmult_curve25519_bytes=j.rf)(),f._crypto_scalarmult_curve25519_scalarbytes=()=>(f._crypto_scalarmult_curve25519_scalarbytes=j.sf)(),f._crypto_secretbox_keybytes=()=>(f._crypto_secretbox_keybytes=j.tf)(),f._crypto_secretbox_noncebytes=()=>(f._crypto_secretbox_noncebytes=j.uf)(),f._crypto_secretbox_zerobytes=()=>(f._crypto_secretbox_zerobytes=j.vf)(),f._crypto_secretbox_boxzerobytes=()=>(f._crypto_secretbox_boxzerobytes=j.wf)(),f._crypto_secretbox_macbytes=()=>(f._crypto_secretbox_macbytes=j.xf)(),f._crypto_secretbox_messagebytes_max=()=>(f._crypto_secretbox_messagebytes_max=j.yf)(),f._crypto_secretbox_primitive=()=>(f._crypto_secretbox_primitive=j.zf)(),f._crypto_secretbox=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox=j.Af)(L,X,eA,E,bA,UA),f._crypto_secretbox_open=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_open=j.Bf)(L,X,eA,E,bA,UA),f._crypto_secretbox_keygen=L=>(f._crypto_secretbox_keygen=j.Cf)(L),f._crypto_secretbox_detached=(L,X,eA,E,bA,UA,r0)=>(f._crypto_secretbox_detached=j.Df)(L,X,eA,E,bA,UA,r0),f._crypto_secretbox_easy=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_easy=j.Ef)(L,X,eA,E,bA,UA),f._crypto_secretbox_open_detached=(L,X,eA,E,bA,UA,r0)=>(f._crypto_secretbox_open_detached=j.Ff)(L,X,eA,E,bA,UA,r0),f._crypto_secretbox_open_easy=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_open_easy=j.Gf)(L,X,eA,E,bA,UA),f._crypto_secretbox_xsalsa20poly1305=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_xsalsa20poly1305=j.Hf)(L,X,eA,E,bA,UA),f._crypto_secretbox_xsalsa20poly1305_open=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_xsalsa20poly1305_open=j.If)(L,X,eA,E,bA,UA),f._crypto_secretbox_xsalsa20poly1305_keybytes=()=>(f._crypto_secretbox_xsalsa20poly1305_keybytes=j.Jf)(),f._crypto_secretbox_xsalsa20poly1305_noncebytes=()=>(f._crypto_secretbox_xsalsa20poly1305_noncebytes=j.Kf)(),f._crypto_secretbox_xsalsa20poly1305_zerobytes=()=>(f._crypto_secretbox_xsalsa20poly1305_zerobytes=j.Lf)(),f._crypto_secretbox_xsalsa20poly1305_boxzerobytes=()=>(f._crypto_secretbox_xsalsa20poly1305_boxzerobytes=j.Mf)(),f._crypto_secretbox_xsalsa20poly1305_macbytes=()=>(f._crypto_secretbox_xsalsa20poly1305_macbytes=j.Nf)(),f._crypto_secretbox_xsalsa20poly1305_messagebytes_max=()=>(f._crypto_secretbox_xsalsa20poly1305_messagebytes_max=j.Of)(),f._crypto_secretbox_xsalsa20poly1305_keygen=L=>(f._crypto_secretbox_xsalsa20poly1305_keygen=j.Pf)(L),f._crypto_secretstream_xchacha20poly1305_keygen=L=>(f._crypto_secretstream_xchacha20poly1305_keygen=j.Qf)(L),f._crypto_secretstream_xchacha20poly1305_init_push=(L,X,eA)=>(f._crypto_secretstream_xchacha20poly1305_init_push=j.Rf)(L,X,eA),f._crypto_secretstream_xchacha20poly1305_init_pull=(L,X,eA)=>(f._crypto_secretstream_xchacha20poly1305_init_pull=j.Sf)(L,X,eA),f._crypto_secretstream_xchacha20poly1305_rekey=L=>(f._crypto_secretstream_xchacha20poly1305_rekey=j.Tf)(L),f._crypto_secretstream_xchacha20poly1305_push=(L,X,eA,E,bA,UA,r0,S0,v0,q0)=>(f._crypto_secretstream_xchacha20poly1305_push=j.Uf)(L,X,eA,E,bA,UA,r0,S0,v0,q0),f._crypto_secretstream_xchacha20poly1305_pull=(L,X,eA,E,bA,UA,r0,S0,v0,q0)=>(f._crypto_secretstream_xchacha20poly1305_pull=j.Vf)(L,X,eA,E,bA,UA,r0,S0,v0,q0),f._crypto_secretstream_xchacha20poly1305_statebytes=()=>(f._crypto_secretstream_xchacha20poly1305_statebytes=j.Wf)(),f._crypto_secretstream_xchacha20poly1305_abytes=()=>(f._crypto_secretstream_xchacha20poly1305_abytes=j.Xf)(),f._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(f._crypto_secretstream_xchacha20poly1305_headerbytes=j.Yf)(),f._crypto_secretstream_xchacha20poly1305_keybytes=()=>(f._crypto_secretstream_xchacha20poly1305_keybytes=j.Zf)(),f._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(f._crypto_secretstream_xchacha20poly1305_messagebytes_max=j._f)(),f._crypto_secretstream_xchacha20poly1305_tag_message=()=>(f._crypto_secretstream_xchacha20poly1305_tag_message=j.$f)(),f._crypto_secretstream_xchacha20poly1305_tag_push=()=>(f._crypto_secretstream_xchacha20poly1305_tag_push=j.ag)(),f._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(f._crypto_secretstream_xchacha20poly1305_tag_rekey=j.bg)(),f._crypto_secretstream_xchacha20poly1305_tag_final=()=>(f._crypto_secretstream_xchacha20poly1305_tag_final=j.cg)(),f._crypto_shorthash_bytes=()=>(f._crypto_shorthash_bytes=j.dg)(),f._crypto_shorthash_keybytes=()=>(f._crypto_shorthash_keybytes=j.eg)(),f._crypto_shorthash_primitive=()=>(f._crypto_shorthash_primitive=j.fg)(),f._crypto_shorthash=(L,X,eA,E,bA)=>(f._crypto_shorthash=j.gg)(L,X,eA,E,bA),f._crypto_shorthash_keygen=L=>(f._crypto_shorthash_keygen=j.hg)(L),f._crypto_shorthash_siphash24_bytes=()=>(f._crypto_shorthash_siphash24_bytes=j.ig)(),f._crypto_shorthash_siphash24_keybytes=()=>(f._crypto_shorthash_siphash24_keybytes=j.jg)(),f._crypto_shorthash_siphash24=(L,X,eA,E,bA)=>(f._crypto_shorthash_siphash24=j.kg)(L,X,eA,E,bA),f._crypto_sign_statebytes=()=>(f._crypto_sign_statebytes=j.lg)(),f._crypto_sign_bytes=()=>(f._crypto_sign_bytes=j.mg)(),f._crypto_sign_seedbytes=()=>(f._crypto_sign_seedbytes=j.ng)(),f._crypto_sign_publickeybytes=()=>(f._crypto_sign_publickeybytes=j.og)(),f._crypto_sign_secretkeybytes=()=>(f._crypto_sign_secretkeybytes=j.pg)(),f._crypto_sign_messagebytes_max=()=>(f._crypto_sign_messagebytes_max=j.qg)(),f._crypto_sign_primitive=()=>(f._crypto_sign_primitive=j.rg)(),f._crypto_sign_seed_keypair=(L,X,eA)=>(f._crypto_sign_seed_keypair=j.sg)(L,X,eA),f._crypto_sign_keypair=(L,X)=>(f._crypto_sign_keypair=j.tg)(L,X),f._crypto_sign=(L,X,eA,E,bA,UA)=>(f._crypto_sign=j.ug)(L,X,eA,E,bA,UA),f._crypto_sign_open=(L,X,eA,E,bA,UA)=>(f._crypto_sign_open=j.vg)(L,X,eA,E,bA,UA),f._crypto_sign_detached=(L,X,eA,E,bA,UA)=>(f._crypto_sign_detached=j.wg)(L,X,eA,E,bA,UA),f._crypto_sign_verify_detached=(L,X,eA,E,bA)=>(f._crypto_sign_verify_detached=j.xg)(L,X,eA,E,bA),f._crypto_sign_init=L=>(f._crypto_sign_init=j.yg)(L),f._crypto_sign_update=(L,X,eA,E)=>(f._crypto_sign_update=j.zg)(L,X,eA,E),f._crypto_sign_final_create=(L,X,eA,E)=>(f._crypto_sign_final_create=j.Ag)(L,X,eA,E),f._crypto_sign_final_verify=(L,X,eA)=>(f._crypto_sign_final_verify=j.Bg)(L,X,eA),f._crypto_sign_ed25519ph_statebytes=()=>(f._crypto_sign_ed25519ph_statebytes=j.Cg)(),f._crypto_sign_ed25519_bytes=()=>(f._crypto_sign_ed25519_bytes=j.Dg)(),f._crypto_sign_ed25519_seedbytes=()=>(f._crypto_sign_ed25519_seedbytes=j.Eg)(),f._crypto_sign_ed25519_publickeybytes=()=>(f._crypto_sign_ed25519_publickeybytes=j.Fg)(),f._crypto_sign_ed25519_secretkeybytes=()=>(f._crypto_sign_ed25519_secretkeybytes=j.Gg)(),f._crypto_sign_ed25519_messagebytes_max=()=>(f._crypto_sign_ed25519_messagebytes_max=j.Hg)(),f._crypto_sign_ed25519_sk_to_seed=(L,X)=>(f._crypto_sign_ed25519_sk_to_seed=j.Ig)(L,X),f._crypto_sign_ed25519_sk_to_pk=(L,X)=>(f._crypto_sign_ed25519_sk_to_pk=j.Jg)(L,X),f._crypto_sign_ed25519ph_init=L=>(f._crypto_sign_ed25519ph_init=j.Kg)(L),f._crypto_sign_ed25519ph_update=(L,X,eA,E)=>(f._crypto_sign_ed25519ph_update=j.Lg)(L,X,eA,E),f._crypto_sign_ed25519ph_final_create=(L,X,eA,E)=>(f._crypto_sign_ed25519ph_final_create=j.Mg)(L,X,eA,E),f._crypto_sign_ed25519ph_final_verify=(L,X,eA)=>(f._crypto_sign_ed25519ph_final_verify=j.Ng)(L,X,eA),f._crypto_sign_ed25519_seed_keypair=(L,X,eA)=>(f._crypto_sign_ed25519_seed_keypair=j.Og)(L,X,eA),f._crypto_sign_ed25519_keypair=(L,X)=>(f._crypto_sign_ed25519_keypair=j.Pg)(L,X),f._crypto_sign_ed25519_pk_to_curve25519=(L,X)=>(f._crypto_sign_ed25519_pk_to_curve25519=j.Qg)(L,X),f._crypto_sign_ed25519_sk_to_curve25519=(L,X)=>(f._crypto_sign_ed25519_sk_to_curve25519=j.Rg)(L,X),f._crypto_sign_ed25519_verify_detached=(L,X,eA,E,bA)=>(f._crypto_sign_ed25519_verify_detached=j.Sg)(L,X,eA,E,bA),f._crypto_sign_ed25519_open=(L,X,eA,E,bA,UA)=>(f._crypto_sign_ed25519_open=j.Tg)(L,X,eA,E,bA,UA),f._crypto_sign_ed25519_detached=(L,X,eA,E,bA,UA)=>(f._crypto_sign_ed25519_detached=j.Ug)(L,X,eA,E,bA,UA),f._crypto_sign_ed25519=(L,X,eA,E,bA,UA)=>(f._crypto_sign_ed25519=j.Vg)(L,X,eA,E,bA,UA),f._crypto_stream_chacha20_keybytes=()=>(f._crypto_stream_chacha20_keybytes=j.Wg)(),f._crypto_stream_chacha20_noncebytes=()=>(f._crypto_stream_chacha20_noncebytes=j.Xg)(),f._crypto_stream_chacha20_messagebytes_max=()=>(f._crypto_stream_chacha20_messagebytes_max=j.Yg)(),f._crypto_stream_chacha20_ietf_keybytes=()=>(f._crypto_stream_chacha20_ietf_keybytes=j.Zg)(),f._crypto_stream_chacha20_ietf_noncebytes=()=>(f._crypto_stream_chacha20_ietf_noncebytes=j._g)(),f._crypto_stream_chacha20_ietf_messagebytes_max=()=>(f._crypto_stream_chacha20_ietf_messagebytes_max=j.$g)(),f._crypto_stream_chacha20=(L,X,eA,E,bA)=>(f._crypto_stream_chacha20=j.ah)(L,X,eA,E,bA),f._crypto_stream_chacha20_xor_ic=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_stream_chacha20_xor_ic=j.bh)(L,X,eA,E,bA,UA,r0,S0),f._crypto_stream_chacha20_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_chacha20_xor=j.ch)(L,X,eA,E,bA,UA),f._crypto_stream_chacha20_ietf=(L,X,eA,E,bA)=>(f._crypto_stream_chacha20_ietf=j.dh)(L,X,eA,E,bA),f._crypto_stream_chacha20_ietf_xor_ic=(L,X,eA,E,bA,UA,r0)=>(f._crypto_stream_chacha20_ietf_xor_ic=j.eh)(L,X,eA,E,bA,UA,r0),f._crypto_stream_chacha20_ietf_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_chacha20_ietf_xor=j.fh)(L,X,eA,E,bA,UA),f._crypto_stream_chacha20_ietf_keygen=L=>(f._crypto_stream_chacha20_ietf_keygen=j.gh)(L),f._crypto_stream_chacha20_keygen=L=>(f._crypto_stream_chacha20_keygen=j.hh)(L),f._crypto_stream_keybytes=()=>(f._crypto_stream_keybytes=j.ih)(),f._crypto_stream_noncebytes=()=>(f._crypto_stream_noncebytes=j.jh)(),f._crypto_stream_messagebytes_max=()=>(f._crypto_stream_messagebytes_max=j.kh)(),f._crypto_stream_primitive=()=>(f._crypto_stream_primitive=j.lh)(),f._crypto_stream=(L,X,eA,E,bA)=>(f._crypto_stream=j.mh)(L,X,eA,E,bA),f._crypto_stream_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_xor=j.nh)(L,X,eA,E,bA,UA),f._crypto_stream_keygen=L=>(f._crypto_stream_keygen=j.oh)(L),f._crypto_stream_salsa20_keybytes=()=>(f._crypto_stream_salsa20_keybytes=j.ph)(),f._crypto_stream_salsa20_noncebytes=()=>(f._crypto_stream_salsa20_noncebytes=j.qh)(),f._crypto_stream_salsa20_messagebytes_max=()=>(f._crypto_stream_salsa20_messagebytes_max=j.rh)(),f._crypto_stream_salsa20=(L,X,eA,E,bA)=>(f._crypto_stream_salsa20=j.sh)(L,X,eA,E,bA),f._crypto_stream_salsa20_xor_ic=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_stream_salsa20_xor_ic=j.th)(L,X,eA,E,bA,UA,r0,S0),f._crypto_stream_salsa20_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_salsa20_xor=j.uh)(L,X,eA,E,bA,UA),f._crypto_stream_salsa20_keygen=L=>(f._crypto_stream_salsa20_keygen=j.vh)(L),f._crypto_stream_xsalsa20=(L,X,eA,E,bA)=>(f._crypto_stream_xsalsa20=j.wh)(L,X,eA,E,bA),f._crypto_stream_xsalsa20_xor_ic=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_stream_xsalsa20_xor_ic=j.xh)(L,X,eA,E,bA,UA,r0,S0),f._crypto_stream_xsalsa20_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_xsalsa20_xor=j.yh)(L,X,eA,E,bA,UA),f._crypto_stream_xsalsa20_keybytes=()=>(f._crypto_stream_xsalsa20_keybytes=j.zh)(),f._crypto_stream_xsalsa20_noncebytes=()=>(f._crypto_stream_xsalsa20_noncebytes=j.Ah)(),f._crypto_stream_xsalsa20_messagebytes_max=()=>(f._crypto_stream_xsalsa20_messagebytes_max=j.Bh)(),f._crypto_stream_xsalsa20_keygen=L=>(f._crypto_stream_xsalsa20_keygen=j.Ch)(L),f._crypto_verify_16_bytes=()=>(f._crypto_verify_16_bytes=j.Dh)(),f._crypto_verify_32_bytes=()=>(f._crypto_verify_32_bytes=j.Eh)(),f._crypto_verify_64_bytes=()=>(f._crypto_verify_64_bytes=j.Fh)(),f._crypto_verify_16=(L,X)=>(f._crypto_verify_16=j.Gh)(L,X),f._crypto_verify_32=(L,X)=>(f._crypto_verify_32=j.Hh)(L,X),f._crypto_verify_64=(L,X)=>(f._crypto_verify_64=j.Ih)(L,X),f._randombytes_implementation_name=()=>(f._randombytes_implementation_name=j.Jh)(),f._randombytes_random=()=>(f._randombytes_random=j.Kh)(),f._randombytes_stir=()=>(f._randombytes_stir=j.Lh)(),f._randombytes_uniform=L=>(f._randombytes_uniform=j.Mh)(L),f._randombytes_buf=(L,X)=>(f._randombytes_buf=j.Nh)(L,X),f._randombytes_buf_deterministic=(L,X,eA)=>(f._randombytes_buf_deterministic=j.Oh)(L,X,eA),f._randombytes_seedbytes=()=>(f._randombytes_seedbytes=j.Ph)(),f._randombytes_close=()=>(f._randombytes_close=j.Qh)(),f._randombytes=(L,X,eA)=>(f._randombytes=j.Rh)(L,X,eA),f._sodium_bin2hex=(L,X,eA,E)=>(f._sodium_bin2hex=j.Sh)(L,X,eA,E),f._sodium_hex2bin=(L,X,eA,E,bA,UA,r0)=>(f._sodium_hex2bin=j.Th)(L,X,eA,E,bA,UA,r0),f._sodium_base64_encoded_len=(L,X)=>(f._sodium_base64_encoded_len=j.Uh)(L,X),f._sodium_bin2base64=(L,X,eA,E,bA)=>(f._sodium_bin2base64=j.Vh)(L,X,eA,E,bA),f._sodium_base642bin=(L,X,eA,E,bA,UA,r0,S0)=>(f._sodium_base642bin=j.Wh)(L,X,eA,E,bA,UA,r0,S0),f._sodium_init=()=>(f._sodium_init=j.Xh)(),f._sodium_pad=(L,X,eA,E,bA)=>(f._sodium_pad=j.Yh)(L,X,eA,E,bA),f._sodium_unpad=(L,X,eA,E)=>(f._sodium_unpad=j.Zh)(L,X,eA,E),f._sodium_version_string=()=>(f._sodium_version_string=j._h)(),f._sodium_library_version_major=()=>(f._sodium_library_version_major=j.$h)(),f._sodium_library_version_minor=()=>(f._sodium_library_version_minor=j.ai)(),f._sodium_library_minimal=()=>(f._sodium_library_minimal=j.bi)(),f._crypto_box_curve25519xchacha20poly1305_seed_keypair=(L,X,eA)=>(f._crypto_box_curve25519xchacha20poly1305_seed_keypair=j.ci)(L,X,eA),f._crypto_box_curve25519xchacha20poly1305_keypair=(L,X)=>(f._crypto_box_curve25519xchacha20poly1305_keypair=j.di)(L,X),f._crypto_box_curve25519xchacha20poly1305_beforenm=(L,X,eA)=>(f._crypto_box_curve25519xchacha20poly1305_beforenm=j.ei)(L,X,eA),f._crypto_box_curve25519xchacha20poly1305_detached_afternm=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xchacha20poly1305_detached_afternm=j.fi)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xchacha20poly1305_detached=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_box_curve25519xchacha20poly1305_detached=j.gi)(L,X,eA,E,bA,UA,r0,S0),f._crypto_box_curve25519xchacha20poly1305_easy_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_curve25519xchacha20poly1305_easy_afternm=j.hi)(L,X,eA,E,bA,UA),f._crypto_box_curve25519xchacha20poly1305_easy=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xchacha20poly1305_easy=j.ii)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=j.ji)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xchacha20poly1305_open_detached=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_box_curve25519xchacha20poly1305_open_detached=j.ki)(L,X,eA,E,bA,UA,r0,S0),f._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=(L,X,eA,E,bA,UA)=>(f._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=j.li)(L,X,eA,E,bA,UA),f._crypto_box_curve25519xchacha20poly1305_open_easy=(L,X,eA,E,bA,UA,r0)=>(f._crypto_box_curve25519xchacha20poly1305_open_easy=j.mi)(L,X,eA,E,bA,UA,r0),f._crypto_box_curve25519xchacha20poly1305_seedbytes=()=>(f._crypto_box_curve25519xchacha20poly1305_seedbytes=j.ni)(),f._crypto_box_curve25519xchacha20poly1305_publickeybytes=()=>(f._crypto_box_curve25519xchacha20poly1305_publickeybytes=j.oi)(),f._crypto_box_curve25519xchacha20poly1305_secretkeybytes=()=>(f._crypto_box_curve25519xchacha20poly1305_secretkeybytes=j.pi)(),f._crypto_box_curve25519xchacha20poly1305_beforenmbytes=()=>(f._crypto_box_curve25519xchacha20poly1305_beforenmbytes=j.qi)(),f._crypto_box_curve25519xchacha20poly1305_noncebytes=()=>(f._crypto_box_curve25519xchacha20poly1305_noncebytes=j.ri)(),f._crypto_box_curve25519xchacha20poly1305_macbytes=()=>(f._crypto_box_curve25519xchacha20poly1305_macbytes=j.si)(),f._crypto_box_curve25519xchacha20poly1305_messagebytes_max=()=>(f._crypto_box_curve25519xchacha20poly1305_messagebytes_max=j.ti)(),f._crypto_box_curve25519xchacha20poly1305_seal=(L,X,eA,E,bA)=>(f._crypto_box_curve25519xchacha20poly1305_seal=j.ui)(L,X,eA,E,bA),f._crypto_box_curve25519xchacha20poly1305_seal_open=(L,X,eA,E,bA,UA)=>(f._crypto_box_curve25519xchacha20poly1305_seal_open=j.vi)(L,X,eA,E,bA,UA),f._crypto_box_curve25519xchacha20poly1305_sealbytes=()=>(f._crypto_box_curve25519xchacha20poly1305_sealbytes=j.wi)(),f._crypto_core_ed25519_is_valid_point=L=>(f._crypto_core_ed25519_is_valid_point=j.xi)(L),f._crypto_core_ed25519_add=(L,X,eA)=>(f._crypto_core_ed25519_add=j.yi)(L,X,eA),f._crypto_core_ed25519_sub=(L,X,eA)=>(f._crypto_core_ed25519_sub=j.zi)(L,X,eA),f._crypto_core_ed25519_from_uniform=(L,X)=>(f._crypto_core_ed25519_from_uniform=j.Ai)(L,X),f._crypto_core_ed25519_random=L=>(f._crypto_core_ed25519_random=j.Bi)(L),f._crypto_core_ed25519_scalar_random=L=>(f._crypto_core_ed25519_scalar_random=j.Ci)(L),f._crypto_core_ed25519_scalar_invert=(L,X)=>(f._crypto_core_ed25519_scalar_invert=j.Di)(L,X),f._crypto_core_ed25519_scalar_negate=(L,X)=>(f._crypto_core_ed25519_scalar_negate=j.Ei)(L,X),f._crypto_core_ed25519_scalar_complement=(L,X)=>(f._crypto_core_ed25519_scalar_complement=j.Fi)(L,X),f._crypto_core_ed25519_scalar_add=(L,X,eA)=>(f._crypto_core_ed25519_scalar_add=j.Gi)(L,X,eA),f._crypto_core_ed25519_scalar_reduce=(L,X)=>(f._crypto_core_ed25519_scalar_reduce=j.Hi)(L,X),f._crypto_core_ed25519_scalar_sub=(L,X,eA)=>(f._crypto_core_ed25519_scalar_sub=j.Ii)(L,X,eA),f._crypto_core_ed25519_scalar_mul=(L,X,eA)=>(f._crypto_core_ed25519_scalar_mul=j.Ji)(L,X,eA),f._crypto_core_ed25519_bytes=()=>(f._crypto_core_ed25519_bytes=j.Ki)(),f._crypto_core_ed25519_nonreducedscalarbytes=()=>(f._crypto_core_ed25519_nonreducedscalarbytes=j.Li)(),f._crypto_core_ed25519_uniformbytes=()=>(f._crypto_core_ed25519_uniformbytes=j.Mi)(),f._crypto_core_ed25519_hashbytes=()=>(f._crypto_core_ed25519_hashbytes=j.Ni)(),f._crypto_core_ed25519_scalarbytes=()=>(f._crypto_core_ed25519_scalarbytes=j.Oi)(),f._crypto_core_ristretto255_is_valid_point=L=>(f._crypto_core_ristretto255_is_valid_point=j.Pi)(L),f._crypto_core_ristretto255_add=(L,X,eA)=>(f._crypto_core_ristretto255_add=j.Qi)(L,X,eA),f._crypto_core_ristretto255_sub=(L,X,eA)=>(f._crypto_core_ristretto255_sub=j.Ri)(L,X,eA),f._crypto_core_ristretto255_from_hash=(L,X)=>(f._crypto_core_ristretto255_from_hash=j.Si)(L,X),f._crypto_core_ristretto255_random=L=>(f._crypto_core_ristretto255_random=j.Ti)(L),f._crypto_core_ristretto255_scalar_random=L=>(f._crypto_core_ristretto255_scalar_random=j.Ui)(L),f._crypto_core_ristretto255_scalar_invert=(L,X)=>(f._crypto_core_ristretto255_scalar_invert=j.Vi)(L,X),f._crypto_core_ristretto255_scalar_negate=(L,X)=>(f._crypto_core_ristretto255_scalar_negate=j.Wi)(L,X),f._crypto_core_ristretto255_scalar_complement=(L,X)=>(f._crypto_core_ristretto255_scalar_complement=j.Xi)(L,X),f._crypto_core_ristretto255_scalar_add=(L,X,eA)=>(f._crypto_core_ristretto255_scalar_add=j.Yi)(L,X,eA),f._crypto_core_ristretto255_scalar_sub=(L,X,eA)=>(f._crypto_core_ristretto255_scalar_sub=j.Zi)(L,X,eA),f._crypto_core_ristretto255_scalar_mul=(L,X,eA)=>(f._crypto_core_ristretto255_scalar_mul=j._i)(L,X,eA),f._crypto_core_ristretto255_scalar_reduce=(L,X)=>(f._crypto_core_ristretto255_scalar_reduce=j.$i)(L,X),f._crypto_core_ristretto255_bytes=()=>(f._crypto_core_ristretto255_bytes=j.aj)(),f._crypto_core_ristretto255_nonreducedscalarbytes=()=>(f._crypto_core_ristretto255_nonreducedscalarbytes=j.bj)(),f._crypto_core_ristretto255_hashbytes=()=>(f._crypto_core_ristretto255_hashbytes=j.cj)(),f._crypto_core_ristretto255_scalarbytes=()=>(f._crypto_core_ristretto255_scalarbytes=j.dj)(),f._crypto_pwhash_scryptsalsa208sha256_ll=(L,X,eA,E,bA,UA,r0,S0,v0,q0)=>(f._crypto_pwhash_scryptsalsa208sha256_ll=j.ej)(L,X,eA,E,bA,UA,r0,S0,v0,q0),f._crypto_pwhash_scryptsalsa208sha256_bytes_min=()=>(f._crypto_pwhash_scryptsalsa208sha256_bytes_min=j.fj)(),f._crypto_pwhash_scryptsalsa208sha256_bytes_max=()=>(f._crypto_pwhash_scryptsalsa208sha256_bytes_max=j.gj)(),f._crypto_pwhash_scryptsalsa208sha256_passwd_min=()=>(f._crypto_pwhash_scryptsalsa208sha256_passwd_min=j.hj)(),f._crypto_pwhash_scryptsalsa208sha256_passwd_max=()=>(f._crypto_pwhash_scryptsalsa208sha256_passwd_max=j.ij)(),f._crypto_pwhash_scryptsalsa208sha256_saltbytes=()=>(f._crypto_pwhash_scryptsalsa208sha256_saltbytes=j.jj)(),f._crypto_pwhash_scryptsalsa208sha256_strbytes=()=>(f._crypto_pwhash_scryptsalsa208sha256_strbytes=j.kj)(),f._crypto_pwhash_scryptsalsa208sha256_strprefix=()=>(f._crypto_pwhash_scryptsalsa208sha256_strprefix=j.lj)(),f._crypto_pwhash_scryptsalsa208sha256_opslimit_min=()=>(f._crypto_pwhash_scryptsalsa208sha256_opslimit_min=j.mj)(),f._crypto_pwhash_scryptsalsa208sha256_opslimit_max=()=>(f._crypto_pwhash_scryptsalsa208sha256_opslimit_max=j.nj)(),f._crypto_pwhash_scryptsalsa208sha256_memlimit_min=()=>(f._crypto_pwhash_scryptsalsa208sha256_memlimit_min=j.oj)(),f._crypto_pwhash_scryptsalsa208sha256_memlimit_max=()=>(f._crypto_pwhash_scryptsalsa208sha256_memlimit_max=j.pj)(),f._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=()=>(f._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=j.qj)(),f._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=()=>(f._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=j.rj)(),f._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=()=>(f._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=j.sj)(),f._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=()=>(f._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=j.tj)(),f._crypto_pwhash_scryptsalsa208sha256=(L,X,eA,E,bA,UA,r0,S0,v0,q0)=>(f._crypto_pwhash_scryptsalsa208sha256=j.uj)(L,X,eA,E,bA,UA,r0,S0,v0,q0),f._crypto_pwhash_scryptsalsa208sha256_str=(L,X,eA,E,bA,UA,r0)=>(f._crypto_pwhash_scryptsalsa208sha256_str=j.vj)(L,X,eA,E,bA,UA,r0),f._crypto_pwhash_scryptsalsa208sha256_str_verify=(L,X,eA,E)=>(f._crypto_pwhash_scryptsalsa208sha256_str_verify=j.wj)(L,X,eA,E),f._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=(L,X,eA,E)=>(f._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=j.xj)(L,X,eA,E),f._crypto_scalarmult_ed25519=(L,X,eA)=>(f._crypto_scalarmult_ed25519=j.yj)(L,X,eA),f._crypto_scalarmult_ed25519_noclamp=(L,X,eA)=>(f._crypto_scalarmult_ed25519_noclamp=j.zj)(L,X,eA),f._crypto_scalarmult_ed25519_base=(L,X)=>(f._crypto_scalarmult_ed25519_base=j.Aj)(L,X),f._crypto_scalarmult_ed25519_base_noclamp=(L,X)=>(f._crypto_scalarmult_ed25519_base_noclamp=j.Bj)(L,X),f._crypto_scalarmult_ed25519_bytes=()=>(f._crypto_scalarmult_ed25519_bytes=j.Cj)(),f._crypto_scalarmult_ed25519_scalarbytes=()=>(f._crypto_scalarmult_ed25519_scalarbytes=j.Dj)(),f._crypto_scalarmult_ristretto255=(L,X,eA)=>(f._crypto_scalarmult_ristretto255=j.Ej)(L,X,eA),f._crypto_scalarmult_ristretto255_base=(L,X)=>(f._crypto_scalarmult_ristretto255_base=j.Fj)(L,X),f._crypto_scalarmult_ristretto255_bytes=()=>(f._crypto_scalarmult_ristretto255_bytes=j.Gj)(),f._crypto_scalarmult_ristretto255_scalarbytes=()=>(f._crypto_scalarmult_ristretto255_scalarbytes=j.Hj)(),f._crypto_secretbox_xchacha20poly1305_detached=(L,X,eA,E,bA,UA,r0)=>(f._crypto_secretbox_xchacha20poly1305_detached=j.Ij)(L,X,eA,E,bA,UA,r0),f._crypto_secretbox_xchacha20poly1305_easy=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_xchacha20poly1305_easy=j.Jj)(L,X,eA,E,bA,UA),f._crypto_secretbox_xchacha20poly1305_open_detached=(L,X,eA,E,bA,UA,r0)=>(f._crypto_secretbox_xchacha20poly1305_open_detached=j.Kj)(L,X,eA,E,bA,UA,r0),f._crypto_secretbox_xchacha20poly1305_open_easy=(L,X,eA,E,bA,UA)=>(f._crypto_secretbox_xchacha20poly1305_open_easy=j.Lj)(L,X,eA,E,bA,UA),f._crypto_secretbox_xchacha20poly1305_keybytes=()=>(f._crypto_secretbox_xchacha20poly1305_keybytes=j.Mj)(),f._crypto_secretbox_xchacha20poly1305_noncebytes=()=>(f._crypto_secretbox_xchacha20poly1305_noncebytes=j.Nj)(),f._crypto_secretbox_xchacha20poly1305_macbytes=()=>(f._crypto_secretbox_xchacha20poly1305_macbytes=j.Oj)(),f._crypto_secretbox_xchacha20poly1305_messagebytes_max=()=>(f._crypto_secretbox_xchacha20poly1305_messagebytes_max=j.Pj)(),f._crypto_shorthash_siphashx24_bytes=()=>(f._crypto_shorthash_siphashx24_bytes=j.Qj)(),f._crypto_shorthash_siphashx24_keybytes=()=>(f._crypto_shorthash_siphashx24_keybytes=j.Rj)(),f._crypto_shorthash_siphashx24=(L,X,eA,E,bA)=>(f._crypto_shorthash_siphashx24=j.Sj)(L,X,eA,E,bA),f._crypto_stream_salsa2012=(L,X,eA,E,bA)=>(f._crypto_stream_salsa2012=j.Tj)(L,X,eA,E,bA),f._crypto_stream_salsa2012_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_salsa2012_xor=j.Uj)(L,X,eA,E,bA,UA),f._crypto_stream_salsa2012_keybytes=()=>(f._crypto_stream_salsa2012_keybytes=j.Vj)(),f._crypto_stream_salsa2012_noncebytes=()=>(f._crypto_stream_salsa2012_noncebytes=j.Wj)(),f._crypto_stream_salsa2012_messagebytes_max=()=>(f._crypto_stream_salsa2012_messagebytes_max=j.Xj)(),f._crypto_stream_salsa2012_keygen=L=>(f._crypto_stream_salsa2012_keygen=j.Yj)(L),f._crypto_stream_salsa208=(L,X,eA,E,bA)=>(f._crypto_stream_salsa208=j.Zj)(L,X,eA,E,bA),f._crypto_stream_salsa208_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_salsa208_xor=j._j)(L,X,eA,E,bA,UA),f._crypto_stream_salsa208_keybytes=()=>(f._crypto_stream_salsa208_keybytes=j.$j)(),f._crypto_stream_salsa208_noncebytes=()=>(f._crypto_stream_salsa208_noncebytes=j.ak)(),f._crypto_stream_salsa208_messagebytes_max=()=>(f._crypto_stream_salsa208_messagebytes_max=j.bk)(),f._crypto_stream_salsa208_keygen=L=>(f._crypto_stream_salsa208_keygen=j.ck)(L),f._crypto_stream_xchacha20_keybytes=()=>(f._crypto_stream_xchacha20_keybytes=j.dk)(),f._crypto_stream_xchacha20_noncebytes=()=>(f._crypto_stream_xchacha20_noncebytes=j.ek)(),f._crypto_stream_xchacha20_messagebytes_max=()=>(f._crypto_stream_xchacha20_messagebytes_max=j.fk)(),f._crypto_stream_xchacha20=(L,X,eA,E,bA)=>(f._crypto_stream_xchacha20=j.gk)(L,X,eA,E,bA),f._crypto_stream_xchacha20_xor_ic=(L,X,eA,E,bA,UA,r0,S0)=>(f._crypto_stream_xchacha20_xor_ic=j.hk)(L,X,eA,E,bA,UA,r0,S0),f._crypto_stream_xchacha20_xor=(L,X,eA,E,bA,UA)=>(f._crypto_stream_xchacha20_xor=j.ik)(L,X,eA,E,bA,UA),f._crypto_stream_xchacha20_keygen=L=>(f._crypto_stream_xchacha20_keygen=j.jk)(L),f._malloc=L=>(f._malloc=j.kk)(L),f._free=L=>(f._free=j.lk)(L),f.setValue=function(L,X,eA="i8"){switch(eA.endsWith("*")&&(eA="*"),eA){case"i1":case"i8":e0[L]=X;break;case"i16":z0[L>>1]=X;break;case"i32":yA[L>>2]=X;break;case"i64":t2("to do setValue(i64) use WASM_BIGINT");case"float":W1[L>>2]=X;break;case"double":Z1[L>>3]=X;break;case"*":x1[L>>2]=X;break;default:t2(`invalid type for setValue: ${eA}`)}},f.getValue=function(L,X="i8"){switch(X.endsWith("*")&&(X="*"),X){case"i1":case"i8":return e0[L];case"i16":return z0[L>>1];case"i32":return yA[L>>2];case"i64":t2("to do getValue(i64) use WASM_BIGINT");case"float":return W1[L>>2];case"double":return Z1[L>>3];case"*":return x1[L>>2];default:t2(`invalid type for getValue: ${X}`)}},f.UTF8ToString=dg,I2=function L(){ug||JC(),ug||(I2=L)},f.preInit)for(typeof f.preInit=="function"&&(f.preInit=[f.preInit]);f.preInit.length>0;)f.preInit.pop()();JC()}).catch(function(){return A2.useBackupModule()}),B0}typeof CA.nodeName!="string"?KA(CA):DA.libsodium=KA(DA.libsodium_mod||(DA.commonJsStrict={}))})(gt)}(Ze,Ze.exports)),Ze.exports}(function(oA){(function(CA){function DA(GA,B0){var U,A2="uint8array",f2=B0.ready.then(function(){function S(){if(U._sodium_init()!==0)throw new Error("libsodium was not correctly initialized.");for(var Y=["crypto_aead_aegis128l_decrypt","crypto_aead_aegis128l_decrypt_detached","crypto_aead_aegis128l_encrypt","crypto_aead_aegis128l_encrypt_detached","crypto_aead_aegis128l_keygen","crypto_aead_aegis256_decrypt","crypto_aead_aegis256_decrypt_detached","crypto_aead_aegis256_encrypt","crypto_aead_aegis256_encrypt_detached","crypto_aead_aegis256_keygen","crypto_aead_chacha20poly1305_decrypt","crypto_aead_chacha20poly1305_decrypt_detached","crypto_aead_chacha20poly1305_encrypt","crypto_aead_chacha20poly1305_encrypt_detached","crypto_aead_chacha20poly1305_ietf_decrypt","crypto_aead_chacha20poly1305_ietf_decrypt_detached","crypto_aead_chacha20poly1305_ietf_encrypt","crypto_aead_chacha20poly1305_ietf_encrypt_detached","crypto_aead_chacha20poly1305_ietf_keygen","crypto_aead_chacha20poly1305_keygen","crypto_aead_xchacha20poly1305_ietf_decrypt","crypto_aead_xchacha20poly1305_ietf_decrypt_detached","crypto_aead_xchacha20poly1305_ietf_encrypt","crypto_aead_xchacha20poly1305_ietf_encrypt_detached","crypto_aead_xchacha20poly1305_ietf_keygen","crypto_auth","crypto_auth_hmacsha256","crypto_auth_hmacsha256_final","crypto_auth_hmacsha256_init","crypto_auth_hmacsha256_keygen","crypto_auth_hmacsha256_update","crypto_auth_hmacsha256_verify","crypto_auth_hmacsha512","crypto_auth_hmacsha512256","crypto_auth_hmacsha512256_final","crypto_auth_hmacsha512256_init","crypto_auth_hmacsha512256_keygen","crypto_auth_hmacsha512256_update","crypto_auth_hmacsha512256_verify","crypto_auth_hmacsha512_final","crypto_auth_hmacsha512_init","crypto_auth_hmacsha512_keygen","crypto_auth_hmacsha512_update","crypto_auth_hmacsha512_verify","crypto_auth_keygen","crypto_auth_verify","crypto_box_beforenm","crypto_box_curve25519xchacha20poly1305_beforenm","crypto_box_curve25519xchacha20poly1305_detached","crypto_box_curve25519xchacha20poly1305_detached_afternm","crypto_box_curve25519xchacha20poly1305_easy","crypto_box_curve25519xchacha20poly1305_easy_afternm","crypto_box_curve25519xchacha20poly1305_keypair","crypto_box_curve25519xchacha20poly1305_open_detached","crypto_box_curve25519xchacha20poly1305_open_detached_afternm","crypto_box_curve25519xchacha20poly1305_open_easy","crypto_box_curve25519xchacha20poly1305_open_easy_afternm","crypto_box_curve25519xchacha20poly1305_seal","crypto_box_curve25519xchacha20poly1305_seal_open","crypto_box_curve25519xchacha20poly1305_seed_keypair","crypto_box_detached","crypto_box_easy","crypto_box_easy_afternm","crypto_box_keypair","crypto_box_open_detached","crypto_box_open_easy","crypto_box_open_easy_afternm","crypto_box_seal","crypto_box_seal_open","crypto_box_seed_keypair","crypto_core_ed25519_add","crypto_core_ed25519_from_hash","crypto_core_ed25519_from_uniform","crypto_core_ed25519_is_valid_point","crypto_core_ed25519_random","crypto_core_ed25519_scalar_add","crypto_core_ed25519_scalar_complement","crypto_core_ed25519_scalar_invert","crypto_core_ed25519_scalar_mul","crypto_core_ed25519_scalar_negate","crypto_core_ed25519_scalar_random","crypto_core_ed25519_scalar_reduce","crypto_core_ed25519_scalar_sub","crypto_core_ed25519_sub","crypto_core_hchacha20","crypto_core_hsalsa20","crypto_core_ristretto255_add","crypto_core_ristretto255_from_hash","crypto_core_ristretto255_is_valid_point","crypto_core_ristretto255_random","crypto_core_ristretto255_scalar_add","crypto_core_ristretto255_scalar_complement","crypto_core_ristretto255_scalar_invert","crypto_core_ristretto255_scalar_mul","crypto_core_ristretto255_scalar_negate","crypto_core_ristretto255_scalar_random","crypto_core_ristretto255_scalar_reduce","crypto_core_ristretto255_scalar_sub","crypto_core_ristretto255_sub","crypto_generichash","crypto_generichash_blake2b_salt_personal","crypto_generichash_final","crypto_generichash_init","crypto_generichash_keygen","crypto_generichash_update","crypto_hash","crypto_hash_sha256","crypto_hash_sha256_final","crypto_hash_sha256_init","crypto_hash_sha256_update","crypto_hash_sha512","crypto_hash_sha512_final","crypto_hash_sha512_init","crypto_hash_sha512_update","crypto_kdf_derive_from_key","crypto_kdf_keygen","crypto_kx_client_session_keys","crypto_kx_keypair","crypto_kx_seed_keypair","crypto_kx_server_session_keys","crypto_onetimeauth","crypto_onetimeauth_final","crypto_onetimeauth_init","crypto_onetimeauth_keygen","crypto_onetimeauth_update","crypto_onetimeauth_verify","crypto_pwhash","crypto_pwhash_scryptsalsa208sha256","crypto_pwhash_scryptsalsa208sha256_ll","crypto_pwhash_scryptsalsa208sha256_str","crypto_pwhash_scryptsalsa208sha256_str_verify","crypto_pwhash_str","crypto_pwhash_str_needs_rehash","crypto_pwhash_str_verify","crypto_scalarmult","crypto_scalarmult_base","crypto_scalarmult_ed25519","crypto_scalarmult_ed25519_base","crypto_scalarmult_ed25519_base_noclamp","crypto_scalarmult_ed25519_noclamp","crypto_scalarmult_ristretto255","crypto_scalarmult_ristretto255_base","crypto_secretbox_detached","crypto_secretbox_easy","crypto_secretbox_keygen","crypto_secretbox_open_detached","crypto_secretbox_open_easy","crypto_secretstream_xchacha20poly1305_init_pull","crypto_secretstream_xchacha20poly1305_init_push","crypto_secretstream_xchacha20poly1305_keygen","crypto_secretstream_xchacha20poly1305_pull","crypto_secretstream_xchacha20poly1305_push","crypto_secretstream_xchacha20poly1305_rekey","crypto_shorthash","crypto_shorthash_keygen","crypto_shorthash_siphashx24","crypto_sign","crypto_sign_detached","crypto_sign_ed25519_pk_to_curve25519","crypto_sign_ed25519_sk_to_curve25519","crypto_sign_ed25519_sk_to_pk","crypto_sign_ed25519_sk_to_seed","crypto_sign_final_create","crypto_sign_final_verify","crypto_sign_init","crypto_sign_keypair","crypto_sign_open","crypto_sign_seed_keypair","crypto_sign_update","crypto_sign_verify_detached","crypto_stream_chacha20","crypto_stream_chacha20_ietf_xor","crypto_stream_chacha20_ietf_xor_ic","crypto_stream_chacha20_keygen","crypto_stream_chacha20_xor","crypto_stream_chacha20_xor_ic","crypto_stream_keygen","crypto_stream_xchacha20_keygen","crypto_stream_xchacha20_xor","crypto_stream_xchacha20_xor_ic","randombytes_buf","randombytes_buf_deterministic","randombytes_close","randombytes_random","randombytes_set_implementation","randombytes_stir","randombytes_uniform","sodium_version_string"],AA=[x1,W1,Z1,o0,J0,m0,d0,U0,Z0,I2,t2,y2,E2,o1,n1,R1,Zg,ug,HC,dg,$g,ct,It,j,JC,L,X,eA,E,bA,UA,r0,S0,v0,q0,g2,j2,AC,Sg,bg,gC,vg,CC,Fg,Ng,eC,mg,RC,LC,PC,qC,zC,L1,og,P1,Mg,st,Bt,tC,Gg,TC,Kg,rC,yt,ht,T,jC,R,Z,tA,BA,dA,xA,WA,Q0,K0,R0,c,A,i,O2,M0,A1,q1,_g,xg,Qt,nt,W,$1,Ag,y,cg,aC,ZA,Yg,Ug,d1,iC,OC,XC,r1,oC,kA,VC,WC,Hg,ZC,$C,Ae,ge,Ce,ee,gA,te,re,Jg,Rg,e1,ae,ie,Ig,Lg,oe,_e,ce,_C,Ie,cC,IC,M2,se,Be,ye,gg,sC,he,Qe,Pg,BC,sg,g1,b2,qg,yC,z1,hC,S1,Cg,ne,Ee,x2,b1,QC,T1,P2,y1,nC,pe,fe,v1,De,Y1,EC,we,le,pC,F1,j1,fC,ke,ue,Bg,DC,de,q2,Se,be,ve,D2,a0,Fe,wC,E1,Ne,w2,N1,O1],QA=0;QA=240?(lA=4,AA=!0):NA>=224?(lA=3,AA=!0):NA>=192?(lA=2,AA=!0):NA<128&&(lA=1,AA=!0)}while(!AA);for(var PA=lA-(Y.length-QA),jA=0;jA>8&-39)<<8|87+(N=S[P]>>>4)+(N-10>>8&-39),m+=String.fromCharCode(255&k)+String.fromCharCode(k>>>8);return m}var K2={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function c2(S){if(S==null)return K2.URLSAFE_NO_PADDING;if(S!==K2.ORIGINAL&&S!==K2.ORIGINAL_NO_PADDING&&S!==K2.URLSAFE&&S!=K2.URLSAFE_NO_PADDING)throw new Error("unsupported base64 variant");return S}function u2(S,N){N=c2(N),S=yA(k,S,"input");var F,k=[],m=0|Math.floor(S.length/3),P=S.length-3*m,Y=4*m+(P!==0?2&N?2+(P>>>1):4:0),AA=new RA(Y+1),QA=IA(S);return k.push(QA),k.push(AA.address),U._sodium_bin2base64(AA.address,AA.length,QA,S.length,N)===0&&e0(k,"conversion failed"),AA.length=Y,F=n2(AA.to_Uint8Array()),JA(k),F}function TA(S,N){var F=N||A2;if(!S2(F))throw new Error(F+" output format is not available");if(S instanceof RA){if(F==="uint8array")return S.to_Uint8Array();if(F==="text")return n2(S.to_Uint8Array());if(F==="hex")return f(S.to_Uint8Array());if(F==="base64")return u2(S.to_Uint8Array(),K2.URLSAFE_NO_PADDING);throw new Error('What is output format "'+F+'"?')}if(typeof S=="object"){for(var k=Object.keys(S),m={},P=0;P=BigInt(0)){const l0=N>>BigInt(32);l0>BigInt(4294967295)&&SA(P,"subkey_id cannot be more than 64 bits"),AA=Number(l0),Y=Number(N&BigInt(4294967295))}else typeof N=="number"&&(0|N)===N&&N>=0?Y=N:SA(P,"subkey_id must be an unsigned integer or bigint");typeof F!="string"&&SA(P,"ctx must be a string"),F=l2(F+"\0"),lA!=null&&F.length-1!==lA&&SA(P,"invalid ctx length");var QA=IA(F),lA=F.length-1;P.push(QA),k=yA(P,k,"key");var NA,PA=0|U._crypto_kdf_keybytes();k.length!==PA&&SA(P,"invalid key length"),NA=IA(k),P.push(NA);var jA=new RA(0|S),C0=jA.address;P.push(C0),U._crypto_kdf_derive_from_key(C0,S,Y,AA,QA,NA);var n0=TA(jA,m);return JA(P),n0}function re(S){var N=[];LA(S);var F=new RA(0|U._crypto_kdf_keybytes()),k=F.address;N.push(k),U._crypto_kdf_keygen(k);var m=TA(F,S);return JA(N),m}function Jg(S,N,F,k){var m=[];LA(k),S=yA(m,S,"clientPublicKey");var P,Y=0|U._crypto_kx_publickeybytes();S.length!==Y&&SA(m,"invalid clientPublicKey length"),P=IA(S),m.push(P),N=yA(m,N,"clientSecretKey");var AA,QA=0|U._crypto_kx_secretkeybytes();N.length!==QA&&SA(m,"invalid clientSecretKey length"),AA=IA(N),m.push(AA),F=yA(m,F,"serverPublicKey");var lA,NA=0|U._crypto_kx_publickeybytes();F.length!==NA&&SA(m,"invalid serverPublicKey length"),lA=IA(F),m.push(lA);var PA=new RA(0|U._crypto_kx_sessionkeybytes()),jA=PA.address;m.push(jA);var C0=new RA(0|U._crypto_kx_sessionkeybytes()),n0=C0.address;if(m.push(n0),!(0|U._crypto_kx_client_session_keys(jA,n0,P,AA,lA))){var l0=TA({sharedRx:PA,sharedTx:C0},k);return JA(m),l0}e0(m,"invalid usage")}function Rg(S){var N=[];LA(S);var F=new RA(0|U._crypto_kx_publickeybytes()),k=F.address;N.push(k);var m=new RA(0|U._crypto_kx_secretkeybytes()),P=m.address;if(N.push(P),!(0|U._crypto_kx_keypair(k,P))){var Y={publicKey:TA(F,S),privateKey:TA(m,S),keyType:"x25519"};return JA(N),Y}e0(N,"internal error")}function e1(S,N){var F=[];LA(N),S=yA(F,S,"seed");var k,m=0|U._crypto_kx_seedbytes();S.length!==m&&SA(F,"invalid seed length"),k=IA(S),F.push(k);var P=new RA(0|U._crypto_kx_publickeybytes()),Y=P.address;F.push(Y);var AA=new RA(0|U._crypto_kx_secretkeybytes()),QA=AA.address;if(F.push(QA),!(0|U._crypto_kx_seed_keypair(Y,QA,k))){var lA={publicKey:TA(P,N),privateKey:TA(AA,N),keyType:"x25519"};return JA(F),lA}e0(F,"internal error")}function ae(S,N,F,k){var m=[];LA(k),S=yA(m,S,"serverPublicKey");var P,Y=0|U._crypto_kx_publickeybytes();S.length!==Y&&SA(m,"invalid serverPublicKey length"),P=IA(S),m.push(P),N=yA(m,N,"serverSecretKey");var AA,QA=0|U._crypto_kx_secretkeybytes();N.length!==QA&&SA(m,"invalid serverSecretKey length"),AA=IA(N),m.push(AA),F=yA(m,F,"clientPublicKey");var lA,NA=0|U._crypto_kx_publickeybytes();F.length!==NA&&SA(m,"invalid clientPublicKey length"),lA=IA(F),m.push(lA);var PA=new RA(0|U._crypto_kx_sessionkeybytes()),jA=PA.address;m.push(jA);var C0=new RA(0|U._crypto_kx_sessionkeybytes()),n0=C0.address;if(m.push(n0),!(0|U._crypto_kx_server_session_keys(jA,n0,P,AA,lA))){var l0=TA({sharedRx:PA,sharedTx:C0},k);return JA(m),l0}e0(m,"invalid usage")}function ie(S,N,F){var k=[];LA(F);var m=IA(S=yA(k,S,"message")),P=S.length;k.push(m),N=yA(k,N,"key");var Y,AA=0|U._crypto_onetimeauth_keybytes();N.length!==AA&&SA(k,"invalid key length"),Y=IA(N),k.push(Y);var QA=new RA(0|U._crypto_onetimeauth_bytes()),lA=QA.address;if(k.push(lA),!(0|U._crypto_onetimeauth(lA,m,P,0,Y))){var NA=TA(QA,F);return JA(k),NA}e0(k,"invalid usage")}function Ig(S,N){var F=[];LA(N),z0(F,S,"state_address");var k=new RA(0|U._crypto_onetimeauth_bytes()),m=k.address;if(F.push(m),!(0|U._crypto_onetimeauth_final(S,m))){var P=(U._free(S),TA(k,N));return JA(F),P}e0(F,"invalid usage")}function Lg(S,N){var F=[];LA(N);var k=null;S!=null&&(k=IA(S=yA(F,S,"key")),S.length,F.push(k));var m=new RA(144).address;if(!(0|U._crypto_onetimeauth_init(m,k))){var P=m;return JA(F),P}e0(F,"invalid usage")}function oe(S){var N=[];LA(S);var F=new RA(0|U._crypto_onetimeauth_keybytes()),k=F.address;N.push(k),U._crypto_onetimeauth_keygen(k);var m=TA(F,S);return JA(N),m}function _e(S,N,F){var k=[];LA(F),z0(k,S,"state_address");var m=IA(N=yA(k,N,"message_chunk")),P=N.length;k.push(m),0|U._crypto_onetimeauth_update(S,m,P)&&e0(k,"invalid usage"),JA(k)}function ce(S,N,F){var k=[];S=yA(k,S,"hash");var m,P=0|U._crypto_onetimeauth_bytes();S.length!==P&&SA(k,"invalid hash length"),m=IA(S),k.push(m);var Y=IA(N=yA(k,N,"message")),AA=N.length;k.push(Y),F=yA(k,F,"key");var QA,lA=0|U._crypto_onetimeauth_keybytes();F.length!==lA&&SA(k,"invalid key length"),QA=IA(F),k.push(QA);var NA=!(0|U._crypto_onetimeauth_verify(m,Y,AA,0,QA));return JA(k),NA}function _C(S,N,F,k,m,P,Y){var AA=[];LA(Y),z0(AA,S,"keyLength"),(typeof S!="number"||(0|S)!==S||S<0)&&SA(AA,"keyLength must be an unsigned integer");var QA=IA(N=yA(AA,N,"password")),lA=N.length;AA.push(QA),F=yA(AA,F,"salt");var NA,PA=0|U._crypto_pwhash_saltbytes();F.length!==PA&&SA(AA,"invalid salt length"),NA=IA(F),AA.push(NA),z0(AA,k,"opsLimit"),(typeof k!="number"||(0|k)!==k||k<0)&&SA(AA,"opsLimit must be an unsigned integer"),z0(AA,m,"memLimit"),(typeof m!="number"||(0|m)!==m||m<0)&&SA(AA,"memLimit must be an unsigned integer"),z0(AA,P,"algorithm"),(typeof P!="number"||(0|P)!==P||P<0)&&SA(AA,"algorithm must be an unsigned integer");var jA=new RA(0|S),C0=jA.address;if(AA.push(C0),!(0|U._crypto_pwhash(C0,S,0,QA,lA,0,NA,k,0,m,P))){var n0=TA(jA,Y);return JA(AA),n0}e0(AA,"invalid usage")}function Ie(S,N,F,k,m,P){var Y=[];LA(P),z0(Y,S,"keyLength"),(typeof S!="number"||(0|S)!==S||S<0)&&SA(Y,"keyLength must be an unsigned integer");var AA=IA(N=yA(Y,N,"password")),QA=N.length;Y.push(AA),F=yA(Y,F,"salt");var lA,NA=0|U._crypto_pwhash_scryptsalsa208sha256_saltbytes();F.length!==NA&&SA(Y,"invalid salt length"),lA=IA(F),Y.push(lA),z0(Y,k,"opsLimit"),(typeof k!="number"||(0|k)!==k||k<0)&&SA(Y,"opsLimit must be an unsigned integer"),z0(Y,m,"memLimit"),(typeof m!="number"||(0|m)!==m||m<0)&&SA(Y,"memLimit must be an unsigned integer");var PA=new RA(0|S),jA=PA.address;if(Y.push(jA),!(0|U._crypto_pwhash_scryptsalsa208sha256(jA,S,0,AA,QA,0,lA,k,0,m))){var C0=TA(PA,P);return JA(Y),C0}e0(Y,"invalid usage")}function cC(S,N,F,k,m,P,Y){var AA=[];LA(Y);var QA=IA(S=yA(AA,S,"password")),lA=S.length;AA.push(QA);var NA=IA(N=yA(AA,N,"salt")),PA=N.length;AA.push(NA),z0(AA,F,"opsLimit"),(typeof F!="number"||(0|F)!==F||F<0)&&SA(AA,"opsLimit must be an unsigned integer"),z0(AA,k,"r"),(typeof k!="number"||(0|k)!==k||k<0)&&SA(AA,"r must be an unsigned integer"),z0(AA,m,"p"),(typeof m!="number"||(0|m)!==m||m<0)&&SA(AA,"p must be an unsigned integer"),z0(AA,P,"keyLength"),(typeof P!="number"||(0|P)!==P||P<0)&&SA(AA,"keyLength must be an unsigned integer");var jA=new RA(0|P),C0=jA.address;if(AA.push(C0),!(0|U._crypto_pwhash_scryptsalsa208sha256_ll(QA,lA,NA,PA,F,0,k,m,C0,P))){var n0=TA(jA,Y);return JA(AA),n0}e0(AA,"invalid usage")}function IC(S,N,F,k){var m=[];LA(k);var P=IA(S=yA(m,S,"password")),Y=S.length;m.push(P),z0(m,N,"opsLimit"),(typeof N!="number"||(0|N)!==N||N<0)&&SA(m,"opsLimit must be an unsigned integer"),z0(m,F,"memLimit"),(typeof F!="number"||(0|F)!==F||F<0)&&SA(m,"memLimit must be an unsigned integer");var AA=new RA(0|U._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(m.push(AA),!(0|U._crypto_pwhash_scryptsalsa208sha256_str(AA,P,Y,0,N,0,F))){var QA=U.UTF8ToString(AA);return JA(m),QA}e0(m,"invalid usage")}function M2(S,N,F){var k=[];LA(F),typeof S!="string"&&SA(k,"hashed_password must be a string"),S=l2(S+"\0"),P!=null&&S.length-1!==P&&SA(k,"invalid hashed_password length");var m=IA(S),P=S.length-1;k.push(m);var Y=IA(N=yA(k,N,"password")),AA=N.length;k.push(Y);var QA=!(0|U._crypto_pwhash_scryptsalsa208sha256_str_verify(m,Y,AA,0));return JA(k),QA}function se(S,N,F,k){var m=[];LA(k);var P=IA(S=yA(m,S,"password")),Y=S.length;m.push(P),z0(m,N,"opsLimit"),(typeof N!="number"||(0|N)!==N||N<0)&&SA(m,"opsLimit must be an unsigned integer"),z0(m,F,"memLimit"),(typeof F!="number"||(0|F)!==F||F<0)&&SA(m,"memLimit must be an unsigned integer");var AA=new RA(0|U._crypto_pwhash_strbytes()).address;if(m.push(AA),!(0|U._crypto_pwhash_str(AA,P,Y,0,N,0,F))){var QA=U.UTF8ToString(AA);return JA(m),QA}e0(m,"invalid usage")}function Be(S,N,F,k){var m=[];LA(k),typeof S!="string"&&SA(m,"hashed_password must be a string"),S=l2(S+"\0"),Y!=null&&S.length-1!==Y&&SA(m,"invalid hashed_password length");var P=IA(S),Y=S.length-1;m.push(P),z0(m,N,"opsLimit"),(typeof N!="number"||(0|N)!==N||N<0)&&SA(m,"opsLimit must be an unsigned integer"),z0(m,F,"memLimit"),(typeof F!="number"||(0|F)!==F||F<0)&&SA(m,"memLimit must be an unsigned integer");var AA=!!(0|U._crypto_pwhash_str_needs_rehash(P,N,0,F));return JA(m),AA}function ye(S,N,F){var k=[];LA(F),typeof S!="string"&&SA(k,"hashed_password must be a string"),S=l2(S+"\0"),P!=null&&S.length-1!==P&&SA(k,"invalid hashed_password length");var m=IA(S),P=S.length-1;k.push(m);var Y=IA(N=yA(k,N,"password")),AA=N.length;k.push(Y);var QA=!(0|U._crypto_pwhash_str_verify(m,Y,AA,0));return JA(k),QA}function gg(S,N,F){var k=[];LA(F),S=yA(k,S,"privateKey");var m,P=0|U._crypto_scalarmult_scalarbytes();S.length!==P&&SA(k,"invalid privateKey length"),m=IA(S),k.push(m),N=yA(k,N,"publicKey");var Y,AA=0|U._crypto_scalarmult_bytes();N.length!==AA&&SA(k,"invalid publicKey length"),Y=IA(N),k.push(Y);var QA=new RA(0|U._crypto_scalarmult_bytes()),lA=QA.address;if(k.push(lA),!(0|U._crypto_scalarmult(lA,m,Y))){var NA=TA(QA,F);return JA(k),NA}e0(k,"weak public key")}function sC(S,N){var F=[];LA(N),S=yA(F,S,"privateKey");var k,m=0|U._crypto_scalarmult_scalarbytes();S.length!==m&&SA(F,"invalid privateKey length"),k=IA(S),F.push(k);var P=new RA(0|U._crypto_scalarmult_bytes()),Y=P.address;if(F.push(Y),!(0|U._crypto_scalarmult_base(Y,k))){var AA=TA(P,N);return JA(F),AA}e0(F,"unknown error")}function he(S,N,F){var k=[];LA(F),S=yA(k,S,"n");var m,P=0|U._crypto_scalarmult_ed25519_scalarbytes();S.length!==P&&SA(k,"invalid n length"),m=IA(S),k.push(m),N=yA(k,N,"p");var Y,AA=0|U._crypto_scalarmult_ed25519_bytes();N.length!==AA&&SA(k,"invalid p length"),Y=IA(N),k.push(Y);var QA=new RA(0|U._crypto_scalarmult_ed25519_bytes()),lA=QA.address;if(k.push(lA),!(0|U._crypto_scalarmult_ed25519(lA,m,Y))){var NA=TA(QA,F);return JA(k),NA}e0(k,"invalid point or scalar is 0")}function Qe(S,N){var F=[];LA(N),S=yA(F,S,"scalar");var k,m=0|U._crypto_scalarmult_ed25519_scalarbytes();S.length!==m&&SA(F,"invalid scalar length"),k=IA(S),F.push(k);var P=new RA(0|U._crypto_scalarmult_ed25519_bytes()),Y=P.address;if(F.push(Y),!(0|U._crypto_scalarmult_ed25519_base(Y,k))){var AA=TA(P,N);return JA(F),AA}e0(F,"scalar is 0")}function Pg(S,N){var F=[];LA(N),S=yA(F,S,"scalar");var k,m=0|U._crypto_scalarmult_ed25519_scalarbytes();S.length!==m&&SA(F,"invalid scalar length"),k=IA(S),F.push(k);var P=new RA(0|U._crypto_scalarmult_ed25519_bytes()),Y=P.address;if(F.push(Y),!(0|U._crypto_scalarmult_ed25519_base_noclamp(Y,k))){var AA=TA(P,N);return JA(F),AA}e0(F,"scalar is 0")}function BC(S,N,F){var k=[];LA(F),S=yA(k,S,"n");var m,P=0|U._crypto_scalarmult_ed25519_scalarbytes();S.length!==P&&SA(k,"invalid n length"),m=IA(S),k.push(m),N=yA(k,N,"p");var Y,AA=0|U._crypto_scalarmult_ed25519_bytes();N.length!==AA&&SA(k,"invalid p length"),Y=IA(N),k.push(Y);var QA=new RA(0|U._crypto_scalarmult_ed25519_bytes()),lA=QA.address;if(k.push(lA),!(0|U._crypto_scalarmult_ed25519_noclamp(lA,m,Y))){var NA=TA(QA,F);return JA(k),NA}e0(k,"invalid point or scalar is 0")}function sg(S,N,F){var k=[];LA(F),S=yA(k,S,"scalar");var m,P=0|U._crypto_scalarmult_ristretto255_scalarbytes();S.length!==P&&SA(k,"invalid scalar length"),m=IA(S),k.push(m),N=yA(k,N,"element");var Y,AA=0|U._crypto_scalarmult_ristretto255_bytes();N.length!==AA&&SA(k,"invalid element length"),Y=IA(N),k.push(Y);var QA=new RA(0|U._crypto_scalarmult_ristretto255_bytes()),lA=QA.address;if(k.push(lA),!(0|U._crypto_scalarmult_ristretto255(lA,m,Y))){var NA=TA(QA,F);return JA(k),NA}e0(k,"result is identity element")}function g1(S,N){var F=[];LA(N),S=yA(F,S,"scalar");var k,m=0|U._crypto_core_ristretto255_scalarbytes();S.length!==m&&SA(F,"invalid scalar length"),k=IA(S),F.push(k);var P=new RA(0|U._crypto_core_ristretto255_bytes()),Y=P.address;if(F.push(Y),!(0|U._crypto_scalarmult_ristretto255_base(Y,k))){var AA=TA(P,N);return JA(F),AA}e0(F,"scalar is 0")}function b2(S,N,F,k){var m=[];LA(k);var P=IA(S=yA(m,S,"message")),Y=S.length;m.push(P),N=yA(m,N,"nonce");var AA,QA=0|U._crypto_secretbox_noncebytes();N.length!==QA&&SA(m,"invalid nonce length"),AA=IA(N),m.push(AA),F=yA(m,F,"key");var lA,NA=0|U._crypto_secretbox_keybytes();F.length!==NA&&SA(m,"invalid key length"),lA=IA(F),m.push(lA);var PA=new RA(0|Y),jA=PA.address;m.push(jA);var C0=new RA(0|U._crypto_secretbox_macbytes()),n0=C0.address;if(m.push(n0),!(0|U._crypto_secretbox_detached(jA,n0,P,Y,0,AA,lA))){var l0=TA({mac:C0,cipher:PA},k);return JA(m),l0}e0(m,"invalid usage")}function qg(S,N,F,k){var m=[];LA(k);var P=IA(S=yA(m,S,"message")),Y=S.length;m.push(P),N=yA(m,N,"nonce");var AA,QA=0|U._crypto_secretbox_noncebytes();N.length!==QA&&SA(m,"invalid nonce length"),AA=IA(N),m.push(AA),F=yA(m,F,"key");var lA,NA=0|U._crypto_secretbox_keybytes();F.length!==NA&&SA(m,"invalid key length"),lA=IA(F),m.push(lA);var PA=new RA(Y+U._crypto_secretbox_macbytes()|0),jA=PA.address;if(m.push(jA),!(0|U._crypto_secretbox_easy(jA,P,Y,0,AA,lA))){var C0=TA(PA,k);return JA(m),C0}e0(m,"invalid usage")}function yC(S){var N=[];LA(S);var F=new RA(0|U._crypto_secretbox_keybytes()),k=F.address;N.push(k),U._crypto_secretbox_keygen(k);var m=TA(F,S);return JA(N),m}function z1(S,N,F,k,m){var P=[];LA(m);var Y=IA(S=yA(P,S,"ciphertext")),AA=S.length;P.push(Y),N=yA(P,N,"mac");var QA,lA=0|U._crypto_secretbox_macbytes();N.length!==lA&&SA(P,"invalid mac length"),QA=IA(N),P.push(QA),F=yA(P,F,"nonce");var NA,PA=0|U._crypto_secretbox_noncebytes();F.length!==PA&&SA(P,"invalid nonce length"),NA=IA(F),P.push(NA),k=yA(P,k,"key");var jA,C0=0|U._crypto_secretbox_keybytes();k.length!==C0&&SA(P,"invalid key length"),jA=IA(k),P.push(jA);var n0=new RA(0|AA),l0=n0.address;if(P.push(l0),!(0|U._crypto_secretbox_open_detached(l0,Y,QA,AA,0,NA,jA))){var Y0=TA(n0,m);return JA(P),Y0}e0(P,"wrong secret key for the given ciphertext")}function hC(S,N,F,k){var m=[];LA(k),S=yA(m,S,"ciphertext");var P,Y=U._crypto_secretbox_macbytes(),AA=S.length;AA>>0;return JA([]),N}function Ne(S,N){var F=[];LA(N);for(var k=U._malloc(24),m=0;m<6;m++)U.setValue(k+4*m,U.Runtime.addFunction(S[["implementation_name","random","stir","uniform","buf","close"][m]]),"i32");0|U._randombytes_set_implementation(k)&&e0(F,"unsupported implementation"),JA(F)}function w2(S){LA(S),U._randombytes_stir()}function N1(S,N){var F=[];LA(N),z0(F,S,"upper_bound"),(typeof S!="number"||(0|S)!==S||S<0)&&SA(F,"upper_bound must be an unsigned integer");var k=U._randombytes_uniform(S)>>>0;return JA(F),k}function O1(){var S=U._sodium_version_string(),N=U.UTF8ToString(S);return JA([]),N}return RA.prototype.to_Uint8Array=function(){var S=new Uint8Array(this.length);return S.set(U.HEAPU8.subarray(this.address,this.address+this.length)),S},GA.add=function(S,N){if(!(S instanceof Uint8Array&&N instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can added");var F=S.length,k=0,m=0;if(N.length!=S.length)throw new TypeError("Arguments must have the same length");for(m=0;m>=8,k+=S[m]+N[m],S[m]=255&k},GA.base64_variants=K2,GA.compare=function(S,N){if(!(S instanceof Uint8Array&&N instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(S.length!==N.length)throw new TypeError("Only instances of identical length can be compared");for(var F=0,k=1,m=S.length;m-- >0;)F|=N[m]-S[m]>>8&k,k&=(N[m]^S[m])-1>>8;return F+F+k-1},GA.from_base64=function(S,N){N=c2(N);var F,k=[],m=new RA(3*(S=yA(k,S,"input")).length/4),P=IA(S),Y=_2(4),AA=_2(4);return k.push(P),k.push(m.address),k.push(m.result_bin_len_p),k.push(m.b64_end_p),U._sodium_base642bin(m.address,m.length,P,S.length,0,Y,AA,N)!==0&&e0(k,"invalid input"),U.getValue(AA,"i32")-P!==S.length&&e0(k,"incomplete input"),m.length=U.getValue(Y,"i32"),F=m.to_Uint8Array(),JA(k),F},GA.from_hex=function(S){var N,F=[],k=new RA((S=yA(F,S,"input")).length/2),m=IA(S),P=_2(4);return F.push(m),F.push(k.address),F.push(k.hex_end_p),U._sodium_hex2bin(k.address,k.length,m,S.length,0,0,P)!==0&&e0(F,"invalid input"),U.getValue(P,"i32")-m!==S.length&&e0(F,"incomplete input"),N=k.to_Uint8Array(),JA(F),N},GA.from_string=l2,GA.increment=function(S){if(!(S instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be incremented");for(var N=256,F=0,k=S.length;F>=8,N+=S[F],S[F]=255&N},GA.is_zero=function(S){if(!(S instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be checked");for(var N=0,F=0,k=S.length;F 0");var F,k=[],m=_2(4),P=1,Y=0,AA=0|S.length,QA=new RA(AA+N);k.push(m),k.push(QA.address);for(var lA=QA.address,NA=QA.address+AA+N;lA>>48|AA>>>32|AA>>>16|AA))-1>>16);return U._sodium_pad(m,QA.address,S.length,N,QA.length)!==0&&e0(k,"internal error"),QA.length=U.getValue(m,"i32"),F=QA.to_Uint8Array(),JA(k),F},GA.unpad=function(S,N){if(!(S instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((N|=0)<=0)throw new Error("block size must be > 0");var F=[],k=IA(S),m=_2(4);return F.push(k),F.push(m),U._sodium_unpad(m,k,S.length,N)!==0&&e0(F,"unsupported/invalid padding"),S=(S=new Uint8Array(S)).subarray(0,U.getValue(m,"i32")),JA(F),S},GA.ready=f2,GA.symbols=function(){return Object.keys(GA).sort()},GA.to_base64=u2,GA.to_hex=f,GA.to_string=n2,GA}var KA=typeof CA.sodium=="object"&&typeof CA.sodium.onload=="function"?CA.sodium.onload:null;typeof oA.nodeName!="string"?DA(oA,ri()):CA.sodium=DA(CA.commonJsStrict={},CA.libsodium),KA&&CA.sodium.ready.then(function(){KA(CA.sodium)})})(gt)})(Ga);const L2=Ma(Ga);var Kt;try{Kt=new TextDecoder}catch{}var H0,k1,zA=0,F2={},Q2,ag,l1=0,H1=0,$2,V1,B1=[],B2,Ea={useRecords:!1,mapsAsObjects:!0};class Ka{}const xa=new Ka;xa.name="MessagePack 0xC1";var ig=!1,Ya=2,pa;try{new Function("")}catch{Ya=1/0}class KC{constructor(CA){CA&&(CA.useRecords===!1&&CA.mapsAsObjects===void 0&&(CA.mapsAsObjects=!0),CA.sequential&&CA.trusted!==!1&&(CA.trusted=!0,!CA.structures&&CA.useRecords!=!1&&(CA.structures=[],CA.maxSharedStructures||(CA.maxSharedStructures=0))),CA.structures?CA.structures.sharedLength=CA.structures.length:CA.getStructures&&((CA.structures=[]).uninitialized=!0,CA.structures.sharedLength=0),CA.int64AsNumber&&(CA.int64AsType="number")),Object.assign(this,CA)}unpack(CA,DA){if(H0)return Pa(()=>(Yt(),this?this.unpack(CA,DA):KC.prototype.unpack.call(Ea,CA,DA)));!CA.buffer&&CA.constructor===ArrayBuffer&&(CA=typeof Dg<"u"?Dg.from(CA):new Uint8Array(CA)),typeof DA=="object"?(k1=DA.end||CA.length,zA=DA.start||0):(zA=0,k1=DA>-1?DA:CA.length),H1=0,ag=null,$2=null,H0=CA;try{B2=CA.dataView||(CA.dataView=new DataView(CA.buffer,CA.byteOffset,CA.byteLength))}catch(KA){throw H0=null,CA instanceof Uint8Array?KA:new Error("Source must be a Uint8Array or Buffer but was a "+(CA&&typeof CA=="object"?CA.constructor.name:typeof CA))}if(this instanceof KC){if(F2=this,this.structures)return Q2=this.structures,$e(DA);(!Q2||Q2.length>0)&&(Q2=[])}else F2=Ea,(!Q2||Q2.length>0)&&(Q2=[]);return $e(DA)}unpackMultiple(CA,DA){let KA,GA=0;try{ig=!0;let B0=CA.length,U=this?this.unpack(CA,B0):at.unpack(CA,B0);if(DA){if(DA(U,GA,zA)===!1)return;for(;zAKA.slice(0)));for(let KA=0,GA=CA.length;KA=32&&(B0.highByte=KA-32>>5))}CA.sharedLength=CA.length;for(let KA in DA||[])if(KA>=0){let GA=CA[KA],B0=DA[KA];B0&&(GA&&((CA.restoreStructures||(CA.restoreStructures=[]))[KA]=GA),CA[KA]=B0)}return this.structures=CA}decode(CA,DA){return this.unpack(CA,DA)}}function $e(oA){try{if(!F2.trusted&&!ig){let DA=Q2.sharedLength||0;DA=32&&pa?(CA=pa(H0,zA,k1,F2),H0=null,!(oA&&oA.lazy)&&CA&&(CA=CA.toJSON()),zA=k1):CA=T2(),$2&&(zA=$2.postBundlePosition,$2=null),ig&&(Q2.restoreStructures=null),zA==k1)Q2&&Q2.restoreStructures&&fa(),Q2=null,H0=null,V1&&(V1=null);else{if(zA>k1)throw new Error("Unexpected end of MessagePack data");if(!ig){let DA;try{DA=JSON.stringify(CA,(KA,GA)=>typeof GA=="bigint"?`${GA}n`:GA).slice(0,100)}catch(KA){DA="(JSON view not available "+KA+")"}throw new Error("Data read, but end of buffer not reached "+DA)}}return CA}catch(CA){throw Q2&&Q2.restoreStructures&&fa(),Yt(),(CA instanceof RangeError||CA.message.startsWith("Unexpected end of buffer")||zA>k1)&&(CA.incomplete=!0),CA}}function fa(){for(let oA in Q2.restoreStructures)Q2[oA]=Q2.restoreStructures[oA];Q2.restoreStructures=null}function T2(){let oA=H0[zA++];if(oA<160)if(oA<128){if(oA<64)return oA;{let CA=Q2[oA&63]||F2.getStructures&&Ua()[oA&63];return CA?(CA.read||(CA.read=Jt(CA,oA&63)),CA.read()):oA}}else if(oA<144)if(oA-=128,F2.mapsAsObjects){let CA={};for(let DA=0;DA=zA)return ag.slice(zA-l1,(zA+=CA)-l1);if(H1==0&&k1<140){let DA=CA<16?Rt(CA):Ha(CA);if(DA!=null)return DA}return xt(CA)}else{let CA;switch(oA){case 192:return null;case 193:return $2?(CA=T2(),CA>0?$2[1].slice($2.position1,$2.position1+=CA):$2[0].slice($2.position0,$2.position0-=CA)):xa;case 194:return!1;case 195:return!0;case 196:if(CA=H0[zA++],CA===void 0)throw new Error("Unexpected end of buffer");return Mt(CA);case 197:return CA=B2.getUint16(zA),zA+=2,Mt(CA);case 198:return CA=B2.getUint32(zA),zA+=4,Mt(CA);case 199:return fg(H0[zA++]);case 200:return CA=B2.getUint16(zA),zA+=2,fg(CA);case 201:return CA=B2.getUint32(zA),zA+=4,fg(CA);case 202:if(CA=B2.getFloat32(zA),F2.useFloat32>2){let DA=Lt[(H0[zA]&127)<<1|H0[zA+1]>>7];return zA+=4,(DA*CA+(CA>0?.5:-.5)>>0)/DA}return zA+=4,CA;case 203:return CA=B2.getFloat64(zA),zA+=8,CA;case 204:return H0[zA++];case 205:return CA=B2.getUint16(zA),zA+=2,CA;case 206:return CA=B2.getUint32(zA),zA+=4,CA;case 207:return F2.int64AsType==="number"?(CA=B2.getUint32(zA)*4294967296,CA+=B2.getUint32(zA+4)):F2.int64AsType==="string"?CA=B2.getBigUint64(zA).toString():F2.int64AsType==="auto"?(CA=B2.getBigUint64(zA),CA<=BigInt(2)<=BigInt(-2)<=zA?ag.slice(zA-l1,(zA+=CA)-l1):ii(CA);case 218:return CA=B2.getUint16(zA),zA+=2,H1>=zA?ag.slice(zA-l1,(zA+=CA)-l1):oi(CA);case 219:return CA=B2.getUint32(zA),zA+=4,H1>=zA?ag.slice(zA-l1,(zA+=CA)-l1):_i(CA);case 220:return CA=B2.getUint16(zA),zA+=2,wa(CA);case 221:return CA=B2.getUint32(zA),zA+=4,wa(CA);case 222:return CA=B2.getUint16(zA),zA+=2,la(CA);case 223:return CA=B2.getUint32(zA),zA+=4,la(CA);default:if(oA>=224)return oA-256;if(oA===void 0){let DA=new Error("Unexpected end of MessagePack data");throw DA.incomplete=!0,DA}throw new Error("Unknown MessagePack token "+oA)}}}const ai=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Jt(oA,CA){function DA(){if(DA.count++>Ya){let GA=oA.read=new Function("r","return function(){return "+(F2.freezeData?"Object.freeze":"")+"({"+oA.map(B0=>B0==="__proto__"?"__proto_:r()":ai.test(B0)?B0+":r()":"["+JSON.stringify(B0)+"]:r()").join(",")+"})}")(T2);return oA.highByte===0&&(oA.read=Da(CA,oA.read)),GA()}let KA={};for(let GA=0,B0=oA.length;GAfunction(){let DA=H0[zA++];if(DA===0)return CA();let KA=oA<32?-(oA+(DA<<5)):oA+(DA<<5),GA=Q2[KA]||Ua()[KA];if(!GA)throw new Error("Record id is not defined for "+KA);return GA.read||(GA.read=Jt(GA,oA)),GA.read()};function Ua(){let oA=Pa(()=>(H0=null,F2.getStructures()));return Q2=F2._mergeStructures(oA,Q2)}var xt=YC,ii=YC,oi=YC,_i=YC;function YC(oA){let CA;if(oA<16&&(CA=Rt(oA)))return CA;if(oA>64&&Kt)return Kt.decode(H0.subarray(zA,zA+=oA));const DA=zA+oA,KA=[];for(CA="";zA65535&&(f2-=65536,KA.push(f2>>>10&1023|55296),f2=56320|f2&1023),KA.push(f2)}else KA.push(GA);KA.length>=4096&&(CA+=Z2.apply(String,KA),KA.length=0)}return KA.length>0&&(CA+=Z2.apply(String,KA)),CA}function wa(oA){let CA=new Array(oA);for(let DA=0;DA0){zA=CA;return}DA[KA]=GA}return Z2.apply(String,DA)}function Rt(oA){if(oA<4)if(oA<2){if(oA===0)return"";{let CA=H0[zA++];if((CA&128)>1){zA-=1;return}return Z2(CA)}}else{let CA=H0[zA++],DA=H0[zA++];if((CA&128)>0||(DA&128)>0){zA-=2;return}if(oA<3)return Z2(CA,DA);let KA=H0[zA++];if((KA&128)>0){zA-=3;return}return Z2(CA,DA,KA)}else{let CA=H0[zA++],DA=H0[zA++],KA=H0[zA++],GA=H0[zA++];if((CA&128)>0||(DA&128)>0||(KA&128)>0||(GA&128)>0){zA-=4;return}if(oA<6){if(oA===4)return Z2(CA,DA,KA,GA);{let B0=H0[zA++];if((B0&128)>0){zA-=5;return}return Z2(CA,DA,KA,GA,B0)}}else if(oA<8){let B0=H0[zA++],U=H0[zA++];if((B0&128)>0||(U&128)>0){zA-=6;return}if(oA<7)return Z2(CA,DA,KA,GA,B0,U);let A2=H0[zA++];if((A2&128)>0){zA-=7;return}return Z2(CA,DA,KA,GA,B0,U,A2)}else{let B0=H0[zA++],U=H0[zA++],A2=H0[zA++],f2=H0[zA++];if((B0&128)>0||(U&128)>0||(A2&128)>0||(f2&128)>0){zA-=8;return}if(oA<10){if(oA===8)return Z2(CA,DA,KA,GA,B0,U,A2,f2);{let l2=H0[zA++];if((l2&128)>0){zA-=9;return}return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2)}}else if(oA<12){let l2=H0[zA++],n2=H0[zA++];if((l2&128)>0||(n2&128)>0){zA-=10;return}if(oA<11)return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2);let f=H0[zA++];if((f&128)>0){zA-=11;return}return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2,f)}else{let l2=H0[zA++],n2=H0[zA++],f=H0[zA++],K2=H0[zA++];if((l2&128)>0||(n2&128)>0||(f&128)>0||(K2&128)>0){zA-=12;return}if(oA<14){if(oA===12)return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2,f,K2);{let c2=H0[zA++];if((c2&128)>0){zA-=13;return}return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2,f,K2,c2)}}else{let c2=H0[zA++],u2=H0[zA++];if((c2&128)>0||(u2&128)>0){zA-=14;return}if(oA<15)return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2,f,K2,c2,u2);let TA=H0[zA++];if((TA&128)>0){zA-=15;return}return Z2(CA,DA,KA,GA,B0,U,A2,f2,l2,n2,f,K2,c2,u2,TA)}}}}}function ka(){let oA=H0[zA++],CA;if(oA<192)CA=oA-160;else switch(oA){case 217:CA=H0[zA++];break;case 218:CA=B2.getUint16(zA),zA+=2;break;case 219:CA=B2.getUint32(zA),zA+=4;break;default:throw new Error("Expected string")}return YC(CA)}function Mt(oA){return F2.copyBuffers?Uint8Array.prototype.slice.call(H0,zA,zA+=oA):H0.subarray(zA,zA+=oA)}function fg(oA){let CA=H0[zA++];if(B1[CA]){let DA;return B1[CA](H0.subarray(zA,DA=zA+=oA),KA=>{zA=KA;try{return T2()}finally{zA=DA}})}else throw new Error("Unknown extension type "+CA)}var ua=new Array(4096);function Ja(){let oA=H0[zA++];if(oA>=160&&oA<192){if(oA=oA-160,H1>=zA)return ag.slice(zA-l1,(zA+=oA)-l1);if(!(H1==0&&k1<180))return xt(oA)}else return zA--,Ra(T2());let CA=(oA<<5^(oA>1?B2.getUint16(zA):oA>0?H0[zA]:0))&4095,DA=ua[CA],KA=zA,GA=zA+oA-3,B0,U=0;if(DA&&DA.bytes==oA){for(;KA{let DA=T2().map(Ra),KA=oA;CA!==void 0&&(oA=oA<32?-((CA<<5)+oA):(CA<<5)+oA,DA.highByte=CA);let GA=Q2[oA];return GA&&(GA.isShared||ig)&&((Q2.restoreStructures||(Q2.restoreStructures=[]))[oA]=GA),Q2[oA]=DA,DA.read=Jt(DA,KA),DA.read()};B1[0]=()=>{};B1[0].noBuffer=!0;B1[66]=oA=>{let CA=oA.length,DA=BigInt(oA[0]&128?oA[0]-256:oA[0]);for(let KA=1;KA{let oA=T2();return(ci[oA[0]]||Error)(oA[1],{cause:oA[2]})};B1[105]=oA=>{if(F2.structuredClone===!1)throw new Error("Structured clone extension is disabled");let CA=B2.getUint32(zA-4);V1||(V1=new Map);let DA=H0[zA],KA;DA>=144&&DA<160||DA==220||DA==221?KA=[]:KA={};let GA={target:KA};V1.set(CA,GA);let B0=T2();return GA.used?Object.assign(KA,B0):(GA.target=B0,B0)};B1[112]=oA=>{if(F2.structuredClone===!1)throw new Error("Structured clone extension is disabled");let CA=B2.getUint32(zA-4),DA=V1.get(CA);return DA.used=!0,DA.target};B1[115]=()=>new Set(T2());const La=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(oA=>oA+"Array");let Ii=typeof globalThis=="object"?globalThis:window;B1[116]=oA=>{let CA=oA[0],DA=La[CA];if(!DA){if(CA===16){let KA=new ArrayBuffer(oA.length-1);return new Uint8Array(KA).set(oA.subarray(1)),KA}throw new Error("Could not find typed array for code "+CA)}return new Ii[DA](Uint8Array.prototype.slice.call(oA,1).buffer)};B1[120]=()=>{let oA=T2();return new RegExp(oA[0],oA[1])};const si=[];B1[98]=oA=>{let CA=(oA[0]<<24)+(oA[1]<<16)+(oA[2]<<8)+oA[3],DA=zA;return zA+=CA-oA.length,$2=si,$2=[ka(),ka()],$2.position0=0,$2.position1=0,$2.postBundlePosition=zA,zA=DA,T2()};B1[255]=oA=>oA.length==4?new Date((oA[0]*16777216+(oA[1]<<16)+(oA[2]<<8)+oA[3])*1e3):oA.length==8?new Date(((oA[0]<<22)+(oA[1]<<14)+(oA[2]<<6)+(oA[3]>>2))/1e6+((oA[3]&3)*4294967296+oA[4]*16777216+(oA[5]<<16)+(oA[6]<<8)+oA[7])*1e3):oA.length==12?new Date(((oA[0]<<24)+(oA[1]<<16)+(oA[2]<<8)+oA[3])/1e6+((oA[4]&128?-281474976710656:0)+oA[6]*1099511627776+oA[7]*4294967296+oA[8]*16777216+(oA[9]<<16)+(oA[10]<<8)+oA[11])*1e3):new Date("invalid");function Pa(oA){let CA=k1,DA=zA,KA=l1,GA=H1,B0=ag,U=V1,A2=$2,f2=new Uint8Array(H0.slice(0,k1)),l2=Q2,n2=Q2.slice(0,Q2.length),f=F2,K2=ig,c2=oA();return k1=CA,zA=DA,l1=KA,H1=GA,ag=B0,V1=U,$2=A2,H0=f2,ig=K2,Q2=l2,Q2.splice(0,Q2.length,...n2),F2=f,B2=new DataView(H0.buffer,H0.byteOffset,H0.byteLength),c2}function Yt(){H0=null,V1=null,Q2=null}const Lt=new Array(147);for(let oA=0;oA<256;oA++)Lt[oA]=+("1e"+Math.floor(45.15-oA*.30103));var at=new KC({useRecords:!1});const tt=at.unpack;at.unpackMultiple;at.unpack;let Bi=new Float32Array(1);new Uint8Array(Bi.buffer,0,4);let Ct;try{Ct=new TextEncoder}catch{}let Ut,qa;const it=typeof Dg<"u",At=it?function(oA){return Dg.allocUnsafeSlow(oA)}:Uint8Array,za=it?Dg:Uint8Array,Sa=it?4294967296:2144337920;let t0,MC,v2,OA=0,i1,H2=null,yi;const hi=21760,Qi=/[\u0080-\uFFFF]/,Vg=Symbol("record-id");class ni extends KC{constructor(CA){super(CA),this.offset=0;let DA,KA,GA,B0,U=za.prototype.utf8Write?function(o0,J0){return t0.utf8Write(o0,J0,4294967295)}:Ct&&Ct.encodeInto?function(o0,J0){return Ct.encodeInto(o0,t0.subarray(J0)).written}:!1,A2=this;CA||(CA={});let f2=CA&&CA.sequential,l2=CA.structures||CA.saveStructures,n2=CA.maxSharedStructures;if(n2==null&&(n2=l2?32:0),n2>8160)throw new Error("Maximum maxSharedStructure is 8160");CA.structuredClone&&CA.moreTypes==null&&(this.moreTypes=!0);let f=CA.maxOwnStructures;f==null&&(f=l2?32:64),!this.structures&&CA.useRecords!=!1&&(this.structures=[]);let K2=n2>32||f+n2>64,c2=n2+64,u2=n2+f+64;if(u2>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let TA=[],S2=0,LA=0;this.pack=this.encode=function(o0,J0){if(t0||(t0=new At(8192),v2=t0.dataView||(t0.dataView=new DataView(t0.buffer,0,8192)),OA=0),i1=t0.length-10,i1-OA<2048?(t0=new At(t0.length),v2=t0.dataView||(t0.dataView=new DataView(t0.buffer,0,t0.length)),i1=t0.length-10,OA=0):OA=OA+7&2147483640,DA=OA,J0&li&&(OA+=J0&255),B0=A2.structuredClone?new Map:null,A2.bundleStrings&&typeof o0!="string"?(H2=[],H2.size=1/0):H2=null,GA=A2.structures,GA){GA.uninitialized&&(GA=A2._mergeStructures(A2.getStructures()));let d0=GA.sharedLength||0;if(d0>n2)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+GA.sharedLength);if(!GA.transitions){GA.transitions=Object.create(null);for(let U0=0;U0y2.offset>E2.offset?1:-1),Z0=U0.length,I2=-1;for(;d0&&Z0>0;){let y2=U0[--Z0].offset+DA;y2d0.position+DA?I2>=0&&(I2+=6):(I2>=0&&(v2.setUint32(d0.position+DA,v2.getUint32(d0.position+DA)+I2),I2=-1),d0=d0.previous,Z0++)}I2>=0&&d0&&v2.setUint32(d0.position+DA,v2.getUint32(d0.position+DA)+I2),OA+=U0.length*6,OA>i1&&yA(OA),A2.offset=OA;let t2=pi(t0.subarray(DA,OA),U0);return B0=null,t2}return A2.offset=OA,J0&Di?(t0.start=DA,t0.end=OA,t0):t0.subarray(DA,OA)}catch(d0){throw m0=d0,d0}finally{if(GA&&(RA(),KA&&A2.saveStructures)){let d0=GA.sharedLength||0,U0=t0.subarray(DA,OA),Z0=fi(GA,A2);if(!m0)return A2.saveStructures(Z0,Z0.isCompatible)===!1?A2.pack(o0,J0):(A2.lastNamedStructuresLength=d0,t0.length>1073741824&&(t0=null),U0)}t0.length>1073741824&&(t0=null),J0&wi&&(OA=DA)}};const RA=()=>{LA<10&&LA++;let o0=GA.sharedLength||0;if(GA.length>o0&&!f2&&(GA.length=o0),S2>1e4)GA.transitions=null,LA=0,S2=0,TA.length>0&&(TA=[]);else if(TA.length>0&&!f2){for(let J0=0,m0=TA.length;J0{var J0=o0.length;J0<16?t0[OA++]=144|J0:J0<65536?(t0[OA++]=220,t0[OA++]=J0>>8,t0[OA++]=J0&255):(t0[OA++]=221,v2.setUint32(OA,J0),OA+=4);for(let m0=0;m0{OA>i1&&(t0=yA(OA));var J0=typeof o0,m0;if(J0==="string"){let d0=o0.length;if(H2&&d0>=4&&d0<4096){if((H2.size+=d0)>hi){let t2,y2=(H2[0]?H2[0].length*3+H2[1].length:0)+10;OA+y2>i1&&(t0=yA(OA+y2));let E2;H2.position?(E2=H2,t0[OA]=200,OA+=3,t0[OA++]=98,t2=OA-DA,OA+=4,Fa(DA,_2,0),v2.setUint16(t2+DA-3,OA-DA-t2)):(t0[OA++]=214,t0[OA++]=98,t2=OA-DA,OA+=4),H2=["",""],H2.previous=E2,H2.size=0,H2.position=t2}let I2=Qi.test(o0);H2[I2?0:1]+=o0,t0[OA++]=193,_2(I2?-d0:d0);return}let U0;d0<32?U0=1:d0<256?U0=2:d0<65536?U0=3:U0=5;let Z0=d0*3;if(OA+Z0>i1&&(t0=yA(OA+Z0)),d0<64||!U){let I2,t2,y2,E2=OA+U0;for(I2=0;I2>6|192,t0[E2++]=t2&63|128):(t2&64512)===55296&&((y2=o0.charCodeAt(I2+1))&64512)===56320?(t2=65536+((t2&1023)<<10)+(y2&1023),I2++,t0[E2++]=t2>>18|240,t0[E2++]=t2>>12&63|128,t0[E2++]=t2>>6&63|128,t0[E2++]=t2&63|128):(t0[E2++]=t2>>12|224,t0[E2++]=t2>>6&63|128,t0[E2++]=t2&63|128);m0=E2-OA-U0}else m0=U(o0,OA+U0);m0<32?t0[OA++]=160|m0:m0<256?(U0<2&&t0.copyWithin(OA+2,OA+1,OA+1+m0),t0[OA++]=217,t0[OA++]=m0):m0<65536?(U0<3&&t0.copyWithin(OA+3,OA+2,OA+2+m0),t0[OA++]=218,t0[OA++]=m0>>8,t0[OA++]=m0&255):(U0<5&&t0.copyWithin(OA+5,OA+3,OA+3+m0),t0[OA++]=219,v2.setUint32(OA,m0),OA+=4),OA+=m0}else if(J0==="number")if(o0>>>0===o0)o0<32||o0<128&&this.useRecords===!1||o0<64&&!this.randomAccessStructure?t0[OA++]=o0:o0<256?(t0[OA++]=204,t0[OA++]=o0):o0<65536?(t0[OA++]=205,t0[OA++]=o0>>8,t0[OA++]=o0&255):(t0[OA++]=206,v2.setUint32(OA,o0),OA+=4);else if(o0>>0===o0)o0>=-32?t0[OA++]=256+o0:o0>=-128?(t0[OA++]=208,t0[OA++]=o0+256):o0>=-32768?(t0[OA++]=209,v2.setInt16(OA,o0),OA+=2):(t0[OA++]=210,v2.setInt32(OA,o0),OA+=4);else{let d0;if((d0=this.useFloat32)>0&&o0<4294967296&&o0>=-2147483648){t0[OA++]=202,v2.setFloat32(OA,o0);let U0;if(d0<4||(U0=o0*Lt[(t0[OA]&127)<<1|t0[OA+1]>>7])>>0===U0){OA+=4;return}else OA--}t0[OA++]=203,v2.setFloat64(OA,o0),OA+=8}else if(J0==="object"||J0==="function")if(!o0)t0[OA++]=192;else{if(B0){let U0=B0.get(o0);if(U0){if(!U0.id){let Z0=B0.idsToInsert||(B0.idsToInsert=[]);U0.id=Z0.push(U0)}t0[OA++]=214,t0[OA++]=112,v2.setUint32(OA,U0.id),OA+=4;return}else B0.set(o0,{offset:OA-DA})}let d0=o0.constructor;if(d0===Object)z0(o0);else if(d0===Array)IA(o0);else if(d0===Map)if(this.mapAsEmptyObject)t0[OA++]=128;else{m0=o0.size,m0<16?t0[OA++]=128|m0:m0<65536?(t0[OA++]=222,t0[OA++]=m0>>8,t0[OA++]=m0&255):(t0[OA++]=223,v2.setUint32(OA,m0),OA+=4);for(let[U0,Z0]of o0)_2(U0),_2(Z0)}else{for(let U0=0,Z0=Ut.length;U0(t0=y2,y2=null,OA+=R1,OA>i1&&yA(OA),{target:t0,targetView:v2,position:OA-R1}),_2)}finally{y2&&(t0=y2,v2=E2,OA=o1,i1=t0.length-10)}n1&&(n1.length+OA>i1&&yA(n1.length+OA),OA=Ei(n1,t0,OA,t2.type));return}}if(Array.isArray(o0))IA(o0);else{if(o0.toJSON){const U0=o0.toJSON();if(U0!==o0)return _2(U0)}if(J0==="function")return _2(this.writeFunction&&this.writeFunction(o0));z0(o0)}}}else if(J0==="boolean")t0[OA++]=o0?195:194;else if(J0==="bigint"){if(o0=-(BigInt(1)<0)t0[OA++]=207,v2.setBigUint64(OA,o0);else if(this.largeBigIntToFloat)t0[OA++]=203,v2.setFloat64(OA,Number(o0));else if(this.useBigIntExtension&&o0<2n**1023n&&o0>-(2n**1023n)){t0[OA++]=199,OA++,t0[OA++]=66;let d0=[],U0;do{let Z0=o0&0xffn;U0=(Z0&0x80n)===(o0<0n?0x80n:0n),d0.push(Z0),o0>>=8n}while(!((o0===0n||o0===-1n)&&U0));t0[OA-2]=d0.length;for(let Z0=d0.length;Z0>0;)t0[OA++]=Number(d0[--Z0]);return}else throw new RangeError(o0+" was too large to fit in MessagePack 64-bit integer format, use useBigIntExtension or set largeBigIntToFloat to convert to float-64");OA+=8}else if(J0==="undefined")this.encodeUndefinedAsNil?t0[OA++]=192:(t0[OA++]=212,t0[OA++]=0,t0[OA++]=0);else throw new Error("Unknown type: "+J0)},JA=this.variableMapSize||this.coercibleKeyAsNumber||this.skipValues?o0=>{let J0;if(this.skipValues){J0=[];for(let U0 in o0)(typeof o0.hasOwnProperty!="function"||o0.hasOwnProperty(U0))&&!this.skipValues.includes(o0[U0])&&J0.push(U0)}else J0=Object.keys(o0);let m0=J0.length;m0<16?t0[OA++]=128|m0:m0<65536?(t0[OA++]=222,t0[OA++]=m0>>8,t0[OA++]=m0&255):(t0[OA++]=223,v2.setUint32(OA,m0),OA+=4);let d0;if(this.coercibleKeyAsNumber)for(let U0=0;U0{t0[OA++]=222;let J0=OA-DA;OA+=2;let m0=0;for(let d0 in o0)(typeof o0.hasOwnProperty!="function"||o0.hasOwnProperty(d0))&&(_2(d0),_2(o0[d0]),m0++);t0[J0+++DA]=m0>>8,t0[J0+DA]=m0&255},e0=this.useRecords===!1?JA:CA.progressiveRecords&&!K2?o0=>{let J0,m0=GA.transitions||(GA.transitions=Object.create(null)),d0=OA++-DA,U0;for(let Z0 in o0)if(typeof o0.hasOwnProperty!="function"||o0.hasOwnProperty(Z0)){if(J0=m0[Z0],J0)m0=J0;else{let I2=Object.keys(o0),t2=m0;m0=GA.transitions;let y2=0;for(let E2=0,o1=I2.length;E2{let J0,m0=GA.transitions||(GA.transitions=Object.create(null)),d0=0;for(let Z0 in o0)(typeof o0.hasOwnProperty!="function"||o0.hasOwnProperty(Z0))&&(J0=m0[Z0],J0||(J0=m0[Z0]=Object.create(null),d0++),m0=J0);let U0=m0[Vg];U0?U0>=96&&K2?(t0[OA++]=((U0-=96)&31)+96,t0[OA++]=U0>>5):t0[OA++]=U0:x1(m0,m0.__keys__||Object.keys(o0),d0);for(let Z0 in o0)(typeof o0.hasOwnProperty!="function"||o0.hasOwnProperty(Z0))&&_2(o0[Z0])},SA=typeof this.useRecords=="function"&&this.useRecords,z0=SA?o0=>{SA(o0)?e0(o0):JA(o0)}:e0,yA=o0=>{let J0;if(o0>16777216){if(o0-DA>Sa)throw new Error("Packed buffer would be larger than maximum buffer size");J0=Math.min(Sa,Math.round(Math.max((o0-DA)*(o0>67108864?1.25:2),4194304)/4096)*4096)}else J0=(Math.max(o0-DA<<2,t0.length-1)>>12)+1<<12;let m0=new At(J0);return v2=m0.dataView||(m0.dataView=new DataView(m0.buffer,0,J0)),o0=Math.min(o0,t0.length),t0.copy?t0.copy(m0,0,DA,o0):m0.set(t0.slice(DA,o0)),OA-=DA,DA=0,i1=m0.length-10,t0=m0},x1=(o0,J0,m0)=>{let d0=GA.nextId;d0||(d0=64),d0=u2&&(d0=c2),GA.nextId=d0+1);let U0=J0.highByte=d0>=96&&K2?d0-96>>5:-1;o0[Vg]=d0,o0.__keys__=J0,GA[d0-64]=J0,d0=0?(t0[OA++]=(d0&31)+96,t0[OA++]=U0):t0[OA++]=d0):(U0>=0?(t0[OA++]=213,t0[OA++]=114,t0[OA++]=(d0&31)+96,t0[OA++]=U0):(t0[OA++]=212,t0[OA++]=114,t0[OA++]=d0),m0&&(S2+=LA*m0),TA.length>=f&&(TA.shift()[Vg]=0),TA.push(o0),_2(J0))},W1=(o0,J0,m0,d0)=>{let U0=t0,Z0=OA,I2=i1,t2=DA;t0=MC,OA=0,DA=0,t0||(MC=t0=new At(8192)),i1=t0.length-10,x1(o0,J0,d0),MC=t0;let y2=OA;if(t0=U0,OA=Z0,i1=I2,DA=t2,y2>1){let E2=OA+y2-1;E2>i1&&yA(E2);let o1=m0+DA;t0.copyWithin(o1+y2,o1+1,OA),t0.set(MC.slice(0,y2),o1),OA=E2}else t0[m0+DA]=MC[0]},Z1=o0=>{let J0=yi(o0,t0,DA,OA,GA,yA,(m0,d0,U0)=>{if(U0)return KA=!0;OA=d0;let Z0=t0;return _2(m0),RA(),Z0!==t0?{position:OA,targetView:v2,target:t0}:OA},this);if(J0===0)return z0(o0);OA=J0}}useBuffer(CA){t0=CA,t0.dataView||(t0.dataView=new DataView(t0.buffer,t0.byteOffset,t0.byteLength)),OA=0}set position(CA){OA=CA}get position(){return OA}clearSharedData(){this.structures&&(this.structures=[]),this.typedStructs&&(this.typedStructs=[])}}qa=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ka];Ut=[{pack(oA,CA,DA){let KA=oA.getTime()/1e3;if((this.useTimestamp32||oA.getMilliseconds()===0)&&KA>=0&&KA<4294967296){let{target:GA,targetView:B0,position:U}=CA(6);GA[U++]=214,GA[U++]=255,B0.setUint32(U,KA)}else if(KA>0&&KA<4294967296){let{target:GA,targetView:B0,position:U}=CA(10);GA[U++]=215,GA[U++]=255,B0.setUint32(U,oA.getMilliseconds()*4e6+(KA/1e3/4294967296>>0)),B0.setUint32(U+4,KA)}else if(isNaN(KA)){if(this.onInvalidDate)return CA(0),DA(this.onInvalidDate());let{target:GA,targetView:B0,position:U}=CA(3);GA[U++]=212,GA[U++]=255,GA[U++]=255}else{let{target:GA,targetView:B0,position:U}=CA(15);GA[U++]=199,GA[U++]=12,GA[U++]=255,B0.setUint32(U,oA.getMilliseconds()*1e6),B0.setBigInt64(U+4,BigInt(Math.floor(KA)))}}},{pack(oA,CA,DA){if(this.setAsEmptyObject)return CA(0),DA({});let KA=Array.from(oA),{target:GA,position:B0}=CA(this.moreTypes?3:0);this.moreTypes&&(GA[B0++]=212,GA[B0++]=115,GA[B0++]=0),DA(KA)}},{pack(oA,CA,DA){let{target:KA,position:GA}=CA(this.moreTypes?3:0);this.moreTypes&&(KA[GA++]=212,KA[GA++]=101,KA[GA++]=0),DA([oA.name,oA.message,oA.cause])}},{pack(oA,CA,DA){let{target:KA,position:GA}=CA(this.moreTypes?3:0);this.moreTypes&&(KA[GA++]=212,KA[GA++]=120,KA[GA++]=0),DA([oA.source,oA.flags])}},{pack(oA,CA){this.moreTypes?ba(oA,16,CA):va(it?Dg.from(oA):new Uint8Array(oA),CA)}},{pack(oA,CA){let DA=oA.constructor;DA!==za&&this.moreTypes?ba(oA,La.indexOf(DA.name),CA):va(oA,CA)}},{pack(oA,CA){let{target:DA,position:KA}=CA(1);DA[KA]=193}}];function ba(oA,CA,DA,KA){let GA=oA.byteLength;if(GA+1<256){var{target:B0,position:U}=DA(4+GA);B0[U++]=199,B0[U++]=GA+1}else if(GA+1<65536){var{target:B0,position:U}=DA(5+GA);B0[U++]=200,B0[U++]=GA+1>>8,B0[U++]=GA+1&255}else{var{target:B0,position:U,targetView:A2}=DA(7+GA);B0[U++]=201,A2.setUint32(U,GA+1),U+=4}B0[U++]=116,B0[U++]=CA,oA.buffer||(oA=new Uint8Array(oA)),B0.set(new Uint8Array(oA.buffer,oA.byteOffset,oA.byteLength),U)}function va(oA,CA){let DA=oA.byteLength;var KA,GA;if(DA<256){var{target:KA,position:GA}=CA(DA+2);KA[GA++]=196,KA[GA++]=DA}else if(DA<65536){var{target:KA,position:GA}=CA(DA+3);KA[GA++]=197,KA[GA++]=DA>>8,KA[GA++]=DA&255}else{var{target:KA,position:GA,targetView:B0}=CA(DA+5);KA[GA++]=198,B0.setUint32(GA,DA),GA+=4}KA.set(oA,GA)}function Ei(oA,CA,DA,KA){let GA=oA.length;switch(GA){case 1:CA[DA++]=212;break;case 2:CA[DA++]=213;break;case 4:CA[DA++]=214;break;case 8:CA[DA++]=215;break;case 16:CA[DA++]=216;break;default:GA<256?(CA[DA++]=199,CA[DA++]=GA):GA<65536?(CA[DA++]=200,CA[DA++]=GA>>8,CA[DA++]=GA&255):(CA[DA++]=201,CA[DA++]=GA>>24,CA[DA++]=GA>>16&255,CA[DA++]=GA>>8&255,CA[DA++]=GA&255)}return CA[DA++]=KA,CA.set(oA,DA),DA+=GA,DA}function pi(oA,CA){let DA,KA=CA.length*6,GA=oA.length-KA;for(;DA=CA.pop();){let B0=DA.offset,U=DA.id;oA.copyWithin(B0+KA,B0,GA),KA-=6;let A2=B0+KA;oA[A2++]=214,oA[A2++]=105,oA[A2++]=U>>24,oA[A2++]=U>>16&255,oA[A2++]=U>>8&255,oA[A2++]=U&255,GA=B0}return oA}function Fa(oA,CA,DA){if(H2.length>0){v2.setUint32(H2.position+oA,OA+DA-H2.position-oA),H2.stringsPosition=OA-oA;let KA=H2;H2=null,CA(KA[0]),CA(KA[1])}}function fi(oA,CA){return oA.isCompatible=DA=>{let KA=!DA||(CA.lastNamedStructuresLength||0)===DA.length;return KA||CA._mergeStructures(DA),KA},oA}let Ta=new ni({useRecords:!1});const wg=Ta.pack;Ta.pack;const Di=512,wi=1024,li=2048;function et(oA,CA=0){if(CA+=1,CA>10)return oA;if(typeof oA=="string")return[[/\u001B\[\d+m/g,""],[/\\n/g,""],[/(Uint8Array\(\d+\)) \[.+]/g,KA=>`${KA.slice(0,20)}...]`],[/({ ('\d+': \d+,?\s*)+})/g,KA=>`${KA.slice(0,20)}...}`],[/<(Buffer) ([a-f\d\s]+)>/g,KA=>`${KA.slice(0,20)}...>`],[/{"type":"Buffer","data":\[(\d+,?\s*)+]}/g,KA=>`${KA.slice(0,40)}...]}`]].reduce((KA,[GA,B0])=>KA.replaceAll(GA,B0),oA);if(Array.isArray(oA))return oA.map(DA=>et(DA,CA));if(typeof oA=="object"){const DA={};for(const KA in oA){const GA=oA[KA];DA[et(KA,CA)]=et(GA,CA)}return DA}return oA}const ki=Ht.formatArgs;Ht.formatArgs=function(oA){for(let CA=0;CA-1}function Eo(oA,CA){var DA=this.__data__,KA=ot(DA,oA);return KA<0?(++this.size,DA.push([oA,CA])):DA[KA][1]=CA,this}function Wg(oA){var CA=-1,DA=oA==null?0:oA.length;for(this.clear();++CA=255)throw new TypeError("Alphabet too long");for(var CA=new Uint8Array(256),DA=0;DA>>0,IA=new Uint8Array(RA);S2!==LA;){for(var _2=c2[S2],JA=0,e0=RA-1;(_2!==0||JA>>0,IA[e0]=_2%U>>>0,_2=_2/U>>>0;if(_2!==0)throw new Error("Non-zero carry");TA=JA,S2++}for(var SA=RA-TA;SA!==RA&&IA[SA]===0;)SA++;for(var z0=A2.repeat(u2);SA>>0,RA=new Uint8Array(LA);c2[u2];){var IA=CA[c2.charCodeAt(u2)];if(IA===255)return;for(var _2=0,JA=LA-1;(IA!==0||_2>>0,RA[JA]=IA%256>>>0,IA=IA/256>>>0;if(IA!==0)throw new Error("Non-zero carry");S2=_2,u2++}for(var e0=LA-S2;e0!==LA&&RA[e0]===0;)e0++;for(var SA=new Uint8Array(TA+(LA-e0)),z0=TA;e0!==LA;)SA[z0++]=RA[e0++];return SA}function K2(c2){var u2=f(c2);if(u2)return u2;throw new Error("Non-base"+U+" character")}return{encode:n2,decodeUnsafe:f,decode:K2}}var Fo=vo;const No=Fo,mo="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var Mo=No(mo);const Go=Ma(Mo);var{encode:Ko,decode:xo}=Go,J1={encode:oA=>Ko(oA),decode:xo,detect:oA=>/^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$/.test(oA)},zt=oA=>({publicKey:J1.encode(oA.publicKey),secretKey:J1.encode(oA.privateKey)}),u1=(oA,CA="base58")=>{if(CA==="utf8")return new TextEncoder().encode(oA);if(CA==="base58")return J1.decode(oA);throw new Error(`Unknown encoding: ${CA}`)},UC=bo(oA=>{const CA=typeof oA=="string"?u1(oA,"utf8"):oA,DA=J1.decode("H5B4DLSXw5xwNYFdz1Wr6e");if(CA.length>=16)return L2.crypto_generichash(32,CA,DA);const KA=L2.crypto_pwhash_OPSLIMIT_INTERACTIVE,GA=L2.crypto_pwhash_MEMLIMIT_INTERACTIVE;return L2.crypto_pwhash(32,CA,DA,KA,GA,L2.crypto_pwhash_ALG_DEFAULT)}),Yo=oA=>{const CA=oA?L2.crypto_box_seed_keypair(UC(oA)):L2.crypto_box_keypair();return zt(CA)},Va=({secret:oA,recipientPublicKey:CA,senderSecretKey:DA})=>{const KA=wg(oA),GA=L2.randombytes_buf(L2.crypto_box_NONCEBYTES);let B0;if(DA===void 0){const f2=Za.keyPair();DA=f2.secretKey,B0=f2.publicKey}else B0=void 0;const U=L2.crypto_box_easy(KA,GA,u1(CA),u1(DA));return wg({nonce:GA,message:U,senderPublicKey:B0})},Wa=({cipher:oA,recipientSecretKey:CA,senderPublicKey:DA})=>{const KA=tt(oA),{nonce:GA,message:B0}=KA;DA=DA??KA.senderPublicKey;const U=L2.crypto_box_open_easy(B0,GA,u1(DA),u1(CA));return tt(U)},Uo=({secret:oA,recipientPublicKey:CA,senderSecretKey:DA})=>{const KA=Va({secret:oA,recipientPublicKey:CA,senderSecretKey:DA});return J1.encode(KA)},Ho=({cipher:oA,recipientSecretKey:CA,senderPublicKey:DA})=>{const KA=u1(oA);return Wa({cipher:KA,recipientSecretKey:CA,senderPublicKey:DA})},Za={keyPair:Yo,encryptBytes:Va,decryptBytes:Wa,encrypt:Uo,decrypt:Ho},Jo=(oA,CA)=>J1.encode($a(oA,CA)),$a=(oA,CA)=>{const DA=u1(oA,"utf8"),KA=wg(CA);return L2.crypto_generichash(32,KA,DA)},Ai=(oA=32)=>L2.randombytes_buf(oA),Ro=(oA=16)=>J1.encode(Ai(oA*3)).slice(0,oA),Lo=oA=>{const CA=oA?L2.crypto_sign_seed_keypair(UC(oA)):L2.crypto_sign_keypair();return zt(CA)},Po=(oA,CA)=>{const DA=wg(oA),KA=u1(CA),GA=L2.crypto_sign_detached(DA,KA);return J1.encode(GA)},qo=({payload:oA,signature:CA,publicKey:DA})=>{const KA=wg(oA),GA=u1(CA),B0=u1(DA);return L2.crypto_sign_verify_detached(GA,KA,B0)},zo={keyPair:Lo,sign:Po,verify:qo},gi=(oA,CA)=>{const DA=wg(oA),KA=UC(CA),GA=L2.randombytes_buf(L2.crypto_secretbox_NONCEBYTES),B0=L2.crypto_secretbox_easy(DA,GA,KA);return wg({nonce:GA,message:B0})},Ci=(oA,CA)=>{const DA=UC(CA),{nonce:KA,message:GA}=tt(oA),B0=L2.crypto_secretbox_open_easy(GA,KA,DA);return tt(B0)},To=(oA,CA)=>{const DA=gi(oA,CA);return J1.encode(DA)},jo=(oA,CA)=>{const DA=u1(oA);return Ci(DA,CA)},Oo={encryptBytes:gi,decryptBytes:Ci,encrypt:To,decrypt:jo};await L2.ready;const Wo=Object.freeze(Object.defineProperty({__proto__:null,asymmetric:Za,base58:J1,hash:Jo,hashBytes:$a,keyToBytes:u1,keypairToBase58:zt,randomKey:Ro,randomKeyBytes:Ai,signatures:zo,stretch:UC,symmetric:Oo},Symbol.toStringTag,{value:"Module"}));export{Wg as L,po as M,rt as S,Ji as a,Ki as b,kg as c,bo as d,Ao as e,ui as f,Xa as g,zo as h,Oa as i,Jo as j,Za as k,Ro as l,qt as m,Vo as n,Oo as o,wg as p,Ai as q,Pt as r,UC as s,qi as t,tt as u,J1 as v,et as w,$a as x,Wo as y}; +//# sourceMappingURL=index-BXtvCgpn.js.map diff --git a/index-Blps0pow.js.map b/index-BXtvCgpn.js.map similarity index 99% rename from index-Blps0pow.js.map rename to index-BXtvCgpn.js.map index 0835644..3201fe9 100644 --- a/index-Blps0pow.js.map +++ b/index-BXtvCgpn.js.map @@ -1 +1 @@ -{"version":3,"file":"index-Blps0pow.js","sources":["../../../../node_modules/libsodium-sumo/dist/modules-sumo/libsodium-sumo.js","../../../../node_modules/libsodium-wrappers-sumo/dist/modules-sumo/libsodium-wrappers.js","../../../../node_modules/msgpackr/unpack.js","../../../../node_modules/msgpackr/pack.js","../../../../node_modules/@localfirst/shared/dist/truncateHashes.js","../../../../node_modules/@localfirst/shared/dist/debug.js","../../../../node_modules/lodash-es/_freeGlobal.js","../../../../node_modules/lodash-es/_root.js","../../../../node_modules/lodash-es/_Symbol.js","../../../../node_modules/lodash-es/_getRawTag.js","../../../../node_modules/lodash-es/_objectToString.js","../../../../node_modules/lodash-es/_baseGetTag.js","../../../../node_modules/lodash-es/isObject.js","../../../../node_modules/lodash-es/isFunction.js","../../../../node_modules/lodash-es/_coreJsData.js","../../../../node_modules/lodash-es/_isMasked.js","../../../../node_modules/lodash-es/_toSource.js","../../../../node_modules/lodash-es/_baseIsNative.js","../../../../node_modules/lodash-es/_getValue.js","../../../../node_modules/lodash-es/_getNative.js","../../../../node_modules/lodash-es/eq.js","../../../../node_modules/lodash-es/_nativeCreate.js","../../../../node_modules/lodash-es/_hashClear.js","../../../../node_modules/lodash-es/_hashDelete.js","../../../../node_modules/lodash-es/_hashGet.js","../../../../node_modules/lodash-es/_hashHas.js","../../../../node_modules/lodash-es/_hashSet.js","../../../../node_modules/lodash-es/_Hash.js","../../../../node_modules/lodash-es/_listCacheClear.js","../../../../node_modules/lodash-es/_assocIndexOf.js","../../../../node_modules/lodash-es/_listCacheDelete.js","../../../../node_modules/lodash-es/_listCacheGet.js","../../../../node_modules/lodash-es/_listCacheHas.js","../../../../node_modules/lodash-es/_listCacheSet.js","../../../../node_modules/lodash-es/_ListCache.js","../../../../node_modules/lodash-es/_Map.js","../../../../node_modules/lodash-es/_mapCacheClear.js","../../../../node_modules/lodash-es/_isKeyable.js","../../../../node_modules/lodash-es/_getMapData.js","../../../../node_modules/lodash-es/_mapCacheDelete.js","../../../../node_modules/lodash-es/_mapCacheGet.js","../../../../node_modules/lodash-es/_mapCacheHas.js","../../../../node_modules/lodash-es/_mapCacheSet.js","../../../../node_modules/lodash-es/_MapCache.js","../../../../node_modules/lodash-es/memoize.js","../../../../node_modules/@localfirst/shared/dist/memoize.js","../../../../node_modules/base-x/src/index.js","../../../../node_modules/bs58/index.js","../../../../node_modules/@localfirst/crypto/dist/index.js"],"sourcesContent":["!function(A){function I(A){\"use strict\";var I;void 0===(I=A)&&(I={});var g=I;\"object\"!=typeof g.sodium&&(\"object\"==typeof global?g=global:\"object\"==typeof window&&(g=window));var C=I;return I.ready=new Promise((function(A,I){(B=C).onAbort=I,B.print=function(A){},B.printErr=function(A){},B.onRuntimeInitialized=function(){try{B._crypto_secretbox_keybytes(),A()}catch(A){I(A)}},B.useBackupModule=function(){return new Promise((function(A,I){(B={}).onAbort=I,B.onRuntimeInitialized=function(){Object.keys(C).forEach((function(A){\"getRandomValue\"!==A&&delete C[A]})),Object.keys(B).forEach((function(A){C[A]=B[A]})),A()};var g,B=void 0!==B?B:{},Q=\"object\"==typeof window,i=\"function\"==typeof importScripts,o=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node,E=Object.assign({},B),a=\"\";if(o){var _=require(\"fs\"),c=require(\"path\");a=__dirname+\"/\",g=A=>(A=Y(A)?new URL(A):c.normalize(A),_.readFileSync(A)),!B.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\\\/g,\"/\"),process.argv.slice(2),\"undefined\"!=typeof module&&(module.exports=B)}else(Q||i)&&(i?a=self.location.href:\"undefined\"!=typeof document&&document.currentScript&&(a=document.currentScript.src),a=a.startsWith(\"blob:\")?\"\":a.substr(0,a.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1),i&&(g=A=>{var I=new XMLHttpRequest;return I.open(\"GET\",A,!1),I.responseType=\"arraybuffer\",I.send(null),new Uint8Array(I.response)}));B.print;var t,r=B.printErr||void 0;Object.assign(B,E),E=null,B.arguments&&B.arguments,B.thisProgram&&B.thisProgram,B.quit&&B.quit,B.wasmBinary&&(t=B.wasmBinary);var e,y={Memory:function(A){this.buffer=new ArrayBuffer(65536*A.initial)},Module:function(A){},Instance:function(A,I){this.exports=function(A){for(var I,g=new Uint8Array(123),C=25;C>=0;--C)g[48+C]=52+C,g[65+C]=C,g[97+C]=26+C;function B(A,I,C){for(var B,Q,i=0,o=I,E=C.length,a=I+(3*E>>2)-(\"=\"==C[E-2])-(\"=\"==C[E-1]);i>4,o>2),o>>0>P>>>0?a+1|0:a)|0,a=(QA=(_=P)>>>0>(P=P+QA|0)>>>0?a+1|0:a)+yA|0,iA=eA=P+rA|0,eA=a=eA>>>0

>>0?a+1|0:a,P=UI(P^(o[A+80|0]|o[A+81|0]<<8|o[A+82|0]<<16|o[A+83|0]<<24)^-79577749,QA^(o[A+84|0]|o[A+85|0]<<8|o[A+86|0]<<16|o[A+87|0]<<24)^528734635,32),kA=a=f,a=a+1013904242|0,QA=P,V=a=(P=P-23791573|0)>>>0<4271175723?a+1|0:a,_A=UI(P^aA,a^_A,40),a=(a=eA)+(eA=f)|0,aA=UI(QA^(h=aA=_A+iA|0),kA^(D=h>>>0<_A>>>0?a+1|0:a),48),a=V+(R=f)|0,k=a=(aA=P+(p=aA)|0)>>>0

>>0?a+1|0:a,aA=a=UI(_A^(n=aA),eA^a,1),V=P=f,eA=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,kA=a=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,tA=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,P=(_A=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24)+(QA=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24)|0,a=(GA=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24)+(KA=o[A+44|0]|o[A+45|0]<<8|o[A+46|0]<<16|o[A+47|0]<<24)|0,a=(o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24)+(P>>>0>>0?a+1|0:a)|0,a=kA+(iA=(_=P)>>>0>(P=P+tA|0)>>>0?a+1|0:a)|0,a=(tA=P+eA|0)>>>0

>>0?a+1|0:a,_=UI(P^(o[A+72|0]|o[A+73|0]<<8|o[A+74|0]<<16|o[A+75|0]<<24)^725511199,iA^(o[A+76|0]|o[A+77|0]<<8|o[A+78|0]<<16|o[A+79|0]<<24)^-1694144372,32),e=UI(QA^(c=_-2067093701|0),KA^(x=(J=P=f)-((_>>>0<2067093701)+1150833018|0)|0),40),a=(L=f)+a|0,a=(Y=(F=P=e+tA|0)>>>0>>0?a+1|0:a)+V|0,a=(F>>>0>(P=F+aA|0)>>>0?a+1|0:a)+X|0,a=(QA=(t=P)>>>0>(P=P+oA|0)>>>0?a+1|0:a)+z|0,l=z=P+g|0,s=a=z>>>0

>>0?a+1|0:a,w=aA,wA=V,V=P,iA=QA,aA=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,P=a=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,KA=a=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i=QA=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,X=a,a=(FA=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24)+(r=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24)|0,a=i+((z=o[A+32|0]|o[A+33|0]<<8|o[A+34|0]<<16|o[A+35|0]<<24)>>>0>(t=z+(QA=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24)|0)>>>0?a+1|0:a)|0,a=(tA=(X=t+X|0)>>>0>>0?a+1|0:a)+P|0,fA=t=X+aA|0,t=a=t>>>0>>0?a+1|0:a,y=z,z=UI(X^(o[A+64|0]|o[A+65|0]<<8|o[A+66|0]<<16|o[A+67|0]<<24)^-1377402159,tA^(o[A+68|0]|o[A+69|0]<<8|o[A+70|0]<<16|o[A+71|0]<<24)^1359893119,32),tA=a=f,a=a+1779033703|0,X=z,U=a=(z=z-205731576|0)>>>0<4089235720?a+1|0:a,r=UI(y^(S=z),a^r,40),a=(m=f)+t|0,y=UI(X^(t=z=r+fA|0),tA^(G=r>>>0>t>>>0?a+1|0:a),48),a=UI(y^V,(T=f)^iA,32),W=z=f,u=a,B=a=o[I+60|0]|o[I+61|0]<<8|o[I+62|0]<<16|o[I+63|0]<<24,tA=fA=o[I+56|0]|o[I+57|0]<<8|o[I+58|0]<<16|o[I+59|0]<<24,K=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,z=(iA=o[I+48|0]|o[I+49|0]<<8|o[I+50|0]<<16|o[I+51|0]<<24)+(X=o[A+56|0]|o[A+57|0]<<8|o[A+58|0]<<16|o[A+59|0]<<24)|0,a=(SA=o[I+52|0]|o[I+53|0]<<8|o[I+54|0]<<16|o[I+55|0]<<24)+(d=o[A+60|0]|o[A+61|0]<<8|o[A+62|0]<<16|o[A+63|0]<<24)|0,a=(o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24)+(z>>>0>>0?a+1|0:a)|0,a=B+(V=(M=z)>>>0>(z=K+z|0)>>>0?a+1|0:a)|0,a=(K=z+tA|0)>>>0>>0?a+1|0:a,V=UI(z^(o[A+88|0]|o[A+89|0]<<8|o[A+90|0]<<16|o[A+91|0]<<24)^327033209,V^(o[A+92|0]|o[A+93|0]<<8|o[A+94|0]<<16|o[A+95|0]<<24)^1541459225,32),X=UI(X^(tA=V+1595750129|0),(M=d)^(d=(b=z=f)-((V>>>0<2699217167)+1521486533|0)|0),40),a=(IA=f)+a|0,z=UI((K=z=X+K|0)^V,b^(M=K>>>0>>0?a+1|0:a),48),a=d+($=f)|0,H=a=(z=tA+(d=z)|0)>>>0>>0?a+1|0:a,a=W+a|0,O=w^(V=u+(b=z)|0),w=a=V>>>0>>0?a+1|0:a,tA=UI(O,a^wA,40),a=(wA=f)+s|0,z=UI(l=u^(s=z=tA+l|0),W^(u=s>>>0>>0?a+1|0:a),48),a=w+(CA=f)|0,W=a=(w=V+(l=z)|0)>>>0>>0?a+1|0:a,z=(v=UI(w^tA,wA^a,1))+(V=o[I+72|0]|o[I+73|0]<<8|o[I+74|0]<<16|o[I+75|0]<<24)|0,a=(hA=f)+(wA=o[I+76|0]|o[I+77|0]<<8|o[I+78|0]<<16|o[I+79|0]<<24)|0,nA=z,q=z>>>0>>0?a+1|0:a,Z=sA,z=o[I+96|0]|o[I+97|0]<<8|o[I+98|0]<<16|o[I+99|0]<<24,tA=a=o[I+100|0]|o[I+101|0]<<8|o[I+102|0]<<16|o[I+103|0]<<24,X=(a=h)+(h=UI(b^X,H^IA,1))|0,a=(b=f)+D|0,a=(h>>>0>X>>>0?a+1|0:a)+tA|0,a=(D=(D=X)>>>0>(X=z+X|0)>>>0?a+1|0:a)+Z|0,O=H=X+gA|0,H=a=H>>>0>>0?a+1|0:a,F=UI(_^F,Y^J,48),Y=a=UI(F^X,(J=f)^D,32),a=U+T|0,a=(IA=X=f)+(S=(X=y+S|0)>>>0>>0?a+1|0:a)|0,U=a=(D=X)>>>0>(y=D+Y|0)>>>0?a+1|0:a,h=UI(y^h,b^a,40),a=(T=f)+H|0,a=(b=h>>>0>(H=X=h+O|0)>>>0?a+1|0:a)+q|0,a=(_=H>>>0>(X=H+nA|0)>>>0?a+1|0:a)+pA|0,nA=q=X+EA|0,q=a=q>>>0>>0?a+1|0:a,O=X,Z=_,X=o[I+116|0]|o[I+117|0]<<8|o[I+118|0]<<16|o[I+119|0]<<24,I=o[I+112|0]|o[I+113|0]<<8|o[I+114|0]<<16|o[I+115|0]<<24,r=UI(r^D,S^m,1),a=(m=f)+M|0,a=((_=r+K|0)>>>0>>0?a+1|0:a)+X|0,a=(D=(S=_)>>>0>(_=I+_|0)>>>0?a+1|0:a)+pA|0,MA=S=_+EA|0,S=a=S>>>0<_>>>0?a+1|0:a,a=UI(_^p,D^R,32),AA=_=f,p=a,D=_,a=J+x|0,F=_=c+F|0,K=a=_>>>0>>0?a+1|0:a,a=a+D|0,M=_=_+p|0,R=a=F>>>0>_>>>0?a+1|0:a,D=UI(_^r,m^a,40),a=(m=f)+S|0,p=UI((_=D+MA|0)^p,AA^(c=_>>>0>>0?a+1|0:a),48),a=UI(p^O,(MA=f)^Z,32),AA=r=f,S=a,O=r,e=UI(e^F,K^L,1),a=G+(F=f)|0,a=((r=t)>>>0>(t=t+e|0)>>>0?a+1|0:a)+BA|0,a=(t=(r=t+j|0)>>>0>>0?a+1|0:a)+wA|0,Z=G=r+V|0,G=a=G>>>0>>0?a+1|0:a,K=e,r=UI(r^d,t^$,32),a=(d=f)+k|0,n=UI(K^(t=e=r+n|0),(k=r>>>0>t>>>0?a+1|0:a)^F,40),a=($=f)+G|0,F=e=n+Z|0,e=UI(r^e,d^(G=e>>>0>>0?a+1|0:a),48),a=k+(E=f)|0,k=e,d=a=(e=t+e|0)>>>0>>0?a+1|0:a,a=a+O|0,a=(K=e)>>>0>(e=e+S|0)>>>0?a+1|0:a,O=e,e^=v,v=a,r=UI(e,hA^a,40),a=(hA=f)+q|0,q=e=r+nA|0,a=Q+(Z=r>>>0>e>>>0?a+1|0:a)|0,nA=e=e+g|0,J=a=e>>>0>>0?a+1|0:a,e=_,x=gA,L=sA,_=UI(Y^H,b^IA,48),a=U+(IA=f)|0,Y=_,U=a=(t=y+_|0)>>>0>>0?a+1|0:a,_=UI(t^h,T^a,1),a=(y=f)+L|0,a=((h=_+x|0)>>>0<_>>>0?a+1|0:a)+c|0,a=SA+(e=(c=e+h|0)>>>0>>0?a+1|0:a)|0,H=h=c+iA|0,h=a=h>>>0>>0?a+1|0:a,c=UI(c^k,e^E,32),a=W+(b=f)|0,k=c,w=a=(c=w+c|0)>>>0>>0?a+1|0:a,e=UI(_^c,a^y,40),a=(a=h)+(h=f)|0,y=_=e+H|0,_=UI(_^k,b^(H=_>>>0>>0?a+1|0:a),48),a=w+(T=f)|0,b=_,W=a=(w=c+_|0)>>>0>>0?a+1|0:a,_=UI(e^w,h^a,1),a=(h=f)+J|0,a=B+(e=(c=_+nA|0)>>>0<_>>>0?a+1|0:a)|0,nA=k=c+fA|0,k=a=k>>>0>>0?a+1|0:a,J=_,x=h,a=R+MA|0,a=(_=p+M|0)>>>0

>>0?a+1|0:a,p=_,M=a,a=UI(_^D,m^a,1),D=h=f,_=a,a=G+X|0,a=((F=I+F|0)>>>0>>0?a+1|0:a)+h|0,a=DA+(F=(h=_+F|0)>>>0>>0?a+1|0:a)|0,R=G=h+oA|0,G=a=G>>>0>>0?a+1|0:a,h=UI(h^l,F^CA,32),a=U+(l=f)|0,F=h,U=a=(U=t)>>>0>(t=t+h|0)>>>0?a+1|0:a,h=UI(_^t,a^D,40),a=(m=f)+G|0,D=_=h+R|0,_=UI(G=_^F,l^(F=_>>>0>>0?a+1|0:a),48),a=U+(CA=f)|0,U=_,G=_=t+_|0,l=a=_>>>0>>0?a+1|0:a,R=c,L=e,_=UI(n^K,d^$,1),a=(t=f)+N|0,a=u+((c=_+cA|0)>>>0<_>>>0?a+1|0:a)|0,a=BA+(e=(c=c+s|0)>>>0>>0?a+1|0:a)|0,u=s=c+j|0,s=a=s>>>0>>0?a+1|0:a,n=_,_=(c=UI(c^Y,e^IA,32))+p|0,a=(p=f)+M|0,e=_,t=UI(_^n,(Y=_>>>0>>0?a+1|0:a)^t,40),a=(IA=f)+s|0,s=_=t+u|0,K=UI(_^c,p^(u=_>>>0>>0?a+1|0:a),48),c=UI(K^R,(a=L)^(L=f),32),a=(R=f)+l|0,p=_=c+G|0,n=UI(_^J,(M=_>>>0>>0?a+1|0:a)^x,40),a=(J=f)+k|0,k=_=n+nA|0,_=UI(_^c,R^(d=_>>>0>>0?a+1|0:a),48),a=M+($=f)|0,M=_,R=a=(c=p)>>>0>(p=p+_|0)>>>0?a+1|0:a,_=UI(p^n,J^a,1),a=pA+(nA=f)|0,J=_,MA=_=EA+_|0,n=a=_>>>0>>0?a+1|0:a,c=rA,_=UI(h^G,m^l,1),a=H+(h=f)|0,a=((G=y)>>>0>(y=_+y|0)>>>0?a+1|0:a)+yA|0,a=(G=(c=c+y|0)>>>0>>0?a+1|0:a)+kA|0,x=y=c+eA|0,H=a=y>>>0>>0?a+1|0:a,l=_,y=UI(S^q,Z^AA,48),a=UI(y^c,(m=f)^G,32),AA=_=f,S=a,c=_,a=Y+L|0,a=(_=e+K|0)>>>0>>0?a+1|0:a,e=_,Y=a,a=a+c|0,G=_=_+S|0,K=a=e>>>0>_>>>0?a+1|0:a,c=UI(_^l,a^h,40),a=(a=H)+(H=f)|0,l=_=c+x|0,q=a=_>>>0>>0?a+1|0:a,a=a+n|0,Z=a=(h=_+MA|0)>>>0<_>>>0?a+1|0:a,n=a,_=UI(t^e,Y^IA,1),a=P+(t=f)|0,a=F+((e=_+aA|0)>>>0>>0?a+1|0:a)|0,a=tA+(D=(e=e+D|0)>>>0>>0?a+1|0:a)|0,x=F=e+z|0,F=a=F>>>0>>0?a+1|0:a,Y=_,a=UI(e^b,D^T,32),L=_=f,e=a,D=_,a=m+v|0,b=_=y+O|0,v=a=_>>>0>>0?a+1|0:a,a=a+D|0,a=(y=_+e|0)>>>0<_>>>0?a+1|0:a,_=y^Y,Y=a,D=UI(_,a^t,40),a=(T=f)+F|0,t=_=D+x|0,O=UI(_^e,L^(F=_>>>0>>0?a+1|0:a),48),a=UI(O^h,(IA=f)^n,32),MA=_=f,x=a,n=_,_=UI(r^b,v^hA,1),a=u+(r=f)|0,a=FA+((e=_+s|0)>>>0>>0?a+1|0:a)|0,a=(s=(e=e+QA|0)>>>0>>0?a+1|0:a)+GA|0,b=u=e+_A|0,u=a=u>>>0>>0?a+1|0:a,e=UI(e^U,s^CA,32),a=W+(v=f)|0,U=e,s=r,r=a=(e=w+e|0)>>>0>>0?a+1|0:a,s=UI(_^e,s^a,40),a=(CA=f)+u|0,w=_=s+b|0,_=UI(b=_^U,v^(U=_>>>0>>0?a+1|0:a),48),a=r+(m=f)|0,r=_,u=_=e+_|0,b=a=_>>>0>>0?a+1|0:a,a=a+n|0,W=a=(n=_+x|0)>>>0<_>>>0?a+1|0:a,e=UI(n^J,nA^a,40),a=Z+(v=f)|0,a=((_=e+h|0)>>>0>>0?a+1|0:a)+sA|0,h=_,Z=_=_+gA|0,J=a=h>>>0>_>>>0?a+1|0:a,L=BA,h=UI(S^l,q^AA,48),a=(hA=f)+K|0,S=_=h+G|0,a=UI(_^c,(G=_>>>0>>0?a+1|0:a)^H,1),H=c=f,_=a,a=F+Q|0,a=((t=t+g|0)>>>0>>0?a+1|0:a)+c|0,a=(t=(c=_+t|0)>>>0>>0?a+1|0:a)+L|0,K=F=c+j|0,F=a=F>>>0>>0?a+1|0:a,c=UI(c^r,t^m,32),a=R+(l=f)|0,p=a=(r=c+p|0)>>>0

>>0?a+1|0:a,t=UI(_^r,a^H,40),a=(q=f)+F|0,F=_=t+K|0,c=UI(_^c,l^(H=_>>>0>>0?a+1|0:a),48),a=p+(K=f)|0,l=a=(p=c+r|0)>>>0>>0?a+1|0:a,_=UI(t^p,q^a,1),a=(q=f)+J|0,a=wA+((r=_+Z|0)>>>0<_>>>0?a+1|0:a)|0,a=(t=(r=r+V|0)>>>0>>0?a+1|0:a)+N|0,nA=N=r+cA|0,N=a=N>>>0>>0?a+1|0:a,R=_,L=r,m=t,r=rA,_=UI(s^u,b^CA,1),a=d+(s=f)|0,a=((t=k)>>>0>(k=_+k|0)>>>0?a+1|0:a)+yA|0,a=GA+(t=(r=r+k|0)>>>0>>0?a+1|0:a)|0,d=k=r+_A|0,u=a=k>>>0<_A>>>0?a+1|0:a,k=_,t=a=UI(r^h,t^hA,32),a=Y+IA|0,a=(b=_=f)+(y=(_=y+O|0)>>>0>>0?a+1|0:a)|0,Y=a=(h=_+t|0)>>>0<_>>>0?a+1|0:a,k=UI(h^k,a^s,40),a=(IA=f)+u|0,u=UI(d=(r=k+d|0)^t,b^(t=r>>>0>>0?a+1|0:a),48),a=UI(u^L,(CA=f)^m,32),hA=s=f,d=a,b=s,_=UI(_^D,y^T,1),a=tA+(s=f)|0,a=U+((y=_+z|0)>>>0>>0?a+1|0:a)|0,a=FA+(w=(y=y+w|0)>>>0>>0?a+1|0:a)|0,L=D=y+QA|0,D=a=D>>>0>>0?a+1|0:a,U=_,O=s,y=UI(y^M,w^$,32),a=(M=f)+G|0,s=_=y+S|0,w=UI(_^U,(S=_>>>0>>0?a+1|0:a)^O,40),a=(T=f)+D|0,U=_=w+L|0,_=UI(_^y,M^(G=_>>>0>>0?a+1|0:a),48),a=S+(L=f)|0,D=_,S=_=s+_|0,M=a=_>>>0>>0?a+1|0:a,a=a+b|0,b=_=_+d|0,y=q,q=a=S>>>0>_>>>0?a+1|0:a,y=UI(_^R,y^a,40),a=(a=N)+(N=f)|0,O=_=y+nA|0,R=a=_>>>0>>0?a+1|0:a,s=t,_=UI(x^Z,J^MA,48),a=W+($=f)|0,W=_,t=(_=n+_|0)^e,e=a=_>>>0>>0?a+1|0:a,t=UI(t,a^v,1),a=(v=f)+s|0,a=B+((r=t+r|0)>>>0>>0?a+1|0:a)|0,a=(s=(r=r+fA|0)>>>0>>0?a+1|0:a)+P|0,Z=n=r+aA|0,n=a=n>>>0>>0?a+1|0:a,r=UI(r^D,s^L,32),a=l+(J=f)|0,l=r,p=a=(s=p+r|0)>>>0

>>0?a+1|0:a,t=UI(t^s,v^a,40),a=(a=n)+(n=f)|0,D=r=t+Z|0,r=UI(x=r^l,J^(l=r>>>0>>0?a+1|0:a),48),a=p+(nA=f)|0,v=r,Z=a=(p=s+r|0)>>>0>>0?a+1|0:a,r=UI(t^p,n^a,1),a=(n=f)+R|0,a=Q+((t=r+O|0)>>>0>>0?a+1|0:a)|0,a=X+(s=(t=t+g|0)>>>0>>0?a+1|0:a)|0,MA=J=I+t|0,J=a=J>>>0>>0?a+1|0:a,x=r,L=n,n=t,m=s,r=UI(w^S,M^T,1),a=(s=f)+H|0,a=DA+((t=r+F|0)>>>0>>0?a+1|0:a)|0,a=(w=(t=t+oA|0)>>>0>>0?a+1|0:a)+X|0,H=F=I+t|0,F=a=F>>>0>>0?a+1|0:a,S=r,t=a=UI(t^W,w^$,32),w=r=f,a=Y+CA|0,Y=a=(r=h+u|0)>>>0>>0?a+1|0:a,a=a+w|0,a=(h=r)>>>0>(r=r+t|0)>>>0?a+1|0:a,u=r,r^=S,S=a,s=UI(r,a^s,40),a=(T=f)+F|0,w=UI(F=(r=s+H|0)^t,w^(t=r>>>0>>0?a+1|0:a),48),a=UI(w^n,(a=m)^(m=f),32),$=n=f,F=a,H=e,e=c,a=UI(h^k,Y^IA,1),M=c=f,h=a,a=G+kA|0,a=((k=U+eA|0)>>>0>>0?a+1|0:a)+c|0,k=a=(c=h+k|0)>>>0>>0?a+1|0:a,e=UI(c^e,a^K,32),a=(a=H)+(H=f)|0,h=UI((_=e+_|0)^h,M^(Y=_>>>0>>0?a+1|0:a),40),a=k+(IA=f)|0,U=h,a=SA+((G=c)>>>0>(c=c+h|0)>>>0?a+1|0:a)|0,G=a=(h=c+iA|0)>>>0>>0?a+1|0:a,c=UI(e^h,H^a,48),a=Y+(CA=f)|0,K=_,e=c,Y=_=_+c|0,H=a=K>>>0>_>>>0?a+1|0:a,a=a+n|0,K=a=(n=_+F|0)>>>0<_>>>0?a+1|0:a,_=(k=UI(n^x,a^L,40))+MA|0,a=(MA=f)+J|0,M=_,W=_>>>0>>0?a+1|0:a,_=UI(d^O,R^hA,48),a=(d=f)+q|0,b=c=_+b|0,x=N,N=a=c>>>0<_>>>0?a+1|0:a,a=UI(c^y,x^a,1),O=c=f,y=a,a=t+B|0,a=((r=r+fA|0)>>>0>>0?a+1|0:a)+c|0,a=wA+(r=(c=r+y|0)>>>0>>0?a+1|0:a)|0,R=t=c+V|0,t=a=t>>>0>>0?a+1|0:a,c=UI(c^e,r^CA,32),a=Z+(J=f)|0,q=c,c=(e=p+c|0)^y,y=a=e>>>0

>>0?a+1|0:a,r=UI(c,O^a,40),a=(a=t)+(t=f)|0,O=c=r+R|0,c=UI(p=c^q,J^(q=c>>>0>>0?a+1|0:a),48),a=y+(CA=f)|0,Z=c,e=a=(c=e+c|0)>>>0>>0?a+1|0:a,r=UI(c^r,t^a,1),a=(p=f)+W|0,a=pA+((t=r+M|0)>>>0>>0?a+1|0:a)|0,a=(y=(t=t+EA|0)>>>0>>0?a+1|0:a)+BA|0,AA=R=t+j|0,R=a=R>>>0>>0?a+1|0:a,J=r,x=t,L=y,r=UI(U^Y,H^IA,1),a=(H=f)+sA|0,a=l+(r>>>0>(t=r+gA|0)>>>0?a+1|0:a)|0,y=a=(t=t+D|0)>>>0>>0?a+1|0:a,a=UI(_^t,a^d,32),d=_=f,D=a,a=S+m|0,a=(_=w+u|0)>>>0>>0?a+1|0:a,w=_,Y=a,a=d+a|0,S=_=_+D|0,U=a=w>>>0>_>>>0?a+1|0:a,_=UI(_^r,H^a,40),a=y+(m=f)|0,u=_,a=tA+((_=t+_|0)>>>0>>0?a+1|0:a)|0,a=(_=_+z|0)>>>0>>0?a+1|0:a,H=_,_^=D,D=a,y=UI(_,d^a,48),a=UI(y^x,(a=L)^(L=f),32),IA=_=f,d=a,l=_,_=UI(s^w,Y^T,1),a=kA+(t=f)|0,a=G+((r=_+eA|0)>>>0>>0?a+1|0:a)|0,a=(s=(r=r+h|0)>>>0>>0?a+1|0:a)+P|0,G=w=r+aA|0,w=a=w>>>0>>0?a+1|0:a,h=_,Y=t,_=(r=UI(r^v,s^nA,32))+b|0,a=(b=f)+N|0,t=_,s=UI(s=_^h,(h=_>>>0>>0?a+1|0:a)^Y,40),a=(T=f)+w|0,w=_=s+G|0,r=UI(_^r,b^(N=_>>>0>>0?a+1|0:a),48),a=h+(Y=f)|0,G=_=r+t|0,b=a=_>>>0>>0?a+1|0:a,a=a+l|0,l=a=(h=_+d|0)>>>0<_>>>0?a+1|0:a,t=UI(h^J,a^p,40),a=(v=f)+R|0,R=_=t+AA|0,J=a=_>>>0>>0?a+1|0:a,_=c,p=e,e=r,c=UI(F^M,W^$,48),a=K+(AA=f)|0,F=c,n=a=(r=n+c|0)>>>0>>0?a+1|0:a,a=UI(r^k,MA^a,1),K=c=f,k=a,a=D+NA|0,a=((D=H+cA|0)>>>0>>0?a+1|0:a)+c|0,D=a=(c=D+k|0)>>>0>>0?a+1|0:a,e=UI(c^e,a^Y,32),a=(H=f)+p|0,k=UI((_=e+_|0)^k,K^(p=_>>>0>>0?a+1|0:a),40),a=D+(M=f)|0,a=FA+((D=c)>>>0>(c=c+k|0)>>>0?a+1|0:a)|0,Y=a=(D=c+QA|0)>>>0>>0?a+1|0:a,c=UI(e^D,H^a,48),a=p+($=f)|0,H=c,K=a=(p=_+c|0)>>>0<_>>>0?a+1|0:a,_=UI(p^k,M^a,1),a=(k=f)+J|0,a=DA+((c=_+R|0)>>>0<_>>>0?a+1|0:a)|0,a=pA+(e=(c=c+oA|0)>>>0>>0?a+1|0:a)|0,hA=M=c+EA|0,M=a=M>>>0>>0?a+1|0:a,W=_,x=c,_=UI(s^G,b^T,1),a=(s=f)+q|0,a=GA+((c=_+O|0)>>>0<_>>>0?a+1|0:a)|0,a=SA+(G=(c=c+_A|0)>>>0<_A>>>0?a+1|0:a)|0,O=b=c+iA|0,b=a=b>>>0>>0?a+1|0:a,q=_,a=UI(c^F,G^AA,32),AA=_=f,c=a,a=U+L|0,S=_=y+S|0,F=a=_>>>0>>0?a+1|0:a,a=AA+a|0,U=a=(y=_+c|0)>>>0<_>>>0?a+1|0:a,s=UI(y^q,a^s,40),a=(L=f)+b|0,G=_=s+O|0,q=UI(_^c,AA^(b=_>>>0>>0?a+1|0:a),48),a=UI(q^x,(AA=f)^e,32),T=_=f,O=a,e=_,c=rA,_=UI(S^u,F^m,1),a=N+(F=f)|0,a=((S=w)>>>0>(w=_+w|0)>>>0?a+1|0:a)+yA|0,a=DA+(w=(c=c+w|0)>>>0>>0?a+1|0:a)|0,S=N=c+oA|0,N=a=N>>>0>>0?a+1|0:a,c=UI(c^Z,w^CA,32),a=n+(u=f)|0,n=c,a=(c=r+c|0)>>>0>>0?a+1|0:a,r=F,F=a,r=UI(_^c,r^a,40),a=(m=f)+N|0,w=_=r+S|0,_=UI(_^n,u^(N=_>>>0>>0?a+1|0:a),48),a=F+(x=f)|0,F=_,S=_=c+_|0,u=a=_>>>0>>0?a+1|0:a,a=a+e|0,a=(n=_+O|0)>>>0<_>>>0?a+1|0:a,_=n^W,W=a,k=UI(_,a^k,40),a=(CA=f)+M|0,M=_=k+hA|0,Z=_>>>0>>0?a+1|0:a,_=UI(d^R,J^IA,48),a=l+(IA=f)|0,d=_,a=(_=h+_|0)>>>0>>0?a+1|0:a,h=_,l=a,a=UI(_^t,a^v,1),v=_=f,e=a,a=b+wA|0,a=((c=G+V|0)>>>0>>0?a+1|0:a)+_|0,a=FA+(c=(_=c+e|0)>>>0>>0?a+1|0:a)|0,G=t=_+QA|0,t=a=t>>>0>>0?a+1|0:a,_=UI(_^F,c^x,32),a=K+(b=f)|0,F=_,p=a=(c=p+_|0)>>>0

>>0?a+1|0:a,e=UI(c^e,v^a,40),a=(v=f)+t|0,G=_=e+G|0,_=UI(t=_^F,b^(F=_>>>0>>0?a+1|0:a),48),a=p+(hA=f)|0,p=_,K=a=(t=c+_|0)>>>0>>0?a+1|0:a,_=UI(t^e,v^a,1),a=(b=f)+Z|0,a=kA+((c=_+M|0)>>>0<_>>>0?a+1|0:a)|0,a=(e=(c=c+eA|0)>>>0>>0?a+1|0:a)+sA|0,nA=v=c+gA|0,v=a=v>>>0>>0?a+1|0:a,R=_,J=c,x=e,_=UI(r^S,m^u,1),a=GA+(e=f)|0,a=Y+((c=_+_A|0)>>>0<_A>>>0?a+1|0:a)|0,a=NA+(r=(c=c+D|0)>>>0>>0?a+1|0:a)|0,u=D=c+cA|0,D=a=D>>>0>>0?a+1|0:a,Y=_,S=e,a=UI(c^d,r^IA,32),d=_=f,r=a,c=_,a=U+AA|0,a=(_=y+q|0)>>>0>>0?a+1|0:a,y=_,U=a,a=a+c|0,a=(e=_+r|0)>>>0<_>>>0?a+1|0:a,_=e^Y,Y=a,_=UI(_,a^S,40),a=(a=D)+(D=f)|0,S=c=_+u|0,u=a=c>>>0<_>>>0?a+1|0:a,d=UI(c^r,d^a,48),a=UI(d^J,(a=x)^(x=f),32),m=c=f,q=a,c=UI(y^s,U^L,1),a=(y=f)+yA|0,a=N+((r=c+rA|0)>>>0>>0?a+1|0:a)|0,a=B+(s=(r=r+w|0)>>>0>>0?a+1|0:a)|0,L=w=r+fA|0,w=a=w>>>0>>0?a+1|0:a,N=c,U=y,r=UI(r^H,s^$,32),a=(H=f)+l|0,y=c=r+h|0,c=(s=UI(c^N,(h=c>>>0>>0?a+1|0:a)^U,40))+L|0,a=(L=f)+w|0,N=c,c=UI(c^r,H^(U=c>>>0>>0?a+1|0:a),48),a=h+(AA=f)|0,H=c,l=c=y+c|0,J=a=c>>>0>>0?a+1|0:a,a=m+a|0,a=(r=c+q|0)>>>0>>0?a+1|0:a,c=b,b=a,y=UI(r^R,c^a,40),a=(IA=f)+v|0,w=c=y+nA|0,a=UI(c^q,m^(v=c>>>0>>0?a+1|0:a),48),m=c=f,q=a,c=_,a=Y+x|0,Y=_=e+d|0,d=a=_>>>0>>0?a+1|0:a,a=UI(_^c,a^D,1),e=c=f,_=a,a=U+Q|0,a=((h=N+g|0)>>>0>>0?a+1|0:a)+c|0,a=tA+(h=(c=_+h|0)>>>0>>0?a+1|0:a)|0,x=D=c+z|0,D=a=D>>>0>>0?a+1|0:a,N=_,U=e,_=UI(M^O,Z^T,48),a=W+(T=f)|0,M=_,a=(_=n+_|0)>>>0>>0?a+1|0:a,n=_,c=UI(c^p,h^hA,32),W=a,a=a+(O=f)|0,e=_=c+_|0,h=UI(_^N,(p=_>>>0>>0?a+1|0:a)^U,40),a=(Z=f)+D|0,D=_=h+x|0,_=UI(_^c,O^(N=_>>>0>>0?a+1|0:a),48),a=p+($=f)|0,U=_,O=a=(p=e+_|0)>>>0>>0?a+1|0:a,_=UI(h^p,Z^a,1),a=FA+(x=f)|0,Z=_,hA=_=QA+_|0,e=a=_>>>0>>0?a+1|0:a,_=UI(k^n,W^CA,1),a=(h=f)+u|0,a=SA+((c=_+S|0)>>>0<_>>>0?a+1|0:a)|0,a=BA+(n=(c=c+iA|0)>>>0>>0?a+1|0:a)|0,W=k=c+j|0,k=a=k>>>0>>0?a+1|0:a,S=h,c=UI(c^H,n^AA,32),a=K+(AA=f)|0,u=c,a=(h=t+c|0)>>>0>>0?a+1|0:a,t=S,S=a,n=UI(_^h,t^a,40),a=(CA=f)+k|0,H=_=n+W|0,a=(K=_>>>0>>0?a+1|0:a)+e|0,k=a=(e=_+hA|0)>>>0<_>>>0?a+1|0:a,W=a=UI(e^q,a^m,32),R=_=f,_=UI(s^l,J^L,1),a=(t=f)+F|0,a=X+((c=_+G|0)>>>0<_>>>0?a+1|0:a)|0,a=(s=(c=I+c|0)>>>0>>0?a+1|0:a)+P|0,J=F=c+aA|0,F=a=F>>>0>>0?a+1|0:a,G=_,l=t,c=UI(c^M,s^T,32),a=(M=f)+d|0,t=_=c+Y|0,_=(s=UI(_^G,(Y=_>>>0>>0?a+1|0:a)^l,40))+J|0,a=(J=f)+F|0,F=_,_=UI(_^c,M^(G=_>>>0>>0?a+1|0:a),48),a=Y+(T=f)|0,Y=_,M=a=(_=t+_|0)>>>0>>0?a+1|0:a,a=a+R|0,d=a=(t=_)>>>0>(_=_+W|0)>>>0?a+1|0:a,c=UI(_^Z,x^a,40),a=k+(x=f)|0,l=c,a=Q+((c=e+c|0)>>>0>>0?a+1|0:a)|0,Z=c=c+g|0,e=c^W,W=a=c>>>0>>0?a+1|0:a,c=UI(e,R^a,48),a=d+(R=f)|0,d=a=(k=_+c|0)>>>0<_>>>0?a+1|0:a,_=a=UI(k^l,x^a,1),l=e=f,e=UI(t^s,M^J,1),a=N+(s=f)|0,a=SA+((t=e+D|0)>>>0>>0?a+1|0:a)|0,a=DA+(D=(t=t+iA|0)>>>0>>0?a+1|0:a)|0,x=N=t+oA|0,N=a=N>>>0>>0?a+1|0:a,M=e,J=s,a=b+m|0,a=(e=r+q|0)>>>0>>0?a+1|0:a,b=e,u=UI(H^u,K^AA,48),s=UI(t^u,D^(AA=f),32),H=a,a=a+(hA=f)|0,D=e=s+e|0,e=UI(e^M,(K=e>>>0>>0?a+1|0:a)^J,40),a=(M=f)+N|0,J=a=(r=e+x|0)>>>0>>0?a+1|0:a,a=a+l|0,a=B+((q=r)>>>0>(r=_+r|0)>>>0?a+1|0:a)|0,a=(t=(r=r+fA|0)>>>0>>0?a+1|0:a)+yA|0,nA=N=r+rA|0,x=a=N>>>0>>0?a+1|0:a,L=_,m=r,a=UI(y^b,H^IA,1),y=r=f,_=a,a=G+GA|0,a=((N=F+_A|0)>>>0<_A>>>0?a+1|0:a)+r|0,a=tA+(N=(r=_+N|0)>>>0>>0?a+1|0:a)|0,H=F=r+z|0,F=a=F>>>0>>0?a+1|0:a,G=_,a=UI(r^U,N^$,32),b=_=f,r=a,N=_,a=S+AA|0,S=_=h+u|0,U=a=_>>>0>>0?a+1|0:a,a=a+N|0,a=(h=_+r|0)>>>0<_>>>0?a+1|0:a,_=h^G;G=a,N=UI(_,a^y,40),a=(AA=f)+F|0,u=UI(F=(_=N+H|0)^r,b^(r=_>>>0>>0?a+1|0:a),48),a=UI(a=u^m,(m=f)^t,32),IA=t=f,H=a,F=t,t=UI(n^S,U^CA,1),a=BA+(n=f)|0,a=v+((y=t+j|0)>>>0>>0?a+1|0:a)|0,a=kA+(w=(y=y+w|0)>>>0>>0?a+1|0:a)|0,U=S=y+eA|0,S=a=S>>>0>>0?a+1|0:a,y=UI(y^Y,w^T,32),a=O+(b=f)|0,Y=y,p=a=(y=p+y|0)>>>0

>>0?a+1|0:a,w=UI(t^y,a^n,40),a=(T=f)+S|0,n=t=w+U|0,t=UI(S=t^Y,b^(Y=t>>>0>>0?a+1|0:a),48),a=p+($=f)|0,S=t,U=t=y+t|0,b=a=t>>>0>>0?a+1|0:a,a=a+F|0,a=(y=t+H|0)>>>0>>0?a+1|0:a,t=l,l=a,p=UI(y^L,t^a,40),a=(v=f)+x|0,F=t=p+nA|0,t=UI(x=t^H,IA^(H=t>>>0

>>0?a+1|0:a),48),a=l+(IA=f)|0,l=t,y=a=(t=y+t|0)>>>0>>0?a+1|0:a,v=a=UI(t^p,v^a,1),CA=a,O=p=f,p=r,r=e,e=UI(s^q,J^hA,48),a=K+(hA=f)|0,K=e,a=(e=D+e|0)>>>0>>0?a+1|0:a,D=_,_=r^e,r=a,_=UI(_,a^M,1),a=(M=f)+p|0,a=NA+(_>>>0>(s=D+_|0)>>>0?a+1|0:a)|0,a=sA+(D=(s=s+cA|0)>>>0>>0?a+1|0:a)|0,q=p=s+gA|0,p=a=p>>>0>>0?a+1|0:a,s=UI(s^S,D^$,32),a=d+(J=f)|0,S=a=(D=s+k|0)>>>0>>0?a+1|0:a,k=UI(_^D,M^a,40),a=($=f)+p|0,M=_=k+q|0,s=UI(_^s,J^(d=_>>>0>>0?a+1|0:a),48),a=S+(q=f)|0,J=_=s+D|0,S=_,x=a=_>>>0>>0?a+1|0:a,D=e,p=r,a=G+m|0,a=(_=h+u|0)>>>0>>0?a+1|0:a,h=_,_^=N,N=a,a=UI(_,AA^a,1),L=_=f,G=a,r=a,a=Y+P|0,a=((e=n+aA|0)>>>0>>0?a+1|0:a)+_|0,n=a=(_=e)>>>0>(e=r+e|0)>>>0?a+1|0:a,r=UI(c^e,a^R,32),a=(a=p)+(p=f)|0,u=_=r+D|0,c=UI(c=_^G,L^(G=_>>>0>>0?a+1|0:a),40),a=n+(R=f)|0,a=wA+((_=c+e|0)>>>0>>0?a+1|0:a)|0,L=a=(D=_+V|0)>>>0>>0?a+1|0:a,p=UI(r^D,p^a,48),nA=a=f,_=UI(w^U,b^T,1),a=(r=f)+W|0,a=pA+((e=_+Z|0)>>>0<_>>>0?a+1|0:a)|0,a=X+(w=(e=e+EA|0)>>>0>>0?a+1|0:a)|0,W=n=I+e|0,U=a=n>>>0>>0?a+1|0:a,b=_,n=UI(e^K,w^hA,32),a=(T=f)+N|0,N=_=n+h|0,e=UI(_^b,(K=_>>>0>>0?a+1|0:a)^r,40),a=(a=U)+(U=f)|0,b=_=e+W|0,W=a=_>>>0>>0?a+1|0:a,r=a,a=X+O|0,a=((w=I+v|0)>>>0>>0?a+1|0:a)+r|0,Y=a=(r=_+w|0)>>>0>>0?a+1|0:a,_=UI(r^p,nA^a,32),a=(v=f)+x|0,h=UI((w=_+S|0)^CA,(a=w>>>0<_>>>0?a+1|0:a)^O,40),O=a,a=sA+(S=f)|0,a=Y+((Z=h+gA|0)>>>0>>0?a+1|0:a)|0,a=(Y=r+Z|0)>>>0>>0?a+1|0:a,r=v,v=a,r=UI(_^Y,r^a,48),a=(a=O)+(O=f)|0,_=h^(w=r+w|0),h=a=w>>>0>>0?a+1|0:a,Z=a=UI(_,a^S,1),CA=a,m=_=f,S=t,AA=y,t=e,e=UI(n^b,W^T,48),a=K+(b=f)|0,n=_=e+N|0,N=a=_>>>0>>0?a+1|0:a,t=UI(_^t,a^U,1),a=(W=f)+NA|0,a=L+((_=t+cA|0)>>>0>>0?a+1|0:a)|0,D=a=(y=_+D|0)>>>0>>0?a+1|0:a,_=UI(y^s,a^q,32),a=(U=f)+AA|0,S=s=_+S|0,K=a=s>>>0<_>>>0?a+1|0:a,t=UI(t^s,a^W,40),a=DA+(hA=f)|0,W=t,a=D+((t=oA+t|0)>>>0>>0?a+1|0:a)|0,y=a=(t=t+y|0)>>>0>>0?a+1|0:a,s=UI(_^t,a^U,48),a=(a=K)+(K=f)|0,q=_=s+S|0,U=_,L=a=_>>>0>>0?a+1|0:a,a=G+nA|0,S=(_=p+u|0)^c,c=a=_>>>0

>>0?a+1|0:a,a=UI(S,a^R,1),R=D=f,S=a,a=d+tA|0,a=((p=M+z|0)>>>0>>0?a+1|0:a)+D|0,G=a=(G=p)>>>0>(p=p+S|0)>>>0?a+1|0:a,u=D=UI(p^l,IA^a,32),M=a=f,a=a+N|0,d=D=D+n|0,l=a=u>>>0>D>>>0?a+1|0:a,D=UI(D^S,R^a,40),a=yA+(R=f)|0,a=G+((n=D+rA|0)>>>0>>0?a+1|0:a)|0,n=a=(S=p)>>>0>(p=p+n|0)>>>0?a+1|0:a,S=UI(p^u,a^M,48),IA=a=f,N=a,k=UI(k^J,x^$,1),G=a=f,u=e,a=a+P|0,a=H+((e=k+aA|0)>>>0>>0?a+1|0:a)|0,a=(e=e+F|0)>>>0>>0?a+1|0:a,F=e^u,u=a,F=UI(F,a^b,32),a=($=f)+c|0,H=_=F+_|0,c=UI(_^k,(c=G)^(G=_>>>0>>0?a+1|0:a),40),a=pA+(M=f)|0,a=u+((_=c+EA|0)>>>0>>0?a+1|0:a)|0,u=_=_+e|0,b=a=_>>>0>>0?a+1|0:a,e=a,a=m+SA|0,a=((k=Z+iA|0)>>>0>>0?a+1|0:a)+e|0,Z=a=(e=_+k|0)>>>0>>0?a+1|0:a,_=UI(e^S,a^N,32),a=(J=f)+L|0,N=UI((k=_+U|0)^CA,(a=k>>>0<_>>>0?a+1|0:a)^m,40),x=U=f,m=a,a=U+kA|0,a=Z+((U=N+eA|0)>>>0>>0?a+1|0:a)|0,Z=a=(U=e+U|0)>>>0>>0?a+1|0:a,e=UI(_^U,a^J,48),a=(J=f)+m|0,_=(k=e+k|0)^N,N=a=k>>>0>>0?a+1|0:a,x=a=UI(_,a^x,1),m=_=f,AA=w,T=s,s=c,c=UI(F^u,b^$,48),a=(F=f)+G|0,G=_=c+H|0,u=a=_>>>0>>0?a+1|0:a,s=UI(_^s,a^M,1),a=(M=f)+FA|0,a=((_=s+QA|0)>>>0>>0?a+1|0:a)+n|0,p=a=(w=_+p|0)>>>0<_>>>0?a+1|0:a,_=UI(w^T,a^K,32),a=(n=f)+h|0,H=h=_+AA|0,K=a=h>>>0<_>>>0?a+1|0:a,s=UI(s^h,a^M,40),a=B+(T=f)|0,M=s,a=p+((s=fA+s|0)>>>0>>0?a+1|0:a)|0,b=a=(h=s+w|0)>>>0>>0?a+1|0:a,s=UI(_^h,a^n,48),a=(a=K)+(K=f)|0,H=_=s+H|0,AA=a=_>>>0>>0?a+1|0:a,p=r,w=t,a=l+IA|0,r=a=(_=S+d|0)>>>0>>0?a+1|0:a,t=UI(_^D,a^R,1),a=(D=f)+BA|0,a=((n=t+j|0)>>>0>>0?a+1|0:a)+y|0,y=UI(p^(w=w+n|0),(a=w>>>0>>0?a+1|0:a)^O,32),n=a,S=t,a=(p=f)+u|0,a=(t=y+G|0)>>>0>>0?a+1|0:a,G=t,t^=S,S=a,t=UI(t,a^D,40),a=Q+(u=f)|0,a=((D=t+g|0)>>>0>>0?a+1|0:a)+n|0,d=a=(n=D)>>>0>(D=D+w|0)>>>0?a+1|0:a,p=UI(y^D,a^p,48),IA=a=f,w=a,y=UI(q^W,L^hA,1),l=a=f,W=r,a=a+wA|0,a=v+((r=y+V|0)>>>0>>0?a+1|0:a)|0,n=F,F=a=(r=r+Y|0)>>>0>>0?a+1|0:a,n=UI(c^r,n^a,32),a=($=f)+W|0,Y=_=n+_|0,c=UI(_^y,(c=l)^(l=_>>>0>>0?a+1|0:a),40),a=GA+(W=f)|0,a=F+((_=c+_A|0)>>>0<_A>>>0?a+1|0:a)|0,v=_=_+r|0,q=a=_>>>0>>0?a+1|0:a,r=a,a=m+tA|0,a=((y=z+x|0)>>>0>>0?a+1|0:a)+r|0,F=a=(r=_+y|0)>>>0>>0?a+1|0:a,_=UI(r^p,a^w,32),a=(O=f)+AA|0,w=UI((y=_+H|0)^x,(a=y>>>0<_>>>0?a+1|0:a)^m,40),x=a,a=P+(R=f)|0,a=F+((L=w+aA|0)>>>0>>0?a+1|0:a)|0,a=(F=r+L|0)>>>0>>0?a+1|0:a,r=O,O=a,r=UI(_^F,r^a,48),a=(a=x)+(x=f)|0,_=(y=r+y|0)^w,w=a=y>>>0>>0?a+1|0:a,R=a=UI(_,a^R,1),L=_=f,m=s,s=c,c=UI(n^v,q^$,48),a=(a=l)+(l=f)|0,Y=_=c+Y|0,n=W,W=a=_>>>0>>0?a+1|0:a,s=UI(_^s,n^a,1),a=(v=f)+kA|0,a=d+((_=s+eA|0)>>>0>>0?a+1|0:a)|0,n=D,D=_+D|0,_=K,K=a=n>>>0>D>>>0?a+1|0:a,_=UI(D^m,_^a,32),a=(a=N)+(N=f)|0,d=a=(n=_+k|0)>>>0<_>>>0?a+1|0:a,k=n,s=UI(s^n,a^v,40),a=wA+($=f)|0,v=s,a=K+((s=V+s|0)>>>0>>0?a+1|0:a)|0,K=a=(n=s+D|0)>>>0>>0?a+1|0:a,s=UI(_^n,a^N,48),a=(a=d)+(d=f)|0,q=_=s+k|0,m=a=_>>>0>>0?a+1|0:a,k=e,a=S+IA|0,e=a=(_=p+G|0)>>>0

>>0?a+1|0:a,t=UI(_^t,a^u,1),a=sA+(p=f)|0,a=b+((D=t+gA|0)>>>0>>0?a+1|0:a)|0,S=(D=h+D|0)^k,k=a=D>>>0>>0?a+1|0:a,h=UI(S,a^J,32),N=a=f,S=t,a=a+W|0,a=(t=h+Y|0)>>>0>>0?a+1|0:a,G=t,t^=S,S=a,t=UI(t,a^p,40),a=Q+(u=f)|0,a=k+((p=t+g|0)>>>0>>0?a+1|0:a)|0,b=a=(p=D+p|0)>>>0>>0?a+1|0:a,k=UI(h^p,a^N,48),IA=a=f,D=a,h=UI(M^H,T^AA,1),Y=a=f,H=e,a=a+B|0,a=Z+((e=h+fA|0)>>>0>>0?a+1|0:a)|0,U=a=(e=e+U|0)>>>0>>0?a+1|0:a,N=UI(c^e,a^l,32),a=(CA=f)+H|0,H=_=N+_|0,c=UI(_^h,(M=_>>>0>>0?a+1|0:a)^Y,40),a=X+(l=f)|0,a=U+((_=I+c|0)>>>0>>0?a+1|0:a)|0,U=_=_+e|0,W=a=_>>>0>>0?a+1|0:a,e=a,a=L+pA|0,a=((h=R+EA|0)>>>0>>0?a+1|0:a)+e|0,Y=a=(e=_+h|0)>>>0>>0?a+1|0:a,_=UI(e^k,a^D,32),a=(Z=f)+m|0,D=UI((h=_+q|0)^R,(a=h>>>0<_>>>0?a+1|0:a)^L,40),J=a,a=NA+(R=f)|0,a=Y+((L=D+cA|0)>>>0>>0?a+1|0:a)|0,a=(Y=e+L|0)>>>0>>0?a+1|0:a,e=Z,Z=a,e=UI(_^Y,e^a,48),a=(a=J)+(J=f)|0,_=(h=e+h|0)^D,D=a=h>>>0>>0?a+1|0:a,R=a=UI(_,a^R,1),hA=a,L=_=f,AA=y,T=s,y=c,c=UI(N^U,W^CA,48),a=(N=f)+M|0,U=_=c+H|0,H=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^l,1),a=(l=f)+yA|0,a=b+((_=y+rA|0)>>>0>>0?a+1|0:a)|0,p=a=(s=_+p|0)>>>0

>>0?a+1|0:a,_=UI(s^T,a^d,32),a=(M=f)+w|0,d=a=(w=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^w,a^l,40),a=FA+(CA=f)|0,b=y,a=p+((y=QA+y|0)>>>0>>0?a+1|0:a)|0,p=y+s|0,y=M,M=a=p>>>0>>0?a+1|0:a,y=UI(_^p,y^a,48),a=(a=d)+(d=f)|0,l=_=y+w|0,W=a=_>>>0>>0?a+1|0:a,s=r,a=S+IA|0,r=a=(_=k+G|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^u,1),a=(k=f)+GA|0,a=K+((w=t+_A|0)>>>0>>0?a+1|0:a)|0,s=UI(s^(w=w+n|0),(a=w>>>0>>0?a+1|0:a)^x,32),S=n=f,n=a,G=t,a=S+H|0,a=(t=s+U|0)>>>0>>0?a+1|0:a,U=t,t^=G,G=a,t=UI(t,a^k,40),a=DA+(u=f)|0,a=((k=t+oA|0)>>>0>>0?a+1|0:a)+n|0,K=S,S=a=(n=w+k|0)>>>0>>0?a+1|0:a,k=UI(s^n,K^a,48),IA=a=f,w=a,s=UI(q^v,m^$,1),H=a=f,K=r,a=a+BA|0,a=O+((r=s+j|0)>>>0>>0?a+1|0:a)|0,F=a=(r=r+F|0)>>>0>>0?a+1|0:a,N=UI(c^r,a^N,32),a=($=f)+K|0,K=_=N+_|0,c=UI(_^s,(c=H)^(H=_>>>0>>0?a+1|0:a),40),a=SA+(v=f)|0,a=F+((_=c+iA|0)>>>0>>0?a+1|0:a)|0,q=_=_+r|0,O=a=_>>>0>>0?a+1|0:a,r=a,a=L+Q|0,a=((s=R+g|0)>>>0>>0?a+1|0:a)+r|0,F=a=(r=_+s|0)>>>0>>0?a+1|0:a,_=UI(r^k,a^w,32),a=(R=f)+W|0,w=UI((s=_+l|0)^hA,(a=s>>>0<_>>>0?a+1|0:a)^L,40),L=a,a=kA+(x=f)|0,a=F+((m=w+eA|0)>>>0>>0?a+1|0:a)|0,a=(F=r+m|0)>>>0>>0?a+1|0:a,r=R,R=a,r=UI(_^F,r^a,48),a=(a=L)+(L=f)|0,_=(s=r+s|0)^w,w=a=s>>>0>>0?a+1|0:a,x=a=UI(_,a^x,1),m=_=f,AA=h,T=y,y=c,c=UI(N^q,O^$,48),a=(N=f)+H|0,H=_=c+K|0,K=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^v,1),a=(v=f)+FA|0,a=S+((_=y+QA|0)>>>0>>0?a+1|0:a)|0,n=a=(h=_+n|0)>>>0>>0?a+1|0:a,_=UI(h^T,a^d,32),a=(S=f)+D|0,d=a=(D=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^D,a^v,40),a=BA+($=f)|0,v=y,a=n+((y=j+y|0)>>>0>>0?a+1|0:a)|0,n=y+h|0,y=S,S=a=n>>>0>>0?a+1|0:a,y=UI(_^n,y^a,48),a=(a=d)+(d=f)|0,q=_=y+D|0,O=a=_>>>0>>0?a+1|0:a,h=e,a=G+IA|0,e=a=(_=k+U|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^u,1),a=SA+(k=f)|0,a=M+((D=t+iA|0)>>>0>>0?a+1|0:a)|0,p=a=(D=D+p|0)>>>0

>>0?a+1|0:a,h=UI(h^D,a^J,32),U=a=f,G=t,a=a+K|0,a=(t=h+H|0)>>>0>>0?a+1|0:a,u=t,t^=G,G=a,t=UI(t,a^k,40),a=pA+(H=f)|0,a=p+((k=t+EA|0)>>>0>>0?a+1|0:a)|0,a=(p=D+k|0)>>>0>>0?a+1|0:a,D=U,U=a,k=UI(h^p,D^a,48),IA=a=f,D=a,h=UI(b^l,W^CA,1),K=a=f,M=e,a=a+X|0,a=Z+((e=I+h|0)>>>0>>0?a+1|0:a)|0,Y=a=(e=e+Y|0)>>>0>>0?a+1|0:a,N=UI(c^e,a^N,32),a=(CA=f)+M|0,M=_=N+_|0,c=UI(_^h,(c=K)^(K=_>>>0>>0?a+1|0:a),40),a=wA+(b=f)|0,a=Y+((_=c+V|0)>>>0>>0?a+1|0:a)|0,l=_=_+e|0,W=a=_>>>0>>0?a+1|0:a,e=a,a=m+sA|0,a=((h=x+gA|0)>>>0>>0?a+1|0:a)+e|0,Y=a=(e=_+h|0)>>>0>>0?a+1|0:a,_=UI(e^k,a^D,32),a=(Z=f)+O|0,D=UI((h=_+q|0)^x,(a=h>>>0<_>>>0?a+1|0:a)^m,40),x=a,a=B+(J=f)|0,a=Y+((m=D+fA|0)>>>0>>0?a+1|0:a)|0,a=(Y=e+m|0)>>>0>>0?a+1|0:a,e=Z,Z=a,e=UI(_^Y,e^a,48),a=(a=x)+(x=f)|0,_=(h=e+h|0)^D,D=a=h>>>0>>0?a+1|0:a,J=a=UI(_,a^J,1),m=_=f,AA=s,T=y,y=c,c=UI(N^l,W^CA,48),a=(N=f)+K|0,K=_=c+M|0,M=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^b,1),a=(b=f)+tA|0,a=U+((_=y+z|0)>>>0>>0?a+1|0:a)|0,p=a=(s=_+p|0)>>>0

>>0?a+1|0:a,_=UI(s^T,a^d,32),a=(U=f)+w|0,d=a=(w=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^w,a^b,40),a=GA+(CA=f)|0,b=y,a=p+((y=_A+y|0)>>>0<_A>>>0?a+1|0:a)|0,p=y+s|0,y=U,U=a=p>>>0>>0?a+1|0:a,y=UI(_^p,y^a,48),a=(a=d)+(d=f)|0,l=_=y+w|0,W=a=_>>>0>>0?a+1|0:a,s=r,a=G+IA|0,r=a=(_=k+u|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^H,1),a=(k=f)+DA|0,a=S+((w=t+oA|0)>>>0>>0?a+1|0:a)|0,n=a=(w=w+n|0)>>>0>>0?a+1|0:a,s=UI(s^w,a^L,32),S=a=f,G=t,a=a+M|0,a=(t=s+K|0)>>>0>>0?a+1|0:a,u=t,t^=G,G=a,t=UI(t,a^k,40),a=yA+(H=f)|0,a=n+((k=t+rA|0)>>>0>>0?a+1|0:a)|0,K=S,S=a=(n=w+k|0)>>>0>>0?a+1|0:a,k=UI(s^n,K^a,48),IA=a=f,w=a,s=UI(q^v,O^$,1),K=a=f,M=r,a=a+P|0,a=R+((r=s+aA|0)>>>0>>0?a+1|0:a)|0,F=a=(r=r+F|0)>>>0>>0?a+1|0:a,N=UI(c^r,a^N,32),a=($=f)+M|0,M=_=N+_|0,c=UI(_^s,(c=K)^(K=_>>>0>>0?a+1|0:a),40),a=NA+(v=f)|0,a=F+((_=c+cA|0)>>>0>>0?a+1|0:a)|0,q=_=_+r|0,O=a=_>>>0>>0?a+1|0:a,r=a,a=m+B|0,a=((s=J+fA|0)>>>0>>0?a+1|0:a)+r|0,F=a=(r=_+s|0)>>>0>>0?a+1|0:a,_=UI(r^k,a^w,32),a=(R=f)+W|0,w=UI((s=_+l|0)^J,(a=s>>>0<_>>>0?a+1|0:a)^m,40),L=a,a=SA+(J=f)|0,a=F+((m=w+iA|0)>>>0>>0?a+1|0:a)|0,a=(F=r+m|0)>>>0>>0?a+1|0:a,r=R,R=a,r=UI(_^F,r^a,48),a=(a=L)+(L=f)|0,_=(s=r+s|0)^w,w=a=s>>>0>>0?a+1|0:a,J=a=UI(_,a^J,1),m=_=f,AA=h,T=y,y=c,c=UI(N^q,O^$,48),a=(N=f)+K|0,K=_=c+M|0,M=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^v,1),a=(v=f)+P|0,a=S+((_=y+aA|0)>>>0>>0?a+1|0:a)|0,n=a=(h=_+n|0)>>>0>>0?a+1|0:a,_=UI(h^T,a^d,32),a=(S=f)+D|0,d=a=(D=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^D,a^v,40),a=yA+($=f)|0,v=y,a=n+((y=rA+y|0)>>>0>>0?a+1|0:a)|0,n=y+h|0,y=S,S=a=n>>>0>>0?a+1|0:a,y=UI(_^n,y^a,48),a=(a=d)+(d=f)|0,q=_=y+D|0,O=a=_>>>0>>0?a+1|0:a,h=e,a=G+IA|0,e=a=(_=k+u|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^H,1),a=DA+(k=f)|0,a=U+((D=t+oA|0)>>>0>>0?a+1|0:a)|0,p=a=(D=D+p|0)>>>0

>>0?a+1|0:a,h=UI(h^D,a^x,32),U=a=f,G=t,a=a+M|0,a=(t=h+K|0)>>>0>>0?a+1|0:a,u=t,t^=G,G=a,t=UI(t,a^k,40),a=GA+(H=f)|0,a=p+((k=t+_A|0)>>>0<_A>>>0?a+1|0:a)|0,a=(p=D+k|0)>>>0>>0?a+1|0:a,D=U,U=a,k=UI(h^p,D^a,48),IA=a=f,D=a,h=UI(b^l,W^CA,1),K=a=f,M=e,a=a+BA|0,a=Z+((e=h+j|0)>>>0>>0?a+1|0:a)|0,Y=a=(e=e+Y|0)>>>0>>0?a+1|0:a,N=UI(c^e,a^N,32),a=(CA=f)+M|0,M=_=N+_|0,c=UI(_^h,(c=K)^(K=_>>>0>>0?a+1|0:a),40),a=NA+(b=f)|0,a=Y+((_=c+cA|0)>>>0>>0?a+1|0:a)|0,l=_=_+e|0,W=a=_>>>0>>0?a+1|0:a,e=a,a=m+wA|0,a=((h=J+V|0)>>>0>>0?a+1|0:a)+e|0,Y=a=(e=_+h|0)>>>0>>0?a+1|0:a,_=UI(e^k,a^D,32),a=(Z=f)+O|0,D=UI((h=_+q|0)^J,(a=h>>>0<_>>>0?a+1|0:a)^m,40),x=a,a=X+(J=f)|0,a=Y+((m=I+D|0)>>>0>>0?a+1|0:a)|0,a=(Y=e+m|0)>>>0>>0?a+1|0:a,e=Z,Z=a,e=UI(_^Y,e^a,48),a=(a=x)+(x=f)|0,_=(h=e+h|0)^D,D=a=h>>>0>>0?a+1|0:a,J=a=UI(_,a^J,1),m=_=f,AA=s,T=y,y=c,c=UI(N^l,W^CA,48),a=(N=f)+K|0,K=_=c+M|0,M=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^b,1),a=(b=f)+pA|0,a=U+((_=y+EA|0)>>>0>>0?a+1|0:a)|0,p=a=(s=_+p|0)>>>0

>>0?a+1|0:a,_=UI(s^T,a^d,32),a=(U=f)+w|0,d=a=(w=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^w,a^b,40),a=Q+(CA=f)|0,b=y,a=p+((y=g+y|0)>>>0>>0?a+1|0:a)|0,p=y+s|0,y=U,U=a=p>>>0>>0?a+1|0:a,y=UI(_^p,y^a,48),a=(a=d)+(d=f)|0,l=_=y+w|0,W=a=_>>>0>>0?a+1|0:a,s=r,a=G+IA|0,r=a=(_=k+u|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^H,1),a=(k=f)+sA|0,a=S+((w=t+gA|0)>>>0>>0?a+1|0:a)|0,n=a=(w=w+n|0)>>>0>>0?a+1|0:a,s=UI(s^w,a^L,32),S=a=f,G=t,a=a+M|0,a=(t=s+K|0)>>>0>>0?a+1|0:a,u=t,t^=G,G=a,t=UI(t,a^k,40),a=FA+(H=f)|0,a=n+((k=t+QA|0)>>>0>>0?a+1|0:a)|0,K=S,S=a=(n=w+k|0)>>>0>>0?a+1|0:a,k=UI(s^n,K^a,48),IA=a=f,w=a,s=UI(q^v,O^$,1),K=a=f,M=r,a=a+kA|0,a=R+((r=s+eA|0)>>>0>>0?a+1|0:a)|0,F=a=(r=r+F|0)>>>0>>0?a+1|0:a,N=UI(c^r,a^N,32),a=($=f)+M|0,M=_=N+_|0,c=UI(_^s,(c=K)^(K=_>>>0>>0?a+1|0:a),40),a=tA+(v=f)|0,a=F+((_=c+z|0)>>>0>>0?a+1|0:a)|0,q=_=_+r|0,O=a=_>>>0>>0?a+1|0:a,r=a,a=m+NA|0,a=((s=J+cA|0)>>>0>>0?a+1|0:a)+r|0,F=a=(r=_+s|0)>>>0>>0?a+1|0:a,_=UI(r^k,a^w,32),a=(R=f)+W|0,w=UI((s=_+l|0)^J,(a=s>>>0<_>>>0?a+1|0:a)^m,40),L=a,a=yA+(J=f)|0,a=F+((m=w+rA|0)>>>0>>0?a+1|0:a)|0,a=(F=r+m|0)>>>0>>0?a+1|0:a,r=R,R=a,r=UI(_^F,r^a,48),a=(a=L)+(L=f)|0,_=(s=r+s|0)^w,w=a=s>>>0>>0?a+1|0:a,J=a=UI(_,a^J,1),m=_=f,AA=h,T=y,y=c,c=UI(N^q,O^$,48),a=(N=f)+K|0,K=_=c+M|0,M=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^v,1),a=(v=f)+SA|0,a=S+((_=y+iA|0)>>>0>>0?a+1|0:a)|0,n=a=(h=_+n|0)>>>0>>0?a+1|0:a,_=UI(h^T,a^d,32),a=(S=f)+D|0,d=a=(D=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^D,a^v,40),a=B+($=f)|0,v=y,a=n+((y=fA+y|0)>>>0>>0?a+1|0:a)|0,n=y+h|0,y=S,S=a=n>>>0>>0?a+1|0:a,y=UI(_^n,y^a,48),a=(a=d)+(d=f)|0,q=_=y+D|0,O=a=_>>>0>>0?a+1|0:a,h=e,a=G+IA|0,e=a=(_=k+u|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^H,1),a=FA+(k=f)|0,a=U+((D=t+QA|0)>>>0>>0?a+1|0:a)|0,p=a=(D=D+p|0)>>>0

>>0?a+1|0:a,h=UI(h^D,a^x,32),U=a=f,G=t,a=a+M|0,a=(t=h+K|0)>>>0>>0?a+1|0:a,u=t,t^=G,G=a,t=UI(t,a^k,40),a=P+(H=f)|0,a=p+((k=t+aA|0)>>>0>>0?a+1|0:a)|0,a=(p=D+k|0)>>>0>>0?a+1|0:a,D=U,U=a,k=UI(h^p,D^a,48),IA=a=f,D=a,h=UI(b^l,W^CA,1),K=a=f,M=e,a=a+GA|0,a=Z+((e=h+_A|0)>>>0<_A>>>0?a+1|0:a)|0,Y=a=(e=e+Y|0)>>>0>>0?a+1|0:a,N=UI(c^e,a^N,32),a=(CA=f)+M|0,M=_=N+_|0,c=UI(_^h,(c=K)^(K=_>>>0>>0?a+1|0:a),40),a=kA+(b=f)|0,a=Y+((_=c+eA|0)>>>0>>0?a+1|0:a)|0,l=_=_+e|0,W=a=_>>>0>>0?a+1|0:a,e=a,a=m+DA|0,a=((h=J+oA|0)>>>0>>0?a+1|0:a)+e|0,Y=a=(e=_+h|0)>>>0>>0?a+1|0:a,_=UI(e^k,a^D,32),a=(Z=f)+O|0,D=UI((h=_+q|0)^J,(a=h>>>0<_>>>0?a+1|0:a)^m,40),x=a,a=Q+(J=f)|0,a=Y+((m=D+g|0)>>>0>>0?a+1|0:a)|0,a=(Y=e+m|0)>>>0>>0?a+1|0:a,e=Z,Z=a,e=UI(_^Y,e^a,48),a=(a=x)+(x=f)|0,_=(h=e+h|0)^D,D=a=h>>>0>>0?a+1|0:a,J=a=UI(_,a^J,1),m=_=f,AA=s,T=y,y=c,c=UI(N^l,W^CA,48),a=(N=f)+K|0,K=_=c+M|0,M=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^b,1),a=(l=f)+BA|0,a=U+((_=y+j|0)>>>0>>0?a+1|0:a)|0,p=a=(s=_+p|0)>>>0

>>0?a+1|0:a,_=UI(s^T,a^d,32),a=(U=f)+w|0,d=w=_+AA|0,b=a=w>>>0<_>>>0?a+1|0:a,y=UI(y^w,a^l,40),a=wA+(AA=f)|0,l=y,a=p+((y=V+y|0)>>>0>>0?a+1|0:a)|0,w=y+s|0,y=U,U=a=w>>>0>>0?a+1|0:a,y=UI(_^w,y^a,48),a=(a=b)+(b=f)|0,d=_=y+d|0,W=a=_>>>0>>0?a+1|0:a,s=r,a=G+IA|0,r=a=(_=k+u|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^H,1),a=(k=f)+X|0,a=S+((p=I+t|0)>>>0>>0?a+1|0:a)|0,n=a=(p=p+n|0)>>>0>>0?a+1|0:a,S=s=UI(s^p,a^L,32),G=a=f,u=t,a=a+M|0,a=(t=s+K|0)>>>0>>0?a+1|0:a,H=t,t^=u,u=a,t=UI(t,a^k,40),a=pA+(K=f)|0,a=n+((s=t+EA|0)>>>0>>0?a+1|0:a)|0,M=(s=s+p|0)^S,S=a=s>>>0

>>0?a+1|0:a,p=UI(M,a^G,48),L=a=f,k=a,G=n=UI(q^v,O^$,1),M=a=f,v=r,a=a+tA|0,a=R+((r=n+z|0)>>>0>>0?a+1|0:a)|0,a=(r=r+F|0)>>>0>>0?a+1|0:a,F=N,N=a,n=UI(c^r,F^a,32),a=(T=f)+v|0,F=_=n+_|0,c=UI(c=_^G,(G=_>>>0>>0?a+1|0:a)^M,40),a=sA+(M=f)|0,a=N+((_=c+gA|0)>>>0>>0?a+1|0:a)|0,N=_=_+r|0,v=a=_>>>0>>0?a+1|0:a,r=a,a=m+wA|0,a=((R=V)>>>0>(V=J+V|0)>>>0?a+1|0:a)+r|0,wA=a=(_=_+V|0)>>>0>>0?a+1|0:a,V=UI(_^p,a^k,32),a=(q=f)+W|0,k=UI((r=d+V|0)^J,(a=r>>>0>>0?a+1|0:a)^m,40),R=a,a=pA+(O=f)|0,a=wA+((J=EA)>>>0>(EA=k+EA|0)>>>0?a+1|0:a)|0,a=(EA=_+EA|0)>>>0<_>>>0?a+1|0:a,_=V^EA,V=a,pA=UI(_,a^q,48);a=(wA=f)+R|0,r=a=(_=r+pA|0)>>>0>>0?a+1|0:a,a=UI(_^k,a^O,1),k=f,q=a,O=h,h=gA,R=sA,sA=UI(n^N,v^T,48),a=(n=f)+G|0,G=h,F=a=(gA=F+sA|0)>>>0>>0?a+1|0:a,h=UI(c^(N=gA),a^M,1),a=(M=f)+R|0,a=S+(h>>>0>(gA=G+h|0)>>>0?a+1|0:a)|0,c=a=(gA=s+gA|0)>>>0>>0?a+1|0:a,y=UI(y^gA,a^b,32),a=(a=D)+(D=f)|0,S=s=y+O|0,G=a=s>>>0>>0?a+1|0:a,s=UI(s^h,a^M,40),a=(M=f)+SA|0,a=(s>>>0>(iA=s+iA|0)>>>0?a+1|0:a)+c|0,c=a=(c=iA)>>>0>(iA=gA+iA|0)>>>0?a+1|0:a,y=UI(y^iA,a^D,48),a=(h=f)+G|0,D=gA=y+S|0,SA=a=gA>>>0>>0?a+1|0:a,S=I,G=X,a=u+L|0,gA=a=(I=p+H|0)>>>0

>>0?a+1|0:a,X=UI(I^t,a^K,1),a=(p=f)+G|0,a=U+((t=S+X|0)>>>0>>0?a+1|0:a)|0,e=UI((t=t+w|0)^e,(a=t>>>0>>0?a+1|0:a)^x,32),S=a,U=oA,oA=X,a=(w=f)+F|0,F=p,p=a=(X=e+N|0)>>>0>>0?a+1|0:a,oA=UI(X^oA,F^a,40),a=(N=f)+DA|0,a=((DA=U+oA|0)>>>0>>0?a+1|0:a)+S|0,S=DA,t=e^(DA=t+DA|0),e=a=S>>>0>DA>>>0?a+1|0:a,a=UI(t,a^w,48),u=t=f,w=a,F=j,S=BA,j=UI(d^l,W^AA,1),G=a=f,a=a+NA|0,a=Z+((j=(U=j)+cA|0)>>>0>>0?a+1|0:a)|0,cA=a=(j=Y+j|0)>>>0>>0?a+1|0:a,BA=UI(j^sA,a^n,32),a=(Y=f)+gA|0,gA=I=BA+I|0,sA=UI(I^U,(n=I>>>0>>0?a+1|0:a)^G,40),a=(a=S)+(S=f)|0,a=cA+((I=sA+F|0)>>>0>>0?a+1|0:a)|0,cA=I=I+j|0,NA=a=I>>>0>>0?a+1|0:a,j=a,a=k+FA|0,a=((U=QA)>>>0>(QA=q+QA|0)>>>0?a+1|0:a)+j|0,FA=a=(j=I+QA|0)>>>0>>0?a+1|0:a,QA=UI(w^j,a^t,32),a=(U=f)+SA|0,t=I=QA+D|0,I=UI(I^q,(F=k)^(k=I>>>0>>0?a+1|0:a),40),a=GA+(G=f)|0,GA=I,a=FA+((I=_A+I|0)>>>0<_A>>>0?a+1|0:a)|0,a=(I=I+j|0)>>>0>>0?a+1|0:a,FA=I,H=(o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24)^I,F=a,K=a^(o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24),j=UI(BA^cA,Y^NA,48),a=(cA=f)+n|0,n=I=j+gA|0,NA=a=I>>>0>>0?a+1|0:a,BA=rA,a=p+u|0,rA=a=(I=w+X|0)>>>0>>0?a+1|0:a,oA=UI(I^oA,a^N,1),a=(w=f)+yA|0,a=((BA=oA+BA|0)>>>0>>0?a+1|0:a)+c|0,BA=a=(yA=BA+iA|0)>>>0>>0?a+1|0:a,gA=UI(yA^pA,a^wA,32),a=(X=f)+NA|0,iA=a=(_A=gA+n|0)>>>0>>0?a+1|0:a,pA=gA,gA=UI(oA^_A,a^w,40),a=(c=f)+kA|0,a=(gA>>>0>(oA=gA+eA|0)>>>0?a+1|0:a)+BA|0,p=X,X=a=(yA=oA+yA|0)>>>0>>0?a+1|0:a,oA=UI(pA^(eA=yA),p^a,48),a=(w=f)+iA|0,a=(BA=oA+_A|0)>>>0>>0?a+1|0:a,_A=BA,BA^=H,C[A+8|0]=BA,C[A+9|0]=BA>>>8,C[A+10|0]=BA>>>16,C[A+11|0]=BA>>>24,iA=a,a^=K,C[A+12|0]=a,C[A+13|0]=a>>>8,C[A+14|0]=a>>>16,C[A+15|0]=a>>>24,yA=I,BA=rA,I=j,j=UI(s^D,M^SA,1),a=(kA=f)+Q|0,a=(j>>>0>(rA=j+g|0)>>>0?a+1|0:a)+V|0,EA=a=(D=rA)>>>0>(rA=EA+rA|0)>>>0?a+1|0:a,I=UI(I^rA,a^cA,32),a=(a=BA)+(BA=f)|0,cA=a=(yA=I+yA|0)>>>0>>0?a+1|0:a,pA=I,yA=UI(j^(V=yA),a^kA,40),a=(s=f)+B|0,a=EA+((I=yA+fA|0)>>>0>>0?a+1|0:a)|0,a=(I=I+rA|0)>>>0>>0?a+1|0:a,EA=I,I^=pA,pA=a,rA=UI(I,a^BA,48),a=(D=f)+cA|0,V=I=rA+V|0,cA=I>>>0>>0?a+1|0:a,sA=I=UI(n^sA,S^NA,1),kA=a=f,a=a+P|0,a=e+((I=I+aA|0)>>>0>>0?a+1|0:a)|0,P=a=(j=I+DA|0)>>>0>>0?a+1|0:a,I=(BA=UI(y^j,a^h,32))+_|0,a=(_=f)+r|0,DA=I,I=(aA=UI(e=I^sA,(sA=I>>>0>>0?a+1|0:a)^kA,40))+z|0,a=(z=f)+tA|0,a=P+(I>>>0>>0?a+1|0:a)|0,a=(P=I+j|0)>>>0>>0?a+1|0:a,j=P^KA^V,C[0|(I=A)]=j,C[I+1|0]=j>>>8,C[I+2|0]=j>>>16,C[I+3|0]=j>>>24,j=a^i^cA,C[I+4|0]=j,C[I+5|0]=j>>>8,C[I+6|0]=j>>>16,C[I+7|0]=j>>>24,j=(BA=UI(P^BA,a^_,48))+DA|0,a=(DA=f)+sA|0,a=(sA=j>>>0>>0?a+1|0:a)^(o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24)^pA,P=(o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24)^EA^j,C[I+16|0]=P,C[I+17|0]=P>>>8,C[I+18|0]=P>>>16,C[I+19|0]=P>>>24,C[I+20|0]=a,C[I+21|0]=a>>>8,C[I+22|0]=a>>>16,C[I+23|0]=a>>>24,I=UI(QA^FA,F^U,48),P=f,EA=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,a=(o[A+32|0]|o[A+33|0]<<8|o[A+34|0]<<16|o[A+35|0]<<24)^UI(gA^_A,c^iA,1)^I,C[A+32|0]=a,C[A+33|0]=a>>>8,C[A+34|0]=a>>>16,C[A+35|0]=a>>>24,a=f^EA^P,C[A+36|0]=a,C[A+37|0]=a>>>8,C[A+38|0]=a>>>16,C[A+39|0]=a>>>24,a=k+P|0,a=(EA=I+t|0)>>>0>>0?a+1|0:a,gA=(o[(I=A)+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24)^X^a,P=(o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24)^eA^EA,C[I+24|0]=P,C[I+25|0]=P>>>8,C[I+26|0]=P>>>16,C[I+27|0]=P>>>24,C[I+28|0]=gA,C[I+29|0]=gA>>>8,C[I+30|0]=gA>>>16,C[I+31|0]=gA>>>24,gA=o[I+44|0]|o[I+45|0]<<8|o[I+46|0]<<16|o[I+47|0]<<24,I=rA^(o[I+40|0]|o[I+41|0]<<8|o[I+42|0]<<16|o[I+43|0]<<24)^UI(j^aA,z^sA,1),C[A+40|0]=I,C[A+41|0]=I>>>8,C[A+42|0]=I>>>16,C[A+43|0]=I>>>24,I=D^f^gA,C[A+44|0]=I,C[A+45|0]=I>>>8,C[A+46|0]=I>>>16,C[A+47|0]=I>>>24,j=o[A+60|0]|o[A+61|0]<<8|o[A+62|0]<<16|o[A+63|0]<<24,I=BA^(o[A+56|0]|o[A+57|0]<<8|o[A+58|0]<<16|o[A+59|0]<<24)^UI(V^yA,s^cA,1),C[A+56|0]=I,C[A+57|0]=I>>>8,C[A+58|0]=I>>>16,C[A+59|0]=I>>>24,I=DA^f^j,C[A+60|0]=I,C[A+61|0]=I>>>8,C[A+62|0]=I>>>16,C[A+63|0]=I>>>24,j=o[A+52|0]|o[A+53|0]<<8|o[A+54|0]<<16|o[A+55|0]<<24,I=oA^(o[A+48|0]|o[A+49|0]<<8|o[A+50|0]<<16|o[A+51|0]<<24)^UI(EA^GA,a^G,1),C[A+48|0]=I,C[A+49|0]=I>>>8,C[A+50|0]=I>>>16,C[A+51|0]=I>>>24,I=w^f^j,C[A+52|0]=I,C[A+53|0]=I>>>8,C[A+54|0]=I>>>16,C[A+55|0]=I>>>24}function w(A,I,g,B,Q,E,a){var _,c,t,r,e,y,h,D,p,w,n,k,F,N,G,M,K,U,b,H,Y,J,d,m,l,u,x,v,R,L,P,q,z,X,O,W,V,Z,T,$,AA,IA,gA,CA,BA,QA,iA,oA,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0,sA=0,hA=0,DA=0,fA=0,pA=0,wA=0,kA=0,FA=0,NA=0,GA=0,MA=0,KA=0,UA=0,bA=0,HA=0,YA=0,JA=0,dA=0,mA=0,lA=0,uA=0,xA=0,vA=0,RA=0,LA=0,PA=0,qA=0,zA=0,jA=0,XA=0,OA=0,WA=0,VA=0,ZA=0,TA=0,$A=0,AI=0,II=0;return s=t=s-560|0,SI(_A=t+352|0),a&&SA(_A,35600,34,0),FI(t+288|0,E,32,0),SA(rA=t+352|0,t+320|0,32,0),SA(rA,g,B,Q),j(rA,yA=t+224|0),hA=o[(aA=E)+32|0]|o[aA+33|0]<<8|o[aA+34|0]<<16|o[aA+35|0]<<24,DA=o[aA+36|0]|o[aA+37|0]<<8|o[aA+38|0]<<16|o[aA+39|0]<<24,cA=o[aA+40|0]|o[aA+41|0]<<8|o[aA+42|0]<<16|o[aA+43|0]<<24,EA=o[aA+44|0]|o[aA+45|0]<<8|o[aA+46|0]<<16|o[aA+47|0]<<24,_A=o[aA+48|0]|o[aA+49|0]<<8|o[aA+50|0]<<16|o[aA+51|0]<<24,E=o[aA+52|0]|o[aA+53|0]<<8|o[aA+54|0]<<16|o[aA+55|0]<<24,tA=o[aA+60|0]|o[aA+61|0]<<8|o[aA+62|0]<<16|o[aA+63|0]<<24,aA=o[aA+56|0]|o[aA+57|0]<<8|o[aA+58|0]<<16|o[aA+59|0]<<24,C[A+56|0]=aA,C[A+57|0]=aA>>>8,C[A+58|0]=aA>>>16,C[A+59|0]=aA>>>24,C[A+60|0]=tA,C[A+61|0]=tA>>>8,C[A+62|0]=tA>>>16,C[A+63|0]=tA>>>24,C[A+48|0]=_A,C[A+49|0]=_A>>>8,C[A+50|0]=_A>>>16,C[A+51|0]=_A>>>24,C[A+52|0]=E,C[A+53|0]=E>>>8,C[A+54|0]=E>>>16,C[A+55|0]=E>>>24,C[A+40|0]=cA,C[A+41|0]=cA>>>8,C[A+42|0]=cA>>>16,C[A+43|0]=cA>>>24,C[A+44|0]=EA,C[A+45|0]=EA>>>8,C[A+46|0]=EA>>>16,C[A+47|0]=EA>>>24,C[0|(E=A+32|0)]=hA,C[E+1|0]=hA>>>8,C[E+2|0]=hA>>>16,C[E+3|0]=hA>>>24,C[E+4|0]=DA,C[E+5|0]=DA>>>8,C[E+6|0]=DA>>>16,C[E+7|0]=DA>>>24,S(yA),nA(t,yA),tg(A,t),SI(rA),a&&SA(rA,35600,34,0),SA(a=t+352|0,A,64,0),SA(a,g,B,Q),j(a,eA=t+160|0),S(eA),C[t+288|0]=248&o[t+288|0],C[t+319|0]=63&o[t+319|0]|64,g=o[23+(A=c=t+288|0)|0],cA=Ig(r=o[A+21|0]|o[A+22|0]<<8|g<<16&2031616,0,e=(o[eA+28|0]|o[eA+29|0]<<8|o[eA+30|0]<<16|o[eA+31|0]<<24)>>>7|0,0),_A=f,g=(A=o[eA+27|0])>>>24|0,Q=A<<8|(EA=o[eA+23|0]|o[eA+24|0]<<8|o[eA+25|0]<<16|o[eA+26|0]<<24)>>>24,A=Ig(y=2097151&((3&(DA=(A=(B=o[eA+28|0])>>>16|0)|g))<<30|(g=(B<<=16)|Q)>>>2),0,h=(a=o[c+23|0]|o[c+24|0]<<8|o[c+25|0]<<16|o[c+26|0]<<24)>>>5&2097151,0),g=f+_A|0,B=A>>>0>(Q=A+cA|0)>>>0?g+1|0:g,A=Ig(D=(g=o[eA+23|0])<<16&2031616|o[eA+21|0]|o[eA+22|0]<<8,0,p=(o[c+28|0]|o[c+29|0]<<8|o[c+30|0]<<16|o[c+31|0]<<24)>>>7|0,0),B=f+B|0,_A=g=A+Q|0,Q=A>>>0>g>>>0?B+1|0:B,B=(A=o[c+27|0])>>>24|0,a=A<<8|a>>>24,A=Ig(w=2097151&((3&(B|=g=(A=o[c+28|0])>>>16|0))<<30|(g=(A<<=16)|a)>>>2),0,n=EA>>>5&2097151,0),g=f+Q|0,aA=B=A+_A|0,Q=A>>>0>B>>>0?g+1|0:g,EA=Ig(h,0,n,0),_A=f,g=(A=o[c+19|0])>>>24|0,a=A<<8|(GA=o[c+15|0]|o[c+16|0]<<8|o[c+17|0]<<16|o[c+18|0]<<24)>>>24,B=g,g=Ig(k=(7&(B|=g=(A=o[c+20|0])>>>16|0))<<29|(g=(A<<=16)|a)>>>3,DA=B>>>3|0,e,0),A=f+_A|0,A=g>>>0>(B=g+EA|0)>>>0?A+1|0:A,a=(g=Ig(r,0,y,0))+B|0,B=f+A|0,g=g>>>0>(EA=a)>>>0?B+1|0:B,B=(A=o[eA+19|0])>>>24|0,_A=A<<8|(kA=o[eA+15|0]|o[eA+16|0]<<8|o[eA+17|0]<<16|o[eA+18|0]<<24)>>>24,A=Ig(F=(7&(cA=(A=(a=o[eA+20|0])>>>16|0)|B))<<29|(B=(a<<=16)|_A)>>>3,N=cA>>>3|0,p,0),g=f+g|0,g=A>>>0>(B=A+EA|0)>>>0?g+1|0:g,A=Ig(D,0,w,0),g=f+g|0,hA=g=A>>>0>(yA=A+B|0)>>>0?g+1|0:g,fA=A=g-((yA>>>0<4293918720)-1|0)|0,B=(g=A>>>21|0)+Q|0,EA=B=(A=(2097151&A)<<11|(cA=yA- -1048576|0)>>>21)>>>0>(aA=A+aA|0)>>>0?B+1|0:B,wA=A=B-((aA>>>0<4293918720)-1|0)|0,tA=(2097151&A)<<11|(_A=aA- -1048576|0)>>>21,a=A>>>21|0,A=Ig(p,0,n,0),g=f,B=A,A=Ig(e,0,h,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,pA=(A=B)+(B=Ig(y,0,w,0))|0,A=f+g|0,A=B>>>0>pA>>>0?A+1|0:A,rA=pA-(g=-2097152&(B=pA- -1048576|0))|0,g=(A-((131071&(Q=A-((pA>>>0<4293918720)-1|0)|0))+(g>>>0>pA>>>0)|0)|0)+a|0,R=g=(A=tA+rA|0)>>>0>>0?g+1|0:g,L=A,rA=Ig(A,g,470296,0),tA=f,g=Ig(e,0,w,0),A=f,a=g,g=Ig(y,0,p,0),A=f+A|0,g=g>>>0>(a=a+g|0)>>>0?A+1|0:A,A=Q>>>21|0,Q=(2097151&Q)<<11|B>>>21,B=A+g|0,bA=Q=(B=Q>>>0>(a=Q+a|0)>>>0?B+1|0:B)-((a>>>0<4293918720)-1|0)|0,A=a-(g=-2097152&(UA=a- -1048576|0))|0,P=a=B-((131071&Q)+(g>>>0>a>>>0)|0)|0,q=g=aA-(B=-2097152&_A)|0,z=Q=EA-((B>>>0>aA>>>0)+wA|0)|0,X=A,B=Ig(A,a,666643,0),A=f+tA|0,A=B>>>0>(a=B+rA|0)>>>0?A+1|0:A,B=Ig(g,Q,654183,0),g=f+A|0,sA=Q=B+a|0,_A=B>>>0>Q>>>0?g+1|0:g,pA=yA-(A=-2097152&cA)|0,fA=hA-((A>>>0>yA>>>0)+fA|0)|0,g=Ig(y,0,k,DA),B=f,Q=(A=g)+(g=Ig(G=GA>>>6&2097151,0,e,0))|0,A=f+B|0,A=g>>>0>Q>>>0?A+1|0:A,g=Ig(h,0,D,0),B=f+A|0,B=g>>>0>(Q=g+Q|0)>>>0?B+1|0:B,A=Ig(r,0,n,0),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,B=Ig(p,0,M=kA>>>6&2097151,0),A=f+g|0,A=B>>>0>(Q=B+Q|0)>>>0?A+1|0:A,B=Ig(w,0,F,N),g=f+A|0,yA=Q=B+Q|0,a=B>>>0>Q>>>0?g+1|0:g,g=(A=o[c+14|0])>>>24|0,Q=A<<8|(hA=o[c+10|0]|o[c+11|0]<<8|o[c+12|0]<<16|o[c+13|0]<<24)>>>24,g=Ig(K=2097151&((1&(g|=A=(B=o[c+15|0])>>>16|0))<<31|(A=(B<<=16)|Q)>>>1),0,e,0),A=f,B=g,g=Ig(y,0,G,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=Ig(n,0,k,DA))+B|0,B=f+A|0,B=g>>>0>Q>>>0?B+1|0:B,A=Ig(h,0,F,N),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,A=Ig(r,0,D,0),g=f+g|0,cA=B=A+Q|0,Q=A>>>0>B>>>0?g+1|0:g,g=(A=o[eA+14|0])>>>24|0,EA=A<<8|(aA=o[eA+10|0]|o[eA+11|0]<<8|o[eA+12|0]<<16|o[eA+13|0]<<24)>>>24,B=g,g=(A=o[eA+15|0])>>>16|0,g=Ig(U=2097151&((1&(g|=B))<<31|(A=A<<16|EA)>>>1),0,p,0),A=f+Q|0,A=g>>>0>(B=g+cA|0)>>>0?A+1|0:A,g=Ig(w,0,M,0),A=f+A|0,EA=A=g>>>0>(cA=g+B|0)>>>0?A+1|0:A,HA=g=A-((cA>>>0<4293918720)-1|0)|0,B=(A=g>>>21|0)+a|0,tA=B=(g=(2097151&g)<<11|(rA=cA- -1048576|0)>>>21)>>>0>(wA=g+yA|0)>>>0?B+1|0:B,MA=g=B-((wA>>>0<4293918720)-1|0)|0,A=(A=g>>>21|0)+fA|0,O=A=(g=(B=(2097151&g)<<11|(yA=wA- -1048576|0)>>>21)+pA|0)>>>0>>0?A+1|0:A,W=g,A=Ig(g,A,-997805,-1),g=f+_A|0,sA=B=A+sA|0,_A=A>>>0>B>>>0?g+1|0:g,pA=(dA=o[23+(_=t+224|0)|0]|o[_+24|0]<<8|o[_+25|0]<<16|o[_+26|0]<<24)>>>5&2097151,B=Ig(b=(A=o[c+2|0])<<16&2031616|o[0|c]|o[c+1|0]<<8,0,n,0),g=f,Q=(A=Ig(D,0,H=(a=o[c+2|0]|o[c+3|0]<<8|o[c+4|0]<<16|o[c+5|0]<<24)>>>5&2097151,0))+B|0,B=f+g|0,B=A>>>0>Q>>>0?B+1|0:B,A=Ig(Y=(o[c+7|0]|o[c+8|0]<<8|o[c+9|0]<<16|o[c+10|0]<<24)>>>7&2097151,0,M,0),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,B=Ig(U,0,J=hA>>>4&2097151,0),A=f+g|0,hA=Q=B+Q|0,Q=B>>>0>Q>>>0?A+1|0:A,a=(g=o[c+6|0])<<8|a>>>24,B=A=g>>>24|0,g=(A=o[c+7|0])>>>16|0,g=Ig(d=2097151&((3&(g|=B))<<30|(A=A<<16|a)>>>2),0,F,N),A=f+Q|0,A=g>>>0>(B=g+hA|0)>>>0?A+1|0:A,Q=(g=Ig(G,0,m=(o[eA+7|0]|o[eA+8|0]<<8|o[eA+9|0]<<16|o[eA+10|0]<<24)>>>7&2097151,0))+B|0,B=f+A|0,B=g>>>0>Q>>>0?B+1|0:B,g=Ig(K,0,KA=aA>>>4&2097151,0),A=f+B|0,a=g>>>0>(Q=g+Q|0)>>>0?A+1|0:A,A=(g=o[eA+6|0])>>>24|0,hA=g<<8|(aA=o[eA+2|0]|o[eA+3|0]<<8|o[eA+4|0]<<16|o[eA+5|0]<<24)>>>24,g=A,A=Ig(k,DA,l=2097151&((3&(g|=B=(A=o[eA+7|0])>>>16|0))<<30|(A=A<<16|hA)>>>2),0),g=f+a|0,g=A>>>0>(B=A+Q|0)>>>0?g+1|0:g,Q=B,B=Ig(u=(A=o[eA+2|0])<<16&2031616|o[0|eA]|o[eA+1|0]<<8,0,h,0),A=f+g|0,A=B>>>0>(Q=Q+B|0)>>>0?A+1|0:A,g=Ig(r,0,x=aA>>>5&2097151,0),A=f+A|0,A=g>>>0>(B=g+Q|0)>>>0?A+1|0:A,g=B,hA=B=B+pA|0,a=g=g>>>0>B>>>0?A+1|0:A,Q=o[_+21|0]|o[_+22|0]<<8,A=Ig(D,0,b,0),g=f,aA=(B=A)+(A=Ig(F,N,H,0))|0,B=f+g|0,B=A>>>0>aA>>>0?B+1|0:B,A=Ig(U,0,Y,0),g=f+B|0,g=A>>>0>(aA=A+aA|0)>>>0?g+1|0:g,A=Ig(J,0,KA,0),g=f+g|0,g=A>>>0>(B=A+aA|0)>>>0?g+1|0:g,aA=(A=B)+(B=Ig(M,0,d,0))|0,A=f+g|0,A=B>>>0>aA>>>0?A+1|0:A,g=Ig(G,0,l,0),A=f+A|0,A=g>>>0>(B=g+aA|0)>>>0?A+1|0:A,aA=(g=Ig(K,0,m,0))+B|0,B=f+A|0,B=g>>>0>aA>>>0?B+1|0:B,A=Ig(k,DA,x,0),g=f+B|0,g=A>>>0>(aA=A+aA|0)>>>0?g+1|0:g,A=Ig(r,0,u,0),g=f+g|0,A=A>>>0>(B=A+aA|0)>>>0?g+1|0:g,g=(g=B)>>>0>(B=B+Q|0)>>>0?A+1|0:A,Q=B,B=(A=o[_+23|0])<<16&2031616,A=g,B=A=B>>>0>(Q=Q+B|0)>>>0?A+1|0:A,eA=A=A-((Q>>>0<4293918720)-1|0)|0,g=(g=A>>>21|0)+a|0,A=(g=(a=hA=(A=(2097151&A)<<11|(aA=Q- -1048576|0)>>>21)+hA|0)>>>0>>0?g+1|0:g)+_A|0,A=(_A=a+sA|0)>>>0>>0?A+1|0:A,kA=a- -1048576|0,FA=a=g-((a>>>0<4293918720)-1|0)|0,NA=_A-(g=-2097152&kA)|0,YA=A-((g>>>0>_A>>>0)+a|0)|0,hA=Q,_A=B,A=Ig(q,z,470296,0),g=f,B=A,A=Ig(L,R,666643,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,Q=(A=B)+(B=Ig(W,O,654183,0))|0,A=f+g|0,GA=Q,a=B>>>0>Q>>>0?A+1|0:A,g=Ig(F,N,b,0),A=f,B=g,g=Ig(M,0,H,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=B)+(B=Ig(Y,0,KA,0))|0,g=f+A|0,g=B>>>0>Q>>>0?g+1|0:g,A=Ig(J,0,m,0),B=f+g|0,B=A>>>0>(Q=A+Q|0)>>>0?B+1|0:B,A=Ig(U,0,d,0),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,B=Ig(G,0,x,0),A=f+g|0,A=B>>>0>(Q=B+Q|0)>>>0?A+1|0:A,g=Ig(K,0,l,0),A=f+A|0,A=g>>>0>(B=g+Q|0)>>>0?A+1|0:A,Q=(g=B)+(B=Ig(k,DA,u,0))|0,g=f+A|0,pA=Q,B=B>>>0>Q>>>0?g+1|0:g,g=(A=o[_+19|0])>>>24|0,fA=A<<8|(sA=o[_+15|0]|o[_+16|0]<<8|o[_+17|0]<<16|o[_+18|0]<<24)>>>24,B=((JA=(A=(Q=o[_+20|0])>>>16|0)|g)>>>3|0)+B|0,pA=Q=(g=(7&JA)<<29|(g=(Q<<=16)|fA)>>>3)+pA|0,Q=g>>>0>Q>>>0?B+1|0:B,fA=sA>>>6&2097151,A=Ig(M,0,b,0),g=f,B=A,A=Ig(U,0,H,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,sA=(A=B)+(B=Ig(Y,0,m,0))|0,A=f+g|0,A=B>>>0>sA>>>0?A+1|0:A,B=Ig(J,0,l,0),g=f+A|0,g=B>>>0>(sA=B+sA|0)>>>0?g+1|0:g,B=Ig(d,0,KA,0),A=f+g|0,A=B>>>0>(sA=B+sA|0)>>>0?A+1|0:A,g=Ig(G,0,u,0),B=f+A|0,B=g>>>0>(sA=g+sA|0)>>>0?B+1|0:B,A=Ig(K,0,x,0),g=f+B|0,A=A>>>0>(sA=A+sA|0)>>>0?g+1|0:g,qA=A=(lA=sA+fA|0)>>>0>>0?A+1|0:A,ZA=A=A-((lA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(LA=lA- -1048576|0)>>>21,A=(A>>>21|0)+Q|0,jA=A=B>>>0>(zA=B+pA|0)>>>0?A+1|0:A,TA=A=A-((zA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(xA=zA- -1048576|0)>>>21,A=(A>>>21|0)+a|0,g=(B>>>0>(Q=B+GA|0)>>>0?A+1|0:A)+_A|0,_A=(B=Q+hA|0)-(A=-2097152&aA)|0,eA=A=(g=B>>>0>>0?g+1|0:g)-((A>>>0>B>>>0)+eA|0)|0,$A=A=A-((_A>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(vA=_A- -1048576|0)>>>21,A=(A>>21)+YA|0,Q=A=B>>>0>(a=B+NA|0)>>>0?A+1|0:A,VA=A=A-((a>>>0<4293918720)-1|0)|0,RA=(2097151&A)<<11|(GA=a- -1048576|0)>>>21,hA=A>>21,JA=wA-(A=-2097152&yA)|0,MA=tA-((A>>>0>wA>>>0)+MA|0)|0,A=Ig(e,0,p,0),PA=g=f,NA=A,sA=A- -1048576|0,uA=g=g-((A>>>0<4293918720)-1|0)|0,V=A=g>>>21|0,A=Ig(v=(2097151&g)<<11|sA>>>21,A,-683901,-1),g=f+EA|0,g=A>>>0>(B=A+cA|0)>>>0?g+1|0:g,yA=B-(A=-2097152&rA)|0,aA=g-((A>>>0>B>>>0)+HA|0)|0,g=Ig(n,0,G,0),A=f,B=g,g=Ig(e,0,J,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,g=Ig(y,0,K,0),A=f+A|0,A=g>>>0>(B=g+B|0)>>>0?A+1|0:A,EA=(g=B)+(B=Ig(D,0,k,DA))|0,g=f+A|0,g=B>>>0>EA>>>0?g+1|0:g,A=Ig(h,0,M,0),B=f+g|0,B=A>>>0>(EA=A+EA|0)>>>0?B+1|0:B,A=Ig(r,0,F,N),g=f+B|0,g=A>>>0>(EA=A+EA|0)>>>0?g+1|0:g,B=Ig(p,0,KA,0),A=f+g|0,A=B>>>0>(EA=B+EA|0)>>>0?A+1|0:A,g=Ig(w,0,U,0),A=f+A|0,cA=B=g+EA|0,EA=g>>>0>B>>>0?A+1|0:A,A=Ig(y,0,J,0),g=f,B=A,A=Ig(e,0,Y,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,tA=(A=Ig(D,0,G,0))+B|0,B=f+g|0,B=A>>>0>tA>>>0?B+1|0:B,A=Ig(n,0,K,0),g=f+B|0,g=A>>>0>(tA=A+tA|0)>>>0?g+1|0:g,B=Ig(k,DA,F,N),A=f+g|0,A=B>>>0>(tA=B+tA|0)>>>0?A+1|0:A,g=Ig(h,0,U,0),A=f+A|0,A=g>>>0>(B=g+tA|0)>>>0?A+1|0:A,tA=(g=B)+(B=Ig(r,0,M,0))|0,g=f+A|0,g=B>>>0>tA>>>0?g+1|0:g,A=Ig(p,0,m,0),B=f+g|0,B=A>>>0>(tA=A+tA|0)>>>0?B+1|0:B,A=Ig(w,0,KA,0),g=f+B|0,fA=g=A>>>0>(pA=A+tA|0)>>>0?g+1|0:g,OA=A=g-((pA>>>0<4293918720)-1|0)|0,g=(2097151&A)<<11|(wA=pA- -1048576|0)>>>21,A=(A>>>21|0)+EA|0,rA=A=g>>>0>(HA=g+cA|0)>>>0?A+1|0:A,mA=A=A-((HA>>>0<4293918720)-1|0)|0,g=(B=A>>>21|0)+aA|0,yA=g=(A=(2097151&A)<<11|(tA=HA- -1048576|0)>>>21)>>>0>(YA=A+yA|0)>>>0?g+1|0:g,XA=A=g-((YA>>>0<4293918720)-1|0)|0,EA=(2097151&A)<<11|(aA=YA- -1048576|0)>>>21,A=(A>>21)+MA|0,Z=A=(g=EA+JA|0)>>>0>>0?A+1|0:A,T=g,A=Ig(g,A,-683901,-1),g=f+hA|0,RA=B=A+RA|0,hA=A>>>0>B>>>0?g+1|0:g,A=Ig(y,0,b,0),g=f,B=A,A=Ig(n,0,H,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,EA=(A=B)+(B=Ig(F,N,Y,0))|0,A=f+g|0,A=B>>>0>EA>>>0?A+1|0:A,g=Ig(M,0,J,0),B=f+A|0,B=g>>>0>(EA=g+EA|0)>>>0?B+1|0:B,g=Ig(D,0,d,0),A=f+B|0,A=g>>>0>(EA=g+EA|0)>>>0?A+1|0:A,B=Ig(G,0,KA,0),g=f+A|0,g=B>>>0>(EA=B+EA|0)>>>0?g+1|0:g,A=Ig(K,0,U,0),g=f+g|0,g=A>>>0>(B=A+EA|0)>>>0?g+1|0:g,EA=(A=B)+(B=Ig(k,DA,m,0))|0,A=f+g|0,A=B>>>0>EA>>>0?A+1|0:A,g=Ig(h,0,x,0),B=f+A|0,B=g>>>0>(EA=g+EA|0)>>>0?B+1|0:B,g=Ig(r,0,l,0),A=f+B|0,A=g>>>0>(EA=g+EA|0)>>>0?A+1|0:A,B=Ig(w,0,u,0),g=f+A|0,MA=EA=B+EA|0,B=B>>>0>EA>>>0?g+1|0:g,g=(A=o[_+27|0])>>>24|0,cA=A<<8|dA>>>24,EA=2097151&((3&(g|=A=(EA=o[_+28|0])>>>16|0))<<30|(A=(EA<<=16)|cA)>>>2),g=B,cA=A=EA+MA|0,EA=A>>>0>>0?g+1|0:g,JA=Ig(X,P,470296,0),MA=f,A=(B=(2097151&bA)<<11|UA>>>21)+(NA-(g=-2097152&sA)|0)|0,g=PA-((524287&uA)+(g>>>0>NA>>>0)|0)+(bA>>>21)|0,$=g=A>>>0>>0?g+1|0:g,AA=A,g=Ig(A,g,666643,0),A=f+MA|0,A=g>>>0>(B=g+JA|0)>>>0?A+1|0:A,sA=(g=Ig(L,R,654183,0))+B|0,B=f+A|0,B=g>>>0>sA>>>0?B+1|0:B,g=Ig(q,z,-997805,-1),A=f+B|0,A=g>>>0>(sA=g+sA|0)>>>0?A+1|0:A,B=Ig(W,O,136657,0),g=f+A|0,kA=(A=(2097151&FA)<<11|kA>>>21)+(sA=B+sA|0)|0,g=(FA>>>21|0)+(B>>>0>sA>>>0?g+1|0:g)|0,uA=sA=EA-((cA>>>0<4293918720)-1|0)|0,A=(A>>>0>kA>>>0?g+1|0:g)+EA|0,g=(EA=cA+kA|0)-(B=-2097152&(PA=cA- -1048576|0))|0,B=(A=(A=EA>>>0>>0?A+1|0:A)-((B>>>0>EA>>>0)+sA|0)|0)+hA|0,JA=EA=A-((g>>>0<4293918720)-1|0)|0,NA=(B=(cA=g+RA|0)>>>0>>0?B+1|0:B)-(((g=-2097152&(MA=g- -1048576|0))>>>0>cA>>>0)+EA|0)|0,dA=A=cA-g|0,EA=a,a=Q,WA=YA-(A=-2097152&aA)|0,sA=yA-((A>>>0>YA>>>0)+XA|0)|0,A=Ig(AA,$,-683901,-1),g=f,Q=(B=A)+(A=Ig(v,V,136657,0))|0,B=f+g|0,g=rA+(A>>>0>Q>>>0?B+1|0:B)|0,tA=(B=Q+HA|0)-(A=-2097152&tA)|0,yA=(g=B>>>0>>0?g+1|0:g)-((A>>>0>B>>>0)+mA|0)|0,g=Ig(v,V,-997805,-1),A=f+fA|0,A=g>>>0>(B=g+pA|0)>>>0?A+1|0:A,Q=(g=Ig(AA,$,136657,0))+B|0,B=f+A|0,B=g>>>0>Q>>>0?B+1|0:B,A=Ig(X,P,-683901,-1),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,aA=Q-(A=-2097152&wA)|0,hA=g-((A>>>0>Q>>>0)+OA|0)|0,g=Ig(n,0,J,0),A=f,B=g,g=Ig(y,0,Y,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=Ig(e,0,d,0))+B|0,B=f+A|0,B=g>>>0>Q>>>0?B+1|0:B,A=Ig(F,N,G,0),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,B=Ig(D,0,K,0),A=f+g|0,A=B>>>0>(Q=B+Q|0)>>>0?A+1|0:A,B=Ig(k,DA,M,0),g=f+A|0,g=B>>>0>(Q=B+Q|0)>>>0?g+1|0:g,B=Ig(h,0,KA,0),A=f+g|0,A=B>>>0>(Q=B+Q|0)>>>0?A+1|0:A,g=Ig(r,0,U,0),B=f+A|0,B=g>>>0>(Q=g+Q|0)>>>0?B+1|0:B,A=Ig(p,0,l,0),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,B=Ig(w,0,m,0),A=f+g|0,cA=Q=B+Q|0,Q=B>>>0>Q>>>0?A+1|0:A,A=Ig(n,0,Y,0),g=f,B=A,A=Ig(e,0,H,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,rA=(A=B)+(B=Ig(D,0,J,0))|0,A=f+g|0,A=B>>>0>rA>>>0?A+1|0:A,g=Ig(y,0,d,0),B=f+A|0,B=g>>>0>(rA=g+rA|0)>>>0?B+1|0:B,A=Ig(G,0,M,0),g=f+B|0,g=A>>>0>(rA=A+rA|0)>>>0?g+1|0:g,B=Ig(F,N,K,0),A=f+g|0,A=B>>>0>(rA=B+rA|0)>>>0?A+1|0:A,B=Ig(k,DA,U,0),g=f+A|0,g=B>>>0>(rA=B+rA|0)>>>0?g+1|0:g,B=Ig(h,0,m,0),A=f+g|0,A=B>>>0>(rA=B+rA|0)>>>0?A+1|0:A,g=Ig(r,0,KA,0),B=f+A|0,B=g>>>0>(rA=g+rA|0)>>>0?B+1|0:B,rA=(A=Ig(p,0,x,0))+rA|0,g=f+B|0,B=Ig(w,0,l,0),A=f+(A>>>0>rA>>>0?g+1|0:g)|0,YA=A=B>>>0>(XA=B+rA|0)>>>0?A+1|0:A,gA=A=A-((XA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(bA=XA- -1048576|0)>>>21,A=(A>>>21|0)+Q|0,UA=A=B>>>0>(RA=B+cA|0)>>>0?A+1|0:A,CA=A=A-((RA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(FA=RA- -1048576|0)>>>21,A=(A>>>21|0)+hA|0,kA=A=B>>>0>(HA=B+aA|0)>>>0?A+1|0:A,BA=A=A-((HA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(fA=HA- -1048576|0)>>>21,A=(A>>21)+yA|0,Q=A=B>>>0>(aA=B+tA|0)>>>0?A+1|0:A,yA=A=A-((aA>>>0<4293918720)-1|0)|0,hA=(2097151&A)<<11|(B=aA- -1048576|0)>>>21,A=(A>>21)+sA|0,OA=A=(cA=hA+WA|0)>>>0>>0?A+1|0:A,mA=cA,A=Ig(cA,A,-683901,-1),g=f,cA=A,A=Ig(T,Z,136657,0),g=f+g|0,A=(A>>>0>(cA=cA+A|0)>>>0?g+1|0:g)+a|0,AI=(a=EA+cA|0)-(g=-2097152&GA)|0,II=(A=a>>>0>>0?A+1|0:A)-((g>>>0>a>>>0)+VA|0)|0,hA=_A,cA=eA,_A=Ig(mA,OA,136657,0),a=f,WA=A=aA-(g=-2097152&B)|0,IA=Q=Q-((g>>>0>aA>>>0)+yA|0)|0,B=Ig(T,Z,-997805,-1),g=f+a|0,g=B>>>0>(_A=B+_A|0)>>>0?g+1|0:g,B=Ig(A,Q,-683901,-1),A=f+g|0,VA=Q=B+_A|0,EA=B>>>0>Q>>>0?A+1|0:A,A=Ig(W,O,470296,0),g=f,Q=(B=A)+(A=Ig(q,z,666643,0))|0,B=f+g|0,g=jA+(A>>>0>Q>>>0?B+1|0:B)|0,GA=A=Q+zA|0,a=g=A>>>0>>0?g+1|0:g,g=Ig(W,O,666643,0),A=f+qA|0,A=g>>>0>(B=g+lA|0)>>>0?A+1|0:A,tA=B-(g=-2097152&LA)|0,pA=A-((g>>>0>B>>>0)+ZA|0)|0,g=Ig(U,0,b,0),A=f,B=g,g=Ig(H,0,KA,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=B)+(B=Ig(Y,0,l,0))|0,g=f+A|0,g=B>>>0>Q>>>0?g+1|0:g,B=Ig(J,0,x,0),A=f+g|0,A=B>>>0>(Q=B+Q|0)>>>0?A+1|0:A,g=Ig(d,0,m,0),B=f+A|0,B=g>>>0>(Q=g+Q|0)>>>0?B+1|0:B,A=Ig(K,0,u,0),g=f+B|0,aA=Q=A+Q|0,Q=A>>>0>Q>>>0?g+1|0:g,g=(A=o[_+14|0])>>>24|0,_A=A<<8|(yA=o[_+10|0]|o[_+11|0]<<8|o[_+12|0]<<16|o[_+13|0]<<24)>>>24,g=2097151&((1&(g|=B=(A=o[_+15|0])>>>16|0))<<31|(A=_A|A<<16)>>>1),A=Q,aA=B=g+aA|0,Q=g>>>0>B>>>0?A+1|0:A,_A=yA>>>4&2097151,A=Ig(b,0,KA,0),g=f,B=A,A=Ig(H,0,m,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,A=Ig(Y,0,x,0),g=f+g|0,g=A>>>0>(B=A+B|0)>>>0?g+1|0:g,yA=(A=B)+(B=Ig(J,0,u,0))|0,A=f+g|0,A=B>>>0>yA>>>0?A+1|0:A,g=Ig(d,0,l,0),B=f+A|0,A=g>>>0>(yA=g+yA|0)>>>0?B+1|0:B,eA=A=(LA=_A+yA|0)>>>0>>0?A+1|0:A,QA=A=A-((LA>>>0<4293918720)-1|0)|0,g=(B=A>>>21|0)+Q|0,wA=g=(A=(2097151&A)<<11|(sA=LA- -1048576|0)>>>21)>>>0>(jA=A+aA|0)>>>0?g+1|0:g,iA=A=g-((jA>>>0<4293918720)-1|0)|0,g=(2097151&A)<<11|(rA=jA- -1048576|0)>>>21,A=(A>>>21|0)+pA|0,yA=A=g>>>0>(tA=g+tA|0)>>>0?A+1|0:A,oA=A=A-((tA>>>0<4293918720)-1|0)|0,g=(B=A>>21)+a|0,ZA=g=(g=(A=(2097151&A)<<11|(aA=tA- -1048576|0)>>>21)>>>0>(Q=A+GA|0)>>>0?g+1|0:g)-(((B=-2097152&xA)>>>0>Q>>>0)+TA|0)|0,xA=A=Q-B|0,_A=A- -1048576|0,TA=A=g-((A>>>0<4293918720)-1|0)|0,B=(g=A>>21)+EA|0,g=((A=(2097151&A)<<11|_A>>>21)>>>0>(Q=A+VA|0)>>>0?B+1|0:B)+cA|0,lA=g=(g=(A=Q)>>>0>(Q=Q+hA|0)>>>0?g+1|0:g)-(((B=-2097152&vA)>>>0>Q>>>0)+$A|0)|0,cA=A=Q-B|0,a=A- -1048576|0,qA=A=g-((A>>>0<4293918720)-1|0)|0,B=(g=A>>21)+II|0,vA=A=(B=(A=(2097151&A)<<11|a>>>21)>>>0>(EA=A+AI|0)>>>0?B+1|0:B)-((EA>>>0<4293918720)-1|0)|0,GA=dA- -1048576|0,pA=NA-((dA>>>0<4293918720)-1|0)|0,hA=(2097151&A)<<11|(Q=EA- -1048576|0)>>>21,A=(A>>21)+NA|0,$A=(dA=hA+dA|0)-(g=-2097152&GA)|0,AI=(hA>>>0>dA>>>0?A+1|0:A)-((g>>>0>dA>>>0)+pA|0)|0,II=EA-(A=-2097152&Q)|0,VA=B-((A>>>0>EA>>>0)+vA|0)|0,zA=cA-(A=-2097152&a)|0,dA=lA-((A>>>0>cA>>>0)+qA|0)|0,A=Ig(mA,OA,-997805,-1),g=f,B=A,A=Ig(T,Z,654183,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,Q=(A=B)+(B=Ig(WA,IA,136657,0))|0,A=f+g|0,g=ZA+(B>>>0>Q>>>0?A+1|0:A)|0,lA=(B=Q+xA|0)-(A=-2097152&_A)|0,qA=(g=B>>>0>>0?g+1|0:g)-((A>>>0>B>>>0)+TA|0)|0,xA=HA-(A=-2097152&fA)|0,NA=kA-((A>>>0>HA>>>0)+BA|0)|0,g=Ig(AA,$,-997805,-1),A=f,B=g,g=Ig(v,V,654183,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=B)+(B=Ig(X,P,136657,0))|0,g=f+A|0,g=B>>>0>Q>>>0?g+1|0:g,A=Ig(L,R,-683901,-1),B=f+g|0,g=UA+(A>>>0>(Q=A+Q|0)>>>0?B+1|0:B)|0,fA=(B=Q+RA|0)-(A=-2097152&FA)|0,kA=(g=B>>>0>>0?g+1|0:g)-((A>>>0>B>>>0)+CA|0)|0,g=Ig(AA,$,654183,0),A=f,B=g,g=Ig(v,V,470296,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=Ig(X,P,-997805,-1))+B|0,B=f+A|0,g=YA+(g>>>0>Q>>>0?B+1|0:B)|0,g=(A=Q+XA|0)>>>0>>0?g+1|0:g,B=A,A=Ig(L,R,136657,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,Q=(A=B)+(B=Ig(q,z,-683901,-1))|0,A=f+g|0,_A=Q-(g=-2097152&bA)|0,a=(B>>>0>Q>>>0?A+1|0:A)-((g>>>0>Q>>>0)+gA|0)|0,Q=(o[_+28|0]|o[_+29|0]<<8|o[_+30|0]<<16|o[_+31|0]<<24)>>>7|0,A=Ig(e,0,b,0),g=f,EA=(B=A)+(A=Ig(y,0,H,0))|0,B=f+g|0,B=A>>>0>EA>>>0?B+1|0:B,A=Ig(D,0,Y,0),g=f+B|0,g=A>>>0>(EA=A+EA|0)>>>0?g+1|0:g,B=Ig(F,N,J,0),A=f+g|0,A=B>>>0>(EA=B+EA|0)>>>0?A+1|0:A,B=Ig(n,0,d,0),g=f+A|0,g=B>>>0>(EA=B+EA|0)>>>0?g+1|0:g,B=Ig(G,0,U,0),A=f+g|0,A=B>>>0>(EA=B+EA|0)>>>0?A+1|0:A,g=Ig(M,0,K,0),B=f+A|0,B=g>>>0>(EA=g+EA|0)>>>0?B+1|0:B,A=Ig(k,DA,KA,0),g=f+B|0,g=A>>>0>(EA=A+EA|0)>>>0?g+1|0:g,B=Ig(h,0,l,0),A=f+g|0,A=B>>>0>(EA=B+EA|0)>>>0?A+1|0:A,B=Ig(r,0,m,0),g=f+A|0,g=B>>>0>(EA=B+EA|0)>>>0?g+1|0:g,B=Ig(p,0,u,0),A=f+g|0,A=B>>>0>(EA=B+EA|0)>>>0?A+1|0:A,g=Ig(w,0,x,0),B=f+A|0,g=B=g>>>0>(EA=g+EA|0)>>>0?B+1|0:B,UA=(B=(2097151&uA)<<11|PA>>>21)+(A=Q+EA|0)|0,A=(uA>>>21|0)+(g=A>>>0>>0?g+1|0:g)|0,hA=A=B>>>0>UA>>>0?A+1|0:A,vA=g=A-((UA>>>0<4293918720)-1|0)|0,B=(A=g>>>21|0)+a|0,cA=B=(g=(2097151&g)<<11|(DA=UA- -1048576|0)>>>21)>>>0>(FA=g+_A|0)>>>0?B+1|0:B,PA=g=B-((FA>>>0<4293918720)-1|0)|0,A=(A=g>>21)+kA|0,_A=A=(g=(2097151&g)<<11|(EA=FA- -1048576|0)>>>21)>>>0>(fA=g+fA|0)>>>0?A+1|0:A,bA=g=A-((fA>>>0<4293918720)-1|0)|0,B=(A=g>>21)+NA|0,uA=B=(g=(Q=(2097151&g)<<11|(a=fA- -1048576|0)>>>21)+xA|0)>>>0>>0?B+1|0:B,NA=g,A=Ig(g,B,-683901,-1),g=f+qA|0,kA=B=A+lA|0,Q=A>>>0>B>>>0?g+1|0:g,g=Ig(T,Z,470296,0),A=f+yA|0,A=g>>>0>(tA=g+tA|0)>>>0?A+1|0:A,g=Ig(mA,OA,654183,0),A=f+(A-(((B=-2097152&aA)>>>0>tA>>>0)+oA|0)|0)|0,A=g>>>0>(aA=g+(tA-B|0)|0)>>>0?A+1|0:A,B=Ig(WA,IA,-997805,-1),g=f+A|0,g=B>>>0>(aA=B+aA|0)>>>0?g+1|0:g,YA=B=fA-(A=-2097152&a)|0,KA=_A=_A-((A>>>0>fA>>>0)+bA|0)|0,aA=(a=Ig(NA,uA,136657,0))+aA|0,A=f+g|0,B=Ig(B,_A,-683901,-1),g=f+(a>>>0>aA>>>0?A+1|0:A)|0,_A=g=B>>>0>(yA=B+aA|0)>>>0?g+1|0:g,bA=A=g-((yA>>>0<4293918720)-1|0)|0,g=(2097151&A)<<11|(a=yA- -1048576|0)>>>21,A=(A>>21)+Q|0,fA=g=(A=g>>>0>(aA=g+kA|0)>>>0?A+1|0:A)-((aA>>>0<4293918720)-1|0)|0,tA=(2097151&g)<<11|(Q=aA- -1048576|0)>>>21,g=(g>>21)+dA|0,zA=kA=tA+zA|0,kA=tA>>>0>kA>>>0?g+1|0:g,dA=aA-(g=-2097152&Q)|0,XA=A-((g>>>0>aA>>>0)+fA|0)|0,lA=yA-(A=-2097152&a)|0,qA=_A-((A>>>0>yA>>>0)+bA|0)|0,A=Ig(T,Z,666643,0),B=wA+f|0,B=(a=A+jA|0)>>>0>>0?B+1|0:B,Q=(A=Ig(mA,OA,470296,0))+(a-(g=-2097152&rA)|0)|0,g=f+(B-((g>>>0>a>>>0)+iA|0)|0)|0,g=A>>>0>Q>>>0?g+1|0:g,B=Ig(WA,IA,654183,0),A=f+g|0,aA=Q=B+Q|0,Q=B>>>0>Q>>>0?A+1|0:A,a=FA-(A=-2097152&EA)|0,_A=cA-((A>>>0>FA>>>0)+PA|0)|0,A=Ig(AA,$,470296,0),g=f,B=A,A=Ig(v,V,666643,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,A=Ig(X,P,654183,0),g=f+g|0,g=A>>>0>(B=A+B|0)>>>0?g+1|0:g,EA=(A=B)+(B=Ig(L,R,-997805,-1))|0,A=f+g|0,A=B>>>0>EA>>>0?A+1|0:A,g=Ig(q,z,136657,0),A=f+A|0,A=g>>>0>(B=g+EA|0)>>>0?A+1|0:A,EA=(g=Ig(W,O,-683901,-1))+B|0,B=f+A|0,g=hA+(g>>>0>EA>>>0?B+1|0:B)|0,FA=(B=(2097151&JA)<<11|MA>>>21)+((EA=EA+UA|0)-(A=-2097152&DA)|0)|0,A=((g=EA>>>0>>0?g+1|0:g)-((A>>>0>EA>>>0)+vA|0)|0)+(JA>>21)|0,fA=A=B>>>0>FA>>>0?A+1|0:A,xA=A=A-((FA>>>0<4293918720)-1|0)|0,g=a,a=(2097151&A)<<11|(rA=FA- -1048576|0)>>>21,A=(A>>21)+_A|0,bA=A=(B=g+a|0)>>>0>>0?A+1|0:A,UA=B,A=Ig(B,A,-683901,-1),g=f+Q|0,g=A>>>0>(B=A+aA|0)>>>0?g+1|0:g,Q=(A=B)+(B=Ig(NA,uA,-997805,-1))|0,A=f+g|0,A=B>>>0>Q>>>0?A+1|0:A,g=Ig(YA,KA,136657,0),B=f+A|0,MA=Q=g+Q|0,cA=g>>>0>Q>>>0?B+1|0:B,aA=LA-(A=-2097152&sA)|0,hA=eA-((A>>>0>LA>>>0)+QA|0)|0,g=Ig(b,0,m,0),A=f,B=g,g=Ig(H,0,l,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,g=Ig(Y,0,u,0),A=f+A|0,A=g>>>0>(B=g+B|0)>>>0?A+1|0:A,Q=(g=Ig(d,0,x,0))+B|0,B=f+A|0,g=g>>>0>Q>>>0?B+1|0:B,DA=B=(A=(o[_+7|0]|o[_+8|0]<<8|o[_+9|0]<<16|o[_+10|0]<<24)>>>7&2097151)+Q|0,EA=A>>>0>B>>>0?g+1|0:g,A=Ig(b,0,l,0),g=f,B=A,A=Ig(H,0,x,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,Q=(A=B)+(B=Ig(d,0,u,0))|0,A=f+g|0,_A=Q,Q=B>>>0>Q>>>0?A+1|0:A,A=(g=o[_+6|0])>>>24|0,a=g<<8|(vA=o[_+2|0]|o[_+3|0]<<8|o[_+4|0]<<16|o[_+5|0]<<24)>>>24,B=A,g=(A=o[_+7|0])>>>16|0,g|=B,B=Q,a=B=(A=2097151&((3&g)<<30|(A=A<<16|a)>>>2))>>>0>(_A=A+_A|0)>>>0?B+1|0:B,RA=A=B-((_A>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(wA=_A- -1048576|0)>>>21,A=(A>>>21|0)+EA|0,tA=A=B>>>0>(eA=B+DA|0)>>>0?A+1|0:A,PA=A=A-((eA>>>0<4293918720)-1|0)|0,B=(g=A>>>21|0)+hA|0,B=(A=(2097151&A)<<11|(yA=eA- -1048576|0)>>>21)>>>0>(Q=A+aA|0)>>>0?B+1|0:B,g=Ig(mA,OA,666643,0),A=f+B|0,A=g>>>0>(Q=g+Q|0)>>>0?A+1|0:A,g=Ig(WA,IA,470296,0),A=f+A|0,A=g>>>0>(B=g+Q|0)>>>0?A+1|0:A,Q=(g=B)+(B=Ig(UA,bA,136657,0))|0,g=f+A|0,g=B>>>0>Q>>>0?g+1|0:g,A=Ig(NA,uA,654183,0),g=f+g|0,g=A>>>0>(B=A+Q|0)>>>0?g+1|0:g,aA=(A=Ig(YA,KA,-997805,-1))+B|0,B=f+g|0,hA=B=A>>>0>aA>>>0?B+1|0:B,JA=A=B-((aA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(DA=aA- -1048576|0)>>>21,A=(A>>21)+cA|0,MA=B=(A=B>>>0>(Q=B+MA|0)>>>0?A+1|0:A)-((Q>>>0<4293918720)-1|0)|0,EA=(2097151&B)<<11|(cA=Q- -1048576|0)>>>21,B=(B>>21)+qA|0,HA=sA=EA+lA|0,sA=EA>>>0>sA>>>0?B+1|0:B,EA=Q,g=A,Q=(FA-(A=-2097152&rA)|0)+(rA=(2097151&pA)<<11|GA>>>21)|0,A=(fA-((A>>>0>FA>>>0)+xA|0)|0)+(pA>>21)|0,pA=A=Q>>>0>>0?A+1|0:A,lA=A=A-((Q>>>0<4293918720)-1|0)|0,FA=B=A>>21,A=Ig(mA=(2097151&A)<<11|(fA=Q- -1048576|0)>>>21,B,-683901,-1),g=f+g|0,g=A>>>0>(B=A+EA|0)>>>0?g+1|0:g,qA=B-(A=-2097152&cA)|0,LA=g-((A>>>0>B>>>0)+MA|0)|0,g=Ig(mA,FA,136657,0),A=f+hA|0,A=g>>>0>(B=g+aA|0)>>>0?A+1|0:A,jA=B-(g=-2097152&DA)|0,JA=A-((g>>>0>B>>>0)+JA|0)|0,g=Ig(WA,IA,666643,0),A=f+(tA-(((B=-2097152&yA)>>>0>eA>>>0)+PA|0)|0)|0,A=g>>>0>(EA=g+(eA-B|0)|0)>>>0?A+1|0:A,B=Ig(UA,bA,-997805,-1),g=f+A|0,g=B>>>0>(EA=B+EA|0)>>>0?g+1|0:g,A=Ig(NA,uA,470296,0),B=f+g|0,B=A>>>0>(EA=A+EA|0)>>>0?B+1|0:B,g=Ig(YA,KA,654183,0),A=f+B|0,MA=EA=g+EA|0,hA=g>>>0>EA>>>0?A+1|0:A,B=vA>>>5&2097151,A=Ig(b,0,x,0),g=f,cA=A,A=Ig(H,0,u,0),g=f+g|0,A=A>>>0>(EA=cA+A|0)>>>0?g+1|0:g,cA=g=B+EA|0,B=A=g>>>0>>0?A+1|0:A,eA=(g=Ig(b,0,u,0))+(A=(A=o[_+2|0])<<16&2031616|o[0|_]|o[_+1|0]<<8)|0,g=f,rA=g=A>>>0>eA>>>0?g+1|0:g,xA=g=g-((eA>>>0<4293918720)-1|0)|0,A=(A=g>>>21|0)+B|0,yA=A=(g=(2097151&g)<<11|(tA=eA- -1048576|0)>>>21)>>>0>(GA=g+cA|0)>>>0?A+1|0:A,vA=g=A-((GA>>>0<4293918720)-1|0)|0,B=(2097151&g)<<11|(aA=GA- -1048576|0)>>>21,g=(g>>>21|0)+a|0,g=B>>>0>(EA=B+_A|0)>>>0?g+1|0:g,B=Ig(UA,bA,654183,0),A=f+(g-(((a=-2097152&wA)>>>0>EA>>>0)+RA|0)|0)|0,A=B>>>0>(_A=B+(EA-a|0)|0)>>>0?A+1|0:A,g=Ig(NA,uA,666643,0),A=f+A|0,A=g>>>0>(B=g+_A|0)>>>0?A+1|0:A,DA=(g=B)+(B=Ig(YA,KA,470296,0))|0,g=f+A|0,cA=g=B>>>0>DA>>>0?g+1|0:g,PA=g=g-((DA>>>0<4293918720)-1|0)|0,B=(A=g>>21)+hA|0,wA=g=(B=(g=(2097151&g)<<11|(EA=DA- -1048576|0)>>>21)>>>0>(_A=g+MA|0)>>>0?B+1|0:B)-((_A>>>0<4293918720)-1|0)|0,hA=(2097151&g)<<11|(a=_A- -1048576|0)>>>21,g=(g>>21)+JA|0,uA=NA=hA+jA|0,hA=hA>>>0>NA>>>0?g+1|0:g,A=Ig(mA,FA,-997805,-1),g=f+B|0,g=A>>>0>(_A=A+_A|0)>>>0?g+1|0:g,JA=_A-(A=-2097152&a)|0,MA=g-((A>>>0>_A>>>0)+wA|0)|0,g=Ig(mA,FA,654183,0),A=f+cA|0,A=g>>>0>(B=g+DA|0)>>>0?A+1|0:A,NA=B-(g=-2097152&EA)|0,wA=A-((g>>>0>B>>>0)+PA|0)|0,A=Ig(UA,bA,470296,0),B=f+(yA-(((g=-2097152&aA)>>>0>GA>>>0)+vA|0)|0)|0,B=A>>>0>(a=A+(GA-g|0)|0)>>>0?B+1|0:B,g=Ig(YA,KA,666643,0),A=f+B|0,_A=a=g+a|0,B=g>>>0>a>>>0?A+1|0:A,g=Ig(UA,bA,666643,0),A=f+(rA-((4095&xA)+((a=-2097152&tA)>>>0>eA>>>0)|0)|0)|0,DA=A=g>>>0>(aA=g+(eA-a|0)|0)>>>0?A+1|0:A,rA=A=A-((aA>>>0<4293918720)-1|0)|0,a=(2097151&A)<<11|(cA=aA- -1048576|0)>>>21,A=(A>>21)+B|0,B=A=a>>>0>(EA=a+_A|0)>>>0?A+1|0:A,tA=A=A-((EA>>>0<4293918720)-1|0)|0,a=(2097151&A)<<11|(_A=EA- -1048576|0)>>>21,A=(A>>21)+wA|0,a=a>>>0>(yA=a+NA|0)>>>0?A+1|0:A,A=Ig(mA,FA,470296,0),B=f+B|0,B=A>>>0>(g=A+EA|0)>>>0?B+1|0:B,EA=g-(A=-2097152&_A)|0,_A=B-((A>>>0>g>>>0)+tA|0)|0,g=Ig(mA,FA,666643,0),A=f+(DA-(((B=-2097152&cA)>>>0>aA>>>0)+rA|0)|0)|0,g=(B=(A=g>>>0>(wA=g+(aA-B|0)|0)>>>0?A+1|0:A)>>21)+_A|0,A=(A=(g=(A=(2097151&A)<<11|wA>>>21)>>>0>(rA=A+EA|0)>>>0?g+1|0:g)>>21)+a|0,g=(g=(A=(g=(2097151&g)<<11|rA>>>21)>>>0>(tA=g+yA|0)>>>0?A+1|0:A)>>21)+MA|0,B=(A=(g=(A=(2097151&A)<<11|tA>>>21)>>>0>(a=A+JA|0)>>>0?g+1|0:g)>>21)+hA|0,A=(g=(B=(g=(2097151&g)<<11|a>>>21)>>>0>(yA=g+uA|0)>>>0?B+1|0:B)>>21)+LA|0,g=(B=(A=(B=(2097151&B)<<11|yA>>>21)>>>0>(aA=B+qA|0)>>>0?A+1|0:A)>>21)+sA|0,A=(A=(g=(A=(2097151&A)<<11|aA>>>21)>>>0>(hA=A+HA|0)>>>0?g+1|0:g)>>21)+XA|0,g=(g=(A=(g=(2097151&g)<<11|hA>>>21)>>>0>(DA=g+dA|0)>>>0?A+1|0:A)>>21)+kA|0,B=(A=(g=(A=(2097151&A)<<11|DA>>>21)>>>0>(cA=A+zA|0)>>>0?g+1|0:g)>>21)+VA|0,A=(g=(B=(g=(2097151&g)<<11|cA>>>21)>>>0>(EA=g+II|0)>>>0?B+1|0:B)>>21)+AI|0,fA=(sA=Q-(g=-2097152&fA)|0)+((2097151&(A=(B=(2097151&B)<<11|EA>>>21)>>>0>(_A=B+$A|0)>>>0?A+1|0:A))<<11|_A>>>21)|0,A=(pA-((g>>>0>Q>>>0)+lA|0)|0)+(A>>21)|0,pA=g=(A=sA>>>0>fA>>>0?A+1|0:A)>>21,wA=(A=Ig(kA=(2097151&A)<<11|fA>>>21,g,666643,0))+(g=2097151&wA)|0,A=f,Q=A=g>>>0>wA>>>0?A+1|0:A,C[0|E]=wA,C[E+1|0]=(255&A)<<24|wA>>>8,A=2097151&rA,g=Ig(kA,pA,470296,0)+A|0,B=f,A=(Q>>21)+(A>>>0>g>>>0?B+1|0:B)|0,A=(rA=(sA=(2097151&Q)<<11|wA>>>21)+g|0)>>>0>>0?A+1|0:A,C[E+4|0]=(2047&A)<<21|rA>>>11,g=A,B=rA,C[E+3|0]=(7&A)<<29|B>>>3,C[E+2|0]=31&((65535&Q)<<16|wA>>>16)|B<<5,Q=2097151&tA,tA=Ig(kA,pA,654183,0)+Q|0,A=f,rA=(2097151&g)<<11|B>>>21,g=(g>>21)+(Q=Q>>>0>tA>>>0?A+1|0:A)|0,A=g=(tA=rA+tA|0)>>>0>>0?g+1|0:g,C[E+6|0]=(63&A)<<26|tA>>>6,Q=tA,tA=0,C[E+5|0]=tA<<13|(1572864&B)>>>19|Q<<2,B=2097151&a,a=Ig(kA,pA,-997805,-1)+B|0,g=f,g=B>>>0>a>>>0?g+1|0:g,tA=(2097151&(B=A))<<11|Q>>>21,B=(A>>=21)+g|0,B=(a=tA+a|0)>>>0>>0?B+1|0:B,C[E+9|0]=(511&B)<<23|a>>>9,C[E+8|0]=(1&B)<<31|a>>>1,g=0,C[E+7|0]=g<<18|(2080768&Q)>>>14|a<<7,g=2097151&yA,Q=Ig(kA,pA,136657,0)+g|0,A=f,A=g>>>0>Q>>>0?A+1|0:A,yA=(2097151&(g=B))<<11|a>>>21,g=A+(B=g>>21)|0,g=(Q=yA+Q|0)>>>0>>0?g+1|0:g,C[E+12|0]=(4095&g)<<20|Q>>>12,B=Q,C[E+11|0]=(15&g)<<28|B>>>4,Q=0,C[E+10|0]=Q<<15|(1966080&a)>>>17|B<<4,Q=2097151&aA,a=Ig(kA,pA,-683901,-1)+Q|0,A=f,A=Q>>>0>a>>>0?A+1|0:A,Q=g,g=A+(g>>=21)|0,g=(Q=(aA=a)+(a=(2097151&Q)<<11|B>>>21)|0)>>>0>>0?g+1|0:g,C[E+14|0]=(127&g)<<25|Q>>>7,a=0,C[E+13|0]=a<<12|(1048576&B)>>>20|Q<<1,A=g>>21,B=(g=(2097151&g)<<11|Q>>>21)>>>0>(a=g+(2097151&hA)|0)>>>0?A+1|0:A,C[E+17|0]=(1023&B)<<22|a>>>10,C[E+16|0]=(3&B)<<30|a>>>2,g=0,C[E+15|0]=g<<17|(2064384&Q)>>>15|a<<6,A=B>>21,A=(g=(2097151&B)<<11|a>>>21)>>>0>(B=g+(2097151&DA)|0)>>>0?A+1|0:A,C[E+20|0]=(8191&A)<<19|B>>>13,C[E+19|0]=(31&A)<<27|B>>>5,Q=(g=2097151&cA)+(cA=(2097151&A)<<11|B>>>21)|0,g=A>>21,g=Q>>>0>>0?g+1|0:g,cA=Q,C[E+21|0]=Q,DA=0,C[E+18|0]=DA<<14|(1835008&a)>>>18|B<<3,C[E+22|0]=(255&g)<<24|Q>>>8,B=g>>21,B=(Q=(a=(2097151&g)<<11|Q>>>21)+(2097151&EA)|0)>>>0>>0?B+1|0:B,C[E+25|0]=(2047&B)<<21|Q>>>11,C[E+24|0]=(7&B)<<29|Q>>>3,C[E+23|0]=31&((65535&g)<<16|cA>>>16)|Q<<5,A=B>>21,A=(g=(2097151&B)<<11|Q>>>21)>>>0>(B=g+(2097151&_A)|0)>>>0?A+1|0:A,C[E+27|0]=(63&A)<<26|B>>>6,a=0,C[E+26|0]=a<<13|(1572864&Q)>>>19|B<<2,g=A,A>>=21,g=(Q=(_A=(2097151&g)<<11|B>>>21)+(a=2097151&fA)|0)>>>0>>0?A+1|0:A,C[E+31|0]=(131071&g)<<15|Q>>>17,A=Q,C[E+30|0]=(511&g)<<23|A>>>9,Q=0,C[E+28|0]=Q<<18|(2080768&B)>>>14|A<<7,C[E+29|0]=_A+fA>>>1,XC(c,64),XC(_,64),I&&(i[I>>2]=64,i[I+4>>2]=0),s=t+560|0,0}function n(A,I,g){var B,Q,i,E,a,_,c,t,r,e,y,s,h,D,p,w,n,k,F,S,N,G,M,K,U,b,H,Y,J,d,m,l,u,x,v,R,L,P,q,z,j,X,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0,BA=0,QA=0,iA=0,oA=0,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0,sA=0,hA=0,DA=0,fA=0,pA=0,wA=0,nA=0,kA=0,FA=0,SA=0,NA=0,GA=0,MA=0,KA=0,UA=0,bA=0,HA=0,YA=0,JA=0,dA=0,mA=0,lA=0,uA=0,xA=0,vA=0,RA=0,LA=0,PA=0,qA=0;Z=Ig(B=(W=o[g+2|0])<<16&2031616|o[0|g]|o[g+1|0]<<8,0,Q=(QA=o[I+23|0]|o[I+24|0]<<8|o[I+25|0]<<16|o[I+26|0]<<24)>>>5&2097151,0),V=f,O=Ig(i=(W=o[I+23|0])<<16&2031616|o[I+21|0]|o[I+22|0]<<8,0,E=(T=o[g+2|0]|o[g+3|0]<<8|o[g+4|0]<<16|o[g+5|0]<<24)>>>5&2097151,0),W=f+V|0,W=O>>>0>(Z=O+Z|0)>>>0?W+1|0:W,V=Ig(a=(o[g+7|0]|o[g+8|0]<<8|o[g+9|0]<<16|o[g+10|0]<<24)>>>7&2097151,0,_=(aA=o[I+15|0]|o[I+16|0]<<8|o[I+17|0]<<16|o[I+18|0]<<24)>>>6&2097151,0),O=f+W|0,IA=Z=V+Z|0,V=V>>>0>Z>>>0?O+1|0:O,O=(W=o[I+14|0])>>>24|0,$=W<<8|(gA=o[I+10|0]|o[I+11|0]<<8|o[I+12|0]<<16|o[I+13|0]<<24)>>>24,O=Ig(c=2097151&((1&(CA=(W=O)|(O=(Z=o[I+15|0])>>>16|0)))<<31|(W=(Z<<=16)|$)>>>1),0,t=(AA=o[g+10|0]|o[g+11|0]<<8|o[g+12|0]<<16|o[g+13|0]<<24)>>>4&2097151,0),V=f+V|0,CA=W=O+IA|0,Z=W>>>0>>0?V+1|0:V,V=(O=o[g+6|0])>>>24|0,IA=O<<8|T>>>24,T=r=2097151&((3&(V|=O=(W=o[g+7|0])>>>16|0))<<30|(W=IA|W<<16)>>>2),IA=0,$=(W=o[I+19|0])<<8|aA>>>24,V=O=W>>>24|0,W=(O=o[I+20|0])>>>16|0,G=V=(W|=V)>>>3|0,O=Ig(T,IA,e=(7&W)<<29|(O=O<<16|$)>>>3,V),W=f+Z|0,W=O>>>0>($=O+CA|0)>>>0?W+1|0:W,V=Ig(y=(T=o[g+15|0]|o[g+16|0]<<8|o[g+17|0]<<16|o[g+18|0]<<24)>>>6&2097151,0,s=(o[I+7|0]|o[I+8|0]<<8|o[I+9|0]<<16|o[I+10|0]<<24)>>>7&2097151,0),O=f+W|0,IA=Z=V+$|0,Z=V>>>0>Z>>>0?O+1|0:O,$=(W=o[g+14|0])<<8|AA>>>24,W=O=W>>>24|0,V=(O=o[g+15|0])>>>16|0,O=Ig(h=2097151&((1&(V|=W))<<31|(W=(O<<=16)|$)>>>1),0,D=gA>>>4&2097151,0),W=f+Z|0,AA=V=O+IA|0,IA=O>>>0>V>>>0?W+1|0:W,W=(O=o[g+19|0])>>>24|0,Z=O<<8|T>>>24,V=(O=o[g+20|0])>>>16|0,p=(7&(V|=W))<<29|(O=Z|O<<16)>>>3,eA=W=V>>>3|0,Z=W,W=(O=o[I+6|0])>>>24|0,T=O<<8|(CA=o[I+2|0]|o[I+3|0]<<8|o[I+4|0]<<16|o[I+5|0]<<24)>>>24,V=W,W=(O=o[I+7|0])>>>16|0,W=Ig(p,Z,w=2097151&((3&(W|=V))<<30|(O=O<<16|T)>>>2),0),O=f+IA|0,V=W>>>0>(Z=W+AA|0)>>>0?O+1|0:O,W=Ig(n=(W=o[g+23|0])<<16&2031616|o[g+21|0]|o[g+22|0]<<8,0,k=CA>>>5&2097151,0),O=f+V|0,V=W>>>0>(Z=W+Z|0)>>>0?O+1|0:O,O=Ig(F=(W=o[I+2|0])<<16&2031616|o[0|I]|o[I+1|0]<<8,0,hA=(CA=o[g+23|0]|o[g+24|0]<<8|o[g+25|0]<<16|o[g+26|0]<<24)>>>5&2097151,0),W=f+V|0,T=Z=O+Z|0,IA=O>>>0>Z>>>0?W+1|0:W,O=Ig(i,0,B,0),W=f,Z=(V=O)+(O=Ig(e,G,E,0))|0,V=f+W|0,V=O>>>0>Z>>>0?V+1|0:V,O=Ig(a,0,c,0),W=f+V|0,W=O>>>0>(Z=O+Z|0)>>>0?W+1|0:W,V=Ig(t,0,D,0),O=f+W|0,O=V>>>0>(Z=V+Z|0)>>>0?O+1|0:O,W=Ig(_,0,r,0),O=f+O|0,O=W>>>0>(V=W+Z|0)>>>0?O+1|0:O,Z=(W=V)+(V=Ig(y,0,w,0))|0,W=f+O|0,W=V>>>0>Z>>>0?W+1|0:W,O=Ig(h,0,s,0),V=f+W|0,V=O>>>0>(Z=O+Z|0)>>>0?V+1|0:V,Z=(O=Ig(p,eA,k,0))+Z|0,W=f+V|0,V=Ig(n,0,F,0),O=f+(O>>>0>Z>>>0?W+1|0:W)|0,Z=O=V>>>0>($=V+Z|0)>>>0?O+1|0:O,yA=O=O-(($>>>0<4293918720)-1|0)|0,W=(W=O>>>21|0)+IA|0,oA=V=(W=(O=(2097151&O)<<11|(cA=$- -1048576|0)>>>21)>>>0>(T=O+T|0)>>>0?W+1|0:W)-((T>>>0<4293918720)-1|0)|0,iA=T-(O=-2097152&(EA=T- -1048576|0))|0,BA=W-((O>>>0>T>>>0)+V|0)|0,IA=(W=o[g+27|0])<<8|CA>>>24,V=O=W>>>24|0,T=Ig(S=2097151&((3&(V|=W=(O=o[g+28|0])>>>16|0))<<30|(W=(O<<=16)|IA)>>>2),0,DA=(o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24)>>>7|0,0),IA=f,W=(O=o[I+27|0])>>>24|0,I=Ig(N=2097151&((3&(W|=V=(I=o[I+28|0])>>>16|0))<<30|(O=O<<8|QA>>>24|I<<16)>>>2),0,fA=(o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24)>>>7|0,0),O=f+IA|0,O=I>>>0>(g=I+T|0)>>>0?O+1|0:O,V=g,I=Ig(Q,0,fA,0),g=f,IA=(W=I)+(I=Ig(hA,0,DA,0))|0,W=f+g|0,W=I>>>0>IA>>>0?W+1|0:W,I=Ig(S,0,N,0),W=f+W|0,IA=W=I>>>0>(CA=I+IA|0)>>>0?W+1|0:W,AA=I=W-((CA>>>0<4293918720)-1|0)|0,W=I>>>21|0,T=(I=(2097151&I)<<11|(g=CA- -1048576|0)>>>21)+V|0,V=W+O|0,aA=W=(V=I>>>0>T>>>0?V+1|0:V)-((T>>>0<4293918720)-1|0)|0,I=T-(O=-2097152&(gA=T- -1048576|0))|0,K=O=V-((131071&W)+(O>>>0>T>>>0)|0)|0,U=I,I=Ig(I,O,666643,0),O=f+BA|0,nA=W=I+iA|0,T=I>>>0>W>>>0?O+1|0:O,iA=CA-(I=-2097152&g)|0,tA=IA-((131071&AA)+(I>>>0>CA>>>0)|0)|0,I=Ig(n,0,DA,0),g=f,W=(O=I)+(I=Ig(hA,0,N,0))|0,O=f+g|0,O=I>>>0>W>>>0?O+1|0:O,g=(I=Ig(i,0,fA,0))+W|0,W=f+O|0,W=I>>>0>g>>>0?W+1|0:W,I=Ig(Q,0,S,0),O=f+W|0,AA=g=I+g|0,I=I>>>0>g>>>0?O+1|0:O,g=Ig(Q,0,hA,0),O=f,V=(W=g)+(g=Ig(p,eA,DA,0))|0,W=f+O|0,W=g>>>0>V>>>0?W+1|0:W,O=(g=Ig(n,0,N,0))+V|0,V=f+W|0,V=g>>>0>O>>>0?V+1|0:V,W=(g=Ig(e,G,fA,0))+O|0,O=f+V|0,O=g>>>0>W>>>0?O+1|0:O,BA=(g=Ig(i,0,S,0))+W|0,W=f+O|0,CA=W=g>>>0>BA>>>0?W+1|0:W,_A=g=W-((BA>>>0<4293918720)-1|0)|0,W=I+(O=g>>>21|0)|0,g=W=(g=(2097151&g)<<11|(IA=BA- -1048576|0)>>>21)>>>0>(AA=g+AA|0)>>>0?W+1|0:W,QA=W=W-((AA>>>0<4293918720)-1|0)|0,O=iA,iA=(2097151&W)<<11|(I=AA- -1048576|0)>>>21,W=(W>>>21|0)+tA|0,b=W=(V=O+iA|0)>>>0>>0?W+1|0:W,H=I=AA-(O=-2097152&I)|0,Y=AA=g-((O>>>0>AA>>>0)+QA|0)|0,J=V,g=Ig(V,W,470296,0),O=f+T|0,O=g>>>0>(W=g+nA|0)>>>0?O+1|0:O,I=Ig(I,AA,654183,0),V=f+O|0,tA=g=I+W|0,T=I>>>0>g>>>0?V+1|0:V,QA=BA-(I=-2097152&IA)|0,BA=CA-((I>>>0>BA>>>0)+_A|0)|0,I=Ig(p,eA,N,0),g=f,W=(O=I)+(I=Ig(y,0,DA,0))|0,O=f+g|0,O=I>>>0>W>>>0?O+1|0:O,g=(I=Ig(i,0,hA,0))+W|0,W=f+O|0,W=I>>>0>g>>>0?W+1|0:W,I=Ig(Q,0,n,0),V=f+W|0,V=I>>>0>(g=I+g|0)>>>0?V+1|0:V,I=Ig(_,0,fA,0),O=f+V|0,O=I>>>0>(g=I+g|0)>>>0?O+1|0:O,I=Ig(e,G,S,0),W=f+O|0,CA=g=I+g|0,IA=I>>>0>g>>>0?W+1|0:W,I=Ig(h,0,DA,0),g=f,W=(O=I)+(I=Ig(y,0,N,0))|0,O=f+g|0,O=I>>>0>W>>>0?O+1|0:O,g=(I=Ig(Q,0,p,eA))+W|0,W=f+O|0,W=I>>>0>g>>>0?W+1|0:W,I=Ig(e,G,hA,0),V=f+W|0,V=I>>>0>(g=I+g|0)>>>0?V+1|0:V,I=Ig(i,0,n,0),O=f+V|0,O=I>>>0>(g=I+g|0)>>>0?O+1|0:O,I=Ig(c,0,fA,0),W=f+O|0,W=I>>>0>(g=I+g|0)>>>0?W+1|0:W,I=Ig(_,0,S,0),O=f+W|0,I=O=I>>>0>(g=I+g|0)>>>0?O+1|0:O,sA=O=O-((g>>>0<4293918720)-1|0)|0,V=(W=O>>>21|0)+IA|0,iA=V=(O=(2097151&O)<<11|(_A=g- -1048576|0)>>>21)>>>0>(pA=O+CA|0)>>>0?V+1|0:V,NA=O=V-((pA>>>0<4293918720)-1|0)|0,IA=(2097151&O)<<11|(AA=pA- -1048576|0)>>>21,O=(O>>>21|0)+BA|0,d=O=(V=IA+QA|0)>>>0>>0?O+1|0:O,m=V,O=Ig(V,O,-997805,-1),W=f+T|0,BA=V=O+tA|0,T=O>>>0>V>>>0?W+1|0:W,IA=$,$=Z,O=Ig(B,0,e,G),W=f,Z=(V=O)+(O=Ig(_,0,E,0))|0,V=f+W|0,V=O>>>0>Z>>>0?V+1|0:V,W=Ig(a,0,D,0),O=f+V|0,O=W>>>0>(Z=W+Z|0)>>>0?O+1|0:O,V=Ig(t,0,s,0),W=f+O|0,W=V>>>0>(Z=V+Z|0)>>>0?W+1|0:W,V=Ig(c,0,r,0),O=f+W|0,O=V>>>0>(Z=V+Z|0)>>>0?O+1|0:O,V=Ig(y,0,k,0),W=f+O|0,W=V>>>0>(Z=V+Z|0)>>>0?W+1|0:W,O=Ig(h,0,w,0),V=f+W|0,V=O>>>0>(Z=O+Z|0)>>>0?V+1|0:V,W=Ig(p,eA,F,0),O=f+V|0,CA=Z=W+Z|0,Z=W>>>0>Z>>>0?O+1|0:O,O=Ig(B,0,_,0),W=f,V=O,O=Ig(E,0,c,0),W=f+W|0,W=O>>>0>(V=V+O|0)>>>0?W+1|0:W,QA=(O=V)+(V=Ig(a,0,s,0))|0,O=f+W|0,O=V>>>0>QA>>>0?O+1|0:O,V=Ig(t,0,w,0),W=f+O|0,W=V>>>0>(QA=V+QA|0)>>>0?W+1|0:W,O=Ig(r,0,D,0),V=f+W|0,V=O>>>0>(QA=O+QA|0)>>>0?V+1|0:V,QA=(W=Ig(y,0,F,0))+QA|0,O=f+V|0,V=Ig(h,0,k,0),W=f+(W>>>0>QA>>>0?O+1|0:O)|0,KA=W=V>>>0>(MA=V+QA|0)>>>0?W+1|0:W,xA=W=W-((MA>>>0<4293918720)-1|0)|0,V=(2097151&W)<<11|(GA=MA- -1048576|0)>>>21,W=(W>>>21|0)+Z|0,rA=W=V>>>0>(UA=V+CA|0)>>>0?W+1|0:W,vA=W=W-((UA>>>0<4293918720)-1|0)|0,V=(2097151&W)<<11|(nA=UA- -1048576|0)>>>21,W=(W>>>21|0)+$|0,W=V>>>0>(IA=V+IA|0)>>>0?W+1|0:W,O=Ig(J,b,666643,0),W=f+(W-(((V=-2097152&cA)>>>0>IA>>>0)+yA|0)|0)|0,W=O>>>0>(Z=O+(IA-V|0)|0)>>>0?W+1|0:W,V=Ig(H,Y,470296,0),O=f+W|0,O=V>>>0>(Z=V+Z|0)>>>0?O+1|0:O,V=Ig(m,d,654183,0),W=f+O|0,tA=W=V>>>0>(kA=V+Z|0)>>>0?W+1|0:W,mA=W=W-((kA>>>0<4293918720)-1|0)|0,O=(O=W>>21)+T|0,BA=O=(W=(2097151&W)<<11|(QA=kA- -1048576|0)>>>21)>>>0>(yA=W+BA|0)>>>0?O+1|0:O,bA=W=O-((yA>>>0<4293918720)-1|0)|0,JA=(2097151&W)<<11|(cA=yA- -1048576|0)>>>21,CA=W>>21,O=Ig(B,0,N,0),W=f,V=O,O=Ig(Q,0,E,0),W=f+W|0,W=O>>>0>(V=V+O|0)>>>0?W+1|0:W,Z=(O=Ig(a,0,e,G))+V|0,V=f+W|0,V=O>>>0>Z>>>0?V+1|0:V,W=Ig(_,0,t,0),O=f+V|0,O=W>>>0>(Z=W+Z|0)>>>0?O+1|0:O,V=Ig(i,0,r,0),W=f+O|0,W=V>>>0>(Z=V+Z|0)>>>0?W+1|0:W,V=Ig(y,0,D,0),O=f+W|0,O=V>>>0>(Z=V+Z|0)>>>0?O+1|0:O,V=Ig(h,0,c,0),W=f+O|0,W=V>>>0>(Z=V+Z|0)>>>0?W+1|0:W,O=Ig(s,0,p,eA),V=f+W|0,V=O>>>0>(Z=O+Z|0)>>>0?V+1|0:V,W=Ig(k,0,hA,0),O=f+V|0,O=W>>>0>(Z=W+Z|0)>>>0?O+1|0:O,V=Ig(w,0,n,0),W=f+O|0,W=V>>>0>(Z=V+Z|0)>>>0?W+1|0:W,V=(O=Z)+(Z=Ig(S,0,F,0))|0,O=f+W|0,T=V,IA=V>>>0>>0?O+1|0:O,FA=Ig(DA,0,fA,0),$=V=(SA=f)-((FA>>>0<4293918720)-1|0)|0,W=FA-(O=-2097152&(Z=FA- -1048576|0))|0,O=(aA>>>21|0)+(O=SA-((524287&V)+(O>>>0>FA>>>0)|0)|0)|0,l=O=(V=(gA=(2097151&aA)<<11|gA>>>21)+W|0)>>>0>>0?O+1|0:O,u=V,W=(2097151&oA)<<11|EA>>>21,gA=Ig(V,O,666643,0)+W|0,O=f+(oA>>>21|0)|0,O=W>>>0>gA>>>0?O+1|0:O,V=Ig(U,K,470296,0),W=f+O|0,W=(V>>>0>(gA=V+gA|0)>>>0?W+1|0:W)+IA|0,W=(O=T+gA|0)>>>0>>0?W+1|0:W,gA=(V=Ig(J,b,654183,0))+O|0,O=f+W|0,dA=T- -1048576|0,FA=IA=IA-((T>>>0<4293918720)-1|0)|0,W=Ig(H,Y,-997805,-1),V=f+(V>>>0>gA>>>0?O+1|0:O)|0,V=W>>>0>(T=W+gA|0)>>>0?V+1|0:V,EA=(O=Ig(m,d,136657,0))+(T-(W=-2097152&dA)|0)|0,W=f+(V-((W>>>0>T>>>0)+IA|0)|0)|0,V=(aA=O>>>0>EA>>>0?W+1|0:W)+CA|0,HA=O=EA+JA|0,gA=V=O>>>0>>0?V+1|0:V,SA=pA-(O=-2097152&AA)|0,pA=iA-((O>>>0>pA>>>0)+NA|0)|0,x=V=$>>>21|0,W=(O=g)+(g=Ig(M=(2097151&$)<<11|Z>>>21,V,-683901,-1))|0,O=f+I|0,iA=W-(I=-2097152&_A)|0,oA=(g>>>0>W>>>0?O+1|0:O)-((I>>>0>W>>>0)+sA|0)|0,I=Ig(Q,0,y,0),g=f,O=I,I=Ig(t,0,DA,0),W=f+g|0,W=I>>>0>(O=O+I|0)>>>0?W+1|0:W,I=Ig(h,0,N,0),V=f+W|0,V=I>>>0>(g=I+O|0)>>>0?V+1|0:V,I=Ig(i,0,p,eA),O=f+V|0,O=I>>>0>(g=I+g|0)>>>0?O+1|0:O,I=Ig(_,0,hA,0),O=f+O|0,O=I>>>0>(g=I+g|0)>>>0?O+1|0:O,I=Ig(e,G,n,0),W=f+O|0,W=I>>>0>(g=I+g|0)>>>0?W+1|0:W,I=Ig(D,0,fA,0),W=f+W|0,W=I>>>0>(g=I+g|0)>>>0?W+1|0:W,I=Ig(c,0,S,0),V=f+W|0,Z=g=I+g|0,I=I>>>0>g>>>0?V+1|0:V,g=Ig(t,0,N,0),O=f,W=g,g=Ig(a,0,DA,0),O=f+O|0,O=g>>>0>(W=W+g|0)>>>0?O+1|0:O,g=Ig(i,0,y,0),O=f+O|0,O=g>>>0>(W=g+W|0)>>>0?O+1|0:O,V=(g=Ig(Q,0,h,0))+W|0,W=f+O|0,W=g>>>0>V>>>0?W+1|0:W,g=Ig(e,G,p,eA),W=f+W|0,W=g>>>0>(O=g+V|0)>>>0?W+1|0:W,g=Ig(c,0,hA,0),V=f+W|0,V=g>>>0>(O=g+O|0)>>>0?V+1|0:V,W=(g=Ig(_,0,n,0))+O|0,O=f+V|0,O=g>>>0>W>>>0?O+1|0:O,g=Ig(s,0,fA,0),O=f+O|0,O=g>>>0>(W=g+W|0)>>>0?O+1|0:O,AA=(g=Ig(D,0,S,0))+W|0,W=f+O|0,CA=W=g>>>0>AA>>>0?W+1|0:W,YA=g=W-((AA>>>0<4293918720)-1|0)|0,V=I+(O=g>>>21|0)|0,IA=V=(g=(2097151&g)<<11|(T=AA- -1048576|0)>>>21)>>>0>(_A=g+Z|0)>>>0?V+1|0:V,sA=I=V-((_A>>>0<4293918720)-1|0)|0,W=(O=I>>>21|0)+oA|0,Z=W=(I=(2097151&I)<<11|($=_A- -1048576|0)>>>21)>>>0>(iA=I+iA|0)>>>0?W+1|0:W,oA=g=W-((iA>>>0<4293918720)-1|0)|0,V=(O=g>>21)+pA|0,v=V=(g=(W=(2097151&g)<<11|(I=iA- -1048576|0)>>>21)+SA|0)>>>0>>0?V+1|0:V,NA=EA- -1048576|0,JA=W=aA-((EA>>>0<4293918720)-1|0)|0,lA=g,g=Ig(g,V,-683901,-1),O=f+gA|0,SA=O=(W=(O=g>>>0>(V=g+HA|0)>>>0?O+1|0:O)-(((g=-2097152&NA)>>>0>V>>>0)+W|0)|0)-(((gA=V-g|0)>>>0<4293918720)-1|0)|0,P=gA-(g=-2097152&(pA=gA- -1048576|0))|0,RA=W-((g>>>0>gA>>>0)+O|0)|0,g=Ig(lA,v,136657,0),W=f+(BA-(((O=-2097152&cA)>>>0>yA>>>0)+bA|0)|0)|0,uA=V=g+(yA-O|0)|0,g=g>>>0>V>>>0?W+1|0:W,wA=iA-(I&=-2097152)|0,cA=Z-((I>>>0>iA>>>0)+oA|0)|0,I=Ig(u,l,-683901,-1),O=f,W=I,I=Ig(M,x,136657,0),O=f+O|0,W=IA+(I>>>0>(V=W+I|0)>>>0?O+1|0:O)|0,aA=(O=V+_A|0)-(I=-2097152&$)|0,gA=(W=O>>>0<_A>>>0?W+1|0:W)-((I>>>0>O>>>0)+sA|0)|0,I=Ig(M,x,-997805,-1),O=f+CA|0,O=I>>>0>(W=I+AA|0)>>>0?O+1|0:O,I=Ig(u,l,136657,0),O=f+O|0,O=I>>>0>(W=I+W|0)>>>0?O+1|0:O,V=(I=Ig(U,K,-683901,-1))+W|0,W=f+O|0,W=I>>>0>V>>>0?W+1|0:W,IA=V-(I=-2097152&T)|0,$=W-((I>>>0>V>>>0)+YA|0)|0,I=Ig(Q,0,t,0),O=f,V=(W=I)+(I=Ig(a,0,N,0))|0,W=f+O|0,W=I>>>0>V>>>0?W+1|0:W,I=Ig(r,0,DA,0),O=f+W|0,O=I>>>0>(V=I+V|0)>>>0?O+1|0:O,I=Ig(y,0,e,G),W=f+O|0,W=I>>>0>(V=I+V|0)>>>0?W+1|0:W,I=Ig(i,0,h,0),O=f+W|0,O=I>>>0>(V=I+V|0)>>>0?O+1|0:O,W=(I=Ig(_,0,p,eA))+V|0,V=f+O|0,V=I>>>0>W>>>0?V+1|0:V,O=(I=Ig(D,0,hA,0))+W|0,W=f+V|0,W=I>>>0>O>>>0?W+1|0:W,V=(I=Ig(c,0,n,0))+O|0,O=f+W|0,O=I>>>0>V>>>0?O+1|0:O,I=Ig(w,0,fA,0),W=f+O|0,W=I>>>0>(V=I+V|0)>>>0?W+1|0:W,I=Ig(s,0,S,0),O=f+W|0,Z=V=I+V|0,I=I>>>0>V>>>0?O+1|0:O,O=Ig(Q,0,a,0),W=f,T=(V=O)+(O=Ig(E,0,DA,0))|0,V=f+W|0,V=O>>>0>T>>>0?V+1|0:V,O=Ig(i,0,t,0),W=f+V|0,W=O>>>0>(T=O+T|0)>>>0?W+1|0:W,V=Ig(r,0,N,0),O=f+W|0,O=V>>>0>(T=V+T|0)>>>0?O+1|0:O,V=Ig(_,0,y,0),W=f+O|0,W=V>>>0>(T=V+T|0)>>>0?W+1|0:W,V=Ig(e,G,h,0),O=f+W|0,O=V>>>0>(T=V+T|0)>>>0?O+1|0:O,W=Ig(c,0,p,eA),V=f+O|0,V=W>>>0>(T=W+T|0)>>>0?V+1|0:V,O=Ig(s,0,hA,0),W=f+V|0,W=O>>>0>(T=O+T|0)>>>0?W+1|0:W,V=Ig(D,0,n,0),O=f+W|0,O=V>>>0>(T=V+T|0)>>>0?O+1|0:O,V=Ig(k,0,fA,0),W=f+O|0,W=V>>>0>(T=V+T|0)>>>0?W+1|0:W,V=Ig(w,0,S,0),O=f+W|0,yA=O=V>>>0>(bA=V+T|0)>>>0?O+1|0:O,q=O=O-((bA>>>0<4293918720)-1|0)|0,W=I+(W=O>>>21|0)|0,EA=W=(O=(2097151&O)<<11|(oA=bA- -1048576|0)>>>21)>>>0>(HA=O+Z|0)>>>0?W+1|0:W,z=I=W-((HA>>>0<4293918720)-1|0)|0,O=(W=I>>>21|0)+$|0,iA=O=(I=(2097151&I)<<11|(_A=HA- -1048576|0)>>>21)>>>0>(YA=I+IA|0)>>>0?O+1|0:O,j=I=O-((YA>>>0<4293918720)-1|0)|0,W=(W=I>>21)+gA|0,CA=W=(I=(2097151&I)<<11|(BA=YA- -1048576|0)>>>21)>>>0>(sA=I+aA|0)>>>0?W+1|0:W,LA=I=W-((sA>>>0<4293918720)-1|0)|0,O=(W=I>>21)+cA|0,R=O=(I=(V=(2097151&I)<<11|(Z=sA- -1048576|0)>>>21)+wA|0)>>>0>>0?O+1|0:O,wA=I,I=Ig(I,O,-683901,-1),V=f+g|0,PA=O=I+uA|0,T=I>>>0>O>>>0?V+1|0:V,qA=kA-(I=-2097152&QA)|0,mA=tA-((I>>>0>kA>>>0)+mA|0)|0,I=Ig(H,Y,666643,0),O=f+(rA-(((g=-2097152&nA)>>>0>UA>>>0)+vA|0)|0)|0,O=I>>>0>(W=I+(UA-g|0)|0)>>>0?O+1|0:O,g=(I=Ig(m,d,470296,0))+W|0,W=f+O|0,nA=g,g=I>>>0>g>>>0?W+1|0:W,AA=MA-(I=-2097152&GA)|0,IA=KA-((I>>>0>MA>>>0)+xA|0)|0,I=Ig(B,0,c,0),O=f,W=I,I=Ig(E,0,D,0),V=f+O|0,V=I>>>0>(W=W+I|0)>>>0?V+1|0:V,I=Ig(a,0,w,0),O=f+V|0,O=I>>>0>(W=I+W|0)>>>0?O+1|0:O,V=(I=Ig(t,0,k,0))+W|0,W=f+O|0,W=I>>>0>V>>>0?W+1|0:W,I=Ig(r,0,s,0),O=f+W|0,O=I>>>0>(V=I+V|0)>>>0?O+1|0:O,I=Ig(h,0,F,0),W=f+O|0,$=V=I+V|0,I=I>>>0>V>>>0?W+1|0:W,O=Ig(B,0,D,0),W=f,gA=(V=O)+(O=Ig(E,0,s,0))|0,V=f+W|0,V=O>>>0>gA>>>0?V+1|0:V,W=Ig(a,0,k,0),O=f+V|0,O=W>>>0>(gA=W+gA|0)>>>0?O+1|0:O,V=Ig(t,0,F,0),W=f+O|0,W=V>>>0>(gA=V+gA|0)>>>0?W+1|0:W,V=Ig(r,0,w,0),O=f+W|0,tA=O=V>>>0>(kA=V+gA|0)>>>0?O+1|0:O,X=O=O-((kA>>>0<4293918720)-1|0)|0,V=I+(W=O>>>21|0)|0,cA=V=(O=(2097151&O)<<11|(QA=kA- -1048576|0)>>>21)>>>0>(KA=O+$|0)>>>0?V+1|0:V,xA=I=V-((KA>>>0<4293918720)-1|0)|0,O=(W=I>>>21|0)+IA|0,O=(I=(2097151&I)<<11|(aA=KA- -1048576|0)>>>21)>>>0>(V=I+AA|0)>>>0?O+1|0:O,I=Ig(m,d,666643,0),W=f+O|0,gA=W=I>>>0>(GA=I+V|0)>>>0?W+1|0:W,vA=I=W-((GA>>>0<4293918720)-1|0)|0,O=g+(O=I>>21)|0,IA=O=(I=(2097151&I)<<11|(AA=GA- -1048576|0)>>>21)>>>0>(rA=I+nA|0)>>>0?O+1|0:O,uA=I=O-((rA>>>0<4293918720)-1|0)|0,W=(O=I>>21)+mA|0,W=(I=(2097151&I)<<11|($=rA- -1048576|0)>>>21)>>>0>(g=I+qA|0)>>>0?W+1|0:W,I=Ig(lA,v,-997805,-1),V=f+W|0,V=I>>>0>(O=I+g|0)>>>0?V+1|0:V,UA=I=sA-(g=-2097152&Z)|0,L=W=CA-((g>>>0>sA>>>0)+LA|0)|0,Z=(g=Ig(wA,R,136657,0))+O|0,O=f+V|0,I=Ig(I,W,-683901,-1),O=f+(g>>>0>Z>>>0?O+1|0:O)|0,Z=O=I>>>0>(CA=I+Z|0)>>>0?O+1|0:O,MA=I=O-((CA>>>0<4293918720)-1|0)|0,O=(W=I>>21)+T|0,g=O=(T=nA=(I=(2097151&I)<<11|(V=CA- -1048576|0)>>>21)+PA|0)>>>0>>0?O+1|0:O,sA=O=O-((T>>>0<4293918720)-1|0)|0,nA=(2097151&O)<<11|(I=T- -1048576|0)>>>21,O=(O>>21)+RA|0,RA=mA=nA+P|0,nA=nA>>>0>mA>>>0?O+1|0:O,LA=T-(I&=-2097152)|0,PA=g-((I>>>0>T>>>0)+sA|0)|0,qA=CA-(I=-2097152&V)|0,mA=Z-((I>>>0>CA>>>0)+MA|0)|0,I=Ig(lA,v,654183,0),W=f+(IA-(((g=-2097152&$)>>>0>rA>>>0)+uA|0)|0)|0,W=I>>>0>(O=I+(rA-g|0)|0)>>>0?W+1|0:W,g=(I=Ig(wA,R,-997805,-1))+O|0,O=f+W|0,O=I>>>0>g>>>0?O+1|0:O,I=Ig(UA,L,136657,0),O=f+O|0,uA=g=I+g|0,I=I>>>0>g>>>0?O+1|0:O,MA=YA-(g=-2097152&BA)|0,rA=iA-((g>>>0>YA>>>0)+j|0)|0,g=Ig(u,l,-997805,-1),O=f,V=(W=g)+(g=Ig(M,x,654183,0))|0,W=f+O|0,W=g>>>0>V>>>0?W+1|0:W,g=Ig(U,K,136657,0),O=f+W|0,O=g>>>0>(V=g+V|0)>>>0?O+1|0:O,g=Ig(J,b,-683901,-1),O=f+O|0,W=EA+(g>>>0>(V=g+V|0)>>>0?O+1|0:O)|0,BA=(O=V+HA|0)-(g=-2097152&_A)|0,_A=(W=O>>>0>>0?W+1|0:W)-((g>>>0>O>>>0)+z|0)|0,g=Ig(u,l,654183,0),O=f,V=(W=g)+(g=Ig(M,x,470296,0))|0,W=f+O|0,W=g>>>0>V>>>0?W+1|0:W,g=Ig(U,K,-997805,-1),O=f+W|0,W=yA+(g>>>0>(V=g+V|0)>>>0?O+1|0:O)|0,W=(g=V+bA|0)>>>0>>0?W+1|0:W,V=(O=g)+(g=Ig(J,b,136657,0))|0,O=f+W|0,O=g>>>0>V>>>0?O+1|0:O,W=(g=Ig(H,Y,-683901,-1))+V|0,V=f+O|0,V=g>>>0>W>>>0?V+1|0:V,$=W-(g=-2097152&oA)|0,Z=V-((g>>>0>W>>>0)+q|0)|0,g=Ig(B,0,DA,0),O=f,W=g,g=Ig(E,0,N,0),O=f+O|0,O=g>>>0>(W=W+g|0)>>>0?O+1|0:O,g=Ig(i,0,a,0),O=f+O|0,O=g>>>0>(W=g+W|0)>>>0?O+1|0:O,g=Ig(e,G,t,0),V=f+O|0,V=g>>>0>(W=g+W|0)>>>0?V+1|0:V,O=(g=Ig(Q,0,r,0))+W|0,W=f+V|0,W=g>>>0>O>>>0?W+1|0:W,g=Ig(y,0,c,0),W=f+W|0,W=g>>>0>(O=g+O|0)>>>0?W+1|0:W,V=(g=Ig(_,0,h,0))+O|0,O=f+W|0,O=g>>>0>V>>>0?O+1|0:O,g=Ig(D,0,p,eA),O=f+O|0,O=g>>>0>(W=g+V|0)>>>0?O+1|0:O,g=Ig(w,0,hA,0),V=f+O|0,V=g>>>0>(W=g+W|0)>>>0?V+1|0:V,O=(g=Ig(s,0,n,0))+W|0,W=f+V|0,W=g>>>0>O>>>0?W+1|0:W,g=Ig(F,0,fA,0),W=f+W|0,W=g>>>0>(O=g+O|0)>>>0?W+1|0:W,V=(g=Ig(S,0,k,0))+O|0,O=f+W|0,O=(FA>>>21|0)+(O=g>>>0>V>>>0?O+1|0:O)|0,CA=O=(g=(2097151&FA)<<11|dA>>>21)>>>0>(EA=g+V|0)>>>0?O+1|0:O,bA=g=O-((EA>>>0<4293918720)-1|0)|0,W=(W=g>>>21|0)+Z|0,IA=W=(g=(2097151&g)<<11|(T=EA- -1048576|0)>>>21)>>>0>(iA=g+$|0)>>>0?W+1|0:W,sA=g=W-((iA>>>0<4293918720)-1|0)|0,O=(W=g>>21)+_A|0,Z=O=(g=(2097151&g)<<11|($=iA- -1048576|0)>>>21)>>>0>(BA=g+BA|0)>>>0?O+1|0:O,oA=O=O-((BA>>>0<4293918720)-1|0)|0,W=(W=O>>21)+rA|0,rA=W=(O=(V=(2097151&O)<<11|(g=BA- -1048576|0)>>>21)+MA|0)>>>0>>0?W+1|0:W,dA=O,W=Ig(O,W,-683901,-1),O=f+I|0,_A=V=W+uA|0,I=W>>>0>V>>>0?O+1|0:O,O=Ig(lA,v,470296,0),V=f+(gA-(((W=-2097152&AA)>>>0>GA>>>0)+vA|0)|0)|0,V=O>>>0>(AA=O+(GA-W|0)|0)>>>0?V+1|0:V,O=Ig(wA,R,654183,0),W=f+V|0,W=O>>>0>(AA=O+AA|0)>>>0?W+1|0:W,V=Ig(UA,L,-997805,-1),O=f+W|0,O=V>>>0>(AA=V+AA|0)>>>0?O+1|0:O,FA=g=BA-(W=-2097152&g)|0,eA=Z=Z-((W>>>0>BA>>>0)+oA|0)|0,AA=(V=Ig(dA,rA,136657,0))+AA|0,W=f+O|0,g=Ig(g,Z,-683901,-1),V=f+(V>>>0>AA>>>0?W+1|0:W)|0,Z=V=g>>>0>(gA=g+AA|0)>>>0?V+1|0:V,yA=W=V-((gA>>>0<4293918720)-1|0)|0,V=(2097151&W)<<11|(g=gA- -1048576|0)>>>21,W=(W>>21)+I|0,oA=V=(W=V>>>0>(AA=V+_A|0)>>>0?W+1|0:W)-((AA>>>0<4293918720)-1|0)|0,BA=(2097151&V)<<11|(I=AA- -1048576|0)>>>21,V=(V>>21)+mA|0,hA=_A=BA+qA|0,_A=BA>>>0>_A>>>0?V+1|0:V,DA=AA-(I&=-2097152)|0,fA=W-((I>>>0>AA>>>0)+oA|0)|0,HA=gA-(I=-2097152&g)|0,YA=Z-((I>>>0>gA>>>0)+yA|0)|0,I=Ig(lA,v,666643,0),W=f+(cA-(((g=-2097152&aA)>>>0>KA>>>0)+xA|0)|0)|0,W=I>>>0>(O=I+(KA-g|0)|0)>>>0?W+1|0:W,I=Ig(wA,R,470296,0),V=f+W|0,V=I>>>0>(g=I+O|0)>>>0?V+1|0:V,I=Ig(UA,L,654183,0),W=f+V|0,AA=g=I+g|0,I=I>>>0>g>>>0?W+1|0:W,$=iA-(g=-2097152&$)|0,Z=IA-((g>>>0>iA>>>0)+sA|0)|0,g=Ig(u,l,470296,0),O=f,W=g,g=Ig(M,x,666643,0),O=f+O|0,O=g>>>0>(W=W+g|0)>>>0?O+1|0:O,g=Ig(U,K,654183,0),V=f+O|0,V=g>>>0>(W=g+W|0)>>>0?V+1|0:V,O=(g=Ig(J,b,-997805,-1))+W|0,W=f+V|0,W=g>>>0>O>>>0?W+1|0:W,g=Ig(H,Y,136657,0),W=f+W|0,O=CA+(g>>>0>(V=g+O|0)>>>0?W+1|0:W)|0,O=(g=V+EA|0)>>>0>>0?O+1|0:O,W=g,g=Ig(m,d,-683901,-1),O=f+O|0,O=g>>>0>(V=W+g|0)>>>0?O+1|0:O,oA=(g=(2097151&JA)<<11|NA>>>21)+(V-(W=-2097152&T)|0)|0,W=(O-((W>>>0>V>>>0)+bA|0)|0)+(JA>>21)|0,iA=W=g>>>0>oA>>>0?W+1|0:W,sA=g=W-((oA>>>0<4293918720)-1|0)|0,W=(O=g>>21)+Z|0,JA=W=(g=(V=(2097151&g)<<11|(BA=oA- -1048576|0)>>>21)+$|0)>>>0>>0?W+1|0:W,yA=g,g=Ig(g,W,-683901,-1),V=f+I|0,V=g>>>0>(O=g+AA|0)>>>0?V+1|0:V,I=Ig(dA,rA,-997805,-1),W=f+V|0,W=I>>>0>(g=I+O|0)>>>0?W+1|0:W,I=Ig(FA,eA,136657,0),O=f+W|0,NA=g=I+g|0,$=I>>>0>g>>>0?O+1|0:O,T=kA-(I=-2097152&QA)|0,IA=tA-((I>>>0>kA>>>0)+X|0)|0,I=Ig(B,0,s,0),g=f,O=I,I=Ig(E,0,w,0),W=f+g|0,W=I>>>0>(O=O+I|0)>>>0?W+1|0:W,I=Ig(a,0,F,0),W=f+W|0,W=I>>>0>(g=I+O|0)>>>0?W+1|0:W,I=Ig(r,0,k,0),O=f+W|0,I=I>>>0>(W=g=I+g|0)>>>0?O+1|0:O,g=Ig(B,0,w,0),O=f,Z=(V=g)+(g=Ig(E,0,k,0))|0,V=f+O|0,V=g>>>0>Z>>>0?V+1|0:V,g=Ig(r,0,F,0),O=f+V|0,g=O=g>>>0>(Z=g+Z|0)>>>0?O+1|0:O,lA=O=O-((Z>>>0<4293918720)-1|0)|0,V=O>>>21|0,EA=(O=(2097151&O)<<11|(cA=Z- -1048576|0)>>>21)+W|0,W=I+V|0,aA=W=O>>>0>EA>>>0?W+1|0:W,KA=I=W-((EA>>>0<4293918720)-1|0)|0,O=(V=I>>>21|0)+IA|0,O=(I=(2097151&I)<<11|(gA=EA- -1048576|0)>>>21)>>>0>(W=I+T|0)>>>0?O+1|0:O,V=(I=Ig(wA,R,666643,0))+W|0,W=f+O|0,W=I>>>0>V>>>0?W+1|0:W,I=Ig(UA,L,470296,0),W=f+W|0,W=I>>>0>(O=I+V|0)>>>0?W+1|0:W,V=(I=Ig(yA,JA,136657,0))+O|0,O=f+W|0,O=I>>>0>V>>>0?O+1|0:O,W=(I=Ig(dA,rA,654183,0))+V|0,V=f+O|0,V=I>>>0>W>>>0?V+1|0:V,I=Ig(FA,eA,-997805,-1),O=f+V|0,CA=O=I>>>0>(AA=I+W|0)>>>0?O+1|0:O,GA=I=O-((AA>>>0<4293918720)-1|0)|0,W=(V=I>>21)+$|0,NA=O=(W=(I=(O=(2097151&I)<<11|(T=AA- -1048576|0)>>>21)+NA|0)>>>0>>0?W+1|0:W)-((I>>>0<4293918720)-1|0)|0,$=(2097151&O)<<11|(IA=I- -1048576|0)>>>21,O=(O>>21)+YA|0,MA=QA=$+HA|0,tA=$>>>0>QA>>>0?O+1|0:O,$=I,V=W,W=(iA-(((O=-2097152&BA)>>>0>oA>>>0)+sA|0)|0)+(SA>>21)|0,QA=W=(I=(oA-O|0)+(BA=(2097151&SA)<<11|pA>>>21)|0)>>>0>>0?W+1|0:W,bA=W=W-((I>>>0<4293918720)-1|0)|0,oA=O=W>>21,W=Ig(wA=(2097151&W)<<11|(iA=I- -1048576|0)>>>21,O,-683901,-1),O=f+V|0,O=W>>>0>($=W+$|0)>>>0?O+1|0:O,HA=$-(W=-2097152&IA)|0,YA=O-((W>>>0>$>>>0)+NA|0)|0,O=Ig(wA,oA,136657,0),W=f+CA|0,W=O>>>0>(V=O+AA|0)>>>0?W+1|0:W,sA=V-(O=-2097152&T)|0,NA=W-((O>>>0>V>>>0)+GA|0)|0,V=(O=Ig(UA,L,666643,0))+(EA-(W=-2097152&gA)|0)|0,W=f+(aA-((W>>>0>EA>>>0)+KA|0)|0)|0,W=O>>>0>V>>>0?W+1|0:W,$=(O=Ig(yA,JA,-997805,-1))+V|0,V=f+W|0,V=O>>>0>$>>>0?V+1|0:V,W=Ig(dA,rA,470296,0),O=f+V|0,O=W>>>0>($=W+$|0)>>>0?O+1|0:O,V=Ig(FA,eA,654183,0),W=f+O|0,SA=$=V+$|0,CA=V>>>0>$>>>0?W+1|0:W,$=Z,Z=g,g=Ig(E,0,F,0),O=f,W=g,g=Ig(B,0,k,0),O=f+O|0,O=g>>>0>(V=W+g|0)>>>0?O+1|0:O,g=Ig(B,0,F,0),kA=W=f,EA=g,aA=g- -1048576|0,KA=g=W-((g>>>0<4293918720)-1|0)|0,W=g>>>21|0,BA=(g=(2097151&g)<<11|aA>>>21)+V|0,V=W+O|0,gA=V=g>>>0>BA>>>0?V+1|0:V,GA=g=V-((BA>>>0<4293918720)-1|0)|0,O=(W=g>>>21|0)+Z|0,O=(g=(2097151&g)<<11|(AA=BA- -1048576|0)>>>21)>>>0>(V=g+$|0)>>>0?O+1|0:O,Z=(g=Ig(yA,JA,654183,0))+(V-(W=-2097152&cA)|0)|0,V=f+(O-((8191&lA)+(W>>>0>V>>>0)|0)|0)|0,V=g>>>0>Z>>>0?V+1|0:V,g=Ig(dA,rA,666643,0),W=f+V|0,W=g>>>0>(O=g+Z|0)>>>0?W+1|0:W,T=(g=Ig(FA,eA,470296,0))+O|0,O=f+W|0,IA=O=g>>>0>T>>>0?O+1|0:O,pA=g=O-((T>>>0<4293918720)-1|0)|0,W=(W=g>>21)+CA|0,V=W=(g=(2097151&g)<<11|($=T- -1048576|0)>>>21)>>>0>(Z=g+SA|0)>>>0?W+1|0:W,cA=O=W-((Z>>>0<4293918720)-1|0)|0,CA=(2097151&O)<<11|(g=Z- -1048576|0)>>>21,O=(O>>21)+NA|0,CA=CA>>>0>(rA=SA=CA+sA|0)>>>0?O+1|0:O,W=Ig(wA,oA,-997805,-1),O=f+V|0,dA=(Z=W+Z|0)-(g&=-2097152)|0,NA=(W>>>0>Z>>>0?O+1|0:O)-((g>>>0>Z>>>0)+cA|0)|0,g=Ig(wA,oA,654183,0),V=f+IA|0,V=g>>>0>(O=g+T|0)>>>0?V+1|0:V,SA=O-(g=-2097152&$)|0,pA=V-((g>>>0>O>>>0)+pA|0)|0,g=Ig(yA,JA,470296,0),W=f+(gA-((8191&GA)+((O=-2097152&AA)>>>0>BA>>>0)|0)|0)|0,W=g>>>0>(V=g+(BA-O|0)|0)>>>0?W+1|0:W,g=Ig(FA,eA,666643,0),W=f+W|0,W=g>>>0>(O=g+V|0)>>>0?W+1|0:W,Z=O,g=Ig(yA,JA,666643,0),V=f+(kA-((2047&KA)+((O=-2097152&aA)>>>0>EA>>>0)|0)|0)|0,T=V=g>>>0>(AA=g+(EA-O|0)|0)>>>0?V+1|0:V,cA=g=V-((AA>>>0<4293918720)-1|0)|0,W=W+(O=g>>21)|0,aA=g=(W=(g=(2097151&g)<<11|(IA=AA- -1048576|0)>>>21)>>>0>($=g+Z|0)>>>0?W+1|0:W)-(($>>>0<4293918720)-1|0)|0,V=(O=g>>21)+pA|0,g=(g=(2097151&g)<<11|(Z=$- -1048576|0)>>>21)>>>0>(gA=g+SA|0)>>>0?V+1|0:V,O=Ig(wA,oA,470296,0),W=f+W|0,W=O>>>0>(V=O+$|0)>>>0?W+1|0:W,Z=V-(O=-2097152&Z)|0,$=W-((O>>>0>V>>>0)+aA|0)|0,O=Ig(wA,oA,666643,0),V=f+(T-(((W=-2097152&IA)>>>0>AA>>>0)+cA|0)|0)|0,O=(W=(V=O>>>0>(BA=O+(AA-W|0)|0)>>>0?V+1|0:V)>>21)+$|0,W=g+(V=(O=(V=(2097151&V)<<11|BA>>>21)>>>0>(Z=V+Z|0)>>>0?O+1|0:O)>>21)|0,O=(O=(W=(g=$=(O=(2097151&O)<<11|Z>>>21)+gA|0)>>>0>>0?W+1|0:W)>>21)+NA|0,W=(W=(O=(W=(2097151&W)<<11|g>>>21)>>>0>(cA=W+dA|0)>>>0?O+1|0:O)>>21)+CA|0,V=(O=(W=(O=(2097151&O)<<11|cA>>>21)>>>0>(aA=O+rA|0)>>>0?W+1|0:W)>>21)+YA|0,O=(W=(V=(W=(2097151&W)<<11|aA>>>21)>>>0>(gA=W+HA|0)>>>0?V+1|0:V)>>21)+tA|0,W=(V=(O=(V=(2097151&V)<<11|gA>>>21)>>>0>(AA=V+MA|0)>>>0?O+1|0:O)>>21)+fA|0,O=(O=(W=(O=(2097151&O)<<11|AA>>>21)>>>0>(CA=O+DA|0)>>>0?W+1|0:W)>>21)+_A|0,W=(W=(O=(W=(2097151&W)<<11|CA>>>21)>>>0>(T=W+hA|0)>>>0?O+1|0:O)>>21)+PA|0,V=(O=(W=(O=(2097151&O)<<11|T>>>21)>>>0>(IA=O+LA|0)>>>0?W+1|0:W)>>21)+nA|0,W=(QA-((I>>>0<(O=-2097152&iA)>>>0)+bA|0)|0)+((V=(W=(2097151&W)<<11|IA>>>21)>>>0>($=W+RA|0)>>>0?V+1|0:V)>>21)|0,QA=O=(W=(iA=(tA=I-O|0)+((2097151&V)<<11|$>>>21)|0)>>>0>>0?W+1|0:W)>>21,I=(I=Ig(tA=(2097151&W)<<11|iA>>>21,O,666643,0))+(O=2097151&BA)|0,V=f,C[0|A]=I,V=I>>>0>>0?V+1|0:V,C[A+1|0]=(255&V)<<24|I>>>8,O=2097151&Z,Z=Ig(tA,QA,470296,0)+O|0,W=f,W=(V>>21)+(W=O>>>0>Z>>>0?W+1|0:W)|0,W=(Z=(BA=(2097151&V)<<11|I>>>21)+Z|0)>>>0>>0?W+1|0:W,C[A+4|0]=(2047&W)<<21|Z>>>11;C[A+3|0]=(7&W)<<29|Z>>>3,C[A+2|0]=31&((65535&V)<<16|I>>>16)|Z<<5,I=2097151&g,g=Ig(tA,QA,654183,0)+I|0,V=f,V=I>>>0>g>>>0?V+1|0:V,I=W,O=(W>>=21)+V|0,I=O=(I=(2097151&I)<<11|Z>>>21)>>>0>(g=I+g|0)>>>0?O+1|0:O,C[A+6|0]=(63&O)<<26|g>>>6,W=0,C[A+5|0]=W<<13|(1572864&Z)>>>19|g<<2,W=2097151&cA,V=Ig(tA,QA,-997805,-1)+W|0,O=f,O=W>>>0>V>>>0?O+1|0:O,W=(W=I>>21)+O|0,W=(I=(Z=V)+(V=(2097151&I)<<11|g>>>21)|0)>>>0>>0?W+1|0:W,C[A+9|0]=(511&W)<<23|I>>>9,C[A+8|0]=(1&W)<<31|I>>>1,O=0,C[A+7|0]=O<<18|(2080768&g)>>>14|I<<7,g=2097151&aA,O=Ig(tA,QA,136657,0)+g|0,V=f,V=g>>>0>O>>>0?V+1|0:V,g=(Z=(2097151&(g=W))<<11|I>>>21)+O|0,O=(W>>=21)+V|0,O=g>>>0>>0?O+1|0:O,C[A+12|0]=(4095&O)<<20|g>>>12,C[A+11|0]=(15&O)<<28|g>>>4,W=0,C[A+10|0]=W<<15|(1966080&I)>>>17|g<<4,I=2097151&gA,V=Ig(tA,QA,-683901,-1)+I|0,W=f,W=I>>>0>V>>>0?W+1|0:W,I=O,O=W+(O>>=21)|0,O=(I=(Z=V)+(V=(2097151&I)<<11|g>>>21)|0)>>>0>>0?O+1|0:O,C[A+14|0]=(127&O)<<25|I>>>7,W=0,C[A+13|0]=W<<12|(1048576&g)>>>20|I<<1,W=O>>21,W=(g=(O=(2097151&O)<<11|I>>>21)+(2097151&AA)|0)>>>0>>0?W+1|0:W,C[A+17|0]=(1023&W)<<22|g>>>10,C[A+16|0]=(3&W)<<30|g>>>2,O=0,C[A+15|0]=O<<17|(2064384&I)>>>15|g<<6,I=W,W>>=21,V=(I=(O=(2097151&I)<<11|g>>>21)+(2097151&CA)|0)>>>0>>0?W+1|0:W,C[A+20|0]=(8191&V)<<19|I>>>13,C[A+19|0]=(31&V)<<27|I>>>5,O=V>>21,O=(W=(Z=(2097151&V)<<11|I>>>21)+(2097151&T)|0)>>>0>>0?O+1|0:O,Z=W,C[A+21|0]=W,W=0,C[A+18|0]=W<<14|(1835008&g)>>>18|I<<3,C[A+22|0]=(255&O)<<24|Z>>>8,W=O>>21,W=(I=(g=(2097151&O)<<11|Z>>>21)+(2097151&IA)|0)>>>0>>0?W+1|0:W,C[A+25|0]=(2047&W)<<21|I>>>11,C[A+24|0]=(7&W)<<29|I>>>3,C[A+23|0]=31&((65535&O)<<16|Z>>>16)|I<<5,O=(2097151&W)<<11|I>>>21,W>>=21,W=(g=O+(2097151&$)|0)>>>0>>0?W+1|0:W,C[A+27|0]=(63&W)<<26|g>>>6,O=0,C[A+26|0]=O<<13|(1572864&I)>>>19|g<<2,I=W,O=W>>=21,O=(I=(Z=(2097151&I)<<11|g>>>21)+(V=2097151&iA)|0)>>>0>>0?O+1|0:O,C[A+31|0]=(131071&O)<<15|I>>>17,C[A+30|0]=(511&O)<<23|I>>>9,W=0,C[A+28|0]=W<<18|(2080768&g)>>>14|I<<7,C[A+29|0]=Z+iA>>>1}function k(A,I,g,C){for(var B=0,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0;E=(B=_<<3)+g|0,Q=o[0|(B=I+B|0)]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,G=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,c=Q<<24|(65280&Q)<<8,t=(a=16711680&Q)<<24,a=a>>>8|0,B=(e=-16777216&Q)>>>24|0,i[E>>2]=t|e<<8|-16777216&((255&G)<<24|Q>>>8)|16711680&((16777215&G)<<8|Q>>>24)|G>>>8&65280|G>>>24,Q=B|a|c,B=0,i[E+4>>2]=Q|B,16!=(0|(_=_+1|0)););for(I=i[A+4>>2],i[C>>2]=i[A>>2],i[C+4>>2]=I,I=i[A+60>>2],i[C+56>>2]=i[A+56>>2],i[C+60>>2]=I,I=i[A+52>>2],i[C+48>>2]=i[A+48>>2],i[C+52>>2]=I,I=i[A+44>>2],i[C+40>>2]=i[A+40>>2],i[C+44>>2]=I,I=i[A+36>>2],i[C+32>>2]=i[A+32>>2],i[C+36>>2]=I,I=i[A+28>>2],i[C+24>>2]=i[A+24>>2],i[C+28>>2]=I,I=i[A+20>>2],i[C+16>>2]=i[A+16>>2],i[C+20>>2]=I,I=i[A+12>>2],i[C+8>>2]=i[A+8>>2],i[C+12>>2]=I;E=i[C+56>>2],a=i[C+60>>2],B=i[(I=G=(M=P<<3)+g|0)>>2],I=i[I+4>>2],k=Q=i[C+36>>2],Q=UI(p=i[C+32>>2],Q,50),_=f,Q=UI(p,k,46)^Q,_^=f,Q=UI(p,k,23)^Q,I=(f^_)+I|0,I=(B=Q+B|0)>>>0>>0?I+1|0:I,B=(_=i[(Q=M+34416|0)>>2])+B|0,I=i[Q+4>>2]+I|0,I=B>>>0<_>>>0?I+1|0:I,Q=(_=((t=i[C+48>>2])^(y=i[C+40>>2]))&p^t)+B|0,B=(((w=i[C+52>>2])^(F=i[C+44>>2]))&k^w)+I|0,I=(Q>>>0<_>>>0?B+1|0:B)+a|0,I=(E=Q+E|0)>>>0>>0?I+1|0:I,_=(Q=i[C+24>>2])+E|0,B=i[C+28>>2]+I|0,s=B=Q>>>0>_>>>0?B+1|0:B,i[C+24>>2]=_,i[C+28>>2]=B,n=B=i[C+4>>2],B=UI(Q=i[C>>2],B,36),a=f,B=UI(Q,n,30)^B,a^=f,e=E+(UI(Q,n,25)^B)|0,B=I+(f^a)|0,B=E>>>0>e>>>0?B+1|0:B,c=(I=e)+(e=Q&((a=i[C+16>>2])|(E=i[C+8>>2]))|E&a)|0,I=(I=B)+(n&((B=i[C+20>>2])|(h=i[C+12>>2]))|B&h)|0,e=I=c>>>0>>0?I+1|0:I,i[C+56>>2]=c,i[C+60>>2]=I,r=a,D=B,N=i[(I=l=(S=8|M)+g|0)>>2],U=i[I+4>>2],B=((k^F)&s^F)+w|0,B=(I=(a=(y^p)&_^y)+t|0)>>>0>>0?B+1|0:B,a=UI(_,s,50),t=f,a=UI(_,s,46)^a,t^=f,a=(w=UI(_,s,23)^a)+I|0,I=(f^t)+B|0,I=(a>>>0>>0?I+1|0:I)+U|0,I=(B=a+N|0)>>>0>>0?I+1|0:I,a=(a=B)+(t=i[(B=S+34416|0)>>2])|0,B=i[B+4>>2]+I|0,B=(I=a>>>0>>0?B+1|0:B)+D|0,w=B=(t=a+r|0)>>>0>>0?B+1|0:B,i[C+16>>2]=t,i[C+20>>2]=B,I=I+((h|n)&e|h&n)|0,I=(B=a+((Q|E)&c|Q&E)|0)>>>0>>0?I+1|0:I,a=UI(c,e,36),r=f,a=UI(c,e,30)^a,r^=f,D=B,B=UI(c,e,25)^a,I=(f^r)+I|0,r=I=B>>>0>(a=D+B|0)>>>0?I+1|0:I,i[C+48>>2]=a,i[C+52>>2]=I,D=E,S=h,I=(h=i[(B=Y=(E=16|M)+g|0)>>2])+y|0,B=i[B+4>>2]+F|0,B=I>>>0>>0?B+1|0:B,E=(y=I)+(h=i[(I=E+34416|0)>>2])|0,I=i[I+4>>2]+B|0,I=((s^k)&w^k)+(I=E>>>0>>0?I+1|0:I)|0,I=(B=(B=E)+(E=(_^p)&t^p)|0)>>>0>>0?I+1|0:I,E=UI(t,w,50),h=f,E=UI(t,w,46)^E,h^=f,E=(y=UI(t,w,23)^E)+B|0,B=(f^h)+I|0,B=(y=E>>>0>>0?B+1|0:B)+S|0,S=B=(h=E)>>>0>(E=E+D|0)>>>0?B+1|0:B,i[C+8>>2]=E,i[C+12>>2]=B,I=UI(a,r,36),B=f,I=UI(a,r,30)^I,B^=f,F=UI(a,r,25)^I,I=((e|n)&r|e&n)+(f^B)|0,B=y+((D=F+((Q|c)&a|Q&c)|0)>>>0>>0?I+1|0:I)|0,h=B=(y=h+D|0)>>>0>>0?B+1|0:B,i[C+40>>2]=y,i[C+44>>2]=B,D=Q,B=(B=p)+(p=i[(I=u=(Q=24|M)+g|0)>>2])|0,I=i[I+4>>2]+k|0,I=B>>>0

>>0?I+1|0:I,Q=(F=B)+(p=i[(B=Q+34416|0)>>2])|0,B=i[B+4>>2]+I|0,B=(s^(s^w)&S)+(B=Q>>>0

>>0?B+1|0:B)|0,B=(I=(I=Q)+(Q=_^(_^t)&E)|0)>>>0>>0?B+1|0:B,Q=UI(E,S,50),p=f,Q=UI(E,S,46)^Q,p^=f,Q=(k=UI(E,S,23)^Q)+I|0,I=(f^p)+B|0,B=(I=Q>>>0>>0?I+1|0:I)+n|0,k=B=(n=Q+D|0)>>>0>>0?B+1|0:B,i[C>>2]=n,i[C+4>>2]=B,B=UI(y,h,36),p=f,B=UI(y,h,30)^B,D=f^p,F=UI(y,h,25)^B,B=((e|r)&h|e&r)+(f^D)|0,I=I+((p=F+((a|c)&y|a&c)|0)>>>0>>0?B+1|0:B)|0,p=I=(D=Q+p|0)>>>0>>0?I+1|0:I,i[C+32>>2]=D,i[C+36>>2]=I,Q=i[(B=m=(I=32|M)+g|0)>>2],B=s+i[B+4>>2]|0,B=(Q=Q+_|0)>>>0<_>>>0?B+1|0:B,Q=(_=i[(I=I+34416|0)>>2])+Q|0,I=i[I+4>>2]+B|0,I=(w^(w^S)&k)+(I=Q>>>0<_>>>0?I+1|0:I)|0,I=(B=(B=Q)+(Q=t^(E^t)&n)|0)>>>0>>0?I+1|0:I,Q=UI(n,k,50),_=f,Q=UI(n,k,46)^Q,_^=f,Q=(s=UI(n,k,23)^Q)+B|0,B=(f^_)+I|0,F=B=Q>>>0>>0?B+1|0:B,I=B,B=UI(D,p,36),_=f,B=UI(D,p,30)^B,s=f^_,N=UI(D,p,25)^B,B=((r|h)&p|r&h)+(f^s)|0,I=((_=N+((a|y)&D|a&y)|0)>>>0>>0?B+1|0:B)+I|0,_=I=(s=Q+_|0)>>>0<_>>>0?I+1|0:I,i[C+24>>2]=s,i[C+28>>2]=I,B=e+F|0,F=B=(e=Q+c|0)>>>0>>0?B+1|0:B,i[C+56>>2]=e,i[C+60>>2]=B,Q=i[(I=J=(B=40|M)+g|0)>>2],I=w+i[I+4>>2]|0,I=(Q=Q+t|0)>>>0>>0?I+1|0:I,Q=(c=i[(B=B+34416|0)>>2])+Q|0,B=i[B+4>>2]+I|0,B=(S^(k^S)&F)+(B=Q>>>0>>0?B+1|0:B)|0,B=(I=(I=Q)+(Q=E^(E^n)&e)|0)>>>0>>0?B+1|0:B,Q=UI(e,F,50),c=f,Q=UI(e,F,46)^Q,c^=f,Q=(t=UI(e,F,23)^Q)+I|0,I=(f^c)+B|0,I=Q>>>0>>0?I+1|0:I,B=UI(s,_,36),c=f,B=UI(s,_,30)^B,t=f^c,w=UI(s,_,25)^B,B=((h|p)&_|h&p)+(f^t)|0,B=((c=w+((y|D)&s|y&D)|0)>>>0>>0?B+1|0:B)+I|0,c=B=(t=Q+c|0)>>>0>>0?B+1|0:B,i[C+16>>2]=t,i[C+20>>2]=B,I=I+r|0,N=I=(r=Q+a|0)>>>0>>0?I+1|0:I,i[C+48>>2]=r,i[C+52>>2]=I,Q=i[(B=H=(I=48|M)+g|0)>>2],B=S+i[B+4>>2]|0,B=(Q=Q+E|0)>>>0>>0?B+1|0:B,Q=(E=i[(I=I+34416|0)>>2])+Q|0,I=i[I+4>>2]+B|0,I=(k^(k^F)&N)+(I=Q>>>0>>0?I+1|0:I)|0,I=(B=(B=Q)+(Q=n^(e^n)&r)|0)>>>0>>0?I+1|0:I,Q=UI(r,N,50),E=f,Q=UI(r,N,46)^Q,E^=f,Q=(a=UI(r,N,23)^Q)+B|0,B=(f^E)+I|0,a=B=Q>>>0>>0?B+1|0:B,I=B,B=UI(t,c,36),E=f,B=UI(t,c,30)^B,w=f^E,S=UI(t,c,25)^B,B=((_|p)&c|_&p)+(f^w)|0,I=((E=S+((s|D)&t|s&D)|0)>>>0>>0?B+1|0:B)+I|0,w=I=(B=E)>>>0>(E=Q+E|0)>>>0?I+1|0:I,i[C+8>>2]=E,i[C+12>>2]=I,B=a+h|0,S=B=(U=Q+y|0)>>>0>>0?B+1|0:B,i[C+40>>2]=U,i[C+44>>2]=B,Q=i[(I=d=(B=56|M)+g|0)>>2],I=k+i[I+4>>2]|0,I=(Q=Q+n|0)>>>0>>0?I+1|0:I,Q=(a=i[(B=B+34416|0)>>2])+Q|0,B=i[B+4>>2]+I|0,B=(F^(F^N)&S)+(B=Q>>>0>>0?B+1|0:B)|0,B=(I=(I=Q)+(Q=e^(e^r)&U)|0)>>>0>>0?B+1|0:B,Q=UI(U,S,50),a=f,Q=UI(U,S,46)^Q,a^=f,Q=(h=UI(U,S,23)^Q)+I|0,I=(f^a)+B|0,I=Q>>>0>>0?I+1|0:I,B=UI(E,w,36),a=f,B=UI(E,w,30)^B,h=f^a,y=UI(E,w,25)^B,B=((_|c)&w|_&c)+(f^h)|0,B=((a=y+((t|s)&E|t&s)|0)>>>0>>0?B+1|0:B)+I|0,h=B=(h=a)>>>0>(a=Q+a|0)>>>0?B+1|0:B,i[C>>2]=a,i[C+4>>2]=B,I=I+p|0,k=I=(y=Q+D|0)>>>0>>0?I+1|0:I,i[C+32>>2]=y,i[C+36>>2]=I,Q=i[(B=x=(I=64|M)+g|0)>>2],B=F+i[B+4>>2]|0,B=(Q=Q+e|0)>>>0>>0?B+1|0:B,Q=(e=i[(I=I+34416|0)>>2])+Q|0,I=i[I+4>>2]+B|0,I=(N^(S^N)&k)+(I=Q>>>0>>0?I+1|0:I)|0,I=(B=(B=Q)+(Q=r^(r^U)&y)|0)>>>0>>0?I+1|0:I,Q=UI(y,k,50),e=f,Q=UI(y,k,46)^Q,e^=f,Q=(n=UI(y,k,23)^Q)+B|0,B=(f^e)+I|0,p=B=Q>>>0>>0?B+1|0:B,I=B,B=UI(a,h,36),e=f,B=UI(a,h,30)^B,n=f^e,D=UI(a,h,25)^B,B=((c|w)&h|c&w)+(f^n)|0,I=((e=D+((E|t)&a|E&t)|0)>>>0>>0?B+1|0:B)+I|0,e=I=(n=Q+e|0)>>>0>>0?I+1|0:I,i[C+56>>2]=n,i[C+60>>2]=I,B=_+p|0,F=B=(_=Q+s|0)>>>0>>0?B+1|0:B,i[C+24>>2]=_,i[C+28>>2]=B,Q=i[(I=b=(B=72|M)+g|0)>>2],I=N+i[I+4>>2]|0,I=(Q=Q+r|0)>>>0>>0?I+1|0:I,Q=(r=i[(B=B+34416|0)>>2])+Q|0,B=i[B+4>>2]+I|0,B=(S^(k^S)&F)+(B=Q>>>0>>0?B+1|0:B)|0,B=(I=(I=Q)+(Q=U^(y^U)&_)|0)>>>0>>0?B+1|0:B,Q=UI(_,F,50),r=f,Q=UI(_,F,46)^Q,r^=f,Q=(p=UI(_,F,23)^Q)+I|0,I=(f^r)+B|0,I=Q>>>0

>>0?I+1|0:I,B=UI(n,e,36),r=f,B=UI(n,e,30)^B,p=f^r,D=UI(n,e,25)^B,B=((h|w)&e|h&w)+(f^p)|0,B=((r=D+((E|a)&n|E&a)|0)>>>0>>0?B+1|0:B)+I|0,r=B=(p=Q+r|0)>>>0>>0?B+1|0:B,i[C+48>>2]=p,i[C+52>>2]=B,I=I+c|0,N=I=(c=Q+t|0)>>>0>>0?I+1|0:I,i[C+16>>2]=c,i[C+20>>2]=I,I=(I=U)+(t=i[(B=U=(Q=80|M)+g|0)>>2])|0,B=i[B+4>>2]+S|0,B=I>>>0>>0?B+1|0:B,Q=(s=I)+(t=i[(I=Q+34416|0)>>2])|0,I=i[I+4>>2]+B|0,I=(k^(k^F)&N)+(I=Q>>>0>>0?I+1|0:I)|0,I=(B=(B=Q)+(Q=y^(_^y)&c)|0)>>>0>>0?I+1|0:I,Q=UI(c,N,50),t=f,Q=UI(c,N,46)^Q,t^=f,Q=(D=UI(c,N,23)^Q)+B|0,B=(f^t)+I|0,s=B=Q>>>0>>0?B+1|0:B,I=B,B=UI(p,r,36),t=f,B=UI(p,r,30)^B,D=f^t,S=UI(p,r,25)^B,B=((e|h)&r|e&h)+(f^D)|0,I=((t=S+((a|n)&p|a&n)|0)>>>0>>0?B+1|0:B)+I|0,t=I=(D=Q+t|0)>>>0>>0?I+1|0:I,i[C+40>>2]=D,i[C+44>>2]=I,B=s+w|0,w=B=(s=Q+E|0)>>>0>>0?B+1|0:B,i[C+8>>2]=s,i[C+12>>2]=B,B=34416+(I=88|M)|0,E=i[(I=K=I+g|0)>>2],Q=i[B>>2]+E|0,I=i[B+4>>2]+i[I+4>>2]|0,B=k+(Q>>>0>>0?I+1|0:I)|0,B=(F^(F^N)&w)+(B=(I=Q+y|0)>>>0>>0?B+1|0:B)|0,B=(I=(Q=_^(_^c)&s)+I|0)>>>0>>0?B+1|0:B,Q=UI(s,w,50),E=f,Q=UI(s,w,46)^Q,E^=f,Q=(y=UI(s,w,23)^Q)+I|0,I=(f^E)+B|0,I=Q>>>0>>0?I+1|0:I,B=UI(D,t,36),E=f,B=UI(D,t,30)^B,y=f^E,S=UI(D,t,25)^B,B=((e|r)&t|e&r)+(f^y)|0,B=((E=S+((p|n)&D|p&n)|0)>>>0>>0?B+1|0:B)+I|0,y=B=(y=E)>>>0>(E=Q+E|0)>>>0?B+1|0:B,i[C+32>>2]=E,i[C+36>>2]=B,I=I+h|0,h=I=(B=a)>>>0>(a=Q+a|0)>>>0?I+1|0:I,i[C>>2]=a,i[C+4>>2]=I,B=34416+(I=96|M)|0,S=i[(I=v=I+g|0)>>2],Q=i[B>>2]+S|0,B=i[B+4>>2]+i[I+4>>2]|0,I=F+(Q>>>0>>0?B+1|0:B)|0,I=(B=Q+_|0)>>>0<_>>>0?I+1|0:I,Q=(_=c^(c^s)&a)+B|0,B=(N^(w^N)&h)+I|0,B=Q>>>0<_>>>0?B+1|0:B,I=UI(a,h,50),_=f,I=UI(a,h,46)^I,_^=f,F=Q,Q=UI(a,h,23)^I,B=(f^_)+B|0,k=B=(I=F+Q|0)>>>0>>0?B+1|0:B,Q=I,I=UI(E,y,36),_=f,I=UI(E,y,30)^I,S=f^_,F=UI(E,y,25)^I,I=((t|r)&y|t&r)+(f^S)|0,B=((_=F+((p|D)&E|p&D)|0)>>>0>>0?I+1|0:I)+B|0,_=B=(S=Q+_|0)>>>0<_>>>0?B+1|0:B,i[C+24>>2]=S,i[C+28>>2]=B,B=e+k|0,e=B=(n=Q+n|0)>>>0>>0?B+1|0:B,i[C+56>>2]=n,i[C+60>>2]=B,B=34416+(I=104|M)|0,k=i[(I=L=I+g|0)>>2],Q=i[B>>2]+k|0,I=i[B+4>>2]+i[I+4>>2]|0,B=N+(Q>>>0>>0?I+1|0:I)|0,B=(I=Q+c|0)>>>0>>0?B+1|0:B,Q=(c=s^(a^s)&n)+I|0,I=(w^(h^w)&e)+B|0,I=Q>>>0>>0?I+1|0:I,B=UI(n,e,50),c=f,B=UI(n,e,46)^B,c^=f,k=UI(n,e,23)^B,B=(f^c)+I|0,F=B=(Q=k+Q|0)>>>0>>0?B+1|0:B,I=B,B=UI(S,_,36),c=f,B=UI(S,_,30)^B,k=f^c,N=UI(S,_,25)^B,B=((t|y)&_|t&y)+(f^k)|0,I=((c=N+((E|D)&S|E&D)|0)>>>0>>0?B+1|0:B)+I|0,c=I=(k=Q+c|0)>>>0>>0?I+1|0:I,i[C+16>>2]=k,i[C+20>>2]=I,I=r+F|0,r=I=(p=Q+p|0)>>>0>>0?I+1|0:I,i[C+48>>2]=p,i[C+52>>2]=I,B=34416+(I=112|M)|0,F=i[(Q=N=I+g|0)>>2],I=i[B>>2]+F|0,B=i[B+4>>2]+i[Q+4>>2]|0,B=w+(I>>>0>>0?B+1|0:B)|0,B=(h^(e^h)&r)+(B=(I=I+s|0)>>>0>>0?B+1|0:B)|0,B=(I=(Q=a^(a^n)&p)+I|0)>>>0>>0?B+1|0:B,Q=UI(p,r,50),s=f,Q=UI(p,r,46)^Q,s^=f,Q=(w=UI(p,r,23)^Q)+I|0,I=(f^s)+B|0,F=I=Q>>>0>>0?I+1|0:I,B=I,I=UI(k,c,36),s=f,I=UI(k,c,30)^I,w=f^s,R=UI(k,c,25)^I,I=((_|y)&c|_&y)+(f^w)|0,B=((s=R+((E|S)&k|E&S)|0)>>>0>>0?I+1|0:I)+B|0,s=B=(w=Q+s|0)>>>0>>0?B+1|0:B,i[C+8>>2]=w,i[C+12>>2]=B,B=t+F|0,Q=B=(t=Q+D|0)>>>0>>0?B+1|0:B,i[C+40>>2]=t,i[C+44>>2]=B,B=34416+(I=120|M)|0,M=i[(I=D=I+g|0)>>2],F=i[B>>2]+M|0,B=i[B+4>>2]+i[I+4>>2]|0,I=h+(F>>>0>>0?B+1|0:B)|0,I=(e^(e^r)&Q)+(I=(B=a+F|0)>>>0>>0?I+1|0:I)|0,I=(B=(a=n^(p^n)&t)+B|0)>>>0>>0?I+1|0:I,a=UI(t,Q,50),e=f,a=UI(t,Q,46)^a,e^=f,Q=(a=UI(t,Q,23)^a)+B|0,B=(f^e)+I|0,B=Q>>>0>>0?B+1|0:B,a=Q,e=B,I=B,B=UI(w,s,36),t=f,B=UI(w,s,30)^B,r=f^t,h=UI(w,s,25)^B,B=((_|c)&s|_&c)+(f^r)|0,I=((t=h+((k|S)&w|k&S)|0)>>>0>>0?B+1|0:B)+I|0,I=(Q=Q+t|0)>>>0>>0?I+1|0:I,i[C>>2]=Q,i[C+4>>2]=I,B=e+y|0,B=(r=E)>>>0>(E=E+a|0)>>>0?B+1|0:B,i[C+32>>2]=E,i[C+36>>2]=B,64!=(0|P);)c=((P=P+16|0)<<3)+g|0,a=i[G>>2],_=i[G+4>>2],R=i[b>>2],e=I=i[b+4>>2],B=I,Q=I=i[N+4>>2],I=UI(S=i[N>>2],I,45),E=f,r=((63&Q)<<26|S>>>6)^(I=UI(S,Q,3)^I),I=(Q>>>6^(t=f^E))+B|0,B=((E=r+R|0)>>>0>>0?I+1|0:I)+_|0,B=(I=E+a|0)>>>0>>0?B+1|0:B,a=E=i[l+4>>2],E=UI(_=i[l>>2],E,63),t=f,E=((127&a)<<25|_>>>7)^UI(_,a,56)^E,B=(f^t^a>>>7)+B|0,E=B=E>>>0>(k=E+I|0)>>>0?B+1|0:B,i[c>>2]=k,i[c+4>>2]=B,_=(N=i[U>>2])+_|0,I=(c=i[U+4>>2])+a|0,B=_>>>0>>0?I+1|0:I,a=I=i[D+4>>2],I=UI(F=i[D>>2],I,45),t=f,r=_,_=((63&a)<<26|F>>>6)^UI(F,a,3)^I,B=(f^t^a>>>6)+B|0,_=_>>>0>(r=r+_|0)>>>0?B+1|0:B,B=UI(t=i[Y>>2],I=i[Y+4>>2],63),h=f,s=r,r=((127&I)<<25|t>>>7)^UI(t,I,56)^B,B=(f^h^I>>>7)+_|0,_=B=r>>>0>(w=s+r|0)>>>0?B+1|0:B,i[G+136>>2]=w,i[G+140>>2]=B,B=(U=i[K>>2])+t|0,I=(t=i[K+4>>2])+I|0,r=UI(k,E,45),h=f,r=(y=((63&E)<<26|k>>>6)^UI(k,E,3)^r)+B|0,B=(f^h^E>>>6)+(B>>>0>>0?I+1|0:I)|0,B=r>>>0>>0?B+1|0:B,h=I=i[u+4>>2],I=UI(y=i[u>>2],I,63),n=f,s=r,r=((127&h)<<25|y>>>7)^UI(y,h,56)^I,B=(f^n^h>>>7)+B|0,r=B=r>>>0>(M=s+r|0)>>>0?B+1|0:B,i[G+144>>2]=M,i[G+148>>2]=B,y=(l=i[v>>2])+y|0,I=(I=h)+(h=i[v+4>>2])|0,B=y>>>0>>0?I+1|0:I,I=UI(w,_,45),n=f,p=((63&_)<<26|w>>>6)^UI(w,_,3)^I,B=(f^n^_>>>6)+B|0,B=(y=p+y|0)>>>0

>>0?B+1|0:B,n=I=i[m+4>>2],I=UI(p=i[m>>2],I,63),D=f,s=y,y=((127&n)<<25|p>>>7)^UI(p,n,56)^I,B=(f^D^n>>>7)+B|0,y=B=y>>>0>(Y=s+y|0)>>>0?B+1|0:B,i[G+152>>2]=Y,i[G+156>>2]=B,I=(u=i[L>>2])+p|0,B=(B=n)+(n=i[L+4>>2])|0,p=UI(M,r,45),D=f,p=((63&r)<<26|M>>>6)^UI(M,r,3)^p,B=(f^D^r>>>6)+(I>>>0>>0?B+1|0:B)|0,p=(s=p+I|0)>>>0

>>0?B+1|0:B,B=UI(D=i[J>>2],I=i[J+4>>2],63),m=f,K=s,s=((127&I)<<25|D>>>7)^(B=UI(D,I,56)^B),B=(I>>>7^(J=f^m))+p|0,p=B=s>>>0>(m=K+s|0)>>>0?B+1|0:B,i[G+160>>2]=m,i[G+164>>2]=B,I=I+Q|0,I=(B=D+S|0)>>>0>>0?I+1|0:I,D=UI(Y,y,45),s=f,D=(J=((63&y)<<26|Y>>>6)^UI(Y,y,3)^D)+B|0,B=(f^s^y>>>6)+I|0,B=D>>>0>>0?B+1|0:B,s=i[H>>2],H=I=i[H+4>>2],I=UI(s,I,63),J=f,I=UI(s,H,56)^I,K=D,B=(H>>>7^(b=f^J))+B|0,D=B=(D=((127&H)<<25|s>>>7)^I)>>>0>(J=K+D|0)>>>0?B+1|0:B,i[G+168>>2]=J,i[G+172>>2]=B,I=a+H|0,I=(B=s+F|0)>>>0>>0?I+1|0:I,K=s=i[d+4>>2],s=UI(b=i[d>>2],s,63),H=f,s=(d=((127&K)<<25|b>>>7)^UI(b,K,56)^s)+B|0,B=(f^H^K>>>7)+I|0,I=s>>>0>>0?B+1|0:B,B=UI(m,p,45),H=f,B=UI(m,p,3)^B,d=f^H,H=s,I=(p>>>6^d)+I|0,s=I=(s=((63&p)<<26|m>>>6)^B)>>>0>(H=H+s|0)>>>0?I+1|0:I,i[G+176>>2]=H,i[G+180>>2]=I,v=i[x>>2],x=I=i[x+4>>2],d=I,I=UI(R,e,63),B=f,L=((127&e)<<25|R>>>7)^UI(R,e,56)^I,I=(f^B^e>>>7)+_|0,B=((w=L+w|0)>>>0>>0?I+1|0:I)+d|0,B=(I=w+v|0)>>>0>>0?B+1|0:B,_=UI(H,s,45),w=f,d=(_=((63&s)<<26|H>>>6)^UI(H,s,3)^_)+I|0,I=(f^w^s>>>6)+B|0,_=I=_>>>0>d>>>0?I+1|0:I,i[G+192>>2]=d,i[G+196>>2]=I,B=E+K|0,B=(I=k+b|0)>>>0>>0?B+1|0:B,w=UI(v,x,63),b=f,K=((127&x)<<25|v>>>7)^UI(v,x,56)^w,B=(f^b^x>>>7)+B|0,I=(w=K+I|0)>>>0>>0?B+1|0:B,B=UI(J,D,45),b=f,B=UI(J,D,3)^B,x=w,I=(D>>>6^(K=f^b))+I|0,w=I=(w=((63&D)<<26|J>>>6)^B)>>>0>(b=x+w|0)>>>0?I+1|0:I,i[G+184>>2]=b,i[G+188>>2]=I,I=UI(U,t,63),B=f,I=((127&t)<<25|U>>>7)^UI(U,t,56)^I,B=(f^B^t>>>7)+c|0,I=y+(I>>>0>(K=I+N|0)>>>0?B+1|0:B)|0,I=(B=Y+K|0)>>>0>>0?I+1|0:I,y=UI(d,_,45),Y=f,y=UI(d,_,3)^y,K=f^Y,Y=(y^=(63&_)<<26|d>>>6)+B|0,B=(_>>>6^K)+I|0,y=B=y>>>0>Y>>>0?B+1|0:B,i[G+208>>2]=Y,i[G+212>>2]=B,I=UI(N,c,63),B=f,K=UI(N,c,56)^I,B=((I=c>>>7|0)^f^B)+e|0,I=r+((c=(N=K^((127&c)<<25|N>>>7))+R|0)>>>0>>0?B+1|0:B)|0,I=(B=c+M|0)>>>0>>0?I+1|0:I,e=UI(b,w,45),c=f,r=(e=((63&w)<<26|b>>>6)^UI(b,w,3)^e)+B|0,B=(f^c^w>>>6)+I|0,e=B=e>>>0>r>>>0?B+1|0:B,i[G+200>>2]=r,i[G+204>>2]=B,I=UI(u,n,63),B=f,N=((127&n)<<25|u>>>7)^UI(u,n,56)^I,I=(f^B^n>>>7)+h|0,B=D+((c=N+l|0)>>>0>>0?I+1|0:I)|0,B=(I=c+J|0)>>>0>>0?B+1|0:B,c=UI(Y,y,45),D=f,N=I,I=y>>>6|0,c=((63&y)<<26|Y>>>6)^UI(Y,y,3)^c,B=(I^f^D)+B|0,c=B=c>>>0>(y=N+c|0)>>>0?B+1|0:B,i[G+224>>2]=y,i[G+228>>2]=B,I=UI(l,h,63),B=f,I=UI(l,h,56)^I,D=f^B,N=((127&h)<<25|l>>>7)^I,I=((B=h>>>7|0)^D)+t|0,B=p+((h=N+U|0)>>>0>>0?I+1|0:I)|0,B=(I=h+m|0)>>>0>>0?B+1|0:B,t=UI(r,e,45),h=f,D=I,I=e>>>6|0,e=((63&e)<<26|r>>>6)^UI(r,e,3)^t,I=(I^f^h)+B|0,e=I=(t=D+e|0)>>>0>>0?I+1|0:I,i[G+216>>2]=t,i[G+220>>2]=I,I=UI(F,a,63),B=f,h=((127&a)<<25|F>>>7)^UI(F,a,56)^I,B=(f^B^a>>>7)+Q|0,B=w+((I=h+S|0)>>>0>>0?B+1|0:B)|0,I=(r=I+b|0)>>>0>>0?B+1|0:B,B=UI(y,c,45),h=f,D=r,r=UI(y,c,3)^B,B=c>>>6|0,c=D+(r^=(63&c)<<26|y>>>6)|0,I=(B^f^h)+I|0,i[G+240>>2]=c,i[G+244>>2]=c>>>0>>0?I+1|0:I,I=UI(S,Q,63),B=f,I=UI(S,Q,56)^I,c=f^B,B=((B=Q>>>7|0)^c)+n|0,I=s+((I^=(127&Q)<<25|S>>>7)>>>0>(Q=I+u|0)>>>0?B+1|0:B)|0,I=(B=Q+H|0)>>>0>>0?I+1|0:I,Q=UI(t,e,45),c=f,r=B,B=e>>>6|0,Q=((63&e)<<26|t>>>6)^UI(t,e,3)^Q,B=(B^f^c)+I|0,Q=B=Q>>>0>(e=r+Q|0)>>>0?B+1|0:B,i[G+232>>2]=e,i[G+236>>2]=B,I=UI(k,E,63),B=f,r=UI(k,E,56)^I,B=((I=E>>>7|0)^f^B)+a|0,I=_+((E=(c=r^((127&E)<<25|k>>>7))+F|0)>>>0>>0?B+1|0:B)|0,I=(B=E+d|0)>>>0>>0?I+1|0:I,E=UI(e,Q,45),a=f,r=B,B=Q>>>6|0,Q=r+(E=((63&Q)<<26|e>>>6)^UI(e,Q,3)^E)|0,B=(B^f^a)+I|0,i[G+248>>2]=Q,i[G+252>>2]=Q>>>0>>0?B+1|0:B;I=I+i[A+4>>2]|0,I=(g=Q+i[A>>2]|0)>>>0>>0?I+1|0:I,i[A>>2]=g,i[A+4>>2]=I,B=i[A+12>>2]+i[C+12>>2]|0,I=(g=i[C+8>>2])+i[A+8>>2]|0,i[A+8>>2]=I,i[A+12>>2]=I>>>0>>0?B+1|0:B,B=i[A+20>>2]+i[C+20>>2]|0,I=(g=i[C+16>>2])+i[A+16>>2]|0,i[A+16>>2]=I,i[A+20>>2]=I>>>0>>0?B+1|0:B,I=i[A+28>>2]+i[C+28>>2]|0,g=(B=i[C+24>>2])+i[A+24>>2]|0,i[A+24>>2]=g,i[A+28>>2]=g>>>0>>0?I+1|0:I,B=i[A+36>>2]+i[C+36>>2]|0,I=(g=i[C+32>>2])+i[A+32>>2]|0,i[A+32>>2]=I,i[A+36>>2]=I>>>0>>0?B+1|0:B,I=i[A+44>>2]+i[C+44>>2]|0,g=(B=i[C+40>>2])+i[A+40>>2]|0,i[A+40>>2]=g,i[A+44>>2]=g>>>0>>0?I+1|0:I,B=i[A+52>>2]+i[C+52>>2]|0,I=(g=i[C+48>>2])+i[A+48>>2]|0,i[A+48>>2]=I,i[A+52>>2]=I>>>0>>0?B+1|0:B,B=i[A+60>>2]+i[C+60>>2]|0,I=(g=i[C+56>>2])+i[A+56>>2]|0,i[A+56>>2]=I,i[A+60>>2]=I>>>0>>0?B+1|0:B}function F(A,I){var g,C=0,B=0,Q=0,E=0,c=0,t=0,r=0,e=0,y=0,p=0,w=0,n=0,k=0,F=0,S=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0,BA=0,QA=0,iA=0,oA=0,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0;if(s=g=s-4096|0,A){A:{I:{if(2==(0|(E=i[A+36>>2]))){if(oA=i[A+4>>2],(IA=i[I>>2])|(V=o[I+8|0])>>>0>=2)break I;IA=0}else V=o[I+8|0],oA=i[A+4>>2],IA=i[I>>2];if(bg(g+3072|0,0,1024),bg(g+2104|0,0,968),i[g+2048>>2]=IA,i[g+2052>>2]=0,u=i[I+4>>2],i[g+2064>>2]=V,i[g+2068>>2]=0,i[g+2056>>2]=u,i[g+2060>>2]=0,i[g+2072>>2]=i[A+16>>2],i[g+2076>>2]=0,u=i[A+8>>2],i[g+2088>>2]=E,i[g+2092>>2]=0,i[g+2080>>2]=u,i[g+2084>>2]=0,!i[A+20>>2])break A;for(u=0;(S=127&r)||(u=(z=z+1|0)?u:u+1|0,i[g+2096>>2]=z,i[g+2100>>2]=u,E=bg(g,0,1024),bg(E+1024|0,0,1024),N(C=E+3072|0,E+2048|0,E),N(C,E,E+1024|0)),S=i[4+(E=(g+1024|0)+(S<<3)|0)>>2],i[(C=(r<<3)+oA|0)>>2]=i[E>>2],i[C+4>>2]=S,(S=i[A+20>>2])>>>0>(r=r+1|0)>>>0;);break A}S=i[A+20>>2],cA=1}if(!((u=(aA=!(V|IA))<<1)>>>0>=S>>>0))for(E=i[A+24>>2],iA=i[I+4>>2],r=(z=(a(E,iA)+u|0)+a(S,V)|0)+((z>>>0)%(E>>>0)|0?-1:E-1|0)|0,tA=V+1|0;;){C=i[A+28>>2],EA=1==((z>>>0)%((E=i[A+24>>2])>>>0)|0)?z-1|0:r,r=cA?i[i[A>>2]+4>>2]+(EA<<10)|0:(u<<3)+oA|0,B=i[r>>2],r=i[r+4>>2],i[I+12>>2]=u,C=aA?iA:(r>>>0)%(C>>>0)|0;A:if(IA)r=E+((0|C)==(0|iA)?~S+u|0:(u?0:-1)-S|0)|0,Q=0,3!=(0|V)&&(Q=a(S,tA));else{if(!V){r=u-1|0,Q=0;break A}if(r=a(S,V),(0|C)==(0|iA)){r=(r+u|0)-1|0,Q=0;break A}r=r-!u|0,Q=0}S=Q,c=(p=i[i[A>>2]+4>>2])+(a(C,E)<<10)|0,y=(C=r-1|0)>>>0>(Q=C+S|0)>>>0,Ig(B,0,B,0),Ig(r,0,f,0),S=Q-(r=f)|0,C=0,e=0;A:{I:{g:{C:{B:{Q:{i:{o:{E:{a:{if(r=y-(Q>>>0>>0)|0){if(!E)break a;break E}h=S-a((S>>>0)/(E>>>0)|0,E)|0,D=0,f=0;break A}if(!S)break o;break i}if(!((B=E-1|0)&E))break Q;t=0-(B=(_(E)+33|0)-_(r)|0)|0;break C}h=0,D=r,f=0;break A}if((C=32-_(r)|0)>>>0<31)break B;break g}if(h=B&S,D=0,1==(0|E))break I;E=31&(S=FC(E)),(63&S)>>>0>=32?B=r>>>E|0:(C=r>>>E|0,B=0),f=C;break A}B=C+1|0,t=63-C|0}if(Q=31&(C=63&B),C>>>0>=32?(C=0,y=r>>>Q|0):(C=r>>>Q|0,y=((1<>>Q),Q=31&(t&=63),t>>>0>=32?(r=S<>>32-Q|r<>>31,y=(C=y<<1|r>>>31)-(b=E&(Q=F-(d+(C>>>0>t>>>0)|0)>>31))|0,C=d-(C>>>0>>0)|0,r=r<<1|S>>>31,S=e|S<<1,e=1&Q,B=B-1|0;);h=y,D=C,f=r<<1|S>>>31;break A}h=S,D=r,r=0}f=r}if(f=D,r=(h<<10)+c|0,E=p+(EA<<10)|0,_A=p+(z<<10)|0,IA)N(E,r,_A);else{for(Ng(g+3072|0,r,1024),r=0;Q=i[(B=(S=r<<3)+(C=g+3072|0)|0)>>2],p=i[(y=E+S|0)>>2],y=i[B+4>>2]^i[y+4>>2],i[B>>2]=Q^p,i[B+4>>2]=y,y=i[(B=(Q=8|S)+C|0)>>2],p=i[(Q=E+Q|0)>>2],Q=i[B+4>>2]^i[Q+4>>2],i[B>>2]=y^p,i[B+4>>2]=Q,y=i[(B=(Q=16|S)+C|0)>>2],p=i[(Q=E+Q|0)>>2],Q=i[B+4>>2]^i[Q+4>>2],i[B>>2]=y^p,i[B+4>>2]=Q,Q=i[(S=(B=24|S)+C|0)>>2],y=i[(B=B+E|0)>>2],B=i[S+4>>2]^i[B+4>>2],i[S>>2]=Q^y,i[S+4>>2]=B,128!=(0|(r=r+4|0)););for(Ng(g+2048|0,C,1024),S=0,r=0;Q=(y=i[56+(E=(g+3072|0)+(r<<7)|0)>>2])+(B=i[E+24>>2])|0,p=(F=i[E+60>>2])+(C=i[E+28>>2])|0,e=Ig(B<<1&-2,1&(C<<1|B>>>31),y,0),B=f+(B>>>0>Q>>>0?p+1|0:p)|0,p=(C=e+Q|0)>>>0>>0?B+1|0:B,c=(e=UI(C^i[E+120>>2],p^i[E+124>>2],32))+(B=i[E+88>>2])|0,t=(k=f)+(Q=i[E+92>>2])|0,d=Ig(e,0,B<<1&-2,1&(Q<<1|B>>>31)),B=f+(B>>>0>c>>>0?t+1|0:t)|0,b=UI(y^(Q=d+c|0),F^(v=Q>>>0>>0?B+1|0:B),40),w=1+(B=p+(BA=f)|0)|0,t=B,y=(B=C+b|0)>>>0>>0?w:t,d=(C=Ig(b,0,C<<1&-2,1&(p<<1|C>>>31)))+B|0,B=f+y|0,k=UI(d^e,k^(X=C>>>0>d>>>0?B+1|0:B),48),Y=w=f,y=(n=i[E+44>>2])+(C=i[E+12>>2])|0,e=(p=i[E+40>>2])+(B=i[E+8>>2])|0,c=Ig(B<<1&-2,1&(C<<1|B>>>31),p,0),B=f+(B>>>0>e>>>0?y+1|0:y)|0,c=(C=e+c|0)>>>0>>0?B+1|0:B,e=(t=UI(C^i[E+104>>2],c^i[E+108>>2],32))+(y=i[E+72>>2])|0,F=(M=f)+(B=i[E+76>>2])|0,G=Ig(t,0,y<<1&-2,1&(B<<1|y>>>31)),y=f+(e>>>0>>0?F+1|0:F)|0,e=UI(H=p^(B=G+e|0),n^(p=B>>>0>>0?y+1|0:y),40),G=1+(y=c+(F=f)|0)|0,n=y,n=(y=C+e|0)>>>0>>0?G:n,C=Ig(e,0,C<<1&-2,1&(c<<1|C>>>31)),c=f+n|0,n=UI((y=C+y|0)^t,M^(O=C>>>0>y>>>0?c+1|0:c),48),G=1+(C=p+(QA=f)|0)|0,t=C,c=(C=B+n|0)>>>0>>0?G:t,p=C+(B=Ig(n,0,B<<1&-2,1&(p<<1|B>>>31)))|0,C=f+c|0,M=UI(e^p,F^(Z=B>>>0>p>>>0?C+1|0:C),1),gA=H=f,e=(J=i[E+36>>2])+(C=i[E+4>>2])|0,t=(c=i[E+32>>2])+(B=i[E>>2])|0,F=Ig(B<<1&-2,1&(C<<1|B>>>31),c,0),B=f+(B>>>0>t>>>0?e+1|0:e)|0,t=(C=t+F|0)>>>0>>0?B+1|0:B,F=(q=UI(C^i[E+96>>2],t^i[E+100>>2],32))+(B=i[(e=j=E- -64|0)>>2])|0,G=($=f)+(e=i[e+4>>2])|0,R=Ig(q,0,B<<1&-2,1&(e<<1|B>>>31)),B=f+(B>>>0>F>>>0?G+1|0:G)|0,G=UI(c^(e=R+F|0),J^(R=e>>>0>>0?B+1|0:B),40),F=1+(B=t+(AA=f)|0)|0,c=B,c=(B=C+G|0)>>>0>>0?F:c,C=B+(t=Ig(G,0,C<<1&-2,1&(t<<1|C>>>31)))|0,B=f+c|0,c=1+(B=(W=C>>>0>>0?B+1|0:B)+H|0)|0,t=B,t=(B=C+M|0)>>>0>>0?c:t,c=B+(F=Ig(M,0,C<<1&-2,1&(W<<1|C>>>31)))|0,B=f+t|0,w=UI(c^k,(l=c>>>0>>0?B+1|0:B)^w,32),L=f,F=(K=i[E+52>>2])+(B=i[E+20>>2])|0,J=(H=i[E+48>>2])+(t=i[E+16>>2])|0,m=Ig(t<<1&-2,1&(B<<1|t>>>31),H,0),t=f+(t>>>0>J>>>0?F+1|0:F)|0,J=(B=J+m|0)>>>0>>0?t+1|0:t,P=(m=UI(B^i[E+112>>2],J^i[E+116>>2],32))+(F=i[E+80>>2])|0,x=(CA=f)+(t=i[E+84>>2])|0,U=Ig(m,0,F<<1&-2,1&(t<<1|F>>>31)),F=f+(F>>>0>P>>>0?x+1|0:x)|0,H=UI(H^(t=U+P|0),K^(P=t>>>0>>0?F+1|0:F),40),U=1+(F=J+(K=f)|0)|0,x=F,x=(F=B+H|0)>>>0>>0?U:x,B=Ig(H,0,B<<1&-2,1&(J<<1|B>>>31)),J=f+x|0,J=UI(U=(F=B+F|0)^m,CA^(m=B>>>0>F>>>0?J+1|0:J),48),U=1+(B=P+(CA=f)|0)|0,x=B,x=(B=t+J|0)>>>0>>0?U:x,t=Ig(J,0,t<<1&-2,1&(P<<1|t>>>31)),P=f+x|0,U=1+(t=(P=(B=t+B|0)>>>0>>0?P+1|0:P)+L|0)|0,x=t,x=(t=B+w|0)>>>0>>0?U:x,T=M^(t=(U=Ig(w,0,B<<1&-2,1&(P<<1|B>>>31)))+t|0),M=f+x|0,M=UI(T,gA^(x=t>>>0>>0?M+1|0:M),40),rA=1+(U=l+(gA=f)|0)|0,T=U,T=(U=c+M|0)>>>0>>0?rA:T,c=(l=Ig(M,0,c<<1&-2,1&(l<<1|c>>>31)))+U|0,i[E>>2]=c,U=f+T|0,l=c>>>0>>0?U+1|0:U,i[E+4>>2]=l,c=UI(c^w,l^L,48),i[E+120>>2]=c,w=f,i[E+124>>2]=w,T=1+(w=w+x|0)|0,U=w,l=(w=c+t|0)>>>0>>0?T:U,c=(t=Ig(c,0,t<<1&-2,1&(x<<1|t>>>31)))+w|0,i[E+80>>2]=c,w=f+l|0,t=c>>>0>>0?w+1|0:w,i[E+84>>2]=t,eA=E,yA=UI(c^M,t^gA,1),i[eA+40>>2]=yA,i[E+44>>2]=f,c=UI(B^H,K^P,1),w=1+(B=O+(H=f)|0)|0,t=B,t=(B=c+y|0)>>>0>>0?w:t,B=B+(M=Ig(c,0,y<<1&-2,1&(O<<1|y>>>31)))|0,y=f+t|0,t=UI(C^q,W^$,48),y=UI(t^B,(M=B>>>0>>0?y+1|0:y)^(O=f),32),q=w=f,K=1+(C=v+Y|0)|0,Y=C,W=(C=Q+k|0)>>>0>>0?K:Y,Q=Ig(k,0,Q<<1&-2,1&(v<<1|Q>>>31)),k=f+W|0,Y=1+(Q=(k=(C=Q+C|0)>>>0>>0?k+1|0:k)+w|0)|0,w=Q,w=(Q=C+y|0)>>>0>>0?Y:w,Y=c^(Q=(v=Ig(y,0,C<<1&-2,1&(k<<1|C>>>31)))+Q|0),c=f+w|0,c=UI(Y,H^(w=Q>>>0>>0?c+1|0:c),40),K=1+(v=M+(H=f)|0)|0,Y=v,W=(v=B+c|0)>>>0>>0?K:Y,Y=y^(B=(M=Ig(c,0,B<<1&-2,1&(M<<1|B>>>31)))+v|0),y=f+W|0,y=UI(Y,q^(M=B>>>0>>0?y+1|0:y),48),i[E+96>>2]=y,v=f,i[E+100>>2]=v,i[E+8>>2]=B,i[E+12>>2]=M,K=1+(B=w+v|0)|0,Y=B,M=(B=Q+y|0)>>>0>>0?K:Y,Q=Ig(y,0,Q<<1&-2,1&(w<<1|Q>>>31)),y=f+M|0,eA=E,yA=UI((B=Q+B|0)^c,H^(Q=B>>>0>>0?y+1|0:y),1),i[eA+48>>2]=yA,i[E+52>>2]=f,i[E+88>>2]=B,i[E+92>>2]=Q,y=UI(C^b,k^BA,1),Q=1+(C=m+(b=f)|0)|0,B=C,Q=(C=y+F|0)>>>0>>0?Q:B,B=C+(c=Ig(y,0,F<<1&-2,1&(m<<1|F>>>31)))|0,C=f+Q|0,c=UI(B^n,QA^(F=B>>>0>>0?C+1|0:C),32),k=Q=f,w=1+(C=R+O|0)|0,Q=C,n=(C=e+t|0)>>>0>>0?w:Q,e=Ig(t,0,e<<1&-2,1&(R<<1|e>>>31)),Q=f+n|0,w=1+(Q=k+(e=(C=e+C|0)>>>0>>0?Q+1|0:Q)|0)|0,t=Q,t=(Q=C+c|0)>>>0>>0?w:t,w=y^(Q=Q+(n=Ig(c,0,C<<1&-2,1&(e<<1|C>>>31)))|0),y=f+t|0,y=UI(w,b^(t=Q>>>0>>0?y+1|0:y),40),Y=1+(n=F+(b=f)|0)|0,w=n,M=(n=B+y|0)>>>0>>0?Y:w,B=(F=Ig(y,0,B<<1&-2,1&(F<<1|B>>>31)))+n|0,i[E+16>>2]=B,n=f+M|0,F=B>>>0>>0?n+1|0:n,i[E+20>>2]=F,B=UI(B^c,F^k,48),i[E+104>>2]=B,c=f,i[E+108>>2]=c,w=1+(c=c+t|0)|0,k=c,F=(c=B+Q|0)>>>0>>0?w:k,Q=(B=Ig(B,0,Q<<1&-2,1&(t<<1|Q>>>31)))+c|0,c=f+F|0,F=B=B>>>0>Q>>>0?c+1|0:c,i[j>>2]=Q,i[j+4>>2]=B,B=(e=UI(C^G,e^AA,1))+d|0,c=(k=f)+X|0,C=(t=Ig(d<<1&-2,1&(X<<1|d>>>31),e,0))+B|0,B=f+(B>>>0>>0?c+1|0:c)|0,c=UI(C^J,CA^(t=C>>>0>>0?B+1|0:B),32),n=1+(B=Z+(d=f)|0)|0,w=B,n=(B=c+p|0)>>>0

>>0?n:w,w=e^(B=(p=Ig(c,0,p<<1&-2,1&(Z<<1|p>>>31)))+B|0),e=f+n|0,p=UI(w,k^(e=B>>>0

>>0?e+1|0:e),40),G=1+(n=t+(k=f)|0)|0,w=n,M=(n=C+p|0)>>>0>>0?G:w,w=c^(t=(C=Ig(p,0,C<<1&-2,1&(t<<1|C>>>31)))+n|0),c=f+M|0,C=UI(w,d^(c=C>>>0>t>>>0?c+1|0:c),48),G=1+(n=e+(d=f)|0)|0,w=n,M=(n=C+B|0)>>>0>>0?G:w,B=(e=Ig(C,0,B<<1&-2,1&(e<<1|B>>>31)))+n|0,i[E+72>>2]=B,n=f+M|0,e=B>>>0>>0?n+1|0:n,i[E+76>>2]=e,i[E+112>>2]=C,i[E+116>>2]=d,i[E+24>>2]=t,i[E+28>>2]=c,eA=E,yA=UI(Q^y,F^b,1),i[eA+56>>2]=yA,i[E+60>>2]=f,eA=E,yA=UI(B^p,e^k,1),i[eA+32>>2]=yA,i[E+36>>2]=f,8!=(0|(r=r+1|0)););for(;B=(Q=i[392+(E=(g+3072|0)+(S<<4)|0)>>2])+(C=i[E+136>>2])|0,y=(t=i[E+396>>2])+(r=i[E+140>>2])|0,p=Ig(C<<1&-2,1&(r<<1|C>>>31),Q,0),C=f+(C>>>0>B>>>0?y+1|0:y)|0,y=(r=p+B|0)>>>0

>>0?C+1|0:C,e=(p=UI(r^i[E+904>>2],y^i[E+908>>2],32))+(C=i[E+648>>2])|0,c=(b=f)+(B=i[E+652>>2])|0,F=Ig(p,0,C<<1&-2,1&(B<<1|C>>>31)),C=f+(C>>>0>e>>>0?c+1|0:c)|0,d=UI(Q^(B=F+e|0),t^(J=B>>>0>>0?C+1|0:C),40),t=1+(C=y+(P=f)|0)|0,Q=C,Q=(C=r+d|0)>>>0>>0?t:Q,F=(r=Ig(d,0,r<<1&-2,1&(y<<1|r>>>31)))+C|0,C=f+Q|0,b=UI(F^p,b^(v=r>>>0>F>>>0?C+1|0:C),48),x=G=f,Q=(k=i[E+268>>2])+(r=i[E+12>>2])|0,p=(y=i[E+264>>2])+(C=i[E+8>>2])|0,e=Ig(C<<1&-2,1&(r<<1|C>>>31),y,0),C=f+(C>>>0>p>>>0?Q+1|0:Q)|0,e=(r=p+e|0)>>>0>>0?C+1|0:C,p=(c=UI(r^i[E+776>>2],e^i[E+780>>2],32))+(Q=i[E+520>>2])|0,t=(n=f)+(C=i[E+524>>2])|0,M=Ig(c,0,Q<<1&-2,1&(C<<1|Q>>>31)),Q=f+(Q>>>0>p>>>0?t+1|0:t)|0,p=UI(w=y^(C=M+p|0),k^(y=C>>>0>>0?Q+1|0:Q),40),w=1+(Q=e+(t=f)|0)|0,k=Q,k=(Q=r+p|0)>>>0>>0?w:k,r=Ig(p,0,r<<1&-2,1&(e<<1|r>>>31)),e=f+k|0,k=UI((Q=r+Q|0)^c,n^(X=Q>>>0>>0?e+1|0:e),48),n=1+(r=y+(BA=f)|0)|0,w=r,e=(r=C+k|0)>>>0>>0?n:w,y=r+(C=Ig(k,0,C<<1&-2,1&(y<<1|C>>>31)))|0,r=f+e|0,n=UI(p^y,t^(O=C>>>0>y>>>0?r+1|0:r),1),Y=w=f,p=(H=i[E+260>>2])+(r=i[E+4>>2])|0,c=(e=i[E+256>>2])+(C=i[E>>2])|0,t=Ig(C<<1&-2,1&(r<<1|C>>>31),e,0),C=f+(C>>>0>c>>>0?p+1|0:p)|0,c=(r=c+t|0)>>>0>>0?C+1|0:C,t=(Z=UI(r^i[E+768>>2],c^i[E+772>>2],32))+(C=i[E+512>>2])|0,M=(QA=f)+(p=i[E+516>>2])|0,q=Ig(Z,0,C<<1&-2,1&(p<<1|C>>>31)),C=f+(C>>>0>t>>>0?M+1|0:M)|0,M=UI(e^(p=q+t|0),H^(q=p>>>0>>0?C+1|0:C),40),e=1+(C=c+(gA=f)|0)|0,t=C,e=(C=r+M|0)>>>0>>0?e:t,r=C+(c=Ig(M,0,r<<1&-2,1&(c<<1|r>>>31)))|0,C=f+e|0,w=1+(C=(j=r>>>0>>0?C+1|0:C)+w|0)|0,t=C,c=(C=r+n|0)>>>0>>0?w:t,e=C+(t=Ig(n,0,r<<1&-2,1&(j<<1|r>>>31)))|0,C=f+c|0,G=UI(e^b,(R=e>>>0>>0?C+1|0:C)^G,32),W=f,t=($=i[E+388>>2])+(C=i[E+132>>2])|0,H=(w=i[E+384>>2])+(c=i[E+128>>2])|0,l=Ig(c<<1&-2,1&(C<<1|c>>>31),w,0),c=f+(c>>>0>H>>>0?t+1|0:t)|0,H=(C=H+l|0)>>>0>>0?c+1|0:c,L=(l=UI(C^i[E+896>>2],H^i[E+900>>2],32))+(t=i[E+640>>2])|0,m=(AA=f)+(c=i[E+644>>2])|0,K=Ig(l,0,t<<1&-2,1&(c<<1|t>>>31)),t=f+(t>>>0>L>>>0?m+1|0:m)|0,w=UI(w^(c=K+L|0),$^(L=c>>>0>>0?t+1|0:t),40),U=1+(t=H+($=f)|0)|0,K=t,m=(t=C+w|0)>>>0>>0?U:K,C=Ig(w,0,C<<1&-2,1&(H<<1|C>>>31)),H=f+m|0,H=UI(K=(t=C+t|0)^l,AA^(l=C>>>0>t>>>0?H+1|0:H),48),U=1+(C=L+(AA=f)|0)|0,K=C,m=(C=c+H|0)>>>0>>0?U:K,c=Ig(H,0,c<<1&-2,1&(L<<1|c>>>31)),L=f+m|0,U=1+(c=(L=(C=c+C|0)>>>0>>0?L+1|0:L)+W|0)|0,K=c,m=(c=C+G|0)>>>0>>0?U:K,U=n^(c=(K=Ig(G,0,C<<1&-2,1&(L<<1|C>>>31)))+c|0),n=f+m|0,n=UI(U,Y^(m=c>>>0>>0?n+1|0:n),40),T=1+(K=R+(Y=f)|0)|0,U=K,CA=(K=e+n|0)>>>0>>0?T:U,e=(R=Ig(n,0,e<<1&-2,1&(R<<1|e>>>31)))+K|0,i[E>>2]=e,K=f+CA|0,R=e>>>0>>0?K+1|0:K,i[E+4>>2]=R,e=UI(e^G,R^W,48),i[E+904>>2]=e,G=f,i[E+908>>2]=G,U=1+(G=G+m|0)|0,K=G,R=(G=c+e|0)>>>0>>0?U:K,e=(c=Ig(e,0,c<<1&-2,1&(m<<1|c>>>31)))+G|0,i[E+640>>2]=e,G=f+R|0,c=c>>>0>e>>>0?G+1|0:G,i[E+644>>2]=c,eA=E,yA=UI(e^n,c^Y,1),i[eA+264>>2]=yA,i[E+268>>2]=f,e=UI(C^w,L^$,1),G=1+(C=X+(w=f)|0)|0,n=C,c=(C=Q+e|0)>>>0>>0?G:n,C=C+(n=Ig(e,0,Q<<1&-2,1&(X<<1|Q>>>31)))|0,Q=f+c|0,c=UI(r^Z,j^QA,48),Q=UI(c^C,(n=C>>>0>>0?Q+1|0:Q)^(X=f),32),Z=G=f,K=1+(r=J+x|0)|0,Y=r,j=(r=B+b|0)>>>0>>0?K:Y,B=Ig(b,0,B<<1&-2,1&(J<<1|B>>>31)),b=f+j|0,Y=1+(B=(b=B>>>0>(r=B+r|0)>>>0?b+1|0:b)+G|0)|0,G=B,G=(B=Q+r|0)>>>0>>0?Y:G,Y=e^(B=(J=Ig(Q,0,r<<1&-2,1&(b<<1|r>>>31)))+B|0),e=f+G|0,e=UI(Y,w^(G=B>>>0>>0?e+1|0:e),40),K=1+(J=n+(w=f)|0)|0,Y=J,j=(J=C+e|0)>>>0>>0?K:Y,Y=Q^(C=(n=Ig(e,0,C<<1&-2,1&(n<<1|C>>>31)))+J|0),Q=f+j|0,Q=UI(Y,Z^(n=C>>>0>>0?Q+1|0:Q),48),i[E+768>>2]=Q,J=f,i[E+772>>2]=J,i[E+8>>2]=C,i[E+12>>2]=n,Y=1+(C=G+J|0)|0,n=C,n=(C=B+Q|0)>>>0>>0?Y:n,B=Ig(Q,0,B<<1&-2,1&(G<<1|B>>>31)),Q=f+n|0,eA=E,yA=UI((C=B+C|0)^e,w^(B=C>>>0>>0?Q+1|0:Q),1),i[eA+384>>2]=yA,i[E+388>>2]=f,i[E+648>>2]=C,i[E+652>>2]=B,Q=UI(r^d,b^P,1),B=1+(r=l+(d=f)|0)|0,C=r,B=(r=Q+t|0)>>>0>>0?B:C,C=r+(e=Ig(Q,0,t<<1&-2,1&(l<<1|t>>>31)))|0,r=f+B|0,e=UI(C^k,BA^(t=C>>>0>>0?r+1|0:r),32),b=B=f,k=1+(r=q+X|0)|0,B=r,k=(r=c+p|0)>>>0

>>0?k:B,p=Ig(c,0,p<<1&-2,1&(q<<1|p>>>31)),B=f+k|0,w=1+(B=b+(p=(r=p+r|0)>>>0

>>0?B+1|0:B)|0)|0,k=B,c=(B=r+e|0)>>>0>>0?w:k,w=Q^(B=B+(k=Ig(e,0,r<<1&-2,1&(p<<1|r>>>31)))|0),Q=f+c|0,Q=UI(w,d^(c=B>>>0>>0?Q+1|0:Q),40),n=1+(k=t+(d=f)|0)|0,w=k,n=(k=C+Q|0)>>>0>>0?n:w,C=(t=Ig(Q,0,C<<1&-2,1&(t<<1|C>>>31)))+k|0,i[E+128>>2]=C,k=f+n|0,t=C>>>0>>0?k+1|0:k,i[E+132>>2]=t,C=UI(C^e,t^b,48),i[E+776>>2]=C,e=f,i[E+780>>2]=e,k=1+(e=c+e|0)|0,t=e,t=(e=C+B|0)>>>0>>0?k:t,B=(C=Ig(C,0,B<<1&-2,1&(c<<1|B>>>31)))+e|0,e=f+t|0,t=C=C>>>0>B>>>0?e+1|0:e,i[E+512>>2]=B,i[E+516>>2]=C,C=(p=UI(r^M,p^gA,1))+F|0,e=(b=f)+v|0,r=(c=Ig(F<<1&-2,1&(v<<1|F>>>31),p,0))+C|0,C=f+(C>>>0

>>0?e+1|0:e)|0,e=UI(r^H,AA^(c=r>>>0>>0?C+1|0:C),32),w=1+(C=O+(F=f)|0)|0,k=C,k=(C=e+y|0)>>>0>>0?w:k,w=p^(C=(y=Ig(e,0,y<<1&-2,1&(O<<1|y>>>31)))+C|0),p=f+k|0,y=UI(w,b^(p=C>>>0>>0?p+1|0:p),40),n=1+(k=c+(b=f)|0)|0,w=k,n=(k=r+y|0)>>>0>>0?n:w,k=e^(c=(r=Ig(y,0,r<<1&-2,1&(c<<1|r>>>31)))+k|0),e=f+n|0,r=UI(k,F^(e=r>>>0>c>>>0?e+1|0:e),48),n=1+(k=p+(F=f)|0)|0,w=k,n=(k=C+r|0)>>>0>>0?n:w,C=(p=Ig(r,0,C<<1&-2,1&(p<<1|C>>>31)))+k|0,i[E+520>>2]=C,k=f+n|0,p=C>>>0

>>0?k+1|0:k,i[E+524>>2]=p,i[E+896>>2]=r,i[E+900>>2]=F,i[E+136>>2]=c,i[E+140>>2]=e,eA=E,yA=UI(B^Q,t^d,1),i[eA+392>>2]=yA,i[E+396>>2]=f,eA=E,yA=UI(C^y,p^b,1),i[eA+256>>2]=yA,i[E+260>>2]=f,8!=(0|(S=S+1|0)););for(E=Ng(_A,g+2048|0,1024),r=0;Q=i[(C=(S=r<<3)+E|0)>>2],p=i[(y=(B=g+3072|0)+S|0)>>2],y=i[C+4>>2]^i[y+4>>2],i[C>>2]=Q^p,i[C+4>>2]=y,y=i[(C=(Q=8|S)+E|0)>>2],p=i[(Q=B+Q|0)>>2],Q=i[C+4>>2]^i[Q+4>>2],i[C>>2]=y^p,i[C+4>>2]=Q,y=i[(C=(Q=16|S)+E|0)>>2],p=i[(Q=B+Q|0)>>2],Q=i[C+4>>2]^i[Q+4>>2],i[C>>2]=y^p,i[C+4>>2]=Q,Q=i[(S=(C=24|S)+E|0)>>2],B=i[(C=C+B|0)>>2],C=i[S+4>>2]^i[C+4>>2],i[S>>2]=B^Q,i[S+4>>2]=C,128!=(0|(r=r+4|0)););}if(r=EA+1|0,z=z+1|0,!((S=i[A+20>>2])>>>0>(u=u+1|0)>>>0))break}}s=g+4096|0}function S(A){var I,g,B,Q,i,E,a,_,c,t,r,e=0,y=0,s=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0;h=(U=o[A+44|0]|o[A+45|0]<<8|o[A+46|0]<<16|o[A+47|0]<<24)>>>5&2097151,s=Ig(I=(o[A+60|0]|o[A+61|0]<<8|o[A+62|0]<<16|o[A+63|0]<<24)>>>3|0,0,-683901,-1),y=(e=o[A+44|0])<<16&2031616|o[A+42|0]|o[A+43|0]<<8,e=f,n=e=y>>>0>(F=s+y|0)>>>0?e+1|0:e,M=e=e-((F>>>0<4293918720)-1|0)|0,s=e>>21,e=(y=h)+(h=(2097151&e)<<11|(p=F- -1048576|0)>>>21)|0,y=s,m=y=e>>>0>>0?y+1|0:y,z=e,G=Ig(e,y,-683901,-1),k=f,w=Ig(g=(o[A+49|0]|o[A+50|0]<<8|o[A+51|0]<<16|o[A+52|0]<<24)>>>7&2097151,0,-997805,-1),s=(e=o[A+27|0])>>>24|0,h=e<<8|(K=o[A+23|0]|o[A+24|0]<<8|o[A+25|0]<<16|o[A+26|0]<<24)>>>24,y=(e=o[A+28|0])>>>16|0,y=2097151&((3&(y|=s))<<30|(e=h|e<<16)>>>2),e=f,e=y>>>0>(s=y+w|0)>>>0?e+1|0:e,y=Ig(P=(S=o[A+52|0]|o[A+53|0]<<8|o[A+54|0]<<16|o[A+55|0]<<24)>>>4&2097151,0,654183,0),e=f+e|0,w=s=y+s|0,s=y>>>0>s>>>0?e+1|0:e,D=(y=o[A+48|0])<<8|U>>>24,y=e=y>>>24|0,e=Ig(B=2097151&((3&(U=(e=(h=o[A+49|0])>>>16|0)|y))<<30|(y=(h<<=16)|D)>>>2),0,136657,0),s=f+s|0,s=e>>>0>(y=e+w|0)>>>0?s+1|0:s,h=(e=Ig(Q=(o[A+57|0]|o[A+58|0]<<8|o[A+59|0]<<16|o[A+60|0]<<24)>>>6&2097151,0,666643,0))+y|0,y=f+s|0,w=h,s=e>>>0>h>>>0?y+1|0:y,y=(e=o[A+56|0])>>>24|0,D=e<<8|S>>>24,y=Ig(i=2097151&((1&(S=(e=(h=o[A+57|0])>>>16|0)|y))<<31|(y=(h<<=16)|D)>>>1),0,470296,0),e=f+s|0,y=(e=(s=h=y+w|0)>>>0>>0?e+1|0:e)+k|0,y=s>>>0>(h=s+G|0)>>>0?y+1|0:y,b=s- -1048576|0,l=s=e-((s>>>0<4293918720)-1|0)|0,k=h-(e=-2097152&b)|0,G=y-((e>>>0>h>>>0)+s|0)|0,y=Ig(g,0,654183,0),e=f,e=y>>>0>(s=y+(K>>>5&2097151)|0)>>>0?e+1|0:e,h=(y=s)+(s=Ig(P,0,470296,0))|0,y=f+e|0,y=s>>>0>h>>>0?y+1|0:y,e=Ig(B,j,-997805,-1),y=f+y|0,y=e>>>0>(s=e+h|0)>>>0?y+1|0:y,h=(e=s)+(s=Ig(i,X,666643,0))|0,e=f+y|0,D=h,h=s>>>0>h>>>0?e+1|0:e,w=(s=Ig(g,0,470296,0))+(e=(e=o[A+23|0])<<16&2031616|o[A+21|0]|o[A+22|0]<<8)|0,s=f,s=e>>>0>w>>>0?s+1|0:s,w=(y=Ig(P,0,666643,0))+w|0,e=f+s|0,s=Ig(B,j,654183,0),y=f+(y>>>0>w>>>0?e+1|0:e)|0,S=y=s>>>0>(K=s+w|0)>>>0?y+1|0:y,L=y=y-((K>>>0<4293918720)-1|0)|0,e=(e=y>>>21|0)+h|0,s=e=(y=(2097151&y)<<11|(w=K- -1048576|0)>>>21)>>>0>(D=y+D|0)>>>0?e+1|0:e,N=y=e-((D>>>0<4293918720)-1|0)|0,e=k,k=(2097151&y)<<11|(h=D- -1048576|0)>>>21,y=(y>>21)+G|0,U=k=(y=k>>>0>(H=e+k|0)>>>0?y+1|0:y)-((H>>>0<4293918720)-1|0)|0,q=H-(e=-2097152&(G=H- -1048576|0))|0,O=y-((e>>>0>H>>>0)+k|0)|0,e=Ig(z,m,136657,0),s=f+s|0,s=e>>>0>(y=e+D|0)>>>0?s+1|0:s,d=y-(e=-2097152&h)|0,Y=s-((e>>>0>y>>>0)+N|0)|0,H=F-(e=-2097152&p)|0,M=n-((e>>>0>F>>>0)+M|0)|0,n=Ig(I,0,136657,0),y=(e=o[A+40|0])>>>24|0,h=e<<8|(p=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24)>>>24,s=(e=o[A+41|0])>>>16|0,y=(s|=y)>>>3|0,s=(7&s)<<29|(e=h|e<<16)>>>3,e=y+f|0,e=s>>>0>(h=s+n|0)>>>0?e+1|0:e,y=Ig(Q,0,-683901,-1),e=f+e|0,e=y>>>0>(s=y+h|0)>>>0?e+1|0:e,D=s,y=Ig(I,0,-997805,-1),s=f,s=y>>>0>(h=y+(p>>>6&2097151)|0)>>>0?s+1|0:s,p=(y=h)+(h=Ig(Q,0,136657,0))|0,y=f+s|0,s=Ig(i,X,-683901,-1),y=f+(h>>>0>p>>>0?y+1|0:y)|0,k=y=s>>>0>(u=s+p|0)>>>0?y+1|0:y,W=s=y-((u>>>0<4293918720)-1|0)|0,e=e+(y=s>>21)|0,p=e=(s=(2097151&s)<<11|(F=u- -1048576|0)>>>21)>>>0>(N=s+D|0)>>>0?e+1|0:e,x=e=e-((N>>>0<4293918720)-1|0)|0,y=(y=e>>21)+M|0,R=y=(e=(s=(2097151&e)<<11|(D=N- -1048576|0)>>>21)+H|0)>>>0>>0?y+1|0:y,v=e,y=Ig(e,y,-683901,-1),e=f+Y|0,J=s=y+d|0,h=y>>>0>s>>>0?e+1|0:e,H=K-(e=-2097152&w)|0,M=S-((4095&L)+(e>>>0>K>>>0)|0)|0,K=Ig(g,0,666643,0),e=(y=o[A+19|0])>>>24|0,w=y<<8|(S=o[A+15|0]|o[A+16|0]<<8|o[A+17|0]<<16|o[A+18|0]<<24)>>>24,s=e,y=(7&(s|=y=(e=o[A+20|0])>>>16|0))<<29|(y=(e<<=16)|w)>>>3,s=f+(s>>>3|0)|0,s=y>>>0>(w=y+K|0)>>>0?s+1|0:s,e=Ig(B,j,470296,0),y=f+s|0,e=e>>>0>(w=e+w|0)>>>0?y+1|0:y,s=Ig(B,j,666643,0),y=f,K=y=s>>>0>(d=s+(S>>>6&2097151)|0)>>>0?y+1|0:y,V=s=y-((d>>>0<4293918720)-1|0)|0,e=e+(y=s>>>21|0)|0,S=e=(s=(2097151&s)<<11|(n=d- -1048576|0)>>>21)>>>0>(Y=s+w|0)>>>0?e+1|0:e,Z=e=e-((Y>>>0<4293918720)-1|0)|0,y=(y=e>>>21|0)+M|0,y=(e=(2097151&e)<<11|(w=Y- -1048576|0)>>>21)>>>0>(s=e+H|0)>>>0?y+1|0:y,M=(e=s)+(s=Ig(z,m,-997805,-1))|0,e=f+y|0,e=s>>>0>M>>>0?e+1|0:e,L=y=N-(s=-2097152&D)|0,E=D=p-((s>>>0>N>>>0)+x|0)|0,s=Ig(v,R,136657,0),e=f+e|0,e=s>>>0>(p=s+M|0)>>>0?e+1|0:e,s=Ig(y,D,-683901,-1),y=f+e|0,p=y=s>>>0>(M=s+p|0)>>>0?y+1|0:y,x=e=y-((M>>>0<4293918720)-1|0)|0,y=(2097151&e)<<11|(D=M- -1048576|0)>>>21,e=(e>>21)+h|0,J=y=(e=y>>>0>(N=y+J|0)>>>0?e+1|0:e)-((N>>>0<4293918720)-1|0)|0,H=(2097151&y)<<11|(h=N- -1048576|0)>>>21,y=(y>>21)+O|0,_=q=H+q|0,H=H>>>0>q>>>0?y+1|0:y,c=N-(y=-2097152&h)|0,t=e-((y>>>0>N>>>0)+J|0)|0,q=M-(e=-2097152&D)|0,O=p-((e>>>0>M>>>0)+x|0)|0,s=(e=Ig(z,m,654183,0))+(Y-(y=-2097152&w)|0)|0,y=f+(S-((2147483647&Z)+(y>>>0>Y>>>0)|0)|0)|0,y=e>>>0>s>>>0?y+1|0:y,e=Ig(v,R,-997805,-1),y=f+y|0,y=e>>>0>(s=e+s|0)>>>0?y+1|0:y,h=(e=s)+(s=Ig(L,E,136657,0))|0,e=f+y|0,J=h,p=s>>>0>h>>>0?e+1|0:e,Y=u-(e=-2097152&F)|0,N=k-((e>>>0>u>>>0)+W|0)|0,S=Ig(P,0,-683901,-1),e=(y=o[A+35|0])>>>24|0,h=y<<8|(w=o[A+31|0]|o[A+32|0]<<8|o[A+33|0]<<16|o[A+34|0]<<24)>>>24,s=e,y=(e=o[A+36|0])>>>16|0,y|=s,s=f,s=(e=2097151&((1&y)<<31|(e=e<<16|h)>>>1))>>>0>(y=e+S|0)>>>0?s+1|0:s,h=(e=Ig(I,0,654183,0))+y|0,y=f+s|0,y=e>>>0>h>>>0?y+1|0:y,s=Ig(Q,0,-997805,-1),e=f+y|0,e=s>>>0>(h=s+h|0)>>>0?e+1|0:e,y=Ig(i,X,136657,0),e=f+e|0,D=s=y+h|0,h=y>>>0>s>>>0?e+1|0:e,e=Ig(g,0,-683901,-1),y=f,y=e>>>0>(s=e+(w>>>4&2097151)|0)>>>0?y+1|0:y,w=(e=Ig(P,0,136657,0))+s|0,s=f+y|0,s=e>>>0>w>>>0?s+1|0:s,e=Ig(I,0,470296,0),y=f+s|0,y=e>>>0>(w=e+w|0)>>>0?y+1|0:y,w=(s=Ig(Q,0,654183,0))+w|0,e=f+y|0,y=Ig(i,X,-997805,-1),e=f+(s>>>0>w>>>0?e+1|0:e)|0,S=e=y>>>0>(k=y+w|0)>>>0?e+1|0:e,r=y=e-((k>>>0<4293918720)-1|0)|0,s=(e=y>>21)+h|0,M=y=(s=(y=(2097151&y)<<11|(w=k- -1048576|0)>>>21)>>>0>(F=y+D|0)>>>0?s+1|0:s)-((F>>>0<4293918720)-1|0)|0,e=(e=y>>21)+N|0,x=e=(y=(h=(2097151&y)<<11|(D=F- -1048576|0)>>>21)+Y|0)>>>0>>0?e+1|0:e,h=J,J=y,e=Ig(y,e,-683901,-1),y=f+p|0,N=h=h+e|0,h=e>>>0>h>>>0?y+1|0:y,p=(e=Ig(z,m,470296,0))+(d-(y=-2097152&n)|0)|0,y=f+(K-((2047&V)+(y>>>0>d>>>0)|0)|0)|0,y=e>>>0>p>>>0?y+1|0:y,n=(e=p)+(p=Ig(v,R,654183,0))|0,e=f+y|0,e=p>>>0>n>>>0?e+1|0:e,p=Ig(L,E,-997805,-1),y=f+e|0,y=p>>>0>(n=p+n|0)>>>0?y+1|0:y,u=D=F-(e=-2097152&D)|0,a=p=s-((e>>>0>F>>>0)+M|0)|0,s=Ig(J,x,136657,0),e=f+y|0,e=s>>>0>(n=s+n|0)>>>0?e+1|0:e,s=Ig(D,p,-683901,-1),y=f+e|0,p=y=s>>>0>(K=s+n|0)>>>0?y+1|0:y,Y=e=y-((K>>>0<4293918720)-1|0)|0,y=(2097151&e)<<11|(D=K- -1048576|0)>>>21,e=(e>>21)+h|0,N=y=(e=y>>>0>(n=y+N|0)>>>0?e+1|0:e)-((n>>>0<4293918720)-1|0)|0,F=(2097151&y)<<11|(h=n- -1048576|0)>>>21,y=(y>>21)+O|0,W=M=F+q|0,M=F>>>0>M>>>0?y+1|0:y,V=n-(y=-2097152&h)|0,Z=e-((y>>>0>n>>>0)+N|0)|0,q=K-(e=-2097152&D)|0,O=p-((e>>>0>K>>>0)+Y|0)|0,p=Ig(z,m,666643,0),e=(y=o[A+14|0])>>>24|0,h=y<<8|(N=o[A+10|0]|o[A+11|0]<<8|o[A+12|0]<<16|o[A+13|0]<<24)>>>24,s=e,y=(e=o[A+15|0])>>>16|0,y|=s,s=f,s=(e=2097151&((1&y)<<31|(e=e<<16|h)>>>1))>>>0>(y=e+p|0)>>>0?s+1|0:s,h=(e=y)+(y=Ig(v,R,470296,0))|0,e=f+s|0,e=y>>>0>h>>>0?e+1|0:e,y=Ig(L,E,654183,0),e=f+e|0,e=y>>>0>(s=y+h|0)>>>0?e+1|0:e,h=(y=s)+(s=Ig(J,x,-997805,-1))|0,y=f+e|0,y=s>>>0>h>>>0?y+1|0:y,e=Ig(u,a,136657,0),y=f+y|0,K=s=e+h|0,h=e>>>0>s>>>0?y+1|0:y,w=k-(e=-2097152&w)|0,p=S-((e>>>0>k>>>0)+r|0)|0,s=Ig(g,0,136657,0),e=f,e=(y=(o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24)>>>7&2097151)>>>0>(s=y+s|0)>>>0?e+1|0:e,D=(y=s)+(s=Ig(P,0,-997805,-1))|0,y=f+e|0,y=s>>>0>D>>>0?y+1|0:y,e=Ig(B,j,-683901,-1),y=f+y|0,y=e>>>0>(s=e+D|0)>>>0?y+1|0:y,D=(e=Ig(I,0,666643,0))+s|0,s=f+y|0,s=e>>>0>D>>>0?s+1|0:s,y=Ig(Q,0,470296,0),e=f+s|0,e=y>>>0>(D=y+D|0)>>>0?e+1|0:e,y=Ig(i,X,654183,0),e=f+e|0,y=(l>>21)+(y>>>0>(s=y+D|0)>>>0?e+1|0:e)|0,F=y=(D=(2097151&l)<<11|b>>>21)>>>0>(b=D+s|0)>>>0?y+1|0:y,l=e=y-((b>>>0<4293918720)-1|0)|0,D=(2097151&e)<<11|(n=b- -1048576|0)>>>21,e=(e>>21)+p|0,d=e=(y=D+w|0)>>>0>>0?e+1|0:e,Y=y,y=Ig(y,e,-683901,-1),e=f+h|0,D=s=y+K|0,h=y>>>0>s>>>0?e+1|0:e,e=Ig(v,R,666643,0),y=f,y=e>>>0>(s=e+(N>>>4&2097151)|0)>>>0?y+1|0:y,e=Ig(L,E,470296,0),y=f+y|0,y=e>>>0>(s=e+s|0)>>>0?y+1|0:y,p=(e=Ig(J,x,654183,0))+s|0,s=f+y|0,s=e>>>0>p>>>0?s+1|0:s,y=Ig(u,a,-997805,-1),e=f+s|0,e=y>>>0>(p=y+p|0)>>>0?e+1|0:e,y=Ig(Y,d,136657,0),e=f+e|0,S=e=y>>>0>(k=y+p|0)>>>0?e+1|0:e,R=y=e-((k>>>0<4293918720)-1|0)|0,e=D,D=(2097151&y)<<11|(w=k- -1048576|0)>>>21,y=(y>>21)+h|0,v=h=(y=(s=e+D|0)>>>0>>0?y+1|0:y)-((s>>>0<4293918720)-1|0)|0,e=(e=h>>21)+O|0,z=D=(h=(2097151&h)<<11|(p=s- -1048576|0)>>>21)+q|0,K=h>>>0>D>>>0?e+1|0:e,D=s,s=y,h=(b-(y=-2097152&n)|0)+(n=(2097151&U)<<11|G>>>21)|0,y=(F-((y>>>0>b>>>0)+l|0)|0)+(U>>21)|0,N=y=h>>>0>>0?y+1|0:y,P=y=y-((h>>>0<4293918720)-1|0)|0,G=e=y>>21,e=Ig(m=(2097151&y)<<11|(l=h- -1048576|0)>>>21,e,-683901,-1),s=f+s|0,s=e>>>0>(y=e+D|0)>>>0?s+1|0:s,j=y-(e=-2097152&p)|0,X=s-((e>>>0>y>>>0)+v|0)|0,e=Ig(m,G,136657,0),y=S+f|0,v=(s=e+k|0)-(e=-2097152&w)|0,b=(y=s>>>0>>0?y+1|0:y)-((e>>>0>s>>>0)+R|0)|0,y=Ig(L,E,666643,0),s=f,s=(e=(o[A+7|0]|o[A+8|0]<<8|o[A+9|0]<<16|o[A+10|0]<<24)>>>7&2097151)>>>0>(y=e+y|0)>>>0?s+1|0:s,D=(e=Ig(J,x,470296,0))+y|0,y=f+s|0,y=e>>>0>D>>>0?y+1|0:y,e=Ig(u,a,654183,0),y=f+y|0,y=e>>>0>(s=e+D|0)>>>0?y+1|0:y,D=(e=s)+(s=Ig(Y,d,-997805,-1))|0,e=f+y|0,n=D,D=s>>>0>D>>>0?e+1|0:e,S=Ig(J,x,666643,0),e=(y=o[A+6|0])>>>24|0,p=y<<8|(R=o[A+2|0]|o[A+3|0]<<8|o[A+4|0]<<16|o[A+5|0]<<24)>>>24,s=e,y=(e=o[A+7|0])>>>16|0,y=2097151&((3&(y|=s))<<30|(e=e<<16|p)>>>2),e=f,e=y>>>0>(s=y+S|0)>>>0?e+1|0:e,p=(y=Ig(u,a,470296,0))+s|0,s=f+e|0,s=y>>>0>p>>>0?s+1|0:s,y=Ig(Y,d,654183,0),e=f+s|0,S=e=y>>>0>(F=y+p|0)>>>0?e+1|0:e,U=e=e-((F>>>0<4293918720)-1|0)|0,y=(s=e>>21)+D|0,k=e=(y=(e=(2097151&e)<<11|(w=F- -1048576|0)>>>21)>>>0>(p=e+n|0)>>>0?y+1|0:y)-((p>>>0<4293918720)-1|0)|0,n=(2097151&e)<<11|(D=p- -1048576|0)>>>21,e=(e>>21)+b|0,v=J=n+v|0,n=n>>>0>J>>>0?e+1|0:e,e=Ig(m,G,-997805,-1),y=f+y|0,y=e>>>0>(s=e+p|0)>>>0?y+1|0:y,L=s-(e=-2097152&D)|0,x=y-((e>>>0>s>>>0)+k|0)|0,y=Ig(m,G,654183,0),e=S+f|0,J=(s=y+F|0)-(y=-2097152&w)|0,b=(e=s>>>0>>0?e+1|0:e)-((y>>>0>s>>>0)+U|0)|0,e=Ig(u,a,666643,0),y=f,y=e>>>0>(s=e+(R>>>5&2097151)|0)>>>0?y+1|0:y,e=Ig(Y,d,470296,0),y=f+y|0,p=s=e+s|0,s=e>>>0>s>>>0?y+1|0:y,D=Ig(Y,d,666643,0),y=(e=o[A+2|0])<<16&2031616|o[0|A]|o[A+1|0]<<8,e=f,S=e=y>>>0>(k=D+y|0)>>>0?e+1|0:e,d=e=e-((k>>>0<4293918720)-1|0)|0,D=(2097151&e)<<11|(w=k- -1048576|0)>>>21,e=(e>>21)+s|0,s=e=D>>>0>(F=D+p|0)>>>0?e+1|0:e,U=e=e-((F>>>0<4293918720)-1|0)|0,D=(2097151&e)<<11|(p=F- -1048576|0)>>>21,e=(e>>21)+b|0,D=D>>>0>(Y=D+J|0)>>>0?e+1|0:e,e=Ig(m,G,470296,0),s=s+f|0,s=(y=e+F|0)>>>0>>0?s+1|0:s,F=y-(e=-2097152&p)|0,p=s-((e>>>0>y>>>0)+U|0)|0,y=Ig(m,G,666643,0),e=f+(S-(((s=-2097152&w)>>>0>k>>>0)+d|0)|0)|0,y=(s=(e=y>>>0>(b=y+(k-s|0)|0)>>>0?e+1|0:e)>>21)+p|0,e=(e=(y=(e=(2097151&e)<<11|b>>>21)>>>0>(U=e+F|0)>>>0?y+1|0:y)>>21)+D|0,y=(y=(e=(y=(2097151&y)<<11|U>>>21)>>>0>(G=y+Y|0)>>>0?e+1|0:e)>>21)+x|0,s=(e=(y=(e=(2097151&e)<<11|G>>>21)>>>0>(D=e+L|0)>>>0?y+1|0:y)>>21)+n|0,e=(y=(s=(y=(2097151&y)<<11|D>>>21)>>>0>(k=y+v|0)>>>0?s+1|0:s)>>21)+X|0,y=(s=(e=(s=(2097151&s)<<11|k>>>21)>>>0>(F=s+j|0)>>>0?e+1|0:e)>>21)+K|0,K=p=(e=(2097151&e)<<11|F>>>21)+z|0,e=(e=(y=e>>>0>p>>>0?y+1|0:y)>>21)+Z|0,y=(y=(e=(y=(2097151&y)<<11|p>>>21)>>>0>(n=y+V|0)>>>0?e+1|0:e)>>21)+M|0,s=(e=(y=(e=(2097151&e)<<11|n>>>21)>>>0>(S=e+W|0)>>>0?y+1|0:y)>>21)+t|0,e=(y=(s=(y=(2097151&y)<<11|S>>>21)>>>0>(w=y+c|0)>>>0?s+1|0:s)>>21)+H|0,l=(M=h-(y=-2097152&l)|0)+((2097151&(e=(s=(2097151&s)<<11|w>>>21)>>>0>(p=s+_|0)>>>0?e+1|0:e))<<11|p>>>21)|0,e=(N-((y>>>0>h>>>0)+P|0)|0)+(e>>21)|0,N=y=(e=M>>>0>l>>>0?e+1|0:e)>>21,b=(e=Ig(H=(2097151&e)<<11|l>>>21,y,666643,0))+(y=2097151&b)|0,e=f,h=e=y>>>0>b>>>0?e+1|0:e,C[0|A]=b,C[A+1|0]=(255&e)<<24|b>>>8,e=2097151&U,y=Ig(H,N,470296,0)+e|0,s=f,e=(h>>21)+(e>>>0>y>>>0?s+1|0:s)|0,e=(M=(2097151&h)<<11|b>>>21)>>>0>(U=M+y|0)>>>0?e+1|0:e,C[A+4|0]=(2047&e)<<21|U>>>11,y=e,s=U,C[A+3|0]=(7&e)<<29|s>>>3,C[A+2|0]=31&((65535&h)<<16|b>>>16)|s<<5,h=2097151&G,G=Ig(H,N,654183,0)+h|0,e=f,U=(2097151&y)<<11|s>>>21,y=(y>>21)+(h=h>>>0>G>>>0?e+1|0:e)|0,e=y=(G=U+G|0)>>>0>>0?y+1|0:y,C[A+6|0]=(63&e)<<26|G>>>6,h=G,G=0,C[A+5|0]=G<<13|(1572864&s)>>>19|h<<2,s=2097151&D,D=Ig(H,N,-997805,-1)+s|0,y=f,y=s>>>0>D>>>0?y+1|0:y,G=(2097151&(s=e))<<11|h>>>21,s=(e>>=21)+y|0,s=(D=G+D|0)>>>0>>0?s+1|0:s,C[A+9|0]=(511&s)<<23|D>>>9,C[A+8|0]=(1&s)<<31|D>>>1,y=0,C[A+7|0]=y<<18|(2080768&h)>>>14|D<<7,y=2097151&k,h=Ig(H,N,136657,0)+y|0,e=f,e=y>>>0>h>>>0?e+1|0:e,k=(2097151&(y=s))<<11|D>>>21,y=e+(s=y>>21)|0,y=(h=k+h|0)>>>0>>0?y+1|0:y,C[A+12|0]=(4095&y)<<20|h>>>12,s=h,C[A+11|0]=(15&y)<<28|s>>>4,h=0,C[A+10|0]=h<<15|(1966080&D)>>>17|s<<4,h=2097151&F,D=Ig(H,N,-683901,-1)+h|0,e=f,e=h>>>0>D>>>0?e+1|0:e,h=y,y=e+(y>>=21)|0,y=(h=(J=D)+(D=(2097151&h)<<11|s>>>21)|0)>>>0>>0?y+1|0:y,C[A+14|0]=(127&y)<<25|h>>>7,D=0,C[A+13|0]=D<<12|(1048576&s)>>>20|h<<1,e=y>>21,s=(y=(2097151&y)<<11|h>>>21)>>>0>(D=y+(2097151&K)|0)>>>0?e+1|0:e,C[A+17|0]=(1023&s)<<22|D>>>10,C[A+16|0]=(3&s)<<30|D>>>2,y=0,C[A+15|0]=y<<17|(2064384&h)>>>15|D<<6,e=s>>21,e=(y=(2097151&s)<<11|D>>>21)>>>0>(s=y+(2097151&n)|0)>>>0?e+1|0:e,C[A+20|0]=(8191&e)<<19|s>>>13,C[A+19|0]=(31&e)<<27|s>>>5,h=(y=2097151&S)+(S=(2097151&e)<<11|s>>>21)|0,y=e>>21,y=h>>>0>>0?y+1|0:y,S=h,C[A+21|0]=h,n=0,C[A+18|0]=n<<14|(1835008&D)>>>18|s<<3,C[A+22|0]=(255&y)<<24|h>>>8,s=y>>21,s=(h=(D=(2097151&y)<<11|h>>>21)+(2097151&w)|0)>>>0>>0?s+1|0:s,C[A+25|0]=(2047&s)<<21|h>>>11,C[A+24|0]=(7&s)<<29|h>>>3,C[A+23|0]=31&((65535&y)<<16|S>>>16)|h<<5,e=s>>21,e=(y=(2097151&s)<<11|h>>>21)>>>0>(s=y+(2097151&p)|0)>>>0?e+1|0:e,C[A+27|0]=(63&e)<<26|s>>>6,D=0,C[A+26|0]=D<<13|(1572864&h)>>>19|s<<2,y=e,e>>=21,y=(h=(p=(2097151&y)<<11|s>>>21)+(D=2097151&l)|0)>>>0>>0?e+1|0:e,C[A+31|0]=(131071&y)<<15|h>>>17,e=h,C[A+30|0]=(511&y)<<23|e>>>9,h=0,C[A+28|0]=h<<18|(2080768&s)>>>14|e<<7,C[A+29|0]=p+l>>>1}function N(A,I,g){var C,B=0,Q=0,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0;for(s=E=s-2048|0,Ng(E+1024|0,I,1024),I=0;Q=i[(_=(o=E+1024|0)+(B=I<<3)|0)>>2],a=i[(c=A+B|0)>>2],c=i[_+4>>2]^i[c+4>>2],i[_>>2]=Q^a,i[_+4>>2]=c,c=i[(_=(Q=8|B)+o|0)>>2],a=i[(Q=A+Q|0)>>2],Q=i[_+4>>2]^i[Q+4>>2],i[_>>2]=a^c,i[_+4>>2]=Q,c=i[(_=(Q=16|B)+o|0)>>2],a=i[(Q=A+Q|0)>>2],Q=i[_+4>>2]^i[Q+4>>2],i[_>>2]=a^c,i[_+4>>2]=Q,Q=i[(B=(_=24|B)+o|0)>>2],c=i[(_=A+_|0)>>2],_=i[B+4>>2]^i[_+4>>2],i[B>>2]=Q^c,i[B+4>>2]=_,128!=(0|(I=I+4|0)););for(C=Ng(E,o,1024),A=0,I=0;E=i[(B=(o=I<<3)+C|0)>>2],Q=i[(_=g+o|0)>>2],_=i[B+4>>2]^i[_+4>>2],i[B>>2]=Q^E,i[B+4>>2]=_,_=i[(B=(E=8|o)+C|0)>>2],Q=i[(E=g+E|0)>>2],E=i[B+4>>2]^i[E+4>>2],i[B>>2]=Q^_,i[B+4>>2]=E,_=i[(B=(E=16|o)+C|0)>>2],Q=i[(E=g+E|0)>>2],E=i[B+4>>2]^i[E+4>>2],i[B>>2]=Q^_,i[B+4>>2]=E,E=i[(o=(B=24|o)+C|0)>>2],_=i[(B=g+B|0)>>2],B=i[o+4>>2]^i[B+4>>2],i[o>>2]=E^_,i[o+4>>2]=B,128!=(0|(I=I+4|0)););for(;c=(Q=i[56+(o=(C+1024|0)+(A<<7)|0)>>2])+(B=i[o+24>>2])|0,I=(t=i[o+60>>2])+(E=i[o+28>>2])|0,_=B>>>0>c>>>0?I+1|0:I,E=Ig(B<<1&-2,1&(E<<1|B>>>31),Q,0),I=f+_|0,_=(B=E+c|0)>>>0>>0?I+1|0:I,e=(c=UI(i[o+120>>2]^B,_^i[o+124>>2],32))+(E=i[o+88>>2])|0,I=(y=f)+(a=i[o+92>>2])|0,r=E>>>0>e>>>0?I+1|0:I,a=Ig(E<<1&-2,1&(a<<1|E>>>31),c,0),I=f+r|0,x=UI(Q^(E=a+e|0),t^(h=E>>>0>>0?I+1|0:I),40),I=_+(z=f)|0,Q=(a=B+x|0)>>>0>>0?I+1|0:I,B=Ig(x,0,B<<1&-2,1&(_<<1|B>>>31)),I=f+Q|0,H=UI(c^(F=B+a|0),y^(b=B>>>0>F>>>0?I+1|0:I),48),j=I=f,p=H,e=I,a=(c=i[o+40>>2])+(B=i[o+8>>2])|0,I=(Y=i[o+44>>2])+(_=i[o+12>>2])|0,Q=B>>>0>a>>>0?I+1|0:I,_=Ig(B<<1&-2,1&(_<<1|B>>>31),c,0),I=f+Q|0,Q=(B=_+a|0)>>>0<_>>>0?I+1|0:I,y=(a=UI(i[o+104>>2]^B,Q^i[o+108>>2],32))+(_=i[o+72>>2])|0,I=(w=f)+(r=i[o+76>>2])|0,t=_>>>0>y>>>0?I+1|0:I,r=Ig(_<<1&-2,1&(r<<1|_>>>31),a,0),I=f+t|0,r=UI(t=(_=r+y|0)^c,Y^(c=_>>>0>>0?I+1|0:I),40),I=Q+(n=f)|0,t=(y=B+r|0)>>>0>>0?I+1|0:I,Q=Ig(r,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+t|0,v=UI((B=Q+y|0)^a,w^(y=B>>>0>>0?I+1|0:I),48),I=c+(R=f)|0,Q=(a=_+v|0)>>>0<_>>>0?I+1|0:I,c=Ig(v,0,_<<1&-2,1&(c<<1|_>>>31)),I=f+Q|0,M=UI((_=c+a|0)^r,n^(Y=_>>>0>>0?I+1|0:I),1),L=I=f,k=M,t=I,w=(r=i[o+32>>2])+(Q=i[o>>2])|0,I=(J=i[o+36>>2])+(c=i[o+4>>2])|0,a=Q>>>0>w>>>0?I+1|0:I,c=Ig(Q<<1&-2,1&(c<<1|Q>>>31),r,0),I=f+a|0,a=(Q=c+w|0)>>>0>>0?I+1|0:I,D=(d=UI(i[o+96>>2]^Q,a^i[o+100>>2],32))+(c=i[(I=S=o- -64|0)>>2])|0,I=(q=f)+(w=i[I+4>>2])|0,n=c>>>0>D>>>0?I+1|0:I,w=Ig(c<<1&-2,1&(w<<1|c>>>31),d,0),I=f+n|0,J=UI((c=w+D|0)^r,J^(w=c>>>0>>0?I+1|0:I),40),I=a+(X=f)|0,r=(n=Q+J|0)>>>0>>0?I+1|0:I,a=Ig(J,0,Q<<1&-2,1&(a<<1|Q>>>31)),I=f+r|0,I=(n=(Q=a+n|0)>>>0>>0?I+1|0:I)+t|0,r=(a=Q+k|0)>>>0>>0?I+1|0:I,t=Ig(k,0,Q<<1&-2,1&(n<<1|Q>>>31)),I=f+r|0,m=UI((a=t+a|0)^p,(D=a>>>0>>0?I+1|0:I)^e,32),P=I=f,N=I,k=(p=i[o+48>>2])+(r=i[o+16>>2])|0,I=(l=i[o+52>>2])+(e=i[o+20>>2])|0,t=r>>>0>k>>>0?I+1|0:I,e=Ig(r<<1&-2,1&(e<<1|r>>>31),p,0),I=f+t|0,t=(r=e+k|0)>>>0>>0?I+1|0:I,G=(k=UI(i[o+112>>2]^r,t^i[o+116>>2],32))+(e=i[o+80>>2])|0,I=(u=f)+(K=i[o+84>>2])|0,U=e>>>0>G>>>0?I+1|0:I,K=Ig(e<<1&-2,1&(K<<1|e>>>31),k,0),I=f+U|0,K=UI(G=(e=K+G|0)^p,l^(p=e>>>0>>0?I+1|0:I),40),I=t+(l=f)|0,U=(G=r+K|0)>>>0>>0?I+1|0:I,t=Ig(K,0,r<<1&-2,1&(t<<1|r>>>31)),I=f+U|0,U=UI(G=(r=t+G|0)^k,u^(k=t>>>0>r>>>0?I+1|0:I),48),I=p+(u=f)|0,t=(G=e+U|0)>>>0>>0?I+1|0:I,p=Ig(U,0,e<<1&-2,1&(p<<1|e>>>31)),I=f+t|0,I=(p=(e=p+G|0)>>>0

>>0?I+1|0:I)+N|0,N=(t=e+m|0)>>>0>>0?I+1|0:I,G=Ig(m,0,e<<1&-2,1&(p<<1|e>>>31)),I=f+N|0,N=UI(N=(t=G+t|0)^M,L^(M=t>>>0>>0?I+1|0:I),40),I=D+(L=f)|0,G=(O=a+N|0)>>>0>>0?I+1|0:I,a=(D=Ig(N,0,a<<1&-2,1&(D<<1|a>>>31)))+O|0,I=f+G|0,i[o>>2]=a,I=a>>>0>>0?I+1|0:I,i[o+4>>2]=I,a=UI(a^m,I^P,48),i[o+120>>2]=a,I=f,i[o+124>>2]=I,I=I+M|0,D=(m=a+t|0)>>>0>>0?I+1|0:I,a=(t=Ig(a,0,t<<1&-2,1&(M<<1|t>>>31)))+m|0,I=f+D|0,i[o+80>>2]=a,I=a>>>0>>0?I+1|0:I,i[o+84>>2]=I,W=o,V=UI(a^N,I^L,1),i[W+40>>2]=V,i[o+44>>2]=f,I=h+j|0,a=(t=E+H|0)>>>0>>0?I+1|0:I,E=Ig(H,0,E<<1&-2,1&(h<<1|E>>>31)),I=f+a|0,a=I=E>>>0>(t=E+t|0)>>>0?I+1|0:I,E=I,e=UI(e^K,p^l,1),I=y+(p=f)|0,h=(D=B+e|0)>>>0>>0?I+1|0:I,B=(y=Ig(e,0,B<<1&-2,1&(y<<1|B>>>31)))+D|0,I=f+h|0,n=UI(Q^d,n^q,48),y=UI(n^B,(Q=B>>>0>>0?I+1|0:I)^(M=f),32),I=(H=f)+E|0,h=y>>>0>(D=y+t|0)>>>0?I+1|0:I,E=(I=D)+(D=Ig(t<<1&-2,1&(E<<1|t>>>31),y,0))|0,I=f+h|0,h=UI(N=E^e,p^(e=E>>>0>>0?I+1|0:I),40),I=Q+(D=f)|0,p=(d=B+h|0)>>>0>>0?I+1|0:I,B=Ig(h,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+p|0,B=UI((Q=B+d|0)^y,H^(I=B>>>0>Q>>>0?I+1|0:I),48),i[o+96>>2]=B,y=f,i[o+100>>2]=y,i[o+8>>2]=Q,i[o+12>>2]=I,I=e+y|0,Q=(y=B+E|0)>>>0>>0?I+1|0:I,E=Ig(B,0,E<<1&-2,1&(e<<1|E>>>31)),I=f+Q|0,W=o,V=UI((B=E+y|0)^h,(I=B>>>0>>0?I+1|0:I)^D,1),i[W+48>>2]=V,i[o+52>>2]=f,i[o+88>>2]=B,i[o+92>>2]=I,e=UI(t^x,a^z,1),I=k+(h=f)|0,E=(B=r+e|0)>>>0>>0?I+1|0:I,Q=Ig(e,0,r<<1&-2,1&(k<<1|r>>>31)),I=f+E|0,t=UI((B=Q+B|0)^v,R^(a=B>>>0>>0?I+1|0:I),32),y=I=f,Q=I,I=w+M|0,r=(E=c+n|0)>>>0>>0?I+1|0:I,c=Ig(n,0,c<<1&-2,1&(w<<1|c>>>31)),I=f+r|0,I=(c=(E=c+E|0)>>>0>>0?I+1|0:I)+Q|0,r=(Q=E+t|0)>>>0>>0?I+1|0:I,w=Ig(t,0,E<<1&-2,1&(c<<1|E>>>31)),I=f+r|0,e=UI((Q=w+Q|0)^e,h^(r=Q>>>0>>0?I+1|0:I),40),I=a+(w=f)|0,h=(n=B+e|0)>>>0>>0?I+1|0:I,B=(a=Ig(e,0,B<<1&-2,1&(a<<1|B>>>31)))+n|0,I=f+h|0,i[o+16>>2]=B,I=B>>>0>>0?I+1|0:I,i[o+20>>2]=I,B=UI(B^t,I^y,48),i[o+104>>2]=B,I=f,i[o+108>>2]=I,a=S,I=I+r|0,t=(h=B+Q|0)>>>0>>0?I+1|0:I,Q=Ig(B,0,Q<<1&-2,1&(r<<1|Q>>>31)),I=f+t|0,r=B=Q+h|0,t=I=B>>>0>>0?I+1|0:I,i[a>>2]=B,i[a+4>>2]=I,c=UI(E^J,c^X,1),I=(y=f)+b|0,E=(B=c+F|0)>>>0>>0?I+1|0:I,Q=Ig(F<<1&-2,1&(b<<1|F>>>31),c,0),I=f+E|0,a=UI((B=Q+B|0)^U,u^(Q=B>>>0>>0?I+1|0:I),32),I=Y+(F=f)|0,h=(E=a+_|0)>>>0<_>>>0?I+1|0:I,_=Ig(a,0,_<<1&-2,1&(Y<<1|_>>>31)),I=f+h|0,c=UI((E=_+E|0)^c,y^(_=E>>>0<_>>>0?I+1|0:I),40),I=Q+(b=f)|0,h=(y=B+c|0)>>>0>>0?I+1|0:I,Q=Ig(c,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+h|0,I=(B=Q+y|0)>>>0>>0?I+1|0:I,Q=B,B^=a,a=I,B=UI(B,F^I,48),I=_+(F=f)|0,h=(y=B+E|0)>>>0>>0?I+1|0:I,E=(_=Ig(B,0,E<<1&-2,1&(_<<1|E>>>31)))+y|0,I=f+h|0,i[o+72>>2]=E,I=E>>>0<_>>>0?I+1|0:I,i[o+76>>2]=I,i[o+112>>2]=B,i[o+116>>2]=F,i[o+24>>2]=Q,i[o+28>>2]=a,W=o,V=UI(r^e,t^w,1),i[W+56>>2]=V,i[o+60>>2]=f,W=o,V=UI(E^c,I^b,1),i[W+32>>2]=V,i[o+36>>2]=f,8!=(0|(A=A+1|0)););for(A=0;c=(Q=i[392+(o=(C+1024|0)+(A<<4)|0)>>2])+(B=i[o+136>>2])|0,I=(t=i[o+396>>2])+(E=i[o+140>>2])|0,_=B>>>0>c>>>0?I+1|0:I,E=Ig(B<<1&-2,1&(E<<1|B>>>31),Q,0),I=f+_|0,_=(B=E+c|0)>>>0>>0?I+1|0:I,e=(c=UI(i[o+904>>2]^B,_^i[o+908>>2],32))+(E=i[o+648>>2])|0,I=(y=f)+(a=i[o+652>>2])|0,r=E>>>0>e>>>0?I+1|0:I,a=Ig(E<<1&-2,1&(a<<1|E>>>31),c,0),I=f+r|0,x=UI(Q^(E=a+e|0),t^(h=E>>>0>>0?I+1|0:I),40),I=_+(G=f)|0,Q=(a=B+x|0)>>>0>>0?I+1|0:I,B=Ig(x,0,B<<1&-2,1&(_<<1|B>>>31)),I=f+Q|0,H=UI(c^(F=B+a|0),y^(b=B>>>0>F>>>0?I+1|0:I),48),z=I=f,p=H,e=I,a=(c=i[o+264>>2])+(B=i[o+8>>2])|0,I=(Y=i[o+268>>2])+(_=i[o+12>>2])|0,Q=B>>>0>a>>>0?I+1|0:I,_=Ig(B<<1&-2,1&(_<<1|B>>>31),c,0),I=f+Q|0,Q=(B=_+a|0)>>>0<_>>>0?I+1|0:I,y=(a=UI(i[o+776>>2]^B,Q^i[o+780>>2],32))+(_=i[o+520>>2])|0,I=(w=f)+(r=i[o+524>>2])|0,t=_>>>0>y>>>0?I+1|0:I,r=Ig(_<<1&-2,1&(r<<1|_>>>31),a,0),I=f+t|0,r=UI(t=(_=r+y|0)^c,Y^(c=_>>>0>>0?I+1|0:I),40),I=Q+(n=f)|0,t=(y=B+r|0)>>>0>>0?I+1|0:I,Q=Ig(r,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+t|0,v=UI((B=Q+y|0)^a,w^(y=B>>>0>>0?I+1|0:I),48),I=c+(j=f)|0,Q=(a=_+v|0)>>>0<_>>>0?I+1|0:I,c=Ig(v,0,_<<1&-2,1&(c<<1|_>>>31)),I=f+Q|0,M=UI((_=c+a|0)^r,n^(Y=_>>>0>>0?I+1|0:I),1),R=I=f,k=M,t=I,w=(r=i[o+256>>2])+(Q=i[o>>2])|0,I=(J=i[o+260>>2])+(c=i[o+4>>2])|0,a=Q>>>0>w>>>0?I+1|0:I,c=Ig(Q<<1&-2,1&(c<<1|Q>>>31),r,0),I=f+a|0,a=(Q=c+w|0)>>>0>>0?I+1|0:I,D=(d=UI(i[o+768>>2]^Q,a^i[o+772>>2],32))+(c=i[o+512>>2])|0,I=(L=f)+(w=i[o+516>>2])|0,n=c>>>0>D>>>0?I+1|0:I,w=Ig(c<<1&-2,1&(w<<1|c>>>31),d,0),I=f+n|0,J=UI((c=w+D|0)^r,J^(w=c>>>0>>0?I+1|0:I),40),I=a+(q=f)|0,r=(n=Q+J|0)>>>0>>0?I+1|0:I,a=Ig(J,0,Q<<1&-2,1&(a<<1|Q>>>31)),I=f+r|0,I=(n=(Q=a+n|0)>>>0>>0?I+1|0:I)+t|0,r=(a=Q+k|0)>>>0>>0?I+1|0:I,t=Ig(k,0,Q<<1&-2,1&(n<<1|Q>>>31)),I=f+r|0,m=UI((a=t+a|0)^p,(D=a>>>0>>0?I+1|0:I)^e,32),X=I=f,N=I,k=(p=i[o+384>>2])+(r=i[o+128>>2])|0,I=(P=i[o+388>>2])+(e=i[o+132>>2])|0,t=r>>>0>k>>>0?I+1|0:I,e=Ig(r<<1&-2,1&(e<<1|r>>>31),p,0),I=f+t|0,t=(r=e+k|0)>>>0>>0?I+1|0:I,S=(k=UI(i[o+896>>2]^r,t^i[o+900>>2],32))+(e=i[o+640>>2])|0,I=(l=f)+(K=i[o+644>>2])|0,U=e>>>0>S>>>0?I+1|0:I,K=Ig(e<<1&-2,1&(K<<1|e>>>31),k,0),I=f+U|0,K=UI(S=(e=K+S|0)^p,P^(p=e>>>0>>0?I+1|0:I),40),I=t+(P=f)|0,U=(S=r+K|0)>>>0>>0?I+1|0:I,t=Ig(K,0,r<<1&-2,1&(t<<1|r>>>31)),I=f+U|0,U=UI(S=(r=t+S|0)^k,l^(k=t>>>0>r>>>0?I+1|0:I),48),I=p+(l=f)|0,t=(S=e+U|0)>>>0>>0?I+1|0:I,p=Ig(U,0,e<<1&-2,1&(p<<1|e>>>31)),I=f+t|0,I=(p=(e=p+S|0)>>>0

>>0?I+1|0:I)+N|0,N=(t=e+m|0)>>>0>>0?I+1|0:I,S=Ig(m,0,e<<1&-2,1&(p<<1|e>>>31)),I=f+N|0,N=UI(N=(t=S+t|0)^M,R^(M=t>>>0>>0?I+1|0:I),40),I=D+(R=f)|0,S=(u=a+N|0)>>>0>>0?I+1|0:I,a=(D=Ig(N,0,a<<1&-2,1&(D<<1|a>>>31)))+u|0,I=f+S|0,i[o>>2]=a,I=a>>>0>>0?I+1|0:I,i[o+4>>2]=I,a=UI(a^m,I^X,48),i[o+904>>2]=a,I=f,i[o+908>>2]=I,I=I+M|0,D=(m=a+t|0)>>>0>>0?I+1|0:I,a=(t=Ig(a,0,t<<1&-2,1&(M<<1|t>>>31)))+m|0,I=f+D|0,i[o+640>>2]=a,I=a>>>0>>0?I+1|0:I,i[o+644>>2]=I,W=o,V=UI(a^N,I^R,1),i[W+264>>2]=V,i[o+268>>2]=f,I=h+z|0,a=(t=E+H|0)>>>0>>0?I+1|0:I,E=Ig(H,0,E<<1&-2,1&(h<<1|E>>>31)),I=f+a|0,a=I=E>>>0>(t=E+t|0)>>>0?I+1|0:I,E=I,e=UI(e^K,p^P,1),I=y+(p=f)|0,h=(D=B+e|0)>>>0>>0?I+1|0:I,B=(y=Ig(e,0,B<<1&-2,1&(y<<1|B>>>31)))+D|0,I=f+h|0,n=UI(Q^d,n^L,48),y=UI(n^B,(Q=B>>>0>>0?I+1|0:I)^(M=f),32),I=(H=f)+E|0,h=y>>>0>(D=y+t|0)>>>0?I+1|0:I,E=(I=D)+(D=Ig(t<<1&-2,1&(E<<1|t>>>31),y,0))|0,I=f+h|0,h=UI(S=E^e,p^(e=E>>>0>>0?I+1|0:I),40),I=Q+(D=f)|0,p=(d=B+h|0)>>>0>>0?I+1|0:I,B=Ig(h,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+p|0,B=UI((Q=B+d|0)^y,H^(I=B>>>0>Q>>>0?I+1|0:I),48),i[o+768>>2]=B,y=f,i[o+772>>2]=y,i[o+8>>2]=Q,i[o+12>>2]=I,I=e+y|0,Q=(y=B+E|0)>>>0>>0?I+1|0:I,E=Ig(B,0,E<<1&-2,1&(e<<1|E>>>31)),I=f+Q|0,W=o,V=UI((B=E+y|0)^h,(I=B>>>0>>0?I+1|0:I)^D,1),i[W+384>>2]=V,i[o+388>>2]=f,i[o+648>>2]=B,i[o+652>>2]=I,e=UI(t^x,a^G,1),I=k+(h=f)|0,E=(B=r+e|0)>>>0>>0?I+1|0:I,Q=Ig(e,0,r<<1&-2,1&(k<<1|r>>>31)),I=f+E|0,t=UI((B=Q+B|0)^v,j^(a=B>>>0>>0?I+1|0:I),32),y=I=f,Q=I,I=w+M|0,r=(E=c+n|0)>>>0>>0?I+1|0:I,c=Ig(n,0,c<<1&-2,1&(w<<1|c>>>31)),I=f+r|0,I=(c=(E=c+E|0)>>>0>>0?I+1|0:I)+Q|0,r=(Q=E+t|0)>>>0>>0?I+1|0:I,w=Ig(t,0,E<<1&-2,1&(c<<1|E>>>31)),I=f+r|0,e=UI((Q=w+Q|0)^e,h^(r=Q>>>0>>0?I+1|0:I),40),I=a+(w=f)|0,h=(n=B+e|0)>>>0>>0?I+1|0:I,B=(a=Ig(e,0,B<<1&-2,1&(a<<1|B>>>31)))+n|0,I=f+h|0,i[o+128>>2]=B,I=B>>>0>>0?I+1|0:I,i[o+132>>2]=I,B=UI(B^t,I^y,48),i[o+776>>2]=B,I=f,i[o+780>>2]=I,I=I+r|0,a=(t=B+Q|0)>>>0>>0?I+1|0:I,Q=Ig(B,0,Q<<1&-2,1&(r<<1|Q>>>31)),I=f+a|0,r=B=Q+t|0,t=I=B>>>0>>0?I+1|0:I,i[o+512>>2]=B,i[o+516>>2]=I,c=UI(E^J,c^q,1),I=(y=f)+b|0,E=(B=c+F|0)>>>0>>0?I+1|0:I,Q=Ig(F<<1&-2,1&(b<<1|F>>>31),c,0),I=f+E|0,a=UI((B=Q+B|0)^U,l^(Q=B>>>0>>0?I+1|0:I),32),I=Y+(F=f)|0,h=(E=a+_|0)>>>0<_>>>0?I+1|0:I,_=Ig(a,0,_<<1&-2,1&(Y<<1|_>>>31)),I=f+h|0,c=UI((E=_+E|0)^c,y^(_=E>>>0<_>>>0?I+1|0:I),40),I=Q+(b=f)|0,h=(y=B+c|0)>>>0>>0?I+1|0:I,Q=Ig(c,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+h|0,I=(B=Q+y|0)>>>0>>0?I+1|0:I,Q=B,B^=a,a=I,B=UI(B,F^I,48),I=_+(F=f)|0,h=(y=B+E|0)>>>0>>0?I+1|0:I,E=(_=Ig(B,0,E<<1&-2,1&(_<<1|E>>>31)))+y|0,I=f+h|0,i[o+520>>2]=E,I=E>>>0<_>>>0?I+1|0:I,i[o+524>>2]=I,i[o+896>>2]=B,i[o+900>>2]=F,i[o+136>>2]=Q,i[o+140>>2]=a,W=o,V=UI(r^e,t^w,1),i[W+392>>2]=V,i[o+396>>2]=f,W=o,V=UI(E^c,I^b,1),i[W+256>>2]=V,i[o+260>>2]=f,8!=(0|(A=A+1|0)););for(I=Ng(g,C,1024),A=0;B=i[(o=(g=A<<3)+I|0)>>2],Q=i[(_=(E=a=C+1024|0)+g|0)>>2],_=i[o+4>>2]^i[_+4>>2],i[o>>2]=B^Q,i[o+4>>2]=_,_=i[(o=(B=8|g)+I|0)>>2],E=i[(B=B+E|0)>>2],B=i[o+4>>2]^i[B+4>>2],i[o>>2]=E^_,i[o+4>>2]=B,E=i[(o=(B=16|g)+I|0)>>2],_=i[(B=B+a|0)>>2],B=i[o+4>>2]^i[B+4>>2],i[o>>2]=E^_,i[o+4>>2]=B,B=i[(g=(o=24|g)+I|0)>>2],E=i[(o=o+a|0)>>2],o=i[g+4>>2]^i[o+4>>2],i[g>>2]=B^E,i[g+4>>2]=o,128!=(0|(A=A+4|0)););s=C+2048|0}function G(A,I,g){var C,B,Q,E,a,_,c,t,r,e,y,h,D,f,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0;for(s=C=s-800|0,k=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,S=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,G=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,M=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,w=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,K=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,U=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,Q=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,E=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,a=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,_=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,c=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,t=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,r=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,n=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=g- -64|0,e=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i[I>>2]=33620224^e,i[g+56>>2]=1496785429,i[g+60>>2]=1652156816,i[(A=g+48|0)>>2]=33620224,i[A+4>>2]=218629379,i[g+40>>2]=1110511904,i[g+44>>2]=-584534669,i[(B=g+32|0)>>2]=1427652059,i[B+4>>2]=-248528275,y=n^e,i[g>>2]=y,i[g+92>>2]=-584534669^r,i[g+88>>2]=1110511904^t,i[g+84>>2]=-248528275^c,i[(n=g+80|0)>>2]=1427652059^_,i[g+76>>2]=1652156816^a,i[g+72>>2]=1496785429^E,i[g+68>>2]=218629379^Q,U^=r,i[g+28>>2]=U,K^=t,i[g+24>>2]=K,h=w^c,i[g+20>>2]=h,M^=_,i[(w=g+16|0)>>2]=M,G^=a,i[g+12>>2]=G,D=S^E,i[g+8>>2]=D,f=k^Q,i[g+4>>2]=f,S=0;k=i[n+12>>2],i[C+792>>2]=i[n+8>>2],i[C+796>>2]=k,k=i[n+4>>2],i[C+784>>2]=i[n>>2],i[C+788>>2]=k,k=i[I+12>>2],i[C+760>>2]=i[I+8>>2],i[C+764>>2]=k,k=i[I+4>>2],i[C+752>>2]=i[I>>2],i[C+756>>2]=k,k=i[n+12>>2],i[C+744>>2]=i[n+8>>2],i[C+748>>2]=k,k=i[n+4>>2],i[C+736>>2]=i[n>>2],i[C+740>>2]=k,AI(k=C+768|0,C+752|0,C+736|0),p=i[C+780>>2],i[n+8>>2]=i[C+776>>2],i[n+12>>2]=p,p=i[C+772>>2],i[n>>2]=i[C+768>>2],i[n+4>>2]=p,p=i[A+12>>2],i[C+728>>2]=i[A+8>>2],i[C+732>>2]=p,p=i[A+4>>2],i[C+720>>2]=i[A>>2],i[C+724>>2]=p,p=i[I+12>>2],i[C+712>>2]=i[I+8>>2],i[C+716>>2]=p,p=i[I+4>>2],i[C+704>>2]=i[I>>2],i[C+708>>2]=p,AI(k,C+720|0,C+704|0),p=i[C+780>>2],i[I+8>>2]=i[C+776>>2],i[I+12>>2]=p,p=i[C+772>>2],i[I>>2]=i[C+768>>2],i[I+4>>2]=p,p=i[B+12>>2],i[C+696>>2]=i[B+8>>2],i[C+700>>2]=p,p=i[B+4>>2],i[C+688>>2]=i[B>>2],i[C+692>>2]=p,p=i[A+12>>2],i[C+680>>2]=i[A+8>>2],i[C+684>>2]=p,p=i[A+4>>2],i[C+672>>2]=i[A>>2],i[C+676>>2]=p,AI(k,C+688|0,C+672|0),p=i[C+780>>2],i[A+8>>2]=i[C+776>>2],i[A+12>>2]=p,p=i[C+772>>2],i[A>>2]=i[C+768>>2],i[A+4>>2]=p,p=i[w+12>>2],i[C+664>>2]=i[w+8>>2],i[C+668>>2]=p,p=i[w+4>>2],i[C+656>>2]=i[w>>2],i[C+660>>2]=p,p=i[B+12>>2],i[C+648>>2]=i[B+8>>2],i[C+652>>2]=p,p=i[B+4>>2],i[C+640>>2]=i[B>>2],i[C+644>>2]=p,AI(k,C+656|0,C+640|0),p=i[C+780>>2],i[B+8>>2]=i[C+776>>2],i[B+12>>2]=p,p=i[C+772>>2],i[B>>2]=i[C+768>>2],i[B+4>>2]=p,p=i[g+12>>2],i[C+632>>2]=i[g+8>>2],i[C+636>>2]=p,p=i[g+4>>2],i[C+624>>2]=i[g>>2],i[C+628>>2]=p,p=i[w+12>>2],i[C+616>>2]=i[w+8>>2],i[C+620>>2]=p,p=i[w+4>>2],i[C+608>>2]=i[w>>2],i[C+612>>2]=p,AI(k,C+624|0,C+608|0),p=i[C+780>>2],i[w+8>>2]=i[C+776>>2],i[w+12>>2]=p,p=i[C+772>>2],i[w>>2]=i[C+768>>2],i[w+4>>2]=p,p=i[C+796>>2],i[C+600>>2]=i[C+792>>2],i[C+604>>2]=p,p=i[C+788>>2],i[C+592>>2]=i[C+784>>2],i[C+596>>2]=p,p=i[g+12>>2],i[C+584>>2]=i[g+8>>2],i[C+588>>2]=p,p=i[g+4>>2],i[C+576>>2]=i[g>>2],i[C+580>>2]=p,AI(k,C+592|0,C+576|0),p=i[C+768>>2],F=i[C+772>>2],N=i[C+776>>2],i[g+12>>2]=i[C+780>>2]^a,i[g+8>>2]=N^E,i[g+4>>2]=F^Q,i[g>>2]=p^e,p=i[n+12>>2],i[C+792>>2]=i[n+8>>2],i[C+796>>2]=p,p=i[n+4>>2],i[C+784>>2]=i[n>>2],i[C+788>>2]=p,p=i[I+12>>2],i[C+568>>2]=i[I+8>>2],i[C+572>>2]=p,p=i[I+4>>2],i[C+560>>2]=i[I>>2],i[C+564>>2]=p,p=i[n+12>>2],i[C+552>>2]=i[n+8>>2],i[C+556>>2]=p,p=i[n+4>>2],i[C+544>>2]=i[n>>2],i[C+548>>2]=p,AI(k,C+560|0,C+544|0),p=i[C+780>>2],i[n+8>>2]=i[C+776>>2],i[n+12>>2]=p,p=i[C+772>>2],i[n>>2]=i[C+768>>2],i[n+4>>2]=p,p=i[A+12>>2],i[C+536>>2]=i[A+8>>2],i[C+540>>2]=p,p=i[A+4>>2],i[C+528>>2]=i[A>>2],i[C+532>>2]=p,p=i[I+12>>2],i[C+520>>2]=i[I+8>>2],i[C+524>>2]=p,p=i[I+4>>2],i[C+512>>2]=i[I>>2],i[C+516>>2]=p,AI(k,C+528|0,C+512|0),p=i[C+780>>2],i[I+8>>2]=i[C+776>>2],i[I+12>>2]=p,p=i[C+772>>2],i[I>>2]=i[C+768>>2],i[I+4>>2]=p,p=i[B+12>>2],i[C+504>>2]=i[B+8>>2],i[C+508>>2]=p,p=i[B+4>>2],i[C+496>>2]=i[B>>2],i[C+500>>2]=p,p=i[A+12>>2],i[C+488>>2]=i[A+8>>2],i[C+492>>2]=p,p=i[A+4>>2],i[C+480>>2]=i[A>>2],i[C+484>>2]=p,AI(k,C+496|0,C+480|0),p=i[C+780>>2],i[A+8>>2]=i[C+776>>2],i[A+12>>2]=p,p=i[C+772>>2],i[A>>2]=i[C+768>>2],i[A+4>>2]=p,p=i[w+12>>2],i[C+472>>2]=i[w+8>>2],i[C+476>>2]=p,p=i[w+4>>2],i[C+464>>2]=i[w>>2],i[C+468>>2]=p,p=i[B+12>>2],i[C+456>>2]=i[B+8>>2],i[C+460>>2]=p,p=i[B+4>>2],i[C+448>>2]=i[B>>2],i[C+452>>2]=p,AI(k,C+464|0,C+448|0),p=i[C+780>>2],i[B+8>>2]=i[C+776>>2],i[B+12>>2]=p,p=i[C+772>>2],i[B>>2]=i[C+768>>2],i[B+4>>2]=p,p=i[g+12>>2],i[C+440>>2]=i[g+8>>2],i[C+444>>2]=p,p=i[g+4>>2],i[C+432>>2]=i[g>>2],i[C+436>>2]=p,p=i[w+12>>2],i[C+424>>2]=i[w+8>>2],i[C+428>>2]=p,p=i[w+4>>2],i[C+416>>2]=i[w>>2],i[C+420>>2]=p,AI(k,C+432|0,C+416|0),p=i[C+780>>2],i[w+8>>2]=i[C+776>>2],i[w+12>>2]=p,p=i[C+772>>2],i[w>>2]=i[C+768>>2],i[w+4>>2]=p,p=i[C+796>>2],i[C+408>>2]=i[C+792>>2],i[C+412>>2]=p,p=i[C+788>>2],i[C+400>>2]=i[C+784>>2],i[C+404>>2]=p,p=i[g+12>>2],i[C+392>>2]=i[g+8>>2],i[C+396>>2]=p,p=i[g+4>>2],i[C+384>>2]=i[g>>2],i[C+388>>2]=p,AI(k,C+400|0,C+384|0),p=i[C+768>>2],F=i[C+772>>2],N=i[C+776>>2],i[g+12>>2]=i[C+780>>2]^r,i[g+8>>2]=N^t,i[g+4>>2]=F^c,i[g>>2]=p^_,p=i[n+12>>2],i[C+792>>2]=i[n+8>>2],i[C+796>>2]=p,p=i[n+4>>2],i[C+784>>2]=i[n>>2],i[C+788>>2]=p,p=i[I+12>>2],i[C+376>>2]=i[I+8>>2],i[C+380>>2]=p,p=i[I+4>>2],i[C+368>>2]=i[I>>2],i[C+372>>2]=p,p=i[n+12>>2],i[C+360>>2]=i[n+8>>2],i[C+364>>2]=p,p=i[n+4>>2],i[C+352>>2]=i[n>>2],i[C+356>>2]=p,AI(k,C+368|0,C+352|0),p=i[C+780>>2],i[n+8>>2]=i[C+776>>2],i[n+12>>2]=p,p=i[C+772>>2],i[n>>2]=i[C+768>>2],i[n+4>>2]=p,p=i[A+12>>2],i[C+344>>2]=i[A+8>>2],i[C+348>>2]=p,p=i[A+4>>2],i[C+336>>2]=i[A>>2],i[C+340>>2]=p,p=i[I+12>>2],i[C+328>>2]=i[I+8>>2],i[C+332>>2]=p,p=i[I+4>>2],i[C+320>>2]=i[I>>2],i[C+324>>2]=p,AI(k,C+336|0,C+320|0),p=i[C+780>>2],i[I+8>>2]=i[C+776>>2],i[I+12>>2]=p,p=i[C+772>>2],i[I>>2]=i[C+768>>2],i[I+4>>2]=p,p=i[B+12>>2],i[C+312>>2]=i[B+8>>2],i[C+316>>2]=p,p=i[B+4>>2],i[C+304>>2]=i[B>>2],i[C+308>>2]=p,p=i[A+12>>2],i[C+296>>2]=i[A+8>>2],i[C+300>>2]=p,p=i[A+4>>2],i[C+288>>2]=i[A>>2],i[C+292>>2]=p,AI(k,C+304|0,C+288|0),p=i[C+780>>2],i[A+8>>2]=i[C+776>>2],i[A+12>>2]=p,p=i[C+772>>2],i[A>>2]=i[C+768>>2],i[A+4>>2]=p,p=i[w+12>>2],i[C+280>>2]=i[w+8>>2],i[C+284>>2]=p,p=i[w+4>>2],i[C+272>>2]=i[w>>2],i[C+276>>2]=p,p=i[B+12>>2],i[C+264>>2]=i[B+8>>2],i[C+268>>2]=p,p=i[B+4>>2],i[C+256>>2]=i[B>>2],i[C+260>>2]=p,AI(k,C+272|0,C+256|0),p=i[C+780>>2],i[B+8>>2]=i[C+776>>2],i[B+12>>2]=p,p=i[C+772>>2],i[B>>2]=i[C+768>>2],i[B+4>>2]=p,p=i[g+12>>2],i[C+248>>2]=i[g+8>>2],i[C+252>>2]=p,p=i[g+4>>2],i[C+240>>2]=i[g>>2],i[C+244>>2]=p,p=i[w+12>>2],i[C+232>>2]=i[w+8>>2],i[C+236>>2]=p,p=i[w+4>>2],i[C+224>>2]=i[w>>2],i[C+228>>2]=p,AI(k,C+240|0,C+224|0),p=i[C+780>>2],i[w+8>>2]=i[C+776>>2],i[w+12>>2]=p,p=i[C+772>>2],i[w>>2]=i[C+768>>2],i[w+4>>2]=p,p=i[C+796>>2],i[C+216>>2]=i[C+792>>2],i[C+220>>2]=p,p=i[C+788>>2],i[C+208>>2]=i[C+784>>2],i[C+212>>2]=p,p=i[g+12>>2],i[C+200>>2]=i[g+8>>2],i[C+204>>2]=p,p=i[g+4>>2],i[C+192>>2]=i[g>>2],i[C+196>>2]=p,AI(k,C+208|0,C+192|0),p=i[C+768>>2],F=i[C+772>>2],N=i[C+776>>2],i[g+12>>2]=G^i[C+780>>2],i[g+8>>2]=N^D,i[g+4>>2]=F^f,i[g>>2]=p^y,p=i[n+12>>2],i[C+792>>2]=i[n+8>>2],i[C+796>>2]=p,p=i[n+4>>2],i[C+784>>2]=i[n>>2],i[C+788>>2]=p,p=i[I+12>>2],i[C+184>>2]=i[I+8>>2],i[C+188>>2]=p,p=i[I+4>>2],i[C+176>>2]=i[I>>2],i[C+180>>2]=p,p=i[n+12>>2],i[C+168>>2]=i[n+8>>2],i[C+172>>2]=p,p=i[n+4>>2],i[C+160>>2]=i[n>>2],i[C+164>>2]=p,AI(k,C+176|0,C+160|0),p=i[C+780>>2],i[n+8>>2]=i[C+776>>2],i[n+12>>2]=p,p=i[C+772>>2],i[n>>2]=i[C+768>>2],i[n+4>>2]=p,p=i[A+12>>2],i[C+152>>2]=i[A+8>>2],i[C+156>>2]=p,p=i[A+4>>2],i[C+144>>2]=i[A>>2],i[C+148>>2]=p,p=i[I+12>>2],i[C+136>>2]=i[I+8>>2],i[C+140>>2]=p,p=i[I+4>>2],i[C+128>>2]=i[I>>2],i[C+132>>2]=p,AI(k,C+144|0,C+128|0),p=i[C+780>>2],i[I+8>>2]=i[C+776>>2],i[I+12>>2]=p,p=i[C+772>>2],i[I>>2]=i[C+768>>2],i[I+4>>2]=p,p=i[B+12>>2],i[C+120>>2]=i[B+8>>2],i[C+124>>2]=p,p=i[B+4>>2],i[C+112>>2]=i[B>>2],i[C+116>>2]=p,p=i[A+12>>2],i[C+104>>2]=i[A+8>>2],i[C+108>>2]=p,p=i[A+4>>2],i[C+96>>2]=i[A>>2],i[C+100>>2]=p,AI(k,C+112|0,C+96|0),p=i[C+780>>2],i[A+8>>2]=i[C+776>>2],i[A+12>>2]=p,p=i[C+772>>2],i[A>>2]=i[C+768>>2],i[A+4>>2]=p,p=i[w+12>>2],i[C+88>>2]=i[w+8>>2],i[C+92>>2]=p,p=i[w+4>>2],i[C+80>>2]=i[w>>2],i[C+84>>2]=p,p=i[B+12>>2],i[C+72>>2]=i[B+8>>2],i[C+76>>2]=p,p=i[B+4>>2],i[C+64>>2]=i[B>>2],i[C+68>>2]=p,AI(k,C+80|0,C- -64|0),p=i[C+780>>2],i[B+8>>2]=i[C+776>>2],i[B+12>>2]=p,p=i[C+772>>2],i[B>>2]=i[C+768>>2],i[B+4>>2]=p,p=i[g+12>>2],i[C+56>>2]=i[g+8>>2],i[C+60>>2]=p,p=i[g+4>>2],i[C+48>>2]=i[g>>2],i[C+52>>2]=p,p=i[w+12>>2],i[C+40>>2]=i[w+8>>2],i[C+44>>2]=p,p=i[w+4>>2],i[C+32>>2]=i[w>>2],i[C+36>>2]=p,AI(k,C+48|0,C+32|0),p=i[C+780>>2],i[w+8>>2]=i[C+776>>2],i[w+12>>2]=p,p=i[C+772>>2],i[w>>2]=i[C+768>>2],i[w+4>>2]=p,p=i[C+796>>2],i[C+24>>2]=i[C+792>>2],i[C+28>>2]=p,p=i[C+788>>2],i[C+16>>2]=i[C+784>>2],i[C+20>>2]=p,p=i[g+12>>2],i[C+8>>2]=i[g+8>>2],i[C+12>>2]=p,p=i[g+4>>2],i[C>>2]=i[g>>2],i[C+4>>2]=p,AI(k,C+16|0,C),k=i[C+768>>2],p=i[C+772>>2],F=i[C+776>>2],i[g+12>>2]=U^i[C+780>>2],i[g+8>>2]=F^K,i[g+4>>2]=p^h,i[g>>2]=k^M,4!=(0|(S=S+1|0)););s=C+800|0}function M(A,I){var g,B,E,a,_,c,t,r,e,y,h,D,p,w,n,k,F,S,N,G,M,K,U=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0;for(s=g=s-48|0,Y=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,H=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,C[A+24|0]=H,C[A+25|0]=H>>>8,C[A+26|0]=H>>>16,C[A+27|0]=H>>>24,C[A+28|0]=Y,C[A+29|0]=Y>>>8,C[A+30|0]=Y>>>16,C[A+31|0]=Y>>>24,Y=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,H=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,C[0|A]=H,C[A+1|0]=H>>>8,C[A+2|0]=H>>>16,C[A+3|0]=H>>>24,C[A+4|0]=Y,C[A+5|0]=Y>>>8,C[A+6|0]=Y>>>16,C[A+7|0]=Y>>>24,Y=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,H=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,C[A+16|0]=H,C[A+17|0]=H>>>8,C[A+18|0]=H>>>16,C[A+19|0]=H>>>24,C[A+20|0]=Y,C[A+21|0]=Y>>>8,C[A+22|0]=Y>>>16,C[A+23|0]=Y>>>24,H=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,I=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,C[A+12|0]=H,C[A+13|0]=H>>>8,C[A+14|0]=H>>>16,C[A+15|0]=H>>>24,I=o[A+31|0],C[A+31|0]=127&I,fA(g,A),y=128&I,s=I=s-960|0,v(H=I+304|0,g),i[I+304>>2]=i[I+304>>2]+1,LA(H,H),Y=Ig(H=i[I+340>>2],H>>31,486662,0),H=f,l=(P=Y+16777216|0)>>>0<16777216?H+1|0:H,x=Y-(-33554432&P)|0,U=Ig(H=i[I+336>>2],H>>31,486662,0),Y=f,J=Ig(H=i[I+332>>2],H>>31,486662,0),H=f,u=U,U=(U=(H=(m=J+16777216|0)>>>0<16777216?H+1|0:H)>>25)+Y|0,H=(H=(33554431&H)<<7|m>>>25)>>>0>(d=u+H|0)>>>0?U+1|0:U,B=((67108863&(H=(Y=d+33554432|0)>>>0<33554432?H+1|0:H))<<6|Y>>>26)+x|0,i[I+292>>2]=0-B,W=d-(-67108864&Y)|0,i[I+288>>2]=0-W,x=J-(-33554432&m)|0,Y=Ig(H=i[I+328>>2],H>>31,486662,0),H=f,m=Ig(U=i[I+324>>2],U>>31,486662,0),U=f,u=Y,H=H+(Y=(U=(d=m+16777216|0)>>>0<16777216?U+1|0:U)>>25)|0,H=(U=u+(J=(33554431&U)<<7|d>>>25)|0)>>>0>>0?H+1|0:H,E=((67108863&(H=(Y=U+33554432|0)>>>0<33554432?H+1|0:H))<<6|Y>>>26)+x|0,i[I+284>>2]=0-E,a=U-(-67108864&Y)|0,i[I+280>>2]=0-a,x=m-(-33554432&d)|0,U=Ig(H=i[I+320>>2],H>>31,486662,0),H=f,m=Ig(Y=i[I+316>>2],Y>>31,486662,0),Y=f,u=U,H=(U=(Y=(d=m+16777216|0)>>>0<16777216?Y+1|0:Y)>>25)+H|0,U=H=(Y=u+(J=(33554431&Y)<<7|d>>>25)|0)>>>0>>0?H+1|0:H,_=((67108863&(U=(J=Y+33554432|0)>>>0<33554432?U+1|0:U))<<6|J>>>26)+x|0,i[I+276>>2]=0-_,c=Y-(-67108864&J)|0,i[I+272>>2]=0-c,u=m-(-33554432&d)|0,H=Ig(H=i[I+312>>2],H>>31,486662,0),x=f,J=Ig(Y=i[I+308>>2],Y>>31,486662,0),U=f,Y=(33554431&(U=(m=J+16777216|0)>>>0<16777216?U+1|0:U))<<7|m>>>25,U=(U>>25)+x|0,Y=Y>>>0>(d=Y+H|0)>>>0?U+1|0:U,t=((67108863&(Y=(H=d+33554432|0)>>>0<33554432?Y+1|0:Y))<<6|H>>>26)+u|0,i[I+268>>2]=0-t,r=d-(-67108864&H)|0,i[I+264>>2]=0-r,d=J-(-33554432&m)|0,Y=Ig((33554431&l)<<7|P>>>25,l>>25,19,0),H=f,J=Y,Y=Ig(U=i[I+304>>2],U>>31,486662,0),H=f+H|0,Y=(U=J+Y|0)>>>0>>0?H+1|0:H,e=((67108863&(Y=(H=U+33554432|0)>>>0<33554432?Y+1|0:Y))<<6|H>>>26)+d|0,i[I+260>>2]=0-e,L=U-(-67108864&H)|0,i[I+256>>2]=0-L,R(Y=I+208|0,H=I+256|0),b(I+160|0,H,Y),h=i[I+196>>2],D=i[I+160>>2],q=i[I+208>>2],p=i[I+164>>2],w=i[I+168>>2],z=i[I+212>>2],j=i[I+216>>2],n=i[I+172>>2],k=i[I+176>>2],X=i[I+220>>2],O=i[I+224>>2],F=i[I+180>>2],S=i[I+184>>2],u=i[I+228>>2],x=i[I+232>>2],N=i[I+188>>2],G=i[I+192>>2],Y=Ig(H=i[I+244>>2],H>>31,486662,0),H=f,l=(P=Y+16777216|0)>>>0<16777216?H+1|0:H,M=Y-(-33554432&P)|0,H=Ig(H=i[I+240>>2],H>>31,486662,0),K=f,J=Ig(Y=i[I+236>>2],Y>>31,486662,0),U=f,Y=H,H=(33554431&(U=(m=J+16777216|0)>>>0<16777216?U+1|0:U))<<7|m>>>25,U=(U>>25)+K|0,H=H>>>0>(d=Y+H|0)>>>0?U+1|0:U,U=((67108863&(H=(Y=d+33554432|0)>>>0<33554432?H+1|0:H))<<6|Y>>>26)+M|0,i[I+244>>2]=U,i[I+388>>2]=U+(h-B|0),H=d-(-67108864&Y)|0,i[I+240>>2]=H,i[I+384>>2]=H+(G-W|0),W=J-(-33554432&m)|0,H=Ig(x,x>>31,486662,0),J=f,m=Ig(u,u>>31,486662,0),Y=f,u=H,H=(H=(Y=(d=m+16777216|0)>>>0<16777216?Y+1|0:Y)>>25)+J|0,U=H=(U=(33554431&Y)<<7|d>>>25)>>>0>(Y=u+U|0)>>>0?H+1|0:H,J=((67108863&(U=(J=Y+33554432|0)>>>0<33554432?U+1|0:U))<<6|(H=J)>>>26)+W|0,i[I+236>>2]=J,i[I+380>>2]=J+(N-E|0),H=Y-(-67108864&H)|0,i[I+232>>2]=H,i[I+376>>2]=H+(S-a|0),x=m-(-33554432&d)|0,U=Ig(O,O>>31,486662,0),Y=f,J=Ig(X,X>>31,486662,0),H=f,u=U,U=(U=(H=(m=J+16777216|0)>>>0<16777216?H+1|0:H)>>25)+Y|0,Y=(H=(33554431&H)<<7|m>>>25)>>>0>(d=u+H|0)>>>0?U+1|0:U,U=((67108863&(Y=(H=d+33554432|0)>>>0<33554432?Y+1|0:Y))<<6|H>>>26)+x|0,i[I+228>>2]=U,i[I+372>>2]=U+(F-_|0),H=d-(-67108864&H)|0,i[I+224>>2]=H,i[I+368>>2]=H+(k-c|0),x=J-(-33554432&m)|0,H=Ig(j,j>>31,486662,0),Y=f,m=Ig(z,z>>31,486662,0),U=f,u=H,Y=(H=(U=(d=m+16777216|0)>>>0<16777216?U+1|0:U)>>25)+Y|0,H=Y=(U=u+(J=(33554431&U)<<7|d>>>25)|0)>>>0>>0?Y+1|0:Y,J=((67108863&(H=(J=U+33554432|0)>>>0<33554432?H+1|0:H))<<6|(Y=J)>>>26)+x|0,i[I+220>>2]=J,i[I+364>>2]=J+(n-t|0),H=U-(-67108864&Y)|0,i[I+216>>2]=H,i[I+360>>2]=H+(w-r|0),d=m-(-33554432&d)|0,Y=Ig((33554431&l)<<7|P>>>25,l>>25,19,0),H=f,U=Y,Y=Ig(q,q>>31,486662,0),H=f+H|0,H=(U=U+Y|0)>>>0>>0?H+1|0:H,l=((67108863&(H=(Y=U+33554432|0)>>>0<33554432?H+1|0:H))<<6|Y>>>26)+d|0,i[I+212>>2]=l,i[I+356>>2]=l+(p-e|0),H=U-(-67108864&Y)|0,i[I+208>>2]=H,i[I+352>>2]=H+(D-L|0),b(H=I+624|0,Y=I+352|0,Y),b(I,Y,H),R(Y=I+784|0,I),R(Y,Y),b(H=I+912|0,I,Y),R(Y=I+576|0,H),R(Y,Y),R(Y,Y),R(Y,Y),b(U=I+528|0,H,Y),R(U,U),R(U,U),b(U,U,I),H=i[I+564>>2],i[I+512>>2]=i[I+560>>2],i[I+516>>2]=H,H=i[I+556>>2],i[I+504>>2]=i[I+552>>2],i[I+508>>2]=H,H=i[I+548>>2],i[I+496>>2]=i[I+544>>2],i[I+500>>2]=H,H=i[I+540>>2],i[I+488>>2]=i[I+536>>2],i[I+492>>2]=H,H=i[I+532>>2],i[I+480>>2]=i[I+528>>2],i[I+484>>2]=H,R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),b(U,U,H=I+480|0),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),b(U,U,H),H=i[I+564>>2],i[I+464>>2]=i[I+560>>2],i[I+468>>2]=H,H=i[I+556>>2],i[I+456>>2]=i[I+552>>2],i[I+460>>2]=H,H=i[I+548>>2],i[I+448>>2]=i[I+544>>2],i[I+452>>2]=H,H=i[I+540>>2],i[I+440>>2]=i[I+536>>2],i[I+444>>2]=H,H=i[I+532>>2],i[I+432>>2]=i[I+528>>2],i[I+436>>2]=H,R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),b(U,U,Y=I+432|0),H=i[I+564>>2],i[I+464>>2]=i[I+560>>2],i[I+468>>2]=H,H=i[I+556>>2],i[I+456>>2]=i[I+552>>2],i[I+460>>2]=H,H=i[I+548>>2],i[I+448>>2]=i[I+544>>2],i[I+452>>2]=H,H=i[I+540>>2],i[I+440>>2]=i[I+536>>2],i[I+444>>2]=H,H=i[I+532>>2],i[I+432>>2]=i[I+528>>2],i[I+436>>2]=H,R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),b(U,U,Y),H=i[I+564>>2],i[I+464>>2]=i[I+560>>2],i[I+468>>2]=H,H=i[I+556>>2],i[I+456>>2]=i[I+552>>2],i[I+460>>2]=H,H=i[I+548>>2],i[I+448>>2]=i[I+544>>2],i[I+452>>2]=H,H=i[I+540>>2],i[I+440>>2]=i[I+536>>2],i[I+444>>2]=H,H=i[I+532>>2],i[I+432>>2]=i[I+528>>2],i[I+436>>2]=H;R(H=I+528|0,H),120!=(0|(V=V+1|0)););b(H,H,I+432|0),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),b(H,H,I+480|0),R(H,H),R(H,H),R(H,H),b(H,H,I),R(H,H),QI(I+400|0,H),q=i[I+256>>2],z=i[I+260>>2],j=i[I+264>>2],X=i[I+268>>2],O=i[I+272>>2],d=i[I+276>>2],l=i[I+280>>2],U=i[I+284>>2],Y=i[I+288>>2],u=(L=0-(1&C[I+401|0])|0)&(0-(H=i[I+292>>2])^H)^H,i[I+660>>2]=u,x=Y^L&(Y^0-Y),i[I+656>>2]=x,P=U^L&(U^0-U),i[I+652>>2]=P,J=l^L&(l^0-l),i[I+648>>2]=J,m=d^L&(d^0-d),i[I+644>>2]=m,d=O^L&(O^0-O),i[I+640>>2]=d,l=X^L&(X^0-X),i[I+636>>2]=l,U=j^L&(j^0-j),i[I+632>>2]=U,Y=z^L&(z^0-z),i[I+628>>2]=Y,H=(q^L&(q^0-q))-(486662&L)|0,i[I+624>>2]=H+1,i[I+820>>2]=u,i[I+816>>2]=x,i[I+812>>2]=P,i[I+808>>2]=J,i[I+804>>2]=m,i[I+800>>2]=d,i[I+796>>2]=l,i[I+792>>2]=U,i[I+788>>2]=Y,i[I+784>>2]=H-1,LA(I,I+624|0),b(H=I+912|0,I+784|0,I),QI(A,H),C[A+31|0]=o[A+31|0]|y,MA(I,A)&&(DB(),Q()),H=i[I+36>>2],i[I+816>>2]=i[I+32>>2],i[I+820>>2]=H,H=i[I+28>>2],i[I+808>>2]=i[I+24>>2],i[I+812>>2]=H,H=i[I+20>>2],i[I+800>>2]=i[I+16>>2],i[I+804>>2]=H,H=i[I+12>>2],i[I+792>>2]=i[I+8>>2],i[I+796>>2]=H,H=i[I+52>>2],i[I+832>>2]=i[I+48>>2],i[I+836>>2]=H,H=i[I+60>>2],i[I+840>>2]=i[I+56>>2],i[I+844>>2]=H,H=i[4+(Y=I- -64|0)>>2],i[I+848>>2]=i[Y>>2],i[I+852>>2]=H,H=i[I+76>>2],i[I+856>>2]=i[I+72>>2],i[I+860>>2]=H,H=i[I+4>>2],i[I+784>>2]=i[I>>2],i[I+788>>2]=H,H=i[I+44>>2],i[I+824>>2]=i[I+40>>2],i[I+828>>2]=H,H=i[I+116>>2],i[I+896>>2]=i[I+112>>2],i[I+900>>2]=H,H=i[I+108>>2],i[I+888>>2]=i[I+104>>2],i[I+892>>2]=H,H=i[I+100>>2],i[I+880>>2]=i[I+96>>2],i[I+884>>2]=H,H=i[I+92>>2],i[I+872>>2]=i[I+88>>2],i[I+876>>2]=H,H=i[I+84>>2],i[I+864>>2]=i[I+80>>2],i[I+868>>2]=H,KA(J=I+624|0,m=I+784|0),b(m,J,d=I+744|0),b(Y=I+824|0,U=I+664|0,l=I+704|0),b(H=I+864|0,l,d),KA(J,m),b(m,J,d),b(Y,U,l),b(H,l,d),KA(J,m),b(I,J,d),b(Y=I+40|0,U,l),b(H=I+80|0,l,d),b(I+120|0,J,U),LA(J,H),b(m,I,J),b(H=I+912|0,Y,J),QI(A,H),QI(I+576|0,m),C[A+31|0]=o[A+31|0]^o[I+576|0]<<7,s=I+960|0,s=g+48|0}function K(A){var I,g=0,C=0,B=0,Q=0,a=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0;s=I=s-16|0;A:{I:{g:{C:{B:{Q:{i:{o:{E:{a:{if((A|=0)>>>0<=244){if(3&(g=(Q=i[9405])>>>(A=(t=A>>>0<11?16:A+11&504)>>>3|0)|0)){A=37660+(g=(C=A+(1&~g)|0)<<3)|0,g=i[g+37668>>2],(0|A)!=(0|(B=i[g+8>>2]))?(i[B+12>>2]=A,i[A+8>>2]=B):(h=37620,D=Lg(-2,C)&Q,i[h>>2]=D),A=g+8|0,C<<=3,i[g+4>>2]=3|C,i[4+(g=g+C|0)>>2]=1|i[g+4>>2];break A}if((r=i[9407])>>>0>=t>>>0)break a;if(g){g=37660+(C=(A=FC((0-(C=2<>2],(0|g)!=(0|(B=i[C+8>>2]))?(i[B+12>>2]=g,i[g+8>>2]=B):(Q=Lg(-2,A)&Q,i[9405]=Q),i[C+4>>2]=3|t,a=(A<<=3)-t|0,i[4+(c=C+t|0)>>2]=1|a,i[A+C>>2]=a,r&&(A=37660+(-8&r)|0,B=i[9410],(g=1<<(r>>>3))&Q?g=i[A+8>>2]:(i[9405]=g|Q,g=A),i[A+8>>2]=B,i[g+12>>2]=B,i[B+12>>2]=A,i[B+8>>2]=g),A=C+8|0,i[9410]=c,i[9407]=a;break A}if(!(y=i[9406]))break a;for(C=i[37924+(FC(y)<<2)>>2],a=(-8&i[C+4>>2])-t|0,g=C;(A=i[g+16>>2])||(A=i[g+20>>2]);)a=(g=(B=(-8&i[A+4>>2])-t|0)>>>0>>0)?B:a,C=g?A:C,g=A;if(e=i[C+24>>2],(0|C)!=(0|(A=i[C+12>>2]))){g=i[C+8>>2],i[g+12>>2]=A,i[A+8>>2]=g;break I}if(g=i[C+20>>2])B=C+20|0;else{if(!(g=i[C+16>>2]))break E;B=C+16|0}for(;c=B,B=(A=g)+20|0,(g=i[A+20>>2])||(B=A+16|0,g=i[A+16>>2]););i[c>>2]=0;break I}if(t=-1,!(A>>>0>4294967231)&&(t=-8&(g=A+11|0),c=i[9406])){r=31,a=0-t|0,A>>>0<=16777204&&(r=62+((t>>>38-(A=_(g>>>8|0))&1)-(A<<1)|0)|0);_:{c:{if(g=i[37924+(r<<2)>>2])for(A=0,C=t<<(31!=(0|r)?25-(r>>>1|0):0);;){if(!((Q=(-8&i[g+4>>2])-t|0)>>>0>=a>>>0||(B=g,a=Q))){a=0,A=g;break c}if(Q=i[g+20>>2],g=i[16+((C>>>29&4)+g|0)>>2],A=Q?(0|Q)==(0|g)?A:Q:A,C<<=1,!g)break}else A=0;if(!(A|B)){if(B=0,!(A=(0-(A=2<>2]}if(!A)break _}for(;a=(g=(C=(-8&i[A+4>>2])-t|0)>>>0>>0)?C:a,B=g?A:B,A=(g=i[A+16>>2])||i[A+20>>2];);}if(!(!B|i[9407]-t>>>0<=a>>>0)){if(r=i[B+24>>2],(0|B)!=(0|(A=i[B+12>>2]))){g=i[B+8>>2],i[g+12>>2]=A,i[A+8>>2]=g;break g}if(g=i[B+20>>2])C=B+20|0;else{if(!(g=i[B+16>>2]))break o;C=B+16|0}for(;Q=C,C=(A=g)+20|0,(g=i[A+20>>2])||(C=A+16|0,g=i[A+16>>2]););i[Q>>2]=0;break g}}}if((B=i[9407])>>>0>=t>>>0){A=i[9410],(g=B-t|0)>>>0>=16?(i[4+(C=A+t|0)>>2]=1|g,i[A+B>>2]=g,i[A+4>>2]=3|t):(i[A+4>>2]=3|B,i[4+(g=A+B|0)>>2]=1|i[g+4>>2],C=0,g=0),i[9407]=g,i[9410]=C,A=A+8|0;break A}if((C=i[9408])>>>0>t>>>0){g=C-t|0,i[9408]=g,C=(A=i[9411])+t|0,i[9411]=C,i[C+4>>2]=1|g,i[A+4>>2]=3|t,A=A+8|0;break A}if(A=0,a=t+47|0,i[9523]?g=i[9525]:(i[9526]=-1,i[9527]=-1,i[9524]=4096,i[9525]=4096,i[9523]=I+12&-16^1431655768,i[9528]=0,i[9516]=0,g=4096),(g=(Q=a+g|0)&(c=0-g|0))>>>0<=t>>>0)break A;if((r=i[9515])&&(B=(e=i[9513])+g|0)>>>0<=e>>>0|B>>>0>r>>>0)break A;a:{if(!(4&o[38064])){_:{c:{t:{r:{if(B=i[9411])for(A=38068;;){if((r=i[A>>2])>>>0<=B>>>0&B>>>0>2]>>>0)break r;if(!(A=i[A+8>>2]))break}if(-1==(0|(C=cg(0))))break _;if(Q=g,(B=(A=i[9524])-1|0)&C&&(Q=(g-C|0)+(C+B&0-A)|0),Q>>>0<=t>>>0)break _;if((B=i[9515])&&(A=(c=i[9513])+Q|0)>>>0<=c>>>0|A>>>0>B>>>0)break _;if((0|C)!=(0|(A=cg(Q))))break t;break a}if((0|(C=cg(Q=c&Q-C)))==(i[A>>2]+i[A+4>>2]|0))break c;A=C}if(-1==(0|A))break _;if(t+48>>>0<=Q>>>0){C=A;break a}if(-1==(0|cg(C=(C=i[9525])+(a-Q|0)&0-C)))break _;Q=C+Q|0,C=A;break a}if(-1!=(0|C))break a}i[9516]=4|i[9516]}if(-1==(0|(C=cg(g)))|-1==(0|(A=cg(0)))|A>>>0<=C>>>0)break B;if((Q=A-C|0)>>>0<=t+40>>>0)break B}A=i[9513]+Q|0,i[9513]=A,A>>>0>E[9514]&&(i[9514]=A);a:{if(a=i[9411]){for(A=38068;;){if(((g=i[A>>2])+(B=i[A+4>>2])|0)==(0|C))break a;if(!(A=i[A+8>>2]))break}break i}for((A=i[9409])>>>0<=C>>>0&&A||(i[9409]=C),A=0,i[9518]=Q,i[9517]=C,i[9413]=-1,i[9414]=i[9523],i[9520]=0;B=37660+(g=A<<3)|0,i[g+37668>>2]=B,i[g+37672>>2]=B,32!=(0|(A=A+1|0)););B=(A=Q-40|0)-(g=-8-C&7)|0,i[9408]=B,g=g+C|0,i[9411]=g,i[g+4>>2]=1|B,i[4+(A+C|0)>>2]=40,i[9412]=i[9527];break Q}if(8&i[A+12>>2]|C>>>0<=a>>>0|g>>>0>a>>>0)break i;i[A+4>>2]=B+Q,g=(A=-8-a&7)+a|0,i[9411]=g,A=(C=i[9408]+Q|0)-A|0,i[9408]=A,i[g+4>>2]=1|A,i[4+(C+a|0)>>2]=40,i[9412]=i[9527];break Q}A=0;break I}A=0;break g}E[9409]>C>>>0&&(i[9409]=C),B=C+Q|0,A=38068;i:{for(;;){if((0|(g=i[A>>2]))!=(0|B)){if(A=i[A+8>>2])continue;break i}break}if(!(8&o[A+12|0]))break C}for(A=38068;!((g=i[A>>2])>>>0<=a>>>0&&(B=g+i[A+4>>2]|0)>>>0>a>>>0);)A=i[A+8>>2];for(c=(A=Q-40|0)-(g=-8-C&7)|0,i[9408]=c,g=g+C|0,i[9411]=g,i[g+4>>2]=1|c,i[4+(A+C|0)>>2]=40,i[9412]=i[9527],i[(g=(A=(B+(39-B&7)|0)-47|0)>>>0>>0?a:A)+4>>2]=27,A=i[9520],i[g+16>>2]=i[9519],i[g+20>>2]=A,A=i[9518],i[g+8>>2]=i[9517],i[g+12>>2]=A,i[9519]=g+8,i[9518]=Q,i[9517]=C,i[9520]=0,A=g+24|0;i[A+4>>2]=7,C=A+8|0,A=A+4|0,C>>>0>>0;);if((0|g)!=(0|a)){i[g+4>>2]=-2&i[g+4>>2],C=g-a|0,i[a+4>>2]=1|C,i[g>>2]=C;i:if(C>>>0<=255)A=37660+(-8&C)|0,(g=i[9405])&(C=1<<(C>>>3))?g=i[A+8>>2]:(i[9405]=g|C,g=A),i[A+8>>2]=a,i[g+12>>2]=a,B=8,C=12;else{A=31,C>>>0<=16777215&&(A=62+((C>>>38-(A=_(C>>>8|0))&1)-(A<<1)|0)|0),i[a+28>>2]=A,i[a+16>>2]=0,i[a+20>>2]=0,g=37924+(A<<2)|0;o:{if((B=i[9406])&(Q=1<>>1|0):0),B=i[g>>2];;){if((0|C)==(-8&i[(g=B)+4>>2]))break o;if(B=A>>>29|0,A<<=1,!(B=i[16+(Q=(4&B)+g|0)>>2]))break}i[Q+16>>2]=a}else i[9406]=B|Q,i[g>>2]=a;i[a+24>>2]=g,A=g=a,B=12,C=8;break i}A=i[g+8>>2],i[A+12>>2]=a,i[g+8>>2]=a,i[a+8>>2]=A,A=0,B=12,C=24}i[B+a>>2]=g,i[C+a>>2]=A}}if(!((A=i[9408])>>>0<=t>>>0)){g=A-t|0,i[9408]=g,C=(A=i[9411])+t|0,i[9411]=C,i[C+4>>2]=1|g,i[A+4>>2]=3|t,A=A+8|0;break A}}i[9404]=48,A=0;break A}i[A>>2]=C,i[A+4>>2]=i[A+4>>2]+Q,i[4+(r=(-8-C&7)+C|0)>>2]=3|t,c=(Q=g+(-8-g&7)|0)-(a=t+r|0)|0;C:if(i[9411]!=(0|Q))if(i[9410]!=(0|Q)){if(1==(3&(A=i[Q+4>>2]))){e=-8&A,C=i[Q+12>>2];B:if(A>>>0<=255){if((0|(g=i[Q+8>>2]))==(0|C)){h=37620,D=i[9405]&Lg(-2,A>>>3|0),i[h>>2]=D;break B}i[g+12>>2]=C,i[C+8>>2]=g}else{t=i[Q+24>>2];Q:if((0|C)==(0|Q)){i:{if(A=i[Q+20>>2])g=Q+20|0;else{if(!(A=i[Q+16>>2]))break i;g=Q+16|0}for(;B=g,C=A,g=A+20|0,(A=i[A+20>>2])||(g=C+16|0,A=i[C+16>>2]););i[B>>2]=0;break Q}C=0}else A=i[Q+8>>2],i[A+12>>2]=C,i[C+8>>2]=A;if(t){A=i[Q+28>>2];Q:{if(i[(g=37924+(A<<2)|0)>>2]==(0|Q)){if(i[g>>2]=C,C)break Q;h=37624,D=i[9406]&Lg(-2,A),i[h>>2]=D;break B}if(i[t+(i[t+16>>2]==(0|Q)?16:20)>>2]=C,!C)break B}i[C+24>>2]=t,(A=i[Q+16>>2])&&(i[C+16>>2]=A,i[A+24>>2]=C),(A=i[Q+20>>2])&&(i[C+20>>2]=A,i[A+24>>2]=C)}}c=c+e|0,A=i[4+(Q=Q+e|0)>>2]}if(i[Q+4>>2]=-2&A,i[a+4>>2]=1|c,i[a+c>>2]=c,c>>>0<=255)A=37660+(-8&c)|0,(g=i[9405])&(C=1<<(c>>>3))?g=i[A+8>>2]:(i[9405]=g|C,g=A),i[A+8>>2]=a,i[g+12>>2]=a,i[a+12>>2]=A,i[a+8>>2]=g;else{C=31,c>>>0<=16777215&&(C=62+((c>>>38-(A=_(c>>>8|0))&1)-(A<<1)|0)|0),i[a+28>>2]=C,i[a+16>>2]=0,i[a+20>>2]=0,A=37924+(C<<2)|0;B:{if((g=i[9406])&(B=1<>>1|0):0),g=i[A>>2];;){if((-8&i[(A=g)+4>>2])==(0|c))break B;if(g=C>>>29|0,C<<=1,!(g=i[16+(B=(4&g)+A|0)>>2]))break}i[B+16>>2]=a}else i[9406]=g|B,i[A>>2]=a;i[a+24>>2]=A,i[a+12>>2]=a,i[a+8>>2]=a;break C}g=i[A+8>>2],i[g+12>>2]=a,i[A+8>>2]=a,i[a+24>>2]=0,i[a+12>>2]=A,i[a+8>>2]=g}}else i[9410]=a,A=i[9407]+c|0,i[9407]=A,i[a+4>>2]=1|A,i[A+a>>2]=A;else i[9411]=a,A=i[9408]+c|0,i[9408]=A,i[a+4>>2]=1|A;A=r+8|0;break A}g:if(r){g=i[B+28>>2];C:{if(i[(C=37924+(g<<2)|0)>>2]==(0|B)){if(i[C>>2]=A,A)break C;c=Lg(-2,g)&c,i[9406]=c;break g}if(i[r+(i[r+16>>2]==(0|B)?16:20)>>2]=A,!A)break g}i[A+24>>2]=r,(g=i[B+16>>2])&&(i[A+16>>2]=g,i[g+24>>2]=A),(g=i[B+20>>2])&&(i[A+20>>2]=g,i[g+24>>2]=A)}g:if(a>>>0<=15)A=a+t|0,i[B+4>>2]=3|A,i[4+(A=A+B|0)>>2]=1|i[A+4>>2];else if(i[B+4>>2]=3|t,i[4+(Q=B+t|0)>>2]=1|a,i[a+Q>>2]=a,a>>>0<=255)A=37660+(-8&a)|0,(g=i[9405])&(C=1<<(a>>>3))?g=i[A+8>>2]:(i[9405]=g|C,g=A),i[A+8>>2]=Q,i[g+12>>2]=Q,i[Q+12>>2]=A,i[Q+8>>2]=g;else{A=31,a>>>0<=16777215&&(A=62+((a>>>38-(A=_(a>>>8|0))&1)-(A<<1)|0)|0),i[Q+28>>2]=A,i[Q+16>>2]=0,i[Q+20>>2]=0,g=37924+(A<<2)|0;C:{if((C=1<>>1|0):0),g=i[g>>2];;){if(C=g,(-8&i[g+4>>2])==(0|a))break C;if(c=A>>>29|0,A<<=1,!(g=i[16+(c=g+(4&c)|0)>>2]))break}i[c+16>>2]=Q,i[Q+24>>2]=C}else i[9406]=C|c,i[g>>2]=Q,i[Q+24>>2]=g;i[Q+12>>2]=Q,i[Q+8>>2]=Q;break g}A=i[C+8>>2],i[A+12>>2]=Q,i[C+8>>2]=Q,i[Q+24>>2]=0,i[Q+12>>2]=C,i[Q+8>>2]=A}A=B+8|0;break A}I:if(e){g=i[C+28>>2];g:{if(i[(B=37924+(g<<2)|0)>>2]==(0|C)){if(i[B>>2]=A,A)break g;h=37624,D=Lg(-2,g)&y,i[h>>2]=D;break I}if(i[e+(i[e+16>>2]==(0|C)?16:20)>>2]=A,!A)break I}i[A+24>>2]=e,(g=i[C+16>>2])&&(i[A+16>>2]=g,i[g+24>>2]=A),(g=i[C+20>>2])&&(i[A+20>>2]=g,i[g+24>>2]=A)}a>>>0<=15?(A=a+t|0,i[C+4>>2]=3|A,i[4+(A=A+C|0)>>2]=1|i[A+4>>2]):(i[C+4>>2]=3|t,i[4+(c=C+t|0)>>2]=1|a,i[a+c>>2]=a,r&&(A=37660+(-8&r)|0,B=i[9410],(g=1<<(r>>>3))&Q?g=i[A+8>>2]:(i[9405]=g|Q,g=A),i[A+8>>2]=B,i[g+12>>2]=B,i[B+12>>2]=A,i[B+8>>2]=g),i[9410]=c,i[9407]=a),A=C+8|0}return s=I+16|0,0|A}function U(A,I,g,B,Q,E){var _,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,X=0,O=0,W=0,V=0,Z=0,T=0;if(s=_=s-592|0,r=-1,ZI(t=A+32|0)&&!KI(A)&&NI(Q)&&!KI(Q)&&!qA(y=_+128|0,Q)){for(SI(r=_+384|0),E&&SA(r,35600,34,0),SA(r,A,32,0),SA(r,Q,32,0),SA(r,I,g,B),j(I=r,r=_+320|0),S(r),B=_+8|0,g=t,Q=0,I=0,s=c=s-2272|0;E=c+2016|0,t=o[r+(Q>>>3|0)|0],C[E+Q|0]=t>>>(6&Q)&1,C[(e=E)+(E=1|Q)|0]=t>>>(7&E)&1,256!=(0|(Q=Q+2|0)););for(;;){I=(E=I)+1|0;A:if(!(E>>>0>254)&&o[0|(D=(Q=c+2016|0)+E|0)]){I:if(Q=C[0|(h=I+Q|0)])if((0|(Q=(r=Q<<1)+(t=C[0|D])|0))<=15)C[0|D]=Q,C[0|h]=0;else{if((0|(Q=t-r|0))<-15)break A;for(C[0|D]=Q,Q=I;;){if(!o[0|(t=(c+2016|0)+Q|0)]){C[0|t]=1;break I}if(C[0|t]=0,t=Q>>>0<255,Q=Q+1|0,!t)break}}if(!(E>>>0>253)){I:if(t=C[0|(e=(Q=E+2|0)+(c+2016|0)|0)])if((0|(t=(h=t<<2)+(r=C[0|D])|0))>=16){if((0|(t=r-h|0))<-15)break A;for(C[0|D]=t;;){if(o[0|(t=(c+2016|0)+Q|0)]){if(C[0|t]=0,t=Q>>>0<255,Q=Q+1|0,t)continue;break I}break}C[0|t]=1}else C[0|D]=t,C[0|e]=0;if(253!=(0|E)){I:if(t=C[0|(e=(Q=E+3|0)+(c+2016|0)|0)])if((0|(t=(h=t<<3)+(r=C[0|D])|0))>=16){if((0|(t=r-h|0))<-15)break A;for(C[0|D]=t;;){if(o[0|(t=(c+2016|0)+Q|0)]){if(C[0|t]=0,t=Q>>>0<255,Q=Q+1|0,t)continue;break I}break}C[0|t]=1}else C[0|D]=t,C[0|e]=0;if(!(E>>>0>251)){I:if(t=C[0|(e=(Q=E+4|0)+(c+2016|0)|0)])if((0|(t=(h=t<<4)+(r=C[0|D])|0))>=16){if((0|(t=r-h|0))<-15)break A;for(C[0|D]=t;;){if(o[0|(t=(c+2016|0)+Q|0)]){if(C[0|t]=0,t=Q>>>0<255,Q=Q+1|0,t)continue;break I}break}C[0|t]=1}else C[0|D]=t,C[0|e]=0;if(251!=(0|E)){I:if(t=C[0|(e=(Q=E+5|0)+(c+2016|0)|0)])if((0|(t=(h=t<<5)+(r=C[0|D])|0))>=16){if((0|(t=r-h|0))<-15)break A;for(C[0|D]=t;;){if(o[0|(t=(c+2016|0)+Q|0)]){if(C[0|t]=0,t=Q>>>0<255,Q=Q+1|0,t)continue;break I}break}C[0|t]=1}else C[0|D]=t,C[0|e]=0;if(!(E>>>0>249)&&(E=C[0|(h=(Q=E+6|0)+(c+2016|0)|0)]))if((0|(E=(r=E<<6)+(t=C[0|D])|0))>=16){if((0|(E=t-r|0))<-15)break A;for(C[0|D]=E;;){if(o[0|(E=(c+2016|0)+Q|0)]){if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,E)continue;break A}break}C[0|E]=1}else C[0|D]=E,C[0|h]=0}}}}}if(256==(0|I))break}for(Q=0;I=c+1760|0,E=o[g+(Q>>>3|0)|0],C[I+Q|0]=E>>>(6&Q)&1,C[(t=I)+(I=1|Q)|0]=E>>>(7&I)&1,256!=(0|(Q=Q+2|0)););for(I=0;;){g=I,I=I+1|0;A:if(!(g>>>0>254)&&o[0|(e=(Q=c+1760|0)+g|0)]){I:if(Q=C[0|(r=I+Q|0)])if((0|(Q=(t=Q<<1)+(E=C[0|e])|0))<=15)C[0|e]=Q,C[0|r]=0;else{if((0|(Q=E-t|0))<-15)break A;for(C[0|e]=Q,Q=I;;){if(!o[0|(E=(c+1760|0)+Q|0)]){C[0|E]=1;break I}if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,!E)break}}if(!(g>>>0>253)){I:if(E=C[0|(h=(Q=g+2|0)+(c+1760|0)|0)])if((0|(E=(r=E<<2)+(t=C[0|e])|0))>=16){if((0|(E=t-r|0))<-15)break A;for(C[0|e]=E;;){if(o[0|(E=(c+1760|0)+Q|0)]){if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,E)continue;break I}break}C[0|E]=1}else C[0|e]=E,C[0|h]=0;if(253!=(0|g)){I:if(E=C[0|(h=(Q=g+3|0)+(c+1760|0)|0)])if((0|(E=(r=E<<3)+(t=C[0|e])|0))>=16){if((0|(E=t-r|0))<-15)break A;for(C[0|e]=E;;){if(o[0|(E=(c+1760|0)+Q|0)]){if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,E)continue;break I}break}C[0|E]=1}else C[0|e]=E,C[0|h]=0;if(!(g>>>0>251)){I:if(E=C[0|(h=(Q=g+4|0)+(c+1760|0)|0)])if((0|(E=(r=E<<4)+(t=C[0|e])|0))>=16){if((0|(E=t-r|0))<-15)break A;for(C[0|e]=E;;){if(o[0|(E=(c+1760|0)+Q|0)]){if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,E)continue;break I}break}C[0|E]=1}else C[0|e]=E,C[0|h]=0;if(251!=(0|g)){I:if(E=C[0|(h=(Q=g+5|0)+(c+1760|0)|0)])if((0|(E=(r=E<<5)+(t=C[0|e])|0))>=16){if((0|(E=t-r|0))<-15)break A;for(C[0|e]=E;;){if(o[0|(E=(c+1760|0)+Q|0)]){if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,E)continue;break I}break}C[0|E]=1}else C[0|e]=E,C[0|h]=0;if(!(g>>>0>249)&&(g=C[0|(r=(Q=g+6|0)+(c+1760|0)|0)]))if((0|(g=(t=g<<6)+(E=C[0|e])|0))>=16){if((0|(g=E-t|0))<-15)break A;for(C[0|e]=g;;){if(o[0|(g=(c+1760|0)+Q|0)]){if(C[0|g]=0,g=Q>>>0<255,Q=Q+1|0,g)continue;break A}break}C[0|g]=1}else C[0|e]=g,C[0|r]=0}}}}}if(256==(0|I))break}for($A(Q=c+480|0,y),I=i[y+36>>2],i[c+192>>2]=i[y+32>>2],i[c+196>>2]=I,I=i[y+28>>2],i[c+184>>2]=i[y+24>>2],i[c+188>>2]=I,I=i[y+20>>2],i[c+176>>2]=i[y+16>>2],i[c+180>>2]=I,I=i[y+12>>2],i[c+168>>2]=i[y+8>>2],i[c+172>>2]=I,I=i[y+4>>2],i[c+160>>2]=i[y>>2],i[c+164>>2]=I,I=i[y+52>>2],i[c+208>>2]=i[y+48>>2],i[c+212>>2]=I,I=i[y+60>>2],i[c+216>>2]=i[y+56>>2],i[c+220>>2]=I,I=i[4+(g=y- -64|0)>>2],i[c+224>>2]=i[g>>2],i[c+228>>2]=I,I=i[y+76>>2],i[c+232>>2]=i[y+72>>2],i[c+236>>2]=I,I=i[y+44>>2],i[c+200>>2]=i[y+40>>2],i[c+204>>2]=I,I=i[y+92>>2],i[c+248>>2]=i[y+88>>2],i[c+252>>2]=I,I=i[y+100>>2],i[c+256>>2]=i[y+96>>2],i[c+260>>2]=I,I=i[y+108>>2],i[c+264>>2]=i[y+104>>2],i[c+268>>2]=I,I=i[y+116>>2],i[c+272>>2]=i[y+112>>2],i[c+276>>2]=I,I=i[y+84>>2],i[c+240>>2]=i[y+80>>2],i[c+244>>2]=I,KA(E=c+320|0,g=c+160|0),b(c,E,f=c+440|0),b(c+40|0,p=c+360|0,w=c+400|0),b(c+80|0,w,f),b(c+120|0,E,p),sA(E,c,Q),b(g,E,f),b(k=c+200|0,p,w),b(F=c+240|0,w,f),b(n=c+280|0,E,p),$A(I=c+640|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(I=c+800|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(I=c+960|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(I=c+1120|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(I=c+1280|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(I=c+1440|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(c+1600|0,g),i[B+32>>2]=0,i[B+36>>2]=0,i[B+24>>2]=0,i[B+28>>2]=0,i[B+16>>2]=0,i[B+20>>2]=0,i[B+8>>2]=0,i[B+12>>2]=0,i[B>>2]=0,i[B+4>>2]=0,i[B+44>>2]=0,i[B+48>>2]=0,i[B+40>>2]=1,i[B+52>>2]=0,i[B+56>>2]=0,i[B+60>>2]=0,i[B+64>>2]=0,i[B+68>>2]=0,i[B+72>>2]=0,i[B+84>>2]=0,i[B+88>>2]=0,i[B+76>>2]=0,i[B+80>>2]=1,i[B+92>>2]=0,i[B+96>>2]=0,i[B+100>>2]=0,i[B+104>>2]=0,i[B+108>>2]=0,i[B+112>>2]=0,i[B+116>>2]=0,X=B+80|0,O=B+40|0,I=255;;){A:{I:{if(!o[(g=c+2016|0)+I|0]&&!o[(Q=c+1760|0)+I|0]){if(!(o[(E=g)+(g=I-1|0)|0]|o[g+Q|0]))break I;I=g}if((0|I)<0)break A;for(;KA(Q=c+320|0,B),g=I,(0|(E=C[I+(c+2016|0)|0]))>0?(b(I=c+160|0,Q,f),b(k,p,w),b(F,w,f),b(n,Q,p),sA(Q,I,(c+480|0)+a((254&E)>>>1|0,160)|0)):(0|E)>=0||(b(I=c+160|0,Q=c+320|0,f),b(k,p,w),b(F,w,f),b(n,Q,p),hA(Q,I,(c+480|0)+a((0-E&254)>>>1|0,160)|0)),(0|(u=C[g+(c+1760|0)|0]))>0?(b(I=c+160|0,Q=c+320|0,f),b(k,p,w),b(F,w,f),b(n,Q,p),DA(Q,I,a((254&u)>>>1|0,120)+1728|0)):(0|u)>=0||(b(c+160|0,x=c+320|0,f),b(k,p,w),b(F,w,f),b(n,x,p),N=i[c+160>>2],G=i[c+200>>2],M=i[c+164>>2],K=i[c+204>>2],U=i[c+168>>2],H=i[c+208>>2],Y=i[c+172>>2],J=i[c+212>>2],d=i[c+176>>2],m=i[c+216>>2],l=i[c+180>>2],D=i[c+220>>2],e=i[c+184>>2],h=i[c+224>>2],r=i[c+188>>2],y=i[c+228>>2],t=i[c+192>>2],E=i[c+232>>2],Q=i[c+236>>2],I=i[c+196>>2],i[c+396>>2]=Q-I,i[c+392>>2]=E-t,i[c+388>>2]=y-r,i[c+384>>2]=h-e,i[c+380>>2]=D-l,i[c+376>>2]=m-d,i[c+372>>2]=J-Y,i[c+368>>2]=H-U,i[c+364>>2]=K-M,i[c+360>>2]=G-N,i[c+356>>2]=I+Q,i[c+352>>2]=E+t,i[c+348>>2]=r+y,i[c+344>>2]=e+h,i[c+340>>2]=D+l,i[c+336>>2]=d+m,i[c+332>>2]=Y+J,i[c+328>>2]=U+H,i[c+324>>2]=M+K,i[c+320>>2]=N+G,b(w,x,40+(I=a((0-u&254)>>>1|0,120)+1728|0)|0),b(p,p,I),b(f,I+80|0,n),W=i[c+276>>2],V=i[c+272>>2],u=i[c+268>>2],x=i[c+264>>2],e=i[c+260>>2],h=i[c+256>>2],r=i[c+252>>2],y=i[c+248>>2],t=i[c+244>>2],E=i[c+240>>2],v=i[c+360>>2],R=i[c+400>>2],L=i[c+364>>2],P=i[c+404>>2],q=i[c+368>>2],z=i[c+408>>2],N=i[c+372>>2],G=i[c+412>>2],M=i[c+376>>2],K=i[c+416>>2],U=i[c+380>>2],H=i[c+420>>2],Y=i[c+384>>2],J=i[c+424>>2],d=i[c+388>>2],m=i[c+428>>2],l=i[c+392>>2],D=i[c+432>>2],Q=i[c+396>>2],I=i[c+436>>2],i[c+396>>2]=Q+I,i[c+392>>2]=D+l,i[c+388>>2]=d+m,i[c+384>>2]=Y+J,i[c+380>>2]=U+H,i[c+376>>2]=M+K,i[c+372>>2]=N+G,i[c+368>>2]=q+z,i[c+364>>2]=L+P,i[c+360>>2]=v+R,i[c+356>>2]=I-Q,i[c+352>>2]=D-l,i[c+348>>2]=m-d,i[c+344>>2]=J-Y,i[c+340>>2]=H-U,i[c+336>>2]=K-M,i[c+332>>2]=G-N,i[c+328>>2]=z-q,i[c+324>>2]=P-L,i[c+320>>2]=R-v,N=E<<1,G=i[c+440>>2],i[c+400>>2]=N-G,M=t<<1,K=i[c+444>>2],i[c+404>>2]=M-K,U=y<<1,H=i[c+448>>2],i[c+408>>2]=U-H,Y=r<<1,J=i[c+452>>2],i[c+412>>2]=Y-J,d=h<<1,m=i[c+456>>2],i[c+416>>2]=d-m,l=e<<1,D=i[c+460>>2],i[c+420>>2]=l-D,e=x<<1,h=i[c+464>>2],i[c+424>>2]=e-h,r=u<<1,y=i[c+468>>2],i[c+428>>2]=r-y,t=V<<1,E=i[c+472>>2],i[c+432>>2]=t-E,Q=W<<1,I=i[c+476>>2],i[c+436>>2]=Q-I,i[c+440>>2]=N+G,i[c+444>>2]=M+K,i[c+448>>2]=U+H,i[c+452>>2]=Y+J,i[c+456>>2]=d+m,i[c+460>>2]=D+l,i[c+464>>2]=e+h,i[c+468>>2]=r+y,i[c+472>>2]=E+t,i[c+476>>2]=I+Q),b(B,c+320|0,f),b(O,p,w),b(X,w,f),I=g-1|0,(0|g)>0;);break A}if(I=I-2|0,g)continue}break}s=c+2272|0,tg(I=_+288|0,B),Z=-1,T=NC(I,A),r=((0|A)==(0|I)?Z:T)|MI(A,I,32)}return s=_+592|0,r}function b(A,I,g){var C,B,Q,o,E,_,c,t,r,e,y,s,h,D,p,w,n,k,F,S,N,G,M,K,U,b,H,Y,J,d,m,l,u,x,v,R,L,P,q,z,j,X,O,W,V,Z,T,$,AA,IA,gA,CA,BA,QA=0,iA=0,oA=0,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0,sA=0,hA=0,DA=0,fA=0,pA=0,wA=0,nA=0,kA=0,FA=0,SA=0,NA=0,GA=0,MA=0,KA=0;QA=Ig(C=i[g+4>>2],e=C>>31,wA=(w=i[I+20>>2])<<1,m=wA>>31),oA=f,iA=(hA=Ig(fA=i[g>>2],Q=fA>>31,B=i[I+24>>2],o=B>>31))+QA|0,QA=f+oA|0,QA=iA>>>0>>0?QA+1|0:QA,rA=Ig(E=i[g+8>>2],h=E>>31,hA=i[I+16>>2],_=hA>>31),oA=f+QA|0,oA=(iA=rA+iA|0)>>>0>>0?oA+1|0:oA,QA=(rA=Ig(y=i[g+12>>2],n=y>>31,K=(k=i[I+12>>2])<<1,l=K>>31))+iA|0,iA=f+oA|0,iA=QA>>>0>>0?iA+1|0:iA,oA=(DA=Ig(D=i[g+16>>2],U=D>>31,rA=i[I+8>>2],c=rA>>31))+QA|0,QA=f+iA|0,QA=oA>>>0>>0?QA+1|0:QA,iA=oA,oA=Ig(F=i[g+20>>2],u=F>>31,b=(S=i[I+4>>2])<<1,x=b>>31),QA=f+QA|0,QA=(iA=iA+oA|0)>>>0>>0?QA+1|0:QA,Z=cA=i[g+24>>2],oA=(eA=Ig(cA,W=cA>>31,DA=i[I>>2],t=DA>>31))+iA|0,iA=f+QA|0,iA=oA>>>0>>0?iA+1|0:iA,v=i[g+28>>2],QA=(eA=Ig(sA=a(v,19),N=sA>>31,H=(G=i[I+36>>2])<<1,R=H>>31))+oA|0,oA=f+iA|0,oA=QA>>>0>>0?oA+1|0:oA,SA=i[g+32>>2],iA=(tA=Ig(EA=a(SA,19),p=EA>>31,eA=i[I+32>>2],r=eA>>31))+QA|0,QA=f+oA|0,QA=iA>>>0>>0?QA+1|0:QA,T=i[g+36>>2],g=Ig(tA=a(T,19),s=tA>>31,Y=(M=i[I+28>>2])<<1,L=Y>>31),QA=f+QA|0,aA=I=g+iA|0,g=I>>>0>>0?QA+1|0:QA,I=Ig(hA,_,C,e),QA=f,iA=Ig(fA,Q,w,P=w>>31),oA=f+QA|0,oA=(I=iA+I|0)>>>0>>0?oA+1|0:oA,QA=Ig(E,h,k,q=k>>31),iA=f+oA|0,iA=(I=QA+I|0)>>>0>>0?iA+1|0:iA,oA=Ig(rA,c,y,n),QA=f+iA|0,QA=(I=oA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(D,U,S,z=S>>31),QA=f+QA|0,QA=(I=iA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(DA,t,F,u),QA=f+QA|0,QA=(I=iA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(cA=a(cA,19),J=cA>>31,G,j=G>>31),oA=f+QA|0,oA=(I=iA+I|0)>>>0>>0?oA+1|0:oA,QA=Ig(eA,r,sA,N),iA=f+oA|0,iA=(I=QA+I|0)>>>0>>0?iA+1|0:iA,oA=Ig(EA,p,M,X=M>>31),QA=f+iA|0,QA=(I=oA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(tA,s,B,o),QA=f+QA|0,GA=I=iA+I|0,nA=I>>>0>>0?QA+1|0:QA,I=Ig(C,e,K,l),QA=f,iA=Ig(fA,Q,hA,_),QA=f+QA|0,QA=(I=iA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(rA,c,E,h),oA=f+QA|0,oA=(I=iA+I|0)>>>0>>0?oA+1|0:oA,QA=Ig(y,n,b,x),iA=f+oA|0,iA=(I=QA+I|0)>>>0>>0?iA+1|0:iA,oA=Ig(DA,t,D,U),QA=f+iA|0,QA=(I=oA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(d=a(F,19),O=d>>31,H,R),QA=f+QA|0,QA=(I=iA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(eA,r,cA,J),QA=f+QA|0,QA=(I=iA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(sA,N,Y,L),oA=f+QA|0,oA=(I=iA+I|0)>>>0>>0?oA+1|0:oA,QA=Ig(EA,p,B,o),iA=f+oA|0,iA=(I=QA+I|0)>>>0>>0?iA+1|0:iA,oA=Ig(tA,s,wA,m),QA=f+iA|0,$=I=oA+I|0,AA=QA=I>>>0>>0?QA+1|0:QA,IA=I=I+33554432|0,gA=QA=I>>>0<33554432?QA+1|0:QA,oA=(67108863&QA)<<6|I>>>26,QA=(QA>>26)+nA|0,GA=I=oA+GA|0,QA=I>>>0>>0?QA+1|0:QA,CA=I=I+16777216|0,QA=g+(iA=(oA=I>>>0<16777216?QA+1|0:QA)>>25)|0,QA=(I=(oA=(33554431&oA)<<7|I>>>25)+aA|0)>>>0>>0?QA+1|0:QA,kA=g=(iA=I)+33554432|0,I=QA=g>>>0<33554432?QA+1|0:QA,i[A+24>>2]=iA-(-67108864&g),g=Ig(C,e,b,x),QA=f,iA=Ig(fA,Q,rA,c),oA=f+QA|0,oA=(g=iA+g|0)>>>0>>0?oA+1|0:oA,iA=(QA=g)+(g=Ig(DA,t,E,h))|0,QA=f+oA|0,QA=g>>>0>iA>>>0?QA+1|0:QA,oA=Ig(g=a(y,19),FA=g>>31,H,R),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,oA=(aA=Ig(eA,r,nA=a(D,19),V=nA>>31))+iA|0,iA=f+QA|0,iA=oA>>>0>>0?iA+1|0:iA,aA=Ig(Y,L,d,O),QA=f+iA|0,QA=(oA=aA+oA|0)>>>0>>0?QA+1|0:QA,iA=(aA=Ig(B,o,cA,J))+oA|0,oA=f+QA|0,oA=iA>>>0>>0?oA+1|0:oA,aA=Ig(sA,N,wA,m),QA=f+oA|0,QA=(iA=aA+iA|0)>>>0>>0?QA+1|0:QA,oA=Ig(EA,p,hA,_),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,oA=(aA=Ig(tA,s,K,l))+iA|0,iA=f+QA|0,yA=oA,MA=oA>>>0>>0?iA+1|0:iA,QA=Ig(DA,t,C,e),iA=f,oA=(aA=Ig(fA,Q,S,z))+QA|0,QA=f+iA|0,QA=oA>>>0>>0?QA+1|0:QA,aA=iA=a(E,19),iA=(_A=Ig(iA,NA=iA>>31,G,j))+oA|0,oA=f+QA|0,oA=iA>>>0<_A>>>0?oA+1|0:oA,_A=Ig(eA,r,g,FA),QA=f+oA|0,QA=(iA=_A+iA|0)>>>0<_A>>>0?QA+1|0:QA,oA=Ig(nA,V,M,X),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,oA=(_A=Ig(B,o,d,O))+iA|0,iA=f+QA|0,iA=oA>>>0<_A>>>0?iA+1|0:iA,_A=Ig(cA,J,w,P),QA=f+iA|0,QA=(oA=_A+oA|0)>>>0<_A>>>0?QA+1|0:QA,iA=(_A=Ig(hA,_,sA,N))+oA|0,oA=f+QA|0,oA=iA>>>0<_A>>>0?oA+1|0:oA,_A=Ig(EA,p,k,q),QA=f+oA|0,QA=(iA=_A+iA|0)>>>0<_A>>>0?QA+1|0:QA,oA=Ig(tA,s,rA,c),QA=f+QA|0,KA=iA=oA+iA|0,_A=iA>>>0>>0?QA+1|0:QA,QA=Ig(QA=a(C,19),QA>>31,H,R),iA=f,oA=Ig(fA,Q,DA,t),iA=f+iA|0,iA=(QA=oA+QA|0)>>>0>>0?iA+1|0:iA,oA=(aA=Ig(eA,r,aA,NA))+QA|0,QA=f+iA|0,g=(iA=Ig(g,FA,Y,L))+oA|0,oA=f+(oA>>>0>>0?QA+1|0:QA)|0,oA=g>>>0>>0?oA+1|0:oA,iA=Ig(B,o,nA,V),QA=f+oA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,iA=Ig(wA,m,d,O),QA=f+QA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,oA=Ig(hA,_,cA,J),iA=f+QA|0,iA=(g=oA+g|0)>>>0>>0?iA+1|0:iA,oA=Ig(sA,N,K,l),QA=f+iA|0,QA=(g=oA+g|0)>>>0>>0?QA+1|0:QA,iA=Ig(EA,p,rA,c),oA=f+QA|0,oA=(g=iA+g|0)>>>0>>0?oA+1|0:oA,iA=Ig(tA,s,b,x),QA=f+oA|0,aA=g=iA+g|0,FA=QA=g>>>0>>0?QA+1|0:QA,NA=g=g+33554432|0,BA=QA=g>>>0<33554432?QA+1|0:QA,iA=(oA=QA>>26)+_A|0,_A=g=(QA=(67108863&QA)<<6|g>>>26)+KA|0,QA=g>>>0>>0?iA+1|0:iA,KA=g=g+16777216|0,iA=(33554431&(QA=g>>>0<16777216?QA+1|0:QA))<<7|g>>>25,QA=(QA>>25)+MA|0,QA=(g=iA+yA|0)>>>0>>0?QA+1|0:QA,MA=iA=(oA=g)+33554432|0,g=QA=iA>>>0<33554432?QA+1|0:QA,i[A+8>>2]=oA-(-67108864&iA),QA=Ig(B,o,C,e),oA=f,iA=(yA=Ig(fA,Q,M,X))+QA|0,QA=f+oA|0,QA=iA>>>0>>0?QA+1|0:QA,oA=Ig(E,h,w,P),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,oA=Ig(hA,_,y,n),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,yA=Ig(D,U,k,q),oA=f+QA|0,oA=(iA=yA+iA|0)>>>0>>0?oA+1|0:oA,QA=(yA=Ig(rA,c,F,u))+iA|0,iA=f+oA|0,iA=QA>>>0>>0?iA+1|0:iA,oA=(yA=Ig(S,z,Z,W))+QA|0,QA=f+iA|0,QA=oA>>>0>>0?QA+1|0:QA,iA=oA,oA=Ig(DA,t,v,yA=v>>31),QA=f+QA|0,QA=(iA=iA+oA|0)>>>0>>0?QA+1|0:QA,oA=Ig(EA,p,G,j),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,pA=Ig(tA,s,eA,r),oA=f+QA|0,QA=I>>26,I=(kA=(67108863&I)<<6|kA>>>26)+(iA=pA+iA|0)|0,iA=QA+(iA>>>0>>0?oA+1|0:oA)|0,QA=(oA=I)>>>0>>0?iA+1|0:iA,kA=iA=oA+16777216|0,I=QA=iA>>>0<16777216?QA+1|0:QA,i[A+28>>2]=oA-(-33554432&iA),QA=Ig(rA,c,C,e),iA=f,pA=Ig(fA,Q,k,q),oA=f+iA|0,oA=(QA=pA+QA|0)>>>0>>0?oA+1|0:oA,pA=Ig(E,h,S,z),iA=f+oA|0,iA=(QA=pA+QA|0)>>>0>>0?iA+1|0:iA,oA=(pA=Ig(DA,t,y,n))+QA|0,QA=f+iA|0,QA=oA>>>0>>0?QA+1|0:QA,iA=oA,oA=Ig(nA,V,G,j),QA=f+QA|0,QA=(iA=iA+oA|0)>>>0>>0?QA+1|0:QA,oA=Ig(eA,r,d,O),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,iA=(cA=Ig(cA,J,M,X))+iA|0,oA=f+QA|0,QA=(sA=Ig(B,o,sA,N))+iA|0,iA=f+(iA>>>0>>0?oA+1|0:oA)|0,oA=(EA=Ig(EA,p,w,P))+QA|0,QA=f+(QA>>>0>>0?iA+1|0:iA)|0,QA=oA>>>0>>0?QA+1|0:QA,iA=oA,oA=Ig(tA,s,hA,_),QA=f+QA|0,EA=iA=iA+oA|0,QA=(QA=iA>>>0>>0?QA+1|0:QA)+(iA=g>>26)|0,EA=g=EA+(oA=(67108863&g)<<6|MA>>>26)|0,QA=g>>>0>>0?QA+1|0:QA,sA=iA=g+16777216|0,g=oA=iA>>>0<16777216?QA+1|0:QA,i[A+12>>2]=EA-(-33554432&iA),QA=Ig(C,e,Y,L),oA=f,iA=(EA=Ig(fA,Q,eA,r))+QA|0,QA=f+oA|0,QA=iA>>>0>>0?QA+1|0:QA,oA=Ig(B,o,E,h),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,EA=Ig(y,n,wA,m),oA=f+QA|0,oA=(iA=EA+iA|0)>>>0>>0?oA+1|0:oA,QA=(EA=Ig(hA,_,D,U))+iA|0,iA=f+oA|0,iA=QA>>>0>>0?iA+1|0:iA,oA=(EA=Ig(K,l,F,u))+QA|0,QA=f+iA|0,QA=oA>>>0>>0?QA+1|0:QA,iA=oA,oA=Ig(rA,c,Z,W),QA=f+QA|0,QA=(iA=iA+oA|0)>>>0>>0?QA+1|0:QA,oA=Ig(v,yA,b,x),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,iA=(wA=Ig(DA,t,EA=SA,cA=EA>>31))+iA|0,oA=f+QA|0,QA=(tA=Ig(tA,s,H,R))+iA|0,iA=f+(iA>>>0>>0?oA+1|0:oA)|0,iA=QA>>>0>>0?iA+1|0:iA,SA=QA,QA=(QA=I>>25)+iA|0,QA=(I=SA+(oA=(33554431&I)<<7|kA>>>25)|0)>>>0>>0?QA+1|0:QA,tA=iA=(oA=I)+33554432|0,I=QA=iA>>>0<33554432?QA+1|0:QA,i[A+32>>2]=oA-(-67108864&iA),iA=g>>25,g=(sA=(33554431&g)<<7|sA>>>25)+($-(QA=-67108864&IA)|0)|0,QA=iA+(AA-((QA>>>0>$>>>0)+gA|0)|0)|0,QA=g>>>0>>0?QA+1|0:QA,QA=((67108863&(QA=(g=(iA=g)+33554432|0)>>>0<33554432?QA+1|0:QA))<<6|g>>>26)+(oA=GA-(-33554432&CA)|0)|0,i[A+20>>2]=QA,i[A+16>>2]=iA-(-67108864&g),g=Ig(eA,r,C,e),QA=f,iA=Ig(fA,Q,G,j),QA=f+QA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,oA=Ig(E,h,M,X),iA=f+QA|0,iA=(g=oA+g|0)>>>0>>0?iA+1|0:iA,QA=Ig(B,o,y,n),oA=f+iA|0,oA=(g=QA+g|0)>>>0>>0?oA+1|0:oA,iA=Ig(D,U,w,P),QA=f+oA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,iA=Ig(hA,_,F,u),QA=f+QA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,iA=Ig(k,q,Z,W),QA=f+QA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,oA=Ig(rA,c,v,yA),iA=f+QA|0,iA=(g=oA+g|0)>>>0>>0?iA+1|0:iA,QA=Ig(EA,cA,S,z),oA=f+iA|0,oA=(g=QA+g|0)>>>0>>0?oA+1|0:oA,iA=Ig(DA,t,T,T>>31),QA=f+oA|0,QA=(QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA)+(iA=I>>26)|0,QA=(I=(oA=g)+(g=(67108863&I)<<6|tA>>>26)|0)>>>0>>0?QA+1|0:QA,QA=(I=(g=I)+16777216|0)>>>0<16777216?QA+1|0:QA,i[A+36>>2]=g-(-33554432&I),oA=_A-(-33554432&KA)|0,iA=aA-(g=-67108864&NA)|0,fA=FA-((g>>>0>aA>>>0)+BA|0)|0,I=(g=Ig((33554431&(g=QA))<<7|I>>>25,QA>>=25,19,0))+iA|0,iA=f+fA|0,QA=I>>>0>>0?iA+1|0:iA,QA=((67108863&(QA=(I=(g=I)+33554432|0)>>>0<33554432?QA+1|0:QA))<<6|I>>>26)+oA|0,i[A+4>>2]=QA,i[A>>2]=g-(-67108864&I)}function H(A,I){var g,C,B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w=0,n=0,k=0;s=g=s-544|0,C=o[A+60|0]|o[A+61|0]<<8|o[A+62|0]<<16|o[A+63|0]<<24,B=o[A+56|0]|o[A+57|0]<<8|o[A+58|0]<<16|o[A+59|0]<<24,Q=o[A+52|0]|o[A+53|0]<<8|o[A+54|0]<<16|o[A+55|0]<<24,E=o[A+48|0]|o[A+49|0]<<8|o[A+50|0]<<16|o[A+51|0]<<24,a=o[A+32|0]|o[A+33|0]<<8|o[A+34|0]<<16|o[A+35|0]<<24,_=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,c=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24,t=o[A+44|0]|o[A+45|0]<<8|o[A+46|0]<<16|o[A+47|0]<<24,w=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,r=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,e=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,y=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,h=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,D=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,f=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,p=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,A=i[I+124>>2],i[g+536>>2]=i[I+120>>2],i[g+540>>2]=A,A=i[I+116>>2],i[g+528>>2]=i[I+112>>2],i[g+532>>2]=A,A=i[I+108>>2],i[g+504>>2]=i[I+104>>2],i[g+508>>2]=A,A=i[I+100>>2],i[g+496>>2]=i[I+96>>2],i[g+500>>2]=A,A=i[I+124>>2],i[g+488>>2]=i[I+120>>2],i[g+492>>2]=A,A=i[I+116>>2],i[g+480>>2]=i[I+112>>2],i[g+484>>2]=A,AI(k=g+512|0,g+496|0,g+480|0),A=i[g+524>>2],i[I+120>>2]=i[g+520>>2],i[I+124>>2]=A,A=i[g+516>>2],i[I+112>>2]=i[g+512>>2],i[I+116>>2]=A,A=i[I+92>>2],i[g+472>>2]=i[I+88>>2],i[g+476>>2]=A,A=i[I+84>>2],i[g+464>>2]=i[I+80>>2],i[g+468>>2]=A,A=i[I+108>>2],i[g+456>>2]=i[I+104>>2],i[g+460>>2]=A,A=i[I+100>>2],i[g+448>>2]=i[I+96>>2],i[g+452>>2]=A,AI(k,g+464|0,g+448|0),A=i[g+524>>2],i[I+104>>2]=i[g+520>>2],i[I+108>>2]=A,A=i[g+516>>2],i[I+96>>2]=i[g+512>>2],i[I+100>>2]=A,A=i[I+76>>2],i[g+440>>2]=i[I+72>>2],i[g+444>>2]=A,n=i[4+(A=I- -64|0)>>2],i[g+432>>2]=i[A>>2],i[g+436>>2]=n,n=i[I+92>>2],i[g+424>>2]=i[I+88>>2],i[g+428>>2]=n,n=i[I+84>>2],i[g+416>>2]=i[I+80>>2],i[g+420>>2]=n,AI(k,g+432|0,g+416|0),n=i[g+524>>2],i[I+88>>2]=i[g+520>>2],i[I+92>>2]=n,n=i[g+516>>2],i[I+80>>2]=i[g+512>>2],i[I+84>>2]=n,n=i[I+60>>2],i[g+408>>2]=i[I+56>>2],i[g+412>>2]=n,n=i[I+52>>2],i[g+400>>2]=i[I+48>>2],i[g+404>>2]=n,n=i[I+76>>2],i[g+392>>2]=i[I+72>>2],i[g+396>>2]=n,n=i[A+4>>2],i[g+384>>2]=i[A>>2],i[g+388>>2]=n,AI(k,g+400|0,g+384|0),n=i[g+524>>2],i[I+72>>2]=i[g+520>>2],i[I+76>>2]=n,n=i[g+516>>2],i[A>>2]=i[g+512>>2],i[A+4>>2]=n,n=i[I+44>>2],i[g+376>>2]=i[I+40>>2],i[g+380>>2]=n,n=i[I+36>>2],i[g+368>>2]=i[I+32>>2],i[g+372>>2]=n,n=i[I+60>>2],i[g+360>>2]=i[I+56>>2],i[g+364>>2]=n,n=i[I+52>>2],i[g+352>>2]=i[I+48>>2],i[g+356>>2]=n,AI(k,g+368|0,g+352|0),n=i[g+524>>2],i[I+56>>2]=i[g+520>>2],i[I+60>>2]=n,n=i[g+516>>2],i[I+48>>2]=i[g+512>>2],i[I+52>>2]=n,n=i[I+28>>2],i[g+344>>2]=i[I+24>>2],i[g+348>>2]=n,n=i[I+20>>2],i[g+336>>2]=i[I+16>>2],i[g+340>>2]=n,n=i[I+44>>2],i[g+328>>2]=i[I+40>>2],i[g+332>>2]=n,n=i[I+36>>2],i[g+320>>2]=i[I+32>>2],i[g+324>>2]=n,AI(k,g+336|0,g+320|0),n=i[g+524>>2],i[I+40>>2]=i[g+520>>2],i[I+44>>2]=n,n=i[g+516>>2],i[I+32>>2]=i[g+512>>2],i[I+36>>2]=n,n=i[I+12>>2],i[g+312>>2]=i[I+8>>2],i[g+316>>2]=n,n=i[I+4>>2],i[g+304>>2]=i[I>>2],i[g+308>>2]=n,n=i[I+28>>2],i[g+296>>2]=i[I+24>>2],i[g+300>>2]=n,n=i[I+20>>2],i[g+288>>2]=i[I+16>>2],i[g+292>>2]=n,AI(k,g+304|0,g+288|0),n=i[g+524>>2],i[I+24>>2]=i[g+520>>2],i[I+28>>2]=n,n=i[g+516>>2],i[I+16>>2]=i[g+512>>2],i[I+20>>2]=n,n=i[g+540>>2],i[g+280>>2]=i[g+536>>2],i[g+284>>2]=n,n=i[g+532>>2],i[g+272>>2]=i[g+528>>2],i[g+276>>2]=n,n=i[I+12>>2],i[g+264>>2]=i[I+8>>2],i[g+268>>2]=n,n=i[I+4>>2],i[g+256>>2]=i[I>>2],i[g+260>>2]=n,AI(k,g+272|0,g+256|0),n=i[g+524>>2],i[I+8>>2]=i[g+520>>2],i[I+12>>2]=n,n=i[g+516>>2],i[I>>2]=i[g+512>>2],i[I+4>>2]=n,i[I+12>>2]=(o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24)^f,i[I+8>>2]=(o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24)^D,i[I+4>>2]=(o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24)^h,i[I>>2]=(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24)^p,i[A>>2]=(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24)^y,i[I+68>>2]=(o[I+68|0]|o[I+69|0]<<8|o[I+70|0]<<16|o[I+71|0]<<24)^e,i[I+72>>2]=(o[I+72|0]|o[I+73|0]<<8|o[I+74|0]<<16|o[I+75|0]<<24)^r,i[I+76>>2]=(o[I+76|0]|o[I+77|0]<<8|o[I+78|0]<<16|o[I+79|0]<<24)^w,w=i[I+124>>2],i[g+536>>2]=i[I+120>>2],i[g+540>>2]=w,w=i[I+116>>2],i[g+528>>2]=i[I+112>>2],i[g+532>>2]=w,w=i[I+108>>2],i[g+248>>2]=i[I+104>>2],i[g+252>>2]=w,w=i[I+100>>2],i[g+240>>2]=i[I+96>>2],i[g+244>>2]=w,w=i[I+124>>2],i[g+232>>2]=i[I+120>>2],i[g+236>>2]=w,w=i[I+116>>2],i[g+224>>2]=i[I+112>>2],i[g+228>>2]=w,AI(k,g+240|0,g+224|0),w=i[g+524>>2],i[I+120>>2]=i[g+520>>2],i[I+124>>2]=w,w=i[g+516>>2],i[I+112>>2]=i[g+512>>2],i[I+116>>2]=w,w=i[I+92>>2],i[g+216>>2]=i[I+88>>2],i[g+220>>2]=w,w=i[I+84>>2],i[g+208>>2]=i[I+80>>2],i[g+212>>2]=w,w=i[I+108>>2],i[g+200>>2]=i[I+104>>2],i[g+204>>2]=w,w=i[I+100>>2],i[g+192>>2]=i[I+96>>2],i[g+196>>2]=w,AI(k,g+208|0,g+192|0),w=i[g+524>>2],i[I+104>>2]=i[g+520>>2],i[I+108>>2]=w,w=i[g+516>>2],i[I+96>>2]=i[g+512>>2],i[I+100>>2]=w,w=i[I+76>>2],i[g+184>>2]=i[I+72>>2],i[g+188>>2]=w,w=i[A+4>>2],i[g+176>>2]=i[A>>2],i[g+180>>2]=w,w=i[I+92>>2],i[g+168>>2]=i[I+88>>2],i[g+172>>2]=w,w=i[I+84>>2],i[g+160>>2]=i[I+80>>2],i[g+164>>2]=w,AI(k,g+176|0,g+160|0),w=i[g+524>>2],i[I+88>>2]=i[g+520>>2],i[I+92>>2]=w,w=i[g+516>>2],i[I+80>>2]=i[g+512>>2],i[I+84>>2]=w,w=i[I+60>>2],i[g+152>>2]=i[I+56>>2],i[g+156>>2]=w,w=i[I+52>>2],i[g+144>>2]=i[I+48>>2],i[g+148>>2]=w,w=i[I+76>>2],i[g+136>>2]=i[I+72>>2],i[g+140>>2]=w,w=i[A+4>>2],i[g+128>>2]=i[A>>2],i[g+132>>2]=w,AI(k,g+144|0,g+128|0),w=i[g+524>>2],i[I+72>>2]=i[g+520>>2],i[I+76>>2]=w,w=i[g+516>>2],i[A>>2]=i[g+512>>2],i[A+4>>2]=w,w=i[I+44>>2],i[g+120>>2]=i[I+40>>2],i[g+124>>2]=w,w=i[I+36>>2],i[g+112>>2]=i[I+32>>2],i[g+116>>2]=w,w=i[I+60>>2],i[g+104>>2]=i[I+56>>2],i[g+108>>2]=w,w=i[I+52>>2],i[g+96>>2]=i[I+48>>2],i[g+100>>2]=w,AI(k,g+112|0,g+96|0),w=i[g+524>>2],i[I+56>>2]=i[g+520>>2],i[I+60>>2]=w,w=i[g+516>>2],i[I+48>>2]=i[g+512>>2],i[I+52>>2]=w,w=i[I+28>>2],i[g+88>>2]=i[I+24>>2],i[g+92>>2]=w,w=i[I+20>>2],i[g+80>>2]=i[I+16>>2],i[g+84>>2]=w,w=i[I+44>>2],i[g+72>>2]=i[I+40>>2],i[g+76>>2]=w,w=i[I+36>>2],i[g+64>>2]=i[I+32>>2],i[g+68>>2]=w,AI(k,g+80|0,g- -64|0),w=i[g+524>>2],i[I+40>>2]=i[g+520>>2],i[I+44>>2]=w,w=i[g+516>>2],i[I+32>>2]=i[g+512>>2],i[I+36>>2]=w,w=i[I+12>>2],i[g+56>>2]=i[I+8>>2],i[g+60>>2]=w,w=i[I+4>>2],i[g+48>>2]=i[I>>2],i[g+52>>2]=w,w=i[I+28>>2],i[g+40>>2]=i[I+24>>2],i[g+44>>2]=w,w=i[I+20>>2],i[g+32>>2]=i[I+16>>2],i[g+36>>2]=w,AI(k,g+48|0,g+32|0),w=i[g+524>>2],i[I+24>>2]=i[g+520>>2],i[I+28>>2]=w,w=i[g+516>>2],i[I+16>>2]=i[g+512>>2],i[I+20>>2]=w,w=i[g+540>>2],i[g+24>>2]=i[g+536>>2],i[g+28>>2]=w,w=i[g+532>>2],i[g+16>>2]=i[g+528>>2],i[g+20>>2]=w,w=i[I+12>>2],i[g+8>>2]=i[I+8>>2],i[g+12>>2]=w,w=i[I+4>>2],i[g>>2]=i[I>>2],i[g+4>>2]=w,AI(k,g+16|0,g),k=i[g+524>>2],i[I+8>>2]=i[g+520>>2],i[I+12>>2]=k,k=i[g+516>>2],i[I>>2]=i[g+512>>2],i[I+4>>2]=k,i[I+12>>2]=(o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24)^t,i[I+8>>2]=(o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24)^c,i[I+4>>2]=(o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24)^_,i[I>>2]=(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24)^a,i[A>>2]=(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24)^E,i[I+68>>2]=(o[I+68|0]|o[I+69|0]<<8|o[I+70|0]<<16|o[I+71|0]<<24)^Q,i[I+72>>2]=(o[I+72|0]|o[I+73|0]<<8|o[I+74|0]<<16|o[I+75|0]<<24)^B,i[I+76>>2]=(o[I+76|0]|o[I+77|0]<<8|o[I+78|0]<<16|o[I+79|0]<<24)^C,s=g+544|0}function Y(A,I,g,B,Q){var E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0;for(s=E=s-288|0,D=(o[Q+44|0]|o[Q+45|0]<<8|o[Q+46|0]<<16|o[Q+47|0]<<24)^B>>>29,f=(o[Q+40|0]|o[Q+41|0]<<8|o[Q+42|0]<<16|o[Q+43|0]<<24)^B<<3,p=(o[Q+36|0]|o[Q+37|0]<<8|o[Q+38|0]<<16|o[Q+39|0]<<24)^g>>>29,B=(o[0|(c=Q+32|0)]|o[c+1|0]<<8|o[c+2|0]<<16|o[c+3|0]<<24)^g<<3,y=Q+16|0,r=Q+48|0,_=Q- -64|0,e=Q+80|0,a=Q+96|0,t=Q+112|0;g=i[t+12>>2],i[E+280>>2]=i[t+8>>2],i[E+284>>2]=g,g=i[t+4>>2],i[E+272>>2]=i[t>>2],i[E+276>>2]=g,g=i[a+12>>2],i[E+248>>2]=i[a+8>>2],i[E+252>>2]=g,g=i[a+4>>2],i[E+240>>2]=i[a>>2],i[E+244>>2]=g,g=i[t+12>>2],i[E+232>>2]=i[t+8>>2],i[E+236>>2]=g,g=i[t+4>>2],i[E+224>>2]=i[t>>2],i[E+228>>2]=g,AI(h=E+256|0,E+240|0,E+224|0),g=i[E+268>>2],i[t+8>>2]=i[E+264>>2],i[t+12>>2]=g,g=i[E+260>>2],i[t>>2]=i[E+256>>2],i[t+4>>2]=g,g=i[e+12>>2],i[E+216>>2]=i[e+8>>2],i[E+220>>2]=g,g=i[e+4>>2],i[E+208>>2]=i[e>>2],i[E+212>>2]=g,g=i[a+12>>2],i[E+200>>2]=i[a+8>>2],i[E+204>>2]=g,g=i[a+4>>2],i[E+192>>2]=i[a>>2],i[E+196>>2]=g,AI(h,E+208|0,E+192|0),g=i[E+268>>2],i[a+8>>2]=i[E+264>>2],i[a+12>>2]=g,g=i[E+260>>2],i[a>>2]=i[E+256>>2],i[a+4>>2]=g,g=i[_+12>>2],i[E+184>>2]=i[_+8>>2],i[E+188>>2]=g,g=i[_+4>>2],i[E+176>>2]=i[_>>2],i[E+180>>2]=g,g=i[e+12>>2],i[E+168>>2]=i[e+8>>2],i[E+172>>2]=g,g=i[e+4>>2],i[E+160>>2]=i[e>>2],i[E+164>>2]=g,AI(h,E+176|0,E+160|0),g=i[E+268>>2],i[e+8>>2]=i[E+264>>2],i[e+12>>2]=g,g=i[E+260>>2],i[e>>2]=i[E+256>>2],i[e+4>>2]=g,g=i[r+12>>2],i[E+152>>2]=i[r+8>>2],i[E+156>>2]=g,g=i[r+4>>2],i[E+144>>2]=i[r>>2],i[E+148>>2]=g,g=i[_+12>>2],i[E+136>>2]=i[_+8>>2],i[E+140>>2]=g,g=i[_+4>>2],i[E+128>>2]=i[_>>2],i[E+132>>2]=g,AI(h,E+144|0,E+128|0),g=i[E+268>>2],i[_+8>>2]=i[E+264>>2],i[_+12>>2]=g,g=i[E+260>>2],i[_>>2]=i[E+256>>2],i[_+4>>2]=g,g=i[c+12>>2],i[E+120>>2]=i[c+8>>2],i[E+124>>2]=g,g=i[c+4>>2],i[E+112>>2]=i[c>>2],i[E+116>>2]=g,g=i[r+12>>2],i[E+104>>2]=i[r+8>>2],i[E+108>>2]=g,g=i[r+4>>2],i[E+96>>2]=i[r>>2],i[E+100>>2]=g,AI(h,E+112|0,E+96|0),g=i[E+268>>2],i[r+8>>2]=i[E+264>>2],i[r+12>>2]=g,g=i[E+260>>2],i[r>>2]=i[E+256>>2],i[r+4>>2]=g,g=i[y+12>>2],i[E+88>>2]=i[y+8>>2],i[E+92>>2]=g,g=i[y+4>>2],i[E+80>>2]=i[y>>2],i[E+84>>2]=g,g=i[c+12>>2],i[E+72>>2]=i[c+8>>2],i[E+76>>2]=g,g=i[c+4>>2],i[E+64>>2]=i[c>>2],i[E+68>>2]=g,AI(h,E+80|0,E- -64|0),g=i[E+268>>2],i[c+8>>2]=i[E+264>>2],i[c+12>>2]=g,g=i[E+260>>2],i[c>>2]=i[E+256>>2],i[c+4>>2]=g,g=i[Q+12>>2],i[E+56>>2]=i[Q+8>>2],i[E+60>>2]=g,g=i[Q+4>>2],i[E+48>>2]=i[Q>>2],i[E+52>>2]=g,g=i[y+12>>2],i[E+40>>2]=i[y+8>>2],i[E+44>>2]=g,g=i[y+4>>2],i[E+32>>2]=i[y>>2],i[E+36>>2]=g,AI(h,E+48|0,E+32|0),g=i[E+268>>2],i[y+8>>2]=i[E+264>>2],i[y+12>>2]=g,g=i[E+260>>2],i[y>>2]=i[E+256>>2],i[y+4>>2]=g,g=i[E+284>>2],i[E+24>>2]=i[E+280>>2],i[E+28>>2]=g,g=i[E+276>>2],i[E+16>>2]=i[E+272>>2],i[E+20>>2]=g,g=i[Q+12>>2],i[E+8>>2]=i[Q+8>>2],i[E+12>>2]=g,g=i[Q+4>>2],i[E>>2]=i[Q>>2],i[E+4>>2]=g,AI(h,E+16|0,E),g=i[E+268>>2],i[Q+8>>2]=i[E+264>>2],i[Q+12>>2]=g,g=i[E+260>>2],i[Q>>2]=i[E+256>>2],i[Q+4>>2]=g,n=D^(o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24),i[Q+12>>2]=n,k=f^(o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24),i[Q+8>>2]=k,F=p^(o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24),i[Q+4>>2]=F,S=B^(o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24),i[Q>>2]=S,N=B^(o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24),i[_>>2]=N,G=p^(o[Q+68|0]|o[Q+69|0]<<8|o[Q+70|0]<<16|o[Q+71|0]<<24),i[Q+68>>2]=G,M=f^(o[Q+72|0]|o[Q+73|0]<<8|o[Q+74|0]<<16|o[Q+75|0]<<24),i[Q+72>>2]=M,K=D^(o[Q+76|0]|o[Q+77|0]<<8|o[Q+78|0]<<16|o[Q+79|0]<<24),i[Q+76>>2]=K,7!=(0|(w=w+1|0)););A:{I:{g:{if(g=I-16|0){if(16==(0|g))break g;break I}_=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,c=o[Q+48|0]|o[Q+49|0]<<8|o[Q+50|0]<<16|o[Q+51|0]<<24,y=o[Q+32|0]|o[Q+33|0]<<8|o[Q+34|0]<<16|o[Q+35|0]<<24,r=o[Q+96|0]|o[Q+97|0]<<8|o[Q+98|0]<<16|o[Q+99|0]<<24,e=o[Q+80|0]|o[Q+81|0]<<8|o[Q+82|0]<<16|o[Q+83|0]<<24,a=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,t=o[Q+52|0]|o[Q+53|0]<<8|o[Q+54|0]<<16|o[Q+55|0]<<24,h=o[Q+36|0]|o[Q+37|0]<<8|o[Q+38|0]<<16|o[Q+39|0]<<24,D=o[Q+100|0]|o[Q+101|0]<<8|o[Q+102|0]<<16|o[Q+103|0]<<24,f=o[Q+84|0]|o[Q+85|0]<<8|o[Q+86|0]<<16|o[Q+87|0]<<24,p=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,w=o[Q+56|0]|o[Q+57|0]<<8|o[Q+58|0]<<16|o[Q+59|0]<<24,B=o[Q+40|0]|o[Q+41|0]<<8|o[Q+42|0]<<16|o[Q+43|0]<<24,g=o[Q+104|0]|o[Q+105|0]<<8|o[Q+106|0]<<16|o[Q+107|0]<<24,I=o[Q+88|0]|o[Q+89|0]<<8|o[Q+90|0]<<16|o[Q+91|0]<<24,Q=n^(o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24)^(o[Q+60|0]|o[Q+61|0]<<8|o[Q+62|0]<<16|o[Q+63|0]<<24)^(o[Q+44|0]|o[Q+45|0]<<8|o[Q+46|0]<<16|o[Q+47|0]<<24)^(o[Q+92|0]|o[Q+93|0]<<8|o[Q+94|0]<<16|o[Q+95|0]<<24)^(o[Q+108|0]|o[Q+109|0]<<8|o[Q+110|0]<<16|o[Q+111|0]<<24)^K,C[A+12|0]=Q,C[A+13|0]=Q>>>8,C[A+14|0]=Q>>>16,C[A+15|0]=Q>>>24,I=p^w^B^I^g^M^k,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=a^t^h^D^f^G^F,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=_^c^y^r^e^N^S,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24;break A}t=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,h=o[Q+48|0]|o[Q+49|0]<<8|o[Q+50|0]<<16|o[Q+51|0]<<24,D=o[Q+32|0]|o[Q+33|0]<<8|o[Q+34|0]<<16|o[Q+35|0]<<24,f=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,p=o[Q+52|0]|o[Q+53|0]<<8|o[Q+54|0]<<16|o[Q+55|0]<<24,w=o[Q+36|0]|o[Q+37|0]<<8|o[Q+38|0]<<16|o[Q+39|0]<<24,B=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,g=o[Q+56|0]|o[Q+57|0]<<8|o[Q+58|0]<<16|o[Q+59|0]<<24,I=o[Q+40|0]|o[Q+41|0]<<8|o[Q+42|0]<<16|o[Q+43|0]<<24,a=n^(o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24)^(o[Q+60|0]|o[Q+61|0]<<8|o[Q+62|0]<<16|o[Q+63|0]<<24)^(o[Q+44|0]|o[Q+45|0]<<8|o[Q+46|0]<<16|o[Q+47|0]<<24),C[A+12|0]=a,C[A+13|0]=a>>>8,C[A+14|0]=a>>>16,C[A+15|0]=a>>>24,I=B^I^g^k,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=f^p^w^F,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=t^h^D^S,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,r=o[Q+80|0]|o[Q+81|0]<<8|o[Q+82|0]<<16|o[Q+83|0]<<24,e=o[0|(I=Q- -64|0)]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,a=o[Q+112|0]|o[Q+113|0]<<8|o[Q+114|0]<<16|o[Q+115|0]<<24,t=o[Q+96|0]|o[Q+97|0]<<8|o[Q+98|0]<<16|o[Q+99|0]<<24,h=o[Q+84|0]|o[Q+85|0]<<8|o[Q+86|0]<<16|o[Q+87|0]<<24,D=o[Q+68|0]|o[Q+69|0]<<8|o[Q+70|0]<<16|o[Q+71|0]<<24,f=o[Q+116|0]|o[Q+117|0]<<8|o[Q+118|0]<<16|o[Q+119|0]<<24,p=o[Q+100|0]|o[Q+101|0]<<8|o[Q+102|0]<<16|o[Q+103|0]<<24,w=o[Q+88|0]|o[Q+89|0]<<8|o[Q+90|0]<<16|o[Q+91|0]<<24,B=o[Q+72|0]|o[Q+73|0]<<8|o[Q+74|0]<<16|o[Q+75|0]<<24,g=o[Q+120|0]|o[Q+121|0]<<8|o[Q+122|0]<<16|o[Q+123|0]<<24,I=o[Q+104|0]|o[Q+105|0]<<8|o[Q+106|0]<<16|o[Q+107|0]<<24,Q=(o[Q+92|0]|o[Q+93|0]<<8|o[Q+94|0]<<16|o[Q+95|0]<<24)^(o[Q+76|0]|o[Q+77|0]<<8|o[Q+78|0]<<16|o[Q+79|0]<<24)^(o[Q+124|0]|o[Q+125|0]<<8|o[Q+126|0]<<16|o[Q+127|0]<<24)^(o[Q+108|0]|o[Q+109|0]<<8|o[Q+110|0]<<16|o[Q+111|0]<<24),C[A+28|0]=Q,C[A+29|0]=Q>>>8,C[A+30|0]=Q>>>16,C[A+31|0]=Q>>>24,I=w^B^I^g,C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,I=h^D^f^p,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=r^e^a^t,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24;break A}bg(A,0,I)}s=E+288|0}function J(A,I,g,C){var B=0,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0;for(B=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,i[g>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[g+4>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,i[g+8>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,i[g+12>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[g+16>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[g+20>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[g+24>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[g+28>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+32|0]|o[I+33|0]<<8|o[I+34|0]<<16|o[I+35|0]<<24,i[g+32>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+36|0]|o[I+37|0]<<8|o[I+38|0]<<16|o[I+39|0]<<24,i[g+36>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+40|0]|o[I+41|0]<<8|o[I+42|0]<<16|o[I+43|0]<<24,i[g+40>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+44|0]|o[I+45|0]<<8|o[I+46|0]<<16|o[I+47|0]<<24,i[g+44>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+48|0]|o[I+49|0]<<8|o[I+50|0]<<16|o[I+51|0]<<24,i[g+48>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+52|0]|o[I+53|0]<<8|o[I+54|0]<<16|o[I+55|0]<<24,i[g+52>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+56|0]|o[I+57|0]<<8|o[I+58|0]<<16|o[I+59|0]<<24,i[g+56>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,I=o[I+60|0]|o[I+61|0]<<8|o[I+62|0]<<16|o[I+63|0]<<24,i[g+60>>2]=I<<24|(65280&I)<<8|I>>>8&65280|I>>>24,I=i[A+28>>2],i[C+24>>2]=i[A+24>>2],i[C+28>>2]=I,I=i[A+20>>2],i[C+16>>2]=i[A+16>>2],i[C+20>>2]=I,I=i[A+12>>2],i[C+8>>2]=i[A+8>>2],i[C+12>>2]=I,I=i[A+4>>2],i[C>>2]=i[A>>2],i[C+4>>2]=I;_=i[C+28>>2],B=(I=n<<2)+g|0,E=i[C+16>>2],c=i[B>>2]+(Lg(E,26)^Lg(E,21)^Lg(E,7))|0,r=(_=((Q=i[I+35264>>2]+c|0)+(E&((c=i[C+24>>2])^(e=i[C+20>>2]))^c)|0)+_|0)+i[C+12>>2]|0,i[C+12>>2]=r,_=(s=_+(Lg(t=i[C>>2],30)^Lg(t,19)^Lg(t,10))|0)+(t&((Q=i[C+8>>2])|(a=i[C+4>>2]))|Q&a)|0,i[C+28>>2]=_,Q=(s=Q)+(c=(i[(D=(Q=4|I)+g|0)>>2]+((c+(e^r&(E^e))|0)+(Lg(r,26)^Lg(r,21)^Lg(r,7))|0)|0)+i[Q+35264>>2]|0)|0,i[C+8>>2]=Q,c=(c+(_&(a|t)|a&t)|0)+(Lg(_,30)^Lg(_,19)^Lg(_,10))|0,i[C+24>>2]=c,e=(s=a)+(a=(((e+i[(w=(a=8|I)+g|0)>>2]|0)+i[a+35264>>2]|0)+(E^Q&(E^r))|0)+(Lg(Q,26)^Lg(Q,21)^Lg(Q,7))|0)|0,i[C+4>>2]=e,a=a+((c&(_|t)|_&t)+(Lg(c,30)^Lg(c,19)^Lg(c,10))|0)|0,i[C+20>>2]=a,E=(s=t)+(t=(((E+i[(k=(t=12|I)+g|0)>>2]|0)+i[t+35264>>2]|0)+(r^e&(Q^r))|0)+(Lg(e,26)^Lg(e,21)^Lg(e,7))|0)|0,i[C>>2]=E,t=t+((a&(_|c)|_&c)+(Lg(a,30)^Lg(a,19)^Lg(a,10))|0)|0,i[C+16>>2]=t,r=(y=((((s=r)+i[(F=(r=16|I)+g|0)>>2]|0)+i[r+35264>>2]|0)+(Q^E&(Q^e))|0)+(Lg(E,26)^Lg(E,21)^Lg(E,7))|0)+((t&(a|c)|a&c)+(Lg(t,30)^Lg(t,19)^Lg(t,10))|0)|0,i[C+12>>2]=r,y=_+y|0,i[C+28>>2]=y,_=(Q=(((Q+i[(S=(_=20|I)+g|0)>>2]|0)+i[_+35264>>2]|0)+(e^y&(E^e))|0)+(Lg(y,26)^Lg(y,21)^Lg(y,7))|0)+((r&(a|t)|a&t)+(Lg(r,30)^Lg(r,19)^Lg(r,10))|0)|0,i[C+8>>2]=_,Q=Q+c|0,i[C+24>>2]=Q,c=(e=(((e+i[(N=(c=24|I)+g|0)>>2]|0)+i[c+35264>>2]|0)+(E^Q&(E^y))|0)+(Lg(Q,26)^Lg(Q,21)^Lg(Q,7))|0)+((_&(t|r)|t&r)+(Lg(_,30)^Lg(_,19)^Lg(_,10))|0)|0,i[C+4>>2]=c,e=a+e|0,i[C+20>>2]=e,a=(E=(((E+i[(G=(a=28|I)+g|0)>>2]|0)+i[a+35264>>2]|0)+(y^e&(Q^y))|0)+(Lg(e,26)^Lg(e,21)^Lg(e,7))|0)+((c&(_|r)|_&r)+(Lg(c,30)^Lg(c,19)^Lg(c,10))|0)|0,i[C>>2]=a,E=E+t|0,i[C+16>>2]=E,t=(y=(((y+i[(M=(t=32|I)+g|0)>>2]|0)+i[t+35264>>2]|0)+(Q^E&(Q^e))|0)+(Lg(E,26)^Lg(E,21)^Lg(E,7))|0)+((a&(_|c)|_&c)+(Lg(a,30)^Lg(a,19)^Lg(a,10))|0)|0,i[C+28>>2]=t,y=r+y|0,i[C+12>>2]=y,r=(Q=(((Q+i[(K=(r=36|I)+g|0)>>2]|0)+i[r+35264>>2]|0)+(e^y&(E^e))|0)+(Lg(y,26)^Lg(y,21)^Lg(y,7))|0)+((t&(a|c)|a&c)+(Lg(t,30)^Lg(t,19)^Lg(t,10))|0)|0,i[C+24>>2]=r,Q=Q+_|0,i[C+8>>2]=Q,_=(e=(((e+i[(U=(_=40|I)+g|0)>>2]|0)+i[_+35264>>2]|0)+(E^Q&(E^y))|0)+(Lg(Q,26)^Lg(Q,21)^Lg(Q,7))|0)+((r&(a|t)|a&t)+(Lg(r,30)^Lg(r,19)^Lg(r,10))|0)|0,i[C+20>>2]=_,e=c+e|0,i[C+4>>2]=e,s=(c=44|I)+g|0,c=(E=((E+(i[c+35264>>2]+i[s>>2]|0)|0)+(y^e&(Q^y))|0)+(Lg(e,26)^Lg(e,21)^Lg(e,7))|0)+((_&(t|r)|t&r)+(Lg(_,30)^Lg(_,19)^Lg(_,10))|0)|0,i[C+16>>2]=c,a=a+E|0,i[C>>2]=a,p=(E=48|I)+g|0,E=(y=((y+(i[E+35264>>2]+i[p>>2]|0)|0)+(Q^a&(Q^e))|0)+(Lg(a,26)^Lg(a,21)^Lg(a,7))|0)+((c&(_|r)|_&r)+(Lg(c,30)^Lg(c,19)^Lg(c,10))|0)|0,i[C+12>>2]=E,t=t+y|0,i[C+28>>2]=t,f=(y=52|I)+g|0,Q=(y=(((i[y+35264>>2]+i[f>>2]|0)+Q|0)+(e^t&(a^e))|0)+(Lg(t,26)^Lg(t,21)^Lg(t,7))|0)+((E&(_|c)|_&c)+(Lg(E,30)^Lg(E,19)^Lg(E,10))|0)|0,i[C+8>>2]=Q,r=r+y|0,i[C+24>>2]=r,y=(h=56|I)+g|0,e=(h=(((i[h+35264>>2]+i[y>>2]|0)+e|0)+(a^r&(a^t))|0)+(Lg(r,26)^Lg(r,21)^Lg(r,7))|0)+((Q&(c|E)|c&E)+(Lg(Q,30)^Lg(Q,19)^Lg(Q,10))|0)|0,i[C+4>>2]=e,_=_+h|0,i[C+20>>2]=_,h=(I|=60)+g|0,_=(I=((a+(i[I+35264>>2]+i[h>>2]|0)|0)+(t^_&(t^r))|0)+(Lg(_,26)^Lg(_,21)^Lg(_,7))|0)+((e&(Q|E)|Q&E)+(Lg(e,30)^Lg(e,19)^Lg(e,10))|0)|0,i[C>>2]=_,i[C+16>>2]=I+c,48!=(0|n);)a=i[K>>2],n=n+16|0,I=i[y>>2],_=(Q=i[B>>2]+(a+(Lg(I,15)^Lg(I,13)^I>>>10)|0)|0)+(Lg(c=i[D>>2],25)^Lg(c,14)^c>>>3)|0,i[(n<<2)+g>>2]=_,r=(E=(Q=(t=i[U>>2])+c|0)+(Lg(c=i[h>>2],15)^Lg(c,13)^c>>>10)|0)+(Lg(Q=i[w>>2],25)^Lg(Q,14)^Q>>>3)|0,i[B+68>>2]=r,e=(s=((E=Q)+(Q=i[s>>2])|0)+(Lg(_,15)^Lg(_,13)^_>>>10)|0)+(Lg(E=i[k>>2],25)^Lg(E,14)^E>>>3)|0,i[B+72>>2]=e,y=(h=((s=E)+(E=i[p>>2])|0)+(Lg(r,15)^Lg(r,13)^r>>>10)|0)+(Lg(s=i[F>>2],25)^Lg(s,14)^s>>>3)|0,i[B+76>>2]=y,p=(h=((h=s)+(s=i[f>>2])|0)+(Lg(e,15)^Lg(e,13)^e>>>10)|0)+(Lg(f=i[S>>2],25)^Lg(f,14)^f>>>3)|0,i[B+80>>2]=p,f=(D=(I+f|0)+(Lg(y,15)^Lg(y,13)^y>>>10)|0)+(Lg(h=i[N>>2],25)^Lg(h,14)^h>>>3)|0,i[B+84>>2]=f,h=((c+h|0)+(Lg(w=i[G>>2],25)^Lg(w,14)^w>>>3)|0)+(Lg(p,15)^Lg(p,13)^p>>>10)|0,i[B+88>>2]=h,r=((D=i[M>>2])+(r+(Lg(a,25)^Lg(a,14)^a>>>3)|0)|0)+(Lg(h,15)^Lg(h,13)^h>>>10)|0,i[B+96>>2]=r,D=((_+w|0)+(Lg(D,25)^Lg(D,14)^D>>>3)|0)+(Lg(f,15)^Lg(f,13)^f>>>10)|0,i[B+92>>2]=D,y=(y+(t+(Lg(Q,25)^Lg(Q,14)^Q>>>3)|0)|0)+(Lg(r,15)^Lg(r,13)^r>>>10)|0,i[B+104>>2]=y,a=(e+(a+(Lg(t,25)^Lg(t,14)^t>>>3)|0)|0)+(Lg(D,15)^Lg(D,13)^D>>>10)|0,i[B+100>>2]=a,t=(f+(E+(Lg(s,25)^Lg(s,14)^s>>>3)|0)|0)+(Lg(y,15)^Lg(y,13)^y>>>10)|0,i[B+112>>2]=t,a=(p+(Q+(Lg(E,25)^Lg(E,14)^E>>>3)|0)|0)+(Lg(a,15)^Lg(a,13)^a>>>10)|0,i[B+108>>2]=a,b=B,H=(D+(I+(Lg(c,25)^Lg(c,14)^c>>>3)|0)|0)+(Lg(t,15)^Lg(t,13)^t>>>10)|0,i[b+120>>2]=H,I=(h+(s+(Lg(I,25)^Lg(I,14)^I>>>3)|0)|0)+(Lg(a,15)^Lg(a,13)^a>>>10)|0,i[B+116>>2]=I,b=B,H=(r+(c+(Lg(_,25)^Lg(_,14)^_>>>3)|0)|0)+(Lg(I,15)^Lg(I,13)^I>>>10)|0,i[b+124>>2]=H;i[A>>2]=_+i[A>>2],i[A+4>>2]=i[A+4>>2]+i[C+4>>2],i[A+8>>2]=i[A+8>>2]+i[C+8>>2],i[A+12>>2]=i[A+12>>2]+i[C+12>>2],i[A+16>>2]=i[A+16>>2]+i[C+16>>2],i[A+20>>2]=i[A+20>>2]+i[C+20>>2],i[A+24>>2]=i[A+24>>2]+i[C+24>>2],i[A+28>>2]=i[A+28>>2]+i[C+28>>2]}function d(A,I,g){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S,N,G,M,K,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0;s=B=s-288|0,t=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,r=o[g+48|0]|o[g+49|0]<<8|o[g+50|0]<<16|o[g+51|0]<<24,e=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,y=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,h=o[g+52|0]|o[g+53|0]<<8|o[g+54|0]<<16|o[g+55|0]<<24,D=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,f=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,p=o[g+56|0]|o[g+57|0]<<8|o[g+58|0]<<16|o[g+59|0]<<24,J=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,w=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,n=o[g+60|0]|o[g+61|0]<<8|o[g+62|0]<<16|o[g+63|0]<<24,b=o[g+32|0]|o[g+33|0]<<8|o[g+34|0]<<16|o[g+35|0]<<24,d=o[g+80|0]|o[g+81|0]<<8|o[g+82|0]<<16|o[g+83|0]<<24,k=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,F=o[g+112|0]|o[g+113|0]<<8|o[g+114|0]<<16|o[g+115|0]<<24,U=o[g+96|0]|o[g+97|0]<<8|o[g+98|0]<<16|o[g+99|0]<<24,H=o[g+36|0]|o[g+37|0]<<8|o[g+38|0]<<16|o[g+39|0]<<24,m=o[g+84|0]|o[g+85|0]<<8|o[g+86|0]<<16|o[g+87|0]<<24,S=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,N=o[g+116|0]|o[g+117|0]<<8|o[g+118|0]<<16|o[g+119|0]<<24,E=o[g+100|0]|o[g+101|0]<<8|o[g+102|0]<<16|o[g+103|0]<<24,Y=o[g+40|0]|o[g+41|0]<<8|o[g+42|0]<<16|o[g+43|0]<<24,l=o[g+88|0]|o[g+89|0]<<8|o[g+90|0]<<16|o[g+91|0]<<24,G=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,M=o[g+120|0]|o[g+121|0]<<8|o[g+122|0]<<16|o[g+123|0]<<24,a=o[g+104|0]|o[g+105|0]<<8|o[g+106|0]<<16|o[g+107|0]<<24,K=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,Q=(_=o[g+44|0]|o[g+45|0]<<8|o[g+46|0]<<16|o[g+47|0]<<24)^(c=o[g+108|0]|o[g+109|0]<<8|o[g+110|0]<<16|o[g+111|0]<<24)&(o[g+124|0]|o[g+125|0]<<8|o[g+126|0]<<16|o[g+127|0]<<24)^(o[g+92|0]|o[g+93|0]<<8|o[g+94|0]<<16|o[g+95|0]<<24)^(o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24),C[A+28|0]=Q,C[A+29|0]=Q>>>8,C[A+30|0]=Q>>>16,C[A+31|0]=Q>>>24,l=Y^a&M^l^G,C[A+24|0]=l,C[A+25|0]=l>>>8,C[A+26|0]=l>>>16,C[A+27|0]=l>>>24,m=H^E&N^m^S,C[A+20|0]=m,C[A+21|0]=m>>>8,C[A+22|0]=m>>>16,C[A+23|0]=m>>>24,d=b^U&F^d^k,C[A+16|0]=d,C[A+17|0]=d>>>8,C[A+18|0]=d>>>16,C[A+19|0]=d>>>24,J=n&_^J^w^c,C[A+12|0]=J,C[A+13|0]=J>>>8,C[A+14|0]=J>>>16,C[A+15|0]=J>>>24,Y=Y&p^D^f^a,C[A+8|0]=Y,C[A+9|0]=Y>>>8,C[A+10|0]=Y>>>16,C[A+11|0]=Y>>>24,H=H&h^e^y^E,C[A+4|0]=H,C[A+5|0]=H>>>8,C[A+6|0]=H>>>16,C[A+7|0]=H>>>24,b=U^b&r^t^K,C[0|A]=b,C[A+1|0]=b>>>8,C[A+2|0]=b>>>16,C[A+3|0]=b>>>24,A=i[g+124>>2],i[B+280>>2]=i[g+120>>2],i[B+284>>2]=A,A=i[g+116>>2],i[B+272>>2]=i[g+112>>2],i[B+276>>2]=A,A=i[g+108>>2],i[B+248>>2]=i[g+104>>2],i[B+252>>2]=A,A=i[g+100>>2],i[B+240>>2]=i[g+96>>2],i[B+244>>2]=A,A=i[g+124>>2],i[B+232>>2]=i[g+120>>2],i[B+236>>2]=A,A=i[g+116>>2],i[B+224>>2]=i[g+112>>2],i[B+228>>2]=A,AI(I=B+256|0,B+240|0,B+224|0),A=i[B+268>>2],i[g+120>>2]=i[B+264>>2],i[g+124>>2]=A,A=i[B+260>>2],i[g+112>>2]=i[B+256>>2],i[g+116>>2]=A,A=i[g+92>>2],i[B+216>>2]=i[g+88>>2],i[B+220>>2]=A,A=i[g+84>>2],i[B+208>>2]=i[g+80>>2],i[B+212>>2]=A,A=i[g+108>>2],i[B+200>>2]=i[g+104>>2],i[B+204>>2]=A,A=i[g+100>>2],i[B+192>>2]=i[g+96>>2],i[B+196>>2]=A,AI(I,B+208|0,B+192|0),A=i[B+268>>2],i[g+104>>2]=i[B+264>>2],i[g+108>>2]=A,A=i[B+260>>2],i[g+96>>2]=i[B+256>>2],i[g+100>>2]=A,A=i[g+76>>2],i[B+184>>2]=i[g+72>>2],i[B+188>>2]=A,U=i[4+(A=g- -64|0)>>2],i[B+176>>2]=i[A>>2],i[B+180>>2]=U,U=i[g+92>>2],i[B+168>>2]=i[g+88>>2],i[B+172>>2]=U,U=i[g+84>>2],i[B+160>>2]=i[g+80>>2],i[B+164>>2]=U,AI(I,B+176|0,B+160|0),U=i[B+268>>2],i[g+88>>2]=i[B+264>>2],i[g+92>>2]=U,U=i[B+260>>2],i[g+80>>2]=i[B+256>>2],i[g+84>>2]=U,U=i[g+60>>2],i[B+152>>2]=i[g+56>>2],i[B+156>>2]=U,U=i[g+52>>2],i[B+144>>2]=i[g+48>>2],i[B+148>>2]=U,U=i[g+76>>2],i[B+136>>2]=i[g+72>>2],i[B+140>>2]=U,U=i[A+4>>2],i[B+128>>2]=i[A>>2],i[B+132>>2]=U,AI(I,B+144|0,B+128|0),U=i[B+268>>2],i[g+72>>2]=i[B+264>>2],i[g+76>>2]=U,U=i[B+260>>2],i[A>>2]=i[B+256>>2],i[A+4>>2]=U,U=i[g+44>>2],i[B+120>>2]=i[g+40>>2],i[B+124>>2]=U,U=i[g+36>>2],i[B+112>>2]=i[g+32>>2],i[B+116>>2]=U,U=i[g+60>>2],i[B+104>>2]=i[g+56>>2],i[B+108>>2]=U,U=i[g+52>>2],i[B+96>>2]=i[g+48>>2],i[B+100>>2]=U,AI(I,B+112|0,B+96|0),U=i[B+268>>2],i[g+56>>2]=i[B+264>>2],i[g+60>>2]=U,U=i[B+260>>2],i[g+48>>2]=i[B+256>>2],i[g+52>>2]=U,U=i[g+28>>2],i[B+88>>2]=i[g+24>>2],i[B+92>>2]=U,U=i[g+20>>2],i[B+80>>2]=i[g+16>>2],i[B+84>>2]=U,U=i[g+44>>2],i[B+72>>2]=i[g+40>>2],i[B+76>>2]=U,U=i[g+36>>2],i[B+64>>2]=i[g+32>>2],i[B+68>>2]=U,AI(I,B+80|0,B- -64|0),U=i[B+268>>2],i[g+40>>2]=i[B+264>>2],i[g+44>>2]=U,U=i[B+260>>2],i[g+32>>2]=i[B+256>>2],i[g+36>>2]=U,U=i[g+12>>2],i[B+56>>2]=i[g+8>>2],i[B+60>>2]=U,U=i[g+4>>2],i[B+48>>2]=i[g>>2],i[B+52>>2]=U,U=i[g+28>>2],i[B+40>>2]=i[g+24>>2],i[B+44>>2]=U,U=i[g+20>>2],i[B+32>>2]=i[g+16>>2],i[B+36>>2]=U,AI(I,B+48|0,B+32|0),U=i[B+268>>2],i[g+24>>2]=i[B+264>>2],i[g+28>>2]=U,U=i[B+260>>2],i[g+16>>2]=i[B+256>>2],i[g+20>>2]=U,U=i[B+284>>2],i[B+24>>2]=i[B+280>>2],i[B+28>>2]=U,U=i[B+276>>2],i[B+16>>2]=i[B+272>>2],i[B+20>>2]=U,U=i[g+12>>2],i[B+8>>2]=i[g+8>>2],i[B+12>>2]=U,U=i[g+4>>2],i[B>>2]=i[g>>2],i[B+4>>2]=U,AI(I,B+16|0,B),I=i[B+268>>2],i[g+8>>2]=i[B+264>>2],i[g+12>>2]=I,I=i[B+260>>2],i[g>>2]=i[B+256>>2],i[g+4>>2]=I,i[g+12>>2]=J^(o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24),i[g+8>>2]=Y^(o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24),i[g+4>>2]=H^(o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24),i[g>>2]=b^(o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24),i[A>>2]=d^(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24),i[g+68>>2]=m^(o[g+68|0]|o[g+69|0]<<8|o[g+70|0]<<16|o[g+71|0]<<24),i[g+72>>2]=l^(o[g+72|0]|o[g+73|0]<<8|o[g+74|0]<<16|o[g+75|0]<<24),i[g+76>>2]=Q^(o[g+76|0]|o[g+77|0]<<8|o[g+78|0]<<16|o[g+79|0]<<24),s=B+288|0}function m(A,I,g){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S,N,G,M,K,U,b,H,Y,J,d,m,l=0;s=B=s-288|0,k=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,F=o[g+48|0]|o[g+49|0]<<8|o[g+50|0]<<16|o[g+51|0]<<24,Q=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,S=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,N=o[g+52|0]|o[g+53|0]<<8|o[g+54|0]<<16|o[g+55|0]<<24,E=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,G=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,M=o[g+56|0]|o[g+57|0]<<8|o[g+58|0]<<16|o[g+59|0]<<24,a=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,K=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,U=o[g+60|0]|o[g+61|0]<<8|o[g+62|0]<<16|o[g+63|0]<<24,l=o[g+32|0]|o[g+33|0]<<8|o[g+34|0]<<16|o[g+35|0]<<24,_=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,b=o[g+80|0]|o[g+81|0]<<8|o[g+82|0]<<16|o[g+83|0]<<24,H=o[g+112|0]|o[g+113|0]<<8|o[g+114|0]<<16|o[g+115|0]<<24,c=o[g+96|0]|o[g+97|0]<<8|o[g+98|0]<<16|o[g+99|0]<<24,t=o[g+36|0]|o[g+37|0]<<8|o[g+38|0]<<16|o[g+39|0]<<24,r=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,Y=o[g+84|0]|o[g+85|0]<<8|o[g+86|0]<<16|o[g+87|0]<<24,J=o[g+116|0]|o[g+117|0]<<8|o[g+118|0]<<16|o[g+119|0]<<24,e=o[g+100|0]|o[g+101|0]<<8|o[g+102|0]<<16|o[g+103|0]<<24,y=o[g+40|0]|o[g+41|0]<<8|o[g+42|0]<<16|o[g+43|0]<<24,h=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,d=o[g+88|0]|o[g+89|0]<<8|o[g+90|0]<<16|o[g+91|0]<<24,m=o[g+120|0]|o[g+121|0]<<8|o[g+122|0]<<16|o[g+123|0]<<24,D=o[g+104|0]|o[g+105|0]<<8|o[g+106|0]<<16|o[g+107|0]<<24,f=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=(p=o[g+44|0]|o[g+45|0]<<8|o[g+46|0]<<16|o[g+47|0]<<24)^(w=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24)^(n=o[g+108|0]|o[g+109|0]<<8|o[g+110|0]<<16|o[g+111|0]<<24)&(o[g+124|0]|o[g+125|0]<<8|o[g+126|0]<<16|o[g+127|0]<<24)^(o[g+92|0]|o[g+93|0]<<8|o[g+94|0]<<16|o[g+95|0]<<24),C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=D&m^d^h^y,C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,I=e&J^Y^r^t,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=l^c&H^b^_,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,I=U&p^K^a^n,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=y&M^G^E^D,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=t&N^S^Q^e,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=l&F^k^f^c,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,A=i[g+124>>2],i[B+280>>2]=i[g+120>>2],i[B+284>>2]=A,A=i[g+116>>2],i[B+272>>2]=i[g+112>>2],i[B+276>>2]=A,A=i[g+108>>2],i[B+248>>2]=i[g+104>>2],i[B+252>>2]=A,A=i[g+100>>2],i[B+240>>2]=i[g+96>>2],i[B+244>>2]=A,A=i[g+124>>2],i[B+232>>2]=i[g+120>>2],i[B+236>>2]=A,A=i[g+116>>2],i[B+224>>2]=i[g+112>>2],i[B+228>>2]=A,AI(I=B+256|0,B+240|0,B+224|0),A=i[B+268>>2],i[g+120>>2]=i[B+264>>2],i[g+124>>2]=A,A=i[B+260>>2],i[g+112>>2]=i[B+256>>2],i[g+116>>2]=A,A=i[g+92>>2],i[B+216>>2]=i[g+88>>2],i[B+220>>2]=A,A=i[g+84>>2],i[B+208>>2]=i[g+80>>2],i[B+212>>2]=A,A=i[g+108>>2],i[B+200>>2]=i[g+104>>2],i[B+204>>2]=A,A=i[g+100>>2],i[B+192>>2]=i[g+96>>2],i[B+196>>2]=A,AI(I,B+208|0,B+192|0),A=i[B+268>>2],i[g+104>>2]=i[B+264>>2],i[g+108>>2]=A,A=i[B+260>>2],i[g+96>>2]=i[B+256>>2],i[g+100>>2]=A,A=i[g+76>>2],i[B+184>>2]=i[g+72>>2],i[B+188>>2]=A,l=i[4+(A=g- -64|0)>>2],i[B+176>>2]=i[A>>2],i[B+180>>2]=l,l=i[g+92>>2],i[B+168>>2]=i[g+88>>2],i[B+172>>2]=l,l=i[g+84>>2],i[B+160>>2]=i[g+80>>2],i[B+164>>2]=l,AI(I,B+176|0,B+160|0),l=i[B+268>>2],i[g+88>>2]=i[B+264>>2],i[g+92>>2]=l,l=i[B+260>>2],i[g+80>>2]=i[B+256>>2],i[g+84>>2]=l,l=i[g+60>>2],i[B+152>>2]=i[g+56>>2],i[B+156>>2]=l,l=i[g+52>>2],i[B+144>>2]=i[g+48>>2],i[B+148>>2]=l,l=i[g+76>>2],i[B+136>>2]=i[g+72>>2],i[B+140>>2]=l,l=i[A+4>>2],i[B+128>>2]=i[A>>2],i[B+132>>2]=l,AI(I,B+144|0,B+128|0),l=i[B+268>>2],i[g+72>>2]=i[B+264>>2],i[g+76>>2]=l,l=i[B+260>>2],i[A>>2]=i[B+256>>2],i[A+4>>2]=l,l=i[g+44>>2],i[B+120>>2]=i[g+40>>2],i[B+124>>2]=l,l=i[g+36>>2],i[B+112>>2]=i[g+32>>2],i[B+116>>2]=l,l=i[g+60>>2],i[B+104>>2]=i[g+56>>2],i[B+108>>2]=l,l=i[g+52>>2],i[B+96>>2]=i[g+48>>2],i[B+100>>2]=l,AI(I,B+112|0,B+96|0),l=i[B+268>>2],i[g+56>>2]=i[B+264>>2],i[g+60>>2]=l,l=i[B+260>>2],i[g+48>>2]=i[B+256>>2],i[g+52>>2]=l,l=i[g+28>>2],i[B+88>>2]=i[g+24>>2],i[B+92>>2]=l,l=i[g+20>>2],i[B+80>>2]=i[g+16>>2],i[B+84>>2]=l,l=i[g+44>>2],i[B+72>>2]=i[g+40>>2],i[B+76>>2]=l,l=i[g+36>>2],i[B+64>>2]=i[g+32>>2],i[B+68>>2]=l,AI(I,B+80|0,B- -64|0),l=i[B+268>>2],i[g+40>>2]=i[B+264>>2],i[g+44>>2]=l,l=i[B+260>>2],i[g+32>>2]=i[B+256>>2],i[g+36>>2]=l,l=i[g+12>>2],i[B+56>>2]=i[g+8>>2],i[B+60>>2]=l,l=i[g+4>>2],i[B+48>>2]=i[g>>2],i[B+52>>2]=l,l=i[g+28>>2],i[B+40>>2]=i[g+24>>2],i[B+44>>2]=l,l=i[g+20>>2],i[B+32>>2]=i[g+16>>2],i[B+36>>2]=l,AI(I,B+48|0,B+32|0),l=i[B+268>>2],i[g+24>>2]=i[B+264>>2],i[g+28>>2]=l,l=i[B+260>>2],i[g+16>>2]=i[B+256>>2],i[g+20>>2]=l,l=i[B+284>>2],i[B+24>>2]=i[B+280>>2],i[B+28>>2]=l,l=i[B+276>>2],i[B+16>>2]=i[B+272>>2],i[B+20>>2]=l,l=i[g+12>>2],i[B+8>>2]=i[g+8>>2],i[B+12>>2]=l,l=i[g+4>>2],i[B>>2]=i[g>>2],i[B+4>>2]=l,AI(I,B+16|0,B),I=i[B+268>>2],i[g+8>>2]=i[B+264>>2],i[g+12>>2]=I,I=i[B+260>>2],i[g>>2]=i[B+256>>2],i[g+4>>2]=I,i[g+12>>2]=(o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24)^a,i[g+8>>2]=(o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24)^E,i[g+4>>2]=(o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24)^Q,i[g>>2]=(o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24)^f,i[A>>2]=(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24)^_,i[g+68>>2]=(o[g+68|0]|o[g+69|0]<<8|o[g+70|0]<<16|o[g+71|0]<<24)^r,i[g+72>>2]=(o[g+72|0]|o[g+73|0]<<8|o[g+74|0]<<16|o[g+75|0]<<24)^h,i[g+76>>2]=w^(o[g+76|0]|o[g+77|0]<<8|o[g+78|0]<<16|o[g+79|0]<<24),s=B+288|0}function l(A,I,g,B,Q){var E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0;for(s=E=s-224|0,f=(o[Q+60|0]|o[Q+61|0]<<8|o[Q+62|0]<<16|o[Q+63|0]<<24)^B>>>29,p=(o[Q+56|0]|o[Q+57|0]<<8|o[Q+58|0]<<16|o[Q+59|0]<<24)^B<<3,e=(o[Q+52|0]|o[Q+53|0]<<8|o[Q+54|0]<<16|o[Q+55|0]<<24)^g>>>29,h=(o[0|(a=Q+48|0)]|o[a+1|0]<<8|o[a+2|0]<<16|o[a+3|0]<<24)^g<<3,_=Q+16|0,c=Q+32|0,t=Q- -64|0,r=Q+80|0;g=i[r+12>>2],i[E+216>>2]=i[r+8>>2],i[E+220>>2]=g,g=i[r+4>>2],i[E+208>>2]=i[r>>2],i[E+212>>2]=g,g=i[t+12>>2],i[E+184>>2]=i[t+8>>2],i[E+188>>2]=g,g=i[t+4>>2],i[E+176>>2]=i[t>>2],i[E+180>>2]=g,g=i[r+12>>2],i[E+168>>2]=i[r+8>>2],i[E+172>>2]=g,g=i[r+4>>2],i[E+160>>2]=i[r>>2],i[E+164>>2]=g,AI(B=E+192|0,E+176|0,E+160|0),g=i[E+204>>2],i[r+8>>2]=i[E+200>>2],i[r+12>>2]=g,g=i[E+196>>2],i[r>>2]=i[E+192>>2],i[r+4>>2]=g,g=i[a+12>>2],i[E+152>>2]=i[a+8>>2],i[E+156>>2]=g,g=i[a+4>>2],i[E+144>>2]=i[a>>2],i[E+148>>2]=g,g=i[t+12>>2],i[E+136>>2]=i[t+8>>2],i[E+140>>2]=g,g=i[t+4>>2],i[E+128>>2]=i[t>>2],i[E+132>>2]=g,AI(B,E+144|0,E+128|0),g=i[E+204>>2],i[t+8>>2]=i[E+200>>2],i[t+12>>2]=g,g=i[E+196>>2],i[t>>2]=i[E+192>>2],i[t+4>>2]=g,g=i[c+12>>2],i[E+120>>2]=i[c+8>>2],i[E+124>>2]=g,g=i[c+4>>2],i[E+112>>2]=i[c>>2],i[E+116>>2]=g,g=i[a+12>>2],i[E+104>>2]=i[a+8>>2],i[E+108>>2]=g,g=i[a+4>>2],i[E+96>>2]=i[a>>2],i[E+100>>2]=g,AI(B,E+112|0,E+96|0),g=i[E+204>>2],i[a+8>>2]=i[E+200>>2],i[a+12>>2]=g,g=i[E+196>>2],i[a>>2]=i[E+192>>2],i[a+4>>2]=g,g=i[_+12>>2],i[E+88>>2]=i[_+8>>2],i[E+92>>2]=g,g=i[_+4>>2],i[E+80>>2]=i[_>>2],i[E+84>>2]=g,g=i[c+12>>2],i[E+72>>2]=i[c+8>>2],i[E+76>>2]=g,g=i[c+4>>2],i[E+64>>2]=i[c>>2],i[E+68>>2]=g,AI(B,E+80|0,E- -64|0),g=i[E+204>>2],i[c+8>>2]=i[E+200>>2],i[c+12>>2]=g,g=i[E+196>>2],i[c>>2]=i[E+192>>2],i[c+4>>2]=g,g=i[Q+12>>2],i[E+56>>2]=i[Q+8>>2],i[E+60>>2]=g,g=i[Q+4>>2],i[E+48>>2]=i[Q>>2],i[E+52>>2]=g,g=i[_+12>>2],i[E+40>>2]=i[_+8>>2],i[E+44>>2]=g,g=i[_+4>>2],i[E+32>>2]=i[_>>2],i[E+36>>2]=g,AI(B,E+48|0,E+32|0),g=i[E+204>>2],i[_+8>>2]=i[E+200>>2],i[_+12>>2]=g,g=i[E+196>>2],i[_>>2]=i[E+192>>2],i[_+4>>2]=g,g=i[E+220>>2],i[E+24>>2]=i[E+216>>2],i[E+28>>2]=g,g=i[E+212>>2],i[E+16>>2]=i[E+208>>2],i[E+20>>2]=g,g=i[Q+12>>2],i[E+8>>2]=i[Q+8>>2],i[E+12>>2]=g,g=i[Q+4>>2],i[E>>2]=i[Q>>2],i[E+4>>2]=g,AI(B,E+16|0,E),D=i[E+192>>2],B=i[E+196>>2],g=i[E+200>>2],w=f^i[E+204>>2],i[Q+12>>2]=w,n=g^p,i[Q+8>>2]=n,k=B^e,i[Q+4>>2]=k,F=h^D,i[Q>>2]=F,7!=(0|(y=y+1|0)););A:{I:{g:{if(g=I-16|0){if(16==(0|g))break g;break I}S=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,a=o[Q+48|0]|o[Q+49|0]<<8|o[Q+50|0]<<16|o[Q+51|0]<<24,_=o[Q+32|0]|o[Q+33|0]<<8|o[Q+34|0]<<16|o[Q+35|0]<<24,c=o[Q+80|0]|o[Q+81|0]<<8|o[Q+82|0]<<16|o[Q+83|0]<<24,t=o[0|(I=Q- -64|0)]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,r=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,f=o[Q+52|0]|o[Q+53|0]<<8|o[Q+54|0]<<16|o[Q+55|0]<<24,p=o[Q+36|0]|o[Q+37|0]<<8|o[Q+38|0]<<16|o[Q+39|0]<<24,e=o[Q+84|0]|o[Q+85|0]<<8|o[Q+86|0]<<16|o[Q+87|0]<<24,h=o[Q+68|0]|o[Q+69|0]<<8|o[Q+70|0]<<16|o[Q+71|0]<<24,D=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,y=o[Q+56|0]|o[Q+57|0]<<8|o[Q+58|0]<<16|o[Q+59|0]<<24,B=o[Q+40|0]|o[Q+41|0]<<8|o[Q+42|0]<<16|o[Q+43|0]<<24,g=o[Q+88|0]|o[Q+89|0]<<8|o[Q+90|0]<<16|o[Q+91|0]<<24,I=o[Q+72|0]|o[Q+73|0]<<8|o[Q+74|0]<<16|o[Q+75|0]<<24,Q=w^(o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24)^(o[Q+60|0]|o[Q+61|0]<<8|o[Q+62|0]<<16|o[Q+63|0]<<24)^(o[Q+44|0]|o[Q+45|0]<<8|o[Q+46|0]<<16|o[Q+47|0]<<24)^(o[Q+92|0]|o[Q+93|0]<<8|o[Q+94|0]<<16|o[Q+95|0]<<24)^(o[Q+76|0]|o[Q+77|0]<<8|o[Q+78|0]<<16|o[Q+79|0]<<24),C[A+12|0]=Q,C[A+13|0]=Q>>>8,C[A+14|0]=Q>>>16,C[A+15|0]=Q>>>24,I=n^D^I^g^B^y,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=k^r^f^p^e^h,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=F^S^a^_^c^t,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24;break A}h=o[Q+32|0]|o[Q+33|0]<<8|o[Q+34|0]<<16|o[Q+35|0]<<24,D=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,y=o[Q+36|0]|o[Q+37|0]<<8|o[Q+38|0]<<16|o[Q+39|0]<<24,B=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,g=o[Q+40|0]|o[Q+41|0]<<8|o[Q+42|0]<<16|o[Q+43|0]<<24,I=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,e=w^(o[Q+44|0]|o[Q+45|0]<<8|o[Q+46|0]<<16|o[Q+47|0]<<24)^(o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24),C[A+12|0]=e,C[A+13|0]=e>>>8,C[A+14|0]=e>>>16,C[A+15|0]=e>>>24,I=n^I^g,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=k^B^y,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=F^h^D,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,f=o[Q+48|0]|o[Q+49|0]<<8|o[Q+50|0]<<16|o[Q+51|0]<<24,p=o[Q+80|0]|o[Q+81|0]<<8|o[Q+82|0]<<16|o[Q+83|0]<<24,e=o[0|(I=Q- -64|0)]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,h=o[Q+52|0]|o[Q+53|0]<<8|o[Q+54|0]<<16|o[Q+55|0]<<24,D=o[Q+84|0]|o[Q+85|0]<<8|o[Q+86|0]<<16|o[Q+87|0]<<24,y=o[Q+68|0]|o[Q+69|0]<<8|o[Q+70|0]<<16|o[Q+71|0]<<24,B=o[Q+56|0]|o[Q+57|0]<<8|o[Q+58|0]<<16|o[Q+59|0]<<24,g=o[Q+88|0]|o[Q+89|0]<<8|o[Q+90|0]<<16|o[Q+91|0]<<24,I=o[Q+72|0]|o[Q+73|0]<<8|o[Q+74|0]<<16|o[Q+75|0]<<24,Q=(o[Q+60|0]|o[Q+61|0]<<8|o[Q+62|0]<<16|o[Q+63|0]<<24)^(o[Q+92|0]|o[Q+93|0]<<8|o[Q+94|0]<<16|o[Q+95|0]<<24)^(o[Q+76|0]|o[Q+77|0]<<8|o[Q+78|0]<<16|o[Q+79|0]<<24),C[A+28|0]=Q,C[A+29|0]=Q>>>8,C[A+30|0]=Q>>>16,C[A+31|0]=Q>>>24,I=B^I^g,C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,I=h^D^y,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=f^e^p,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24;break A}bg(A,0,I)}s=E+224|0}function u(A,I,g){var B,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0;for(s=B=s-4032|0,$A(B+160|0,g),_=i[g+36>>2],i[(a=B+3840|0)>>2]=i[g+32>>2],i[a+4>>2]=_,c=i[g+28>>2],i[(_=B+3832|0)>>2]=i[g+24>>2],i[_+4>>2]=c,r=i[g+20>>2],i[(c=B+3824|0)>>2]=i[g+16>>2],i[c+4>>2]=r,e=i[g+12>>2],i[(r=B+3816|0)>>2]=i[g+8>>2],i[r+4>>2]=e,e=i[g+4>>2],i[B+3808>>2]=i[g>>2],i[B+3812>>2]=e,D=i[g+52>>2],i[(e=B+3856|0)>>2]=i[g+48>>2],i[e+4>>2]=D,w=i[g+60>>2],i[(D=B+3864|0)>>2]=i[g+56>>2],i[D+4>>2]=w,y=i[4+(f=g- -64|0)>>2],i[(w=B+3872|0)>>2]=i[f>>2],i[w+4>>2]=y,y=i[g+76>>2],i[(f=B+3880|0)>>2]=i[g+72>>2],i[f+4>>2]=y,y=i[g+44>>2],i[B+3848>>2]=i[g+40>>2],i[B+3852>>2]=y,n=i[g+92>>2],i[(y=B+3896|0)>>2]=i[g+88>>2],i[y+4>>2]=n,k=i[g+100>>2],i[(n=B+3904|0)>>2]=i[g+96>>2],i[n+4>>2]=k,F=i[g+108>>2],i[(k=B+3912|0)>>2]=i[g+104>>2],i[k+4>>2]=F,S=i[g+116>>2],i[(F=B+3920|0)>>2]=i[g+112>>2],i[F+4>>2]=S,S=i[g+84>>2],i[B+3888>>2]=i[g+80>>2],i[B+3892>>2]=S,KA(Q=B+3528|0,S=B+3808|0),b(E=B+2408|0,Q,t=B+3648|0),b(B+2448|0,h=B+3568|0,p=B+3608|0),b(B+2488|0,p,t),b(B+2528|0,Q,h),$A(t=B+320|0,E),sA(Q=B+3368|0,g,t),b(E=B+2248|0,Q,t=B+3488|0),b(B+2288|0,h=B+3408|0,p=B+3448|0),b(B+2328|0,p,t),b(B+2368|0,Q,h),$A(B+480|0,E),E=i[4+(Q=B+2440|0)>>2],i[a>>2]=i[Q>>2],i[a+4>>2]=E,E=i[4+(Q=B+2432|0)>>2],i[_>>2]=i[Q>>2],i[_+4>>2]=E,E=i[4+(Q=B+2424|0)>>2],i[c>>2]=i[Q>>2],i[c+4>>2]=E,E=i[4+(Q=B+2416|0)>>2],i[r>>2]=i[Q>>2],i[r+4>>2]=E,E=i[4+(Q=B+2456|0)>>2],i[e>>2]=i[Q>>2],i[e+4>>2]=E,E=i[4+(Q=B+2464|0)>>2],i[D>>2]=i[Q>>2],i[D+4>>2]=E,E=i[4+(Q=B+2472|0)>>2],i[w>>2]=i[Q>>2],i[w+4>>2]=E,E=i[4+(Q=B+2480|0)>>2],i[f>>2]=i[Q>>2],i[f+4>>2]=E,Q=i[B+2412>>2],i[B+3808>>2]=i[B+2408>>2],i[B+3812>>2]=Q,Q=i[B+2452>>2],i[B+3848>>2]=i[B+2448>>2],i[B+3852>>2]=Q,E=i[4+(Q=B+2520|0)>>2],i[F>>2]=i[Q>>2],i[F+4>>2]=E,E=i[4+(Q=B+2512|0)>>2],i[k>>2]=i[Q>>2],i[k+4>>2]=E,E=i[4+(Q=B+2504|0)>>2],i[n>>2]=i[Q>>2],i[n+4>>2]=E,E=i[4+(Q=B+2496|0)>>2],i[y>>2]=i[Q>>2],i[y+4>>2]=E,Q=i[B+2492>>2],i[B+3888>>2]=i[B+2488>>2],i[B+3892>>2]=Q,KA(Q=B+3208|0,S),b(E=B+2088|0,Q,t=B+3328|0),b(B+2128|0,h=B+3248|0,p=B+3288|0),b(B+2168|0,p,t),b(B+2208|0,Q,h),$A(t=B+640|0,E),sA(Q=B+3048|0,g,t),b(E=B+1928|0,Q,t=B+3168|0),b(B+1968|0,h=B+3088|0,p=B+3128|0),b(B+2008|0,p,t),b(B+2048|0,Q,h),$A(B+800|0,E),E=i[4+(Q=B+2280|0)>>2],i[a>>2]=i[Q>>2],i[a+4>>2]=E,E=i[4+(Q=B+2272|0)>>2],i[_>>2]=i[Q>>2],i[_+4>>2]=E,E=i[4+(Q=B+2264|0)>>2],i[c>>2]=i[Q>>2],i[c+4>>2]=E,E=i[4+(Q=B+2256|0)>>2],i[r>>2]=i[Q>>2],i[r+4>>2]=E,E=i[4+(Q=B+2296|0)>>2],i[e>>2]=i[Q>>2],i[e+4>>2]=E,E=i[4+(Q=B+2304|0)>>2],i[D>>2]=i[Q>>2],i[D+4>>2]=E,E=i[4+(Q=B+2312|0)>>2],i[w>>2]=i[Q>>2],i[w+4>>2]=E,E=i[4+(Q=B+2320|0)>>2],i[f>>2]=i[Q>>2],i[f+4>>2]=E,Q=i[B+2252>>2],i[B+3808>>2]=i[B+2248>>2],i[B+3812>>2]=Q,Q=i[B+2292>>2],i[B+3848>>2]=i[B+2288>>2],i[B+3852>>2]=Q,E=i[4+(Q=B+2360|0)>>2],i[F>>2]=i[Q>>2],i[F+4>>2]=E,E=i[4+(Q=B+2352|0)>>2],i[k>>2]=i[Q>>2],i[k+4>>2]=E,E=i[4+(Q=B+2344|0)>>2],i[n>>2]=i[Q>>2],i[n+4>>2]=E,E=i[4+(Q=B+2336|0)>>2],i[y>>2]=i[Q>>2],i[y+4>>2]=E,Q=i[B+2332>>2],i[B+3888>>2]=i[B+2328>>2],i[B+3892>>2]=Q,KA(Q=B+2888|0,S),b(E=B+1768|0,Q,t=B+3008|0),b(B+1808|0,h=B+2928|0,p=B+2968|0),b(B+1848|0,p,t),b(B+1888|0,Q,h),$A(t=B+960|0,E),sA(Q=B+2728|0,g,t),b(g=B+1608|0,Q,E=B+2848|0),b(B+1648|0,t=B+2768|0,h=B+2808|0),b(B+1688|0,h,E),b(B+1728|0,Q,t),$A(B+1120|0,g),Q=i[4+(g=B+2120|0)>>2],i[a>>2]=i[g>>2],i[a+4>>2]=Q,a=i[4+(g=B+2112|0)>>2],i[_>>2]=i[g>>2],i[_+4>>2]=a,a=i[4+(g=B+2104|0)>>2],i[c>>2]=i[g>>2],i[c+4>>2]=a,a=i[4+(g=B+2096|0)>>2],i[r>>2]=i[g>>2],i[r+4>>2]=a,a=i[4+(g=B+2136|0)>>2],i[e>>2]=i[g>>2],i[e+4>>2]=a,a=i[4+(g=B+2144|0)>>2],i[D>>2]=i[g>>2],i[D+4>>2]=a,a=i[4+(g=B+2152|0)>>2],i[w>>2]=i[g>>2],i[w+4>>2]=a,a=i[4+(g=B+2160|0)>>2],i[f>>2]=i[g>>2],i[f+4>>2]=a,g=i[B+2092>>2],i[B+3808>>2]=i[B+2088>>2],i[B+3812>>2]=g,g=i[B+2132>>2],i[B+3848>>2]=i[B+2128>>2],i[B+3852>>2]=g,a=i[4+(g=B+2200|0)>>2],i[F>>2]=i[g>>2],i[F+4>>2]=a,a=i[4+(g=B+2192|0)>>2],i[k>>2]=i[g>>2],i[k+4>>2]=a,a=i[4+(g=B+2184|0)>>2],i[n>>2]=i[g>>2],i[n+4>>2]=a,a=i[4+(g=B+2176|0)>>2],i[y>>2]=i[g>>2],i[y+4>>2]=a,g=i[B+2172>>2],i[B+3888>>2]=i[B+2168>>2],i[B+3892>>2]=g,KA(g=B+2568|0,S),b(a=B+1448|0,g,_=B+2688|0),b(B+1488|0,c=B+2608|0,r=B+2648|0),b(B+1528|0,r,_),b(B+1568|0,g,c),$A(B+1280|0,a),a=0,g=0;c=(_=B+3968|0)+(g<<1)|0,r=o[I+g|0],C[c+1|0]=r>>>4,C[0|c]=15&r,_=_+((c=1|g)<<1)|0,c=o[I+c|0],C[_+1|0]=c>>>4,C[0|_]=15&c,32!=(0|(g=g+2|0)););for(I=0;g=8+(_=(g=I)+o[0|(I=(B+3968|0)+a|0)]|0)|0,C[0|I]=_-(240&g),g=8+(_=o[I+1|0]+(g<<24>>24>>4)|0)|0,C[I+1|0]=_-(240&g),g=8+(_=o[I+2|0]+(g<<24>>24>>4)|0)|0,C[I+2|0]=_-(240&g),I=g<<24>>24>>4,63!=(0|(a=a+3|0)););for(C[B+4031|0]=o[B+4031|0]+I,i[A+32>>2]=0,i[A+36>>2]=0,i[A+24>>2]=0,i[A+28>>2]=0,i[A+16>>2]=0,i[A+20>>2]=0,i[A+8>>2]=0,i[A+12>>2]=0,i[A>>2]=0,i[A+4>>2]=0,i[A+44>>2]=0,i[A+48>>2]=0,i[A+40>>2]=1,i[A+52>>2]=0,i[A+56>>2]=0,i[A+60>>2]=0,i[A+64>>2]=0,i[A+68>>2]=0,i[A+72>>2]=0,i[A+76>>2]=0,i[A+80>>2]=1,bg(A+84|0,0,76),w=A+120|0,f=A+80|0,y=A+40|0,r=B+3768|0,g=B+3888|0,_=B+3848|0,e=B+3728|0,a=B+3928|0,D=63;HA(B,n=B+160|0,C[(B+3968|0)+D|0]),sA(I=B+3808|0,A,B),b(c=B+3688|0,I,a),b(e,_,g),b(r,g,a),KA(I,c),b(c,I,a),b(e,_,g),b(r,g,a),KA(I,c),b(c,I,a),b(e,_,g),b(r,g,a),KA(I,c),b(c,I,a),b(e,_,g),b(r,g,a),KA(I,c),b(A,I,a),b(y,_,g),b(f,g,a),b(w,I,_),D=D-1|0;);HA(B,n,C[B+3968|0]),sA(I,A,B),b(A,I,a),b(y,_,g),b(f,g,a),b(w,I,_),s=B+4032|0}function x(A,I,g,C){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S,N,G,M,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0;s=B=s-320|0,i[B+280>>2]=0,i[B+284>>2]=0,i[B+272>>2]=0,i[B+276>>2]=0,i[B+264>>2]=0,i[B+268>>2]=0,i[B+256>>2]=0,i[B+260>>2]=0,Ng(U=B+256|0,I,g),m=o[C+16|0]|o[C+17|0]<<8|o[C+18|0]<<16|o[C+19|0]<<24,K=o[C+48|0]|o[C+49|0]<<8|o[C+50|0]<<16|o[C+51|0]<<24,a=o[C+20|0]|o[C+21|0]<<8|o[C+22|0]<<16|o[C+23|0]<<24,_=o[C+52|0]|o[C+53|0]<<8|o[C+54|0]<<16|o[C+55|0]<<24,c=o[C+24|0]|o[C+25|0]<<8|o[C+26|0]<<16|o[C+27|0]<<24,t=o[C+56|0]|o[C+57|0]<<8|o[C+58|0]<<16|o[C+59|0]<<24,r=o[C+28|0]|o[C+29|0]<<8|o[C+30|0]<<16|o[C+31|0]<<24,e=o[C+60|0]|o[C+61|0]<<8|o[C+62|0]<<16|o[C+63|0]<<24,I=o[C+36|0]|o[C+37|0]<<8|o[C+38|0]<<16|o[C+39|0]<<24,y=o[C+84|0]|o[C+85|0]<<8|o[C+86|0]<<16|o[C+87|0]<<24,h=o[C+116|0]|o[C+117|0]<<8|o[C+118|0]<<16|o[C+119|0]<<24,b=o[C+100|0]|o[C+101|0]<<8|o[C+102|0]<<16|o[C+103|0]<<24,H=o[C+44|0]|o[C+45|0]<<8|o[C+46|0]<<16|o[C+47|0]<<24,D=o[C+92|0]|o[C+93|0]<<8|o[C+94|0]<<16|o[C+95|0]<<24,f=o[C+124|0]|o[C+125|0]<<8|o[C+126|0]<<16|o[C+127|0]<<24,Y=o[C+108|0]|o[C+109|0]<<8|o[C+110|0]<<16|o[C+111|0]<<24,J=o[C+32|0]|o[C+33|0]<<8|o[C+34|0]<<16|o[C+35|0]<<24,p=o[C+80|0]|o[C+81|0]<<8|o[C+82|0]<<16|o[C+83|0]<<24,w=o[C+112|0]|o[C+113|0]<<8|o[C+114|0]<<16|o[C+115|0]<<24,d=o[C+96|0]|o[C+97|0]<<8|o[C+98|0]<<16|o[C+99|0]<<24,n=i[B+272>>2],k=i[B+256>>2],F=i[B+260>>2],S=i[B+264>>2],N=i[B+268>>2],G=i[B+276>>2],M=i[B+284>>2],Q=o[C+40|0]|o[C+41|0]<<8|o[C+42|0]<<16|o[C+43|0]<<24,E=o[C+104|0]|o[C+105|0]<<8|o[C+106|0]<<16|o[C+107|0]<<24,i[B+280>>2]=Q^E&(o[C+120|0]|o[C+121|0]<<8|o[C+122|0]<<16|o[C+123|0]<<24)^i[B+280>>2]^(o[C+88|0]|o[C+89|0]<<8|o[C+90|0]<<16|o[C+91|0]<<24),i[B+272>>2]=J^d&w^p^n,i[B+284>>2]=H^Y&f^D^M,i[B+276>>2]=I^b&h^y^G,i[B+268>>2]=Y^H&e^r^N,i[B+264>>2]=t&Q^c^S^E,i[B+260>>2]=b^I&_^a^F,i[B+256>>2]=d^K&J^m^k,bg(g+U|0,0,32-g|0),Ng(A,U,g),g=i[B+280>>2],U=i[B+272>>2],b=i[B+284>>2],H=i[B+276>>2],Y=i[B+256>>2],J=i[B+260>>2],d=i[B+264>>2],m=i[B+268>>2],A=i[C+124>>2],i[B+312>>2]=i[C+120>>2],i[B+316>>2]=A,A=i[C+116>>2],i[B+304>>2]=i[C+112>>2],i[B+308>>2]=A,A=i[C+108>>2],i[B+248>>2]=i[C+104>>2],i[B+252>>2]=A,A=i[C+100>>2],i[B+240>>2]=i[C+96>>2],i[B+244>>2]=A,A=i[C+124>>2],i[B+232>>2]=i[C+120>>2],i[B+236>>2]=A,A=i[C+116>>2],i[B+224>>2]=i[C+112>>2],i[B+228>>2]=A,AI(I=B+288|0,B+240|0,B+224|0),A=i[B+300>>2],i[C+120>>2]=i[B+296>>2],i[C+124>>2]=A,A=i[B+292>>2],i[C+112>>2]=i[B+288>>2],i[C+116>>2]=A,A=i[C+92>>2],i[B+216>>2]=i[C+88>>2],i[B+220>>2]=A,A=i[C+84>>2],i[B+208>>2]=i[C+80>>2],i[B+212>>2]=A,A=i[C+108>>2],i[B+200>>2]=i[C+104>>2],i[B+204>>2]=A,A=i[C+100>>2],i[B+192>>2]=i[C+96>>2],i[B+196>>2]=A,AI(I,B+208|0,B+192|0),A=i[B+300>>2],i[C+104>>2]=i[B+296>>2],i[C+108>>2]=A,A=i[B+292>>2],i[C+96>>2]=i[B+288>>2],i[C+100>>2]=A,A=i[C+76>>2],i[B+184>>2]=i[C+72>>2],i[B+188>>2]=A,K=i[4+(A=C- -64|0)>>2],i[B+176>>2]=i[A>>2],i[B+180>>2]=K,K=i[C+92>>2],i[B+168>>2]=i[C+88>>2],i[B+172>>2]=K,K=i[C+84>>2],i[B+160>>2]=i[C+80>>2],i[B+164>>2]=K,AI(I,B+176|0,B+160|0),K=i[B+300>>2],i[C+88>>2]=i[B+296>>2],i[C+92>>2]=K,K=i[B+292>>2],i[C+80>>2]=i[B+288>>2],i[C+84>>2]=K,K=i[C+60>>2],i[B+152>>2]=i[C+56>>2],i[B+156>>2]=K,K=i[C+52>>2],i[B+144>>2]=i[C+48>>2],i[B+148>>2]=K,K=i[C+76>>2],i[B+136>>2]=i[C+72>>2],i[B+140>>2]=K,K=i[A+4>>2],i[B+128>>2]=i[A>>2],i[B+132>>2]=K,AI(I,B+144|0,B+128|0),K=i[B+300>>2],i[C+72>>2]=i[B+296>>2],i[C+76>>2]=K,K=i[B+292>>2],i[A>>2]=i[B+288>>2],i[A+4>>2]=K,K=i[C+44>>2],i[B+120>>2]=i[C+40>>2],i[B+124>>2]=K,K=i[C+36>>2],i[B+112>>2]=i[C+32>>2],i[B+116>>2]=K,K=i[C+60>>2],i[B+104>>2]=i[C+56>>2],i[B+108>>2]=K,K=i[C+52>>2],i[B+96>>2]=i[C+48>>2],i[B+100>>2]=K,AI(I,B+112|0,B+96|0),K=i[B+300>>2],i[C+56>>2]=i[B+296>>2],i[C+60>>2]=K,K=i[B+292>>2],i[C+48>>2]=i[B+288>>2],i[C+52>>2]=K,K=i[C+28>>2],i[B+88>>2]=i[C+24>>2],i[B+92>>2]=K,K=i[C+20>>2],i[B+80>>2]=i[C+16>>2],i[B+84>>2]=K,K=i[C+44>>2],i[B+72>>2]=i[C+40>>2],i[B+76>>2]=K,K=i[C+36>>2],i[B+64>>2]=i[C+32>>2],i[B+68>>2]=K,AI(I,B+80|0,B- -64|0),K=i[B+300>>2],i[C+40>>2]=i[B+296>>2],i[C+44>>2]=K,K=i[B+292>>2],i[C+32>>2]=i[B+288>>2],i[C+36>>2]=K,K=i[C+12>>2],i[B+56>>2]=i[C+8>>2],i[B+60>>2]=K,K=i[C+4>>2],i[B+48>>2]=i[C>>2],i[B+52>>2]=K,K=i[C+28>>2],i[B+40>>2]=i[C+24>>2],i[B+44>>2]=K,K=i[C+20>>2],i[B+32>>2]=i[C+16>>2],i[B+36>>2]=K,AI(I,B+48|0,B+32|0),K=i[B+300>>2],i[C+24>>2]=i[B+296>>2],i[C+28>>2]=K,K=i[B+292>>2],i[C+16>>2]=i[B+288>>2],i[C+20>>2]=K,K=i[B+316>>2],i[B+24>>2]=i[B+312>>2],i[B+28>>2]=K,K=i[B+308>>2],i[B+16>>2]=i[B+304>>2],i[B+20>>2]=K,K=i[C+12>>2],i[B+8>>2]=i[C+8>>2],i[B+12>>2]=K,K=i[C+4>>2],i[B>>2]=i[C>>2],i[B+4>>2]=K,AI(I,B+16|0,B),I=i[B+300>>2],i[C+8>>2]=i[B+296>>2],i[C+12>>2]=I,I=i[B+292>>2],i[C>>2]=i[B+288>>2],i[C+4>>2]=I,i[C+12>>2]=m^(o[C+12|0]|o[C+13|0]<<8|o[C+14|0]<<16|o[C+15|0]<<24),i[C+8>>2]=d^(o[C+8|0]|o[C+9|0]<<8|o[C+10|0]<<16|o[C+11|0]<<24),i[C+4>>2]=J^(o[C+4|0]|o[C+5|0]<<8|o[C+6|0]<<16|o[C+7|0]<<24),i[C>>2]=Y^(o[0|C]|o[C+1|0]<<8|o[C+2|0]<<16|o[C+3|0]<<24),i[A>>2]=U^(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24),i[C+68>>2]=H^(o[C+68|0]|o[C+69|0]<<8|o[C+70|0]<<16|o[C+71|0]<<24),i[C+72>>2]=g^(o[C+72|0]|o[C+73|0]<<8|o[C+74|0]<<16|o[C+75|0]<<24),i[C+76>>2]=b^(o[C+76|0]|o[C+77|0]<<8|o[C+78|0]<<16|o[C+79|0]<<24),s=B+320|0}function v(A,I){var g,C,B,Q,o,E,_,c,t,r,e,y,s,h,D,p,w,n,k,F,S,N,G,M,K,U,b,H,Y,J,d,m,l,u,x,v,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0,BA=0,QA=0,iA=0,oA=0;R=Ig(C=(D=i[I+12>>2])<<1,E=C>>31,$=(q=i[I+4>>2])<<1,B=$>>31),P=f,F=V=i[I+8>>2],L=(Z=Ig(V,p=V>>31,V,p))+R|0,R=f+P|0,R=L>>>0>>0?R+1|0:R,P=Ig(j=i[I+16>>2],_=j>>31,Z=(z=i[I>>2])<<1,Q=Z>>31),R=f+R|0,R=(L=P+L|0)>>>0

>>0?R+1|0:R,e=i[I+28>>2],P=Ig(BA=a(e,38),w=BA>>31,e,S=e>>31),R=f+R|0,R=(L=P+L|0)>>>0

>>0?R+1|0:R,P=L,y=i[I+32>>2],X=Ig(O=a(y,19),c=O>>31,L=(g=i[I+24>>2])<<1,L>>31),L=f+R|0,L=(P=P+X|0)>>>0>>0?L+1|0:L,H=i[I+36>>2],R=Ig(X=a(H,38),o=X>>31,AA=(t=i[I+20>>2])<<1,s=AA>>31),I=f+L|0,J=R=(R>>>0>(P=R+P|0)>>>0?I+1:I)<<1|P>>>31,d=L=33554432+(N=P<<1)|0,m=R=L>>>0<33554432?R+1|0:R,I=R>>26,T=(67108863&R)<<6|L>>>26,R=Ig($,B,j,_),P=f,L=(IA=Ig(V<<=1,h=V>>31,D,G=D>>31))+R|0,R=f+P|0,R=L>>>0>>0?R+1|0:R,P=(IA=Ig(t,n=t>>31,Z,Q))+L|0,L=f+R|0,L=P>>>0>>0?L+1|0:L,iA=Ig(O,c,IA=e<<1,M=IA>>31),R=f+L|0,R=(P=iA+P|0)>>>0>>0?R+1|0:R,L=Ig(X,o,g,r=g>>31),R=f+R|0,I=I+(L=(L>>>0>(P=L+P|0)>>>0?R+1:R)<<1|P>>>31)|0,iA=P=(R=P<<1)+T|0,R=I=R>>>0>P>>>0?I+1|0:I,l=P=P+16777216|0,T=(33554431&(R=P>>>0<16777216?R+1|0:R))<<7|P>>>25,P=R>>25,I=Ig(C,E,D,G),R=f,L=Ig(j,_,V,h),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=Ig($,B,AA,s),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(gA=Ig(Z,Q,g,r))+I|0,I=f+R|0,I=L>>>0>>0?I+1|0:I,gA=Ig(O,c,y,k=y>>31),R=f+I|0,R=(L=gA+L|0)>>>0>>0?R+1|0:R,I=(gA=Ig(X,o,IA,M))+L|0,L=f+R|0,I=((R=I)>>>0>>0?L+1:L)<<1|R>>>31,L=T,T=R<<1,R=I+P|0,R=(L=L+T|0)>>>0>>0?R+1|0:R,gA=I=L+33554432|0,P=R=I>>>0<33554432?R+1|0:R,i[A+24>>2]=L-(-67108864&I),L=Ig(I=a(t,38),I>>31,t,n),T=f,I=(R=Ig(I=z,R=I>>31,I,R))+L|0,L=f+T|0,L=I>>>0>>0?L+1|0:L,CA=Ig(z=a(g,19),K=z>>31,T=j<<1,U=T>>31),R=f+L|0,R=(I=CA+I|0)>>>0>>0?R+1|0:R,L=Ig(C,E,BA,w),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(CA=Ig(O,c,V,h))+I|0,I=f+R|0,I=L>>>0>>0?I+1|0:I,CA=Ig($,B,X,o),R=f+I|0,CA=R=((L=CA+L|0)>>>0>>0?R+1:R)<<1|L>>>31,u=I=33554432+(b=L<<1)|0,x=L=I>>>0<33554432?R+1|0:R,QA=(67108863&L)<<6|I>>>26,oA=L>>26,I=Ig(z,K,AA,s),R=f,L=Ig(Z,Q,q,Y=q>>31),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(W=Ig(j,_,BA,w))+I|0,I=f+R|0,I=L>>>0>>0?I+1|0:I,W=Ig(O,c,C,E),R=f+I|0,R=(L=W+L|0)>>>0>>0?R+1|0:R,W=(I=Ig(X,o,F,p))+L|0,L=f+R|0,R=(I=(I>>>0>W>>>0?L+1:L)<<1|W>>>31)+oA|0,R=(L=(W<<=1)+QA|0)>>>0>>0?R+1|0:R,oA=L,W=L=L+16777216|0,v=(33554431&(R=L>>>0<16777216?R+1|0:R))<<7|L>>>25,QA=R>>25,I=Ig(Z,Q,F,p),R=f,L=Ig($,B,q,Y),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,q=Ig(z,K,g,r),L=f+R|0,L=(I=q+I|0)>>>0>>0?L+1|0:L,q=Ig(AA,s,BA,w),R=f+L|0,R=(I=q+I|0)>>>0>>0?R+1|0:R,L=Ig(O,c,T,U),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(q=Ig(X,o,C,E))+I|0,I=f+R|0,R=(R=(L>>>0>>0?I+1:I)<<1|L>>>31)+QA|0,z=I=(L<<=1)+v|0,R=I>>>0>>0?R+1|0:R,QA=I=I+33554432|0,q=L=I>>>0<33554432?R+1|0:R,i[A+8>>2]=z-(-67108864&I),I=Ig(V,h,t,n),L=f,R=(z=Ig(j,_,C,E))+I|0,I=f+L|0,I=R>>>0>>0?I+1|0:I,L=(z=Ig($,B,g,r))+R|0,R=f+I|0,R=L>>>0>>0?R+1|0:R,I=(z=Ig(Z,Q,e,S))+L|0,L=f+R|0,L=I>>>0>>0?L+1|0:L,z=Ig(X,o,y,k),R=f+L|0,R=(R=((I=z+I|0)>>>0>>0?R+1:R)<<1|I>>>31)+(L=P>>26)|0,I=(L=P=(z=I<<1)+(I=(67108863&P)<<6|gA>>>26)|0)>>>0>>0?R+1|0:R,z=R=L+16777216|0,P=I=R>>>0<16777216?I+1|0:I,i[A+28>>2]=L-(-33554432&R),I=Ig(Z,Q,D,G),R=f,L=Ig($,B,F,p),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=Ig(g,r,BA,w),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(O=Ig(O,c,AA,s))+I|0,I=f+R|0,I=L>>>0>>0?I+1|0:I,R=(O=Ig(X,o,j,_))+L|0,L=f+I|0,I=R,R=(R>>>0>>0?L+1:L)<<1|R>>>31,L=I<<1,R=(I=q>>26)+R|0,R=(L=L+(q=(67108863&q)<<6|QA>>>26)|0)>>>0>>0?R+1|0:R,O=I=L+16777216|0,q=R=I>>>0<16777216?R+1|0:R,i[A+12>>2]=L-(-33554432&I),I=Ig(g,r,V,h),R=f,L=Ig(j,_,j,_),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=Ig(C,E,AA,s),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=Ig($,B,IA,M),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(j=Ig(Z,Q,y,k))+I|0,I=f+R|0,I=L>>>0>>0?I+1|0:I,R=(j=Ig(R=X,o,X=H,AA=X>>31))+L|0,L=f+I|0,I=R,R=(R>>>0>>0?L+1:L)<<1|R>>>31,L=I<<1,R=(I=P>>25)+R|0,R=(L=L+(P=(33554431&P)<<7|z>>>25)|0)>>>0

>>0?R+1|0:R,j=I=L+33554432|0,P=R=I>>>0<33554432?R+1|0:R,i[A+32>>2]=L-(-67108864&I),R=q>>25,L=(q=(33554431&q)<<7|O>>>25)+(N-(I=-67108864&d)|0)|0,I=R+(J-((I>>>0>N>>>0)+m|0)|0)|0,I=L>>>0>>0?I+1|0:I,q=L,R=I,I=((67108863&(R=(L=L+33554432|0)>>>0<33554432?R+1|0:R))<<6|L>>>26)+(BA=iA-(-33554432&l)|0)|0,i[A+20>>2]=I,i[A+16>>2]=q-(-67108864&L),I=Ig(C,E,g,r),L=f,R=(q=Ig(t,n,T,U))+I|0,I=f+L|0,I=R>>>0>>0?I+1|0:I,L=(q=Ig(V,h,e,S))+R|0,R=f+I|0,R=L>>>0>>0?R+1|0:R,I=(q=Ig($,B,y,k))+L|0,L=f+R|0,L=I>>>0>>0?L+1|0:L,q=Ig(Z,Q,X,AA),R=f+L|0,R=((I=q+I|0)>>>0>>0?R+1:R)<<1|I>>>31,q=I<<1,R=R+(L=P>>26)|0,I=(I=(67108863&P)<<6|j>>>26)>>>0>(P=q+I|0)>>>0?R+1|0:R,I=(R=P+16777216|0)>>>0<16777216?I+1|0:I,i[A+36>>2]=P-(-33554432&R),q=oA-(-33554432&W)|0,P=b-(L=-67108864&u)|0,$=CA-((L>>>0>b>>>0)+x|0)|0,I=Ig((33554431&I)<<7|R>>>25,I>>25,19,0),L=f+$|0,P=R=I+P|0,I=I>>>0>R>>>0?L+1|0:L,I=((67108863&(I=(R=R+33554432|0)>>>0<33554432?I+1|0:I))<<6|R>>>26)+q|0,i[A+4>>2]=I,i[A>>2]=P-(-67108864&R)}function R(A,I){var g,C,B,Q,o,E,_,c,t,r,e,y,s,h,D,p,w,n,k,F,S,N,G,M,K,U,b,H,Y,J,d,m,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0,BA=0;l=Ig(C=(p=i[I+12>>2])<<1,E=C>>31,p,S=p>>31),x=f,u=(z=Ig(R=i[I+16>>2],_=R>>31,c=(v=i[I+8>>2])<<1,y=c>>31))+l|0,l=f+x|0,l=u>>>0>>0?l+1|0:l,x=(j=Ig(W=(t=i[I+20>>2])<<1,s=W>>31,z=(L=i[I+4>>2])<<1,B=z>>31))+u|0,u=f+l|0,u=x>>>0>>0?u+1|0:u,P=Ig(g=i[I+24>>2],r=g>>31,j=(T=i[I>>2])<<1,Q=j>>31),l=f+u|0,l=(x=P+x|0)>>>0

>>0?l+1|0:l,u=x,h=i[I+32>>2],x=Ig(X=a(h,19),e=X>>31,h,n=h>>31),l=f+l|0,l=(u=u+x|0)>>>0>>0?l+1|0:l,U=i[I+36>>2],x=Ig(P=a(U,38),o=P>>31,k=(D=i[I+28>>2])<<1,N=k>>31),I=f+l|0,Z=u=x+u|0,x=u>>>0>>0?I+1|0:I,I=Ig(z,B,R,_),l=f,u=Ig(c,y,p,S),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,q=Ig(t,F=t>>31,j,Q),u=f+l|0,u=(I=q+I|0)>>>0>>0?u+1|0:u,q=Ig(X,e,k,N),l=f+u|0,l=(I=q+I|0)>>>0>>0?l+1|0:l,u=Ig(P,o,g,r),l=f+l|0,CA=I=u+I|0,O=I>>>0>>0?l+1|0:l,l=Ig(z,B,C,E),u=f,G=I=v,v=Ig(I,V=I>>31,I,V),I=f+u|0,I=(l=v+l|0)>>>0>>0?I+1|0:I,u=(v=Ig(j,Q,R,_))+l|0,l=f+I|0,l=u>>>0>>0?l+1|0:l,I=(v=Ig(q=a(D,38),w=q>>31,D,M=D>>31))+u|0,u=f+l|0,u=I>>>0>>0?u+1|0:u,I=(l=I)+(v=Ig(X,e,I=g<<1,I>>31))|0,l=f+u|0,l=I>>>0>>0?l+1|0:l,u=I,I=Ig(P,o,W,s),l=f+l|0,b=u=u+I|0,H=l=I>>>0>u>>>0?l+1|0:l,I=l,Y=u=u+33554432|0,J=I=u>>>0<33554432?I+1|0:I,l=(l=I>>26)+O|0,CA=I=(u=(67108863&I)<<6|u>>>26)+CA|0,l=I>>>0>>0?l+1|0:l,d=I=I+16777216|0,l=(l=(u=I>>>0<16777216?l+1|0:l)>>25)+x|0,I=(I=(33554431&u)<<7|I>>>25)>>>0>(u=I+Z|0)>>>0?l+1|0:l,Z=l=u+33554432|0,v=I=l>>>0<33554432?I+1|0:I,i[A+24>>2]=u-(-67108864&l),I=Ig(j,Q,G,V),l=f,x=Ig(z,B,L,$=L>>31),u=f+l|0,u=(I=x+I|0)>>>0>>0?u+1|0:u,O=Ig(x=a(g,19),gA=x>>31,g,r),l=f+u|0,l=(I=O+I|0)>>>0>>0?l+1|0:l,u=(O=Ig(W,s,q,w))+I|0,I=f+l|0,I=u>>>0>>0?I+1|0:I,AA=Ig(X,e,O=R<<1,K=O>>31),l=f+I|0,l=(u=AA+u|0)>>>0>>0?l+1|0:l,I=u,u=Ig(P,o,C,E),l=f+l|0,IA=I=I+u|0,AA=I>>>0>>0?l+1|0:l,I=Ig(W,s,x,gA),l=f,L=Ig(j,Q,L,$),u=f+l|0,u=(I=L+I|0)>>>0>>0?u+1|0:u,L=Ig(R,_,q,w),l=f+u|0,l=(I=L+I|0)>>>0>>0?l+1|0:l,u=(L=Ig(X,e,C,E))+I|0,I=f+l|0,I=u>>>0>>0?I+1|0:I,L=Ig(P,o,G,V),l=f+I|0,BA=u=L+u|0,$=u>>>0>>0?l+1|0:l,u=Ig(I=a(t,38),I>>31,t,F),L=f,I=T,T=u,u=Ig(I,l=I>>31,I,l),l=f+L|0,l=(I=T+u|0)>>>0>>0?l+1|0:l,x=Ig(x,gA,O,K),u=f+l|0,u=(I=x+I|0)>>>0>>0?u+1|0:u,x=Ig(C,E,q,w),l=f+u|0,l=(I=x+I|0)>>>0>>0?l+1|0:l,u=(x=Ig(X,e,c,y))+I|0,I=f+l|0,I=u>>>0>>0?I+1|0:I,x=Ig(z,B,P,o),l=f+I|0,L=u=x+u|0,T=l=u>>>0>>0?l+1|0:l,gA=u=u+33554432|0,m=l=u>>>0<33554432?l+1|0:l,I=l>>26,l=(67108863&l)<<6|u>>>26,u=I+$|0,$=x=l+BA|0,l=l>>>0>x>>>0?u+1|0:u,BA=u=x+16777216|0,x=(33554431&(l=u>>>0<16777216?l+1|0:l))<<7|u>>>25,l=(l>>25)+AA|0,l=(u=x+IA|0)>>>0>>0?l+1|0:l,AA=I=u+33554432|0,x=l=I>>>0<33554432?l+1|0:l,i[A+8>>2]=u-(-67108864&I),I=Ig(c,y,t,F),l=f,u=Ig(R,_,C,E),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,u=Ig(z,B,g,r),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,u=Ig(j,Q,D,M),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,IA=(u=Ig(P,o,h,n))+I|0,I=f+l|0,u=(l=v>>26)+(u=u>>>0>IA>>>0?I+1|0:I)|0,Z=I=(v=(67108863&v)<<6|Z>>>26)+IA|0,l=I>>>0>>0?u+1|0:u,IA=I=I+16777216|0,v=l=I>>>0<16777216?l+1|0:l,i[A+28>>2]=Z-(-33554432&I),I=Ig(j,Q,p,S),u=f,l=(V=Ig(z,B,G,V))+I|0,I=f+u|0,I=l>>>0>>0?I+1|0:I,l=(q=Ig(g,r,q,w))+l|0,u=f+I|0,I=(X=Ig(X,e,W,s))+l|0,l=f+(l>>>0>>0?u+1|0:u)|0,l=I>>>0>>0?l+1|0:l,u=Ig(P,o,R,_),l=f+l|0,l=(l=(I=u+I|0)>>>0>>0?l+1|0:l)+(u=x>>26)|0,I=(u=x=(Z=I)+(I=(67108863&x)<<6|AA>>>26)|0)>>>0>>0?l+1|0:l,X=l=u+16777216|0,x=I=l>>>0<16777216?I+1|0:I,i[A+12>>2]=u-(-33554432&l),I=Ig(g,r,c,y),l=f,u=Ig(R,_,R,_),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,u=Ig(C,E,W,s),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,u=(R=Ig(z,B,k,N))+I|0,I=f+l|0,I=u>>>0>>0?I+1|0:I,l=(R=Ig(j,Q,h,n))+u|0,u=f+I|0,u=l>>>0>>0?u+1|0:u,I=(R=Ig(I=P,o,P=U,W=P>>31))+l|0,l=f+u|0,l=I>>>0>>0?l+1|0:l,u=I,l=(I=v>>25)+l|0,l=(u=u+(v=(33554431&v)<<7|IA>>>25)|0)>>>0>>0?l+1|0:l,R=I=u+33554432|0,v=l=I>>>0<33554432?l+1|0:l,i[A+32>>2]=u-(-67108864&I),l=x>>25,u=(x=(33554431&x)<<7|X>>>25)+(b-(I=-67108864&Y)|0)|0,I=l+(H-((I>>>0>b>>>0)+J|0)|0)|0,I=u>>>0>>0?I+1|0:I,x=u,I=((67108863&(l=(u=u+33554432|0)>>>0<33554432?I+1|0:I))<<6|u>>>26)+(q=CA-(-33554432&d)|0)|0,i[A+20>>2]=I,i[A+16>>2]=x-(-67108864&u),I=Ig(C,E,g,r),u=f,l=(x=Ig(t,F,O,K))+I|0,I=f+u|0,I=l>>>0>>0?I+1|0:I,u=(x=Ig(c,y,D,M))+l|0,l=f+I|0,l=u>>>0>>0?l+1|0:l,I=(x=Ig(z,B,h,n))+u|0,u=f+l|0,u=I>>>0>>0?u+1|0:u,x=(l=I)+(I=Ig(j,Q,P,W))|0,l=f+u|0,l=(I=I>>>0>x>>>0?l+1|0:l)+(l=v>>26)|0,I=(u=(v=(67108863&v)<<6|R>>>26)+x|0)>>>0>>0?l+1|0:l,I=(l=u+16777216|0)>>>0<16777216?I+1|0:I,i[A+36>>2]=u-(-33554432&l),v=$-(-33554432&BA)|0,x=L-(u=-67108864&gA)|0,z=T-((u>>>0>L>>>0)+m|0)|0,I=Ig((33554431&I)<<7|l>>>25,I>>25,19,0),l=f+z|0,I=I>>>0>(u=I+x|0)>>>0?l+1|0:l,I=((67108863&(I=(l=u+33554432|0)>>>0<33554432?I+1|0:I))<<6|l>>>26)+v|0,i[A+4>>2]=I,i[A>>2]=u-(-67108864&l)}function L(A,I){var g,C,B,Q,E,a,_,c,t,r,e=0,y=0,h=0;s=g=s-416|0,C=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,B=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,Q=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,E=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,h=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,a=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,_=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,c=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,A=i[I+92>>2],i[g+408>>2]=i[I+88>>2],i[g+412>>2]=A,A=i[I+84>>2],i[g+400>>2]=i[I+80>>2],i[g+404>>2]=A,A=i[I+76>>2],i[g+376>>2]=i[I+72>>2],i[g+380>>2]=A,e=i[4+(A=y=I- -64|0)>>2],i[g+368>>2]=i[A>>2],i[g+372>>2]=e,A=i[I+92>>2],i[g+360>>2]=i[I+88>>2],i[g+364>>2]=A,A=i[I+84>>2],i[g+352>>2]=i[I+80>>2],i[g+356>>2]=A,AI(A=g+384|0,g+368|0,g+352|0),e=i[g+396>>2],i[I+88>>2]=i[g+392>>2],i[I+92>>2]=e,e=i[g+388>>2],i[I+80>>2]=i[g+384>>2],i[I+84>>2]=e,e=i[I+60>>2],i[g+344>>2]=i[I+56>>2],i[g+348>>2]=e,e=i[I+52>>2],i[g+336>>2]=i[I+48>>2],i[g+340>>2]=e,e=i[I+76>>2],i[g+328>>2]=i[I+72>>2],i[g+332>>2]=e,e=i[y+4>>2],i[g+320>>2]=i[y>>2],i[g+324>>2]=e,AI(A,g+336|0,g+320|0),e=i[g+396>>2],i[I+72>>2]=i[g+392>>2],i[I+76>>2]=e,e=i[g+388>>2],i[y>>2]=i[g+384>>2],i[y+4>>2]=e,e=i[I+44>>2],i[g+312>>2]=i[I+40>>2],i[g+316>>2]=e,e=i[I+36>>2],i[g+304>>2]=i[I+32>>2],i[g+308>>2]=e,e=i[I+60>>2],i[g+296>>2]=i[I+56>>2],i[g+300>>2]=e,e=i[I+52>>2],i[g+288>>2]=i[I+48>>2],i[g+292>>2]=e,AI(A,g+304|0,g+288|0),e=i[g+396>>2],i[I+56>>2]=i[g+392>>2],i[I+60>>2]=e,e=i[g+388>>2],i[I+48>>2]=i[g+384>>2],i[I+52>>2]=e,e=i[I+28>>2],i[g+280>>2]=i[I+24>>2],i[g+284>>2]=e,e=i[I+20>>2],i[g+272>>2]=i[I+16>>2],i[g+276>>2]=e,e=i[I+44>>2],i[g+264>>2]=i[I+40>>2],i[g+268>>2]=e,e=i[I+36>>2],i[g+256>>2]=i[I+32>>2],i[g+260>>2]=e,AI(A,g+272|0,g+256|0),e=i[g+396>>2],i[I+40>>2]=i[g+392>>2],i[I+44>>2]=e,e=i[g+388>>2],i[I+32>>2]=i[g+384>>2],i[I+36>>2]=e,e=i[I+12>>2],i[g+248>>2]=i[I+8>>2],i[g+252>>2]=e,e=i[I+4>>2],i[g+240>>2]=i[I>>2],i[g+244>>2]=e,e=i[I+28>>2],i[g+232>>2]=i[I+24>>2],i[g+236>>2]=e,e=i[I+20>>2],i[g+224>>2]=i[I+16>>2],i[g+228>>2]=e,AI(A,g+240|0,g+224|0),e=i[g+396>>2],i[I+24>>2]=i[g+392>>2],i[I+28>>2]=e,e=i[g+388>>2],i[I+16>>2]=i[g+384>>2],i[I+20>>2]=e,e=i[g+412>>2],i[g+216>>2]=i[g+408>>2],i[g+220>>2]=e,e=i[g+404>>2],i[g+208>>2]=i[g+400>>2],i[g+212>>2]=e,e=i[I+12>>2],i[g+200>>2]=i[I+8>>2],i[g+204>>2]=e,e=i[I+4>>2],i[g+192>>2]=i[I>>2],i[g+196>>2]=e,AI(A,g+208|0,g+192|0),e=i[g+384>>2],t=i[g+388>>2],r=i[g+392>>2],i[I+12>>2]=i[g+396>>2]^_,i[I+8>>2]=a^r,i[I+4>>2]=h^t,i[I>>2]=e^c,h=i[I+92>>2],i[g+408>>2]=i[I+88>>2],i[g+412>>2]=h,h=i[I+84>>2],i[g+400>>2]=i[I+80>>2],i[g+404>>2]=h,h=i[I+76>>2],i[g+184>>2]=i[I+72>>2],i[g+188>>2]=h,h=i[y+4>>2],i[g+176>>2]=i[y>>2],i[g+180>>2]=h,h=i[I+92>>2],i[g+168>>2]=i[I+88>>2],i[g+172>>2]=h,h=i[I+84>>2],i[g+160>>2]=i[I+80>>2],i[g+164>>2]=h,AI(A,g+176|0,g+160|0),h=i[g+396>>2],i[I+88>>2]=i[g+392>>2],i[I+92>>2]=h,h=i[g+388>>2],i[I+80>>2]=i[g+384>>2],i[I+84>>2]=h,h=i[I+60>>2],i[g+152>>2]=i[I+56>>2],i[g+156>>2]=h,h=i[I+52>>2],i[g+144>>2]=i[I+48>>2],i[g+148>>2]=h,h=i[I+76>>2],i[g+136>>2]=i[I+72>>2],i[g+140>>2]=h,h=i[y+4>>2],i[g+128>>2]=i[y>>2],i[g+132>>2]=h,AI(A,g+144|0,g+128|0),h=i[g+396>>2],i[I+72>>2]=i[g+392>>2],i[I+76>>2]=h,h=i[g+388>>2],i[y>>2]=i[g+384>>2],i[y+4>>2]=h,y=i[I+44>>2],i[g+120>>2]=i[I+40>>2],i[g+124>>2]=y,y=i[I+36>>2],i[g+112>>2]=i[I+32>>2],i[g+116>>2]=y,y=i[I+60>>2],i[g+104>>2]=i[I+56>>2],i[g+108>>2]=y,y=i[I+52>>2],i[g+96>>2]=i[I+48>>2],i[g+100>>2]=y,AI(A,g+112|0,g+96|0),y=i[g+396>>2],i[I+56>>2]=i[g+392>>2],i[I+60>>2]=y,y=i[g+388>>2],i[I+48>>2]=i[g+384>>2],i[I+52>>2]=y,y=i[I+28>>2],i[g+88>>2]=i[I+24>>2],i[g+92>>2]=y,y=i[I+20>>2],i[g+80>>2]=i[I+16>>2],i[g+84>>2]=y,y=i[I+44>>2],i[g+72>>2]=i[I+40>>2],i[g+76>>2]=y,y=i[I+36>>2],i[g+64>>2]=i[I+32>>2],i[g+68>>2]=y,AI(A,g+80|0,g- -64|0),y=i[g+396>>2],i[I+40>>2]=i[g+392>>2],i[I+44>>2]=y,y=i[g+388>>2],i[I+32>>2]=i[g+384>>2],i[I+36>>2]=y,y=i[I+12>>2],i[g+56>>2]=i[I+8>>2],i[g+60>>2]=y,y=i[I+4>>2],i[g+48>>2]=i[I>>2],i[g+52>>2]=y,y=i[I+28>>2],i[g+40>>2]=i[I+24>>2],i[g+44>>2]=y,y=i[I+20>>2],i[g+32>>2]=i[I+16>>2],i[g+36>>2]=y,AI(A,g+48|0,g+32|0),y=i[g+396>>2],i[I+24>>2]=i[g+392>>2],i[I+28>>2]=y,y=i[g+388>>2],i[I+16>>2]=i[g+384>>2],i[I+20>>2]=y,y=i[g+412>>2],i[g+24>>2]=i[g+408>>2],i[g+28>>2]=y,y=i[g+404>>2],i[g+16>>2]=i[g+400>>2],i[g+20>>2]=y,y=i[I+12>>2],i[g+8>>2]=i[I+8>>2],i[g+12>>2]=y,y=i[I+4>>2],i[g>>2]=i[I>>2],i[g+4>>2]=y,AI(A,g+16|0,g),A=i[g+384>>2],y=i[g+388>>2],h=i[g+392>>2],i[I+12>>2]=i[g+396>>2]^E,i[I+8>>2]=h^Q,i[I+4>>2]=y^B,i[I>>2]=A^C,s=g+416|0}function P(A,I,g){var C,B,Q,E,a,_,c,t,r,e,y,h,D,f,p=0,w=0,n=0;for(s=C=s-288|0,y=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,h=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,D=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,c=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,t=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,r=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,f=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=g+112|0,A=33620224^(e=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24),i[I>>2]=A,i[(a=g+96|0)>>2]=1427652059^e,i[(_=g+80|0)>>2]=A,w=e^f,i[(A=g- -64|0)>>2]=w,i[g+56>>2]=1110511904,i[g+60>>2]=-584534669,i[(B=g+48|0)>>2]=1427652059,i[B+4>>2]=-248528275,i[g+40>>2]=1496785429,i[g+44>>2]=1652156816,i[(Q=g+32|0)>>2]=33620224,i[Q+4>>2]=218629379,i[g+24>>2]=1110511904,i[g+28>>2]=-584534669,i[(E=g+16|0)>>2]=1427652059,i[E+4>>2]=-248528275,i[g>>2]=w,w=1652156816^r,i[g+124>>2]=w,n=1496785429^t,i[g+120>>2]=n,p=218629379^c,i[g+116>>2]=p,i[g+108>>2]=-584534669^r,i[g+104>>2]=1110511904^t,i[g+100>>2]=-248528275^c,i[g+92>>2]=w,i[g+88>>2]=n,i[g+84>>2]=p,w=r^D,i[g+76>>2]=w,n=t^h,i[g+72>>2]=n,p=c^y,i[g+68>>2]=p,i[g+12>>2]=w,i[g+8>>2]=n,i[g+4>>2]=p,n=0;w=i[I+12>>2],i[C+280>>2]=i[I+8>>2],i[C+284>>2]=w,w=i[I+4>>2],i[C+272>>2]=i[I>>2],i[C+276>>2]=w,w=i[a+12>>2],i[C+248>>2]=i[a+8>>2],i[C+252>>2]=w,w=i[a+4>>2],i[C+240>>2]=i[a>>2],i[C+244>>2]=w,w=i[I+12>>2],i[C+232>>2]=i[I+8>>2],i[C+236>>2]=w,w=i[I+4>>2],i[C+224>>2]=i[I>>2],i[C+228>>2]=w,AI(w=C+256|0,C+240|0,C+224|0),p=i[C+268>>2],i[I+8>>2]=i[C+264>>2],i[I+12>>2]=p,p=i[C+260>>2],i[I>>2]=i[C+256>>2],i[I+4>>2]=p,p=i[_+12>>2],i[C+216>>2]=i[_+8>>2],i[C+220>>2]=p,p=i[_+4>>2],i[C+208>>2]=i[_>>2],i[C+212>>2]=p,p=i[a+12>>2],i[C+200>>2]=i[a+8>>2],i[C+204>>2]=p,p=i[a+4>>2],i[C+192>>2]=i[a>>2],i[C+196>>2]=p,AI(w,C+208|0,C+192|0),p=i[C+268>>2],i[a+8>>2]=i[C+264>>2],i[a+12>>2]=p,p=i[C+260>>2],i[a>>2]=i[C+256>>2],i[a+4>>2]=p,p=i[A+12>>2],i[C+184>>2]=i[A+8>>2],i[C+188>>2]=p,p=i[A+4>>2],i[C+176>>2]=i[A>>2],i[C+180>>2]=p,p=i[_+12>>2],i[C+168>>2]=i[_+8>>2],i[C+172>>2]=p,p=i[_+4>>2],i[C+160>>2]=i[_>>2],i[C+164>>2]=p,AI(w,C+176|0,C+160|0),p=i[C+268>>2],i[_+8>>2]=i[C+264>>2],i[_+12>>2]=p,p=i[C+260>>2],i[_>>2]=i[C+256>>2],i[_+4>>2]=p,p=i[B+12>>2],i[C+152>>2]=i[B+8>>2],i[C+156>>2]=p,p=i[B+4>>2],i[C+144>>2]=i[B>>2],i[C+148>>2]=p,p=i[A+12>>2],i[C+136>>2]=i[A+8>>2],i[C+140>>2]=p,p=i[A+4>>2],i[C+128>>2]=i[A>>2],i[C+132>>2]=p,AI(w,C+144|0,C+128|0),p=i[C+268>>2],i[A+8>>2]=i[C+264>>2],i[A+12>>2]=p,p=i[C+260>>2],i[A>>2]=i[C+256>>2],i[A+4>>2]=p,p=i[Q+12>>2],i[C+120>>2]=i[Q+8>>2],i[C+124>>2]=p,p=i[Q+4>>2],i[C+112>>2]=i[Q>>2],i[C+116>>2]=p,p=i[B+12>>2],i[C+104>>2]=i[B+8>>2],i[C+108>>2]=p,p=i[B+4>>2],i[C+96>>2]=i[B>>2],i[C+100>>2]=p,AI(w,C+112|0,C+96|0),p=i[C+268>>2],i[B+8>>2]=i[C+264>>2],i[B+12>>2]=p,p=i[C+260>>2],i[B>>2]=i[C+256>>2],i[B+4>>2]=p,p=i[E+12>>2],i[C+88>>2]=i[E+8>>2],i[C+92>>2]=p,p=i[E+4>>2],i[C+80>>2]=i[E>>2],i[C+84>>2]=p,p=i[Q+12>>2],i[C+72>>2]=i[Q+8>>2],i[C+76>>2]=p,p=i[Q+4>>2],i[C+64>>2]=i[Q>>2],i[C+68>>2]=p,AI(w,C+80|0,C- -64|0),p=i[C+268>>2],i[Q+8>>2]=i[C+264>>2],i[Q+12>>2]=p,p=i[C+260>>2],i[Q>>2]=i[C+256>>2],i[Q+4>>2]=p,p=i[g+12>>2],i[C+56>>2]=i[g+8>>2],i[C+60>>2]=p,p=i[g+4>>2],i[C+48>>2]=i[g>>2],i[C+52>>2]=p,p=i[E+12>>2],i[C+40>>2]=i[E+8>>2],i[C+44>>2]=p,p=i[E+4>>2],i[C+32>>2]=i[E>>2],i[C+36>>2]=p,AI(w,C+48|0,C+32|0),p=i[C+268>>2],i[E+8>>2]=i[C+264>>2],i[E+12>>2]=p,p=i[C+260>>2],i[E>>2]=i[C+256>>2],i[E+4>>2]=p,p=i[C+284>>2],i[C+24>>2]=i[C+280>>2],i[C+28>>2]=p,p=i[C+276>>2],i[C+16>>2]=i[C+272>>2],i[C+20>>2]=p,p=i[g+12>>2],i[C+8>>2]=i[g+8>>2],i[C+12>>2]=p,p=i[g+4>>2],i[C>>2]=i[g>>2],i[C+4>>2]=p,AI(w,C+16|0,C),w=i[C+268>>2],i[g+8>>2]=i[C+264>>2],i[g+12>>2]=w,w=i[C+260>>2],i[g>>2]=i[C+256>>2],i[g+4>>2]=w,i[g+12>>2]=(o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24)^D,i[g+8>>2]=(o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24)^h,i[g+4>>2]=(o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24)^y,i[g>>2]=(o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24)^f,i[A>>2]=(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24)^e,i[g+68>>2]=(o[g+68|0]|o[g+69|0]<<8|o[g+70|0]<<16|o[g+71|0]<<24)^c,i[g+72>>2]=(o[g+72|0]|o[g+73|0]<<8|o[g+74|0]<<16|o[g+75|0]<<24)^t,i[g+76>>2]=(o[g+76|0]|o[g+77|0]<<8|o[g+78|0]<<16|o[g+79|0]<<24)^r,10!=(0|(n=n+1|0)););s=C+288|0}function q(A,I){var g,B=0,Q=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0;if(s=g=s-48|0,!((B=nI(A))||(B=-26,I-3>>>0<4294967294))){_=i[A+44>>2],B=i[A+48>>2],i[g+4>>2]=0,Q=i[A+40>>2],i[g+32>>2]=B,i[g+16>>2]=-1,i[g+12>>2]=Q,B=((e=(Q=B<<3)>>>0<_>>>0?_:Q)>>>0)/((_=B<<2)>>>0)|0,i[g+24>>2]=B,i[g+28>>2]=B<<2,i[g+20>>2]=a(B,_),B=i[A+52>>2],i[g+40>>2]=I,i[g+36>>2]=B,h=I=s,s=B=I-1152&-64,I=-25;A:{if(!(!(_=g+4|0)|!A)&&(Q=K(i[_+20>>2]<<3),i[_+4>>2]=Q,I=-22,Q)){I:{if((I=i[_+16>>2])&&1024==(((Q=I<<10)>>>0)/(I>>>0)|0)&&(I=K(12),i[_>>2]=I,I)){if(i[I>>2]=0,i[I+4>>2]=0,I=tI(B+128|0,Q),i[9404]=I,I)i[B+128>>2]=0;else if(I=i[B+128>>2])break I;BA(i[_>>2]),i[_>>2]=0}WI(_,i[A+56>>2]),s=h,I=-22;break A}if(i[i[_>>2]>>2]=I,i[i[_>>2]+4>>2]=I,i[i[_>>2]+8>>2]=Q,D=i[_+36>>2],eA(I=B+128|0,0,0,64),i[B+124>>2]=i[A+48>>2],WA(I,Q=B+124|0,4,0),i[B+124>>2]=i[A+4>>2],WA(I,Q,4,0),i[B+124>>2]=i[A+44>>2],WA(I,Q,4,0),i[B+124>>2]=i[A+40>>2],WA(I,Q,4,0),i[B+124>>2]=19,WA(I,Q,4,0),i[B+124>>2]=D,WA(I,Q,4,0),i[B+124>>2]=i[A+12>>2],WA(I,Q,4,0),(Q=i[A+8>>2])&&(WA(I,Q,i[A+12>>2],0),1&C[A+56|0]&&(XC(i[A+8>>2],i[A+12>>2]),i[A+12>>2]=0)),i[B+124>>2]=i[A+20>>2],WA(I=B+128|0,B+124|0,4,0),(Q=i[A+16>>2])&&WA(I,Q,i[A+20>>2],0),i[B+124>>2]=i[A+28>>2],WA(I=B+128|0,B+124|0,4,0),(Q=i[A+24>>2])&&(WA(I,Q,i[A+28>>2],0),2&o[A+56|0]&&(XC(i[A+24>>2],i[A+28>>2]),i[A+28>>2]=0)),i[B+124>>2]=i[A+36>>2],WA(I=B+128|0,B+124|0,4,0),(Q=i[A+32>>2])&&WA(I,Q,i[A+36>>2],0),Hg(B+128|0,B+48|0,64),XC(B+112|0,8),i[_+28>>2])for(Q=0;;){for(i[B+112>>2]=0,i[B+116>>2]=Q,aA(B+128|0,1024,B+48|0,72),D=i[i[_>>2]+4>>2]+(a(i[_+24>>2],Q)<<10)|0,I=0;c=(r=I<<3)+D|0,t=i[4+(y=(e=B+128|0)+r|0)>>2],i[c>>2]=i[y>>2],i[c+4>>2]=t,y=(c=8|r)+D|0,t=i[4+(c=c+e|0)>>2],i[y>>2]=i[c>>2],i[y+4>>2]=t,y=(c=16|r)+D|0,t=i[4+(c=c+e|0)>>2],i[y>>2]=i[c>>2],i[y+4>>2]=t,c=(r|=24)+D|0,y=i[4+(r=r+e|0)>>2],i[c>>2]=i[r>>2],i[c+4>>2]=y,128!=(0|(I=I+4|0)););for(i[B+112>>2]=1,aA(e,1024,B+48|0,72),D=1024+(i[i[_>>2]+4>>2]+(a(i[_+24>>2],Q)<<10)|0)|0,I=0;c=(r=I<<3)+D|0,t=i[4+(y=(e=B+128|0)+r|0)>>2],i[c>>2]=i[y>>2],i[c+4>>2]=t,y=(c=8|r)+D|0,t=i[4+(c=c+e|0)>>2],i[y>>2]=i[c>>2],i[y+4>>2]=t,y=(c=16|r)+D|0,t=i[4+(c=c+e|0)>>2],i[y>>2]=i[c>>2],i[y+4>>2]=t,c=(r|=24)+D|0,e=i[4+(r=r+e|0)>>2],i[c>>2]=i[r>>2],i[c+4>>2]=e,128!=(0|(I=I+4|0)););if(!((Q=Q+1|0)>>>0>2]))break}XC(B+128|0,1024),XC(B+48|0,72),I=0}s=h}if(B=I,!I){if(i[g+12>>2])for(;;){if(s=I=s-80|0,!(!(_=g+4|0)|!i[_+28>>2])){for(C[I+72|0]=0,i[I+64>>2]=p,B=0;i[I+76>>2]=0,Q=i[I+76>>2],i[I+56>>2]=i[I+72>>2],i[I+60>>2]=Q,i[I+68>>2]=B,Q=i[I+68>>2],i[I+48>>2]=i[I+64>>2],i[I+52>>2]=Q,F(_,I+48|0),(B=B+1|0)>>>0<(Q=i[_+28>>2])>>>0;);if(C[I+72|0]=1,Q){for(B=0;i[I+76>>2]=0,Q=i[I+76>>2],i[I+40>>2]=i[I+72>>2],i[I+44>>2]=Q,i[I+68>>2]=B,Q=i[I+68>>2],i[I+32>>2]=i[I+64>>2],i[I+36>>2]=Q,F(_,I+32|0),(B=B+1|0)>>>0<(Q=i[_+28>>2])>>>0;);if(C[I+72|0]=2,Q){for(B=0;i[I+76>>2]=0,Q=i[I+76>>2],i[I+24>>2]=i[I+72>>2],i[I+28>>2]=Q,i[I+68>>2]=B,Q=i[I+68>>2],i[I+16>>2]=i[I+64>>2],i[I+20>>2]=Q,F(_,I+16|0),(B=B+1|0)>>>0<(Q=i[_+28>>2])>>>0;);if(C[I+72|0]=3,Q)for(B=0;i[I+76>>2]=0,Q=i[I+76>>2],i[I+8>>2]=i[I+72>>2],i[I+12>>2]=Q,i[I+68>>2]=B,Q=i[I+68>>2],i[I>>2]=i[I+64>>2],i[I+4>>2]=Q,F(_,I),(B=B+1|0)>>>0>2];);}}}if(s=I+80|0,!((p=p+1|0)>>>0>2]))break}if(s=I=s-2048|0,!(!A|!(B=g+4|0))){if(p=i[B+24>>2],Ng(I+1024|0,c=(i[i[B>>2]+4>>2]+(p<<10)|0)-1024|0,1024),(y=i[B+28>>2])>>>0>=2)for(D=1;;){for(_=c+(a(D,p)<<10)|0,r=0;t=i[(h=(Q=r<<3)+(e=I+1024|0)|0)>>2],w=i[(f=Q+_|0)>>2],f=i[h+4>>2]^i[f+4>>2],i[h>>2]=t^w,i[h+4>>2]=f,f=i[(h=(t=8|Q)+e|0)>>2],w=i[(t=_+t|0)>>2],t=i[h+4>>2]^i[t+4>>2],i[h>>2]=f^w,i[h+4>>2]=t,f=i[(h=(t=16|Q)+e|0)>>2],w=i[(t=_+t|0)>>2],t=i[h+4>>2]^i[t+4>>2],i[h>>2]=f^w,i[h+4>>2]=t,h=i[(Q=(h=e)+(e=24|Q)|0)>>2],t=i[(e=_+e|0)>>2],e=i[Q+4>>2]^i[e+4>>2],i[Q>>2]=t^h,i[Q+4>>2]=e,128!=(0|(r=r+4|0)););if((0|y)==(0|(D=D+1|0)))break}_=Ng(I,I+1024|0,1024),aA(i[A>>2],i[A+4>>2],_,1024),XC(_+1024|0,1024),XC(_,1024),WI(B,i[A+56>>2])}s=I+2048|0,B=0}}return s=g+48|0,B}function z(A,I,g,B,Q){var E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0;for(E=s+-64|0,a=i[A+60>>2],_=i[A+56>>2],P=i[A+52>>2],L=i[A+48>>2],c=i[A+44>>2],t=i[A+40>>2],r=i[A+36>>2],e=i[A+32>>2],y=i[A+28>>2],h=i[A+24>>2],D=i[A+20>>2],f=i[A+16>>2],p=i[A+12>>2],w=i[A+8>>2],n=i[A+4>>2],k=i[A>>2];;){if(!Q&B>>>0>63|Q)F=g;else{if(i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,i[E+24>>2]=0,i[E+28>>2]=0,i[E+16>>2]=0,i[E+20>>2]=0,i[E+8>>2]=0,i[E+12>>2]=0,i[E>>2]=0,i[E+4>>2]=0,N=0,B|Q)for(;C[N+E|0]=o[I+N|0],!Q&(N=N+1|0)>>>0>>0|Q;);I=F=E,O=g}for(q=20,S=k,Y=n,J=w,l=p,N=f,g=D,M=h,K=y,U=e,x=r,d=t,G=a,v=_,u=P,m=L,b=c;H=N,S=Lg((N=S+N|0)^m,16),H=m=Lg(H^(U=S+U|0),12),m=Lg((R=N+m|0)^S,8),N=Lg(H^(U=m+U|0),7),G=Lg((S=K+l|0)^G,16),K=Lg((b=G+b|0)^K,12),l=Lg((J=M+J|0)^v,16),M=Lg((d=l+d|0)^M,12),v=(z=S+K|0)+N|0,j=Lg((J=M+J|0)^l,8),S=Lg(v^j,16),l=Lg((Y=g+Y|0)^u,16),g=Lg((x=l+x|0)^g,12),H=N,u=Lg((Y=g+Y|0)^l,8),H=Lg(H^(N=(X=u+x|0)+S|0),12),v=Lg(S^(l=H+v|0),8),N=Lg((x=v+N|0)^H,7),H=U,U=J,S=Lg(G^z,8),J=Lg((G=S+b|0)^K,7),u=Lg((U=U+J|0)^u,16),b=Lg((K=H+u|0)^J,12),u=Lg(u^(J=b+U|0),8),K=Lg((U=K+u|0)^b,7),b=G,G=Y,Y=Lg((d=d+j|0)^M,7),M=b+(m=Lg((G=G+Y|0)^m,16))|0,b=G,G=Lg(M^Y,12),m=Lg(m^(Y=b+G|0),8),M=Lg((b=M+m|0)^G,7),H=d,G=S,S=Lg(g^X,7),G=Lg(G^(d=S+R|0),16),R=Lg((g=H+G|0)^S,12),G=Lg(G^(S=R+d|0),8),g=Lg((d=g+G|0)^R,7),q=q-2|0;);if(q=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,R=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,z=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,j=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,X=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,H=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,W=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,V=o[I+32|0]|o[I+33|0]<<8|o[I+34|0]<<16|o[I+35|0]<<24,Z=o[I+36|0]|o[I+37|0]<<8|o[I+38|0]<<16|o[I+39|0]<<24,T=o[I+40|0]|o[I+41|0]<<8|o[I+42|0]<<16|o[I+43|0]<<24,$=o[I+44|0]|o[I+45|0]<<8|o[I+46|0]<<16|o[I+47|0]<<24,AA=o[I+48|0]|o[I+49|0]<<8|o[I+50|0]<<16|o[I+51|0]<<24,IA=o[I+52|0]|o[I+53|0]<<8|o[I+54|0]<<16|o[I+55|0]<<24,gA=o[I+56|0]|o[I+57|0]<<8|o[I+58|0]<<16|o[I+59|0]<<24,CA=o[I+60|0]|o[I+61|0]<<8|o[I+62|0]<<16|o[I+63|0]<<24,S=S+k^(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24),C[0|F]=S,C[F+1|0]=S>>>8,C[F+2|0]=S>>>16,C[F+3|0]=S>>>24,S=G+a^CA,C[F+60|0]=S,C[F+61|0]=S>>>8,C[F+62|0]=S>>>16,C[F+63|0]=S>>>24,S=v+_^gA,C[F+56|0]=S,C[F+57|0]=S>>>8,C[F+58|0]=S>>>16,C[F+59|0]=S>>>24,S=u+P^IA,C[F+52|0]=S,C[F+53|0]=S>>>8,C[F+54|0]=S>>>16,C[F+55|0]=S>>>24,S=m+L^AA,C[F+48|0]=S,C[F+49|0]=S>>>8,C[F+50|0]=S>>>16,C[F+51|0]=S>>>24,S=b+c^$,C[F+44|0]=S,C[F+45|0]=S>>>8,C[F+46|0]=S>>>16,C[F+47|0]=S>>>24,S=d+t^T,C[F+40|0]=S,C[F+41|0]=S>>>8,C[F+42|0]=S>>>16,C[F+43|0]=S>>>24,S=x+r^Z,C[F+36|0]=S,C[F+37|0]=S>>>8,C[F+38|0]=S>>>16,C[F+39|0]=S>>>24,S=U+e^V,C[F+32|0]=S,C[F+33|0]=S>>>8,C[F+34|0]=S>>>16,C[F+35|0]=S>>>24,K=K+y^W,C[F+28|0]=K,C[F+29|0]=K>>>8,C[F+30|0]=K>>>16,C[F+31|0]=K>>>24,M=H^M+h,C[F+24|0]=M,C[F+25|0]=M>>>8,C[F+26|0]=M>>>16,C[F+27|0]=M>>>24,g=X^g+D,C[F+20|0]=g,C[F+21|0]=g>>>8,C[F+22|0]=g>>>16,C[F+23|0]=g>>>24,g=j^N+f,C[F+16|0]=g,C[F+17|0]=g>>>8,C[F+18|0]=g>>>16,C[F+19|0]=g>>>24,g=z^l+p,C[F+12|0]=g,C[F+13|0]=g>>>8,C[F+14|0]=g>>>16,C[F+15|0]=g>>>24,g=R^J+w,C[F+8|0]=g,C[F+9|0]=g>>>8,C[F+10|0]=g>>>16,C[F+11|0]=g>>>24,g=q^Y+n,C[F+4|0]=g,C[F+5|0]=g>>>8,C[F+6|0]=g>>>16,C[F+7|0]=g>>>24,P=!(L=L+1|0)+P|0,!Q&B>>>0<=64){if(!(!(B|Q)|!Q&B>>>0>63|!!(0|Q)))for(N=0;C[N+O|0]=o[F+N|0],B>>>0>(N=N+1|0)>>>0;);i[A+52>>2]=P,i[A+48>>2]=L;break}I=I- -64|0,g=F- -64|0,Q=Q-1|0,Q=(B=B+-64|0)>>>0<4294967232?Q+1|0:Q}}function j(A,I){I|=0;var g,B=0,Q=0,o=0,E=0,a=0,_=0,c=0;return s=g=s-704|0,B=80+((Q=i[72+(A|=0)>>2]>>>3&127)+A|0)|0,Q>>>0>=112?(Ng(B,35056,128-Q|0),k(A,Q=A+80|0,g,g+640|0),bg(Q,0,112)):Ng(B,35056,112-Q|0),_=(o=i[A+64>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+68>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[A+192|0]=B,C[A+193|0]=B>>>8,C[A+194|0]=B>>>16,C[A+195|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[A+196|0]=Q,C[A+197|0]=Q>>>8,C[A+198|0]=Q>>>16,C[A+199|0]=Q>>>24,_=(o=i[A+72>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+76>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[A+200|0]=B,C[A+201|0]=B>>>8,C[A+202|0]=B>>>16,C[A+203|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[A+204|0]=Q,C[A+205|0]=Q>>>8,C[A+206|0]=Q>>>16,C[A+207|0]=Q>>>24,k(A,A+80|0,g,g+640|0),_=(o=i[A>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+4>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[0|I]=B,C[I+1|0]=B>>>8,C[I+2|0]=B>>>16,C[I+3|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+4|0]=Q,C[I+5|0]=Q>>>8,C[I+6|0]=Q>>>16,C[I+7|0]=Q>>>24,_=(o=i[A+8>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+12>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+8|0]=B,C[I+9|0]=B>>>8,C[I+10|0]=B>>>16,C[I+11|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+12|0]=Q,C[I+13|0]=Q>>>8,C[I+14|0]=Q>>>16,C[I+15|0]=Q>>>24,_=(o=i[A+16>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+20>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+16|0]=B,C[I+17|0]=B>>>8,C[I+18|0]=B>>>16,C[I+19|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+20|0]=Q,C[I+21|0]=Q>>>8,C[I+22|0]=Q>>>16,C[I+23|0]=Q>>>24,_=(o=i[A+24>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+28>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+24|0]=B,C[I+25|0]=B>>>8,C[I+26|0]=B>>>16,C[I+27|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+28|0]=Q,C[I+29|0]=Q>>>8,C[I+30|0]=Q>>>16,C[I+31|0]=Q>>>24,_=(o=i[A+32>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+36>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+32|0]=B,C[I+33|0]=B>>>8,C[I+34|0]=B>>>16,C[I+35|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+36|0]=Q,C[I+37|0]=Q>>>8,C[I+38|0]=Q>>>16,C[I+39|0]=Q>>>24,_=(o=i[A+40>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+44>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+40|0]=B,C[I+41|0]=B>>>8,C[I+42|0]=B>>>16,C[I+43|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+44|0]=Q,C[I+45|0]=Q>>>8,C[I+46|0]=Q>>>16,C[I+47|0]=Q>>>24,_=(o=i[A+48>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+52>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+48|0]=B,C[I+49|0]=B>>>8,C[I+50|0]=B>>>16,C[I+51|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+52|0]=Q,C[I+53|0]=Q>>>8,C[I+54|0]=Q>>>16,C[I+55|0]=Q>>>24,_=(o=i[A+56>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,B=I,c=E<<24,E=(a=-16777216&o)>>>24|0,I=c|a<<8|-16777216&((255&(I=i[A+60>>2]))<<24|o>>>8)|16711680&((16777215&I)<<8|o>>>24)|I>>>8&65280|I>>>24,C[B+56|0]=I,C[B+57|0]=I>>>8,C[B+58|0]=I>>>16,C[B+59|0]=I>>>24,I=Q|E|_,I|=Q=0,C[B+60|0]=I,C[B+61|0]=I>>>8,C[B+62|0]=I>>>16,C[B+63|0]=I>>>24,XC(g,704),XC(A,208),s=g+704|0,0}function X(A,I,g){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S,N,G=0;s=B=s-224|0,c=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,t=o[0|(G=g- -64|0)]|o[G+1|0]<<8|o[G+2|0]<<16|o[G+3|0]<<24,r=o[g+80|0]|o[g+81|0]<<8|o[g+82|0]<<16|o[g+83|0]<<24,e=o[g+32|0]|o[g+33|0]<<8|o[g+34|0]<<16|o[g+35|0]<<24,y=o[g+48|0]|o[g+49|0]<<8|o[g+50|0]<<16|o[g+51|0]<<24,Q=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,h=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,D=o[g+68|0]|o[g+69|0]<<8|o[g+70|0]<<16|o[g+71|0]<<24,f=o[g+84|0]|o[g+85|0]<<8|o[g+86|0]<<16|o[g+87|0]<<24,p=o[g+36|0]|o[g+37|0]<<8|o[g+38|0]<<16|o[g+39|0]<<24,w=o[g+52|0]|o[g+53|0]<<8|o[g+54|0]<<16|o[g+55|0]<<24,E=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,n=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,k=o[g+72|0]|o[g+73|0]<<8|o[g+74|0]<<16|o[g+75|0]<<24,F=o[g+88|0]|o[g+89|0]<<8|o[g+90|0]<<16|o[g+91|0]<<24,S=o[g+40|0]|o[g+41|0]<<8|o[g+42|0]<<16|o[g+43|0]<<24,N=o[g+56|0]|o[g+57|0]<<8|o[g+58|0]<<16|o[g+59|0]<<24,a=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=(_=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24)^(o[g+44|0]|o[g+45|0]<<8|o[g+46|0]<<16|o[g+47|0]<<24)&(o[g+60|0]|o[g+61|0]<<8|o[g+62|0]<<16|o[g+63|0]<<24)^(o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24)^(o[g+92|0]|o[g+93|0]<<8|o[g+94|0]<<16|o[g+95|0]<<24)^(o[g+76|0]|o[g+77|0]<<8|o[g+78|0]<<16|o[g+79|0]<<24),C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=S&N^k^F^n^E,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=p&w^D^f^h^Q,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=e&y^c^t^r^a,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,A=i[g+92>>2],i[B+216>>2]=i[g+88>>2],i[B+220>>2]=A,A=i[g+84>>2],i[B+208>>2]=i[g+80>>2],i[B+212>>2]=A,A=i[g+76>>2],i[B+184>>2]=i[g+72>>2],i[B+188>>2]=A,A=i[G+4>>2],i[B+176>>2]=i[G>>2],i[B+180>>2]=A,A=i[g+92>>2],i[B+168>>2]=i[g+88>>2],i[B+172>>2]=A,A=i[g+84>>2],i[B+160>>2]=i[g+80>>2],i[B+164>>2]=A,AI(A=B+192|0,B+176|0,B+160|0),I=i[B+204>>2],i[g+88>>2]=i[B+200>>2],i[g+92>>2]=I,I=i[B+196>>2],i[g+80>>2]=i[B+192>>2],i[g+84>>2]=I,I=i[g+60>>2],i[B+152>>2]=i[g+56>>2],i[B+156>>2]=I,I=i[g+52>>2],i[B+144>>2]=i[g+48>>2],i[B+148>>2]=I,I=i[g+76>>2],i[B+136>>2]=i[g+72>>2],i[B+140>>2]=I,I=i[G+4>>2],i[B+128>>2]=i[G>>2],i[B+132>>2]=I,AI(A,B+144|0,B+128|0),I=i[B+204>>2],i[g+72>>2]=i[B+200>>2],i[g+76>>2]=I,I=i[B+196>>2],i[G>>2]=i[B+192>>2],i[G+4>>2]=I,I=i[g+44>>2],i[B+120>>2]=i[g+40>>2],i[B+124>>2]=I,I=i[g+36>>2],i[B+112>>2]=i[g+32>>2],i[B+116>>2]=I,I=i[g+60>>2],i[B+104>>2]=i[g+56>>2],i[B+108>>2]=I,I=i[g+52>>2],i[B+96>>2]=i[g+48>>2],i[B+100>>2]=I,AI(A,B+112|0,B+96|0),I=i[B+204>>2],i[g+56>>2]=i[B+200>>2],i[g+60>>2]=I,I=i[B+196>>2],i[g+48>>2]=i[B+192>>2],i[g+52>>2]=I,I=i[g+28>>2],i[B+88>>2]=i[g+24>>2],i[B+92>>2]=I,I=i[g+20>>2],i[B+80>>2]=i[g+16>>2],i[B+84>>2]=I,I=i[g+44>>2],i[B+72>>2]=i[g+40>>2],i[B+76>>2]=I,I=i[g+36>>2],i[B+64>>2]=i[g+32>>2],i[B+68>>2]=I,AI(A,B+80|0,B- -64|0),I=i[B+204>>2],i[g+40>>2]=i[B+200>>2],i[g+44>>2]=I,I=i[B+196>>2],i[g+32>>2]=i[B+192>>2],i[g+36>>2]=I,I=i[g+12>>2],i[B+56>>2]=i[g+8>>2],i[B+60>>2]=I,I=i[g+4>>2],i[B+48>>2]=i[g>>2],i[B+52>>2]=I,I=i[g+28>>2],i[B+40>>2]=i[g+24>>2],i[B+44>>2]=I,I=i[g+20>>2],i[B+32>>2]=i[g+16>>2],i[B+36>>2]=I,AI(A,B+48|0,B+32|0),I=i[B+204>>2],i[g+24>>2]=i[B+200>>2],i[g+28>>2]=I,I=i[B+196>>2],i[g+16>>2]=i[B+192>>2],i[g+20>>2]=I,I=i[B+220>>2],i[B+24>>2]=i[B+216>>2],i[B+28>>2]=I,I=i[B+212>>2],i[B+16>>2]=i[B+208>>2],i[B+20>>2]=I,I=i[g+12>>2],i[B+8>>2]=i[g+8>>2],i[B+12>>2]=I,I=i[g+4>>2],i[B>>2]=i[g>>2],i[B+4>>2]=I,AI(A,B+16|0,B),A=i[B+192>>2],I=i[B+196>>2],G=i[B+200>>2],i[g+12>>2]=_^i[B+204>>2],i[g+8>>2]=G^E,i[g+4>>2]=I^Q,i[g>>2]=A^a,s=B+224|0}function O(A,I,g){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n=0,k=0,F=0,S=0,N=0;s=B=s-224|0,F=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,k=o[0|(n=g- -64|0)]|o[n+1|0]<<8|o[n+2|0]<<16|o[n+3|0]<<24,Q=o[g+80|0]|o[g+81|0]<<8|o[g+82|0]<<16|o[g+83|0]<<24,E=o[g+32|0]|o[g+33|0]<<8|o[g+34|0]<<16|o[g+35|0]<<24,a=o[g+48|0]|o[g+49|0]<<8|o[g+50|0]<<16|o[g+51|0]<<24,S=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,_=o[g+68|0]|o[g+69|0]<<8|o[g+70|0]<<16|o[g+71|0]<<24,c=o[g+84|0]|o[g+85|0]<<8|o[g+86|0]<<16|o[g+87|0]<<24,t=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,r=o[g+36|0]|o[g+37|0]<<8|o[g+38|0]<<16|o[g+39|0]<<24,e=o[g+52|0]|o[g+53|0]<<8|o[g+54|0]<<16|o[g+55|0]<<24,N=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,y=o[g+72|0]|o[g+73|0]<<8|o[g+74|0]<<16|o[g+75|0]<<24,h=o[g+88|0]|o[g+89|0]<<8|o[g+90|0]<<16|o[g+91|0]<<24,D=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,f=o[g+40|0]|o[g+41|0]<<8|o[g+42|0]<<16|o[g+43|0]<<24,p=o[g+56|0]|o[g+57|0]<<8|o[g+58|0]<<16|o[g+59|0]<<24,w=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=(o[g+44|0]|o[g+45|0]<<8|o[g+46|0]<<16|o[g+47|0]<<24)&(o[g+60|0]|o[g+61|0]<<8|o[g+62|0]<<16|o[g+63|0]<<24)^(o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24)^(o[g+76|0]|o[g+77|0]<<8|o[g+78|0]<<16|o[g+79|0]<<24)^(o[g+92|0]|o[g+93|0]<<8|o[g+94|0]<<16|o[g+95|0]<<24)^(o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24),C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,N=f&p^N^h^D^y,C[A+8|0]=N,C[A+9|0]=N>>>8,C[A+10|0]=N>>>16,C[A+11|0]=N>>>24,S=r&e^S^c^t^_,C[A+4|0]=S,C[A+5|0]=S>>>8,C[A+6|0]=S>>>16,C[A+7|0]=S>>>24,F=E&a^F^k^Q^w,C[0|A]=F,C[A+1|0]=F>>>8,C[A+2|0]=F>>>16,C[A+3|0]=F>>>24,A=i[g+92>>2],i[B+216>>2]=i[g+88>>2],i[B+220>>2]=A,A=i[g+84>>2],i[B+208>>2]=i[g+80>>2],i[B+212>>2]=A,A=i[g+76>>2],i[B+184>>2]=i[g+72>>2],i[B+188>>2]=A,A=i[n+4>>2],i[B+176>>2]=i[n>>2],i[B+180>>2]=A,A=i[g+92>>2],i[B+168>>2]=i[g+88>>2],i[B+172>>2]=A,A=i[g+84>>2],i[B+160>>2]=i[g+80>>2],i[B+164>>2]=A,AI(A=B+192|0,B+176|0,B+160|0),k=i[B+204>>2],i[g+88>>2]=i[B+200>>2],i[g+92>>2]=k,k=i[B+196>>2],i[g+80>>2]=i[B+192>>2],i[g+84>>2]=k,k=i[g+60>>2],i[B+152>>2]=i[g+56>>2],i[B+156>>2]=k,k=i[g+52>>2],i[B+144>>2]=i[g+48>>2],i[B+148>>2]=k,k=i[g+76>>2],i[B+136>>2]=i[g+72>>2],i[B+140>>2]=k,k=i[n+4>>2],i[B+128>>2]=i[n>>2],i[B+132>>2]=k,AI(A,B+144|0,B+128|0),k=i[B+204>>2],i[g+72>>2]=i[B+200>>2],i[g+76>>2]=k,k=i[B+196>>2],i[n>>2]=i[B+192>>2],i[n+4>>2]=k,n=i[g+44>>2],i[B+120>>2]=i[g+40>>2],i[B+124>>2]=n,n=i[g+36>>2],i[B+112>>2]=i[g+32>>2],i[B+116>>2]=n,n=i[g+60>>2],i[B+104>>2]=i[g+56>>2],i[B+108>>2]=n,n=i[g+52>>2],i[B+96>>2]=i[g+48>>2],i[B+100>>2]=n,AI(A,B+112|0,B+96|0),n=i[B+204>>2],i[g+56>>2]=i[B+200>>2],i[g+60>>2]=n,n=i[B+196>>2],i[g+48>>2]=i[B+192>>2],i[g+52>>2]=n,n=i[g+28>>2],i[B+88>>2]=i[g+24>>2],i[B+92>>2]=n,n=i[g+20>>2],i[B+80>>2]=i[g+16>>2],i[B+84>>2]=n,n=i[g+44>>2],i[B+72>>2]=i[g+40>>2],i[B+76>>2]=n,n=i[g+36>>2],i[B+64>>2]=i[g+32>>2],i[B+68>>2]=n,AI(A,B+80|0,B- -64|0),n=i[B+204>>2],i[g+40>>2]=i[B+200>>2],i[g+44>>2]=n,n=i[B+196>>2],i[g+32>>2]=i[B+192>>2],i[g+36>>2]=n,n=i[g+12>>2],i[B+56>>2]=i[g+8>>2],i[B+60>>2]=n,n=i[g+4>>2],i[B+48>>2]=i[g>>2],i[B+52>>2]=n,n=i[g+28>>2],i[B+40>>2]=i[g+24>>2],i[B+44>>2]=n,n=i[g+20>>2],i[B+32>>2]=i[g+16>>2],i[B+36>>2]=n,AI(A,B+48|0,B+32|0),n=i[B+204>>2],i[g+24>>2]=i[B+200>>2],i[g+28>>2]=n,n=i[B+196>>2],i[g+16>>2]=i[B+192>>2],i[g+20>>2]=n,n=i[B+220>>2],i[B+24>>2]=i[B+216>>2],i[B+28>>2]=n,n=i[B+212>>2],i[B+16>>2]=i[B+208>>2],i[B+20>>2]=n,n=i[g+12>>2],i[B+8>>2]=i[g+8>>2],i[B+12>>2]=n,n=i[g+4>>2],i[B>>2]=i[g>>2],i[B+4>>2]=n,AI(A,B+16|0,B),A=i[B+192>>2],n=i[B+196>>2],k=i[B+200>>2],i[g+12>>2]=I^i[B+204>>2],i[g+8>>2]=k^N,i[g+4>>2]=n^S,i[g>>2]=A^F,s=B+224|0}function W(A,I){var g,B,Q,E,a,_,c,t,r,e,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0;s=g=s-800|0,y=i[I+44>>2],D=i[I+84>>2],f=i[I+48>>2],p=i[I+88>>2],w=i[I+52>>2],h=i[I+92>>2],S=i[I+56>>2],n=i[I+96>>2],K=i[I+60>>2],N=i[I+100>>2],H=i[(U=I- -64|0)>>2],Y=i[I+104>>2],J=i[I+68>>2],d=i[I+108>>2],m=i[I+72>>2],l=i[I+112>>2],u=i[I+40>>2],x=i[I+80>>2],k=i[I+76>>2],F=i[I+116>>2],i[g+324>>2]=k+F,i[g+320>>2]=m+l,i[g+316>>2]=J+d,i[g+312>>2]=H+Y,i[g+308>>2]=N+K,i[g+304>>2]=n+S,i[g+300>>2]=h+w,i[g+296>>2]=f+p,i[g+292>>2]=y+D,i[g+288>>2]=u+x,i[g+36>>2]=F-k,i[g+32>>2]=l-m,i[g+28>>2]=d-J,i[g+24>>2]=Y-H,i[g+20>>2]=N-K,i[g+16>>2]=n-S,i[g+12>>2]=h-w,i[g+8>>2]=p-f,i[g+4>>2]=D-y,i[g>>2]=x-u,b(y=g+288|0,y,g),b(f=g+240|0,I,w=I+40|0),R(D=g+192|0,f),b(D,y,D),i[g+452>>2]=0,i[g+456>>2]=0,i[g+460>>2]=0,i[g+464>>2]=0,i[g+468>>2]=0,i[g+436>>2]=0,i[g+440>>2]=0,i[g+444>>2]=0,i[g+448>>2]=0,i[g+432>>2]=1,GA(p=g+576|0,g+432|0,D),b(D=g+720|0,p,y),b(K=g+672|0,p,f),b(n=g+48|0,D,K),b(n,n,y=I+120|0),b(g+528|0,I,1632),b(g+480|0,w,1632),b(g+624|0,D,2944),b(D=g+336|0,y,n),QI(S=g+384|0,D),h=o[g+384|0],D=i[I+36>>2],y=i[I+32>>2],i[g+176>>2]=y,i[g+180>>2]=D,f=i[I+28>>2],D=i[I+24>>2],i[g+168>>2]=D,i[g+172>>2]=f,p=i[I+20>>2],f=i[I+16>>2],i[g+160>>2]=f,i[g+164>>2]=p,w=i[I+12>>2],p=i[I+8>>2],i[g+152>>2]=p,i[g+156>>2]=w,N=i[I+4>>2],w=i[I>>2],i[g+144>>2]=w,i[g+148>>2]=N,N=i[I+44>>2],H=i[I+48>>2],Y=i[I+52>>2],J=i[I+56>>2],d=i[I+60>>2],m=i[U>>2],l=i[I+68>>2],u=i[I+72>>2],x=i[I+76>>2],U=i[I+40>>2],P=i[g+484>>2],k=i[g+148>>2],q=i[g+492>>2],F=i[g+156>>2],z=i[g+500>>2],G=i[g+164>>2],j=i[g+508>>2],M=i[g+172>>2],X=i[g+516>>2],v=i[g+180>>2],O=i[g+480>>2],W=i[g+488>>2],V=i[g+496>>2],Z=i[g+504>>2],h=0-(1&h)|0,i[g+176>>2]=y^h&(y^i[g+512>>2]),i[g+168>>2]=D^h&(D^Z),i[g+160>>2]=f^h&(f^V),i[g+152>>2]=p^h&(p^W),i[g+144>>2]=w^h&(w^O),i[g+180>>2]=v^h&(v^X),i[g+172>>2]=M^h&(M^j),i[g+164>>2]=G^h&(G^z),i[g+156>>2]=F^h&(F^q),i[g+148>>2]=k^h&(k^P),v=i[g+528>>2],P=i[g+532>>2],q=i[g+536>>2],z=i[g+540>>2],j=i[g+544>>2],X=i[g+548>>2],O=i[g+552>>2],W=i[g+556>>2],V=i[g+560>>2],Z=i[g+564>>2],y=i[g+672>>2],B=i[g+624>>2],D=i[g+676>>2],Q=i[g+628>>2],f=i[g+680>>2],E=i[g+632>>2],p=i[g+684>>2],a=i[g+636>>2],w=i[g+688>>2],_=i[g+640>>2],k=i[g+692>>2],c=i[g+644>>2],F=i[g+696>>2],t=i[g+648>>2],G=i[g+700>>2],r=i[g+652>>2],M=i[g+704>>2],e=i[g+656>>2],L=i[g+708>>2],i[g+708>>2]=L^h&(i[g+660>>2]^L),i[g+704>>2]=M^h&(M^e),i[g+700>>2]=G^h&(G^r),i[g+696>>2]=F^h&(F^t),i[g+692>>2]=k^h&(k^c),i[g+688>>2]=w^h&(w^_),i[g+684>>2]=p^h&(p^a),i[g+680>>2]=f^h&(f^E),i[g+676>>2]=D^h&(D^Q),i[g+672>>2]=y^h&(y^B),b(y=g+96|0,g+144|0,n),QI(S,y),D=i[I+84>>2],f=i[I+88>>2],p=i[I+92>>2],w=i[I+96>>2],n=i[I+100>>2],k=i[I+104>>2],F=i[I+108>>2],G=i[I+112>>2],M=i[I+80>>2],L=i[I+116>>2],I=0-(1&C[g+384|0])|0,y=x^h&(x^Z),i[g+420>>2]=L-(I&(0-y^y)^y),y=u^h&(u^V),i[g+416>>2]=G-(I&(0-y^y)^y),y=l^h&(l^W),i[g+412>>2]=F-(I&(0-y^y)^y),y=m^h&(m^O),i[g+408>>2]=k-(I&(0-y^y)^y),y=d^h&(d^X),i[g+404>>2]=n-(I&(0-y^y)^y),y=J^h&(J^j),i[g+400>>2]=w-(I&(0-y^y)^y),y=Y^h&(Y^z),i[g+396>>2]=p-(I&(0-y^y)^y),y=H^h&(H^q),i[g+392>>2]=f-(I&(0-y^y)^y),y=N^h&(N^P),i[g+388>>2]=D-(I&(0-y^y)^y),y=I,I=U^h&(U^v),i[g+384>>2]=M-(y&(0-I^I)^I),b(S,K,S),QI(g+768|0,S),I=0-(1&C[g+768|0])|0,y=i[g+384>>2],i[g+384>>2]=I&(0-y^y)^y,y=i[g+388>>2],i[g+388>>2]=I&(0-y^y)^y,y=i[g+392>>2],i[g+392>>2]=I&(0-y^y)^y,y=i[g+396>>2],i[g+396>>2]=I&(0-y^y)^y,y=i[g+400>>2],i[g+400>>2]=I&(0-y^y)^y,y=i[g+404>>2],i[g+404>>2]=I&(0-y^y)^y,y=i[g+408>>2],i[g+408>>2]=I&(0-y^y)^y,y=i[g+412>>2],i[g+412>>2]=I&(0-y^y)^y,y=i[g+416>>2],i[g+416>>2]=I&(0-y^y)^y,y=I,I=i[g+420>>2],i[g+420>>2]=y&(0-I^I)^I,QI(A,S),s=g+800|0}function V(A,I){var g,C,B,Q,E,a,_,c,t,r=0,e=0;s=g=s-288|0,C=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,B=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,Q=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,E=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,a=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,_=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,c=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,t=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,A=i[I+124>>2],i[g+280>>2]=i[I+120>>2],i[g+284>>2]=A,A=i[I+116>>2],i[g+272>>2]=i[I+112>>2],i[g+276>>2]=A,A=i[I+108>>2],i[g+248>>2]=i[I+104>>2],i[g+252>>2]=A,A=i[I+100>>2],i[g+240>>2]=i[I+96>>2],i[g+244>>2]=A,A=i[I+124>>2],i[g+232>>2]=i[I+120>>2],i[g+236>>2]=A,A=i[I+116>>2],i[g+224>>2]=i[I+112>>2],i[g+228>>2]=A,AI(e=g+256|0,g+240|0,g+224|0),A=i[g+268>>2],i[I+120>>2]=i[g+264>>2],i[I+124>>2]=A,A=i[g+260>>2],i[I+112>>2]=i[g+256>>2],i[I+116>>2]=A,A=i[I+92>>2],i[g+216>>2]=i[I+88>>2],i[g+220>>2]=A,A=i[I+84>>2],i[g+208>>2]=i[I+80>>2],i[g+212>>2]=A,A=i[I+108>>2],i[g+200>>2]=i[I+104>>2],i[g+204>>2]=A,A=i[I+100>>2],i[g+192>>2]=i[I+96>>2],i[g+196>>2]=A,AI(e,g+208|0,g+192|0),A=i[g+268>>2],i[I+104>>2]=i[g+264>>2],i[I+108>>2]=A,A=i[g+260>>2],i[I+96>>2]=i[g+256>>2],i[I+100>>2]=A,A=i[I+76>>2],i[g+184>>2]=i[I+72>>2],i[g+188>>2]=A,r=i[4+(A=I- -64|0)>>2],i[g+176>>2]=i[A>>2],i[g+180>>2]=r,r=i[I+92>>2],i[g+168>>2]=i[I+88>>2],i[g+172>>2]=r,r=i[I+84>>2],i[g+160>>2]=i[I+80>>2],i[g+164>>2]=r,AI(e,g+176|0,g+160|0),r=i[g+268>>2],i[I+88>>2]=i[g+264>>2],i[I+92>>2]=r,r=i[g+260>>2],i[I+80>>2]=i[g+256>>2],i[I+84>>2]=r,r=i[I+60>>2],i[g+152>>2]=i[I+56>>2],i[g+156>>2]=r,r=i[I+52>>2],i[g+144>>2]=i[I+48>>2],i[g+148>>2]=r,r=i[I+76>>2],i[g+136>>2]=i[I+72>>2],i[g+140>>2]=r,r=i[A+4>>2],i[g+128>>2]=i[A>>2],i[g+132>>2]=r,AI(e,g+144|0,g+128|0),r=i[g+268>>2],i[I+72>>2]=i[g+264>>2],i[I+76>>2]=r,r=i[g+260>>2],i[A>>2]=i[g+256>>2],i[A+4>>2]=r,r=i[I+44>>2],i[g+120>>2]=i[I+40>>2],i[g+124>>2]=r,r=i[I+36>>2],i[g+112>>2]=i[I+32>>2],i[g+116>>2]=r,r=i[I+60>>2],i[g+104>>2]=i[I+56>>2],i[g+108>>2]=r,r=i[I+52>>2],i[g+96>>2]=i[I+48>>2],i[g+100>>2]=r,AI(e,g+112|0,g+96|0),r=i[g+268>>2],i[I+56>>2]=i[g+264>>2],i[I+60>>2]=r,r=i[g+260>>2],i[I+48>>2]=i[g+256>>2],i[I+52>>2]=r,r=i[I+28>>2],i[g+88>>2]=i[I+24>>2],i[g+92>>2]=r,r=i[I+20>>2],i[g+80>>2]=i[I+16>>2],i[g+84>>2]=r,r=i[I+44>>2],i[g+72>>2]=i[I+40>>2],i[g+76>>2]=r,r=i[I+36>>2],i[g+64>>2]=i[I+32>>2],i[g+68>>2]=r,AI(e,g+80|0,g- -64|0),r=i[g+268>>2],i[I+40>>2]=i[g+264>>2],i[I+44>>2]=r,r=i[g+260>>2],i[I+32>>2]=i[g+256>>2],i[I+36>>2]=r,r=i[I+12>>2],i[g+56>>2]=i[I+8>>2],i[g+60>>2]=r,r=i[I+4>>2],i[g+48>>2]=i[I>>2],i[g+52>>2]=r,r=i[I+28>>2],i[g+40>>2]=i[I+24>>2],i[g+44>>2]=r,r=i[I+20>>2],i[g+32>>2]=i[I+16>>2],i[g+36>>2]=r,AI(e,g+48|0,g+32|0),r=i[g+268>>2],i[I+24>>2]=i[g+264>>2],i[I+28>>2]=r,r=i[g+260>>2],i[I+16>>2]=i[g+256>>2],i[I+20>>2]=r,r=i[g+284>>2],i[g+24>>2]=i[g+280>>2],i[g+28>>2]=r,r=i[g+276>>2],i[g+16>>2]=i[g+272>>2],i[g+20>>2]=r,r=i[I+12>>2],i[g+8>>2]=i[I+8>>2],i[g+12>>2]=r,r=i[I+4>>2],i[g>>2]=i[I>>2],i[g+4>>2]=r,AI(e,g+16|0,g),e=i[g+268>>2],i[I+8>>2]=i[g+264>>2],i[I+12>>2]=e,e=i[g+260>>2],i[I>>2]=i[g+256>>2],i[I+4>>2]=e,i[I+12>>2]=(o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24)^c,i[I+8>>2]=(o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24)^_,i[I+4>>2]=(o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24)^a,i[I>>2]=(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24)^t,i[A>>2]=(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24)^E,i[I+68>>2]=(o[I+68|0]|o[I+69|0]<<8|o[I+70|0]<<16|o[I+71|0]<<24)^Q,i[I+72>>2]=(o[I+72|0]|o[I+73|0]<<8|o[I+74|0]<<16|o[I+75|0]<<24)^B,i[I+76>>2]=(o[I+76|0]|o[I+77|0]<<8|o[I+78|0]<<16|o[I+79|0]<<24)^C,s=g+288|0}function Z(A,I,g,C){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k=0,F=0,S=0,N=0;s=B=s-240|0,i[B+200>>2]=0,i[B+204>>2]=0,i[B+192>>2]=0,i[B+196>>2]=0,Ng(F=B+192|0,I,g),S=o[C+16|0]|o[C+17|0]<<8|o[C+18|0]<<16|o[C+19|0]<<24,N=o[0|(I=C- -64|0)]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,k=o[C+80|0]|o[C+81|0]<<8|o[C+82|0]<<16|o[C+83|0]<<24,Q=o[C+32|0]|o[C+33|0]<<8|o[C+34|0]<<16|o[C+35|0]<<24,E=o[C+48|0]|o[C+49|0]<<8|o[C+50|0]<<16|o[C+51|0]<<24,a=o[C+20|0]|o[C+21|0]<<8|o[C+22|0]<<16|o[C+23|0]<<24,_=o[C+68|0]|o[C+69|0]<<8|o[C+70|0]<<16|o[C+71|0]<<24,c=o[C+84|0]|o[C+85|0]<<8|o[C+86|0]<<16|o[C+87|0]<<24,t=o[C+36|0]|o[C+37|0]<<8|o[C+38|0]<<16|o[C+39|0]<<24,r=o[C+52|0]|o[C+53|0]<<8|o[C+54|0]<<16|o[C+55|0]<<24,e=o[C+24|0]|o[C+25|0]<<8|o[C+26|0]<<16|o[C+27|0]<<24,y=o[C+72|0]|o[C+73|0]<<8|o[C+74|0]<<16|o[C+75|0]<<24,h=o[C+88|0]|o[C+89|0]<<8|o[C+90|0]<<16|o[C+91|0]<<24,D=o[C+40|0]|o[C+41|0]<<8|o[C+42|0]<<16|o[C+43|0]<<24,f=o[C+56|0]|o[C+57|0]<<8|o[C+58|0]<<16|o[C+59|0]<<24,p=i[B+192>>2],w=i[B+196>>2],n=i[B+200>>2],i[B+204>>2]=(o[C+44|0]|o[C+45|0]<<8|o[C+46|0]<<16|o[C+47|0]<<24)&(o[C+60|0]|o[C+61|0]<<8|o[C+62|0]<<16|o[C+63|0]<<24)^(o[C+28|0]|o[C+29|0]<<8|o[C+30|0]<<16|o[C+31|0]<<24)^(o[C+76|0]|o[C+77|0]<<8|o[C+78|0]<<16|o[C+79|0]<<24)^i[B+204>>2]^(o[C+92|0]|o[C+93|0]<<8|o[C+94|0]<<16|o[C+95|0]<<24),i[B+200>>2]=D&f^h^n^y^e,i[B+196>>2]=t&r^c^w^_^a,i[B+192>>2]=Q&E^S^N^k^p,bg(g+F|0,0,16-g|0),Ng(A,F,g),g=i[B+192>>2],F=i[B+196>>2],S=i[B+200>>2],N=i[B+204>>2],A=i[C+92>>2],i[B+232>>2]=i[C+88>>2],i[B+236>>2]=A,A=i[C+84>>2],i[B+224>>2]=i[C+80>>2],i[B+228>>2]=A,A=i[C+76>>2],i[B+184>>2]=i[C+72>>2],i[B+188>>2]=A,A=i[I+4>>2],i[B+176>>2]=i[I>>2],i[B+180>>2]=A,A=i[C+92>>2],i[B+168>>2]=i[C+88>>2],i[B+172>>2]=A,A=i[C+84>>2],i[B+160>>2]=i[C+80>>2],i[B+164>>2]=A,AI(A=B+208|0,B+176|0,B+160|0),k=i[B+220>>2],i[C+88>>2]=i[B+216>>2],i[C+92>>2]=k,k=i[B+212>>2],i[C+80>>2]=i[B+208>>2],i[C+84>>2]=k,k=i[C+60>>2],i[B+152>>2]=i[C+56>>2],i[B+156>>2]=k,k=i[C+52>>2],i[B+144>>2]=i[C+48>>2],i[B+148>>2]=k,k=i[C+76>>2],i[B+136>>2]=i[C+72>>2],i[B+140>>2]=k,k=i[I+4>>2],i[B+128>>2]=i[I>>2],i[B+132>>2]=k,AI(A,B+144|0,B+128|0),k=i[B+220>>2],i[C+72>>2]=i[B+216>>2],i[C+76>>2]=k,k=i[B+212>>2],i[I>>2]=i[B+208>>2],i[I+4>>2]=k,I=i[C+44>>2],i[B+120>>2]=i[C+40>>2],i[B+124>>2]=I,I=i[C+36>>2],i[B+112>>2]=i[C+32>>2],i[B+116>>2]=I,I=i[C+60>>2],i[B+104>>2]=i[C+56>>2],i[B+108>>2]=I,I=i[C+52>>2],i[B+96>>2]=i[C+48>>2],i[B+100>>2]=I,AI(A,B+112|0,B+96|0),I=i[B+220>>2],i[C+56>>2]=i[B+216>>2],i[C+60>>2]=I,I=i[B+212>>2],i[C+48>>2]=i[B+208>>2],i[C+52>>2]=I,I=i[C+28>>2],i[B+88>>2]=i[C+24>>2],i[B+92>>2]=I,I=i[C+20>>2],i[B+80>>2]=i[C+16>>2],i[B+84>>2]=I,I=i[C+44>>2],i[B+72>>2]=i[C+40>>2],i[B+76>>2]=I,I=i[C+36>>2],i[B+64>>2]=i[C+32>>2],i[B+68>>2]=I,AI(A,B+80|0,B- -64|0),I=i[B+220>>2],i[C+40>>2]=i[B+216>>2],i[C+44>>2]=I,I=i[B+212>>2],i[C+32>>2]=i[B+208>>2],i[C+36>>2]=I,I=i[C+12>>2],i[B+56>>2]=i[C+8>>2],i[B+60>>2]=I,I=i[C+4>>2],i[B+48>>2]=i[C>>2],i[B+52>>2]=I,I=i[C+28>>2],i[B+40>>2]=i[C+24>>2],i[B+44>>2]=I,I=i[C+20>>2],i[B+32>>2]=i[C+16>>2],i[B+36>>2]=I,AI(A,B+48|0,B+32|0),I=i[B+220>>2],i[C+24>>2]=i[B+216>>2],i[C+28>>2]=I,I=i[B+212>>2],i[C+16>>2]=i[B+208>>2],i[C+20>>2]=I,I=i[B+236>>2],i[B+24>>2]=i[B+232>>2],i[B+28>>2]=I,I=i[B+228>>2],i[B+16>>2]=i[B+224>>2],i[B+20>>2]=I,I=i[C+12>>2],i[B+8>>2]=i[C+8>>2],i[B+12>>2]=I,I=i[C+4>>2],i[B>>2]=i[C>>2],i[B+4>>2]=I,AI(A,B+16|0,B),A=i[B+208>>2],I=i[B+212>>2],k=i[B+216>>2],i[C+12>>2]=N^i[B+220>>2],i[C+8>>2]=k^S,i[C+4>>2]=I^F,i[C>>2]=A^g,s=B+240|0}function T(A,I,g,B,Q){A|=0,I|=0,g|=0,B|=0;var i=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,p=0,w=0,n=0,k=0;if(a=1886610805^(B=o[0|(Q|=0)]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24),E=1936682341^(i=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24),c=1852142177^B,_=1819895653^i,i=1852075885^(B=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24),Q=1685025377^(r=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24),t=2037671283^B,r^=1952801890,(0|(h=(I+g|0)-(y=7&g)|0))!=(0|I))for(;t=c=c+(B=t^(w=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24))|0,_=_+(r^=n=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24)|0,_=B>>>0>c>>>0?_+1|0:_,E=Q+E|0,E=(s=a)>>>0>(a=i+a|0)>>>0?E+1|0:E,Q=c+(i=UI(i,Q,13)^a)|0,c=_+(e=f^E)|0,e=UI(i,e,17)^Q,D=UI(e,c=(s=Q>>>0>>0?c+1|0:c)^f,13),p=f,B=UI(B,r,16),i=_^f,_=B^t,a=UI(a,E,32),t=c,c=f+i|0,t=1+(a=t+(E=(B=_+a|0)>>>0>>0?c+1|0:c)|0)|0,c=a,c=(a=B+e|0)>>>0>>0?t:c,D=UI(t=a^D,r=c^p,17),p=f,i=UI(_,i,21),E^=f,k=B^i,Q=UI(Q,s,32),i=f+E|0,Q=r+(s=(B=k+Q|0)>>>0>>0?i+1|0:i)|0,i=(_=B+t|0)^D,Q=(e=_>>>0>>0?Q+1|0:Q)^p,E=UI(k,E,16),r=t=s^f,E=UI(B^=E,t,21),s=f,t=(B=(a=UI(a,c,32))+B|0)^E,c=f+r|0,r=(E=B>>>0>>0?c+1|0:c)^s,c=UI(_,e,32),_=f,a=B^w,E^=n,(0|h)!=(0|(I=I+8|0)););switch(g<<=24,B=0,y-1|0){case 6:g|=o[I+6|0]<<16;case 5:g|=o[I+5|0]<<8;case 4:g|=o[I+4|0];case 3:e=(B=o[I+3|0])>>>8|0,B<<=24,g|=e;case 2:B|=(e=o[I+2|0])<<16,g|=y=e>>>16|0;case 1:B|=(e=o[I+1|0])<<8,g|=y=e>>>24|0;case 0:B=o[0|I]|B}return r=UI(I=B^t,t=g^r,16),_=_+t|0,c=(I=I+c|0)>>>0>>0?_+1|0:_,r=UI(_=I^r,t=c^f,21),e=f,s=1+(E=Q+E|0)|0,y=E,y=a=a>>>0>(E=i+a|0)>>>0?s:y,h=UI(E,a,32),t=f+t|0,e=UI(_=r^(a=_+h|0),r=e^(t=a>>>0>>0?t+1|0:t),16),h=f,Q=UI(i,Q,13)^E,i=(i=c)+(c=f^y)|0,y=UI(I=I+Q|0,E=I>>>0>>0?i+1|0:i,32),r=f+r|0,y=UI(_=e^(i=_+y|0),e=(r=i>>>0>>0?r+1|0:r)^h,21),h=f,I=a+(Q=c=UI(Q,c,17)^I)|0,a=(E^=f)+t|0,t=Q=I>>>0>>0?a+1|0:a,s=y,a=_+(y=UI(I,Q,32))|0,_=f+e|0,y=UI(Q=s^a,e=(_=a>>>0>>0?_+1|0:_)^h,16),h=f,s=i,E=UI(c,E,13)^I,c=(t^=f)+r|0,r=i=(I=s+(i=E)|0)>>>0>>0?c+1|0:c,i=UI(I,i,32),c=e+f|0,e=(s=Q)>>>0>(Q=Q+(255^i)|0)>>>0?c+1|0:c,y=UI(c=Q^y,i=h^e,21),h=f,E=UI(E,t,17)^I,g=(t=r^f)+(g^_)|0,_=g=(I=E+(B^=a)|0)>>>0>>0?g+1|0:g,g=UI(I,g,32),B=i+f|0,c=UI(a=(g=g+c|0)^y,B=(i=g>>>0>>0?B+1|0:B)^h,16),r=f,E=UI(E,t,13)^I,t=e+(_^=f)|0,t=Q=(I=Q+E|0)>>>0>>0?t+1|0:t,Q=UI(I,Q,32),y=r,s=1+(B=B+f|0)|0,r=B,r=(B=Q+a|0)>>>0>>0?s:r,c=UI(a=B^c,Q=y^r,21),e=f,E=UI(E,_,17),s=1+(i=i+(_=t^f)|0)|0,t=i,E=I=(y=g)>>>0>(g=g+(i=I^E)|0)>>>0?s:t,I=UI(g,I,32),Q=Q+f|0,t=(I=I+a|0)>>>0>>0?Q+1|0:Q,c=UI(a=I^c,Q=t^e,16),e=f,i=UI(i,_,13),_=r+(E^=f)|0,_=g=(r=B)>>>0>(B=B+(i^=g)|0)>>>0?_+1|0:_,g=UI(B,g,32),Q=Q+f|0,r=(g=g+a|0)>>>0>>0?Q+1|0:Q,c=UI(a=g^c,Q=r^e,21),e=f,i=UI(i,E,17),y=1+(_=t+(E=_^f)|0)|0,t=_,I=UI(B=I+(_=B^i)|0,i=B>>>0>>0?y:t,32),Q=Q+f|0,t=(I=I+a|0)>>>0>>0?Q+1|0:Q,c=UI(a=I^c,Q=t^e,16),e=f,E=UI(_,E,13),_=r+(i^=f)|0,_=g=(B=g+(E^=B)|0)>>>0>>0?_+1|0:_,g=UI(B,g,32),Q=Q+f|0,a=UI((g=g+a|0)^c,(Q=g>>>0>>0?Q+1|0:Q)^e,21),c=f,B=UI(E,i,17)^B,E=UI(B,i=_^f,13),i=i+t|0,I=f^(I>>>0>(B=I+B|0)>>>0?i+1:i),a=UI(B^=E,I,17)^a,i=f^c,_=1+(I=I+Q|0)|0,Q=I,I=UI(I=g+B|0,g=g>>>0>I>>>0?_:Q,32)^a^I,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,I=g^f^i,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,0}function $(A,I){var g,C,B,Q,E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,L=0;s=g=s-624|0,R(a=g+480|0,I),b(a,1632,a),c=i[g+516>>2],i[g+276>>2]=c,t=i[g+512>>2],i[g+272>>2]=t,r=i[g+508>>2],i[g+268>>2]=r,e=i[g+504>>2],i[g+264>>2]=e,y=i[g+500>>2],i[g+260>>2]=y,h=i[g+496>>2],i[g+256>>2]=h,D=i[g+492>>2],i[g+252>>2]=D,f=i[g+488>>2],i[g+248>>2]=f,p=i[g+484>>2],i[g+244>>2]=p,n=i[g+480>>2],i[g+240>>2]=n+1,b(_=g+240|0,_,33968),i[g+468>>2]=c-12055116,i[g+464>>2]=t-18696448,i[g+460>>2]=r-3247719,i[g+456>>2]=e-6275908,i[g+452>>2]=y-8787816,i[g+448>>2]=h+114729,i[g+444>>2]=D+6949391,i[g+440>>2]=f-15372611,i[g+436>>2]=p+13857413,i[g+432>>2]=n-10913610,b(w=g+192|0,a,1584),i[g+228>>2]=0-i[g+228>>2],i[g+224>>2]=0-i[g+224>>2],i[g+220>>2]=0-i[g+220>>2],i[g+216>>2]=0-i[g+216>>2],i[g+212>>2]=0-i[g+212>>2],i[g+208>>2]=0-i[g+208>>2],i[g+204>>2]=0-i[g+204>>2],i[g+200>>2]=0-i[g+200>>2],i[g+196>>2]=0-i[g+196>>2],i[g+192>>2]=~i[g+192>>2],b(w,w,g+432|0),a=GA(C=g+384|0,_,w),b(_=g+336|0,C,I),QI(B=g+576|0,_),E=o[g+576|0],Y=i[g+420>>2],_=i[g+372>>2],J=i[g+416>>2],k=i[g+368>>2],d=i[g+412>>2],F=i[g+364>>2],m=i[g+408>>2],S=i[g+360>>2],l=i[g+404>>2],N=i[g+356>>2],u=i[g+400>>2],G=i[g+352>>2],x=i[g+396>>2],M=i[g+348>>2],v=i[g+392>>2],K=i[g+344>>2],L=i[g+388>>2],U=i[g+340>>2],Q=i[g+384>>2],H=i[g+336>>2],I=a-1|0,i[g+612>>2]=I&c,i[g+608>>2]=I&t,i[g+604>>2]=I&r,i[g+600>>2]=I&e,i[g+596>>2]=I&y,i[g+592>>2]=I&h,i[g+588>>2]=I&D,i[g+584>>2]=I&f,i[g+580>>2]=I&p,i[g+576>>2]=n|0-a,H=I&(0-(H^(a=0-(1&E)|0)&(H^0-H))^Q)^Q,i[g+384>>2]=H,U=L^I&(L^0-(U^a&(U^0-U))),i[g+388>>2]=U,K=v^I&(v^0-(K^a&(K^0-K))),i[g+392>>2]=K,M=x^I&(x^0-(M^a&(M^0-M))),i[g+396>>2]=M,G=u^I&(u^0-(G^a&(G^0-G))),i[g+400>>2]=G,N=l^I&(l^0-(N^a&(N^0-N))),i[g+404>>2]=N,S=m^I&(m^0-(S^a&(S^0-S))),i[g+408>>2]=S,F=d^I&(d^0-(F^a&(F^0-F))),i[g+412>>2]=F,k=J^I&(J^0-(k^a&(k^0-k))),i[g+416>>2]=k,a=Y^I&(Y^0-(_^a&(_^0-_))),i[g+420>>2]=a,i[g+564>>2]=c,i[g+560>>2]=t,i[g+556>>2]=r,i[g+552>>2]=e,i[g+548>>2]=y,i[g+544>>2]=h,i[g+540>>2]=D,i[g+536>>2]=f,i[g+532>>2]=p,i[g+528>>2]=n-1,b(I=g+528|0,I,B),b(I,I,34016),c=i[g+192>>2],t=i[g+528>>2],r=i[g+196>>2],e=i[g+532>>2],y=i[g+200>>2],h=i[g+536>>2],D=i[g+204>>2],f=i[g+540>>2],p=i[g+208>>2],n=i[g+544>>2],_=i[g+212>>2],Y=i[g+548>>2],J=i[g+216>>2],d=i[g+552>>2],m=i[g+220>>2],l=i[g+556>>2],u=i[g+224>>2],x=i[g+560>>2],v=i[g+228>>2],L=i[g+564>>2],i[g+180>>2]=a<<1,i[g+176>>2]=k<<1,i[g+172>>2]=F<<1,i[g+168>>2]=S<<1,i[g+164>>2]=N<<1,i[g+160>>2]=G<<1,i[g+156>>2]=M<<1,i[g+152>>2]=K<<1,i[g+148>>2]=U<<1,i[g+144>>2]=H<<1,i[g+564>>2]=L-v,i[g+560>>2]=x-u,i[g+556>>2]=l-m,i[g+552>>2]=d-J,i[g+548>>2]=Y-_,i[g+544>>2]=n-p,i[g+540>>2]=f-D,i[g+536>>2]=h-y,i[g+532>>2]=e-r,i[g+528>>2]=t-c,b(a=g+144|0,a,w),b(w=g+96|0,I,34064),R(g+288|0,C),I=i[g+324>>2],i[g+84>>2]=0-I,c=i[g+320>>2],i[g+80>>2]=0-c,t=i[g+316>>2],i[g+76>>2]=0-t,r=i[g+312>>2],i[g+72>>2]=0-r,e=i[g+308>>2],i[g+68>>2]=0-e,y=i[g+304>>2],i[g+64>>2]=0-y,h=i[g+300>>2],i[g+60>>2]=0-h,D=i[g+296>>2],i[g+56>>2]=0-D,f=i[g+292>>2],i[g+52>>2]=0-f,p=i[g+288>>2],i[g+48>>2]=1-p,i[g+36>>2]=I,i[g+32>>2]=c,i[g+28>>2]=t,i[g+24>>2]=r,i[g+20>>2]=e,i[g+16>>2]=y,i[g+12>>2]=h,i[g+8>>2]=D,i[g+4>>2]=f,i[g>>2]=p+1,b(A,a,g),b(A+40|0,I=g+48|0,w),b(A+80|0,w,g),b(A+120|0,a,I),s=g+624|0}function AA(A,I,g){var B,E=0,a=0,_=0,c=0,t=0;s=B=s+-64|0;A:{if((g-65&255)>>>0>191){if(a=-1,!(o[A+80|0]|o[A+81|0]<<8|o[A+82|0]<<16|o[A+83|0]<<24|o[A+84|0]|o[A+85|0]<<8|o[A+86|0]<<16|o[A+87|0]<<24)){if((_=o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)>>>0>=129){if(c=E=o[A+68|0]|o[A+69|0]<<8|o[A+70|0]<<16|o[A+71|0]<<24,E=(_=128+(a=o[A+64|0]|o[A+65|0]<<8|o[A+66|0]<<16|o[A+67|0]<<24)|0)>>>0<128?E+1|0:E,C[A+64|0]=_,C[A+65|0]=_>>>8,C[A+66|0]=_>>>16,C[A+67|0]=_>>>24,C[A+68|0]=E,C[A+69|0]=E>>>8,C[A+70|0]=E>>>16,C[A+71|0]=E>>>24,E=o[A+76|0]|o[A+77|0]<<8|o[A+78|0]<<16|o[A+79|0]<<24,E=(t=a=-1==(0|c)&a>>>0>4294967167)>>>0>(a=a+(o[A+72|0]|o[A+73|0]<<8|o[A+74|0]<<16|o[A+75|0]<<24)|0)>>>0?E+1|0:E,C[A+72|0]=a,C[A+73|0]=a>>>8,C[A+74|0]=a>>>16,C[A+75|0]=a>>>24,C[A+76|0]=E,C[A+77|0]=E>>>8,C[A+78|0]=E>>>16,C[A+79|0]=E>>>24,p(A,E=A+96|0),a=(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)-128|0,C[A+352|0]=a,C[A+353|0]=a>>>8,C[A+354|0]=a>>>16,C[A+355|0]=a>>>24,a>>>0>=129)break A;Ng(E,A+224|0,a),_=o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24}a=t=o[A+68|0]|o[A+69|0]<<8|o[A+70|0]<<16|o[A+71|0]<<24,a=(c=_+(E=o[A+64|0]|o[A+65|0]<<8|o[A+66|0]<<16|o[A+67|0]<<24)|0)>>>0<_>>>0?a+1|0:a,C[A+64|0]=c,C[A+65|0]=c>>>8,C[A+66|0]=c>>>16,C[A+67|0]=c>>>24,C[A+68|0]=a,C[A+69|0]=a>>>8,C[A+70|0]=a>>>16,C[A+71|0]=a>>>24,a=(0|a)==(0|t)&E>>>0>c>>>0|a>>>0>>0,E=o[A+76|0]|o[A+77|0]<<8|o[A+78|0]<<16|o[A+79|0]<<24,E=(t=a)>>>0>(a=a+(o[A+72|0]|o[A+73|0]<<8|o[A+74|0]<<16|o[A+75|0]<<24)|0)>>>0?E+1|0:E,C[A+72|0]=a,C[A+73|0]=a>>>8,C[A+74|0]=a>>>16,C[A+75|0]=a>>>24,C[A+76|0]=E,C[A+77|0]=E>>>8,C[A+78|0]=E>>>16,C[A+79|0]=E>>>24,o[A+356|0]&&(C[A+88|0]=255,C[A+89|0]=255,C[A+90|0]=255,C[A+91|0]=255,C[A+92|0]=255,C[A+93|0]=255,C[A+94|0]=255,C[A+95|0]=255),C[A+80|0]=255,C[A+81|0]=255,C[A+82|0]=255,C[A+83|0]=255,C[A+84|0]=255,C[A+85|0]=255,C[A+86|0]=255,C[A+87|0]=255,bg((a=A+96|0)+_|0,0,256-_|0),p(A,a),E=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,i[B>>2]=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i[B+4>>2]=E,E=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,i[B+8>>2]=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,i[B+12>>2]=E,E=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,i[B+16>>2]=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,i[B+20>>2]=E,E=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,i[B+24>>2]=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,i[B+28>>2]=E,E=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,i[B+32>>2]=o[A+32|0]|o[A+33|0]<<8|o[A+34|0]<<16|o[A+35|0]<<24,i[B+36>>2]=E,E=o[A+44|0]|o[A+45|0]<<8|o[A+46|0]<<16|o[A+47|0]<<24,i[B+40>>2]=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24,i[B+44>>2]=E,E=o[A+52|0]|o[A+53|0]<<8|o[A+54|0]<<16|o[A+55|0]<<24,i[B+48>>2]=o[A+48|0]|o[A+49|0]<<8|o[A+50|0]<<16|o[A+51|0]<<24,i[B+52>>2]=E,E=o[A+60|0]|o[A+61|0]<<8|o[A+62|0]<<16|o[A+63|0]<<24,i[B+56>>2]=o[A+56|0]|o[A+57|0]<<8|o[A+58|0]<<16|o[A+59|0]<<24,i[B+60>>2]=E,Ng(I,B,g),XC(A,64),XC(a,256),a=0}return s=B- -64|0,a}rC(),Q()}r(1386,1234,306,1142),Q()}function IA(A,I,g){A|=0,I|=0,g|=0;var B,Q,E,a=0,_=0;s=B=s-192|0,i[B+144>>2]=0,i[B+148>>2]=0,i[B+152>>2]=0,i[B+156>>2]=0,i[B+104>>2]=0,i[B+108>>2]=0,i[B+112>>2]=0,i[B+116>>2]=0,i[B+120>>2]=0,i[B+124>>2]=0,a=i[8799],i[B+168>>2]=i[8798],i[B+172>>2]=a,a=i[8801],i[B+176>>2]=i[8800],i[B+180>>2]=a,a=i[8803],i[B+184>>2]=i[8802],i[B+188>>2]=a,i[B+128>>2]=0,i[B+132>>2]=0,i[B+136>>2]=0,i[B+140>>2]=0,i[B+96>>2]=0,i[B+100>>2]=0,a=i[8797],i[B+160>>2]=i[8796],i[B+164>>2]=a,a=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,i[B+80>>2]=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,i[B+84>>2]=a,a=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,i[B+88>>2]=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,i[B+92>>2]=a,a=o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24,i[B+64>>2]=o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24,i[B+68>>2]=a,a=o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24,i[B+72>>2]=o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24,i[B+76>>2]=a,Eg(g=B+128|0,a=B- -64|0),S(g),_=i[B+156>>2],i[B+24>>2]=i[B+152>>2],i[B+28>>2]=_,_=i[B+148>>2],i[B+16>>2]=i[B+144>>2],i[B+20>>2]=_,_=i[B+140>>2],i[B+8>>2]=i[B+136>>2],i[B+12>>2]=_,_=i[B+132>>2],i[B>>2]=i[B+128>>2],i[B+4>>2]=_,i[B+120>>2]=0,i[B+124>>2]=0,i[B+112>>2]=0,i[B+116>>2]=0,i[B+104>>2]=0,i[B+108>>2]=0,i[B+96>>2]=0,i[B+100>>2]=0,_=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[B+80>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[B+84>>2]=_,_=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[B+88>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[B+92>>2]=_,_=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,Q=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,E=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[B+56>>2]=0,i[B+60>>2]=0,i[B+48>>2]=0,i[B+52>>2]=0,i[B+40>>2]=0,i[B+44>>2]=0,i[B+64>>2]=E,i[B+68>>2]=I,i[B+72>>2]=_,i[B+76>>2]=Q,i[B+32>>2]=0,i[B+36>>2]=0,og(a,B),I=i[B+124>>2],i[B+184>>2]=i[B+120>>2],i[B+188>>2]=I,I=i[B+116>>2],i[B+176>>2]=i[B+112>>2],i[B+180>>2]=I,I=i[B+108>>2],i[B+168>>2]=i[B+104>>2],i[B+172>>2]=I,I=i[B+100>>2],i[B+160>>2]=i[B+96>>2],i[B+164>>2]=I,I=i[B+92>>2],i[B+152>>2]=i[B+88>>2],i[B+156>>2]=I,I=i[B+84>>2],i[B+144>>2]=i[B+80>>2],i[B+148>>2]=I,I=i[B+76>>2],i[B+136>>2]=i[B+72>>2],i[B+140>>2]=I,I=i[B+68>>2],i[B+128>>2]=i[B+64>>2],i[B+132>>2]=I,S(g),I=i[B+156>>2],a=i[B+152>>2],C[A+24|0]=a,C[A+25|0]=a>>>8,C[A+26|0]=a>>>16,C[A+27|0]=a>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[B+148>>2],a=i[B+144>>2],C[A+16|0]=a,C[A+17|0]=a>>>8,C[A+18|0]=a>>>16,C[A+19|0]=a>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[B+140>>2],a=i[B+136>>2],C[A+8|0]=a,C[A+9|0]=a>>>8,C[A+10|0]=a>>>16,C[A+11|0]=a>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[B+132>>2],a=i[B+128>>2],C[0|A]=a,C[A+1|0]=a>>>8,C[A+2|0]=a>>>16,C[A+3|0]=a>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,XC(g,64),s=B+192|0}function gA(A){var I,g,B,Q,o,E,_,c,t,r,e=0,y=0,h=0,D=0,f=0;for(s=I=s-2048|0,$A(D=I+640|0,A),e=i[A+36>>2],i[I+352>>2]=i[A+32>>2],i[I+356>>2]=e,e=i[A+28>>2],i[I+344>>2]=i[A+24>>2],i[I+348>>2]=e,e=i[A+20>>2],i[I+336>>2]=i[A+16>>2],i[I+340>>2]=e,e=i[A+12>>2],i[I+328>>2]=i[A+8>>2],i[I+332>>2]=e,e=i[A+4>>2],i[I+320>>2]=i[A>>2],i[I+324>>2]=e,e=i[A+52>>2],i[I+368>>2]=i[A+48>>2],i[I+372>>2]=e,e=i[A+60>>2],i[I+376>>2]=i[A+56>>2],i[I+380>>2]=e,e=i[4+(h=A- -64|0)>>2],i[I+384>>2]=i[h>>2],i[I+388>>2]=e,e=i[A+76>>2],i[I+392>>2]=i[A+72>>2],i[I+396>>2]=e,e=i[A+44>>2],i[I+360>>2]=i[A+40>>2],i[I+364>>2]=e,e=i[A+92>>2],i[I+408>>2]=i[A+88>>2],i[I+412>>2]=e,e=i[A+100>>2],i[I+416>>2]=i[A+96>>2],i[I+420>>2]=e,e=i[A+108>>2],i[I+424>>2]=i[A+104>>2],i[I+428>>2]=e,e=i[A+116>>2],i[I+432>>2]=i[A+112>>2],i[I+436>>2]=e,e=i[A+84>>2],i[I+400>>2]=i[A+80>>2],i[I+404>>2]=e,KA(y=I+480|0,h=I+320|0),b(e=I+160|0,y,g=I+600|0),b(I+200|0,B=I+520|0,Q=I+560|0),b(I+240|0,Q,g),b(I+280|0,y,B),sA(y,e,D),b(h,y,g),b(_=I+360|0,B,Q),b(c=I+400|0,Q,g),b(t=I+440|0,y,B),$A(A=I+800|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(A=I+960|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(A=I+1120|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(A=I+1280|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(A=I+1440|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(A=I+1600|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(I+1760|0,h),i[I+32>>2]=0,i[I+36>>2]=0,i[I+24>>2]=0,i[I+28>>2]=0,i[I+16>>2]=0,i[I+20>>2]=0,i[I+8>>2]=0,i[I+12>>2]=0,i[I+52>>2]=0,i[I+56>>2]=0,i[I+60>>2]=0,i[I+64>>2]=0,i[I+68>>2]=0,i[I+72>>2]=0,i[I+76>>2]=0,i[I+80>>2]=1,i[I>>2]=0,i[I+4>>2]=0,i[I+44>>2]=0,i[I+48>>2]=0,i[I+40>>2]=1,bg(I+84|0,0,76),r=I+120|0,o=I+2008|0,E=I+1968|0,D=I+80|0,h=I+40|0,A=252;e=i[I+36>>2],i[(y=I+1960|0)>>2]=i[I+32>>2],i[y+4>>2]=e,e=i[I+28>>2],i[(y=I+1952|0)>>2]=i[I+24>>2],i[y+4>>2]=e,e=i[I+20>>2],i[(y=I+1944|0)>>2]=i[I+16>>2],i[y+4>>2]=e,e=i[I+12>>2],i[(y=I+1936|0)>>2]=i[I+8>>2],i[y+4>>2]=e,e=i[I+4>>2],i[I+1928>>2]=i[I>>2],i[I+1932>>2]=e,e=i[h+36>>2],i[E+32>>2]=i[h+32>>2],i[E+36>>2]=e,e=i[h+28>>2],i[E+24>>2]=i[h+24>>2],i[E+28>>2]=e,e=i[h+20>>2],i[E+16>>2]=i[h+16>>2],i[E+20>>2]=e,e=i[h+12>>2],i[E+8>>2]=i[h+8>>2],i[E+12>>2]=e,e=i[h+4>>2],i[E>>2]=i[h>>2],i[E+4>>2]=e,e=i[D+36>>2],i[o+32>>2]=i[D+32>>2],i[o+36>>2]=e,e=i[D+28>>2],i[o+24>>2]=i[D+24>>2],i[o+28>>2]=e,e=i[D+20>>2],i[o+16>>2]=i[D+16>>2],i[o+20>>2]=e,e=i[D+12>>2],i[o+8>>2]=i[D+8>>2],i[o+12>>2]=e,e=i[D+4>>2],i[o>>2]=i[D>>2],i[o+4>>2]=e,e=A,f=C[A+33712|0],KA(y=I+480|0,I+1928|0),(0|f)>0?(b(A=I+320|0,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),sA(y,A,(I+640|0)+a((254&f)>>>1|0,160)|0)):(0|f)>=0||(b(A=I+320|0,y=I+480|0,g),b(_,B,Q),b(c,Q,g),b(t,y,B),hA(y,A,(I+640|0)+a((0-f&254)>>>1|0,160)|0)),b(I,A=I+480|0,g),b(h,B,Q),b(D,Q,g),b(r,A,B),A=e-1|0,e;);return QI(A=I+640|0,I),A=GI(A,32),s=I+2048|0,A}function CA(A,I,g,B,Q){var i,E,a,_,c,t,r,e,y,s,h,D,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0;if(B?(d=o[B+12|0]|o[B+13|0]<<8|o[B+14|0]<<16|o[B+15|0]<<24,l=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,m=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,u=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24):(d=1797285236,m=1634760805,l=2036477234,u=857760878),B=i=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,N=E=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,U=a=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,w=d,S=_=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,G=l,b=c=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,M=t=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,n=r=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,I=e=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,K=u,f=y=o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24,p=s=o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24,k=h=o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24,g=D=o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24,F=m,(0|Q)>0)for(;H=Lg(g+K|0,7)^b,x=Lg(H+K|0,9)^N,Y=Lg(B+F|0,7)^f,v=Lg(Y+F|0,9)^M,R=Lg(Y+v|0,13)^B,J=Lg(w+S|0,7)^p,n=Lg(J+w|0,9)^n,p=Lg(n+J|0,13)^S,w=Lg(n+p|0,18)^w,f=Lg(I+G|0,7)^U,B=R^Lg(w+f|0,7),N=Lg(B+w|0,9)^x,U=Lg(B+N|0,13)^f,w=Lg(N+U|0,18)^w,k=Lg(f+G|0,9)^k,f=Lg(k+f|0,13)^I,I=Lg(f+k|0,18)^G,S=Lg(I+H|0,7)^p,M=Lg(S+I|0,9)^v,b=Lg(S+M|0,13)^H,G=Lg(M+b|0,18)^I,g=Lg(H+x|0,13)^g,p=Lg(g+x|0,18)^K,I=Lg(p+Y|0,7)^f,n=Lg(I+p|0,9)^n,f=Lg(I+n|0,13)^Y,K=Lg(n+f|0,18)^p,F=Lg(v+R|0,18)^F,g=Lg(F+J|0,7)^g,k=Lg(g+F|0,9)^k,p=Lg(g+k|0,13)^J,F=Lg(k+p|0,18)^F,(0|(L=L+2|0))<(0|Q););Q=w+d|0,C[A+60|0]=Q,C[A+61|0]=Q>>>8,C[A+62|0]=Q>>>16,C[A+63|0]=Q>>>24,Q=U+a|0,C[A+56|0]=Q,C[A+57|0]=Q>>>8,C[A+58|0]=Q>>>16,C[A+59|0]=Q>>>24,Q=N+E|0,C[A+52|0]=Q,C[A+53|0]=Q>>>8,C[A+54|0]=Q>>>16,C[A+55|0]=Q>>>24,B=B+i|0,C[A+48|0]=B,C[A+49|0]=B>>>8,C[A+50|0]=B>>>16,C[A+51|0]=B>>>24,B=S+_|0,C[A+44|0]=B,C[A+45|0]=B>>>8,C[A+46|0]=B>>>16,C[A+47|0]=B>>>24,B=G+l|0,C[A+40|0]=B,C[A+41|0]=B>>>8,C[A+42|0]=B>>>16,C[A+43|0]=B>>>24,B=b+c|0,C[A+36|0]=B,C[A+37|0]=B>>>8,C[A+38|0]=B>>>16,C[A+39|0]=B>>>24,B=M+t|0,C[A+32|0]=B,C[A+33|0]=B>>>8,C[A+34|0]=B>>>16,C[A+35|0]=B>>>24,B=n+r|0,C[A+28|0]=B,C[A+29|0]=B>>>8,C[A+30|0]=B>>>16,C[A+31|0]=B>>>24,I=I+e|0,C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,I=K+u|0,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=f+y|0,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,I=p+s|0,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=k+h|0,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=g+D|0,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=F+m|0,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24}function BA(A){var I=0,g=0,C=0,B=0,Q=0,o=0,a=0,c=0,t=0;A:if(A|=0){Q=(C=A-8|0)+(A=-8&(I=i[A-4>>2]))|0;I:if(!(1&I)){if(!(2&I))break A;if((C=C-(I=i[C>>2])|0)>>>0>2],I>>>0<=255){if((0|(B=i[C+8>>2]))!=(0|g))break B;c=37620,t=i[9405]&Lg(-2,I>>>3|0),i[c>>2]=t;break I}if(a=i[C+24>>2],(0|g)!=(0|C)){I=i[C+8>>2],i[I+12>>2]=g,i[g+8>>2]=I;break g}if(B=i[C+20>>2])I=C+20|0;else{if(!(B=i[C+16>>2]))break C;I=C+16|0}for(;o=I,I=(g=B)+20|0,(B=i[g+20>>2])||(I=g+16|0,B=i[g+16>>2]););i[o>>2]=0;break g}if(3&~(I=i[Q+4>>2]))break I;return i[9407]=A,i[Q+4>>2]=-2&I,i[C+4>>2]=1|A,void(i[Q>>2]=A)}i[B+12>>2]=g,i[g+8>>2]=B;break I}g=0}if(a){I=i[C+28>>2];g:{if(i[(B=37924+(I<<2)|0)>>2]==(0|C)){if(i[B>>2]=g,g)break g;c=37624,t=i[9406]&Lg(-2,I),i[c>>2]=t;break I}if(i[a+(i[a+16>>2]==(0|C)?16:20)>>2]=g,!g)break I}i[g+24>>2]=a,(I=i[C+16>>2])&&(i[g+16>>2]=I,i[I+24>>2]=g),(I=i[C+20>>2])&&(i[g+20>>2]=I,i[I+24>>2]=g)}}if(!(C>>>0>=Q>>>0)&&1&(I=i[Q+4>>2])){I:{g:{C:{B:{if(!(2&I)){if((0|Q)==i[9411]){if(i[9411]=C,A=i[9408]+A|0,i[9408]=A,i[C+4>>2]=1|A,i[9410]!=(0|C))break A;return i[9407]=0,void(i[9410]=0)}if((0|Q)==i[9410])return i[9410]=C,A=i[9407]+A|0,i[9407]=A,i[C+4>>2]=1|A,void(i[A+C>>2]=A);if(A=(-8&I)+A|0,g=i[Q+12>>2],I>>>0<=255){if((0|(B=i[Q+8>>2]))==(0|g)){c=37620,t=i[9405]&Lg(-2,I>>>3|0),i[c>>2]=t;break g}i[B+12>>2]=g,i[g+8>>2]=B;break g}if(a=i[Q+24>>2],(0|g)!=(0|Q)){I=i[Q+8>>2],i[I+12>>2]=g,i[g+8>>2]=I;break C}if(B=i[Q+20>>2])I=Q+20|0;else{if(!(B=i[Q+16>>2]))break B;I=Q+16|0}for(;o=I,I=(g=B)+20|0,(B=i[g+20>>2])||(I=g+16|0,B=i[g+16>>2]););i[o>>2]=0;break C}i[Q+4>>2]=-2&I,i[C+4>>2]=1|A,i[A+C>>2]=A;break I}g=0}if(a){I=i[Q+28>>2];C:{if((0|Q)==i[(B=37924+(I<<2)|0)>>2]){if(i[B>>2]=g,g)break C;c=37624,t=i[9406]&Lg(-2,I),i[c>>2]=t;break g}if(i[a+((0|Q)==i[a+16>>2]?16:20)>>2]=g,!g)break g}i[g+24>>2]=a,(I=i[Q+16>>2])&&(i[g+16>>2]=I,i[I+24>>2]=g),(I=i[Q+20>>2])&&(i[g+20>>2]=I,i[I+24>>2]=g)}}if(i[C+4>>2]=1|A,i[A+C>>2]=A,i[9410]==(0|C))return void(i[9407]=A)}if(A>>>0<=255)return I=37660+(-8&A)|0,(B=i[9405])&(A=1<<(A>>>3))?A=i[I+8>>2]:(i[9405]=A|B,A=I),i[I+8>>2]=C,i[A+12>>2]=C,i[C+12>>2]=I,void(i[C+8>>2]=A);g=31,A>>>0<=16777215&&(g=62+((A>>>38-(I=_(A>>>8|0))&1)-(I<<1)|0)|0),i[C+28>>2]=g,i[C+16>>2]=0,i[C+20>>2]=0,o=37924+(g<<2)|0;I:{g:{if((I=i[9406])&(B=1<>>1|0):0),I=i[o>>2];;){if(B=I,(-8&i[I+4>>2])==(0|A))break g;if(I=g>>>29|0,g<<=1,!(I=i[(o=16+((4&I)+B|0)|0)>>2]))break}g=24,I=B}else i[9406]=I|B,g=24,I=o;B=C,Q=C,A=8;break I}I=i[B+8>>2],i[I+12>>2]=C,g=8,o=B+8|0,Q=0,A=24}i[o>>2]=C,i[g+C>>2]=I,i[C+12>>2]=B,i[A+C>>2]=Q,A=i[9413]-1|0,i[9413]=A||-1}}}function QA(A,I,g,C,B,E,a,_,c){var t=0,r=0,e=0,y=0,h=0,D=0,f=0,w=0;if(I-65>>>0<4294967232|a>>>0>64)A=-1;else{w=t=s,s=t=t-512&-64;A:{I:if(!(!(!(C|B)|g)|!A|((D=255&I)-65&255)>>>0<=191|!(!(I=255&a)||E)|I>>>0>=65)){if(I){if(!E)break I;_?(r=725511199^(o[_+8|0]|o[_+9|0]<<8|o[_+10|0]<<16|o[_+11|0]<<24),e=-1694144372^(o[_+12|0]|o[_+13|0]<<8|o[_+14|0]<<16|o[_+15|0]<<24),a=-1377402159^(o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24),_=1359893119^(o[_+4|0]|o[_+5|0]<<8|o[_+6|0]<<16|o[_+7|0]<<24)):(r=725511199,e=-1694144372,a=-1377402159,_=1359893119),c?(y=327033209^(o[c+8|0]|o[c+9|0]<<8|o[c+10|0]<<16|o[c+11|0]<<24),h=1541459225^(o[c+12|0]|o[c+13|0]<<8|o[c+14|0]<<16|o[c+15|0]<<24),f=-79577749^(o[0|c]|o[c+1|0]<<8|o[c+2|0]<<16|o[c+3|0]<<24),c=528734635^(o[c+4|0]|o[c+5|0]<<8|o[c+6|0]<<16|o[c+7|0]<<24)):(y=327033209,h=1541459225,f=-79577749,c=528734635),bg(t- -64|0,0,293),i[t+56>>2]=y,i[t+60>>2]=h,i[t+48>>2]=f,i[t+52>>2]=c,i[t+40>>2]=r,i[t+44>>2]=e,i[t+32>>2]=a,i[t+36>>2]=_,i[t+24>>2]=1595750129,i[t+28>>2]=-1521486534,i[t+16>>2]=-23791573,i[t+20>>2]=1013904242,i[t+8>>2]=-2067093701,i[t+12>>2]=-1150833019,i[t>>2]=-222443256^(I<<8|D),i[t+4>>2]=I>>>24^1779033703,bg((a=t+384|0)+I|0,0,128-I|0),Ng(a,E,I),Ng(t+96|0,a,128),i[t+352>>2]=128,XC(a,128),I=128}else _?(r=725511199^(o[_+8|0]|o[_+9|0]<<8|o[_+10|0]<<16|o[_+11|0]<<24),e=-1694144372^(o[_+12|0]|o[_+13|0]<<8|o[_+14|0]<<16|o[_+15|0]<<24),E=1359893119^(o[_+4|0]|o[_+5|0]<<8|o[_+6|0]<<16|o[_+7|0]<<24),I=-1377402159^(o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24)):(r=725511199,e=-1694144372,E=1359893119,I=-1377402159),c?(y=327033209^(o[c+8|0]|o[c+9|0]<<8|o[c+10|0]<<16|o[c+11|0]<<24),h=1541459225^(o[c+12|0]|o[c+13|0]<<8|o[c+14|0]<<16|o[c+15|0]<<24),_=528734635^(o[c+4|0]|o[c+5|0]<<8|o[c+6|0]<<16|o[c+7|0]<<24),a=-79577749^(o[0|c]|o[c+1|0]<<8|o[c+2|0]<<16|o[c+3|0]<<24)):(y=327033209,h=1541459225,_=528734635,a=-79577749),bg(t- -64|0,0,293),i[t+56>>2]=y,i[t+60>>2]=h,i[t+48>>2]=a,i[t+52>>2]=_,i[t+40>>2]=r,i[t+44>>2]=e,i[t+32>>2]=I,i[t+36>>2]=E,i[t+24>>2]=1595750129,i[t+28>>2]=-1521486534,i[t+16>>2]=-23791573,i[t+20>>2]=1013904242,i[t+8>>2]=-2067093701,i[t+12>>2]=-1150833019,i[t>>2]=-222443256^D,i[t+4>>2]=1779033703,I=0;g:if(C|B)for(c=t+224|0,_=t+96|0;;){if(a=I+_|0,!B&C>>>0<=(E=256-I|0)>>>0){Ng(a,g,C),i[t+352>>2]=C+i[t+352>>2];break g}if(Ng(a,g,E),i[t+352>>2]=E+i[t+352>>2],r=I=i[t+68>>2],I=(e=(a=i[t+64>>2])+128|0)>>>0<128?I+1|0:I,i[t+64>>2]=e,i[t+68>>2]=I,I=i[t+76>>2],I=(r=a=-1==(0|r)&a>>>0>4294967167)>>>0>(a=a+i[t+72>>2]|0)>>>0?I+1|0:I,i[t+72>>2]=a,i[t+76>>2]=I,p(t,_),Ng(_,c,128),I=i[t+352>>2]-128|0,i[t+352>>2]=I,g=g+E|0,!((B=B-(C>>>0>>0)|0)|(C=C-E|0)))break}AA(t,A,D),s=w;break A}rC(),Q()}A=0}return A}function iA(A,I,g,B,Q,E,_){var c,t,r=0,e=0,y=0;if(s=c=s+-64|0,t=K(32)){i[c+36>>2]=0,i[c+40>>2]=0,i[c+28>>2]=0,i[c+32>>2]=0,i[c+24>>2]=16,i[c+20>>2]=Q,i[c+16>>2]=B,i[c+12>>2]=g,i[c+8>>2]=32,i[c+4>>2]=t,i[c+60>>2]=0,i[c+56>>2]=1,i[c+52>>2]=1,i[c+48>>2]=I,i[c+44>>2]=A;A:if(A=q(c+4|0,_))XC(t,32);else{if(E){r=c+4|0,s=Q=s-32|0,A=-31;I:{g:{C:switch(_-1|0){case 1:A=o[1434]|o[1435]<<8|o[1436]<<16|o[1437]<<24,I=o[1430]|o[1431]<<8|o[1432]<<16|o[1433]<<24,C[0|E]=I,C[E+1|0]=I>>>8,C[E+2|0]=I>>>16,C[E+3|0]=I>>>24,C[E+4|0]=A,C[E+5|0]=A>>>8,C[E+6|0]=A>>>16,C[E+7|0]=A>>>24,A=o[1439]|o[1440]<<8|o[1441]<<16|o[1442]<<24,I=o[1435]|o[1436]<<8|o[1437]<<16|o[1438]<<24,C[E+5|0]=I,C[E+6|0]=I>>>8,C[E+7|0]=I>>>16,C[E+8|0]=I>>>24,C[E+9|0]=A,C[E+10|0]=A>>>8,C[E+11|0]=A>>>16,C[E+12|0]=A>>>24,g=-12,I=12;break g;case 0:break C;default:break I}A=o[1422]|o[1423]<<8|o[1424]<<16|o[1425]<<24,I=o[1418]|o[1419]<<8|o[1420]<<16|o[1421]<<24,C[0|E]=I,C[E+1|0]=I>>>8,C[E+2|0]=I>>>16,C[E+3|0]=I>>>24,C[E+4|0]=A,C[E+5|0]=A>>>8,C[E+6|0]=A>>>16,C[E+7|0]=A>>>24,A=o[1426]|o[1427]<<8|o[1428]<<16|o[1429]<<24,C[E+8|0]=A,C[E+9|0]=A>>>8,C[E+10|0]=A>>>16,C[E+11|0]=A>>>24,g=-11,I=11}if(!(A=nI(r)))if(C[Q+13|0]=0,C[Q+11|0]=49,C[Q+12|0]=57,(g=g+128|0)>>>0<=(A=RI(Q+11|0))>>>0)A=-31;else if(I=Ng(I+E|0,Q+11|0,A+1|0),(e=g-A|0)>>>0<4)A=-31;else{for(C[0|(_=A+I|0)]=36,C[_+1|0]=109,C[_+2|0]=61,C[_+3|0]=0,A=i[r+44>>2],I=10;g=I,B=(A>>>0)/10|0,C[0|(y=(I=I-1|0)+(Q+22|0)|0)]=A-a(B,10)|48,!(A>>>0<10)&&(A=B,I););if(Ng(A=Q+11|0,y,I=11-g|0),C[A+I|0]=0,(I=e-3|0)>>>0<=(A=RI(A))>>>0)A=-31;else if(g=Ng(_+3|0,Q+11|0,A+1|0),(e=I-A|0)>>>0<4)A=-31;else{for(C[0|(_=A+g|0)]=44,C[_+1|0]=116,C[_+2|0]=61,C[_+3|0]=0,A=i[r+40>>2],I=10;g=I,B=(A>>>0)/10|0,C[0|(y=(I=I-1|0)+(Q+22|0)|0)]=A-a(B,10)|48,!(A>>>0<10)&&(A=B,I););if(Ng(A=Q+11|0,y,I=11-g|0),C[A+I|0]=0,(I=e-3|0)>>>0<=(A=RI(A))>>>0)A=-31;else if(g=Ng(_+3|0,Q+11|0,A+1|0),(e=I-A|0)>>>0<4)A=-31;else{for(C[0|(_=A+g|0)]=44,C[_+1|0]=112,C[_+2|0]=61,C[_+3|0]=0,A=i[r+48>>2],I=10;g=I,B=(A>>>0)/10|0,C[0|(y=(I=I-1|0)+(Q+22|0)|0)]=A-a(B,10)|48,!(A>>>0<10)&&(A=B,I););Ng(A=Q+11|0,y,I=11-g|0),C[A+I|0]=0,(I=e-3|0)>>>0<=(A=RI(A))>>>0?A=-31:(g=Ng(_+3|0,Q+11|0,A+1|0),(B=I-A|0)>>>0<2?A=-31:(C[0|(A=A+g|0)]=36,C[A+1|0]=0,XA(I=A+1|0,g=B-1|0,i[r+16>>2],i[r+20>>2],3)?(A=-31,(B=(B=g)-(g=RI(I))|0)>>>0<2||(C[0|(A=I+g|0)]=36,C[A+1|0]=0,A=XA(A+1|0,B-1|0,i[r>>2],i[r+4>>2],3)?0:-31)):A=-31))}}}}if(s=Q+32|0,A){XC(t,32),XC(E,128),A=-31;break A}}XC(t,32),A=0}BA(t)}else A=-22;return s=c- -64|0,A}function oA(A,I){var g,C=0,B=0,Q=0,o=0,E=0,a=0,c=0;g=A+I|0;A:{I:if(!(1&(C=i[A+4>>2]))){if(!(2&C))break A;I=(C=i[A>>2])+I|0;g:{C:{B:{if((0|(A=A-C|0))!=i[9410]){if(B=i[A+12>>2],C>>>0<=255){if((0|(Q=i[A+8>>2]))!=(0|B))break B;a=37620,c=i[9405]&Lg(-2,C>>>3|0),i[a>>2]=c;break I}if(o=i[A+24>>2],(0|A)!=(0|B)){C=i[A+8>>2],i[C+12>>2]=B,i[B+8>>2]=C;break g}if(Q=i[A+20>>2])C=A+20|0;else{if(!(Q=i[A+16>>2]))break C;C=A+16|0}for(;E=C,C=(B=Q)+20|0,(Q=i[B+20>>2])||(C=B+16|0,Q=i[B+16>>2]););i[E>>2]=0;break g}if(3&~(C=i[g+4>>2]))break I;return i[9407]=I,i[g+4>>2]=-2&C,i[A+4>>2]=1|I,void(i[g>>2]=I)}i[Q+12>>2]=B,i[B+8>>2]=Q;break I}B=0}if(o){C=i[A+28>>2];g:{if(i[(Q=37924+(C<<2)|0)>>2]==(0|A)){if(i[Q>>2]=B,B)break g;a=37624,c=i[9406]&Lg(-2,C),i[a>>2]=c;break I}if(i[o+(i[o+16>>2]==(0|A)?16:20)>>2]=B,!B)break I}i[B+24>>2]=o,(C=i[A+16>>2])&&(i[B+16>>2]=C,i[C+24>>2]=B),(C=i[A+20>>2])&&(i[B+20>>2]=C,i[C+24>>2]=B)}}I:{g:{C:{B:{if(!(2&(C=i[g+4>>2]))){if(i[9411]==(0|g)){if(i[9411]=A,I=i[9408]+I|0,i[9408]=I,i[A+4>>2]=1|I,i[9410]!=(0|A))break A;return i[9407]=0,void(i[9410]=0)}if(i[9410]==(0|g))return i[9410]=A,I=i[9407]+I|0,i[9407]=I,i[A+4>>2]=1|I,void(i[A+I>>2]=I);if(I=(-8&C)+I|0,B=i[g+12>>2],C>>>0<=255){if((0|(Q=i[g+8>>2]))==(0|B)){a=37620,c=i[9405]&Lg(-2,C>>>3|0),i[a>>2]=c;break g}i[Q+12>>2]=B,i[B+8>>2]=Q;break g}if(o=i[g+24>>2],(0|B)!=(0|g)){C=i[g+8>>2],i[C+12>>2]=B,i[B+8>>2]=C;break C}if(Q=i[g+20>>2])C=g+20|0;else{if(!(Q=i[g+16>>2]))break B;C=g+16|0}for(;E=C,C=(B=Q)+20|0,(Q=i[B+20>>2])||(C=B+16|0,Q=i[B+16>>2]););i[E>>2]=0;break C}i[g+4>>2]=-2&C,i[A+4>>2]=1|I,i[A+I>>2]=I;break I}B=0}if(o){C=i[g+28>>2];C:{if(i[(Q=37924+(C<<2)|0)>>2]==(0|g)){if(i[Q>>2]=B,B)break C;a=37624,c=i[9406]&Lg(-2,C),i[a>>2]=c;break g}if(i[o+(i[o+16>>2]==(0|g)?16:20)>>2]=B,!B)break g}i[B+24>>2]=o,(C=i[g+16>>2])&&(i[B+16>>2]=C,i[C+24>>2]=B),(C=i[g+20>>2])&&(i[B+20>>2]=C,i[C+24>>2]=B)}}if(i[A+4>>2]=1|I,i[A+I>>2]=I,i[9410]==(0|A))return void(i[9407]=I)}if(I>>>0<=255)return C=37660+(-8&I)|0,(B=i[9405])&(I=1<<(I>>>3))?I=i[C+8>>2]:(i[9405]=I|B,I=C),i[C+8>>2]=A,i[I+12>>2]=A,i[A+12>>2]=C,void(i[A+8>>2]=I);B=31,I>>>0<=16777215&&(B=62+((I>>>38-(C=_(I>>>8|0))&1)-(C<<1)|0)|0),i[A+28>>2]=B,i[A+16>>2]=0,i[A+20>>2]=0,C=37924+(B<<2)|0;I:{if((Q=i[9406])&(E=1<>>1|0):0),C=i[C>>2];;){if(Q=C,(-8&i[C+4>>2])==(0|I))break I;if(C=B>>>29|0,B<<=1,!(C=i[16+(E=Q+(4&C)|0)>>2]))break}i[E+16>>2]=A,i[A+24>>2]=Q}else i[9406]=Q|E,i[C>>2]=A,i[A+24>>2]=C;return i[A+12>>2]=A,void(i[A+8>>2]=A)}I=i[Q+8>>2],i[I+12>>2]=A,i[Q+8>>2]=A,i[A+24>>2]=0,i[A+12>>2]=Q,i[A+8>>2]=I}}function EA(A,I){var g,B=0,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0;return s=g=s-512|0,B=-1,E=o[I+31|0],Q=o[0|I],1&(((255&(127&~E|~(o[I+1|0]&o[I+2|0]&o[I+3|0]&o[I+4|0]&o[I+5|0]&o[I+6|0]&o[I+7|0]&o[I+8|0]&o[I+9|0]&o[I+10|0]&o[I+11|0]&o[I+12|0]&o[I+13|0]&o[I+14|0]&o[I+15|0]&o[I+16|0]&o[I+17|0]&o[I+18|0]&o[I+19|0]&o[I+20|0]&o[I+21|0]&o[I+22|0]&o[I+23|0]&o[I+24|0]&o[I+25|0]&o[I+26|0]&o[I+27|0]&o[I+28|0]&o[I+29|0]&o[I+30|0])))-1&236-Q)>>>8|Q|E>>>7)||(fA(E=g+336|0,I),R(g+288|0,E),I=i[g+324>>2],i[g+276>>2]=0-I,B=i[g+320>>2],i[g+272>>2]=0-B,Q=i[g+316>>2],i[g+268>>2]=0-Q,a=i[g+312>>2],i[g+264>>2]=0-a,_=i[g+308>>2],i[g+260>>2]=0-_,c=i[g+304>>2],i[g+256>>2]=0-c,t=i[g+300>>2],i[g+252>>2]=0-t,r=i[g+296>>2],i[g+248>>2]=0-r,e=i[g+292>>2],i[g+244>>2]=0-e,y=i[g+288>>2],i[g+240>>2]=1-y,R(h=g+144|0,p=g+240|0),i[g+228>>2]=I,i[g+224>>2]=B,i[g+220>>2]=Q,i[g+216>>2]=a,i[g+212>>2]=_,i[g+208>>2]=c,i[g+204>>2]=t,i[g+200>>2]=r,i[g+196>>2]=e,i[g+192>>2]=y+1,R(B=g+96|0,a=g+192|0),b(I=g+48|0,1584,h),Q=i[g+96>>2],_=i[g+48>>2],c=i[g+100>>2],t=i[g+52>>2],r=i[g+104>>2],e=i[g+56>>2],y=i[g+108>>2],h=i[g+60>>2],D=i[g+112>>2],f=i[g+64>>2],w=i[g+116>>2],n=i[g+68>>2],k=i[g+120>>2],F=i[g+72>>2],S=i[g+124>>2],N=i[g+76>>2],G=i[g+128>>2],M=i[g+80>>2],i[g+84>>2]=0-(i[g+84>>2]+i[g+132>>2]|0),i[g+80>>2]=0-(G+M|0),i[g+76>>2]=0-(S+N|0),i[g+72>>2]=0-(k+F|0),i[g+68>>2]=0-(w+n|0),i[g+64>>2]=0-(D+f|0),i[g+60>>2]=0-(y+h|0),i[g+56>>2]=0-(r+e|0),i[g+52>>2]=0-(c+t|0),i[g+48>>2]=0-(Q+_|0),b(g,I,B),i[g+404>>2]=0,i[g+408>>2]=0,i[g+412>>2]=0,i[g+416>>2]=0,i[g+420>>2]=0,i[g+388>>2]=0,i[g+392>>2]=0,i[g+384>>2]=1,i[g+396>>2]=0,i[g+400>>2]=0,f=GA(Q=g+432|0,g+384|0,g),b(A,Q,a),b(B=A+40|0,Q,A),b(B,B,I),b(A,A,E),E=i[A+36>>2]<<1,i[A+36>>2]=E,Q=i[A+32>>2]<<1,i[A+32>>2]=Q,a=i[A+28>>2]<<1,i[A+28>>2]=a,_=i[A+24>>2]<<1,i[A+24>>2]=_,c=i[A+20>>2]<<1,i[A+20>>2]=c,t=i[A+16>>2]<<1,i[A+16>>2]=t,r=i[A+12>>2]<<1,i[A+12>>2]=r,e=i[A+8>>2]<<1,i[A+8>>2]=e,y=i[A+4>>2]<<1,i[A+4>>2]=y,h=i[A>>2]<<1,i[A>>2]=h,QI(D=g+480|0,A),I=0-(1&C[g+480|0])|0,i[A+36>>2]=E^I&(E^0-E),i[A+32>>2]=Q^I&(Q^0-Q),i[A+28>>2]=a^I&(a^0-a),i[A+24>>2]=_^I&(_^0-_),i[A+20>>2]=c^I&(c^0-c),i[A+16>>2]=t^I&(t^0-t),i[A+12>>2]=r^I&(r^0-r),i[A+8>>2]=e^I&(e^0-e),i[A+4>>2]=y^I&(y^0-y),i[A>>2]=h^I&(h^0-h),b(B,p,B),i[A+84>>2]=0,i[A+88>>2]=0,i[A+80>>2]=1,i[A+92>>2]=0,i[A+96>>2]=0,i[A+100>>2]=0,i[A+104>>2]=0,i[A+108>>2]=0,i[A+112>>2]=0,i[A+116>>2]=0,b(I=A+120|0,A,B),QI(D,I),A=o[g+480|0],QI(D,B),B=0-(GI(D,32)|1-f|1&A)|0),s=g+512|0,B}function aA(A,I,g,B){var Q,o=0,E=0;Q=o=s,s=o=o-576&-64,i[o+188>>2]=I;A:if(I>>>0<=64){if((0|eA(E=o+192|0,0,0,I))<0)break A;if((0|WA(E,o+188|0,4,0))<0)break A;if((0|WA(E,g,B,0))<0)break A;Hg(E,A,I)}else if(!((0|eA(E=o+192|0,0,0,64))<0||(0|WA(E,o+188|0,4,0))<0||(0|WA(E,g,B,0))<0||(0|Hg(E,o+112|0,64))<0)){if(g=i[o+116>>2],B=i[o+112>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=i[o+124>>2],B=i[o+120>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=i[o+140>>2],B=i[o+136>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=i[o+132>>2],B=i[o+128>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,A=A+32|0,(I=I-32|0)>>>0>=65)for(;;){if(g=i[o+172>>2],i[o+104>>2]=i[o+168>>2],i[o+108>>2]=g,g=i[o+164>>2],i[o+96>>2]=i[o+160>>2],i[o+100>>2]=g,g=i[o+156>>2],i[o+88>>2]=i[o+152>>2],i[o+92>>2]=g,g=i[o+148>>2],i[o+80>>2]=i[o+144>>2],i[o+84>>2]=g,g=i[o+140>>2],i[o+72>>2]=i[o+136>>2],i[o+76>>2]=g,B=i[o+132>>2],i[(g=o- -64|0)>>2]=i[o+128>>2],i[g+4>>2]=B,g=i[o+124>>2],i[o+56>>2]=i[o+120>>2],i[o+60>>2]=g,g=i[o+116>>2],i[o+48>>2]=i[o+112>>2],i[o+52>>2]=g,(0|lA(o+112|0,64,o+48|0,64,0,0,0))<0)break A;if(g=i[o+116>>2],B=i[o+112>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=i[o+124>>2],B=i[o+120>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=i[o+140>>2],B=i[o+136>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=i[o+132>>2],B=i[o+128>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,A=A+32|0,!((I=I-32|0)>>>0>64))break}g=i[o+172>>2],i[o+104>>2]=i[o+168>>2],i[o+108>>2]=g,g=i[o+164>>2],i[o+96>>2]=i[o+160>>2],i[o+100>>2]=g,g=i[o+156>>2],i[o+88>>2]=i[o+152>>2],i[o+92>>2]=g,g=i[o+148>>2],i[o+80>>2]=i[o+144>>2],i[o+84>>2]=g,g=i[o+140>>2],i[o+72>>2]=i[o+136>>2],i[o+76>>2]=g,B=i[o+132>>2],i[(g=o- -64|0)>>2]=i[o+128>>2],i[g+4>>2]=B,g=i[o+124>>2],i[o+56>>2]=i[o+120>>2],i[o+60>>2]=g,g=i[o+116>>2],i[o+48>>2]=i[o+112>>2],i[o+52>>2]=g,(0|lA(g=o+112|0,I,o+48|0,64,0,0,0))<0||Ng(A,g,I)}XC(o+192|0,384),s=Q}function _A(A,I,g,B,Q,_,c,t,r,e,y){var h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0;if(h=Ig(r,0,t,0),!(n=f)&h>>>0>=1073741824|n)return i[9404]=22,-1;if(1==(0|c)|c>>>0>1)return i[9404]=22,-1;if(h=c,!(!(_&(n=_-1|0)|c&(h=-1!=(0|n)?h+1|0:h))&(!c&_>>>0>=2|!!(0|c))))return i[9404]=28,-1;if(!r||!t)return i[9404]=28,-1;if(!(33554431/(r>>>0)>>>0>>0|t>>>0>16777215)&&!c&33554431/(t>>>0)>>>0>=_>>>0&&!((M=a(G=t<<7,r))>>>0>(h=(k=a(_,G))+M|0)>>>0||(D=h)>>>0>(h=((F=t<<8)+h|0)- -64|0)>>>0)){A:{if(h>>>0>E[A+8>>2]){if(w=-1,Rg(A))break A;if(s=n=s-16|0,D=tI(n+12|0,h),i[9404]=D,D=D?0:i[n+12>>2],i[A+4>>2]=D,i[A>>2]=D,i[A+8>>2]=D?h:0,s=n+16|0,!D)break A}for(DI(I,g,B,Q,U=i[A+4>>2],M),Y=((k=(D=(K=M+U|0)+k|0)+(t<<7)|0)+G|0)-64|0,Q=_-1|0,N=t<<5,b=D+F|0,J=(D+G|0)-64|0;;){for(F=a(G,H)+U|0,w=0;B=(A=w<<2)+F|0,i[A+D>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,h=(B=4|A)+D|0,B=B+F|0,i[h>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,h=(B=8|A)+D|0,B=B+F|0,i[h>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,B=(A|=12)+D|0,A=A+F|0,i[B>>2]=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,n=0,h=0,(0|N)!=(0|(w=w+4|0)););for(B=0,A=0;Ng(K+(a(B,N)<<2)|0,D,G),tA(D,k,b,t),Ng(K+(a(N,1|B)<<2)|0,k,G),tA(k,D,b,t),(0|c)==(0|(A=(B=B+2|0)>>>0<2?A+1|0:A))&B>>>0<_>>>0|A>>>0>>0;);for(;;){for(A=K+(a(N,Q&i[J>>2])<<2)|0,w=0;i[(p=(B=w<<2)+D|0)>>2]=i[p>>2]^i[A+B>>2],i[(S=(p=4|B)+D|0)>>2]=i[S>>2]^i[A+p>>2],i[(S=(p=8|B)+D|0)>>2]=i[S>>2]^i[A+p>>2],i[(p=(B|=12)+D|0)>>2]=i[p>>2]^i[A+B>>2],(0|N)!=(0|(w=w+4|0)););for(tA(D,k,b,t),A=K+(a(N,Q&i[Y>>2])<<2)|0,w=0;i[(p=(B=w<<2)+k|0)>>2]=i[p>>2]^i[A+B>>2],i[(S=(p=4|B)+k|0)>>2]=i[S>>2]^i[A+p>>2],i[(S=(p=8|B)+k|0)>>2]=i[S>>2]^i[A+p>>2],i[(p=(B|=12)+k|0)>>2]=i[p>>2]^i[A+B>>2],(0|N)!=(0|(w=w+4|0)););if(tA(k,D,b,t),w=0,!((0|c)==(0|(h=(n=n+2|0)>>>0<2?h+1|0:h))&_>>>0>n>>>0|c>>>0>h>>>0))break}for(;B=(A=w<<2)+F|0,h=i[A+D>>2],C[0|B]=h,C[B+1|0]=h>>>8,C[B+2|0]=h>>>16,C[B+3|0]=h>>>24,B=(h=4|A)+F|0,h=i[h+D>>2],C[0|B]=h,C[B+1|0]=h>>>8,C[B+2|0]=h>>>16,C[B+3|0]=h>>>24,B=(h=8|A)+F|0,h=i[h+D>>2],C[0|B]=h,C[B+1|0]=h>>>8,C[B+2|0]=h>>>16,C[B+3|0]=h>>>24,A=(B=12|A)+F|0,B=i[B+D>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,(0|N)!=(0|(w=w+4|0)););if((0|(H=H+1|0))==(0|r))break}DI(I,g,U,M,e,y),w=0}return w}return i[9404]=48,-1}function cA(A,I,g){A|=0,I|=0,g|=0;var B,Q,E,a=0;s=B=s-192|0,i[B+96>>2]=0,i[B+100>>2]=0,i[B+104>>2]=0,i[B+108>>2]=0,i[B+112>>2]=0,i[B+116>>2]=0,i[B+120>>2]=0,i[B+124>>2]=0,a=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[B+80>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[B+84>>2]=a,a=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[B+88>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[B+92>>2]=a,Q=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,E=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,a=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[B+40>>2]=0,i[B+44>>2]=0,i[B+48>>2]=0,i[B+52>>2]=0,i[B+56>>2]=0,i[B+60>>2]=0,i[B+64>>2]=a,i[B+68>>2]=I,i[B+72>>2]=Q,i[B+76>>2]=E,i[B+32>>2]=0,i[B+36>>2]=0,I=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,i[B+16>>2]=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,i[B+20>>2]=I,I=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,i[B+24>>2]=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,i[B+28>>2]=I,I=o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24,i[B>>2]=o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24,i[B+4>>2]=I,I=o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24,i[B+8>>2]=o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24,i[B+12>>2]=I,og(B- -64|0,B),g=i[B+124>>2],i[B+184>>2]=i[B+120>>2],i[B+188>>2]=g,I=i[B+116>>2],i[B+176>>2]=i[B+112>>2],i[B+180>>2]=I,I=i[B+108>>2],i[B+168>>2]=i[B+104>>2],i[B+172>>2]=I,I=i[B+100>>2],i[B+160>>2]=i[B+96>>2],i[B+164>>2]=I,I=i[B+92>>2],i[B+152>>2]=i[B+88>>2],i[B+156>>2]=I,I=i[B+84>>2],i[B+144>>2]=i[B+80>>2],i[B+148>>2]=I,I=i[B+76>>2],i[B+136>>2]=i[B+72>>2],i[B+140>>2]=I,I=i[B+68>>2],i[B+128>>2]=i[B+64>>2],i[B+132>>2]=I,S(I=B+128|0),a=i[B+156>>2],g=i[B+152>>2],C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,a=i[B+148>>2],g=i[B+144>>2],C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+20|0]=a,C[A+21|0]=a>>>8,C[A+22|0]=a>>>16,C[A+23|0]=a>>>24,a=i[B+140>>2],g=i[B+136>>2],C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,C[A+12|0]=a,C[A+13|0]=a>>>8,C[A+14|0]=a>>>16,C[A+15|0]=a>>>24,a=i[B+132>>2],g=i[B+128>>2],C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=a,C[A+5|0]=a>>>8,C[A+6|0]=a>>>16,C[A+7|0]=a>>>24,XC(I,64),s=B+192|0}function tA(A,I,g,C){var B=0,Q=0,o=0,E=0,a=0;if(Q=i[4+(B=((C<<7)+A|0)-64|0)>>2],i[g>>2]=i[B>>2],i[g+4>>2]=Q,Q=i[B+60>>2],i[g+56>>2]=i[B+56>>2],i[g+60>>2]=Q,Q=i[B+52>>2],i[g+48>>2]=i[B+48>>2],i[g+52>>2]=Q,Q=i[B+44>>2],i[g+40>>2]=i[B+40>>2],i[g+44>>2]=Q,Q=i[B+36>>2],i[g+32>>2]=i[B+32>>2],i[g+36>>2]=Q,Q=i[B+28>>2],i[g+24>>2]=i[B+24>>2],i[g+28>>2]=Q,Q=i[B+20>>2],i[g+16>>2]=i[B+16>>2],i[g+20>>2]=Q,Q=i[B+12>>2],i[g+8>>2]=i[B+8>>2],i[g+12>>2]=Q,C)for(Q=C<<1,a=C<<6;C=(E<<6)+A|0,i[g>>2]=i[g>>2]^i[C>>2],i[g+4>>2]=i[g+4>>2]^i[C+4>>2],i[g+8>>2]=i[g+8>>2]^i[C+8>>2],i[g+12>>2]=i[g+12>>2]^i[C+12>>2],i[g+16>>2]=i[g+16>>2]^i[C+16>>2],i[g+20>>2]=i[g+20>>2]^i[C+20>>2],i[g+24>>2]=i[g+24>>2]^i[C+24>>2],i[g+28>>2]=i[g+28>>2]^i[C+28>>2],i[g+32>>2]=i[g+32>>2]^i[C+32>>2],i[g+36>>2]=i[g+36>>2]^i[C+36>>2],i[g+40>>2]=i[g+40>>2]^i[C+40>>2],i[g+44>>2]=i[g+44>>2]^i[C+44>>2],i[g+48>>2]=i[g+48>>2]^i[C+48>>2],i[g+52>>2]=i[g+52>>2]^i[C+52>>2],i[g+56>>2]=i[g+56>>2]^i[C+56>>2],i[g+60>>2]=i[g+60>>2]^i[C+60>>2],VA(g),o=i[g+60>>2],i[56+(B=(E<<5)+I|0)>>2]=i[g+56>>2],i[B+60>>2]=o,o=i[g+52>>2],i[B+48>>2]=i[g+48>>2],i[B+52>>2]=o,o=i[g+44>>2],i[B+40>>2]=i[g+40>>2],i[B+44>>2]=o,o=i[g+36>>2],i[B+32>>2]=i[g+32>>2],i[B+36>>2]=o,o=i[g+28>>2],i[B+24>>2]=i[g+24>>2],i[B+28>>2]=o,o=i[g+20>>2],i[B+16>>2]=i[g+16>>2],i[B+20>>2]=o,o=i[g+12>>2],i[B+8>>2]=i[g+8>>2],i[B+12>>2]=o,o=i[g+4>>2],i[B>>2]=i[g>>2],i[B+4>>2]=o,i[g>>2]=i[g>>2]^i[C- -64>>2],i[g+4>>2]=i[g+4>>2]^i[C+68>>2],i[g+8>>2]=i[g+8>>2]^i[C+72>>2],i[g+12>>2]=i[g+12>>2]^i[C+76>>2],i[g+16>>2]=i[g+16>>2]^i[C+80>>2],i[g+20>>2]=i[g+20>>2]^i[C+84>>2],i[g+24>>2]=i[g+24>>2]^i[C+88>>2],i[g+28>>2]=i[g+28>>2]^i[C+92>>2],i[g+32>>2]=i[g+32>>2]^i[C+96>>2],i[g+36>>2]=i[g+36>>2]^i[C+100>>2],i[g+40>>2]=i[g+40>>2]^i[C+104>>2],i[g+44>>2]=i[g+44>>2]^i[C+108>>2],i[g+48>>2]=i[g+48>>2]^i[C+112>>2],i[g+52>>2]=i[g+52>>2]^i[C+116>>2],i[g+56>>2]=i[g+56>>2]^i[C+120>>2],i[g+60>>2]=i[g+60>>2]^i[C+124>>2],VA(g),C=B+a|0,B=i[g+60>>2],i[C+56>>2]=i[g+56>>2],i[C+60>>2]=B,B=i[g+52>>2],i[C+48>>2]=i[g+48>>2],i[C+52>>2]=B,B=i[g+44>>2],i[C+40>>2]=i[g+40>>2],i[C+44>>2]=B,B=i[g+36>>2],i[C+32>>2]=i[g+32>>2],i[C+36>>2]=B,B=i[g+28>>2],i[C+24>>2]=i[g+24>>2],i[C+28>>2]=B,B=i[g+20>>2],i[C+16>>2]=i[g+16>>2],i[C+20>>2]=B,B=i[g+12>>2],i[C+8>>2]=i[g+8>>2],i[C+12>>2]=B,B=i[g+4>>2],i[C>>2]=i[g>>2],i[C+4>>2]=B,Q>>>0>(E=E+2|0)>>>0;);}function rA(A,I,g,C){var B=0,Q=0,E=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0;if(h=i[A+36>>2],y=i[A+32>>2],s=i[A+28>>2],r=i[A+24>>2],e=i[A+20>>2],!C&g>>>0>=16|C)for(M=!o[A+80|0]<<24,p=i[A+4>>2],K=a(p,5),n=i[A+8>>2],N=a(n,5),F=i[A+12>>2],S=a(F,5),G=i[A+16>>2],k=a(G,5),w=i[A>>2];B=Ig(E=((o[I+3|0]|o[I+4|0]<<8|o[I+5|0]<<16|o[I+6|0]<<24)>>>2&67108863)+r|0,0,F,0),c=f,e=(_=Ig(r=(67108863&(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24))+e|0,0,G,0))+B|0,B=f+c|0,B=_>>>0>e>>>0?B+1|0:B,c=Ig(s=((o[I+6|0]|o[I+7|0]<<8|o[I+8|0]<<16|o[I+9|0]<<24)>>>4&67108863)+s|0,0,n,0),B=f+B|0,B=c>>>0>(e=c+e|0)>>>0?B+1|0:B,c=Ig(y=((o[I+9|0]|o[I+10|0]<<8|o[I+11|0]<<16|o[I+12|0]<<24)>>>6|0)+y|0,0,p,0),B=f+B|0,B=c>>>0>(e=c+e|0)>>>0?B+1|0:B,c=Ig(h=h+M+((o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24)>>>8)|0,0,w,0),B=f+B|0,U=e=c+e|0,e=c>>>0>e>>>0?B+1|0:B,B=Ig(E,0,n,0),c=f,_=Ig(r,0,F,0),Q=f+c|0,Q=(B=_+B|0)>>>0<_>>>0?Q+1|0:Q,c=(_=Ig(s,0,p,0))+B|0,B=f+Q|0,B=_>>>0>c>>>0?B+1|0:B,_=Ig(y,0,w,0),B=f+B|0,B=_>>>0>(c=_+c|0)>>>0?B+1|0:B,_=Ig(h,0,k,0),B=f+B|0,b=c=_+c|0,c=_>>>0>c>>>0?B+1|0:B,B=Ig(E,0,p,0),t=f,_=(Q=Ig(r,0,n,0))+B|0,B=f+t|0,B=Q>>>0>_>>>0?B+1|0:B,t=Ig(s,0,w,0),Q=f+B|0,Q=(_=t+_|0)>>>0>>0?Q+1|0:Q,t=Ig(y,0,k,0),B=f+Q|0,B=(_=t+_|0)>>>0>>0?B+1|0:B,t=Ig(h,0,S,0),B=f+B|0,H=_=t+_|0,_=_>>>0>>0?B+1|0:B,B=Ig(E,0,w,0),Q=f,t=(D=Ig(r,0,p,0))+B|0,B=f+Q|0,B=t>>>0>>0?B+1|0:B,Q=Ig(s,0,k,0),B=f+B|0,B=Q>>>0>(t=Q+t|0)>>>0?B+1|0:B,D=Ig(y,0,S,0),Q=f+B|0,Q=(t=D+t|0)>>>0>>0?Q+1|0:Q,D=Ig(h,0,N,0),B=f+Q|0,B=(t=D+t|0)>>>0>>0?B+1|0:B,D=t,t=B,B=Ig(E,0,k,0),Q=f,E=(r=Ig(r,0,w,0))+B|0,B=f+Q|0,B=E>>>0>>0?B+1|0:B,r=Ig(s,0,S,0),B=f+B|0,B=(E=r+E|0)>>>0>>0?B+1|0:B,r=Ig(y,0,N,0),B=f+B|0,B=(E=r+E|0)>>>0>>0?B+1|0:B,r=Ig(h,0,K,0),Q=f+B|0,Q=(E=r+E|0)>>>0>>0?Q+1|0:Q,r=E,B=t,B=(E=(s=(67108863&Q)<<6|E>>>26)+D|0)>>>0>>0?B+1|0:B,s=E,y=(67108863&B)<<6|E>>>26,B=_,B=(E=y+H|0)>>>0>>0?B+1|0:B,y=E,Q=c,h=B=(E=(67108863&B)<<6|E>>>26)+b|0,c=(67108863&(Q=B>>>0>>0?Q+1|0:Q))<<6|B>>>26,B=e,r=(67108863&s)+((B=a((67108863&((E=c+U|0)>>>0>>0?B+1:B))<<6|E>>>26,5)+(67108863&r)|0)>>>26|0)|0,s=67108863&y,y=67108863&h,h=67108863&E,e=67108863&B,I=I+16|0,!(C=C-(g>>>0<16)|0)&(g=g-16|0)>>>0>15|C;);i[A+20>>2]=e,i[A+36>>2]=h,i[A+32>>2]=y,i[A+28>>2]=s,i[A+24>>2]=r}function eA(A,I,g,B){A|=0,I|=0;var i=0;return i=-1,(B|=0)-65>>>0<4294967232|(g|=0)>>>0>64||(g&&I?(s=i=s-128|0,!I|((B&=255)-65&255)>>>0<=191|((g&=255)-65&255)>>>0<=191?(rC(),Q()):(bg(A- -64|0,0,293),C[A+56|0]=121,C[A+57|0]=33,C[A+58|0]=126,C[A+59|0]=19,C[A+60|0]=25,C[A+61|0]=205,C[A+62|0]=224,C[A+63|0]=91,C[A+48|0]=107,C[A+49|0]=189,C[A+50|0]=65,C[A+51|0]=251,C[A+52|0]=171,C[A+53|0]=217,C[A+54|0]=131,C[A+55|0]=31,C[A+40|0]=31,C[A+41|0]=108,C[A+42|0]=62,C[A+43|0]=43,C[A+44|0]=140,C[A+45|0]=104,C[A+46|0]=5,C[A+47|0]=155,C[A+32|0]=209,C[A+33|0]=130,C[A+34|0]=230,C[A+35|0]=173,C[A+36|0]=127,C[A+37|0]=82,C[A+38|0]=14,C[A+39|0]=81,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,B=-222443256^(g<<8|B),C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,B=g>>>24^1779033703,C[A+4|0]=B,C[A+5|0]=B>>>8,C[A+6|0]=B>>>16,C[A+7|0]=B>>>24,g=Ng(bg(i,0,128),I,g),Ng(A+96|0,g,128),I=128+(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)|0,C[A+352|0]=I,C[A+353|0]=I>>>8,C[A+354|0]=I>>>16,C[A+355|0]=I>>>24,XC(g,128),s=g+128|0)):(((I=255&B)-65&255)>>>0<=191&&(rC(),Q()),bg(A- -64|0,0,293),C[A+56|0]=121,C[A+57|0]=33,C[A+58|0]=126,C[A+59|0]=19,C[A+60|0]=25,C[A+61|0]=205,C[A+62|0]=224,C[A+63|0]=91,C[A+48|0]=107,C[A+49|0]=189,C[A+50|0]=65,C[A+51|0]=251,C[A+52|0]=171,C[A+53|0]=217,C[A+54|0]=131,C[A+55|0]=31,C[A+40|0]=31,C[A+41|0]=108,C[A+42|0]=62,C[A+43|0]=43,C[A+44|0]=140,C[A+45|0]=104,C[A+46|0]=5,C[A+47|0]=155,C[A+32|0]=209,C[A+33|0]=130,C[A+34|0]=230,C[A+35|0]=173,C[A+36|0]=127,C[A+37|0]=82,C[A+38|0]=14,C[A+39|0]=81,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,I^=-222443256,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,C[A+4|0]=103,C[A+5|0]=230,C[A+6|0]=9,C[A+7|0]=106),i=0),0|i}function yA(A,I,g,B){A|=0,I|=0,g|=0;var Q=0,i=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0;for((B|=0)?(i=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,E=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,Q=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,t=o[B+12|0]|o[B+13|0]<<8|o[B+14|0]<<16|o[B+15|0]<<24):(i=2036477234,E=857760878,Q=1634760805,t=1797285236),a=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,e=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,_=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,y=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,c=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,w=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,s=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,B=o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24,h=o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24,D=o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24,I=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,g=o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24;r=g,g=Lg((f=I)^(I=g+Q|0),16),r=s=Lg(r^(Q=g+s|0),12),p=Lg((f=I+s|0)^g,8),I=Lg(r^(s=p+Q|0),7),a=Lg((g=B+t|0)^a,16),B=Lg((y=a+y|0)^B,12),r=h,i=Lg((t=i+h|0)^e,16),Q=Lg(r^(h=i+c|0),12),c=Lg((c=i)^(i=Q+t|0),8),g=Lg(c^(t=(n=g+B|0)+I|0),16),e=Lg((E=E+D|0)^_,16),D=Lg((_=e+w|0)^D,12),r=I,I=Lg((E=D+E|0)^e,8),r=Lg(r^(_=(k=I+_|0)+g|0),12),e=Lg(g^(t=r+t|0),8),g=Lg((w=e+_|0)^r,7),a=Lg(a^n,8),B=Lg((y=a+y|0)^B,7),_=Lg((i=B+i|0)^I,16),B=Lg((I=_+s|0)^B,12),_=Lg(_^(i=B+i|0),8),B=Lg((s=I+_|0)^B,7),I=Lg((c=c+h|0)^Q,7),h=Lg((E=I+E|0)^p,16),p=Lg(I^(Q=h+y|0),12),I=Lg(h^(E=p+E|0),8),h=Lg((y=Q+I|0)^p,7),r=c,c=a,Q=Lg(D^k,7),c=Lg(c^(a=Q+f|0),16),f=Lg(Q^(D=r+c|0),12),a=Lg(c^(Q=f+a|0),8),D=Lg((c=D+a|0)^f,7),10!=(0|(F=F+1|0)););return C[0|A]=Q,C[A+1|0]=Q>>>8,C[A+2|0]=Q>>>16,C[A+3|0]=Q>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+24|0]=e,C[A+25|0]=e>>>8,C[A+26|0]=e>>>16,C[A+27|0]=e>>>24,C[A+20|0]=_,C[A+21|0]=_>>>8,C[A+22|0]=_>>>16,C[A+23|0]=_>>>24,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,C[A+12|0]=t,C[A+13|0]=t>>>8,C[A+14|0]=t>>>16,C[A+15|0]=t>>>24,C[A+8|0]=i,C[A+9|0]=i>>>8,C[A+10|0]=i>>>16,C[A+11|0]=i>>>24,C[A+4|0]=E,C[A+5|0]=E>>>8,C[A+6|0]=E>>>16,C[A+7|0]=E>>>24,0}function sA(A,I,g){var C,B,Q,o,E,a,_,c,t,r,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0;y=i[I+4>>2],e=i[I+44>>2],h=i[I+8>>2],D=i[I+48>>2],f=i[I+12>>2],p=i[I+52>>2],w=i[I+16>>2],n=i[I+56>>2],k=i[I+20>>2],F=i[I+60>>2],S=i[I+24>>2],N=i[(s=I- -64|0)>>2],G=i[I+28>>2],M=i[I+68>>2],K=i[I+32>>2],U=i[I+72>>2],H=i[I+36>>2],Y=i[I+76>>2],i[A>>2]=i[I>>2]+i[I+40>>2],i[A+36>>2]=H+Y,i[A+32>>2]=K+U,i[A+28>>2]=G+M,i[A+24>>2]=S+N,i[A+20>>2]=k+F,i[A+16>>2]=w+n,i[A+12>>2]=f+p,i[A+8>>2]=h+D,i[A+4>>2]=e+y,e=i[I+4>>2],h=i[I+44>>2],D=i[I+8>>2],f=i[I+48>>2],p=i[I+12>>2],w=i[I+52>>2],n=i[I+16>>2],k=i[I+56>>2],F=i[I+20>>2],S=i[I+60>>2],N=i[I+24>>2],s=i[s>>2],y=i[I+28>>2],G=i[I+68>>2],M=i[I+32>>2],K=i[I+72>>2],U=i[I>>2],H=i[I+40>>2],i[A+76>>2]=i[I+76>>2]-i[I+36>>2],i[A+72>>2]=K-M,i[A+68>>2]=G-y,i[(y=A- -64|0)>>2]=s-N,i[A+60>>2]=S-F,i[A+56>>2]=k-n,i[A+52>>2]=w-p,i[A+48>>2]=f-D,i[A+44>>2]=h-e,i[A+40>>2]=H-U,b(A+80|0,A,g),b(e=A+40|0,e,g+40|0),b(A+120|0,g+120|0,I+120|0),b(A,I+80|0,g+80|0),H=i[A+4>>2],Y=i[A+8>>2],Q=i[A+12>>2],o=i[A+16>>2],E=i[A+20>>2],a=i[A+24>>2],_=i[A+28>>2],c=i[A+32>>2],t=i[A+36>>2],I=i[A+44>>2],g=i[A+84>>2],e=i[A+48>>2],h=i[A+88>>2],D=i[A+52>>2],f=i[A+92>>2],p=i[A+56>>2],w=i[A+96>>2],n=i[A+60>>2],k=i[A+100>>2],F=i[y>>2],S=i[A+104>>2],s=i[A+68>>2],N=i[A+108>>2],G=i[A+72>>2],M=i[A+112>>2],r=i[A>>2],K=i[A+40>>2],U=i[A+80>>2],C=i[A+76>>2],B=i[A+116>>2],i[A+76>>2]=C+B,i[A+72>>2]=G+M,i[A+68>>2]=s+N,i[y>>2]=F+S,i[A+60>>2]=n+k,i[A+56>>2]=p+w,i[A+52>>2]=D+f,i[A+48>>2]=e+h,i[A+44>>2]=I+g,i[A+40>>2]=K+U,i[A+36>>2]=B-C,i[A+32>>2]=M-G,i[A+28>>2]=N-s,i[A+24>>2]=S-F,i[A+20>>2]=k-n,i[A+16>>2]=w-p,i[A+12>>2]=f-D,i[A+8>>2]=h-e,i[A+4>>2]=g-I,i[A>>2]=U-K,I=t<<1,g=i[A+156>>2],i[A+156>>2]=I-g,y=c<<1,e=i[A+152>>2],i[A+152>>2]=y-e,h=_<<1,D=i[A+148>>2],i[A+148>>2]=h-D,f=a<<1,p=i[A+144>>2],i[A+144>>2]=f-p,w=E<<1,n=i[A+140>>2],i[A+140>>2]=w-n,k=o<<1,F=i[A+136>>2],i[A+136>>2]=k-F,S=Q<<1,s=i[A+132>>2],i[A+132>>2]=S-s,N=Y<<1,G=i[A+128>>2],i[A+128>>2]=N-G,M=H<<1,K=i[A+124>>2],i[A+124>>2]=M-K,U=r<<1,H=i[A+120>>2],i[A+120>>2]=U-H,i[A+112>>2]=e+y,i[A+108>>2]=h+D,i[A+104>>2]=f+p,i[A+100>>2]=w+n,i[A+96>>2]=k+F,i[A+92>>2]=S+s,i[A+88>>2]=N+G,i[A+84>>2]=M+K,i[A+80>>2]=U+H,i[A+116>>2]=I+g}function hA(A,I,g){var C,B,Q,o,E,a,_,c,t,r,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0;y=i[I+4>>2],e=i[I+44>>2],h=i[I+8>>2],D=i[I+48>>2],f=i[I+12>>2],p=i[I+52>>2],w=i[I+16>>2],n=i[I+56>>2],k=i[I+20>>2],F=i[I+60>>2],S=i[I+24>>2],N=i[(s=I- -64|0)>>2],G=i[I+28>>2],M=i[I+68>>2],K=i[I+32>>2],U=i[I+72>>2],H=i[I+36>>2],Y=i[I+76>>2],i[A>>2]=i[I>>2]+i[I+40>>2],i[A+36>>2]=H+Y,i[A+32>>2]=K+U,i[A+28>>2]=G+M,i[A+24>>2]=S+N,i[A+20>>2]=k+F,i[A+16>>2]=w+n,i[A+12>>2]=f+p,i[A+8>>2]=h+D,i[A+4>>2]=e+y,e=i[I+4>>2],h=i[I+44>>2],D=i[I+8>>2],f=i[I+48>>2],p=i[I+12>>2],w=i[I+52>>2],n=i[I+16>>2],k=i[I+56>>2],F=i[I+20>>2],S=i[I+60>>2],N=i[I+24>>2],s=i[s>>2],y=i[I+28>>2],G=i[I+68>>2],M=i[I+32>>2],K=i[I+72>>2],U=i[I>>2],H=i[I+40>>2],i[A+76>>2]=i[I+76>>2]-i[I+36>>2],i[A+72>>2]=K-M,i[A+68>>2]=G-y,i[(y=A- -64|0)>>2]=s-N,i[A+60>>2]=S-F,i[A+56>>2]=k-n,i[A+52>>2]=w-p,i[A+48>>2]=f-D,i[A+44>>2]=h-e,i[A+40>>2]=H-U,b(A+80|0,A,g+40|0),b(e=A+40|0,e,g),b(A+120|0,g+120|0,I+120|0),b(A,I+80|0,g+80|0),H=i[A+4>>2],Y=i[A+8>>2],Q=i[A+12>>2],o=i[A+16>>2],E=i[A+20>>2],a=i[A+24>>2],_=i[A+28>>2],c=i[A+32>>2],t=i[A+36>>2],I=i[A+44>>2],g=i[A+84>>2],e=i[A+48>>2],h=i[A+88>>2],D=i[A+52>>2],f=i[A+92>>2],p=i[A+56>>2],w=i[A+96>>2],n=i[A+60>>2],k=i[A+100>>2],F=i[y>>2],S=i[A+104>>2],s=i[A+68>>2],N=i[A+108>>2],G=i[A+72>>2],M=i[A+112>>2],r=i[A>>2],K=i[A+40>>2],U=i[A+80>>2],C=i[A+76>>2],B=i[A+116>>2],i[A+76>>2]=C+B,i[A+72>>2]=G+M,i[A+68>>2]=s+N,i[y>>2]=F+S,i[A+60>>2]=n+k,i[A+56>>2]=p+w,i[A+52>>2]=D+f,i[A+48>>2]=e+h,i[A+44>>2]=I+g,i[A+40>>2]=K+U,i[A+36>>2]=B-C,i[A+32>>2]=M-G,i[A+28>>2]=N-s,i[A+24>>2]=S-F,i[A+20>>2]=k-n,i[A+16>>2]=w-p,i[A+12>>2]=f-D,i[A+8>>2]=h-e,i[A+4>>2]=g-I,i[A>>2]=U-K,I=i[A+156>>2],g=t<<1,i[A+156>>2]=I+g,y=i[A+152>>2],e=c<<1,i[A+152>>2]=y+e,h=i[A+148>>2],D=_<<1,i[A+148>>2]=h+D,f=i[A+144>>2],p=a<<1,i[A+144>>2]=f+p,w=i[A+140>>2],n=E<<1,i[A+140>>2]=w+n,k=i[A+136>>2],F=o<<1,i[A+136>>2]=k+F,S=i[A+132>>2],s=Q<<1,i[A+132>>2]=S+s,N=i[A+128>>2],G=Y<<1,i[A+128>>2]=N+G,M=i[A+124>>2],K=H<<1,i[A+124>>2]=M+K,U=i[A+120>>2],H=r<<1,i[A+120>>2]=U+H,i[A+112>>2]=e-y,i[A+108>>2]=D-h,i[A+104>>2]=p-f,i[A+100>>2]=n-w,i[A+96>>2]=F-k,i[A+92>>2]=s-S,i[A+88>>2]=G-N,i[A+84>>2]=K-M,i[A+80>>2]=H-U,i[A+116>>2]=g-I}function DA(A,I,g){var C,B,Q,o,E,a,_,c,t,r,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0;y=i[I+4>>2],e=i[I+44>>2],h=i[I+8>>2],D=i[I+48>>2],f=i[I+12>>2],p=i[I+52>>2],w=i[I+16>>2],n=i[I+56>>2],k=i[I+20>>2],F=i[I+60>>2],S=i[I+24>>2],N=i[(s=I- -64|0)>>2],G=i[I+28>>2],M=i[I+68>>2],K=i[I+32>>2],U=i[I+72>>2],H=i[I+36>>2],Y=i[I+76>>2],i[A>>2]=i[I>>2]+i[I+40>>2],i[A+36>>2]=H+Y,i[A+32>>2]=K+U,i[A+28>>2]=G+M,i[A+24>>2]=S+N,i[A+20>>2]=k+F,i[A+16>>2]=w+n,i[A+12>>2]=f+p,i[A+8>>2]=h+D,i[A+4>>2]=e+y,e=i[I+4>>2],h=i[I+44>>2],D=i[I+8>>2],f=i[I+48>>2],p=i[I+12>>2],w=i[I+52>>2],n=i[I+16>>2],k=i[I+56>>2],F=i[I+20>>2],S=i[I+60>>2],N=i[I+24>>2],s=i[s>>2],y=i[I+28>>2],G=i[I+68>>2],M=i[I+32>>2],K=i[I+72>>2],U=i[I>>2],H=i[I+40>>2],i[A+76>>2]=i[I+76>>2]-i[I+36>>2],i[A+72>>2]=K-M,i[A+68>>2]=G-y,i[(y=A- -64|0)>>2]=s-N,i[A+60>>2]=S-F,i[A+56>>2]=k-n,i[A+52>>2]=w-p,i[A+48>>2]=f-D,i[A+44>>2]=h-e,i[A+40>>2]=H-U,b(A+80|0,A,g),b(e=A+40|0,e,g+40|0),b(A+120|0,g+80|0,I+120|0),H=i[I+84>>2],Y=i[I+88>>2],Q=i[I+92>>2],o=i[I+96>>2],E=i[I+100>>2],a=i[I+104>>2],_=i[I+108>>2],c=i[I+112>>2],t=i[I+116>>2],g=i[A+44>>2],e=i[A+84>>2],h=i[A+48>>2],D=i[A+88>>2],f=i[A+52>>2],p=i[A+92>>2],w=i[A+56>>2],n=i[A+96>>2],k=i[A+60>>2],F=i[A+100>>2],S=i[y>>2],s=i[A+104>>2],N=i[A+68>>2],G=i[A+108>>2],M=i[A+72>>2],K=i[A+112>>2],r=i[I+80>>2],I=i[A+40>>2],U=i[A+80>>2],C=i[A+76>>2],B=i[A+116>>2],i[A+76>>2]=C+B,i[A+72>>2]=M+K,i[A+68>>2]=N+G,i[y>>2]=S+s,i[A+60>>2]=k+F,i[A+56>>2]=w+n,i[A+52>>2]=f+p,i[A+48>>2]=h+D,i[A+44>>2]=g+e,i[A+40>>2]=I+U,i[A+36>>2]=B-C,i[A+32>>2]=K-M,i[A+28>>2]=G-N,i[A+24>>2]=s-S,i[A+20>>2]=F-k,i[A+16>>2]=n-w,i[A+12>>2]=p-f,i[A+8>>2]=D-h,i[A+4>>2]=e-g,i[A>>2]=U-I,I=t<<1,g=i[A+156>>2],i[A+156>>2]=I-g,y=c<<1,e=i[A+152>>2],i[A+152>>2]=y-e,h=_<<1,D=i[A+148>>2],i[A+148>>2]=h-D,f=a<<1,p=i[A+144>>2],i[A+144>>2]=f-p,w=E<<1,n=i[A+140>>2],i[A+140>>2]=w-n,k=o<<1,F=i[A+136>>2],i[A+136>>2]=k-F,S=Q<<1,s=i[A+132>>2],i[A+132>>2]=S-s,N=Y<<1,G=i[A+128>>2],i[A+128>>2]=N-G,M=H<<1,K=i[A+124>>2],i[A+124>>2]=M-K,U=r<<1,H=i[A+120>>2],i[A+120>>2]=U-H,i[A+112>>2]=e+y,i[A+108>>2]=h+D,i[A+104>>2]=f+p,i[A+100>>2]=w+n,i[A+96>>2]=k+F,i[A+92>>2]=S+s,i[A+88>>2]=N+G,i[A+84>>2]=M+K,i[A+80>>2]=U+H,i[A+116>>2]=I+g}function fA(A,I){var g,C,B,Q,E,a,_,c,t,r,e,y,s,h,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0;s=o[I+31|0],g=o[I+30|0],C=o[I+29|0],B=o[I+6|0],Q=o[I+5|0],E=o[I+4|0],a=o[I+9|0],_=o[I+8|0],c=o[I+7|0],t=o[I+12|0],K=o[I+11|0],U=o[I+10|0],r=o[I+15|0],b=o[I+14|0],e=o[I+13|0],S=o[I+28|0],M=o[I+27|0],N=o[I+26|0],F=o[I+25|0],n=o[I+24|0],w=o[I+23|0],h=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,k=(p=o[I+21|0])<<15,p=D=p>>>17|0,G=k,G|=(k=o[I+20|0])<<7,k=(D=k>>>25|0)|p,p=(D=o[I+22|0])>>>9|0,D=D<<23|G,p|=k,y=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,I=0,k=D,D=(33554431&(I=(G=y+16777216|0)>>>0<16777216?1:I))<<7|G>>>25,I=(I>>>25|0)+p|0,D=(p=k=k+D|0)>>>0>>0?I+1|0:I,I=(k=p+33554432|0)>>>0<33554432?D+1|0:D,i[A+24>>2]=p-(-67108864&k),D=(p=w>>>27|0)|n>>>19|F>>>11,p=w=(n=F<<21|(w=n<<13|w<<5))+(p=(67108863&(p=I))<<6|k>>>26)|0,I=D,D=(w=n+16777216|0)>>>0<16777216?I+1|0:I,i[A+28>>2]=p-(1040187392&w),p=(D=(I=D)>>>25|0)+(p=M>>>20|N>>>28|S>>>12)|0,I=p=(D=w=(I=(33554431&I)<<7|w>>>25)+(M<<12|N<<4|S<<20)|0)>>>0>>0?p+1|0:p,w=(S=D+33554432|0)>>>0<33554432?I+1|0:I,i[A+32>>2]=D-(-67108864&S),p=t>>>13|(D=K>>>21|U>>>29),I=(p=(M=16777216+(K=K<<11|U<<3|t<<19)|0)>>>0<16777216?p+1|0:p)>>>25|0,p=(D=n=b<<10|e<<2|r<<18)+(n=(33554431&p)<<7|M>>>25)|0,D=I+(F=b>>>22|e>>>30|r>>>14)|0,I=D=p>>>0>>0?D+1|0:D,n=((67108863&(I=(n=p+33554432|0)>>>0<33554432?I+1|0:I))<<6|(D=n)>>>26)+(N=y-(-33554432&G)|0)|0,i[A+20>>2]=n,i[A+16>>2]=p-(-67108864&D),D=Q>>>18|E>>>26|B>>>10,p=(D=(N=16777216+(U=Q<<14|E<<6|B<<22)|0)>>>0<16777216?D+1|0:D)>>>25|0,D=(I=n=_<<13|c<<5|a<<21)+(n=(33554431&D)<<7|N>>>25)|0,I=p+(F=_>>>19|c>>>27|a>>>11)|0,I=D>>>0>>0?I+1|0:I,p=(F=D+33554432|0)>>>0<33554432?I+1|0:I,i[A+8>>2]=D-(-67108864&F),S=(w=(67108863&w)<<6|S>>>26)+(b=s<<18&33292288|g<<10|C<<2)|0,I=D=g>>>22|C>>>30,D=(w=b+16777216|0)>>>0<16777216?I+1|0:I,i[A+36>>2]=S-(33554432&w),p=K+((67108863&p)<<6|F>>>26)|0,i[A+12>>2]=p-(234881024&M),n=U-(2113929216&N)|0,p=Ig((33554431&(I=D))<<7|w>>>25,D=I>>>25|0,19,0),I=f,p=(D=p+h|0)>>>0

>>0?I+1|0:I,w=((67108863&(p=(I=D+33554432|0)>>>0<33554432?p+1|0:p))<<6|I>>>26)+n|0,i[A+4>>2]=w,i[A>>2]=D-(-67108864&I)}function pA(A,I,g,B,E,a,_,c){A|=0,I|=0,g|=0,B|=0,E|=0,a|=0,_|=0;var t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0;if(1==(-7&(c|=0))){A:{I:{g:{C:{B:{Q:{i:{if(B){o:{E:{if(c>>>0<=3){for(;;){y=r;a:{_:{c:{t:{for(;;){if(t=(t=(e=C[g+y|0])-65|0)&(~(90-e)&~t)>>>8&255|e+4&(~(e+65488)&~(57-e))>>>8&255|e+185&(~(e+65439)&~(122-e))>>>8&255|~(1+(16336^e))>>>8&63|~(1+(16340^e))>>>8&62,255!=(0|(t|=(t-1&1+(65470^e))>>>8&255)))break t;if(t=0,!E)break o;if(!kI(E,e))break;if((y=y+1|0)>>>0>=B>>>0)break c}r=y;break o}if(D=t+(D<<6)|0,s>>>0>1)break _;s=s+6|0;break a}r=(A=r+1|0)>>>0>>0?B:A;break o}if(s=s-2|0,I>>>0<=h>>>0)break E;C[A+h|0]=D>>>s,h=h+1|0}if(t=0,!((r=y+1|0)>>>0>>0))break}break o}for(;;){a:{if(t=(t=(e=C[g+y|0])-65|0)&(~(90-e)&~t)>>>8&255|e+4&(~(e+65488)&~(57-e))>>>8&255|e+185&(~(e+65439)&~(122-e))>>>8&255|~(1+(16288^e))>>>8&63|~(1+(16338^e))>>>8&62,255==(0|(t|=(t-1&1+(65470^e))>>>8&255))){if(t=0,!E)break o;if(kI(E,e)){if((y=y+1|0)>>>0>=B>>>0)break a;continue}r=y;break o}if(D=t+(D<<6)|0,s>>>0<2)s=s+6|0;else{if(s=s-2|0,I>>>0<=h>>>0)break E;C[A+h|0]=D>>>s,h=h+1|0}if(t=0,(r=y+1|0)>>>0>=B>>>0)break o;y=r;continue}break}r=(A=r+1|0)>>>0>>0?B:A;break o}r=y,i[9404]=68,t=1}if(s>>>0>4)break i;A=r}else A=0;if(I=-1,t){r=A;break A}if(~(-1<>>0<2){c=A;break B}if(r=A>>>0>B>>>0?A:B,y=s>>>1|0,!E)break Q;for(c=A;;){if((0|c)==(0|r)){t=68;break C}if(61!=(0|(A=C[g+c|0]))){if(!kI(E,A)){t=28,r=c;break C}}else y=y-1|0;if(c=c+1|0,!y)break}break B}I=-1;break A}if(t=68,A>>>0>=B>>>0)break C;if(61!=o[A+g|0]){r=A,t=28;break C}if(c=A+y|0,1!=(0|y)){if((0|(s=A+1|0))==(0|r))break C;if(61!=o[g+s|0]){r=s,t=28;break C}if(2!=(0|y)){if((0|(A=A+2|0))==(0|r))break C;if(t=28,r=A,61!=o[A+g|0])break C}}}if(I=0,E)break g;break I}i[9404]=t;break A}if(!(B>>>0<=c>>>0)){for(;;){if(!kI(E,C[g+c|0]))break I;if((0|(c=c+1|0))==(0|B))break}c=B}}r=c,f=h}return _?i[_>>2]=g+r:(0|B)!=(0|r)&&(i[9404]=28,I=-1),a&&(i[a>>2]=f),0|I}rC(),Q()}function wA(A,I,g,B){A|=0,I|=0,g|=0;var Q=0,i=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0;for((B|=0)?(Q=o[B+12|0]|o[B+13|0]<<8|o[B+14|0]<<16|o[B+15|0]<<24,_=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,c=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,B=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24):(Q=1797285236,_=2036477234,c=857760878,B=1634760805),i=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,a=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,E=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,f=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,D=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,p=20,s=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,h=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,r=o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24,e=o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24,y=o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24,I=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,g=o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24;t=Lg(g+c|0,7)^i,w=Lg(t+c|0,9)^D,r=Lg(B+s|0,7)^r,n=Lg(r+B|0,9)^a,k=Lg(n+r|0,13)^s,e=Lg(Q+h|0,7)^e,E=Lg(e+Q|0,9)^E,a=Lg(E+e|0,13)^h,Q=Lg(E+a|0,18)^Q,i=Lg(I+_|0,7)^f,s=k^Lg(Q+i|0,7),D=w^Lg(s+Q|0,9),f=Lg(s+D|0,13)^i,Q=Lg(D+f|0,18)^Q,y=Lg(i+_|0,9)^y,F=Lg(y+i|0,13)^I,I=Lg(F+y|0,18)^_,h=Lg(I+t|0,7)^a,a=Lg(h+I|0,9)^n,i=Lg(a+h|0,13)^t,_=Lg(i+a|0,18)^I,t=Lg(t+w|0,13)^g,g=Lg(t+w|0,18)^c,I=Lg(g+r|0,7)^F,E=Lg(I+g|0,9)^E,r=Lg(I+E|0,13)^r,c=Lg(E+r|0,18)^g,B=Lg(n+k|0,18)^B,g=Lg(B+e|0,7)^t,y=Lg(g+B|0,9)^y,e=Lg(g+y|0,13)^e,B=Lg(y+e|0,18)^B,t=p>>>0>2,p=p-2|0,t;);return C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+28|0]=i,C[A+29|0]=i>>>8,C[A+30|0]=i>>>16,C[A+31|0]=i>>>24,C[A+24|0]=a,C[A+25|0]=a>>>8,C[A+26|0]=a>>>16,C[A+27|0]=a>>>24,C[A+20|0]=E,C[A+21|0]=E>>>8,C[A+22|0]=E>>>16,C[A+23|0]=E>>>24,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,C[A+12|0]=Q,C[A+13|0]=Q>>>8,C[A+14|0]=Q>>>16,C[A+15|0]=Q>>>24,C[A+8|0]=_,C[A+9|0]=_>>>8,C[A+10|0]=_>>>16,C[A+11|0]=_>>>24,C[A+4|0]=c,C[A+5|0]=c>>>8,C[A+6|0]=c>>>16,C[A+7|0]=c>>>24,0}function nA(A,I){var g,B,Q,E,a=0,_=0,c=0,t=0,r=0,e=0;for(s=g=s-480|0;c=(_=g+288|0)+(a<<1)|0,t=o[I+a|0],C[c+1|0]=t>>>4,C[0|c]=15&t,_=_+((c=1|a)<<1)|0,c=o[I+c|0],C[_+1|0]=c>>>4,C[0|_]=15&c,32!=(0|(a=a+2|0)););for(I=0;a=8+(_=(a=I)+o[0|(I=(g+288|0)+r|0)]|0)|0,C[0|I]=_-(240&a),a=8+(_=o[I+1|0]+(a<<24>>24>>4)|0)|0,C[I+1|0]=_-(240&a),a=8+(_=o[I+2|0]+(a<<24>>24>>4)|0)|0,C[I+2|0]=_-(240&a),I=a<<24>>24>>4,63!=(0|(r=r+3|0)););for(C[g+351|0]=o[g+351|0]+I,i[A+32>>2]=0,i[A+36>>2]=0,i[A+24>>2]=0,i[A+28>>2]=0,i[A+16>>2]=0,i[A+20>>2]=0,i[A+8>>2]=0,i[A+12>>2]=0,i[A>>2]=0,i[A+4>>2]=0,i[A+44>>2]=0,i[A+48>>2]=0,i[A+40>>2]=1,i[A+52>>2]=0,i[A+56>>2]=0,i[A+60>>2]=0,i[A+64>>2]=0,i[A+68>>2]=0,i[A+72>>2]=0,i[A+76>>2]=0,i[A+80>>2]=1,bg(A+84|0,0,76),Q=A+120|0,r=A+80|0,I=A+40|0,_=g+208|0,B=g+168|0,c=g+248|0,a=1;zA(e=g+8|0,a>>>1|0,C[(g+288|0)+a|0]),DA(t=g+128|0,A,e),b(A,t,c),b(I,B,_),b(r,_,c),b(Q,t,B),e=a>>>0<62,a=a+2|0,e;);for(a=i[A+36>>2],i[g+392>>2]=i[A+32>>2],i[g+396>>2]=a,a=i[A+28>>2],i[g+384>>2]=i[A+24>>2],i[g+388>>2]=a,a=i[A+20>>2],i[g+376>>2]=i[A+16>>2],i[g+380>>2]=a,a=i[A+12>>2],i[g+368>>2]=i[A+8>>2],i[g+372>>2]=a,a=i[A+4>>2],i[g+360>>2]=i[A>>2],i[g+364>>2]=a,a=i[I+12>>2],i[g+408>>2]=i[I+8>>2],i[g+412>>2]=a,a=i[I+20>>2],i[g+416>>2]=i[I+16>>2],i[g+420>>2]=a,a=i[I+28>>2],i[g+424>>2]=i[I+24>>2],i[g+428>>2]=a,a=i[I+36>>2],i[g+432>>2]=i[I+32>>2],i[g+436>>2]=a,a=i[I+4>>2],i[g+400>>2]=i[I>>2],i[g+404>>2]=a,a=i[r+12>>2],i[g+448>>2]=i[r+8>>2],i[g+452>>2]=a,a=i[r+20>>2],i[g+456>>2]=i[r+16>>2],i[g+460>>2]=a,a=i[r+28>>2],i[g+464>>2]=i[r+24>>2],i[g+468>>2]=a,a=i[r+36>>2],i[g+472>>2]=i[r+32>>2],i[g+476>>2]=a,a=i[r+4>>2],i[g+440>>2]=i[r>>2],i[g+444>>2]=a,KA(t,a=g+360|0),b(a,t,c),b(e=g+400|0,B,_),b(E=g+440|0,_,c),KA(t,a),b(a,t,c),b(e,B,_),b(E,_,c),KA(t,a),b(a,t,c),b(e,B,_),b(E,_,c),KA(t,a),b(A,t,c),b(I,B,_),b(r,_,c),b(Q,t,B),a=0;zA(e=g+8|0,a>>>1|0,C[(g+288|0)+a|0]),DA(t=g+128|0,A,e),b(A,t,c),b(I,B,_),b(r,_,c),b(Q,t,B),t=a>>>0<62,a=a+2|0,t;);s=g+480|0}function kA(A,I){A|=0;var g,C,B,Q,i,o=0,E=0,a=0,_=0,c=0,t=0;for(s=g=s-736|0,n(c=g+704|0,I|=0,I),n(E=g+224|0,I,c),n(_=g+672|0,I,E),n(a=g+640|0,_,_),n(C=g+416|0,c,a),n(c=g+320|0,I,C),n(o=g+608|0,a,a),n(a=g+288|0,c,c),n(t=g+576|0,C,a),n(i=g+448|0,o,a),n(B=g+544|0,t,t),n(t=g+384|0,o,B),n(Q=g+352|0,E,t),n(E=g+192|0,o,Q),n(o=g+160|0,_,E),n(g+96|0,_,o),n(E=g+512|0,B,Q),n(o=g+480|0,_,E),n(E=g+256|0,i,o),n(g+128|0,a,E),n(a=g- -64|0,t,o),n(o=g+32|0,_,a),n(g,C,o),n(A,c,g),_=0;n(A,A,A),126!=(0|(_=_+1|0)););return n(A,A,g+352|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+704|0),n(A,A,g),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+160|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+256|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g- -64|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+96|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+320|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+512|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+192|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+480|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+128|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+32|0),s=g+736|0,0-GI(I,32)|0}function FA(A,I,g){A|=0;var B,Q,i,E,a=0,_=0,c=0,t=0,r=0;return s=i=s-160|0,FI(I|=0,g|=0,32,0),C[0|I]=248&o[0|I],C[I+31|0]=63&o[I+31|0]|64,nA(i,I),tg(A,i),_=o[(Q=g)+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24,a=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,c=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,t=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,r=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,g=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,E=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,B=I,I=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,C[B+24|0]=I,C[B+25|0]=I>>>8,C[B+26|0]=I>>>16,C[B+27|0]=I>>>24,C[B+28|0]=E,C[B+29|0]=E>>>8,C[B+30|0]=E>>>16,C[B+31|0]=E>>>24,C[B+16|0]=c,C[B+17|0]=c>>>8,C[B+18|0]=c>>>16,C[B+19|0]=c>>>24,C[B+20|0]=t,C[B+21|0]=t>>>8,C[B+22|0]=t>>>16,C[B+23|0]=t>>>24,C[B+8|0]=_,C[B+9|0]=_>>>8,C[B+10|0]=_>>>16,C[B+11|0]=_>>>24,C[B+12|0]=a,C[B+13|0]=a>>>8,C[B+14|0]=a>>>16,C[B+15|0]=a>>>24,C[0|B]=r,C[B+1|0]=r>>>8,C[B+2|0]=r>>>16,C[B+3|0]=r>>>24,C[B+4|0]=g,C[B+5|0]=g>>>8,C[B+6|0]=g>>>16,C[B+7|0]=g>>>24,c=o[(a=A)+8|0]|o[a+9|0]<<8|o[a+10|0]<<16|o[a+11|0]<<24,t=o[a+12|0]|o[a+13|0]<<8|o[a+14|0]<<16|o[a+15|0]<<24,r=o[a+16|0]|o[a+17|0]<<8|o[a+18|0]<<16|o[a+19|0]<<24,g=o[a+20|0]|o[a+21|0]<<8|o[a+22|0]<<16|o[a+23|0]<<24,I=o[0|a]|o[a+1|0]<<8|o[a+2|0]<<16|o[a+3|0]<<24,A=o[a+4|0]|o[a+5|0]<<8|o[a+6|0]<<16|o[a+7|0]<<24,_=o[a+28|0]|o[a+29|0]<<8|o[a+30|0]<<16|o[a+31|0]<<24,a=o[a+24|0]|o[a+25|0]<<8|o[a+26|0]<<16|o[a+27|0]<<24,C[B+56|0]=a,C[B+57|0]=a>>>8,C[B+58|0]=a>>>16,C[B+59|0]=a>>>24,C[B+60|0]=_,C[B+61|0]=_>>>8,C[B+62|0]=_>>>16,C[B+63|0]=_>>>24,C[B+48|0]=r,C[B+49|0]=r>>>8,C[B+50|0]=r>>>16,C[B+51|0]=r>>>24,C[B+52|0]=g,C[B+53|0]=g>>>8,C[B+54|0]=g>>>16,C[B+55|0]=g>>>24,C[B+40|0]=c,C[B+41|0]=c>>>8,C[B+42|0]=c>>>16,C[B+43|0]=c>>>24,C[B+44|0]=t,C[B+45|0]=t>>>8,C[B+46|0]=t>>>16,C[B+47|0]=t>>>24,C[B+32|0]=I,C[B+33|0]=I>>>8,C[B+34|0]=I>>>16,C[B+35|0]=I>>>24,C[B+36|0]=A,C[B+37|0]=A>>>8,C[B+38|0]=A>>>16,C[B+39|0]=A>>>24,s=i+160|0,0}function SA(A,I,g,B){var Q,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0;if(s=Q=s-704|0,g|B)if(E=(B<<3|g>>>29)+(a=c=i[A+76>>2])|0,_=(r=i[A+72>>2])+(t=g<<3)|0,i[A+72>>2]=_,E=_>>>0>>0?E+1|0:E,i[A+76>>2]=E,c=i[A+68>>2],E=(E=_=(0|E)==(0|a)&_>>>0>>0|E>>>0>>0)>>>0>(_=_+i[A+64>>2]|0)>>>0?c+1|0:c,_=(t=B>>>29|0)+_|0,i[A+64>>2]=_,i[A+68>>2]=_>>>0>>0?E+1|0:E,_=A+80|0,(0|B)==(0|(c=f=0-((E=0)+((t=127&((7&a)<<29|r>>>3))>>>0>128)|0)|0))&g>>>0>=(r=128-t|0)>>>0|B>>>0>c>>>0){if(a=0,c=0,!E&(127^t)>>>0>=3|E)for(p=252&r;C[(E=a+t|0)+_|0]=o[I+a|0],C[_+(t+(E=1|a)|0)|0]=o[I+E|0],C[_+(t+(E=2|a)|0)|0]=o[I+E|0],C[_+(t+(E=3|a)|0)|0]=o[I+E|0],E=c,c=(a=a+4|0)>>>0<4?E+1|0:E,E=h,h=E=(e=e+4|0)>>>0<4?E+1|0:E,(0|e)!=(0|p)|(0|D)!=(0|E););if(h=E=0,E|(e=3&r))for(;C[(E=a+t|0)+_|0]=o[I+a|0],E=c,c=(a=a+1|0)?E:E+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|e)!=(0|y)|(0|h)!=(0|E););if(k(A,_,Q,a=Q+640|0),I=I+r|0,!(B=B-((g>>>0>>0)+f|0)|0)&(g=g-r|0)>>>0>127|B)for(;k(A,I,Q,a),I=I+128|0,!(B=B-(g>>>0<128)|0)&(g=g-128|0)>>>0>127|B;);if(g|B){if(A=3&g,y=0,D=0,a=0,c=0,!B&g>>>0>=4|B)for(e=124&g,r=0,g=0,B=0;C[a+_|0]=o[I+a|0],C[(E=1|a)+_|0]=o[I+E|0],C[(E=2|a)+_|0]=o[I+E|0],C[(E=3|a)+_|0]=o[I+E|0],E=c,c=(a=a+4|0)>>>0<4?E+1|0:E,E=B,B=E=(g=g+4|0)>>>0<4?E+1|0:E,(0|g)!=(0|e)|(0|r)!=(0|E););if(A|h)for(;C[a+_|0]=o[I+a|0],c=(a=a+1|0)?c:c+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|A)!=(0|y)|(0|h)!=(0|E););}XC(Q,704)}else{if(a=0,c=0,!B&g>>>0>=4|B)for(A=-4&g;C[(E=a+t|0)+_|0]=o[I+a|0],C[_+(r=t+(E=1|a)|0)|0]=o[I+E|0],C[_+(r=t+(E=2|a)|0)|0]=o[I+E|0],C[_+(r=t+(E=3|a)|0)|0]=o[I+E|0],E=c,c=(a=a+4|0)>>>0<4?E+1|0:E,E=h,h=E=(e=e+4|0)>>>0<4?E+1|0:E,(0|A)!=(0|e)|(0|B)!=(0|E););if((g&=3)|(A=0))for(;C[(B=a+t|0)+_|0]=o[I+a|0],c=(a=a+1|0)?c:c+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|g)!=(0|y)|(0|A)!=(0|E););}return s=Q+704|0,0}function NA(A,I,g){var C,B=0,Q=0,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0;s=i[I+4>>2],B=i[A+4>>2],h=i[I+8>>2],Q=i[A+8>>2],D=i[I+12>>2],o=i[A+12>>2],f=i[I+16>>2],E=i[A+16>>2],p=i[I+20>>2],a=i[A+20>>2],y=i[I+24>>2],_=i[A+24>>2],w=i[I+28>>2],c=i[A+28>>2],n=i[I+32>>2],t=i[A+32>>2],k=i[I+36>>2],r=i[A+36>>2],g=0-g|0,e=i[A>>2],i[A>>2]=g&(e^i[I>>2])^e,i[A+36>>2]=r^g&(r^k),i[A+32>>2]=t^g&(t^n),i[A+28>>2]=c^g&(c^w),i[A+24>>2]=_^g&(_^y),i[A+20>>2]=a^g&(a^p),i[A+16>>2]=E^g&(E^f),i[A+12>>2]=o^g&(o^D),i[A+8>>2]=Q^g&(Q^h),i[A+4>>2]=B^g&(B^s),B=i[A+44>>2],s=i[I+44>>2],Q=i[A+48>>2],h=i[I+48>>2],o=i[A+52>>2],D=i[I+52>>2],E=i[A+56>>2],f=i[I+56>>2],a=i[A+60>>2],p=i[I+60>>2],_=i[(y=A- -64|0)>>2],w=i[I- -64>>2],c=i[A+68>>2],n=i[I+68>>2],t=i[A+72>>2],k=i[I+72>>2],r=i[A+40>>2],e=i[I+40>>2],C=i[A+76>>2],i[A+76>>2]=C^g&(i[I+76>>2]^C),i[A+72>>2]=t^g&(t^k),i[A+68>>2]=c^g&(c^n),i[y>>2]=_^g&(_^w),i[A+60>>2]=a^g&(a^p),i[A+56>>2]=E^g&(E^f),i[A+52>>2]=o^g&(o^D),i[A+48>>2]=Q^g&(Q^h),i[A+44>>2]=B^g&(B^s),i[A+40>>2]=r^g&(r^e),B=i[A+84>>2],s=i[I+84>>2],Q=i[A+88>>2],h=i[I+88>>2],o=i[A+92>>2],D=i[I+92>>2],E=i[A+96>>2],f=i[I+96>>2],a=i[A+100>>2],p=i[I+100>>2],_=i[A+104>>2],y=i[I+104>>2],c=i[A+108>>2],w=i[I+108>>2],t=i[A+112>>2],n=i[I+112>>2],r=i[A+80>>2],k=i[I+80>>2],e=i[A+116>>2],i[A+116>>2]=g&(e^i[I+116>>2])^e,i[A+112>>2]=t^g&(t^n),i[A+108>>2]=c^g&(c^w),i[A+104>>2]=_^g&(_^y),i[A+100>>2]=a^g&(a^p),i[A+96>>2]=E^g&(E^f),i[A+92>>2]=o^g&(o^D),i[A+88>>2]=Q^g&(Q^h),i[A+84>>2]=B^g&(B^s),i[A+80>>2]=r^g&(r^k),B=i[A+124>>2],s=i[I+124>>2],Q=i[A+128>>2],h=i[I+128>>2],o=i[A+132>>2],D=i[I+132>>2],E=i[A+136>>2],f=i[I+136>>2],a=i[A+140>>2],p=i[I+140>>2],_=i[A+144>>2],y=i[I+144>>2],c=i[A+148>>2],w=i[I+148>>2],t=i[A+152>>2],n=i[I+152>>2],r=i[A+120>>2],k=i[I+120>>2],e=i[I+156>>2],I=i[A+156>>2],i[A+156>>2]=g&(e^I)^I,i[A+152>>2]=t^g&(t^n),i[A+148>>2]=c^g&(c^w),i[A+144>>2]=_^g&(_^y),i[A+140>>2]=a^g&(a^p),i[A+136>>2]=E^g&(E^f),i[A+132>>2]=o^g&(o^D),i[A+128>>2]=Q^g&(Q^h),i[A+124>>2]=B^g&(B^s),i[A+120>>2]=r^g&(r^k)}function GA(A,I,g){var B,Q,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0;return s=B=s-320|0,R(o=B+240|0,g),b(o,o,g),R(A,o),b(A,A,g),b(A,A,I),PA(A,A),b(A,A,o),b(A,A,I),R(o=B+192|0,A),b(o,o,g),E=i[I+4>>2],h=i[I+8>>2],f=i[I+12>>2],p=i[I+16>>2],w=i[I+20>>2],n=i[I+24>>2],k=i[I+28>>2],F=i[I+32>>2],S=i[I>>2],g=i[B+192>>2],o=i[B+196>>2],a=i[B+200>>2],_=i[B+204>>2],c=i[B+208>>2],t=i[B+212>>2],r=i[B+216>>2],e=i[B+220>>2],y=i[B+224>>2],D=i[B+228>>2],N=i[I+36>>2],i[B+180>>2]=D-N,i[B+176>>2]=y-F,i[B+172>>2]=e-k,i[B+168>>2]=r-n,i[B+164>>2]=t-w,i[B+160>>2]=c-p,i[B+156>>2]=_-f,i[B+152>>2]=a-h,i[B+148>>2]=o-E,i[B+144>>2]=g-S,i[B+132>>2]=D+N,i[B+128>>2]=y+F,i[B+124>>2]=e+k,i[B+120>>2]=r+n,i[B+116>>2]=t+w,i[B+112>>2]=c+p,i[B+108>>2]=_+f,i[B+104>>2]=a+h,i[B+100>>2]=o+E,i[B+96>>2]=g+S,b(E=B+48|0,I,1632),i[B+84>>2]=D+i[B+84>>2],i[B+80>>2]=y+i[B+80>>2],i[B+76>>2]=e+i[B+76>>2],i[B+72>>2]=r+i[B+72>>2],i[B+68>>2]=t+i[B+68>>2],i[B+64>>2]=c+i[B+64>>2],i[B+60>>2]=_+i[B+60>>2],i[B+56>>2]=a+i[B+56>>2],i[B+52>>2]=o+i[B+52>>2],i[B+48>>2]=g+i[B+48>>2],QI(B,B+144|0),f=GI(B,32),QI(B,B+96|0),h=GI(B,32),QI(B,E),I=GI(B,32),b(B,A,1632),y=i[A+4>>2],e=i[A+8>>2],r=i[A+12>>2],t=i[A+16>>2],c=i[A+20>>2],_=i[A+24>>2],a=i[A+28>>2],o=i[A+32>>2],E=i[A>>2],p=i[B>>2],w=i[B+4>>2],n=i[B+8>>2],k=i[B+12>>2],F=i[B+16>>2],S=i[B+20>>2],D=i[B+24>>2],N=i[B+28>>2],Q=i[B+32>>2],g=(I=0-(I|h)|0)&((g=i[A+36>>2])^i[B+36>>2])^g,i[A+36>>2]=g,o^=I&(o^Q),i[A+32>>2]=o,a^=I&(a^N),i[A+28>>2]=a,_^=I&(_^D),i[A+24>>2]=_,c^=I&(c^S),i[A+20>>2]=c,t^=I&(t^F),i[A+16>>2]=t,r^=I&(r^k),i[A+12>>2]=r,e^=I&(e^n),i[A+8>>2]=e,y^=I&(y^w),i[A+4>>2]=y,E^=I&(E^p),i[A>>2]=E,QI(B+288|0,A),I=0-(1&C[B+288|0])|0,i[A+36>>2]=g^I&(g^0-g),i[A+32>>2]=o^I&(o^0-o),i[A+28>>2]=a^I&(a^0-a),i[A+24>>2]=_^I&(_^0-_),i[A+20>>2]=c^I&(c^0-c),i[A+16>>2]=t^I&(t^0-t),i[A+12>>2]=r^I&(r^0-r),i[A+8>>2]=e^I&(e^0-e),i[A+4>>2]=y^I&(y^0-y),i[A>>2]=E^I&(E^0-E),s=B+320|0,h|f}function MA(A,I){var g,B,Q,E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0;return s=g=s-320|0,fA(B=A+40|0,I),i[A+84>>2]=0,i[A+88>>2]=0,i[A+80>>2]=1,i[A+92>>2]=0,i[A+96>>2]=0,i[A+100>>2]=0,i[A+104>>2]=0,i[A+108>>2]=0,i[A+112>>2]=0,i[A+116>>2]=0,R(a=g+240|0,B),b(_=g+192|0,a,1584),i[g+192>>2]=i[g+192>>2]+1,c=i[g+240>>2]-1|0,i[g+240>>2]=c,t=i[g+244>>2],r=i[g+248>>2],e=i[g+252>>2],y=i[g+256>>2],h=i[g+260>>2],D=i[g+264>>2],f=i[g+268>>2],p=i[g+272>>2],w=i[g+276>>2],b(A,a,_),PA(A,A),b(A,a,A),R(a=g+144|0,A),b(a,a,_),a=i[g+180>>2],i[g+132>>2]=a-w,_=i[g+176>>2],i[g+128>>2]=_-p,n=i[g+172>>2],i[g+124>>2]=n-f,k=i[g+168>>2],i[g+120>>2]=k-D,F=i[g+164>>2],i[g+116>>2]=F-h,S=i[g+160>>2],i[g+112>>2]=S-y,N=i[g+156>>2],i[g+108>>2]=N-e,G=i[g+152>>2],i[g+104>>2]=G-r,M=i[g+148>>2],i[g+100>>2]=M-t,K=i[g+144>>2],i[g+96>>2]=K-c,i[g+84>>2]=a+w,i[g+80>>2]=_+p,i[g+76>>2]=f+n,i[g+72>>2]=D+k,i[g+68>>2]=h+F,i[g+64>>2]=y+S,i[g+60>>2]=e+N,i[g+56>>2]=r+G,i[g+52>>2]=t+M,i[g+48>>2]=c+K,QI(g,g+96|0),p=GI(g,32),QI(g,g+48|0),n=GI(g,32),b(g,A,1632),f=i[A+4>>2],D=i[A+8>>2],h=i[A+12>>2],y=i[A+16>>2],e=i[A+20>>2],r=i[A+24>>2],t=i[A+28>>2],c=i[A+32>>2],w=i[A>>2],k=i[g>>2],F=i[g+4>>2],S=i[g+8>>2],N=i[g+12>>2],G=i[g+16>>2],M=i[g+20>>2],K=i[g+24>>2],Q=i[g+28>>2],E=i[g+32>>2],_=(a=p-1|0)&((_=i[A+36>>2])^i[g+36>>2])^_,i[A+36>>2]=_,c^=a&(c^E),i[A+32>>2]=c,t^=a&(t^Q),i[A+28>>2]=t,r^=a&(r^K),i[A+24>>2]=r,e^=a&(e^M),i[A+20>>2]=e,y^=a&(y^G),i[A+16>>2]=y,h^=a&(h^N),i[A+12>>2]=h,D^=a&(D^S),i[A+8>>2]=D,f^=a&(f^F),i[A+4>>2]=f,a=w^a&(w^k),i[A>>2]=a,QI(g+288|0,A),I=0-(1&C[g+288|0]^o[I+31|0]>>>7^o[38144]>>>2)|0,i[A+36>>2]=_^I&(_^0-_),i[A+32>>2]=c^I&(c^0-c),i[A+28>>2]=t^I&(t^0-t),i[A+24>>2]=r^I&(r^0-r),i[A+20>>2]=e^I&(e^0-e),i[A+16>>2]=y^I&(y^0-y),i[A+12>>2]=h^I&(h^0-h),i[A+8>>2]=D^I&(D^0-D),i[A+4>>2]=f^I&(f^0-f),i[A>>2]=a^I&(a^0-a),b(A+120|0,A,B),s=g+320|0,(p|n)-1|0}function KA(A,I){var g,C,B,Q,o,E,a,_,c,t,r,e,y,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0;s=g=s-48|0,R(A,I),R(A+80|0,I+40|0),v(A+120|0,I+80|0),h=i[I+44>>2],D=i[I+4>>2],n=i[I+48>>2],f=i[I+8>>2],k=i[I+52>>2],p=i[I+12>>2],F=i[I+56>>2],w=i[I+16>>2],K=i[I+60>>2],S=i[I+20>>2],U=i[I- -64>>2],N=i[I+24>>2],b=i[I+68>>2],G=i[I+28>>2],H=i[I+72>>2],Y=i[I+32>>2],J=i[I+40>>2],M=i[I>>2],i[A+76>>2]=i[I+76>>2]+i[I+36>>2],i[A+72>>2]=H+Y,i[A+68>>2]=b+G,i[(C=A- -64|0)>>2]=U+N,i[A+60>>2]=K+S,i[A+56>>2]=F+w,i[A+52>>2]=k+p,i[A+48>>2]=n+f,i[A+44>>2]=h+D,i[A+40>>2]=J+M,R(g,A+40|0),I=i[A+4>>2],h=i[A+84>>2],D=i[A+8>>2],n=i[A+88>>2],f=i[A+12>>2],k=i[A+92>>2],p=i[A+16>>2],F=i[A+96>>2],w=i[A+20>>2],K=i[A+100>>2],S=i[A+24>>2],U=i[A+104>>2],N=i[A+28>>2],b=i[A+108>>2],G=i[A+32>>2],H=i[A+112>>2],Y=i[A>>2],J=i[A+80>>2],Q=(M=i[A+116>>2])-(B=i[A+36>>2])|0,i[A+116>>2]=Q,o=H-G|0,i[A+112>>2]=o,E=b-N|0,i[A+108>>2]=E,a=U-S|0,i[A+104>>2]=a,_=K-w|0,i[A+100>>2]=_,c=F-p|0,i[A+96>>2]=c,t=k-f|0,i[A+92>>2]=t,r=n-D|0,i[A+88>>2]=r,e=h-I|0,i[A+84>>2]=e,y=J-Y|0,i[A+80>>2]=y,M=M+B|0,i[A+76>>2]=M,G=G+H|0,i[A+72>>2]=G,N=N+b|0,i[A+68>>2]=N,S=S+U|0,i[C>>2]=S,w=w+K|0,i[A+60>>2]=w,p=p+F|0,i[A+56>>2]=p,f=f+k|0,i[A+52>>2]=f,D=D+n|0,i[A+48>>2]=D,I=I+h|0,i[A+44>>2]=I,h=Y+J|0,i[A+40>>2]=h,n=i[g>>2],k=i[g+4>>2],F=i[g+8>>2],K=i[g+12>>2],U=i[g+16>>2],b=i[g+20>>2],H=i[g+24>>2],Y=i[g+28>>2],J=i[g+32>>2],i[A+36>>2]=i[g+36>>2]-M,i[A+32>>2]=J-G,i[A+28>>2]=Y-N,i[A+24>>2]=H-S,i[A+20>>2]=b-w,i[A+16>>2]=U-p,i[A+12>>2]=K-f,i[A+8>>2]=F-D,i[A+4>>2]=k-I,i[A>>2]=n-h,I=i[A+124>>2],h=i[A+128>>2],D=i[A+132>>2],n=i[A+136>>2],f=i[A+140>>2],k=i[A+144>>2],p=i[A+148>>2],F=i[A+152>>2],w=i[A+120>>2],i[A+156>>2]=i[A+156>>2]-Q,i[A+152>>2]=F-o,i[A+148>>2]=p-E,i[A+144>>2]=k-a,i[A+140>>2]=f-_,i[A+136>>2]=n-c,i[A+132>>2]=D-t,i[A+128>>2]=h-r,i[A+124>>2]=I-e,i[A+120>>2]=w-y,s=g+48|0}function UA(A,I,g,B){var Q,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0;if(s=Q=s-288|0,g|B)if(E=(B<<3|g>>>29)+(a=c=i[A+36>>2])|0,_=(t=i[A+32>>2])+(r=g<<3)|0,i[A+32>>2]=_,i[A+36>>2]=_>>>0>>0?E+1|0:E,c=A+40|0,(0|B)==(0|(_=f=0-((E=0)+((r=63&((7&a)<<29|t>>>3))>>>0>64)|0)|0))&g>>>0>=(t=64-r|0)>>>0|B>>>0>_>>>0){if(a=0,_=0,!E&(63^r)>>>0>=3|E)for(p=124&t;C[(E=a+r|0)+c|0]=o[I+a|0],C[c+(r+(E=1|a)|0)|0]=o[I+E|0],C[c+(r+(E=2|a)|0)|0]=o[I+E|0],C[c+(r+(E=3|a)|0)|0]=o[I+E|0],E=_,_=(a=a+4|0)>>>0<4?E+1|0:E,E=h,h=E=(e=e+4|0)>>>0<4?E+1|0:E,(0|e)!=(0|p)|(0|D)!=(0|E););if(h=E=0,E|(e=3&t))for(;C[(E=a+r|0)+c|0]=o[I+a|0],E=_,_=(a=a+1|0)?E:E+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|e)!=(0|y)|(0|h)!=(0|E););if(J(A,c,Q,a=Q+256|0),I=I+t|0,!(B=B-((g>>>0>>0)+f|0)|0)&(g=g-t|0)>>>0>63|B)for(;J(A,I,Q,a),I=I- -64|0,E=B-1|0,!(B=(g=g+-64|0)>>>0<4294967232?E+1|0:E)&g>>>0>63|B;);if(g|B){if(A=3&g,y=0,D=0,a=0,_=0,!B&g>>>0>=4|B)for(e=60&g,t=0,g=0,B=0;C[a+c|0]=o[I+a|0],C[(E=1|a)+c|0]=o[I+E|0],C[(E=2|a)+c|0]=o[I+E|0],C[(E=3|a)+c|0]=o[I+E|0],E=_,_=(a=a+4|0)>>>0<4?E+1|0:E,E=B,B=E=(g=g+4|0)>>>0<4?E+1|0:E,(0|g)!=(0|e)|(0|t)!=(0|E););if(A|h)for(;C[a+c|0]=o[I+a|0],_=(a=a+1|0)?_:_+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|A)!=(0|y)|(0|h)!=(0|E););}XC(Q,288)}else{if(a=0,_=0,!B&g>>>0>=4|B)for(A=-4&g;C[(E=a+r|0)+c|0]=o[I+a|0],C[c+(t=r+(E=1|a)|0)|0]=o[I+E|0],C[c+(t=r+(E=2|a)|0)|0]=o[I+E|0],C[c+(t=r+(E=3|a)|0)|0]=o[I+E|0],E=_,_=(a=a+4|0)>>>0<4?E+1|0:E,E=h,h=E=(e=e+4|0)>>>0<4?E+1|0:E,(0|A)!=(0|e)|(0|B)!=(0|E););if((g&=3)|(A=0))for(;C[(B=a+r|0)+c|0]=o[I+a|0],_=(a=a+1|0)?_:_+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|g)!=(0|y)|(0|A)!=(0|E););}return s=Q+288|0,0}function bA(A,I,g,C,B,Q){var o=0;i[Q>>2]=8;A:{I:{o=A,o=(A=!I&A>>>0<=32768)?32768:o;g:{C:{if(!(A=A?0:I)&g>>>5>>>0<=o>>>0|A){if(g>>>0>=4096)break C;I=1;break g}if(i[B>>2]=1,A=1,(I=(o>>>0)/(i[Q>>2]<<2>>>0)|0)>>>0<4)break A;if(A=2,I>>>0<8)break A;if(I>>>0<16)return void(i[C>>2]=3);if(I>>>0<32)return void(i[C>>2]=4);if(I>>>0<64)return void(i[C>>2]=5);if(I>>>0<128)return void(i[C>>2]=6);if(I>>>0<256)return void(i[C>>2]=7);if(I>>>0<512)return void(i[C>>2]=8);if(I>>>0<1024)return void(i[C>>2]=9);if(I>>>0<2048)return void(i[C>>2]=10);if(I>>>0<4096)return void(i[C>>2]=11);if(I>>>0<8192)return void(i[C>>2]=12);if(I>>>0<16384)return void(i[C>>2]=13);if(I>>>0<32768)return void(i[C>>2]=14);if(I>>>0<65536)return void(i[C>>2]=15);if(I>>>0<131072)return void(i[C>>2]=16);if(I>>>0<262144)return void(i[C>>2]=17);if(I>>>0<524288)return void(i[C>>2]=18);if(I>>>0<1048576)return void(i[C>>2]=19);if(I>>>0<2097152)return void(i[C>>2]=20);if(I>>>0<4194304)return void(i[C>>2]=21);if(I>>>0<8388608)return void(i[C>>2]=22);if(I>>>0<16777216)return void(i[C>>2]=23);if(I>>>0>=33554432)break I;return void(i[C>>2]=24)}I=2,g>>>0<8192||(I=3,g>>>0<16384||(I=4,g>>>0<32768||(I=5,g>>>0<65536||(I=6,g>>>0<131072||(I=7,g>>>0<262144||(I=8,g>>>0<524288||(I=9,g>>>0<1048576||(I=10,g>>>0<2097152||(I=11,g>>>0<4194304||(I=12,g>>>0<8388608||(I=13,g>>>0<16777216||(I=14,g>>>0<33554432||(I=15,g>>>0<67108864||(I=16,g>>>0<134217728||(I=17,g>>>0<268435456||(I=18,g>>>0<536870912||(I=19,g>>>0<1073741824||(I=(0|g)>=0?20:21))))))))))))))))))}return g=I,i[C>>2]=g,A=(I=A)>>>2|0,I=(3&I)<<30|o>>>2,C=31&g,(63&g)>>>0>=32?(g=0,A=A>>>C|0):(g=A>>>C|0,A=((1<>>C),void(i[B>>2]=((!g&A>>>0>=1073741823|g?1073741823:A)>>>0)/E[Q>>2])}A=I>>>0<67108864?25:26}i[C>>2]=A}function HA(A,I,g){var C,B,Q,o,E,a,_,c,t=0;s=C=s-160|0,i[A>>2]=1,i[A+4>>2]=0,i[A+8>>2]=0,i[A+12>>2]=0,i[A+16>>2]=0,i[A+20>>2]=0,i[A+24>>2]=0,i[A+28>>2]=0,i[A+32>>2]=0,i[A+44>>2]=0,i[A+48>>2]=0,i[A+36>>2]=0,i[A+40>>2]=1,i[A+52>>2]=0,i[A+56>>2]=0,i[A+60>>2]=0,i[A+64>>2]=0,i[A+68>>2]=0,i[A+72>>2]=0,i[A+76>>2]=0,i[A+80>>2]=1,bg(A+84|0,0,76),NA(A,I,(255&(1^(t=g-((g>>31&g)<<1)|0)))-1>>>31|0),NA(A,I+160|0,(255&(2^t))-1>>>31|0),NA(A,I+320|0,(255&(3^t))-1>>>31|0),NA(A,I+480|0,(255&(4^t))-1>>>31|0),NA(A,I+640|0,(255&(5^t))-1>>>31|0),NA(A,I+800|0,(255&(6^t))-1>>>31|0),NA(A,I+960|0,(255&(7^t))-1>>>31|0),NA(A,I+1120|0,(255&(8^t))-1>>>31|0),I=i[A+76>>2],i[C+32>>2]=i[A+72>>2],i[C+36>>2]=I,t=i[4+(I=A- -64|0)>>2],i[C+24>>2]=i[I>>2],i[C+28>>2]=t,I=i[A+60>>2],i[C+16>>2]=i[A+56>>2],i[C+20>>2]=I,I=i[A+52>>2],i[C+8>>2]=i[A+48>>2],i[C+12>>2]=I,I=i[A+44>>2],i[C>>2]=i[A+40>>2],i[C+4>>2]=I,I=i[A+36>>2],i[C+72>>2]=i[A+32>>2],i[C+76>>2]=I,t=i[A+28>>2],i[(I=C- -64|0)>>2]=i[A+24>>2],i[I+4>>2]=t,I=i[A+20>>2],i[C+56>>2]=i[A+16>>2],i[C+60>>2]=I,I=i[A+12>>2],i[C+48>>2]=i[A+8>>2],i[C+52>>2]=I,I=i[A+4>>2],i[C+40>>2]=i[A>>2],i[C+44>>2]=I,I=i[A+92>>2],i[C+88>>2]=i[A+88>>2],i[C+92>>2]=I,I=i[A+100>>2],i[C+96>>2]=i[A+96>>2],i[C+100>>2]=I,I=i[A+108>>2],i[C+104>>2]=i[A+104>>2],i[C+108>>2]=I,I=i[A+116>>2],i[C+112>>2]=i[A+112>>2],i[C+116>>2]=I,I=i[A+84>>2],i[C+80>>2]=i[A+80>>2],i[C+84>>2]=I,I=i[A+124>>2],t=i[A+128>>2],B=i[A+132>>2],Q=i[A+136>>2],o=i[A+140>>2],E=i[A+144>>2],a=i[A+148>>2],_=i[A+152>>2],c=i[A+120>>2],i[C+156>>2]=0-i[A+156>>2],i[C+152>>2]=0-_,i[C+148>>2]=0-a,i[C+144>>2]=0-E,i[C+140>>2]=0-o,i[C+136>>2]=0-Q,i[C+132>>2]=0-B,i[C+128>>2]=0-t,i[C+124>>2]=0-I,i[C+120>>2]=0-c,NA(A,C,(128&g)>>>7|0),s=C+160|0}function YA(A,I){A|=0,I|=0;var g,B,Q,E,a,_=0,c=0,t=0;return s=c=s-192|0,ag(c,32),FI(I,c,32,0),C[0|I]=248&o[0|I],C[I+31|0]=63&o[I+31|0]|64,nA(t=c+32|0,I),tg(A,t),g=c,t=i[c+28>>2],c=i[c+24>>2],C[I+24|0]=c,C[I+25|0]=c>>>8,C[I+26|0]=c>>>16,C[I+27|0]=c>>>24,C[I+28|0]=t,C[I+29|0]=t>>>8,C[I+30|0]=t>>>16,C[I+31|0]=t>>>24,t=i[g+20>>2],c=i[g+16>>2],C[I+16|0]=c,C[I+17|0]=c>>>8,C[I+18|0]=c>>>16,C[I+19|0]=c>>>24,C[I+20|0]=t,C[I+21|0]=t>>>8,C[I+22|0]=t>>>16,C[I+23|0]=t>>>24,t=i[g+12>>2],c=i[g+8>>2],C[I+8|0]=c,C[I+9|0]=c>>>8,C[I+10|0]=c>>>16,C[I+11|0]=c>>>24,C[I+12|0]=t,C[I+13|0]=t>>>8,C[I+14|0]=t>>>16,C[I+15|0]=t>>>24,t=i[g+4>>2],c=i[g>>2],C[0|I]=c,C[I+1|0]=c>>>8,C[I+2|0]=c>>>16,C[I+3|0]=c>>>24,C[I+4|0]=t,C[I+5|0]=t>>>8,C[I+6|0]=t>>>16,C[I+7|0]=t>>>24,B=o[(_=A)+8|0]|o[_+9|0]<<8|o[_+10|0]<<16|o[_+11|0]<<24,Q=o[_+12|0]|o[_+13|0]<<8|o[_+14|0]<<16|o[_+15|0]<<24,E=o[_+16|0]|o[_+17|0]<<8|o[_+18|0]<<16|o[_+19|0]<<24,t=o[_+20|0]|o[_+21|0]<<8|o[_+22|0]<<16|o[_+23|0]<<24,c=o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24,A=o[_+4|0]|o[_+5|0]<<8|o[_+6|0]<<16|o[_+7|0]<<24,a=o[_+28|0]|o[_+29|0]<<8|o[_+30|0]<<16|o[_+31|0]<<24,_=o[_+24|0]|o[_+25|0]<<8|o[_+26|0]<<16|o[_+27|0]<<24,C[I+56|0]=_,C[I+57|0]=_>>>8,C[I+58|0]=_>>>16,C[I+59|0]=_>>>24,C[I+60|0]=a,C[I+61|0]=a>>>8,C[I+62|0]=a>>>16,C[I+63|0]=a>>>24,C[I+48|0]=E,C[I+49|0]=E>>>8,C[I+50|0]=E>>>16,C[I+51|0]=E>>>24,C[I+52|0]=t,C[I+53|0]=t>>>8,C[I+54|0]=t>>>16,C[I+55|0]=t>>>24,C[I+40|0]=B,C[I+41|0]=B>>>8,C[I+42|0]=B>>>16,C[I+43|0]=B>>>24,C[I+44|0]=Q,C[I+45|0]=Q>>>8,C[I+46|0]=Q>>>16,C[I+47|0]=Q>>>24,C[I+32|0]=c,C[I+33|0]=c>>>8,C[I+34|0]=c>>>16,C[I+35|0]=c>>>24,C[I+36|0]=A,C[I+37|0]=A>>>8,C[I+38|0]=A>>>16,C[I+39|0]=A>>>24,XC(g,32),s=g+192|0,0}function JA(A,I){I|=0;var g,B,Q=0,o=0,E=0,a=0;return s=g=s-288|0,o=40+((Q=i[32+(A|=0)>>2]>>>3&63)+A|0)|0,Q>>>0>=56?(Ng(o,35520,64-Q|0),J(A,A+40|0,g,g+256|0),i[A+88>>2]=0,i[A+92>>2]=0,i[A+80>>2]=0,i[A+84>>2]=0,i[A+72>>2]=0,i[A+76>>2]=0,i[(Q=A- -64|0)>>2]=0,i[Q+4>>2]=0,i[A+56>>2]=0,i[A+60>>2]=0,i[A+48>>2]=0,i[A+52>>2]=0,i[A+40>>2]=0,i[A+44>>2]=0):Ng(o,35520,56-Q|0),E=(Q=16711680&(o=i[A+32>>2]))>>>8|0,a=Q<<24,B=(Q=-16777216&o)>>>24|0,Q=(a|=Q<<8)|-16777216&((255&(Q=i[A+36>>2]))<<24|o>>>8)|16711680&((16777215&Q)<<8|o>>>24)|Q>>>8&65280|Q>>>24,C[A+96|0]=Q,C[A+97|0]=Q>>>8,C[A+98|0]=Q>>>16,C[A+99|0]=Q>>>24,Q=E|B|o<<24|(65280&o)<<8,Q|=E=0,C[A+100|0]=Q,C[A+101|0]=Q>>>8,C[A+102|0]=Q>>>16,C[A+103|0]=Q>>>24,J(A,A+40|0,g,g+256|0),Q=(Q=i[A>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[0|I]=Q,C[I+1|0]=Q>>>8,C[I+2|0]=Q>>>16,C[I+3|0]=Q>>>24,Q=(Q=i[A+4>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+4|0]=Q,C[I+5|0]=Q>>>8,C[I+6|0]=Q>>>16,C[I+7|0]=Q>>>24,Q=(Q=i[A+8>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+8|0]=Q,C[I+9|0]=Q>>>8,C[I+10|0]=Q>>>16,C[I+11|0]=Q>>>24,Q=(Q=i[A+12>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+12|0]=Q,C[I+13|0]=Q>>>8,C[I+14|0]=Q>>>16,C[I+15|0]=Q>>>24,Q=(Q=i[A+16>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+16|0]=Q,C[I+17|0]=Q>>>8,C[I+18|0]=Q>>>16,C[I+19|0]=Q>>>24,Q=(Q=i[A+20>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+20|0]=Q,C[I+21|0]=Q>>>8,C[I+22|0]=Q>>>16,C[I+23|0]=Q>>>24,Q=(Q=i[A+24>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+24|0]=Q,C[I+25|0]=Q>>>8,C[I+26|0]=Q>>>16,C[I+27|0]=Q>>>24,Q=(Q=i[A+28>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+28|0]=Q,C[I+29|0]=Q>>>8,C[I+30|0]=Q>>>16,C[I+31|0]=Q>>>24,XC(g,288),XC(A,104),s=g+288|0,0}function dA(A,I){A|=0;var g,B=0;s=g=s+-64|0,B=o[60+(I|=0)|0]|o[I+61|0]<<8|o[I+62|0]<<16|o[I+63|0]<<24,i[g+56>>2]=o[I+56|0]|o[I+57|0]<<8|o[I+58|0]<<16|o[I+59|0]<<24,i[g+60>>2]=B,B=o[I+52|0]|o[I+53|0]<<8|o[I+54|0]<<16|o[I+55|0]<<24,i[g+48>>2]=o[I+48|0]|o[I+49|0]<<8|o[I+50|0]<<16|o[I+51|0]<<24,i[g+52>>2]=B,B=o[I+44|0]|o[I+45|0]<<8|o[I+46|0]<<16|o[I+47|0]<<24,i[g+40>>2]=o[I+40|0]|o[I+41|0]<<8|o[I+42|0]<<16|o[I+43|0]<<24,i[g+44>>2]=B,B=o[I+36|0]|o[I+37|0]<<8|o[I+38|0]<<16|o[I+39|0]<<24,i[g+32>>2]=o[I+32|0]|o[I+33|0]<<8|o[I+34|0]<<16|o[I+35|0]<<24,i[g+36>>2]=B,B=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[g+24>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[g+28>>2]=B,B=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[g+16>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[g+20>>2]=B,B=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[g>>2]=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,i[g+4>>2]=B,B=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,i[g+8>>2]=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,i[g+12>>2]=B,S(g),I=i[g+28>>2],B=i[g+24>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[g+20>>2],B=i[g+16>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[g+12>>2],B=i[g+8>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[g+4>>2],B=i[g>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,XC(g,64),s=g- -64|0}function mA(A,I,g){A|=0,I|=0;var B,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0;if(s=B=s-96|0,(g|=0)>>>0>=65&&($I(A),UA(A,I,g,0),JA(A,B),g=32,I=B),$I(A),i[B+88>>2]=909522486,i[B+92>>2]=909522486,i[B+80>>2]=909522486,i[B+84>>2]=909522486,i[B+72>>2]=909522486,i[B+76>>2]=909522486,i[(a=r=B- -64|0)>>2]=909522486,i[a+4>>2]=909522486,i[B+56>>2]=909522486,i[B+60>>2]=909522486,i[B+48>>2]=909522486,i[B+52>>2]=909522486,i[B+40>>2]=909522486,i[B+44>>2]=909522486,i[B+32>>2]=909522486,i[B+36>>2]=909522486,g){if(g>>>0>=4)for(_=124&g;C[0|(E=(a=B+32|0)+Q|0)]=o[0|E]^o[I+Q|0],C[0|(e=(E=1|Q)+a|0)]=o[0|e]^o[I+E|0],C[0|(e=(E=2|Q)+a|0)]=o[0|e]^o[I+E|0],C[0|(E=(E=a)+(a=3|Q)|0)]=o[0|E]^o[I+a|0],Q=Q+4|0,(0|_)!=(0|(c=c+4|0)););if(c=3&g)for(;C[0|(a=(B+32|0)+Q|0)]=o[0|a]^o[I+Q|0],Q=Q+1|0,(0|c)!=(0|(t=t+1|0)););}if(UA(A,B+32|0,64,0),$I(a=A+104|0),i[B+88>>2]=1549556828,i[B+92>>2]=1549556828,i[B+80>>2]=1549556828,i[B+84>>2]=1549556828,i[B+72>>2]=1549556828,i[B+76>>2]=1549556828,i[r>>2]=1549556828,i[r+4>>2]=1549556828,i[B+56>>2]=1549556828,i[B+60>>2]=1549556828,i[B+48>>2]=1549556828,i[B+52>>2]=1549556828,i[B+40>>2]=1549556828,i[B+44>>2]=1549556828,i[B+32>>2]=1549556828,i[B+36>>2]=1549556828,g){if(t=0,Q=0,g>>>0>=4)for(r=124&g,c=0;C[0|(_=(A=B+32|0)+Q|0)]=o[0|_]^o[I+Q|0],C[0|(E=(_=1|Q)+A|0)]=o[0|E]^o[I+_|0],C[0|(E=(_=2|Q)+A|0)]=o[0|E]^o[I+_|0],C[0|(_=(E=A)+(A=3|Q)|0)]=o[0|_]^o[A+I|0],Q=Q+4|0,(0|r)!=(0|(c=c+4|0)););if(A=3&g)for(;C[0|(g=(B+32|0)+Q|0)]=o[0|g]^o[I+Q|0],Q=Q+1|0,(0|A)!=(0|(t=t+1|0)););}return UA(a,A=B+32|0,64,0),XC(A,64),XC(B,32),s=B+96|0,0}function lA(A,I,g,C,B,o,E){var a=0,_=0,c=0,t=0,r=0,e=0,y=0;if(I-65>>>0<4294967232|E>>>0>64)A=-1;else{e=a=s,s=a=a-512&-64;A:{I:if(!(!(!(C|B)|g)|!A|((_=255&I)-65&255)>>>0<=191|!(!(I=255&E)||o)|I>>>0>=65)){if(I){if(!o)break I;bg(a- -64|0,0,293),i[a+56>>2]=327033209,i[a+60>>2]=1541459225,i[a+48>>2]=-79577749,i[a+52>>2]=528734635,i[a+40>>2]=725511199,i[a+44>>2]=-1694144372,i[a+32>>2]=-1377402159,i[a+36>>2]=1359893119,i[a+24>>2]=1595750129,i[a+28>>2]=-1521486534,i[a+16>>2]=-23791573,i[a+20>>2]=1013904242,i[a+8>>2]=-2067093701,i[a+12>>2]=-1150833019,i[a>>2]=-222443256^(I<<8|_),i[a+4>>2]=I>>>24^1779033703,bg((E=a+384|0)+I|0,0,128-I|0),Ng(E,o,I),Ng(a+96|0,E,128),i[a+352>>2]=128,XC(E,128),I=128}else bg(a- -64|0,0,293),i[a+56>>2]=327033209,i[a+60>>2]=1541459225,i[a+48>>2]=-79577749,i[a+52>>2]=528734635,i[a+40>>2]=725511199,i[a+44>>2]=-1694144372,i[a+32>>2]=-1377402159,i[a+36>>2]=1359893119,i[a+24>>2]=1595750129,i[a+28>>2]=-1521486534,i[a+16>>2]=-23791573,i[a+20>>2]=1013904242,i[a+8>>2]=-2067093701,i[a+12>>2]=-1150833019,i[a>>2]=-222443256^_,i[a+4>>2]=1779033703,I=0;g:if(C|B)for(y=a+224|0,c=a+96|0;;){if(E=I+c|0,!B&C>>>0<=(o=256-I|0)>>>0){Ng(E,g,C),i[a+352>>2]=C+i[a+352>>2];break g}if(Ng(E,g,o),i[a+352>>2]=o+i[a+352>>2],t=I=i[a+68>>2],I=(r=(E=i[a+64>>2])+128|0)>>>0<128?I+1|0:I,i[a+64>>2]=r,i[a+68>>2]=I,I=i[a+76>>2],I=(t=E=-1==(0|t)&E>>>0>4294967167)>>>0>(E=E+i[a+72>>2]|0)>>>0?I+1|0:I,i[a+72>>2]=E,i[a+76>>2]=I,p(a,c),Ng(c,y,128),I=i[a+352>>2]-128|0,i[a+352>>2]=I,g=g+o|0,!((B=B-(C>>>0>>0)|0)|(C=C-o|0)))break}AA(a,A,_),s=e;break A}rC(),Q()}A=0}return A}function uA(A,I){A|=0,I|=0;var g,B=0;s=g=s-128|0,i[g+80>>2]=0,i[g+84>>2]=0,i[g+88>>2]=0,i[g+92>>2]=0,i[g+40>>2]=0,i[g+44>>2]=0,i[g+48>>2]=0,i[g+52>>2]=0,i[g+56>>2]=0,i[g+60>>2]=0,B=i[8799],i[g+104>>2]=i[8798],i[g+108>>2]=B,B=i[8801],i[g+112>>2]=i[8800],i[g+116>>2]=B,B=i[8803],i[g+120>>2]=i[8802],i[g+124>>2]=B,i[g+64>>2]=0,i[g+68>>2]=0,i[g+72>>2]=0,i[g+76>>2]=0,C[g+64|0]=1,i[g+32>>2]=0,i[g+36>>2]=0,B=i[8797],i[g+96>>2]=i[8796],i[g+100>>2]=B,B=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[g+24>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[g+28>>2]=B,B=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[g+16>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[g+20>>2]=B,B=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,i[g+8>>2]=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,i[g+12>>2]=B,B=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[g>>2]=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,i[g+4>>2]=B,Eg(I=g- -64|0,g),S(I),I=i[g+92>>2],B=i[g+88>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[g+84>>2],B=i[g+80>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[g+76>>2],B=i[g+72>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[g+68>>2],B=i[g+64>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,s=g+128|0}function xA(A,I){A|=0,I|=0;var g,B=0;s=g=s-128|0,i[g+80>>2]=0,i[g+84>>2]=0,i[g+88>>2]=0,i[g+92>>2]=0,i[g+40>>2]=0,i[g+44>>2]=0,i[g+48>>2]=0,i[g+52>>2]=0,i[g+56>>2]=0,i[g+60>>2]=0,B=i[8799],i[g+104>>2]=i[8798],i[g+108>>2]=B,B=i[8801],i[g+112>>2]=i[8800],i[g+116>>2]=B,B=i[8803],i[g+120>>2]=i[8802],i[g+124>>2]=B,i[g+64>>2]=0,i[g+68>>2]=0,i[g+72>>2]=0,i[g+76>>2]=0,i[g+32>>2]=0,i[g+36>>2]=0,B=i[8797],i[g+96>>2]=i[8796],i[g+100>>2]=B,B=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[g+16>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[g+20>>2]=B,B=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[g+24>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[g+28>>2]=B,B=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[g>>2]=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,i[g+4>>2]=B,B=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,i[g+8>>2]=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,i[g+12>>2]=B,Eg(I=g- -64|0,g),S(I),I=i[g+92>>2],B=i[g+88>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[g+84>>2],B=i[g+80>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[g+76>>2],B=i[g+72>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[g+68>>2],B=i[g+64>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,s=g+128|0}function vA(A,I,g,B){var Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0;A:{if((E=i[A+56>>2])|(Q=i[A+60>>2])){if(e=_=16-E|0,t=(_=(0|(a=0-((E>>>0>16)+Q|0)|0))==(0|B)&g>>>0>_>>>0|B>>>0>a>>>0)?e:g,e=_=_?a:B,_|t){if(_=A- -64|0,a=0,E=0,!e&t>>>0>=4|e)for(r=-4&t;Q=a+i[A+56>>2]|0,C[Q+_|0]=o[I+a|0],Q=(y=1|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+y|0],Q=(y=2|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+y|0],Q=(y=3|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+y|0],Q=E,E=(a=a+4|0)>>>0<4?Q+1|0:Q,Q=h,h=Q=(c=c+4|0)>>>0<4?Q+1|0:Q,(0|c)!=(0|r)|(0|e)!=(0|Q););if(h=Q=0,Q|(c=3&t))for(;Q=a+i[A+56>>2]|0,C[Q+_|0]=o[I+a|0],E=(a=a+1|0)?E:E+1|0,Q=D,D=Q=(s=s+1|0)?Q:Q+1|0,(0|c)!=(0|s)|(0|h)!=(0|Q););E=i[A+56>>2],Q=i[A+60>>2]}if(Q=Q+e|0,Q=(E=E+t|0)>>>0>>0?Q+1|0:Q,i[A+56>>2]=E,i[A+60>>2]=Q,!Q&E>>>0<16)break A;rA(A,A- -64|0,16,0),i[A+56>>2]=0,i[A+60>>2]=0,g=(E=g)-t|0,B=B-((E>>>0>>0)+e|0)|0,I=I+t|0}if(!B&g>>>0>=16|B&&(rA(A,I,E=-16&g,B),g&=15,B=0,I=I+E|0),g|B){if(_=A- -64|0,s=0,D=0,a=0,E=0,!B&g>>>0>=4|B)for(t=12&g,e=0,c=0;Q=a+i[A+56>>2]|0,C[Q+_|0]=o[I+a|0],Q=(r=1|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+r|0],Q=(r=2|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+r|0],Q=(r=3|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+r|0],E=(a=a+4|0)>>>0<4?E+1|0:E,Q=h,h=Q=(c=c+4|0)>>>0<4?Q+1|0:Q,(0|t)!=(0|c)|(0|e)!=(0|Q););if(h=Q=0,Q|(c=3&g))for(;Q=a+i[A+56>>2]|0,C[Q+_|0]=o[I+a|0],E=(a=a+1|0)?E:E+1|0,Q=D,D=Q=(s=s+1|0)?Q:Q+1|0,(0|c)!=(0|s)|(0|h)!=(0|Q););E=B+i[A+60>>2]|0,E=(I=g+i[A+56>>2]|0)>>>0>>0?E+1|0:E,i[A+56>>2]=I,i[A+60>>2]=E}}}function RA(A,I,g){var C,B=0,Q=0,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0;s=i[I+4>>2],B=i[A+4>>2],h=i[I+8>>2],Q=i[A+8>>2],D=i[I+12>>2],o=i[A+12>>2],f=i[I+16>>2],E=i[A+16>>2],p=i[I+20>>2],a=i[A+20>>2],e=i[I+24>>2],_=i[A+24>>2],w=i[I+28>>2],c=i[A+28>>2],n=i[I+32>>2],t=i[A+32>>2],k=i[I+36>>2],r=i[A+36>>2],g=0-g|0,y=i[A>>2],i[A>>2]=g&(y^i[I>>2])^y,i[A+36>>2]=r^g&(r^k),i[A+32>>2]=t^g&(t^n),i[A+28>>2]=c^g&(c^w),i[A+24>>2]=_^g&(_^e),i[A+20>>2]=a^g&(a^p),i[A+16>>2]=E^g&(E^f),i[A+12>>2]=o^g&(o^D),i[A+8>>2]=Q^g&(Q^h),i[A+4>>2]=B^g&(B^s),B=i[A+44>>2],s=i[I+44>>2],Q=i[A+48>>2],h=i[I+48>>2],o=i[A+52>>2],D=i[I+52>>2],E=i[A+56>>2],f=i[I+56>>2],a=i[A+60>>2],p=i[I+60>>2],_=i[(e=A- -64|0)>>2],w=i[I- -64>>2],c=i[A+68>>2],n=i[I+68>>2],t=i[A+72>>2],k=i[I+72>>2],r=i[A+40>>2],y=i[I+40>>2],C=i[A+76>>2],i[A+76>>2]=C^g&(i[I+76>>2]^C),i[A+72>>2]=t^g&(t^k),i[A+68>>2]=c^g&(c^n),i[e>>2]=_^g&(_^w),i[A+60>>2]=a^g&(a^p),i[A+56>>2]=E^g&(E^f),i[A+52>>2]=o^g&(o^D),i[A+48>>2]=Q^g&(Q^h),i[A+44>>2]=B^g&(B^s),i[A+40>>2]=r^g&(r^y),B=i[A+84>>2],s=i[I+84>>2],Q=i[A+88>>2],h=i[I+88>>2],o=i[A+92>>2],D=i[I+92>>2],E=i[A+96>>2],f=i[I+96>>2],a=i[A+100>>2],p=i[I+100>>2],_=i[A+104>>2],e=i[I+104>>2],c=i[A+108>>2],w=i[I+108>>2],t=i[A+112>>2],n=i[I+112>>2],r=i[A+80>>2],k=i[I+80>>2],y=i[I+116>>2],I=i[A+116>>2],i[A+116>>2]=g&(y^I)^I,i[A+112>>2]=t^g&(t^n),i[A+108>>2]=c^g&(c^w),i[A+104>>2]=_^g&(_^e),i[A+100>>2]=a^g&(a^p),i[A+96>>2]=E^g&(E^f),i[A+92>>2]=o^g&(o^D),i[A+88>>2]=Q^g&(Q^h),i[A+84>>2]=B^g&(B^s),i[A+80>>2]=r^g&(r^k)}function LA(A,I){var g,C,B=0;for(s=g=s-192|0,R(C=g+144|0,I),R(B=g+96|0,C),R(B,B),b(B,I,B),b(C,C,B),R(I=g+48|0,C),b(B,B,I),R(I,B),R(I,I),R(I,I),R(I,I),R(I,I),b(B,I,B),R(I,B),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),b(I,I,B),R(g,I),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),b(I,g,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),b(B,I,B),R(I,B),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),b(I,I,B),R(g,I),I=1;R(g,g),100!=(0|(I=I+1|0)););b(I=g+48|0,g,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),b(B=g+96|0,I,B),R(B,B),R(B,B),R(B,B),R(B,B),R(B,B),b(A,B,g+144|0),s=g+192|0}function PA(A,I){var g,C=0,B=0;for(s=g=s-144|0,R(B=g+96|0,I),R(C=g+48|0,B),R(C,C),b(C,I,C),b(B,B,C),R(B,B),b(B,C,B),R(C,B),R(C,C),R(C,C),R(C,C),R(C,C),b(B,C,B),R(C,B),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),b(C,C,B),R(g,C),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),b(C,g,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),b(B,C,B),R(C,B),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),b(C,C,B),R(g,C),C=1;R(g,g),100!=(0|(C=C+1|0)););b(C=g+48|0,g,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),b(B=g+96|0,C,B),R(B,B),R(B,B),b(A,B,I),s=g+144|0}function qA(A,I){var g,B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S=0,N=0,G=0,M=0;s=g=s-320|0,fA(B=A+40|0,I),i[A+84>>2]=0,i[A+88>>2]=0,i[A+80>>2]=1,i[A+92>>2]=0,i[A+96>>2]=0,i[A+100>>2]=0,i[A+104>>2]=0,i[A+108>>2]=0,i[A+112>>2]=0,i[A+116>>2]=0,R(G=g+240|0,B),b(N=g+192|0,G,1584),M=-1,Q=i[g+240>>2]-1|0,i[g+240>>2]=Q,i[g+192>>2]=i[g+192>>2]+1,E=i[g+244>>2],a=i[g+248>>2],_=i[g+252>>2],c=i[g+256>>2],t=i[g+260>>2],r=i[g+264>>2],e=i[g+268>>2],y=i[g+272>>2],h=i[g+276>>2],R(S=g+144|0,N),b(S,S,N),R(A,S),b(A,A,N),b(A,A,G),PA(A,A),b(A,A,S),b(A,A,G),R(S=g+96|0,A),b(S,S,N),N=i[g+132>>2],i[g+84>>2]=N-h,S=i[g+128>>2],i[g+80>>2]=S-y,G=i[g+124>>2],i[g+76>>2]=G-e,D=i[g+120>>2],i[g+72>>2]=D-r,f=i[g+116>>2],i[g+68>>2]=f-t,p=i[g+112>>2],i[g+64>>2]=p-c,w=i[g+108>>2],i[g+60>>2]=w-_,n=i[g+104>>2],i[g+56>>2]=n-a,k=i[g+100>>2],i[g+52>>2]=k-E,F=i[g+96>>2],i[g+48>>2]=F-Q,QI(g,g+48|0);A:{if(!GI(g,32)){if(i[g+36>>2]=N+h,i[g+32>>2]=S+y,i[g+28>>2]=G+e,i[g+24>>2]=r+D,i[g+20>>2]=t+f,i[g+16>>2]=c+p,i[g+12>>2]=_+w,i[g+8>>2]=a+n,i[g+4>>2]=E+k,i[g>>2]=Q+F,QI(N=g+288|0,g),!GI(N,32))break A;b(A,A,1632)}QI(g+288|0,A),(1&C[g+288|0])==(o[I+31|0]>>>7|0)&&(i[A>>2]=0-i[A>>2],i[A+36>>2]=0-i[A+36>>2],i[A+32>>2]=0-i[A+32>>2],i[A+28>>2]=0-i[A+28>>2],i[A+24>>2]=0-i[A+24>>2],i[A+20>>2]=0-i[A+20>>2],i[A+16>>2]=0-i[A+16>>2],i[A+12>>2]=0-i[A+12>>2],i[A+8>>2]=0-i[A+8>>2],i[A+4>>2]=0-i[A+4>>2]),b(A+120|0,A,B),M=0}return s=g+320|0,M}function zA(A,I,g){var C,B,Q,o,E,_,c,t,r=0;s=C=s-128|0,i[A>>2]=1,i[A+4>>2]=0,i[A+8>>2]=0,i[A+12>>2]=0,i[A+16>>2]=0,i[A+20>>2]=0,i[A+24>>2]=0,i[A+28>>2]=0,i[A+32>>2]=0,i[A+36>>2]=0,i[A+40>>2]=1,bg(A+44|0,0,76),RA(A,I=a(I,960)+2992|0,(255&(1^(r=g-((g>>31&g)<<1)|0)))-1>>>31|0),RA(A,I+120|0,(255&(2^r))-1>>>31|0),RA(A,I+240|0,(255&(3^r))-1>>>31|0),RA(A,I+360|0,(255&(4^r))-1>>>31|0),RA(A,I+480|0,(255&(5^r))-1>>>31|0),RA(A,I+600|0,(255&(6^r))-1>>>31|0),RA(A,I+720|0,(255&(7^r))-1>>>31|0),RA(A,I+840|0,(255&(8^r))-1>>>31|0),I=i[A+76>>2],i[C+40>>2]=i[A+72>>2],i[C+44>>2]=I,r=i[4+(I=A- -64|0)>>2],i[C+32>>2]=i[I>>2],i[C+36>>2]=r,I=i[A+60>>2],i[C+24>>2]=i[A+56>>2],i[C+28>>2]=I,I=i[A+52>>2],i[C+16>>2]=i[A+48>>2],i[C+20>>2]=I,I=i[A+44>>2],i[C+8>>2]=i[A+40>>2],i[C+12>>2]=I,I=i[A+12>>2],i[C+56>>2]=i[A+8>>2],i[C+60>>2]=I,r=i[A+20>>2],i[(I=C- -64|0)>>2]=i[A+16>>2],i[I+4>>2]=r,I=i[A+28>>2],i[C+72>>2]=i[A+24>>2],i[C+76>>2]=I,I=i[A+36>>2],i[C+80>>2]=i[A+32>>2],i[C+84>>2]=I,I=i[A+4>>2],i[C+48>>2]=i[A>>2],i[C+52>>2]=I,I=i[A+84>>2],r=i[A+88>>2],B=i[A+92>>2],Q=i[A+96>>2],o=i[A+100>>2],E=i[A+104>>2],_=i[A+108>>2],c=i[A+112>>2],t=i[A+80>>2],i[C+124>>2]=0-i[A+116>>2],i[C+120>>2]=0-c,i[C+116>>2]=0-_,i[C+112>>2]=0-E,i[C+108>>2]=0-o,i[C+104>>2]=0-Q,i[C+100>>2]=0-B,i[C+96>>2]=0-r,i[C+92>>2]=0-I,i[C+88>>2]=0-t,RA(A,C+8|0,(128&g)>>>7|0),s=C+128|0}function jA(A){var I,g,C,B,Q,o,E,a,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0;return s=I=s-320|0,R(c=I+240|0,A),R(t=I+192|0,A+40|0),R(_=I+144|0,A+80|0),A=i[I+240>>2],r=i[I+192>>2],e=i[I+244>>2],y=i[I+196>>2],h=i[I+248>>2],D=i[I+200>>2],f=i[I+252>>2],p=i[I+204>>2],w=i[I+256>>2],n=i[I+208>>2],k=i[I+260>>2],F=i[I+212>>2],S=i[I+264>>2],N=i[I+216>>2],G=i[I+268>>2],M=i[I+220>>2],K=i[I+272>>2],U=i[I+224>>2],i[I+84>>2]=i[I+228>>2]-i[I+276>>2],i[I+80>>2]=U-K,i[I+76>>2]=M-G,i[I+72>>2]=N-S,i[I+68>>2]=F-k,i[I+64>>2]=n-w,i[I+60>>2]=p-f,i[I+56>>2]=D-h,i[I+52>>2]=y-e,i[I+48>>2]=r-A,b(A=I+48|0,A,_),b(I,c,t),b(I,I,1584),R(I+96|0,_),_=i[I+48>>2],c=i[I+96>>2],t=i[I>>2],r=i[I+52>>2],e=i[I+100>>2],y=i[I+4>>2],h=i[I+56>>2],D=i[I+104>>2],f=i[I+8>>2],p=i[I+60>>2],w=i[I+108>>2],n=i[I+12>>2],k=i[I+64>>2],F=i[I+112>>2],S=i[I+16>>2],N=i[I+68>>2],G=i[I+116>>2],M=i[I+20>>2],K=i[I+72>>2],U=i[I+120>>2],g=i[I+24>>2],C=i[I+76>>2],B=i[I+124>>2],Q=i[I+28>>2],o=i[I+80>>2],E=i[I+128>>2],a=i[I+32>>2],i[I+84>>2]=i[I+84>>2]-(i[I+132>>2]+i[I+36>>2]|0),i[I+80>>2]=o-(E+a|0),i[I+76>>2]=C-(B+Q|0),i[I+72>>2]=K-(U+g|0),i[I+68>>2]=N-(G+M|0),i[I+64>>2]=k-(F+S|0),i[I+60>>2]=p-(w+n|0),i[I+56>>2]=h-(D+f|0),i[I+52>>2]=r-(e+y|0),i[I+48>>2]=_-(c+t|0),QI(_=I+288|0,A),A=GI(_,32),s=I+320|0,A}function XA(A,I,g,B,i){A|=0,I|=0,g|=0,B|=0;var E=0,_=0,c=0,t=0,e=0,y=0,s=0;A:{I:{g:{C:{B:{Q:{i:{if(1==(-7&(i|=0))&&(c=(E=(B>>>0)/3|0)<<2,(E=a(E,-3)+B|0)&&(c=2&i?2+((E>>>1|0)+c|0)|0:c+4|0),!(I>>>0<=c>>>0))){if(!(i>>>0>=4)){if(!B){i=0;break C}E=0,i=0;break i}if(!B){i=0;break C}for(E=0,i=0;;){for(e=o[g+t|0]|e<<8,E|=8;y=65510+(_=e>>>(E=E-6|0)&63)>>>8|0,s=_+65484>>>8|0,C[A+i|0]=~(1+(16321^_))>>>8&45|_+252&_+65474>>>8&~s|~(_+32705)>>>8&95|y&_+65|s&_+71&~y,i=i+1|0,E>>>0>5;);if((0|(t=t+1|0))==(0|B))break}if(!E)break B;t=45,_=32705,B=95;break Q}rC(),Q()}for(;;){for(e=o[g+t|0]|e<<8,E|=8;y=65510+(_=e>>>(E=E-6|0)&63)>>>8|0,s=_+65484>>>8|0,C[A+i|0]=~(1+(16321^_))>>>8&43|_+252&_+65474>>>8&~s|~(_+16321)>>>8&47|y&_+65|s&_+71&~y,i=i+1|0,E>>>0>5;);if((0|(t=t+1|0))==(0|B))break}if(!E)break B;t=43,_=16321,B=47}_=~((g=e<<6-E&63)+_)>>>8&B|(E=g+65510>>>8|0)&g+65,B=g+65484>>>8|0,C[A+i|0]=~(1+(16321^g))>>>8&t|_|g+252&g+65474>>>8&~B|B&g+71&~E,i=i+1|0}if(i>>>0>c>>>0)break g}if(i>>>0>>0)break I;c=i;break A}r(1104,1218,231,1503),Q()}bg(A+i|0,61,c-i|0)}return bg(A+c|0,0,(I>>>0>(g=c+1|0)>>>0?I:g)-c|0),0|A}function OA(A,I,g){var C,B,Q,E=0,_=0,c=0,t=0,r=0;s=C=s-16|0,B=i[A+20>>2],i[A+20>>2]=0,Q=i[A+4>>2],i[A+4>>2]=0,c=-26;A:{I:{g:{C:switch(g-1|0){case 1:if(gg(I,1182,9))break I;I=I+9|0;break g;case 0:break C;default:break A}if(gg(I,1173,8))break I;I=I+8|0}if(36!=o[0|I]|118!=o[I+1|0]||(E=61==o[I+2|0]),E&&!(((t=o[0|(g=I+3|0)])-58&255)>>>0<246)){for(r=E?g:I,I=0,E=t;;){if(_=g,I>>>0>429496729)break I;if((g=(255&E)-48|0)>>>0>~(I=a(I,10))>>>0)break I;if(I=I+g|0,!(((E=o[0|(g=_+1|0)])-58&255)>>>0>245))break}if(!(48==(0|t)&(0|_)!=(0|r)|(0|g)==(0|r))){if(19!=(0|I))break A;if(!(36!=(255&E)|109!=o[_+2|0]|61!=o[_+3|0])&&(g=lI(_+4|0,I=C+12|0))&&(i[A+44>>2]=i[C+12>>2],!(44!=o[0|g]|116!=o[g+1|0]|61!=o[g+2|0])&&(g=lI(g+3|0,I))&&(i[A+40>>2]=i[C+12>>2],!(44!=o[0|g]|112!=o[g+1|0]|61!=o[g+2|0])&&(g=lI(g+3|0,I))&&(E=i[C+12>>2],i[A+48>>2]=E,i[A+52>>2]=E,36==o[0|g]&&(i[C+12>>2]=B,!pA(_=i[A+16>>2],B,E=g=g+1|0,t=RI(g),0,I,g=C+8|0,3)&&(i[A+20>>2]=i[C+12>>2],E=i[C+8>>2],36==o[0|E]&&(i[C+12>>2]=Q,E=E+1|0,!pA(i[A>>2],Q,E,RI(E),0,I,g,3)))))))){if(i[A+4>>2]=i[C+12>>2],I=i[C+8>>2],c=nI(A))break A;c=o[0|I]?-32:0;break A}}}}c=-32}return s=C+16|0,c}function WA(A,I,g,B){var Q=0,i=0,E=0,a=0,_=0,c=0,t=0;if(g|B)A:for(t=A+224|0,_=A+96|0,i=o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24;;){if(Q=i+_|0,!B&g>>>0<=(E=256-i|0)>>>0){Ng(Q,I,g),I=g+(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)|0,C[A+352|0]=I,C[A+353|0]=I>>>8,C[A+354|0]=I>>>16,C[A+355|0]=I>>>24;break A}if(Ng(Q,I,E),Q=(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)+E|0,C[A+352|0]=Q,C[A+353|0]=Q>>>8,C[A+354|0]=Q>>>16,C[A+355|0]=Q>>>24,c=i=o[A+68|0]|o[A+69|0]<<8|o[A+70|0]<<16|o[A+71|0]<<24,i=(a=128+(Q=o[A+64|0]|o[A+65|0]<<8|o[A+66|0]<<16|o[A+67|0]<<24)|0)>>>0<128?i+1|0:i,C[A+64|0]=a,C[A+65|0]=a>>>8,C[A+66|0]=a>>>16,C[A+67|0]=a>>>24,C[A+68|0]=i,C[A+69|0]=i>>>8,C[A+70|0]=i>>>16,C[A+71|0]=i>>>24,i=o[A+76|0]|o[A+77|0]<<8|o[A+78|0]<<16|o[A+79|0]<<24,i=(c=Q=-1==(0|c)&Q>>>0>4294967167)>>>0>(Q=Q+(o[A+72|0]|o[A+73|0]<<8|o[A+74|0]<<16|o[A+75|0]<<24)|0)>>>0?i+1|0:i,C[A+72|0]=Q,C[A+73|0]=Q>>>8,C[A+74|0]=Q>>>16,C[A+75|0]=Q>>>24,C[A+76|0]=i,C[A+77|0]=i>>>8,C[A+78|0]=i>>>16,C[A+79|0]=i>>>24,p(A,_),Ng(_,t,128),Q=i=(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)-128|0,C[A+352|0]=Q,C[A+353|0]=Q>>>8,C[A+354|0]=Q>>>16,C[A+355|0]=Q>>>24,I=I+E|0,!((B=B-(g>>>0>>0)|0)|(g=g-E|0)))break}return 0}function VA(A){var I=0,g=0,C=0,B=0,Q=0,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0;for(g=i[A+60>>2],h=i[A+56>>2],s=i[A+52>>2],e=i[A+48>>2],I=i[A+44>>2],C=i[A+40>>2],D=i[A+36>>2],r=i[A+32>>2],B=i[A+28>>2],Q=i[A+24>>2],o=i[A+20>>2],E=i[A+16>>2],a=i[A+12>>2],_=i[A+8>>2],c=i[A+4>>2],t=i[A>>2];y=Lg(o+c|0,7)^D,f=Lg(y+o|0,9)^s,E=Lg(t+e|0,7)^E,p=Lg(E+t|0,9)^r,w=Lg(p+E|0,13)^e,a=Lg(I+g|0,7)^a,B=Lg(a+g|0,9)^B,r=Lg(B+a|0,13)^I,g=Lg(B+r|0,18)^g,I=Lg(C+Q|0,7)^h,e=w^Lg(g+I|0,7),s=f^Lg(e+g|0,9),h=Lg(e+s|0,13)^I,g=Lg(s+h|0,18)^g,_=Lg(I+C|0,9)^_,Q=Lg(_+I|0,13)^Q,C=Lg(Q+_|0,18)^C,I=Lg(C+y|0,7)^r,r=Lg(I+C|0,9)^p,D=Lg(I+r|0,13)^y,C=Lg(r+D|0,18)^C,c=Lg(y+f|0,13)^c,o=Lg(c+f|0,18)^o,Q=Lg(o+E|0,7)^Q,B=Lg(Q+o|0,9)^B,E=Lg(B+Q|0,13)^E,o=Lg(E+B|0,18)^o,t=Lg(p+w|0,18)^t,c=Lg(t+a|0,7)^c,_=Lg(c+t|0,9)^_,a=Lg(_+c|0,13)^a,t=Lg(a+_|0,18)^t,y=n>>>0<6,n=n+2|0,y;);i[A>>2]=i[A>>2]+t,i[A+4>>2]=i[A+4>>2]+c,i[A+8>>2]=i[A+8>>2]+_,i[A+12>>2]=i[A+12>>2]+a,i[A+16>>2]=i[A+16>>2]+E,i[A+20>>2]=i[A+20>>2]+o,i[A+24>>2]=i[A+24>>2]+Q,i[A+28>>2]=i[A+28>>2]+B,i[A+32>>2]=i[A+32>>2]+r,i[A+36>>2]=i[A+36>>2]+D,i[A+40>>2]=i[A+40>>2]+C,i[A+44>>2]=i[A+44>>2]+I,i[A+48>>2]=i[A+48>>2]+e,i[A+52>>2]=i[A+52>>2]+s,i[A+56>>2]=i[A+56>>2]+h,i[A+60>>2]=i[A+60>>2]+g}function ZA(A,I,g,B){var Q,i=0;return s=Q=s-320|0,i=-1,NI(g)&&(KI(g)||MA(Q,g)||gA(Q)&&(C[0|A]=o[0|I],C[A+1|0]=o[I+1|0],C[A+2|0]=o[I+2|0],C[A+3|0]=o[I+3|0],C[A+4|0]=o[I+4|0],C[A+5|0]=o[I+5|0],C[A+6|0]=o[I+6|0],C[A+7|0]=o[I+7|0],C[A+8|0]=o[I+8|0],C[A+9|0]=o[I+9|0],C[A+10|0]=o[I+10|0],C[A+11|0]=o[I+11|0],C[A+12|0]=o[I+12|0],C[A+13|0]=o[I+13|0],C[A+14|0]=o[I+14|0],C[A+15|0]=o[I+15|0],C[A+16|0]=o[I+16|0],C[A+17|0]=o[I+17|0],C[A+18|0]=o[I+18|0],C[A+19|0]=o[I+19|0],C[A+20|0]=o[I+20|0],C[A+21|0]=o[I+21|0],C[A+22|0]=o[I+22|0],C[A+23|0]=o[I+23|0],C[A+24|0]=o[I+24|0],C[A+25|0]=o[I+25|0],C[A+26|0]=o[I+26|0],C[A+27|0]=o[I+27|0],C[A+28|0]=o[I+28|0],C[A+29|0]=o[I+29|0],C[A+30|0]=o[I+30|0],g=o[I+31|0],B&&(C[0|A]=248&o[0|A],g|=64),C[A+31|0]=127&g,u(g=Q+160|0,A,Q),tg(A,g),(127&o[A+31|0]|o[A+30|0]|o[A+29|0]|o[A+28|0]|o[A+27|0]|o[A+26|0]|o[A+25|0]|o[A+24|0]|o[A+23|0]|o[A+22|0]|o[A+21|0]|o[A+20|0]|o[A+19|0]|o[A+18|0]|o[A+17|0]|o[A+16|0]|o[A+15|0]|o[A+14|0]|o[A+13|0]|o[A+12|0]|o[A+11|0]|o[A+10|0]|o[A+9|0]|o[A+8|0]|o[A+7|0]|o[A+6|0]|o[A+5|0]|o[A+4|0]|o[A+3|0]|o[A+2|0]|o[A+1|0]|1^o[0|A])-1&256||(i=GI(I,32)?-1:0))),s=Q+320|0,i}function TA(A,I,g,B,Q){var E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0;if(s=E=s-48|0,Q&&ag(Q,102),!(36!=o[0|B]|55!=o[B+1|0]|36!=o[B+2|0])&&(r=uI(o[B+3|0]))&&(a=PI(E+12|0,B+4|0))&&(t=PI(E+8|0,a))){for(_=RI(t)+1|0;a=0,_&&36!=o[0|(a=t+(_=_-1|0)|0)];);if(c=a-t|0,a||(c=RI(t)),!((c=45+(_=(a=c)+(t-B|0)|0)|0)>>>0>102|a>>>0>c>>>0||(c=A,y=I,h=g,A=31&(r=r-1024|0),(63&r)>>>0>=32?(I=1<>>32-A,_A(c,y,h,t,a,g,I,i[E+12>>2],i[E+8>>2],E+16|0,32)))){for(a=Ng(Q,B,_),C[0|(A=a+_|0)]=36,e=(c=a+102|0)-(Q=A+1|0)|0,g=0;;){A:if((I=g)>>>0>31)B=Q;else if(A=Q,g=(_=I+1|0)+(y=(g=31-I|0)>>>0>=2?2:g)|0,B=0,t=0,Q=o[(r=E+16|0)+I|0],y&&(Q=o[_+r|0]<<8|Q,(0|(I=I+2|0))!=(0|g)&&(t=1,Q=o[I+r|0]<<16|Q)),e&&(C[0|A]=o[1024+(63&Q)|0],1!=(0|e))){if(C[A+1|0]=o[1024+(Q>>>6&63)|0],y=A+e|0,I=A+2|0,(0|g)!=(0|_)){if(2==(0|e))break A;if(C[A+2|0]=o[1024+(Q>>>12&63)|0],I=A+3|0,t){if(3==(0|e))break A;C[A+3|0]=o[1024+(Q>>>18|0)|0],I=A+4|0}}if(e=y-(Q=I)|0,Q)continue}break}XC(E+16|0,32),e=0,!B|B>>>0>=c>>>0||(C[0|B]=0,e=a)}}return s=E+48|0,e}function $A(A,I){var g,C=0,B=0,Q=0,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0;C=i[I+4>>2],Q=i[I+44>>2],o=i[I+8>>2],E=i[I+48>>2],a=i[I+12>>2],_=i[I+52>>2],c=i[I+16>>2],t=i[I+56>>2],r=i[I+20>>2],e=i[I+60>>2],y=i[I+24>>2],s=i[(B=I- -64|0)>>2],h=i[I+28>>2],D=i[I+68>>2],f=i[I+32>>2],p=i[I+72>>2],w=i[I+36>>2],g=i[I+76>>2],i[A>>2]=i[I>>2]+i[I+40>>2],i[A+36>>2]=w+g,i[A+32>>2]=f+p,i[A+28>>2]=h+D,i[A+24>>2]=y+s,i[A+20>>2]=r+e,i[A+16>>2]=c+t,i[A+12>>2]=a+_,i[A+8>>2]=o+E,i[A+4>>2]=C+Q,C=i[I+4>>2],Q=i[I+44>>2],o=i[I+8>>2],E=i[I+48>>2],a=i[I+12>>2],_=i[I+52>>2],c=i[I+16>>2],t=i[I+56>>2],r=i[I+20>>2],e=i[I+60>>2],y=i[I+24>>2],B=i[B>>2],s=i[I+28>>2],h=i[I+68>>2],D=i[I+32>>2],f=i[I+72>>2],p=i[I>>2],w=i[I+40>>2],i[A+76>>2]=i[I+76>>2]-i[I+36>>2],i[A+72>>2]=f-D,i[A+68>>2]=h-s,i[A- -64>>2]=B-y,i[A+60>>2]=e-r,i[A+56>>2]=t-c,i[A+52>>2]=_-a,i[A+48>>2]=E-o,i[A+44>>2]=Q-C,i[A+40>>2]=w-p,C=i[I+84>>2],i[A+80>>2]=i[I+80>>2],i[A+84>>2]=C,C=i[I+92>>2],i[A+88>>2]=i[I+88>>2],i[A+92>>2]=C,C=i[I+100>>2],i[A+96>>2]=i[I+96>>2],i[A+100>>2]=C,C=i[I+108>>2],i[A+104>>2]=i[I+104>>2],i[A+108>>2]=C,C=i[I+116>>2],i[A+112>>2]=i[I+112>>2],i[A+116>>2]=C,b(A+120|0,I+120|0,1680)}function AI(A,I,g){var C,B,Q,o,E,a,_,c,t,r,e,y,h=0,D=0,f=0,p=0,w=0;h=i[I+12>>2],D=i[I+8>>2],f=i[I+4>>2],C=s+-64&-64,I=i[I>>2],i[C>>2]=i[35744+((255&I)<<2)>>2],i[C+4>>2]=i[35744+(f>>>6&1020)>>2],i[C+8>>2]=i[35744+(D>>>14&1020)>>2],i[C+12>>2]=i[35744+(h>>>22&1020)>>2],i[C+16>>2]=i[35744+((255&f)<<2)>>2],i[C+20>>2]=i[35744+(D>>>6&1020)>>2],i[C+24>>2]=i[35744+(h>>>14&1020)>>2],i[C+28>>2]=i[35744+(I>>>22&1020)>>2],i[C+32>>2]=i[35744+((255&D)<<2)>>2],i[C+36>>2]=i[35744+(h>>>6&1020)>>2],i[C+40>>2]=i[35744+(I>>>14&1020)>>2],i[C+44>>2]=i[35744+(f>>>22&1020)>>2],i[C+48>>2]=i[35744+((255&h)<<2)>>2],i[C+52>>2]=i[35744+(I>>>6&1020)>>2],i[C+56>>2]=i[35744+(f>>>14&1020)>>2],i[C+60>>2]=i[35744+(D>>>22&1020)>>2],I=i[C+12>>2],h=i[C>>2],D=i[C+4>>2],f=i[C+8>>2],B=i[C+28>>2],Q=i[C+16>>2],o=i[C+20>>2],E=i[C+24>>2],a=i[C+44>>2],_=i[C+32>>2],c=i[C+36>>2],t=i[C+40>>2],r=i[g>>2],e=i[g+4>>2],y=i[g+8>>2],p=A,w=i[g+12>>2]^i[C+48>>2]^Lg(i[C+52>>2],8)^Lg(i[C+56>>2],16)^Lg(i[C+60>>2],24),i[p+12>>2]=w,p=A,w=Lg(c,8)^_^Lg(t,16)^Lg(a,24)^y,i[p+8>>2]=w,p=A,w=Lg(o,8)^Q^Lg(E,16)^Lg(B,24)^e,i[p+4>>2]=w,p=A,w=Lg(D,8)^h^Lg(f,16)^Lg(I,24)^r,i[p>>2]=w}function II(A,I,g){var B,Q=0;return s=B=s-160|0,C[0|A]=o[0|I],C[A+1|0]=o[I+1|0],C[A+2|0]=o[I+2|0],C[A+3|0]=o[I+3|0],C[A+4|0]=o[I+4|0],C[A+5|0]=o[I+5|0],C[A+6|0]=o[I+6|0],C[A+7|0]=o[I+7|0],C[A+8|0]=o[I+8|0],C[A+9|0]=o[I+9|0],C[A+10|0]=o[I+10|0],C[A+11|0]=o[I+11|0],C[A+12|0]=o[I+12|0],C[A+13|0]=o[I+13|0],C[A+14|0]=o[I+14|0],C[A+15|0]=o[I+15|0],C[A+16|0]=o[I+16|0],C[A+17|0]=o[I+17|0],C[A+18|0]=o[I+18|0],C[A+19|0]=o[I+19|0],C[A+20|0]=o[I+20|0],C[A+21|0]=o[I+21|0],C[A+22|0]=o[I+22|0],C[A+23|0]=o[I+23|0],C[A+24|0]=o[I+24|0],C[A+25|0]=o[I+25|0],C[A+26|0]=o[I+26|0],C[A+27|0]=o[I+27|0],C[A+28|0]=o[I+28|0],C[A+29|0]=o[I+29|0],C[A+30|0]=o[I+30|0],Q=o[I+31|0],g&&(C[0|A]=248&o[0|A],Q|=64),C[A+31|0]=127&Q,nA(B,A),tg(A,B),g=-1,(127&o[A+31|0]|o[A+30|0]|o[A+29|0]|o[A+28|0]|o[A+27|0]|o[A+26|0]|o[A+25|0]|o[A+24|0]|o[A+23|0]|o[A+22|0]|o[A+21|0]|o[A+20|0]|o[A+19|0]|o[A+18|0]|o[A+17|0]|o[A+16|0]|o[A+15|0]|o[A+14|0]|o[A+13|0]|o[A+12|0]|o[A+11|0]|o[A+10|0]|o[A+9|0]|o[A+8|0]|o[A+7|0]|o[A+6|0]|o[A+5|0]|o[A+4|0]|o[A+3|0]|o[A+2|0]|o[A+1|0]|1^o[0|A])-1&256||(g=GI(I,32)?-1:0),s=B+160|0,g}function gI(A,I){var g,B,Q,o,E,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0;(_=i[A+56>>2])|(c=i[A+60>>2])&&(C[(r=A- -64|0)+_|0]=1,!((f=_+1|0)?c:c+1|0)&f>>>0<=15&&bg(65+(A+_|0)|0,0,15-_|0),C[A+80|0]=1,rA(A,r,16,0)),f=i[A+52>>2],h=i[A+48>>2],r=i[A+44>>2],_=i[A+24>>2],e=i[A+28>>2]+(_>>>26|0)|0,t=i[A+32>>2]+(e>>>26|0)|0,g=i[A+36>>2]+(t>>>26|0)|0,c=(s=(_=(_=(67108863&_)+((y=i[A+20>>2]+a(g>>>26|0,5)|0)>>>26|0)|0)&(e=(t=(E=(67108863&g)+((o=(B=67108863&t)+((Q=(D=67108863&e)+((y=_+((c=5+(s=67108863&y)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)-67108864|0)>>31)|y&(t=67108863&(y=(t>>>31|0)-1|0)))<<26|c&t|e&s)+i[A+40>>2]|0,C[0|I]=c,C[I+1|0]=c>>>8,C[I+2|0]=c>>>16,C[I+3|0]=c>>>24,s=c>>>0>>0,c=0,c=(_=(D=e&D|t&Q)<<20|_>>>6)>>>0>(_=_+r|0)>>>0?1:c,c=(r=_)>>>0>(_=_+s|0)>>>0?c+1|0:c,C[I+4|0]=_,C[I+5|0]=_>>>8,C[I+6|0]=_>>>16,C[I+7|0]=_>>>24,_=0,r=(r=(t=e&B|t&o)<<14|D>>>12)>>>0>(h=r+h|0)>>>0?1:_,_=h,h=c,_=_+c|0,c=r,c=_>>>0>>0?c+1|0:c,C[I+8|0]=_,C[I+9|0]=_>>>8,C[I+10|0]=_>>>16,C[I+11|0]=_>>>24,c=(_=(_=(y&E|e&g)<<8|t>>>18)+f|0)+c|0,C[I+12|0]=c,C[I+13|0]=c>>>8,C[I+14|0]=c>>>16,C[I+15|0]=c>>>24,XC(A,88)}function CI(A,I,g){A|=0,I|=0,g|=0;var B,Q=0;return s=B=s-16|0,C[B+15|0]=0,Q=-1,0|pB[i[8930]](A,I,g)||(C[B+15|0]=o[0|A]|o[B+15|0],C[B+15|0]=o[A+1|0]|o[B+15|0],C[B+15|0]=o[A+2|0]|o[B+15|0],C[B+15|0]=o[A+3|0]|o[B+15|0],C[B+15|0]=o[A+4|0]|o[B+15|0],C[B+15|0]=o[A+5|0]|o[B+15|0],C[B+15|0]=o[A+6|0]|o[B+15|0],C[B+15|0]=o[A+7|0]|o[B+15|0],C[B+15|0]=o[A+8|0]|o[B+15|0],C[B+15|0]=o[A+9|0]|o[B+15|0],C[B+15|0]=o[A+10|0]|o[B+15|0],C[B+15|0]=o[A+11|0]|o[B+15|0],C[B+15|0]=o[A+12|0]|o[B+15|0],C[B+15|0]=o[A+13|0]|o[B+15|0],C[B+15|0]=o[A+14|0]|o[B+15|0],C[B+15|0]=o[A+15|0]|o[B+15|0],C[B+15|0]=o[A+16|0]|o[B+15|0],C[B+15|0]=o[A+17|0]|o[B+15|0],C[B+15|0]=o[A+18|0]|o[B+15|0],C[B+15|0]=o[A+19|0]|o[B+15|0],C[B+15|0]=o[A+20|0]|o[B+15|0],C[B+15|0]=o[A+21|0]|o[B+15|0],C[B+15|0]=o[A+22|0]|o[B+15|0],C[B+15|0]=o[A+23|0]|o[B+15|0],C[B+15|0]=o[A+24|0]|o[B+15|0],C[B+15|0]=o[A+25|0]|o[B+15|0],C[B+15|0]=o[A+26|0]|o[B+15|0],C[B+15|0]=o[A+27|0]|o[B+15|0],C[B+15|0]=o[A+28|0]|o[B+15|0],C[B+15|0]=o[A+29|0]|o[B+15|0],C[B+15|0]=o[A+30|0]|o[B+15|0],C[B+15|0]=o[A+31|0]|o[B+15|0],Q=(o[B+15|0]<<23)-8388608>>31),s=B+16|0,0|Q}function BI(A,I,g,C,B){var Q=0,o=0,E=0,a=0,_=0,c=0,t=0;A:{if(1==(0|C)|C>>>0>1)i[9404]=22;else{s=C=s-128|0,i[C- -64>>2]=0,i[C+56>>2]=0,i[C+60>>2]=0,i[C+48>>2]=0,i[C+52>>2]=0,i[C+40>>2]=0,i[C+44>>2]=0,i[C+32>>2]=0,i[C+36>>2]=0,i[C+24>>2]=0,i[C+28>>2]=0,i[C+16>>2]=0,i[C+20>>2]=0,Q=RI(A),i[C+28>>2]=Q,i[C+44>>2]=Q,i[C+12>>2]=Q,o=K(Q),i[C+40>>2]=o,E=K(Q),i[C+24>>2]=E,a=K(Q),i[C+8>>2]=a;I:if(!a|!o|!E||!(Q=K(Q)))BA(o),BA(E),BA(a),A=-22;else{if(A=OA(C+8|0,A,B)){BA(i[C+40>>2]),BA(i[C+24>>2]),BA(i[C+8>>2]),BA(Q);break I}a=i[C+28>>2],_=i[C+24>>2],A=i[C+60>>2],c=i[C+52>>2],t=i[C+48>>2],ag(Q,o=i[C+12>>2]),(E=K(o))?(i[C+100>>2]=0,i[C+104>>2]=0,i[C+92>>2]=0,i[C+96>>2]=0,i[C+88>>2]=a,i[C+84>>2]=_,i[C+80>>2]=g,i[C+76>>2]=I,i[C+72>>2]=o,i[C+68>>2]=E,i[C+124>>2]=0,i[C+120>>2]=A,i[C+116>>2]=A,i[C+112>>2]=c,i[C+108>>2]=t,(A=q(C+68|0,B))||Ng(Q,E,o),XC(E,o),BA(E)):A=-22,BA(i[C+40>>2]),BA(i[C+24>>2]),A||(A=MI(Q,i[C+8>>2],i[C+12>>2])?-35:0),BA(Q),BA(i[C+8>>2])}if(s=C+128|0,I=A,!A)break A;-35==(0|A)&&(i[9404]=28)}I=-1}return I}function QI(A,I){var g,B,Q,o,E,_,c,t=0,r=0;B=i[I+32>>2],Q=i[I+28>>2],o=i[I+24>>2],E=i[I+20>>2],_=i[I+16>>2],c=i[I+12>>2],t=i[I+4>>2],r=i[I>>2],g=i[I+36>>2],I=i[I+8>>2],r=a((B+(Q+(o+(E+(_+(c+((t+(r+(a(g,19)+16777216>>>25|0)>>26)>>25)+I>>26)>>25)>>26)>>25)>>26)>>25)>>26)+g>>25,19)+r|0,C[0|A]=r,C[A+2|0]=r>>>16,C[A+1|0]=r>>>8,t=t+(r>>26)|0,C[A+5|0]=t>>>14,C[A+4|0]=t>>>6,C[A+3|0]=r>>>24&3|t<<2,I=I+(t>>25)|0,C[A+8|0]=I>>>13,C[A+7|0]=I>>>5,C[A+6|0]=I<<3|(29360128&t)>>>22,r=(I>>26)+c|0,C[A+11|0]=r>>>11,C[A+10|0]=r>>>3,C[A+9|0]=r<<5|(65011712&I)>>>21,t=(r>>25)+_|0,C[A+15|0]=t>>>18,C[A+14|0]=t>>>10,C[A+13|0]=t>>>2,I=(t>>26)+E|0,C[A+16|0]=I,C[A+12|0]=t<<6|(33030144&r)>>>19,C[A+18|0]=I>>>16,C[A+17|0]=I>>>8,t=(I>>25)+o|0,C[A+21|0]=t>>>15,C[A+20|0]=t>>>7,C[A+19|0]=I>>>24&1|t<<1,I=(t>>26)+Q|0,C[A+24|0]=I>>>13,C[A+23|0]=I>>>5,C[A+22|0]=I<<3|(58720256&t)>>>23,t=(I>>25)+B|0,C[A+27|0]=t>>>12,C[A+26|0]=t>>>4,C[A+25|0]=t<<4|(31457280&I)>>>21,I=g+(t>>26)|0,C[A+30|0]=I>>>10,C[A+29|0]=I>>>2,C[A+31|0]=(33292288&I)>>>18,C[A+28|0]=I<<6|(66060288&t)>>>20}function iI(A,I,g){A|=0,I|=0;var B,Q=0,i=0,E=0,a=0,_=0,c=0,t=0;if(s=B=s-192|0,(g|=0)>>>0>=129&&(SI(A),SA(A,I,g,0),j(A,B),g=64,I=B),SI(A),bg(B- -64|0,54,128),g){if(g>>>0>=4)for(t=252&g;C[0|(Q=(E=B- -64|0)+i|0)]=o[0|Q]^o[I+i|0],C[0|(a=(Q=1|i)+E|0)]=o[0|a]^o[I+Q|0],C[0|(a=(Q=2|i)+E|0)]=o[0|a]^o[I+Q|0],C[0|(Q=(Q=E)+(E=3|i)|0)]=o[0|Q]^o[I+E|0],i=i+4|0,(0|t)!=(0|(_=_+4|0)););if(_=3&g)for(;C[0|(E=(B- -64|0)+i|0)]=o[0|E]^o[I+i|0],i=i+1|0,(0|_)!=(0|(c=c+1|0)););}if(SA(A,i=B- -64|0,128,0),SI(E=A+208|0),bg(i,92,128),g){if(c=0,i=0,g>>>0>=4)for(t=252&g,_=0;C[0|(Q=(A=B- -64|0)+i|0)]=o[0|Q]^o[I+i|0],C[0|(a=(Q=1|i)+A|0)]=o[0|a]^o[I+Q|0],C[0|(a=(Q=2|i)+A|0)]=o[0|a]^o[I+Q|0],C[0|(Q=(Q=A)+(A=3|i)|0)]=o[0|Q]^o[A+I|0],i=i+4|0,(0|t)!=(0|(_=_+4|0)););if(A=3&g)for(;C[0|(g=(B- -64|0)+i|0)]=o[0|g]^o[I+i|0],i=i+1|0,(0|A)!=(0|(c=c+1|0)););}return SA(E,A=B- -64|0,128,0),XC(A,128),XC(B,64),s=B+192|0,0}function oI(A,I){var g;return A|=0,I|=0,i[12+(g=s-16|0)>>2]=A,i[g+8>>2]=I,i[g+4>>2]=0,i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]]^o[i[g+8>>2]],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+1|0]^o[i[g+8>>2]+1|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+2|0]^o[i[g+8>>2]+2|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+3|0]^o[i[g+8>>2]+3|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+4|0]^o[i[g+8>>2]+4|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+5|0]^o[i[g+8>>2]+5|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+6|0]^o[i[g+8>>2]+6|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+7|0]^o[i[g+8>>2]+7|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+8|0]^o[i[g+8>>2]+8|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+9|0]^o[i[g+8>>2]+9|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+10|0]^o[i[g+8>>2]+10|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+11|0]^o[i[g+8>>2]+11|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+12|0]^o[i[g+8>>2]+12|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+13|0]^o[i[g+8>>2]+13|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+14|0]^o[i[g+8>>2]+14|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+15|0]^o[i[g+8>>2]+15|0],(i[g+4>>2]-1>>>8&1)-1|0}function EI(A,I,g,C,B,Q,o){var E,a,_,c=0,t=0,r=0,e=0;s=E=s-352|0,yA(E,Q,o,0);A:{if(!(((c=!!(0|B))|!B&C>>>0>A-g>>>0)&A>>>0>g>>>0)&(!B&g-A>>>0>=C>>>0|A>>>0>=g>>>0)){if(i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,t=(o=(c=!!(0|B))|!B&C>>>0>=32)?32:C,r=o?0:B,o=c|!B&C>>>0>32,!(C|B)){e=1;break A}}else g=yg(A,g,C),i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,t=(o=c|!B&C>>>0>=32)?32:C,r=o?0:B,o=c|!B&C>>>0>32;Ng(E- -64|0,g,t),e=0}return c=r,ug(a=E+32|0,a,_=t+32|0,c=_>>>0<32?c+1|0:c,c=Q+16|0,E),wC(E+96|0,a),e||Ng(A,E- -64|0,t),XC(E+32|0,64),o&&mg(A+t|0,g+t|0,C-t|0,B-((C>>>0>>0)+r|0)|0,c,1,0,E),XC(E,32),SC(g=E+96|0,A,C,B),nC(g,I),XC(g,256),s=E+352|0,0}function aI(A,I,g,C,B,Q,o){var E,a,_,c=0,t=0,r=0,e=0;s=E=s-352|0,wA(E,Q,o,0);A:{if(!(((c=!!(0|B))|!B&C>>>0>A-g>>>0)&A>>>0>g>>>0)&(!B&g-A>>>0>=C>>>0|A>>>0>=g>>>0)){if(i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,t=(o=(c=!!(0|B))|!B&C>>>0>=32)?32:C,r=o?0:B,o=c|!B&C>>>0>32,!(C|B)){e=1;break A}}else g=yg(A,g,C),i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,t=(o=c|!B&C>>>0>=32)?32:C,r=o?0:B,o=c|!B&C>>>0>32;Ng(E- -64|0,g,t),e=0}return c=r,aC(a=E+32|0,a,_=t+32|0,c=_>>>0<32?c+1|0:c,c=Q+16|0,E),wC(E+96|0,a),e||Ng(A,E- -64|0,t),XC(E+32|0,64),o&&oC(A+t|0,g+t|0,C-t|0,B-((C>>>0>>0)+r|0)|0,c,1,0,E),XC(E,32),SC(g=E+96|0,A,C,B),nC(g,I),XC(g,256),s=E+352|0,0}function _I(A,I,g,B,Q){var o;return A|=0,I|=0,g|=0,B|=0,s=o=s-480|0,iI(o,Q|=0,32),dC(o,I,g,B),wg(o,o+416|0),I=i[o+444>>2],g=i[o+440>>2],C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[o+436>>2],g=i[o+432>>2],C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[o+428>>2],g=i[o+424>>2],C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[o+420>>2],g=i[o+416>>2],C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,s=o+480|0,0}function cI(A,I,g){A|=0,I|=0;var B,Q=0;return s=B=s+-64|0,FI(B,g|=0,32,0),g=i[B+28>>2],Q=i[B+24>>2],C[I+24|0]=Q,C[I+25|0]=Q>>>8,C[I+26|0]=Q>>>16,C[I+27|0]=Q>>>24,C[I+28|0]=g,C[I+29|0]=g>>>8,C[I+30|0]=g>>>16,C[I+31|0]=g>>>24,g=i[B+20>>2],Q=i[B+16>>2],C[I+16|0]=Q,C[I+17|0]=Q>>>8,C[I+18|0]=Q>>>16,C[I+19|0]=Q>>>24,C[I+20|0]=g,C[I+21|0]=g>>>8,C[I+22|0]=g>>>16,C[I+23|0]=g>>>24,g=i[B+12>>2],Q=i[B+8>>2],C[I+8|0]=Q,C[I+9|0]=Q>>>8,C[I+10|0]=Q>>>16,C[I+11|0]=Q>>>24,C[I+12|0]=g,C[I+13|0]=g>>>8,C[I+14|0]=g>>>16,C[I+15|0]=g>>>24,g=i[B+4>>2],Q=i[B>>2],C[0|I]=Q,C[I+1|0]=Q>>>8,C[I+2|0]=Q>>>16,C[I+3|0]=Q>>>24,C[I+4|0]=g,C[I+5|0]=g>>>8,C[I+6|0]=g>>>16,C[I+7|0]=g>>>24,XC(B,64),A=pC(A,I),s=B- -64|0,0|A}function tI(A,I){var g=0,C=0,B=0,Q=0,o=0,E=0;return I>>>0>4294967168?48:(I>>>0>=4294967168?(i[9404]=48,g=0):(g=0,(I=K(76+(Q=I>>>0<11?16:I+11&-8)|0))&&(g=I-8|0,63&I?(B=(-8&(E=i[(o=I-4|0)>>2]))-(C=(I=((I=(I+63&-64)-8|0)-g>>>0<=15?64:0)+I|0)-g|0)|0,3&E?(i[I+4>>2]=B|1&i[I+4>>2]|2,i[4+(B=I+B|0)>>2]=1|i[B+4>>2],i[o>>2]=C|1&i[o>>2]|2,i[4+(B=g+C|0)>>2]=1|i[B+4>>2],oA(g,C)):(g=i[g>>2],i[I+4>>2]=B,i[I>>2]=g+C)):I=g,3&(g=i[I+4>>2])&&((C=-8&g)>>>0<=Q+16>>>0||(i[I+4>>2]=Q|1&g|2,g=I+Q|0,Q=C-Q|0,i[g+4>>2]=3|Q,i[4+(C=I+C|0)>>2]=1|i[C+4>>2],oA(g,Q))),g=I+8|0)),g?(i[A>>2]=g,0):48)}function rI(A,I,g,C,B,Q,o,E,a,_,c){var t;if(t=bg(A,0,I),1==(0|g)|g>>>0>1)return i[9404]=22,-1;if(!(!g&I>>>0<=15)){if(!(!(Q|a)&_>>>0<2147483649))return i[9404]=22,-1;if(!(!((!a&E>>>0>=3|!!(0|a))&_>>>0>8191)|(0|C)==(0|t)))return 1==(0|c)?(Q=_>>>10|0,s=A=s+-64|0,t&&ag(t,I),(g=K(I))?(i[A+36>>2]=0,i[A+40>>2]=0,i[A+28>>2]=0,i[A+32>>2]=0,i[A+24>>2]=16,i[A+20>>2]=o,i[A+16>>2]=B,i[A+12>>2]=C,i[A+8>>2]=I,i[A+4>>2]=g,i[A+60>>2]=0,i[A+56>>2]=1,i[A+52>>2]=1,i[A+48>>2]=Q,i[A+44>>2]=E,(C=q(A+4|0,1))|!t||Ng(t,g,I),XC(g,I),BA(g)):C=-22,s=A- -64|0,C?-1:0):(i[9404]=28,-1)}return i[9404]=28,-1}function eI(A,I,g,C,B,Q,i){var o,E,a=0,_=0,c=0;s=o=s-96|0,wA(o,Q,i,0),DC(i=o+32|0,32,0,E=Q+16|0,o),Q=-1;A:{I:if(!fC(g,I,C,B,i)){if(Q=0,!A)break A;g:{if(!(((g=!!(0|B))|!B&C>>>0>I-A>>>0)&A>>>0>>0)&(!B&C>>>0<=A-I>>>0|A>>>0<=I>>>0)){if(!(C|B))break g;g=(Q=!B&C>>>0>=32|!!(0|B))?32:C,a=Q?0:B}else I=yg(A,I,C),g=(Q=g|!B&C>>>0>=32)?32:C,a=Q?0:B;if(Q=a,c=Ng(o- -64|0,I,g),aC(i=o+32|0,i,_=g+32|0,Q=_>>>0<32?Q+1|0:Q,E,o),A=Ng(A,c,g),XC(i,64),Q=0,!B&C>>>0<33)break I;oC(A+g|0,I+g|0,C-g|0,B-(a+(g>>>0>C>>>0)|0)|0,E,1,0,o);break I}aC(A=o+32|0,A,32,0,E,o),XC(A,64)}XC(o,32)}return s=o+96|0,Q}function yI(A,I,g,C,B,Q,o,E,a,_,c){var t;if(t=bg(A,0,I),1==(0|g)|g>>>0>1)return i[9404]=22,-1;if(!(!g&I>>>0<=15)){if(!(!(Q|a)&_>>>0<2147483649))return i[9404]=22,-1;if(!(!(!!(E|a)&_>>>0>8191)|(0|C)==(0|t)))return 2==(0|c)?(Q=_>>>10|0,s=A=s+-64|0,t&&ag(t,I),(g=K(I))?(i[A+36>>2]=0,i[A+40>>2]=0,i[A+28>>2]=0,i[A+32>>2]=0,i[A+24>>2]=16,i[A+20>>2]=o,i[A+16>>2]=B,i[A+12>>2]=C,i[A+8>>2]=I,i[A+4>>2]=g,i[A+60>>2]=0,i[A+56>>2]=1,i[A+52>>2]=1,i[A+48>>2]=Q,i[A+44>>2]=E,(C=q(A+4|0,2))|!t||Ng(t,g,I),XC(g,I),BA(g)):C=-22,s=A- -64|0,C?-1:0):(i[9404]=28,-1)}return i[9404]=28,-1}function sI(A,I,g,C,B,Q,i){var o,E,a=0,_=0;s=o=s-96|0,yA(o,Q,i,0),Xg(i=o+32|0,32,0,E=Q+16|0,o),Q=-1;A:{I:if(!fC(g,I,C,B,i)){if(Q=0,!A)break A;g:{if(!(((g=!!(0|B))|!B&C>>>0>I-A>>>0)&A>>>0>>0)&(!B&C>>>0<=A-I>>>0|A>>>0<=I>>>0)){if(!(C|B))break g;g=(Q=!B&C>>>0>=32|!!(0|B))?32:C,i=Q?0:B}else I=yg(A,I,C),g=(Q=g|!B&C>>>0>=32)?32:C,i=Q?0:B;if(a=g,_=Ng(o- -64|0,I,g),ug(g=o+32|0,g,Q=a+32|0,Q>>>0<32?i+1|0:i,E,o),g=Ng(A,_,a),Q=0,!B&C>>>0<33)break I;mg(g+a|0,I+a|0,C-a|0,B-(i+(C>>>0>>0)|0)|0,E,1,0,o);break I}ug(A=o+32|0,A,32,0,E,o)}XC(o,32)}return s=o+96|0,Q}function hI(A,I,g,C,B,Q,E,a,_,c){var t,r;return s=t=s-400|0,i[t+4>>2]=0,yA(r=t+16|0,_,c,0),c=o[_+20|0]|o[_+21|0]<<8|o[_+22|0]<<16|o[_+23|0]<<24,i[t+8>>2]=o[_+16|0]|o[_+17|0]<<8|o[_+18|0]<<16|o[_+19|0]<<24,i[t+12>>2]=c,jg(c=t+80|0,64,0,t+4|0,r),wC(_=t+144|0,c),XC(c,64),SC(_,Q,E,a),SC(_,35680,0-E&15,0),SC(_,I,g,C),SC(_,35680,0-g&15,0),i[t+72>>2]=E,i[t+76>>2]=a,SC(_,Q=t+72|0,8,0),i[t+72>>2]=g,i[t+76>>2]=C,SC(_,Q,8,0),nC(_,Q=t+48|0),XC(_,256),_=oI(Q,B),XC(Q,16),A&&(_?(bg(A,0,g),_=-1):(Og(A,I,g,C,t+4|0,t+16|0),_=0)),XC(t+16|0,32),s=t+400|0,_}function DI(A,I,g,B,Q,o){var E,a;if(s=E=s-496|0,mA(a=E+288|0,A,I),mC(a,g,B,0),o)for(A=0,I=0;g=(I=I+1|0)<<24|(65280&I)<<8|I>>>8&65280|I>>>24,C[E+76|0]=g,C[E+77|0]=g>>>8,C[E+78|0]=g>>>16,C[E+79|0]=g>>>24,Ng(g=E+80|0,E+288|0,208),mC(g,E+76|0,4,0),Sg(g,E+32|0),g=i[E+60>>2],i[E+24>>2]=i[E+56>>2],i[E+28>>2]=g,g=i[E+52>>2],i[E+16>>2]=i[E+48>>2],i[E+20>>2]=g,g=i[E+44>>2],i[E+8>>2]=i[E+40>>2],i[E+12>>2]=g,g=i[E+36>>2],i[E>>2]=i[E+32>>2],i[E+4>>2]=g,Ng(g=A+Q|0,E,(A=o-A|0)>>>0>=32?32:A),o>>>0>(A=I<<5)>>>0;);XC(E+288|0,208),s=E+496|0}function fI(A,I,g,B,Q,i){var o,E,a=0;return s=o=s-32|0,a=-1,(E=g>>>0<32)&!B||(Ug(o,32,0,Q,i),fC(I+16|0,I+32|0,g-32|0,B-E|0,o)||(Gg(A,I,g,B,Q,i),C[A+24|0]=0,C[A+25|0]=0,C[A+26|0]=0,C[A+27|0]=0,C[A+28|0]=0,C[A+29|0]=0,C[A+30|0]=0,C[A+31|0]=0,C[A+16|0]=0,C[A+17|0]=0,C[A+18|0]=0,C[A+19|0]=0,C[A+20|0]=0,C[A+21|0]=0,C[A+22|0]=0,C[A+23|0]=0,C[A+8|0]=0,C[A+9|0]=0,C[A+10|0]=0,C[A+11|0]=0,C[A+12|0]=0,C[A+13|0]=0,C[A+14|0]=0,C[A+15|0]=0,C[0|A]=0,C[A+1|0]=0,C[A+2|0]=0,C[A+3|0]=0,C[A+4|0]=0,C[A+5|0]=0,C[A+6|0]=0,C[A+7|0]=0,a=0)),s=o+32|0,a}function pI(A,I,g,C,B,Q,E,a,_,c,t){var r,e,y;return s=r=s-384|0,i[r+4>>2]=0,yA(e=r+16|0,c,t,0),t=o[c+20|0]|o[c+21|0]<<8|o[c+22|0]<<16|o[c+23|0]<<24,i[r+8>>2]=o[c+16|0]|o[c+17|0]<<8|o[c+18|0]<<16|o[c+19|0]<<24,i[r+12>>2]=t,jg(t=r- -64|0,64,0,y=r+4|0,e),wC(c=r+128|0,t),XC(t,64),SC(c,E,a,_),SC(c,35680,0-a&15,0),Og(A,C,B,Q,y,e),SC(c,A,B,Q),SC(c,35680,0-B&15,0),i[r+56>>2]=a,i[r+60>>2]=_,SC(c,A=r+56|0,8,0),i[r+56>>2]=B,i[r+60>>2]=Q,SC(c,A,8,0),nC(c,I),XC(c,256),g&&(i[g>>2]=16,i[g+4>>2]=0),XC(r+16|0,32),s=r+384|0,0}function wI(A,I,g,C,B){var Q,E,a=0;return s=Q=s+-64|0,!g&(E=RI(A))>>>0<128?(i[Q+60>>2]=0,i[Q+52>>2]=0,i[Q+56>>2]=0,i[Q+44>>2]=0,i[Q+48>>2]=0,g=0,E&&(g=E,(1|E)>>>0<65536||(g=E)),!(a=K(g))|!(3&o[a-4|0])||bg(a,0,g),a?(i[Q+36>>2]=0,i[Q+40>>2]=0,i[Q+12>>2]=a,i[Q+20>>2]=a,i[Q+24>>2]=E,i[Q+4>>2]=a,i[Q+16>>2]=E,i[Q+28>>2]=0,i[Q+32>>2]=0,i[Q+8>>2]=E,OA(Q+4|0,A,B)?(i[9404]=28,A=-1):A=i[Q+44>>2]!=(0|I)|i[Q+48>>2]!=(C>>>10|0),BA(a)):A=-1):(i[9404]=28,A=-1),s=Q- -64|0,A}function nI(A){var I,g=0,C=0;if(!A)return-25;if(!i[A>>2])return-1;if(E[A+4>>2]<16)return-2;if(!(i[A+8>>2]|!i[A+12>>2]))return-18;if(g=i[A+20>>2],!i[A+16>>2])return g?-19:-6;if(g>>>0<8)return-6;if(!(i[A+24>>2]|!i[A+28>>2]))return-20;if(!(i[A+32>>2]|!i[A+36>>2]))return-21;if(!(g=i[A+48>>2]))return-16;if(g>>>0>16777215)return-17;if(C=-14,!((I=i[A+44>>2])>>>0<8)){if(I>>>0>2097152)return-15;if(!(g<<3>>>0>I>>>0)){if(!i[A+40>>2])return-12;if(!(A=i[A+52>>2]))return-28;C=A>>>0>16777215?-29:0}}return C}function kI(A,I){var g,C=0,B=0;g=I;A:{I:{g:{if(I&=255){if(3&A)for(;;){if(!(C=o[0|A])|(0|I)==(0|C))break A;if(!(3&(A=A+1|0)))break}if(-2139062144!=(-2139062144&((C=i[A>>2])|16843008-C)))break g;for(B=a(I,16843009);;){if(-2139062144!=(-2139062144&(16843008-(I=C^B)|I)))break g;if(C=i[A+4>>2],A=I=A+4|0,-2139062144!=(-2139062144&(16843008-C|C)))break}break I}A=RI(A)+A|0;break A}I=A}for(;;){if(!(C=o[0|(A=I)]))break A;if(I=A+1|0,(0|C)==(255&g))break}}return o[0|A]==(255&g)?A:0}function FI(A,I,g,C){var B,Q=0;return s=B=s-208|0,i[B+72>>2]=0,i[B+76>>2]=0,Q=i[8591],i[B+8>>2]=i[8590],i[B+12>>2]=Q,Q=i[8593],i[B+16>>2]=i[8592],i[B+20>>2]=Q,Q=i[8595],i[B+24>>2]=i[8594],i[B+28>>2]=Q,Q=i[8597],i[B+32>>2]=i[8596],i[B+36>>2]=Q,Q=i[8599],i[B+40>>2]=i[8598],i[B+44>>2]=Q,Q=i[8601],i[B+48>>2]=i[8600],i[B+52>>2]=Q,Q=i[8603],i[B+56>>2]=i[8602],i[B+60>>2]=Q,i[B+64>>2]=0,i[B+68>>2]=0,Q=i[8589],i[B>>2]=i[8588],i[B+4>>2]=Q,SA(B,I,g,C),j(B,A),s=B+208|0,0}function SI(A){var I=0;return i[64+(A|=0)>>2]=0,i[A+68>>2]=0,i[A+72>>2]=0,i[A+76>>2]=0,I=i[8589],i[A>>2]=i[8588],i[A+4>>2]=I,I=i[8591],i[A+8>>2]=i[8590],i[A+12>>2]=I,I=i[8593],i[A+16>>2]=i[8592],i[A+20>>2]=I,I=i[8595],i[A+24>>2]=i[8594],i[A+28>>2]=I,I=i[8597],i[A+32>>2]=i[8596],i[A+36>>2]=I,I=i[8599],i[A+40>>2]=i[8598],i[A+44>>2]=I,I=i[8601],i[A+48>>2]=i[8600],i[A+52>>2]=I,I=i[8603],i[A+56>>2]=i[8602],i[A+60>>2]=I,0}function NI(A){return~((127&~o[A+31|0]|o[A+1|0]&o[A+2|0]&o[A+3|0]&o[A+4|0]&o[A+5|0]&o[A+6|0]&o[A+7|0]&o[A+8|0]&o[A+9|0]&o[A+10|0]&o[A+11|0]&o[A+12|0]&o[A+13|0]&o[A+14|0]&o[A+15|0]&o[A+16|0]&o[A+17|0]&o[A+18|0]&o[A+19|0]&o[A+20|0]&o[A+21|0]&o[A+22|0]&o[A+23|0]&o[A+24|0]&o[A+25|0]&o[A+26|0]&o[A+27|0]&o[A+28|0]&o[A+30|0]&o[A+29|0]^255)-1&236-o[0|A])>>>8&1}function GI(A,I){var g,B=0,Q=0,i=0,E=0;if(C[15+(g=s-16|0)|0]=0,I){if(I>>>0>=4)for(E=-4&I;B=A+Q|0,C[g+15|0]=o[0|B]|o[g+15|0],C[g+15|0]=o[B+1|0]|o[g+15|0],C[g+15|0]=o[B+2|0]|o[g+15|0],C[g+15|0]=o[B+3|0]|o[g+15|0],Q=Q+4|0,(0|E)!=(0|(i=i+4|0)););if(B=3&I)for(I=0;C[g+15|0]=o[A+Q|0]|o[g+15|0],Q=Q+1|0,(0|B)!=(0|(I=I+1|0)););}return o[g+15|0]-1>>>8&1}function MI(A,I,g){var B,Q=0,E=0;if(i[12+(B=s-16|0)>>2]=A,i[B+8>>2]=I,A=0,C[B+7|0]=0,g){if(I=1&g,1!=(0|g))for(E=-2&g,g=0;C[B+7|0]=o[B+7|0]|o[i[B+12>>2]+A|0]^o[i[B+8>>2]+A|0],Q=1|A,C[B+7|0]=o[B+7|0]|o[Q+i[B+12>>2]|0]^o[i[B+8>>2]+Q|0],A=A+2|0,(0|E)!=(0|(g=g+2|0)););I&&(C[B+7|0]=o[B+7|0]|o[i[B+12>>2]+A|0]^o[i[B+8>>2]+A|0])}return(o[B+7|0]-1>>>8&1)-1|0}function KI(A){for(var I=0,g=0,C=0,B=0,Q=0,i=0,E=0,a=0,_=0,c=0;B=(g=o[A+C|0])^o[0|(I=C+2688|0)]|B,Q=g^o[I+192|0]|Q,i=g^o[I+160|0]|i,E=g^o[I+128|0]|E,a=g^o[I+96|0]|a,_=g^o[I- -64|0]|_,c=g^o[I+32|0]|c,31!=(0|(C=C+1|0)););return((255&((I=127^(A=127&o[A+31|0]))|Q))-1|(255&(I|i))-1|(255&(I|E))-1|(255&(122^A|a))-1|(255&(5^A|_))-1|(255&(A|c))-1|(255&(A|B))-1)>>>8&1}function UI(A,I,g){var C=0,B=0,Q=0,i=0;return B=31&(Q=i=63&g),Q=Q>>>0>=32?-1>>>B|0:(C=-1>>>B|0)|(1<>>0>=32?(C=Q<>>32-B|C<>>0>=32?(C=-1<>>32-C,A&=g,I&=C,C=31&B,B>>>0>=32?(g=0,A=I>>>C|0):(g=I>>>C|0,A=((1<>>C),f=g|Q,A|i}function bI(A,I,g,C,B,Q){A|=0,I|=0,g|=0;var o=0,E=0;A:I:{g:{if(!(!(B|=0)&(C|=0)>>>0<64||(E=1+(B=B-1|0)|0,o=B,!(C=(B=C+-64|0)>>>0<4294967232?E:o)&B>>>0>4294967231|C))){if(!U(o=g,g=g- -64|0,B,C,Q|=0,0))break g;A&&bg(A,0,B)}if(C=-1,!I)break I;i[I>>2]=0,i[I+4>>2]=0,C=-1;break A}I&&(i[I>>2]=B,i[I+4>>2]=C),C=0,A&&yg(A,g,B)}return 0|C}function HI(A,I,g,C,B,Q,o,E,a,_){var c,t,r;return s=c=s-352|0,jg(r=c+32|0,64,0,a,_),wC(t=c+96|0,r),XC(r,64),SC(t,Q,o,E),SC(t,35648,0-o&15,0),SC(t,I,g,C),SC(t,35648,0-g&15,0),i[c+24>>2]=o,i[c+28>>2]=E,SC(t,Q=c+24|0,8,0),i[c+24>>2]=g,i[c+28>>2]=C,SC(t,Q,8,0),nC(t,c),XC(t,256),Q=oI(c,B),XC(c,16),A&&(Q?(bg(A,0,g),Q=-1):(Cg(A,I,g,C,a,1,_),Q=0)),s=c+352|0,Q}function YI(A,I,g,C,B,Q){var E,a;return A|=0,I|=0,g|=0,C|=0,Q|=0,s=E=s-32|0,a=o[0|(B|=0)]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,B=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[E+24>>2]=0,i[E+28>>2]=0,i[E+16>>2]=a,i[E+20>>2]=B,i[E+8>>2]=0,i[E+12>>2]=0,i[E>>2]=g,i[E+4>>2]=C,I-65>>>0<=4294967246?(i[9404]=28,A=-1):A=QA(A,I,0,0,0,Q,32,E,E+16|0),s=E+32|0,0|A}function JI(A,I,g,C,B){var Q,o;return A|=0,I|=0,g|=0,C|=0,s=Q=s-512|0,iI(o=Q+32|0,B|=0,32),dC(o,I,g,C),wg(o,Q+448|0),I=i[Q+476>>2],i[Q+24>>2]=i[Q+472>>2],i[Q+28>>2]=I,I=i[Q+468>>2],i[Q+16>>2]=i[Q+464>>2],i[Q+20>>2]=I,I=i[Q+460>>2],i[Q+8>>2]=i[Q+456>>2],i[Q+12>>2]=I,I=i[Q+452>>2],i[Q>>2]=i[Q+448>>2],i[Q+4>>2]=I,I=NC(A,Q),g=MI(Q,A,32),s=Q+512|0,((0|A)==(0|Q)?-1:I)|g}function dI(A,I,g,C,B,Q,o,E,a,_){var c,t,r;return s=c=s-352|0,Xg(r=c+32|0,64,0,a,_),wC(t=c+96|0,r),XC(r,64),SC(t,Q,o,E),i[c+24>>2]=o,i[c+28>>2]=E,SC(t,Q=c+24|0,8,0),SC(t,I,g,C),i[c+24>>2]=g,i[c+28>>2]=C,SC(t,Q,8,0),nC(t,c),XC(t,256),Q=oI(c,B),XC(c,16),A&&(Q?(bg(A,0,g),Q=-1):(mg(A,I,g,C,a,1,0,_),Q=0)),s=c+352|0,Q}function mI(A,I,g,C,B,Q,o,E,a,_,c){var t,r,e;return s=t=s-336|0,jg(e=t+16|0,64,0,_,c),wC(r=t+80|0,e),XC(e,64),SC(r,o,E,a),SC(r,35648,0-E&15,0),Cg(A,C,B,Q,_,1,c),SC(r,A,B,Q),SC(r,35648,0-B&15,0),i[t+8>>2]=E,i[t+12>>2]=a,SC(r,A=t+8|0,8,0),i[t+8>>2]=B,i[t+12>>2]=Q,SC(r,A,8,0),nC(r,I),XC(r,256),g&&(i[g>>2]=16,i[g+4>>2]=0),s=t+336|0,0}function lI(A,I){var g,C=0,B=0,Q=0,E=0,_=0;A:if(!(((g=o[0|A])-58&255)>>>0<246)){for(C=g,B=A;;){if(E=B,Q>>>0>429496729)break A;if((C=(255&C)-48|0)>>>0>~(Q=a(Q,10))>>>0)break A;if(Q=Q+C|0,!(((C=o[0|(B=B+1|0)])-58&255)>>>0>245))break}48==(0|g)&(0|A)!=(0|E)|(0|A)==(0|B)||(i[I>>2]=Q,_=B)}return _}function uI(A){var I=0,g=0,C=0,B=0;I=65,g=1024;A:{I:{if((0|(C=255&A))!=o[1024])for(C=a(C,16843009);;){if(-2139062144!=(-2139062144&((B=C^i[g>>2])|16843008-B)))break I;if(g=g+4|0,!((I=I-4|0)>>>0>3))break}if(!I)break A}for(A&=255;;){if((0|A)==o[0|g])return g;if(g=g+1|0,!(I=I-1|0))break}}return 0}function xI(A,I,g,C,B,Q,o,E,a,_,c){var t,r,e;return s=t=s-336|0,Xg(e=t+16|0,64,0,_,c),wC(r=t+80|0,e),XC(e,64),SC(r,o,E,a),i[t+8>>2]=E,i[t+12>>2]=a,SC(r,o=t+8|0,8,0),mg(A,C,B,Q,_,1,0,c),SC(r,A,B,Q),i[t+8>>2]=B,i[t+12>>2]=Q,SC(r,o,8,0),nC(r,I),XC(r,256),g&&(i[g>>2]=16,i[g+4>>2]=0),s=t+336|0,0}function vI(A,I,g,B,Q,i){return!B&g>>>0>=32|B?(Gg(A,I,g,B,Q,i),hC(A+16|0,A+32|0,g-32|0,B-(g>>>0<32)|0,A),C[A+8|0]=0,C[A+9|0]=0,C[A+10|0]=0,C[A+11|0]=0,C[A+12|0]=0,C[A+13|0]=0,C[A+14|0]=0,C[A+15|0]=0,C[0|A]=0,C[A+1|0]=0,C[A+2|0]=0,C[A+3|0]=0,C[A+4|0]=0,C[A+5|0]=0,C[A+6|0]=0,C[A+7|0]=0,A=0):A=-1,A}function RI(A){var I=0,g=0,C=0;A:{I:if(3&(I=A)){if(!o[0|I])return 0;for(;;){if(!(3&(I=I+1|0)))break I;if(!o[0|I])break}break A}for(;g=I,I=I+4|0,-2139062144==(-2139062144&((C=i[g>>2])|16843008-C)););for(;g=(I=g)+1|0,o[0|I];);}return I-A|0}function LI(A,I,g,C,B,Q){I|=0,B|=0,Q|=0;var o,E=0;return s=o=s-16|0,w(A|=0,o+8|0,yg(A- -64|0,g|=0,C|=0),C,B,Q,0),i[o+12>>2]|64!=i[o+8>>2]?(I&&(i[I>>2]=0,i[I+4>>2]=0),bg(A,0,C- -64|0),E=-1):I&&(i[I>>2]=C- -64,i[I+4>>2]=B-((C>>>0<4294967232)-1|0)),s=o+16|0,0|E}function PI(A,I){var g,C=0,B=0,Q=0,E=0;return(g=uI(o[0|I]))&&(C=uI(o[I+1|0]))&&(B=uI(o[I+2|0]))&&(Q=uI(o[I+3|0]))&&(E=uI(o[I+4|0]))?(i[A>>2]=g-1024|C-1024<<6|B-1024<<12|Q-1024<<18|E-1024<<24,I+5|0):(i[A>>2]=0,0)}function qI(A,I,g){var C;for(i[12+(C=s-16|0)>>2]=A,i[C+8>>2]=I,A=0,i[C+4>>2]=0;i[C+4>>2]=i[C+4>>2]|o[i[C+12>>2]+A|0]^o[i[C+8>>2]+A|0],I=1|A,i[C+4>>2]=i[C+4>>2]|o[I+i[C+12>>2]|0]^o[I+i[C+8>>2]|0],(0|g)!=(0|(A=A+2|0)););return(i[C+4>>2]-1>>>8&1)-1|0}function zI(A,I,g,C,B,Q,o,E,a,_,c){var t=0,r=0,e=0;return r=-1,(t=C>>>0<32)&!B||!(t=B-t|0)&(e=C-32|0)>>>0>4294967263|t|!E&o>>>0>4294967263|E||(r=0|pB[i[c>>2]](A,g,e,(g+C|0)-32|0,32,Q,o,a,_)),I&&(i[I>>2]=r?0:C-32|0,i[I+4>>2]=r?0:B-(C>>>0<32)|0),r}function jI(A,I){var g,C=0,B=0,Q=0;s=g=s-896|0,fA(C=g+848|0,I),fA(B=g+800|0,I+32|0),$(Q=g+320|0,C),$(I=g+160|0,B),$A(C=g+640|0,I),sA(I=g+480|0,Q,C),b(g,I,C=g+600|0),b(g+40|0,B=g+520|0,Q=g+560|0),b(g+80|0,Q,C),b(g+120|0,I,B),W(A,g),s=g+896|0}function XI(A){var I=0,g=0,B=0,Q=0,i=0;for(I=1;g=(B=I)+o[0|(I=A+Q|0)]|0,C[0|I]=g,g=o[I+1|0]+(g>>>8|0)|0,C[I+1|0]=g,g=o[I+2|0]+(g>>>8|0)|0,C[I+2|0]=g,B=I,I=o[I+3|0]+(g>>>8|0)|0,C[B+3|0]=I,I=I>>>8|0,Q=Q+4|0,4!=(0|(i=i+4|0)););}function OI(A,I,g,C,B,Q,o){var E;return s=E=s-16|0,A=bg(A,0,128),!(C|Q)&o>>>0<2147483649?(!Q&B>>>0>=3|!!(0|Q))&o>>>0>8191?(ag(E,16),A=iA(B,o>>>10|0,I,g,E,A,1)?-1:0):(i[9404]=28,A=-1):(i[9404]=22,A=-1),s=E+16|0,A}function WI(A,I){var g=0;4&I&&((I=i[A>>2])&&XC(i[I+4>>2],i[A+16>>2]<<10),(I=i[A+4>>2])&&XC(I,i[A+20>>2]<<3)),BA(i[A+4>>2]),i[A+4>>2]=0,(I=i[A>>2])&&(g=i[I>>2])&&BA(g),BA(I),i[A>>2]=0}function VI(A,I,g,C,B,o,E,a,_,c,t){return!B&C>>>0>4294967263|!!(0|B)|!a&E>>>0>=4294967264|!!(0|a)?(rC(),Q()):(A=0|pB[i[t>>2]](A,A+C|0,32,g,C,o,E,_,c),I&&(C=(g=C+32|0)>>>0<32?B+1|0:B,i[I>>2]=A?0:g,i[I+4>>2]=A?0:C)),A}function ZI(A){var I=0,g=0,C=0,B=0,Q=0,i=0,E=0,a=0;for(I=32,g=1;a|=(B=o[(C=I-2|0)+A|0])-(Q=o[C+2912|0])>>8&(I=((i=o[2912+(I=I-1|0)|0])^(E=o[A+I|0]))-1>>8&g)|E-i>>8&g,g=I&(B^Q)-1>>8,I=C;);return!!(255&a)}function TI(A,I,g,C,B,Q,o){var E;return s=E=s-16|0,A=bg(A,0,128),!(C|Q)&o>>>0<2147483649?!!(B|Q)&o>>>0>8191?(ag(E,16),A=iA(B,o>>>10|0,I,g,E,A,2)?-1:0):(i[9404]=28,A=-1):(i[9404]=22,A=-1),s=E+16|0,A}function $I(A){var I=0;return i[32+(A|=0)>>2]=0,i[A+36>>2]=0,I=i[8809],i[A>>2]=i[8808],i[A+4>>2]=I,I=i[8811],i[A+8>>2]=i[8810],i[A+12>>2]=I,I=i[8813],i[A+16>>2]=i[8812],i[A+20>>2]=I,I=i[8815],i[A+24>>2]=i[8814],i[A+28>>2]=I,0}function Ag(A,I,g,C,B,Q,i){var o,E,a=0,_=0;return s=o=s+-64|0,a=-1,(E=g>>>0<16)&!C||CI(_=o+32|0,i,Q)||yA(o,35584,_,0)||(a=sI(A,I+16|0,I,g-16|0,C-E|0,B,o),XC(o,32)),s=o- -64|0,a}function Ig(A,I,g,C){var B,Q,i,o,E=0,_=0;return o=a(E=g>>>16|0,_=A>>>16|0),E=(65535&(_=((i=a(B=65535&g,Q=65535&A))>>>16|0)+a(_,B)|0))+a(E,Q)|0,f=(a(I,g)+o|0)+a(A,C)+(_>>>16)+(E>>>16)|0,65535&i|E<<16}function gg(A,I,g){var C=0,B=0;if(!g)return 0;if(C=o[0|A])A:{for(;;){if((0|(B=o[0|I]))!=(0|C)|!B)break A;if(!(g=g-1|0))break A;if(I=I+1|0,C=o[A+1|0],A=A+1|0,!C)break}C=0}else C=0;return C-o[0|I]|0}function Cg(A,I,g,C,B,o,E){var a=0,_=0;if(a=C,!(1==(((a=(_=g+63|0)>>>0<63?a+1|0:a)>>>6|0)+!!(0|(a=(63&a)<<26|_>>>6))|0)&o>>>0>(_=0-a|0)>>>0|1==(0|C)|C>>>0>1))return 0|pB[i[9199]](A,I,g,C,B,o,E);rC(),Q()}function Bg(A,I,g,C,B,Q,i){var o;return A|=0,I|=0,g|=0,C|=0,B|=0,s=o=s+-64|0,CI(o+32|0,i|=0,Q|=0)?Q=-1:(Q=-1,wA(o,35664,o+32|0,0)||(Q=vI(A,I,g,C,B,o),XC(o,32))),s=o- -64|0,0|Q}function Qg(A,I,g,C,B,Q,i){var o;return A|=0,I|=0,g|=0,C|=0,B|=0,s=o=s+-64|0,CI(o+32|0,i|=0,Q|=0)?Q=-1:(Q=-1,wA(o,35664,o+32|0,0)||(Q=fI(A,I,g,C,B,o),XC(o,32))),s=o- -64|0,0|Q}function ig(A,I,g,C,B,i,o){var E;if(s=E=s+-64|0,!C&g>>>0<4294967280)return CI(E+32|0,o,i)?o=-1:(o=-1,yA(E,35584,E+32|0,0)||(o=EI(A+16|0,A,I,g,C,B,E),XC(E,32))),s=E- -64|0,o;rC(),Q()}function og(A,I){for(var g=0,B=0,Q=0,i=0,E=0;B=A+Q|0,g=o[I+Q|0]+(o[0|B]+g|0)|0,C[0|B]=g,i=(B=1|Q)+A|0,g=o[I+B|0]+(o[0|i]+(g>>>8|0)|0)|0,C[0|i]=g,g=g>>>8|0,Q=Q+2|0,32!=(0|(E=E+2|0)););}function Eg(A,I){for(var g=0,B=0,Q=0,i=0,E=0;g=(o[0|(B=A+Q|0)]-o[I+Q|0]|0)+g|0,C[0|B]=g,g=(o[0|(i=(B=1|Q)+A|0)]-o[I+B|0]|0)+(g>>8)|0,C[0|i]=g,g>>=8,Q=Q+2|0,64!=(0|(E=E+2|0)););}function ag(A,I){A|=0;var g,B=0,Q=0,i=0;if(s=g=s-16|0,I|=0)for(;C[g+15|0]=0,Q=A+B|0,i=0|t(36800,g+15|0,0),C[0|Q]=i,(0|(B=B+1|0))!=(0|I););s=g+16|0}function _g(A,I,g,C,B,Q,i){var o,E,a=0;return s=o=s-32|0,a=-1,(E=g>>>0<16)&!C||cC(o,Q,i)||(a=eI(A,I+16|0,I,g-16|0,C-E|0,B,o),XC(o,32)),s=o+32|0,a}function cg(A){var I,g;A:{if(!((A=(I=i[8924])+(g=A+7&-8)|0)>>>0<=I>>>0&&g)){if(A>>>0<=wB()<<16>>>0)break A;if(0|y(0|A))break A}return i[9404]=48,-1}return i[8924]=A,I}function tg(A,I){var g,B,Q;s=g=s-176|0,LA(B=g+96|0,I+80|0),b(Q=g+48|0,I,B),b(g,I+40|0,B),QI(A,g),QI(g+144|0,Q),C[A+31|0]=o[A+31|0]^o[g+144|0]<<7,s=g+176|0}function rg(A,I,g,C,B,Q,i,o,E,a){var _,c,t=0,r=0,e=0;return s=_=s-16|0,t=-1,_C(c=_+4|0)||(r=-1,e=_A(c,A,I,g,C,B,Q,i,o,E,a),t=Rg(c)?r:e),s=_+16|0,t}function eg(A,I,g,C,B,o,E,a,_,c,t,r){return g&&(i[g>>2]=32,i[g+4>>2]=0),!_&a>>>0<4294967264&!o&B>>>0<=4294967263||(rC(),Q()),0|pB[i[r>>2]](A,I,32,C,B,E,a,c,t)}function yg(A,I,g){var B=0;if(A>>>0>>0)return Ng(A,I,g);if(g)for(B=A+g|0,I=I+g|0;I=I-1|0,C[0|(B=B-1|0)]=o[0|I],g=g-1|0;);return A}function sg(A,I,g,C,B,i,o){var E,a=0;if(s=E=s-32|0,!C&g>>>0<4294967280)return a=-1,cC(E,i,o)||(a=aI(A+16|0,A,I,g,C,B,E),XC(E,32)),s=E+32|0,a;rC(),Q()}function hg(A,I,g,C,B,Q){return I|=0,0|(!(C|=0)&(g|=0)>>>0>=16|C?eI(A|=0,I+16|0,I,g-16|0,C-(g>>>0<16)|0,B|=0,Q|=0):-1)}function Dg(A,I,g,C,B,Q){return I|=0,0|(!(C|=0)&(g|=0)>>>0>=16|C?sI(A|=0,I+16|0,I,g-16|0,C-(g>>>0<16)|0,B|=0,Q|=0):-1)}function fg(A,I,g,C,B,Q,o,E,a,_,c){return!C&g>>>0>4294967263|C|!E&o>>>0>4294967263|E?-1:0|pB[i[c>>2]](A,I,g,B,32,Q,o,a,_)}function pg(A,I,g){A|=0;var C,B=0;return s=C=s-32|0,B=-1,CI(C,g|=0,I|=0)||(B=wA(A,35664,C,0)),s=C+32|0,0|B}function wg(A,I){var g;return I|=0,s=g=s+-64|0,j(A|=0,g),SA(A=A+208|0,g,64,0),j(A,I),XC(g,64),s=g- -64|0,0}function ng(A,I,g,C){var B;return I|=0,g|=0,C|=0,s=B=s+-64|0,j(A|=0,B),A=w(I,g,B,64,0,C,1),s=B- -64|0,0|A}function kg(A,I){var g,C,B;b(A,I,g=I+120|0),b(A+40|0,C=I+40|0,B=I+80|0),b(A+80|0,B,g),b(A+120|0,I,C)}function Fg(A,I,g,C,B,Q,i){return 0|TI(A|=0,I|=0,(A=0)|(g|=0),C|=0,A|(B|=0),Q|=0,i|=0)}function Sg(A,I){var g;return I|=0,s=g=s-32|0,JA(A|=0,g),UA(A=A+104|0,g,32,0),JA(A,I),XC(g,32),s=g+32|0,0}function Ng(A,I,g){var B=0;if(g)for(B=A;C[0|B]=o[0|I],B=B+1|0,I=I+1|0,g=g-1|0;);return A}function Gg(A,I,g,C,B,Q){var i;return s=i=s-32|0,wA(i,B,Q,0),A=oC(A,I,g,C,B+16|0,0,0,i),XC(i,32),s=i+32|0,A}function Mg(A){for(A|=0;ag(A,32),C[A+31|0]=31&o[A+31|0],!ZI(A)||GI(A,32););}function Kg(A,I,g){var C;return I|=0,g|=0,s=C=s+-64|0,j(A|=0,C),A=U(I,C,64,0,g,1),s=C- -64|0,0|A}function Ug(A,I,g,C,B){var Q;return s=Q=s-32|0,wA(Q,C,B,0),A=DC(A,I,g,C+16|0,Q),XC(Q,32),s=Q+32|0,A}function bg(A,I,g){var B=0;if(g)for(B=A;C[0|B]=I,B=B+1|0,g=g-1|0;);return A}function Hg(A,I,g){return A|=0,I|=0,(g|=0)>>>0>=256&&(r(1366,1279,107,1123),Q()),0|AA(A,I,255&g)}function Yg(A,I,g,C,B,Q,i){return 0|aI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)}function Jg(A,I,g,C,B,Q,i){return 0|eI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)}function dg(A,I,g,C,B,Q,i){return 0|EI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)}function mg(A,I,g,C,B,o,E,a){return 1==(0|C)|C>>>0>1&&(rC(),Q()),0|pB[i[9198]](A,I,g,C,B,o,E,a)}function lg(A,I,g,C,B,Q,i){return 0|sI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)}function ug(A,I,g,C,B,o){return 1==(0|C)|C>>>0>1&&(rC(),Q()),0|pB[i[9198]](A,I,g,C,B,0,0,o)}function xg(A,I,g,C,B,o){return 1==(0|C)|C>>>0>1&&(rC(),Q()),0|pB[i[9199]](A,I,g,C,B,0,o)}function vg(A,I,g,C,B,Q){return w(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,0),0}function Rg(A){var I;return(I=i[A>>2])&&BA(I),i[A+8>>2]=0,i[A>>2]=0,i[A+4>>2]=0,0}function Lg(A,I){var g=0;return(-1>>>(g=31&I)&A)<>>A}function Pg(A,I,g,C,B,Q){return 0|vI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)}function qg(A,I,g,C,B,Q){return 0|fI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)}function zg(A,I,g,C,B,Q){return 0|Gg(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)}function jg(A,I,g,C,B){return 1==(0|g)|g>>>0>1&&(rC(),Q()),0|pB[i[9197]](A,I,g,C,B)}function Xg(A,I,g,C,B){return 1==(0|g)|g>>>0>1&&(rC(),Q()),0|pB[i[9196]](A,I,g,C,B)}function Og(A,I,g,C,B,o){1==(0|C)|C>>>0>1&&(rC(),Q()),pB[i[9199]](A,I,g,C,B,1,o)}function Wg(A,I,g,C,B){return 0|U(A|=0,I|=0,g|=0,C|=0,B|=0,0)}function Vg(A,I,g,C,B){return 0|hC(A|=0,I|=0,g|=0,C|=0,B|=0)}function Zg(A,I,g,C,B){return 0|fC(A|=0,I|=0,g|=0,C|=0,B|=0)}function Tg(A,I,g,C,B){return 0|Ug(A|=0,I|=0,g|=0,C|=0,B|=0)}function $g(){var A;s=A=s-16|0,C[A+15|0]=0,t(36836,A+15|0,0),s=A+16|0}function AC(A,I,g,C){return CA(A|=0,I|=0,g|=0,C|=0,20),0}function IC(A,I,g,C){return CA(A|=0,I|=0,g|=0,C|=0,12),0}function gC(A,I,g,C){return CA(A|=0,I|=0,g|=0,C|=0,8),0}function CC(A,I,g,C){return 0|FI(A|=0,I|=0,g|=0,C|=0)}function BC(A,I,g,C){return 0|SC(A|=0,I|=0,g|=0,C|=0)}function QC(A,I,g,C){return 0|SA(A|=0,I|=0,g|=0,C|=0)}function iC(A,I,g,C){return 0|eA(A|=0,I|=0,g|=0,C|=0)}function oC(A,I,g,C,B,Q,o,E){return 0|pB[i[8933]](A,I,g,C,B,Q,o,E)}function EC(A,I,g,C){return 0|dC(A|=0,I|=0,g|=0,C|=0)}function aC(A,I,g,C,B,Q){return 0|pB[i[8933]](A,I,g,C,B,0,0,Q)}function _C(A){return i[A+8>>2]=0,i[A>>2]=0,i[A+4>>2]=0,0}function cC(A,I,g){return 0|pg(A|=0,I|=0,g|=0)}function tC(A,I,g){return 0|CI(A|=0,I|=0,g|=0)}function rC(){var A;(A=i[9538])&&pB[0|A](),DB(),Q()}function eC(A,I,g){return 0|Hg(A|=0,I|=0,g|=0)}function yC(A,I,g){return 0|iI(A|=0,I|=0,g|=0)}function sC(A,I){return A|=0,ag(I|=0,32),0|pC(A,I)}function hC(A,I,g,C,B){return 0|pB[i[8925]](A,I,g,C,B)}function DC(A,I,g,C,B){return 0|pB[i[8932]](A,I,g,C,B)}function fC(A,I,g,C,B){return 0|pB[i[8926]](A,I,g,C,B)}function pC(A,I){return A|=0,I|=0,0|pB[i[8931]](A,I)}function wC(A,I){return A|=0,I|=0,0|pB[i[8927]](A,I)}function nC(A,I){return A|=0,I|=0,0|pB[i[8929]](A,I)}function kC(A,I,g,C,B,Q,i){return lA(A,I,g,C,B,Q,i)}function FC(A){return A?31-_(A-1^A)|0:32}function SC(A,I,g,C){return 0|pB[i[8928]](A,I,g,C)}function NC(A,I){return 0|qI(A|=0,I|=0,32)}function GC(A,I){return 0|qI(A|=0,I|=0,64)}function MC(A,I,g){n(A|=0,I|=0,g|=0)}function KC(A,I){return 0|pC(A|=0,I|=0)}function UC(A,I){return 0|sC(A|=0,I|=0)}function bC(A,I,g,C){return BI(A,I,g,C,1)}function HC(A,I,g,C){return wI(A,I,g,C,1)}function YC(A,I,g,C){return wI(A,I,g,C,2)}function JC(A,I,g,C){return BI(A,I,g,C,2)}function dC(A,I,g,C){return SA(A,I,g,C),0}function mC(A,I,g,C){return UA(A,I,g,C),0}function lC(A,I,g,C){return WA(A,I,g,C)}function uC(A){return SI(A|=0),0}function xC(){return-2147483648}function vC(){return 1073741824}function RC(){return 268435456}function LC(){return 33554432}function PC(A){ag(A|=0,32)}function qC(){return 67108864}function zC(A){ag(A|=0,16)}function jC(){return 16777216}function XC(A,I){bg(A,0,I)}function OC(){return 1564}function WC(){return 1338}function VC(){return 8192}function ZC(){return 384}function TC(){return 256}function $C(){return 416}function AB(){return 128}function IB(){return 208}function gB(){return 64}function CB(){return 16}function BB(){return 32}function QB(){return-65}function iB(){return-33}function oB(){return 48}function EB(){return-17}function aB(){return 12}function _B(){return 24}function cB(){return-1}function tB(){return 2}function rB(){return 3}function eB(){return 8}function yB(){return 1}function sB(){return 4}function hB(){return 0}function DB(){e(),Q()}B(I=o,1024,\"Li8wMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5egBqcwByYW5kb21ieXRlcwBiNjRfcG9zIDw9IGI2NF9sZW4AY3J5cHRvX2dlbmVyaWNoYXNoX2JsYWtlMmJfZmluYWwAYXJnb24yaWQsYXJnb24yaQAkYXJnb24yaQAkYXJnb24yaWQAcmFuZG9tYnl0ZXMvcmFuZG9tYnl0ZXMuYwBzb2RpdW0vY29kZWNzLmMAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2JsYWtlMmItcmVmLmMAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2dlbmVyaWNoYXNoX2JsYWtlMmIuYwB4MjU1MTlibGFrZTJiAGJ1Zl9sZW4gPD0gU0laRV9NQVgAb3V0bGVuIDw9IFVJTlQ4X01BWABTLT5idWZsZW4gPD0gQkxBS0UyQl9CTE9DS0JZVEVTACRhcmdvbjJpJHY9ACRhcmdvbjJpZCR2PQBjdXJ2ZTI1NTE5AGVkMjU1MTkAaG1hY3NoYTUxMjI1NgBjdXJ2ZTI1NTE5eHNhbHNhMjBwb2x5MTMwNQBzb2RpdW1fYmluMmJhc2U2NABzaXBoYXNoMjQAc2hhNTEyAHhzYWxzYTIwADEuMC4yMAAkYXJnb24yaSQAJGFyZ29uMmlkJAAkNyQAAAAAAAC2eFn/hXLTAL1uFf8PCmoAKcABAJjoef+8PKD/mXHO/wC34v60DUj/AAAAAAAAAACwoA7+08mG/54YjwB/aTUAYAy9AKfX+/+fTID+amXh/x78BACSDK4=\"),B(I,1680,\"WfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQ\"),B(I,1728,\"hTuMAb3xJP/4JcMBYNw3ALdMPv/DQj0AMkykAeGkTP9MPaP/dT4fAFGRQP92QQ4AonPW/waKLgB85vT/CoqPADQawgC49EwAgY8pAb70E/97qnr/YoFEAHnVkwBWZR7/oWebAIxZQ//v5b4BQwu1AMbwif7uRbz/Q5fuABMqbP/lVXEBMkSH/xFqCQAyZwH/UAGoASOYHv8QqLkBOFno/2XS/AAp+kcAzKpP/w4u7/9QTe8AvdZL/xGN+QAmUEz/vlV1AFbkqgCc2NABw8+k/5ZCTP+v4RD/jVBiAUzb8gDGonIALtqYAJsr8f6boGj/M7ulAAIRrwBCVKAB9zoeACNBNf5F7L8ALYb1AaN73QAgbhT/NBelALrWRwDpsGAA8u82ATlZigBTAFT/iKBkAFyOeP5ofL4AtbE+//opVQCYgioBYPz2AJeXP/7vhT4AIDicAC2nvf+OhbMBg1bTALuzlv76qg7/0qNOACU0lwBjTRoA7pzV/9XA0QFJLlQAFEEpATbOTwDJg5L+qm8Y/7EhMv6rJsv/Tvd0ANHdmQCFgLIBOiwZAMknOwG9E/wAMeXSAXW7dQC1s7gBAHLbADBekwD1KTgAfQ3M/vStdwAs3SD+VOoUAPmgxgHsfur/L2Oo/qrimf9ms9gA4o16/3pCmf629YYA4+QZAdY56//YrTj/tefSAHeAnf+BX4j/bn4zAAKpt/8HgmL+RbBe/3QE4wHZ8pH/yq0fAWkBJ/8ur0UA5C86/9fgRf7POEX/EP6L/xfP1P/KFH7/X9Vg/wmwIQDIBc//8SqA/iMhwP/45cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/\"),B(I,2720,\"AQ==\"),B(I,2752,\"JuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQ=\"),B(I,2943,\"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\"),B(I,33964,\"AQAAAHbBXwBlcAL/UPyh/vJqxv+FBrIA5N9wAN/uVf4z8xoAPiuL/stBCg==\"),B(I,34016,\"M03tAJGqVv82JjP/8YBl/yl5Sv/sTpsAqZdp/pwpSADCZq//zqJl/wAAAAAAAAAAGy57ARKo/f/Tr5f+w9tgADh2vv7+0fX/mWR+/uiBFf81uPL/x6Td\"),B(I,34144,\"AQ==\"),B(I,34176,\"4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f0xpYnNvZGl1bURSRwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4KZykpFPwv0kaFCrcnJskmXDghGy7tKsRa/G0sTd+zlZ0TDThT3mOvi1RzCmWosnc8uwpqduau7UcuycKBOzWCFIUscpJkA/FMoei/ogEwQrxLZhqokZf40HCLS8IwvlQGo1FsxxhS79YZ6JLREKllVSQGmdYqIHFXhTUO9LjRuzJwoGoQyNDSuBbBpBlTq0FRCGw3Hpnrjt9Md0gnqEib4bW8sDRjWsnFswwcOcuKQeNKqthOc+Njd0/KnFujuLLW828uaPyy713ugo90YC8XQ29jpXhyq/ChFHjIhOw5ZBoIAseMKB5jI/r/vpDpvYLe62xQpBV5xrL3o/m+K1Ny4/J4ccacYSbqzj4nygfCwCHHuIbRHuvgzdZ92up40W7uf0999bpvF3KqZ/AGppjIosV9YwquDfm+BJg/ERtHHBM1C3EbhH0EI/V32yiTJMdAe6vKMry+yRUKvp48TA0QnMRnHUO2Qj7LvtTFTCp+ZfycKX9Z7PrWOqtvy18XWEdKjBlEbIA=\"),B(I,35184,\"7dP1XBpjEljWnPei3vneFA==\"),B(I,35215,\"EA==\"),B(I,35232,\"Z+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FuYL4pCkUQ3cc/7wLWl27XpW8JWOfER8Vmkgj+S1V4cq5iqB9gBW4MSvoUxJMN9DFV0Xb5y/rHegKcG3Jt08ZvBwWmb5IZHvu/GncEPzKEMJG8s6S2qhHRK3KmwXNqI+XZSUT6YbcYxqMgnA7DHf1m/8wvgxkeRp9VRY8oGZykpFIUKtyc4IRsu/G0sTRMNOFNUcwpluwpqdi7JwoGFLHKSoei/oktmGqhwi0vCo1FsxxnoktEkBpnWhTUO9HCgahAWwaQZCGw3Hkx3SCe1vLA0swwcOUqq2E5Pypxb828uaO6Cj3RvY6V4FHjIhAgCx4z6/76Q62xQpPej+b7yeHHGgA==\"),B(I,35600,\"U2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMB\"),B(I,35696,\"EJUBAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQ==\"),B(I,35744,\"xmNjpfh8fITud3eZ9nt7jf/y8g3Wa2u93m9vsZHFxVRgMDBQAgEBA85nZ6lWKyt95/7+GbXX12JNq6vm7HZ2mo/KykUfgoKdicnJQPp9fYfv+voVsllZ645HR8n78PALQa2t7LPU1GdfoqL9Ra+v6iOcnL9TpKT35HJylpvAwFt1t7fC4f39HD2Tk65MJiZqbDY2Wn4/P0H19/cCg8zMT2g0NFxRpaX00eXlNPnx8QjicXGTq9jYc2IxMVMqFRU/CAQEDJXHx1JGIyNlncPDXjAYGCg3lpahCgUFDy+amrUOBwcJJBISNhuAgJvf4uI9zevrJk4nJ2l/srLN6nV1nxIJCRsdg4OeWCwsdDQaGi42Gxst3G5usrRaWu5boKD7pFJS9nY7O0231tZhfbOzzlIpKXvd4+M+Xi8vcROEhJemU1P1udHRaAAAAADB7e0sQCAgYOP8/B95sbHItltb7dRqar6Ny8tGZ76+2XI5OUuUSkremExM1LBYWOiFz89Ku9DQa8Xv7ypPqqrl7fv7FoZDQ8WaTU3XZjMzVRGFhZSKRUXP6fn5EAQCAgb+f3+BoFBQ8Hg8PEQln5+6S6io46JRUfNdo6P+gEBAwAWPj4o/kpKtIZ2dvHA4OEjx9fUEY7y833e2tsGv2tp1QiEhYyAQEDDl//8a/fPzDr/S0m2Bzc1MGAwMFCYTEzXD7Owvvl9f4TWXl6KIRETMLhcXOZPExFdVp6fy/H5+gno9PUfIZGSsul1d5zIZGSvmc3OVwGBgoBmBgZieT0/Ro9zcf0QiImZUKip+O5CQqwuIiIOMRkbKx+7uKWu4uNMoFBQ8p97eebxeXuIWCwsdrdvbdtvg4DtkMjJWdDo6ThQKCh6SSUnbDAYGCkgkJGy4XFzkn8LCXb3T025DrKzvxGJipjmRkagxlZWk0+TkN/J5eYvV5+cyi8jIQ243N1nabW23AY2NjLHV1WScTk7SSamp4NhsbLSsVlb68/T0B8/q6iXKZWWv9Hp6jkeurukQCAgYb7q61fB4eIhKJSVvXC4ucjgcHCRXpqbxc7S0x5fGxlHL6Ogjod3dfOh0dJw+Hx8hlktL3WG9vdwNi4uGD4qKheBwcJB8Pj5CcbW1xMxmZqqQSEjYBgMDBff29gEcDg4SwmFho2o1NV+uV1f5abm50BeGhpGZwcFYOh0dJyeenrnZ4eE46/j4EyuYmLMiEREz0mlpu6nZ2XAHjo6JM5SUpy2bm7Y8Hh4iFYeHksnp6SCHzs5JqlVV/1AoKHil3996A4yMj1mhofgJiYmAGg0NF2W/v9rX5uYxhEJCxtBoaLiCQUHDKZmZsFotLXceDw8Re7Cwy6hUVPxtu7vWLBYWOgoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAAR\");var fB,pB=(fB=[null,function(A,I,g,B,Q){var E,a,_;return A|=0,I|=0,g|=0,B|=0,Q|=0,s=E=(a=s)-128&-64,i[E>>2]=67108863&(o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24),i[E+4>>2]=(o[Q+3|0]|o[Q+4|0]<<8|o[Q+5|0]<<16|o[Q+6|0]<<24)>>>2&67108611,i[E+8>>2]=(o[Q+6|0]|o[Q+7|0]<<8|o[Q+8|0]<<16|o[Q+9|0]<<24)>>>4&67092735,i[E+12>>2]=(o[Q+9|0]|o[Q+10|0]<<8|o[Q+11|0]<<16|o[Q+12|0]<<24)>>>6&66076671,_=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[E+20>>2]=0,i[E+24>>2]=0,i[E+28>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,i[E+16>>2]=_>>>8&1048575,i[E+40>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[E+44>>2]=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[E+48>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,Q=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,C[E+80|0]=0,i[E+56>>2]=0,i[E+60>>2]=0,i[E+52>>2]=Q,vA(E,I,g,B),gI(E,A),s=a,0},function(A,I,g,B,Q){var E,a,_;return A|=0,I|=0,g|=0,B|=0,Q|=0,s=E=(a=s)-192&-64,i[E+64>>2]=67108863&(o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24),i[E+68>>2]=(o[Q+3|0]|o[Q+4|0]<<8|o[Q+5|0]<<16|o[Q+6|0]<<24)>>>2&67108611,i[E+72>>2]=(o[Q+6|0]|o[Q+7|0]<<8|o[Q+8|0]<<16|o[Q+9|0]<<24)>>>4&67092735,i[E+76>>2]=(o[Q+9|0]|o[Q+10|0]<<8|o[Q+11|0]<<16|o[Q+12|0]<<24)>>>6&66076671,_=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[E+84>>2]=0,i[E+88>>2]=0,i[E+92>>2]=0,i[E+96>>2]=0,i[E+100>>2]=0,i[E+80>>2]=_>>>8&1048575,i[E+104>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[E+108>>2]=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[E+112>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,Q=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,C[E+144|0]=0,i[E+120>>2]=0,i[E+124>>2]=0,i[E+116>>2]=Q,vA(Q=E- -64|0,I,g,B),gI(Q,I=E+48|0),A=oI(A,I),s=a,0|A},function(A,I){var g;return I|=0,i[(A|=0)>>2]=67108863&(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24),i[A+4>>2]=(o[I+3|0]|o[I+4|0]<<8|o[I+5|0]<<16|o[I+6|0]<<24)>>>2&67108611,i[A+8>>2]=(o[I+6|0]|o[I+7|0]<<8|o[I+8|0]<<16|o[I+9|0]<<24)>>>4&67092735,i[A+12>>2]=(o[I+9|0]|o[I+10|0]<<8|o[I+11|0]<<16|o[I+12|0]<<24)>>>6&66076671,g=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,i[A+20>>2]=0,i[A+24>>2]=0,i[A+28>>2]=0,i[A+32>>2]=0,i[A+36>>2]=0,i[A+16>>2]=g>>>8&1048575,i[A+40>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[A+44>>2]=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[A+48>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,I=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,C[A+80|0]=0,i[A+56>>2]=0,i[A+60>>2]=0,i[A+52>>2]=I,0},function(A,I,g,C){return vA(A|=0,I|=0,g|=0,C|=0),0},function(A,I){return gI(A|=0,I|=0),0},function(A,I,g){A|=0,I|=0,g|=0;var B,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0,BA=0,QA=0,iA=0,oA=0,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0,sA=0,hA=0,DA=0,pA=0,wA=0,nA=0,kA=0;for(s=B=s-368|0;D=(a=o[g+Q|0])^o[0|(c=Q+34112|0)]|D,h=a^o[c+192|0]|h,y=a^o[c+160|0]|y,e=a^o[c+128|0]|e,_=a^o[c+96|0]|_,t=a^o[c- -64|0]|t,E=a^o[c+32|0]|E,31!=(0|(Q=Q+1|0)););if(Q=-1,!(256&((255&((a=127^(c=127&o[g+31|0]))|h))-1|(255&(a|y))-1|(255&(a|e))-1|(255&(87^c|_))-1|(255&(t|c))-1|(255&(E|c))-1|(255&(c|D))-1))){for(Q=I,I=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[B+360>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,i[B+364>>2]=I,I=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[B+352>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[B+356>>2]=I,E=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,I=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,i[B+336>>2]=I,i[B+340>>2]=E,E=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[B+344>>2]=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24,i[B+348>>2]=E,C[B+336|0]=248&I,C[B+367|0]=63&o[B+367|0]|64,fA(B+288|0,g),i[B+260>>2]=0,i[B+264>>2]=0,i[B+268>>2]=0,i[B+272>>2]=0,i[B+276>>2]=0,i[B+208>>2]=0,i[B+212>>2]=0,i[B+216>>2]=0,i[B+220>>2]=0,i[B+224>>2]=0,i[B+228>>2]=0,I=i[B+308>>2],i[B+160>>2]=i[B+304>>2],i[B+164>>2]=I,I=i[B+316>>2],i[B+168>>2]=i[B+312>>2],i[B+172>>2]=I,I=i[B+324>>2],i[B+176>>2]=i[B+320>>2],i[B+180>>2]=I,i[B+244>>2]=0,i[B+248>>2]=0,i[B+240>>2]=1,i[B+252>>2]=0,i[B+256>>2]=0,i[B+192>>2]=0,i[B+196>>2]=0,i[B+200>>2]=0,i[B+204>>2]=0,I=i[B+292>>2],i[B+144>>2]=i[B+288>>2],i[B+148>>2]=I,I=i[B+300>>2],i[B+152>>2]=i[B+296>>2],i[B+156>>2]=I,i[B+116>>2]=0,i[B+120>>2]=0,i[B+124>>2]=0,i[B+128>>2]=0,i[B+132>>2]=0,i[B+100>>2]=0,i[B+104>>2]=0,i[B+96>>2]=1,i[B+108>>2]=0,i[B+112>>2]=0,g=254;Z=i[B+276>>2],a=i[B+180>>2],T=i[B+96>>2],$=i[B+192>>2],AA=i[B+144>>2],IA=i[B+240>>2],gA=i[B+100>>2],CA=i[B+196>>2],BA=i[B+148>>2],QA=i[B+244>>2],U=i[B+104>>2],iA=i[B+200>>2],H=i[B+152>>2],oA=i[B+248>>2],d=i[B+108>>2],EA=i[B+204>>2],m=i[B+156>>2],aA=i[B+252>>2],Y=i[B+112>>2],_A=i[B+208>>2],M=i[B+160>>2],cA=i[B+256>>2],D=i[B+116>>2],tA=i[B+212>>2],r=i[B+164>>2],rA=i[B+260>>2],h=i[B+120>>2],eA=i[B+216>>2],y=i[B+168>>2],yA=i[B+264>>2],e=i[B+124>>2],sA=i[B+220>>2],_=i[B+172>>2],hA=i[B+268>>2],t=i[B+128>>2],DA=i[B+224>>2],E=i[B+176>>2],G=i[B+272>>2],pA=g,K=(F=(I=0-((I=V)^(V=o[(wA=B+336|0)+(g>>>3|0)|0]>>>(7&g)&1))|0)&((Q=i[B+132>>2])^(j=i[B+228>>2])))^Q,i[B+132>>2]=K,X=a^(S=I&(a^Z)),i[B+84>>2]=X-K,J=t^(w=I&(t^DA)),i[B+128>>2]=J,O=(N=I&(E^G))^E,i[B+80>>2]=O-J,u=e^(n=I&(e^sA)),i[B+124>>2]=u,nA=_^(k=I&(_^hA)),i[B+76>>2]=nA-u,x=h^(p=I&(h^eA)),i[B+120>>2]=x,kA=y^(c=I&(y^yA)),i[B+72>>2]=kA-x,v=D^(a=I&(D^tA)),i[B+116>>2]=v,L=r^(D=I&(r^rA)),i[B+68>>2]=L-v,P=Y^(h=I&(Y^_A)),i[B+112>>2]=P,l=M^(y=I&(M^cA)),i[B+64>>2]=l-P,q=d^(e=I&(d^EA)),i[B+108>>2]=q,W=m^(_=I&(m^aA)),i[B+60>>2]=W-q,z=U^(t=I&(U^iA)),i[B+104>>2]=z,d=H^(E=I&(H^oA)),i[B+56>>2]=d-z,U=gA^(Q=I&(gA^CA)),i[B+100>>2]=U,m=BA^(g=I&(BA^QA)),i[B+52>>2]=m-U,H=T^(Y=I&(T^$)),i[B+96>>2]=H,M=(I&=AA^IA)^AA,i[B+48>>2]=M-H,r=S^Z,F^=j,i[B+36>>2]=r-F,S=N^G,w^=DA,i[B+32>>2]=S-w,N=k^hA,n^=sA,i[B+28>>2]=N-n,k=c^yA,p^=eA,i[B+24>>2]=k-p,c=D^rA,a^=tA,i[B+20>>2]=c-a,D=y^cA,h^=_A,i[B+16>>2]=D-h,y=_^aA,e^=EA,i[B+12>>2]=y-e,_=E^oA,t^=iA,i[B+8>>2]=_-t,E=g^QA,Q^=CA,i[B+4>>2]=E-Q,g=I^IA,I=Y^$,i[B>>2]=g-I,i[B+276>>2]=r+F,i[B+272>>2]=S+w,i[B+268>>2]=n+N,i[B+264>>2]=p+k,i[B+260>>2]=a+c,i[B+256>>2]=h+D,i[B+248>>2]=_+t,i[B+244>>2]=Q+E,i[B+240>>2]=I+g,i[B+252>>2]=e+y,i[B+228>>2]=K+X,i[B+224>>2]=J+O,i[B+220>>2]=u+nA,i[B+216>>2]=x+kA,i[B+212>>2]=v+L,i[B+208>>2]=l+P,i[B+204>>2]=q+W,i[B+200>>2]=d+z,i[B+196>>2]=U+m,i[B+192>>2]=M+H,b(X=B+96|0,J=B+48|0,K=B+240|0),b(G=B+192|0,G,B),R(J,B),R(B,K),r=i[B+192>>2],F=i[B+96>>2],S=i[B+196>>2],w=i[B+100>>2],N=i[B+200>>2],n=i[B+104>>2],k=i[B+204>>2],p=i[B+108>>2],c=i[B+208>>2],a=i[B+112>>2],D=i[B+212>>2],h=i[B+116>>2],y=i[B+216>>2],e=i[B+120>>2],_=i[B+220>>2],t=i[B+124>>2],E=i[B+224>>2],Q=i[B+128>>2],g=i[B+228>>2],I=i[B+132>>2],i[B+180>>2]=g+I,i[B+176>>2]=Q+E,i[B+172>>2]=_+t,i[B+168>>2]=e+y,i[B+164>>2]=h+D,i[B+160>>2]=a+c,i[B+156>>2]=p+k,i[B+152>>2]=n+N,i[B+148>>2]=S+w,i[B+144>>2]=r+F,i[B+228>>2]=I-g,i[B+224>>2]=Q-E,i[B+220>>2]=t-_,i[B+216>>2]=e-y,i[B+212>>2]=h-D,i[B+208>>2]=a-c,i[B+204>>2]=p-k,i[B+200>>2]=n-N,i[B+196>>2]=w-S,i[B+192>>2]=F-r,b(K,B,J),u=i[B+52>>2],p=i[B+4>>2],x=i[B+56>>2],c=i[B+8>>2],v=i[B+64>>2],y=i[B+16>>2],P=i[B+60>>2],e=i[B+12>>2],q=i[B+72>>2],_=i[B+24>>2],z=i[B+68>>2],t=i[B+20>>2],U=i[B+80>>2],E=i[B+32>>2],H=i[B+76>>2],Q=i[B+28>>2],j=i[B+84>>2],I=i[B+36>>2],O=i[B+48>>2],g=i[B>>2]-O|0,i[B>>2]=g,I=I-j|0,i[B+36>>2]=I,Y=Q-H|0,i[B+28>>2]=Y,M=E-U|0,i[B+32>>2]=M,a=t-z|0,i[B+20>>2]=a,D=_-q|0,i[B+24>>2]=D,h=e-P|0,i[B+12>>2]=h,y=y-v|0,i[B+16>>2]=y,e=c-x|0,i[B+8>>2]=e,E=p-u|0,i[B+4>>2]=E,R(G,G),I=Ig(I,I>>31,121666,0),Q=f,W=I,I=Ig((33554431&(Q=(r=I+16777216|0)>>>0<16777216?Q+1|0:Q))<<7|r>>>25,Q>>25,19,0),t=f,Q=I,I=Ig(g,g>>31,121666,0),l=f+t|0,I=I>>>0>(Q=Q+I|0)>>>0?l+1|0:l,g=(_=Q+33554432|0)>>>0<33554432?I+1|0:I,F=Q-(-67108864&_)|0,i[B+96>>2]=F,t=Ig(E,E>>31,121666,0),Q=f,Q=(E=t+16777216|0)>>>0<16777216?Q+1|0:Q,S=(t-(-33554432&E)|0)+((67108863&g)<<6|_>>>26)|0,i[B+100>>2]=S,l=(I=Q)>>25,Q=(33554431&I)<<7|E>>>25,g=Ig(e,e>>31,121666,0)+Q|0,I=l+f|0,I=g>>>0>>0?I+1|0:I,t=(w=g+33554432|0)>>>0<33554432?I+1|0:I,N=g-(-67108864&w)|0,i[B+104>>2]=N,Q=Ig(y,y>>31,121666,0),E=f,g=Ig(h,h>>31,121666,0),I=f,L=Q,d=g,Q=(33554431&(I=(n=g+16777216|0)>>>0<16777216?I+1|0:I))<<7|n>>>25,I=(I>>25)+E|0,I=(g=L+Q|0)>>>0>>0?I+1|0:I,E=(k=g+33554432|0)>>>0<33554432?I+1|0:I,p=g-(-67108864&k)|0,i[B+112>>2]=p,Q=Ig(D,D>>31,121666,0),_=f,g=Ig(a,a>>31,121666,0),I=f,L=Q,m=g,Q=(33554431&(I=(c=g+16777216|0)>>>0<16777216?I+1|0:I))<<7|c>>>25,I=(I>>25)+_|0,I=(g=L+Q|0)>>>0>>0?I+1|0:I,Q=(a=g+33554432|0)>>>0<33554432?I+1|0:I,D=g-(-67108864&a)|0,i[B+120>>2]=D,_=Ig(M,M>>31,121666,0),e=f,g=Ig(Y,Y>>31,121666,0),I=f,M=g,g=(33554431&(I=(h=g+16777216|0)>>>0<16777216?I+1|0:I))<<7|h>>>25,I=(I>>25)+e|0,I=g>>>0>(_=g+_|0)>>>0?I+1|0:I,g=(y=_+33554432|0)>>>0<33554432?I+1|0:I,e=_-(-67108864&y)|0,i[B+128>>2]=e,_=(t=d+((67108863&t)<<6|w>>>26)|0)-(-33554432&n)|0,i[B+108>>2]=_,t=(E=m+((67108863&E)<<6|k>>>26)|0)-(-33554432&c)|0,i[B+116>>2]=t,E=(I=M+((67108863&Q)<<6|a>>>26)|0)-(-33554432&h)|0,i[B+124>>2]=E,g=(g=W+((67108863&g)<<6|y>>>26)|0)-(-33554432&r)|0,i[B+132>>2]=g,R(I=B+144|0,I),i[B+84>>2]=g+j,i[B+80>>2]=e+U,i[B+76>>2]=E+H,i[B+72>>2]=D+q,i[B+68>>2]=t+z,i[B+64>>2]=p+v,i[B+60>>2]=_+P,i[B+56>>2]=N+x,i[B+52>>2]=S+u,i[B+48>>2]=F+O,g=pA-1|0,b(X,B+288|0,G),b(G,B,J),pA;);D=i[B+144>>2],F=i[B+240>>2],h=i[B+148>>2],S=i[B+244>>2],y=i[B+152>>2],w=i[B+248>>2],e=i[B+156>>2],N=i[B+252>>2],_=i[B+160>>2],n=i[B+256>>2],t=i[B+164>>2],k=i[B+260>>2],E=i[B+168>>2],p=i[B+264>>2],Q=i[B+172>>2],c=i[B+268>>2],g=i[B+176>>2],a=i[B+272>>2],r=0-V|0,I=i[B+276>>2],i[B+276>>2]=r&(I^i[B+180>>2])^I,i[B+272>>2]=a^r&(g^a),i[B+268>>2]=c^r&(Q^c),i[B+264>>2]=p^r&(E^p),i[B+260>>2]=k^r&(t^k),i[B+256>>2]=n^r&(_^n),i[B+252>>2]=N^r&(e^N),i[B+248>>2]=w^r&(y^w),i[B+244>>2]=S^r&(h^S),i[B+240>>2]=F^r&(D^F),F=i[B+192>>2],D=i[B+96>>2],S=i[B+196>>2],h=i[B+100>>2],w=i[B+200>>2],y=i[B+104>>2],N=i[B+204>>2],e=i[B+108>>2],n=i[B+208>>2],_=i[B+112>>2],k=i[B+212>>2],t=i[B+116>>2],p=i[B+216>>2],E=i[B+120>>2],c=i[B+220>>2],Q=i[B+124>>2],a=i[B+224>>2],g=i[B+128>>2],I=i[B+228>>2],i[B+228>>2]=r&(I^i[B+132>>2])^I,i[B+224>>2]=a^r&(g^a),i[B+220>>2]=c^r&(Q^c),i[B+216>>2]=p^r&(E^p),i[B+212>>2]=k^r&(t^k),i[B+208>>2]=n^r&(_^n),i[B+204>>2]=N^r&(e^N),i[B+200>>2]=w^r&(y^w),i[B+196>>2]=S^r&(h^S),i[B+192>>2]=F^r&(D^F),LA(G,G),b(K,K,G),QI(A,K),XC(wA,32),Q=0}return s=B+368|0,0|Q},function(A,I){var g,B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S;return I|=0,s=g=s-304|0,C[0|(A|=0)]=o[0|I],C[A+1|0]=o[I+1|0],C[A+2|0]=o[I+2|0],C[A+3|0]=o[I+3|0],C[A+4|0]=o[I+4|0],C[A+5|0]=o[I+5|0],C[A+6|0]=o[I+6|0],C[A+7|0]=o[I+7|0],C[A+8|0]=o[I+8|0],C[A+9|0]=o[I+9|0],C[A+10|0]=o[I+10|0],C[A+11|0]=o[I+11|0],C[A+12|0]=o[I+12|0],C[A+13|0]=o[I+13|0],C[A+14|0]=o[I+14|0],C[A+15|0]=o[I+15|0],C[A+16|0]=o[I+16|0],C[A+17|0]=o[I+17|0],C[A+18|0]=o[I+18|0],C[A+19|0]=o[I+19|0],C[A+20|0]=o[I+20|0],C[A+21|0]=o[I+21|0],C[A+22|0]=o[I+22|0],C[A+23|0]=o[I+23|0],C[A+24|0]=o[I+24|0],C[A+25|0]=o[I+25|0],C[A+26|0]=o[I+26|0],C[A+27|0]=o[I+27|0],C[A+28|0]=o[I+28|0],C[A+29|0]=o[I+29|0],C[A+30|0]=o[I+30|0],I=o[I+31|0],C[0|A]=248&o[0|A],C[A+31|0]=63&I|64,nA(g+48|0,A),I=i[g+128>>2],B=i[g+88>>2],Q=i[g+132>>2],E=i[g+92>>2],a=i[g+136>>2],_=i[g+96>>2],c=i[g+140>>2],t=i[g+100>>2],r=i[g+144>>2],e=i[g+104>>2],y=i[g+148>>2],h=i[g+108>>2],D=i[g+152>>2],f=i[g+112>>2],p=i[g+156>>2],w=i[g+116>>2],n=i[g+160>>2],k=i[g+120>>2],F=i[g+124>>2],S=i[g+164>>2],i[g+292>>2]=F+S,i[g+288>>2]=n+k,i[g+284>>2]=p+w,i[g+280>>2]=D+f,i[g+276>>2]=y+h,i[g+272>>2]=r+e,i[g+268>>2]=c+t,i[g+264>>2]=a+_,i[g+260>>2]=Q+E,i[g+256>>2]=I+B,i[g+244>>2]=S-F,i[g+240>>2]=n-k,i[g+236>>2]=p-w,i[g+232>>2]=D-f,i[g+228>>2]=y-h,i[g+224>>2]=r-e,i[g+220>>2]=c-t,i[g+216>>2]=a-_,i[g+212>>2]=Q-E,i[g+208>>2]=I-B,LA(I=g+208|0,I),b(g,g+256|0,I),QI(A,g),s=g+304|0,0},function(A,I,g,B,Q){A|=0,B|=0,Q|=0;var E,a=0,_=0,c=0,t=0;if(s=E=s-112|0,(I|=0)|(g|=0)){a=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,i[E+24>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,i[E+28>>2]=a,a=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[E+16>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[E+20>>2]=a,a=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[E>>2]=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,i[E+4>>2]=a,a=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[E+8>>2]=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24,i[E+12>>2]=a,Q=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,B=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[E+104>>2]=0,i[E+108>>2]=0,i[E+96>>2]=Q,i[E+100>>2]=B;A:{if(!g&I>>>0>=64|g){for(;AC(A,E+96|0,E,0),B=o[E+104|0]+1|0,C[E+104|0]=B,B=o[E+105|0]+(B>>>8|0)|0,C[E+105|0]=B,B=o[E+106|0]+(B>>>8|0)|0,C[E+106|0]=B,B=o[E+107|0]+(B>>>8|0)|0,C[E+107|0]=B,B=o[E+108|0]+(B>>>8|0)|0,C[E+108|0]=B,B=o[E+109|0]+(B>>>8|0)|0,C[E+109|0]=B,B=o[E+110|0]+(B>>>8|0)|0,C[E+110|0]=B,C[E+111|0]=o[E+111|0]+(B>>>8|0),A=A- -64|0,g=g-1|0,!(g=(I=I+-64|0)>>>0<4294967232?g+1|0:g)&I>>>0>63|g;);if(!(I|g))break A}if(B=0,AC(E+32|0,E+96|0,E,0),a=3&I,Q=0,!g&I>>>0>=4|g)for(g=60&I,I=0;_=c=E+32|0,C[A+Q|0]=o[_+Q|0],C[(t=1|Q)+A|0]=o[_+t|0],C[(_=2|Q)+A|0]=o[_+c|0],C[(_=3|Q)+A|0]=o[_+(E+32|0)|0],Q=Q+4|0,(0|g)!=(0|(I=I+4|0)););if(a)for(;C[A+Q|0]=o[(E+32|0)+Q|0],Q=Q+1|0,(0|a)!=(0|(B=B+1|0)););}XC(E+32|0,64),XC(E,32)}return s=E+112|0,0},function(A,I,g,B,Q,E,a,_){A|=0,I|=0,Q|=0,E|=0,a|=0,_|=0;var c,t=0;if(s=c=s-112|0,(g|=0)|(B|=0)){t=o[_+28|0]|o[_+29|0]<<8|o[_+30|0]<<16|o[_+31|0]<<24,i[c+24>>2]=o[_+24|0]|o[_+25|0]<<8|o[_+26|0]<<16|o[_+27|0]<<24,i[c+28>>2]=t,t=o[_+20|0]|o[_+21|0]<<8|o[_+22|0]<<16|o[_+23|0]<<24,i[c+16>>2]=o[_+16|0]|o[_+17|0]<<8|o[_+18|0]<<16|o[_+19|0]<<24,i[c+20>>2]=t,t=o[_+4|0]|o[_+5|0]<<8|o[_+6|0]<<16|o[_+7|0]<<24,i[c>>2]=o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24,i[c+4>>2]=t,t=o[_+12|0]|o[_+13|0]<<8|o[_+14|0]<<16|o[_+15|0]<<24,i[c+8>>2]=o[_+8|0]|o[_+9|0]<<8|o[_+10|0]<<16|o[_+11|0]<<24,i[c+12>>2]=t,_=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[c+96>>2]=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,i[c+100>>2]=_,C[c+104|0]=E,C[c+111|0]=a>>>24,C[c+110|0]=a>>>16,C[c+109|0]=a>>>8,C[c+108|0]=a,C[c+107|0]=(16777215&a)<<8|E>>>24,C[c+106|0]=(65535&a)<<16|E>>>16,C[c+105|0]=(255&a)<<24|E>>>8;A:{if(!B&g>>>0>=64|B){for(;;){for(_=0,AC(c+32|0,c+96|0,c,0);E=c+32|0,C[A+_|0]=o[E+_|0]^o[I+_|0],C[(Q=1|_)+A|0]=o[Q+E|0]^o[I+Q|0],64!=(0|(_=_+2|0)););if(Q=o[c+104|0]+1|0,C[c+104|0]=Q,Q=o[c+105|0]+(Q>>>8|0)|0,C[c+105|0]=Q,Q=o[c+106|0]+(Q>>>8|0)|0,C[c+106|0]=Q,Q=o[c+107|0]+(Q>>>8|0)|0,C[c+107|0]=Q,Q=o[c+108|0]+(Q>>>8|0)|0,C[c+108|0]=Q,Q=o[c+109|0]+(Q>>>8|0)|0,C[c+109|0]=Q,Q=o[c+110|0]+(Q>>>8|0)|0,C[c+110|0]=Q,C[c+111|0]=o[c+111|0]+(Q>>>8|0),I=I- -64|0,A=A- -64|0,B=B-1|0,!(!(B=(g=g+-64|0)>>>0<4294967232?B+1|0:B)&g>>>0>63|B))break}if(!(g|B))break A}if(_=0,AC(c+32|0,c+96|0,c,0),E=1&g,1!=(0|g)|B)for(B=62&g,Q=0;a=c+32|0,C[A+_|0]=o[a+_|0]^o[I+_|0],C[(g=1|_)+A|0]=o[g+a|0]^o[I+g|0],_=_+2|0,(0|B)!=(0|(Q=Q+2|0)););E&&(C[A+_|0]=o[(c+32|0)+_|0]^o[I+_|0])}XC(c+32|0,64),XC(c,32)}return s=c+112|0,0},function(A,I,g,C,B,Q,i,o,E){A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0;var a,_,c=0;if(_=c=s,s=a=c-192&-32,P(E|=0,o|=0,a- -64|0),E=0,i>>>0<=63)o=0;else for(c=64;H(Q+E|0,a- -64|0),E=o=c,(c=o- -64|0)>>>0<=i>>>0;);if((c=32|o)>>>0>i>>>0)E=o;else for(;V(Q+o|0,a- -64|0),E=c,(c=(o=c)+32|0)>>>0<=i>>>0;);if((o=31&i)&&(bg((c=a+32|0)|o,0,32-o|0),Ng(c,Q+E|0,o),V(c,a- -64|0)),E=32,o=0,B>>>0<32)Q=0;else for(;m(A+o|0,C+o|0,a- -64|0),Q=E,(E=(o=E)+32|0)>>>0<=B>>>0;);return(o=31&B)&&(bg((E=a+32|0)|o,0,32-o|0),Ng(E,C+Q|0,o),m(a,E,a- -64|0),Ng(A+Q|0,a,o)),Y(I,g,i,B,a- -64|0),s=_,0},function(A,I,g,C,B,Q,i,o,E){A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0;var a,_,c=0;if(_=c=s,s=a=c-224&-32,P(E|=0,o|=0,a+96|0),E=0,i>>>0<=63)o=0;else for(c=64;H(Q+E|0,a+96|0),E=o=c,(c=o- -64|0)>>>0<=i>>>0;);if((c=32|o)>>>0>i>>>0)E=o;else for(;V(Q+o|0,a+96|0),E=c,(c=(o=c)+32|0)>>>0<=i>>>0;);(o=31&i)&&(bg((c=a- -64|0)|o,0,32-o|0),Ng(c,Q+E|0,o),V(c,a+96|0));A:{I:{g:{C:{B:{if(A){if(E=32,g>>>0<32)break B;for(Q=0;d(A+Q|0,I+Q|0,a+96|0),Q=o=E,(E=o+32|0)>>>0<=g>>>0;);}else{if(Q=32,g>>>0<32)break g;for(E=0;d(a+32|0,I+E|0,a+96|0),E=o=Q,(Q=o+32|0)>>>0<=g>>>0;);}if(!(Q=31&g))break A;if(A)break C;break I}if(o=0,Q=g,!g)break A}x(A+o|0,I+o|0,Q,a+96|0);break A}if(o=0,Q=g,!g)break A}x(a+32|0,I+o|0,Q,a+96|0)}Y(a,B,i,g,a+96|0),o=-1;A:{I:{if(I=B-16|0){if(16==(0|I))break I;break A}o=oI(a,C);break A}o=NC(a,C)}return!A|!o||bg(A,0,g),s=_,0|o},function(A,I,g,C,B,Q,E,a,_){A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,E|=0;var c,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0;if(s=c=s-528|0,G(_|=0,a|=0,c+400|0),_=0,E>>>0<=31)a=0;else for(r=32;L(Q+_|0,c+400|0),_=a=r,(r=a+32|0)>>>0<=E>>>0;);if((_=16|a)>>>0<=E>>>0)for(r=c+416|0,y=c+432|0,h=c+448|0,e=c+464|0,D=c+480|0;f=o[0|(a=Q+a|0)]|o[a+1|0]<<8|o[a+2|0]<<16|o[a+3|0]<<24,p=o[a+4|0]|o[a+5|0]<<8|o[a+6|0]<<16|o[a+7|0]<<24,w=o[a+8|0]|o[a+9|0]<<8|o[a+10|0]<<16|o[a+11|0]<<24,n=o[a+12|0]|o[a+13|0]<<8|o[a+14|0]<<16|o[a+15|0]<<24,a=i[D+12>>2],i[c+520>>2]=i[D+8>>2],i[c+524>>2]=a,a=i[D+4>>2],i[c+512>>2]=i[D>>2],i[c+516>>2]=a,a=i[e+12>>2],i[c+376>>2]=i[e+8>>2],i[c+380>>2]=a,a=i[e+4>>2],i[c+368>>2]=i[e>>2],i[c+372>>2]=a,a=i[D+12>>2],i[c+360>>2]=i[D+8>>2],i[c+364>>2]=a,a=i[D+4>>2],i[c+352>>2]=i[D>>2],i[c+356>>2]=a,AI(a=c+496|0,c+368|0,c+352|0),t=i[c+508>>2],i[D+8>>2]=i[c+504>>2],i[D+12>>2]=t,t=i[c+500>>2],i[D>>2]=i[c+496>>2],i[D+4>>2]=t,t=i[h+12>>2],i[c+344>>2]=i[h+8>>2],i[c+348>>2]=t,t=i[h+4>>2],i[c+336>>2]=i[h>>2],i[c+340>>2]=t,t=i[e+12>>2],i[c+328>>2]=i[e+8>>2],i[c+332>>2]=t,t=i[e+4>>2],i[c+320>>2]=i[e>>2],i[c+324>>2]=t,AI(a,c+336|0,c+320|0),t=i[c+508>>2],i[e+8>>2]=i[c+504>>2],i[e+12>>2]=t,t=i[c+500>>2],i[e>>2]=i[c+496>>2],i[e+4>>2]=t,t=i[y+12>>2],i[c+312>>2]=i[y+8>>2],i[c+316>>2]=t,t=i[y+4>>2],i[c+304>>2]=i[y>>2],i[c+308>>2]=t,t=i[h+12>>2],i[c+296>>2]=i[h+8>>2],i[c+300>>2]=t,t=i[h+4>>2],i[c+288>>2]=i[h>>2],i[c+292>>2]=t,AI(a,c+304|0,c+288|0),t=i[c+508>>2],i[h+8>>2]=i[c+504>>2],i[h+12>>2]=t,t=i[c+500>>2],i[h>>2]=i[c+496>>2],i[h+4>>2]=t,t=i[r+12>>2],i[c+280>>2]=i[r+8>>2],i[c+284>>2]=t,t=i[r+4>>2],i[c+272>>2]=i[r>>2],i[c+276>>2]=t,t=i[y+12>>2],i[c+264>>2]=i[y+8>>2],i[c+268>>2]=t,t=i[y+4>>2],i[c+256>>2]=i[y>>2],i[c+260>>2]=t,AI(a,c+272|0,c+256|0),t=i[c+508>>2],i[y+8>>2]=i[c+504>>2],i[y+12>>2]=t,t=i[c+500>>2],i[y>>2]=i[c+496>>2],i[y+4>>2]=t,t=i[c+412>>2],i[c+248>>2]=i[c+408>>2],i[c+252>>2]=t,t=i[c+404>>2],i[c+240>>2]=i[c+400>>2],i[c+244>>2]=t,t=i[r+12>>2],i[c+232>>2]=i[r+8>>2],i[c+236>>2]=t,t=i[r+4>>2],i[c+224>>2]=i[r>>2],i[c+228>>2]=t,AI(a,c+240|0,c+224|0),t=i[c+508>>2],i[r+8>>2]=i[c+504>>2],i[r+12>>2]=t,t=i[c+500>>2],i[r>>2]=i[c+496>>2],i[r+4>>2]=t,t=i[c+524>>2],i[c+216>>2]=i[c+520>>2],i[c+220>>2]=t,t=i[c+412>>2],i[c+200>>2]=i[c+408>>2],i[c+204>>2]=t,t=i[c+516>>2],i[c+208>>2]=i[c+512>>2],i[c+212>>2]=t,t=i[c+404>>2],i[c+192>>2]=i[c+400>>2],i[c+196>>2]=t,AI(a,c+208|0,c+192|0),i[c+412>>2]=n^i[c+508>>2],i[c+408>>2]=i[c+504>>2]^w,i[c+404>>2]=i[c+500>>2]^p,i[c+400>>2]=i[c+496>>2]^f,(_=(a=_)+16|0)>>>0<=E>>>0;);if((_=15&E)&&(bg((r=c+384|0)|_,0,16-_|0),Ng(r,Q+a|0,_),_=i[c+384>>2],r=i[c+388>>2],y=i[c+392>>2],h=i[c+396>>2],a=i[c+492>>2],Q=i[c+488>>2],i[c+520>>2]=Q,i[c+524>>2]=a,e=i[c+476>>2],i[c+184>>2]=i[c+472>>2],i[c+188>>2]=e,i[c+168>>2]=Q,i[c+172>>2]=a,a=i[c+484>>2],Q=i[c+480>>2],i[c+512>>2]=Q,i[c+516>>2]=a,e=i[c+468>>2],i[c+176>>2]=i[c+464>>2],i[c+180>>2]=e,i[c+160>>2]=Q,i[c+164>>2]=a,AI(Q=c+496|0,c+176|0,c+160|0),a=i[c+508>>2],i[c+488>>2]=i[c+504>>2],i[c+492>>2]=a,a=i[c+460>>2],i[c+152>>2]=i[c+456>>2],i[c+156>>2]=a,a=i[c+476>>2],i[c+136>>2]=i[c+472>>2],i[c+140>>2]=a,a=i[c+500>>2],i[c+480>>2]=i[c+496>>2],i[c+484>>2]=a,a=i[c+452>>2],i[c+144>>2]=i[c+448>>2],i[c+148>>2]=a,a=i[c+468>>2],i[c+128>>2]=i[c+464>>2],i[c+132>>2]=a,AI(Q,c+144|0,c+128|0),a=i[c+508>>2],i[c+472>>2]=i[c+504>>2],i[c+476>>2]=a,a=i[c+444>>2],i[c+120>>2]=i[c+440>>2],i[c+124>>2]=a,a=i[c+460>>2],i[c+104>>2]=i[c+456>>2],i[c+108>>2]=a,a=i[c+500>>2],i[c+464>>2]=i[c+496>>2],i[c+468>>2]=a,a=i[c+436>>2],i[c+112>>2]=i[c+432>>2],i[c+116>>2]=a,a=i[c+452>>2],i[c+96>>2]=i[c+448>>2],i[c+100>>2]=a,AI(Q,c+112|0,c+96|0),a=i[c+508>>2],i[c+456>>2]=i[c+504>>2],i[c+460>>2]=a,a=i[c+428>>2],i[c+88>>2]=i[c+424>>2],i[c+92>>2]=a,a=i[c+444>>2],i[c+72>>2]=i[c+440>>2],i[c+76>>2]=a,a=i[c+500>>2],i[c+448>>2]=i[c+496>>2],i[c+452>>2]=a,a=i[c+420>>2],i[c+80>>2]=i[c+416>>2],i[c+84>>2]=a,a=i[c+436>>2],i[c+64>>2]=i[c+432>>2],i[c+68>>2]=a,AI(Q,c+80|0,c- -64|0),a=i[c+508>>2],i[c+440>>2]=i[c+504>>2],i[c+444>>2]=a,a=i[c+412>>2],i[c+56>>2]=i[c+408>>2],i[c+60>>2]=a,a=i[c+428>>2],i[c+40>>2]=i[c+424>>2],i[c+44>>2]=a,a=i[c+500>>2],i[c+432>>2]=i[c+496>>2],i[c+436>>2]=a,a=i[c+404>>2],i[c+48>>2]=i[c+400>>2],i[c+52>>2]=a,a=i[c+420>>2],i[c+32>>2]=i[c+416>>2],i[c+36>>2]=a,AI(Q,c+48|0,c+32|0),a=i[c+508>>2],i[c+424>>2]=i[c+504>>2],i[c+428>>2]=a,a=i[c+524>>2],i[c+24>>2]=i[c+520>>2],i[c+28>>2]=a,a=i[c+412>>2],i[c+8>>2]=i[c+408>>2],i[c+12>>2]=a,a=i[c+500>>2],i[c+416>>2]=i[c+496>>2],i[c+420>>2]=a,a=i[c+516>>2],i[c+16>>2]=i[c+512>>2],i[c+20>>2]=a,a=i[c+404>>2],i[c>>2]=i[c+400>>2],i[c+4>>2]=a,AI(Q,c+16|0,c),i[c+412>>2]=h^i[c+508>>2],i[c+408>>2]=y^i[c+504>>2],i[c+404>>2]=r^i[c+500>>2],i[c+400>>2]=_^i[c+496>>2]),r=16,a=0,B>>>0<16)_=0;else for(;X(A+a|0,C+a|0,c+400|0),_=r,(r=(a=r)+16|0)>>>0<=B>>>0;);return(Q=15&B)&&(bg((a=c+384|0)|Q,0,16-Q|0),Ng(a,C+_|0,Q),X(C=c+512|0,a,c+400|0),Ng(A+_|0,C,Q)),l(I,g,E,B,c+400|0),s=c+528|0,0},function(A,I,g,C,B,Q,E,a,_){A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,E|=0;var c,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0;if(s=c=s-544|0,G(_|=0,a|=0,c+432|0),_=0,E>>>0<=31)a=0;else for(r=32;L(Q+_|0,c+432|0),_=a=r,(r=a+32|0)>>>0<=E>>>0;);if((_=16|a)>>>0<=E>>>0)for(r=c+448|0,y=c+464|0,h=c+480|0,e=c+496|0,D=c+512|0;f=o[0|(a=Q+a|0)]|o[a+1|0]<<8|o[a+2|0]<<16|o[a+3|0]<<24,p=o[a+4|0]|o[a+5|0]<<8|o[a+6|0]<<16|o[a+7|0]<<24,w=o[a+8|0]|o[a+9|0]<<8|o[a+10|0]<<16|o[a+11|0]<<24,n=o[a+12|0]|o[a+13|0]<<8|o[a+14|0]<<16|o[a+15|0]<<24,a=i[D+12>>2],i[c+392>>2]=i[D+8>>2],i[c+396>>2]=a,a=i[D+4>>2],i[c+384>>2]=i[D>>2],i[c+388>>2]=a,a=i[e+12>>2],i[c+376>>2]=i[e+8>>2],i[c+380>>2]=a,a=i[e+4>>2],i[c+368>>2]=i[e>>2],i[c+372>>2]=a,a=i[D+12>>2],i[c+360>>2]=i[D+8>>2],i[c+364>>2]=a,a=i[D+4>>2],i[c+352>>2]=i[D>>2],i[c+356>>2]=a,AI(a=c+528|0,c+368|0,c+352|0),t=i[c+540>>2],i[D+8>>2]=i[c+536>>2],i[D+12>>2]=t,t=i[c+532>>2],i[D>>2]=i[c+528>>2],i[D+4>>2]=t,t=i[h+12>>2],i[c+344>>2]=i[h+8>>2],i[c+348>>2]=t,t=i[h+4>>2],i[c+336>>2]=i[h>>2],i[c+340>>2]=t,t=i[e+12>>2],i[c+328>>2]=i[e+8>>2],i[c+332>>2]=t,t=i[e+4>>2],i[c+320>>2]=i[e>>2],i[c+324>>2]=t,AI(a,c+336|0,c+320|0),t=i[c+540>>2],i[e+8>>2]=i[c+536>>2],i[e+12>>2]=t,t=i[c+532>>2],i[e>>2]=i[c+528>>2],i[e+4>>2]=t,t=i[y+12>>2],i[c+312>>2]=i[y+8>>2],i[c+316>>2]=t,t=i[y+4>>2],i[c+304>>2]=i[y>>2],i[c+308>>2]=t,t=i[h+12>>2],i[c+296>>2]=i[h+8>>2],i[c+300>>2]=t,t=i[h+4>>2],i[c+288>>2]=i[h>>2],i[c+292>>2]=t,AI(a,c+304|0,c+288|0),t=i[c+540>>2],i[h+8>>2]=i[c+536>>2],i[h+12>>2]=t,t=i[c+532>>2],i[h>>2]=i[c+528>>2],i[h+4>>2]=t,t=i[r+12>>2],i[c+280>>2]=i[r+8>>2],i[c+284>>2]=t,t=i[r+4>>2],i[c+272>>2]=i[r>>2],i[c+276>>2]=t,t=i[y+12>>2],i[c+264>>2]=i[y+8>>2],i[c+268>>2]=t,t=i[y+4>>2],i[c+256>>2]=i[y>>2],i[c+260>>2]=t,AI(a,c+272|0,c+256|0),t=i[c+540>>2],i[y+8>>2]=i[c+536>>2],i[y+12>>2]=t,t=i[c+532>>2],i[y>>2]=i[c+528>>2],i[y+4>>2]=t,t=i[c+444>>2],i[c+248>>2]=i[c+440>>2],i[c+252>>2]=t,t=i[c+436>>2],i[c+240>>2]=i[c+432>>2],i[c+244>>2]=t,t=i[r+12>>2],i[c+232>>2]=i[r+8>>2],i[c+236>>2]=t,t=i[r+4>>2],i[c+224>>2]=i[r>>2],i[c+228>>2]=t,AI(a,c+240|0,c+224|0),t=i[c+540>>2],i[r+8>>2]=i[c+536>>2],i[r+12>>2]=t,t=i[c+532>>2],i[r>>2]=i[c+528>>2],i[r+4>>2]=t,t=i[c+396>>2],i[c+216>>2]=i[c+392>>2],i[c+220>>2]=t,t=i[c+444>>2],i[c+200>>2]=i[c+440>>2],i[c+204>>2]=t,t=i[c+388>>2],i[c+208>>2]=i[c+384>>2],i[c+212>>2]=t,t=i[c+436>>2],i[c+192>>2]=i[c+432>>2],i[c+196>>2]=t,AI(a,c+208|0,c+192|0),i[c+444>>2]=n^i[c+540>>2],i[c+440>>2]=i[c+536>>2]^w,i[c+436>>2]=i[c+532>>2]^p,i[c+432>>2]=i[c+528>>2]^f,(_=(a=_)+16|0)>>>0<=E>>>0;);(_=15&E)&&(bg((r=c+416|0)|_,0,16-_|0),Ng(r,Q+a|0,_),_=i[c+416>>2],r=i[c+420>>2],y=i[c+424>>2],h=i[c+428>>2],a=i[c+524>>2],Q=i[c+520>>2],i[c+392>>2]=Q,i[c+396>>2]=a,e=i[c+508>>2],i[c+184>>2]=i[c+504>>2],i[c+188>>2]=e,i[c+168>>2]=Q,i[c+172>>2]=a,a=i[c+516>>2],Q=i[c+512>>2],i[c+384>>2]=Q,i[c+388>>2]=a,e=i[c+500>>2],i[c+176>>2]=i[c+496>>2],i[c+180>>2]=e,i[c+160>>2]=Q,i[c+164>>2]=a,AI(Q=c+528|0,c+176|0,c+160|0),a=i[c+540>>2],i[c+520>>2]=i[c+536>>2],i[c+524>>2]=a,a=i[c+492>>2],i[c+152>>2]=i[c+488>>2],i[c+156>>2]=a,a=i[c+508>>2],i[c+136>>2]=i[c+504>>2],i[c+140>>2]=a,a=i[c+532>>2],i[c+512>>2]=i[c+528>>2],i[c+516>>2]=a,a=i[c+484>>2],i[c+144>>2]=i[c+480>>2],i[c+148>>2]=a,a=i[c+500>>2],i[c+128>>2]=i[c+496>>2],i[c+132>>2]=a,AI(Q,c+144|0,c+128|0),a=i[c+540>>2],i[c+504>>2]=i[c+536>>2],i[c+508>>2]=a,a=i[c+476>>2],i[c+120>>2]=i[c+472>>2],i[c+124>>2]=a,a=i[c+492>>2],i[c+104>>2]=i[c+488>>2],i[c+108>>2]=a,a=i[c+532>>2],i[c+496>>2]=i[c+528>>2],i[c+500>>2]=a,a=i[c+468>>2],i[c+112>>2]=i[c+464>>2],i[c+116>>2]=a,a=i[c+484>>2],i[c+96>>2]=i[c+480>>2],i[c+100>>2]=a,AI(Q,c+112|0,c+96|0),a=i[c+540>>2],i[c+488>>2]=i[c+536>>2],i[c+492>>2]=a,a=i[c+460>>2],i[c+88>>2]=i[c+456>>2],i[c+92>>2]=a,a=i[c+476>>2],i[c+72>>2]=i[c+472>>2],i[c+76>>2]=a,a=i[c+532>>2],i[c+480>>2]=i[c+528>>2],i[c+484>>2]=a,a=i[c+452>>2],i[c+80>>2]=i[c+448>>2],i[c+84>>2]=a,a=i[c+468>>2],i[c+64>>2]=i[c+464>>2],i[c+68>>2]=a,AI(Q,c+80|0,c- -64|0),a=i[c+540>>2],i[c+472>>2]=i[c+536>>2],i[c+476>>2]=a,a=i[c+444>>2],i[c+56>>2]=i[c+440>>2],i[c+60>>2]=a,a=i[c+460>>2],i[c+40>>2]=i[c+456>>2],i[c+44>>2]=a,a=i[c+532>>2],i[c+464>>2]=i[c+528>>2],i[c+468>>2]=a,a=i[c+436>>2],i[c+48>>2]=i[c+432>>2],i[c+52>>2]=a,a=i[c+452>>2],i[c+32>>2]=i[c+448>>2],i[c+36>>2]=a,AI(Q,c+48|0,c+32|0),a=i[c+540>>2],i[c+456>>2]=i[c+536>>2],i[c+460>>2]=a,a=i[c+396>>2],i[c+24>>2]=i[c+392>>2],i[c+28>>2]=a,a=i[c+444>>2],i[c+8>>2]=i[c+440>>2],i[c+12>>2]=a,a=i[c+532>>2],i[c+448>>2]=i[c+528>>2],i[c+452>>2]=a,a=i[c+388>>2],i[c+16>>2]=i[c+384>>2],i[c+20>>2]=a,a=i[c+436>>2],i[c>>2]=i[c+432>>2],i[c+4>>2]=a,AI(Q,c+16|0,c),i[c+444>>2]=h^i[c+540>>2],i[c+440>>2]=y^i[c+536>>2],i[c+436>>2]=r^i[c+532>>2],i[c+432>>2]=_^i[c+528>>2]);A:{I:{g:{C:{B:{if(A){if(r=16,g>>>0<16)break B;for(_=0;O(A+_|0,I+_|0,c+432|0),_=a=r,(r=a+16|0)>>>0<=g>>>0;);}else{if(_=16,g>>>0<16)break g;for(r=0;O(c+528|0,I+r|0,c+432|0),r=a=_,(_=a+16|0)>>>0<=g>>>0;);}if(!(_=15&g))break A;if(A)break C;break I}if(a=0,!(_=g))break A}Z(A+a|0,I+a|0,_,c+432|0);break A}if(a=0,!(_=g))break A}Z(c+528|0,I+a|0,_,c+432|0)}l(c+384|0,B,E,g,c+432|0),a=-1;A:{I:{if(I=B-16|0){if(16==(0|I))break I;break A}a=oI(c+384|0,C);break A}a=NC(c+384|0,C)}return!A|!a||bg(A,0,g),s=c+544|0,0|a},function(A,I,g,C,B){var Q;return A|=0,C|=0,B|=0,s=Q=s+-64|0,(I|=0)|(g|=0)&&(i[Q+8>>2]=2036477234,i[Q+12>>2]=1797285236,i[Q>>2]=1634760805,i[Q+4>>2]=857760878,i[Q+16>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,i[Q+20>>2]=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[Q+24>>2]=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,i[Q+28>>2]=o[B+12|0]|o[B+13|0]<<8|o[B+14|0]<<16|o[B+15|0]<<24,i[Q+32>>2]=o[B+16|0]|o[B+17|0]<<8|o[B+18|0]<<16|o[B+19|0]<<24,i[Q+36>>2]=o[B+20|0]|o[B+21|0]<<8|o[B+22|0]<<16|o[B+23|0]<<24,i[Q+40>>2]=o[B+24|0]|o[B+25|0]<<8|o[B+26|0]<<16|o[B+27|0]<<24,B=o[B+28|0]|o[B+29|0]<<8|o[B+30|0]<<16|o[B+31|0]<<24,i[Q+48>>2]=0,i[Q+52>>2]=0,i[Q+44>>2]=B,i[Q+56>>2]=o[0|C]|o[C+1|0]<<8|o[C+2|0]<<16|o[C+3|0]<<24,i[Q+60>>2]=o[C+4|0]|o[C+5|0]<<8|o[C+6|0]<<16|o[C+7|0]<<24,z(Q,A=bg(A,0,I),A,I,g),XC(Q,64)),s=Q- -64|0,0},function(A,I,g,C,B){var Q;return A|=0,C|=0,B|=0,s=Q=s+-64|0,(I|=0)|(g|=0)&&(i[Q+8>>2]=2036477234,i[Q+12>>2]=1797285236,i[Q>>2]=1634760805,i[Q+4>>2]=857760878,i[Q+16>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,i[Q+20>>2]=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[Q+24>>2]=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,i[Q+28>>2]=o[B+12|0]|o[B+13|0]<<8|o[B+14|0]<<16|o[B+15|0]<<24,i[Q+32>>2]=o[B+16|0]|o[B+17|0]<<8|o[B+18|0]<<16|o[B+19|0]<<24,i[Q+36>>2]=o[B+20|0]|o[B+21|0]<<8|o[B+22|0]<<16|o[B+23|0]<<24,i[Q+40>>2]=o[B+24|0]|o[B+25|0]<<8|o[B+26|0]<<16|o[B+27|0]<<24,B=o[B+28|0]|o[B+29|0]<<8|o[B+30|0]<<16|o[B+31|0]<<24,i[Q+48>>2]=0,i[Q+44>>2]=B,i[Q+52>>2]=o[0|C]|o[C+1|0]<<8|o[C+2|0]<<16|o[C+3|0]<<24,i[Q+56>>2]=o[C+4|0]|o[C+5|0]<<8|o[C+6|0]<<16|o[C+7|0]<<24,i[Q+60>>2]=o[C+8|0]|o[C+9|0]<<8|o[C+10|0]<<16|o[C+11|0]<<24,z(Q,A=bg(A,0,I),A,I,g),XC(Q,64)),s=Q- -64|0,0},function(A,I,g,C,B,Q,E,a){var _;return A|=0,I|=0,B|=0,Q|=0,E|=0,a|=0,s=_=s+-64|0,(g|=0)|(C|=0)&&(i[_+8>>2]=2036477234,i[_+12>>2]=1797285236,i[_>>2]=1634760805,i[_+4>>2]=857760878,i[_+16>>2]=o[0|a]|o[a+1|0]<<8|o[a+2|0]<<16|o[a+3|0]<<24,i[_+20>>2]=o[a+4|0]|o[a+5|0]<<8|o[a+6|0]<<16|o[a+7|0]<<24,i[_+24>>2]=o[a+8|0]|o[a+9|0]<<8|o[a+10|0]<<16|o[a+11|0]<<24,i[_+28>>2]=o[a+12|0]|o[a+13|0]<<8|o[a+14|0]<<16|o[a+15|0]<<24,i[_+32>>2]=o[a+16|0]|o[a+17|0]<<8|o[a+18|0]<<16|o[a+19|0]<<24,i[_+36>>2]=o[a+20|0]|o[a+21|0]<<8|o[a+22|0]<<16|o[a+23|0]<<24,i[_+40>>2]=o[a+24|0]|o[a+25|0]<<8|o[a+26|0]<<16|o[a+27|0]<<24,i[_+44>>2]=o[a+28|0]|o[a+29|0]<<8|o[a+30|0]<<16|o[a+31|0]<<24,i[_+48>>2]=Q,i[_+52>>2]=E,i[_+56>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,i[_+60>>2]=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,z(_,I,A,g,C),XC(_,64)),s=_- -64|0,0},function(A,I,g,C,B,Q,E){var a;return A|=0,I|=0,B|=0,Q|=0,E|=0,s=a=s+-64|0,(g|=0)|(C|=0)&&(i[a+8>>2]=2036477234,i[a+12>>2]=1797285236,i[a>>2]=1634760805,i[a+4>>2]=857760878,i[a+16>>2]=o[0|E]|o[E+1|0]<<8|o[E+2|0]<<16|o[E+3|0]<<24,i[a+20>>2]=o[E+4|0]|o[E+5|0]<<8|o[E+6|0]<<16|o[E+7|0]<<24,i[a+24>>2]=o[E+8|0]|o[E+9|0]<<8|o[E+10|0]<<16|o[E+11|0]<<24,i[a+28>>2]=o[E+12|0]|o[E+13|0]<<8|o[E+14|0]<<16|o[E+15|0]<<24,i[a+32>>2]=o[E+16|0]|o[E+17|0]<<8|o[E+18|0]<<16|o[E+19|0]<<24,i[a+36>>2]=o[E+20|0]|o[E+21|0]<<8|o[E+22|0]<<16|o[E+23|0]<<24,i[a+40>>2]=o[E+24|0]|o[E+25|0]<<8|o[E+26|0]<<16|o[E+27|0]<<24,E=o[E+28|0]|o[E+29|0]<<8|o[E+30|0]<<16|o[E+31|0]<<24,i[a+48>>2]=Q,i[a+44>>2]=E,i[a+52>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,i[a+56>>2]=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[a+60>>2]=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,z(a,I,A,g,C),XC(a,64)),s=a- -64|0,0}],fB.grow=function(A){var I=this.length;return this.length=this.length+A,I},fB.set=function(A,I){this[A]=I},fB.get=function(A){return this[A]},fB);function wB(){return g.byteLength/65536|0}return{e:Object.create(Object.prototype,{grow:{value:function(A){A|=0;var B=0|wB(),Q=B+A|0;if(B>>0<4294967280?(xI(A,A+C|0,0,g|=0,C,B,o|=0,E,a|=0,c|=0,t|=0),I&&(B=(A=C+16|0)>>>0<16?B+1|0:B,i[I>>2]=A,i[I+4>>2]=B)):(rC(),Q()),0},D:function(A,I,g,C,B,Q,i,o,E,a,_,c){return 0|mI(A|=0,I|=0,g|=0,C|=0,(A=0)|(B|=0),Q|=0,i|=0,A|(o|=0),E|=0,_|=0,c|=0)},E:function(A,I,g,C,B,o,E,a,_,c,t){return A|=0,I|=0,C|=0,E|=0,_|=0,E|=_=0,!(B|=0)&(C|=_)>>>0<4294967280?(mI(A,A+C|0,0,g|=0,C,B,o|=0,E,a|=0,c|=0,t|=0),I&&(B=(A=C+16|0)>>>0<16?B+1|0:B,i[I>>2]=A,i[I+4>>2]=B)):(rC(),Q()),0},F:function(A,I,g,C,B,Q,i,o,E,a,_){return 0|dI(A|=0,g|=0,(A=0)|(C|=0),B|=0,Q|=0,i|=0,A|(o|=0),E|=0,a|=0,_|=0)},G:function(A,I,g,C,B,Q,o,E,a,_,c){return I|=0,g|=0,C|=0,B|=0,E|=0,E|=0,g=-1,!(Q|=0)&(B|=0)>>>0>=16|Q&&(g=dI(A|=0,C,B-16|0,Q-(B>>>0<16)|0,(C+B|0)-16|0,o|=0,E,a|=0,_|=0,c|=0)),I&&(i[I>>2]=g?0:B-16|0,i[I+4>>2]=g?0:Q-(B>>>0<16)|0),0|g},H:function(A,I,g,C,B,Q,i,o,E,a,_){return 0|HI(A|=0,g|=0,(A=0)|(C|=0),B|=0,Q|=0,i|=0,A|(o|=0),E|=0,a|=0,_|=0)},I:function(A,I,g,C,B,Q,o,E,a,_,c){return I|=0,g|=0,C|=0,B|=0,E|=0,E|=0,g=-1,!(Q|=0)&(B|=0)>>>0>=16|Q&&(g=HI(A|=0,C,B-16|0,Q-(B>>>0<16)|0,(C+B|0)-16|0,o|=0,E,a|=0,_|=0,c|=0)),I&&(i[I>>2]=g?0:B-16|0,i[I+4>>2]=g?0:Q-(B>>>0<16)|0),0|g},J:BB,K:aB,L:hB,M:CB,N:EB,O:PC,P:BB,Q:eB,R:hB,S:CB,T:EB,U:PC,V:function(A,I,g,C,B,Q,i,o,E,a,_,c){return 0|pI(A|=0,I|=0,g|=0,C|=0,(A=0)|(B|=0),Q|=0,i|=0,A|(o|=0),E|=0,_|=0,c|=0)},W:function(A,I,g,C,B,o,E,a,_,c,t){return A|=0,I|=0,C|=0,E|=0,_|=0,E|=_=0,!(B|=0)&(C|=_)>>>0<4294967280?(pI(A,A+C|0,0,g|=0,C,B,o|=0,E,a|=0,c|=0,t|=0),I&&(B=(A=C+16|0)>>>0<16?B+1|0:B,i[I>>2]=A,i[I+4>>2]=B)):(rC(),Q()),0},X:function(A,I,g,C,B,Q,i,o,E,a,_){return 0|hI(A|=0,g|=0,(A=0)|(C|=0),B|=0,Q|=0,i|=0,A|(o|=0),E|=0,a|=0,_|=0)},Y:function(A,I,g,C,B,Q,o,E,a,_,c){return I|=0,g|=0,C|=0,B|=0,E|=0,E|=0,g=-1,!(Q|=0)&(B|=0)>>>0>=16|Q&&(g=hI(A|=0,C,B-16|0,Q-(B>>>0<16)|0,(C+B|0)-16|0,o|=0,E,a|=0,_|=0,c|=0)),I&&(i[I>>2]=g?0:B-16|0,i[I+4>>2]=g?0:Q-(B>>>0<16)|0),0|g},Z:BB,_:_B,$:hB,aa:CB,ba:EB,ca:PC,da:BB,ea:BB,fa:function(){return 1462},ga:_I,ha:JI,ia:PC,ja:BB,ka:BB,la:IB,ma:PC,na:mA,oa:function(A,I,g,C){return 0|mC(A|=0,I|=0,g|=0,C|=0)},pa:Sg,qa:function(A,I,g,C,B){var Q;return A|=0,I|=0,g|=0,C|=0,s=Q=s-240|0,mA(Q,B|=0,32),UA(Q,I,g,C),JA(Q,I=Q+208|0),UA(g=Q+104|0,I,32,0),JA(g,A),XC(I,32),s=Q+240|0,0},ra:function(A,I,g,C,B){var Q,i;return A|=0,I|=0,g|=0,C|=0,s=Q=s-272|0,mA(i=Q+32|0,B|=0,32),UA(i,I,g,C),JA(i,I=Q+240|0),UA(g=Q+136|0,I,32,0),JA(g,Q),XC(I,32),I=NC(A,Q),g=MI(Q,A,32),s=Q+272|0,((0|A)==(0|Q)?-1:I)|g},sa:gB,ta:BB,ua:$C,va:PC,wa:iI,xa:EC,ya:wg,za:function(A,I,g,C,B){var Q;return A|=0,I|=0,g|=0,C|=0,s=Q=s-480|0,iI(Q,B|=0,32),SA(Q,I,g,C),j(Q,I=Q+416|0),SA(g=Q+208|0,I,64,0),j(g,A),XC(I,64),s=Q+480|0,0},Aa:function(A,I,g,C,B){var Q,i;return A|=0,I|=0,g|=0,C|=0,s=Q=s-544|0,iI(i=Q- -64|0,B|=0,32),SA(i,I,g,C),j(i,I=Q+480|0),SA(g=Q+272|0,I,64,0),j(g,Q),XC(I,64),I=GC(A,Q),g=MI(Q,A,64),s=Q+544|0,((0|A)==(0|Q)?-1:I)|g},Ba:BB,Ca:BB,Da:$C,Ea:PC,Fa:yC,Ga:EC,Ha:function(A,I){I|=0;var g,B=0;return s=g=s+-64|0,wg(A|=0,g),B=i[g+28>>2],A=i[g+24>>2],C[I+24|0]=A,C[I+25|0]=A>>>8,C[I+26|0]=A>>>16,C[I+27|0]=A>>>24,C[I+28|0]=B,C[I+29|0]=B>>>8,C[I+30|0]=B>>>16,C[I+31|0]=B>>>24,B=i[g+20>>2],A=i[g+16>>2],C[I+16|0]=A,C[I+17|0]=A>>>8,C[I+18|0]=A>>>16,C[I+19|0]=A>>>24,C[I+20|0]=B,C[I+21|0]=B>>>8,C[I+22|0]=B>>>16,C[I+23|0]=B>>>24,B=i[g+12>>2],A=i[g+8>>2],C[I+8|0]=A,C[I+9|0]=A>>>8,C[I+10|0]=A>>>16,C[I+11|0]=A>>>24,C[I+12|0]=B,C[I+13|0]=B>>>8,C[I+14|0]=B>>>16,C[I+15|0]=B>>>24,B=i[g+4>>2],A=i[g>>2],C[0|I]=A,C[I+1|0]=A>>>8,C[I+2|0]=A>>>16,C[I+3|0]=A>>>24,C[I+4|0]=B,C[I+5|0]=B>>>8,C[I+6|0]=B>>>16,C[I+7|0]=B>>>24,s=g- -64|0,0},Ia:_I,Ja:JI,Ka:BB,La:BB,Ma:BB,Na:BB,Oa:_B,Pa:BB,Qa:CB,Ra:CB,Sa:EB,Ta:function(){return 1476},Ua:function(A,I,g){return 0|cI(A|=0,I|=0,g|=0)},Va:UC,Wa:cC,Xa:Pg,Ya:qg,Za:Bg,_a:Qg,$a:Yg,ab:function(A,I,g,C,B,Q,i,o){A|=0,I|=0,g|=0,Q|=0;var E,a=0;return a=C|=0,C=B|=0,E=0|a,s=a=s-32|0,B=-1,cC(a,i|=0,o|=0)||(B=aI(A,I,g,E,C,Q,a),XC(a,32)),s=a+32|0,0|B},bb:function(A,I,g,C,B,i){return A|=0,I|=0,B|=0,i|=0,!(C|=0)&(g|=0)>>>0>=4294967280|C&&(rC(),Q()),0|aI(A+16|0,A,I,g,C,B,i)},cb:function(A,I,g,C,B,Q,i){return 0|sg(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},db:Jg,eb:function(A,I,g,C,B,Q,i,o){A|=0,I|=0,g|=0,Q|=0;var E,a=0;return a=C|=0,C=B|=0,E=0|a,s=a=s-32|0,B=-1,cC(a,i|=0,o|=0)||(B=eI(A,I,g,E,C,Q,a),XC(a,32)),s=a+32|0,0|B},fb:hg,gb:function(A,I,g,C,B,Q,i){return 0|_g(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},hb:function(A,I,g,B,Q){A|=0,I|=0,Q|=0;var o,E,a,_,c=0,t=0;return c=g|=0,g=B|=0,_=0|c,c=B=s,s=o=B-512&-64,B=-1,UC(E=o- -64|0,a=o+32|0)||(iC(B=o+128|0,0,0,24),lC(B,E,32,0),lC(B,Q,32,0),eC(B,t=o+96|0,24),B=sg(A+32|0,I,_,g,t,Q,a),I=i[o+92>>2],g=i[o+88>>2],C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[o+84>>2],g=i[o+80>>2],C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[o+76>>2],g=i[o+72>>2],C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[o+68>>2],g=i[o+64>>2],C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,XC(a,32),XC(E,32),XC(t,24)),s=c,0|B},ib:function(A,I,g,C,B,Q){A|=0,I|=0,B|=0,Q|=0;var i,o,E=0;return o=E=s,s=i=E-448&-64,E=-1,!(C|=0)&(g|=0)>>>0>=48|C&&(iC(E=i- -64|0,0,0,24),lC(E,I,32,0),lC(E,B,32,0),eC(E,B=i+32|0,24),E=_g(A,I+32|0,g-32|0,C-(g>>>0<32)|0,B,I,Q)),s=o,0|E},jb:oB,kb:cI,lb:sC,mb:pg,nb:Pg,ob:qg,pb:Bg,qb:Qg,rb:BB,sb:BB,tb:BB,ub:BB,vb:_B,wb:BB,xb:CB,yb:CB,zb:EB,Ab:yA,Bb:BB,Cb:CB,Db:BB,Eb:CB,Fb:wA,Gb:BB,Hb:CB,Ib:BB,Jb:CB,Kb:AC,Lb:gB,Mb:CB,Nb:BB,Ob:CB,Pb:IC,Qb:gB,Rb:CB,Sb:BB,Tb:CB,Ub:gC,Vb:gB,Wb:CB,Xb:BB,Yb:CB,Zb:CB,_b:gB,$b:BB,ac:CB,bc:gB,cc:BB,dc:WC,ec:ZC,fc:function(A,I,g,C,B,Q,i){return 0|kC(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},gc:iC,hc:function(A,I,g,C){return 0|lC(A|=0,I|=0,g|=0,C|=0)},ic:eC,jc:PC,kc:CB,lc:gB,mc:BB,nc:CB,oc:gB,pc:BB,qc:CB,rc:CB,sc:ZC,tc:PC,uc:kC,vc:function(A,I,g,C,B,Q,i,o,E){return 0|QA(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0,o|=0,E|=0)},wc:eA,xc:function(A,I,g,B,i,E){A|=0,I|=0,i|=0,E|=0;var a=0,_=0,c=0,t=0,r=0,e=0,y=0;if(a=-1,!((B|=0)-65>>>0<4294967232|(g|=0)>>>0>64)){A:{if(!g||!I){if(((t=255&B)-65&255)>>>0>191){i?(_=725511199^(o[i+8|0]|o[i+9|0]<<8|o[i+10|0]<<16|o[i+11|0]<<24),g=-1694144372^(o[i+12|0]|o[i+13|0]<<8|o[i+14|0]<<16|o[i+15|0]<<24),I=-1377402159^(o[0|i]|o[i+1|0]<<8|o[i+2|0]<<16|o[i+3|0]<<24),i=1359893119^(o[i+4|0]|o[i+5|0]<<8|o[i+6|0]<<16|o[i+7|0]<<24)):(_=725511199,g=-1694144372,I=-1377402159,i=1359893119),E?(c=327033209^(o[E+8|0]|o[E+9|0]<<8|o[E+10|0]<<16|o[E+11|0]<<24),B=1541459225^(o[E+12|0]|o[E+13|0]<<8|o[E+14|0]<<16|o[E+15|0]<<24),a=-79577749^(o[0|E]|o[E+1|0]<<8|o[E+2|0]<<16|o[E+3|0]<<24),E=528734635^(o[E+4|0]|o[E+5|0]<<8|o[E+6|0]<<16|o[E+7|0]<<24)):(c=327033209,B=1541459225,a=-79577749,E=528734635),bg(A- -64|0,0,293),C[A+56|0]=c,C[A+57|0]=c>>>8,C[A+58|0]=c>>>16,C[A+59|0]=c>>>24,C[A+60|0]=B,C[A+61|0]=B>>>8,C[A+62|0]=B>>>16,C[A+63|0]=B>>>24,C[A+48|0]=a,C[A+49|0]=a>>>8,C[A+50|0]=a>>>16,C[A+51|0]=a>>>24,C[A+52|0]=E,C[A+53|0]=E>>>8,C[A+54|0]=E>>>16,C[A+55|0]=E>>>24,C[A+40|0]=_,C[A+41|0]=_>>>8,C[A+42|0]=_>>>16,C[A+43|0]=_>>>24,C[A+44|0]=g,C[A+45|0]=g>>>8,C[A+46|0]=g>>>16,C[A+47|0]=g>>>24,C[A+32|0]=I,C[A+33|0]=I>>>8,C[A+34|0]=I>>>16,C[A+35|0]=I>>>24,C[A+36|0]=i,C[A+37|0]=i>>>8,C[A+38|0]=i>>>16,C[A+39|0]=i>>>24,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,I=-222443256^t,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,C[A+4|0]=103,C[A+5|0]=230,C[A+6|0]=9,C[A+7|0]=106;break A}rC(),Q()}s=e=s-128|0,!I|((y=255&B)-65&255)>>>0<=191|((t=255&g)-65&255)>>>0<=191?(rC(),Q()):(i?(_=725511199^(o[i+8|0]|o[i+9|0]<<8|o[i+10|0]<<16|o[i+11|0]<<24),g=-1694144372^(o[i+12|0]|o[i+13|0]<<8|o[i+14|0]<<16|o[i+15|0]<<24),a=-1377402159^(o[0|i]|o[i+1|0]<<8|o[i+2|0]<<16|o[i+3|0]<<24),i=1359893119^(o[i+4|0]|o[i+5|0]<<8|o[i+6|0]<<16|o[i+7|0]<<24)):(_=725511199,g=-1694144372,a=-1377402159,i=1359893119),E?(c=327033209^(o[E+8|0]|o[E+9|0]<<8|o[E+10|0]<<16|o[E+11|0]<<24),B=1541459225^(o[E+12|0]|o[E+13|0]<<8|o[E+14|0]<<16|o[E+15|0]<<24),r=-79577749^(o[0|E]|o[E+1|0]<<8|o[E+2|0]<<16|o[E+3|0]<<24),E=528734635^(o[E+4|0]|o[E+5|0]<<8|o[E+6|0]<<16|o[E+7|0]<<24)):(c=327033209,B=1541459225,r=-79577749,E=528734635),bg(A- -64|0,0,293),C[A+56|0]=c,C[A+57|0]=c>>>8,C[A+58|0]=c>>>16,C[A+59|0]=c>>>24,C[A+60|0]=B,C[A+61|0]=B>>>8,C[A+62|0]=B>>>16,C[A+63|0]=B>>>24,C[A+48|0]=r,C[A+49|0]=r>>>8,C[A+50|0]=r>>>16,C[A+51|0]=r>>>24,C[A+52|0]=E,C[A+53|0]=E>>>8,C[A+54|0]=E>>>16,C[A+55|0]=E>>>24,C[A+40|0]=_,C[A+41|0]=_>>>8,C[A+42|0]=_>>>16,C[A+43|0]=_>>>24,C[A+44|0]=g,C[A+45|0]=g>>>8,C[A+46|0]=g>>>16,C[A+47|0]=g>>>24,C[A+32|0]=a,C[A+33|0]=a>>>8,C[A+34|0]=a>>>16,C[A+35|0]=a>>>24,C[A+36|0]=i,C[A+37|0]=i>>>8,C[A+38|0]=i>>>16,C[A+39|0]=i>>>24,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,g=-222443256^(t<<8|y),C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,g=t>>>24^1779033703,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=Ng(bg(e,0,128),I,t),Ng(A+96|0,g,128),I=128+(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)|0,C[A+352|0]=I,C[A+353|0]=I>>>8,C[A+354|0]=I>>>16,C[A+355|0]=I>>>24,XC(g,128),s=g+128|0)}a=0}return 0|a},yc:lC,zc:Hg,Ac:gB,Bc:CC,Cc:function(){return 1531},Dc:BB,Ec:function(){return 104},Fc:$I,Gc:function(A,I,g,C){return 0|UA(A|=0,I|=0,g|=0,C|=0)},Hc:JA,Ic:function(A,I,g,C){A|=0,I|=0,g|=0,C|=0;var B,Q=0;return s=B=s-112|0,Q=i[8811],i[B+16>>2]=i[8810],i[B+20>>2]=Q,Q=i[8813],i[B+24>>2]=i[8812],i[B+28>>2]=Q,Q=i[8815],i[B+32>>2]=i[8814],i[B+36>>2]=Q,i[B+40>>2]=0,i[B+44>>2]=0,Q=i[8809],i[B+8>>2]=i[8808],i[B+12>>2]=Q,UA(Q=B+8|0,I,g,C),JA(Q,A),s=B+112|0,0},Jc:gB,Kc:IB,Lc:SI,Mc:QC,Nc:j,Oc:CC,Pc:CB,Qc:gB,Rc:eB,Sc:BB,Tc:YI,Uc:WC,Vc:CB,Wc:gB,Xc:eB,Yc:BB,Zc:YI,_c:PC,$c:function(A,I,g){return 0|mA(A|=0,I|=0,g|=0)},ad:function(A,I,g){return 0|mC(A|=0,I|=0,g|=0,0)},bd:function(A,I){return Sg(A|=0,I|=0),XC(A,4),0},cd:function(A,I,g,C,B){var Q;return A|=0,C|=0,B|=0,s=Q=s-208|0,mA(Q,I|=0,g|=0),mC(Q,C,B,0),Sg(Q,A),XC(Q,4),s=Q+208|0,0},dd:PC,ed:function(A,I,g,B,Q){A|=0,I|=0,g|=0,B|=0,Q|=0;var E,a=0,_=0,c=0,t=0;if(s=E=s-256|0,C[E+15|0]=1,I>>>0<=8160){if(I>>>0>=32)for(t=A-32|0,a=32;c=a,mA(a=E+48|0,Q,32),_&&mC(a,_+t|0,32,0),mC(a=E+48|0,g,B,0),mC(a,E+15|0,1,0),Sg(a,A+_|0),C[E+15|0]=o[E+15|0]+1,(a=(_=c)+32|0)>>>0<=I>>>0;);(_=31&I)&&(mA(I=E+48|0,Q,32),c&&mC(I,(A+c|0)-32|0,32,0),mC(I=E+48|0,g,B,0),mC(I,E+15|0,1,0),Sg(g=I,I=E+16|0),Ng(A+c|0,I,_),XC(I,32)),XC(E+48|0,208),A=0}else i[9404]=28,A=-1;return s=E+256|0,0|A},fd:BB,gd:hB,hd:function(){return 8160},id:IB,jd:yC,kd:function(A,I,g){return 0|dC(A|=0,I|=0,g|=0,0)},ld:function(A,I){return wg(A|=0,I|=0),XC(A,4),0},md:function(A,I,g,C,B){var Q;return A|=0,C|=0,B|=0,s=Q=s-416|0,iI(Q,I|=0,g|=0),dC(Q,C,B,0),wg(Q,A),XC(Q,4),s=Q+416|0,0},nd:function(A){ag(A|=0,64)},od:function(A,I,g,B,Q){A|=0,I|=0,g|=0,B|=0,Q|=0;var E,a=0,_=0,c=0,t=0;if(s=E=s-496|0,C[E+15|0]=1,I>>>0<=16320){if(I>>>0>=64)for(t=A+-64|0,a=64;c=a,iI(a=E+80|0,Q,64),_&&dC(a,_+t|0,64,0),dC(a=E+80|0,g,B,0),dC(a,E+15|0,1,0),wg(a,A+_|0),C[E+15|0]=o[E+15|0]+1,(a=(_=c)- -64|0)>>>0<=I>>>0;);(_=63&I)&&(iI(I=E+80|0,Q,64),c&&dC(I,(A+c|0)-64|0,64,0),dC(I=E+80|0,g,B,0),dC(I,E+15|0,1,0),wg(g=I,I=E+16|0),Ng(A+c|0,I,_),XC(I,64)),XC(E+80|0,416),A=0}else i[9404]=28,A=-1;return s=E+496|0,0|A},pd:gB,qd:hB,rd:function(){return 16320},sd:$C,td:function(A,I,g){return A|=0,kC(I|=0,32,g|=0,32,0,0,0),0|KC(A,I)},ud:function(A,I){return A|=0,ag(I|=0,32),0|KC(A,I)},vd:function(A,I,g,B,i){I|=0,g|=0,B|=0,i|=0;var E,a,_=0,c=0,t=0;if(a=_=s,s=_=_-512&-64,E=(A|=0)||I){if(t=-1,!tC(c=_+96|0,B,i)){for(B=I||A,A=0,iC(I=_+128|0,0,0,64),lC(I,c,32,0),XC(c,32),lC(I,g,32,0),lC(I,i,32,0),eC(I,_+32|0,64),XC(I,384);g=(I=_+32|0)+A|0,C[A+E|0]=o[0|g],C[A+B|0]=o[g+32|0],C[(g=1|A)+E|0]=o[I+g|0],C[g+B|0]=o[I+(33|A)|0],32!=(0|(A=A+2|0)););XC(I,64),t=0}return s=a,0|t}rC(),Q()},wd:function(A,I,g,B,i){I|=0,g|=0,B|=0,i|=0;var E,a,_=0,c=0,t=0;if(a=_=s,s=_=_-512&-64,E=(A|=0)||I){if(t=-1,!tC(c=_+96|0,B,i)){for(B=I||A,A=0,iC(I=_+128|0,0,0,64),lC(I,c,32,0),XC(c,32),lC(I,i,32,0),lC(I,g,32,0),eC(I,_+32|0,64),XC(I,384);g=(I=_+32|0)+A|0,C[A+B|0]=o[0|g],C[A+E|0]=o[g+32|0],C[(g=1|A)+B|0]=o[I+g|0],C[g+E|0]=o[I+(33|A)|0],32!=(0|(A=A+2|0)););XC(I,64),t=0}return s=a,0|t}rC(),Q()},xd:BB,yd:BB,zd:BB,Ad:BB,Bd:function(){return 1332},Cd:TC,Dd:CB,Ed:BB,Fd:Vg,Gd:Zg,Hd:function(A,I){return 0|wC(A|=0,I|=0)},Id:BC,Jd:function(A,I){return 0|nC(A|=0,I|=0)},Kd:function(){return 1494},Ld:PC,Md:Vg,Nd:Zg,Od:wC,Pd:BC,Qd:nC,Rd:CB,Sd:BB,Td:TC,Ud:PC,Vd:yB,Wd:CB,Xd:cB,Yd:hB,Zd:cB,_d:CB,$d:AB,ae:function(){return 1554},be:rB,ce:cB,de:VC,ee:xC,fe:sB,ge:LC,he:function(){return 6},ie:function(){return 134217728},je:eB,ke:function(){return 536870912},le:function(A,I,g,C,B,Q,i,o,E,a,_){return 0|rI(A|=0,(A=0)|(I|=0),g|=0,C|=0,A|(B|=0),Q|=0,i|=0,A|(o|=0),E|=0,a|=0,_|=0)},me:function(A,I,g,C,B,Q,i){return 0|OI(A|=0,I|=0,(A=0)|(g|=0),C|=0,A|(B|=0),Q|=0,i|=0)},ne:function(A,I,g,C){return 0|bC(A|=0,I|=0,g|=0,C|=0)},oe:function(A,I,g,C){return 0|HC(A|=0,I|=0,g|=0,C|=0)},pe:function(A,I,g,C){return 0|YC(A|=0,I|=0,g|=0,C|=0)},qe:tB,re:CB,se:cB,te:hB,ue:cB,ve:CB,we:AB,xe:OC,ye:yB,ze:cB,Ae:VC,Be:xC,Ce:tB,De:qC,Ee:rB,Fe:RC,Ge:sB,He:vC,Ie:function(A,I,g,C,B,Q,i,o,E,a,_){return 0|yI(A|=0,(A=0)|(I|=0),g|=0,C|=0,A|(B|=0),Q|=0,i|=0,A|(o|=0),E|=0,a|=0,_|=0)},Je:Fg,Ke:function(A,I,g,C){return 0|JC(A|=0,I|=0,g|=0,C|=0)},Le:yB,Me:tB,Ne:tB,Oe:CB,Pe:cB,Qe:hB,Re:cB,Se:CB,Te:AB,Ue:OC,Ve:yB,We:cB,Xe:VC,Ye:xC,Ze:tB,_e:qC,$e:rB,af:RC,bf:sB,cf:vC,df:function(A,I,g,C,B,Q,o,E,a,_,c){A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,o|=0,E|=0,a|=0,_|=0,I|=0,B|=0,E|=0;A:{switch((c|=0)-1|0){case 0:A=rI(A,I,g,C,B,Q,o,E,a,_,1);break A;case 1:A=yI(A,I,g,C,B,Q,o,E,a,_,2);break A}i[9404]=28,A=-1}return 0|A},ef:Fg,ff:function(A,I,g,C,B,i,o,E){A|=0,I|=0,g|=0,C|=0,B|=0,i|=0,o|=0,g|=0,B|=0;A:{switch((E|=0)-1|0){case 1:A=TI(A,I,g,C,B,i,o);break A;default:rC(),Q();case 0:}A=OI(A,I,g,C,B,i,o)}return 0|A},gf:function(A,I,g,C){return I|=0,g|=0,C|=0,gg(A|=0,1564,10)?gg(A,1554,9)?(i[9404]=28,A=-1):A=bC(A,I,g,C):A=JC(A,I,g,C),0|A},hf:function(A,I,g,C){return I|=0,g|=0,C|=0,gg(A|=0,1564,10)?gg(A,1554,9)?(i[9404]=28,A=-1):A=HC(A,I,g,C):A=YC(A,I,g,C),0|A},jf:function(){return 1156},kf:function(){return 1443},lf:KC,mf:tC,nf:BB,of:BB,pf:CI,qf:pC,rf:BB,sf:BB,tf:BB,uf:_B,vf:BB,wf:CB,xf:CB,yf:EB,zf:function(){return 1486},Af:Pg,Bf:qg,Cf:PC,Df:Yg,Ef:function(A,I,g,C,B,i){return A|=0,I|=0,B|=0,i|=0,!(C|=0)&(g|=0)>>>0>=4294967280|C&&(rC(),Q()),aI(A+16|0,A,I,g,C,B,i),0},Ff:Jg,Gf:hg,Hf:Pg,If:qg,Jf:BB,Kf:_B,Lf:BB,Mf:CB,Nf:CB,Of:EB,Pf:PC,Qf:PC,Rf:function(A,I,g){return A|=0,g|=0,ag(I|=0,24),yA(A,I,g,0),C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,g=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,I=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,C[A+44|0]=0,C[A+45|0]=0,C[A+46|0]=0,C[A+47|0]=0,C[A+48|0]=0,C[A+49|0]=0,C[A+50|0]=0,C[A+51|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=I,C[A+41|0]=I>>>8,C[A+42|0]=I>>>16,C[A+43|0]=I>>>24,0},Sf:function(A,I,g){return yA(A|=0,I|=0,g|=0,0),C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,g=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,I=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,C[A+44|0]=0,C[A+45|0]=0,C[A+46|0]=0,C[A+47|0]=0,C[A+48|0]=0,C[A+49|0]=0,C[A+50|0]=0,C[A+51|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=I,C[A+41|0]=I>>>8,C[A+42|0]=I>>>16,C[A+43|0]=I>>>24,0},Tf:function(A){var I,g=0,B=0;s=I=s-48|0,g=o[28+(A|=0)|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,i[I+24>>2]=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,i[I+28>>2]=g,g=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,i[I+16>>2]=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,i[I+20>>2]=g,g=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,i[I>>2]=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i[I+4>>2]=g,g=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,i[I+8>>2]=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,i[I+12>>2]=g,g=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24,i[I+32>>2]=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,i[I+36>>2]=g,xg(I,I,40,0,A+32|0,A),g=i[I+28>>2],B=i[I+24>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=i[I+20>>2],B=i[I+16>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=i[I+12>>2],B=i[I+8>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=i[I+4>>2],B=i[I>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,B=i[I+36>>2],g=i[I+32>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=B,C[A+41|0]=B>>>8,C[A+42|0]=B>>>16,C[A+43|0]=B>>>24,s=I+48|0},Uf:function(A,I,g,B,E,a,_,c,t,r){A|=0,I|=0,B|=0,a|=0,_|=0,t|=0,r|=0;var e,y=0,h=0,D=0;return y=E|=0,y|=E=0,e=E|(c|=0),s=E=s-384|0,(g|=0)&&(i[g>>2]=0,i[g+4>>2]=0),!a&y>>>0<4294967279?(jg(h=E+16|0,64,0,D=A+32|0,A),wC(c=E+80|0,h),XC(h,64),SC(c,_,e,t),SC(c,35216,0-e&15,0),i[E+72>>2]=0,i[E+76>>2]=0,i[(_=E- -64|0)>>2]=0,i[_+4>>2]=0,i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,i[E+16>>2]=0,i[E+20>>2]=0,i[E+24>>2]=0,i[E+28>>2]=0,C[E+16|0]=r,Cg(h,h,64,0,D,1,A),SC(c,h,64,0),C[0|I]=o[E+16|0],Cg(I=I+1|0,B,y,a,D,2,A),SC(c,I,y,a),SC(c,35216,15&y,0),i[E+8>>2]=e,i[E+12>>2]=t,SC(c,B=E+8|0,8,0),i[E+8>>2]=y- -64,i[E+12>>2]=a-((y>>>0<4294967232)-1|0),SC(c,B,8,0),nC(c,I=I+y|0),XC(c,256),C[A+36|0]=o[A+36|0]^o[0|I],C[A+37|0]=o[A+37|0]^o[I+1|0],C[A+38|0]=o[A+38|0]^o[I+2|0],C[A+39|0]=o[A+39|0]^o[I+3|0],C[A+40|0]=o[A+40|0]^o[I+4|0],C[A+41|0]=o[A+41|0]^o[I+5|0],C[A+42|0]=o[A+42|0]^o[I+6|0],C[A+43|0]=o[A+43|0]^o[I+7|0],XI(D),(2&r||GI(D,4))&&(I=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,i[E+360>>2]=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,i[E+364>>2]=I,I=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,i[E+352>>2]=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,i[E+356>>2]=I,I=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,i[E+336>>2]=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i[E+340>>2]=I,I=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,i[E+344>>2]=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,i[E+348>>2]=I,I=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24,i[E+368>>2]=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,i[E+372>>2]=I,xg(I=E+336|0,I,40,0,D,A),I=i[E+364>>2],B=i[E+360>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[E+356>>2],B=i[E+352>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[E+348>>2],B=i[E+344>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[E+340>>2],B=i[E+336>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=i[E+368>>2],B=i[E+372>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=B,C[A+41|0]=B>>>8,C[A+42|0]=B>>>16,C[A+43|0]=B>>>24),g&&(a=(A=y+17|0)>>>0<17?a+1|0:a,i[g>>2]=A,i[g+4>>2]=a),s=E+384|0):(rC(),Q()),0},Vf:function(A,I,g,B,E,a,_,c,t,r){A|=0,I|=0,B|=0,E|=0,c|=0,r|=0;var e,y=0,h=0,D=0,f=0,p=0,w=0;y=a|=0,a=_|=0,h=0|y,e=t|=0,s=_=s-400|0,(g|=0)&&(i[g>>2]=0,i[g+4>>2]=0),B&&(C[0|B]=255),w=-1;A:{I:{if(!((t=h>>>0<17)&!a)){if(p=y=a-t|0,!y&(t=h-17|0)>>>0>=4294967279|y)break I;jg(D=_+32|0,64,0,f=A+32|0,A),wC(y=_+96|0,D),XC(D,64),SC(y,c,e,r),SC(y,35216,0-e&15,0),i[_+88>>2]=0,i[_+92>>2]=0,i[_+80>>2]=0,i[_+84>>2]=0,i[_+72>>2]=0,i[_+76>>2]=0,i[(c=_- -64|0)>>2]=0,i[c+4>>2]=0,i[_+56>>2]=0,i[_+60>>2]=0,i[_+48>>2]=0,i[_+52>>2]=0,i[_+40>>2]=0,i[_+44>>2]=0,i[_+32>>2]=0,i[_+36>>2]=0,C[_+32|0]=o[0|E],Cg(D,D,64,0,f,1,A),c=o[_+32|0],C[_+32|0]=o[0|E],SC(y,D,64,0),SC(y,E=E+1|0,t,p),SC(y,35216,h-1&15,0),i[_+24>>2]=e,i[_+28>>2]=r,SC(y,r=_+24|0,8,0),a=(h=h+47|0)>>>0<47?a+1|0:a,i[_+24>>2]=h,i[_+28>>2]=a,SC(y,r,8,0),nC(y,_),XC(y,256),MI(_,E+t|0,16)?XC(_,16):(Cg(I,E,t,p,f,2,A),C[A+36|0]=o[A+36|0]^o[0|_],C[A+37|0]=o[A+37|0]^o[_+1|0],C[A+38|0]=o[A+38|0]^o[_+2|0],C[A+39|0]=o[A+39|0]^o[_+3|0],C[A+40|0]=o[A+40|0]^o[_+4|0],C[A+41|0]=o[A+41|0]^o[_+5|0],C[A+42|0]=o[A+42|0]^o[_+6|0],C[A+43|0]=o[A+43|0]^o[_+7|0],XI(f),(2&c||GI(f,4))&&(I=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,i[_+376>>2]=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,i[_+380>>2]=I,I=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,i[_+368>>2]=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,i[_+372>>2]=I,I=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,i[_+352>>2]=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i[_+356>>2]=I,I=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,i[_+360>>2]=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,i[_+364>>2]=I,I=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24,i[_+384>>2]=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,i[_+388>>2]=I,xg(I=_+352|0,I,40,0,f,A),I=i[_+380>>2],E=i[_+376>>2],C[A+24|0]=E,C[A+25|0]=E>>>8,C[A+26|0]=E>>>16,C[A+27|0]=E>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[_+372>>2],E=i[_+368>>2],C[A+16|0]=E,C[A+17|0]=E>>>8,C[A+18|0]=E>>>16,C[A+19|0]=E>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[_+364>>2],E=i[_+360>>2],C[A+8|0]=E,C[A+9|0]=E>>>8,C[A+10|0]=E>>>16,C[A+11|0]=E>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[_+356>>2],E=i[_+352>>2],C[0|A]=E,C[A+1|0]=E>>>8,C[A+2|0]=E>>>16,C[A+3|0]=E>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=i[_+384>>2],E=i[_+388>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=E,C[A+41|0]=E>>>8,C[A+42|0]=E>>>16,C[A+43|0]=E>>>24),g&&(i[g>>2]=t,i[g+4>>2]=p),w=0,B&&(C[0|B]=c))}s=_+400|0;break A}rC(),Q()}return 0|w},Wf:function(){return 52},Xf:function(){return 17},Yf:_B,Zf:BB,_f:function(){return-18},$f:hB,ag:yB,bg:tB,cg:rB,dg:eB,eg:CB,fg:function(){return 1521},gg:T,hg:zC,ig:eB,jg:CB,kg:T,lg:IB,mg:gB,ng:BB,og:BB,pg:gB,qg:QB,rg:function(){return 1454},sg:function(A,I,g){return 0|FA(A|=0,I|=0,g|=0)},tg:function(A,I){return 0|YA(A|=0,I|=0)},ug:LI,vg:bI,wg:vg,xg:Wg,yg:function(A){return 0|uC(A|=0)},zg:QC,Ag:function(A,I,g,C){return 0|ng(A|=0,I|=0,g|=0,C|=0)},Bg:function(A,I,g){return 0|Kg(A|=0,I|=0,g|=0)},Cg:IB,Dg:gB,Eg:BB,Fg:BB,Gg:gB,Hg:QB,Ig:function(A,I){A|=0;var g,B,Q,i,E,a,_=0;return g=o[8+(_=I|=0)|0]|o[_+9|0]<<8|o[_+10|0]<<16|o[_+11|0]<<24,B=o[_+12|0]|o[_+13|0]<<8|o[_+14|0]<<16|o[_+15|0]<<24,Q=o[_+16|0]|o[_+17|0]<<8|o[_+18|0]<<16|o[_+19|0]<<24,i=o[_+20|0]|o[_+21|0]<<8|o[_+22|0]<<16|o[_+23|0]<<24,E=o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24,I=o[_+4|0]|o[_+5|0]<<8|o[_+6|0]<<16|o[_+7|0]<<24,a=o[_+28|0]|o[_+29|0]<<8|o[_+30|0]<<16|o[_+31|0]<<24,_=o[_+24|0]|o[_+25|0]<<8|o[_+26|0]<<16|o[_+27|0]<<24,C[A+24|0]=_,C[A+25|0]=_>>>8,C[A+26|0]=_>>>16,C[A+27|0]=_>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+16|0]=Q,C[A+17|0]=Q>>>8,C[A+18|0]=Q>>>16,C[A+19|0]=Q>>>24,C[A+20|0]=i,C[A+21|0]=i>>>8,C[A+22|0]=i>>>16,C[A+23|0]=i>>>24,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,C[A+12|0]=B,C[A+13|0]=B>>>8,C[A+14|0]=B>>>16,C[A+15|0]=B>>>24,C[0|A]=E,C[A+1|0]=E>>>8,C[A+2|0]=E>>>16,C[A+3|0]=E>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,0},Jg:function(A,I){A|=0;var g,B,Q,i,E,a,_=0;return g=o[32+(_=I|=0)|0]|o[_+33|0]<<8|o[_+34|0]<<16|o[_+35|0]<<24,B=o[_+36|0]|o[_+37|0]<<8|o[_+38|0]<<16|o[_+39|0]<<24,Q=o[_+40|0]|o[_+41|0]<<8|o[_+42|0]<<16|o[_+43|0]<<24,i=o[_+44|0]|o[_+45|0]<<8|o[_+46|0]<<16|o[_+47|0]<<24,E=o[_+48|0]|o[_+49|0]<<8|o[_+50|0]<<16|o[_+51|0]<<24,I=o[_+52|0]|o[_+53|0]<<8|o[_+54|0]<<16|o[_+55|0]<<24,a=o[_+60|0]|o[_+61|0]<<8|o[_+62|0]<<16|o[_+63|0]<<24,_=o[_+56|0]|o[_+57|0]<<8|o[_+58|0]<<16|o[_+59|0]<<24,C[A+24|0]=_,C[A+25|0]=_>>>8,C[A+26|0]=_>>>16,C[A+27|0]=_>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+16|0]=E,C[A+17|0]=E>>>8,C[A+18|0]=E>>>16,C[A+19|0]=E>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,C[A+8|0]=Q,C[A+9|0]=Q>>>8,C[A+10|0]=Q>>>16,C[A+11|0]=Q>>>24,C[A+12|0]=i,C[A+13|0]=i>>>8,C[A+14|0]=i>>>16,C[A+15|0]=i>>>24,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=B,C[A+5|0]=B>>>8,C[A+6|0]=B>>>16,C[A+7|0]=B>>>24,0},Kg:uC,Lg:QC,Mg:ng,Ng:Kg,Og:FA,Pg:YA,Qg:function(A,I){A|=0;var g,C=0,B=0,Q=0,o=0,E=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,CA=0,BA=0,QA=0,iA=0,oA=0,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0,sA=0,hA=0,DA=0,fA=0,pA=0,wA=0,nA=0,kA=0,FA=0,SA=0,NA=0,GA=0,MA=0,KA=0,UA=0,bA=0,HA=0,YA=0;return s=g=s-256|0,SA=-1,KI(I|=0)||qA(C=g+96|0,I)||gA(C)&&(SA=0,u=i[g+172>>2],i[g+36>>2]=0-u,n=i[g+168>>2],i[g+32>>2]=0-n,x=i[g+164>>2],i[g+28>>2]=0-x,k=i[g+160>>2],i[g+24>>2]=0-k,v=i[g+156>>2],i[g+20>>2]=0-v,F=i[g+152>>2],i[g+16>>2]=0-F,R=i[g+148>>2],i[g+12>>2]=0-R,S=i[g+144>>2],i[g+8>>2]=0-S,L=i[g+140>>2],i[g+4>>2]=0-L,Q=i[g+136>>2],i[g>>2]=1-Q,LA(g,g),I=Ig(N=i[g+4>>2],d=N>>31,G=v<<1,IA=G>>31),C=f,B=Ig(p=i[g>>2],M=p>>31,k,K=k>>31),C=f+C|0,C=(I=B+I|0)>>>0>>0?C+1|0:C,B=(o=Ig(U=i[g+8>>2],P=U>>31,F,b=F>>31))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(m=i[g+12>>2],j=m>>31,W=R<<1,CA=W>>31),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=Ig(q=i[g+16>>2],V=q>>31,S,H=S>>31),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,fA=o=i[g+20>>2],h=Ig(o,BA=o>>31,Z=L<<1,QA=Z>>31),B=f+I|0,B=(C=h+C|0)>>>0>>0?B+1|0:B,pA=r=i[g+24>>2],I=(Q=Ig(r,sA=r>>31,h=Q+1|0,Y=h>>31))+C|0,C=f+B|0,C=I>>>0>>0?C+1|0:C,iA=i[g+28>>2],B=(Q=Ig(w=a(iA,19),X=w>>31,T=u<<1,oA=T>>31))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,NA=i[g+32>>2],B=Ig(_=a(NA,19),z=_>>31,n,J=n>>31),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,GA=i[g+36>>2],B=Ig(y=a(GA,19),l=y>>31,$=x<<1,EA=$>>31),I=f+I|0,c=C=B+C|0,Q=C>>>0>>0?I+1|0:I,I=Ig(F,b,N,d),C=f,E=Ig(p,M,v,aA=v>>31),B=f+C|0,B=(I=E+I|0)>>>0>>0?B+1|0:B,E=Ig(U,P,R,_A=R>>31),C=f+B|0,C=(I=E+I|0)>>>0>>0?C+1|0:C,B=(E=Ig(S,H,m,j))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(q,V,L,cA=L>>31),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=Ig(h,Y,o,BA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,E=Ig(r=a(r,19),AA=r>>31,u,tA=u>>31),B=f+I|0,B=(C=E+C|0)>>>0>>0?B+1|0:B,I=(E=Ig(n,J,w,X))+C|0,C=f+B|0,C=I>>>0>>0?C+1|0:C,B=(E=Ig(_,z,x,rA=x>>31))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(y,l,k,K),I=f+I|0,wA=C=C+B|0,O=C>>>0>>0?I+1|0:I,I=Ig(N,d,W,CA),B=f,C=(E=Ig(p,M,F,b))+I|0,I=f+B|0,I=C>>>0>>0?I+1|0:I,E=Ig(S,H,U,P),B=f+I|0,B=(C=E+C|0)>>>0>>0?B+1|0:B,I=(E=Ig(m,j,Z,QA))+C|0,C=f+B|0,C=I>>>0>>0?C+1|0:C,B=(E=Ig(h,Y,q,V))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(E=a(o,19),eA=E>>31,T,oA),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=Ig(n,J,r,AA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,o=Ig(w,X,$,EA),B=f+I|0,B=(C=o+C|0)>>>0>>0?B+1|0:B,I=(o=Ig(_,z,k,K))+C|0,C=f+B|0,C=I>>>0>>0?C+1|0:C,B=(o=Ig(y,l,G,IA))+I|0,I=f+C|0,MA=B,KA=I=B>>>0>>0?I+1|0:I,UA=B=B+33554432|0,bA=I=B>>>0<33554432?I+1|0:I,B=(67108863&I)<<6|B>>>26,I=(I>>26)+O|0,wA=o=B+wA|0,I=B>>>0>o>>>0?I+1|0:I,HA=o=o+16777216|0,I=(C=(B=o>>>0<16777216?I+1|0:I)>>25)+Q|0,I=(B=(o=(33554431&B)<<7|o>>>25)+c|0)>>>0>>0?I+1|0:I,D=C=B+33554432|0,o=I=C>>>0<33554432?I+1|0:I,i[g+72>>2]=B-(-67108864&C),I=Ig(N,d,Z,QA),C=f,Q=Ig(p,M,S,H),B=f+C|0,B=(I=Q+I|0)>>>0>>0?B+1|0:B,C=(Q=Ig(h,Y,U,P))+I|0,I=f+B|0,I=C>>>0>>0?I+1|0:I,B=Ig(Q=a(m,19),yA=Q>>31,T,oA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=(c=Ig(O=a(q,19),hA=O>>31,n,J))+C|0,C=f+I|0,C=B>>>0>>0?C+1|0:C,c=Ig($,EA,E,eA),I=f+C|0,I=(B=c+B|0)>>>0>>0?I+1|0:I,C=(c=Ig(k,K,r,AA))+B|0,B=f+I|0,B=C>>>0>>0?B+1|0:B,c=Ig(w,X,G,IA),I=f+B|0,I=(C=c+C|0)>>>0>>0?I+1|0:I,B=Ig(_,z,F,b),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=(c=Ig(y,l,W,CA))+C|0,C=f+I|0,e=B,nA=B>>>0>>0?C+1|0:C,I=Ig(h,Y,N,d),C=f,B=(c=Ig(p,M,L,cA))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,c=C=a(U,19),C=(t=Ig(C,DA=C>>31,u,tA))+B|0,B=f+I|0,B=C>>>0>>0?B+1|0:B,t=Ig(n,J,Q,yA),I=f+B|0,I=(C=t+C|0)>>>0>>0?I+1|0:I,B=Ig(O,hA,x,rA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=(t=Ig(k,K,E,eA))+C|0,C=f+I|0,C=B>>>0>>0?C+1|0:C,t=Ig(r,AA,v,aA),I=f+C|0,I=(B=t+B|0)>>>0>>0?I+1|0:I,C=(t=Ig(F,b,w,X))+B|0,B=f+I|0,B=C>>>0>>0?B+1|0:B,t=Ig(_,z,R,_A),I=f+B|0,I=(C=t+C|0)>>>0>>0?I+1|0:I,B=Ig(y,l,S,H),I=f+I|0,kA=C=B+C|0,t=C>>>0>>0?I+1|0:I,I=Ig(I=a(N,19),I>>31,T,oA),C=f,B=Ig(p,M,h,Y),C=f+C|0,C=(I=B+I|0)>>>0>>0?C+1|0:C,B=(c=Ig(n,J,c,DA))+I|0,I=f+C|0,C=(Q=Ig(Q,yA,$,EA))+B|0,B=f+(B>>>0>>0?I+1|0:I)|0,B=C>>>0>>0?B+1|0:B,Q=Ig(k,K,O,hA),I=f+B|0,I=(C=Q+C|0)>>>0>>0?I+1|0:I,B=Ig(G,IA,E,eA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=(Q=Ig(F,b,r,AA))+C|0,C=f+I|0,C=B>>>0>>0?C+1|0:C,Q=Ig(w,X,W,CA),I=f+C|0,I=(B=Q+B|0)>>>0>>0?I+1|0:I,C=(Q=Ig(_,z,S,H))+B|0,B=f+I|0,B=C>>>0>>0?B+1|0:B,Q=Ig(y,l,Z,QA),I=f+B|0,c=C=Q+C|0,yA=I=C>>>0>>0?I+1|0:I,DA=C=C+33554432|0,YA=I=C>>>0<33554432?I+1|0:I,B=I>>26,I=(67108863&I)<<6|C>>>26,C=B+t|0,t=Q=I+kA|0,I=C=I>>>0>Q>>>0?C+1|0:C,kA=Q=Q+16777216|0,Q=(33554431&(I=Q>>>0<16777216?I+1|0:I))<<7|Q>>>25,I=(I>>25)+nA|0,I=(C=Q+e|0)>>>0>>0?I+1|0:I,B=C,nA=C=C+33554432|0,Q=I=C>>>0<33554432?I+1|0:I,i[g+56>>2]=B-(-67108864&C),I=Ig(k,K,N,d),B=f,C=(e=Ig(p,M,x,rA))+I|0,I=f+B|0,I=C>>>0>>0?I+1|0:I,B=Ig(U,P,v,aA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=Ig(F,b,m,j),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,e=Ig(q,V,R,_A),B=f+I|0,B=(C=e+C|0)>>>0>>0?B+1|0:B,I=(e=Ig(S,H,fA,BA))+C|0,C=f+B|0,C=I>>>0>>0?C+1|0:C,B=(e=Ig(L,cA,pA,sA))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(iA,FA=iA>>31,h,Y),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=Ig(_,z,u,tA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,e=(B=C)+(C=Ig(y,l,n,J))|0,B=f+I|0,C=(I=o>>26)+(C=C>>>0>e>>>0?B+1|0:B)|0,D=B=(o=(67108863&o)<<6|D>>>26)+e|0,I=C=B>>>0>>0?C+1|0:C,e=B=B+16777216|0,o=I=B>>>0<16777216?I+1|0:I,i[g+76>>2]=D-(-33554432&B),I=Ig(S,H,N,d),C=f,D=Ig(p,M,R,_A),B=f+C|0,B=(I=D+I|0)>>>0>>0?B+1|0:B,D=Ig(U,P,L,cA),C=f+B|0,C=(I=D+I|0)>>>0>>0?C+1|0:C,B=(D=Ig(h,Y,m,j))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(O,hA,u,tA),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=Ig(n,J,E,eA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,C=(r=Ig(r,AA,x,rA))+C|0,B=f+I|0,I=(w=Ig(k,K,w,X))+C|0,C=f+(C>>>0>>0?B+1|0:B)|0,B=(_=Ig(_,z,v,aA))+I|0,I=f+(I>>>0>>0?C+1|0:C)|0,I=B>>>0<_>>>0?I+1|0:I,C=B,B=Ig(y,l,F,b),I=f+I|0,D=C=C+B|0,I=(I=C>>>0>>0?I+1|0:I)+(C=Q>>26)|0,_=Q=D+(B=(67108863&Q)<<6|nA>>>26)|0,I=B>>>0>Q>>>0?I+1|0:I,w=C=Q+16777216|0,Q=B=C>>>0<16777216?I+1|0:I,i[g+60>>2]=_-(-33554432&C),I=Ig(N,d,$,EA),B=f,C=(_=Ig(p,M,n,J))+I|0,I=f+B|0,I=C>>>0<_>>>0?I+1|0:I,B=Ig(k,K,U,P),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,_=Ig(m,j,G,IA),B=f+I|0,B=(C=_+C|0)>>>0<_>>>0?B+1|0:B,I=(_=Ig(F,b,q,V))+C|0,C=f+B|0,C=I>>>0<_>>>0?C+1|0:C,B=(_=Ig(W,CA,fA,BA))+I|0,I=f+C|0,I=B>>>0<_>>>0?I+1|0:I,C=B,B=Ig(S,H,pA,sA),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=C,C=Ig(iA,FA,Z,QA),I=f+I|0,I=C>>>0>(B=B+C|0)>>>0?I+1|0:I,_=C=NA,C=(G=Ig(C,r=C>>31,h,Y))+B|0,B=f+I|0,I=(y=Ig(y,l,T,oA))+C|0,C=f+(C>>>0>>0?B+1|0:B)|0,B=I>>>0>>0?C+1|0:C,C=I,I=(I=o>>25)+B|0,I=(C=C+(o=(33554431&o)<<7|e>>>25)|0)>>>0>>0?I+1|0:I,B=C,y=C=C+33554432|0,o=I=C>>>0<33554432?I+1|0:I,i[g+80>>2]=B-(-67108864&C),C=Q>>25,B=(Q=(33554431&Q)<<7|w>>>25)+(MA-(I=-67108864&UA)|0)|0,I=C+(KA-((I>>>0>MA>>>0)+bA|0)|0)|0,I=B>>>0>>0?I+1|0:I,I=((67108863&(I=(C=B+33554432|0)>>>0<33554432?I+1|0:I))<<6|C>>>26)+(G=wA-(-33554432&HA)|0)|0,i[g+68>>2]=I,i[g+64>>2]=B-(-67108864&C),I=Ig(n,J,N,d),B=f,C=(Q=Ig(p,M,u,tA))+I|0,I=f+B|0,I=C>>>0>>0?I+1|0:I,B=(Q=Ig(U,P,x,rA))+C|0,C=f+I|0,C=B>>>0>>0?C+1|0:C,I=(Q=Ig(k,K,m,j))+B|0,B=f+C|0,B=I>>>0>>0?B+1|0:B,C=(Q=Ig(q,V,v,aA))+I|0,I=f+B|0,I=C>>>0>>0?I+1|0:I,B=Ig(F,b,fA,BA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=Ig(R,_A,pA,sA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=(Q=Ig(S,H,iA,FA))+C|0,C=f+I|0,C=B>>>0>>0?C+1|0:C,Q=(I=Ig(_,r,L,cA))+B|0,B=f+C|0,B=I>>>0>Q>>>0?B+1|0:B,C=Q,Q=Ig(I=GA,I>>31,h,Y),I=f+B|0,B=C=C+Q|0,I=(I=C>>>0>>0?I+1|0:I)+(C=o>>26)|0,I=(B=B+(o=(67108863&o)<<6|y>>>26)|0)>>>0>>0?I+1|0:I,I=(C=B+16777216|0)>>>0<16777216?I+1|0:I,i[g+84>>2]=B-(-33554432&C),o=t-(-33554432&kA)|0,Q=c-(B=-67108864&DA)|0,p=yA-((B>>>0>c>>>0)+YA|0)|0,I=Ig((33554431&(B=I))<<7|C>>>25,I>>=25,19,0),C=f+p|0,I=I>>>0>(B=I+Q|0)>>>0?C+1|0:C,I=((67108863&(I=(C=B+33554432|0)>>>0<33554432?I+1|0:I))<<6|C>>>26)+o|0,i[g+52>>2]=I,i[g+48>>2]=B-(-67108864&C),QI(A,g+48|0)),s=g+256|0,0|SA},Rg:function(A,I){A|=0;var g,B=0;return s=g=s+-64|0,FI(g,I|=0,32,0),C[0|g]=248&o[0|g],C[g+31|0]=63&o[g+31|0]|64,I=i[g+20>>2],B=i[g+16>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[g+12>>2],B=i[g+8>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[g+4>>2],B=i[g>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=i[g+28>>2],B=i[g+24>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,XC(g,64),s=g- -64|0,0},Sg:Wg,Tg:bI,Ug:vg,Vg:LI,Wg:BB,Xg:eB,Yg:cB,Zg:BB,_g:aB,$g:cB,ah:function(A,I,g,C,B){return 0|Xg(A|=0,I|=0,g|=0,C|=0,B|=0)},bh:function(A,I,g,C,B,Q,i,o){return 0|mg(A|=0,I|=0,(A=0)|(g|=0),C|=0,B|=0,A|(Q|=0),i|=0,o|=0)},ch:function(A,I,g,C,B,Q){return 0|ug(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)},dh:function(A,I,g,C,B){return 0|jg(A|=0,I|=0,g|=0,C|=0,B|=0)},eh:function(A,I,g,C,B,Q,i){return 0|Cg(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},fh:function(A,I,g,C,B,Q){return 0|xg(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)},gh:PC,hh:PC,ih:BB,jh:_B,kh:cB,lh:function(){return 1538},mh:Tg,nh:zg,oh:PC,ph:BB,qh:eB,rh:cB,sh:function(A,I,g,C,B){return 0|DC(A|=0,I|=0,g|=0,C|=0,B|=0)},th:function(A,I,g,C,B,Q,i,o){return 0|oC(A|=0,I|=0,(A=0)|(g|=0),C|=0,B|=0,A|(Q|=0),i|=0,o|=0)},uh:function(A,I,g,C,B,Q){return 0|aC(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)},vh:PC,wh:Tg,xh:function(A,I,g,C,B,Q,i,o){var E;return A|=0,I|=0,g|=0,C|=0,Q|=0,i|=0,s=E=s-32|0,wA(E,B|=0,o|=0,0),A=oC(o=A,I,(A=0)|g,C,B+16|0,A|Q,i,E),XC(E,32),s=E+32|0,0|A},yh:zg,zh:BB,Ah:_B,Bh:cB,Ch:PC,Dh:CB,Eh:BB,Fh:gB,Gh:oI,Hh:NC,Ih:GC,Jh:function(){return 1089},Kh:function(){var A,I;return s=A=s-16|0,C[A+15|0]=0,I=0|t(36800,A+15|0,0),s=A+16|0,0|I},Lh:$g,Mh:function(A){var I,g=0,B=0;if(s=I=s-16|0,(A|=0)>>>0>=2){for(g=(0-A>>>0)%(A>>>0)|0;C[I+15|0]=0,g>>>0>(B=0|t(36800,I+15|0,0))>>>0;);g=(B>>>0)%(A>>>0)|0}return s=I+16|0,0|g},Nh:ag,Oh:function(A,I,g){jg(A|=0,I|=0,0,34336,g|=0)},Ph:BB,Qh:function(){var A=0,I=0;return(A=i[9539])&&(A=i[A+20>>2])&&(I=0|pB[0|A]()),0|I},Rh:function(A,I,g){A|=0,I|=0;var B,i=0,o=0,E=0;if(s=B=s-16|0,g|=0)r(1346,1192,198,1092),Q();else{if(I|g)for(;C[B+15|0]=0,o=A+i|0,E=0|t(36800,B+15|0,0),C[0|o]=E,(0|I)!=(0|(i=i+1|0)););s=B+16|0}},Sh:function(A,I,g,B){A|=0,g|=0;var i=0,E=0,a=0;if(!((B|=0)>>>0>2147483646|B<<1>>>0>=(I|=0)>>>0)){if(I=0,B){for(;i=(I<<1)+A|0,E=15&(a=o[I+g|0]),C[i+1|0]=22272+((E<<8)+(E+65526&55552)|0)>>>8,E=i,i=a>>>4|0,C[0|E]=87+((i+65526>>>8&217)+i|0),(0|B)!=(0|(I=I+1|0)););I=B<<1}else I=0;return C[I+A|0]=0,0|A}rC(),Q()},Th:function(A,I,g,B,Q,E,a){A|=0,I|=0,g|=0,Q|=0,E|=0,a|=0;var _=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0;A:{I:{g:{C:{B:{Q:{i:{o:{E:{if(B|=0){if(Q)break E;for(c=1,Q=0;;){if(!(255&((s=(65526+(t=(223&(e=o[g+_|0]))-55&255)^t+65520)>>>8|0)|(h=65526+(e^=48)>>>8|0))))break i;if(I>>>0<=y>>>0)break o;if(t=t&s|e&h,255&r?(C[A+y|0]=Q|t,y=y+1|0):Q=t<<4,r=~r,(0|(_=_+1|0))==(0|B))break}_=B;break i}if(A=0,!a)break A;break g}for(;;){E:{a:{_:{c:{t:{if(!(255&((e=(65526+(c=(223&(t=o[g+_|0]))-55&255)^c+65520)>>>8|0)|(h=65526+(s=48^t)>>>8|0)))){if(255&r)break Q;if(c=0,!kI(Q,t))break C;if((_=r=_+1|0)>>>0>>0)break t;break C}if(I>>>0<=y>>>0)break o;if(c=c&e|s&h,!(255&r))break c;C[A+y|0]=c|D,y=y+1|0;break E}for(;;){if(!(255&((s=(65526+(e=(223&(t=o[g+_|0]))-55&255)^e+65520)>>>8|0)|(D=65526+(h=48^t)>>>8|0)))){if(!kI(Q,t))break C;if((_=_+1|0)>>>0>>0)continue;break _}break}if(I>>>0<=y>>>0)break a;c=e&s|h&D}D=c<<4,r=0;break E}_=B>>>0>r>>>0?B:r;break C}r=0;break o}if(r=~r,c=1,!((_=_+1|0)>>>0>>0))break}break i}i[9404]=68,c=0}if(!(255&r))break B}i[9404]=28,c=-1,_=_-1|0,y=0;break C}y=c?y:0,c=c-1|0}if(!a){if((0|B)!=(0|_))break I;A=c;break A}}i[a>>2]=g+_,A=c;break A}i[9404]=28,A=-1}return E&&(i[E>>2]=y),0|A},Uh:function(A,I){A|=0;var g=0;return 1!=(-7&(I|=0))&&(rC(),Q()),1+((3&(g=(g=A)+a(A=(A>>>0)/3|0,-3)|0)?2&I?g+1|0:4:0)+(A<<2)|0)|0},Vh:XA,Wh:pA,Xh:function(){var A=0;return i[9537]?A=1:($g(),ag(38128,16),i[9537]=1,A=0),0|A},Yh:function(A,I,g,B,E){A|=0,I|=0,g|=0,E|=0;var a,_=0,c=0,t=0;s=a=s-16|0;A:{if(B|=0){if((_=B-1|0)&B?(c=~g,_=_-((g>>>0)%(B>>>0)|0)|0):_&=c=~g,_>>>0>=c>>>0)break A;if((g=g+_|0)>>>0>=E>>>0)I=-1;else for(A&&(i[A>>2]=g+1),A=I+g|0,I=0,C[a+15|0]=0,g=0;c=E=A-g|0,t=o[0|E]&o[a+15|0],E=(g^_)-1>>>24|0,C[0|c]=t|128&E,C[a+15|0]=E|o[a+15|0],(0|B)!=(0|(g=g+1|0)););}else I=-1;return s=a+16|0,0|I}rC(),Q()},Zh:function(A,I,g,C){A|=0,I|=0,g|=0,C|=0;var B,Q=0,E=0,a=0,_=0,c=0;if(i[12+(B=s-16|0)>>2]=0,C-1>>>0>>0){for(c=(Q=g-1|0)+I|0,g=0,I=0;_=((128^(E=o[c-g|0]))-1&i[B+12>>2]-1&a-1)>>>8&1,i[B+12>>2]=i[B+12>>2]|0-_&g,I|=_,a|=E,(0|C)!=(0|(g=g+1|0)););i[A>>2]=Q-i[B+12>>2],A=(255&I)-1|0}else A=-1;return 0|A},_h:function(){return 1547},$h:function(){return 26},ai:tB,bi:hB,ci:cI,di:sC,ei:function(A,I,g){A|=0;var C,B=0;return s=C=s-32|0,B=-1,CI(C,g|=0,I|=0)||(B=yA(A,35584,C,0)),s=C+32|0,0|B},fi:dg,gi:function(A,I,g,C,B,Q,i,o){var E,a;return A|=0,I|=0,g|=0,Q|=0,a=C|=0,C=B|=0,s=E=s+-64|0,CI(E+32|0,o|=0,i|=0)?B=-1:(B=-1,yA(E,35584,E+32|0,0)||(B=EI(A,I,g,a,C,Q,E),XC(E,32))),s=E- -64|0,0|B},hi:function(A,I,g,C,B,i){return A|=0,I|=0,B|=0,i|=0,!(C|=0)&(g|=0)>>>0>=4294967280|C&&(rC(),Q()),0|EI(A+16|0,A,I,g,C,B,i)},ii:function(A,I,g,C,B,Q,i){return 0|ig(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},ji:lg,ki:function(A,I,g,C,B,Q,i,o){var E,a;return A|=0,I|=0,g|=0,Q|=0,a=C|=0,C=B|=0,s=E=s+-64|0,CI(E+32|0,o|=0,i|=0)?B=-1:(B=-1,yA(E,35584,E+32|0,0)||(B=sI(A,I,g,a,C,Q,E),XC(E,32))),s=E- -64|0,0|B},li:Dg,mi:function(A,I,g,C,B,Q,i){return 0|Ag(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},ni:BB,oi:BB,pi:BB,qi:BB,ri:_B,si:CB,ti:EB,ui:function(A,I,g,B,Q){A|=0,I|=0,Q|=0;var o,E,a,_,c=0,t=0;return c=g|=0,g=B|=0,_=0|c,c=B=s,s=o=B-512&-64,B=-1,sC(E=o- -64|0,a=o+32|0)||(iC(B=o+128|0,0,0,24),lC(B,E,32,0),lC(B,Q,32,0),eC(B,t=o+96|0,24),B=ig(A+32|0,I,_,g,t,Q,a),I=i[o+92>>2],g=i[o+88>>2],C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[o+84>>2],g=i[o+80>>2],C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[o+76>>2],g=i[o+72>>2],C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[o+68>>2],g=i[o+64>>2],C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,XC(a,32),XC(E,32),XC(t,24)),s=c,0|B},vi:function(A,I,g,C,B,Q){A|=0,I|=0,B|=0,Q|=0;var i,o,E=0;return o=E=s,s=i=E-448&-64,E=-1,!(C|=0)&(g|=0)>>>0>=48|C&&(iC(E=i- -64|0,0,0,24),lC(E,I,32,0),lC(E,B,32,0),eC(E,B=i+32|0,24),E=Ag(A,I+32|0,g-32|0,C-(g>>>0<32)|0,B,I,Q)),s=o,0|E},wi:oB,xi:function(A){var I,g=0;return s=I=s-160|0,NI(A|=0)&&(KI(A)||MA(I,A)||jA(I)&&(g=!!(0|gA(I)))),s=I+160|0,0|g},yi:function(A,I,g){A|=0,g|=0;var C,B,Q=0;return s=C=s-800|0,Q=-1,MA(B=C+640|0,I|=0)||jA(B)&&(MA(I=C+480|0,g)||jA(I)&&($A(C,I),sA(I=C+160|0,B,C),kg(g=C+320|0,I),tg(A,g),Q=0)),s=C+800|0,0|Q},zi:function(A,I,g){A|=0,g|=0;var C,B,Q=0;return s=C=s-800|0,Q=-1,MA(B=C+640|0,I|=0)||jA(B)&&(MA(I=C+480|0,g)||jA(I)&&($A(C,I),hA(I=C+160|0,B,C),kg(g=C+320|0,I),tg(A,g),Q=0)),s=C+800|0,0|Q},Ai:function(A,I){return M(A|=0,I|=0),0},Bi:function(A){var I;A|=0,s=I=s-32|0,ag(I,32),M(A,I),s=I+32|0},Ci:Mg,Di:kA,Ei:xA,Fi:uA,Gi:cA,Hi:dA,Ii:IA,Ji:MC,Ki:BB,Li:gB,Mi:BB,Ni:gB,Oi:BB,Pi:function(A){var I;return s=I=s-160|0,A=EA(I,A|=0),s=I+160|0,0|!A},Qi:function(A,I,g){A|=0,g|=0;var C,B,Q=0;return s=C=s-800|0,Q=-1,EA(B=C+640|0,I|=0)||EA(I=C+480|0,g)||($A(C,I),sA(I=C+160|0,B,C),kg(g=C+320|0,I),W(A,g),Q=0),s=C+800|0,0|Q},Ri:function(A,I,g){A|=0,g|=0;var C,B,Q=0;return s=C=s-800|0,Q=-1,EA(B=C+640|0,I|=0)||EA(I=C+480|0,g)||($A(C,I),hA(I=C+160|0,B,C),kg(g=C+320|0,I),W(A,g),Q=0),s=C+800|0,0|Q},Si:function(A,I){return jI(A|=0,I|=0),0},Ti:function(A){var I;A|=0,s=I=s+-64|0,ag(I,64),jI(A,I),s=I- -64|0},Ui:function(A){Mg(A|=0)},Vi:function(A,I){return 0|kA(A|=0,I|=0)},Wi:function(A,I){xA(A|=0,I|=0)},Xi:function(A,I){uA(A|=0,I|=0)},Yi:function(A,I,g){cA(A|=0,I|=0,g|=0)},Zi:function(A,I,g){IA(A|=0,I|=0,g|=0)},_i:MC,$i:function(A,I){dA(A|=0,I|=0)},aj:BB,bj:gB,cj:gB,dj:BB,ej:function(A,I,g,C,B,Q,i,o,E,a){return 0|rg(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0,o|=0,E|=0,a|=0)},fj:CB,gj:cB,hj:hB,ij:cB,jj:BB,kj:function(){return 102},lj:function(){return 1575},mj:function(){return 32768},nj:cB,oj:jC,pj:cB,qj:function(){return 524288},rj:jC,sj:LC,tj:vC,uj:function(A,I,g,C,B,Q,o,E,a,_){var c,t,r;I|=0,g|=0,C|=0,B|=0,Q|=0,o|=0,a|=0,_|=0,t=0|(E|=0),s=E=s-16|0,r=I|=0,c=bg(A|=0,0,I),A=0|B;A:if(1==(0|(B=g|Q))|B>>>0>1)i[9404]=22,A=-1;else if(!g&I>>>0>=16|g){if(bA(t,a,_,E+12|0,E+8|0,E+4|0),(0|C)==(0|c)){i[9404]=28,A=-1;break A}B=A,A=31&(I=i[E+12>>2]),(63&I)>>>0>=32?(I=1<>>32-A,A=rg(C,B,o,32,g,I,i[E+4>>2],i[E+8>>2],c,r)}else i[9404]=28,A=-1;return s=E+16|0,0|A},vj:function(A,I,g,B,Q,E,a){I|=0,g|=0,B|=0,E|=0,a|=0;var _,c,t,r=0,e=0,y=0,h=0,D=0,p=0,w=0;r=Q|=0,r|=Q=0,s=_=s-128|0,c=bg(A|=0,0,102),D=22,t=g|Q;A:{I:{if(!B){bA(r,E,a,_+16|0,_+12|0,_+8|0),ag(e=_+96|0,32),D=28,g=_+32|0,E=i[_+16>>2],a=Ig(A=i[_+12>>2],0,B=i[_+8>>2],0);g:if(!(!(r=f)&a>>>0>1073741823|r|E>>>0>63)&&(C[0|g]=36,C[g+1|0]=55,C[g+2|0]=36,C[g+4|0]=o[1024+(63&B)|0],C[g+3|0]=o[E+1024|0],C[g+8|0]=o[1024+(B>>>24&63)|0],C[g+7|0]=o[1024+(B>>>18&63)|0],C[g+6|0]=o[1024+(B>>>12&63)|0],C[g+5|0]=o[1024+(B>>>6&63)|0],(B=g+9|0)&&(0|B)!=(0|(y=g+58|0))&&(C[0|B]=o[1024+(63&A)|0],1!=(0|(B=y-B|0))&&(C[g+10|0]=o[1024+(A>>>6&63)|0],2!=(0|B)&&(C[g+11|0]=o[1024+(A>>>12&63)|0],3!=(0|B)&&(C[g+12|0]=o[1024+(A>>>18&63)|0],4!=(0|B)&&(C[g+13|0]=o[1024+(A>>>24&63)|0],E=g+14|0))))))){for(r=y-E|0,A=0;;){if(B=E,!(A>>>0>=32)){if(E=o[A+e|0],(p=(a=A+1|0)>>>0>=32)?h=0:(E=o[a+e|0]<<8|E,(a=A+2|0)>>>0>=32?h=0:(E=o[a+e|0]<<16|E,h=1,a=A+3|0)),A=a,!r)break g;if(C[0|B]=o[1024+(63&E)|0],1==(0|r))break g;if(C[B+1|0]=o[1024+(E>>>6&63)|0],w=B+r|0,a=B+2|0,!p){if(2==(0|r))break g;if(C[B+2|0]=o[1024+(E>>>12&63)|0],a=B+3|0,h){if(3==(0|r))break g;C[B+3|0]=o[1024+(E>>>18|0)|0],a=B+4|0}}if(r=w-(E=a)|0,E)continue;break g}break}B>>>0>=y>>>0||(C[0|B]=0,Q=g)}if(Q){if(_C(A=_+20|0))break I;if(I=TA(A,I,t,g,c),Rg(A),I){A=0;break A}}}i[9404]=D}A=-1}return s=_+128|0,0|A},wj:function(A,I,g,C){I|=0,C|=0;var B,Q,i=0;B=A|=0,Q=g|=0,g=0,s=C=s-128|0;A:{I:{for(;;){if(!o[g+B|0]){A=g;break I}if(!o[B+(A=g+1|0)|0])break I;if(!o[B+(A=g+2|0)|0])break I;if(102==(0|(g=g+3|0)))break}g=-1;break A}g=-1,101==(0|A)&&(_C(i=C+4|0)||(bg(A=C+16|0,0,102),I=TA(i,I,Q,B,A),Rg(i),I&&(g=MI(A,B,102),XC(A,102))))}return s=C+128|0,0|g},xj:function(A,I,g,C){var B,Q;Q=A|=0,s=B=s-32|0,bA(I|=0,g|=0,C|=0,B+28|0,B+20|0,B+12|0),A=0;A:{I:{g:{for(;;){if(o[A+Q|0]){if(o[Q+(I=A+1|0)|0]&&o[Q+(I=A+2|0)|0]){if(102!=(0|(A=A+3|0)))continue;break g}}else I=A;break}if(101==(0|I)){if(g=B+8|0,C=B+16|0,A=0,36!=o[0|Q]|55!=o[Q+1|0]|36!=o[Q+2|0]||(I=uI(o[Q+3|0]),i[B+24>>2]=I?I-1024|0:0,I&&(I=PI(g,Q+4|0))&&(A=PI(C,I))),A)break I;i[9404]=28,A=-1;break A}}i[9404]=28,A=-1;break A}A=1,i[B+28>>2]!=i[B+24>>2]|i[B+12>>2]!=i[B+8>>2]||(A=i[B+20>>2]!=i[B+16>>2])}return s=B+32|0,0|A},yj:function(A,I,g){return 0|ZA(A|=0,I|=0,g|=0,1)},zj:function(A,I,g){return 0|ZA(A|=0,I|=0,g|=0,0)},Aj:function(A,I){return 0|II(A|=0,I|=0,1)},Bj:function(A,I){return 0|II(A|=0,I|=0,0)},Cj:BB,Dj:BB,Ej:function(A,I,g){A|=0,I|=0;var B,Q=0;return s=B=s-320|0,Q=-1,EA(B,g|=0)||(C[0|A]=o[0|I],C[A+1|0]=o[I+1|0],C[A+2|0]=o[I+2|0],C[A+3|0]=o[I+3|0],C[A+4|0]=o[I+4|0],C[A+5|0]=o[I+5|0],C[A+6|0]=o[I+6|0],C[A+7|0]=o[I+7|0],C[A+8|0]=o[I+8|0],C[A+9|0]=o[I+9|0],C[A+10|0]=o[I+10|0],C[A+11|0]=o[I+11|0],C[A+12|0]=o[I+12|0],C[A+13|0]=o[I+13|0],C[A+14|0]=o[I+14|0],C[A+15|0]=o[I+15|0],C[A+16|0]=o[I+16|0],C[A+17|0]=o[I+17|0],C[A+18|0]=o[I+18|0],C[A+19|0]=o[I+19|0],C[A+20|0]=o[I+20|0],C[A+21|0]=o[I+21|0],C[A+22|0]=o[I+22|0],C[A+23|0]=o[I+23|0],C[A+24|0]=o[I+24|0],C[A+25|0]=o[I+25|0],C[A+26|0]=o[I+26|0],C[A+27|0]=o[I+27|0],C[A+28|0]=o[I+28|0],C[A+29|0]=o[I+29|0],C[A+30|0]=o[I+30|0],C[A+31|0]=127&o[I+31|0],u(I=B+160|0,A,B),W(A,I),Q=GI(A,32)?-1:0),s=B+320|0,0|Q},Fj:function(A,I){var g;return I|=0,s=g=s-160|0,C[0|(A|=0)]=o[0|I],C[A+1|0]=o[I+1|0],C[A+2|0]=o[I+2|0],C[A+3|0]=o[I+3|0],C[A+4|0]=o[I+4|0],C[A+5|0]=o[I+5|0],C[A+6|0]=o[I+6|0],C[A+7|0]=o[I+7|0],C[A+8|0]=o[I+8|0],C[A+9|0]=o[I+9|0],C[A+10|0]=o[I+10|0],C[A+11|0]=o[I+11|0],C[A+12|0]=o[I+12|0],C[A+13|0]=o[I+13|0],C[A+14|0]=o[I+14|0],C[A+15|0]=o[I+15|0],C[A+16|0]=o[I+16|0],C[A+17|0]=o[I+17|0],C[A+18|0]=o[I+18|0],C[A+19|0]=o[I+19|0],C[A+20|0]=o[I+20|0],C[A+21|0]=o[I+21|0],C[A+22|0]=o[I+22|0],C[A+23|0]=o[I+23|0],C[A+24|0]=o[I+24|0],C[A+25|0]=o[I+25|0],C[A+26|0]=o[I+26|0],C[A+27|0]=o[I+27|0],C[A+28|0]=o[I+28|0],C[A+29|0]=o[I+29|0],C[A+30|0]=o[I+30|0],C[A+31|0]=127&o[I+31|0],nA(g,A),W(A,g),A=GI(A,32),s=g+160|0,0|(A?-1:0)},Gj:BB,Hj:BB,Ij:dg,Jj:function(A,I,g,C,B,i){return A|=0,I|=0,B|=0,i|=0,!(C|=0)&(g|=0)>>>0>=4294967280|C&&(rC(),Q()),EI(A+16|0,A,I,g,C,B,i),0},Kj:lg,Lj:Dg,Mj:BB,Nj:_B,Oj:CB,Pj:EB,Qj:CB,Rj:CB,Sj:function(A,I,g,B,Q){A|=0,I|=0,g|=0,B|=0;var i,E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,p=0,w=0,n=0,k=0;if(p=1886610805^(a=o[0|(Q|=0)]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24),D=1936682341^(_=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24),a^=1852142177,c=1819895653^_,w=1852075907^(_=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24),n=1685025377^(Q=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24),t=2037671283^_,_=1952801890^Q,s=g,(0|(E=(g+I|0)-(i=7&g)|0))!=(0|I))for(;g=(e=_^(k=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24))+c|0,t=B=a+(Q=t^(y=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24))|0,r=g=B>>>0>>0?g+1|0:g,a=B,B=g,g=D+n|0,g=(_=p+w|0)>>>0

>>0?g+1|0:g,h=(c=UI(w,n,13)^_)+a|0,B=(a=f^g)+B|0,a=UI(c,a,17)^h,p=UI(a,B=(c=c>>>0>h>>>0?B+1|0:B)^f,13),D=f,e=UI(Q,e,16),Q=r^f,e^=t,r=UI(_,g,32),g=f+Q|0,g=(t=B)+(B=(_=e+r|0)>>>0>>0?g+1|0:g)|0,r=g=(t=a+_|0)>>>0<_>>>0?g+1|0:g,p=UI(a=t^p,g^=D,17),D=f,e=UI(e,Q,21),Q=B^f,e^=_,_=UI(h,c,32),B=f+Q|0,g=(_=(c=e+_|0)>>>0<_>>>0?B+1|0:B)+g|0,w=(a=a+c|0)^p,B=g=a>>>0>>0?g+1|0:g,n=g^D,g=UI(e,Q,16),e=_^=f,h=UI(g^=c,_,21),c=f,r=(_=UI(t,r,32))+g|0,g=f+e|0,t=r^h,_=(g=_>>>0>r>>>0?g+1|0:g)^c,a=UI(a,B,32),c=f,p=y^r,D=g^k,(0|E)!=(0|(I=I+8|0)););switch(y=0,Q=s<<24,i-1|0){case 6:Q|=o[I+6|0]<<16;case 5:Q|=o[I+5|0]<<8;case 4:Q|=o[I+4|0];case 3:y|=(g=o[I+3|0])<<24,Q|=B=g>>>8|0;case 2:y|=(B=o[I+2|0])<<16,Q|=g=B>>>16|0;case 1:y|=(g=o[I+1|0])<<8,Q|=B=g>>>24|0;case 0:y=o[0|I]|y}return h=Q,I=Q^_,B=UI(Q=t^y,I,16),I=I+c|0,r=I=(t=Q+a|0)>>>0>>0?I+1|0:I,s=UI(Q=B^t,I^=g=f,21),_=f,g=D+n|0,B=g=(a=p+w|0)>>>0

>>0?g+1|0:g,c=Q,Q=UI(a,g,32),g=f+I|0,I=_,_=g=Q>>>0>(c=c+Q|0)>>>0?g+1|0:g,p=UI(Q=c^s,I^=g,16),D=f,g=(a=e=UI(w,n,13)^a)+t|0,B=(t=f^B)+r|0,r=Q,Q=UI(g,B=g>>>0>>0?B+1|0:B,32),I=f+I|0,k=Q=(a=Q>>>0>(s=r+Q|0)>>>0?I+1|0:I)^D,r=p^=s,D=UI(e,t,17)^g,g=(e=f^B)+_|0,I=g=(B=c=(I=D)+c|0)>>>0>>0?g+1|0:g,_=UI(B,g,32),g=f+Q|0,c=(t=_+r|0)^y,h^=r=_>>>0>t>>>0?g+1|0:g,Q=UI(D,e,13)^B,B=UI(Q,I^=f,17),I=I+a|0,Q=B^(_=Q+s|0),B=I=_>>>0>>0?I+1|0:I,g=(I^=g=f)+h|0,g=Q>>>0>(c=Q+c|0)>>>0?g+1|0:g,Q=UI(Q,I,13)^c,a=g,s=UI(Q,I=g^f,17),y=f,h=UI(p,k,21),e=r^f,r=t^h,_=238^UI(_,B,32),g=f+e|0,g=(h=I)+(I=(B=r+_|0)>>>0<_>>>0?g+1|0:g)|0,_=g=(t=B+Q|0)>>>0>>0?g+1|0:g,y=UI(Q=t^s,g^=y,13),h=f,r=UI(r,e,16),e=I^f,s=B^r,B=UI(c,a,32),I=f+e|0,B=(c=g)+(g=B>>>0>(a=s+B|0)>>>0?I+1|0:I)|0,c=B=(r=Q+a|0)>>>0>>0?B+1|0:B,y=UI(Q=y^r,I=B^h,17),h=f,B=UI(s,e,21),e=g^f,s=B^a,B=UI(t,_,32),g=f+e|0,g=(B=B>>>0>(a=s+B|0)>>>0?g+1|0:g)+I|0,_=g=(t=Q+a|0)>>>0>>0?g+1|0:g,y=UI(Q=t^y,I=g^h,13),h=f,g=UI(s,e,16),e=B^f,s=g^a,g=UI(r,c,32),B=f+e|0,g=(B=g>>>0>(a=s+g|0)>>>0?B+1|0:B)+I|0,c=g=(r=Q+a|0)>>>0>>0?g+1|0:g,y=UI(Q=y^r,I=g^h,17),h=f,g=UI(s,e,21),e=B^f,s=g^a,a=UI(t,_,32),g=f+e|0,I=(g=(B=s+a|0)>>>0>>0?g+1|0:g)+I|0,a=I=(_=B+Q|0)>>>0>>0?I+1|0:I,y=UI(Q=_^y,I^=h,13),h=f,t=UI(s,e,16),s=g^f,t^=B,c=UI(r,c,32),g=f+s|0,g=(r=I)+(I=(B=t+c|0)>>>0>>0?g+1|0:g)|0,c=g=(r=B+Q|0)>>>0>>0?g+1|0:g,y=UI(Q=y^r,g^=h,17),h=f,t=UI(t,s,21),s=I^f,t^=B,B=UI(_,a,32),I=f+s|0,B=(_=g)+(g=B>>>0>(a=t+B|0)>>>0?I+1|0:I)|0,_=Q=(B=(I=Q+a|0)>>>0>>0?B+1|0:B)^h,y^=I,t=UI(t,s,16),e=g^f,a=(t^=a)+(c=UI(r,c,32))|0,g=f+e|0,I=UI(I,B,32),s=f,B=g=a>>>0>>0?g+1|0:g,c=A,t=(r=UI(t,e,21)^a)^I^a^y,C[0|c]=t,C[c+1|0]=t>>>8,C[c+2|0]=t>>>16,C[c+3|0]=t>>>24,g=(e=s^g^Q)^(Q=g^f),C[c+4|0]=g,C[c+5|0]=g>>>8,C[c+6|0]=g>>>16,C[c+7|0]=g>>>24,g=Q+s|0,g=(c=I)>>>0>(I=I+r|0)>>>0?g+1|0:g,h=I,Q=UI(r,Q,16)^I,r=g,s=I=g^f,B=(g=_)+B|0,_=a=(c=y^=221)+a|0,a=UI(a,B=a>>>0>>0?B+1|0:B,32),I=f+I|0,I=a>>>0>(t=a+Q|0)>>>0?I+1|0:I,a=UI(Q,s,21)^t,c=I,D=UI(a,Q=I^f,16),e=f,I=UI(y,g,13),g=r+(s=B^f)|0,I=g=(B=h+(y=I^_)|0)>>>0>>0?g+1|0:g,_=a,a=UI(B,g,32),g=f+Q|0,e=g=(_=a>>>0>(r=_+a|0)>>>0?g+1|0:g)^e,h=UI(D^=r,g,21),a=f,g=UI(y,s,17),I=c+(s=I^f)|0,B=I=(Q=t+(y=g^B)|0)>>>0>>0?I+1|0:I,I=UI(Q,I,32),g=e+f|0,e=g=(c=a)^(a=(I=I+D|0)>>>0>>0?g+1|0:g),c=I,h=UI(D=h^I,g,16),t=f,I=UI(y,s,13),g=_+(s=B^f)|0,I=UI(Q=r+(y=I^Q)|0,g=Q>>>0>>0?g+1|0:g,32),B=e+f|0,e=B=(_=(I=I+D|0)>>>0>>0?B+1|0:B)^t,r=I,h=UI(D=h^I,B,21),t=f,I=UI(y,s,17),g=a+(s=g^f)|0,B=g=(Q=c+(y=I^Q)|0)>>>0>>0?g+1|0:g,I=UI(Q,g,32),g=e+f|0,e=g=(a=(I=I+D|0)>>>0>>0?g+1|0:g)^t,c=I,h=UI(D=h^I,g,16),t=f,I=UI(y,s,13),B=_+(s=B^f)|0,g=UI(Q=r+(y=I^Q)|0,B=Q>>>0>>0?B+1|0:B,32),I=e+f|0,_=g=g+D|0,h=UI(h^g,(I=g>>>0>>0?I+1|0:I)^t,21),t=f,r=UI(y,s,17),g=B^f,r=UI(B=Q^r,g,13),g=g+a|0,g=(B=B+c|0)>>>0>>0?g+1|0:g,Q=UI(a=B^r,g^=Q=f,17)^h,B=f^t,g=I+g|0,I=UI(I=a+_|0,g=I>>>0<_>>>0?g+1|0:g,32)^Q^I,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=g^f^B,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,0},Tj:function(A,I,g,B,Q){A|=0,B|=0,Q|=0;var E,a=0,_=0,c=0,t=0;if(s=E=s-112|0,a=I|=0,I|(_=g|=0)){I=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,i[E+24>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,i[E+28>>2]=I,I=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[E+16>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[E+20>>2]=I,I=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[E>>2]=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,i[E+4>>2]=I,I=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[E+8>>2]=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24,i[E+12>>2]=I,I=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,g=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[E+104>>2]=0,i[E+108>>2]=0,i[E+96>>2]=I,i[E+100>>2]=g;A:{if(!_&a>>>0>=64|_){for(;IC(A,E+96|0,E,0),I=o[E+104|0]+1|0,C[E+104|0]=I,I=o[E+105|0]+(I>>>8|0)|0,C[E+105|0]=I,I=o[E+106|0]+(I>>>8|0)|0,C[E+106|0]=I,I=o[E+107|0]+(I>>>8|0)|0,C[E+107|0]=I,I=o[E+108|0]+(I>>>8|0)|0,C[E+108|0]=I,I=o[E+109|0]+(I>>>8|0)|0,C[E+109|0]=I,I=o[E+110|0]+(I>>>8|0)|0,C[E+110|0]=I,C[E+111|0]=o[E+111|0]+(I>>>8|0),A=A- -64|0,_=_-1|0,!(_=(a=a+-64|0)>>>0<4294967232?_+1|0:_)&a>>>0>63|_;);if(!(a|_))break A}if(g=0,IC(E+32|0,E+96|0,E,0),B=3&a,I=0,!_&a>>>0>=4|_)for(_=60&a,Q=0;a=t=E+32|0,C[A+I|0]=o[a+I|0],C[(c=1|I)+A|0]=o[a+c|0],C[(c=2|I)+A|0]=o[a+c|0],C[(a=3|I)+A|0]=o[a+t|0],I=I+4|0,(0|_)!=(0|(Q=Q+4|0)););if(B)for(;C[A+I|0]=o[(E+32|0)+I|0],I=I+1|0,(0|B)!=(0|(g=g+1|0)););}XC(E+32|0,64),XC(E,32)}return s=E+112|0,0},Uj:function(A,I,g,B,Q,E){A|=0,I|=0,Q|=0,E|=0;var a,_=0,c=0;if(s=a=s-112|0,_=g|=0,(B|=0)|g){g=o[E+28|0]|o[E+29|0]<<8|o[E+30|0]<<16|o[E+31|0]<<24,i[a+24>>2]=o[E+24|0]|o[E+25|0]<<8|o[E+26|0]<<16|o[E+27|0]<<24,i[a+28>>2]=g,g=o[E+20|0]|o[E+21|0]<<8|o[E+22|0]<<16|o[E+23|0]<<24,i[a+16>>2]=o[E+16|0]|o[E+17|0]<<8|o[E+18|0]<<16|o[E+19|0]<<24,i[a+20>>2]=g,g=o[E+4|0]|o[E+5|0]<<8|o[E+6|0]<<16|o[E+7|0]<<24,i[a>>2]=o[0|E]|o[E+1|0]<<8|o[E+2|0]<<16|o[E+3|0]<<24,i[a+4>>2]=g,g=o[E+12|0]|o[E+13|0]<<8|o[E+14|0]<<16|o[E+15|0]<<24,i[a+8>>2]=o[E+8|0]|o[E+9|0]<<8|o[E+10|0]<<16|o[E+11|0]<<24,i[a+12>>2]=g,g=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,Q=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[a+104>>2]=0,i[a+108>>2]=0,i[a+96>>2]=g,i[a+100>>2]=Q;A:{if(!B&_>>>0>=64|B){for(;;){for(g=0,IC(a+32|0,a+96|0,a,0);E=a+32|0,C[A+g|0]=o[E+g|0]^o[I+g|0],C[(Q=1|g)+A|0]=o[Q+E|0]^o[I+Q|0],64!=(0|(g=g+2|0)););if(g=o[a+104|0]+1|0,C[a+104|0]=g,g=o[a+105|0]+(g>>>8|0)|0,C[a+105|0]=g,g=o[a+106|0]+(g>>>8|0)|0,C[a+106|0]=g,g=o[a+107|0]+(g>>>8|0)|0,C[a+107|0]=g,g=o[a+108|0]+(g>>>8|0)|0,C[a+108|0]=g,g=o[a+109|0]+(g>>>8|0)|0,C[a+109|0]=g,g=o[a+110|0]+(g>>>8|0)|0,C[a+110|0]=g,C[a+111|0]=o[a+111|0]+(g>>>8|0),I=I- -64|0,A=A- -64|0,B=B-1|0,!(!(B=(_=_+-64|0)>>>0<4294967232?B+1|0:B)&_>>>0>63|B))break}if(!(B|_))break A}if(g=0,IC(a+32|0,a+96|0,a,0),E=1&_,1!=(0|_)|B)for(_&=62,B=0;c=a+32|0,C[A+g|0]=o[c+g|0]^o[I+g|0],C[(Q=1|g)+A|0]=o[Q+c|0]^o[I+Q|0],g=g+2|0,(0|_)!=(0|(B=B+2|0)););E&&(C[A+g|0]=o[(a+32|0)+g|0]^o[I+g|0])}XC(a+32|0,64),XC(a,32)}return s=a+112|0,0},Vj:BB,Wj:eB,Xj:cB,Yj:PC,Zj:function(A,I,g,B,Q){A|=0,B|=0,Q|=0;var E,a=0,_=0,c=0,t=0;if(s=E=s-112|0,a=I|=0,I|(_=g|=0)){I=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,i[E+24>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,i[E+28>>2]=I,I=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[E+16>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[E+20>>2]=I,I=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[E>>2]=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,i[E+4>>2]=I,I=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[E+8>>2]=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24,i[E+12>>2]=I,I=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,g=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[E+104>>2]=0,i[E+108>>2]=0,i[E+96>>2]=I,i[E+100>>2]=g;A:{if(!_&a>>>0>=64|_){for(;gC(A,E+96|0,E,0),I=o[E+104|0]+1|0,C[E+104|0]=I,I=o[E+105|0]+(I>>>8|0)|0,C[E+105|0]=I,I=o[E+106|0]+(I>>>8|0)|0,C[E+106|0]=I,I=o[E+107|0]+(I>>>8|0)|0,C[E+107|0]=I,I=o[E+108|0]+(I>>>8|0)|0,C[E+108|0]=I,I=o[E+109|0]+(I>>>8|0)|0,C[E+109|0]=I,I=o[E+110|0]+(I>>>8|0)|0,C[E+110|0]=I,C[E+111|0]=o[E+111|0]+(I>>>8|0),A=A- -64|0,_=_-1|0,!(_=(a=a+-64|0)>>>0<4294967232?_+1|0:_)&a>>>0>63|_;);if(!(a|_))break A}if(g=0,gC(E+32|0,E+96|0,E,0),B=3&a,I=0,!_&a>>>0>=4|_)for(_=60&a,Q=0;a=t=E+32|0,C[A+I|0]=o[a+I|0],C[(c=1|I)+A|0]=o[a+c|0],C[(c=2|I)+A|0]=o[a+c|0],C[(a=3|I)+A|0]=o[a+t|0],I=I+4|0,(0|_)!=(0|(Q=Q+4|0)););if(B)for(;C[A+I|0]=o[(E+32|0)+I|0],I=I+1|0,(0|B)!=(0|(g=g+1|0)););}XC(E+32|0,64),XC(E,32)}return s=E+112|0,0},_j:function(A,I,g,B,Q,E){A|=0,I|=0,Q|=0,E|=0;var a,_=0,c=0;if(s=a=s-112|0,_=g|=0,(B|=0)|g){g=o[E+28|0]|o[E+29|0]<<8|o[E+30|0]<<16|o[E+31|0]<<24,i[a+24>>2]=o[E+24|0]|o[E+25|0]<<8|o[E+26|0]<<16|o[E+27|0]<<24,i[a+28>>2]=g,g=o[E+20|0]|o[E+21|0]<<8|o[E+22|0]<<16|o[E+23|0]<<24,i[a+16>>2]=o[E+16|0]|o[E+17|0]<<8|o[E+18|0]<<16|o[E+19|0]<<24,i[a+20>>2]=g,g=o[E+4|0]|o[E+5|0]<<8|o[E+6|0]<<16|o[E+7|0]<<24,i[a>>2]=o[0|E]|o[E+1|0]<<8|o[E+2|0]<<16|o[E+3|0]<<24,i[a+4>>2]=g,g=o[E+12|0]|o[E+13|0]<<8|o[E+14|0]<<16|o[E+15|0]<<24,i[a+8>>2]=o[E+8|0]|o[E+9|0]<<8|o[E+10|0]<<16|o[E+11|0]<<24,i[a+12>>2]=g,g=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,Q=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[a+104>>2]=0,i[a+108>>2]=0,i[a+96>>2]=g,i[a+100>>2]=Q;A:{if(!B&_>>>0>=64|B){for(;;){for(g=0,gC(a+32|0,a+96|0,a,0);E=a+32|0,C[A+g|0]=o[E+g|0]^o[I+g|0],C[(Q=1|g)+A|0]=o[Q+E|0]^o[I+Q|0],64!=(0|(g=g+2|0)););if(g=o[a+104|0]+1|0,C[a+104|0]=g,g=o[a+105|0]+(g>>>8|0)|0,C[a+105|0]=g,g=o[a+106|0]+(g>>>8|0)|0,C[a+106|0]=g,g=o[a+107|0]+(g>>>8|0)|0,C[a+107|0]=g,g=o[a+108|0]+(g>>>8|0)|0,C[a+108|0]=g,g=o[a+109|0]+(g>>>8|0)|0,C[a+109|0]=g,g=o[a+110|0]+(g>>>8|0)|0,C[a+110|0]=g,C[a+111|0]=o[a+111|0]+(g>>>8|0),I=I- -64|0,A=A- -64|0,B=B-1|0,!(!(B=(_=_+-64|0)>>>0<4294967232?B+1|0:B)&_>>>0>63|B))break}if(!(B|_))break A}if(g=0,gC(a+32|0,a+96|0,a,0),E=1&_,1!=(0|_)|B)for(_&=62,B=0;c=a+32|0,C[A+g|0]=o[c+g|0]^o[I+g|0],C[(Q=1|g)+A|0]=o[Q+c|0]^o[I+Q|0],g=g+2|0,(0|_)!=(0|(B=B+2|0)););E&&(C[A+g|0]=o[(a+32|0)+g|0]^o[I+g|0])}XC(a+32|0,64),XC(a,32)}return s=a+112|0,0},$j:BB,ak:eB,bk:cB,ck:PC,dk:BB,ek:_B,fk:cB,gk:function(A,I,g,C,B){var Q;return A|=0,I|=0,g|=0,s=Q=s-32|0,yA(Q,C|=0,B|=0,0),A=Xg(A,I,g,C+16|0,Q),s=Q+32|0,0|A},hk:function(A,I,g,C,B,Q,i,o){var E;return A|=0,I|=0,g|=0,C|=0,Q|=0,i|=0,s=E=s-32|0,yA(E,B|=0,o|=0,0),A=mg(o=A,I,(A=0)|g,C,B+16|0,A|Q,i,E),s=E+32|0,0|A},ik:function(A,I,g,C,B,Q){var i;return A|=0,I|=0,g|=0,C|=0,s=i=s-32|0,yA(i,B|=0,Q|=0,0),A=mg(A,I,g,C,B+16|0,0,0,i),s=i+32|0,0|A},jk:PC,kk:K,lk:BA,mk:pB}}(A)}(I)},instantiate:function(A,I){return{then:function(g){var C=new y.Module(A);g({instance:new y.Instance(C,I)})}}},RuntimeError:Error};t=[];var s,h,D,f,p,w,n,k=!1;function F(){var A=e.buffer;B.HEAP8=s=new Int8Array(A),B.HEAP16=D=new Int16Array(A),B.HEAPU8=h=new Uint8Array(A),B.HEAPU16=new Uint16Array(A),B.HEAP32=f=new Int32Array(A),B.HEAPU32=p=new Uint32Array(A),B.HEAPF32=w=new Float32Array(A),B.HEAPF64=n=new Float64Array(A)}var S=[],N=[],G=[],M=0,K=null,U=null;function b(A){throw B.onAbort?.(A),r(A=\"Aborted(\"+A+\")\"),k=!0,A+=\". Build with -sASSERTIONS for more info.\",new y.RuntimeError(A)}var H,Y=A=>A.startsWith(\"file://\");var J={36800:()=>B.getRandomValue(),36836:()=>{if(void 0===B.getRandomValue)try{var A=\"object\"==typeof window?window:self,I=void 0!==A.crypto?A.crypto:A.msCrypto;I=void 0===I?C:I;var g=function(){var A=new Uint32Array(1);return I.getRandomValues(A),A[0]>>>0};g(),B.getRandomValue=g}catch(A){try{var C=require(\"crypto\"),Q=function(){var A=C.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};Q(),B.getRandomValue=Q}catch(A){throw\"No secure random number generator found\"}}}},d=A=>{for(;A.length>0;)A.shift()(B)};B.noExitRuntime;var m,l=\"undefined\"!=typeof TextDecoder?new TextDecoder:void 0,u=(A,I)=>A?((A,I,g)=>{for(var C=I+g,B=I;A[B]&&!(B>=C);)++B;if(B-I>16&&A.buffer&&l)return l.decode(A.subarray(I,B));for(var Q=\"\";I>10,56320|1023&a)}}else Q+=String.fromCharCode((31&i)<<6|o)}else Q+=String.fromCharCode(i)}return Q})(h,A,I):\"\",x=[],v=A=>{var I=(A-e.buffer.byteLength+65535)/65536;try{return e.grow(I),F(),1}catch(A){}},R={b:(A,I,g,C)=>{b(`Assertion failed: ${u(A)}, at: `+[I?u(I):\"unknown filename\",g,C?u(C):\"unknown function\"])},c:()=>{b(\"\")},a:(A,I,g)=>((A,I,g)=>{var C=((A,I)=>{var g;for(x.length=0;g=h[A++];){var C=105!=g;I+=(C&=112!=g)&&I%8?4:0,x.push(112==g?p[I>>2]:105==g?f[I>>2]:n[I>>3]),I+=C?8:4}return x})(I,g);return J[A](...C)})(A,I,g),d:A=>{var I=h.length,g=2147483648;if((A>>>=0)>g)return!1;for(var C,B=1;B<=4;B*=2){var Q=I*(1+.2/B);Q=Math.min(Q,A+100663296);var i=Math.min(g,(C=Math.max(A,Q))+(65536-C%65536)%65536);if(v(i))return!0}return!1}},L=function(){var A={a:R};function I(A,I){var g;return L=A.exports,e=L.e,F(),g=L.f,N.unshift(g),function(A){if(M--,B.monitorRunDependencies?.(M),0==M&&(null!==K&&(clearInterval(K),K=null),U)){var I=U;U=null,I()}}(),L}if(M++,B.monitorRunDependencies?.(M),B.instantiateWasm)try{return B.instantiateWasm(A,I)}catch(A){return r(`Module.instantiateWasm callback failed with error: ${A}`),!1}return H||(H=\"<<< WASM_BINARY_FILE >>>\"),function(A,I,C){(function(A){return Promise.resolve().then((()=>function(A){if(A==H&&t)return new Uint8Array(t);if(g)return g(A);throw\"both async and sync fetching of the wasm failed\"}(A)))})(A).then((A=>y.instantiate(A,I))).then(C,(A=>{r(`failed to asynchronously prepare wasm: ${A}`),b(A)}))}(H,A,(function(A){I(A.instance)})),{}}();function P(){function A(){m||(m=!0,B.calledRun=!0,k||(d(N),B.onRuntimeInitialized?.(),function(){if(B.postRun)for(\"function\"==typeof B.postRun&&(B.postRun=[B.postRun]);B.postRun.length;)A=B.postRun.shift(),G.unshift(A);var A;d(G)}()))}M>0||(function(){if(B.preRun)for(\"function\"==typeof B.preRun&&(B.preRun=[B.preRun]);B.preRun.length;)A=B.preRun.shift(),S.unshift(A);var A;d(S)}(),M>0||(B.setStatus?(B.setStatus(\"Running...\"),setTimeout((function(){setTimeout((function(){B.setStatus(\"\")}),1),A()}),1)):A()))}if(B._crypto_aead_aegis128l_keybytes=()=>(B._crypto_aead_aegis128l_keybytes=L.g)(),B._crypto_aead_aegis128l_nsecbytes=()=>(B._crypto_aead_aegis128l_nsecbytes=L.h)(),B._crypto_aead_aegis128l_npubbytes=()=>(B._crypto_aead_aegis128l_npubbytes=L.i)(),B._crypto_aead_aegis128l_abytes=()=>(B._crypto_aead_aegis128l_abytes=L.j)(),B._crypto_aead_aegis128l_messagebytes_max=()=>(B._crypto_aead_aegis128l_messagebytes_max=L.k)(),B._crypto_aead_aegis128l_keygen=A=>(B._crypto_aead_aegis128l_keygen=L.l)(A),B._crypto_aead_aegis128l_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_encrypt=L.m)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis128l_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_aegis128l_encrypt_detached=L.n)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_aegis128l_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_decrypt=L.o)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis128l_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_decrypt_detached=L.p)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_keybytes=()=>(B._crypto_aead_aegis256_keybytes=L.q)(),B._crypto_aead_aegis256_nsecbytes=()=>(B._crypto_aead_aegis256_nsecbytes=L.r)(),B._crypto_aead_aegis256_npubbytes=()=>(B._crypto_aead_aegis256_npubbytes=L.s)(),B._crypto_aead_aegis256_abytes=()=>(B._crypto_aead_aegis256_abytes=L.t)(),B._crypto_aead_aegis256_messagebytes_max=()=>(B._crypto_aead_aegis256_messagebytes_max=L.u)(),B._crypto_aead_aegis256_keygen=A=>(B._crypto_aead_aegis256_keygen=L.v)(A),B._crypto_aead_aegis256_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_encrypt=L.w)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_aegis256_encrypt_detached=L.x)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_aegis256_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_decrypt=L.y)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_decrypt_detached=L.z)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aes256gcm_is_available=()=>(B._crypto_aead_aes256gcm_is_available=L.A)(),B._crypto_aead_chacha20poly1305_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_chacha20poly1305_encrypt_detached=L.B)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_chacha20poly1305_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_encrypt=L.C)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_chacha20poly1305_ietf_encrypt_detached=L.D)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_chacha20poly1305_ietf_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_encrypt=L.E)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_decrypt_detached=L.F)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_decrypt=L.G)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_decrypt_detached=L.H)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_decrypt=L.I)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(B._crypto_aead_chacha20poly1305_ietf_keybytes=L.J)(),B._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(B._crypto_aead_chacha20poly1305_ietf_npubbytes=L.K)(),B._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(B._crypto_aead_chacha20poly1305_ietf_nsecbytes=L.L)(),B._crypto_aead_chacha20poly1305_ietf_abytes=()=>(B._crypto_aead_chacha20poly1305_ietf_abytes=L.M)(),B._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(B._crypto_aead_chacha20poly1305_ietf_messagebytes_max=L.N)(),B._crypto_aead_chacha20poly1305_ietf_keygen=A=>(B._crypto_aead_chacha20poly1305_ietf_keygen=L.O)(A),B._crypto_aead_chacha20poly1305_keybytes=()=>(B._crypto_aead_chacha20poly1305_keybytes=L.P)(),B._crypto_aead_chacha20poly1305_npubbytes=()=>(B._crypto_aead_chacha20poly1305_npubbytes=L.Q)(),B._crypto_aead_chacha20poly1305_nsecbytes=()=>(B._crypto_aead_chacha20poly1305_nsecbytes=L.R)(),B._crypto_aead_chacha20poly1305_abytes=()=>(B._crypto_aead_chacha20poly1305_abytes=L.S)(),B._crypto_aead_chacha20poly1305_messagebytes_max=()=>(B._crypto_aead_chacha20poly1305_messagebytes_max=L.T)(),B._crypto_aead_chacha20poly1305_keygen=A=>(B._crypto_aead_chacha20poly1305_keygen=L.U)(A),B._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=L.V)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_xchacha20poly1305_ietf_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_encrypt=L.W)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=L.X)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_decrypt=L.Y)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_keybytes=L.Z)(),B._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_npubbytes=L._)(),B._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_nsecbytes=L.$)(),B._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_abytes=L.aa)(),B._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(B._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=L.ba)(),B._crypto_aead_xchacha20poly1305_ietf_keygen=A=>(B._crypto_aead_xchacha20poly1305_ietf_keygen=L.ca)(A),B._crypto_auth_bytes=()=>(B._crypto_auth_bytes=L.da)(),B._crypto_auth_keybytes=()=>(B._crypto_auth_keybytes=L.ea)(),B._crypto_auth_primitive=()=>(B._crypto_auth_primitive=L.fa)(),B._crypto_auth=(A,I,g,C,Q)=>(B._crypto_auth=L.ga)(A,I,g,C,Q),B._crypto_auth_verify=(A,I,g,C,Q)=>(B._crypto_auth_verify=L.ha)(A,I,g,C,Q),B._crypto_auth_keygen=A=>(B._crypto_auth_keygen=L.ia)(A),B._crypto_auth_hmacsha256_bytes=()=>(B._crypto_auth_hmacsha256_bytes=L.ja)(),B._crypto_auth_hmacsha256_keybytes=()=>(B._crypto_auth_hmacsha256_keybytes=L.ka)(),B._crypto_auth_hmacsha256_statebytes=()=>(B._crypto_auth_hmacsha256_statebytes=L.la)(),B._crypto_auth_hmacsha256_keygen=A=>(B._crypto_auth_hmacsha256_keygen=L.ma)(A),B._crypto_auth_hmacsha256_init=(A,I,g)=>(B._crypto_auth_hmacsha256_init=L.na)(A,I,g),B._crypto_auth_hmacsha256_update=(A,I,g,C)=>(B._crypto_auth_hmacsha256_update=L.oa)(A,I,g,C),B._crypto_auth_hmacsha256_final=(A,I)=>(B._crypto_auth_hmacsha256_final=L.pa)(A,I),B._crypto_auth_hmacsha256=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha256=L.qa)(A,I,g,C,Q),B._crypto_auth_hmacsha256_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha256_verify=L.ra)(A,I,g,C,Q),B._crypto_auth_hmacsha512_bytes=()=>(B._crypto_auth_hmacsha512_bytes=L.sa)(),B._crypto_auth_hmacsha512_keybytes=()=>(B._crypto_auth_hmacsha512_keybytes=L.ta)(),B._crypto_auth_hmacsha512_statebytes=()=>(B._crypto_auth_hmacsha512_statebytes=L.ua)(),B._crypto_auth_hmacsha512_keygen=A=>(B._crypto_auth_hmacsha512_keygen=L.va)(A),B._crypto_auth_hmacsha512_init=(A,I,g)=>(B._crypto_auth_hmacsha512_init=L.wa)(A,I,g),B._crypto_auth_hmacsha512_update=(A,I,g,C)=>(B._crypto_auth_hmacsha512_update=L.xa)(A,I,g,C),B._crypto_auth_hmacsha512_final=(A,I)=>(B._crypto_auth_hmacsha512_final=L.ya)(A,I),B._crypto_auth_hmacsha512=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512=L.za)(A,I,g,C,Q),B._crypto_auth_hmacsha512_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512_verify=L.Aa)(A,I,g,C,Q),B._crypto_auth_hmacsha512256_bytes=()=>(B._crypto_auth_hmacsha512256_bytes=L.Ba)(),B._crypto_auth_hmacsha512256_keybytes=()=>(B._crypto_auth_hmacsha512256_keybytes=L.Ca)(),B._crypto_auth_hmacsha512256_statebytes=()=>(B._crypto_auth_hmacsha512256_statebytes=L.Da)(),B._crypto_auth_hmacsha512256_keygen=A=>(B._crypto_auth_hmacsha512256_keygen=L.Ea)(A),B._crypto_auth_hmacsha512256_init=(A,I,g)=>(B._crypto_auth_hmacsha512256_init=L.Fa)(A,I,g),B._crypto_auth_hmacsha512256_update=(A,I,g,C)=>(B._crypto_auth_hmacsha512256_update=L.Ga)(A,I,g,C),B._crypto_auth_hmacsha512256_final=(A,I)=>(B._crypto_auth_hmacsha512256_final=L.Ha)(A,I),B._crypto_auth_hmacsha512256=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512256=L.Ia)(A,I,g,C,Q),B._crypto_auth_hmacsha512256_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512256_verify=L.Ja)(A,I,g,C,Q),B._crypto_box_seedbytes=()=>(B._crypto_box_seedbytes=L.Ka)(),B._crypto_box_publickeybytes=()=>(B._crypto_box_publickeybytes=L.La)(),B._crypto_box_secretkeybytes=()=>(B._crypto_box_secretkeybytes=L.Ma)(),B._crypto_box_beforenmbytes=()=>(B._crypto_box_beforenmbytes=L.Na)(),B._crypto_box_noncebytes=()=>(B._crypto_box_noncebytes=L.Oa)(),B._crypto_box_zerobytes=()=>(B._crypto_box_zerobytes=L.Pa)(),B._crypto_box_boxzerobytes=()=>(B._crypto_box_boxzerobytes=L.Qa)(),B._crypto_box_macbytes=()=>(B._crypto_box_macbytes=L.Ra)(),B._crypto_box_messagebytes_max=()=>(B._crypto_box_messagebytes_max=L.Sa)(),B._crypto_box_primitive=()=>(B._crypto_box_primitive=L.Ta)(),B._crypto_box_seed_keypair=(A,I,g)=>(B._crypto_box_seed_keypair=L.Ua)(A,I,g),B._crypto_box_keypair=(A,I)=>(B._crypto_box_keypair=L.Va)(A,I),B._crypto_box_beforenm=(A,I,g)=>(B._crypto_box_beforenm=L.Wa)(A,I,g),B._crypto_box_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_afternm=L.Xa)(A,I,g,C,Q,i),B._crypto_box_open_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_open_afternm=L.Ya)(A,I,g,C,Q,i),B._crypto_box=(A,I,g,C,Q,i,o)=>(B._crypto_box=L.Za)(A,I,g,C,Q,i,o),B._crypto_box_open=(A,I,g,C,Q,i,o)=>(B._crypto_box_open=L._a)(A,I,g,C,Q,i,o),B._crypto_box_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_detached_afternm=L.$a)(A,I,g,C,Q,i,o),B._crypto_box_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_detached=L.ab)(A,I,g,C,Q,i,o,E),B._crypto_box_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_easy_afternm=L.bb)(A,I,g,C,Q,i),B._crypto_box_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_easy=L.cb)(A,I,g,C,Q,i,o),B._crypto_box_open_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_open_detached_afternm=L.db)(A,I,g,C,Q,i,o),B._crypto_box_open_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_open_detached=L.eb)(A,I,g,C,Q,i,o,E),B._crypto_box_open_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_open_easy_afternm=L.fb)(A,I,g,C,Q,i),B._crypto_box_open_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_open_easy=L.gb)(A,I,g,C,Q,i,o),B._crypto_box_seal=(A,I,g,C,Q)=>(B._crypto_box_seal=L.hb)(A,I,g,C,Q),B._crypto_box_seal_open=(A,I,g,C,Q,i)=>(B._crypto_box_seal_open=L.ib)(A,I,g,C,Q,i),B._crypto_box_sealbytes=()=>(B._crypto_box_sealbytes=L.jb)(),B._crypto_box_curve25519xsalsa20poly1305_seed_keypair=(A,I,g)=>(B._crypto_box_curve25519xsalsa20poly1305_seed_keypair=L.kb)(A,I,g),B._crypto_box_curve25519xsalsa20poly1305_keypair=(A,I)=>(B._crypto_box_curve25519xsalsa20poly1305_keypair=L.lb)(A,I),B._crypto_box_curve25519xsalsa20poly1305_beforenm=(A,I,g)=>(B._crypto_box_curve25519xsalsa20poly1305_beforenm=L.mb)(A,I,g),B._crypto_box_curve25519xsalsa20poly1305_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xsalsa20poly1305_afternm=L.nb)(A,I,g,C,Q,i),B._crypto_box_curve25519xsalsa20poly1305_open_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xsalsa20poly1305_open_afternm=L.ob)(A,I,g,C,Q,i),B._crypto_box_curve25519xsalsa20poly1305=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xsalsa20poly1305=L.pb)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xsalsa20poly1305_open=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xsalsa20poly1305_open=L.qb)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xsalsa20poly1305_seedbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_seedbytes=L.rb)(),B._crypto_box_curve25519xsalsa20poly1305_publickeybytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_publickeybytes=L.sb)(),B._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=L.tb)(),B._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=L.ub)(),B._crypto_box_curve25519xsalsa20poly1305_noncebytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_noncebytes=L.vb)(),B._crypto_box_curve25519xsalsa20poly1305_zerobytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_zerobytes=L.wb)(),B._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=L.xb)(),B._crypto_box_curve25519xsalsa20poly1305_macbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_macbytes=L.yb)(),B._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=()=>(B._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=L.zb)(),B._crypto_core_hchacha20=(A,I,g,C)=>(B._crypto_core_hchacha20=L.Ab)(A,I,g,C),B._crypto_core_hchacha20_outputbytes=()=>(B._crypto_core_hchacha20_outputbytes=L.Bb)(),B._crypto_core_hchacha20_inputbytes=()=>(B._crypto_core_hchacha20_inputbytes=L.Cb)(),B._crypto_core_hchacha20_keybytes=()=>(B._crypto_core_hchacha20_keybytes=L.Db)(),B._crypto_core_hchacha20_constbytes=()=>(B._crypto_core_hchacha20_constbytes=L.Eb)(),B._crypto_core_hsalsa20=(A,I,g,C)=>(B._crypto_core_hsalsa20=L.Fb)(A,I,g,C),B._crypto_core_hsalsa20_outputbytes=()=>(B._crypto_core_hsalsa20_outputbytes=L.Gb)(),B._crypto_core_hsalsa20_inputbytes=()=>(B._crypto_core_hsalsa20_inputbytes=L.Hb)(),B._crypto_core_hsalsa20_keybytes=()=>(B._crypto_core_hsalsa20_keybytes=L.Ib)(),B._crypto_core_hsalsa20_constbytes=()=>(B._crypto_core_hsalsa20_constbytes=L.Jb)(),B._crypto_core_salsa20=(A,I,g,C)=>(B._crypto_core_salsa20=L.Kb)(A,I,g,C),B._crypto_core_salsa20_outputbytes=()=>(B._crypto_core_salsa20_outputbytes=L.Lb)(),B._crypto_core_salsa20_inputbytes=()=>(B._crypto_core_salsa20_inputbytes=L.Mb)(),B._crypto_core_salsa20_keybytes=()=>(B._crypto_core_salsa20_keybytes=L.Nb)(),B._crypto_core_salsa20_constbytes=()=>(B._crypto_core_salsa20_constbytes=L.Ob)(),B._crypto_core_salsa2012=(A,I,g,C)=>(B._crypto_core_salsa2012=L.Pb)(A,I,g,C),B._crypto_core_salsa2012_outputbytes=()=>(B._crypto_core_salsa2012_outputbytes=L.Qb)(),B._crypto_core_salsa2012_inputbytes=()=>(B._crypto_core_salsa2012_inputbytes=L.Rb)(),B._crypto_core_salsa2012_keybytes=()=>(B._crypto_core_salsa2012_keybytes=L.Sb)(),B._crypto_core_salsa2012_constbytes=()=>(B._crypto_core_salsa2012_constbytes=L.Tb)(),B._crypto_core_salsa208=(A,I,g,C)=>(B._crypto_core_salsa208=L.Ub)(A,I,g,C),B._crypto_core_salsa208_outputbytes=()=>(B._crypto_core_salsa208_outputbytes=L.Vb)(),B._crypto_core_salsa208_inputbytes=()=>(B._crypto_core_salsa208_inputbytes=L.Wb)(),B._crypto_core_salsa208_keybytes=()=>(B._crypto_core_salsa208_keybytes=L.Xb)(),B._crypto_core_salsa208_constbytes=()=>(B._crypto_core_salsa208_constbytes=L.Yb)(),B._crypto_generichash_bytes_min=()=>(B._crypto_generichash_bytes_min=L.Zb)(),B._crypto_generichash_bytes_max=()=>(B._crypto_generichash_bytes_max=L._b)(),B._crypto_generichash_bytes=()=>(B._crypto_generichash_bytes=L.$b)(),B._crypto_generichash_keybytes_min=()=>(B._crypto_generichash_keybytes_min=L.ac)(),B._crypto_generichash_keybytes_max=()=>(B._crypto_generichash_keybytes_max=L.bc)(),B._crypto_generichash_keybytes=()=>(B._crypto_generichash_keybytes=L.cc)(),B._crypto_generichash_primitive=()=>(B._crypto_generichash_primitive=L.dc)(),B._crypto_generichash_statebytes=()=>(B._crypto_generichash_statebytes=L.ec)(),B._crypto_generichash=(A,I,g,C,Q,i,o)=>(B._crypto_generichash=L.fc)(A,I,g,C,Q,i,o),B._crypto_generichash_init=(A,I,g,C)=>(B._crypto_generichash_init=L.gc)(A,I,g,C),B._crypto_generichash_update=(A,I,g,C)=>(B._crypto_generichash_update=L.hc)(A,I,g,C),B._crypto_generichash_final=(A,I,g)=>(B._crypto_generichash_final=L.ic)(A,I,g),B._crypto_generichash_keygen=A=>(B._crypto_generichash_keygen=L.jc)(A),B._crypto_generichash_blake2b_bytes_min=()=>(B._crypto_generichash_blake2b_bytes_min=L.kc)(),B._crypto_generichash_blake2b_bytes_max=()=>(B._crypto_generichash_blake2b_bytes_max=L.lc)(),B._crypto_generichash_blake2b_bytes=()=>(B._crypto_generichash_blake2b_bytes=L.mc)(),B._crypto_generichash_blake2b_keybytes_min=()=>(B._crypto_generichash_blake2b_keybytes_min=L.nc)(),B._crypto_generichash_blake2b_keybytes_max=()=>(B._crypto_generichash_blake2b_keybytes_max=L.oc)(),B._crypto_generichash_blake2b_keybytes=()=>(B._crypto_generichash_blake2b_keybytes=L.pc)(),B._crypto_generichash_blake2b_saltbytes=()=>(B._crypto_generichash_blake2b_saltbytes=L.qc)(),B._crypto_generichash_blake2b_personalbytes=()=>(B._crypto_generichash_blake2b_personalbytes=L.rc)(),B._crypto_generichash_blake2b_statebytes=()=>(B._crypto_generichash_blake2b_statebytes=L.sc)(),B._crypto_generichash_blake2b_keygen=A=>(B._crypto_generichash_blake2b_keygen=L.tc)(A),B._crypto_generichash_blake2b=(A,I,g,C,Q,i,o)=>(B._crypto_generichash_blake2b=L.uc)(A,I,g,C,Q,i,o),B._crypto_generichash_blake2b_salt_personal=(A,I,g,C,Q,i,o,E,a)=>(B._crypto_generichash_blake2b_salt_personal=L.vc)(A,I,g,C,Q,i,o,E,a),B._crypto_generichash_blake2b_init=(A,I,g,C)=>(B._crypto_generichash_blake2b_init=L.wc)(A,I,g,C),B._crypto_generichash_blake2b_init_salt_personal=(A,I,g,C,Q,i)=>(B._crypto_generichash_blake2b_init_salt_personal=L.xc)(A,I,g,C,Q,i),B._crypto_generichash_blake2b_update=(A,I,g,C)=>(B._crypto_generichash_blake2b_update=L.yc)(A,I,g,C),B._crypto_generichash_blake2b_final=(A,I,g)=>(B._crypto_generichash_blake2b_final=L.zc)(A,I,g),B._crypto_hash_bytes=()=>(B._crypto_hash_bytes=L.Ac)(),B._crypto_hash=(A,I,g,C)=>(B._crypto_hash=L.Bc)(A,I,g,C),B._crypto_hash_primitive=()=>(B._crypto_hash_primitive=L.Cc)(),B._crypto_hash_sha256_bytes=()=>(B._crypto_hash_sha256_bytes=L.Dc)(),B._crypto_hash_sha256_statebytes=()=>(B._crypto_hash_sha256_statebytes=L.Ec)(),B._crypto_hash_sha256_init=A=>(B._crypto_hash_sha256_init=L.Fc)(A),B._crypto_hash_sha256_update=(A,I,g,C)=>(B._crypto_hash_sha256_update=L.Gc)(A,I,g,C),B._crypto_hash_sha256_final=(A,I)=>(B._crypto_hash_sha256_final=L.Hc)(A,I),B._crypto_hash_sha256=(A,I,g,C)=>(B._crypto_hash_sha256=L.Ic)(A,I,g,C),B._crypto_hash_sha512_bytes=()=>(B._crypto_hash_sha512_bytes=L.Jc)(),B._crypto_hash_sha512_statebytes=()=>(B._crypto_hash_sha512_statebytes=L.Kc)(),B._crypto_hash_sha512_init=A=>(B._crypto_hash_sha512_init=L.Lc)(A),B._crypto_hash_sha512_update=(A,I,g,C)=>(B._crypto_hash_sha512_update=L.Mc)(A,I,g,C),B._crypto_hash_sha512_final=(A,I)=>(B._crypto_hash_sha512_final=L.Nc)(A,I),B._crypto_hash_sha512=(A,I,g,C)=>(B._crypto_hash_sha512=L.Oc)(A,I,g,C),B._crypto_kdf_blake2b_bytes_min=()=>(B._crypto_kdf_blake2b_bytes_min=L.Pc)(),B._crypto_kdf_blake2b_bytes_max=()=>(B._crypto_kdf_blake2b_bytes_max=L.Qc)(),B._crypto_kdf_blake2b_contextbytes=()=>(B._crypto_kdf_blake2b_contextbytes=L.Rc)(),B._crypto_kdf_blake2b_keybytes=()=>(B._crypto_kdf_blake2b_keybytes=L.Sc)(),B._crypto_kdf_blake2b_derive_from_key=(A,I,g,C,Q,i)=>(B._crypto_kdf_blake2b_derive_from_key=L.Tc)(A,I,g,C,Q,i),B._crypto_kdf_primitive=()=>(B._crypto_kdf_primitive=L.Uc)(),B._crypto_kdf_bytes_min=()=>(B._crypto_kdf_bytes_min=L.Vc)(),B._crypto_kdf_bytes_max=()=>(B._crypto_kdf_bytes_max=L.Wc)(),B._crypto_kdf_contextbytes=()=>(B._crypto_kdf_contextbytes=L.Xc)(),B._crypto_kdf_keybytes=()=>(B._crypto_kdf_keybytes=L.Yc)(),B._crypto_kdf_derive_from_key=(A,I,g,C,Q,i)=>(B._crypto_kdf_derive_from_key=L.Zc)(A,I,g,C,Q,i),B._crypto_kdf_keygen=A=>(B._crypto_kdf_keygen=L._c)(A),B._crypto_kdf_hkdf_sha256_extract_init=(A,I,g)=>(B._crypto_kdf_hkdf_sha256_extract_init=L.$c)(A,I,g),B._crypto_kdf_hkdf_sha256_extract_update=(A,I,g)=>(B._crypto_kdf_hkdf_sha256_extract_update=L.ad)(A,I,g),B._crypto_kdf_hkdf_sha256_extract_final=(A,I)=>(B._crypto_kdf_hkdf_sha256_extract_final=L.bd)(A,I),B._crypto_kdf_hkdf_sha256_extract=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha256_extract=L.cd)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha256_keygen=A=>(B._crypto_kdf_hkdf_sha256_keygen=L.dd)(A),B._crypto_kdf_hkdf_sha256_expand=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha256_expand=L.ed)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha256_keybytes=()=>(B._crypto_kdf_hkdf_sha256_keybytes=L.fd)(),B._crypto_kdf_hkdf_sha256_bytes_min=()=>(B._crypto_kdf_hkdf_sha256_bytes_min=L.gd)(),B._crypto_kdf_hkdf_sha256_bytes_max=()=>(B._crypto_kdf_hkdf_sha256_bytes_max=L.hd)(),B._crypto_kdf_hkdf_sha256_statebytes=()=>(B._crypto_kdf_hkdf_sha256_statebytes=L.id)(),B._crypto_kdf_hkdf_sha512_extract_init=(A,I,g)=>(B._crypto_kdf_hkdf_sha512_extract_init=L.jd)(A,I,g),B._crypto_kdf_hkdf_sha512_extract_update=(A,I,g)=>(B._crypto_kdf_hkdf_sha512_extract_update=L.kd)(A,I,g),B._crypto_kdf_hkdf_sha512_extract_final=(A,I)=>(B._crypto_kdf_hkdf_sha512_extract_final=L.ld)(A,I),B._crypto_kdf_hkdf_sha512_extract=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha512_extract=L.md)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha512_keygen=A=>(B._crypto_kdf_hkdf_sha512_keygen=L.nd)(A),B._crypto_kdf_hkdf_sha512_expand=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha512_expand=L.od)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha512_keybytes=()=>(B._crypto_kdf_hkdf_sha512_keybytes=L.pd)(),B._crypto_kdf_hkdf_sha512_bytes_min=()=>(B._crypto_kdf_hkdf_sha512_bytes_min=L.qd)(),B._crypto_kdf_hkdf_sha512_bytes_max=()=>(B._crypto_kdf_hkdf_sha512_bytes_max=L.rd)(),B._crypto_kdf_hkdf_sha512_statebytes=()=>(B._crypto_kdf_hkdf_sha512_statebytes=L.sd)(),B._crypto_kx_seed_keypair=(A,I,g)=>(B._crypto_kx_seed_keypair=L.td)(A,I,g),B._crypto_kx_keypair=(A,I)=>(B._crypto_kx_keypair=L.ud)(A,I),B._crypto_kx_client_session_keys=(A,I,g,C,Q)=>(B._crypto_kx_client_session_keys=L.vd)(A,I,g,C,Q),B._crypto_kx_server_session_keys=(A,I,g,C,Q)=>(B._crypto_kx_server_session_keys=L.wd)(A,I,g,C,Q),B._crypto_kx_publickeybytes=()=>(B._crypto_kx_publickeybytes=L.xd)(),B._crypto_kx_secretkeybytes=()=>(B._crypto_kx_secretkeybytes=L.yd)(),B._crypto_kx_seedbytes=()=>(B._crypto_kx_seedbytes=L.zd)(),B._crypto_kx_sessionkeybytes=()=>(B._crypto_kx_sessionkeybytes=L.Ad)(),B._crypto_kx_primitive=()=>(B._crypto_kx_primitive=L.Bd)(),B._crypto_onetimeauth_statebytes=()=>(B._crypto_onetimeauth_statebytes=L.Cd)(),B._crypto_onetimeauth_bytes=()=>(B._crypto_onetimeauth_bytes=L.Dd)(),B._crypto_onetimeauth_keybytes=()=>(B._crypto_onetimeauth_keybytes=L.Ed)(),B._crypto_onetimeauth=(A,I,g,C,Q)=>(B._crypto_onetimeauth=L.Fd)(A,I,g,C,Q),B._crypto_onetimeauth_verify=(A,I,g,C,Q)=>(B._crypto_onetimeauth_verify=L.Gd)(A,I,g,C,Q),B._crypto_onetimeauth_init=(A,I)=>(B._crypto_onetimeauth_init=L.Hd)(A,I),B._crypto_onetimeauth_update=(A,I,g,C)=>(B._crypto_onetimeauth_update=L.Id)(A,I,g,C),B._crypto_onetimeauth_final=(A,I)=>(B._crypto_onetimeauth_final=L.Jd)(A,I),B._crypto_onetimeauth_primitive=()=>(B._crypto_onetimeauth_primitive=L.Kd)(),B._crypto_onetimeauth_keygen=A=>(B._crypto_onetimeauth_keygen=L.Ld)(A),B._crypto_onetimeauth_poly1305=(A,I,g,C,Q)=>(B._crypto_onetimeauth_poly1305=L.Md)(A,I,g,C,Q),B._crypto_onetimeauth_poly1305_verify=(A,I,g,C,Q)=>(B._crypto_onetimeauth_poly1305_verify=L.Nd)(A,I,g,C,Q),B._crypto_onetimeauth_poly1305_init=(A,I)=>(B._crypto_onetimeauth_poly1305_init=L.Od)(A,I),B._crypto_onetimeauth_poly1305_update=(A,I,g,C)=>(B._crypto_onetimeauth_poly1305_update=L.Pd)(A,I,g,C),B._crypto_onetimeauth_poly1305_final=(A,I)=>(B._crypto_onetimeauth_poly1305_final=L.Qd)(A,I),B._crypto_onetimeauth_poly1305_bytes=()=>(B._crypto_onetimeauth_poly1305_bytes=L.Rd)(),B._crypto_onetimeauth_poly1305_keybytes=()=>(B._crypto_onetimeauth_poly1305_keybytes=L.Sd)(),B._crypto_onetimeauth_poly1305_statebytes=()=>(B._crypto_onetimeauth_poly1305_statebytes=L.Td)(),B._crypto_onetimeauth_poly1305_keygen=A=>(B._crypto_onetimeauth_poly1305_keygen=L.Ud)(A),B._crypto_pwhash_argon2i_alg_argon2i13=()=>(B._crypto_pwhash_argon2i_alg_argon2i13=L.Vd)(),B._crypto_pwhash_argon2i_bytes_min=()=>(B._crypto_pwhash_argon2i_bytes_min=L.Wd)(),B._crypto_pwhash_argon2i_bytes_max=()=>(B._crypto_pwhash_argon2i_bytes_max=L.Xd)(),B._crypto_pwhash_argon2i_passwd_min=()=>(B._crypto_pwhash_argon2i_passwd_min=L.Yd)(),B._crypto_pwhash_argon2i_passwd_max=()=>(B._crypto_pwhash_argon2i_passwd_max=L.Zd)(),B._crypto_pwhash_argon2i_saltbytes=()=>(B._crypto_pwhash_argon2i_saltbytes=L._d)(),B._crypto_pwhash_argon2i_strbytes=()=>(B._crypto_pwhash_argon2i_strbytes=L.$d)(),B._crypto_pwhash_argon2i_strprefix=()=>(B._crypto_pwhash_argon2i_strprefix=L.ae)(),B._crypto_pwhash_argon2i_opslimit_min=()=>(B._crypto_pwhash_argon2i_opslimit_min=L.be)(),B._crypto_pwhash_argon2i_opslimit_max=()=>(B._crypto_pwhash_argon2i_opslimit_max=L.ce)(),B._crypto_pwhash_argon2i_memlimit_min=()=>(B._crypto_pwhash_argon2i_memlimit_min=L.de)(),B._crypto_pwhash_argon2i_memlimit_max=()=>(B._crypto_pwhash_argon2i_memlimit_max=L.ee)(),B._crypto_pwhash_argon2i_opslimit_interactive=()=>(B._crypto_pwhash_argon2i_opslimit_interactive=L.fe)(),B._crypto_pwhash_argon2i_memlimit_interactive=()=>(B._crypto_pwhash_argon2i_memlimit_interactive=L.ge)(),B._crypto_pwhash_argon2i_opslimit_moderate=()=>(B._crypto_pwhash_argon2i_opslimit_moderate=L.he)(),B._crypto_pwhash_argon2i_memlimit_moderate=()=>(B._crypto_pwhash_argon2i_memlimit_moderate=L.ie)(),B._crypto_pwhash_argon2i_opslimit_sensitive=()=>(B._crypto_pwhash_argon2i_opslimit_sensitive=L.je)(),B._crypto_pwhash_argon2i_memlimit_sensitive=()=>(B._crypto_pwhash_argon2i_memlimit_sensitive=L.ke)(),B._crypto_pwhash_argon2i=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash_argon2i=L.le)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_argon2i_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_argon2i_str=L.me)(A,I,g,C,Q,i,o),B._crypto_pwhash_argon2i_str_verify=(A,I,g,C)=>(B._crypto_pwhash_argon2i_str_verify=L.ne)(A,I,g,C),B._crypto_pwhash_argon2i_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_argon2i_str_needs_rehash=L.oe)(A,I,g,C),B._crypto_pwhash_argon2id_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_argon2id_str_needs_rehash=L.pe)(A,I,g,C),B._crypto_pwhash_argon2id_alg_argon2id13=()=>(B._crypto_pwhash_argon2id_alg_argon2id13=L.qe)(),B._crypto_pwhash_argon2id_bytes_min=()=>(B._crypto_pwhash_argon2id_bytes_min=L.re)(),B._crypto_pwhash_argon2id_bytes_max=()=>(B._crypto_pwhash_argon2id_bytes_max=L.se)(),B._crypto_pwhash_argon2id_passwd_min=()=>(B._crypto_pwhash_argon2id_passwd_min=L.te)(),B._crypto_pwhash_argon2id_passwd_max=()=>(B._crypto_pwhash_argon2id_passwd_max=L.ue)(),B._crypto_pwhash_argon2id_saltbytes=()=>(B._crypto_pwhash_argon2id_saltbytes=L.ve)(),B._crypto_pwhash_argon2id_strbytes=()=>(B._crypto_pwhash_argon2id_strbytes=L.we)(),B._crypto_pwhash_argon2id_strprefix=()=>(B._crypto_pwhash_argon2id_strprefix=L.xe)(),B._crypto_pwhash_argon2id_opslimit_min=()=>(B._crypto_pwhash_argon2id_opslimit_min=L.ye)(),B._crypto_pwhash_argon2id_opslimit_max=()=>(B._crypto_pwhash_argon2id_opslimit_max=L.ze)(),B._crypto_pwhash_argon2id_memlimit_min=()=>(B._crypto_pwhash_argon2id_memlimit_min=L.Ae)(),B._crypto_pwhash_argon2id_memlimit_max=()=>(B._crypto_pwhash_argon2id_memlimit_max=L.Be)(),B._crypto_pwhash_argon2id_opslimit_interactive=()=>(B._crypto_pwhash_argon2id_opslimit_interactive=L.Ce)(),B._crypto_pwhash_argon2id_memlimit_interactive=()=>(B._crypto_pwhash_argon2id_memlimit_interactive=L.De)(),B._crypto_pwhash_argon2id_opslimit_moderate=()=>(B._crypto_pwhash_argon2id_opslimit_moderate=L.Ee)(),B._crypto_pwhash_argon2id_memlimit_moderate=()=>(B._crypto_pwhash_argon2id_memlimit_moderate=L.Fe)(),B._crypto_pwhash_argon2id_opslimit_sensitive=()=>(B._crypto_pwhash_argon2id_opslimit_sensitive=L.Ge)(),B._crypto_pwhash_argon2id_memlimit_sensitive=()=>(B._crypto_pwhash_argon2id_memlimit_sensitive=L.He)(),B._crypto_pwhash_argon2id=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash_argon2id=L.Ie)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_argon2id_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_argon2id_str=L.Je)(A,I,g,C,Q,i,o),B._crypto_pwhash_argon2id_str_verify=(A,I,g,C)=>(B._crypto_pwhash_argon2id_str_verify=L.Ke)(A,I,g,C),B._crypto_pwhash_alg_argon2i13=()=>(B._crypto_pwhash_alg_argon2i13=L.Le)(),B._crypto_pwhash_alg_argon2id13=()=>(B._crypto_pwhash_alg_argon2id13=L.Me)(),B._crypto_pwhash_alg_default=()=>(B._crypto_pwhash_alg_default=L.Ne)(),B._crypto_pwhash_bytes_min=()=>(B._crypto_pwhash_bytes_min=L.Oe)(),B._crypto_pwhash_bytes_max=()=>(B._crypto_pwhash_bytes_max=L.Pe)(),B._crypto_pwhash_passwd_min=()=>(B._crypto_pwhash_passwd_min=L.Qe)(),B._crypto_pwhash_passwd_max=()=>(B._crypto_pwhash_passwd_max=L.Re)(),B._crypto_pwhash_saltbytes=()=>(B._crypto_pwhash_saltbytes=L.Se)(),B._crypto_pwhash_strbytes=()=>(B._crypto_pwhash_strbytes=L.Te)(),B._crypto_pwhash_strprefix=()=>(B._crypto_pwhash_strprefix=L.Ue)(),B._crypto_pwhash_opslimit_min=()=>(B._crypto_pwhash_opslimit_min=L.Ve)(),B._crypto_pwhash_opslimit_max=()=>(B._crypto_pwhash_opslimit_max=L.We)(),B._crypto_pwhash_memlimit_min=()=>(B._crypto_pwhash_memlimit_min=L.Xe)(),B._crypto_pwhash_memlimit_max=()=>(B._crypto_pwhash_memlimit_max=L.Ye)(),B._crypto_pwhash_opslimit_interactive=()=>(B._crypto_pwhash_opslimit_interactive=L.Ze)(),B._crypto_pwhash_memlimit_interactive=()=>(B._crypto_pwhash_memlimit_interactive=L._e)(),B._crypto_pwhash_opslimit_moderate=()=>(B._crypto_pwhash_opslimit_moderate=L.$e)(),B._crypto_pwhash_memlimit_moderate=()=>(B._crypto_pwhash_memlimit_moderate=L.af)(),B._crypto_pwhash_opslimit_sensitive=()=>(B._crypto_pwhash_opslimit_sensitive=L.bf)(),B._crypto_pwhash_memlimit_sensitive=()=>(B._crypto_pwhash_memlimit_sensitive=L.cf)(),B._crypto_pwhash=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash=L.df)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_str=L.ef)(A,I,g,C,Q,i,o),B._crypto_pwhash_str_alg=(A,I,g,C,Q,i,o,E)=>(B._crypto_pwhash_str_alg=L.ff)(A,I,g,C,Q,i,o,E),B._crypto_pwhash_str_verify=(A,I,g,C)=>(B._crypto_pwhash_str_verify=L.gf)(A,I,g,C),B._crypto_pwhash_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_str_needs_rehash=L.hf)(A,I,g,C),B._crypto_pwhash_primitive=()=>(B._crypto_pwhash_primitive=L.jf)(),B._crypto_scalarmult_primitive=()=>(B._crypto_scalarmult_primitive=L.kf)(),B._crypto_scalarmult_base=(A,I)=>(B._crypto_scalarmult_base=L.lf)(A,I),B._crypto_scalarmult=(A,I,g)=>(B._crypto_scalarmult=L.mf)(A,I,g),B._crypto_scalarmult_bytes=()=>(B._crypto_scalarmult_bytes=L.nf)(),B._crypto_scalarmult_scalarbytes=()=>(B._crypto_scalarmult_scalarbytes=L.of)(),B._crypto_scalarmult_curve25519=(A,I,g)=>(B._crypto_scalarmult_curve25519=L.pf)(A,I,g),B._crypto_scalarmult_curve25519_base=(A,I)=>(B._crypto_scalarmult_curve25519_base=L.qf)(A,I),B._crypto_scalarmult_curve25519_bytes=()=>(B._crypto_scalarmult_curve25519_bytes=L.rf)(),B._crypto_scalarmult_curve25519_scalarbytes=()=>(B._crypto_scalarmult_curve25519_scalarbytes=L.sf)(),B._crypto_secretbox_keybytes=()=>(B._crypto_secretbox_keybytes=L.tf)(),B._crypto_secretbox_noncebytes=()=>(B._crypto_secretbox_noncebytes=L.uf)(),B._crypto_secretbox_zerobytes=()=>(B._crypto_secretbox_zerobytes=L.vf)(),B._crypto_secretbox_boxzerobytes=()=>(B._crypto_secretbox_boxzerobytes=L.wf)(),B._crypto_secretbox_macbytes=()=>(B._crypto_secretbox_macbytes=L.xf)(),B._crypto_secretbox_messagebytes_max=()=>(B._crypto_secretbox_messagebytes_max=L.yf)(),B._crypto_secretbox_primitive=()=>(B._crypto_secretbox_primitive=L.zf)(),B._crypto_secretbox=(A,I,g,C,Q,i)=>(B._crypto_secretbox=L.Af)(A,I,g,C,Q,i),B._crypto_secretbox_open=(A,I,g,C,Q,i)=>(B._crypto_secretbox_open=L.Bf)(A,I,g,C,Q,i),B._crypto_secretbox_keygen=A=>(B._crypto_secretbox_keygen=L.Cf)(A),B._crypto_secretbox_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_detached=L.Df)(A,I,g,C,Q,i,o),B._crypto_secretbox_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_easy=L.Ef)(A,I,g,C,Q,i),B._crypto_secretbox_open_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_open_detached=L.Ff)(A,I,g,C,Q,i,o),B._crypto_secretbox_open_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_open_easy=L.Gf)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xsalsa20poly1305=L.Hf)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305_open=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xsalsa20poly1305_open=L.If)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305_keybytes=()=>(B._crypto_secretbox_xsalsa20poly1305_keybytes=L.Jf)(),B._crypto_secretbox_xsalsa20poly1305_noncebytes=()=>(B._crypto_secretbox_xsalsa20poly1305_noncebytes=L.Kf)(),B._crypto_secretbox_xsalsa20poly1305_zerobytes=()=>(B._crypto_secretbox_xsalsa20poly1305_zerobytes=L.Lf)(),B._crypto_secretbox_xsalsa20poly1305_boxzerobytes=()=>(B._crypto_secretbox_xsalsa20poly1305_boxzerobytes=L.Mf)(),B._crypto_secretbox_xsalsa20poly1305_macbytes=()=>(B._crypto_secretbox_xsalsa20poly1305_macbytes=L.Nf)(),B._crypto_secretbox_xsalsa20poly1305_messagebytes_max=()=>(B._crypto_secretbox_xsalsa20poly1305_messagebytes_max=L.Of)(),B._crypto_secretbox_xsalsa20poly1305_keygen=A=>(B._crypto_secretbox_xsalsa20poly1305_keygen=L.Pf)(A),B._crypto_secretstream_xchacha20poly1305_keygen=A=>(B._crypto_secretstream_xchacha20poly1305_keygen=L.Qf)(A),B._crypto_secretstream_xchacha20poly1305_init_push=(A,I,g)=>(B._crypto_secretstream_xchacha20poly1305_init_push=L.Rf)(A,I,g),B._crypto_secretstream_xchacha20poly1305_init_pull=(A,I,g)=>(B._crypto_secretstream_xchacha20poly1305_init_pull=L.Sf)(A,I,g),B._crypto_secretstream_xchacha20poly1305_rekey=A=>(B._crypto_secretstream_xchacha20poly1305_rekey=L.Tf)(A),B._crypto_secretstream_xchacha20poly1305_push=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_secretstream_xchacha20poly1305_push=L.Uf)(A,I,g,C,Q,i,o,E,a,_),B._crypto_secretstream_xchacha20poly1305_pull=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_secretstream_xchacha20poly1305_pull=L.Vf)(A,I,g,C,Q,i,o,E,a,_),B._crypto_secretstream_xchacha20poly1305_statebytes=()=>(B._crypto_secretstream_xchacha20poly1305_statebytes=L.Wf)(),B._crypto_secretstream_xchacha20poly1305_abytes=()=>(B._crypto_secretstream_xchacha20poly1305_abytes=L.Xf)(),B._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(B._crypto_secretstream_xchacha20poly1305_headerbytes=L.Yf)(),B._crypto_secretstream_xchacha20poly1305_keybytes=()=>(B._crypto_secretstream_xchacha20poly1305_keybytes=L.Zf)(),B._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(B._crypto_secretstream_xchacha20poly1305_messagebytes_max=L._f)(),B._crypto_secretstream_xchacha20poly1305_tag_message=()=>(B._crypto_secretstream_xchacha20poly1305_tag_message=L.$f)(),B._crypto_secretstream_xchacha20poly1305_tag_push=()=>(B._crypto_secretstream_xchacha20poly1305_tag_push=L.ag)(),B._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(B._crypto_secretstream_xchacha20poly1305_tag_rekey=L.bg)(),B._crypto_secretstream_xchacha20poly1305_tag_final=()=>(B._crypto_secretstream_xchacha20poly1305_tag_final=L.cg)(),B._crypto_shorthash_bytes=()=>(B._crypto_shorthash_bytes=L.dg)(),B._crypto_shorthash_keybytes=()=>(B._crypto_shorthash_keybytes=L.eg)(),B._crypto_shorthash_primitive=()=>(B._crypto_shorthash_primitive=L.fg)(),B._crypto_shorthash=(A,I,g,C,Q)=>(B._crypto_shorthash=L.gg)(A,I,g,C,Q),B._crypto_shorthash_keygen=A=>(B._crypto_shorthash_keygen=L.hg)(A),B._crypto_shorthash_siphash24_bytes=()=>(B._crypto_shorthash_siphash24_bytes=L.ig)(),B._crypto_shorthash_siphash24_keybytes=()=>(B._crypto_shorthash_siphash24_keybytes=L.jg)(),B._crypto_shorthash_siphash24=(A,I,g,C,Q)=>(B._crypto_shorthash_siphash24=L.kg)(A,I,g,C,Q),B._crypto_sign_statebytes=()=>(B._crypto_sign_statebytes=L.lg)(),B._crypto_sign_bytes=()=>(B._crypto_sign_bytes=L.mg)(),B._crypto_sign_seedbytes=()=>(B._crypto_sign_seedbytes=L.ng)(),B._crypto_sign_publickeybytes=()=>(B._crypto_sign_publickeybytes=L.og)(),B._crypto_sign_secretkeybytes=()=>(B._crypto_sign_secretkeybytes=L.pg)(),B._crypto_sign_messagebytes_max=()=>(B._crypto_sign_messagebytes_max=L.qg)(),B._crypto_sign_primitive=()=>(B._crypto_sign_primitive=L.rg)(),B._crypto_sign_seed_keypair=(A,I,g)=>(B._crypto_sign_seed_keypair=L.sg)(A,I,g),B._crypto_sign_keypair=(A,I)=>(B._crypto_sign_keypair=L.tg)(A,I),B._crypto_sign=(A,I,g,C,Q,i)=>(B._crypto_sign=L.ug)(A,I,g,C,Q,i),B._crypto_sign_open=(A,I,g,C,Q,i)=>(B._crypto_sign_open=L.vg)(A,I,g,C,Q,i),B._crypto_sign_detached=(A,I,g,C,Q,i)=>(B._crypto_sign_detached=L.wg)(A,I,g,C,Q,i),B._crypto_sign_verify_detached=(A,I,g,C,Q)=>(B._crypto_sign_verify_detached=L.xg)(A,I,g,C,Q),B._crypto_sign_init=A=>(B._crypto_sign_init=L.yg)(A),B._crypto_sign_update=(A,I,g,C)=>(B._crypto_sign_update=L.zg)(A,I,g,C),B._crypto_sign_final_create=(A,I,g,C)=>(B._crypto_sign_final_create=L.Ag)(A,I,g,C),B._crypto_sign_final_verify=(A,I,g)=>(B._crypto_sign_final_verify=L.Bg)(A,I,g),B._crypto_sign_ed25519ph_statebytes=()=>(B._crypto_sign_ed25519ph_statebytes=L.Cg)(),B._crypto_sign_ed25519_bytes=()=>(B._crypto_sign_ed25519_bytes=L.Dg)(),B._crypto_sign_ed25519_seedbytes=()=>(B._crypto_sign_ed25519_seedbytes=L.Eg)(),B._crypto_sign_ed25519_publickeybytes=()=>(B._crypto_sign_ed25519_publickeybytes=L.Fg)(),B._crypto_sign_ed25519_secretkeybytes=()=>(B._crypto_sign_ed25519_secretkeybytes=L.Gg)(),B._crypto_sign_ed25519_messagebytes_max=()=>(B._crypto_sign_ed25519_messagebytes_max=L.Hg)(),B._crypto_sign_ed25519_sk_to_seed=(A,I)=>(B._crypto_sign_ed25519_sk_to_seed=L.Ig)(A,I),B._crypto_sign_ed25519_sk_to_pk=(A,I)=>(B._crypto_sign_ed25519_sk_to_pk=L.Jg)(A,I),B._crypto_sign_ed25519ph_init=A=>(B._crypto_sign_ed25519ph_init=L.Kg)(A),B._crypto_sign_ed25519ph_update=(A,I,g,C)=>(B._crypto_sign_ed25519ph_update=L.Lg)(A,I,g,C),B._crypto_sign_ed25519ph_final_create=(A,I,g,C)=>(B._crypto_sign_ed25519ph_final_create=L.Mg)(A,I,g,C),B._crypto_sign_ed25519ph_final_verify=(A,I,g)=>(B._crypto_sign_ed25519ph_final_verify=L.Ng)(A,I,g),B._crypto_sign_ed25519_seed_keypair=(A,I,g)=>(B._crypto_sign_ed25519_seed_keypair=L.Og)(A,I,g),B._crypto_sign_ed25519_keypair=(A,I)=>(B._crypto_sign_ed25519_keypair=L.Pg)(A,I),B._crypto_sign_ed25519_pk_to_curve25519=(A,I)=>(B._crypto_sign_ed25519_pk_to_curve25519=L.Qg)(A,I),B._crypto_sign_ed25519_sk_to_curve25519=(A,I)=>(B._crypto_sign_ed25519_sk_to_curve25519=L.Rg)(A,I),B._crypto_sign_ed25519_verify_detached=(A,I,g,C,Q)=>(B._crypto_sign_ed25519_verify_detached=L.Sg)(A,I,g,C,Q),B._crypto_sign_ed25519_open=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519_open=L.Tg)(A,I,g,C,Q,i),B._crypto_sign_ed25519_detached=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519_detached=L.Ug)(A,I,g,C,Q,i),B._crypto_sign_ed25519=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519=L.Vg)(A,I,g,C,Q,i),B._crypto_stream_chacha20_keybytes=()=>(B._crypto_stream_chacha20_keybytes=L.Wg)(),B._crypto_stream_chacha20_noncebytes=()=>(B._crypto_stream_chacha20_noncebytes=L.Xg)(),B._crypto_stream_chacha20_messagebytes_max=()=>(B._crypto_stream_chacha20_messagebytes_max=L.Yg)(),B._crypto_stream_chacha20_ietf_keybytes=()=>(B._crypto_stream_chacha20_ietf_keybytes=L.Zg)(),B._crypto_stream_chacha20_ietf_noncebytes=()=>(B._crypto_stream_chacha20_ietf_noncebytes=L._g)(),B._crypto_stream_chacha20_ietf_messagebytes_max=()=>(B._crypto_stream_chacha20_ietf_messagebytes_max=L.$g)(),B._crypto_stream_chacha20=(A,I,g,C,Q)=>(B._crypto_stream_chacha20=L.ah)(A,I,g,C,Q),B._crypto_stream_chacha20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_chacha20_xor_ic=L.bh)(A,I,g,C,Q,i,o,E),B._crypto_stream_chacha20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_chacha20_xor=L.ch)(A,I,g,C,Q,i),B._crypto_stream_chacha20_ietf=(A,I,g,C,Q)=>(B._crypto_stream_chacha20_ietf=L.dh)(A,I,g,C,Q),B._crypto_stream_chacha20_ietf_xor_ic=(A,I,g,C,Q,i,o)=>(B._crypto_stream_chacha20_ietf_xor_ic=L.eh)(A,I,g,C,Q,i,o),B._crypto_stream_chacha20_ietf_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_chacha20_ietf_xor=L.fh)(A,I,g,C,Q,i),B._crypto_stream_chacha20_ietf_keygen=A=>(B._crypto_stream_chacha20_ietf_keygen=L.gh)(A),B._crypto_stream_chacha20_keygen=A=>(B._crypto_stream_chacha20_keygen=L.hh)(A),B._crypto_stream_keybytes=()=>(B._crypto_stream_keybytes=L.ih)(),B._crypto_stream_noncebytes=()=>(B._crypto_stream_noncebytes=L.jh)(),B._crypto_stream_messagebytes_max=()=>(B._crypto_stream_messagebytes_max=L.kh)(),B._crypto_stream_primitive=()=>(B._crypto_stream_primitive=L.lh)(),B._crypto_stream=(A,I,g,C,Q)=>(B._crypto_stream=L.mh)(A,I,g,C,Q),B._crypto_stream_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xor=L.nh)(A,I,g,C,Q,i),B._crypto_stream_keygen=A=>(B._crypto_stream_keygen=L.oh)(A),B._crypto_stream_salsa20_keybytes=()=>(B._crypto_stream_salsa20_keybytes=L.ph)(),B._crypto_stream_salsa20_noncebytes=()=>(B._crypto_stream_salsa20_noncebytes=L.qh)(),B._crypto_stream_salsa20_messagebytes_max=()=>(B._crypto_stream_salsa20_messagebytes_max=L.rh)(),B._crypto_stream_salsa20=(A,I,g,C,Q)=>(B._crypto_stream_salsa20=L.sh)(A,I,g,C,Q),B._crypto_stream_salsa20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_salsa20_xor_ic=L.th)(A,I,g,C,Q,i,o,E),B._crypto_stream_salsa20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa20_xor=L.uh)(A,I,g,C,Q,i),B._crypto_stream_salsa20_keygen=A=>(B._crypto_stream_salsa20_keygen=L.vh)(A),B._crypto_stream_xsalsa20=(A,I,g,C,Q)=>(B._crypto_stream_xsalsa20=L.wh)(A,I,g,C,Q),B._crypto_stream_xsalsa20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_xsalsa20_xor_ic=L.xh)(A,I,g,C,Q,i,o,E),B._crypto_stream_xsalsa20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xsalsa20_xor=L.yh)(A,I,g,C,Q,i),B._crypto_stream_xsalsa20_keybytes=()=>(B._crypto_stream_xsalsa20_keybytes=L.zh)(),B._crypto_stream_xsalsa20_noncebytes=()=>(B._crypto_stream_xsalsa20_noncebytes=L.Ah)(),B._crypto_stream_xsalsa20_messagebytes_max=()=>(B._crypto_stream_xsalsa20_messagebytes_max=L.Bh)(),B._crypto_stream_xsalsa20_keygen=A=>(B._crypto_stream_xsalsa20_keygen=L.Ch)(A),B._crypto_verify_16_bytes=()=>(B._crypto_verify_16_bytes=L.Dh)(),B._crypto_verify_32_bytes=()=>(B._crypto_verify_32_bytes=L.Eh)(),B._crypto_verify_64_bytes=()=>(B._crypto_verify_64_bytes=L.Fh)(),B._crypto_verify_16=(A,I)=>(B._crypto_verify_16=L.Gh)(A,I),B._crypto_verify_32=(A,I)=>(B._crypto_verify_32=L.Hh)(A,I),B._crypto_verify_64=(A,I)=>(B._crypto_verify_64=L.Ih)(A,I),B._randombytes_implementation_name=()=>(B._randombytes_implementation_name=L.Jh)(),B._randombytes_random=()=>(B._randombytes_random=L.Kh)(),B._randombytes_stir=()=>(B._randombytes_stir=L.Lh)(),B._randombytes_uniform=A=>(B._randombytes_uniform=L.Mh)(A),B._randombytes_buf=(A,I)=>(B._randombytes_buf=L.Nh)(A,I),B._randombytes_buf_deterministic=(A,I,g)=>(B._randombytes_buf_deterministic=L.Oh)(A,I,g),B._randombytes_seedbytes=()=>(B._randombytes_seedbytes=L.Ph)(),B._randombytes_close=()=>(B._randombytes_close=L.Qh)(),B._randombytes=(A,I,g)=>(B._randombytes=L.Rh)(A,I,g),B._sodium_bin2hex=(A,I,g,C)=>(B._sodium_bin2hex=L.Sh)(A,I,g,C),B._sodium_hex2bin=(A,I,g,C,Q,i,o)=>(B._sodium_hex2bin=L.Th)(A,I,g,C,Q,i,o),B._sodium_base64_encoded_len=(A,I)=>(B._sodium_base64_encoded_len=L.Uh)(A,I),B._sodium_bin2base64=(A,I,g,C,Q)=>(B._sodium_bin2base64=L.Vh)(A,I,g,C,Q),B._sodium_base642bin=(A,I,g,C,Q,i,o,E)=>(B._sodium_base642bin=L.Wh)(A,I,g,C,Q,i,o,E),B._sodium_init=()=>(B._sodium_init=L.Xh)(),B._sodium_pad=(A,I,g,C,Q)=>(B._sodium_pad=L.Yh)(A,I,g,C,Q),B._sodium_unpad=(A,I,g,C)=>(B._sodium_unpad=L.Zh)(A,I,g,C),B._sodium_version_string=()=>(B._sodium_version_string=L._h)(),B._sodium_library_version_major=()=>(B._sodium_library_version_major=L.$h)(),B._sodium_library_version_minor=()=>(B._sodium_library_version_minor=L.ai)(),B._sodium_library_minimal=()=>(B._sodium_library_minimal=L.bi)(),B._crypto_box_curve25519xchacha20poly1305_seed_keypair=(A,I,g)=>(B._crypto_box_curve25519xchacha20poly1305_seed_keypair=L.ci)(A,I,g),B._crypto_box_curve25519xchacha20poly1305_keypair=(A,I)=>(B._crypto_box_curve25519xchacha20poly1305_keypair=L.di)(A,I),B._crypto_box_curve25519xchacha20poly1305_beforenm=(A,I,g)=>(B._crypto_box_curve25519xchacha20poly1305_beforenm=L.ei)(A,I,g),B._crypto_box_curve25519xchacha20poly1305_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_detached_afternm=L.fi)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_curve25519xchacha20poly1305_detached=L.gi)(A,I,g,C,Q,i,o,E),B._crypto_box_curve25519xchacha20poly1305_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_easy_afternm=L.hi)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_easy=L.ii)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=L.ji)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_open_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_curve25519xchacha20poly1305_open_detached=L.ki)(A,I,g,C,Q,i,o,E),B._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=L.li)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_open_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_open_easy=L.mi)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_seedbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_seedbytes=L.ni)(),B._crypto_box_curve25519xchacha20poly1305_publickeybytes=()=>(B._crypto_box_curve25519xchacha20poly1305_publickeybytes=L.oi)(),B._crypto_box_curve25519xchacha20poly1305_secretkeybytes=()=>(B._crypto_box_curve25519xchacha20poly1305_secretkeybytes=L.pi)(),B._crypto_box_curve25519xchacha20poly1305_beforenmbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_beforenmbytes=L.qi)(),B._crypto_box_curve25519xchacha20poly1305_noncebytes=()=>(B._crypto_box_curve25519xchacha20poly1305_noncebytes=L.ri)(),B._crypto_box_curve25519xchacha20poly1305_macbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_macbytes=L.si)(),B._crypto_box_curve25519xchacha20poly1305_messagebytes_max=()=>(B._crypto_box_curve25519xchacha20poly1305_messagebytes_max=L.ti)(),B._crypto_box_curve25519xchacha20poly1305_seal=(A,I,g,C,Q)=>(B._crypto_box_curve25519xchacha20poly1305_seal=L.ui)(A,I,g,C,Q),B._crypto_box_curve25519xchacha20poly1305_seal_open=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_seal_open=L.vi)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_sealbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_sealbytes=L.wi)(),B._crypto_core_ed25519_is_valid_point=A=>(B._crypto_core_ed25519_is_valid_point=L.xi)(A),B._crypto_core_ed25519_add=(A,I,g)=>(B._crypto_core_ed25519_add=L.yi)(A,I,g),B._crypto_core_ed25519_sub=(A,I,g)=>(B._crypto_core_ed25519_sub=L.zi)(A,I,g),B._crypto_core_ed25519_from_uniform=(A,I)=>(B._crypto_core_ed25519_from_uniform=L.Ai)(A,I),B._crypto_core_ed25519_random=A=>(B._crypto_core_ed25519_random=L.Bi)(A),B._crypto_core_ed25519_scalar_random=A=>(B._crypto_core_ed25519_scalar_random=L.Ci)(A),B._crypto_core_ed25519_scalar_invert=(A,I)=>(B._crypto_core_ed25519_scalar_invert=L.Di)(A,I),B._crypto_core_ed25519_scalar_negate=(A,I)=>(B._crypto_core_ed25519_scalar_negate=L.Ei)(A,I),B._crypto_core_ed25519_scalar_complement=(A,I)=>(B._crypto_core_ed25519_scalar_complement=L.Fi)(A,I),B._crypto_core_ed25519_scalar_add=(A,I,g)=>(B._crypto_core_ed25519_scalar_add=L.Gi)(A,I,g),B._crypto_core_ed25519_scalar_reduce=(A,I)=>(B._crypto_core_ed25519_scalar_reduce=L.Hi)(A,I),B._crypto_core_ed25519_scalar_sub=(A,I,g)=>(B._crypto_core_ed25519_scalar_sub=L.Ii)(A,I,g),B._crypto_core_ed25519_scalar_mul=(A,I,g)=>(B._crypto_core_ed25519_scalar_mul=L.Ji)(A,I,g),B._crypto_core_ed25519_bytes=()=>(B._crypto_core_ed25519_bytes=L.Ki)(),B._crypto_core_ed25519_nonreducedscalarbytes=()=>(B._crypto_core_ed25519_nonreducedscalarbytes=L.Li)(),B._crypto_core_ed25519_uniformbytes=()=>(B._crypto_core_ed25519_uniformbytes=L.Mi)(),B._crypto_core_ed25519_hashbytes=()=>(B._crypto_core_ed25519_hashbytes=L.Ni)(),B._crypto_core_ed25519_scalarbytes=()=>(B._crypto_core_ed25519_scalarbytes=L.Oi)(),B._crypto_core_ristretto255_is_valid_point=A=>(B._crypto_core_ristretto255_is_valid_point=L.Pi)(A),B._crypto_core_ristretto255_add=(A,I,g)=>(B._crypto_core_ristretto255_add=L.Qi)(A,I,g),B._crypto_core_ristretto255_sub=(A,I,g)=>(B._crypto_core_ristretto255_sub=L.Ri)(A,I,g),B._crypto_core_ristretto255_from_hash=(A,I)=>(B._crypto_core_ristretto255_from_hash=L.Si)(A,I),B._crypto_core_ristretto255_random=A=>(B._crypto_core_ristretto255_random=L.Ti)(A),B._crypto_core_ristretto255_scalar_random=A=>(B._crypto_core_ristretto255_scalar_random=L.Ui)(A),B._crypto_core_ristretto255_scalar_invert=(A,I)=>(B._crypto_core_ristretto255_scalar_invert=L.Vi)(A,I),B._crypto_core_ristretto255_scalar_negate=(A,I)=>(B._crypto_core_ristretto255_scalar_negate=L.Wi)(A,I),B._crypto_core_ristretto255_scalar_complement=(A,I)=>(B._crypto_core_ristretto255_scalar_complement=L.Xi)(A,I),B._crypto_core_ristretto255_scalar_add=(A,I,g)=>(B._crypto_core_ristretto255_scalar_add=L.Yi)(A,I,g),B._crypto_core_ristretto255_scalar_sub=(A,I,g)=>(B._crypto_core_ristretto255_scalar_sub=L.Zi)(A,I,g),B._crypto_core_ristretto255_scalar_mul=(A,I,g)=>(B._crypto_core_ristretto255_scalar_mul=L._i)(A,I,g),B._crypto_core_ristretto255_scalar_reduce=(A,I)=>(B._crypto_core_ristretto255_scalar_reduce=L.$i)(A,I),B._crypto_core_ristretto255_bytes=()=>(B._crypto_core_ristretto255_bytes=L.aj)(),B._crypto_core_ristretto255_nonreducedscalarbytes=()=>(B._crypto_core_ristretto255_nonreducedscalarbytes=L.bj)(),B._crypto_core_ristretto255_hashbytes=()=>(B._crypto_core_ristretto255_hashbytes=L.cj)(),B._crypto_core_ristretto255_scalarbytes=()=>(B._crypto_core_ristretto255_scalarbytes=L.dj)(),B._crypto_pwhash_scryptsalsa208sha256_ll=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_pwhash_scryptsalsa208sha256_ll=L.ej)(A,I,g,C,Q,i,o,E,a,_),B._crypto_pwhash_scryptsalsa208sha256_bytes_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_bytes_min=L.fj)(),B._crypto_pwhash_scryptsalsa208sha256_bytes_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_bytes_max=L.gj)(),B._crypto_pwhash_scryptsalsa208sha256_passwd_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_passwd_min=L.hj)(),B._crypto_pwhash_scryptsalsa208sha256_passwd_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_passwd_max=L.ij)(),B._crypto_pwhash_scryptsalsa208sha256_saltbytes=()=>(B._crypto_pwhash_scryptsalsa208sha256_saltbytes=L.jj)(),B._crypto_pwhash_scryptsalsa208sha256_strbytes=()=>(B._crypto_pwhash_scryptsalsa208sha256_strbytes=L.kj)(),B._crypto_pwhash_scryptsalsa208sha256_strprefix=()=>(B._crypto_pwhash_scryptsalsa208sha256_strprefix=L.lj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_min=L.mj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_max=L.nj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_min=L.oj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_max=L.pj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=L.qj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=L.rj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=L.sj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=L.tj)(),B._crypto_pwhash_scryptsalsa208sha256=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_pwhash_scryptsalsa208sha256=L.uj)(A,I,g,C,Q,i,o,E,a,_),B._crypto_pwhash_scryptsalsa208sha256_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_scryptsalsa208sha256_str=L.vj)(A,I,g,C,Q,i,o),B._crypto_pwhash_scryptsalsa208sha256_str_verify=(A,I,g,C)=>(B._crypto_pwhash_scryptsalsa208sha256_str_verify=L.wj)(A,I,g,C),B._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=L.xj)(A,I,g,C),B._crypto_scalarmult_ed25519=(A,I,g)=>(B._crypto_scalarmult_ed25519=L.yj)(A,I,g),B._crypto_scalarmult_ed25519_noclamp=(A,I,g)=>(B._crypto_scalarmult_ed25519_noclamp=L.zj)(A,I,g),B._crypto_scalarmult_ed25519_base=(A,I)=>(B._crypto_scalarmult_ed25519_base=L.Aj)(A,I),B._crypto_scalarmult_ed25519_base_noclamp=(A,I)=>(B._crypto_scalarmult_ed25519_base_noclamp=L.Bj)(A,I),B._crypto_scalarmult_ed25519_bytes=()=>(B._crypto_scalarmult_ed25519_bytes=L.Cj)(),B._crypto_scalarmult_ed25519_scalarbytes=()=>(B._crypto_scalarmult_ed25519_scalarbytes=L.Dj)(),B._crypto_scalarmult_ristretto255=(A,I,g)=>(B._crypto_scalarmult_ristretto255=L.Ej)(A,I,g),B._crypto_scalarmult_ristretto255_base=(A,I)=>(B._crypto_scalarmult_ristretto255_base=L.Fj)(A,I),B._crypto_scalarmult_ristretto255_bytes=()=>(B._crypto_scalarmult_ristretto255_bytes=L.Gj)(),B._crypto_scalarmult_ristretto255_scalarbytes=()=>(B._crypto_scalarmult_ristretto255_scalarbytes=L.Hj)(),B._crypto_secretbox_xchacha20poly1305_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_xchacha20poly1305_detached=L.Ij)(A,I,g,C,Q,i,o),B._crypto_secretbox_xchacha20poly1305_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xchacha20poly1305_easy=L.Jj)(A,I,g,C,Q,i),B._crypto_secretbox_xchacha20poly1305_open_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_xchacha20poly1305_open_detached=L.Kj)(A,I,g,C,Q,i,o),B._crypto_secretbox_xchacha20poly1305_open_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xchacha20poly1305_open_easy=L.Lj)(A,I,g,C,Q,i),B._crypto_secretbox_xchacha20poly1305_keybytes=()=>(B._crypto_secretbox_xchacha20poly1305_keybytes=L.Mj)(),B._crypto_secretbox_xchacha20poly1305_noncebytes=()=>(B._crypto_secretbox_xchacha20poly1305_noncebytes=L.Nj)(),B._crypto_secretbox_xchacha20poly1305_macbytes=()=>(B._crypto_secretbox_xchacha20poly1305_macbytes=L.Oj)(),B._crypto_secretbox_xchacha20poly1305_messagebytes_max=()=>(B._crypto_secretbox_xchacha20poly1305_messagebytes_max=L.Pj)(),B._crypto_shorthash_siphashx24_bytes=()=>(B._crypto_shorthash_siphashx24_bytes=L.Qj)(),B._crypto_shorthash_siphashx24_keybytes=()=>(B._crypto_shorthash_siphashx24_keybytes=L.Rj)(),B._crypto_shorthash_siphashx24=(A,I,g,C,Q)=>(B._crypto_shorthash_siphashx24=L.Sj)(A,I,g,C,Q),B._crypto_stream_salsa2012=(A,I,g,C,Q)=>(B._crypto_stream_salsa2012=L.Tj)(A,I,g,C,Q),B._crypto_stream_salsa2012_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa2012_xor=L.Uj)(A,I,g,C,Q,i),B._crypto_stream_salsa2012_keybytes=()=>(B._crypto_stream_salsa2012_keybytes=L.Vj)(),B._crypto_stream_salsa2012_noncebytes=()=>(B._crypto_stream_salsa2012_noncebytes=L.Wj)(),B._crypto_stream_salsa2012_messagebytes_max=()=>(B._crypto_stream_salsa2012_messagebytes_max=L.Xj)(),B._crypto_stream_salsa2012_keygen=A=>(B._crypto_stream_salsa2012_keygen=L.Yj)(A),B._crypto_stream_salsa208=(A,I,g,C,Q)=>(B._crypto_stream_salsa208=L.Zj)(A,I,g,C,Q),B._crypto_stream_salsa208_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa208_xor=L._j)(A,I,g,C,Q,i),B._crypto_stream_salsa208_keybytes=()=>(B._crypto_stream_salsa208_keybytes=L.$j)(),B._crypto_stream_salsa208_noncebytes=()=>(B._crypto_stream_salsa208_noncebytes=L.ak)(),B._crypto_stream_salsa208_messagebytes_max=()=>(B._crypto_stream_salsa208_messagebytes_max=L.bk)(),B._crypto_stream_salsa208_keygen=A=>(B._crypto_stream_salsa208_keygen=L.ck)(A),B._crypto_stream_xchacha20_keybytes=()=>(B._crypto_stream_xchacha20_keybytes=L.dk)(),B._crypto_stream_xchacha20_noncebytes=()=>(B._crypto_stream_xchacha20_noncebytes=L.ek)(),B._crypto_stream_xchacha20_messagebytes_max=()=>(B._crypto_stream_xchacha20_messagebytes_max=L.fk)(),B._crypto_stream_xchacha20=(A,I,g,C,Q)=>(B._crypto_stream_xchacha20=L.gk)(A,I,g,C,Q),B._crypto_stream_xchacha20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_xchacha20_xor_ic=L.hk)(A,I,g,C,Q,i,o,E),B._crypto_stream_xchacha20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xchacha20_xor=L.ik)(A,I,g,C,Q,i),B._crypto_stream_xchacha20_keygen=A=>(B._crypto_stream_xchacha20_keygen=L.jk)(A),B._malloc=A=>(B._malloc=L.kk)(A),B._free=A=>(B._free=L.lk)(A),B.setValue=function(A,I,g=\"i8\"){switch(g.endsWith(\"*\")&&(g=\"*\"),g){case\"i1\":case\"i8\":s[A]=I;break;case\"i16\":D[A>>1]=I;break;case\"i32\":f[A>>2]=I;break;case\"i64\":b(\"to do setValue(i64) use WASM_BIGINT\");case\"float\":w[A>>2]=I;break;case\"double\":n[A>>3]=I;break;case\"*\":p[A>>2]=I;break;default:b(`invalid type for setValue: ${g}`)}},B.getValue=function(A,I=\"i8\"){switch(I.endsWith(\"*\")&&(I=\"*\"),I){case\"i1\":case\"i8\":return s[A];case\"i16\":return D[A>>1];case\"i32\":return f[A>>2];case\"i64\":b(\"to do getValue(i64) use WASM_BIGINT\");case\"float\":return w[A>>2];case\"double\":return n[A>>3];case\"*\":return p[A>>2];default:b(`invalid type for getValue: ${I}`)}},B.UTF8ToString=u,U=function A(){m||P(),m||(U=A)},B.preInit)for(\"function\"==typeof B.preInit&&(B.preInit=[B.preInit]);B.preInit.length>0;)B.preInit.pop()();P()}))};var g,B=void 0!==B?B:{},Q=\"object\"==typeof window,i=\"function\"==typeof importScripts,o=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node,E=Object.assign({},B),a=\"\";if(o){var _=require(\"fs\"),c=require(\"path\");a=__dirname+\"/\",g=A=>(A=Y(A)?new URL(A):c.normalize(A),_.readFileSync(A)),!B.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\\\/g,\"/\"),process.argv.slice(2),\"undefined\"!=typeof module&&(module.exports=B)}else(Q||i)&&(i?a=self.location.href:\"undefined\"!=typeof document&&document.currentScript&&(a=document.currentScript.src),a=a.startsWith(\"blob:\")?\"\":a.substr(0,a.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1),i&&(g=A=>{var I=new XMLHttpRequest;return I.open(\"GET\",A,!1),I.responseType=\"arraybuffer\",I.send(null),new Uint8Array(I.response)}));B.print;var t,r,e=B.printErr||void 0;Object.assign(B,E),E=null,B.arguments&&B.arguments,B.thisProgram&&B.thisProgram,B.quit&&B.quit,B.wasmBinary&&(t=B.wasmBinary);var y,s,h,D,f,p,w,n=!1;function k(){var A=r.buffer;B.HEAP8=y=new Int8Array(A),B.HEAP16=h=new Int16Array(A),B.HEAPU8=s=new Uint8Array(A),B.HEAPU16=new Uint16Array(A),B.HEAP32=D=new Int32Array(A),B.HEAPU32=f=new Uint32Array(A),B.HEAPF32=p=new Float32Array(A),B.HEAPF64=w=new Float64Array(A)}var F=[],S=[],N=[],G=0,M=null,K=null;function U(A){throw B.onAbort?.(A),e(A=\"Aborted(\"+A+\")\"),n=!0,A+=\". Build with -sASSERTIONS for more info.\",new WebAssembly.RuntimeError(A)}var b,H=\"data:application/octet-stream;base64,\",Y=A=>A.startsWith(\"file://\");function J(A){return Promise.resolve().then((()=>function(A){if(A==b&&t)return new Uint8Array(t);var I=function(A){if((A=>A.startsWith(H))(A))return function(A){if(void 0!==o&&o){var I=Buffer.from(A,\"base64\");return new Uint8Array(I.buffer,I.byteOffset,I.length)}for(var g=atob(A),C=new Uint8Array(g.length),B=0;BB.getRandomValue(),36836:()=>{if(void 0===B.getRandomValue)try{var A=\"object\"==typeof window?window:self,I=void 0!==A.crypto?A.crypto:A.msCrypto;I=void 0===I?C:I;var g=function(){var A=new Uint32Array(1);return I.getRandomValues(A),A[0]>>>0};g(),B.getRandomValue=g}catch(A){try{var C=require(\"crypto\"),Q=function(){var A=C.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};Q(),B.getRandomValue=Q}catch(A){throw\"No secure random number generator found\"}}}},m=A=>{for(;A.length>0;)A.shift()(B)};B.noExitRuntime;var l,u=\"undefined\"!=typeof TextDecoder?new TextDecoder:void 0,x=(A,I)=>A?((A,I,g)=>{for(var C=I+g,B=I;A[B]&&!(B>=C);)++B;if(B-I>16&&A.buffer&&u)return u.decode(A.subarray(I,B));for(var Q=\"\";I>10,56320|1023&a)}}else Q+=String.fromCharCode((31&i)<<6|o)}else Q+=String.fromCharCode(i)}return Q})(s,A,I):\"\",v=[],R=A=>{var I=(A-r.buffer.byteLength+65535)/65536;try{return r.grow(I),k(),1}catch(A){}},L={b:(A,I,g,C)=>{U(`Assertion failed: ${x(A)}, at: `+[I?x(I):\"unknown filename\",g,C?x(C):\"unknown function\"])},c:()=>{U(\"\")},d:(A,I,g)=>s.copyWithin(A,I,I+g),a:(A,I,g)=>((A,I,g)=>{var C=((A,I)=>{var g;for(v.length=0;g=s[A++];){var C=105!=g;I+=(C&=112!=g)&&I%8?4:0,v.push(112==g?f[I>>2]:105==g?D[I>>2]:w[I>>3]),I+=C?8:4}return v})(I,g);return d[A](...C)})(A,I,g),e:A=>{var I=s.length,g=2147483648;if((A>>>=0)>g)return!1;for(var C,B=1;B<=4;B*=2){var Q=I*(1+.2/B);Q=Math.min(Q,A+100663296);var i=Math.min(g,(C=Math.max(A,Q))+(65536-C%65536)%65536);if(R(i))return!0}return!1}},P=function(){var A,I={a:L};function g(A,I){return P=A.exports,r=P.f,k(),function(A){if(G--,B.monitorRunDependencies?.(G),0==G&&(null!==M&&(clearInterval(M),M=null),K)){var I=K;K=null,I()}}(),P}if(G++,B.monitorRunDependencies?.(G),B.instantiateWasm)try{return B.instantiateWasm(I,g)}catch(A){return e(`Module.instantiateWasm callback failed with error: ${A}`),!1}return b||(b=\"data:application/octet-stream;base64,AGFzbQEAAAAB5gInYAJ/fwF/YAABf2ADf39+AX9gA39/fwF/YAJ/fwBgBH9/f38Bf2AFf39/f38Bf2ADf39/AGAGf39/f39/AX9gAX8Bf2ALf39/f39/f39/f38Bf2AHf39/f39/fwF/YAZ/f35/fn8Bf2AJf39/f39/f39/AX9gAX8AYAR/fn9/AX9gBn9/fn9/fwF/YAR/f35/AX9gCH9/f39/f39/AX9gBH9/f38AYAV/f35/fwF/YAZ/f39+f38Bf2AAAGAMf39/f39/f39/f39/AX9gCn9/f39/f39/f38Bf2AFf39/f38AYAh/f35/f35/fwF/YAl/f39/fn9+f38Bf2AFf39/fn8Bf2ADf39+AGAFf39+fn8Bf2AIf35/fn9+f38Bf2AEf39/fgBgBX5/f39/AGAJf39/f35/f39/AX9gCn9/f39/fn9/f38Bf2AGf39/f39/AGAIf39/fn9/f38Bf2AFf39+f38AAh8FAWEBYQADAWEBYgATAWEBYwAWAWEBZAAHAWEBZQAJA8IDwAMEBwcHBAEDAwEWAgQEDgcBDgECBAQABQEACQMJAwUCAgECAQ4HBwUBAAMEAwAJDwAEBAAJARAMAwAEAAMAAwADCQACBQUFBAkJFRUBAQQPBAcECAgAEwkEFRUPABUTCQETFBQgGQMJCQcEHQQFHSEJBxQTFRQDAQEBAQEAEgYDAQQEBwAEBBYECQQHBwcEAAABAAAICwsIBgYICAgGCwUGBggFCwgLCwsLBQYGABobEBADBQEiBg4jJAQUFAEBGhobGwMFCQEAAw8QEAIeHwEBAQIeHwEFCwMlAQcHBAcEBAAOAxYEJgEOEwcZBwQHDgETBxkHDQwPAAMIEgYIBggGBggFBQsYGAgGCxILAAgSBxIIEgYCCAsGCBIGABgYCAUFEgoFEQoFBQULCgUFBQ0FCAYLEgsIEhEGBgYGBQoKChcKCgoKChcKFwoKFwoKChcKAQEBAQYGAwMBAQEBEREAAAMBAREUAAADAwEBAQEDAAMBEBADBQMFCQADAQAAHBwcAAABAwEIAQEBAQALBQEGBgADAwEBAQ4DAwQHBwQEAA4OAAMDCQUOAAMDCQEGDgYGAAMBBwkBARAMDw8BDQ0NBAQBcAASBQYBAUCAgAIGCAF/AUGQqgYLB6kZ2QQBZgIAAWcADQFoABwBaQANAWoACgFrAPQBAWwA8wEBbQDVAgFuANQCAW8A0wIBcADSAgFxAAoBcgAcAXMACgF0AAoBdQD0AQF2ABIBdwDRAgF4ANACAXkAzwIBegDOAgFBABwBQgDNAgFDAMwCAUQAywIBRQDKAgFGAMkCAUcAyAIBSADHAgFJAMYCAUoACgFLAOsBAUwAHAFNAA0BTgAsAU8AEgFQAAoBUQAnAVIAHAFTAA0BVAAsAVUAEgFWAMUCAVcAxAIBWADDAgFZAMICAVoACgFfACUBJAAcAmFhAA0CYmEALAJjYQASAmRhAAoCZWEACgJmYQDfAgJnYQCwAQJoYQCvAQJpYQASAmphAAoCa2EACgJsYQBQAm1hABICbmEAMAJvYQDBAgJwYQBGAnFhAMACAnJhAL8CAnNhABYCdGEACgJ1YQCEAQJ2YQASAndhAC4CeGEArgECeWEAMQJ6YQC+AgJBYQC9AgJCYQAKAkNhAAoCRGEAhAECRWEAEgJGYQDnAQJHYQCuAQJIYQDkAgJJYQCwAQJKYQCvAQJLYQAKAkxhAAoCTWEACgJOYQAKAk9hACUCUGEACgJRYQANAlJhAA0CU2EALAJUYQD2AgJVYQD1AgJWYQD0AgJXYQDzAgJYYQBYAllhAFcCWmEArQECX2EArAECJGEAqwECYWIAuwICYmIAugICY2IAuQICZGIAqgECZWIAuAICZmIAqQECZ2IAtwICaGIAtgICaWIAtQICamIAwQECa2IAegJsYgBBAm1iAEACbmIAWAJvYgBXAnBiAK0BAnFiAKwBAnJiAAoCc2IACgJ0YgAKAnViAAoCdmIAJQJ3YgAKAnhiAA0CeWIADQJ6YgAsAkFiABsCQmIACgJDYgANAkRiAAoCRWIADQJGYgArAkdiAAoCSGIADQJJYgAKAkpiAA0CS2IASgJMYgAWAk1iAA0CTmIACgJPYgANAlBiAEkCUWIAFgJSYgANAlNiAAoCVGIADQJVYgBIAlZiABYCV2IADQJYYgAKAlliAA0CWmIADQJfYgAWAiRiAAoCYWMADQJiYwAWAmNjAAoCZGMAwgECZWMA3gECZmMAqAECZ2MA+gICaGMAtAICaWMA+QICamMAEgJrYwANAmxjABYCbWMACgJuYwANAm9jABYCcGMACgJxYwANAnJjAA0Cc2MA3gECdGMAEgJ1YwCoAQJ2YwCzAgJ3YwAiAnhjAIsDAnljALICAnpjACECQWMAFgJCYwCnAQJDYwDgAgJEYwAKAkVjANYCAkZjAGMCR2MAsQICSGMALQJJYwCwAgJKYwAWAktjAFACTGMAMgJNYwBxAk5jAB0CT2MApwECUGMADQJRYwAWAlJjACcCU2MACgJUYwCmAQJVYwDCAQJWYwANAldjABYCWGMAJwJZYwAKAlpjAKYBAl9jABICJGMAmAMCYWQAlwMCYmQAlgMCY2QAlQMCZGQAEgJlZACUAwJmZAAKAmdkABwCaGQAkwMCaWQAUAJqZADnAQJrZAC3AwJsZAC2AwJtZAC1AwJuZACzAwJvZACyAwJwZAAWAnFkABwCcmQAsQMCc2QAhAECdGQA3AICdWQAQQJ2ZADbAgJ3ZADaAgJ4ZAAKAnlkAAoCemQACgJBZAAKAkJkANkCAkNkAJUBAkRkAA0CRWQACgJGZAClAQJHZACkAQJIZACXAQJJZACjAQJKZACWAQJLZADnAgJMZAASAk1kAKUBAk5kAKQBAk9kAJcBAlBkAKMBAlFkAJYBAlJkAA0CU2QACgJUZACVAQJVZAASAlZkAFECV2QADQJYZAAUAllkABwCWmQAFAJfZAANAiRkAH8CYWUAjwMCYmUAZAJjZQAUAmRlAH4CZWUAfQJmZQB8AmdlANkBAmhlAI4DAmllAI0DAmplACcCa2UAjAMCbGUArwICbWUArgICbmUArQICb2UArAICcGUAqwICcWUAOQJyZQANAnNlABQCdGUAHAJ1ZQAUAnZlAA0Cd2UAfwJ4ZQDVAQJ5ZQBRAnplABQCQWUAfgJCZQB9AkNlADkCRGUA1AECRWUAZAJGZQDTAQJHZQB8AkhlAHsCSWUAqgICSmUAogECS2UAqAICTGUAUQJNZQA5Ak5lADkCT2UADQJQZQAUAlFlABwCUmUAFAJTZQANAlRlAH8CVWUA1QECVmUAUQJXZQAUAlhlAH4CWWUAfQJaZQA5Al9lANQBAiRlAGQCYWYA0wECYmYAfAJjZgB7AmRmAKcCAmVmAKIBAmZmAKYCAmdmAKUCAmhmAKQCAmpmAIoDAmtmAN4CAmxmAIgBAm1mAN0CAm5mAAoCb2YACgJwZgAfAnFmAIgBAnJmAAoCc2YACgJ0ZgAKAnVmACUCdmYACgJ3ZgANAnhmAA0CeWYALAJ6ZgDhAgJBZgBYAkJmAFcCQ2YAEgJEZgCrAQJFZgCjAgJGZgCqAQJHZgCpAQJIZgBYAklmAFcCSmYACgJLZgAlAkxmAAoCTWYADQJOZgANAk9mACwCUGYAEgJRZgASAlJmAJ4DAlNmAJ0DAlRmAJwDAlVmAKICAlZmAKECAldmAJsDAlhmAJoDAllmACUCWmYACgJfZgCZAwIkZgAcAmFnAFECYmcAOQJjZwBkAmRnACcCZWcADQJmZwDoAgJnZwChAQJoZwDzAQJpZwAnAmpnAA0Ca2cAoQECbGcAUAJtZwAWAm5nAAoCb2cACgJwZwAWAnFnAMoBAnJnAIADAnNnAP8CAnRnAP4CAnVnAKABAnZnAJ8BAndnAJ4BAnhnAJ0BAnlnAP0CAnpnAHECQWcA/AICQmcA+wICQ2cAUAJEZwAWAkVnAAoCRmcACgJHZwAWAkhnAMoBAklnAIIDAkpnAIEDAktnAMkBAkxnAHECTWcAyAECTmcAxwECT2cAzAECUGcAywECUWcAhwMCUmcAhgMCU2cAnQECVGcAnwECVWcAngECVmcAoAECV2cACgJYZwAnAllnABQCWmcACgJfZwDrAQIkZwAUAmFoAJ8CAmJoAJ4CAmNoAJ0CAmRoAJwCAmVoAJsCAmZoAJoCAmdoABICaGgAEgJpaAAKAmpoACUCa2gAFAJsaACIAwJtaACcAQJuaACbAQJvaAASAnBoAAoCcWgAJwJyaAAUAnNoAJgCAnRoAJcCAnVoAJYCAnZoABICd2gAnAECeGgAlQICeWgAmwECemgACgJBaAAlAkJoABQCQ2gAEgJEaAANAkVoAAoCRmgAFgJHaAA3AkhoAD8CSWgAsQECSmgAvAMCS2gAuwMCTGgA6AECTWgAugMCTmgAGQJPaAC5AwJQaAAKAlFoALgDAlJoAJQCAlNoAJIDAlRoAJEDAlVoAJADAlZoAIIBAldoAIEBAlhoAMEDAlloALQDAlpoAKsDAl9oANgCAiRoANcCAmFpADkCYmkAHAJjaQB6AmRpAEECZWkAiQMCZmkAmgECZ2kAkwICaGkAkgICaWkAkAICamkAmQECa2kAjwICbGkAmAECbWkAjgICbmkACgJvaQAKAnBpAAoCcWkACgJyaQAlAnNpAA0CdGkALAJ1aQCNAgJ2aQCMAgJ3aQDBAQJ4aQCwAwJ5aQCvAwJ6aQCuAwJBaQCt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iEL///8AgyIIIAEoAA8iO0EGdkH///8Aca0iBn58IAEoAAoiPEEYdq0gATEADkIIhoQgATEAD0IQhoRCAYhC////AIMiDCACKAAKIj1BBHZB////AHGtIg1+fCA5QRh2rSACMQAGQgiGhCACMQAHQhCGhEICiEL///8AgyIOIDtBGHatIAExABNCCIaEIAExABRCEIaEQgOIIgl+fCACKAAPIjlBBnZB////AHGtIgcgATUAB0IHiEL///8AgyIPfnwgPUEYdq0gAjEADkIIhoQgAjEAD0IQhoRCAYhC////AIMiCiA8QQR2Qf///wBxrSIQfnwgOUEYdq0gAjEAE0IIhoQgAjEAFEIQhoRCA4giESABKAACIjlBGHatIAExAAZCCIaEIAExAAdCEIaEQgKIQv///wCDIhJ+fCACMwAVIAIxABdCEIZCgID8AIOEIhUgOUEFdkH///8Aca0iFn58IAEzAAAgATEAAkIQhkKAgPwAg4QiFyACKAAXIjlBBXZB////AHGtIhh+fCAEIAV+IAkgC358IAggDH58IA0gEH58IAYgDn58IAcgEn58IAogD358IBEgFn58IBUgF358Ih1CgIBAfSIeQhWIfCITIBNCgIBAfSIgQoCAgH+DfSA5QRh2rSACMQAbQgiGhCACMQAcQhCGhEICiEL///8AgyITIAEoABxBB3atIhl+IDpBGHatIAExABtCCIaEIAExABxCEIaEQgKIQv///wCDIhogAigAHEEHdq0iG358IAMgG34gGCAZfnwgEyAafnwiIUKAgEB9Ih9CFYh8IiIgIkKAgEB9IhxCgICA/////wCDfSIiQpPYKH58ICEgH0KAgID/////AIN9IBUgGX4gGCAafnwgBCAbfnwgAyATfnwgAyAYfiARIBl+fCAVIBp+fCAJIBt+fCAEIBN+fCIjQoCAQH0iFEIViHwiH0KAgEB9IiRCFYh8IiFCmNocfnwgHyAkQoCAgH+DfSIfQuf2J358ICMgFEKAgIB/g30gESAafiAHIBl+fCAEIBh+fCADIBV+fCAGIBt+fCAJIBN+fCAKIBl+IAcgGn58IAMgEX58IAkgGH58IAQgFX58IAwgG358IAYgE358IhRCgIBAfSIkQhWIfCIlQoCAQH0iJkIViHwiI0LTjEN+fCAdIAUgCX4gBiALfnwgCCAQfnwgDSAPfnwgDCAOfnwgByAWfnwgCiASfnwgESAXfnwgBSAGfiALIAx+fCAIIA9+fCANIBJ+fCAOIBB+fCAHIBd+fCAKIBZ+fCIpQoCAQH0iKkIViHwiK0KAgEB9IixCFYh8IB5CgICAf4N9ICFCk9gofnwgH0KY2hx+fCAjQuf2J358Ii1CgIBAfSIuQhWHfCIvQoCAQH0iMEIVhyAFIBp+IAMgC358IAggCX58IAYgDX58IAQgDn58IAcgEH58IAogDH58IA8gEX58IBYgGH58IBIgFX58IBMgF358Ih4gGSAbfiIdIB1CgIBAfSInQoCAgP////8Dg30gHEIViHwiHUKT2Ch+ICBCFYh8ICJCmNocfnx8ICFC5/YnfnwgH0LTjEN+fCAeQoCAQH0iMUKAgIB/g30gI0LRqwh+fCIcfCAlICZCgICAf4N9IBQgJ0IViCIeQoOhVn58ICRCgICAf4N9IAMgB34gDSAZfnwgCiAafnwgBCARfnwgBiAYfnwgCSAVfnwgECAbfnwgDCATfnwgDSAafiAIIBl+fCAEIAd+fCADIAp+fCAJIBF+fCAMIBh+fCAGIBV+fCAPIBt+fCAQIBN+fCIUQoCAQH0iJEIViHwiJUKAgEB9IiZCFYh8IidCgIBAfSIoQhWHfCIgQoOhVn58IBxCgIBAfSIyQoCAgH+DfSIcIBxCgIBAfSIzQoCAgH+DfSAvIDBCgICAf4N9ICBC0asIfnwgJyAoQoCAgH+DfSAdQoOhVn4gHkLRqwh+fCAlfCAmQoCAgH+DfSAUIB5C04xDfnwgHULRqwh+fCAiQoOhVn58ICRCgICAf4N9IAMgDX4gCCAafnwgDiAZfnwgByAJfnwgBCAKfnwgBiARfnwgECAYfnwgDCAVfnwgEiAbfnwgDyATfnwgAyAIfiALIBl+fCAEIA1+fCAOIBp+fCAGIAd+fCAJIAp+fCAMIBF+fCAPIBh+fCAQIBV+fCAWIBt+fCASIBN+fCIkQoCAQH0iJUIViHwiJkKAgEB9Ii9CFYh8IjBCgIBAfSInQhWHfCIUQoCAQH0iKEIVh3wiHEKDoVZ+fCAtIC5CgICAf4N9ICsgLEKAgIB/g30gH0KT2Ch+fCAjQpjaHH58ICkgKkKAgIB/g30gBSAMfiALIBB+fCAIIBJ+fCANIBZ+fCAOIA9+fCAKIBd+fCAFIBB+IAsgD358IAggFn58IA0gF358IA4gEn58IilCgIBAfSIqQhWIfCIrQoCAQH0iLEIViHwgI0KT2Ch+fCItQoCAQH0iLkIVh3wiNEKAgEB9IjVCFYd8ICBC04xDfnwgHELRqwh+fCAUIChCgICAf4N9IhRCg6FWfnwiKEKAgEB9IjZCFYd8IjdCgIBAfSI4QhWHfCA3IDhCgICAf4N9ICggNkKAgIB/g30gNCA1QoCAgH+DfSAgQuf2J358IBxC04xDfnwgFELRqwh+fCAwICdCgICAf4N9IB1C04xDfiAeQuf2J358ICJC0asIfnwgIUKDoVZ+fCAmfCAvQoCAgH+DfSAdQuf2J34gHkKY2hx+fCAiQtOMQ358ICR8ICFC0asIfnwgH0KDoVZ+fCAlQoCAgH+DfSAFIBl+IAsgGn58IAQgCH58IAkgDX58IAMgDn58IAcgDH58IAYgCn58IBAgEX58IBIgGH58IA8gFX58IBcgG358IBMgFn58IDFCFYh8IgZCgIBAfSIMQhWIfCINQoCAQH0iCUIVh3wiBEKAgEB9IgdCFYd8IgNCg6FWfnwgLSAuQoCAgH+DfSAgQpjaHH58IBxC5/YnfnwgFELTjEN+fCADQtGrCH58IAQgB0KAgIB/g30iBEKDoVZ+fCIHQoCAQH0iCkIVh3wiEEKAgEB9IhFCFYd8IBAgEUKAgIB/g30gByAKQoCAgH+DfSArICxCgICAf4N9ICBCk9gofnwgHEKY2hx+fCAUQuf2J358IA0gCUKAgIB/g30gHUKY2hx+IB5Ck9gofnwgIkLn9id+fCAhQtOMQ358IB9C0asIfnwgBnwgI0KDoVZ+fCAMQoCAgH+DfSAyQhWHfCIMQoCAQH0iDUIVh3wiBkKDoVZ+fCADQtOMQ358IARC0asIfnwgKSAqQoCAgH+DfSAFIA9+IAsgEn58IAggF358IA4gFn58IAUgEn4gCyAWfnwgDiAXfnwiDkKAgEB9IglCFYh8IgdCgIBAfSIPQhWIfCAcQpPYKH58IBRCmNocfnwgBkLRqwh+fCADQuf2J358IARC04xDfnwiCkKAgEB9IhBCFYd8IhFCgIBAfSISQhWHfCARIAwgDUKAgIB/g30gM0IVh3wiDEKAgEB9Ig1CFYciCEKDoVZ+fCASQoCAgH+DfSAKIAhC0asIfnwgEEKAgIB/g30gByAPQoCAgH+DfSAUQpPYKH58IAZC04xDfnwgA0KY2hx+fCAEQuf2J358IA4gCyAXfiAFIBZ+fCAFIBd+IgVCgIBAfSILQhWIfCIHQoCAQH0iD0IViHwgCUKAgID///8Hg30gBkLn9id+fCADQpPYKH58IARCmNocfnwiA0KAgEB9Ig5CFYd8IglCgIBAfSIKQhWHfCAJIAhC04xDfnwgCkKAgIB/g30gAyAIQuf2J358IA5CgICAf4N9IAcgD0KAgID///8Hg30gBkKY2hx+fCAEQpPYKH58IAUgC0KAgID///8Bg30gBkKT2Ch+fCIFQoCAQH0iA0IVh3wiBEKAgEB9IgtCFYd8IAQgCEKY2hx+fCALQoCAgH+DfSAFIANCgICAf4N9IAhCk9gofnwiA0IVh3wiCEIVh3wiBkIVh3wiDkIVh3wiCUIVh3wiB0IVh3wiD0IVh3wiCkIVh3wiEEIVh3wiEUIVh3wiEkIVhyAMIA1CgICAf4N9fCILQhWHIgVCk9gofiADQv///wCDfCIEPAAAIAAgBEIIiDwAASAAIAVCmNocfiAIQv///wCDfCAEQhWHfCIDQguIPAAEIAAgA0IDiDwAAyAAIARCEIhCH4MgA0IFhoQ8AAIgACAFQuf2J34gBkL///8Ag3wgA0IVh3wiBEIGiDwABiAAIARCAoYgA0KAgOAAg0ITiIQ8AAUgACAFQtOMQ34gDkL///8Ag3wgBEIVh3wiA0IJiDwACSAAIANCAYg8AAggACADQgeGIARCgID/AINCDoiEPAAHIAAgBULRqwh+IAlC////AIN8IANCFYd8IgRCDIg8AAwgACAEQgSIPAALIAAgBEIEhiADQoCA+ACDQhGIhDwACiAAIAVCg6FWfiAHQv///wCDfCAEQhWHfCIDQgeIPAAOIAAgA0IBhiAEQoCAwACDQhSIhDwADSAAIA9C////AIMgA0IVh3wiBUIKiDwAESAAIAVCAog8ABAgACAFQgaGIANCgID+AINCD4iEPAAPIAAgCkL///8AgyAFQhWHfCIDQg2IPAAUIAAgA0IFiDwAEyAAIBBC////AIMgA0IVh3wiBDwAFSAAIANCA4YgBUKAgPAAg0ISiIQ8ABIgACAEQgiIPAAWIAAgEUL///8AgyAEQhWHfCIFQguIPAAZIAAgBUIDiDwAGCAAIARCEIhCH4MgBUIFhoQ8ABcgACASQv///wCDIAVCFYd8IgNCBog8ABsgACADQgKGIAVCgIDgAINCE4iEPAAaIAAgA0IVhyIEIAtC////AIN8IgVCEYg8AB8gACAFQgmIPAAeIAAgBUIHhiADQoCA/wCDQg6IhDwAHCAAIASnIAunakEBdq08AB0L7gQBD38gASgCDCEEIAEoAgghBSABKAIEIQYjAEFAakFAcSIDIAEoAgAiAUH/AXFBAnRBoJcCaigCADYCACADIAZBBnZB/AdxQaCXAmooAgA2AgQgAyAFQQ52QfwHcUGglwJqKAIANgIIIAMgBEEWdkH8B3FBoJcCaigCADYCDCADIAZB/wFxQQJ0QaCXAmooAgA2AhAgAyAFQQZ2QfwHcUGglwJqKAIANgIUIAMgBEEOdkH8B3FBoJcCaigCADYCGCADIAFBFnZB/AdxQaCXAmooAgA2AhwgAyAFQf8BcUECdEGglwJqKAIANgIgIAMgBEEGdkH8B3FBoJcCaigCADYCJCADIAFBDnZB/AdxQaCXAmooAgA2AiggAyAGQRZ2QfwHcUGglwJqKAIANgIsIAMgBEH/AXFBAnRBoJcCaigCADYCMCADIAFBBnZB/AdxQaCXAmooAgA2AjQgAyAGQQ52QfwHcUGglwJqKAIANgI4IAMgBUEWdkH8B3FBoJcCaigCADYCPCADKAIMIQEgAygCACEEIAMoAgQhBSADKAIIIQYgAygCHCEHIAMoAhAhCCADKAIUIQkgAygCGCEKIAMoAiwhCyADKAIgIQwgAygCJCENIAMoAighDiACKAIAIQ8gAigCBCEQIAIoAgghESAAIAIoAgwgAygCMCADKAI0QQh3cyADKAI4QRB3cyADKAI8QRh3c3M2AgwgACARIAwgDUEId3MgDkEQd3MgC0EYd3NzNgIIIAAgECAIIAlBCHdzIApBEHdzIAdBGHdzczYCBCAAIA8gBCAFQQh3cyAGQRB3cyABQRh3c3M2AgALCwAgAEEAIAEQDBoLBABBIAuCBAEDfyACQYAETwRAIAAgASACEAMgAA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCyADQXxxIQQCQCADQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAvyAgICfwF+AkAgAkUNACAAIAE6AAAgACACaiIDQQFrIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0EDayABOgAAIANBAmsgAToAACACQQdJDQAgACABOgADIANBBGsgAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAsEAEEQCxkBAX9BiKoCKAIAIgAEQCAAERYACxCLAQAL1AECBX8CfgJ/IAJCAFIEQCAAQeABaiEHIABB4ABqIQMgACgA4AIhBANAIAMgBGohBkGAAiAEayIFrSIIIAJaBEAgBiABIAKnIgEQCxogACAAKADgAiABajYA4AJBAAwDCyAGIAEgBRALGiAAIAAoAOACIAVqNgDgAiAAIAApAEAiCUKAAXw3AEAgACAAKQBIIAlC/35WrXw3AEggACADEFIgAyAHQYABEAsaIAAgACgA4AJBgAFrIgQ2AOACIAEgBWohASACIAh9IgJCAFINAAsLQQALC58EARN/IAEoAgQhAiABKAIsIQMgASgCCCEEIAEoAjAhBSABKAIMIQYgASgCNCEHIAEoAhAhCCABKAI4IQkgASgCFCEKIAEoAjwhCyABKAIYIQwgAUFAayINKAIAIQ4gASgCHCEPIAEoAkQhECABKAIgIREgASgCSCESIAEoAiQhEyABKAJMIRQgACABKAIAIAEoAihqNgIAIAAgEyAUajYCJCAAIBEgEmo2AiAgACAPIBBqNgIcIAAgDCAOajYCGCAAIAogC2o2AhQgACAIIAlqNgIQIAAgBiAHajYCDCAAIAQgBWo2AgggACACIANqNgIEIAEoAgQhAiABKAIsIQMgASgCCCEEIAEoAjAhBSABKAIMIQYgASgCNCEHIAEoAhAhCCABKAI4IQkgASgCFCEKIAEoAjwhCyABKAIYIQwgDSgCACENIAEoAhwhDiABKAJEIQ8gASgCICEQIAEoAkghESABKAIAIRIgASgCKCETIAAgASgCTCABKAIkazYCTCAAIBEgEGs2AkggACAPIA5rNgJEIABBQGsgDSAMazYCACAAIAsgCms2AjwgACAJIAhrNgI4IAAgByAGazYCNCAAIAUgBGs2AjAgACADIAJrNgIsIAAgEyASazYCKCAAIAEpAlA3AlAgACABKQJYNwJYIAAgASkCYDcCYCAAIAEpAmg3AmggACABKQJwNwJwIABB+ABqIAFB+ABqQZANEAYL6AQBCX8gACABKAIgIgUgASgCHCIGIAEoAhgiByABKAIUIgggASgCECIJIAEoAgwiCiABKAIIIgQgASgCBCIDIAEoAgAiAiABKAIkIgFBE2xBgICACGpBGXZqQRp1akEZdWpBGnVqQRl1akEadWpBGXVqQRp1akEZdWpBGnUgAWpBGXVBE2wgAmoiAjoAACAAIAJBEHY6AAIgACACQQh2OgABIAAgAyACQRp1aiIDQQ52OgAFIAAgA0EGdjoABCAAIAJBGHZBA3EgA0ECdHI6AAMgACAEIANBGXVqIgJBDXY6AAggACACQQV2OgAHIAAgAkEDdCADQYCAgA5xQRZ2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ABcgAy0AD3I6AA8gAyAALQAYIAMtAA9yOgAPIAMgAC0AGSADLQAPcjoADyADIAAtABogAy0AD3I6AA8gAyAALQAbIAMtAA9yOgAPIAMgAC0AHCADLQAPcjoADyADIAAtAB0gAy0AD3I6AA8gAyAALQAeIAMtAA9yOgAPIAMgAC0AHyADLQAPcjoADyADLQAPQRd0QYCAgARrQR91IQQLIANBEGokACAEC30BA38CQAJAIAAiAUEDcUUNACABLQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQFBgIKECCACKAIAIgNrIANyQYCBgoR4cUGAgYKEeEYNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrCycAIAJBgAJPBEBB1gpB/wlB6wBB4wgQAQALIAAgASACQf8BcRCDAQv7AwECf0F/IQQCQCACQcAASw0AIANBwQBrQUBJDQACQCABQQAgAhtFBEAgA0H/AXEiAUHBAGtB/wFxQb8BTQRAEA4ACyAAQUBrQQBBpQIQDBogAEL5wvibkaOz8NsANwA4IABC6/qG2r+19sEfNwAwIABCn9j52cKR2oKbfzcAKCAAQtGFmu/6z5SH0QA3ACAgAELx7fT4paf9p6V/NwAYIABCq/DT9K/uvLc8NwAQIABCu86qptjQ67O7fzcACCAAIAGtQoiS95X/zPmE6gCFNwAADAELAn8gAkH/AXEhAiMAQYABayIFJAACQCADQf8BcSIDQcEAa0H/AXFBvwFNDQAgAUUNACACQcEAa0H/AXFBvwFNDQAgAEFAa0EAQaUCEAwaIABC+cL4m5Gjs/DbADcAOCAAQuv6htq/tfbBHzcAMCAAQp/Y+dnCkdqCm383ACggAELRhZrv+s+Uh9EANwAgIABC8e30+KWn/aelfzcAGCAAQqvw0/Sv7ry3PDcAECAAQrvOqqbY0Ouzu383AAggACADrSACrUIIhoRCiJL3lf/M+YTqAIU3AAAgAEHgAGogBUEAQYABEAwgASACEAsiAUGAARALGiAAIAAoAOACQYABajYA4AIgAUGAARAJIAFBgAFqJABBAAwBCxAOAAsNAQtBACEECyAECw0AIAAgASACECQaQQAL6AUCB34DfyMAQaACayILJAACQCACUA0AIAAgACkDICIDIAJCA4Z8NwMgIABBKGohCkLAACADQgOIQj+DIgR9IgggAlgEQEIAIQMgBEI/hUIDWgRAIAhC/ACDIQcDQCAKIAMgBHynaiABIAOnai0AADoAACAKIANCAYQiCSAEfKdqIAEgCadqLQAAOgAAIAogA0IChCIJIAR8p2ogASAJp2otAAA6AAAgCiADQgOEIgkgBHynaiABIAmnai0AADoAACADQgR8IQMgBUIEfCIFIAdSDQALCyAIQgODIgVCAFIEQANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIANCAXwhAyAGQgF8IgYgBVINAAsLIAAgCiALIAtBgAJqIgwQYiABIAinaiEBIAIgCH0iAkI/VgRAA0AgACABIAsgDBBiIAFBQGshASACQkB8IgJCP1YNAAsLAkAgAlANACACQgODIQRCACEGQgAhAyACQgRaBEAgAkI8gyEFQgAhAgNAIAogA6ciAGogACABai0AADoAACAKIABBAXIiDGogASAMai0AADoAACAKIABBAnIiDGogASAMai0AADoAACAKIABBA3IiAGogACABai0AADoAACADQgR8IQMgAkIEfCICIAVSDQALCyAEUA0AA0AgCiADpyIAaiAAIAFqLQAAOgAAIANCAXwhAyAGQgF8IgYgBFINAAsLIAtBoAIQCQwBC0IAIQMgAkIEWgRAIAJCfIMhCANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIAogA0IBhCIHIAR8p2ogASAHp2otAAA6AAAgCiADQgKEIgcgBHynaiABIAenai0AADoAACAKIANCA4QiByAEfKdqIAEgB6dqLQAAOgAAIANCBHwhAyAFQgR8IgUgCFINAAsLIAJCA4MiAlANAANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIANCAXwhAyAGQgF8IgYgAlINAAsLIAtBoAJqJABBAAsEAEEYCw0AIAAgASACEBcaQQALBABBCAv3EgIVfgN/IAAgACgALCIWQQV2Qf///wBxrSAAKAA8QQN2rSICQoOhVn4gADMAKiAAMQAsQhCGQoCA/ACDhHwiC0KAgEB9IghCFYd8IgFCg6FWfiAANQAxQgeIQv///wCDIgNC04xDfiAAKAAXIhdBGHatIAAxABtCCIaEIAAxABxCEIaEQgKIQv///wCDfCAAKAA0IhhBBHZB////AHGtIgRC5/YnfnwgFkEY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QbABaiQAC7sGAQl/IwBB4ABrIgMkACACQcEATwRAIAAQYxogACABIAKtECQaIAAgAxAtGkEgIQIgAyEBCyAAEGMaIANCtuzYsePGjZs2NwNYIANCtuzYsePGjZs2NwNQIANCtuzYsePGjZs2NwNIIANBQGsiCkK27Nix48aNmzY3AwAgA0K27Nix48aNmzY3AzggA0K27Nix48aNmzY3AzAgA0K27Nix48aNmzY3AyggA0K27Nix48aNmzY3AyACQCACRQ0AIAJBBE8EQCACQfwAcSEGA0AgA0EgaiILIARqIgUgBS0AACABIARqLQAAczoAACALIARBAXIiBWoiCCAILQAAIAEgBWotAABzOgAAIAsgBEECciIFaiIIIAgtAAAgASAFai0AAHM6AAAgCyAEQQNyIgVqIgggCC0AACABIAVqLQAAczoAACAEQQRqIQQgB0EEaiIHIAZHDQALCyACQQNxIgdFDQADQCADQSBqIARqIgYgBi0AACABIARqLQAAczoAACAEQQFqIQQgCUEBaiIJIAdHDQALCyAAIANBIGpCwAAQJBogAEHoAGoiABBjGiADQty48eLFi5eu3AA3A1ggA0LcuPHixYuXrtwANwNQIANC3Ljx4sWLl67cADcDSCAKQty48eLFi5eu3AA3AwAgA0LcuPHixYuXrtwANwM4IANC3Ljx4sWLl67cADcDMCADQty48eLFi5eu3AA3AyggA0LcuPHixYuXrtwANwMgAkAgAkUNAEEAIQlBACEEIAJBBE8EQCACQfwAcSEKQQAhBwNAIANBIGoiCCAEaiIGIAYtAAAgASAEai0AAHM6AAAgCCAEQQFyIgZqIgUgBS0AACABIAZqLQAAczoAACAIIARBAnIiBmoiBSAFLQAAIAEgBmotAABzOgAAIAggBEEDciIGaiIFIAUtAAAgASAGai0AAHM6AAAgBEEEaiEEIAdBBGoiByAKRw0ACwsgAkEDcSICRQ0AA0AgA0EgaiAEaiIHIActAAAgASAEai0AAHM6AAAgBEEBaiEEIAlBAWoiCSACRw0ACwsgACADQSBqIgBCwAAQJBogAEHAABAJIANBIBAJIANB4ABqJABBAAs7AQF/IwBBQGoiAiQAIAAgAhAdGiAAQdABaiIAIAJCwAAQFxogACABEB0aIAJBwAAQCSACQUBrJABBAAtyACAAQgA3A0AgAEIANwNIIABBsIwCKQMANwMAIABBuIwCKQMANwMIIABBwIwCKQMANwMQIABByIwCKQMANwMYIABB0IwCKQMANwMgIABB2IwCKQMANwMoIABB4IwCKQMANwMwIABB6IwCKQMANwM4QQALIwAgAUKAgICAEFoEQBAOAAsgACABIAIgA0G0nwIoAgARDwAL5QgBGH8jAEHAAmsiAiQAIABBKGoiFyABEDYgAEIANwJUIABBATYCUCAAQgA3AlwgAEIANwJkIABCADcCbCAAQQA2AnQgAkHwAWoiBCAXEAUgAkHAAWoiDiAEQbAMEAYgAiACKALAAUEBajYCwAEgAiACKALwAUEBayIDNgLwASACKAL0ASENIAIoAvgBIQUgAigC/AEhBiACKAKAAiEHIAIoAoQCIQggAigCiAIhCSACKAKMAiEKIAIoApACIQsgAigClAIhDCAAIAQgDhAGIAAgABBuIAAgBCAAEAYgAkGQAWoiBCAAEAUgBCAEIA4QBiACIAIoArQBIgQgDGs2AoQBIAIgAigCsAEiDiALazYCgAEgAiACKAKsASIPIAprNgJ8IAIgAigCqAEiECAJazYCeCACIAIoAqQBIhEgCGs2AnQgAiACKAKgASISIAdrNgJwIAIgAigCnAEiEyAGazYCbCACIAIoApgBIhQgBWs2AmggAiACKAKUASIVIA1rNgJkIAIgAigCkAEiFiADazYCYCACIAQgDGo2AlQgAiALIA5qNgJQIAIgCiAPajYCTCACIAkgEGo2AkggAiAIIBFqNgJEIAIgByASajYCQCACIAYgE2o2AjwgAiAFIBRqNgI4IAIgDSAVajYCNCACIAMgFmo2AjAgAiACQeAAahARIAJBIBAaIQQgAiACQTBqEBEgAkEgEBohDyACIABB4AwQBiAAKAIEIQwgACgCCCELIAAoAgwhCiAAKAIQIQkgACgCFCEIIAAoAhghByAAKAIcIQYgACgCICEFIAAoAgAhDiACKAIAIRAgAigCBCERIAIoAgghEiACKAIMIRMgAigCECEUIAIoAhQhFSACKAIYIRYgAigCHCEYIAIoAiAhGSAAIARBAWsiAyAAKAIkIg0gAigCJHNxIA1zIg02AiQgACAFIAUgGXMgA3FzIgU2AiAgACAGIAYgGHMgA3FzIgY2AhwgACAHIAcgFnMgA3FzIgc2AhggACAIIAggFXMgA3FzIgg2AhQgACAJIAkgFHMgA3FzIgk2AhAgACAKIAogE3MgA3FzIgo2AgwgACALIAsgEnMgA3FzIgs2AgggACAMIAwgEXMgA3FzIgw2AgQgACAOIA4gEHMgA3FzIgM2AgAgAkGgAmogABARIABBACACLQCgAkEBcSABLQAfQQd2c0GAqgItAABBAnZzayIBIA1BACANa3NxIA1zNgIkIAAgBUEAIAVrcyABcSAFczYCICAAIAZBACAGa3MgAXEgBnM2AhwgACAHQQAgB2tzIAFxIAdzNgIYIAAgCEEAIAhrcyABcSAIczYCFCAAIAlBACAJa3MgAXEgCXM2AhAgACAKQQAgCmtzIAFxIApzNgIMIAAgC0EAIAtrcyABcSALczYCCCAAIAxBACAMa3MgAXEgDHM2AgQgACADQQAgA2tzIAFxIANzNgIAIABB+ABqIAAgFxAGIAJBwAJqJAAgBCAPckEBawvKCAEDfyMAQcABayICJAAgAkGQAWoiBCABEAUgAkHgAGoiAyAEEAUgAyADEAUgAyABIAMQBiAEIAQgAxAGIAJBMGoiASAEEAUgAyADIAEQBiABIAMQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSADIAEgAxAGIAEgAxAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASADEAYgAiABEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgASACIAEQBiABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSADIAEgAxAGIAEgAxAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASADEAYgAiABEAVBASEBA0AgAiACEAUgAUEBaiIBQeQARw0ACyACQTBqIgEgAiABEAYgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgAkHgAGoiAyABIAMQBiADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSAAIAMgAkGQAWoQBiACQcABaiQAC/QEARl+IAExAB8hAiABMQAeIQYgATEAHSEOIAExAAYhByABMQAFIQggATEABCEDIAExAAkhDyABMQAIIRAgATEAByERIAExAAwhCSABMQALIQogATEACiELIAExAA8hDCABMQAOIRIgATEADSETIAExABwhBCABMQAbIRQgATEAGiEVIAExABkhBSABMQAYIRYgATEAFyEXIAE1AAAhGCAAIAExABVCD4YgATEAFEIHhoQgATEAFkIXhoQgATUAECIZQoCAgAh8IhpCGYh8Ig0gDUKAgIAQfCINQoCAgOAPg30+AhggACAWQg2GIBdCBYaEIAVCFYaEIgUgDUIaiHwgBUKAgIAIfCIFQoCAgPADg30+AhwgACAUQgyGIBVCBIaEIARCFIaEIAVCGYh8IgQgBEKAgIAQfCIEQoCAgOAPg30+AiAg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ASACIAk2AsgBIAIgCjYCxAEgAiALQQFqNgLAASACQeAAaiISIAJBwAFqIhMQBSACQTBqIhBBsAwgDBAGIAIoAmAhASACKAIwIQMgAigCZCEEIAIoAjQhBSACKAJoIQYgAigCOCEHIAIoAmwhCCACKAI8IQkgAigCcCEKIAIoAkAhCyACKAJ0IQwgAigCRCEOIAIoAnghDyACKAJIIRQgAigCfCEVIAIoAkwhFiACKAKAASEXIAIoAlAhGCACQQAgAigCVCACKAKEAWprNgJUIAJBACAXIBhqazYCUCACQQAgFSAWams2AkwgAkEAIA8gFGprNgJIIAJBACAMIA5qazYCRCACQQAgCiALams2AkAgAkEAIAggCWprNgI8IAJBACAGIAdqazYCOCACQQAgBCAFams2AjQgAkEAIAEgA2prNgIwIAIgECASEAYgAkIANwKUAyACQgA3ApwDIAJBADYCpAMgAkIANwKEAyACQQE2AoADIAJCADcCjAMgAkGwA2oiASACQYADaiACEGohDyAAIAEgExAGIABBKGoiAyABIAAQBiADIAMgEBAGIAAgACANEAYgACAAKAIkQQF0IgQ2AiQgACAAKAIgQQF0IgU2AiAgACAAKAIcQQF0IgY2AhwgACAAKAIYQQF0Igc2AhggACAAKAIUQQF0Igg2AhQgACAAKAIQQQF0Igk2AhAgACAAKAIMQQF0Igo2AgwgACAAKAIIQQF0Igs2AgggACAAKAIEQQF0Igw2AgQgACAAKAIAQQF0Ig42AgAgAkHgA2oiDSAAEBEgAEEAIAItAOADQQFxayIBIARBACAEa3NxIARzNgIkIAAgBUEAIAVrcyABcSAFczYCICAAIAZBACAGa3MgAXEgBnM2AhwgACAHQQAgB2tzIAFxIAdzNgIYIAAgCEEAIAhrcyABcSAIczYCFCAAIAlBACAJa3MgAXEgCXM2AhAgACAKQQAgCmtzIAFxIApzNgIMIAAgC0EAIAtrcyABcSALczYCCCAAIAxBACAMa3MgAXEgDHM2AgQgACAOQQAgDmtzIAFxIA5zNgIAIAMgESADEAYgAEIANwJUIABBATYCUCAAQgA3AlwgAEIANwJkIABCADcCbCAAQQA2AnQgAEH4AGoiASAAIAMQBiANIAEQESACLQDgAyEAIA0gAxARQQAgDUEgEBpBASAPayAAQQFxcnJrIQMLIAJBgARqJAAgAwuFBwEKfyMAQeADayICJAADQCACQaACaiIFIANBAXRqIgYgASADai0AACIHQQR2OgABIAYgB0EPcToAACADQQFyIgZBAXQgBWoiByABIAZqLQAAIgZBBHY6AAEgByAGQQ9xOgAAIANBAmoiA0EgRw0AC0EAIQEDQCACQaACaiAEaiIDIAMtAAAgAWoiASABQQhqIgFB8AFxazoAACADIAMtAAEgAcBBBHVqIgEgAUEIaiIBQfABcWs6AAEgAyADLQACIAHAQQR1aiIBIAFBCGoiAUHwAXFrOgACIAHAQQR1IQEgBEEDaiIEQT9HDQALIAIgAi0A3wIgAWo6AN8CIABCADcCICAAQgA3AhggAEIANwIQIABCADcCCCAAQgA3AgAgAEIANwIsIABBATYCKCAAQgA3AjQgAEIANwI8IABCADcCRCAAQoCAgIAQNwJMIABB1ABqQQBBzAAQDBogAEH4AGohCyAAQdAAaiEHIABBKGohCSACQdABaiEBIAJBqAFqIQYgAkH4AWohBEEBIQMDQCACQQhqIgggA0EBdiACQaACaiADaiwAABCPASACQYABaiIFIAAgCBBtIAAgBSAEEAYgCSAGIAEQBiAHIAEgBBAGIAsgBSAGEAYgA0E+SSADQQJqIQMNAAsgAiAAKQIgNwOIAyACIAApAhg3A4ADIAIgACkCEDcD+AIgAiAAKQIINwPwAiACIAApAgA3A+gCIAIgCSkCCDcDmAMgAiAJKQIQNwOgAyACIAkpAhg3A6gDIAIgCSkCIDcDsAMgAiAJKQIANwOQAyACIAcpAgg3A8ADIAIgBykCEDcDyAMgAiAHKQIYNwPQAyACIAcpAiA3A9gDIAIgBykCADcDuAMgBSACQegCaiIKEBggCiAFIAQQBiACQZADaiIDIAYgARAGIAJBuANqIgggASAEEAYgBSAKEBggCiAFIAQQBiADIAYgARAGIAggASAEEAYgBSAKEBggCiAFIAQQBiADIAYgARAGIAggASAEEAYgBSAKEBggACAFIAQQBiAJIAYgARAGIAcgASAEEAYgCyAFIAYQBkEAIQMDQCACQQhqIgggA0EBdiACQaACaiADaiwAABCPASACQYABaiIFIAAgCBBtIAAgBSAEEAYgCSAGIAEQBiAHIAEgBBAGIAsgBSAGEAYgA0E+SSADQQJqIQMNAAsgAkHgA2okAAuLAQEBfyMAQRBrIgIgADYCDCACIAE2AghBACEAIAJBADYCBANAIAIgAigCBCACKAIMIABqLQAAIAIoAgggAGotAABzcjYCBCACIAIoAgQgAEEBciIBIAIoAgxqLQAAIAIoAgggAWotAABzcjYCBCAAQQJqIgBBIEcNAAsgAigCBEEBa0EIdkEBcUEBaws0AQJ/IwBBIGsiAyQAQX8hBCADIAIgARAfRQRAIABB0JYCIANBABArIQQLIANBIGokACAECxYAIAFBIBAZIAAgAUGMlwIoAgARAAAL6AIBAn8CQCAAIAFGDQAgASAAIAJqIgRrQQAgAkEBdGtNBEAgACABIAIQCw8LIAAgAXNBA3EhAwJAAkAgACABSQRAIAMEQCAAIQMMAwsgAEEDcUUEQCAAIQMMAgsgACEDA0AgAkUNBCADIAEtAAA6AAAgAUEBaiEBIAJBAWshAiADQQFqIgNBA3ENAAsMAQsCQCADDQAgBEEDcQRAA0AgAkUNBSAAIAJBAWsiAmoiAyABIAJqLQAAOgAAIANBA3ENAAsLIAJBA00NAANAIAAgAkEEayICaiABIAJqKAIANgIAIAJBA0sNAAsLIAJFDQIDQCAAIAJBAWsiAmogASACai0AADoAACACDQALDAILIAJBA00NAANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIAJBBGsiAkEDSw0ACwsgAkUNAANAIAMgAS0AADoAACADQQFqIQMgAUEBaiEBIAJBAWsiAg0ACwsgAAuAAgEDfwJ/AkACQAJAIAEiA0H/AXEiAQRAIABBA3EEQANAIAAtAAAiAkUNBSABIAJGDQUgAEEBaiIAQQNxDQALC0GAgoQIIAAoAgAiAmsgAnJBgIGChHhxQYCBgoR4Rw0BIAFBgYKECGwhBANAQYCChAggAiAEcyIBayABckGAgYKEeHFBgIGChHhHDQIgACgCBCECIABBBGoiASEAIAJBgIKECCACa3JBgIGChHhxQYCBgoR4Rg0ACwwCCyAAECAgAGoMAwsgACEBCwNAIAEiAC0AACICRQ0BIABBAWohASACIANB/wFxRw0ACwsgAAsiAEEAIAAtAAAgA0H/AXFGGwtgAQJ/IAJFBEBBAA8LIAAtAAAiAwR/AkADQCADIAEtAAAiBEcNASAERQ0BIAJBAWsiAkUNASABQQFqIQEgAC0AASEDIABBAWohACADDQALQQAhAwsgAwVBAAsgAS0AAGsLUgECf0HwlgIoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQBA0BC0HwpQJBMDYCAEF/DwtB8JYCIAA2AgAgAQs5AQF/IwBBIGsiAiQAIAAgAhAtGiAAQegAaiIAIAJCIBAkGiAAIAEQLRogAkEgEAkgAkEgaiQAQQALlgEBAX8jAEHQAWsiAyQAIANCADcDSCADQbiMAikDADcDCCADQcCMAikDADcDECADQciMAikDADcDGCADQdCMAikDADcDICADQdiMAikDADcDKCADQeCMAikDADcDMCADQeiMAikDADcDOCADQgA3A0AgA0GwjAIpAwA3AwAgAyABIAIQFxogAyAAEB0aIANB0AFqJABBAAsQACAAIAEgAiADQQgQaUEACxAAIAAgASACIANBDBBpQQALEAAgACABIAIgA0EUEGlBAAuhEQIsfwV+IwBBoAZrIgIkACABKAIsIQMgASgCVCEFIAEoAjAhDCABKAJYIQ0gASgCNCEOIAEoAlwhDyABKAI4IRAgASgCYCERIAEoAjwhEiABKAJkIRMgAUFAayIUKAIAIRYgASgCaCEEIAEoAkQhBiABKAJsIQcgASgCSCEIIAEoAnAhCSABKAIoIQogASgCUCELIAIgASgCTCIVIAEoAnQiF2o2AsQCIAIgCCAJajYCwAIgAiAGIAdqNgK8AiACIAQgFmo2ArgCIAIgEiATajYCtAIgAiAQIBFqNgKwAiACIA4gD2o2AqwCIAIgDCANajYCqAIgAiADIAVqNgKkAiACIAogC2o2AqACIAIgFyAVazYCJCACIAkgCGs2AiAgAiAHIAZrNgIcIAIgBCAWazYCGCACIBMgEms2AhQgAiARIBBrNgIQIAIgDyAOazYCDCACIA0gDGs2AgggAiAFIANrNgIEIAIgCyAKazYCACACQaACaiIFIAUgAhAGIAJB8AFqIgYgASABQShqIgMQBiACQcABaiIEIAYQBSAEIAUgBBAGIAJCADcCxAMgAkIANwLMAyACQQA2AtQDIAJCADcCtAMgAkIANwK8AyACQQE2ArADIAJBwARqIgcgAkGwA2ogBBBqGiACQdAFaiIEIAcgBRAGIAJBoAVqIh8gByAGEAYgAkEwaiIdIAQgHxAGIB0gHSABQfgAaiIFEAYgAkGQBGogAUHgDBAGIAJB4ANqIANB4AwQBiACQfAEaiAEQYAXEAYgAkHQAmoiAyAFIB0QBiACQYADaiIYIAMQESACLQCAAyEDIAIgASkCICIuNwOwASACIAEpAhgiLzcDqAEgAiABKQIQIjA3A6ABIAIgASkCCCIxNwOYASACIAEpAgAiMjcDkAEgASgCLCEFIAEoAjAhDCABKAI0IQ0gASgCOCEOIAEoAjwhDyAUKAIAIRAgASgCRCERIAEoAkghEiABKAJMIRMgASgCKCEWIAIoAuQDIQogAigClAEhBCACKALsAyELIAIoApwBIQYgAigC9AMhFCACKAKkASEHIAIoAvwDIRUgAigCrAEhCCACKAKEBCEXIAIoArQBIQkgAigC4AMhHiACKALoAyEZIAIoAvADIRogAigC+AMhGyACQQAgA0EBcWsiAyAupyIcIAIoAoAEc3EgHHM2ArABIAIgGyAvpyIccyADcSAcczYCqAEgAiAaIDCnIhtzIANxIBtzNgKgASACIBkgMaciGnMgA3EgGnM2ApgBIAIgHiAypyIZcyADcSAZczYCkAEgAiAJIAkgF3MgA3FzNgK0ASACIAggCCAVcyADcXM2AqwBIAIgByAHIBRzIANxczYCpAEgAiAGIAYgC3MgA3FzNgKcASACIAQgBCAKcyADcXM2ApQBIAIoApAEIRcgAigClAQhHiACKAKYBCEZIAIoApwEIRogAigCoAQhGyACKAKkBCEcIAIoAqgEISAgAigCrAQhISACKAKwBCEiIAIoArQEISMgAigCoAUhBCACKALwBCEkIAIoAqQFIQYgAigC9AQhJSACKAKoBSEHIAIoAvgEISYgAigCrAUhCCACKAL8BCEnIAIoArAFIQkgAigCgAUhKCACKAK0BSEKIAIoAoQFISkgAigCuAUhCyACKAKIBSEqIAIoArwFIRQgAigCjAUhKyACKALABSEVIAIoApAFISwgAiACKALEBSItIAIoApQFcyADcSAtczYCxAUgAiAVIBUgLHMgA3FzNgLABSACIBQgFCArcyADcXM2ArwFIAIgCyALICpzIANxczYCuAUgAiAKIAogKXMgA3FzNgK0BSACIAkgCSAocyADcXM2ArAFIAIgCCAIICdzIANxczYCrAUgAiAHIAcgJnMgA3FzNgKoBSACIAYgBiAlcyADcXM2AqQFIAIgBCAEICRzIANxczYCoAUgAkHgAGoiBCACQZABaiAdEAYgGCAEEBEgASgCVCEEIAEoAlghBiABKAJcIQcgASgCYCEIIAEoAmQhCSABKAJoIQogASgCbCELIAEoAnAhFCABKAJQIRUgAiABKAJ0QQAgAi0AgANBAXFrIgEgEyATICNzIANxcyITQQAgE2tzcSATc2s2AqQDIAIgFCASIBIgInMgA3FzIhJBACASa3MgAXEgEnNrNgKgAyACIAsgESARICFzIANxcyIRQQAgEWtzIAFxIBFzazYCnAMgAiAKIBAgECAgcyADcXMiEEEAIBBrcyABcSAQc2s2ApgDIAIgCSAPIA8gHHMgA3FzIg9BACAPa3MgAXEgD3NrNgKUAyACIAggDiAOIBtzIANxcyIOQQAgDmtzIAFxIA5zazYCkAMgAiAHIA0gDSAacyADcXMiDUEAIA1rcyABcSANc2s2AowDIAIgBiAMIAwgGXMgA3FzIgxBACAMa3MgAXEgDHNrNgKIAyACIAQgBSAFIB5zIANxcyIFQQAgBWtzIAFxIAVzazYChAMgAiAVIAEgFiAWIBdzIANxcyIBQQAgAWtzcSABc2s2AoADIBggHyAYEAYgAkGABmogGBARIAJBACACLQCABkEBcWsiASACKAKAAyIDQQAgA2tzcSADczYCgAMgAiACKAKEAyIDQQAgA2tzIAFxIANzNgKEAyACIAIoAogDIgNBACADa3MgAXEgA3M2AogDIAIgAigCjAMiA0EAIANrcyABcSADczYCjAMgAiACKAKQAyIDQQAgA2tzIAFxIANzNgKQAyACIAIoApQDIgNBACADa3MgAXEgA3M2ApQDIAIgAigCmAMiA0EAIANrcyABcSADczYCmAMgAiACKAKcAyIDQQAgA2tzIAFxIANzNgKcAyACIAIoAqADIgNBACADa3MgAXEgA3M2AqADIAIgASACKAKkAyIBQQAgAWtzcSABczYCpAMgACAYEBEgAkGgBmokAAv4AQEKfwNAIAQgACADai0AACIBIANBgBVqIgItAABzciEEIAogASACLQDAAXNyIQogCSABIAItAKABc3IhCSAIIAEgAi0AgAFzciEIIAcgASACLQBgc3IhByAGIAEgAkFAay0AAHNyIQYgBSABIAItACBzciEFIANBAWoiA0EfRw0ACyAKIAAtAB9B/wBxIgBB/wBzIgFyQf8BcUEBayABIAlyQf8BcUEBayABIAhyQf8BcUEBayAHIABB+gBzckH/AXFBAWsgBiAAQQVzckH/AXFBAWsgACAFckH/AXFBAWsgACAEckH/AXFBAWtycnJycnJBCHZBAXELwQUBHH8jAEHAAmsiASQAIAFB8AFqIgMgABAFIAFBwAFqIgQgAEEoahAFIAFBkAFqIgIgAEHQAGoQBSABKALwASEAIAEoAsABIQUgASgC9AEhBiABKALEASEHIAEoAvgBIQggASgCyAEhCSABKAL8ASEKIAEoAswBIQsgASgCgAIhDCABKALQASENIAEoAoQCIQ4gASgC1AEhDyABKAKIAiEQIAEoAtgBIREgASgCjAIhEiABKALcASETIAEoApACIRQgASgC4AEhFSABIAEoAuQBIAEoApQCazYCVCABIBUgFGs2AlAgASATIBJrNgJMIAEgESAQazYCSCABIA8gDms2AkQgASANIAxrNgJAIAEgCyAKazYCPCABIAkgCGs2AjggASAHIAZrNgI0IAEgBSAAazYCMCABQTBqIhYgFiACEAYgASADIAQQBiABIAFBsAwQBiABQeAAaiACEAUgASgCMCEAIAEoAmAhBSABKAIAIQYgASgCNCEHIAEoAmQhCCABKAIEIQkgASgCOCEKIAEoAmghCyABKAIIIQwgASgCPCENIAEoAmwhDiABKAIMIQ8gASgCQCEQIAEoAnAhESABKAIQIRIgASgCRCETIAEoAnQhFCABKAIUIRUgASgCSCECIAEoAnghAyABKAIYIQQgASgCTCEXIAEoAnwhGCABKAIcIRkgASgCUCEaIAEoAoABIRsgASgCICEcIAEgASgCVCABKAKEASABKAIkams2AlQgASAaIBsgHGprNgJQIAEgFyAYIBlqazYCTCABIAIgAyAEams2AkggASATIBQgFWprNgJEIAEgECARIBJqazYCQCABIA0gDiAPams2AjwgASAKIAsgDGprNgI4IAEgByAIIAlqazYCNCABIAAgBSAGams2AjAgAUGgAmoiACAWEBEgAEEgEBogAUHAAmokAAuFAwIDfwF+IwBB4AJrIgYkACAGIAQgBUEAECsaAn8C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IAEpAhA3A1AgAiABKQIoNwNIIAIgASkCIDcDQCADIAJB0ABqIAJBQGsQCCABIAIpAogCNwIoIAEgAikCgAI3AiAgAiABKQIINwM4IAIgASkCADcDMCACIAEpAhg3AyggAiABKQIQNwMgIAMgAkEwaiACQSBqEAggASACKQKIAjcCGCABIAIpAoACNwIQIAIgAikDmAI3AxggAiACKQOQAjcDECACIAEpAgg3AwggAiABKQIANwMAIAMgAkEQaiACEAggASACKQKIAjcCCCABIAIpAoACNwIAIAEgCiABKAAMczYCDCABIAkgASgACHM2AgggASAIIAEoAARzNgIEIAEgCyABKAAAczYCACAAIAcgACgAAHM2AgAgASAGIAEoAERzNgJEIAEgBSABKABIczYCSCABIAQgASgATHM2AkwgAkGgAmokAAvwCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgCDCEHIAEoAjQhCCABKAIQIQkgASgCOCEKIAEoAhQhCyABKAI8IQwgASgCGCENIAFBQGsiDigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAJBKGoQBiAAQShqIgMgAyACEAYgAEH4AGogAkH4AGogAUH4AGoQBiAAIAFB0ABqIAJB0ABqEAYgACgCBCEUIAAoAgghFSAAKAIMIRYgACgCECEXIAAoAhQhGCAAKAIYIRkgACgCHCEaIAAoAiAhGyAAKAIkIRwgACgCLCEBIAAoAlQhAiAAKAIwIQMgACgCWCEFIAAoAjQhBiAAKAJcIQcgACgCOCEIIAAoAmAhCSAAKAI8IQogACgCZCELIAQoAgAhDCAAKAJoIQ0gACgCRCEOIAAoAmwhDyAAKAJIIRAgACgCcCERIAAoAgAhHSAAKAIoIRIgACgCUCETIAAgACgCTCIeIAAoAnQiH2o2AkwgACAQIBFqNgJIIAAgDiAPajYCRCAEIAwgDWo2AgAgACAKIAtqNgI8IAAgCCAJajYCOCAAIAYgB2o2AjQgACADIAVqNgIwIAAgASACajYCLCAAIBIgE2o2AiggACAfIB5rNgIkIAAgESAQazYCICAAIA8gDms2AhwgACANIAxrNgIYIAAgCyAKazYCFCAAIAkgCGs2AhAgACAHIAZrNgIMIAAgBSADazYCCCAAIAIgAWs2AgQgACATIBJrNgIAIAAgACgCnAEiASAcQQF0IgJqNgKcASAAIAAoApgBIgQgG0EBdCIDajYCmAEgACAAKAKUASIFIBpBAXQiBmo2ApQBIAAgACgCkAEiByAZQQF0IghqNgKQASAAIAAoAowBIgkgGEEBdCIKajYCjAEgACAAKAKIASILIBdBAXQiDGo2AogBIAAgACgChAEiDSAWQQF0Ig5qNgKEASAAIAAoAoABIg8gFUEBdCIQajYCgAEgACAAKAJ8IhEgFEEBdCISajYCfCAAIAAoAngiEyAdQQF0IhRqNgJ4IAAgAyAEazYCcCAAIAYgBWs2AmwgACAIIAdrNgJoIAAgCiAJazYCZCAAIAwgC2s2AmAgACAOIA1rNgJcIAAgECAPazYCWCAAIBIgEWs2AlQgACAUIBNrNgJQIAAgAiABazYCdAtAAQN/IAAgASABQfgAaiICEAYgAEEoaiABQShqIgMgAUHQAGoiBBAGIABB0ABqIAQgAhAGIABB+ABqIAEgAxAGCxcAIAAgASACrSADrUIghoQgBCAFEL8BCxcAIAAgASACrSADrUIghoQgBCAFEMABC4UBAQV/AkAgAS0AABA4IgJFDQAgAS0AARA4IgNFDQAgAS0AAhA4IgRFDQAgAS0AAxA4IgVFDQAgAS0ABBA4IgZFDQAgACACQYAIayADQYAIa0EGdHIgBEGACGtBDHRyIAVBgAhrQRJ0ciAGQYAIa0EYdHI2AgAgAUEFag8LIABBADYCAEEAC8MGAQR/IAIgACADQQd0akFAaiIEKQIANwIAIAIgBCkCODcCOCACIAQpAjA3AjAgAiAEKQIoNwIoIAIgBCkCIDcCICACIAQpAhg3AhggAiAEKQIQNwIQIAIgBCkCCDcCCCADBEAgA0EBdCEGIANBBnQhBwNAIAIgAigCACAAIAVBBnRqIgMoAgBzNgIAIAIgAigCBCADKAIEczYCBCACIAIoAgggAygCCHM2AgggAiACKAIMIAMoAgxzNgIMIAIgAigCECADKAIQczYCECACIAIoAhQgAygCFHM2AhQgAiACKAIYIAMoAhhzNgIYIAIgAigCHCADKAIcczYCHCACIAIoAiAgAygCIHM2AiAgAiACKAIkIAMoAiRzNgIkIAIgAigCKCADKAIoczYCKCACIAIoAiwgAygCLHM2AiwgAiACKAIwIAMoAjBzNgIwIAIgAigCNCADKAI0czYCNCACIAIoAjggAygCOHM2AjggAiACKAI8IAMoAjxzNgI8IAIQuwEgASAFQQV0aiIEIAIpAjg3AjggBCACKQIwNwIwIAQgAikCKDcCKCAEIAIpAiA3AiAgBCACKQIYNwIYIAQgAikCEDcCECAEIAIpAgg3AgggBCACKQIANwIAIAIgAigCACADQUBrKAIAczYCACACIAIoAgQgAygCRHM2AgQgAiACKAIIIAMoAkhzNgIIIAIgAigCDCADKAJMczYCDCACIAIoAhAgAygCUHM2AhAgAiACKAIUIAMoAlRzNgIUIAIgAigCGCADKAJYczYCGCACIAIoAhwgAygCXHM2AhwgAiACKAIgIAMoAmBzNgIgIAIgAigCJCADKAJkczYCJCACIAIoAiggAygCaHM2AiggAiACKAIsIAMoAmxzNgIsIAIgAigCMCADKAJwczYCMCACIAIoAjQgAygCdHM2AjQgAiACKAI4IAMoAnhzNgI4IAIgAigCPCADKAJ8czYCPCACELsBIAQgB2oiAyACKQI4NwI4IAMgAikCMDcCMCADIAIpAig3AiggAyACKQIgNwIgIAMgAikCGDcCGCADIAIpAhA3AhAgAyACKQIINwIIIAMgAikCADcCACAFQQJqIgUgBkkNAAsLCyIBAX8gACgCACIBBEAgARAVCyAAQQA2AgggAEIANwIAQQALkR4CEX8UfiMAQYAgayIFJAACQCAARQ0AAkACQAJ/IAAoAiQiAkECRwRAIAEtAAghCSAAKAIEIQ4gASgCAAwBCyAAKAIEIQ4gAS0ACCEJIAEoAgAiDA0BIAlBAk8NAUEACyEMIAVBgBhqQQBBgAgQDBogBUG4EGpBAEHIBxAMGiAFIAytNwOAECABNQIEIRcgBSAJrUL/AYM3A5AQIAUgFzcDiBAgBSAANQIQNwOYECAANQIIIRcgBSACrTcDqBAgBSAXNwOgECAAKAIURQ0BQgAhFwNAIARB/wBxIgNFBEAgBSAXQgF8Ihc3A7AQIAVBAEGACBAMIgJBgAhqQQBBgAgQDBogAkGAGGoiBiACQYAQaiACEHUgBiACIAJBgAhqEHULIA4gBEEDdGogBUGACGogA0EDdGopAwA3AwAgBEEBaiIEIAAoAhQiA0kNAAsMAQsgACgCFCEDQQEhEAsgCSAMckUiEUEBdCIIIANPDQBBfyAAKAIYIgJBAWsgCCACIAEoAgQiDWxqIAMgCWxqIgogAnAbIApqIQQgCUEBaiESIA2tISYDQCAKQQFrIAQgCiAAKAIYIgJwQQFGGyENIAAoAhwhByAQBH8gACgCACgCBCANQQp0agUgDiAIQQN0agspAwAhEyABIAg2AgwgJiATQiCIpyAHcK0gERshGAJ+IAxFBEAgCUUEQCAIQQFrIQRCAAwCCyADIAlsIQQgGCAmUQRAIAQgCGpBAWshBEIADAILIAQgCEVrIQRCAAwBCyAYICZRBH8gCCADQX9zagVBAEF/IAgbIANrCyACaiEEQgAgCUEDRg0AGiADIBJsrQshFyAAKAIAKAIEIgMgAiAYp2xBCnRqIBcgBEEBa618IAStIBNC/////w+DIhcgF35CIIh+QiCIfSACrYKnQQp0aiEEIAMgDUEKdGohAiADIApBCnRqIQcCQCAMBEAgAiAEIAcQdQwBCyAFQYAYaiAEQYAIEAsaQQAhBANAIARBA3QiAyAFQYAYaiILaiIGIAYpAwAgAiADaikDAIU3AwAgCyADQQhyIgZqIg8gDykDACACIAZqKQMAhTcDACALIANBEHIiBmoiDyAPKQMAIAIgBmopAwCFNwMAIAsgA0EYciIDaiIGIAYpAwAgAiADaikDAIU3AwAgBEEEaiIEQYABRw0ACyAFQYAQaiALQYAIEAsaQQAhA0EAIQQDQCAFQYAYaiAEQQd0aiICIAIpAzgiFyACKQMYIhh8IBhCAYZC/v///x+DIBdC/////w+DfnwiGCACKQN4hUIgiSITIAIpA1giFnwgE0L/////D4MgFkIBhkL+////H4N+fCIWIBeFQiiJIhcgGHwgF0L/////D4MgGEIBhkL+////H4N+fCIYIBOFQjCJIhMgAikDKCIUIAIpAwgiFXwgFUIBhkL+////H4MgFEL/////D4N+fCIVIAIpA2iFQiCJIhsgAikDSCIcfCAbQv////8PgyAcQgGGQv7///8fg358IhwgFIVCKIkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhUgG4VCMIkiGyAcfCAbQv////8PgyAcQgGGQv7///8fg358IhwgFIVCAYkiFCACKQMgIh8gAikDACIafCAaQgGGQv7///8fgyAfQv////8Pg358IhogAikDYIVCIIkiICACQUBrIgYpAwAiI3wgIEL/////D4MgI0IBhkL+////H4N+fCIjIB+FQiiJIh8gGnwgH0L/////D4MgGkIBhkL+////H4N+fCIafCAUQv////8PgyAaQgGGQv7///8fg358IhmFQiCJIiQgAikDMCIhIAIpAxAiHXwgHUIBhkL+////H4MgIUL/////D4N+fCIdIAIpA3CFQiCJIiIgAikDUCIefCAiQv////8PgyAeQgGGQv7///8fg358Ih4gIYVCKIkiISAdfCAhQv////8PgyAdQgGGQv7///8fg358Ih0gIoVCMIkiIiAefCAiQv////8PgyAeQgGGQv7///8fg358Ih58ICRC/////w+DIB5CAYZC/v///x+DfnwiJSAUhUIoiSIUIBl8IBRC/////w+DIBlCAYZC/v///x+DfnwiGTcDACACIBkgJIVCMIkiGTcDeCACIBkgJXwgGUL/////D4MgJUIBhkL+////H4N+fCIZNwNQIAIgFCAZhUIBiTcDKCACIB4gIYVCAYkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhUgGiAghUIwiSIahUIgiSIgIBMgFnwgE0L/////D4MgFkIBhkL+////H4N+fCITfCAgQv////8PgyATQgGGQv7///8fg358IhYgFIVCKIkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhkgIIVCMIkiFTcDYCACIBk3AwggAiAVIBZ8IBVC/////w+DIBZCAYZC/v///x+DfnwiFiAUhUIBiTcDMCACIBY3A1ggAiATIBeFQgGJIhcgHXwgF0L/////D4MgHUIBhkL+////H4N+fCITIBuFQiCJIhYgGiAjfCAaQv////8PgyAjQgGGQv7///8fg358IhR8IBZC/////w+DIBRCAYZC/v///x+DfnwiFSAXhUIoiSIXIBN8IBdC/////w+DIBNCAYZC/v///x+DfnwiEzcDECACIBMgFoVCMIkiEzcDaCAGIBMgFXwgE0L/////D4MgFUIBhkL+////H4N+fCIVNwMAIAIgGCAUIB+FQgGJIhN8IBhCAYZC/v///x+DIBNC/////w+DfnwiGCAihUIgiSIWIBx8IBZC/////w+DIBxCAYZC/v///x+DfnwiFCAThUIoiSITIBh8IBNC/////w+DIBhCAYZC/v///x+DfnwiGyAWhUIwiSIYIBR8IBhC/////w+DIBRCAYZC/v///x+DfnwiFjcDSCACIBg3A3AgAiAbNwMYIAIgFSAXhUIBiTcDOCACIBMgFoVCAYk3AyAgBEEBaiIEQQhHDQALA0AgBUGAGGogA0EEdGoiAiACKQOIAyIXIAIpA4gBIhh8IBhCAYZC/v///x+DIBdC/////w+DfnwiGCACKQOIB4VCIIkiEyACKQOIBSIWfCATQv////8PgyAWQgGGQv7///8fg358IhYgF4VCKIkiFyAYfCAXQv////8PgyAYQgGGQv7///8fg358IhggE4VCMIkiEyACKQOIAiIUIAIpAwgiFXwgFUIBhkL+////H4MgFEL/////D4N+fCIVIAIpA4gGhUIgiSIbIAIpA4gEIhx8IBtC/////w+DIBxCAYZC/v///x+DfnwiHCAUhUIoiSIUIBV8IBRC/////w+DIBVCAYZC/v///x+DfnwiFSAbhUIwiSIbIBx8IBtC/////w+DIBxCAYZC/v///x+DfnwiHCAUhUIBiSIUIAIpA4ACIh8gAikDACIafCAaQgGGQv7///8fgyAfQv////8Pg358IhogAikDgAaFQiCJIiAgAikDgAQiI3wgIEL/////D4MgI0IBhkL+////H4N+fCIjIB+FQiiJIh8gGnwgH0L/////D4MgGkIBhkL+////H4N+fCIafCAUQv////8PgyAaQgGGQv7///8fg358IhmFQiCJIiQgAikDgAMiISACKQOAASIdfCAdQgGGQv7///8fgyAhQv////8Pg358Ih0gAikDgAeFQiCJIiIgAikDgAUiHnwgIkL/////D4MgHkIBhkL+////H4N+fCIeICGFQiiJIiEgHXwgIUL/////D4MgHUIBhkL+////H4N+fCIdICKFQjCJIiIgHnwgIkL/////D4MgHkIBhkL+////H4N+fCIefCAkQv////8PgyAeQgGGQv7///8fg358IiUgFIVCKIkiFCAZfCAUQv////8PgyAZQgGGQv7///8fg358Ihk3AwAgAiAZICSFQjCJIhk3A4gHIAIgGSAlfCAZQv////8PgyAlQgGGQv7///8fg358Ihk3A4AFIAIgFCAZhUIBiTcDiAIgAiAeICGFQgGJIhQgFXwgFEL/////D4MgFUIBhkL+////H4N+fCIVIBogIIVCMIkiGoVCIIkiICATIBZ8IBNC/////w+DIBZCAYZC/v///x+DfnwiE3wgIEL/////D4MgE0IBhkL+////H4N+fCIWIBSFQiiJIhQgFXwgFEL/////D4MgFUIBhkL+////H4N+fCIZICCFQjCJIhU3A4AGIAIgGTcDCCACIBUgFnwgFUL/////D4MgFkIBhkL+////H4N+fCIWIBSFQgGJNwOAAyACIBY3A4gFIAIgEyAXhUIBiSIXIB18IBdC/////w+DIB1CAYZC/v///x+DfnwiEyAbhUIgiSIWIBogI3wgGkL/////D4MgI0IBhkL+////H4N+fCIUfCAWQv////8PgyAUQgGGQv7///8fg358IhUgF4VCKIkiFyATfCAXQv////8PgyATQgGGQv7///8fg358IhM3A4ABIAIgEyAWhUIwiSITNwOIBiACIBMgFXwgE0L/////D4MgFUIBhkL+////H4N+fCIVNwOABCACIBggFCAfhUIBiSITfCAYQgGGQv7///8fgyATQv////8Pg358IhggIoVCIIkiFiAcfCAWQv////8PgyAcQgGGQv7///8fg358IhQgE4VCKIkiEyAYfCATQv////8PgyAYQgGGQv7///8fg358IhsgFoVCMIkiGCAUfCAYQv////8PgyAUQgGGQv7///8f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IAAgARAGIAAgABBuIAAgACAEEAYgACAAIAEQBiADQcABaiIEIAAQBSAEIAQgAhAGIAEoAgQhBSABKAIIIQ0gASgCDCEOIAEoAhAhDyABKAIUIRAgASgCGCERIAEoAhwhEiABKAIgIRMgASgCACEUIAMoAsABIQIgAygCxAEhBCADKALIASEGIAMoAswBIQcgAygC0AEhCCADKALUASEJIAMoAtgBIQogAygC3AEhCyADKALgASEMIAMgAygC5AEiFSABKAIkIhZrNgK0ASADIAwgE2s2ArABIAMgCyASazYCrAEgAyAKIBFrNgKoASADIAkgEGs2AqQBIAMgCCAPazYCoAEgAyAHIA5rNgKcASADIAYgDWs2ApgBIAMgBCAFazYClAEgAyACIBRrNgKQASADIBUgFmo2AoQBIAMgDCATajYCgAEgAyALIBJqNgJ8IAMgCiARajYCeCADIAkgEGo2AnQgAyAIIA9qNgJwIAMgByAOajYCbCADIAYgDWo2AmggAyAEIAVqNgJkIAMgAiAUajYCYCADQTBqIgUgAUHgDBAGIAMgFSADKAJUajYCVCADIAwgAygCUGo2AlAgAyALIAMoAkxqNgJMIAMgCiADKAJIajYCSCADIAkgAygCRGo2AkQgAyAIIAMoAkBqNgJAIAMgByADKAI8ajYCPCADIAYgAygCOGo2AjggAyAEIAMoAjRqNgI0IAMgAiADKAIwajYCMCADIANBkAFqEBEgA0EgEBohDiADIANB4ABqEBEgA0EgEBohDSADIAUQESADQSAQGiEBIAMgAEHgDBAGIAAoAgQhDCAAKAIIIQsgACgCDCEKIAAoAhAhCSAAKAIUIQggACgCGCEHIAAoAhwhBiAAKAIgIQQgACgCACEFIAMoAgAhDyADKAIEIRAgAygCCCERIAMoAgwhEiADKAIQIRMgAygCFCEUIAMoAhghFSADKAIcIRYgAygCICEXIABBACABIA1yayIBIAAoAiQiAiADKAIkc3EgAnMiAjYCJCAAIAQgBCAXcyABcXMiBDYCICAAIAYgBiAWcyABcXMiBjYCHCAAIAcgByAVcyABcXMiBzYCGCAAIAggCCAUcyABcXMiCDYCFCAAIAkgCSATcyABcXMiCTYCECAAIAogCiAScyABcXMiCjYCDCAAIAsgCyARcyABcXMiCzYCCCAAIAwg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DigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAIQBiAAQShqIgMgAyACQShqEAYgAEH4AGogAkHQAGogAUH4AGoQBiABKAJUIRQgASgCWCEVIAEoAlwhFiABKAJgIRcgASgCZCEYIAEoAmghGSABKAJsIRogASgCcCEbIAEoAnQhHCAAKAIsIQIgACgCVCEDIAAoAjAhBSAAKAJYIQYgACgCNCEHIAAoAlwhCCAAKAI4IQkgACgCYCEKIAAoAjwhCyAAKAJkIQwgBCgCACENIAAoAmghDiAAKAJEIQ8gACgCbCEQIAAoAkghESAAKAJwIRIgASgCUCEdIAAoAighASAAKAJQIRMgACAAKAJMIh4gACgCdCIfajYCTCAAIBEgEmo2AkggACAPIBBqNgJEIAQgDSAOajYCACAAIAsgDGo2AjwgACAJIApqNgI4IAAgByAIajYCNCAAIAUgBmo2AjAgACACIANqNgIsIAAgASATajYCKCAAIB8gHms2AiQgACASIBFrNgIgIAAgECAPazYCHCAAIA4gDWs2AhggACAMIAtrNgIUIAAgCiAJazYCECAAIAggB2s2AgwgACAGIAVrNgIIIAAgAyACazYCBCAAIBMgAWs2AgAgACAcQQF0IgEgACgCnAEiAms2ApwBIAAgG0EBdCIEIAAoApgBIgNrNgKYASAAIBpBAXQiBSAAKAKUASIGazYClAEgACAZQQF0IgcgACgCkAEiCGs2ApABIAAgGEEBdCIJIAAoAowBIgprNgKMASAAIBdBAXQiCyAAKAKIASIMazYCiAEgACAWQQF0Ig0gACgChAEiDms2AoQBIAAgFUEBdCIPIAAoAoABIhBrNgKAASAAIBRBAXQiESAAKAJ8IhJrNgJ8IAAgHUEBdCITIAAoAngiFGs2AnggACADIARqNgJwIAAgBSAGajYCbCAAIAcgCGo2AmggACAJIApqNgJkIAAgCyAMajYCYCAAIA0gDmo2AlwgACAPIBBqNgJYIAAgESASajYCVCAAIBMgFGo2AlAgACABIAJqNgJ0C64IAQN/IwBBkAFrIgMkACADQeAAaiIEIAEQBSADQTBqIgIgBBAFIAIgAhAFIAIgASACEAYgBCAEIAIQBiAEIAQQBSAEIAIgBBAGIAIgBBAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAQgAiAEEAYgAiAEEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACIAQQBiADIAIQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSACIAMgAhAGIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAQgAiAEEAYgAiAEEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACIAQQBiADIAIQBUEBIQIDQCADIAMQBSACQQFqIgJB5ABHDQALIANBMGoiAiADIAIQBiACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSADQeAAaiIEIAIgBBAGIAQgBBAFIAQgBBAFIAAgBCABEAYgA0GQAWokAAumBAIOfgp/IAAoAiQhEiAAKAIgIRMgACgCHCEUIAAoAhghFSAAKAIUIREgAkIQWgRAIAAtAFBFQRh0IRYgACgCECIXrSEPIAAoAgwiGK0hDSAAKAIIIhmtIQsgACgCBCIarSEJIBpBBWytIRAgGUEFbK0hDiAYQQVsrSEMIBdBBWytIQogADUCACEIA0AgASgAA0ECdkH///8fcSAVaq0iAyANfiABKAAAQf///x9xIBFqrSIEIA9+fCABKAAGQQR2Qf///x9xIBRqrSIFIAt+fCABKAAJQQZ2IBNqrSIGIAl+fCASIBZqIAEoAAxBCHZqrSIHIAh+fCADIAt+IAQgDX58IAUgCX58IAYgCH58IAcgCn58IAMgCX4gBCALfnwgBSAIfnwgBiAKfnwgByAMfnwgAyAIfiAEIAl+fCAFIAp+fCAGIAx+fCAHIA5+fCADIAp+IAQgCH58IAUgDH58IAYgDn58IAcgEH58IgNCGohC/////w+DfCIEQhqIQv////8Pg3wiBUIaiEL/////D4N8IgZCGohC/////w+DfCIHQhqIp0EFbCADp0H///8fcWoiEUEadiAEp0H///8fcWohFSAFp0H///8fcSEUIAan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aIVCIIkiCyABKQNIIgx8IAxCAYZC/v///x+DIAtC/////w+DfnwiDCADhUIoiSIDIAZ8IANC/////w+DIAZCAYZC/v///x+DfnwiBiALhUIwiSILIAx8IAtC/////w+DIAxCAYZC/v///x+DfnwiDCADhUIBiSIDIAEpAyAiDyABKQMAIgp8IApCAYZC/v///x+DIA9C/////w+DfnwiCiABKQNghUIgiSIQIAFBQGsiFikDACITfCATQgGGQv7///8fgyAQQv////8Pg358IhMgD4VCKIkiDyAKfCAPQv////8PgyAKQgGGQv7///8fg358Igp8IANC/////w+DIApCAYZC/v///x+DfnwiCYVCIIkiFCABKQMwIhEgASkDECINfCANQgGGQv7///8fgyARQv////8Pg358Ig0gASkDcIVCIIkiEiABKQNQIg58IA5CAYZC/v///x+DIBJC/////w+DfnwiDiARhUIoiSIRIA18IBFC/////w+DIA1CAYZC/v///x+DfnwiDSAShUIwiSISIA58IBJC/////w+DIA5CAYZC/v///x+DfnwiDnwgFEL/////D4MgDkIBhkL+////H4N+fCIVIAOFQiiJIgMgCXwgA0L/////D4MgCUIBhkL+////H4N+fCIJNwMAIAEgCSAUhUIwiSIJNwN4IAEgCSAVfCAJQv////8PgyAVQgGGQv7///8fg358Igk3A1AgASADIAmFQgGJNwMoIAEgBCAFfCAEQv////8PgyAFQgGGQv7///8fg358IgQgDiARhUIBiSIFIAZ8IAVC/////w+DIAZCAYZC/v///x+DfnwiAyAKIBCFQjCJIgaFQiCJIgp8IARCAYZC/v///x+DIApC/////w+DfnwiECAFhUIoiSIFIAN8IAVC/////w+DIANCAYZC/v///x+DfnwiCSAKhUIwiSIDNwNgIAEgCTcDCCABIAUgAyAQfCADQv////8PgyAQQgGGQv7///8fg358IgWFQgGJNwMwIAEgBTcDWCABIAQgCIVCAYkiCCANfCAIQv////8PgyANQgGGQv7///8fg358IgQgC4VCIIkiBSAGIBN8IAZC/////w+DIBNCAYZC/v///x+DfnwiA3wgBUL/////D4MgA0IBhkL+////H4N+fCIGIAiFQiiJIgggBHwgCEL/////D4MgBEIBhkL+////H4N+fCIENwMQIAEgBCAFhUIwiSIENwNoIBYgBCAGfCAEQv////8PgyAGQgGGQv7///8fg358IgY3AwAgASAHIAMgD4VCAYkiBHwgB0IBhkL+////H4MgBEL/////D4N+fCIHIBKFQiCJIgUgDHwgBUL/////D4MgDEIBhkL+////H4N+fCIDIASFQiiJIgQgB3wgBEL/////D4MgB0IBhkL+////H4N+fCILIAWFQjCJIgcgA3wgB0L/////D4MgA0IBhkL+////H4N+fCIFNwNIIAEgBzcDcCABIAs3AxggASAGIAiFQgGJNwM4IAEgBCAFhUIBiTcDICAAQQFqIgBBCEcNAAtBACEAA0AgGEGACGogAEEEdGoiASABKQOIAyIIIAEpA4gBIgd8IAdCAYZC/v///x+DIAhC/////w+DfnwiByABKQOIB4VCIIkiBCABKQOIBSIFfCAFQgGGQv7///8fgyAEQv////8Pg358IgUgCIVCKIkiCCAHfCAIQv////8PgyAHQgGGQv7///8fg358IgcgBIVCMIkiBCABKQOIAiIDIAEpAwgiBnwgBkIBhkL+////H4MgA0L/////D4N+fCIGIAEpA4gGhUIgiSILIAEpA4gEIgx8IAxCAYZC/v///x+DIAtC/////w+DfnwiDCADhUIoiSIDIAZ8IANC/////w+DIAZCAYZC/v///x+DfnwiBiALhUIwiSILIAx8IAtC/////w+DIAxCAYZC/v///x+DfnwiDCADhUIBiSIDIAEpA4ACIg8gASkDACIKfCAKQgGGQv7///8fgyAPQv////8Pg358IgogASkDgAaFQiCJIhAgASkDgAQiE3wgE0IBhkL+////H4MgEEL/////D4N+fCITIA+FQiiJIg8gCnwgD0L/////D4MgCkIBhkL+////H4N+fCIKfCADQv////8PgyAKQgGGQv7///8fg358IgmFQiCJIhQgASkDgAMiESABKQOAASINfCANQgGGQv7///8fgyARQv////8Pg358Ig0gASkDgAeFQiCJIhIgASkDgAUiDnwgDkIBhkL+////H4MgEkL/////D4N+fCIOIBGFQiiJIhEgDXwgEUL/////D4MgDUIBhkL+////H4N+fCINIBKFQjCJIhIgDnwgEkL/////D4MgDkIBhkL+////H4N+fCIOfCAUQv////8PgyAOQgGGQv7///8fg358IhUgA4VCKIkiAyAJfCADQv////8PgyAJQgGGQv7///8fg358Igk3AwAgASAJIBSFQjCJIgk3A4gHIAEgCSAVfCAJQv////8PgyAVQgGGQv7///8fg358Igk3A4AFIAEgAyAJhUIBiTcDiAIgASAEIAV8IARC/////w+DIAVCAYZC/v///x+DfnwiBCAOIBGFQgGJIgUgBnwgBUL/////D4MgBkIBhkL+////H4N+fCIDIAogEIVCMIkiBoVCIIkiCnwgBEIBhkL+////H4MgCkL/////D4N+fCIQIAWFQiiJIgUgA3wgBUL/////D4MgA0IBhkL+////H4N+fCIJIAqFQjCJIgM3A4AGIAEgCTcDCCABIAUgAyAQfCADQv////8PgyAQQgGGQv7///8fg358IgWFQgGJNwOAAyABIAU3A4gFIAEgBCAIhUIBiSIIIA18IAhC/////w+DIA1CAYZC/v///x+DfnwiBCALhUIgiSIFIAYgE3wgBkL/////D4MgE0IBhkL+////H4N+fCIDfCAFQv////8PgyADQgGGQv7///8fg358IgYgCIVCKIkiCCAEfCAIQv////8PgyAEQgGGQv7///8fg358IgQ3A4ABIAEgBCAFhUIwiSIENwOIBiABIAQgBnwgBEL/////D4MgBkIBhkL+////H4N+fCIGNwOABCABIAcgAyAPhUIBiSIEfCAHQgGGQv7///8fgyAEQv////8Pg358IgcgEoVCIIkiBSAMfCAFQv////8PgyAMQgGGQv7///8fg358IgMgBIVCKIkiBCAHfCAEQv////8PgyAHQgGGQv7///8fg358IgsgBYVCMIkiByADfCAHQv////8PgyADQgGGQv7///8fg358IgU3A4gEIAEgBzcDgAcgASALNwOIASABIAYgCIVCAYk3A4gDIAEgBCAFhUIBiTcDgAIgAEEBaiIAQQhHDQALIAIgGEGACBALIQFBACEAA0AgASAAQQN0IgJqIhYgFikDACAYQYAIaiIZIAJqKQMAhTcDACABIAJBCHIiFmoiFyAXKQMAIBYgGWopAwCFNwMAIAEgAkEQciIWaiIXIBcpAwAgGEGACGogFmopAwCFNwMAIAEgAkEYciICaiIWIBYpAwAgGEGACGogAmop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AnA3A+ADIAJBgARqIgMgAkHwA2ogAkHgA2oQCCABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJYNwPYAyACIAEpAlA3A9ADIAIgASkCaDcDyAMgAiABKQJgNwPAAyADIAJB0ANqIAJBwANqEAggASACKQKIBDcCaCABIAIpAoAENwJgIAIgASkCSDcDuAMgAiABQUBrIgApAgA3A7ADIAIgASkCWDcDqAMgAiABKQJQNwOgAyADIAJBsANqIAJBoANqEAggASACKQKIBDcCWCABIAIpAoAENwJQIAIgASkCODcDmAMgAiABKQIwNwOQAyACIAEpAkg3A4gDIAIgACkCADcDgAMgAyACQZADaiACQYADahAIIAEgAikCiAQ3AkggACACKQKABDcCACACIAEpAig3A/gCIAIgASkCIDcD8AIgAiABKQI4NwPoAiACIAEpAjA3A+ACIAMgAkHwAmogAkHgAmoQCCABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIYNwPYAiACIAEpAhA3A9ACIAIgASkCKDcDyAIgAiABKQIgNwPAAiADIAJB0AJqIAJBwAJqEAggASACKQKIBDcCKCABIAIpAoAENwIgIAIgASkCCDcDuAIgAiABKQIANwOwAiACIAEpAhg3A6gCIAIgASkCEDcDoAIgAyACQbACaiACQaACahAIIAEgAikCiAQ3AhggASACKQKABDcCECACIAIpA5gENwOYAiACIAIpA5AENwOQAiACIAEpAgg3A4gCIAIgASkCADcDgAIgAyACQZACaiACQYACahAIIAEgAikCiAQ3AgggASACKQKABDcCACABIBIgASgADHM2AgwgASARIAEoAAhzNgIIIAEgECABKAAEczYCBCABIBMgASgAAHM2AgAgACAPIAAoAABzNgIAIAEgDiABKABEczYCRCABIA0gASgASHM2AkggASAMIAEoAExzNgJMIAIgASkCeDcDmAQgAiABKQJwNwOQBCACIAEpAmg3A/gBIAIgASkCYDcD8AEgAiABKQJ4NwPoASACIAEpAnA3A+ABIAMgAkHwAWogAkHgAWoQCCABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJYNwPYASACIAEpAlA3A9ABIAIgASkCaDcDyAEgAiABKQJgNwPAASADIAJB0AFqIAJBwAFqEAggASACKQKIBDcCaCABIAIpAoAENwJgIAIgASkCSDcDuAEgAiAAKQIANwOwASACIAEpAlg3A6gBIAIgASkCUDcDoAEgAyACQbABaiACQaABahAIIAEgAikCiAQ3AlggASACKQKABDcCUCACIAEpAjg3A5gBIAIgASkCMDcDkAEgAiABKQJINwOIASACIAApAgA3A4ABIAMgAkGQAWogAkGAAWoQCCABIAIpAogENwJIIAAgAikCgAQ3AgAgAiABKQIoNwN4IAIgASkCIDcDcCACIAEpAjg3A2ggAiABKQIwNwNgIAMgAkHwAGogAkHgAGoQCCABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIYNwNYIAIgASkCEDcDUCACIAEpAig3A0ggAiABKQIgNwNAIAMgAkHQAGogAkFAaxAIIAEgAikCiAQ3AiggASACKQKABDcCICACIAEpAgg3AzggAiABKQIANwMwIAIgASkCGDcDKCACIAEpAhA3AyAgAyACQTBqIAJBIGoQCCABIAIpAogENwIYIAEgAikCgAQ3AhAgAiACKQOYBDcDGCACIAIpA5AENwMQIAIgASkCCDcDCCACIAEpAgA3AwAgAyACQRBqIAIQCCABIAIpAogENwIIIAEgAikCgAQ3AgAgASALIAEoAAxzNgIMIAEgCiABKAAIczYCCCABIAkgASgABHM2AgQgASAIIAEoAABzNgIAIAAgByAAKAAAczYCACABIAYgASgARHM2AkQgASAFIAEoAEhzNgJIIAEgBCABKABMczYCTCACQaAEaiQAC70JARF/IwBBoAJrIgMkACABKAAEIRAgASgACCERIAEoAAwhEiAAKAAEIQsgACgACCEMIAAoAAwhDSABKAAAIRMgAkHwAGoiASAAKAAAIg5BgIKEEHMiADYCACACQeAAaiIGIA5B2/vgqAVzNgIAIAJB0ABqIgcgADYCACACQUBrIgAgDiATcyIFNgIAIAJCoKLEkbSurZRdNwI4IAJBMGoiCELb++Co1c3wl3E3AgAgAkKVxNzJhbL6vOIANwIoIAJBIGoiCUKAgoSQsKCBhA03AgAgAkKgosSRtK6tlF03AhggAkEQaiIKQtv74KjVzfCXcTcCACACIAU2AgAgAiANQZDT55MGcyIFNgJ8IAIgDEGVxNzJBXMiBDYCeCACIAtBg4qg6ABzIg82AnQgAiANQfPqoul9czYCbCACIAxBoKLEkQRzNgJoIAIgC0HthL+Jf3M2AmQgAiAFNgJcIAIgBDYCWCACIA82AlQgAiANIBJzIgU2AkwgAiAMIBFzIgQ2AkggAiALIBBzIg82AkQgAiAFNgIMIAIgBDYCCCACIA82AgRBACEFA0AgAyABKQIINwOYAiADIAEpAgA3A5ACIAMgBikCCDcD+AEgAyAGKQIANwPwASADIAEpAgg3A+gBIAMgASkCADcD4AEgA0GAAmoiBCADQfABaiADQeABahAIIAEgAykCiAI3AgggASADKQKAAjcCACADIAcpAgg3A9gBIAMgBykCADcD0AEgAyAGKQIINwPIASADIAYpAgA3A8ABIAQgA0HQAWogA0HAAWoQCCAGIAMpAogCNwIIIAYgAykCgAI3AgAgAyAAKQIINwO4ASADIAApAgA3A7ABIAMgBykCCDcDqAEgAyAHKQIANwOgASAEIANBsAFqIANBoAFqEAggByADKQKIAjcCCCAHIAMpAoACNwIAIAMgCCkCCDcDmAEgAyAIKQIANwOQASADIAApAgg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAAgAykCiAI3AgggACADKQKAAjcCACADIAkpAgg3A3ggAyAJKQIANwNwIAMgCCkCCDcDaCADIAgpAgA3A2AgBCADQfAAaiADQeAAahAIIAggAykCiAI3AgggCCADKQKAAjcCACADIAopAgg3A1ggAyAKKQIANwNQIAMgCSkCCDcDSCADIAkpAgA3A0AgBCADQdAAaiADQUBrEAggCSADKQKIAjcCCCAJIAMpAoACNwIAIAMgAikCCDcDOCADIAIpAgA3AzAgAyAKKQIINwMoIAMgCikCADcDICAEIANBMGogA0EgahAIIAogAykCiAI3AgggCiADKQKAAjcCACADIAMpA5gCNwMYIAMgAykDkAI3AxAgAyACKQIINwMIIAMgAikCADcDACAEIANBEGogAxAIIAIgAykCiAI3AgggAiADKQKAAjcCACACIAIoAAwgEnM2AgwgAiACKAAIIBFzNgIIIAIgAigABCAQczYCBCACIAIoAAAgE3M2AgAgACAAKAAAIA5zNgIAIAIgAigARCALczYCRCACIAIoAEggDHM2AkggAiACKABMIA1zNgJMIAVBAWoiBUEKRw0ACyADQaACaiQACxAAIAAgAUGMlwIoAgARAAAL0g8BJH8jAEHwBGsiAiQAIAJB4ANqIgMgARAFIANB4AwgAxAGIAIgAigChAQiBzYClAIgAiACKAKABCIINgKQAiACIAIoAvwDIgk2AowCIAIgAigC+AMiCjYCiAIgAiACKAL0AyILNgKEAiACIAIoAvADIgw2AoACIAIgAigC7AMiDTYC/AEgAiACKALoAyIONgL4ASACIAIoAuQDIgU2AvQBIAIgAigC4AMiBkEBajYC8AEgAkHwAWoiBCAEQbCJAhAGIAIgB0HM5N8FazYC1AMgAiAIQYCS9QhrNgLQAyACIAlB55zGAWs2AswDIAIgCkHEhv8CazYCyAMgAiALQeiumARrNgLEAyACIAxBqYAHajYCwAMgAiANQY+UqANqNgK8AyACIA5Bw6KqB2s2ArgDIAIgBUGF5c0GajYCtAMgAiAGQcqOmgVrNgKwAyACQcABaiIZIANBsAwQBiACQQAgAigC5AFrNgLkASACQQAgAigC4AFrNgLgASACQQAgAigC3AFrNgLcASACQQAgAigC2AFrNgLYASACQQAgAigC1AFrNgLUASACQQAgAigC0AFrNgLQASACQQAgAigCzAFrNgLMASACQQAgAigCyAFrNgLIASACQQAgAigCxAFrNgLEASACIAIoAsABQX9zNgLAASAZIBkgAkGwA2oQBiACQYADaiIiIAQgGRBqIQMgAkHQAmoiBCAiIAEQBiACQcAEaiIkIAQQESACLQDABCElIAIoAqQDIRogAigC9AIhBCACKAKgAyEbIAIoAvACIRAgAigCnAMhHCACKALsAiERIAIoApgDIR0gAigC6AIhEiACKAKUAyEeIAIoAuQCIRMgAigCkAMhHyACKALgAiEUIAIoAowDISAgAigC3AIhFSACKAKIAyEhIAIoAtgCIRYgAigChAMhDyACKALUAiEXIAIoAoADISMgAigC0AIhGCACIAcgA0EBayIBcTYC5AQgAiABIAhxNgLgBCACIAEgCXE2AtwEIAIgASAKcTYC2AQgAiABIAtxNgLUBCACIAEgDHE2AtAEIAIgASANcTYCzAQgAiABIA5xNgLIBCACIAEgBXE2AsQEIAIgBkEAIANrcjYCwAQgAiAjICNBACAYQQAgJUEBcWsiAyAYQQAg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IAIgASADEAYgAkGQBmoiASACEAUgASABEAUgAkGQB2oiBSACIAEQBiACQcAEaiIDIAUQBSADIAMQBSADIAMQBSADIAMQBSACQZAEaiIBIAUgAxAGIAEgARAFIAEgARAFIAEgASACEAYgAiACKQOwBDcDgAQgAiACKQOoBDcD+AMgAiACKQOgBDcD8AMgAiACKQOYBDcD6AMgAiACKQOQBDcD4AMgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAJB4ANqIgMQBiABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEgAxAGIAIgAikDsAQ3A9ADIAIgAikDqAQ3A8gDIAIgAikDoAQ3A8ADIAIgAikDmAQ3A7gDIAIgAikDkAQ3A7ADIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASACQbADaiIDEAYgAiACKQOwBDcD0AMgAiACKQOoBDcDyAMgAiACKQOgBDcDwAMgAiACKQOYBDcDuAMgAiACKQOQBDcDsAMgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAMQBiACIAIpA7AENwPQAyACIAIpA6gENwPIAyACIAIpA6AENwPAAyACIAIpA5gENwO4AyACIAIpA5AENwOwAwNAIAJBkARqIgEgARAFIARBAWoiBEH4AEcNAAsgASABIAJBsANqEAYgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAJB4ANqEAYgASABEAUgASABEAUgASABEAUgASABIAIQBiABIAEQBSACQZADaiABEBEgAigCgAIhAyACKAKEAiEEIAIoAogCIQUgAigCjAIhBiACKAKQAiEHIAIoApQCIQggAigCmAIhCSACKAKcAiEKIAIoAqACIQsgAkEAIAItAJEDQQFxayIBIAIoAqQCIgxBACAMa3NxIAxzIgw2ApQFIAIgCyALQQAgC2tzIAFxcyILNgKQBSACIAogCkEAIAprcyABcXMiCjYCjAUgAiAJIAlBACAJa3MgAXFzIgk2AogFIAIgCCAIQQAgCGtzIAFxcyIINgKEBSACIAcgB0EAIAdrcyABcXMiBzYCgAUgAiAGIAZBACAGa3MgAXFzIgY2AvwEIAIgBSAFQQAgBWtzIAFxcyIFNgL4BCACIAQgBEEAIARrcyABcXMiBDYC9AQgAiADIANBACADa3MgAXFzIAFBhtodcWsiAUEBajYC8AQgAiAMNgK0BiACIAs2ArAGIAIgCjYCrAYgAiAJNgKoBiACIAg2AqQGIAIgBzYCoAYgAiAGNgKcBiACIAU2ApgGIAIgBDYClAYgAiABQQFrNgKQBiACIAJB8ARqEDUgAkGQB2oiASACQZAGaiACEAYgACABEBEgACAALQAfIBByOgAfIAIgABA0BEAQiwEACyACIAIpAiA3A7AGIAIgAikCGDcDqAYgAiACKQIQNwOgBiACIAIpAgg3A5gGIAIgAikCMDcDwAYgAiACKQI4NwPIBiACIAJBQGspAgA3A9AGIAIgAikCSDcD2AYgAiACKQIANwOQBiACIAIpAig3A7gGIAIgAikCcDcDgAcgAiACKQJoNwP4BiACIAIpAmA3A/AGIAIgAikCWDcD6AYgAiACKQJQNwPgBiACQfAEaiIBIAJBkAZqIgMQGCADIAEgAkHoBWoiBBAGIAJBuAZqIgcgAkGYBWoiBiACQcAFaiIFEAYgAkHgBmoiCCAFIAQQBiABIAMQGCADIAEgBBAGIAcgBiAFEAYgCCAFIAQQBiABIAMQGCACIAEgBBAGIAJBKGoiByAGIAUQBiACQdAAaiIIIAUgBBAGIAJB+ABqIAEgBhAGIAEgCBA1IAMgAiABEAYgAkGQB2oiBCAHIAEQBiAAIAQQESACQcAEaiADEBEgACAALQAfIAItAMAEQQd0czoAHyACQcAHaiQAIA1BMGokAAuEAQEIf0EgIQFBASECA0AgACABQQJrIgRqLQAAIgUgBEHgFmotAAAiBmtBCHUgAUEBayIBQeAWai0AACIHIAAgAWotAAAiCHNBAWtBCHUgAnEiAXEgCCAHa0EIdSACcSADcnIhAyAFIAZzQQFrQQh1IAFxIQIgBCIBDQALIANB/wFxQQBHC5wLAQZ/IAAgAWohBQJAAkAgACgCBCICQQFxDQAgAkECcUUNASAAKAIAIgIgAWohAQJAAkACQCAAIAJrIgBBiKYCKAIARwRAIAAoAgwhAyACQf8BTQRAIAMgACgCCCIERw0CQfSlAkH0pQIoAgBBfiACQQN2d3E2AgAMBQsgACgCGCEGIAAgA0cEQCAAKAIIIgIgAzYCDCADIAI2AggMBAsgACgCFCIEBH8gAEEUagUgACgCECIERQ0DIABBEGoLIQIDQCACIQcgBCIDQRRqIQIgAygCFCIEDQAgA0EQaiECIAMoAhAiBA0ACyAHQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNB/KUCIAE2AgAgBSACQX5xNgIEIAAgAUEBcjYCBCAFIAE2AgAPCyAEIAM2AgwgAyAENgIIDAILQQAhAwsgBkUNAAJAIAAoAhwiAkECdEGkqAJqIgQoAgAgAEYEQCAEIAM2AgAgAw0BQfilAkH4pQIoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAARhtqIAM2AgAgA0UNAQsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNACADIAI2AhQgAiADNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEGMpgIoAgAgBUYEQEGMpgIgADYCAEGApgJBgKYCKAIAIAFqIgE2AgAgACABQQFyNgIEIABBiKYCKAIARw0GQfylAkEANgIAQYimAkEANgIADwtBiKYCKAIAIAVGBEBBiKYCIAA2AgBB/KUCQfylAigCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyACQXhxIAFqIQEgBSgCDCEDIAJB/wFNBEAgBSgCCCIEIANGBEBB9KUCQfSlAigCAEF+IAJBA3Z3cTYCAAwFCyAEIAM2AgwgAyAENgIIDAQLIAUoAhghBiADIAVHBEAgBSgCCCICIAM2AgwgAyACNgIIDAMLIAUoAhQiBAR/IAVBFGoFIAUoAhAiBEUNAiAFQRBqCyECA0AgAiEHIAQiA0EUaiECIAMoAhQiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIADAILIAUgAkF+cTYCBCAAIAFBAXI2AgQgACABaiABNgIADAMLQQAhAwsgBkUNAAJAIAUoAhwiAkECdEGkqAJqIgQoAgAgBUYEQCAEIAM2AgAgAw0BQfilAkH4pQIoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAM2AgAgA0UNAQsgAyAGNgIYIAUoAhAiAgRAIAMgAjYCECACIAM2AhgLIAUoAhQiAkUNACADIAI2AhQgAiADNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABBiKYCKAIARw0AQfylAiABNgIADwsgAUH/AU0EQCABQXhxQZymAmohAgJ/QfSlAigCACIDQQEgAUEDdnQiAXFFBEBB9KUCIAEgA3I2AgAgAgwBCyACKAIICyEBIAIgADYCCCABIAA2AgwgACACNgIMIAAgATYCCA8LQR8hAyABQf///wdNBEAgAUEmIAFBCHZnIgJrdkEBcSACQQF0a0E+aiEDCyAAIAM2AhwgAEIANwIQIANBAnRBpKgCaiECAkACQEH4pQIoAgAiBEEBIAN0IgdxRQRAQfilAiAEIAdyNgIAIAIgADYCACAAIAI2AhgMAQsgAUEZIANBAXZrQQAgA0EfRxt0IQMgAigCACECA0AgAiIEKAIEQXhxIAFGDQIgA0EddiECIANBAXQhAyAEIAJBBHFqIgdBEGooAgAiAg0ACyAHIAA2AhAgACAENgIYCyAAIAA2AgwgACAANgIIDwsgBCgCCCIBIAA2AgwgBCAANgIIIABBADYCGCAAIAQ2AgwgACABNgIICwvPBAEJfyMAQYABayIDJAAgAEEBNgIAIABCADcCBCAAQgA3AgwgAEIANwIUIABCADcCHCAAQoCAgIAQNwIkIABBLGpBAEHMABAMGiAAIAFBwAdsQbAXaiIBIAIgAkEfdSACcUEBdGsiBEEBc0H/AXFBAWtBH3YQKSAAIAFB+ABqIARBAnNB/wFxQQFrQR92ECkgACABQfABaiAEQQNzQf8BcUEBa0EfdhApIAAgAUHoAmogBEEEc0H/AXFBAWtBH3YQKSAAIAFB4ANqIARBBXNB/wFxQQFrQR92ECkgACABQdgEaiAEQQZzQf8BcUEBa0EfdhApIAAgAUHQBWogBEEHc0H/AXFBAWtBH3YQKSAAIAFByAZqIARBCHNB/wFxQQFrQR92ECkgAyAAKQJINwMoIAMgAEFAaykCADcDICADIAApAjg3AxggAyAAKQIwNwMQIAMgACkCKDcDCCADIAApAgg3AzggA0FAayAAKQIQNwMAIAMgACkCGDcDSCADIAApAiA3A1AgAyAAKQIANwMwIAAoAlQhASAAKAJYIQQgACgCXCEFIAAoAmAhBiAAKAJkIQcgACgCaCEIIAAoAmwhCSAAKAJwIQogACgCUCELIANBACAAKAJ0azYCfCADQQAgCms2AnggA0EAIAlrNgJ0IANBACAIazYCcCADQQAgB2s2AmwgA0EAIAZrNgJoIANBACAFazYCZCADQQAgBGs2AmAgA0EAIAFrNgJcIANBACALazYCWCAAIANBCGogAkGAAXFBB3YQKSADQYABaiQAC6wFAQl/IwBBoAFrIgMkACAAQQE2AgAgAEIANwIEIABCADcCDCAAQgA3AhQgAEIANwIcIABCADcCLCAAQoCAgIAQNwIkIABCADcCNCAAQgA3AjwgAEIANwJEIABCgICAgBA3AkwgAEHUAGpBAEHMABAMGiAAIAEgAiACQR91IAJxQQF0ayIEQQFzQf8BcUEBa0EfdhAqIAAgAUGgAWogBEECc0H/AXFBAWtBH3YQKiAAIAFBwAJqIARBA3NB/wFxQQFrQR92ECogACABQeADaiAEQQRzQf8BcUEBa0EfdhAqIAAgAUGABWogBEEFc0H/AXFBAWtBH3YQKiAAIAFBoAZqIARBBnNB/wFxQQFrQR92ECogACABQcAHaiAEQQdzQf8BcUEBa0EfdhAqIAAgAUHgCGogBEEIc0H/AXFBAWtBH3YQKiADIAApAkg3AyAgAyAAQUBrKQIANwMYIAMgACkCODcDECADIAApAjA3AwggAyAAKQIoNwMAIAMgACkCIDcDSCADQUBrIAApAhg3AwAgAyAAKQIQNwM4IAMgACkCCDcDMCADIAApAgA3AyggAyAAKQJYNwNYIAMgACkCYDcDYCADIAApAmg3A2ggAyAAKQJwNwNwIAMgACkCUDcDUCAAKAJ8IQEgACgCgAEhBCAAKAKEASEFIAAoAogBIQYgACgCjAEhByAAKAKQASEIIAAoApQBIQkgACgCmAEhCiAAKAJ4IQsgA0EAIAAoApwBazYCnAEgA0EAIAprNgKYASADQQAgCWs2ApQBIANBACAIazYCkAEgA0EAIAdrNgKMASADQQAgBms2AogBIANBACAFazYChAEgA0EAIARrNgKAASADQQAgAWs2AnwgA0EAIAtrNgJ4IAAgAyACQYABcUEHdhAqIANBoAFqJAALjhEBE38jAEHAH2siAyQAIANBoAFqIAIQECADQYAeaiIGIAIpAiA3AwAgA0H4HWoiByACKQIYNwMAIANB8B1qIgkgAikCEDcDACADQegdaiIMIAIpAgg3AwAgAyACKQIANwPgHSADQZAeaiINIAIpAjA3AwAgA0GYHmoiDiACKQI4NwMAIANBoB5qIg8gAkFAaykCADcDACADQageaiIQIAIpAkg3AwAgAyACKQIoNwOIHiADQbgeaiIRIAIpAlg3AwAgA0HAHmoiEiACKQJgNwMAIANByB5qIhMgAikCaDcDACADQdAeaiIUIAIpAnA3AwAgAyACKQJQNwOwHiADQcgbaiIIIANB4B1qIhUQGCADQegSaiILIAggA0HAHGoiBBAGIANBkBNqIANB8BtqIgUgA0GYHGoiChAGIANBuBNqIAogBBAGIANB4BNqIAggBRAGIANBwAJqIgQgCxAQIANBqBpqIgggAiAEEBMgA0HIEWoiCyAIIANBoBtqIgQQBiADQfARaiADQdAaaiIFIANB+BpqIgoQBiADQZgSaiAKIAQQBiADQcASaiAIIAUQBiADQeADaiALEBAgBiADQYgTaikCADcDACAHIANBgBNqKQIANwMAIAkgA0H4EmopAgA3AwAgDCADQfASaikCADcDACANIANBmBNqKQIANwMAIA4gA0GgE2opAgA3AwAgDyADQagTaikCADcDACAQIANBsBNqKQIANwMAIAMgAykC6BI3A+AdIAMgAykCkBM3A4geIBQgA0HYE2opAgA3AwAgEyADQdATaikCADcDACASIANByBNqKQIANwMAIBEgA0HAE2opAgA3AwAgAyADKQK4EzcDsB4gA0GIGWoiCCAVEBggA0GoEGoiCyAIIANBgBpqIgQQBiADQdAQaiADQbAZaiIFIANB2BlqIgoQBiADQfgQaiAKIAQQBiADQaARaiAIIAUQBiADQYAFaiIEIAsQECADQegXaiIIIAIgBBATIANBiA9qIgsgCCADQeAYaiIEEAYgA0GwD2ogA0GQGGoiBSADQbgYaiIKEAYgA0HYD2ogCiAEEAYgA0GAEGogCCAFEAYgA0GgBmogCxAQIAYgA0HoEWopAgA3AwAgByADQeARaikCADcDACAJIANB2BFqKQIANwMAIAwgA0HQEWopAgA3AwAgDSADQfgRaikCADcDACAOIANBgBJqKQIANwMAIA8gA0GIEmopAgA3AwAgECADQZASaikCADcDACADIAMpAsgRNwPgHSADIAMpAvARNwOIHiAUIANBuBJqKQIANwMAIBMgA0GwEmopAgA3AwAgEiADQagSaikCADcDACARIANBoBJqKQIANwMAIAMgAykCmBI3A7AeIANByBZqIgggFRAYIANB6A1qIgsgCCADQcAXaiIEEAYgA0GQDmogA0HwFmoiBSADQZgXaiIKEAYgA0G4DmogCiAEEAYgA0HgDmogCCAFEAYgA0HAB2oiBCALEBAgA0GoFWoiCiACIAQQEyADQcgMaiIIIAogA0GgFmoiAhAGIANB8AxqIANB0BVqIgQgA0H4FWoiBRAGIANBmA1qIAUgAhAGIANBwA1qIAogBBAGIANB4AhqIAgQECAGIANByBBqKQIANwMAIAcgA0HAEGopAgA3AwAgCSADQbgQaikCADcDACAMIANBsBBqKQIANwMAIA0gA0HYEGopAgA3AwAgDiADQeAQaikCADcDACAPIANB6BBqKQIANwMAIBAgA0HwEGopAgA3AwAgAyADKQKoEDcD4B0gAyADKQLQEDcDiB4gFCADQZgRaikCADcDACATIANBkBFqKQIA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azYCACAAQQAgACgCJGs2AiQgAEEAIAAoAiBrNgIgIABBACAAKAIcazYCHCAAQQAgACgCGGs2AhggAEEAIAAoAhRrNgIUIABBACAAKAIQazYCECAAQQAgACgCDGs2AgwgAEEAIAAoAghrNgIIIABBACAAKAIEazYCBAsgAEH4AGogACAGEAZBACEHCyACQcACaiQAIAcLBQBBgAILEAAgACABQYSXAigCABEAAAsQACAAIAFB/JYCKAIAEQAACy0BAX4gAq0gA61CIIaEIgZCEFoEfyAAIAFBEGogASAGQhB9IAQgBRBeBUF/CwsYACAAIAEgAiADrSAErUIghoQgBSAGEF4LGAAgACABIAIgA60gBK1CIIaEIAUgBhBPCxYAIAAgASACrSADrUIghoQgBCAFEHkLFQAgACABrSACrUIghoQgAyAEEM0BCxYAIAAgASACrSADrUIghoQgBEEAEHYLFwAgACABIAIgA60gBK1CIIaEIAUQhQMLFwAgACABIAIgA60gBK1CIIaEIAUQgwMLFwAgACABIAIgA60gBK1CIIaEIAUQhAMLFQAgACABIAKtIAOtQiCGhCAEEOkCCx8AIAAgASACrSADrUIghoQgBK0gBa1CIIaEIAYQ0QELGgAgACABIAKtIAOtQiCGhEGAlwIoAgARAgALHAAgACABIAKtIAOtQiCGhCAEQfiWAigCABERAAscACAAIAEgAq0gA61CIIaEIARB9JYCKAIAEREACxcAIAAgASACrSADrUIghoQgBCAFEOoCCxIAIAAgASACrSADrUIghoQQRwsYACAAIAEgAiADrSAErUIghoQgBSAGEGELLQEBfiACrSADrUIghoQiBkIQWgR/IAAgAUEQaiABIAZCEH0gBCAFEF0FQX8LCxgAIAAgASACIAOtIAStQiCGhCAFIAYQXQsYACAAIAEgAiADrSAErUIghoQgBSAGEE4LGQAgACABIAKtIAOtQiCGhCAEIAUgBhD3AgsZACAAIAEgAq0gA61CIIaEIAQgBSAGEPgCCxIAIAAgASACrSADrUIghoQQJgsVACAAIAEgAq0gA61CIIaEIAQQ4gILFQAgACABIAKtIAOtQiCGhCAEEOMCC4wBAQF/IwBBEGsiAiAANgIMIAIgATYCCEEAIQAgAkEANgIEA0AgAiACKAIEIAIoAgwgAGotAAAgAigCCCAAai0AAHNyNgIEIAIgAigCBCAAQQFyIgEgAigCDGotAAAgAigCCCABai0AAHNyNgIEIABBAmoiAEHAAEcNAAsgAigCBEEBa0EIdkEBcUEBawvaAgECfyMAQZADayIIJAAgCEEANgIEIAhBEGoiCSAGIAdBABAbGiAIIAYpABA3AgggCEHQAGoiB0LAACAIQQRqIAkQMxogCEGQAWoiBiAHQfyWAigCABEAABogB0HAABAJIAYgBCAFQYCXAigCABECABogBkHglgJCACAFfUIPg0GAlwIoAgARAgAaIAYgASACQYCXAigCABECABogBkHglgJCACACfUIPg0GAlwIoAgARAgAaIAggBTcDSCAGIAhByABqIgRCCEGAlwIoAgARAgAaIAggAjcDSCAGIARCCEGAlwIoAgARAgAaIAYgCEEwaiIEQYSXAigCABEAABogBkGAAhAJIAQgAxA3IQYgBEEQEAkCQCAARQ0AIAYEQCAAQQAgAqcQDBpBfyEGDAELIAAgASACIAhBBGogCEEQahDqAUEAIQYLIAhBEGpBIBAJIAhBkANqJAAgBgusAgEDfyMAQYADayIJJAAgCUEANgIEIAlBEGoiCiAHIAhBABAbGiAJIAcpABA3AgggCUFAayIIQsAAIAlBBGoiCyAKEDMaIAlBgAFqIgcgCEH8lgIoAgARAAAaIAhBwAAQCSAHIAUgBkGAlwIoAgARAgAaIAdB4JYCQgAgBn1CD4NBgJcCKAIAEQIAGiAAIAMgBCALIAoQ6gEgByAAIARBgJcCKAIAEQIAGiAHQeCWAkIAIAR9Qg+DQYCXAigCABECABogCSAGNwM4IAcgCUE4aiIAQghBgJcCKAIAEQIAGiAJIAQ3AzggByAAQghBgJcCKAIAEQIAGiAHIAFBhJcCKAIAEQAAGiAHQYACEAkgAgRAIAJCEDcDAAsgCUEQakEgEAkgCUGAA2okAEEAC0oBAn8jAEEgayIGJABBfyEHAkAgAkIQVA0AIAYgBCAFEEANACAAIAFBEGogASACQhB9IAMgBhBdIQcgBkEgEAkLIAZBIGokACAHC08BAn8jAEEgayIGJAAgAkLw////D1QEQEF/IQcgBiAEIAUQQEUEQCAAQRBqIAAgASACIAMgBhBOIQcgBkEgEAkLIAZBIGokACAHDwsQDgAL6AQBAn8jAEGgAWsiBCQAIAAgAS0AADoAACAAIAEtAAE6AAEgACABLQACOgACIAAgAS0AAzoAAyAAIAEtAAQ6AAQgACABLQAFOgAFIAAgAS0ABjoABiAAIAEtAAc6AAcgACABLQAIOgAIIAAgAS0ACToACSAAIAEtAAo6AAogACABLQALOgALIAAgAS0ADDoADCAAIAEtAA06AA0gACABLQAOOgAOIAAgAS0ADzoADyAAIAEtABA6ABAgACABLQAROgARIAAgAS0AEjoAEiAAIAEtABM6ABMgACABLQAUOgAUIAAgAS0AFToAFSAAIAEtABY6ABYgACABLQAXOgAXIAAgAS0AGDoAGCAAIAEtABk6ABkgACABLQAaOgAaIAAgAS0AGzoAGyAAIAEtABw6ABwgACABLQAdOgAdIAAgAS0AHjoAHiABLQAfIQMgACACBH8gACAALQAAQfgBcToAACADQcAAcgUgAwtB/wBxOgAfIAQgABA+IAAgBBAvQX8hAyAALQAfQf8AcSAALQAeIAAtAB0gAC0AHCAALQAbIAAtABogAC0AGSAALQAYIAAtABcgAC0AFiAALQAVIAAtABQgAC0AEyAALQASIAAtABEgAC0AECAALQAPIAAtAA4gAC0ADSAALQAMIAAtAAsgAC0ACiAALQAJIAAtAAggAC0AByAALQAGIAAtAAUgAC0ABCAALQADIAAtAAIgAC0AASAALQAAQQFzcnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyckEBa0GAAnFFBEBBf0EAIAFBIBAaGyEDCyAEQaABaiQAIAMLjgUBAn8jAEHAAmsiBCQAQX8hBQJAIAIQa0UNACACEEwNACAEIAIQNA0AIAQQbEUNACAAIAEtAAA6AAAgACABLQABOgABIAAgAS0AAjoAAiAAIAEtAAM6AAMgACABLQAEOgAEIAAgAS0ABToABSAAIAEtAAY6AAYgACABLQAHOgAHIAAgAS0ACDoACCAAIAEtAAk6AAkgACABLQAKOgAKIAAgAS0ACzoACyAAIAEtAAw6AAwgACABLQANOgANIAAgAS0ADjoADiAAIAEtAA86AA8gACABLQAQOgAQIAAgAS0AEToAESAAIAEtABI6ABIgACABLQATOgATIAAgAS0AFDoAFCAAIAEtABU6ABUgACABLQAWOgAWIAAgAS0AFzoAFyAA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DCAHKQAAQuv6htq/tfbBH4ULIQ4gAUFAa0EAQaUCEAwaIAEgDDcDOCABIA43AzAgASALNwMoIAEgDTcDICABQvHt9Pilp/2npX83AxggAUKr8NP0r+68tzw3AxAgAUK7zqqm2NDrs7t/NwMIIAEgCK1CiJL3lf/M+YTqAIU3AwBBAAshBAJAIANQDQAgAUHgAWohCSABQeAAaiEFA0AgBCAFaiEHQYACIARrIgatIgsgA1oEQCAHIAIgA6ciAhALGiABIAEoAuACIAJqNgLgAgwCCyAHIAIgBhALGiABIAEoAuACIAZqNgLgAiABIAEpA0AiDEKAAXw3A0AgASABKQNIIAxC/35WrXw3A0ggASAFEFIgBSAJQYABEAsaIAEgASgC4AJBgAFrIgQ2AuACIAIgBmohAiADIAt9IgNCAFINAAsLIAEgACAIEIMBGiAKJABBAAwBCxAOAAshCAsgCAsFAEGAAwsKACAAIAEgAhAHC/ADAgJ/An4jAEHAAWsiAyQAIANCADcDkAEgA0IANwOYASADQgA3A2ggA0IANwNwIANCADcDeCADQfiSAikDADcDqAEgA0GAkwIpAwA3A7ABIANBiJMCKQMANwO4ASADQgA3A4ABIANCADcDiAEgA0IANwNgIANB8JICKQMANwOgASADIAIpABA3A1AgAyACKQAYNwNYIAMgAikAADcDQCADIAIpAAg3A0ggA0GAAWoiAiADQUBrIgQQhQEgAhAoIAMgAykDmAE3AxggAyADKQOQATcDECADIAMpA4gBNwMIIAMgAykDgAE3AwAgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIAMgASkAEDcDUCADIAEpABg3A1ggASkACCEFIAEpAAAhBiADQgA3AzggA0IANwMwIANCADcDKCADIAY3A0AgAyAFNwNIIANCADcDICAEIAMQ6QEgAyADKQN4NwO4ASADIAMpA3A3A7ABIAMgAykDaDcDqAEgAyADKQNgNwOgASADIAMpA1g3A5gBIAMgAykDUDcDkAEgAyADKQNINwOIASADIAMpA0A3A4ABIAIQKCAAIAMpA5gBNwAYIAAgAykDkAE3ABAgACADKQOIATcACCAAIAMpA4ABNwAAIAJBwAAQCSADQcABaiQAC5cBAQF/IwBBQGoiAiQAIAIgASkAODcDOCACIAEpADA3AzAgAiABKQAoNwMoIAIgASkAIDcDICACIAEpABg3AxggAiABKQAQNwMQIAIgASkAADcDACACIAEpAAg3AwggAhAoIAAgAikDGDcAGCAAIAIpAxA3ABAgACACKQMINwAIIAAgAikDADcAACACQcAAEAkgAkFAayQAC8cCAgF/An4jAEHAAWsiAyQAIANCADcDYCADQgA3A2ggA0IANwNwIANCADcDeCADIAEpABA3A1AgAyABKQAYNwNYIAEpAAghBCABKQAAIQUgA0IANwMoIANCADcDMCADQgA3AzggAyAFNwNAIAMgBDcDSCADQgA3AyAgAyACKQAQNwMQIAMgAikAGDcDGCADIAIpAAA3AwAgAyACKQAINwMIIANBQGsgAxDpASADIAMpA3g3A7gBIAMgAykDcDcDsAEgAyADKQNoNwOoASADIAMpA2A3A6ABIAMgAykDWDcDmAEgAyADKQNQNwOQASADIAMpA0g3A4gBIAMgAykDQDcDgAEgA0GAAWoiARAoIAAgAykDmAE3ABggACADKQOQATcAECAAIAMpA4gBNwAIIAAgAykDgAE3AAAgAUHAABAJIANBwAFqJAAL5QEBAX8jAEGAAWsiAiQAIAJCADcDUCACQgA3A1ggAkIANwMoIAJCADcDMCACQgA3AzggAkH4kgIpAwA3A2ggAkGAkwIpAwA3A3AgAkGIkwIpAwA3A3ggAkIANwNAIAJCADcDSCACQQE6AEAgAkIANwMgIAJB8JICKQMANwNgIAIgASkAGDcDGCACIAEpABA3AxAgAiABKQAINwMIIAIgASkAADcDACACQUBrIgEgAhCFASABECggACACKQNYNwAYIAAgAikDUDcAECAAIAIpA0g3AAggACACKQNANwAAIAJBgAFqJAAL3gEBAX8jAEGAAWsiAiQAIAJCADcDUCACQgA3A1ggAkIANwMoIAJCADcDMCACQgA3AzggAkH4kgIpAwA3A2ggAkGAkwIpAwA3A3AgAkGIkwIpAwA3A3ggAkIANwNAIAJCADcDSCACQgA3AyAgAkHwkgIpAwA3A2AgAiABKQAQNwMQIAIgASkAGDcDGCACIAEpAAA3AwAgAiABKQAINwMIIAJBQGsiASACEIUBIAEQKCAAIAIpA1g3ABggACACKQNQNwAQIAAgAikDSDcACCAAIAIpA0A3AAAgAkGAAWokAAvPCwELfyMAQeAFayICJAAgAkHABWoiByABIAEQByACQeABaiIGIAEgBxAHIAJBoAVqIgQgASAGEAcgAkGABWoiBSAEIAQQByACQaADaiIJIAcgBRAHIAJBwAJqIgcgASAJEAcgAkHgBGoiAyAFIAUQByACQaACaiIFIAcgBxAHIAJBwARqIgggCSAFEAcgAkHAA2oiDCADIAUQByACQaAEaiIKIAggCBAHIAJBgANqIgggAyAKEAcgAkHgAmoiCyAGIAgQByACQcABaiIGIAMgCxAHIAJBoAFqIgMgBCAGEAcgAkHgAGogBCADEAcgAkGABGoiBiAKIAsQByACQeADaiIDIAQgBhAHIAJBgAJqIgYgDCADEAcgAkGAAWogBSAGEAcgAkFAayIFIAggAxAHIAJBIGoiAyAEIAUQByACIAkgAxAHIAAgByACEAdBACEEA0AgACAAIAAQByAEQQFqIgRB/gBHDQALIAAgACACQeACahAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACQcAFahAHIAAgACACEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkGgAWoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAhAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkGAAmoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAJBQGsQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHgAGoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHAAmoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAJBgARqEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHAAWoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHgA2oQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACQYABahAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkEgahAHIAJB4AVqJABBACABQSAQGmsLKAADQCAAQSAQGSAAIAAtAB9BH3E6AB8gABCNAUUNACAAQSAQGg0ACwsKACAAIAEgAhAuCykBAX8jAEEQayIAJAAgAEEAOgAPQeSfAiAAQQ9qQQAQABogAEEQaiQAC2MBBX8DQCAAIANqIgIgASADai0AACAEIAItAABqaiICOgAAIAAgA0EBciIEaiIGIAEgBGotAAAgBi0AACACQQh2amoiAjoAACACQQh2IQQgA0ECaiEDIAVBAmoiBUEgRw0ACwsoACACQoCAgIAQWgRAEA4ACyAAIAEgAiADQQEgBEG8nwIoAgAREAAaCwQAQQwLdAEFfwJAQQEhAgNAIAAgA2oiASACIAEtAABqIgI6AAAgASABLQABIAJBCHZqIgI6AAEgASABLQACIAJBCHZqIgI6AAIgASABLQADIAJBCHZqIgE6AAMgAUEIdiECIANBBGohAyAEQQRqIgRBBEcNAAsMAAsLggcBFH8jAEHwAWsiBCQAIARCADcDyAEgBEIANwPAASAEQcABaiIJIAEgAhALGiADKAAQIQYgA0FAayIBKAAAIQcgAygAUCEFIAMoACAhCCADKAAwIQogAygAFCELIAMoAEQhDCADKABUIQ0gAygAJCEOIAMoADQhDyADKAAYIRAgAygASCERIAMoAFghEiADKAAoIRMgAygAOCEUIAQoAsABIRUgBCgCxAEhFiAEKALIASEXIAQgAygALCADKAA8cSADKAAcIAMoAEwgAygAXCAEKALMAXNzc3M2AswBIAQgEyAUcSAQIBEgEiAXc3NzczYCyAEgBCAOIA9xIAsgDCANIBZzc3NzNgLEASAEIAggCnEgBiAHIAUgFXNzc3M2AsABIAIgCWpBAEEQIAJrEAwaIAAgCSACEAsaIAQoAsABIQAgBCgCxAEhAiAEKALIASEGIAQoAswBIQcgBCADKQJYNwPoASAEIAMpAlA3A+ABIAQgAykCSDcDuAEgBCABKQIANwOwASAEIAMpAlg3A6gBIAQgAykCUDcDoAEgBEHQAWoiBSAEQbABaiAEQaABahAIIAMgBCkC2AE3AlggAyAEKQLQATcCUCAEIAMpAjg3A5gBIAQgAykCMDcDkAEgBCADKQJINwOIASAEIAEpAgA3A4ABIAUgBEGQAWogBEGAAWoQCCADIAQpAtgBNwJIIAEgBCkC0AE3AgAgBCADKQIoNwN4IAQgAykCIDcDcCAEIAMpAjg3A2ggBCADKQIwNwNgIAUgBEHwAGogBEHgAGoQCCADIAQpAtgBNwI4IAMgBCkC0AE3AjAgBCADKQIYNwNYIAQgAykCEDcDUCAEIAMpAig3A0ggBCADKQIgNwNAIAUgBEHQAGogBEFAaxAIIAMgBCkC2AE3AiggAyAEKQLQATcCICAEIAMpAgg3AzggBCADKQIANwMwIAQgAykCGDcDKCAEIAMpAhA3AyAgBSAEQTBqIARBIGoQCCADIAQpAtgBNwIYIAMgBCkC0AE3AhAgBCAEKQPoATcDGCAEIAQpA+ABNwMQIAQgAykCCDcDCCAEIAMpAgA3AwAgBSAEQRBqIAQQCCAEKALQASEBIAQoAtQBIQUgBCgC2AEhCCADIAcgBCgC3AFzNgIMIAMgBiAIczYCCCADIAIgBXM2AgQgAyAAIAFzNgIAIARB8AFqJAALqwYBFH8jAEHgAWsiAyQAIAIoABAhBCACQUBrIgUoAAAhBiACKABQIQkgAigAICEKIAIoADAhCyACKAAUIQcgAigARCEMIAIoAFQhDSABKAAEIQ4gAigAJCEPIAIoADQhECACKAAYIQggAigASCERIAIoAFghEiABKAAIIRMgAigAKCEUIAIoADghFSABKAAAIRYgACACKAAsIAIoADxxIAIoABwgAigATCACKABcIAEoAAxzc3NzIgE2AAwgACAUIBVxIAggESASIBNzc3NzIgg2AAggACAPIBBxIAcgDCANIA5zc3NzIgc2AAQgACAKIAtxIAQgBiAJIBZzc3NzIgA2AAAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCSDcDuAEgAyAFKQIANwOwASADIAIpAlg3A6gBIAMgAikCUDcDoAEgA0HAAWoiBCADQbABaiADQaABahAIIAIgAykCyAE3AlggAiADKQLAATcCUCADIAIpAjg3A5gBIAMgAikCMDcDkAEgAyACKQJINwOIASADIAUpAgA3A4ABIAQgA0GQAWogA0GAAWoQCCACIAMpAsgBNwJIIAUgAykCwAE3AgAgAyACKQIoNwN4IAMgAikCIDcDcCADIAIpAjg3A2ggAyACKQIwNwNgIAQgA0HwAGogA0HgAGoQCCACIAMpAsgBNwI4IAIgAykCwAE3AjAgAyACKQIYNwNYIAMgAikCEDcDUCADIAIpAig3A0ggAyACKQIgNwNAIAQgA0HQAGogA0FAaxAIIAIgAykCyAE3AiggAiADKQLAATcCICADIAIpAgg3AzggAyACKQIANwMwIAMgAikCGDcDKCADIAIpAhA3AyAgBCADQTBqIANBIGoQCCACIAMpAsgBNwIYIAIgAykCwAE3AhAgAyADKQPYATcDGCADIAMpA9ABNwMQIAMgAikCCDcDCCADIAIpAgA3AwAgBCADQRBqIAMQCCADKALAASEFIAMoAsQBIQQgAygCyAEhBiACIAMoAswBIAFzNgIMIAIgBiAIczYCCCACIAQgB3M2AgQgAiAAIAVzNgIAIANB4AFqJAALiwkBEX8jAEHgAWsiBSQAIAQoADwgA0EddnMhDiAEKAA4IANBA3RzIQ8gBCgANCACQR12cyEQIARBMGoiAygAACACQQN0cyERIARBEGohAiAEQSBqIQYgBEFAayEHIARB0ABqIQgDQCAFIAgpAgg3A9gBIAUgCCkCADcD0AEgBSAHKQIINwO4ASAFIAcpAgA3A7ABIAUgCCkCCDcDqAEgBSAIKQIANwOgASAFQcABaiIJIAVBsAFqIAVBoAFqEAggCCAFKQLIATcCCCAIIAUpAsABNwIAIAUgAykCCDcDmAEgBSADKQIANwOQASAFIAcpAgg3A4gBIAUgBykCADcDgAEgCSAFQZABaiAFQYABahAIIAcgBSkCyAE3AgggByAFKQLAATcCACAFIAYpAgg3A3ggBSAGKQIANwNwIAUgAykCCDcDaCAFIAMpAgA3A2AgCSAFQfAAaiAFQeAAahAIIAMgBSkCyAE3AgggAyAFKQLAATcCACAFIAIpAgg3A1ggBSACKQIANwNQIAUgBikCCDcDSCAFIAYpAgA3A0AgCSAFQdAAaiAFQUBrEAggBiAFKQLIATcCCCAGIAUpAsABNwIAIAUgBCkCCDcDOCAFIAQpAgA3AzAgBSACKQIINwMoIAUgAikCADcDICAJIAVBMGogBUEgahAIIAIgBSkCyAE3AgggAiAFKQLAATcCACAFIAUpA9gBNwMYIAUgBSkD0AE3AxAgBSAEKQIINwMIIAUgBCkCADcDACAJIAVBEGogBRAIIAUoAsABIQsgBSgCxAEhDCAFKALIASEJIAQgDiAFKALMAXMiDTYCDCAEIAkgD3MiCTYCCCAEIAwgEHMiDDYCBCAEIAsgEXMiCzYCACAKQQFqIgpBB0cNAAsCQAJAAkACQCABQRBrDhEAAgICAgICAgICAgICAgICAQILIAQoABAhASAEKAAwIQIgBCgAICEDIAQoAFAhBiAEQUBrKAAAIQcgBCgAFCEIIAQoADQhCiAEKAAkIQ4gBCgAVCEPIAQoAEQhECAEKAAYIREgBCgAOCESIAQoACghEyAEKABYIRQgBCgASCEVIAAgBCgAHCAEKAA8IAQoACwgBCgAXCAEKABMc3NzcyANczYADCAAIBEgEiATIBQgFXNzc3MgCXM2AAggACAIIAogDiAPIBBzc3NzIAxzNgAEIAAgASACIAMgBiAHc3NzcyALczYAAAwCCyAEKAAgIQEgBCgAECECIAQoACQhAyAEKAAUIQYgBCgAKCEHIAQoABghCCAAIAQoACwgBCgAHHMgDXM2AAwgACAHIAhzIAlzNgAIIAAgAyAGcyAMczYABCAAIAEgAnMgC3M2AAAgBCgAMCEBIAQoAFAhAiAEQUBrKAAAIQMgBCgANCEGIAQoAFQhByAEKABEIQggBCgAOCEKIAQoAFghDSAEKABIIQkgACAEKAA8IAQoAFwgBCgATHNzNgAcIAAgCiAJIA1zczYAGCAAIAYgByAIc3M2ABQgACABIAIgA3NzNgAQDAELIABBACABEAwaCyAFQeABaiQAC6UGARR/IwBB4AFrIgMkACACKAAQIQUgAkFAayIEKAAAIQkgAigAUCEKIAIoACAhCyACKAAwIQwgASgABCEGIAIoABQhDSACKABEIQ4gAigAVCEPIAIoACQhECACKAA0IREgASgACCEHIAIoABghEiACKABIIRMgAigAWCEUIAIoACghFSACKAA4IRYgASgAACEIIAAgASgADCIBIAIoACwgAigAPHEgAigAHCACKABcIAIoAExzc3NzNgAMIAAgByAVIBZxIBIgEyAUc3NzczYACCAAIAYgECARcSANIA4gD3Nzc3M2AAQgACAIIAsgDHEgBSAJIApzc3NzNgAAIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAkg3A7gBIAMgBCkCADcDsAEgAyACKQJYNwOoASADIAIpAlA3A6ABIANBwAFqIgAgA0GwAWogA0GgAWoQCCACIAMpAsgBNwJYIAIgAykCwAE3AlAgAyACKQI4NwOYASADIAIpAjA3A5ABIAMgAikCSDcDiAEgAyAEKQIANwOAASAAIANBkAFqIANBgAFqEAggAiADKQLIATcCSCAEIAMpAsABNwIAIAMgAikCKDcDeCADIAIpAiA3A3AgAyACKQI4NwNoIAMgAikCMDcDYCAAIANB8ABqIANB4ABqEAggAiADKQLIATcCOCACIAMpAsABNwIwIAMgAikCGDcDWCADIAIpAhA3A1AgAyACKQIoNwNIIAMgAikCIDcDQCAAIANB0ABqIANBQGsQCCACIAMpAsgBNwIoIAIgAykCwAE3AiAgAyACKQIINwM4IAMgAikCADcDMCADIAIpAhg3AyggAyACKQIQNwMgIAAgA0EwaiADQSBqEAggAiADKQLIATcCGCACIAMpAsABNwIQIAMgAykD2AE3AxggAyADKQPQATcDECADIAIpAgg3AwggAyACKQIANwMAIAAgA0EQaiADEAggAygCwAEhACADKALEASEEIAMoAsgBIQUgAiABIAMoAswBczYCDCACIAUgB3M2AgggAiAEIAZzNgIEIAIgACAIczYCACADQeABaiQAC6UJAQ1/IwBBoANrIgIkACAAKAAQIQYgACgAFCEHIAAoABghCCAAKAAcIQkgACgABCEEIAAoAAghBSAAKAAMIQogACgAACELIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAEpAkg3A/gCIAIgAUFAayIAKQIANwPwAiACIAEpAlg3A+gCIAIgASkCUDcD4AIgAkGAA2oiAyACQfACaiACQeACahAIIAEgAikCiAM3AlggASACKQKAAzcCUCACIAEpAjg3A9gCIAIgASkCMDcD0AIgAiABKQJINwPIAiACIAApAgA3A8ACIAMgAkHQAmogAkHAAmoQCCABIAIpAogDNwJIIAAgAikCgAM3AgAgAiABKQIoNwO4AiACIAEpAiA3A7ACIAIgASkCODcDqAIgAiABKQIwNwOgAiADIAJBsAJqIAJBoAJqEAggASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCGDcDmAIgAiABKQIQNwOQAiACIAEpAig3A4gCIAIgASkCIDcDgAIgAyACQZACaiACQYACahAIIAEgAikCiAM3AiggASACKQKAAzcCICACIAEpAgg3A/gBIAIgASkCADcD8AEgAiABKQIYNwPoASACIAEpAhA3A+ABIAMgAkHwAWogAkHgAWoQCCABIAIpAogDNwIYIAEgAikCgAM3AhAgAiACKQOYAzcD2AEgAiACKQOQAzcD0AEgAiABKQIINwPIASACIAEpAgA3A8ABIAMgAkHQAWogAkHAAWoQCCACKAKAAyEMIAIoAoQDIQ0gAigCiAMhDiABIAogAigCjANzNgIMIAEgBSAOczYCCCABIAQgDXM2AgQgASALIAxzNgIAIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAEpAkg3A7gBIAIgACkCADcDsAEgAiABKQJYNwOoASACIAEpAlA3A6ABIAMgAkGwAWogAkGgAWoQCCABIAIpAogDNwJYIAEgAikCgAM3AlAgAiABKQI4NwOYASACIAEpAjA3A5ABIAIgASkCSDcDiAEgAiAAKQIANwOAASADIAJBkAFqIAJBgAFqEAggASACKQKIAzcCSCAAIAIpAoADNwIAIAIgASkCKDcDeCACIAEpAiA3A3AgAiABKQI4NwNoIAIgASkCMDcDYCADIAJB8ABqIAJB4ABqEAggASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCGDcDWCACIAEpAhA3A1AgAiABKQIoNwNIIAIgASkCIDcDQCADIAJB0ABqIAJBQGsQCCABIAIpAogDNwIoIAEgAikCgAM3AiAgAiABKQIINwM4IAIgASkCADcDMCACIAEpAhg3AyggAiABKQIQNwMgIAMgAkEwaiACQSBqEAggASACKQKIAzcCGCABIAIpAoADNwIQIAIgAikDmAM3AxggAiACKQOQAzcDECACIAEpAgg3AwggAiABKQIANwMAIAMgAkEQaiACEAggAigCgAMhACACKAKEAyEEIAIoAogDIQUgASAJIAIoAowDczYCDCABIAUgCHM2AgggASAEIAdzNgIEIAEgACAGczYCACACQaADaiQAC/MUARl/IwBBoAZrIgMkACABKAAEIQsgASgACCEMIAEoAAwhDSABKAAQIQ4gASgAFCEEIAEoABghDyABKAAcIRAgACgABCERIAAoAAghEiAAKAAMIRMgACgAECEUIAAoABQhFSAAKAAYIRYgACgAHCEXIAEoAAAhBSACQUBrIgEgACgAACIYQYCChBBzNgIAIAJClcTcyYWy+rziADcCOCACQTBqIgBCgIKEkLCggYQNNwIAIAJCoKLEkbSurZRdNwIoIAJBIGoiBkLb++Co1c3wl3E3AgAgAiAFIBhzIhk2AgAgAiAXQfPqoul9czYCXCACIBZBoKLEkQRzNgJYIAIgFUHthL+Jf3M2AlQgAkHQAGoiBSAUQdv74KgFczYCACACIBNBkNPnkwZzNgJMIAIgEkGVxNzJBXM2AkggAiARQYOKoOgAczYCRCACIBAgF3MiEDYCHCACIA8gFnMiDzYCGCACIAQgFXMiGjYCFCACQRBqIgQgDiAUcyIONgIAIAIgDSATcyINNgIMIAIgDCAScyIMNgIIIAIgCyARcyIbNgIEQQAhCwNAIAMgBSkCCDcDmAYgAyAFKQIANwOQBiADIAEpAgg3A/gFIAMgASkCADcD8AUgAyAFKQIINwPoBSADIAUpAgA3A+AFIANBgAZqIgcgA0HwBWogA0HgBWoQCCAFIAMpAogGNwIIIAUgAykCgAY3AgAgAyAAKQIINwPYBSADIAApAgA3A9AFIAMgASkCCDcDyAUgAyABKQIANwPABSAHIANB0AVqIANBwAVqEAggASADKQKIBjcCCCABIAMpAoAGNwIAIAMgBikCCDcDuAUgAyAGKQIANwOwBSADIAApAgg3A6gFIAMgACkCADcDoAUgByADQbAFaiADQaAFahAIIAAgAykCiAY3AgggACADKQKABjcCACADIAQpAgg3A5gFIAMgBCkCADcDkAUgAyAGKQIINwOIBSADIAYpAgA3A4AFIAcgA0GQBWogA0GABWoQCCAGIAMpAogGNwIIIAYgAykCgAY3AgAgAyACKQIINwP4BCADIAIpAgA3A/AEIAMgBCkCCDcD6AQgAyAEKQIANwPgBCAHIANB8ARqIANB4ARqEAggBCADKQKIBjcCCCAEIAMpAoAGNwIAIAMgAykDmAY3A9gEIAMgAykDkAY3A9AEIAMgAikCCDcDyAQgAyACKQIANwPABCAHIANB0ARqIANBwARqEAggAygCgAYhCCADKAKEBiEJIAMoAogGIQogAiADKAKMBiATczYCDCACIAogEnM2AgggAiAJIBFzNgIEIAIgCCAYczYCACADIAUpAgg3A5gGIAMgBSkCADcDkAYgAyABKQIINwO4BCADIAEpAgA3A7AEIAMgBSkCCDcDqAQgAyAFKQIANwOgBCAHIANBsARqIANBoARqEAggBSADKQKIBjcCCCAFIAMpAoAGNwIAIAMgACkCCDcDmAQgAyAAKQIANwOQBCADIAEpAgg3A4gEIAMgASkCADcDgAQgByADQZAEaiADQYAEahAIIAEgAykCiAY3AgggASADKQKABjcCACADIAYpAgg3A/gDIAMgBikCADcD8AMgAyAAKQIINwPoAyADIAApAgA3A+ADIAcgA0HwA2ogA0HgA2oQCCAAIAMpAogGNwIIIAAgAykCgAY3AgAgAyAEKQIINwPYAyADIAQpAgA3A9ADIAMgBikCCDcDyAMgAyAGKQIANwPAAyAHIANB0ANqIANBwANqEAggBiADKQKIBjcCCCAGIAMpAoAGNwIAIAMgAikCCDcDuAMgAyACKQIANwOwAyADIAQpAgg3A6gDIAMgBCkCADcDoAMgByADQbADaiADQaADahAIIAQgAykCiAY3AgggBCADKQKABjcCACADIAMpA5gGNwOYAyADIAMpA5AGNwOQAyADIAIpAgg3A4gDIAMgAikCADcDgAMgByADQZADaiADQYADahAIIAMoAoAGIQggAygChAYhCSADKAKIBiEKIAIgAygCjAYgF3M2AgwgAiAKIBZzNgIIIAIgCSAVczYCBCACIAggFHM2AgAgAyAFKQIINwOYBiADIAUpAgA3A5AGIAMgASkCCDcD+AIgAyABKQIANwPwAiADIAUpAgg3A+gCIAMgBSkCADcD4AIgByADQfACaiADQeACahAIIAUgAykCiAY3AgggBSADKQKABjcCACADIAApAgg3A9gCIAMgACkCADcD0AIgAyABKQIINwPIAiADIAEpAgA3A8ACIAcgA0HQAmogA0HAAmoQCCABIAMpAogGNwIIIAEgAykCgAY3AgAgAyAGKQIINwO4AiADIAYpAgA3A7ACIAMgACkCCDcDqAIgAyAAKQIANwOgAiAHIANBsAJqIANBoAJqEAggACADKQKIBjcCCCAAIAMpAoAGNwIAIAMgBCkCCDcDmAIgAyAEKQIANwOQAiADIAYpAgg3A4gCIAMgBikCADcDgAIgByADQZACaiADQYACahAIIAYgAykCiAY3AgggBiADKQKABjcCACADIAIpAgg3A/gBIAMgAikCADcD8AEgAyAEKQIINwPoASADIAQpAgA3A+ABIAcgA0HwAWogA0HgAWoQCCAEIAMpAogGNwIIIAQgAykCgAY3AgAgAyADKQOYBjcD2AEgAyADKQOQBjcD0AEgAyACKQIINwPIASADIAIpAgA3A8ABIAcgA0HQAWogA0HAAWoQCCADKAKABiEIIAMoAoQGIQkgAygCiAYhCiACIAMoAowGIA1zNgIMIAIgCiAMczYCCCACIAkgG3M2AgQgAiAIIBlzNgIAIAMgBSkCCDcDmAYgAyAFKQIANwOQBiADIAEpAgg3A7gBIAMgASkCADcDsAEgAyAFKQIINwOoASADIAUpAgA3A6ABIAcgA0GwAWogA0GgAWoQCCAFIAMpAogGNwIIIAUgAykCgAY3AgAgAyAAKQIINwOYASADIAApAgA3A5ABIAMgASkCCDcDiAEgAyABKQIANwOAASAHIANBkAFqIANBgAFqEAggASADKQKIBjcCCCABIAMpAoAGNwIAIAMgBikCCDcDeCADIAYpAgA3A3AgAyAAKQIINwNoIAMgACkCADcDYCAHIANB8ABqIANB4ABqEAggACADKQKIBjcCCCAAIAMpAoAGNwIAIAMgBCkCCDcDWCADIAQpAgA3A1AgAyAGKQIINwNIIAMgBikCADcDQCAHIANB0ABqIANBQGsQCCAGIAMpAogGNwIIIAYgAykCgAY3AgAgAyACKQIINwM4IAMgAikCADcDMCADIAQpAgg3AyggAyAEKQIANwMgIAcgA0EwaiADQSBqEAggBCADKQKIBjcCCCAEIAMpAoAGNwIAIAMgAykDmAY3AxggAyADKQOQBjcDECADIAIpAgg3AwggAyACKQIANwMAIAcgA0EQaiADEAggAygCgAYhCCADKAKEBiEJIAMoAogGIQogAiADKAKMBiAQczYCDCACIAogD3M2AgggAiAJIBpzNgIEIAIgCCAOczYCACALQQFqIgtBBEcNAAsgA0GgBmokAAsIACAAQRAQGQsEAEFfC5gKAR5/IwBBwAJrIgQkACAEQgA3A5gCIARCADcDkAIgBEIANwOIAiAEQgA3A4ACIARBgAJqIgUgASACEAsaIAMoABAhCyADKAAwIQwgAygAFCENIAMoADQhDiADKAAYIQ8gAygAOCEQIAMoABwhESADKAA8IRIgAygAJCEBIAMoAFQhEyADKAB0IRQgAygAZCEGIAMoACwhByADKABcIRUgAygAfCEWIAMoAGwhCCADKAAgIQkgAygAUCEXIAMoAHAhGCADKABgIQogBCgCkAIhGSAEKAKAAiEaIAQoAoQCIRsgBCgCiAIhHCAEKAKMAiEdIAQoApQCIR4gBCgCnAIhHyAEIAMoACgiICADKABoIiEgAygAeHEgAygAWCAEKAKYAnNzczYCmAIgBCAJIAogGHEgFyAZc3NzNgKQAiAEIAcgCCAWcSAVIB9zc3M2ApwCIAQgASAGIBRxIBMgHnNzczYClAIgBCAIIAcgEnEgESAdc3NzNgKMAiAEICEgECAgcSAPIBxzc3M2AogCIAQgBiABIA5xIA0gG3NzczYChAIgBCAKIAkgDHEgCyAac3NzNgKAAiACIAVqQQBBICACaxAMGiAAIAUgAhALGiAEKAKYAiEBIAQoApACIQIgBCgCnAIhBiAEKAKUAiEHIAQoAoACIQggBCgChAIhCSAEKAKIAiEKIAQoAowCIQsgBCADKQJ4NwO4AiAEIAMpAnA3A7ACIAQgAykCaDcD+AEgBCADKQJgNwPwASAEIAMpAng3A+gBIAQgAykCcDcD4AEgBEGgAmoiBSAEQfABaiAEQeABahAIIAMgBCkCqAI3AnggAyAEKQKgAjcCcCAEIAMpAlg3A9gBIAQgAykCUDcD0AEgBCADKQJoNwPIASAEIAMpAmA3A8ABIAUgBEHQAWogBEHAAWoQCCADIAQpAqgCNwJoIAMgBCkCoAI3AmAgBCADKQJINwO4ASAEIANBQGsiACkCADcDsAEgBCADKQJYNwOoASAEIAMpAlA3A6ABIAUgBEGwAWogBEGgAWoQCCADIAQpAqgCNwJYIAMgBCkCoAI3AlAgBCADKQI4NwOYASAEIAMpAjA3A5ABIAQgAykCSDcDiAEgBCAAKQIANwOAASAFIARBkAFqIARBgAFqEAggAyAEKQKoAjcCSCAAIAQpAqACNwIAIAQgAykCKDcDeCAEIAMpAiA3A3AgBCADKQI4NwNoIAQgAykCMDcDYCAFIARB8ABqIARB4ABqEAggAyAEKQKoAjcCOCADIAQpAqACNwIwIAQgAykCGDcDWCAEIAMpAhA3A1AgBCADKQIoNwNIIAQgAykCIDcDQCAFIARB0ABqIARBQGsQCCADIAQpAqgCNwIoIAMgBCkCoAI3AiAgBCADKQIINwM4IAQgAykCADcDMCAEIAMpAhg3AyggBCADKQIQNwMgIAUgBEEwaiAEQSBqEAggAyAEKQKoAjcCGCADIAQpAqACNwIQIAQgBCkDuAI3AxggBCAEKQOwAjcDECAEIAMpAgg3AwggBCADKQIANwMAIAUgBEEQaiAEEAggAyAEKQKoAjcCCCADIAQpAqACNwIAIAMgCyADKAAMczYCDCADIAogAygACHM2AgggAyAJIAMoAARzNgIEIAMgCCADKAAAczYCACAAIAIgACgAAHM2AgAgAyAHIAMoAERzNgJEIAMgASADKABIczYCSCADIAYgAygATHM2AkwgBEHAAmokAAuRCQEefyMAQaACayIDJAAgAigAECEOIAIoADAhDyACKAAUIRAgASgABCERIAIoADQhEiACKAAYIRMgASgACCEUIAIoADghFSACKAAcIQggASgADCEWIAIoADwhFyACKAAgIQUgAigAUCEJIAEoABAhGCACKABwIRkgAigAYCEEIAIoACQhBiACKABUIQogASgAFCEaIAIoAHQhGyACKABkIQwgAigAKCEHIAIoAFghCyABKAAYIRwgAigAeCEdIAIoAGghDSABKAAAIR4gACACKAAsIh8gAigAbCIgIAIoAHxxIAIoAFwgASgAHHNzcyIBNgAcIAAgByANIB1xIAsgHHNzcyILNgAYIAAgBiAMIBtxIAogGnNzcyIKNgAUIAAgBSAEIBlxIAkgGHNzcyIJNgAQIAAgICAXIB9xIAggFnNzcyIINgAMIAAgDSAHIBVxIBMgFHNzcyIHNgAIIAAgDCAGIBJxIBAgEXNzcyIGNgAEIAAgBCAFIA9xIA4gHnNzcyIFNgAAIAMgAikCeDcDmAIgAyACKQJwNwOQAiADIAIpAmg3A/gBIAMgAikCYDcD8AEgAyACKQJ4NwPoASADIAIpAnA3A+ABIANBgAJqIgQgA0HwAWogA0HgAWoQCCACIAMpAogCNwJ4IAIgAykCgAI3AnAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCaDcDyAEgAyACKQJgNwPAASAEIANB0AFqIANBwAFqEAggAiADKQKIAjcCaCACIAMpAoACNwJgIAMgAikCSDcDuAEgAyACQUBrIgApAgA3A7ABIAMgAikCWDcDqAEgAyACKQJQNwOgASAEIANBsAFqIANBoAFqEAggAiADKQKIAjcCWCACIAMpAoACNwJQIAMgAikCODcDmAEgAyACKQIwNwOQASADIAIpAkg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAIgAykCiAI3AkggACADKQKAAjcCACADIAIpAig3A3ggAyACKQIgNwNwIAMgAikCODcDaCADIAIpAjA3A2AgBCADQfAAaiADQeAAahAIIAIgAykCiAI3AjggAiADKQKAAjcCMCADIAIpAhg3A1ggAyACKQIQNwNQIAMgAikCKDcDSCADIAIpAiA3A0AgBCADQdAAaiADQUBrEAggAiADKQKIAjcCKCACIAMpAoACNwIgIAMgAikCCDcDOCADIAIpAgA3AzAgAyACKQIYNwMoIAMgAikCEDcDICAEIANBMGogA0EgahAIIAIgAykCiAI3AhggAiAD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IAIoAHAhGiACKABgIQkgAigAJCEKIAEoABQhCyACKABUIRsgAigAdCEcIAIoAGQhDCACKAAoIQ0gASgAGCEOIAIoAFghHSACKAB4IR4gAigAaCEPIAEoAAAhECAAIAIoACwiHyABKAAcIgEgAigAXCACKABsIiAgAigAfHFzc3M2ABwgACANIA4gHSAPIB5xc3NzNgAYIAAgCiALIBsgDCAccXNzczYAFCAAIAQgCCAZIAkgGnFzc3M2ABAgACAgIAcgFyAYIB9xc3NzNgAMIAAgDyAGIBUgDSAWcXNzczYACCAAIAwgBSATIAogFHFzc3M2AAQgACAJIBAgESAEIBJxc3NzNgAAIAMgAikCeDcDmAIgAyACKQJwNwOQAiADIAIpAmg3A/gBIAMgAikCYDcD8AEgAyACKQJ4NwPoASADIAIpAnA3A+ABIANBgAJqIgQgA0HwAWogA0HgAWoQCCACIAMpAogCNwJ4IAIgAykCgAI3AnAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCaDcDyAEgAyACKQJgNwPAASAEIANB0AFqIANBwAFqEAggAiADKQKIAjcCaCACIAMpAoACNwJgIAMgAikCSDcDuAEgAyACQUBrIgApAgA3A7ABIAMgAikCWDcDqAEgAyACKQJQNwOgASAEIANBsAFqIANBoAFqEAggAiADKQKIAjcCWCACIAMpAoACNwJQIAMgAikCODcDmAEgAyACKQIwNwOQASADIAIpAkg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAIgAykCiAI3AkggACADKQKAAjcCACADIAIpAig3A3ggAyACKQIgNwNwIAMgAikCODcDaCADIAIpAjA3A2AgBCADQfAAaiADQeAAahAIIAIgAykCiAI3AjggAiADKQKAAjcCMCADIAIpAhg3A1ggAyACKQIQNwNQIAMgAikCKDcDSCADIAIpAiA3A0AgBCADQdAAaiADQUBrEAggAiADKQKIAjcCKCACIAMpAoACNwIgIAMgAikCCDcDOCADIAIpAgA3AzAgAyACKQIYNwMoIAMgAikCEDcDICAEIANBMGogA0EgahAIIAIgAykCiAI3AhggAiADKQKAAjcCECADIAMpA5gCNwMYIAMgAykDkAI3AxAgAyACKQIINwMIIAMgAikCADcDACAE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ACJDNwPQAiADIAEpAAg3A9gCIAMgQ6dB+AFxOgDQAiADIAMtAO8CQT9xQcAAcjoA7wIgA0GgAmogAhA2IANCADcChAIgA0IANwKMAiADQQA2ApQCIANCADcD0AEgA0IANwPYASADQgA3A+ABIAMgAykDsAI3A6ABIAMgAykDuAI3A6gBIAMgAykDwAI3A7ABIANCADcC9AEgA0EBNgLwASADQgA3AvwBIANCADcDwAEgA0IANwPIASADIAMpA6ACNwOQASADIAMpA6gCNwOYASADQgA3AnQgA0IANwJ8IANBADYChAEgA0IANwJkIANBATYCYCADQgA3AmxB/gEhAkEAIQQDQCADKAKUAiEJIAMoArQBIQYgAygCYCEHIAMoAsABIQogAygCkAEhCyADKALwASENIAMoAmQhCCADKALEASEMIAMoApQBIQUgAygC9AEhECADKAJoIQ4gAygCyAEhESADKAKYASESIAMoAvgBIRMgAygCbCEPIAMoAswBIRQgAygCnAEhFSADKAL8ASEXIAMoAnAhGCADKALQASEcIAMoAqABIR0gAygCgAIhHiADKAJ0IRkgAygC1AEhHyADKAKkASEgIAMoAoQCISEgAygCeCEaIAMoAtgBISIgAygCqAEhIyADKAKIAiEkIAMoAnwhGyADKALcASElIAMoAqwBISYgAygCjAIhJyADKAKAASEWIAMoAuABISggAygCsAEhKSADKAKQAiEsIANBACAEIANB0AJqIi0gAiIBQQN2ai0AACACQQdxdkEBcSIEc2siAiADKAKEASIqIAMoAuQBIitzcSIuICpzIio2AoQBIAMgBiAGIAlzIAJxIi9zIjAgKms2AlQgAyAWIBYgKHMgAnEiMXMiBjYCgAEgAyApICkgLHMgAnEiFnMiKSAGazYCUCADIBsgGyAlcyACcSIycyIbNgJ8IAMgJiAmICdzIAJxIjNzIiYgG2s2AkwgAyAaIBogInMgAnEiNHMiGjYCeCADICMgIyAkcyACcSI1cyIjIBprNgJIIAMgGSAZIB9zIAJxIjZzIhk2AnQgAyAgICAgIXMgAnEiN3MiICAZazYCRCADIBggGCAccyACcSI4cyIYNgJwIAMgHSAdIB5zIAJxIjlzIh0gGGs2AkAgAyAPIA8gFHMgAnEiOnMiDzYCbCADIBUgFSAXcyACcSI7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BiAWIAMgGhAGIAENAAsgAygCkAEhECADKALwASECIAMoApQBIQ4gAygC9AEhBiADKAKYASERIAMoAvgBIQcgAygCnAEhEiADKAL8ASEKIAMoAqABIRMgAygCgAIhCyADKAKkASEPIAMoAoQCIQ0gAygCqAEhFCADKAKIAiEIIAMoAqwBIRUgAygCjAIhDCADKAKwASEXIAMoApACIQUgA0EAIARrIgEgAygClAIiBCADKAK0AXNxIARzNgKUAiADIAUgBSAXcyABcXM2ApACIAMgDCAMIBVzIAFxczYCjAIgAyAIIAggFHMgAXFzNgKIAiADIA0gDSAPcyABcXM2AoQCIAMgCyALIBNzIAFxczYCgAIgAyAKIAogEnMgAXFzNgL8ASADIAcgByARcyABcXM2AvgBIAMgBiAGIA5zIAFxczYC9AEgAyACIAIgEHMgAXFzNgLwASADKALAASECIAMoAmAhBSADKALEASEEIAMoAmQhECADKALIASEGIAMoAmghDiADKALMASEHIAMoAmwhESADKALQASEKIAMoAnAhEiADKALUASELIAMoAnQhEyADKALYASENIAMoAnghDyADKALcASEIIAMoAnwhFCADKALgASEMIAMoAoABIRUgAyADKALkASIXIAMoAoQBcyABcSAXczYC5AEgAyAMIAwgFXMgAXFzNgLgASADIAggCCAUcyABcXM2AtwBIAMgDSANIA9zIAFxczYC2AEgAyALIAsgE3MgAXFzNgLUASADIAogCiAScyABcXM2AtABIAMgByAHIBFzIAFxczYCzAEgAyAGIAYgDnMgAXFzNgLIASADIAQgBCAQcyABcXM2AsQBIAMgAiACIAVzIAFxczYCwAEgFiAWEDUgGSAZIBYQBiAAIBkQESAtQSAQCUEAIQkLIANB8AJqJAAgCQs4AQF/IwBBIGsiBiQAIAYgBCAFQQAQGxogACABIAKtIAOtQiCGhCAEQRBqQgAgBhA7IAZBIGokAAtAAQF/IwBBIGsiCCQAIAggBCAHQQAQGxogACABIAKtIAOtQiCGhCAEQRBqIAWtIAatQiCGhCAIEDsgCEEgaiQACzQBAX8jAEEgayIFJAAgBSADIARBABAbGiAAIAGtIAKtQiCGhCADQRBqIAUQUyAFQSBqJAALtgQCA38CfiMAQfAAayIGJAAgAq0gA61C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IwtbAQJ+IAetIAitQiCGhCEMQX8hAiAErSAFrUIghoQiC0IQWgRAIAAgAyALQhB9IAMgC6dqQRBrIAYgDCAJIAoQsgEhAgsgAQRAIAFCACALQhB9IAIbNwMACyACCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQsgELWQECfgJ/IAatIAetQiCGhCEMIAOtIAStQiCGhCILQvD///8PVARAIAAgACALp2pBACACIAsgBSAMIAkgChCzARogAQRAIAEgC0IQfDcDAAtBAAwBCxAOAAsLJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALELMBC1sBAn4gB60gCK1CIIaEIQxBfyECIAStIAWtQiCGhCILQhBaBEAgACADIAtCEH0gAyALp2pBEGsgBiAMIAkgChDDASECCyABBEAgAUIAIAtCEH0gAhs3AwALIAILJQAgACACIAOtIAStQiCGhCAFIAYgB60gCK1CIIaEIAkgChDDAQtbAQJ+IAetIAitQiCGhCEMQX8hAiAErSAFrUIghoQiC0IQWgRAIAAgAyALQhB9IAMgC6dqQRBrIAYgDCAJIAoQxAEhAgsgAQRAIAFCACALQhB9IAIbNwMACyACCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQxAELWQECfgJ/IAatIAetQiCGhCEMIAOtIAStQiCGhCILQvD///8PVARAIAAgACALp2pBACACIAsgBSAMIAkgChDFARogAQRAIAEgC0IQfDcDAAtBAAwBCxAOAAsLJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEMUBC1kBAn4CfyAGrSAHrUIghoQhDCADrSAErUIghoQiC0Lw////D1QEQCAAIAAgC6dqQQAgAiALIAUgDCAJIAoQxgEaIAEEQCABIAtCEHw3AwALQQAMAQsQDgALCycAIAAgASACIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAogCxDGAQtZAQJ+IAetIAitQiCGhCELQX8hAQJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC3////w9WDQAgACACIAynIAVBICAGIAunIAkgCkGsnwIoAgARDQAhAQsgAQuAAQEDfiAHrSAIrUIghoQhDEF/IQICQCAErSAFrUIghoQiC0IgVA0AIAtCIH0iDULf////D1YNACAMQt////8PVg0AIAAgAyANpyADIAunakEga0EgIAYgDKcgCSAKQayfAigCABENACECCyABBEAgAUIAIAtCIH0gAhs3AwALIAILYAECfiAErSAFrUIghoQhDCAHrSAIrUIghoQhDSACBEAgAkIgNwMACyANQuD///8PVCAMQt////8PWHFFBEAQDgALIAAgAUEgIAMgDKcgBiANpyAKIAtBqJ8CKAIAEQ0AC3YBAn4CfyAGrSAHrUIghoQhCwJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC4P///w9aDQAgACAAIAynIgNqQSAgAiADIAUgC6cgCSAKQaifAigCABENACEAIAEEQCABQgAgDEIgfCAAGzcDAAsgAAwBCxAOAAsLWQECfiAHrSAIrUIghoQhC0F/IQECQCADrSAErUIghoQiDELf////D1YNACALQt////8PVg0AIAAgAiAMpyAFQSAgBiALpyAJIApBpJ8CKAIAEQ0AIQELIAELgAEBA34gB60gCK1CIIaEIQxBfyECAkAgBK0gBa1CIIaEIgtCIFQNACALQiB9Ig1C3////w9WDQAgDELf////D1YNACAAIAMgDacgAyALp2pBIGtBICAGIAynIAkgCkGknwIoAgARDQAhAgsgAQRAIAFCACALQiB9IAIbNwMACyACC2ABAn4gBK0gBa1CIIaEIQwgB60gCK1CIIaEIQ0gAgRAIAJCIDcDAAsgDULg////D1QgDELf////D1hxRQRAEA4ACyAAIAFBICADIAynIAYgDacgCiALQaCfAigCABENAAt2AQJ+An8gBq0gB61CIIaEIQsCQCADrSAErUIghoQiDELf////D1YNACALQuD///8PWg0AIAAgACAMpyIDakEgIAIgAyAFIAunIAkgCkGgnwIoAgARDQAhACABBEAgAUIAIAxCIHwgABs3AwALIAAMAQsQDgALCwUAQegACwQAQRoLBQBBiwwLBQBBtAoL/QEBBX8jACIFIQkgBUGABGtBQHEiBSQAIAAgASAAGyIHBEBBfyEGIAVB4ABqIgggAyAEEB9FBEAgASAAIAEbIQNBACEAIAVBgAFqIgFBAEEAQcAAECIaIAEgCEIgEA8aIAhBIBAJIAEgBEIgEA8aIAEgAkIgEA8aIAEg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ACABIAIgAxAiCwsAIAAgASACEMcBCw0AIAAgASACIAMQyAELBwAgABDJAQsJACAAIAEQywELCwAgACABIAIQzAELBQBBrgsLOgEDfiABKQAgIQIgASkAKCEDIAEpADAhBCAAIAEpADg3ABggACAENwAQIAAgAzcACCAAIAI3AABBAAs6AQN+IAEpAAghAiABKQAQIQMgASkAACEEIAAgASkAGDcAGCAAIAM3ABAgACACNwAIIAAgBDcAAEEAC3wBAX8CQAJAAkAgA0LAAFQNACADQkB8IgNCv////w9WDQAgAiACQUBrIgUgAyAEQQAQdkUNASAARQ0AIABBACADpxAMGgtBfyECIAFFDQEgAUIANwMAQX8PCyABBEAgASADNwMAC0EAIQIgAEUNACAAIAUgA6cQQhoLIAILcAECfyMAQRBrIgUkACAAIAVBCGogAEFAayACIAOnIgIQQiADIARBABB4GgJAIAUpAwhCwABSBEAgAQRAIAFCADcDAAsgAEEAIAJBQGsQDBpBfyEGDAELIAFFDQAgASADQkB9NwMACyAFQRBqJAAgBgsTACAAIAEgAiADIARBABB4GkEAC20BAX8jAEFAaiICJAAgAiABQiAQRxogAiACLQAAQfgBcToAACACIAItAB9BP3FBwAByOgAfIAAgAikDEDcAECAAIAIpAwg3AAggACACKQMANwAAIAAgAikDGDcAGCACQcAAEAkgAkFAayQAQQAL5woCD38nfiMAQYACayICJABBfyEIAkAgARBMDQAgAkHgAGoiAyABEJQBDQAgAxBsRQ0AQQAhCCACQQAgAigCrAEiAWs2AiQgAkEAIAIoAqgBIgNrNgIgIAJBACACKAKkASIJazYCHCACQQAgAigCoAEiBGs2AhggAkEAIAIoApwBIgprNgIUIAJBACACKAKYASIFazYCECACQQAgAigClAEiC2s2AgwgAkEAIAIoApABIgZrNgIIIAJBACACKAKMASIMazYCBCACQQEgAigCiAEiB2s2AgAgAiACEDUgAiACKAIEIg2sIhkgCkEBdKwiIn4gAjQCACIRIASsIhR+fCACKAIIIgSsIhsgBawiFX58IAIoAgwiBawiHiALQQF0rCIjfnwgAigCECIOrCIfIAasIhZ+fCACKAIUIgasIiQgDEEBdKwiJX58IAIoAhgiD6wiLiAHQQFqrCIXfnwgAigCHCIHQRNsrCIaIAFBAXSsIiZ+fCACKAIgIhBBE2ysIhIgA6wiGH58IAIoAiQiA0ETbKwiEyAJQQF0rCInfnwgFSAZfiARIAqsIih+fCAbIAusIil+fCAWIB5+fCAfIAysIip+fCAXICR+fCAPQRNsrCIcIAGsIit+fCAYIBp+fCASIAmsIix+fCATIBR+fCAZICN+IBEgFX58IBYgG358IB4gJX58IBcgH358IAZBE2ysIi0gJn58IBggHH58IBogJ358IBIgFH58IBMgIn58IjBCgICAEHwiMUIah3wiMkKAgIAIfCIzQhmHfCIgICBCgICAEHwiIUKAgIDgD4N9PgJIIAIgGSAlfiARIBZ+fCAXIBt+fCAFQRNsrCIdICZ+fCAOQRNsrCIgIBh+fCAnIC1+fCAUIBx+fCAaICJ+fCASIBV+fCATICN+fCAXIBl+IBEgKn58IARBE2ysIi8gK358IBggHX58ICAgLH58IBQgLX58IBwgKH58IBUgGn58IBIgKX58IBMgFn58IA1BE2ysICZ+IBEgF358IBggL358IB0gJ358IBQgIH58ICIgLX58IBUgHH58IBogI358IBIgFn58IBMgJX58Ii9CgICAEHwiNEIah3wiNUKAgIAIfCI2QhmHfCIdIB1CgICAEHwiN0KAgIDgD4N9PgI4IAIgFCAZfiARICx+fCAbICh+fCAVIB5+fCAfICl+fCAWICR+fCAqIC5+fCAHrCIdIBd+fCASICt+fCATIBh+fCAhQhqHfCIhICFCgICACHwiIUKAgIDwD4N9PgJMIAIgFiAZfiARICl+fCAbICp+fCAXIB5+fCAgICt+fCAYIC1+fCAcICx+fCAUIBp+fCASICh+fCATIBV+fCA3QhqHfCISIBJCgICACHwiEkKAgIDwD4N9PgI8IAIgGSAnfiARIBh+fCAUIBt+fCAeICJ+fCAVIB9+fCAjICR+fCAWIC5+fCAdICV+fCAQrCIaIBd+fCATICZ+fCAhQhmHfCITIBNCgICAEHwiE0KAgIDgD4N9PgJQIAIgMiAzQoCAgPAPg30gMCAxQoCAgGCDfSASQhmHfCISQoCAgBB8IhxCGoh8PgJEIAIgEiAcQoCAgOAPg30+AkAgAiAYIBl+IBEgK358IBsgLH58IBQgHn58IB8gKH58IBUgJH58ICkgLn58IBYgHX58IBogKn58IAOsIBd+fCATQhqHfCIRIBFCgICACHwiEUKAgIDwD4N9PgJUIAIgNSA2QoCAgPAPg30gLyA0QoCAgGCDfSARQhmHQhN+fCIRQoCAgBB8IhRCGoh8PgI0IAIgESAUQoCAgOAPg30+AjAgACACQTBqEBELIAJBgAJqJAAgCAsFAEGCDAs0AQJ/IwBBIGsiAyQAQX8hBCADIAIgARAfRQRAIABBgJYCIANBABAbIQQLIANBIGokACAECwUAQYQJC+EFAgR+An9BfyEKAkAgAkHAAEsNACADQcEAa0FASQ0AAkAgAUEAIAIbRQRAAn8gA0H/AXEiAUHBAGtB/wFxQb8BSwRAAn4gBEUEQEKf2PnZwpHagpt/IQZC0YWa7/rPlIfRAAwBCyAEKQAIQp/Y+dnCkdqCm3+FIQYgBCkAAELRhZrv+s+Uh9EAhQshCAJ+IAVFBEBC+cL4m5Gjs/DbACEHQuv6htq/tfbBHwwBCyAFKQAIQvnC+JuRo7Pw2wCFIQcgBSkAAELr+obav7X2wR+FCyEJIABBQGtBAEGlAhAMGiAAIAc3ADggACAJNwAwIAAgBjcAKCAAIAg3ACAgAELx7fT4paf9p6V/NwAYIABCq/DT9K/uvLc8NwAQIABCu86qptjQ67O7fzcACCAAIAGtQoiS95X/zPmE6gCFNwAAQQAMAQsQDgALRQ0BDAILAn8gAkH/AXEhAiMAQYABayILJAACQCADQf8BcSIDQcEAa0H/AXFBvwFNDQAgAUUNACACQcEAa0H/AXFBvwFNDQACfiAERQRAQp/Y+dnCkdqCm38hBkLRhZrv+s+Uh9EADAELIAQpAAhCn9j52cKR2oKbf4UhBiAEKQAAQtGFmu/6z5SH0QCFCyEIAn4gBUUEQEL5wvibkaOz8NsAIQdC6/qG2r+19sEfDAELIAUpAAhC+cL4m5Gjs/DbAIUhByAFKQAAQuv6htq/tfbBH4ULIQkgAEFAa0EAQaUCEAwaIAAgBzcAOCAAIAk3ADAgACAGNwAoIAAgCDcAICAAQvHt9Pilp/2npX83ABggAEKr8NP0r+68tzw3ABAgAEK7zqqm2NDrs7t/NwAIIAAgA60gAq1CCIaEQoiS95X/zPmE6gCFNwAAIABB4ABqIAtBAEGAARAMIAEgAhALIgFBgAEQCxogACAAKADgAkGAAWo2AOACIAFBgAEQCSABQYABaiQAQQAMAQsQDgALDQELQQAhCgsgCgsIAEGAgICAAgsIAEGAgIDAAAsEAEEGCwUAQZIMCz0BAX8gAUF5cUEBRwRAEA4ACyAAIABBA24iAEF9bGoiAkEBakEEIAFBAnEbQQAgAkEDcRsgAEECdGpBAWoLogUBCX8CfwJAAkACQAJAAkACQAJAAkAgAwRAIAQNAUEBIQhBACEEA0AgAiAHai0AACIMQd8BcUE3a0H/AXEiC0H2/wNqIAtB8P8DanNBCHYiDSAMQTBzIgxB9v8DakEIdiIOckH/AXFFDQQgASAKTQ0DIAsgDXEgDCAOcXIhCwJAIAlB/wFxRQRAIAtBBHQhBAwBCyAAIApqIAQgC3I6AAAgCkEBaiEKCyAJQX9zIQkgB0EBaiIHIANHDQALIAMhBwwDC0EAIAZFDQgaDAYLA0ACQAJAAkACfwJAIAIgB2otAAAiC0HfAXFBN2tB/wFxIghB9v8DaiAIQfD/A2pzQQh2IgwgC0EwcyINQfb/A2pBCHYiDnJB/wFxRQRAIAlB/wFxDQlBACEIIAQgCxBDRQ0LIAdBAWoiCSEHIAMgCUsNAQwLCyABIApNDQYgCCAMcSANIA5xciIIIAlB/wFxRQ0BGiAAIApqIAggD3I6AAAgCkEBaiEKDAQLA0AgAiAHai0AACILQd8BcUE3a0H/AXEiDEH2/wNqIAxB8P8DanNBCHYiDSALQTBzIg5B9v8DakEIdiIPckH/AXFFBEAgBCALEENFDQsgAyAHQQFqIgdLDQEMAwsLIAEgCk0NAiAMIA1xIA4gD3FyC0EEdCEPQQAhCQwCCyADIAkgAyAJSxshBwwHC0EAIQkMAgsgCUF/cyEJQQEhCCAHQQFqIgcgA0kNAAsMAQtB8KUCQcQANgIAQQAhCAsgCUH/AXFFDQELQfClAkEcNgIAQX8hCCAHQQFrIQdBACEKDAELIApBACAIGyEKIAhBAWshCAsgBg0AIAMgB0cNASAIDAILIAYgAiAHajYCACAIDAELQfClAkEcNgIAQX8LIAUEQCAFIAo2AgALC50BAQN/AkAgA0H+////B0sNACADQQF0IAFPDQBBACEBIAMEfwNAIAAgAUEBdGoiBCABIAJqLQAAIgVBD3EiBkEIdCAGQfb/A2pBgLIDcWpBgK4BakEIdjoAASAEIAVBBHYiBCAEQfb/A2pBCHZB2QFxakHXAGo6AAAgAUEBaiIBIANHDQALIANBAXQFQQALIABqQQA6AAAgAA8LEA4ACwUAQeA/C6gCAgV/AX4jAEGAAmsiBSQAIAVBAToADwJ/IAFB4D9NBEAgAUEgTwRAIABBIGshCSADrSEKQSAhBgNAIAYhByAFQTBqIgYgBEEgEDAaIAgEQCAGIAggCWpCIBAjGgsgBUEwaiIGIAIgChAjGiAGIAVBD2pCARAjGiAGIAAgCGoQRhogBSAFLQAPQQFqOgAPIAchCCAHQSBqIgYgAU0NAAsLIAFBH3EiCARAIAVBMGoiASAEQSAQMBogBwRAIAEgACAHakEga0IgECMaCyAFQTBqIgEgAiADrRAjGiABIAVBD2pCARAjGiABIAVBEGoiARBGGiAAIAdqIAEgCBALGiABQSAQCQsgBUEwakHQARAJQQAMAQtB8KUCQRw2AgBBfwsgBUGAAmokAAs4AQF/IwBB0AFrIgUkACAFIAEgAhAwGiAFIAMgBK0QIxogBSAAEEYaIAVBBBAJIAVB0AFqJABBAAsRACAAIAEQRhogAEEEEAlBAAsLACAAIAEgAq0QIwsKACAAIAEgAhAwCwQAQW4LBABBEQsEAEE0C5UBAgF/AX4jAEEwayIBJAAgASAAKQAYNwMYIAEgACkAEDcDECABIAApAAA3AwAgASAAKQAINwMIIAEgACkAJDcDICABIAFCKCAAQSBqIAAQZhogACABKQMYNwAYIAAgASkDEDcAECAAIAEpAwg3AAggACABKQMANwAAIAEpAyAhAiAAQQE2ACAgACACNwAkIAFBMGokAAstAQF+IAAgASACQQAQGxogAEEBNgAgIAEpABAhAyAAQgA3ACwgACADNwAkQQALMwEBfiABQRgQGSAAIAEgAkEAEBsaIABBATYAICABKQAQIQMgAEIANwAsIAAgAzcAJEEACwkAIAAgARDhAQsLACAAIAEgAhDgAQsLACAAIAEgAhDiAQsJACAAIAEQ4wELCQAgACABEOQBCwkAIAAgARDlAQsHACAAEOYBCyIBAX8jAEFAaiIBJAAgAUHAABAZIAAgARCKASABQUBrJAALCwAgACABEIoBQQALZQEDfyMAQaAGayIDJABBfyEEAkAgA0GABWoiBSABED0NACADQeADaiIBIAIQPQ0AIAMgARAQIANBoAFqIgEgBSADEFUgA0HAAmoiAiABEFYgACACEEtBACEECyADQaAGaiQAIAQLZQEDfyMAQaAGayIDJABBfyEEAkAgA0GABWoiBSABED0NACADQeADaiIBIAIQPQ0AIAMgARAQIANBoAFqIgEgBSADEBMgA0HAAmoiAiABEFYgACACEEtBACEECyADQaAGaiQAIAQLHQEBfyMAQaABayIBJAAgASAAED0gAUGgAWokAEULpQEBBn8jAEEQayIFQQA2AgxBfyEEIAIgA0EBa0sEfyABIAJBAWsiB2ohCEEAIQJBACEBQQAhBANAIAUgBSgCDCIGQQAgCCACay0AACIJQYABc0EBayAGQQFrIARBAWtxcUEIdkEBcSIGayACcXI2AgwgASAGciEBIAQgCXIhBCACQQFqIgIgA0cNAAsgACAHIAUoAgxrNgIAIAFB/wFxQQFrBUF/CwshAQF/IwBBIGsiASQAIAFBIBAZIAAgARCMASABQSBqJAALCwAgACABEIwBQQALcwEDfyMAQaAGayIDJABBfyEEAkAgA0GABWoiBSABEDQNACAFEE1FDQAgA0HgA2oiASACEDQNACABEE1FDQAgAyABEBAgA0GgAWoiASAFIAMQVSADQcACaiICIAEQViAAIAIQL0EAIQQLIANBoAZqJAAgBAtzAQN/IwBBoAZrIgMkAEF/IQQCQCADQYAFaiIFIAEQNA0AIAUQTUUNACADQeADaiIBIAIQNA0AIAEQTUUNACADIAEQECADQaABaiIBIAUgAxATIANBwAJqIgIgARBWIAAgAhAvQQAhBAsgA0GgBmokACAEC0ABAn8jAEGgAWsiASQAAkAgABBrRQ0AIAAQTA0AIAEgABA0DQAgARBNRQ0AIAEQbEEARyECCyABQaABaiQAIAILBgBBwP8AC7UCAgV/AX4jAEHwA2siBSQAIAVBAToADwJ/IAFBwP8ATQRAIAFBwABPBEAgAEFAaiEJIAOtIQpBwAAhBgNAIAYhByAFQdAAaiIGIARBwAAQLhogCARAIAYgCCAJakLAABAmGgsgBUHQAGoiBiACIAoQJhogBiAFQQ9qQgEQJhogBiAAIAhqEDEaIAUgBS0AD0EBajoADyAHIQggB0FAayIGIAFNDQALCyABQT9xIggEQCAFQdAAaiIBIARBwAAQ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ZABcjnj+aHy+ALWxPv/6KVUAmIIqAWD89gCXlz/+74U+ACA4nAAtp73/joWzAYNW0wC7s5b++qoO/9KjTgAlNJcAY00aAO6c1f/VwNEBSS5UABRBKQE2zk8AyYOS/qpvGP+xITL+qybL/073dADR3ZkAhYCyATosGQDJJzsBvRP8ADHl0gF1u3UAtbO4AQBy2wAwXpMA9Sk4AH0NzP70rXcALN0g/lTqFAD5oMYB7H7q/y9jqP6q4pn/ZrPYAOKNev96Qpn+tvWGAOPkGQHWOev/2K04/7Xn0gB3gJ3/gV+I/25+MwACqbf/B4Ji/kWwXv90BOMB2fKR/8qtHwFpASf/Lq9FAOQvOv/X4EX+zzhF/xD+i/8Xz9T/yhR+/1/VYP8JsCEAyAXP//EqgP4jIcD/+OXEAYEReAD7Z5f/BzRw/4w4Qv8o4vX/2UYl/qzWCf9IQ4YBksDW/ywmcABEuEv/zlr7AJXrjQC1qjoAdPTvAFydAgBmrWIA6YlgAX8xywAFm5QAF5QJ/9N6DAAihhr/28yIAIYIKf/gUyv+VRn3AG1/AP6piDAA7nfb/+et1QDOEv7+CLoH/34JBwFvKkgAbzTs/mA/jQCTv3/+zU7A/w5q7QG720wAr/O7/mlZrQBVGVkBovOUAAJ20f4hngkAi6Mu/11GKABsKo7+b/yO/5vfkAAz5af/Sfyb/150DP+YoNr/nO4l/7Pqz//FALP/mqSNAOHEaAAKIxn+0dTy/2H93v64ZeUA3hJ/AaSIh/8ez4z+kmHzAIHAGv7JVCH/bwpO/5NRsv8EBBgAoe7X/waNIQA11w7/KbXQ/+eLnQCzy93//7lxAL3irP9xQtb/yj4t/2ZACP9OrhD+hXVE/wBBoBULAQEAQcAVC7ABJuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQAQf8WC6zxARD9QF0AoGo/ADnTV/4M0roAWLx0/kHYAQD/yD0B2EKU/wD7XAAksuH/AAAA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AZGInAD8dan+keLuAO8XawBttbz/5nAx/kmq7f/nt+P/UNwUAMJrfwF/zWUALjTFAdKrJP9YA1r/OJeNAGC7//8qTsgA/kZGAfR9qADMRIoBfNdGAGZCyP4RNOQAddyP/sv4ewA4Eq7/upek/zPo0AGg5Cv/+R0ZAUS+PwANAAAAAP8AAAAA9QAAAAAAAPsAAAAAAAD9AAAAAPMAAAAABwAAAAAAAwAAAADzAAAAAAUAAAAAAAAAAAsAAAAAAAsAAAAA8wAAAAAAAP0AAAAAAP8AAAAAAwAAAAD1AAAAAAAAAA8AAAAAAP8AAAAA/wAAAAAHAAAAAAUAQayJAgsrAQAAAHbBXwBlcAL/UPyh/vJqxv+FBrIA5N9wAN/uVf4z8xoAPiuL/stBCgBB4IkCC1czTe0AkapW/zYmM//xgGX/KXlK/+xOmwCpl2n+nClIAMJmr//OomX/AAAAAAAAAAAbLnsBEqj9/9Ovl/7D22AAOHa+/v7R9f+ZZH7+6IEV/zW48v/HpN0AQeCKAgsBAQBBgIsCC/EG4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f0xpYnNvZGl1bURSRwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4KZykpFPwv0kaFCrcnJskmXDghGy7tKsRa/G0sTd+zlZ0TDThT3mOvi1RzCmWosnc8uwpqduau7UcuycKBOzWCFIUscpJkA/FMoei/ogEwQrxLZhqokZf40HCLS8IwvlQGo1FsxxhS79YZ6JLREKllVSQGmdYqIHFXhTUO9LjRuzJwoGoQyNDSuBbBpBlTq0FRCGw3Hpnrjt9Md0gnqEib4bW8sDRjWsnFswwcOcuKQeNKqthOc+Njd0/KnFujuLLW828uaPyy713ugo90YC8XQ29jpXhyq/ChFHjIhOw5ZBoIAseMKB5jI/r/vpDpvYLe62xQpBV5xrL3o/m+K1Ny4/J4ccacYSbqzj4nygfCwCHHuIbRHuvgzdZ92up40W7uf0999bpvF3KqZ/AGppjIosV9YwquDfm+BJg/ERtHHBM1C3EbhH0EI/V32yiTJMdAe6vKMry+yRUKvp48TA0QnMRnHUO2Qj7LvtTFTCp+ZfycKX9Z7PrWOqtvy18XWEdKjBlEbIAAQfCSAgsQ7dP1XBpjEljWnPei3vneFABBj5MCCwEQAEGgkwILoQJn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gW5gvikKRRDdxz/vAtaXbtelbwlY58RHxWaSCP5LVXhyrmKoH2AFbgxK+hTEkw30MVXRdvnL+sd6Apwbcm3Txm8HBaZvkhke+78adwQ/MoQwkbyzpLaqEdErcqbBc2oj5dlJRPphtxjGoyCcDsMd/Wb/zC+DGR5Gn1VFjygZnKSkUhQq3JzghGy78bSxNEw04U1RzCmW7Cmp2LsnCgYUscpKh6L+iS2YaqHCLS8KjUWzHGeiS0SQGmdaFNQ70cKBqEBbBpBkIbDceTHdIJ7W8sDSzDBw5SqrYTk/KnFvzby5o7oKPdG9jpXgUeMiECALHjPr/vpDrbFCk96P5vvJ4ccaAAEGQlgILIVNpZ0VkMjU1MTkgbm8gRWQyNTUxOSBjb2xsaXNpb25zAQBB8JYCCyUQlQEAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAEGglwILnQjGY2Ol+Hx8hO53d5n2e3uN//LyDdZra73eb2+xkcXFVGAwMFACAQEDzmdnqVYrK33n/v4ZtdfXYk2rq+bsdnaaj8rKRR+Cgp2JyclA+n19h+/6+hWyWVnrjkdHyfvw8AtBra3ss9TUZ1+iov1Fr6/qI5ycv1OkpPfkcnKWm8DAW3W3t8Lh/f0cPZOTrkwmJmpsNjZafj8/QfX39wKDzMxPaDQ0XFGlpfTR5eU0+fHxCOJxcZOr2NhzYjExUyoVFT8IBAQMlcfHUkYjI2Wdw8NeMBgYKDeWlqEKBQUPL5qatQ4HBwkkEhI2G4CAm9/i4j3N6+smTicnaX+yss3qdXWfEgkJGx2Dg55YLCx0NBoaLjYbGy3cbm6ytFpa7lugoPukUlL2djs7TbfW1mF9s7POUikpe93j4z5eLy9xE4SEl6ZTU/W50dFoAAAAAMHt7SxAICBg4/z8H3mxsci2W1vt1Gpqvo3Ly0Znvr7Zcjk5S5RKSt6YTEzUsFhY6IXPz0q70NBrxe/vKk+qquXt+/sWhkNDxZpNTddmMzNVEYWFlIpFRc/p+fkQBAICBv5/f4GgUFDweDw8RCWfn7pLqKjjolFR812jo/6AQEDABY+Pij+Skq0hnZ28cDg4SPH19QRjvLzfd7a2wa/a2nVCISFjIBAQMOX//xr98/MOv9LSbYHNzUwYDAwUJhMTNcPs7C++X1/hNZeXoohERMwuFxc5k8TEV1Wnp/L8fn6Cej09R8hkZKy6XV3nMhkZK+Zzc5XAYGCgGYGBmJ5PT9Gj3Nx/RCIiZlQqKn47kJCrC4iIg4xGRsrH7u4pa7i40ygUFDyn3t55vF5e4hYLCx2t29t22+DgO2QyMlZ0OjpOFAoKHpJJSdsMBgYKSCQkbLhcXOSfwsJdvdPTbkOsrO/EYmKmOZGRqDGVlaTT5OQ38nl5i9Xn5zKLyMhDbjc3WdptbbcBjY2MsdXVZJxOTtJJqang2GxstKxWVvrz9PQHz+rqJcplZa/0enqOR66u6RAICBhvurrV8Hh4iEolJW9cLi5yOBwcJFempvFztLTHl8bGUcvo6COh3d186HR0nD4fHyGWS0vdYb293A2Li4YPioqF4HBwkHw+PkJxtbXEzGZmqpBISNgGAwMF9/b2ARwODhLCYWGjajU1X65XV/lpubnQF4aGkZnBwVg6HR0nJ56eudnh4Tjr+PgTK5iYsyIRETPSaWm7qdnZcAeOjokzlJSnLZubtjweHiIVh4eSyenpIIfOzkmqVVX/UCgoeKXf33oDjIyPWaGh+AmJiYAaDQ0XZb+/2tfm5jGEQkLG0GhouIJBQcMpmZmwWi0tdx4PDxF7sLDLqFRU/G27u9YsFhY6CgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABE=\"),A=I,J(b).then((I=>WebAssembly.instantiate(I,A))).then((function(A){g(A.instance)}),(A=>{e(`failed to asynchronously prepare wasm: ${A}`),U(A)})),{}}();function q(){function A(){l||(l=!0,B.calledRun=!0,n||(m(S),B.onRuntimeInitialized?.(),function(){if(B.postRun)for(\"function\"==typeof B.postRun&&(B.postRun=[B.postRun]);B.postRun.length;)A=B.postRun.shift(),N.unshift(A);var A;m(N)}()))}G>0||(function(){if(B.preRun)for(\"function\"==typeof B.preRun&&(B.preRun=[B.preRun]);B.preRun.length;)A=B.preRun.shift(),F.unshift(A);var A;m(F)}(),G>0||(B.setStatus?(B.setStatus(\"Running...\"),setTimeout((function(){setTimeout((function(){B.setStatus(\"\")}),1),A()}),1)):A()))}if(B._crypto_aead_aegis128l_keybytes=()=>(B._crypto_aead_aegis128l_keybytes=P.g)(),B._crypto_aead_aegis128l_nsecbytes=()=>(B._crypto_aead_aegis128l_nsecbytes=P.h)(),B._crypto_aead_aegis128l_npubbytes=()=>(B._crypto_aead_aegis128l_npubbytes=P.i)(),B._crypto_aead_aegis128l_abytes=()=>(B._crypto_aead_aegis128l_abytes=P.j)(),B._crypto_aead_aegis128l_messagebytes_max=()=>(B._crypto_aead_aegis128l_messagebytes_max=P.k)(),B._crypto_aead_aegis128l_keygen=A=>(B._crypto_aead_aegis128l_keygen=P.l)(A),B._crypto_aead_aegis128l_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_encrypt=P.m)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis128l_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_aegis128l_encrypt_detached=P.n)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_aegis128l_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_decrypt=P.o)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis128l_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_decrypt_detached=P.p)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_keybytes=()=>(B._crypto_aead_aegis256_keybytes=P.q)(),B._crypto_aead_aegis256_nsecbytes=()=>(B._crypto_aead_aegis256_nsecbytes=P.r)(),B._crypto_aead_aegis256_npubbytes=()=>(B._crypto_aead_aegis256_npubbytes=P.s)(),B._crypto_aead_aegis256_abytes=()=>(B._crypto_aead_aegis256_abytes=P.t)(),B._crypto_aead_aegis256_messagebytes_max=()=>(B._crypto_aead_aegis256_messagebytes_max=P.u)(),B._crypto_aead_aegis256_keygen=A=>(B._crypto_aead_aegis256_keygen=P.v)(A),B._crypto_aead_aegis256_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_encrypt=P.w)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_aegis256_encrypt_detached=P.x)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_aegis256_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_decrypt=P.y)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_decrypt_detached=P.z)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aes256gcm_is_available=()=>(B._crypto_aead_aes256gcm_is_available=P.A)(),B._crypto_aead_chacha20poly1305_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_chacha20poly1305_encrypt_detached=P.B)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_chacha20poly1305_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_encrypt=P.C)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_chacha20poly1305_ietf_encrypt_detached=P.D)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_chacha20poly1305_ietf_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_encrypt=P.E)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_decrypt_detached=P.F)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_decrypt=P.G)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_decrypt_detached=P.H)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_decrypt=P.I)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(B._crypto_aead_chacha20poly1305_ietf_keybytes=P.J)(),B._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(B._crypto_aead_chacha20poly1305_ietf_npubbytes=P.K)(),B._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(B._crypto_aead_chacha20poly1305_ietf_nsecbytes=P.L)(),B._crypto_aead_chacha20poly1305_ietf_abytes=()=>(B._crypto_aead_chacha20poly1305_ietf_abytes=P.M)(),B._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(B._crypto_aead_chacha20poly1305_ietf_messagebytes_max=P.N)(),B._crypto_aead_chacha20poly1305_ietf_keygen=A=>(B._crypto_aead_chacha20poly1305_ietf_keygen=P.O)(A),B._crypto_aead_chacha20poly1305_keybytes=()=>(B._crypto_aead_chacha20poly1305_keybytes=P.P)(),B._crypto_aead_chacha20poly1305_npubbytes=()=>(B._crypto_aead_chacha20poly1305_npubbytes=P.Q)(),B._crypto_aead_chacha20poly1305_nsecbytes=()=>(B._crypto_aead_chacha20poly1305_nsecbytes=P.R)(),B._crypto_aead_chacha20poly1305_abytes=()=>(B._crypto_aead_chacha20poly1305_abytes=P.S)(),B._crypto_aead_chacha20poly1305_messagebytes_max=()=>(B._crypto_aead_chacha20poly1305_messagebytes_max=P.T)(),B._crypto_aead_chacha20poly1305_keygen=A=>(B._crypto_aead_chacha20poly1305_keygen=P.U)(A),B._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=P.V)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_xchacha20poly1305_ietf_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_encrypt=P.W)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=P.X)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_decrypt=P.Y)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_keybytes=P.Z)(),B._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_npubbytes=P._)(),B._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_nsecbytes=P.$)(),B._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_abytes=P.aa)(),B._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(B._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=P.ba)(),B._crypto_aead_xchacha20poly1305_ietf_keygen=A=>(B._crypto_aead_xchacha20poly1305_ietf_keygen=P.ca)(A),B._crypto_auth_bytes=()=>(B._crypto_auth_bytes=P.da)(),B._crypto_auth_keybytes=()=>(B._crypto_auth_keybytes=P.ea)(),B._crypto_auth_primitive=()=>(B._crypto_auth_primitive=P.fa)(),B._crypto_auth=(A,I,g,C,Q)=>(B._crypto_auth=P.ga)(A,I,g,C,Q),B._crypto_auth_verify=(A,I,g,C,Q)=>(B._crypto_auth_verify=P.ha)(A,I,g,C,Q),B._crypto_auth_keygen=A=>(B._crypto_auth_keygen=P.ia)(A),B._crypto_auth_hmacsha256_bytes=()=>(B._crypto_auth_hmacsha256_bytes=P.ja)(),B._crypto_auth_hmacsha256_keybytes=()=>(B._crypto_auth_hmacsha256_keybytes=P.ka)(),B._crypto_auth_hmacsha256_statebytes=()=>(B._crypto_auth_hmacsha256_statebytes=P.la)(),B._crypto_auth_hmacsha256_keygen=A=>(B._crypto_auth_hmacsha256_keygen=P.ma)(A),B._crypto_auth_hmacsha256_init=(A,I,g)=>(B._crypto_auth_hmacsha256_init=P.na)(A,I,g),B._crypto_auth_hmacsha256_update=(A,I,g,C)=>(B._crypto_auth_hmacsha256_update=P.oa)(A,I,g,C),B._crypto_auth_hmacsha256_final=(A,I)=>(B._crypto_auth_hmacsha256_final=P.pa)(A,I),B._crypto_auth_hmacsha256=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha256=P.qa)(A,I,g,C,Q),B._crypto_auth_hmacsha256_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha256_verify=P.ra)(A,I,g,C,Q),B._crypto_auth_hmacsha512_bytes=()=>(B._crypto_auth_hmacsha512_bytes=P.sa)(),B._crypto_auth_hmacsha512_keybytes=()=>(B._crypto_auth_hmacsha512_keybytes=P.ta)(),B._crypto_auth_hmacsha512_statebytes=()=>(B._crypto_auth_hmacsha512_statebytes=P.ua)(),B._crypto_auth_hmacsha512_keygen=A=>(B._crypto_auth_hmacsha512_keygen=P.va)(A),B._crypto_auth_hmacsha512_init=(A,I,g)=>(B._crypto_auth_hmacsha512_init=P.wa)(A,I,g),B._crypto_auth_hmacsha512_update=(A,I,g,C)=>(B._crypto_auth_hmacsha512_update=P.xa)(A,I,g,C),B._crypto_auth_hmacsha512_final=(A,I)=>(B._crypto_auth_hmacsha512_final=P.ya)(A,I),B._crypto_auth_hmacsha512=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512=P.za)(A,I,g,C,Q),B._crypto_auth_hmacsha512_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512_verify=P.Aa)(A,I,g,C,Q),B._crypto_auth_hmacsha512256_bytes=()=>(B._crypto_auth_hmacsha512256_bytes=P.Ba)(),B._crypto_auth_hmacsha512256_keybytes=()=>(B._crypto_auth_hmacsha512256_keybytes=P.Ca)(),B._crypto_auth_hmacsha512256_statebytes=()=>(B._crypto_auth_hmacsha512256_statebytes=P.Da)(),B._crypto_auth_hmacsha512256_keygen=A=>(B._crypto_auth_hmacsha512256_keygen=P.Ea)(A),B._crypto_auth_hmacsha512256_init=(A,I,g)=>(B._crypto_auth_hmacsha512256_init=P.Fa)(A,I,g),B._crypto_auth_hmacsha512256_update=(A,I,g,C)=>(B._crypto_auth_hmacsha512256_update=P.Ga)(A,I,g,C),B._crypto_auth_hmacsha512256_final=(A,I)=>(B._crypto_auth_hmacsha512256_final=P.Ha)(A,I),B._crypto_auth_hmacsha512256=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512256=P.Ia)(A,I,g,C,Q),B._crypto_auth_hmacsha512256_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512256_verify=P.Ja)(A,I,g,C,Q),B._crypto_box_seedbytes=()=>(B._crypto_box_seedbytes=P.Ka)(),B._crypto_box_publickeybytes=()=>(B._crypto_box_publickeybytes=P.La)(),B._crypto_box_secretkeybytes=()=>(B._crypto_box_secretkeybytes=P.Ma)(),B._crypto_box_beforenmbytes=()=>(B._crypto_box_beforenmbytes=P.Na)(),B._crypto_box_noncebytes=()=>(B._crypto_box_noncebytes=P.Oa)(),B._crypto_box_zerobytes=()=>(B._crypto_box_zerobytes=P.Pa)(),B._crypto_box_boxzerobytes=()=>(B._crypto_box_boxzerobytes=P.Qa)(),B._crypto_box_macbytes=()=>(B._crypto_box_macbytes=P.Ra)(),B._crypto_box_messagebytes_max=()=>(B._crypto_box_messagebytes_max=P.Sa)(),B._crypto_box_primitive=()=>(B._crypto_box_primitive=P.Ta)(),B._crypto_box_seed_keypair=(A,I,g)=>(B._crypto_box_seed_keypair=P.Ua)(A,I,g),B._crypto_box_keypair=(A,I)=>(B._crypto_box_keypair=P.Va)(A,I),B._crypto_box_beforenm=(A,I,g)=>(B._crypto_box_beforenm=P.Wa)(A,I,g),B._crypto_box_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_afternm=P.Xa)(A,I,g,C,Q,i),B._crypto_box_open_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_open_afternm=P.Ya)(A,I,g,C,Q,i),B._crypto_box=(A,I,g,C,Q,i,o)=>(B._crypto_box=P.Za)(A,I,g,C,Q,i,o),B._crypto_box_open=(A,I,g,C,Q,i,o)=>(B._crypto_box_open=P._a)(A,I,g,C,Q,i,o),B._crypto_box_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_detached_afternm=P.$a)(A,I,g,C,Q,i,o),B._crypto_box_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_detached=P.ab)(A,I,g,C,Q,i,o,E),B._crypto_box_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_easy_afternm=P.bb)(A,I,g,C,Q,i),B._crypto_box_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_easy=P.cb)(A,I,g,C,Q,i,o),B._crypto_box_open_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_open_detached_afternm=P.db)(A,I,g,C,Q,i,o),B._crypto_box_open_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_open_detached=P.eb)(A,I,g,C,Q,i,o,E),B._crypto_box_open_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_open_easy_afternm=P.fb)(A,I,g,C,Q,i),B._crypto_box_open_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_open_easy=P.gb)(A,I,g,C,Q,i,o),B._crypto_box_seal=(A,I,g,C,Q)=>(B._crypto_box_seal=P.hb)(A,I,g,C,Q),B._crypto_box_seal_open=(A,I,g,C,Q,i)=>(B._crypto_box_seal_open=P.ib)(A,I,g,C,Q,i),B._crypto_box_sealbytes=()=>(B._crypto_box_sealbytes=P.jb)(),B._crypto_box_curve25519xsalsa20poly1305_seed_keypair=(A,I,g)=>(B._crypto_box_curve25519xsalsa20poly1305_seed_keypair=P.kb)(A,I,g),B._crypto_box_curve25519xsalsa20poly1305_keypair=(A,I)=>(B._crypto_box_curve25519xsalsa20poly1305_keypair=P.lb)(A,I),B._crypto_box_curve25519xsalsa20poly1305_beforenm=(A,I,g)=>(B._crypto_box_curve25519xsalsa20poly1305_beforenm=P.mb)(A,I,g),B._crypto_box_curve25519xsalsa20poly1305_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xsalsa20poly1305_afternm=P.nb)(A,I,g,C,Q,i),B._crypto_box_curve25519xsalsa20poly1305_open_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xsalsa20poly1305_open_afternm=P.ob)(A,I,g,C,Q,i),B._crypto_box_curve25519xsalsa20poly1305=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xsalsa20poly1305=P.pb)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xsalsa20poly1305_open=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xsalsa20poly1305_open=P.qb)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xsalsa20poly1305_seedbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_seedbytes=P.rb)(),B._crypto_box_curve25519xsalsa20poly1305_publickeybytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_publickeybytes=P.sb)(),B._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=P.tb)(),B._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=P.ub)(),B._crypto_box_curve25519xsalsa20poly1305_noncebytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_noncebytes=P.vb)(),B._crypto_box_curve25519xsalsa20poly1305_zerobytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_zerobytes=P.wb)(),B._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=P.xb)(),B._crypto_box_curve25519xsalsa20poly1305_macbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_macbytes=P.yb)(),B._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=()=>(B._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=P.zb)(),B._crypto_core_hchacha20=(A,I,g,C)=>(B._crypto_core_hchacha20=P.Ab)(A,I,g,C),B._crypto_core_hchacha20_outputbytes=()=>(B._crypto_core_hchacha20_outputbytes=P.Bb)(),B._crypto_core_hchacha20_inputbytes=()=>(B._crypto_core_hchacha20_inputbytes=P.Cb)(),B._crypto_core_hchacha20_keybytes=()=>(B._crypto_core_hchacha20_keybytes=P.Db)(),B._crypto_core_hchacha20_constbytes=()=>(B._crypto_core_hchacha20_constbytes=P.Eb)(),B._crypto_core_hsalsa20=(A,I,g,C)=>(B._crypto_core_hsalsa20=P.Fb)(A,I,g,C),B._crypto_core_hsalsa20_outputbytes=()=>(B._crypto_core_hsalsa20_outputbytes=P.Gb)(),B._crypto_core_hsalsa20_inputbytes=()=>(B._crypto_core_hsalsa20_inputbytes=P.Hb)(),B._crypto_core_hsalsa20_keybytes=()=>(B._crypto_core_hsalsa20_keybytes=P.Ib)(),B._crypto_core_hsalsa20_constbytes=()=>(B._crypto_core_hsalsa20_constbytes=P.Jb)(),B._crypto_core_salsa20=(A,I,g,C)=>(B._crypto_core_salsa20=P.Kb)(A,I,g,C),B._crypto_core_salsa20_outputbytes=()=>(B._crypto_core_salsa20_outputbytes=P.Lb)(),B._crypto_core_salsa20_inputbytes=()=>(B._crypto_core_salsa20_inputbytes=P.Mb)(),B._crypto_core_salsa20_keybytes=()=>(B._crypto_core_salsa20_keybytes=P.Nb)(),B._crypto_core_salsa20_constbytes=()=>(B._crypto_core_salsa20_constbytes=P.Ob)(),B._crypto_core_salsa2012=(A,I,g,C)=>(B._crypto_core_salsa2012=P.Pb)(A,I,g,C),B._crypto_core_salsa2012_outputbytes=()=>(B._crypto_core_salsa2012_outputbytes=P.Qb)(),B._crypto_core_salsa2012_inputbytes=()=>(B._crypto_core_salsa2012_inputbytes=P.Rb)(),B._crypto_core_salsa2012_keybytes=()=>(B._crypto_core_salsa2012_keybytes=P.Sb)(),B._crypto_core_salsa2012_constbytes=()=>(B._crypto_core_salsa2012_constbytes=P.Tb)(),B._crypto_core_salsa208=(A,I,g,C)=>(B._crypto_core_salsa208=P.Ub)(A,I,g,C),B._crypto_core_salsa208_outputbytes=()=>(B._crypto_core_salsa208_outputbytes=P.Vb)(),B._crypto_core_salsa208_inputbytes=()=>(B._crypto_core_salsa208_inputbytes=P.Wb)(),B._crypto_core_salsa208_keybytes=()=>(B._crypto_core_salsa208_keybytes=P.Xb)(),B._crypto_core_salsa208_constbytes=()=>(B._crypto_core_salsa208_constbytes=P.Yb)(),B._crypto_generichash_bytes_min=()=>(B._crypto_generichash_bytes_min=P.Zb)(),B._crypto_generichash_bytes_max=()=>(B._crypto_generichash_bytes_max=P._b)(),B._crypto_generichash_bytes=()=>(B._crypto_generichash_bytes=P.$b)(),B._crypto_generichash_keybytes_min=()=>(B._crypto_generichash_keybytes_min=P.ac)(),B._crypto_generichash_keybytes_max=()=>(B._crypto_generichash_keybytes_max=P.bc)(),B._crypto_generichash_keybytes=()=>(B._crypto_generichash_keybytes=P.cc)(),B._crypto_generichash_primitive=()=>(B._crypto_generichash_primitive=P.dc)(),B._crypto_generichash_statebytes=()=>(B._crypto_generichash_statebytes=P.ec)(),B._crypto_generichash=(A,I,g,C,Q,i,o)=>(B._crypto_generichash=P.fc)(A,I,g,C,Q,i,o),B._crypto_generichash_init=(A,I,g,C)=>(B._crypto_generichash_init=P.gc)(A,I,g,C),B._crypto_generichash_update=(A,I,g,C)=>(B._crypto_generichash_update=P.hc)(A,I,g,C),B._crypto_generichash_final=(A,I,g)=>(B._crypto_generichash_final=P.ic)(A,I,g),B._crypto_generichash_keygen=A=>(B._crypto_generichash_keygen=P.jc)(A),B._crypto_generichash_blake2b_bytes_min=()=>(B._crypto_generichash_blake2b_bytes_min=P.kc)(),B._crypto_generichash_blake2b_bytes_max=()=>(B._crypto_generichash_blake2b_bytes_max=P.lc)(),B._crypto_generichash_blake2b_bytes=()=>(B._crypto_generichash_blake2b_bytes=P.mc)(),B._crypto_generichash_blake2b_keybytes_min=()=>(B._crypto_generichash_blake2b_keybytes_min=P.nc)(),B._crypto_generichash_blake2b_keybytes_max=()=>(B._crypto_generichash_blake2b_keybytes_max=P.oc)(),B._crypto_generichash_blake2b_keybytes=()=>(B._crypto_generichash_blake2b_keybytes=P.pc)(),B._crypto_generichash_blake2b_saltbytes=()=>(B._crypto_generichash_blake2b_saltbytes=P.qc)(),B._crypto_generichash_blake2b_personalbytes=()=>(B._crypto_generichash_blake2b_personalbytes=P.rc)(),B._crypto_generichash_blake2b_statebytes=()=>(B._crypto_generichash_blake2b_statebytes=P.sc)(),B._crypto_generichash_blake2b_keygen=A=>(B._crypto_generichash_blake2b_keygen=P.tc)(A),B._crypto_generichash_blake2b=(A,I,g,C,Q,i,o)=>(B._crypto_generichash_blake2b=P.uc)(A,I,g,C,Q,i,o),B._crypto_generichash_blake2b_salt_personal=(A,I,g,C,Q,i,o,E,a)=>(B._crypto_generichash_blake2b_salt_personal=P.vc)(A,I,g,C,Q,i,o,E,a),B._crypto_generichash_blake2b_init=(A,I,g,C)=>(B._crypto_generichash_blake2b_init=P.wc)(A,I,g,C),B._crypto_generichash_blake2b_init_salt_personal=(A,I,g,C,Q,i)=>(B._crypto_generichash_blake2b_init_salt_personal=P.xc)(A,I,g,C,Q,i),B._crypto_generichash_blake2b_update=(A,I,g,C)=>(B._crypto_generichash_blake2b_update=P.yc)(A,I,g,C),B._crypto_generichash_blake2b_final=(A,I,g)=>(B._crypto_generichash_blake2b_final=P.zc)(A,I,g),B._crypto_hash_bytes=()=>(B._crypto_hash_bytes=P.Ac)(),B._crypto_hash=(A,I,g,C)=>(B._crypto_hash=P.Bc)(A,I,g,C),B._crypto_hash_primitive=()=>(B._crypto_hash_primitive=P.Cc)(),B._crypto_hash_sha256_bytes=()=>(B._crypto_hash_sha256_bytes=P.Dc)(),B._crypto_hash_sha256_statebytes=()=>(B._crypto_hash_sha256_statebytes=P.Ec)(),B._crypto_hash_sha256_init=A=>(B._crypto_hash_sha256_init=P.Fc)(A),B._crypto_hash_sha256_update=(A,I,g,C)=>(B._crypto_hash_sha256_update=P.Gc)(A,I,g,C),B._crypto_hash_sha256_final=(A,I)=>(B._crypto_hash_sha256_final=P.Hc)(A,I),B._crypto_hash_sha256=(A,I,g,C)=>(B._crypto_hash_sha256=P.Ic)(A,I,g,C),B._crypto_hash_sha512_bytes=()=>(B._crypto_hash_sha512_bytes=P.Jc)(),B._crypto_hash_sha512_statebytes=()=>(B._crypto_hash_sha512_statebytes=P.Kc)(),B._crypto_hash_sha512_init=A=>(B._crypto_hash_sha512_init=P.Lc)(A),B._crypto_hash_sha512_update=(A,I,g,C)=>(B._crypto_hash_sha512_update=P.Mc)(A,I,g,C),B._crypto_hash_sha512_final=(A,I)=>(B._crypto_hash_sha512_final=P.Nc)(A,I),B._crypto_hash_sha512=(A,I,g,C)=>(B._crypto_hash_sha512=P.Oc)(A,I,g,C),B._crypto_kdf_blake2b_bytes_min=()=>(B._crypto_kdf_blake2b_bytes_min=P.Pc)(),B._crypto_kdf_blake2b_bytes_max=()=>(B._crypto_kdf_blake2b_bytes_max=P.Qc)(),B._crypto_kdf_blake2b_contextbytes=()=>(B._crypto_kdf_blake2b_contextbytes=P.Rc)(),B._crypto_kdf_blake2b_keybytes=()=>(B._crypto_kdf_blake2b_keybytes=P.Sc)(),B._crypto_kdf_blake2b_derive_from_key=(A,I,g,C,Q,i)=>(B._crypto_kdf_blake2b_derive_from_key=P.Tc)(A,I,g,C,Q,i),B._crypto_kdf_primitive=()=>(B._crypto_kdf_primitive=P.Uc)(),B._crypto_kdf_bytes_min=()=>(B._crypto_kdf_bytes_min=P.Vc)(),B._crypto_kdf_bytes_max=()=>(B._crypto_kdf_bytes_max=P.Wc)(),B._crypto_kdf_contextbytes=()=>(B._crypto_kdf_contextbytes=P.Xc)(),B._crypto_kdf_keybytes=()=>(B._crypto_kdf_keybytes=P.Yc)(),B._crypto_kdf_derive_from_key=(A,I,g,C,Q,i)=>(B._crypto_kdf_derive_from_key=P.Zc)(A,I,g,C,Q,i),B._crypto_kdf_keygen=A=>(B._crypto_kdf_keygen=P._c)(A),B._crypto_kdf_hkdf_sha256_extract_init=(A,I,g)=>(B._crypto_kdf_hkdf_sha256_extract_init=P.$c)(A,I,g),B._crypto_kdf_hkdf_sha256_extract_update=(A,I,g)=>(B._crypto_kdf_hkdf_sha256_extract_update=P.ad)(A,I,g),B._crypto_kdf_hkdf_sha256_extract_final=(A,I)=>(B._crypto_kdf_hkdf_sha256_extract_final=P.bd)(A,I),B._crypto_kdf_hkdf_sha256_extract=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha256_extract=P.cd)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha256_keygen=A=>(B._crypto_kdf_hkdf_sha256_keygen=P.dd)(A),B._crypto_kdf_hkdf_sha256_expand=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha256_expand=P.ed)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha256_keybytes=()=>(B._crypto_kdf_hkdf_sha256_keybytes=P.fd)(),B._crypto_kdf_hkdf_sha256_bytes_min=()=>(B._crypto_kdf_hkdf_sha256_bytes_min=P.gd)(),B._crypto_kdf_hkdf_sha256_bytes_max=()=>(B._crypto_kdf_hkdf_sha256_bytes_max=P.hd)(),B._crypto_kdf_hkdf_sha256_statebytes=()=>(B._crypto_kdf_hkdf_sha256_statebytes=P.id)(),B._crypto_kdf_hkdf_sha512_extract_init=(A,I,g)=>(B._crypto_kdf_hkdf_sha512_extract_init=P.jd)(A,I,g),B._crypto_kdf_hkdf_sha512_extract_update=(A,I,g)=>(B._crypto_kdf_hkdf_sha512_extract_update=P.kd)(A,I,g),B._crypto_kdf_hkdf_sha512_extract_final=(A,I)=>(B._crypto_kdf_hkdf_sha512_extract_final=P.ld)(A,I),B._crypto_kdf_hkdf_sha512_extract=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha512_extract=P.md)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha512_keygen=A=>(B._crypto_kdf_hkdf_sha512_keygen=P.nd)(A),B._crypto_kdf_hkdf_sha512_expand=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha512_expand=P.od)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha512_keybytes=()=>(B._crypto_kdf_hkdf_sha512_keybytes=P.pd)(),B._crypto_kdf_hkdf_sha512_bytes_min=()=>(B._crypto_kdf_hkdf_sha512_bytes_min=P.qd)(),B._crypto_kdf_hkdf_sha512_bytes_max=()=>(B._crypto_kdf_hkdf_sha512_bytes_max=P.rd)(),B._crypto_kdf_hkdf_sha512_statebytes=()=>(B._crypto_kdf_hkdf_sha512_statebytes=P.sd)(),B._crypto_kx_seed_keypair=(A,I,g)=>(B._crypto_kx_seed_keypair=P.td)(A,I,g),B._crypto_kx_keypair=(A,I)=>(B._crypto_kx_keypair=P.ud)(A,I),B._crypto_kx_client_session_keys=(A,I,g,C,Q)=>(B._crypto_kx_client_session_keys=P.vd)(A,I,g,C,Q),B._crypto_kx_server_session_keys=(A,I,g,C,Q)=>(B._crypto_kx_server_session_keys=P.wd)(A,I,g,C,Q),B._crypto_kx_publickeybytes=()=>(B._crypto_kx_publickeybytes=P.xd)(),B._crypto_kx_secretkeybytes=()=>(B._crypto_kx_secretkeybytes=P.yd)(),B._crypto_kx_seedbytes=()=>(B._crypto_kx_seedbytes=P.zd)(),B._crypto_kx_sessionkeybytes=()=>(B._crypto_kx_sessionkeybytes=P.Ad)(),B._crypto_kx_primitive=()=>(B._crypto_kx_primitive=P.Bd)(),B._crypto_onetimeauth_statebytes=()=>(B._crypto_onetimeauth_statebytes=P.Cd)(),B._crypto_onetimeauth_bytes=()=>(B._crypto_onetimeauth_bytes=P.Dd)(),B._crypto_onetimeauth_keybytes=()=>(B._crypto_onetimeauth_keybytes=P.Ed)(),B._crypto_onetimeauth=(A,I,g,C,Q)=>(B._crypto_onetimeauth=P.Fd)(A,I,g,C,Q),B._crypto_onetimeauth_verify=(A,I,g,C,Q)=>(B._crypto_onetimeauth_verify=P.Gd)(A,I,g,C,Q),B._crypto_onetimeauth_init=(A,I)=>(B._crypto_onetimeauth_init=P.Hd)(A,I),B._crypto_onetimeauth_update=(A,I,g,C)=>(B._crypto_onetimeauth_update=P.Id)(A,I,g,C),B._crypto_onetimeauth_final=(A,I)=>(B._crypto_onetimeauth_final=P.Jd)(A,I),B._crypto_onetimeauth_primitive=()=>(B._crypto_onetimeauth_primitive=P.Kd)(),B._crypto_onetimeauth_keygen=A=>(B._crypto_onetimeauth_keygen=P.Ld)(A),B._crypto_onetimeauth_poly1305=(A,I,g,C,Q)=>(B._crypto_onetimeauth_poly1305=P.Md)(A,I,g,C,Q),B._crypto_onetimeauth_poly1305_verify=(A,I,g,C,Q)=>(B._crypto_onetimeauth_poly1305_verify=P.Nd)(A,I,g,C,Q),B._crypto_onetimeauth_poly1305_init=(A,I)=>(B._crypto_onetimeauth_poly1305_init=P.Od)(A,I),B._crypto_onetimeauth_poly1305_update=(A,I,g,C)=>(B._crypto_onetimeauth_poly1305_update=P.Pd)(A,I,g,C),B._crypto_onetimeauth_poly1305_final=(A,I)=>(B._crypto_onetimeauth_poly1305_final=P.Qd)(A,I),B._crypto_onetimeauth_poly1305_bytes=()=>(B._crypto_onetimeauth_poly1305_bytes=P.Rd)(),B._crypto_onetimeauth_poly1305_keybytes=()=>(B._crypto_onetimeauth_poly1305_keybytes=P.Sd)(),B._crypto_onetimeauth_poly1305_statebytes=()=>(B._crypto_onetimeauth_poly1305_statebytes=P.Td)(),B._crypto_onetimeauth_poly1305_keygen=A=>(B._crypto_onetimeauth_poly1305_keygen=P.Ud)(A),B._crypto_pwhash_argon2i_alg_argon2i13=()=>(B._crypto_pwhash_argon2i_alg_argon2i13=P.Vd)(),B._crypto_pwhash_argon2i_bytes_min=()=>(B._crypto_pwhash_argon2i_bytes_min=P.Wd)(),B._crypto_pwhash_argon2i_bytes_max=()=>(B._crypto_pwhash_argon2i_bytes_max=P.Xd)(),B._crypto_pwhash_argon2i_passwd_min=()=>(B._crypto_pwhash_argon2i_passwd_min=P.Yd)(),B._crypto_pwhash_argon2i_passwd_max=()=>(B._crypto_pwhash_argon2i_passwd_max=P.Zd)(),B._crypto_pwhash_argon2i_saltbytes=()=>(B._crypto_pwhash_argon2i_saltbytes=P._d)(),B._crypto_pwhash_argon2i_strbytes=()=>(B._crypto_pwhash_argon2i_strbytes=P.$d)(),B._crypto_pwhash_argon2i_strprefix=()=>(B._crypto_pwhash_argon2i_strprefix=P.ae)(),B._crypto_pwhash_argon2i_opslimit_min=()=>(B._crypto_pwhash_argon2i_opslimit_min=P.be)(),B._crypto_pwhash_argon2i_opslimit_max=()=>(B._crypto_pwhash_argon2i_opslimit_max=P.ce)(),B._crypto_pwhash_argon2i_memlimit_min=()=>(B._crypto_pwhash_argon2i_memlimit_min=P.de)(),B._crypto_pwhash_argon2i_memlimit_max=()=>(B._crypto_pwhash_argon2i_memlimit_max=P.ee)(),B._crypto_pwhash_argon2i_opslimit_interactive=()=>(B._crypto_pwhash_argon2i_opslimit_interactive=P.fe)(),B._crypto_pwhash_argon2i_memlimit_interactive=()=>(B._crypto_pwhash_argon2i_memlimit_interactive=P.ge)(),B._crypto_pwhash_argon2i_opslimit_moderate=()=>(B._crypto_pwhash_argon2i_opslimit_moderate=P.he)(),B._crypto_pwhash_argon2i_memlimit_moderate=()=>(B._crypto_pwhash_argon2i_memlimit_moderate=P.ie)(),B._crypto_pwhash_argon2i_opslimit_sensitive=()=>(B._crypto_pwhash_argon2i_opslimit_sensitive=P.je)(),B._crypto_pwhash_argon2i_memlimit_sensitive=()=>(B._crypto_pwhash_argon2i_memlimit_sensitive=P.ke)(),B._crypto_pwhash_argon2i=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash_argon2i=P.le)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_argon2i_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_argon2i_str=P.me)(A,I,g,C,Q,i,o),B._crypto_pwhash_argon2i_str_verify=(A,I,g,C)=>(B._crypto_pwhash_argon2i_str_verify=P.ne)(A,I,g,C),B._crypto_pwhash_argon2i_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_argon2i_str_needs_rehash=P.oe)(A,I,g,C),B._crypto_pwhash_argon2id_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_argon2id_str_needs_rehash=P.pe)(A,I,g,C),B._crypto_pwhash_argon2id_alg_argon2id13=()=>(B._crypto_pwhash_argon2id_alg_argon2id13=P.qe)(),B._crypto_pwhash_argon2id_bytes_min=()=>(B._crypto_pwhash_argon2id_bytes_min=P.re)(),B._crypto_pwhash_argon2id_bytes_max=()=>(B._crypto_pwhash_argon2id_bytes_max=P.se)(),B._crypto_pwhash_argon2id_passwd_min=()=>(B._crypto_pwhash_argon2id_passwd_min=P.te)(),B._crypto_pwhash_argon2id_passwd_max=()=>(B._crypto_pwhash_argon2id_passwd_max=P.ue)(),B._crypto_pwhash_argon2id_saltbytes=()=>(B._crypto_pwhash_argon2id_saltbytes=P.ve)(),B._crypto_pwhash_argon2id_strbytes=()=>(B._crypto_pwhash_argon2id_strbytes=P.we)(),B._crypto_pwhash_argon2id_strprefix=()=>(B._crypto_pwhash_argon2id_strprefix=P.xe)(),B._crypto_pwhash_argon2id_opslimit_min=()=>(B._crypto_pwhash_argon2id_opslimit_min=P.ye)(),B._crypto_pwhash_argon2id_opslimit_max=()=>(B._crypto_pwhash_argon2id_opslimit_max=P.ze)(),B._crypto_pwhash_argon2id_memlimit_min=()=>(B._crypto_pwhash_argon2id_memlimit_min=P.Ae)(),B._crypto_pwhash_argon2id_memlimit_max=()=>(B._crypto_pwhash_argon2id_memlimit_max=P.Be)(),B._crypto_pwhash_argon2id_opslimit_interactive=()=>(B._crypto_pwhash_argon2id_opslimit_interactive=P.Ce)(),B._crypto_pwhash_argon2id_memlimit_interactive=()=>(B._crypto_pwhash_argon2id_memlimit_interactive=P.De)(),B._crypto_pwhash_argon2id_opslimit_moderate=()=>(B._crypto_pwhash_argon2id_opslimit_moderate=P.Ee)(),B._crypto_pwhash_argon2id_memlimit_moderate=()=>(B._crypto_pwhash_argon2id_memlimit_moderate=P.Fe)(),B._crypto_pwhash_argon2id_opslimit_sensitive=()=>(B._crypto_pwhash_argon2id_opslimit_sensitive=P.Ge)(),B._crypto_pwhash_argon2id_memlimit_sensitive=()=>(B._crypto_pwhash_argon2id_memlimit_sensitive=P.He)(),B._crypto_pwhash_argon2id=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash_argon2id=P.Ie)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_argon2id_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_argon2id_str=P.Je)(A,I,g,C,Q,i,o),B._crypto_pwhash_argon2id_str_verify=(A,I,g,C)=>(B._crypto_pwhash_argon2id_str_verify=P.Ke)(A,I,g,C),B._crypto_pwhash_alg_argon2i13=()=>(B._crypto_pwhash_alg_argon2i13=P.Le)(),B._crypto_pwhash_alg_argon2id13=()=>(B._crypto_pwhash_alg_argon2id13=P.Me)(),B._crypto_pwhash_alg_default=()=>(B._crypto_pwhash_alg_default=P.Ne)(),B._crypto_pwhash_bytes_min=()=>(B._crypto_pwhash_bytes_min=P.Oe)(),B._crypto_pwhash_bytes_max=()=>(B._crypto_pwhash_bytes_max=P.Pe)(),B._crypto_pwhash_passwd_min=()=>(B._crypto_pwhash_passwd_min=P.Qe)(),B._crypto_pwhash_passwd_max=()=>(B._crypto_pwhash_passwd_max=P.Re)(),B._crypto_pwhash_saltbytes=()=>(B._crypto_pwhash_saltbytes=P.Se)(),B._crypto_pwhash_strbytes=()=>(B._crypto_pwhash_strbytes=P.Te)(),B._crypto_pwhash_strprefix=()=>(B._crypto_pwhash_strprefix=P.Ue)(),B._crypto_pwhash_opslimit_min=()=>(B._crypto_pwhash_opslimit_min=P.Ve)(),B._crypto_pwhash_opslimit_max=()=>(B._crypto_pwhash_opslimit_max=P.We)(),B._crypto_pwhash_memlimit_min=()=>(B._crypto_pwhash_memlimit_min=P.Xe)(),B._crypto_pwhash_memlimit_max=()=>(B._crypto_pwhash_memlimit_max=P.Ye)(),B._crypto_pwhash_opslimit_interactive=()=>(B._crypto_pwhash_opslimit_interactive=P.Ze)(),B._crypto_pwhash_memlimit_interactive=()=>(B._crypto_pwhash_memlimit_interactive=P._e)(),B._crypto_pwhash_opslimit_moderate=()=>(B._crypto_pwhash_opslimit_moderate=P.$e)(),B._crypto_pwhash_memlimit_moderate=()=>(B._crypto_pwhash_memlimit_moderate=P.af)(),B._crypto_pwhash_opslimit_sensitive=()=>(B._crypto_pwhash_opslimit_sensitive=P.bf)(),B._crypto_pwhash_memlimit_sensitive=()=>(B._crypto_pwhash_memlimit_sensitive=P.cf)(),B._crypto_pwhash=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash=P.df)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_str=P.ef)(A,I,g,C,Q,i,o),B._crypto_pwhash_str_alg=(A,I,g,C,Q,i,o,E)=>(B._crypto_pwhash_str_alg=P.ff)(A,I,g,C,Q,i,o,E),B._crypto_pwhash_str_verify=(A,I,g,C)=>(B._crypto_pwhash_str_verify=P.gf)(A,I,g,C),B._crypto_pwhash_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_str_needs_rehash=P.hf)(A,I,g,C),B._crypto_pwhash_primitive=()=>(B._crypto_pwhash_primitive=P.jf)(),B._crypto_scalarmult_primitive=()=>(B._crypto_scalarmult_primitive=P.kf)(),B._crypto_scalarmult_base=(A,I)=>(B._crypto_scalarmult_base=P.lf)(A,I),B._crypto_scalarmult=(A,I,g)=>(B._crypto_scalarmult=P.mf)(A,I,g),B._crypto_scalarmult_bytes=()=>(B._crypto_scalarmult_bytes=P.nf)(),B._crypto_scalarmult_scalarbytes=()=>(B._crypto_scalarmult_scalarbytes=P.of)(),B._crypto_scalarmult_curve25519=(A,I,g)=>(B._crypto_scalarmult_curve25519=P.pf)(A,I,g),B._crypto_scalarmult_curve25519_base=(A,I)=>(B._crypto_scalarmult_curve25519_base=P.qf)(A,I),B._crypto_scalarmult_curve25519_bytes=()=>(B._crypto_scalarmult_curve25519_bytes=P.rf)(),B._crypto_scalarmult_curve25519_scalarbytes=()=>(B._crypto_scalarmult_curve25519_scalarbytes=P.sf)(),B._crypto_secretbox_keybytes=()=>(B._crypto_secretbox_keybytes=P.tf)(),B._crypto_secretbox_noncebytes=()=>(B._crypto_secretbox_noncebytes=P.uf)(),B._crypto_secretbox_zerobytes=()=>(B._crypto_secretbox_zerobytes=P.vf)(),B._crypto_secretbox_boxzerobytes=()=>(B._crypto_secretbox_boxzerobytes=P.wf)(),B._crypto_secretbox_macbytes=()=>(B._crypto_secretbox_macbytes=P.xf)(),B._crypto_secretbox_messagebytes_max=()=>(B._crypto_secretbox_messagebytes_max=P.yf)(),B._crypto_secretbox_primitive=()=>(B._crypto_secretbox_primitive=P.zf)(),B._crypto_secretbox=(A,I,g,C,Q,i)=>(B._crypto_secretbox=P.Af)(A,I,g,C,Q,i),B._crypto_secretbox_open=(A,I,g,C,Q,i)=>(B._crypto_secretbox_open=P.Bf)(A,I,g,C,Q,i),B._crypto_secretbox_keygen=A=>(B._crypto_secretbox_keygen=P.Cf)(A),B._crypto_secretbox_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_detached=P.Df)(A,I,g,C,Q,i,o),B._crypto_secretbox_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_easy=P.Ef)(A,I,g,C,Q,i),B._crypto_secretbox_open_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_open_detached=P.Ff)(A,I,g,C,Q,i,o),B._crypto_secretbox_open_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_open_easy=P.Gf)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xsalsa20poly1305=P.Hf)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305_open=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xsalsa20poly1305_open=P.If)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305_keybytes=()=>(B._crypto_secretbox_xsalsa20poly1305_keybytes=P.Jf)(),B._crypto_secretbox_xsalsa20poly1305_noncebytes=()=>(B._crypto_secretbox_xsalsa20poly1305_noncebytes=P.Kf)(),B._crypto_secretbox_xsalsa20poly1305_zerobytes=()=>(B._crypto_secretbox_xsalsa20poly1305_zerobytes=P.Lf)(),B._crypto_secretbox_xsalsa20poly1305_boxzerobytes=()=>(B._crypto_secretbox_xsalsa20poly1305_boxzerobytes=P.Mf)(),B._crypto_secretbox_xsalsa20poly1305_macbytes=()=>(B._crypto_secretbox_xsalsa20poly1305_macbytes=P.Nf)(),B._crypto_secretbox_xsalsa20poly1305_messagebytes_max=()=>(B._crypto_secretbox_xsalsa20poly1305_messagebytes_max=P.Of)(),B._crypto_secretbox_xsalsa20poly1305_keygen=A=>(B._crypto_secretbox_xsalsa20poly1305_keygen=P.Pf)(A),B._crypto_secretstream_xchacha20poly1305_keygen=A=>(B._crypto_secretstream_xchacha20poly1305_keygen=P.Qf)(A),B._crypto_secretstream_xchacha20poly1305_init_push=(A,I,g)=>(B._crypto_secretstream_xchacha20poly1305_init_push=P.Rf)(A,I,g),B._crypto_secretstream_xchacha20poly1305_init_pull=(A,I,g)=>(B._crypto_secretstream_xchacha20poly1305_init_pull=P.Sf)(A,I,g),B._crypto_secretstream_xchacha20poly1305_rekey=A=>(B._crypto_secretstream_xchacha20poly1305_rekey=P.Tf)(A),B._crypto_secretstream_xchacha20poly1305_push=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_secretstream_xchacha20poly1305_push=P.Uf)(A,I,g,C,Q,i,o,E,a,_),B._crypto_secretstream_xchacha20poly1305_pull=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_secretstream_xchacha20poly1305_pull=P.Vf)(A,I,g,C,Q,i,o,E,a,_),B._crypto_secretstream_xchacha20poly1305_statebytes=()=>(B._crypto_secretstream_xchacha20poly1305_statebytes=P.Wf)(),B._crypto_secretstream_xchacha20poly1305_abytes=()=>(B._crypto_secretstream_xchacha20poly1305_abytes=P.Xf)(),B._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(B._crypto_secretstream_xchacha20poly1305_headerbytes=P.Yf)(),B._crypto_secretstream_xchacha20poly1305_keybytes=()=>(B._crypto_secretstream_xchacha20poly1305_keybytes=P.Zf)(),B._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(B._crypto_secretstream_xchacha20poly1305_messagebytes_max=P._f)(),B._crypto_secretstream_xchacha20poly1305_tag_message=()=>(B._crypto_secretstream_xchacha20poly1305_tag_message=P.$f)(),B._crypto_secretstream_xchacha20poly1305_tag_push=()=>(B._crypto_secretstream_xchacha20poly1305_tag_push=P.ag)(),B._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(B._crypto_secretstream_xchacha20poly1305_tag_rekey=P.bg)(),B._crypto_secretstream_xchacha20poly1305_tag_final=()=>(B._crypto_secretstream_xchacha20poly1305_tag_final=P.cg)(),B._crypto_shorthash_bytes=()=>(B._crypto_shorthash_bytes=P.dg)(),B._crypto_shorthash_keybytes=()=>(B._crypto_shorthash_keybytes=P.eg)(),B._crypto_shorthash_primitive=()=>(B._crypto_shorthash_primitive=P.fg)(),B._crypto_shorthash=(A,I,g,C,Q)=>(B._crypto_shorthash=P.gg)(A,I,g,C,Q),B._crypto_shorthash_keygen=A=>(B._crypto_shorthash_keygen=P.hg)(A),B._crypto_shorthash_siphash24_bytes=()=>(B._crypto_shorthash_siphash24_bytes=P.ig)(),B._crypto_shorthash_siphash24_keybytes=()=>(B._crypto_shorthash_siphash24_keybytes=P.jg)(),B._crypto_shorthash_siphash24=(A,I,g,C,Q)=>(B._crypto_shorthash_siphash24=P.kg)(A,I,g,C,Q),B._crypto_sign_statebytes=()=>(B._crypto_sign_statebytes=P.lg)(),B._crypto_sign_bytes=()=>(B._crypto_sign_bytes=P.mg)(),B._crypto_sign_seedbytes=()=>(B._crypto_sign_seedbytes=P.ng)(),B._crypto_sign_publickeybytes=()=>(B._crypto_sign_publickeybytes=P.og)(),B._crypto_sign_secretkeybytes=()=>(B._crypto_sign_secretkeybytes=P.pg)(),B._crypto_sign_messagebytes_max=()=>(B._crypto_sign_messagebytes_max=P.qg)(),B._crypto_sign_primitive=()=>(B._crypto_sign_primitive=P.rg)(),B._crypto_sign_seed_keypair=(A,I,g)=>(B._crypto_sign_seed_keypair=P.sg)(A,I,g),B._crypto_sign_keypair=(A,I)=>(B._crypto_sign_keypair=P.tg)(A,I),B._crypto_sign=(A,I,g,C,Q,i)=>(B._crypto_sign=P.ug)(A,I,g,C,Q,i),B._crypto_sign_open=(A,I,g,C,Q,i)=>(B._crypto_sign_open=P.vg)(A,I,g,C,Q,i),B._crypto_sign_detached=(A,I,g,C,Q,i)=>(B._crypto_sign_detached=P.wg)(A,I,g,C,Q,i),B._crypto_sign_verify_detached=(A,I,g,C,Q)=>(B._crypto_sign_verify_detached=P.xg)(A,I,g,C,Q),B._crypto_sign_init=A=>(B._crypto_sign_init=P.yg)(A),B._crypto_sign_update=(A,I,g,C)=>(B._crypto_sign_update=P.zg)(A,I,g,C),B._crypto_sign_final_create=(A,I,g,C)=>(B._crypto_sign_final_create=P.Ag)(A,I,g,C),B._crypto_sign_final_verify=(A,I,g)=>(B._crypto_sign_final_verify=P.Bg)(A,I,g),B._crypto_sign_ed25519ph_statebytes=()=>(B._crypto_sign_ed25519ph_statebytes=P.Cg)(),B._crypto_sign_ed25519_bytes=()=>(B._crypto_sign_ed25519_bytes=P.Dg)(),B._crypto_sign_ed25519_seedbytes=()=>(B._crypto_sign_ed25519_seedbytes=P.Eg)(),B._crypto_sign_ed25519_publickeybytes=()=>(B._crypto_sign_ed25519_publickeybytes=P.Fg)(),B._crypto_sign_ed25519_secretkeybytes=()=>(B._crypto_sign_ed25519_secretkeybytes=P.Gg)(),B._crypto_sign_ed25519_messagebytes_max=()=>(B._crypto_sign_ed25519_messagebytes_max=P.Hg)(),B._crypto_sign_ed25519_sk_to_seed=(A,I)=>(B._crypto_sign_ed25519_sk_to_seed=P.Ig)(A,I),B._crypto_sign_ed25519_sk_to_pk=(A,I)=>(B._crypto_sign_ed25519_sk_to_pk=P.Jg)(A,I),B._crypto_sign_ed25519ph_init=A=>(B._crypto_sign_ed25519ph_init=P.Kg)(A),B._crypto_sign_ed25519ph_update=(A,I,g,C)=>(B._crypto_sign_ed25519ph_update=P.Lg)(A,I,g,C),B._crypto_sign_ed25519ph_final_create=(A,I,g,C)=>(B._crypto_sign_ed25519ph_final_create=P.Mg)(A,I,g,C),B._crypto_sign_ed25519ph_final_verify=(A,I,g)=>(B._crypto_sign_ed25519ph_final_verify=P.Ng)(A,I,g),B._crypto_sign_ed25519_seed_keypair=(A,I,g)=>(B._crypto_sign_ed25519_seed_keypair=P.Og)(A,I,g),B._crypto_sign_ed25519_keypair=(A,I)=>(B._crypto_sign_ed25519_keypair=P.Pg)(A,I),B._crypto_sign_ed25519_pk_to_curve25519=(A,I)=>(B._crypto_sign_ed25519_pk_to_curve25519=P.Qg)(A,I),B._crypto_sign_ed25519_sk_to_curve25519=(A,I)=>(B._crypto_sign_ed25519_sk_to_curve25519=P.Rg)(A,I),B._crypto_sign_ed25519_verify_detached=(A,I,g,C,Q)=>(B._crypto_sign_ed25519_verify_detached=P.Sg)(A,I,g,C,Q),B._crypto_sign_ed25519_open=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519_open=P.Tg)(A,I,g,C,Q,i),B._crypto_sign_ed25519_detached=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519_detached=P.Ug)(A,I,g,C,Q,i),B._crypto_sign_ed25519=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519=P.Vg)(A,I,g,C,Q,i),B._crypto_stream_chacha20_keybytes=()=>(B._crypto_stream_chacha20_keybytes=P.Wg)(),B._crypto_stream_chacha20_noncebytes=()=>(B._crypto_stream_chacha20_noncebytes=P.Xg)(),B._crypto_stream_chacha20_messagebytes_max=()=>(B._crypto_stream_chacha20_messagebytes_max=P.Yg)(),B._crypto_stream_chacha20_ietf_keybytes=()=>(B._crypto_stream_chacha20_ietf_keybytes=P.Zg)(),B._crypto_stream_chacha20_ietf_noncebytes=()=>(B._crypto_stream_chacha20_ietf_noncebytes=P._g)(),B._crypto_stream_chacha20_ietf_messagebytes_max=()=>(B._crypto_stream_chacha20_ietf_messagebytes_max=P.$g)(),B._crypto_stream_chacha20=(A,I,g,C,Q)=>(B._crypto_stream_chacha20=P.ah)(A,I,g,C,Q),B._crypto_stream_chacha20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_chacha20_xor_ic=P.bh)(A,I,g,C,Q,i,o,E),B._crypto_stream_chacha20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_chacha20_xor=P.ch)(A,I,g,C,Q,i),B._crypto_stream_chacha20_ietf=(A,I,g,C,Q)=>(B._crypto_stream_chacha20_ietf=P.dh)(A,I,g,C,Q),B._crypto_stream_chacha20_ietf_xor_ic=(A,I,g,C,Q,i,o)=>(B._crypto_stream_chacha20_ietf_xor_ic=P.eh)(A,I,g,C,Q,i,o),B._crypto_stream_chacha20_ietf_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_chacha20_ietf_xor=P.fh)(A,I,g,C,Q,i),B._crypto_stream_chacha20_ietf_keygen=A=>(B._crypto_stream_chacha20_ietf_keygen=P.gh)(A),B._crypto_stream_chacha20_keygen=A=>(B._crypto_stream_chacha20_keygen=P.hh)(A),B._crypto_stream_keybytes=()=>(B._crypto_stream_keybytes=P.ih)(),B._crypto_stream_noncebytes=()=>(B._crypto_stream_noncebytes=P.jh)(),B._crypto_stream_messagebytes_max=()=>(B._crypto_stream_messagebytes_max=P.kh)(),B._crypto_stream_primitive=()=>(B._crypto_stream_primitive=P.lh)(),B._crypto_stream=(A,I,g,C,Q)=>(B._crypto_stream=P.mh)(A,I,g,C,Q),B._crypto_stream_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xor=P.nh)(A,I,g,C,Q,i),B._crypto_stream_keygen=A=>(B._crypto_stream_keygen=P.oh)(A),B._crypto_stream_salsa20_keybytes=()=>(B._crypto_stream_salsa20_keybytes=P.ph)(),B._crypto_stream_salsa20_noncebytes=()=>(B._crypto_stream_salsa20_noncebytes=P.qh)(),B._crypto_stream_salsa20_messagebytes_max=()=>(B._crypto_stream_salsa20_messagebytes_max=P.rh)(),B._crypto_stream_salsa20=(A,I,g,C,Q)=>(B._crypto_stream_salsa20=P.sh)(A,I,g,C,Q),B._crypto_stream_salsa20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_salsa20_xor_ic=P.th)(A,I,g,C,Q,i,o,E),B._crypto_stream_salsa20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa20_xor=P.uh)(A,I,g,C,Q,i),B._crypto_stream_salsa20_keygen=A=>(B._crypto_stream_salsa20_keygen=P.vh)(A),B._crypto_stream_xsalsa20=(A,I,g,C,Q)=>(B._crypto_stream_xsalsa20=P.wh)(A,I,g,C,Q),B._crypto_stream_xsalsa20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_xsalsa20_xor_ic=P.xh)(A,I,g,C,Q,i,o,E),B._crypto_stream_xsalsa20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xsalsa20_xor=P.yh)(A,I,g,C,Q,i),B._crypto_stream_xsalsa20_keybytes=()=>(B._crypto_stream_xsalsa20_keybytes=P.zh)(),B._crypto_stream_xsalsa20_noncebytes=()=>(B._crypto_stream_xsalsa20_noncebytes=P.Ah)(),B._crypto_stream_xsalsa20_messagebytes_max=()=>(B._crypto_stream_xsalsa20_messagebytes_max=P.Bh)(),B._crypto_stream_xsalsa20_keygen=A=>(B._crypto_stream_xsalsa20_keygen=P.Ch)(A),B._crypto_verify_16_bytes=()=>(B._crypto_verify_16_bytes=P.Dh)(),B._crypto_verify_32_bytes=()=>(B._crypto_verify_32_bytes=P.Eh)(),B._crypto_verify_64_bytes=()=>(B._crypto_verify_64_bytes=P.Fh)(),B._crypto_verify_16=(A,I)=>(B._crypto_verify_16=P.Gh)(A,I),B._crypto_verify_32=(A,I)=>(B._crypto_verify_32=P.Hh)(A,I),B._crypto_verify_64=(A,I)=>(B._crypto_verify_64=P.Ih)(A,I),B._randombytes_implementation_name=()=>(B._randombytes_implementation_name=P.Jh)(),B._randombytes_random=()=>(B._randombytes_random=P.Kh)(),B._randombytes_stir=()=>(B._randombytes_stir=P.Lh)(),B._randombytes_uniform=A=>(B._randombytes_uniform=P.Mh)(A),B._randombytes_buf=(A,I)=>(B._randombytes_buf=P.Nh)(A,I),B._randombytes_buf_deterministic=(A,I,g)=>(B._randombytes_buf_deterministic=P.Oh)(A,I,g),B._randombytes_seedbytes=()=>(B._randombytes_seedbytes=P.Ph)(),B._randombytes_close=()=>(B._randombytes_close=P.Qh)(),B._randombytes=(A,I,g)=>(B._randombytes=P.Rh)(A,I,g),B._sodium_bin2hex=(A,I,g,C)=>(B._sodium_bin2hex=P.Sh)(A,I,g,C),B._sodium_hex2bin=(A,I,g,C,Q,i,o)=>(B._sodium_hex2bin=P.Th)(A,I,g,C,Q,i,o),B._sodium_base64_encoded_len=(A,I)=>(B._sodium_base64_encoded_len=P.Uh)(A,I),B._sodium_bin2base64=(A,I,g,C,Q)=>(B._sodium_bin2base64=P.Vh)(A,I,g,C,Q),B._sodium_base642bin=(A,I,g,C,Q,i,o,E)=>(B._sodium_base642bin=P.Wh)(A,I,g,C,Q,i,o,E),B._sodium_init=()=>(B._sodium_init=P.Xh)(),B._sodium_pad=(A,I,g,C,Q)=>(B._sodium_pad=P.Yh)(A,I,g,C,Q),B._sodium_unpad=(A,I,g,C)=>(B._sodium_unpad=P.Zh)(A,I,g,C),B._sodium_version_string=()=>(B._sodium_version_string=P._h)(),B._sodium_library_version_major=()=>(B._sodium_library_version_major=P.$h)(),B._sodium_library_version_minor=()=>(B._sodium_library_version_minor=P.ai)(),B._sodium_library_minimal=()=>(B._sodium_library_minimal=P.bi)(),B._crypto_box_curve25519xchacha20poly1305_seed_keypair=(A,I,g)=>(B._crypto_box_curve25519xchacha20poly1305_seed_keypair=P.ci)(A,I,g),B._crypto_box_curve25519xchacha20poly1305_keypair=(A,I)=>(B._crypto_box_curve25519xchacha20poly1305_keypair=P.di)(A,I),B._crypto_box_curve25519xchacha20poly1305_beforenm=(A,I,g)=>(B._crypto_box_curve25519xchacha20poly1305_beforenm=P.ei)(A,I,g),B._crypto_box_curve25519xchacha20poly1305_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_detached_afternm=P.fi)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_curve25519xchacha20poly1305_detached=P.gi)(A,I,g,C,Q,i,o,E),B._crypto_box_curve25519xchacha20poly1305_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_easy_afternm=P.hi)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_easy=P.ii)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=P.ji)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_open_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_curve25519xchacha20poly1305_open_detached=P.ki)(A,I,g,C,Q,i,o,E),B._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=P.li)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_open_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_open_easy=P.mi)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_seedbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_seedbytes=P.ni)(),B._crypto_box_curve25519xchacha20poly1305_publickeybytes=()=>(B._crypto_box_curve25519xchacha20poly1305_publickeybytes=P.oi)(),B._crypto_box_curve25519xchacha20poly1305_secretkeybytes=()=>(B._crypto_box_curve25519xchacha20poly1305_secretkeybytes=P.pi)(),B._crypto_box_curve25519xchacha20poly1305_beforenmbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_beforenmbytes=P.qi)(),B._crypto_box_curve25519xchacha20poly1305_noncebytes=()=>(B._crypto_box_curve25519xchacha20poly1305_noncebytes=P.ri)(),B._crypto_box_curve25519xchacha20poly1305_macbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_macbytes=P.si)(),B._crypto_box_curve25519xchacha20poly1305_messagebytes_max=()=>(B._crypto_box_curve25519xchacha20poly1305_messagebytes_max=P.ti)(),B._crypto_box_curve25519xchacha20poly1305_seal=(A,I,g,C,Q)=>(B._crypto_box_curve25519xchacha20poly1305_seal=P.ui)(A,I,g,C,Q),B._crypto_box_curve25519xchacha20poly1305_seal_open=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_seal_open=P.vi)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_sealbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_sealbytes=P.wi)(),B._crypto_core_ed25519_is_valid_point=A=>(B._crypto_core_ed25519_is_valid_point=P.xi)(A),B._crypto_core_ed25519_add=(A,I,g)=>(B._crypto_core_ed25519_add=P.yi)(A,I,g),B._crypto_core_ed25519_sub=(A,I,g)=>(B._crypto_core_ed25519_sub=P.zi)(A,I,g),B._crypto_core_ed25519_from_uniform=(A,I)=>(B._crypto_core_ed25519_from_uniform=P.Ai)(A,I),B._crypto_core_ed25519_random=A=>(B._crypto_core_ed25519_random=P.Bi)(A),B._crypto_core_ed25519_scalar_random=A=>(B._crypto_core_ed25519_scalar_random=P.Ci)(A),B._crypto_core_ed25519_scalar_invert=(A,I)=>(B._crypto_core_ed25519_scalar_invert=P.Di)(A,I),B._crypto_core_ed25519_scalar_negate=(A,I)=>(B._crypto_core_ed25519_scalar_negate=P.Ei)(A,I),B._crypto_core_ed25519_scalar_complement=(A,I)=>(B._crypto_core_ed25519_scalar_complement=P.Fi)(A,I),B._crypto_core_ed25519_scalar_add=(A,I,g)=>(B._crypto_core_ed25519_scalar_add=P.Gi)(A,I,g),B._crypto_core_ed25519_scalar_reduce=(A,I)=>(B._crypto_core_ed25519_scalar_reduce=P.Hi)(A,I),B._crypto_core_ed25519_scalar_sub=(A,I,g)=>(B._crypto_core_ed25519_scalar_sub=P.Ii)(A,I,g),B._crypto_core_ed25519_scalar_mul=(A,I,g)=>(B._crypto_core_ed25519_scalar_mul=P.Ji)(A,I,g),B._crypto_core_ed25519_bytes=()=>(B._crypto_core_ed25519_bytes=P.Ki)(),B._crypto_core_ed25519_nonreducedscalarbytes=()=>(B._crypto_core_ed25519_nonreducedscalarbytes=P.Li)(),B._crypto_core_ed25519_uniformbytes=()=>(B._crypto_core_ed25519_uniformbytes=P.Mi)(),B._crypto_core_ed25519_hashbytes=()=>(B._crypto_core_ed25519_hashbytes=P.Ni)(),B._crypto_core_ed25519_scalarbytes=()=>(B._crypto_core_ed25519_scalarbytes=P.Oi)(),B._crypto_core_ristretto255_is_valid_point=A=>(B._crypto_core_ristretto255_is_valid_point=P.Pi)(A),B._crypto_core_ristretto255_add=(A,I,g)=>(B._crypto_core_ristretto255_add=P.Qi)(A,I,g),B._crypto_core_ristretto255_sub=(A,I,g)=>(B._crypto_core_ristretto255_sub=P.Ri)(A,I,g),B._crypto_core_ristretto255_from_hash=(A,I)=>(B._crypto_core_ristretto255_from_hash=P.Si)(A,I),B._crypto_core_ristretto255_random=A=>(B._crypto_core_ristretto255_random=P.Ti)(A),B._crypto_core_ristretto255_scalar_random=A=>(B._crypto_core_ristretto255_scalar_random=P.Ui)(A),B._crypto_core_ristretto255_scalar_invert=(A,I)=>(B._crypto_core_ristretto255_scalar_invert=P.Vi)(A,I),B._crypto_core_ristretto255_scalar_negate=(A,I)=>(B._crypto_core_ristretto255_scalar_negate=P.Wi)(A,I),B._crypto_core_ristretto255_scalar_complement=(A,I)=>(B._crypto_core_ristretto255_scalar_complement=P.Xi)(A,I),B._crypto_core_ristretto255_scalar_add=(A,I,g)=>(B._crypto_core_ristretto255_scalar_add=P.Yi)(A,I,g),B._crypto_core_ristretto255_scalar_sub=(A,I,g)=>(B._crypto_core_ristretto255_scalar_sub=P.Zi)(A,I,g),B._crypto_core_ristretto255_scalar_mul=(A,I,g)=>(B._crypto_core_ristretto255_scalar_mul=P._i)(A,I,g),B._crypto_core_ristretto255_scalar_reduce=(A,I)=>(B._crypto_core_ristretto255_scalar_reduce=P.$i)(A,I),B._crypto_core_ristretto255_bytes=()=>(B._crypto_core_ristretto255_bytes=P.aj)(),B._crypto_core_ristretto255_nonreducedscalarbytes=()=>(B._crypto_core_ristretto255_nonreducedscalarbytes=P.bj)(),B._crypto_core_ristretto255_hashbytes=()=>(B._crypto_core_ristretto255_hashbytes=P.cj)(),B._crypto_core_ristretto255_scalarbytes=()=>(B._crypto_core_ristretto255_scalarbytes=P.dj)(),B._crypto_pwhash_scryptsalsa208sha256_ll=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_pwhash_scryptsalsa208sha256_ll=P.ej)(A,I,g,C,Q,i,o,E,a,_),B._crypto_pwhash_scryptsalsa208sha256_bytes_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_bytes_min=P.fj)(),B._crypto_pwhash_scryptsalsa208sha256_bytes_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_bytes_max=P.gj)(),B._crypto_pwhash_scryptsalsa208sha256_passwd_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_passwd_min=P.hj)(),B._crypto_pwhash_scryptsalsa208sha256_passwd_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_passwd_max=P.ij)(),B._crypto_pwhash_scryptsalsa208sha256_saltbytes=()=>(B._crypto_pwhash_scryptsalsa208sha256_saltbytes=P.jj)(),B._crypto_pwhash_scryptsalsa208sha256_strbytes=()=>(B._crypto_pwhash_scryptsalsa208sha256_strbytes=P.kj)(),B._crypto_pwhash_scryptsalsa208sha256_strprefix=()=>(B._crypto_pwhash_scryptsalsa208sha256_strprefix=P.lj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_min=P.mj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_max=P.nj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_min=P.oj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_max=P.pj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=P.qj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=P.rj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=P.sj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=P.tj)(),B._crypto_pwhash_scryptsalsa208sha256=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_pwhash_scryptsalsa208sha256=P.uj)(A,I,g,C,Q,i,o,E,a,_),B._crypto_pwhash_scryptsalsa208sha256_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_scryptsalsa208sha256_str=P.vj)(A,I,g,C,Q,i,o),B._crypto_pwhash_scryptsalsa208sha256_str_verify=(A,I,g,C)=>(B._crypto_pwhash_scryptsalsa208sha256_str_verify=P.wj)(A,I,g,C),B._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=P.xj)(A,I,g,C),B._crypto_scalarmult_ed25519=(A,I,g)=>(B._crypto_scalarmult_ed25519=P.yj)(A,I,g),B._crypto_scalarmult_ed25519_noclamp=(A,I,g)=>(B._crypto_scalarmult_ed25519_noclamp=P.zj)(A,I,g),B._crypto_scalarmult_ed25519_base=(A,I)=>(B._crypto_scalarmult_ed25519_base=P.Aj)(A,I),B._crypto_scalarmult_ed25519_base_noclamp=(A,I)=>(B._crypto_scalarmult_ed25519_base_noclamp=P.Bj)(A,I),B._crypto_scalarmult_ed25519_bytes=()=>(B._crypto_scalarmult_ed25519_bytes=P.Cj)(),B._crypto_scalarmult_ed25519_scalarbytes=()=>(B._crypto_scalarmult_ed25519_scalarbytes=P.Dj)(),B._crypto_scalarmult_ristretto255=(A,I,g)=>(B._crypto_scalarmult_ristretto255=P.Ej)(A,I,g),B._crypto_scalarmult_ristretto255_base=(A,I)=>(B._crypto_scalarmult_ristretto255_base=P.Fj)(A,I),B._crypto_scalarmult_ristretto255_bytes=()=>(B._crypto_scalarmult_ristretto255_bytes=P.Gj)(),B._crypto_scalarmult_ristretto255_scalarbytes=()=>(B._crypto_scalarmult_ristretto255_scalarbytes=P.Hj)(),B._crypto_secretbox_xchacha20poly1305_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_xchacha20poly1305_detached=P.Ij)(A,I,g,C,Q,i,o),B._crypto_secretbox_xchacha20poly1305_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xchacha20poly1305_easy=P.Jj)(A,I,g,C,Q,i),B._crypto_secretbox_xchacha20poly1305_open_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_xchacha20poly1305_open_detached=P.Kj)(A,I,g,C,Q,i,o),B._crypto_secretbox_xchacha20poly1305_open_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xchacha20poly1305_open_easy=P.Lj)(A,I,g,C,Q,i),B._crypto_secretbox_xchacha20poly1305_keybytes=()=>(B._crypto_secretbox_xchacha20poly1305_keybytes=P.Mj)(),B._crypto_secretbox_xchacha20poly1305_noncebytes=()=>(B._crypto_secretbox_xchacha20poly1305_noncebytes=P.Nj)(),B._crypto_secretbox_xchacha20poly1305_macbytes=()=>(B._crypto_secretbox_xchacha20poly1305_macbytes=P.Oj)(),B._crypto_secretbox_xchacha20poly1305_messagebytes_max=()=>(B._crypto_secretbox_xchacha20poly1305_messagebytes_max=P.Pj)(),B._crypto_shorthash_siphashx24_bytes=()=>(B._crypto_shorthash_siphashx24_bytes=P.Qj)(),B._crypto_shorthash_siphashx24_keybytes=()=>(B._crypto_shorthash_siphashx24_keybytes=P.Rj)(),B._crypto_shorthash_siphashx24=(A,I,g,C,Q)=>(B._crypto_shorthash_siphashx24=P.Sj)(A,I,g,C,Q),B._crypto_stream_salsa2012=(A,I,g,C,Q)=>(B._crypto_stream_salsa2012=P.Tj)(A,I,g,C,Q),B._crypto_stream_salsa2012_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa2012_xor=P.Uj)(A,I,g,C,Q,i),B._crypto_stream_salsa2012_keybytes=()=>(B._crypto_stream_salsa2012_keybytes=P.Vj)(),B._crypto_stream_salsa2012_noncebytes=()=>(B._crypto_stream_salsa2012_noncebytes=P.Wj)(),B._crypto_stream_salsa2012_messagebytes_max=()=>(B._crypto_stream_salsa2012_messagebytes_max=P.Xj)(),B._crypto_stream_salsa2012_keygen=A=>(B._crypto_stream_salsa2012_keygen=P.Yj)(A),B._crypto_stream_salsa208=(A,I,g,C,Q)=>(B._crypto_stream_salsa208=P.Zj)(A,I,g,C,Q),B._crypto_stream_salsa208_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa208_xor=P._j)(A,I,g,C,Q,i),B._crypto_stream_salsa208_keybytes=()=>(B._crypto_stream_salsa208_keybytes=P.$j)(),B._crypto_stream_salsa208_noncebytes=()=>(B._crypto_stream_salsa208_noncebytes=P.ak)(),B._crypto_stream_salsa208_messagebytes_max=()=>(B._crypto_stream_salsa208_messagebytes_max=P.bk)(),B._crypto_stream_salsa208_keygen=A=>(B._crypto_stream_salsa208_keygen=P.ck)(A),B._crypto_stream_xchacha20_keybytes=()=>(B._crypto_stream_xchacha20_keybytes=P.dk)(),B._crypto_stream_xchacha20_noncebytes=()=>(B._crypto_stream_xchacha20_noncebytes=P.ek)(),B._crypto_stream_xchacha20_messagebytes_max=()=>(B._crypto_stream_xchacha20_messagebytes_max=P.fk)(),B._crypto_stream_xchacha20=(A,I,g,C,Q)=>(B._crypto_stream_xchacha20=P.gk)(A,I,g,C,Q),B._crypto_stream_xchacha20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_xchacha20_xor_ic=P.hk)(A,I,g,C,Q,i,o,E),B._crypto_stream_xchacha20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xchacha20_xor=P.ik)(A,I,g,C,Q,i),B._crypto_stream_xchacha20_keygen=A=>(B._crypto_stream_xchacha20_keygen=P.jk)(A),B._malloc=A=>(B._malloc=P.kk)(A),B._free=A=>(B._free=P.lk)(A),B.setValue=function(A,I,g=\"i8\"){switch(g.endsWith(\"*\")&&(g=\"*\"),g){case\"i1\":case\"i8\":y[A]=I;break;case\"i16\":h[A>>1]=I;break;case\"i32\":D[A>>2]=I;break;case\"i64\":U(\"to do setValue(i64) use WASM_BIGINT\");case\"float\":p[A>>2]=I;break;case\"double\":w[A>>3]=I;break;case\"*\":f[A>>2]=I;break;default:U(`invalid type for setValue: ${g}`)}},B.getValue=function(A,I=\"i8\"){switch(I.endsWith(\"*\")&&(I=\"*\"),I){case\"i1\":case\"i8\":return y[A];case\"i16\":return h[A>>1];case\"i32\":return D[A>>2];case\"i64\":U(\"to do getValue(i64) use WASM_BIGINT\");case\"float\":return p[A>>2];case\"double\":return w[A>>3];case\"*\":return f[A>>2];default:U(`invalid type for getValue: ${I}`)}},B.UTF8ToString=x,K=function A(){l||q(),l||(K=A)},B.preInit)for(\"function\"==typeof B.preInit&&(B.preInit=[B.preInit]);B.preInit.length>0;)B.preInit.pop()();q()})).catch((function(){return C.useBackupModule()})),I}\"function\"==typeof define&&define.amd?define([\"exports\"],I):\"object\"==typeof exports&&\"string\"!=typeof exports.nodeName?I(exports):A.libsodium=I(A.libsodium_mod||(A.commonJsStrict={}))}(this);\n","!function(e){function a(e,a){\"use strict\";var r,t=\"uint8array\",_=a.ready.then((function(){function t(){if(0!==r._sodium_init())throw new Error(\"libsodium was not correctly initialized.\");for(var a=[\"crypto_aead_aegis128l_decrypt\",\"crypto_aead_aegis128l_decrypt_detached\",\"crypto_aead_aegis128l_encrypt\",\"crypto_aead_aegis128l_encrypt_detached\",\"crypto_aead_aegis128l_keygen\",\"crypto_aead_aegis256_decrypt\",\"crypto_aead_aegis256_decrypt_detached\",\"crypto_aead_aegis256_encrypt\",\"crypto_aead_aegis256_encrypt_detached\",\"crypto_aead_aegis256_keygen\",\"crypto_aead_chacha20poly1305_decrypt\",\"crypto_aead_chacha20poly1305_decrypt_detached\",\"crypto_aead_chacha20poly1305_encrypt\",\"crypto_aead_chacha20poly1305_encrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_decrypt\",\"crypto_aead_chacha20poly1305_ietf_decrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_encrypt\",\"crypto_aead_chacha20poly1305_ietf_encrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_keygen\",\"crypto_aead_chacha20poly1305_keygen\",\"crypto_aead_xchacha20poly1305_ietf_decrypt\",\"crypto_aead_xchacha20poly1305_ietf_decrypt_detached\",\"crypto_aead_xchacha20poly1305_ietf_encrypt\",\"crypto_aead_xchacha20poly1305_ietf_encrypt_detached\",\"crypto_aead_xchacha20poly1305_ietf_keygen\",\"crypto_auth\",\"crypto_auth_hmacsha256\",\"crypto_auth_hmacsha256_final\",\"crypto_auth_hmacsha256_init\",\"crypto_auth_hmacsha256_keygen\",\"crypto_auth_hmacsha256_update\",\"crypto_auth_hmacsha256_verify\",\"crypto_auth_hmacsha512\",\"crypto_auth_hmacsha512256\",\"crypto_auth_hmacsha512256_final\",\"crypto_auth_hmacsha512256_init\",\"crypto_auth_hmacsha512256_keygen\",\"crypto_auth_hmacsha512256_update\",\"crypto_auth_hmacsha512256_verify\",\"crypto_auth_hmacsha512_final\",\"crypto_auth_hmacsha512_init\",\"crypto_auth_hmacsha512_keygen\",\"crypto_auth_hmacsha512_update\",\"crypto_auth_hmacsha512_verify\",\"crypto_auth_keygen\",\"crypto_auth_verify\",\"crypto_box_beforenm\",\"crypto_box_curve25519xchacha20poly1305_beforenm\",\"crypto_box_curve25519xchacha20poly1305_detached\",\"crypto_box_curve25519xchacha20poly1305_detached_afternm\",\"crypto_box_curve25519xchacha20poly1305_easy\",\"crypto_box_curve25519xchacha20poly1305_easy_afternm\",\"crypto_box_curve25519xchacha20poly1305_keypair\",\"crypto_box_curve25519xchacha20poly1305_open_detached\",\"crypto_box_curve25519xchacha20poly1305_open_detached_afternm\",\"crypto_box_curve25519xchacha20poly1305_open_easy\",\"crypto_box_curve25519xchacha20poly1305_open_easy_afternm\",\"crypto_box_curve25519xchacha20poly1305_seal\",\"crypto_box_curve25519xchacha20poly1305_seal_open\",\"crypto_box_curve25519xchacha20poly1305_seed_keypair\",\"crypto_box_detached\",\"crypto_box_easy\",\"crypto_box_easy_afternm\",\"crypto_box_keypair\",\"crypto_box_open_detached\",\"crypto_box_open_easy\",\"crypto_box_open_easy_afternm\",\"crypto_box_seal\",\"crypto_box_seal_open\",\"crypto_box_seed_keypair\",\"crypto_core_ed25519_add\",\"crypto_core_ed25519_from_hash\",\"crypto_core_ed25519_from_uniform\",\"crypto_core_ed25519_is_valid_point\",\"crypto_core_ed25519_random\",\"crypto_core_ed25519_scalar_add\",\"crypto_core_ed25519_scalar_complement\",\"crypto_core_ed25519_scalar_invert\",\"crypto_core_ed25519_scalar_mul\",\"crypto_core_ed25519_scalar_negate\",\"crypto_core_ed25519_scalar_random\",\"crypto_core_ed25519_scalar_reduce\",\"crypto_core_ed25519_scalar_sub\",\"crypto_core_ed25519_sub\",\"crypto_core_hchacha20\",\"crypto_core_hsalsa20\",\"crypto_core_ristretto255_add\",\"crypto_core_ristretto255_from_hash\",\"crypto_core_ristretto255_is_valid_point\",\"crypto_core_ristretto255_random\",\"crypto_core_ristretto255_scalar_add\",\"crypto_core_ristretto255_scalar_complement\",\"crypto_core_ristretto255_scalar_invert\",\"crypto_core_ristretto255_scalar_mul\",\"crypto_core_ristretto255_scalar_negate\",\"crypto_core_ristretto255_scalar_random\",\"crypto_core_ristretto255_scalar_reduce\",\"crypto_core_ristretto255_scalar_sub\",\"crypto_core_ristretto255_sub\",\"crypto_generichash\",\"crypto_generichash_blake2b_salt_personal\",\"crypto_generichash_final\",\"crypto_generichash_init\",\"crypto_generichash_keygen\",\"crypto_generichash_update\",\"crypto_hash\",\"crypto_hash_sha256\",\"crypto_hash_sha256_final\",\"crypto_hash_sha256_init\",\"crypto_hash_sha256_update\",\"crypto_hash_sha512\",\"crypto_hash_sha512_final\",\"crypto_hash_sha512_init\",\"crypto_hash_sha512_update\",\"crypto_kdf_derive_from_key\",\"crypto_kdf_keygen\",\"crypto_kx_client_session_keys\",\"crypto_kx_keypair\",\"crypto_kx_seed_keypair\",\"crypto_kx_server_session_keys\",\"crypto_onetimeauth\",\"crypto_onetimeauth_final\",\"crypto_onetimeauth_init\",\"crypto_onetimeauth_keygen\",\"crypto_onetimeauth_update\",\"crypto_onetimeauth_verify\",\"crypto_pwhash\",\"crypto_pwhash_scryptsalsa208sha256\",\"crypto_pwhash_scryptsalsa208sha256_ll\",\"crypto_pwhash_scryptsalsa208sha256_str\",\"crypto_pwhash_scryptsalsa208sha256_str_verify\",\"crypto_pwhash_str\",\"crypto_pwhash_str_needs_rehash\",\"crypto_pwhash_str_verify\",\"crypto_scalarmult\",\"crypto_scalarmult_base\",\"crypto_scalarmult_ed25519\",\"crypto_scalarmult_ed25519_base\",\"crypto_scalarmult_ed25519_base_noclamp\",\"crypto_scalarmult_ed25519_noclamp\",\"crypto_scalarmult_ristretto255\",\"crypto_scalarmult_ristretto255_base\",\"crypto_secretbox_detached\",\"crypto_secretbox_easy\",\"crypto_secretbox_keygen\",\"crypto_secretbox_open_detached\",\"crypto_secretbox_open_easy\",\"crypto_secretstream_xchacha20poly1305_init_pull\",\"crypto_secretstream_xchacha20poly1305_init_push\",\"crypto_secretstream_xchacha20poly1305_keygen\",\"crypto_secretstream_xchacha20poly1305_pull\",\"crypto_secretstream_xchacha20poly1305_push\",\"crypto_secretstream_xchacha20poly1305_rekey\",\"crypto_shorthash\",\"crypto_shorthash_keygen\",\"crypto_shorthash_siphashx24\",\"crypto_sign\",\"crypto_sign_detached\",\"crypto_sign_ed25519_pk_to_curve25519\",\"crypto_sign_ed25519_sk_to_curve25519\",\"crypto_sign_ed25519_sk_to_pk\",\"crypto_sign_ed25519_sk_to_seed\",\"crypto_sign_final_create\",\"crypto_sign_final_verify\",\"crypto_sign_init\",\"crypto_sign_keypair\",\"crypto_sign_open\",\"crypto_sign_seed_keypair\",\"crypto_sign_update\",\"crypto_sign_verify_detached\",\"crypto_stream_chacha20\",\"crypto_stream_chacha20_ietf_xor\",\"crypto_stream_chacha20_ietf_xor_ic\",\"crypto_stream_chacha20_keygen\",\"crypto_stream_chacha20_xor\",\"crypto_stream_chacha20_xor_ic\",\"crypto_stream_keygen\",\"crypto_stream_xchacha20_keygen\",\"crypto_stream_xchacha20_xor\",\"crypto_stream_xchacha20_xor_ic\",\"randombytes_buf\",\"randombytes_buf_deterministic\",\"randombytes_close\",\"randombytes_random\",\"randombytes_set_implementation\",\"randombytes_stir\",\"randombytes_uniform\",\"sodium_version_string\"],t=[x,k,S,T,w,Y,B,A,M,I,K,N,L,O,U,C,P,R,X,G,D,F,V,H,W,q,j,z,J,Q,Z,$,ee,ae,re,te,_e,ne,se,ce,oe,he,pe,ye,ie,le,ue,de,ve,ge,be,fe,me,Ee,xe,ke,Se,Te,we,Ye,Be,Ae,Me,Ie,Ke,Ne,Le,Oe,Ue,Ce,Pe,Re,Xe,Ge,De,Fe,Ve,He,We,qe,je,ze,Je,Qe,Ze,$e,ea,aa,ra,ta,_a,na,sa,ca,oa,ha,pa,ya,ia,la,ua,da,va,ga,ba,fa,ma,Ea,xa,ka,Sa,Ta,wa,Ya,Ba,Aa,Ma,Ia,Ka,Na,La,Oa,Ua,Ca,Pa,Ra,Xa,Ga,Da,Fa,Va,Ha,Wa,qa,ja,za,Ja,Qa,Za,$a,er,ar,rr,tr,_r,nr,sr,cr,or,hr,pr,yr,ir,lr,ur,dr,vr,gr,br,fr,mr,Er,xr,kr,Sr,Tr,wr,Yr,Br,Ar,Mr,Ir,Kr,Nr,Lr,Or,Ur,Cr,Pr,Rr,Xr,Gr,Dr,Fr,Vr,Hr,Wr,qr],_=0;_=240?(p=4,o=!0):y>=224?(p=3,o=!0):y>=192?(p=2,o=!0):y<128&&(p=1,o=!0)}while(!o);for(var i=p-(c.length-h),l=0;l>8&-39)<<8|87+(a=e[n]>>>4)+(a-10>>8&-39),_+=String.fromCharCode(255&t)+String.fromCharCode(t>>>8);return _}var o={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function h(e){if(null==e)return o.URLSAFE_NO_PADDING;if(e!==o.ORIGINAL&&e!==o.ORIGINAL_NO_PADDING&&e!==o.URLSAFE&&e!=o.URLSAFE_NO_PADDING)throw new Error(\"unsupported base64 variant\");return e}function p(e,a){a=h(a),e=E(_,e,\"input\");var t,_=[],n=0|Math.floor(e.length/3),c=e.length-3*n,o=4*n+(0!==c?2&a?2+(c>>>1):4:0),p=new u(o+1),y=d(e);return _.push(y),_.push(p.address),0===r._sodium_bin2base64(p.address,p.length,y,e.length,a)&&b(_,\"conversion failed\"),p.length=o,t=s(p.to_Uint8Array()),g(_),t}function y(e,a){var r=a||t;if(!i(r))throw new Error(r+\" output format is not available\");if(e instanceof u){if(\"uint8array\"===r)return e.to_Uint8Array();if(\"text\"===r)return s(e.to_Uint8Array());if(\"hex\"===r)return c(e.to_Uint8Array());if(\"base64\"===r)return p(e.to_Uint8Array(),o.URLSAFE_NO_PADDING);throw new Error('What is output format \"'+r+'\"?')}if(\"object\"==typeof e){for(var _=Object.keys(e),n={},h=0;h<_.length;h++)n[_[h]]=y(e[_[h]],r);return n}if(\"string\"==typeof e)return e;throw new TypeError(\"Cannot format output\")}function i(e){for(var a=[\"uint8array\",\"text\",\"hex\",\"base64\"],r=0;r=BigInt(0)){const e=a>>BigInt(32);e>BigInt(4294967295)&&f(c,\"subkey_id cannot be more than 64 bits\"),h=Number(e),o=Number(a&BigInt(4294967295))}else\"number\"==typeof a&&(0|a)===a&&a>=0?o=a:f(c,\"subkey_id must be an unsigned integer or bigint\");\"string\"!=typeof t&&f(c,\"ctx must be a string\"),t=n(t+\"\\0\"),null!=i&&t.length-1!==i&&f(c,\"invalid ctx length\");var p=d(t),i=t.length-1;c.push(p),_=E(c,_,\"key\");var v,b=0|r._crypto_kdf_keybytes();_.length!==b&&f(c,\"invalid key length\"),v=d(_),c.push(v);var x=new u(0|e),k=x.address;c.push(k),r._crypto_kdf_derive_from_key(k,e,o,h,p,v);var S=y(x,s);return g(c),S}function Aa(e){var a=[];l(e);var t=new u(0|r._crypto_kdf_keybytes()),_=t.address;a.push(_),r._crypto_kdf_keygen(_);var n=y(t,e);return g(a),n}function Ma(e,a,t,_){var n=[];l(_),e=E(n,e,\"clientPublicKey\");var s,c=0|r._crypto_kx_publickeybytes();e.length!==c&&f(n,\"invalid clientPublicKey length\"),s=d(e),n.push(s),a=E(n,a,\"clientSecretKey\");var o,h=0|r._crypto_kx_secretkeybytes();a.length!==h&&f(n,\"invalid clientSecretKey length\"),o=d(a),n.push(o),t=E(n,t,\"serverPublicKey\");var p,i=0|r._crypto_kx_publickeybytes();t.length!==i&&f(n,\"invalid serverPublicKey length\"),p=d(t),n.push(p);var v=new u(0|r._crypto_kx_sessionkeybytes()),m=v.address;n.push(m);var x=new u(0|r._crypto_kx_sessionkeybytes()),k=x.address;if(n.push(k),!(0|r._crypto_kx_client_session_keys(m,k,s,o,p))){var S=y({sharedRx:v,sharedTx:x},_);return g(n),S}b(n,\"invalid usage\")}function Ia(e){var a=[];l(e);var t=new u(0|r._crypto_kx_publickeybytes()),_=t.address;a.push(_);var n=new u(0|r._crypto_kx_secretkeybytes()),s=n.address;if(a.push(s),!(0|r._crypto_kx_keypair(_,s))){var c={publicKey:y(t,e),privateKey:y(n,e),keyType:\"x25519\"};return g(a),c}b(a,\"internal error\")}function Ka(e,a){var t=[];l(a),e=E(t,e,\"seed\");var _,n=0|r._crypto_kx_seedbytes();e.length!==n&&f(t,\"invalid seed length\"),_=d(e),t.push(_);var s=new u(0|r._crypto_kx_publickeybytes()),c=s.address;t.push(c);var o=new u(0|r._crypto_kx_secretkeybytes()),h=o.address;if(t.push(h),!(0|r._crypto_kx_seed_keypair(c,h,_))){var p={publicKey:y(s,a),privateKey:y(o,a),keyType:\"x25519\"};return g(t),p}b(t,\"internal error\")}function Na(e,a,t,_){var n=[];l(_),e=E(n,e,\"serverPublicKey\");var s,c=0|r._crypto_kx_publickeybytes();e.length!==c&&f(n,\"invalid serverPublicKey length\"),s=d(e),n.push(s),a=E(n,a,\"serverSecretKey\");var o,h=0|r._crypto_kx_secretkeybytes();a.length!==h&&f(n,\"invalid serverSecretKey length\"),o=d(a),n.push(o),t=E(n,t,\"clientPublicKey\");var p,i=0|r._crypto_kx_publickeybytes();t.length!==i&&f(n,\"invalid clientPublicKey length\"),p=d(t),n.push(p);var v=new u(0|r._crypto_kx_sessionkeybytes()),m=v.address;n.push(m);var x=new u(0|r._crypto_kx_sessionkeybytes()),k=x.address;if(n.push(k),!(0|r._crypto_kx_server_session_keys(m,k,s,o,p))){var S=y({sharedRx:v,sharedTx:x},_);return g(n),S}b(n,\"invalid usage\")}function La(e,a,t){var _=[];l(t);var n=d(e=E(_,e,\"message\")),s=e.length;_.push(n),a=E(_,a,\"key\");var c,o=0|r._crypto_onetimeauth_keybytes();a.length!==o&&f(_,\"invalid key length\"),c=d(a),_.push(c);var h=new u(0|r._crypto_onetimeauth_bytes()),p=h.address;if(_.push(p),!(0|r._crypto_onetimeauth(p,n,s,0,c))){var i=y(h,t);return g(_),i}b(_,\"invalid usage\")}function Oa(e,a){var t=[];l(a),m(t,e,\"state_address\");var _=new u(0|r._crypto_onetimeauth_bytes()),n=_.address;if(t.push(n),!(0|r._crypto_onetimeauth_final(e,n))){var s=(r._free(e),y(_,a));return g(t),s}b(t,\"invalid usage\")}function Ua(e,a){var t=[];l(a);var _=null;null!=e&&(_=d(e=E(t,e,\"key\")),e.length,t.push(_));var n=new u(144).address;if(!(0|r._crypto_onetimeauth_init(n,_))){var s=n;return g(t),s}b(t,\"invalid usage\")}function Ca(e){var a=[];l(e);var t=new u(0|r._crypto_onetimeauth_keybytes()),_=t.address;a.push(_),r._crypto_onetimeauth_keygen(_);var n=y(t,e);return g(a),n}function Pa(e,a,t){var _=[];l(t),m(_,e,\"state_address\");var n=d(a=E(_,a,\"message_chunk\")),s=a.length;_.push(n),0|r._crypto_onetimeauth_update(e,n,s)&&b(_,\"invalid usage\"),g(_)}function Ra(e,a,t){var _=[];e=E(_,e,\"hash\");var n,s=0|r._crypto_onetimeauth_bytes();e.length!==s&&f(_,\"invalid hash length\"),n=d(e),_.push(n);var c=d(a=E(_,a,\"message\")),o=a.length;_.push(c),t=E(_,t,\"key\");var h,p=0|r._crypto_onetimeauth_keybytes();t.length!==p&&f(_,\"invalid key length\"),h=d(t),_.push(h);var y=!(0|r._crypto_onetimeauth_verify(n,c,o,0,h));return g(_),y}function Xa(e,a,t,_,n,s,c){var o=[];l(c),m(o,e,\"keyLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&f(o,\"keyLength must be an unsigned integer\");var h=d(a=E(o,a,\"password\")),p=a.length;o.push(h),t=E(o,t,\"salt\");var i,v=0|r._crypto_pwhash_saltbytes();t.length!==v&&f(o,\"invalid salt length\"),i=d(t),o.push(i),m(o,_,\"opsLimit\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&f(o,\"opsLimit must be an unsigned integer\"),m(o,n,\"memLimit\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&f(o,\"memLimit must be an unsigned integer\"),m(o,s,\"algorithm\"),(\"number\"!=typeof s||(0|s)!==s||s<0)&&f(o,\"algorithm must be an unsigned integer\");var x=new u(0|e),k=x.address;if(o.push(k),!(0|r._crypto_pwhash(k,e,0,h,p,0,i,_,0,n,s))){var S=y(x,c);return g(o),S}b(o,\"invalid usage\")}function Ga(e,a,t,_,n,s){var c=[];l(s),m(c,e,\"keyLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&f(c,\"keyLength must be an unsigned integer\");var o=d(a=E(c,a,\"password\")),h=a.length;c.push(o),t=E(c,t,\"salt\");var p,i=0|r._crypto_pwhash_scryptsalsa208sha256_saltbytes();t.length!==i&&f(c,\"invalid salt length\"),p=d(t),c.push(p),m(c,_,\"opsLimit\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&f(c,\"opsLimit must be an unsigned integer\"),m(c,n,\"memLimit\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&f(c,\"memLimit must be an unsigned integer\");var v=new u(0|e),x=v.address;if(c.push(x),!(0|r._crypto_pwhash_scryptsalsa208sha256(x,e,0,o,h,0,p,_,0,n))){var k=y(v,s);return g(c),k}b(c,\"invalid usage\")}function Da(e,a,t,_,n,s,c){var o=[];l(c);var h=d(e=E(o,e,\"password\")),p=e.length;o.push(h);var i=d(a=E(o,a,\"salt\")),v=a.length;o.push(i),m(o,t,\"opsLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&f(o,\"opsLimit must be an unsigned integer\"),m(o,_,\"r\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&f(o,\"r must be an unsigned integer\"),m(o,n,\"p\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&f(o,\"p must be an unsigned integer\"),m(o,s,\"keyLength\"),(\"number\"!=typeof s||(0|s)!==s||s<0)&&f(o,\"keyLength must be an unsigned integer\");var x=new u(0|s),k=x.address;if(o.push(k),!(0|r._crypto_pwhash_scryptsalsa208sha256_ll(h,p,i,v,t,0,_,n,k,s))){var S=y(x,c);return g(o),S}b(o,\"invalid usage\")}function Fa(e,a,t,_){var n=[];l(_);var s=d(e=E(n,e,\"password\")),c=e.length;n.push(s),m(n,a,\"opsLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&f(n,\"opsLimit must be an unsigned integer\"),m(n,t,\"memLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&f(n,\"memLimit must be an unsigned integer\");var o=new u(0|r._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(n.push(o),!(0|r._crypto_pwhash_scryptsalsa208sha256_str(o,s,c,0,a,0,t))){var h=r.UTF8ToString(o);return g(n),h}b(n,\"invalid usage\")}function Va(e,a,t){var _=[];l(t),\"string\"!=typeof e&&f(_,\"hashed_password must be a string\"),e=n(e+\"\\0\"),null!=c&&e.length-1!==c&&f(_,\"invalid hashed_password length\");var s=d(e),c=e.length-1;_.push(s);var o=d(a=E(_,a,\"password\")),h=a.length;_.push(o);var p=!(0|r._crypto_pwhash_scryptsalsa208sha256_str_verify(s,o,h,0));return g(_),p}function Ha(e,a,t,_){var n=[];l(_);var s=d(e=E(n,e,\"password\")),c=e.length;n.push(s),m(n,a,\"opsLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&f(n,\"opsLimit must be an unsigned integer\"),m(n,t,\"memLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&f(n,\"memLimit must be an unsigned integer\");var o=new u(0|r._crypto_pwhash_strbytes()).address;if(n.push(o),!(0|r._crypto_pwhash_str(o,s,c,0,a,0,t))){var h=r.UTF8ToString(o);return g(n),h}b(n,\"invalid usage\")}function Wa(e,a,t,_){var s=[];l(_),\"string\"!=typeof e&&f(s,\"hashed_password must be a string\"),e=n(e+\"\\0\"),null!=o&&e.length-1!==o&&f(s,\"invalid hashed_password length\");var c=d(e),o=e.length-1;s.push(c),m(s,a,\"opsLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&f(s,\"opsLimit must be an unsigned integer\"),m(s,t,\"memLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&f(s,\"memLimit must be an unsigned integer\");var h=!!(0|r._crypto_pwhash_str_needs_rehash(c,a,0,t));return g(s),h}function qa(e,a,t){var _=[];l(t),\"string\"!=typeof e&&f(_,\"hashed_password must be a string\"),e=n(e+\"\\0\"),null!=c&&e.length-1!==c&&f(_,\"invalid hashed_password length\");var s=d(e),c=e.length-1;_.push(s);var o=d(a=E(_,a,\"password\")),h=a.length;_.push(o);var p=!(0|r._crypto_pwhash_str_verify(s,o,h,0));return g(_),p}function ja(e,a,t){var _=[];l(t),e=E(_,e,\"privateKey\");var n,s=0|r._crypto_scalarmult_scalarbytes();e.length!==s&&f(_,\"invalid privateKey length\"),n=d(e),_.push(n),a=E(_,a,\"publicKey\");var c,o=0|r._crypto_scalarmult_bytes();a.length!==o&&f(_,\"invalid publicKey length\"),c=d(a),_.push(c);var h=new u(0|r._crypto_scalarmult_bytes()),p=h.address;if(_.push(p),!(0|r._crypto_scalarmult(p,n,c))){var i=y(h,t);return g(_),i}b(_,\"weak public key\")}function za(e,a){var t=[];l(a),e=E(t,e,\"privateKey\");var _,n=0|r._crypto_scalarmult_scalarbytes();e.length!==n&&f(t,\"invalid privateKey length\"),_=d(e),t.push(_);var s=new u(0|r._crypto_scalarmult_bytes()),c=s.address;if(t.push(c),!(0|r._crypto_scalarmult_base(c,_))){var o=y(s,a);return g(t),o}b(t,\"unknown error\")}function Ja(e,a,t){var _=[];l(t),e=E(_,e,\"n\");var n,s=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==s&&f(_,\"invalid n length\"),n=d(e),_.push(n),a=E(_,a,\"p\");var c,o=0|r._crypto_scalarmult_ed25519_bytes();a.length!==o&&f(_,\"invalid p length\"),c=d(a),_.push(c);var h=new u(0|r._crypto_scalarmult_ed25519_bytes()),p=h.address;if(_.push(p),!(0|r._crypto_scalarmult_ed25519(p,n,c))){var i=y(h,t);return g(_),i}b(_,\"invalid point or scalar is 0\")}function Qa(e,a){var t=[];l(a),e=E(t,e,\"scalar\");var _,n=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==n&&f(t,\"invalid scalar length\"),_=d(e),t.push(_);var s=new u(0|r._crypto_scalarmult_ed25519_bytes()),c=s.address;if(t.push(c),!(0|r._crypto_scalarmult_ed25519_base(c,_))){var o=y(s,a);return g(t),o}b(t,\"scalar is 0\")}function Za(e,a){var t=[];l(a),e=E(t,e,\"scalar\");var _,n=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==n&&f(t,\"invalid scalar length\"),_=d(e),t.push(_);var s=new u(0|r._crypto_scalarmult_ed25519_bytes()),c=s.address;if(t.push(c),!(0|r._crypto_scalarmult_ed25519_base_noclamp(c,_))){var o=y(s,a);return g(t),o}b(t,\"scalar is 0\")}function $a(e,a,t){var _=[];l(t),e=E(_,e,\"n\");var n,s=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==s&&f(_,\"invalid n length\"),n=d(e),_.push(n),a=E(_,a,\"p\");var c,o=0|r._crypto_scalarmult_ed25519_bytes();a.length!==o&&f(_,\"invalid p length\"),c=d(a),_.push(c);var h=new u(0|r._crypto_scalarmult_ed25519_bytes()),p=h.address;if(_.push(p),!(0|r._crypto_scalarmult_ed25519_noclamp(p,n,c))){var i=y(h,t);return g(_),i}b(_,\"invalid point or scalar is 0\")}function er(e,a,t){var _=[];l(t),e=E(_,e,\"scalar\");var n,s=0|r._crypto_scalarmult_ristretto255_scalarbytes();e.length!==s&&f(_,\"invalid scalar length\"),n=d(e),_.push(n),a=E(_,a,\"element\");var c,o=0|r._crypto_scalarmult_ristretto255_bytes();a.length!==o&&f(_,\"invalid element length\"),c=d(a),_.push(c);var h=new u(0|r._crypto_scalarmult_ristretto255_bytes()),p=h.address;if(_.push(p),!(0|r._crypto_scalarmult_ristretto255(p,n,c))){var i=y(h,t);return g(_),i}b(_,\"result is identity element\")}function ar(e,a){var t=[];l(a),e=E(t,e,\"scalar\");var _,n=0|r._crypto_core_ristretto255_scalarbytes();e.length!==n&&f(t,\"invalid scalar length\"),_=d(e),t.push(_);var s=new u(0|r._crypto_core_ristretto255_bytes()),c=s.address;if(t.push(c),!(0|r._crypto_scalarmult_ristretto255_base(c,_))){var o=y(s,a);return g(t),o}b(t,\"scalar is 0\")}function rr(e,a,t,_){var n=[];l(_);var s=d(e=E(n,e,\"message\")),c=e.length;n.push(s),a=E(n,a,\"nonce\");var o,h=0|r._crypto_secretbox_noncebytes();a.length!==h&&f(n,\"invalid nonce length\"),o=d(a),n.push(o),t=E(n,t,\"key\");var p,i=0|r._crypto_secretbox_keybytes();t.length!==i&&f(n,\"invalid key length\"),p=d(t),n.push(p);var v=new u(0|c),m=v.address;n.push(m);var x=new u(0|r._crypto_secretbox_macbytes()),k=x.address;if(n.push(k),!(0|r._crypto_secretbox_detached(m,k,s,c,0,o,p))){var S=y({mac:x,cipher:v},_);return g(n),S}b(n,\"invalid usage\")}function tr(e,a,t,_){var n=[];l(_);var s=d(e=E(n,e,\"message\")),c=e.length;n.push(s),a=E(n,a,\"nonce\");var o,h=0|r._crypto_secretbox_noncebytes();a.length!==h&&f(n,\"invalid nonce length\"),o=d(a),n.push(o),t=E(n,t,\"key\");var p,i=0|r._crypto_secretbox_keybytes();t.length!==i&&f(n,\"invalid key length\"),p=d(t),n.push(p);var v=new u(c+r._crypto_secretbox_macbytes()|0),m=v.address;if(n.push(m),!(0|r._crypto_secretbox_easy(m,s,c,0,o,p))){var x=y(v,_);return g(n),x}b(n,\"invalid usage\")}function _r(e){var a=[];l(e);var t=new u(0|r._crypto_secretbox_keybytes()),_=t.address;a.push(_),r._crypto_secretbox_keygen(_);var n=y(t,e);return g(a),n}function nr(e,a,t,_,n){var s=[];l(n);var c=d(e=E(s,e,\"ciphertext\")),o=e.length;s.push(c),a=E(s,a,\"mac\");var h,p=0|r._crypto_secretbox_macbytes();a.length!==p&&f(s,\"invalid mac length\"),h=d(a),s.push(h),t=E(s,t,\"nonce\");var i,v=0|r._crypto_secretbox_noncebytes();t.length!==v&&f(s,\"invalid nonce length\"),i=d(t),s.push(i),_=E(s,_,\"key\");var m,x=0|r._crypto_secretbox_keybytes();_.length!==x&&f(s,\"invalid key length\"),m=d(_),s.push(m);var k=new u(0|o),S=k.address;if(s.push(S),!(0|r._crypto_secretbox_open_detached(S,c,h,o,0,i,m))){var T=y(k,n);return g(s),T}b(s,\"wrong secret key for the given ciphertext\")}function sr(e,a,t,_){var n=[];l(_),e=E(n,e,\"ciphertext\");var s,c=r._crypto_secretbox_macbytes(),o=e.length;o>>0;return g([]),a}function Vr(e,a){var t=[];l(a);for(var _=r._malloc(24),n=0;n<6;n++)r.setValue(_+4*n,r.Runtime.addFunction(e[[\"implementation_name\",\"random\",\"stir\",\"uniform\",\"buf\",\"close\"][n]]),\"i32\");0|r._randombytes_set_implementation(_)&&b(t,\"unsupported implementation\"),g(t)}function Hr(e){l(e),r._randombytes_stir()}function Wr(e,a){var t=[];l(a),m(t,e,\"upper_bound\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&f(t,\"upper_bound must be an unsigned integer\");var _=r._randombytes_uniform(e)>>>0;return g(t),_}function qr(){var e=r._sodium_version_string(),a=r.UTF8ToString(e);return g([]),a}return u.prototype.to_Uint8Array=function(){var e=new Uint8Array(this.length);return e.set(r.HEAPU8.subarray(this.address,this.address+this.length)),e},e.add=function(e,a){if(!(e instanceof Uint8Array&&a instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can added\");var r=e.length,t=0,_=0;if(a.length!=e.length)throw new TypeError(\"Arguments must have the same length\");for(_=0;_>=8,t+=e[_]+a[_],e[_]=255&t},e.base64_variants=o,e.compare=function(e,a){if(!(e instanceof Uint8Array&&a instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be compared\");if(e.length!==a.length)throw new TypeError(\"Only instances of identical length can be compared\");for(var r=0,t=1,_=e.length;_-- >0;)r|=a[_]-e[_]>>8&t,t&=(a[_]^e[_])-1>>8;return r+r+t-1},e.from_base64=function(e,a){a=h(a);var t,_=[],n=new u(3*(e=E(_,e,\"input\")).length/4),s=d(e),c=v(4),o=v(4);return _.push(s),_.push(n.address),_.push(n.result_bin_len_p),_.push(n.b64_end_p),0!==r._sodium_base642bin(n.address,n.length,s,e.length,0,c,o,a)&&b(_,\"invalid input\"),r.getValue(o,\"i32\")-s!==e.length&&b(_,\"incomplete input\"),n.length=r.getValue(c,\"i32\"),t=n.to_Uint8Array(),g(_),t},e.from_hex=function(e){var a,t=[],_=new u((e=E(t,e,\"input\")).length/2),n=d(e),s=v(4);return t.push(n),t.push(_.address),t.push(_.hex_end_p),0!==r._sodium_hex2bin(_.address,_.length,n,e.length,0,0,s)&&b(t,\"invalid input\"),r.getValue(s,\"i32\")-n!==e.length&&b(t,\"incomplete input\"),a=_.to_Uint8Array(),g(t),a},e.from_string=n,e.increment=function(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be incremented\");for(var a=256,r=0,t=e.length;r>=8,a+=e[r],e[r]=255&a},e.is_zero=function(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be checked\");for(var a=0,r=0,t=e.length;r 0\");var t,_=[],n=v(4),s=1,c=0,o=0|e.length,h=new u(o+a);_.push(n),_.push(h.address);for(var p=h.address,y=h.address+o+a;p>>48|o>>>32|o>>>16|o))-1>>16);return 0!==r._sodium_pad(n,h.address,e.length,a,h.length)&&b(_,\"internal error\"),h.length=r.getValue(n,\"i32\"),t=h.to_Uint8Array(),g(_),t},e.unpad=function(e,a){if(!(e instanceof Uint8Array))throw new TypeError(\"buffer must be a Uint8Array\");if((a|=0)<=0)throw new Error(\"block size must be > 0\");var t=[],_=d(e),n=v(4);return t.push(_),t.push(n),0!==r._sodium_unpad(n,_,e.length,a)&&b(t,\"unsupported/invalid padding\"),e=(e=new Uint8Array(e)).subarray(0,r.getValue(n,\"i32\")),g(t),e},e.ready=_,e.symbols=function(){return Object.keys(e).sort()},e.to_base64=p,e.to_hex=c,e.to_string=s,e}var r=\"object\"==typeof e.sodium&&\"function\"==typeof e.sodium.onload?e.sodium.onload:null;\"function\"==typeof define&&define.amd?define([\"exports\",\"libsodium-sumo\"],a):\"object\"==typeof exports&&\"string\"!=typeof exports.nodeName?a(exports,require(\"libsodium-sumo\")):e.sodium=a(e.commonJsStrict={},e.libsodium),r&&e.sodium.ready.then((function(){r(e.sodium)}))}(this);\n","var decoder\ntry {\n\tdecoder = new TextDecoder()\n} catch(error) {}\nvar src\nvar srcEnd\nvar position = 0\nvar alreadySet\nconst EMPTY_ARRAY = []\nvar strings = EMPTY_ARRAY\nvar stringPosition = 0\nvar currentUnpackr = {}\nvar currentStructures\nvar srcString\nvar srcStringStart = 0\nvar srcStringEnd = 0\nvar bundledStrings\nvar referenceMap\nvar currentExtensions = []\nvar dataView\nvar defaultOptions = {\n\tuseRecords: false,\n\tmapsAsObjects: true\n}\nexport class C1Type {}\nexport const C1 = new C1Type()\nC1.name = 'MessagePack 0xC1'\nvar sequentialMode = false\nvar inlineObjectReadThreshold = 2\nvar readStruct, onLoadedStructures, onSaveState\nvar BlockedFunction // we use search and replace to change the next call to BlockedFunction to avoid CSP issues for\n// no-eval build\ntry {\n\tnew Function('')\n} catch(error) {\n\t// if eval variants are not supported, do not create inline object readers ever\n\tinlineObjectReadThreshold = Infinity\n}\n\nexport class Unpackr {\n\tconstructor(options) {\n\t\tif (options) {\n\t\t\tif (options.useRecords === false && options.mapsAsObjects === undefined)\n\t\t\t\toptions.mapsAsObjects = true\n\t\t\tif (options.sequential && options.trusted !== false) {\n\t\t\t\toptions.trusted = true;\n\t\t\t\tif (!options.structures && options.useRecords != false) {\n\t\t\t\t\toptions.structures = []\n\t\t\t\t\tif (!options.maxSharedStructures)\n\t\t\t\t\t\toptions.maxSharedStructures = 0\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.structures)\n\t\t\t\toptions.structures.sharedLength = options.structures.length\n\t\t\telse if (options.getStructures) {\n\t\t\t\t(options.structures = []).uninitialized = true // this is what we use to denote an uninitialized structures\n\t\t\t\toptions.structures.sharedLength = 0\n\t\t\t}\n\t\t\tif (options.int64AsNumber) {\n\t\t\t\toptions.int64AsType = 'number'\n\t\t\t}\n\t\t}\n\t\tObject.assign(this, options)\n\t}\n\tunpack(source, options) {\n\t\tif (src) {\n\t\t\t// re-entrant execution, save the state and restore it after we do this unpack\n\t\t\treturn saveState(() => {\n\t\t\t\tclearSource()\n\t\t\t\treturn this ? this.unpack(source, options) : Unpackr.prototype.unpack.call(defaultOptions, source, options)\n\t\t\t})\n\t\t}\n\t\tif (!source.buffer && source.constructor === ArrayBuffer)\n\t\t\tsource = typeof Buffer !== 'undefined' ? Buffer.from(source) : new Uint8Array(source);\n\t\tif (typeof options === 'object') {\n\t\t\tsrcEnd = options.end || source.length\n\t\t\tposition = options.start || 0\n\t\t} else {\n\t\t\tposition = 0\n\t\t\tsrcEnd = options > -1 ? options : source.length\n\t\t}\n\t\tstringPosition = 0\n\t\tsrcStringEnd = 0\n\t\tsrcString = null\n\t\tstrings = EMPTY_ARRAY\n\t\tbundledStrings = null\n\t\tsrc = source\n\t\t// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend\n\t\t// technique for getting data from a database where it can be copied into an existing buffer instead of creating\n\t\t// new ones\n\t\ttry {\n\t\t\tdataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength))\n\t\t} catch(error) {\n\t\t\t// if it doesn't have a buffer, maybe it is the wrong type of object\n\t\t\tsrc = null\n\t\t\tif (source instanceof Uint8Array)\n\t\t\t\tthrow error\n\t\t\tthrow new Error('Source must be a Uint8Array or Buffer but was a ' + ((source && typeof source == 'object') ? source.constructor.name : typeof source))\n\t\t}\n\t\tif (this instanceof Unpackr) {\n\t\t\tcurrentUnpackr = this\n\t\t\tif (this.structures) {\n\t\t\t\tcurrentStructures = this.structures\n\t\t\t\treturn checkedRead(options)\n\t\t\t} else if (!currentStructures || currentStructures.length > 0) {\n\t\t\t\tcurrentStructures = []\n\t\t\t}\n\t\t} else {\n\t\t\tcurrentUnpackr = defaultOptions\n\t\t\tif (!currentStructures || currentStructures.length > 0)\n\t\t\t\tcurrentStructures = []\n\t\t}\n\t\treturn checkedRead(options)\n\t}\n\tunpackMultiple(source, forEach) {\n\t\tlet values, lastPosition = 0\n\t\ttry {\n\t\t\tsequentialMode = true\n\t\t\tlet size = source.length\n\t\t\tlet value = this ? this.unpack(source, size) : defaultUnpackr.unpack(source, size)\n\t\t\tif (forEach) {\n\t\t\t\tif (forEach(value, lastPosition, position) === false) return;\n\t\t\t\twhile(position < size) {\n\t\t\t\t\tlastPosition = position\n\t\t\t\t\tif (forEach(checkedRead(), lastPosition, position) === false) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvalues = [ value ]\n\t\t\t\twhile(position < size) {\n\t\t\t\t\tlastPosition = position\n\t\t\t\t\tvalues.push(checkedRead())\n\t\t\t\t}\n\t\t\t\treturn values\n\t\t\t}\n\t\t} catch(error) {\n\t\t\terror.lastPosition = lastPosition\n\t\t\terror.values = values\n\t\t\tthrow error\n\t\t} finally {\n\t\t\tsequentialMode = false\n\t\t\tclearSource()\n\t\t}\n\t}\n\t_mergeStructures(loadedStructures, existingStructures) {\n\t\tif (onLoadedStructures)\n\t\t\tloadedStructures = onLoadedStructures.call(this, loadedStructures);\n\t\tloadedStructures = loadedStructures || []\n\t\tif (Object.isFrozen(loadedStructures))\n\t\t\tloadedStructures = loadedStructures.map(structure => structure.slice(0))\n\t\tfor (let i = 0, l = loadedStructures.length; i < l; i++) {\n\t\t\tlet structure = loadedStructures[i]\n\t\t\tif (structure) {\n\t\t\t\tstructure.isShared = true\n\t\t\t\tif (i >= 32)\n\t\t\t\t\tstructure.highByte = (i - 32) >> 5\n\t\t\t}\n\t\t}\n\t\tloadedStructures.sharedLength = loadedStructures.length\n\t\tfor (let id in existingStructures || []) {\n\t\t\tif (id >= 0) {\n\t\t\t\tlet structure = loadedStructures[id]\n\t\t\t\tlet existing = existingStructures[id]\n\t\t\t\tif (existing) {\n\t\t\t\t\tif (structure)\n\t\t\t\t\t\t(loadedStructures.restoreStructures || (loadedStructures.restoreStructures = []))[id] = structure\n\t\t\t\t\tloadedStructures[id] = existing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.structures = loadedStructures\n\t}\n\tdecode(source, options) {\n\t\treturn this.unpack(source, options)\n\t}\n}\nexport function getPosition() {\n\treturn position\n}\nexport function checkedRead(options) {\n\ttry {\n\t\tif (!currentUnpackr.trusted && !sequentialMode) {\n\t\t\tlet sharedLength = currentStructures.sharedLength || 0\n\t\t\tif (sharedLength < currentStructures.length)\n\t\t\t\tcurrentStructures.length = sharedLength\n\t\t}\n\t\tlet result\n\t\tif (currentUnpackr.randomAccessStructure && src[position] < 0x40 && src[position] >= 0x20 && readStruct) {\n\t\t\tresult = readStruct(src, position, srcEnd, currentUnpackr)\n\t\t\tsrc = null // dispose of this so that recursive unpack calls don't save state\n\t\t\tif (!(options && options.lazy) && result)\n\t\t\t\tresult = result.toJSON()\n\t\t\tposition = srcEnd\n\t\t} else\n\t\t\tresult = read()\n\t\tif (bundledStrings) { // bundled strings to skip past\n\t\t\tposition = bundledStrings.postBundlePosition\n\t\t\tbundledStrings = null\n\t\t}\n\t\tif (sequentialMode)\n\t\t\t// we only need to restore the structures if there was an error, but if we completed a read,\n\t\t\t// we can clear this out and keep the structures we read\n\t\t\tcurrentStructures.restoreStructures = null\n\n\t\tif (position == srcEnd) {\n\t\t\t// finished reading this source, cleanup references\n\t\t\tif (currentStructures && currentStructures.restoreStructures)\n\t\t\t\trestoreStructures()\n\t\t\tcurrentStructures = null\n\t\t\tsrc = null\n\t\t\tif (referenceMap)\n\t\t\t\treferenceMap = null\n\t\t} else if (position > srcEnd) {\n\t\t\t// over read\n\t\t\tthrow new Error('Unexpected end of MessagePack data')\n\t\t} else if (!sequentialMode) {\n\t\t\tlet jsonView;\n\t\t\ttry {\n\t\t\t\tjsonView = JSON.stringify(result, (_, value) => typeof value === \"bigint\" ? `${value}n` : value).slice(0, 100)\n\t\t\t} catch(error) {\n\t\t\t\tjsonView = '(JSON view not available ' + error + ')'\n\t\t\t}\n\t\t\tthrow new Error('Data read, but end of buffer not reached ' + jsonView)\n\t\t}\n\t\t// else more to read, but we are reading sequentially, so don't clear source yet\n\t\treturn result\n\t} catch(error) {\n\t\tif (currentStructures && currentStructures.restoreStructures)\n\t\t\trestoreStructures()\n\t\tclearSource()\n\t\tif (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer') || position > srcEnd) {\n\t\t\terror.incomplete = true\n\t\t}\n\t\tthrow error\n\t}\n}\n\nfunction restoreStructures() {\n\tfor (let id in currentStructures.restoreStructures) {\n\t\tcurrentStructures[id] = currentStructures.restoreStructures[id]\n\t}\n\tcurrentStructures.restoreStructures = null\n}\n\nexport function read() {\n\tlet token = src[position++]\n\tif (token < 0xa0) {\n\t\tif (token < 0x80) {\n\t\t\tif (token < 0x40)\n\t\t\t\treturn token\n\t\t\telse {\n\t\t\t\tlet structure = currentStructures[token & 0x3f] ||\n\t\t\t\t\tcurrentUnpackr.getStructures && loadStructures()[token & 0x3f]\n\t\t\t\tif (structure) {\n\t\t\t\t\tif (!structure.read) {\n\t\t\t\t\t\tstructure.read = createStructureReader(structure, token & 0x3f)\n\t\t\t\t\t}\n\t\t\t\t\treturn structure.read()\n\t\t\t\t} else\n\t\t\t\t\treturn token\n\t\t\t}\n\t\t} else if (token < 0x90) {\n\t\t\t// map\n\t\t\ttoken -= 0x80\n\t\t\tif (currentUnpackr.mapsAsObjects) {\n\t\t\t\tlet object = {}\n\t\t\t\tfor (let i = 0; i < token; i++) {\n\t\t\t\t\tlet key = readKey()\n\t\t\t\t\tif (key === '__proto__')\n\t\t\t\t\t\tkey = '__proto_'\n\t\t\t\t\tobject[key] = read()\n\t\t\t\t}\n\t\t\t\treturn object\n\t\t\t} else {\n\t\t\t\tlet map = new Map()\n\t\t\t\tfor (let i = 0; i < token; i++) {\n\t\t\t\t\tmap.set(read(), read())\n\t\t\t\t}\n\t\t\t\treturn map\n\t\t\t}\n\t\t} else {\n\t\t\ttoken -= 0x90\n\t\t\tlet array = new Array(token)\n\t\t\tfor (let i = 0; i < token; i++) {\n\t\t\t\tarray[i] = read()\n\t\t\t}\n\t\t\tif (currentUnpackr.freezeData)\n\t\t\t\treturn Object.freeze(array)\n\t\t\treturn array\n\t\t}\n\t} else if (token < 0xc0) {\n\t\t// fixstr\n\t\tlet length = token - 0xa0\n\t\tif (srcStringEnd >= position) {\n\t\t\treturn srcString.slice(position - srcStringStart, (position += length) - srcStringStart)\n\t\t}\n\t\tif (srcStringEnd == 0 && srcEnd < 140) {\n\t\t\t// for small blocks, avoiding the overhead of the extract call is helpful\n\t\t\tlet string = length < 16 ? shortStringInJS(length) : longStringInJS(length)\n\t\t\tif (string != null)\n\t\t\t\treturn string\n\t\t}\n\t\treturn readFixedString(length)\n\t} else {\n\t\tlet value\n\t\tswitch (token) {\n\t\t\tcase 0xc0: return null\n\t\t\tcase 0xc1:\n\t\t\t\tif (bundledStrings) {\n\t\t\t\t\tvalue = read() // followed by the length of the string in characters (not bytes!)\n\t\t\t\t\tif (value > 0)\n\t\t\t\t\t\treturn bundledStrings[1].slice(bundledStrings.position1, bundledStrings.position1 += value)\n\t\t\t\t\telse\n\t\t\t\t\t\treturn bundledStrings[0].slice(bundledStrings.position0, bundledStrings.position0 -= value)\n\t\t\t\t}\n\t\t\t\treturn C1; // \"never-used\", return special object to denote that\n\t\t\tcase 0xc2: return false\n\t\t\tcase 0xc3: return true\n\t\t\tcase 0xc4:\n\t\t\t\t// bin 8\n\t\t\t\tvalue = src[position++]\n\t\t\t\tif (value === undefined)\n\t\t\t\t\tthrow new Error('Unexpected end of buffer')\n\t\t\t\treturn readBin(value)\n\t\t\tcase 0xc5:\n\t\t\t\t// bin 16\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\treturn readBin(value)\n\t\t\tcase 0xc6:\n\t\t\t\t// bin 32\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\treturn readBin(value)\n\t\t\tcase 0xc7:\n\t\t\t\t// ext 8\n\t\t\t\treturn readExt(src[position++])\n\t\t\tcase 0xc8:\n\t\t\t\t// ext 16\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\treturn readExt(value)\n\t\t\tcase 0xc9:\n\t\t\t\t// ext 32\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\treturn readExt(value)\n\t\t\tcase 0xca:\n\t\t\t\tvalue = dataView.getFloat32(position)\n\t\t\t\tif (currentUnpackr.useFloat32 > 2) {\n\t\t\t\t\t// this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n\t\t\t\t\tlet multiplier = mult10[((src[position] & 0x7f) << 1) | (src[position + 1] >> 7)]\n\t\t\t\t\tposition += 4\n\t\t\t\t\treturn ((multiplier * value + (value > 0 ? 0.5 : -0.5)) >> 0) / multiplier\n\t\t\t\t}\n\t\t\t\tposition += 4\n\t\t\t\treturn value\n\t\t\tcase 0xcb:\n\t\t\t\tvalue = dataView.getFloat64(position)\n\t\t\t\tposition += 8\n\t\t\t\treturn value\n\t\t\t// uint handlers\n\t\t\tcase 0xcc:\n\t\t\t\treturn src[position++]\n\t\t\tcase 0xcd:\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\treturn value\n\t\t\tcase 0xce:\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\treturn value\n\t\t\tcase 0xcf:\n\t\t\t\tif (currentUnpackr.int64AsType === 'number') {\n\t\t\t\t\tvalue = dataView.getUint32(position) * 0x100000000\n\t\t\t\t\tvalue += dataView.getUint32(position + 4)\n\t\t\t\t} else if (currentUnpackr.int64AsType === 'string') {\n\t\t\t\t\tvalue = dataView.getBigUint64(position).toString()\n\t\t\t\t} else if (currentUnpackr.int64AsType === 'auto') {\n\t\t\t\t\tvalue = dataView.getBigUint64(position)\n\t\t\t\t\tif (value<=BigInt(2)<=BigInt(-2)<= position) {\n\t\t\t\t\treturn srcString.slice(position - srcStringStart, (position += value) - srcStringStart)\n\t\t\t\t}\n\t\t\t\treturn readString8(value)\n\t\t\tcase 0xda:\n\t\t\t// str 16\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\tif (srcStringEnd >= position) {\n\t\t\t\t\treturn srcString.slice(position - srcStringStart, (position += value) - srcStringStart)\n\t\t\t\t}\n\t\t\t\treturn readString16(value)\n\t\t\tcase 0xdb:\n\t\t\t// str 32\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\tif (srcStringEnd >= position) {\n\t\t\t\t\treturn srcString.slice(position - srcStringStart, (position += value) - srcStringStart)\n\t\t\t\t}\n\t\t\t\treturn readString32(value)\n\t\t\tcase 0xdc:\n\t\t\t// array 16\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\treturn readArray(value)\n\t\t\tcase 0xdd:\n\t\t\t// array 32\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\treturn readArray(value)\n\t\t\tcase 0xde:\n\t\t\t// map 16\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\treturn readMap(value)\n\t\t\tcase 0xdf:\n\t\t\t// map 32\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\treturn readMap(value)\n\t\t\tdefault: // negative int\n\t\t\t\tif (token >= 0xe0)\n\t\t\t\t\treturn token - 0x100\n\t\t\t\tif (token === undefined) {\n\t\t\t\t\tlet error = new Error('Unexpected end of MessagePack data')\n\t\t\t\t\terror.incomplete = true\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t\tthrow new Error('Unknown MessagePack token ' + token)\n\n\t\t}\n\t}\n}\nconst validName = /^[a-zA-Z_$][a-zA-Z\\d_$]*$/\nfunction createStructureReader(structure, firstId) {\n\tfunction readObject() {\n\t\t// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function\n\t\tif (readObject.count++ > inlineObjectReadThreshold) {\n\t\t\tlet readObject = structure.read = (new Function('r', 'return function(){return ' + (currentUnpackr.freezeData ? 'Object.freeze' : '') +\n\t\t\t\t'({' + structure.map(key => key === '__proto__' ? '__proto_:r()' : validName.test(key) ? key + ':r()' : ('[' + JSON.stringify(key) + ']:r()')).join(',') + '})}'))(read)\n\t\t\tif (structure.highByte === 0)\n\t\t\t\tstructure.read = createSecondByteReader(firstId, structure.read)\n\t\t\treturn readObject() // second byte is already read, if there is one so immediately read object\n\t\t}\n\t\tlet object = {}\n\t\tfor (let i = 0, l = structure.length; i < l; i++) {\n\t\t\tlet key = structure[i]\n\t\t\tif (key === '__proto__')\n\t\t\t\tkey = '__proto_'\n\t\t\tobject[key] = read()\n\t\t}\n\t\tif (currentUnpackr.freezeData)\n\t\t\treturn Object.freeze(object);\n\t\treturn object\n\t}\n\treadObject.count = 0\n\tif (structure.highByte === 0) {\n\t\treturn createSecondByteReader(firstId, readObject)\n\t}\n\treturn readObject\n}\n\nconst createSecondByteReader = (firstId, read0) => {\n\treturn function() {\n\t\tlet highByte = src[position++]\n\t\tif (highByte === 0)\n\t\t\treturn read0()\n\t\tlet id = firstId < 32 ? -(firstId + (highByte << 5)) : firstId + (highByte << 5)\n\t\tlet structure = currentStructures[id] || loadStructures()[id]\n\t\tif (!structure) {\n\t\t\tthrow new Error('Record id is not defined for ' + id)\n\t\t}\n\t\tif (!structure.read)\n\t\t\tstructure.read = createStructureReader(structure, firstId)\n\t\treturn structure.read()\n\t}\n}\n\nexport function loadStructures() {\n\tlet loadedStructures = saveState(() => {\n\t\t// save the state in case getStructures modifies our buffer\n\t\tsrc = null\n\t\treturn currentUnpackr.getStructures()\n\t})\n\treturn currentStructures = currentUnpackr._mergeStructures(loadedStructures, currentStructures)\n}\n\nvar readFixedString = readStringJS\nvar readString8 = readStringJS\nvar readString16 = readStringJS\nvar readString32 = readStringJS\nexport let isNativeAccelerationEnabled = false\n\nexport function setExtractor(extractStrings) {\n\tisNativeAccelerationEnabled = true\n\treadFixedString = readString(1)\n\treadString8 = readString(2)\n\treadString16 = readString(3)\n\treadString32 = readString(5)\n\tfunction readString(headerLength) {\n\t\treturn function readString(length) {\n\t\t\tlet string = strings[stringPosition++]\n\t\t\tif (string == null) {\n\t\t\t\tif (bundledStrings)\n\t\t\t\t\treturn readStringJS(length)\n\t\t\t\tlet byteOffset = src.byteOffset\n\t\t\t\tlet extraction = extractStrings(position - headerLength + byteOffset, srcEnd + byteOffset, src.buffer)\n\t\t\t\tif (typeof extraction == 'string') {\n\t\t\t\t\tstring = extraction\n\t\t\t\t\tstrings = EMPTY_ARRAY\n\t\t\t\t} else {\n\t\t\t\t\tstrings = extraction\n\t\t\t\t\tstringPosition = 1\n\t\t\t\t\tsrcStringEnd = 1 // even if a utf-8 string was decoded, must indicate we are in the midst of extracted strings and can't skip strings\n\t\t\t\t\tstring = strings[0]\n\t\t\t\t\tif (string === undefined)\n\t\t\t\t\t\tthrow new Error('Unexpected end of buffer')\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet srcStringLength = string.length\n\t\t\tif (srcStringLength <= length) {\n\t\t\t\tposition += length\n\t\t\t\treturn string\n\t\t\t}\n\t\t\tsrcString = string\n\t\t\tsrcStringStart = position\n\t\t\tsrcStringEnd = position + srcStringLength\n\t\t\tposition += length\n\t\t\treturn string.slice(0, length) // we know we just want the beginning\n\t\t}\n\t}\n}\nfunction readStringJS(length) {\n\tlet result\n\tif (length < 16) {\n\t\tif (result = shortStringInJS(length))\n\t\t\treturn result\n\t}\n\tif (length > 64 && decoder)\n\t\treturn decoder.decode(src.subarray(position, position += length))\n\tconst end = position + length\n\tconst units = []\n\tresult = ''\n\twhile (position < end) {\n\t\tconst byte1 = src[position++]\n\t\tif ((byte1 & 0x80) === 0) {\n\t\t\t// 1 byte\n\t\t\tunits.push(byte1)\n\t\t} else if ((byte1 & 0xe0) === 0xc0) {\n\t\t\t// 2 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tunits.push(((byte1 & 0x1f) << 6) | byte2)\n\t\t} else if ((byte1 & 0xf0) === 0xe0) {\n\t\t\t// 3 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tconst byte3 = src[position++] & 0x3f\n\t\t\tunits.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3)\n\t\t} else if ((byte1 & 0xf8) === 0xf0) {\n\t\t\t// 4 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tconst byte3 = src[position++] & 0x3f\n\t\t\tconst byte4 = src[position++] & 0x3f\n\t\t\tlet unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4\n\t\t\tif (unit > 0xffff) {\n\t\t\t\tunit -= 0x10000\n\t\t\t\tunits.push(((unit >>> 10) & 0x3ff) | 0xd800)\n\t\t\t\tunit = 0xdc00 | (unit & 0x3ff)\n\t\t\t}\n\t\t\tunits.push(unit)\n\t\t} else {\n\t\t\tunits.push(byte1)\n\t\t}\n\n\t\tif (units.length >= 0x1000) {\n\t\t\tresult += fromCharCode.apply(String, units)\n\t\t\tunits.length = 0\n\t\t}\n\t}\n\n\tif (units.length > 0) {\n\t\tresult += fromCharCode.apply(String, units)\n\t}\n\n\treturn result\n}\nexport function readString(source, start, length) {\n\tlet existingSrc = src;\n\tsrc = source;\n\tposition = start;\n\ttry {\n\t\treturn readStringJS(length);\n\t} finally {\n\t\tsrc = existingSrc;\n\t}\n}\n\nfunction readArray(length) {\n\tlet array = new Array(length)\n\tfor (let i = 0; i < length; i++) {\n\t\tarray[i] = read()\n\t}\n\tif (currentUnpackr.freezeData)\n\t\treturn Object.freeze(array)\n\treturn array\n}\n\nfunction readMap(length) {\n\tif (currentUnpackr.mapsAsObjects) {\n\t\tlet object = {}\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tlet key = readKey()\n\t\t\tif (key === '__proto__')\n\t\t\t\tkey = '__proto_';\n\t\t\tobject[key] = read()\n\t\t}\n\t\treturn object\n\t} else {\n\t\tlet map = new Map()\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tmap.set(read(), read())\n\t\t}\n\t\treturn map\n\t}\n}\n\nvar fromCharCode = String.fromCharCode\nfunction longStringInJS(length) {\n\tlet start = position\n\tlet bytes = new Array(length)\n\tfor (let i = 0; i < length; i++) {\n\t\tconst byte = src[position++];\n\t\tif ((byte & 0x80) > 0) {\n\t\t\t\tposition = start\n\t\t\t\treturn\n\t\t\t}\n\t\t\tbytes[i] = byte\n\t\t}\n\t\treturn fromCharCode.apply(String, bytes)\n}\nfunction shortStringInJS(length) {\n\tif (length < 4) {\n\t\tif (length < 2) {\n\t\t\tif (length === 0)\n\t\t\t\treturn ''\n\t\t\telse {\n\t\t\t\tlet a = src[position++]\n\t\t\t\tif ((a & 0x80) > 1) {\n\t\t\t\t\tposition -= 1\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a)\n\t\t\t}\n\t\t} else {\n\t\t\tlet a = src[position++]\n\t\t\tlet b = src[position++]\n\t\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0) {\n\t\t\t\tposition -= 2\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 3)\n\t\t\t\treturn fromCharCode(a, b)\n\t\t\tlet c = src[position++]\n\t\t\tif ((c & 0x80) > 0) {\n\t\t\t\tposition -= 3\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn fromCharCode(a, b, c)\n\t\t}\n\t} else {\n\t\tlet a = src[position++]\n\t\tlet b = src[position++]\n\t\tlet c = src[position++]\n\t\tlet d = src[position++]\n\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) {\n\t\t\tposition -= 4\n\t\t\treturn\n\t\t}\n\t\tif (length < 6) {\n\t\t\tif (length === 4)\n\t\t\t\treturn fromCharCode(a, b, c, d)\n\t\t\telse {\n\t\t\t\tlet e = src[position++]\n\t\t\t\tif ((e & 0x80) > 0) {\n\t\t\t\t\tposition -= 5\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a, b, c, d, e)\n\t\t\t}\n\t\t} else if (length < 8) {\n\t\t\tlet e = src[position++]\n\t\t\tlet f = src[position++]\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0) {\n\t\t\t\tposition -= 6\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 7)\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f)\n\t\t\tlet g = src[position++]\n\t\t\tif ((g & 0x80) > 0) {\n\t\t\t\tposition -= 7\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn fromCharCode(a, b, c, d, e, f, g)\n\t\t} else {\n\t\t\tlet e = src[position++]\n\t\t\tlet f = src[position++]\n\t\t\tlet g = src[position++]\n\t\t\tlet h = src[position++]\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) {\n\t\t\t\tposition -= 8\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 10) {\n\t\t\t\tif (length === 8)\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h)\n\t\t\t\telse {\n\t\t\t\t\tlet i = src[position++]\n\t\t\t\t\tif ((i & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 9\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i)\n\t\t\t\t}\n\t\t\t} else if (length < 12) {\n\t\t\t\tlet i = src[position++]\n\t\t\t\tlet j = src[position++]\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0) {\n\t\t\t\t\tposition -= 10\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (length < 11)\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j)\n\t\t\t\tlet k = src[position++]\n\t\t\t\tif ((k & 0x80) > 0) {\n\t\t\t\t\tposition -= 11\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k)\n\t\t\t} else {\n\t\t\t\tlet i = src[position++]\n\t\t\t\tlet j = src[position++]\n\t\t\t\tlet k = src[position++]\n\t\t\t\tlet l = src[position++]\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) {\n\t\t\t\t\tposition -= 12\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (length < 14) {\n\t\t\t\t\tif (length === 12)\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l)\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet m = src[position++]\n\t\t\t\t\t\tif ((m & 0x80) > 0) {\n\t\t\t\t\t\t\tposition -= 13\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet m = src[position++]\n\t\t\t\t\tlet n = src[position++]\n\t\t\t\t\tif ((m & 0x80) > 0 || (n & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 14\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tif (length < 15)\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n)\n\t\t\t\t\tlet o = src[position++]\n\t\t\t\t\tif ((o & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 15\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction readOnlyJSString() {\n\tlet token = src[position++]\n\tlet length\n\tif (token < 0xc0) {\n\t\t// fixstr\n\t\tlength = token - 0xa0\n\t} else {\n\t\tswitch(token) {\n\t\t\tcase 0xd9:\n\t\t\t// str 8\n\t\t\t\tlength = src[position++]\n\t\t\t\tbreak\n\t\t\tcase 0xda:\n\t\t\t// str 16\n\t\t\t\tlength = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\tbreak\n\t\t\tcase 0xdb:\n\t\t\t// str 32\n\t\t\t\tlength = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Expected string')\n\t\t}\n\t}\n\treturn readStringJS(length)\n}\n\n\nfunction readBin(length) {\n\treturn currentUnpackr.copyBuffers ?\n\t\t// specifically use the copying slice (not the node one)\n\t\tUint8Array.prototype.slice.call(src, position, position += length) :\n\t\tsrc.subarray(position, position += length)\n}\nfunction readExt(length) {\n\tlet type = src[position++]\n\tif (currentExtensions[type]) {\n\t\tlet end\n\t\treturn currentExtensions[type](src.subarray(position, end = (position += length)), (readPosition) => {\n\t\t\tposition = readPosition;\n\t\t\ttry {\n\t\t\t\treturn read();\n\t\t\t} finally {\n\t\t\t\tposition = end;\n\t\t\t}\n\t\t})\n\t}\n\telse\n\t\tthrow new Error('Unknown extension type ' + type)\n}\n\nvar keyCache = new Array(4096)\nfunction readKey() {\n\tlet length = src[position++]\n\tif (length >= 0xa0 && length < 0xc0) {\n\t\t// fixstr, potentially use key cache\n\t\tlength = length - 0xa0\n\t\tif (srcStringEnd >= position) // if it has been extracted, must use it (and faster anyway)\n\t\t\treturn srcString.slice(position - srcStringStart, (position += length) - srcStringStart)\n\t\telse if (!(srcStringEnd == 0 && srcEnd < 180))\n\t\t\treturn readFixedString(length)\n\t} else { // not cacheable, go back and do a standard read\n\t\tposition--\n\t\treturn asSafeString(read())\n\t}\n\tlet key = ((length << 5) ^ (length > 1 ? dataView.getUint16(position) : length > 0 ? src[position] : 0)) & 0xfff\n\tlet entry = keyCache[key]\n\tlet checkPosition = position\n\tlet end = position + length - 3\n\tlet chunk\n\tlet i = 0\n\tif (entry && entry.bytes == length) {\n\t\twhile (checkPosition < end) {\n\t\t\tchunk = dataView.getUint32(checkPosition)\n\t\t\tif (chunk != entry[i++]) {\n\t\t\t\tcheckPosition = 0x70000000\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcheckPosition += 4\n\t\t}\n\t\tend += 3\n\t\twhile (checkPosition < end) {\n\t\t\tchunk = src[checkPosition++]\n\t\t\tif (chunk != entry[i++]) {\n\t\t\t\tcheckPosition = 0x70000000\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif (checkPosition === end) {\n\t\t\tposition = checkPosition\n\t\t\treturn entry.string\n\t\t}\n\t\tend -= 3\n\t\tcheckPosition = position\n\t}\n\tentry = []\n\tkeyCache[key] = entry\n\tentry.bytes = length\n\twhile (checkPosition < end) {\n\t\tchunk = dataView.getUint32(checkPosition)\n\t\tentry.push(chunk)\n\t\tcheckPosition += 4\n\t}\n\tend += 3\n\twhile (checkPosition < end) {\n\t\tchunk = src[checkPosition++]\n\t\tentry.push(chunk)\n\t}\n\t// for small blocks, avoiding the overhead of the extract call is helpful\n\tlet string = length < 16 ? shortStringInJS(length) : longStringInJS(length)\n\tif (string != null)\n\t\treturn entry.string = string\n\treturn entry.string = readFixedString(length)\n}\n\nfunction asSafeString(property) {\n\t// protect against expensive (DoS) string conversions\n\tif (typeof property === 'string') return property;\n\tif (typeof property === 'number' || typeof property === 'boolean' || typeof property === 'bigint') return property.toString();\n\tif (property == null) return property + '';\n\tthrow new Error('Invalid property type for record', typeof property);\n}\n// the registration of the record definition extension (as \"r\")\nconst recordDefinition = (id, highByte) => {\n\tlet structure = read().map(asSafeString) // ensure that all keys are strings and\n\t// that the array is mutable\n\tlet firstByte = id\n\tif (highByte !== undefined) {\n\t\tid = id < 32 ? -((highByte << 5) + id) : ((highByte << 5) + id)\n\t\tstructure.highByte = highByte\n\t}\n\tlet existingStructure = currentStructures[id]\n\t// If it is a shared structure, we need to restore any changes after reading.\n\t// Also in sequential mode, we may get incomplete reads and thus errors, and we need to restore\n\t// to the state prior to an incomplete read in order to properly resume.\n\tif (existingStructure && (existingStructure.isShared || sequentialMode)) {\n\t\t(currentStructures.restoreStructures || (currentStructures.restoreStructures = []))[id] = existingStructure\n\t}\n\tcurrentStructures[id] = structure\n\tstructure.read = createStructureReader(structure, firstByte)\n\treturn structure.read()\n}\ncurrentExtensions[0] = () => {} // notepack defines extension 0 to mean undefined, so use that as the default here\ncurrentExtensions[0].noBuffer = true\n\ncurrentExtensions[0x42] = (data) => {\n\t// decode bigint\n\tlet length = data.length;\n\tlet value = BigInt(data[0] & 0x80 ? data[0] - 0x100 : data[0]);\n\tfor (let i = 1; i < length; i++) {\n\t\tvalue <<= 8n;\n\t\tvalue += BigInt(data[i]);\n\t}\n\treturn value;\n}\n\nlet errors = { Error, TypeError, ReferenceError };\ncurrentExtensions[0x65] = () => {\n\tlet data = read()\n\treturn (errors[data[0]] || Error)(data[1], { cause: data[2] })\n}\n\ncurrentExtensions[0x69] = (data) => {\n\t// id extension (for structured clones)\n\tif (currentUnpackr.structuredClone === false) throw new Error('Structured clone extension is disabled')\n\tlet id = dataView.getUint32(position - 4)\n\tif (!referenceMap)\n\t\treferenceMap = new Map()\n\tlet token = src[position]\n\tlet target\n\t// TODO: handle Maps, Sets, and other types that can cycle; this is complicated, because you potentially need to read\n\t// ahead past references to record structure definitions\n\tif (token >= 0x90 && token < 0xa0 || token == 0xdc || token == 0xdd)\n\t\ttarget = []\n\telse\n\t\ttarget = {}\n\n\tlet refEntry = { target } // a placeholder object\n\treferenceMap.set(id, refEntry)\n\tlet targetProperties = read() // read the next value as the target object to id\n\tif (refEntry.used) // there is a cycle, so we have to assign properties to original target\n\t\treturn Object.assign(target, targetProperties)\n\trefEntry.target = targetProperties // the placeholder wasn't used, replace with the deserialized one\n\treturn targetProperties // no cycle, can just use the returned read object\n}\n\ncurrentExtensions[0x70] = (data) => {\n\t// pointer extension (for structured clones)\n\tif (currentUnpackr.structuredClone === false) throw new Error('Structured clone extension is disabled')\n\tlet id = dataView.getUint32(position - 4)\n\tlet refEntry = referenceMap.get(id)\n\trefEntry.used = true\n\treturn refEntry.target\n}\n\ncurrentExtensions[0x73] = () => new Set(read())\n\nexport const typedArrays = ['Int8','Uint8','Uint8Clamped','Int16','Uint16','Int32','Uint32','Float32','Float64','BigInt64','BigUint64'].map(type => type + 'Array')\n\nlet glbl = typeof globalThis === 'object' ? globalThis : window;\ncurrentExtensions[0x74] = (data) => {\n\tlet typeCode = data[0]\n\tlet typedArrayName = typedArrays[typeCode]\n\tif (!typedArrayName) {\n\t\tif (typeCode === 16) {\n\t\t\tlet ab = new ArrayBuffer(data.length - 1)\n\t\t\tlet u8 = new Uint8Array(ab)\n\t\t\tu8.set(data.subarray(1))\n\t\t\treturn ab;\n\t\t}\n\t\tthrow new Error('Could not find typed array for code ' + typeCode)\n\t}\n\t// we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned\n\treturn new glbl[typedArrayName](Uint8Array.prototype.slice.call(data, 1).buffer)\n}\ncurrentExtensions[0x78] = () => {\n\tlet data = read()\n\treturn new RegExp(data[0], data[1])\n}\nconst TEMP_BUNDLE = []\ncurrentExtensions[0x62] = (data) => {\n\tlet dataSize = (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3]\n\tlet dataPosition = position\n\tposition += dataSize - data.length\n\tbundledStrings = TEMP_BUNDLE\n\tbundledStrings = [readOnlyJSString(), readOnlyJSString()]\n\tbundledStrings.position0 = 0\n\tbundledStrings.position1 = 0\n\tbundledStrings.postBundlePosition = position\n\tposition = dataPosition\n\treturn read()\n}\n\ncurrentExtensions[0xff] = (data) => {\n\t// 32-bit date extension\n\tif (data.length == 4)\n\t\treturn new Date((data[0] * 0x1000000 + (data[1] << 16) + (data[2] << 8) + data[3]) * 1000)\n\telse if (data.length == 8)\n\t\treturn new Date(\n\t\t\t((data[0] << 22) + (data[1] << 14) + (data[2] << 6) + (data[3] >> 2)) / 1000000 +\n\t\t\t((data[3] & 0x3) * 0x100000000 + data[4] * 0x1000000 + (data[5] << 16) + (data[6] << 8) + data[7]) * 1000)\n\telse if (data.length == 12)// TODO: Implement support for negative\n\t\treturn new Date(\n\t\t\t((data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3]) / 1000000 +\n\t\t\t(((data[4] & 0x80) ? -0x1000000000000 : 0) + data[6] * 0x10000000000 + data[7] * 0x100000000 + data[8] * 0x1000000 + (data[9] << 16) + (data[10] << 8) + data[11]) * 1000)\n\telse\n\t\treturn new Date('invalid')\n} // notepack defines extension 0 to mean undefined, so use that as the default here\n// registration of bulk record definition?\n// currentExtensions[0x52] = () =>\n\nfunction saveState(callback) {\n\tif (onSaveState)\n\t\tonSaveState();\n\tlet savedSrcEnd = srcEnd\n\tlet savedPosition = position\n\tlet savedStringPosition = stringPosition\n\tlet savedSrcStringStart = srcStringStart\n\tlet savedSrcStringEnd = srcStringEnd\n\tlet savedSrcString = srcString\n\tlet savedStrings = strings\n\tlet savedReferenceMap = referenceMap\n\tlet savedBundledStrings = bundledStrings\n\n\t// TODO: We may need to revisit this if we do more external calls to user code (since it could be slow)\n\tlet savedSrc = new Uint8Array(src.slice(0, srcEnd)) // we copy the data in case it changes while external data is processed\n\tlet savedStructures = currentStructures\n\tlet savedStructuresContents = currentStructures.slice(0, currentStructures.length)\n\tlet savedPackr = currentUnpackr\n\tlet savedSequentialMode = sequentialMode\n\tlet value = callback()\n\tsrcEnd = savedSrcEnd\n\tposition = savedPosition\n\tstringPosition = savedStringPosition\n\tsrcStringStart = savedSrcStringStart\n\tsrcStringEnd = savedSrcStringEnd\n\tsrcString = savedSrcString\n\tstrings = savedStrings\n\treferenceMap = savedReferenceMap\n\tbundledStrings = savedBundledStrings\n\tsrc = savedSrc\n\tsequentialMode = savedSequentialMode\n\tcurrentStructures = savedStructures\n\tcurrentStructures.splice(0, currentStructures.length, ...savedStructuresContents)\n\tcurrentUnpackr = savedPackr\n\tdataView = new DataView(src.buffer, src.byteOffset, src.byteLength)\n\treturn value\n}\nexport function clearSource() {\n\tsrc = null\n\treferenceMap = null\n\tcurrentStructures = null\n}\n\nexport function addExtension(extension) {\n\tif (extension.unpack)\n\t\tcurrentExtensions[extension.type] = extension.unpack\n\telse\n\t\tcurrentExtensions[extension.type] = extension\n}\n\nexport const mult10 = new Array(147) // this is a table matching binary exponents to the multiplier to determine significant digit rounding\nfor (let i = 0; i < 256; i++) {\n\tmult10[i] = +('1e' + Math.floor(45.15 - i * 0.30103))\n}\nexport const Decoder = Unpackr\nvar defaultUnpackr = new Unpackr({ useRecords: false })\nexport const unpack = defaultUnpackr.unpack\nexport const unpackMultiple = defaultUnpackr.unpackMultiple\nexport const decode = defaultUnpackr.unpack\nexport const FLOAT32_OPTIONS = {\n\tNEVER: 0,\n\tALWAYS: 1,\n\tDECIMAL_ROUND: 3,\n\tDECIMAL_FIT: 4\n}\nlet f32Array = new Float32Array(1)\nlet u8Array = new Uint8Array(f32Array.buffer, 0, 4)\nexport function roundFloat32(float32Number) {\n\tf32Array[0] = float32Number\n\tlet multiplier = mult10[((u8Array[3] & 0x7f) << 1) | (u8Array[2] >> 7)]\n\treturn ((multiplier * float32Number + (float32Number > 0 ? 0.5 : -0.5)) >> 0) / multiplier\n}\nexport function setReadStruct(updatedReadStruct, loadedStructs, saveState) {\n\treadStruct = updatedReadStruct;\n\tonLoadedStructures = loadedStructs;\n\tonSaveState = saveState;\n}\n","import { Unpackr, mult10, C1Type, typedArrays, addExtension as unpackAddExtension } from './unpack.js'\nlet textEncoder\ntry {\n\ttextEncoder = new TextEncoder()\n} catch (error) {}\nlet extensions, extensionClasses\nconst hasNodeBuffer = typeof Buffer !== 'undefined'\nconst ByteArrayAllocate = hasNodeBuffer ?\n\tfunction(length) { return Buffer.allocUnsafeSlow(length) } : Uint8Array\nconst ByteArray = hasNodeBuffer ? Buffer : Uint8Array\nconst MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000\nlet target, keysTarget\nlet targetView\nlet position = 0\nlet safeEnd\nlet bundledStrings = null\nlet writeStructSlots\nconst MAX_BUNDLE_SIZE = 0x5500 // maximum characters such that the encoded bytes fits in 16 bits.\nconst hasNonLatin = /[\\u0080-\\uFFFF]/\nexport const RECORD_SYMBOL = Symbol('record-id')\nexport class Packr extends Unpackr {\n\tconstructor(options) {\n\t\tsuper(options)\n\t\tthis.offset = 0\n\t\tlet typeBuffer\n\t\tlet start\n\t\tlet hasSharedUpdate\n\t\tlet structures\n\t\tlet referenceMap\n\t\tlet encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position) {\n\t\t\treturn target.utf8Write(string, position, 0xffffffff)\n\t\t} : (textEncoder && textEncoder.encodeInto) ?\n\t\t\tfunction(string, position) {\n\t\t\t\treturn textEncoder.encodeInto(string, target.subarray(position)).written\n\t\t\t} : false\n\n\t\tlet packr = this\n\t\tif (!options)\n\t\t\toptions = {}\n\t\tlet isSequential = options && options.sequential\n\t\tlet hasSharedStructures = options.structures || options.saveStructures\n\t\tlet maxSharedStructures = options.maxSharedStructures\n\t\tif (maxSharedStructures == null)\n\t\t\tmaxSharedStructures = hasSharedStructures ? 32 : 0\n\t\tif (maxSharedStructures > 8160)\n\t\t\tthrow new Error('Maximum maxSharedStructure is 8160')\n\t\tif (options.structuredClone && options.moreTypes == undefined) {\n\t\t\tthis.moreTypes = true\n\t\t}\n\t\tlet maxOwnStructures = options.maxOwnStructures\n\t\tif (maxOwnStructures == null)\n\t\t\tmaxOwnStructures = hasSharedStructures ? 32 : 64\n\t\tif (!this.structures && options.useRecords != false)\n\t\t\tthis.structures = []\n\t\t// two byte record ids for shared structures\n\t\tlet useTwoByteRecords = maxSharedStructures > 32 || (maxOwnStructures + maxSharedStructures > 64)\n\t\tlet sharedLimitId = maxSharedStructures + 0x40\n\t\tlet maxStructureId = maxSharedStructures + maxOwnStructures + 0x40\n\t\tif (maxStructureId > 8256) {\n\t\t\tthrow new Error('Maximum maxSharedStructure + maxOwnStructure is 8192')\n\t\t}\n\t\tlet recordIdsToRemove = []\n\t\tlet transitionsCount = 0\n\t\tlet serializationsSinceTransitionRebuild = 0\n\n\t\tthis.pack = this.encode = function(value, encodeOptions) {\n\t\t\tif (!target) {\n\t\t\t\ttarget = new ByteArrayAllocate(8192)\n\t\t\t\ttargetView = target.dataView || (target.dataView = new DataView(target.buffer, 0, 8192))\n\t\t\t\tposition = 0\n\t\t\t}\n\t\t\tsafeEnd = target.length - 10\n\t\t\tif (safeEnd - position < 0x800) {\n\t\t\t\t// don't start too close to the end,\n\t\t\t\ttarget = new ByteArrayAllocate(target.length)\n\t\t\t\ttargetView = target.dataView || (target.dataView = new DataView(target.buffer, 0, target.length))\n\t\t\t\tsafeEnd = target.length - 10\n\t\t\t\tposition = 0\n\t\t\t} else\n\t\t\t\tposition = (position + 7) & 0x7ffffff8 // Word align to make any future copying of this buffer faster\n\t\t\tstart = position\n\t\t\tif (encodeOptions & RESERVE_START_SPACE) position += (encodeOptions & 0xff)\n\t\t\treferenceMap = packr.structuredClone ? new Map() : null\n\t\t\tif (packr.bundleStrings && typeof value !== 'string') {\n\t\t\t\tbundledStrings = []\n\t\t\t\tbundledStrings.size = Infinity // force a new bundle start on first string\n\t\t\t} else\n\t\t\t\tbundledStrings = null\n\t\t\tstructures = packr.structures\n\t\t\tif (structures) {\n\t\t\t\tif (structures.uninitialized)\n\t\t\t\t\tstructures = packr._mergeStructures(packr.getStructures())\n\t\t\t\tlet sharedLength = structures.sharedLength || 0\n\t\t\t\tif (sharedLength > maxSharedStructures) {\n\t\t\t\t\t//if (maxSharedStructures <= 32 && structures.sharedLength > 32) // TODO: could support this, but would need to update the limit ids\n\t\t\t\t\tthrow new Error('Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to ' + structures.sharedLength)\n\t\t\t\t}\n\t\t\t\tif (!structures.transitions) {\n\t\t\t\t\t// rebuild our structure transitions\n\t\t\t\t\tstructures.transitions = Object.create(null)\n\t\t\t\t\tfor (let i = 0; i < sharedLength; i++) {\n\t\t\t\t\t\tlet keys = structures[i]\n\t\t\t\t\t\tif (!keys)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\tlet nextTransition, transition = structures.transitions\n\t\t\t\t\t\tfor (let j = 0, l = keys.length; j < l; j++) {\n\t\t\t\t\t\t\tlet key = keys[j]\n\t\t\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttransition = nextTransition\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttransition[RECORD_SYMBOL] = i + 0x40\n\t\t\t\t\t}\n\t\t\t\t\tthis.lastNamedStructuresLength = sharedLength\n\t\t\t\t}\n\t\t\t\tif (!isSequential) {\n\t\t\t\t\tstructures.nextId = sharedLength + 0x40\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (hasSharedUpdate)\n\t\t\t\thasSharedUpdate = false\n\t\t\tlet encodingError;\n\t\t\ttry {\n\t\t\t\tif (packr.randomAccessStructure && value && value.constructor && value.constructor === Object)\n\t\t\t\t\twriteStruct(value);\n\t\t\t\telse\n\t\t\t\t\tpack(value)\n\t\t\t\tlet lastBundle = bundledStrings;\n\t\t\t\tif (bundledStrings)\n\t\t\t\t\twriteBundles(start, pack, 0)\n\t\t\t\tif (referenceMap && referenceMap.idsToInsert) {\n\t\t\t\t\tlet idsToInsert = referenceMap.idsToInsert.sort((a, b) => a.offset > b.offset ? 1 : -1);\n\t\t\t\t\tlet i = idsToInsert.length;\n\t\t\t\t\tlet incrementPosition = -1;\n\t\t\t\t\twhile (lastBundle && i > 0) {\n\t\t\t\t\t\tlet insertionPoint = idsToInsert[--i].offset + start;\n\t\t\t\t\t\tif (insertionPoint < (lastBundle.stringsPosition + start) && incrementPosition === -1)\n\t\t\t\t\t\t\tincrementPosition = 0;\n\t\t\t\t\t\tif (insertionPoint > (lastBundle.position + start)) {\n\t\t\t\t\t\t\tif (incrementPosition >= 0)\n\t\t\t\t\t\t\t\tincrementPosition += 6;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (incrementPosition >= 0) {\n\t\t\t\t\t\t\t\t// update the bundle reference now\n\t\t\t\t\t\t\t\ttargetView.setUint32(lastBundle.position + start,\n\t\t\t\t\t\t\t\t\ttargetView.getUint32(lastBundle.position + start) + incrementPosition)\n\t\t\t\t\t\t\t\tincrementPosition = -1; // reset\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlastBundle = lastBundle.previous;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (incrementPosition >= 0 && lastBundle) {\n\t\t\t\t\t\t// update the bundle reference now\n\t\t\t\t\t\ttargetView.setUint32(lastBundle.position + start,\n\t\t\t\t\t\t\ttargetView.getUint32(lastBundle.position + start) + incrementPosition)\n\t\t\t\t\t}\n\t\t\t\t\tposition += idsToInsert.length * 6;\n\t\t\t\t\tif (position > safeEnd)\n\t\t\t\t\t\tmakeRoom(position)\n\t\t\t\t\tpackr.offset = position\n\t\t\t\t\tlet serialized = insertIds(target.subarray(start, position), idsToInsert)\n\t\t\t\t\treferenceMap = null\n\t\t\t\t\treturn serialized\n\t\t\t\t}\n\t\t\t\tpackr.offset = position // update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially\n\t\t\t\tif (encodeOptions & REUSE_BUFFER_MODE) {\n\t\t\t\t\ttarget.start = start\n\t\t\t\t\ttarget.end = position\n\t\t\t\t\treturn target\n\t\t\t\t}\n\t\t\t\treturn target.subarray(start, position) // position can change if we call pack again in saveStructures, so we get the buffer now\n\t\t\t} catch(error) {\n\t\t\t\tencodingError = error;\n\t\t\t\tthrow error;\n\t\t\t} finally {\n\t\t\t\tif (structures) {\n\t\t\t\t\tresetStructures();\n\t\t\t\t\tif (hasSharedUpdate && packr.saveStructures) {\n\t\t\t\t\t\tlet sharedLength = structures.sharedLength || 0\n\t\t\t\t\t\t// we can't rely on start/end with REUSE_BUFFER_MODE since they will (probably) change when we save\n\t\t\t\t\t\tlet returnBuffer = target.subarray(start, position)\n\t\t\t\t\t\tlet newSharedData = prepareStructures(structures, packr);\n\t\t\t\t\t\tif (!encodingError) { // TODO: If there is an encoding error, should make the structures as uninitialized so they get rebuilt next time\n\t\t\t\t\t\t\tif (packr.saveStructures(newSharedData, newSharedData.isCompatible) === false) {\n\t\t\t\t\t\t\t\t// get updated structures and try again if the update failed\n\t\t\t\t\t\t\t\treturn packr.pack(value, encodeOptions)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpackr.lastNamedStructuresLength = sharedLength\n\t\t\t\t\t\t\t// don't keep large buffers around\n\t\t\t\t\t\t\tif (target.length > 0x40000000) target = null\n\t\t\t\t\t\t\treturn returnBuffer\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// don't keep large buffers around, they take too much memory and cause problems (limit at 1GB)\n\t\t\t\tif (target.length > 0x40000000) target = null\n\t\t\t\tif (encodeOptions & RESET_BUFFER_MODE)\n\t\t\t\t\tposition = start\n\t\t\t}\n\t\t}\n\t\tconst resetStructures = () => {\n\t\t\tif (serializationsSinceTransitionRebuild < 10)\n\t\t\t\tserializationsSinceTransitionRebuild++\n\t\t\tlet sharedLength = structures.sharedLength || 0\n\t\t\tif (structures.length > sharedLength && !isSequential)\n\t\t\t\tstructures.length = sharedLength\n\t\t\tif (transitionsCount > 10000) {\n\t\t\t\t// force a rebuild occasionally after a lot of transitions so it can get cleaned up\n\t\t\t\tstructures.transitions = null\n\t\t\t\tserializationsSinceTransitionRebuild = 0\n\t\t\t\ttransitionsCount = 0\n\t\t\t\tif (recordIdsToRemove.length > 0)\n\t\t\t\t\trecordIdsToRemove = []\n\t\t\t} else if (recordIdsToRemove.length > 0 && !isSequential) {\n\t\t\t\tfor (let i = 0, l = recordIdsToRemove.length; i < l; i++) {\n\t\t\t\t\trecordIdsToRemove[i][RECORD_SYMBOL] = 0\n\t\t\t\t}\n\t\t\t\trecordIdsToRemove = []\n\t\t\t}\n\t\t}\n\t\tconst packArray = (value) => {\n\t\t\tvar length = value.length\n\t\t\tif (length < 0x10) {\n\t\t\t\ttarget[position++] = 0x90 | length\n\t\t\t} else if (length < 0x10000) {\n\t\t\t\ttarget[position++] = 0xdc\n\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t} else {\n\t\t\t\ttarget[position++] = 0xdd\n\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\tposition += 4\n\t\t\t}\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tpack(value[i])\n\t\t\t}\n\t\t}\n\t\tconst pack = (value) => {\n\t\t\tif (position > safeEnd)\n\t\t\t\ttarget = makeRoom(position)\n\n\t\t\tvar type = typeof value\n\t\t\tvar length\n\t\t\tif (type === 'string') {\n\t\t\t\tlet strLength = value.length\n\t\t\t\tif (bundledStrings && strLength >= 4 && strLength < 0x1000) {\n\t\t\t\t\tif ((bundledStrings.size += strLength) > MAX_BUNDLE_SIZE) {\n\t\t\t\t\t\tlet extStart\n\t\t\t\t\t\tlet maxBytes = (bundledStrings[0] ? bundledStrings[0].length * 3 + bundledStrings[1].length : 0) + 10\n\t\t\t\t\t\tif (position + maxBytes > safeEnd)\n\t\t\t\t\t\t\ttarget = makeRoom(position + maxBytes)\n\t\t\t\t\t\tlet lastBundle\n\t\t\t\t\t\tif (bundledStrings.position) { // here we use the 0x62 extension to write the last bundle and reserve space for the reference pointer to the next/current bundle\n\t\t\t\t\t\t\tlastBundle = bundledStrings\n\t\t\t\t\t\t\ttarget[position] = 0xc8 // ext 16\n\t\t\t\t\t\t\tposition += 3 // reserve for the writing bundle size\n\t\t\t\t\t\t\ttarget[position++] = 0x62 // 'b'\n\t\t\t\t\t\t\textStart = position - start\n\t\t\t\t\t\t\tposition += 4 // reserve for writing bundle reference\n\t\t\t\t\t\t\twriteBundles(start, pack, 0) // write the last bundles\n\t\t\t\t\t\t\ttargetView.setUint16(extStart + start - 3, position - start - extStart)\n\t\t\t\t\t\t} else { // here we use the 0x62 extension just to reserve the space for the reference pointer to the bundle (will be updated once the bundle is written)\n\t\t\t\t\t\t\ttarget[position++] = 0xd6 // fixext 4\n\t\t\t\t\t\t\ttarget[position++] = 0x62 // 'b'\n\t\t\t\t\t\t\textStart = position - start\n\t\t\t\t\t\t\tposition += 4 // reserve for writing bundle reference\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbundledStrings = ['', ''] // create new ones\n\t\t\t\t\t\tbundledStrings.previous = lastBundle;\n\t\t\t\t\t\tbundledStrings.size = 0\n\t\t\t\t\t\tbundledStrings.position = extStart\n\t\t\t\t\t}\n\t\t\t\t\tlet twoByte = hasNonLatin.test(value)\n\t\t\t\t\tbundledStrings[twoByte ? 0 : 1] += value\n\t\t\t\t\ttarget[position++] = 0xc1\n\t\t\t\t\tpack(twoByte ? -strLength : strLength);\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tlet headerSize\n\t\t\t\t// first we estimate the header size, so we can write to the correct location\n\t\t\t\tif (strLength < 0x20) {\n\t\t\t\t\theaderSize = 1\n\t\t\t\t} else if (strLength < 0x100) {\n\t\t\t\t\theaderSize = 2\n\t\t\t\t} else if (strLength < 0x10000) {\n\t\t\t\t\theaderSize = 3\n\t\t\t\t} else {\n\t\t\t\t\theaderSize = 5\n\t\t\t\t}\n\t\t\t\tlet maxBytes = strLength * 3\n\t\t\t\tif (position + maxBytes > safeEnd)\n\t\t\t\t\ttarget = makeRoom(position + maxBytes)\n\n\t\t\t\tif (strLength < 0x40 || !encodeUtf8) {\n\t\t\t\t\tlet i, c1, c2, strPosition = position + headerSize\n\t\t\t\t\tfor (i = 0; i < strLength; i++) {\n\t\t\t\t\t\tc1 = value.charCodeAt(i)\n\t\t\t\t\t\tif (c1 < 0x80) {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1\n\t\t\t\t\t\t} else if (c1 < 0x800) {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 | 0xc0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t(c1 & 0xfc00) === 0xd800 &&\n\t\t\t\t\t\t\t((c2 = value.charCodeAt(i + 1)) & 0xfc00) === 0xdc00\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tc1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff)\n\t\t\t\t\t\t\ti++\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 18 | 0xf0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 | 0xe0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlength = strPosition - position - headerSize\n\t\t\t\t} else {\n\t\t\t\t\tlength = encodeUtf8(value, position + headerSize)\n\t\t\t\t}\n\n\t\t\t\tif (length < 0x20) {\n\t\t\t\t\ttarget[position++] = 0xa0 | length\n\t\t\t\t} else if (length < 0x100) {\n\t\t\t\t\tif (headerSize < 2) {\n\t\t\t\t\t\ttarget.copyWithin(position + 2, position + 1, position + 1 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xd9\n\t\t\t\t\ttarget[position++] = length\n\t\t\t\t} else if (length < 0x10000) {\n\t\t\t\t\tif (headerSize < 3) {\n\t\t\t\t\t\ttarget.copyWithin(position + 3, position + 2, position + 2 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xda\n\t\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t\t} else {\n\t\t\t\t\tif (headerSize < 5) {\n\t\t\t\t\t\ttarget.copyWithin(position + 5, position + 3, position + 3 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xdb\n\t\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\t\tposition += 4\n\t\t\t\t}\n\t\t\t\tposition += length\n\t\t\t} else if (type === 'number') {\n\t\t\t\tif (value >>> 0 === value) {// positive integer, 32-bit or less\n\t\t\t\t\t// positive uint\n\t\t\t\t\tif (value < 0x20 || (value < 0x80 && this.useRecords === false) || (value < 0x40 && !this.randomAccessStructure)) {\n\t\t\t\t\t\ttarget[position++] = value\n\t\t\t\t\t} else if (value < 0x100) {\n\t\t\t\t\t\ttarget[position++] = 0xcc\n\t\t\t\t\t\ttarget[position++] = value\n\t\t\t\t\t} else if (value < 0x10000) {\n\t\t\t\t\t\ttarget[position++] = 0xcd\n\t\t\t\t\t\ttarget[position++] = value >> 8\n\t\t\t\t\t\ttarget[position++] = value & 0xff\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget[position++] = 0xce\n\t\t\t\t\t\ttargetView.setUint32(position, value)\n\t\t\t\t\t\tposition += 4\n\t\t\t\t\t}\n\t\t\t\t} else if (value >> 0 === value) { // negative integer\n\t\t\t\t\tif (value >= -0x20) {\n\t\t\t\t\t\ttarget[position++] = 0x100 + value\n\t\t\t\t\t} else if (value >= -0x80) {\n\t\t\t\t\t\ttarget[position++] = 0xd0\n\t\t\t\t\t\ttarget[position++] = value + 0x100\n\t\t\t\t\t} else if (value >= -0x8000) {\n\t\t\t\t\t\ttarget[position++] = 0xd1\n\t\t\t\t\t\ttargetView.setInt16(position, value)\n\t\t\t\t\t\tposition += 2\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget[position++] = 0xd2\n\t\t\t\t\t\ttargetView.setInt32(position, value)\n\t\t\t\t\t\tposition += 4\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet useFloat32\n\t\t\t\t\tif ((useFloat32 = this.useFloat32) > 0 && value < 0x100000000 && value >= -0x80000000) {\n\t\t\t\t\t\ttarget[position++] = 0xca\n\t\t\t\t\t\ttargetView.setFloat32(position, value)\n\t\t\t\t\t\tlet xShifted\n\t\t\t\t\t\tif (useFloat32 < 4 ||\n\t\t\t\t\t\t\t\t// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n\t\t\t\t\t\t\t\t((xShifted = value * mult10[((target[position] & 0x7f) << 1) | (target[position + 1] >> 7)]) >> 0) === xShifted) {\n\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tposition-- // move back into position for writing a double\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xcb\n\t\t\t\t\ttargetView.setFloat64(position, value)\n\t\t\t\t\tposition += 8\n\t\t\t\t}\n\t\t\t} else if (type === 'object' || type === 'function') {\n\t\t\t\tif (!value)\n\t\t\t\t\ttarget[position++] = 0xc0\n\t\t\t\telse {\n\t\t\t\t\tif (referenceMap) {\n\t\t\t\t\t\tlet referee = referenceMap.get(value)\n\t\t\t\t\t\tif (referee) {\n\t\t\t\t\t\t\tif (!referee.id) {\n\t\t\t\t\t\t\t\tlet idsToInsert = referenceMap.idsToInsert || (referenceMap.idsToInsert = [])\n\t\t\t\t\t\t\t\treferee.id = idsToInsert.push(referee)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttarget[position++] = 0xd6 // fixext 4\n\t\t\t\t\t\t\ttarget[position++] = 0x70 // \"p\" for pointer\n\t\t\t\t\t\t\ttargetView.setUint32(position, referee.id)\n\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\treferenceMap.set(value, { offset: position - start })\n\t\t\t\t\t}\n\t\t\t\t\tlet constructor = value.constructor\n\t\t\t\t\tif (constructor === Object) {\n\t\t\t\t\t\twriteObject(value)\n\t\t\t\t\t} else if (constructor === Array) {\n\t\t\t\t\t\tpackArray(value)\n\t\t\t\t\t} else if (constructor === Map) {\n\t\t\t\t\t\tif (this.mapAsEmptyObject) target[position++] = 0x80\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlength = value.size\n\t\t\t\t\t\t\tif (length < 0x10) {\n\t\t\t\t\t\t\t\ttarget[position++] = 0x80 | length\n\t\t\t\t\t\t\t} else if (length < 0x10000) {\n\t\t\t\t\t\t\t\ttarget[position++] = 0xde\n\t\t\t\t\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\t\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttarget[position++] = 0xdf\n\t\t\t\t\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfor (let [key, entryValue] of value) {\n\t\t\t\t\t\t\t\tpack(key)\n\t\t\t\t\t\t\t\tpack(entryValue)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (let i = 0, l = extensions.length; i < l; i++) {\n\t\t\t\t\t\t\tlet extensionClass = extensionClasses[i]\n\t\t\t\t\t\t\tif (value instanceof extensionClass) {\n\t\t\t\t\t\t\t\tlet extension = extensions[i]\n\t\t\t\t\t\t\t\tif (extension.write) {\n\t\t\t\t\t\t\t\t\tif (extension.type) {\n\t\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd4 // one byte \"tag\" extension\n\t\t\t\t\t\t\t\t\t\ttarget[position++] = extension.type\n\t\t\t\t\t\t\t\t\t\ttarget[position++] = 0\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlet writeResult = extension.write.call(this, value)\n\t\t\t\t\t\t\t\t\tif (writeResult === value) { // avoid infinite recursion\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\t\t\t\t\tpackArray(value)\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\twriteObject(value)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tpack(writeResult)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet currentTarget = target\n\t\t\t\t\t\t\t\tlet currentTargetView = targetView\n\t\t\t\t\t\t\t\tlet currentPosition = position\n\t\t\t\t\t\t\t\ttarget = null\n\t\t\t\t\t\t\t\tlet result\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tresult = extension.pack.call(this, value, (size) => {\n\t\t\t\t\t\t\t\t\t\t// restore target and use it\n\t\t\t\t\t\t\t\t\t\ttarget = currentTarget\n\t\t\t\t\t\t\t\t\t\tcurrentTarget = null\n\t\t\t\t\t\t\t\t\t\tposition += size\n\t\t\t\t\t\t\t\t\t\tif (position > safeEnd)\n\t\t\t\t\t\t\t\t\t\t\tmakeRoom(position)\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\ttarget, targetView, position: position - size\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}, pack)\n\t\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\t\t// restore current target information (unless already restored)\n\t\t\t\t\t\t\t\t\tif (currentTarget) {\n\t\t\t\t\t\t\t\t\t\ttarget = currentTarget\n\t\t\t\t\t\t\t\t\t\ttargetView = currentTargetView\n\t\t\t\t\t\t\t\t\t\tposition = currentPosition\n\t\t\t\t\t\t\t\t\t\tsafeEnd = target.length - 10\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t\t\tif (result.length + position > safeEnd)\n\t\t\t\t\t\t\t\t\t\tmakeRoom(result.length + position)\n\t\t\t\t\t\t\t\t\tposition = writeExtensionData(result, target, position, extension.type)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// check isArray after extensions, because extensions can extend Array\n\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\tpackArray(value)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// use this as an alternate mechanism for expressing how to serialize\n\t\t\t\t\t\t\tif (value.toJSON) {\n\t\t\t\t\t\t\t\tconst json = value.toJSON()\n\t\t\t\t\t\t\t\t// if for some reason value.toJSON returns itself it'll loop forever\n\t\t\t\t\t\t\t\tif (json !== value)\n\t\t\t\t\t\t\t\t\treturn pack(json)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// if there is a writeFunction, use it, otherwise just encode as undefined\n\t\t\t\t\t\t\tif (type === 'function')\n\t\t\t\t\t\t\t\treturn pack(this.writeFunction && this.writeFunction(value));\n\n\t\t\t\t\t\t\t// no extension found, write as plain object\n\t\t\t\t\t\t\twriteObject(value)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'boolean') {\n\t\t\t\ttarget[position++] = value ? 0xc3 : 0xc2\n\t\t\t} else if (type === 'bigint') {\n\t\t\t\tif (value < (BigInt(1)<= -(BigInt(1)< 0) {\n\t\t\t\t\t// if we can fit an unsigned int, use that\n\t\t\t\t\ttarget[position++] = 0xcf\n\t\t\t\t\ttargetView.setBigUint64(position, value)\n\t\t\t\t} else {\n\t\t\t\t\t// overflow\n\t\t\t\t\tif (this.largeBigIntToFloat) {\n\t\t\t\t\t\ttarget[position++] = 0xcb\n\t\t\t\t\t\ttargetView.setFloat64(position, Number(value))\n\t\t\t\t\t} else if (this.useBigIntExtension && value < 2n**(1023n) && value > -(2n**(1023n))) {\n\t\t\t\t\t\ttarget[position++] = 0xc7\n\t\t\t\t\t\tposition++;\n\t\t\t\t\t\ttarget[position++] = 0x42 // \"B\" for BigInt\n\t\t\t\t\t\tlet bytes = [];\n\t\t\t\t\t\tlet alignedSign;\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tlet byte = value & 0xffn;\n\t\t\t\t\t\t\talignedSign = (byte & 0x80n) === (value < 0n ? 0x80n : 0n);\n\t\t\t\t\t\t\tbytes.push(byte);\n\t\t\t\t\t\t\tvalue >>= 8n;\n\t\t\t\t\t\t} while (!((value === 0n || value === -1n) && alignedSign));\n\t\t\t\t\t\ttarget[position-2] = bytes.length;\n\t\t\t\t\t\tfor (let i = bytes.length; i > 0;) {\n\t\t\t\t\t\t\ttarget[position++] = Number(bytes[--i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new RangeError(value + ' was too large to fit in MessagePack 64-bit integer format, use' +\n\t\t\t\t\t\t\t' useBigIntExtension or set largeBigIntToFloat to convert to float-64')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tposition += 8\n\t\t\t} else if (type === 'undefined') {\n\t\t\t\tif (this.encodeUndefinedAsNil)\n\t\t\t\t\ttarget[position++] = 0xc0\n\t\t\t\telse {\n\t\t\t\t\ttarget[position++] = 0xd4 // a number of implementations use fixext1 with type 0, data 0 to denote undefined, so we follow suite\n\t\t\t\t\ttarget[position++] = 0\n\t\t\t\t\ttarget[position++] = 0\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error('Unknown type: ' + type)\n\t\t\t}\n\t\t}\n\n\t\tconst writePlainObject = (this.variableMapSize || this.coercibleKeyAsNumber || this.skipValues) ? (object) => {\n\t\t\t// this method is slightly slower, but generates \"preferred serialization\" (optimally small for smaller objects)\n\t\t\tlet keys;\n\t\t\tif (this.skipValues) {\n\t\t\t\tkeys = [];\n\t\t\t\tfor (let key in object) {\n\t\t\t\t\tif ((typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) &&\n\t\t\t\t\t\t!this.skipValues.includes(object[key]))\n\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tkeys = Object.keys(object)\n\t\t\t}\n\t\t\tlet length = keys.length\n\t\t\tif (length < 0x10) {\n\t\t\t\ttarget[position++] = 0x80 | length\n\t\t\t} else if (length < 0x10000) {\n\t\t\t\ttarget[position++] = 0xde\n\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t} else {\n\t\t\t\ttarget[position++] = 0xdf\n\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\tposition += 4\n\t\t\t}\n\t\t\tlet key\n\t\t\tif (this.coercibleKeyAsNumber) {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tkey = keys[i]\n\t\t\t\t\tlet num = Number(key)\n\t\t\t\t\tpack(isNaN(num) ? key : num)\n\t\t\t\t\tpack(object[key])\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tpack(key = keys[i])\n\t\t\t\t\tpack(object[key])\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\t\t(object) => {\n\t\t\ttarget[position++] = 0xde // always using map 16, so we can preallocate and set the length afterwards\n\t\t\tlet objectOffset = position - start\n\t\t\tposition += 2\n\t\t\tlet size = 0\n\t\t\tfor (let key in object) {\n\t\t\t\tif (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\t\tpack(key)\n\t\t\t\t\tpack(object[key])\n\t\t\t\t\tsize++\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[objectOffset++ + start] = size >> 8\n\t\t\ttarget[objectOffset + start] = size & 0xff\n\t\t}\n\n\t\tconst writeRecord = this.useRecords === false ? writePlainObject :\n\t\t(options.progressiveRecords && !useTwoByteRecords) ? // this is about 2% faster for highly stable structures, since it only requires one for-in loop (but much more expensive when new structure needs to be written)\n\t\t(object) => {\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\n\t\t\tlet objectOffset = position++ - start\n\t\t\tlet wroteKeys\n\t\t\tfor (let key in object) {\n\t\t\t\tif (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\tif (nextTransition)\n\t\t\t\t\t\ttransition = nextTransition\n\t\t\t\t\telse {\n\t\t\t\t\t\t// record doesn't exist, create full new record and insert it\n\t\t\t\t\t\tlet keys = Object.keys(object)\n\t\t\t\t\t\tlet lastTransition = transition\n\t\t\t\t\t\ttransition = structures.transitions\n\t\t\t\t\t\tlet newTransitions = 0\n\t\t\t\t\t\tfor (let i = 0, l = keys.length; i < l; i++) {\n\t\t\t\t\t\t\tlet key = keys[i]\n\t\t\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\t\t\t\tnewTransitions++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttransition = nextTransition\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (objectOffset + start + 1 == position) {\n\t\t\t\t\t\t\t// first key, so we don't need to insert, we can just write record directly\n\t\t\t\t\t\t\tposition--\n\t\t\t\t\t\t\tnewRecord(transition, keys, newTransitions)\n\t\t\t\t\t\t} else // otherwise we need to insert the record, moving existing data after the record\n\t\t\t\t\t\t\tinsertNewRecord(transition, keys, objectOffset, newTransitions)\n\t\t\t\t\t\twroteKeys = true\n\t\t\t\t\t\ttransition = lastTransition[key]\n\t\t\t\t\t}\n\t\t\t\t\tpack(object[key])\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!wroteKeys) {\n\t\t\t\tlet recordId = transition[RECORD_SYMBOL]\n\t\t\t\tif (recordId)\n\t\t\t\t\ttarget[objectOffset + start] = recordId\n\t\t\t\telse\n\t\t\t\t\tinsertNewRecord(transition, Object.keys(object), objectOffset, 0)\n\t\t\t}\n\t\t} :\n\t\t(object) => {\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\n\t\t\tlet newTransitions = 0\n\t\t\tfor (let key in object) if (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\tnextTransition = transition[key]\n\t\t\t\tif (!nextTransition) {\n\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\tnewTransitions++\n\t\t\t\t}\n\t\t\t\ttransition = nextTransition\n\t\t\t}\n\t\t\tlet recordId = transition[RECORD_SYMBOL]\n\t\t\tif (recordId) {\n\t\t\t\tif (recordId >= 0x60 && useTwoByteRecords) {\n\t\t\t\t\ttarget[position++] = ((recordId -= 0x60) & 0x1f) + 0x60\n\t\t\t\t\ttarget[position++] = recordId >> 5\n\t\t\t\t} else\n\t\t\t\t\ttarget[position++] = recordId\n\t\t\t} else {\n\t\t\t\tnewRecord(transition, transition.__keys__ || Object.keys(object), newTransitions)\n\t\t\t}\n\t\t\t// now write the values\n\t\t\tfor (let key in object)\n\t\t\t\tif (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\t\tpack(object[key])\n\t\t\t\t}\n\t\t}\n\n\t\t// create reference to useRecords if useRecords is a function\n\t\tconst checkUseRecords = typeof this.useRecords == 'function' && this.useRecords;\n\n\t\tconst writeObject = checkUseRecords ? (object) => {\n\t\t\tcheckUseRecords(object) ? writeRecord(object) : writePlainObject(object)\n\t\t} : writeRecord\n\n\t\tconst makeRoom = (end) => {\n\t\t\tlet newSize\n\t\t\tif (end > 0x1000000) {\n\t\t\t\t// special handling for really large buffers\n\t\t\t\tif ((end - start) > MAX_BUFFER_SIZE)\n\t\t\t\t\tthrow new Error('Packed buffer would be larger than maximum buffer size')\n\t\t\t\tnewSize = Math.min(MAX_BUFFER_SIZE,\n\t\t\t\t\tMath.round(Math.max((end - start) * (end > 0x4000000 ? 1.25 : 2), 0x400000) / 0x1000) * 0x1000)\n\t\t\t} else // faster handling for smaller buffers\n\t\t\t\tnewSize = ((Math.max((end - start) << 2, target.length - 1) >> 12) + 1) << 12\n\t\t\tlet newBuffer = new ByteArrayAllocate(newSize)\n\t\t\ttargetView = newBuffer.dataView || (newBuffer.dataView = new DataView(newBuffer.buffer, 0, newSize))\n\t\t\tend = Math.min(end, target.length)\n\t\t\tif (target.copy)\n\t\t\t\ttarget.copy(newBuffer, 0, start, end)\n\t\t\telse\n\t\t\t\tnewBuffer.set(target.slice(start, end))\n\t\t\tposition -= start\n\t\t\tstart = 0\n\t\t\tsafeEnd = newBuffer.length - 10\n\t\t\treturn target = newBuffer\n\t\t}\n\t\tconst newRecord = (transition, keys, newTransitions) => {\n\t\t\tlet recordId = structures.nextId\n\t\t\tif (!recordId)\n\t\t\t\trecordId = 0x40\n\t\t\tif (recordId < sharedLimitId && this.shouldShareStructure && !this.shouldShareStructure(keys)) {\n\t\t\t\trecordId = structures.nextOwnId\n\t\t\t\tif (!(recordId < maxStructureId))\n\t\t\t\t\trecordId = sharedLimitId\n\t\t\t\tstructures.nextOwnId = recordId + 1\n\t\t\t} else {\n\t\t\t\tif (recordId >= maxStructureId)// cycle back around\n\t\t\t\t\trecordId = sharedLimitId\n\t\t\t\tstructures.nextId = recordId + 1\n\t\t\t}\n\t\t\tlet highByte = keys.highByte = recordId >= 0x60 && useTwoByteRecords ? (recordId - 0x60) >> 5 : -1\n\t\t\ttransition[RECORD_SYMBOL] = recordId\n\t\t\ttransition.__keys__ = keys\n\t\t\tstructures[recordId - 0x40] = keys\n\n\t\t\tif (recordId < sharedLimitId) {\n\t\t\t\tkeys.isShared = true\n\t\t\t\tstructures.sharedLength = recordId - 0x3f\n\t\t\t\thasSharedUpdate = true\n\t\t\t\tif (highByte >= 0) {\n\t\t\t\t\ttarget[position++] = (recordId & 0x1f) + 0x60\n\t\t\t\t\ttarget[position++] = highByte\n\t\t\t\t} else {\n\t\t\t\t\ttarget[position++] = recordId\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (highByte >= 0) {\n\t\t\t\t\ttarget[position++] = 0xd5 // fixext 2\n\t\t\t\t\ttarget[position++] = 0x72 // \"r\" record defintion extension type\n\t\t\t\t\ttarget[position++] = (recordId & 0x1f) + 0x60\n\t\t\t\t\ttarget[position++] = highByte\n\t\t\t\t} else {\n\t\t\t\t\ttarget[position++] = 0xd4 // fixext 1\n\t\t\t\t\ttarget[position++] = 0x72 // \"r\" record defintion extension type\n\t\t\t\t\ttarget[position++] = recordId\n\t\t\t\t}\n\n\t\t\t\tif (newTransitions)\n\t\t\t\t\ttransitionsCount += serializationsSinceTransitionRebuild * newTransitions\n\t\t\t\t// record the removal of the id, we can maintain our shared structure\n\t\t\t\tif (recordIdsToRemove.length >= maxOwnStructures)\n\t\t\t\t\trecordIdsToRemove.shift()[RECORD_SYMBOL] = 0 // we are cycling back through, and have to remove old ones\n\t\t\t\trecordIdsToRemove.push(transition)\n\t\t\t\tpack(keys)\n\t\t\t}\n\t\t}\n\t\tconst insertNewRecord = (transition, keys, insertionOffset, newTransitions) => {\n\t\t\tlet mainTarget = target\n\t\t\tlet mainPosition = position\n\t\t\tlet mainSafeEnd = safeEnd\n\t\t\tlet mainStart = start\n\t\t\ttarget = keysTarget\n\t\t\tposition = 0\n\t\t\tstart = 0\n\t\t\tif (!target)\n\t\t\t\tkeysTarget = target = new ByteArrayAllocate(8192)\n\t\t\tsafeEnd = target.length - 10\n\t\t\tnewRecord(transition, keys, newTransitions)\n\t\t\tkeysTarget = target\n\t\t\tlet keysPosition = position\n\t\t\ttarget = mainTarget\n\t\t\tposition = mainPosition\n\t\t\tsafeEnd = mainSafeEnd\n\t\t\tstart = mainStart\n\t\t\tif (keysPosition > 1) {\n\t\t\t\tlet newEnd = position + keysPosition - 1\n\t\t\t\tif (newEnd > safeEnd)\n\t\t\t\t\tmakeRoom(newEnd)\n\t\t\t\tlet insertionPosition = insertionOffset + start\n\t\t\t\ttarget.copyWithin(insertionPosition + keysPosition, insertionPosition + 1, position)\n\t\t\t\ttarget.set(keysTarget.slice(0, keysPosition), insertionPosition)\n\t\t\t\tposition = newEnd\n\t\t\t} else {\n\t\t\t\ttarget[insertionOffset + start] = keysTarget[0]\n\t\t\t}\n\t\t}\n\t\tconst writeStruct = (object) => {\n\t\t\tlet newPosition = writeStructSlots(object, target, start, position, structures, makeRoom, (value, newPosition, notifySharedUpdate) => {\n\t\t\t\tif (notifySharedUpdate)\n\t\t\t\t\treturn hasSharedUpdate = true;\n\t\t\t\tposition = newPosition;\n\t\t\t\tlet startTarget = target;\n\t\t\t\tpack(value);\n\t\t\t\tresetStructures();\n\t\t\t\tif (startTarget !== target) {\n\t\t\t\t\treturn { position, targetView, target }; // indicate the buffer was re-allocated\n\t\t\t\t}\n\t\t\t\treturn position;\n\t\t\t}, this);\n\t\t\tif (newPosition === 0) // bail and go to a msgpack object\n\t\t\t\treturn writeObject(object);\n\t\t\tposition = newPosition;\n\t\t}\n\t}\n\tuseBuffer(buffer) {\n\t\t// this means we are finished using our own buffer and we can write over it safely\n\t\ttarget = buffer\n\t\ttarget.dataView || (target.dataView = new DataView(target.buffer, target.byteOffset, target.byteLength))\n\t\tposition = 0\n\t}\n\tset position (value) {\n\t\tposition = value;\n\t}\n\tget position() {\n\t\treturn position;\n\t}\n\tclearSharedData() {\n\t\tif (this.structures)\n\t\t\tthis.structures = []\n\t\tif (this.typedStructs)\n\t\t\tthis.typedStructs = []\n\t}\n}\n\nextensionClasses = [ Date, Set, Error, RegExp, ArrayBuffer, Object.getPrototypeOf(Uint8Array.prototype).constructor /*TypedArray*/, C1Type ]\nextensions = [{\n\tpack(date, allocateForWrite, pack) {\n\t\tlet seconds = date.getTime() / 1000\n\t\tif ((this.useTimestamp32 || date.getMilliseconds() === 0) && seconds >= 0 && seconds < 0x100000000) {\n\t\t\t// Timestamp 32\n\t\t\tlet { target, targetView, position} = allocateForWrite(6)\n\t\t\ttarget[position++] = 0xd6\n\t\t\ttarget[position++] = 0xff\n\t\t\ttargetView.setUint32(position, seconds)\n\t\t} else if (seconds > 0 && seconds < 0x100000000) {\n\t\t\t// Timestamp 64\n\t\t\tlet { target, targetView, position} = allocateForWrite(10)\n\t\t\ttarget[position++] = 0xd7\n\t\t\ttarget[position++] = 0xff\n\t\t\ttargetView.setUint32(position, date.getMilliseconds() * 4000000 + ((seconds / 1000 / 0x100000000) >> 0))\n\t\t\ttargetView.setUint32(position + 4, seconds)\n\t\t} else if (isNaN(seconds)) {\n\t\t\tif (this.onInvalidDate) {\n\t\t\t\tallocateForWrite(0)\n\t\t\t\treturn pack(this.onInvalidDate())\n\t\t\t}\n\t\t\t// Intentionally invalid timestamp\n\t\t\tlet { target, targetView, position} = allocateForWrite(3)\n\t\t\ttarget[position++] = 0xd4\n\t\t\ttarget[position++] = 0xff\n\t\t\ttarget[position++] = 0xff\n\t\t} else {\n\t\t\t// Timestamp 96\n\t\t\tlet { target, targetView, position} = allocateForWrite(15)\n\t\t\ttarget[position++] = 0xc7\n\t\t\ttarget[position++] = 12\n\t\t\ttarget[position++] = 0xff\n\t\t\ttargetView.setUint32(position, date.getMilliseconds() * 1000000)\n\t\t\ttargetView.setBigInt64(position + 4, BigInt(Math.floor(seconds)))\n\t\t}\n\t}\n}, {\n\tpack(set, allocateForWrite, pack) {\n\t\tif (this.setAsEmptyObject) {\n\t\t\tallocateForWrite(0);\n\t\t\treturn pack({})\n\t\t}\n\t\tlet array = Array.from(set)\n\t\tlet { target, position} = allocateForWrite(this.moreTypes ? 3 : 0)\n\t\tif (this.moreTypes) {\n\t\t\ttarget[position++] = 0xd4\n\t\t\ttarget[position++] = 0x73 // 's' for Set\n\t\t\ttarget[position++] = 0\n\t\t}\n\t\tpack(array)\n\t}\n}, {\n\tpack(error, allocateForWrite, pack) {\n\t\tlet { target, position} = allocateForWrite(this.moreTypes ? 3 : 0)\n\t\tif (this.moreTypes) {\n\t\t\ttarget[position++] = 0xd4\n\t\t\ttarget[position++] = 0x65 // 'e' for error\n\t\t\ttarget[position++] = 0\n\t\t}\n\t\tpack([ error.name, error.message, error.cause ])\n\t}\n}, {\n\tpack(regex, allocateForWrite, pack) {\n\t\tlet { target, position} = allocateForWrite(this.moreTypes ? 3 : 0)\n\t\tif (this.moreTypes) {\n\t\t\ttarget[position++] = 0xd4\n\t\t\ttarget[position++] = 0x78 // 'x' for regeXp\n\t\t\ttarget[position++] = 0\n\t\t}\n\t\tpack([ regex.source, regex.flags ])\n\t}\n}, {\n\tpack(arrayBuffer, allocateForWrite) {\n\t\tif (this.moreTypes)\n\t\t\twriteExtBuffer(arrayBuffer, 0x10, allocateForWrite)\n\t\telse\n\t\t\twriteBuffer(hasNodeBuffer ? Buffer.from(arrayBuffer) : new Uint8Array(arrayBuffer), allocateForWrite)\n\t}\n}, {\n\tpack(typedArray, allocateForWrite) {\n\t\tlet constructor = typedArray.constructor\n\t\tif (constructor !== ByteArray && this.moreTypes)\n\t\t\twriteExtBuffer(typedArray, typedArrays.indexOf(constructor.name), allocateForWrite)\n\t\telse\n\t\t\twriteBuffer(typedArray, allocateForWrite)\n\t}\n}, {\n\tpack(c1, allocateForWrite) { // specific 0xC1 object\n\t\tlet { target, position} = allocateForWrite(1)\n\t\ttarget[position] = 0xc1\n\t}\n}]\n\nfunction writeExtBuffer(typedArray, type, allocateForWrite, encode) {\n\tlet length = typedArray.byteLength\n\tif (length + 1 < 0x100) {\n\t\tvar { target, position } = allocateForWrite(4 + length)\n\t\ttarget[position++] = 0xc7\n\t\ttarget[position++] = length + 1\n\t} else if (length + 1 < 0x10000) {\n\t\tvar { target, position } = allocateForWrite(5 + length)\n\t\ttarget[position++] = 0xc8\n\t\ttarget[position++] = (length + 1) >> 8\n\t\ttarget[position++] = (length + 1) & 0xff\n\t} else {\n\t\tvar { target, position, targetView } = allocateForWrite(7 + length)\n\t\ttarget[position++] = 0xc9\n\t\ttargetView.setUint32(position, length + 1) // plus one for the type byte\n\t\tposition += 4\n\t}\n\ttarget[position++] = 0x74 // \"t\" for typed array\n\ttarget[position++] = type\n\tif (!typedArray.buffer) typedArray = new Uint8Array(typedArray)\n\ttarget.set(new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength), position)\n}\nfunction writeBuffer(buffer, allocateForWrite) {\n\tlet length = buffer.byteLength\n\tvar target, position\n\tif (length < 0x100) {\n\t\tvar { target, position } = allocateForWrite(length + 2)\n\t\ttarget[position++] = 0xc4\n\t\ttarget[position++] = length\n\t} else if (length < 0x10000) {\n\t\tvar { target, position } = allocateForWrite(length + 3)\n\t\ttarget[position++] = 0xc5\n\t\ttarget[position++] = length >> 8\n\t\ttarget[position++] = length & 0xff\n\t} else {\n\t\tvar { target, position, targetView } = allocateForWrite(length + 5)\n\t\ttarget[position++] = 0xc6\n\t\ttargetView.setUint32(position, length)\n\t\tposition += 4\n\t}\n\ttarget.set(buffer, position)\n}\n\nfunction writeExtensionData(result, target, position, type) {\n\tlet length = result.length\n\tswitch (length) {\n\t\tcase 1:\n\t\t\ttarget[position++] = 0xd4\n\t\t\tbreak\n\t\tcase 2:\n\t\t\ttarget[position++] = 0xd5\n\t\t\tbreak\n\t\tcase 4:\n\t\t\ttarget[position++] = 0xd6\n\t\t\tbreak\n\t\tcase 8:\n\t\t\ttarget[position++] = 0xd7\n\t\t\tbreak\n\t\tcase 16:\n\t\t\ttarget[position++] = 0xd8\n\t\t\tbreak\n\t\tdefault:\n\t\t\tif (length < 0x100) {\n\t\t\t\ttarget[position++] = 0xc7\n\t\t\t\ttarget[position++] = length\n\t\t\t} else if (length < 0x10000) {\n\t\t\t\ttarget[position++] = 0xc8\n\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t} else {\n\t\t\t\ttarget[position++] = 0xc9\n\t\t\t\ttarget[position++] = length >> 24\n\t\t\t\ttarget[position++] = (length >> 16) & 0xff\n\t\t\t\ttarget[position++] = (length >> 8) & 0xff\n\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t}\n\t}\n\ttarget[position++] = type\n\ttarget.set(result, position)\n\tposition += length\n\treturn position\n}\n\nfunction insertIds(serialized, idsToInsert) {\n\t// insert the ids that need to be referenced for structured clones\n\tlet nextId\n\tlet distanceToMove = idsToInsert.length * 6\n\tlet lastEnd = serialized.length - distanceToMove\n\twhile (nextId = idsToInsert.pop()) {\n\t\tlet offset = nextId.offset\n\t\tlet id = nextId.id\n\t\tserialized.copyWithin(offset + distanceToMove, offset, lastEnd)\n\t\tdistanceToMove -= 6\n\t\tlet position = offset + distanceToMove\n\t\tserialized[position++] = 0xd6\n\t\tserialized[position++] = 0x69 // 'i'\n\t\tserialized[position++] = id >> 24\n\t\tserialized[position++] = (id >> 16) & 0xff\n\t\tserialized[position++] = (id >> 8) & 0xff\n\t\tserialized[position++] = id & 0xff\n\t\tlastEnd = offset\n\t}\n\treturn serialized\n}\n\nfunction writeBundles(start, pack, incrementPosition) {\n\tif (bundledStrings.length > 0) {\n\t\ttargetView.setUint32(bundledStrings.position + start, position + incrementPosition - bundledStrings.position - start)\n\t\tbundledStrings.stringsPosition = position - start;\n\t\tlet writeStrings = bundledStrings\n\t\tbundledStrings = null\n\t\tpack(writeStrings[0])\n\t\tpack(writeStrings[1])\n\t}\n}\n\nexport function addExtension(extension) {\n\tif (extension.Class) {\n\t\tif (!extension.pack && !extension.write)\n\t\t\tthrow new Error('Extension has no pack or write function')\n\t\tif (extension.pack && !extension.type)\n\t\t\tthrow new Error('Extension has no type (numeric code to identify the extension)')\n\t\textensionClasses.unshift(extension.Class)\n\t\textensions.unshift(extension)\n\t}\n\tunpackAddExtension(extension)\n}\nfunction prepareStructures(structures, packr) {\n\tstructures.isCompatible = (existingStructures) => {\n\t\tlet compatible = !existingStructures || ((packr.lastNamedStructuresLength || 0) === existingStructures.length)\n\t\tif (!compatible) // we want to merge these existing structures immediately since we already have it and we are in the right transaction\n\t\t\tpackr._mergeStructures(existingStructures);\n\t\treturn compatible;\n\t}\n\treturn structures\n}\nexport function setWriteStructSlots(writeSlots, makeStructures) {\n\twriteStructSlots = writeSlots;\n\tprepareStructures = makeStructures;\n}\n\nlet defaultPackr = new Packr({ useRecords: false })\nexport const pack = defaultPackr.pack\nexport const encode = defaultPackr.pack\nexport const Encoder = Packr\nexport { FLOAT32_OPTIONS } from './unpack.js'\nimport { FLOAT32_OPTIONS } from './unpack.js'\nexport const { NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT } = FLOAT32_OPTIONS\nexport const REUSE_BUFFER_MODE = 512\nexport const RESET_BUFFER_MODE = 1024\nexport const RESERVE_START_SPACE = 2048","// ignore coverage\nexport function truncateHashes(arg, depth = 0) {\n depth += 1;\n if (depth > 10)\n return arg;\n if (typeof arg === 'string') {\n const transforms = [\n // strip ANSI color codes\n // eslint-disable-next-line no-control-regex\n [/\\u001B\\[\\d+m/g, ''],\n // strip line feeds\n [/\\\\n/g, ''],\n // strip contents of Uint8Arrays\n [/(Uint8Array\\(\\d+\\)) \\[.+]/g, s => `${s.slice(0, 20)}...]`],\n // strip contents of Uint8Arrays expressed as objects\n [/({ ('\\d+': \\d+,?\\s*)+})/g, s => `${s.slice(0, 20)}...}`],\n // strip buffers\n [/<(Buffer) ([a-f\\d\\s]+)>/g, s => `${s.slice(0, 20)}...>`],\n [/{\"type\":\"Buffer\",\"data\":\\[(\\d+,?\\s*)+]}/g, s => `${s.slice(0, 40)}...]}`],\n ];\n return transforms.reduce(\n // @ts-expect-error I give up on trying to type this\n (acc, [rx, replacement]) => acc.replaceAll(rx, replacement), arg);\n }\n if (Array.isArray(arg)) {\n return arg.map(element => truncateHashes(element, depth));\n }\n if (typeof arg === 'object') {\n const object = {};\n for (const prop in arg) {\n const value = arg[prop];\n object[truncateHashes(prop, depth)] = truncateHashes(value, depth);\n }\n return object;\n }\n return arg;\n}\n//# sourceMappingURL=truncateHashes.js.map","// ignore file coverage\nimport _debug from 'debug';\nimport { truncateHashes } from './truncateHashes.js';\nconst originalFormatArgs = _debug.formatArgs;\n_debug.formatArgs = function (args) {\n for (let i = 0; i < args.length; i++) {\n args[i] = truncateHashes(args[i]);\n }\n originalFormatArgs.call(this, args);\n};\nexport const debug = _debug('localfirst');\n//# sourceMappingURL=debug.js.map","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","// ignore file coverage\nimport { memoize as _memoize } from 'lodash-es';\nconst BYPASS = false;\nexport const nomemoize = (f, _resolver) => f;\nexport const memoize = BYPASS ? nomemoize : _memoize;\n//# sourceMappingURL=memoize.js.map","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","// src/index.ts\nimport sodium7 from \"libsodium-wrappers-sumo\";\n\n// src/asymmetric.ts\nimport sodium2 from \"libsodium-wrappers-sumo\";\nimport { pack, unpack } from \"msgpackr\";\n\n// src/stretch.ts\nimport sodium from \"libsodium-wrappers-sumo\";\nimport { memoize } from \"@localfirst/shared\";\n\n// src/util/base58.ts\nimport bs58 from \"bs58\";\nvar { encode, decode } = bs58;\nvar base58 = {\n encode: (b) => encode(b),\n decode,\n detect: (s) => /^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$/.test(s)\n};\n\n// src/util/keypairToBase58.ts\nvar keypairToBase58 = (keypair) => ({\n publicKey: base58.encode(keypair.publicKey),\n secretKey: base58.encode(keypair.privateKey)\n});\n\n// src/util/keyToBytes.ts\nvar keyToBytes = (x, encoding = \"base58\") => {\n if (encoding === \"utf8\") {\n return new TextEncoder().encode(x);\n }\n if (encoding === \"base58\") {\n return base58.decode(x);\n }\n throw new Error(`Unknown encoding: ${encoding}`);\n};\n\n// src/stretch.ts\nvar stretch = memoize((password) => {\n const passwordBytes = typeof password === \"string\" ? keyToBytes(password, \"utf8\") : password;\n const salt = base58.decode(\"H5B4DLSXw5xwNYFdz1Wr6e\");\n if (passwordBytes.length >= 16) {\n return sodium.crypto_generichash(32, passwordBytes, salt);\n }\n const opsLimit = sodium.crypto_pwhash_OPSLIMIT_INTERACTIVE;\n const memLimit = sodium.crypto_pwhash_MEMLIMIT_INTERACTIVE;\n return sodium.crypto_pwhash(\n 32,\n passwordBytes,\n salt,\n opsLimit,\n memLimit,\n sodium.crypto_pwhash_ALG_DEFAULT\n );\n});\n\n// src/asymmetric.ts\nvar keyPair = (seed) => {\n const keypair = seed ? sodium2.crypto_box_seed_keypair(stretch(seed)) : sodium2.crypto_box_keypair();\n return keypairToBase58(keypair);\n};\nvar encryptBytes = ({\n secret,\n recipientPublicKey,\n senderSecretKey\n}) => {\n const secretBytes = pack(secret);\n const nonce = sodium2.randombytes_buf(sodium2.crypto_box_NONCEBYTES);\n let senderPublicKey;\n if (senderSecretKey === void 0) {\n const senderKeys = asymmetric.keyPair();\n senderSecretKey = senderKeys.secretKey;\n senderPublicKey = senderKeys.publicKey;\n } else {\n senderPublicKey = void 0;\n }\n const message = sodium2.crypto_box_easy(\n secretBytes,\n nonce,\n keyToBytes(recipientPublicKey),\n keyToBytes(senderSecretKey)\n );\n const cipherBytes = pack({ nonce, message, senderPublicKey });\n return cipherBytes;\n};\nvar decryptBytes = ({\n cipher,\n recipientSecretKey,\n senderPublicKey\n}) => {\n const unpackedCipher = unpack(cipher);\n const { nonce, message } = unpackedCipher;\n senderPublicKey = senderPublicKey ?? unpackedCipher.senderPublicKey;\n const decrypted = sodium2.crypto_box_open_easy(\n message,\n nonce,\n keyToBytes(senderPublicKey),\n keyToBytes(recipientSecretKey)\n );\n return unpack(decrypted);\n};\nvar encrypt = ({\n secret,\n recipientPublicKey,\n senderSecretKey\n}) => {\n const cipherBytes = encryptBytes({ secret, recipientPublicKey, senderSecretKey });\n return base58.encode(cipherBytes);\n};\nvar decrypt = ({\n cipher,\n recipientSecretKey,\n senderPublicKey\n}) => {\n const cipherBytes = keyToBytes(cipher);\n return decryptBytes({ cipher: cipherBytes, recipientSecretKey, senderPublicKey });\n};\nvar asymmetric = {\n keyPair,\n encryptBytes,\n decryptBytes,\n encrypt,\n decrypt\n};\n\n// src/hash.ts\nimport sodium3 from \"libsodium-wrappers-sumo\";\nimport { pack as pack2 } from \"msgpackr\";\nvar hash = (seed, payload) => {\n return base58.encode(hashBytes(seed, payload));\n};\nvar hashBytes = (seed, payload) => {\n const seedBytes = keyToBytes(seed, \"utf8\");\n const payloadBytes = pack2(payload);\n return sodium3.crypto_generichash(32, payloadBytes, seedBytes);\n};\n\n// src/randomKey.ts\nimport sodium4 from \"libsodium-wrappers-sumo\";\nvar randomKeyBytes = (length = 32) => sodium4.randombytes_buf(length);\nvar randomKey = (length = 16) => (\n // we make a longer key than we need, so that we have enough base58 characters to truncate to the desired length\n base58.encode(randomKeyBytes(length * 3)).slice(0, length)\n);\n\n// src/signatures.ts\nimport sodium5 from \"libsodium-wrappers-sumo\";\nimport { pack as pack3 } from \"msgpackr\";\nvar keyPair2 = (seed) => {\n const keypair = seed ? sodium5.crypto_sign_seed_keypair(stretch(seed)) : sodium5.crypto_sign_keypair();\n return keypairToBase58(keypair);\n};\nvar sign = (payload, secretKey) => {\n const payloadBytes = pack3(payload);\n const secretKeyBytes = keyToBytes(secretKey);\n const signatureBytes = sodium5.crypto_sign_detached(payloadBytes, secretKeyBytes);\n return base58.encode(signatureBytes);\n};\nvar verify = ({ payload, signature, publicKey }) => {\n const payloadBytes = pack3(payload);\n const signatureBytes = keyToBytes(signature);\n const publicKeyBytes = keyToBytes(publicKey);\n return sodium5.crypto_sign_verify_detached(signatureBytes, payloadBytes, publicKeyBytes);\n};\nvar signatures = { keyPair: keyPair2, sign, verify };\n\n// src/symmetric.ts\nimport sodium6 from \"libsodium-wrappers-sumo\";\nimport { pack as pack4, unpack as unpack2 } from \"msgpackr\";\nvar encryptBytes2 = (payload, password) => {\n const messageBytes = pack4(payload);\n const key = stretch(password);\n const nonce = sodium6.randombytes_buf(sodium6.crypto_secretbox_NONCEBYTES);\n const encrypted = sodium6.crypto_secretbox_easy(messageBytes, nonce, key);\n const cipher = { nonce, message: encrypted };\n const cipherBytes = pack4(cipher);\n return cipherBytes;\n};\nvar decryptBytes2 = (cipher, password) => {\n const key = stretch(password);\n const { nonce, message } = unpack2(cipher);\n const decrypted = sodium6.crypto_secretbox_open_easy(message, nonce, key);\n return unpack2(decrypted);\n};\nvar encrypt2 = (payload, password) => {\n const cipherBytes = encryptBytes2(payload, password);\n const cipher = base58.encode(cipherBytes);\n return cipher;\n};\nvar decrypt2 = (cipher, password) => {\n const cipherBytes = keyToBytes(cipher);\n return decryptBytes2(cipherBytes, password);\n};\nvar symmetric = { encryptBytes: encryptBytes2, decryptBytes: decryptBytes2, encrypt: encrypt2, decrypt: decrypt2 };\n\n// src/index.ts\nawait sodium7.ready;\nexport {\n asymmetric,\n base58,\n hash,\n hashBytes,\n keyToBytes,\n keypairToBase58,\n randomKey,\n randomKeyBytes,\n signatures,\n stretch,\n symmetric\n};\n//# sourceMappingURL=index.js.map"],"names":["A","I","g","global","C","B","Q","i","o","process","E","a","_","require$$0","c","require$$1","Y","module","t","r","e","y","s","h","D","f","p","w","n","k","F","S","N","G","M","K","U","b","H","J","d","m","l","u","x","v","R","L","P","q","z","j","X","O","W","V","Z","T","$","AA","IA","gA","CA","BA","QA","iA","oA","EA","aA","_A","cA","tA","rA","eA","yA","sA","hA","DA","fA","pA","wA","nA","kA","FA","SA","NA","GA","MA","KA","UI","UA","bA","HA","YA","JA","dA","mA","lA","uA","xA","vA","RA","LA","PA","qA","zA","jA","XA","OA","WA","VA","ZA","TA","$A","AI","II","SI","FI","tg","Ig","XC","bg","FC","Ng","QI","DB","Lg","cg","ZI","KI","NI","NC","MI","nI","tI","WI","Hg","rC","Eg","og","GI","RI","Rg","DI","kI","ag","$I","gg","lI","uI","PI","gI","CI","pB","BI","iI","oI","EI","yg","ug","wC","mg","SC","nC","aI","aC","oC","_I","dC","wg","cI","pC","rI","eI","DC","fC","yI","sI","Xg","hI","jg","Og","mC","Sg","fI","Ug","Gg","pI","wI","bI","HI","Cg","YI","JI","dI","mI","xI","vI","hC","LI","qI","zI","jI","XI","OI","VI","TI","Ag","Bg","Qg","ig","_g","cC","wB","rg","_C","eg","sg","hg","Dg","fg","pg","ng","kg","Fg","Mg","Kg","Yg","Jg","dg","lg","xg","vg","Pg","qg","zg","Wg","Vg","Zg","Tg","$g","AC","IC","gC","CC","BC","QC","iC","EC","tC","eC","yC","sC","kC","GC","MC","KC","UC","bC","HC","YC","JC","lC","uC","xC","vC","RC","LC","PC","qC","zC","jC","OC","WC","VC","ZC","TC","$C","AB","IB","gB","CB","BB","QB","iB","oB","EB","aB","_B","cB","tB","rB","eB","yB","sB","hB","fB","require$$2","Buffer","exports","this","ee","ae","re","te","_e","ne","se","ce","oe","he","pe","ye","ie","le","ue","de","ve","ge","be","fe","me","Ee","xe","ke","Se","Te","we","Ye","Be","Ae","Me","Ie","Ke","Ne","Le","Oe","Ue","Ce","Pe","Re","Xe","Ge","De","Fe","Ve","He","We","qe","je","ze","Je","Qe","Ze","$e","ea","aa","ra","ta","_a","na","sa","ca","oa","ha","pa","ya","ia","la","ua","da","va","ga","ba","fa","ma","Ea","xa","ka","Sa","Ta","wa","Ya","Ba","Aa","Ma","Ia","Ka","Na","La","Oa","Ua","Ca","Pa","Ra","Xa","Ga","Da","Fa","Va","Ha","Wa","qa","ja","za","Ja","Qa","Za","$a","er","ar","rr","tr","_r","nr","sr","cr","or","hr","pr","yr","ir","lr","ur","dr","vr","gr","br","fr","mr","Er","xr","kr","Sr","Tr","wr","Yr","Br","Ar","Mr","Ir","Kr","Nr","Lr","Or","Ur","Cr","Pr","Rr","Xr","Gr","Dr","Fr","Vr","Hr","Wr","qr","decoder","src","srcEnd","position","currentUnpackr","currentStructures","srcString","srcStringStart","srcStringEnd","bundledStrings","referenceMap","currentExtensions","dataView","defaultOptions","C1Type","C1","sequentialMode","inlineObjectReadThreshold","readStruct","Unpackr","options","source","saveState","clearSource","error","checkedRead","forEach","values","lastPosition","size","value","defaultUnpackr","loadedStructures","existingStructures","structure","id","existing","sharedLength","result","read","restoreStructures","jsonView","token","loadStructures","createStructureReader","object","key","readKey","map","array","length","string","shortStringInJS","longStringInJS","readFixedString","readBin","readExt","multiplier","mult10","recordDefinition","extension","readString8","readString16","readString32","readArray","readMap","validName","firstId","readObject","createSecondByteReader","read0","highByte","readStringJS","end","units","byte1","byte2","byte3","byte4","unit","fromCharCode","start","bytes","byte","readOnlyJSString","type","readPosition","keyCache","asSafeString","entry","checkPosition","chunk","property","firstByte","existingStructure","data","errors","target","refEntry","targetProperties","typedArrays","glbl","typeCode","typedArrayName","ab","TEMP_BUNDLE","dataSize","dataPosition","callback","savedSrcEnd","savedPosition","savedSrcStringStart","savedSrcStringEnd","savedSrcString","savedReferenceMap","savedBundledStrings","savedSrc","savedStructures","savedStructuresContents","savedPackr","savedSequentialMode","unpack","f32Array","textEncoder","extensions","extensionClasses","hasNodeBuffer","ByteArrayAllocate","ByteArray","MAX_BUFFER_SIZE","keysTarget","targetView","safeEnd","writeStructSlots","MAX_BUNDLE_SIZE","hasNonLatin","RECORD_SYMBOL","Packr","hasSharedUpdate","structures","encodeUtf8","packr","isSequential","hasSharedStructures","maxSharedStructures","maxOwnStructures","useTwoByteRecords","sharedLimitId","maxStructureId","recordIdsToRemove","transitionsCount","serializationsSinceTransitionRebuild","encodeOptions","RESERVE_START_SPACE","keys","nextTransition","transition","encodingError","writeStruct","pack","lastBundle","writeBundles","idsToInsert","incrementPosition","insertionPoint","makeRoom","serialized","insertIds","REUSE_BUFFER_MODE","resetStructures","returnBuffer","newSharedData","prepareStructures","RESET_BUFFER_MODE","packArray","strLength","extStart","maxBytes","twoByte","headerSize","c1","c2","strPosition","useFloat32","xShifted","referee","constructor","writeObject","entryValue","extensionClass","writeResult","currentTarget","currentTargetView","currentPosition","writeExtensionData","json","alignedSign","writePlainObject","num","objectOffset","writeRecord","wroteKeys","lastTransition","newTransitions","newRecord","insertNewRecord","recordId","checkUseRecords","newSize","newBuffer","insertionOffset","mainTarget","mainPosition","mainSafeEnd","mainStart","keysPosition","newEnd","insertionPosition","newPosition","notifySharedUpdate","startTarget","buffer","date","allocateForWrite","seconds","set","regex","arrayBuffer","writeExtBuffer","writeBuffer","typedArray","encode","nextId","distanceToMove","lastEnd","offset","writeStrings","compatible","defaultPackr","truncateHashes","arg","depth","acc","rx","replacement","element","prop","originalFormatArgs","_debug","args","debug","freeGlobal","freeSelf","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","objectToString","nullTag","undefinedTag","baseGetTag","isObject","asyncTag","funcTag","genTag","proxyTag","isFunction","coreJsData","maskSrcKey","uid","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","getValue","getNative","eq","other","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","hashHas","hashSet","Hash","entries","index","listCacheClear","assocIndexOf","arrayProto","splice","listCacheDelete","lastIndex","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","FUNC_ERROR_TEXT","memoize","resolver","memoized","cache","_memoize","base","ALPHABET","BASE_MAP","xc","BASE","LEADER","FACTOR","iFACTOR","zeroes","pbegin","pend","b58","carry","it1","it2","str","decodeUnsafe","psz","b256","it3","it4","vch","decode","basex","bs58","base58","keypairToBase58","keypair","keyToBytes","encoding","stretch","password","passwordBytes","salt","sodium","opsLimit","memLimit","keyPair","seed","sodium2","encryptBytes","secret","recipientPublicKey","senderSecretKey","secretBytes","nonce","senderPublicKey","senderKeys","asymmetric","message","decryptBytes","cipher","recipientSecretKey","unpackedCipher","decrypted","encrypt","cipherBytes","decrypt","hash","payload","hashBytes","seedBytes","payloadBytes","pack2","sodium3","randomKeyBytes","sodium4","randomKey","keyPair2","sodium5","sign","secretKey","pack3","secretKeyBytes","signatureBytes","verify","signature","publicKey","publicKeyBytes","signatures","encryptBytes2","messageBytes","pack4","sodium6","encrypted","decryptBytes2","unpack2","encrypt2","decrypt2","symmetric","sodium7"],"mappings":"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G,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,EAAE,CAAC,EAAE,GAAGI,EAAEJ,EAAE,EAAE,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAIK,EAAE,YAAYH,GAAG,EAAEG,GAAGD,EAAE,EAAEJ,CAAC,EAAEK,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGA,EAAEH,IAAI,GAAG,WAAWE,EAAEJ,EAAE,EAAE,CAAC,EAAEK,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGH,EAAEyH,GAAGF,GAAGlH,EAAE,EAAE,GAAG,EAAEN,EAAEC,CAAC,EAAEyH,GAAG3H,EAAE,GAAG,EAAEE,EAAE,GAAG,EAAED,EAAE,KAAKO,EAAER,EAAE,IAAI,CAAC,EAAEQ,EAAER,EAAE,IAAI,CAAC,GAAG,EAAEQ,EAAER,EAAE,IAAI,CAAC,GAAG,GAAGQ,EAAER,EAAE,IAAI,CAAC,GAAG,IAAI,EAAEI,EAAEJ,EAAE,IAAI,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,IAAI,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,IAAI,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,IAAI,CAAC,EAAEC,IAAI,GAAGuH,GAAGtH,EAAE,GAAG,EAAEoB,EAAEpB,EAAE,IAAI,OAAOD,EAAE,IAAII,GAAG,GAAG,OAAO,GAAG,MAAMoI,KAAKnI,GAAG,GAAEmH,GAAGzH,EAAG,KAAI,EAAE,EAAE,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IA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EA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEE,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAG,KAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,GAAG,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,CAAC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Q,EAAE,EAAEP,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG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E,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEK,EAAEE,EAAEP,EAAE,GAAG,CAAC,EAAEC,IAAIE,EAAE,EAAEJ,CAAC,EAAE,IAAIQ,EAAE,EAAER,CAAC,EAAEM,GAAG,IAAIF,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAIM,EAAE2E,GAAG5E,EAAEL,CAAC,EAAEsH,GAAGtH,EAAEK,CAAC,EAAEH,EAAE,IAAI,IAAIM,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAE,EAAEQ,EAAE,EAAER,CAAC,GAAG,EAAE,MAAME,EAAE0I,GAAG3I,EAAE,EAAE,EAAE,GAAG,GAAGqB,EAAEjB,EAAE,IAAI,EAAEH,CAAC,CAAC,SAASqJ,GAAGvJ,EAAEC,EAAE,CAAC,IAAIC,EAAEG,EAAEC,EAAE,EAAEI,EAAEE,EAAE,EAAEE,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,GAAGb,EAAEL,EAAEP,EAAE,IAAI,CAAC,IAAIc,EAAEP,EAAEP,EAAE,IAAI,CAAC,KAAKI,GAAGe,EAAEnB,EAAG,KAAI,GAAGY,EAAE,CAAC,EAAE,EAAE,GAAGa,EAAEb,EAAE,EAAE,GAAGE,EAAEA,EAAE,EAAE,GAAGW,IAAI,GAAG,IAAIgG,GAAG,IAAIzH,EAAEY,EAAE,GAAG,EAAE,EAAE,GAAGA,EAAE,CAAC,EAAER,EAAEJ,EAAE,GAAG,CAAC,EAAE,EAAEwE,GAAGxE,EAAEmB,EAAE,GAAG,CAAC,GAAGM,EAAElB,EAAEP,EAAE,IAAI,CAAC,EAAEuB,EAAEhB,EAAEP,EAAE,IAAI,CAAC,EAAEmB,EAAEZ,EAAEP,EAAE,IAAI,CAAC,EAAEY,EAAEL,EAAEP,EAAE,IAAI,CAAC,EAAEoB,EAAEb,EAAEP,EAAE,IAAI,CAAC,GAAGY,IAAI,GAAG,GAAG,EAAEM,EAAEX,EAAEP,EAAE,IAAI,CAAC,GAAGoB,IAAI,GAAG,GAAG,EAAElB,EAAEK,EAAEP,EAAE,IAAI,CAAC,GAAGkB,IAAI,GAAG,GAAG,EAAEJ,GAAGQ,GAAGV,GAAGA,GAAG,SAASA,KAAKS,EAAEd,EAAEP,EAAE,IAAI,CAAC,EAAEW,GAAET,IAAI,GAAG,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG,IAAIkB,GAAGF,GAAGR,GAAG,SAASR,KAAK,GAAGG,EAAE,SAASa,KAAKZ,GAAGkB,EAAE,SAASJ,KAAKC,EAAET,IAAIE,EAAE,GAAGQ,EAAE,SAASD,GAAG,KAAK,GAAG,GAAG,KAAK,GAAG,GAAG,KAAK,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,SAAS,IAAI,IAAIA,GAAGH,EAAE,UAAUG,GAAGH,IAAI,GAAG,GAAG,EAAE,MAAM,GAAGJ,EAAEI,EAAEE,EAAEE,GAAGf,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEI,EAAE,EAAEH,CAAC,EAAEa,EAAEV,EAAEH,EAAE,EAAE,CAAC,EAAEa,IAAI,EAAEV,EAAEH,EAAE,EAAE,CAAC,EAAEa,IAAI,GAAGV,EAAEH,EAAE,EAAE,CAAC,EAAEa,IAAI,GAAGQ,EAAER,IAAI,EAAEQ,IAAI,EAAER,EAAE,EAAEA,GAAGF,GAAGY,EAAEJ,EAAEI,EAAEN,EAAEZ,IAAI,GAAGM,IAAI,KAAK,GAAGA,EAAEA,EAAEO,EAAE,KAAK,EAAE,EAAEL,EAAEA,GAAGK,EAAEP,KAAK,GAAGA,EAAEA,EAAEU,EAAE,KAAK,EAAER,EAAE,EAAE,EAAEA,EAAEV,EAAEH,EAAE,EAAE,CAAC,EAAEW,EAAER,EAAEH,EAAE,EAAE,CAAC,EAAEW,IAAI,EAAER,EAAEH,EAAE,EAAE,CAAC,EAAEW,IAAI,GAAGR,EAAEH,EAAE,EAAE,CAAC,EAAEW,IAAI,GAAGA,EAAE,EAAEO,GAAGA,GAAGD,EAAEE,EAAEf,EAAEa,EAAE,IAAI,GAAGM,IAAI,MAAM,GAAGD,EAAEJ,EAAEI,EAAE,KAAK,EAAE,EAAEX,EAAEA,EAAEW,EAAEA,EAAET,EAAEF,EAAEA,EAAEE,EAAE,EAAEA,EAAEK,EAAEL,EAAEF,IAAI,EAAEW,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAEV,EAAEH,EAAE,EAAE,CAAC,EAAEW,EAAER,EAAEH,EAAE,EAAE,CAAC,EAAEW,IAAI,EAAER,EAAEH,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGR,EAAEH,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGE,GAAGF,GAAGA,GAAGS,EAAEX,EAAEU,EAAElB,IAAI,EAAEgB,IAAI,IAAIO,EAAE,GAAGX,EAAE,EAAEV,EAAEH,EAAE,GAAG,CAAC,EAAEa,EAAEV,EAAEH,EAAE,GAAG,CAAC,EAAEa,IAAI,EAAEV,EAAEH,EAAE,GAAG,CAAC,EAAEa,IAAI,GAAGV,EAAEH,EAAE,GAAG,CAAC,EAAEa,IAAI,GAAG0G,GAAGxH,EAAE,EAAE,CAAC,CAAC,SAASwJ,GAAGxJ,EAAEC,EAAEC,EAAE,CAACF,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAE,IAAIG,EAAEC,EAAE,EAAE,OAAOgB,EAAEjB,EAAEiB,EAAE,GAAG,EAAElB,EAAEC,EAAE,GAAG,CAAC,EAAE,EAAEC,EAAE,GAAG,EAAEmJ,GAAGlJ,EAAE,IAAI,CAAC,EAAEP,EAAEC,EAAEC,CAAC,IAAIE,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAE,EAAER,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG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,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC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,CAAC,EAAE,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,E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AAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48]} \ No newline at end of file +{"version":3,"file":"index-BXtvCgpn.js","sources":["../../../../node_modules/libsodium-sumo/dist/modules-sumo/libsodium-sumo.js","../../../../node_modules/libsodium-wrappers-sumo/dist/modules-sumo/libsodium-wrappers.js","../../../../node_modules/msgpackr/unpack.js","../../../../node_modules/msgpackr/pack.js","../../../../node_modules/@localfirst/shared/dist/truncateHashes.js","../../../../node_modules/@localfirst/shared/dist/debug.js","../../../../node_modules/lodash-es/_freeGlobal.js","../../../../node_modules/lodash-es/_root.js","../../../../node_modules/lodash-es/_Symbol.js","../../../../node_modules/lodash-es/_getRawTag.js","../../../../node_modules/lodash-es/_objectToString.js","../../../../node_modules/lodash-es/_baseGetTag.js","../../../../node_modules/lodash-es/isObject.js","../../../../node_modules/lodash-es/isFunction.js","../../../../node_modules/lodash-es/_coreJsData.js","../../../../node_modules/lodash-es/_isMasked.js","../../../../node_modules/lodash-es/_toSource.js","../../../../node_modules/lodash-es/_baseIsNative.js","../../../../node_modules/lodash-es/_getValue.js","../../../../node_modules/lodash-es/_getNative.js","../../../../node_modules/lodash-es/eq.js","../../../../node_modules/lodash-es/_nativeCreate.js","../../../../node_modules/lodash-es/_hashClear.js","../../../../node_modules/lodash-es/_hashDelete.js","../../../../node_modules/lodash-es/_hashGet.js","../../../../node_modules/lodash-es/_hashHas.js","../../../../node_modules/lodash-es/_hashSet.js","../../../../node_modules/lodash-es/_Hash.js","../../../../node_modules/lodash-es/_listCacheClear.js","../../../../node_modules/lodash-es/_assocIndexOf.js","../../../../node_modules/lodash-es/_listCacheDelete.js","../../../../node_modules/lodash-es/_listCacheGet.js","../../../../node_modules/lodash-es/_listCacheHas.js","../../../../node_modules/lodash-es/_listCacheSet.js","../../../../node_modules/lodash-es/_ListCache.js","../../../../node_modules/lodash-es/_Map.js","../../../../node_modules/lodash-es/_mapCacheClear.js","../../../../node_modules/lodash-es/_isKeyable.js","../../../../node_modules/lodash-es/_getMapData.js","../../../../node_modules/lodash-es/_mapCacheDelete.js","../../../../node_modules/lodash-es/_mapCacheGet.js","../../../../node_modules/lodash-es/_mapCacheHas.js","../../../../node_modules/lodash-es/_mapCacheSet.js","../../../../node_modules/lodash-es/_MapCache.js","../../../../node_modules/lodash-es/memoize.js","../../../../node_modules/@localfirst/shared/dist/memoize.js","../../../../node_modules/base-x/src/index.js","../../../../node_modules/bs58/index.js","../../../../node_modules/@localfirst/crypto/dist/index.js"],"sourcesContent":["!function(A){function I(A){\"use strict\";var I;void 0===(I=A)&&(I={});var g=I;\"object\"!=typeof g.sodium&&(\"object\"==typeof global?g=global:\"object\"==typeof window&&(g=window));var C=I;return I.ready=new Promise((function(A,I){(B=C).onAbort=I,B.print=function(A){},B.printErr=function(A){},B.onRuntimeInitialized=function(){try{B._crypto_secretbox_keybytes(),A()}catch(A){I(A)}},B.useBackupModule=function(){return new Promise((function(A,I){(B={}).onAbort=I,B.onRuntimeInitialized=function(){Object.keys(C).forEach((function(A){\"getRandomValue\"!==A&&delete C[A]})),Object.keys(B).forEach((function(A){C[A]=B[A]})),A()};var g,B=void 0!==B?B:{},Q=\"object\"==typeof window,i=\"function\"==typeof importScripts,o=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node,E=Object.assign({},B),a=\"\";if(o){var _=require(\"fs\"),c=require(\"path\");a=__dirname+\"/\",g=A=>(A=Y(A)?new URL(A):c.normalize(A),_.readFileSync(A)),!B.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\\\/g,\"/\"),process.argv.slice(2),\"undefined\"!=typeof module&&(module.exports=B)}else(Q||i)&&(i?a=self.location.href:\"undefined\"!=typeof document&&document.currentScript&&(a=document.currentScript.src),a=a.startsWith(\"blob:\")?\"\":a.substr(0,a.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1),i&&(g=A=>{var I=new XMLHttpRequest;return I.open(\"GET\",A,!1),I.responseType=\"arraybuffer\",I.send(null),new Uint8Array(I.response)}));B.print;var t,r=B.printErr||void 0;Object.assign(B,E),E=null,B.arguments&&B.arguments,B.thisProgram&&B.thisProgram,B.quit&&B.quit,B.wasmBinary&&(t=B.wasmBinary);var e,y={Memory:function(A){this.buffer=new ArrayBuffer(65536*A.initial)},Module:function(A){},Instance:function(A,I){this.exports=function(A){for(var I,g=new Uint8Array(123),C=25;C>=0;--C)g[48+C]=52+C,g[65+C]=C,g[97+C]=26+C;function B(A,I,C){for(var B,Q,i=0,o=I,E=C.length,a=I+(3*E>>2)-(\"=\"==C[E-2])-(\"=\"==C[E-1]);i>4,o>2),o>>0>P>>>0?a+1|0:a)|0,a=(QA=(_=P)>>>0>(P=P+QA|0)>>>0?a+1|0:a)+yA|0,iA=eA=P+rA|0,eA=a=eA>>>0

>>0?a+1|0:a,P=UI(P^(o[A+80|0]|o[A+81|0]<<8|o[A+82|0]<<16|o[A+83|0]<<24)^-79577749,QA^(o[A+84|0]|o[A+85|0]<<8|o[A+86|0]<<16|o[A+87|0]<<24)^528734635,32),kA=a=f,a=a+1013904242|0,QA=P,V=a=(P=P-23791573|0)>>>0<4271175723?a+1|0:a,_A=UI(P^aA,a^_A,40),a=(a=eA)+(eA=f)|0,aA=UI(QA^(h=aA=_A+iA|0),kA^(D=h>>>0<_A>>>0?a+1|0:a),48),a=V+(R=f)|0,k=a=(aA=P+(p=aA)|0)>>>0

>>0?a+1|0:a,aA=a=UI(_A^(n=aA),eA^a,1),V=P=f,eA=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,kA=a=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,tA=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,P=(_A=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24)+(QA=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24)|0,a=(GA=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24)+(KA=o[A+44|0]|o[A+45|0]<<8|o[A+46|0]<<16|o[A+47|0]<<24)|0,a=(o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24)+(P>>>0>>0?a+1|0:a)|0,a=kA+(iA=(_=P)>>>0>(P=P+tA|0)>>>0?a+1|0:a)|0,a=(tA=P+eA|0)>>>0

>>0?a+1|0:a,_=UI(P^(o[A+72|0]|o[A+73|0]<<8|o[A+74|0]<<16|o[A+75|0]<<24)^725511199,iA^(o[A+76|0]|o[A+77|0]<<8|o[A+78|0]<<16|o[A+79|0]<<24)^-1694144372,32),e=UI(QA^(c=_-2067093701|0),KA^(x=(J=P=f)-((_>>>0<2067093701)+1150833018|0)|0),40),a=(L=f)+a|0,a=(Y=(F=P=e+tA|0)>>>0>>0?a+1|0:a)+V|0,a=(F>>>0>(P=F+aA|0)>>>0?a+1|0:a)+X|0,a=(QA=(t=P)>>>0>(P=P+oA|0)>>>0?a+1|0:a)+z|0,l=z=P+g|0,s=a=z>>>0

>>0?a+1|0:a,w=aA,wA=V,V=P,iA=QA,aA=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,P=a=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,KA=a=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i=QA=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,X=a,a=(FA=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24)+(r=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24)|0,a=i+((z=o[A+32|0]|o[A+33|0]<<8|o[A+34|0]<<16|o[A+35|0]<<24)>>>0>(t=z+(QA=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24)|0)>>>0?a+1|0:a)|0,a=(tA=(X=t+X|0)>>>0>>0?a+1|0:a)+P|0,fA=t=X+aA|0,t=a=t>>>0>>0?a+1|0:a,y=z,z=UI(X^(o[A+64|0]|o[A+65|0]<<8|o[A+66|0]<<16|o[A+67|0]<<24)^-1377402159,tA^(o[A+68|0]|o[A+69|0]<<8|o[A+70|0]<<16|o[A+71|0]<<24)^1359893119,32),tA=a=f,a=a+1779033703|0,X=z,U=a=(z=z-205731576|0)>>>0<4089235720?a+1|0:a,r=UI(y^(S=z),a^r,40),a=(m=f)+t|0,y=UI(X^(t=z=r+fA|0),tA^(G=r>>>0>t>>>0?a+1|0:a),48),a=UI(y^V,(T=f)^iA,32),W=z=f,u=a,B=a=o[I+60|0]|o[I+61|0]<<8|o[I+62|0]<<16|o[I+63|0]<<24,tA=fA=o[I+56|0]|o[I+57|0]<<8|o[I+58|0]<<16|o[I+59|0]<<24,K=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,z=(iA=o[I+48|0]|o[I+49|0]<<8|o[I+50|0]<<16|o[I+51|0]<<24)+(X=o[A+56|0]|o[A+57|0]<<8|o[A+58|0]<<16|o[A+59|0]<<24)|0,a=(SA=o[I+52|0]|o[I+53|0]<<8|o[I+54|0]<<16|o[I+55|0]<<24)+(d=o[A+60|0]|o[A+61|0]<<8|o[A+62|0]<<16|o[A+63|0]<<24)|0,a=(o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24)+(z>>>0>>0?a+1|0:a)|0,a=B+(V=(M=z)>>>0>(z=K+z|0)>>>0?a+1|0:a)|0,a=(K=z+tA|0)>>>0>>0?a+1|0:a,V=UI(z^(o[A+88|0]|o[A+89|0]<<8|o[A+90|0]<<16|o[A+91|0]<<24)^327033209,V^(o[A+92|0]|o[A+93|0]<<8|o[A+94|0]<<16|o[A+95|0]<<24)^1541459225,32),X=UI(X^(tA=V+1595750129|0),(M=d)^(d=(b=z=f)-((V>>>0<2699217167)+1521486533|0)|0),40),a=(IA=f)+a|0,z=UI((K=z=X+K|0)^V,b^(M=K>>>0>>0?a+1|0:a),48),a=d+($=f)|0,H=a=(z=tA+(d=z)|0)>>>0>>0?a+1|0:a,a=W+a|0,O=w^(V=u+(b=z)|0),w=a=V>>>0>>0?a+1|0:a,tA=UI(O,a^wA,40),a=(wA=f)+s|0,z=UI(l=u^(s=z=tA+l|0),W^(u=s>>>0>>0?a+1|0:a),48),a=w+(CA=f)|0,W=a=(w=V+(l=z)|0)>>>0>>0?a+1|0:a,z=(v=UI(w^tA,wA^a,1))+(V=o[I+72|0]|o[I+73|0]<<8|o[I+74|0]<<16|o[I+75|0]<<24)|0,a=(hA=f)+(wA=o[I+76|0]|o[I+77|0]<<8|o[I+78|0]<<16|o[I+79|0]<<24)|0,nA=z,q=z>>>0>>0?a+1|0:a,Z=sA,z=o[I+96|0]|o[I+97|0]<<8|o[I+98|0]<<16|o[I+99|0]<<24,tA=a=o[I+100|0]|o[I+101|0]<<8|o[I+102|0]<<16|o[I+103|0]<<24,X=(a=h)+(h=UI(b^X,H^IA,1))|0,a=(b=f)+D|0,a=(h>>>0>X>>>0?a+1|0:a)+tA|0,a=(D=(D=X)>>>0>(X=z+X|0)>>>0?a+1|0:a)+Z|0,O=H=X+gA|0,H=a=H>>>0>>0?a+1|0:a,F=UI(_^F,Y^J,48),Y=a=UI(F^X,(J=f)^D,32),a=U+T|0,a=(IA=X=f)+(S=(X=y+S|0)>>>0>>0?a+1|0:a)|0,U=a=(D=X)>>>0>(y=D+Y|0)>>>0?a+1|0:a,h=UI(y^h,b^a,40),a=(T=f)+H|0,a=(b=h>>>0>(H=X=h+O|0)>>>0?a+1|0:a)+q|0,a=(_=H>>>0>(X=H+nA|0)>>>0?a+1|0:a)+pA|0,nA=q=X+EA|0,q=a=q>>>0>>0?a+1|0:a,O=X,Z=_,X=o[I+116|0]|o[I+117|0]<<8|o[I+118|0]<<16|o[I+119|0]<<24,I=o[I+112|0]|o[I+113|0]<<8|o[I+114|0]<<16|o[I+115|0]<<24,r=UI(r^D,S^m,1),a=(m=f)+M|0,a=((_=r+K|0)>>>0>>0?a+1|0:a)+X|0,a=(D=(S=_)>>>0>(_=I+_|0)>>>0?a+1|0:a)+pA|0,MA=S=_+EA|0,S=a=S>>>0<_>>>0?a+1|0:a,a=UI(_^p,D^R,32),AA=_=f,p=a,D=_,a=J+x|0,F=_=c+F|0,K=a=_>>>0>>0?a+1|0:a,a=a+D|0,M=_=_+p|0,R=a=F>>>0>_>>>0?a+1|0:a,D=UI(_^r,m^a,40),a=(m=f)+S|0,p=UI((_=D+MA|0)^p,AA^(c=_>>>0>>0?a+1|0:a),48),a=UI(p^O,(MA=f)^Z,32),AA=r=f,S=a,O=r,e=UI(e^F,K^L,1),a=G+(F=f)|0,a=((r=t)>>>0>(t=t+e|0)>>>0?a+1|0:a)+BA|0,a=(t=(r=t+j|0)>>>0>>0?a+1|0:a)+wA|0,Z=G=r+V|0,G=a=G>>>0>>0?a+1|0:a,K=e,r=UI(r^d,t^$,32),a=(d=f)+k|0,n=UI(K^(t=e=r+n|0),(k=r>>>0>t>>>0?a+1|0:a)^F,40),a=($=f)+G|0,F=e=n+Z|0,e=UI(r^e,d^(G=e>>>0>>0?a+1|0:a),48),a=k+(E=f)|0,k=e,d=a=(e=t+e|0)>>>0>>0?a+1|0:a,a=a+O|0,a=(K=e)>>>0>(e=e+S|0)>>>0?a+1|0:a,O=e,e^=v,v=a,r=UI(e,hA^a,40),a=(hA=f)+q|0,q=e=r+nA|0,a=Q+(Z=r>>>0>e>>>0?a+1|0:a)|0,nA=e=e+g|0,J=a=e>>>0>>0?a+1|0:a,e=_,x=gA,L=sA,_=UI(Y^H,b^IA,48),a=U+(IA=f)|0,Y=_,U=a=(t=y+_|0)>>>0>>0?a+1|0:a,_=UI(t^h,T^a,1),a=(y=f)+L|0,a=((h=_+x|0)>>>0<_>>>0?a+1|0:a)+c|0,a=SA+(e=(c=e+h|0)>>>0>>0?a+1|0:a)|0,H=h=c+iA|0,h=a=h>>>0>>0?a+1|0:a,c=UI(c^k,e^E,32),a=W+(b=f)|0,k=c,w=a=(c=w+c|0)>>>0>>0?a+1|0:a,e=UI(_^c,a^y,40),a=(a=h)+(h=f)|0,y=_=e+H|0,_=UI(_^k,b^(H=_>>>0>>0?a+1|0:a),48),a=w+(T=f)|0,b=_,W=a=(w=c+_|0)>>>0>>0?a+1|0:a,_=UI(e^w,h^a,1),a=(h=f)+J|0,a=B+(e=(c=_+nA|0)>>>0<_>>>0?a+1|0:a)|0,nA=k=c+fA|0,k=a=k>>>0>>0?a+1|0:a,J=_,x=h,a=R+MA|0,a=(_=p+M|0)>>>0

>>0?a+1|0:a,p=_,M=a,a=UI(_^D,m^a,1),D=h=f,_=a,a=G+X|0,a=((F=I+F|0)>>>0>>0?a+1|0:a)+h|0,a=DA+(F=(h=_+F|0)>>>0>>0?a+1|0:a)|0,R=G=h+oA|0,G=a=G>>>0>>0?a+1|0:a,h=UI(h^l,F^CA,32),a=U+(l=f)|0,F=h,U=a=(U=t)>>>0>(t=t+h|0)>>>0?a+1|0:a,h=UI(_^t,a^D,40),a=(m=f)+G|0,D=_=h+R|0,_=UI(G=_^F,l^(F=_>>>0>>0?a+1|0:a),48),a=U+(CA=f)|0,U=_,G=_=t+_|0,l=a=_>>>0>>0?a+1|0:a,R=c,L=e,_=UI(n^K,d^$,1),a=(t=f)+N|0,a=u+((c=_+cA|0)>>>0<_>>>0?a+1|0:a)|0,a=BA+(e=(c=c+s|0)>>>0>>0?a+1|0:a)|0,u=s=c+j|0,s=a=s>>>0>>0?a+1|0:a,n=_,_=(c=UI(c^Y,e^IA,32))+p|0,a=(p=f)+M|0,e=_,t=UI(_^n,(Y=_>>>0>>0?a+1|0:a)^t,40),a=(IA=f)+s|0,s=_=t+u|0,K=UI(_^c,p^(u=_>>>0>>0?a+1|0:a),48),c=UI(K^R,(a=L)^(L=f),32),a=(R=f)+l|0,p=_=c+G|0,n=UI(_^J,(M=_>>>0>>0?a+1|0:a)^x,40),a=(J=f)+k|0,k=_=n+nA|0,_=UI(_^c,R^(d=_>>>0>>0?a+1|0:a),48),a=M+($=f)|0,M=_,R=a=(c=p)>>>0>(p=p+_|0)>>>0?a+1|0:a,_=UI(p^n,J^a,1),a=pA+(nA=f)|0,J=_,MA=_=EA+_|0,n=a=_>>>0>>0?a+1|0:a,c=rA,_=UI(h^G,m^l,1),a=H+(h=f)|0,a=((G=y)>>>0>(y=_+y|0)>>>0?a+1|0:a)+yA|0,a=(G=(c=c+y|0)>>>0>>0?a+1|0:a)+kA|0,x=y=c+eA|0,H=a=y>>>0>>0?a+1|0:a,l=_,y=UI(S^q,Z^AA,48),a=UI(y^c,(m=f)^G,32),AA=_=f,S=a,c=_,a=Y+L|0,a=(_=e+K|0)>>>0>>0?a+1|0:a,e=_,Y=a,a=a+c|0,G=_=_+S|0,K=a=e>>>0>_>>>0?a+1|0:a,c=UI(_^l,a^h,40),a=(a=H)+(H=f)|0,l=_=c+x|0,q=a=_>>>0>>0?a+1|0:a,a=a+n|0,Z=a=(h=_+MA|0)>>>0<_>>>0?a+1|0:a,n=a,_=UI(t^e,Y^IA,1),a=P+(t=f)|0,a=F+((e=_+aA|0)>>>0>>0?a+1|0:a)|0,a=tA+(D=(e=e+D|0)>>>0>>0?a+1|0:a)|0,x=F=e+z|0,F=a=F>>>0>>0?a+1|0:a,Y=_,a=UI(e^b,D^T,32),L=_=f,e=a,D=_,a=m+v|0,b=_=y+O|0,v=a=_>>>0>>0?a+1|0:a,a=a+D|0,a=(y=_+e|0)>>>0<_>>>0?a+1|0:a,_=y^Y,Y=a,D=UI(_,a^t,40),a=(T=f)+F|0,t=_=D+x|0,O=UI(_^e,L^(F=_>>>0>>0?a+1|0:a),48),a=UI(O^h,(IA=f)^n,32),MA=_=f,x=a,n=_,_=UI(r^b,v^hA,1),a=u+(r=f)|0,a=FA+((e=_+s|0)>>>0>>0?a+1|0:a)|0,a=(s=(e=e+QA|0)>>>0>>0?a+1|0:a)+GA|0,b=u=e+_A|0,u=a=u>>>0>>0?a+1|0:a,e=UI(e^U,s^CA,32),a=W+(v=f)|0,U=e,s=r,r=a=(e=w+e|0)>>>0>>0?a+1|0:a,s=UI(_^e,s^a,40),a=(CA=f)+u|0,w=_=s+b|0,_=UI(b=_^U,v^(U=_>>>0>>0?a+1|0:a),48),a=r+(m=f)|0,r=_,u=_=e+_|0,b=a=_>>>0>>0?a+1|0:a,a=a+n|0,W=a=(n=_+x|0)>>>0<_>>>0?a+1|0:a,e=UI(n^J,nA^a,40),a=Z+(v=f)|0,a=((_=e+h|0)>>>0>>0?a+1|0:a)+sA|0,h=_,Z=_=_+gA|0,J=a=h>>>0>_>>>0?a+1|0:a,L=BA,h=UI(S^l,q^AA,48),a=(hA=f)+K|0,S=_=h+G|0,a=UI(_^c,(G=_>>>0>>0?a+1|0:a)^H,1),H=c=f,_=a,a=F+Q|0,a=((t=t+g|0)>>>0>>0?a+1|0:a)+c|0,a=(t=(c=_+t|0)>>>0>>0?a+1|0:a)+L|0,K=F=c+j|0,F=a=F>>>0>>0?a+1|0:a,c=UI(c^r,t^m,32),a=R+(l=f)|0,p=a=(r=c+p|0)>>>0

>>0?a+1|0:a,t=UI(_^r,a^H,40),a=(q=f)+F|0,F=_=t+K|0,c=UI(_^c,l^(H=_>>>0>>0?a+1|0:a),48),a=p+(K=f)|0,l=a=(p=c+r|0)>>>0>>0?a+1|0:a,_=UI(t^p,q^a,1),a=(q=f)+J|0,a=wA+((r=_+Z|0)>>>0<_>>>0?a+1|0:a)|0,a=(t=(r=r+V|0)>>>0>>0?a+1|0:a)+N|0,nA=N=r+cA|0,N=a=N>>>0>>0?a+1|0:a,R=_,L=r,m=t,r=rA,_=UI(s^u,b^CA,1),a=d+(s=f)|0,a=((t=k)>>>0>(k=_+k|0)>>>0?a+1|0:a)+yA|0,a=GA+(t=(r=r+k|0)>>>0>>0?a+1|0:a)|0,d=k=r+_A|0,u=a=k>>>0<_A>>>0?a+1|0:a,k=_,t=a=UI(r^h,t^hA,32),a=Y+IA|0,a=(b=_=f)+(y=(_=y+O|0)>>>0>>0?a+1|0:a)|0,Y=a=(h=_+t|0)>>>0<_>>>0?a+1|0:a,k=UI(h^k,a^s,40),a=(IA=f)+u|0,u=UI(d=(r=k+d|0)^t,b^(t=r>>>0>>0?a+1|0:a),48),a=UI(u^L,(CA=f)^m,32),hA=s=f,d=a,b=s,_=UI(_^D,y^T,1),a=tA+(s=f)|0,a=U+((y=_+z|0)>>>0>>0?a+1|0:a)|0,a=FA+(w=(y=y+w|0)>>>0>>0?a+1|0:a)|0,L=D=y+QA|0,D=a=D>>>0>>0?a+1|0:a,U=_,O=s,y=UI(y^M,w^$,32),a=(M=f)+G|0,s=_=y+S|0,w=UI(_^U,(S=_>>>0>>0?a+1|0:a)^O,40),a=(T=f)+D|0,U=_=w+L|0,_=UI(_^y,M^(G=_>>>0>>0?a+1|0:a),48),a=S+(L=f)|0,D=_,S=_=s+_|0,M=a=_>>>0>>0?a+1|0:a,a=a+b|0,b=_=_+d|0,y=q,q=a=S>>>0>_>>>0?a+1|0:a,y=UI(_^R,y^a,40),a=(a=N)+(N=f)|0,O=_=y+nA|0,R=a=_>>>0>>0?a+1|0:a,s=t,_=UI(x^Z,J^MA,48),a=W+($=f)|0,W=_,t=(_=n+_|0)^e,e=a=_>>>0>>0?a+1|0:a,t=UI(t,a^v,1),a=(v=f)+s|0,a=B+((r=t+r|0)>>>0>>0?a+1|0:a)|0,a=(s=(r=r+fA|0)>>>0>>0?a+1|0:a)+P|0,Z=n=r+aA|0,n=a=n>>>0>>0?a+1|0:a,r=UI(r^D,s^L,32),a=l+(J=f)|0,l=r,p=a=(s=p+r|0)>>>0

>>0?a+1|0:a,t=UI(t^s,v^a,40),a=(a=n)+(n=f)|0,D=r=t+Z|0,r=UI(x=r^l,J^(l=r>>>0>>0?a+1|0:a),48),a=p+(nA=f)|0,v=r,Z=a=(p=s+r|0)>>>0>>0?a+1|0:a,r=UI(t^p,n^a,1),a=(n=f)+R|0,a=Q+((t=r+O|0)>>>0>>0?a+1|0:a)|0,a=X+(s=(t=t+g|0)>>>0>>0?a+1|0:a)|0,MA=J=I+t|0,J=a=J>>>0>>0?a+1|0:a,x=r,L=n,n=t,m=s,r=UI(w^S,M^T,1),a=(s=f)+H|0,a=DA+((t=r+F|0)>>>0>>0?a+1|0:a)|0,a=(w=(t=t+oA|0)>>>0>>0?a+1|0:a)+X|0,H=F=I+t|0,F=a=F>>>0>>0?a+1|0:a,S=r,t=a=UI(t^W,w^$,32),w=r=f,a=Y+CA|0,Y=a=(r=h+u|0)>>>0>>0?a+1|0:a,a=a+w|0,a=(h=r)>>>0>(r=r+t|0)>>>0?a+1|0:a,u=r,r^=S,S=a,s=UI(r,a^s,40),a=(T=f)+F|0,w=UI(F=(r=s+H|0)^t,w^(t=r>>>0>>0?a+1|0:a),48),a=UI(w^n,(a=m)^(m=f),32),$=n=f,F=a,H=e,e=c,a=UI(h^k,Y^IA,1),M=c=f,h=a,a=G+kA|0,a=((k=U+eA|0)>>>0>>0?a+1|0:a)+c|0,k=a=(c=h+k|0)>>>0>>0?a+1|0:a,e=UI(c^e,a^K,32),a=(a=H)+(H=f)|0,h=UI((_=e+_|0)^h,M^(Y=_>>>0>>0?a+1|0:a),40),a=k+(IA=f)|0,U=h,a=SA+((G=c)>>>0>(c=c+h|0)>>>0?a+1|0:a)|0,G=a=(h=c+iA|0)>>>0>>0?a+1|0:a,c=UI(e^h,H^a,48),a=Y+(CA=f)|0,K=_,e=c,Y=_=_+c|0,H=a=K>>>0>_>>>0?a+1|0:a,a=a+n|0,K=a=(n=_+F|0)>>>0<_>>>0?a+1|0:a,_=(k=UI(n^x,a^L,40))+MA|0,a=(MA=f)+J|0,M=_,W=_>>>0>>0?a+1|0:a,_=UI(d^O,R^hA,48),a=(d=f)+q|0,b=c=_+b|0,x=N,N=a=c>>>0<_>>>0?a+1|0:a,a=UI(c^y,x^a,1),O=c=f,y=a,a=t+B|0,a=((r=r+fA|0)>>>0>>0?a+1|0:a)+c|0,a=wA+(r=(c=r+y|0)>>>0>>0?a+1|0:a)|0,R=t=c+V|0,t=a=t>>>0>>0?a+1|0:a,c=UI(c^e,r^CA,32),a=Z+(J=f)|0,q=c,c=(e=p+c|0)^y,y=a=e>>>0

>>0?a+1|0:a,r=UI(c,O^a,40),a=(a=t)+(t=f)|0,O=c=r+R|0,c=UI(p=c^q,J^(q=c>>>0>>0?a+1|0:a),48),a=y+(CA=f)|0,Z=c,e=a=(c=e+c|0)>>>0>>0?a+1|0:a,r=UI(c^r,t^a,1),a=(p=f)+W|0,a=pA+((t=r+M|0)>>>0>>0?a+1|0:a)|0,a=(y=(t=t+EA|0)>>>0>>0?a+1|0:a)+BA|0,AA=R=t+j|0,R=a=R>>>0>>0?a+1|0:a,J=r,x=t,L=y,r=UI(U^Y,H^IA,1),a=(H=f)+sA|0,a=l+(r>>>0>(t=r+gA|0)>>>0?a+1|0:a)|0,y=a=(t=t+D|0)>>>0>>0?a+1|0:a,a=UI(_^t,a^d,32),d=_=f,D=a,a=S+m|0,a=(_=w+u|0)>>>0>>0?a+1|0:a,w=_,Y=a,a=d+a|0,S=_=_+D|0,U=a=w>>>0>_>>>0?a+1|0:a,_=UI(_^r,H^a,40),a=y+(m=f)|0,u=_,a=tA+((_=t+_|0)>>>0>>0?a+1|0:a)|0,a=(_=_+z|0)>>>0>>0?a+1|0:a,H=_,_^=D,D=a,y=UI(_,d^a,48),a=UI(y^x,(a=L)^(L=f),32),IA=_=f,d=a,l=_,_=UI(s^w,Y^T,1),a=kA+(t=f)|0,a=G+((r=_+eA|0)>>>0>>0?a+1|0:a)|0,a=(s=(r=r+h|0)>>>0>>0?a+1|0:a)+P|0,G=w=r+aA|0,w=a=w>>>0>>0?a+1|0:a,h=_,Y=t,_=(r=UI(r^v,s^nA,32))+b|0,a=(b=f)+N|0,t=_,s=UI(s=_^h,(h=_>>>0>>0?a+1|0:a)^Y,40),a=(T=f)+w|0,w=_=s+G|0,r=UI(_^r,b^(N=_>>>0>>0?a+1|0:a),48),a=h+(Y=f)|0,G=_=r+t|0,b=a=_>>>0>>0?a+1|0:a,a=a+l|0,l=a=(h=_+d|0)>>>0<_>>>0?a+1|0:a,t=UI(h^J,a^p,40),a=(v=f)+R|0,R=_=t+AA|0,J=a=_>>>0>>0?a+1|0:a,_=c,p=e,e=r,c=UI(F^M,W^$,48),a=K+(AA=f)|0,F=c,n=a=(r=n+c|0)>>>0>>0?a+1|0:a,a=UI(r^k,MA^a,1),K=c=f,k=a,a=D+NA|0,a=((D=H+cA|0)>>>0>>0?a+1|0:a)+c|0,D=a=(c=D+k|0)>>>0>>0?a+1|0:a,e=UI(c^e,a^Y,32),a=(H=f)+p|0,k=UI((_=e+_|0)^k,K^(p=_>>>0>>0?a+1|0:a),40),a=D+(M=f)|0,a=FA+((D=c)>>>0>(c=c+k|0)>>>0?a+1|0:a)|0,Y=a=(D=c+QA|0)>>>0>>0?a+1|0:a,c=UI(e^D,H^a,48),a=p+($=f)|0,H=c,K=a=(p=_+c|0)>>>0<_>>>0?a+1|0:a,_=UI(p^k,M^a,1),a=(k=f)+J|0,a=DA+((c=_+R|0)>>>0<_>>>0?a+1|0:a)|0,a=pA+(e=(c=c+oA|0)>>>0>>0?a+1|0:a)|0,hA=M=c+EA|0,M=a=M>>>0>>0?a+1|0:a,W=_,x=c,_=UI(s^G,b^T,1),a=(s=f)+q|0,a=GA+((c=_+O|0)>>>0<_>>>0?a+1|0:a)|0,a=SA+(G=(c=c+_A|0)>>>0<_A>>>0?a+1|0:a)|0,O=b=c+iA|0,b=a=b>>>0>>0?a+1|0:a,q=_,a=UI(c^F,G^AA,32),AA=_=f,c=a,a=U+L|0,S=_=y+S|0,F=a=_>>>0>>0?a+1|0:a,a=AA+a|0,U=a=(y=_+c|0)>>>0<_>>>0?a+1|0:a,s=UI(y^q,a^s,40),a=(L=f)+b|0,G=_=s+O|0,q=UI(_^c,AA^(b=_>>>0>>0?a+1|0:a),48),a=UI(q^x,(AA=f)^e,32),T=_=f,O=a,e=_,c=rA,_=UI(S^u,F^m,1),a=N+(F=f)|0,a=((S=w)>>>0>(w=_+w|0)>>>0?a+1|0:a)+yA|0,a=DA+(w=(c=c+w|0)>>>0>>0?a+1|0:a)|0,S=N=c+oA|0,N=a=N>>>0>>0?a+1|0:a,c=UI(c^Z,w^CA,32),a=n+(u=f)|0,n=c,a=(c=r+c|0)>>>0>>0?a+1|0:a,r=F,F=a,r=UI(_^c,r^a,40),a=(m=f)+N|0,w=_=r+S|0,_=UI(_^n,u^(N=_>>>0>>0?a+1|0:a),48),a=F+(x=f)|0,F=_,S=_=c+_|0,u=a=_>>>0>>0?a+1|0:a,a=a+e|0,a=(n=_+O|0)>>>0<_>>>0?a+1|0:a,_=n^W,W=a,k=UI(_,a^k,40),a=(CA=f)+M|0,M=_=k+hA|0,Z=_>>>0>>0?a+1|0:a,_=UI(d^R,J^IA,48),a=l+(IA=f)|0,d=_,a=(_=h+_|0)>>>0>>0?a+1|0:a,h=_,l=a,a=UI(_^t,a^v,1),v=_=f,e=a,a=b+wA|0,a=((c=G+V|0)>>>0>>0?a+1|0:a)+_|0,a=FA+(c=(_=c+e|0)>>>0>>0?a+1|0:a)|0,G=t=_+QA|0,t=a=t>>>0>>0?a+1|0:a,_=UI(_^F,c^x,32),a=K+(b=f)|0,F=_,p=a=(c=p+_|0)>>>0

>>0?a+1|0:a,e=UI(c^e,v^a,40),a=(v=f)+t|0,G=_=e+G|0,_=UI(t=_^F,b^(F=_>>>0>>0?a+1|0:a),48),a=p+(hA=f)|0,p=_,K=a=(t=c+_|0)>>>0>>0?a+1|0:a,_=UI(t^e,v^a,1),a=(b=f)+Z|0,a=kA+((c=_+M|0)>>>0<_>>>0?a+1|0:a)|0,a=(e=(c=c+eA|0)>>>0>>0?a+1|0:a)+sA|0,nA=v=c+gA|0,v=a=v>>>0>>0?a+1|0:a,R=_,J=c,x=e,_=UI(r^S,m^u,1),a=GA+(e=f)|0,a=Y+((c=_+_A|0)>>>0<_A>>>0?a+1|0:a)|0,a=NA+(r=(c=c+D|0)>>>0>>0?a+1|0:a)|0,u=D=c+cA|0,D=a=D>>>0>>0?a+1|0:a,Y=_,S=e,a=UI(c^d,r^IA,32),d=_=f,r=a,c=_,a=U+AA|0,a=(_=y+q|0)>>>0>>0?a+1|0:a,y=_,U=a,a=a+c|0,a=(e=_+r|0)>>>0<_>>>0?a+1|0:a,_=e^Y,Y=a,_=UI(_,a^S,40),a=(a=D)+(D=f)|0,S=c=_+u|0,u=a=c>>>0<_>>>0?a+1|0:a,d=UI(c^r,d^a,48),a=UI(d^J,(a=x)^(x=f),32),m=c=f,q=a,c=UI(y^s,U^L,1),a=(y=f)+yA|0,a=N+((r=c+rA|0)>>>0>>0?a+1|0:a)|0,a=B+(s=(r=r+w|0)>>>0>>0?a+1|0:a)|0,L=w=r+fA|0,w=a=w>>>0>>0?a+1|0:a,N=c,U=y,r=UI(r^H,s^$,32),a=(H=f)+l|0,y=c=r+h|0,c=(s=UI(c^N,(h=c>>>0>>0?a+1|0:a)^U,40))+L|0,a=(L=f)+w|0,N=c,c=UI(c^r,H^(U=c>>>0>>0?a+1|0:a),48),a=h+(AA=f)|0,H=c,l=c=y+c|0,J=a=c>>>0>>0?a+1|0:a,a=m+a|0,a=(r=c+q|0)>>>0>>0?a+1|0:a,c=b,b=a,y=UI(r^R,c^a,40),a=(IA=f)+v|0,w=c=y+nA|0,a=UI(c^q,m^(v=c>>>0>>0?a+1|0:a),48),m=c=f,q=a,c=_,a=Y+x|0,Y=_=e+d|0,d=a=_>>>0>>0?a+1|0:a,a=UI(_^c,a^D,1),e=c=f,_=a,a=U+Q|0,a=((h=N+g|0)>>>0>>0?a+1|0:a)+c|0,a=tA+(h=(c=_+h|0)>>>0>>0?a+1|0:a)|0,x=D=c+z|0,D=a=D>>>0>>0?a+1|0:a,N=_,U=e,_=UI(M^O,Z^T,48),a=W+(T=f)|0,M=_,a=(_=n+_|0)>>>0>>0?a+1|0:a,n=_,c=UI(c^p,h^hA,32),W=a,a=a+(O=f)|0,e=_=c+_|0,h=UI(_^N,(p=_>>>0>>0?a+1|0:a)^U,40),a=(Z=f)+D|0,D=_=h+x|0,_=UI(_^c,O^(N=_>>>0>>0?a+1|0:a),48),a=p+($=f)|0,U=_,O=a=(p=e+_|0)>>>0>>0?a+1|0:a,_=UI(h^p,Z^a,1),a=FA+(x=f)|0,Z=_,hA=_=QA+_|0,e=a=_>>>0>>0?a+1|0:a,_=UI(k^n,W^CA,1),a=(h=f)+u|0,a=SA+((c=_+S|0)>>>0<_>>>0?a+1|0:a)|0,a=BA+(n=(c=c+iA|0)>>>0>>0?a+1|0:a)|0,W=k=c+j|0,k=a=k>>>0>>0?a+1|0:a,S=h,c=UI(c^H,n^AA,32),a=K+(AA=f)|0,u=c,a=(h=t+c|0)>>>0>>0?a+1|0:a,t=S,S=a,n=UI(_^h,t^a,40),a=(CA=f)+k|0,H=_=n+W|0,a=(K=_>>>0>>0?a+1|0:a)+e|0,k=a=(e=_+hA|0)>>>0<_>>>0?a+1|0:a,W=a=UI(e^q,a^m,32),R=_=f,_=UI(s^l,J^L,1),a=(t=f)+F|0,a=X+((c=_+G|0)>>>0<_>>>0?a+1|0:a)|0,a=(s=(c=I+c|0)>>>0>>0?a+1|0:a)+P|0,J=F=c+aA|0,F=a=F>>>0>>0?a+1|0:a,G=_,l=t,c=UI(c^M,s^T,32),a=(M=f)+d|0,t=_=c+Y|0,_=(s=UI(_^G,(Y=_>>>0>>0?a+1|0:a)^l,40))+J|0,a=(J=f)+F|0,F=_,_=UI(_^c,M^(G=_>>>0>>0?a+1|0:a),48),a=Y+(T=f)|0,Y=_,M=a=(_=t+_|0)>>>0>>0?a+1|0:a,a=a+R|0,d=a=(t=_)>>>0>(_=_+W|0)>>>0?a+1|0:a,c=UI(_^Z,x^a,40),a=k+(x=f)|0,l=c,a=Q+((c=e+c|0)>>>0>>0?a+1|0:a)|0,Z=c=c+g|0,e=c^W,W=a=c>>>0>>0?a+1|0:a,c=UI(e,R^a,48),a=d+(R=f)|0,d=a=(k=_+c|0)>>>0<_>>>0?a+1|0:a,_=a=UI(k^l,x^a,1),l=e=f,e=UI(t^s,M^J,1),a=N+(s=f)|0,a=SA+((t=e+D|0)>>>0>>0?a+1|0:a)|0,a=DA+(D=(t=t+iA|0)>>>0>>0?a+1|0:a)|0,x=N=t+oA|0,N=a=N>>>0>>0?a+1|0:a,M=e,J=s,a=b+m|0,a=(e=r+q|0)>>>0>>0?a+1|0:a,b=e,u=UI(H^u,K^AA,48),s=UI(t^u,D^(AA=f),32),H=a,a=a+(hA=f)|0,D=e=s+e|0,e=UI(e^M,(K=e>>>0>>0?a+1|0:a)^J,40),a=(M=f)+N|0,J=a=(r=e+x|0)>>>0>>0?a+1|0:a,a=a+l|0,a=B+((q=r)>>>0>(r=_+r|0)>>>0?a+1|0:a)|0,a=(t=(r=r+fA|0)>>>0>>0?a+1|0:a)+yA|0,nA=N=r+rA|0,x=a=N>>>0>>0?a+1|0:a,L=_,m=r,a=UI(y^b,H^IA,1),y=r=f,_=a,a=G+GA|0,a=((N=F+_A|0)>>>0<_A>>>0?a+1|0:a)+r|0,a=tA+(N=(r=_+N|0)>>>0>>0?a+1|0:a)|0,H=F=r+z|0,F=a=F>>>0>>0?a+1|0:a,G=_,a=UI(r^U,N^$,32),b=_=f,r=a,N=_,a=S+AA|0,S=_=h+u|0,U=a=_>>>0>>0?a+1|0:a,a=a+N|0,a=(h=_+r|0)>>>0<_>>>0?a+1|0:a,_=h^G;G=a,N=UI(_,a^y,40),a=(AA=f)+F|0,u=UI(F=(_=N+H|0)^r,b^(r=_>>>0>>0?a+1|0:a),48),a=UI(a=u^m,(m=f)^t,32),IA=t=f,H=a,F=t,t=UI(n^S,U^CA,1),a=BA+(n=f)|0,a=v+((y=t+j|0)>>>0>>0?a+1|0:a)|0,a=kA+(w=(y=y+w|0)>>>0>>0?a+1|0:a)|0,U=S=y+eA|0,S=a=S>>>0>>0?a+1|0:a,y=UI(y^Y,w^T,32),a=O+(b=f)|0,Y=y,p=a=(y=p+y|0)>>>0

>>0?a+1|0:a,w=UI(t^y,a^n,40),a=(T=f)+S|0,n=t=w+U|0,t=UI(S=t^Y,b^(Y=t>>>0>>0?a+1|0:a),48),a=p+($=f)|0,S=t,U=t=y+t|0,b=a=t>>>0>>0?a+1|0:a,a=a+F|0,a=(y=t+H|0)>>>0>>0?a+1|0:a,t=l,l=a,p=UI(y^L,t^a,40),a=(v=f)+x|0,F=t=p+nA|0,t=UI(x=t^H,IA^(H=t>>>0

>>0?a+1|0:a),48),a=l+(IA=f)|0,l=t,y=a=(t=y+t|0)>>>0>>0?a+1|0:a,v=a=UI(t^p,v^a,1),CA=a,O=p=f,p=r,r=e,e=UI(s^q,J^hA,48),a=K+(hA=f)|0,K=e,a=(e=D+e|0)>>>0>>0?a+1|0:a,D=_,_=r^e,r=a,_=UI(_,a^M,1),a=(M=f)+p|0,a=NA+(_>>>0>(s=D+_|0)>>>0?a+1|0:a)|0,a=sA+(D=(s=s+cA|0)>>>0>>0?a+1|0:a)|0,q=p=s+gA|0,p=a=p>>>0>>0?a+1|0:a,s=UI(s^S,D^$,32),a=d+(J=f)|0,S=a=(D=s+k|0)>>>0>>0?a+1|0:a,k=UI(_^D,M^a,40),a=($=f)+p|0,M=_=k+q|0,s=UI(_^s,J^(d=_>>>0>>0?a+1|0:a),48),a=S+(q=f)|0,J=_=s+D|0,S=_,x=a=_>>>0>>0?a+1|0:a,D=e,p=r,a=G+m|0,a=(_=h+u|0)>>>0>>0?a+1|0:a,h=_,_^=N,N=a,a=UI(_,AA^a,1),L=_=f,G=a,r=a,a=Y+P|0,a=((e=n+aA|0)>>>0>>0?a+1|0:a)+_|0,n=a=(_=e)>>>0>(e=r+e|0)>>>0?a+1|0:a,r=UI(c^e,a^R,32),a=(a=p)+(p=f)|0,u=_=r+D|0,c=UI(c=_^G,L^(G=_>>>0>>0?a+1|0:a),40),a=n+(R=f)|0,a=wA+((_=c+e|0)>>>0>>0?a+1|0:a)|0,L=a=(D=_+V|0)>>>0>>0?a+1|0:a,p=UI(r^D,p^a,48),nA=a=f,_=UI(w^U,b^T,1),a=(r=f)+W|0,a=pA+((e=_+Z|0)>>>0<_>>>0?a+1|0:a)|0,a=X+(w=(e=e+EA|0)>>>0>>0?a+1|0:a)|0,W=n=I+e|0,U=a=n>>>0>>0?a+1|0:a,b=_,n=UI(e^K,w^hA,32),a=(T=f)+N|0,N=_=n+h|0,e=UI(_^b,(K=_>>>0>>0?a+1|0:a)^r,40),a=(a=U)+(U=f)|0,b=_=e+W|0,W=a=_>>>0>>0?a+1|0:a,r=a,a=X+O|0,a=((w=I+v|0)>>>0>>0?a+1|0:a)+r|0,Y=a=(r=_+w|0)>>>0>>0?a+1|0:a,_=UI(r^p,nA^a,32),a=(v=f)+x|0,h=UI((w=_+S|0)^CA,(a=w>>>0<_>>>0?a+1|0:a)^O,40),O=a,a=sA+(S=f)|0,a=Y+((Z=h+gA|0)>>>0>>0?a+1|0:a)|0,a=(Y=r+Z|0)>>>0>>0?a+1|0:a,r=v,v=a,r=UI(_^Y,r^a,48),a=(a=O)+(O=f)|0,_=h^(w=r+w|0),h=a=w>>>0>>0?a+1|0:a,Z=a=UI(_,a^S,1),CA=a,m=_=f,S=t,AA=y,t=e,e=UI(n^b,W^T,48),a=K+(b=f)|0,n=_=e+N|0,N=a=_>>>0>>0?a+1|0:a,t=UI(_^t,a^U,1),a=(W=f)+NA|0,a=L+((_=t+cA|0)>>>0>>0?a+1|0:a)|0,D=a=(y=_+D|0)>>>0>>0?a+1|0:a,_=UI(y^s,a^q,32),a=(U=f)+AA|0,S=s=_+S|0,K=a=s>>>0<_>>>0?a+1|0:a,t=UI(t^s,a^W,40),a=DA+(hA=f)|0,W=t,a=D+((t=oA+t|0)>>>0>>0?a+1|0:a)|0,y=a=(t=t+y|0)>>>0>>0?a+1|0:a,s=UI(_^t,a^U,48),a=(a=K)+(K=f)|0,q=_=s+S|0,U=_,L=a=_>>>0>>0?a+1|0:a,a=G+nA|0,S=(_=p+u|0)^c,c=a=_>>>0

>>0?a+1|0:a,a=UI(S,a^R,1),R=D=f,S=a,a=d+tA|0,a=((p=M+z|0)>>>0>>0?a+1|0:a)+D|0,G=a=(G=p)>>>0>(p=p+S|0)>>>0?a+1|0:a,u=D=UI(p^l,IA^a,32),M=a=f,a=a+N|0,d=D=D+n|0,l=a=u>>>0>D>>>0?a+1|0:a,D=UI(D^S,R^a,40),a=yA+(R=f)|0,a=G+((n=D+rA|0)>>>0>>0?a+1|0:a)|0,n=a=(S=p)>>>0>(p=p+n|0)>>>0?a+1|0:a,S=UI(p^u,a^M,48),IA=a=f,N=a,k=UI(k^J,x^$,1),G=a=f,u=e,a=a+P|0,a=H+((e=k+aA|0)>>>0>>0?a+1|0:a)|0,a=(e=e+F|0)>>>0>>0?a+1|0:a,F=e^u,u=a,F=UI(F,a^b,32),a=($=f)+c|0,H=_=F+_|0,c=UI(_^k,(c=G)^(G=_>>>0>>0?a+1|0:a),40),a=pA+(M=f)|0,a=u+((_=c+EA|0)>>>0>>0?a+1|0:a)|0,u=_=_+e|0,b=a=_>>>0>>0?a+1|0:a,e=a,a=m+SA|0,a=((k=Z+iA|0)>>>0>>0?a+1|0:a)+e|0,Z=a=(e=_+k|0)>>>0>>0?a+1|0:a,_=UI(e^S,a^N,32),a=(J=f)+L|0,N=UI((k=_+U|0)^CA,(a=k>>>0<_>>>0?a+1|0:a)^m,40),x=U=f,m=a,a=U+kA|0,a=Z+((U=N+eA|0)>>>0>>0?a+1|0:a)|0,Z=a=(U=e+U|0)>>>0>>0?a+1|0:a,e=UI(_^U,a^J,48),a=(J=f)+m|0,_=(k=e+k|0)^N,N=a=k>>>0>>0?a+1|0:a,x=a=UI(_,a^x,1),m=_=f,AA=w,T=s,s=c,c=UI(F^u,b^$,48),a=(F=f)+G|0,G=_=c+H|0,u=a=_>>>0>>0?a+1|0:a,s=UI(_^s,a^M,1),a=(M=f)+FA|0,a=((_=s+QA|0)>>>0>>0?a+1|0:a)+n|0,p=a=(w=_+p|0)>>>0<_>>>0?a+1|0:a,_=UI(w^T,a^K,32),a=(n=f)+h|0,H=h=_+AA|0,K=a=h>>>0<_>>>0?a+1|0:a,s=UI(s^h,a^M,40),a=B+(T=f)|0,M=s,a=p+((s=fA+s|0)>>>0>>0?a+1|0:a)|0,b=a=(h=s+w|0)>>>0>>0?a+1|0:a,s=UI(_^h,a^n,48),a=(a=K)+(K=f)|0,H=_=s+H|0,AA=a=_>>>0>>0?a+1|0:a,p=r,w=t,a=l+IA|0,r=a=(_=S+d|0)>>>0>>0?a+1|0:a,t=UI(_^D,a^R,1),a=(D=f)+BA|0,a=((n=t+j|0)>>>0>>0?a+1|0:a)+y|0,y=UI(p^(w=w+n|0),(a=w>>>0>>0?a+1|0:a)^O,32),n=a,S=t,a=(p=f)+u|0,a=(t=y+G|0)>>>0>>0?a+1|0:a,G=t,t^=S,S=a,t=UI(t,a^D,40),a=Q+(u=f)|0,a=((D=t+g|0)>>>0>>0?a+1|0:a)+n|0,d=a=(n=D)>>>0>(D=D+w|0)>>>0?a+1|0:a,p=UI(y^D,a^p,48),IA=a=f,w=a,y=UI(q^W,L^hA,1),l=a=f,W=r,a=a+wA|0,a=v+((r=y+V|0)>>>0>>0?a+1|0:a)|0,n=F,F=a=(r=r+Y|0)>>>0>>0?a+1|0:a,n=UI(c^r,n^a,32),a=($=f)+W|0,Y=_=n+_|0,c=UI(_^y,(c=l)^(l=_>>>0>>0?a+1|0:a),40),a=GA+(W=f)|0,a=F+((_=c+_A|0)>>>0<_A>>>0?a+1|0:a)|0,v=_=_+r|0,q=a=_>>>0>>0?a+1|0:a,r=a,a=m+tA|0,a=((y=z+x|0)>>>0>>0?a+1|0:a)+r|0,F=a=(r=_+y|0)>>>0>>0?a+1|0:a,_=UI(r^p,a^w,32),a=(O=f)+AA|0,w=UI((y=_+H|0)^x,(a=y>>>0<_>>>0?a+1|0:a)^m,40),x=a,a=P+(R=f)|0,a=F+((L=w+aA|0)>>>0>>0?a+1|0:a)|0,a=(F=r+L|0)>>>0>>0?a+1|0:a,r=O,O=a,r=UI(_^F,r^a,48),a=(a=x)+(x=f)|0,_=(y=r+y|0)^w,w=a=y>>>0>>0?a+1|0:a,R=a=UI(_,a^R,1),L=_=f,m=s,s=c,c=UI(n^v,q^$,48),a=(a=l)+(l=f)|0,Y=_=c+Y|0,n=W,W=a=_>>>0>>0?a+1|0:a,s=UI(_^s,n^a,1),a=(v=f)+kA|0,a=d+((_=s+eA|0)>>>0>>0?a+1|0:a)|0,n=D,D=_+D|0,_=K,K=a=n>>>0>D>>>0?a+1|0:a,_=UI(D^m,_^a,32),a=(a=N)+(N=f)|0,d=a=(n=_+k|0)>>>0<_>>>0?a+1|0:a,k=n,s=UI(s^n,a^v,40),a=wA+($=f)|0,v=s,a=K+((s=V+s|0)>>>0>>0?a+1|0:a)|0,K=a=(n=s+D|0)>>>0>>0?a+1|0:a,s=UI(_^n,a^N,48),a=(a=d)+(d=f)|0,q=_=s+k|0,m=a=_>>>0>>0?a+1|0:a,k=e,a=S+IA|0,e=a=(_=p+G|0)>>>0

>>0?a+1|0:a,t=UI(_^t,a^u,1),a=sA+(p=f)|0,a=b+((D=t+gA|0)>>>0>>0?a+1|0:a)|0,S=(D=h+D|0)^k,k=a=D>>>0>>0?a+1|0:a,h=UI(S,a^J,32),N=a=f,S=t,a=a+W|0,a=(t=h+Y|0)>>>0>>0?a+1|0:a,G=t,t^=S,S=a,t=UI(t,a^p,40),a=Q+(u=f)|0,a=k+((p=t+g|0)>>>0>>0?a+1|0:a)|0,b=a=(p=D+p|0)>>>0>>0?a+1|0:a,k=UI(h^p,a^N,48),IA=a=f,D=a,h=UI(M^H,T^AA,1),Y=a=f,H=e,a=a+B|0,a=Z+((e=h+fA|0)>>>0>>0?a+1|0:a)|0,U=a=(e=e+U|0)>>>0>>0?a+1|0:a,N=UI(c^e,a^l,32),a=(CA=f)+H|0,H=_=N+_|0,c=UI(_^h,(M=_>>>0>>0?a+1|0:a)^Y,40),a=X+(l=f)|0,a=U+((_=I+c|0)>>>0>>0?a+1|0:a)|0,U=_=_+e|0,W=a=_>>>0>>0?a+1|0:a,e=a,a=L+pA|0,a=((h=R+EA|0)>>>0>>0?a+1|0:a)+e|0,Y=a=(e=_+h|0)>>>0>>0?a+1|0:a,_=UI(e^k,a^D,32),a=(Z=f)+m|0,D=UI((h=_+q|0)^R,(a=h>>>0<_>>>0?a+1|0:a)^L,40),J=a,a=NA+(R=f)|0,a=Y+((L=D+cA|0)>>>0>>0?a+1|0:a)|0,a=(Y=e+L|0)>>>0>>0?a+1|0:a,e=Z,Z=a,e=UI(_^Y,e^a,48),a=(a=J)+(J=f)|0,_=(h=e+h|0)^D,D=a=h>>>0>>0?a+1|0:a,R=a=UI(_,a^R,1),hA=a,L=_=f,AA=y,T=s,y=c,c=UI(N^U,W^CA,48),a=(N=f)+M|0,U=_=c+H|0,H=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^l,1),a=(l=f)+yA|0,a=b+((_=y+rA|0)>>>0>>0?a+1|0:a)|0,p=a=(s=_+p|0)>>>0

>>0?a+1|0:a,_=UI(s^T,a^d,32),a=(M=f)+w|0,d=a=(w=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^w,a^l,40),a=FA+(CA=f)|0,b=y,a=p+((y=QA+y|0)>>>0>>0?a+1|0:a)|0,p=y+s|0,y=M,M=a=p>>>0>>0?a+1|0:a,y=UI(_^p,y^a,48),a=(a=d)+(d=f)|0,l=_=y+w|0,W=a=_>>>0>>0?a+1|0:a,s=r,a=S+IA|0,r=a=(_=k+G|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^u,1),a=(k=f)+GA|0,a=K+((w=t+_A|0)>>>0>>0?a+1|0:a)|0,s=UI(s^(w=w+n|0),(a=w>>>0>>0?a+1|0:a)^x,32),S=n=f,n=a,G=t,a=S+H|0,a=(t=s+U|0)>>>0>>0?a+1|0:a,U=t,t^=G,G=a,t=UI(t,a^k,40),a=DA+(u=f)|0,a=((k=t+oA|0)>>>0>>0?a+1|0:a)+n|0,K=S,S=a=(n=w+k|0)>>>0>>0?a+1|0:a,k=UI(s^n,K^a,48),IA=a=f,w=a,s=UI(q^v,m^$,1),H=a=f,K=r,a=a+BA|0,a=O+((r=s+j|0)>>>0>>0?a+1|0:a)|0,F=a=(r=r+F|0)>>>0>>0?a+1|0:a,N=UI(c^r,a^N,32),a=($=f)+K|0,K=_=N+_|0,c=UI(_^s,(c=H)^(H=_>>>0>>0?a+1|0:a),40),a=SA+(v=f)|0,a=F+((_=c+iA|0)>>>0>>0?a+1|0:a)|0,q=_=_+r|0,O=a=_>>>0>>0?a+1|0:a,r=a,a=L+Q|0,a=((s=R+g|0)>>>0>>0?a+1|0:a)+r|0,F=a=(r=_+s|0)>>>0>>0?a+1|0:a,_=UI(r^k,a^w,32),a=(R=f)+W|0,w=UI((s=_+l|0)^hA,(a=s>>>0<_>>>0?a+1|0:a)^L,40),L=a,a=kA+(x=f)|0,a=F+((m=w+eA|0)>>>0>>0?a+1|0:a)|0,a=(F=r+m|0)>>>0>>0?a+1|0:a,r=R,R=a,r=UI(_^F,r^a,48),a=(a=L)+(L=f)|0,_=(s=r+s|0)^w,w=a=s>>>0>>0?a+1|0:a,x=a=UI(_,a^x,1),m=_=f,AA=h,T=y,y=c,c=UI(N^q,O^$,48),a=(N=f)+H|0,H=_=c+K|0,K=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^v,1),a=(v=f)+FA|0,a=S+((_=y+QA|0)>>>0>>0?a+1|0:a)|0,n=a=(h=_+n|0)>>>0>>0?a+1|0:a,_=UI(h^T,a^d,32),a=(S=f)+D|0,d=a=(D=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^D,a^v,40),a=BA+($=f)|0,v=y,a=n+((y=j+y|0)>>>0>>0?a+1|0:a)|0,n=y+h|0,y=S,S=a=n>>>0>>0?a+1|0:a,y=UI(_^n,y^a,48),a=(a=d)+(d=f)|0,q=_=y+D|0,O=a=_>>>0>>0?a+1|0:a,h=e,a=G+IA|0,e=a=(_=k+U|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^u,1),a=SA+(k=f)|0,a=M+((D=t+iA|0)>>>0>>0?a+1|0:a)|0,p=a=(D=D+p|0)>>>0

>>0?a+1|0:a,h=UI(h^D,a^J,32),U=a=f,G=t,a=a+K|0,a=(t=h+H|0)>>>0>>0?a+1|0:a,u=t,t^=G,G=a,t=UI(t,a^k,40),a=pA+(H=f)|0,a=p+((k=t+EA|0)>>>0>>0?a+1|0:a)|0,a=(p=D+k|0)>>>0>>0?a+1|0:a,D=U,U=a,k=UI(h^p,D^a,48),IA=a=f,D=a,h=UI(b^l,W^CA,1),K=a=f,M=e,a=a+X|0,a=Z+((e=I+h|0)>>>0>>0?a+1|0:a)|0,Y=a=(e=e+Y|0)>>>0>>0?a+1|0:a,N=UI(c^e,a^N,32),a=(CA=f)+M|0,M=_=N+_|0,c=UI(_^h,(c=K)^(K=_>>>0>>0?a+1|0:a),40),a=wA+(b=f)|0,a=Y+((_=c+V|0)>>>0>>0?a+1|0:a)|0,l=_=_+e|0,W=a=_>>>0>>0?a+1|0:a,e=a,a=m+sA|0,a=((h=x+gA|0)>>>0>>0?a+1|0:a)+e|0,Y=a=(e=_+h|0)>>>0>>0?a+1|0:a,_=UI(e^k,a^D,32),a=(Z=f)+O|0,D=UI((h=_+q|0)^x,(a=h>>>0<_>>>0?a+1|0:a)^m,40),x=a,a=B+(J=f)|0,a=Y+((m=D+fA|0)>>>0>>0?a+1|0:a)|0,a=(Y=e+m|0)>>>0>>0?a+1|0:a,e=Z,Z=a,e=UI(_^Y,e^a,48),a=(a=x)+(x=f)|0,_=(h=e+h|0)^D,D=a=h>>>0>>0?a+1|0:a,J=a=UI(_,a^J,1),m=_=f,AA=s,T=y,y=c,c=UI(N^l,W^CA,48),a=(N=f)+K|0,K=_=c+M|0,M=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^b,1),a=(b=f)+tA|0,a=U+((_=y+z|0)>>>0>>0?a+1|0:a)|0,p=a=(s=_+p|0)>>>0

>>0?a+1|0:a,_=UI(s^T,a^d,32),a=(U=f)+w|0,d=a=(w=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^w,a^b,40),a=GA+(CA=f)|0,b=y,a=p+((y=_A+y|0)>>>0<_A>>>0?a+1|0:a)|0,p=y+s|0,y=U,U=a=p>>>0>>0?a+1|0:a,y=UI(_^p,y^a,48),a=(a=d)+(d=f)|0,l=_=y+w|0,W=a=_>>>0>>0?a+1|0:a,s=r,a=G+IA|0,r=a=(_=k+u|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^H,1),a=(k=f)+DA|0,a=S+((w=t+oA|0)>>>0>>0?a+1|0:a)|0,n=a=(w=w+n|0)>>>0>>0?a+1|0:a,s=UI(s^w,a^L,32),S=a=f,G=t,a=a+M|0,a=(t=s+K|0)>>>0>>0?a+1|0:a,u=t,t^=G,G=a,t=UI(t,a^k,40),a=yA+(H=f)|0,a=n+((k=t+rA|0)>>>0>>0?a+1|0:a)|0,K=S,S=a=(n=w+k|0)>>>0>>0?a+1|0:a,k=UI(s^n,K^a,48),IA=a=f,w=a,s=UI(q^v,O^$,1),K=a=f,M=r,a=a+P|0,a=R+((r=s+aA|0)>>>0>>0?a+1|0:a)|0,F=a=(r=r+F|0)>>>0>>0?a+1|0:a,N=UI(c^r,a^N,32),a=($=f)+M|0,M=_=N+_|0,c=UI(_^s,(c=K)^(K=_>>>0>>0?a+1|0:a),40),a=NA+(v=f)|0,a=F+((_=c+cA|0)>>>0>>0?a+1|0:a)|0,q=_=_+r|0,O=a=_>>>0>>0?a+1|0:a,r=a,a=m+B|0,a=((s=J+fA|0)>>>0>>0?a+1|0:a)+r|0,F=a=(r=_+s|0)>>>0>>0?a+1|0:a,_=UI(r^k,a^w,32),a=(R=f)+W|0,w=UI((s=_+l|0)^J,(a=s>>>0<_>>>0?a+1|0:a)^m,40),L=a,a=SA+(J=f)|0,a=F+((m=w+iA|0)>>>0>>0?a+1|0:a)|0,a=(F=r+m|0)>>>0>>0?a+1|0:a,r=R,R=a,r=UI(_^F,r^a,48),a=(a=L)+(L=f)|0,_=(s=r+s|0)^w,w=a=s>>>0>>0?a+1|0:a,J=a=UI(_,a^J,1),m=_=f,AA=h,T=y,y=c,c=UI(N^q,O^$,48),a=(N=f)+K|0,K=_=c+M|0,M=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^v,1),a=(v=f)+P|0,a=S+((_=y+aA|0)>>>0>>0?a+1|0:a)|0,n=a=(h=_+n|0)>>>0>>0?a+1|0:a,_=UI(h^T,a^d,32),a=(S=f)+D|0,d=a=(D=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^D,a^v,40),a=yA+($=f)|0,v=y,a=n+((y=rA+y|0)>>>0>>0?a+1|0:a)|0,n=y+h|0,y=S,S=a=n>>>0>>0?a+1|0:a,y=UI(_^n,y^a,48),a=(a=d)+(d=f)|0,q=_=y+D|0,O=a=_>>>0>>0?a+1|0:a,h=e,a=G+IA|0,e=a=(_=k+u|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^H,1),a=DA+(k=f)|0,a=U+((D=t+oA|0)>>>0>>0?a+1|0:a)|0,p=a=(D=D+p|0)>>>0

>>0?a+1|0:a,h=UI(h^D,a^x,32),U=a=f,G=t,a=a+M|0,a=(t=h+K|0)>>>0>>0?a+1|0:a,u=t,t^=G,G=a,t=UI(t,a^k,40),a=GA+(H=f)|0,a=p+((k=t+_A|0)>>>0<_A>>>0?a+1|0:a)|0,a=(p=D+k|0)>>>0>>0?a+1|0:a,D=U,U=a,k=UI(h^p,D^a,48),IA=a=f,D=a,h=UI(b^l,W^CA,1),K=a=f,M=e,a=a+BA|0,a=Z+((e=h+j|0)>>>0>>0?a+1|0:a)|0,Y=a=(e=e+Y|0)>>>0>>0?a+1|0:a,N=UI(c^e,a^N,32),a=(CA=f)+M|0,M=_=N+_|0,c=UI(_^h,(c=K)^(K=_>>>0>>0?a+1|0:a),40),a=NA+(b=f)|0,a=Y+((_=c+cA|0)>>>0>>0?a+1|0:a)|0,l=_=_+e|0,W=a=_>>>0>>0?a+1|0:a,e=a,a=m+wA|0,a=((h=J+V|0)>>>0>>0?a+1|0:a)+e|0,Y=a=(e=_+h|0)>>>0>>0?a+1|0:a,_=UI(e^k,a^D,32),a=(Z=f)+O|0,D=UI((h=_+q|0)^J,(a=h>>>0<_>>>0?a+1|0:a)^m,40),x=a,a=X+(J=f)|0,a=Y+((m=I+D|0)>>>0>>0?a+1|0:a)|0,a=(Y=e+m|0)>>>0>>0?a+1|0:a,e=Z,Z=a,e=UI(_^Y,e^a,48),a=(a=x)+(x=f)|0,_=(h=e+h|0)^D,D=a=h>>>0>>0?a+1|0:a,J=a=UI(_,a^J,1),m=_=f,AA=s,T=y,y=c,c=UI(N^l,W^CA,48),a=(N=f)+K|0,K=_=c+M|0,M=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^b,1),a=(b=f)+pA|0,a=U+((_=y+EA|0)>>>0>>0?a+1|0:a)|0,p=a=(s=_+p|0)>>>0

>>0?a+1|0:a,_=UI(s^T,a^d,32),a=(U=f)+w|0,d=a=(w=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^w,a^b,40),a=Q+(CA=f)|0,b=y,a=p+((y=g+y|0)>>>0>>0?a+1|0:a)|0,p=y+s|0,y=U,U=a=p>>>0>>0?a+1|0:a,y=UI(_^p,y^a,48),a=(a=d)+(d=f)|0,l=_=y+w|0,W=a=_>>>0>>0?a+1|0:a,s=r,a=G+IA|0,r=a=(_=k+u|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^H,1),a=(k=f)+sA|0,a=S+((w=t+gA|0)>>>0>>0?a+1|0:a)|0,n=a=(w=w+n|0)>>>0>>0?a+1|0:a,s=UI(s^w,a^L,32),S=a=f,G=t,a=a+M|0,a=(t=s+K|0)>>>0>>0?a+1|0:a,u=t,t^=G,G=a,t=UI(t,a^k,40),a=FA+(H=f)|0,a=n+((k=t+QA|0)>>>0>>0?a+1|0:a)|0,K=S,S=a=(n=w+k|0)>>>0>>0?a+1|0:a,k=UI(s^n,K^a,48),IA=a=f,w=a,s=UI(q^v,O^$,1),K=a=f,M=r,a=a+kA|0,a=R+((r=s+eA|0)>>>0>>0?a+1|0:a)|0,F=a=(r=r+F|0)>>>0>>0?a+1|0:a,N=UI(c^r,a^N,32),a=($=f)+M|0,M=_=N+_|0,c=UI(_^s,(c=K)^(K=_>>>0>>0?a+1|0:a),40),a=tA+(v=f)|0,a=F+((_=c+z|0)>>>0>>0?a+1|0:a)|0,q=_=_+r|0,O=a=_>>>0>>0?a+1|0:a,r=a,a=m+NA|0,a=((s=J+cA|0)>>>0>>0?a+1|0:a)+r|0,F=a=(r=_+s|0)>>>0>>0?a+1|0:a,_=UI(r^k,a^w,32),a=(R=f)+W|0,w=UI((s=_+l|0)^J,(a=s>>>0<_>>>0?a+1|0:a)^m,40),L=a,a=yA+(J=f)|0,a=F+((m=w+rA|0)>>>0>>0?a+1|0:a)|0,a=(F=r+m|0)>>>0>>0?a+1|0:a,r=R,R=a,r=UI(_^F,r^a,48),a=(a=L)+(L=f)|0,_=(s=r+s|0)^w,w=a=s>>>0>>0?a+1|0:a,J=a=UI(_,a^J,1),m=_=f,AA=h,T=y,y=c,c=UI(N^q,O^$,48),a=(N=f)+K|0,K=_=c+M|0,M=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^v,1),a=(v=f)+SA|0,a=S+((_=y+iA|0)>>>0>>0?a+1|0:a)|0,n=a=(h=_+n|0)>>>0>>0?a+1|0:a,_=UI(h^T,a^d,32),a=(S=f)+D|0,d=a=(D=_+AA|0)>>>0<_>>>0?a+1|0:a,y=UI(y^D,a^v,40),a=B+($=f)|0,v=y,a=n+((y=fA+y|0)>>>0>>0?a+1|0:a)|0,n=y+h|0,y=S,S=a=n>>>0>>0?a+1|0:a,y=UI(_^n,y^a,48),a=(a=d)+(d=f)|0,q=_=y+D|0,O=a=_>>>0>>0?a+1|0:a,h=e,a=G+IA|0,e=a=(_=k+u|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^H,1),a=FA+(k=f)|0,a=U+((D=t+QA|0)>>>0>>0?a+1|0:a)|0,p=a=(D=D+p|0)>>>0

>>0?a+1|0:a,h=UI(h^D,a^x,32),U=a=f,G=t,a=a+M|0,a=(t=h+K|0)>>>0>>0?a+1|0:a,u=t,t^=G,G=a,t=UI(t,a^k,40),a=P+(H=f)|0,a=p+((k=t+aA|0)>>>0>>0?a+1|0:a)|0,a=(p=D+k|0)>>>0>>0?a+1|0:a,D=U,U=a,k=UI(h^p,D^a,48),IA=a=f,D=a,h=UI(b^l,W^CA,1),K=a=f,M=e,a=a+GA|0,a=Z+((e=h+_A|0)>>>0<_A>>>0?a+1|0:a)|0,Y=a=(e=e+Y|0)>>>0>>0?a+1|0:a,N=UI(c^e,a^N,32),a=(CA=f)+M|0,M=_=N+_|0,c=UI(_^h,(c=K)^(K=_>>>0>>0?a+1|0:a),40),a=kA+(b=f)|0,a=Y+((_=c+eA|0)>>>0>>0?a+1|0:a)|0,l=_=_+e|0,W=a=_>>>0>>0?a+1|0:a,e=a,a=m+DA|0,a=((h=J+oA|0)>>>0>>0?a+1|0:a)+e|0,Y=a=(e=_+h|0)>>>0>>0?a+1|0:a,_=UI(e^k,a^D,32),a=(Z=f)+O|0,D=UI((h=_+q|0)^J,(a=h>>>0<_>>>0?a+1|0:a)^m,40),x=a,a=Q+(J=f)|0,a=Y+((m=D+g|0)>>>0>>0?a+1|0:a)|0,a=(Y=e+m|0)>>>0>>0?a+1|0:a,e=Z,Z=a,e=UI(_^Y,e^a,48),a=(a=x)+(x=f)|0,_=(h=e+h|0)^D,D=a=h>>>0>>0?a+1|0:a,J=a=UI(_,a^J,1),m=_=f,AA=s,T=y,y=c,c=UI(N^l,W^CA,48),a=(N=f)+K|0,K=_=c+M|0,M=a=_>>>0>>0?a+1|0:a,y=UI(_^y,a^b,1),a=(l=f)+BA|0,a=U+((_=y+j|0)>>>0>>0?a+1|0:a)|0,p=a=(s=_+p|0)>>>0

>>0?a+1|0:a,_=UI(s^T,a^d,32),a=(U=f)+w|0,d=w=_+AA|0,b=a=w>>>0<_>>>0?a+1|0:a,y=UI(y^w,a^l,40),a=wA+(AA=f)|0,l=y,a=p+((y=V+y|0)>>>0>>0?a+1|0:a)|0,w=y+s|0,y=U,U=a=w>>>0>>0?a+1|0:a,y=UI(_^w,y^a,48),a=(a=b)+(b=f)|0,d=_=y+d|0,W=a=_>>>0>>0?a+1|0:a,s=r,a=G+IA|0,r=a=(_=k+u|0)>>>0>>0?a+1|0:a,t=UI(_^t,a^H,1),a=(k=f)+X|0,a=S+((p=I+t|0)>>>0>>0?a+1|0:a)|0,n=a=(p=p+n|0)>>>0>>0?a+1|0:a,S=s=UI(s^p,a^L,32),G=a=f,u=t,a=a+M|0,a=(t=s+K|0)>>>0>>0?a+1|0:a,H=t,t^=u,u=a,t=UI(t,a^k,40),a=pA+(K=f)|0,a=n+((s=t+EA|0)>>>0>>0?a+1|0:a)|0,M=(s=s+p|0)^S,S=a=s>>>0

>>0?a+1|0:a,p=UI(M,a^G,48),L=a=f,k=a,G=n=UI(q^v,O^$,1),M=a=f,v=r,a=a+tA|0,a=R+((r=n+z|0)>>>0>>0?a+1|0:a)|0,a=(r=r+F|0)>>>0>>0?a+1|0:a,F=N,N=a,n=UI(c^r,F^a,32),a=(T=f)+v|0,F=_=n+_|0,c=UI(c=_^G,(G=_>>>0>>0?a+1|0:a)^M,40),a=sA+(M=f)|0,a=N+((_=c+gA|0)>>>0>>0?a+1|0:a)|0,N=_=_+r|0,v=a=_>>>0>>0?a+1|0:a,r=a,a=m+wA|0,a=((R=V)>>>0>(V=J+V|0)>>>0?a+1|0:a)+r|0,wA=a=(_=_+V|0)>>>0>>0?a+1|0:a,V=UI(_^p,a^k,32),a=(q=f)+W|0,k=UI((r=d+V|0)^J,(a=r>>>0>>0?a+1|0:a)^m,40),R=a,a=pA+(O=f)|0,a=wA+((J=EA)>>>0>(EA=k+EA|0)>>>0?a+1|0:a)|0,a=(EA=_+EA|0)>>>0<_>>>0?a+1|0:a,_=V^EA,V=a,pA=UI(_,a^q,48);a=(wA=f)+R|0,r=a=(_=r+pA|0)>>>0>>0?a+1|0:a,a=UI(_^k,a^O,1),k=f,q=a,O=h,h=gA,R=sA,sA=UI(n^N,v^T,48),a=(n=f)+G|0,G=h,F=a=(gA=F+sA|0)>>>0>>0?a+1|0:a,h=UI(c^(N=gA),a^M,1),a=(M=f)+R|0,a=S+(h>>>0>(gA=G+h|0)>>>0?a+1|0:a)|0,c=a=(gA=s+gA|0)>>>0>>0?a+1|0:a,y=UI(y^gA,a^b,32),a=(a=D)+(D=f)|0,S=s=y+O|0,G=a=s>>>0>>0?a+1|0:a,s=UI(s^h,a^M,40),a=(M=f)+SA|0,a=(s>>>0>(iA=s+iA|0)>>>0?a+1|0:a)+c|0,c=a=(c=iA)>>>0>(iA=gA+iA|0)>>>0?a+1|0:a,y=UI(y^iA,a^D,48),a=(h=f)+G|0,D=gA=y+S|0,SA=a=gA>>>0>>0?a+1|0:a,S=I,G=X,a=u+L|0,gA=a=(I=p+H|0)>>>0

>>0?a+1|0:a,X=UI(I^t,a^K,1),a=(p=f)+G|0,a=U+((t=S+X|0)>>>0>>0?a+1|0:a)|0,e=UI((t=t+w|0)^e,(a=t>>>0>>0?a+1|0:a)^x,32),S=a,U=oA,oA=X,a=(w=f)+F|0,F=p,p=a=(X=e+N|0)>>>0>>0?a+1|0:a,oA=UI(X^oA,F^a,40),a=(N=f)+DA|0,a=((DA=U+oA|0)>>>0>>0?a+1|0:a)+S|0,S=DA,t=e^(DA=t+DA|0),e=a=S>>>0>DA>>>0?a+1|0:a,a=UI(t,a^w,48),u=t=f,w=a,F=j,S=BA,j=UI(d^l,W^AA,1),G=a=f,a=a+NA|0,a=Z+((j=(U=j)+cA|0)>>>0>>0?a+1|0:a)|0,cA=a=(j=Y+j|0)>>>0>>0?a+1|0:a,BA=UI(j^sA,a^n,32),a=(Y=f)+gA|0,gA=I=BA+I|0,sA=UI(I^U,(n=I>>>0>>0?a+1|0:a)^G,40),a=(a=S)+(S=f)|0,a=cA+((I=sA+F|0)>>>0>>0?a+1|0:a)|0,cA=I=I+j|0,NA=a=I>>>0>>0?a+1|0:a,j=a,a=k+FA|0,a=((U=QA)>>>0>(QA=q+QA|0)>>>0?a+1|0:a)+j|0,FA=a=(j=I+QA|0)>>>0>>0?a+1|0:a,QA=UI(w^j,a^t,32),a=(U=f)+SA|0,t=I=QA+D|0,I=UI(I^q,(F=k)^(k=I>>>0>>0?a+1|0:a),40),a=GA+(G=f)|0,GA=I,a=FA+((I=_A+I|0)>>>0<_A>>>0?a+1|0:a)|0,a=(I=I+j|0)>>>0>>0?a+1|0:a,FA=I,H=(o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24)^I,F=a,K=a^(o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24),j=UI(BA^cA,Y^NA,48),a=(cA=f)+n|0,n=I=j+gA|0,NA=a=I>>>0>>0?a+1|0:a,BA=rA,a=p+u|0,rA=a=(I=w+X|0)>>>0>>0?a+1|0:a,oA=UI(I^oA,a^N,1),a=(w=f)+yA|0,a=((BA=oA+BA|0)>>>0>>0?a+1|0:a)+c|0,BA=a=(yA=BA+iA|0)>>>0>>0?a+1|0:a,gA=UI(yA^pA,a^wA,32),a=(X=f)+NA|0,iA=a=(_A=gA+n|0)>>>0>>0?a+1|0:a,pA=gA,gA=UI(oA^_A,a^w,40),a=(c=f)+kA|0,a=(gA>>>0>(oA=gA+eA|0)>>>0?a+1|0:a)+BA|0,p=X,X=a=(yA=oA+yA|0)>>>0>>0?a+1|0:a,oA=UI(pA^(eA=yA),p^a,48),a=(w=f)+iA|0,a=(BA=oA+_A|0)>>>0>>0?a+1|0:a,_A=BA,BA^=H,C[A+8|0]=BA,C[A+9|0]=BA>>>8,C[A+10|0]=BA>>>16,C[A+11|0]=BA>>>24,iA=a,a^=K,C[A+12|0]=a,C[A+13|0]=a>>>8,C[A+14|0]=a>>>16,C[A+15|0]=a>>>24,yA=I,BA=rA,I=j,j=UI(s^D,M^SA,1),a=(kA=f)+Q|0,a=(j>>>0>(rA=j+g|0)>>>0?a+1|0:a)+V|0,EA=a=(D=rA)>>>0>(rA=EA+rA|0)>>>0?a+1|0:a,I=UI(I^rA,a^cA,32),a=(a=BA)+(BA=f)|0,cA=a=(yA=I+yA|0)>>>0>>0?a+1|0:a,pA=I,yA=UI(j^(V=yA),a^kA,40),a=(s=f)+B|0,a=EA+((I=yA+fA|0)>>>0>>0?a+1|0:a)|0,a=(I=I+rA|0)>>>0>>0?a+1|0:a,EA=I,I^=pA,pA=a,rA=UI(I,a^BA,48),a=(D=f)+cA|0,V=I=rA+V|0,cA=I>>>0>>0?a+1|0:a,sA=I=UI(n^sA,S^NA,1),kA=a=f,a=a+P|0,a=e+((I=I+aA|0)>>>0>>0?a+1|0:a)|0,P=a=(j=I+DA|0)>>>0>>0?a+1|0:a,I=(BA=UI(y^j,a^h,32))+_|0,a=(_=f)+r|0,DA=I,I=(aA=UI(e=I^sA,(sA=I>>>0>>0?a+1|0:a)^kA,40))+z|0,a=(z=f)+tA|0,a=P+(I>>>0>>0?a+1|0:a)|0,a=(P=I+j|0)>>>0>>0?a+1|0:a,j=P^KA^V,C[0|(I=A)]=j,C[I+1|0]=j>>>8,C[I+2|0]=j>>>16,C[I+3|0]=j>>>24,j=a^i^cA,C[I+4|0]=j,C[I+5|0]=j>>>8,C[I+6|0]=j>>>16,C[I+7|0]=j>>>24,j=(BA=UI(P^BA,a^_,48))+DA|0,a=(DA=f)+sA|0,a=(sA=j>>>0>>0?a+1|0:a)^(o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24)^pA,P=(o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24)^EA^j,C[I+16|0]=P,C[I+17|0]=P>>>8,C[I+18|0]=P>>>16,C[I+19|0]=P>>>24,C[I+20|0]=a,C[I+21|0]=a>>>8,C[I+22|0]=a>>>16,C[I+23|0]=a>>>24,I=UI(QA^FA,F^U,48),P=f,EA=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,a=(o[A+32|0]|o[A+33|0]<<8|o[A+34|0]<<16|o[A+35|0]<<24)^UI(gA^_A,c^iA,1)^I,C[A+32|0]=a,C[A+33|0]=a>>>8,C[A+34|0]=a>>>16,C[A+35|0]=a>>>24,a=f^EA^P,C[A+36|0]=a,C[A+37|0]=a>>>8,C[A+38|0]=a>>>16,C[A+39|0]=a>>>24,a=k+P|0,a=(EA=I+t|0)>>>0>>0?a+1|0:a,gA=(o[(I=A)+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24)^X^a,P=(o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24)^eA^EA,C[I+24|0]=P,C[I+25|0]=P>>>8,C[I+26|0]=P>>>16,C[I+27|0]=P>>>24,C[I+28|0]=gA,C[I+29|0]=gA>>>8,C[I+30|0]=gA>>>16,C[I+31|0]=gA>>>24,gA=o[I+44|0]|o[I+45|0]<<8|o[I+46|0]<<16|o[I+47|0]<<24,I=rA^(o[I+40|0]|o[I+41|0]<<8|o[I+42|0]<<16|o[I+43|0]<<24)^UI(j^aA,z^sA,1),C[A+40|0]=I,C[A+41|0]=I>>>8,C[A+42|0]=I>>>16,C[A+43|0]=I>>>24,I=D^f^gA,C[A+44|0]=I,C[A+45|0]=I>>>8,C[A+46|0]=I>>>16,C[A+47|0]=I>>>24,j=o[A+60|0]|o[A+61|0]<<8|o[A+62|0]<<16|o[A+63|0]<<24,I=BA^(o[A+56|0]|o[A+57|0]<<8|o[A+58|0]<<16|o[A+59|0]<<24)^UI(V^yA,s^cA,1),C[A+56|0]=I,C[A+57|0]=I>>>8,C[A+58|0]=I>>>16,C[A+59|0]=I>>>24,I=DA^f^j,C[A+60|0]=I,C[A+61|0]=I>>>8,C[A+62|0]=I>>>16,C[A+63|0]=I>>>24,j=o[A+52|0]|o[A+53|0]<<8|o[A+54|0]<<16|o[A+55|0]<<24,I=oA^(o[A+48|0]|o[A+49|0]<<8|o[A+50|0]<<16|o[A+51|0]<<24)^UI(EA^GA,a^G,1),C[A+48|0]=I,C[A+49|0]=I>>>8,C[A+50|0]=I>>>16,C[A+51|0]=I>>>24,I=w^f^j,C[A+52|0]=I,C[A+53|0]=I>>>8,C[A+54|0]=I>>>16,C[A+55|0]=I>>>24}function w(A,I,g,B,Q,E,a){var _,c,t,r,e,y,h,D,p,w,n,k,F,N,G,M,K,U,b,H,Y,J,d,m,l,u,x,v,R,L,P,q,z,X,O,W,V,Z,T,$,AA,IA,gA,CA,BA,QA,iA,oA,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0,sA=0,hA=0,DA=0,fA=0,pA=0,wA=0,kA=0,FA=0,NA=0,GA=0,MA=0,KA=0,UA=0,bA=0,HA=0,YA=0,JA=0,dA=0,mA=0,lA=0,uA=0,xA=0,vA=0,RA=0,LA=0,PA=0,qA=0,zA=0,jA=0,XA=0,OA=0,WA=0,VA=0,ZA=0,TA=0,$A=0,AI=0,II=0;return s=t=s-560|0,SI(_A=t+352|0),a&&SA(_A,35600,34,0),FI(t+288|0,E,32,0),SA(rA=t+352|0,t+320|0,32,0),SA(rA,g,B,Q),j(rA,yA=t+224|0),hA=o[(aA=E)+32|0]|o[aA+33|0]<<8|o[aA+34|0]<<16|o[aA+35|0]<<24,DA=o[aA+36|0]|o[aA+37|0]<<8|o[aA+38|0]<<16|o[aA+39|0]<<24,cA=o[aA+40|0]|o[aA+41|0]<<8|o[aA+42|0]<<16|o[aA+43|0]<<24,EA=o[aA+44|0]|o[aA+45|0]<<8|o[aA+46|0]<<16|o[aA+47|0]<<24,_A=o[aA+48|0]|o[aA+49|0]<<8|o[aA+50|0]<<16|o[aA+51|0]<<24,E=o[aA+52|0]|o[aA+53|0]<<8|o[aA+54|0]<<16|o[aA+55|0]<<24,tA=o[aA+60|0]|o[aA+61|0]<<8|o[aA+62|0]<<16|o[aA+63|0]<<24,aA=o[aA+56|0]|o[aA+57|0]<<8|o[aA+58|0]<<16|o[aA+59|0]<<24,C[A+56|0]=aA,C[A+57|0]=aA>>>8,C[A+58|0]=aA>>>16,C[A+59|0]=aA>>>24,C[A+60|0]=tA,C[A+61|0]=tA>>>8,C[A+62|0]=tA>>>16,C[A+63|0]=tA>>>24,C[A+48|0]=_A,C[A+49|0]=_A>>>8,C[A+50|0]=_A>>>16,C[A+51|0]=_A>>>24,C[A+52|0]=E,C[A+53|0]=E>>>8,C[A+54|0]=E>>>16,C[A+55|0]=E>>>24,C[A+40|0]=cA,C[A+41|0]=cA>>>8,C[A+42|0]=cA>>>16,C[A+43|0]=cA>>>24,C[A+44|0]=EA,C[A+45|0]=EA>>>8,C[A+46|0]=EA>>>16,C[A+47|0]=EA>>>24,C[0|(E=A+32|0)]=hA,C[E+1|0]=hA>>>8,C[E+2|0]=hA>>>16,C[E+3|0]=hA>>>24,C[E+4|0]=DA,C[E+5|0]=DA>>>8,C[E+6|0]=DA>>>16,C[E+7|0]=DA>>>24,S(yA),nA(t,yA),tg(A,t),SI(rA),a&&SA(rA,35600,34,0),SA(a=t+352|0,A,64,0),SA(a,g,B,Q),j(a,eA=t+160|0),S(eA),C[t+288|0]=248&o[t+288|0],C[t+319|0]=63&o[t+319|0]|64,g=o[23+(A=c=t+288|0)|0],cA=Ig(r=o[A+21|0]|o[A+22|0]<<8|g<<16&2031616,0,e=(o[eA+28|0]|o[eA+29|0]<<8|o[eA+30|0]<<16|o[eA+31|0]<<24)>>>7|0,0),_A=f,g=(A=o[eA+27|0])>>>24|0,Q=A<<8|(EA=o[eA+23|0]|o[eA+24|0]<<8|o[eA+25|0]<<16|o[eA+26|0]<<24)>>>24,A=Ig(y=2097151&((3&(DA=(A=(B=o[eA+28|0])>>>16|0)|g))<<30|(g=(B<<=16)|Q)>>>2),0,h=(a=o[c+23|0]|o[c+24|0]<<8|o[c+25|0]<<16|o[c+26|0]<<24)>>>5&2097151,0),g=f+_A|0,B=A>>>0>(Q=A+cA|0)>>>0?g+1|0:g,A=Ig(D=(g=o[eA+23|0])<<16&2031616|o[eA+21|0]|o[eA+22|0]<<8,0,p=(o[c+28|0]|o[c+29|0]<<8|o[c+30|0]<<16|o[c+31|0]<<24)>>>7|0,0),B=f+B|0,_A=g=A+Q|0,Q=A>>>0>g>>>0?B+1|0:B,B=(A=o[c+27|0])>>>24|0,a=A<<8|a>>>24,A=Ig(w=2097151&((3&(B|=g=(A=o[c+28|0])>>>16|0))<<30|(g=(A<<=16)|a)>>>2),0,n=EA>>>5&2097151,0),g=f+Q|0,aA=B=A+_A|0,Q=A>>>0>B>>>0?g+1|0:g,EA=Ig(h,0,n,0),_A=f,g=(A=o[c+19|0])>>>24|0,a=A<<8|(GA=o[c+15|0]|o[c+16|0]<<8|o[c+17|0]<<16|o[c+18|0]<<24)>>>24,B=g,g=Ig(k=(7&(B|=g=(A=o[c+20|0])>>>16|0))<<29|(g=(A<<=16)|a)>>>3,DA=B>>>3|0,e,0),A=f+_A|0,A=g>>>0>(B=g+EA|0)>>>0?A+1|0:A,a=(g=Ig(r,0,y,0))+B|0,B=f+A|0,g=g>>>0>(EA=a)>>>0?B+1|0:B,B=(A=o[eA+19|0])>>>24|0,_A=A<<8|(kA=o[eA+15|0]|o[eA+16|0]<<8|o[eA+17|0]<<16|o[eA+18|0]<<24)>>>24,A=Ig(F=(7&(cA=(A=(a=o[eA+20|0])>>>16|0)|B))<<29|(B=(a<<=16)|_A)>>>3,N=cA>>>3|0,p,0),g=f+g|0,g=A>>>0>(B=A+EA|0)>>>0?g+1|0:g,A=Ig(D,0,w,0),g=f+g|0,hA=g=A>>>0>(yA=A+B|0)>>>0?g+1|0:g,fA=A=g-((yA>>>0<4293918720)-1|0)|0,B=(g=A>>>21|0)+Q|0,EA=B=(A=(2097151&A)<<11|(cA=yA- -1048576|0)>>>21)>>>0>(aA=A+aA|0)>>>0?B+1|0:B,wA=A=B-((aA>>>0<4293918720)-1|0)|0,tA=(2097151&A)<<11|(_A=aA- -1048576|0)>>>21,a=A>>>21|0,A=Ig(p,0,n,0),g=f,B=A,A=Ig(e,0,h,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,pA=(A=B)+(B=Ig(y,0,w,0))|0,A=f+g|0,A=B>>>0>pA>>>0?A+1|0:A,rA=pA-(g=-2097152&(B=pA- -1048576|0))|0,g=(A-((131071&(Q=A-((pA>>>0<4293918720)-1|0)|0))+(g>>>0>pA>>>0)|0)|0)+a|0,R=g=(A=tA+rA|0)>>>0>>0?g+1|0:g,L=A,rA=Ig(A,g,470296,0),tA=f,g=Ig(e,0,w,0),A=f,a=g,g=Ig(y,0,p,0),A=f+A|0,g=g>>>0>(a=a+g|0)>>>0?A+1|0:A,A=Q>>>21|0,Q=(2097151&Q)<<11|B>>>21,B=A+g|0,bA=Q=(B=Q>>>0>(a=Q+a|0)>>>0?B+1|0:B)-((a>>>0<4293918720)-1|0)|0,A=a-(g=-2097152&(UA=a- -1048576|0))|0,P=a=B-((131071&Q)+(g>>>0>a>>>0)|0)|0,q=g=aA-(B=-2097152&_A)|0,z=Q=EA-((B>>>0>aA>>>0)+wA|0)|0,X=A,B=Ig(A,a,666643,0),A=f+tA|0,A=B>>>0>(a=B+rA|0)>>>0?A+1|0:A,B=Ig(g,Q,654183,0),g=f+A|0,sA=Q=B+a|0,_A=B>>>0>Q>>>0?g+1|0:g,pA=yA-(A=-2097152&cA)|0,fA=hA-((A>>>0>yA>>>0)+fA|0)|0,g=Ig(y,0,k,DA),B=f,Q=(A=g)+(g=Ig(G=GA>>>6&2097151,0,e,0))|0,A=f+B|0,A=g>>>0>Q>>>0?A+1|0:A,g=Ig(h,0,D,0),B=f+A|0,B=g>>>0>(Q=g+Q|0)>>>0?B+1|0:B,A=Ig(r,0,n,0),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,B=Ig(p,0,M=kA>>>6&2097151,0),A=f+g|0,A=B>>>0>(Q=B+Q|0)>>>0?A+1|0:A,B=Ig(w,0,F,N),g=f+A|0,yA=Q=B+Q|0,a=B>>>0>Q>>>0?g+1|0:g,g=(A=o[c+14|0])>>>24|0,Q=A<<8|(hA=o[c+10|0]|o[c+11|0]<<8|o[c+12|0]<<16|o[c+13|0]<<24)>>>24,g=Ig(K=2097151&((1&(g|=A=(B=o[c+15|0])>>>16|0))<<31|(A=(B<<=16)|Q)>>>1),0,e,0),A=f,B=g,g=Ig(y,0,G,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=Ig(n,0,k,DA))+B|0,B=f+A|0,B=g>>>0>Q>>>0?B+1|0:B,A=Ig(h,0,F,N),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,A=Ig(r,0,D,0),g=f+g|0,cA=B=A+Q|0,Q=A>>>0>B>>>0?g+1|0:g,g=(A=o[eA+14|0])>>>24|0,EA=A<<8|(aA=o[eA+10|0]|o[eA+11|0]<<8|o[eA+12|0]<<16|o[eA+13|0]<<24)>>>24,B=g,g=(A=o[eA+15|0])>>>16|0,g=Ig(U=2097151&((1&(g|=B))<<31|(A=A<<16|EA)>>>1),0,p,0),A=f+Q|0,A=g>>>0>(B=g+cA|0)>>>0?A+1|0:A,g=Ig(w,0,M,0),A=f+A|0,EA=A=g>>>0>(cA=g+B|0)>>>0?A+1|0:A,HA=g=A-((cA>>>0<4293918720)-1|0)|0,B=(A=g>>>21|0)+a|0,tA=B=(g=(2097151&g)<<11|(rA=cA- -1048576|0)>>>21)>>>0>(wA=g+yA|0)>>>0?B+1|0:B,MA=g=B-((wA>>>0<4293918720)-1|0)|0,A=(A=g>>>21|0)+fA|0,O=A=(g=(B=(2097151&g)<<11|(yA=wA- -1048576|0)>>>21)+pA|0)>>>0>>0?A+1|0:A,W=g,A=Ig(g,A,-997805,-1),g=f+_A|0,sA=B=A+sA|0,_A=A>>>0>B>>>0?g+1|0:g,pA=(dA=o[23+(_=t+224|0)|0]|o[_+24|0]<<8|o[_+25|0]<<16|o[_+26|0]<<24)>>>5&2097151,B=Ig(b=(A=o[c+2|0])<<16&2031616|o[0|c]|o[c+1|0]<<8,0,n,0),g=f,Q=(A=Ig(D,0,H=(a=o[c+2|0]|o[c+3|0]<<8|o[c+4|0]<<16|o[c+5|0]<<24)>>>5&2097151,0))+B|0,B=f+g|0,B=A>>>0>Q>>>0?B+1|0:B,A=Ig(Y=(o[c+7|0]|o[c+8|0]<<8|o[c+9|0]<<16|o[c+10|0]<<24)>>>7&2097151,0,M,0),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,B=Ig(U,0,J=hA>>>4&2097151,0),A=f+g|0,hA=Q=B+Q|0,Q=B>>>0>Q>>>0?A+1|0:A,a=(g=o[c+6|0])<<8|a>>>24,B=A=g>>>24|0,g=(A=o[c+7|0])>>>16|0,g=Ig(d=2097151&((3&(g|=B))<<30|(A=A<<16|a)>>>2),0,F,N),A=f+Q|0,A=g>>>0>(B=g+hA|0)>>>0?A+1|0:A,Q=(g=Ig(G,0,m=(o[eA+7|0]|o[eA+8|0]<<8|o[eA+9|0]<<16|o[eA+10|0]<<24)>>>7&2097151,0))+B|0,B=f+A|0,B=g>>>0>Q>>>0?B+1|0:B,g=Ig(K,0,KA=aA>>>4&2097151,0),A=f+B|0,a=g>>>0>(Q=g+Q|0)>>>0?A+1|0:A,A=(g=o[eA+6|0])>>>24|0,hA=g<<8|(aA=o[eA+2|0]|o[eA+3|0]<<8|o[eA+4|0]<<16|o[eA+5|0]<<24)>>>24,g=A,A=Ig(k,DA,l=2097151&((3&(g|=B=(A=o[eA+7|0])>>>16|0))<<30|(A=A<<16|hA)>>>2),0),g=f+a|0,g=A>>>0>(B=A+Q|0)>>>0?g+1|0:g,Q=B,B=Ig(u=(A=o[eA+2|0])<<16&2031616|o[0|eA]|o[eA+1|0]<<8,0,h,0),A=f+g|0,A=B>>>0>(Q=Q+B|0)>>>0?A+1|0:A,g=Ig(r,0,x=aA>>>5&2097151,0),A=f+A|0,A=g>>>0>(B=g+Q|0)>>>0?A+1|0:A,g=B,hA=B=B+pA|0,a=g=g>>>0>B>>>0?A+1|0:A,Q=o[_+21|0]|o[_+22|0]<<8,A=Ig(D,0,b,0),g=f,aA=(B=A)+(A=Ig(F,N,H,0))|0,B=f+g|0,B=A>>>0>aA>>>0?B+1|0:B,A=Ig(U,0,Y,0),g=f+B|0,g=A>>>0>(aA=A+aA|0)>>>0?g+1|0:g,A=Ig(J,0,KA,0),g=f+g|0,g=A>>>0>(B=A+aA|0)>>>0?g+1|0:g,aA=(A=B)+(B=Ig(M,0,d,0))|0,A=f+g|0,A=B>>>0>aA>>>0?A+1|0:A,g=Ig(G,0,l,0),A=f+A|0,A=g>>>0>(B=g+aA|0)>>>0?A+1|0:A,aA=(g=Ig(K,0,m,0))+B|0,B=f+A|0,B=g>>>0>aA>>>0?B+1|0:B,A=Ig(k,DA,x,0),g=f+B|0,g=A>>>0>(aA=A+aA|0)>>>0?g+1|0:g,A=Ig(r,0,u,0),g=f+g|0,A=A>>>0>(B=A+aA|0)>>>0?g+1|0:g,g=(g=B)>>>0>(B=B+Q|0)>>>0?A+1|0:A,Q=B,B=(A=o[_+23|0])<<16&2031616,A=g,B=A=B>>>0>(Q=Q+B|0)>>>0?A+1|0:A,eA=A=A-((Q>>>0<4293918720)-1|0)|0,g=(g=A>>>21|0)+a|0,A=(g=(a=hA=(A=(2097151&A)<<11|(aA=Q- -1048576|0)>>>21)+hA|0)>>>0>>0?g+1|0:g)+_A|0,A=(_A=a+sA|0)>>>0>>0?A+1|0:A,kA=a- -1048576|0,FA=a=g-((a>>>0<4293918720)-1|0)|0,NA=_A-(g=-2097152&kA)|0,YA=A-((g>>>0>_A>>>0)+a|0)|0,hA=Q,_A=B,A=Ig(q,z,470296,0),g=f,B=A,A=Ig(L,R,666643,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,Q=(A=B)+(B=Ig(W,O,654183,0))|0,A=f+g|0,GA=Q,a=B>>>0>Q>>>0?A+1|0:A,g=Ig(F,N,b,0),A=f,B=g,g=Ig(M,0,H,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=B)+(B=Ig(Y,0,KA,0))|0,g=f+A|0,g=B>>>0>Q>>>0?g+1|0:g,A=Ig(J,0,m,0),B=f+g|0,B=A>>>0>(Q=A+Q|0)>>>0?B+1|0:B,A=Ig(U,0,d,0),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,B=Ig(G,0,x,0),A=f+g|0,A=B>>>0>(Q=B+Q|0)>>>0?A+1|0:A,g=Ig(K,0,l,0),A=f+A|0,A=g>>>0>(B=g+Q|0)>>>0?A+1|0:A,Q=(g=B)+(B=Ig(k,DA,u,0))|0,g=f+A|0,pA=Q,B=B>>>0>Q>>>0?g+1|0:g,g=(A=o[_+19|0])>>>24|0,fA=A<<8|(sA=o[_+15|0]|o[_+16|0]<<8|o[_+17|0]<<16|o[_+18|0]<<24)>>>24,B=((JA=(A=(Q=o[_+20|0])>>>16|0)|g)>>>3|0)+B|0,pA=Q=(g=(7&JA)<<29|(g=(Q<<=16)|fA)>>>3)+pA|0,Q=g>>>0>Q>>>0?B+1|0:B,fA=sA>>>6&2097151,A=Ig(M,0,b,0),g=f,B=A,A=Ig(U,0,H,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,sA=(A=B)+(B=Ig(Y,0,m,0))|0,A=f+g|0,A=B>>>0>sA>>>0?A+1|0:A,B=Ig(J,0,l,0),g=f+A|0,g=B>>>0>(sA=B+sA|0)>>>0?g+1|0:g,B=Ig(d,0,KA,0),A=f+g|0,A=B>>>0>(sA=B+sA|0)>>>0?A+1|0:A,g=Ig(G,0,u,0),B=f+A|0,B=g>>>0>(sA=g+sA|0)>>>0?B+1|0:B,A=Ig(K,0,x,0),g=f+B|0,A=A>>>0>(sA=A+sA|0)>>>0?g+1|0:g,qA=A=(lA=sA+fA|0)>>>0>>0?A+1|0:A,ZA=A=A-((lA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(LA=lA- -1048576|0)>>>21,A=(A>>>21|0)+Q|0,jA=A=B>>>0>(zA=B+pA|0)>>>0?A+1|0:A,TA=A=A-((zA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(xA=zA- -1048576|0)>>>21,A=(A>>>21|0)+a|0,g=(B>>>0>(Q=B+GA|0)>>>0?A+1|0:A)+_A|0,_A=(B=Q+hA|0)-(A=-2097152&aA)|0,eA=A=(g=B>>>0>>0?g+1|0:g)-((A>>>0>B>>>0)+eA|0)|0,$A=A=A-((_A>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(vA=_A- -1048576|0)>>>21,A=(A>>21)+YA|0,Q=A=B>>>0>(a=B+NA|0)>>>0?A+1|0:A,VA=A=A-((a>>>0<4293918720)-1|0)|0,RA=(2097151&A)<<11|(GA=a- -1048576|0)>>>21,hA=A>>21,JA=wA-(A=-2097152&yA)|0,MA=tA-((A>>>0>wA>>>0)+MA|0)|0,A=Ig(e,0,p,0),PA=g=f,NA=A,sA=A- -1048576|0,uA=g=g-((A>>>0<4293918720)-1|0)|0,V=A=g>>>21|0,A=Ig(v=(2097151&g)<<11|sA>>>21,A,-683901,-1),g=f+EA|0,g=A>>>0>(B=A+cA|0)>>>0?g+1|0:g,yA=B-(A=-2097152&rA)|0,aA=g-((A>>>0>B>>>0)+HA|0)|0,g=Ig(n,0,G,0),A=f,B=g,g=Ig(e,0,J,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,g=Ig(y,0,K,0),A=f+A|0,A=g>>>0>(B=g+B|0)>>>0?A+1|0:A,EA=(g=B)+(B=Ig(D,0,k,DA))|0,g=f+A|0,g=B>>>0>EA>>>0?g+1|0:g,A=Ig(h,0,M,0),B=f+g|0,B=A>>>0>(EA=A+EA|0)>>>0?B+1|0:B,A=Ig(r,0,F,N),g=f+B|0,g=A>>>0>(EA=A+EA|0)>>>0?g+1|0:g,B=Ig(p,0,KA,0),A=f+g|0,A=B>>>0>(EA=B+EA|0)>>>0?A+1|0:A,g=Ig(w,0,U,0),A=f+A|0,cA=B=g+EA|0,EA=g>>>0>B>>>0?A+1|0:A,A=Ig(y,0,J,0),g=f,B=A,A=Ig(e,0,Y,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,tA=(A=Ig(D,0,G,0))+B|0,B=f+g|0,B=A>>>0>tA>>>0?B+1|0:B,A=Ig(n,0,K,0),g=f+B|0,g=A>>>0>(tA=A+tA|0)>>>0?g+1|0:g,B=Ig(k,DA,F,N),A=f+g|0,A=B>>>0>(tA=B+tA|0)>>>0?A+1|0:A,g=Ig(h,0,U,0),A=f+A|0,A=g>>>0>(B=g+tA|0)>>>0?A+1|0:A,tA=(g=B)+(B=Ig(r,0,M,0))|0,g=f+A|0,g=B>>>0>tA>>>0?g+1|0:g,A=Ig(p,0,m,0),B=f+g|0,B=A>>>0>(tA=A+tA|0)>>>0?B+1|0:B,A=Ig(w,0,KA,0),g=f+B|0,fA=g=A>>>0>(pA=A+tA|0)>>>0?g+1|0:g,OA=A=g-((pA>>>0<4293918720)-1|0)|0,g=(2097151&A)<<11|(wA=pA- -1048576|0)>>>21,A=(A>>>21|0)+EA|0,rA=A=g>>>0>(HA=g+cA|0)>>>0?A+1|0:A,mA=A=A-((HA>>>0<4293918720)-1|0)|0,g=(B=A>>>21|0)+aA|0,yA=g=(A=(2097151&A)<<11|(tA=HA- -1048576|0)>>>21)>>>0>(YA=A+yA|0)>>>0?g+1|0:g,XA=A=g-((YA>>>0<4293918720)-1|0)|0,EA=(2097151&A)<<11|(aA=YA- -1048576|0)>>>21,A=(A>>21)+MA|0,Z=A=(g=EA+JA|0)>>>0>>0?A+1|0:A,T=g,A=Ig(g,A,-683901,-1),g=f+hA|0,RA=B=A+RA|0,hA=A>>>0>B>>>0?g+1|0:g,A=Ig(y,0,b,0),g=f,B=A,A=Ig(n,0,H,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,EA=(A=B)+(B=Ig(F,N,Y,0))|0,A=f+g|0,A=B>>>0>EA>>>0?A+1|0:A,g=Ig(M,0,J,0),B=f+A|0,B=g>>>0>(EA=g+EA|0)>>>0?B+1|0:B,g=Ig(D,0,d,0),A=f+B|0,A=g>>>0>(EA=g+EA|0)>>>0?A+1|0:A,B=Ig(G,0,KA,0),g=f+A|0,g=B>>>0>(EA=B+EA|0)>>>0?g+1|0:g,A=Ig(K,0,U,0),g=f+g|0,g=A>>>0>(B=A+EA|0)>>>0?g+1|0:g,EA=(A=B)+(B=Ig(k,DA,m,0))|0,A=f+g|0,A=B>>>0>EA>>>0?A+1|0:A,g=Ig(h,0,x,0),B=f+A|0,B=g>>>0>(EA=g+EA|0)>>>0?B+1|0:B,g=Ig(r,0,l,0),A=f+B|0,A=g>>>0>(EA=g+EA|0)>>>0?A+1|0:A,B=Ig(w,0,u,0),g=f+A|0,MA=EA=B+EA|0,B=B>>>0>EA>>>0?g+1|0:g,g=(A=o[_+27|0])>>>24|0,cA=A<<8|dA>>>24,EA=2097151&((3&(g|=A=(EA=o[_+28|0])>>>16|0))<<30|(A=(EA<<=16)|cA)>>>2),g=B,cA=A=EA+MA|0,EA=A>>>0>>0?g+1|0:g,JA=Ig(X,P,470296,0),MA=f,A=(B=(2097151&bA)<<11|UA>>>21)+(NA-(g=-2097152&sA)|0)|0,g=PA-((524287&uA)+(g>>>0>NA>>>0)|0)+(bA>>>21)|0,$=g=A>>>0>>0?g+1|0:g,AA=A,g=Ig(A,g,666643,0),A=f+MA|0,A=g>>>0>(B=g+JA|0)>>>0?A+1|0:A,sA=(g=Ig(L,R,654183,0))+B|0,B=f+A|0,B=g>>>0>sA>>>0?B+1|0:B,g=Ig(q,z,-997805,-1),A=f+B|0,A=g>>>0>(sA=g+sA|0)>>>0?A+1|0:A,B=Ig(W,O,136657,0),g=f+A|0,kA=(A=(2097151&FA)<<11|kA>>>21)+(sA=B+sA|0)|0,g=(FA>>>21|0)+(B>>>0>sA>>>0?g+1|0:g)|0,uA=sA=EA-((cA>>>0<4293918720)-1|0)|0,A=(A>>>0>kA>>>0?g+1|0:g)+EA|0,g=(EA=cA+kA|0)-(B=-2097152&(PA=cA- -1048576|0))|0,B=(A=(A=EA>>>0>>0?A+1|0:A)-((B>>>0>EA>>>0)+sA|0)|0)+hA|0,JA=EA=A-((g>>>0<4293918720)-1|0)|0,NA=(B=(cA=g+RA|0)>>>0>>0?B+1|0:B)-(((g=-2097152&(MA=g- -1048576|0))>>>0>cA>>>0)+EA|0)|0,dA=A=cA-g|0,EA=a,a=Q,WA=YA-(A=-2097152&aA)|0,sA=yA-((A>>>0>YA>>>0)+XA|0)|0,A=Ig(AA,$,-683901,-1),g=f,Q=(B=A)+(A=Ig(v,V,136657,0))|0,B=f+g|0,g=rA+(A>>>0>Q>>>0?B+1|0:B)|0,tA=(B=Q+HA|0)-(A=-2097152&tA)|0,yA=(g=B>>>0>>0?g+1|0:g)-((A>>>0>B>>>0)+mA|0)|0,g=Ig(v,V,-997805,-1),A=f+fA|0,A=g>>>0>(B=g+pA|0)>>>0?A+1|0:A,Q=(g=Ig(AA,$,136657,0))+B|0,B=f+A|0,B=g>>>0>Q>>>0?B+1|0:B,A=Ig(X,P,-683901,-1),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,aA=Q-(A=-2097152&wA)|0,hA=g-((A>>>0>Q>>>0)+OA|0)|0,g=Ig(n,0,J,0),A=f,B=g,g=Ig(y,0,Y,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=Ig(e,0,d,0))+B|0,B=f+A|0,B=g>>>0>Q>>>0?B+1|0:B,A=Ig(F,N,G,0),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,B=Ig(D,0,K,0),A=f+g|0,A=B>>>0>(Q=B+Q|0)>>>0?A+1|0:A,B=Ig(k,DA,M,0),g=f+A|0,g=B>>>0>(Q=B+Q|0)>>>0?g+1|0:g,B=Ig(h,0,KA,0),A=f+g|0,A=B>>>0>(Q=B+Q|0)>>>0?A+1|0:A,g=Ig(r,0,U,0),B=f+A|0,B=g>>>0>(Q=g+Q|0)>>>0?B+1|0:B,A=Ig(p,0,l,0),g=f+B|0,g=A>>>0>(Q=A+Q|0)>>>0?g+1|0:g,B=Ig(w,0,m,0),A=f+g|0,cA=Q=B+Q|0,Q=B>>>0>Q>>>0?A+1|0:A,A=Ig(n,0,Y,0),g=f,B=A,A=Ig(e,0,H,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,rA=(A=B)+(B=Ig(D,0,J,0))|0,A=f+g|0,A=B>>>0>rA>>>0?A+1|0:A,g=Ig(y,0,d,0),B=f+A|0,B=g>>>0>(rA=g+rA|0)>>>0?B+1|0:B,A=Ig(G,0,M,0),g=f+B|0,g=A>>>0>(rA=A+rA|0)>>>0?g+1|0:g,B=Ig(F,N,K,0),A=f+g|0,A=B>>>0>(rA=B+rA|0)>>>0?A+1|0:A,B=Ig(k,DA,U,0),g=f+A|0,g=B>>>0>(rA=B+rA|0)>>>0?g+1|0:g,B=Ig(h,0,m,0),A=f+g|0,A=B>>>0>(rA=B+rA|0)>>>0?A+1|0:A,g=Ig(r,0,KA,0),B=f+A|0,B=g>>>0>(rA=g+rA|0)>>>0?B+1|0:B,rA=(A=Ig(p,0,x,0))+rA|0,g=f+B|0,B=Ig(w,0,l,0),A=f+(A>>>0>rA>>>0?g+1|0:g)|0,YA=A=B>>>0>(XA=B+rA|0)>>>0?A+1|0:A,gA=A=A-((XA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(bA=XA- -1048576|0)>>>21,A=(A>>>21|0)+Q|0,UA=A=B>>>0>(RA=B+cA|0)>>>0?A+1|0:A,CA=A=A-((RA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(FA=RA- -1048576|0)>>>21,A=(A>>>21|0)+hA|0,kA=A=B>>>0>(HA=B+aA|0)>>>0?A+1|0:A,BA=A=A-((HA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(fA=HA- -1048576|0)>>>21,A=(A>>21)+yA|0,Q=A=B>>>0>(aA=B+tA|0)>>>0?A+1|0:A,yA=A=A-((aA>>>0<4293918720)-1|0)|0,hA=(2097151&A)<<11|(B=aA- -1048576|0)>>>21,A=(A>>21)+sA|0,OA=A=(cA=hA+WA|0)>>>0>>0?A+1|0:A,mA=cA,A=Ig(cA,A,-683901,-1),g=f,cA=A,A=Ig(T,Z,136657,0),g=f+g|0,A=(A>>>0>(cA=cA+A|0)>>>0?g+1|0:g)+a|0,AI=(a=EA+cA|0)-(g=-2097152&GA)|0,II=(A=a>>>0>>0?A+1|0:A)-((g>>>0>a>>>0)+VA|0)|0,hA=_A,cA=eA,_A=Ig(mA,OA,136657,0),a=f,WA=A=aA-(g=-2097152&B)|0,IA=Q=Q-((g>>>0>aA>>>0)+yA|0)|0,B=Ig(T,Z,-997805,-1),g=f+a|0,g=B>>>0>(_A=B+_A|0)>>>0?g+1|0:g,B=Ig(A,Q,-683901,-1),A=f+g|0,VA=Q=B+_A|0,EA=B>>>0>Q>>>0?A+1|0:A,A=Ig(W,O,470296,0),g=f,Q=(B=A)+(A=Ig(q,z,666643,0))|0,B=f+g|0,g=jA+(A>>>0>Q>>>0?B+1|0:B)|0,GA=A=Q+zA|0,a=g=A>>>0>>0?g+1|0:g,g=Ig(W,O,666643,0),A=f+qA|0,A=g>>>0>(B=g+lA|0)>>>0?A+1|0:A,tA=B-(g=-2097152&LA)|0,pA=A-((g>>>0>B>>>0)+ZA|0)|0,g=Ig(U,0,b,0),A=f,B=g,g=Ig(H,0,KA,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=B)+(B=Ig(Y,0,l,0))|0,g=f+A|0,g=B>>>0>Q>>>0?g+1|0:g,B=Ig(J,0,x,0),A=f+g|0,A=B>>>0>(Q=B+Q|0)>>>0?A+1|0:A,g=Ig(d,0,m,0),B=f+A|0,B=g>>>0>(Q=g+Q|0)>>>0?B+1|0:B,A=Ig(K,0,u,0),g=f+B|0,aA=Q=A+Q|0,Q=A>>>0>Q>>>0?g+1|0:g,g=(A=o[_+14|0])>>>24|0,_A=A<<8|(yA=o[_+10|0]|o[_+11|0]<<8|o[_+12|0]<<16|o[_+13|0]<<24)>>>24,g=2097151&((1&(g|=B=(A=o[_+15|0])>>>16|0))<<31|(A=_A|A<<16)>>>1),A=Q,aA=B=g+aA|0,Q=g>>>0>B>>>0?A+1|0:A,_A=yA>>>4&2097151,A=Ig(b,0,KA,0),g=f,B=A,A=Ig(H,0,m,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,A=Ig(Y,0,x,0),g=f+g|0,g=A>>>0>(B=A+B|0)>>>0?g+1|0:g,yA=(A=B)+(B=Ig(J,0,u,0))|0,A=f+g|0,A=B>>>0>yA>>>0?A+1|0:A,g=Ig(d,0,l,0),B=f+A|0,A=g>>>0>(yA=g+yA|0)>>>0?B+1|0:B,eA=A=(LA=_A+yA|0)>>>0>>0?A+1|0:A,QA=A=A-((LA>>>0<4293918720)-1|0)|0,g=(B=A>>>21|0)+Q|0,wA=g=(A=(2097151&A)<<11|(sA=LA- -1048576|0)>>>21)>>>0>(jA=A+aA|0)>>>0?g+1|0:g,iA=A=g-((jA>>>0<4293918720)-1|0)|0,g=(2097151&A)<<11|(rA=jA- -1048576|0)>>>21,A=(A>>>21|0)+pA|0,yA=A=g>>>0>(tA=g+tA|0)>>>0?A+1|0:A,oA=A=A-((tA>>>0<4293918720)-1|0)|0,g=(B=A>>21)+a|0,ZA=g=(g=(A=(2097151&A)<<11|(aA=tA- -1048576|0)>>>21)>>>0>(Q=A+GA|0)>>>0?g+1|0:g)-(((B=-2097152&xA)>>>0>Q>>>0)+TA|0)|0,xA=A=Q-B|0,_A=A- -1048576|0,TA=A=g-((A>>>0<4293918720)-1|0)|0,B=(g=A>>21)+EA|0,g=((A=(2097151&A)<<11|_A>>>21)>>>0>(Q=A+VA|0)>>>0?B+1|0:B)+cA|0,lA=g=(g=(A=Q)>>>0>(Q=Q+hA|0)>>>0?g+1|0:g)-(((B=-2097152&vA)>>>0>Q>>>0)+$A|0)|0,cA=A=Q-B|0,a=A- -1048576|0,qA=A=g-((A>>>0<4293918720)-1|0)|0,B=(g=A>>21)+II|0,vA=A=(B=(A=(2097151&A)<<11|a>>>21)>>>0>(EA=A+AI|0)>>>0?B+1|0:B)-((EA>>>0<4293918720)-1|0)|0,GA=dA- -1048576|0,pA=NA-((dA>>>0<4293918720)-1|0)|0,hA=(2097151&A)<<11|(Q=EA- -1048576|0)>>>21,A=(A>>21)+NA|0,$A=(dA=hA+dA|0)-(g=-2097152&GA)|0,AI=(hA>>>0>dA>>>0?A+1|0:A)-((g>>>0>dA>>>0)+pA|0)|0,II=EA-(A=-2097152&Q)|0,VA=B-((A>>>0>EA>>>0)+vA|0)|0,zA=cA-(A=-2097152&a)|0,dA=lA-((A>>>0>cA>>>0)+qA|0)|0,A=Ig(mA,OA,-997805,-1),g=f,B=A,A=Ig(T,Z,654183,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,Q=(A=B)+(B=Ig(WA,IA,136657,0))|0,A=f+g|0,g=ZA+(B>>>0>Q>>>0?A+1|0:A)|0,lA=(B=Q+xA|0)-(A=-2097152&_A)|0,qA=(g=B>>>0>>0?g+1|0:g)-((A>>>0>B>>>0)+TA|0)|0,xA=HA-(A=-2097152&fA)|0,NA=kA-((A>>>0>HA>>>0)+BA|0)|0,g=Ig(AA,$,-997805,-1),A=f,B=g,g=Ig(v,V,654183,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=B)+(B=Ig(X,P,136657,0))|0,g=f+A|0,g=B>>>0>Q>>>0?g+1|0:g,A=Ig(L,R,-683901,-1),B=f+g|0,g=UA+(A>>>0>(Q=A+Q|0)>>>0?B+1|0:B)|0,fA=(B=Q+RA|0)-(A=-2097152&FA)|0,kA=(g=B>>>0>>0?g+1|0:g)-((A>>>0>B>>>0)+CA|0)|0,g=Ig(AA,$,654183,0),A=f,B=g,g=Ig(v,V,470296,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,Q=(g=Ig(X,P,-997805,-1))+B|0,B=f+A|0,g=YA+(g>>>0>Q>>>0?B+1|0:B)|0,g=(A=Q+XA|0)>>>0>>0?g+1|0:g,B=A,A=Ig(L,R,136657,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,Q=(A=B)+(B=Ig(q,z,-683901,-1))|0,A=f+g|0,_A=Q-(g=-2097152&bA)|0,a=(B>>>0>Q>>>0?A+1|0:A)-((g>>>0>Q>>>0)+gA|0)|0,Q=(o[_+28|0]|o[_+29|0]<<8|o[_+30|0]<<16|o[_+31|0]<<24)>>>7|0,A=Ig(e,0,b,0),g=f,EA=(B=A)+(A=Ig(y,0,H,0))|0,B=f+g|0,B=A>>>0>EA>>>0?B+1|0:B,A=Ig(D,0,Y,0),g=f+B|0,g=A>>>0>(EA=A+EA|0)>>>0?g+1|0:g,B=Ig(F,N,J,0),A=f+g|0,A=B>>>0>(EA=B+EA|0)>>>0?A+1|0:A,B=Ig(n,0,d,0),g=f+A|0,g=B>>>0>(EA=B+EA|0)>>>0?g+1|0:g,B=Ig(G,0,U,0),A=f+g|0,A=B>>>0>(EA=B+EA|0)>>>0?A+1|0:A,g=Ig(M,0,K,0),B=f+A|0,B=g>>>0>(EA=g+EA|0)>>>0?B+1|0:B,A=Ig(k,DA,KA,0),g=f+B|0,g=A>>>0>(EA=A+EA|0)>>>0?g+1|0:g,B=Ig(h,0,l,0),A=f+g|0,A=B>>>0>(EA=B+EA|0)>>>0?A+1|0:A,B=Ig(r,0,m,0),g=f+A|0,g=B>>>0>(EA=B+EA|0)>>>0?g+1|0:g,B=Ig(p,0,u,0),A=f+g|0,A=B>>>0>(EA=B+EA|0)>>>0?A+1|0:A,g=Ig(w,0,x,0),B=f+A|0,g=B=g>>>0>(EA=g+EA|0)>>>0?B+1|0:B,UA=(B=(2097151&uA)<<11|PA>>>21)+(A=Q+EA|0)|0,A=(uA>>>21|0)+(g=A>>>0>>0?g+1|0:g)|0,hA=A=B>>>0>UA>>>0?A+1|0:A,vA=g=A-((UA>>>0<4293918720)-1|0)|0,B=(A=g>>>21|0)+a|0,cA=B=(g=(2097151&g)<<11|(DA=UA- -1048576|0)>>>21)>>>0>(FA=g+_A|0)>>>0?B+1|0:B,PA=g=B-((FA>>>0<4293918720)-1|0)|0,A=(A=g>>21)+kA|0,_A=A=(g=(2097151&g)<<11|(EA=FA- -1048576|0)>>>21)>>>0>(fA=g+fA|0)>>>0?A+1|0:A,bA=g=A-((fA>>>0<4293918720)-1|0)|0,B=(A=g>>21)+NA|0,uA=B=(g=(Q=(2097151&g)<<11|(a=fA- -1048576|0)>>>21)+xA|0)>>>0>>0?B+1|0:B,NA=g,A=Ig(g,B,-683901,-1),g=f+qA|0,kA=B=A+lA|0,Q=A>>>0>B>>>0?g+1|0:g,g=Ig(T,Z,470296,0),A=f+yA|0,A=g>>>0>(tA=g+tA|0)>>>0?A+1|0:A,g=Ig(mA,OA,654183,0),A=f+(A-(((B=-2097152&aA)>>>0>tA>>>0)+oA|0)|0)|0,A=g>>>0>(aA=g+(tA-B|0)|0)>>>0?A+1|0:A,B=Ig(WA,IA,-997805,-1),g=f+A|0,g=B>>>0>(aA=B+aA|0)>>>0?g+1|0:g,YA=B=fA-(A=-2097152&a)|0,KA=_A=_A-((A>>>0>fA>>>0)+bA|0)|0,aA=(a=Ig(NA,uA,136657,0))+aA|0,A=f+g|0,B=Ig(B,_A,-683901,-1),g=f+(a>>>0>aA>>>0?A+1|0:A)|0,_A=g=B>>>0>(yA=B+aA|0)>>>0?g+1|0:g,bA=A=g-((yA>>>0<4293918720)-1|0)|0,g=(2097151&A)<<11|(a=yA- -1048576|0)>>>21,A=(A>>21)+Q|0,fA=g=(A=g>>>0>(aA=g+kA|0)>>>0?A+1|0:A)-((aA>>>0<4293918720)-1|0)|0,tA=(2097151&g)<<11|(Q=aA- -1048576|0)>>>21,g=(g>>21)+dA|0,zA=kA=tA+zA|0,kA=tA>>>0>kA>>>0?g+1|0:g,dA=aA-(g=-2097152&Q)|0,XA=A-((g>>>0>aA>>>0)+fA|0)|0,lA=yA-(A=-2097152&a)|0,qA=_A-((A>>>0>yA>>>0)+bA|0)|0,A=Ig(T,Z,666643,0),B=wA+f|0,B=(a=A+jA|0)>>>0>>0?B+1|0:B,Q=(A=Ig(mA,OA,470296,0))+(a-(g=-2097152&rA)|0)|0,g=f+(B-((g>>>0>a>>>0)+iA|0)|0)|0,g=A>>>0>Q>>>0?g+1|0:g,B=Ig(WA,IA,654183,0),A=f+g|0,aA=Q=B+Q|0,Q=B>>>0>Q>>>0?A+1|0:A,a=FA-(A=-2097152&EA)|0,_A=cA-((A>>>0>FA>>>0)+PA|0)|0,A=Ig(AA,$,470296,0),g=f,B=A,A=Ig(v,V,666643,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,A=Ig(X,P,654183,0),g=f+g|0,g=A>>>0>(B=A+B|0)>>>0?g+1|0:g,EA=(A=B)+(B=Ig(L,R,-997805,-1))|0,A=f+g|0,A=B>>>0>EA>>>0?A+1|0:A,g=Ig(q,z,136657,0),A=f+A|0,A=g>>>0>(B=g+EA|0)>>>0?A+1|0:A,EA=(g=Ig(W,O,-683901,-1))+B|0,B=f+A|0,g=hA+(g>>>0>EA>>>0?B+1|0:B)|0,FA=(B=(2097151&JA)<<11|MA>>>21)+((EA=EA+UA|0)-(A=-2097152&DA)|0)|0,A=((g=EA>>>0>>0?g+1|0:g)-((A>>>0>EA>>>0)+vA|0)|0)+(JA>>21)|0,fA=A=B>>>0>FA>>>0?A+1|0:A,xA=A=A-((FA>>>0<4293918720)-1|0)|0,g=a,a=(2097151&A)<<11|(rA=FA- -1048576|0)>>>21,A=(A>>21)+_A|0,bA=A=(B=g+a|0)>>>0>>0?A+1|0:A,UA=B,A=Ig(B,A,-683901,-1),g=f+Q|0,g=A>>>0>(B=A+aA|0)>>>0?g+1|0:g,Q=(A=B)+(B=Ig(NA,uA,-997805,-1))|0,A=f+g|0,A=B>>>0>Q>>>0?A+1|0:A,g=Ig(YA,KA,136657,0),B=f+A|0,MA=Q=g+Q|0,cA=g>>>0>Q>>>0?B+1|0:B,aA=LA-(A=-2097152&sA)|0,hA=eA-((A>>>0>LA>>>0)+QA|0)|0,g=Ig(b,0,m,0),A=f,B=g,g=Ig(H,0,l,0),A=f+A|0,A=g>>>0>(B=B+g|0)>>>0?A+1|0:A,g=Ig(Y,0,u,0),A=f+A|0,A=g>>>0>(B=g+B|0)>>>0?A+1|0:A,Q=(g=Ig(d,0,x,0))+B|0,B=f+A|0,g=g>>>0>Q>>>0?B+1|0:B,DA=B=(A=(o[_+7|0]|o[_+8|0]<<8|o[_+9|0]<<16|o[_+10|0]<<24)>>>7&2097151)+Q|0,EA=A>>>0>B>>>0?g+1|0:g,A=Ig(b,0,l,0),g=f,B=A,A=Ig(H,0,x,0),g=f+g|0,g=A>>>0>(B=B+A|0)>>>0?g+1|0:g,Q=(A=B)+(B=Ig(d,0,u,0))|0,A=f+g|0,_A=Q,Q=B>>>0>Q>>>0?A+1|0:A,A=(g=o[_+6|0])>>>24|0,a=g<<8|(vA=o[_+2|0]|o[_+3|0]<<8|o[_+4|0]<<16|o[_+5|0]<<24)>>>24,B=A,g=(A=o[_+7|0])>>>16|0,g|=B,B=Q,a=B=(A=2097151&((3&g)<<30|(A=A<<16|a)>>>2))>>>0>(_A=A+_A|0)>>>0?B+1|0:B,RA=A=B-((_A>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(wA=_A- -1048576|0)>>>21,A=(A>>>21|0)+EA|0,tA=A=B>>>0>(eA=B+DA|0)>>>0?A+1|0:A,PA=A=A-((eA>>>0<4293918720)-1|0)|0,B=(g=A>>>21|0)+hA|0,B=(A=(2097151&A)<<11|(yA=eA- -1048576|0)>>>21)>>>0>(Q=A+aA|0)>>>0?B+1|0:B,g=Ig(mA,OA,666643,0),A=f+B|0,A=g>>>0>(Q=g+Q|0)>>>0?A+1|0:A,g=Ig(WA,IA,470296,0),A=f+A|0,A=g>>>0>(B=g+Q|0)>>>0?A+1|0:A,Q=(g=B)+(B=Ig(UA,bA,136657,0))|0,g=f+A|0,g=B>>>0>Q>>>0?g+1|0:g,A=Ig(NA,uA,654183,0),g=f+g|0,g=A>>>0>(B=A+Q|0)>>>0?g+1|0:g,aA=(A=Ig(YA,KA,-997805,-1))+B|0,B=f+g|0,hA=B=A>>>0>aA>>>0?B+1|0:B,JA=A=B-((aA>>>0<4293918720)-1|0)|0,B=(2097151&A)<<11|(DA=aA- -1048576|0)>>>21,A=(A>>21)+cA|0,MA=B=(A=B>>>0>(Q=B+MA|0)>>>0?A+1|0:A)-((Q>>>0<4293918720)-1|0)|0,EA=(2097151&B)<<11|(cA=Q- -1048576|0)>>>21,B=(B>>21)+qA|0,HA=sA=EA+lA|0,sA=EA>>>0>sA>>>0?B+1|0:B,EA=Q,g=A,Q=(FA-(A=-2097152&rA)|0)+(rA=(2097151&pA)<<11|GA>>>21)|0,A=(fA-((A>>>0>FA>>>0)+xA|0)|0)+(pA>>21)|0,pA=A=Q>>>0>>0?A+1|0:A,lA=A=A-((Q>>>0<4293918720)-1|0)|0,FA=B=A>>21,A=Ig(mA=(2097151&A)<<11|(fA=Q- -1048576|0)>>>21,B,-683901,-1),g=f+g|0,g=A>>>0>(B=A+EA|0)>>>0?g+1|0:g,qA=B-(A=-2097152&cA)|0,LA=g-((A>>>0>B>>>0)+MA|0)|0,g=Ig(mA,FA,136657,0),A=f+hA|0,A=g>>>0>(B=g+aA|0)>>>0?A+1|0:A,jA=B-(g=-2097152&DA)|0,JA=A-((g>>>0>B>>>0)+JA|0)|0,g=Ig(WA,IA,666643,0),A=f+(tA-(((B=-2097152&yA)>>>0>eA>>>0)+PA|0)|0)|0,A=g>>>0>(EA=g+(eA-B|0)|0)>>>0?A+1|0:A,B=Ig(UA,bA,-997805,-1),g=f+A|0,g=B>>>0>(EA=B+EA|0)>>>0?g+1|0:g,A=Ig(NA,uA,470296,0),B=f+g|0,B=A>>>0>(EA=A+EA|0)>>>0?B+1|0:B,g=Ig(YA,KA,654183,0),A=f+B|0,MA=EA=g+EA|0,hA=g>>>0>EA>>>0?A+1|0:A,B=vA>>>5&2097151,A=Ig(b,0,x,0),g=f,cA=A,A=Ig(H,0,u,0),g=f+g|0,A=A>>>0>(EA=cA+A|0)>>>0?g+1|0:g,cA=g=B+EA|0,B=A=g>>>0>>0?A+1|0:A,eA=(g=Ig(b,0,u,0))+(A=(A=o[_+2|0])<<16&2031616|o[0|_]|o[_+1|0]<<8)|0,g=f,rA=g=A>>>0>eA>>>0?g+1|0:g,xA=g=g-((eA>>>0<4293918720)-1|0)|0,A=(A=g>>>21|0)+B|0,yA=A=(g=(2097151&g)<<11|(tA=eA- -1048576|0)>>>21)>>>0>(GA=g+cA|0)>>>0?A+1|0:A,vA=g=A-((GA>>>0<4293918720)-1|0)|0,B=(2097151&g)<<11|(aA=GA- -1048576|0)>>>21,g=(g>>>21|0)+a|0,g=B>>>0>(EA=B+_A|0)>>>0?g+1|0:g,B=Ig(UA,bA,654183,0),A=f+(g-(((a=-2097152&wA)>>>0>EA>>>0)+RA|0)|0)|0,A=B>>>0>(_A=B+(EA-a|0)|0)>>>0?A+1|0:A,g=Ig(NA,uA,666643,0),A=f+A|0,A=g>>>0>(B=g+_A|0)>>>0?A+1|0:A,DA=(g=B)+(B=Ig(YA,KA,470296,0))|0,g=f+A|0,cA=g=B>>>0>DA>>>0?g+1|0:g,PA=g=g-((DA>>>0<4293918720)-1|0)|0,B=(A=g>>21)+hA|0,wA=g=(B=(g=(2097151&g)<<11|(EA=DA- -1048576|0)>>>21)>>>0>(_A=g+MA|0)>>>0?B+1|0:B)-((_A>>>0<4293918720)-1|0)|0,hA=(2097151&g)<<11|(a=_A- -1048576|0)>>>21,g=(g>>21)+JA|0,uA=NA=hA+jA|0,hA=hA>>>0>NA>>>0?g+1|0:g,A=Ig(mA,FA,-997805,-1),g=f+B|0,g=A>>>0>(_A=A+_A|0)>>>0?g+1|0:g,JA=_A-(A=-2097152&a)|0,MA=g-((A>>>0>_A>>>0)+wA|0)|0,g=Ig(mA,FA,654183,0),A=f+cA|0,A=g>>>0>(B=g+DA|0)>>>0?A+1|0:A,NA=B-(g=-2097152&EA)|0,wA=A-((g>>>0>B>>>0)+PA|0)|0,A=Ig(UA,bA,470296,0),B=f+(yA-(((g=-2097152&aA)>>>0>GA>>>0)+vA|0)|0)|0,B=A>>>0>(a=A+(GA-g|0)|0)>>>0?B+1|0:B,g=Ig(YA,KA,666643,0),A=f+B|0,_A=a=g+a|0,B=g>>>0>a>>>0?A+1|0:A,g=Ig(UA,bA,666643,0),A=f+(rA-((4095&xA)+((a=-2097152&tA)>>>0>eA>>>0)|0)|0)|0,DA=A=g>>>0>(aA=g+(eA-a|0)|0)>>>0?A+1|0:A,rA=A=A-((aA>>>0<4293918720)-1|0)|0,a=(2097151&A)<<11|(cA=aA- -1048576|0)>>>21,A=(A>>21)+B|0,B=A=a>>>0>(EA=a+_A|0)>>>0?A+1|0:A,tA=A=A-((EA>>>0<4293918720)-1|0)|0,a=(2097151&A)<<11|(_A=EA- -1048576|0)>>>21,A=(A>>21)+wA|0,a=a>>>0>(yA=a+NA|0)>>>0?A+1|0:A,A=Ig(mA,FA,470296,0),B=f+B|0,B=A>>>0>(g=A+EA|0)>>>0?B+1|0:B,EA=g-(A=-2097152&_A)|0,_A=B-((A>>>0>g>>>0)+tA|0)|0,g=Ig(mA,FA,666643,0),A=f+(DA-(((B=-2097152&cA)>>>0>aA>>>0)+rA|0)|0)|0,g=(B=(A=g>>>0>(wA=g+(aA-B|0)|0)>>>0?A+1|0:A)>>21)+_A|0,A=(A=(g=(A=(2097151&A)<<11|wA>>>21)>>>0>(rA=A+EA|0)>>>0?g+1|0:g)>>21)+a|0,g=(g=(A=(g=(2097151&g)<<11|rA>>>21)>>>0>(tA=g+yA|0)>>>0?A+1|0:A)>>21)+MA|0,B=(A=(g=(A=(2097151&A)<<11|tA>>>21)>>>0>(a=A+JA|0)>>>0?g+1|0:g)>>21)+hA|0,A=(g=(B=(g=(2097151&g)<<11|a>>>21)>>>0>(yA=g+uA|0)>>>0?B+1|0:B)>>21)+LA|0,g=(B=(A=(B=(2097151&B)<<11|yA>>>21)>>>0>(aA=B+qA|0)>>>0?A+1|0:A)>>21)+sA|0,A=(A=(g=(A=(2097151&A)<<11|aA>>>21)>>>0>(hA=A+HA|0)>>>0?g+1|0:g)>>21)+XA|0,g=(g=(A=(g=(2097151&g)<<11|hA>>>21)>>>0>(DA=g+dA|0)>>>0?A+1|0:A)>>21)+kA|0,B=(A=(g=(A=(2097151&A)<<11|DA>>>21)>>>0>(cA=A+zA|0)>>>0?g+1|0:g)>>21)+VA|0,A=(g=(B=(g=(2097151&g)<<11|cA>>>21)>>>0>(EA=g+II|0)>>>0?B+1|0:B)>>21)+AI|0,fA=(sA=Q-(g=-2097152&fA)|0)+((2097151&(A=(B=(2097151&B)<<11|EA>>>21)>>>0>(_A=B+$A|0)>>>0?A+1|0:A))<<11|_A>>>21)|0,A=(pA-((g>>>0>Q>>>0)+lA|0)|0)+(A>>21)|0,pA=g=(A=sA>>>0>fA>>>0?A+1|0:A)>>21,wA=(A=Ig(kA=(2097151&A)<<11|fA>>>21,g,666643,0))+(g=2097151&wA)|0,A=f,Q=A=g>>>0>wA>>>0?A+1|0:A,C[0|E]=wA,C[E+1|0]=(255&A)<<24|wA>>>8,A=2097151&rA,g=Ig(kA,pA,470296,0)+A|0,B=f,A=(Q>>21)+(A>>>0>g>>>0?B+1|0:B)|0,A=(rA=(sA=(2097151&Q)<<11|wA>>>21)+g|0)>>>0>>0?A+1|0:A,C[E+4|0]=(2047&A)<<21|rA>>>11,g=A,B=rA,C[E+3|0]=(7&A)<<29|B>>>3,C[E+2|0]=31&((65535&Q)<<16|wA>>>16)|B<<5,Q=2097151&tA,tA=Ig(kA,pA,654183,0)+Q|0,A=f,rA=(2097151&g)<<11|B>>>21,g=(g>>21)+(Q=Q>>>0>tA>>>0?A+1|0:A)|0,A=g=(tA=rA+tA|0)>>>0>>0?g+1|0:g,C[E+6|0]=(63&A)<<26|tA>>>6,Q=tA,tA=0,C[E+5|0]=tA<<13|(1572864&B)>>>19|Q<<2,B=2097151&a,a=Ig(kA,pA,-997805,-1)+B|0,g=f,g=B>>>0>a>>>0?g+1|0:g,tA=(2097151&(B=A))<<11|Q>>>21,B=(A>>=21)+g|0,B=(a=tA+a|0)>>>0>>0?B+1|0:B,C[E+9|0]=(511&B)<<23|a>>>9,C[E+8|0]=(1&B)<<31|a>>>1,g=0,C[E+7|0]=g<<18|(2080768&Q)>>>14|a<<7,g=2097151&yA,Q=Ig(kA,pA,136657,0)+g|0,A=f,A=g>>>0>Q>>>0?A+1|0:A,yA=(2097151&(g=B))<<11|a>>>21,g=A+(B=g>>21)|0,g=(Q=yA+Q|0)>>>0>>0?g+1|0:g,C[E+12|0]=(4095&g)<<20|Q>>>12,B=Q,C[E+11|0]=(15&g)<<28|B>>>4,Q=0,C[E+10|0]=Q<<15|(1966080&a)>>>17|B<<4,Q=2097151&aA,a=Ig(kA,pA,-683901,-1)+Q|0,A=f,A=Q>>>0>a>>>0?A+1|0:A,Q=g,g=A+(g>>=21)|0,g=(Q=(aA=a)+(a=(2097151&Q)<<11|B>>>21)|0)>>>0>>0?g+1|0:g,C[E+14|0]=(127&g)<<25|Q>>>7,a=0,C[E+13|0]=a<<12|(1048576&B)>>>20|Q<<1,A=g>>21,B=(g=(2097151&g)<<11|Q>>>21)>>>0>(a=g+(2097151&hA)|0)>>>0?A+1|0:A,C[E+17|0]=(1023&B)<<22|a>>>10,C[E+16|0]=(3&B)<<30|a>>>2,g=0,C[E+15|0]=g<<17|(2064384&Q)>>>15|a<<6,A=B>>21,A=(g=(2097151&B)<<11|a>>>21)>>>0>(B=g+(2097151&DA)|0)>>>0?A+1|0:A,C[E+20|0]=(8191&A)<<19|B>>>13,C[E+19|0]=(31&A)<<27|B>>>5,Q=(g=2097151&cA)+(cA=(2097151&A)<<11|B>>>21)|0,g=A>>21,g=Q>>>0>>0?g+1|0:g,cA=Q,C[E+21|0]=Q,DA=0,C[E+18|0]=DA<<14|(1835008&a)>>>18|B<<3,C[E+22|0]=(255&g)<<24|Q>>>8,B=g>>21,B=(Q=(a=(2097151&g)<<11|Q>>>21)+(2097151&EA)|0)>>>0>>0?B+1|0:B,C[E+25|0]=(2047&B)<<21|Q>>>11,C[E+24|0]=(7&B)<<29|Q>>>3,C[E+23|0]=31&((65535&g)<<16|cA>>>16)|Q<<5,A=B>>21,A=(g=(2097151&B)<<11|Q>>>21)>>>0>(B=g+(2097151&_A)|0)>>>0?A+1|0:A,C[E+27|0]=(63&A)<<26|B>>>6,a=0,C[E+26|0]=a<<13|(1572864&Q)>>>19|B<<2,g=A,A>>=21,g=(Q=(_A=(2097151&g)<<11|B>>>21)+(a=2097151&fA)|0)>>>0>>0?A+1|0:A,C[E+31|0]=(131071&g)<<15|Q>>>17,A=Q,C[E+30|0]=(511&g)<<23|A>>>9,Q=0,C[E+28|0]=Q<<18|(2080768&B)>>>14|A<<7,C[E+29|0]=_A+fA>>>1,XC(c,64),XC(_,64),I&&(i[I>>2]=64,i[I+4>>2]=0),s=t+560|0,0}function n(A,I,g){var B,Q,i,E,a,_,c,t,r,e,y,s,h,D,p,w,n,k,F,S,N,G,M,K,U,b,H,Y,J,d,m,l,u,x,v,R,L,P,q,z,j,X,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0,BA=0,QA=0,iA=0,oA=0,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0,sA=0,hA=0,DA=0,fA=0,pA=0,wA=0,nA=0,kA=0,FA=0,SA=0,NA=0,GA=0,MA=0,KA=0,UA=0,bA=0,HA=0,YA=0,JA=0,dA=0,mA=0,lA=0,uA=0,xA=0,vA=0,RA=0,LA=0,PA=0,qA=0;Z=Ig(B=(W=o[g+2|0])<<16&2031616|o[0|g]|o[g+1|0]<<8,0,Q=(QA=o[I+23|0]|o[I+24|0]<<8|o[I+25|0]<<16|o[I+26|0]<<24)>>>5&2097151,0),V=f,O=Ig(i=(W=o[I+23|0])<<16&2031616|o[I+21|0]|o[I+22|0]<<8,0,E=(T=o[g+2|0]|o[g+3|0]<<8|o[g+4|0]<<16|o[g+5|0]<<24)>>>5&2097151,0),W=f+V|0,W=O>>>0>(Z=O+Z|0)>>>0?W+1|0:W,V=Ig(a=(o[g+7|0]|o[g+8|0]<<8|o[g+9|0]<<16|o[g+10|0]<<24)>>>7&2097151,0,_=(aA=o[I+15|0]|o[I+16|0]<<8|o[I+17|0]<<16|o[I+18|0]<<24)>>>6&2097151,0),O=f+W|0,IA=Z=V+Z|0,V=V>>>0>Z>>>0?O+1|0:O,O=(W=o[I+14|0])>>>24|0,$=W<<8|(gA=o[I+10|0]|o[I+11|0]<<8|o[I+12|0]<<16|o[I+13|0]<<24)>>>24,O=Ig(c=2097151&((1&(CA=(W=O)|(O=(Z=o[I+15|0])>>>16|0)))<<31|(W=(Z<<=16)|$)>>>1),0,t=(AA=o[g+10|0]|o[g+11|0]<<8|o[g+12|0]<<16|o[g+13|0]<<24)>>>4&2097151,0),V=f+V|0,CA=W=O+IA|0,Z=W>>>0>>0?V+1|0:V,V=(O=o[g+6|0])>>>24|0,IA=O<<8|T>>>24,T=r=2097151&((3&(V|=O=(W=o[g+7|0])>>>16|0))<<30|(W=IA|W<<16)>>>2),IA=0,$=(W=o[I+19|0])<<8|aA>>>24,V=O=W>>>24|0,W=(O=o[I+20|0])>>>16|0,G=V=(W|=V)>>>3|0,O=Ig(T,IA,e=(7&W)<<29|(O=O<<16|$)>>>3,V),W=f+Z|0,W=O>>>0>($=O+CA|0)>>>0?W+1|0:W,V=Ig(y=(T=o[g+15|0]|o[g+16|0]<<8|o[g+17|0]<<16|o[g+18|0]<<24)>>>6&2097151,0,s=(o[I+7|0]|o[I+8|0]<<8|o[I+9|0]<<16|o[I+10|0]<<24)>>>7&2097151,0),O=f+W|0,IA=Z=V+$|0,Z=V>>>0>Z>>>0?O+1|0:O,$=(W=o[g+14|0])<<8|AA>>>24,W=O=W>>>24|0,V=(O=o[g+15|0])>>>16|0,O=Ig(h=2097151&((1&(V|=W))<<31|(W=(O<<=16)|$)>>>1),0,D=gA>>>4&2097151,0),W=f+Z|0,AA=V=O+IA|0,IA=O>>>0>V>>>0?W+1|0:W,W=(O=o[g+19|0])>>>24|0,Z=O<<8|T>>>24,V=(O=o[g+20|0])>>>16|0,p=(7&(V|=W))<<29|(O=Z|O<<16)>>>3,eA=W=V>>>3|0,Z=W,W=(O=o[I+6|0])>>>24|0,T=O<<8|(CA=o[I+2|0]|o[I+3|0]<<8|o[I+4|0]<<16|o[I+5|0]<<24)>>>24,V=W,W=(O=o[I+7|0])>>>16|0,W=Ig(p,Z,w=2097151&((3&(W|=V))<<30|(O=O<<16|T)>>>2),0),O=f+IA|0,V=W>>>0>(Z=W+AA|0)>>>0?O+1|0:O,W=Ig(n=(W=o[g+23|0])<<16&2031616|o[g+21|0]|o[g+22|0]<<8,0,k=CA>>>5&2097151,0),O=f+V|0,V=W>>>0>(Z=W+Z|0)>>>0?O+1|0:O,O=Ig(F=(W=o[I+2|0])<<16&2031616|o[0|I]|o[I+1|0]<<8,0,hA=(CA=o[g+23|0]|o[g+24|0]<<8|o[g+25|0]<<16|o[g+26|0]<<24)>>>5&2097151,0),W=f+V|0,T=Z=O+Z|0,IA=O>>>0>Z>>>0?W+1|0:W,O=Ig(i,0,B,0),W=f,Z=(V=O)+(O=Ig(e,G,E,0))|0,V=f+W|0,V=O>>>0>Z>>>0?V+1|0:V,O=Ig(a,0,c,0),W=f+V|0,W=O>>>0>(Z=O+Z|0)>>>0?W+1|0:W,V=Ig(t,0,D,0),O=f+W|0,O=V>>>0>(Z=V+Z|0)>>>0?O+1|0:O,W=Ig(_,0,r,0),O=f+O|0,O=W>>>0>(V=W+Z|0)>>>0?O+1|0:O,Z=(W=V)+(V=Ig(y,0,w,0))|0,W=f+O|0,W=V>>>0>Z>>>0?W+1|0:W,O=Ig(h,0,s,0),V=f+W|0,V=O>>>0>(Z=O+Z|0)>>>0?V+1|0:V,Z=(O=Ig(p,eA,k,0))+Z|0,W=f+V|0,V=Ig(n,0,F,0),O=f+(O>>>0>Z>>>0?W+1|0:W)|0,Z=O=V>>>0>($=V+Z|0)>>>0?O+1|0:O,yA=O=O-(($>>>0<4293918720)-1|0)|0,W=(W=O>>>21|0)+IA|0,oA=V=(W=(O=(2097151&O)<<11|(cA=$- -1048576|0)>>>21)>>>0>(T=O+T|0)>>>0?W+1|0:W)-((T>>>0<4293918720)-1|0)|0,iA=T-(O=-2097152&(EA=T- -1048576|0))|0,BA=W-((O>>>0>T>>>0)+V|0)|0,IA=(W=o[g+27|0])<<8|CA>>>24,V=O=W>>>24|0,T=Ig(S=2097151&((3&(V|=W=(O=o[g+28|0])>>>16|0))<<30|(W=(O<<=16)|IA)>>>2),0,DA=(o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24)>>>7|0,0),IA=f,W=(O=o[I+27|0])>>>24|0,I=Ig(N=2097151&((3&(W|=V=(I=o[I+28|0])>>>16|0))<<30|(O=O<<8|QA>>>24|I<<16)>>>2),0,fA=(o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24)>>>7|0,0),O=f+IA|0,O=I>>>0>(g=I+T|0)>>>0?O+1|0:O,V=g,I=Ig(Q,0,fA,0),g=f,IA=(W=I)+(I=Ig(hA,0,DA,0))|0,W=f+g|0,W=I>>>0>IA>>>0?W+1|0:W,I=Ig(S,0,N,0),W=f+W|0,IA=W=I>>>0>(CA=I+IA|0)>>>0?W+1|0:W,AA=I=W-((CA>>>0<4293918720)-1|0)|0,W=I>>>21|0,T=(I=(2097151&I)<<11|(g=CA- -1048576|0)>>>21)+V|0,V=W+O|0,aA=W=(V=I>>>0>T>>>0?V+1|0:V)-((T>>>0<4293918720)-1|0)|0,I=T-(O=-2097152&(gA=T- -1048576|0))|0,K=O=V-((131071&W)+(O>>>0>T>>>0)|0)|0,U=I,I=Ig(I,O,666643,0),O=f+BA|0,nA=W=I+iA|0,T=I>>>0>W>>>0?O+1|0:O,iA=CA-(I=-2097152&g)|0,tA=IA-((131071&AA)+(I>>>0>CA>>>0)|0)|0,I=Ig(n,0,DA,0),g=f,W=(O=I)+(I=Ig(hA,0,N,0))|0,O=f+g|0,O=I>>>0>W>>>0?O+1|0:O,g=(I=Ig(i,0,fA,0))+W|0,W=f+O|0,W=I>>>0>g>>>0?W+1|0:W,I=Ig(Q,0,S,0),O=f+W|0,AA=g=I+g|0,I=I>>>0>g>>>0?O+1|0:O,g=Ig(Q,0,hA,0),O=f,V=(W=g)+(g=Ig(p,eA,DA,0))|0,W=f+O|0,W=g>>>0>V>>>0?W+1|0:W,O=(g=Ig(n,0,N,0))+V|0,V=f+W|0,V=g>>>0>O>>>0?V+1|0:V,W=(g=Ig(e,G,fA,0))+O|0,O=f+V|0,O=g>>>0>W>>>0?O+1|0:O,BA=(g=Ig(i,0,S,0))+W|0,W=f+O|0,CA=W=g>>>0>BA>>>0?W+1|0:W,_A=g=W-((BA>>>0<4293918720)-1|0)|0,W=I+(O=g>>>21|0)|0,g=W=(g=(2097151&g)<<11|(IA=BA- -1048576|0)>>>21)>>>0>(AA=g+AA|0)>>>0?W+1|0:W,QA=W=W-((AA>>>0<4293918720)-1|0)|0,O=iA,iA=(2097151&W)<<11|(I=AA- -1048576|0)>>>21,W=(W>>>21|0)+tA|0,b=W=(V=O+iA|0)>>>0>>0?W+1|0:W,H=I=AA-(O=-2097152&I)|0,Y=AA=g-((O>>>0>AA>>>0)+QA|0)|0,J=V,g=Ig(V,W,470296,0),O=f+T|0,O=g>>>0>(W=g+nA|0)>>>0?O+1|0:O,I=Ig(I,AA,654183,0),V=f+O|0,tA=g=I+W|0,T=I>>>0>g>>>0?V+1|0:V,QA=BA-(I=-2097152&IA)|0,BA=CA-((I>>>0>BA>>>0)+_A|0)|0,I=Ig(p,eA,N,0),g=f,W=(O=I)+(I=Ig(y,0,DA,0))|0,O=f+g|0,O=I>>>0>W>>>0?O+1|0:O,g=(I=Ig(i,0,hA,0))+W|0,W=f+O|0,W=I>>>0>g>>>0?W+1|0:W,I=Ig(Q,0,n,0),V=f+W|0,V=I>>>0>(g=I+g|0)>>>0?V+1|0:V,I=Ig(_,0,fA,0),O=f+V|0,O=I>>>0>(g=I+g|0)>>>0?O+1|0:O,I=Ig(e,G,S,0),W=f+O|0,CA=g=I+g|0,IA=I>>>0>g>>>0?W+1|0:W,I=Ig(h,0,DA,0),g=f,W=(O=I)+(I=Ig(y,0,N,0))|0,O=f+g|0,O=I>>>0>W>>>0?O+1|0:O,g=(I=Ig(Q,0,p,eA))+W|0,W=f+O|0,W=I>>>0>g>>>0?W+1|0:W,I=Ig(e,G,hA,0),V=f+W|0,V=I>>>0>(g=I+g|0)>>>0?V+1|0:V,I=Ig(i,0,n,0),O=f+V|0,O=I>>>0>(g=I+g|0)>>>0?O+1|0:O,I=Ig(c,0,fA,0),W=f+O|0,W=I>>>0>(g=I+g|0)>>>0?W+1|0:W,I=Ig(_,0,S,0),O=f+W|0,I=O=I>>>0>(g=I+g|0)>>>0?O+1|0:O,sA=O=O-((g>>>0<4293918720)-1|0)|0,V=(W=O>>>21|0)+IA|0,iA=V=(O=(2097151&O)<<11|(_A=g- -1048576|0)>>>21)>>>0>(pA=O+CA|0)>>>0?V+1|0:V,NA=O=V-((pA>>>0<4293918720)-1|0)|0,IA=(2097151&O)<<11|(AA=pA- -1048576|0)>>>21,O=(O>>>21|0)+BA|0,d=O=(V=IA+QA|0)>>>0>>0?O+1|0:O,m=V,O=Ig(V,O,-997805,-1),W=f+T|0,BA=V=O+tA|0,T=O>>>0>V>>>0?W+1|0:W,IA=$,$=Z,O=Ig(B,0,e,G),W=f,Z=(V=O)+(O=Ig(_,0,E,0))|0,V=f+W|0,V=O>>>0>Z>>>0?V+1|0:V,W=Ig(a,0,D,0),O=f+V|0,O=W>>>0>(Z=W+Z|0)>>>0?O+1|0:O,V=Ig(t,0,s,0),W=f+O|0,W=V>>>0>(Z=V+Z|0)>>>0?W+1|0:W,V=Ig(c,0,r,0),O=f+W|0,O=V>>>0>(Z=V+Z|0)>>>0?O+1|0:O,V=Ig(y,0,k,0),W=f+O|0,W=V>>>0>(Z=V+Z|0)>>>0?W+1|0:W,O=Ig(h,0,w,0),V=f+W|0,V=O>>>0>(Z=O+Z|0)>>>0?V+1|0:V,W=Ig(p,eA,F,0),O=f+V|0,CA=Z=W+Z|0,Z=W>>>0>Z>>>0?O+1|0:O,O=Ig(B,0,_,0),W=f,V=O,O=Ig(E,0,c,0),W=f+W|0,W=O>>>0>(V=V+O|0)>>>0?W+1|0:W,QA=(O=V)+(V=Ig(a,0,s,0))|0,O=f+W|0,O=V>>>0>QA>>>0?O+1|0:O,V=Ig(t,0,w,0),W=f+O|0,W=V>>>0>(QA=V+QA|0)>>>0?W+1|0:W,O=Ig(r,0,D,0),V=f+W|0,V=O>>>0>(QA=O+QA|0)>>>0?V+1|0:V,QA=(W=Ig(y,0,F,0))+QA|0,O=f+V|0,V=Ig(h,0,k,0),W=f+(W>>>0>QA>>>0?O+1|0:O)|0,KA=W=V>>>0>(MA=V+QA|0)>>>0?W+1|0:W,xA=W=W-((MA>>>0<4293918720)-1|0)|0,V=(2097151&W)<<11|(GA=MA- -1048576|0)>>>21,W=(W>>>21|0)+Z|0,rA=W=V>>>0>(UA=V+CA|0)>>>0?W+1|0:W,vA=W=W-((UA>>>0<4293918720)-1|0)|0,V=(2097151&W)<<11|(nA=UA- -1048576|0)>>>21,W=(W>>>21|0)+$|0,W=V>>>0>(IA=V+IA|0)>>>0?W+1|0:W,O=Ig(J,b,666643,0),W=f+(W-(((V=-2097152&cA)>>>0>IA>>>0)+yA|0)|0)|0,W=O>>>0>(Z=O+(IA-V|0)|0)>>>0?W+1|0:W,V=Ig(H,Y,470296,0),O=f+W|0,O=V>>>0>(Z=V+Z|0)>>>0?O+1|0:O,V=Ig(m,d,654183,0),W=f+O|0,tA=W=V>>>0>(kA=V+Z|0)>>>0?W+1|0:W,mA=W=W-((kA>>>0<4293918720)-1|0)|0,O=(O=W>>21)+T|0,BA=O=(W=(2097151&W)<<11|(QA=kA- -1048576|0)>>>21)>>>0>(yA=W+BA|0)>>>0?O+1|0:O,bA=W=O-((yA>>>0<4293918720)-1|0)|0,JA=(2097151&W)<<11|(cA=yA- -1048576|0)>>>21,CA=W>>21,O=Ig(B,0,N,0),W=f,V=O,O=Ig(Q,0,E,0),W=f+W|0,W=O>>>0>(V=V+O|0)>>>0?W+1|0:W,Z=(O=Ig(a,0,e,G))+V|0,V=f+W|0,V=O>>>0>Z>>>0?V+1|0:V,W=Ig(_,0,t,0),O=f+V|0,O=W>>>0>(Z=W+Z|0)>>>0?O+1|0:O,V=Ig(i,0,r,0),W=f+O|0,W=V>>>0>(Z=V+Z|0)>>>0?W+1|0:W,V=Ig(y,0,D,0),O=f+W|0,O=V>>>0>(Z=V+Z|0)>>>0?O+1|0:O,V=Ig(h,0,c,0),W=f+O|0,W=V>>>0>(Z=V+Z|0)>>>0?W+1|0:W,O=Ig(s,0,p,eA),V=f+W|0,V=O>>>0>(Z=O+Z|0)>>>0?V+1|0:V,W=Ig(k,0,hA,0),O=f+V|0,O=W>>>0>(Z=W+Z|0)>>>0?O+1|0:O,V=Ig(w,0,n,0),W=f+O|0,W=V>>>0>(Z=V+Z|0)>>>0?W+1|0:W,V=(O=Z)+(Z=Ig(S,0,F,0))|0,O=f+W|0,T=V,IA=V>>>0>>0?O+1|0:O,FA=Ig(DA,0,fA,0),$=V=(SA=f)-((FA>>>0<4293918720)-1|0)|0,W=FA-(O=-2097152&(Z=FA- -1048576|0))|0,O=(aA>>>21|0)+(O=SA-((524287&V)+(O>>>0>FA>>>0)|0)|0)|0,l=O=(V=(gA=(2097151&aA)<<11|gA>>>21)+W|0)>>>0>>0?O+1|0:O,u=V,W=(2097151&oA)<<11|EA>>>21,gA=Ig(V,O,666643,0)+W|0,O=f+(oA>>>21|0)|0,O=W>>>0>gA>>>0?O+1|0:O,V=Ig(U,K,470296,0),W=f+O|0,W=(V>>>0>(gA=V+gA|0)>>>0?W+1|0:W)+IA|0,W=(O=T+gA|0)>>>0>>0?W+1|0:W,gA=(V=Ig(J,b,654183,0))+O|0,O=f+W|0,dA=T- -1048576|0,FA=IA=IA-((T>>>0<4293918720)-1|0)|0,W=Ig(H,Y,-997805,-1),V=f+(V>>>0>gA>>>0?O+1|0:O)|0,V=W>>>0>(T=W+gA|0)>>>0?V+1|0:V,EA=(O=Ig(m,d,136657,0))+(T-(W=-2097152&dA)|0)|0,W=f+(V-((W>>>0>T>>>0)+IA|0)|0)|0,V=(aA=O>>>0>EA>>>0?W+1|0:W)+CA|0,HA=O=EA+JA|0,gA=V=O>>>0>>0?V+1|0:V,SA=pA-(O=-2097152&AA)|0,pA=iA-((O>>>0>pA>>>0)+NA|0)|0,x=V=$>>>21|0,W=(O=g)+(g=Ig(M=(2097151&$)<<11|Z>>>21,V,-683901,-1))|0,O=f+I|0,iA=W-(I=-2097152&_A)|0,oA=(g>>>0>W>>>0?O+1|0:O)-((I>>>0>W>>>0)+sA|0)|0,I=Ig(Q,0,y,0),g=f,O=I,I=Ig(t,0,DA,0),W=f+g|0,W=I>>>0>(O=O+I|0)>>>0?W+1|0:W,I=Ig(h,0,N,0),V=f+W|0,V=I>>>0>(g=I+O|0)>>>0?V+1|0:V,I=Ig(i,0,p,eA),O=f+V|0,O=I>>>0>(g=I+g|0)>>>0?O+1|0:O,I=Ig(_,0,hA,0),O=f+O|0,O=I>>>0>(g=I+g|0)>>>0?O+1|0:O,I=Ig(e,G,n,0),W=f+O|0,W=I>>>0>(g=I+g|0)>>>0?W+1|0:W,I=Ig(D,0,fA,0),W=f+W|0,W=I>>>0>(g=I+g|0)>>>0?W+1|0:W,I=Ig(c,0,S,0),V=f+W|0,Z=g=I+g|0,I=I>>>0>g>>>0?V+1|0:V,g=Ig(t,0,N,0),O=f,W=g,g=Ig(a,0,DA,0),O=f+O|0,O=g>>>0>(W=W+g|0)>>>0?O+1|0:O,g=Ig(i,0,y,0),O=f+O|0,O=g>>>0>(W=g+W|0)>>>0?O+1|0:O,V=(g=Ig(Q,0,h,0))+W|0,W=f+O|0,W=g>>>0>V>>>0?W+1|0:W,g=Ig(e,G,p,eA),W=f+W|0,W=g>>>0>(O=g+V|0)>>>0?W+1|0:W,g=Ig(c,0,hA,0),V=f+W|0,V=g>>>0>(O=g+O|0)>>>0?V+1|0:V,W=(g=Ig(_,0,n,0))+O|0,O=f+V|0,O=g>>>0>W>>>0?O+1|0:O,g=Ig(s,0,fA,0),O=f+O|0,O=g>>>0>(W=g+W|0)>>>0?O+1|0:O,AA=(g=Ig(D,0,S,0))+W|0,W=f+O|0,CA=W=g>>>0>AA>>>0?W+1|0:W,YA=g=W-((AA>>>0<4293918720)-1|0)|0,V=I+(O=g>>>21|0)|0,IA=V=(g=(2097151&g)<<11|(T=AA- -1048576|0)>>>21)>>>0>(_A=g+Z|0)>>>0?V+1|0:V,sA=I=V-((_A>>>0<4293918720)-1|0)|0,W=(O=I>>>21|0)+oA|0,Z=W=(I=(2097151&I)<<11|($=_A- -1048576|0)>>>21)>>>0>(iA=I+iA|0)>>>0?W+1|0:W,oA=g=W-((iA>>>0<4293918720)-1|0)|0,V=(O=g>>21)+pA|0,v=V=(g=(W=(2097151&g)<<11|(I=iA- -1048576|0)>>>21)+SA|0)>>>0>>0?V+1|0:V,NA=EA- -1048576|0,JA=W=aA-((EA>>>0<4293918720)-1|0)|0,lA=g,g=Ig(g,V,-683901,-1),O=f+gA|0,SA=O=(W=(O=g>>>0>(V=g+HA|0)>>>0?O+1|0:O)-(((g=-2097152&NA)>>>0>V>>>0)+W|0)|0)-(((gA=V-g|0)>>>0<4293918720)-1|0)|0,P=gA-(g=-2097152&(pA=gA- -1048576|0))|0,RA=W-((g>>>0>gA>>>0)+O|0)|0,g=Ig(lA,v,136657,0),W=f+(BA-(((O=-2097152&cA)>>>0>yA>>>0)+bA|0)|0)|0,uA=V=g+(yA-O|0)|0,g=g>>>0>V>>>0?W+1|0:W,wA=iA-(I&=-2097152)|0,cA=Z-((I>>>0>iA>>>0)+oA|0)|0,I=Ig(u,l,-683901,-1),O=f,W=I,I=Ig(M,x,136657,0),O=f+O|0,W=IA+(I>>>0>(V=W+I|0)>>>0?O+1|0:O)|0,aA=(O=V+_A|0)-(I=-2097152&$)|0,gA=(W=O>>>0<_A>>>0?W+1|0:W)-((I>>>0>O>>>0)+sA|0)|0,I=Ig(M,x,-997805,-1),O=f+CA|0,O=I>>>0>(W=I+AA|0)>>>0?O+1|0:O,I=Ig(u,l,136657,0),O=f+O|0,O=I>>>0>(W=I+W|0)>>>0?O+1|0:O,V=(I=Ig(U,K,-683901,-1))+W|0,W=f+O|0,W=I>>>0>V>>>0?W+1|0:W,IA=V-(I=-2097152&T)|0,$=W-((I>>>0>V>>>0)+YA|0)|0,I=Ig(Q,0,t,0),O=f,V=(W=I)+(I=Ig(a,0,N,0))|0,W=f+O|0,W=I>>>0>V>>>0?W+1|0:W,I=Ig(r,0,DA,0),O=f+W|0,O=I>>>0>(V=I+V|0)>>>0?O+1|0:O,I=Ig(y,0,e,G),W=f+O|0,W=I>>>0>(V=I+V|0)>>>0?W+1|0:W,I=Ig(i,0,h,0),O=f+W|0,O=I>>>0>(V=I+V|0)>>>0?O+1|0:O,W=(I=Ig(_,0,p,eA))+V|0,V=f+O|0,V=I>>>0>W>>>0?V+1|0:V,O=(I=Ig(D,0,hA,0))+W|0,W=f+V|0,W=I>>>0>O>>>0?W+1|0:W,V=(I=Ig(c,0,n,0))+O|0,O=f+W|0,O=I>>>0>V>>>0?O+1|0:O,I=Ig(w,0,fA,0),W=f+O|0,W=I>>>0>(V=I+V|0)>>>0?W+1|0:W,I=Ig(s,0,S,0),O=f+W|0,Z=V=I+V|0,I=I>>>0>V>>>0?O+1|0:O,O=Ig(Q,0,a,0),W=f,T=(V=O)+(O=Ig(E,0,DA,0))|0,V=f+W|0,V=O>>>0>T>>>0?V+1|0:V,O=Ig(i,0,t,0),W=f+V|0,W=O>>>0>(T=O+T|0)>>>0?W+1|0:W,V=Ig(r,0,N,0),O=f+W|0,O=V>>>0>(T=V+T|0)>>>0?O+1|0:O,V=Ig(_,0,y,0),W=f+O|0,W=V>>>0>(T=V+T|0)>>>0?W+1|0:W,V=Ig(e,G,h,0),O=f+W|0,O=V>>>0>(T=V+T|0)>>>0?O+1|0:O,W=Ig(c,0,p,eA),V=f+O|0,V=W>>>0>(T=W+T|0)>>>0?V+1|0:V,O=Ig(s,0,hA,0),W=f+V|0,W=O>>>0>(T=O+T|0)>>>0?W+1|0:W,V=Ig(D,0,n,0),O=f+W|0,O=V>>>0>(T=V+T|0)>>>0?O+1|0:O,V=Ig(k,0,fA,0),W=f+O|0,W=V>>>0>(T=V+T|0)>>>0?W+1|0:W,V=Ig(w,0,S,0),O=f+W|0,yA=O=V>>>0>(bA=V+T|0)>>>0?O+1|0:O,q=O=O-((bA>>>0<4293918720)-1|0)|0,W=I+(W=O>>>21|0)|0,EA=W=(O=(2097151&O)<<11|(oA=bA- -1048576|0)>>>21)>>>0>(HA=O+Z|0)>>>0?W+1|0:W,z=I=W-((HA>>>0<4293918720)-1|0)|0,O=(W=I>>>21|0)+$|0,iA=O=(I=(2097151&I)<<11|(_A=HA- -1048576|0)>>>21)>>>0>(YA=I+IA|0)>>>0?O+1|0:O,j=I=O-((YA>>>0<4293918720)-1|0)|0,W=(W=I>>21)+gA|0,CA=W=(I=(2097151&I)<<11|(BA=YA- -1048576|0)>>>21)>>>0>(sA=I+aA|0)>>>0?W+1|0:W,LA=I=W-((sA>>>0<4293918720)-1|0)|0,O=(W=I>>21)+cA|0,R=O=(I=(V=(2097151&I)<<11|(Z=sA- -1048576|0)>>>21)+wA|0)>>>0>>0?O+1|0:O,wA=I,I=Ig(I,O,-683901,-1),V=f+g|0,PA=O=I+uA|0,T=I>>>0>O>>>0?V+1|0:V,qA=kA-(I=-2097152&QA)|0,mA=tA-((I>>>0>kA>>>0)+mA|0)|0,I=Ig(H,Y,666643,0),O=f+(rA-(((g=-2097152&nA)>>>0>UA>>>0)+vA|0)|0)|0,O=I>>>0>(W=I+(UA-g|0)|0)>>>0?O+1|0:O,g=(I=Ig(m,d,470296,0))+W|0,W=f+O|0,nA=g,g=I>>>0>g>>>0?W+1|0:W,AA=MA-(I=-2097152&GA)|0,IA=KA-((I>>>0>MA>>>0)+xA|0)|0,I=Ig(B,0,c,0),O=f,W=I,I=Ig(E,0,D,0),V=f+O|0,V=I>>>0>(W=W+I|0)>>>0?V+1|0:V,I=Ig(a,0,w,0),O=f+V|0,O=I>>>0>(W=I+W|0)>>>0?O+1|0:O,V=(I=Ig(t,0,k,0))+W|0,W=f+O|0,W=I>>>0>V>>>0?W+1|0:W,I=Ig(r,0,s,0),O=f+W|0,O=I>>>0>(V=I+V|0)>>>0?O+1|0:O,I=Ig(h,0,F,0),W=f+O|0,$=V=I+V|0,I=I>>>0>V>>>0?W+1|0:W,O=Ig(B,0,D,0),W=f,gA=(V=O)+(O=Ig(E,0,s,0))|0,V=f+W|0,V=O>>>0>gA>>>0?V+1|0:V,W=Ig(a,0,k,0),O=f+V|0,O=W>>>0>(gA=W+gA|0)>>>0?O+1|0:O,V=Ig(t,0,F,0),W=f+O|0,W=V>>>0>(gA=V+gA|0)>>>0?W+1|0:W,V=Ig(r,0,w,0),O=f+W|0,tA=O=V>>>0>(kA=V+gA|0)>>>0?O+1|0:O,X=O=O-((kA>>>0<4293918720)-1|0)|0,V=I+(W=O>>>21|0)|0,cA=V=(O=(2097151&O)<<11|(QA=kA- -1048576|0)>>>21)>>>0>(KA=O+$|0)>>>0?V+1|0:V,xA=I=V-((KA>>>0<4293918720)-1|0)|0,O=(W=I>>>21|0)+IA|0,O=(I=(2097151&I)<<11|(aA=KA- -1048576|0)>>>21)>>>0>(V=I+AA|0)>>>0?O+1|0:O,I=Ig(m,d,666643,0),W=f+O|0,gA=W=I>>>0>(GA=I+V|0)>>>0?W+1|0:W,vA=I=W-((GA>>>0<4293918720)-1|0)|0,O=g+(O=I>>21)|0,IA=O=(I=(2097151&I)<<11|(AA=GA- -1048576|0)>>>21)>>>0>(rA=I+nA|0)>>>0?O+1|0:O,uA=I=O-((rA>>>0<4293918720)-1|0)|0,W=(O=I>>21)+mA|0,W=(I=(2097151&I)<<11|($=rA- -1048576|0)>>>21)>>>0>(g=I+qA|0)>>>0?W+1|0:W,I=Ig(lA,v,-997805,-1),V=f+W|0,V=I>>>0>(O=I+g|0)>>>0?V+1|0:V,UA=I=sA-(g=-2097152&Z)|0,L=W=CA-((g>>>0>sA>>>0)+LA|0)|0,Z=(g=Ig(wA,R,136657,0))+O|0,O=f+V|0,I=Ig(I,W,-683901,-1),O=f+(g>>>0>Z>>>0?O+1|0:O)|0,Z=O=I>>>0>(CA=I+Z|0)>>>0?O+1|0:O,MA=I=O-((CA>>>0<4293918720)-1|0)|0,O=(W=I>>21)+T|0,g=O=(T=nA=(I=(2097151&I)<<11|(V=CA- -1048576|0)>>>21)+PA|0)>>>0>>0?O+1|0:O,sA=O=O-((T>>>0<4293918720)-1|0)|0,nA=(2097151&O)<<11|(I=T- -1048576|0)>>>21,O=(O>>21)+RA|0,RA=mA=nA+P|0,nA=nA>>>0>mA>>>0?O+1|0:O,LA=T-(I&=-2097152)|0,PA=g-((I>>>0>T>>>0)+sA|0)|0,qA=CA-(I=-2097152&V)|0,mA=Z-((I>>>0>CA>>>0)+MA|0)|0,I=Ig(lA,v,654183,0),W=f+(IA-(((g=-2097152&$)>>>0>rA>>>0)+uA|0)|0)|0,W=I>>>0>(O=I+(rA-g|0)|0)>>>0?W+1|0:W,g=(I=Ig(wA,R,-997805,-1))+O|0,O=f+W|0,O=I>>>0>g>>>0?O+1|0:O,I=Ig(UA,L,136657,0),O=f+O|0,uA=g=I+g|0,I=I>>>0>g>>>0?O+1|0:O,MA=YA-(g=-2097152&BA)|0,rA=iA-((g>>>0>YA>>>0)+j|0)|0,g=Ig(u,l,-997805,-1),O=f,V=(W=g)+(g=Ig(M,x,654183,0))|0,W=f+O|0,W=g>>>0>V>>>0?W+1|0:W,g=Ig(U,K,136657,0),O=f+W|0,O=g>>>0>(V=g+V|0)>>>0?O+1|0:O,g=Ig(J,b,-683901,-1),O=f+O|0,W=EA+(g>>>0>(V=g+V|0)>>>0?O+1|0:O)|0,BA=(O=V+HA|0)-(g=-2097152&_A)|0,_A=(W=O>>>0>>0?W+1|0:W)-((g>>>0>O>>>0)+z|0)|0,g=Ig(u,l,654183,0),O=f,V=(W=g)+(g=Ig(M,x,470296,0))|0,W=f+O|0,W=g>>>0>V>>>0?W+1|0:W,g=Ig(U,K,-997805,-1),O=f+W|0,W=yA+(g>>>0>(V=g+V|0)>>>0?O+1|0:O)|0,W=(g=V+bA|0)>>>0>>0?W+1|0:W,V=(O=g)+(g=Ig(J,b,136657,0))|0,O=f+W|0,O=g>>>0>V>>>0?O+1|0:O,W=(g=Ig(H,Y,-683901,-1))+V|0,V=f+O|0,V=g>>>0>W>>>0?V+1|0:V,$=W-(g=-2097152&oA)|0,Z=V-((g>>>0>W>>>0)+q|0)|0,g=Ig(B,0,DA,0),O=f,W=g,g=Ig(E,0,N,0),O=f+O|0,O=g>>>0>(W=W+g|0)>>>0?O+1|0:O,g=Ig(i,0,a,0),O=f+O|0,O=g>>>0>(W=g+W|0)>>>0?O+1|0:O,g=Ig(e,G,t,0),V=f+O|0,V=g>>>0>(W=g+W|0)>>>0?V+1|0:V,O=(g=Ig(Q,0,r,0))+W|0,W=f+V|0,W=g>>>0>O>>>0?W+1|0:W,g=Ig(y,0,c,0),W=f+W|0,W=g>>>0>(O=g+O|0)>>>0?W+1|0:W,V=(g=Ig(_,0,h,0))+O|0,O=f+W|0,O=g>>>0>V>>>0?O+1|0:O,g=Ig(D,0,p,eA),O=f+O|0,O=g>>>0>(W=g+V|0)>>>0?O+1|0:O,g=Ig(w,0,hA,0),V=f+O|0,V=g>>>0>(W=g+W|0)>>>0?V+1|0:V,O=(g=Ig(s,0,n,0))+W|0,W=f+V|0,W=g>>>0>O>>>0?W+1|0:W,g=Ig(F,0,fA,0),W=f+W|0,W=g>>>0>(O=g+O|0)>>>0?W+1|0:W,V=(g=Ig(S,0,k,0))+O|0,O=f+W|0,O=(FA>>>21|0)+(O=g>>>0>V>>>0?O+1|0:O)|0,CA=O=(g=(2097151&FA)<<11|dA>>>21)>>>0>(EA=g+V|0)>>>0?O+1|0:O,bA=g=O-((EA>>>0<4293918720)-1|0)|0,W=(W=g>>>21|0)+Z|0,IA=W=(g=(2097151&g)<<11|(T=EA- -1048576|0)>>>21)>>>0>(iA=g+$|0)>>>0?W+1|0:W,sA=g=W-((iA>>>0<4293918720)-1|0)|0,O=(W=g>>21)+_A|0,Z=O=(g=(2097151&g)<<11|($=iA- -1048576|0)>>>21)>>>0>(BA=g+BA|0)>>>0?O+1|0:O,oA=O=O-((BA>>>0<4293918720)-1|0)|0,W=(W=O>>21)+rA|0,rA=W=(O=(V=(2097151&O)<<11|(g=BA- -1048576|0)>>>21)+MA|0)>>>0>>0?W+1|0:W,dA=O,W=Ig(O,W,-683901,-1),O=f+I|0,_A=V=W+uA|0,I=W>>>0>V>>>0?O+1|0:O,O=Ig(lA,v,470296,0),V=f+(gA-(((W=-2097152&AA)>>>0>GA>>>0)+vA|0)|0)|0,V=O>>>0>(AA=O+(GA-W|0)|0)>>>0?V+1|0:V,O=Ig(wA,R,654183,0),W=f+V|0,W=O>>>0>(AA=O+AA|0)>>>0?W+1|0:W,V=Ig(UA,L,-997805,-1),O=f+W|0,O=V>>>0>(AA=V+AA|0)>>>0?O+1|0:O,FA=g=BA-(W=-2097152&g)|0,eA=Z=Z-((W>>>0>BA>>>0)+oA|0)|0,AA=(V=Ig(dA,rA,136657,0))+AA|0,W=f+O|0,g=Ig(g,Z,-683901,-1),V=f+(V>>>0>AA>>>0?W+1|0:W)|0,Z=V=g>>>0>(gA=g+AA|0)>>>0?V+1|0:V,yA=W=V-((gA>>>0<4293918720)-1|0)|0,V=(2097151&W)<<11|(g=gA- -1048576|0)>>>21,W=(W>>21)+I|0,oA=V=(W=V>>>0>(AA=V+_A|0)>>>0?W+1|0:W)-((AA>>>0<4293918720)-1|0)|0,BA=(2097151&V)<<11|(I=AA- -1048576|0)>>>21,V=(V>>21)+mA|0,hA=_A=BA+qA|0,_A=BA>>>0>_A>>>0?V+1|0:V,DA=AA-(I&=-2097152)|0,fA=W-((I>>>0>AA>>>0)+oA|0)|0,HA=gA-(I=-2097152&g)|0,YA=Z-((I>>>0>gA>>>0)+yA|0)|0,I=Ig(lA,v,666643,0),W=f+(cA-(((g=-2097152&aA)>>>0>KA>>>0)+xA|0)|0)|0,W=I>>>0>(O=I+(KA-g|0)|0)>>>0?W+1|0:W,I=Ig(wA,R,470296,0),V=f+W|0,V=I>>>0>(g=I+O|0)>>>0?V+1|0:V,I=Ig(UA,L,654183,0),W=f+V|0,AA=g=I+g|0,I=I>>>0>g>>>0?W+1|0:W,$=iA-(g=-2097152&$)|0,Z=IA-((g>>>0>iA>>>0)+sA|0)|0,g=Ig(u,l,470296,0),O=f,W=g,g=Ig(M,x,666643,0),O=f+O|0,O=g>>>0>(W=W+g|0)>>>0?O+1|0:O,g=Ig(U,K,654183,0),V=f+O|0,V=g>>>0>(W=g+W|0)>>>0?V+1|0:V,O=(g=Ig(J,b,-997805,-1))+W|0,W=f+V|0,W=g>>>0>O>>>0?W+1|0:W,g=Ig(H,Y,136657,0),W=f+W|0,O=CA+(g>>>0>(V=g+O|0)>>>0?W+1|0:W)|0,O=(g=V+EA|0)>>>0>>0?O+1|0:O,W=g,g=Ig(m,d,-683901,-1),O=f+O|0,O=g>>>0>(V=W+g|0)>>>0?O+1|0:O,oA=(g=(2097151&JA)<<11|NA>>>21)+(V-(W=-2097152&T)|0)|0,W=(O-((W>>>0>V>>>0)+bA|0)|0)+(JA>>21)|0,iA=W=g>>>0>oA>>>0?W+1|0:W,sA=g=W-((oA>>>0<4293918720)-1|0)|0,W=(O=g>>21)+Z|0,JA=W=(g=(V=(2097151&g)<<11|(BA=oA- -1048576|0)>>>21)+$|0)>>>0>>0?W+1|0:W,yA=g,g=Ig(g,W,-683901,-1),V=f+I|0,V=g>>>0>(O=g+AA|0)>>>0?V+1|0:V,I=Ig(dA,rA,-997805,-1),W=f+V|0,W=I>>>0>(g=I+O|0)>>>0?W+1|0:W,I=Ig(FA,eA,136657,0),O=f+W|0,NA=g=I+g|0,$=I>>>0>g>>>0?O+1|0:O,T=kA-(I=-2097152&QA)|0,IA=tA-((I>>>0>kA>>>0)+X|0)|0,I=Ig(B,0,s,0),g=f,O=I,I=Ig(E,0,w,0),W=f+g|0,W=I>>>0>(O=O+I|0)>>>0?W+1|0:W,I=Ig(a,0,F,0),W=f+W|0,W=I>>>0>(g=I+O|0)>>>0?W+1|0:W,I=Ig(r,0,k,0),O=f+W|0,I=I>>>0>(W=g=I+g|0)>>>0?O+1|0:O,g=Ig(B,0,w,0),O=f,Z=(V=g)+(g=Ig(E,0,k,0))|0,V=f+O|0,V=g>>>0>Z>>>0?V+1|0:V,g=Ig(r,0,F,0),O=f+V|0,g=O=g>>>0>(Z=g+Z|0)>>>0?O+1|0:O,lA=O=O-((Z>>>0<4293918720)-1|0)|0,V=O>>>21|0,EA=(O=(2097151&O)<<11|(cA=Z- -1048576|0)>>>21)+W|0,W=I+V|0,aA=W=O>>>0>EA>>>0?W+1|0:W,KA=I=W-((EA>>>0<4293918720)-1|0)|0,O=(V=I>>>21|0)+IA|0,O=(I=(2097151&I)<<11|(gA=EA- -1048576|0)>>>21)>>>0>(W=I+T|0)>>>0?O+1|0:O,V=(I=Ig(wA,R,666643,0))+W|0,W=f+O|0,W=I>>>0>V>>>0?W+1|0:W,I=Ig(UA,L,470296,0),W=f+W|0,W=I>>>0>(O=I+V|0)>>>0?W+1|0:W,V=(I=Ig(yA,JA,136657,0))+O|0,O=f+W|0,O=I>>>0>V>>>0?O+1|0:O,W=(I=Ig(dA,rA,654183,0))+V|0,V=f+O|0,V=I>>>0>W>>>0?V+1|0:V,I=Ig(FA,eA,-997805,-1),O=f+V|0,CA=O=I>>>0>(AA=I+W|0)>>>0?O+1|0:O,GA=I=O-((AA>>>0<4293918720)-1|0)|0,W=(V=I>>21)+$|0,NA=O=(W=(I=(O=(2097151&I)<<11|(T=AA- -1048576|0)>>>21)+NA|0)>>>0>>0?W+1|0:W)-((I>>>0<4293918720)-1|0)|0,$=(2097151&O)<<11|(IA=I- -1048576|0)>>>21,O=(O>>21)+YA|0,MA=QA=$+HA|0,tA=$>>>0>QA>>>0?O+1|0:O,$=I,V=W,W=(iA-(((O=-2097152&BA)>>>0>oA>>>0)+sA|0)|0)+(SA>>21)|0,QA=W=(I=(oA-O|0)+(BA=(2097151&SA)<<11|pA>>>21)|0)>>>0>>0?W+1|0:W,bA=W=W-((I>>>0<4293918720)-1|0)|0,oA=O=W>>21,W=Ig(wA=(2097151&W)<<11|(iA=I- -1048576|0)>>>21,O,-683901,-1),O=f+V|0,O=W>>>0>($=W+$|0)>>>0?O+1|0:O,HA=$-(W=-2097152&IA)|0,YA=O-((W>>>0>$>>>0)+NA|0)|0,O=Ig(wA,oA,136657,0),W=f+CA|0,W=O>>>0>(V=O+AA|0)>>>0?W+1|0:W,sA=V-(O=-2097152&T)|0,NA=W-((O>>>0>V>>>0)+GA|0)|0,V=(O=Ig(UA,L,666643,0))+(EA-(W=-2097152&gA)|0)|0,W=f+(aA-((W>>>0>EA>>>0)+KA|0)|0)|0,W=O>>>0>V>>>0?W+1|0:W,$=(O=Ig(yA,JA,-997805,-1))+V|0,V=f+W|0,V=O>>>0>$>>>0?V+1|0:V,W=Ig(dA,rA,470296,0),O=f+V|0,O=W>>>0>($=W+$|0)>>>0?O+1|0:O,V=Ig(FA,eA,654183,0),W=f+O|0,SA=$=V+$|0,CA=V>>>0>$>>>0?W+1|0:W,$=Z,Z=g,g=Ig(E,0,F,0),O=f,W=g,g=Ig(B,0,k,0),O=f+O|0,O=g>>>0>(V=W+g|0)>>>0?O+1|0:O,g=Ig(B,0,F,0),kA=W=f,EA=g,aA=g- -1048576|0,KA=g=W-((g>>>0<4293918720)-1|0)|0,W=g>>>21|0,BA=(g=(2097151&g)<<11|aA>>>21)+V|0,V=W+O|0,gA=V=g>>>0>BA>>>0?V+1|0:V,GA=g=V-((BA>>>0<4293918720)-1|0)|0,O=(W=g>>>21|0)+Z|0,O=(g=(2097151&g)<<11|(AA=BA- -1048576|0)>>>21)>>>0>(V=g+$|0)>>>0?O+1|0:O,Z=(g=Ig(yA,JA,654183,0))+(V-(W=-2097152&cA)|0)|0,V=f+(O-((8191&lA)+(W>>>0>V>>>0)|0)|0)|0,V=g>>>0>Z>>>0?V+1|0:V,g=Ig(dA,rA,666643,0),W=f+V|0,W=g>>>0>(O=g+Z|0)>>>0?W+1|0:W,T=(g=Ig(FA,eA,470296,0))+O|0,O=f+W|0,IA=O=g>>>0>T>>>0?O+1|0:O,pA=g=O-((T>>>0<4293918720)-1|0)|0,W=(W=g>>21)+CA|0,V=W=(g=(2097151&g)<<11|($=T- -1048576|0)>>>21)>>>0>(Z=g+SA|0)>>>0?W+1|0:W,cA=O=W-((Z>>>0<4293918720)-1|0)|0,CA=(2097151&O)<<11|(g=Z- -1048576|0)>>>21,O=(O>>21)+NA|0,CA=CA>>>0>(rA=SA=CA+sA|0)>>>0?O+1|0:O,W=Ig(wA,oA,-997805,-1),O=f+V|0,dA=(Z=W+Z|0)-(g&=-2097152)|0,NA=(W>>>0>Z>>>0?O+1|0:O)-((g>>>0>Z>>>0)+cA|0)|0,g=Ig(wA,oA,654183,0),V=f+IA|0,V=g>>>0>(O=g+T|0)>>>0?V+1|0:V,SA=O-(g=-2097152&$)|0,pA=V-((g>>>0>O>>>0)+pA|0)|0,g=Ig(yA,JA,470296,0),W=f+(gA-((8191&GA)+((O=-2097152&AA)>>>0>BA>>>0)|0)|0)|0,W=g>>>0>(V=g+(BA-O|0)|0)>>>0?W+1|0:W,g=Ig(FA,eA,666643,0),W=f+W|0,W=g>>>0>(O=g+V|0)>>>0?W+1|0:W,Z=O,g=Ig(yA,JA,666643,0),V=f+(kA-((2047&KA)+((O=-2097152&aA)>>>0>EA>>>0)|0)|0)|0,T=V=g>>>0>(AA=g+(EA-O|0)|0)>>>0?V+1|0:V,cA=g=V-((AA>>>0<4293918720)-1|0)|0,W=W+(O=g>>21)|0,aA=g=(W=(g=(2097151&g)<<11|(IA=AA- -1048576|0)>>>21)>>>0>($=g+Z|0)>>>0?W+1|0:W)-(($>>>0<4293918720)-1|0)|0,V=(O=g>>21)+pA|0,g=(g=(2097151&g)<<11|(Z=$- -1048576|0)>>>21)>>>0>(gA=g+SA|0)>>>0?V+1|0:V,O=Ig(wA,oA,470296,0),W=f+W|0,W=O>>>0>(V=O+$|0)>>>0?W+1|0:W,Z=V-(O=-2097152&Z)|0,$=W-((O>>>0>V>>>0)+aA|0)|0,O=Ig(wA,oA,666643,0),V=f+(T-(((W=-2097152&IA)>>>0>AA>>>0)+cA|0)|0)|0,O=(W=(V=O>>>0>(BA=O+(AA-W|0)|0)>>>0?V+1|0:V)>>21)+$|0,W=g+(V=(O=(V=(2097151&V)<<11|BA>>>21)>>>0>(Z=V+Z|0)>>>0?O+1|0:O)>>21)|0,O=(O=(W=(g=$=(O=(2097151&O)<<11|Z>>>21)+gA|0)>>>0>>0?W+1|0:W)>>21)+NA|0,W=(W=(O=(W=(2097151&W)<<11|g>>>21)>>>0>(cA=W+dA|0)>>>0?O+1|0:O)>>21)+CA|0,V=(O=(W=(O=(2097151&O)<<11|cA>>>21)>>>0>(aA=O+rA|0)>>>0?W+1|0:W)>>21)+YA|0,O=(W=(V=(W=(2097151&W)<<11|aA>>>21)>>>0>(gA=W+HA|0)>>>0?V+1|0:V)>>21)+tA|0,W=(V=(O=(V=(2097151&V)<<11|gA>>>21)>>>0>(AA=V+MA|0)>>>0?O+1|0:O)>>21)+fA|0,O=(O=(W=(O=(2097151&O)<<11|AA>>>21)>>>0>(CA=O+DA|0)>>>0?W+1|0:W)>>21)+_A|0,W=(W=(O=(W=(2097151&W)<<11|CA>>>21)>>>0>(T=W+hA|0)>>>0?O+1|0:O)>>21)+PA|0,V=(O=(W=(O=(2097151&O)<<11|T>>>21)>>>0>(IA=O+LA|0)>>>0?W+1|0:W)>>21)+nA|0,W=(QA-((I>>>0<(O=-2097152&iA)>>>0)+bA|0)|0)+((V=(W=(2097151&W)<<11|IA>>>21)>>>0>($=W+RA|0)>>>0?V+1|0:V)>>21)|0,QA=O=(W=(iA=(tA=I-O|0)+((2097151&V)<<11|$>>>21)|0)>>>0>>0?W+1|0:W)>>21,I=(I=Ig(tA=(2097151&W)<<11|iA>>>21,O,666643,0))+(O=2097151&BA)|0,V=f,C[0|A]=I,V=I>>>0>>0?V+1|0:V,C[A+1|0]=(255&V)<<24|I>>>8,O=2097151&Z,Z=Ig(tA,QA,470296,0)+O|0,W=f,W=(V>>21)+(W=O>>>0>Z>>>0?W+1|0:W)|0,W=(Z=(BA=(2097151&V)<<11|I>>>21)+Z|0)>>>0>>0?W+1|0:W,C[A+4|0]=(2047&W)<<21|Z>>>11;C[A+3|0]=(7&W)<<29|Z>>>3,C[A+2|0]=31&((65535&V)<<16|I>>>16)|Z<<5,I=2097151&g,g=Ig(tA,QA,654183,0)+I|0,V=f,V=I>>>0>g>>>0?V+1|0:V,I=W,O=(W>>=21)+V|0,I=O=(I=(2097151&I)<<11|Z>>>21)>>>0>(g=I+g|0)>>>0?O+1|0:O,C[A+6|0]=(63&O)<<26|g>>>6,W=0,C[A+5|0]=W<<13|(1572864&Z)>>>19|g<<2,W=2097151&cA,V=Ig(tA,QA,-997805,-1)+W|0,O=f,O=W>>>0>V>>>0?O+1|0:O,W=(W=I>>21)+O|0,W=(I=(Z=V)+(V=(2097151&I)<<11|g>>>21)|0)>>>0>>0?W+1|0:W,C[A+9|0]=(511&W)<<23|I>>>9,C[A+8|0]=(1&W)<<31|I>>>1,O=0,C[A+7|0]=O<<18|(2080768&g)>>>14|I<<7,g=2097151&aA,O=Ig(tA,QA,136657,0)+g|0,V=f,V=g>>>0>O>>>0?V+1|0:V,g=(Z=(2097151&(g=W))<<11|I>>>21)+O|0,O=(W>>=21)+V|0,O=g>>>0>>0?O+1|0:O,C[A+12|0]=(4095&O)<<20|g>>>12,C[A+11|0]=(15&O)<<28|g>>>4,W=0,C[A+10|0]=W<<15|(1966080&I)>>>17|g<<4,I=2097151&gA,V=Ig(tA,QA,-683901,-1)+I|0,W=f,W=I>>>0>V>>>0?W+1|0:W,I=O,O=W+(O>>=21)|0,O=(I=(Z=V)+(V=(2097151&I)<<11|g>>>21)|0)>>>0>>0?O+1|0:O,C[A+14|0]=(127&O)<<25|I>>>7,W=0,C[A+13|0]=W<<12|(1048576&g)>>>20|I<<1,W=O>>21,W=(g=(O=(2097151&O)<<11|I>>>21)+(2097151&AA)|0)>>>0>>0?W+1|0:W,C[A+17|0]=(1023&W)<<22|g>>>10,C[A+16|0]=(3&W)<<30|g>>>2,O=0,C[A+15|0]=O<<17|(2064384&I)>>>15|g<<6,I=W,W>>=21,V=(I=(O=(2097151&I)<<11|g>>>21)+(2097151&CA)|0)>>>0>>0?W+1|0:W,C[A+20|0]=(8191&V)<<19|I>>>13,C[A+19|0]=(31&V)<<27|I>>>5,O=V>>21,O=(W=(Z=(2097151&V)<<11|I>>>21)+(2097151&T)|0)>>>0>>0?O+1|0:O,Z=W,C[A+21|0]=W,W=0,C[A+18|0]=W<<14|(1835008&g)>>>18|I<<3,C[A+22|0]=(255&O)<<24|Z>>>8,W=O>>21,W=(I=(g=(2097151&O)<<11|Z>>>21)+(2097151&IA)|0)>>>0>>0?W+1|0:W,C[A+25|0]=(2047&W)<<21|I>>>11,C[A+24|0]=(7&W)<<29|I>>>3,C[A+23|0]=31&((65535&O)<<16|Z>>>16)|I<<5,O=(2097151&W)<<11|I>>>21,W>>=21,W=(g=O+(2097151&$)|0)>>>0>>0?W+1|0:W,C[A+27|0]=(63&W)<<26|g>>>6,O=0,C[A+26|0]=O<<13|(1572864&I)>>>19|g<<2,I=W,O=W>>=21,O=(I=(Z=(2097151&I)<<11|g>>>21)+(V=2097151&iA)|0)>>>0>>0?O+1|0:O,C[A+31|0]=(131071&O)<<15|I>>>17,C[A+30|0]=(511&O)<<23|I>>>9,W=0,C[A+28|0]=W<<18|(2080768&g)>>>14|I<<7,C[A+29|0]=Z+iA>>>1}function k(A,I,g,C){for(var B=0,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0;E=(B=_<<3)+g|0,Q=o[0|(B=I+B|0)]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,G=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,c=Q<<24|(65280&Q)<<8,t=(a=16711680&Q)<<24,a=a>>>8|0,B=(e=-16777216&Q)>>>24|0,i[E>>2]=t|e<<8|-16777216&((255&G)<<24|Q>>>8)|16711680&((16777215&G)<<8|Q>>>24)|G>>>8&65280|G>>>24,Q=B|a|c,B=0,i[E+4>>2]=Q|B,16!=(0|(_=_+1|0)););for(I=i[A+4>>2],i[C>>2]=i[A>>2],i[C+4>>2]=I,I=i[A+60>>2],i[C+56>>2]=i[A+56>>2],i[C+60>>2]=I,I=i[A+52>>2],i[C+48>>2]=i[A+48>>2],i[C+52>>2]=I,I=i[A+44>>2],i[C+40>>2]=i[A+40>>2],i[C+44>>2]=I,I=i[A+36>>2],i[C+32>>2]=i[A+32>>2],i[C+36>>2]=I,I=i[A+28>>2],i[C+24>>2]=i[A+24>>2],i[C+28>>2]=I,I=i[A+20>>2],i[C+16>>2]=i[A+16>>2],i[C+20>>2]=I,I=i[A+12>>2],i[C+8>>2]=i[A+8>>2],i[C+12>>2]=I;E=i[C+56>>2],a=i[C+60>>2],B=i[(I=G=(M=P<<3)+g|0)>>2],I=i[I+4>>2],k=Q=i[C+36>>2],Q=UI(p=i[C+32>>2],Q,50),_=f,Q=UI(p,k,46)^Q,_^=f,Q=UI(p,k,23)^Q,I=(f^_)+I|0,I=(B=Q+B|0)>>>0>>0?I+1|0:I,B=(_=i[(Q=M+34416|0)>>2])+B|0,I=i[Q+4>>2]+I|0,I=B>>>0<_>>>0?I+1|0:I,Q=(_=((t=i[C+48>>2])^(y=i[C+40>>2]))&p^t)+B|0,B=(((w=i[C+52>>2])^(F=i[C+44>>2]))&k^w)+I|0,I=(Q>>>0<_>>>0?B+1|0:B)+a|0,I=(E=Q+E|0)>>>0>>0?I+1|0:I,_=(Q=i[C+24>>2])+E|0,B=i[C+28>>2]+I|0,s=B=Q>>>0>_>>>0?B+1|0:B,i[C+24>>2]=_,i[C+28>>2]=B,n=B=i[C+4>>2],B=UI(Q=i[C>>2],B,36),a=f,B=UI(Q,n,30)^B,a^=f,e=E+(UI(Q,n,25)^B)|0,B=I+(f^a)|0,B=E>>>0>e>>>0?B+1|0:B,c=(I=e)+(e=Q&((a=i[C+16>>2])|(E=i[C+8>>2]))|E&a)|0,I=(I=B)+(n&((B=i[C+20>>2])|(h=i[C+12>>2]))|B&h)|0,e=I=c>>>0>>0?I+1|0:I,i[C+56>>2]=c,i[C+60>>2]=I,r=a,D=B,N=i[(I=l=(S=8|M)+g|0)>>2],U=i[I+4>>2],B=((k^F)&s^F)+w|0,B=(I=(a=(y^p)&_^y)+t|0)>>>0>>0?B+1|0:B,a=UI(_,s,50),t=f,a=UI(_,s,46)^a,t^=f,a=(w=UI(_,s,23)^a)+I|0,I=(f^t)+B|0,I=(a>>>0>>0?I+1|0:I)+U|0,I=(B=a+N|0)>>>0>>0?I+1|0:I,a=(a=B)+(t=i[(B=S+34416|0)>>2])|0,B=i[B+4>>2]+I|0,B=(I=a>>>0>>0?B+1|0:B)+D|0,w=B=(t=a+r|0)>>>0>>0?B+1|0:B,i[C+16>>2]=t,i[C+20>>2]=B,I=I+((h|n)&e|h&n)|0,I=(B=a+((Q|E)&c|Q&E)|0)>>>0>>0?I+1|0:I,a=UI(c,e,36),r=f,a=UI(c,e,30)^a,r^=f,D=B,B=UI(c,e,25)^a,I=(f^r)+I|0,r=I=B>>>0>(a=D+B|0)>>>0?I+1|0:I,i[C+48>>2]=a,i[C+52>>2]=I,D=E,S=h,I=(h=i[(B=Y=(E=16|M)+g|0)>>2])+y|0,B=i[B+4>>2]+F|0,B=I>>>0>>0?B+1|0:B,E=(y=I)+(h=i[(I=E+34416|0)>>2])|0,I=i[I+4>>2]+B|0,I=((s^k)&w^k)+(I=E>>>0>>0?I+1|0:I)|0,I=(B=(B=E)+(E=(_^p)&t^p)|0)>>>0>>0?I+1|0:I,E=UI(t,w,50),h=f,E=UI(t,w,46)^E,h^=f,E=(y=UI(t,w,23)^E)+B|0,B=(f^h)+I|0,B=(y=E>>>0>>0?B+1|0:B)+S|0,S=B=(h=E)>>>0>(E=E+D|0)>>>0?B+1|0:B,i[C+8>>2]=E,i[C+12>>2]=B,I=UI(a,r,36),B=f,I=UI(a,r,30)^I,B^=f,F=UI(a,r,25)^I,I=((e|n)&r|e&n)+(f^B)|0,B=y+((D=F+((Q|c)&a|Q&c)|0)>>>0>>0?I+1|0:I)|0,h=B=(y=h+D|0)>>>0>>0?B+1|0:B,i[C+40>>2]=y,i[C+44>>2]=B,D=Q,B=(B=p)+(p=i[(I=u=(Q=24|M)+g|0)>>2])|0,I=i[I+4>>2]+k|0,I=B>>>0

>>0?I+1|0:I,Q=(F=B)+(p=i[(B=Q+34416|0)>>2])|0,B=i[B+4>>2]+I|0,B=(s^(s^w)&S)+(B=Q>>>0

>>0?B+1|0:B)|0,B=(I=(I=Q)+(Q=_^(_^t)&E)|0)>>>0>>0?B+1|0:B,Q=UI(E,S,50),p=f,Q=UI(E,S,46)^Q,p^=f,Q=(k=UI(E,S,23)^Q)+I|0,I=(f^p)+B|0,B=(I=Q>>>0>>0?I+1|0:I)+n|0,k=B=(n=Q+D|0)>>>0>>0?B+1|0:B,i[C>>2]=n,i[C+4>>2]=B,B=UI(y,h,36),p=f,B=UI(y,h,30)^B,D=f^p,F=UI(y,h,25)^B,B=((e|r)&h|e&r)+(f^D)|0,I=I+((p=F+((a|c)&y|a&c)|0)>>>0>>0?B+1|0:B)|0,p=I=(D=Q+p|0)>>>0>>0?I+1|0:I,i[C+32>>2]=D,i[C+36>>2]=I,Q=i[(B=m=(I=32|M)+g|0)>>2],B=s+i[B+4>>2]|0,B=(Q=Q+_|0)>>>0<_>>>0?B+1|0:B,Q=(_=i[(I=I+34416|0)>>2])+Q|0,I=i[I+4>>2]+B|0,I=(w^(w^S)&k)+(I=Q>>>0<_>>>0?I+1|0:I)|0,I=(B=(B=Q)+(Q=t^(E^t)&n)|0)>>>0>>0?I+1|0:I,Q=UI(n,k,50),_=f,Q=UI(n,k,46)^Q,_^=f,Q=(s=UI(n,k,23)^Q)+B|0,B=(f^_)+I|0,F=B=Q>>>0>>0?B+1|0:B,I=B,B=UI(D,p,36),_=f,B=UI(D,p,30)^B,s=f^_,N=UI(D,p,25)^B,B=((r|h)&p|r&h)+(f^s)|0,I=((_=N+((a|y)&D|a&y)|0)>>>0>>0?B+1|0:B)+I|0,_=I=(s=Q+_|0)>>>0<_>>>0?I+1|0:I,i[C+24>>2]=s,i[C+28>>2]=I,B=e+F|0,F=B=(e=Q+c|0)>>>0>>0?B+1|0:B,i[C+56>>2]=e,i[C+60>>2]=B,Q=i[(I=J=(B=40|M)+g|0)>>2],I=w+i[I+4>>2]|0,I=(Q=Q+t|0)>>>0>>0?I+1|0:I,Q=(c=i[(B=B+34416|0)>>2])+Q|0,B=i[B+4>>2]+I|0,B=(S^(k^S)&F)+(B=Q>>>0>>0?B+1|0:B)|0,B=(I=(I=Q)+(Q=E^(E^n)&e)|0)>>>0>>0?B+1|0:B,Q=UI(e,F,50),c=f,Q=UI(e,F,46)^Q,c^=f,Q=(t=UI(e,F,23)^Q)+I|0,I=(f^c)+B|0,I=Q>>>0>>0?I+1|0:I,B=UI(s,_,36),c=f,B=UI(s,_,30)^B,t=f^c,w=UI(s,_,25)^B,B=((h|p)&_|h&p)+(f^t)|0,B=((c=w+((y|D)&s|y&D)|0)>>>0>>0?B+1|0:B)+I|0,c=B=(t=Q+c|0)>>>0>>0?B+1|0:B,i[C+16>>2]=t,i[C+20>>2]=B,I=I+r|0,N=I=(r=Q+a|0)>>>0>>0?I+1|0:I,i[C+48>>2]=r,i[C+52>>2]=I,Q=i[(B=H=(I=48|M)+g|0)>>2],B=S+i[B+4>>2]|0,B=(Q=Q+E|0)>>>0>>0?B+1|0:B,Q=(E=i[(I=I+34416|0)>>2])+Q|0,I=i[I+4>>2]+B|0,I=(k^(k^F)&N)+(I=Q>>>0>>0?I+1|0:I)|0,I=(B=(B=Q)+(Q=n^(e^n)&r)|0)>>>0>>0?I+1|0:I,Q=UI(r,N,50),E=f,Q=UI(r,N,46)^Q,E^=f,Q=(a=UI(r,N,23)^Q)+B|0,B=(f^E)+I|0,a=B=Q>>>0>>0?B+1|0:B,I=B,B=UI(t,c,36),E=f,B=UI(t,c,30)^B,w=f^E,S=UI(t,c,25)^B,B=((_|p)&c|_&p)+(f^w)|0,I=((E=S+((s|D)&t|s&D)|0)>>>0>>0?B+1|0:B)+I|0,w=I=(B=E)>>>0>(E=Q+E|0)>>>0?I+1|0:I,i[C+8>>2]=E,i[C+12>>2]=I,B=a+h|0,S=B=(U=Q+y|0)>>>0>>0?B+1|0:B,i[C+40>>2]=U,i[C+44>>2]=B,Q=i[(I=d=(B=56|M)+g|0)>>2],I=k+i[I+4>>2]|0,I=(Q=Q+n|0)>>>0>>0?I+1|0:I,Q=(a=i[(B=B+34416|0)>>2])+Q|0,B=i[B+4>>2]+I|0,B=(F^(F^N)&S)+(B=Q>>>0>>0?B+1|0:B)|0,B=(I=(I=Q)+(Q=e^(e^r)&U)|0)>>>0>>0?B+1|0:B,Q=UI(U,S,50),a=f,Q=UI(U,S,46)^Q,a^=f,Q=(h=UI(U,S,23)^Q)+I|0,I=(f^a)+B|0,I=Q>>>0>>0?I+1|0:I,B=UI(E,w,36),a=f,B=UI(E,w,30)^B,h=f^a,y=UI(E,w,25)^B,B=((_|c)&w|_&c)+(f^h)|0,B=((a=y+((t|s)&E|t&s)|0)>>>0>>0?B+1|0:B)+I|0,h=B=(h=a)>>>0>(a=Q+a|0)>>>0?B+1|0:B,i[C>>2]=a,i[C+4>>2]=B,I=I+p|0,k=I=(y=Q+D|0)>>>0>>0?I+1|0:I,i[C+32>>2]=y,i[C+36>>2]=I,Q=i[(B=x=(I=64|M)+g|0)>>2],B=F+i[B+4>>2]|0,B=(Q=Q+e|0)>>>0>>0?B+1|0:B,Q=(e=i[(I=I+34416|0)>>2])+Q|0,I=i[I+4>>2]+B|0,I=(N^(S^N)&k)+(I=Q>>>0>>0?I+1|0:I)|0,I=(B=(B=Q)+(Q=r^(r^U)&y)|0)>>>0>>0?I+1|0:I,Q=UI(y,k,50),e=f,Q=UI(y,k,46)^Q,e^=f,Q=(n=UI(y,k,23)^Q)+B|0,B=(f^e)+I|0,p=B=Q>>>0>>0?B+1|0:B,I=B,B=UI(a,h,36),e=f,B=UI(a,h,30)^B,n=f^e,D=UI(a,h,25)^B,B=((c|w)&h|c&w)+(f^n)|0,I=((e=D+((E|t)&a|E&t)|0)>>>0>>0?B+1|0:B)+I|0,e=I=(n=Q+e|0)>>>0>>0?I+1|0:I,i[C+56>>2]=n,i[C+60>>2]=I,B=_+p|0,F=B=(_=Q+s|0)>>>0>>0?B+1|0:B,i[C+24>>2]=_,i[C+28>>2]=B,Q=i[(I=b=(B=72|M)+g|0)>>2],I=N+i[I+4>>2]|0,I=(Q=Q+r|0)>>>0>>0?I+1|0:I,Q=(r=i[(B=B+34416|0)>>2])+Q|0,B=i[B+4>>2]+I|0,B=(S^(k^S)&F)+(B=Q>>>0>>0?B+1|0:B)|0,B=(I=(I=Q)+(Q=U^(y^U)&_)|0)>>>0>>0?B+1|0:B,Q=UI(_,F,50),r=f,Q=UI(_,F,46)^Q,r^=f,Q=(p=UI(_,F,23)^Q)+I|0,I=(f^r)+B|0,I=Q>>>0

>>0?I+1|0:I,B=UI(n,e,36),r=f,B=UI(n,e,30)^B,p=f^r,D=UI(n,e,25)^B,B=((h|w)&e|h&w)+(f^p)|0,B=((r=D+((E|a)&n|E&a)|0)>>>0>>0?B+1|0:B)+I|0,r=B=(p=Q+r|0)>>>0>>0?B+1|0:B,i[C+48>>2]=p,i[C+52>>2]=B,I=I+c|0,N=I=(c=Q+t|0)>>>0>>0?I+1|0:I,i[C+16>>2]=c,i[C+20>>2]=I,I=(I=U)+(t=i[(B=U=(Q=80|M)+g|0)>>2])|0,B=i[B+4>>2]+S|0,B=I>>>0>>0?B+1|0:B,Q=(s=I)+(t=i[(I=Q+34416|0)>>2])|0,I=i[I+4>>2]+B|0,I=(k^(k^F)&N)+(I=Q>>>0>>0?I+1|0:I)|0,I=(B=(B=Q)+(Q=y^(_^y)&c)|0)>>>0>>0?I+1|0:I,Q=UI(c,N,50),t=f,Q=UI(c,N,46)^Q,t^=f,Q=(D=UI(c,N,23)^Q)+B|0,B=(f^t)+I|0,s=B=Q>>>0>>0?B+1|0:B,I=B,B=UI(p,r,36),t=f,B=UI(p,r,30)^B,D=f^t,S=UI(p,r,25)^B,B=((e|h)&r|e&h)+(f^D)|0,I=((t=S+((a|n)&p|a&n)|0)>>>0>>0?B+1|0:B)+I|0,t=I=(D=Q+t|0)>>>0>>0?I+1|0:I,i[C+40>>2]=D,i[C+44>>2]=I,B=s+w|0,w=B=(s=Q+E|0)>>>0>>0?B+1|0:B,i[C+8>>2]=s,i[C+12>>2]=B,B=34416+(I=88|M)|0,E=i[(I=K=I+g|0)>>2],Q=i[B>>2]+E|0,I=i[B+4>>2]+i[I+4>>2]|0,B=k+(Q>>>0>>0?I+1|0:I)|0,B=(F^(F^N)&w)+(B=(I=Q+y|0)>>>0>>0?B+1|0:B)|0,B=(I=(Q=_^(_^c)&s)+I|0)>>>0>>0?B+1|0:B,Q=UI(s,w,50),E=f,Q=UI(s,w,46)^Q,E^=f,Q=(y=UI(s,w,23)^Q)+I|0,I=(f^E)+B|0,I=Q>>>0>>0?I+1|0:I,B=UI(D,t,36),E=f,B=UI(D,t,30)^B,y=f^E,S=UI(D,t,25)^B,B=((e|r)&t|e&r)+(f^y)|0,B=((E=S+((p|n)&D|p&n)|0)>>>0>>0?B+1|0:B)+I|0,y=B=(y=E)>>>0>(E=Q+E|0)>>>0?B+1|0:B,i[C+32>>2]=E,i[C+36>>2]=B,I=I+h|0,h=I=(B=a)>>>0>(a=Q+a|0)>>>0?I+1|0:I,i[C>>2]=a,i[C+4>>2]=I,B=34416+(I=96|M)|0,S=i[(I=v=I+g|0)>>2],Q=i[B>>2]+S|0,B=i[B+4>>2]+i[I+4>>2]|0,I=F+(Q>>>0>>0?B+1|0:B)|0,I=(B=Q+_|0)>>>0<_>>>0?I+1|0:I,Q=(_=c^(c^s)&a)+B|0,B=(N^(w^N)&h)+I|0,B=Q>>>0<_>>>0?B+1|0:B,I=UI(a,h,50),_=f,I=UI(a,h,46)^I,_^=f,F=Q,Q=UI(a,h,23)^I,B=(f^_)+B|0,k=B=(I=F+Q|0)>>>0>>0?B+1|0:B,Q=I,I=UI(E,y,36),_=f,I=UI(E,y,30)^I,S=f^_,F=UI(E,y,25)^I,I=((t|r)&y|t&r)+(f^S)|0,B=((_=F+((p|D)&E|p&D)|0)>>>0>>0?I+1|0:I)+B|0,_=B=(S=Q+_|0)>>>0<_>>>0?B+1|0:B,i[C+24>>2]=S,i[C+28>>2]=B,B=e+k|0,e=B=(n=Q+n|0)>>>0>>0?B+1|0:B,i[C+56>>2]=n,i[C+60>>2]=B,B=34416+(I=104|M)|0,k=i[(I=L=I+g|0)>>2],Q=i[B>>2]+k|0,I=i[B+4>>2]+i[I+4>>2]|0,B=N+(Q>>>0>>0?I+1|0:I)|0,B=(I=Q+c|0)>>>0>>0?B+1|0:B,Q=(c=s^(a^s)&n)+I|0,I=(w^(h^w)&e)+B|0,I=Q>>>0>>0?I+1|0:I,B=UI(n,e,50),c=f,B=UI(n,e,46)^B,c^=f,k=UI(n,e,23)^B,B=(f^c)+I|0,F=B=(Q=k+Q|0)>>>0>>0?B+1|0:B,I=B,B=UI(S,_,36),c=f,B=UI(S,_,30)^B,k=f^c,N=UI(S,_,25)^B,B=((t|y)&_|t&y)+(f^k)|0,I=((c=N+((E|D)&S|E&D)|0)>>>0>>0?B+1|0:B)+I|0,c=I=(k=Q+c|0)>>>0>>0?I+1|0:I,i[C+16>>2]=k,i[C+20>>2]=I,I=r+F|0,r=I=(p=Q+p|0)>>>0>>0?I+1|0:I,i[C+48>>2]=p,i[C+52>>2]=I,B=34416+(I=112|M)|0,F=i[(Q=N=I+g|0)>>2],I=i[B>>2]+F|0,B=i[B+4>>2]+i[Q+4>>2]|0,B=w+(I>>>0>>0?B+1|0:B)|0,B=(h^(e^h)&r)+(B=(I=I+s|0)>>>0>>0?B+1|0:B)|0,B=(I=(Q=a^(a^n)&p)+I|0)>>>0>>0?B+1|0:B,Q=UI(p,r,50),s=f,Q=UI(p,r,46)^Q,s^=f,Q=(w=UI(p,r,23)^Q)+I|0,I=(f^s)+B|0,F=I=Q>>>0>>0?I+1|0:I,B=I,I=UI(k,c,36),s=f,I=UI(k,c,30)^I,w=f^s,R=UI(k,c,25)^I,I=((_|y)&c|_&y)+(f^w)|0,B=((s=R+((E|S)&k|E&S)|0)>>>0>>0?I+1|0:I)+B|0,s=B=(w=Q+s|0)>>>0>>0?B+1|0:B,i[C+8>>2]=w,i[C+12>>2]=B,B=t+F|0,Q=B=(t=Q+D|0)>>>0>>0?B+1|0:B,i[C+40>>2]=t,i[C+44>>2]=B,B=34416+(I=120|M)|0,M=i[(I=D=I+g|0)>>2],F=i[B>>2]+M|0,B=i[B+4>>2]+i[I+4>>2]|0,I=h+(F>>>0>>0?B+1|0:B)|0,I=(e^(e^r)&Q)+(I=(B=a+F|0)>>>0>>0?I+1|0:I)|0,I=(B=(a=n^(p^n)&t)+B|0)>>>0>>0?I+1|0:I,a=UI(t,Q,50),e=f,a=UI(t,Q,46)^a,e^=f,Q=(a=UI(t,Q,23)^a)+B|0,B=(f^e)+I|0,B=Q>>>0>>0?B+1|0:B,a=Q,e=B,I=B,B=UI(w,s,36),t=f,B=UI(w,s,30)^B,r=f^t,h=UI(w,s,25)^B,B=((_|c)&s|_&c)+(f^r)|0,I=((t=h+((k|S)&w|k&S)|0)>>>0>>0?B+1|0:B)+I|0,I=(Q=Q+t|0)>>>0>>0?I+1|0:I,i[C>>2]=Q,i[C+4>>2]=I,B=e+y|0,B=(r=E)>>>0>(E=E+a|0)>>>0?B+1|0:B,i[C+32>>2]=E,i[C+36>>2]=B,64!=(0|P);)c=((P=P+16|0)<<3)+g|0,a=i[G>>2],_=i[G+4>>2],R=i[b>>2],e=I=i[b+4>>2],B=I,Q=I=i[N+4>>2],I=UI(S=i[N>>2],I,45),E=f,r=((63&Q)<<26|S>>>6)^(I=UI(S,Q,3)^I),I=(Q>>>6^(t=f^E))+B|0,B=((E=r+R|0)>>>0>>0?I+1|0:I)+_|0,B=(I=E+a|0)>>>0>>0?B+1|0:B,a=E=i[l+4>>2],E=UI(_=i[l>>2],E,63),t=f,E=((127&a)<<25|_>>>7)^UI(_,a,56)^E,B=(f^t^a>>>7)+B|0,E=B=E>>>0>(k=E+I|0)>>>0?B+1|0:B,i[c>>2]=k,i[c+4>>2]=B,_=(N=i[U>>2])+_|0,I=(c=i[U+4>>2])+a|0,B=_>>>0>>0?I+1|0:I,a=I=i[D+4>>2],I=UI(F=i[D>>2],I,45),t=f,r=_,_=((63&a)<<26|F>>>6)^UI(F,a,3)^I,B=(f^t^a>>>6)+B|0,_=_>>>0>(r=r+_|0)>>>0?B+1|0:B,B=UI(t=i[Y>>2],I=i[Y+4>>2],63),h=f,s=r,r=((127&I)<<25|t>>>7)^UI(t,I,56)^B,B=(f^h^I>>>7)+_|0,_=B=r>>>0>(w=s+r|0)>>>0?B+1|0:B,i[G+136>>2]=w,i[G+140>>2]=B,B=(U=i[K>>2])+t|0,I=(t=i[K+4>>2])+I|0,r=UI(k,E,45),h=f,r=(y=((63&E)<<26|k>>>6)^UI(k,E,3)^r)+B|0,B=(f^h^E>>>6)+(B>>>0>>0?I+1|0:I)|0,B=r>>>0>>0?B+1|0:B,h=I=i[u+4>>2],I=UI(y=i[u>>2],I,63),n=f,s=r,r=((127&h)<<25|y>>>7)^UI(y,h,56)^I,B=(f^n^h>>>7)+B|0,r=B=r>>>0>(M=s+r|0)>>>0?B+1|0:B,i[G+144>>2]=M,i[G+148>>2]=B,y=(l=i[v>>2])+y|0,I=(I=h)+(h=i[v+4>>2])|0,B=y>>>0>>0?I+1|0:I,I=UI(w,_,45),n=f,p=((63&_)<<26|w>>>6)^UI(w,_,3)^I,B=(f^n^_>>>6)+B|0,B=(y=p+y|0)>>>0

>>0?B+1|0:B,n=I=i[m+4>>2],I=UI(p=i[m>>2],I,63),D=f,s=y,y=((127&n)<<25|p>>>7)^UI(p,n,56)^I,B=(f^D^n>>>7)+B|0,y=B=y>>>0>(Y=s+y|0)>>>0?B+1|0:B,i[G+152>>2]=Y,i[G+156>>2]=B,I=(u=i[L>>2])+p|0,B=(B=n)+(n=i[L+4>>2])|0,p=UI(M,r,45),D=f,p=((63&r)<<26|M>>>6)^UI(M,r,3)^p,B=(f^D^r>>>6)+(I>>>0>>0?B+1|0:B)|0,p=(s=p+I|0)>>>0

>>0?B+1|0:B,B=UI(D=i[J>>2],I=i[J+4>>2],63),m=f,K=s,s=((127&I)<<25|D>>>7)^(B=UI(D,I,56)^B),B=(I>>>7^(J=f^m))+p|0,p=B=s>>>0>(m=K+s|0)>>>0?B+1|0:B,i[G+160>>2]=m,i[G+164>>2]=B,I=I+Q|0,I=(B=D+S|0)>>>0>>0?I+1|0:I,D=UI(Y,y,45),s=f,D=(J=((63&y)<<26|Y>>>6)^UI(Y,y,3)^D)+B|0,B=(f^s^y>>>6)+I|0,B=D>>>0>>0?B+1|0:B,s=i[H>>2],H=I=i[H+4>>2],I=UI(s,I,63),J=f,I=UI(s,H,56)^I,K=D,B=(H>>>7^(b=f^J))+B|0,D=B=(D=((127&H)<<25|s>>>7)^I)>>>0>(J=K+D|0)>>>0?B+1|0:B,i[G+168>>2]=J,i[G+172>>2]=B,I=a+H|0,I=(B=s+F|0)>>>0>>0?I+1|0:I,K=s=i[d+4>>2],s=UI(b=i[d>>2],s,63),H=f,s=(d=((127&K)<<25|b>>>7)^UI(b,K,56)^s)+B|0,B=(f^H^K>>>7)+I|0,I=s>>>0>>0?B+1|0:B,B=UI(m,p,45),H=f,B=UI(m,p,3)^B,d=f^H,H=s,I=(p>>>6^d)+I|0,s=I=(s=((63&p)<<26|m>>>6)^B)>>>0>(H=H+s|0)>>>0?I+1|0:I,i[G+176>>2]=H,i[G+180>>2]=I,v=i[x>>2],x=I=i[x+4>>2],d=I,I=UI(R,e,63),B=f,L=((127&e)<<25|R>>>7)^UI(R,e,56)^I,I=(f^B^e>>>7)+_|0,B=((w=L+w|0)>>>0>>0?I+1|0:I)+d|0,B=(I=w+v|0)>>>0>>0?B+1|0:B,_=UI(H,s,45),w=f,d=(_=((63&s)<<26|H>>>6)^UI(H,s,3)^_)+I|0,I=(f^w^s>>>6)+B|0,_=I=_>>>0>d>>>0?I+1|0:I,i[G+192>>2]=d,i[G+196>>2]=I,B=E+K|0,B=(I=k+b|0)>>>0>>0?B+1|0:B,w=UI(v,x,63),b=f,K=((127&x)<<25|v>>>7)^UI(v,x,56)^w,B=(f^b^x>>>7)+B|0,I=(w=K+I|0)>>>0>>0?B+1|0:B,B=UI(J,D,45),b=f,B=UI(J,D,3)^B,x=w,I=(D>>>6^(K=f^b))+I|0,w=I=(w=((63&D)<<26|J>>>6)^B)>>>0>(b=x+w|0)>>>0?I+1|0:I,i[G+184>>2]=b,i[G+188>>2]=I,I=UI(U,t,63),B=f,I=((127&t)<<25|U>>>7)^UI(U,t,56)^I,B=(f^B^t>>>7)+c|0,I=y+(I>>>0>(K=I+N|0)>>>0?B+1|0:B)|0,I=(B=Y+K|0)>>>0>>0?I+1|0:I,y=UI(d,_,45),Y=f,y=UI(d,_,3)^y,K=f^Y,Y=(y^=(63&_)<<26|d>>>6)+B|0,B=(_>>>6^K)+I|0,y=B=y>>>0>Y>>>0?B+1|0:B,i[G+208>>2]=Y,i[G+212>>2]=B,I=UI(N,c,63),B=f,K=UI(N,c,56)^I,B=((I=c>>>7|0)^f^B)+e|0,I=r+((c=(N=K^((127&c)<<25|N>>>7))+R|0)>>>0>>0?B+1|0:B)|0,I=(B=c+M|0)>>>0>>0?I+1|0:I,e=UI(b,w,45),c=f,r=(e=((63&w)<<26|b>>>6)^UI(b,w,3)^e)+B|0,B=(f^c^w>>>6)+I|0,e=B=e>>>0>r>>>0?B+1|0:B,i[G+200>>2]=r,i[G+204>>2]=B,I=UI(u,n,63),B=f,N=((127&n)<<25|u>>>7)^UI(u,n,56)^I,I=(f^B^n>>>7)+h|0,B=D+((c=N+l|0)>>>0>>0?I+1|0:I)|0,B=(I=c+J|0)>>>0>>0?B+1|0:B,c=UI(Y,y,45),D=f,N=I,I=y>>>6|0,c=((63&y)<<26|Y>>>6)^UI(Y,y,3)^c,B=(I^f^D)+B|0,c=B=c>>>0>(y=N+c|0)>>>0?B+1|0:B,i[G+224>>2]=y,i[G+228>>2]=B,I=UI(l,h,63),B=f,I=UI(l,h,56)^I,D=f^B,N=((127&h)<<25|l>>>7)^I,I=((B=h>>>7|0)^D)+t|0,B=p+((h=N+U|0)>>>0>>0?I+1|0:I)|0,B=(I=h+m|0)>>>0>>0?B+1|0:B,t=UI(r,e,45),h=f,D=I,I=e>>>6|0,e=((63&e)<<26|r>>>6)^UI(r,e,3)^t,I=(I^f^h)+B|0,e=I=(t=D+e|0)>>>0>>0?I+1|0:I,i[G+216>>2]=t,i[G+220>>2]=I,I=UI(F,a,63),B=f,h=((127&a)<<25|F>>>7)^UI(F,a,56)^I,B=(f^B^a>>>7)+Q|0,B=w+((I=h+S|0)>>>0>>0?B+1|0:B)|0,I=(r=I+b|0)>>>0>>0?B+1|0:B,B=UI(y,c,45),h=f,D=r,r=UI(y,c,3)^B,B=c>>>6|0,c=D+(r^=(63&c)<<26|y>>>6)|0,I=(B^f^h)+I|0,i[G+240>>2]=c,i[G+244>>2]=c>>>0>>0?I+1|0:I,I=UI(S,Q,63),B=f,I=UI(S,Q,56)^I,c=f^B,B=((B=Q>>>7|0)^c)+n|0,I=s+((I^=(127&Q)<<25|S>>>7)>>>0>(Q=I+u|0)>>>0?B+1|0:B)|0,I=(B=Q+H|0)>>>0>>0?I+1|0:I,Q=UI(t,e,45),c=f,r=B,B=e>>>6|0,Q=((63&e)<<26|t>>>6)^UI(t,e,3)^Q,B=(B^f^c)+I|0,Q=B=Q>>>0>(e=r+Q|0)>>>0?B+1|0:B,i[G+232>>2]=e,i[G+236>>2]=B,I=UI(k,E,63),B=f,r=UI(k,E,56)^I,B=((I=E>>>7|0)^f^B)+a|0,I=_+((E=(c=r^((127&E)<<25|k>>>7))+F|0)>>>0>>0?B+1|0:B)|0,I=(B=E+d|0)>>>0>>0?I+1|0:I,E=UI(e,Q,45),a=f,r=B,B=Q>>>6|0,Q=r+(E=((63&Q)<<26|e>>>6)^UI(e,Q,3)^E)|0,B=(B^f^a)+I|0,i[G+248>>2]=Q,i[G+252>>2]=Q>>>0>>0?B+1|0:B;I=I+i[A+4>>2]|0,I=(g=Q+i[A>>2]|0)>>>0>>0?I+1|0:I,i[A>>2]=g,i[A+4>>2]=I,B=i[A+12>>2]+i[C+12>>2]|0,I=(g=i[C+8>>2])+i[A+8>>2]|0,i[A+8>>2]=I,i[A+12>>2]=I>>>0>>0?B+1|0:B,B=i[A+20>>2]+i[C+20>>2]|0,I=(g=i[C+16>>2])+i[A+16>>2]|0,i[A+16>>2]=I,i[A+20>>2]=I>>>0>>0?B+1|0:B,I=i[A+28>>2]+i[C+28>>2]|0,g=(B=i[C+24>>2])+i[A+24>>2]|0,i[A+24>>2]=g,i[A+28>>2]=g>>>0>>0?I+1|0:I,B=i[A+36>>2]+i[C+36>>2]|0,I=(g=i[C+32>>2])+i[A+32>>2]|0,i[A+32>>2]=I,i[A+36>>2]=I>>>0>>0?B+1|0:B,I=i[A+44>>2]+i[C+44>>2]|0,g=(B=i[C+40>>2])+i[A+40>>2]|0,i[A+40>>2]=g,i[A+44>>2]=g>>>0>>0?I+1|0:I,B=i[A+52>>2]+i[C+52>>2]|0,I=(g=i[C+48>>2])+i[A+48>>2]|0,i[A+48>>2]=I,i[A+52>>2]=I>>>0>>0?B+1|0:B,B=i[A+60>>2]+i[C+60>>2]|0,I=(g=i[C+56>>2])+i[A+56>>2]|0,i[A+56>>2]=I,i[A+60>>2]=I>>>0>>0?B+1|0:B}function F(A,I){var g,C=0,B=0,Q=0,E=0,c=0,t=0,r=0,e=0,y=0,p=0,w=0,n=0,k=0,F=0,S=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0,BA=0,QA=0,iA=0,oA=0,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0;if(s=g=s-4096|0,A){A:{I:{if(2==(0|(E=i[A+36>>2]))){if(oA=i[A+4>>2],(IA=i[I>>2])|(V=o[I+8|0])>>>0>=2)break I;IA=0}else V=o[I+8|0],oA=i[A+4>>2],IA=i[I>>2];if(bg(g+3072|0,0,1024),bg(g+2104|0,0,968),i[g+2048>>2]=IA,i[g+2052>>2]=0,u=i[I+4>>2],i[g+2064>>2]=V,i[g+2068>>2]=0,i[g+2056>>2]=u,i[g+2060>>2]=0,i[g+2072>>2]=i[A+16>>2],i[g+2076>>2]=0,u=i[A+8>>2],i[g+2088>>2]=E,i[g+2092>>2]=0,i[g+2080>>2]=u,i[g+2084>>2]=0,!i[A+20>>2])break A;for(u=0;(S=127&r)||(u=(z=z+1|0)?u:u+1|0,i[g+2096>>2]=z,i[g+2100>>2]=u,E=bg(g,0,1024),bg(E+1024|0,0,1024),N(C=E+3072|0,E+2048|0,E),N(C,E,E+1024|0)),S=i[4+(E=(g+1024|0)+(S<<3)|0)>>2],i[(C=(r<<3)+oA|0)>>2]=i[E>>2],i[C+4>>2]=S,(S=i[A+20>>2])>>>0>(r=r+1|0)>>>0;);break A}S=i[A+20>>2],cA=1}if(!((u=(aA=!(V|IA))<<1)>>>0>=S>>>0))for(E=i[A+24>>2],iA=i[I+4>>2],r=(z=(a(E,iA)+u|0)+a(S,V)|0)+((z>>>0)%(E>>>0)|0?-1:E-1|0)|0,tA=V+1|0;;){C=i[A+28>>2],EA=1==((z>>>0)%((E=i[A+24>>2])>>>0)|0)?z-1|0:r,r=cA?i[i[A>>2]+4>>2]+(EA<<10)|0:(u<<3)+oA|0,B=i[r>>2],r=i[r+4>>2],i[I+12>>2]=u,C=aA?iA:(r>>>0)%(C>>>0)|0;A:if(IA)r=E+((0|C)==(0|iA)?~S+u|0:(u?0:-1)-S|0)|0,Q=0,3!=(0|V)&&(Q=a(S,tA));else{if(!V){r=u-1|0,Q=0;break A}if(r=a(S,V),(0|C)==(0|iA)){r=(r+u|0)-1|0,Q=0;break A}r=r-!u|0,Q=0}S=Q,c=(p=i[i[A>>2]+4>>2])+(a(C,E)<<10)|0,y=(C=r-1|0)>>>0>(Q=C+S|0)>>>0,Ig(B,0,B,0),Ig(r,0,f,0),S=Q-(r=f)|0,C=0,e=0;A:{I:{g:{C:{B:{Q:{i:{o:{E:{a:{if(r=y-(Q>>>0>>0)|0){if(!E)break a;break E}h=S-a((S>>>0)/(E>>>0)|0,E)|0,D=0,f=0;break A}if(!S)break o;break i}if(!((B=E-1|0)&E))break Q;t=0-(B=(_(E)+33|0)-_(r)|0)|0;break C}h=0,D=r,f=0;break A}if((C=32-_(r)|0)>>>0<31)break B;break g}if(h=B&S,D=0,1==(0|E))break I;E=31&(S=FC(E)),(63&S)>>>0>=32?B=r>>>E|0:(C=r>>>E|0,B=0),f=C;break A}B=C+1|0,t=63-C|0}if(Q=31&(C=63&B),C>>>0>=32?(C=0,y=r>>>Q|0):(C=r>>>Q|0,y=((1<>>Q),Q=31&(t&=63),t>>>0>=32?(r=S<>>32-Q|r<>>31,y=(C=y<<1|r>>>31)-(b=E&(Q=F-(d+(C>>>0>t>>>0)|0)>>31))|0,C=d-(C>>>0>>0)|0,r=r<<1|S>>>31,S=e|S<<1,e=1&Q,B=B-1|0;);h=y,D=C,f=r<<1|S>>>31;break A}h=S,D=r,r=0}f=r}if(f=D,r=(h<<10)+c|0,E=p+(EA<<10)|0,_A=p+(z<<10)|0,IA)N(E,r,_A);else{for(Ng(g+3072|0,r,1024),r=0;Q=i[(B=(S=r<<3)+(C=g+3072|0)|0)>>2],p=i[(y=E+S|0)>>2],y=i[B+4>>2]^i[y+4>>2],i[B>>2]=Q^p,i[B+4>>2]=y,y=i[(B=(Q=8|S)+C|0)>>2],p=i[(Q=E+Q|0)>>2],Q=i[B+4>>2]^i[Q+4>>2],i[B>>2]=y^p,i[B+4>>2]=Q,y=i[(B=(Q=16|S)+C|0)>>2],p=i[(Q=E+Q|0)>>2],Q=i[B+4>>2]^i[Q+4>>2],i[B>>2]=y^p,i[B+4>>2]=Q,Q=i[(S=(B=24|S)+C|0)>>2],y=i[(B=B+E|0)>>2],B=i[S+4>>2]^i[B+4>>2],i[S>>2]=Q^y,i[S+4>>2]=B,128!=(0|(r=r+4|0)););for(Ng(g+2048|0,C,1024),S=0,r=0;Q=(y=i[56+(E=(g+3072|0)+(r<<7)|0)>>2])+(B=i[E+24>>2])|0,p=(F=i[E+60>>2])+(C=i[E+28>>2])|0,e=Ig(B<<1&-2,1&(C<<1|B>>>31),y,0),B=f+(B>>>0>Q>>>0?p+1|0:p)|0,p=(C=e+Q|0)>>>0>>0?B+1|0:B,c=(e=UI(C^i[E+120>>2],p^i[E+124>>2],32))+(B=i[E+88>>2])|0,t=(k=f)+(Q=i[E+92>>2])|0,d=Ig(e,0,B<<1&-2,1&(Q<<1|B>>>31)),B=f+(B>>>0>c>>>0?t+1|0:t)|0,b=UI(y^(Q=d+c|0),F^(v=Q>>>0>>0?B+1|0:B),40),w=1+(B=p+(BA=f)|0)|0,t=B,y=(B=C+b|0)>>>0>>0?w:t,d=(C=Ig(b,0,C<<1&-2,1&(p<<1|C>>>31)))+B|0,B=f+y|0,k=UI(d^e,k^(X=C>>>0>d>>>0?B+1|0:B),48),Y=w=f,y=(n=i[E+44>>2])+(C=i[E+12>>2])|0,e=(p=i[E+40>>2])+(B=i[E+8>>2])|0,c=Ig(B<<1&-2,1&(C<<1|B>>>31),p,0),B=f+(B>>>0>e>>>0?y+1|0:y)|0,c=(C=e+c|0)>>>0>>0?B+1|0:B,e=(t=UI(C^i[E+104>>2],c^i[E+108>>2],32))+(y=i[E+72>>2])|0,F=(M=f)+(B=i[E+76>>2])|0,G=Ig(t,0,y<<1&-2,1&(B<<1|y>>>31)),y=f+(e>>>0>>0?F+1|0:F)|0,e=UI(H=p^(B=G+e|0),n^(p=B>>>0>>0?y+1|0:y),40),G=1+(y=c+(F=f)|0)|0,n=y,n=(y=C+e|0)>>>0>>0?G:n,C=Ig(e,0,C<<1&-2,1&(c<<1|C>>>31)),c=f+n|0,n=UI((y=C+y|0)^t,M^(O=C>>>0>y>>>0?c+1|0:c),48),G=1+(C=p+(QA=f)|0)|0,t=C,c=(C=B+n|0)>>>0>>0?G:t,p=C+(B=Ig(n,0,B<<1&-2,1&(p<<1|B>>>31)))|0,C=f+c|0,M=UI(e^p,F^(Z=B>>>0>p>>>0?C+1|0:C),1),gA=H=f,e=(J=i[E+36>>2])+(C=i[E+4>>2])|0,t=(c=i[E+32>>2])+(B=i[E>>2])|0,F=Ig(B<<1&-2,1&(C<<1|B>>>31),c,0),B=f+(B>>>0>t>>>0?e+1|0:e)|0,t=(C=t+F|0)>>>0>>0?B+1|0:B,F=(q=UI(C^i[E+96>>2],t^i[E+100>>2],32))+(B=i[(e=j=E- -64|0)>>2])|0,G=($=f)+(e=i[e+4>>2])|0,R=Ig(q,0,B<<1&-2,1&(e<<1|B>>>31)),B=f+(B>>>0>F>>>0?G+1|0:G)|0,G=UI(c^(e=R+F|0),J^(R=e>>>0>>0?B+1|0:B),40),F=1+(B=t+(AA=f)|0)|0,c=B,c=(B=C+G|0)>>>0>>0?F:c,C=B+(t=Ig(G,0,C<<1&-2,1&(t<<1|C>>>31)))|0,B=f+c|0,c=1+(B=(W=C>>>0>>0?B+1|0:B)+H|0)|0,t=B,t=(B=C+M|0)>>>0>>0?c:t,c=B+(F=Ig(M,0,C<<1&-2,1&(W<<1|C>>>31)))|0,B=f+t|0,w=UI(c^k,(l=c>>>0>>0?B+1|0:B)^w,32),L=f,F=(K=i[E+52>>2])+(B=i[E+20>>2])|0,J=(H=i[E+48>>2])+(t=i[E+16>>2])|0,m=Ig(t<<1&-2,1&(B<<1|t>>>31),H,0),t=f+(t>>>0>J>>>0?F+1|0:F)|0,J=(B=J+m|0)>>>0>>0?t+1|0:t,P=(m=UI(B^i[E+112>>2],J^i[E+116>>2],32))+(F=i[E+80>>2])|0,x=(CA=f)+(t=i[E+84>>2])|0,U=Ig(m,0,F<<1&-2,1&(t<<1|F>>>31)),F=f+(F>>>0>P>>>0?x+1|0:x)|0,H=UI(H^(t=U+P|0),K^(P=t>>>0>>0?F+1|0:F),40),U=1+(F=J+(K=f)|0)|0,x=F,x=(F=B+H|0)>>>0>>0?U:x,B=Ig(H,0,B<<1&-2,1&(J<<1|B>>>31)),J=f+x|0,J=UI(U=(F=B+F|0)^m,CA^(m=B>>>0>F>>>0?J+1|0:J),48),U=1+(B=P+(CA=f)|0)|0,x=B,x=(B=t+J|0)>>>0>>0?U:x,t=Ig(J,0,t<<1&-2,1&(P<<1|t>>>31)),P=f+x|0,U=1+(t=(P=(B=t+B|0)>>>0>>0?P+1|0:P)+L|0)|0,x=t,x=(t=B+w|0)>>>0>>0?U:x,T=M^(t=(U=Ig(w,0,B<<1&-2,1&(P<<1|B>>>31)))+t|0),M=f+x|0,M=UI(T,gA^(x=t>>>0>>0?M+1|0:M),40),rA=1+(U=l+(gA=f)|0)|0,T=U,T=(U=c+M|0)>>>0>>0?rA:T,c=(l=Ig(M,0,c<<1&-2,1&(l<<1|c>>>31)))+U|0,i[E>>2]=c,U=f+T|0,l=c>>>0>>0?U+1|0:U,i[E+4>>2]=l,c=UI(c^w,l^L,48),i[E+120>>2]=c,w=f,i[E+124>>2]=w,T=1+(w=w+x|0)|0,U=w,l=(w=c+t|0)>>>0>>0?T:U,c=(t=Ig(c,0,t<<1&-2,1&(x<<1|t>>>31)))+w|0,i[E+80>>2]=c,w=f+l|0,t=c>>>0>>0?w+1|0:w,i[E+84>>2]=t,eA=E,yA=UI(c^M,t^gA,1),i[eA+40>>2]=yA,i[E+44>>2]=f,c=UI(B^H,K^P,1),w=1+(B=O+(H=f)|0)|0,t=B,t=(B=c+y|0)>>>0>>0?w:t,B=B+(M=Ig(c,0,y<<1&-2,1&(O<<1|y>>>31)))|0,y=f+t|0,t=UI(C^q,W^$,48),y=UI(t^B,(M=B>>>0>>0?y+1|0:y)^(O=f),32),q=w=f,K=1+(C=v+Y|0)|0,Y=C,W=(C=Q+k|0)>>>0>>0?K:Y,Q=Ig(k,0,Q<<1&-2,1&(v<<1|Q>>>31)),k=f+W|0,Y=1+(Q=(k=(C=Q+C|0)>>>0>>0?k+1|0:k)+w|0)|0,w=Q,w=(Q=C+y|0)>>>0>>0?Y:w,Y=c^(Q=(v=Ig(y,0,C<<1&-2,1&(k<<1|C>>>31)))+Q|0),c=f+w|0,c=UI(Y,H^(w=Q>>>0>>0?c+1|0:c),40),K=1+(v=M+(H=f)|0)|0,Y=v,W=(v=B+c|0)>>>0>>0?K:Y,Y=y^(B=(M=Ig(c,0,B<<1&-2,1&(M<<1|B>>>31)))+v|0),y=f+W|0,y=UI(Y,q^(M=B>>>0>>0?y+1|0:y),48),i[E+96>>2]=y,v=f,i[E+100>>2]=v,i[E+8>>2]=B,i[E+12>>2]=M,K=1+(B=w+v|0)|0,Y=B,M=(B=Q+y|0)>>>0>>0?K:Y,Q=Ig(y,0,Q<<1&-2,1&(w<<1|Q>>>31)),y=f+M|0,eA=E,yA=UI((B=Q+B|0)^c,H^(Q=B>>>0>>0?y+1|0:y),1),i[eA+48>>2]=yA,i[E+52>>2]=f,i[E+88>>2]=B,i[E+92>>2]=Q,y=UI(C^b,k^BA,1),Q=1+(C=m+(b=f)|0)|0,B=C,Q=(C=y+F|0)>>>0>>0?Q:B,B=C+(c=Ig(y,0,F<<1&-2,1&(m<<1|F>>>31)))|0,C=f+Q|0,c=UI(B^n,QA^(F=B>>>0>>0?C+1|0:C),32),k=Q=f,w=1+(C=R+O|0)|0,Q=C,n=(C=e+t|0)>>>0>>0?w:Q,e=Ig(t,0,e<<1&-2,1&(R<<1|e>>>31)),Q=f+n|0,w=1+(Q=k+(e=(C=e+C|0)>>>0>>0?Q+1|0:Q)|0)|0,t=Q,t=(Q=C+c|0)>>>0>>0?w:t,w=y^(Q=Q+(n=Ig(c,0,C<<1&-2,1&(e<<1|C>>>31)))|0),y=f+t|0,y=UI(w,b^(t=Q>>>0>>0?y+1|0:y),40),Y=1+(n=F+(b=f)|0)|0,w=n,M=(n=B+y|0)>>>0>>0?Y:w,B=(F=Ig(y,0,B<<1&-2,1&(F<<1|B>>>31)))+n|0,i[E+16>>2]=B,n=f+M|0,F=B>>>0>>0?n+1|0:n,i[E+20>>2]=F,B=UI(B^c,F^k,48),i[E+104>>2]=B,c=f,i[E+108>>2]=c,w=1+(c=c+t|0)|0,k=c,F=(c=B+Q|0)>>>0>>0?w:k,Q=(B=Ig(B,0,Q<<1&-2,1&(t<<1|Q>>>31)))+c|0,c=f+F|0,F=B=B>>>0>Q>>>0?c+1|0:c,i[j>>2]=Q,i[j+4>>2]=B,B=(e=UI(C^G,e^AA,1))+d|0,c=(k=f)+X|0,C=(t=Ig(d<<1&-2,1&(X<<1|d>>>31),e,0))+B|0,B=f+(B>>>0>>0?c+1|0:c)|0,c=UI(C^J,CA^(t=C>>>0>>0?B+1|0:B),32),n=1+(B=Z+(d=f)|0)|0,w=B,n=(B=c+p|0)>>>0

>>0?n:w,w=e^(B=(p=Ig(c,0,p<<1&-2,1&(Z<<1|p>>>31)))+B|0),e=f+n|0,p=UI(w,k^(e=B>>>0

>>0?e+1|0:e),40),G=1+(n=t+(k=f)|0)|0,w=n,M=(n=C+p|0)>>>0>>0?G:w,w=c^(t=(C=Ig(p,0,C<<1&-2,1&(t<<1|C>>>31)))+n|0),c=f+M|0,C=UI(w,d^(c=C>>>0>t>>>0?c+1|0:c),48),G=1+(n=e+(d=f)|0)|0,w=n,M=(n=C+B|0)>>>0>>0?G:w,B=(e=Ig(C,0,B<<1&-2,1&(e<<1|B>>>31)))+n|0,i[E+72>>2]=B,n=f+M|0,e=B>>>0>>0?n+1|0:n,i[E+76>>2]=e,i[E+112>>2]=C,i[E+116>>2]=d,i[E+24>>2]=t,i[E+28>>2]=c,eA=E,yA=UI(Q^y,F^b,1),i[eA+56>>2]=yA,i[E+60>>2]=f,eA=E,yA=UI(B^p,e^k,1),i[eA+32>>2]=yA,i[E+36>>2]=f,8!=(0|(r=r+1|0)););for(;B=(Q=i[392+(E=(g+3072|0)+(S<<4)|0)>>2])+(C=i[E+136>>2])|0,y=(t=i[E+396>>2])+(r=i[E+140>>2])|0,p=Ig(C<<1&-2,1&(r<<1|C>>>31),Q,0),C=f+(C>>>0>B>>>0?y+1|0:y)|0,y=(r=p+B|0)>>>0

>>0?C+1|0:C,e=(p=UI(r^i[E+904>>2],y^i[E+908>>2],32))+(C=i[E+648>>2])|0,c=(b=f)+(B=i[E+652>>2])|0,F=Ig(p,0,C<<1&-2,1&(B<<1|C>>>31)),C=f+(C>>>0>e>>>0?c+1|0:c)|0,d=UI(Q^(B=F+e|0),t^(J=B>>>0>>0?C+1|0:C),40),t=1+(C=y+(P=f)|0)|0,Q=C,Q=(C=r+d|0)>>>0>>0?t:Q,F=(r=Ig(d,0,r<<1&-2,1&(y<<1|r>>>31)))+C|0,C=f+Q|0,b=UI(F^p,b^(v=r>>>0>F>>>0?C+1|0:C),48),x=G=f,Q=(k=i[E+268>>2])+(r=i[E+12>>2])|0,p=(y=i[E+264>>2])+(C=i[E+8>>2])|0,e=Ig(C<<1&-2,1&(r<<1|C>>>31),y,0),C=f+(C>>>0>p>>>0?Q+1|0:Q)|0,e=(r=p+e|0)>>>0>>0?C+1|0:C,p=(c=UI(r^i[E+776>>2],e^i[E+780>>2],32))+(Q=i[E+520>>2])|0,t=(n=f)+(C=i[E+524>>2])|0,M=Ig(c,0,Q<<1&-2,1&(C<<1|Q>>>31)),Q=f+(Q>>>0>p>>>0?t+1|0:t)|0,p=UI(w=y^(C=M+p|0),k^(y=C>>>0>>0?Q+1|0:Q),40),w=1+(Q=e+(t=f)|0)|0,k=Q,k=(Q=r+p|0)>>>0>>0?w:k,r=Ig(p,0,r<<1&-2,1&(e<<1|r>>>31)),e=f+k|0,k=UI((Q=r+Q|0)^c,n^(X=Q>>>0>>0?e+1|0:e),48),n=1+(r=y+(BA=f)|0)|0,w=r,e=(r=C+k|0)>>>0>>0?n:w,y=r+(C=Ig(k,0,C<<1&-2,1&(y<<1|C>>>31)))|0,r=f+e|0,n=UI(p^y,t^(O=C>>>0>y>>>0?r+1|0:r),1),Y=w=f,p=(H=i[E+260>>2])+(r=i[E+4>>2])|0,c=(e=i[E+256>>2])+(C=i[E>>2])|0,t=Ig(C<<1&-2,1&(r<<1|C>>>31),e,0),C=f+(C>>>0>c>>>0?p+1|0:p)|0,c=(r=c+t|0)>>>0>>0?C+1|0:C,t=(Z=UI(r^i[E+768>>2],c^i[E+772>>2],32))+(C=i[E+512>>2])|0,M=(QA=f)+(p=i[E+516>>2])|0,q=Ig(Z,0,C<<1&-2,1&(p<<1|C>>>31)),C=f+(C>>>0>t>>>0?M+1|0:M)|0,M=UI(e^(p=q+t|0),H^(q=p>>>0>>0?C+1|0:C),40),e=1+(C=c+(gA=f)|0)|0,t=C,e=(C=r+M|0)>>>0>>0?e:t,r=C+(c=Ig(M,0,r<<1&-2,1&(c<<1|r>>>31)))|0,C=f+e|0,w=1+(C=(j=r>>>0>>0?C+1|0:C)+w|0)|0,t=C,c=(C=r+n|0)>>>0>>0?w:t,e=C+(t=Ig(n,0,r<<1&-2,1&(j<<1|r>>>31)))|0,C=f+c|0,G=UI(e^b,(R=e>>>0>>0?C+1|0:C)^G,32),W=f,t=($=i[E+388>>2])+(C=i[E+132>>2])|0,H=(w=i[E+384>>2])+(c=i[E+128>>2])|0,l=Ig(c<<1&-2,1&(C<<1|c>>>31),w,0),c=f+(c>>>0>H>>>0?t+1|0:t)|0,H=(C=H+l|0)>>>0>>0?c+1|0:c,L=(l=UI(C^i[E+896>>2],H^i[E+900>>2],32))+(t=i[E+640>>2])|0,m=(AA=f)+(c=i[E+644>>2])|0,K=Ig(l,0,t<<1&-2,1&(c<<1|t>>>31)),t=f+(t>>>0>L>>>0?m+1|0:m)|0,w=UI(w^(c=K+L|0),$^(L=c>>>0>>0?t+1|0:t),40),U=1+(t=H+($=f)|0)|0,K=t,m=(t=C+w|0)>>>0>>0?U:K,C=Ig(w,0,C<<1&-2,1&(H<<1|C>>>31)),H=f+m|0,H=UI(K=(t=C+t|0)^l,AA^(l=C>>>0>t>>>0?H+1|0:H),48),U=1+(C=L+(AA=f)|0)|0,K=C,m=(C=c+H|0)>>>0>>0?U:K,c=Ig(H,0,c<<1&-2,1&(L<<1|c>>>31)),L=f+m|0,U=1+(c=(L=(C=c+C|0)>>>0>>0?L+1|0:L)+W|0)|0,K=c,m=(c=C+G|0)>>>0>>0?U:K,U=n^(c=(K=Ig(G,0,C<<1&-2,1&(L<<1|C>>>31)))+c|0),n=f+m|0,n=UI(U,Y^(m=c>>>0>>0?n+1|0:n),40),T=1+(K=R+(Y=f)|0)|0,U=K,CA=(K=e+n|0)>>>0>>0?T:U,e=(R=Ig(n,0,e<<1&-2,1&(R<<1|e>>>31)))+K|0,i[E>>2]=e,K=f+CA|0,R=e>>>0>>0?K+1|0:K,i[E+4>>2]=R,e=UI(e^G,R^W,48),i[E+904>>2]=e,G=f,i[E+908>>2]=G,U=1+(G=G+m|0)|0,K=G,R=(G=c+e|0)>>>0>>0?U:K,e=(c=Ig(e,0,c<<1&-2,1&(m<<1|c>>>31)))+G|0,i[E+640>>2]=e,G=f+R|0,c=c>>>0>e>>>0?G+1|0:G,i[E+644>>2]=c,eA=E,yA=UI(e^n,c^Y,1),i[eA+264>>2]=yA,i[E+268>>2]=f,e=UI(C^w,L^$,1),G=1+(C=X+(w=f)|0)|0,n=C,c=(C=Q+e|0)>>>0>>0?G:n,C=C+(n=Ig(e,0,Q<<1&-2,1&(X<<1|Q>>>31)))|0,Q=f+c|0,c=UI(r^Z,j^QA,48),Q=UI(c^C,(n=C>>>0>>0?Q+1|0:Q)^(X=f),32),Z=G=f,K=1+(r=J+x|0)|0,Y=r,j=(r=B+b|0)>>>0>>0?K:Y,B=Ig(b,0,B<<1&-2,1&(J<<1|B>>>31)),b=f+j|0,Y=1+(B=(b=B>>>0>(r=B+r|0)>>>0?b+1|0:b)+G|0)|0,G=B,G=(B=Q+r|0)>>>0>>0?Y:G,Y=e^(B=(J=Ig(Q,0,r<<1&-2,1&(b<<1|r>>>31)))+B|0),e=f+G|0,e=UI(Y,w^(G=B>>>0>>0?e+1|0:e),40),K=1+(J=n+(w=f)|0)|0,Y=J,j=(J=C+e|0)>>>0>>0?K:Y,Y=Q^(C=(n=Ig(e,0,C<<1&-2,1&(n<<1|C>>>31)))+J|0),Q=f+j|0,Q=UI(Y,Z^(n=C>>>0>>0?Q+1|0:Q),48),i[E+768>>2]=Q,J=f,i[E+772>>2]=J,i[E+8>>2]=C,i[E+12>>2]=n,Y=1+(C=G+J|0)|0,n=C,n=(C=B+Q|0)>>>0>>0?Y:n,B=Ig(Q,0,B<<1&-2,1&(G<<1|B>>>31)),Q=f+n|0,eA=E,yA=UI((C=B+C|0)^e,w^(B=C>>>0>>0?Q+1|0:Q),1),i[eA+384>>2]=yA,i[E+388>>2]=f,i[E+648>>2]=C,i[E+652>>2]=B,Q=UI(r^d,b^P,1),B=1+(r=l+(d=f)|0)|0,C=r,B=(r=Q+t|0)>>>0>>0?B:C,C=r+(e=Ig(Q,0,t<<1&-2,1&(l<<1|t>>>31)))|0,r=f+B|0,e=UI(C^k,BA^(t=C>>>0>>0?r+1|0:r),32),b=B=f,k=1+(r=q+X|0)|0,B=r,k=(r=c+p|0)>>>0

>>0?k:B,p=Ig(c,0,p<<1&-2,1&(q<<1|p>>>31)),B=f+k|0,w=1+(B=b+(p=(r=p+r|0)>>>0

>>0?B+1|0:B)|0)|0,k=B,c=(B=r+e|0)>>>0>>0?w:k,w=Q^(B=B+(k=Ig(e,0,r<<1&-2,1&(p<<1|r>>>31)))|0),Q=f+c|0,Q=UI(w,d^(c=B>>>0>>0?Q+1|0:Q),40),n=1+(k=t+(d=f)|0)|0,w=k,n=(k=C+Q|0)>>>0>>0?n:w,C=(t=Ig(Q,0,C<<1&-2,1&(t<<1|C>>>31)))+k|0,i[E+128>>2]=C,k=f+n|0,t=C>>>0>>0?k+1|0:k,i[E+132>>2]=t,C=UI(C^e,t^b,48),i[E+776>>2]=C,e=f,i[E+780>>2]=e,k=1+(e=c+e|0)|0,t=e,t=(e=C+B|0)>>>0>>0?k:t,B=(C=Ig(C,0,B<<1&-2,1&(c<<1|B>>>31)))+e|0,e=f+t|0,t=C=C>>>0>B>>>0?e+1|0:e,i[E+512>>2]=B,i[E+516>>2]=C,C=(p=UI(r^M,p^gA,1))+F|0,e=(b=f)+v|0,r=(c=Ig(F<<1&-2,1&(v<<1|F>>>31),p,0))+C|0,C=f+(C>>>0

>>0?e+1|0:e)|0,e=UI(r^H,AA^(c=r>>>0>>0?C+1|0:C),32),w=1+(C=O+(F=f)|0)|0,k=C,k=(C=e+y|0)>>>0>>0?w:k,w=p^(C=(y=Ig(e,0,y<<1&-2,1&(O<<1|y>>>31)))+C|0),p=f+k|0,y=UI(w,b^(p=C>>>0>>0?p+1|0:p),40),n=1+(k=c+(b=f)|0)|0,w=k,n=(k=r+y|0)>>>0>>0?n:w,k=e^(c=(r=Ig(y,0,r<<1&-2,1&(c<<1|r>>>31)))+k|0),e=f+n|0,r=UI(k,F^(e=r>>>0>c>>>0?e+1|0:e),48),n=1+(k=p+(F=f)|0)|0,w=k,n=(k=C+r|0)>>>0>>0?n:w,C=(p=Ig(r,0,C<<1&-2,1&(p<<1|C>>>31)))+k|0,i[E+520>>2]=C,k=f+n|0,p=C>>>0

>>0?k+1|0:k,i[E+524>>2]=p,i[E+896>>2]=r,i[E+900>>2]=F,i[E+136>>2]=c,i[E+140>>2]=e,eA=E,yA=UI(B^Q,t^d,1),i[eA+392>>2]=yA,i[E+396>>2]=f,eA=E,yA=UI(C^y,p^b,1),i[eA+256>>2]=yA,i[E+260>>2]=f,8!=(0|(S=S+1|0)););for(E=Ng(_A,g+2048|0,1024),r=0;Q=i[(C=(S=r<<3)+E|0)>>2],p=i[(y=(B=g+3072|0)+S|0)>>2],y=i[C+4>>2]^i[y+4>>2],i[C>>2]=Q^p,i[C+4>>2]=y,y=i[(C=(Q=8|S)+E|0)>>2],p=i[(Q=B+Q|0)>>2],Q=i[C+4>>2]^i[Q+4>>2],i[C>>2]=y^p,i[C+4>>2]=Q,y=i[(C=(Q=16|S)+E|0)>>2],p=i[(Q=B+Q|0)>>2],Q=i[C+4>>2]^i[Q+4>>2],i[C>>2]=y^p,i[C+4>>2]=Q,Q=i[(S=(C=24|S)+E|0)>>2],B=i[(C=C+B|0)>>2],C=i[S+4>>2]^i[C+4>>2],i[S>>2]=B^Q,i[S+4>>2]=C,128!=(0|(r=r+4|0)););}if(r=EA+1|0,z=z+1|0,!((S=i[A+20>>2])>>>0>(u=u+1|0)>>>0))break}}s=g+4096|0}function S(A){var I,g,B,Q,i,E,a,_,c,t,r,e=0,y=0,s=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0;h=(U=o[A+44|0]|o[A+45|0]<<8|o[A+46|0]<<16|o[A+47|0]<<24)>>>5&2097151,s=Ig(I=(o[A+60|0]|o[A+61|0]<<8|o[A+62|0]<<16|o[A+63|0]<<24)>>>3|0,0,-683901,-1),y=(e=o[A+44|0])<<16&2031616|o[A+42|0]|o[A+43|0]<<8,e=f,n=e=y>>>0>(F=s+y|0)>>>0?e+1|0:e,M=e=e-((F>>>0<4293918720)-1|0)|0,s=e>>21,e=(y=h)+(h=(2097151&e)<<11|(p=F- -1048576|0)>>>21)|0,y=s,m=y=e>>>0>>0?y+1|0:y,z=e,G=Ig(e,y,-683901,-1),k=f,w=Ig(g=(o[A+49|0]|o[A+50|0]<<8|o[A+51|0]<<16|o[A+52|0]<<24)>>>7&2097151,0,-997805,-1),s=(e=o[A+27|0])>>>24|0,h=e<<8|(K=o[A+23|0]|o[A+24|0]<<8|o[A+25|0]<<16|o[A+26|0]<<24)>>>24,y=(e=o[A+28|0])>>>16|0,y=2097151&((3&(y|=s))<<30|(e=h|e<<16)>>>2),e=f,e=y>>>0>(s=y+w|0)>>>0?e+1|0:e,y=Ig(P=(S=o[A+52|0]|o[A+53|0]<<8|o[A+54|0]<<16|o[A+55|0]<<24)>>>4&2097151,0,654183,0),e=f+e|0,w=s=y+s|0,s=y>>>0>s>>>0?e+1|0:e,D=(y=o[A+48|0])<<8|U>>>24,y=e=y>>>24|0,e=Ig(B=2097151&((3&(U=(e=(h=o[A+49|0])>>>16|0)|y))<<30|(y=(h<<=16)|D)>>>2),0,136657,0),s=f+s|0,s=e>>>0>(y=e+w|0)>>>0?s+1|0:s,h=(e=Ig(Q=(o[A+57|0]|o[A+58|0]<<8|o[A+59|0]<<16|o[A+60|0]<<24)>>>6&2097151,0,666643,0))+y|0,y=f+s|0,w=h,s=e>>>0>h>>>0?y+1|0:y,y=(e=o[A+56|0])>>>24|0,D=e<<8|S>>>24,y=Ig(i=2097151&((1&(S=(e=(h=o[A+57|0])>>>16|0)|y))<<31|(y=(h<<=16)|D)>>>1),0,470296,0),e=f+s|0,y=(e=(s=h=y+w|0)>>>0>>0?e+1|0:e)+k|0,y=s>>>0>(h=s+G|0)>>>0?y+1|0:y,b=s- -1048576|0,l=s=e-((s>>>0<4293918720)-1|0)|0,k=h-(e=-2097152&b)|0,G=y-((e>>>0>h>>>0)+s|0)|0,y=Ig(g,0,654183,0),e=f,e=y>>>0>(s=y+(K>>>5&2097151)|0)>>>0?e+1|0:e,h=(y=s)+(s=Ig(P,0,470296,0))|0,y=f+e|0,y=s>>>0>h>>>0?y+1|0:y,e=Ig(B,j,-997805,-1),y=f+y|0,y=e>>>0>(s=e+h|0)>>>0?y+1|0:y,h=(e=s)+(s=Ig(i,X,666643,0))|0,e=f+y|0,D=h,h=s>>>0>h>>>0?e+1|0:e,w=(s=Ig(g,0,470296,0))+(e=(e=o[A+23|0])<<16&2031616|o[A+21|0]|o[A+22|0]<<8)|0,s=f,s=e>>>0>w>>>0?s+1|0:s,w=(y=Ig(P,0,666643,0))+w|0,e=f+s|0,s=Ig(B,j,654183,0),y=f+(y>>>0>w>>>0?e+1|0:e)|0,S=y=s>>>0>(K=s+w|0)>>>0?y+1|0:y,L=y=y-((K>>>0<4293918720)-1|0)|0,e=(e=y>>>21|0)+h|0,s=e=(y=(2097151&y)<<11|(w=K- -1048576|0)>>>21)>>>0>(D=y+D|0)>>>0?e+1|0:e,N=y=e-((D>>>0<4293918720)-1|0)|0,e=k,k=(2097151&y)<<11|(h=D- -1048576|0)>>>21,y=(y>>21)+G|0,U=k=(y=k>>>0>(H=e+k|0)>>>0?y+1|0:y)-((H>>>0<4293918720)-1|0)|0,q=H-(e=-2097152&(G=H- -1048576|0))|0,O=y-((e>>>0>H>>>0)+k|0)|0,e=Ig(z,m,136657,0),s=f+s|0,s=e>>>0>(y=e+D|0)>>>0?s+1|0:s,d=y-(e=-2097152&h)|0,Y=s-((e>>>0>y>>>0)+N|0)|0,H=F-(e=-2097152&p)|0,M=n-((e>>>0>F>>>0)+M|0)|0,n=Ig(I,0,136657,0),y=(e=o[A+40|0])>>>24|0,h=e<<8|(p=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24)>>>24,s=(e=o[A+41|0])>>>16|0,y=(s|=y)>>>3|0,s=(7&s)<<29|(e=h|e<<16)>>>3,e=y+f|0,e=s>>>0>(h=s+n|0)>>>0?e+1|0:e,y=Ig(Q,0,-683901,-1),e=f+e|0,e=y>>>0>(s=y+h|0)>>>0?e+1|0:e,D=s,y=Ig(I,0,-997805,-1),s=f,s=y>>>0>(h=y+(p>>>6&2097151)|0)>>>0?s+1|0:s,p=(y=h)+(h=Ig(Q,0,136657,0))|0,y=f+s|0,s=Ig(i,X,-683901,-1),y=f+(h>>>0>p>>>0?y+1|0:y)|0,k=y=s>>>0>(u=s+p|0)>>>0?y+1|0:y,W=s=y-((u>>>0<4293918720)-1|0)|0,e=e+(y=s>>21)|0,p=e=(s=(2097151&s)<<11|(F=u- -1048576|0)>>>21)>>>0>(N=s+D|0)>>>0?e+1|0:e,x=e=e-((N>>>0<4293918720)-1|0)|0,y=(y=e>>21)+M|0,R=y=(e=(s=(2097151&e)<<11|(D=N- -1048576|0)>>>21)+H|0)>>>0>>0?y+1|0:y,v=e,y=Ig(e,y,-683901,-1),e=f+Y|0,J=s=y+d|0,h=y>>>0>s>>>0?e+1|0:e,H=K-(e=-2097152&w)|0,M=S-((4095&L)+(e>>>0>K>>>0)|0)|0,K=Ig(g,0,666643,0),e=(y=o[A+19|0])>>>24|0,w=y<<8|(S=o[A+15|0]|o[A+16|0]<<8|o[A+17|0]<<16|o[A+18|0]<<24)>>>24,s=e,y=(7&(s|=y=(e=o[A+20|0])>>>16|0))<<29|(y=(e<<=16)|w)>>>3,s=f+(s>>>3|0)|0,s=y>>>0>(w=y+K|0)>>>0?s+1|0:s,e=Ig(B,j,470296,0),y=f+s|0,e=e>>>0>(w=e+w|0)>>>0?y+1|0:y,s=Ig(B,j,666643,0),y=f,K=y=s>>>0>(d=s+(S>>>6&2097151)|0)>>>0?y+1|0:y,V=s=y-((d>>>0<4293918720)-1|0)|0,e=e+(y=s>>>21|0)|0,S=e=(s=(2097151&s)<<11|(n=d- -1048576|0)>>>21)>>>0>(Y=s+w|0)>>>0?e+1|0:e,Z=e=e-((Y>>>0<4293918720)-1|0)|0,y=(y=e>>>21|0)+M|0,y=(e=(2097151&e)<<11|(w=Y- -1048576|0)>>>21)>>>0>(s=e+H|0)>>>0?y+1|0:y,M=(e=s)+(s=Ig(z,m,-997805,-1))|0,e=f+y|0,e=s>>>0>M>>>0?e+1|0:e,L=y=N-(s=-2097152&D)|0,E=D=p-((s>>>0>N>>>0)+x|0)|0,s=Ig(v,R,136657,0),e=f+e|0,e=s>>>0>(p=s+M|0)>>>0?e+1|0:e,s=Ig(y,D,-683901,-1),y=f+e|0,p=y=s>>>0>(M=s+p|0)>>>0?y+1|0:y,x=e=y-((M>>>0<4293918720)-1|0)|0,y=(2097151&e)<<11|(D=M- -1048576|0)>>>21,e=(e>>21)+h|0,J=y=(e=y>>>0>(N=y+J|0)>>>0?e+1|0:e)-((N>>>0<4293918720)-1|0)|0,H=(2097151&y)<<11|(h=N- -1048576|0)>>>21,y=(y>>21)+O|0,_=q=H+q|0,H=H>>>0>q>>>0?y+1|0:y,c=N-(y=-2097152&h)|0,t=e-((y>>>0>N>>>0)+J|0)|0,q=M-(e=-2097152&D)|0,O=p-((e>>>0>M>>>0)+x|0)|0,s=(e=Ig(z,m,654183,0))+(Y-(y=-2097152&w)|0)|0,y=f+(S-((2147483647&Z)+(y>>>0>Y>>>0)|0)|0)|0,y=e>>>0>s>>>0?y+1|0:y,e=Ig(v,R,-997805,-1),y=f+y|0,y=e>>>0>(s=e+s|0)>>>0?y+1|0:y,h=(e=s)+(s=Ig(L,E,136657,0))|0,e=f+y|0,J=h,p=s>>>0>h>>>0?e+1|0:e,Y=u-(e=-2097152&F)|0,N=k-((e>>>0>u>>>0)+W|0)|0,S=Ig(P,0,-683901,-1),e=(y=o[A+35|0])>>>24|0,h=y<<8|(w=o[A+31|0]|o[A+32|0]<<8|o[A+33|0]<<16|o[A+34|0]<<24)>>>24,s=e,y=(e=o[A+36|0])>>>16|0,y|=s,s=f,s=(e=2097151&((1&y)<<31|(e=e<<16|h)>>>1))>>>0>(y=e+S|0)>>>0?s+1|0:s,h=(e=Ig(I,0,654183,0))+y|0,y=f+s|0,y=e>>>0>h>>>0?y+1|0:y,s=Ig(Q,0,-997805,-1),e=f+y|0,e=s>>>0>(h=s+h|0)>>>0?e+1|0:e,y=Ig(i,X,136657,0),e=f+e|0,D=s=y+h|0,h=y>>>0>s>>>0?e+1|0:e,e=Ig(g,0,-683901,-1),y=f,y=e>>>0>(s=e+(w>>>4&2097151)|0)>>>0?y+1|0:y,w=(e=Ig(P,0,136657,0))+s|0,s=f+y|0,s=e>>>0>w>>>0?s+1|0:s,e=Ig(I,0,470296,0),y=f+s|0,y=e>>>0>(w=e+w|0)>>>0?y+1|0:y,w=(s=Ig(Q,0,654183,0))+w|0,e=f+y|0,y=Ig(i,X,-997805,-1),e=f+(s>>>0>w>>>0?e+1|0:e)|0,S=e=y>>>0>(k=y+w|0)>>>0?e+1|0:e,r=y=e-((k>>>0<4293918720)-1|0)|0,s=(e=y>>21)+h|0,M=y=(s=(y=(2097151&y)<<11|(w=k- -1048576|0)>>>21)>>>0>(F=y+D|0)>>>0?s+1|0:s)-((F>>>0<4293918720)-1|0)|0,e=(e=y>>21)+N|0,x=e=(y=(h=(2097151&y)<<11|(D=F- -1048576|0)>>>21)+Y|0)>>>0>>0?e+1|0:e,h=J,J=y,e=Ig(y,e,-683901,-1),y=f+p|0,N=h=h+e|0,h=e>>>0>h>>>0?y+1|0:y,p=(e=Ig(z,m,470296,0))+(d-(y=-2097152&n)|0)|0,y=f+(K-((2047&V)+(y>>>0>d>>>0)|0)|0)|0,y=e>>>0>p>>>0?y+1|0:y,n=(e=p)+(p=Ig(v,R,654183,0))|0,e=f+y|0,e=p>>>0>n>>>0?e+1|0:e,p=Ig(L,E,-997805,-1),y=f+e|0,y=p>>>0>(n=p+n|0)>>>0?y+1|0:y,u=D=F-(e=-2097152&D)|0,a=p=s-((e>>>0>F>>>0)+M|0)|0,s=Ig(J,x,136657,0),e=f+y|0,e=s>>>0>(n=s+n|0)>>>0?e+1|0:e,s=Ig(D,p,-683901,-1),y=f+e|0,p=y=s>>>0>(K=s+n|0)>>>0?y+1|0:y,Y=e=y-((K>>>0<4293918720)-1|0)|0,y=(2097151&e)<<11|(D=K- -1048576|0)>>>21,e=(e>>21)+h|0,N=y=(e=y>>>0>(n=y+N|0)>>>0?e+1|0:e)-((n>>>0<4293918720)-1|0)|0,F=(2097151&y)<<11|(h=n- -1048576|0)>>>21,y=(y>>21)+O|0,W=M=F+q|0,M=F>>>0>M>>>0?y+1|0:y,V=n-(y=-2097152&h)|0,Z=e-((y>>>0>n>>>0)+N|0)|0,q=K-(e=-2097152&D)|0,O=p-((e>>>0>K>>>0)+Y|0)|0,p=Ig(z,m,666643,0),e=(y=o[A+14|0])>>>24|0,h=y<<8|(N=o[A+10|0]|o[A+11|0]<<8|o[A+12|0]<<16|o[A+13|0]<<24)>>>24,s=e,y=(e=o[A+15|0])>>>16|0,y|=s,s=f,s=(e=2097151&((1&y)<<31|(e=e<<16|h)>>>1))>>>0>(y=e+p|0)>>>0?s+1|0:s,h=(e=y)+(y=Ig(v,R,470296,0))|0,e=f+s|0,e=y>>>0>h>>>0?e+1|0:e,y=Ig(L,E,654183,0),e=f+e|0,e=y>>>0>(s=y+h|0)>>>0?e+1|0:e,h=(y=s)+(s=Ig(J,x,-997805,-1))|0,y=f+e|0,y=s>>>0>h>>>0?y+1|0:y,e=Ig(u,a,136657,0),y=f+y|0,K=s=e+h|0,h=e>>>0>s>>>0?y+1|0:y,w=k-(e=-2097152&w)|0,p=S-((e>>>0>k>>>0)+r|0)|0,s=Ig(g,0,136657,0),e=f,e=(y=(o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24)>>>7&2097151)>>>0>(s=y+s|0)>>>0?e+1|0:e,D=(y=s)+(s=Ig(P,0,-997805,-1))|0,y=f+e|0,y=s>>>0>D>>>0?y+1|0:y,e=Ig(B,j,-683901,-1),y=f+y|0,y=e>>>0>(s=e+D|0)>>>0?y+1|0:y,D=(e=Ig(I,0,666643,0))+s|0,s=f+y|0,s=e>>>0>D>>>0?s+1|0:s,y=Ig(Q,0,470296,0),e=f+s|0,e=y>>>0>(D=y+D|0)>>>0?e+1|0:e,y=Ig(i,X,654183,0),e=f+e|0,y=(l>>21)+(y>>>0>(s=y+D|0)>>>0?e+1|0:e)|0,F=y=(D=(2097151&l)<<11|b>>>21)>>>0>(b=D+s|0)>>>0?y+1|0:y,l=e=y-((b>>>0<4293918720)-1|0)|0,D=(2097151&e)<<11|(n=b- -1048576|0)>>>21,e=(e>>21)+p|0,d=e=(y=D+w|0)>>>0>>0?e+1|0:e,Y=y,y=Ig(y,e,-683901,-1),e=f+h|0,D=s=y+K|0,h=y>>>0>s>>>0?e+1|0:e,e=Ig(v,R,666643,0),y=f,y=e>>>0>(s=e+(N>>>4&2097151)|0)>>>0?y+1|0:y,e=Ig(L,E,470296,0),y=f+y|0,y=e>>>0>(s=e+s|0)>>>0?y+1|0:y,p=(e=Ig(J,x,654183,0))+s|0,s=f+y|0,s=e>>>0>p>>>0?s+1|0:s,y=Ig(u,a,-997805,-1),e=f+s|0,e=y>>>0>(p=y+p|0)>>>0?e+1|0:e,y=Ig(Y,d,136657,0),e=f+e|0,S=e=y>>>0>(k=y+p|0)>>>0?e+1|0:e,R=y=e-((k>>>0<4293918720)-1|0)|0,e=D,D=(2097151&y)<<11|(w=k- -1048576|0)>>>21,y=(y>>21)+h|0,v=h=(y=(s=e+D|0)>>>0>>0?y+1|0:y)-((s>>>0<4293918720)-1|0)|0,e=(e=h>>21)+O|0,z=D=(h=(2097151&h)<<11|(p=s- -1048576|0)>>>21)+q|0,K=h>>>0>D>>>0?e+1|0:e,D=s,s=y,h=(b-(y=-2097152&n)|0)+(n=(2097151&U)<<11|G>>>21)|0,y=(F-((y>>>0>b>>>0)+l|0)|0)+(U>>21)|0,N=y=h>>>0>>0?y+1|0:y,P=y=y-((h>>>0<4293918720)-1|0)|0,G=e=y>>21,e=Ig(m=(2097151&y)<<11|(l=h- -1048576|0)>>>21,e,-683901,-1),s=f+s|0,s=e>>>0>(y=e+D|0)>>>0?s+1|0:s,j=y-(e=-2097152&p)|0,X=s-((e>>>0>y>>>0)+v|0)|0,e=Ig(m,G,136657,0),y=S+f|0,v=(s=e+k|0)-(e=-2097152&w)|0,b=(y=s>>>0>>0?y+1|0:y)-((e>>>0>s>>>0)+R|0)|0,y=Ig(L,E,666643,0),s=f,s=(e=(o[A+7|0]|o[A+8|0]<<8|o[A+9|0]<<16|o[A+10|0]<<24)>>>7&2097151)>>>0>(y=e+y|0)>>>0?s+1|0:s,D=(e=Ig(J,x,470296,0))+y|0,y=f+s|0,y=e>>>0>D>>>0?y+1|0:y,e=Ig(u,a,654183,0),y=f+y|0,y=e>>>0>(s=e+D|0)>>>0?y+1|0:y,D=(e=s)+(s=Ig(Y,d,-997805,-1))|0,e=f+y|0,n=D,D=s>>>0>D>>>0?e+1|0:e,S=Ig(J,x,666643,0),e=(y=o[A+6|0])>>>24|0,p=y<<8|(R=o[A+2|0]|o[A+3|0]<<8|o[A+4|0]<<16|o[A+5|0]<<24)>>>24,s=e,y=(e=o[A+7|0])>>>16|0,y=2097151&((3&(y|=s))<<30|(e=e<<16|p)>>>2),e=f,e=y>>>0>(s=y+S|0)>>>0?e+1|0:e,p=(y=Ig(u,a,470296,0))+s|0,s=f+e|0,s=y>>>0>p>>>0?s+1|0:s,y=Ig(Y,d,654183,0),e=f+s|0,S=e=y>>>0>(F=y+p|0)>>>0?e+1|0:e,U=e=e-((F>>>0<4293918720)-1|0)|0,y=(s=e>>21)+D|0,k=e=(y=(e=(2097151&e)<<11|(w=F- -1048576|0)>>>21)>>>0>(p=e+n|0)>>>0?y+1|0:y)-((p>>>0<4293918720)-1|0)|0,n=(2097151&e)<<11|(D=p- -1048576|0)>>>21,e=(e>>21)+b|0,v=J=n+v|0,n=n>>>0>J>>>0?e+1|0:e,e=Ig(m,G,-997805,-1),y=f+y|0,y=e>>>0>(s=e+p|0)>>>0?y+1|0:y,L=s-(e=-2097152&D)|0,x=y-((e>>>0>s>>>0)+k|0)|0,y=Ig(m,G,654183,0),e=S+f|0,J=(s=y+F|0)-(y=-2097152&w)|0,b=(e=s>>>0>>0?e+1|0:e)-((y>>>0>s>>>0)+U|0)|0,e=Ig(u,a,666643,0),y=f,y=e>>>0>(s=e+(R>>>5&2097151)|0)>>>0?y+1|0:y,e=Ig(Y,d,470296,0),y=f+y|0,p=s=e+s|0,s=e>>>0>s>>>0?y+1|0:y,D=Ig(Y,d,666643,0),y=(e=o[A+2|0])<<16&2031616|o[0|A]|o[A+1|0]<<8,e=f,S=e=y>>>0>(k=D+y|0)>>>0?e+1|0:e,d=e=e-((k>>>0<4293918720)-1|0)|0,D=(2097151&e)<<11|(w=k- -1048576|0)>>>21,e=(e>>21)+s|0,s=e=D>>>0>(F=D+p|0)>>>0?e+1|0:e,U=e=e-((F>>>0<4293918720)-1|0)|0,D=(2097151&e)<<11|(p=F- -1048576|0)>>>21,e=(e>>21)+b|0,D=D>>>0>(Y=D+J|0)>>>0?e+1|0:e,e=Ig(m,G,470296,0),s=s+f|0,s=(y=e+F|0)>>>0>>0?s+1|0:s,F=y-(e=-2097152&p)|0,p=s-((e>>>0>y>>>0)+U|0)|0,y=Ig(m,G,666643,0),e=f+(S-(((s=-2097152&w)>>>0>k>>>0)+d|0)|0)|0,y=(s=(e=y>>>0>(b=y+(k-s|0)|0)>>>0?e+1|0:e)>>21)+p|0,e=(e=(y=(e=(2097151&e)<<11|b>>>21)>>>0>(U=e+F|0)>>>0?y+1|0:y)>>21)+D|0,y=(y=(e=(y=(2097151&y)<<11|U>>>21)>>>0>(G=y+Y|0)>>>0?e+1|0:e)>>21)+x|0,s=(e=(y=(e=(2097151&e)<<11|G>>>21)>>>0>(D=e+L|0)>>>0?y+1|0:y)>>21)+n|0,e=(y=(s=(y=(2097151&y)<<11|D>>>21)>>>0>(k=y+v|0)>>>0?s+1|0:s)>>21)+X|0,y=(s=(e=(s=(2097151&s)<<11|k>>>21)>>>0>(F=s+j|0)>>>0?e+1|0:e)>>21)+K|0,K=p=(e=(2097151&e)<<11|F>>>21)+z|0,e=(e=(y=e>>>0>p>>>0?y+1|0:y)>>21)+Z|0,y=(y=(e=(y=(2097151&y)<<11|p>>>21)>>>0>(n=y+V|0)>>>0?e+1|0:e)>>21)+M|0,s=(e=(y=(e=(2097151&e)<<11|n>>>21)>>>0>(S=e+W|0)>>>0?y+1|0:y)>>21)+t|0,e=(y=(s=(y=(2097151&y)<<11|S>>>21)>>>0>(w=y+c|0)>>>0?s+1|0:s)>>21)+H|0,l=(M=h-(y=-2097152&l)|0)+((2097151&(e=(s=(2097151&s)<<11|w>>>21)>>>0>(p=s+_|0)>>>0?e+1|0:e))<<11|p>>>21)|0,e=(N-((y>>>0>h>>>0)+P|0)|0)+(e>>21)|0,N=y=(e=M>>>0>l>>>0?e+1|0:e)>>21,b=(e=Ig(H=(2097151&e)<<11|l>>>21,y,666643,0))+(y=2097151&b)|0,e=f,h=e=y>>>0>b>>>0?e+1|0:e,C[0|A]=b,C[A+1|0]=(255&e)<<24|b>>>8,e=2097151&U,y=Ig(H,N,470296,0)+e|0,s=f,e=(h>>21)+(e>>>0>y>>>0?s+1|0:s)|0,e=(M=(2097151&h)<<11|b>>>21)>>>0>(U=M+y|0)>>>0?e+1|0:e,C[A+4|0]=(2047&e)<<21|U>>>11,y=e,s=U,C[A+3|0]=(7&e)<<29|s>>>3,C[A+2|0]=31&((65535&h)<<16|b>>>16)|s<<5,h=2097151&G,G=Ig(H,N,654183,0)+h|0,e=f,U=(2097151&y)<<11|s>>>21,y=(y>>21)+(h=h>>>0>G>>>0?e+1|0:e)|0,e=y=(G=U+G|0)>>>0>>0?y+1|0:y,C[A+6|0]=(63&e)<<26|G>>>6,h=G,G=0,C[A+5|0]=G<<13|(1572864&s)>>>19|h<<2,s=2097151&D,D=Ig(H,N,-997805,-1)+s|0,y=f,y=s>>>0>D>>>0?y+1|0:y,G=(2097151&(s=e))<<11|h>>>21,s=(e>>=21)+y|0,s=(D=G+D|0)>>>0>>0?s+1|0:s,C[A+9|0]=(511&s)<<23|D>>>9,C[A+8|0]=(1&s)<<31|D>>>1,y=0,C[A+7|0]=y<<18|(2080768&h)>>>14|D<<7,y=2097151&k,h=Ig(H,N,136657,0)+y|0,e=f,e=y>>>0>h>>>0?e+1|0:e,k=(2097151&(y=s))<<11|D>>>21,y=e+(s=y>>21)|0,y=(h=k+h|0)>>>0>>0?y+1|0:y,C[A+12|0]=(4095&y)<<20|h>>>12,s=h,C[A+11|0]=(15&y)<<28|s>>>4,h=0,C[A+10|0]=h<<15|(1966080&D)>>>17|s<<4,h=2097151&F,D=Ig(H,N,-683901,-1)+h|0,e=f,e=h>>>0>D>>>0?e+1|0:e,h=y,y=e+(y>>=21)|0,y=(h=(J=D)+(D=(2097151&h)<<11|s>>>21)|0)>>>0>>0?y+1|0:y,C[A+14|0]=(127&y)<<25|h>>>7,D=0,C[A+13|0]=D<<12|(1048576&s)>>>20|h<<1,e=y>>21,s=(y=(2097151&y)<<11|h>>>21)>>>0>(D=y+(2097151&K)|0)>>>0?e+1|0:e,C[A+17|0]=(1023&s)<<22|D>>>10,C[A+16|0]=(3&s)<<30|D>>>2,y=0,C[A+15|0]=y<<17|(2064384&h)>>>15|D<<6,e=s>>21,e=(y=(2097151&s)<<11|D>>>21)>>>0>(s=y+(2097151&n)|0)>>>0?e+1|0:e,C[A+20|0]=(8191&e)<<19|s>>>13,C[A+19|0]=(31&e)<<27|s>>>5,h=(y=2097151&S)+(S=(2097151&e)<<11|s>>>21)|0,y=e>>21,y=h>>>0>>0?y+1|0:y,S=h,C[A+21|0]=h,n=0,C[A+18|0]=n<<14|(1835008&D)>>>18|s<<3,C[A+22|0]=(255&y)<<24|h>>>8,s=y>>21,s=(h=(D=(2097151&y)<<11|h>>>21)+(2097151&w)|0)>>>0>>0?s+1|0:s,C[A+25|0]=(2047&s)<<21|h>>>11,C[A+24|0]=(7&s)<<29|h>>>3,C[A+23|0]=31&((65535&y)<<16|S>>>16)|h<<5,e=s>>21,e=(y=(2097151&s)<<11|h>>>21)>>>0>(s=y+(2097151&p)|0)>>>0?e+1|0:e,C[A+27|0]=(63&e)<<26|s>>>6,D=0,C[A+26|0]=D<<13|(1572864&h)>>>19|s<<2,y=e,e>>=21,y=(h=(p=(2097151&y)<<11|s>>>21)+(D=2097151&l)|0)>>>0>>0?e+1|0:e,C[A+31|0]=(131071&y)<<15|h>>>17,e=h,C[A+30|0]=(511&y)<<23|e>>>9,h=0,C[A+28|0]=h<<18|(2080768&s)>>>14|e<<7,C[A+29|0]=p+l>>>1}function N(A,I,g){var C,B=0,Q=0,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0;for(s=E=s-2048|0,Ng(E+1024|0,I,1024),I=0;Q=i[(_=(o=E+1024|0)+(B=I<<3)|0)>>2],a=i[(c=A+B|0)>>2],c=i[_+4>>2]^i[c+4>>2],i[_>>2]=Q^a,i[_+4>>2]=c,c=i[(_=(Q=8|B)+o|0)>>2],a=i[(Q=A+Q|0)>>2],Q=i[_+4>>2]^i[Q+4>>2],i[_>>2]=a^c,i[_+4>>2]=Q,c=i[(_=(Q=16|B)+o|0)>>2],a=i[(Q=A+Q|0)>>2],Q=i[_+4>>2]^i[Q+4>>2],i[_>>2]=a^c,i[_+4>>2]=Q,Q=i[(B=(_=24|B)+o|0)>>2],c=i[(_=A+_|0)>>2],_=i[B+4>>2]^i[_+4>>2],i[B>>2]=Q^c,i[B+4>>2]=_,128!=(0|(I=I+4|0)););for(C=Ng(E,o,1024),A=0,I=0;E=i[(B=(o=I<<3)+C|0)>>2],Q=i[(_=g+o|0)>>2],_=i[B+4>>2]^i[_+4>>2],i[B>>2]=Q^E,i[B+4>>2]=_,_=i[(B=(E=8|o)+C|0)>>2],Q=i[(E=g+E|0)>>2],E=i[B+4>>2]^i[E+4>>2],i[B>>2]=Q^_,i[B+4>>2]=E,_=i[(B=(E=16|o)+C|0)>>2],Q=i[(E=g+E|0)>>2],E=i[B+4>>2]^i[E+4>>2],i[B>>2]=Q^_,i[B+4>>2]=E,E=i[(o=(B=24|o)+C|0)>>2],_=i[(B=g+B|0)>>2],B=i[o+4>>2]^i[B+4>>2],i[o>>2]=E^_,i[o+4>>2]=B,128!=(0|(I=I+4|0)););for(;c=(Q=i[56+(o=(C+1024|0)+(A<<7)|0)>>2])+(B=i[o+24>>2])|0,I=(t=i[o+60>>2])+(E=i[o+28>>2])|0,_=B>>>0>c>>>0?I+1|0:I,E=Ig(B<<1&-2,1&(E<<1|B>>>31),Q,0),I=f+_|0,_=(B=E+c|0)>>>0>>0?I+1|0:I,e=(c=UI(i[o+120>>2]^B,_^i[o+124>>2],32))+(E=i[o+88>>2])|0,I=(y=f)+(a=i[o+92>>2])|0,r=E>>>0>e>>>0?I+1|0:I,a=Ig(E<<1&-2,1&(a<<1|E>>>31),c,0),I=f+r|0,x=UI(Q^(E=a+e|0),t^(h=E>>>0>>0?I+1|0:I),40),I=_+(z=f)|0,Q=(a=B+x|0)>>>0>>0?I+1|0:I,B=Ig(x,0,B<<1&-2,1&(_<<1|B>>>31)),I=f+Q|0,H=UI(c^(F=B+a|0),y^(b=B>>>0>F>>>0?I+1|0:I),48),j=I=f,p=H,e=I,a=(c=i[o+40>>2])+(B=i[o+8>>2])|0,I=(Y=i[o+44>>2])+(_=i[o+12>>2])|0,Q=B>>>0>a>>>0?I+1|0:I,_=Ig(B<<1&-2,1&(_<<1|B>>>31),c,0),I=f+Q|0,Q=(B=_+a|0)>>>0<_>>>0?I+1|0:I,y=(a=UI(i[o+104>>2]^B,Q^i[o+108>>2],32))+(_=i[o+72>>2])|0,I=(w=f)+(r=i[o+76>>2])|0,t=_>>>0>y>>>0?I+1|0:I,r=Ig(_<<1&-2,1&(r<<1|_>>>31),a,0),I=f+t|0,r=UI(t=(_=r+y|0)^c,Y^(c=_>>>0>>0?I+1|0:I),40),I=Q+(n=f)|0,t=(y=B+r|0)>>>0>>0?I+1|0:I,Q=Ig(r,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+t|0,v=UI((B=Q+y|0)^a,w^(y=B>>>0>>0?I+1|0:I),48),I=c+(R=f)|0,Q=(a=_+v|0)>>>0<_>>>0?I+1|0:I,c=Ig(v,0,_<<1&-2,1&(c<<1|_>>>31)),I=f+Q|0,M=UI((_=c+a|0)^r,n^(Y=_>>>0>>0?I+1|0:I),1),L=I=f,k=M,t=I,w=(r=i[o+32>>2])+(Q=i[o>>2])|0,I=(J=i[o+36>>2])+(c=i[o+4>>2])|0,a=Q>>>0>w>>>0?I+1|0:I,c=Ig(Q<<1&-2,1&(c<<1|Q>>>31),r,0),I=f+a|0,a=(Q=c+w|0)>>>0>>0?I+1|0:I,D=(d=UI(i[o+96>>2]^Q,a^i[o+100>>2],32))+(c=i[(I=S=o- -64|0)>>2])|0,I=(q=f)+(w=i[I+4>>2])|0,n=c>>>0>D>>>0?I+1|0:I,w=Ig(c<<1&-2,1&(w<<1|c>>>31),d,0),I=f+n|0,J=UI((c=w+D|0)^r,J^(w=c>>>0>>0?I+1|0:I),40),I=a+(X=f)|0,r=(n=Q+J|0)>>>0>>0?I+1|0:I,a=Ig(J,0,Q<<1&-2,1&(a<<1|Q>>>31)),I=f+r|0,I=(n=(Q=a+n|0)>>>0>>0?I+1|0:I)+t|0,r=(a=Q+k|0)>>>0>>0?I+1|0:I,t=Ig(k,0,Q<<1&-2,1&(n<<1|Q>>>31)),I=f+r|0,m=UI((a=t+a|0)^p,(D=a>>>0>>0?I+1|0:I)^e,32),P=I=f,N=I,k=(p=i[o+48>>2])+(r=i[o+16>>2])|0,I=(l=i[o+52>>2])+(e=i[o+20>>2])|0,t=r>>>0>k>>>0?I+1|0:I,e=Ig(r<<1&-2,1&(e<<1|r>>>31),p,0),I=f+t|0,t=(r=e+k|0)>>>0>>0?I+1|0:I,G=(k=UI(i[o+112>>2]^r,t^i[o+116>>2],32))+(e=i[o+80>>2])|0,I=(u=f)+(K=i[o+84>>2])|0,U=e>>>0>G>>>0?I+1|0:I,K=Ig(e<<1&-2,1&(K<<1|e>>>31),k,0),I=f+U|0,K=UI(G=(e=K+G|0)^p,l^(p=e>>>0>>0?I+1|0:I),40),I=t+(l=f)|0,U=(G=r+K|0)>>>0>>0?I+1|0:I,t=Ig(K,0,r<<1&-2,1&(t<<1|r>>>31)),I=f+U|0,U=UI(G=(r=t+G|0)^k,u^(k=t>>>0>r>>>0?I+1|0:I),48),I=p+(u=f)|0,t=(G=e+U|0)>>>0>>0?I+1|0:I,p=Ig(U,0,e<<1&-2,1&(p<<1|e>>>31)),I=f+t|0,I=(p=(e=p+G|0)>>>0

>>0?I+1|0:I)+N|0,N=(t=e+m|0)>>>0>>0?I+1|0:I,G=Ig(m,0,e<<1&-2,1&(p<<1|e>>>31)),I=f+N|0,N=UI(N=(t=G+t|0)^M,L^(M=t>>>0>>0?I+1|0:I),40),I=D+(L=f)|0,G=(O=a+N|0)>>>0>>0?I+1|0:I,a=(D=Ig(N,0,a<<1&-2,1&(D<<1|a>>>31)))+O|0,I=f+G|0,i[o>>2]=a,I=a>>>0>>0?I+1|0:I,i[o+4>>2]=I,a=UI(a^m,I^P,48),i[o+120>>2]=a,I=f,i[o+124>>2]=I,I=I+M|0,D=(m=a+t|0)>>>0>>0?I+1|0:I,a=(t=Ig(a,0,t<<1&-2,1&(M<<1|t>>>31)))+m|0,I=f+D|0,i[o+80>>2]=a,I=a>>>0>>0?I+1|0:I,i[o+84>>2]=I,W=o,V=UI(a^N,I^L,1),i[W+40>>2]=V,i[o+44>>2]=f,I=h+j|0,a=(t=E+H|0)>>>0>>0?I+1|0:I,E=Ig(H,0,E<<1&-2,1&(h<<1|E>>>31)),I=f+a|0,a=I=E>>>0>(t=E+t|0)>>>0?I+1|0:I,E=I,e=UI(e^K,p^l,1),I=y+(p=f)|0,h=(D=B+e|0)>>>0>>0?I+1|0:I,B=(y=Ig(e,0,B<<1&-2,1&(y<<1|B>>>31)))+D|0,I=f+h|0,n=UI(Q^d,n^q,48),y=UI(n^B,(Q=B>>>0>>0?I+1|0:I)^(M=f),32),I=(H=f)+E|0,h=y>>>0>(D=y+t|0)>>>0?I+1|0:I,E=(I=D)+(D=Ig(t<<1&-2,1&(E<<1|t>>>31),y,0))|0,I=f+h|0,h=UI(N=E^e,p^(e=E>>>0>>0?I+1|0:I),40),I=Q+(D=f)|0,p=(d=B+h|0)>>>0>>0?I+1|0:I,B=Ig(h,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+p|0,B=UI((Q=B+d|0)^y,H^(I=B>>>0>Q>>>0?I+1|0:I),48),i[o+96>>2]=B,y=f,i[o+100>>2]=y,i[o+8>>2]=Q,i[o+12>>2]=I,I=e+y|0,Q=(y=B+E|0)>>>0>>0?I+1|0:I,E=Ig(B,0,E<<1&-2,1&(e<<1|E>>>31)),I=f+Q|0,W=o,V=UI((B=E+y|0)^h,(I=B>>>0>>0?I+1|0:I)^D,1),i[W+48>>2]=V,i[o+52>>2]=f,i[o+88>>2]=B,i[o+92>>2]=I,e=UI(t^x,a^z,1),I=k+(h=f)|0,E=(B=r+e|0)>>>0>>0?I+1|0:I,Q=Ig(e,0,r<<1&-2,1&(k<<1|r>>>31)),I=f+E|0,t=UI((B=Q+B|0)^v,R^(a=B>>>0>>0?I+1|0:I),32),y=I=f,Q=I,I=w+M|0,r=(E=c+n|0)>>>0>>0?I+1|0:I,c=Ig(n,0,c<<1&-2,1&(w<<1|c>>>31)),I=f+r|0,I=(c=(E=c+E|0)>>>0>>0?I+1|0:I)+Q|0,r=(Q=E+t|0)>>>0>>0?I+1|0:I,w=Ig(t,0,E<<1&-2,1&(c<<1|E>>>31)),I=f+r|0,e=UI((Q=w+Q|0)^e,h^(r=Q>>>0>>0?I+1|0:I),40),I=a+(w=f)|0,h=(n=B+e|0)>>>0>>0?I+1|0:I,B=(a=Ig(e,0,B<<1&-2,1&(a<<1|B>>>31)))+n|0,I=f+h|0,i[o+16>>2]=B,I=B>>>0>>0?I+1|0:I,i[o+20>>2]=I,B=UI(B^t,I^y,48),i[o+104>>2]=B,I=f,i[o+108>>2]=I,a=S,I=I+r|0,t=(h=B+Q|0)>>>0>>0?I+1|0:I,Q=Ig(B,0,Q<<1&-2,1&(r<<1|Q>>>31)),I=f+t|0,r=B=Q+h|0,t=I=B>>>0>>0?I+1|0:I,i[a>>2]=B,i[a+4>>2]=I,c=UI(E^J,c^X,1),I=(y=f)+b|0,E=(B=c+F|0)>>>0>>0?I+1|0:I,Q=Ig(F<<1&-2,1&(b<<1|F>>>31),c,0),I=f+E|0,a=UI((B=Q+B|0)^U,u^(Q=B>>>0>>0?I+1|0:I),32),I=Y+(F=f)|0,h=(E=a+_|0)>>>0<_>>>0?I+1|0:I,_=Ig(a,0,_<<1&-2,1&(Y<<1|_>>>31)),I=f+h|0,c=UI((E=_+E|0)^c,y^(_=E>>>0<_>>>0?I+1|0:I),40),I=Q+(b=f)|0,h=(y=B+c|0)>>>0>>0?I+1|0:I,Q=Ig(c,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+h|0,I=(B=Q+y|0)>>>0>>0?I+1|0:I,Q=B,B^=a,a=I,B=UI(B,F^I,48),I=_+(F=f)|0,h=(y=B+E|0)>>>0>>0?I+1|0:I,E=(_=Ig(B,0,E<<1&-2,1&(_<<1|E>>>31)))+y|0,I=f+h|0,i[o+72>>2]=E,I=E>>>0<_>>>0?I+1|0:I,i[o+76>>2]=I,i[o+112>>2]=B,i[o+116>>2]=F,i[o+24>>2]=Q,i[o+28>>2]=a,W=o,V=UI(r^e,t^w,1),i[W+56>>2]=V,i[o+60>>2]=f,W=o,V=UI(E^c,I^b,1),i[W+32>>2]=V,i[o+36>>2]=f,8!=(0|(A=A+1|0)););for(A=0;c=(Q=i[392+(o=(C+1024|0)+(A<<4)|0)>>2])+(B=i[o+136>>2])|0,I=(t=i[o+396>>2])+(E=i[o+140>>2])|0,_=B>>>0>c>>>0?I+1|0:I,E=Ig(B<<1&-2,1&(E<<1|B>>>31),Q,0),I=f+_|0,_=(B=E+c|0)>>>0>>0?I+1|0:I,e=(c=UI(i[o+904>>2]^B,_^i[o+908>>2],32))+(E=i[o+648>>2])|0,I=(y=f)+(a=i[o+652>>2])|0,r=E>>>0>e>>>0?I+1|0:I,a=Ig(E<<1&-2,1&(a<<1|E>>>31),c,0),I=f+r|0,x=UI(Q^(E=a+e|0),t^(h=E>>>0>>0?I+1|0:I),40),I=_+(G=f)|0,Q=(a=B+x|0)>>>0>>0?I+1|0:I,B=Ig(x,0,B<<1&-2,1&(_<<1|B>>>31)),I=f+Q|0,H=UI(c^(F=B+a|0),y^(b=B>>>0>F>>>0?I+1|0:I),48),z=I=f,p=H,e=I,a=(c=i[o+264>>2])+(B=i[o+8>>2])|0,I=(Y=i[o+268>>2])+(_=i[o+12>>2])|0,Q=B>>>0>a>>>0?I+1|0:I,_=Ig(B<<1&-2,1&(_<<1|B>>>31),c,0),I=f+Q|0,Q=(B=_+a|0)>>>0<_>>>0?I+1|0:I,y=(a=UI(i[o+776>>2]^B,Q^i[o+780>>2],32))+(_=i[o+520>>2])|0,I=(w=f)+(r=i[o+524>>2])|0,t=_>>>0>y>>>0?I+1|0:I,r=Ig(_<<1&-2,1&(r<<1|_>>>31),a,0),I=f+t|0,r=UI(t=(_=r+y|0)^c,Y^(c=_>>>0>>0?I+1|0:I),40),I=Q+(n=f)|0,t=(y=B+r|0)>>>0>>0?I+1|0:I,Q=Ig(r,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+t|0,v=UI((B=Q+y|0)^a,w^(y=B>>>0>>0?I+1|0:I),48),I=c+(j=f)|0,Q=(a=_+v|0)>>>0<_>>>0?I+1|0:I,c=Ig(v,0,_<<1&-2,1&(c<<1|_>>>31)),I=f+Q|0,M=UI((_=c+a|0)^r,n^(Y=_>>>0>>0?I+1|0:I),1),R=I=f,k=M,t=I,w=(r=i[o+256>>2])+(Q=i[o>>2])|0,I=(J=i[o+260>>2])+(c=i[o+4>>2])|0,a=Q>>>0>w>>>0?I+1|0:I,c=Ig(Q<<1&-2,1&(c<<1|Q>>>31),r,0),I=f+a|0,a=(Q=c+w|0)>>>0>>0?I+1|0:I,D=(d=UI(i[o+768>>2]^Q,a^i[o+772>>2],32))+(c=i[o+512>>2])|0,I=(L=f)+(w=i[o+516>>2])|0,n=c>>>0>D>>>0?I+1|0:I,w=Ig(c<<1&-2,1&(w<<1|c>>>31),d,0),I=f+n|0,J=UI((c=w+D|0)^r,J^(w=c>>>0>>0?I+1|0:I),40),I=a+(q=f)|0,r=(n=Q+J|0)>>>0>>0?I+1|0:I,a=Ig(J,0,Q<<1&-2,1&(a<<1|Q>>>31)),I=f+r|0,I=(n=(Q=a+n|0)>>>0>>0?I+1|0:I)+t|0,r=(a=Q+k|0)>>>0>>0?I+1|0:I,t=Ig(k,0,Q<<1&-2,1&(n<<1|Q>>>31)),I=f+r|0,m=UI((a=t+a|0)^p,(D=a>>>0>>0?I+1|0:I)^e,32),X=I=f,N=I,k=(p=i[o+384>>2])+(r=i[o+128>>2])|0,I=(P=i[o+388>>2])+(e=i[o+132>>2])|0,t=r>>>0>k>>>0?I+1|0:I,e=Ig(r<<1&-2,1&(e<<1|r>>>31),p,0),I=f+t|0,t=(r=e+k|0)>>>0>>0?I+1|0:I,S=(k=UI(i[o+896>>2]^r,t^i[o+900>>2],32))+(e=i[o+640>>2])|0,I=(l=f)+(K=i[o+644>>2])|0,U=e>>>0>S>>>0?I+1|0:I,K=Ig(e<<1&-2,1&(K<<1|e>>>31),k,0),I=f+U|0,K=UI(S=(e=K+S|0)^p,P^(p=e>>>0>>0?I+1|0:I),40),I=t+(P=f)|0,U=(S=r+K|0)>>>0>>0?I+1|0:I,t=Ig(K,0,r<<1&-2,1&(t<<1|r>>>31)),I=f+U|0,U=UI(S=(r=t+S|0)^k,l^(k=t>>>0>r>>>0?I+1|0:I),48),I=p+(l=f)|0,t=(S=e+U|0)>>>0>>0?I+1|0:I,p=Ig(U,0,e<<1&-2,1&(p<<1|e>>>31)),I=f+t|0,I=(p=(e=p+S|0)>>>0

>>0?I+1|0:I)+N|0,N=(t=e+m|0)>>>0>>0?I+1|0:I,S=Ig(m,0,e<<1&-2,1&(p<<1|e>>>31)),I=f+N|0,N=UI(N=(t=S+t|0)^M,R^(M=t>>>0>>0?I+1|0:I),40),I=D+(R=f)|0,S=(u=a+N|0)>>>0>>0?I+1|0:I,a=(D=Ig(N,0,a<<1&-2,1&(D<<1|a>>>31)))+u|0,I=f+S|0,i[o>>2]=a,I=a>>>0>>0?I+1|0:I,i[o+4>>2]=I,a=UI(a^m,I^X,48),i[o+904>>2]=a,I=f,i[o+908>>2]=I,I=I+M|0,D=(m=a+t|0)>>>0>>0?I+1|0:I,a=(t=Ig(a,0,t<<1&-2,1&(M<<1|t>>>31)))+m|0,I=f+D|0,i[o+640>>2]=a,I=a>>>0>>0?I+1|0:I,i[o+644>>2]=I,W=o,V=UI(a^N,I^R,1),i[W+264>>2]=V,i[o+268>>2]=f,I=h+z|0,a=(t=E+H|0)>>>0>>0?I+1|0:I,E=Ig(H,0,E<<1&-2,1&(h<<1|E>>>31)),I=f+a|0,a=I=E>>>0>(t=E+t|0)>>>0?I+1|0:I,E=I,e=UI(e^K,p^P,1),I=y+(p=f)|0,h=(D=B+e|0)>>>0>>0?I+1|0:I,B=(y=Ig(e,0,B<<1&-2,1&(y<<1|B>>>31)))+D|0,I=f+h|0,n=UI(Q^d,n^L,48),y=UI(n^B,(Q=B>>>0>>0?I+1|0:I)^(M=f),32),I=(H=f)+E|0,h=y>>>0>(D=y+t|0)>>>0?I+1|0:I,E=(I=D)+(D=Ig(t<<1&-2,1&(E<<1|t>>>31),y,0))|0,I=f+h|0,h=UI(S=E^e,p^(e=E>>>0>>0?I+1|0:I),40),I=Q+(D=f)|0,p=(d=B+h|0)>>>0>>0?I+1|0:I,B=Ig(h,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+p|0,B=UI((Q=B+d|0)^y,H^(I=B>>>0>Q>>>0?I+1|0:I),48),i[o+768>>2]=B,y=f,i[o+772>>2]=y,i[o+8>>2]=Q,i[o+12>>2]=I,I=e+y|0,Q=(y=B+E|0)>>>0>>0?I+1|0:I,E=Ig(B,0,E<<1&-2,1&(e<<1|E>>>31)),I=f+Q|0,W=o,V=UI((B=E+y|0)^h,(I=B>>>0>>0?I+1|0:I)^D,1),i[W+384>>2]=V,i[o+388>>2]=f,i[o+648>>2]=B,i[o+652>>2]=I,e=UI(t^x,a^G,1),I=k+(h=f)|0,E=(B=r+e|0)>>>0>>0?I+1|0:I,Q=Ig(e,0,r<<1&-2,1&(k<<1|r>>>31)),I=f+E|0,t=UI((B=Q+B|0)^v,j^(a=B>>>0>>0?I+1|0:I),32),y=I=f,Q=I,I=w+M|0,r=(E=c+n|0)>>>0>>0?I+1|0:I,c=Ig(n,0,c<<1&-2,1&(w<<1|c>>>31)),I=f+r|0,I=(c=(E=c+E|0)>>>0>>0?I+1|0:I)+Q|0,r=(Q=E+t|0)>>>0>>0?I+1|0:I,w=Ig(t,0,E<<1&-2,1&(c<<1|E>>>31)),I=f+r|0,e=UI((Q=w+Q|0)^e,h^(r=Q>>>0>>0?I+1|0:I),40),I=a+(w=f)|0,h=(n=B+e|0)>>>0>>0?I+1|0:I,B=(a=Ig(e,0,B<<1&-2,1&(a<<1|B>>>31)))+n|0,I=f+h|0,i[o+128>>2]=B,I=B>>>0>>0?I+1|0:I,i[o+132>>2]=I,B=UI(B^t,I^y,48),i[o+776>>2]=B,I=f,i[o+780>>2]=I,I=I+r|0,a=(t=B+Q|0)>>>0>>0?I+1|0:I,Q=Ig(B,0,Q<<1&-2,1&(r<<1|Q>>>31)),I=f+a|0,r=B=Q+t|0,t=I=B>>>0>>0?I+1|0:I,i[o+512>>2]=B,i[o+516>>2]=I,c=UI(E^J,c^q,1),I=(y=f)+b|0,E=(B=c+F|0)>>>0>>0?I+1|0:I,Q=Ig(F<<1&-2,1&(b<<1|F>>>31),c,0),I=f+E|0,a=UI((B=Q+B|0)^U,l^(Q=B>>>0>>0?I+1|0:I),32),I=Y+(F=f)|0,h=(E=a+_|0)>>>0<_>>>0?I+1|0:I,_=Ig(a,0,_<<1&-2,1&(Y<<1|_>>>31)),I=f+h|0,c=UI((E=_+E|0)^c,y^(_=E>>>0<_>>>0?I+1|0:I),40),I=Q+(b=f)|0,h=(y=B+c|0)>>>0>>0?I+1|0:I,Q=Ig(c,0,B<<1&-2,1&(Q<<1|B>>>31)),I=f+h|0,I=(B=Q+y|0)>>>0>>0?I+1|0:I,Q=B,B^=a,a=I,B=UI(B,F^I,48),I=_+(F=f)|0,h=(y=B+E|0)>>>0>>0?I+1|0:I,E=(_=Ig(B,0,E<<1&-2,1&(_<<1|E>>>31)))+y|0,I=f+h|0,i[o+520>>2]=E,I=E>>>0<_>>>0?I+1|0:I,i[o+524>>2]=I,i[o+896>>2]=B,i[o+900>>2]=F,i[o+136>>2]=Q,i[o+140>>2]=a,W=o,V=UI(r^e,t^w,1),i[W+392>>2]=V,i[o+396>>2]=f,W=o,V=UI(E^c,I^b,1),i[W+256>>2]=V,i[o+260>>2]=f,8!=(0|(A=A+1|0)););for(I=Ng(g,C,1024),A=0;B=i[(o=(g=A<<3)+I|0)>>2],Q=i[(_=(E=a=C+1024|0)+g|0)>>2],_=i[o+4>>2]^i[_+4>>2],i[o>>2]=B^Q,i[o+4>>2]=_,_=i[(o=(B=8|g)+I|0)>>2],E=i[(B=B+E|0)>>2],B=i[o+4>>2]^i[B+4>>2],i[o>>2]=E^_,i[o+4>>2]=B,E=i[(o=(B=16|g)+I|0)>>2],_=i[(B=B+a|0)>>2],B=i[o+4>>2]^i[B+4>>2],i[o>>2]=E^_,i[o+4>>2]=B,B=i[(g=(o=24|g)+I|0)>>2],E=i[(o=o+a|0)>>2],o=i[g+4>>2]^i[o+4>>2],i[g>>2]=B^E,i[g+4>>2]=o,128!=(0|(A=A+4|0)););s=C+2048|0}function G(A,I,g){var C,B,Q,E,a,_,c,t,r,e,y,h,D,f,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0;for(s=C=s-800|0,k=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,S=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,G=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,M=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,w=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,K=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,U=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,Q=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,E=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,a=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,_=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,c=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,t=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,r=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,n=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=g- -64|0,e=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i[I>>2]=33620224^e,i[g+56>>2]=1496785429,i[g+60>>2]=1652156816,i[(A=g+48|0)>>2]=33620224,i[A+4>>2]=218629379,i[g+40>>2]=1110511904,i[g+44>>2]=-584534669,i[(B=g+32|0)>>2]=1427652059,i[B+4>>2]=-248528275,y=n^e,i[g>>2]=y,i[g+92>>2]=-584534669^r,i[g+88>>2]=1110511904^t,i[g+84>>2]=-248528275^c,i[(n=g+80|0)>>2]=1427652059^_,i[g+76>>2]=1652156816^a,i[g+72>>2]=1496785429^E,i[g+68>>2]=218629379^Q,U^=r,i[g+28>>2]=U,K^=t,i[g+24>>2]=K,h=w^c,i[g+20>>2]=h,M^=_,i[(w=g+16|0)>>2]=M,G^=a,i[g+12>>2]=G,D=S^E,i[g+8>>2]=D,f=k^Q,i[g+4>>2]=f,S=0;k=i[n+12>>2],i[C+792>>2]=i[n+8>>2],i[C+796>>2]=k,k=i[n+4>>2],i[C+784>>2]=i[n>>2],i[C+788>>2]=k,k=i[I+12>>2],i[C+760>>2]=i[I+8>>2],i[C+764>>2]=k,k=i[I+4>>2],i[C+752>>2]=i[I>>2],i[C+756>>2]=k,k=i[n+12>>2],i[C+744>>2]=i[n+8>>2],i[C+748>>2]=k,k=i[n+4>>2],i[C+736>>2]=i[n>>2],i[C+740>>2]=k,AI(k=C+768|0,C+752|0,C+736|0),p=i[C+780>>2],i[n+8>>2]=i[C+776>>2],i[n+12>>2]=p,p=i[C+772>>2],i[n>>2]=i[C+768>>2],i[n+4>>2]=p,p=i[A+12>>2],i[C+728>>2]=i[A+8>>2],i[C+732>>2]=p,p=i[A+4>>2],i[C+720>>2]=i[A>>2],i[C+724>>2]=p,p=i[I+12>>2],i[C+712>>2]=i[I+8>>2],i[C+716>>2]=p,p=i[I+4>>2],i[C+704>>2]=i[I>>2],i[C+708>>2]=p,AI(k,C+720|0,C+704|0),p=i[C+780>>2],i[I+8>>2]=i[C+776>>2],i[I+12>>2]=p,p=i[C+772>>2],i[I>>2]=i[C+768>>2],i[I+4>>2]=p,p=i[B+12>>2],i[C+696>>2]=i[B+8>>2],i[C+700>>2]=p,p=i[B+4>>2],i[C+688>>2]=i[B>>2],i[C+692>>2]=p,p=i[A+12>>2],i[C+680>>2]=i[A+8>>2],i[C+684>>2]=p,p=i[A+4>>2],i[C+672>>2]=i[A>>2],i[C+676>>2]=p,AI(k,C+688|0,C+672|0),p=i[C+780>>2],i[A+8>>2]=i[C+776>>2],i[A+12>>2]=p,p=i[C+772>>2],i[A>>2]=i[C+768>>2],i[A+4>>2]=p,p=i[w+12>>2],i[C+664>>2]=i[w+8>>2],i[C+668>>2]=p,p=i[w+4>>2],i[C+656>>2]=i[w>>2],i[C+660>>2]=p,p=i[B+12>>2],i[C+648>>2]=i[B+8>>2],i[C+652>>2]=p,p=i[B+4>>2],i[C+640>>2]=i[B>>2],i[C+644>>2]=p,AI(k,C+656|0,C+640|0),p=i[C+780>>2],i[B+8>>2]=i[C+776>>2],i[B+12>>2]=p,p=i[C+772>>2],i[B>>2]=i[C+768>>2],i[B+4>>2]=p,p=i[g+12>>2],i[C+632>>2]=i[g+8>>2],i[C+636>>2]=p,p=i[g+4>>2],i[C+624>>2]=i[g>>2],i[C+628>>2]=p,p=i[w+12>>2],i[C+616>>2]=i[w+8>>2],i[C+620>>2]=p,p=i[w+4>>2],i[C+608>>2]=i[w>>2],i[C+612>>2]=p,AI(k,C+624|0,C+608|0),p=i[C+780>>2],i[w+8>>2]=i[C+776>>2],i[w+12>>2]=p,p=i[C+772>>2],i[w>>2]=i[C+768>>2],i[w+4>>2]=p,p=i[C+796>>2],i[C+600>>2]=i[C+792>>2],i[C+604>>2]=p,p=i[C+788>>2],i[C+592>>2]=i[C+784>>2],i[C+596>>2]=p,p=i[g+12>>2],i[C+584>>2]=i[g+8>>2],i[C+588>>2]=p,p=i[g+4>>2],i[C+576>>2]=i[g>>2],i[C+580>>2]=p,AI(k,C+592|0,C+576|0),p=i[C+768>>2],F=i[C+772>>2],N=i[C+776>>2],i[g+12>>2]=i[C+780>>2]^a,i[g+8>>2]=N^E,i[g+4>>2]=F^Q,i[g>>2]=p^e,p=i[n+12>>2],i[C+792>>2]=i[n+8>>2],i[C+796>>2]=p,p=i[n+4>>2],i[C+784>>2]=i[n>>2],i[C+788>>2]=p,p=i[I+12>>2],i[C+568>>2]=i[I+8>>2],i[C+572>>2]=p,p=i[I+4>>2],i[C+560>>2]=i[I>>2],i[C+564>>2]=p,p=i[n+12>>2],i[C+552>>2]=i[n+8>>2],i[C+556>>2]=p,p=i[n+4>>2],i[C+544>>2]=i[n>>2],i[C+548>>2]=p,AI(k,C+560|0,C+544|0),p=i[C+780>>2],i[n+8>>2]=i[C+776>>2],i[n+12>>2]=p,p=i[C+772>>2],i[n>>2]=i[C+768>>2],i[n+4>>2]=p,p=i[A+12>>2],i[C+536>>2]=i[A+8>>2],i[C+540>>2]=p,p=i[A+4>>2],i[C+528>>2]=i[A>>2],i[C+532>>2]=p,p=i[I+12>>2],i[C+520>>2]=i[I+8>>2],i[C+524>>2]=p,p=i[I+4>>2],i[C+512>>2]=i[I>>2],i[C+516>>2]=p,AI(k,C+528|0,C+512|0),p=i[C+780>>2],i[I+8>>2]=i[C+776>>2],i[I+12>>2]=p,p=i[C+772>>2],i[I>>2]=i[C+768>>2],i[I+4>>2]=p,p=i[B+12>>2],i[C+504>>2]=i[B+8>>2],i[C+508>>2]=p,p=i[B+4>>2],i[C+496>>2]=i[B>>2],i[C+500>>2]=p,p=i[A+12>>2],i[C+488>>2]=i[A+8>>2],i[C+492>>2]=p,p=i[A+4>>2],i[C+480>>2]=i[A>>2],i[C+484>>2]=p,AI(k,C+496|0,C+480|0),p=i[C+780>>2],i[A+8>>2]=i[C+776>>2],i[A+12>>2]=p,p=i[C+772>>2],i[A>>2]=i[C+768>>2],i[A+4>>2]=p,p=i[w+12>>2],i[C+472>>2]=i[w+8>>2],i[C+476>>2]=p,p=i[w+4>>2],i[C+464>>2]=i[w>>2],i[C+468>>2]=p,p=i[B+12>>2],i[C+456>>2]=i[B+8>>2],i[C+460>>2]=p,p=i[B+4>>2],i[C+448>>2]=i[B>>2],i[C+452>>2]=p,AI(k,C+464|0,C+448|0),p=i[C+780>>2],i[B+8>>2]=i[C+776>>2],i[B+12>>2]=p,p=i[C+772>>2],i[B>>2]=i[C+768>>2],i[B+4>>2]=p,p=i[g+12>>2],i[C+440>>2]=i[g+8>>2],i[C+444>>2]=p,p=i[g+4>>2],i[C+432>>2]=i[g>>2],i[C+436>>2]=p,p=i[w+12>>2],i[C+424>>2]=i[w+8>>2],i[C+428>>2]=p,p=i[w+4>>2],i[C+416>>2]=i[w>>2],i[C+420>>2]=p,AI(k,C+432|0,C+416|0),p=i[C+780>>2],i[w+8>>2]=i[C+776>>2],i[w+12>>2]=p,p=i[C+772>>2],i[w>>2]=i[C+768>>2],i[w+4>>2]=p,p=i[C+796>>2],i[C+408>>2]=i[C+792>>2],i[C+412>>2]=p,p=i[C+788>>2],i[C+400>>2]=i[C+784>>2],i[C+404>>2]=p,p=i[g+12>>2],i[C+392>>2]=i[g+8>>2],i[C+396>>2]=p,p=i[g+4>>2],i[C+384>>2]=i[g>>2],i[C+388>>2]=p,AI(k,C+400|0,C+384|0),p=i[C+768>>2],F=i[C+772>>2],N=i[C+776>>2],i[g+12>>2]=i[C+780>>2]^r,i[g+8>>2]=N^t,i[g+4>>2]=F^c,i[g>>2]=p^_,p=i[n+12>>2],i[C+792>>2]=i[n+8>>2],i[C+796>>2]=p,p=i[n+4>>2],i[C+784>>2]=i[n>>2],i[C+788>>2]=p,p=i[I+12>>2],i[C+376>>2]=i[I+8>>2],i[C+380>>2]=p,p=i[I+4>>2],i[C+368>>2]=i[I>>2],i[C+372>>2]=p,p=i[n+12>>2],i[C+360>>2]=i[n+8>>2],i[C+364>>2]=p,p=i[n+4>>2],i[C+352>>2]=i[n>>2],i[C+356>>2]=p,AI(k,C+368|0,C+352|0),p=i[C+780>>2],i[n+8>>2]=i[C+776>>2],i[n+12>>2]=p,p=i[C+772>>2],i[n>>2]=i[C+768>>2],i[n+4>>2]=p,p=i[A+12>>2],i[C+344>>2]=i[A+8>>2],i[C+348>>2]=p,p=i[A+4>>2],i[C+336>>2]=i[A>>2],i[C+340>>2]=p,p=i[I+12>>2],i[C+328>>2]=i[I+8>>2],i[C+332>>2]=p,p=i[I+4>>2],i[C+320>>2]=i[I>>2],i[C+324>>2]=p,AI(k,C+336|0,C+320|0),p=i[C+780>>2],i[I+8>>2]=i[C+776>>2],i[I+12>>2]=p,p=i[C+772>>2],i[I>>2]=i[C+768>>2],i[I+4>>2]=p,p=i[B+12>>2],i[C+312>>2]=i[B+8>>2],i[C+316>>2]=p,p=i[B+4>>2],i[C+304>>2]=i[B>>2],i[C+308>>2]=p,p=i[A+12>>2],i[C+296>>2]=i[A+8>>2],i[C+300>>2]=p,p=i[A+4>>2],i[C+288>>2]=i[A>>2],i[C+292>>2]=p,AI(k,C+304|0,C+288|0),p=i[C+780>>2],i[A+8>>2]=i[C+776>>2],i[A+12>>2]=p,p=i[C+772>>2],i[A>>2]=i[C+768>>2],i[A+4>>2]=p,p=i[w+12>>2],i[C+280>>2]=i[w+8>>2],i[C+284>>2]=p,p=i[w+4>>2],i[C+272>>2]=i[w>>2],i[C+276>>2]=p,p=i[B+12>>2],i[C+264>>2]=i[B+8>>2],i[C+268>>2]=p,p=i[B+4>>2],i[C+256>>2]=i[B>>2],i[C+260>>2]=p,AI(k,C+272|0,C+256|0),p=i[C+780>>2],i[B+8>>2]=i[C+776>>2],i[B+12>>2]=p,p=i[C+772>>2],i[B>>2]=i[C+768>>2],i[B+4>>2]=p,p=i[g+12>>2],i[C+248>>2]=i[g+8>>2],i[C+252>>2]=p,p=i[g+4>>2],i[C+240>>2]=i[g>>2],i[C+244>>2]=p,p=i[w+12>>2],i[C+232>>2]=i[w+8>>2],i[C+236>>2]=p,p=i[w+4>>2],i[C+224>>2]=i[w>>2],i[C+228>>2]=p,AI(k,C+240|0,C+224|0),p=i[C+780>>2],i[w+8>>2]=i[C+776>>2],i[w+12>>2]=p,p=i[C+772>>2],i[w>>2]=i[C+768>>2],i[w+4>>2]=p,p=i[C+796>>2],i[C+216>>2]=i[C+792>>2],i[C+220>>2]=p,p=i[C+788>>2],i[C+208>>2]=i[C+784>>2],i[C+212>>2]=p,p=i[g+12>>2],i[C+200>>2]=i[g+8>>2],i[C+204>>2]=p,p=i[g+4>>2],i[C+192>>2]=i[g>>2],i[C+196>>2]=p,AI(k,C+208|0,C+192|0),p=i[C+768>>2],F=i[C+772>>2],N=i[C+776>>2],i[g+12>>2]=G^i[C+780>>2],i[g+8>>2]=N^D,i[g+4>>2]=F^f,i[g>>2]=p^y,p=i[n+12>>2],i[C+792>>2]=i[n+8>>2],i[C+796>>2]=p,p=i[n+4>>2],i[C+784>>2]=i[n>>2],i[C+788>>2]=p,p=i[I+12>>2],i[C+184>>2]=i[I+8>>2],i[C+188>>2]=p,p=i[I+4>>2],i[C+176>>2]=i[I>>2],i[C+180>>2]=p,p=i[n+12>>2],i[C+168>>2]=i[n+8>>2],i[C+172>>2]=p,p=i[n+4>>2],i[C+160>>2]=i[n>>2],i[C+164>>2]=p,AI(k,C+176|0,C+160|0),p=i[C+780>>2],i[n+8>>2]=i[C+776>>2],i[n+12>>2]=p,p=i[C+772>>2],i[n>>2]=i[C+768>>2],i[n+4>>2]=p,p=i[A+12>>2],i[C+152>>2]=i[A+8>>2],i[C+156>>2]=p,p=i[A+4>>2],i[C+144>>2]=i[A>>2],i[C+148>>2]=p,p=i[I+12>>2],i[C+136>>2]=i[I+8>>2],i[C+140>>2]=p,p=i[I+4>>2],i[C+128>>2]=i[I>>2],i[C+132>>2]=p,AI(k,C+144|0,C+128|0),p=i[C+780>>2],i[I+8>>2]=i[C+776>>2],i[I+12>>2]=p,p=i[C+772>>2],i[I>>2]=i[C+768>>2],i[I+4>>2]=p,p=i[B+12>>2],i[C+120>>2]=i[B+8>>2],i[C+124>>2]=p,p=i[B+4>>2],i[C+112>>2]=i[B>>2],i[C+116>>2]=p,p=i[A+12>>2],i[C+104>>2]=i[A+8>>2],i[C+108>>2]=p,p=i[A+4>>2],i[C+96>>2]=i[A>>2],i[C+100>>2]=p,AI(k,C+112|0,C+96|0),p=i[C+780>>2],i[A+8>>2]=i[C+776>>2],i[A+12>>2]=p,p=i[C+772>>2],i[A>>2]=i[C+768>>2],i[A+4>>2]=p,p=i[w+12>>2],i[C+88>>2]=i[w+8>>2],i[C+92>>2]=p,p=i[w+4>>2],i[C+80>>2]=i[w>>2],i[C+84>>2]=p,p=i[B+12>>2],i[C+72>>2]=i[B+8>>2],i[C+76>>2]=p,p=i[B+4>>2],i[C+64>>2]=i[B>>2],i[C+68>>2]=p,AI(k,C+80|0,C- -64|0),p=i[C+780>>2],i[B+8>>2]=i[C+776>>2],i[B+12>>2]=p,p=i[C+772>>2],i[B>>2]=i[C+768>>2],i[B+4>>2]=p,p=i[g+12>>2],i[C+56>>2]=i[g+8>>2],i[C+60>>2]=p,p=i[g+4>>2],i[C+48>>2]=i[g>>2],i[C+52>>2]=p,p=i[w+12>>2],i[C+40>>2]=i[w+8>>2],i[C+44>>2]=p,p=i[w+4>>2],i[C+32>>2]=i[w>>2],i[C+36>>2]=p,AI(k,C+48|0,C+32|0),p=i[C+780>>2],i[w+8>>2]=i[C+776>>2],i[w+12>>2]=p,p=i[C+772>>2],i[w>>2]=i[C+768>>2],i[w+4>>2]=p,p=i[C+796>>2],i[C+24>>2]=i[C+792>>2],i[C+28>>2]=p,p=i[C+788>>2],i[C+16>>2]=i[C+784>>2],i[C+20>>2]=p,p=i[g+12>>2],i[C+8>>2]=i[g+8>>2],i[C+12>>2]=p,p=i[g+4>>2],i[C>>2]=i[g>>2],i[C+4>>2]=p,AI(k,C+16|0,C),k=i[C+768>>2],p=i[C+772>>2],F=i[C+776>>2],i[g+12>>2]=U^i[C+780>>2],i[g+8>>2]=F^K,i[g+4>>2]=p^h,i[g>>2]=k^M,4!=(0|(S=S+1|0)););s=C+800|0}function M(A,I){var g,B,E,a,_,c,t,r,e,y,h,D,p,w,n,k,F,S,N,G,M,K,U=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0;for(s=g=s-48|0,Y=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,H=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,C[A+24|0]=H,C[A+25|0]=H>>>8,C[A+26|0]=H>>>16,C[A+27|0]=H>>>24,C[A+28|0]=Y,C[A+29|0]=Y>>>8,C[A+30|0]=Y>>>16,C[A+31|0]=Y>>>24,Y=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,H=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,C[0|A]=H,C[A+1|0]=H>>>8,C[A+2|0]=H>>>16,C[A+3|0]=H>>>24,C[A+4|0]=Y,C[A+5|0]=Y>>>8,C[A+6|0]=Y>>>16,C[A+7|0]=Y>>>24,Y=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,H=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,C[A+16|0]=H,C[A+17|0]=H>>>8,C[A+18|0]=H>>>16,C[A+19|0]=H>>>24,C[A+20|0]=Y,C[A+21|0]=Y>>>8,C[A+22|0]=Y>>>16,C[A+23|0]=Y>>>24,H=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,I=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,C[A+12|0]=H,C[A+13|0]=H>>>8,C[A+14|0]=H>>>16,C[A+15|0]=H>>>24,I=o[A+31|0],C[A+31|0]=127&I,fA(g,A),y=128&I,s=I=s-960|0,v(H=I+304|0,g),i[I+304>>2]=i[I+304>>2]+1,LA(H,H),Y=Ig(H=i[I+340>>2],H>>31,486662,0),H=f,l=(P=Y+16777216|0)>>>0<16777216?H+1|0:H,x=Y-(-33554432&P)|0,U=Ig(H=i[I+336>>2],H>>31,486662,0),Y=f,J=Ig(H=i[I+332>>2],H>>31,486662,0),H=f,u=U,U=(U=(H=(m=J+16777216|0)>>>0<16777216?H+1|0:H)>>25)+Y|0,H=(H=(33554431&H)<<7|m>>>25)>>>0>(d=u+H|0)>>>0?U+1|0:U,B=((67108863&(H=(Y=d+33554432|0)>>>0<33554432?H+1|0:H))<<6|Y>>>26)+x|0,i[I+292>>2]=0-B,W=d-(-67108864&Y)|0,i[I+288>>2]=0-W,x=J-(-33554432&m)|0,Y=Ig(H=i[I+328>>2],H>>31,486662,0),H=f,m=Ig(U=i[I+324>>2],U>>31,486662,0),U=f,u=Y,H=H+(Y=(U=(d=m+16777216|0)>>>0<16777216?U+1|0:U)>>25)|0,H=(U=u+(J=(33554431&U)<<7|d>>>25)|0)>>>0>>0?H+1|0:H,E=((67108863&(H=(Y=U+33554432|0)>>>0<33554432?H+1|0:H))<<6|Y>>>26)+x|0,i[I+284>>2]=0-E,a=U-(-67108864&Y)|0,i[I+280>>2]=0-a,x=m-(-33554432&d)|0,U=Ig(H=i[I+320>>2],H>>31,486662,0),H=f,m=Ig(Y=i[I+316>>2],Y>>31,486662,0),Y=f,u=U,H=(U=(Y=(d=m+16777216|0)>>>0<16777216?Y+1|0:Y)>>25)+H|0,U=H=(Y=u+(J=(33554431&Y)<<7|d>>>25)|0)>>>0>>0?H+1|0:H,_=((67108863&(U=(J=Y+33554432|0)>>>0<33554432?U+1|0:U))<<6|J>>>26)+x|0,i[I+276>>2]=0-_,c=Y-(-67108864&J)|0,i[I+272>>2]=0-c,u=m-(-33554432&d)|0,H=Ig(H=i[I+312>>2],H>>31,486662,0),x=f,J=Ig(Y=i[I+308>>2],Y>>31,486662,0),U=f,Y=(33554431&(U=(m=J+16777216|0)>>>0<16777216?U+1|0:U))<<7|m>>>25,U=(U>>25)+x|0,Y=Y>>>0>(d=Y+H|0)>>>0?U+1|0:U,t=((67108863&(Y=(H=d+33554432|0)>>>0<33554432?Y+1|0:Y))<<6|H>>>26)+u|0,i[I+268>>2]=0-t,r=d-(-67108864&H)|0,i[I+264>>2]=0-r,d=J-(-33554432&m)|0,Y=Ig((33554431&l)<<7|P>>>25,l>>25,19,0),H=f,J=Y,Y=Ig(U=i[I+304>>2],U>>31,486662,0),H=f+H|0,Y=(U=J+Y|0)>>>0>>0?H+1|0:H,e=((67108863&(Y=(H=U+33554432|0)>>>0<33554432?Y+1|0:Y))<<6|H>>>26)+d|0,i[I+260>>2]=0-e,L=U-(-67108864&H)|0,i[I+256>>2]=0-L,R(Y=I+208|0,H=I+256|0),b(I+160|0,H,Y),h=i[I+196>>2],D=i[I+160>>2],q=i[I+208>>2],p=i[I+164>>2],w=i[I+168>>2],z=i[I+212>>2],j=i[I+216>>2],n=i[I+172>>2],k=i[I+176>>2],X=i[I+220>>2],O=i[I+224>>2],F=i[I+180>>2],S=i[I+184>>2],u=i[I+228>>2],x=i[I+232>>2],N=i[I+188>>2],G=i[I+192>>2],Y=Ig(H=i[I+244>>2],H>>31,486662,0),H=f,l=(P=Y+16777216|0)>>>0<16777216?H+1|0:H,M=Y-(-33554432&P)|0,H=Ig(H=i[I+240>>2],H>>31,486662,0),K=f,J=Ig(Y=i[I+236>>2],Y>>31,486662,0),U=f,Y=H,H=(33554431&(U=(m=J+16777216|0)>>>0<16777216?U+1|0:U))<<7|m>>>25,U=(U>>25)+K|0,H=H>>>0>(d=Y+H|0)>>>0?U+1|0:U,U=((67108863&(H=(Y=d+33554432|0)>>>0<33554432?H+1|0:H))<<6|Y>>>26)+M|0,i[I+244>>2]=U,i[I+388>>2]=U+(h-B|0),H=d-(-67108864&Y)|0,i[I+240>>2]=H,i[I+384>>2]=H+(G-W|0),W=J-(-33554432&m)|0,H=Ig(x,x>>31,486662,0),J=f,m=Ig(u,u>>31,486662,0),Y=f,u=H,H=(H=(Y=(d=m+16777216|0)>>>0<16777216?Y+1|0:Y)>>25)+J|0,U=H=(U=(33554431&Y)<<7|d>>>25)>>>0>(Y=u+U|0)>>>0?H+1|0:H,J=((67108863&(U=(J=Y+33554432|0)>>>0<33554432?U+1|0:U))<<6|(H=J)>>>26)+W|0,i[I+236>>2]=J,i[I+380>>2]=J+(N-E|0),H=Y-(-67108864&H)|0,i[I+232>>2]=H,i[I+376>>2]=H+(S-a|0),x=m-(-33554432&d)|0,U=Ig(O,O>>31,486662,0),Y=f,J=Ig(X,X>>31,486662,0),H=f,u=U,U=(U=(H=(m=J+16777216|0)>>>0<16777216?H+1|0:H)>>25)+Y|0,Y=(H=(33554431&H)<<7|m>>>25)>>>0>(d=u+H|0)>>>0?U+1|0:U,U=((67108863&(Y=(H=d+33554432|0)>>>0<33554432?Y+1|0:Y))<<6|H>>>26)+x|0,i[I+228>>2]=U,i[I+372>>2]=U+(F-_|0),H=d-(-67108864&H)|0,i[I+224>>2]=H,i[I+368>>2]=H+(k-c|0),x=J-(-33554432&m)|0,H=Ig(j,j>>31,486662,0),Y=f,m=Ig(z,z>>31,486662,0),U=f,u=H,Y=(H=(U=(d=m+16777216|0)>>>0<16777216?U+1|0:U)>>25)+Y|0,H=Y=(U=u+(J=(33554431&U)<<7|d>>>25)|0)>>>0>>0?Y+1|0:Y,J=((67108863&(H=(J=U+33554432|0)>>>0<33554432?H+1|0:H))<<6|(Y=J)>>>26)+x|0,i[I+220>>2]=J,i[I+364>>2]=J+(n-t|0),H=U-(-67108864&Y)|0,i[I+216>>2]=H,i[I+360>>2]=H+(w-r|0),d=m-(-33554432&d)|0,Y=Ig((33554431&l)<<7|P>>>25,l>>25,19,0),H=f,U=Y,Y=Ig(q,q>>31,486662,0),H=f+H|0,H=(U=U+Y|0)>>>0>>0?H+1|0:H,l=((67108863&(H=(Y=U+33554432|0)>>>0<33554432?H+1|0:H))<<6|Y>>>26)+d|0,i[I+212>>2]=l,i[I+356>>2]=l+(p-e|0),H=U-(-67108864&Y)|0,i[I+208>>2]=H,i[I+352>>2]=H+(D-L|0),b(H=I+624|0,Y=I+352|0,Y),b(I,Y,H),R(Y=I+784|0,I),R(Y,Y),b(H=I+912|0,I,Y),R(Y=I+576|0,H),R(Y,Y),R(Y,Y),R(Y,Y),b(U=I+528|0,H,Y),R(U,U),R(U,U),b(U,U,I),H=i[I+564>>2],i[I+512>>2]=i[I+560>>2],i[I+516>>2]=H,H=i[I+556>>2],i[I+504>>2]=i[I+552>>2],i[I+508>>2]=H,H=i[I+548>>2],i[I+496>>2]=i[I+544>>2],i[I+500>>2]=H,H=i[I+540>>2],i[I+488>>2]=i[I+536>>2],i[I+492>>2]=H,H=i[I+532>>2],i[I+480>>2]=i[I+528>>2],i[I+484>>2]=H,R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),b(U,U,H=I+480|0),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),b(U,U,H),H=i[I+564>>2],i[I+464>>2]=i[I+560>>2],i[I+468>>2]=H,H=i[I+556>>2],i[I+456>>2]=i[I+552>>2],i[I+460>>2]=H,H=i[I+548>>2],i[I+448>>2]=i[I+544>>2],i[I+452>>2]=H,H=i[I+540>>2],i[I+440>>2]=i[I+536>>2],i[I+444>>2]=H,H=i[I+532>>2],i[I+432>>2]=i[I+528>>2],i[I+436>>2]=H,R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),b(U,U,Y=I+432|0),H=i[I+564>>2],i[I+464>>2]=i[I+560>>2],i[I+468>>2]=H,H=i[I+556>>2],i[I+456>>2]=i[I+552>>2],i[I+460>>2]=H,H=i[I+548>>2],i[I+448>>2]=i[I+544>>2],i[I+452>>2]=H,H=i[I+540>>2],i[I+440>>2]=i[I+536>>2],i[I+444>>2]=H,H=i[I+532>>2],i[I+432>>2]=i[I+528>>2],i[I+436>>2]=H,R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),R(U,U),b(U,U,Y),H=i[I+564>>2],i[I+464>>2]=i[I+560>>2],i[I+468>>2]=H,H=i[I+556>>2],i[I+456>>2]=i[I+552>>2],i[I+460>>2]=H,H=i[I+548>>2],i[I+448>>2]=i[I+544>>2],i[I+452>>2]=H,H=i[I+540>>2],i[I+440>>2]=i[I+536>>2],i[I+444>>2]=H,H=i[I+532>>2],i[I+432>>2]=i[I+528>>2],i[I+436>>2]=H;R(H=I+528|0,H),120!=(0|(V=V+1|0)););b(H,H,I+432|0),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),R(H,H),b(H,H,I+480|0),R(H,H),R(H,H),R(H,H),b(H,H,I),R(H,H),QI(I+400|0,H),q=i[I+256>>2],z=i[I+260>>2],j=i[I+264>>2],X=i[I+268>>2],O=i[I+272>>2],d=i[I+276>>2],l=i[I+280>>2],U=i[I+284>>2],Y=i[I+288>>2],u=(L=0-(1&C[I+401|0])|0)&(0-(H=i[I+292>>2])^H)^H,i[I+660>>2]=u,x=Y^L&(Y^0-Y),i[I+656>>2]=x,P=U^L&(U^0-U),i[I+652>>2]=P,J=l^L&(l^0-l),i[I+648>>2]=J,m=d^L&(d^0-d),i[I+644>>2]=m,d=O^L&(O^0-O),i[I+640>>2]=d,l=X^L&(X^0-X),i[I+636>>2]=l,U=j^L&(j^0-j),i[I+632>>2]=U,Y=z^L&(z^0-z),i[I+628>>2]=Y,H=(q^L&(q^0-q))-(486662&L)|0,i[I+624>>2]=H+1,i[I+820>>2]=u,i[I+816>>2]=x,i[I+812>>2]=P,i[I+808>>2]=J,i[I+804>>2]=m,i[I+800>>2]=d,i[I+796>>2]=l,i[I+792>>2]=U,i[I+788>>2]=Y,i[I+784>>2]=H-1,LA(I,I+624|0),b(H=I+912|0,I+784|0,I),QI(A,H),C[A+31|0]=o[A+31|0]|y,MA(I,A)&&(DB(),Q()),H=i[I+36>>2],i[I+816>>2]=i[I+32>>2],i[I+820>>2]=H,H=i[I+28>>2],i[I+808>>2]=i[I+24>>2],i[I+812>>2]=H,H=i[I+20>>2],i[I+800>>2]=i[I+16>>2],i[I+804>>2]=H,H=i[I+12>>2],i[I+792>>2]=i[I+8>>2],i[I+796>>2]=H,H=i[I+52>>2],i[I+832>>2]=i[I+48>>2],i[I+836>>2]=H,H=i[I+60>>2],i[I+840>>2]=i[I+56>>2],i[I+844>>2]=H,H=i[4+(Y=I- -64|0)>>2],i[I+848>>2]=i[Y>>2],i[I+852>>2]=H,H=i[I+76>>2],i[I+856>>2]=i[I+72>>2],i[I+860>>2]=H,H=i[I+4>>2],i[I+784>>2]=i[I>>2],i[I+788>>2]=H,H=i[I+44>>2],i[I+824>>2]=i[I+40>>2],i[I+828>>2]=H,H=i[I+116>>2],i[I+896>>2]=i[I+112>>2],i[I+900>>2]=H,H=i[I+108>>2],i[I+888>>2]=i[I+104>>2],i[I+892>>2]=H,H=i[I+100>>2],i[I+880>>2]=i[I+96>>2],i[I+884>>2]=H,H=i[I+92>>2],i[I+872>>2]=i[I+88>>2],i[I+876>>2]=H,H=i[I+84>>2],i[I+864>>2]=i[I+80>>2],i[I+868>>2]=H,KA(J=I+624|0,m=I+784|0),b(m,J,d=I+744|0),b(Y=I+824|0,U=I+664|0,l=I+704|0),b(H=I+864|0,l,d),KA(J,m),b(m,J,d),b(Y,U,l),b(H,l,d),KA(J,m),b(I,J,d),b(Y=I+40|0,U,l),b(H=I+80|0,l,d),b(I+120|0,J,U),LA(J,H),b(m,I,J),b(H=I+912|0,Y,J),QI(A,H),QI(I+576|0,m),C[A+31|0]=o[A+31|0]^o[I+576|0]<<7,s=I+960|0,s=g+48|0}function K(A){var I,g=0,C=0,B=0,Q=0,a=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0;s=I=s-16|0;A:{I:{g:{C:{B:{Q:{i:{o:{E:{a:{if((A|=0)>>>0<=244){if(3&(g=(Q=i[9405])>>>(A=(t=A>>>0<11?16:A+11&504)>>>3|0)|0)){A=37660+(g=(C=A+(1&~g)|0)<<3)|0,g=i[g+37668>>2],(0|A)!=(0|(B=i[g+8>>2]))?(i[B+12>>2]=A,i[A+8>>2]=B):(h=37620,D=Lg(-2,C)&Q,i[h>>2]=D),A=g+8|0,C<<=3,i[g+4>>2]=3|C,i[4+(g=g+C|0)>>2]=1|i[g+4>>2];break A}if((r=i[9407])>>>0>=t>>>0)break a;if(g){g=37660+(C=(A=FC((0-(C=2<>2],(0|g)!=(0|(B=i[C+8>>2]))?(i[B+12>>2]=g,i[g+8>>2]=B):(Q=Lg(-2,A)&Q,i[9405]=Q),i[C+4>>2]=3|t,a=(A<<=3)-t|0,i[4+(c=C+t|0)>>2]=1|a,i[A+C>>2]=a,r&&(A=37660+(-8&r)|0,B=i[9410],(g=1<<(r>>>3))&Q?g=i[A+8>>2]:(i[9405]=g|Q,g=A),i[A+8>>2]=B,i[g+12>>2]=B,i[B+12>>2]=A,i[B+8>>2]=g),A=C+8|0,i[9410]=c,i[9407]=a;break A}if(!(y=i[9406]))break a;for(C=i[37924+(FC(y)<<2)>>2],a=(-8&i[C+4>>2])-t|0,g=C;(A=i[g+16>>2])||(A=i[g+20>>2]);)a=(g=(B=(-8&i[A+4>>2])-t|0)>>>0>>0)?B:a,C=g?A:C,g=A;if(e=i[C+24>>2],(0|C)!=(0|(A=i[C+12>>2]))){g=i[C+8>>2],i[g+12>>2]=A,i[A+8>>2]=g;break I}if(g=i[C+20>>2])B=C+20|0;else{if(!(g=i[C+16>>2]))break E;B=C+16|0}for(;c=B,B=(A=g)+20|0,(g=i[A+20>>2])||(B=A+16|0,g=i[A+16>>2]););i[c>>2]=0;break I}if(t=-1,!(A>>>0>4294967231)&&(t=-8&(g=A+11|0),c=i[9406])){r=31,a=0-t|0,A>>>0<=16777204&&(r=62+((t>>>38-(A=_(g>>>8|0))&1)-(A<<1)|0)|0);_:{c:{if(g=i[37924+(r<<2)>>2])for(A=0,C=t<<(31!=(0|r)?25-(r>>>1|0):0);;){if(!((Q=(-8&i[g+4>>2])-t|0)>>>0>=a>>>0||(B=g,a=Q))){a=0,A=g;break c}if(Q=i[g+20>>2],g=i[16+((C>>>29&4)+g|0)>>2],A=Q?(0|Q)==(0|g)?A:Q:A,C<<=1,!g)break}else A=0;if(!(A|B)){if(B=0,!(A=(0-(A=2<>2]}if(!A)break _}for(;a=(g=(C=(-8&i[A+4>>2])-t|0)>>>0>>0)?C:a,B=g?A:B,A=(g=i[A+16>>2])||i[A+20>>2];);}if(!(!B|i[9407]-t>>>0<=a>>>0)){if(r=i[B+24>>2],(0|B)!=(0|(A=i[B+12>>2]))){g=i[B+8>>2],i[g+12>>2]=A,i[A+8>>2]=g;break g}if(g=i[B+20>>2])C=B+20|0;else{if(!(g=i[B+16>>2]))break o;C=B+16|0}for(;Q=C,C=(A=g)+20|0,(g=i[A+20>>2])||(C=A+16|0,g=i[A+16>>2]););i[Q>>2]=0;break g}}}if((B=i[9407])>>>0>=t>>>0){A=i[9410],(g=B-t|0)>>>0>=16?(i[4+(C=A+t|0)>>2]=1|g,i[A+B>>2]=g,i[A+4>>2]=3|t):(i[A+4>>2]=3|B,i[4+(g=A+B|0)>>2]=1|i[g+4>>2],C=0,g=0),i[9407]=g,i[9410]=C,A=A+8|0;break A}if((C=i[9408])>>>0>t>>>0){g=C-t|0,i[9408]=g,C=(A=i[9411])+t|0,i[9411]=C,i[C+4>>2]=1|g,i[A+4>>2]=3|t,A=A+8|0;break A}if(A=0,a=t+47|0,i[9523]?g=i[9525]:(i[9526]=-1,i[9527]=-1,i[9524]=4096,i[9525]=4096,i[9523]=I+12&-16^1431655768,i[9528]=0,i[9516]=0,g=4096),(g=(Q=a+g|0)&(c=0-g|0))>>>0<=t>>>0)break A;if((r=i[9515])&&(B=(e=i[9513])+g|0)>>>0<=e>>>0|B>>>0>r>>>0)break A;a:{if(!(4&o[38064])){_:{c:{t:{r:{if(B=i[9411])for(A=38068;;){if((r=i[A>>2])>>>0<=B>>>0&B>>>0>2]>>>0)break r;if(!(A=i[A+8>>2]))break}if(-1==(0|(C=cg(0))))break _;if(Q=g,(B=(A=i[9524])-1|0)&C&&(Q=(g-C|0)+(C+B&0-A)|0),Q>>>0<=t>>>0)break _;if((B=i[9515])&&(A=(c=i[9513])+Q|0)>>>0<=c>>>0|A>>>0>B>>>0)break _;if((0|C)!=(0|(A=cg(Q))))break t;break a}if((0|(C=cg(Q=c&Q-C)))==(i[A>>2]+i[A+4>>2]|0))break c;A=C}if(-1==(0|A))break _;if(t+48>>>0<=Q>>>0){C=A;break a}if(-1==(0|cg(C=(C=i[9525])+(a-Q|0)&0-C)))break _;Q=C+Q|0,C=A;break a}if(-1!=(0|C))break a}i[9516]=4|i[9516]}if(-1==(0|(C=cg(g)))|-1==(0|(A=cg(0)))|A>>>0<=C>>>0)break B;if((Q=A-C|0)>>>0<=t+40>>>0)break B}A=i[9513]+Q|0,i[9513]=A,A>>>0>E[9514]&&(i[9514]=A);a:{if(a=i[9411]){for(A=38068;;){if(((g=i[A>>2])+(B=i[A+4>>2])|0)==(0|C))break a;if(!(A=i[A+8>>2]))break}break i}for((A=i[9409])>>>0<=C>>>0&&A||(i[9409]=C),A=0,i[9518]=Q,i[9517]=C,i[9413]=-1,i[9414]=i[9523],i[9520]=0;B=37660+(g=A<<3)|0,i[g+37668>>2]=B,i[g+37672>>2]=B,32!=(0|(A=A+1|0)););B=(A=Q-40|0)-(g=-8-C&7)|0,i[9408]=B,g=g+C|0,i[9411]=g,i[g+4>>2]=1|B,i[4+(A+C|0)>>2]=40,i[9412]=i[9527];break Q}if(8&i[A+12>>2]|C>>>0<=a>>>0|g>>>0>a>>>0)break i;i[A+4>>2]=B+Q,g=(A=-8-a&7)+a|0,i[9411]=g,A=(C=i[9408]+Q|0)-A|0,i[9408]=A,i[g+4>>2]=1|A,i[4+(C+a|0)>>2]=40,i[9412]=i[9527];break Q}A=0;break I}A=0;break g}E[9409]>C>>>0&&(i[9409]=C),B=C+Q|0,A=38068;i:{for(;;){if((0|(g=i[A>>2]))!=(0|B)){if(A=i[A+8>>2])continue;break i}break}if(!(8&o[A+12|0]))break C}for(A=38068;!((g=i[A>>2])>>>0<=a>>>0&&(B=g+i[A+4>>2]|0)>>>0>a>>>0);)A=i[A+8>>2];for(c=(A=Q-40|0)-(g=-8-C&7)|0,i[9408]=c,g=g+C|0,i[9411]=g,i[g+4>>2]=1|c,i[4+(A+C|0)>>2]=40,i[9412]=i[9527],i[(g=(A=(B+(39-B&7)|0)-47|0)>>>0>>0?a:A)+4>>2]=27,A=i[9520],i[g+16>>2]=i[9519],i[g+20>>2]=A,A=i[9518],i[g+8>>2]=i[9517],i[g+12>>2]=A,i[9519]=g+8,i[9518]=Q,i[9517]=C,i[9520]=0,A=g+24|0;i[A+4>>2]=7,C=A+8|0,A=A+4|0,C>>>0>>0;);if((0|g)!=(0|a)){i[g+4>>2]=-2&i[g+4>>2],C=g-a|0,i[a+4>>2]=1|C,i[g>>2]=C;i:if(C>>>0<=255)A=37660+(-8&C)|0,(g=i[9405])&(C=1<<(C>>>3))?g=i[A+8>>2]:(i[9405]=g|C,g=A),i[A+8>>2]=a,i[g+12>>2]=a,B=8,C=12;else{A=31,C>>>0<=16777215&&(A=62+((C>>>38-(A=_(C>>>8|0))&1)-(A<<1)|0)|0),i[a+28>>2]=A,i[a+16>>2]=0,i[a+20>>2]=0,g=37924+(A<<2)|0;o:{if((B=i[9406])&(Q=1<>>1|0):0),B=i[g>>2];;){if((0|C)==(-8&i[(g=B)+4>>2]))break o;if(B=A>>>29|0,A<<=1,!(B=i[16+(Q=(4&B)+g|0)>>2]))break}i[Q+16>>2]=a}else i[9406]=B|Q,i[g>>2]=a;i[a+24>>2]=g,A=g=a,B=12,C=8;break i}A=i[g+8>>2],i[A+12>>2]=a,i[g+8>>2]=a,i[a+8>>2]=A,A=0,B=12,C=24}i[B+a>>2]=g,i[C+a>>2]=A}}if(!((A=i[9408])>>>0<=t>>>0)){g=A-t|0,i[9408]=g,C=(A=i[9411])+t|0,i[9411]=C,i[C+4>>2]=1|g,i[A+4>>2]=3|t,A=A+8|0;break A}}i[9404]=48,A=0;break A}i[A>>2]=C,i[A+4>>2]=i[A+4>>2]+Q,i[4+(r=(-8-C&7)+C|0)>>2]=3|t,c=(Q=g+(-8-g&7)|0)-(a=t+r|0)|0;C:if(i[9411]!=(0|Q))if(i[9410]!=(0|Q)){if(1==(3&(A=i[Q+4>>2]))){e=-8&A,C=i[Q+12>>2];B:if(A>>>0<=255){if((0|(g=i[Q+8>>2]))==(0|C)){h=37620,D=i[9405]&Lg(-2,A>>>3|0),i[h>>2]=D;break B}i[g+12>>2]=C,i[C+8>>2]=g}else{t=i[Q+24>>2];Q:if((0|C)==(0|Q)){i:{if(A=i[Q+20>>2])g=Q+20|0;else{if(!(A=i[Q+16>>2]))break i;g=Q+16|0}for(;B=g,C=A,g=A+20|0,(A=i[A+20>>2])||(g=C+16|0,A=i[C+16>>2]););i[B>>2]=0;break Q}C=0}else A=i[Q+8>>2],i[A+12>>2]=C,i[C+8>>2]=A;if(t){A=i[Q+28>>2];Q:{if(i[(g=37924+(A<<2)|0)>>2]==(0|Q)){if(i[g>>2]=C,C)break Q;h=37624,D=i[9406]&Lg(-2,A),i[h>>2]=D;break B}if(i[t+(i[t+16>>2]==(0|Q)?16:20)>>2]=C,!C)break B}i[C+24>>2]=t,(A=i[Q+16>>2])&&(i[C+16>>2]=A,i[A+24>>2]=C),(A=i[Q+20>>2])&&(i[C+20>>2]=A,i[A+24>>2]=C)}}c=c+e|0,A=i[4+(Q=Q+e|0)>>2]}if(i[Q+4>>2]=-2&A,i[a+4>>2]=1|c,i[a+c>>2]=c,c>>>0<=255)A=37660+(-8&c)|0,(g=i[9405])&(C=1<<(c>>>3))?g=i[A+8>>2]:(i[9405]=g|C,g=A),i[A+8>>2]=a,i[g+12>>2]=a,i[a+12>>2]=A,i[a+8>>2]=g;else{C=31,c>>>0<=16777215&&(C=62+((c>>>38-(A=_(c>>>8|0))&1)-(A<<1)|0)|0),i[a+28>>2]=C,i[a+16>>2]=0,i[a+20>>2]=0,A=37924+(C<<2)|0;B:{if((g=i[9406])&(B=1<>>1|0):0),g=i[A>>2];;){if((-8&i[(A=g)+4>>2])==(0|c))break B;if(g=C>>>29|0,C<<=1,!(g=i[16+(B=(4&g)+A|0)>>2]))break}i[B+16>>2]=a}else i[9406]=g|B,i[A>>2]=a;i[a+24>>2]=A,i[a+12>>2]=a,i[a+8>>2]=a;break C}g=i[A+8>>2],i[g+12>>2]=a,i[A+8>>2]=a,i[a+24>>2]=0,i[a+12>>2]=A,i[a+8>>2]=g}}else i[9410]=a,A=i[9407]+c|0,i[9407]=A,i[a+4>>2]=1|A,i[A+a>>2]=A;else i[9411]=a,A=i[9408]+c|0,i[9408]=A,i[a+4>>2]=1|A;A=r+8|0;break A}g:if(r){g=i[B+28>>2];C:{if(i[(C=37924+(g<<2)|0)>>2]==(0|B)){if(i[C>>2]=A,A)break C;c=Lg(-2,g)&c,i[9406]=c;break g}if(i[r+(i[r+16>>2]==(0|B)?16:20)>>2]=A,!A)break g}i[A+24>>2]=r,(g=i[B+16>>2])&&(i[A+16>>2]=g,i[g+24>>2]=A),(g=i[B+20>>2])&&(i[A+20>>2]=g,i[g+24>>2]=A)}g:if(a>>>0<=15)A=a+t|0,i[B+4>>2]=3|A,i[4+(A=A+B|0)>>2]=1|i[A+4>>2];else if(i[B+4>>2]=3|t,i[4+(Q=B+t|0)>>2]=1|a,i[a+Q>>2]=a,a>>>0<=255)A=37660+(-8&a)|0,(g=i[9405])&(C=1<<(a>>>3))?g=i[A+8>>2]:(i[9405]=g|C,g=A),i[A+8>>2]=Q,i[g+12>>2]=Q,i[Q+12>>2]=A,i[Q+8>>2]=g;else{A=31,a>>>0<=16777215&&(A=62+((a>>>38-(A=_(a>>>8|0))&1)-(A<<1)|0)|0),i[Q+28>>2]=A,i[Q+16>>2]=0,i[Q+20>>2]=0,g=37924+(A<<2)|0;C:{if((C=1<>>1|0):0),g=i[g>>2];;){if(C=g,(-8&i[g+4>>2])==(0|a))break C;if(c=A>>>29|0,A<<=1,!(g=i[16+(c=g+(4&c)|0)>>2]))break}i[c+16>>2]=Q,i[Q+24>>2]=C}else i[9406]=C|c,i[g>>2]=Q,i[Q+24>>2]=g;i[Q+12>>2]=Q,i[Q+8>>2]=Q;break g}A=i[C+8>>2],i[A+12>>2]=Q,i[C+8>>2]=Q,i[Q+24>>2]=0,i[Q+12>>2]=C,i[Q+8>>2]=A}A=B+8|0;break A}I:if(e){g=i[C+28>>2];g:{if(i[(B=37924+(g<<2)|0)>>2]==(0|C)){if(i[B>>2]=A,A)break g;h=37624,D=Lg(-2,g)&y,i[h>>2]=D;break I}if(i[e+(i[e+16>>2]==(0|C)?16:20)>>2]=A,!A)break I}i[A+24>>2]=e,(g=i[C+16>>2])&&(i[A+16>>2]=g,i[g+24>>2]=A),(g=i[C+20>>2])&&(i[A+20>>2]=g,i[g+24>>2]=A)}a>>>0<=15?(A=a+t|0,i[C+4>>2]=3|A,i[4+(A=A+C|0)>>2]=1|i[A+4>>2]):(i[C+4>>2]=3|t,i[4+(c=C+t|0)>>2]=1|a,i[a+c>>2]=a,r&&(A=37660+(-8&r)|0,B=i[9410],(g=1<<(r>>>3))&Q?g=i[A+8>>2]:(i[9405]=g|Q,g=A),i[A+8>>2]=B,i[g+12>>2]=B,i[B+12>>2]=A,i[B+8>>2]=g),i[9410]=c,i[9407]=a),A=C+8|0}return s=I+16|0,0|A}function U(A,I,g,B,Q,E){var _,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,X=0,O=0,W=0,V=0,Z=0,T=0;if(s=_=s-592|0,r=-1,ZI(t=A+32|0)&&!KI(A)&&NI(Q)&&!KI(Q)&&!qA(y=_+128|0,Q)){for(SI(r=_+384|0),E&&SA(r,35600,34,0),SA(r,A,32,0),SA(r,Q,32,0),SA(r,I,g,B),j(I=r,r=_+320|0),S(r),B=_+8|0,g=t,Q=0,I=0,s=c=s-2272|0;E=c+2016|0,t=o[r+(Q>>>3|0)|0],C[E+Q|0]=t>>>(6&Q)&1,C[(e=E)+(E=1|Q)|0]=t>>>(7&E)&1,256!=(0|(Q=Q+2|0)););for(;;){I=(E=I)+1|0;A:if(!(E>>>0>254)&&o[0|(D=(Q=c+2016|0)+E|0)]){I:if(Q=C[0|(h=I+Q|0)])if((0|(Q=(r=Q<<1)+(t=C[0|D])|0))<=15)C[0|D]=Q,C[0|h]=0;else{if((0|(Q=t-r|0))<-15)break A;for(C[0|D]=Q,Q=I;;){if(!o[0|(t=(c+2016|0)+Q|0)]){C[0|t]=1;break I}if(C[0|t]=0,t=Q>>>0<255,Q=Q+1|0,!t)break}}if(!(E>>>0>253)){I:if(t=C[0|(e=(Q=E+2|0)+(c+2016|0)|0)])if((0|(t=(h=t<<2)+(r=C[0|D])|0))>=16){if((0|(t=r-h|0))<-15)break A;for(C[0|D]=t;;){if(o[0|(t=(c+2016|0)+Q|0)]){if(C[0|t]=0,t=Q>>>0<255,Q=Q+1|0,t)continue;break I}break}C[0|t]=1}else C[0|D]=t,C[0|e]=0;if(253!=(0|E)){I:if(t=C[0|(e=(Q=E+3|0)+(c+2016|0)|0)])if((0|(t=(h=t<<3)+(r=C[0|D])|0))>=16){if((0|(t=r-h|0))<-15)break A;for(C[0|D]=t;;){if(o[0|(t=(c+2016|0)+Q|0)]){if(C[0|t]=0,t=Q>>>0<255,Q=Q+1|0,t)continue;break I}break}C[0|t]=1}else C[0|D]=t,C[0|e]=0;if(!(E>>>0>251)){I:if(t=C[0|(e=(Q=E+4|0)+(c+2016|0)|0)])if((0|(t=(h=t<<4)+(r=C[0|D])|0))>=16){if((0|(t=r-h|0))<-15)break A;for(C[0|D]=t;;){if(o[0|(t=(c+2016|0)+Q|0)]){if(C[0|t]=0,t=Q>>>0<255,Q=Q+1|0,t)continue;break I}break}C[0|t]=1}else C[0|D]=t,C[0|e]=0;if(251!=(0|E)){I:if(t=C[0|(e=(Q=E+5|0)+(c+2016|0)|0)])if((0|(t=(h=t<<5)+(r=C[0|D])|0))>=16){if((0|(t=r-h|0))<-15)break A;for(C[0|D]=t;;){if(o[0|(t=(c+2016|0)+Q|0)]){if(C[0|t]=0,t=Q>>>0<255,Q=Q+1|0,t)continue;break I}break}C[0|t]=1}else C[0|D]=t,C[0|e]=0;if(!(E>>>0>249)&&(E=C[0|(h=(Q=E+6|0)+(c+2016|0)|0)]))if((0|(E=(r=E<<6)+(t=C[0|D])|0))>=16){if((0|(E=t-r|0))<-15)break A;for(C[0|D]=E;;){if(o[0|(E=(c+2016|0)+Q|0)]){if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,E)continue;break A}break}C[0|E]=1}else C[0|D]=E,C[0|h]=0}}}}}if(256==(0|I))break}for(Q=0;I=c+1760|0,E=o[g+(Q>>>3|0)|0],C[I+Q|0]=E>>>(6&Q)&1,C[(t=I)+(I=1|Q)|0]=E>>>(7&I)&1,256!=(0|(Q=Q+2|0)););for(I=0;;){g=I,I=I+1|0;A:if(!(g>>>0>254)&&o[0|(e=(Q=c+1760|0)+g|0)]){I:if(Q=C[0|(r=I+Q|0)])if((0|(Q=(t=Q<<1)+(E=C[0|e])|0))<=15)C[0|e]=Q,C[0|r]=0;else{if((0|(Q=E-t|0))<-15)break A;for(C[0|e]=Q,Q=I;;){if(!o[0|(E=(c+1760|0)+Q|0)]){C[0|E]=1;break I}if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,!E)break}}if(!(g>>>0>253)){I:if(E=C[0|(h=(Q=g+2|0)+(c+1760|0)|0)])if((0|(E=(r=E<<2)+(t=C[0|e])|0))>=16){if((0|(E=t-r|0))<-15)break A;for(C[0|e]=E;;){if(o[0|(E=(c+1760|0)+Q|0)]){if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,E)continue;break I}break}C[0|E]=1}else C[0|e]=E,C[0|h]=0;if(253!=(0|g)){I:if(E=C[0|(h=(Q=g+3|0)+(c+1760|0)|0)])if((0|(E=(r=E<<3)+(t=C[0|e])|0))>=16){if((0|(E=t-r|0))<-15)break A;for(C[0|e]=E;;){if(o[0|(E=(c+1760|0)+Q|0)]){if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,E)continue;break I}break}C[0|E]=1}else C[0|e]=E,C[0|h]=0;if(!(g>>>0>251)){I:if(E=C[0|(h=(Q=g+4|0)+(c+1760|0)|0)])if((0|(E=(r=E<<4)+(t=C[0|e])|0))>=16){if((0|(E=t-r|0))<-15)break A;for(C[0|e]=E;;){if(o[0|(E=(c+1760|0)+Q|0)]){if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,E)continue;break I}break}C[0|E]=1}else C[0|e]=E,C[0|h]=0;if(251!=(0|g)){I:if(E=C[0|(h=(Q=g+5|0)+(c+1760|0)|0)])if((0|(E=(r=E<<5)+(t=C[0|e])|0))>=16){if((0|(E=t-r|0))<-15)break A;for(C[0|e]=E;;){if(o[0|(E=(c+1760|0)+Q|0)]){if(C[0|E]=0,E=Q>>>0<255,Q=Q+1|0,E)continue;break I}break}C[0|E]=1}else C[0|e]=E,C[0|h]=0;if(!(g>>>0>249)&&(g=C[0|(r=(Q=g+6|0)+(c+1760|0)|0)]))if((0|(g=(t=g<<6)+(E=C[0|e])|0))>=16){if((0|(g=E-t|0))<-15)break A;for(C[0|e]=g;;){if(o[0|(g=(c+1760|0)+Q|0)]){if(C[0|g]=0,g=Q>>>0<255,Q=Q+1|0,g)continue;break A}break}C[0|g]=1}else C[0|e]=g,C[0|r]=0}}}}}if(256==(0|I))break}for($A(Q=c+480|0,y),I=i[y+36>>2],i[c+192>>2]=i[y+32>>2],i[c+196>>2]=I,I=i[y+28>>2],i[c+184>>2]=i[y+24>>2],i[c+188>>2]=I,I=i[y+20>>2],i[c+176>>2]=i[y+16>>2],i[c+180>>2]=I,I=i[y+12>>2],i[c+168>>2]=i[y+8>>2],i[c+172>>2]=I,I=i[y+4>>2],i[c+160>>2]=i[y>>2],i[c+164>>2]=I,I=i[y+52>>2],i[c+208>>2]=i[y+48>>2],i[c+212>>2]=I,I=i[y+60>>2],i[c+216>>2]=i[y+56>>2],i[c+220>>2]=I,I=i[4+(g=y- -64|0)>>2],i[c+224>>2]=i[g>>2],i[c+228>>2]=I,I=i[y+76>>2],i[c+232>>2]=i[y+72>>2],i[c+236>>2]=I,I=i[y+44>>2],i[c+200>>2]=i[y+40>>2],i[c+204>>2]=I,I=i[y+92>>2],i[c+248>>2]=i[y+88>>2],i[c+252>>2]=I,I=i[y+100>>2],i[c+256>>2]=i[y+96>>2],i[c+260>>2]=I,I=i[y+108>>2],i[c+264>>2]=i[y+104>>2],i[c+268>>2]=I,I=i[y+116>>2],i[c+272>>2]=i[y+112>>2],i[c+276>>2]=I,I=i[y+84>>2],i[c+240>>2]=i[y+80>>2],i[c+244>>2]=I,KA(E=c+320|0,g=c+160|0),b(c,E,f=c+440|0),b(c+40|0,p=c+360|0,w=c+400|0),b(c+80|0,w,f),b(c+120|0,E,p),sA(E,c,Q),b(g,E,f),b(k=c+200|0,p,w),b(F=c+240|0,w,f),b(n=c+280|0,E,p),$A(I=c+640|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(I=c+800|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(I=c+960|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(I=c+1120|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(I=c+1280|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(I=c+1440|0,g),sA(E,c,I),b(g,E,f),b(k,p,w),b(F,w,f),b(n,E,p),$A(c+1600|0,g),i[B+32>>2]=0,i[B+36>>2]=0,i[B+24>>2]=0,i[B+28>>2]=0,i[B+16>>2]=0,i[B+20>>2]=0,i[B+8>>2]=0,i[B+12>>2]=0,i[B>>2]=0,i[B+4>>2]=0,i[B+44>>2]=0,i[B+48>>2]=0,i[B+40>>2]=1,i[B+52>>2]=0,i[B+56>>2]=0,i[B+60>>2]=0,i[B+64>>2]=0,i[B+68>>2]=0,i[B+72>>2]=0,i[B+84>>2]=0,i[B+88>>2]=0,i[B+76>>2]=0,i[B+80>>2]=1,i[B+92>>2]=0,i[B+96>>2]=0,i[B+100>>2]=0,i[B+104>>2]=0,i[B+108>>2]=0,i[B+112>>2]=0,i[B+116>>2]=0,X=B+80|0,O=B+40|0,I=255;;){A:{I:{if(!o[(g=c+2016|0)+I|0]&&!o[(Q=c+1760|0)+I|0]){if(!(o[(E=g)+(g=I-1|0)|0]|o[g+Q|0]))break I;I=g}if((0|I)<0)break A;for(;KA(Q=c+320|0,B),g=I,(0|(E=C[I+(c+2016|0)|0]))>0?(b(I=c+160|0,Q,f),b(k,p,w),b(F,w,f),b(n,Q,p),sA(Q,I,(c+480|0)+a((254&E)>>>1|0,160)|0)):(0|E)>=0||(b(I=c+160|0,Q=c+320|0,f),b(k,p,w),b(F,w,f),b(n,Q,p),hA(Q,I,(c+480|0)+a((0-E&254)>>>1|0,160)|0)),(0|(u=C[g+(c+1760|0)|0]))>0?(b(I=c+160|0,Q=c+320|0,f),b(k,p,w),b(F,w,f),b(n,Q,p),DA(Q,I,a((254&u)>>>1|0,120)+1728|0)):(0|u)>=0||(b(c+160|0,x=c+320|0,f),b(k,p,w),b(F,w,f),b(n,x,p),N=i[c+160>>2],G=i[c+200>>2],M=i[c+164>>2],K=i[c+204>>2],U=i[c+168>>2],H=i[c+208>>2],Y=i[c+172>>2],J=i[c+212>>2],d=i[c+176>>2],m=i[c+216>>2],l=i[c+180>>2],D=i[c+220>>2],e=i[c+184>>2],h=i[c+224>>2],r=i[c+188>>2],y=i[c+228>>2],t=i[c+192>>2],E=i[c+232>>2],Q=i[c+236>>2],I=i[c+196>>2],i[c+396>>2]=Q-I,i[c+392>>2]=E-t,i[c+388>>2]=y-r,i[c+384>>2]=h-e,i[c+380>>2]=D-l,i[c+376>>2]=m-d,i[c+372>>2]=J-Y,i[c+368>>2]=H-U,i[c+364>>2]=K-M,i[c+360>>2]=G-N,i[c+356>>2]=I+Q,i[c+352>>2]=E+t,i[c+348>>2]=r+y,i[c+344>>2]=e+h,i[c+340>>2]=D+l,i[c+336>>2]=d+m,i[c+332>>2]=Y+J,i[c+328>>2]=U+H,i[c+324>>2]=M+K,i[c+320>>2]=N+G,b(w,x,40+(I=a((0-u&254)>>>1|0,120)+1728|0)|0),b(p,p,I),b(f,I+80|0,n),W=i[c+276>>2],V=i[c+272>>2],u=i[c+268>>2],x=i[c+264>>2],e=i[c+260>>2],h=i[c+256>>2],r=i[c+252>>2],y=i[c+248>>2],t=i[c+244>>2],E=i[c+240>>2],v=i[c+360>>2],R=i[c+400>>2],L=i[c+364>>2],P=i[c+404>>2],q=i[c+368>>2],z=i[c+408>>2],N=i[c+372>>2],G=i[c+412>>2],M=i[c+376>>2],K=i[c+416>>2],U=i[c+380>>2],H=i[c+420>>2],Y=i[c+384>>2],J=i[c+424>>2],d=i[c+388>>2],m=i[c+428>>2],l=i[c+392>>2],D=i[c+432>>2],Q=i[c+396>>2],I=i[c+436>>2],i[c+396>>2]=Q+I,i[c+392>>2]=D+l,i[c+388>>2]=d+m,i[c+384>>2]=Y+J,i[c+380>>2]=U+H,i[c+376>>2]=M+K,i[c+372>>2]=N+G,i[c+368>>2]=q+z,i[c+364>>2]=L+P,i[c+360>>2]=v+R,i[c+356>>2]=I-Q,i[c+352>>2]=D-l,i[c+348>>2]=m-d,i[c+344>>2]=J-Y,i[c+340>>2]=H-U,i[c+336>>2]=K-M,i[c+332>>2]=G-N,i[c+328>>2]=z-q,i[c+324>>2]=P-L,i[c+320>>2]=R-v,N=E<<1,G=i[c+440>>2],i[c+400>>2]=N-G,M=t<<1,K=i[c+444>>2],i[c+404>>2]=M-K,U=y<<1,H=i[c+448>>2],i[c+408>>2]=U-H,Y=r<<1,J=i[c+452>>2],i[c+412>>2]=Y-J,d=h<<1,m=i[c+456>>2],i[c+416>>2]=d-m,l=e<<1,D=i[c+460>>2],i[c+420>>2]=l-D,e=x<<1,h=i[c+464>>2],i[c+424>>2]=e-h,r=u<<1,y=i[c+468>>2],i[c+428>>2]=r-y,t=V<<1,E=i[c+472>>2],i[c+432>>2]=t-E,Q=W<<1,I=i[c+476>>2],i[c+436>>2]=Q-I,i[c+440>>2]=N+G,i[c+444>>2]=M+K,i[c+448>>2]=U+H,i[c+452>>2]=Y+J,i[c+456>>2]=d+m,i[c+460>>2]=D+l,i[c+464>>2]=e+h,i[c+468>>2]=r+y,i[c+472>>2]=E+t,i[c+476>>2]=I+Q),b(B,c+320|0,f),b(O,p,w),b(X,w,f),I=g-1|0,(0|g)>0;);break A}if(I=I-2|0,g)continue}break}s=c+2272|0,tg(I=_+288|0,B),Z=-1,T=NC(I,A),r=((0|A)==(0|I)?Z:T)|MI(A,I,32)}return s=_+592|0,r}function b(A,I,g){var C,B,Q,o,E,_,c,t,r,e,y,s,h,D,p,w,n,k,F,S,N,G,M,K,U,b,H,Y,J,d,m,l,u,x,v,R,L,P,q,z,j,X,O,W,V,Z,T,$,AA,IA,gA,CA,BA,QA=0,iA=0,oA=0,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0,sA=0,hA=0,DA=0,fA=0,pA=0,wA=0,nA=0,kA=0,FA=0,SA=0,NA=0,GA=0,MA=0,KA=0;QA=Ig(C=i[g+4>>2],e=C>>31,wA=(w=i[I+20>>2])<<1,m=wA>>31),oA=f,iA=(hA=Ig(fA=i[g>>2],Q=fA>>31,B=i[I+24>>2],o=B>>31))+QA|0,QA=f+oA|0,QA=iA>>>0>>0?QA+1|0:QA,rA=Ig(E=i[g+8>>2],h=E>>31,hA=i[I+16>>2],_=hA>>31),oA=f+QA|0,oA=(iA=rA+iA|0)>>>0>>0?oA+1|0:oA,QA=(rA=Ig(y=i[g+12>>2],n=y>>31,K=(k=i[I+12>>2])<<1,l=K>>31))+iA|0,iA=f+oA|0,iA=QA>>>0>>0?iA+1|0:iA,oA=(DA=Ig(D=i[g+16>>2],U=D>>31,rA=i[I+8>>2],c=rA>>31))+QA|0,QA=f+iA|0,QA=oA>>>0>>0?QA+1|0:QA,iA=oA,oA=Ig(F=i[g+20>>2],u=F>>31,b=(S=i[I+4>>2])<<1,x=b>>31),QA=f+QA|0,QA=(iA=iA+oA|0)>>>0>>0?QA+1|0:QA,Z=cA=i[g+24>>2],oA=(eA=Ig(cA,W=cA>>31,DA=i[I>>2],t=DA>>31))+iA|0,iA=f+QA|0,iA=oA>>>0>>0?iA+1|0:iA,v=i[g+28>>2],QA=(eA=Ig(sA=a(v,19),N=sA>>31,H=(G=i[I+36>>2])<<1,R=H>>31))+oA|0,oA=f+iA|0,oA=QA>>>0>>0?oA+1|0:oA,SA=i[g+32>>2],iA=(tA=Ig(EA=a(SA,19),p=EA>>31,eA=i[I+32>>2],r=eA>>31))+QA|0,QA=f+oA|0,QA=iA>>>0>>0?QA+1|0:QA,T=i[g+36>>2],g=Ig(tA=a(T,19),s=tA>>31,Y=(M=i[I+28>>2])<<1,L=Y>>31),QA=f+QA|0,aA=I=g+iA|0,g=I>>>0>>0?QA+1|0:QA,I=Ig(hA,_,C,e),QA=f,iA=Ig(fA,Q,w,P=w>>31),oA=f+QA|0,oA=(I=iA+I|0)>>>0>>0?oA+1|0:oA,QA=Ig(E,h,k,q=k>>31),iA=f+oA|0,iA=(I=QA+I|0)>>>0>>0?iA+1|0:iA,oA=Ig(rA,c,y,n),QA=f+iA|0,QA=(I=oA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(D,U,S,z=S>>31),QA=f+QA|0,QA=(I=iA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(DA,t,F,u),QA=f+QA|0,QA=(I=iA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(cA=a(cA,19),J=cA>>31,G,j=G>>31),oA=f+QA|0,oA=(I=iA+I|0)>>>0>>0?oA+1|0:oA,QA=Ig(eA,r,sA,N),iA=f+oA|0,iA=(I=QA+I|0)>>>0>>0?iA+1|0:iA,oA=Ig(EA,p,M,X=M>>31),QA=f+iA|0,QA=(I=oA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(tA,s,B,o),QA=f+QA|0,GA=I=iA+I|0,nA=I>>>0>>0?QA+1|0:QA,I=Ig(C,e,K,l),QA=f,iA=Ig(fA,Q,hA,_),QA=f+QA|0,QA=(I=iA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(rA,c,E,h),oA=f+QA|0,oA=(I=iA+I|0)>>>0>>0?oA+1|0:oA,QA=Ig(y,n,b,x),iA=f+oA|0,iA=(I=QA+I|0)>>>0>>0?iA+1|0:iA,oA=Ig(DA,t,D,U),QA=f+iA|0,QA=(I=oA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(d=a(F,19),O=d>>31,H,R),QA=f+QA|0,QA=(I=iA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(eA,r,cA,J),QA=f+QA|0,QA=(I=iA+I|0)>>>0>>0?QA+1|0:QA,iA=Ig(sA,N,Y,L),oA=f+QA|0,oA=(I=iA+I|0)>>>0>>0?oA+1|0:oA,QA=Ig(EA,p,B,o),iA=f+oA|0,iA=(I=QA+I|0)>>>0>>0?iA+1|0:iA,oA=Ig(tA,s,wA,m),QA=f+iA|0,$=I=oA+I|0,AA=QA=I>>>0>>0?QA+1|0:QA,IA=I=I+33554432|0,gA=QA=I>>>0<33554432?QA+1|0:QA,oA=(67108863&QA)<<6|I>>>26,QA=(QA>>26)+nA|0,GA=I=oA+GA|0,QA=I>>>0>>0?QA+1|0:QA,CA=I=I+16777216|0,QA=g+(iA=(oA=I>>>0<16777216?QA+1|0:QA)>>25)|0,QA=(I=(oA=(33554431&oA)<<7|I>>>25)+aA|0)>>>0>>0?QA+1|0:QA,kA=g=(iA=I)+33554432|0,I=QA=g>>>0<33554432?QA+1|0:QA,i[A+24>>2]=iA-(-67108864&g),g=Ig(C,e,b,x),QA=f,iA=Ig(fA,Q,rA,c),oA=f+QA|0,oA=(g=iA+g|0)>>>0>>0?oA+1|0:oA,iA=(QA=g)+(g=Ig(DA,t,E,h))|0,QA=f+oA|0,QA=g>>>0>iA>>>0?QA+1|0:QA,oA=Ig(g=a(y,19),FA=g>>31,H,R),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,oA=(aA=Ig(eA,r,nA=a(D,19),V=nA>>31))+iA|0,iA=f+QA|0,iA=oA>>>0>>0?iA+1|0:iA,aA=Ig(Y,L,d,O),QA=f+iA|0,QA=(oA=aA+oA|0)>>>0>>0?QA+1|0:QA,iA=(aA=Ig(B,o,cA,J))+oA|0,oA=f+QA|0,oA=iA>>>0>>0?oA+1|0:oA,aA=Ig(sA,N,wA,m),QA=f+oA|0,QA=(iA=aA+iA|0)>>>0>>0?QA+1|0:QA,oA=Ig(EA,p,hA,_),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,oA=(aA=Ig(tA,s,K,l))+iA|0,iA=f+QA|0,yA=oA,MA=oA>>>0>>0?iA+1|0:iA,QA=Ig(DA,t,C,e),iA=f,oA=(aA=Ig(fA,Q,S,z))+QA|0,QA=f+iA|0,QA=oA>>>0>>0?QA+1|0:QA,aA=iA=a(E,19),iA=(_A=Ig(iA,NA=iA>>31,G,j))+oA|0,oA=f+QA|0,oA=iA>>>0<_A>>>0?oA+1|0:oA,_A=Ig(eA,r,g,FA),QA=f+oA|0,QA=(iA=_A+iA|0)>>>0<_A>>>0?QA+1|0:QA,oA=Ig(nA,V,M,X),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,oA=(_A=Ig(B,o,d,O))+iA|0,iA=f+QA|0,iA=oA>>>0<_A>>>0?iA+1|0:iA,_A=Ig(cA,J,w,P),QA=f+iA|0,QA=(oA=_A+oA|0)>>>0<_A>>>0?QA+1|0:QA,iA=(_A=Ig(hA,_,sA,N))+oA|0,oA=f+QA|0,oA=iA>>>0<_A>>>0?oA+1|0:oA,_A=Ig(EA,p,k,q),QA=f+oA|0,QA=(iA=_A+iA|0)>>>0<_A>>>0?QA+1|0:QA,oA=Ig(tA,s,rA,c),QA=f+QA|0,KA=iA=oA+iA|0,_A=iA>>>0>>0?QA+1|0:QA,QA=Ig(QA=a(C,19),QA>>31,H,R),iA=f,oA=Ig(fA,Q,DA,t),iA=f+iA|0,iA=(QA=oA+QA|0)>>>0>>0?iA+1|0:iA,oA=(aA=Ig(eA,r,aA,NA))+QA|0,QA=f+iA|0,g=(iA=Ig(g,FA,Y,L))+oA|0,oA=f+(oA>>>0>>0?QA+1|0:QA)|0,oA=g>>>0>>0?oA+1|0:oA,iA=Ig(B,o,nA,V),QA=f+oA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,iA=Ig(wA,m,d,O),QA=f+QA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,oA=Ig(hA,_,cA,J),iA=f+QA|0,iA=(g=oA+g|0)>>>0>>0?iA+1|0:iA,oA=Ig(sA,N,K,l),QA=f+iA|0,QA=(g=oA+g|0)>>>0>>0?QA+1|0:QA,iA=Ig(EA,p,rA,c),oA=f+QA|0,oA=(g=iA+g|0)>>>0>>0?oA+1|0:oA,iA=Ig(tA,s,b,x),QA=f+oA|0,aA=g=iA+g|0,FA=QA=g>>>0>>0?QA+1|0:QA,NA=g=g+33554432|0,BA=QA=g>>>0<33554432?QA+1|0:QA,iA=(oA=QA>>26)+_A|0,_A=g=(QA=(67108863&QA)<<6|g>>>26)+KA|0,QA=g>>>0>>0?iA+1|0:iA,KA=g=g+16777216|0,iA=(33554431&(QA=g>>>0<16777216?QA+1|0:QA))<<7|g>>>25,QA=(QA>>25)+MA|0,QA=(g=iA+yA|0)>>>0>>0?QA+1|0:QA,MA=iA=(oA=g)+33554432|0,g=QA=iA>>>0<33554432?QA+1|0:QA,i[A+8>>2]=oA-(-67108864&iA),QA=Ig(B,o,C,e),oA=f,iA=(yA=Ig(fA,Q,M,X))+QA|0,QA=f+oA|0,QA=iA>>>0>>0?QA+1|0:QA,oA=Ig(E,h,w,P),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,oA=Ig(hA,_,y,n),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,yA=Ig(D,U,k,q),oA=f+QA|0,oA=(iA=yA+iA|0)>>>0>>0?oA+1|0:oA,QA=(yA=Ig(rA,c,F,u))+iA|0,iA=f+oA|0,iA=QA>>>0>>0?iA+1|0:iA,oA=(yA=Ig(S,z,Z,W))+QA|0,QA=f+iA|0,QA=oA>>>0>>0?QA+1|0:QA,iA=oA,oA=Ig(DA,t,v,yA=v>>31),QA=f+QA|0,QA=(iA=iA+oA|0)>>>0>>0?QA+1|0:QA,oA=Ig(EA,p,G,j),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,pA=Ig(tA,s,eA,r),oA=f+QA|0,QA=I>>26,I=(kA=(67108863&I)<<6|kA>>>26)+(iA=pA+iA|0)|0,iA=QA+(iA>>>0>>0?oA+1|0:oA)|0,QA=(oA=I)>>>0>>0?iA+1|0:iA,kA=iA=oA+16777216|0,I=QA=iA>>>0<16777216?QA+1|0:QA,i[A+28>>2]=oA-(-33554432&iA),QA=Ig(rA,c,C,e),iA=f,pA=Ig(fA,Q,k,q),oA=f+iA|0,oA=(QA=pA+QA|0)>>>0>>0?oA+1|0:oA,pA=Ig(E,h,S,z),iA=f+oA|0,iA=(QA=pA+QA|0)>>>0>>0?iA+1|0:iA,oA=(pA=Ig(DA,t,y,n))+QA|0,QA=f+iA|0,QA=oA>>>0>>0?QA+1|0:QA,iA=oA,oA=Ig(nA,V,G,j),QA=f+QA|0,QA=(iA=iA+oA|0)>>>0>>0?QA+1|0:QA,oA=Ig(eA,r,d,O),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,iA=(cA=Ig(cA,J,M,X))+iA|0,oA=f+QA|0,QA=(sA=Ig(B,o,sA,N))+iA|0,iA=f+(iA>>>0>>0?oA+1|0:oA)|0,oA=(EA=Ig(EA,p,w,P))+QA|0,QA=f+(QA>>>0>>0?iA+1|0:iA)|0,QA=oA>>>0>>0?QA+1|0:QA,iA=oA,oA=Ig(tA,s,hA,_),QA=f+QA|0,EA=iA=iA+oA|0,QA=(QA=iA>>>0>>0?QA+1|0:QA)+(iA=g>>26)|0,EA=g=EA+(oA=(67108863&g)<<6|MA>>>26)|0,QA=g>>>0>>0?QA+1|0:QA,sA=iA=g+16777216|0,g=oA=iA>>>0<16777216?QA+1|0:QA,i[A+12>>2]=EA-(-33554432&iA),QA=Ig(C,e,Y,L),oA=f,iA=(EA=Ig(fA,Q,eA,r))+QA|0,QA=f+oA|0,QA=iA>>>0>>0?QA+1|0:QA,oA=Ig(B,o,E,h),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,EA=Ig(y,n,wA,m),oA=f+QA|0,oA=(iA=EA+iA|0)>>>0>>0?oA+1|0:oA,QA=(EA=Ig(hA,_,D,U))+iA|0,iA=f+oA|0,iA=QA>>>0>>0?iA+1|0:iA,oA=(EA=Ig(K,l,F,u))+QA|0,QA=f+iA|0,QA=oA>>>0>>0?QA+1|0:QA,iA=oA,oA=Ig(rA,c,Z,W),QA=f+QA|0,QA=(iA=iA+oA|0)>>>0>>0?QA+1|0:QA,oA=Ig(v,yA,b,x),QA=f+QA|0,QA=(iA=oA+iA|0)>>>0>>0?QA+1|0:QA,iA=(wA=Ig(DA,t,EA=SA,cA=EA>>31))+iA|0,oA=f+QA|0,QA=(tA=Ig(tA,s,H,R))+iA|0,iA=f+(iA>>>0>>0?oA+1|0:oA)|0,iA=QA>>>0>>0?iA+1|0:iA,SA=QA,QA=(QA=I>>25)+iA|0,QA=(I=SA+(oA=(33554431&I)<<7|kA>>>25)|0)>>>0>>0?QA+1|0:QA,tA=iA=(oA=I)+33554432|0,I=QA=iA>>>0<33554432?QA+1|0:QA,i[A+32>>2]=oA-(-67108864&iA),iA=g>>25,g=(sA=(33554431&g)<<7|sA>>>25)+($-(QA=-67108864&IA)|0)|0,QA=iA+(AA-((QA>>>0>$>>>0)+gA|0)|0)|0,QA=g>>>0>>0?QA+1|0:QA,QA=((67108863&(QA=(g=(iA=g)+33554432|0)>>>0<33554432?QA+1|0:QA))<<6|g>>>26)+(oA=GA-(-33554432&CA)|0)|0,i[A+20>>2]=QA,i[A+16>>2]=iA-(-67108864&g),g=Ig(eA,r,C,e),QA=f,iA=Ig(fA,Q,G,j),QA=f+QA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,oA=Ig(E,h,M,X),iA=f+QA|0,iA=(g=oA+g|0)>>>0>>0?iA+1|0:iA,QA=Ig(B,o,y,n),oA=f+iA|0,oA=(g=QA+g|0)>>>0>>0?oA+1|0:oA,iA=Ig(D,U,w,P),QA=f+oA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,iA=Ig(hA,_,F,u),QA=f+QA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,iA=Ig(k,q,Z,W),QA=f+QA|0,QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA,oA=Ig(rA,c,v,yA),iA=f+QA|0,iA=(g=oA+g|0)>>>0>>0?iA+1|0:iA,QA=Ig(EA,cA,S,z),oA=f+iA|0,oA=(g=QA+g|0)>>>0>>0?oA+1|0:oA,iA=Ig(DA,t,T,T>>31),QA=f+oA|0,QA=(QA=(g=iA+g|0)>>>0>>0?QA+1|0:QA)+(iA=I>>26)|0,QA=(I=(oA=g)+(g=(67108863&I)<<6|tA>>>26)|0)>>>0>>0?QA+1|0:QA,QA=(I=(g=I)+16777216|0)>>>0<16777216?QA+1|0:QA,i[A+36>>2]=g-(-33554432&I),oA=_A-(-33554432&KA)|0,iA=aA-(g=-67108864&NA)|0,fA=FA-((g>>>0>aA>>>0)+BA|0)|0,I=(g=Ig((33554431&(g=QA))<<7|I>>>25,QA>>=25,19,0))+iA|0,iA=f+fA|0,QA=I>>>0>>0?iA+1|0:iA,QA=((67108863&(QA=(I=(g=I)+33554432|0)>>>0<33554432?QA+1|0:QA))<<6|I>>>26)+oA|0,i[A+4>>2]=QA,i[A>>2]=g-(-67108864&I)}function H(A,I){var g,C,B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w=0,n=0,k=0;s=g=s-544|0,C=o[A+60|0]|o[A+61|0]<<8|o[A+62|0]<<16|o[A+63|0]<<24,B=o[A+56|0]|o[A+57|0]<<8|o[A+58|0]<<16|o[A+59|0]<<24,Q=o[A+52|0]|o[A+53|0]<<8|o[A+54|0]<<16|o[A+55|0]<<24,E=o[A+48|0]|o[A+49|0]<<8|o[A+50|0]<<16|o[A+51|0]<<24,a=o[A+32|0]|o[A+33|0]<<8|o[A+34|0]<<16|o[A+35|0]<<24,_=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,c=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24,t=o[A+44|0]|o[A+45|0]<<8|o[A+46|0]<<16|o[A+47|0]<<24,w=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,r=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,e=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,y=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,h=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,D=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,f=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,p=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,A=i[I+124>>2],i[g+536>>2]=i[I+120>>2],i[g+540>>2]=A,A=i[I+116>>2],i[g+528>>2]=i[I+112>>2],i[g+532>>2]=A,A=i[I+108>>2],i[g+504>>2]=i[I+104>>2],i[g+508>>2]=A,A=i[I+100>>2],i[g+496>>2]=i[I+96>>2],i[g+500>>2]=A,A=i[I+124>>2],i[g+488>>2]=i[I+120>>2],i[g+492>>2]=A,A=i[I+116>>2],i[g+480>>2]=i[I+112>>2],i[g+484>>2]=A,AI(k=g+512|0,g+496|0,g+480|0),A=i[g+524>>2],i[I+120>>2]=i[g+520>>2],i[I+124>>2]=A,A=i[g+516>>2],i[I+112>>2]=i[g+512>>2],i[I+116>>2]=A,A=i[I+92>>2],i[g+472>>2]=i[I+88>>2],i[g+476>>2]=A,A=i[I+84>>2],i[g+464>>2]=i[I+80>>2],i[g+468>>2]=A,A=i[I+108>>2],i[g+456>>2]=i[I+104>>2],i[g+460>>2]=A,A=i[I+100>>2],i[g+448>>2]=i[I+96>>2],i[g+452>>2]=A,AI(k,g+464|0,g+448|0),A=i[g+524>>2],i[I+104>>2]=i[g+520>>2],i[I+108>>2]=A,A=i[g+516>>2],i[I+96>>2]=i[g+512>>2],i[I+100>>2]=A,A=i[I+76>>2],i[g+440>>2]=i[I+72>>2],i[g+444>>2]=A,n=i[4+(A=I- -64|0)>>2],i[g+432>>2]=i[A>>2],i[g+436>>2]=n,n=i[I+92>>2],i[g+424>>2]=i[I+88>>2],i[g+428>>2]=n,n=i[I+84>>2],i[g+416>>2]=i[I+80>>2],i[g+420>>2]=n,AI(k,g+432|0,g+416|0),n=i[g+524>>2],i[I+88>>2]=i[g+520>>2],i[I+92>>2]=n,n=i[g+516>>2],i[I+80>>2]=i[g+512>>2],i[I+84>>2]=n,n=i[I+60>>2],i[g+408>>2]=i[I+56>>2],i[g+412>>2]=n,n=i[I+52>>2],i[g+400>>2]=i[I+48>>2],i[g+404>>2]=n,n=i[I+76>>2],i[g+392>>2]=i[I+72>>2],i[g+396>>2]=n,n=i[A+4>>2],i[g+384>>2]=i[A>>2],i[g+388>>2]=n,AI(k,g+400|0,g+384|0),n=i[g+524>>2],i[I+72>>2]=i[g+520>>2],i[I+76>>2]=n,n=i[g+516>>2],i[A>>2]=i[g+512>>2],i[A+4>>2]=n,n=i[I+44>>2],i[g+376>>2]=i[I+40>>2],i[g+380>>2]=n,n=i[I+36>>2],i[g+368>>2]=i[I+32>>2],i[g+372>>2]=n,n=i[I+60>>2],i[g+360>>2]=i[I+56>>2],i[g+364>>2]=n,n=i[I+52>>2],i[g+352>>2]=i[I+48>>2],i[g+356>>2]=n,AI(k,g+368|0,g+352|0),n=i[g+524>>2],i[I+56>>2]=i[g+520>>2],i[I+60>>2]=n,n=i[g+516>>2],i[I+48>>2]=i[g+512>>2],i[I+52>>2]=n,n=i[I+28>>2],i[g+344>>2]=i[I+24>>2],i[g+348>>2]=n,n=i[I+20>>2],i[g+336>>2]=i[I+16>>2],i[g+340>>2]=n,n=i[I+44>>2],i[g+328>>2]=i[I+40>>2],i[g+332>>2]=n,n=i[I+36>>2],i[g+320>>2]=i[I+32>>2],i[g+324>>2]=n,AI(k,g+336|0,g+320|0),n=i[g+524>>2],i[I+40>>2]=i[g+520>>2],i[I+44>>2]=n,n=i[g+516>>2],i[I+32>>2]=i[g+512>>2],i[I+36>>2]=n,n=i[I+12>>2],i[g+312>>2]=i[I+8>>2],i[g+316>>2]=n,n=i[I+4>>2],i[g+304>>2]=i[I>>2],i[g+308>>2]=n,n=i[I+28>>2],i[g+296>>2]=i[I+24>>2],i[g+300>>2]=n,n=i[I+20>>2],i[g+288>>2]=i[I+16>>2],i[g+292>>2]=n,AI(k,g+304|0,g+288|0),n=i[g+524>>2],i[I+24>>2]=i[g+520>>2],i[I+28>>2]=n,n=i[g+516>>2],i[I+16>>2]=i[g+512>>2],i[I+20>>2]=n,n=i[g+540>>2],i[g+280>>2]=i[g+536>>2],i[g+284>>2]=n,n=i[g+532>>2],i[g+272>>2]=i[g+528>>2],i[g+276>>2]=n,n=i[I+12>>2],i[g+264>>2]=i[I+8>>2],i[g+268>>2]=n,n=i[I+4>>2],i[g+256>>2]=i[I>>2],i[g+260>>2]=n,AI(k,g+272|0,g+256|0),n=i[g+524>>2],i[I+8>>2]=i[g+520>>2],i[I+12>>2]=n,n=i[g+516>>2],i[I>>2]=i[g+512>>2],i[I+4>>2]=n,i[I+12>>2]=(o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24)^f,i[I+8>>2]=(o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24)^D,i[I+4>>2]=(o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24)^h,i[I>>2]=(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24)^p,i[A>>2]=(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24)^y,i[I+68>>2]=(o[I+68|0]|o[I+69|0]<<8|o[I+70|0]<<16|o[I+71|0]<<24)^e,i[I+72>>2]=(o[I+72|0]|o[I+73|0]<<8|o[I+74|0]<<16|o[I+75|0]<<24)^r,i[I+76>>2]=(o[I+76|0]|o[I+77|0]<<8|o[I+78|0]<<16|o[I+79|0]<<24)^w,w=i[I+124>>2],i[g+536>>2]=i[I+120>>2],i[g+540>>2]=w,w=i[I+116>>2],i[g+528>>2]=i[I+112>>2],i[g+532>>2]=w,w=i[I+108>>2],i[g+248>>2]=i[I+104>>2],i[g+252>>2]=w,w=i[I+100>>2],i[g+240>>2]=i[I+96>>2],i[g+244>>2]=w,w=i[I+124>>2],i[g+232>>2]=i[I+120>>2],i[g+236>>2]=w,w=i[I+116>>2],i[g+224>>2]=i[I+112>>2],i[g+228>>2]=w,AI(k,g+240|0,g+224|0),w=i[g+524>>2],i[I+120>>2]=i[g+520>>2],i[I+124>>2]=w,w=i[g+516>>2],i[I+112>>2]=i[g+512>>2],i[I+116>>2]=w,w=i[I+92>>2],i[g+216>>2]=i[I+88>>2],i[g+220>>2]=w,w=i[I+84>>2],i[g+208>>2]=i[I+80>>2],i[g+212>>2]=w,w=i[I+108>>2],i[g+200>>2]=i[I+104>>2],i[g+204>>2]=w,w=i[I+100>>2],i[g+192>>2]=i[I+96>>2],i[g+196>>2]=w,AI(k,g+208|0,g+192|0),w=i[g+524>>2],i[I+104>>2]=i[g+520>>2],i[I+108>>2]=w,w=i[g+516>>2],i[I+96>>2]=i[g+512>>2],i[I+100>>2]=w,w=i[I+76>>2],i[g+184>>2]=i[I+72>>2],i[g+188>>2]=w,w=i[A+4>>2],i[g+176>>2]=i[A>>2],i[g+180>>2]=w,w=i[I+92>>2],i[g+168>>2]=i[I+88>>2],i[g+172>>2]=w,w=i[I+84>>2],i[g+160>>2]=i[I+80>>2],i[g+164>>2]=w,AI(k,g+176|0,g+160|0),w=i[g+524>>2],i[I+88>>2]=i[g+520>>2],i[I+92>>2]=w,w=i[g+516>>2],i[I+80>>2]=i[g+512>>2],i[I+84>>2]=w,w=i[I+60>>2],i[g+152>>2]=i[I+56>>2],i[g+156>>2]=w,w=i[I+52>>2],i[g+144>>2]=i[I+48>>2],i[g+148>>2]=w,w=i[I+76>>2],i[g+136>>2]=i[I+72>>2],i[g+140>>2]=w,w=i[A+4>>2],i[g+128>>2]=i[A>>2],i[g+132>>2]=w,AI(k,g+144|0,g+128|0),w=i[g+524>>2],i[I+72>>2]=i[g+520>>2],i[I+76>>2]=w,w=i[g+516>>2],i[A>>2]=i[g+512>>2],i[A+4>>2]=w,w=i[I+44>>2],i[g+120>>2]=i[I+40>>2],i[g+124>>2]=w,w=i[I+36>>2],i[g+112>>2]=i[I+32>>2],i[g+116>>2]=w,w=i[I+60>>2],i[g+104>>2]=i[I+56>>2],i[g+108>>2]=w,w=i[I+52>>2],i[g+96>>2]=i[I+48>>2],i[g+100>>2]=w,AI(k,g+112|0,g+96|0),w=i[g+524>>2],i[I+56>>2]=i[g+520>>2],i[I+60>>2]=w,w=i[g+516>>2],i[I+48>>2]=i[g+512>>2],i[I+52>>2]=w,w=i[I+28>>2],i[g+88>>2]=i[I+24>>2],i[g+92>>2]=w,w=i[I+20>>2],i[g+80>>2]=i[I+16>>2],i[g+84>>2]=w,w=i[I+44>>2],i[g+72>>2]=i[I+40>>2],i[g+76>>2]=w,w=i[I+36>>2],i[g+64>>2]=i[I+32>>2],i[g+68>>2]=w,AI(k,g+80|0,g- -64|0),w=i[g+524>>2],i[I+40>>2]=i[g+520>>2],i[I+44>>2]=w,w=i[g+516>>2],i[I+32>>2]=i[g+512>>2],i[I+36>>2]=w,w=i[I+12>>2],i[g+56>>2]=i[I+8>>2],i[g+60>>2]=w,w=i[I+4>>2],i[g+48>>2]=i[I>>2],i[g+52>>2]=w,w=i[I+28>>2],i[g+40>>2]=i[I+24>>2],i[g+44>>2]=w,w=i[I+20>>2],i[g+32>>2]=i[I+16>>2],i[g+36>>2]=w,AI(k,g+48|0,g+32|0),w=i[g+524>>2],i[I+24>>2]=i[g+520>>2],i[I+28>>2]=w,w=i[g+516>>2],i[I+16>>2]=i[g+512>>2],i[I+20>>2]=w,w=i[g+540>>2],i[g+24>>2]=i[g+536>>2],i[g+28>>2]=w,w=i[g+532>>2],i[g+16>>2]=i[g+528>>2],i[g+20>>2]=w,w=i[I+12>>2],i[g+8>>2]=i[I+8>>2],i[g+12>>2]=w,w=i[I+4>>2],i[g>>2]=i[I>>2],i[g+4>>2]=w,AI(k,g+16|0,g),k=i[g+524>>2],i[I+8>>2]=i[g+520>>2],i[I+12>>2]=k,k=i[g+516>>2],i[I>>2]=i[g+512>>2],i[I+4>>2]=k,i[I+12>>2]=(o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24)^t,i[I+8>>2]=(o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24)^c,i[I+4>>2]=(o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24)^_,i[I>>2]=(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24)^a,i[A>>2]=(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24)^E,i[I+68>>2]=(o[I+68|0]|o[I+69|0]<<8|o[I+70|0]<<16|o[I+71|0]<<24)^Q,i[I+72>>2]=(o[I+72|0]|o[I+73|0]<<8|o[I+74|0]<<16|o[I+75|0]<<24)^B,i[I+76>>2]=(o[I+76|0]|o[I+77|0]<<8|o[I+78|0]<<16|o[I+79|0]<<24)^C,s=g+544|0}function Y(A,I,g,B,Q){var E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0;for(s=E=s-288|0,D=(o[Q+44|0]|o[Q+45|0]<<8|o[Q+46|0]<<16|o[Q+47|0]<<24)^B>>>29,f=(o[Q+40|0]|o[Q+41|0]<<8|o[Q+42|0]<<16|o[Q+43|0]<<24)^B<<3,p=(o[Q+36|0]|o[Q+37|0]<<8|o[Q+38|0]<<16|o[Q+39|0]<<24)^g>>>29,B=(o[0|(c=Q+32|0)]|o[c+1|0]<<8|o[c+2|0]<<16|o[c+3|0]<<24)^g<<3,y=Q+16|0,r=Q+48|0,_=Q- -64|0,e=Q+80|0,a=Q+96|0,t=Q+112|0;g=i[t+12>>2],i[E+280>>2]=i[t+8>>2],i[E+284>>2]=g,g=i[t+4>>2],i[E+272>>2]=i[t>>2],i[E+276>>2]=g,g=i[a+12>>2],i[E+248>>2]=i[a+8>>2],i[E+252>>2]=g,g=i[a+4>>2],i[E+240>>2]=i[a>>2],i[E+244>>2]=g,g=i[t+12>>2],i[E+232>>2]=i[t+8>>2],i[E+236>>2]=g,g=i[t+4>>2],i[E+224>>2]=i[t>>2],i[E+228>>2]=g,AI(h=E+256|0,E+240|0,E+224|0),g=i[E+268>>2],i[t+8>>2]=i[E+264>>2],i[t+12>>2]=g,g=i[E+260>>2],i[t>>2]=i[E+256>>2],i[t+4>>2]=g,g=i[e+12>>2],i[E+216>>2]=i[e+8>>2],i[E+220>>2]=g,g=i[e+4>>2],i[E+208>>2]=i[e>>2],i[E+212>>2]=g,g=i[a+12>>2],i[E+200>>2]=i[a+8>>2],i[E+204>>2]=g,g=i[a+4>>2],i[E+192>>2]=i[a>>2],i[E+196>>2]=g,AI(h,E+208|0,E+192|0),g=i[E+268>>2],i[a+8>>2]=i[E+264>>2],i[a+12>>2]=g,g=i[E+260>>2],i[a>>2]=i[E+256>>2],i[a+4>>2]=g,g=i[_+12>>2],i[E+184>>2]=i[_+8>>2],i[E+188>>2]=g,g=i[_+4>>2],i[E+176>>2]=i[_>>2],i[E+180>>2]=g,g=i[e+12>>2],i[E+168>>2]=i[e+8>>2],i[E+172>>2]=g,g=i[e+4>>2],i[E+160>>2]=i[e>>2],i[E+164>>2]=g,AI(h,E+176|0,E+160|0),g=i[E+268>>2],i[e+8>>2]=i[E+264>>2],i[e+12>>2]=g,g=i[E+260>>2],i[e>>2]=i[E+256>>2],i[e+4>>2]=g,g=i[r+12>>2],i[E+152>>2]=i[r+8>>2],i[E+156>>2]=g,g=i[r+4>>2],i[E+144>>2]=i[r>>2],i[E+148>>2]=g,g=i[_+12>>2],i[E+136>>2]=i[_+8>>2],i[E+140>>2]=g,g=i[_+4>>2],i[E+128>>2]=i[_>>2],i[E+132>>2]=g,AI(h,E+144|0,E+128|0),g=i[E+268>>2],i[_+8>>2]=i[E+264>>2],i[_+12>>2]=g,g=i[E+260>>2],i[_>>2]=i[E+256>>2],i[_+4>>2]=g,g=i[c+12>>2],i[E+120>>2]=i[c+8>>2],i[E+124>>2]=g,g=i[c+4>>2],i[E+112>>2]=i[c>>2],i[E+116>>2]=g,g=i[r+12>>2],i[E+104>>2]=i[r+8>>2],i[E+108>>2]=g,g=i[r+4>>2],i[E+96>>2]=i[r>>2],i[E+100>>2]=g,AI(h,E+112|0,E+96|0),g=i[E+268>>2],i[r+8>>2]=i[E+264>>2],i[r+12>>2]=g,g=i[E+260>>2],i[r>>2]=i[E+256>>2],i[r+4>>2]=g,g=i[y+12>>2],i[E+88>>2]=i[y+8>>2],i[E+92>>2]=g,g=i[y+4>>2],i[E+80>>2]=i[y>>2],i[E+84>>2]=g,g=i[c+12>>2],i[E+72>>2]=i[c+8>>2],i[E+76>>2]=g,g=i[c+4>>2],i[E+64>>2]=i[c>>2],i[E+68>>2]=g,AI(h,E+80|0,E- -64|0),g=i[E+268>>2],i[c+8>>2]=i[E+264>>2],i[c+12>>2]=g,g=i[E+260>>2],i[c>>2]=i[E+256>>2],i[c+4>>2]=g,g=i[Q+12>>2],i[E+56>>2]=i[Q+8>>2],i[E+60>>2]=g,g=i[Q+4>>2],i[E+48>>2]=i[Q>>2],i[E+52>>2]=g,g=i[y+12>>2],i[E+40>>2]=i[y+8>>2],i[E+44>>2]=g,g=i[y+4>>2],i[E+32>>2]=i[y>>2],i[E+36>>2]=g,AI(h,E+48|0,E+32|0),g=i[E+268>>2],i[y+8>>2]=i[E+264>>2],i[y+12>>2]=g,g=i[E+260>>2],i[y>>2]=i[E+256>>2],i[y+4>>2]=g,g=i[E+284>>2],i[E+24>>2]=i[E+280>>2],i[E+28>>2]=g,g=i[E+276>>2],i[E+16>>2]=i[E+272>>2],i[E+20>>2]=g,g=i[Q+12>>2],i[E+8>>2]=i[Q+8>>2],i[E+12>>2]=g,g=i[Q+4>>2],i[E>>2]=i[Q>>2],i[E+4>>2]=g,AI(h,E+16|0,E),g=i[E+268>>2],i[Q+8>>2]=i[E+264>>2],i[Q+12>>2]=g,g=i[E+260>>2],i[Q>>2]=i[E+256>>2],i[Q+4>>2]=g,n=D^(o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24),i[Q+12>>2]=n,k=f^(o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24),i[Q+8>>2]=k,F=p^(o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24),i[Q+4>>2]=F,S=B^(o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24),i[Q>>2]=S,N=B^(o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24),i[_>>2]=N,G=p^(o[Q+68|0]|o[Q+69|0]<<8|o[Q+70|0]<<16|o[Q+71|0]<<24),i[Q+68>>2]=G,M=f^(o[Q+72|0]|o[Q+73|0]<<8|o[Q+74|0]<<16|o[Q+75|0]<<24),i[Q+72>>2]=M,K=D^(o[Q+76|0]|o[Q+77|0]<<8|o[Q+78|0]<<16|o[Q+79|0]<<24),i[Q+76>>2]=K,7!=(0|(w=w+1|0)););A:{I:{g:{if(g=I-16|0){if(16==(0|g))break g;break I}_=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,c=o[Q+48|0]|o[Q+49|0]<<8|o[Q+50|0]<<16|o[Q+51|0]<<24,y=o[Q+32|0]|o[Q+33|0]<<8|o[Q+34|0]<<16|o[Q+35|0]<<24,r=o[Q+96|0]|o[Q+97|0]<<8|o[Q+98|0]<<16|o[Q+99|0]<<24,e=o[Q+80|0]|o[Q+81|0]<<8|o[Q+82|0]<<16|o[Q+83|0]<<24,a=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,t=o[Q+52|0]|o[Q+53|0]<<8|o[Q+54|0]<<16|o[Q+55|0]<<24,h=o[Q+36|0]|o[Q+37|0]<<8|o[Q+38|0]<<16|o[Q+39|0]<<24,D=o[Q+100|0]|o[Q+101|0]<<8|o[Q+102|0]<<16|o[Q+103|0]<<24,f=o[Q+84|0]|o[Q+85|0]<<8|o[Q+86|0]<<16|o[Q+87|0]<<24,p=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,w=o[Q+56|0]|o[Q+57|0]<<8|o[Q+58|0]<<16|o[Q+59|0]<<24,B=o[Q+40|0]|o[Q+41|0]<<8|o[Q+42|0]<<16|o[Q+43|0]<<24,g=o[Q+104|0]|o[Q+105|0]<<8|o[Q+106|0]<<16|o[Q+107|0]<<24,I=o[Q+88|0]|o[Q+89|0]<<8|o[Q+90|0]<<16|o[Q+91|0]<<24,Q=n^(o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24)^(o[Q+60|0]|o[Q+61|0]<<8|o[Q+62|0]<<16|o[Q+63|0]<<24)^(o[Q+44|0]|o[Q+45|0]<<8|o[Q+46|0]<<16|o[Q+47|0]<<24)^(o[Q+92|0]|o[Q+93|0]<<8|o[Q+94|0]<<16|o[Q+95|0]<<24)^(o[Q+108|0]|o[Q+109|0]<<8|o[Q+110|0]<<16|o[Q+111|0]<<24)^K,C[A+12|0]=Q,C[A+13|0]=Q>>>8,C[A+14|0]=Q>>>16,C[A+15|0]=Q>>>24,I=p^w^B^I^g^M^k,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=a^t^h^D^f^G^F,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=_^c^y^r^e^N^S,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24;break A}t=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,h=o[Q+48|0]|o[Q+49|0]<<8|o[Q+50|0]<<16|o[Q+51|0]<<24,D=o[Q+32|0]|o[Q+33|0]<<8|o[Q+34|0]<<16|o[Q+35|0]<<24,f=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,p=o[Q+52|0]|o[Q+53|0]<<8|o[Q+54|0]<<16|o[Q+55|0]<<24,w=o[Q+36|0]|o[Q+37|0]<<8|o[Q+38|0]<<16|o[Q+39|0]<<24,B=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,g=o[Q+56|0]|o[Q+57|0]<<8|o[Q+58|0]<<16|o[Q+59|0]<<24,I=o[Q+40|0]|o[Q+41|0]<<8|o[Q+42|0]<<16|o[Q+43|0]<<24,a=n^(o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24)^(o[Q+60|0]|o[Q+61|0]<<8|o[Q+62|0]<<16|o[Q+63|0]<<24)^(o[Q+44|0]|o[Q+45|0]<<8|o[Q+46|0]<<16|o[Q+47|0]<<24),C[A+12|0]=a,C[A+13|0]=a>>>8,C[A+14|0]=a>>>16,C[A+15|0]=a>>>24,I=B^I^g^k,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=f^p^w^F,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=t^h^D^S,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,r=o[Q+80|0]|o[Q+81|0]<<8|o[Q+82|0]<<16|o[Q+83|0]<<24,e=o[0|(I=Q- -64|0)]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,a=o[Q+112|0]|o[Q+113|0]<<8|o[Q+114|0]<<16|o[Q+115|0]<<24,t=o[Q+96|0]|o[Q+97|0]<<8|o[Q+98|0]<<16|o[Q+99|0]<<24,h=o[Q+84|0]|o[Q+85|0]<<8|o[Q+86|0]<<16|o[Q+87|0]<<24,D=o[Q+68|0]|o[Q+69|0]<<8|o[Q+70|0]<<16|o[Q+71|0]<<24,f=o[Q+116|0]|o[Q+117|0]<<8|o[Q+118|0]<<16|o[Q+119|0]<<24,p=o[Q+100|0]|o[Q+101|0]<<8|o[Q+102|0]<<16|o[Q+103|0]<<24,w=o[Q+88|0]|o[Q+89|0]<<8|o[Q+90|0]<<16|o[Q+91|0]<<24,B=o[Q+72|0]|o[Q+73|0]<<8|o[Q+74|0]<<16|o[Q+75|0]<<24,g=o[Q+120|0]|o[Q+121|0]<<8|o[Q+122|0]<<16|o[Q+123|0]<<24,I=o[Q+104|0]|o[Q+105|0]<<8|o[Q+106|0]<<16|o[Q+107|0]<<24,Q=(o[Q+92|0]|o[Q+93|0]<<8|o[Q+94|0]<<16|o[Q+95|0]<<24)^(o[Q+76|0]|o[Q+77|0]<<8|o[Q+78|0]<<16|o[Q+79|0]<<24)^(o[Q+124|0]|o[Q+125|0]<<8|o[Q+126|0]<<16|o[Q+127|0]<<24)^(o[Q+108|0]|o[Q+109|0]<<8|o[Q+110|0]<<16|o[Q+111|0]<<24),C[A+28|0]=Q,C[A+29|0]=Q>>>8,C[A+30|0]=Q>>>16,C[A+31|0]=Q>>>24,I=w^B^I^g,C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,I=h^D^f^p,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=r^e^a^t,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24;break A}bg(A,0,I)}s=E+288|0}function J(A,I,g,C){var B=0,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0;for(B=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,i[g>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[g+4>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,i[g+8>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,i[g+12>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[g+16>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[g+20>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[g+24>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[g+28>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+32|0]|o[I+33|0]<<8|o[I+34|0]<<16|o[I+35|0]<<24,i[g+32>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+36|0]|o[I+37|0]<<8|o[I+38|0]<<16|o[I+39|0]<<24,i[g+36>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+40|0]|o[I+41|0]<<8|o[I+42|0]<<16|o[I+43|0]<<24,i[g+40>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+44|0]|o[I+45|0]<<8|o[I+46|0]<<16|o[I+47|0]<<24,i[g+44>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+48|0]|o[I+49|0]<<8|o[I+50|0]<<16|o[I+51|0]<<24,i[g+48>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+52|0]|o[I+53|0]<<8|o[I+54|0]<<16|o[I+55|0]<<24,i[g+52>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,B=o[I+56|0]|o[I+57|0]<<8|o[I+58|0]<<16|o[I+59|0]<<24,i[g+56>>2]=B<<24|(65280&B)<<8|B>>>8&65280|B>>>24,I=o[I+60|0]|o[I+61|0]<<8|o[I+62|0]<<16|o[I+63|0]<<24,i[g+60>>2]=I<<24|(65280&I)<<8|I>>>8&65280|I>>>24,I=i[A+28>>2],i[C+24>>2]=i[A+24>>2],i[C+28>>2]=I,I=i[A+20>>2],i[C+16>>2]=i[A+16>>2],i[C+20>>2]=I,I=i[A+12>>2],i[C+8>>2]=i[A+8>>2],i[C+12>>2]=I,I=i[A+4>>2],i[C>>2]=i[A>>2],i[C+4>>2]=I;_=i[C+28>>2],B=(I=n<<2)+g|0,E=i[C+16>>2],c=i[B>>2]+(Lg(E,26)^Lg(E,21)^Lg(E,7))|0,r=(_=((Q=i[I+35264>>2]+c|0)+(E&((c=i[C+24>>2])^(e=i[C+20>>2]))^c)|0)+_|0)+i[C+12>>2]|0,i[C+12>>2]=r,_=(s=_+(Lg(t=i[C>>2],30)^Lg(t,19)^Lg(t,10))|0)+(t&((Q=i[C+8>>2])|(a=i[C+4>>2]))|Q&a)|0,i[C+28>>2]=_,Q=(s=Q)+(c=(i[(D=(Q=4|I)+g|0)>>2]+((c+(e^r&(E^e))|0)+(Lg(r,26)^Lg(r,21)^Lg(r,7))|0)|0)+i[Q+35264>>2]|0)|0,i[C+8>>2]=Q,c=(c+(_&(a|t)|a&t)|0)+(Lg(_,30)^Lg(_,19)^Lg(_,10))|0,i[C+24>>2]=c,e=(s=a)+(a=(((e+i[(w=(a=8|I)+g|0)>>2]|0)+i[a+35264>>2]|0)+(E^Q&(E^r))|0)+(Lg(Q,26)^Lg(Q,21)^Lg(Q,7))|0)|0,i[C+4>>2]=e,a=a+((c&(_|t)|_&t)+(Lg(c,30)^Lg(c,19)^Lg(c,10))|0)|0,i[C+20>>2]=a,E=(s=t)+(t=(((E+i[(k=(t=12|I)+g|0)>>2]|0)+i[t+35264>>2]|0)+(r^e&(Q^r))|0)+(Lg(e,26)^Lg(e,21)^Lg(e,7))|0)|0,i[C>>2]=E,t=t+((a&(_|c)|_&c)+(Lg(a,30)^Lg(a,19)^Lg(a,10))|0)|0,i[C+16>>2]=t,r=(y=((((s=r)+i[(F=(r=16|I)+g|0)>>2]|0)+i[r+35264>>2]|0)+(Q^E&(Q^e))|0)+(Lg(E,26)^Lg(E,21)^Lg(E,7))|0)+((t&(a|c)|a&c)+(Lg(t,30)^Lg(t,19)^Lg(t,10))|0)|0,i[C+12>>2]=r,y=_+y|0,i[C+28>>2]=y,_=(Q=(((Q+i[(S=(_=20|I)+g|0)>>2]|0)+i[_+35264>>2]|0)+(e^y&(E^e))|0)+(Lg(y,26)^Lg(y,21)^Lg(y,7))|0)+((r&(a|t)|a&t)+(Lg(r,30)^Lg(r,19)^Lg(r,10))|0)|0,i[C+8>>2]=_,Q=Q+c|0,i[C+24>>2]=Q,c=(e=(((e+i[(N=(c=24|I)+g|0)>>2]|0)+i[c+35264>>2]|0)+(E^Q&(E^y))|0)+(Lg(Q,26)^Lg(Q,21)^Lg(Q,7))|0)+((_&(t|r)|t&r)+(Lg(_,30)^Lg(_,19)^Lg(_,10))|0)|0,i[C+4>>2]=c,e=a+e|0,i[C+20>>2]=e,a=(E=(((E+i[(G=(a=28|I)+g|0)>>2]|0)+i[a+35264>>2]|0)+(y^e&(Q^y))|0)+(Lg(e,26)^Lg(e,21)^Lg(e,7))|0)+((c&(_|r)|_&r)+(Lg(c,30)^Lg(c,19)^Lg(c,10))|0)|0,i[C>>2]=a,E=E+t|0,i[C+16>>2]=E,t=(y=(((y+i[(M=(t=32|I)+g|0)>>2]|0)+i[t+35264>>2]|0)+(Q^E&(Q^e))|0)+(Lg(E,26)^Lg(E,21)^Lg(E,7))|0)+((a&(_|c)|_&c)+(Lg(a,30)^Lg(a,19)^Lg(a,10))|0)|0,i[C+28>>2]=t,y=r+y|0,i[C+12>>2]=y,r=(Q=(((Q+i[(K=(r=36|I)+g|0)>>2]|0)+i[r+35264>>2]|0)+(e^y&(E^e))|0)+(Lg(y,26)^Lg(y,21)^Lg(y,7))|0)+((t&(a|c)|a&c)+(Lg(t,30)^Lg(t,19)^Lg(t,10))|0)|0,i[C+24>>2]=r,Q=Q+_|0,i[C+8>>2]=Q,_=(e=(((e+i[(U=(_=40|I)+g|0)>>2]|0)+i[_+35264>>2]|0)+(E^Q&(E^y))|0)+(Lg(Q,26)^Lg(Q,21)^Lg(Q,7))|0)+((r&(a|t)|a&t)+(Lg(r,30)^Lg(r,19)^Lg(r,10))|0)|0,i[C+20>>2]=_,e=c+e|0,i[C+4>>2]=e,s=(c=44|I)+g|0,c=(E=((E+(i[c+35264>>2]+i[s>>2]|0)|0)+(y^e&(Q^y))|0)+(Lg(e,26)^Lg(e,21)^Lg(e,7))|0)+((_&(t|r)|t&r)+(Lg(_,30)^Lg(_,19)^Lg(_,10))|0)|0,i[C+16>>2]=c,a=a+E|0,i[C>>2]=a,p=(E=48|I)+g|0,E=(y=((y+(i[E+35264>>2]+i[p>>2]|0)|0)+(Q^a&(Q^e))|0)+(Lg(a,26)^Lg(a,21)^Lg(a,7))|0)+((c&(_|r)|_&r)+(Lg(c,30)^Lg(c,19)^Lg(c,10))|0)|0,i[C+12>>2]=E,t=t+y|0,i[C+28>>2]=t,f=(y=52|I)+g|0,Q=(y=(((i[y+35264>>2]+i[f>>2]|0)+Q|0)+(e^t&(a^e))|0)+(Lg(t,26)^Lg(t,21)^Lg(t,7))|0)+((E&(_|c)|_&c)+(Lg(E,30)^Lg(E,19)^Lg(E,10))|0)|0,i[C+8>>2]=Q,r=r+y|0,i[C+24>>2]=r,y=(h=56|I)+g|0,e=(h=(((i[h+35264>>2]+i[y>>2]|0)+e|0)+(a^r&(a^t))|0)+(Lg(r,26)^Lg(r,21)^Lg(r,7))|0)+((Q&(c|E)|c&E)+(Lg(Q,30)^Lg(Q,19)^Lg(Q,10))|0)|0,i[C+4>>2]=e,_=_+h|0,i[C+20>>2]=_,h=(I|=60)+g|0,_=(I=((a+(i[I+35264>>2]+i[h>>2]|0)|0)+(t^_&(t^r))|0)+(Lg(_,26)^Lg(_,21)^Lg(_,7))|0)+((e&(Q|E)|Q&E)+(Lg(e,30)^Lg(e,19)^Lg(e,10))|0)|0,i[C>>2]=_,i[C+16>>2]=I+c,48!=(0|n);)a=i[K>>2],n=n+16|0,I=i[y>>2],_=(Q=i[B>>2]+(a+(Lg(I,15)^Lg(I,13)^I>>>10)|0)|0)+(Lg(c=i[D>>2],25)^Lg(c,14)^c>>>3)|0,i[(n<<2)+g>>2]=_,r=(E=(Q=(t=i[U>>2])+c|0)+(Lg(c=i[h>>2],15)^Lg(c,13)^c>>>10)|0)+(Lg(Q=i[w>>2],25)^Lg(Q,14)^Q>>>3)|0,i[B+68>>2]=r,e=(s=((E=Q)+(Q=i[s>>2])|0)+(Lg(_,15)^Lg(_,13)^_>>>10)|0)+(Lg(E=i[k>>2],25)^Lg(E,14)^E>>>3)|0,i[B+72>>2]=e,y=(h=((s=E)+(E=i[p>>2])|0)+(Lg(r,15)^Lg(r,13)^r>>>10)|0)+(Lg(s=i[F>>2],25)^Lg(s,14)^s>>>3)|0,i[B+76>>2]=y,p=(h=((h=s)+(s=i[f>>2])|0)+(Lg(e,15)^Lg(e,13)^e>>>10)|0)+(Lg(f=i[S>>2],25)^Lg(f,14)^f>>>3)|0,i[B+80>>2]=p,f=(D=(I+f|0)+(Lg(y,15)^Lg(y,13)^y>>>10)|0)+(Lg(h=i[N>>2],25)^Lg(h,14)^h>>>3)|0,i[B+84>>2]=f,h=((c+h|0)+(Lg(w=i[G>>2],25)^Lg(w,14)^w>>>3)|0)+(Lg(p,15)^Lg(p,13)^p>>>10)|0,i[B+88>>2]=h,r=((D=i[M>>2])+(r+(Lg(a,25)^Lg(a,14)^a>>>3)|0)|0)+(Lg(h,15)^Lg(h,13)^h>>>10)|0,i[B+96>>2]=r,D=((_+w|0)+(Lg(D,25)^Lg(D,14)^D>>>3)|0)+(Lg(f,15)^Lg(f,13)^f>>>10)|0,i[B+92>>2]=D,y=(y+(t+(Lg(Q,25)^Lg(Q,14)^Q>>>3)|0)|0)+(Lg(r,15)^Lg(r,13)^r>>>10)|0,i[B+104>>2]=y,a=(e+(a+(Lg(t,25)^Lg(t,14)^t>>>3)|0)|0)+(Lg(D,15)^Lg(D,13)^D>>>10)|0,i[B+100>>2]=a,t=(f+(E+(Lg(s,25)^Lg(s,14)^s>>>3)|0)|0)+(Lg(y,15)^Lg(y,13)^y>>>10)|0,i[B+112>>2]=t,a=(p+(Q+(Lg(E,25)^Lg(E,14)^E>>>3)|0)|0)+(Lg(a,15)^Lg(a,13)^a>>>10)|0,i[B+108>>2]=a,b=B,H=(D+(I+(Lg(c,25)^Lg(c,14)^c>>>3)|0)|0)+(Lg(t,15)^Lg(t,13)^t>>>10)|0,i[b+120>>2]=H,I=(h+(s+(Lg(I,25)^Lg(I,14)^I>>>3)|0)|0)+(Lg(a,15)^Lg(a,13)^a>>>10)|0,i[B+116>>2]=I,b=B,H=(r+(c+(Lg(_,25)^Lg(_,14)^_>>>3)|0)|0)+(Lg(I,15)^Lg(I,13)^I>>>10)|0,i[b+124>>2]=H;i[A>>2]=_+i[A>>2],i[A+4>>2]=i[A+4>>2]+i[C+4>>2],i[A+8>>2]=i[A+8>>2]+i[C+8>>2],i[A+12>>2]=i[A+12>>2]+i[C+12>>2],i[A+16>>2]=i[A+16>>2]+i[C+16>>2],i[A+20>>2]=i[A+20>>2]+i[C+20>>2],i[A+24>>2]=i[A+24>>2]+i[C+24>>2],i[A+28>>2]=i[A+28>>2]+i[C+28>>2]}function d(A,I,g){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S,N,G,M,K,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0;s=B=s-288|0,t=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,r=o[g+48|0]|o[g+49|0]<<8|o[g+50|0]<<16|o[g+51|0]<<24,e=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,y=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,h=o[g+52|0]|o[g+53|0]<<8|o[g+54|0]<<16|o[g+55|0]<<24,D=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,f=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,p=o[g+56|0]|o[g+57|0]<<8|o[g+58|0]<<16|o[g+59|0]<<24,J=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,w=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,n=o[g+60|0]|o[g+61|0]<<8|o[g+62|0]<<16|o[g+63|0]<<24,b=o[g+32|0]|o[g+33|0]<<8|o[g+34|0]<<16|o[g+35|0]<<24,d=o[g+80|0]|o[g+81|0]<<8|o[g+82|0]<<16|o[g+83|0]<<24,k=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,F=o[g+112|0]|o[g+113|0]<<8|o[g+114|0]<<16|o[g+115|0]<<24,U=o[g+96|0]|o[g+97|0]<<8|o[g+98|0]<<16|o[g+99|0]<<24,H=o[g+36|0]|o[g+37|0]<<8|o[g+38|0]<<16|o[g+39|0]<<24,m=o[g+84|0]|o[g+85|0]<<8|o[g+86|0]<<16|o[g+87|0]<<24,S=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,N=o[g+116|0]|o[g+117|0]<<8|o[g+118|0]<<16|o[g+119|0]<<24,E=o[g+100|0]|o[g+101|0]<<8|o[g+102|0]<<16|o[g+103|0]<<24,Y=o[g+40|0]|o[g+41|0]<<8|o[g+42|0]<<16|o[g+43|0]<<24,l=o[g+88|0]|o[g+89|0]<<8|o[g+90|0]<<16|o[g+91|0]<<24,G=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,M=o[g+120|0]|o[g+121|0]<<8|o[g+122|0]<<16|o[g+123|0]<<24,a=o[g+104|0]|o[g+105|0]<<8|o[g+106|0]<<16|o[g+107|0]<<24,K=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,Q=(_=o[g+44|0]|o[g+45|0]<<8|o[g+46|0]<<16|o[g+47|0]<<24)^(c=o[g+108|0]|o[g+109|0]<<8|o[g+110|0]<<16|o[g+111|0]<<24)&(o[g+124|0]|o[g+125|0]<<8|o[g+126|0]<<16|o[g+127|0]<<24)^(o[g+92|0]|o[g+93|0]<<8|o[g+94|0]<<16|o[g+95|0]<<24)^(o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24),C[A+28|0]=Q,C[A+29|0]=Q>>>8,C[A+30|0]=Q>>>16,C[A+31|0]=Q>>>24,l=Y^a&M^l^G,C[A+24|0]=l,C[A+25|0]=l>>>8,C[A+26|0]=l>>>16,C[A+27|0]=l>>>24,m=H^E&N^m^S,C[A+20|0]=m,C[A+21|0]=m>>>8,C[A+22|0]=m>>>16,C[A+23|0]=m>>>24,d=b^U&F^d^k,C[A+16|0]=d,C[A+17|0]=d>>>8,C[A+18|0]=d>>>16,C[A+19|0]=d>>>24,J=n&_^J^w^c,C[A+12|0]=J,C[A+13|0]=J>>>8,C[A+14|0]=J>>>16,C[A+15|0]=J>>>24,Y=Y&p^D^f^a,C[A+8|0]=Y,C[A+9|0]=Y>>>8,C[A+10|0]=Y>>>16,C[A+11|0]=Y>>>24,H=H&h^e^y^E,C[A+4|0]=H,C[A+5|0]=H>>>8,C[A+6|0]=H>>>16,C[A+7|0]=H>>>24,b=U^b&r^t^K,C[0|A]=b,C[A+1|0]=b>>>8,C[A+2|0]=b>>>16,C[A+3|0]=b>>>24,A=i[g+124>>2],i[B+280>>2]=i[g+120>>2],i[B+284>>2]=A,A=i[g+116>>2],i[B+272>>2]=i[g+112>>2],i[B+276>>2]=A,A=i[g+108>>2],i[B+248>>2]=i[g+104>>2],i[B+252>>2]=A,A=i[g+100>>2],i[B+240>>2]=i[g+96>>2],i[B+244>>2]=A,A=i[g+124>>2],i[B+232>>2]=i[g+120>>2],i[B+236>>2]=A,A=i[g+116>>2],i[B+224>>2]=i[g+112>>2],i[B+228>>2]=A,AI(I=B+256|0,B+240|0,B+224|0),A=i[B+268>>2],i[g+120>>2]=i[B+264>>2],i[g+124>>2]=A,A=i[B+260>>2],i[g+112>>2]=i[B+256>>2],i[g+116>>2]=A,A=i[g+92>>2],i[B+216>>2]=i[g+88>>2],i[B+220>>2]=A,A=i[g+84>>2],i[B+208>>2]=i[g+80>>2],i[B+212>>2]=A,A=i[g+108>>2],i[B+200>>2]=i[g+104>>2],i[B+204>>2]=A,A=i[g+100>>2],i[B+192>>2]=i[g+96>>2],i[B+196>>2]=A,AI(I,B+208|0,B+192|0),A=i[B+268>>2],i[g+104>>2]=i[B+264>>2],i[g+108>>2]=A,A=i[B+260>>2],i[g+96>>2]=i[B+256>>2],i[g+100>>2]=A,A=i[g+76>>2],i[B+184>>2]=i[g+72>>2],i[B+188>>2]=A,U=i[4+(A=g- -64|0)>>2],i[B+176>>2]=i[A>>2],i[B+180>>2]=U,U=i[g+92>>2],i[B+168>>2]=i[g+88>>2],i[B+172>>2]=U,U=i[g+84>>2],i[B+160>>2]=i[g+80>>2],i[B+164>>2]=U,AI(I,B+176|0,B+160|0),U=i[B+268>>2],i[g+88>>2]=i[B+264>>2],i[g+92>>2]=U,U=i[B+260>>2],i[g+80>>2]=i[B+256>>2],i[g+84>>2]=U,U=i[g+60>>2],i[B+152>>2]=i[g+56>>2],i[B+156>>2]=U,U=i[g+52>>2],i[B+144>>2]=i[g+48>>2],i[B+148>>2]=U,U=i[g+76>>2],i[B+136>>2]=i[g+72>>2],i[B+140>>2]=U,U=i[A+4>>2],i[B+128>>2]=i[A>>2],i[B+132>>2]=U,AI(I,B+144|0,B+128|0),U=i[B+268>>2],i[g+72>>2]=i[B+264>>2],i[g+76>>2]=U,U=i[B+260>>2],i[A>>2]=i[B+256>>2],i[A+4>>2]=U,U=i[g+44>>2],i[B+120>>2]=i[g+40>>2],i[B+124>>2]=U,U=i[g+36>>2],i[B+112>>2]=i[g+32>>2],i[B+116>>2]=U,U=i[g+60>>2],i[B+104>>2]=i[g+56>>2],i[B+108>>2]=U,U=i[g+52>>2],i[B+96>>2]=i[g+48>>2],i[B+100>>2]=U,AI(I,B+112|0,B+96|0),U=i[B+268>>2],i[g+56>>2]=i[B+264>>2],i[g+60>>2]=U,U=i[B+260>>2],i[g+48>>2]=i[B+256>>2],i[g+52>>2]=U,U=i[g+28>>2],i[B+88>>2]=i[g+24>>2],i[B+92>>2]=U,U=i[g+20>>2],i[B+80>>2]=i[g+16>>2],i[B+84>>2]=U,U=i[g+44>>2],i[B+72>>2]=i[g+40>>2],i[B+76>>2]=U,U=i[g+36>>2],i[B+64>>2]=i[g+32>>2],i[B+68>>2]=U,AI(I,B+80|0,B- -64|0),U=i[B+268>>2],i[g+40>>2]=i[B+264>>2],i[g+44>>2]=U,U=i[B+260>>2],i[g+32>>2]=i[B+256>>2],i[g+36>>2]=U,U=i[g+12>>2],i[B+56>>2]=i[g+8>>2],i[B+60>>2]=U,U=i[g+4>>2],i[B+48>>2]=i[g>>2],i[B+52>>2]=U,U=i[g+28>>2],i[B+40>>2]=i[g+24>>2],i[B+44>>2]=U,U=i[g+20>>2],i[B+32>>2]=i[g+16>>2],i[B+36>>2]=U,AI(I,B+48|0,B+32|0),U=i[B+268>>2],i[g+24>>2]=i[B+264>>2],i[g+28>>2]=U,U=i[B+260>>2],i[g+16>>2]=i[B+256>>2],i[g+20>>2]=U,U=i[B+284>>2],i[B+24>>2]=i[B+280>>2],i[B+28>>2]=U,U=i[B+276>>2],i[B+16>>2]=i[B+272>>2],i[B+20>>2]=U,U=i[g+12>>2],i[B+8>>2]=i[g+8>>2],i[B+12>>2]=U,U=i[g+4>>2],i[B>>2]=i[g>>2],i[B+4>>2]=U,AI(I,B+16|0,B),I=i[B+268>>2],i[g+8>>2]=i[B+264>>2],i[g+12>>2]=I,I=i[B+260>>2],i[g>>2]=i[B+256>>2],i[g+4>>2]=I,i[g+12>>2]=J^(o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24),i[g+8>>2]=Y^(o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24),i[g+4>>2]=H^(o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24),i[g>>2]=b^(o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24),i[A>>2]=d^(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24),i[g+68>>2]=m^(o[g+68|0]|o[g+69|0]<<8|o[g+70|0]<<16|o[g+71|0]<<24),i[g+72>>2]=l^(o[g+72|0]|o[g+73|0]<<8|o[g+74|0]<<16|o[g+75|0]<<24),i[g+76>>2]=Q^(o[g+76|0]|o[g+77|0]<<8|o[g+78|0]<<16|o[g+79|0]<<24),s=B+288|0}function m(A,I,g){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S,N,G,M,K,U,b,H,Y,J,d,m,l=0;s=B=s-288|0,k=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,F=o[g+48|0]|o[g+49|0]<<8|o[g+50|0]<<16|o[g+51|0]<<24,Q=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,S=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,N=o[g+52|0]|o[g+53|0]<<8|o[g+54|0]<<16|o[g+55|0]<<24,E=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,G=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,M=o[g+56|0]|o[g+57|0]<<8|o[g+58|0]<<16|o[g+59|0]<<24,a=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,K=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,U=o[g+60|0]|o[g+61|0]<<8|o[g+62|0]<<16|o[g+63|0]<<24,l=o[g+32|0]|o[g+33|0]<<8|o[g+34|0]<<16|o[g+35|0]<<24,_=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,b=o[g+80|0]|o[g+81|0]<<8|o[g+82|0]<<16|o[g+83|0]<<24,H=o[g+112|0]|o[g+113|0]<<8|o[g+114|0]<<16|o[g+115|0]<<24,c=o[g+96|0]|o[g+97|0]<<8|o[g+98|0]<<16|o[g+99|0]<<24,t=o[g+36|0]|o[g+37|0]<<8|o[g+38|0]<<16|o[g+39|0]<<24,r=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,Y=o[g+84|0]|o[g+85|0]<<8|o[g+86|0]<<16|o[g+87|0]<<24,J=o[g+116|0]|o[g+117|0]<<8|o[g+118|0]<<16|o[g+119|0]<<24,e=o[g+100|0]|o[g+101|0]<<8|o[g+102|0]<<16|o[g+103|0]<<24,y=o[g+40|0]|o[g+41|0]<<8|o[g+42|0]<<16|o[g+43|0]<<24,h=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,d=o[g+88|0]|o[g+89|0]<<8|o[g+90|0]<<16|o[g+91|0]<<24,m=o[g+120|0]|o[g+121|0]<<8|o[g+122|0]<<16|o[g+123|0]<<24,D=o[g+104|0]|o[g+105|0]<<8|o[g+106|0]<<16|o[g+107|0]<<24,f=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=(p=o[g+44|0]|o[g+45|0]<<8|o[g+46|0]<<16|o[g+47|0]<<24)^(w=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24)^(n=o[g+108|0]|o[g+109|0]<<8|o[g+110|0]<<16|o[g+111|0]<<24)&(o[g+124|0]|o[g+125|0]<<8|o[g+126|0]<<16|o[g+127|0]<<24)^(o[g+92|0]|o[g+93|0]<<8|o[g+94|0]<<16|o[g+95|0]<<24),C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=D&m^d^h^y,C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,I=e&J^Y^r^t,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=l^c&H^b^_,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,I=U&p^K^a^n,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=y&M^G^E^D,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=t&N^S^Q^e,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=l&F^k^f^c,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,A=i[g+124>>2],i[B+280>>2]=i[g+120>>2],i[B+284>>2]=A,A=i[g+116>>2],i[B+272>>2]=i[g+112>>2],i[B+276>>2]=A,A=i[g+108>>2],i[B+248>>2]=i[g+104>>2],i[B+252>>2]=A,A=i[g+100>>2],i[B+240>>2]=i[g+96>>2],i[B+244>>2]=A,A=i[g+124>>2],i[B+232>>2]=i[g+120>>2],i[B+236>>2]=A,A=i[g+116>>2],i[B+224>>2]=i[g+112>>2],i[B+228>>2]=A,AI(I=B+256|0,B+240|0,B+224|0),A=i[B+268>>2],i[g+120>>2]=i[B+264>>2],i[g+124>>2]=A,A=i[B+260>>2],i[g+112>>2]=i[B+256>>2],i[g+116>>2]=A,A=i[g+92>>2],i[B+216>>2]=i[g+88>>2],i[B+220>>2]=A,A=i[g+84>>2],i[B+208>>2]=i[g+80>>2],i[B+212>>2]=A,A=i[g+108>>2],i[B+200>>2]=i[g+104>>2],i[B+204>>2]=A,A=i[g+100>>2],i[B+192>>2]=i[g+96>>2],i[B+196>>2]=A,AI(I,B+208|0,B+192|0),A=i[B+268>>2],i[g+104>>2]=i[B+264>>2],i[g+108>>2]=A,A=i[B+260>>2],i[g+96>>2]=i[B+256>>2],i[g+100>>2]=A,A=i[g+76>>2],i[B+184>>2]=i[g+72>>2],i[B+188>>2]=A,l=i[4+(A=g- -64|0)>>2],i[B+176>>2]=i[A>>2],i[B+180>>2]=l,l=i[g+92>>2],i[B+168>>2]=i[g+88>>2],i[B+172>>2]=l,l=i[g+84>>2],i[B+160>>2]=i[g+80>>2],i[B+164>>2]=l,AI(I,B+176|0,B+160|0),l=i[B+268>>2],i[g+88>>2]=i[B+264>>2],i[g+92>>2]=l,l=i[B+260>>2],i[g+80>>2]=i[B+256>>2],i[g+84>>2]=l,l=i[g+60>>2],i[B+152>>2]=i[g+56>>2],i[B+156>>2]=l,l=i[g+52>>2],i[B+144>>2]=i[g+48>>2],i[B+148>>2]=l,l=i[g+76>>2],i[B+136>>2]=i[g+72>>2],i[B+140>>2]=l,l=i[A+4>>2],i[B+128>>2]=i[A>>2],i[B+132>>2]=l,AI(I,B+144|0,B+128|0),l=i[B+268>>2],i[g+72>>2]=i[B+264>>2],i[g+76>>2]=l,l=i[B+260>>2],i[A>>2]=i[B+256>>2],i[A+4>>2]=l,l=i[g+44>>2],i[B+120>>2]=i[g+40>>2],i[B+124>>2]=l,l=i[g+36>>2],i[B+112>>2]=i[g+32>>2],i[B+116>>2]=l,l=i[g+60>>2],i[B+104>>2]=i[g+56>>2],i[B+108>>2]=l,l=i[g+52>>2],i[B+96>>2]=i[g+48>>2],i[B+100>>2]=l,AI(I,B+112|0,B+96|0),l=i[B+268>>2],i[g+56>>2]=i[B+264>>2],i[g+60>>2]=l,l=i[B+260>>2],i[g+48>>2]=i[B+256>>2],i[g+52>>2]=l,l=i[g+28>>2],i[B+88>>2]=i[g+24>>2],i[B+92>>2]=l,l=i[g+20>>2],i[B+80>>2]=i[g+16>>2],i[B+84>>2]=l,l=i[g+44>>2],i[B+72>>2]=i[g+40>>2],i[B+76>>2]=l,l=i[g+36>>2],i[B+64>>2]=i[g+32>>2],i[B+68>>2]=l,AI(I,B+80|0,B- -64|0),l=i[B+268>>2],i[g+40>>2]=i[B+264>>2],i[g+44>>2]=l,l=i[B+260>>2],i[g+32>>2]=i[B+256>>2],i[g+36>>2]=l,l=i[g+12>>2],i[B+56>>2]=i[g+8>>2],i[B+60>>2]=l,l=i[g+4>>2],i[B+48>>2]=i[g>>2],i[B+52>>2]=l,l=i[g+28>>2],i[B+40>>2]=i[g+24>>2],i[B+44>>2]=l,l=i[g+20>>2],i[B+32>>2]=i[g+16>>2],i[B+36>>2]=l,AI(I,B+48|0,B+32|0),l=i[B+268>>2],i[g+24>>2]=i[B+264>>2],i[g+28>>2]=l,l=i[B+260>>2],i[g+16>>2]=i[B+256>>2],i[g+20>>2]=l,l=i[B+284>>2],i[B+24>>2]=i[B+280>>2],i[B+28>>2]=l,l=i[B+276>>2],i[B+16>>2]=i[B+272>>2],i[B+20>>2]=l,l=i[g+12>>2],i[B+8>>2]=i[g+8>>2],i[B+12>>2]=l,l=i[g+4>>2],i[B>>2]=i[g>>2],i[B+4>>2]=l,AI(I,B+16|0,B),I=i[B+268>>2],i[g+8>>2]=i[B+264>>2],i[g+12>>2]=I,I=i[B+260>>2],i[g>>2]=i[B+256>>2],i[g+4>>2]=I,i[g+12>>2]=(o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24)^a,i[g+8>>2]=(o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24)^E,i[g+4>>2]=(o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24)^Q,i[g>>2]=(o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24)^f,i[A>>2]=(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24)^_,i[g+68>>2]=(o[g+68|0]|o[g+69|0]<<8|o[g+70|0]<<16|o[g+71|0]<<24)^r,i[g+72>>2]=(o[g+72|0]|o[g+73|0]<<8|o[g+74|0]<<16|o[g+75|0]<<24)^h,i[g+76>>2]=w^(o[g+76|0]|o[g+77|0]<<8|o[g+78|0]<<16|o[g+79|0]<<24),s=B+288|0}function l(A,I,g,B,Q){var E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0;for(s=E=s-224|0,f=(o[Q+60|0]|o[Q+61|0]<<8|o[Q+62|0]<<16|o[Q+63|0]<<24)^B>>>29,p=(o[Q+56|0]|o[Q+57|0]<<8|o[Q+58|0]<<16|o[Q+59|0]<<24)^B<<3,e=(o[Q+52|0]|o[Q+53|0]<<8|o[Q+54|0]<<16|o[Q+55|0]<<24)^g>>>29,h=(o[0|(a=Q+48|0)]|o[a+1|0]<<8|o[a+2|0]<<16|o[a+3|0]<<24)^g<<3,_=Q+16|0,c=Q+32|0,t=Q- -64|0,r=Q+80|0;g=i[r+12>>2],i[E+216>>2]=i[r+8>>2],i[E+220>>2]=g,g=i[r+4>>2],i[E+208>>2]=i[r>>2],i[E+212>>2]=g,g=i[t+12>>2],i[E+184>>2]=i[t+8>>2],i[E+188>>2]=g,g=i[t+4>>2],i[E+176>>2]=i[t>>2],i[E+180>>2]=g,g=i[r+12>>2],i[E+168>>2]=i[r+8>>2],i[E+172>>2]=g,g=i[r+4>>2],i[E+160>>2]=i[r>>2],i[E+164>>2]=g,AI(B=E+192|0,E+176|0,E+160|0),g=i[E+204>>2],i[r+8>>2]=i[E+200>>2],i[r+12>>2]=g,g=i[E+196>>2],i[r>>2]=i[E+192>>2],i[r+4>>2]=g,g=i[a+12>>2],i[E+152>>2]=i[a+8>>2],i[E+156>>2]=g,g=i[a+4>>2],i[E+144>>2]=i[a>>2],i[E+148>>2]=g,g=i[t+12>>2],i[E+136>>2]=i[t+8>>2],i[E+140>>2]=g,g=i[t+4>>2],i[E+128>>2]=i[t>>2],i[E+132>>2]=g,AI(B,E+144|0,E+128|0),g=i[E+204>>2],i[t+8>>2]=i[E+200>>2],i[t+12>>2]=g,g=i[E+196>>2],i[t>>2]=i[E+192>>2],i[t+4>>2]=g,g=i[c+12>>2],i[E+120>>2]=i[c+8>>2],i[E+124>>2]=g,g=i[c+4>>2],i[E+112>>2]=i[c>>2],i[E+116>>2]=g,g=i[a+12>>2],i[E+104>>2]=i[a+8>>2],i[E+108>>2]=g,g=i[a+4>>2],i[E+96>>2]=i[a>>2],i[E+100>>2]=g,AI(B,E+112|0,E+96|0),g=i[E+204>>2],i[a+8>>2]=i[E+200>>2],i[a+12>>2]=g,g=i[E+196>>2],i[a>>2]=i[E+192>>2],i[a+4>>2]=g,g=i[_+12>>2],i[E+88>>2]=i[_+8>>2],i[E+92>>2]=g,g=i[_+4>>2],i[E+80>>2]=i[_>>2],i[E+84>>2]=g,g=i[c+12>>2],i[E+72>>2]=i[c+8>>2],i[E+76>>2]=g,g=i[c+4>>2],i[E+64>>2]=i[c>>2],i[E+68>>2]=g,AI(B,E+80|0,E- -64|0),g=i[E+204>>2],i[c+8>>2]=i[E+200>>2],i[c+12>>2]=g,g=i[E+196>>2],i[c>>2]=i[E+192>>2],i[c+4>>2]=g,g=i[Q+12>>2],i[E+56>>2]=i[Q+8>>2],i[E+60>>2]=g,g=i[Q+4>>2],i[E+48>>2]=i[Q>>2],i[E+52>>2]=g,g=i[_+12>>2],i[E+40>>2]=i[_+8>>2],i[E+44>>2]=g,g=i[_+4>>2],i[E+32>>2]=i[_>>2],i[E+36>>2]=g,AI(B,E+48|0,E+32|0),g=i[E+204>>2],i[_+8>>2]=i[E+200>>2],i[_+12>>2]=g,g=i[E+196>>2],i[_>>2]=i[E+192>>2],i[_+4>>2]=g,g=i[E+220>>2],i[E+24>>2]=i[E+216>>2],i[E+28>>2]=g,g=i[E+212>>2],i[E+16>>2]=i[E+208>>2],i[E+20>>2]=g,g=i[Q+12>>2],i[E+8>>2]=i[Q+8>>2],i[E+12>>2]=g,g=i[Q+4>>2],i[E>>2]=i[Q>>2],i[E+4>>2]=g,AI(B,E+16|0,E),D=i[E+192>>2],B=i[E+196>>2],g=i[E+200>>2],w=f^i[E+204>>2],i[Q+12>>2]=w,n=g^p,i[Q+8>>2]=n,k=B^e,i[Q+4>>2]=k,F=h^D,i[Q>>2]=F,7!=(0|(y=y+1|0)););A:{I:{g:{if(g=I-16|0){if(16==(0|g))break g;break I}S=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,a=o[Q+48|0]|o[Q+49|0]<<8|o[Q+50|0]<<16|o[Q+51|0]<<24,_=o[Q+32|0]|o[Q+33|0]<<8|o[Q+34|0]<<16|o[Q+35|0]<<24,c=o[Q+80|0]|o[Q+81|0]<<8|o[Q+82|0]<<16|o[Q+83|0]<<24,t=o[0|(I=Q- -64|0)]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,r=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,f=o[Q+52|0]|o[Q+53|0]<<8|o[Q+54|0]<<16|o[Q+55|0]<<24,p=o[Q+36|0]|o[Q+37|0]<<8|o[Q+38|0]<<16|o[Q+39|0]<<24,e=o[Q+84|0]|o[Q+85|0]<<8|o[Q+86|0]<<16|o[Q+87|0]<<24,h=o[Q+68|0]|o[Q+69|0]<<8|o[Q+70|0]<<16|o[Q+71|0]<<24,D=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,y=o[Q+56|0]|o[Q+57|0]<<8|o[Q+58|0]<<16|o[Q+59|0]<<24,B=o[Q+40|0]|o[Q+41|0]<<8|o[Q+42|0]<<16|o[Q+43|0]<<24,g=o[Q+88|0]|o[Q+89|0]<<8|o[Q+90|0]<<16|o[Q+91|0]<<24,I=o[Q+72|0]|o[Q+73|0]<<8|o[Q+74|0]<<16|o[Q+75|0]<<24,Q=w^(o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24)^(o[Q+60|0]|o[Q+61|0]<<8|o[Q+62|0]<<16|o[Q+63|0]<<24)^(o[Q+44|0]|o[Q+45|0]<<8|o[Q+46|0]<<16|o[Q+47|0]<<24)^(o[Q+92|0]|o[Q+93|0]<<8|o[Q+94|0]<<16|o[Q+95|0]<<24)^(o[Q+76|0]|o[Q+77|0]<<8|o[Q+78|0]<<16|o[Q+79|0]<<24),C[A+12|0]=Q,C[A+13|0]=Q>>>8,C[A+14|0]=Q>>>16,C[A+15|0]=Q>>>24,I=n^D^I^g^B^y,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=k^r^f^p^e^h,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=F^S^a^_^c^t,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24;break A}h=o[Q+32|0]|o[Q+33|0]<<8|o[Q+34|0]<<16|o[Q+35|0]<<24,D=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,y=o[Q+36|0]|o[Q+37|0]<<8|o[Q+38|0]<<16|o[Q+39|0]<<24,B=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,g=o[Q+40|0]|o[Q+41|0]<<8|o[Q+42|0]<<16|o[Q+43|0]<<24,I=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,e=w^(o[Q+44|0]|o[Q+45|0]<<8|o[Q+46|0]<<16|o[Q+47|0]<<24)^(o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24),C[A+12|0]=e,C[A+13|0]=e>>>8,C[A+14|0]=e>>>16,C[A+15|0]=e>>>24,I=n^I^g,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=k^B^y,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=F^h^D,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,f=o[Q+48|0]|o[Q+49|0]<<8|o[Q+50|0]<<16|o[Q+51|0]<<24,p=o[Q+80|0]|o[Q+81|0]<<8|o[Q+82|0]<<16|o[Q+83|0]<<24,e=o[0|(I=Q- -64|0)]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,h=o[Q+52|0]|o[Q+53|0]<<8|o[Q+54|0]<<16|o[Q+55|0]<<24,D=o[Q+84|0]|o[Q+85|0]<<8|o[Q+86|0]<<16|o[Q+87|0]<<24,y=o[Q+68|0]|o[Q+69|0]<<8|o[Q+70|0]<<16|o[Q+71|0]<<24,B=o[Q+56|0]|o[Q+57|0]<<8|o[Q+58|0]<<16|o[Q+59|0]<<24,g=o[Q+88|0]|o[Q+89|0]<<8|o[Q+90|0]<<16|o[Q+91|0]<<24,I=o[Q+72|0]|o[Q+73|0]<<8|o[Q+74|0]<<16|o[Q+75|0]<<24,Q=(o[Q+60|0]|o[Q+61|0]<<8|o[Q+62|0]<<16|o[Q+63|0]<<24)^(o[Q+92|0]|o[Q+93|0]<<8|o[Q+94|0]<<16|o[Q+95|0]<<24)^(o[Q+76|0]|o[Q+77|0]<<8|o[Q+78|0]<<16|o[Q+79|0]<<24),C[A+28|0]=Q,C[A+29|0]=Q>>>8,C[A+30|0]=Q>>>16,C[A+31|0]=Q>>>24,I=B^I^g,C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,I=h^D^y,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=f^e^p,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24;break A}bg(A,0,I)}s=E+224|0}function u(A,I,g){var B,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0;for(s=B=s-4032|0,$A(B+160|0,g),_=i[g+36>>2],i[(a=B+3840|0)>>2]=i[g+32>>2],i[a+4>>2]=_,c=i[g+28>>2],i[(_=B+3832|0)>>2]=i[g+24>>2],i[_+4>>2]=c,r=i[g+20>>2],i[(c=B+3824|0)>>2]=i[g+16>>2],i[c+4>>2]=r,e=i[g+12>>2],i[(r=B+3816|0)>>2]=i[g+8>>2],i[r+4>>2]=e,e=i[g+4>>2],i[B+3808>>2]=i[g>>2],i[B+3812>>2]=e,D=i[g+52>>2],i[(e=B+3856|0)>>2]=i[g+48>>2],i[e+4>>2]=D,w=i[g+60>>2],i[(D=B+3864|0)>>2]=i[g+56>>2],i[D+4>>2]=w,y=i[4+(f=g- -64|0)>>2],i[(w=B+3872|0)>>2]=i[f>>2],i[w+4>>2]=y,y=i[g+76>>2],i[(f=B+3880|0)>>2]=i[g+72>>2],i[f+4>>2]=y,y=i[g+44>>2],i[B+3848>>2]=i[g+40>>2],i[B+3852>>2]=y,n=i[g+92>>2],i[(y=B+3896|0)>>2]=i[g+88>>2],i[y+4>>2]=n,k=i[g+100>>2],i[(n=B+3904|0)>>2]=i[g+96>>2],i[n+4>>2]=k,F=i[g+108>>2],i[(k=B+3912|0)>>2]=i[g+104>>2],i[k+4>>2]=F,S=i[g+116>>2],i[(F=B+3920|0)>>2]=i[g+112>>2],i[F+4>>2]=S,S=i[g+84>>2],i[B+3888>>2]=i[g+80>>2],i[B+3892>>2]=S,KA(Q=B+3528|0,S=B+3808|0),b(E=B+2408|0,Q,t=B+3648|0),b(B+2448|0,h=B+3568|0,p=B+3608|0),b(B+2488|0,p,t),b(B+2528|0,Q,h),$A(t=B+320|0,E),sA(Q=B+3368|0,g,t),b(E=B+2248|0,Q,t=B+3488|0),b(B+2288|0,h=B+3408|0,p=B+3448|0),b(B+2328|0,p,t),b(B+2368|0,Q,h),$A(B+480|0,E),E=i[4+(Q=B+2440|0)>>2],i[a>>2]=i[Q>>2],i[a+4>>2]=E,E=i[4+(Q=B+2432|0)>>2],i[_>>2]=i[Q>>2],i[_+4>>2]=E,E=i[4+(Q=B+2424|0)>>2],i[c>>2]=i[Q>>2],i[c+4>>2]=E,E=i[4+(Q=B+2416|0)>>2],i[r>>2]=i[Q>>2],i[r+4>>2]=E,E=i[4+(Q=B+2456|0)>>2],i[e>>2]=i[Q>>2],i[e+4>>2]=E,E=i[4+(Q=B+2464|0)>>2],i[D>>2]=i[Q>>2],i[D+4>>2]=E,E=i[4+(Q=B+2472|0)>>2],i[w>>2]=i[Q>>2],i[w+4>>2]=E,E=i[4+(Q=B+2480|0)>>2],i[f>>2]=i[Q>>2],i[f+4>>2]=E,Q=i[B+2412>>2],i[B+3808>>2]=i[B+2408>>2],i[B+3812>>2]=Q,Q=i[B+2452>>2],i[B+3848>>2]=i[B+2448>>2],i[B+3852>>2]=Q,E=i[4+(Q=B+2520|0)>>2],i[F>>2]=i[Q>>2],i[F+4>>2]=E,E=i[4+(Q=B+2512|0)>>2],i[k>>2]=i[Q>>2],i[k+4>>2]=E,E=i[4+(Q=B+2504|0)>>2],i[n>>2]=i[Q>>2],i[n+4>>2]=E,E=i[4+(Q=B+2496|0)>>2],i[y>>2]=i[Q>>2],i[y+4>>2]=E,Q=i[B+2492>>2],i[B+3888>>2]=i[B+2488>>2],i[B+3892>>2]=Q,KA(Q=B+3208|0,S),b(E=B+2088|0,Q,t=B+3328|0),b(B+2128|0,h=B+3248|0,p=B+3288|0),b(B+2168|0,p,t),b(B+2208|0,Q,h),$A(t=B+640|0,E),sA(Q=B+3048|0,g,t),b(E=B+1928|0,Q,t=B+3168|0),b(B+1968|0,h=B+3088|0,p=B+3128|0),b(B+2008|0,p,t),b(B+2048|0,Q,h),$A(B+800|0,E),E=i[4+(Q=B+2280|0)>>2],i[a>>2]=i[Q>>2],i[a+4>>2]=E,E=i[4+(Q=B+2272|0)>>2],i[_>>2]=i[Q>>2],i[_+4>>2]=E,E=i[4+(Q=B+2264|0)>>2],i[c>>2]=i[Q>>2],i[c+4>>2]=E,E=i[4+(Q=B+2256|0)>>2],i[r>>2]=i[Q>>2],i[r+4>>2]=E,E=i[4+(Q=B+2296|0)>>2],i[e>>2]=i[Q>>2],i[e+4>>2]=E,E=i[4+(Q=B+2304|0)>>2],i[D>>2]=i[Q>>2],i[D+4>>2]=E,E=i[4+(Q=B+2312|0)>>2],i[w>>2]=i[Q>>2],i[w+4>>2]=E,E=i[4+(Q=B+2320|0)>>2],i[f>>2]=i[Q>>2],i[f+4>>2]=E,Q=i[B+2252>>2],i[B+3808>>2]=i[B+2248>>2],i[B+3812>>2]=Q,Q=i[B+2292>>2],i[B+3848>>2]=i[B+2288>>2],i[B+3852>>2]=Q,E=i[4+(Q=B+2360|0)>>2],i[F>>2]=i[Q>>2],i[F+4>>2]=E,E=i[4+(Q=B+2352|0)>>2],i[k>>2]=i[Q>>2],i[k+4>>2]=E,E=i[4+(Q=B+2344|0)>>2],i[n>>2]=i[Q>>2],i[n+4>>2]=E,E=i[4+(Q=B+2336|0)>>2],i[y>>2]=i[Q>>2],i[y+4>>2]=E,Q=i[B+2332>>2],i[B+3888>>2]=i[B+2328>>2],i[B+3892>>2]=Q,KA(Q=B+2888|0,S),b(E=B+1768|0,Q,t=B+3008|0),b(B+1808|0,h=B+2928|0,p=B+2968|0),b(B+1848|0,p,t),b(B+1888|0,Q,h),$A(t=B+960|0,E),sA(Q=B+2728|0,g,t),b(g=B+1608|0,Q,E=B+2848|0),b(B+1648|0,t=B+2768|0,h=B+2808|0),b(B+1688|0,h,E),b(B+1728|0,Q,t),$A(B+1120|0,g),Q=i[4+(g=B+2120|0)>>2],i[a>>2]=i[g>>2],i[a+4>>2]=Q,a=i[4+(g=B+2112|0)>>2],i[_>>2]=i[g>>2],i[_+4>>2]=a,a=i[4+(g=B+2104|0)>>2],i[c>>2]=i[g>>2],i[c+4>>2]=a,a=i[4+(g=B+2096|0)>>2],i[r>>2]=i[g>>2],i[r+4>>2]=a,a=i[4+(g=B+2136|0)>>2],i[e>>2]=i[g>>2],i[e+4>>2]=a,a=i[4+(g=B+2144|0)>>2],i[D>>2]=i[g>>2],i[D+4>>2]=a,a=i[4+(g=B+2152|0)>>2],i[w>>2]=i[g>>2],i[w+4>>2]=a,a=i[4+(g=B+2160|0)>>2],i[f>>2]=i[g>>2],i[f+4>>2]=a,g=i[B+2092>>2],i[B+3808>>2]=i[B+2088>>2],i[B+3812>>2]=g,g=i[B+2132>>2],i[B+3848>>2]=i[B+2128>>2],i[B+3852>>2]=g,a=i[4+(g=B+2200|0)>>2],i[F>>2]=i[g>>2],i[F+4>>2]=a,a=i[4+(g=B+2192|0)>>2],i[k>>2]=i[g>>2],i[k+4>>2]=a,a=i[4+(g=B+2184|0)>>2],i[n>>2]=i[g>>2],i[n+4>>2]=a,a=i[4+(g=B+2176|0)>>2],i[y>>2]=i[g>>2],i[y+4>>2]=a,g=i[B+2172>>2],i[B+3888>>2]=i[B+2168>>2],i[B+3892>>2]=g,KA(g=B+2568|0,S),b(a=B+1448|0,g,_=B+2688|0),b(B+1488|0,c=B+2608|0,r=B+2648|0),b(B+1528|0,r,_),b(B+1568|0,g,c),$A(B+1280|0,a),a=0,g=0;c=(_=B+3968|0)+(g<<1)|0,r=o[I+g|0],C[c+1|0]=r>>>4,C[0|c]=15&r,_=_+((c=1|g)<<1)|0,c=o[I+c|0],C[_+1|0]=c>>>4,C[0|_]=15&c,32!=(0|(g=g+2|0)););for(I=0;g=8+(_=(g=I)+o[0|(I=(B+3968|0)+a|0)]|0)|0,C[0|I]=_-(240&g),g=8+(_=o[I+1|0]+(g<<24>>24>>4)|0)|0,C[I+1|0]=_-(240&g),g=8+(_=o[I+2|0]+(g<<24>>24>>4)|0)|0,C[I+2|0]=_-(240&g),I=g<<24>>24>>4,63!=(0|(a=a+3|0)););for(C[B+4031|0]=o[B+4031|0]+I,i[A+32>>2]=0,i[A+36>>2]=0,i[A+24>>2]=0,i[A+28>>2]=0,i[A+16>>2]=0,i[A+20>>2]=0,i[A+8>>2]=0,i[A+12>>2]=0,i[A>>2]=0,i[A+4>>2]=0,i[A+44>>2]=0,i[A+48>>2]=0,i[A+40>>2]=1,i[A+52>>2]=0,i[A+56>>2]=0,i[A+60>>2]=0,i[A+64>>2]=0,i[A+68>>2]=0,i[A+72>>2]=0,i[A+76>>2]=0,i[A+80>>2]=1,bg(A+84|0,0,76),w=A+120|0,f=A+80|0,y=A+40|0,r=B+3768|0,g=B+3888|0,_=B+3848|0,e=B+3728|0,a=B+3928|0,D=63;HA(B,n=B+160|0,C[(B+3968|0)+D|0]),sA(I=B+3808|0,A,B),b(c=B+3688|0,I,a),b(e,_,g),b(r,g,a),KA(I,c),b(c,I,a),b(e,_,g),b(r,g,a),KA(I,c),b(c,I,a),b(e,_,g),b(r,g,a),KA(I,c),b(c,I,a),b(e,_,g),b(r,g,a),KA(I,c),b(A,I,a),b(y,_,g),b(f,g,a),b(w,I,_),D=D-1|0;);HA(B,n,C[B+3968|0]),sA(I,A,B),b(A,I,a),b(y,_,g),b(f,g,a),b(w,I,_),s=B+4032|0}function x(A,I,g,C){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S,N,G,M,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0;s=B=s-320|0,i[B+280>>2]=0,i[B+284>>2]=0,i[B+272>>2]=0,i[B+276>>2]=0,i[B+264>>2]=0,i[B+268>>2]=0,i[B+256>>2]=0,i[B+260>>2]=0,Ng(U=B+256|0,I,g),m=o[C+16|0]|o[C+17|0]<<8|o[C+18|0]<<16|o[C+19|0]<<24,K=o[C+48|0]|o[C+49|0]<<8|o[C+50|0]<<16|o[C+51|0]<<24,a=o[C+20|0]|o[C+21|0]<<8|o[C+22|0]<<16|o[C+23|0]<<24,_=o[C+52|0]|o[C+53|0]<<8|o[C+54|0]<<16|o[C+55|0]<<24,c=o[C+24|0]|o[C+25|0]<<8|o[C+26|0]<<16|o[C+27|0]<<24,t=o[C+56|0]|o[C+57|0]<<8|o[C+58|0]<<16|o[C+59|0]<<24,r=o[C+28|0]|o[C+29|0]<<8|o[C+30|0]<<16|o[C+31|0]<<24,e=o[C+60|0]|o[C+61|0]<<8|o[C+62|0]<<16|o[C+63|0]<<24,I=o[C+36|0]|o[C+37|0]<<8|o[C+38|0]<<16|o[C+39|0]<<24,y=o[C+84|0]|o[C+85|0]<<8|o[C+86|0]<<16|o[C+87|0]<<24,h=o[C+116|0]|o[C+117|0]<<8|o[C+118|0]<<16|o[C+119|0]<<24,b=o[C+100|0]|o[C+101|0]<<8|o[C+102|0]<<16|o[C+103|0]<<24,H=o[C+44|0]|o[C+45|0]<<8|o[C+46|0]<<16|o[C+47|0]<<24,D=o[C+92|0]|o[C+93|0]<<8|o[C+94|0]<<16|o[C+95|0]<<24,f=o[C+124|0]|o[C+125|0]<<8|o[C+126|0]<<16|o[C+127|0]<<24,Y=o[C+108|0]|o[C+109|0]<<8|o[C+110|0]<<16|o[C+111|0]<<24,J=o[C+32|0]|o[C+33|0]<<8|o[C+34|0]<<16|o[C+35|0]<<24,p=o[C+80|0]|o[C+81|0]<<8|o[C+82|0]<<16|o[C+83|0]<<24,w=o[C+112|0]|o[C+113|0]<<8|o[C+114|0]<<16|o[C+115|0]<<24,d=o[C+96|0]|o[C+97|0]<<8|o[C+98|0]<<16|o[C+99|0]<<24,n=i[B+272>>2],k=i[B+256>>2],F=i[B+260>>2],S=i[B+264>>2],N=i[B+268>>2],G=i[B+276>>2],M=i[B+284>>2],Q=o[C+40|0]|o[C+41|0]<<8|o[C+42|0]<<16|o[C+43|0]<<24,E=o[C+104|0]|o[C+105|0]<<8|o[C+106|0]<<16|o[C+107|0]<<24,i[B+280>>2]=Q^E&(o[C+120|0]|o[C+121|0]<<8|o[C+122|0]<<16|o[C+123|0]<<24)^i[B+280>>2]^(o[C+88|0]|o[C+89|0]<<8|o[C+90|0]<<16|o[C+91|0]<<24),i[B+272>>2]=J^d&w^p^n,i[B+284>>2]=H^Y&f^D^M,i[B+276>>2]=I^b&h^y^G,i[B+268>>2]=Y^H&e^r^N,i[B+264>>2]=t&Q^c^S^E,i[B+260>>2]=b^I&_^a^F,i[B+256>>2]=d^K&J^m^k,bg(g+U|0,0,32-g|0),Ng(A,U,g),g=i[B+280>>2],U=i[B+272>>2],b=i[B+284>>2],H=i[B+276>>2],Y=i[B+256>>2],J=i[B+260>>2],d=i[B+264>>2],m=i[B+268>>2],A=i[C+124>>2],i[B+312>>2]=i[C+120>>2],i[B+316>>2]=A,A=i[C+116>>2],i[B+304>>2]=i[C+112>>2],i[B+308>>2]=A,A=i[C+108>>2],i[B+248>>2]=i[C+104>>2],i[B+252>>2]=A,A=i[C+100>>2],i[B+240>>2]=i[C+96>>2],i[B+244>>2]=A,A=i[C+124>>2],i[B+232>>2]=i[C+120>>2],i[B+236>>2]=A,A=i[C+116>>2],i[B+224>>2]=i[C+112>>2],i[B+228>>2]=A,AI(I=B+288|0,B+240|0,B+224|0),A=i[B+300>>2],i[C+120>>2]=i[B+296>>2],i[C+124>>2]=A,A=i[B+292>>2],i[C+112>>2]=i[B+288>>2],i[C+116>>2]=A,A=i[C+92>>2],i[B+216>>2]=i[C+88>>2],i[B+220>>2]=A,A=i[C+84>>2],i[B+208>>2]=i[C+80>>2],i[B+212>>2]=A,A=i[C+108>>2],i[B+200>>2]=i[C+104>>2],i[B+204>>2]=A,A=i[C+100>>2],i[B+192>>2]=i[C+96>>2],i[B+196>>2]=A,AI(I,B+208|0,B+192|0),A=i[B+300>>2],i[C+104>>2]=i[B+296>>2],i[C+108>>2]=A,A=i[B+292>>2],i[C+96>>2]=i[B+288>>2],i[C+100>>2]=A,A=i[C+76>>2],i[B+184>>2]=i[C+72>>2],i[B+188>>2]=A,K=i[4+(A=C- -64|0)>>2],i[B+176>>2]=i[A>>2],i[B+180>>2]=K,K=i[C+92>>2],i[B+168>>2]=i[C+88>>2],i[B+172>>2]=K,K=i[C+84>>2],i[B+160>>2]=i[C+80>>2],i[B+164>>2]=K,AI(I,B+176|0,B+160|0),K=i[B+300>>2],i[C+88>>2]=i[B+296>>2],i[C+92>>2]=K,K=i[B+292>>2],i[C+80>>2]=i[B+288>>2],i[C+84>>2]=K,K=i[C+60>>2],i[B+152>>2]=i[C+56>>2],i[B+156>>2]=K,K=i[C+52>>2],i[B+144>>2]=i[C+48>>2],i[B+148>>2]=K,K=i[C+76>>2],i[B+136>>2]=i[C+72>>2],i[B+140>>2]=K,K=i[A+4>>2],i[B+128>>2]=i[A>>2],i[B+132>>2]=K,AI(I,B+144|0,B+128|0),K=i[B+300>>2],i[C+72>>2]=i[B+296>>2],i[C+76>>2]=K,K=i[B+292>>2],i[A>>2]=i[B+288>>2],i[A+4>>2]=K,K=i[C+44>>2],i[B+120>>2]=i[C+40>>2],i[B+124>>2]=K,K=i[C+36>>2],i[B+112>>2]=i[C+32>>2],i[B+116>>2]=K,K=i[C+60>>2],i[B+104>>2]=i[C+56>>2],i[B+108>>2]=K,K=i[C+52>>2],i[B+96>>2]=i[C+48>>2],i[B+100>>2]=K,AI(I,B+112|0,B+96|0),K=i[B+300>>2],i[C+56>>2]=i[B+296>>2],i[C+60>>2]=K,K=i[B+292>>2],i[C+48>>2]=i[B+288>>2],i[C+52>>2]=K,K=i[C+28>>2],i[B+88>>2]=i[C+24>>2],i[B+92>>2]=K,K=i[C+20>>2],i[B+80>>2]=i[C+16>>2],i[B+84>>2]=K,K=i[C+44>>2],i[B+72>>2]=i[C+40>>2],i[B+76>>2]=K,K=i[C+36>>2],i[B+64>>2]=i[C+32>>2],i[B+68>>2]=K,AI(I,B+80|0,B- -64|0),K=i[B+300>>2],i[C+40>>2]=i[B+296>>2],i[C+44>>2]=K,K=i[B+292>>2],i[C+32>>2]=i[B+288>>2],i[C+36>>2]=K,K=i[C+12>>2],i[B+56>>2]=i[C+8>>2],i[B+60>>2]=K,K=i[C+4>>2],i[B+48>>2]=i[C>>2],i[B+52>>2]=K,K=i[C+28>>2],i[B+40>>2]=i[C+24>>2],i[B+44>>2]=K,K=i[C+20>>2],i[B+32>>2]=i[C+16>>2],i[B+36>>2]=K,AI(I,B+48|0,B+32|0),K=i[B+300>>2],i[C+24>>2]=i[B+296>>2],i[C+28>>2]=K,K=i[B+292>>2],i[C+16>>2]=i[B+288>>2],i[C+20>>2]=K,K=i[B+316>>2],i[B+24>>2]=i[B+312>>2],i[B+28>>2]=K,K=i[B+308>>2],i[B+16>>2]=i[B+304>>2],i[B+20>>2]=K,K=i[C+12>>2],i[B+8>>2]=i[C+8>>2],i[B+12>>2]=K,K=i[C+4>>2],i[B>>2]=i[C>>2],i[B+4>>2]=K,AI(I,B+16|0,B),I=i[B+300>>2],i[C+8>>2]=i[B+296>>2],i[C+12>>2]=I,I=i[B+292>>2],i[C>>2]=i[B+288>>2],i[C+4>>2]=I,i[C+12>>2]=m^(o[C+12|0]|o[C+13|0]<<8|o[C+14|0]<<16|o[C+15|0]<<24),i[C+8>>2]=d^(o[C+8|0]|o[C+9|0]<<8|o[C+10|0]<<16|o[C+11|0]<<24),i[C+4>>2]=J^(o[C+4|0]|o[C+5|0]<<8|o[C+6|0]<<16|o[C+7|0]<<24),i[C>>2]=Y^(o[0|C]|o[C+1|0]<<8|o[C+2|0]<<16|o[C+3|0]<<24),i[A>>2]=U^(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24),i[C+68>>2]=H^(o[C+68|0]|o[C+69|0]<<8|o[C+70|0]<<16|o[C+71|0]<<24),i[C+72>>2]=g^(o[C+72|0]|o[C+73|0]<<8|o[C+74|0]<<16|o[C+75|0]<<24),i[C+76>>2]=b^(o[C+76|0]|o[C+77|0]<<8|o[C+78|0]<<16|o[C+79|0]<<24),s=B+320|0}function v(A,I){var g,C,B,Q,o,E,_,c,t,r,e,y,s,h,D,p,w,n,k,F,S,N,G,M,K,U,b,H,Y,J,d,m,l,u,x,v,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0,BA=0,QA=0,iA=0,oA=0;R=Ig(C=(D=i[I+12>>2])<<1,E=C>>31,$=(q=i[I+4>>2])<<1,B=$>>31),P=f,F=V=i[I+8>>2],L=(Z=Ig(V,p=V>>31,V,p))+R|0,R=f+P|0,R=L>>>0>>0?R+1|0:R,P=Ig(j=i[I+16>>2],_=j>>31,Z=(z=i[I>>2])<<1,Q=Z>>31),R=f+R|0,R=(L=P+L|0)>>>0

>>0?R+1|0:R,e=i[I+28>>2],P=Ig(BA=a(e,38),w=BA>>31,e,S=e>>31),R=f+R|0,R=(L=P+L|0)>>>0

>>0?R+1|0:R,P=L,y=i[I+32>>2],X=Ig(O=a(y,19),c=O>>31,L=(g=i[I+24>>2])<<1,L>>31),L=f+R|0,L=(P=P+X|0)>>>0>>0?L+1|0:L,H=i[I+36>>2],R=Ig(X=a(H,38),o=X>>31,AA=(t=i[I+20>>2])<<1,s=AA>>31),I=f+L|0,J=R=(R>>>0>(P=R+P|0)>>>0?I+1:I)<<1|P>>>31,d=L=33554432+(N=P<<1)|0,m=R=L>>>0<33554432?R+1|0:R,I=R>>26,T=(67108863&R)<<6|L>>>26,R=Ig($,B,j,_),P=f,L=(IA=Ig(V<<=1,h=V>>31,D,G=D>>31))+R|0,R=f+P|0,R=L>>>0>>0?R+1|0:R,P=(IA=Ig(t,n=t>>31,Z,Q))+L|0,L=f+R|0,L=P>>>0>>0?L+1|0:L,iA=Ig(O,c,IA=e<<1,M=IA>>31),R=f+L|0,R=(P=iA+P|0)>>>0>>0?R+1|0:R,L=Ig(X,o,g,r=g>>31),R=f+R|0,I=I+(L=(L>>>0>(P=L+P|0)>>>0?R+1:R)<<1|P>>>31)|0,iA=P=(R=P<<1)+T|0,R=I=R>>>0>P>>>0?I+1|0:I,l=P=P+16777216|0,T=(33554431&(R=P>>>0<16777216?R+1|0:R))<<7|P>>>25,P=R>>25,I=Ig(C,E,D,G),R=f,L=Ig(j,_,V,h),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=Ig($,B,AA,s),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(gA=Ig(Z,Q,g,r))+I|0,I=f+R|0,I=L>>>0>>0?I+1|0:I,gA=Ig(O,c,y,k=y>>31),R=f+I|0,R=(L=gA+L|0)>>>0>>0?R+1|0:R,I=(gA=Ig(X,o,IA,M))+L|0,L=f+R|0,I=((R=I)>>>0>>0?L+1:L)<<1|R>>>31,L=T,T=R<<1,R=I+P|0,R=(L=L+T|0)>>>0>>0?R+1|0:R,gA=I=L+33554432|0,P=R=I>>>0<33554432?R+1|0:R,i[A+24>>2]=L-(-67108864&I),L=Ig(I=a(t,38),I>>31,t,n),T=f,I=(R=Ig(I=z,R=I>>31,I,R))+L|0,L=f+T|0,L=I>>>0>>0?L+1|0:L,CA=Ig(z=a(g,19),K=z>>31,T=j<<1,U=T>>31),R=f+L|0,R=(I=CA+I|0)>>>0>>0?R+1|0:R,L=Ig(C,E,BA,w),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(CA=Ig(O,c,V,h))+I|0,I=f+R|0,I=L>>>0>>0?I+1|0:I,CA=Ig($,B,X,o),R=f+I|0,CA=R=((L=CA+L|0)>>>0>>0?R+1:R)<<1|L>>>31,u=I=33554432+(b=L<<1)|0,x=L=I>>>0<33554432?R+1|0:R,QA=(67108863&L)<<6|I>>>26,oA=L>>26,I=Ig(z,K,AA,s),R=f,L=Ig(Z,Q,q,Y=q>>31),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(W=Ig(j,_,BA,w))+I|0,I=f+R|0,I=L>>>0>>0?I+1|0:I,W=Ig(O,c,C,E),R=f+I|0,R=(L=W+L|0)>>>0>>0?R+1|0:R,W=(I=Ig(X,o,F,p))+L|0,L=f+R|0,R=(I=(I>>>0>W>>>0?L+1:L)<<1|W>>>31)+oA|0,R=(L=(W<<=1)+QA|0)>>>0>>0?R+1|0:R,oA=L,W=L=L+16777216|0,v=(33554431&(R=L>>>0<16777216?R+1|0:R))<<7|L>>>25,QA=R>>25,I=Ig(Z,Q,F,p),R=f,L=Ig($,B,q,Y),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,q=Ig(z,K,g,r),L=f+R|0,L=(I=q+I|0)>>>0>>0?L+1|0:L,q=Ig(AA,s,BA,w),R=f+L|0,R=(I=q+I|0)>>>0>>0?R+1|0:R,L=Ig(O,c,T,U),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(q=Ig(X,o,C,E))+I|0,I=f+R|0,R=(R=(L>>>0>>0?I+1:I)<<1|L>>>31)+QA|0,z=I=(L<<=1)+v|0,R=I>>>0>>0?R+1|0:R,QA=I=I+33554432|0,q=L=I>>>0<33554432?R+1|0:R,i[A+8>>2]=z-(-67108864&I),I=Ig(V,h,t,n),L=f,R=(z=Ig(j,_,C,E))+I|0,I=f+L|0,I=R>>>0>>0?I+1|0:I,L=(z=Ig($,B,g,r))+R|0,R=f+I|0,R=L>>>0>>0?R+1|0:R,I=(z=Ig(Z,Q,e,S))+L|0,L=f+R|0,L=I>>>0>>0?L+1|0:L,z=Ig(X,o,y,k),R=f+L|0,R=(R=((I=z+I|0)>>>0>>0?R+1:R)<<1|I>>>31)+(L=P>>26)|0,I=(L=P=(z=I<<1)+(I=(67108863&P)<<6|gA>>>26)|0)>>>0>>0?R+1|0:R,z=R=L+16777216|0,P=I=R>>>0<16777216?I+1|0:I,i[A+28>>2]=L-(-33554432&R),I=Ig(Z,Q,D,G),R=f,L=Ig($,B,F,p),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=Ig(g,r,BA,w),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(O=Ig(O,c,AA,s))+I|0,I=f+R|0,I=L>>>0>>0?I+1|0:I,R=(O=Ig(X,o,j,_))+L|0,L=f+I|0,I=R,R=(R>>>0>>0?L+1:L)<<1|R>>>31,L=I<<1,R=(I=q>>26)+R|0,R=(L=L+(q=(67108863&q)<<6|QA>>>26)|0)>>>0>>0?R+1|0:R,O=I=L+16777216|0,q=R=I>>>0<16777216?R+1|0:R,i[A+12>>2]=L-(-33554432&I),I=Ig(g,r,V,h),R=f,L=Ig(j,_,j,_),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=Ig(C,E,AA,s),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=Ig($,B,IA,M),R=f+R|0,R=(I=L+I|0)>>>0>>0?R+1|0:R,L=(j=Ig(Z,Q,y,k))+I|0,I=f+R|0,I=L>>>0>>0?I+1|0:I,R=(j=Ig(R=X,o,X=H,AA=X>>31))+L|0,L=f+I|0,I=R,R=(R>>>0>>0?L+1:L)<<1|R>>>31,L=I<<1,R=(I=P>>25)+R|0,R=(L=L+(P=(33554431&P)<<7|z>>>25)|0)>>>0

>>0?R+1|0:R,j=I=L+33554432|0,P=R=I>>>0<33554432?R+1|0:R,i[A+32>>2]=L-(-67108864&I),R=q>>25,L=(q=(33554431&q)<<7|O>>>25)+(N-(I=-67108864&d)|0)|0,I=R+(J-((I>>>0>N>>>0)+m|0)|0)|0,I=L>>>0>>0?I+1|0:I,q=L,R=I,I=((67108863&(R=(L=L+33554432|0)>>>0<33554432?R+1|0:R))<<6|L>>>26)+(BA=iA-(-33554432&l)|0)|0,i[A+20>>2]=I,i[A+16>>2]=q-(-67108864&L),I=Ig(C,E,g,r),L=f,R=(q=Ig(t,n,T,U))+I|0,I=f+L|0,I=R>>>0>>0?I+1|0:I,L=(q=Ig(V,h,e,S))+R|0,R=f+I|0,R=L>>>0>>0?R+1|0:R,I=(q=Ig($,B,y,k))+L|0,L=f+R|0,L=I>>>0>>0?L+1|0:L,q=Ig(Z,Q,X,AA),R=f+L|0,R=((I=q+I|0)>>>0>>0?R+1:R)<<1|I>>>31,q=I<<1,R=R+(L=P>>26)|0,I=(I=(67108863&P)<<6|j>>>26)>>>0>(P=q+I|0)>>>0?R+1|0:R,I=(R=P+16777216|0)>>>0<16777216?I+1|0:I,i[A+36>>2]=P-(-33554432&R),q=oA-(-33554432&W)|0,P=b-(L=-67108864&u)|0,$=CA-((L>>>0>b>>>0)+x|0)|0,I=Ig((33554431&I)<<7|R>>>25,I>>25,19,0),L=f+$|0,P=R=I+P|0,I=I>>>0>R>>>0?L+1|0:L,I=((67108863&(I=(R=R+33554432|0)>>>0<33554432?I+1|0:I))<<6|R>>>26)+q|0,i[A+4>>2]=I,i[A>>2]=P-(-67108864&R)}function R(A,I){var g,C,B,Q,o,E,_,c,t,r,e,y,s,h,D,p,w,n,k,F,S,N,G,M,K,U,b,H,Y,J,d,m,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0,BA=0;l=Ig(C=(p=i[I+12>>2])<<1,E=C>>31,p,S=p>>31),x=f,u=(z=Ig(R=i[I+16>>2],_=R>>31,c=(v=i[I+8>>2])<<1,y=c>>31))+l|0,l=f+x|0,l=u>>>0>>0?l+1|0:l,x=(j=Ig(W=(t=i[I+20>>2])<<1,s=W>>31,z=(L=i[I+4>>2])<<1,B=z>>31))+u|0,u=f+l|0,u=x>>>0>>0?u+1|0:u,P=Ig(g=i[I+24>>2],r=g>>31,j=(T=i[I>>2])<<1,Q=j>>31),l=f+u|0,l=(x=P+x|0)>>>0

>>0?l+1|0:l,u=x,h=i[I+32>>2],x=Ig(X=a(h,19),e=X>>31,h,n=h>>31),l=f+l|0,l=(u=u+x|0)>>>0>>0?l+1|0:l,U=i[I+36>>2],x=Ig(P=a(U,38),o=P>>31,k=(D=i[I+28>>2])<<1,N=k>>31),I=f+l|0,Z=u=x+u|0,x=u>>>0>>0?I+1|0:I,I=Ig(z,B,R,_),l=f,u=Ig(c,y,p,S),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,q=Ig(t,F=t>>31,j,Q),u=f+l|0,u=(I=q+I|0)>>>0>>0?u+1|0:u,q=Ig(X,e,k,N),l=f+u|0,l=(I=q+I|0)>>>0>>0?l+1|0:l,u=Ig(P,o,g,r),l=f+l|0,CA=I=u+I|0,O=I>>>0>>0?l+1|0:l,l=Ig(z,B,C,E),u=f,G=I=v,v=Ig(I,V=I>>31,I,V),I=f+u|0,I=(l=v+l|0)>>>0>>0?I+1|0:I,u=(v=Ig(j,Q,R,_))+l|0,l=f+I|0,l=u>>>0>>0?l+1|0:l,I=(v=Ig(q=a(D,38),w=q>>31,D,M=D>>31))+u|0,u=f+l|0,u=I>>>0>>0?u+1|0:u,I=(l=I)+(v=Ig(X,e,I=g<<1,I>>31))|0,l=f+u|0,l=I>>>0>>0?l+1|0:l,u=I,I=Ig(P,o,W,s),l=f+l|0,b=u=u+I|0,H=l=I>>>0>u>>>0?l+1|0:l,I=l,Y=u=u+33554432|0,J=I=u>>>0<33554432?I+1|0:I,l=(l=I>>26)+O|0,CA=I=(u=(67108863&I)<<6|u>>>26)+CA|0,l=I>>>0>>0?l+1|0:l,d=I=I+16777216|0,l=(l=(u=I>>>0<16777216?l+1|0:l)>>25)+x|0,I=(I=(33554431&u)<<7|I>>>25)>>>0>(u=I+Z|0)>>>0?l+1|0:l,Z=l=u+33554432|0,v=I=l>>>0<33554432?I+1|0:I,i[A+24>>2]=u-(-67108864&l),I=Ig(j,Q,G,V),l=f,x=Ig(z,B,L,$=L>>31),u=f+l|0,u=(I=x+I|0)>>>0>>0?u+1|0:u,O=Ig(x=a(g,19),gA=x>>31,g,r),l=f+u|0,l=(I=O+I|0)>>>0>>0?l+1|0:l,u=(O=Ig(W,s,q,w))+I|0,I=f+l|0,I=u>>>0>>0?I+1|0:I,AA=Ig(X,e,O=R<<1,K=O>>31),l=f+I|0,l=(u=AA+u|0)>>>0>>0?l+1|0:l,I=u,u=Ig(P,o,C,E),l=f+l|0,IA=I=I+u|0,AA=I>>>0>>0?l+1|0:l,I=Ig(W,s,x,gA),l=f,L=Ig(j,Q,L,$),u=f+l|0,u=(I=L+I|0)>>>0>>0?u+1|0:u,L=Ig(R,_,q,w),l=f+u|0,l=(I=L+I|0)>>>0>>0?l+1|0:l,u=(L=Ig(X,e,C,E))+I|0,I=f+l|0,I=u>>>0>>0?I+1|0:I,L=Ig(P,o,G,V),l=f+I|0,BA=u=L+u|0,$=u>>>0>>0?l+1|0:l,u=Ig(I=a(t,38),I>>31,t,F),L=f,I=T,T=u,u=Ig(I,l=I>>31,I,l),l=f+L|0,l=(I=T+u|0)>>>0>>0?l+1|0:l,x=Ig(x,gA,O,K),u=f+l|0,u=(I=x+I|0)>>>0>>0?u+1|0:u,x=Ig(C,E,q,w),l=f+u|0,l=(I=x+I|0)>>>0>>0?l+1|0:l,u=(x=Ig(X,e,c,y))+I|0,I=f+l|0,I=u>>>0>>0?I+1|0:I,x=Ig(z,B,P,o),l=f+I|0,L=u=x+u|0,T=l=u>>>0>>0?l+1|0:l,gA=u=u+33554432|0,m=l=u>>>0<33554432?l+1|0:l,I=l>>26,l=(67108863&l)<<6|u>>>26,u=I+$|0,$=x=l+BA|0,l=l>>>0>x>>>0?u+1|0:u,BA=u=x+16777216|0,x=(33554431&(l=u>>>0<16777216?l+1|0:l))<<7|u>>>25,l=(l>>25)+AA|0,l=(u=x+IA|0)>>>0>>0?l+1|0:l,AA=I=u+33554432|0,x=l=I>>>0<33554432?l+1|0:l,i[A+8>>2]=u-(-67108864&I),I=Ig(c,y,t,F),l=f,u=Ig(R,_,C,E),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,u=Ig(z,B,g,r),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,u=Ig(j,Q,D,M),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,IA=(u=Ig(P,o,h,n))+I|0,I=f+l|0,u=(l=v>>26)+(u=u>>>0>IA>>>0?I+1|0:I)|0,Z=I=(v=(67108863&v)<<6|Z>>>26)+IA|0,l=I>>>0>>0?u+1|0:u,IA=I=I+16777216|0,v=l=I>>>0<16777216?l+1|0:l,i[A+28>>2]=Z-(-33554432&I),I=Ig(j,Q,p,S),u=f,l=(V=Ig(z,B,G,V))+I|0,I=f+u|0,I=l>>>0>>0?I+1|0:I,l=(q=Ig(g,r,q,w))+l|0,u=f+I|0,I=(X=Ig(X,e,W,s))+l|0,l=f+(l>>>0>>0?u+1|0:u)|0,l=I>>>0>>0?l+1|0:l,u=Ig(P,o,R,_),l=f+l|0,l=(l=(I=u+I|0)>>>0>>0?l+1|0:l)+(u=x>>26)|0,I=(u=x=(Z=I)+(I=(67108863&x)<<6|AA>>>26)|0)>>>0>>0?l+1|0:l,X=l=u+16777216|0,x=I=l>>>0<16777216?I+1|0:I,i[A+12>>2]=u-(-33554432&l),I=Ig(g,r,c,y),l=f,u=Ig(R,_,R,_),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,u=Ig(C,E,W,s),l=f+l|0,l=(I=u+I|0)>>>0>>0?l+1|0:l,u=(R=Ig(z,B,k,N))+I|0,I=f+l|0,I=u>>>0>>0?I+1|0:I,l=(R=Ig(j,Q,h,n))+u|0,u=f+I|0,u=l>>>0>>0?u+1|0:u,I=(R=Ig(I=P,o,P=U,W=P>>31))+l|0,l=f+u|0,l=I>>>0>>0?l+1|0:l,u=I,l=(I=v>>25)+l|0,l=(u=u+(v=(33554431&v)<<7|IA>>>25)|0)>>>0>>0?l+1|0:l,R=I=u+33554432|0,v=l=I>>>0<33554432?l+1|0:l,i[A+32>>2]=u-(-67108864&I),l=x>>25,u=(x=(33554431&x)<<7|X>>>25)+(b-(I=-67108864&Y)|0)|0,I=l+(H-((I>>>0>b>>>0)+J|0)|0)|0,I=u>>>0>>0?I+1|0:I,x=u,I=((67108863&(l=(u=u+33554432|0)>>>0<33554432?I+1|0:I))<<6|u>>>26)+(q=CA-(-33554432&d)|0)|0,i[A+20>>2]=I,i[A+16>>2]=x-(-67108864&u),I=Ig(C,E,g,r),u=f,l=(x=Ig(t,F,O,K))+I|0,I=f+u|0,I=l>>>0>>0?I+1|0:I,u=(x=Ig(c,y,D,M))+l|0,l=f+I|0,l=u>>>0>>0?l+1|0:l,I=(x=Ig(z,B,h,n))+u|0,u=f+l|0,u=I>>>0>>0?u+1|0:u,x=(l=I)+(I=Ig(j,Q,P,W))|0,l=f+u|0,l=(I=I>>>0>x>>>0?l+1|0:l)+(l=v>>26)|0,I=(u=(v=(67108863&v)<<6|R>>>26)+x|0)>>>0>>0?l+1|0:l,I=(l=u+16777216|0)>>>0<16777216?I+1|0:I,i[A+36>>2]=u-(-33554432&l),v=$-(-33554432&BA)|0,x=L-(u=-67108864&gA)|0,z=T-((u>>>0>L>>>0)+m|0)|0,I=Ig((33554431&I)<<7|l>>>25,I>>25,19,0),l=f+z|0,I=I>>>0>(u=I+x|0)>>>0?l+1|0:l,I=((67108863&(I=(l=u+33554432|0)>>>0<33554432?I+1|0:I))<<6|l>>>26)+v|0,i[A+4>>2]=I,i[A>>2]=u-(-67108864&l)}function L(A,I){var g,C,B,Q,E,a,_,c,t,r,e=0,y=0,h=0;s=g=s-416|0,C=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,B=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,Q=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,E=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,h=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,a=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,_=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,c=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,A=i[I+92>>2],i[g+408>>2]=i[I+88>>2],i[g+412>>2]=A,A=i[I+84>>2],i[g+400>>2]=i[I+80>>2],i[g+404>>2]=A,A=i[I+76>>2],i[g+376>>2]=i[I+72>>2],i[g+380>>2]=A,e=i[4+(A=y=I- -64|0)>>2],i[g+368>>2]=i[A>>2],i[g+372>>2]=e,A=i[I+92>>2],i[g+360>>2]=i[I+88>>2],i[g+364>>2]=A,A=i[I+84>>2],i[g+352>>2]=i[I+80>>2],i[g+356>>2]=A,AI(A=g+384|0,g+368|0,g+352|0),e=i[g+396>>2],i[I+88>>2]=i[g+392>>2],i[I+92>>2]=e,e=i[g+388>>2],i[I+80>>2]=i[g+384>>2],i[I+84>>2]=e,e=i[I+60>>2],i[g+344>>2]=i[I+56>>2],i[g+348>>2]=e,e=i[I+52>>2],i[g+336>>2]=i[I+48>>2],i[g+340>>2]=e,e=i[I+76>>2],i[g+328>>2]=i[I+72>>2],i[g+332>>2]=e,e=i[y+4>>2],i[g+320>>2]=i[y>>2],i[g+324>>2]=e,AI(A,g+336|0,g+320|0),e=i[g+396>>2],i[I+72>>2]=i[g+392>>2],i[I+76>>2]=e,e=i[g+388>>2],i[y>>2]=i[g+384>>2],i[y+4>>2]=e,e=i[I+44>>2],i[g+312>>2]=i[I+40>>2],i[g+316>>2]=e,e=i[I+36>>2],i[g+304>>2]=i[I+32>>2],i[g+308>>2]=e,e=i[I+60>>2],i[g+296>>2]=i[I+56>>2],i[g+300>>2]=e,e=i[I+52>>2],i[g+288>>2]=i[I+48>>2],i[g+292>>2]=e,AI(A,g+304|0,g+288|0),e=i[g+396>>2],i[I+56>>2]=i[g+392>>2],i[I+60>>2]=e,e=i[g+388>>2],i[I+48>>2]=i[g+384>>2],i[I+52>>2]=e,e=i[I+28>>2],i[g+280>>2]=i[I+24>>2],i[g+284>>2]=e,e=i[I+20>>2],i[g+272>>2]=i[I+16>>2],i[g+276>>2]=e,e=i[I+44>>2],i[g+264>>2]=i[I+40>>2],i[g+268>>2]=e,e=i[I+36>>2],i[g+256>>2]=i[I+32>>2],i[g+260>>2]=e,AI(A,g+272|0,g+256|0),e=i[g+396>>2],i[I+40>>2]=i[g+392>>2],i[I+44>>2]=e,e=i[g+388>>2],i[I+32>>2]=i[g+384>>2],i[I+36>>2]=e,e=i[I+12>>2],i[g+248>>2]=i[I+8>>2],i[g+252>>2]=e,e=i[I+4>>2],i[g+240>>2]=i[I>>2],i[g+244>>2]=e,e=i[I+28>>2],i[g+232>>2]=i[I+24>>2],i[g+236>>2]=e,e=i[I+20>>2],i[g+224>>2]=i[I+16>>2],i[g+228>>2]=e,AI(A,g+240|0,g+224|0),e=i[g+396>>2],i[I+24>>2]=i[g+392>>2],i[I+28>>2]=e,e=i[g+388>>2],i[I+16>>2]=i[g+384>>2],i[I+20>>2]=e,e=i[g+412>>2],i[g+216>>2]=i[g+408>>2],i[g+220>>2]=e,e=i[g+404>>2],i[g+208>>2]=i[g+400>>2],i[g+212>>2]=e,e=i[I+12>>2],i[g+200>>2]=i[I+8>>2],i[g+204>>2]=e,e=i[I+4>>2],i[g+192>>2]=i[I>>2],i[g+196>>2]=e,AI(A,g+208|0,g+192|0),e=i[g+384>>2],t=i[g+388>>2],r=i[g+392>>2],i[I+12>>2]=i[g+396>>2]^_,i[I+8>>2]=a^r,i[I+4>>2]=h^t,i[I>>2]=e^c,h=i[I+92>>2],i[g+408>>2]=i[I+88>>2],i[g+412>>2]=h,h=i[I+84>>2],i[g+400>>2]=i[I+80>>2],i[g+404>>2]=h,h=i[I+76>>2],i[g+184>>2]=i[I+72>>2],i[g+188>>2]=h,h=i[y+4>>2],i[g+176>>2]=i[y>>2],i[g+180>>2]=h,h=i[I+92>>2],i[g+168>>2]=i[I+88>>2],i[g+172>>2]=h,h=i[I+84>>2],i[g+160>>2]=i[I+80>>2],i[g+164>>2]=h,AI(A,g+176|0,g+160|0),h=i[g+396>>2],i[I+88>>2]=i[g+392>>2],i[I+92>>2]=h,h=i[g+388>>2],i[I+80>>2]=i[g+384>>2],i[I+84>>2]=h,h=i[I+60>>2],i[g+152>>2]=i[I+56>>2],i[g+156>>2]=h,h=i[I+52>>2],i[g+144>>2]=i[I+48>>2],i[g+148>>2]=h,h=i[I+76>>2],i[g+136>>2]=i[I+72>>2],i[g+140>>2]=h,h=i[y+4>>2],i[g+128>>2]=i[y>>2],i[g+132>>2]=h,AI(A,g+144|0,g+128|0),h=i[g+396>>2],i[I+72>>2]=i[g+392>>2],i[I+76>>2]=h,h=i[g+388>>2],i[y>>2]=i[g+384>>2],i[y+4>>2]=h,y=i[I+44>>2],i[g+120>>2]=i[I+40>>2],i[g+124>>2]=y,y=i[I+36>>2],i[g+112>>2]=i[I+32>>2],i[g+116>>2]=y,y=i[I+60>>2],i[g+104>>2]=i[I+56>>2],i[g+108>>2]=y,y=i[I+52>>2],i[g+96>>2]=i[I+48>>2],i[g+100>>2]=y,AI(A,g+112|0,g+96|0),y=i[g+396>>2],i[I+56>>2]=i[g+392>>2],i[I+60>>2]=y,y=i[g+388>>2],i[I+48>>2]=i[g+384>>2],i[I+52>>2]=y,y=i[I+28>>2],i[g+88>>2]=i[I+24>>2],i[g+92>>2]=y,y=i[I+20>>2],i[g+80>>2]=i[I+16>>2],i[g+84>>2]=y,y=i[I+44>>2],i[g+72>>2]=i[I+40>>2],i[g+76>>2]=y,y=i[I+36>>2],i[g+64>>2]=i[I+32>>2],i[g+68>>2]=y,AI(A,g+80|0,g- -64|0),y=i[g+396>>2],i[I+40>>2]=i[g+392>>2],i[I+44>>2]=y,y=i[g+388>>2],i[I+32>>2]=i[g+384>>2],i[I+36>>2]=y,y=i[I+12>>2],i[g+56>>2]=i[I+8>>2],i[g+60>>2]=y,y=i[I+4>>2],i[g+48>>2]=i[I>>2],i[g+52>>2]=y,y=i[I+28>>2],i[g+40>>2]=i[I+24>>2],i[g+44>>2]=y,y=i[I+20>>2],i[g+32>>2]=i[I+16>>2],i[g+36>>2]=y,AI(A,g+48|0,g+32|0),y=i[g+396>>2],i[I+24>>2]=i[g+392>>2],i[I+28>>2]=y,y=i[g+388>>2],i[I+16>>2]=i[g+384>>2],i[I+20>>2]=y,y=i[g+412>>2],i[g+24>>2]=i[g+408>>2],i[g+28>>2]=y,y=i[g+404>>2],i[g+16>>2]=i[g+400>>2],i[g+20>>2]=y,y=i[I+12>>2],i[g+8>>2]=i[I+8>>2],i[g+12>>2]=y,y=i[I+4>>2],i[g>>2]=i[I>>2],i[g+4>>2]=y,AI(A,g+16|0,g),A=i[g+384>>2],y=i[g+388>>2],h=i[g+392>>2],i[I+12>>2]=i[g+396>>2]^E,i[I+8>>2]=h^Q,i[I+4>>2]=y^B,i[I>>2]=A^C,s=g+416|0}function P(A,I,g){var C,B,Q,E,a,_,c,t,r,e,y,h,D,f,p=0,w=0,n=0;for(s=C=s-288|0,y=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,h=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,D=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,c=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,t=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,r=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,f=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=g+112|0,A=33620224^(e=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24),i[I>>2]=A,i[(a=g+96|0)>>2]=1427652059^e,i[(_=g+80|0)>>2]=A,w=e^f,i[(A=g- -64|0)>>2]=w,i[g+56>>2]=1110511904,i[g+60>>2]=-584534669,i[(B=g+48|0)>>2]=1427652059,i[B+4>>2]=-248528275,i[g+40>>2]=1496785429,i[g+44>>2]=1652156816,i[(Q=g+32|0)>>2]=33620224,i[Q+4>>2]=218629379,i[g+24>>2]=1110511904,i[g+28>>2]=-584534669,i[(E=g+16|0)>>2]=1427652059,i[E+4>>2]=-248528275,i[g>>2]=w,w=1652156816^r,i[g+124>>2]=w,n=1496785429^t,i[g+120>>2]=n,p=218629379^c,i[g+116>>2]=p,i[g+108>>2]=-584534669^r,i[g+104>>2]=1110511904^t,i[g+100>>2]=-248528275^c,i[g+92>>2]=w,i[g+88>>2]=n,i[g+84>>2]=p,w=r^D,i[g+76>>2]=w,n=t^h,i[g+72>>2]=n,p=c^y,i[g+68>>2]=p,i[g+12>>2]=w,i[g+8>>2]=n,i[g+4>>2]=p,n=0;w=i[I+12>>2],i[C+280>>2]=i[I+8>>2],i[C+284>>2]=w,w=i[I+4>>2],i[C+272>>2]=i[I>>2],i[C+276>>2]=w,w=i[a+12>>2],i[C+248>>2]=i[a+8>>2],i[C+252>>2]=w,w=i[a+4>>2],i[C+240>>2]=i[a>>2],i[C+244>>2]=w,w=i[I+12>>2],i[C+232>>2]=i[I+8>>2],i[C+236>>2]=w,w=i[I+4>>2],i[C+224>>2]=i[I>>2],i[C+228>>2]=w,AI(w=C+256|0,C+240|0,C+224|0),p=i[C+268>>2],i[I+8>>2]=i[C+264>>2],i[I+12>>2]=p,p=i[C+260>>2],i[I>>2]=i[C+256>>2],i[I+4>>2]=p,p=i[_+12>>2],i[C+216>>2]=i[_+8>>2],i[C+220>>2]=p,p=i[_+4>>2],i[C+208>>2]=i[_>>2],i[C+212>>2]=p,p=i[a+12>>2],i[C+200>>2]=i[a+8>>2],i[C+204>>2]=p,p=i[a+4>>2],i[C+192>>2]=i[a>>2],i[C+196>>2]=p,AI(w,C+208|0,C+192|0),p=i[C+268>>2],i[a+8>>2]=i[C+264>>2],i[a+12>>2]=p,p=i[C+260>>2],i[a>>2]=i[C+256>>2],i[a+4>>2]=p,p=i[A+12>>2],i[C+184>>2]=i[A+8>>2],i[C+188>>2]=p,p=i[A+4>>2],i[C+176>>2]=i[A>>2],i[C+180>>2]=p,p=i[_+12>>2],i[C+168>>2]=i[_+8>>2],i[C+172>>2]=p,p=i[_+4>>2],i[C+160>>2]=i[_>>2],i[C+164>>2]=p,AI(w,C+176|0,C+160|0),p=i[C+268>>2],i[_+8>>2]=i[C+264>>2],i[_+12>>2]=p,p=i[C+260>>2],i[_>>2]=i[C+256>>2],i[_+4>>2]=p,p=i[B+12>>2],i[C+152>>2]=i[B+8>>2],i[C+156>>2]=p,p=i[B+4>>2],i[C+144>>2]=i[B>>2],i[C+148>>2]=p,p=i[A+12>>2],i[C+136>>2]=i[A+8>>2],i[C+140>>2]=p,p=i[A+4>>2],i[C+128>>2]=i[A>>2],i[C+132>>2]=p,AI(w,C+144|0,C+128|0),p=i[C+268>>2],i[A+8>>2]=i[C+264>>2],i[A+12>>2]=p,p=i[C+260>>2],i[A>>2]=i[C+256>>2],i[A+4>>2]=p,p=i[Q+12>>2],i[C+120>>2]=i[Q+8>>2],i[C+124>>2]=p,p=i[Q+4>>2],i[C+112>>2]=i[Q>>2],i[C+116>>2]=p,p=i[B+12>>2],i[C+104>>2]=i[B+8>>2],i[C+108>>2]=p,p=i[B+4>>2],i[C+96>>2]=i[B>>2],i[C+100>>2]=p,AI(w,C+112|0,C+96|0),p=i[C+268>>2],i[B+8>>2]=i[C+264>>2],i[B+12>>2]=p,p=i[C+260>>2],i[B>>2]=i[C+256>>2],i[B+4>>2]=p,p=i[E+12>>2],i[C+88>>2]=i[E+8>>2],i[C+92>>2]=p,p=i[E+4>>2],i[C+80>>2]=i[E>>2],i[C+84>>2]=p,p=i[Q+12>>2],i[C+72>>2]=i[Q+8>>2],i[C+76>>2]=p,p=i[Q+4>>2],i[C+64>>2]=i[Q>>2],i[C+68>>2]=p,AI(w,C+80|0,C- -64|0),p=i[C+268>>2],i[Q+8>>2]=i[C+264>>2],i[Q+12>>2]=p,p=i[C+260>>2],i[Q>>2]=i[C+256>>2],i[Q+4>>2]=p,p=i[g+12>>2],i[C+56>>2]=i[g+8>>2],i[C+60>>2]=p,p=i[g+4>>2],i[C+48>>2]=i[g>>2],i[C+52>>2]=p,p=i[E+12>>2],i[C+40>>2]=i[E+8>>2],i[C+44>>2]=p,p=i[E+4>>2],i[C+32>>2]=i[E>>2],i[C+36>>2]=p,AI(w,C+48|0,C+32|0),p=i[C+268>>2],i[E+8>>2]=i[C+264>>2],i[E+12>>2]=p,p=i[C+260>>2],i[E>>2]=i[C+256>>2],i[E+4>>2]=p,p=i[C+284>>2],i[C+24>>2]=i[C+280>>2],i[C+28>>2]=p,p=i[C+276>>2],i[C+16>>2]=i[C+272>>2],i[C+20>>2]=p,p=i[g+12>>2],i[C+8>>2]=i[g+8>>2],i[C+12>>2]=p,p=i[g+4>>2],i[C>>2]=i[g>>2],i[C+4>>2]=p,AI(w,C+16|0,C),w=i[C+268>>2],i[g+8>>2]=i[C+264>>2],i[g+12>>2]=w,w=i[C+260>>2],i[g>>2]=i[C+256>>2],i[g+4>>2]=w,i[g+12>>2]=(o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24)^D,i[g+8>>2]=(o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24)^h,i[g+4>>2]=(o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24)^y,i[g>>2]=(o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24)^f,i[A>>2]=(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24)^e,i[g+68>>2]=(o[g+68|0]|o[g+69|0]<<8|o[g+70|0]<<16|o[g+71|0]<<24)^c,i[g+72>>2]=(o[g+72|0]|o[g+73|0]<<8|o[g+74|0]<<16|o[g+75|0]<<24)^t,i[g+76>>2]=(o[g+76|0]|o[g+77|0]<<8|o[g+78|0]<<16|o[g+79|0]<<24)^r,10!=(0|(n=n+1|0)););s=C+288|0}function q(A,I){var g,B=0,Q=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0;if(s=g=s-48|0,!((B=nI(A))||(B=-26,I-3>>>0<4294967294))){_=i[A+44>>2],B=i[A+48>>2],i[g+4>>2]=0,Q=i[A+40>>2],i[g+32>>2]=B,i[g+16>>2]=-1,i[g+12>>2]=Q,B=((e=(Q=B<<3)>>>0<_>>>0?_:Q)>>>0)/((_=B<<2)>>>0)|0,i[g+24>>2]=B,i[g+28>>2]=B<<2,i[g+20>>2]=a(B,_),B=i[A+52>>2],i[g+40>>2]=I,i[g+36>>2]=B,h=I=s,s=B=I-1152&-64,I=-25;A:{if(!(!(_=g+4|0)|!A)&&(Q=K(i[_+20>>2]<<3),i[_+4>>2]=Q,I=-22,Q)){I:{if((I=i[_+16>>2])&&1024==(((Q=I<<10)>>>0)/(I>>>0)|0)&&(I=K(12),i[_>>2]=I,I)){if(i[I>>2]=0,i[I+4>>2]=0,I=tI(B+128|0,Q),i[9404]=I,I)i[B+128>>2]=0;else if(I=i[B+128>>2])break I;BA(i[_>>2]),i[_>>2]=0}WI(_,i[A+56>>2]),s=h,I=-22;break A}if(i[i[_>>2]>>2]=I,i[i[_>>2]+4>>2]=I,i[i[_>>2]+8>>2]=Q,D=i[_+36>>2],eA(I=B+128|0,0,0,64),i[B+124>>2]=i[A+48>>2],WA(I,Q=B+124|0,4,0),i[B+124>>2]=i[A+4>>2],WA(I,Q,4,0),i[B+124>>2]=i[A+44>>2],WA(I,Q,4,0),i[B+124>>2]=i[A+40>>2],WA(I,Q,4,0),i[B+124>>2]=19,WA(I,Q,4,0),i[B+124>>2]=D,WA(I,Q,4,0),i[B+124>>2]=i[A+12>>2],WA(I,Q,4,0),(Q=i[A+8>>2])&&(WA(I,Q,i[A+12>>2],0),1&C[A+56|0]&&(XC(i[A+8>>2],i[A+12>>2]),i[A+12>>2]=0)),i[B+124>>2]=i[A+20>>2],WA(I=B+128|0,B+124|0,4,0),(Q=i[A+16>>2])&&WA(I,Q,i[A+20>>2],0),i[B+124>>2]=i[A+28>>2],WA(I=B+128|0,B+124|0,4,0),(Q=i[A+24>>2])&&(WA(I,Q,i[A+28>>2],0),2&o[A+56|0]&&(XC(i[A+24>>2],i[A+28>>2]),i[A+28>>2]=0)),i[B+124>>2]=i[A+36>>2],WA(I=B+128|0,B+124|0,4,0),(Q=i[A+32>>2])&&WA(I,Q,i[A+36>>2],0),Hg(B+128|0,B+48|0,64),XC(B+112|0,8),i[_+28>>2])for(Q=0;;){for(i[B+112>>2]=0,i[B+116>>2]=Q,aA(B+128|0,1024,B+48|0,72),D=i[i[_>>2]+4>>2]+(a(i[_+24>>2],Q)<<10)|0,I=0;c=(r=I<<3)+D|0,t=i[4+(y=(e=B+128|0)+r|0)>>2],i[c>>2]=i[y>>2],i[c+4>>2]=t,y=(c=8|r)+D|0,t=i[4+(c=c+e|0)>>2],i[y>>2]=i[c>>2],i[y+4>>2]=t,y=(c=16|r)+D|0,t=i[4+(c=c+e|0)>>2],i[y>>2]=i[c>>2],i[y+4>>2]=t,c=(r|=24)+D|0,y=i[4+(r=r+e|0)>>2],i[c>>2]=i[r>>2],i[c+4>>2]=y,128!=(0|(I=I+4|0)););for(i[B+112>>2]=1,aA(e,1024,B+48|0,72),D=1024+(i[i[_>>2]+4>>2]+(a(i[_+24>>2],Q)<<10)|0)|0,I=0;c=(r=I<<3)+D|0,t=i[4+(y=(e=B+128|0)+r|0)>>2],i[c>>2]=i[y>>2],i[c+4>>2]=t,y=(c=8|r)+D|0,t=i[4+(c=c+e|0)>>2],i[y>>2]=i[c>>2],i[y+4>>2]=t,y=(c=16|r)+D|0,t=i[4+(c=c+e|0)>>2],i[y>>2]=i[c>>2],i[y+4>>2]=t,c=(r|=24)+D|0,e=i[4+(r=r+e|0)>>2],i[c>>2]=i[r>>2],i[c+4>>2]=e,128!=(0|(I=I+4|0)););if(!((Q=Q+1|0)>>>0>2]))break}XC(B+128|0,1024),XC(B+48|0,72),I=0}s=h}if(B=I,!I){if(i[g+12>>2])for(;;){if(s=I=s-80|0,!(!(_=g+4|0)|!i[_+28>>2])){for(C[I+72|0]=0,i[I+64>>2]=p,B=0;i[I+76>>2]=0,Q=i[I+76>>2],i[I+56>>2]=i[I+72>>2],i[I+60>>2]=Q,i[I+68>>2]=B,Q=i[I+68>>2],i[I+48>>2]=i[I+64>>2],i[I+52>>2]=Q,F(_,I+48|0),(B=B+1|0)>>>0<(Q=i[_+28>>2])>>>0;);if(C[I+72|0]=1,Q){for(B=0;i[I+76>>2]=0,Q=i[I+76>>2],i[I+40>>2]=i[I+72>>2],i[I+44>>2]=Q,i[I+68>>2]=B,Q=i[I+68>>2],i[I+32>>2]=i[I+64>>2],i[I+36>>2]=Q,F(_,I+32|0),(B=B+1|0)>>>0<(Q=i[_+28>>2])>>>0;);if(C[I+72|0]=2,Q){for(B=0;i[I+76>>2]=0,Q=i[I+76>>2],i[I+24>>2]=i[I+72>>2],i[I+28>>2]=Q,i[I+68>>2]=B,Q=i[I+68>>2],i[I+16>>2]=i[I+64>>2],i[I+20>>2]=Q,F(_,I+16|0),(B=B+1|0)>>>0<(Q=i[_+28>>2])>>>0;);if(C[I+72|0]=3,Q)for(B=0;i[I+76>>2]=0,Q=i[I+76>>2],i[I+8>>2]=i[I+72>>2],i[I+12>>2]=Q,i[I+68>>2]=B,Q=i[I+68>>2],i[I>>2]=i[I+64>>2],i[I+4>>2]=Q,F(_,I),(B=B+1|0)>>>0>2];);}}}if(s=I+80|0,!((p=p+1|0)>>>0>2]))break}if(s=I=s-2048|0,!(!A|!(B=g+4|0))){if(p=i[B+24>>2],Ng(I+1024|0,c=(i[i[B>>2]+4>>2]+(p<<10)|0)-1024|0,1024),(y=i[B+28>>2])>>>0>=2)for(D=1;;){for(_=c+(a(D,p)<<10)|0,r=0;t=i[(h=(Q=r<<3)+(e=I+1024|0)|0)>>2],w=i[(f=Q+_|0)>>2],f=i[h+4>>2]^i[f+4>>2],i[h>>2]=t^w,i[h+4>>2]=f,f=i[(h=(t=8|Q)+e|0)>>2],w=i[(t=_+t|0)>>2],t=i[h+4>>2]^i[t+4>>2],i[h>>2]=f^w,i[h+4>>2]=t,f=i[(h=(t=16|Q)+e|0)>>2],w=i[(t=_+t|0)>>2],t=i[h+4>>2]^i[t+4>>2],i[h>>2]=f^w,i[h+4>>2]=t,h=i[(Q=(h=e)+(e=24|Q)|0)>>2],t=i[(e=_+e|0)>>2],e=i[Q+4>>2]^i[e+4>>2],i[Q>>2]=t^h,i[Q+4>>2]=e,128!=(0|(r=r+4|0)););if((0|y)==(0|(D=D+1|0)))break}_=Ng(I,I+1024|0,1024),aA(i[A>>2],i[A+4>>2],_,1024),XC(_+1024|0,1024),XC(_,1024),WI(B,i[A+56>>2])}s=I+2048|0,B=0}}return s=g+48|0,B}function z(A,I,g,B,Q){var E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0;for(E=s+-64|0,a=i[A+60>>2],_=i[A+56>>2],P=i[A+52>>2],L=i[A+48>>2],c=i[A+44>>2],t=i[A+40>>2],r=i[A+36>>2],e=i[A+32>>2],y=i[A+28>>2],h=i[A+24>>2],D=i[A+20>>2],f=i[A+16>>2],p=i[A+12>>2],w=i[A+8>>2],n=i[A+4>>2],k=i[A>>2];;){if(!Q&B>>>0>63|Q)F=g;else{if(i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,i[E+24>>2]=0,i[E+28>>2]=0,i[E+16>>2]=0,i[E+20>>2]=0,i[E+8>>2]=0,i[E+12>>2]=0,i[E>>2]=0,i[E+4>>2]=0,N=0,B|Q)for(;C[N+E|0]=o[I+N|0],!Q&(N=N+1|0)>>>0>>0|Q;);I=F=E,O=g}for(q=20,S=k,Y=n,J=w,l=p,N=f,g=D,M=h,K=y,U=e,x=r,d=t,G=a,v=_,u=P,m=L,b=c;H=N,S=Lg((N=S+N|0)^m,16),H=m=Lg(H^(U=S+U|0),12),m=Lg((R=N+m|0)^S,8),N=Lg(H^(U=m+U|0),7),G=Lg((S=K+l|0)^G,16),K=Lg((b=G+b|0)^K,12),l=Lg((J=M+J|0)^v,16),M=Lg((d=l+d|0)^M,12),v=(z=S+K|0)+N|0,j=Lg((J=M+J|0)^l,8),S=Lg(v^j,16),l=Lg((Y=g+Y|0)^u,16),g=Lg((x=l+x|0)^g,12),H=N,u=Lg((Y=g+Y|0)^l,8),H=Lg(H^(N=(X=u+x|0)+S|0),12),v=Lg(S^(l=H+v|0),8),N=Lg((x=v+N|0)^H,7),H=U,U=J,S=Lg(G^z,8),J=Lg((G=S+b|0)^K,7),u=Lg((U=U+J|0)^u,16),b=Lg((K=H+u|0)^J,12),u=Lg(u^(J=b+U|0),8),K=Lg((U=K+u|0)^b,7),b=G,G=Y,Y=Lg((d=d+j|0)^M,7),M=b+(m=Lg((G=G+Y|0)^m,16))|0,b=G,G=Lg(M^Y,12),m=Lg(m^(Y=b+G|0),8),M=Lg((b=M+m|0)^G,7),H=d,G=S,S=Lg(g^X,7),G=Lg(G^(d=S+R|0),16),R=Lg((g=H+G|0)^S,12),G=Lg(G^(S=R+d|0),8),g=Lg((d=g+G|0)^R,7),q=q-2|0;);if(q=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,R=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,z=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,j=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,X=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,H=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,W=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,V=o[I+32|0]|o[I+33|0]<<8|o[I+34|0]<<16|o[I+35|0]<<24,Z=o[I+36|0]|o[I+37|0]<<8|o[I+38|0]<<16|o[I+39|0]<<24,T=o[I+40|0]|o[I+41|0]<<8|o[I+42|0]<<16|o[I+43|0]<<24,$=o[I+44|0]|o[I+45|0]<<8|o[I+46|0]<<16|o[I+47|0]<<24,AA=o[I+48|0]|o[I+49|0]<<8|o[I+50|0]<<16|o[I+51|0]<<24,IA=o[I+52|0]|o[I+53|0]<<8|o[I+54|0]<<16|o[I+55|0]<<24,gA=o[I+56|0]|o[I+57|0]<<8|o[I+58|0]<<16|o[I+59|0]<<24,CA=o[I+60|0]|o[I+61|0]<<8|o[I+62|0]<<16|o[I+63|0]<<24,S=S+k^(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24),C[0|F]=S,C[F+1|0]=S>>>8,C[F+2|0]=S>>>16,C[F+3|0]=S>>>24,S=G+a^CA,C[F+60|0]=S,C[F+61|0]=S>>>8,C[F+62|0]=S>>>16,C[F+63|0]=S>>>24,S=v+_^gA,C[F+56|0]=S,C[F+57|0]=S>>>8,C[F+58|0]=S>>>16,C[F+59|0]=S>>>24,S=u+P^IA,C[F+52|0]=S,C[F+53|0]=S>>>8,C[F+54|0]=S>>>16,C[F+55|0]=S>>>24,S=m+L^AA,C[F+48|0]=S,C[F+49|0]=S>>>8,C[F+50|0]=S>>>16,C[F+51|0]=S>>>24,S=b+c^$,C[F+44|0]=S,C[F+45|0]=S>>>8,C[F+46|0]=S>>>16,C[F+47|0]=S>>>24,S=d+t^T,C[F+40|0]=S,C[F+41|0]=S>>>8,C[F+42|0]=S>>>16,C[F+43|0]=S>>>24,S=x+r^Z,C[F+36|0]=S,C[F+37|0]=S>>>8,C[F+38|0]=S>>>16,C[F+39|0]=S>>>24,S=U+e^V,C[F+32|0]=S,C[F+33|0]=S>>>8,C[F+34|0]=S>>>16,C[F+35|0]=S>>>24,K=K+y^W,C[F+28|0]=K,C[F+29|0]=K>>>8,C[F+30|0]=K>>>16,C[F+31|0]=K>>>24,M=H^M+h,C[F+24|0]=M,C[F+25|0]=M>>>8,C[F+26|0]=M>>>16,C[F+27|0]=M>>>24,g=X^g+D,C[F+20|0]=g,C[F+21|0]=g>>>8,C[F+22|0]=g>>>16,C[F+23|0]=g>>>24,g=j^N+f,C[F+16|0]=g,C[F+17|0]=g>>>8,C[F+18|0]=g>>>16,C[F+19|0]=g>>>24,g=z^l+p,C[F+12|0]=g,C[F+13|0]=g>>>8,C[F+14|0]=g>>>16,C[F+15|0]=g>>>24,g=R^J+w,C[F+8|0]=g,C[F+9|0]=g>>>8,C[F+10|0]=g>>>16,C[F+11|0]=g>>>24,g=q^Y+n,C[F+4|0]=g,C[F+5|0]=g>>>8,C[F+6|0]=g>>>16,C[F+7|0]=g>>>24,P=!(L=L+1|0)+P|0,!Q&B>>>0<=64){if(!(!(B|Q)|!Q&B>>>0>63|!!(0|Q)))for(N=0;C[N+O|0]=o[F+N|0],B>>>0>(N=N+1|0)>>>0;);i[A+52>>2]=P,i[A+48>>2]=L;break}I=I- -64|0,g=F- -64|0,Q=Q-1|0,Q=(B=B+-64|0)>>>0<4294967232?Q+1|0:Q}}function j(A,I){I|=0;var g,B=0,Q=0,o=0,E=0,a=0,_=0,c=0;return s=g=s-704|0,B=80+((Q=i[72+(A|=0)>>2]>>>3&127)+A|0)|0,Q>>>0>=112?(Ng(B,35056,128-Q|0),k(A,Q=A+80|0,g,g+640|0),bg(Q,0,112)):Ng(B,35056,112-Q|0),_=(o=i[A+64>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+68>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[A+192|0]=B,C[A+193|0]=B>>>8,C[A+194|0]=B>>>16,C[A+195|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[A+196|0]=Q,C[A+197|0]=Q>>>8,C[A+198|0]=Q>>>16,C[A+199|0]=Q>>>24,_=(o=i[A+72>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+76>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[A+200|0]=B,C[A+201|0]=B>>>8,C[A+202|0]=B>>>16,C[A+203|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[A+204|0]=Q,C[A+205|0]=Q>>>8,C[A+206|0]=Q>>>16,C[A+207|0]=Q>>>24,k(A,A+80|0,g,g+640|0),_=(o=i[A>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+4>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[0|I]=B,C[I+1|0]=B>>>8,C[I+2|0]=B>>>16,C[I+3|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+4|0]=Q,C[I+5|0]=Q>>>8,C[I+6|0]=Q>>>16,C[I+7|0]=Q>>>24,_=(o=i[A+8>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+12>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+8|0]=B,C[I+9|0]=B>>>8,C[I+10|0]=B>>>16,C[I+11|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+12|0]=Q,C[I+13|0]=Q>>>8,C[I+14|0]=Q>>>16,C[I+15|0]=Q>>>24,_=(o=i[A+16>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+20>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+16|0]=B,C[I+17|0]=B>>>8,C[I+18|0]=B>>>16,C[I+19|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+20|0]=Q,C[I+21|0]=Q>>>8,C[I+22|0]=Q>>>16,C[I+23|0]=Q>>>24,_=(o=i[A+24>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+28>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+24|0]=B,C[I+25|0]=B>>>8,C[I+26|0]=B>>>16,C[I+27|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+28|0]=Q,C[I+29|0]=Q>>>8,C[I+30|0]=Q>>>16,C[I+31|0]=Q>>>24,_=(o=i[A+32>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+36>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+32|0]=B,C[I+33|0]=B>>>8,C[I+34|0]=B>>>16,C[I+35|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+36|0]=Q,C[I+37|0]=Q>>>8,C[I+38|0]=Q>>>16,C[I+39|0]=Q>>>24,_=(o=i[A+40>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+44>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+40|0]=B,C[I+41|0]=B>>>8,C[I+42|0]=B>>>16,C[I+43|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+44|0]=Q,C[I+45|0]=Q>>>8,C[I+46|0]=Q>>>16,C[I+47|0]=Q>>>24,_=(o=i[A+48>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,c=E<<24,E=(a=-16777216&o)>>>24|0,B=c|a<<8|-16777216&((255&(B=i[A+52>>2]))<<24|o>>>8)|16711680&((16777215&B)<<8|o>>>24)|B>>>8&65280|B>>>24,C[I+48|0]=B,C[I+49|0]=B>>>8,C[I+50|0]=B>>>16,C[I+51|0]=B>>>24,B=Q|E|_,Q=0,Q|=B,C[I+52|0]=Q,C[I+53|0]=Q>>>8,C[I+54|0]=Q>>>16,C[I+55|0]=Q>>>24,_=(o=i[A+56>>2])<<24|(65280&o)<<8,Q=(E=16711680&o)>>>8|0,B=I,c=E<<24,E=(a=-16777216&o)>>>24|0,I=c|a<<8|-16777216&((255&(I=i[A+60>>2]))<<24|o>>>8)|16711680&((16777215&I)<<8|o>>>24)|I>>>8&65280|I>>>24,C[B+56|0]=I,C[B+57|0]=I>>>8,C[B+58|0]=I>>>16,C[B+59|0]=I>>>24,I=Q|E|_,I|=Q=0,C[B+60|0]=I,C[B+61|0]=I>>>8,C[B+62|0]=I>>>16,C[B+63|0]=I>>>24,XC(g,704),XC(A,208),s=g+704|0,0}function X(A,I,g){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S,N,G=0;s=B=s-224|0,c=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,t=o[0|(G=g- -64|0)]|o[G+1|0]<<8|o[G+2|0]<<16|o[G+3|0]<<24,r=o[g+80|0]|o[g+81|0]<<8|o[g+82|0]<<16|o[g+83|0]<<24,e=o[g+32|0]|o[g+33|0]<<8|o[g+34|0]<<16|o[g+35|0]<<24,y=o[g+48|0]|o[g+49|0]<<8|o[g+50|0]<<16|o[g+51|0]<<24,Q=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,h=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,D=o[g+68|0]|o[g+69|0]<<8|o[g+70|0]<<16|o[g+71|0]<<24,f=o[g+84|0]|o[g+85|0]<<8|o[g+86|0]<<16|o[g+87|0]<<24,p=o[g+36|0]|o[g+37|0]<<8|o[g+38|0]<<16|o[g+39|0]<<24,w=o[g+52|0]|o[g+53|0]<<8|o[g+54|0]<<16|o[g+55|0]<<24,E=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,n=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,k=o[g+72|0]|o[g+73|0]<<8|o[g+74|0]<<16|o[g+75|0]<<24,F=o[g+88|0]|o[g+89|0]<<8|o[g+90|0]<<16|o[g+91|0]<<24,S=o[g+40|0]|o[g+41|0]<<8|o[g+42|0]<<16|o[g+43|0]<<24,N=o[g+56|0]|o[g+57|0]<<8|o[g+58|0]<<16|o[g+59|0]<<24,a=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=(_=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24)^(o[g+44|0]|o[g+45|0]<<8|o[g+46|0]<<16|o[g+47|0]<<24)&(o[g+60|0]|o[g+61|0]<<8|o[g+62|0]<<16|o[g+63|0]<<24)^(o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24)^(o[g+92|0]|o[g+93|0]<<8|o[g+94|0]<<16|o[g+95|0]<<24)^(o[g+76|0]|o[g+77|0]<<8|o[g+78|0]<<16|o[g+79|0]<<24),C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=S&N^k^F^n^E,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=p&w^D^f^h^Q,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=e&y^c^t^r^a,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,A=i[g+92>>2],i[B+216>>2]=i[g+88>>2],i[B+220>>2]=A,A=i[g+84>>2],i[B+208>>2]=i[g+80>>2],i[B+212>>2]=A,A=i[g+76>>2],i[B+184>>2]=i[g+72>>2],i[B+188>>2]=A,A=i[G+4>>2],i[B+176>>2]=i[G>>2],i[B+180>>2]=A,A=i[g+92>>2],i[B+168>>2]=i[g+88>>2],i[B+172>>2]=A,A=i[g+84>>2],i[B+160>>2]=i[g+80>>2],i[B+164>>2]=A,AI(A=B+192|0,B+176|0,B+160|0),I=i[B+204>>2],i[g+88>>2]=i[B+200>>2],i[g+92>>2]=I,I=i[B+196>>2],i[g+80>>2]=i[B+192>>2],i[g+84>>2]=I,I=i[g+60>>2],i[B+152>>2]=i[g+56>>2],i[B+156>>2]=I,I=i[g+52>>2],i[B+144>>2]=i[g+48>>2],i[B+148>>2]=I,I=i[g+76>>2],i[B+136>>2]=i[g+72>>2],i[B+140>>2]=I,I=i[G+4>>2],i[B+128>>2]=i[G>>2],i[B+132>>2]=I,AI(A,B+144|0,B+128|0),I=i[B+204>>2],i[g+72>>2]=i[B+200>>2],i[g+76>>2]=I,I=i[B+196>>2],i[G>>2]=i[B+192>>2],i[G+4>>2]=I,I=i[g+44>>2],i[B+120>>2]=i[g+40>>2],i[B+124>>2]=I,I=i[g+36>>2],i[B+112>>2]=i[g+32>>2],i[B+116>>2]=I,I=i[g+60>>2],i[B+104>>2]=i[g+56>>2],i[B+108>>2]=I,I=i[g+52>>2],i[B+96>>2]=i[g+48>>2],i[B+100>>2]=I,AI(A,B+112|0,B+96|0),I=i[B+204>>2],i[g+56>>2]=i[B+200>>2],i[g+60>>2]=I,I=i[B+196>>2],i[g+48>>2]=i[B+192>>2],i[g+52>>2]=I,I=i[g+28>>2],i[B+88>>2]=i[g+24>>2],i[B+92>>2]=I,I=i[g+20>>2],i[B+80>>2]=i[g+16>>2],i[B+84>>2]=I,I=i[g+44>>2],i[B+72>>2]=i[g+40>>2],i[B+76>>2]=I,I=i[g+36>>2],i[B+64>>2]=i[g+32>>2],i[B+68>>2]=I,AI(A,B+80|0,B- -64|0),I=i[B+204>>2],i[g+40>>2]=i[B+200>>2],i[g+44>>2]=I,I=i[B+196>>2],i[g+32>>2]=i[B+192>>2],i[g+36>>2]=I,I=i[g+12>>2],i[B+56>>2]=i[g+8>>2],i[B+60>>2]=I,I=i[g+4>>2],i[B+48>>2]=i[g>>2],i[B+52>>2]=I,I=i[g+28>>2],i[B+40>>2]=i[g+24>>2],i[B+44>>2]=I,I=i[g+20>>2],i[B+32>>2]=i[g+16>>2],i[B+36>>2]=I,AI(A,B+48|0,B+32|0),I=i[B+204>>2],i[g+24>>2]=i[B+200>>2],i[g+28>>2]=I,I=i[B+196>>2],i[g+16>>2]=i[B+192>>2],i[g+20>>2]=I,I=i[B+220>>2],i[B+24>>2]=i[B+216>>2],i[B+28>>2]=I,I=i[B+212>>2],i[B+16>>2]=i[B+208>>2],i[B+20>>2]=I,I=i[g+12>>2],i[B+8>>2]=i[g+8>>2],i[B+12>>2]=I,I=i[g+4>>2],i[B>>2]=i[g>>2],i[B+4>>2]=I,AI(A,B+16|0,B),A=i[B+192>>2],I=i[B+196>>2],G=i[B+200>>2],i[g+12>>2]=_^i[B+204>>2],i[g+8>>2]=G^E,i[g+4>>2]=I^Q,i[g>>2]=A^a,s=B+224|0}function O(A,I,g){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n=0,k=0,F=0,S=0,N=0;s=B=s-224|0,F=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,k=o[0|(n=g- -64|0)]|o[n+1|0]<<8|o[n+2|0]<<16|o[n+3|0]<<24,Q=o[g+80|0]|o[g+81|0]<<8|o[g+82|0]<<16|o[g+83|0]<<24,E=o[g+32|0]|o[g+33|0]<<8|o[g+34|0]<<16|o[g+35|0]<<24,a=o[g+48|0]|o[g+49|0]<<8|o[g+50|0]<<16|o[g+51|0]<<24,S=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,_=o[g+68|0]|o[g+69|0]<<8|o[g+70|0]<<16|o[g+71|0]<<24,c=o[g+84|0]|o[g+85|0]<<8|o[g+86|0]<<16|o[g+87|0]<<24,t=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,r=o[g+36|0]|o[g+37|0]<<8|o[g+38|0]<<16|o[g+39|0]<<24,e=o[g+52|0]|o[g+53|0]<<8|o[g+54|0]<<16|o[g+55|0]<<24,N=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,y=o[g+72|0]|o[g+73|0]<<8|o[g+74|0]<<16|o[g+75|0]<<24,h=o[g+88|0]|o[g+89|0]<<8|o[g+90|0]<<16|o[g+91|0]<<24,D=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,f=o[g+40|0]|o[g+41|0]<<8|o[g+42|0]<<16|o[g+43|0]<<24,p=o[g+56|0]|o[g+57|0]<<8|o[g+58|0]<<16|o[g+59|0]<<24,w=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=(o[g+44|0]|o[g+45|0]<<8|o[g+46|0]<<16|o[g+47|0]<<24)&(o[g+60|0]|o[g+61|0]<<8|o[g+62|0]<<16|o[g+63|0]<<24)^(o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24)^(o[g+76|0]|o[g+77|0]<<8|o[g+78|0]<<16|o[g+79|0]<<24)^(o[g+92|0]|o[g+93|0]<<8|o[g+94|0]<<16|o[g+95|0]<<24)^(o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24),C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,N=f&p^N^h^D^y,C[A+8|0]=N,C[A+9|0]=N>>>8,C[A+10|0]=N>>>16,C[A+11|0]=N>>>24,S=r&e^S^c^t^_,C[A+4|0]=S,C[A+5|0]=S>>>8,C[A+6|0]=S>>>16,C[A+7|0]=S>>>24,F=E&a^F^k^Q^w,C[0|A]=F,C[A+1|0]=F>>>8,C[A+2|0]=F>>>16,C[A+3|0]=F>>>24,A=i[g+92>>2],i[B+216>>2]=i[g+88>>2],i[B+220>>2]=A,A=i[g+84>>2],i[B+208>>2]=i[g+80>>2],i[B+212>>2]=A,A=i[g+76>>2],i[B+184>>2]=i[g+72>>2],i[B+188>>2]=A,A=i[n+4>>2],i[B+176>>2]=i[n>>2],i[B+180>>2]=A,A=i[g+92>>2],i[B+168>>2]=i[g+88>>2],i[B+172>>2]=A,A=i[g+84>>2],i[B+160>>2]=i[g+80>>2],i[B+164>>2]=A,AI(A=B+192|0,B+176|0,B+160|0),k=i[B+204>>2],i[g+88>>2]=i[B+200>>2],i[g+92>>2]=k,k=i[B+196>>2],i[g+80>>2]=i[B+192>>2],i[g+84>>2]=k,k=i[g+60>>2],i[B+152>>2]=i[g+56>>2],i[B+156>>2]=k,k=i[g+52>>2],i[B+144>>2]=i[g+48>>2],i[B+148>>2]=k,k=i[g+76>>2],i[B+136>>2]=i[g+72>>2],i[B+140>>2]=k,k=i[n+4>>2],i[B+128>>2]=i[n>>2],i[B+132>>2]=k,AI(A,B+144|0,B+128|0),k=i[B+204>>2],i[g+72>>2]=i[B+200>>2],i[g+76>>2]=k,k=i[B+196>>2],i[n>>2]=i[B+192>>2],i[n+4>>2]=k,n=i[g+44>>2],i[B+120>>2]=i[g+40>>2],i[B+124>>2]=n,n=i[g+36>>2],i[B+112>>2]=i[g+32>>2],i[B+116>>2]=n,n=i[g+60>>2],i[B+104>>2]=i[g+56>>2],i[B+108>>2]=n,n=i[g+52>>2],i[B+96>>2]=i[g+48>>2],i[B+100>>2]=n,AI(A,B+112|0,B+96|0),n=i[B+204>>2],i[g+56>>2]=i[B+200>>2],i[g+60>>2]=n,n=i[B+196>>2],i[g+48>>2]=i[B+192>>2],i[g+52>>2]=n,n=i[g+28>>2],i[B+88>>2]=i[g+24>>2],i[B+92>>2]=n,n=i[g+20>>2],i[B+80>>2]=i[g+16>>2],i[B+84>>2]=n,n=i[g+44>>2],i[B+72>>2]=i[g+40>>2],i[B+76>>2]=n,n=i[g+36>>2],i[B+64>>2]=i[g+32>>2],i[B+68>>2]=n,AI(A,B+80|0,B- -64|0),n=i[B+204>>2],i[g+40>>2]=i[B+200>>2],i[g+44>>2]=n,n=i[B+196>>2],i[g+32>>2]=i[B+192>>2],i[g+36>>2]=n,n=i[g+12>>2],i[B+56>>2]=i[g+8>>2],i[B+60>>2]=n,n=i[g+4>>2],i[B+48>>2]=i[g>>2],i[B+52>>2]=n,n=i[g+28>>2],i[B+40>>2]=i[g+24>>2],i[B+44>>2]=n,n=i[g+20>>2],i[B+32>>2]=i[g+16>>2],i[B+36>>2]=n,AI(A,B+48|0,B+32|0),n=i[B+204>>2],i[g+24>>2]=i[B+200>>2],i[g+28>>2]=n,n=i[B+196>>2],i[g+16>>2]=i[B+192>>2],i[g+20>>2]=n,n=i[B+220>>2],i[B+24>>2]=i[B+216>>2],i[B+28>>2]=n,n=i[B+212>>2],i[B+16>>2]=i[B+208>>2],i[B+20>>2]=n,n=i[g+12>>2],i[B+8>>2]=i[g+8>>2],i[B+12>>2]=n,n=i[g+4>>2],i[B>>2]=i[g>>2],i[B+4>>2]=n,AI(A,B+16|0,B),A=i[B+192>>2],n=i[B+196>>2],k=i[B+200>>2],i[g+12>>2]=I^i[B+204>>2],i[g+8>>2]=k^N,i[g+4>>2]=n^S,i[g>>2]=A^F,s=B+224|0}function W(A,I){var g,B,Q,E,a,_,c,t,r,e,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0;s=g=s-800|0,y=i[I+44>>2],D=i[I+84>>2],f=i[I+48>>2],p=i[I+88>>2],w=i[I+52>>2],h=i[I+92>>2],S=i[I+56>>2],n=i[I+96>>2],K=i[I+60>>2],N=i[I+100>>2],H=i[(U=I- -64|0)>>2],Y=i[I+104>>2],J=i[I+68>>2],d=i[I+108>>2],m=i[I+72>>2],l=i[I+112>>2],u=i[I+40>>2],x=i[I+80>>2],k=i[I+76>>2],F=i[I+116>>2],i[g+324>>2]=k+F,i[g+320>>2]=m+l,i[g+316>>2]=J+d,i[g+312>>2]=H+Y,i[g+308>>2]=N+K,i[g+304>>2]=n+S,i[g+300>>2]=h+w,i[g+296>>2]=f+p,i[g+292>>2]=y+D,i[g+288>>2]=u+x,i[g+36>>2]=F-k,i[g+32>>2]=l-m,i[g+28>>2]=d-J,i[g+24>>2]=Y-H,i[g+20>>2]=N-K,i[g+16>>2]=n-S,i[g+12>>2]=h-w,i[g+8>>2]=p-f,i[g+4>>2]=D-y,i[g>>2]=x-u,b(y=g+288|0,y,g),b(f=g+240|0,I,w=I+40|0),R(D=g+192|0,f),b(D,y,D),i[g+452>>2]=0,i[g+456>>2]=0,i[g+460>>2]=0,i[g+464>>2]=0,i[g+468>>2]=0,i[g+436>>2]=0,i[g+440>>2]=0,i[g+444>>2]=0,i[g+448>>2]=0,i[g+432>>2]=1,GA(p=g+576|0,g+432|0,D),b(D=g+720|0,p,y),b(K=g+672|0,p,f),b(n=g+48|0,D,K),b(n,n,y=I+120|0),b(g+528|0,I,1632),b(g+480|0,w,1632),b(g+624|0,D,2944),b(D=g+336|0,y,n),QI(S=g+384|0,D),h=o[g+384|0],D=i[I+36>>2],y=i[I+32>>2],i[g+176>>2]=y,i[g+180>>2]=D,f=i[I+28>>2],D=i[I+24>>2],i[g+168>>2]=D,i[g+172>>2]=f,p=i[I+20>>2],f=i[I+16>>2],i[g+160>>2]=f,i[g+164>>2]=p,w=i[I+12>>2],p=i[I+8>>2],i[g+152>>2]=p,i[g+156>>2]=w,N=i[I+4>>2],w=i[I>>2],i[g+144>>2]=w,i[g+148>>2]=N,N=i[I+44>>2],H=i[I+48>>2],Y=i[I+52>>2],J=i[I+56>>2],d=i[I+60>>2],m=i[U>>2],l=i[I+68>>2],u=i[I+72>>2],x=i[I+76>>2],U=i[I+40>>2],P=i[g+484>>2],k=i[g+148>>2],q=i[g+492>>2],F=i[g+156>>2],z=i[g+500>>2],G=i[g+164>>2],j=i[g+508>>2],M=i[g+172>>2],X=i[g+516>>2],v=i[g+180>>2],O=i[g+480>>2],W=i[g+488>>2],V=i[g+496>>2],Z=i[g+504>>2],h=0-(1&h)|0,i[g+176>>2]=y^h&(y^i[g+512>>2]),i[g+168>>2]=D^h&(D^Z),i[g+160>>2]=f^h&(f^V),i[g+152>>2]=p^h&(p^W),i[g+144>>2]=w^h&(w^O),i[g+180>>2]=v^h&(v^X),i[g+172>>2]=M^h&(M^j),i[g+164>>2]=G^h&(G^z),i[g+156>>2]=F^h&(F^q),i[g+148>>2]=k^h&(k^P),v=i[g+528>>2],P=i[g+532>>2],q=i[g+536>>2],z=i[g+540>>2],j=i[g+544>>2],X=i[g+548>>2],O=i[g+552>>2],W=i[g+556>>2],V=i[g+560>>2],Z=i[g+564>>2],y=i[g+672>>2],B=i[g+624>>2],D=i[g+676>>2],Q=i[g+628>>2],f=i[g+680>>2],E=i[g+632>>2],p=i[g+684>>2],a=i[g+636>>2],w=i[g+688>>2],_=i[g+640>>2],k=i[g+692>>2],c=i[g+644>>2],F=i[g+696>>2],t=i[g+648>>2],G=i[g+700>>2],r=i[g+652>>2],M=i[g+704>>2],e=i[g+656>>2],L=i[g+708>>2],i[g+708>>2]=L^h&(i[g+660>>2]^L),i[g+704>>2]=M^h&(M^e),i[g+700>>2]=G^h&(G^r),i[g+696>>2]=F^h&(F^t),i[g+692>>2]=k^h&(k^c),i[g+688>>2]=w^h&(w^_),i[g+684>>2]=p^h&(p^a),i[g+680>>2]=f^h&(f^E),i[g+676>>2]=D^h&(D^Q),i[g+672>>2]=y^h&(y^B),b(y=g+96|0,g+144|0,n),QI(S,y),D=i[I+84>>2],f=i[I+88>>2],p=i[I+92>>2],w=i[I+96>>2],n=i[I+100>>2],k=i[I+104>>2],F=i[I+108>>2],G=i[I+112>>2],M=i[I+80>>2],L=i[I+116>>2],I=0-(1&C[g+384|0])|0,y=x^h&(x^Z),i[g+420>>2]=L-(I&(0-y^y)^y),y=u^h&(u^V),i[g+416>>2]=G-(I&(0-y^y)^y),y=l^h&(l^W),i[g+412>>2]=F-(I&(0-y^y)^y),y=m^h&(m^O),i[g+408>>2]=k-(I&(0-y^y)^y),y=d^h&(d^X),i[g+404>>2]=n-(I&(0-y^y)^y),y=J^h&(J^j),i[g+400>>2]=w-(I&(0-y^y)^y),y=Y^h&(Y^z),i[g+396>>2]=p-(I&(0-y^y)^y),y=H^h&(H^q),i[g+392>>2]=f-(I&(0-y^y)^y),y=N^h&(N^P),i[g+388>>2]=D-(I&(0-y^y)^y),y=I,I=U^h&(U^v),i[g+384>>2]=M-(y&(0-I^I)^I),b(S,K,S),QI(g+768|0,S),I=0-(1&C[g+768|0])|0,y=i[g+384>>2],i[g+384>>2]=I&(0-y^y)^y,y=i[g+388>>2],i[g+388>>2]=I&(0-y^y)^y,y=i[g+392>>2],i[g+392>>2]=I&(0-y^y)^y,y=i[g+396>>2],i[g+396>>2]=I&(0-y^y)^y,y=i[g+400>>2],i[g+400>>2]=I&(0-y^y)^y,y=i[g+404>>2],i[g+404>>2]=I&(0-y^y)^y,y=i[g+408>>2],i[g+408>>2]=I&(0-y^y)^y,y=i[g+412>>2],i[g+412>>2]=I&(0-y^y)^y,y=i[g+416>>2],i[g+416>>2]=I&(0-y^y)^y,y=I,I=i[g+420>>2],i[g+420>>2]=y&(0-I^I)^I,QI(A,S),s=g+800|0}function V(A,I){var g,C,B,Q,E,a,_,c,t,r=0,e=0;s=g=s-288|0,C=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,B=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,Q=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,E=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,a=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,_=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,c=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,t=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,A=i[I+124>>2],i[g+280>>2]=i[I+120>>2],i[g+284>>2]=A,A=i[I+116>>2],i[g+272>>2]=i[I+112>>2],i[g+276>>2]=A,A=i[I+108>>2],i[g+248>>2]=i[I+104>>2],i[g+252>>2]=A,A=i[I+100>>2],i[g+240>>2]=i[I+96>>2],i[g+244>>2]=A,A=i[I+124>>2],i[g+232>>2]=i[I+120>>2],i[g+236>>2]=A,A=i[I+116>>2],i[g+224>>2]=i[I+112>>2],i[g+228>>2]=A,AI(e=g+256|0,g+240|0,g+224|0),A=i[g+268>>2],i[I+120>>2]=i[g+264>>2],i[I+124>>2]=A,A=i[g+260>>2],i[I+112>>2]=i[g+256>>2],i[I+116>>2]=A,A=i[I+92>>2],i[g+216>>2]=i[I+88>>2],i[g+220>>2]=A,A=i[I+84>>2],i[g+208>>2]=i[I+80>>2],i[g+212>>2]=A,A=i[I+108>>2],i[g+200>>2]=i[I+104>>2],i[g+204>>2]=A,A=i[I+100>>2],i[g+192>>2]=i[I+96>>2],i[g+196>>2]=A,AI(e,g+208|0,g+192|0),A=i[g+268>>2],i[I+104>>2]=i[g+264>>2],i[I+108>>2]=A,A=i[g+260>>2],i[I+96>>2]=i[g+256>>2],i[I+100>>2]=A,A=i[I+76>>2],i[g+184>>2]=i[I+72>>2],i[g+188>>2]=A,r=i[4+(A=I- -64|0)>>2],i[g+176>>2]=i[A>>2],i[g+180>>2]=r,r=i[I+92>>2],i[g+168>>2]=i[I+88>>2],i[g+172>>2]=r,r=i[I+84>>2],i[g+160>>2]=i[I+80>>2],i[g+164>>2]=r,AI(e,g+176|0,g+160|0),r=i[g+268>>2],i[I+88>>2]=i[g+264>>2],i[I+92>>2]=r,r=i[g+260>>2],i[I+80>>2]=i[g+256>>2],i[I+84>>2]=r,r=i[I+60>>2],i[g+152>>2]=i[I+56>>2],i[g+156>>2]=r,r=i[I+52>>2],i[g+144>>2]=i[I+48>>2],i[g+148>>2]=r,r=i[I+76>>2],i[g+136>>2]=i[I+72>>2],i[g+140>>2]=r,r=i[A+4>>2],i[g+128>>2]=i[A>>2],i[g+132>>2]=r,AI(e,g+144|0,g+128|0),r=i[g+268>>2],i[I+72>>2]=i[g+264>>2],i[I+76>>2]=r,r=i[g+260>>2],i[A>>2]=i[g+256>>2],i[A+4>>2]=r,r=i[I+44>>2],i[g+120>>2]=i[I+40>>2],i[g+124>>2]=r,r=i[I+36>>2],i[g+112>>2]=i[I+32>>2],i[g+116>>2]=r,r=i[I+60>>2],i[g+104>>2]=i[I+56>>2],i[g+108>>2]=r,r=i[I+52>>2],i[g+96>>2]=i[I+48>>2],i[g+100>>2]=r,AI(e,g+112|0,g+96|0),r=i[g+268>>2],i[I+56>>2]=i[g+264>>2],i[I+60>>2]=r,r=i[g+260>>2],i[I+48>>2]=i[g+256>>2],i[I+52>>2]=r,r=i[I+28>>2],i[g+88>>2]=i[I+24>>2],i[g+92>>2]=r,r=i[I+20>>2],i[g+80>>2]=i[I+16>>2],i[g+84>>2]=r,r=i[I+44>>2],i[g+72>>2]=i[I+40>>2],i[g+76>>2]=r,r=i[I+36>>2],i[g+64>>2]=i[I+32>>2],i[g+68>>2]=r,AI(e,g+80|0,g- -64|0),r=i[g+268>>2],i[I+40>>2]=i[g+264>>2],i[I+44>>2]=r,r=i[g+260>>2],i[I+32>>2]=i[g+256>>2],i[I+36>>2]=r,r=i[I+12>>2],i[g+56>>2]=i[I+8>>2],i[g+60>>2]=r,r=i[I+4>>2],i[g+48>>2]=i[I>>2],i[g+52>>2]=r,r=i[I+28>>2],i[g+40>>2]=i[I+24>>2],i[g+44>>2]=r,r=i[I+20>>2],i[g+32>>2]=i[I+16>>2],i[g+36>>2]=r,AI(e,g+48|0,g+32|0),r=i[g+268>>2],i[I+24>>2]=i[g+264>>2],i[I+28>>2]=r,r=i[g+260>>2],i[I+16>>2]=i[g+256>>2],i[I+20>>2]=r,r=i[g+284>>2],i[g+24>>2]=i[g+280>>2],i[g+28>>2]=r,r=i[g+276>>2],i[g+16>>2]=i[g+272>>2],i[g+20>>2]=r,r=i[I+12>>2],i[g+8>>2]=i[I+8>>2],i[g+12>>2]=r,r=i[I+4>>2],i[g>>2]=i[I>>2],i[g+4>>2]=r,AI(e,g+16|0,g),e=i[g+268>>2],i[I+8>>2]=i[g+264>>2],i[I+12>>2]=e,e=i[g+260>>2],i[I>>2]=i[g+256>>2],i[I+4>>2]=e,i[I+12>>2]=(o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24)^c,i[I+8>>2]=(o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24)^_,i[I+4>>2]=(o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24)^a,i[I>>2]=(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24)^t,i[A>>2]=(o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24)^E,i[I+68>>2]=(o[I+68|0]|o[I+69|0]<<8|o[I+70|0]<<16|o[I+71|0]<<24)^Q,i[I+72>>2]=(o[I+72|0]|o[I+73|0]<<8|o[I+74|0]<<16|o[I+75|0]<<24)^B,i[I+76>>2]=(o[I+76|0]|o[I+77|0]<<8|o[I+78|0]<<16|o[I+79|0]<<24)^C,s=g+288|0}function Z(A,I,g,C){var B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k=0,F=0,S=0,N=0;s=B=s-240|0,i[B+200>>2]=0,i[B+204>>2]=0,i[B+192>>2]=0,i[B+196>>2]=0,Ng(F=B+192|0,I,g),S=o[C+16|0]|o[C+17|0]<<8|o[C+18|0]<<16|o[C+19|0]<<24,N=o[0|(I=C- -64|0)]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,k=o[C+80|0]|o[C+81|0]<<8|o[C+82|0]<<16|o[C+83|0]<<24,Q=o[C+32|0]|o[C+33|0]<<8|o[C+34|0]<<16|o[C+35|0]<<24,E=o[C+48|0]|o[C+49|0]<<8|o[C+50|0]<<16|o[C+51|0]<<24,a=o[C+20|0]|o[C+21|0]<<8|o[C+22|0]<<16|o[C+23|0]<<24,_=o[C+68|0]|o[C+69|0]<<8|o[C+70|0]<<16|o[C+71|0]<<24,c=o[C+84|0]|o[C+85|0]<<8|o[C+86|0]<<16|o[C+87|0]<<24,t=o[C+36|0]|o[C+37|0]<<8|o[C+38|0]<<16|o[C+39|0]<<24,r=o[C+52|0]|o[C+53|0]<<8|o[C+54|0]<<16|o[C+55|0]<<24,e=o[C+24|0]|o[C+25|0]<<8|o[C+26|0]<<16|o[C+27|0]<<24,y=o[C+72|0]|o[C+73|0]<<8|o[C+74|0]<<16|o[C+75|0]<<24,h=o[C+88|0]|o[C+89|0]<<8|o[C+90|0]<<16|o[C+91|0]<<24,D=o[C+40|0]|o[C+41|0]<<8|o[C+42|0]<<16|o[C+43|0]<<24,f=o[C+56|0]|o[C+57|0]<<8|o[C+58|0]<<16|o[C+59|0]<<24,p=i[B+192>>2],w=i[B+196>>2],n=i[B+200>>2],i[B+204>>2]=(o[C+44|0]|o[C+45|0]<<8|o[C+46|0]<<16|o[C+47|0]<<24)&(o[C+60|0]|o[C+61|0]<<8|o[C+62|0]<<16|o[C+63|0]<<24)^(o[C+28|0]|o[C+29|0]<<8|o[C+30|0]<<16|o[C+31|0]<<24)^(o[C+76|0]|o[C+77|0]<<8|o[C+78|0]<<16|o[C+79|0]<<24)^i[B+204>>2]^(o[C+92|0]|o[C+93|0]<<8|o[C+94|0]<<16|o[C+95|0]<<24),i[B+200>>2]=D&f^h^n^y^e,i[B+196>>2]=t&r^c^w^_^a,i[B+192>>2]=Q&E^S^N^k^p,bg(g+F|0,0,16-g|0),Ng(A,F,g),g=i[B+192>>2],F=i[B+196>>2],S=i[B+200>>2],N=i[B+204>>2],A=i[C+92>>2],i[B+232>>2]=i[C+88>>2],i[B+236>>2]=A,A=i[C+84>>2],i[B+224>>2]=i[C+80>>2],i[B+228>>2]=A,A=i[C+76>>2],i[B+184>>2]=i[C+72>>2],i[B+188>>2]=A,A=i[I+4>>2],i[B+176>>2]=i[I>>2],i[B+180>>2]=A,A=i[C+92>>2],i[B+168>>2]=i[C+88>>2],i[B+172>>2]=A,A=i[C+84>>2],i[B+160>>2]=i[C+80>>2],i[B+164>>2]=A,AI(A=B+208|0,B+176|0,B+160|0),k=i[B+220>>2],i[C+88>>2]=i[B+216>>2],i[C+92>>2]=k,k=i[B+212>>2],i[C+80>>2]=i[B+208>>2],i[C+84>>2]=k,k=i[C+60>>2],i[B+152>>2]=i[C+56>>2],i[B+156>>2]=k,k=i[C+52>>2],i[B+144>>2]=i[C+48>>2],i[B+148>>2]=k,k=i[C+76>>2],i[B+136>>2]=i[C+72>>2],i[B+140>>2]=k,k=i[I+4>>2],i[B+128>>2]=i[I>>2],i[B+132>>2]=k,AI(A,B+144|0,B+128|0),k=i[B+220>>2],i[C+72>>2]=i[B+216>>2],i[C+76>>2]=k,k=i[B+212>>2],i[I>>2]=i[B+208>>2],i[I+4>>2]=k,I=i[C+44>>2],i[B+120>>2]=i[C+40>>2],i[B+124>>2]=I,I=i[C+36>>2],i[B+112>>2]=i[C+32>>2],i[B+116>>2]=I,I=i[C+60>>2],i[B+104>>2]=i[C+56>>2],i[B+108>>2]=I,I=i[C+52>>2],i[B+96>>2]=i[C+48>>2],i[B+100>>2]=I,AI(A,B+112|0,B+96|0),I=i[B+220>>2],i[C+56>>2]=i[B+216>>2],i[C+60>>2]=I,I=i[B+212>>2],i[C+48>>2]=i[B+208>>2],i[C+52>>2]=I,I=i[C+28>>2],i[B+88>>2]=i[C+24>>2],i[B+92>>2]=I,I=i[C+20>>2],i[B+80>>2]=i[C+16>>2],i[B+84>>2]=I,I=i[C+44>>2],i[B+72>>2]=i[C+40>>2],i[B+76>>2]=I,I=i[C+36>>2],i[B+64>>2]=i[C+32>>2],i[B+68>>2]=I,AI(A,B+80|0,B- -64|0),I=i[B+220>>2],i[C+40>>2]=i[B+216>>2],i[C+44>>2]=I,I=i[B+212>>2],i[C+32>>2]=i[B+208>>2],i[C+36>>2]=I,I=i[C+12>>2],i[B+56>>2]=i[C+8>>2],i[B+60>>2]=I,I=i[C+4>>2],i[B+48>>2]=i[C>>2],i[B+52>>2]=I,I=i[C+28>>2],i[B+40>>2]=i[C+24>>2],i[B+44>>2]=I,I=i[C+20>>2],i[B+32>>2]=i[C+16>>2],i[B+36>>2]=I,AI(A,B+48|0,B+32|0),I=i[B+220>>2],i[C+24>>2]=i[B+216>>2],i[C+28>>2]=I,I=i[B+212>>2],i[C+16>>2]=i[B+208>>2],i[C+20>>2]=I,I=i[B+236>>2],i[B+24>>2]=i[B+232>>2],i[B+28>>2]=I,I=i[B+228>>2],i[B+16>>2]=i[B+224>>2],i[B+20>>2]=I,I=i[C+12>>2],i[B+8>>2]=i[C+8>>2],i[B+12>>2]=I,I=i[C+4>>2],i[B>>2]=i[C>>2],i[B+4>>2]=I,AI(A,B+16|0,B),A=i[B+208>>2],I=i[B+212>>2],k=i[B+216>>2],i[C+12>>2]=N^i[B+220>>2],i[C+8>>2]=k^S,i[C+4>>2]=I^F,i[C>>2]=A^g,s=B+240|0}function T(A,I,g,B,Q){A|=0,I|=0,g|=0,B|=0;var i=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,p=0,w=0,n=0,k=0;if(a=1886610805^(B=o[0|(Q|=0)]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24),E=1936682341^(i=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24),c=1852142177^B,_=1819895653^i,i=1852075885^(B=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24),Q=1685025377^(r=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24),t=2037671283^B,r^=1952801890,(0|(h=(I+g|0)-(y=7&g)|0))!=(0|I))for(;t=c=c+(B=t^(w=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24))|0,_=_+(r^=n=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24)|0,_=B>>>0>c>>>0?_+1|0:_,E=Q+E|0,E=(s=a)>>>0>(a=i+a|0)>>>0?E+1|0:E,Q=c+(i=UI(i,Q,13)^a)|0,c=_+(e=f^E)|0,e=UI(i,e,17)^Q,D=UI(e,c=(s=Q>>>0>>0?c+1|0:c)^f,13),p=f,B=UI(B,r,16),i=_^f,_=B^t,a=UI(a,E,32),t=c,c=f+i|0,t=1+(a=t+(E=(B=_+a|0)>>>0>>0?c+1|0:c)|0)|0,c=a,c=(a=B+e|0)>>>0>>0?t:c,D=UI(t=a^D,r=c^p,17),p=f,i=UI(_,i,21),E^=f,k=B^i,Q=UI(Q,s,32),i=f+E|0,Q=r+(s=(B=k+Q|0)>>>0>>0?i+1|0:i)|0,i=(_=B+t|0)^D,Q=(e=_>>>0>>0?Q+1|0:Q)^p,E=UI(k,E,16),r=t=s^f,E=UI(B^=E,t,21),s=f,t=(B=(a=UI(a,c,32))+B|0)^E,c=f+r|0,r=(E=B>>>0>>0?c+1|0:c)^s,c=UI(_,e,32),_=f,a=B^w,E^=n,(0|h)!=(0|(I=I+8|0)););switch(g<<=24,B=0,y-1|0){case 6:g|=o[I+6|0]<<16;case 5:g|=o[I+5|0]<<8;case 4:g|=o[I+4|0];case 3:e=(B=o[I+3|0])>>>8|0,B<<=24,g|=e;case 2:B|=(e=o[I+2|0])<<16,g|=y=e>>>16|0;case 1:B|=(e=o[I+1|0])<<8,g|=y=e>>>24|0;case 0:B=o[0|I]|B}return r=UI(I=B^t,t=g^r,16),_=_+t|0,c=(I=I+c|0)>>>0>>0?_+1|0:_,r=UI(_=I^r,t=c^f,21),e=f,s=1+(E=Q+E|0)|0,y=E,y=a=a>>>0>(E=i+a|0)>>>0?s:y,h=UI(E,a,32),t=f+t|0,e=UI(_=r^(a=_+h|0),r=e^(t=a>>>0>>0?t+1|0:t),16),h=f,Q=UI(i,Q,13)^E,i=(i=c)+(c=f^y)|0,y=UI(I=I+Q|0,E=I>>>0>>0?i+1|0:i,32),r=f+r|0,y=UI(_=e^(i=_+y|0),e=(r=i>>>0>>0?r+1|0:r)^h,21),h=f,I=a+(Q=c=UI(Q,c,17)^I)|0,a=(E^=f)+t|0,t=Q=I>>>0>>0?a+1|0:a,s=y,a=_+(y=UI(I,Q,32))|0,_=f+e|0,y=UI(Q=s^a,e=(_=a>>>0>>0?_+1|0:_)^h,16),h=f,s=i,E=UI(c,E,13)^I,c=(t^=f)+r|0,r=i=(I=s+(i=E)|0)>>>0>>0?c+1|0:c,i=UI(I,i,32),c=e+f|0,e=(s=Q)>>>0>(Q=Q+(255^i)|0)>>>0?c+1|0:c,y=UI(c=Q^y,i=h^e,21),h=f,E=UI(E,t,17)^I,g=(t=r^f)+(g^_)|0,_=g=(I=E+(B^=a)|0)>>>0>>0?g+1|0:g,g=UI(I,g,32),B=i+f|0,c=UI(a=(g=g+c|0)^y,B=(i=g>>>0>>0?B+1|0:B)^h,16),r=f,E=UI(E,t,13)^I,t=e+(_^=f)|0,t=Q=(I=Q+E|0)>>>0>>0?t+1|0:t,Q=UI(I,Q,32),y=r,s=1+(B=B+f|0)|0,r=B,r=(B=Q+a|0)>>>0>>0?s:r,c=UI(a=B^c,Q=y^r,21),e=f,E=UI(E,_,17),s=1+(i=i+(_=t^f)|0)|0,t=i,E=I=(y=g)>>>0>(g=g+(i=I^E)|0)>>>0?s:t,I=UI(g,I,32),Q=Q+f|0,t=(I=I+a|0)>>>0>>0?Q+1|0:Q,c=UI(a=I^c,Q=t^e,16),e=f,i=UI(i,_,13),_=r+(E^=f)|0,_=g=(r=B)>>>0>(B=B+(i^=g)|0)>>>0?_+1|0:_,g=UI(B,g,32),Q=Q+f|0,r=(g=g+a|0)>>>0>>0?Q+1|0:Q,c=UI(a=g^c,Q=r^e,21),e=f,i=UI(i,E,17),y=1+(_=t+(E=_^f)|0)|0,t=_,I=UI(B=I+(_=B^i)|0,i=B>>>0>>0?y:t,32),Q=Q+f|0,t=(I=I+a|0)>>>0>>0?Q+1|0:Q,c=UI(a=I^c,Q=t^e,16),e=f,E=UI(_,E,13),_=r+(i^=f)|0,_=g=(B=g+(E^=B)|0)>>>0>>0?_+1|0:_,g=UI(B,g,32),Q=Q+f|0,a=UI((g=g+a|0)^c,(Q=g>>>0>>0?Q+1|0:Q)^e,21),c=f,B=UI(E,i,17)^B,E=UI(B,i=_^f,13),i=i+t|0,I=f^(I>>>0>(B=I+B|0)>>>0?i+1:i),a=UI(B^=E,I,17)^a,i=f^c,_=1+(I=I+Q|0)|0,Q=I,I=UI(I=g+B|0,g=g>>>0>I>>>0?_:Q,32)^a^I,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,I=g^f^i,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,0}function $(A,I){var g,C,B,Q,E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,L=0;s=g=s-624|0,R(a=g+480|0,I),b(a,1632,a),c=i[g+516>>2],i[g+276>>2]=c,t=i[g+512>>2],i[g+272>>2]=t,r=i[g+508>>2],i[g+268>>2]=r,e=i[g+504>>2],i[g+264>>2]=e,y=i[g+500>>2],i[g+260>>2]=y,h=i[g+496>>2],i[g+256>>2]=h,D=i[g+492>>2],i[g+252>>2]=D,f=i[g+488>>2],i[g+248>>2]=f,p=i[g+484>>2],i[g+244>>2]=p,n=i[g+480>>2],i[g+240>>2]=n+1,b(_=g+240|0,_,33968),i[g+468>>2]=c-12055116,i[g+464>>2]=t-18696448,i[g+460>>2]=r-3247719,i[g+456>>2]=e-6275908,i[g+452>>2]=y-8787816,i[g+448>>2]=h+114729,i[g+444>>2]=D+6949391,i[g+440>>2]=f-15372611,i[g+436>>2]=p+13857413,i[g+432>>2]=n-10913610,b(w=g+192|0,a,1584),i[g+228>>2]=0-i[g+228>>2],i[g+224>>2]=0-i[g+224>>2],i[g+220>>2]=0-i[g+220>>2],i[g+216>>2]=0-i[g+216>>2],i[g+212>>2]=0-i[g+212>>2],i[g+208>>2]=0-i[g+208>>2],i[g+204>>2]=0-i[g+204>>2],i[g+200>>2]=0-i[g+200>>2],i[g+196>>2]=0-i[g+196>>2],i[g+192>>2]=~i[g+192>>2],b(w,w,g+432|0),a=GA(C=g+384|0,_,w),b(_=g+336|0,C,I),QI(B=g+576|0,_),E=o[g+576|0],Y=i[g+420>>2],_=i[g+372>>2],J=i[g+416>>2],k=i[g+368>>2],d=i[g+412>>2],F=i[g+364>>2],m=i[g+408>>2],S=i[g+360>>2],l=i[g+404>>2],N=i[g+356>>2],u=i[g+400>>2],G=i[g+352>>2],x=i[g+396>>2],M=i[g+348>>2],v=i[g+392>>2],K=i[g+344>>2],L=i[g+388>>2],U=i[g+340>>2],Q=i[g+384>>2],H=i[g+336>>2],I=a-1|0,i[g+612>>2]=I&c,i[g+608>>2]=I&t,i[g+604>>2]=I&r,i[g+600>>2]=I&e,i[g+596>>2]=I&y,i[g+592>>2]=I&h,i[g+588>>2]=I&D,i[g+584>>2]=I&f,i[g+580>>2]=I&p,i[g+576>>2]=n|0-a,H=I&(0-(H^(a=0-(1&E)|0)&(H^0-H))^Q)^Q,i[g+384>>2]=H,U=L^I&(L^0-(U^a&(U^0-U))),i[g+388>>2]=U,K=v^I&(v^0-(K^a&(K^0-K))),i[g+392>>2]=K,M=x^I&(x^0-(M^a&(M^0-M))),i[g+396>>2]=M,G=u^I&(u^0-(G^a&(G^0-G))),i[g+400>>2]=G,N=l^I&(l^0-(N^a&(N^0-N))),i[g+404>>2]=N,S=m^I&(m^0-(S^a&(S^0-S))),i[g+408>>2]=S,F=d^I&(d^0-(F^a&(F^0-F))),i[g+412>>2]=F,k=J^I&(J^0-(k^a&(k^0-k))),i[g+416>>2]=k,a=Y^I&(Y^0-(_^a&(_^0-_))),i[g+420>>2]=a,i[g+564>>2]=c,i[g+560>>2]=t,i[g+556>>2]=r,i[g+552>>2]=e,i[g+548>>2]=y,i[g+544>>2]=h,i[g+540>>2]=D,i[g+536>>2]=f,i[g+532>>2]=p,i[g+528>>2]=n-1,b(I=g+528|0,I,B),b(I,I,34016),c=i[g+192>>2],t=i[g+528>>2],r=i[g+196>>2],e=i[g+532>>2],y=i[g+200>>2],h=i[g+536>>2],D=i[g+204>>2],f=i[g+540>>2],p=i[g+208>>2],n=i[g+544>>2],_=i[g+212>>2],Y=i[g+548>>2],J=i[g+216>>2],d=i[g+552>>2],m=i[g+220>>2],l=i[g+556>>2],u=i[g+224>>2],x=i[g+560>>2],v=i[g+228>>2],L=i[g+564>>2],i[g+180>>2]=a<<1,i[g+176>>2]=k<<1,i[g+172>>2]=F<<1,i[g+168>>2]=S<<1,i[g+164>>2]=N<<1,i[g+160>>2]=G<<1,i[g+156>>2]=M<<1,i[g+152>>2]=K<<1,i[g+148>>2]=U<<1,i[g+144>>2]=H<<1,i[g+564>>2]=L-v,i[g+560>>2]=x-u,i[g+556>>2]=l-m,i[g+552>>2]=d-J,i[g+548>>2]=Y-_,i[g+544>>2]=n-p,i[g+540>>2]=f-D,i[g+536>>2]=h-y,i[g+532>>2]=e-r,i[g+528>>2]=t-c,b(a=g+144|0,a,w),b(w=g+96|0,I,34064),R(g+288|0,C),I=i[g+324>>2],i[g+84>>2]=0-I,c=i[g+320>>2],i[g+80>>2]=0-c,t=i[g+316>>2],i[g+76>>2]=0-t,r=i[g+312>>2],i[g+72>>2]=0-r,e=i[g+308>>2],i[g+68>>2]=0-e,y=i[g+304>>2],i[g+64>>2]=0-y,h=i[g+300>>2],i[g+60>>2]=0-h,D=i[g+296>>2],i[g+56>>2]=0-D,f=i[g+292>>2],i[g+52>>2]=0-f,p=i[g+288>>2],i[g+48>>2]=1-p,i[g+36>>2]=I,i[g+32>>2]=c,i[g+28>>2]=t,i[g+24>>2]=r,i[g+20>>2]=e,i[g+16>>2]=y,i[g+12>>2]=h,i[g+8>>2]=D,i[g+4>>2]=f,i[g>>2]=p+1,b(A,a,g),b(A+40|0,I=g+48|0,w),b(A+80|0,w,g),b(A+120|0,a,I),s=g+624|0}function AA(A,I,g){var B,E=0,a=0,_=0,c=0,t=0;s=B=s+-64|0;A:{if((g-65&255)>>>0>191){if(a=-1,!(o[A+80|0]|o[A+81|0]<<8|o[A+82|0]<<16|o[A+83|0]<<24|o[A+84|0]|o[A+85|0]<<8|o[A+86|0]<<16|o[A+87|0]<<24)){if((_=o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)>>>0>=129){if(c=E=o[A+68|0]|o[A+69|0]<<8|o[A+70|0]<<16|o[A+71|0]<<24,E=(_=128+(a=o[A+64|0]|o[A+65|0]<<8|o[A+66|0]<<16|o[A+67|0]<<24)|0)>>>0<128?E+1|0:E,C[A+64|0]=_,C[A+65|0]=_>>>8,C[A+66|0]=_>>>16,C[A+67|0]=_>>>24,C[A+68|0]=E,C[A+69|0]=E>>>8,C[A+70|0]=E>>>16,C[A+71|0]=E>>>24,E=o[A+76|0]|o[A+77|0]<<8|o[A+78|0]<<16|o[A+79|0]<<24,E=(t=a=-1==(0|c)&a>>>0>4294967167)>>>0>(a=a+(o[A+72|0]|o[A+73|0]<<8|o[A+74|0]<<16|o[A+75|0]<<24)|0)>>>0?E+1|0:E,C[A+72|0]=a,C[A+73|0]=a>>>8,C[A+74|0]=a>>>16,C[A+75|0]=a>>>24,C[A+76|0]=E,C[A+77|0]=E>>>8,C[A+78|0]=E>>>16,C[A+79|0]=E>>>24,p(A,E=A+96|0),a=(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)-128|0,C[A+352|0]=a,C[A+353|0]=a>>>8,C[A+354|0]=a>>>16,C[A+355|0]=a>>>24,a>>>0>=129)break A;Ng(E,A+224|0,a),_=o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24}a=t=o[A+68|0]|o[A+69|0]<<8|o[A+70|0]<<16|o[A+71|0]<<24,a=(c=_+(E=o[A+64|0]|o[A+65|0]<<8|o[A+66|0]<<16|o[A+67|0]<<24)|0)>>>0<_>>>0?a+1|0:a,C[A+64|0]=c,C[A+65|0]=c>>>8,C[A+66|0]=c>>>16,C[A+67|0]=c>>>24,C[A+68|0]=a,C[A+69|0]=a>>>8,C[A+70|0]=a>>>16,C[A+71|0]=a>>>24,a=(0|a)==(0|t)&E>>>0>c>>>0|a>>>0>>0,E=o[A+76|0]|o[A+77|0]<<8|o[A+78|0]<<16|o[A+79|0]<<24,E=(t=a)>>>0>(a=a+(o[A+72|0]|o[A+73|0]<<8|o[A+74|0]<<16|o[A+75|0]<<24)|0)>>>0?E+1|0:E,C[A+72|0]=a,C[A+73|0]=a>>>8,C[A+74|0]=a>>>16,C[A+75|0]=a>>>24,C[A+76|0]=E,C[A+77|0]=E>>>8,C[A+78|0]=E>>>16,C[A+79|0]=E>>>24,o[A+356|0]&&(C[A+88|0]=255,C[A+89|0]=255,C[A+90|0]=255,C[A+91|0]=255,C[A+92|0]=255,C[A+93|0]=255,C[A+94|0]=255,C[A+95|0]=255),C[A+80|0]=255,C[A+81|0]=255,C[A+82|0]=255,C[A+83|0]=255,C[A+84|0]=255,C[A+85|0]=255,C[A+86|0]=255,C[A+87|0]=255,bg((a=A+96|0)+_|0,0,256-_|0),p(A,a),E=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,i[B>>2]=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i[B+4>>2]=E,E=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,i[B+8>>2]=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,i[B+12>>2]=E,E=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,i[B+16>>2]=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,i[B+20>>2]=E,E=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,i[B+24>>2]=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,i[B+28>>2]=E,E=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,i[B+32>>2]=o[A+32|0]|o[A+33|0]<<8|o[A+34|0]<<16|o[A+35|0]<<24,i[B+36>>2]=E,E=o[A+44|0]|o[A+45|0]<<8|o[A+46|0]<<16|o[A+47|0]<<24,i[B+40>>2]=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24,i[B+44>>2]=E,E=o[A+52|0]|o[A+53|0]<<8|o[A+54|0]<<16|o[A+55|0]<<24,i[B+48>>2]=o[A+48|0]|o[A+49|0]<<8|o[A+50|0]<<16|o[A+51|0]<<24,i[B+52>>2]=E,E=o[A+60|0]|o[A+61|0]<<8|o[A+62|0]<<16|o[A+63|0]<<24,i[B+56>>2]=o[A+56|0]|o[A+57|0]<<8|o[A+58|0]<<16|o[A+59|0]<<24,i[B+60>>2]=E,Ng(I,B,g),XC(A,64),XC(a,256),a=0}return s=B- -64|0,a}rC(),Q()}r(1386,1234,306,1142),Q()}function IA(A,I,g){A|=0,I|=0,g|=0;var B,Q,E,a=0,_=0;s=B=s-192|0,i[B+144>>2]=0,i[B+148>>2]=0,i[B+152>>2]=0,i[B+156>>2]=0,i[B+104>>2]=0,i[B+108>>2]=0,i[B+112>>2]=0,i[B+116>>2]=0,i[B+120>>2]=0,i[B+124>>2]=0,a=i[8799],i[B+168>>2]=i[8798],i[B+172>>2]=a,a=i[8801],i[B+176>>2]=i[8800],i[B+180>>2]=a,a=i[8803],i[B+184>>2]=i[8802],i[B+188>>2]=a,i[B+128>>2]=0,i[B+132>>2]=0,i[B+136>>2]=0,i[B+140>>2]=0,i[B+96>>2]=0,i[B+100>>2]=0,a=i[8797],i[B+160>>2]=i[8796],i[B+164>>2]=a,a=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,i[B+80>>2]=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,i[B+84>>2]=a,a=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,i[B+88>>2]=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,i[B+92>>2]=a,a=o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24,i[B+64>>2]=o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24,i[B+68>>2]=a,a=o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24,i[B+72>>2]=o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24,i[B+76>>2]=a,Eg(g=B+128|0,a=B- -64|0),S(g),_=i[B+156>>2],i[B+24>>2]=i[B+152>>2],i[B+28>>2]=_,_=i[B+148>>2],i[B+16>>2]=i[B+144>>2],i[B+20>>2]=_,_=i[B+140>>2],i[B+8>>2]=i[B+136>>2],i[B+12>>2]=_,_=i[B+132>>2],i[B>>2]=i[B+128>>2],i[B+4>>2]=_,i[B+120>>2]=0,i[B+124>>2]=0,i[B+112>>2]=0,i[B+116>>2]=0,i[B+104>>2]=0,i[B+108>>2]=0,i[B+96>>2]=0,i[B+100>>2]=0,_=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[B+80>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[B+84>>2]=_,_=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[B+88>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[B+92>>2]=_,_=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,Q=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,E=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[B+56>>2]=0,i[B+60>>2]=0,i[B+48>>2]=0,i[B+52>>2]=0,i[B+40>>2]=0,i[B+44>>2]=0,i[B+64>>2]=E,i[B+68>>2]=I,i[B+72>>2]=_,i[B+76>>2]=Q,i[B+32>>2]=0,i[B+36>>2]=0,og(a,B),I=i[B+124>>2],i[B+184>>2]=i[B+120>>2],i[B+188>>2]=I,I=i[B+116>>2],i[B+176>>2]=i[B+112>>2],i[B+180>>2]=I,I=i[B+108>>2],i[B+168>>2]=i[B+104>>2],i[B+172>>2]=I,I=i[B+100>>2],i[B+160>>2]=i[B+96>>2],i[B+164>>2]=I,I=i[B+92>>2],i[B+152>>2]=i[B+88>>2],i[B+156>>2]=I,I=i[B+84>>2],i[B+144>>2]=i[B+80>>2],i[B+148>>2]=I,I=i[B+76>>2],i[B+136>>2]=i[B+72>>2],i[B+140>>2]=I,I=i[B+68>>2],i[B+128>>2]=i[B+64>>2],i[B+132>>2]=I,S(g),I=i[B+156>>2],a=i[B+152>>2],C[A+24|0]=a,C[A+25|0]=a>>>8,C[A+26|0]=a>>>16,C[A+27|0]=a>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[B+148>>2],a=i[B+144>>2],C[A+16|0]=a,C[A+17|0]=a>>>8,C[A+18|0]=a>>>16,C[A+19|0]=a>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[B+140>>2],a=i[B+136>>2],C[A+8|0]=a,C[A+9|0]=a>>>8,C[A+10|0]=a>>>16,C[A+11|0]=a>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[B+132>>2],a=i[B+128>>2],C[0|A]=a,C[A+1|0]=a>>>8,C[A+2|0]=a>>>16,C[A+3|0]=a>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,XC(g,64),s=B+192|0}function gA(A){var I,g,B,Q,o,E,_,c,t,r,e=0,y=0,h=0,D=0,f=0;for(s=I=s-2048|0,$A(D=I+640|0,A),e=i[A+36>>2],i[I+352>>2]=i[A+32>>2],i[I+356>>2]=e,e=i[A+28>>2],i[I+344>>2]=i[A+24>>2],i[I+348>>2]=e,e=i[A+20>>2],i[I+336>>2]=i[A+16>>2],i[I+340>>2]=e,e=i[A+12>>2],i[I+328>>2]=i[A+8>>2],i[I+332>>2]=e,e=i[A+4>>2],i[I+320>>2]=i[A>>2],i[I+324>>2]=e,e=i[A+52>>2],i[I+368>>2]=i[A+48>>2],i[I+372>>2]=e,e=i[A+60>>2],i[I+376>>2]=i[A+56>>2],i[I+380>>2]=e,e=i[4+(h=A- -64|0)>>2],i[I+384>>2]=i[h>>2],i[I+388>>2]=e,e=i[A+76>>2],i[I+392>>2]=i[A+72>>2],i[I+396>>2]=e,e=i[A+44>>2],i[I+360>>2]=i[A+40>>2],i[I+364>>2]=e,e=i[A+92>>2],i[I+408>>2]=i[A+88>>2],i[I+412>>2]=e,e=i[A+100>>2],i[I+416>>2]=i[A+96>>2],i[I+420>>2]=e,e=i[A+108>>2],i[I+424>>2]=i[A+104>>2],i[I+428>>2]=e,e=i[A+116>>2],i[I+432>>2]=i[A+112>>2],i[I+436>>2]=e,e=i[A+84>>2],i[I+400>>2]=i[A+80>>2],i[I+404>>2]=e,KA(y=I+480|0,h=I+320|0),b(e=I+160|0,y,g=I+600|0),b(I+200|0,B=I+520|0,Q=I+560|0),b(I+240|0,Q,g),b(I+280|0,y,B),sA(y,e,D),b(h,y,g),b(_=I+360|0,B,Q),b(c=I+400|0,Q,g),b(t=I+440|0,y,B),$A(A=I+800|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(A=I+960|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(A=I+1120|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(A=I+1280|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(A=I+1440|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(A=I+1600|0,h),sA(y,e,A),b(h,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),$A(I+1760|0,h),i[I+32>>2]=0,i[I+36>>2]=0,i[I+24>>2]=0,i[I+28>>2]=0,i[I+16>>2]=0,i[I+20>>2]=0,i[I+8>>2]=0,i[I+12>>2]=0,i[I+52>>2]=0,i[I+56>>2]=0,i[I+60>>2]=0,i[I+64>>2]=0,i[I+68>>2]=0,i[I+72>>2]=0,i[I+76>>2]=0,i[I+80>>2]=1,i[I>>2]=0,i[I+4>>2]=0,i[I+44>>2]=0,i[I+48>>2]=0,i[I+40>>2]=1,bg(I+84|0,0,76),r=I+120|0,o=I+2008|0,E=I+1968|0,D=I+80|0,h=I+40|0,A=252;e=i[I+36>>2],i[(y=I+1960|0)>>2]=i[I+32>>2],i[y+4>>2]=e,e=i[I+28>>2],i[(y=I+1952|0)>>2]=i[I+24>>2],i[y+4>>2]=e,e=i[I+20>>2],i[(y=I+1944|0)>>2]=i[I+16>>2],i[y+4>>2]=e,e=i[I+12>>2],i[(y=I+1936|0)>>2]=i[I+8>>2],i[y+4>>2]=e,e=i[I+4>>2],i[I+1928>>2]=i[I>>2],i[I+1932>>2]=e,e=i[h+36>>2],i[E+32>>2]=i[h+32>>2],i[E+36>>2]=e,e=i[h+28>>2],i[E+24>>2]=i[h+24>>2],i[E+28>>2]=e,e=i[h+20>>2],i[E+16>>2]=i[h+16>>2],i[E+20>>2]=e,e=i[h+12>>2],i[E+8>>2]=i[h+8>>2],i[E+12>>2]=e,e=i[h+4>>2],i[E>>2]=i[h>>2],i[E+4>>2]=e,e=i[D+36>>2],i[o+32>>2]=i[D+32>>2],i[o+36>>2]=e,e=i[D+28>>2],i[o+24>>2]=i[D+24>>2],i[o+28>>2]=e,e=i[D+20>>2],i[o+16>>2]=i[D+16>>2],i[o+20>>2]=e,e=i[D+12>>2],i[o+8>>2]=i[D+8>>2],i[o+12>>2]=e,e=i[D+4>>2],i[o>>2]=i[D>>2],i[o+4>>2]=e,e=A,f=C[A+33712|0],KA(y=I+480|0,I+1928|0),(0|f)>0?(b(A=I+320|0,y,g),b(_,B,Q),b(c,Q,g),b(t,y,B),sA(y,A,(I+640|0)+a((254&f)>>>1|0,160)|0)):(0|f)>=0||(b(A=I+320|0,y=I+480|0,g),b(_,B,Q),b(c,Q,g),b(t,y,B),hA(y,A,(I+640|0)+a((0-f&254)>>>1|0,160)|0)),b(I,A=I+480|0,g),b(h,B,Q),b(D,Q,g),b(r,A,B),A=e-1|0,e;);return QI(A=I+640|0,I),A=GI(A,32),s=I+2048|0,A}function CA(A,I,g,B,Q){var i,E,a,_,c,t,r,e,y,s,h,D,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0;if(B?(d=o[B+12|0]|o[B+13|0]<<8|o[B+14|0]<<16|o[B+15|0]<<24,l=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,m=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,u=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24):(d=1797285236,m=1634760805,l=2036477234,u=857760878),B=i=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,N=E=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,U=a=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,w=d,S=_=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,G=l,b=c=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,M=t=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,n=r=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,I=e=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,K=u,f=y=o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24,p=s=o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24,k=h=o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24,g=D=o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24,F=m,(0|Q)>0)for(;H=Lg(g+K|0,7)^b,x=Lg(H+K|0,9)^N,Y=Lg(B+F|0,7)^f,v=Lg(Y+F|0,9)^M,R=Lg(Y+v|0,13)^B,J=Lg(w+S|0,7)^p,n=Lg(J+w|0,9)^n,p=Lg(n+J|0,13)^S,w=Lg(n+p|0,18)^w,f=Lg(I+G|0,7)^U,B=R^Lg(w+f|0,7),N=Lg(B+w|0,9)^x,U=Lg(B+N|0,13)^f,w=Lg(N+U|0,18)^w,k=Lg(f+G|0,9)^k,f=Lg(k+f|0,13)^I,I=Lg(f+k|0,18)^G,S=Lg(I+H|0,7)^p,M=Lg(S+I|0,9)^v,b=Lg(S+M|0,13)^H,G=Lg(M+b|0,18)^I,g=Lg(H+x|0,13)^g,p=Lg(g+x|0,18)^K,I=Lg(p+Y|0,7)^f,n=Lg(I+p|0,9)^n,f=Lg(I+n|0,13)^Y,K=Lg(n+f|0,18)^p,F=Lg(v+R|0,18)^F,g=Lg(F+J|0,7)^g,k=Lg(g+F|0,9)^k,p=Lg(g+k|0,13)^J,F=Lg(k+p|0,18)^F,(0|(L=L+2|0))<(0|Q););Q=w+d|0,C[A+60|0]=Q,C[A+61|0]=Q>>>8,C[A+62|0]=Q>>>16,C[A+63|0]=Q>>>24,Q=U+a|0,C[A+56|0]=Q,C[A+57|0]=Q>>>8,C[A+58|0]=Q>>>16,C[A+59|0]=Q>>>24,Q=N+E|0,C[A+52|0]=Q,C[A+53|0]=Q>>>8,C[A+54|0]=Q>>>16,C[A+55|0]=Q>>>24,B=B+i|0,C[A+48|0]=B,C[A+49|0]=B>>>8,C[A+50|0]=B>>>16,C[A+51|0]=B>>>24,B=S+_|0,C[A+44|0]=B,C[A+45|0]=B>>>8,C[A+46|0]=B>>>16,C[A+47|0]=B>>>24,B=G+l|0,C[A+40|0]=B,C[A+41|0]=B>>>8,C[A+42|0]=B>>>16,C[A+43|0]=B>>>24,B=b+c|0,C[A+36|0]=B,C[A+37|0]=B>>>8,C[A+38|0]=B>>>16,C[A+39|0]=B>>>24,B=M+t|0,C[A+32|0]=B,C[A+33|0]=B>>>8,C[A+34|0]=B>>>16,C[A+35|0]=B>>>24,B=n+r|0,C[A+28|0]=B,C[A+29|0]=B>>>8,C[A+30|0]=B>>>16,C[A+31|0]=B>>>24,I=I+e|0,C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,I=K+u|0,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=f+y|0,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,I=p+s|0,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=k+h|0,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=g+D|0,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=F+m|0,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24}function BA(A){var I=0,g=0,C=0,B=0,Q=0,o=0,a=0,c=0,t=0;A:if(A|=0){Q=(C=A-8|0)+(A=-8&(I=i[A-4>>2]))|0;I:if(!(1&I)){if(!(2&I))break A;if((C=C-(I=i[C>>2])|0)>>>0>2],I>>>0<=255){if((0|(B=i[C+8>>2]))!=(0|g))break B;c=37620,t=i[9405]&Lg(-2,I>>>3|0),i[c>>2]=t;break I}if(a=i[C+24>>2],(0|g)!=(0|C)){I=i[C+8>>2],i[I+12>>2]=g,i[g+8>>2]=I;break g}if(B=i[C+20>>2])I=C+20|0;else{if(!(B=i[C+16>>2]))break C;I=C+16|0}for(;o=I,I=(g=B)+20|0,(B=i[g+20>>2])||(I=g+16|0,B=i[g+16>>2]););i[o>>2]=0;break g}if(3&~(I=i[Q+4>>2]))break I;return i[9407]=A,i[Q+4>>2]=-2&I,i[C+4>>2]=1|A,void(i[Q>>2]=A)}i[B+12>>2]=g,i[g+8>>2]=B;break I}g=0}if(a){I=i[C+28>>2];g:{if(i[(B=37924+(I<<2)|0)>>2]==(0|C)){if(i[B>>2]=g,g)break g;c=37624,t=i[9406]&Lg(-2,I),i[c>>2]=t;break I}if(i[a+(i[a+16>>2]==(0|C)?16:20)>>2]=g,!g)break I}i[g+24>>2]=a,(I=i[C+16>>2])&&(i[g+16>>2]=I,i[I+24>>2]=g),(I=i[C+20>>2])&&(i[g+20>>2]=I,i[I+24>>2]=g)}}if(!(C>>>0>=Q>>>0)&&1&(I=i[Q+4>>2])){I:{g:{C:{B:{if(!(2&I)){if((0|Q)==i[9411]){if(i[9411]=C,A=i[9408]+A|0,i[9408]=A,i[C+4>>2]=1|A,i[9410]!=(0|C))break A;return i[9407]=0,void(i[9410]=0)}if((0|Q)==i[9410])return i[9410]=C,A=i[9407]+A|0,i[9407]=A,i[C+4>>2]=1|A,void(i[A+C>>2]=A);if(A=(-8&I)+A|0,g=i[Q+12>>2],I>>>0<=255){if((0|(B=i[Q+8>>2]))==(0|g)){c=37620,t=i[9405]&Lg(-2,I>>>3|0),i[c>>2]=t;break g}i[B+12>>2]=g,i[g+8>>2]=B;break g}if(a=i[Q+24>>2],(0|g)!=(0|Q)){I=i[Q+8>>2],i[I+12>>2]=g,i[g+8>>2]=I;break C}if(B=i[Q+20>>2])I=Q+20|0;else{if(!(B=i[Q+16>>2]))break B;I=Q+16|0}for(;o=I,I=(g=B)+20|0,(B=i[g+20>>2])||(I=g+16|0,B=i[g+16>>2]););i[o>>2]=0;break C}i[Q+4>>2]=-2&I,i[C+4>>2]=1|A,i[A+C>>2]=A;break I}g=0}if(a){I=i[Q+28>>2];C:{if((0|Q)==i[(B=37924+(I<<2)|0)>>2]){if(i[B>>2]=g,g)break C;c=37624,t=i[9406]&Lg(-2,I),i[c>>2]=t;break g}if(i[a+((0|Q)==i[a+16>>2]?16:20)>>2]=g,!g)break g}i[g+24>>2]=a,(I=i[Q+16>>2])&&(i[g+16>>2]=I,i[I+24>>2]=g),(I=i[Q+20>>2])&&(i[g+20>>2]=I,i[I+24>>2]=g)}}if(i[C+4>>2]=1|A,i[A+C>>2]=A,i[9410]==(0|C))return void(i[9407]=A)}if(A>>>0<=255)return I=37660+(-8&A)|0,(B=i[9405])&(A=1<<(A>>>3))?A=i[I+8>>2]:(i[9405]=A|B,A=I),i[I+8>>2]=C,i[A+12>>2]=C,i[C+12>>2]=I,void(i[C+8>>2]=A);g=31,A>>>0<=16777215&&(g=62+((A>>>38-(I=_(A>>>8|0))&1)-(I<<1)|0)|0),i[C+28>>2]=g,i[C+16>>2]=0,i[C+20>>2]=0,o=37924+(g<<2)|0;I:{g:{if((I=i[9406])&(B=1<>>1|0):0),I=i[o>>2];;){if(B=I,(-8&i[I+4>>2])==(0|A))break g;if(I=g>>>29|0,g<<=1,!(I=i[(o=16+((4&I)+B|0)|0)>>2]))break}g=24,I=B}else i[9406]=I|B,g=24,I=o;B=C,Q=C,A=8;break I}I=i[B+8>>2],i[I+12>>2]=C,g=8,o=B+8|0,Q=0,A=24}i[o>>2]=C,i[g+C>>2]=I,i[C+12>>2]=B,i[A+C>>2]=Q,A=i[9413]-1|0,i[9413]=A||-1}}}function QA(A,I,g,C,B,E,a,_,c){var t=0,r=0,e=0,y=0,h=0,D=0,f=0,w=0;if(I-65>>>0<4294967232|a>>>0>64)A=-1;else{w=t=s,s=t=t-512&-64;A:{I:if(!(!(!(C|B)|g)|!A|((D=255&I)-65&255)>>>0<=191|!(!(I=255&a)||E)|I>>>0>=65)){if(I){if(!E)break I;_?(r=725511199^(o[_+8|0]|o[_+9|0]<<8|o[_+10|0]<<16|o[_+11|0]<<24),e=-1694144372^(o[_+12|0]|o[_+13|0]<<8|o[_+14|0]<<16|o[_+15|0]<<24),a=-1377402159^(o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24),_=1359893119^(o[_+4|0]|o[_+5|0]<<8|o[_+6|0]<<16|o[_+7|0]<<24)):(r=725511199,e=-1694144372,a=-1377402159,_=1359893119),c?(y=327033209^(o[c+8|0]|o[c+9|0]<<8|o[c+10|0]<<16|o[c+11|0]<<24),h=1541459225^(o[c+12|0]|o[c+13|0]<<8|o[c+14|0]<<16|o[c+15|0]<<24),f=-79577749^(o[0|c]|o[c+1|0]<<8|o[c+2|0]<<16|o[c+3|0]<<24),c=528734635^(o[c+4|0]|o[c+5|0]<<8|o[c+6|0]<<16|o[c+7|0]<<24)):(y=327033209,h=1541459225,f=-79577749,c=528734635),bg(t- -64|0,0,293),i[t+56>>2]=y,i[t+60>>2]=h,i[t+48>>2]=f,i[t+52>>2]=c,i[t+40>>2]=r,i[t+44>>2]=e,i[t+32>>2]=a,i[t+36>>2]=_,i[t+24>>2]=1595750129,i[t+28>>2]=-1521486534,i[t+16>>2]=-23791573,i[t+20>>2]=1013904242,i[t+8>>2]=-2067093701,i[t+12>>2]=-1150833019,i[t>>2]=-222443256^(I<<8|D),i[t+4>>2]=I>>>24^1779033703,bg((a=t+384|0)+I|0,0,128-I|0),Ng(a,E,I),Ng(t+96|0,a,128),i[t+352>>2]=128,XC(a,128),I=128}else _?(r=725511199^(o[_+8|0]|o[_+9|0]<<8|o[_+10|0]<<16|o[_+11|0]<<24),e=-1694144372^(o[_+12|0]|o[_+13|0]<<8|o[_+14|0]<<16|o[_+15|0]<<24),E=1359893119^(o[_+4|0]|o[_+5|0]<<8|o[_+6|0]<<16|o[_+7|0]<<24),I=-1377402159^(o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24)):(r=725511199,e=-1694144372,E=1359893119,I=-1377402159),c?(y=327033209^(o[c+8|0]|o[c+9|0]<<8|o[c+10|0]<<16|o[c+11|0]<<24),h=1541459225^(o[c+12|0]|o[c+13|0]<<8|o[c+14|0]<<16|o[c+15|0]<<24),_=528734635^(o[c+4|0]|o[c+5|0]<<8|o[c+6|0]<<16|o[c+7|0]<<24),a=-79577749^(o[0|c]|o[c+1|0]<<8|o[c+2|0]<<16|o[c+3|0]<<24)):(y=327033209,h=1541459225,_=528734635,a=-79577749),bg(t- -64|0,0,293),i[t+56>>2]=y,i[t+60>>2]=h,i[t+48>>2]=a,i[t+52>>2]=_,i[t+40>>2]=r,i[t+44>>2]=e,i[t+32>>2]=I,i[t+36>>2]=E,i[t+24>>2]=1595750129,i[t+28>>2]=-1521486534,i[t+16>>2]=-23791573,i[t+20>>2]=1013904242,i[t+8>>2]=-2067093701,i[t+12>>2]=-1150833019,i[t>>2]=-222443256^D,i[t+4>>2]=1779033703,I=0;g:if(C|B)for(c=t+224|0,_=t+96|0;;){if(a=I+_|0,!B&C>>>0<=(E=256-I|0)>>>0){Ng(a,g,C),i[t+352>>2]=C+i[t+352>>2];break g}if(Ng(a,g,E),i[t+352>>2]=E+i[t+352>>2],r=I=i[t+68>>2],I=(e=(a=i[t+64>>2])+128|0)>>>0<128?I+1|0:I,i[t+64>>2]=e,i[t+68>>2]=I,I=i[t+76>>2],I=(r=a=-1==(0|r)&a>>>0>4294967167)>>>0>(a=a+i[t+72>>2]|0)>>>0?I+1|0:I,i[t+72>>2]=a,i[t+76>>2]=I,p(t,_),Ng(_,c,128),I=i[t+352>>2]-128|0,i[t+352>>2]=I,g=g+E|0,!((B=B-(C>>>0>>0)|0)|(C=C-E|0)))break}AA(t,A,D),s=w;break A}rC(),Q()}A=0}return A}function iA(A,I,g,B,Q,E,_){var c,t,r=0,e=0,y=0;if(s=c=s+-64|0,t=K(32)){i[c+36>>2]=0,i[c+40>>2]=0,i[c+28>>2]=0,i[c+32>>2]=0,i[c+24>>2]=16,i[c+20>>2]=Q,i[c+16>>2]=B,i[c+12>>2]=g,i[c+8>>2]=32,i[c+4>>2]=t,i[c+60>>2]=0,i[c+56>>2]=1,i[c+52>>2]=1,i[c+48>>2]=I,i[c+44>>2]=A;A:if(A=q(c+4|0,_))XC(t,32);else{if(E){r=c+4|0,s=Q=s-32|0,A=-31;I:{g:{C:switch(_-1|0){case 1:A=o[1434]|o[1435]<<8|o[1436]<<16|o[1437]<<24,I=o[1430]|o[1431]<<8|o[1432]<<16|o[1433]<<24,C[0|E]=I,C[E+1|0]=I>>>8,C[E+2|0]=I>>>16,C[E+3|0]=I>>>24,C[E+4|0]=A,C[E+5|0]=A>>>8,C[E+6|0]=A>>>16,C[E+7|0]=A>>>24,A=o[1439]|o[1440]<<8|o[1441]<<16|o[1442]<<24,I=o[1435]|o[1436]<<8|o[1437]<<16|o[1438]<<24,C[E+5|0]=I,C[E+6|0]=I>>>8,C[E+7|0]=I>>>16,C[E+8|0]=I>>>24,C[E+9|0]=A,C[E+10|0]=A>>>8,C[E+11|0]=A>>>16,C[E+12|0]=A>>>24,g=-12,I=12;break g;case 0:break C;default:break I}A=o[1422]|o[1423]<<8|o[1424]<<16|o[1425]<<24,I=o[1418]|o[1419]<<8|o[1420]<<16|o[1421]<<24,C[0|E]=I,C[E+1|0]=I>>>8,C[E+2|0]=I>>>16,C[E+3|0]=I>>>24,C[E+4|0]=A,C[E+5|0]=A>>>8,C[E+6|0]=A>>>16,C[E+7|0]=A>>>24,A=o[1426]|o[1427]<<8|o[1428]<<16|o[1429]<<24,C[E+8|0]=A,C[E+9|0]=A>>>8,C[E+10|0]=A>>>16,C[E+11|0]=A>>>24,g=-11,I=11}if(!(A=nI(r)))if(C[Q+13|0]=0,C[Q+11|0]=49,C[Q+12|0]=57,(g=g+128|0)>>>0<=(A=RI(Q+11|0))>>>0)A=-31;else if(I=Ng(I+E|0,Q+11|0,A+1|0),(e=g-A|0)>>>0<4)A=-31;else{for(C[0|(_=A+I|0)]=36,C[_+1|0]=109,C[_+2|0]=61,C[_+3|0]=0,A=i[r+44>>2],I=10;g=I,B=(A>>>0)/10|0,C[0|(y=(I=I-1|0)+(Q+22|0)|0)]=A-a(B,10)|48,!(A>>>0<10)&&(A=B,I););if(Ng(A=Q+11|0,y,I=11-g|0),C[A+I|0]=0,(I=e-3|0)>>>0<=(A=RI(A))>>>0)A=-31;else if(g=Ng(_+3|0,Q+11|0,A+1|0),(e=I-A|0)>>>0<4)A=-31;else{for(C[0|(_=A+g|0)]=44,C[_+1|0]=116,C[_+2|0]=61,C[_+3|0]=0,A=i[r+40>>2],I=10;g=I,B=(A>>>0)/10|0,C[0|(y=(I=I-1|0)+(Q+22|0)|0)]=A-a(B,10)|48,!(A>>>0<10)&&(A=B,I););if(Ng(A=Q+11|0,y,I=11-g|0),C[A+I|0]=0,(I=e-3|0)>>>0<=(A=RI(A))>>>0)A=-31;else if(g=Ng(_+3|0,Q+11|0,A+1|0),(e=I-A|0)>>>0<4)A=-31;else{for(C[0|(_=A+g|0)]=44,C[_+1|0]=112,C[_+2|0]=61,C[_+3|0]=0,A=i[r+48>>2],I=10;g=I,B=(A>>>0)/10|0,C[0|(y=(I=I-1|0)+(Q+22|0)|0)]=A-a(B,10)|48,!(A>>>0<10)&&(A=B,I););Ng(A=Q+11|0,y,I=11-g|0),C[A+I|0]=0,(I=e-3|0)>>>0<=(A=RI(A))>>>0?A=-31:(g=Ng(_+3|0,Q+11|0,A+1|0),(B=I-A|0)>>>0<2?A=-31:(C[0|(A=A+g|0)]=36,C[A+1|0]=0,XA(I=A+1|0,g=B-1|0,i[r+16>>2],i[r+20>>2],3)?(A=-31,(B=(B=g)-(g=RI(I))|0)>>>0<2||(C[0|(A=I+g|0)]=36,C[A+1|0]=0,A=XA(A+1|0,B-1|0,i[r>>2],i[r+4>>2],3)?0:-31)):A=-31))}}}}if(s=Q+32|0,A){XC(t,32),XC(E,128),A=-31;break A}}XC(t,32),A=0}BA(t)}else A=-22;return s=c- -64|0,A}function oA(A,I){var g,C=0,B=0,Q=0,o=0,E=0,a=0,c=0;g=A+I|0;A:{I:if(!(1&(C=i[A+4>>2]))){if(!(2&C))break A;I=(C=i[A>>2])+I|0;g:{C:{B:{if((0|(A=A-C|0))!=i[9410]){if(B=i[A+12>>2],C>>>0<=255){if((0|(Q=i[A+8>>2]))!=(0|B))break B;a=37620,c=i[9405]&Lg(-2,C>>>3|0),i[a>>2]=c;break I}if(o=i[A+24>>2],(0|A)!=(0|B)){C=i[A+8>>2],i[C+12>>2]=B,i[B+8>>2]=C;break g}if(Q=i[A+20>>2])C=A+20|0;else{if(!(Q=i[A+16>>2]))break C;C=A+16|0}for(;E=C,C=(B=Q)+20|0,(Q=i[B+20>>2])||(C=B+16|0,Q=i[B+16>>2]););i[E>>2]=0;break g}if(3&~(C=i[g+4>>2]))break I;return i[9407]=I,i[g+4>>2]=-2&C,i[A+4>>2]=1|I,void(i[g>>2]=I)}i[Q+12>>2]=B,i[B+8>>2]=Q;break I}B=0}if(o){C=i[A+28>>2];g:{if(i[(Q=37924+(C<<2)|0)>>2]==(0|A)){if(i[Q>>2]=B,B)break g;a=37624,c=i[9406]&Lg(-2,C),i[a>>2]=c;break I}if(i[o+(i[o+16>>2]==(0|A)?16:20)>>2]=B,!B)break I}i[B+24>>2]=o,(C=i[A+16>>2])&&(i[B+16>>2]=C,i[C+24>>2]=B),(C=i[A+20>>2])&&(i[B+20>>2]=C,i[C+24>>2]=B)}}I:{g:{C:{B:{if(!(2&(C=i[g+4>>2]))){if(i[9411]==(0|g)){if(i[9411]=A,I=i[9408]+I|0,i[9408]=I,i[A+4>>2]=1|I,i[9410]!=(0|A))break A;return i[9407]=0,void(i[9410]=0)}if(i[9410]==(0|g))return i[9410]=A,I=i[9407]+I|0,i[9407]=I,i[A+4>>2]=1|I,void(i[A+I>>2]=I);if(I=(-8&C)+I|0,B=i[g+12>>2],C>>>0<=255){if((0|(Q=i[g+8>>2]))==(0|B)){a=37620,c=i[9405]&Lg(-2,C>>>3|0),i[a>>2]=c;break g}i[Q+12>>2]=B,i[B+8>>2]=Q;break g}if(o=i[g+24>>2],(0|B)!=(0|g)){C=i[g+8>>2],i[C+12>>2]=B,i[B+8>>2]=C;break C}if(Q=i[g+20>>2])C=g+20|0;else{if(!(Q=i[g+16>>2]))break B;C=g+16|0}for(;E=C,C=(B=Q)+20|0,(Q=i[B+20>>2])||(C=B+16|0,Q=i[B+16>>2]););i[E>>2]=0;break C}i[g+4>>2]=-2&C,i[A+4>>2]=1|I,i[A+I>>2]=I;break I}B=0}if(o){C=i[g+28>>2];C:{if(i[(Q=37924+(C<<2)|0)>>2]==(0|g)){if(i[Q>>2]=B,B)break C;a=37624,c=i[9406]&Lg(-2,C),i[a>>2]=c;break g}if(i[o+(i[o+16>>2]==(0|g)?16:20)>>2]=B,!B)break g}i[B+24>>2]=o,(C=i[g+16>>2])&&(i[B+16>>2]=C,i[C+24>>2]=B),(C=i[g+20>>2])&&(i[B+20>>2]=C,i[C+24>>2]=B)}}if(i[A+4>>2]=1|I,i[A+I>>2]=I,i[9410]==(0|A))return void(i[9407]=I)}if(I>>>0<=255)return C=37660+(-8&I)|0,(B=i[9405])&(I=1<<(I>>>3))?I=i[C+8>>2]:(i[9405]=I|B,I=C),i[C+8>>2]=A,i[I+12>>2]=A,i[A+12>>2]=C,void(i[A+8>>2]=I);B=31,I>>>0<=16777215&&(B=62+((I>>>38-(C=_(I>>>8|0))&1)-(C<<1)|0)|0),i[A+28>>2]=B,i[A+16>>2]=0,i[A+20>>2]=0,C=37924+(B<<2)|0;I:{if((Q=i[9406])&(E=1<>>1|0):0),C=i[C>>2];;){if(Q=C,(-8&i[C+4>>2])==(0|I))break I;if(C=B>>>29|0,B<<=1,!(C=i[16+(E=Q+(4&C)|0)>>2]))break}i[E+16>>2]=A,i[A+24>>2]=Q}else i[9406]=Q|E,i[C>>2]=A,i[A+24>>2]=C;return i[A+12>>2]=A,void(i[A+8>>2]=A)}I=i[Q+8>>2],i[I+12>>2]=A,i[Q+8>>2]=A,i[A+24>>2]=0,i[A+12>>2]=Q,i[A+8>>2]=I}}function EA(A,I){var g,B=0,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0;return s=g=s-512|0,B=-1,E=o[I+31|0],Q=o[0|I],1&(((255&(127&~E|~(o[I+1|0]&o[I+2|0]&o[I+3|0]&o[I+4|0]&o[I+5|0]&o[I+6|0]&o[I+7|0]&o[I+8|0]&o[I+9|0]&o[I+10|0]&o[I+11|0]&o[I+12|0]&o[I+13|0]&o[I+14|0]&o[I+15|0]&o[I+16|0]&o[I+17|0]&o[I+18|0]&o[I+19|0]&o[I+20|0]&o[I+21|0]&o[I+22|0]&o[I+23|0]&o[I+24|0]&o[I+25|0]&o[I+26|0]&o[I+27|0]&o[I+28|0]&o[I+29|0]&o[I+30|0])))-1&236-Q)>>>8|Q|E>>>7)||(fA(E=g+336|0,I),R(g+288|0,E),I=i[g+324>>2],i[g+276>>2]=0-I,B=i[g+320>>2],i[g+272>>2]=0-B,Q=i[g+316>>2],i[g+268>>2]=0-Q,a=i[g+312>>2],i[g+264>>2]=0-a,_=i[g+308>>2],i[g+260>>2]=0-_,c=i[g+304>>2],i[g+256>>2]=0-c,t=i[g+300>>2],i[g+252>>2]=0-t,r=i[g+296>>2],i[g+248>>2]=0-r,e=i[g+292>>2],i[g+244>>2]=0-e,y=i[g+288>>2],i[g+240>>2]=1-y,R(h=g+144|0,p=g+240|0),i[g+228>>2]=I,i[g+224>>2]=B,i[g+220>>2]=Q,i[g+216>>2]=a,i[g+212>>2]=_,i[g+208>>2]=c,i[g+204>>2]=t,i[g+200>>2]=r,i[g+196>>2]=e,i[g+192>>2]=y+1,R(B=g+96|0,a=g+192|0),b(I=g+48|0,1584,h),Q=i[g+96>>2],_=i[g+48>>2],c=i[g+100>>2],t=i[g+52>>2],r=i[g+104>>2],e=i[g+56>>2],y=i[g+108>>2],h=i[g+60>>2],D=i[g+112>>2],f=i[g+64>>2],w=i[g+116>>2],n=i[g+68>>2],k=i[g+120>>2],F=i[g+72>>2],S=i[g+124>>2],N=i[g+76>>2],G=i[g+128>>2],M=i[g+80>>2],i[g+84>>2]=0-(i[g+84>>2]+i[g+132>>2]|0),i[g+80>>2]=0-(G+M|0),i[g+76>>2]=0-(S+N|0),i[g+72>>2]=0-(k+F|0),i[g+68>>2]=0-(w+n|0),i[g+64>>2]=0-(D+f|0),i[g+60>>2]=0-(y+h|0),i[g+56>>2]=0-(r+e|0),i[g+52>>2]=0-(c+t|0),i[g+48>>2]=0-(Q+_|0),b(g,I,B),i[g+404>>2]=0,i[g+408>>2]=0,i[g+412>>2]=0,i[g+416>>2]=0,i[g+420>>2]=0,i[g+388>>2]=0,i[g+392>>2]=0,i[g+384>>2]=1,i[g+396>>2]=0,i[g+400>>2]=0,f=GA(Q=g+432|0,g+384|0,g),b(A,Q,a),b(B=A+40|0,Q,A),b(B,B,I),b(A,A,E),E=i[A+36>>2]<<1,i[A+36>>2]=E,Q=i[A+32>>2]<<1,i[A+32>>2]=Q,a=i[A+28>>2]<<1,i[A+28>>2]=a,_=i[A+24>>2]<<1,i[A+24>>2]=_,c=i[A+20>>2]<<1,i[A+20>>2]=c,t=i[A+16>>2]<<1,i[A+16>>2]=t,r=i[A+12>>2]<<1,i[A+12>>2]=r,e=i[A+8>>2]<<1,i[A+8>>2]=e,y=i[A+4>>2]<<1,i[A+4>>2]=y,h=i[A>>2]<<1,i[A>>2]=h,QI(D=g+480|0,A),I=0-(1&C[g+480|0])|0,i[A+36>>2]=E^I&(E^0-E),i[A+32>>2]=Q^I&(Q^0-Q),i[A+28>>2]=a^I&(a^0-a),i[A+24>>2]=_^I&(_^0-_),i[A+20>>2]=c^I&(c^0-c),i[A+16>>2]=t^I&(t^0-t),i[A+12>>2]=r^I&(r^0-r),i[A+8>>2]=e^I&(e^0-e),i[A+4>>2]=y^I&(y^0-y),i[A>>2]=h^I&(h^0-h),b(B,p,B),i[A+84>>2]=0,i[A+88>>2]=0,i[A+80>>2]=1,i[A+92>>2]=0,i[A+96>>2]=0,i[A+100>>2]=0,i[A+104>>2]=0,i[A+108>>2]=0,i[A+112>>2]=0,i[A+116>>2]=0,b(I=A+120|0,A,B),QI(D,I),A=o[g+480|0],QI(D,B),B=0-(GI(D,32)|1-f|1&A)|0),s=g+512|0,B}function aA(A,I,g,B){var Q,o=0,E=0;Q=o=s,s=o=o-576&-64,i[o+188>>2]=I;A:if(I>>>0<=64){if((0|eA(E=o+192|0,0,0,I))<0)break A;if((0|WA(E,o+188|0,4,0))<0)break A;if((0|WA(E,g,B,0))<0)break A;Hg(E,A,I)}else if(!((0|eA(E=o+192|0,0,0,64))<0||(0|WA(E,o+188|0,4,0))<0||(0|WA(E,g,B,0))<0||(0|Hg(E,o+112|0,64))<0)){if(g=i[o+116>>2],B=i[o+112>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=i[o+124>>2],B=i[o+120>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=i[o+140>>2],B=i[o+136>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=i[o+132>>2],B=i[o+128>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,A=A+32|0,(I=I-32|0)>>>0>=65)for(;;){if(g=i[o+172>>2],i[o+104>>2]=i[o+168>>2],i[o+108>>2]=g,g=i[o+164>>2],i[o+96>>2]=i[o+160>>2],i[o+100>>2]=g,g=i[o+156>>2],i[o+88>>2]=i[o+152>>2],i[o+92>>2]=g,g=i[o+148>>2],i[o+80>>2]=i[o+144>>2],i[o+84>>2]=g,g=i[o+140>>2],i[o+72>>2]=i[o+136>>2],i[o+76>>2]=g,B=i[o+132>>2],i[(g=o- -64|0)>>2]=i[o+128>>2],i[g+4>>2]=B,g=i[o+124>>2],i[o+56>>2]=i[o+120>>2],i[o+60>>2]=g,g=i[o+116>>2],i[o+48>>2]=i[o+112>>2],i[o+52>>2]=g,(0|lA(o+112|0,64,o+48|0,64,0,0,0))<0)break A;if(g=i[o+116>>2],B=i[o+112>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=i[o+124>>2],B=i[o+120>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=i[o+140>>2],B=i[o+136>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=i[o+132>>2],B=i[o+128>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,A=A+32|0,!((I=I-32|0)>>>0>64))break}g=i[o+172>>2],i[o+104>>2]=i[o+168>>2],i[o+108>>2]=g,g=i[o+164>>2],i[o+96>>2]=i[o+160>>2],i[o+100>>2]=g,g=i[o+156>>2],i[o+88>>2]=i[o+152>>2],i[o+92>>2]=g,g=i[o+148>>2],i[o+80>>2]=i[o+144>>2],i[o+84>>2]=g,g=i[o+140>>2],i[o+72>>2]=i[o+136>>2],i[o+76>>2]=g,B=i[o+132>>2],i[(g=o- -64|0)>>2]=i[o+128>>2],i[g+4>>2]=B,g=i[o+124>>2],i[o+56>>2]=i[o+120>>2],i[o+60>>2]=g,g=i[o+116>>2],i[o+48>>2]=i[o+112>>2],i[o+52>>2]=g,(0|lA(g=o+112|0,I,o+48|0,64,0,0,0))<0||Ng(A,g,I)}XC(o+192|0,384),s=Q}function _A(A,I,g,B,Q,_,c,t,r,e,y){var h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0;if(h=Ig(r,0,t,0),!(n=f)&h>>>0>=1073741824|n)return i[9404]=22,-1;if(1==(0|c)|c>>>0>1)return i[9404]=22,-1;if(h=c,!(!(_&(n=_-1|0)|c&(h=-1!=(0|n)?h+1|0:h))&(!c&_>>>0>=2|!!(0|c))))return i[9404]=28,-1;if(!r||!t)return i[9404]=28,-1;if(!(33554431/(r>>>0)>>>0>>0|t>>>0>16777215)&&!c&33554431/(t>>>0)>>>0>=_>>>0&&!((M=a(G=t<<7,r))>>>0>(h=(k=a(_,G))+M|0)>>>0||(D=h)>>>0>(h=((F=t<<8)+h|0)- -64|0)>>>0)){A:{if(h>>>0>E[A+8>>2]){if(w=-1,Rg(A))break A;if(s=n=s-16|0,D=tI(n+12|0,h),i[9404]=D,D=D?0:i[n+12>>2],i[A+4>>2]=D,i[A>>2]=D,i[A+8>>2]=D?h:0,s=n+16|0,!D)break A}for(DI(I,g,B,Q,U=i[A+4>>2],M),Y=((k=(D=(K=M+U|0)+k|0)+(t<<7)|0)+G|0)-64|0,Q=_-1|0,N=t<<5,b=D+F|0,J=(D+G|0)-64|0;;){for(F=a(G,H)+U|0,w=0;B=(A=w<<2)+F|0,i[A+D>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,h=(B=4|A)+D|0,B=B+F|0,i[h>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,h=(B=8|A)+D|0,B=B+F|0,i[h>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,B=(A|=12)+D|0,A=A+F|0,i[B>>2]=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,n=0,h=0,(0|N)!=(0|(w=w+4|0)););for(B=0,A=0;Ng(K+(a(B,N)<<2)|0,D,G),tA(D,k,b,t),Ng(K+(a(N,1|B)<<2)|0,k,G),tA(k,D,b,t),(0|c)==(0|(A=(B=B+2|0)>>>0<2?A+1|0:A))&B>>>0<_>>>0|A>>>0>>0;);for(;;){for(A=K+(a(N,Q&i[J>>2])<<2)|0,w=0;i[(p=(B=w<<2)+D|0)>>2]=i[p>>2]^i[A+B>>2],i[(S=(p=4|B)+D|0)>>2]=i[S>>2]^i[A+p>>2],i[(S=(p=8|B)+D|0)>>2]=i[S>>2]^i[A+p>>2],i[(p=(B|=12)+D|0)>>2]=i[p>>2]^i[A+B>>2],(0|N)!=(0|(w=w+4|0)););for(tA(D,k,b,t),A=K+(a(N,Q&i[Y>>2])<<2)|0,w=0;i[(p=(B=w<<2)+k|0)>>2]=i[p>>2]^i[A+B>>2],i[(S=(p=4|B)+k|0)>>2]=i[S>>2]^i[A+p>>2],i[(S=(p=8|B)+k|0)>>2]=i[S>>2]^i[A+p>>2],i[(p=(B|=12)+k|0)>>2]=i[p>>2]^i[A+B>>2],(0|N)!=(0|(w=w+4|0)););if(tA(k,D,b,t),w=0,!((0|c)==(0|(h=(n=n+2|0)>>>0<2?h+1|0:h))&_>>>0>n>>>0|c>>>0>h>>>0))break}for(;B=(A=w<<2)+F|0,h=i[A+D>>2],C[0|B]=h,C[B+1|0]=h>>>8,C[B+2|0]=h>>>16,C[B+3|0]=h>>>24,B=(h=4|A)+F|0,h=i[h+D>>2],C[0|B]=h,C[B+1|0]=h>>>8,C[B+2|0]=h>>>16,C[B+3|0]=h>>>24,B=(h=8|A)+F|0,h=i[h+D>>2],C[0|B]=h,C[B+1|0]=h>>>8,C[B+2|0]=h>>>16,C[B+3|0]=h>>>24,A=(B=12|A)+F|0,B=i[B+D>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,(0|N)!=(0|(w=w+4|0)););if((0|(H=H+1|0))==(0|r))break}DI(I,g,U,M,e,y),w=0}return w}return i[9404]=48,-1}function cA(A,I,g){A|=0,I|=0,g|=0;var B,Q,E,a=0;s=B=s-192|0,i[B+96>>2]=0,i[B+100>>2]=0,i[B+104>>2]=0,i[B+108>>2]=0,i[B+112>>2]=0,i[B+116>>2]=0,i[B+120>>2]=0,i[B+124>>2]=0,a=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[B+80>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[B+84>>2]=a,a=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[B+88>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[B+92>>2]=a,Q=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,E=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,a=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,I=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[B+40>>2]=0,i[B+44>>2]=0,i[B+48>>2]=0,i[B+52>>2]=0,i[B+56>>2]=0,i[B+60>>2]=0,i[B+64>>2]=a,i[B+68>>2]=I,i[B+72>>2]=Q,i[B+76>>2]=E,i[B+32>>2]=0,i[B+36>>2]=0,I=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,i[B+16>>2]=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,i[B+20>>2]=I,I=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,i[B+24>>2]=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,i[B+28>>2]=I,I=o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24,i[B>>2]=o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24,i[B+4>>2]=I,I=o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24,i[B+8>>2]=o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24,i[B+12>>2]=I,og(B- -64|0,B),g=i[B+124>>2],i[B+184>>2]=i[B+120>>2],i[B+188>>2]=g,I=i[B+116>>2],i[B+176>>2]=i[B+112>>2],i[B+180>>2]=I,I=i[B+108>>2],i[B+168>>2]=i[B+104>>2],i[B+172>>2]=I,I=i[B+100>>2],i[B+160>>2]=i[B+96>>2],i[B+164>>2]=I,I=i[B+92>>2],i[B+152>>2]=i[B+88>>2],i[B+156>>2]=I,I=i[B+84>>2],i[B+144>>2]=i[B+80>>2],i[B+148>>2]=I,I=i[B+76>>2],i[B+136>>2]=i[B+72>>2],i[B+140>>2]=I,I=i[B+68>>2],i[B+128>>2]=i[B+64>>2],i[B+132>>2]=I,S(I=B+128|0),a=i[B+156>>2],g=i[B+152>>2],C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,a=i[B+148>>2],g=i[B+144>>2],C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+20|0]=a,C[A+21|0]=a>>>8,C[A+22|0]=a>>>16,C[A+23|0]=a>>>24,a=i[B+140>>2],g=i[B+136>>2],C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,C[A+12|0]=a,C[A+13|0]=a>>>8,C[A+14|0]=a>>>16,C[A+15|0]=a>>>24,a=i[B+132>>2],g=i[B+128>>2],C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=a,C[A+5|0]=a>>>8,C[A+6|0]=a>>>16,C[A+7|0]=a>>>24,XC(I,64),s=B+192|0}function tA(A,I,g,C){var B=0,Q=0,o=0,E=0,a=0;if(Q=i[4+(B=((C<<7)+A|0)-64|0)>>2],i[g>>2]=i[B>>2],i[g+4>>2]=Q,Q=i[B+60>>2],i[g+56>>2]=i[B+56>>2],i[g+60>>2]=Q,Q=i[B+52>>2],i[g+48>>2]=i[B+48>>2],i[g+52>>2]=Q,Q=i[B+44>>2],i[g+40>>2]=i[B+40>>2],i[g+44>>2]=Q,Q=i[B+36>>2],i[g+32>>2]=i[B+32>>2],i[g+36>>2]=Q,Q=i[B+28>>2],i[g+24>>2]=i[B+24>>2],i[g+28>>2]=Q,Q=i[B+20>>2],i[g+16>>2]=i[B+16>>2],i[g+20>>2]=Q,Q=i[B+12>>2],i[g+8>>2]=i[B+8>>2],i[g+12>>2]=Q,C)for(Q=C<<1,a=C<<6;C=(E<<6)+A|0,i[g>>2]=i[g>>2]^i[C>>2],i[g+4>>2]=i[g+4>>2]^i[C+4>>2],i[g+8>>2]=i[g+8>>2]^i[C+8>>2],i[g+12>>2]=i[g+12>>2]^i[C+12>>2],i[g+16>>2]=i[g+16>>2]^i[C+16>>2],i[g+20>>2]=i[g+20>>2]^i[C+20>>2],i[g+24>>2]=i[g+24>>2]^i[C+24>>2],i[g+28>>2]=i[g+28>>2]^i[C+28>>2],i[g+32>>2]=i[g+32>>2]^i[C+32>>2],i[g+36>>2]=i[g+36>>2]^i[C+36>>2],i[g+40>>2]=i[g+40>>2]^i[C+40>>2],i[g+44>>2]=i[g+44>>2]^i[C+44>>2],i[g+48>>2]=i[g+48>>2]^i[C+48>>2],i[g+52>>2]=i[g+52>>2]^i[C+52>>2],i[g+56>>2]=i[g+56>>2]^i[C+56>>2],i[g+60>>2]=i[g+60>>2]^i[C+60>>2],VA(g),o=i[g+60>>2],i[56+(B=(E<<5)+I|0)>>2]=i[g+56>>2],i[B+60>>2]=o,o=i[g+52>>2],i[B+48>>2]=i[g+48>>2],i[B+52>>2]=o,o=i[g+44>>2],i[B+40>>2]=i[g+40>>2],i[B+44>>2]=o,o=i[g+36>>2],i[B+32>>2]=i[g+32>>2],i[B+36>>2]=o,o=i[g+28>>2],i[B+24>>2]=i[g+24>>2],i[B+28>>2]=o,o=i[g+20>>2],i[B+16>>2]=i[g+16>>2],i[B+20>>2]=o,o=i[g+12>>2],i[B+8>>2]=i[g+8>>2],i[B+12>>2]=o,o=i[g+4>>2],i[B>>2]=i[g>>2],i[B+4>>2]=o,i[g>>2]=i[g>>2]^i[C- -64>>2],i[g+4>>2]=i[g+4>>2]^i[C+68>>2],i[g+8>>2]=i[g+8>>2]^i[C+72>>2],i[g+12>>2]=i[g+12>>2]^i[C+76>>2],i[g+16>>2]=i[g+16>>2]^i[C+80>>2],i[g+20>>2]=i[g+20>>2]^i[C+84>>2],i[g+24>>2]=i[g+24>>2]^i[C+88>>2],i[g+28>>2]=i[g+28>>2]^i[C+92>>2],i[g+32>>2]=i[g+32>>2]^i[C+96>>2],i[g+36>>2]=i[g+36>>2]^i[C+100>>2],i[g+40>>2]=i[g+40>>2]^i[C+104>>2],i[g+44>>2]=i[g+44>>2]^i[C+108>>2],i[g+48>>2]=i[g+48>>2]^i[C+112>>2],i[g+52>>2]=i[g+52>>2]^i[C+116>>2],i[g+56>>2]=i[g+56>>2]^i[C+120>>2],i[g+60>>2]=i[g+60>>2]^i[C+124>>2],VA(g),C=B+a|0,B=i[g+60>>2],i[C+56>>2]=i[g+56>>2],i[C+60>>2]=B,B=i[g+52>>2],i[C+48>>2]=i[g+48>>2],i[C+52>>2]=B,B=i[g+44>>2],i[C+40>>2]=i[g+40>>2],i[C+44>>2]=B,B=i[g+36>>2],i[C+32>>2]=i[g+32>>2],i[C+36>>2]=B,B=i[g+28>>2],i[C+24>>2]=i[g+24>>2],i[C+28>>2]=B,B=i[g+20>>2],i[C+16>>2]=i[g+16>>2],i[C+20>>2]=B,B=i[g+12>>2],i[C+8>>2]=i[g+8>>2],i[C+12>>2]=B,B=i[g+4>>2],i[C>>2]=i[g>>2],i[C+4>>2]=B,Q>>>0>(E=E+2|0)>>>0;);}function rA(A,I,g,C){var B=0,Q=0,E=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0;if(h=i[A+36>>2],y=i[A+32>>2],s=i[A+28>>2],r=i[A+24>>2],e=i[A+20>>2],!C&g>>>0>=16|C)for(M=!o[A+80|0]<<24,p=i[A+4>>2],K=a(p,5),n=i[A+8>>2],N=a(n,5),F=i[A+12>>2],S=a(F,5),G=i[A+16>>2],k=a(G,5),w=i[A>>2];B=Ig(E=((o[I+3|0]|o[I+4|0]<<8|o[I+5|0]<<16|o[I+6|0]<<24)>>>2&67108863)+r|0,0,F,0),c=f,e=(_=Ig(r=(67108863&(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24))+e|0,0,G,0))+B|0,B=f+c|0,B=_>>>0>e>>>0?B+1|0:B,c=Ig(s=((o[I+6|0]|o[I+7|0]<<8|o[I+8|0]<<16|o[I+9|0]<<24)>>>4&67108863)+s|0,0,n,0),B=f+B|0,B=c>>>0>(e=c+e|0)>>>0?B+1|0:B,c=Ig(y=((o[I+9|0]|o[I+10|0]<<8|o[I+11|0]<<16|o[I+12|0]<<24)>>>6|0)+y|0,0,p,0),B=f+B|0,B=c>>>0>(e=c+e|0)>>>0?B+1|0:B,c=Ig(h=h+M+((o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24)>>>8)|0,0,w,0),B=f+B|0,U=e=c+e|0,e=c>>>0>e>>>0?B+1|0:B,B=Ig(E,0,n,0),c=f,_=Ig(r,0,F,0),Q=f+c|0,Q=(B=_+B|0)>>>0<_>>>0?Q+1|0:Q,c=(_=Ig(s,0,p,0))+B|0,B=f+Q|0,B=_>>>0>c>>>0?B+1|0:B,_=Ig(y,0,w,0),B=f+B|0,B=_>>>0>(c=_+c|0)>>>0?B+1|0:B,_=Ig(h,0,k,0),B=f+B|0,b=c=_+c|0,c=_>>>0>c>>>0?B+1|0:B,B=Ig(E,0,p,0),t=f,_=(Q=Ig(r,0,n,0))+B|0,B=f+t|0,B=Q>>>0>_>>>0?B+1|0:B,t=Ig(s,0,w,0),Q=f+B|0,Q=(_=t+_|0)>>>0>>0?Q+1|0:Q,t=Ig(y,0,k,0),B=f+Q|0,B=(_=t+_|0)>>>0>>0?B+1|0:B,t=Ig(h,0,S,0),B=f+B|0,H=_=t+_|0,_=_>>>0>>0?B+1|0:B,B=Ig(E,0,w,0),Q=f,t=(D=Ig(r,0,p,0))+B|0,B=f+Q|0,B=t>>>0>>0?B+1|0:B,Q=Ig(s,0,k,0),B=f+B|0,B=Q>>>0>(t=Q+t|0)>>>0?B+1|0:B,D=Ig(y,0,S,0),Q=f+B|0,Q=(t=D+t|0)>>>0>>0?Q+1|0:Q,D=Ig(h,0,N,0),B=f+Q|0,B=(t=D+t|0)>>>0>>0?B+1|0:B,D=t,t=B,B=Ig(E,0,k,0),Q=f,E=(r=Ig(r,0,w,0))+B|0,B=f+Q|0,B=E>>>0>>0?B+1|0:B,r=Ig(s,0,S,0),B=f+B|0,B=(E=r+E|0)>>>0>>0?B+1|0:B,r=Ig(y,0,N,0),B=f+B|0,B=(E=r+E|0)>>>0>>0?B+1|0:B,r=Ig(h,0,K,0),Q=f+B|0,Q=(E=r+E|0)>>>0>>0?Q+1|0:Q,r=E,B=t,B=(E=(s=(67108863&Q)<<6|E>>>26)+D|0)>>>0>>0?B+1|0:B,s=E,y=(67108863&B)<<6|E>>>26,B=_,B=(E=y+H|0)>>>0>>0?B+1|0:B,y=E,Q=c,h=B=(E=(67108863&B)<<6|E>>>26)+b|0,c=(67108863&(Q=B>>>0>>0?Q+1|0:Q))<<6|B>>>26,B=e,r=(67108863&s)+((B=a((67108863&((E=c+U|0)>>>0>>0?B+1:B))<<6|E>>>26,5)+(67108863&r)|0)>>>26|0)|0,s=67108863&y,y=67108863&h,h=67108863&E,e=67108863&B,I=I+16|0,!(C=C-(g>>>0<16)|0)&(g=g-16|0)>>>0>15|C;);i[A+20>>2]=e,i[A+36>>2]=h,i[A+32>>2]=y,i[A+28>>2]=s,i[A+24>>2]=r}function eA(A,I,g,B){A|=0,I|=0;var i=0;return i=-1,(B|=0)-65>>>0<4294967232|(g|=0)>>>0>64||(g&&I?(s=i=s-128|0,!I|((B&=255)-65&255)>>>0<=191|((g&=255)-65&255)>>>0<=191?(rC(),Q()):(bg(A- -64|0,0,293),C[A+56|0]=121,C[A+57|0]=33,C[A+58|0]=126,C[A+59|0]=19,C[A+60|0]=25,C[A+61|0]=205,C[A+62|0]=224,C[A+63|0]=91,C[A+48|0]=107,C[A+49|0]=189,C[A+50|0]=65,C[A+51|0]=251,C[A+52|0]=171,C[A+53|0]=217,C[A+54|0]=131,C[A+55|0]=31,C[A+40|0]=31,C[A+41|0]=108,C[A+42|0]=62,C[A+43|0]=43,C[A+44|0]=140,C[A+45|0]=104,C[A+46|0]=5,C[A+47|0]=155,C[A+32|0]=209,C[A+33|0]=130,C[A+34|0]=230,C[A+35|0]=173,C[A+36|0]=127,C[A+37|0]=82,C[A+38|0]=14,C[A+39|0]=81,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,B=-222443256^(g<<8|B),C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,B=g>>>24^1779033703,C[A+4|0]=B,C[A+5|0]=B>>>8,C[A+6|0]=B>>>16,C[A+7|0]=B>>>24,g=Ng(bg(i,0,128),I,g),Ng(A+96|0,g,128),I=128+(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)|0,C[A+352|0]=I,C[A+353|0]=I>>>8,C[A+354|0]=I>>>16,C[A+355|0]=I>>>24,XC(g,128),s=g+128|0)):(((I=255&B)-65&255)>>>0<=191&&(rC(),Q()),bg(A- -64|0,0,293),C[A+56|0]=121,C[A+57|0]=33,C[A+58|0]=126,C[A+59|0]=19,C[A+60|0]=25,C[A+61|0]=205,C[A+62|0]=224,C[A+63|0]=91,C[A+48|0]=107,C[A+49|0]=189,C[A+50|0]=65,C[A+51|0]=251,C[A+52|0]=171,C[A+53|0]=217,C[A+54|0]=131,C[A+55|0]=31,C[A+40|0]=31,C[A+41|0]=108,C[A+42|0]=62,C[A+43|0]=43,C[A+44|0]=140,C[A+45|0]=104,C[A+46|0]=5,C[A+47|0]=155,C[A+32|0]=209,C[A+33|0]=130,C[A+34|0]=230,C[A+35|0]=173,C[A+36|0]=127,C[A+37|0]=82,C[A+38|0]=14,C[A+39|0]=81,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,I^=-222443256,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,C[A+4|0]=103,C[A+5|0]=230,C[A+6|0]=9,C[A+7|0]=106),i=0),0|i}function yA(A,I,g,B){A|=0,I|=0,g|=0;var Q=0,i=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0;for((B|=0)?(i=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,E=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,Q=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,t=o[B+12|0]|o[B+13|0]<<8|o[B+14|0]<<16|o[B+15|0]<<24):(i=2036477234,E=857760878,Q=1634760805,t=1797285236),a=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,e=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,_=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,y=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,c=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,w=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,s=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,B=o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24,h=o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24,D=o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24,I=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,g=o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24;r=g,g=Lg((f=I)^(I=g+Q|0),16),r=s=Lg(r^(Q=g+s|0),12),p=Lg((f=I+s|0)^g,8),I=Lg(r^(s=p+Q|0),7),a=Lg((g=B+t|0)^a,16),B=Lg((y=a+y|0)^B,12),r=h,i=Lg((t=i+h|0)^e,16),Q=Lg(r^(h=i+c|0),12),c=Lg((c=i)^(i=Q+t|0),8),g=Lg(c^(t=(n=g+B|0)+I|0),16),e=Lg((E=E+D|0)^_,16),D=Lg((_=e+w|0)^D,12),r=I,I=Lg((E=D+E|0)^e,8),r=Lg(r^(_=(k=I+_|0)+g|0),12),e=Lg(g^(t=r+t|0),8),g=Lg((w=e+_|0)^r,7),a=Lg(a^n,8),B=Lg((y=a+y|0)^B,7),_=Lg((i=B+i|0)^I,16),B=Lg((I=_+s|0)^B,12),_=Lg(_^(i=B+i|0),8),B=Lg((s=I+_|0)^B,7),I=Lg((c=c+h|0)^Q,7),h=Lg((E=I+E|0)^p,16),p=Lg(I^(Q=h+y|0),12),I=Lg(h^(E=p+E|0),8),h=Lg((y=Q+I|0)^p,7),r=c,c=a,Q=Lg(D^k,7),c=Lg(c^(a=Q+f|0),16),f=Lg(Q^(D=r+c|0),12),a=Lg(c^(Q=f+a|0),8),D=Lg((c=D+a|0)^f,7),10!=(0|(F=F+1|0)););return C[0|A]=Q,C[A+1|0]=Q>>>8,C[A+2|0]=Q>>>16,C[A+3|0]=Q>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+24|0]=e,C[A+25|0]=e>>>8,C[A+26|0]=e>>>16,C[A+27|0]=e>>>24,C[A+20|0]=_,C[A+21|0]=_>>>8,C[A+22|0]=_>>>16,C[A+23|0]=_>>>24,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,C[A+12|0]=t,C[A+13|0]=t>>>8,C[A+14|0]=t>>>16,C[A+15|0]=t>>>24,C[A+8|0]=i,C[A+9|0]=i>>>8,C[A+10|0]=i>>>16,C[A+11|0]=i>>>24,C[A+4|0]=E,C[A+5|0]=E>>>8,C[A+6|0]=E>>>16,C[A+7|0]=E>>>24,0}function sA(A,I,g){var C,B,Q,o,E,a,_,c,t,r,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0;y=i[I+4>>2],e=i[I+44>>2],h=i[I+8>>2],D=i[I+48>>2],f=i[I+12>>2],p=i[I+52>>2],w=i[I+16>>2],n=i[I+56>>2],k=i[I+20>>2],F=i[I+60>>2],S=i[I+24>>2],N=i[(s=I- -64|0)>>2],G=i[I+28>>2],M=i[I+68>>2],K=i[I+32>>2],U=i[I+72>>2],H=i[I+36>>2],Y=i[I+76>>2],i[A>>2]=i[I>>2]+i[I+40>>2],i[A+36>>2]=H+Y,i[A+32>>2]=K+U,i[A+28>>2]=G+M,i[A+24>>2]=S+N,i[A+20>>2]=k+F,i[A+16>>2]=w+n,i[A+12>>2]=f+p,i[A+8>>2]=h+D,i[A+4>>2]=e+y,e=i[I+4>>2],h=i[I+44>>2],D=i[I+8>>2],f=i[I+48>>2],p=i[I+12>>2],w=i[I+52>>2],n=i[I+16>>2],k=i[I+56>>2],F=i[I+20>>2],S=i[I+60>>2],N=i[I+24>>2],s=i[s>>2],y=i[I+28>>2],G=i[I+68>>2],M=i[I+32>>2],K=i[I+72>>2],U=i[I>>2],H=i[I+40>>2],i[A+76>>2]=i[I+76>>2]-i[I+36>>2],i[A+72>>2]=K-M,i[A+68>>2]=G-y,i[(y=A- -64|0)>>2]=s-N,i[A+60>>2]=S-F,i[A+56>>2]=k-n,i[A+52>>2]=w-p,i[A+48>>2]=f-D,i[A+44>>2]=h-e,i[A+40>>2]=H-U,b(A+80|0,A,g),b(e=A+40|0,e,g+40|0),b(A+120|0,g+120|0,I+120|0),b(A,I+80|0,g+80|0),H=i[A+4>>2],Y=i[A+8>>2],Q=i[A+12>>2],o=i[A+16>>2],E=i[A+20>>2],a=i[A+24>>2],_=i[A+28>>2],c=i[A+32>>2],t=i[A+36>>2],I=i[A+44>>2],g=i[A+84>>2],e=i[A+48>>2],h=i[A+88>>2],D=i[A+52>>2],f=i[A+92>>2],p=i[A+56>>2],w=i[A+96>>2],n=i[A+60>>2],k=i[A+100>>2],F=i[y>>2],S=i[A+104>>2],s=i[A+68>>2],N=i[A+108>>2],G=i[A+72>>2],M=i[A+112>>2],r=i[A>>2],K=i[A+40>>2],U=i[A+80>>2],C=i[A+76>>2],B=i[A+116>>2],i[A+76>>2]=C+B,i[A+72>>2]=G+M,i[A+68>>2]=s+N,i[y>>2]=F+S,i[A+60>>2]=n+k,i[A+56>>2]=p+w,i[A+52>>2]=D+f,i[A+48>>2]=e+h,i[A+44>>2]=I+g,i[A+40>>2]=K+U,i[A+36>>2]=B-C,i[A+32>>2]=M-G,i[A+28>>2]=N-s,i[A+24>>2]=S-F,i[A+20>>2]=k-n,i[A+16>>2]=w-p,i[A+12>>2]=f-D,i[A+8>>2]=h-e,i[A+4>>2]=g-I,i[A>>2]=U-K,I=t<<1,g=i[A+156>>2],i[A+156>>2]=I-g,y=c<<1,e=i[A+152>>2],i[A+152>>2]=y-e,h=_<<1,D=i[A+148>>2],i[A+148>>2]=h-D,f=a<<1,p=i[A+144>>2],i[A+144>>2]=f-p,w=E<<1,n=i[A+140>>2],i[A+140>>2]=w-n,k=o<<1,F=i[A+136>>2],i[A+136>>2]=k-F,S=Q<<1,s=i[A+132>>2],i[A+132>>2]=S-s,N=Y<<1,G=i[A+128>>2],i[A+128>>2]=N-G,M=H<<1,K=i[A+124>>2],i[A+124>>2]=M-K,U=r<<1,H=i[A+120>>2],i[A+120>>2]=U-H,i[A+112>>2]=e+y,i[A+108>>2]=h+D,i[A+104>>2]=f+p,i[A+100>>2]=w+n,i[A+96>>2]=k+F,i[A+92>>2]=S+s,i[A+88>>2]=N+G,i[A+84>>2]=M+K,i[A+80>>2]=U+H,i[A+116>>2]=I+g}function hA(A,I,g){var C,B,Q,o,E,a,_,c,t,r,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0;y=i[I+4>>2],e=i[I+44>>2],h=i[I+8>>2],D=i[I+48>>2],f=i[I+12>>2],p=i[I+52>>2],w=i[I+16>>2],n=i[I+56>>2],k=i[I+20>>2],F=i[I+60>>2],S=i[I+24>>2],N=i[(s=I- -64|0)>>2],G=i[I+28>>2],M=i[I+68>>2],K=i[I+32>>2],U=i[I+72>>2],H=i[I+36>>2],Y=i[I+76>>2],i[A>>2]=i[I>>2]+i[I+40>>2],i[A+36>>2]=H+Y,i[A+32>>2]=K+U,i[A+28>>2]=G+M,i[A+24>>2]=S+N,i[A+20>>2]=k+F,i[A+16>>2]=w+n,i[A+12>>2]=f+p,i[A+8>>2]=h+D,i[A+4>>2]=e+y,e=i[I+4>>2],h=i[I+44>>2],D=i[I+8>>2],f=i[I+48>>2],p=i[I+12>>2],w=i[I+52>>2],n=i[I+16>>2],k=i[I+56>>2],F=i[I+20>>2],S=i[I+60>>2],N=i[I+24>>2],s=i[s>>2],y=i[I+28>>2],G=i[I+68>>2],M=i[I+32>>2],K=i[I+72>>2],U=i[I>>2],H=i[I+40>>2],i[A+76>>2]=i[I+76>>2]-i[I+36>>2],i[A+72>>2]=K-M,i[A+68>>2]=G-y,i[(y=A- -64|0)>>2]=s-N,i[A+60>>2]=S-F,i[A+56>>2]=k-n,i[A+52>>2]=w-p,i[A+48>>2]=f-D,i[A+44>>2]=h-e,i[A+40>>2]=H-U,b(A+80|0,A,g+40|0),b(e=A+40|0,e,g),b(A+120|0,g+120|0,I+120|0),b(A,I+80|0,g+80|0),H=i[A+4>>2],Y=i[A+8>>2],Q=i[A+12>>2],o=i[A+16>>2],E=i[A+20>>2],a=i[A+24>>2],_=i[A+28>>2],c=i[A+32>>2],t=i[A+36>>2],I=i[A+44>>2],g=i[A+84>>2],e=i[A+48>>2],h=i[A+88>>2],D=i[A+52>>2],f=i[A+92>>2],p=i[A+56>>2],w=i[A+96>>2],n=i[A+60>>2],k=i[A+100>>2],F=i[y>>2],S=i[A+104>>2],s=i[A+68>>2],N=i[A+108>>2],G=i[A+72>>2],M=i[A+112>>2],r=i[A>>2],K=i[A+40>>2],U=i[A+80>>2],C=i[A+76>>2],B=i[A+116>>2],i[A+76>>2]=C+B,i[A+72>>2]=G+M,i[A+68>>2]=s+N,i[y>>2]=F+S,i[A+60>>2]=n+k,i[A+56>>2]=p+w,i[A+52>>2]=D+f,i[A+48>>2]=e+h,i[A+44>>2]=I+g,i[A+40>>2]=K+U,i[A+36>>2]=B-C,i[A+32>>2]=M-G,i[A+28>>2]=N-s,i[A+24>>2]=S-F,i[A+20>>2]=k-n,i[A+16>>2]=w-p,i[A+12>>2]=f-D,i[A+8>>2]=h-e,i[A+4>>2]=g-I,i[A>>2]=U-K,I=i[A+156>>2],g=t<<1,i[A+156>>2]=I+g,y=i[A+152>>2],e=c<<1,i[A+152>>2]=y+e,h=i[A+148>>2],D=_<<1,i[A+148>>2]=h+D,f=i[A+144>>2],p=a<<1,i[A+144>>2]=f+p,w=i[A+140>>2],n=E<<1,i[A+140>>2]=w+n,k=i[A+136>>2],F=o<<1,i[A+136>>2]=k+F,S=i[A+132>>2],s=Q<<1,i[A+132>>2]=S+s,N=i[A+128>>2],G=Y<<1,i[A+128>>2]=N+G,M=i[A+124>>2],K=H<<1,i[A+124>>2]=M+K,U=i[A+120>>2],H=r<<1,i[A+120>>2]=U+H,i[A+112>>2]=e-y,i[A+108>>2]=D-h,i[A+104>>2]=p-f,i[A+100>>2]=n-w,i[A+96>>2]=F-k,i[A+92>>2]=s-S,i[A+88>>2]=G-N,i[A+84>>2]=K-M,i[A+80>>2]=H-U,i[A+116>>2]=g-I}function DA(A,I,g){var C,B,Q,o,E,a,_,c,t,r,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0;y=i[I+4>>2],e=i[I+44>>2],h=i[I+8>>2],D=i[I+48>>2],f=i[I+12>>2],p=i[I+52>>2],w=i[I+16>>2],n=i[I+56>>2],k=i[I+20>>2],F=i[I+60>>2],S=i[I+24>>2],N=i[(s=I- -64|0)>>2],G=i[I+28>>2],M=i[I+68>>2],K=i[I+32>>2],U=i[I+72>>2],H=i[I+36>>2],Y=i[I+76>>2],i[A>>2]=i[I>>2]+i[I+40>>2],i[A+36>>2]=H+Y,i[A+32>>2]=K+U,i[A+28>>2]=G+M,i[A+24>>2]=S+N,i[A+20>>2]=k+F,i[A+16>>2]=w+n,i[A+12>>2]=f+p,i[A+8>>2]=h+D,i[A+4>>2]=e+y,e=i[I+4>>2],h=i[I+44>>2],D=i[I+8>>2],f=i[I+48>>2],p=i[I+12>>2],w=i[I+52>>2],n=i[I+16>>2],k=i[I+56>>2],F=i[I+20>>2],S=i[I+60>>2],N=i[I+24>>2],s=i[s>>2],y=i[I+28>>2],G=i[I+68>>2],M=i[I+32>>2],K=i[I+72>>2],U=i[I>>2],H=i[I+40>>2],i[A+76>>2]=i[I+76>>2]-i[I+36>>2],i[A+72>>2]=K-M,i[A+68>>2]=G-y,i[(y=A- -64|0)>>2]=s-N,i[A+60>>2]=S-F,i[A+56>>2]=k-n,i[A+52>>2]=w-p,i[A+48>>2]=f-D,i[A+44>>2]=h-e,i[A+40>>2]=H-U,b(A+80|0,A,g),b(e=A+40|0,e,g+40|0),b(A+120|0,g+80|0,I+120|0),H=i[I+84>>2],Y=i[I+88>>2],Q=i[I+92>>2],o=i[I+96>>2],E=i[I+100>>2],a=i[I+104>>2],_=i[I+108>>2],c=i[I+112>>2],t=i[I+116>>2],g=i[A+44>>2],e=i[A+84>>2],h=i[A+48>>2],D=i[A+88>>2],f=i[A+52>>2],p=i[A+92>>2],w=i[A+56>>2],n=i[A+96>>2],k=i[A+60>>2],F=i[A+100>>2],S=i[y>>2],s=i[A+104>>2],N=i[A+68>>2],G=i[A+108>>2],M=i[A+72>>2],K=i[A+112>>2],r=i[I+80>>2],I=i[A+40>>2],U=i[A+80>>2],C=i[A+76>>2],B=i[A+116>>2],i[A+76>>2]=C+B,i[A+72>>2]=M+K,i[A+68>>2]=N+G,i[y>>2]=S+s,i[A+60>>2]=k+F,i[A+56>>2]=w+n,i[A+52>>2]=f+p,i[A+48>>2]=h+D,i[A+44>>2]=g+e,i[A+40>>2]=I+U,i[A+36>>2]=B-C,i[A+32>>2]=K-M,i[A+28>>2]=G-N,i[A+24>>2]=s-S,i[A+20>>2]=F-k,i[A+16>>2]=n-w,i[A+12>>2]=p-f,i[A+8>>2]=D-h,i[A+4>>2]=e-g,i[A>>2]=U-I,I=t<<1,g=i[A+156>>2],i[A+156>>2]=I-g,y=c<<1,e=i[A+152>>2],i[A+152>>2]=y-e,h=_<<1,D=i[A+148>>2],i[A+148>>2]=h-D,f=a<<1,p=i[A+144>>2],i[A+144>>2]=f-p,w=E<<1,n=i[A+140>>2],i[A+140>>2]=w-n,k=o<<1,F=i[A+136>>2],i[A+136>>2]=k-F,S=Q<<1,s=i[A+132>>2],i[A+132>>2]=S-s,N=Y<<1,G=i[A+128>>2],i[A+128>>2]=N-G,M=H<<1,K=i[A+124>>2],i[A+124>>2]=M-K,U=r<<1,H=i[A+120>>2],i[A+120>>2]=U-H,i[A+112>>2]=e+y,i[A+108>>2]=h+D,i[A+104>>2]=f+p,i[A+100>>2]=w+n,i[A+96>>2]=k+F,i[A+92>>2]=S+s,i[A+88>>2]=N+G,i[A+84>>2]=M+K,i[A+80>>2]=U+H,i[A+116>>2]=I+g}function fA(A,I){var g,C,B,Q,E,a,_,c,t,r,e,y,s,h,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0;s=o[I+31|0],g=o[I+30|0],C=o[I+29|0],B=o[I+6|0],Q=o[I+5|0],E=o[I+4|0],a=o[I+9|0],_=o[I+8|0],c=o[I+7|0],t=o[I+12|0],K=o[I+11|0],U=o[I+10|0],r=o[I+15|0],b=o[I+14|0],e=o[I+13|0],S=o[I+28|0],M=o[I+27|0],N=o[I+26|0],F=o[I+25|0],n=o[I+24|0],w=o[I+23|0],h=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,k=(p=o[I+21|0])<<15,p=D=p>>>17|0,G=k,G|=(k=o[I+20|0])<<7,k=(D=k>>>25|0)|p,p=(D=o[I+22|0])>>>9|0,D=D<<23|G,p|=k,y=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,I=0,k=D,D=(33554431&(I=(G=y+16777216|0)>>>0<16777216?1:I))<<7|G>>>25,I=(I>>>25|0)+p|0,D=(p=k=k+D|0)>>>0>>0?I+1|0:I,I=(k=p+33554432|0)>>>0<33554432?D+1|0:D,i[A+24>>2]=p-(-67108864&k),D=(p=w>>>27|0)|n>>>19|F>>>11,p=w=(n=F<<21|(w=n<<13|w<<5))+(p=(67108863&(p=I))<<6|k>>>26)|0,I=D,D=(w=n+16777216|0)>>>0<16777216?I+1|0:I,i[A+28>>2]=p-(1040187392&w),p=(D=(I=D)>>>25|0)+(p=M>>>20|N>>>28|S>>>12)|0,I=p=(D=w=(I=(33554431&I)<<7|w>>>25)+(M<<12|N<<4|S<<20)|0)>>>0>>0?p+1|0:p,w=(S=D+33554432|0)>>>0<33554432?I+1|0:I,i[A+32>>2]=D-(-67108864&S),p=t>>>13|(D=K>>>21|U>>>29),I=(p=(M=16777216+(K=K<<11|U<<3|t<<19)|0)>>>0<16777216?p+1|0:p)>>>25|0,p=(D=n=b<<10|e<<2|r<<18)+(n=(33554431&p)<<7|M>>>25)|0,D=I+(F=b>>>22|e>>>30|r>>>14)|0,I=D=p>>>0>>0?D+1|0:D,n=((67108863&(I=(n=p+33554432|0)>>>0<33554432?I+1|0:I))<<6|(D=n)>>>26)+(N=y-(-33554432&G)|0)|0,i[A+20>>2]=n,i[A+16>>2]=p-(-67108864&D),D=Q>>>18|E>>>26|B>>>10,p=(D=(N=16777216+(U=Q<<14|E<<6|B<<22)|0)>>>0<16777216?D+1|0:D)>>>25|0,D=(I=n=_<<13|c<<5|a<<21)+(n=(33554431&D)<<7|N>>>25)|0,I=p+(F=_>>>19|c>>>27|a>>>11)|0,I=D>>>0>>0?I+1|0:I,p=(F=D+33554432|0)>>>0<33554432?I+1|0:I,i[A+8>>2]=D-(-67108864&F),S=(w=(67108863&w)<<6|S>>>26)+(b=s<<18&33292288|g<<10|C<<2)|0,I=D=g>>>22|C>>>30,D=(w=b+16777216|0)>>>0<16777216?I+1|0:I,i[A+36>>2]=S-(33554432&w),p=K+((67108863&p)<<6|F>>>26)|0,i[A+12>>2]=p-(234881024&M),n=U-(2113929216&N)|0,p=Ig((33554431&(I=D))<<7|w>>>25,D=I>>>25|0,19,0),I=f,p=(D=p+h|0)>>>0

>>0?I+1|0:I,w=((67108863&(p=(I=D+33554432|0)>>>0<33554432?p+1|0:p))<<6|I>>>26)+n|0,i[A+4>>2]=w,i[A>>2]=D-(-67108864&I)}function pA(A,I,g,B,E,a,_,c){A|=0,I|=0,g|=0,B|=0,E|=0,a|=0,_|=0;var t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0;if(1==(-7&(c|=0))){A:{I:{g:{C:{B:{Q:{i:{if(B){o:{E:{if(c>>>0<=3){for(;;){y=r;a:{_:{c:{t:{for(;;){if(t=(t=(e=C[g+y|0])-65|0)&(~(90-e)&~t)>>>8&255|e+4&(~(e+65488)&~(57-e))>>>8&255|e+185&(~(e+65439)&~(122-e))>>>8&255|~(1+(16336^e))>>>8&63|~(1+(16340^e))>>>8&62,255!=(0|(t|=(t-1&1+(65470^e))>>>8&255)))break t;if(t=0,!E)break o;if(!kI(E,e))break;if((y=y+1|0)>>>0>=B>>>0)break c}r=y;break o}if(D=t+(D<<6)|0,s>>>0>1)break _;s=s+6|0;break a}r=(A=r+1|0)>>>0>>0?B:A;break o}if(s=s-2|0,I>>>0<=h>>>0)break E;C[A+h|0]=D>>>s,h=h+1|0}if(t=0,!((r=y+1|0)>>>0>>0))break}break o}for(;;){a:{if(t=(t=(e=C[g+y|0])-65|0)&(~(90-e)&~t)>>>8&255|e+4&(~(e+65488)&~(57-e))>>>8&255|e+185&(~(e+65439)&~(122-e))>>>8&255|~(1+(16288^e))>>>8&63|~(1+(16338^e))>>>8&62,255==(0|(t|=(t-1&1+(65470^e))>>>8&255))){if(t=0,!E)break o;if(kI(E,e)){if((y=y+1|0)>>>0>=B>>>0)break a;continue}r=y;break o}if(D=t+(D<<6)|0,s>>>0<2)s=s+6|0;else{if(s=s-2|0,I>>>0<=h>>>0)break E;C[A+h|0]=D>>>s,h=h+1|0}if(t=0,(r=y+1|0)>>>0>=B>>>0)break o;y=r;continue}break}r=(A=r+1|0)>>>0>>0?B:A;break o}r=y,i[9404]=68,t=1}if(s>>>0>4)break i;A=r}else A=0;if(I=-1,t){r=A;break A}if(~(-1<>>0<2){c=A;break B}if(r=A>>>0>B>>>0?A:B,y=s>>>1|0,!E)break Q;for(c=A;;){if((0|c)==(0|r)){t=68;break C}if(61!=(0|(A=C[g+c|0]))){if(!kI(E,A)){t=28,r=c;break C}}else y=y-1|0;if(c=c+1|0,!y)break}break B}I=-1;break A}if(t=68,A>>>0>=B>>>0)break C;if(61!=o[A+g|0]){r=A,t=28;break C}if(c=A+y|0,1!=(0|y)){if((0|(s=A+1|0))==(0|r))break C;if(61!=o[g+s|0]){r=s,t=28;break C}if(2!=(0|y)){if((0|(A=A+2|0))==(0|r))break C;if(t=28,r=A,61!=o[A+g|0])break C}}}if(I=0,E)break g;break I}i[9404]=t;break A}if(!(B>>>0<=c>>>0)){for(;;){if(!kI(E,C[g+c|0]))break I;if((0|(c=c+1|0))==(0|B))break}c=B}}r=c,f=h}return _?i[_>>2]=g+r:(0|B)!=(0|r)&&(i[9404]=28,I=-1),a&&(i[a>>2]=f),0|I}rC(),Q()}function wA(A,I,g,B){A|=0,I|=0,g|=0;var Q=0,i=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0;for((B|=0)?(Q=o[B+12|0]|o[B+13|0]<<8|o[B+14|0]<<16|o[B+15|0]<<24,_=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,c=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,B=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24):(Q=1797285236,_=2036477234,c=857760878,B=1634760805),i=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,a=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,E=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,f=o[g+28|0]|o[g+29|0]<<8|o[g+30|0]<<16|o[g+31|0]<<24,D=o[g+24|0]|o[g+25|0]<<8|o[g+26|0]<<16|o[g+27|0]<<24,p=20,s=o[g+20|0]|o[g+21|0]<<8|o[g+22|0]<<16|o[g+23|0]<<24,h=o[g+16|0]|o[g+17|0]<<8|o[g+18|0]<<16|o[g+19|0]<<24,r=o[g+12|0]|o[g+13|0]<<8|o[g+14|0]<<16|o[g+15|0]<<24,e=o[g+8|0]|o[g+9|0]<<8|o[g+10|0]<<16|o[g+11|0]<<24,y=o[g+4|0]|o[g+5|0]<<8|o[g+6|0]<<16|o[g+7|0]<<24,I=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,g=o[0|g]|o[g+1|0]<<8|o[g+2|0]<<16|o[g+3|0]<<24;t=Lg(g+c|0,7)^i,w=Lg(t+c|0,9)^D,r=Lg(B+s|0,7)^r,n=Lg(r+B|0,9)^a,k=Lg(n+r|0,13)^s,e=Lg(Q+h|0,7)^e,E=Lg(e+Q|0,9)^E,a=Lg(E+e|0,13)^h,Q=Lg(E+a|0,18)^Q,i=Lg(I+_|0,7)^f,s=k^Lg(Q+i|0,7),D=w^Lg(s+Q|0,9),f=Lg(s+D|0,13)^i,Q=Lg(D+f|0,18)^Q,y=Lg(i+_|0,9)^y,F=Lg(y+i|0,13)^I,I=Lg(F+y|0,18)^_,h=Lg(I+t|0,7)^a,a=Lg(h+I|0,9)^n,i=Lg(a+h|0,13)^t,_=Lg(i+a|0,18)^I,t=Lg(t+w|0,13)^g,g=Lg(t+w|0,18)^c,I=Lg(g+r|0,7)^F,E=Lg(I+g|0,9)^E,r=Lg(I+E|0,13)^r,c=Lg(E+r|0,18)^g,B=Lg(n+k|0,18)^B,g=Lg(B+e|0,7)^t,y=Lg(g+B|0,9)^y,e=Lg(g+y|0,13)^e,B=Lg(y+e|0,18)^B,t=p>>>0>2,p=p-2|0,t;);return C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+28|0]=i,C[A+29|0]=i>>>8,C[A+30|0]=i>>>16,C[A+31|0]=i>>>24,C[A+24|0]=a,C[A+25|0]=a>>>8,C[A+26|0]=a>>>16,C[A+27|0]=a>>>24,C[A+20|0]=E,C[A+21|0]=E>>>8,C[A+22|0]=E>>>16,C[A+23|0]=E>>>24,C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,C[A+12|0]=Q,C[A+13|0]=Q>>>8,C[A+14|0]=Q>>>16,C[A+15|0]=Q>>>24,C[A+8|0]=_,C[A+9|0]=_>>>8,C[A+10|0]=_>>>16,C[A+11|0]=_>>>24,C[A+4|0]=c,C[A+5|0]=c>>>8,C[A+6|0]=c>>>16,C[A+7|0]=c>>>24,0}function nA(A,I){var g,B,Q,E,a=0,_=0,c=0,t=0,r=0,e=0;for(s=g=s-480|0;c=(_=g+288|0)+(a<<1)|0,t=o[I+a|0],C[c+1|0]=t>>>4,C[0|c]=15&t,_=_+((c=1|a)<<1)|0,c=o[I+c|0],C[_+1|0]=c>>>4,C[0|_]=15&c,32!=(0|(a=a+2|0)););for(I=0;a=8+(_=(a=I)+o[0|(I=(g+288|0)+r|0)]|0)|0,C[0|I]=_-(240&a),a=8+(_=o[I+1|0]+(a<<24>>24>>4)|0)|0,C[I+1|0]=_-(240&a),a=8+(_=o[I+2|0]+(a<<24>>24>>4)|0)|0,C[I+2|0]=_-(240&a),I=a<<24>>24>>4,63!=(0|(r=r+3|0)););for(C[g+351|0]=o[g+351|0]+I,i[A+32>>2]=0,i[A+36>>2]=0,i[A+24>>2]=0,i[A+28>>2]=0,i[A+16>>2]=0,i[A+20>>2]=0,i[A+8>>2]=0,i[A+12>>2]=0,i[A>>2]=0,i[A+4>>2]=0,i[A+44>>2]=0,i[A+48>>2]=0,i[A+40>>2]=1,i[A+52>>2]=0,i[A+56>>2]=0,i[A+60>>2]=0,i[A+64>>2]=0,i[A+68>>2]=0,i[A+72>>2]=0,i[A+76>>2]=0,i[A+80>>2]=1,bg(A+84|0,0,76),Q=A+120|0,r=A+80|0,I=A+40|0,_=g+208|0,B=g+168|0,c=g+248|0,a=1;zA(e=g+8|0,a>>>1|0,C[(g+288|0)+a|0]),DA(t=g+128|0,A,e),b(A,t,c),b(I,B,_),b(r,_,c),b(Q,t,B),e=a>>>0<62,a=a+2|0,e;);for(a=i[A+36>>2],i[g+392>>2]=i[A+32>>2],i[g+396>>2]=a,a=i[A+28>>2],i[g+384>>2]=i[A+24>>2],i[g+388>>2]=a,a=i[A+20>>2],i[g+376>>2]=i[A+16>>2],i[g+380>>2]=a,a=i[A+12>>2],i[g+368>>2]=i[A+8>>2],i[g+372>>2]=a,a=i[A+4>>2],i[g+360>>2]=i[A>>2],i[g+364>>2]=a,a=i[I+12>>2],i[g+408>>2]=i[I+8>>2],i[g+412>>2]=a,a=i[I+20>>2],i[g+416>>2]=i[I+16>>2],i[g+420>>2]=a,a=i[I+28>>2],i[g+424>>2]=i[I+24>>2],i[g+428>>2]=a,a=i[I+36>>2],i[g+432>>2]=i[I+32>>2],i[g+436>>2]=a,a=i[I+4>>2],i[g+400>>2]=i[I>>2],i[g+404>>2]=a,a=i[r+12>>2],i[g+448>>2]=i[r+8>>2],i[g+452>>2]=a,a=i[r+20>>2],i[g+456>>2]=i[r+16>>2],i[g+460>>2]=a,a=i[r+28>>2],i[g+464>>2]=i[r+24>>2],i[g+468>>2]=a,a=i[r+36>>2],i[g+472>>2]=i[r+32>>2],i[g+476>>2]=a,a=i[r+4>>2],i[g+440>>2]=i[r>>2],i[g+444>>2]=a,KA(t,a=g+360|0),b(a,t,c),b(e=g+400|0,B,_),b(E=g+440|0,_,c),KA(t,a),b(a,t,c),b(e,B,_),b(E,_,c),KA(t,a),b(a,t,c),b(e,B,_),b(E,_,c),KA(t,a),b(A,t,c),b(I,B,_),b(r,_,c),b(Q,t,B),a=0;zA(e=g+8|0,a>>>1|0,C[(g+288|0)+a|0]),DA(t=g+128|0,A,e),b(A,t,c),b(I,B,_),b(r,_,c),b(Q,t,B),t=a>>>0<62,a=a+2|0,t;);s=g+480|0}function kA(A,I){A|=0;var g,C,B,Q,i,o=0,E=0,a=0,_=0,c=0,t=0;for(s=g=s-736|0,n(c=g+704|0,I|=0,I),n(E=g+224|0,I,c),n(_=g+672|0,I,E),n(a=g+640|0,_,_),n(C=g+416|0,c,a),n(c=g+320|0,I,C),n(o=g+608|0,a,a),n(a=g+288|0,c,c),n(t=g+576|0,C,a),n(i=g+448|0,o,a),n(B=g+544|0,t,t),n(t=g+384|0,o,B),n(Q=g+352|0,E,t),n(E=g+192|0,o,Q),n(o=g+160|0,_,E),n(g+96|0,_,o),n(E=g+512|0,B,Q),n(o=g+480|0,_,E),n(E=g+256|0,i,o),n(g+128|0,a,E),n(a=g- -64|0,t,o),n(o=g+32|0,_,a),n(g,C,o),n(A,c,g),_=0;n(A,A,A),126!=(0|(_=_+1|0)););return n(A,A,g+352|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+704|0),n(A,A,g),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+160|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+256|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g- -64|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+96|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+320|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+512|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+192|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+480|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+128|0),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,A),n(A,A,g+32|0),s=g+736|0,0-GI(I,32)|0}function FA(A,I,g){A|=0;var B,Q,i,E,a=0,_=0,c=0,t=0,r=0;return s=i=s-160|0,FI(I|=0,g|=0,32,0),C[0|I]=248&o[0|I],C[I+31|0]=63&o[I+31|0]|64,nA(i,I),tg(A,i),_=o[(Q=g)+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24,a=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,c=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,t=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,r=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,g=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,E=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,B=I,I=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,C[B+24|0]=I,C[B+25|0]=I>>>8,C[B+26|0]=I>>>16,C[B+27|0]=I>>>24,C[B+28|0]=E,C[B+29|0]=E>>>8,C[B+30|0]=E>>>16,C[B+31|0]=E>>>24,C[B+16|0]=c,C[B+17|0]=c>>>8,C[B+18|0]=c>>>16,C[B+19|0]=c>>>24,C[B+20|0]=t,C[B+21|0]=t>>>8,C[B+22|0]=t>>>16,C[B+23|0]=t>>>24,C[B+8|0]=_,C[B+9|0]=_>>>8,C[B+10|0]=_>>>16,C[B+11|0]=_>>>24,C[B+12|0]=a,C[B+13|0]=a>>>8,C[B+14|0]=a>>>16,C[B+15|0]=a>>>24,C[0|B]=r,C[B+1|0]=r>>>8,C[B+2|0]=r>>>16,C[B+3|0]=r>>>24,C[B+4|0]=g,C[B+5|0]=g>>>8,C[B+6|0]=g>>>16,C[B+7|0]=g>>>24,c=o[(a=A)+8|0]|o[a+9|0]<<8|o[a+10|0]<<16|o[a+11|0]<<24,t=o[a+12|0]|o[a+13|0]<<8|o[a+14|0]<<16|o[a+15|0]<<24,r=o[a+16|0]|o[a+17|0]<<8|o[a+18|0]<<16|o[a+19|0]<<24,g=o[a+20|0]|o[a+21|0]<<8|o[a+22|0]<<16|o[a+23|0]<<24,I=o[0|a]|o[a+1|0]<<8|o[a+2|0]<<16|o[a+3|0]<<24,A=o[a+4|0]|o[a+5|0]<<8|o[a+6|0]<<16|o[a+7|0]<<24,_=o[a+28|0]|o[a+29|0]<<8|o[a+30|0]<<16|o[a+31|0]<<24,a=o[a+24|0]|o[a+25|0]<<8|o[a+26|0]<<16|o[a+27|0]<<24,C[B+56|0]=a,C[B+57|0]=a>>>8,C[B+58|0]=a>>>16,C[B+59|0]=a>>>24,C[B+60|0]=_,C[B+61|0]=_>>>8,C[B+62|0]=_>>>16,C[B+63|0]=_>>>24,C[B+48|0]=r,C[B+49|0]=r>>>8,C[B+50|0]=r>>>16,C[B+51|0]=r>>>24,C[B+52|0]=g,C[B+53|0]=g>>>8,C[B+54|0]=g>>>16,C[B+55|0]=g>>>24,C[B+40|0]=c,C[B+41|0]=c>>>8,C[B+42|0]=c>>>16,C[B+43|0]=c>>>24,C[B+44|0]=t,C[B+45|0]=t>>>8,C[B+46|0]=t>>>16,C[B+47|0]=t>>>24,C[B+32|0]=I,C[B+33|0]=I>>>8,C[B+34|0]=I>>>16,C[B+35|0]=I>>>24,C[B+36|0]=A,C[B+37|0]=A>>>8,C[B+38|0]=A>>>16,C[B+39|0]=A>>>24,s=i+160|0,0}function SA(A,I,g,B){var Q,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0;if(s=Q=s-704|0,g|B)if(E=(B<<3|g>>>29)+(a=c=i[A+76>>2])|0,_=(r=i[A+72>>2])+(t=g<<3)|0,i[A+72>>2]=_,E=_>>>0>>0?E+1|0:E,i[A+76>>2]=E,c=i[A+68>>2],E=(E=_=(0|E)==(0|a)&_>>>0>>0|E>>>0>>0)>>>0>(_=_+i[A+64>>2]|0)>>>0?c+1|0:c,_=(t=B>>>29|0)+_|0,i[A+64>>2]=_,i[A+68>>2]=_>>>0>>0?E+1|0:E,_=A+80|0,(0|B)==(0|(c=f=0-((E=0)+((t=127&((7&a)<<29|r>>>3))>>>0>128)|0)|0))&g>>>0>=(r=128-t|0)>>>0|B>>>0>c>>>0){if(a=0,c=0,!E&(127^t)>>>0>=3|E)for(p=252&r;C[(E=a+t|0)+_|0]=o[I+a|0],C[_+(t+(E=1|a)|0)|0]=o[I+E|0],C[_+(t+(E=2|a)|0)|0]=o[I+E|0],C[_+(t+(E=3|a)|0)|0]=o[I+E|0],E=c,c=(a=a+4|0)>>>0<4?E+1|0:E,E=h,h=E=(e=e+4|0)>>>0<4?E+1|0:E,(0|e)!=(0|p)|(0|D)!=(0|E););if(h=E=0,E|(e=3&r))for(;C[(E=a+t|0)+_|0]=o[I+a|0],E=c,c=(a=a+1|0)?E:E+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|e)!=(0|y)|(0|h)!=(0|E););if(k(A,_,Q,a=Q+640|0),I=I+r|0,!(B=B-((g>>>0>>0)+f|0)|0)&(g=g-r|0)>>>0>127|B)for(;k(A,I,Q,a),I=I+128|0,!(B=B-(g>>>0<128)|0)&(g=g-128|0)>>>0>127|B;);if(g|B){if(A=3&g,y=0,D=0,a=0,c=0,!B&g>>>0>=4|B)for(e=124&g,r=0,g=0,B=0;C[a+_|0]=o[I+a|0],C[(E=1|a)+_|0]=o[I+E|0],C[(E=2|a)+_|0]=o[I+E|0],C[(E=3|a)+_|0]=o[I+E|0],E=c,c=(a=a+4|0)>>>0<4?E+1|0:E,E=B,B=E=(g=g+4|0)>>>0<4?E+1|0:E,(0|g)!=(0|e)|(0|r)!=(0|E););if(A|h)for(;C[a+_|0]=o[I+a|0],c=(a=a+1|0)?c:c+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|A)!=(0|y)|(0|h)!=(0|E););}XC(Q,704)}else{if(a=0,c=0,!B&g>>>0>=4|B)for(A=-4&g;C[(E=a+t|0)+_|0]=o[I+a|0],C[_+(r=t+(E=1|a)|0)|0]=o[I+E|0],C[_+(r=t+(E=2|a)|0)|0]=o[I+E|0],C[_+(r=t+(E=3|a)|0)|0]=o[I+E|0],E=c,c=(a=a+4|0)>>>0<4?E+1|0:E,E=h,h=E=(e=e+4|0)>>>0<4?E+1|0:E,(0|A)!=(0|e)|(0|B)!=(0|E););if((g&=3)|(A=0))for(;C[(B=a+t|0)+_|0]=o[I+a|0],c=(a=a+1|0)?c:c+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|g)!=(0|y)|(0|A)!=(0|E););}return s=Q+704|0,0}function NA(A,I,g){var C,B=0,Q=0,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0;s=i[I+4>>2],B=i[A+4>>2],h=i[I+8>>2],Q=i[A+8>>2],D=i[I+12>>2],o=i[A+12>>2],f=i[I+16>>2],E=i[A+16>>2],p=i[I+20>>2],a=i[A+20>>2],y=i[I+24>>2],_=i[A+24>>2],w=i[I+28>>2],c=i[A+28>>2],n=i[I+32>>2],t=i[A+32>>2],k=i[I+36>>2],r=i[A+36>>2],g=0-g|0,e=i[A>>2],i[A>>2]=g&(e^i[I>>2])^e,i[A+36>>2]=r^g&(r^k),i[A+32>>2]=t^g&(t^n),i[A+28>>2]=c^g&(c^w),i[A+24>>2]=_^g&(_^y),i[A+20>>2]=a^g&(a^p),i[A+16>>2]=E^g&(E^f),i[A+12>>2]=o^g&(o^D),i[A+8>>2]=Q^g&(Q^h),i[A+4>>2]=B^g&(B^s),B=i[A+44>>2],s=i[I+44>>2],Q=i[A+48>>2],h=i[I+48>>2],o=i[A+52>>2],D=i[I+52>>2],E=i[A+56>>2],f=i[I+56>>2],a=i[A+60>>2],p=i[I+60>>2],_=i[(y=A- -64|0)>>2],w=i[I- -64>>2],c=i[A+68>>2],n=i[I+68>>2],t=i[A+72>>2],k=i[I+72>>2],r=i[A+40>>2],e=i[I+40>>2],C=i[A+76>>2],i[A+76>>2]=C^g&(i[I+76>>2]^C),i[A+72>>2]=t^g&(t^k),i[A+68>>2]=c^g&(c^n),i[y>>2]=_^g&(_^w),i[A+60>>2]=a^g&(a^p),i[A+56>>2]=E^g&(E^f),i[A+52>>2]=o^g&(o^D),i[A+48>>2]=Q^g&(Q^h),i[A+44>>2]=B^g&(B^s),i[A+40>>2]=r^g&(r^e),B=i[A+84>>2],s=i[I+84>>2],Q=i[A+88>>2],h=i[I+88>>2],o=i[A+92>>2],D=i[I+92>>2],E=i[A+96>>2],f=i[I+96>>2],a=i[A+100>>2],p=i[I+100>>2],_=i[A+104>>2],y=i[I+104>>2],c=i[A+108>>2],w=i[I+108>>2],t=i[A+112>>2],n=i[I+112>>2],r=i[A+80>>2],k=i[I+80>>2],e=i[A+116>>2],i[A+116>>2]=g&(e^i[I+116>>2])^e,i[A+112>>2]=t^g&(t^n),i[A+108>>2]=c^g&(c^w),i[A+104>>2]=_^g&(_^y),i[A+100>>2]=a^g&(a^p),i[A+96>>2]=E^g&(E^f),i[A+92>>2]=o^g&(o^D),i[A+88>>2]=Q^g&(Q^h),i[A+84>>2]=B^g&(B^s),i[A+80>>2]=r^g&(r^k),B=i[A+124>>2],s=i[I+124>>2],Q=i[A+128>>2],h=i[I+128>>2],o=i[A+132>>2],D=i[I+132>>2],E=i[A+136>>2],f=i[I+136>>2],a=i[A+140>>2],p=i[I+140>>2],_=i[A+144>>2],y=i[I+144>>2],c=i[A+148>>2],w=i[I+148>>2],t=i[A+152>>2],n=i[I+152>>2],r=i[A+120>>2],k=i[I+120>>2],e=i[I+156>>2],I=i[A+156>>2],i[A+156>>2]=g&(e^I)^I,i[A+152>>2]=t^g&(t^n),i[A+148>>2]=c^g&(c^w),i[A+144>>2]=_^g&(_^y),i[A+140>>2]=a^g&(a^p),i[A+136>>2]=E^g&(E^f),i[A+132>>2]=o^g&(o^D),i[A+128>>2]=Q^g&(Q^h),i[A+124>>2]=B^g&(B^s),i[A+120>>2]=r^g&(r^k)}function GA(A,I,g){var B,Q,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0;return s=B=s-320|0,R(o=B+240|0,g),b(o,o,g),R(A,o),b(A,A,g),b(A,A,I),PA(A,A),b(A,A,o),b(A,A,I),R(o=B+192|0,A),b(o,o,g),E=i[I+4>>2],h=i[I+8>>2],f=i[I+12>>2],p=i[I+16>>2],w=i[I+20>>2],n=i[I+24>>2],k=i[I+28>>2],F=i[I+32>>2],S=i[I>>2],g=i[B+192>>2],o=i[B+196>>2],a=i[B+200>>2],_=i[B+204>>2],c=i[B+208>>2],t=i[B+212>>2],r=i[B+216>>2],e=i[B+220>>2],y=i[B+224>>2],D=i[B+228>>2],N=i[I+36>>2],i[B+180>>2]=D-N,i[B+176>>2]=y-F,i[B+172>>2]=e-k,i[B+168>>2]=r-n,i[B+164>>2]=t-w,i[B+160>>2]=c-p,i[B+156>>2]=_-f,i[B+152>>2]=a-h,i[B+148>>2]=o-E,i[B+144>>2]=g-S,i[B+132>>2]=D+N,i[B+128>>2]=y+F,i[B+124>>2]=e+k,i[B+120>>2]=r+n,i[B+116>>2]=t+w,i[B+112>>2]=c+p,i[B+108>>2]=_+f,i[B+104>>2]=a+h,i[B+100>>2]=o+E,i[B+96>>2]=g+S,b(E=B+48|0,I,1632),i[B+84>>2]=D+i[B+84>>2],i[B+80>>2]=y+i[B+80>>2],i[B+76>>2]=e+i[B+76>>2],i[B+72>>2]=r+i[B+72>>2],i[B+68>>2]=t+i[B+68>>2],i[B+64>>2]=c+i[B+64>>2],i[B+60>>2]=_+i[B+60>>2],i[B+56>>2]=a+i[B+56>>2],i[B+52>>2]=o+i[B+52>>2],i[B+48>>2]=g+i[B+48>>2],QI(B,B+144|0),f=GI(B,32),QI(B,B+96|0),h=GI(B,32),QI(B,E),I=GI(B,32),b(B,A,1632),y=i[A+4>>2],e=i[A+8>>2],r=i[A+12>>2],t=i[A+16>>2],c=i[A+20>>2],_=i[A+24>>2],a=i[A+28>>2],o=i[A+32>>2],E=i[A>>2],p=i[B>>2],w=i[B+4>>2],n=i[B+8>>2],k=i[B+12>>2],F=i[B+16>>2],S=i[B+20>>2],D=i[B+24>>2],N=i[B+28>>2],Q=i[B+32>>2],g=(I=0-(I|h)|0)&((g=i[A+36>>2])^i[B+36>>2])^g,i[A+36>>2]=g,o^=I&(o^Q),i[A+32>>2]=o,a^=I&(a^N),i[A+28>>2]=a,_^=I&(_^D),i[A+24>>2]=_,c^=I&(c^S),i[A+20>>2]=c,t^=I&(t^F),i[A+16>>2]=t,r^=I&(r^k),i[A+12>>2]=r,e^=I&(e^n),i[A+8>>2]=e,y^=I&(y^w),i[A+4>>2]=y,E^=I&(E^p),i[A>>2]=E,QI(B+288|0,A),I=0-(1&C[B+288|0])|0,i[A+36>>2]=g^I&(g^0-g),i[A+32>>2]=o^I&(o^0-o),i[A+28>>2]=a^I&(a^0-a),i[A+24>>2]=_^I&(_^0-_),i[A+20>>2]=c^I&(c^0-c),i[A+16>>2]=t^I&(t^0-t),i[A+12>>2]=r^I&(r^0-r),i[A+8>>2]=e^I&(e^0-e),i[A+4>>2]=y^I&(y^0-y),i[A>>2]=E^I&(E^0-E),s=B+320|0,h|f}function MA(A,I){var g,B,Q,E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0;return s=g=s-320|0,fA(B=A+40|0,I),i[A+84>>2]=0,i[A+88>>2]=0,i[A+80>>2]=1,i[A+92>>2]=0,i[A+96>>2]=0,i[A+100>>2]=0,i[A+104>>2]=0,i[A+108>>2]=0,i[A+112>>2]=0,i[A+116>>2]=0,R(a=g+240|0,B),b(_=g+192|0,a,1584),i[g+192>>2]=i[g+192>>2]+1,c=i[g+240>>2]-1|0,i[g+240>>2]=c,t=i[g+244>>2],r=i[g+248>>2],e=i[g+252>>2],y=i[g+256>>2],h=i[g+260>>2],D=i[g+264>>2],f=i[g+268>>2],p=i[g+272>>2],w=i[g+276>>2],b(A,a,_),PA(A,A),b(A,a,A),R(a=g+144|0,A),b(a,a,_),a=i[g+180>>2],i[g+132>>2]=a-w,_=i[g+176>>2],i[g+128>>2]=_-p,n=i[g+172>>2],i[g+124>>2]=n-f,k=i[g+168>>2],i[g+120>>2]=k-D,F=i[g+164>>2],i[g+116>>2]=F-h,S=i[g+160>>2],i[g+112>>2]=S-y,N=i[g+156>>2],i[g+108>>2]=N-e,G=i[g+152>>2],i[g+104>>2]=G-r,M=i[g+148>>2],i[g+100>>2]=M-t,K=i[g+144>>2],i[g+96>>2]=K-c,i[g+84>>2]=a+w,i[g+80>>2]=_+p,i[g+76>>2]=f+n,i[g+72>>2]=D+k,i[g+68>>2]=h+F,i[g+64>>2]=y+S,i[g+60>>2]=e+N,i[g+56>>2]=r+G,i[g+52>>2]=t+M,i[g+48>>2]=c+K,QI(g,g+96|0),p=GI(g,32),QI(g,g+48|0),n=GI(g,32),b(g,A,1632),f=i[A+4>>2],D=i[A+8>>2],h=i[A+12>>2],y=i[A+16>>2],e=i[A+20>>2],r=i[A+24>>2],t=i[A+28>>2],c=i[A+32>>2],w=i[A>>2],k=i[g>>2],F=i[g+4>>2],S=i[g+8>>2],N=i[g+12>>2],G=i[g+16>>2],M=i[g+20>>2],K=i[g+24>>2],Q=i[g+28>>2],E=i[g+32>>2],_=(a=p-1|0)&((_=i[A+36>>2])^i[g+36>>2])^_,i[A+36>>2]=_,c^=a&(c^E),i[A+32>>2]=c,t^=a&(t^Q),i[A+28>>2]=t,r^=a&(r^K),i[A+24>>2]=r,e^=a&(e^M),i[A+20>>2]=e,y^=a&(y^G),i[A+16>>2]=y,h^=a&(h^N),i[A+12>>2]=h,D^=a&(D^S),i[A+8>>2]=D,f^=a&(f^F),i[A+4>>2]=f,a=w^a&(w^k),i[A>>2]=a,QI(g+288|0,A),I=0-(1&C[g+288|0]^o[I+31|0]>>>7^o[38144]>>>2)|0,i[A+36>>2]=_^I&(_^0-_),i[A+32>>2]=c^I&(c^0-c),i[A+28>>2]=t^I&(t^0-t),i[A+24>>2]=r^I&(r^0-r),i[A+20>>2]=e^I&(e^0-e),i[A+16>>2]=y^I&(y^0-y),i[A+12>>2]=h^I&(h^0-h),i[A+8>>2]=D^I&(D^0-D),i[A+4>>2]=f^I&(f^0-f),i[A>>2]=a^I&(a^0-a),b(A+120|0,A,B),s=g+320|0,(p|n)-1|0}function KA(A,I){var g,C,B,Q,o,E,a,_,c,t,r,e,y,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0;s=g=s-48|0,R(A,I),R(A+80|0,I+40|0),v(A+120|0,I+80|0),h=i[I+44>>2],D=i[I+4>>2],n=i[I+48>>2],f=i[I+8>>2],k=i[I+52>>2],p=i[I+12>>2],F=i[I+56>>2],w=i[I+16>>2],K=i[I+60>>2],S=i[I+20>>2],U=i[I- -64>>2],N=i[I+24>>2],b=i[I+68>>2],G=i[I+28>>2],H=i[I+72>>2],Y=i[I+32>>2],J=i[I+40>>2],M=i[I>>2],i[A+76>>2]=i[I+76>>2]+i[I+36>>2],i[A+72>>2]=H+Y,i[A+68>>2]=b+G,i[(C=A- -64|0)>>2]=U+N,i[A+60>>2]=K+S,i[A+56>>2]=F+w,i[A+52>>2]=k+p,i[A+48>>2]=n+f,i[A+44>>2]=h+D,i[A+40>>2]=J+M,R(g,A+40|0),I=i[A+4>>2],h=i[A+84>>2],D=i[A+8>>2],n=i[A+88>>2],f=i[A+12>>2],k=i[A+92>>2],p=i[A+16>>2],F=i[A+96>>2],w=i[A+20>>2],K=i[A+100>>2],S=i[A+24>>2],U=i[A+104>>2],N=i[A+28>>2],b=i[A+108>>2],G=i[A+32>>2],H=i[A+112>>2],Y=i[A>>2],J=i[A+80>>2],Q=(M=i[A+116>>2])-(B=i[A+36>>2])|0,i[A+116>>2]=Q,o=H-G|0,i[A+112>>2]=o,E=b-N|0,i[A+108>>2]=E,a=U-S|0,i[A+104>>2]=a,_=K-w|0,i[A+100>>2]=_,c=F-p|0,i[A+96>>2]=c,t=k-f|0,i[A+92>>2]=t,r=n-D|0,i[A+88>>2]=r,e=h-I|0,i[A+84>>2]=e,y=J-Y|0,i[A+80>>2]=y,M=M+B|0,i[A+76>>2]=M,G=G+H|0,i[A+72>>2]=G,N=N+b|0,i[A+68>>2]=N,S=S+U|0,i[C>>2]=S,w=w+K|0,i[A+60>>2]=w,p=p+F|0,i[A+56>>2]=p,f=f+k|0,i[A+52>>2]=f,D=D+n|0,i[A+48>>2]=D,I=I+h|0,i[A+44>>2]=I,h=Y+J|0,i[A+40>>2]=h,n=i[g>>2],k=i[g+4>>2],F=i[g+8>>2],K=i[g+12>>2],U=i[g+16>>2],b=i[g+20>>2],H=i[g+24>>2],Y=i[g+28>>2],J=i[g+32>>2],i[A+36>>2]=i[g+36>>2]-M,i[A+32>>2]=J-G,i[A+28>>2]=Y-N,i[A+24>>2]=H-S,i[A+20>>2]=b-w,i[A+16>>2]=U-p,i[A+12>>2]=K-f,i[A+8>>2]=F-D,i[A+4>>2]=k-I,i[A>>2]=n-h,I=i[A+124>>2],h=i[A+128>>2],D=i[A+132>>2],n=i[A+136>>2],f=i[A+140>>2],k=i[A+144>>2],p=i[A+148>>2],F=i[A+152>>2],w=i[A+120>>2],i[A+156>>2]=i[A+156>>2]-Q,i[A+152>>2]=F-o,i[A+148>>2]=p-E,i[A+144>>2]=k-a,i[A+140>>2]=f-_,i[A+136>>2]=n-c,i[A+132>>2]=D-t,i[A+128>>2]=h-r,i[A+124>>2]=I-e,i[A+120>>2]=w-y,s=g+48|0}function UA(A,I,g,B){var Q,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0;if(s=Q=s-288|0,g|B)if(E=(B<<3|g>>>29)+(a=c=i[A+36>>2])|0,_=(t=i[A+32>>2])+(r=g<<3)|0,i[A+32>>2]=_,i[A+36>>2]=_>>>0>>0?E+1|0:E,c=A+40|0,(0|B)==(0|(_=f=0-((E=0)+((r=63&((7&a)<<29|t>>>3))>>>0>64)|0)|0))&g>>>0>=(t=64-r|0)>>>0|B>>>0>_>>>0){if(a=0,_=0,!E&(63^r)>>>0>=3|E)for(p=124&t;C[(E=a+r|0)+c|0]=o[I+a|0],C[c+(r+(E=1|a)|0)|0]=o[I+E|0],C[c+(r+(E=2|a)|0)|0]=o[I+E|0],C[c+(r+(E=3|a)|0)|0]=o[I+E|0],E=_,_=(a=a+4|0)>>>0<4?E+1|0:E,E=h,h=E=(e=e+4|0)>>>0<4?E+1|0:E,(0|e)!=(0|p)|(0|D)!=(0|E););if(h=E=0,E|(e=3&t))for(;C[(E=a+r|0)+c|0]=o[I+a|0],E=_,_=(a=a+1|0)?E:E+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|e)!=(0|y)|(0|h)!=(0|E););if(J(A,c,Q,a=Q+256|0),I=I+t|0,!(B=B-((g>>>0>>0)+f|0)|0)&(g=g-t|0)>>>0>63|B)for(;J(A,I,Q,a),I=I- -64|0,E=B-1|0,!(B=(g=g+-64|0)>>>0<4294967232?E+1|0:E)&g>>>0>63|B;);if(g|B){if(A=3&g,y=0,D=0,a=0,_=0,!B&g>>>0>=4|B)for(e=60&g,t=0,g=0,B=0;C[a+c|0]=o[I+a|0],C[(E=1|a)+c|0]=o[I+E|0],C[(E=2|a)+c|0]=o[I+E|0],C[(E=3|a)+c|0]=o[I+E|0],E=_,_=(a=a+4|0)>>>0<4?E+1|0:E,E=B,B=E=(g=g+4|0)>>>0<4?E+1|0:E,(0|g)!=(0|e)|(0|t)!=(0|E););if(A|h)for(;C[a+c|0]=o[I+a|0],_=(a=a+1|0)?_:_+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|A)!=(0|y)|(0|h)!=(0|E););}XC(Q,288)}else{if(a=0,_=0,!B&g>>>0>=4|B)for(A=-4&g;C[(E=a+r|0)+c|0]=o[I+a|0],C[c+(t=r+(E=1|a)|0)|0]=o[I+E|0],C[c+(t=r+(E=2|a)|0)|0]=o[I+E|0],C[c+(t=r+(E=3|a)|0)|0]=o[I+E|0],E=_,_=(a=a+4|0)>>>0<4?E+1|0:E,E=h,h=E=(e=e+4|0)>>>0<4?E+1|0:E,(0|A)!=(0|e)|(0|B)!=(0|E););if((g&=3)|(A=0))for(;C[(B=a+r|0)+c|0]=o[I+a|0],_=(a=a+1|0)?_:_+1|0,E=D,D=E=(y=y+1|0)?E:E+1|0,(0|g)!=(0|y)|(0|A)!=(0|E););}return s=Q+288|0,0}function bA(A,I,g,C,B,Q){var o=0;i[Q>>2]=8;A:{I:{o=A,o=(A=!I&A>>>0<=32768)?32768:o;g:{C:{if(!(A=A?0:I)&g>>>5>>>0<=o>>>0|A){if(g>>>0>=4096)break C;I=1;break g}if(i[B>>2]=1,A=1,(I=(o>>>0)/(i[Q>>2]<<2>>>0)|0)>>>0<4)break A;if(A=2,I>>>0<8)break A;if(I>>>0<16)return void(i[C>>2]=3);if(I>>>0<32)return void(i[C>>2]=4);if(I>>>0<64)return void(i[C>>2]=5);if(I>>>0<128)return void(i[C>>2]=6);if(I>>>0<256)return void(i[C>>2]=7);if(I>>>0<512)return void(i[C>>2]=8);if(I>>>0<1024)return void(i[C>>2]=9);if(I>>>0<2048)return void(i[C>>2]=10);if(I>>>0<4096)return void(i[C>>2]=11);if(I>>>0<8192)return void(i[C>>2]=12);if(I>>>0<16384)return void(i[C>>2]=13);if(I>>>0<32768)return void(i[C>>2]=14);if(I>>>0<65536)return void(i[C>>2]=15);if(I>>>0<131072)return void(i[C>>2]=16);if(I>>>0<262144)return void(i[C>>2]=17);if(I>>>0<524288)return void(i[C>>2]=18);if(I>>>0<1048576)return void(i[C>>2]=19);if(I>>>0<2097152)return void(i[C>>2]=20);if(I>>>0<4194304)return void(i[C>>2]=21);if(I>>>0<8388608)return void(i[C>>2]=22);if(I>>>0<16777216)return void(i[C>>2]=23);if(I>>>0>=33554432)break I;return void(i[C>>2]=24)}I=2,g>>>0<8192||(I=3,g>>>0<16384||(I=4,g>>>0<32768||(I=5,g>>>0<65536||(I=6,g>>>0<131072||(I=7,g>>>0<262144||(I=8,g>>>0<524288||(I=9,g>>>0<1048576||(I=10,g>>>0<2097152||(I=11,g>>>0<4194304||(I=12,g>>>0<8388608||(I=13,g>>>0<16777216||(I=14,g>>>0<33554432||(I=15,g>>>0<67108864||(I=16,g>>>0<134217728||(I=17,g>>>0<268435456||(I=18,g>>>0<536870912||(I=19,g>>>0<1073741824||(I=(0|g)>=0?20:21))))))))))))))))))}return g=I,i[C>>2]=g,A=(I=A)>>>2|0,I=(3&I)<<30|o>>>2,C=31&g,(63&g)>>>0>=32?(g=0,A=A>>>C|0):(g=A>>>C|0,A=((1<>>C),void(i[B>>2]=((!g&A>>>0>=1073741823|g?1073741823:A)>>>0)/E[Q>>2])}A=I>>>0<67108864?25:26}i[C>>2]=A}function HA(A,I,g){var C,B,Q,o,E,a,_,c,t=0;s=C=s-160|0,i[A>>2]=1,i[A+4>>2]=0,i[A+8>>2]=0,i[A+12>>2]=0,i[A+16>>2]=0,i[A+20>>2]=0,i[A+24>>2]=0,i[A+28>>2]=0,i[A+32>>2]=0,i[A+44>>2]=0,i[A+48>>2]=0,i[A+36>>2]=0,i[A+40>>2]=1,i[A+52>>2]=0,i[A+56>>2]=0,i[A+60>>2]=0,i[A+64>>2]=0,i[A+68>>2]=0,i[A+72>>2]=0,i[A+76>>2]=0,i[A+80>>2]=1,bg(A+84|0,0,76),NA(A,I,(255&(1^(t=g-((g>>31&g)<<1)|0)))-1>>>31|0),NA(A,I+160|0,(255&(2^t))-1>>>31|0),NA(A,I+320|0,(255&(3^t))-1>>>31|0),NA(A,I+480|0,(255&(4^t))-1>>>31|0),NA(A,I+640|0,(255&(5^t))-1>>>31|0),NA(A,I+800|0,(255&(6^t))-1>>>31|0),NA(A,I+960|0,(255&(7^t))-1>>>31|0),NA(A,I+1120|0,(255&(8^t))-1>>>31|0),I=i[A+76>>2],i[C+32>>2]=i[A+72>>2],i[C+36>>2]=I,t=i[4+(I=A- -64|0)>>2],i[C+24>>2]=i[I>>2],i[C+28>>2]=t,I=i[A+60>>2],i[C+16>>2]=i[A+56>>2],i[C+20>>2]=I,I=i[A+52>>2],i[C+8>>2]=i[A+48>>2],i[C+12>>2]=I,I=i[A+44>>2],i[C>>2]=i[A+40>>2],i[C+4>>2]=I,I=i[A+36>>2],i[C+72>>2]=i[A+32>>2],i[C+76>>2]=I,t=i[A+28>>2],i[(I=C- -64|0)>>2]=i[A+24>>2],i[I+4>>2]=t,I=i[A+20>>2],i[C+56>>2]=i[A+16>>2],i[C+60>>2]=I,I=i[A+12>>2],i[C+48>>2]=i[A+8>>2],i[C+52>>2]=I,I=i[A+4>>2],i[C+40>>2]=i[A>>2],i[C+44>>2]=I,I=i[A+92>>2],i[C+88>>2]=i[A+88>>2],i[C+92>>2]=I,I=i[A+100>>2],i[C+96>>2]=i[A+96>>2],i[C+100>>2]=I,I=i[A+108>>2],i[C+104>>2]=i[A+104>>2],i[C+108>>2]=I,I=i[A+116>>2],i[C+112>>2]=i[A+112>>2],i[C+116>>2]=I,I=i[A+84>>2],i[C+80>>2]=i[A+80>>2],i[C+84>>2]=I,I=i[A+124>>2],t=i[A+128>>2],B=i[A+132>>2],Q=i[A+136>>2],o=i[A+140>>2],E=i[A+144>>2],a=i[A+148>>2],_=i[A+152>>2],c=i[A+120>>2],i[C+156>>2]=0-i[A+156>>2],i[C+152>>2]=0-_,i[C+148>>2]=0-a,i[C+144>>2]=0-E,i[C+140>>2]=0-o,i[C+136>>2]=0-Q,i[C+132>>2]=0-B,i[C+128>>2]=0-t,i[C+124>>2]=0-I,i[C+120>>2]=0-c,NA(A,C,(128&g)>>>7|0),s=C+160|0}function YA(A,I){A|=0,I|=0;var g,B,Q,E,a,_=0,c=0,t=0;return s=c=s-192|0,ag(c,32),FI(I,c,32,0),C[0|I]=248&o[0|I],C[I+31|0]=63&o[I+31|0]|64,nA(t=c+32|0,I),tg(A,t),g=c,t=i[c+28>>2],c=i[c+24>>2],C[I+24|0]=c,C[I+25|0]=c>>>8,C[I+26|0]=c>>>16,C[I+27|0]=c>>>24,C[I+28|0]=t,C[I+29|0]=t>>>8,C[I+30|0]=t>>>16,C[I+31|0]=t>>>24,t=i[g+20>>2],c=i[g+16>>2],C[I+16|0]=c,C[I+17|0]=c>>>8,C[I+18|0]=c>>>16,C[I+19|0]=c>>>24,C[I+20|0]=t,C[I+21|0]=t>>>8,C[I+22|0]=t>>>16,C[I+23|0]=t>>>24,t=i[g+12>>2],c=i[g+8>>2],C[I+8|0]=c,C[I+9|0]=c>>>8,C[I+10|0]=c>>>16,C[I+11|0]=c>>>24,C[I+12|0]=t,C[I+13|0]=t>>>8,C[I+14|0]=t>>>16,C[I+15|0]=t>>>24,t=i[g+4>>2],c=i[g>>2],C[0|I]=c,C[I+1|0]=c>>>8,C[I+2|0]=c>>>16,C[I+3|0]=c>>>24,C[I+4|0]=t,C[I+5|0]=t>>>8,C[I+6|0]=t>>>16,C[I+7|0]=t>>>24,B=o[(_=A)+8|0]|o[_+9|0]<<8|o[_+10|0]<<16|o[_+11|0]<<24,Q=o[_+12|0]|o[_+13|0]<<8|o[_+14|0]<<16|o[_+15|0]<<24,E=o[_+16|0]|o[_+17|0]<<8|o[_+18|0]<<16|o[_+19|0]<<24,t=o[_+20|0]|o[_+21|0]<<8|o[_+22|0]<<16|o[_+23|0]<<24,c=o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24,A=o[_+4|0]|o[_+5|0]<<8|o[_+6|0]<<16|o[_+7|0]<<24,a=o[_+28|0]|o[_+29|0]<<8|o[_+30|0]<<16|o[_+31|0]<<24,_=o[_+24|0]|o[_+25|0]<<8|o[_+26|0]<<16|o[_+27|0]<<24,C[I+56|0]=_,C[I+57|0]=_>>>8,C[I+58|0]=_>>>16,C[I+59|0]=_>>>24,C[I+60|0]=a,C[I+61|0]=a>>>8,C[I+62|0]=a>>>16,C[I+63|0]=a>>>24,C[I+48|0]=E,C[I+49|0]=E>>>8,C[I+50|0]=E>>>16,C[I+51|0]=E>>>24,C[I+52|0]=t,C[I+53|0]=t>>>8,C[I+54|0]=t>>>16,C[I+55|0]=t>>>24,C[I+40|0]=B,C[I+41|0]=B>>>8,C[I+42|0]=B>>>16,C[I+43|0]=B>>>24,C[I+44|0]=Q,C[I+45|0]=Q>>>8,C[I+46|0]=Q>>>16,C[I+47|0]=Q>>>24,C[I+32|0]=c,C[I+33|0]=c>>>8,C[I+34|0]=c>>>16,C[I+35|0]=c>>>24,C[I+36|0]=A,C[I+37|0]=A>>>8,C[I+38|0]=A>>>16,C[I+39|0]=A>>>24,XC(g,32),s=g+192|0,0}function JA(A,I){I|=0;var g,B,Q=0,o=0,E=0,a=0;return s=g=s-288|0,o=40+((Q=i[32+(A|=0)>>2]>>>3&63)+A|0)|0,Q>>>0>=56?(Ng(o,35520,64-Q|0),J(A,A+40|0,g,g+256|0),i[A+88>>2]=0,i[A+92>>2]=0,i[A+80>>2]=0,i[A+84>>2]=0,i[A+72>>2]=0,i[A+76>>2]=0,i[(Q=A- -64|0)>>2]=0,i[Q+4>>2]=0,i[A+56>>2]=0,i[A+60>>2]=0,i[A+48>>2]=0,i[A+52>>2]=0,i[A+40>>2]=0,i[A+44>>2]=0):Ng(o,35520,56-Q|0),E=(Q=16711680&(o=i[A+32>>2]))>>>8|0,a=Q<<24,B=(Q=-16777216&o)>>>24|0,Q=(a|=Q<<8)|-16777216&((255&(Q=i[A+36>>2]))<<24|o>>>8)|16711680&((16777215&Q)<<8|o>>>24)|Q>>>8&65280|Q>>>24,C[A+96|0]=Q,C[A+97|0]=Q>>>8,C[A+98|0]=Q>>>16,C[A+99|0]=Q>>>24,Q=E|B|o<<24|(65280&o)<<8,Q|=E=0,C[A+100|0]=Q,C[A+101|0]=Q>>>8,C[A+102|0]=Q>>>16,C[A+103|0]=Q>>>24,J(A,A+40|0,g,g+256|0),Q=(Q=i[A>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[0|I]=Q,C[I+1|0]=Q>>>8,C[I+2|0]=Q>>>16,C[I+3|0]=Q>>>24,Q=(Q=i[A+4>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+4|0]=Q,C[I+5|0]=Q>>>8,C[I+6|0]=Q>>>16,C[I+7|0]=Q>>>24,Q=(Q=i[A+8>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+8|0]=Q,C[I+9|0]=Q>>>8,C[I+10|0]=Q>>>16,C[I+11|0]=Q>>>24,Q=(Q=i[A+12>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+12|0]=Q,C[I+13|0]=Q>>>8,C[I+14|0]=Q>>>16,C[I+15|0]=Q>>>24,Q=(Q=i[A+16>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+16|0]=Q,C[I+17|0]=Q>>>8,C[I+18|0]=Q>>>16,C[I+19|0]=Q>>>24,Q=(Q=i[A+20>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+20|0]=Q,C[I+21|0]=Q>>>8,C[I+22|0]=Q>>>16,C[I+23|0]=Q>>>24,Q=(Q=i[A+24>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+24|0]=Q,C[I+25|0]=Q>>>8,C[I+26|0]=Q>>>16,C[I+27|0]=Q>>>24,Q=(Q=i[A+28>>2])<<24|(65280&Q)<<8|Q>>>8&65280|Q>>>24,C[I+28|0]=Q,C[I+29|0]=Q>>>8,C[I+30|0]=Q>>>16,C[I+31|0]=Q>>>24,XC(g,288),XC(A,104),s=g+288|0,0}function dA(A,I){A|=0;var g,B=0;s=g=s+-64|0,B=o[60+(I|=0)|0]|o[I+61|0]<<8|o[I+62|0]<<16|o[I+63|0]<<24,i[g+56>>2]=o[I+56|0]|o[I+57|0]<<8|o[I+58|0]<<16|o[I+59|0]<<24,i[g+60>>2]=B,B=o[I+52|0]|o[I+53|0]<<8|o[I+54|0]<<16|o[I+55|0]<<24,i[g+48>>2]=o[I+48|0]|o[I+49|0]<<8|o[I+50|0]<<16|o[I+51|0]<<24,i[g+52>>2]=B,B=o[I+44|0]|o[I+45|0]<<8|o[I+46|0]<<16|o[I+47|0]<<24,i[g+40>>2]=o[I+40|0]|o[I+41|0]<<8|o[I+42|0]<<16|o[I+43|0]<<24,i[g+44>>2]=B,B=o[I+36|0]|o[I+37|0]<<8|o[I+38|0]<<16|o[I+39|0]<<24,i[g+32>>2]=o[I+32|0]|o[I+33|0]<<8|o[I+34|0]<<16|o[I+35|0]<<24,i[g+36>>2]=B,B=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[g+24>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[g+28>>2]=B,B=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[g+16>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[g+20>>2]=B,B=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[g>>2]=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,i[g+4>>2]=B,B=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,i[g+8>>2]=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,i[g+12>>2]=B,S(g),I=i[g+28>>2],B=i[g+24>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[g+20>>2],B=i[g+16>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[g+12>>2],B=i[g+8>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[g+4>>2],B=i[g>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,XC(g,64),s=g- -64|0}function mA(A,I,g){A|=0,I|=0;var B,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0;if(s=B=s-96|0,(g|=0)>>>0>=65&&($I(A),UA(A,I,g,0),JA(A,B),g=32,I=B),$I(A),i[B+88>>2]=909522486,i[B+92>>2]=909522486,i[B+80>>2]=909522486,i[B+84>>2]=909522486,i[B+72>>2]=909522486,i[B+76>>2]=909522486,i[(a=r=B- -64|0)>>2]=909522486,i[a+4>>2]=909522486,i[B+56>>2]=909522486,i[B+60>>2]=909522486,i[B+48>>2]=909522486,i[B+52>>2]=909522486,i[B+40>>2]=909522486,i[B+44>>2]=909522486,i[B+32>>2]=909522486,i[B+36>>2]=909522486,g){if(g>>>0>=4)for(_=124&g;C[0|(E=(a=B+32|0)+Q|0)]=o[0|E]^o[I+Q|0],C[0|(e=(E=1|Q)+a|0)]=o[0|e]^o[I+E|0],C[0|(e=(E=2|Q)+a|0)]=o[0|e]^o[I+E|0],C[0|(E=(E=a)+(a=3|Q)|0)]=o[0|E]^o[I+a|0],Q=Q+4|0,(0|_)!=(0|(c=c+4|0)););if(c=3&g)for(;C[0|(a=(B+32|0)+Q|0)]=o[0|a]^o[I+Q|0],Q=Q+1|0,(0|c)!=(0|(t=t+1|0)););}if(UA(A,B+32|0,64,0),$I(a=A+104|0),i[B+88>>2]=1549556828,i[B+92>>2]=1549556828,i[B+80>>2]=1549556828,i[B+84>>2]=1549556828,i[B+72>>2]=1549556828,i[B+76>>2]=1549556828,i[r>>2]=1549556828,i[r+4>>2]=1549556828,i[B+56>>2]=1549556828,i[B+60>>2]=1549556828,i[B+48>>2]=1549556828,i[B+52>>2]=1549556828,i[B+40>>2]=1549556828,i[B+44>>2]=1549556828,i[B+32>>2]=1549556828,i[B+36>>2]=1549556828,g){if(t=0,Q=0,g>>>0>=4)for(r=124&g,c=0;C[0|(_=(A=B+32|0)+Q|0)]=o[0|_]^o[I+Q|0],C[0|(E=(_=1|Q)+A|0)]=o[0|E]^o[I+_|0],C[0|(E=(_=2|Q)+A|0)]=o[0|E]^o[I+_|0],C[0|(_=(E=A)+(A=3|Q)|0)]=o[0|_]^o[A+I|0],Q=Q+4|0,(0|r)!=(0|(c=c+4|0)););if(A=3&g)for(;C[0|(g=(B+32|0)+Q|0)]=o[0|g]^o[I+Q|0],Q=Q+1|0,(0|A)!=(0|(t=t+1|0)););}return UA(a,A=B+32|0,64,0),XC(A,64),XC(B,32),s=B+96|0,0}function lA(A,I,g,C,B,o,E){var a=0,_=0,c=0,t=0,r=0,e=0,y=0;if(I-65>>>0<4294967232|E>>>0>64)A=-1;else{e=a=s,s=a=a-512&-64;A:{I:if(!(!(!(C|B)|g)|!A|((_=255&I)-65&255)>>>0<=191|!(!(I=255&E)||o)|I>>>0>=65)){if(I){if(!o)break I;bg(a- -64|0,0,293),i[a+56>>2]=327033209,i[a+60>>2]=1541459225,i[a+48>>2]=-79577749,i[a+52>>2]=528734635,i[a+40>>2]=725511199,i[a+44>>2]=-1694144372,i[a+32>>2]=-1377402159,i[a+36>>2]=1359893119,i[a+24>>2]=1595750129,i[a+28>>2]=-1521486534,i[a+16>>2]=-23791573,i[a+20>>2]=1013904242,i[a+8>>2]=-2067093701,i[a+12>>2]=-1150833019,i[a>>2]=-222443256^(I<<8|_),i[a+4>>2]=I>>>24^1779033703,bg((E=a+384|0)+I|0,0,128-I|0),Ng(E,o,I),Ng(a+96|0,E,128),i[a+352>>2]=128,XC(E,128),I=128}else bg(a- -64|0,0,293),i[a+56>>2]=327033209,i[a+60>>2]=1541459225,i[a+48>>2]=-79577749,i[a+52>>2]=528734635,i[a+40>>2]=725511199,i[a+44>>2]=-1694144372,i[a+32>>2]=-1377402159,i[a+36>>2]=1359893119,i[a+24>>2]=1595750129,i[a+28>>2]=-1521486534,i[a+16>>2]=-23791573,i[a+20>>2]=1013904242,i[a+8>>2]=-2067093701,i[a+12>>2]=-1150833019,i[a>>2]=-222443256^_,i[a+4>>2]=1779033703,I=0;g:if(C|B)for(y=a+224|0,c=a+96|0;;){if(E=I+c|0,!B&C>>>0<=(o=256-I|0)>>>0){Ng(E,g,C),i[a+352>>2]=C+i[a+352>>2];break g}if(Ng(E,g,o),i[a+352>>2]=o+i[a+352>>2],t=I=i[a+68>>2],I=(r=(E=i[a+64>>2])+128|0)>>>0<128?I+1|0:I,i[a+64>>2]=r,i[a+68>>2]=I,I=i[a+76>>2],I=(t=E=-1==(0|t)&E>>>0>4294967167)>>>0>(E=E+i[a+72>>2]|0)>>>0?I+1|0:I,i[a+72>>2]=E,i[a+76>>2]=I,p(a,c),Ng(c,y,128),I=i[a+352>>2]-128|0,i[a+352>>2]=I,g=g+o|0,!((B=B-(C>>>0>>0)|0)|(C=C-o|0)))break}AA(a,A,_),s=e;break A}rC(),Q()}A=0}return A}function uA(A,I){A|=0,I|=0;var g,B=0;s=g=s-128|0,i[g+80>>2]=0,i[g+84>>2]=0,i[g+88>>2]=0,i[g+92>>2]=0,i[g+40>>2]=0,i[g+44>>2]=0,i[g+48>>2]=0,i[g+52>>2]=0,i[g+56>>2]=0,i[g+60>>2]=0,B=i[8799],i[g+104>>2]=i[8798],i[g+108>>2]=B,B=i[8801],i[g+112>>2]=i[8800],i[g+116>>2]=B,B=i[8803],i[g+120>>2]=i[8802],i[g+124>>2]=B,i[g+64>>2]=0,i[g+68>>2]=0,i[g+72>>2]=0,i[g+76>>2]=0,C[g+64|0]=1,i[g+32>>2]=0,i[g+36>>2]=0,B=i[8797],i[g+96>>2]=i[8796],i[g+100>>2]=B,B=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[g+24>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[g+28>>2]=B,B=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[g+16>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[g+20>>2]=B,B=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,i[g+8>>2]=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,i[g+12>>2]=B,B=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[g>>2]=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,i[g+4>>2]=B,Eg(I=g- -64|0,g),S(I),I=i[g+92>>2],B=i[g+88>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[g+84>>2],B=i[g+80>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[g+76>>2],B=i[g+72>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[g+68>>2],B=i[g+64>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,s=g+128|0}function xA(A,I){A|=0,I|=0;var g,B=0;s=g=s-128|0,i[g+80>>2]=0,i[g+84>>2]=0,i[g+88>>2]=0,i[g+92>>2]=0,i[g+40>>2]=0,i[g+44>>2]=0,i[g+48>>2]=0,i[g+52>>2]=0,i[g+56>>2]=0,i[g+60>>2]=0,B=i[8799],i[g+104>>2]=i[8798],i[g+108>>2]=B,B=i[8801],i[g+112>>2]=i[8800],i[g+116>>2]=B,B=i[8803],i[g+120>>2]=i[8802],i[g+124>>2]=B,i[g+64>>2]=0,i[g+68>>2]=0,i[g+72>>2]=0,i[g+76>>2]=0,i[g+32>>2]=0,i[g+36>>2]=0,B=i[8797],i[g+96>>2]=i[8796],i[g+100>>2]=B,B=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[g+16>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[g+20>>2]=B,B=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[g+24>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,i[g+28>>2]=B,B=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24,i[g>>2]=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24,i[g+4>>2]=B,B=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,i[g+8>>2]=o[I+8|0]|o[I+9|0]<<8|o[I+10|0]<<16|o[I+11|0]<<24,i[g+12>>2]=B,Eg(I=g- -64|0,g),S(I),I=i[g+92>>2],B=i[g+88>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[g+84>>2],B=i[g+80>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[g+76>>2],B=i[g+72>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[g+68>>2],B=i[g+64>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,s=g+128|0}function vA(A,I,g,B){var Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0;A:{if((E=i[A+56>>2])|(Q=i[A+60>>2])){if(e=_=16-E|0,t=(_=(0|(a=0-((E>>>0>16)+Q|0)|0))==(0|B)&g>>>0>_>>>0|B>>>0>a>>>0)?e:g,e=_=_?a:B,_|t){if(_=A- -64|0,a=0,E=0,!e&t>>>0>=4|e)for(r=-4&t;Q=a+i[A+56>>2]|0,C[Q+_|0]=o[I+a|0],Q=(y=1|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+y|0],Q=(y=2|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+y|0],Q=(y=3|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+y|0],Q=E,E=(a=a+4|0)>>>0<4?Q+1|0:Q,Q=h,h=Q=(c=c+4|0)>>>0<4?Q+1|0:Q,(0|c)!=(0|r)|(0|e)!=(0|Q););if(h=Q=0,Q|(c=3&t))for(;Q=a+i[A+56>>2]|0,C[Q+_|0]=o[I+a|0],E=(a=a+1|0)?E:E+1|0,Q=D,D=Q=(s=s+1|0)?Q:Q+1|0,(0|c)!=(0|s)|(0|h)!=(0|Q););E=i[A+56>>2],Q=i[A+60>>2]}if(Q=Q+e|0,Q=(E=E+t|0)>>>0>>0?Q+1|0:Q,i[A+56>>2]=E,i[A+60>>2]=Q,!Q&E>>>0<16)break A;rA(A,A- -64|0,16,0),i[A+56>>2]=0,i[A+60>>2]=0,g=(E=g)-t|0,B=B-((E>>>0>>0)+e|0)|0,I=I+t|0}if(!B&g>>>0>=16|B&&(rA(A,I,E=-16&g,B),g&=15,B=0,I=I+E|0),g|B){if(_=A- -64|0,s=0,D=0,a=0,E=0,!B&g>>>0>=4|B)for(t=12&g,e=0,c=0;Q=a+i[A+56>>2]|0,C[Q+_|0]=o[I+a|0],Q=(r=1|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+r|0],Q=(r=2|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+r|0],Q=(r=3|a)+i[A+56>>2]|0,C[Q+_|0]=o[I+r|0],E=(a=a+4|0)>>>0<4?E+1|0:E,Q=h,h=Q=(c=c+4|0)>>>0<4?Q+1|0:Q,(0|t)!=(0|c)|(0|e)!=(0|Q););if(h=Q=0,Q|(c=3&g))for(;Q=a+i[A+56>>2]|0,C[Q+_|0]=o[I+a|0],E=(a=a+1|0)?E:E+1|0,Q=D,D=Q=(s=s+1|0)?Q:Q+1|0,(0|c)!=(0|s)|(0|h)!=(0|Q););E=B+i[A+60>>2]|0,E=(I=g+i[A+56>>2]|0)>>>0>>0?E+1|0:E,i[A+56>>2]=I,i[A+60>>2]=E}}}function RA(A,I,g){var C,B=0,Q=0,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0;s=i[I+4>>2],B=i[A+4>>2],h=i[I+8>>2],Q=i[A+8>>2],D=i[I+12>>2],o=i[A+12>>2],f=i[I+16>>2],E=i[A+16>>2],p=i[I+20>>2],a=i[A+20>>2],e=i[I+24>>2],_=i[A+24>>2],w=i[I+28>>2],c=i[A+28>>2],n=i[I+32>>2],t=i[A+32>>2],k=i[I+36>>2],r=i[A+36>>2],g=0-g|0,y=i[A>>2],i[A>>2]=g&(y^i[I>>2])^y,i[A+36>>2]=r^g&(r^k),i[A+32>>2]=t^g&(t^n),i[A+28>>2]=c^g&(c^w),i[A+24>>2]=_^g&(_^e),i[A+20>>2]=a^g&(a^p),i[A+16>>2]=E^g&(E^f),i[A+12>>2]=o^g&(o^D),i[A+8>>2]=Q^g&(Q^h),i[A+4>>2]=B^g&(B^s),B=i[A+44>>2],s=i[I+44>>2],Q=i[A+48>>2],h=i[I+48>>2],o=i[A+52>>2],D=i[I+52>>2],E=i[A+56>>2],f=i[I+56>>2],a=i[A+60>>2],p=i[I+60>>2],_=i[(e=A- -64|0)>>2],w=i[I- -64>>2],c=i[A+68>>2],n=i[I+68>>2],t=i[A+72>>2],k=i[I+72>>2],r=i[A+40>>2],y=i[I+40>>2],C=i[A+76>>2],i[A+76>>2]=C^g&(i[I+76>>2]^C),i[A+72>>2]=t^g&(t^k),i[A+68>>2]=c^g&(c^n),i[e>>2]=_^g&(_^w),i[A+60>>2]=a^g&(a^p),i[A+56>>2]=E^g&(E^f),i[A+52>>2]=o^g&(o^D),i[A+48>>2]=Q^g&(Q^h),i[A+44>>2]=B^g&(B^s),i[A+40>>2]=r^g&(r^y),B=i[A+84>>2],s=i[I+84>>2],Q=i[A+88>>2],h=i[I+88>>2],o=i[A+92>>2],D=i[I+92>>2],E=i[A+96>>2],f=i[I+96>>2],a=i[A+100>>2],p=i[I+100>>2],_=i[A+104>>2],e=i[I+104>>2],c=i[A+108>>2],w=i[I+108>>2],t=i[A+112>>2],n=i[I+112>>2],r=i[A+80>>2],k=i[I+80>>2],y=i[I+116>>2],I=i[A+116>>2],i[A+116>>2]=g&(y^I)^I,i[A+112>>2]=t^g&(t^n),i[A+108>>2]=c^g&(c^w),i[A+104>>2]=_^g&(_^e),i[A+100>>2]=a^g&(a^p),i[A+96>>2]=E^g&(E^f),i[A+92>>2]=o^g&(o^D),i[A+88>>2]=Q^g&(Q^h),i[A+84>>2]=B^g&(B^s),i[A+80>>2]=r^g&(r^k)}function LA(A,I){var g,C,B=0;for(s=g=s-192|0,R(C=g+144|0,I),R(B=g+96|0,C),R(B,B),b(B,I,B),b(C,C,B),R(I=g+48|0,C),b(B,B,I),R(I,B),R(I,I),R(I,I),R(I,I),R(I,I),b(B,I,B),R(I,B),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),b(I,I,B),R(g,I),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),b(I,g,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),b(B,I,B),R(I,B),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),b(I,I,B),R(g,I),I=1;R(g,g),100!=(0|(I=I+1|0)););b(I=g+48|0,g,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),R(I,I),b(B=g+96|0,I,B),R(B,B),R(B,B),R(B,B),R(B,B),R(B,B),b(A,B,g+144|0),s=g+192|0}function PA(A,I){var g,C=0,B=0;for(s=g=s-144|0,R(B=g+96|0,I),R(C=g+48|0,B),R(C,C),b(C,I,C),b(B,B,C),R(B,B),b(B,C,B),R(C,B),R(C,C),R(C,C),R(C,C),R(C,C),b(B,C,B),R(C,B),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),b(C,C,B),R(g,C),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),R(g,g),b(C,g,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),b(B,C,B),R(C,B),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),b(C,C,B),R(g,C),C=1;R(g,g),100!=(0|(C=C+1|0)););b(C=g+48|0,g,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),R(C,C),b(B=g+96|0,C,B),R(B,B),R(B,B),b(A,B,I),s=g+144|0}function qA(A,I){var g,B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S=0,N=0,G=0,M=0;s=g=s-320|0,fA(B=A+40|0,I),i[A+84>>2]=0,i[A+88>>2]=0,i[A+80>>2]=1,i[A+92>>2]=0,i[A+96>>2]=0,i[A+100>>2]=0,i[A+104>>2]=0,i[A+108>>2]=0,i[A+112>>2]=0,i[A+116>>2]=0,R(G=g+240|0,B),b(N=g+192|0,G,1584),M=-1,Q=i[g+240>>2]-1|0,i[g+240>>2]=Q,i[g+192>>2]=i[g+192>>2]+1,E=i[g+244>>2],a=i[g+248>>2],_=i[g+252>>2],c=i[g+256>>2],t=i[g+260>>2],r=i[g+264>>2],e=i[g+268>>2],y=i[g+272>>2],h=i[g+276>>2],R(S=g+144|0,N),b(S,S,N),R(A,S),b(A,A,N),b(A,A,G),PA(A,A),b(A,A,S),b(A,A,G),R(S=g+96|0,A),b(S,S,N),N=i[g+132>>2],i[g+84>>2]=N-h,S=i[g+128>>2],i[g+80>>2]=S-y,G=i[g+124>>2],i[g+76>>2]=G-e,D=i[g+120>>2],i[g+72>>2]=D-r,f=i[g+116>>2],i[g+68>>2]=f-t,p=i[g+112>>2],i[g+64>>2]=p-c,w=i[g+108>>2],i[g+60>>2]=w-_,n=i[g+104>>2],i[g+56>>2]=n-a,k=i[g+100>>2],i[g+52>>2]=k-E,F=i[g+96>>2],i[g+48>>2]=F-Q,QI(g,g+48|0);A:{if(!GI(g,32)){if(i[g+36>>2]=N+h,i[g+32>>2]=S+y,i[g+28>>2]=G+e,i[g+24>>2]=r+D,i[g+20>>2]=t+f,i[g+16>>2]=c+p,i[g+12>>2]=_+w,i[g+8>>2]=a+n,i[g+4>>2]=E+k,i[g>>2]=Q+F,QI(N=g+288|0,g),!GI(N,32))break A;b(A,A,1632)}QI(g+288|0,A),(1&C[g+288|0])==(o[I+31|0]>>>7|0)&&(i[A>>2]=0-i[A>>2],i[A+36>>2]=0-i[A+36>>2],i[A+32>>2]=0-i[A+32>>2],i[A+28>>2]=0-i[A+28>>2],i[A+24>>2]=0-i[A+24>>2],i[A+20>>2]=0-i[A+20>>2],i[A+16>>2]=0-i[A+16>>2],i[A+12>>2]=0-i[A+12>>2],i[A+8>>2]=0-i[A+8>>2],i[A+4>>2]=0-i[A+4>>2]),b(A+120|0,A,B),M=0}return s=g+320|0,M}function zA(A,I,g){var C,B,Q,o,E,_,c,t,r=0;s=C=s-128|0,i[A>>2]=1,i[A+4>>2]=0,i[A+8>>2]=0,i[A+12>>2]=0,i[A+16>>2]=0,i[A+20>>2]=0,i[A+24>>2]=0,i[A+28>>2]=0,i[A+32>>2]=0,i[A+36>>2]=0,i[A+40>>2]=1,bg(A+44|0,0,76),RA(A,I=a(I,960)+2992|0,(255&(1^(r=g-((g>>31&g)<<1)|0)))-1>>>31|0),RA(A,I+120|0,(255&(2^r))-1>>>31|0),RA(A,I+240|0,(255&(3^r))-1>>>31|0),RA(A,I+360|0,(255&(4^r))-1>>>31|0),RA(A,I+480|0,(255&(5^r))-1>>>31|0),RA(A,I+600|0,(255&(6^r))-1>>>31|0),RA(A,I+720|0,(255&(7^r))-1>>>31|0),RA(A,I+840|0,(255&(8^r))-1>>>31|0),I=i[A+76>>2],i[C+40>>2]=i[A+72>>2],i[C+44>>2]=I,r=i[4+(I=A- -64|0)>>2],i[C+32>>2]=i[I>>2],i[C+36>>2]=r,I=i[A+60>>2],i[C+24>>2]=i[A+56>>2],i[C+28>>2]=I,I=i[A+52>>2],i[C+16>>2]=i[A+48>>2],i[C+20>>2]=I,I=i[A+44>>2],i[C+8>>2]=i[A+40>>2],i[C+12>>2]=I,I=i[A+12>>2],i[C+56>>2]=i[A+8>>2],i[C+60>>2]=I,r=i[A+20>>2],i[(I=C- -64|0)>>2]=i[A+16>>2],i[I+4>>2]=r,I=i[A+28>>2],i[C+72>>2]=i[A+24>>2],i[C+76>>2]=I,I=i[A+36>>2],i[C+80>>2]=i[A+32>>2],i[C+84>>2]=I,I=i[A+4>>2],i[C+48>>2]=i[A>>2],i[C+52>>2]=I,I=i[A+84>>2],r=i[A+88>>2],B=i[A+92>>2],Q=i[A+96>>2],o=i[A+100>>2],E=i[A+104>>2],_=i[A+108>>2],c=i[A+112>>2],t=i[A+80>>2],i[C+124>>2]=0-i[A+116>>2],i[C+120>>2]=0-c,i[C+116>>2]=0-_,i[C+112>>2]=0-E,i[C+108>>2]=0-o,i[C+104>>2]=0-Q,i[C+100>>2]=0-B,i[C+96>>2]=0-r,i[C+92>>2]=0-I,i[C+88>>2]=0-t,RA(A,C+8|0,(128&g)>>>7|0),s=C+128|0}function jA(A){var I,g,C,B,Q,o,E,a,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0;return s=I=s-320|0,R(c=I+240|0,A),R(t=I+192|0,A+40|0),R(_=I+144|0,A+80|0),A=i[I+240>>2],r=i[I+192>>2],e=i[I+244>>2],y=i[I+196>>2],h=i[I+248>>2],D=i[I+200>>2],f=i[I+252>>2],p=i[I+204>>2],w=i[I+256>>2],n=i[I+208>>2],k=i[I+260>>2],F=i[I+212>>2],S=i[I+264>>2],N=i[I+216>>2],G=i[I+268>>2],M=i[I+220>>2],K=i[I+272>>2],U=i[I+224>>2],i[I+84>>2]=i[I+228>>2]-i[I+276>>2],i[I+80>>2]=U-K,i[I+76>>2]=M-G,i[I+72>>2]=N-S,i[I+68>>2]=F-k,i[I+64>>2]=n-w,i[I+60>>2]=p-f,i[I+56>>2]=D-h,i[I+52>>2]=y-e,i[I+48>>2]=r-A,b(A=I+48|0,A,_),b(I,c,t),b(I,I,1584),R(I+96|0,_),_=i[I+48>>2],c=i[I+96>>2],t=i[I>>2],r=i[I+52>>2],e=i[I+100>>2],y=i[I+4>>2],h=i[I+56>>2],D=i[I+104>>2],f=i[I+8>>2],p=i[I+60>>2],w=i[I+108>>2],n=i[I+12>>2],k=i[I+64>>2],F=i[I+112>>2],S=i[I+16>>2],N=i[I+68>>2],G=i[I+116>>2],M=i[I+20>>2],K=i[I+72>>2],U=i[I+120>>2],g=i[I+24>>2],C=i[I+76>>2],B=i[I+124>>2],Q=i[I+28>>2],o=i[I+80>>2],E=i[I+128>>2],a=i[I+32>>2],i[I+84>>2]=i[I+84>>2]-(i[I+132>>2]+i[I+36>>2]|0),i[I+80>>2]=o-(E+a|0),i[I+76>>2]=C-(B+Q|0),i[I+72>>2]=K-(U+g|0),i[I+68>>2]=N-(G+M|0),i[I+64>>2]=k-(F+S|0),i[I+60>>2]=p-(w+n|0),i[I+56>>2]=h-(D+f|0),i[I+52>>2]=r-(e+y|0),i[I+48>>2]=_-(c+t|0),QI(_=I+288|0,A),A=GI(_,32),s=I+320|0,A}function XA(A,I,g,B,i){A|=0,I|=0,g|=0,B|=0;var E=0,_=0,c=0,t=0,e=0,y=0,s=0;A:{I:{g:{C:{B:{Q:{i:{if(1==(-7&(i|=0))&&(c=(E=(B>>>0)/3|0)<<2,(E=a(E,-3)+B|0)&&(c=2&i?2+((E>>>1|0)+c|0)|0:c+4|0),!(I>>>0<=c>>>0))){if(!(i>>>0>=4)){if(!B){i=0;break C}E=0,i=0;break i}if(!B){i=0;break C}for(E=0,i=0;;){for(e=o[g+t|0]|e<<8,E|=8;y=65510+(_=e>>>(E=E-6|0)&63)>>>8|0,s=_+65484>>>8|0,C[A+i|0]=~(1+(16321^_))>>>8&45|_+252&_+65474>>>8&~s|~(_+32705)>>>8&95|y&_+65|s&_+71&~y,i=i+1|0,E>>>0>5;);if((0|(t=t+1|0))==(0|B))break}if(!E)break B;t=45,_=32705,B=95;break Q}rC(),Q()}for(;;){for(e=o[g+t|0]|e<<8,E|=8;y=65510+(_=e>>>(E=E-6|0)&63)>>>8|0,s=_+65484>>>8|0,C[A+i|0]=~(1+(16321^_))>>>8&43|_+252&_+65474>>>8&~s|~(_+16321)>>>8&47|y&_+65|s&_+71&~y,i=i+1|0,E>>>0>5;);if((0|(t=t+1|0))==(0|B))break}if(!E)break B;t=43,_=16321,B=47}_=~((g=e<<6-E&63)+_)>>>8&B|(E=g+65510>>>8|0)&g+65,B=g+65484>>>8|0,C[A+i|0]=~(1+(16321^g))>>>8&t|_|g+252&g+65474>>>8&~B|B&g+71&~E,i=i+1|0}if(i>>>0>c>>>0)break g}if(i>>>0>>0)break I;c=i;break A}r(1104,1218,231,1503),Q()}bg(A+i|0,61,c-i|0)}return bg(A+c|0,0,(I>>>0>(g=c+1|0)>>>0?I:g)-c|0),0|A}function OA(A,I,g){var C,B,Q,E=0,_=0,c=0,t=0,r=0;s=C=s-16|0,B=i[A+20>>2],i[A+20>>2]=0,Q=i[A+4>>2],i[A+4>>2]=0,c=-26;A:{I:{g:{C:switch(g-1|0){case 1:if(gg(I,1182,9))break I;I=I+9|0;break g;case 0:break C;default:break A}if(gg(I,1173,8))break I;I=I+8|0}if(36!=o[0|I]|118!=o[I+1|0]||(E=61==o[I+2|0]),E&&!(((t=o[0|(g=I+3|0)])-58&255)>>>0<246)){for(r=E?g:I,I=0,E=t;;){if(_=g,I>>>0>429496729)break I;if((g=(255&E)-48|0)>>>0>~(I=a(I,10))>>>0)break I;if(I=I+g|0,!(((E=o[0|(g=_+1|0)])-58&255)>>>0>245))break}if(!(48==(0|t)&(0|_)!=(0|r)|(0|g)==(0|r))){if(19!=(0|I))break A;if(!(36!=(255&E)|109!=o[_+2|0]|61!=o[_+3|0])&&(g=lI(_+4|0,I=C+12|0))&&(i[A+44>>2]=i[C+12>>2],!(44!=o[0|g]|116!=o[g+1|0]|61!=o[g+2|0])&&(g=lI(g+3|0,I))&&(i[A+40>>2]=i[C+12>>2],!(44!=o[0|g]|112!=o[g+1|0]|61!=o[g+2|0])&&(g=lI(g+3|0,I))&&(E=i[C+12>>2],i[A+48>>2]=E,i[A+52>>2]=E,36==o[0|g]&&(i[C+12>>2]=B,!pA(_=i[A+16>>2],B,E=g=g+1|0,t=RI(g),0,I,g=C+8|0,3)&&(i[A+20>>2]=i[C+12>>2],E=i[C+8>>2],36==o[0|E]&&(i[C+12>>2]=Q,E=E+1|0,!pA(i[A>>2],Q,E,RI(E),0,I,g,3)))))))){if(i[A+4>>2]=i[C+12>>2],I=i[C+8>>2],c=nI(A))break A;c=o[0|I]?-32:0;break A}}}}c=-32}return s=C+16|0,c}function WA(A,I,g,B){var Q=0,i=0,E=0,a=0,_=0,c=0,t=0;if(g|B)A:for(t=A+224|0,_=A+96|0,i=o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24;;){if(Q=i+_|0,!B&g>>>0<=(E=256-i|0)>>>0){Ng(Q,I,g),I=g+(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)|0,C[A+352|0]=I,C[A+353|0]=I>>>8,C[A+354|0]=I>>>16,C[A+355|0]=I>>>24;break A}if(Ng(Q,I,E),Q=(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)+E|0,C[A+352|0]=Q,C[A+353|0]=Q>>>8,C[A+354|0]=Q>>>16,C[A+355|0]=Q>>>24,c=i=o[A+68|0]|o[A+69|0]<<8|o[A+70|0]<<16|o[A+71|0]<<24,i=(a=128+(Q=o[A+64|0]|o[A+65|0]<<8|o[A+66|0]<<16|o[A+67|0]<<24)|0)>>>0<128?i+1|0:i,C[A+64|0]=a,C[A+65|0]=a>>>8,C[A+66|0]=a>>>16,C[A+67|0]=a>>>24,C[A+68|0]=i,C[A+69|0]=i>>>8,C[A+70|0]=i>>>16,C[A+71|0]=i>>>24,i=o[A+76|0]|o[A+77|0]<<8|o[A+78|0]<<16|o[A+79|0]<<24,i=(c=Q=-1==(0|c)&Q>>>0>4294967167)>>>0>(Q=Q+(o[A+72|0]|o[A+73|0]<<8|o[A+74|0]<<16|o[A+75|0]<<24)|0)>>>0?i+1|0:i,C[A+72|0]=Q,C[A+73|0]=Q>>>8,C[A+74|0]=Q>>>16,C[A+75|0]=Q>>>24,C[A+76|0]=i,C[A+77|0]=i>>>8,C[A+78|0]=i>>>16,C[A+79|0]=i>>>24,p(A,_),Ng(_,t,128),Q=i=(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)-128|0,C[A+352|0]=Q,C[A+353|0]=Q>>>8,C[A+354|0]=Q>>>16,C[A+355|0]=Q>>>24,I=I+E|0,!((B=B-(g>>>0>>0)|0)|(g=g-E|0)))break}return 0}function VA(A){var I=0,g=0,C=0,B=0,Q=0,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0,n=0;for(g=i[A+60>>2],h=i[A+56>>2],s=i[A+52>>2],e=i[A+48>>2],I=i[A+44>>2],C=i[A+40>>2],D=i[A+36>>2],r=i[A+32>>2],B=i[A+28>>2],Q=i[A+24>>2],o=i[A+20>>2],E=i[A+16>>2],a=i[A+12>>2],_=i[A+8>>2],c=i[A+4>>2],t=i[A>>2];y=Lg(o+c|0,7)^D,f=Lg(y+o|0,9)^s,E=Lg(t+e|0,7)^E,p=Lg(E+t|0,9)^r,w=Lg(p+E|0,13)^e,a=Lg(I+g|0,7)^a,B=Lg(a+g|0,9)^B,r=Lg(B+a|0,13)^I,g=Lg(B+r|0,18)^g,I=Lg(C+Q|0,7)^h,e=w^Lg(g+I|0,7),s=f^Lg(e+g|0,9),h=Lg(e+s|0,13)^I,g=Lg(s+h|0,18)^g,_=Lg(I+C|0,9)^_,Q=Lg(_+I|0,13)^Q,C=Lg(Q+_|0,18)^C,I=Lg(C+y|0,7)^r,r=Lg(I+C|0,9)^p,D=Lg(I+r|0,13)^y,C=Lg(r+D|0,18)^C,c=Lg(y+f|0,13)^c,o=Lg(c+f|0,18)^o,Q=Lg(o+E|0,7)^Q,B=Lg(Q+o|0,9)^B,E=Lg(B+Q|0,13)^E,o=Lg(E+B|0,18)^o,t=Lg(p+w|0,18)^t,c=Lg(t+a|0,7)^c,_=Lg(c+t|0,9)^_,a=Lg(_+c|0,13)^a,t=Lg(a+_|0,18)^t,y=n>>>0<6,n=n+2|0,y;);i[A>>2]=i[A>>2]+t,i[A+4>>2]=i[A+4>>2]+c,i[A+8>>2]=i[A+8>>2]+_,i[A+12>>2]=i[A+12>>2]+a,i[A+16>>2]=i[A+16>>2]+E,i[A+20>>2]=i[A+20>>2]+o,i[A+24>>2]=i[A+24>>2]+Q,i[A+28>>2]=i[A+28>>2]+B,i[A+32>>2]=i[A+32>>2]+r,i[A+36>>2]=i[A+36>>2]+D,i[A+40>>2]=i[A+40>>2]+C,i[A+44>>2]=i[A+44>>2]+I,i[A+48>>2]=i[A+48>>2]+e,i[A+52>>2]=i[A+52>>2]+s,i[A+56>>2]=i[A+56>>2]+h,i[A+60>>2]=i[A+60>>2]+g}function ZA(A,I,g,B){var Q,i=0;return s=Q=s-320|0,i=-1,NI(g)&&(KI(g)||MA(Q,g)||gA(Q)&&(C[0|A]=o[0|I],C[A+1|0]=o[I+1|0],C[A+2|0]=o[I+2|0],C[A+3|0]=o[I+3|0],C[A+4|0]=o[I+4|0],C[A+5|0]=o[I+5|0],C[A+6|0]=o[I+6|0],C[A+7|0]=o[I+7|0],C[A+8|0]=o[I+8|0],C[A+9|0]=o[I+9|0],C[A+10|0]=o[I+10|0],C[A+11|0]=o[I+11|0],C[A+12|0]=o[I+12|0],C[A+13|0]=o[I+13|0],C[A+14|0]=o[I+14|0],C[A+15|0]=o[I+15|0],C[A+16|0]=o[I+16|0],C[A+17|0]=o[I+17|0],C[A+18|0]=o[I+18|0],C[A+19|0]=o[I+19|0],C[A+20|0]=o[I+20|0],C[A+21|0]=o[I+21|0],C[A+22|0]=o[I+22|0],C[A+23|0]=o[I+23|0],C[A+24|0]=o[I+24|0],C[A+25|0]=o[I+25|0],C[A+26|0]=o[I+26|0],C[A+27|0]=o[I+27|0],C[A+28|0]=o[I+28|0],C[A+29|0]=o[I+29|0],C[A+30|0]=o[I+30|0],g=o[I+31|0],B&&(C[0|A]=248&o[0|A],g|=64),C[A+31|0]=127&g,u(g=Q+160|0,A,Q),tg(A,g),(127&o[A+31|0]|o[A+30|0]|o[A+29|0]|o[A+28|0]|o[A+27|0]|o[A+26|0]|o[A+25|0]|o[A+24|0]|o[A+23|0]|o[A+22|0]|o[A+21|0]|o[A+20|0]|o[A+19|0]|o[A+18|0]|o[A+17|0]|o[A+16|0]|o[A+15|0]|o[A+14|0]|o[A+13|0]|o[A+12|0]|o[A+11|0]|o[A+10|0]|o[A+9|0]|o[A+8|0]|o[A+7|0]|o[A+6|0]|o[A+5|0]|o[A+4|0]|o[A+3|0]|o[A+2|0]|o[A+1|0]|1^o[0|A])-1&256||(i=GI(I,32)?-1:0))),s=Q+320|0,i}function TA(A,I,g,B,Q){var E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0;if(s=E=s-48|0,Q&&ag(Q,102),!(36!=o[0|B]|55!=o[B+1|0]|36!=o[B+2|0])&&(r=uI(o[B+3|0]))&&(a=PI(E+12|0,B+4|0))&&(t=PI(E+8|0,a))){for(_=RI(t)+1|0;a=0,_&&36!=o[0|(a=t+(_=_-1|0)|0)];);if(c=a-t|0,a||(c=RI(t)),!((c=45+(_=(a=c)+(t-B|0)|0)|0)>>>0>102|a>>>0>c>>>0||(c=A,y=I,h=g,A=31&(r=r-1024|0),(63&r)>>>0>=32?(I=1<>>32-A,_A(c,y,h,t,a,g,I,i[E+12>>2],i[E+8>>2],E+16|0,32)))){for(a=Ng(Q,B,_),C[0|(A=a+_|0)]=36,e=(c=a+102|0)-(Q=A+1|0)|0,g=0;;){A:if((I=g)>>>0>31)B=Q;else if(A=Q,g=(_=I+1|0)+(y=(g=31-I|0)>>>0>=2?2:g)|0,B=0,t=0,Q=o[(r=E+16|0)+I|0],y&&(Q=o[_+r|0]<<8|Q,(0|(I=I+2|0))!=(0|g)&&(t=1,Q=o[I+r|0]<<16|Q)),e&&(C[0|A]=o[1024+(63&Q)|0],1!=(0|e))){if(C[A+1|0]=o[1024+(Q>>>6&63)|0],y=A+e|0,I=A+2|0,(0|g)!=(0|_)){if(2==(0|e))break A;if(C[A+2|0]=o[1024+(Q>>>12&63)|0],I=A+3|0,t){if(3==(0|e))break A;C[A+3|0]=o[1024+(Q>>>18|0)|0],I=A+4|0}}if(e=y-(Q=I)|0,Q)continue}break}XC(E+16|0,32),e=0,!B|B>>>0>=c>>>0||(C[0|B]=0,e=a)}}return s=E+48|0,e}function $A(A,I){var g,C=0,B=0,Q=0,o=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0,p=0,w=0;C=i[I+4>>2],Q=i[I+44>>2],o=i[I+8>>2],E=i[I+48>>2],a=i[I+12>>2],_=i[I+52>>2],c=i[I+16>>2],t=i[I+56>>2],r=i[I+20>>2],e=i[I+60>>2],y=i[I+24>>2],s=i[(B=I- -64|0)>>2],h=i[I+28>>2],D=i[I+68>>2],f=i[I+32>>2],p=i[I+72>>2],w=i[I+36>>2],g=i[I+76>>2],i[A>>2]=i[I>>2]+i[I+40>>2],i[A+36>>2]=w+g,i[A+32>>2]=f+p,i[A+28>>2]=h+D,i[A+24>>2]=y+s,i[A+20>>2]=r+e,i[A+16>>2]=c+t,i[A+12>>2]=a+_,i[A+8>>2]=o+E,i[A+4>>2]=C+Q,C=i[I+4>>2],Q=i[I+44>>2],o=i[I+8>>2],E=i[I+48>>2],a=i[I+12>>2],_=i[I+52>>2],c=i[I+16>>2],t=i[I+56>>2],r=i[I+20>>2],e=i[I+60>>2],y=i[I+24>>2],B=i[B>>2],s=i[I+28>>2],h=i[I+68>>2],D=i[I+32>>2],f=i[I+72>>2],p=i[I>>2],w=i[I+40>>2],i[A+76>>2]=i[I+76>>2]-i[I+36>>2],i[A+72>>2]=f-D,i[A+68>>2]=h-s,i[A- -64>>2]=B-y,i[A+60>>2]=e-r,i[A+56>>2]=t-c,i[A+52>>2]=_-a,i[A+48>>2]=E-o,i[A+44>>2]=Q-C,i[A+40>>2]=w-p,C=i[I+84>>2],i[A+80>>2]=i[I+80>>2],i[A+84>>2]=C,C=i[I+92>>2],i[A+88>>2]=i[I+88>>2],i[A+92>>2]=C,C=i[I+100>>2],i[A+96>>2]=i[I+96>>2],i[A+100>>2]=C,C=i[I+108>>2],i[A+104>>2]=i[I+104>>2],i[A+108>>2]=C,C=i[I+116>>2],i[A+112>>2]=i[I+112>>2],i[A+116>>2]=C,b(A+120|0,I+120|0,1680)}function AI(A,I,g){var C,B,Q,o,E,a,_,c,t,r,e,y,h=0,D=0,f=0,p=0,w=0;h=i[I+12>>2],D=i[I+8>>2],f=i[I+4>>2],C=s+-64&-64,I=i[I>>2],i[C>>2]=i[35744+((255&I)<<2)>>2],i[C+4>>2]=i[35744+(f>>>6&1020)>>2],i[C+8>>2]=i[35744+(D>>>14&1020)>>2],i[C+12>>2]=i[35744+(h>>>22&1020)>>2],i[C+16>>2]=i[35744+((255&f)<<2)>>2],i[C+20>>2]=i[35744+(D>>>6&1020)>>2],i[C+24>>2]=i[35744+(h>>>14&1020)>>2],i[C+28>>2]=i[35744+(I>>>22&1020)>>2],i[C+32>>2]=i[35744+((255&D)<<2)>>2],i[C+36>>2]=i[35744+(h>>>6&1020)>>2],i[C+40>>2]=i[35744+(I>>>14&1020)>>2],i[C+44>>2]=i[35744+(f>>>22&1020)>>2],i[C+48>>2]=i[35744+((255&h)<<2)>>2],i[C+52>>2]=i[35744+(I>>>6&1020)>>2],i[C+56>>2]=i[35744+(f>>>14&1020)>>2],i[C+60>>2]=i[35744+(D>>>22&1020)>>2],I=i[C+12>>2],h=i[C>>2],D=i[C+4>>2],f=i[C+8>>2],B=i[C+28>>2],Q=i[C+16>>2],o=i[C+20>>2],E=i[C+24>>2],a=i[C+44>>2],_=i[C+32>>2],c=i[C+36>>2],t=i[C+40>>2],r=i[g>>2],e=i[g+4>>2],y=i[g+8>>2],p=A,w=i[g+12>>2]^i[C+48>>2]^Lg(i[C+52>>2],8)^Lg(i[C+56>>2],16)^Lg(i[C+60>>2],24),i[p+12>>2]=w,p=A,w=Lg(c,8)^_^Lg(t,16)^Lg(a,24)^y,i[p+8>>2]=w,p=A,w=Lg(o,8)^Q^Lg(E,16)^Lg(B,24)^e,i[p+4>>2]=w,p=A,w=Lg(D,8)^h^Lg(f,16)^Lg(I,24)^r,i[p>>2]=w}function II(A,I,g){var B,Q=0;return s=B=s-160|0,C[0|A]=o[0|I],C[A+1|0]=o[I+1|0],C[A+2|0]=o[I+2|0],C[A+3|0]=o[I+3|0],C[A+4|0]=o[I+4|0],C[A+5|0]=o[I+5|0],C[A+6|0]=o[I+6|0],C[A+7|0]=o[I+7|0],C[A+8|0]=o[I+8|0],C[A+9|0]=o[I+9|0],C[A+10|0]=o[I+10|0],C[A+11|0]=o[I+11|0],C[A+12|0]=o[I+12|0],C[A+13|0]=o[I+13|0],C[A+14|0]=o[I+14|0],C[A+15|0]=o[I+15|0],C[A+16|0]=o[I+16|0],C[A+17|0]=o[I+17|0],C[A+18|0]=o[I+18|0],C[A+19|0]=o[I+19|0],C[A+20|0]=o[I+20|0],C[A+21|0]=o[I+21|0],C[A+22|0]=o[I+22|0],C[A+23|0]=o[I+23|0],C[A+24|0]=o[I+24|0],C[A+25|0]=o[I+25|0],C[A+26|0]=o[I+26|0],C[A+27|0]=o[I+27|0],C[A+28|0]=o[I+28|0],C[A+29|0]=o[I+29|0],C[A+30|0]=o[I+30|0],Q=o[I+31|0],g&&(C[0|A]=248&o[0|A],Q|=64),C[A+31|0]=127&Q,nA(B,A),tg(A,B),g=-1,(127&o[A+31|0]|o[A+30|0]|o[A+29|0]|o[A+28|0]|o[A+27|0]|o[A+26|0]|o[A+25|0]|o[A+24|0]|o[A+23|0]|o[A+22|0]|o[A+21|0]|o[A+20|0]|o[A+19|0]|o[A+18|0]|o[A+17|0]|o[A+16|0]|o[A+15|0]|o[A+14|0]|o[A+13|0]|o[A+12|0]|o[A+11|0]|o[A+10|0]|o[A+9|0]|o[A+8|0]|o[A+7|0]|o[A+6|0]|o[A+5|0]|o[A+4|0]|o[A+3|0]|o[A+2|0]|o[A+1|0]|1^o[0|A])-1&256||(g=GI(I,32)?-1:0),s=B+160|0,g}function gI(A,I){var g,B,Q,o,E,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,f=0;(_=i[A+56>>2])|(c=i[A+60>>2])&&(C[(r=A- -64|0)+_|0]=1,!((f=_+1|0)?c:c+1|0)&f>>>0<=15&&bg(65+(A+_|0)|0,0,15-_|0),C[A+80|0]=1,rA(A,r,16,0)),f=i[A+52>>2],h=i[A+48>>2],r=i[A+44>>2],_=i[A+24>>2],e=i[A+28>>2]+(_>>>26|0)|0,t=i[A+32>>2]+(e>>>26|0)|0,g=i[A+36>>2]+(t>>>26|0)|0,c=(s=(_=(_=(67108863&_)+((y=i[A+20>>2]+a(g>>>26|0,5)|0)>>>26|0)|0)&(e=(t=(E=(67108863&g)+((o=(B=67108863&t)+((Q=(D=67108863&e)+((y=_+((c=5+(s=67108863&y)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)-67108864|0)>>31)|y&(t=67108863&(y=(t>>>31|0)-1|0)))<<26|c&t|e&s)+i[A+40>>2]|0,C[0|I]=c,C[I+1|0]=c>>>8,C[I+2|0]=c>>>16,C[I+3|0]=c>>>24,s=c>>>0>>0,c=0,c=(_=(D=e&D|t&Q)<<20|_>>>6)>>>0>(_=_+r|0)>>>0?1:c,c=(r=_)>>>0>(_=_+s|0)>>>0?c+1|0:c,C[I+4|0]=_,C[I+5|0]=_>>>8,C[I+6|0]=_>>>16,C[I+7|0]=_>>>24,_=0,r=(r=(t=e&B|t&o)<<14|D>>>12)>>>0>(h=r+h|0)>>>0?1:_,_=h,h=c,_=_+c|0,c=r,c=_>>>0>>0?c+1|0:c,C[I+8|0]=_,C[I+9|0]=_>>>8,C[I+10|0]=_>>>16,C[I+11|0]=_>>>24,c=(_=(_=(y&E|e&g)<<8|t>>>18)+f|0)+c|0,C[I+12|0]=c,C[I+13|0]=c>>>8,C[I+14|0]=c>>>16,C[I+15|0]=c>>>24,XC(A,88)}function CI(A,I,g){A|=0,I|=0,g|=0;var B,Q=0;return s=B=s-16|0,C[B+15|0]=0,Q=-1,0|pB[i[8930]](A,I,g)||(C[B+15|0]=o[0|A]|o[B+15|0],C[B+15|0]=o[A+1|0]|o[B+15|0],C[B+15|0]=o[A+2|0]|o[B+15|0],C[B+15|0]=o[A+3|0]|o[B+15|0],C[B+15|0]=o[A+4|0]|o[B+15|0],C[B+15|0]=o[A+5|0]|o[B+15|0],C[B+15|0]=o[A+6|0]|o[B+15|0],C[B+15|0]=o[A+7|0]|o[B+15|0],C[B+15|0]=o[A+8|0]|o[B+15|0],C[B+15|0]=o[A+9|0]|o[B+15|0],C[B+15|0]=o[A+10|0]|o[B+15|0],C[B+15|0]=o[A+11|0]|o[B+15|0],C[B+15|0]=o[A+12|0]|o[B+15|0],C[B+15|0]=o[A+13|0]|o[B+15|0],C[B+15|0]=o[A+14|0]|o[B+15|0],C[B+15|0]=o[A+15|0]|o[B+15|0],C[B+15|0]=o[A+16|0]|o[B+15|0],C[B+15|0]=o[A+17|0]|o[B+15|0],C[B+15|0]=o[A+18|0]|o[B+15|0],C[B+15|0]=o[A+19|0]|o[B+15|0],C[B+15|0]=o[A+20|0]|o[B+15|0],C[B+15|0]=o[A+21|0]|o[B+15|0],C[B+15|0]=o[A+22|0]|o[B+15|0],C[B+15|0]=o[A+23|0]|o[B+15|0],C[B+15|0]=o[A+24|0]|o[B+15|0],C[B+15|0]=o[A+25|0]|o[B+15|0],C[B+15|0]=o[A+26|0]|o[B+15|0],C[B+15|0]=o[A+27|0]|o[B+15|0],C[B+15|0]=o[A+28|0]|o[B+15|0],C[B+15|0]=o[A+29|0]|o[B+15|0],C[B+15|0]=o[A+30|0]|o[B+15|0],C[B+15|0]=o[A+31|0]|o[B+15|0],Q=(o[B+15|0]<<23)-8388608>>31),s=B+16|0,0|Q}function BI(A,I,g,C,B){var Q=0,o=0,E=0,a=0,_=0,c=0,t=0;A:{if(1==(0|C)|C>>>0>1)i[9404]=22;else{s=C=s-128|0,i[C- -64>>2]=0,i[C+56>>2]=0,i[C+60>>2]=0,i[C+48>>2]=0,i[C+52>>2]=0,i[C+40>>2]=0,i[C+44>>2]=0,i[C+32>>2]=0,i[C+36>>2]=0,i[C+24>>2]=0,i[C+28>>2]=0,i[C+16>>2]=0,i[C+20>>2]=0,Q=RI(A),i[C+28>>2]=Q,i[C+44>>2]=Q,i[C+12>>2]=Q,o=K(Q),i[C+40>>2]=o,E=K(Q),i[C+24>>2]=E,a=K(Q),i[C+8>>2]=a;I:if(!a|!o|!E||!(Q=K(Q)))BA(o),BA(E),BA(a),A=-22;else{if(A=OA(C+8|0,A,B)){BA(i[C+40>>2]),BA(i[C+24>>2]),BA(i[C+8>>2]),BA(Q);break I}a=i[C+28>>2],_=i[C+24>>2],A=i[C+60>>2],c=i[C+52>>2],t=i[C+48>>2],ag(Q,o=i[C+12>>2]),(E=K(o))?(i[C+100>>2]=0,i[C+104>>2]=0,i[C+92>>2]=0,i[C+96>>2]=0,i[C+88>>2]=a,i[C+84>>2]=_,i[C+80>>2]=g,i[C+76>>2]=I,i[C+72>>2]=o,i[C+68>>2]=E,i[C+124>>2]=0,i[C+120>>2]=A,i[C+116>>2]=A,i[C+112>>2]=c,i[C+108>>2]=t,(A=q(C+68|0,B))||Ng(Q,E,o),XC(E,o),BA(E)):A=-22,BA(i[C+40>>2]),BA(i[C+24>>2]),A||(A=MI(Q,i[C+8>>2],i[C+12>>2])?-35:0),BA(Q),BA(i[C+8>>2])}if(s=C+128|0,I=A,!A)break A;-35==(0|A)&&(i[9404]=28)}I=-1}return I}function QI(A,I){var g,B,Q,o,E,_,c,t=0,r=0;B=i[I+32>>2],Q=i[I+28>>2],o=i[I+24>>2],E=i[I+20>>2],_=i[I+16>>2],c=i[I+12>>2],t=i[I+4>>2],r=i[I>>2],g=i[I+36>>2],I=i[I+8>>2],r=a((B+(Q+(o+(E+(_+(c+((t+(r+(a(g,19)+16777216>>>25|0)>>26)>>25)+I>>26)>>25)>>26)>>25)>>26)>>25)>>26)+g>>25,19)+r|0,C[0|A]=r,C[A+2|0]=r>>>16,C[A+1|0]=r>>>8,t=t+(r>>26)|0,C[A+5|0]=t>>>14,C[A+4|0]=t>>>6,C[A+3|0]=r>>>24&3|t<<2,I=I+(t>>25)|0,C[A+8|0]=I>>>13,C[A+7|0]=I>>>5,C[A+6|0]=I<<3|(29360128&t)>>>22,r=(I>>26)+c|0,C[A+11|0]=r>>>11,C[A+10|0]=r>>>3,C[A+9|0]=r<<5|(65011712&I)>>>21,t=(r>>25)+_|0,C[A+15|0]=t>>>18,C[A+14|0]=t>>>10,C[A+13|0]=t>>>2,I=(t>>26)+E|0,C[A+16|0]=I,C[A+12|0]=t<<6|(33030144&r)>>>19,C[A+18|0]=I>>>16,C[A+17|0]=I>>>8,t=(I>>25)+o|0,C[A+21|0]=t>>>15,C[A+20|0]=t>>>7,C[A+19|0]=I>>>24&1|t<<1,I=(t>>26)+Q|0,C[A+24|0]=I>>>13,C[A+23|0]=I>>>5,C[A+22|0]=I<<3|(58720256&t)>>>23,t=(I>>25)+B|0,C[A+27|0]=t>>>12,C[A+26|0]=t>>>4,C[A+25|0]=t<<4|(31457280&I)>>>21,I=g+(t>>26)|0,C[A+30|0]=I>>>10,C[A+29|0]=I>>>2,C[A+31|0]=(33292288&I)>>>18,C[A+28|0]=I<<6|(66060288&t)>>>20}function iI(A,I,g){A|=0,I|=0;var B,Q=0,i=0,E=0,a=0,_=0,c=0,t=0;if(s=B=s-192|0,(g|=0)>>>0>=129&&(SI(A),SA(A,I,g,0),j(A,B),g=64,I=B),SI(A),bg(B- -64|0,54,128),g){if(g>>>0>=4)for(t=252&g;C[0|(Q=(E=B- -64|0)+i|0)]=o[0|Q]^o[I+i|0],C[0|(a=(Q=1|i)+E|0)]=o[0|a]^o[I+Q|0],C[0|(a=(Q=2|i)+E|0)]=o[0|a]^o[I+Q|0],C[0|(Q=(Q=E)+(E=3|i)|0)]=o[0|Q]^o[I+E|0],i=i+4|0,(0|t)!=(0|(_=_+4|0)););if(_=3&g)for(;C[0|(E=(B- -64|0)+i|0)]=o[0|E]^o[I+i|0],i=i+1|0,(0|_)!=(0|(c=c+1|0)););}if(SA(A,i=B- -64|0,128,0),SI(E=A+208|0),bg(i,92,128),g){if(c=0,i=0,g>>>0>=4)for(t=252&g,_=0;C[0|(Q=(A=B- -64|0)+i|0)]=o[0|Q]^o[I+i|0],C[0|(a=(Q=1|i)+A|0)]=o[0|a]^o[I+Q|0],C[0|(a=(Q=2|i)+A|0)]=o[0|a]^o[I+Q|0],C[0|(Q=(Q=A)+(A=3|i)|0)]=o[0|Q]^o[A+I|0],i=i+4|0,(0|t)!=(0|(_=_+4|0)););if(A=3&g)for(;C[0|(g=(B- -64|0)+i|0)]=o[0|g]^o[I+i|0],i=i+1|0,(0|A)!=(0|(c=c+1|0)););}return SA(E,A=B- -64|0,128,0),XC(A,128),XC(B,64),s=B+192|0,0}function oI(A,I){var g;return A|=0,I|=0,i[12+(g=s-16|0)>>2]=A,i[g+8>>2]=I,i[g+4>>2]=0,i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]]^o[i[g+8>>2]],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+1|0]^o[i[g+8>>2]+1|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+2|0]^o[i[g+8>>2]+2|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+3|0]^o[i[g+8>>2]+3|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+4|0]^o[i[g+8>>2]+4|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+5|0]^o[i[g+8>>2]+5|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+6|0]^o[i[g+8>>2]+6|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+7|0]^o[i[g+8>>2]+7|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+8|0]^o[i[g+8>>2]+8|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+9|0]^o[i[g+8>>2]+9|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+10|0]^o[i[g+8>>2]+10|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+11|0]^o[i[g+8>>2]+11|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+12|0]^o[i[g+8>>2]+12|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+13|0]^o[i[g+8>>2]+13|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+14|0]^o[i[g+8>>2]+14|0],i[g+4>>2]=i[g+4>>2]|o[i[g+12>>2]+15|0]^o[i[g+8>>2]+15|0],(i[g+4>>2]-1>>>8&1)-1|0}function EI(A,I,g,C,B,Q,o){var E,a,_,c=0,t=0,r=0,e=0;s=E=s-352|0,yA(E,Q,o,0);A:{if(!(((c=!!(0|B))|!B&C>>>0>A-g>>>0)&A>>>0>g>>>0)&(!B&g-A>>>0>=C>>>0|A>>>0>=g>>>0)){if(i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,t=(o=(c=!!(0|B))|!B&C>>>0>=32)?32:C,r=o?0:B,o=c|!B&C>>>0>32,!(C|B)){e=1;break A}}else g=yg(A,g,C),i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,t=(o=c|!B&C>>>0>=32)?32:C,r=o?0:B,o=c|!B&C>>>0>32;Ng(E- -64|0,g,t),e=0}return c=r,ug(a=E+32|0,a,_=t+32|0,c=_>>>0<32?c+1|0:c,c=Q+16|0,E),wC(E+96|0,a),e||Ng(A,E- -64|0,t),XC(E+32|0,64),o&&mg(A+t|0,g+t|0,C-t|0,B-((C>>>0>>0)+r|0)|0,c,1,0,E),XC(E,32),SC(g=E+96|0,A,C,B),nC(g,I),XC(g,256),s=E+352|0,0}function aI(A,I,g,C,B,Q,o){var E,a,_,c=0,t=0,r=0,e=0;s=E=s-352|0,wA(E,Q,o,0);A:{if(!(((c=!!(0|B))|!B&C>>>0>A-g>>>0)&A>>>0>g>>>0)&(!B&g-A>>>0>=C>>>0|A>>>0>=g>>>0)){if(i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,t=(o=(c=!!(0|B))|!B&C>>>0>=32)?32:C,r=o?0:B,o=c|!B&C>>>0>32,!(C|B)){e=1;break A}}else g=yg(A,g,C),i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,t=(o=c|!B&C>>>0>=32)?32:C,r=o?0:B,o=c|!B&C>>>0>32;Ng(E- -64|0,g,t),e=0}return c=r,aC(a=E+32|0,a,_=t+32|0,c=_>>>0<32?c+1|0:c,c=Q+16|0,E),wC(E+96|0,a),e||Ng(A,E- -64|0,t),XC(E+32|0,64),o&&oC(A+t|0,g+t|0,C-t|0,B-((C>>>0>>0)+r|0)|0,c,1,0,E),XC(E,32),SC(g=E+96|0,A,C,B),nC(g,I),XC(g,256),s=E+352|0,0}function _I(A,I,g,B,Q){var o;return A|=0,I|=0,g|=0,B|=0,s=o=s-480|0,iI(o,Q|=0,32),dC(o,I,g,B),wg(o,o+416|0),I=i[o+444>>2],g=i[o+440>>2],C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[o+436>>2],g=i[o+432>>2],C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[o+428>>2],g=i[o+424>>2],C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[o+420>>2],g=i[o+416>>2],C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,s=o+480|0,0}function cI(A,I,g){A|=0,I|=0;var B,Q=0;return s=B=s+-64|0,FI(B,g|=0,32,0),g=i[B+28>>2],Q=i[B+24>>2],C[I+24|0]=Q,C[I+25|0]=Q>>>8,C[I+26|0]=Q>>>16,C[I+27|0]=Q>>>24,C[I+28|0]=g,C[I+29|0]=g>>>8,C[I+30|0]=g>>>16,C[I+31|0]=g>>>24,g=i[B+20>>2],Q=i[B+16>>2],C[I+16|0]=Q,C[I+17|0]=Q>>>8,C[I+18|0]=Q>>>16,C[I+19|0]=Q>>>24,C[I+20|0]=g,C[I+21|0]=g>>>8,C[I+22|0]=g>>>16,C[I+23|0]=g>>>24,g=i[B+12>>2],Q=i[B+8>>2],C[I+8|0]=Q,C[I+9|0]=Q>>>8,C[I+10|0]=Q>>>16,C[I+11|0]=Q>>>24,C[I+12|0]=g,C[I+13|0]=g>>>8,C[I+14|0]=g>>>16,C[I+15|0]=g>>>24,g=i[B+4>>2],Q=i[B>>2],C[0|I]=Q,C[I+1|0]=Q>>>8,C[I+2|0]=Q>>>16,C[I+3|0]=Q>>>24,C[I+4|0]=g,C[I+5|0]=g>>>8,C[I+6|0]=g>>>16,C[I+7|0]=g>>>24,XC(B,64),A=pC(A,I),s=B- -64|0,0|A}function tI(A,I){var g=0,C=0,B=0,Q=0,o=0,E=0;return I>>>0>4294967168?48:(I>>>0>=4294967168?(i[9404]=48,g=0):(g=0,(I=K(76+(Q=I>>>0<11?16:I+11&-8)|0))&&(g=I-8|0,63&I?(B=(-8&(E=i[(o=I-4|0)>>2]))-(C=(I=((I=(I+63&-64)-8|0)-g>>>0<=15?64:0)+I|0)-g|0)|0,3&E?(i[I+4>>2]=B|1&i[I+4>>2]|2,i[4+(B=I+B|0)>>2]=1|i[B+4>>2],i[o>>2]=C|1&i[o>>2]|2,i[4+(B=g+C|0)>>2]=1|i[B+4>>2],oA(g,C)):(g=i[g>>2],i[I+4>>2]=B,i[I>>2]=g+C)):I=g,3&(g=i[I+4>>2])&&((C=-8&g)>>>0<=Q+16>>>0||(i[I+4>>2]=Q|1&g|2,g=I+Q|0,Q=C-Q|0,i[g+4>>2]=3|Q,i[4+(C=I+C|0)>>2]=1|i[C+4>>2],oA(g,Q))),g=I+8|0)),g?(i[A>>2]=g,0):48)}function rI(A,I,g,C,B,Q,o,E,a,_,c){var t;if(t=bg(A,0,I),1==(0|g)|g>>>0>1)return i[9404]=22,-1;if(!(!g&I>>>0<=15)){if(!(!(Q|a)&_>>>0<2147483649))return i[9404]=22,-1;if(!(!((!a&E>>>0>=3|!!(0|a))&_>>>0>8191)|(0|C)==(0|t)))return 1==(0|c)?(Q=_>>>10|0,s=A=s+-64|0,t&&ag(t,I),(g=K(I))?(i[A+36>>2]=0,i[A+40>>2]=0,i[A+28>>2]=0,i[A+32>>2]=0,i[A+24>>2]=16,i[A+20>>2]=o,i[A+16>>2]=B,i[A+12>>2]=C,i[A+8>>2]=I,i[A+4>>2]=g,i[A+60>>2]=0,i[A+56>>2]=1,i[A+52>>2]=1,i[A+48>>2]=Q,i[A+44>>2]=E,(C=q(A+4|0,1))|!t||Ng(t,g,I),XC(g,I),BA(g)):C=-22,s=A- -64|0,C?-1:0):(i[9404]=28,-1)}return i[9404]=28,-1}function eI(A,I,g,C,B,Q,i){var o,E,a=0,_=0,c=0;s=o=s-96|0,wA(o,Q,i,0),DC(i=o+32|0,32,0,E=Q+16|0,o),Q=-1;A:{I:if(!fC(g,I,C,B,i)){if(Q=0,!A)break A;g:{if(!(((g=!!(0|B))|!B&C>>>0>I-A>>>0)&A>>>0>>0)&(!B&C>>>0<=A-I>>>0|A>>>0<=I>>>0)){if(!(C|B))break g;g=(Q=!B&C>>>0>=32|!!(0|B))?32:C,a=Q?0:B}else I=yg(A,I,C),g=(Q=g|!B&C>>>0>=32)?32:C,a=Q?0:B;if(Q=a,c=Ng(o- -64|0,I,g),aC(i=o+32|0,i,_=g+32|0,Q=_>>>0<32?Q+1|0:Q,E,o),A=Ng(A,c,g),XC(i,64),Q=0,!B&C>>>0<33)break I;oC(A+g|0,I+g|0,C-g|0,B-(a+(g>>>0>C>>>0)|0)|0,E,1,0,o);break I}aC(A=o+32|0,A,32,0,E,o),XC(A,64)}XC(o,32)}return s=o+96|0,Q}function yI(A,I,g,C,B,Q,o,E,a,_,c){var t;if(t=bg(A,0,I),1==(0|g)|g>>>0>1)return i[9404]=22,-1;if(!(!g&I>>>0<=15)){if(!(!(Q|a)&_>>>0<2147483649))return i[9404]=22,-1;if(!(!(!!(E|a)&_>>>0>8191)|(0|C)==(0|t)))return 2==(0|c)?(Q=_>>>10|0,s=A=s+-64|0,t&&ag(t,I),(g=K(I))?(i[A+36>>2]=0,i[A+40>>2]=0,i[A+28>>2]=0,i[A+32>>2]=0,i[A+24>>2]=16,i[A+20>>2]=o,i[A+16>>2]=B,i[A+12>>2]=C,i[A+8>>2]=I,i[A+4>>2]=g,i[A+60>>2]=0,i[A+56>>2]=1,i[A+52>>2]=1,i[A+48>>2]=Q,i[A+44>>2]=E,(C=q(A+4|0,2))|!t||Ng(t,g,I),XC(g,I),BA(g)):C=-22,s=A- -64|0,C?-1:0):(i[9404]=28,-1)}return i[9404]=28,-1}function sI(A,I,g,C,B,Q,i){var o,E,a=0,_=0;s=o=s-96|0,yA(o,Q,i,0),Xg(i=o+32|0,32,0,E=Q+16|0,o),Q=-1;A:{I:if(!fC(g,I,C,B,i)){if(Q=0,!A)break A;g:{if(!(((g=!!(0|B))|!B&C>>>0>I-A>>>0)&A>>>0>>0)&(!B&C>>>0<=A-I>>>0|A>>>0<=I>>>0)){if(!(C|B))break g;g=(Q=!B&C>>>0>=32|!!(0|B))?32:C,i=Q?0:B}else I=yg(A,I,C),g=(Q=g|!B&C>>>0>=32)?32:C,i=Q?0:B;if(a=g,_=Ng(o- -64|0,I,g),ug(g=o+32|0,g,Q=a+32|0,Q>>>0<32?i+1|0:i,E,o),g=Ng(A,_,a),Q=0,!B&C>>>0<33)break I;mg(g+a|0,I+a|0,C-a|0,B-(i+(C>>>0>>0)|0)|0,E,1,0,o);break I}ug(A=o+32|0,A,32,0,E,o)}XC(o,32)}return s=o+96|0,Q}function hI(A,I,g,C,B,Q,E,a,_,c){var t,r;return s=t=s-400|0,i[t+4>>2]=0,yA(r=t+16|0,_,c,0),c=o[_+20|0]|o[_+21|0]<<8|o[_+22|0]<<16|o[_+23|0]<<24,i[t+8>>2]=o[_+16|0]|o[_+17|0]<<8|o[_+18|0]<<16|o[_+19|0]<<24,i[t+12>>2]=c,jg(c=t+80|0,64,0,t+4|0,r),wC(_=t+144|0,c),XC(c,64),SC(_,Q,E,a),SC(_,35680,0-E&15,0),SC(_,I,g,C),SC(_,35680,0-g&15,0),i[t+72>>2]=E,i[t+76>>2]=a,SC(_,Q=t+72|0,8,0),i[t+72>>2]=g,i[t+76>>2]=C,SC(_,Q,8,0),nC(_,Q=t+48|0),XC(_,256),_=oI(Q,B),XC(Q,16),A&&(_?(bg(A,0,g),_=-1):(Og(A,I,g,C,t+4|0,t+16|0),_=0)),XC(t+16|0,32),s=t+400|0,_}function DI(A,I,g,B,Q,o){var E,a;if(s=E=s-496|0,mA(a=E+288|0,A,I),mC(a,g,B,0),o)for(A=0,I=0;g=(I=I+1|0)<<24|(65280&I)<<8|I>>>8&65280|I>>>24,C[E+76|0]=g,C[E+77|0]=g>>>8,C[E+78|0]=g>>>16,C[E+79|0]=g>>>24,Ng(g=E+80|0,E+288|0,208),mC(g,E+76|0,4,0),Sg(g,E+32|0),g=i[E+60>>2],i[E+24>>2]=i[E+56>>2],i[E+28>>2]=g,g=i[E+52>>2],i[E+16>>2]=i[E+48>>2],i[E+20>>2]=g,g=i[E+44>>2],i[E+8>>2]=i[E+40>>2],i[E+12>>2]=g,g=i[E+36>>2],i[E>>2]=i[E+32>>2],i[E+4>>2]=g,Ng(g=A+Q|0,E,(A=o-A|0)>>>0>=32?32:A),o>>>0>(A=I<<5)>>>0;);XC(E+288|0,208),s=E+496|0}function fI(A,I,g,B,Q,i){var o,E,a=0;return s=o=s-32|0,a=-1,(E=g>>>0<32)&!B||(Ug(o,32,0,Q,i),fC(I+16|0,I+32|0,g-32|0,B-E|0,o)||(Gg(A,I,g,B,Q,i),C[A+24|0]=0,C[A+25|0]=0,C[A+26|0]=0,C[A+27|0]=0,C[A+28|0]=0,C[A+29|0]=0,C[A+30|0]=0,C[A+31|0]=0,C[A+16|0]=0,C[A+17|0]=0,C[A+18|0]=0,C[A+19|0]=0,C[A+20|0]=0,C[A+21|0]=0,C[A+22|0]=0,C[A+23|0]=0,C[A+8|0]=0,C[A+9|0]=0,C[A+10|0]=0,C[A+11|0]=0,C[A+12|0]=0,C[A+13|0]=0,C[A+14|0]=0,C[A+15|0]=0,C[0|A]=0,C[A+1|0]=0,C[A+2|0]=0,C[A+3|0]=0,C[A+4|0]=0,C[A+5|0]=0,C[A+6|0]=0,C[A+7|0]=0,a=0)),s=o+32|0,a}function pI(A,I,g,C,B,Q,E,a,_,c,t){var r,e,y;return s=r=s-384|0,i[r+4>>2]=0,yA(e=r+16|0,c,t,0),t=o[c+20|0]|o[c+21|0]<<8|o[c+22|0]<<16|o[c+23|0]<<24,i[r+8>>2]=o[c+16|0]|o[c+17|0]<<8|o[c+18|0]<<16|o[c+19|0]<<24,i[r+12>>2]=t,jg(t=r- -64|0,64,0,y=r+4|0,e),wC(c=r+128|0,t),XC(t,64),SC(c,E,a,_),SC(c,35680,0-a&15,0),Og(A,C,B,Q,y,e),SC(c,A,B,Q),SC(c,35680,0-B&15,0),i[r+56>>2]=a,i[r+60>>2]=_,SC(c,A=r+56|0,8,0),i[r+56>>2]=B,i[r+60>>2]=Q,SC(c,A,8,0),nC(c,I),XC(c,256),g&&(i[g>>2]=16,i[g+4>>2]=0),XC(r+16|0,32),s=r+384|0,0}function wI(A,I,g,C,B){var Q,E,a=0;return s=Q=s+-64|0,!g&(E=RI(A))>>>0<128?(i[Q+60>>2]=0,i[Q+52>>2]=0,i[Q+56>>2]=0,i[Q+44>>2]=0,i[Q+48>>2]=0,g=0,E&&(g=E,(1|E)>>>0<65536||(g=E)),!(a=K(g))|!(3&o[a-4|0])||bg(a,0,g),a?(i[Q+36>>2]=0,i[Q+40>>2]=0,i[Q+12>>2]=a,i[Q+20>>2]=a,i[Q+24>>2]=E,i[Q+4>>2]=a,i[Q+16>>2]=E,i[Q+28>>2]=0,i[Q+32>>2]=0,i[Q+8>>2]=E,OA(Q+4|0,A,B)?(i[9404]=28,A=-1):A=i[Q+44>>2]!=(0|I)|i[Q+48>>2]!=(C>>>10|0),BA(a)):A=-1):(i[9404]=28,A=-1),s=Q- -64|0,A}function nI(A){var I,g=0,C=0;if(!A)return-25;if(!i[A>>2])return-1;if(E[A+4>>2]<16)return-2;if(!(i[A+8>>2]|!i[A+12>>2]))return-18;if(g=i[A+20>>2],!i[A+16>>2])return g?-19:-6;if(g>>>0<8)return-6;if(!(i[A+24>>2]|!i[A+28>>2]))return-20;if(!(i[A+32>>2]|!i[A+36>>2]))return-21;if(!(g=i[A+48>>2]))return-16;if(g>>>0>16777215)return-17;if(C=-14,!((I=i[A+44>>2])>>>0<8)){if(I>>>0>2097152)return-15;if(!(g<<3>>>0>I>>>0)){if(!i[A+40>>2])return-12;if(!(A=i[A+52>>2]))return-28;C=A>>>0>16777215?-29:0}}return C}function kI(A,I){var g,C=0,B=0;g=I;A:{I:{g:{if(I&=255){if(3&A)for(;;){if(!(C=o[0|A])|(0|I)==(0|C))break A;if(!(3&(A=A+1|0)))break}if(-2139062144!=(-2139062144&((C=i[A>>2])|16843008-C)))break g;for(B=a(I,16843009);;){if(-2139062144!=(-2139062144&(16843008-(I=C^B)|I)))break g;if(C=i[A+4>>2],A=I=A+4|0,-2139062144!=(-2139062144&(16843008-C|C)))break}break I}A=RI(A)+A|0;break A}I=A}for(;;){if(!(C=o[0|(A=I)]))break A;if(I=A+1|0,(0|C)==(255&g))break}}return o[0|A]==(255&g)?A:0}function FI(A,I,g,C){var B,Q=0;return s=B=s-208|0,i[B+72>>2]=0,i[B+76>>2]=0,Q=i[8591],i[B+8>>2]=i[8590],i[B+12>>2]=Q,Q=i[8593],i[B+16>>2]=i[8592],i[B+20>>2]=Q,Q=i[8595],i[B+24>>2]=i[8594],i[B+28>>2]=Q,Q=i[8597],i[B+32>>2]=i[8596],i[B+36>>2]=Q,Q=i[8599],i[B+40>>2]=i[8598],i[B+44>>2]=Q,Q=i[8601],i[B+48>>2]=i[8600],i[B+52>>2]=Q,Q=i[8603],i[B+56>>2]=i[8602],i[B+60>>2]=Q,i[B+64>>2]=0,i[B+68>>2]=0,Q=i[8589],i[B>>2]=i[8588],i[B+4>>2]=Q,SA(B,I,g,C),j(B,A),s=B+208|0,0}function SI(A){var I=0;return i[64+(A|=0)>>2]=0,i[A+68>>2]=0,i[A+72>>2]=0,i[A+76>>2]=0,I=i[8589],i[A>>2]=i[8588],i[A+4>>2]=I,I=i[8591],i[A+8>>2]=i[8590],i[A+12>>2]=I,I=i[8593],i[A+16>>2]=i[8592],i[A+20>>2]=I,I=i[8595],i[A+24>>2]=i[8594],i[A+28>>2]=I,I=i[8597],i[A+32>>2]=i[8596],i[A+36>>2]=I,I=i[8599],i[A+40>>2]=i[8598],i[A+44>>2]=I,I=i[8601],i[A+48>>2]=i[8600],i[A+52>>2]=I,I=i[8603],i[A+56>>2]=i[8602],i[A+60>>2]=I,0}function NI(A){return~((127&~o[A+31|0]|o[A+1|0]&o[A+2|0]&o[A+3|0]&o[A+4|0]&o[A+5|0]&o[A+6|0]&o[A+7|0]&o[A+8|0]&o[A+9|0]&o[A+10|0]&o[A+11|0]&o[A+12|0]&o[A+13|0]&o[A+14|0]&o[A+15|0]&o[A+16|0]&o[A+17|0]&o[A+18|0]&o[A+19|0]&o[A+20|0]&o[A+21|0]&o[A+22|0]&o[A+23|0]&o[A+24|0]&o[A+25|0]&o[A+26|0]&o[A+27|0]&o[A+28|0]&o[A+30|0]&o[A+29|0]^255)-1&236-o[0|A])>>>8&1}function GI(A,I){var g,B=0,Q=0,i=0,E=0;if(C[15+(g=s-16|0)|0]=0,I){if(I>>>0>=4)for(E=-4&I;B=A+Q|0,C[g+15|0]=o[0|B]|o[g+15|0],C[g+15|0]=o[B+1|0]|o[g+15|0],C[g+15|0]=o[B+2|0]|o[g+15|0],C[g+15|0]=o[B+3|0]|o[g+15|0],Q=Q+4|0,(0|E)!=(0|(i=i+4|0)););if(B=3&I)for(I=0;C[g+15|0]=o[A+Q|0]|o[g+15|0],Q=Q+1|0,(0|B)!=(0|(I=I+1|0)););}return o[g+15|0]-1>>>8&1}function MI(A,I,g){var B,Q=0,E=0;if(i[12+(B=s-16|0)>>2]=A,i[B+8>>2]=I,A=0,C[B+7|0]=0,g){if(I=1&g,1!=(0|g))for(E=-2&g,g=0;C[B+7|0]=o[B+7|0]|o[i[B+12>>2]+A|0]^o[i[B+8>>2]+A|0],Q=1|A,C[B+7|0]=o[B+7|0]|o[Q+i[B+12>>2]|0]^o[i[B+8>>2]+Q|0],A=A+2|0,(0|E)!=(0|(g=g+2|0)););I&&(C[B+7|0]=o[B+7|0]|o[i[B+12>>2]+A|0]^o[i[B+8>>2]+A|0])}return(o[B+7|0]-1>>>8&1)-1|0}function KI(A){for(var I=0,g=0,C=0,B=0,Q=0,i=0,E=0,a=0,_=0,c=0;B=(g=o[A+C|0])^o[0|(I=C+2688|0)]|B,Q=g^o[I+192|0]|Q,i=g^o[I+160|0]|i,E=g^o[I+128|0]|E,a=g^o[I+96|0]|a,_=g^o[I- -64|0]|_,c=g^o[I+32|0]|c,31!=(0|(C=C+1|0)););return((255&((I=127^(A=127&o[A+31|0]))|Q))-1|(255&(I|i))-1|(255&(I|E))-1|(255&(122^A|a))-1|(255&(5^A|_))-1|(255&(A|c))-1|(255&(A|B))-1)>>>8&1}function UI(A,I,g){var C=0,B=0,Q=0,i=0;return B=31&(Q=i=63&g),Q=Q>>>0>=32?-1>>>B|0:(C=-1>>>B|0)|(1<>>0>=32?(C=Q<>>32-B|C<>>0>=32?(C=-1<>>32-C,A&=g,I&=C,C=31&B,B>>>0>=32?(g=0,A=I>>>C|0):(g=I>>>C|0,A=((1<>>C),f=g|Q,A|i}function bI(A,I,g,C,B,Q){A|=0,I|=0,g|=0;var o=0,E=0;A:I:{g:{if(!(!(B|=0)&(C|=0)>>>0<64||(E=1+(B=B-1|0)|0,o=B,!(C=(B=C+-64|0)>>>0<4294967232?E:o)&B>>>0>4294967231|C))){if(!U(o=g,g=g- -64|0,B,C,Q|=0,0))break g;A&&bg(A,0,B)}if(C=-1,!I)break I;i[I>>2]=0,i[I+4>>2]=0,C=-1;break A}I&&(i[I>>2]=B,i[I+4>>2]=C),C=0,A&&yg(A,g,B)}return 0|C}function HI(A,I,g,C,B,Q,o,E,a,_){var c,t,r;return s=c=s-352|0,jg(r=c+32|0,64,0,a,_),wC(t=c+96|0,r),XC(r,64),SC(t,Q,o,E),SC(t,35648,0-o&15,0),SC(t,I,g,C),SC(t,35648,0-g&15,0),i[c+24>>2]=o,i[c+28>>2]=E,SC(t,Q=c+24|0,8,0),i[c+24>>2]=g,i[c+28>>2]=C,SC(t,Q,8,0),nC(t,c),XC(t,256),Q=oI(c,B),XC(c,16),A&&(Q?(bg(A,0,g),Q=-1):(Cg(A,I,g,C,a,1,_),Q=0)),s=c+352|0,Q}function YI(A,I,g,C,B,Q){var E,a;return A|=0,I|=0,g|=0,C|=0,Q|=0,s=E=s-32|0,a=o[0|(B|=0)]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,B=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[E+24>>2]=0,i[E+28>>2]=0,i[E+16>>2]=a,i[E+20>>2]=B,i[E+8>>2]=0,i[E+12>>2]=0,i[E>>2]=g,i[E+4>>2]=C,I-65>>>0<=4294967246?(i[9404]=28,A=-1):A=QA(A,I,0,0,0,Q,32,E,E+16|0),s=E+32|0,0|A}function JI(A,I,g,C,B){var Q,o;return A|=0,I|=0,g|=0,C|=0,s=Q=s-512|0,iI(o=Q+32|0,B|=0,32),dC(o,I,g,C),wg(o,Q+448|0),I=i[Q+476>>2],i[Q+24>>2]=i[Q+472>>2],i[Q+28>>2]=I,I=i[Q+468>>2],i[Q+16>>2]=i[Q+464>>2],i[Q+20>>2]=I,I=i[Q+460>>2],i[Q+8>>2]=i[Q+456>>2],i[Q+12>>2]=I,I=i[Q+452>>2],i[Q>>2]=i[Q+448>>2],i[Q+4>>2]=I,I=NC(A,Q),g=MI(Q,A,32),s=Q+512|0,((0|A)==(0|Q)?-1:I)|g}function dI(A,I,g,C,B,Q,o,E,a,_){var c,t,r;return s=c=s-352|0,Xg(r=c+32|0,64,0,a,_),wC(t=c+96|0,r),XC(r,64),SC(t,Q,o,E),i[c+24>>2]=o,i[c+28>>2]=E,SC(t,Q=c+24|0,8,0),SC(t,I,g,C),i[c+24>>2]=g,i[c+28>>2]=C,SC(t,Q,8,0),nC(t,c),XC(t,256),Q=oI(c,B),XC(c,16),A&&(Q?(bg(A,0,g),Q=-1):(mg(A,I,g,C,a,1,0,_),Q=0)),s=c+352|0,Q}function mI(A,I,g,C,B,Q,o,E,a,_,c){var t,r,e;return s=t=s-336|0,jg(e=t+16|0,64,0,_,c),wC(r=t+80|0,e),XC(e,64),SC(r,o,E,a),SC(r,35648,0-E&15,0),Cg(A,C,B,Q,_,1,c),SC(r,A,B,Q),SC(r,35648,0-B&15,0),i[t+8>>2]=E,i[t+12>>2]=a,SC(r,A=t+8|0,8,0),i[t+8>>2]=B,i[t+12>>2]=Q,SC(r,A,8,0),nC(r,I),XC(r,256),g&&(i[g>>2]=16,i[g+4>>2]=0),s=t+336|0,0}function lI(A,I){var g,C=0,B=0,Q=0,E=0,_=0;A:if(!(((g=o[0|A])-58&255)>>>0<246)){for(C=g,B=A;;){if(E=B,Q>>>0>429496729)break A;if((C=(255&C)-48|0)>>>0>~(Q=a(Q,10))>>>0)break A;if(Q=Q+C|0,!(((C=o[0|(B=B+1|0)])-58&255)>>>0>245))break}48==(0|g)&(0|A)!=(0|E)|(0|A)==(0|B)||(i[I>>2]=Q,_=B)}return _}function uI(A){var I=0,g=0,C=0,B=0;I=65,g=1024;A:{I:{if((0|(C=255&A))!=o[1024])for(C=a(C,16843009);;){if(-2139062144!=(-2139062144&((B=C^i[g>>2])|16843008-B)))break I;if(g=g+4|0,!((I=I-4|0)>>>0>3))break}if(!I)break A}for(A&=255;;){if((0|A)==o[0|g])return g;if(g=g+1|0,!(I=I-1|0))break}}return 0}function xI(A,I,g,C,B,Q,o,E,a,_,c){var t,r,e;return s=t=s-336|0,Xg(e=t+16|0,64,0,_,c),wC(r=t+80|0,e),XC(e,64),SC(r,o,E,a),i[t+8>>2]=E,i[t+12>>2]=a,SC(r,o=t+8|0,8,0),mg(A,C,B,Q,_,1,0,c),SC(r,A,B,Q),i[t+8>>2]=B,i[t+12>>2]=Q,SC(r,o,8,0),nC(r,I),XC(r,256),g&&(i[g>>2]=16,i[g+4>>2]=0),s=t+336|0,0}function vI(A,I,g,B,Q,i){return!B&g>>>0>=32|B?(Gg(A,I,g,B,Q,i),hC(A+16|0,A+32|0,g-32|0,B-(g>>>0<32)|0,A),C[A+8|0]=0,C[A+9|0]=0,C[A+10|0]=0,C[A+11|0]=0,C[A+12|0]=0,C[A+13|0]=0,C[A+14|0]=0,C[A+15|0]=0,C[0|A]=0,C[A+1|0]=0,C[A+2|0]=0,C[A+3|0]=0,C[A+4|0]=0,C[A+5|0]=0,C[A+6|0]=0,C[A+7|0]=0,A=0):A=-1,A}function RI(A){var I=0,g=0,C=0;A:{I:if(3&(I=A)){if(!o[0|I])return 0;for(;;){if(!(3&(I=I+1|0)))break I;if(!o[0|I])break}break A}for(;g=I,I=I+4|0,-2139062144==(-2139062144&((C=i[g>>2])|16843008-C)););for(;g=(I=g)+1|0,o[0|I];);}return I-A|0}function LI(A,I,g,C,B,Q){I|=0,B|=0,Q|=0;var o,E=0;return s=o=s-16|0,w(A|=0,o+8|0,yg(A- -64|0,g|=0,C|=0),C,B,Q,0),i[o+12>>2]|64!=i[o+8>>2]?(I&&(i[I>>2]=0,i[I+4>>2]=0),bg(A,0,C- -64|0),E=-1):I&&(i[I>>2]=C- -64,i[I+4>>2]=B-((C>>>0<4294967232)-1|0)),s=o+16|0,0|E}function PI(A,I){var g,C=0,B=0,Q=0,E=0;return(g=uI(o[0|I]))&&(C=uI(o[I+1|0]))&&(B=uI(o[I+2|0]))&&(Q=uI(o[I+3|0]))&&(E=uI(o[I+4|0]))?(i[A>>2]=g-1024|C-1024<<6|B-1024<<12|Q-1024<<18|E-1024<<24,I+5|0):(i[A>>2]=0,0)}function qI(A,I,g){var C;for(i[12+(C=s-16|0)>>2]=A,i[C+8>>2]=I,A=0,i[C+4>>2]=0;i[C+4>>2]=i[C+4>>2]|o[i[C+12>>2]+A|0]^o[i[C+8>>2]+A|0],I=1|A,i[C+4>>2]=i[C+4>>2]|o[I+i[C+12>>2]|0]^o[I+i[C+8>>2]|0],(0|g)!=(0|(A=A+2|0)););return(i[C+4>>2]-1>>>8&1)-1|0}function zI(A,I,g,C,B,Q,o,E,a,_,c){var t=0,r=0,e=0;return r=-1,(t=C>>>0<32)&!B||!(t=B-t|0)&(e=C-32|0)>>>0>4294967263|t|!E&o>>>0>4294967263|E||(r=0|pB[i[c>>2]](A,g,e,(g+C|0)-32|0,32,Q,o,a,_)),I&&(i[I>>2]=r?0:C-32|0,i[I+4>>2]=r?0:B-(C>>>0<32)|0),r}function jI(A,I){var g,C=0,B=0,Q=0;s=g=s-896|0,fA(C=g+848|0,I),fA(B=g+800|0,I+32|0),$(Q=g+320|0,C),$(I=g+160|0,B),$A(C=g+640|0,I),sA(I=g+480|0,Q,C),b(g,I,C=g+600|0),b(g+40|0,B=g+520|0,Q=g+560|0),b(g+80|0,Q,C),b(g+120|0,I,B),W(A,g),s=g+896|0}function XI(A){var I=0,g=0,B=0,Q=0,i=0;for(I=1;g=(B=I)+o[0|(I=A+Q|0)]|0,C[0|I]=g,g=o[I+1|0]+(g>>>8|0)|0,C[I+1|0]=g,g=o[I+2|0]+(g>>>8|0)|0,C[I+2|0]=g,B=I,I=o[I+3|0]+(g>>>8|0)|0,C[B+3|0]=I,I=I>>>8|0,Q=Q+4|0,4!=(0|(i=i+4|0)););}function OI(A,I,g,C,B,Q,o){var E;return s=E=s-16|0,A=bg(A,0,128),!(C|Q)&o>>>0<2147483649?(!Q&B>>>0>=3|!!(0|Q))&o>>>0>8191?(ag(E,16),A=iA(B,o>>>10|0,I,g,E,A,1)?-1:0):(i[9404]=28,A=-1):(i[9404]=22,A=-1),s=E+16|0,A}function WI(A,I){var g=0;4&I&&((I=i[A>>2])&&XC(i[I+4>>2],i[A+16>>2]<<10),(I=i[A+4>>2])&&XC(I,i[A+20>>2]<<3)),BA(i[A+4>>2]),i[A+4>>2]=0,(I=i[A>>2])&&(g=i[I>>2])&&BA(g),BA(I),i[A>>2]=0}function VI(A,I,g,C,B,o,E,a,_,c,t){return!B&C>>>0>4294967263|!!(0|B)|!a&E>>>0>=4294967264|!!(0|a)?(rC(),Q()):(A=0|pB[i[t>>2]](A,A+C|0,32,g,C,o,E,_,c),I&&(C=(g=C+32|0)>>>0<32?B+1|0:B,i[I>>2]=A?0:g,i[I+4>>2]=A?0:C)),A}function ZI(A){var I=0,g=0,C=0,B=0,Q=0,i=0,E=0,a=0;for(I=32,g=1;a|=(B=o[(C=I-2|0)+A|0])-(Q=o[C+2912|0])>>8&(I=((i=o[2912+(I=I-1|0)|0])^(E=o[A+I|0]))-1>>8&g)|E-i>>8&g,g=I&(B^Q)-1>>8,I=C;);return!!(255&a)}function TI(A,I,g,C,B,Q,o){var E;return s=E=s-16|0,A=bg(A,0,128),!(C|Q)&o>>>0<2147483649?!!(B|Q)&o>>>0>8191?(ag(E,16),A=iA(B,o>>>10|0,I,g,E,A,2)?-1:0):(i[9404]=28,A=-1):(i[9404]=22,A=-1),s=E+16|0,A}function $I(A){var I=0;return i[32+(A|=0)>>2]=0,i[A+36>>2]=0,I=i[8809],i[A>>2]=i[8808],i[A+4>>2]=I,I=i[8811],i[A+8>>2]=i[8810],i[A+12>>2]=I,I=i[8813],i[A+16>>2]=i[8812],i[A+20>>2]=I,I=i[8815],i[A+24>>2]=i[8814],i[A+28>>2]=I,0}function Ag(A,I,g,C,B,Q,i){var o,E,a=0,_=0;return s=o=s+-64|0,a=-1,(E=g>>>0<16)&!C||CI(_=o+32|0,i,Q)||yA(o,35584,_,0)||(a=sI(A,I+16|0,I,g-16|0,C-E|0,B,o),XC(o,32)),s=o- -64|0,a}function Ig(A,I,g,C){var B,Q,i,o,E=0,_=0;return o=a(E=g>>>16|0,_=A>>>16|0),E=(65535&(_=((i=a(B=65535&g,Q=65535&A))>>>16|0)+a(_,B)|0))+a(E,Q)|0,f=(a(I,g)+o|0)+a(A,C)+(_>>>16)+(E>>>16)|0,65535&i|E<<16}function gg(A,I,g){var C=0,B=0;if(!g)return 0;if(C=o[0|A])A:{for(;;){if((0|(B=o[0|I]))!=(0|C)|!B)break A;if(!(g=g-1|0))break A;if(I=I+1|0,C=o[A+1|0],A=A+1|0,!C)break}C=0}else C=0;return C-o[0|I]|0}function Cg(A,I,g,C,B,o,E){var a=0,_=0;if(a=C,!(1==(((a=(_=g+63|0)>>>0<63?a+1|0:a)>>>6|0)+!!(0|(a=(63&a)<<26|_>>>6))|0)&o>>>0>(_=0-a|0)>>>0|1==(0|C)|C>>>0>1))return 0|pB[i[9199]](A,I,g,C,B,o,E);rC(),Q()}function Bg(A,I,g,C,B,Q,i){var o;return A|=0,I|=0,g|=0,C|=0,B|=0,s=o=s+-64|0,CI(o+32|0,i|=0,Q|=0)?Q=-1:(Q=-1,wA(o,35664,o+32|0,0)||(Q=vI(A,I,g,C,B,o),XC(o,32))),s=o- -64|0,0|Q}function Qg(A,I,g,C,B,Q,i){var o;return A|=0,I|=0,g|=0,C|=0,B|=0,s=o=s+-64|0,CI(o+32|0,i|=0,Q|=0)?Q=-1:(Q=-1,wA(o,35664,o+32|0,0)||(Q=fI(A,I,g,C,B,o),XC(o,32))),s=o- -64|0,0|Q}function ig(A,I,g,C,B,i,o){var E;if(s=E=s+-64|0,!C&g>>>0<4294967280)return CI(E+32|0,o,i)?o=-1:(o=-1,yA(E,35584,E+32|0,0)||(o=EI(A+16|0,A,I,g,C,B,E),XC(E,32))),s=E- -64|0,o;rC(),Q()}function og(A,I){for(var g=0,B=0,Q=0,i=0,E=0;B=A+Q|0,g=o[I+Q|0]+(o[0|B]+g|0)|0,C[0|B]=g,i=(B=1|Q)+A|0,g=o[I+B|0]+(o[0|i]+(g>>>8|0)|0)|0,C[0|i]=g,g=g>>>8|0,Q=Q+2|0,32!=(0|(E=E+2|0)););}function Eg(A,I){for(var g=0,B=0,Q=0,i=0,E=0;g=(o[0|(B=A+Q|0)]-o[I+Q|0]|0)+g|0,C[0|B]=g,g=(o[0|(i=(B=1|Q)+A|0)]-o[I+B|0]|0)+(g>>8)|0,C[0|i]=g,g>>=8,Q=Q+2|0,64!=(0|(E=E+2|0)););}function ag(A,I){A|=0;var g,B=0,Q=0,i=0;if(s=g=s-16|0,I|=0)for(;C[g+15|0]=0,Q=A+B|0,i=0|t(36800,g+15|0,0),C[0|Q]=i,(0|(B=B+1|0))!=(0|I););s=g+16|0}function _g(A,I,g,C,B,Q,i){var o,E,a=0;return s=o=s-32|0,a=-1,(E=g>>>0<16)&!C||cC(o,Q,i)||(a=eI(A,I+16|0,I,g-16|0,C-E|0,B,o),XC(o,32)),s=o+32|0,a}function cg(A){var I,g;A:{if(!((A=(I=i[8924])+(g=A+7&-8)|0)>>>0<=I>>>0&&g)){if(A>>>0<=wB()<<16>>>0)break A;if(0|y(0|A))break A}return i[9404]=48,-1}return i[8924]=A,I}function tg(A,I){var g,B,Q;s=g=s-176|0,LA(B=g+96|0,I+80|0),b(Q=g+48|0,I,B),b(g,I+40|0,B),QI(A,g),QI(g+144|0,Q),C[A+31|0]=o[A+31|0]^o[g+144|0]<<7,s=g+176|0}function rg(A,I,g,C,B,Q,i,o,E,a){var _,c,t=0,r=0,e=0;return s=_=s-16|0,t=-1,_C(c=_+4|0)||(r=-1,e=_A(c,A,I,g,C,B,Q,i,o,E,a),t=Rg(c)?r:e),s=_+16|0,t}function eg(A,I,g,C,B,o,E,a,_,c,t,r){return g&&(i[g>>2]=32,i[g+4>>2]=0),!_&a>>>0<4294967264&!o&B>>>0<=4294967263||(rC(),Q()),0|pB[i[r>>2]](A,I,32,C,B,E,a,c,t)}function yg(A,I,g){var B=0;if(A>>>0>>0)return Ng(A,I,g);if(g)for(B=A+g|0,I=I+g|0;I=I-1|0,C[0|(B=B-1|0)]=o[0|I],g=g-1|0;);return A}function sg(A,I,g,C,B,i,o){var E,a=0;if(s=E=s-32|0,!C&g>>>0<4294967280)return a=-1,cC(E,i,o)||(a=aI(A+16|0,A,I,g,C,B,E),XC(E,32)),s=E+32|0,a;rC(),Q()}function hg(A,I,g,C,B,Q){return I|=0,0|(!(C|=0)&(g|=0)>>>0>=16|C?eI(A|=0,I+16|0,I,g-16|0,C-(g>>>0<16)|0,B|=0,Q|=0):-1)}function Dg(A,I,g,C,B,Q){return I|=0,0|(!(C|=0)&(g|=0)>>>0>=16|C?sI(A|=0,I+16|0,I,g-16|0,C-(g>>>0<16)|0,B|=0,Q|=0):-1)}function fg(A,I,g,C,B,Q,o,E,a,_,c){return!C&g>>>0>4294967263|C|!E&o>>>0>4294967263|E?-1:0|pB[i[c>>2]](A,I,g,B,32,Q,o,a,_)}function pg(A,I,g){A|=0;var C,B=0;return s=C=s-32|0,B=-1,CI(C,g|=0,I|=0)||(B=wA(A,35664,C,0)),s=C+32|0,0|B}function wg(A,I){var g;return I|=0,s=g=s+-64|0,j(A|=0,g),SA(A=A+208|0,g,64,0),j(A,I),XC(g,64),s=g- -64|0,0}function ng(A,I,g,C){var B;return I|=0,g|=0,C|=0,s=B=s+-64|0,j(A|=0,B),A=w(I,g,B,64,0,C,1),s=B- -64|0,0|A}function kg(A,I){var g,C,B;b(A,I,g=I+120|0),b(A+40|0,C=I+40|0,B=I+80|0),b(A+80|0,B,g),b(A+120|0,I,C)}function Fg(A,I,g,C,B,Q,i){return 0|TI(A|=0,I|=0,(A=0)|(g|=0),C|=0,A|(B|=0),Q|=0,i|=0)}function Sg(A,I){var g;return I|=0,s=g=s-32|0,JA(A|=0,g),UA(A=A+104|0,g,32,0),JA(A,I),XC(g,32),s=g+32|0,0}function Ng(A,I,g){var B=0;if(g)for(B=A;C[0|B]=o[0|I],B=B+1|0,I=I+1|0,g=g-1|0;);return A}function Gg(A,I,g,C,B,Q){var i;return s=i=s-32|0,wA(i,B,Q,0),A=oC(A,I,g,C,B+16|0,0,0,i),XC(i,32),s=i+32|0,A}function Mg(A){for(A|=0;ag(A,32),C[A+31|0]=31&o[A+31|0],!ZI(A)||GI(A,32););}function Kg(A,I,g){var C;return I|=0,g|=0,s=C=s+-64|0,j(A|=0,C),A=U(I,C,64,0,g,1),s=C- -64|0,0|A}function Ug(A,I,g,C,B){var Q;return s=Q=s-32|0,wA(Q,C,B,0),A=DC(A,I,g,C+16|0,Q),XC(Q,32),s=Q+32|0,A}function bg(A,I,g){var B=0;if(g)for(B=A;C[0|B]=I,B=B+1|0,g=g-1|0;);return A}function Hg(A,I,g){return A|=0,I|=0,(g|=0)>>>0>=256&&(r(1366,1279,107,1123),Q()),0|AA(A,I,255&g)}function Yg(A,I,g,C,B,Q,i){return 0|aI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)}function Jg(A,I,g,C,B,Q,i){return 0|eI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)}function dg(A,I,g,C,B,Q,i){return 0|EI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)}function mg(A,I,g,C,B,o,E,a){return 1==(0|C)|C>>>0>1&&(rC(),Q()),0|pB[i[9198]](A,I,g,C,B,o,E,a)}function lg(A,I,g,C,B,Q,i){return 0|sI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)}function ug(A,I,g,C,B,o){return 1==(0|C)|C>>>0>1&&(rC(),Q()),0|pB[i[9198]](A,I,g,C,B,0,0,o)}function xg(A,I,g,C,B,o){return 1==(0|C)|C>>>0>1&&(rC(),Q()),0|pB[i[9199]](A,I,g,C,B,0,o)}function vg(A,I,g,C,B,Q){return w(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,0),0}function Rg(A){var I;return(I=i[A>>2])&&BA(I),i[A+8>>2]=0,i[A>>2]=0,i[A+4>>2]=0,0}function Lg(A,I){var g=0;return(-1>>>(g=31&I)&A)<>>A}function Pg(A,I,g,C,B,Q){return 0|vI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)}function qg(A,I,g,C,B,Q){return 0|fI(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)}function zg(A,I,g,C,B,Q){return 0|Gg(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)}function jg(A,I,g,C,B){return 1==(0|g)|g>>>0>1&&(rC(),Q()),0|pB[i[9197]](A,I,g,C,B)}function Xg(A,I,g,C,B){return 1==(0|g)|g>>>0>1&&(rC(),Q()),0|pB[i[9196]](A,I,g,C,B)}function Og(A,I,g,C,B,o){1==(0|C)|C>>>0>1&&(rC(),Q()),pB[i[9199]](A,I,g,C,B,1,o)}function Wg(A,I,g,C,B){return 0|U(A|=0,I|=0,g|=0,C|=0,B|=0,0)}function Vg(A,I,g,C,B){return 0|hC(A|=0,I|=0,g|=0,C|=0,B|=0)}function Zg(A,I,g,C,B){return 0|fC(A|=0,I|=0,g|=0,C|=0,B|=0)}function Tg(A,I,g,C,B){return 0|Ug(A|=0,I|=0,g|=0,C|=0,B|=0)}function $g(){var A;s=A=s-16|0,C[A+15|0]=0,t(36836,A+15|0,0),s=A+16|0}function AC(A,I,g,C){return CA(A|=0,I|=0,g|=0,C|=0,20),0}function IC(A,I,g,C){return CA(A|=0,I|=0,g|=0,C|=0,12),0}function gC(A,I,g,C){return CA(A|=0,I|=0,g|=0,C|=0,8),0}function CC(A,I,g,C){return 0|FI(A|=0,I|=0,g|=0,C|=0)}function BC(A,I,g,C){return 0|SC(A|=0,I|=0,g|=0,C|=0)}function QC(A,I,g,C){return 0|SA(A|=0,I|=0,g|=0,C|=0)}function iC(A,I,g,C){return 0|eA(A|=0,I|=0,g|=0,C|=0)}function oC(A,I,g,C,B,Q,o,E){return 0|pB[i[8933]](A,I,g,C,B,Q,o,E)}function EC(A,I,g,C){return 0|dC(A|=0,I|=0,g|=0,C|=0)}function aC(A,I,g,C,B,Q){return 0|pB[i[8933]](A,I,g,C,B,0,0,Q)}function _C(A){return i[A+8>>2]=0,i[A>>2]=0,i[A+4>>2]=0,0}function cC(A,I,g){return 0|pg(A|=0,I|=0,g|=0)}function tC(A,I,g){return 0|CI(A|=0,I|=0,g|=0)}function rC(){var A;(A=i[9538])&&pB[0|A](),DB(),Q()}function eC(A,I,g){return 0|Hg(A|=0,I|=0,g|=0)}function yC(A,I,g){return 0|iI(A|=0,I|=0,g|=0)}function sC(A,I){return A|=0,ag(I|=0,32),0|pC(A,I)}function hC(A,I,g,C,B){return 0|pB[i[8925]](A,I,g,C,B)}function DC(A,I,g,C,B){return 0|pB[i[8932]](A,I,g,C,B)}function fC(A,I,g,C,B){return 0|pB[i[8926]](A,I,g,C,B)}function pC(A,I){return A|=0,I|=0,0|pB[i[8931]](A,I)}function wC(A,I){return A|=0,I|=0,0|pB[i[8927]](A,I)}function nC(A,I){return A|=0,I|=0,0|pB[i[8929]](A,I)}function kC(A,I,g,C,B,Q,i){return lA(A,I,g,C,B,Q,i)}function FC(A){return A?31-_(A-1^A)|0:32}function SC(A,I,g,C){return 0|pB[i[8928]](A,I,g,C)}function NC(A,I){return 0|qI(A|=0,I|=0,32)}function GC(A,I){return 0|qI(A|=0,I|=0,64)}function MC(A,I,g){n(A|=0,I|=0,g|=0)}function KC(A,I){return 0|pC(A|=0,I|=0)}function UC(A,I){return 0|sC(A|=0,I|=0)}function bC(A,I,g,C){return BI(A,I,g,C,1)}function HC(A,I,g,C){return wI(A,I,g,C,1)}function YC(A,I,g,C){return wI(A,I,g,C,2)}function JC(A,I,g,C){return BI(A,I,g,C,2)}function dC(A,I,g,C){return SA(A,I,g,C),0}function mC(A,I,g,C){return UA(A,I,g,C),0}function lC(A,I,g,C){return WA(A,I,g,C)}function uC(A){return SI(A|=0),0}function xC(){return-2147483648}function vC(){return 1073741824}function RC(){return 268435456}function LC(){return 33554432}function PC(A){ag(A|=0,32)}function qC(){return 67108864}function zC(A){ag(A|=0,16)}function jC(){return 16777216}function XC(A,I){bg(A,0,I)}function OC(){return 1564}function WC(){return 1338}function VC(){return 8192}function ZC(){return 384}function TC(){return 256}function $C(){return 416}function AB(){return 128}function IB(){return 208}function gB(){return 64}function CB(){return 16}function BB(){return 32}function QB(){return-65}function iB(){return-33}function oB(){return 48}function EB(){return-17}function aB(){return 12}function _B(){return 24}function cB(){return-1}function tB(){return 2}function rB(){return 3}function eB(){return 8}function yB(){return 1}function sB(){return 4}function hB(){return 0}function DB(){e(),Q()}B(I=o,1024,\"Li8wMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5egBqcwByYW5kb21ieXRlcwBiNjRfcG9zIDw9IGI2NF9sZW4AY3J5cHRvX2dlbmVyaWNoYXNoX2JsYWtlMmJfZmluYWwAYXJnb24yaWQsYXJnb24yaQAkYXJnb24yaQAkYXJnb24yaWQAcmFuZG9tYnl0ZXMvcmFuZG9tYnl0ZXMuYwBzb2RpdW0vY29kZWNzLmMAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2JsYWtlMmItcmVmLmMAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2dlbmVyaWNoYXNoX2JsYWtlMmIuYwB4MjU1MTlibGFrZTJiAGJ1Zl9sZW4gPD0gU0laRV9NQVgAb3V0bGVuIDw9IFVJTlQ4X01BWABTLT5idWZsZW4gPD0gQkxBS0UyQl9CTE9DS0JZVEVTACRhcmdvbjJpJHY9ACRhcmdvbjJpZCR2PQBjdXJ2ZTI1NTE5AGVkMjU1MTkAaG1hY3NoYTUxMjI1NgBjdXJ2ZTI1NTE5eHNhbHNhMjBwb2x5MTMwNQBzb2RpdW1fYmluMmJhc2U2NABzaXBoYXNoMjQAc2hhNTEyAHhzYWxzYTIwADEuMC4yMAAkYXJnb24yaSQAJGFyZ29uMmlkJAAkNyQAAAAAAAC2eFn/hXLTAL1uFf8PCmoAKcABAJjoef+8PKD/mXHO/wC34v60DUj/AAAAAAAAAACwoA7+08mG/54YjwB/aTUAYAy9AKfX+/+fTID+amXh/x78BACSDK4=\"),B(I,1680,\"WfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQ\"),B(I,1728,\"hTuMAb3xJP/4JcMBYNw3ALdMPv/DQj0AMkykAeGkTP9MPaP/dT4fAFGRQP92QQ4AonPW/waKLgB85vT/CoqPADQawgC49EwAgY8pAb70E/97qnr/YoFEAHnVkwBWZR7/oWebAIxZQ//v5b4BQwu1AMbwif7uRbz/Q5fuABMqbP/lVXEBMkSH/xFqCQAyZwH/UAGoASOYHv8QqLkBOFno/2XS/AAp+kcAzKpP/w4u7/9QTe8AvdZL/xGN+QAmUEz/vlV1AFbkqgCc2NABw8+k/5ZCTP+v4RD/jVBiAUzb8gDGonIALtqYAJsr8f6boGj/M7ulAAIRrwBCVKAB9zoeACNBNf5F7L8ALYb1AaN73QAgbhT/NBelALrWRwDpsGAA8u82ATlZigBTAFT/iKBkAFyOeP5ofL4AtbE+//opVQCYgioBYPz2AJeXP/7vhT4AIDicAC2nvf+OhbMBg1bTALuzlv76qg7/0qNOACU0lwBjTRoA7pzV/9XA0QFJLlQAFEEpATbOTwDJg5L+qm8Y/7EhMv6rJsv/Tvd0ANHdmQCFgLIBOiwZAMknOwG9E/wAMeXSAXW7dQC1s7gBAHLbADBekwD1KTgAfQ3M/vStdwAs3SD+VOoUAPmgxgHsfur/L2Oo/qrimf9ms9gA4o16/3pCmf629YYA4+QZAdY56//YrTj/tefSAHeAnf+BX4j/bn4zAAKpt/8HgmL+RbBe/3QE4wHZ8pH/yq0fAWkBJ/8ur0UA5C86/9fgRf7POEX/EP6L/xfP1P/KFH7/X9Vg/wmwIQDIBc//8SqA/iMhwP/45cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/\"),B(I,2720,\"AQ==\"),B(I,2752,\"JuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQ=\"),B(I,2943,\"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\"),B(I,33964,\"AQAAAHbBXwBlcAL/UPyh/vJqxv+FBrIA5N9wAN/uVf4z8xoAPiuL/stBCg==\"),B(I,34016,\"M03tAJGqVv82JjP/8YBl/yl5Sv/sTpsAqZdp/pwpSADCZq//zqJl/wAAAAAAAAAAGy57ARKo/f/Tr5f+w9tgADh2vv7+0fX/mWR+/uiBFf81uPL/x6Td\"),B(I,34144,\"AQ==\"),B(I,34176,\"4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f0xpYnNvZGl1bURSRwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4KZykpFPwv0kaFCrcnJskmXDghGy7tKsRa/G0sTd+zlZ0TDThT3mOvi1RzCmWosnc8uwpqduau7UcuycKBOzWCFIUscpJkA/FMoei/ogEwQrxLZhqokZf40HCLS8IwvlQGo1FsxxhS79YZ6JLREKllVSQGmdYqIHFXhTUO9LjRuzJwoGoQyNDSuBbBpBlTq0FRCGw3Hpnrjt9Md0gnqEib4bW8sDRjWsnFswwcOcuKQeNKqthOc+Njd0/KnFujuLLW828uaPyy713ugo90YC8XQ29jpXhyq/ChFHjIhOw5ZBoIAseMKB5jI/r/vpDpvYLe62xQpBV5xrL3o/m+K1Ny4/J4ccacYSbqzj4nygfCwCHHuIbRHuvgzdZ92up40W7uf0999bpvF3KqZ/AGppjIosV9YwquDfm+BJg/ERtHHBM1C3EbhH0EI/V32yiTJMdAe6vKMry+yRUKvp48TA0QnMRnHUO2Qj7LvtTFTCp+ZfycKX9Z7PrWOqtvy18XWEdKjBlEbIA=\"),B(I,35184,\"7dP1XBpjEljWnPei3vneFA==\"),B(I,35215,\"EA==\"),B(I,35232,\"Z+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FuYL4pCkUQ3cc/7wLWl27XpW8JWOfER8Vmkgj+S1V4cq5iqB9gBW4MSvoUxJMN9DFV0Xb5y/rHegKcG3Jt08ZvBwWmb5IZHvu/GncEPzKEMJG8s6S2qhHRK3KmwXNqI+XZSUT6YbcYxqMgnA7DHf1m/8wvgxkeRp9VRY8oGZykpFIUKtyc4IRsu/G0sTRMNOFNUcwpluwpqdi7JwoGFLHKSoei/oktmGqhwi0vCo1FsxxnoktEkBpnWhTUO9HCgahAWwaQZCGw3Hkx3SCe1vLA0swwcOUqq2E5Pypxb828uaO6Cj3RvY6V4FHjIhAgCx4z6/76Q62xQpPej+b7yeHHGgA==\"),B(I,35600,\"U2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMB\"),B(I,35696,\"EJUBAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQ==\"),B(I,35744,\"xmNjpfh8fITud3eZ9nt7jf/y8g3Wa2u93m9vsZHFxVRgMDBQAgEBA85nZ6lWKyt95/7+GbXX12JNq6vm7HZ2mo/KykUfgoKdicnJQPp9fYfv+voVsllZ645HR8n78PALQa2t7LPU1GdfoqL9Ra+v6iOcnL9TpKT35HJylpvAwFt1t7fC4f39HD2Tk65MJiZqbDY2Wn4/P0H19/cCg8zMT2g0NFxRpaX00eXlNPnx8QjicXGTq9jYc2IxMVMqFRU/CAQEDJXHx1JGIyNlncPDXjAYGCg3lpahCgUFDy+amrUOBwcJJBISNhuAgJvf4uI9zevrJk4nJ2l/srLN6nV1nxIJCRsdg4OeWCwsdDQaGi42Gxst3G5usrRaWu5boKD7pFJS9nY7O0231tZhfbOzzlIpKXvd4+M+Xi8vcROEhJemU1P1udHRaAAAAADB7e0sQCAgYOP8/B95sbHItltb7dRqar6Ny8tGZ76+2XI5OUuUSkremExM1LBYWOiFz89Ku9DQa8Xv7ypPqqrl7fv7FoZDQ8WaTU3XZjMzVRGFhZSKRUXP6fn5EAQCAgb+f3+BoFBQ8Hg8PEQln5+6S6io46JRUfNdo6P+gEBAwAWPj4o/kpKtIZ2dvHA4OEjx9fUEY7y833e2tsGv2tp1QiEhYyAQEDDl//8a/fPzDr/S0m2Bzc1MGAwMFCYTEzXD7Owvvl9f4TWXl6KIRETMLhcXOZPExFdVp6fy/H5+gno9PUfIZGSsul1d5zIZGSvmc3OVwGBgoBmBgZieT0/Ro9zcf0QiImZUKip+O5CQqwuIiIOMRkbKx+7uKWu4uNMoFBQ8p97eebxeXuIWCwsdrdvbdtvg4DtkMjJWdDo6ThQKCh6SSUnbDAYGCkgkJGy4XFzkn8LCXb3T025DrKzvxGJipjmRkagxlZWk0+TkN/J5eYvV5+cyi8jIQ243N1nabW23AY2NjLHV1WScTk7SSamp4NhsbLSsVlb68/T0B8/q6iXKZWWv9Hp6jkeurukQCAgYb7q61fB4eIhKJSVvXC4ucjgcHCRXpqbxc7S0x5fGxlHL6Ogjod3dfOh0dJw+Hx8hlktL3WG9vdwNi4uGD4qKheBwcJB8Pj5CcbW1xMxmZqqQSEjYBgMDBff29gEcDg4SwmFho2o1NV+uV1f5abm50BeGhpGZwcFYOh0dJyeenrnZ4eE46/j4EyuYmLMiEREz0mlpu6nZ2XAHjo6JM5SUpy2bm7Y8Hh4iFYeHksnp6SCHzs5JqlVV/1AoKHil3996A4yMj1mhofgJiYmAGg0NF2W/v9rX5uYxhEJCxtBoaLiCQUHDKZmZsFotLXceDw8Re7Cwy6hUVPxtu7vWLBYWOgoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAAR\");var fB,pB=(fB=[null,function(A,I,g,B,Q){var E,a,_;return A|=0,I|=0,g|=0,B|=0,Q|=0,s=E=(a=s)-128&-64,i[E>>2]=67108863&(o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24),i[E+4>>2]=(o[Q+3|0]|o[Q+4|0]<<8|o[Q+5|0]<<16|o[Q+6|0]<<24)>>>2&67108611,i[E+8>>2]=(o[Q+6|0]|o[Q+7|0]<<8|o[Q+8|0]<<16|o[Q+9|0]<<24)>>>4&67092735,i[E+12>>2]=(o[Q+9|0]|o[Q+10|0]<<8|o[Q+11|0]<<16|o[Q+12|0]<<24)>>>6&66076671,_=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[E+20>>2]=0,i[E+24>>2]=0,i[E+28>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,i[E+16>>2]=_>>>8&1048575,i[E+40>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[E+44>>2]=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[E+48>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,Q=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,C[E+80|0]=0,i[E+56>>2]=0,i[E+60>>2]=0,i[E+52>>2]=Q,vA(E,I,g,B),gI(E,A),s=a,0},function(A,I,g,B,Q){var E,a,_;return A|=0,I|=0,g|=0,B|=0,Q|=0,s=E=(a=s)-192&-64,i[E+64>>2]=67108863&(o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24),i[E+68>>2]=(o[Q+3|0]|o[Q+4|0]<<8|o[Q+5|0]<<16|o[Q+6|0]<<24)>>>2&67108611,i[E+72>>2]=(o[Q+6|0]|o[Q+7|0]<<8|o[Q+8|0]<<16|o[Q+9|0]<<24)>>>4&67092735,i[E+76>>2]=(o[Q+9|0]|o[Q+10|0]<<8|o[Q+11|0]<<16|o[Q+12|0]<<24)>>>6&66076671,_=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[E+84>>2]=0,i[E+88>>2]=0,i[E+92>>2]=0,i[E+96>>2]=0,i[E+100>>2]=0,i[E+80>>2]=_>>>8&1048575,i[E+104>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[E+108>>2]=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[E+112>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,Q=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,C[E+144|0]=0,i[E+120>>2]=0,i[E+124>>2]=0,i[E+116>>2]=Q,vA(Q=E- -64|0,I,g,B),gI(Q,I=E+48|0),A=oI(A,I),s=a,0|A},function(A,I){var g;return I|=0,i[(A|=0)>>2]=67108863&(o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24),i[A+4>>2]=(o[I+3|0]|o[I+4|0]<<8|o[I+5|0]<<16|o[I+6|0]<<24)>>>2&67108611,i[A+8>>2]=(o[I+6|0]|o[I+7|0]<<8|o[I+8|0]<<16|o[I+9|0]<<24)>>>4&67092735,i[A+12>>2]=(o[I+9|0]|o[I+10|0]<<8|o[I+11|0]<<16|o[I+12|0]<<24)>>>6&66076671,g=o[I+12|0]|o[I+13|0]<<8|o[I+14|0]<<16|o[I+15|0]<<24,i[A+20>>2]=0,i[A+24>>2]=0,i[A+28>>2]=0,i[A+32>>2]=0,i[A+36>>2]=0,i[A+16>>2]=g>>>8&1048575,i[A+40>>2]=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,i[A+44>>2]=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,i[A+48>>2]=o[I+24|0]|o[I+25|0]<<8|o[I+26|0]<<16|o[I+27|0]<<24,I=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,C[A+80|0]=0,i[A+56>>2]=0,i[A+60>>2]=0,i[A+52>>2]=I,0},function(A,I,g,C){return vA(A|=0,I|=0,g|=0,C|=0),0},function(A,I){return gI(A|=0,I|=0),0},function(A,I,g){A|=0,I|=0,g|=0;var B,Q=0,E=0,a=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,gA=0,CA=0,BA=0,QA=0,iA=0,oA=0,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0,sA=0,hA=0,DA=0,pA=0,wA=0,nA=0,kA=0;for(s=B=s-368|0;D=(a=o[g+Q|0])^o[0|(c=Q+34112|0)]|D,h=a^o[c+192|0]|h,y=a^o[c+160|0]|y,e=a^o[c+128|0]|e,_=a^o[c+96|0]|_,t=a^o[c- -64|0]|t,E=a^o[c+32|0]|E,31!=(0|(Q=Q+1|0)););if(Q=-1,!(256&((255&((a=127^(c=127&o[g+31|0]))|h))-1|(255&(a|y))-1|(255&(a|e))-1|(255&(87^c|_))-1|(255&(t|c))-1|(255&(E|c))-1|(255&(c|D))-1))){for(Q=I,I=o[I+28|0]|o[I+29|0]<<8|o[I+30|0]<<16|o[I+31|0]<<24,i[B+360>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,i[B+364>>2]=I,I=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[B+352>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[B+356>>2]=I,E=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,I=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,i[B+336>>2]=I,i[B+340>>2]=E,E=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[B+344>>2]=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24,i[B+348>>2]=E,C[B+336|0]=248&I,C[B+367|0]=63&o[B+367|0]|64,fA(B+288|0,g),i[B+260>>2]=0,i[B+264>>2]=0,i[B+268>>2]=0,i[B+272>>2]=0,i[B+276>>2]=0,i[B+208>>2]=0,i[B+212>>2]=0,i[B+216>>2]=0,i[B+220>>2]=0,i[B+224>>2]=0,i[B+228>>2]=0,I=i[B+308>>2],i[B+160>>2]=i[B+304>>2],i[B+164>>2]=I,I=i[B+316>>2],i[B+168>>2]=i[B+312>>2],i[B+172>>2]=I,I=i[B+324>>2],i[B+176>>2]=i[B+320>>2],i[B+180>>2]=I,i[B+244>>2]=0,i[B+248>>2]=0,i[B+240>>2]=1,i[B+252>>2]=0,i[B+256>>2]=0,i[B+192>>2]=0,i[B+196>>2]=0,i[B+200>>2]=0,i[B+204>>2]=0,I=i[B+292>>2],i[B+144>>2]=i[B+288>>2],i[B+148>>2]=I,I=i[B+300>>2],i[B+152>>2]=i[B+296>>2],i[B+156>>2]=I,i[B+116>>2]=0,i[B+120>>2]=0,i[B+124>>2]=0,i[B+128>>2]=0,i[B+132>>2]=0,i[B+100>>2]=0,i[B+104>>2]=0,i[B+96>>2]=1,i[B+108>>2]=0,i[B+112>>2]=0,g=254;Z=i[B+276>>2],a=i[B+180>>2],T=i[B+96>>2],$=i[B+192>>2],AA=i[B+144>>2],IA=i[B+240>>2],gA=i[B+100>>2],CA=i[B+196>>2],BA=i[B+148>>2],QA=i[B+244>>2],U=i[B+104>>2],iA=i[B+200>>2],H=i[B+152>>2],oA=i[B+248>>2],d=i[B+108>>2],EA=i[B+204>>2],m=i[B+156>>2],aA=i[B+252>>2],Y=i[B+112>>2],_A=i[B+208>>2],M=i[B+160>>2],cA=i[B+256>>2],D=i[B+116>>2],tA=i[B+212>>2],r=i[B+164>>2],rA=i[B+260>>2],h=i[B+120>>2],eA=i[B+216>>2],y=i[B+168>>2],yA=i[B+264>>2],e=i[B+124>>2],sA=i[B+220>>2],_=i[B+172>>2],hA=i[B+268>>2],t=i[B+128>>2],DA=i[B+224>>2],E=i[B+176>>2],G=i[B+272>>2],pA=g,K=(F=(I=0-((I=V)^(V=o[(wA=B+336|0)+(g>>>3|0)|0]>>>(7&g)&1))|0)&((Q=i[B+132>>2])^(j=i[B+228>>2])))^Q,i[B+132>>2]=K,X=a^(S=I&(a^Z)),i[B+84>>2]=X-K,J=t^(w=I&(t^DA)),i[B+128>>2]=J,O=(N=I&(E^G))^E,i[B+80>>2]=O-J,u=e^(n=I&(e^sA)),i[B+124>>2]=u,nA=_^(k=I&(_^hA)),i[B+76>>2]=nA-u,x=h^(p=I&(h^eA)),i[B+120>>2]=x,kA=y^(c=I&(y^yA)),i[B+72>>2]=kA-x,v=D^(a=I&(D^tA)),i[B+116>>2]=v,L=r^(D=I&(r^rA)),i[B+68>>2]=L-v,P=Y^(h=I&(Y^_A)),i[B+112>>2]=P,l=M^(y=I&(M^cA)),i[B+64>>2]=l-P,q=d^(e=I&(d^EA)),i[B+108>>2]=q,W=m^(_=I&(m^aA)),i[B+60>>2]=W-q,z=U^(t=I&(U^iA)),i[B+104>>2]=z,d=H^(E=I&(H^oA)),i[B+56>>2]=d-z,U=gA^(Q=I&(gA^CA)),i[B+100>>2]=U,m=BA^(g=I&(BA^QA)),i[B+52>>2]=m-U,H=T^(Y=I&(T^$)),i[B+96>>2]=H,M=(I&=AA^IA)^AA,i[B+48>>2]=M-H,r=S^Z,F^=j,i[B+36>>2]=r-F,S=N^G,w^=DA,i[B+32>>2]=S-w,N=k^hA,n^=sA,i[B+28>>2]=N-n,k=c^yA,p^=eA,i[B+24>>2]=k-p,c=D^rA,a^=tA,i[B+20>>2]=c-a,D=y^cA,h^=_A,i[B+16>>2]=D-h,y=_^aA,e^=EA,i[B+12>>2]=y-e,_=E^oA,t^=iA,i[B+8>>2]=_-t,E=g^QA,Q^=CA,i[B+4>>2]=E-Q,g=I^IA,I=Y^$,i[B>>2]=g-I,i[B+276>>2]=r+F,i[B+272>>2]=S+w,i[B+268>>2]=n+N,i[B+264>>2]=p+k,i[B+260>>2]=a+c,i[B+256>>2]=h+D,i[B+248>>2]=_+t,i[B+244>>2]=Q+E,i[B+240>>2]=I+g,i[B+252>>2]=e+y,i[B+228>>2]=K+X,i[B+224>>2]=J+O,i[B+220>>2]=u+nA,i[B+216>>2]=x+kA,i[B+212>>2]=v+L,i[B+208>>2]=l+P,i[B+204>>2]=q+W,i[B+200>>2]=d+z,i[B+196>>2]=U+m,i[B+192>>2]=M+H,b(X=B+96|0,J=B+48|0,K=B+240|0),b(G=B+192|0,G,B),R(J,B),R(B,K),r=i[B+192>>2],F=i[B+96>>2],S=i[B+196>>2],w=i[B+100>>2],N=i[B+200>>2],n=i[B+104>>2],k=i[B+204>>2],p=i[B+108>>2],c=i[B+208>>2],a=i[B+112>>2],D=i[B+212>>2],h=i[B+116>>2],y=i[B+216>>2],e=i[B+120>>2],_=i[B+220>>2],t=i[B+124>>2],E=i[B+224>>2],Q=i[B+128>>2],g=i[B+228>>2],I=i[B+132>>2],i[B+180>>2]=g+I,i[B+176>>2]=Q+E,i[B+172>>2]=_+t,i[B+168>>2]=e+y,i[B+164>>2]=h+D,i[B+160>>2]=a+c,i[B+156>>2]=p+k,i[B+152>>2]=n+N,i[B+148>>2]=S+w,i[B+144>>2]=r+F,i[B+228>>2]=I-g,i[B+224>>2]=Q-E,i[B+220>>2]=t-_,i[B+216>>2]=e-y,i[B+212>>2]=h-D,i[B+208>>2]=a-c,i[B+204>>2]=p-k,i[B+200>>2]=n-N,i[B+196>>2]=w-S,i[B+192>>2]=F-r,b(K,B,J),u=i[B+52>>2],p=i[B+4>>2],x=i[B+56>>2],c=i[B+8>>2],v=i[B+64>>2],y=i[B+16>>2],P=i[B+60>>2],e=i[B+12>>2],q=i[B+72>>2],_=i[B+24>>2],z=i[B+68>>2],t=i[B+20>>2],U=i[B+80>>2],E=i[B+32>>2],H=i[B+76>>2],Q=i[B+28>>2],j=i[B+84>>2],I=i[B+36>>2],O=i[B+48>>2],g=i[B>>2]-O|0,i[B>>2]=g,I=I-j|0,i[B+36>>2]=I,Y=Q-H|0,i[B+28>>2]=Y,M=E-U|0,i[B+32>>2]=M,a=t-z|0,i[B+20>>2]=a,D=_-q|0,i[B+24>>2]=D,h=e-P|0,i[B+12>>2]=h,y=y-v|0,i[B+16>>2]=y,e=c-x|0,i[B+8>>2]=e,E=p-u|0,i[B+4>>2]=E,R(G,G),I=Ig(I,I>>31,121666,0),Q=f,W=I,I=Ig((33554431&(Q=(r=I+16777216|0)>>>0<16777216?Q+1|0:Q))<<7|r>>>25,Q>>25,19,0),t=f,Q=I,I=Ig(g,g>>31,121666,0),l=f+t|0,I=I>>>0>(Q=Q+I|0)>>>0?l+1|0:l,g=(_=Q+33554432|0)>>>0<33554432?I+1|0:I,F=Q-(-67108864&_)|0,i[B+96>>2]=F,t=Ig(E,E>>31,121666,0),Q=f,Q=(E=t+16777216|0)>>>0<16777216?Q+1|0:Q,S=(t-(-33554432&E)|0)+((67108863&g)<<6|_>>>26)|0,i[B+100>>2]=S,l=(I=Q)>>25,Q=(33554431&I)<<7|E>>>25,g=Ig(e,e>>31,121666,0)+Q|0,I=l+f|0,I=g>>>0>>0?I+1|0:I,t=(w=g+33554432|0)>>>0<33554432?I+1|0:I,N=g-(-67108864&w)|0,i[B+104>>2]=N,Q=Ig(y,y>>31,121666,0),E=f,g=Ig(h,h>>31,121666,0),I=f,L=Q,d=g,Q=(33554431&(I=(n=g+16777216|0)>>>0<16777216?I+1|0:I))<<7|n>>>25,I=(I>>25)+E|0,I=(g=L+Q|0)>>>0>>0?I+1|0:I,E=(k=g+33554432|0)>>>0<33554432?I+1|0:I,p=g-(-67108864&k)|0,i[B+112>>2]=p,Q=Ig(D,D>>31,121666,0),_=f,g=Ig(a,a>>31,121666,0),I=f,L=Q,m=g,Q=(33554431&(I=(c=g+16777216|0)>>>0<16777216?I+1|0:I))<<7|c>>>25,I=(I>>25)+_|0,I=(g=L+Q|0)>>>0>>0?I+1|0:I,Q=(a=g+33554432|0)>>>0<33554432?I+1|0:I,D=g-(-67108864&a)|0,i[B+120>>2]=D,_=Ig(M,M>>31,121666,0),e=f,g=Ig(Y,Y>>31,121666,0),I=f,M=g,g=(33554431&(I=(h=g+16777216|0)>>>0<16777216?I+1|0:I))<<7|h>>>25,I=(I>>25)+e|0,I=g>>>0>(_=g+_|0)>>>0?I+1|0:I,g=(y=_+33554432|0)>>>0<33554432?I+1|0:I,e=_-(-67108864&y)|0,i[B+128>>2]=e,_=(t=d+((67108863&t)<<6|w>>>26)|0)-(-33554432&n)|0,i[B+108>>2]=_,t=(E=m+((67108863&E)<<6|k>>>26)|0)-(-33554432&c)|0,i[B+116>>2]=t,E=(I=M+((67108863&Q)<<6|a>>>26)|0)-(-33554432&h)|0,i[B+124>>2]=E,g=(g=W+((67108863&g)<<6|y>>>26)|0)-(-33554432&r)|0,i[B+132>>2]=g,R(I=B+144|0,I),i[B+84>>2]=g+j,i[B+80>>2]=e+U,i[B+76>>2]=E+H,i[B+72>>2]=D+q,i[B+68>>2]=t+z,i[B+64>>2]=p+v,i[B+60>>2]=_+P,i[B+56>>2]=N+x,i[B+52>>2]=S+u,i[B+48>>2]=F+O,g=pA-1|0,b(X,B+288|0,G),b(G,B,J),pA;);D=i[B+144>>2],F=i[B+240>>2],h=i[B+148>>2],S=i[B+244>>2],y=i[B+152>>2],w=i[B+248>>2],e=i[B+156>>2],N=i[B+252>>2],_=i[B+160>>2],n=i[B+256>>2],t=i[B+164>>2],k=i[B+260>>2],E=i[B+168>>2],p=i[B+264>>2],Q=i[B+172>>2],c=i[B+268>>2],g=i[B+176>>2],a=i[B+272>>2],r=0-V|0,I=i[B+276>>2],i[B+276>>2]=r&(I^i[B+180>>2])^I,i[B+272>>2]=a^r&(g^a),i[B+268>>2]=c^r&(Q^c),i[B+264>>2]=p^r&(E^p),i[B+260>>2]=k^r&(t^k),i[B+256>>2]=n^r&(_^n),i[B+252>>2]=N^r&(e^N),i[B+248>>2]=w^r&(y^w),i[B+244>>2]=S^r&(h^S),i[B+240>>2]=F^r&(D^F),F=i[B+192>>2],D=i[B+96>>2],S=i[B+196>>2],h=i[B+100>>2],w=i[B+200>>2],y=i[B+104>>2],N=i[B+204>>2],e=i[B+108>>2],n=i[B+208>>2],_=i[B+112>>2],k=i[B+212>>2],t=i[B+116>>2],p=i[B+216>>2],E=i[B+120>>2],c=i[B+220>>2],Q=i[B+124>>2],a=i[B+224>>2],g=i[B+128>>2],I=i[B+228>>2],i[B+228>>2]=r&(I^i[B+132>>2])^I,i[B+224>>2]=a^r&(g^a),i[B+220>>2]=c^r&(Q^c),i[B+216>>2]=p^r&(E^p),i[B+212>>2]=k^r&(t^k),i[B+208>>2]=n^r&(_^n),i[B+204>>2]=N^r&(e^N),i[B+200>>2]=w^r&(y^w),i[B+196>>2]=S^r&(h^S),i[B+192>>2]=F^r&(D^F),LA(G,G),b(K,K,G),QI(A,K),XC(wA,32),Q=0}return s=B+368|0,0|Q},function(A,I){var g,B,Q,E,a,_,c,t,r,e,y,h,D,f,p,w,n,k,F,S;return I|=0,s=g=s-304|0,C[0|(A|=0)]=o[0|I],C[A+1|0]=o[I+1|0],C[A+2|0]=o[I+2|0],C[A+3|0]=o[I+3|0],C[A+4|0]=o[I+4|0],C[A+5|0]=o[I+5|0],C[A+6|0]=o[I+6|0],C[A+7|0]=o[I+7|0],C[A+8|0]=o[I+8|0],C[A+9|0]=o[I+9|0],C[A+10|0]=o[I+10|0],C[A+11|0]=o[I+11|0],C[A+12|0]=o[I+12|0],C[A+13|0]=o[I+13|0],C[A+14|0]=o[I+14|0],C[A+15|0]=o[I+15|0],C[A+16|0]=o[I+16|0],C[A+17|0]=o[I+17|0],C[A+18|0]=o[I+18|0],C[A+19|0]=o[I+19|0],C[A+20|0]=o[I+20|0],C[A+21|0]=o[I+21|0],C[A+22|0]=o[I+22|0],C[A+23|0]=o[I+23|0],C[A+24|0]=o[I+24|0],C[A+25|0]=o[I+25|0],C[A+26|0]=o[I+26|0],C[A+27|0]=o[I+27|0],C[A+28|0]=o[I+28|0],C[A+29|0]=o[I+29|0],C[A+30|0]=o[I+30|0],I=o[I+31|0],C[0|A]=248&o[0|A],C[A+31|0]=63&I|64,nA(g+48|0,A),I=i[g+128>>2],B=i[g+88>>2],Q=i[g+132>>2],E=i[g+92>>2],a=i[g+136>>2],_=i[g+96>>2],c=i[g+140>>2],t=i[g+100>>2],r=i[g+144>>2],e=i[g+104>>2],y=i[g+148>>2],h=i[g+108>>2],D=i[g+152>>2],f=i[g+112>>2],p=i[g+156>>2],w=i[g+116>>2],n=i[g+160>>2],k=i[g+120>>2],F=i[g+124>>2],S=i[g+164>>2],i[g+292>>2]=F+S,i[g+288>>2]=n+k,i[g+284>>2]=p+w,i[g+280>>2]=D+f,i[g+276>>2]=y+h,i[g+272>>2]=r+e,i[g+268>>2]=c+t,i[g+264>>2]=a+_,i[g+260>>2]=Q+E,i[g+256>>2]=I+B,i[g+244>>2]=S-F,i[g+240>>2]=n-k,i[g+236>>2]=p-w,i[g+232>>2]=D-f,i[g+228>>2]=y-h,i[g+224>>2]=r-e,i[g+220>>2]=c-t,i[g+216>>2]=a-_,i[g+212>>2]=Q-E,i[g+208>>2]=I-B,LA(I=g+208|0,I),b(g,g+256|0,I),QI(A,g),s=g+304|0,0},function(A,I,g,B,Q){A|=0,B|=0,Q|=0;var E,a=0,_=0,c=0,t=0;if(s=E=s-112|0,(I|=0)|(g|=0)){a=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,i[E+24>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,i[E+28>>2]=a,a=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[E+16>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[E+20>>2]=a,a=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[E>>2]=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,i[E+4>>2]=a,a=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[E+8>>2]=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24,i[E+12>>2]=a,Q=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,B=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[E+104>>2]=0,i[E+108>>2]=0,i[E+96>>2]=Q,i[E+100>>2]=B;A:{if(!g&I>>>0>=64|g){for(;AC(A,E+96|0,E,0),B=o[E+104|0]+1|0,C[E+104|0]=B,B=o[E+105|0]+(B>>>8|0)|0,C[E+105|0]=B,B=o[E+106|0]+(B>>>8|0)|0,C[E+106|0]=B,B=o[E+107|0]+(B>>>8|0)|0,C[E+107|0]=B,B=o[E+108|0]+(B>>>8|0)|0,C[E+108|0]=B,B=o[E+109|0]+(B>>>8|0)|0,C[E+109|0]=B,B=o[E+110|0]+(B>>>8|0)|0,C[E+110|0]=B,C[E+111|0]=o[E+111|0]+(B>>>8|0),A=A- -64|0,g=g-1|0,!(g=(I=I+-64|0)>>>0<4294967232?g+1|0:g)&I>>>0>63|g;);if(!(I|g))break A}if(B=0,AC(E+32|0,E+96|0,E,0),a=3&I,Q=0,!g&I>>>0>=4|g)for(g=60&I,I=0;_=c=E+32|0,C[A+Q|0]=o[_+Q|0],C[(t=1|Q)+A|0]=o[_+t|0],C[(_=2|Q)+A|0]=o[_+c|0],C[(_=3|Q)+A|0]=o[_+(E+32|0)|0],Q=Q+4|0,(0|g)!=(0|(I=I+4|0)););if(a)for(;C[A+Q|0]=o[(E+32|0)+Q|0],Q=Q+1|0,(0|a)!=(0|(B=B+1|0)););}XC(E+32|0,64),XC(E,32)}return s=E+112|0,0},function(A,I,g,B,Q,E,a,_){A|=0,I|=0,Q|=0,E|=0,a|=0,_|=0;var c,t=0;if(s=c=s-112|0,(g|=0)|(B|=0)){t=o[_+28|0]|o[_+29|0]<<8|o[_+30|0]<<16|o[_+31|0]<<24,i[c+24>>2]=o[_+24|0]|o[_+25|0]<<8|o[_+26|0]<<16|o[_+27|0]<<24,i[c+28>>2]=t,t=o[_+20|0]|o[_+21|0]<<8|o[_+22|0]<<16|o[_+23|0]<<24,i[c+16>>2]=o[_+16|0]|o[_+17|0]<<8|o[_+18|0]<<16|o[_+19|0]<<24,i[c+20>>2]=t,t=o[_+4|0]|o[_+5|0]<<8|o[_+6|0]<<16|o[_+7|0]<<24,i[c>>2]=o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24,i[c+4>>2]=t,t=o[_+12|0]|o[_+13|0]<<8|o[_+14|0]<<16|o[_+15|0]<<24,i[c+8>>2]=o[_+8|0]|o[_+9|0]<<8|o[_+10|0]<<16|o[_+11|0]<<24,i[c+12>>2]=t,_=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[c+96>>2]=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,i[c+100>>2]=_,C[c+104|0]=E,C[c+111|0]=a>>>24,C[c+110|0]=a>>>16,C[c+109|0]=a>>>8,C[c+108|0]=a,C[c+107|0]=(16777215&a)<<8|E>>>24,C[c+106|0]=(65535&a)<<16|E>>>16,C[c+105|0]=(255&a)<<24|E>>>8;A:{if(!B&g>>>0>=64|B){for(;;){for(_=0,AC(c+32|0,c+96|0,c,0);E=c+32|0,C[A+_|0]=o[E+_|0]^o[I+_|0],C[(Q=1|_)+A|0]=o[Q+E|0]^o[I+Q|0],64!=(0|(_=_+2|0)););if(Q=o[c+104|0]+1|0,C[c+104|0]=Q,Q=o[c+105|0]+(Q>>>8|0)|0,C[c+105|0]=Q,Q=o[c+106|0]+(Q>>>8|0)|0,C[c+106|0]=Q,Q=o[c+107|0]+(Q>>>8|0)|0,C[c+107|0]=Q,Q=o[c+108|0]+(Q>>>8|0)|0,C[c+108|0]=Q,Q=o[c+109|0]+(Q>>>8|0)|0,C[c+109|0]=Q,Q=o[c+110|0]+(Q>>>8|0)|0,C[c+110|0]=Q,C[c+111|0]=o[c+111|0]+(Q>>>8|0),I=I- -64|0,A=A- -64|0,B=B-1|0,!(!(B=(g=g+-64|0)>>>0<4294967232?B+1|0:B)&g>>>0>63|B))break}if(!(g|B))break A}if(_=0,AC(c+32|0,c+96|0,c,0),E=1&g,1!=(0|g)|B)for(B=62&g,Q=0;a=c+32|0,C[A+_|0]=o[a+_|0]^o[I+_|0],C[(g=1|_)+A|0]=o[g+a|0]^o[I+g|0],_=_+2|0,(0|B)!=(0|(Q=Q+2|0)););E&&(C[A+_|0]=o[(c+32|0)+_|0]^o[I+_|0])}XC(c+32|0,64),XC(c,32)}return s=c+112|0,0},function(A,I,g,C,B,Q,i,o,E){A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0;var a,_,c=0;if(_=c=s,s=a=c-192&-32,P(E|=0,o|=0,a- -64|0),E=0,i>>>0<=63)o=0;else for(c=64;H(Q+E|0,a- -64|0),E=o=c,(c=o- -64|0)>>>0<=i>>>0;);if((c=32|o)>>>0>i>>>0)E=o;else for(;V(Q+o|0,a- -64|0),E=c,(c=(o=c)+32|0)>>>0<=i>>>0;);if((o=31&i)&&(bg((c=a+32|0)|o,0,32-o|0),Ng(c,Q+E|0,o),V(c,a- -64|0)),E=32,o=0,B>>>0<32)Q=0;else for(;m(A+o|0,C+o|0,a- -64|0),Q=E,(E=(o=E)+32|0)>>>0<=B>>>0;);return(o=31&B)&&(bg((E=a+32|0)|o,0,32-o|0),Ng(E,C+Q|0,o),m(a,E,a- -64|0),Ng(A+Q|0,a,o)),Y(I,g,i,B,a- -64|0),s=_,0},function(A,I,g,C,B,Q,i,o,E){A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0;var a,_,c=0;if(_=c=s,s=a=c-224&-32,P(E|=0,o|=0,a+96|0),E=0,i>>>0<=63)o=0;else for(c=64;H(Q+E|0,a+96|0),E=o=c,(c=o- -64|0)>>>0<=i>>>0;);if((c=32|o)>>>0>i>>>0)E=o;else for(;V(Q+o|0,a+96|0),E=c,(c=(o=c)+32|0)>>>0<=i>>>0;);(o=31&i)&&(bg((c=a- -64|0)|o,0,32-o|0),Ng(c,Q+E|0,o),V(c,a+96|0));A:{I:{g:{C:{B:{if(A){if(E=32,g>>>0<32)break B;for(Q=0;d(A+Q|0,I+Q|0,a+96|0),Q=o=E,(E=o+32|0)>>>0<=g>>>0;);}else{if(Q=32,g>>>0<32)break g;for(E=0;d(a+32|0,I+E|0,a+96|0),E=o=Q,(Q=o+32|0)>>>0<=g>>>0;);}if(!(Q=31&g))break A;if(A)break C;break I}if(o=0,Q=g,!g)break A}x(A+o|0,I+o|0,Q,a+96|0);break A}if(o=0,Q=g,!g)break A}x(a+32|0,I+o|0,Q,a+96|0)}Y(a,B,i,g,a+96|0),o=-1;A:{I:{if(I=B-16|0){if(16==(0|I))break I;break A}o=oI(a,C);break A}o=NC(a,C)}return!A|!o||bg(A,0,g),s=_,0|o},function(A,I,g,C,B,Q,E,a,_){A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,E|=0;var c,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0;if(s=c=s-528|0,G(_|=0,a|=0,c+400|0),_=0,E>>>0<=31)a=0;else for(r=32;L(Q+_|0,c+400|0),_=a=r,(r=a+32|0)>>>0<=E>>>0;);if((_=16|a)>>>0<=E>>>0)for(r=c+416|0,y=c+432|0,h=c+448|0,e=c+464|0,D=c+480|0;f=o[0|(a=Q+a|0)]|o[a+1|0]<<8|o[a+2|0]<<16|o[a+3|0]<<24,p=o[a+4|0]|o[a+5|0]<<8|o[a+6|0]<<16|o[a+7|0]<<24,w=o[a+8|0]|o[a+9|0]<<8|o[a+10|0]<<16|o[a+11|0]<<24,n=o[a+12|0]|o[a+13|0]<<8|o[a+14|0]<<16|o[a+15|0]<<24,a=i[D+12>>2],i[c+520>>2]=i[D+8>>2],i[c+524>>2]=a,a=i[D+4>>2],i[c+512>>2]=i[D>>2],i[c+516>>2]=a,a=i[e+12>>2],i[c+376>>2]=i[e+8>>2],i[c+380>>2]=a,a=i[e+4>>2],i[c+368>>2]=i[e>>2],i[c+372>>2]=a,a=i[D+12>>2],i[c+360>>2]=i[D+8>>2],i[c+364>>2]=a,a=i[D+4>>2],i[c+352>>2]=i[D>>2],i[c+356>>2]=a,AI(a=c+496|0,c+368|0,c+352|0),t=i[c+508>>2],i[D+8>>2]=i[c+504>>2],i[D+12>>2]=t,t=i[c+500>>2],i[D>>2]=i[c+496>>2],i[D+4>>2]=t,t=i[h+12>>2],i[c+344>>2]=i[h+8>>2],i[c+348>>2]=t,t=i[h+4>>2],i[c+336>>2]=i[h>>2],i[c+340>>2]=t,t=i[e+12>>2],i[c+328>>2]=i[e+8>>2],i[c+332>>2]=t,t=i[e+4>>2],i[c+320>>2]=i[e>>2],i[c+324>>2]=t,AI(a,c+336|0,c+320|0),t=i[c+508>>2],i[e+8>>2]=i[c+504>>2],i[e+12>>2]=t,t=i[c+500>>2],i[e>>2]=i[c+496>>2],i[e+4>>2]=t,t=i[y+12>>2],i[c+312>>2]=i[y+8>>2],i[c+316>>2]=t,t=i[y+4>>2],i[c+304>>2]=i[y>>2],i[c+308>>2]=t,t=i[h+12>>2],i[c+296>>2]=i[h+8>>2],i[c+300>>2]=t,t=i[h+4>>2],i[c+288>>2]=i[h>>2],i[c+292>>2]=t,AI(a,c+304|0,c+288|0),t=i[c+508>>2],i[h+8>>2]=i[c+504>>2],i[h+12>>2]=t,t=i[c+500>>2],i[h>>2]=i[c+496>>2],i[h+4>>2]=t,t=i[r+12>>2],i[c+280>>2]=i[r+8>>2],i[c+284>>2]=t,t=i[r+4>>2],i[c+272>>2]=i[r>>2],i[c+276>>2]=t,t=i[y+12>>2],i[c+264>>2]=i[y+8>>2],i[c+268>>2]=t,t=i[y+4>>2],i[c+256>>2]=i[y>>2],i[c+260>>2]=t,AI(a,c+272|0,c+256|0),t=i[c+508>>2],i[y+8>>2]=i[c+504>>2],i[y+12>>2]=t,t=i[c+500>>2],i[y>>2]=i[c+496>>2],i[y+4>>2]=t,t=i[c+412>>2],i[c+248>>2]=i[c+408>>2],i[c+252>>2]=t,t=i[c+404>>2],i[c+240>>2]=i[c+400>>2],i[c+244>>2]=t,t=i[r+12>>2],i[c+232>>2]=i[r+8>>2],i[c+236>>2]=t,t=i[r+4>>2],i[c+224>>2]=i[r>>2],i[c+228>>2]=t,AI(a,c+240|0,c+224|0),t=i[c+508>>2],i[r+8>>2]=i[c+504>>2],i[r+12>>2]=t,t=i[c+500>>2],i[r>>2]=i[c+496>>2],i[r+4>>2]=t,t=i[c+524>>2],i[c+216>>2]=i[c+520>>2],i[c+220>>2]=t,t=i[c+412>>2],i[c+200>>2]=i[c+408>>2],i[c+204>>2]=t,t=i[c+516>>2],i[c+208>>2]=i[c+512>>2],i[c+212>>2]=t,t=i[c+404>>2],i[c+192>>2]=i[c+400>>2],i[c+196>>2]=t,AI(a,c+208|0,c+192|0),i[c+412>>2]=n^i[c+508>>2],i[c+408>>2]=i[c+504>>2]^w,i[c+404>>2]=i[c+500>>2]^p,i[c+400>>2]=i[c+496>>2]^f,(_=(a=_)+16|0)>>>0<=E>>>0;);if((_=15&E)&&(bg((r=c+384|0)|_,0,16-_|0),Ng(r,Q+a|0,_),_=i[c+384>>2],r=i[c+388>>2],y=i[c+392>>2],h=i[c+396>>2],a=i[c+492>>2],Q=i[c+488>>2],i[c+520>>2]=Q,i[c+524>>2]=a,e=i[c+476>>2],i[c+184>>2]=i[c+472>>2],i[c+188>>2]=e,i[c+168>>2]=Q,i[c+172>>2]=a,a=i[c+484>>2],Q=i[c+480>>2],i[c+512>>2]=Q,i[c+516>>2]=a,e=i[c+468>>2],i[c+176>>2]=i[c+464>>2],i[c+180>>2]=e,i[c+160>>2]=Q,i[c+164>>2]=a,AI(Q=c+496|0,c+176|0,c+160|0),a=i[c+508>>2],i[c+488>>2]=i[c+504>>2],i[c+492>>2]=a,a=i[c+460>>2],i[c+152>>2]=i[c+456>>2],i[c+156>>2]=a,a=i[c+476>>2],i[c+136>>2]=i[c+472>>2],i[c+140>>2]=a,a=i[c+500>>2],i[c+480>>2]=i[c+496>>2],i[c+484>>2]=a,a=i[c+452>>2],i[c+144>>2]=i[c+448>>2],i[c+148>>2]=a,a=i[c+468>>2],i[c+128>>2]=i[c+464>>2],i[c+132>>2]=a,AI(Q,c+144|0,c+128|0),a=i[c+508>>2],i[c+472>>2]=i[c+504>>2],i[c+476>>2]=a,a=i[c+444>>2],i[c+120>>2]=i[c+440>>2],i[c+124>>2]=a,a=i[c+460>>2],i[c+104>>2]=i[c+456>>2],i[c+108>>2]=a,a=i[c+500>>2],i[c+464>>2]=i[c+496>>2],i[c+468>>2]=a,a=i[c+436>>2],i[c+112>>2]=i[c+432>>2],i[c+116>>2]=a,a=i[c+452>>2],i[c+96>>2]=i[c+448>>2],i[c+100>>2]=a,AI(Q,c+112|0,c+96|0),a=i[c+508>>2],i[c+456>>2]=i[c+504>>2],i[c+460>>2]=a,a=i[c+428>>2],i[c+88>>2]=i[c+424>>2],i[c+92>>2]=a,a=i[c+444>>2],i[c+72>>2]=i[c+440>>2],i[c+76>>2]=a,a=i[c+500>>2],i[c+448>>2]=i[c+496>>2],i[c+452>>2]=a,a=i[c+420>>2],i[c+80>>2]=i[c+416>>2],i[c+84>>2]=a,a=i[c+436>>2],i[c+64>>2]=i[c+432>>2],i[c+68>>2]=a,AI(Q,c+80|0,c- -64|0),a=i[c+508>>2],i[c+440>>2]=i[c+504>>2],i[c+444>>2]=a,a=i[c+412>>2],i[c+56>>2]=i[c+408>>2],i[c+60>>2]=a,a=i[c+428>>2],i[c+40>>2]=i[c+424>>2],i[c+44>>2]=a,a=i[c+500>>2],i[c+432>>2]=i[c+496>>2],i[c+436>>2]=a,a=i[c+404>>2],i[c+48>>2]=i[c+400>>2],i[c+52>>2]=a,a=i[c+420>>2],i[c+32>>2]=i[c+416>>2],i[c+36>>2]=a,AI(Q,c+48|0,c+32|0),a=i[c+508>>2],i[c+424>>2]=i[c+504>>2],i[c+428>>2]=a,a=i[c+524>>2],i[c+24>>2]=i[c+520>>2],i[c+28>>2]=a,a=i[c+412>>2],i[c+8>>2]=i[c+408>>2],i[c+12>>2]=a,a=i[c+500>>2],i[c+416>>2]=i[c+496>>2],i[c+420>>2]=a,a=i[c+516>>2],i[c+16>>2]=i[c+512>>2],i[c+20>>2]=a,a=i[c+404>>2],i[c>>2]=i[c+400>>2],i[c+4>>2]=a,AI(Q,c+16|0,c),i[c+412>>2]=h^i[c+508>>2],i[c+408>>2]=y^i[c+504>>2],i[c+404>>2]=r^i[c+500>>2],i[c+400>>2]=_^i[c+496>>2]),r=16,a=0,B>>>0<16)_=0;else for(;X(A+a|0,C+a|0,c+400|0),_=r,(r=(a=r)+16|0)>>>0<=B>>>0;);return(Q=15&B)&&(bg((a=c+384|0)|Q,0,16-Q|0),Ng(a,C+_|0,Q),X(C=c+512|0,a,c+400|0),Ng(A+_|0,C,Q)),l(I,g,E,B,c+400|0),s=c+528|0,0},function(A,I,g,C,B,Q,E,a,_){A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,E|=0;var c,t=0,r=0,e=0,y=0,h=0,D=0,f=0,p=0,w=0,n=0;if(s=c=s-544|0,G(_|=0,a|=0,c+432|0),_=0,E>>>0<=31)a=0;else for(r=32;L(Q+_|0,c+432|0),_=a=r,(r=a+32|0)>>>0<=E>>>0;);if((_=16|a)>>>0<=E>>>0)for(r=c+448|0,y=c+464|0,h=c+480|0,e=c+496|0,D=c+512|0;f=o[0|(a=Q+a|0)]|o[a+1|0]<<8|o[a+2|0]<<16|o[a+3|0]<<24,p=o[a+4|0]|o[a+5|0]<<8|o[a+6|0]<<16|o[a+7|0]<<24,w=o[a+8|0]|o[a+9|0]<<8|o[a+10|0]<<16|o[a+11|0]<<24,n=o[a+12|0]|o[a+13|0]<<8|o[a+14|0]<<16|o[a+15|0]<<24,a=i[D+12>>2],i[c+392>>2]=i[D+8>>2],i[c+396>>2]=a,a=i[D+4>>2],i[c+384>>2]=i[D>>2],i[c+388>>2]=a,a=i[e+12>>2],i[c+376>>2]=i[e+8>>2],i[c+380>>2]=a,a=i[e+4>>2],i[c+368>>2]=i[e>>2],i[c+372>>2]=a,a=i[D+12>>2],i[c+360>>2]=i[D+8>>2],i[c+364>>2]=a,a=i[D+4>>2],i[c+352>>2]=i[D>>2],i[c+356>>2]=a,AI(a=c+528|0,c+368|0,c+352|0),t=i[c+540>>2],i[D+8>>2]=i[c+536>>2],i[D+12>>2]=t,t=i[c+532>>2],i[D>>2]=i[c+528>>2],i[D+4>>2]=t,t=i[h+12>>2],i[c+344>>2]=i[h+8>>2],i[c+348>>2]=t,t=i[h+4>>2],i[c+336>>2]=i[h>>2],i[c+340>>2]=t,t=i[e+12>>2],i[c+328>>2]=i[e+8>>2],i[c+332>>2]=t,t=i[e+4>>2],i[c+320>>2]=i[e>>2],i[c+324>>2]=t,AI(a,c+336|0,c+320|0),t=i[c+540>>2],i[e+8>>2]=i[c+536>>2],i[e+12>>2]=t,t=i[c+532>>2],i[e>>2]=i[c+528>>2],i[e+4>>2]=t,t=i[y+12>>2],i[c+312>>2]=i[y+8>>2],i[c+316>>2]=t,t=i[y+4>>2],i[c+304>>2]=i[y>>2],i[c+308>>2]=t,t=i[h+12>>2],i[c+296>>2]=i[h+8>>2],i[c+300>>2]=t,t=i[h+4>>2],i[c+288>>2]=i[h>>2],i[c+292>>2]=t,AI(a,c+304|0,c+288|0),t=i[c+540>>2],i[h+8>>2]=i[c+536>>2],i[h+12>>2]=t,t=i[c+532>>2],i[h>>2]=i[c+528>>2],i[h+4>>2]=t,t=i[r+12>>2],i[c+280>>2]=i[r+8>>2],i[c+284>>2]=t,t=i[r+4>>2],i[c+272>>2]=i[r>>2],i[c+276>>2]=t,t=i[y+12>>2],i[c+264>>2]=i[y+8>>2],i[c+268>>2]=t,t=i[y+4>>2],i[c+256>>2]=i[y>>2],i[c+260>>2]=t,AI(a,c+272|0,c+256|0),t=i[c+540>>2],i[y+8>>2]=i[c+536>>2],i[y+12>>2]=t,t=i[c+532>>2],i[y>>2]=i[c+528>>2],i[y+4>>2]=t,t=i[c+444>>2],i[c+248>>2]=i[c+440>>2],i[c+252>>2]=t,t=i[c+436>>2],i[c+240>>2]=i[c+432>>2],i[c+244>>2]=t,t=i[r+12>>2],i[c+232>>2]=i[r+8>>2],i[c+236>>2]=t,t=i[r+4>>2],i[c+224>>2]=i[r>>2],i[c+228>>2]=t,AI(a,c+240|0,c+224|0),t=i[c+540>>2],i[r+8>>2]=i[c+536>>2],i[r+12>>2]=t,t=i[c+532>>2],i[r>>2]=i[c+528>>2],i[r+4>>2]=t,t=i[c+396>>2],i[c+216>>2]=i[c+392>>2],i[c+220>>2]=t,t=i[c+444>>2],i[c+200>>2]=i[c+440>>2],i[c+204>>2]=t,t=i[c+388>>2],i[c+208>>2]=i[c+384>>2],i[c+212>>2]=t,t=i[c+436>>2],i[c+192>>2]=i[c+432>>2],i[c+196>>2]=t,AI(a,c+208|0,c+192|0),i[c+444>>2]=n^i[c+540>>2],i[c+440>>2]=i[c+536>>2]^w,i[c+436>>2]=i[c+532>>2]^p,i[c+432>>2]=i[c+528>>2]^f,(_=(a=_)+16|0)>>>0<=E>>>0;);(_=15&E)&&(bg((r=c+416|0)|_,0,16-_|0),Ng(r,Q+a|0,_),_=i[c+416>>2],r=i[c+420>>2],y=i[c+424>>2],h=i[c+428>>2],a=i[c+524>>2],Q=i[c+520>>2],i[c+392>>2]=Q,i[c+396>>2]=a,e=i[c+508>>2],i[c+184>>2]=i[c+504>>2],i[c+188>>2]=e,i[c+168>>2]=Q,i[c+172>>2]=a,a=i[c+516>>2],Q=i[c+512>>2],i[c+384>>2]=Q,i[c+388>>2]=a,e=i[c+500>>2],i[c+176>>2]=i[c+496>>2],i[c+180>>2]=e,i[c+160>>2]=Q,i[c+164>>2]=a,AI(Q=c+528|0,c+176|0,c+160|0),a=i[c+540>>2],i[c+520>>2]=i[c+536>>2],i[c+524>>2]=a,a=i[c+492>>2],i[c+152>>2]=i[c+488>>2],i[c+156>>2]=a,a=i[c+508>>2],i[c+136>>2]=i[c+504>>2],i[c+140>>2]=a,a=i[c+532>>2],i[c+512>>2]=i[c+528>>2],i[c+516>>2]=a,a=i[c+484>>2],i[c+144>>2]=i[c+480>>2],i[c+148>>2]=a,a=i[c+500>>2],i[c+128>>2]=i[c+496>>2],i[c+132>>2]=a,AI(Q,c+144|0,c+128|0),a=i[c+540>>2],i[c+504>>2]=i[c+536>>2],i[c+508>>2]=a,a=i[c+476>>2],i[c+120>>2]=i[c+472>>2],i[c+124>>2]=a,a=i[c+492>>2],i[c+104>>2]=i[c+488>>2],i[c+108>>2]=a,a=i[c+532>>2],i[c+496>>2]=i[c+528>>2],i[c+500>>2]=a,a=i[c+468>>2],i[c+112>>2]=i[c+464>>2],i[c+116>>2]=a,a=i[c+484>>2],i[c+96>>2]=i[c+480>>2],i[c+100>>2]=a,AI(Q,c+112|0,c+96|0),a=i[c+540>>2],i[c+488>>2]=i[c+536>>2],i[c+492>>2]=a,a=i[c+460>>2],i[c+88>>2]=i[c+456>>2],i[c+92>>2]=a,a=i[c+476>>2],i[c+72>>2]=i[c+472>>2],i[c+76>>2]=a,a=i[c+532>>2],i[c+480>>2]=i[c+528>>2],i[c+484>>2]=a,a=i[c+452>>2],i[c+80>>2]=i[c+448>>2],i[c+84>>2]=a,a=i[c+468>>2],i[c+64>>2]=i[c+464>>2],i[c+68>>2]=a,AI(Q,c+80|0,c- -64|0),a=i[c+540>>2],i[c+472>>2]=i[c+536>>2],i[c+476>>2]=a,a=i[c+444>>2],i[c+56>>2]=i[c+440>>2],i[c+60>>2]=a,a=i[c+460>>2],i[c+40>>2]=i[c+456>>2],i[c+44>>2]=a,a=i[c+532>>2],i[c+464>>2]=i[c+528>>2],i[c+468>>2]=a,a=i[c+436>>2],i[c+48>>2]=i[c+432>>2],i[c+52>>2]=a,a=i[c+452>>2],i[c+32>>2]=i[c+448>>2],i[c+36>>2]=a,AI(Q,c+48|0,c+32|0),a=i[c+540>>2],i[c+456>>2]=i[c+536>>2],i[c+460>>2]=a,a=i[c+396>>2],i[c+24>>2]=i[c+392>>2],i[c+28>>2]=a,a=i[c+444>>2],i[c+8>>2]=i[c+440>>2],i[c+12>>2]=a,a=i[c+532>>2],i[c+448>>2]=i[c+528>>2],i[c+452>>2]=a,a=i[c+388>>2],i[c+16>>2]=i[c+384>>2],i[c+20>>2]=a,a=i[c+436>>2],i[c>>2]=i[c+432>>2],i[c+4>>2]=a,AI(Q,c+16|0,c),i[c+444>>2]=h^i[c+540>>2],i[c+440>>2]=y^i[c+536>>2],i[c+436>>2]=r^i[c+532>>2],i[c+432>>2]=_^i[c+528>>2]);A:{I:{g:{C:{B:{if(A){if(r=16,g>>>0<16)break B;for(_=0;O(A+_|0,I+_|0,c+432|0),_=a=r,(r=a+16|0)>>>0<=g>>>0;);}else{if(_=16,g>>>0<16)break g;for(r=0;O(c+528|0,I+r|0,c+432|0),r=a=_,(_=a+16|0)>>>0<=g>>>0;);}if(!(_=15&g))break A;if(A)break C;break I}if(a=0,!(_=g))break A}Z(A+a|0,I+a|0,_,c+432|0);break A}if(a=0,!(_=g))break A}Z(c+528|0,I+a|0,_,c+432|0)}l(c+384|0,B,E,g,c+432|0),a=-1;A:{I:{if(I=B-16|0){if(16==(0|I))break I;break A}a=oI(c+384|0,C);break A}a=NC(c+384|0,C)}return!A|!a||bg(A,0,g),s=c+544|0,0|a},function(A,I,g,C,B){var Q;return A|=0,C|=0,B|=0,s=Q=s+-64|0,(I|=0)|(g|=0)&&(i[Q+8>>2]=2036477234,i[Q+12>>2]=1797285236,i[Q>>2]=1634760805,i[Q+4>>2]=857760878,i[Q+16>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,i[Q+20>>2]=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[Q+24>>2]=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,i[Q+28>>2]=o[B+12|0]|o[B+13|0]<<8|o[B+14|0]<<16|o[B+15|0]<<24,i[Q+32>>2]=o[B+16|0]|o[B+17|0]<<8|o[B+18|0]<<16|o[B+19|0]<<24,i[Q+36>>2]=o[B+20|0]|o[B+21|0]<<8|o[B+22|0]<<16|o[B+23|0]<<24,i[Q+40>>2]=o[B+24|0]|o[B+25|0]<<8|o[B+26|0]<<16|o[B+27|0]<<24,B=o[B+28|0]|o[B+29|0]<<8|o[B+30|0]<<16|o[B+31|0]<<24,i[Q+48>>2]=0,i[Q+52>>2]=0,i[Q+44>>2]=B,i[Q+56>>2]=o[0|C]|o[C+1|0]<<8|o[C+2|0]<<16|o[C+3|0]<<24,i[Q+60>>2]=o[C+4|0]|o[C+5|0]<<8|o[C+6|0]<<16|o[C+7|0]<<24,z(Q,A=bg(A,0,I),A,I,g),XC(Q,64)),s=Q- -64|0,0},function(A,I,g,C,B){var Q;return A|=0,C|=0,B|=0,s=Q=s+-64|0,(I|=0)|(g|=0)&&(i[Q+8>>2]=2036477234,i[Q+12>>2]=1797285236,i[Q>>2]=1634760805,i[Q+4>>2]=857760878,i[Q+16>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,i[Q+20>>2]=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[Q+24>>2]=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,i[Q+28>>2]=o[B+12|0]|o[B+13|0]<<8|o[B+14|0]<<16|o[B+15|0]<<24,i[Q+32>>2]=o[B+16|0]|o[B+17|0]<<8|o[B+18|0]<<16|o[B+19|0]<<24,i[Q+36>>2]=o[B+20|0]|o[B+21|0]<<8|o[B+22|0]<<16|o[B+23|0]<<24,i[Q+40>>2]=o[B+24|0]|o[B+25|0]<<8|o[B+26|0]<<16|o[B+27|0]<<24,B=o[B+28|0]|o[B+29|0]<<8|o[B+30|0]<<16|o[B+31|0]<<24,i[Q+48>>2]=0,i[Q+44>>2]=B,i[Q+52>>2]=o[0|C]|o[C+1|0]<<8|o[C+2|0]<<16|o[C+3|0]<<24,i[Q+56>>2]=o[C+4|0]|o[C+5|0]<<8|o[C+6|0]<<16|o[C+7|0]<<24,i[Q+60>>2]=o[C+8|0]|o[C+9|0]<<8|o[C+10|0]<<16|o[C+11|0]<<24,z(Q,A=bg(A,0,I),A,I,g),XC(Q,64)),s=Q- -64|0,0},function(A,I,g,C,B,Q,E,a){var _;return A|=0,I|=0,B|=0,Q|=0,E|=0,a|=0,s=_=s+-64|0,(g|=0)|(C|=0)&&(i[_+8>>2]=2036477234,i[_+12>>2]=1797285236,i[_>>2]=1634760805,i[_+4>>2]=857760878,i[_+16>>2]=o[0|a]|o[a+1|0]<<8|o[a+2|0]<<16|o[a+3|0]<<24,i[_+20>>2]=o[a+4|0]|o[a+5|0]<<8|o[a+6|0]<<16|o[a+7|0]<<24,i[_+24>>2]=o[a+8|0]|o[a+9|0]<<8|o[a+10|0]<<16|o[a+11|0]<<24,i[_+28>>2]=o[a+12|0]|o[a+13|0]<<8|o[a+14|0]<<16|o[a+15|0]<<24,i[_+32>>2]=o[a+16|0]|o[a+17|0]<<8|o[a+18|0]<<16|o[a+19|0]<<24,i[_+36>>2]=o[a+20|0]|o[a+21|0]<<8|o[a+22|0]<<16|o[a+23|0]<<24,i[_+40>>2]=o[a+24|0]|o[a+25|0]<<8|o[a+26|0]<<16|o[a+27|0]<<24,i[_+44>>2]=o[a+28|0]|o[a+29|0]<<8|o[a+30|0]<<16|o[a+31|0]<<24,i[_+48>>2]=Q,i[_+52>>2]=E,i[_+56>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,i[_+60>>2]=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,z(_,I,A,g,C),XC(_,64)),s=_- -64|0,0},function(A,I,g,C,B,Q,E){var a;return A|=0,I|=0,B|=0,Q|=0,E|=0,s=a=s+-64|0,(g|=0)|(C|=0)&&(i[a+8>>2]=2036477234,i[a+12>>2]=1797285236,i[a>>2]=1634760805,i[a+4>>2]=857760878,i[a+16>>2]=o[0|E]|o[E+1|0]<<8|o[E+2|0]<<16|o[E+3|0]<<24,i[a+20>>2]=o[E+4|0]|o[E+5|0]<<8|o[E+6|0]<<16|o[E+7|0]<<24,i[a+24>>2]=o[E+8|0]|o[E+9|0]<<8|o[E+10|0]<<16|o[E+11|0]<<24,i[a+28>>2]=o[E+12|0]|o[E+13|0]<<8|o[E+14|0]<<16|o[E+15|0]<<24,i[a+32>>2]=o[E+16|0]|o[E+17|0]<<8|o[E+18|0]<<16|o[E+19|0]<<24,i[a+36>>2]=o[E+20|0]|o[E+21|0]<<8|o[E+22|0]<<16|o[E+23|0]<<24,i[a+40>>2]=o[E+24|0]|o[E+25|0]<<8|o[E+26|0]<<16|o[E+27|0]<<24,E=o[E+28|0]|o[E+29|0]<<8|o[E+30|0]<<16|o[E+31|0]<<24,i[a+48>>2]=Q,i[a+44>>2]=E,i[a+52>>2]=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,i[a+56>>2]=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[a+60>>2]=o[B+8|0]|o[B+9|0]<<8|o[B+10|0]<<16|o[B+11|0]<<24,z(a,I,A,g,C),XC(a,64)),s=a- -64|0,0}],fB.grow=function(A){var I=this.length;return this.length=this.length+A,I},fB.set=function(A,I){this[A]=I},fB.get=function(A){return this[A]},fB);function wB(){return g.byteLength/65536|0}return{e:Object.create(Object.prototype,{grow:{value:function(A){A|=0;var B=0|wB(),Q=B+A|0;if(B>>0<4294967280?(xI(A,A+C|0,0,g|=0,C,B,o|=0,E,a|=0,c|=0,t|=0),I&&(B=(A=C+16|0)>>>0<16?B+1|0:B,i[I>>2]=A,i[I+4>>2]=B)):(rC(),Q()),0},D:function(A,I,g,C,B,Q,i,o,E,a,_,c){return 0|mI(A|=0,I|=0,g|=0,C|=0,(A=0)|(B|=0),Q|=0,i|=0,A|(o|=0),E|=0,_|=0,c|=0)},E:function(A,I,g,C,B,o,E,a,_,c,t){return A|=0,I|=0,C|=0,E|=0,_|=0,E|=_=0,!(B|=0)&(C|=_)>>>0<4294967280?(mI(A,A+C|0,0,g|=0,C,B,o|=0,E,a|=0,c|=0,t|=0),I&&(B=(A=C+16|0)>>>0<16?B+1|0:B,i[I>>2]=A,i[I+4>>2]=B)):(rC(),Q()),0},F:function(A,I,g,C,B,Q,i,o,E,a,_){return 0|dI(A|=0,g|=0,(A=0)|(C|=0),B|=0,Q|=0,i|=0,A|(o|=0),E|=0,a|=0,_|=0)},G:function(A,I,g,C,B,Q,o,E,a,_,c){return I|=0,g|=0,C|=0,B|=0,E|=0,E|=0,g=-1,!(Q|=0)&(B|=0)>>>0>=16|Q&&(g=dI(A|=0,C,B-16|0,Q-(B>>>0<16)|0,(C+B|0)-16|0,o|=0,E,a|=0,_|=0,c|=0)),I&&(i[I>>2]=g?0:B-16|0,i[I+4>>2]=g?0:Q-(B>>>0<16)|0),0|g},H:function(A,I,g,C,B,Q,i,o,E,a,_){return 0|HI(A|=0,g|=0,(A=0)|(C|=0),B|=0,Q|=0,i|=0,A|(o|=0),E|=0,a|=0,_|=0)},I:function(A,I,g,C,B,Q,o,E,a,_,c){return I|=0,g|=0,C|=0,B|=0,E|=0,E|=0,g=-1,!(Q|=0)&(B|=0)>>>0>=16|Q&&(g=HI(A|=0,C,B-16|0,Q-(B>>>0<16)|0,(C+B|0)-16|0,o|=0,E,a|=0,_|=0,c|=0)),I&&(i[I>>2]=g?0:B-16|0,i[I+4>>2]=g?0:Q-(B>>>0<16)|0),0|g},J:BB,K:aB,L:hB,M:CB,N:EB,O:PC,P:BB,Q:eB,R:hB,S:CB,T:EB,U:PC,V:function(A,I,g,C,B,Q,i,o,E,a,_,c){return 0|pI(A|=0,I|=0,g|=0,C|=0,(A=0)|(B|=0),Q|=0,i|=0,A|(o|=0),E|=0,_|=0,c|=0)},W:function(A,I,g,C,B,o,E,a,_,c,t){return A|=0,I|=0,C|=0,E|=0,_|=0,E|=_=0,!(B|=0)&(C|=_)>>>0<4294967280?(pI(A,A+C|0,0,g|=0,C,B,o|=0,E,a|=0,c|=0,t|=0),I&&(B=(A=C+16|0)>>>0<16?B+1|0:B,i[I>>2]=A,i[I+4>>2]=B)):(rC(),Q()),0},X:function(A,I,g,C,B,Q,i,o,E,a,_){return 0|hI(A|=0,g|=0,(A=0)|(C|=0),B|=0,Q|=0,i|=0,A|(o|=0),E|=0,a|=0,_|=0)},Y:function(A,I,g,C,B,Q,o,E,a,_,c){return I|=0,g|=0,C|=0,B|=0,E|=0,E|=0,g=-1,!(Q|=0)&(B|=0)>>>0>=16|Q&&(g=hI(A|=0,C,B-16|0,Q-(B>>>0<16)|0,(C+B|0)-16|0,o|=0,E,a|=0,_|=0,c|=0)),I&&(i[I>>2]=g?0:B-16|0,i[I+4>>2]=g?0:Q-(B>>>0<16)|0),0|g},Z:BB,_:_B,$:hB,aa:CB,ba:EB,ca:PC,da:BB,ea:BB,fa:function(){return 1462},ga:_I,ha:JI,ia:PC,ja:BB,ka:BB,la:IB,ma:PC,na:mA,oa:function(A,I,g,C){return 0|mC(A|=0,I|=0,g|=0,C|=0)},pa:Sg,qa:function(A,I,g,C,B){var Q;return A|=0,I|=0,g|=0,C|=0,s=Q=s-240|0,mA(Q,B|=0,32),UA(Q,I,g,C),JA(Q,I=Q+208|0),UA(g=Q+104|0,I,32,0),JA(g,A),XC(I,32),s=Q+240|0,0},ra:function(A,I,g,C,B){var Q,i;return A|=0,I|=0,g|=0,C|=0,s=Q=s-272|0,mA(i=Q+32|0,B|=0,32),UA(i,I,g,C),JA(i,I=Q+240|0),UA(g=Q+136|0,I,32,0),JA(g,Q),XC(I,32),I=NC(A,Q),g=MI(Q,A,32),s=Q+272|0,((0|A)==(0|Q)?-1:I)|g},sa:gB,ta:BB,ua:$C,va:PC,wa:iI,xa:EC,ya:wg,za:function(A,I,g,C,B){var Q;return A|=0,I|=0,g|=0,C|=0,s=Q=s-480|0,iI(Q,B|=0,32),SA(Q,I,g,C),j(Q,I=Q+416|0),SA(g=Q+208|0,I,64,0),j(g,A),XC(I,64),s=Q+480|0,0},Aa:function(A,I,g,C,B){var Q,i;return A|=0,I|=0,g|=0,C|=0,s=Q=s-544|0,iI(i=Q- -64|0,B|=0,32),SA(i,I,g,C),j(i,I=Q+480|0),SA(g=Q+272|0,I,64,0),j(g,Q),XC(I,64),I=GC(A,Q),g=MI(Q,A,64),s=Q+544|0,((0|A)==(0|Q)?-1:I)|g},Ba:BB,Ca:BB,Da:$C,Ea:PC,Fa:yC,Ga:EC,Ha:function(A,I){I|=0;var g,B=0;return s=g=s+-64|0,wg(A|=0,g),B=i[g+28>>2],A=i[g+24>>2],C[I+24|0]=A,C[I+25|0]=A>>>8,C[I+26|0]=A>>>16,C[I+27|0]=A>>>24,C[I+28|0]=B,C[I+29|0]=B>>>8,C[I+30|0]=B>>>16,C[I+31|0]=B>>>24,B=i[g+20>>2],A=i[g+16>>2],C[I+16|0]=A,C[I+17|0]=A>>>8,C[I+18|0]=A>>>16,C[I+19|0]=A>>>24,C[I+20|0]=B,C[I+21|0]=B>>>8,C[I+22|0]=B>>>16,C[I+23|0]=B>>>24,B=i[g+12>>2],A=i[g+8>>2],C[I+8|0]=A,C[I+9|0]=A>>>8,C[I+10|0]=A>>>16,C[I+11|0]=A>>>24,C[I+12|0]=B,C[I+13|0]=B>>>8,C[I+14|0]=B>>>16,C[I+15|0]=B>>>24,B=i[g+4>>2],A=i[g>>2],C[0|I]=A,C[I+1|0]=A>>>8,C[I+2|0]=A>>>16,C[I+3|0]=A>>>24,C[I+4|0]=B,C[I+5|0]=B>>>8,C[I+6|0]=B>>>16,C[I+7|0]=B>>>24,s=g- -64|0,0},Ia:_I,Ja:JI,Ka:BB,La:BB,Ma:BB,Na:BB,Oa:_B,Pa:BB,Qa:CB,Ra:CB,Sa:EB,Ta:function(){return 1476},Ua:function(A,I,g){return 0|cI(A|=0,I|=0,g|=0)},Va:UC,Wa:cC,Xa:Pg,Ya:qg,Za:Bg,_a:Qg,$a:Yg,ab:function(A,I,g,C,B,Q,i,o){A|=0,I|=0,g|=0,Q|=0;var E,a=0;return a=C|=0,C=B|=0,E=0|a,s=a=s-32|0,B=-1,cC(a,i|=0,o|=0)||(B=aI(A,I,g,E,C,Q,a),XC(a,32)),s=a+32|0,0|B},bb:function(A,I,g,C,B,i){return A|=0,I|=0,B|=0,i|=0,!(C|=0)&(g|=0)>>>0>=4294967280|C&&(rC(),Q()),0|aI(A+16|0,A,I,g,C,B,i)},cb:function(A,I,g,C,B,Q,i){return 0|sg(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},db:Jg,eb:function(A,I,g,C,B,Q,i,o){A|=0,I|=0,g|=0,Q|=0;var E,a=0;return a=C|=0,C=B|=0,E=0|a,s=a=s-32|0,B=-1,cC(a,i|=0,o|=0)||(B=eI(A,I,g,E,C,Q,a),XC(a,32)),s=a+32|0,0|B},fb:hg,gb:function(A,I,g,C,B,Q,i){return 0|_g(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},hb:function(A,I,g,B,Q){A|=0,I|=0,Q|=0;var o,E,a,_,c=0,t=0;return c=g|=0,g=B|=0,_=0|c,c=B=s,s=o=B-512&-64,B=-1,UC(E=o- -64|0,a=o+32|0)||(iC(B=o+128|0,0,0,24),lC(B,E,32,0),lC(B,Q,32,0),eC(B,t=o+96|0,24),B=sg(A+32|0,I,_,g,t,Q,a),I=i[o+92>>2],g=i[o+88>>2],C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[o+84>>2],g=i[o+80>>2],C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[o+76>>2],g=i[o+72>>2],C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[o+68>>2],g=i[o+64>>2],C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,XC(a,32),XC(E,32),XC(t,24)),s=c,0|B},ib:function(A,I,g,C,B,Q){A|=0,I|=0,B|=0,Q|=0;var i,o,E=0;return o=E=s,s=i=E-448&-64,E=-1,!(C|=0)&(g|=0)>>>0>=48|C&&(iC(E=i- -64|0,0,0,24),lC(E,I,32,0),lC(E,B,32,0),eC(E,B=i+32|0,24),E=_g(A,I+32|0,g-32|0,C-(g>>>0<32)|0,B,I,Q)),s=o,0|E},jb:oB,kb:cI,lb:sC,mb:pg,nb:Pg,ob:qg,pb:Bg,qb:Qg,rb:BB,sb:BB,tb:BB,ub:BB,vb:_B,wb:BB,xb:CB,yb:CB,zb:EB,Ab:yA,Bb:BB,Cb:CB,Db:BB,Eb:CB,Fb:wA,Gb:BB,Hb:CB,Ib:BB,Jb:CB,Kb:AC,Lb:gB,Mb:CB,Nb:BB,Ob:CB,Pb:IC,Qb:gB,Rb:CB,Sb:BB,Tb:CB,Ub:gC,Vb:gB,Wb:CB,Xb:BB,Yb:CB,Zb:CB,_b:gB,$b:BB,ac:CB,bc:gB,cc:BB,dc:WC,ec:ZC,fc:function(A,I,g,C,B,Q,i){return 0|kC(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},gc:iC,hc:function(A,I,g,C){return 0|lC(A|=0,I|=0,g|=0,C|=0)},ic:eC,jc:PC,kc:CB,lc:gB,mc:BB,nc:CB,oc:gB,pc:BB,qc:CB,rc:CB,sc:ZC,tc:PC,uc:kC,vc:function(A,I,g,C,B,Q,i,o,E){return 0|QA(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0,o|=0,E|=0)},wc:eA,xc:function(A,I,g,B,i,E){A|=0,I|=0,i|=0,E|=0;var a=0,_=0,c=0,t=0,r=0,e=0,y=0;if(a=-1,!((B|=0)-65>>>0<4294967232|(g|=0)>>>0>64)){A:{if(!g||!I){if(((t=255&B)-65&255)>>>0>191){i?(_=725511199^(o[i+8|0]|o[i+9|0]<<8|o[i+10|0]<<16|o[i+11|0]<<24),g=-1694144372^(o[i+12|0]|o[i+13|0]<<8|o[i+14|0]<<16|o[i+15|0]<<24),I=-1377402159^(o[0|i]|o[i+1|0]<<8|o[i+2|0]<<16|o[i+3|0]<<24),i=1359893119^(o[i+4|0]|o[i+5|0]<<8|o[i+6|0]<<16|o[i+7|0]<<24)):(_=725511199,g=-1694144372,I=-1377402159,i=1359893119),E?(c=327033209^(o[E+8|0]|o[E+9|0]<<8|o[E+10|0]<<16|o[E+11|0]<<24),B=1541459225^(o[E+12|0]|o[E+13|0]<<8|o[E+14|0]<<16|o[E+15|0]<<24),a=-79577749^(o[0|E]|o[E+1|0]<<8|o[E+2|0]<<16|o[E+3|0]<<24),E=528734635^(o[E+4|0]|o[E+5|0]<<8|o[E+6|0]<<16|o[E+7|0]<<24)):(c=327033209,B=1541459225,a=-79577749,E=528734635),bg(A- -64|0,0,293),C[A+56|0]=c,C[A+57|0]=c>>>8,C[A+58|0]=c>>>16,C[A+59|0]=c>>>24,C[A+60|0]=B,C[A+61|0]=B>>>8,C[A+62|0]=B>>>16,C[A+63|0]=B>>>24,C[A+48|0]=a,C[A+49|0]=a>>>8,C[A+50|0]=a>>>16,C[A+51|0]=a>>>24,C[A+52|0]=E,C[A+53|0]=E>>>8,C[A+54|0]=E>>>16,C[A+55|0]=E>>>24,C[A+40|0]=_,C[A+41|0]=_>>>8,C[A+42|0]=_>>>16,C[A+43|0]=_>>>24,C[A+44|0]=g,C[A+45|0]=g>>>8,C[A+46|0]=g>>>16,C[A+47|0]=g>>>24,C[A+32|0]=I,C[A+33|0]=I>>>8,C[A+34|0]=I>>>16,C[A+35|0]=I>>>24,C[A+36|0]=i,C[A+37|0]=i>>>8,C[A+38|0]=i>>>16,C[A+39|0]=i>>>24,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,I=-222443256^t,C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,C[A+4|0]=103,C[A+5|0]=230,C[A+6|0]=9,C[A+7|0]=106;break A}rC(),Q()}s=e=s-128|0,!I|((y=255&B)-65&255)>>>0<=191|((t=255&g)-65&255)>>>0<=191?(rC(),Q()):(i?(_=725511199^(o[i+8|0]|o[i+9|0]<<8|o[i+10|0]<<16|o[i+11|0]<<24),g=-1694144372^(o[i+12|0]|o[i+13|0]<<8|o[i+14|0]<<16|o[i+15|0]<<24),a=-1377402159^(o[0|i]|o[i+1|0]<<8|o[i+2|0]<<16|o[i+3|0]<<24),i=1359893119^(o[i+4|0]|o[i+5|0]<<8|o[i+6|0]<<16|o[i+7|0]<<24)):(_=725511199,g=-1694144372,a=-1377402159,i=1359893119),E?(c=327033209^(o[E+8|0]|o[E+9|0]<<8|o[E+10|0]<<16|o[E+11|0]<<24),B=1541459225^(o[E+12|0]|o[E+13|0]<<8|o[E+14|0]<<16|o[E+15|0]<<24),r=-79577749^(o[0|E]|o[E+1|0]<<8|o[E+2|0]<<16|o[E+3|0]<<24),E=528734635^(o[E+4|0]|o[E+5|0]<<8|o[E+6|0]<<16|o[E+7|0]<<24)):(c=327033209,B=1541459225,r=-79577749,E=528734635),bg(A- -64|0,0,293),C[A+56|0]=c,C[A+57|0]=c>>>8,C[A+58|0]=c>>>16,C[A+59|0]=c>>>24,C[A+60|0]=B,C[A+61|0]=B>>>8,C[A+62|0]=B>>>16,C[A+63|0]=B>>>24,C[A+48|0]=r,C[A+49|0]=r>>>8,C[A+50|0]=r>>>16,C[A+51|0]=r>>>24,C[A+52|0]=E,C[A+53|0]=E>>>8,C[A+54|0]=E>>>16,C[A+55|0]=E>>>24,C[A+40|0]=_,C[A+41|0]=_>>>8,C[A+42|0]=_>>>16,C[A+43|0]=_>>>24,C[A+44|0]=g,C[A+45|0]=g>>>8,C[A+46|0]=g>>>16,C[A+47|0]=g>>>24,C[A+32|0]=a,C[A+33|0]=a>>>8,C[A+34|0]=a>>>16,C[A+35|0]=a>>>24,C[A+36|0]=i,C[A+37|0]=i>>>8,C[A+38|0]=i>>>16,C[A+39|0]=i>>>24,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,g=-222443256^(t<<8|y),C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,g=t>>>24^1779033703,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=Ng(bg(e,0,128),I,t),Ng(A+96|0,g,128),I=128+(o[A+352|0]|o[A+353|0]<<8|o[A+354|0]<<16|o[A+355|0]<<24)|0,C[A+352|0]=I,C[A+353|0]=I>>>8,C[A+354|0]=I>>>16,C[A+355|0]=I>>>24,XC(g,128),s=g+128|0)}a=0}return 0|a},yc:lC,zc:Hg,Ac:gB,Bc:CC,Cc:function(){return 1531},Dc:BB,Ec:function(){return 104},Fc:$I,Gc:function(A,I,g,C){return 0|UA(A|=0,I|=0,g|=0,C|=0)},Hc:JA,Ic:function(A,I,g,C){A|=0,I|=0,g|=0,C|=0;var B,Q=0;return s=B=s-112|0,Q=i[8811],i[B+16>>2]=i[8810],i[B+20>>2]=Q,Q=i[8813],i[B+24>>2]=i[8812],i[B+28>>2]=Q,Q=i[8815],i[B+32>>2]=i[8814],i[B+36>>2]=Q,i[B+40>>2]=0,i[B+44>>2]=0,Q=i[8809],i[B+8>>2]=i[8808],i[B+12>>2]=Q,UA(Q=B+8|0,I,g,C),JA(Q,A),s=B+112|0,0},Jc:gB,Kc:IB,Lc:SI,Mc:QC,Nc:j,Oc:CC,Pc:CB,Qc:gB,Rc:eB,Sc:BB,Tc:YI,Uc:WC,Vc:CB,Wc:gB,Xc:eB,Yc:BB,Zc:YI,_c:PC,$c:function(A,I,g){return 0|mA(A|=0,I|=0,g|=0)},ad:function(A,I,g){return 0|mC(A|=0,I|=0,g|=0,0)},bd:function(A,I){return Sg(A|=0,I|=0),XC(A,4),0},cd:function(A,I,g,C,B){var Q;return A|=0,C|=0,B|=0,s=Q=s-208|0,mA(Q,I|=0,g|=0),mC(Q,C,B,0),Sg(Q,A),XC(Q,4),s=Q+208|0,0},dd:PC,ed:function(A,I,g,B,Q){A|=0,I|=0,g|=0,B|=0,Q|=0;var E,a=0,_=0,c=0,t=0;if(s=E=s-256|0,C[E+15|0]=1,I>>>0<=8160){if(I>>>0>=32)for(t=A-32|0,a=32;c=a,mA(a=E+48|0,Q,32),_&&mC(a,_+t|0,32,0),mC(a=E+48|0,g,B,0),mC(a,E+15|0,1,0),Sg(a,A+_|0),C[E+15|0]=o[E+15|0]+1,(a=(_=c)+32|0)>>>0<=I>>>0;);(_=31&I)&&(mA(I=E+48|0,Q,32),c&&mC(I,(A+c|0)-32|0,32,0),mC(I=E+48|0,g,B,0),mC(I,E+15|0,1,0),Sg(g=I,I=E+16|0),Ng(A+c|0,I,_),XC(I,32)),XC(E+48|0,208),A=0}else i[9404]=28,A=-1;return s=E+256|0,0|A},fd:BB,gd:hB,hd:function(){return 8160},id:IB,jd:yC,kd:function(A,I,g){return 0|dC(A|=0,I|=0,g|=0,0)},ld:function(A,I){return wg(A|=0,I|=0),XC(A,4),0},md:function(A,I,g,C,B){var Q;return A|=0,C|=0,B|=0,s=Q=s-416|0,iI(Q,I|=0,g|=0),dC(Q,C,B,0),wg(Q,A),XC(Q,4),s=Q+416|0,0},nd:function(A){ag(A|=0,64)},od:function(A,I,g,B,Q){A|=0,I|=0,g|=0,B|=0,Q|=0;var E,a=0,_=0,c=0,t=0;if(s=E=s-496|0,C[E+15|0]=1,I>>>0<=16320){if(I>>>0>=64)for(t=A+-64|0,a=64;c=a,iI(a=E+80|0,Q,64),_&&dC(a,_+t|0,64,0),dC(a=E+80|0,g,B,0),dC(a,E+15|0,1,0),wg(a,A+_|0),C[E+15|0]=o[E+15|0]+1,(a=(_=c)- -64|0)>>>0<=I>>>0;);(_=63&I)&&(iI(I=E+80|0,Q,64),c&&dC(I,(A+c|0)-64|0,64,0),dC(I=E+80|0,g,B,0),dC(I,E+15|0,1,0),wg(g=I,I=E+16|0),Ng(A+c|0,I,_),XC(I,64)),XC(E+80|0,416),A=0}else i[9404]=28,A=-1;return s=E+496|0,0|A},pd:gB,qd:hB,rd:function(){return 16320},sd:$C,td:function(A,I,g){return A|=0,kC(I|=0,32,g|=0,32,0,0,0),0|KC(A,I)},ud:function(A,I){return A|=0,ag(I|=0,32),0|KC(A,I)},vd:function(A,I,g,B,i){I|=0,g|=0,B|=0,i|=0;var E,a,_=0,c=0,t=0;if(a=_=s,s=_=_-512&-64,E=(A|=0)||I){if(t=-1,!tC(c=_+96|0,B,i)){for(B=I||A,A=0,iC(I=_+128|0,0,0,64),lC(I,c,32,0),XC(c,32),lC(I,g,32,0),lC(I,i,32,0),eC(I,_+32|0,64),XC(I,384);g=(I=_+32|0)+A|0,C[A+E|0]=o[0|g],C[A+B|0]=o[g+32|0],C[(g=1|A)+E|0]=o[I+g|0],C[g+B|0]=o[I+(33|A)|0],32!=(0|(A=A+2|0)););XC(I,64),t=0}return s=a,0|t}rC(),Q()},wd:function(A,I,g,B,i){I|=0,g|=0,B|=0,i|=0;var E,a,_=0,c=0,t=0;if(a=_=s,s=_=_-512&-64,E=(A|=0)||I){if(t=-1,!tC(c=_+96|0,B,i)){for(B=I||A,A=0,iC(I=_+128|0,0,0,64),lC(I,c,32,0),XC(c,32),lC(I,i,32,0),lC(I,g,32,0),eC(I,_+32|0,64),XC(I,384);g=(I=_+32|0)+A|0,C[A+B|0]=o[0|g],C[A+E|0]=o[g+32|0],C[(g=1|A)+B|0]=o[I+g|0],C[g+E|0]=o[I+(33|A)|0],32!=(0|(A=A+2|0)););XC(I,64),t=0}return s=a,0|t}rC(),Q()},xd:BB,yd:BB,zd:BB,Ad:BB,Bd:function(){return 1332},Cd:TC,Dd:CB,Ed:BB,Fd:Vg,Gd:Zg,Hd:function(A,I){return 0|wC(A|=0,I|=0)},Id:BC,Jd:function(A,I){return 0|nC(A|=0,I|=0)},Kd:function(){return 1494},Ld:PC,Md:Vg,Nd:Zg,Od:wC,Pd:BC,Qd:nC,Rd:CB,Sd:BB,Td:TC,Ud:PC,Vd:yB,Wd:CB,Xd:cB,Yd:hB,Zd:cB,_d:CB,$d:AB,ae:function(){return 1554},be:rB,ce:cB,de:VC,ee:xC,fe:sB,ge:LC,he:function(){return 6},ie:function(){return 134217728},je:eB,ke:function(){return 536870912},le:function(A,I,g,C,B,Q,i,o,E,a,_){return 0|rI(A|=0,(A=0)|(I|=0),g|=0,C|=0,A|(B|=0),Q|=0,i|=0,A|(o|=0),E|=0,a|=0,_|=0)},me:function(A,I,g,C,B,Q,i){return 0|OI(A|=0,I|=0,(A=0)|(g|=0),C|=0,A|(B|=0),Q|=0,i|=0)},ne:function(A,I,g,C){return 0|bC(A|=0,I|=0,g|=0,C|=0)},oe:function(A,I,g,C){return 0|HC(A|=0,I|=0,g|=0,C|=0)},pe:function(A,I,g,C){return 0|YC(A|=0,I|=0,g|=0,C|=0)},qe:tB,re:CB,se:cB,te:hB,ue:cB,ve:CB,we:AB,xe:OC,ye:yB,ze:cB,Ae:VC,Be:xC,Ce:tB,De:qC,Ee:rB,Fe:RC,Ge:sB,He:vC,Ie:function(A,I,g,C,B,Q,i,o,E,a,_){return 0|yI(A|=0,(A=0)|(I|=0),g|=0,C|=0,A|(B|=0),Q|=0,i|=0,A|(o|=0),E|=0,a|=0,_|=0)},Je:Fg,Ke:function(A,I,g,C){return 0|JC(A|=0,I|=0,g|=0,C|=0)},Le:yB,Me:tB,Ne:tB,Oe:CB,Pe:cB,Qe:hB,Re:cB,Se:CB,Te:AB,Ue:OC,Ve:yB,We:cB,Xe:VC,Ye:xC,Ze:tB,_e:qC,$e:rB,af:RC,bf:sB,cf:vC,df:function(A,I,g,C,B,Q,o,E,a,_,c){A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,o|=0,E|=0,a|=0,_|=0,I|=0,B|=0,E|=0;A:{switch((c|=0)-1|0){case 0:A=rI(A,I,g,C,B,Q,o,E,a,_,1);break A;case 1:A=yI(A,I,g,C,B,Q,o,E,a,_,2);break A}i[9404]=28,A=-1}return 0|A},ef:Fg,ff:function(A,I,g,C,B,i,o,E){A|=0,I|=0,g|=0,C|=0,B|=0,i|=0,o|=0,g|=0,B|=0;A:{switch((E|=0)-1|0){case 1:A=TI(A,I,g,C,B,i,o);break A;default:rC(),Q();case 0:}A=OI(A,I,g,C,B,i,o)}return 0|A},gf:function(A,I,g,C){return I|=0,g|=0,C|=0,gg(A|=0,1564,10)?gg(A,1554,9)?(i[9404]=28,A=-1):A=bC(A,I,g,C):A=JC(A,I,g,C),0|A},hf:function(A,I,g,C){return I|=0,g|=0,C|=0,gg(A|=0,1564,10)?gg(A,1554,9)?(i[9404]=28,A=-1):A=HC(A,I,g,C):A=YC(A,I,g,C),0|A},jf:function(){return 1156},kf:function(){return 1443},lf:KC,mf:tC,nf:BB,of:BB,pf:CI,qf:pC,rf:BB,sf:BB,tf:BB,uf:_B,vf:BB,wf:CB,xf:CB,yf:EB,zf:function(){return 1486},Af:Pg,Bf:qg,Cf:PC,Df:Yg,Ef:function(A,I,g,C,B,i){return A|=0,I|=0,B|=0,i|=0,!(C|=0)&(g|=0)>>>0>=4294967280|C&&(rC(),Q()),aI(A+16|0,A,I,g,C,B,i),0},Ff:Jg,Gf:hg,Hf:Pg,If:qg,Jf:BB,Kf:_B,Lf:BB,Mf:CB,Nf:CB,Of:EB,Pf:PC,Qf:PC,Rf:function(A,I,g){return A|=0,g|=0,ag(I|=0,24),yA(A,I,g,0),C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,g=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,I=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,C[A+44|0]=0,C[A+45|0]=0,C[A+46|0]=0,C[A+47|0]=0,C[A+48|0]=0,C[A+49|0]=0,C[A+50|0]=0,C[A+51|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=I,C[A+41|0]=I>>>8,C[A+42|0]=I>>>16,C[A+43|0]=I>>>24,0},Sf:function(A,I,g){return yA(A|=0,I|=0,g|=0,0),C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,g=o[I+16|0]|o[I+17|0]<<8|o[I+18|0]<<16|o[I+19|0]<<24,I=o[I+20|0]|o[I+21|0]<<8|o[I+22|0]<<16|o[I+23|0]<<24,C[A+44|0]=0,C[A+45|0]=0,C[A+46|0]=0,C[A+47|0]=0,C[A+48|0]=0,C[A+49|0]=0,C[A+50|0]=0,C[A+51|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=I,C[A+41|0]=I>>>8,C[A+42|0]=I>>>16,C[A+43|0]=I>>>24,0},Tf:function(A){var I,g=0,B=0;s=I=s-48|0,g=o[28+(A|=0)|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,i[I+24>>2]=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,i[I+28>>2]=g,g=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,i[I+16>>2]=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,i[I+20>>2]=g,g=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,i[I>>2]=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i[I+4>>2]=g,g=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,i[I+8>>2]=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,i[I+12>>2]=g,g=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24,i[I+32>>2]=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,i[I+36>>2]=g,xg(I,I,40,0,A+32|0,A),g=i[I+28>>2],B=i[I+24>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=i[I+20>>2],B=i[I+16>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=i[I+12>>2],B=i[I+8>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=i[I+4>>2],B=i[I>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,B=i[I+36>>2],g=i[I+32>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=B,C[A+41|0]=B>>>8,C[A+42|0]=B>>>16,C[A+43|0]=B>>>24,s=I+48|0},Uf:function(A,I,g,B,E,a,_,c,t,r){A|=0,I|=0,B|=0,a|=0,_|=0,t|=0,r|=0;var e,y=0,h=0,D=0;return y=E|=0,y|=E=0,e=E|(c|=0),s=E=s-384|0,(g|=0)&&(i[g>>2]=0,i[g+4>>2]=0),!a&y>>>0<4294967279?(jg(h=E+16|0,64,0,D=A+32|0,A),wC(c=E+80|0,h),XC(h,64),SC(c,_,e,t),SC(c,35216,0-e&15,0),i[E+72>>2]=0,i[E+76>>2]=0,i[(_=E- -64|0)>>2]=0,i[_+4>>2]=0,i[E+56>>2]=0,i[E+60>>2]=0,i[E+48>>2]=0,i[E+52>>2]=0,i[E+40>>2]=0,i[E+44>>2]=0,i[E+32>>2]=0,i[E+36>>2]=0,i[E+16>>2]=0,i[E+20>>2]=0,i[E+24>>2]=0,i[E+28>>2]=0,C[E+16|0]=r,Cg(h,h,64,0,D,1,A),SC(c,h,64,0),C[0|I]=o[E+16|0],Cg(I=I+1|0,B,y,a,D,2,A),SC(c,I,y,a),SC(c,35216,15&y,0),i[E+8>>2]=e,i[E+12>>2]=t,SC(c,B=E+8|0,8,0),i[E+8>>2]=y- -64,i[E+12>>2]=a-((y>>>0<4294967232)-1|0),SC(c,B,8,0),nC(c,I=I+y|0),XC(c,256),C[A+36|0]=o[A+36|0]^o[0|I],C[A+37|0]=o[A+37|0]^o[I+1|0],C[A+38|0]=o[A+38|0]^o[I+2|0],C[A+39|0]=o[A+39|0]^o[I+3|0],C[A+40|0]=o[A+40|0]^o[I+4|0],C[A+41|0]=o[A+41|0]^o[I+5|0],C[A+42|0]=o[A+42|0]^o[I+6|0],C[A+43|0]=o[A+43|0]^o[I+7|0],XI(D),(2&r||GI(D,4))&&(I=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,i[E+360>>2]=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,i[E+364>>2]=I,I=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,i[E+352>>2]=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,i[E+356>>2]=I,I=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,i[E+336>>2]=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i[E+340>>2]=I,I=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,i[E+344>>2]=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,i[E+348>>2]=I,I=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24,i[E+368>>2]=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,i[E+372>>2]=I,xg(I=E+336|0,I,40,0,D,A),I=i[E+364>>2],B=i[E+360>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[E+356>>2],B=i[E+352>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[E+348>>2],B=i[E+344>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[E+340>>2],B=i[E+336>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=i[E+368>>2],B=i[E+372>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=B,C[A+41|0]=B>>>8,C[A+42|0]=B>>>16,C[A+43|0]=B>>>24),g&&(a=(A=y+17|0)>>>0<17?a+1|0:a,i[g>>2]=A,i[g+4>>2]=a),s=E+384|0):(rC(),Q()),0},Vf:function(A,I,g,B,E,a,_,c,t,r){A|=0,I|=0,B|=0,E|=0,c|=0,r|=0;var e,y=0,h=0,D=0,f=0,p=0,w=0;y=a|=0,a=_|=0,h=0|y,e=t|=0,s=_=s-400|0,(g|=0)&&(i[g>>2]=0,i[g+4>>2]=0),B&&(C[0|B]=255),w=-1;A:{I:{if(!((t=h>>>0<17)&!a)){if(p=y=a-t|0,!y&(t=h-17|0)>>>0>=4294967279|y)break I;jg(D=_+32|0,64,0,f=A+32|0,A),wC(y=_+96|0,D),XC(D,64),SC(y,c,e,r),SC(y,35216,0-e&15,0),i[_+88>>2]=0,i[_+92>>2]=0,i[_+80>>2]=0,i[_+84>>2]=0,i[_+72>>2]=0,i[_+76>>2]=0,i[(c=_- -64|0)>>2]=0,i[c+4>>2]=0,i[_+56>>2]=0,i[_+60>>2]=0,i[_+48>>2]=0,i[_+52>>2]=0,i[_+40>>2]=0,i[_+44>>2]=0,i[_+32>>2]=0,i[_+36>>2]=0,C[_+32|0]=o[0|E],Cg(D,D,64,0,f,1,A),c=o[_+32|0],C[_+32|0]=o[0|E],SC(y,D,64,0),SC(y,E=E+1|0,t,p),SC(y,35216,h-1&15,0),i[_+24>>2]=e,i[_+28>>2]=r,SC(y,r=_+24|0,8,0),a=(h=h+47|0)>>>0<47?a+1|0:a,i[_+24>>2]=h,i[_+28>>2]=a,SC(y,r,8,0),nC(y,_),XC(y,256),MI(_,E+t|0,16)?XC(_,16):(Cg(I,E,t,p,f,2,A),C[A+36|0]=o[A+36|0]^o[0|_],C[A+37|0]=o[A+37|0]^o[_+1|0],C[A+38|0]=o[A+38|0]^o[_+2|0],C[A+39|0]=o[A+39|0]^o[_+3|0],C[A+40|0]=o[A+40|0]^o[_+4|0],C[A+41|0]=o[A+41|0]^o[_+5|0],C[A+42|0]=o[A+42|0]^o[_+6|0],C[A+43|0]=o[A+43|0]^o[_+7|0],XI(f),(2&c||GI(f,4))&&(I=o[A+28|0]|o[A+29|0]<<8|o[A+30|0]<<16|o[A+31|0]<<24,i[_+376>>2]=o[A+24|0]|o[A+25|0]<<8|o[A+26|0]<<16|o[A+27|0]<<24,i[_+380>>2]=I,I=o[A+20|0]|o[A+21|0]<<8|o[A+22|0]<<16|o[A+23|0]<<24,i[_+368>>2]=o[A+16|0]|o[A+17|0]<<8|o[A+18|0]<<16|o[A+19|0]<<24,i[_+372>>2]=I,I=o[A+4|0]|o[A+5|0]<<8|o[A+6|0]<<16|o[A+7|0]<<24,i[_+352>>2]=o[0|A]|o[A+1|0]<<8|o[A+2|0]<<16|o[A+3|0]<<24,i[_+356>>2]=I,I=o[A+12|0]|o[A+13|0]<<8|o[A+14|0]<<16|o[A+15|0]<<24,i[_+360>>2]=o[A+8|0]|o[A+9|0]<<8|o[A+10|0]<<16|o[A+11|0]<<24,i[_+364>>2]=I,I=o[A+40|0]|o[A+41|0]<<8|o[A+42|0]<<16|o[A+43|0]<<24,i[_+384>>2]=o[A+36|0]|o[A+37|0]<<8|o[A+38|0]<<16|o[A+39|0]<<24,i[_+388>>2]=I,xg(I=_+352|0,I,40,0,f,A),I=i[_+380>>2],E=i[_+376>>2],C[A+24|0]=E,C[A+25|0]=E>>>8,C[A+26|0]=E>>>16,C[A+27|0]=E>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[_+372>>2],E=i[_+368>>2],C[A+16|0]=E,C[A+17|0]=E>>>8,C[A+18|0]=E>>>16,C[A+19|0]=E>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[_+364>>2],E=i[_+360>>2],C[A+8|0]=E,C[A+9|0]=E>>>8,C[A+10|0]=E>>>16,C[A+11|0]=E>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[_+356>>2],E=i[_+352>>2],C[0|A]=E,C[A+1|0]=E>>>8,C[A+2|0]=E>>>16,C[A+3|0]=E>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=i[_+384>>2],E=i[_+388>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=E,C[A+41|0]=E>>>8,C[A+42|0]=E>>>16,C[A+43|0]=E>>>24),g&&(i[g>>2]=t,i[g+4>>2]=p),w=0,B&&(C[0|B]=c))}s=_+400|0;break A}rC(),Q()}return 0|w},Wf:function(){return 52},Xf:function(){return 17},Yf:_B,Zf:BB,_f:function(){return-18},$f:hB,ag:yB,bg:tB,cg:rB,dg:eB,eg:CB,fg:function(){return 1521},gg:T,hg:zC,ig:eB,jg:CB,kg:T,lg:IB,mg:gB,ng:BB,og:BB,pg:gB,qg:QB,rg:function(){return 1454},sg:function(A,I,g){return 0|FA(A|=0,I|=0,g|=0)},tg:function(A,I){return 0|YA(A|=0,I|=0)},ug:LI,vg:bI,wg:vg,xg:Wg,yg:function(A){return 0|uC(A|=0)},zg:QC,Ag:function(A,I,g,C){return 0|ng(A|=0,I|=0,g|=0,C|=0)},Bg:function(A,I,g){return 0|Kg(A|=0,I|=0,g|=0)},Cg:IB,Dg:gB,Eg:BB,Fg:BB,Gg:gB,Hg:QB,Ig:function(A,I){A|=0;var g,B,Q,i,E,a,_=0;return g=o[8+(_=I|=0)|0]|o[_+9|0]<<8|o[_+10|0]<<16|o[_+11|0]<<24,B=o[_+12|0]|o[_+13|0]<<8|o[_+14|0]<<16|o[_+15|0]<<24,Q=o[_+16|0]|o[_+17|0]<<8|o[_+18|0]<<16|o[_+19|0]<<24,i=o[_+20|0]|o[_+21|0]<<8|o[_+22|0]<<16|o[_+23|0]<<24,E=o[0|_]|o[_+1|0]<<8|o[_+2|0]<<16|o[_+3|0]<<24,I=o[_+4|0]|o[_+5|0]<<8|o[_+6|0]<<16|o[_+7|0]<<24,a=o[_+28|0]|o[_+29|0]<<8|o[_+30|0]<<16|o[_+31|0]<<24,_=o[_+24|0]|o[_+25|0]<<8|o[_+26|0]<<16|o[_+27|0]<<24,C[A+24|0]=_,C[A+25|0]=_>>>8,C[A+26|0]=_>>>16,C[A+27|0]=_>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+16|0]=Q,C[A+17|0]=Q>>>8,C[A+18|0]=Q>>>16,C[A+19|0]=Q>>>24,C[A+20|0]=i,C[A+21|0]=i>>>8,C[A+22|0]=i>>>16,C[A+23|0]=i>>>24,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,C[A+12|0]=B,C[A+13|0]=B>>>8,C[A+14|0]=B>>>16,C[A+15|0]=B>>>24,C[0|A]=E,C[A+1|0]=E>>>8,C[A+2|0]=E>>>16,C[A+3|0]=E>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,0},Jg:function(A,I){A|=0;var g,B,Q,i,E,a,_=0;return g=o[32+(_=I|=0)|0]|o[_+33|0]<<8|o[_+34|0]<<16|o[_+35|0]<<24,B=o[_+36|0]|o[_+37|0]<<8|o[_+38|0]<<16|o[_+39|0]<<24,Q=o[_+40|0]|o[_+41|0]<<8|o[_+42|0]<<16|o[_+43|0]<<24,i=o[_+44|0]|o[_+45|0]<<8|o[_+46|0]<<16|o[_+47|0]<<24,E=o[_+48|0]|o[_+49|0]<<8|o[_+50|0]<<16|o[_+51|0]<<24,I=o[_+52|0]|o[_+53|0]<<8|o[_+54|0]<<16|o[_+55|0]<<24,a=o[_+60|0]|o[_+61|0]<<8|o[_+62|0]<<16|o[_+63|0]<<24,_=o[_+56|0]|o[_+57|0]<<8|o[_+58|0]<<16|o[_+59|0]<<24,C[A+24|0]=_,C[A+25|0]=_>>>8,C[A+26|0]=_>>>16,C[A+27|0]=_>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+16|0]=E,C[A+17|0]=E>>>8,C[A+18|0]=E>>>16,C[A+19|0]=E>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,C[A+8|0]=Q,C[A+9|0]=Q>>>8,C[A+10|0]=Q>>>16,C[A+11|0]=Q>>>24,C[A+12|0]=i,C[A+13|0]=i>>>8,C[A+14|0]=i>>>16,C[A+15|0]=i>>>24,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=B,C[A+5|0]=B>>>8,C[A+6|0]=B>>>16,C[A+7|0]=B>>>24,0},Kg:uC,Lg:QC,Mg:ng,Ng:Kg,Og:FA,Pg:YA,Qg:function(A,I){A|=0;var g,C=0,B=0,Q=0,o=0,E=0,_=0,c=0,t=0,r=0,e=0,y=0,h=0,D=0,p=0,w=0,n=0,k=0,F=0,S=0,N=0,G=0,M=0,K=0,U=0,b=0,H=0,Y=0,J=0,d=0,m=0,l=0,u=0,x=0,v=0,R=0,L=0,P=0,q=0,z=0,j=0,X=0,O=0,W=0,V=0,Z=0,T=0,$=0,AA=0,IA=0,CA=0,BA=0,QA=0,iA=0,oA=0,EA=0,aA=0,_A=0,cA=0,tA=0,rA=0,eA=0,yA=0,sA=0,hA=0,DA=0,fA=0,pA=0,wA=0,nA=0,kA=0,FA=0,SA=0,NA=0,GA=0,MA=0,KA=0,UA=0,bA=0,HA=0,YA=0;return s=g=s-256|0,SA=-1,KI(I|=0)||qA(C=g+96|0,I)||gA(C)&&(SA=0,u=i[g+172>>2],i[g+36>>2]=0-u,n=i[g+168>>2],i[g+32>>2]=0-n,x=i[g+164>>2],i[g+28>>2]=0-x,k=i[g+160>>2],i[g+24>>2]=0-k,v=i[g+156>>2],i[g+20>>2]=0-v,F=i[g+152>>2],i[g+16>>2]=0-F,R=i[g+148>>2],i[g+12>>2]=0-R,S=i[g+144>>2],i[g+8>>2]=0-S,L=i[g+140>>2],i[g+4>>2]=0-L,Q=i[g+136>>2],i[g>>2]=1-Q,LA(g,g),I=Ig(N=i[g+4>>2],d=N>>31,G=v<<1,IA=G>>31),C=f,B=Ig(p=i[g>>2],M=p>>31,k,K=k>>31),C=f+C|0,C=(I=B+I|0)>>>0>>0?C+1|0:C,B=(o=Ig(U=i[g+8>>2],P=U>>31,F,b=F>>31))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(m=i[g+12>>2],j=m>>31,W=R<<1,CA=W>>31),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=Ig(q=i[g+16>>2],V=q>>31,S,H=S>>31),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,fA=o=i[g+20>>2],h=Ig(o,BA=o>>31,Z=L<<1,QA=Z>>31),B=f+I|0,B=(C=h+C|0)>>>0>>0?B+1|0:B,pA=r=i[g+24>>2],I=(Q=Ig(r,sA=r>>31,h=Q+1|0,Y=h>>31))+C|0,C=f+B|0,C=I>>>0>>0?C+1|0:C,iA=i[g+28>>2],B=(Q=Ig(w=a(iA,19),X=w>>31,T=u<<1,oA=T>>31))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,NA=i[g+32>>2],B=Ig(_=a(NA,19),z=_>>31,n,J=n>>31),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,GA=i[g+36>>2],B=Ig(y=a(GA,19),l=y>>31,$=x<<1,EA=$>>31),I=f+I|0,c=C=B+C|0,Q=C>>>0>>0?I+1|0:I,I=Ig(F,b,N,d),C=f,E=Ig(p,M,v,aA=v>>31),B=f+C|0,B=(I=E+I|0)>>>0>>0?B+1|0:B,E=Ig(U,P,R,_A=R>>31),C=f+B|0,C=(I=E+I|0)>>>0>>0?C+1|0:C,B=(E=Ig(S,H,m,j))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(q,V,L,cA=L>>31),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=Ig(h,Y,o,BA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,E=Ig(r=a(r,19),AA=r>>31,u,tA=u>>31),B=f+I|0,B=(C=E+C|0)>>>0>>0?B+1|0:B,I=(E=Ig(n,J,w,X))+C|0,C=f+B|0,C=I>>>0>>0?C+1|0:C,B=(E=Ig(_,z,x,rA=x>>31))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(y,l,k,K),I=f+I|0,wA=C=C+B|0,O=C>>>0>>0?I+1|0:I,I=Ig(N,d,W,CA),B=f,C=(E=Ig(p,M,F,b))+I|0,I=f+B|0,I=C>>>0>>0?I+1|0:I,E=Ig(S,H,U,P),B=f+I|0,B=(C=E+C|0)>>>0>>0?B+1|0:B,I=(E=Ig(m,j,Z,QA))+C|0,C=f+B|0,C=I>>>0>>0?C+1|0:C,B=(E=Ig(h,Y,q,V))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(E=a(o,19),eA=E>>31,T,oA),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=Ig(n,J,r,AA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,o=Ig(w,X,$,EA),B=f+I|0,B=(C=o+C|0)>>>0>>0?B+1|0:B,I=(o=Ig(_,z,k,K))+C|0,C=f+B|0,C=I>>>0>>0?C+1|0:C,B=(o=Ig(y,l,G,IA))+I|0,I=f+C|0,MA=B,KA=I=B>>>0>>0?I+1|0:I,UA=B=B+33554432|0,bA=I=B>>>0<33554432?I+1|0:I,B=(67108863&I)<<6|B>>>26,I=(I>>26)+O|0,wA=o=B+wA|0,I=B>>>0>o>>>0?I+1|0:I,HA=o=o+16777216|0,I=(C=(B=o>>>0<16777216?I+1|0:I)>>25)+Q|0,I=(B=(o=(33554431&B)<<7|o>>>25)+c|0)>>>0>>0?I+1|0:I,D=C=B+33554432|0,o=I=C>>>0<33554432?I+1|0:I,i[g+72>>2]=B-(-67108864&C),I=Ig(N,d,Z,QA),C=f,Q=Ig(p,M,S,H),B=f+C|0,B=(I=Q+I|0)>>>0>>0?B+1|0:B,C=(Q=Ig(h,Y,U,P))+I|0,I=f+B|0,I=C>>>0>>0?I+1|0:I,B=Ig(Q=a(m,19),yA=Q>>31,T,oA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=(c=Ig(O=a(q,19),hA=O>>31,n,J))+C|0,C=f+I|0,C=B>>>0>>0?C+1|0:C,c=Ig($,EA,E,eA),I=f+C|0,I=(B=c+B|0)>>>0>>0?I+1|0:I,C=(c=Ig(k,K,r,AA))+B|0,B=f+I|0,B=C>>>0>>0?B+1|0:B,c=Ig(w,X,G,IA),I=f+B|0,I=(C=c+C|0)>>>0>>0?I+1|0:I,B=Ig(_,z,F,b),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=(c=Ig(y,l,W,CA))+C|0,C=f+I|0,e=B,nA=B>>>0>>0?C+1|0:C,I=Ig(h,Y,N,d),C=f,B=(c=Ig(p,M,L,cA))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,c=C=a(U,19),C=(t=Ig(C,DA=C>>31,u,tA))+B|0,B=f+I|0,B=C>>>0>>0?B+1|0:B,t=Ig(n,J,Q,yA),I=f+B|0,I=(C=t+C|0)>>>0>>0?I+1|0:I,B=Ig(O,hA,x,rA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=(t=Ig(k,K,E,eA))+C|0,C=f+I|0,C=B>>>0>>0?C+1|0:C,t=Ig(r,AA,v,aA),I=f+C|0,I=(B=t+B|0)>>>0>>0?I+1|0:I,C=(t=Ig(F,b,w,X))+B|0,B=f+I|0,B=C>>>0>>0?B+1|0:B,t=Ig(_,z,R,_A),I=f+B|0,I=(C=t+C|0)>>>0>>0?I+1|0:I,B=Ig(y,l,S,H),I=f+I|0,kA=C=B+C|0,t=C>>>0>>0?I+1|0:I,I=Ig(I=a(N,19),I>>31,T,oA),C=f,B=Ig(p,M,h,Y),C=f+C|0,C=(I=B+I|0)>>>0>>0?C+1|0:C,B=(c=Ig(n,J,c,DA))+I|0,I=f+C|0,C=(Q=Ig(Q,yA,$,EA))+B|0,B=f+(B>>>0>>0?I+1|0:I)|0,B=C>>>0>>0?B+1|0:B,Q=Ig(k,K,O,hA),I=f+B|0,I=(C=Q+C|0)>>>0>>0?I+1|0:I,B=Ig(G,IA,E,eA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=(Q=Ig(F,b,r,AA))+C|0,C=f+I|0,C=B>>>0>>0?C+1|0:C,Q=Ig(w,X,W,CA),I=f+C|0,I=(B=Q+B|0)>>>0>>0?I+1|0:I,C=(Q=Ig(_,z,S,H))+B|0,B=f+I|0,B=C>>>0>>0?B+1|0:B,Q=Ig(y,l,Z,QA),I=f+B|0,c=C=Q+C|0,yA=I=C>>>0>>0?I+1|0:I,DA=C=C+33554432|0,YA=I=C>>>0<33554432?I+1|0:I,B=I>>26,I=(67108863&I)<<6|C>>>26,C=B+t|0,t=Q=I+kA|0,I=C=I>>>0>Q>>>0?C+1|0:C,kA=Q=Q+16777216|0,Q=(33554431&(I=Q>>>0<16777216?I+1|0:I))<<7|Q>>>25,I=(I>>25)+nA|0,I=(C=Q+e|0)>>>0>>0?I+1|0:I,B=C,nA=C=C+33554432|0,Q=I=C>>>0<33554432?I+1|0:I,i[g+56>>2]=B-(-67108864&C),I=Ig(k,K,N,d),B=f,C=(e=Ig(p,M,x,rA))+I|0,I=f+B|0,I=C>>>0>>0?I+1|0:I,B=Ig(U,P,v,aA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=Ig(F,b,m,j),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,e=Ig(q,V,R,_A),B=f+I|0,B=(C=e+C|0)>>>0>>0?B+1|0:B,I=(e=Ig(S,H,fA,BA))+C|0,C=f+B|0,C=I>>>0>>0?C+1|0:C,B=(e=Ig(L,cA,pA,sA))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(iA,FA=iA>>31,h,Y),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=Ig(_,z,u,tA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,e=(B=C)+(C=Ig(y,l,n,J))|0,B=f+I|0,C=(I=o>>26)+(C=C>>>0>e>>>0?B+1|0:B)|0,D=B=(o=(67108863&o)<<6|D>>>26)+e|0,I=C=B>>>0>>0?C+1|0:C,e=B=B+16777216|0,o=I=B>>>0<16777216?I+1|0:I,i[g+76>>2]=D-(-33554432&B),I=Ig(S,H,N,d),C=f,D=Ig(p,M,R,_A),B=f+C|0,B=(I=D+I|0)>>>0>>0?B+1|0:B,D=Ig(U,P,L,cA),C=f+B|0,C=(I=D+I|0)>>>0>>0?C+1|0:C,B=(D=Ig(h,Y,m,j))+I|0,I=f+C|0,I=B>>>0>>0?I+1|0:I,C=B,B=Ig(O,hA,u,tA),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=Ig(n,J,E,eA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,C=(r=Ig(r,AA,x,rA))+C|0,B=f+I|0,I=(w=Ig(k,K,w,X))+C|0,C=f+(C>>>0>>0?B+1|0:B)|0,B=(_=Ig(_,z,v,aA))+I|0,I=f+(I>>>0>>0?C+1|0:C)|0,I=B>>>0<_>>>0?I+1|0:I,C=B,B=Ig(y,l,F,b),I=f+I|0,D=C=C+B|0,I=(I=C>>>0>>0?I+1|0:I)+(C=Q>>26)|0,_=Q=D+(B=(67108863&Q)<<6|nA>>>26)|0,I=B>>>0>Q>>>0?I+1|0:I,w=C=Q+16777216|0,Q=B=C>>>0<16777216?I+1|0:I,i[g+60>>2]=_-(-33554432&C),I=Ig(N,d,$,EA),B=f,C=(_=Ig(p,M,n,J))+I|0,I=f+B|0,I=C>>>0<_>>>0?I+1|0:I,B=Ig(k,K,U,P),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,_=Ig(m,j,G,IA),B=f+I|0,B=(C=_+C|0)>>>0<_>>>0?B+1|0:B,I=(_=Ig(F,b,q,V))+C|0,C=f+B|0,C=I>>>0<_>>>0?C+1|0:C,B=(_=Ig(W,CA,fA,BA))+I|0,I=f+C|0,I=B>>>0<_>>>0?I+1|0:I,C=B,B=Ig(S,H,pA,sA),I=f+I|0,I=(C=C+B|0)>>>0>>0?I+1|0:I,B=C,C=Ig(iA,FA,Z,QA),I=f+I|0,I=C>>>0>(B=B+C|0)>>>0?I+1|0:I,_=C=NA,C=(G=Ig(C,r=C>>31,h,Y))+B|0,B=f+I|0,I=(y=Ig(y,l,T,oA))+C|0,C=f+(C>>>0>>0?B+1|0:B)|0,B=I>>>0>>0?C+1|0:C,C=I,I=(I=o>>25)+B|0,I=(C=C+(o=(33554431&o)<<7|e>>>25)|0)>>>0>>0?I+1|0:I,B=C,y=C=C+33554432|0,o=I=C>>>0<33554432?I+1|0:I,i[g+80>>2]=B-(-67108864&C),C=Q>>25,B=(Q=(33554431&Q)<<7|w>>>25)+(MA-(I=-67108864&UA)|0)|0,I=C+(KA-((I>>>0>MA>>>0)+bA|0)|0)|0,I=B>>>0>>0?I+1|0:I,I=((67108863&(I=(C=B+33554432|0)>>>0<33554432?I+1|0:I))<<6|C>>>26)+(G=wA-(-33554432&HA)|0)|0,i[g+68>>2]=I,i[g+64>>2]=B-(-67108864&C),I=Ig(n,J,N,d),B=f,C=(Q=Ig(p,M,u,tA))+I|0,I=f+B|0,I=C>>>0>>0?I+1|0:I,B=(Q=Ig(U,P,x,rA))+C|0,C=f+I|0,C=B>>>0>>0?C+1|0:C,I=(Q=Ig(k,K,m,j))+B|0,B=f+C|0,B=I>>>0>>0?B+1|0:B,C=(Q=Ig(q,V,v,aA))+I|0,I=f+B|0,I=C>>>0>>0?I+1|0:I,B=Ig(F,b,fA,BA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=Ig(R,_A,pA,sA),I=f+I|0,I=(C=B+C|0)>>>0>>0?I+1|0:I,B=(Q=Ig(S,H,iA,FA))+C|0,C=f+I|0,C=B>>>0>>0?C+1|0:C,Q=(I=Ig(_,r,L,cA))+B|0,B=f+C|0,B=I>>>0>Q>>>0?B+1|0:B,C=Q,Q=Ig(I=GA,I>>31,h,Y),I=f+B|0,B=C=C+Q|0,I=(I=C>>>0>>0?I+1|0:I)+(C=o>>26)|0,I=(B=B+(o=(67108863&o)<<6|y>>>26)|0)>>>0>>0?I+1|0:I,I=(C=B+16777216|0)>>>0<16777216?I+1|0:I,i[g+84>>2]=B-(-33554432&C),o=t-(-33554432&kA)|0,Q=c-(B=-67108864&DA)|0,p=yA-((B>>>0>c>>>0)+YA|0)|0,I=Ig((33554431&(B=I))<<7|C>>>25,I>>=25,19,0),C=f+p|0,I=I>>>0>(B=I+Q|0)>>>0?C+1|0:C,I=((67108863&(I=(C=B+33554432|0)>>>0<33554432?I+1|0:I))<<6|C>>>26)+o|0,i[g+52>>2]=I,i[g+48>>2]=B-(-67108864&C),QI(A,g+48|0)),s=g+256|0,0|SA},Rg:function(A,I){A|=0;var g,B=0;return s=g=s+-64|0,FI(g,I|=0,32,0),C[0|g]=248&o[0|g],C[g+31|0]=63&o[g+31|0]|64,I=i[g+20>>2],B=i[g+16>>2],C[A+16|0]=B,C[A+17|0]=B>>>8,C[A+18|0]=B>>>16,C[A+19|0]=B>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[g+12>>2],B=i[g+8>>2],C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[g+4>>2],B=i[g>>2],C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,I=i[g+28>>2],B=i[g+24>>2],C[A+24|0]=B,C[A+25|0]=B>>>8,C[A+26|0]=B>>>16,C[A+27|0]=B>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,XC(g,64),s=g- -64|0,0},Sg:Wg,Tg:bI,Ug:vg,Vg:LI,Wg:BB,Xg:eB,Yg:cB,Zg:BB,_g:aB,$g:cB,ah:function(A,I,g,C,B){return 0|Xg(A|=0,I|=0,g|=0,C|=0,B|=0)},bh:function(A,I,g,C,B,Q,i,o){return 0|mg(A|=0,I|=0,(A=0)|(g|=0),C|=0,B|=0,A|(Q|=0),i|=0,o|=0)},ch:function(A,I,g,C,B,Q){return 0|ug(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)},dh:function(A,I,g,C,B){return 0|jg(A|=0,I|=0,g|=0,C|=0,B|=0)},eh:function(A,I,g,C,B,Q,i){return 0|Cg(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},fh:function(A,I,g,C,B,Q){return 0|xg(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)},gh:PC,hh:PC,ih:BB,jh:_B,kh:cB,lh:function(){return 1538},mh:Tg,nh:zg,oh:PC,ph:BB,qh:eB,rh:cB,sh:function(A,I,g,C,B){return 0|DC(A|=0,I|=0,g|=0,C|=0,B|=0)},th:function(A,I,g,C,B,Q,i,o){return 0|oC(A|=0,I|=0,(A=0)|(g|=0),C|=0,B|=0,A|(Q|=0),i|=0,o|=0)},uh:function(A,I,g,C,B,Q){return 0|aC(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0)},vh:PC,wh:Tg,xh:function(A,I,g,C,B,Q,i,o){var E;return A|=0,I|=0,g|=0,C|=0,Q|=0,i|=0,s=E=s-32|0,wA(E,B|=0,o|=0,0),A=oC(o=A,I,(A=0)|g,C,B+16|0,A|Q,i,E),XC(E,32),s=E+32|0,0|A},yh:zg,zh:BB,Ah:_B,Bh:cB,Ch:PC,Dh:CB,Eh:BB,Fh:gB,Gh:oI,Hh:NC,Ih:GC,Jh:function(){return 1089},Kh:function(){var A,I;return s=A=s-16|0,C[A+15|0]=0,I=0|t(36800,A+15|0,0),s=A+16|0,0|I},Lh:$g,Mh:function(A){var I,g=0,B=0;if(s=I=s-16|0,(A|=0)>>>0>=2){for(g=(0-A>>>0)%(A>>>0)|0;C[I+15|0]=0,g>>>0>(B=0|t(36800,I+15|0,0))>>>0;);g=(B>>>0)%(A>>>0)|0}return s=I+16|0,0|g},Nh:ag,Oh:function(A,I,g){jg(A|=0,I|=0,0,34336,g|=0)},Ph:BB,Qh:function(){var A=0,I=0;return(A=i[9539])&&(A=i[A+20>>2])&&(I=0|pB[0|A]()),0|I},Rh:function(A,I,g){A|=0,I|=0;var B,i=0,o=0,E=0;if(s=B=s-16|0,g|=0)r(1346,1192,198,1092),Q();else{if(I|g)for(;C[B+15|0]=0,o=A+i|0,E=0|t(36800,B+15|0,0),C[0|o]=E,(0|I)!=(0|(i=i+1|0)););s=B+16|0}},Sh:function(A,I,g,B){A|=0,g|=0;var i=0,E=0,a=0;if(!((B|=0)>>>0>2147483646|B<<1>>>0>=(I|=0)>>>0)){if(I=0,B){for(;i=(I<<1)+A|0,E=15&(a=o[I+g|0]),C[i+1|0]=22272+((E<<8)+(E+65526&55552)|0)>>>8,E=i,i=a>>>4|0,C[0|E]=87+((i+65526>>>8&217)+i|0),(0|B)!=(0|(I=I+1|0)););I=B<<1}else I=0;return C[I+A|0]=0,0|A}rC(),Q()},Th:function(A,I,g,B,Q,E,a){A|=0,I|=0,g|=0,Q|=0,E|=0,a|=0;var _=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0;A:{I:{g:{C:{B:{Q:{i:{o:{E:{if(B|=0){if(Q)break E;for(c=1,Q=0;;){if(!(255&((s=(65526+(t=(223&(e=o[g+_|0]))-55&255)^t+65520)>>>8|0)|(h=65526+(e^=48)>>>8|0))))break i;if(I>>>0<=y>>>0)break o;if(t=t&s|e&h,255&r?(C[A+y|0]=Q|t,y=y+1|0):Q=t<<4,r=~r,(0|(_=_+1|0))==(0|B))break}_=B;break i}if(A=0,!a)break A;break g}for(;;){E:{a:{_:{c:{t:{if(!(255&((e=(65526+(c=(223&(t=o[g+_|0]))-55&255)^c+65520)>>>8|0)|(h=65526+(s=48^t)>>>8|0)))){if(255&r)break Q;if(c=0,!kI(Q,t))break C;if((_=r=_+1|0)>>>0>>0)break t;break C}if(I>>>0<=y>>>0)break o;if(c=c&e|s&h,!(255&r))break c;C[A+y|0]=c|D,y=y+1|0;break E}for(;;){if(!(255&((s=(65526+(e=(223&(t=o[g+_|0]))-55&255)^e+65520)>>>8|0)|(D=65526+(h=48^t)>>>8|0)))){if(!kI(Q,t))break C;if((_=_+1|0)>>>0>>0)continue;break _}break}if(I>>>0<=y>>>0)break a;c=e&s|h&D}D=c<<4,r=0;break E}_=B>>>0>r>>>0?B:r;break C}r=0;break o}if(r=~r,c=1,!((_=_+1|0)>>>0>>0))break}break i}i[9404]=68,c=0}if(!(255&r))break B}i[9404]=28,c=-1,_=_-1|0,y=0;break C}y=c?y:0,c=c-1|0}if(!a){if((0|B)!=(0|_))break I;A=c;break A}}i[a>>2]=g+_,A=c;break A}i[9404]=28,A=-1}return E&&(i[E>>2]=y),0|A},Uh:function(A,I){A|=0;var g=0;return 1!=(-7&(I|=0))&&(rC(),Q()),1+((3&(g=(g=A)+a(A=(A>>>0)/3|0,-3)|0)?2&I?g+1|0:4:0)+(A<<2)|0)|0},Vh:XA,Wh:pA,Xh:function(){var A=0;return i[9537]?A=1:($g(),ag(38128,16),i[9537]=1,A=0),0|A},Yh:function(A,I,g,B,E){A|=0,I|=0,g|=0,E|=0;var a,_=0,c=0,t=0;s=a=s-16|0;A:{if(B|=0){if((_=B-1|0)&B?(c=~g,_=_-((g>>>0)%(B>>>0)|0)|0):_&=c=~g,_>>>0>=c>>>0)break A;if((g=g+_|0)>>>0>=E>>>0)I=-1;else for(A&&(i[A>>2]=g+1),A=I+g|0,I=0,C[a+15|0]=0,g=0;c=E=A-g|0,t=o[0|E]&o[a+15|0],E=(g^_)-1>>>24|0,C[0|c]=t|128&E,C[a+15|0]=E|o[a+15|0],(0|B)!=(0|(g=g+1|0)););}else I=-1;return s=a+16|0,0|I}rC(),Q()},Zh:function(A,I,g,C){A|=0,I|=0,g|=0,C|=0;var B,Q=0,E=0,a=0,_=0,c=0;if(i[12+(B=s-16|0)>>2]=0,C-1>>>0>>0){for(c=(Q=g-1|0)+I|0,g=0,I=0;_=((128^(E=o[c-g|0]))-1&i[B+12>>2]-1&a-1)>>>8&1,i[B+12>>2]=i[B+12>>2]|0-_&g,I|=_,a|=E,(0|C)!=(0|(g=g+1|0)););i[A>>2]=Q-i[B+12>>2],A=(255&I)-1|0}else A=-1;return 0|A},_h:function(){return 1547},$h:function(){return 26},ai:tB,bi:hB,ci:cI,di:sC,ei:function(A,I,g){A|=0;var C,B=0;return s=C=s-32|0,B=-1,CI(C,g|=0,I|=0)||(B=yA(A,35584,C,0)),s=C+32|0,0|B},fi:dg,gi:function(A,I,g,C,B,Q,i,o){var E,a;return A|=0,I|=0,g|=0,Q|=0,a=C|=0,C=B|=0,s=E=s+-64|0,CI(E+32|0,o|=0,i|=0)?B=-1:(B=-1,yA(E,35584,E+32|0,0)||(B=EI(A,I,g,a,C,Q,E),XC(E,32))),s=E- -64|0,0|B},hi:function(A,I,g,C,B,i){return A|=0,I|=0,B|=0,i|=0,!(C|=0)&(g|=0)>>>0>=4294967280|C&&(rC(),Q()),0|EI(A+16|0,A,I,g,C,B,i)},ii:function(A,I,g,C,B,Q,i){return 0|ig(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},ji:lg,ki:function(A,I,g,C,B,Q,i,o){var E,a;return A|=0,I|=0,g|=0,Q|=0,a=C|=0,C=B|=0,s=E=s+-64|0,CI(E+32|0,o|=0,i|=0)?B=-1:(B=-1,yA(E,35584,E+32|0,0)||(B=sI(A,I,g,a,C,Q,E),XC(E,32))),s=E- -64|0,0|B},li:Dg,mi:function(A,I,g,C,B,Q,i){return 0|Ag(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0)},ni:BB,oi:BB,pi:BB,qi:BB,ri:_B,si:CB,ti:EB,ui:function(A,I,g,B,Q){A|=0,I|=0,Q|=0;var o,E,a,_,c=0,t=0;return c=g|=0,g=B|=0,_=0|c,c=B=s,s=o=B-512&-64,B=-1,sC(E=o- -64|0,a=o+32|0)||(iC(B=o+128|0,0,0,24),lC(B,E,32,0),lC(B,Q,32,0),eC(B,t=o+96|0,24),B=ig(A+32|0,I,_,g,t,Q,a),I=i[o+92>>2],g=i[o+88>>2],C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=i[o+84>>2],g=i[o+80>>2],C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=i[o+76>>2],g=i[o+72>>2],C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=i[o+68>>2],g=i[o+64>>2],C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,XC(a,32),XC(E,32),XC(t,24)),s=c,0|B},vi:function(A,I,g,C,B,Q){A|=0,I|=0,B|=0,Q|=0;var i,o,E=0;return o=E=s,s=i=E-448&-64,E=-1,!(C|=0)&(g|=0)>>>0>=48|C&&(iC(E=i- -64|0,0,0,24),lC(E,I,32,0),lC(E,B,32,0),eC(E,B=i+32|0,24),E=Ag(A,I+32|0,g-32|0,C-(g>>>0<32)|0,B,I,Q)),s=o,0|E},wi:oB,xi:function(A){var I,g=0;return s=I=s-160|0,NI(A|=0)&&(KI(A)||MA(I,A)||jA(I)&&(g=!!(0|gA(I)))),s=I+160|0,0|g},yi:function(A,I,g){A|=0,g|=0;var C,B,Q=0;return s=C=s-800|0,Q=-1,MA(B=C+640|0,I|=0)||jA(B)&&(MA(I=C+480|0,g)||jA(I)&&($A(C,I),sA(I=C+160|0,B,C),kg(g=C+320|0,I),tg(A,g),Q=0)),s=C+800|0,0|Q},zi:function(A,I,g){A|=0,g|=0;var C,B,Q=0;return s=C=s-800|0,Q=-1,MA(B=C+640|0,I|=0)||jA(B)&&(MA(I=C+480|0,g)||jA(I)&&($A(C,I),hA(I=C+160|0,B,C),kg(g=C+320|0,I),tg(A,g),Q=0)),s=C+800|0,0|Q},Ai:function(A,I){return M(A|=0,I|=0),0},Bi:function(A){var I;A|=0,s=I=s-32|0,ag(I,32),M(A,I),s=I+32|0},Ci:Mg,Di:kA,Ei:xA,Fi:uA,Gi:cA,Hi:dA,Ii:IA,Ji:MC,Ki:BB,Li:gB,Mi:BB,Ni:gB,Oi:BB,Pi:function(A){var I;return s=I=s-160|0,A=EA(I,A|=0),s=I+160|0,0|!A},Qi:function(A,I,g){A|=0,g|=0;var C,B,Q=0;return s=C=s-800|0,Q=-1,EA(B=C+640|0,I|=0)||EA(I=C+480|0,g)||($A(C,I),sA(I=C+160|0,B,C),kg(g=C+320|0,I),W(A,g),Q=0),s=C+800|0,0|Q},Ri:function(A,I,g){A|=0,g|=0;var C,B,Q=0;return s=C=s-800|0,Q=-1,EA(B=C+640|0,I|=0)||EA(I=C+480|0,g)||($A(C,I),hA(I=C+160|0,B,C),kg(g=C+320|0,I),W(A,g),Q=0),s=C+800|0,0|Q},Si:function(A,I){return jI(A|=0,I|=0),0},Ti:function(A){var I;A|=0,s=I=s+-64|0,ag(I,64),jI(A,I),s=I- -64|0},Ui:function(A){Mg(A|=0)},Vi:function(A,I){return 0|kA(A|=0,I|=0)},Wi:function(A,I){xA(A|=0,I|=0)},Xi:function(A,I){uA(A|=0,I|=0)},Yi:function(A,I,g){cA(A|=0,I|=0,g|=0)},Zi:function(A,I,g){IA(A|=0,I|=0,g|=0)},_i:MC,$i:function(A,I){dA(A|=0,I|=0)},aj:BB,bj:gB,cj:gB,dj:BB,ej:function(A,I,g,C,B,Q,i,o,E,a){return 0|rg(A|=0,I|=0,g|=0,C|=0,B|=0,Q|=0,i|=0,o|=0,E|=0,a|=0)},fj:CB,gj:cB,hj:hB,ij:cB,jj:BB,kj:function(){return 102},lj:function(){return 1575},mj:function(){return 32768},nj:cB,oj:jC,pj:cB,qj:function(){return 524288},rj:jC,sj:LC,tj:vC,uj:function(A,I,g,C,B,Q,o,E,a,_){var c,t,r;I|=0,g|=0,C|=0,B|=0,Q|=0,o|=0,a|=0,_|=0,t=0|(E|=0),s=E=s-16|0,r=I|=0,c=bg(A|=0,0,I),A=0|B;A:if(1==(0|(B=g|Q))|B>>>0>1)i[9404]=22,A=-1;else if(!g&I>>>0>=16|g){if(bA(t,a,_,E+12|0,E+8|0,E+4|0),(0|C)==(0|c)){i[9404]=28,A=-1;break A}B=A,A=31&(I=i[E+12>>2]),(63&I)>>>0>=32?(I=1<>>32-A,A=rg(C,B,o,32,g,I,i[E+4>>2],i[E+8>>2],c,r)}else i[9404]=28,A=-1;return s=E+16|0,0|A},vj:function(A,I,g,B,Q,E,a){I|=0,g|=0,B|=0,E|=0,a|=0;var _,c,t,r=0,e=0,y=0,h=0,D=0,p=0,w=0;r=Q|=0,r|=Q=0,s=_=s-128|0,c=bg(A|=0,0,102),D=22,t=g|Q;A:{I:{if(!B){bA(r,E,a,_+16|0,_+12|0,_+8|0),ag(e=_+96|0,32),D=28,g=_+32|0,E=i[_+16>>2],a=Ig(A=i[_+12>>2],0,B=i[_+8>>2],0);g:if(!(!(r=f)&a>>>0>1073741823|r|E>>>0>63)&&(C[0|g]=36,C[g+1|0]=55,C[g+2|0]=36,C[g+4|0]=o[1024+(63&B)|0],C[g+3|0]=o[E+1024|0],C[g+8|0]=o[1024+(B>>>24&63)|0],C[g+7|0]=o[1024+(B>>>18&63)|0],C[g+6|0]=o[1024+(B>>>12&63)|0],C[g+5|0]=o[1024+(B>>>6&63)|0],(B=g+9|0)&&(0|B)!=(0|(y=g+58|0))&&(C[0|B]=o[1024+(63&A)|0],1!=(0|(B=y-B|0))&&(C[g+10|0]=o[1024+(A>>>6&63)|0],2!=(0|B)&&(C[g+11|0]=o[1024+(A>>>12&63)|0],3!=(0|B)&&(C[g+12|0]=o[1024+(A>>>18&63)|0],4!=(0|B)&&(C[g+13|0]=o[1024+(A>>>24&63)|0],E=g+14|0))))))){for(r=y-E|0,A=0;;){if(B=E,!(A>>>0>=32)){if(E=o[A+e|0],(p=(a=A+1|0)>>>0>=32)?h=0:(E=o[a+e|0]<<8|E,(a=A+2|0)>>>0>=32?h=0:(E=o[a+e|0]<<16|E,h=1,a=A+3|0)),A=a,!r)break g;if(C[0|B]=o[1024+(63&E)|0],1==(0|r))break g;if(C[B+1|0]=o[1024+(E>>>6&63)|0],w=B+r|0,a=B+2|0,!p){if(2==(0|r))break g;if(C[B+2|0]=o[1024+(E>>>12&63)|0],a=B+3|0,h){if(3==(0|r))break g;C[B+3|0]=o[1024+(E>>>18|0)|0],a=B+4|0}}if(r=w-(E=a)|0,E)continue;break g}break}B>>>0>=y>>>0||(C[0|B]=0,Q=g)}if(Q){if(_C(A=_+20|0))break I;if(I=TA(A,I,t,g,c),Rg(A),I){A=0;break A}}}i[9404]=D}A=-1}return s=_+128|0,0|A},wj:function(A,I,g,C){I|=0,C|=0;var B,Q,i=0;B=A|=0,Q=g|=0,g=0,s=C=s-128|0;A:{I:{for(;;){if(!o[g+B|0]){A=g;break I}if(!o[B+(A=g+1|0)|0])break I;if(!o[B+(A=g+2|0)|0])break I;if(102==(0|(g=g+3|0)))break}g=-1;break A}g=-1,101==(0|A)&&(_C(i=C+4|0)||(bg(A=C+16|0,0,102),I=TA(i,I,Q,B,A),Rg(i),I&&(g=MI(A,B,102),XC(A,102))))}return s=C+128|0,0|g},xj:function(A,I,g,C){var B,Q;Q=A|=0,s=B=s-32|0,bA(I|=0,g|=0,C|=0,B+28|0,B+20|0,B+12|0),A=0;A:{I:{g:{for(;;){if(o[A+Q|0]){if(o[Q+(I=A+1|0)|0]&&o[Q+(I=A+2|0)|0]){if(102!=(0|(A=A+3|0)))continue;break g}}else I=A;break}if(101==(0|I)){if(g=B+8|0,C=B+16|0,A=0,36!=o[0|Q]|55!=o[Q+1|0]|36!=o[Q+2|0]||(I=uI(o[Q+3|0]),i[B+24>>2]=I?I-1024|0:0,I&&(I=PI(g,Q+4|0))&&(A=PI(C,I))),A)break I;i[9404]=28,A=-1;break A}}i[9404]=28,A=-1;break A}A=1,i[B+28>>2]!=i[B+24>>2]|i[B+12>>2]!=i[B+8>>2]||(A=i[B+20>>2]!=i[B+16>>2])}return s=B+32|0,0|A},yj:function(A,I,g){return 0|ZA(A|=0,I|=0,g|=0,1)},zj:function(A,I,g){return 0|ZA(A|=0,I|=0,g|=0,0)},Aj:function(A,I){return 0|II(A|=0,I|=0,1)},Bj:function(A,I){return 0|II(A|=0,I|=0,0)},Cj:BB,Dj:BB,Ej:function(A,I,g){A|=0,I|=0;var B,Q=0;return s=B=s-320|0,Q=-1,EA(B,g|=0)||(C[0|A]=o[0|I],C[A+1|0]=o[I+1|0],C[A+2|0]=o[I+2|0],C[A+3|0]=o[I+3|0],C[A+4|0]=o[I+4|0],C[A+5|0]=o[I+5|0],C[A+6|0]=o[I+6|0],C[A+7|0]=o[I+7|0],C[A+8|0]=o[I+8|0],C[A+9|0]=o[I+9|0],C[A+10|0]=o[I+10|0],C[A+11|0]=o[I+11|0],C[A+12|0]=o[I+12|0],C[A+13|0]=o[I+13|0],C[A+14|0]=o[I+14|0],C[A+15|0]=o[I+15|0],C[A+16|0]=o[I+16|0],C[A+17|0]=o[I+17|0],C[A+18|0]=o[I+18|0],C[A+19|0]=o[I+19|0],C[A+20|0]=o[I+20|0],C[A+21|0]=o[I+21|0],C[A+22|0]=o[I+22|0],C[A+23|0]=o[I+23|0],C[A+24|0]=o[I+24|0],C[A+25|0]=o[I+25|0],C[A+26|0]=o[I+26|0],C[A+27|0]=o[I+27|0],C[A+28|0]=o[I+28|0],C[A+29|0]=o[I+29|0],C[A+30|0]=o[I+30|0],C[A+31|0]=127&o[I+31|0],u(I=B+160|0,A,B),W(A,I),Q=GI(A,32)?-1:0),s=B+320|0,0|Q},Fj:function(A,I){var g;return I|=0,s=g=s-160|0,C[0|(A|=0)]=o[0|I],C[A+1|0]=o[I+1|0],C[A+2|0]=o[I+2|0],C[A+3|0]=o[I+3|0],C[A+4|0]=o[I+4|0],C[A+5|0]=o[I+5|0],C[A+6|0]=o[I+6|0],C[A+7|0]=o[I+7|0],C[A+8|0]=o[I+8|0],C[A+9|0]=o[I+9|0],C[A+10|0]=o[I+10|0],C[A+11|0]=o[I+11|0],C[A+12|0]=o[I+12|0],C[A+13|0]=o[I+13|0],C[A+14|0]=o[I+14|0],C[A+15|0]=o[I+15|0],C[A+16|0]=o[I+16|0],C[A+17|0]=o[I+17|0],C[A+18|0]=o[I+18|0],C[A+19|0]=o[I+19|0],C[A+20|0]=o[I+20|0],C[A+21|0]=o[I+21|0],C[A+22|0]=o[I+22|0],C[A+23|0]=o[I+23|0],C[A+24|0]=o[I+24|0],C[A+25|0]=o[I+25|0],C[A+26|0]=o[I+26|0],C[A+27|0]=o[I+27|0],C[A+28|0]=o[I+28|0],C[A+29|0]=o[I+29|0],C[A+30|0]=o[I+30|0],C[A+31|0]=127&o[I+31|0],nA(g,A),W(A,g),A=GI(A,32),s=g+160|0,0|(A?-1:0)},Gj:BB,Hj:BB,Ij:dg,Jj:function(A,I,g,C,B,i){return A|=0,I|=0,B|=0,i|=0,!(C|=0)&(g|=0)>>>0>=4294967280|C&&(rC(),Q()),EI(A+16|0,A,I,g,C,B,i),0},Kj:lg,Lj:Dg,Mj:BB,Nj:_B,Oj:CB,Pj:EB,Qj:CB,Rj:CB,Sj:function(A,I,g,B,Q){A|=0,I|=0,g|=0,B|=0;var i,E,a=0,_=0,c=0,t=0,r=0,e=0,y=0,s=0,h=0,D=0,p=0,w=0,n=0,k=0;if(p=1886610805^(a=o[0|(Q|=0)]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24),D=1936682341^(_=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24),a^=1852142177,c=1819895653^_,w=1852075907^(_=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24),n=1685025377^(Q=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24),t=2037671283^_,_=1952801890^Q,s=g,(0|(E=(g+I|0)-(i=7&g)|0))!=(0|I))for(;g=(e=_^(k=o[I+4|0]|o[I+5|0]<<8|o[I+6|0]<<16|o[I+7|0]<<24))+c|0,t=B=a+(Q=t^(y=o[0|I]|o[I+1|0]<<8|o[I+2|0]<<16|o[I+3|0]<<24))|0,r=g=B>>>0>>0?g+1|0:g,a=B,B=g,g=D+n|0,g=(_=p+w|0)>>>0

>>0?g+1|0:g,h=(c=UI(w,n,13)^_)+a|0,B=(a=f^g)+B|0,a=UI(c,a,17)^h,p=UI(a,B=(c=c>>>0>h>>>0?B+1|0:B)^f,13),D=f,e=UI(Q,e,16),Q=r^f,e^=t,r=UI(_,g,32),g=f+Q|0,g=(t=B)+(B=(_=e+r|0)>>>0>>0?g+1|0:g)|0,r=g=(t=a+_|0)>>>0<_>>>0?g+1|0:g,p=UI(a=t^p,g^=D,17),D=f,e=UI(e,Q,21),Q=B^f,e^=_,_=UI(h,c,32),B=f+Q|0,g=(_=(c=e+_|0)>>>0<_>>>0?B+1|0:B)+g|0,w=(a=a+c|0)^p,B=g=a>>>0>>0?g+1|0:g,n=g^D,g=UI(e,Q,16),e=_^=f,h=UI(g^=c,_,21),c=f,r=(_=UI(t,r,32))+g|0,g=f+e|0,t=r^h,_=(g=_>>>0>r>>>0?g+1|0:g)^c,a=UI(a,B,32),c=f,p=y^r,D=g^k,(0|E)!=(0|(I=I+8|0)););switch(y=0,Q=s<<24,i-1|0){case 6:Q|=o[I+6|0]<<16;case 5:Q|=o[I+5|0]<<8;case 4:Q|=o[I+4|0];case 3:y|=(g=o[I+3|0])<<24,Q|=B=g>>>8|0;case 2:y|=(B=o[I+2|0])<<16,Q|=g=B>>>16|0;case 1:y|=(g=o[I+1|0])<<8,Q|=B=g>>>24|0;case 0:y=o[0|I]|y}return h=Q,I=Q^_,B=UI(Q=t^y,I,16),I=I+c|0,r=I=(t=Q+a|0)>>>0>>0?I+1|0:I,s=UI(Q=B^t,I^=g=f,21),_=f,g=D+n|0,B=g=(a=p+w|0)>>>0

>>0?g+1|0:g,c=Q,Q=UI(a,g,32),g=f+I|0,I=_,_=g=Q>>>0>(c=c+Q|0)>>>0?g+1|0:g,p=UI(Q=c^s,I^=g,16),D=f,g=(a=e=UI(w,n,13)^a)+t|0,B=(t=f^B)+r|0,r=Q,Q=UI(g,B=g>>>0>>0?B+1|0:B,32),I=f+I|0,k=Q=(a=Q>>>0>(s=r+Q|0)>>>0?I+1|0:I)^D,r=p^=s,D=UI(e,t,17)^g,g=(e=f^B)+_|0,I=g=(B=c=(I=D)+c|0)>>>0>>0?g+1|0:g,_=UI(B,g,32),g=f+Q|0,c=(t=_+r|0)^y,h^=r=_>>>0>t>>>0?g+1|0:g,Q=UI(D,e,13)^B,B=UI(Q,I^=f,17),I=I+a|0,Q=B^(_=Q+s|0),B=I=_>>>0>>0?I+1|0:I,g=(I^=g=f)+h|0,g=Q>>>0>(c=Q+c|0)>>>0?g+1|0:g,Q=UI(Q,I,13)^c,a=g,s=UI(Q,I=g^f,17),y=f,h=UI(p,k,21),e=r^f,r=t^h,_=238^UI(_,B,32),g=f+e|0,g=(h=I)+(I=(B=r+_|0)>>>0<_>>>0?g+1|0:g)|0,_=g=(t=B+Q|0)>>>0>>0?g+1|0:g,y=UI(Q=t^s,g^=y,13),h=f,r=UI(r,e,16),e=I^f,s=B^r,B=UI(c,a,32),I=f+e|0,B=(c=g)+(g=B>>>0>(a=s+B|0)>>>0?I+1|0:I)|0,c=B=(r=Q+a|0)>>>0>>0?B+1|0:B,y=UI(Q=y^r,I=B^h,17),h=f,B=UI(s,e,21),e=g^f,s=B^a,B=UI(t,_,32),g=f+e|0,g=(B=B>>>0>(a=s+B|0)>>>0?g+1|0:g)+I|0,_=g=(t=Q+a|0)>>>0>>0?g+1|0:g,y=UI(Q=t^y,I=g^h,13),h=f,g=UI(s,e,16),e=B^f,s=g^a,g=UI(r,c,32),B=f+e|0,g=(B=g>>>0>(a=s+g|0)>>>0?B+1|0:B)+I|0,c=g=(r=Q+a|0)>>>0>>0?g+1|0:g,y=UI(Q=y^r,I=g^h,17),h=f,g=UI(s,e,21),e=B^f,s=g^a,a=UI(t,_,32),g=f+e|0,I=(g=(B=s+a|0)>>>0>>0?g+1|0:g)+I|0,a=I=(_=B+Q|0)>>>0>>0?I+1|0:I,y=UI(Q=_^y,I^=h,13),h=f,t=UI(s,e,16),s=g^f,t^=B,c=UI(r,c,32),g=f+s|0,g=(r=I)+(I=(B=t+c|0)>>>0>>0?g+1|0:g)|0,c=g=(r=B+Q|0)>>>0>>0?g+1|0:g,y=UI(Q=y^r,g^=h,17),h=f,t=UI(t,s,21),s=I^f,t^=B,B=UI(_,a,32),I=f+s|0,B=(_=g)+(g=B>>>0>(a=t+B|0)>>>0?I+1|0:I)|0,_=Q=(B=(I=Q+a|0)>>>0>>0?B+1|0:B)^h,y^=I,t=UI(t,s,16),e=g^f,a=(t^=a)+(c=UI(r,c,32))|0,g=f+e|0,I=UI(I,B,32),s=f,B=g=a>>>0>>0?g+1|0:g,c=A,t=(r=UI(t,e,21)^a)^I^a^y,C[0|c]=t,C[c+1|0]=t>>>8,C[c+2|0]=t>>>16,C[c+3|0]=t>>>24,g=(e=s^g^Q)^(Q=g^f),C[c+4|0]=g,C[c+5|0]=g>>>8,C[c+6|0]=g>>>16,C[c+7|0]=g>>>24,g=Q+s|0,g=(c=I)>>>0>(I=I+r|0)>>>0?g+1|0:g,h=I,Q=UI(r,Q,16)^I,r=g,s=I=g^f,B=(g=_)+B|0,_=a=(c=y^=221)+a|0,a=UI(a,B=a>>>0>>0?B+1|0:B,32),I=f+I|0,I=a>>>0>(t=a+Q|0)>>>0?I+1|0:I,a=UI(Q,s,21)^t,c=I,D=UI(a,Q=I^f,16),e=f,I=UI(y,g,13),g=r+(s=B^f)|0,I=g=(B=h+(y=I^_)|0)>>>0>>0?g+1|0:g,_=a,a=UI(B,g,32),g=f+Q|0,e=g=(_=a>>>0>(r=_+a|0)>>>0?g+1|0:g)^e,h=UI(D^=r,g,21),a=f,g=UI(y,s,17),I=c+(s=I^f)|0,B=I=(Q=t+(y=g^B)|0)>>>0>>0?I+1|0:I,I=UI(Q,I,32),g=e+f|0,e=g=(c=a)^(a=(I=I+D|0)>>>0>>0?g+1|0:g),c=I,h=UI(D=h^I,g,16),t=f,I=UI(y,s,13),g=_+(s=B^f)|0,I=UI(Q=r+(y=I^Q)|0,g=Q>>>0>>0?g+1|0:g,32),B=e+f|0,e=B=(_=(I=I+D|0)>>>0>>0?B+1|0:B)^t,r=I,h=UI(D=h^I,B,21),t=f,I=UI(y,s,17),g=a+(s=g^f)|0,B=g=(Q=c+(y=I^Q)|0)>>>0>>0?g+1|0:g,I=UI(Q,g,32),g=e+f|0,e=g=(a=(I=I+D|0)>>>0>>0?g+1|0:g)^t,c=I,h=UI(D=h^I,g,16),t=f,I=UI(y,s,13),B=_+(s=B^f)|0,g=UI(Q=r+(y=I^Q)|0,B=Q>>>0>>0?B+1|0:B,32),I=e+f|0,_=g=g+D|0,h=UI(h^g,(I=g>>>0>>0?I+1|0:I)^t,21),t=f,r=UI(y,s,17),g=B^f,r=UI(B=Q^r,g,13),g=g+a|0,g=(B=B+c|0)>>>0>>0?g+1|0:g,Q=UI(a=B^r,g^=Q=f,17)^h,B=f^t,g=I+g|0,I=UI(I=a+_|0,g=I>>>0<_>>>0?g+1|0:g,32)^Q^I,C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,I=g^f^B,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,0},Tj:function(A,I,g,B,Q){A|=0,B|=0,Q|=0;var E,a=0,_=0,c=0,t=0;if(s=E=s-112|0,a=I|=0,I|(_=g|=0)){I=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,i[E+24>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,i[E+28>>2]=I,I=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[E+16>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[E+20>>2]=I,I=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[E>>2]=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,i[E+4>>2]=I,I=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[E+8>>2]=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24,i[E+12>>2]=I,I=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,g=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[E+104>>2]=0,i[E+108>>2]=0,i[E+96>>2]=I,i[E+100>>2]=g;A:{if(!_&a>>>0>=64|_){for(;IC(A,E+96|0,E,0),I=o[E+104|0]+1|0,C[E+104|0]=I,I=o[E+105|0]+(I>>>8|0)|0,C[E+105|0]=I,I=o[E+106|0]+(I>>>8|0)|0,C[E+106|0]=I,I=o[E+107|0]+(I>>>8|0)|0,C[E+107|0]=I,I=o[E+108|0]+(I>>>8|0)|0,C[E+108|0]=I,I=o[E+109|0]+(I>>>8|0)|0,C[E+109|0]=I,I=o[E+110|0]+(I>>>8|0)|0,C[E+110|0]=I,C[E+111|0]=o[E+111|0]+(I>>>8|0),A=A- -64|0,_=_-1|0,!(_=(a=a+-64|0)>>>0<4294967232?_+1|0:_)&a>>>0>63|_;);if(!(a|_))break A}if(g=0,IC(E+32|0,E+96|0,E,0),B=3&a,I=0,!_&a>>>0>=4|_)for(_=60&a,Q=0;a=t=E+32|0,C[A+I|0]=o[a+I|0],C[(c=1|I)+A|0]=o[a+c|0],C[(c=2|I)+A|0]=o[a+c|0],C[(a=3|I)+A|0]=o[a+t|0],I=I+4|0,(0|_)!=(0|(Q=Q+4|0)););if(B)for(;C[A+I|0]=o[(E+32|0)+I|0],I=I+1|0,(0|B)!=(0|(g=g+1|0)););}XC(E+32|0,64),XC(E,32)}return s=E+112|0,0},Uj:function(A,I,g,B,Q,E){A|=0,I|=0,Q|=0,E|=0;var a,_=0,c=0;if(s=a=s-112|0,_=g|=0,(B|=0)|g){g=o[E+28|0]|o[E+29|0]<<8|o[E+30|0]<<16|o[E+31|0]<<24,i[a+24>>2]=o[E+24|0]|o[E+25|0]<<8|o[E+26|0]<<16|o[E+27|0]<<24,i[a+28>>2]=g,g=o[E+20|0]|o[E+21|0]<<8|o[E+22|0]<<16|o[E+23|0]<<24,i[a+16>>2]=o[E+16|0]|o[E+17|0]<<8|o[E+18|0]<<16|o[E+19|0]<<24,i[a+20>>2]=g,g=o[E+4|0]|o[E+5|0]<<8|o[E+6|0]<<16|o[E+7|0]<<24,i[a>>2]=o[0|E]|o[E+1|0]<<8|o[E+2|0]<<16|o[E+3|0]<<24,i[a+4>>2]=g,g=o[E+12|0]|o[E+13|0]<<8|o[E+14|0]<<16|o[E+15|0]<<24,i[a+8>>2]=o[E+8|0]|o[E+9|0]<<8|o[E+10|0]<<16|o[E+11|0]<<24,i[a+12>>2]=g,g=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,Q=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[a+104>>2]=0,i[a+108>>2]=0,i[a+96>>2]=g,i[a+100>>2]=Q;A:{if(!B&_>>>0>=64|B){for(;;){for(g=0,IC(a+32|0,a+96|0,a,0);E=a+32|0,C[A+g|0]=o[E+g|0]^o[I+g|0],C[(Q=1|g)+A|0]=o[Q+E|0]^o[I+Q|0],64!=(0|(g=g+2|0)););if(g=o[a+104|0]+1|0,C[a+104|0]=g,g=o[a+105|0]+(g>>>8|0)|0,C[a+105|0]=g,g=o[a+106|0]+(g>>>8|0)|0,C[a+106|0]=g,g=o[a+107|0]+(g>>>8|0)|0,C[a+107|0]=g,g=o[a+108|0]+(g>>>8|0)|0,C[a+108|0]=g,g=o[a+109|0]+(g>>>8|0)|0,C[a+109|0]=g,g=o[a+110|0]+(g>>>8|0)|0,C[a+110|0]=g,C[a+111|0]=o[a+111|0]+(g>>>8|0),I=I- -64|0,A=A- -64|0,B=B-1|0,!(!(B=(_=_+-64|0)>>>0<4294967232?B+1|0:B)&_>>>0>63|B))break}if(!(B|_))break A}if(g=0,IC(a+32|0,a+96|0,a,0),E=1&_,1!=(0|_)|B)for(_&=62,B=0;c=a+32|0,C[A+g|0]=o[c+g|0]^o[I+g|0],C[(Q=1|g)+A|0]=o[Q+c|0]^o[I+Q|0],g=g+2|0,(0|_)!=(0|(B=B+2|0)););E&&(C[A+g|0]=o[(a+32|0)+g|0]^o[I+g|0])}XC(a+32|0,64),XC(a,32)}return s=a+112|0,0},Vj:BB,Wj:eB,Xj:cB,Yj:PC,Zj:function(A,I,g,B,Q){A|=0,B|=0,Q|=0;var E,a=0,_=0,c=0,t=0;if(s=E=s-112|0,a=I|=0,I|(_=g|=0)){I=o[Q+28|0]|o[Q+29|0]<<8|o[Q+30|0]<<16|o[Q+31|0]<<24,i[E+24>>2]=o[Q+24|0]|o[Q+25|0]<<8|o[Q+26|0]<<16|o[Q+27|0]<<24,i[E+28>>2]=I,I=o[Q+20|0]|o[Q+21|0]<<8|o[Q+22|0]<<16|o[Q+23|0]<<24,i[E+16>>2]=o[Q+16|0]|o[Q+17|0]<<8|o[Q+18|0]<<16|o[Q+19|0]<<24,i[E+20>>2]=I,I=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[E>>2]=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,i[E+4>>2]=I,I=o[Q+12|0]|o[Q+13|0]<<8|o[Q+14|0]<<16|o[Q+15|0]<<24,i[E+8>>2]=o[Q+8|0]|o[Q+9|0]<<8|o[Q+10|0]<<16|o[Q+11|0]<<24,i[E+12>>2]=I,I=o[0|B]|o[B+1|0]<<8|o[B+2|0]<<16|o[B+3|0]<<24,g=o[B+4|0]|o[B+5|0]<<8|o[B+6|0]<<16|o[B+7|0]<<24,i[E+104>>2]=0,i[E+108>>2]=0,i[E+96>>2]=I,i[E+100>>2]=g;A:{if(!_&a>>>0>=64|_){for(;gC(A,E+96|0,E,0),I=o[E+104|0]+1|0,C[E+104|0]=I,I=o[E+105|0]+(I>>>8|0)|0,C[E+105|0]=I,I=o[E+106|0]+(I>>>8|0)|0,C[E+106|0]=I,I=o[E+107|0]+(I>>>8|0)|0,C[E+107|0]=I,I=o[E+108|0]+(I>>>8|0)|0,C[E+108|0]=I,I=o[E+109|0]+(I>>>8|0)|0,C[E+109|0]=I,I=o[E+110|0]+(I>>>8|0)|0,C[E+110|0]=I,C[E+111|0]=o[E+111|0]+(I>>>8|0),A=A- -64|0,_=_-1|0,!(_=(a=a+-64|0)>>>0<4294967232?_+1|0:_)&a>>>0>63|_;);if(!(a|_))break A}if(g=0,gC(E+32|0,E+96|0,E,0),B=3&a,I=0,!_&a>>>0>=4|_)for(_=60&a,Q=0;a=t=E+32|0,C[A+I|0]=o[a+I|0],C[(c=1|I)+A|0]=o[a+c|0],C[(c=2|I)+A|0]=o[a+c|0],C[(a=3|I)+A|0]=o[a+t|0],I=I+4|0,(0|_)!=(0|(Q=Q+4|0)););if(B)for(;C[A+I|0]=o[(E+32|0)+I|0],I=I+1|0,(0|B)!=(0|(g=g+1|0)););}XC(E+32|0,64),XC(E,32)}return s=E+112|0,0},_j:function(A,I,g,B,Q,E){A|=0,I|=0,Q|=0,E|=0;var a,_=0,c=0;if(s=a=s-112|0,_=g|=0,(B|=0)|g){g=o[E+28|0]|o[E+29|0]<<8|o[E+30|0]<<16|o[E+31|0]<<24,i[a+24>>2]=o[E+24|0]|o[E+25|0]<<8|o[E+26|0]<<16|o[E+27|0]<<24,i[a+28>>2]=g,g=o[E+20|0]|o[E+21|0]<<8|o[E+22|0]<<16|o[E+23|0]<<24,i[a+16>>2]=o[E+16|0]|o[E+17|0]<<8|o[E+18|0]<<16|o[E+19|0]<<24,i[a+20>>2]=g,g=o[E+4|0]|o[E+5|0]<<8|o[E+6|0]<<16|o[E+7|0]<<24,i[a>>2]=o[0|E]|o[E+1|0]<<8|o[E+2|0]<<16|o[E+3|0]<<24,i[a+4>>2]=g,g=o[E+12|0]|o[E+13|0]<<8|o[E+14|0]<<16|o[E+15|0]<<24,i[a+8>>2]=o[E+8|0]|o[E+9|0]<<8|o[E+10|0]<<16|o[E+11|0]<<24,i[a+12>>2]=g,g=o[0|Q]|o[Q+1|0]<<8|o[Q+2|0]<<16|o[Q+3|0]<<24,Q=o[Q+4|0]|o[Q+5|0]<<8|o[Q+6|0]<<16|o[Q+7|0]<<24,i[a+104>>2]=0,i[a+108>>2]=0,i[a+96>>2]=g,i[a+100>>2]=Q;A:{if(!B&_>>>0>=64|B){for(;;){for(g=0,gC(a+32|0,a+96|0,a,0);E=a+32|0,C[A+g|0]=o[E+g|0]^o[I+g|0],C[(Q=1|g)+A|0]=o[Q+E|0]^o[I+Q|0],64!=(0|(g=g+2|0)););if(g=o[a+104|0]+1|0,C[a+104|0]=g,g=o[a+105|0]+(g>>>8|0)|0,C[a+105|0]=g,g=o[a+106|0]+(g>>>8|0)|0,C[a+106|0]=g,g=o[a+107|0]+(g>>>8|0)|0,C[a+107|0]=g,g=o[a+108|0]+(g>>>8|0)|0,C[a+108|0]=g,g=o[a+109|0]+(g>>>8|0)|0,C[a+109|0]=g,g=o[a+110|0]+(g>>>8|0)|0,C[a+110|0]=g,C[a+111|0]=o[a+111|0]+(g>>>8|0),I=I- -64|0,A=A- -64|0,B=B-1|0,!(!(B=(_=_+-64|0)>>>0<4294967232?B+1|0:B)&_>>>0>63|B))break}if(!(B|_))break A}if(g=0,gC(a+32|0,a+96|0,a,0),E=1&_,1!=(0|_)|B)for(_&=62,B=0;c=a+32|0,C[A+g|0]=o[c+g|0]^o[I+g|0],C[(Q=1|g)+A|0]=o[Q+c|0]^o[I+Q|0],g=g+2|0,(0|_)!=(0|(B=B+2|0)););E&&(C[A+g|0]=o[(a+32|0)+g|0]^o[I+g|0])}XC(a+32|0,64),XC(a,32)}return s=a+112|0,0},$j:BB,ak:eB,bk:cB,ck:PC,dk:BB,ek:_B,fk:cB,gk:function(A,I,g,C,B){var Q;return A|=0,I|=0,g|=0,s=Q=s-32|0,yA(Q,C|=0,B|=0,0),A=Xg(A,I,g,C+16|0,Q),s=Q+32|0,0|A},hk:function(A,I,g,C,B,Q,i,o){var E;return A|=0,I|=0,g|=0,C|=0,Q|=0,i|=0,s=E=s-32|0,yA(E,B|=0,o|=0,0),A=mg(o=A,I,(A=0)|g,C,B+16|0,A|Q,i,E),s=E+32|0,0|A},ik:function(A,I,g,C,B,Q){var i;return A|=0,I|=0,g|=0,C|=0,s=i=s-32|0,yA(i,B|=0,Q|=0,0),A=mg(A,I,g,C,B+16|0,0,0,i),s=i+32|0,0|A},jk:PC,kk:K,lk:BA,mk:pB}}(A)}(I)},instantiate:function(A,I){return{then:function(g){var C=new y.Module(A);g({instance:new y.Instance(C,I)})}}},RuntimeError:Error};t=[];var s,h,D,f,p,w,n,k=!1;function F(){var A=e.buffer;B.HEAP8=s=new Int8Array(A),B.HEAP16=D=new Int16Array(A),B.HEAPU8=h=new Uint8Array(A),B.HEAPU16=new Uint16Array(A),B.HEAP32=f=new Int32Array(A),B.HEAPU32=p=new Uint32Array(A),B.HEAPF32=w=new Float32Array(A),B.HEAPF64=n=new Float64Array(A)}var S=[],N=[],G=[],M=0,K=null,U=null;function b(A){throw B.onAbort?.(A),r(A=\"Aborted(\"+A+\")\"),k=!0,A+=\". Build with -sASSERTIONS for more info.\",new y.RuntimeError(A)}var H,Y=A=>A.startsWith(\"file://\");var J={36800:()=>B.getRandomValue(),36836:()=>{if(void 0===B.getRandomValue)try{var A=\"object\"==typeof window?window:self,I=void 0!==A.crypto?A.crypto:A.msCrypto;I=void 0===I?C:I;var g=function(){var A=new Uint32Array(1);return I.getRandomValues(A),A[0]>>>0};g(),B.getRandomValue=g}catch(A){try{var C=require(\"crypto\"),Q=function(){var A=C.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};Q(),B.getRandomValue=Q}catch(A){throw\"No secure random number generator found\"}}}},d=A=>{for(;A.length>0;)A.shift()(B)};B.noExitRuntime;var m,l=\"undefined\"!=typeof TextDecoder?new TextDecoder:void 0,u=(A,I)=>A?((A,I,g)=>{for(var C=I+g,B=I;A[B]&&!(B>=C);)++B;if(B-I>16&&A.buffer&&l)return l.decode(A.subarray(I,B));for(var Q=\"\";I>10,56320|1023&a)}}else Q+=String.fromCharCode((31&i)<<6|o)}else Q+=String.fromCharCode(i)}return Q})(h,A,I):\"\",x=[],v=A=>{var I=(A-e.buffer.byteLength+65535)/65536;try{return e.grow(I),F(),1}catch(A){}},R={b:(A,I,g,C)=>{b(`Assertion failed: ${u(A)}, at: `+[I?u(I):\"unknown filename\",g,C?u(C):\"unknown function\"])},c:()=>{b(\"\")},a:(A,I,g)=>((A,I,g)=>{var C=((A,I)=>{var g;for(x.length=0;g=h[A++];){var C=105!=g;I+=(C&=112!=g)&&I%8?4:0,x.push(112==g?p[I>>2]:105==g?f[I>>2]:n[I>>3]),I+=C?8:4}return x})(I,g);return J[A](...C)})(A,I,g),d:A=>{var I=h.length,g=2147483648;if((A>>>=0)>g)return!1;for(var C,B=1;B<=4;B*=2){var Q=I*(1+.2/B);Q=Math.min(Q,A+100663296);var i=Math.min(g,(C=Math.max(A,Q))+(65536-C%65536)%65536);if(v(i))return!0}return!1}},L=function(){var A={a:R};function I(A,I){var g;return L=A.exports,e=L.e,F(),g=L.f,N.unshift(g),function(A){if(M--,B.monitorRunDependencies?.(M),0==M&&(null!==K&&(clearInterval(K),K=null),U)){var I=U;U=null,I()}}(),L}if(M++,B.monitorRunDependencies?.(M),B.instantiateWasm)try{return B.instantiateWasm(A,I)}catch(A){return r(`Module.instantiateWasm callback failed with error: ${A}`),!1}return H||(H=\"<<< WASM_BINARY_FILE >>>\"),function(A,I,C){(function(A){return Promise.resolve().then((()=>function(A){if(A==H&&t)return new Uint8Array(t);if(g)return g(A);throw\"both async and sync fetching of the wasm failed\"}(A)))})(A).then((A=>y.instantiate(A,I))).then(C,(A=>{r(`failed to asynchronously prepare wasm: ${A}`),b(A)}))}(H,A,(function(A){I(A.instance)})),{}}();function P(){function A(){m||(m=!0,B.calledRun=!0,k||(d(N),B.onRuntimeInitialized?.(),function(){if(B.postRun)for(\"function\"==typeof B.postRun&&(B.postRun=[B.postRun]);B.postRun.length;)A=B.postRun.shift(),G.unshift(A);var A;d(G)}()))}M>0||(function(){if(B.preRun)for(\"function\"==typeof B.preRun&&(B.preRun=[B.preRun]);B.preRun.length;)A=B.preRun.shift(),S.unshift(A);var A;d(S)}(),M>0||(B.setStatus?(B.setStatus(\"Running...\"),setTimeout((function(){setTimeout((function(){B.setStatus(\"\")}),1),A()}),1)):A()))}if(B._crypto_aead_aegis128l_keybytes=()=>(B._crypto_aead_aegis128l_keybytes=L.g)(),B._crypto_aead_aegis128l_nsecbytes=()=>(B._crypto_aead_aegis128l_nsecbytes=L.h)(),B._crypto_aead_aegis128l_npubbytes=()=>(B._crypto_aead_aegis128l_npubbytes=L.i)(),B._crypto_aead_aegis128l_abytes=()=>(B._crypto_aead_aegis128l_abytes=L.j)(),B._crypto_aead_aegis128l_messagebytes_max=()=>(B._crypto_aead_aegis128l_messagebytes_max=L.k)(),B._crypto_aead_aegis128l_keygen=A=>(B._crypto_aead_aegis128l_keygen=L.l)(A),B._crypto_aead_aegis128l_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_encrypt=L.m)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis128l_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_aegis128l_encrypt_detached=L.n)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_aegis128l_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_decrypt=L.o)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis128l_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_decrypt_detached=L.p)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_keybytes=()=>(B._crypto_aead_aegis256_keybytes=L.q)(),B._crypto_aead_aegis256_nsecbytes=()=>(B._crypto_aead_aegis256_nsecbytes=L.r)(),B._crypto_aead_aegis256_npubbytes=()=>(B._crypto_aead_aegis256_npubbytes=L.s)(),B._crypto_aead_aegis256_abytes=()=>(B._crypto_aead_aegis256_abytes=L.t)(),B._crypto_aead_aegis256_messagebytes_max=()=>(B._crypto_aead_aegis256_messagebytes_max=L.u)(),B._crypto_aead_aegis256_keygen=A=>(B._crypto_aead_aegis256_keygen=L.v)(A),B._crypto_aead_aegis256_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_encrypt=L.w)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_aegis256_encrypt_detached=L.x)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_aegis256_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_decrypt=L.y)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_decrypt_detached=L.z)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aes256gcm_is_available=()=>(B._crypto_aead_aes256gcm_is_available=L.A)(),B._crypto_aead_chacha20poly1305_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_chacha20poly1305_encrypt_detached=L.B)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_chacha20poly1305_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_encrypt=L.C)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_chacha20poly1305_ietf_encrypt_detached=L.D)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_chacha20poly1305_ietf_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_encrypt=L.E)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_decrypt_detached=L.F)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_decrypt=L.G)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_decrypt_detached=L.H)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_decrypt=L.I)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(B._crypto_aead_chacha20poly1305_ietf_keybytes=L.J)(),B._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(B._crypto_aead_chacha20poly1305_ietf_npubbytes=L.K)(),B._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(B._crypto_aead_chacha20poly1305_ietf_nsecbytes=L.L)(),B._crypto_aead_chacha20poly1305_ietf_abytes=()=>(B._crypto_aead_chacha20poly1305_ietf_abytes=L.M)(),B._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(B._crypto_aead_chacha20poly1305_ietf_messagebytes_max=L.N)(),B._crypto_aead_chacha20poly1305_ietf_keygen=A=>(B._crypto_aead_chacha20poly1305_ietf_keygen=L.O)(A),B._crypto_aead_chacha20poly1305_keybytes=()=>(B._crypto_aead_chacha20poly1305_keybytes=L.P)(),B._crypto_aead_chacha20poly1305_npubbytes=()=>(B._crypto_aead_chacha20poly1305_npubbytes=L.Q)(),B._crypto_aead_chacha20poly1305_nsecbytes=()=>(B._crypto_aead_chacha20poly1305_nsecbytes=L.R)(),B._crypto_aead_chacha20poly1305_abytes=()=>(B._crypto_aead_chacha20poly1305_abytes=L.S)(),B._crypto_aead_chacha20poly1305_messagebytes_max=()=>(B._crypto_aead_chacha20poly1305_messagebytes_max=L.T)(),B._crypto_aead_chacha20poly1305_keygen=A=>(B._crypto_aead_chacha20poly1305_keygen=L.U)(A),B._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=L.V)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_xchacha20poly1305_ietf_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_encrypt=L.W)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=L.X)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_decrypt=L.Y)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_keybytes=L.Z)(),B._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_npubbytes=L._)(),B._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_nsecbytes=L.$)(),B._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_abytes=L.aa)(),B._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(B._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=L.ba)(),B._crypto_aead_xchacha20poly1305_ietf_keygen=A=>(B._crypto_aead_xchacha20poly1305_ietf_keygen=L.ca)(A),B._crypto_auth_bytes=()=>(B._crypto_auth_bytes=L.da)(),B._crypto_auth_keybytes=()=>(B._crypto_auth_keybytes=L.ea)(),B._crypto_auth_primitive=()=>(B._crypto_auth_primitive=L.fa)(),B._crypto_auth=(A,I,g,C,Q)=>(B._crypto_auth=L.ga)(A,I,g,C,Q),B._crypto_auth_verify=(A,I,g,C,Q)=>(B._crypto_auth_verify=L.ha)(A,I,g,C,Q),B._crypto_auth_keygen=A=>(B._crypto_auth_keygen=L.ia)(A),B._crypto_auth_hmacsha256_bytes=()=>(B._crypto_auth_hmacsha256_bytes=L.ja)(),B._crypto_auth_hmacsha256_keybytes=()=>(B._crypto_auth_hmacsha256_keybytes=L.ka)(),B._crypto_auth_hmacsha256_statebytes=()=>(B._crypto_auth_hmacsha256_statebytes=L.la)(),B._crypto_auth_hmacsha256_keygen=A=>(B._crypto_auth_hmacsha256_keygen=L.ma)(A),B._crypto_auth_hmacsha256_init=(A,I,g)=>(B._crypto_auth_hmacsha256_init=L.na)(A,I,g),B._crypto_auth_hmacsha256_update=(A,I,g,C)=>(B._crypto_auth_hmacsha256_update=L.oa)(A,I,g,C),B._crypto_auth_hmacsha256_final=(A,I)=>(B._crypto_auth_hmacsha256_final=L.pa)(A,I),B._crypto_auth_hmacsha256=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha256=L.qa)(A,I,g,C,Q),B._crypto_auth_hmacsha256_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha256_verify=L.ra)(A,I,g,C,Q),B._crypto_auth_hmacsha512_bytes=()=>(B._crypto_auth_hmacsha512_bytes=L.sa)(),B._crypto_auth_hmacsha512_keybytes=()=>(B._crypto_auth_hmacsha512_keybytes=L.ta)(),B._crypto_auth_hmacsha512_statebytes=()=>(B._crypto_auth_hmacsha512_statebytes=L.ua)(),B._crypto_auth_hmacsha512_keygen=A=>(B._crypto_auth_hmacsha512_keygen=L.va)(A),B._crypto_auth_hmacsha512_init=(A,I,g)=>(B._crypto_auth_hmacsha512_init=L.wa)(A,I,g),B._crypto_auth_hmacsha512_update=(A,I,g,C)=>(B._crypto_auth_hmacsha512_update=L.xa)(A,I,g,C),B._crypto_auth_hmacsha512_final=(A,I)=>(B._crypto_auth_hmacsha512_final=L.ya)(A,I),B._crypto_auth_hmacsha512=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512=L.za)(A,I,g,C,Q),B._crypto_auth_hmacsha512_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512_verify=L.Aa)(A,I,g,C,Q),B._crypto_auth_hmacsha512256_bytes=()=>(B._crypto_auth_hmacsha512256_bytes=L.Ba)(),B._crypto_auth_hmacsha512256_keybytes=()=>(B._crypto_auth_hmacsha512256_keybytes=L.Ca)(),B._crypto_auth_hmacsha512256_statebytes=()=>(B._crypto_auth_hmacsha512256_statebytes=L.Da)(),B._crypto_auth_hmacsha512256_keygen=A=>(B._crypto_auth_hmacsha512256_keygen=L.Ea)(A),B._crypto_auth_hmacsha512256_init=(A,I,g)=>(B._crypto_auth_hmacsha512256_init=L.Fa)(A,I,g),B._crypto_auth_hmacsha512256_update=(A,I,g,C)=>(B._crypto_auth_hmacsha512256_update=L.Ga)(A,I,g,C),B._crypto_auth_hmacsha512256_final=(A,I)=>(B._crypto_auth_hmacsha512256_final=L.Ha)(A,I),B._crypto_auth_hmacsha512256=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512256=L.Ia)(A,I,g,C,Q),B._crypto_auth_hmacsha512256_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512256_verify=L.Ja)(A,I,g,C,Q),B._crypto_box_seedbytes=()=>(B._crypto_box_seedbytes=L.Ka)(),B._crypto_box_publickeybytes=()=>(B._crypto_box_publickeybytes=L.La)(),B._crypto_box_secretkeybytes=()=>(B._crypto_box_secretkeybytes=L.Ma)(),B._crypto_box_beforenmbytes=()=>(B._crypto_box_beforenmbytes=L.Na)(),B._crypto_box_noncebytes=()=>(B._crypto_box_noncebytes=L.Oa)(),B._crypto_box_zerobytes=()=>(B._crypto_box_zerobytes=L.Pa)(),B._crypto_box_boxzerobytes=()=>(B._crypto_box_boxzerobytes=L.Qa)(),B._crypto_box_macbytes=()=>(B._crypto_box_macbytes=L.Ra)(),B._crypto_box_messagebytes_max=()=>(B._crypto_box_messagebytes_max=L.Sa)(),B._crypto_box_primitive=()=>(B._crypto_box_primitive=L.Ta)(),B._crypto_box_seed_keypair=(A,I,g)=>(B._crypto_box_seed_keypair=L.Ua)(A,I,g),B._crypto_box_keypair=(A,I)=>(B._crypto_box_keypair=L.Va)(A,I),B._crypto_box_beforenm=(A,I,g)=>(B._crypto_box_beforenm=L.Wa)(A,I,g),B._crypto_box_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_afternm=L.Xa)(A,I,g,C,Q,i),B._crypto_box_open_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_open_afternm=L.Ya)(A,I,g,C,Q,i),B._crypto_box=(A,I,g,C,Q,i,o)=>(B._crypto_box=L.Za)(A,I,g,C,Q,i,o),B._crypto_box_open=(A,I,g,C,Q,i,o)=>(B._crypto_box_open=L._a)(A,I,g,C,Q,i,o),B._crypto_box_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_detached_afternm=L.$a)(A,I,g,C,Q,i,o),B._crypto_box_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_detached=L.ab)(A,I,g,C,Q,i,o,E),B._crypto_box_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_easy_afternm=L.bb)(A,I,g,C,Q,i),B._crypto_box_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_easy=L.cb)(A,I,g,C,Q,i,o),B._crypto_box_open_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_open_detached_afternm=L.db)(A,I,g,C,Q,i,o),B._crypto_box_open_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_open_detached=L.eb)(A,I,g,C,Q,i,o,E),B._crypto_box_open_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_open_easy_afternm=L.fb)(A,I,g,C,Q,i),B._crypto_box_open_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_open_easy=L.gb)(A,I,g,C,Q,i,o),B._crypto_box_seal=(A,I,g,C,Q)=>(B._crypto_box_seal=L.hb)(A,I,g,C,Q),B._crypto_box_seal_open=(A,I,g,C,Q,i)=>(B._crypto_box_seal_open=L.ib)(A,I,g,C,Q,i),B._crypto_box_sealbytes=()=>(B._crypto_box_sealbytes=L.jb)(),B._crypto_box_curve25519xsalsa20poly1305_seed_keypair=(A,I,g)=>(B._crypto_box_curve25519xsalsa20poly1305_seed_keypair=L.kb)(A,I,g),B._crypto_box_curve25519xsalsa20poly1305_keypair=(A,I)=>(B._crypto_box_curve25519xsalsa20poly1305_keypair=L.lb)(A,I),B._crypto_box_curve25519xsalsa20poly1305_beforenm=(A,I,g)=>(B._crypto_box_curve25519xsalsa20poly1305_beforenm=L.mb)(A,I,g),B._crypto_box_curve25519xsalsa20poly1305_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xsalsa20poly1305_afternm=L.nb)(A,I,g,C,Q,i),B._crypto_box_curve25519xsalsa20poly1305_open_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xsalsa20poly1305_open_afternm=L.ob)(A,I,g,C,Q,i),B._crypto_box_curve25519xsalsa20poly1305=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xsalsa20poly1305=L.pb)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xsalsa20poly1305_open=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xsalsa20poly1305_open=L.qb)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xsalsa20poly1305_seedbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_seedbytes=L.rb)(),B._crypto_box_curve25519xsalsa20poly1305_publickeybytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_publickeybytes=L.sb)(),B._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=L.tb)(),B._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=L.ub)(),B._crypto_box_curve25519xsalsa20poly1305_noncebytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_noncebytes=L.vb)(),B._crypto_box_curve25519xsalsa20poly1305_zerobytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_zerobytes=L.wb)(),B._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=L.xb)(),B._crypto_box_curve25519xsalsa20poly1305_macbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_macbytes=L.yb)(),B._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=()=>(B._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=L.zb)(),B._crypto_core_hchacha20=(A,I,g,C)=>(B._crypto_core_hchacha20=L.Ab)(A,I,g,C),B._crypto_core_hchacha20_outputbytes=()=>(B._crypto_core_hchacha20_outputbytes=L.Bb)(),B._crypto_core_hchacha20_inputbytes=()=>(B._crypto_core_hchacha20_inputbytes=L.Cb)(),B._crypto_core_hchacha20_keybytes=()=>(B._crypto_core_hchacha20_keybytes=L.Db)(),B._crypto_core_hchacha20_constbytes=()=>(B._crypto_core_hchacha20_constbytes=L.Eb)(),B._crypto_core_hsalsa20=(A,I,g,C)=>(B._crypto_core_hsalsa20=L.Fb)(A,I,g,C),B._crypto_core_hsalsa20_outputbytes=()=>(B._crypto_core_hsalsa20_outputbytes=L.Gb)(),B._crypto_core_hsalsa20_inputbytes=()=>(B._crypto_core_hsalsa20_inputbytes=L.Hb)(),B._crypto_core_hsalsa20_keybytes=()=>(B._crypto_core_hsalsa20_keybytes=L.Ib)(),B._crypto_core_hsalsa20_constbytes=()=>(B._crypto_core_hsalsa20_constbytes=L.Jb)(),B._crypto_core_salsa20=(A,I,g,C)=>(B._crypto_core_salsa20=L.Kb)(A,I,g,C),B._crypto_core_salsa20_outputbytes=()=>(B._crypto_core_salsa20_outputbytes=L.Lb)(),B._crypto_core_salsa20_inputbytes=()=>(B._crypto_core_salsa20_inputbytes=L.Mb)(),B._crypto_core_salsa20_keybytes=()=>(B._crypto_core_salsa20_keybytes=L.Nb)(),B._crypto_core_salsa20_constbytes=()=>(B._crypto_core_salsa20_constbytes=L.Ob)(),B._crypto_core_salsa2012=(A,I,g,C)=>(B._crypto_core_salsa2012=L.Pb)(A,I,g,C),B._crypto_core_salsa2012_outputbytes=()=>(B._crypto_core_salsa2012_outputbytes=L.Qb)(),B._crypto_core_salsa2012_inputbytes=()=>(B._crypto_core_salsa2012_inputbytes=L.Rb)(),B._crypto_core_salsa2012_keybytes=()=>(B._crypto_core_salsa2012_keybytes=L.Sb)(),B._crypto_core_salsa2012_constbytes=()=>(B._crypto_core_salsa2012_constbytes=L.Tb)(),B._crypto_core_salsa208=(A,I,g,C)=>(B._crypto_core_salsa208=L.Ub)(A,I,g,C),B._crypto_core_salsa208_outputbytes=()=>(B._crypto_core_salsa208_outputbytes=L.Vb)(),B._crypto_core_salsa208_inputbytes=()=>(B._crypto_core_salsa208_inputbytes=L.Wb)(),B._crypto_core_salsa208_keybytes=()=>(B._crypto_core_salsa208_keybytes=L.Xb)(),B._crypto_core_salsa208_constbytes=()=>(B._crypto_core_salsa208_constbytes=L.Yb)(),B._crypto_generichash_bytes_min=()=>(B._crypto_generichash_bytes_min=L.Zb)(),B._crypto_generichash_bytes_max=()=>(B._crypto_generichash_bytes_max=L._b)(),B._crypto_generichash_bytes=()=>(B._crypto_generichash_bytes=L.$b)(),B._crypto_generichash_keybytes_min=()=>(B._crypto_generichash_keybytes_min=L.ac)(),B._crypto_generichash_keybytes_max=()=>(B._crypto_generichash_keybytes_max=L.bc)(),B._crypto_generichash_keybytes=()=>(B._crypto_generichash_keybytes=L.cc)(),B._crypto_generichash_primitive=()=>(B._crypto_generichash_primitive=L.dc)(),B._crypto_generichash_statebytes=()=>(B._crypto_generichash_statebytes=L.ec)(),B._crypto_generichash=(A,I,g,C,Q,i,o)=>(B._crypto_generichash=L.fc)(A,I,g,C,Q,i,o),B._crypto_generichash_init=(A,I,g,C)=>(B._crypto_generichash_init=L.gc)(A,I,g,C),B._crypto_generichash_update=(A,I,g,C)=>(B._crypto_generichash_update=L.hc)(A,I,g,C),B._crypto_generichash_final=(A,I,g)=>(B._crypto_generichash_final=L.ic)(A,I,g),B._crypto_generichash_keygen=A=>(B._crypto_generichash_keygen=L.jc)(A),B._crypto_generichash_blake2b_bytes_min=()=>(B._crypto_generichash_blake2b_bytes_min=L.kc)(),B._crypto_generichash_blake2b_bytes_max=()=>(B._crypto_generichash_blake2b_bytes_max=L.lc)(),B._crypto_generichash_blake2b_bytes=()=>(B._crypto_generichash_blake2b_bytes=L.mc)(),B._crypto_generichash_blake2b_keybytes_min=()=>(B._crypto_generichash_blake2b_keybytes_min=L.nc)(),B._crypto_generichash_blake2b_keybytes_max=()=>(B._crypto_generichash_blake2b_keybytes_max=L.oc)(),B._crypto_generichash_blake2b_keybytes=()=>(B._crypto_generichash_blake2b_keybytes=L.pc)(),B._crypto_generichash_blake2b_saltbytes=()=>(B._crypto_generichash_blake2b_saltbytes=L.qc)(),B._crypto_generichash_blake2b_personalbytes=()=>(B._crypto_generichash_blake2b_personalbytes=L.rc)(),B._crypto_generichash_blake2b_statebytes=()=>(B._crypto_generichash_blake2b_statebytes=L.sc)(),B._crypto_generichash_blake2b_keygen=A=>(B._crypto_generichash_blake2b_keygen=L.tc)(A),B._crypto_generichash_blake2b=(A,I,g,C,Q,i,o)=>(B._crypto_generichash_blake2b=L.uc)(A,I,g,C,Q,i,o),B._crypto_generichash_blake2b_salt_personal=(A,I,g,C,Q,i,o,E,a)=>(B._crypto_generichash_blake2b_salt_personal=L.vc)(A,I,g,C,Q,i,o,E,a),B._crypto_generichash_blake2b_init=(A,I,g,C)=>(B._crypto_generichash_blake2b_init=L.wc)(A,I,g,C),B._crypto_generichash_blake2b_init_salt_personal=(A,I,g,C,Q,i)=>(B._crypto_generichash_blake2b_init_salt_personal=L.xc)(A,I,g,C,Q,i),B._crypto_generichash_blake2b_update=(A,I,g,C)=>(B._crypto_generichash_blake2b_update=L.yc)(A,I,g,C),B._crypto_generichash_blake2b_final=(A,I,g)=>(B._crypto_generichash_blake2b_final=L.zc)(A,I,g),B._crypto_hash_bytes=()=>(B._crypto_hash_bytes=L.Ac)(),B._crypto_hash=(A,I,g,C)=>(B._crypto_hash=L.Bc)(A,I,g,C),B._crypto_hash_primitive=()=>(B._crypto_hash_primitive=L.Cc)(),B._crypto_hash_sha256_bytes=()=>(B._crypto_hash_sha256_bytes=L.Dc)(),B._crypto_hash_sha256_statebytes=()=>(B._crypto_hash_sha256_statebytes=L.Ec)(),B._crypto_hash_sha256_init=A=>(B._crypto_hash_sha256_init=L.Fc)(A),B._crypto_hash_sha256_update=(A,I,g,C)=>(B._crypto_hash_sha256_update=L.Gc)(A,I,g,C),B._crypto_hash_sha256_final=(A,I)=>(B._crypto_hash_sha256_final=L.Hc)(A,I),B._crypto_hash_sha256=(A,I,g,C)=>(B._crypto_hash_sha256=L.Ic)(A,I,g,C),B._crypto_hash_sha512_bytes=()=>(B._crypto_hash_sha512_bytes=L.Jc)(),B._crypto_hash_sha512_statebytes=()=>(B._crypto_hash_sha512_statebytes=L.Kc)(),B._crypto_hash_sha512_init=A=>(B._crypto_hash_sha512_init=L.Lc)(A),B._crypto_hash_sha512_update=(A,I,g,C)=>(B._crypto_hash_sha512_update=L.Mc)(A,I,g,C),B._crypto_hash_sha512_final=(A,I)=>(B._crypto_hash_sha512_final=L.Nc)(A,I),B._crypto_hash_sha512=(A,I,g,C)=>(B._crypto_hash_sha512=L.Oc)(A,I,g,C),B._crypto_kdf_blake2b_bytes_min=()=>(B._crypto_kdf_blake2b_bytes_min=L.Pc)(),B._crypto_kdf_blake2b_bytes_max=()=>(B._crypto_kdf_blake2b_bytes_max=L.Qc)(),B._crypto_kdf_blake2b_contextbytes=()=>(B._crypto_kdf_blake2b_contextbytes=L.Rc)(),B._crypto_kdf_blake2b_keybytes=()=>(B._crypto_kdf_blake2b_keybytes=L.Sc)(),B._crypto_kdf_blake2b_derive_from_key=(A,I,g,C,Q,i)=>(B._crypto_kdf_blake2b_derive_from_key=L.Tc)(A,I,g,C,Q,i),B._crypto_kdf_primitive=()=>(B._crypto_kdf_primitive=L.Uc)(),B._crypto_kdf_bytes_min=()=>(B._crypto_kdf_bytes_min=L.Vc)(),B._crypto_kdf_bytes_max=()=>(B._crypto_kdf_bytes_max=L.Wc)(),B._crypto_kdf_contextbytes=()=>(B._crypto_kdf_contextbytes=L.Xc)(),B._crypto_kdf_keybytes=()=>(B._crypto_kdf_keybytes=L.Yc)(),B._crypto_kdf_derive_from_key=(A,I,g,C,Q,i)=>(B._crypto_kdf_derive_from_key=L.Zc)(A,I,g,C,Q,i),B._crypto_kdf_keygen=A=>(B._crypto_kdf_keygen=L._c)(A),B._crypto_kdf_hkdf_sha256_extract_init=(A,I,g)=>(B._crypto_kdf_hkdf_sha256_extract_init=L.$c)(A,I,g),B._crypto_kdf_hkdf_sha256_extract_update=(A,I,g)=>(B._crypto_kdf_hkdf_sha256_extract_update=L.ad)(A,I,g),B._crypto_kdf_hkdf_sha256_extract_final=(A,I)=>(B._crypto_kdf_hkdf_sha256_extract_final=L.bd)(A,I),B._crypto_kdf_hkdf_sha256_extract=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha256_extract=L.cd)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha256_keygen=A=>(B._crypto_kdf_hkdf_sha256_keygen=L.dd)(A),B._crypto_kdf_hkdf_sha256_expand=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha256_expand=L.ed)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha256_keybytes=()=>(B._crypto_kdf_hkdf_sha256_keybytes=L.fd)(),B._crypto_kdf_hkdf_sha256_bytes_min=()=>(B._crypto_kdf_hkdf_sha256_bytes_min=L.gd)(),B._crypto_kdf_hkdf_sha256_bytes_max=()=>(B._crypto_kdf_hkdf_sha256_bytes_max=L.hd)(),B._crypto_kdf_hkdf_sha256_statebytes=()=>(B._crypto_kdf_hkdf_sha256_statebytes=L.id)(),B._crypto_kdf_hkdf_sha512_extract_init=(A,I,g)=>(B._crypto_kdf_hkdf_sha512_extract_init=L.jd)(A,I,g),B._crypto_kdf_hkdf_sha512_extract_update=(A,I,g)=>(B._crypto_kdf_hkdf_sha512_extract_update=L.kd)(A,I,g),B._crypto_kdf_hkdf_sha512_extract_final=(A,I)=>(B._crypto_kdf_hkdf_sha512_extract_final=L.ld)(A,I),B._crypto_kdf_hkdf_sha512_extract=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha512_extract=L.md)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha512_keygen=A=>(B._crypto_kdf_hkdf_sha512_keygen=L.nd)(A),B._crypto_kdf_hkdf_sha512_expand=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha512_expand=L.od)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha512_keybytes=()=>(B._crypto_kdf_hkdf_sha512_keybytes=L.pd)(),B._crypto_kdf_hkdf_sha512_bytes_min=()=>(B._crypto_kdf_hkdf_sha512_bytes_min=L.qd)(),B._crypto_kdf_hkdf_sha512_bytes_max=()=>(B._crypto_kdf_hkdf_sha512_bytes_max=L.rd)(),B._crypto_kdf_hkdf_sha512_statebytes=()=>(B._crypto_kdf_hkdf_sha512_statebytes=L.sd)(),B._crypto_kx_seed_keypair=(A,I,g)=>(B._crypto_kx_seed_keypair=L.td)(A,I,g),B._crypto_kx_keypair=(A,I)=>(B._crypto_kx_keypair=L.ud)(A,I),B._crypto_kx_client_session_keys=(A,I,g,C,Q)=>(B._crypto_kx_client_session_keys=L.vd)(A,I,g,C,Q),B._crypto_kx_server_session_keys=(A,I,g,C,Q)=>(B._crypto_kx_server_session_keys=L.wd)(A,I,g,C,Q),B._crypto_kx_publickeybytes=()=>(B._crypto_kx_publickeybytes=L.xd)(),B._crypto_kx_secretkeybytes=()=>(B._crypto_kx_secretkeybytes=L.yd)(),B._crypto_kx_seedbytes=()=>(B._crypto_kx_seedbytes=L.zd)(),B._crypto_kx_sessionkeybytes=()=>(B._crypto_kx_sessionkeybytes=L.Ad)(),B._crypto_kx_primitive=()=>(B._crypto_kx_primitive=L.Bd)(),B._crypto_onetimeauth_statebytes=()=>(B._crypto_onetimeauth_statebytes=L.Cd)(),B._crypto_onetimeauth_bytes=()=>(B._crypto_onetimeauth_bytes=L.Dd)(),B._crypto_onetimeauth_keybytes=()=>(B._crypto_onetimeauth_keybytes=L.Ed)(),B._crypto_onetimeauth=(A,I,g,C,Q)=>(B._crypto_onetimeauth=L.Fd)(A,I,g,C,Q),B._crypto_onetimeauth_verify=(A,I,g,C,Q)=>(B._crypto_onetimeauth_verify=L.Gd)(A,I,g,C,Q),B._crypto_onetimeauth_init=(A,I)=>(B._crypto_onetimeauth_init=L.Hd)(A,I),B._crypto_onetimeauth_update=(A,I,g,C)=>(B._crypto_onetimeauth_update=L.Id)(A,I,g,C),B._crypto_onetimeauth_final=(A,I)=>(B._crypto_onetimeauth_final=L.Jd)(A,I),B._crypto_onetimeauth_primitive=()=>(B._crypto_onetimeauth_primitive=L.Kd)(),B._crypto_onetimeauth_keygen=A=>(B._crypto_onetimeauth_keygen=L.Ld)(A),B._crypto_onetimeauth_poly1305=(A,I,g,C,Q)=>(B._crypto_onetimeauth_poly1305=L.Md)(A,I,g,C,Q),B._crypto_onetimeauth_poly1305_verify=(A,I,g,C,Q)=>(B._crypto_onetimeauth_poly1305_verify=L.Nd)(A,I,g,C,Q),B._crypto_onetimeauth_poly1305_init=(A,I)=>(B._crypto_onetimeauth_poly1305_init=L.Od)(A,I),B._crypto_onetimeauth_poly1305_update=(A,I,g,C)=>(B._crypto_onetimeauth_poly1305_update=L.Pd)(A,I,g,C),B._crypto_onetimeauth_poly1305_final=(A,I)=>(B._crypto_onetimeauth_poly1305_final=L.Qd)(A,I),B._crypto_onetimeauth_poly1305_bytes=()=>(B._crypto_onetimeauth_poly1305_bytes=L.Rd)(),B._crypto_onetimeauth_poly1305_keybytes=()=>(B._crypto_onetimeauth_poly1305_keybytes=L.Sd)(),B._crypto_onetimeauth_poly1305_statebytes=()=>(B._crypto_onetimeauth_poly1305_statebytes=L.Td)(),B._crypto_onetimeauth_poly1305_keygen=A=>(B._crypto_onetimeauth_poly1305_keygen=L.Ud)(A),B._crypto_pwhash_argon2i_alg_argon2i13=()=>(B._crypto_pwhash_argon2i_alg_argon2i13=L.Vd)(),B._crypto_pwhash_argon2i_bytes_min=()=>(B._crypto_pwhash_argon2i_bytes_min=L.Wd)(),B._crypto_pwhash_argon2i_bytes_max=()=>(B._crypto_pwhash_argon2i_bytes_max=L.Xd)(),B._crypto_pwhash_argon2i_passwd_min=()=>(B._crypto_pwhash_argon2i_passwd_min=L.Yd)(),B._crypto_pwhash_argon2i_passwd_max=()=>(B._crypto_pwhash_argon2i_passwd_max=L.Zd)(),B._crypto_pwhash_argon2i_saltbytes=()=>(B._crypto_pwhash_argon2i_saltbytes=L._d)(),B._crypto_pwhash_argon2i_strbytes=()=>(B._crypto_pwhash_argon2i_strbytes=L.$d)(),B._crypto_pwhash_argon2i_strprefix=()=>(B._crypto_pwhash_argon2i_strprefix=L.ae)(),B._crypto_pwhash_argon2i_opslimit_min=()=>(B._crypto_pwhash_argon2i_opslimit_min=L.be)(),B._crypto_pwhash_argon2i_opslimit_max=()=>(B._crypto_pwhash_argon2i_opslimit_max=L.ce)(),B._crypto_pwhash_argon2i_memlimit_min=()=>(B._crypto_pwhash_argon2i_memlimit_min=L.de)(),B._crypto_pwhash_argon2i_memlimit_max=()=>(B._crypto_pwhash_argon2i_memlimit_max=L.ee)(),B._crypto_pwhash_argon2i_opslimit_interactive=()=>(B._crypto_pwhash_argon2i_opslimit_interactive=L.fe)(),B._crypto_pwhash_argon2i_memlimit_interactive=()=>(B._crypto_pwhash_argon2i_memlimit_interactive=L.ge)(),B._crypto_pwhash_argon2i_opslimit_moderate=()=>(B._crypto_pwhash_argon2i_opslimit_moderate=L.he)(),B._crypto_pwhash_argon2i_memlimit_moderate=()=>(B._crypto_pwhash_argon2i_memlimit_moderate=L.ie)(),B._crypto_pwhash_argon2i_opslimit_sensitive=()=>(B._crypto_pwhash_argon2i_opslimit_sensitive=L.je)(),B._crypto_pwhash_argon2i_memlimit_sensitive=()=>(B._crypto_pwhash_argon2i_memlimit_sensitive=L.ke)(),B._crypto_pwhash_argon2i=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash_argon2i=L.le)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_argon2i_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_argon2i_str=L.me)(A,I,g,C,Q,i,o),B._crypto_pwhash_argon2i_str_verify=(A,I,g,C)=>(B._crypto_pwhash_argon2i_str_verify=L.ne)(A,I,g,C),B._crypto_pwhash_argon2i_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_argon2i_str_needs_rehash=L.oe)(A,I,g,C),B._crypto_pwhash_argon2id_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_argon2id_str_needs_rehash=L.pe)(A,I,g,C),B._crypto_pwhash_argon2id_alg_argon2id13=()=>(B._crypto_pwhash_argon2id_alg_argon2id13=L.qe)(),B._crypto_pwhash_argon2id_bytes_min=()=>(B._crypto_pwhash_argon2id_bytes_min=L.re)(),B._crypto_pwhash_argon2id_bytes_max=()=>(B._crypto_pwhash_argon2id_bytes_max=L.se)(),B._crypto_pwhash_argon2id_passwd_min=()=>(B._crypto_pwhash_argon2id_passwd_min=L.te)(),B._crypto_pwhash_argon2id_passwd_max=()=>(B._crypto_pwhash_argon2id_passwd_max=L.ue)(),B._crypto_pwhash_argon2id_saltbytes=()=>(B._crypto_pwhash_argon2id_saltbytes=L.ve)(),B._crypto_pwhash_argon2id_strbytes=()=>(B._crypto_pwhash_argon2id_strbytes=L.we)(),B._crypto_pwhash_argon2id_strprefix=()=>(B._crypto_pwhash_argon2id_strprefix=L.xe)(),B._crypto_pwhash_argon2id_opslimit_min=()=>(B._crypto_pwhash_argon2id_opslimit_min=L.ye)(),B._crypto_pwhash_argon2id_opslimit_max=()=>(B._crypto_pwhash_argon2id_opslimit_max=L.ze)(),B._crypto_pwhash_argon2id_memlimit_min=()=>(B._crypto_pwhash_argon2id_memlimit_min=L.Ae)(),B._crypto_pwhash_argon2id_memlimit_max=()=>(B._crypto_pwhash_argon2id_memlimit_max=L.Be)(),B._crypto_pwhash_argon2id_opslimit_interactive=()=>(B._crypto_pwhash_argon2id_opslimit_interactive=L.Ce)(),B._crypto_pwhash_argon2id_memlimit_interactive=()=>(B._crypto_pwhash_argon2id_memlimit_interactive=L.De)(),B._crypto_pwhash_argon2id_opslimit_moderate=()=>(B._crypto_pwhash_argon2id_opslimit_moderate=L.Ee)(),B._crypto_pwhash_argon2id_memlimit_moderate=()=>(B._crypto_pwhash_argon2id_memlimit_moderate=L.Fe)(),B._crypto_pwhash_argon2id_opslimit_sensitive=()=>(B._crypto_pwhash_argon2id_opslimit_sensitive=L.Ge)(),B._crypto_pwhash_argon2id_memlimit_sensitive=()=>(B._crypto_pwhash_argon2id_memlimit_sensitive=L.He)(),B._crypto_pwhash_argon2id=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash_argon2id=L.Ie)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_argon2id_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_argon2id_str=L.Je)(A,I,g,C,Q,i,o),B._crypto_pwhash_argon2id_str_verify=(A,I,g,C)=>(B._crypto_pwhash_argon2id_str_verify=L.Ke)(A,I,g,C),B._crypto_pwhash_alg_argon2i13=()=>(B._crypto_pwhash_alg_argon2i13=L.Le)(),B._crypto_pwhash_alg_argon2id13=()=>(B._crypto_pwhash_alg_argon2id13=L.Me)(),B._crypto_pwhash_alg_default=()=>(B._crypto_pwhash_alg_default=L.Ne)(),B._crypto_pwhash_bytes_min=()=>(B._crypto_pwhash_bytes_min=L.Oe)(),B._crypto_pwhash_bytes_max=()=>(B._crypto_pwhash_bytes_max=L.Pe)(),B._crypto_pwhash_passwd_min=()=>(B._crypto_pwhash_passwd_min=L.Qe)(),B._crypto_pwhash_passwd_max=()=>(B._crypto_pwhash_passwd_max=L.Re)(),B._crypto_pwhash_saltbytes=()=>(B._crypto_pwhash_saltbytes=L.Se)(),B._crypto_pwhash_strbytes=()=>(B._crypto_pwhash_strbytes=L.Te)(),B._crypto_pwhash_strprefix=()=>(B._crypto_pwhash_strprefix=L.Ue)(),B._crypto_pwhash_opslimit_min=()=>(B._crypto_pwhash_opslimit_min=L.Ve)(),B._crypto_pwhash_opslimit_max=()=>(B._crypto_pwhash_opslimit_max=L.We)(),B._crypto_pwhash_memlimit_min=()=>(B._crypto_pwhash_memlimit_min=L.Xe)(),B._crypto_pwhash_memlimit_max=()=>(B._crypto_pwhash_memlimit_max=L.Ye)(),B._crypto_pwhash_opslimit_interactive=()=>(B._crypto_pwhash_opslimit_interactive=L.Ze)(),B._crypto_pwhash_memlimit_interactive=()=>(B._crypto_pwhash_memlimit_interactive=L._e)(),B._crypto_pwhash_opslimit_moderate=()=>(B._crypto_pwhash_opslimit_moderate=L.$e)(),B._crypto_pwhash_memlimit_moderate=()=>(B._crypto_pwhash_memlimit_moderate=L.af)(),B._crypto_pwhash_opslimit_sensitive=()=>(B._crypto_pwhash_opslimit_sensitive=L.bf)(),B._crypto_pwhash_memlimit_sensitive=()=>(B._crypto_pwhash_memlimit_sensitive=L.cf)(),B._crypto_pwhash=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash=L.df)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_str=L.ef)(A,I,g,C,Q,i,o),B._crypto_pwhash_str_alg=(A,I,g,C,Q,i,o,E)=>(B._crypto_pwhash_str_alg=L.ff)(A,I,g,C,Q,i,o,E),B._crypto_pwhash_str_verify=(A,I,g,C)=>(B._crypto_pwhash_str_verify=L.gf)(A,I,g,C),B._crypto_pwhash_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_str_needs_rehash=L.hf)(A,I,g,C),B._crypto_pwhash_primitive=()=>(B._crypto_pwhash_primitive=L.jf)(),B._crypto_scalarmult_primitive=()=>(B._crypto_scalarmult_primitive=L.kf)(),B._crypto_scalarmult_base=(A,I)=>(B._crypto_scalarmult_base=L.lf)(A,I),B._crypto_scalarmult=(A,I,g)=>(B._crypto_scalarmult=L.mf)(A,I,g),B._crypto_scalarmult_bytes=()=>(B._crypto_scalarmult_bytes=L.nf)(),B._crypto_scalarmult_scalarbytes=()=>(B._crypto_scalarmult_scalarbytes=L.of)(),B._crypto_scalarmult_curve25519=(A,I,g)=>(B._crypto_scalarmult_curve25519=L.pf)(A,I,g),B._crypto_scalarmult_curve25519_base=(A,I)=>(B._crypto_scalarmult_curve25519_base=L.qf)(A,I),B._crypto_scalarmult_curve25519_bytes=()=>(B._crypto_scalarmult_curve25519_bytes=L.rf)(),B._crypto_scalarmult_curve25519_scalarbytes=()=>(B._crypto_scalarmult_curve25519_scalarbytes=L.sf)(),B._crypto_secretbox_keybytes=()=>(B._crypto_secretbox_keybytes=L.tf)(),B._crypto_secretbox_noncebytes=()=>(B._crypto_secretbox_noncebytes=L.uf)(),B._crypto_secretbox_zerobytes=()=>(B._crypto_secretbox_zerobytes=L.vf)(),B._crypto_secretbox_boxzerobytes=()=>(B._crypto_secretbox_boxzerobytes=L.wf)(),B._crypto_secretbox_macbytes=()=>(B._crypto_secretbox_macbytes=L.xf)(),B._crypto_secretbox_messagebytes_max=()=>(B._crypto_secretbox_messagebytes_max=L.yf)(),B._crypto_secretbox_primitive=()=>(B._crypto_secretbox_primitive=L.zf)(),B._crypto_secretbox=(A,I,g,C,Q,i)=>(B._crypto_secretbox=L.Af)(A,I,g,C,Q,i),B._crypto_secretbox_open=(A,I,g,C,Q,i)=>(B._crypto_secretbox_open=L.Bf)(A,I,g,C,Q,i),B._crypto_secretbox_keygen=A=>(B._crypto_secretbox_keygen=L.Cf)(A),B._crypto_secretbox_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_detached=L.Df)(A,I,g,C,Q,i,o),B._crypto_secretbox_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_easy=L.Ef)(A,I,g,C,Q,i),B._crypto_secretbox_open_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_open_detached=L.Ff)(A,I,g,C,Q,i,o),B._crypto_secretbox_open_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_open_easy=L.Gf)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xsalsa20poly1305=L.Hf)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305_open=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xsalsa20poly1305_open=L.If)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305_keybytes=()=>(B._crypto_secretbox_xsalsa20poly1305_keybytes=L.Jf)(),B._crypto_secretbox_xsalsa20poly1305_noncebytes=()=>(B._crypto_secretbox_xsalsa20poly1305_noncebytes=L.Kf)(),B._crypto_secretbox_xsalsa20poly1305_zerobytes=()=>(B._crypto_secretbox_xsalsa20poly1305_zerobytes=L.Lf)(),B._crypto_secretbox_xsalsa20poly1305_boxzerobytes=()=>(B._crypto_secretbox_xsalsa20poly1305_boxzerobytes=L.Mf)(),B._crypto_secretbox_xsalsa20poly1305_macbytes=()=>(B._crypto_secretbox_xsalsa20poly1305_macbytes=L.Nf)(),B._crypto_secretbox_xsalsa20poly1305_messagebytes_max=()=>(B._crypto_secretbox_xsalsa20poly1305_messagebytes_max=L.Of)(),B._crypto_secretbox_xsalsa20poly1305_keygen=A=>(B._crypto_secretbox_xsalsa20poly1305_keygen=L.Pf)(A),B._crypto_secretstream_xchacha20poly1305_keygen=A=>(B._crypto_secretstream_xchacha20poly1305_keygen=L.Qf)(A),B._crypto_secretstream_xchacha20poly1305_init_push=(A,I,g)=>(B._crypto_secretstream_xchacha20poly1305_init_push=L.Rf)(A,I,g),B._crypto_secretstream_xchacha20poly1305_init_pull=(A,I,g)=>(B._crypto_secretstream_xchacha20poly1305_init_pull=L.Sf)(A,I,g),B._crypto_secretstream_xchacha20poly1305_rekey=A=>(B._crypto_secretstream_xchacha20poly1305_rekey=L.Tf)(A),B._crypto_secretstream_xchacha20poly1305_push=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_secretstream_xchacha20poly1305_push=L.Uf)(A,I,g,C,Q,i,o,E,a,_),B._crypto_secretstream_xchacha20poly1305_pull=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_secretstream_xchacha20poly1305_pull=L.Vf)(A,I,g,C,Q,i,o,E,a,_),B._crypto_secretstream_xchacha20poly1305_statebytes=()=>(B._crypto_secretstream_xchacha20poly1305_statebytes=L.Wf)(),B._crypto_secretstream_xchacha20poly1305_abytes=()=>(B._crypto_secretstream_xchacha20poly1305_abytes=L.Xf)(),B._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(B._crypto_secretstream_xchacha20poly1305_headerbytes=L.Yf)(),B._crypto_secretstream_xchacha20poly1305_keybytes=()=>(B._crypto_secretstream_xchacha20poly1305_keybytes=L.Zf)(),B._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(B._crypto_secretstream_xchacha20poly1305_messagebytes_max=L._f)(),B._crypto_secretstream_xchacha20poly1305_tag_message=()=>(B._crypto_secretstream_xchacha20poly1305_tag_message=L.$f)(),B._crypto_secretstream_xchacha20poly1305_tag_push=()=>(B._crypto_secretstream_xchacha20poly1305_tag_push=L.ag)(),B._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(B._crypto_secretstream_xchacha20poly1305_tag_rekey=L.bg)(),B._crypto_secretstream_xchacha20poly1305_tag_final=()=>(B._crypto_secretstream_xchacha20poly1305_tag_final=L.cg)(),B._crypto_shorthash_bytes=()=>(B._crypto_shorthash_bytes=L.dg)(),B._crypto_shorthash_keybytes=()=>(B._crypto_shorthash_keybytes=L.eg)(),B._crypto_shorthash_primitive=()=>(B._crypto_shorthash_primitive=L.fg)(),B._crypto_shorthash=(A,I,g,C,Q)=>(B._crypto_shorthash=L.gg)(A,I,g,C,Q),B._crypto_shorthash_keygen=A=>(B._crypto_shorthash_keygen=L.hg)(A),B._crypto_shorthash_siphash24_bytes=()=>(B._crypto_shorthash_siphash24_bytes=L.ig)(),B._crypto_shorthash_siphash24_keybytes=()=>(B._crypto_shorthash_siphash24_keybytes=L.jg)(),B._crypto_shorthash_siphash24=(A,I,g,C,Q)=>(B._crypto_shorthash_siphash24=L.kg)(A,I,g,C,Q),B._crypto_sign_statebytes=()=>(B._crypto_sign_statebytes=L.lg)(),B._crypto_sign_bytes=()=>(B._crypto_sign_bytes=L.mg)(),B._crypto_sign_seedbytes=()=>(B._crypto_sign_seedbytes=L.ng)(),B._crypto_sign_publickeybytes=()=>(B._crypto_sign_publickeybytes=L.og)(),B._crypto_sign_secretkeybytes=()=>(B._crypto_sign_secretkeybytes=L.pg)(),B._crypto_sign_messagebytes_max=()=>(B._crypto_sign_messagebytes_max=L.qg)(),B._crypto_sign_primitive=()=>(B._crypto_sign_primitive=L.rg)(),B._crypto_sign_seed_keypair=(A,I,g)=>(B._crypto_sign_seed_keypair=L.sg)(A,I,g),B._crypto_sign_keypair=(A,I)=>(B._crypto_sign_keypair=L.tg)(A,I),B._crypto_sign=(A,I,g,C,Q,i)=>(B._crypto_sign=L.ug)(A,I,g,C,Q,i),B._crypto_sign_open=(A,I,g,C,Q,i)=>(B._crypto_sign_open=L.vg)(A,I,g,C,Q,i),B._crypto_sign_detached=(A,I,g,C,Q,i)=>(B._crypto_sign_detached=L.wg)(A,I,g,C,Q,i),B._crypto_sign_verify_detached=(A,I,g,C,Q)=>(B._crypto_sign_verify_detached=L.xg)(A,I,g,C,Q),B._crypto_sign_init=A=>(B._crypto_sign_init=L.yg)(A),B._crypto_sign_update=(A,I,g,C)=>(B._crypto_sign_update=L.zg)(A,I,g,C),B._crypto_sign_final_create=(A,I,g,C)=>(B._crypto_sign_final_create=L.Ag)(A,I,g,C),B._crypto_sign_final_verify=(A,I,g)=>(B._crypto_sign_final_verify=L.Bg)(A,I,g),B._crypto_sign_ed25519ph_statebytes=()=>(B._crypto_sign_ed25519ph_statebytes=L.Cg)(),B._crypto_sign_ed25519_bytes=()=>(B._crypto_sign_ed25519_bytes=L.Dg)(),B._crypto_sign_ed25519_seedbytes=()=>(B._crypto_sign_ed25519_seedbytes=L.Eg)(),B._crypto_sign_ed25519_publickeybytes=()=>(B._crypto_sign_ed25519_publickeybytes=L.Fg)(),B._crypto_sign_ed25519_secretkeybytes=()=>(B._crypto_sign_ed25519_secretkeybytes=L.Gg)(),B._crypto_sign_ed25519_messagebytes_max=()=>(B._crypto_sign_ed25519_messagebytes_max=L.Hg)(),B._crypto_sign_ed25519_sk_to_seed=(A,I)=>(B._crypto_sign_ed25519_sk_to_seed=L.Ig)(A,I),B._crypto_sign_ed25519_sk_to_pk=(A,I)=>(B._crypto_sign_ed25519_sk_to_pk=L.Jg)(A,I),B._crypto_sign_ed25519ph_init=A=>(B._crypto_sign_ed25519ph_init=L.Kg)(A),B._crypto_sign_ed25519ph_update=(A,I,g,C)=>(B._crypto_sign_ed25519ph_update=L.Lg)(A,I,g,C),B._crypto_sign_ed25519ph_final_create=(A,I,g,C)=>(B._crypto_sign_ed25519ph_final_create=L.Mg)(A,I,g,C),B._crypto_sign_ed25519ph_final_verify=(A,I,g)=>(B._crypto_sign_ed25519ph_final_verify=L.Ng)(A,I,g),B._crypto_sign_ed25519_seed_keypair=(A,I,g)=>(B._crypto_sign_ed25519_seed_keypair=L.Og)(A,I,g),B._crypto_sign_ed25519_keypair=(A,I)=>(B._crypto_sign_ed25519_keypair=L.Pg)(A,I),B._crypto_sign_ed25519_pk_to_curve25519=(A,I)=>(B._crypto_sign_ed25519_pk_to_curve25519=L.Qg)(A,I),B._crypto_sign_ed25519_sk_to_curve25519=(A,I)=>(B._crypto_sign_ed25519_sk_to_curve25519=L.Rg)(A,I),B._crypto_sign_ed25519_verify_detached=(A,I,g,C,Q)=>(B._crypto_sign_ed25519_verify_detached=L.Sg)(A,I,g,C,Q),B._crypto_sign_ed25519_open=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519_open=L.Tg)(A,I,g,C,Q,i),B._crypto_sign_ed25519_detached=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519_detached=L.Ug)(A,I,g,C,Q,i),B._crypto_sign_ed25519=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519=L.Vg)(A,I,g,C,Q,i),B._crypto_stream_chacha20_keybytes=()=>(B._crypto_stream_chacha20_keybytes=L.Wg)(),B._crypto_stream_chacha20_noncebytes=()=>(B._crypto_stream_chacha20_noncebytes=L.Xg)(),B._crypto_stream_chacha20_messagebytes_max=()=>(B._crypto_stream_chacha20_messagebytes_max=L.Yg)(),B._crypto_stream_chacha20_ietf_keybytes=()=>(B._crypto_stream_chacha20_ietf_keybytes=L.Zg)(),B._crypto_stream_chacha20_ietf_noncebytes=()=>(B._crypto_stream_chacha20_ietf_noncebytes=L._g)(),B._crypto_stream_chacha20_ietf_messagebytes_max=()=>(B._crypto_stream_chacha20_ietf_messagebytes_max=L.$g)(),B._crypto_stream_chacha20=(A,I,g,C,Q)=>(B._crypto_stream_chacha20=L.ah)(A,I,g,C,Q),B._crypto_stream_chacha20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_chacha20_xor_ic=L.bh)(A,I,g,C,Q,i,o,E),B._crypto_stream_chacha20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_chacha20_xor=L.ch)(A,I,g,C,Q,i),B._crypto_stream_chacha20_ietf=(A,I,g,C,Q)=>(B._crypto_stream_chacha20_ietf=L.dh)(A,I,g,C,Q),B._crypto_stream_chacha20_ietf_xor_ic=(A,I,g,C,Q,i,o)=>(B._crypto_stream_chacha20_ietf_xor_ic=L.eh)(A,I,g,C,Q,i,o),B._crypto_stream_chacha20_ietf_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_chacha20_ietf_xor=L.fh)(A,I,g,C,Q,i),B._crypto_stream_chacha20_ietf_keygen=A=>(B._crypto_stream_chacha20_ietf_keygen=L.gh)(A),B._crypto_stream_chacha20_keygen=A=>(B._crypto_stream_chacha20_keygen=L.hh)(A),B._crypto_stream_keybytes=()=>(B._crypto_stream_keybytes=L.ih)(),B._crypto_stream_noncebytes=()=>(B._crypto_stream_noncebytes=L.jh)(),B._crypto_stream_messagebytes_max=()=>(B._crypto_stream_messagebytes_max=L.kh)(),B._crypto_stream_primitive=()=>(B._crypto_stream_primitive=L.lh)(),B._crypto_stream=(A,I,g,C,Q)=>(B._crypto_stream=L.mh)(A,I,g,C,Q),B._crypto_stream_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xor=L.nh)(A,I,g,C,Q,i),B._crypto_stream_keygen=A=>(B._crypto_stream_keygen=L.oh)(A),B._crypto_stream_salsa20_keybytes=()=>(B._crypto_stream_salsa20_keybytes=L.ph)(),B._crypto_stream_salsa20_noncebytes=()=>(B._crypto_stream_salsa20_noncebytes=L.qh)(),B._crypto_stream_salsa20_messagebytes_max=()=>(B._crypto_stream_salsa20_messagebytes_max=L.rh)(),B._crypto_stream_salsa20=(A,I,g,C,Q)=>(B._crypto_stream_salsa20=L.sh)(A,I,g,C,Q),B._crypto_stream_salsa20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_salsa20_xor_ic=L.th)(A,I,g,C,Q,i,o,E),B._crypto_stream_salsa20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa20_xor=L.uh)(A,I,g,C,Q,i),B._crypto_stream_salsa20_keygen=A=>(B._crypto_stream_salsa20_keygen=L.vh)(A),B._crypto_stream_xsalsa20=(A,I,g,C,Q)=>(B._crypto_stream_xsalsa20=L.wh)(A,I,g,C,Q),B._crypto_stream_xsalsa20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_xsalsa20_xor_ic=L.xh)(A,I,g,C,Q,i,o,E),B._crypto_stream_xsalsa20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xsalsa20_xor=L.yh)(A,I,g,C,Q,i),B._crypto_stream_xsalsa20_keybytes=()=>(B._crypto_stream_xsalsa20_keybytes=L.zh)(),B._crypto_stream_xsalsa20_noncebytes=()=>(B._crypto_stream_xsalsa20_noncebytes=L.Ah)(),B._crypto_stream_xsalsa20_messagebytes_max=()=>(B._crypto_stream_xsalsa20_messagebytes_max=L.Bh)(),B._crypto_stream_xsalsa20_keygen=A=>(B._crypto_stream_xsalsa20_keygen=L.Ch)(A),B._crypto_verify_16_bytes=()=>(B._crypto_verify_16_bytes=L.Dh)(),B._crypto_verify_32_bytes=()=>(B._crypto_verify_32_bytes=L.Eh)(),B._crypto_verify_64_bytes=()=>(B._crypto_verify_64_bytes=L.Fh)(),B._crypto_verify_16=(A,I)=>(B._crypto_verify_16=L.Gh)(A,I),B._crypto_verify_32=(A,I)=>(B._crypto_verify_32=L.Hh)(A,I),B._crypto_verify_64=(A,I)=>(B._crypto_verify_64=L.Ih)(A,I),B._randombytes_implementation_name=()=>(B._randombytes_implementation_name=L.Jh)(),B._randombytes_random=()=>(B._randombytes_random=L.Kh)(),B._randombytes_stir=()=>(B._randombytes_stir=L.Lh)(),B._randombytes_uniform=A=>(B._randombytes_uniform=L.Mh)(A),B._randombytes_buf=(A,I)=>(B._randombytes_buf=L.Nh)(A,I),B._randombytes_buf_deterministic=(A,I,g)=>(B._randombytes_buf_deterministic=L.Oh)(A,I,g),B._randombytes_seedbytes=()=>(B._randombytes_seedbytes=L.Ph)(),B._randombytes_close=()=>(B._randombytes_close=L.Qh)(),B._randombytes=(A,I,g)=>(B._randombytes=L.Rh)(A,I,g),B._sodium_bin2hex=(A,I,g,C)=>(B._sodium_bin2hex=L.Sh)(A,I,g,C),B._sodium_hex2bin=(A,I,g,C,Q,i,o)=>(B._sodium_hex2bin=L.Th)(A,I,g,C,Q,i,o),B._sodium_base64_encoded_len=(A,I)=>(B._sodium_base64_encoded_len=L.Uh)(A,I),B._sodium_bin2base64=(A,I,g,C,Q)=>(B._sodium_bin2base64=L.Vh)(A,I,g,C,Q),B._sodium_base642bin=(A,I,g,C,Q,i,o,E)=>(B._sodium_base642bin=L.Wh)(A,I,g,C,Q,i,o,E),B._sodium_init=()=>(B._sodium_init=L.Xh)(),B._sodium_pad=(A,I,g,C,Q)=>(B._sodium_pad=L.Yh)(A,I,g,C,Q),B._sodium_unpad=(A,I,g,C)=>(B._sodium_unpad=L.Zh)(A,I,g,C),B._sodium_version_string=()=>(B._sodium_version_string=L._h)(),B._sodium_library_version_major=()=>(B._sodium_library_version_major=L.$h)(),B._sodium_library_version_minor=()=>(B._sodium_library_version_minor=L.ai)(),B._sodium_library_minimal=()=>(B._sodium_library_minimal=L.bi)(),B._crypto_box_curve25519xchacha20poly1305_seed_keypair=(A,I,g)=>(B._crypto_box_curve25519xchacha20poly1305_seed_keypair=L.ci)(A,I,g),B._crypto_box_curve25519xchacha20poly1305_keypair=(A,I)=>(B._crypto_box_curve25519xchacha20poly1305_keypair=L.di)(A,I),B._crypto_box_curve25519xchacha20poly1305_beforenm=(A,I,g)=>(B._crypto_box_curve25519xchacha20poly1305_beforenm=L.ei)(A,I,g),B._crypto_box_curve25519xchacha20poly1305_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_detached_afternm=L.fi)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_curve25519xchacha20poly1305_detached=L.gi)(A,I,g,C,Q,i,o,E),B._crypto_box_curve25519xchacha20poly1305_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_easy_afternm=L.hi)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_easy=L.ii)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=L.ji)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_open_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_curve25519xchacha20poly1305_open_detached=L.ki)(A,I,g,C,Q,i,o,E),B._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=L.li)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_open_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_open_easy=L.mi)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_seedbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_seedbytes=L.ni)(),B._crypto_box_curve25519xchacha20poly1305_publickeybytes=()=>(B._crypto_box_curve25519xchacha20poly1305_publickeybytes=L.oi)(),B._crypto_box_curve25519xchacha20poly1305_secretkeybytes=()=>(B._crypto_box_curve25519xchacha20poly1305_secretkeybytes=L.pi)(),B._crypto_box_curve25519xchacha20poly1305_beforenmbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_beforenmbytes=L.qi)(),B._crypto_box_curve25519xchacha20poly1305_noncebytes=()=>(B._crypto_box_curve25519xchacha20poly1305_noncebytes=L.ri)(),B._crypto_box_curve25519xchacha20poly1305_macbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_macbytes=L.si)(),B._crypto_box_curve25519xchacha20poly1305_messagebytes_max=()=>(B._crypto_box_curve25519xchacha20poly1305_messagebytes_max=L.ti)(),B._crypto_box_curve25519xchacha20poly1305_seal=(A,I,g,C,Q)=>(B._crypto_box_curve25519xchacha20poly1305_seal=L.ui)(A,I,g,C,Q),B._crypto_box_curve25519xchacha20poly1305_seal_open=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_seal_open=L.vi)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_sealbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_sealbytes=L.wi)(),B._crypto_core_ed25519_is_valid_point=A=>(B._crypto_core_ed25519_is_valid_point=L.xi)(A),B._crypto_core_ed25519_add=(A,I,g)=>(B._crypto_core_ed25519_add=L.yi)(A,I,g),B._crypto_core_ed25519_sub=(A,I,g)=>(B._crypto_core_ed25519_sub=L.zi)(A,I,g),B._crypto_core_ed25519_from_uniform=(A,I)=>(B._crypto_core_ed25519_from_uniform=L.Ai)(A,I),B._crypto_core_ed25519_random=A=>(B._crypto_core_ed25519_random=L.Bi)(A),B._crypto_core_ed25519_scalar_random=A=>(B._crypto_core_ed25519_scalar_random=L.Ci)(A),B._crypto_core_ed25519_scalar_invert=(A,I)=>(B._crypto_core_ed25519_scalar_invert=L.Di)(A,I),B._crypto_core_ed25519_scalar_negate=(A,I)=>(B._crypto_core_ed25519_scalar_negate=L.Ei)(A,I),B._crypto_core_ed25519_scalar_complement=(A,I)=>(B._crypto_core_ed25519_scalar_complement=L.Fi)(A,I),B._crypto_core_ed25519_scalar_add=(A,I,g)=>(B._crypto_core_ed25519_scalar_add=L.Gi)(A,I,g),B._crypto_core_ed25519_scalar_reduce=(A,I)=>(B._crypto_core_ed25519_scalar_reduce=L.Hi)(A,I),B._crypto_core_ed25519_scalar_sub=(A,I,g)=>(B._crypto_core_ed25519_scalar_sub=L.Ii)(A,I,g),B._crypto_core_ed25519_scalar_mul=(A,I,g)=>(B._crypto_core_ed25519_scalar_mul=L.Ji)(A,I,g),B._crypto_core_ed25519_bytes=()=>(B._crypto_core_ed25519_bytes=L.Ki)(),B._crypto_core_ed25519_nonreducedscalarbytes=()=>(B._crypto_core_ed25519_nonreducedscalarbytes=L.Li)(),B._crypto_core_ed25519_uniformbytes=()=>(B._crypto_core_ed25519_uniformbytes=L.Mi)(),B._crypto_core_ed25519_hashbytes=()=>(B._crypto_core_ed25519_hashbytes=L.Ni)(),B._crypto_core_ed25519_scalarbytes=()=>(B._crypto_core_ed25519_scalarbytes=L.Oi)(),B._crypto_core_ristretto255_is_valid_point=A=>(B._crypto_core_ristretto255_is_valid_point=L.Pi)(A),B._crypto_core_ristretto255_add=(A,I,g)=>(B._crypto_core_ristretto255_add=L.Qi)(A,I,g),B._crypto_core_ristretto255_sub=(A,I,g)=>(B._crypto_core_ristretto255_sub=L.Ri)(A,I,g),B._crypto_core_ristretto255_from_hash=(A,I)=>(B._crypto_core_ristretto255_from_hash=L.Si)(A,I),B._crypto_core_ristretto255_random=A=>(B._crypto_core_ristretto255_random=L.Ti)(A),B._crypto_core_ristretto255_scalar_random=A=>(B._crypto_core_ristretto255_scalar_random=L.Ui)(A),B._crypto_core_ristretto255_scalar_invert=(A,I)=>(B._crypto_core_ristretto255_scalar_invert=L.Vi)(A,I),B._crypto_core_ristretto255_scalar_negate=(A,I)=>(B._crypto_core_ristretto255_scalar_negate=L.Wi)(A,I),B._crypto_core_ristretto255_scalar_complement=(A,I)=>(B._crypto_core_ristretto255_scalar_complement=L.Xi)(A,I),B._crypto_core_ristretto255_scalar_add=(A,I,g)=>(B._crypto_core_ristretto255_scalar_add=L.Yi)(A,I,g),B._crypto_core_ristretto255_scalar_sub=(A,I,g)=>(B._crypto_core_ristretto255_scalar_sub=L.Zi)(A,I,g),B._crypto_core_ristretto255_scalar_mul=(A,I,g)=>(B._crypto_core_ristretto255_scalar_mul=L._i)(A,I,g),B._crypto_core_ristretto255_scalar_reduce=(A,I)=>(B._crypto_core_ristretto255_scalar_reduce=L.$i)(A,I),B._crypto_core_ristretto255_bytes=()=>(B._crypto_core_ristretto255_bytes=L.aj)(),B._crypto_core_ristretto255_nonreducedscalarbytes=()=>(B._crypto_core_ristretto255_nonreducedscalarbytes=L.bj)(),B._crypto_core_ristretto255_hashbytes=()=>(B._crypto_core_ristretto255_hashbytes=L.cj)(),B._crypto_core_ristretto255_scalarbytes=()=>(B._crypto_core_ristretto255_scalarbytes=L.dj)(),B._crypto_pwhash_scryptsalsa208sha256_ll=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_pwhash_scryptsalsa208sha256_ll=L.ej)(A,I,g,C,Q,i,o,E,a,_),B._crypto_pwhash_scryptsalsa208sha256_bytes_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_bytes_min=L.fj)(),B._crypto_pwhash_scryptsalsa208sha256_bytes_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_bytes_max=L.gj)(),B._crypto_pwhash_scryptsalsa208sha256_passwd_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_passwd_min=L.hj)(),B._crypto_pwhash_scryptsalsa208sha256_passwd_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_passwd_max=L.ij)(),B._crypto_pwhash_scryptsalsa208sha256_saltbytes=()=>(B._crypto_pwhash_scryptsalsa208sha256_saltbytes=L.jj)(),B._crypto_pwhash_scryptsalsa208sha256_strbytes=()=>(B._crypto_pwhash_scryptsalsa208sha256_strbytes=L.kj)(),B._crypto_pwhash_scryptsalsa208sha256_strprefix=()=>(B._crypto_pwhash_scryptsalsa208sha256_strprefix=L.lj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_min=L.mj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_max=L.nj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_min=L.oj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_max=L.pj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=L.qj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=L.rj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=L.sj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=L.tj)(),B._crypto_pwhash_scryptsalsa208sha256=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_pwhash_scryptsalsa208sha256=L.uj)(A,I,g,C,Q,i,o,E,a,_),B._crypto_pwhash_scryptsalsa208sha256_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_scryptsalsa208sha256_str=L.vj)(A,I,g,C,Q,i,o),B._crypto_pwhash_scryptsalsa208sha256_str_verify=(A,I,g,C)=>(B._crypto_pwhash_scryptsalsa208sha256_str_verify=L.wj)(A,I,g,C),B._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=L.xj)(A,I,g,C),B._crypto_scalarmult_ed25519=(A,I,g)=>(B._crypto_scalarmult_ed25519=L.yj)(A,I,g),B._crypto_scalarmult_ed25519_noclamp=(A,I,g)=>(B._crypto_scalarmult_ed25519_noclamp=L.zj)(A,I,g),B._crypto_scalarmult_ed25519_base=(A,I)=>(B._crypto_scalarmult_ed25519_base=L.Aj)(A,I),B._crypto_scalarmult_ed25519_base_noclamp=(A,I)=>(B._crypto_scalarmult_ed25519_base_noclamp=L.Bj)(A,I),B._crypto_scalarmult_ed25519_bytes=()=>(B._crypto_scalarmult_ed25519_bytes=L.Cj)(),B._crypto_scalarmult_ed25519_scalarbytes=()=>(B._crypto_scalarmult_ed25519_scalarbytes=L.Dj)(),B._crypto_scalarmult_ristretto255=(A,I,g)=>(B._crypto_scalarmult_ristretto255=L.Ej)(A,I,g),B._crypto_scalarmult_ristretto255_base=(A,I)=>(B._crypto_scalarmult_ristretto255_base=L.Fj)(A,I),B._crypto_scalarmult_ristretto255_bytes=()=>(B._crypto_scalarmult_ristretto255_bytes=L.Gj)(),B._crypto_scalarmult_ristretto255_scalarbytes=()=>(B._crypto_scalarmult_ristretto255_scalarbytes=L.Hj)(),B._crypto_secretbox_xchacha20poly1305_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_xchacha20poly1305_detached=L.Ij)(A,I,g,C,Q,i,o),B._crypto_secretbox_xchacha20poly1305_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xchacha20poly1305_easy=L.Jj)(A,I,g,C,Q,i),B._crypto_secretbox_xchacha20poly1305_open_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_xchacha20poly1305_open_detached=L.Kj)(A,I,g,C,Q,i,o),B._crypto_secretbox_xchacha20poly1305_open_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xchacha20poly1305_open_easy=L.Lj)(A,I,g,C,Q,i),B._crypto_secretbox_xchacha20poly1305_keybytes=()=>(B._crypto_secretbox_xchacha20poly1305_keybytes=L.Mj)(),B._crypto_secretbox_xchacha20poly1305_noncebytes=()=>(B._crypto_secretbox_xchacha20poly1305_noncebytes=L.Nj)(),B._crypto_secretbox_xchacha20poly1305_macbytes=()=>(B._crypto_secretbox_xchacha20poly1305_macbytes=L.Oj)(),B._crypto_secretbox_xchacha20poly1305_messagebytes_max=()=>(B._crypto_secretbox_xchacha20poly1305_messagebytes_max=L.Pj)(),B._crypto_shorthash_siphashx24_bytes=()=>(B._crypto_shorthash_siphashx24_bytes=L.Qj)(),B._crypto_shorthash_siphashx24_keybytes=()=>(B._crypto_shorthash_siphashx24_keybytes=L.Rj)(),B._crypto_shorthash_siphashx24=(A,I,g,C,Q)=>(B._crypto_shorthash_siphashx24=L.Sj)(A,I,g,C,Q),B._crypto_stream_salsa2012=(A,I,g,C,Q)=>(B._crypto_stream_salsa2012=L.Tj)(A,I,g,C,Q),B._crypto_stream_salsa2012_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa2012_xor=L.Uj)(A,I,g,C,Q,i),B._crypto_stream_salsa2012_keybytes=()=>(B._crypto_stream_salsa2012_keybytes=L.Vj)(),B._crypto_stream_salsa2012_noncebytes=()=>(B._crypto_stream_salsa2012_noncebytes=L.Wj)(),B._crypto_stream_salsa2012_messagebytes_max=()=>(B._crypto_stream_salsa2012_messagebytes_max=L.Xj)(),B._crypto_stream_salsa2012_keygen=A=>(B._crypto_stream_salsa2012_keygen=L.Yj)(A),B._crypto_stream_salsa208=(A,I,g,C,Q)=>(B._crypto_stream_salsa208=L.Zj)(A,I,g,C,Q),B._crypto_stream_salsa208_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa208_xor=L._j)(A,I,g,C,Q,i),B._crypto_stream_salsa208_keybytes=()=>(B._crypto_stream_salsa208_keybytes=L.$j)(),B._crypto_stream_salsa208_noncebytes=()=>(B._crypto_stream_salsa208_noncebytes=L.ak)(),B._crypto_stream_salsa208_messagebytes_max=()=>(B._crypto_stream_salsa208_messagebytes_max=L.bk)(),B._crypto_stream_salsa208_keygen=A=>(B._crypto_stream_salsa208_keygen=L.ck)(A),B._crypto_stream_xchacha20_keybytes=()=>(B._crypto_stream_xchacha20_keybytes=L.dk)(),B._crypto_stream_xchacha20_noncebytes=()=>(B._crypto_stream_xchacha20_noncebytes=L.ek)(),B._crypto_stream_xchacha20_messagebytes_max=()=>(B._crypto_stream_xchacha20_messagebytes_max=L.fk)(),B._crypto_stream_xchacha20=(A,I,g,C,Q)=>(B._crypto_stream_xchacha20=L.gk)(A,I,g,C,Q),B._crypto_stream_xchacha20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_xchacha20_xor_ic=L.hk)(A,I,g,C,Q,i,o,E),B._crypto_stream_xchacha20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xchacha20_xor=L.ik)(A,I,g,C,Q,i),B._crypto_stream_xchacha20_keygen=A=>(B._crypto_stream_xchacha20_keygen=L.jk)(A),B._malloc=A=>(B._malloc=L.kk)(A),B._free=A=>(B._free=L.lk)(A),B.setValue=function(A,I,g=\"i8\"){switch(g.endsWith(\"*\")&&(g=\"*\"),g){case\"i1\":case\"i8\":s[A]=I;break;case\"i16\":D[A>>1]=I;break;case\"i32\":f[A>>2]=I;break;case\"i64\":b(\"to do setValue(i64) use WASM_BIGINT\");case\"float\":w[A>>2]=I;break;case\"double\":n[A>>3]=I;break;case\"*\":p[A>>2]=I;break;default:b(`invalid type for setValue: ${g}`)}},B.getValue=function(A,I=\"i8\"){switch(I.endsWith(\"*\")&&(I=\"*\"),I){case\"i1\":case\"i8\":return s[A];case\"i16\":return D[A>>1];case\"i32\":return f[A>>2];case\"i64\":b(\"to do getValue(i64) use WASM_BIGINT\");case\"float\":return w[A>>2];case\"double\":return n[A>>3];case\"*\":return p[A>>2];default:b(`invalid type for getValue: ${I}`)}},B.UTF8ToString=u,U=function A(){m||P(),m||(U=A)},B.preInit)for(\"function\"==typeof B.preInit&&(B.preInit=[B.preInit]);B.preInit.length>0;)B.preInit.pop()();P()}))};var g,B=void 0!==B?B:{},Q=\"object\"==typeof window,i=\"function\"==typeof importScripts,o=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node,E=Object.assign({},B),a=\"\";if(o){var _=require(\"fs\"),c=require(\"path\");a=__dirname+\"/\",g=A=>(A=Y(A)?new URL(A):c.normalize(A),_.readFileSync(A)),!B.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\\\/g,\"/\"),process.argv.slice(2),\"undefined\"!=typeof module&&(module.exports=B)}else(Q||i)&&(i?a=self.location.href:\"undefined\"!=typeof document&&document.currentScript&&(a=document.currentScript.src),a=a.startsWith(\"blob:\")?\"\":a.substr(0,a.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1),i&&(g=A=>{var I=new XMLHttpRequest;return I.open(\"GET\",A,!1),I.responseType=\"arraybuffer\",I.send(null),new Uint8Array(I.response)}));B.print;var t,r,e=B.printErr||void 0;Object.assign(B,E),E=null,B.arguments&&B.arguments,B.thisProgram&&B.thisProgram,B.quit&&B.quit,B.wasmBinary&&(t=B.wasmBinary);var y,s,h,D,f,p,w,n=!1;function k(){var A=r.buffer;B.HEAP8=y=new Int8Array(A),B.HEAP16=h=new Int16Array(A),B.HEAPU8=s=new Uint8Array(A),B.HEAPU16=new Uint16Array(A),B.HEAP32=D=new Int32Array(A),B.HEAPU32=f=new Uint32Array(A),B.HEAPF32=p=new Float32Array(A),B.HEAPF64=w=new Float64Array(A)}var F=[],S=[],N=[],G=0,M=null,K=null;function U(A){throw B.onAbort?.(A),e(A=\"Aborted(\"+A+\")\"),n=!0,A+=\". Build with -sASSERTIONS for more info.\",new WebAssembly.RuntimeError(A)}var b,H=\"data:application/octet-stream;base64,\",Y=A=>A.startsWith(\"file://\");function J(A){return Promise.resolve().then((()=>function(A){if(A==b&&t)return new Uint8Array(t);var I=function(A){if((A=>A.startsWith(H))(A))return function(A){if(void 0!==o&&o){var I=Buffer.from(A,\"base64\");return new Uint8Array(I.buffer,I.byteOffset,I.length)}for(var g=atob(A),C=new Uint8Array(g.length),B=0;BB.getRandomValue(),36836:()=>{if(void 0===B.getRandomValue)try{var A=\"object\"==typeof window?window:self,I=void 0!==A.crypto?A.crypto:A.msCrypto;I=void 0===I?C:I;var g=function(){var A=new Uint32Array(1);return I.getRandomValues(A),A[0]>>>0};g(),B.getRandomValue=g}catch(A){try{var C=require(\"crypto\"),Q=function(){var A=C.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};Q(),B.getRandomValue=Q}catch(A){throw\"No secure random number generator found\"}}}},m=A=>{for(;A.length>0;)A.shift()(B)};B.noExitRuntime;var l,u=\"undefined\"!=typeof TextDecoder?new TextDecoder:void 0,x=(A,I)=>A?((A,I,g)=>{for(var C=I+g,B=I;A[B]&&!(B>=C);)++B;if(B-I>16&&A.buffer&&u)return u.decode(A.subarray(I,B));for(var Q=\"\";I>10,56320|1023&a)}}else Q+=String.fromCharCode((31&i)<<6|o)}else Q+=String.fromCharCode(i)}return Q})(s,A,I):\"\",v=[],R=A=>{var I=(A-r.buffer.byteLength+65535)/65536;try{return r.grow(I),k(),1}catch(A){}},L={b:(A,I,g,C)=>{U(`Assertion failed: ${x(A)}, at: `+[I?x(I):\"unknown filename\",g,C?x(C):\"unknown function\"])},c:()=>{U(\"\")},d:(A,I,g)=>s.copyWithin(A,I,I+g),a:(A,I,g)=>((A,I,g)=>{var C=((A,I)=>{var g;for(v.length=0;g=s[A++];){var C=105!=g;I+=(C&=112!=g)&&I%8?4:0,v.push(112==g?f[I>>2]:105==g?D[I>>2]:w[I>>3]),I+=C?8:4}return v})(I,g);return d[A](...C)})(A,I,g),e:A=>{var I=s.length,g=2147483648;if((A>>>=0)>g)return!1;for(var C,B=1;B<=4;B*=2){var Q=I*(1+.2/B);Q=Math.min(Q,A+100663296);var i=Math.min(g,(C=Math.max(A,Q))+(65536-C%65536)%65536);if(R(i))return!0}return!1}},P=function(){var A,I={a:L};function g(A,I){return P=A.exports,r=P.f,k(),function(A){if(G--,B.monitorRunDependencies?.(G),0==G&&(null!==M&&(clearInterval(M),M=null),K)){var I=K;K=null,I()}}(),P}if(G++,B.monitorRunDependencies?.(G),B.instantiateWasm)try{return B.instantiateWasm(I,g)}catch(A){return e(`Module.instantiateWasm callback failed with error: ${A}`),!1}return b||(b=\"data:application/octet-stream;base64,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AkJmAFcCQ2YAEgJEZgCrAQJFZgCjAgJGZgCqAQJHZgCpAQJIZgBYAklmAFcCSmYACgJLZgAlAkxmAAoCTWYADQJOZgANAk9mACwCUGYAEgJRZgASAlJmAJ4DAlNmAJ0DAlRmAJwDAlVmAKICAlZmAKECAldmAJsDAlhmAJoDAllmACUCWmYACgJfZgCZAwIkZgAcAmFnAFECYmcAOQJjZwBkAmRnACcCZWcADQJmZwDoAgJnZwChAQJoZwDzAQJpZwAnAmpnAA0Ca2cAoQECbGcAUAJtZwAWAm5nAAoCb2cACgJwZwAWAnFnAMoBAnJnAIADAnNnAP8CAnRnAP4CAnVnAKABAnZnAJ8BAndnAJ4BAnhnAJ0BAnlnAP0CAnpnAHECQWcA/AICQmcA+wICQ2cAUAJEZwAWAkVnAAoCRmcACgJHZwAWAkhnAMoBAklnAIIDAkpnAIEDAktnAMkBAkxnAHECTWcAyAECTmcAxwECT2cAzAECUGcAywECUWcAhwMCUmcAhgMCU2cAnQECVGcAnwECVWcAngECVmcAoAECV2cACgJYZwAnAllnABQCWmcACgJfZwDrAQIkZwAUAmFoAJ8CAmJoAJ4CAmNoAJ0CAmRoAJwCAmVoAJsCAmZoAJoCAmdoABICaGgAEgJpaAAKAmpoACUCa2gAFAJsaACIAwJtaACcAQJuaACbAQJvaAASAnBoAAoCcWgAJwJyaAAUAnNoAJgCAnRoAJcCAnVoAJYCAnZoABICd2gAnAECeGgAlQICeWgAmwECemgACgJBaAAlAkJoABQCQ2gAEgJEaAANAkVoAAoCRmgAFgJHaAA3AkhoAD8CSWgAsQECSmgAvAMCS2gAuwMCTGgA6AECTWgAugMCTmgAGQJPaAC5AwJQaAAKAlFoALgDAlJoAJQCAlNoAJIDAlRoAJEDAlVoAJADAlZoAIIBAldoAIEBAlhoAMEDAlloALQDAlpoAKsDAl9oANgCAiRoANcCAmFpADkCYmkAHAJjaQB6AmRpAEECZWkAiQMCZmkAmgECZ2kAkwICaGkAkgICaWkAkAICamkAmQECa2kAjwICbGkAmAECbWkAjgICbmkACgJvaQAKAnBpAAoCcWkACgJyaQAlAnNpAA0CdGkALAJ1aQCNAgJ2aQCMAgJ3aQDBAQJ4aQCwAwJ5aQCvAwJ6aQCuAwJBaQCt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iEL///8AgyIIIAEoAA8iO0EGdkH///8Aca0iBn58IAEoAAoiPEEYdq0gATEADkIIhoQgATEAD0IQhoRCAYhC////AIMiDCACKAAKIj1BBHZB////AHGtIg1+fCA5QRh2rSACMQAGQgiGhCACMQAHQhCGhEICiEL///8AgyIOIDtBGHatIAExABNCCIaEIAExABRCEIaEQgOIIgl+fCACKAAPIjlBBnZB////AHGtIgcgATUAB0IHiEL///8AgyIPfnwgPUEYdq0gAjEADkIIhoQgAjEAD0IQhoRCAYhC////AIMiCiA8QQR2Qf///wBxrSIQfnwgOUEYdq0gAjEAE0IIhoQgAjEAFEIQhoRCA4giESABKAACIjlBGHatIAExAAZCCIaEIAExAAdCEIaEQgKIQv///wCDIhJ+fCACMwAVIAIxABdCEIZCgID8AIOEIhUgOUEFdkH///8Aca0iFn58IAEzAAAgATEAAkIQhkKAgPwAg4QiFyACKAAXIjlBBXZB////AHGtIhh+fCAEIAV+IAkgC358IAggDH58IA0gEH58IAYgDn58IAcgEn58IAogD358IBEgFn58IBUgF358Ih1CgIBAfSIeQhWIfCITIBNCgIBAfSIgQoCAgH+DfSA5QRh2rSACMQAbQgiGhCACMQAcQhCGhEICiEL///8AgyITIAEoABxBB3atIhl+IDpBGHatIAExABtCCIaEIAExABxCEIaEQgKIQv///wCDIhogAigAHEEHdq0iG358IAMgG34gGCAZfnwgEyAafnwiIUKAgEB9Ih9CFYh8IiIgIkKAgEB9IhxCgICA/////wCDfSIiQpPYKH58ICEgH0KAgID/////AIN9IBUgGX4gGCAafnwgBCAbfnwgAyATfnwgAyAYfiARIBl+fCAVIBp+fCAJIBt+fCAEIBN+fCIjQoCAQH0iFEIViHwiH0KAgEB9IiRCFYh8IiFCmNocfnwgHyAkQoCAgH+DfSIfQuf2J358ICMgFEKAgIB/g30gESAafiAHIBl+fCAEIBh+fCADIBV+fCAGIBt+fCAJIBN+fCAKIBl+IAcgGn58IAMgEX58IAkgGH58IAQgFX58IAwgG358IAYgE358IhRCgIBAfSIkQhWIfCIlQoCAQH0iJkIViHwiI0LTjEN+fCAdIAUgCX4gBiALfnwgCCAQfnwgDSAPfnwgDCAOfnwgByAWfnwgCiASfnwgESAXfnwgBSAGfiALIAx+fCAIIA9+fCANIBJ+fCAOIBB+fCAHIBd+fCAKIBZ+fCIpQoCAQH0iKkIViHwiK0KAgEB9IixCFYh8IB5CgICAf4N9ICFCk9gofnwgH0KY2hx+fCAjQuf2J358Ii1CgIBAfSIuQhWHfCIvQoCAQH0iMEIVhyAFIBp+IAMgC358IAggCX58IAYgDX58IAQgDn58IAcgEH58IAogDH58IA8gEX58IBYgGH58IBIgFX58IBMgF358Ih4gGSAbfiIdIB1CgIBAfSInQoCAgP////8Dg30gHEIViHwiHUKT2Ch+ICBCFYh8ICJCmNocfnx8ICFC5/YnfnwgH0LTjEN+fCAeQoCAQH0iMUKAgIB/g30gI0LRqwh+fCIcfCAlICZCgICAf4N9IBQgJ0IViCIeQoOhVn58ICRCgICAf4N9IAMgB34gDSAZfnwgCiAafnwgBCARfnwgBiAYfnwgCSAVfnwgECAbfnwgDCATfnwgDSAafiAIIBl+fCAEIAd+fCADIAp+fCAJIBF+fCAMIBh+fCAGIBV+fCAPIBt+fCAQIBN+fCIUQoCAQH0iJEIViHwiJUKAgEB9IiZCFYh8IidCgIBAfSIoQhWHfCIgQoOhVn58IBxCgIBAfSIyQoCAgH+DfSIcIBxCgIBAfSIzQoCAgH+DfSAvIDBCgICAf4N9ICBC0asIfnwgJyAoQoCAgH+DfSAdQoOhVn4gHkLRqwh+fCAlfCAmQoCAgH+DfSAUIB5C04xDfnwgHULRqwh+fCAiQoOhVn58ICRCgICAf4N9IAMgDX4gCCAafnwgDiAZfnwgByAJfnwgBCAKfnwgBiARfnwgECAYfnwgDCAVfnwgEiAbfnwgDyATfnwgAyAIfiALIBl+fCAEIA1+fCAOIBp+fCAGIAd+fCAJIAp+fCAMIBF+fCAPIBh+fCAQIBV+fCAWIBt+fCASIBN+fCIkQoCAQH0iJUIViHwiJkKAgEB9Ii9CFYh8IjBCgIBAfSInQhWHfCIUQoCAQH0iKEIVh3wiHEKDoVZ+fCAtIC5CgICAf4N9ICsgLEKAgIB/g30gH0KT2Ch+fCAjQpjaHH58ICkgKkKAgIB/g30gBSAMfiALIBB+fCAIIBJ+fCANIBZ+fCAOIA9+fCAKIBd+fCAFIBB+IAsgD358IAggFn58IA0gF358IA4gEn58IilCgIBAfSIqQhWIfCIrQoCAQH0iLEIViHwgI0KT2Ch+fCItQoCAQH0iLkIVh3wiNEKAgEB9IjVCFYd8ICBC04xDfnwgHELRqwh+fCAUIChCgICAf4N9IhRCg6FWfnwiKEKAgEB9IjZCFYd8IjdCgIBAfSI4QhWHfCA3IDhCgICAf4N9ICggNkKAgIB/g30gNCA1QoCAgH+DfSAgQuf2J358IBxC04xDfnwgFELRqwh+fCAwICdCgICAf4N9IB1C04xDfiAeQuf2J358ICJC0asIfnwgIUKDoVZ+fCAmfCAvQoCAgH+DfSAdQuf2J34gHkKY2hx+fCAiQtOMQ358ICR8ICFC0asIfnwgH0KDoVZ+fCAlQoCAgH+DfSAFIBl+IAsgGn58IAQgCH58IAkgDX58IAMgDn58IAcgDH58IAYgCn58IBAgEX58IBIgGH58IA8gFX58IBcgG358IBMgFn58IDFCFYh8IgZCgIBAfSIMQhWIfCINQoCAQH0iCUIVh3wiBEKAgEB9IgdCFYd8IgNCg6FWfnwgLSAuQoCAgH+DfSAgQpjaHH58IBxC5/YnfnwgFELTjEN+fCADQtGrCH58IAQgB0KAgIB/g30iBEKDoVZ+fCIHQoCAQH0iCkIVh3wiEEKAgEB9IhFCFYd8IBAgEUKAgIB/g30gByAKQoCAgH+DfSArICxCgICAf4N9ICBCk9gofnwgHEKY2hx+fCAUQuf2J358IA0gCUKAgIB/g30gHUKY2hx+IB5Ck9gofnwgIkLn9id+fCAhQtOMQ358IB9C0asIfnwgBnwgI0KDoVZ+fCAMQoCAgH+DfSAyQhWHfCIMQoCAQH0iDUIVh3wiBkKDoVZ+fCADQtOMQ358IARC0asIfnwgKSAqQoCAgH+DfSAFIA9+IAsgEn58IAggF358IA4gFn58IAUgEn4gCyAWfnwgDiAXfnwiDkKAgEB9IglCFYh8IgdCgIBAfSIPQhWIfCAcQpPYKH58IBRCmNocfnwgBkLRqwh+fCADQuf2J358IARC04xDfnwiCkKAgEB9IhBCFYd8IhFCgIBAfSISQhWHfCARIAwgDUKAgIB/g30gM0IVh3wiDEKAgEB9Ig1CFYciCEKDoVZ+fCASQoCAgH+DfSAKIAhC0asIfnwgEEKAgIB/g30gByAPQoCAgH+DfSAUQpPYKH58IAZC04xDfnwgA0KY2hx+fCAEQuf2J358IA4gCyAXfiAFIBZ+fCAFIBd+IgVCgIBAfSILQhWIfCIHQoCAQH0iD0IViHwgCUKAgID///8Hg30gBkLn9id+fCADQpPYKH58IARCmNocfnwiA0KAgEB9Ig5CFYd8IglCgIBAfSIKQhWHfCAJIAhC04xDfnwgCkKAgIB/g30gAyAIQuf2J358IA5CgICAf4N9IAcgD0KAgID///8Hg30gBkKY2hx+fCAEQpPYKH58IAUgC0KAgID///8Bg30gBkKT2Ch+fCIFQoCAQH0iA0IVh3wiBEKAgEB9IgtCFYd8IAQgCEKY2hx+fCALQoCAgH+DfSAFIANCgICAf4N9IAhCk9gofnwiA0IVh3wiCEIVh3wiBkIVh3wiDkIVh3wiCUIVh3wiB0IVh3wiD0IVh3wiCkIVh3wiEEIVh3wiEUIVh3wiEkIVhyAMIA1CgICAf4N9fCILQhWHIgVCk9gofiADQv///wCDfCIEPAAAIAAgBEIIiDwAASAAIAVCmNocfiAIQv///wCDfCAEQhWHfCIDQguIPAAEIAAgA0IDiDwAAyAAIARCEIhCH4MgA0IFhoQ8AAIgACAFQuf2J34gBkL///8Ag3wgA0IVh3wiBEIGiDwABiAAIARCAoYgA0KAgOAAg0ITiIQ8AAUgACAFQtOMQ34gDkL///8Ag3wgBEIVh3wiA0IJiDwACSAAIANCAYg8AAggACADQgeGIARCgID/AINCDoiEPAAHIAAgBULRqwh+IAlC////AIN8IANCFYd8IgRCDIg8AAwgACAEQgSIPAALIAAgBEIEhiADQoCA+ACDQhGIhDwACiAAIAVCg6FWfiAHQv///wCDfCAEQhWHfCIDQgeIPAAOIAAgA0IBhiAEQoCAwACDQhSIhDwADSAAIA9C////AIMgA0IVh3wiBUIKiDwAESAAIAVCAog8ABAgACAFQgaGIANCgID+AINCD4iEPAAPIAAgCkL///8AgyAFQhWHfCIDQg2IPAAUIAAgA0IFiDwAEyAAIBBC////AIMgA0IVh3wiBDwAFSAAIANCA4YgBUKAgPAAg0ISiIQ8ABIgACAEQgiIPAAWIAAgEUL///8AgyAEQhWHfCIFQguIPAAZIAAgBUIDiDwAGCAAIARCEIhCH4MgBUIFhoQ8ABcgACASQv///wCDIAVCFYd8IgNCBog8ABsgACADQgKGIAVCgIDgAINCE4iEPAAaIAAgA0IVhyIEIAtC////AIN8IgVCEYg8AB8gACAFQgmIPAAeIAAgBUIHhiADQoCA/wCDQg6IhDwAHCAAIASnIAunakEBdq08AB0L7gQBD38gASgCDCEEIAEoAgghBSABKAIEIQYjAEFAakFAcSIDIAEoAgAiAUH/AXFBAnRBoJcCaigCADYCACADIAZBBnZB/AdxQaCXAmooAgA2AgQgAyAFQQ52QfwHcUGglwJqKAIANgIIIAMgBEEWdkH8B3FBoJcCaigCADYCDCADIAZB/wFxQQJ0QaCXAmooAgA2AhAgAyAFQQZ2QfwHcUGglwJqKAIANgIUIAMgBEEOdkH8B3FBoJcCaigCADYCGCADIAFBFnZB/AdxQaCXAmooAgA2AhwgAyAFQf8BcUECdEGglwJqKAIANgIgIAMgBEEGdkH8B3FBoJcCaigCADYCJCADIAFBDnZB/AdxQaCXAmooAgA2AiggAyAGQRZ2QfwHcUGglwJqKAIANgIsIAMgBEH/AXFBAnRBoJcCaigCADYCMCADIAFBBnZB/AdxQaCXAmooAgA2AjQgAyAGQQ52QfwHcUGglwJqKAIANgI4IAMgBUEWdkH8B3FBoJcCaigCADYCPCADKAIMIQEgAygCACEEIAMoAgQhBSADKAIIIQYgAygCHCEHIAMoAhAhCCADKAIUIQkgAygCGCEKIAMoAiwhCyADKAIgIQwgAygCJCENIAMoAighDiACKAIAIQ8gAigCBCEQIAIoAgghESAAIAIoAgwgAygCMCADKAI0QQh3cyADKAI4QRB3cyADKAI8QRh3c3M2AgwgACARIAwgDUEId3MgDkEQd3MgC0EYd3NzNgIIIAAgECAIIAlBCHdzIApBEHdzIAdBGHdzczYCBCAAIA8gBCAFQQh3cyAGQRB3cyABQRh3c3M2AgALCwAgAEEAIAEQDBoLBABBIAuCBAEDfyACQYAETwRAIAAgASACEAMgAA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCyADQXxxIQQCQCADQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAvyAgICfwF+AkAgAkUNACAAIAE6AAAgACACaiIDQQFrIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0EDayABOgAAIANBAmsgAToAACACQQdJDQAgACABOgADIANBBGsgAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAsEAEEQCxkBAX9BiKoCKAIAIgAEQCAAERYACxCLAQAL1AECBX8CfgJ/IAJCAFIEQCAAQeABaiEHIABB4ABqIQMgACgA4AIhBANAIAMgBGohBkGAAiAEayIFrSIIIAJaBEAgBiABIAKnIgEQCxogACAAKADgAiABajYA4AJBAAwDCyAGIAEgBRALGiAAIAAoAOACIAVqNgDgAiAAIAApAEAiCUKAAXw3AEAgACAAKQBIIAlC/35WrXw3AEggACADEFIgAyAHQYABEAsaIAAgACgA4AJBgAFrIgQ2AOACIAEgBWohASACIAh9IgJCAFINAAsLQQALC58EARN/IAEoAgQhAiABKAIsIQMgASgCCCEEIAEoAjAhBSABKAIMIQYgASgCNCEHIAEoAhAhCCABKAI4IQkgASgCFCEKIAEoAjwhCyABKAIYIQwgAUFAayINKAIAIQ4gASgCHCEPIAEoAkQhECABKAIgIREgASgCSCESIAEoAiQhEyABKAJMIRQgACABKAIAIAEoAihqNgIAIAAgEyAUajYCJCAAIBEgEmo2AiAgACAPIBBqNgIcIAAgDCAOajYCGCAAIAogC2o2AhQgACAIIAlqNgIQIAAgBiAHajYCDCAAIAQgBWo2AgggACACIANqNgIEIAEoAgQhAiABKAIsIQMgASgCCCEEIAEoAjAhBSABKAIMIQYgASgCNCEHIAEoAhAhCCABKAI4IQkgASgCFCEKIAEoAjwhCyABKAIYIQwgDSgCACENIAEoAhwhDiABKAJEIQ8gASgCICEQIAEoAkghESABKAIAIRIgASgCKCETIAAgASgCTCABKAIkazYCTCAAIBEgEGs2AkggACAPIA5rNgJEIABBQGsgDSAMazYCACAAIAsgCms2AjwgACAJIAhrNgI4IAAgByAGazYCNCAAIAUgBGs2AjAgACADIAJrNgIsIAAgEyASazYCKCAAIAEpAlA3AlAgACABKQJYNwJYIAAgASkCYDcCYCAAIAEpAmg3AmggACABKQJwNwJwIABB+ABqIAFB+ABqQZANEAYL6AQBCX8gACABKAIgIgUgASgCHCIGIAEoAhgiByABKAIUIgggASgCECIJIAEoAgwiCiABKAIIIgQgASgCBCIDIAEoAgAiAiABKAIkIgFBE2xBgICACGpBGXZqQRp1akEZdWpBGnVqQRl1akEadWpBGXVqQRp1akEZdWpBGnUgAWpBGXVBE2wgAmoiAjoAACAAIAJBEHY6AAIgACACQQh2OgABIAAgAyACQRp1aiIDQQ52OgAFIAAgA0EGdjoABCAAIAJBGHZBA3EgA0ECdHI6AAMgACAEIANBGXVqIgJBDXY6AAggACACQQV2OgAHIAAgAkEDdCADQYCAgA5xQRZ2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ABcgAy0AD3I6AA8gAyAALQAYIAMtAA9yOgAPIAMgAC0AGSADLQAPcjoADyADIAAtABogAy0AD3I6AA8gAyAALQAbIAMtAA9yOgAPIAMgAC0AHCADLQAPcjoADyADIAAtAB0gAy0AD3I6AA8gAyAALQAeIAMtAA9yOgAPIAMgAC0AHyADLQAPcjoADyADLQAPQRd0QYCAgARrQR91IQQLIANBEGokACAEC30BA38CQAJAIAAiAUEDcUUNACABLQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQFBgIKECCACKAIAIgNrIANyQYCBgoR4cUGAgYKEeEYNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrCycAIAJBgAJPBEBB1gpB/wlB6wBB4wgQAQALIAAgASACQf8BcRCDAQv7AwECf0F/IQQCQCACQcAASw0AIANBwQBrQUBJDQACQCABQQAgAhtFBEAgA0H/AXEiAUHBAGtB/wFxQb8BTQRAEA4ACyAAQUBrQQBBpQIQDBogAEL5wvibkaOz8NsANwA4IABC6/qG2r+19sEfNwAwIABCn9j52cKR2oKbfzcAKCAAQtGFmu/6z5SH0QA3ACAgAELx7fT4paf9p6V/NwAYIABCq/DT9K/uvLc8NwAQIABCu86qptjQ67O7fzcACCAAIAGtQoiS95X/zPmE6gCFNwAADAELAn8gAkH/AXEhAiMAQYABayIFJAACQCADQf8BcSIDQcEAa0H/AXFBvwFNDQAgAUUNACACQcEAa0H/AXFBvwFNDQAgAEFAa0EAQaUCEAwaIABC+cL4m5Gjs/DbADcAOCAAQuv6htq/tfbBHzcAMCAAQp/Y+dnCkdqCm383ACggAELRhZrv+s+Uh9EANwAgIABC8e30+KWn/aelfzcAGCAAQqvw0/Sv7ry3PDcAECAAQrvOqqbY0Ouzu383AAggACADrSACrUIIhoRCiJL3lf/M+YTqAIU3AAAgAEHgAGogBUEAQYABEAwgASACEAsiAUGAARALGiAAIAAoAOACQYABajYA4AIgAUGAARAJIAFBgAFqJABBAAwBCxAOAAsNAQtBACEECyAECw0AIAAgASACECQaQQAL6AUCB34DfyMAQaACayILJAACQCACUA0AIAAgACkDICIDIAJCA4Z8NwMgIABBKGohCkLAACADQgOIQj+DIgR9IgggAlgEQEIAIQMgBEI/hUIDWgRAIAhC/ACDIQcDQCAKIAMgBHynaiABIAOnai0AADoAACAKIANCAYQiCSAEfKdqIAEgCadqLQAAOgAAIAogA0IChCIJIAR8p2ogASAJp2otAAA6AAAgCiADQgOEIgkgBHynaiABIAmnai0AADoAACADQgR8IQMgBUIEfCIFIAdSDQALCyAIQgODIgVCAFIEQANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIANCAXwhAyAGQgF8IgYgBVINAAsLIAAgCiALIAtBgAJqIgwQYiABIAinaiEBIAIgCH0iAkI/VgRAA0AgACABIAsgDBBiIAFBQGshASACQkB8IgJCP1YNAAsLAkAgAlANACACQgODIQRCACEGQgAhAyACQgRaBEAgAkI8gyEFQgAhAgNAIAogA6ciAGogACABai0AADoAACAKIABBAXIiDGogASAMai0AADoAACAKIABBAnIiDGogASAMai0AADoAACAKIABBA3IiAGogACABai0AADoAACADQgR8IQMgAkIEfCICIAVSDQALCyAEUA0AA0AgCiADpyIAaiAAIAFqLQAAOgAAIANCAXwhAyAGQgF8IgYgBFINAAsLIAtBoAIQCQwBC0IAIQMgAkIEWgRAIAJCfIMhCANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIAogA0IBhCIHIAR8p2ogASAHp2otAAA6AAAgCiADQgKEIgcgBHynaiABIAenai0AADoAACAKIANCA4QiByAEfKdqIAEgB6dqLQAAOgAAIANCBHwhAyAFQgR8IgUgCFINAAsLIAJCA4MiAlANAANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIANCAXwhAyAGQgF8IgYgAlINAAsLIAtBoAJqJABBAAsEAEEYCw0AIAAgASACEBcaQQALBABBCAv3EgIVfgN/IAAgACgALCIWQQV2Qf///wBxrSAAKAA8QQN2rSICQoOhVn4gADMAKiAAMQAsQhCGQoCA/ACDhHwiC0KAgEB9IghCFYd8IgFCg6FWfiAANQAxQgeIQv///wCDIgNC04xDfiAAKAAXIhdBGHatIAAxABtCCIaEIAAxABxCEIaEQgKIQv///wCDfCAAKAA0IhhBBHZB////AHGtIgRC5/YnfnwgFkEY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QbABaiQAC7sGAQl/IwBB4ABrIgMkACACQcEATwRAIAAQYxogACABIAKtECQaIAAgAxAtGkEgIQIgAyEBCyAAEGMaIANCtuzYsePGjZs2NwNYIANCtuzYsePGjZs2NwNQIANCtuzYsePGjZs2NwNIIANBQGsiCkK27Nix48aNmzY3AwAgA0K27Nix48aNmzY3AzggA0K27Nix48aNmzY3AzAgA0K27Nix48aNmzY3AyggA0K27Nix48aNmzY3AyACQCACRQ0AIAJBBE8EQCACQfwAcSEGA0AgA0EgaiILIARqIgUgBS0AACABIARqLQAAczoAACALIARBAXIiBWoiCCAILQAAIAEgBWotAABzOgAAIAsgBEECciIFaiIIIAgtAAAgASAFai0AAHM6AAAgCyAEQQNyIgVqIgggCC0AACABIAVqLQAAczoAACAEQQRqIQQgB0EEaiIHIAZHDQALCyACQQNxIgdFDQADQCADQSBqIARqIgYgBi0AACABIARqLQAAczoAACAEQQFqIQQgCUEBaiIJIAdHDQALCyAAIANBIGpCwAAQJBogAEHoAGoiABBjGiADQty48eLFi5eu3AA3A1ggA0LcuPHixYuXrtwANwNQIANC3Ljx4sWLl67cADcDSCAKQty48eLFi5eu3AA3AwAgA0LcuPHixYuXrtwANwM4IANC3Ljx4sWLl67cADcDMCADQty48eLFi5eu3AA3AyggA0LcuPHixYuXrtwANwMgAkAgAkUNAEEAIQlBACEEIAJBBE8EQCACQfwAcSEKQQAhBwNAIANBIGoiCCAEaiIGIAYtAAAgASAEai0AAHM6AAAgCCAEQQFyIgZqIgUgBS0AACABIAZqLQAAczoAACAIIARBAnIiBmoiBSAFLQAAIAEgBmotAABzOgAAIAggBEEDciIGaiIFIAUtAAAgASAGai0AAHM6AAAgBEEEaiEEIAdBBGoiByAKRw0ACwsgAkEDcSICRQ0AA0AgA0EgaiAEaiIHIActAAAgASAEai0AAHM6AAAgBEEBaiEEIAlBAWoiCSACRw0ACwsgACADQSBqIgBCwAAQJBogAEHAABAJIANBIBAJIANB4ABqJABBAAs7AQF/IwBBQGoiAiQAIAAgAhAdGiAAQdABaiIAIAJCwAAQFxogACABEB0aIAJBwAAQCSACQUBrJABBAAtyACAAQgA3A0AgAEIANwNIIABBsIwCKQMANwMAIABBuIwCKQMANwMIIABBwIwCKQMANwMQIABByIwCKQMANwMYIABB0IwCKQMANwMgIABB2IwCKQMANwMoIABB4IwCKQMANwMwIABB6IwCKQMANwM4QQALIwAgAUKAgICAEFoEQBAOAAsgACABIAIgA0G0nwIoAgARDwAL5QgBGH8jAEHAAmsiAiQAIABBKGoiFyABEDYgAEIANwJUIABBATYCUCAAQgA3AlwgAEIANwJkIABCADcCbCAAQQA2AnQgAkHwAWoiBCAXEAUgAkHAAWoiDiAEQbAMEAYgAiACKALAAUEBajYCwAEgAiACKALwAUEBayIDNgLwASACKAL0ASENIAIoAvgBIQUgAigC/AEhBiACKAKAAiEHIAIoAoQCIQggAigCiAIhCSACKAKMAiEKIAIoApACIQsgAigClAIhDCAAIAQgDhAGIAAgABBuIAAgBCAAEAYgAkGQAWoiBCAAEAUgBCAEIA4QBiACIAIoArQBIgQgDGs2AoQBIAIgAigCsAEiDiALazYCgAEgAiACKAKsASIPIAprNgJ8IAIgAigCqAEiECAJazYCeCACIAIoAqQBIhEgCGs2AnQgAiACKAKgASISIAdrNgJwIAIgAigCnAEiEyAGazYCbCACIAIoApgBIhQgBWs2AmggAiACKAKUASIVIA1rNgJkIAIgAigCkAEiFiADazYCYCACIAQgDGo2AlQgAiALIA5qNgJQIAIgCiAPajYCTCACIAkgEGo2AkggAiAIIBFqNgJEIAIgByASajYCQCACIAYgE2o2AjwgAiAFIBRqNgI4IAIgDSAVajYCNCACIAMgFmo2AjAgAiACQeAAahARIAJBIBAaIQQgAiACQTBqEBEgAkEgEBohDyACIABB4AwQBiAAKAIEIQwgACgCCCELIAAoAgwhCiAAKAIQIQkgACgCFCEIIAAoAhghByAAKAIcIQYgACgCICEFIAAoAgAhDiACKAIAIRAgAigCBCERIAIoAgghEiACKAIMIRMgAigCECEUIAIoAhQhFSACKAIYIRYgAigCHCEYIAIoAiAhGSAAIARBAWsiAyAAKAIkIg0gAigCJHNxIA1zIg02AiQgACAFIAUgGXMgA3FzIgU2AiAgACAGIAYgGHMgA3FzIgY2AhwgACAHIAcgFnMgA3FzIgc2AhggACAIIAggFXMgA3FzIgg2AhQgACAJIAkgFHMgA3FzIgk2AhAgACAKIAogE3MgA3FzIgo2AgwgACALIAsgEnMgA3FzIgs2AgggACAMIAwgEXMgA3FzIgw2AgQgACAOIA4gEHMgA3FzIgM2AgAgAkGgAmogABARIABBACACLQCgAkEBcSABLQAfQQd2c0GAqgItAABBAnZzayIBIA1BACANa3NxIA1zNgIkIAAgBUEAIAVrcyABcSAFczYCICAAIAZBACAGa3MgAXEgBnM2AhwgACAHQQAgB2tzIAFxIAdzNgIYIAAgCEEAIAhrcyABcSAIczYCFCAAIAlBACAJa3MgAXEgCXM2AhAgACAKQQAgCmtzIAFxIApzNgIMIAAgC0EAIAtrcyABcSALczYCCCAAIAxBACAMa3MgAXEgDHM2AgQgACADQQAgA2tzIAFxIANzNgIAIABB+ABqIAAgFxAGIAJBwAJqJAAgBCAPckEBawvKCAEDfyMAQcABayICJAAgAkGQAWoiBCABEAUgAkHgAGoiAyAEEAUgAyADEAUgAyABIAMQBiAEIAQgAxAGIAJBMGoiASAEEAUgAyADIAEQBiABIAMQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSADIAEgAxAGIAEgAxAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASADEAYgAiABEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgASACIAEQBiABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSADIAEgAxAGIAEgAxAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASADEAYgAiABEAVBASEBA0AgAiACEAUgAUEBaiIBQeQARw0ACyACQTBqIgEgAiABEAYgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgAkHgAGoiAyABIAMQBiADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSAAIAMgAkGQAWoQBiACQcABaiQAC/QEARl+IAExAB8hAiABMQAeIQYgATEAHSEOIAExAAYhByABMQAFIQggATEABCEDIAExAAkhDyABMQAIIRAgATEAByERIAExAAwhCSABMQALIQogATEACiELIAExAA8hDCABMQAOIRIgATEADSETIAExABwhBCABMQAbIRQgATEAGiEVIAExABkhBSABMQAYIRYgATEAFyEXIAE1AAAhGCAAIAExABVCD4YgATEAFEIHhoQgATEAFkIXhoQgATUAECIZQoCAgAh8IhpCGYh8Ig0gDUKAgIAQfCINQoCAgOAPg30+AhggACAWQg2GIBdCBYaEIAVCFYaEIgUgDUIaiHwgBUKAgIAIfCIFQoCAgPADg30+AhwgACAUQgyGIBVCBIaEIARCFIaEIAVCGYh8IgQgBEKAgIAQfCIEQoCAgOAPg30+AiAgACAZIBpCgICA8A+DfSASQgqGIBNCAoaEIAxCEoaEIApCC4YgC0IDhoQgCUIThoQiCUKAgIAIfCIKQhmIfCILQoCAgBB8IgxCGoh8PgIUIAAgCyAMQoCAgOAPg30+AhAgACAQQg2GIBFCBYaEIA9CFYaEIAhCDoYgA0IGhoQgB0IWhoQiB0KAgIAIfCIIQhmIfCIDIANCgICAEHwiA0KAgIDgD4N9PgIIIAAgAkIShkKAgPAPgyAGQgqGIA5CAoaEhCICIARCGoh8IAJCgICACHwiAkKAgIAQg30+AiQgACADQhqIIAl8IApCgICA8ACDfT4CDCAAIAcgCEKAgIDwB4N9IBggAkIZiEITfnwiAkKAgIAQfCIGQhqIfD4CBCAAIAIgBkKAgIDgD4N9PgIAC+8DAQF/IwBBEGsiAiAANgIMIAIgATYCCCACQQA2AgQgAiACKAIEIAIoAgwtAAAgAigCCC0AAHNyNgIEIAIgAigCBCACKAIMLQABIAIoAggtAAFzcjYCBCACIAIoAgQgAigCDC0AAiACKAIILQACc3I2AgQgAiACKAIEIAIoAgwtAAMgAigCCC0AA3NyNgIEIAIgAigCBCACKAIMLQAEIAIoAggtAARzcjYCBCACIAIoAgQgAigCDC0ABSACKAIILQAFc3I2AgQgAiACKAIEIAIoAgwtAAYgAigCCC0ABnNyNgIEIAIgAigCBCACKAIMLQAHIAIoAggtAAdzcjYCBCACIAIoAgQgAigCDC0ACCACKAIILQAIc3I2AgQgAiACKAIEIAIoAgwtAAkgAigCCC0ACXNyNgIEIAIgAigCBCACKAIMLQAKIAIoAggtAApzcjYCBCACIAIoAgQgAigCDC0ACyACKAIILQALc3I2AgQgAiACKAIEIAIoAgwtAAwgAigCCC0ADHNyNgIEIAIgAigCBCACKAIMLQANIAIoAggtAA1zcjYCBCACIAIoAgQgAigCDC0ADiACKAIILQAOc3I2AgQgAiACKAIEIAIoAgwtAA8gAigCCC0AD3NyNgIEIAIoAgRBAWtBCHZBAXFBAWsLmQEBBH9BwQAhAkGACCEBAkACQCAAQf8BcSIDQYAILQAARwRAIANBgYKECGwhAwNAQYCChAggASgCACADcyIEayAEckGAgYKEeHFBgIGChHhHDQIgAUEEaiEBIAJBBGsiAkEDSw0ACwsgAkUNAQsgAEH/AXEhAANAIAAgAS0AAEYEQCABDwsgAUEBaiEBIAJBAWsiAg0ACwtBAAsEAEECCz8AAkAgBK1CgICAgBAgAkI/fEIGiH1WDQAgAkKAgICAEFoNACAAIAEgAiADIAQgBUG8nwIoAgAREAAPCxAOAAsnACACQoCAgIAQWgRAEA4ACyAAIAEgAiADIAQgBUG4nwIoAgARDAAL1wEBA38jAEEQayIDIAA2AgwgAyABNgIIQQAhACADQQA6AAcCQCACRQ0AIAJBAXEgAkEBRwRAIAJBfnEhBEEAIQIDQCADIAMtAAcgAygCDCAAai0AACADKAIIIABqLQAAc3I6AAcgAyADLQAHIABBAXIiBSADKAIMai0AACADKAIIIAVqLQAAc3I6AAcgAEECaiEAIAJBAmoiAiAERw0ACwtFDQAgAyADLQAHIAMoAgwgAGotAAAgAygCCCAAai0AAHNyOgAHCyADLQAHQQFrQQh2QQFxQQFrC5wLARd/IwBBgARrIgIkAEF/IQMgAS0AHyIEQX9zQf8AcSABLQABIAEtAAIgAS0AAyABLQAEIAEtAAUgAS0ABiABLQAHIAEtAAggAS0ACSABLQAKIAEtAAsgAS0ADCABLQANIAEtAA4gAS0ADyABLQAQIAEtABEgAS0AEiABLQATIAEtABQgAS0AFSABLQAWIAEtABcgAS0AGCABLQAZIAEtABogAS0AGyABLQAcIAEtAB0gAS0AHnFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxQX9zckH/AXFBAWtB7AEgAS0AACIFa3FBCHYgBSAEQQd2cnJBAXFFBEAgAkHQAmoiDSABEDYgAkGgAmogDRAFIAJBACACKALEAiIBazYClAIgAkEAIAIoAsACIgNrNgKQAiACQQAgAigCvAIiBGs2AowCIAJBACACKAK4AiIFazYCiAIgAkEAIAIoArQCIgZrNgKEAiACQQAgAigCsAIiB2s2AoACIAJBACACKAKsAiIIazYC/AEgAkEAIAIoAqgCIglrNgL4ASACQQAgAigCpAIiCms2AvQBIAJBASACKAKgAiILazYC8AEgAkGQAWoiDCACQfABaiIREAUgAiABNgLkASACIAM2AuABIAIgBDYC3AEgAiAFNgLYASACIAY2AtQBIAIgBzYC0AEgAiAINgLMASACIAk2AsgBIAIgCjYCxAEgAiALQQFqNgLAASACQeAAaiISIAJBwAFqIhMQBSACQTBqIhBBsAwgDBAGIAIoAmAhASACKAIwIQMgAigCZCEEIAIoAjQhBSACKAJoIQYgAigCOCEHIAIoAmwhCCACKAI8IQkgAigCcCEKIAIoAkAhCyACKAJ0IQwgAigCRCEOIAIoAnghDyACKAJIIRQgAigCfCEVIAIoAkwhFiACKAKAASEXIAIoAlAhGCACQQAgAigCVCACKAKEAWprNgJUIAJBACAXIBhqazYCUCACQQAgFSAWams2AkwgAkEAIA8gFGprNgJIIAJBACAMIA5qazYCRCACQQAgCiALams2AkAgAkEAIAggCWprNgI8IAJBACAGIAdqazYCOCACQQAgBCAFams2AjQgAkEAIAEgA2prNgIwIAIgECASEAYgAkIANwKUAyACQgA3ApwDIAJBADYCpAMgAkIANwKEAyACQQE2AoADIAJCADcCjAMgAkGwA2oiASACQYADaiACEGohDyAAIAEgExAGIABBKGoiAyABIAAQBiADIAMgEBAGIAAgACANEAYgACAAKAIkQQF0IgQ2AiQgACAAKAIgQQF0IgU2AiAgACAAKAIcQQF0IgY2AhwgACAAKAIYQQF0Igc2AhggACAAKAIUQQF0Igg2AhQgACAAKAIQQQF0Igk2AhAgACAAKAIMQQF0Igo2AgwgACAAKAIIQQF0Igs2AgggACAAKAIEQQF0Igw2AgQgACAAKAIAQQF0Ig42AgAgAkHgA2oiDSAAEBEgAEEAIAItAOADQQFxayIBIARBACAEa3NxIARzNgIkIAAgBUEAIAVrcyABcSAFczYCICAAIAZBACAGa3MgAXEgBnM2AhwgACAHQQAgB2tzIAFxIAdzNgIYIAAgCEEAIAhrcyABcSAIczYCFCAAIAlBACAJa3MgAXEgCXM2AhAgACAKQQAgCmtzIAFxIApzNgIMIAAgC0EAIAtrcyABcSALczYCCCAAIAxBACAMa3MgAXEgDHM2AgQgACAOQQAgDmtzIAFxIA5zNgIAIAMgESADEAYgAEIANwJUIABBATYCUCAAQgA3AlwgAEIANwJkIABCADcCbCAAQQA2AnQgAEH4AGoiASAAIAMQBiANIAEQESACLQDgAyEAIA0gAxARQQAgDUEgEBpBASAPayAA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RQ0BIAJBAWsiAkUNASABQQFqIQEgAC0AASEDIABBAWohACADDQALQQAhAwsgAwVBAAsgAS0AAGsLUgECf0HwlgIoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQBA0BC0HwpQJBMDYCAEF/DwtB8JYCIAA2AgAgAQs5AQF/IwBBIGsiAiQAIAAgAhAtGiAAQegAaiIAIAJCIBAkGiAAIAEQLRogAkEgEAkgAkEgaiQAQQALlgEBAX8jAEHQAWsiAyQAIANCADcDSCADQbiMAikDADcDCCADQcCMAikDADcDECADQciMAikDADcDGCADQdCMAikDADcDICADQdiMAikDADcDKCADQeCMAikDADcDMCADQeiMAikDADcDOCADQgA3A0AgA0GwjAIpAwA3AwAgAyABIAIQFxogAyAAEB0aIANB0AFqJABBAAsQACAAIAEgAiADQQgQaUEACxAAIAAgASACIANBDBBpQQALEAAgACABIAIgA0EUEGlBAAuhEQIsfwV+IwBBoAZrIgIkACABKAIsIQMgASgCVCEFIAEoAjAhDCABKAJYIQ0gASgCNCEOIAEoAlwhDyABKAI4IRAgASgCYCERIAEoAjwhEiABKAJkIRMgAUFAayIUKAIAIRYgASgCaCEEIAEoAkQhBiABKAJsIQcgASgCSCEIIAEoAnAhCSABKAIoIQogASgCUCELIAIgASgCTCIVIAEoAnQiF2o2AsQCIAIgCCAJajYCwAIgAiAGIAdqNgK8AiACIAQgFmo2ArgCIAIgEiATajYCtAIgAiAQIBFqNgKwAiACIA4gD2o2AqwCIAIgDCANajYCqAIgAiADIAVqNgKkAiACIAogC2o2AqACIAIgFyAVazYCJCACIAkgCGs2AiAgAiAHIAZrNgIcIAIgBCAWazYCGCACIBMgEms2AhQgAiARIBBrNgIQIAIgDyAOazYCDCACIA0gDGs2AgggAiAFIANrNgIEIAIgCyAKazYCACACQaACaiIFIAUgAhAGIAJB8AFqIgYgASABQShqIgMQBiACQcABaiIEIAYQBSAEIAUgBBAGIAJCADcCxAMgAkIANwLMAyACQQA2AtQDIAJCADcCtAMgAkIANwK8AyACQQE2ArADIAJBwARqIgcgAkGwA2ogBBBqGiACQdAFaiIEIAcgBRAGIAJBoAVqIh8gByAGEAYgAkEwaiIdIAQgHxAGIB0gHSABQfgAaiIFEAYgAkGQBGogAUHgDBAGIAJB4ANqIANB4AwQBiACQfAEaiAEQYAXEAYgAkHQAmoiAyAFIB0QBiACQYADaiIYIAMQESACLQCAAyEDIAIgASkCICIuNwOwASACIAEpAhgiLzcDqAEgAiABKQIQIjA3A6ABIAIgASkCCCIxNwOYASACIAEpAgAiMjcDkAEgASgCLCEFIAEoAjAhDCABKAI0IQ0gASgCOCEOIAEoAjwhDyAUKAIAIRAgASgCRCERIAEoAkghEiABKAJMIRMgASgCKCEWIAIoAuQDIQogAigClAEhBCACKALsAyELIAIoApwBIQYgAigC9AMhFCACKAKkASEHIAIoAvwDIRUgAigCrAEhCCACKAKEBCEXIAIoArQBIQkgAigC4AMhHiACKALoAyEZIAIoAvADIRogAigC+AMhGyACQQAgA0EBcWsiAyAupyIcIAIoAoAEc3EgHHM2ArABIAIgGyAvpyIccyADcSAcczYCqAEgAiAaIDCnIhtzIANxIBtzNgKgASACIBkgMaciGnMgA3EgGnM2ApgBIAIgHiAypyIZcyADcSAZczYCkAEgAiAJIAkgF3MgA3FzNgK0ASACIAggCCAVcyADcXM2AqwBIAIgByAHIBRzIANxczYCpAEgAiAGIAYgC3MgA3FzNgKcASACIAQgBCAKcyADcXM2ApQBIAIoApAEIRcgAigClAQhHiACKAKYBCEZIAIoApwEIRogAigCoAQhGyACKAKkBCEcIAIoAqgEISAgAigCrAQhISACKAKwBCEiIAIoArQEISMgAigCoAUhBCACKALwBCEkIAIoAqQFIQYgAigC9AQhJSACKAKoBSEHIAIoAvgEISYgAigCrAUhCCACKAL8BCEnIAIoArAFIQkgAigCgAUhKCACKAK0BSEKIAIoAoQFISkgAigCuAUhCyACKAKIBSEqIAIoArwFIRQgAigCjAUhKyACKALABSEVIAIoApAFISwgAiACKALEBSItIAIoApQFcyADcSAtczYCxAUgAiAVIBUgLHMgA3FzNgLABSACIBQgFCArcyADcXM2ArwFIAIgCyALICpzIANxczYCuAUgAiAKIAogKXMgA3FzNgK0BSACIAkgCSAocyADcXM2ArAFIAIgCCAIICdzIANxczYCrAUgAiAHIAcgJnMgA3FzNgKoBSACIAYgBiAlcyADcXM2AqQFIAIgBCAEICRzIANxczYCoAUgAkHgAGoiBCACQZABaiAdEAYgGCAEEBEgASgCVCEEIAEoAlghBiABKAJcIQcgASgCYCEIIAEoAmQhCSABKAJoIQogASgCbCELIAEoAnAhFCABKAJQIRUgAiABKAJ0QQAgAi0AgANBAXFrIgEgEyATICNzIANxcyITQQAgE2tzcSATc2s2AqQDIAIgFCASIBIgInMgA3FzIhJBACASa3MgAXEgEnNrNgKgAyACIAsgESARICFzIANxcyIRQQAgEWtzIAFxIBFzazYCnAMgAiAKIBAgECAgcyADcXMiEEEAIBBrcyABcSAQc2s2ApgDIAIgCSAPIA8gHHMgA3FzIg9BACAPa3MgAXEgD3NrNgKUAyACIAggDiAOIBtzIANxcyIOQQAgDmtzIAFxIA5zazYCkAMgAiAHIA0gDSAacyADcXMiDUEAIA1rcyABcSANc2s2AowDIAIgBiAMIAwgGXMgA3FzIgxBACAMa3MgAXEgDHNrNgKIAyACIAQgBSAFIB5zIANxcyIFQQAgBWtzIAFxIAVzazYChAMgAiAVIAEgFiAWIBdzIANxcyIBQQAgAWtzcSABc2s2AoADIBggHyAYEAYgAkGABmogGBARIAJBACACLQCABkEBcWsiASACKAKAAyIDQQAgA2tzcSADczYCgAMgAiACKAKEAyIDQQAgA2tzIAFxIANzNgKEAyACIAIoAogDIgNBACADa3MgAXEgA3M2AogDIAIgAigCjAMiA0EAIANrcyABcSADczYCjAMgAiACKAKQAyIDQQAgA2tzIAFxIANzNgKQAyACIAIoApQDIgNBACADa3MgAXEgA3M2ApQDIAIgAigCmAMiA0EAIANrcyABcSADczYCmAMgAiACKAKcAyIDQQAgA2tzIAFxIANzNgKcAyACIAIoAqADIgNBACADa3MgAXEgA3M2AqADIAIgASACKAKkAyIBQQAgAWtzcSABczYCpAMgACAYEBEgAkGgBmokAAv4AQEKfwNAIAQgACADai0AACIBIANBgBVqIgItAABzciEEIAogASACLQDAAXNyIQogCSABIAItAKABc3IhCSAIIAEgAi0AgAFzciEIIAcgASACLQBgc3IhByAGIAEgAkFAay0AAHNyIQYgBSABIAItACBzciEFIANBAWoiA0EfRw0ACyAKIAAtAB9B/wBxIgBB/wBzIgFyQf8BcUEBayABIAlyQf8BcUEBayABIAhyQf8BcUEBayAHIABB+gBzckH/AXFBAWsgBiAAQQVzckH/AXFBAWsgACAFckH/AXFBAWsgACAEckH/AXFBAWtycnJycnJBCHZBAXELwQUBHH8jAEHAAmsiASQAIAFB8AFqIgMgABAFIAFBwAFqIgQgAEEoahAFIAFBkAFqIgIgAEHQAGoQBSABKALwASEAIAEoAsABIQUgASgC9AEhBiABKALEASEHIAEoAvgBIQggASgCyAEhCSABKAL8ASEKIAEoAswBIQsgASgCgAIhDCABKALQASENIAEoAoQCIQ4gASgC1AEhDyABKAKIAiEQIAEoAtgBIREgASgCjAIhEiABKALcASETIAEoApACIRQgASgC4AEhFSABIAEoAuQBIAEoApQCazYCVCABIBUgFGs2AlAgASATIBJrNgJMIAEgESAQazYCSCABIA8gDms2AkQgASANIAxrNgJAIAEgCyAKazYCPCABIAkgCGs2AjggASAHIAZrNgI0IAEgBSAAazYCMCABQTBqIhYgFiACEAYgASADIAQQBiABIAFBsAwQBiABQeAAaiACEAUgASgCMCEAIAEoAmAhBSABKAIAIQYgASgCNCEHIAEoAmQhCCABKAIEIQkgASgCOCEKIAEoAmghCyABKAIIIQwgASgCPCENIAEoAmwhDiABKAIMIQ8gASgCQCEQIAEoAnAhESABKAIQIRIgASgCRCETIAEoAnQhFCABKAIUIRUgASgCSCECIAEoAnghAyABKAIYIQQgASgCTCEXIAEoAnwhGCABKAIcIRkgASgCUCEaIAEoAoABIRsgASgCICEcIAEgASgCVCABKAKEASABKAIkams2AlQgASAaIBsgHGprNgJQIAEgFyAYIBlqazYCTCABIAIgAyAEams2AkggASATIBQgFWprNgJEIAEgECARIBJqazYCQCABIA0gDiAPams2AjwgASAKIAsgDGprNgI4IAEgByAIIAlqazYCNCABIAAgBSAGams2AjAgAUGgAmoiACAWEBEgAEEgEBogAUHAAmokAAuFAwIDfwF+IwBB4AJrIgYkACAGIAQgBUEAECsaAn8C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IAEpAhA3A1AgAiABKQIoNwNIIAIgASkCIDcDQCADIAJB0ABqIAJBQGsQCCABIAIpAogCNwIoIAEgAikCgAI3AiAgAiABKQIINwM4IAIgASkCADcDMCACIAEpAhg3AyggAiABKQIQNwMgIAMgAkEwaiACQSBqEAggASACKQKIAjcCGCABIAIpAoACNwIQIAIgAikDmAI3AxggAiACKQOQAjcDECACIAEpAgg3AwggAiABKQIANwMAIAMgAkEQaiACEAggASACKQKIAjcCCCABIAIpAoACNwIAIAEgCiABKAAMczYCDCABIAkgASgACHM2AgggASAIIAEoAARzNgIEIAEgCyABKAAAczYCACAAIAcgACgAAHM2AgAgASAGIAEoAERzNgJEIAEgBSABKABIczYCSCABIAQgASgATHM2AkwgAkGgAmokAAvwCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgCDCEHIAEoAjQhCCABKAIQIQkgASgCOCEKIAEoAhQhCyABKAI8IQwgASgCGCENIAFBQGsiDigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAJBKGoQBiAAQShqIgMgAyACEAYgAEH4AGogAkH4AGogAUH4AGoQBiAAIAFB0ABqIAJB0ABqEAYgACgCBCEUIAAoAgghFSAAKAIMIRYgACgCECEXIAAoAhQhGCAAKAIYIRkgACgCHCEaIAAoAiAhGyAAKAIkIRwgACgCLCEBIAAoAlQhAiAAKAIwIQMgACgCWCEFIAAoAjQhBiAAKAJcIQcgACgCOCEIIAAoAmAhCSAAKAI8IQogACgCZCELIAQoAgAhDCAAKAJoIQ0gACgCRCEOIAAoAmwhDyAAKAJIIRAgACgCcCERIAAoAgAhHSAAKAIoIRIgACgCUCETIAAgACgCTCIeIAAoAnQiH2o2AkwgACAQIBFqNgJIIAAgDiAPajYCRCAEIAwgDWo2AgAgACAKIAtqNgI8IAAgCCAJajYCOCAAIAYgB2o2AjQgACADIAVqNgIwIAAgASACajYCLCAAIBIgE2o2AiggACAfIB5rNgIkIAAgESAQazYCICAAIA8gDms2AhwgACANIAxrNgIYIAAgCyAKazYCFCAAIAkgCGs2AhAgACAHIAZrNgIMIAAgBSADazYCCCAAIAIgAWs2AgQgACATIBJrNgIAIAAgACgCnAEiASAcQQF0IgJqNgKcASAAIAAoApgBIgQgG0EBdCIDajYCmAEgACAAKAKUASIFIBpBAXQiBmo2ApQBIAAgACgCkAEiByAZQQF0IghqNgKQASAAIAAoAowBIgkgGEEBdCIKajYCjAEgACAAKAKIASILIBdBAXQiDGo2AogBIAAgACgChAEiDSAWQQF0Ig5qNgKEASAAIAAoAoABIg8gFUEBdCIQajYCgAEgACAAKAJ8IhEgFEEBdCISajYCfCAAIAAoAngiEyAdQQF0IhRqNgJ4IAAgAyAEazYCcCAAIAYgBWs2AmwgACAIIAdrNgJoIAAgCiAJazYCZCAAIAwgC2s2AmAgACAOIA1rNgJcIAAgECAPazYCWCAAIBIgEWs2AlQgACAUIBNrNgJQIAAgAiABazYCdAtAAQN/IAAgASABQfgAaiICEAYgAEEoaiABQShqIgMgAUHQAGoiBBAGIABB0ABqIAQgAhAGIABB+ABqIAEgAxAGCxcAIAAgASACrSADrUIghoQgBCAFEL8BCxcAIAAgASACrSADrUIghoQgBCAFEMABC4UBAQV/AkAgAS0AABA4IgJFDQAgAS0AARA4IgNFDQAgAS0AAhA4IgRFDQAgAS0AAxA4IgVFDQAgAS0ABBA4IgZFDQAgACACQYAIayADQYAIa0EGdHIgBEGACGtBDHRyIAVBgAhrQRJ0ciAGQYAIa0EYdHI2AgAgAUEFag8LIABBADYCAEEAC8MGAQR/IAIgACADQQd0akFAaiIEKQIANwIAIAIgBCkCODcCOCACIAQpAjA3AjAgAiAEKQIoNwIoIAIgBCkCIDcCICACIAQpAhg3AhggAiAEKQIQNwIQIAIgBCkCCDcCCCADBEAgA0EBdCEGIANBBnQhBwNAIAIgAigCACAAIAVBBnRqIgMoAgBzNgIAIAIgAigCBCADKAIEczYCBCACIAIoAgggAygCCHM2AgggAiACKAIMIAMoAgxzNgIMIAIgAigCECADKAIQczYCECACIAIoAhQgAygCFHM2AhQgAiACKAIYIAMoAhhzNgIYIAIgAigCHCADKAIcczYCHCACIAIoAiAgAygCIHM2AiAgAiACKAIkIAMoAiRzNgIkIAIgAigCKCADKAIoczYCKCACIAIoAiwgAygCLHM2AiwgAiACKAIwIAMoAjBzNgIwIAIgAigCNCADKAI0czYCNCACIAIoAjggAygCOHM2AjggAiACKAI8IAMoAjxzNgI8IAIQuwEgASAFQQV0aiIEIAIpAjg3AjggBCACKQIwNwIwIAQgAikCKDcCKCAEIAIpAiA3AiAgBCACKQIYNwIYIAQgAikCEDcCECAEIAIpAgg3AgggBCACKQIANwIAIAIgAigCACADQUBrKAIAczYCACACIAIoAgQgAygCRHM2AgQgAiACKAIIIAMoAkhzNgIIIAIgAigCDCADKAJMczYCDCACIAIoAhAgAygCUHM2AhAgAiACKAIUIAMoAlRzNgIUIAIgAigCGCADKAJYczYCGCACIAIoAhwgAygCXHM2AhwgAiACKAIgIAMoAmBzNgIgIAIgAigCJCADKAJkczYCJCACIAIoAiggAygCaHM2AiggAiACKAIsIAMoAmxzNgIsIAIgAigCMCADKAJwczYCMCACIAIoAjQgAygCdHM2AjQgAiACKAI4IAMoAnhzNgI4IAIgAigCPCADKAJ8czYCPCACELsBIAQgB2oiAyACKQI4NwI4IAMgAikCMDcCMCADIAIpAig3AiggAyACKQIgNwIgIAMgAikCGDcCGCADIAIpAhA3AhAgAyACKQIINwIIIAMgAikCADcCACAFQQJqIgUgBkkNAAsLCyIBAX8gACgCACIBBEAgARAVCyAAQQA2AgggAEIANwIAQQALkR4CEX8UfiMAQYAgayIFJAACQCAARQ0AAkACQAJ/IAAoAiQiAkECRwRAIAEtAAghCSAAKAIEIQ4gASgCAAwBCyAAKAIEIQ4gAS0ACCEJIAEoAgAiDA0BIAlBAk8NAUEACyEMIAVBgBhqQQBBgAgQDBogBUG4EGpBAEHIBxAMGiAFIAytNwOAECABNQIEIRcgBSAJrUL/AYM3A5AQIAUgFzcDiBAgBSAANQIQNwOYECAANQIIIRcgBSACrTcDqBAgBSAXNwOgECAAKAIURQ0BQgAhFwNAIARB/wBxIgNFBEAgBSAXQgF8Ihc3A7AQIAVBAEGACBAMIgJBgAhqQQBBgAgQDBogAkGAGGoiBiACQYAQaiACEHUgBiACIAJBgAhqEHULIA4gBEEDdGogBUGACGogA0EDdGopAwA3AwAgBEEBaiIEIAAoAhQiA0kNAAsMAQsgACgCFCEDQQEhEAsgCSAMckUiEUEBdCIIIANPDQBBfyAAKAIYIgJBAWsgCCACIAEoAgQiDWxqIAMgCWxqIgogAnAbIApqIQQgCUEBaiESIA2tISYDQCAKQQFrIAQgCiAAKAIYIgJwQQFGGyENIAAoAhwhByAQBH8gACgCACgCBCANQQp0agUgDiAIQQN0agspAwAhEyABIAg2AgwgJiATQiCIpyAHcK0gERshGAJ+IAxFBEAgCUUEQCAIQQFrIQRCAAwCCyADIAlsIQQgGCAmUQRAIAQgCGpBAWshBEIADAILIAQgCEVrIQRCAAwBCyAYICZRBH8gCCADQX9zagVBAEF/IAgbIANrCyACaiEEQgAgCUEDRg0AGiADIBJsrQshFyAAKAIAKAIEIgMgAiAYp2xBCnRqIBcgBEEBa618IAStIBNC/////w+DIhcgF35CIIh+QiCIfSACrYKnQQp0aiEEIAMgDUEKdGohAiADIApBCnRqIQcCQCAMBEAgAiAEIAcQdQwBCyAFQYAYaiAEQYAIEAsaQQAhBANAIARBA3QiAyAFQYAYaiILaiIGIAYpAwAgAiADaikDAIU3AwAgCyADQQhyIgZqIg8gDykDACACIAZqKQMAhTcDACALIANBEHIiBmoiDyAPKQMAIAIgBmopAwCFNwMAIAsgA0EYciIDaiIGIAYpAwAgAiADaikDAIU3AwAgBEEEaiIEQYABRw0ACyAFQYAQaiALQYAIEAsaQQAhA0EAIQQDQCAFQYAYaiAEQQd0aiICIAIpAzgiFyACKQMYIhh8IBhCAYZC/v///x+DIBdC/////w+DfnwiGCACKQN4hUIgiSITIAIpA1giFnwgE0L/////D4MgFkIBhkL+////H4N+fCIWIBeFQiiJIhcgGHwgF0L/////D4MgGEIBhkL+////H4N+fCIYIBOFQjCJIhMgAikDKCIUIAIpAwgiFXwgFUIBhkL+////H4MgFEL/////D4N+fCIVIAIpA2iFQiCJIhsgAikDSCIcfCAbQv////8PgyAcQgGGQv7///8fg358IhwgFIVCKIkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhUgG4VCMIkiGyAcfCAbQv////8PgyAcQgGGQv7///8fg358IhwgFIVCAYkiFCACKQMgIh8gAikDACIafCAaQgGGQv7///8fgyAfQv////8Pg358IhogAikDYIVCIIkiICACQUBrIgYpAwAiI3wgIEL/////D4MgI0IBhkL+////H4N+fCIjIB+FQiiJIh8gGnwgH0L/////D4MgGkIBhkL+////H4N+fCIafCAUQv////8PgyAaQgGGQv7///8fg358IhmFQiCJIiQgAikDMCIhIAIpAxAiHXwgHUIBhkL+////H4MgIUL/////D4N+fCIdIAIpA3CFQiCJIiIgAikDUCIefCAiQv////8PgyAeQgGGQv7///8fg358Ih4gIYVCKIkiISAdfCAhQv////8PgyAdQgGGQv7///8fg358Ih0gIoVCMIkiIiAefCAiQv////8PgyAeQgGGQv7///8fg358Ih58ICRC/////w+DIB5CAYZC/v///x+DfnwiJSAUhUIoiSIUIBl8IBRC/////w+DIBlCAYZC/v///x+DfnwiGTcDACACIBkgJIVCMIkiGTcDeCACIBkgJXwgGUL/////D4MgJUIBhkL+////H4N+fCIZNwNQIAIgFCAZhUIBiTcDKCACIB4gIYVCAYkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhUgGiAghUIwiSIahUIgiSIgIBMgFnwgE0L/////D4MgFkIBhkL+////H4N+fCITfCAgQv////8PgyATQgGGQv7///8fg358IhYgFIVCKIkiFCAVfCAUQv////8PgyAVQgGGQv7///8fg358IhkgIIVCMIkiFTcDYCACIBk3AwggAiAVIBZ8IBVC/////w+DIBZCAYZC/v///x+DfnwiFiAUhUIBiTcDMCACIBY3A1ggAiATIBeFQgGJIhcgHXwgF0L/////D4MgHUIBhkL+////H4N+fCITIBuFQiCJIhYgGiAjfCAaQv////8PgyAjQgGGQv7///8fg358IhR8IBZC/////w+DIBRCAYZC/v///x+DfnwiFSAXhUIoiSIXIBN8IBdC/////w+DIBNCAYZC/v///x+DfnwiEzcDECACIBMgFoVCMIkiEzcDaCAGIBMgFXwgE0L/////D4MgFUIBhkL+////H4N+fCIVNwMAIAIgGCAUIB+FQgGJIhN8IBhCAYZC/v///x+DIBNC/////w+DfnwiGCAihUIgiSIWIBx8IBZC/////w+DIBxCAYZC/v///x+DfnwiFCAThUIoiSITIBh8IBNC/////w+DIBhCAYZC/v///x+DfnwiGyAWhUIwiSIYIBR8IBhC/////w+DIBRCAYZC/v///x+DfnwiFjcDSCACIBg3A3AgAiAbNwMYIAIgFSAXhUIBiTcDOCACIBMgFoVCAYk3AyAgBEEBaiIEQQhHDQALA0AgBUGAGGogA0EEdGoiAiACKQOIAyIXIAIpA4gBIhh8IBhCAYZC/v///x+DIBdC/////w+DfnwiGCACKQOIB4VCIIkiEyACKQOIBSIWfCATQv////8PgyAWQgGGQv7///8fg358IhYgF4VCKIkiFyAYfCAXQv////8PgyAYQgGGQv7///8fg358IhggE4VCMIkiEyACKQOIAiIUIAIpAwgiFXwgFUIBhkL+////H4MgFEL/////D4N+fCIVIAIpA4gGhUIgiSIbIAIpA4gEIhx8IBtC/////w+DIBxCAYZC/v///x+DfnwiHCAUhUIoiSIUIBV8IBRC/////w+DIBVCAYZC/v///x+DfnwiFSAbhUIwiSIbIBx8IBtC/////w+DIBxCAYZC/v///x+DfnwiHCAUhUIBiSIUIAIpA4ACIh8gAikDACIafCAaQgGGQv7///8fgyAfQv////8Pg358IhogAikDgAaFQiCJIiAgAikDgAQiI3wgIEL/////D4MgI0IBhkL+////H4N+fCIjIB+FQiiJIh8gGnwgH0L/////D4MgGkIBhkL+////H4N+fCIafCAUQv////8PgyAaQgGGQv7///8fg358IhmFQiCJIiQgAikDgAMiISACKQOAASIdfCAdQgGGQv7///8fgyAhQv////8Pg358Ih0gAikDgAeFQiCJIiIgAikDgAUiHnwgIkL/////D4MgHkIBhkL+////H4N+fCIeICGFQiiJIiEgHXwgIUL/////D4MgHUIBhkL+////H4N+fCIdICKFQjCJIiIgHnwgIkL/////D4MgHkIBhkL+////H4N+fCIefCAkQv////8PgyAeQgGGQv7///8fg358IiUgFIVCKIkiFCAZfCAUQv////8PgyAZQgGGQv7///8fg358Ihk3AwAgAiAZICSFQjCJIhk3A4gHIAIgGSAlfCAZQv////8PgyAlQgGGQv7///8fg358Ihk3A4AFIAIgFCAZhUIBiTcDiAIgAiAeICGFQgGJIhQgFXwgFEL/////D4MgFUIBhkL+////H4N+fCIVIBogIIVCMIkiGoVCIIkiICATIBZ8IBNC/////w+DIBZCAYZC/v///x+DfnwiE3wgIEL/////D4MgE0IBhkL+////H4N+fCIWIBSFQiiJIhQgFXwgFEL/////D4MgFUIBhkL+////H4N+fCIZICCFQjCJIhU3A4AGIAIgGTcDCCACIBUgFnwgFUL/////D4MgFkIBhkL+////H4N+fCIWIBSFQgGJNwOAAyACIBY3A4gFIAIgEyAXhUIBiSIXIB18IBdC/////w+DIB1CAYZC/v///x+DfnwiEyAbhUIgiSIWIBogI3wgGkL/////D4MgI0IBhkL+////H4N+fCIUfCAWQv////8PgyAUQgGGQv7///8fg358IhUgF4VCKIkiFyATfCAXQv////8PgyATQgGGQv7///8fg358IhM3A4ABIAIgEyAWhUIwiSITNwOIBiACIBMgFXwgE0L/////D4MgFUIBhkL+////H4N+fCIVNwOABCACIBggFCAfhUIBiSITfCAYQgGGQv7///8fgyATQv////8Pg358IhggIoVCIIkiFiAcfCAWQv////8PgyAcQgGGQv7///8fg358IhQgE4VCKIkiEyAYfCATQv////8PgyAYQgGGQv7///8fg358IhsgFoVCMIkiGCAUfCAYQv////8PgyAUQgGGQv7///8f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IAAgARAGIAAgABBuIAAgACAEEAYgACAAIAEQBiADQcABaiIEIAAQBSAEIAQgAhAGIAEoAgQhBSABKAIIIQ0gASgCDCEOIAEoAhAhDyABKAIUIRAgASgCGCERIAEoAhwhEiABKAIgIRMgASgCACEUIAMoAsABIQIgAygCxAEhBCADKALIASEGIAMoAswBIQcgAygC0AEhCCADKALUASEJIAMoAtgBIQogAygC3AEhCyADKALgASEMIAMgAygC5AEiFSABKAIkIhZrNgK0ASADIAwgE2s2ArABIAMgCyASazYCrAEgAyAKIBFrNgKoASADIAkgEGs2AqQBIAMgCCAPazYCoAEgAyAHIA5rNgKcASADIAYgDWs2ApgBIAMgBCAFazYClAEgAyACIBRrNgKQASADIBUgFmo2AoQBIAMgDCATajYCgAEgAyALIBJqNgJ8IAMgCiARajYCeCADIAkgEGo2AnQgAyAIIA9qNgJwIAMgByAOajYCbCADIAYgDWo2AmggAyAEIAVqNgJkIAMgAiAUajYCYCADQTBqIgUgAUHgDBAGIAMgFSADKAJUajYCVCADIAwgAygCUGo2AlAgAyALIAMoAkxqNgJMIAMgCiADKAJIajYCSCADIAkgAygCRGo2AkQgAyAIIAMoAkBqNgJAIAMgByADKAI8ajYCPCADIAYgAygCOGo2AjggAyAEIAMoAjRqNgI0IAMgAiADKAIwajYCMCADIANBkAFqEBEgA0EgEBohDiADIANB4ABqEBEgA0EgEBohDSADIAUQESADQSAQGiEBIAMgAEHgDBAGIAAoAgQhDCAAKAIIIQsgACgCDCEKIAAoAhAhCSAAKAIUIQggACgCGCEHIAAoAhwhBiAAKAIgIQQgACgCACEFIAMoAgAhDyADKAIEIRAgAygCCCERIAMoAgwhEiADKAIQIRMgAygCFCEUIAMoAhghFSADKAIcIRYgAygCICEXIABBACABIA1yayIBIAAoAiQiAiADKAIkc3EgAnMiAjYCJCAAIAQgBCAXcyABcXMiBDYCICAAIAYgBiAWcyABcXMiBjYCHCAAIAcgByAVcyABcXMiBzYCGCAAIAggCCAUcyABcXMiCDYCFCAAIAkgCSATcyABcXMiCTYCECAAIAogCiAScyABcXMiCjYCDCAAIAsgCyARcyABcXMiCzYCCCAAIAwg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DigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAIQBiAAQShqIgMgAyACQShqEAYgAEH4AGogAkHQAGogAUH4AGoQBiABKAJUIRQgASgCWCEVIAEoAlwhFiABKAJgIRcgASgCZCEYIAEoAmghGSABKAJsIRogASgCcCEbIAEoAnQhHCAAKAIsIQIgACgCVCEDIAAoAjAhBSAAKAJYIQYgACgCNCEHIAAoAlwhCCAAKAI4IQkgACgCYCEKIAAoAjwhCyAAKAJkIQwgBCgCACENIAAoAmghDiAAKAJEIQ8gACgCbCEQIAAoAkghESAAKAJwIRIgASgCUCEdIAAoAighASAAKAJQIRMgACAAKAJMIh4gACgCdCIfajYCTCAAIBEgEmo2AkggACAPIBBqNgJEIAQgDSAOajYCACAAIAsgDGo2AjwgACAJIApqNgI4IAAgByAIajYCNCAAIAUgBmo2AjAgACACIANqNgIsIAAgASATajYCKCAAIB8gHms2AiQgACASIBFrNgIgIAAgECAPazYCHCAAIA4gDWs2AhggACAMIAtrNgIUIAAgCiAJazYCECAAIAggB2s2AgwgACAGIAVrNgIIIAAgAyACazYCBCAAIBMgAWs2AgAgACAcQQF0IgEgACgCnAEiAms2ApwBIAAgG0EBdCIEIAAoApgBIgNrNgKYASAAIBpBAXQiBSAAKAKUASIGazYClAEgACAZQQF0IgcgACgCkAEiCGs2ApABIAAgGEEBdCIJIAAoAowBIgprNgKMASAAIBdBAXQiCyAAKAKIASIMazYCiAEgACAWQQF0Ig0gACgChAEiDms2AoQBIAAgFUEBdCIPIAAoAoABIhBrNgKAASAAIBRBAXQiESAAKAJ8IhJrNgJ8IAAgHUEBdCITIAAoAngiFGs2AnggACADIARqNgJwIAAgBSAGajYCbCAAIAcgCGo2AmggACAJIApqNgJkIAAgCyAMajYCYCAAIA0gDmo2AlwgACAPIBBqNgJYIAAgESASajYCVCAAIBMgFGo2AlAgACABIAJqNgJ0C64IAQN/IwBBkAFrIgMkACADQeAAaiIEIAEQBSADQTBqIgIgBBAFIAIgAhAFIAIgASACEAYgBCAEIAIQBiAEIAQQBSAEIAIgBBAGIAIgBBAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAQgAiAEEAYgAiAEEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACIAQQBiADIAIQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSADIAMQBSACIAMgAhAGIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAQgAiAEEAYgAiAEEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACIAQQBiADIAIQBUEBIQIDQCADIAMQBSACQQFqIgJB5ABHDQALIANBMGoiAiADIAIQBiACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSADQeAAaiIEIAIgBBAGIAQgBBAFIAQgBBAFIAAgBCABEAYgA0GQAWokAAumBAIOfgp/IAAoAiQhEiAAKAIgIRMgACgCHCEUIAAoAhghFSAAKAIUIREgAkIQWgRAIAAtAFBFQRh0IRYgACgCECIXrSEPIAAoAgwiGK0hDSAAKAIIIhmtIQsgACgCBCIarSEJIBpBBWytIRAgGUEFbK0hDiAYQQVsrSEMIBdBBWytIQogADUCACEIA0AgASgAA0ECdkH///8fcSAVaq0iAyANfiABKAAAQf///x9xIBFqrSIEIA9+fCABKAAGQQR2Qf///x9xIBRqrSIFIAt+fCABKAAJQQZ2IBNqrSIGIAl+fCASIBZqIAEoAAxBCHZqrSIHIAh+fCADIAt+IAQgDX58IAUgCX58IAYgCH58IAcgCn58IAMgCX4gBCALfnwgBSAIfnwgBiAKfnwgByAMfnwgAyAIfiAEIAl+fCAFIAp+fCAGIAx+fCAHIA5+fCADIAp+IAQgCH58IAUgDH58IAYgDn58IAcgEH58IgNCGohC/////w+DfCIEQhqIQv////8Pg3wiBUIaiEL/////D4N8IgZCGohC/////w+DfCIHQhqIp0EFbCADp0H///8fcWoiEUEadiAEp0H///8fcWohFSAFp0H///8fcSEUIAan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aIVCIIkiCyABKQNIIgx8IAxCAYZC/v///x+DIAtC/////w+DfnwiDCADhUIoiSIDIAZ8IANC/////w+DIAZCAYZC/v///x+DfnwiBiALhUIwiSILIAx8IAtC/////w+DIAxCAYZC/v///x+DfnwiDCADhUIBiSIDIAEpAyAiDyABKQMAIgp8IApCAYZC/v///x+DIA9C/////w+DfnwiCiABKQNghUIgiSIQIAFBQGsiFikDACITfCATQgGGQv7///8fgyAQQv////8Pg358IhMgD4VCKIkiDyAKfCAPQv////8PgyAKQgGGQv7///8fg358Igp8IANC/////w+DIApCAYZC/v///x+DfnwiCYVCIIkiFCABKQMwIhEgASkDECINfCANQgGGQv7///8fgyARQv////8Pg358Ig0gASkDcIVCIIkiEiABKQNQIg58IA5CAYZC/v///x+DIBJC/////w+DfnwiDiARhUIoiSIRIA18IBFC/////w+DIA1CAYZC/v///x+DfnwiDSAShUIwiSISIA58IBJC/////w+DIA5CAYZC/v///x+DfnwiDnwgFEL/////D4MgDkIBhkL+////H4N+fCIVIAOFQiiJIgMgCXwgA0L/////D4MgCUIBhkL+////H4N+fCIJNwMAIAEgCSAUhUIwiSIJNwN4IAEgCSAVfCAJQv////8PgyAVQgGGQv7///8fg358Igk3A1AgASADIAmFQgGJNwMoIAEgBCAFfCAEQv////8PgyAFQgGGQv7///8fg358IgQgDiARhUIBiSIFIAZ8IAVC/////w+DIAZCAYZC/v///x+DfnwiAyAKIBCFQjCJIgaFQiCJIgp8IARCAYZC/v///x+DIApC/////w+DfnwiECAFhUIoiSIFIAN8IAVC/////w+DIANCAYZC/v///x+DfnwiCSAKhUIwiSIDNwNgIAEgCTcDCCABIAUgAyAQfCADQv////8PgyAQQgGGQv7///8fg358IgWFQgGJNwMwIAEgBTcDWCABIAQgCIVCAYkiCCANfCAIQv////8PgyANQgGGQv7///8fg358IgQgC4VCIIkiBSAGIBN8IAZC/////w+DIBNCAYZC/v///x+DfnwiA3wgBUL/////D4MgA0IBhkL+////H4N+fCIGIAiFQiiJIgggBHwgCEL/////D4MgBEIBhkL+////H4N+fCIENwMQIAEgBCAFhUIwiSIENwNoIBYgBCAGfCAEQv////8PgyAGQgGGQv7///8fg358IgY3AwAgASAHIAMgD4VCAYkiBHwgB0IBhkL+////H4MgBEL/////D4N+fCIHIBKFQiCJIgUgDHwgBUL/////D4MgDEIBhkL+////H4N+fCIDIASFQiiJIgQgB3wgBEL/////D4MgB0IBhkL+////H4N+fCILIAWFQjCJIgcgA3wgB0L/////D4MgA0IBhkL+////H4N+fCIFNwNIIAEgBzcDcCABIAs3AxggASAGIAiFQgGJNwM4IAEgBCAFhUIBiTcDICAAQQFqIgBBCEcNAAtBACEAA0AgGEGACGogAEEEdGoiASABKQOIAyIIIAEpA4gBIgd8IAdCAYZC/v///x+DIAhC/////w+DfnwiByABKQOIB4VCIIkiBCABKQOIBSIFfCAFQgGGQv7///8fgyAEQv////8Pg358IgUgCIVCKIkiCCAHfCAIQv////8PgyAHQgGGQv7///8fg358IgcgBIVCMIkiBCABKQOIAiIDIAEpAwgiBnwgBkIBhkL+////H4MgA0L/////D4N+fCIGIAEpA4gGhUIgiSILIAEpA4gEIgx8IAxCAYZC/v///x+DIAtC/////w+DfnwiDCADhUIoiSIDIAZ8IANC/////w+DIAZCAYZC/v///x+DfnwiBiALhUIwiSILIAx8IAtC/////w+DIAxCAYZC/v///x+DfnwiDCADhUIBiSIDIAEpA4ACIg8gASkDACIKfCAKQgGGQv7///8fgyAPQv////8Pg358IgogASkDgAaFQiCJIhAgASkDgAQiE3wgE0IBhkL+////H4MgEEL/////D4N+fCITIA+FQiiJIg8gCnwgD0L/////D4MgCkIBhkL+////H4N+fCIKfCADQv////8PgyAKQgGGQv7///8fg358IgmFQiCJIhQgASkDgAMiESABKQOAASINfCANQgGGQv7///8fgyARQv////8Pg358Ig0gASkDgAeFQiCJIhIgASkDgAUiDnwgDkIBhkL+////H4MgEkL/////D4N+fCIOIBGFQiiJIhEgDXwgEUL/////D4MgDUIBhkL+////H4N+fCINIBKFQjCJIhIgDnwgEkL/////D4MgDkIBhkL+////H4N+fCIOfCAUQv////8PgyAOQgGGQv7///8fg358IhUgA4VCKIkiAyAJfCADQv////8PgyAJQgGGQv7///8fg358Igk3AwAgASAJIBSFQjCJIgk3A4gHIAEgCSAVfCAJQv////8PgyAVQgGGQv7///8fg358Igk3A4AFIAEgAyAJhUIBiTcDiAIgASAEIAV8IARC/////w+DIAVCAYZC/v///x+DfnwiBCAOIBGFQgGJIgUgBnwgBUL/////D4MgBkIBhkL+////H4N+fCIDIAogEIVCMIkiBoVCIIkiCnwgBEIBhkL+////H4MgCkL/////D4N+fCIQIAWFQiiJIgUgA3wgBUL/////D4MgA0IBhkL+////H4N+fCIJIAqFQjCJIgM3A4AGIAEgCTcDCCABIAUgAyAQfCADQv////8PgyAQQgGGQv7///8fg358IgWFQgGJNwOAAyABIAU3A4gFIAEgBCAIhUIBiSIIIA18IAhC/////w+DIA1CAYZC/v///x+DfnwiBCALhUIgiSIFIAYgE3wgBkL/////D4MgE0IBhkL+////H4N+fCIDfCAFQv////8PgyADQgGGQv7///8fg358IgYgCIVCKIkiCCAEfCAIQv////8PgyAEQgGGQv7///8fg358IgQ3A4ABIAEgBCAFhUIwiSIENwOIBiABIAQgBnwgBEL/////D4MgBkIBhkL+////H4N+fCIGNwOABCABIAcgAyAPhUIBiSIEfCAHQgGGQv7///8fgyAEQv////8Pg358IgcgEoVCIIkiBSAMfCAFQv////8PgyAMQgGGQv7///8fg358IgMgBIVCKIkiBCAHfCAEQv////8PgyAHQgGGQv7///8fg358IgsgBYVCMIkiByADfCAHQv////8PgyADQgGGQv7///8fg358IgU3A4gEIAEgBzcDgAcgASALNwOIASABIAYgCIVCAYk3A4gDIAEgBCAFhUIBiTcDgAIgAEEBaiIAQQhHDQALIAIgGEGACBALIQFBACEAA0AgASAAQQN0IgJqIhYgFikDACAYQYAIaiIZIAJqKQMAhTcDACABIAJBCHIiFmoiFyAXKQMAIBYgGWopAwCFNwMAIAEgAkEQciIWaiIXIBcpAwAgGEGACGogFmopAwCFNwMAIAEgAkEYciICaiIWIBYpAwAgGEGACGogAmop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AnA3A+ADIAJBgARqIgMgAkHwA2ogAkHgA2oQCCABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJYNwPYAyACIAEpAlA3A9ADIAIgASkCaDcDyAMgAiABKQJgNwPAAyADIAJB0ANqIAJBwANqEAggASACKQKIBDcCaCABIAIpAoAENwJgIAIgASkCSDcDuAMgAiABQUBrIgApAgA3A7ADIAIgASkCWDcDqAMgAiABKQJQNwOgAyADIAJBsANqIAJBoANqEAggASACKQKIBDcCWCABIAIpAoAENwJQIAIgASkCODcDmAMgAiABKQIwNwOQAyACIAEpAkg3A4gDIAIgACkCADcDgAMgAyACQZADaiACQYADahAIIAEgAikCiAQ3AkggACACKQKABDcCACACIAEpAig3A/gCIAIgASkCIDcD8AIgAiABKQI4NwPoAiACIAEpAjA3A+ACIAMgAkHwAmogAkHgAmoQCCABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIYNwPYAiACIAEpAhA3A9ACIAIgASkCKDcDyAIgAiABKQIgNwPAAiADIAJB0AJqIAJBwAJqEAggASACKQKIBDcCKCABIAIpAoAENwIgIAIgASkCCDcDuAIgAiABKQIANwOwAiACIAEpAhg3A6gCIAIgASkCEDcDoAIgAyACQbACaiACQaACahAIIAEgAikCiAQ3AhggASACKQKABDcCECACIAIpA5gENwOYAiACIAIpA5AENwOQAiACIAEpAgg3A4gCIAIgASkCADcDgAIgAyACQZACaiACQYACahAIIAEgAikCiAQ3AgggASACKQKABDcCACABIBIgASgADHM2AgwgASARIAEoAAhzNgIIIAEgECABKAAEczYCBCABIBMgASgAAHM2AgAgACAPIAAoAABzNgIAIAEgDiABKABEczYCRCABIA0gASgASHM2AkggASAMIAEoAExzNgJMIAIgASkCeDcDmAQgAiABKQJwNwOQBCACIAEpAmg3A/gBIAIgASkCYDcD8AEgAiABKQJ4NwPoASACIAEpAnA3A+ABIAMgAkHwAWogAkHgAWoQCCABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJYNwPYASACIAEpAlA3A9ABIAIgASkCaDcDyAEgAiABKQJgNwPAASADIAJB0AFqIAJBwAFqEAggASACKQKIBDcCaCABIAIpAoAENwJgIAIgASkCSDcDuAEgAiAAKQIANwOwASACIAEpAlg3A6gBIAIgASkCUDcDoAEgAyACQbABaiACQaABahAIIAEgAikCiAQ3AlggASACKQKABDcCUCACIAEpAjg3A5gBIAIgASkCMDcDkAEgAiABKQJINwOIASACIAApAgA3A4ABIAMgAkGQAWogAkGAAWoQCCABIAIpAogENwJIIAAgAikCgAQ3AgAgAiABKQIoNwN4IAIgASkCIDcDcCACIAEpAjg3A2ggAiABKQIwNwNgIAMgAkHwAGogAkHgAGoQCCABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIYNwNYIAIgASkCEDcDUCACIAEpAig3A0ggAiABKQIgNwNAIAMgAkHQAGogAkFAaxAIIAEgAikCiAQ3AiggASACKQKABDcCICACIAEpAgg3AzggAiABKQIANwMwIAIgASkCGDcDKCACIAEpAhA3AyAgAyACQTBqIAJBIGoQCCABIAIpAogENwIYIAEgAikCgAQ3AhAgAiACKQOYBDcDGCACIAIpA5AENwMQIAIgASkCCDcDCCACIAEpAgA3AwAgAyACQRBqIAIQCCABIAIpAogENwIIIAEgAikCgAQ3AgAgASALIAEoAAxzNgIMIAEgCiABKAAIczYCCCABIAkgASgABHM2AgQgASAIIAEoAABzNgIAIAAgByAAKAAAczYCACABIAYgASgARHM2AkQgASAFIAEoAEhzNgJIIAEgBCABKABMczYCTCACQaAEaiQAC70JARF/IwBBoAJrIgMkACABKAAEIRAgASgACCERIAEoAAwhEiAAKAAEIQsgACgACCEMIAAoAAwhDSABKAAAIRMgAkHwAGoiASAAKAAAIg5BgIKEEHMiADYCACACQeAAaiIGIA5B2/vgqAVzNgIAIAJB0ABqIgcgADYCACACQUBrIgAgDiATcyIFNgIAIAJCoKLEkbSurZRdNwI4IAJBMGoiCELb++Co1c3wl3E3AgAgAkKVxNzJhbL6vOIANwIoIAJBIGoiCUKAgoSQsKCBhA03AgAgAkKgosSRtK6tlF03AhggAkEQaiIKQtv74KjVzfCXcTcCACACIAU2AgAgAiANQZDT55MGcyIFNgJ8IAIgDEGVxNzJBXMiBDYCeCACIAtBg4qg6ABzIg82AnQgAiANQfPqoul9czYCbCACIAxBoKLEkQRzNgJoIAIgC0HthL+Jf3M2AmQgAiAFNgJcIAIgBDYCWCACIA82AlQgAiANIBJzIgU2AkwgAiAMIBFzIgQ2AkggAiALIBBzIg82AkQgAiAFNgIMIAIgBDYCCCACIA82AgRBACEFA0AgAyABKQIINwOYAiADIAEpAgA3A5ACIAMgBikCCDcD+AEgAyAGKQIANwPwASADIAEpAgg3A+gBIAMgASkCADcD4AEgA0GAAmoiBCADQfABaiADQeABahAIIAEgAykCiAI3AgggASADKQKAAjcCACADIAcpAgg3A9gBIAMgBykCADcD0AEgAyAGKQIINwPIASADIAYpAgA3A8ABIAQgA0HQAWogA0HAAWoQCCAGIAMpAogCNwIIIAYgAykCgAI3AgAgAyAAKQIINwO4ASADIAApAgA3A7ABIAMgBykCCDcDqAEgAyAHKQIANwOgASAEIANBsAFqIANBoAFqEAggByADKQKIAjcCCCAHIAMpAoACNwIAIAMgCCkCCDcDmAEgAyAIKQIANwOQASADIAApAgg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAAgAykCiAI3AgggACADKQKAAjcCACADIAkpAgg3A3ggAyAJKQIANwNwIAMgCCkCCDcDaCADIAgpAgA3A2AgBCADQfAAaiADQeAAahAIIAggAykCiAI3AgggCCADKQKAAjcCACADIAopAgg3A1ggAyAKKQIANwNQIAMgCSkCCDcDSCADIAkpAgA3A0AgBCADQdAAaiADQUBrEAggCSADKQKIAjcCCCAJIAMpAoACNwIAIAMgAikCCDcDOCADIAIpAgA3AzAgAyAKKQIINwMoIAMgCikCADcDICAEIANBMGogA0EgahAIIAogAykCiAI3AgggCiADKQKAAjcCACADIAMpA5gCNwMYIAMgAykDkAI3AxAgAyACKQIINwMIIAMgAikCADcDACAEIANBEGogAxAIIAIgAykCiAI3AgggAiADKQKAAjcCACACIAIoAAwgEnM2AgwgAiACKAAIIBFzNgIIIAIgAigABCAQczYCBCACIAIoAAAgE3M2AgAgACAAKAAAIA5zNgIAIAIgAigARCALczYCRCACIAIoAEggDHM2AkggAiACKABMIA1zNgJMIAVBAWoiBUEKRw0ACyADQaACaiQACxAAIAAgAUGMlwIoAgARAAAL0g8BJH8jAEHwBGsiAiQAIAJB4ANqIgMgARAFIANB4AwgAxAGIAIgAigChAQiBzYClAIgAiACKAKABCIINgKQAiACIAIoAvwDIgk2AowCIAIgAigC+AMiCjYCiAIgAiACKAL0AyILNgKEAiACIAIoAvADIgw2AoACIAIgAigC7AMiDTYC/AEgAiACKALoAyIONgL4ASACIAIoAuQDIgU2AvQBIAIgAigC4AMiBkEBajYC8AEgAkHwAWoiBCAEQbCJAhAGIAIgB0HM5N8FazYC1AMgAiAIQYCS9QhrNgLQAyACIAlB55zGAWs2AswDIAIgCkHEhv8CazYCyAMgAiALQeiumARrNgLEAyACIAxBqYAHajYCwAMgAiANQY+UqANqNgK8AyACIA5Bw6KqB2s2ArgDIAIgBUGF5c0GajYCtAMgAiAGQcqOmgVrNgKwAyACQcABaiIZIANBsAwQBiACQQAgAigC5AFrNgLkASACQQAgAigC4AFrNgLgASACQQAgAigC3AFrNgLcASACQQAgAigC2AFrNgLYASACQQAgAigC1AFrNgLUASACQQAgAigC0AFrNgLQASACQQAgAigCzAFrNgLMASACQQAgAigCyAFrNgLIASACQQAgAigCxAFrNgLEASACIAIoAsABQX9zNgLAASAZIBkgAkGwA2oQBiACQYADaiIiIAQgGRBqIQMgAkHQAmoiBCAiIAEQBiACQcAEaiIkIAQQESACLQDABCElIAIoAqQDIRogAigC9AIhBCACKAKgAyEbIAIoAvACIRAgAigCnAMhHCACKALsAiERIAIoApgDIR0gAigC6AIhEiACKAKUAyEeIAIoAuQCIRMgAigCkAMhHyACKALgAiEUIAIoAowDISAgAigC3AIhFSACKAKIAyEhIAIoAtgCIRYgAigChAMhDyACKALUAiEXIAIoAoADISMgAigC0AIhGCACIAcgA0EBayIBcTYC5AQgAiABIAhxNgLgBCACIAEgCXE2AtwEIAIgASAKcTYC2AQgAiABIAtxNgLUBCACIAEgDHE2AtAEIAIgASANcTYCzAQgAiABIA5xNgLIBCACIAEgBXE2AsQEIAIgBkEAIANrcjYCwAQgAiAjICNBACAYQQAgJUEBcWsiAyAYQQAg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IAIgASADEAYgAkGQBmoiASACEAUgASABEAUgAkGQB2oiBSACIAEQBiACQcAEaiIDIAUQBSADIAMQBSADIAMQBSADIAMQBSACQZAEaiIBIAUgAxAGIAEgARAFIAEgARAFIAEgASACEAYgAiACKQOwBDcDgAQgAiACKQOoBDcD+AMgAiACKQOgBDcD8AMgAiACKQOYBDcD6AMgAiACKQOQBDcD4AMgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAJB4ANqIgMQBiABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEgAxAGIAIgAikDsAQ3A9ADIAIgAikDqAQ3A8gDIAIgAikDoAQ3A8ADIAIgAikDmAQ3A7gDIAIgAikDkAQ3A7ADIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgASACQbADaiIDEAYgAiACKQOwBDcD0AMgAiACKQOoBDcDyAMgAiACKQOgBDcDwAMgAiACKQOYBDcDuAMgAiACKQOQBDcDsAMgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAMQBiACIAIpA7AENwPQAyACIAIpA6gENwPIAyACIAIpA6AENwPAAyACIAIpA5gENwO4AyACIAIpA5AENwOwAwNAIAJBkARqIgEgARAFIARBAWoiBEH4AEcNAAsgASABIAJBsANqEAYgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABIAJB4ANqEAYgASABEAUgASABEAUgASABEAUgASABIAIQBiABIAEQBSACQZADaiABEBEgAigCgAIhAyACKAKEAiEEIAIoAogCIQUgAigCjAIhBiACKAKQAiEHIAIoApQCIQggAigCmAIhCSACKAKcAiEKIAIoAqACIQsgAkEAIAItAJEDQQFxayIBIAIoAqQCIgxBACAMa3NxIAxzIgw2ApQFIAIgCyALQQAgC2tzIAFxcyILNgKQBSACIAogCkEAIAprcyABcXMiCjYCjAUgAiAJIAlBACAJa3MgAXFzIgk2AogFIAIgCCAIQQAgCGtzIAFxcyIINgKEBSACIAcgB0EAIAdrcyABcXMiBzYCgAUgAiAGIAZBACAGa3MgAXFzIgY2AvwEIAIgBSAFQQAgBWtzIAFxcyIFNgL4BCACIAQgBEEAIARrcyABcXMiBDYC9AQgAiADIANBACADa3MgAXFzIAFBhtodcWsiAUEBajYC8AQgAiAMNgK0BiACIAs2ArAGIAIgCjYCrAYgAiAJNgKoBiACIAg2AqQGIAIgBzYCoAYgAiAGNgKcBiACIAU2ApgGIAIgBDYClAYgAiABQQFrNgKQBiACIAJB8ARqEDUgAkGQB2oiASACQZAGaiACEAYgACABEBEgACAALQAfIBByOgAfIAIgABA0BEAQiwEACyACIAIpAiA3A7AGIAIgAikCGDcDqAYgAiACKQIQNwOgBiACIAIpAgg3A5gGIAIgAikCMDcDwAYgAiACKQI4NwPIBiACIAJBQGspAgA3A9AGIAIgAikCSDcD2AYgAiACKQIANwOQBiACIAIpAig3A7gGIAIgAikCcDcDgAcgAiACKQJoNwP4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QQFrQR92ECogACABQcAHaiAEQQdzQf8BcUEBa0EfdhAqIAAgAUHgCGogBEEIc0H/AXFBAWtBH3YQKiADIAApAkg3AyAgAyAAQUBrKQIANwMYIAMgACkCODcDECADIAApAjA3AwggAyAAKQIoNwMAIAMgACkCIDcDSCADQUBrIAApAhg3AwAgAyAAKQIQNwM4IAMgACkCCDcDMCADIAApAgA3AyggAyAAKQJYNwNYIAMgACkCYDcDYCADIAApAmg3A2ggAyAAKQJwNwNwIAMgACkCUDcDUCAAKAJ8IQEgACgCgAEhBCAAKAKEASEFIAAoAogBIQYgACgCjAEhByAAKAKQASEIIAAoApQBIQkgACgCmAEhCiAAKAJ4IQsgA0EAIAAoApwBazYCnAEgA0EAIAprNgKYASADQQAgCWs2ApQBIANBACAIazYCkAEgA0EAIAdrNgKMASADQQAgBms2AogBIANBACAFazYChAEgA0EAIARrNgKAASADQQAgAWs2AnwgA0EAIAtrNgJ4IAAgAyACQYABcUEHdhAqIANBoAFqJAALjhEBE38jAEHAH2siAyQAIANBoAFqIAIQECADQYAeaiIGIAIpAiA3AwAgA0H4HWoiByACKQIYNwMAIANB8B1qIgkgAikCEDcDACADQegdaiIMIAIpAgg3AwAgAyACKQIANwPgHSADQZAeaiINIAIpAjA3AwAgA0GYHmoiDiACKQI4NwMAIANBoB5qIg8gAkFAaykCADcDACADQageaiIQIAIpAkg3AwAgAyACKQIoNwOIHiADQbgeaiIRIAIpAlg3AwAgA0HAHmoiEiACKQJgNwMAIANByB5qIhMgAikCaDcDACADQdAeaiIUIAIpAnA3AwAgAyACKQJQNwOwHiADQcgbaiIIIANB4B1qIhUQGCADQegSaiILIAggA0HAHGoiBBAGIANBkBNqIANB8BtqIgUgA0GYHGoiChAGIANBuBNqIAogBBAGIANB4BNqIAggBRAGIANBwAJqIgQgCxAQIANBqBpqIgggAiAEEBMgA0HIEWoiCyAIIANBoBtqIgQQBiADQfARaiADQdAaaiIFIANB+BpqIgoQBiADQZgSaiAKIAQQBiADQcASaiAIIAUQBiADQeADaiALEBAgBiADQYgTaikCADcDACAHIANBgBNqKQIANwMAIAkgA0H4EmopAgA3AwAgDCADQfASaikCADcDACANIANBmBNqKQIANwMAIA4gA0GgE2opAgA3AwAgDyADQagTaikCADcDACAQIANBsBNqKQIANwMAIAMgAykC6BI3A+AdIAMgAykCkBM3A4geIBQgA0HYE2opAgA3AwAgEyADQdATaikCADcDACASIANByBNqKQIANwMAIBEgA0HAE2opAgA3AwAgAyADKQK4EzcDsB4gA0GIGWoiCCAVEBggA0GoEGoiCyAIIANBgBpqIgQQBiADQdAQaiADQbAZaiIFIANB2BlqIgoQBiADQfgQaiAKIAQQBiADQaARaiAIIAUQBiADQYAFaiIEIAsQECADQegXaiIIIAIgBBATIANBiA9qIgsgCCADQeAYaiIEEAYgA0GwD2ogA0GQGGoiBSADQbgYaiIKEAYgA0HYD2ogCiAEEAYgA0GAEGogCCAFEAYgA0GgBmogCxAQIAYgA0HoEWopAgA3AwAgByADQeARaikCADcDACAJIANB2BFqKQIANwMAIAwgA0HQEWopAgA3AwAgDSADQfgRaikCADcDACAOIANBgBJqKQIANwMAIA8gA0GIEmopAgA3AwAgECADQZASaikCADcDACADIAMpAsgRNwPgHSADIAMpAvARNwOIHiAUIANBuBJqKQIANwMAIBMgA0GwEmopAgA3AwAgEiADQagSaikCADcDACARIANBoBJqKQIANwMAIAMgAykCmBI3A7AeIANByBZqIgggFRAYIANB6A1qIgsgCCADQcAXaiIEEAYgA0GQDmogA0HwFmoiBSADQZgXaiIKEAYgA0G4DmogCiAEEAYgA0HgDmogCCAFEAYgA0HAB2oiBCALEBAgA0GoFWoiCiACIAQQEyADQcgMaiIIIAogA0GgFmoiAhAGIANB8AxqIANB0BVqIgQgA0H4FWoiBRAGIANBmA1qIAUgAhAGIANBwA1qIAogBBAGIANB4AhqIAgQECAGIANByBBqKQIANwMAIAcgA0HAEGopAgA3AwAgCSADQbgQaikCADcDACAMIANBsBBqKQIANwMAIA0gA0HYEGopAgA3AwAgDiADQeAQaikCADcDACAPIANB6BBqKQIANwMAIBAgA0HwEGopAgA3AwAgAyADKQKoEDcD4B0gAyADKQLQEDcDiB4gFCADQZgRaikCADcDACATIANBkBFqKQIA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azYCACAAQQAgACgCJGs2AiQgAEEAIAAoAiBrNgIgIABBACAAKAIcazYCHCAAQQAgACgCGGs2AhggAEEAIAAoAhRrNgIUIABBACAAKAIQazYCECAAQQAgACgCDGs2AgwgAEEAIAAoAghrNgIIIABBACAAKAIEazYCBAsgAEH4AGogACAGEAZBACEHCyACQcACaiQAIAcLBQBBgAILEAAgACABQYSXAigCABEAAAsQACAAIAFB/JYCKAIAEQAACy0BAX4gAq0gA61CIIaEIgZCEFoEfyAAIAFBEGogASAGQhB9IAQgBRBeBUF/CwsYACAAIAEgAiADrSAErUIghoQgBSAGEF4LGAAgACABIAIgA60gBK1CIIaEIAUgBhBPCxYAIAAgASACrSADrUIghoQgBCAFEHkLFQAgACABrSACrUIghoQgAyAEEM0BCxYAIAAgASACrSADrUIghoQgBEEAEHYLFwAgACABIAIgA60gBK1CIIaEIAUQhQMLFwAgACABIAIgA60gBK1CIIaEIAUQgwMLFwAgACABIAIgA60gBK1CIIaEIAUQhAMLFQAgACABIAKtIAOtQiCGhCAEEOkCCx8AIAAgASACrSADrUIghoQgBK0gBa1CIIaEIAYQ0QELGgAgACABIAKtIAOtQiCGhEGAlwIoAgARAgALHAAgACABIAKtIAOtQiCGhCAEQfiWAigCABERAAscACAAIAEgAq0gA61CIIaEIARB9JYCKAIAEREACxcAIAAgASACrSADrUIghoQgBCAFEOoCCxIAIAAgASACrSADrUIghoQQRwsYACAAIAEgAiADrSAErUIghoQgBSAGEGELLQEBfiACrSADrUIghoQiBkIQWgR/IAAgAUEQaiABIAZCEH0gBCAFEF0FQX8LCxgAIAAgASACIAOtIAStQiCGhCAFIAYQXQsYACAAIAEgAiADrSAErUIghoQgBSAGEE4LGQAgACABIAKtIAOtQiCGhCAEIAUgBhD3AgsZACAAIAEgAq0gA61CIIaEIAQgBSAGEPgCCxIAIAAgASACrSADrUIghoQQJgsVACAAIAEgAq0gA61CIIaEIAQQ4gILFQAgACABIAKtIAOtQiCGhCAEEOMCC4wBAQF/IwBBEGsiAiAANgIMIAIgATYCCEEAIQAgAkEANgIEA0AgAiACKAIEIAIoAgwgAGotAAAgAigCCCAAai0AAHNyNgIEIAIgAigCBCAAQQFyIgEgAigCDGotAAAgAigCCCABai0AAHNyNgIEIABBAmoiAEHAAEcNAAsgAigCBEEBa0EIdkEBcUEBawvaAgECfyMAQZADayIIJAAgCEEANgIEIAhBEGoiCSAGIAdBABAbGiAIIAYpABA3AgggCEHQAGoiB0LAACAIQQRqIAkQMxogCEGQAWoiBiAHQfyWAigCABEAABogB0HAABAJIAYgBCAFQYCXAigCABECABogBkHglgJCACAFfUIPg0GAlwIoAgARAgAaIAYgASACQYCXAigCABECABogBkHglgJCACACfUIPg0GAlwIoAgARAgAaIAggBTcDSCAGIAhByABqIgRCCEGAlwIoAgARAgAaIAggAjcDSCAGIARCCEGAlwIoAgARAgAaIAYgCEEwaiIEQYSXAigCABEAABogBkGAAhAJIAQgAxA3IQYgBEEQEAkCQCAARQ0AIAYEQCAAQQAgAqcQDBpBfyEGDAELIAAgASACIAhBBGogCEEQahDqAUEAIQYLIAhBEGpBIBAJIAhBkANqJAAgBgusAgEDfyMAQYADayIJJAAgCUEANgIEIAlBEGoiCiAHIAhBABAbGiAJIAcpABA3AgggCUFAayIIQsAAIAlBBGoiCyAKEDMaIAlBgAFqIgcgCEH8lgIoAgARAAAaIAhBwAAQCSAHIAUgBkGAlwIoAgARAgAaIAdB4JYCQgAgBn1CD4NBgJcCKAIAEQIAGiAAIAMgBCALIAoQ6gEgByAAIARBgJcCKAIAEQIAGiAHQeCWAkIAIAR9Qg+DQYCXAigCABECABogCSAGNwM4IAcgCUE4aiIAQghBgJcCKAIAEQIAGiAJIAQ3AzggByAAQghBgJcCKAIAEQIAGiAHIAFBhJcCKAIAEQAAGiAHQYACEAkgAgRAIAJCEDcDAAsgCUEQakEgEAkgCUGAA2okAEEAC0oBAn8jAEEgayIGJABBfyEHAkAgAkIQVA0AIAYgBCAFEEANACAAIAFBEGogASACQhB9IAMgBhBdIQcgBkEgEAkLIAZBIGokACAHC08BAn8jAEEgayIGJAAgAkLw////D1QEQEF/IQcgBiAEIAUQQEUEQCAAQRBqIAAgASACIAMgBhBOIQcgBkEgEAkLIAZBIGokACAHDwsQDgAL6AQBAn8jAEGgAWsiBCQAIAAgAS0AADoAACAAIAEtAAE6AAEgACABLQACOgACIAAgAS0AAzoAAyAAIAEtAAQ6AAQgACABLQAFOgAFIAAgAS0ABjoABiAAIAEtAAc6AAcgACABLQAIOgAIIAAgAS0ACToACSAAIAEtAAo6AAogACABLQALOgALIAAgAS0ADDoADCAAIAEtAA06AA0gACABLQAOOgAOIAAgAS0ADzoADyAAIAEtABA6ABAgACABLQAROgARIAAgAS0AEjoAEiAAIAEtABM6ABMgACABLQAUOgAUIAAgAS0AFToAFSAAIAEtABY6ABYgACABLQAXOgAXIAAgAS0AGDoAGCAAIAEtABk6ABkgACABLQAaOgAaIAAgAS0AGzoAGyAAIAEtABw6ABwgACABLQAdOgAdIAAgAS0AHjoAHiABLQAfIQMgACACBH8gACAALQAAQfgBcToAACADQcAAcgUgAwtB/wBxOgAfIAQgABA+IAAgBBAvQX8hAyAALQAfQf8AcSAALQAeIAAtAB0gAC0AHCAALQAbIAAtABogAC0AGSAALQAYIAAtABcgAC0AFiAALQAVIAAtABQgAC0AEyAALQASIAAtABEgAC0AECAALQAPIAAtAA4gAC0ADSAALQAMIAAtAAsgAC0ACiAALQAJIAAtAAggAC0AByAALQAGIAAtAAUgAC0ABCAALQADIAAtAAIgAC0AASAALQAAQQFzcnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyckEBa0GAAnFFBEBBf0EAIAFBIBAaGyEDCyAEQaABaiQAIAMLjgUBAn8jAEHAAmsiBCQAQX8hBQJAIAIQa0UNACACEEwNACAEIAIQNA0AIAQQbEUNACAAIAEtAAA6AAAgACABLQABOgABIAAgAS0AAjoAAiAAIAEtAAM6AAMgACABLQAEOgAEIAAgAS0ABToABSAAIAEtAAY6AAYgACABLQAHOgAHIAAgAS0ACDoACCAAIAEtAAk6AAkgACABLQAKOgAKIAAgAS0ACzoACyAAIAEtAAw6AAwgACABLQANOgANIAAgAS0ADjoADiAAIAEtAA86AA8gACABLQAQOgAQIAAgAS0AEToAESAAIAEtABI6ABIgACABLQATOgATIAAgAS0AFDoAFCAAIAEtABU6ABUgACABLQAWOgAWIAAgAS0AFzoAFyAA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DCAHKQAAQuv6htq/tfbBH4ULIQ4gAUFAa0EAQaUCEAwaIAEgDDcDOCABIA43AzAgASALNwMoIAEgDTcDICABQvHt9Pilp/2npX83AxggAUKr8NP0r+68tzw3AxAgAUK7zqqm2NDrs7t/NwMIIAEgCK1CiJL3lf/M+YTqAIU3AwBBAAshBAJAIANQDQAgAUHgAWohCSABQeAAaiEFA0AgBCAFaiEHQYACIARrIgatIgsgA1oEQCAHIAIgA6ciAhALGiABIAEoAuACIAJqNgLgAgwCCyAHIAIgBhALGiABIAEoAuACIAZqNgLgAiABIAEpA0AiDEKAAXw3A0AgASABKQNIIAxC/35WrXw3A0ggASAFEFIgBSAJQYABEAsaIAEgASgC4AJBgAFrIgQ2AuACIAIgBmohAiADIAt9IgNCAFINAAsLIAEgACAIEIMBGiAKJABBAAwBCxAOAAshCAsgCAsFAEGAAwsKACAAIAEgAhAHC/ADAgJ/An4jAEHAAWsiAyQAIANCADcDkAEgA0IANwOYASADQgA3A2ggA0IANwNwIANCADcDeCADQfiSAikDADcDqAEgA0GAkwIpAwA3A7ABIANBiJMCKQMANwO4ASADQgA3A4ABIANCADcDiAEgA0IANwNgIANB8JICKQMANwOgASADIAIpABA3A1AgAyACKQAYNwNYIAMgAikAADcDQCADIAIpAAg3A0ggA0GAAWoiAiADQUBrIgQQhQEgAhAoIAMgAykDmAE3AxggAyADKQOQATcDECADIAMpA4gBNwMIIAMgAykDgAE3AwAgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIAMgASkAEDcDUCADIAEpABg3A1ggASkACCEFIAEpAAAhBiADQgA3AzggA0IANwMwIANCADcDKCADIAY3A0AgAyAFNwNIIANCADcDICAEIAMQ6QEgAyADKQN4NwO4ASADIAMpA3A3A7ABIAMgAykDaDcDqAEgAyADKQNgNwOgASADIAMpA1g3A5gBIAMgAykDUDcDkAEgAyADKQNINwOIASADIAMpA0A3A4ABIAIQKCAAIAMpA5gBNwAYIAAgAykDkAE3ABAgACADKQOIATcACCAAIAMpA4ABNwAAIAJBwAAQCSADQcABaiQAC5cBAQF/IwBBQGoiAiQAIAIgASkAODcDOCACIAEpADA3AzAgAiABKQAoNwMoIAIgASkAIDcDICACIAEpABg3AxggAiABKQAQNwMQIAIgASkAADcDACACIAEpAAg3AwggAhAoIAAgAikDGDcAGCAAIAIpAxA3ABAgACACKQMINwAIIAAgAikDADcAACACQcAAEAkgAkFAayQAC8cCAgF/An4jAEHAAWsiAyQAIANCADcDYCADQgA3A2ggA0IANwNwIANCADcDeCADIAEpABA3A1AgAyABKQAYNwNYIAEpAAghBCABKQAAIQUgA0IANwMoIANCADcDMCADQgA3AzggAyAFNwNAIAMgBDcDSCADQgA3AyAgAyACKQAQNwMQIAMgAikAGDcDGCADIAIpAAA3AwAgAyACKQAINwMIIANBQGsgAxDpASADIAMpA3g3A7gBIAMgAykDcDcDsAEgAyADKQNoNwOoASADIAMpA2A3A6ABIAMgAykDWDcDmAEgAyADKQNQNwOQASADIAMpA0g3A4gBIAMgAykDQDcDgAEgA0GAAWoiARAoIAAgAykDmAE3ABggACADKQOQATcAECAAIAMpA4gBNwAIIAAgAykDgAE3AAAgAUHAABAJIANBwAFqJAAL5QEBAX8jAEGAAWsiAiQAIAJCADcDUCACQgA3A1ggAkIANwMoIAJCADcDMCACQgA3AzggAkH4kgIpAwA3A2ggAkGAkwIpAwA3A3AgAkGIkwIpAwA3A3ggAkIANwNAIAJCADcDSCACQQE6AEAgAkIANwMgIAJB8JICKQMANwNgIAIgASkAGDcDGCACIAEpABA3AxAgAiABKQAINwMIIAIgASkAADcDACACQUBrIgEgAhCFASABECggACACKQNYNwAYIAAgAikDUDcAECAAIAIpA0g3AAggACACKQNANwAAIAJBgAFqJAAL3gEBAX8jAEGAAWsiAiQAIAJCADcDUCACQgA3A1ggAkIANwMoIAJCADcDMCACQgA3AzggAkH4kgIpAwA3A2ggAkGAkwIpAwA3A3AgAkGIkwIpAwA3A3ggAkIANwNAIAJCADcDSCACQgA3AyAgAkHwkgIpAwA3A2AgAiABKQAQNwMQIAIgASkAGDcDGCACIAEpAAA3AwAgAiABKQAINwMIIAJBQGsiASACEIUBIAEQKCAAIAIpA1g3ABggACACKQNQNwAQIAAgAikDSDcACCAAIAIpA0A3AAAgAkGAAWokAAvPCwELfyMAQeAFayICJAAgAkHABWoiByABIAEQByACQeABaiIGIAEgBxAHIAJBoAVqIgQgASAGEAcgAkGABWoiBSAEIAQQByACQaADaiIJIAcgBRAHIAJBwAJqIgcgASAJEAcgAkHgBGoiAyAFIAUQByACQaACaiIFIAcgBxAHIAJBwARqIgggCSAFEAcgAkHAA2oiDCADIAUQByACQaAEaiIKIAggCBAHIAJBgANqIgggAyAKEAcgAkHgAmoiCyAGIAgQByACQcABaiIGIAMgCxAHIAJBoAFqIgMgBCAGEAcgAkHgAGogBCADEAcgAkGABGoiBiAKIAsQByACQeADaiIDIAQgBhAHIAJBgAJqIgYgDCADEAcgAkGAAWogBSAGEAcgAkFAayIFIAggAxAHIAJBIGoiAyAEIAUQByACIAkgAxAHIAAgByACEAdBACEEA0AgACAAIAAQByAEQQFqIgRB/gBHDQALIAAgACACQeACahAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACQcAFahAHIAAgACACEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkGgAWoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAhAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkGAAmoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAJBQGsQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHgAGoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHAAmoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAJBgARqEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHAAWoQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkHgA2oQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACACQYABahAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgABAHIAAgACAAEAcgACAAIAAQByAAIAAgAkEgahAHIAJB4AVqJABBACABQSAQGmsLKAADQCAAQSAQGSAAIAAtAB9BH3E6AB8gABCNAUUNACAAQSAQGg0ACwsKACAAIAEgAhAuCykBAX8jAEEQayIAJAAgAEEAOgAPQeSfAiAAQQ9qQQAQABogAEEQaiQAC2MBBX8DQCAAIANqIgIgASADai0AACAEIAItAABqaiICOgAAIAAgA0EBciIEaiIGIAEgBGotAAAgBi0AACACQQh2amoiAjoAACACQQh2IQQgA0ECaiEDIAVBAmoiBUEgRw0ACwsoACACQoCAgIAQWgRAEA4ACyAAIAEgAiADQQEgBEG8nwIoAgAREAAaCwQAQQwLdAEFfwJAQQEhAgNAIAAgA2oiASACIAEtAABqIgI6AAAgASABLQABIAJBCHZqIgI6AAEgASABLQACIAJBCHZqIgI6AAIgASABLQADIAJBCHZqIgE6AAMgAUEIdiECIANBBGohAyAEQQRqIgRBBEcNAAsMAAsLggcBFH8jAEHwAWsiBCQAIARCADcDyAEgBEIANwPAASAEQcABaiIJIAEgAhALGiADKAAQIQYgA0FAayIBKAAAIQcgAygAUCEFIAMoACAhCCADKAAwIQogAygAFCELIAMoAEQhDCADKABUIQ0gAygAJCEOIAMoADQhDyADKAAYIRAgAygASCERIAMoAFghEiADKAAoIRMgAygAOCEUIAQoAsABIRUgBCgCxAEhFiAEKALIASEXIAQgAygALCADKAA8cSADKAAcIAMoAEwgAygAXCAEKALMAXNzc3M2AswBIAQgEyAUcSAQIBEgEiAXc3NzczYCyAEgBCAOIA9xIAsgDCANIBZzc3NzNgLEASAEIAggCnEgBiAHIAUgFXNzc3M2AsABIAIgCWpBAEEQIAJrEAwaIAAgCSACEAsaIAQoAsABIQAgBCgCxAEhAiAEKALIASEGIAQoAswBIQcgBCADKQJYNwPoASAEIAMpAlA3A+ABIAQgAykCSDcDuAEgBCABKQIANwOwASAEIAMpAlg3A6gBIAQgAykCUDcDoAEgBEHQAWoiBSAEQbABaiAEQaABahAIIAMgBCkC2AE3AlggAyAEKQLQATcCUCAEIAMpAjg3A5gBIAQgAykCMDcDkAEgBCADKQJINwOIASAEIAEpAgA3A4ABIAUgBEGQAWogBEGAAWoQCCADIAQpAtgBNwJIIAEgBCkC0AE3AgAgBCADKQIoNwN4IAQgAykCIDcDcCAEIAMpAjg3A2ggBCADKQIwNwNgIAUgBEHwAGogBEHgAGoQCCADIAQpAtgBNwI4IAMgBCkC0AE3AjAgBCADKQIYNwNYIAQgAykCEDcDUCAEIAMpAig3A0ggBCADKQIgNwNAIAUgBEHQAGogBEFAaxAIIAMgBCkC2AE3AiggAyAEKQLQATcCICAEIAMpAgg3AzggBCADKQIANwMwIAQgAykCGDcDKCAEIAMpAhA3AyAgBSAEQTBqIARBIGoQCCADIAQpAtgBNwIYIAMgBCkC0AE3AhAgBCAEKQPoATcDGCAEIAQpA+ABNwMQIAQgAykCCDcDCCAEIAMpAgA3AwAgBSAEQRBqIAQQCCAEKALQASEBIAQoAtQBIQUgBCgC2AEhCCADIAcgBCgC3AFzNgIMIAMgBiAIczYCCCADIAIgBXM2AgQgAyAAIAFzNgIAIARB8AFqJAALqwYBFH8jAEHgAWsiAyQAIAIoABAhBCACQUBrIgUoAAAhBiACKABQIQkgAigAICEKIAIoADAhCyACKAAUIQcgAigARCEMIAIoAFQhDSABKAAEIQ4gAigAJCEPIAIoADQhECACKAAYIQggAigASCERIAIoAFghEiABKAAIIRMgAigAKCEUIAIoADghFSABKAAAIRYgACACKAAsIAIoADxxIAIoABwgAigATCACKABcIAEoAAxzc3NzIgE2AAwgACAUIBVxIAggESASIBNzc3NzIgg2AAggACAPIBBxIAcgDCANIA5zc3NzIgc2AAQgACAKIAtxIAQgBiAJIBZzc3NzIgA2AAAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCSDcDuAEgAyAFKQIANwOwASADIAIpAlg3A6gBIAMgAikCUDcDoAEgA0HAAWoiBCADQbABaiADQaABahAIIAIgAykCyAE3AlggAiADKQLAATcCUCADIAIpAjg3A5gBIAMgAikCMDcDkAEgAyACKQJINwOIASADIAUpAgA3A4ABIAQgA0GQAWogA0GAAWoQCCACIAMpAsgBNwJIIAUgAykCwAE3AgAgAyACKQIoNwN4IAMgAikCIDcDcCADIAIpAjg3A2ggAyACKQIwNwNgIAQgA0HwAGogA0HgAGoQCCACIAMpAsgBNwI4IAIgAykCwAE3AjAgAyACKQIYNwNYIAMgAikCEDcDUCADIAIpAig3A0ggAyACKQIgNwNAIAQgA0HQAGogA0FAaxAIIAIgAykCyAE3AiggAiADKQLAATcCICADIAIpAgg3AzggAyACKQIANwMwIAMgAikCGDcDKCADIAIpAhA3AyAgBCADQTBqIANBIGoQCCACIAMpAsgBNwIYIAIgAykCwAE3AhAgAyADKQPYATcDGCADIAMpA9ABNwMQIAMgAikCCDcDCCADIAIpAgA3AwAgBCADQRBqIAMQCCADKALAASEFIAMoAsQBIQQgAygCyAEhBiACIAMoAswBIAFzNgIMIAIgBiAIczYCCCACIAQgB3M2AgQgAiAAIAVzNgIAIANB4AFqJAALiwkBEX8jAEHgAWsiBSQAIAQoADwgA0EddnMhDiAEKAA4IANBA3RzIQ8gBCgANCACQR12cyEQIARBMGoiAygAACACQQN0cyERIARBEGohAiAEQSBqIQYgBEFAayEHIARB0ABqIQgDQCAFIAgpAgg3A9gBIAUgCCkCADcD0AEgBSAHKQIINwO4ASAFIAcpAgA3A7ABIAUgCCkCCDcDqAEgBSAIKQIANwOgASAFQcABaiIJIAVBsAFqIAVBoAFqEAggCCAFKQLIATcCCCAIIAUpAsABNwIAIAUgAykCCDcDmAEgBSADKQIANwOQASAFIAcpAgg3A4gBIAUgBykCADcDgAEgCSAFQZABaiAFQYABahAIIAcgBSkCyAE3AgggByAFKQLAATcCACAFIAYpAgg3A3ggBSAGKQIANwNwIAUgAykCCDcDaCAFIAMpAgA3A2AgCSAFQfAAaiAFQeAAahAIIAMgBSkCyAE3AgggAyAFKQLAATcCACAFIAIpAgg3A1ggBSACKQIANwNQIAUgBikCCDcDSCAFIAYpAgA3A0AgCSAFQdAAaiAFQUBrEAggBiAFKQLIATcCCCAGIAUpAsABNwIAIAUgBCkCCDcDOCAFIAQpAgA3AzAgBSACKQIINwMoIAUgAikCADcDICAJIAVBMGogBUEgahAIIAIgBSkCyAE3AgggAiAFKQLAATcCACAFIAUpA9gBNwMYIAUgBSkD0AE3AxAgBSAEKQIINwMIIAUgBCkCADcDACAJIAVBEGogBRAIIAUoAsABIQsgBSgCxAEhDCAFKALIASEJIAQgDiAFKALMAXMiDTYCDCAEIAkgD3MiCTYCCCAEIAwgEHMiDDYCBCAEIAsgEXMiCzYCACAKQQFqIgpBB0cNAAsCQAJAAkACQCABQRBrDhEAAgICAgICAgICAgICAgICAQILIAQoABAhASAEKAAwIQIgBCgAICEDIAQoAFAhBiAEQUBrKAAAIQcgBCgAFCEIIAQoADQhCiAEKAAkIQ4gBCgAVCEPIAQoAEQhECAEKAAYIREgBCgAOCESIAQoACghEyAEKABYIRQgBCgASCEVIAAgBCgAHCAEKAA8IAQoACwgBCgAXCAEKABMc3NzcyANczYADCAAIBEgEiATIBQgFXNzc3MgCXM2AAggACAIIAogDiAPIBBzc3NzIAxzNgAEIAAgASACIAMgBiAHc3NzcyALczYAAAwCCyAEKAAgIQEgBCgAECECIAQoACQhAyAEKAAUIQYgBCgAKCEHIAQoABghCCAAIAQoACwgBCgAHHMgDXM2AAwgACAHIAhzIAlzNgAIIAAgAyAGcyAMczYABCAAIAEgAnMgC3M2AAAgBCgAMCEBIAQoAFAhAiAEQUBrKAAAIQMgBCgANCEGIAQoAFQhByAEKABEIQggBCgAOCEKIAQoAFghDSAEKABIIQkgACAEKAA8IAQoAFwgBCgATHNzNgAcIAAgCiAJIA1zczYAGCAAIAYgByAIc3M2ABQgACABIAIgA3NzNgAQDAELIABBACABEAwaCyAFQeABaiQAC6UGARR/IwBB4AFrIgMkACACKAAQIQUgAkFAayIEKAAAIQkgAigAUCEKIAIoACAhCyACKAAwIQwgASgABCEGIAIoABQhDSACKABEIQ4gAigAVCEPIAIoACQhECACKAA0IREgASgACCEHIAIoABghEiACKABIIRMgAigAWCEUIAIoACghFSACKAA4IRYgASgAACEIIAAgASgADCIBIAIoACwgAigAPHEgAigAHCACKABcIAIoAExzc3NzNgAMIAAgByAVIBZxIBIgEyAUc3NzczYACCAAIAYgECARcSANIA4gD3Nzc3M2AAQgACAIIAsgDHEgBSAJIApzc3NzNgAAIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAkg3A7gBIAMgBCkCADcDsAEgAyACKQJYNwOoASADIAIpAlA3A6ABIANBwAFqIgAgA0GwAWogA0GgAWoQCCACIAMpAsgBNwJYIAIgAykCwAE3AlAgAyACKQI4NwOYASADIAIpAjA3A5ABIAMgAikCSDcDiAEgAyAEKQIANwOAASAAIANBkAFqIANBgAFqEAggAiADKQLIATcCSCAEIAMpAsABNwIAIAMgAikCKDcDeCADIAIpAiA3A3AgAyACKQI4NwNoIAMgAikCMDcDYCAAIANB8ABqIANB4ABqEAggAiADKQLIATcCOCACIAMpAsABNwIwIAMgAikCGDcDWCADIAIpAhA3A1AgAyACKQIoNwNIIAMgAikCIDcDQCAAIANB0ABqIANBQGsQCCACIAMpAsgBNwIoIAIgAykCwAE3AiAgAyACKQIINwM4IAMgAikCADcDMCADIAIpAhg3AyggAyACKQIQNwMgIAAgA0EwaiADQSBqEAggAiADKQLIATcCGCACIAMpAsABNwIQIAMgAykD2AE3AxggAyADKQPQATcDECADIAIpAgg3AwggAyACKQIANwMAIAAgA0EQaiADEAggAygCwAEhACADKALEASEEIAMoAsgBIQUgAiABIAMoAswBczYCDCACIAUgB3M2AgggAiAEIAZzNgIEIAIgACAIczYCACADQeABaiQAC6UJAQ1/IwBBoANrIgIkACAAKAAQIQYgACgAFCEHIAAoABghCCAAKAAcIQkgACgABCEEIAAoAAghBSAAKAAMIQogACgAACELIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAEpAkg3A/gCIAIgAUFAayIAKQIANwPwAiACIAEpAlg3A+gCIAIgASkCUDcD4AIgAkGAA2oiAyACQfACaiACQeACahAIIAEgAikCiAM3AlggASACKQKAAzcCUCACIAEpAjg3A9gCIAIgASkCMDcD0AIgAiABKQJINwPIAiACIAApAgA3A8ACIAMgAkHQAmogAkHAAmoQCCABIAIpAogDNwJIIAAgAikCgAM3AgAgAiABKQIoNwO4AiACIAEpAiA3A7ACIAIgASkCODcDqAIgAiABKQIwNwOgAiADIAJBsAJqIAJBoAJqEAggASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCGDcDmAIgAiABKQIQNwOQAiACIAEpAig3A4gCIAIgASkCIDcDgAIgAyACQZACaiACQYACahAIIAEgAikCiAM3AiggASACKQKAAzcCICACIAEpAgg3A/gBIAIgASkCADcD8AEgAiABKQIYNwPoASACIAEpAhA3A+ABIAMgAkHwAWogAkHgAWoQCCABIAIpAogDNwIYIAEgAikCgAM3AhAgAiACKQOYAzcD2AEgAiACKQOQAzcD0AEgAiABKQIINwPIASACIAEpAgA3A8ABIAMgAkHQAWogAkHAAWoQCCACKAKAAyEMIAIoAoQDIQ0gAigCiAMhDiABIAogAigCjANzNgIMIAEgBSAOczYCCCABIAQgDXM2AgQgASALIAxzNgIAIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAEpAkg3A7gBIAIgACkCADcDsAEgAiABKQJYNwOoASACIAEpAlA3A6ABIAMgAkGwAWogAkGgAWoQCCABIAIpAogDNwJYIAEgAikCgAM3AlAgAiABKQI4NwOYASACIAEpAjA3A5ABIAIgASkCSDcDiAEgAiAAKQIANwOAASADIAJBkAFqIAJBgAFqEAggASACKQKIAzcCSCAAIAIpAoADNwIAIAIgASkCKDcDeCACIAEpAiA3A3AgAiABKQI4NwNoIAIgASkCMDcDYCADIAJB8ABqIAJB4ABqEAggASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCGDcDWCACIAEpAhA3A1AgAiABKQIoNwNIIAIgASkCIDcDQCADIAJB0ABqIAJBQGsQCCABIAIpAogDNwIoIAEgAikCgAM3AiAgAiABKQIINwM4IAIgASkCADcDMCACIAEpAhg3AyggAiABKQIQNwMgIAMgAkEwaiACQSBqEAggASACKQKIAzcCGCABIAIpAoADNwIQIAIgAikDmAM3AxggAiACKQOQAzcDECACIAEpAgg3AwggAiABKQIANwMAIAMgAkEQaiACEAggAigCgAMhACACKAKEAyEEIAIoAogDIQUgASAJIAIoAowDczYCDCABIAUgCHM2AgggASAEIAdzNgIEIAEgACAGczYCACACQaADaiQAC/MUARl/IwBBoAZrIgMkACABKAAEIQsgASgACCEMIAEoAAwhDSABKAAQIQ4gASgAFCEEIAEoABghDyABKAAcIRAgACgABCERIAAoAAghEiAAKAAMIRMgACgAECEUIAAoABQhFSAAKAAYIRYgACgAHCEXIAEoAAAhBSACQUBrIgEgACgAACIYQYCChBBzNgIAIAJClcTcyYWy+rziADcCOCACQTBqIgBCgIKEkLCggYQNNwIAIAJCoKLEkbSurZRdNwIoIAJBIGoiBkLb++Co1c3wl3E3AgAgAiAFIBhzIhk2AgAgAiAXQfPqoul9czYCXCACIBZBoKLEkQRzNgJYIAIgFUHthL+Jf3M2AlQgAkHQAGoiBSAUQdv74KgFczYCACACIBNBkNPnkwZzNgJMIAIgEkGVxNzJBXM2AkggAiARQYOKoOgAczYCRCACIBAgF3MiEDYCHCACIA8gFnMiDzYCGCACIAQgFXMiGjYCFCACQRBqIgQgDiAUcyIONgIAIAIgDSATcyINNgIMIAIgDCAScyIMNgIIIAIgCyARcyIbNgIEQQAhCwNAIAMgBSkCCDcDmAYgAyAFKQIANwOQBiADIAEpAgg3A/gFIAMgASkCADcD8AUgAyAFKQIINwPoBSADIAUpAgA3A+AFIANBgAZqIgcgA0HwBWogA0HgBWoQCCAFIAMpAogGNwIIIAUgAykCgAY3AgAgAyAAKQIINwPYBSADIAApAgA3A9AFIAMgASkCCDcDyAUgAyABKQIANwPABSAHIANB0AVqIANBwAVqEAggASADKQKIBjcCCCABIAMpAoAGNwIAIAMgBikCCDcDuAUgAyAGKQIANwOwBSADIAApAgg3A6gFIAMgACkCADcDoAUgByADQbAFaiADQaAFahAIIAAgAykCiAY3AgggACADKQKABjcCACADIAQpAgg3A5gFIAMgBCkCADcDkAUgAyAGKQIINwOIBSADIAYpAgA3A4AFIAcgA0GQBWogA0GABWoQCCAGIAMpAogGNwIIIAYgAykCgAY3AgAgAyACKQIINwP4BCADIAIpAgA3A/AEIAMgBCkCCDcD6AQgAyAEKQIANwPgBCAHIANB8ARqIANB4ARqEAggBCADKQKIBjcCCCAEIAMpAoAGNwIAIAMgAykDmAY3A9gEIAMgAykDkAY3A9AEIAMgAikCCDcDyAQgAyACKQIANwPABCAHIANB0ARqIANBwARqEAggAygCgAYhCCADKAKEBiEJIAMoAogGIQogAiADKAKMBiATczYCDCACIAogEnM2AgggAiAJIBFzNgIEIAIgCCAYczYCACADIAUpAgg3A5gGIAMgBSkCADcDkAYgAyABKQIINwO4BCADIAEpAgA3A7AEIAMgBSkCCDcDqAQgAyAFKQIANwOgBCAHIANBsARqIANBoARqEAggBSADKQKIBjcCCCAFIAMpAoAGNwIAIAMgACkCCDcDmAQgAyAAKQIANwOQBCADIAEpAgg3A4gEIAMgASkCADcDgAQgByADQZAEaiADQYAEahAIIAEgAykCiAY3AgggASADKQKABjcCACADIAYpAgg3A/gDIAMgBikCADcD8AMgAyAAKQIINwPoAyADIAApAgA3A+ADIAcgA0HwA2ogA0HgA2oQCCAAIAMpAogGNwIIIAAgAykCgAY3AgAgAyAEKQIINwPYAyADIAQpAgA3A9ADIAMgBikCCDcDyAMgAyAGKQIANwPAAyAHIANB0ANqIANBwANqEAggBiADKQKIBjcCCCAGIAMpAoAGNwIAIAMgAikCCDcDuAMgAyACKQIANwOwAyADIAQpAgg3A6gDIAMgBCkCADcDoAMgByADQbADaiADQaADahAIIAQgAykCiAY3AgggBCADKQKABjcCACADIAMpA5gGNwOYAyADIAMpA5AGNwOQAyADIAIpAgg3A4gDIAMgAikCADcDgAMgByADQZADaiADQYADahAIIAMoAoAGIQggAygChAYhCSADKAKIBiEKIAIgAygCjAYgF3M2AgwgAiAKIBZzNgIIIAIgCSAVczYCBCACIAggFHM2AgAgAyAFKQIINwOYBiADIAUpAgA3A5AGIAMgASkCCDcD+AIgAyABKQIANwPwAiADIAUpAgg3A+gCIAMgBSkCADcD4AIgByADQfACaiADQeACahAIIAUgAykCiAY3AgggBSADKQKABjcCACADIAApAgg3A9gCIAMgACkCADcD0AIgAyABKQIINwPIAiADIAEpAgA3A8ACIAcgA0HQAmogA0HAAmoQCCABIAMpAogGNwIIIAEgAykCgAY3AgAgAyAGKQIINwO4AiADIAYpAgA3A7ACIAMgACkCCDcDqAIgAyAAKQIANwOgAiAHIANBsAJqIANBoAJqEAggACADKQKIBjcCCCAAIAMpAoAGNwIAIAMgBCkCCDcDmAIgAyAEKQIANwOQAiADIAYpAgg3A4gCIAMgBikCADcDgAIgByADQZACaiADQYACahAIIAYgAykCiAY3AgggBiADKQKABjcCACADIAIpAgg3A/gBIAMgAikCADcD8AEgAyAEKQIINwPoASADIAQpAgA3A+ABIAcgA0HwAWogA0HgAWoQCCAEIAMpAogGNwIIIAQgAykCgAY3AgAgAyADKQOYBjcD2AEgAyADKQOQBjcD0AEgAyACKQIINwPIASADIAIpAgA3A8ABIAcgA0HQAWogA0HAAWoQCCADKAKABiEIIAMoAoQGIQkgAygCiAYhCiACIAMoAowGIA1zNgIMIAIgCiAMczYCCCACIAkgG3M2AgQgAiAIIBlzNgIAIAMgBSkCCDcDmAYgAyAFKQIANwOQBiADIAEpAgg3A7gBIAMgASkCADcDsAEgAyAFKQIINwOoASADIAUpAgA3A6ABIAcgA0GwAWogA0GgAWoQCCAFIAMpAogGNwIIIAUgAykCgAY3AgAgAyAAKQIINwOYASADIAApAgA3A5ABIAMgASkCCDcDiAEgAyABKQIANwOAASAHIANBkAFqIANBgAFqEAggASADKQKIBjcCCCABIAMpAoAGNwIAIAMgBikCCDcDeCADIAYpAgA3A3AgAyAAKQIINwNoIAMgACkCADcDYCAHIANB8ABqIANB4ABqEAggACADKQKIBjcCCCAAIAMpAoAGNwIAIAMgBCkCCDcDWCADIAQpAgA3A1AgAyAGKQIINwNIIAMgBikCADcDQCAHIANB0ABqIANBQGsQCCAGIAMpAogGNwIIIAYgAykCgAY3AgAgAyACKQIINwM4IAMgAikCADcDMCADIAQpAgg3AyggAyAEKQIANwMgIAcgA0EwaiADQSBqEAggBCADKQKIBjcCCCAEIAMpAoAGNwIAIAMgAykDmAY3AxggAyADKQOQBjcDECADIAIpAgg3AwggAyACKQIANwMAIAcgA0EQaiADEAggAygCgAYhCCADKAKEBiEJIAMoAogGIQogAiADKAKMBiAQczYCDCACIAogD3M2AgggAiAJIBpzNgIEIAIgCCAOczYCACALQQFqIgtBBEcNAAsgA0GgBmokAAsIACAAQRAQGQsEAEFfC5gKAR5/IwBBwAJrIgQkACAEQgA3A5gCIARCADcDkAIgBEIANwOIAiAEQgA3A4ACIARBgAJqIgUgASACEAsaIAMoABAhCyADKAAwIQwgAygAFCENIAMoADQhDiADKAAYIQ8gAygAOCEQIAMoABwhESADKAA8IRIgAygAJCEBIAMoAFQhEyADKAB0IRQgAygAZCEGIAMoACwhByADKABcIRUgAygAfCEWIAMoAGwhCCADKAAgIQkgAygAUCEXIAMoAHAhGCADKABgIQogBCgCkAIhGSAEKAKAAiEaIAQoAoQCIRsgBCgCiAIhHCAEKAKMAiEdIAQoApQCIR4gBCgCnAIhHyAEIAMoACgiICADKABoIiEgAygAeHEgAygAWCAEKAKYAnNzczYCmAIgBCAJIAogGHEgFyAZc3NzNgKQAiAEIAcgCCAWcSAVIB9zc3M2ApwCIAQgASAGIBRxIBMgHnNzczYClAIgBCAIIAcgEnEgESAdc3NzNgKMAiAEICEgECAgcSAPIBxzc3M2AogCIAQgBiABIA5xIA0gG3NzczYChAIgBCAKIAkgDHEgCyAac3NzNgKAAiACIAVqQQBBICACaxAMGiAAIAUgAhALGiAEKAKYAiEBIAQoApACIQIgBCgCnAIhBiAEKAKUAiEHIAQoAoACIQggBCgChAIhCSAEKAKIAiEKIAQoAowCIQsgBCADKQJ4NwO4AiAEIAMpAnA3A7ACIAQgAykCaDcD+AEgBCADKQJgNwPwASAEIAMpAng3A+gBIAQgAykCcDcD4AEgBEGgAmoiBSAEQfABaiAEQeABahAIIAMgBCkCqAI3AnggAyAEKQKgAjcCcCAEIAMpAlg3A9gBIAQgAykCUDcD0AEgBCADKQJoNwPIASAEIAMpAmA3A8ABIAUgBEHQAWogBEHAAWoQCCADIAQpAqgCNwJoIAMgBCkCoAI3AmAgBCADKQJINwO4ASAEIANBQGsiACkCADcDsAEgBCADKQJYNwOoASAEIAMpAlA3A6ABIAUgBEGwAWogBEGgAWoQCCADIAQpAqgCNwJYIAMgBCkCoAI3AlAgBCADKQI4NwOYASAEIAMpAjA3A5ABIAQgAykCSDcDiAEgBCAAKQIANwOAASAFIARBkAFqIARBgAFqEAggAyAEKQKoAjcCSCAAIAQpAqACNwIAIAQgAykCKDcDeCAEIAMpAiA3A3AgBCADKQI4NwNoIAQgAykCMDcDYCAFIARB8ABqIARB4ABqEAggAyAEKQKoAjcCOCADIAQpAqACNwIwIAQgAykCGDcDWCAEIAMpAhA3A1AgBCADKQIoNwNIIAQgAykCIDcDQCAFIARB0ABqIARBQGsQCCADIAQpAqgCNwIoIAMgBCkCoAI3AiAgBCADKQIINwM4IAQgAykCADcDMCAEIAMpAhg3AyggBCADKQIQNwMgIAUgBEEwaiAEQSBqEAggAyAEKQKoAjcCGCADIAQpAqACNwIQIAQgBCkDuAI3AxggBCAEKQOwAjcDECAEIAMpAgg3AwggBCADKQIANwMAIAUgBEEQaiAEEAggAyAEKQKoAjcCCCADIAQpAqACNwIAIAMgCyADKAAMczYCDCADIAogAygACHM2AgggAyAJIAMoAARzNgIEIAMgCCADKAAAczYCACAAIAIgACgAAHM2AgAgAyAHIAMoAERzNgJEIAMgASADKABIczYCSCADIAYgAygATHM2AkwgBEHAAmokAAuRCQEefyMAQaACayIDJAAgAigAECEOIAIoADAhDyACKAAUIRAgASgABCERIAIoADQhEiACKAAYIRMgASgACCEUIAIoADghFSACKAAcIQggASgADCEWIAIoADwhFyACKAAgIQUgAigAUCEJIAEoABAhGCACKABwIRkgAigAYCEEIAIoACQhBiACKABUIQogASgAFCEaIAIoAHQhGyACKABkIQwgAigAKCEHIAIoAFghCyABKAAYIRwgAigAeCEdIAIoAGghDSABKAAAIR4gACACKAAsIh8gAigAbCIgIAIoAHxxIAIoAFwgASgAHHNzcyIBNgAcIAAgByANIB1xIAsgHHNzcyILNgAYIAAgBiAMIBtxIAogGnNzcyIKNgAUIAAgBSAEIBlxIAkgGHNzcyIJNgAQIAAgICAXIB9xIAggFnNzcyIINgAMIAAgDSAHIBVxIBMgFHNzcyIHNgAIIAAgDCAGIBJxIBAgEXNzcyIGNgAEIAAgBCAFIA9xIA4gHnNzcyIFNgAAIAMgAikCeDcDmAIgAyACKQJwNwOQAiADIAIpAmg3A/gBIAMgAikCYDcD8AEgAyACKQJ4NwPoASADIAIpAnA3A+ABIANBgAJqIgQgA0HwAWogA0HgAWoQCCACIAMpAogCNwJ4IAIgAykCgAI3AnAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCaDcDyAEgAyACKQJgNwPAASAEIANB0AFqIANBwAFqEAggAiADKQKIAjcCaCACIAMpAoACNwJgIAMgAikCSDcDuAEgAyACQUBrIgApAgA3A7ABIAMgAikCWDcDqAEgAyACKQJQNwOgASAEIANBsAFqIANBoAFqEAggAiADKQKIAjcCWCACIAMpAoACNwJQIAMgAikCODcDmAEgAyACKQIwNwOQASADIAIpAkg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAIgAykCiAI3AkggACADKQKAAjcCACADIAIpAig3A3ggAyACKQIgNwNwIAMgAikCODcDaCADIAIpAjA3A2AgBCADQfAAaiADQeAAahAIIAIgAykCiAI3AjggAiADKQKAAjcCMCADIAIpAhg3A1ggAyACKQIQNwNQIAMgAikCKDcDSCADIAIpAiA3A0AgBCADQdAAaiADQUBrEAggAiADKQKIAjcCKCACIAMpAoACNwIgIAMgAikCCDcDOCADIAIpAgA3AzAgAyACKQIYNwMoIAMgAikCEDcDICAEIANBMGogA0EgahAIIAIgAykCiAI3AhggAiAD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IAIoAHAhGiACKABgIQkgAigAJCEKIAEoABQhCyACKABUIRsgAigAdCEcIAIoAGQhDCACKAAoIQ0gASgAGCEOIAIoAFghHSACKAB4IR4gAigAaCEPIAEoAAAhECAAIAIoACwiHyABKAAcIgEgAigAXCACKABsIiAgAigAfHFzc3M2ABwgACANIA4gHSAPIB5xc3NzNgAYIAAgCiALIBsgDCAccXNzczYAFCAAIAQgCCAZIAkgGnFzc3M2ABAgACAgIAcgFyAYIB9xc3NzNgAMIAAgDyAGIBUgDSAWcXNzczYACCAAIAwgBSATIAogFHFzc3M2AAQgACAJIBAgESAEIBJxc3NzNgAAIAMgAikCeDcDmAIgAyACKQJwNwOQAiADIAIpAmg3A/gBIAMgAikCYDcD8AEgAyACKQJ4NwPoASADIAIpAnA3A+ABIANBgAJqIgQgA0HwAWogA0HgAWoQCCACIAMpAogCNwJ4IAIgAykCgAI3AnAgAyACKQJYNwPYASADIAIpAlA3A9ABIAMgAikCaDcDyAEgAyACKQJgNwPAASAEIANB0AFqIANBwAFqEAggAiADKQKIAjcCaCACIAMpAoACNwJgIAMgAikCSDcDuAEgAyACQUBrIgApAgA3A7ABIAMgAikCWDcDqAEgAyACKQJQNwOgASAEIANBsAFqIANBoAFqEAggAiADKQKIAjcCWCACIAMpAoACNwJQIAMgAikCODcDmAEgAyACKQIwNwOQASADIAIpAkg3A4gBIAMgACkCADcDgAEgBCADQZABaiADQYABahAIIAIgAykCiAI3AkggACADKQKAAjcCACADIAIpAig3A3ggAyACKQIgNwNwIAMgAikCODcDaCADIAIpAjA3A2AgBCADQfAAaiADQeAAahAIIAIgAykCiAI3AjggAiADKQKAAjcCMCADIAIpAhg3A1ggAyACKQIQNwNQIAMgAikCKDcDSCADIAIpAiA3A0AgBCADQdAAaiADQUBrEAggAiADKQKIAjcCKCACIAMpAoACNwIgIAMgAikCCDcDOCADIAIpAgA3AzAgAyACKQIYNwMoIAMgAikCEDcDICAEIANBMGogA0EgahAIIAIgAykCiAI3AhggAiADKQKAAjcCECADIAMpA5gCNwMYIAMgAykDkAI3AxAgAyACKQIINwMIIAMgAikCADcDACAE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ACJDNwPQAiADIAEpAAg3A9gCIAMgQ6dB+AFxOgDQAiADIAMtAO8CQT9xQcAAcjoA7wIgA0GgAmogAhA2IANCADcChAIgA0IANwKMAiADQQA2ApQCIANCADcD0AEgA0IANwPYASADQgA3A+ABIAMgAykDsAI3A6ABIAMgAykDuAI3A6gBIAMgAykDwAI3A7ABIANCADcC9AEgA0EBNgLwASADQgA3AvwBIANCADcDwAEgA0IANwPIASADIAMpA6ACNwOQASADIAMpA6gCNwOYASADQgA3AnQgA0IANwJ8IANBADYChAEgA0IANwJkIANBATYCYCADQgA3AmxB/gEhAkEAIQQDQCADKAKUAiEJIAMoArQBIQYgAygCYCEHIAMoAsABIQogAygCkAEhCyADKALwASENIAMoAmQhCCADKALEASEMIAMoApQBIQUgAygC9AEhECADKAJoIQ4gAygCyAEhESADKAKYASESIAMoAvgBIRMgAygCbCEPIAMoAswBIRQgAygCnAEhFSADKAL8ASEXIAMoAnAhGCADKALQASEcIAMoAqABIR0gAygCgAIhHiADKAJ0IRkgAygC1AEhHyADKAKkASEgIAMoAoQCISEgAygCeCEaIAMoAtgBISIgAygCqAEhIyADKAKIAiEkIAMoAnwhGyADKALcASElIAMoAqwBISYgAygCjAIhJyADKAKAASEWIAMoAuABISggAygCsAEhKSADKAKQAiEsIANBACAEIANB0AJqIi0gAiIBQQN2ai0AACACQQdxdkEBcSIEc2siAiADKAKEASIqIAMoAuQBIitzcSIuICpzIio2AoQBIAMgBiAGIAlzIAJxIi9zIjAgKms2AlQgAyAWIBYgKHMgAnEiMXMiBjYCgAEgAyApICkgLHMgAnEiFnMiKSAGazYCUCADIBsgGyAlcyACcSIycyIbNgJ8IAMgJiAmICdzIAJxIjNzIiYgG2s2AkwgAyAaIBogInMgAnEiNHMiGjYCeCADICMgIyAkcyACcSI1cyIjIBprNgJIIAMgGSAZIB9zIAJxIjZzIhk2AnQgAyAgICAgIXMgAnEiN3MiICAZazYCRCADIBggGCAccyACcSI4cyIYNgJwIAMgHSAdIB5zIAJxIjlzIh0gGGs2AkAgAyAPIA8gFHMgAnEiOnMiDzYCbCADIBUgFSAXcyACcSI7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BiAWIAMgGhAGIAENAAsgAygCkAEhECADKALwASECIAMoApQBIQ4gAygC9AEhBiADKAKYASERIAMoAvgBIQcgAygCnAEhEiADKAL8ASEKIAMoAqABIRMgAygCgAIhCyADKAKkASEPIAMoAoQCIQ0gAygCqAEhFCADKAKIAiEIIAMoAqwBIRUgAygCjAIhDCADKAKwASEXIAMoApACIQUgA0EAIARrIgEgAygClAIiBCADKAK0AXNxIARzNgKUAiADIAUgBSAXcyABcXM2ApACIAMgDCAMIBVzIAFxczYCjAIgAyAIIAggFHMgAXFzNgKIAiADIA0gDSAPcyABcXM2AoQCIAMgCyALIBNzIAFxczYCgAIgAyAKIAogEnMgAXFzNgL8ASADIAcgByARcyABcXM2AvgBIAMgBiAGIA5zIAFxczYC9AEgAyACIAIgEHMgAXFzNgLwASADKALAASECIAMoAmAhBSADKALEASEEIAMoAmQhECADKALIASEGIAMoAmghDiADKALMASEHIAMoAmwhESADKALQASEKIAMoAnAhEiADKALUASELIAMoAnQhEyADKALYASENIAMoAnghDyADKALcASEIIAMoAnwhFCADKALgASEMIAMoAoABIRUgAyADKALkASIXIAMoAoQBcyABcSAXczYC5AEgAyAMIAwgFXMgAXFzNgLgASADIAggCCAUcyABcXM2AtwBIAMgDSANIA9zIAFxczYC2AEgAyALIAsgE3MgAXFzNgLUASADIAogCiAScyABcXM2AtABIAMgByAHIBFzIAFxczYCzAEgAyAGIAYgDnMgAXFzNgLIASADIAQgBCAQcyABcXM2AsQBIAMgAiACIAVzIAFxczYCwAEgFiAWEDUgGSAZIBYQBiAAIBkQESAtQSAQCUEAIQkLIANB8AJqJAAgCQs4AQF/IwBBIGsiBiQAIAYgBCAFQQAQGxogACABIAKtIAOtQiCGhCAEQRBqQgAgBhA7IAZBIGokAAtAAQF/IwBBIGsiCCQAIAggBCAHQQAQGxogACABIAKtIAOtQiCGhCAEQRBqIAWtIAatQiCGhCAIEDsgCEEgaiQACzQBAX8jAEEgayIFJAAgBSADIARBABAbGiAAIAGtIAKtQiCGhCADQRBqIAUQUyAFQSBqJAALtgQCA38CfiMAQfAAayIGJAAgAq0gA61C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IwtbAQJ+IAetIAitQiCGhCEMQX8hAiAErSAFrUIghoQiC0IQWgRAIAAgAyALQhB9IAMgC6dqQRBrIAYgDCAJIAoQsgEhAgsgAQRAIAFCACALQhB9IAIbNwMACyACCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQsgELWQECfgJ/IAatIAetQiCGhCEMIAOtIAStQiCGhCILQvD///8PVARAIAAgACALp2pBACACIAsgBSAMIAkgChCzARogAQRAIAEgC0IQfDcDAAtBAAwBCxAOAAsLJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALELMBC1sBAn4gB60gCK1CIIaEIQxBfyECIAStIAWtQiCGhCILQhBaBEAgACADIAtCEH0gAyALp2pBEGsgBiAMIAkgChDDASECCyABBEAgAUIAIAtCEH0gAhs3AwALIAILJQAgACACIAOtIAStQiCGhCAFIAYgB60gCK1CIIaEIAkgChDDAQtbAQJ+IAetIAitQiCGhCEMQX8hAiAErSAFrUIghoQiC0IQWgRAIAAgAyALQhB9IAMgC6dqQRBrIAYgDCAJIAoQxAEhAgsgAQRAIAFCACALQhB9IAIbNwMACyACCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQxAELWQECfgJ/IAatIAetQiCGhCEMIAOtIAStQiCGhCILQvD///8PVARAIAAgACALp2pBACACIAsgBSAMIAkgChDFARogAQRAIAEgC0IQfDcDAAtBAAwBCxAOAAsLJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEMUBC1kBAn4CfyAGrSAHrUIghoQhDCADrSAErUIghoQiC0Lw////D1QEQCAAIAAgC6dqQQAgAiALIAUgDCAJIAoQxgEaIAEEQCABIAtCEHw3AwALQQAMAQsQDgALCycAIAAgASACIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAogCxDGAQtZAQJ+IAetIAitQiCGhCELQX8hAQJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC3////w9WDQAgACACIAynIAVBICAGIAunIAkgCkGsnwIoAgARDQAhAQsgAQuAAQEDfiAHrSAIrUIghoQhDEF/IQICQCAErSAFrUIghoQiC0IgVA0AIAtCIH0iDULf////D1YNACAMQt////8PVg0AIAAgAyANpyADIAunakEga0EgIAYgDKcgCSAKQayfAigCABENACECCyABBEAgAUIAIAtCIH0gAhs3AwALIAILYAECfiAErSAFrUIghoQhDCAHrSAIrUIghoQhDSACBEAgAkIgNwMACyANQuD///8PVCAMQt////8PWHFFBEAQDgALIAAgAUEgIAMgDKcgBiANpyAKIAtBqJ8CKAIAEQ0AC3YBAn4CfyAGrSAHrUIghoQhCwJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC4P///w9aDQAgACAAIAynIgNqQSAgAiADIAUgC6cgCSAKQaifAigCABENACEAIAEEQCABQgAgDEIgfCAAGzcDAAsgAAwBCxAOAAsLWQECfiAHrSAIrUIghoQhC0F/IQECQCADrSAErUIghoQiDELf////D1YNACALQt////8PVg0AIAAgAiAMpyAFQSAgBiALpyAJIApBpJ8CKAIAEQ0AIQELIAELgAEBA34gB60gCK1CIIaEIQxBfyECAkAgBK0gBa1CIIaEIgtCIFQNACALQiB9Ig1C3////w9WDQAgDELf////D1YNACAAIAMgDacgAyALp2pBIGtBICAGIAynIAkgCkGknwIoAgARDQAhAgsgAQRAIAFCACALQiB9IAIbNwMACyACC2ABAn4gBK0gBa1CIIaEIQwgB60gCK1CIIaEIQ0gAgRAIAJCIDcDAAsgDULg////D1QgDELf////D1hxRQRAEA4ACyAAIAFBICADIAynIAYgDacgCiALQaCfAigCABENAAt2AQJ+An8gBq0gB61CIIaEIQsCQCADrSAErUIghoQiDELf////D1YNACALQuD///8PWg0AIAAgACAMpyIDakEgIAIgAyAFIAunIAkgCkGgnwIoAgARDQAhACABBEAgAUIAIAxCIHwgABs3AwALIAAMAQsQDgALCwUAQegACwQAQRoLBQBBiwwLBQBBtAoL/QEBBX8jACIFIQkgBUGABGtBQHEiBSQAIAAgASAAGyIHBEBBfyEGIAVB4ABqIgggAyAEEB9FBEAgASAAIAEbIQNBACEAIAVBgAFqIgFBAEEAQcAAECIaIAEgCEIgEA8aIAhBIBAJIAEgBEIgEA8aIAEgAkIgEA8aIAEg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ACABIAIgAxAiCwsAIAAgASACEMcBCw0AIAAgASACIAMQyAELBwAgABDJAQsJACAAIAEQywELCwAgACABIAIQzAELBQBBrgsLOgEDfiABKQAgIQIgASkAKCEDIAEpADAhBCAAIAEpADg3ABggACAENwAQIAAgAzcACCAAIAI3AABBAAs6AQN+IAEpAAghAiABKQAQIQMgASkAACEEIAAgASkAGDcAGCAAIAM3ABAgACACNwAIIAAgBDcAAEEAC3wBAX8CQAJAAkAgA0LAAFQNACADQkB8IgNCv////w9WDQAgAiACQUBrIgUgAyAEQQAQdkUNASAARQ0AIABBACADpxAMGgtBfyECIAFFDQEgAUIANwMAQX8PCyABBEAgASADNwMAC0EAIQIgAEUNACAAIAUgA6cQQhoLIAILcAECfyMAQRBrIgUkACAAIAVBCGogAEFAayACIAOnIgIQQiADIARBABB4GgJAIAUpAwhCwABSBEAgAQRAIAFCADcDAAsgAEEAIAJBQGsQDBpBfyEGDAELIAFFDQAgASADQkB9NwMACyAFQRBqJAAgBgsTACAAIAEgAiADIARBABB4GkEAC20BAX8jAEFAaiICJAAgAiABQiAQRxogAiACLQAAQfgBcToAACACIAItAB9BP3FBwAByOgAfIAAgAikDEDcAECAAIAIpAwg3AAggACACKQMANwAAIAAgAikDGDcAGCACQcAAEAkgAkFAayQAQQAL5woCD38nfiMAQYACayICJABBfyEIAkAgARBMDQAgAkHgAGoiAyABEJQBDQAgAxBsRQ0AQQAhCCACQQAgAigCrAEiAWs2AiQgAkEAIAIoAqgBIgNrNgIgIAJBACACKAKkASIJazYCHCACQQAgAigCoAEiBGs2AhggAkEAIAIoApwBIgprNgIUIAJBACACKAKYASIFazYCECACQQAgAigClAEiC2s2AgwgAkEAIAIoApABIgZrNgIIIAJBACACKAKMASIMazYCBCACQQEgAigCiAEiB2s2AgAgAiACEDUgAiACKAIEIg2sIhkgCkEBdKwiIn4gAjQCACIRIASsIhR+fCACKAIIIgSsIhsgBawiFX58IAIoAgwiBawiHiALQQF0rCIjfnwgAigCECIOrCIfIAasIhZ+fCACKAIUIgasIiQgDEEBdKwiJX58IAIoAhgiD6wiLiAH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IAIQPQ0AIAMgARAQIANBoAFqIgEgBSADEFUgA0HAAmoiAiABEFYgACACEEtBACEECyADQaAGaiQAIAQLZQEDfyMAQaAGayIDJABBfyEEAkAgA0GABWoiBSABED0NACADQeADaiIBIAIQPQ0AIAMgARAQIANBoAFqIgEgBSADEBMgA0HAAmoiAiABEFYgACACEEtBACEECyADQaAGaiQAIAQLHQEBfyMAQaABayIBJAAgASAAED0gAUGgAWokAEULpQEBBn8jAEEQayIFQQA2AgxBfyEEIAIgA0EBa0sEfyABIAJBAWsiB2ohCEEAIQJBACEBQQAhBANAIAUgBSgCDCIGQQAgCCACay0AACIJQYABc0EBayAGQQFrIARBAWtxcUEIdkEBcSIGayACcXI2AgwgASAGciEBIAQgCXIhBCACQQFqIgIgA0cNAAsgACAHIAUoAgxrNgIAIAFB/wFxQQFrBUF/CwshAQF/IwBBIGsiASQAIAFBIBAZIAAgARCMASABQSBqJAALCwAgACABEIwBQQALcwEDfyMAQaAGayIDJABBfyEEAkAgA0GABWoiBSABEDQNACAFEE1FDQAgA0HgA2oiASACEDQNACABEE1FDQAgAyABEBAgA0GgAWoiASAFIAMQVSADQcACaiICIAEQViAAIAIQL0EAIQQLIANBoAZqJAAgBAtzAQN/IwBBoAZrIgMkAEF/IQQCQCADQYAFaiIFIAEQNA0AIAUQTUUNACADQeADaiIBIAIQNA0AIAEQTUUNACADIAEQECADQaABaiIBIAUgAxATIANBwAJqIgIgARBWIAAgAhAvQQAhBAsgA0GgBmokACAEC0ABAn8jAEGgAWsiASQAAkAgABBrRQ0AIAAQTA0AIAEgABA0DQAgARBNRQ0AIAEQbEEARyECCyABQaABaiQAIAILBgBBwP8AC7UCAgV/AX4jAEHwA2siBSQAIAVBAToADwJ/IAFBwP8ATQRAIAFBwABPBEAgAEFAaiEJIAOtIQpBwAAhBgNAIAYhByAFQdAAaiIGIARBwAAQLhogCARAIAYgCCAJakLAABAmGgsgBUHQAGoiBiACIAoQJhogBiAFQQ9qQgEQJhogBiAAIAhqEDEaIAUgBS0AD0EBajoADyAHIQggB0FAayIGIAFNDQALCyABQT9xIggEQCAFQdAAaiIBIARBwAAQ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ZABcjnj+aHy+ALWxPv/6KVUAmIIqAWD89gCXlz/+74U+ACA4nAAtp73/joWzAYNW0wC7s5b++qoO/9KjTgAlNJcAY00aAO6c1f/VwNEBSS5UABRBKQE2zk8AyYOS/qpvGP+xITL+qybL/073dADR3ZkAhYCyATosGQDJJzsBvRP8ADHl0gF1u3UAtbO4AQBy2wAwXpMA9Sk4AH0NzP70rXcALN0g/lTqFAD5oMYB7H7q/y9jqP6q4pn/ZrPYAOKNev96Qpn+tvWGAOPkGQHWOev/2K04/7Xn0gB3gJ3/gV+I/25+MwACqbf/B4Ji/kWwXv90BOMB2fKR/8qtHwFpASf/Lq9FAOQvOv/X4EX+zzhF/xD+i/8Xz9T/yhR+/1/VYP8JsCEAyAXP//EqgP4jIcD/+OXEAYEReAD7Z5f/BzRw/4w4Qv8o4vX/2UYl/qzWCf9IQ4YBksDW/ywmcABEuEv/zlr7AJXrjQC1qjoAdPTvAFydAgBmrWIA6YlgAX8xywAFm5QAF5QJ/9N6DAAihhr/28yIAIYIKf/gUyv+VRn3AG1/AP6piDAA7nfb/+et1QDOEv7+CLoH/34JBwFvKkgAbzTs/mA/jQCTv3/+zU7A/w5q7QG720wAr/O7/mlZrQBVGVkBovOUAAJ20f4hngkAi6Mu/11GKABsKo7+b/yO/5vfkAAz5af/Sfyb/150DP+YoNr/nO4l/7Pqz//FALP/mqSNAOHEaAAKIxn+0dTy/2H93v64ZeUA3hJ/AaSIh/8ez4z+kmHzAIHAGv7JVCH/bwpO/5NRsv8EBBgAoe7X/waNIQA11w7/KbXQ/+eLnQCzy93//7lxAL3irP9xQtb/yj4t/2ZACP9OrhD+hXVE/wBBoBULAQEAQcAVC7ABJuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQAQf8WC6zxARD9QF0AoGo/ADnTV/4M0roAWLx0/kHYAQD/yD0B2EKU/wD7XAAksuH/AAAA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AZGInAD8dan+keLuAO8XawBttbz/5nAx/kmq7f/nt+P/UNwUAMJrfwF/zWUALjTFAdKrJP9YA1r/OJeNAGC7//8qTsgA/kZGAfR9qADMRIoBfNdGAGZCyP4RNOQAddyP/sv4ewA4Eq7/upek/zPo0AGg5Cv/+R0ZAUS+PwANAAAAAP8AAAAA9QAAAAAAAPsAAAAAAAD9AAAAAPMAAAAABwAAAAAAAwAAAADzAAAAAAUAAAAAAAAAAAsAAAAAAAsAAAAA8wAAAAAAAP0AAAAAAP8AAAAAAwAAAAD1AAAAAAAAAA8AAAAAAP8AAAAA/wAAAAAHAAAAAAUAQayJAgsrAQAAAHbBXwBlcAL/UPyh/vJqxv+FBrIA5N9wAN/uVf4z8xoAPiuL/stBCgBB4IkCC1czTe0AkapW/zYmM//xgGX/KXlK/+xOmwCpl2n+nClIAMJmr//OomX/AAAAAAAAAAAbLnsBEqj9/9Ovl/7D22AAOHa+/v7R9f+ZZH7+6IEV/zW48v/HpN0AQeCKAgsBAQBBgIsCC/EG4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f0xpYnNvZGl1bURSRwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4K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\"),A=I,J(b).then((I=>WebAssembly.instantiate(I,A))).then((function(A){g(A.instance)}),(A=>{e(`failed to asynchronously prepare wasm: ${A}`),U(A)})),{}}();function q(){function A(){l||(l=!0,B.calledRun=!0,n||(m(S),B.onRuntimeInitialized?.(),function(){if(B.postRun)for(\"function\"==typeof B.postRun&&(B.postRun=[B.postRun]);B.postRun.length;)A=B.postRun.shift(),N.unshift(A);var A;m(N)}()))}G>0||(function(){if(B.preRun)for(\"function\"==typeof B.preRun&&(B.preRun=[B.preRun]);B.preRun.length;)A=B.preRun.shift(),F.unshift(A);var A;m(F)}(),G>0||(B.setStatus?(B.setStatus(\"Running...\"),setTimeout((function(){setTimeout((function(){B.setStatus(\"\")}),1),A()}),1)):A()))}if(B._crypto_aead_aegis128l_keybytes=()=>(B._crypto_aead_aegis128l_keybytes=P.g)(),B._crypto_aead_aegis128l_nsecbytes=()=>(B._crypto_aead_aegis128l_nsecbytes=P.h)(),B._crypto_aead_aegis128l_npubbytes=()=>(B._crypto_aead_aegis128l_npubbytes=P.i)(),B._crypto_aead_aegis128l_abytes=()=>(B._crypto_aead_aegis128l_abytes=P.j)(),B._crypto_aead_aegis128l_messagebytes_max=()=>(B._crypto_aead_aegis128l_messagebytes_max=P.k)(),B._crypto_aead_aegis128l_keygen=A=>(B._crypto_aead_aegis128l_keygen=P.l)(A),B._crypto_aead_aegis128l_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_encrypt=P.m)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis128l_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_aegis128l_encrypt_detached=P.n)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_aegis128l_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_decrypt=P.o)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis128l_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis128l_decrypt_detached=P.p)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_keybytes=()=>(B._crypto_aead_aegis256_keybytes=P.q)(),B._crypto_aead_aegis256_nsecbytes=()=>(B._crypto_aead_aegis256_nsecbytes=P.r)(),B._crypto_aead_aegis256_npubbytes=()=>(B._crypto_aead_aegis256_npubbytes=P.s)(),B._crypto_aead_aegis256_abytes=()=>(B._crypto_aead_aegis256_abytes=P.t)(),B._crypto_aead_aegis256_messagebytes_max=()=>(B._crypto_aead_aegis256_messagebytes_max=P.u)(),B._crypto_aead_aegis256_keygen=A=>(B._crypto_aead_aegis256_keygen=P.v)(A),B._crypto_aead_aegis256_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_encrypt=P.w)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_aegis256_encrypt_detached=P.x)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_aegis256_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_decrypt=P.y)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aegis256_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_aegis256_decrypt_detached=P.z)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_aes256gcm_is_available=()=>(B._crypto_aead_aes256gcm_is_available=P.A)(),B._crypto_aead_chacha20poly1305_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_chacha20poly1305_encrypt_detached=P.B)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_chacha20poly1305_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_encrypt=P.C)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_chacha20poly1305_ietf_encrypt_detached=P.D)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_chacha20poly1305_ietf_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_encrypt=P.E)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_decrypt_detached=P.F)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_decrypt=P.G)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_decrypt_detached=P.H)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_chacha20poly1305_ietf_decrypt=P.I)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(B._crypto_aead_chacha20poly1305_ietf_keybytes=P.J)(),B._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(B._crypto_aead_chacha20poly1305_ietf_npubbytes=P.K)(),B._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(B._crypto_aead_chacha20poly1305_ietf_nsecbytes=P.L)(),B._crypto_aead_chacha20poly1305_ietf_abytes=()=>(B._crypto_aead_chacha20poly1305_ietf_abytes=P.M)(),B._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(B._crypto_aead_chacha20poly1305_ietf_messagebytes_max=P.N)(),B._crypto_aead_chacha20poly1305_ietf_keygen=A=>(B._crypto_aead_chacha20poly1305_ietf_keygen=P.O)(A),B._crypto_aead_chacha20poly1305_keybytes=()=>(B._crypto_aead_chacha20poly1305_keybytes=P.P)(),B._crypto_aead_chacha20poly1305_npubbytes=()=>(B._crypto_aead_chacha20poly1305_npubbytes=P.Q)(),B._crypto_aead_chacha20poly1305_nsecbytes=()=>(B._crypto_aead_chacha20poly1305_nsecbytes=P.R)(),B._crypto_aead_chacha20poly1305_abytes=()=>(B._crypto_aead_chacha20poly1305_abytes=P.S)(),B._crypto_aead_chacha20poly1305_messagebytes_max=()=>(B._crypto_aead_chacha20poly1305_messagebytes_max=P.T)(),B._crypto_aead_chacha20poly1305_keygen=A=>(B._crypto_aead_chacha20poly1305_keygen=P.U)(A),B._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c,t)=>(B._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=P.V)(A,I,g,C,Q,i,o,E,a,_,c,t),B._crypto_aead_xchacha20poly1305_ietf_encrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_encrypt=P.W)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=P.X)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_decrypt=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_aead_xchacha20poly1305_ietf_decrypt=P.Y)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_keybytes=P.Z)(),B._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_npubbytes=P._)(),B._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_nsecbytes=P.$)(),B._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(B._crypto_aead_xchacha20poly1305_ietf_abytes=P.aa)(),B._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(B._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=P.ba)(),B._crypto_aead_xchacha20poly1305_ietf_keygen=A=>(B._crypto_aead_xchacha20poly1305_ietf_keygen=P.ca)(A),B._crypto_auth_bytes=()=>(B._crypto_auth_bytes=P.da)(),B._crypto_auth_keybytes=()=>(B._crypto_auth_keybytes=P.ea)(),B._crypto_auth_primitive=()=>(B._crypto_auth_primitive=P.fa)(),B._crypto_auth=(A,I,g,C,Q)=>(B._crypto_auth=P.ga)(A,I,g,C,Q),B._crypto_auth_verify=(A,I,g,C,Q)=>(B._crypto_auth_verify=P.ha)(A,I,g,C,Q),B._crypto_auth_keygen=A=>(B._crypto_auth_keygen=P.ia)(A),B._crypto_auth_hmacsha256_bytes=()=>(B._crypto_auth_hmacsha256_bytes=P.ja)(),B._crypto_auth_hmacsha256_keybytes=()=>(B._crypto_auth_hmacsha256_keybytes=P.ka)(),B._crypto_auth_hmacsha256_statebytes=()=>(B._crypto_auth_hmacsha256_statebytes=P.la)(),B._crypto_auth_hmacsha256_keygen=A=>(B._crypto_auth_hmacsha256_keygen=P.ma)(A),B._crypto_auth_hmacsha256_init=(A,I,g)=>(B._crypto_auth_hmacsha256_init=P.na)(A,I,g),B._crypto_auth_hmacsha256_update=(A,I,g,C)=>(B._crypto_auth_hmacsha256_update=P.oa)(A,I,g,C),B._crypto_auth_hmacsha256_final=(A,I)=>(B._crypto_auth_hmacsha256_final=P.pa)(A,I),B._crypto_auth_hmacsha256=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha256=P.qa)(A,I,g,C,Q),B._crypto_auth_hmacsha256_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha256_verify=P.ra)(A,I,g,C,Q),B._crypto_auth_hmacsha512_bytes=()=>(B._crypto_auth_hmacsha512_bytes=P.sa)(),B._crypto_auth_hmacsha512_keybytes=()=>(B._crypto_auth_hmacsha512_keybytes=P.ta)(),B._crypto_auth_hmacsha512_statebytes=()=>(B._crypto_auth_hmacsha512_statebytes=P.ua)(),B._crypto_auth_hmacsha512_keygen=A=>(B._crypto_auth_hmacsha512_keygen=P.va)(A),B._crypto_auth_hmacsha512_init=(A,I,g)=>(B._crypto_auth_hmacsha512_init=P.wa)(A,I,g),B._crypto_auth_hmacsha512_update=(A,I,g,C)=>(B._crypto_auth_hmacsha512_update=P.xa)(A,I,g,C),B._crypto_auth_hmacsha512_final=(A,I)=>(B._crypto_auth_hmacsha512_final=P.ya)(A,I),B._crypto_auth_hmacsha512=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512=P.za)(A,I,g,C,Q),B._crypto_auth_hmacsha512_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512_verify=P.Aa)(A,I,g,C,Q),B._crypto_auth_hmacsha512256_bytes=()=>(B._crypto_auth_hmacsha512256_bytes=P.Ba)(),B._crypto_auth_hmacsha512256_keybytes=()=>(B._crypto_auth_hmacsha512256_keybytes=P.Ca)(),B._crypto_auth_hmacsha512256_statebytes=()=>(B._crypto_auth_hmacsha512256_statebytes=P.Da)(),B._crypto_auth_hmacsha512256_keygen=A=>(B._crypto_auth_hmacsha512256_keygen=P.Ea)(A),B._crypto_auth_hmacsha512256_init=(A,I,g)=>(B._crypto_auth_hmacsha512256_init=P.Fa)(A,I,g),B._crypto_auth_hmacsha512256_update=(A,I,g,C)=>(B._crypto_auth_hmacsha512256_update=P.Ga)(A,I,g,C),B._crypto_auth_hmacsha512256_final=(A,I)=>(B._crypto_auth_hmacsha512256_final=P.Ha)(A,I),B._crypto_auth_hmacsha512256=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512256=P.Ia)(A,I,g,C,Q),B._crypto_auth_hmacsha512256_verify=(A,I,g,C,Q)=>(B._crypto_auth_hmacsha512256_verify=P.Ja)(A,I,g,C,Q),B._crypto_box_seedbytes=()=>(B._crypto_box_seedbytes=P.Ka)(),B._crypto_box_publickeybytes=()=>(B._crypto_box_publickeybytes=P.La)(),B._crypto_box_secretkeybytes=()=>(B._crypto_box_secretkeybytes=P.Ma)(),B._crypto_box_beforenmbytes=()=>(B._crypto_box_beforenmbytes=P.Na)(),B._crypto_box_noncebytes=()=>(B._crypto_box_noncebytes=P.Oa)(),B._crypto_box_zerobytes=()=>(B._crypto_box_zerobytes=P.Pa)(),B._crypto_box_boxzerobytes=()=>(B._crypto_box_boxzerobytes=P.Qa)(),B._crypto_box_macbytes=()=>(B._crypto_box_macbytes=P.Ra)(),B._crypto_box_messagebytes_max=()=>(B._crypto_box_messagebytes_max=P.Sa)(),B._crypto_box_primitive=()=>(B._crypto_box_primitive=P.Ta)(),B._crypto_box_seed_keypair=(A,I,g)=>(B._crypto_box_seed_keypair=P.Ua)(A,I,g),B._crypto_box_keypair=(A,I)=>(B._crypto_box_keypair=P.Va)(A,I),B._crypto_box_beforenm=(A,I,g)=>(B._crypto_box_beforenm=P.Wa)(A,I,g),B._crypto_box_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_afternm=P.Xa)(A,I,g,C,Q,i),B._crypto_box_open_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_open_afternm=P.Ya)(A,I,g,C,Q,i),B._crypto_box=(A,I,g,C,Q,i,o)=>(B._crypto_box=P.Za)(A,I,g,C,Q,i,o),B._crypto_box_open=(A,I,g,C,Q,i,o)=>(B._crypto_box_open=P._a)(A,I,g,C,Q,i,o),B._crypto_box_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_detached_afternm=P.$a)(A,I,g,C,Q,i,o),B._crypto_box_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_detached=P.ab)(A,I,g,C,Q,i,o,E),B._crypto_box_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_easy_afternm=P.bb)(A,I,g,C,Q,i),B._crypto_box_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_easy=P.cb)(A,I,g,C,Q,i,o),B._crypto_box_open_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_open_detached_afternm=P.db)(A,I,g,C,Q,i,o),B._crypto_box_open_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_open_detached=P.eb)(A,I,g,C,Q,i,o,E),B._crypto_box_open_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_open_easy_afternm=P.fb)(A,I,g,C,Q,i),B._crypto_box_open_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_open_easy=P.gb)(A,I,g,C,Q,i,o),B._crypto_box_seal=(A,I,g,C,Q)=>(B._crypto_box_seal=P.hb)(A,I,g,C,Q),B._crypto_box_seal_open=(A,I,g,C,Q,i)=>(B._crypto_box_seal_open=P.ib)(A,I,g,C,Q,i),B._crypto_box_sealbytes=()=>(B._crypto_box_sealbytes=P.jb)(),B._crypto_box_curve25519xsalsa20poly1305_seed_keypair=(A,I,g)=>(B._crypto_box_curve25519xsalsa20poly1305_seed_keypair=P.kb)(A,I,g),B._crypto_box_curve25519xsalsa20poly1305_keypair=(A,I)=>(B._crypto_box_curve25519xsalsa20poly1305_keypair=P.lb)(A,I),B._crypto_box_curve25519xsalsa20poly1305_beforenm=(A,I,g)=>(B._crypto_box_curve25519xsalsa20poly1305_beforenm=P.mb)(A,I,g),B._crypto_box_curve25519xsalsa20poly1305_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xsalsa20poly1305_afternm=P.nb)(A,I,g,C,Q,i),B._crypto_box_curve25519xsalsa20poly1305_open_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xsalsa20poly1305_open_afternm=P.ob)(A,I,g,C,Q,i),B._crypto_box_curve25519xsalsa20poly1305=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xsalsa20poly1305=P.pb)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xsalsa20poly1305_open=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xsalsa20poly1305_open=P.qb)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xsalsa20poly1305_seedbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_seedbytes=P.rb)(),B._crypto_box_curve25519xsalsa20poly1305_publickeybytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_publickeybytes=P.sb)(),B._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=P.tb)(),B._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=P.ub)(),B._crypto_box_curve25519xsalsa20poly1305_noncebytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_noncebytes=P.vb)(),B._crypto_box_curve25519xsalsa20poly1305_zerobytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_zerobytes=P.wb)(),B._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=P.xb)(),B._crypto_box_curve25519xsalsa20poly1305_macbytes=()=>(B._crypto_box_curve25519xsalsa20poly1305_macbytes=P.yb)(),B._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=()=>(B._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=P.zb)(),B._crypto_core_hchacha20=(A,I,g,C)=>(B._crypto_core_hchacha20=P.Ab)(A,I,g,C),B._crypto_core_hchacha20_outputbytes=()=>(B._crypto_core_hchacha20_outputbytes=P.Bb)(),B._crypto_core_hchacha20_inputbytes=()=>(B._crypto_core_hchacha20_inputbytes=P.Cb)(),B._crypto_core_hchacha20_keybytes=()=>(B._crypto_core_hchacha20_keybytes=P.Db)(),B._crypto_core_hchacha20_constbytes=()=>(B._crypto_core_hchacha20_constbytes=P.Eb)(),B._crypto_core_hsalsa20=(A,I,g,C)=>(B._crypto_core_hsalsa20=P.Fb)(A,I,g,C),B._crypto_core_hsalsa20_outputbytes=()=>(B._crypto_core_hsalsa20_outputbytes=P.Gb)(),B._crypto_core_hsalsa20_inputbytes=()=>(B._crypto_core_hsalsa20_inputbytes=P.Hb)(),B._crypto_core_hsalsa20_keybytes=()=>(B._crypto_core_hsalsa20_keybytes=P.Ib)(),B._crypto_core_hsalsa20_constbytes=()=>(B._crypto_core_hsalsa20_constbytes=P.Jb)(),B._crypto_core_salsa20=(A,I,g,C)=>(B._crypto_core_salsa20=P.Kb)(A,I,g,C),B._crypto_core_salsa20_outputbytes=()=>(B._crypto_core_salsa20_outputbytes=P.Lb)(),B._crypto_core_salsa20_inputbytes=()=>(B._crypto_core_salsa20_inputbytes=P.Mb)(),B._crypto_core_salsa20_keybytes=()=>(B._crypto_core_salsa20_keybytes=P.Nb)(),B._crypto_core_salsa20_constbytes=()=>(B._crypto_core_salsa20_constbytes=P.Ob)(),B._crypto_core_salsa2012=(A,I,g,C)=>(B._crypto_core_salsa2012=P.Pb)(A,I,g,C),B._crypto_core_salsa2012_outputbytes=()=>(B._crypto_core_salsa2012_outputbytes=P.Qb)(),B._crypto_core_salsa2012_inputbytes=()=>(B._crypto_core_salsa2012_inputbytes=P.Rb)(),B._crypto_core_salsa2012_keybytes=()=>(B._crypto_core_salsa2012_keybytes=P.Sb)(),B._crypto_core_salsa2012_constbytes=()=>(B._crypto_core_salsa2012_constbytes=P.Tb)(),B._crypto_core_salsa208=(A,I,g,C)=>(B._crypto_core_salsa208=P.Ub)(A,I,g,C),B._crypto_core_salsa208_outputbytes=()=>(B._crypto_core_salsa208_outputbytes=P.Vb)(),B._crypto_core_salsa208_inputbytes=()=>(B._crypto_core_salsa208_inputbytes=P.Wb)(),B._crypto_core_salsa208_keybytes=()=>(B._crypto_core_salsa208_keybytes=P.Xb)(),B._crypto_core_salsa208_constbytes=()=>(B._crypto_core_salsa208_constbytes=P.Yb)(),B._crypto_generichash_bytes_min=()=>(B._crypto_generichash_bytes_min=P.Zb)(),B._crypto_generichash_bytes_max=()=>(B._crypto_generichash_bytes_max=P._b)(),B._crypto_generichash_bytes=()=>(B._crypto_generichash_bytes=P.$b)(),B._crypto_generichash_keybytes_min=()=>(B._crypto_generichash_keybytes_min=P.ac)(),B._crypto_generichash_keybytes_max=()=>(B._crypto_generichash_keybytes_max=P.bc)(),B._crypto_generichash_keybytes=()=>(B._crypto_generichash_keybytes=P.cc)(),B._crypto_generichash_primitive=()=>(B._crypto_generichash_primitive=P.dc)(),B._crypto_generichash_statebytes=()=>(B._crypto_generichash_statebytes=P.ec)(),B._crypto_generichash=(A,I,g,C,Q,i,o)=>(B._crypto_generichash=P.fc)(A,I,g,C,Q,i,o),B._crypto_generichash_init=(A,I,g,C)=>(B._crypto_generichash_init=P.gc)(A,I,g,C),B._crypto_generichash_update=(A,I,g,C)=>(B._crypto_generichash_update=P.hc)(A,I,g,C),B._crypto_generichash_final=(A,I,g)=>(B._crypto_generichash_final=P.ic)(A,I,g),B._crypto_generichash_keygen=A=>(B._crypto_generichash_keygen=P.jc)(A),B._crypto_generichash_blake2b_bytes_min=()=>(B._crypto_generichash_blake2b_bytes_min=P.kc)(),B._crypto_generichash_blake2b_bytes_max=()=>(B._crypto_generichash_blake2b_bytes_max=P.lc)(),B._crypto_generichash_blake2b_bytes=()=>(B._crypto_generichash_blake2b_bytes=P.mc)(),B._crypto_generichash_blake2b_keybytes_min=()=>(B._crypto_generichash_blake2b_keybytes_min=P.nc)(),B._crypto_generichash_blake2b_keybytes_max=()=>(B._crypto_generichash_blake2b_keybytes_max=P.oc)(),B._crypto_generichash_blake2b_keybytes=()=>(B._crypto_generichash_blake2b_keybytes=P.pc)(),B._crypto_generichash_blake2b_saltbytes=()=>(B._crypto_generichash_blake2b_saltbytes=P.qc)(),B._crypto_generichash_blake2b_personalbytes=()=>(B._crypto_generichash_blake2b_personalbytes=P.rc)(),B._crypto_generichash_blake2b_statebytes=()=>(B._crypto_generichash_blake2b_statebytes=P.sc)(),B._crypto_generichash_blake2b_keygen=A=>(B._crypto_generichash_blake2b_keygen=P.tc)(A),B._crypto_generichash_blake2b=(A,I,g,C,Q,i,o)=>(B._crypto_generichash_blake2b=P.uc)(A,I,g,C,Q,i,o),B._crypto_generichash_blake2b_salt_personal=(A,I,g,C,Q,i,o,E,a)=>(B._crypto_generichash_blake2b_salt_personal=P.vc)(A,I,g,C,Q,i,o,E,a),B._crypto_generichash_blake2b_init=(A,I,g,C)=>(B._crypto_generichash_blake2b_init=P.wc)(A,I,g,C),B._crypto_generichash_blake2b_init_salt_personal=(A,I,g,C,Q,i)=>(B._crypto_generichash_blake2b_init_salt_personal=P.xc)(A,I,g,C,Q,i),B._crypto_generichash_blake2b_update=(A,I,g,C)=>(B._crypto_generichash_blake2b_update=P.yc)(A,I,g,C),B._crypto_generichash_blake2b_final=(A,I,g)=>(B._crypto_generichash_blake2b_final=P.zc)(A,I,g),B._crypto_hash_bytes=()=>(B._crypto_hash_bytes=P.Ac)(),B._crypto_hash=(A,I,g,C)=>(B._crypto_hash=P.Bc)(A,I,g,C),B._crypto_hash_primitive=()=>(B._crypto_hash_primitive=P.Cc)(),B._crypto_hash_sha256_bytes=()=>(B._crypto_hash_sha256_bytes=P.Dc)(),B._crypto_hash_sha256_statebytes=()=>(B._crypto_hash_sha256_statebytes=P.Ec)(),B._crypto_hash_sha256_init=A=>(B._crypto_hash_sha256_init=P.Fc)(A),B._crypto_hash_sha256_update=(A,I,g,C)=>(B._crypto_hash_sha256_update=P.Gc)(A,I,g,C),B._crypto_hash_sha256_final=(A,I)=>(B._crypto_hash_sha256_final=P.Hc)(A,I),B._crypto_hash_sha256=(A,I,g,C)=>(B._crypto_hash_sha256=P.Ic)(A,I,g,C),B._crypto_hash_sha512_bytes=()=>(B._crypto_hash_sha512_bytes=P.Jc)(),B._crypto_hash_sha512_statebytes=()=>(B._crypto_hash_sha512_statebytes=P.Kc)(),B._crypto_hash_sha512_init=A=>(B._crypto_hash_sha512_init=P.Lc)(A),B._crypto_hash_sha512_update=(A,I,g,C)=>(B._crypto_hash_sha512_update=P.Mc)(A,I,g,C),B._crypto_hash_sha512_final=(A,I)=>(B._crypto_hash_sha512_final=P.Nc)(A,I),B._crypto_hash_sha512=(A,I,g,C)=>(B._crypto_hash_sha512=P.Oc)(A,I,g,C),B._crypto_kdf_blake2b_bytes_min=()=>(B._crypto_kdf_blake2b_bytes_min=P.Pc)(),B._crypto_kdf_blake2b_bytes_max=()=>(B._crypto_kdf_blake2b_bytes_max=P.Qc)(),B._crypto_kdf_blake2b_contextbytes=()=>(B._crypto_kdf_blake2b_contextbytes=P.Rc)(),B._crypto_kdf_blake2b_keybytes=()=>(B._crypto_kdf_blake2b_keybytes=P.Sc)(),B._crypto_kdf_blake2b_derive_from_key=(A,I,g,C,Q,i)=>(B._crypto_kdf_blake2b_derive_from_key=P.Tc)(A,I,g,C,Q,i),B._crypto_kdf_primitive=()=>(B._crypto_kdf_primitive=P.Uc)(),B._crypto_kdf_bytes_min=()=>(B._crypto_kdf_bytes_min=P.Vc)(),B._crypto_kdf_bytes_max=()=>(B._crypto_kdf_bytes_max=P.Wc)(),B._crypto_kdf_contextbytes=()=>(B._crypto_kdf_contextbytes=P.Xc)(),B._crypto_kdf_keybytes=()=>(B._crypto_kdf_keybytes=P.Yc)(),B._crypto_kdf_derive_from_key=(A,I,g,C,Q,i)=>(B._crypto_kdf_derive_from_key=P.Zc)(A,I,g,C,Q,i),B._crypto_kdf_keygen=A=>(B._crypto_kdf_keygen=P._c)(A),B._crypto_kdf_hkdf_sha256_extract_init=(A,I,g)=>(B._crypto_kdf_hkdf_sha256_extract_init=P.$c)(A,I,g),B._crypto_kdf_hkdf_sha256_extract_update=(A,I,g)=>(B._crypto_kdf_hkdf_sha256_extract_update=P.ad)(A,I,g),B._crypto_kdf_hkdf_sha256_extract_final=(A,I)=>(B._crypto_kdf_hkdf_sha256_extract_final=P.bd)(A,I),B._crypto_kdf_hkdf_sha256_extract=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha256_extract=P.cd)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha256_keygen=A=>(B._crypto_kdf_hkdf_sha256_keygen=P.dd)(A),B._crypto_kdf_hkdf_sha256_expand=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha256_expand=P.ed)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha256_keybytes=()=>(B._crypto_kdf_hkdf_sha256_keybytes=P.fd)(),B._crypto_kdf_hkdf_sha256_bytes_min=()=>(B._crypto_kdf_hkdf_sha256_bytes_min=P.gd)(),B._crypto_kdf_hkdf_sha256_bytes_max=()=>(B._crypto_kdf_hkdf_sha256_bytes_max=P.hd)(),B._crypto_kdf_hkdf_sha256_statebytes=()=>(B._crypto_kdf_hkdf_sha256_statebytes=P.id)(),B._crypto_kdf_hkdf_sha512_extract_init=(A,I,g)=>(B._crypto_kdf_hkdf_sha512_extract_init=P.jd)(A,I,g),B._crypto_kdf_hkdf_sha512_extract_update=(A,I,g)=>(B._crypto_kdf_hkdf_sha512_extract_update=P.kd)(A,I,g),B._crypto_kdf_hkdf_sha512_extract_final=(A,I)=>(B._crypto_kdf_hkdf_sha512_extract_final=P.ld)(A,I),B._crypto_kdf_hkdf_sha512_extract=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha512_extract=P.md)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha512_keygen=A=>(B._crypto_kdf_hkdf_sha512_keygen=P.nd)(A),B._crypto_kdf_hkdf_sha512_expand=(A,I,g,C,Q)=>(B._crypto_kdf_hkdf_sha512_expand=P.od)(A,I,g,C,Q),B._crypto_kdf_hkdf_sha512_keybytes=()=>(B._crypto_kdf_hkdf_sha512_keybytes=P.pd)(),B._crypto_kdf_hkdf_sha512_bytes_min=()=>(B._crypto_kdf_hkdf_sha512_bytes_min=P.qd)(),B._crypto_kdf_hkdf_sha512_bytes_max=()=>(B._crypto_kdf_hkdf_sha512_bytes_max=P.rd)(),B._crypto_kdf_hkdf_sha512_statebytes=()=>(B._crypto_kdf_hkdf_sha512_statebytes=P.sd)(),B._crypto_kx_seed_keypair=(A,I,g)=>(B._crypto_kx_seed_keypair=P.td)(A,I,g),B._crypto_kx_keypair=(A,I)=>(B._crypto_kx_keypair=P.ud)(A,I),B._crypto_kx_client_session_keys=(A,I,g,C,Q)=>(B._crypto_kx_client_session_keys=P.vd)(A,I,g,C,Q),B._crypto_kx_server_session_keys=(A,I,g,C,Q)=>(B._crypto_kx_server_session_keys=P.wd)(A,I,g,C,Q),B._crypto_kx_publickeybytes=()=>(B._crypto_kx_publickeybytes=P.xd)(),B._crypto_kx_secretkeybytes=()=>(B._crypto_kx_secretkeybytes=P.yd)(),B._crypto_kx_seedbytes=()=>(B._crypto_kx_seedbytes=P.zd)(),B._crypto_kx_sessionkeybytes=()=>(B._crypto_kx_sessionkeybytes=P.Ad)(),B._crypto_kx_primitive=()=>(B._crypto_kx_primitive=P.Bd)(),B._crypto_onetimeauth_statebytes=()=>(B._crypto_onetimeauth_statebytes=P.Cd)(),B._crypto_onetimeauth_bytes=()=>(B._crypto_onetimeauth_bytes=P.Dd)(),B._crypto_onetimeauth_keybytes=()=>(B._crypto_onetimeauth_keybytes=P.Ed)(),B._crypto_onetimeauth=(A,I,g,C,Q)=>(B._crypto_onetimeauth=P.Fd)(A,I,g,C,Q),B._crypto_onetimeauth_verify=(A,I,g,C,Q)=>(B._crypto_onetimeauth_verify=P.Gd)(A,I,g,C,Q),B._crypto_onetimeauth_init=(A,I)=>(B._crypto_onetimeauth_init=P.Hd)(A,I),B._crypto_onetimeauth_update=(A,I,g,C)=>(B._crypto_onetimeauth_update=P.Id)(A,I,g,C),B._crypto_onetimeauth_final=(A,I)=>(B._crypto_onetimeauth_final=P.Jd)(A,I),B._crypto_onetimeauth_primitive=()=>(B._crypto_onetimeauth_primitive=P.Kd)(),B._crypto_onetimeauth_keygen=A=>(B._crypto_onetimeauth_keygen=P.Ld)(A),B._crypto_onetimeauth_poly1305=(A,I,g,C,Q)=>(B._crypto_onetimeauth_poly1305=P.Md)(A,I,g,C,Q),B._crypto_onetimeauth_poly1305_verify=(A,I,g,C,Q)=>(B._crypto_onetimeauth_poly1305_verify=P.Nd)(A,I,g,C,Q),B._crypto_onetimeauth_poly1305_init=(A,I)=>(B._crypto_onetimeauth_poly1305_init=P.Od)(A,I),B._crypto_onetimeauth_poly1305_update=(A,I,g,C)=>(B._crypto_onetimeauth_poly1305_update=P.Pd)(A,I,g,C),B._crypto_onetimeauth_poly1305_final=(A,I)=>(B._crypto_onetimeauth_poly1305_final=P.Qd)(A,I),B._crypto_onetimeauth_poly1305_bytes=()=>(B._crypto_onetimeauth_poly1305_bytes=P.Rd)(),B._crypto_onetimeauth_poly1305_keybytes=()=>(B._crypto_onetimeauth_poly1305_keybytes=P.Sd)(),B._crypto_onetimeauth_poly1305_statebytes=()=>(B._crypto_onetimeauth_poly1305_statebytes=P.Td)(),B._crypto_onetimeauth_poly1305_keygen=A=>(B._crypto_onetimeauth_poly1305_keygen=P.Ud)(A),B._crypto_pwhash_argon2i_alg_argon2i13=()=>(B._crypto_pwhash_argon2i_alg_argon2i13=P.Vd)(),B._crypto_pwhash_argon2i_bytes_min=()=>(B._crypto_pwhash_argon2i_bytes_min=P.Wd)(),B._crypto_pwhash_argon2i_bytes_max=()=>(B._crypto_pwhash_argon2i_bytes_max=P.Xd)(),B._crypto_pwhash_argon2i_passwd_min=()=>(B._crypto_pwhash_argon2i_passwd_min=P.Yd)(),B._crypto_pwhash_argon2i_passwd_max=()=>(B._crypto_pwhash_argon2i_passwd_max=P.Zd)(),B._crypto_pwhash_argon2i_saltbytes=()=>(B._crypto_pwhash_argon2i_saltbytes=P._d)(),B._crypto_pwhash_argon2i_strbytes=()=>(B._crypto_pwhash_argon2i_strbytes=P.$d)(),B._crypto_pwhash_argon2i_strprefix=()=>(B._crypto_pwhash_argon2i_strprefix=P.ae)(),B._crypto_pwhash_argon2i_opslimit_min=()=>(B._crypto_pwhash_argon2i_opslimit_min=P.be)(),B._crypto_pwhash_argon2i_opslimit_max=()=>(B._crypto_pwhash_argon2i_opslimit_max=P.ce)(),B._crypto_pwhash_argon2i_memlimit_min=()=>(B._crypto_pwhash_argon2i_memlimit_min=P.de)(),B._crypto_pwhash_argon2i_memlimit_max=()=>(B._crypto_pwhash_argon2i_memlimit_max=P.ee)(),B._crypto_pwhash_argon2i_opslimit_interactive=()=>(B._crypto_pwhash_argon2i_opslimit_interactive=P.fe)(),B._crypto_pwhash_argon2i_memlimit_interactive=()=>(B._crypto_pwhash_argon2i_memlimit_interactive=P.ge)(),B._crypto_pwhash_argon2i_opslimit_moderate=()=>(B._crypto_pwhash_argon2i_opslimit_moderate=P.he)(),B._crypto_pwhash_argon2i_memlimit_moderate=()=>(B._crypto_pwhash_argon2i_memlimit_moderate=P.ie)(),B._crypto_pwhash_argon2i_opslimit_sensitive=()=>(B._crypto_pwhash_argon2i_opslimit_sensitive=P.je)(),B._crypto_pwhash_argon2i_memlimit_sensitive=()=>(B._crypto_pwhash_argon2i_memlimit_sensitive=P.ke)(),B._crypto_pwhash_argon2i=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash_argon2i=P.le)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_argon2i_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_argon2i_str=P.me)(A,I,g,C,Q,i,o),B._crypto_pwhash_argon2i_str_verify=(A,I,g,C)=>(B._crypto_pwhash_argon2i_str_verify=P.ne)(A,I,g,C),B._crypto_pwhash_argon2i_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_argon2i_str_needs_rehash=P.oe)(A,I,g,C),B._crypto_pwhash_argon2id_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_argon2id_str_needs_rehash=P.pe)(A,I,g,C),B._crypto_pwhash_argon2id_alg_argon2id13=()=>(B._crypto_pwhash_argon2id_alg_argon2id13=P.qe)(),B._crypto_pwhash_argon2id_bytes_min=()=>(B._crypto_pwhash_argon2id_bytes_min=P.re)(),B._crypto_pwhash_argon2id_bytes_max=()=>(B._crypto_pwhash_argon2id_bytes_max=P.se)(),B._crypto_pwhash_argon2id_passwd_min=()=>(B._crypto_pwhash_argon2id_passwd_min=P.te)(),B._crypto_pwhash_argon2id_passwd_max=()=>(B._crypto_pwhash_argon2id_passwd_max=P.ue)(),B._crypto_pwhash_argon2id_saltbytes=()=>(B._crypto_pwhash_argon2id_saltbytes=P.ve)(),B._crypto_pwhash_argon2id_strbytes=()=>(B._crypto_pwhash_argon2id_strbytes=P.we)(),B._crypto_pwhash_argon2id_strprefix=()=>(B._crypto_pwhash_argon2id_strprefix=P.xe)(),B._crypto_pwhash_argon2id_opslimit_min=()=>(B._crypto_pwhash_argon2id_opslimit_min=P.ye)(),B._crypto_pwhash_argon2id_opslimit_max=()=>(B._crypto_pwhash_argon2id_opslimit_max=P.ze)(),B._crypto_pwhash_argon2id_memlimit_min=()=>(B._crypto_pwhash_argon2id_memlimit_min=P.Ae)(),B._crypto_pwhash_argon2id_memlimit_max=()=>(B._crypto_pwhash_argon2id_memlimit_max=P.Be)(),B._crypto_pwhash_argon2id_opslimit_interactive=()=>(B._crypto_pwhash_argon2id_opslimit_interactive=P.Ce)(),B._crypto_pwhash_argon2id_memlimit_interactive=()=>(B._crypto_pwhash_argon2id_memlimit_interactive=P.De)(),B._crypto_pwhash_argon2id_opslimit_moderate=()=>(B._crypto_pwhash_argon2id_opslimit_moderate=P.Ee)(),B._crypto_pwhash_argon2id_memlimit_moderate=()=>(B._crypto_pwhash_argon2id_memlimit_moderate=P.Fe)(),B._crypto_pwhash_argon2id_opslimit_sensitive=()=>(B._crypto_pwhash_argon2id_opslimit_sensitive=P.Ge)(),B._crypto_pwhash_argon2id_memlimit_sensitive=()=>(B._crypto_pwhash_argon2id_memlimit_sensitive=P.He)(),B._crypto_pwhash_argon2id=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash_argon2id=P.Ie)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_argon2id_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_argon2id_str=P.Je)(A,I,g,C,Q,i,o),B._crypto_pwhash_argon2id_str_verify=(A,I,g,C)=>(B._crypto_pwhash_argon2id_str_verify=P.Ke)(A,I,g,C),B._crypto_pwhash_alg_argon2i13=()=>(B._crypto_pwhash_alg_argon2i13=P.Le)(),B._crypto_pwhash_alg_argon2id13=()=>(B._crypto_pwhash_alg_argon2id13=P.Me)(),B._crypto_pwhash_alg_default=()=>(B._crypto_pwhash_alg_default=P.Ne)(),B._crypto_pwhash_bytes_min=()=>(B._crypto_pwhash_bytes_min=P.Oe)(),B._crypto_pwhash_bytes_max=()=>(B._crypto_pwhash_bytes_max=P.Pe)(),B._crypto_pwhash_passwd_min=()=>(B._crypto_pwhash_passwd_min=P.Qe)(),B._crypto_pwhash_passwd_max=()=>(B._crypto_pwhash_passwd_max=P.Re)(),B._crypto_pwhash_saltbytes=()=>(B._crypto_pwhash_saltbytes=P.Se)(),B._crypto_pwhash_strbytes=()=>(B._crypto_pwhash_strbytes=P.Te)(),B._crypto_pwhash_strprefix=()=>(B._crypto_pwhash_strprefix=P.Ue)(),B._crypto_pwhash_opslimit_min=()=>(B._crypto_pwhash_opslimit_min=P.Ve)(),B._crypto_pwhash_opslimit_max=()=>(B._crypto_pwhash_opslimit_max=P.We)(),B._crypto_pwhash_memlimit_min=()=>(B._crypto_pwhash_memlimit_min=P.Xe)(),B._crypto_pwhash_memlimit_max=()=>(B._crypto_pwhash_memlimit_max=P.Ye)(),B._crypto_pwhash_opslimit_interactive=()=>(B._crypto_pwhash_opslimit_interactive=P.Ze)(),B._crypto_pwhash_memlimit_interactive=()=>(B._crypto_pwhash_memlimit_interactive=P._e)(),B._crypto_pwhash_opslimit_moderate=()=>(B._crypto_pwhash_opslimit_moderate=P.$e)(),B._crypto_pwhash_memlimit_moderate=()=>(B._crypto_pwhash_memlimit_moderate=P.af)(),B._crypto_pwhash_opslimit_sensitive=()=>(B._crypto_pwhash_opslimit_sensitive=P.bf)(),B._crypto_pwhash_memlimit_sensitive=()=>(B._crypto_pwhash_memlimit_sensitive=P.cf)(),B._crypto_pwhash=(A,I,g,C,Q,i,o,E,a,_,c)=>(B._crypto_pwhash=P.df)(A,I,g,C,Q,i,o,E,a,_,c),B._crypto_pwhash_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_str=P.ef)(A,I,g,C,Q,i,o),B._crypto_pwhash_str_alg=(A,I,g,C,Q,i,o,E)=>(B._crypto_pwhash_str_alg=P.ff)(A,I,g,C,Q,i,o,E),B._crypto_pwhash_str_verify=(A,I,g,C)=>(B._crypto_pwhash_str_verify=P.gf)(A,I,g,C),B._crypto_pwhash_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_str_needs_rehash=P.hf)(A,I,g,C),B._crypto_pwhash_primitive=()=>(B._crypto_pwhash_primitive=P.jf)(),B._crypto_scalarmult_primitive=()=>(B._crypto_scalarmult_primitive=P.kf)(),B._crypto_scalarmult_base=(A,I)=>(B._crypto_scalarmult_base=P.lf)(A,I),B._crypto_scalarmult=(A,I,g)=>(B._crypto_scalarmult=P.mf)(A,I,g),B._crypto_scalarmult_bytes=()=>(B._crypto_scalarmult_bytes=P.nf)(),B._crypto_scalarmult_scalarbytes=()=>(B._crypto_scalarmult_scalarbytes=P.of)(),B._crypto_scalarmult_curve25519=(A,I,g)=>(B._crypto_scalarmult_curve25519=P.pf)(A,I,g),B._crypto_scalarmult_curve25519_base=(A,I)=>(B._crypto_scalarmult_curve25519_base=P.qf)(A,I),B._crypto_scalarmult_curve25519_bytes=()=>(B._crypto_scalarmult_curve25519_bytes=P.rf)(),B._crypto_scalarmult_curve25519_scalarbytes=()=>(B._crypto_scalarmult_curve25519_scalarbytes=P.sf)(),B._crypto_secretbox_keybytes=()=>(B._crypto_secretbox_keybytes=P.tf)(),B._crypto_secretbox_noncebytes=()=>(B._crypto_secretbox_noncebytes=P.uf)(),B._crypto_secretbox_zerobytes=()=>(B._crypto_secretbox_zerobytes=P.vf)(),B._crypto_secretbox_boxzerobytes=()=>(B._crypto_secretbox_boxzerobytes=P.wf)(),B._crypto_secretbox_macbytes=()=>(B._crypto_secretbox_macbytes=P.xf)(),B._crypto_secretbox_messagebytes_max=()=>(B._crypto_secretbox_messagebytes_max=P.yf)(),B._crypto_secretbox_primitive=()=>(B._crypto_secretbox_primitive=P.zf)(),B._crypto_secretbox=(A,I,g,C,Q,i)=>(B._crypto_secretbox=P.Af)(A,I,g,C,Q,i),B._crypto_secretbox_open=(A,I,g,C,Q,i)=>(B._crypto_secretbox_open=P.Bf)(A,I,g,C,Q,i),B._crypto_secretbox_keygen=A=>(B._crypto_secretbox_keygen=P.Cf)(A),B._crypto_secretbox_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_detached=P.Df)(A,I,g,C,Q,i,o),B._crypto_secretbox_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_easy=P.Ef)(A,I,g,C,Q,i),B._crypto_secretbox_open_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_open_detached=P.Ff)(A,I,g,C,Q,i,o),B._crypto_secretbox_open_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_open_easy=P.Gf)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xsalsa20poly1305=P.Hf)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305_open=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xsalsa20poly1305_open=P.If)(A,I,g,C,Q,i),B._crypto_secretbox_xsalsa20poly1305_keybytes=()=>(B._crypto_secretbox_xsalsa20poly1305_keybytes=P.Jf)(),B._crypto_secretbox_xsalsa20poly1305_noncebytes=()=>(B._crypto_secretbox_xsalsa20poly1305_noncebytes=P.Kf)(),B._crypto_secretbox_xsalsa20poly1305_zerobytes=()=>(B._crypto_secretbox_xsalsa20poly1305_zerobytes=P.Lf)(),B._crypto_secretbox_xsalsa20poly1305_boxzerobytes=()=>(B._crypto_secretbox_xsalsa20poly1305_boxzerobytes=P.Mf)(),B._crypto_secretbox_xsalsa20poly1305_macbytes=()=>(B._crypto_secretbox_xsalsa20poly1305_macbytes=P.Nf)(),B._crypto_secretbox_xsalsa20poly1305_messagebytes_max=()=>(B._crypto_secretbox_xsalsa20poly1305_messagebytes_max=P.Of)(),B._crypto_secretbox_xsalsa20poly1305_keygen=A=>(B._crypto_secretbox_xsalsa20poly1305_keygen=P.Pf)(A),B._crypto_secretstream_xchacha20poly1305_keygen=A=>(B._crypto_secretstream_xchacha20poly1305_keygen=P.Qf)(A),B._crypto_secretstream_xchacha20poly1305_init_push=(A,I,g)=>(B._crypto_secretstream_xchacha20poly1305_init_push=P.Rf)(A,I,g),B._crypto_secretstream_xchacha20poly1305_init_pull=(A,I,g)=>(B._crypto_secretstream_xchacha20poly1305_init_pull=P.Sf)(A,I,g),B._crypto_secretstream_xchacha20poly1305_rekey=A=>(B._crypto_secretstream_xchacha20poly1305_rekey=P.Tf)(A),B._crypto_secretstream_xchacha20poly1305_push=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_secretstream_xchacha20poly1305_push=P.Uf)(A,I,g,C,Q,i,o,E,a,_),B._crypto_secretstream_xchacha20poly1305_pull=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_secretstream_xchacha20poly1305_pull=P.Vf)(A,I,g,C,Q,i,o,E,a,_),B._crypto_secretstream_xchacha20poly1305_statebytes=()=>(B._crypto_secretstream_xchacha20poly1305_statebytes=P.Wf)(),B._crypto_secretstream_xchacha20poly1305_abytes=()=>(B._crypto_secretstream_xchacha20poly1305_abytes=P.Xf)(),B._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(B._crypto_secretstream_xchacha20poly1305_headerbytes=P.Yf)(),B._crypto_secretstream_xchacha20poly1305_keybytes=()=>(B._crypto_secretstream_xchacha20poly1305_keybytes=P.Zf)(),B._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(B._crypto_secretstream_xchacha20poly1305_messagebytes_max=P._f)(),B._crypto_secretstream_xchacha20poly1305_tag_message=()=>(B._crypto_secretstream_xchacha20poly1305_tag_message=P.$f)(),B._crypto_secretstream_xchacha20poly1305_tag_push=()=>(B._crypto_secretstream_xchacha20poly1305_tag_push=P.ag)(),B._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(B._crypto_secretstream_xchacha20poly1305_tag_rekey=P.bg)(),B._crypto_secretstream_xchacha20poly1305_tag_final=()=>(B._crypto_secretstream_xchacha20poly1305_tag_final=P.cg)(),B._crypto_shorthash_bytes=()=>(B._crypto_shorthash_bytes=P.dg)(),B._crypto_shorthash_keybytes=()=>(B._crypto_shorthash_keybytes=P.eg)(),B._crypto_shorthash_primitive=()=>(B._crypto_shorthash_primitive=P.fg)(),B._crypto_shorthash=(A,I,g,C,Q)=>(B._crypto_shorthash=P.gg)(A,I,g,C,Q),B._crypto_shorthash_keygen=A=>(B._crypto_shorthash_keygen=P.hg)(A),B._crypto_shorthash_siphash24_bytes=()=>(B._crypto_shorthash_siphash24_bytes=P.ig)(),B._crypto_shorthash_siphash24_keybytes=()=>(B._crypto_shorthash_siphash24_keybytes=P.jg)(),B._crypto_shorthash_siphash24=(A,I,g,C,Q)=>(B._crypto_shorthash_siphash24=P.kg)(A,I,g,C,Q),B._crypto_sign_statebytes=()=>(B._crypto_sign_statebytes=P.lg)(),B._crypto_sign_bytes=()=>(B._crypto_sign_bytes=P.mg)(),B._crypto_sign_seedbytes=()=>(B._crypto_sign_seedbytes=P.ng)(),B._crypto_sign_publickeybytes=()=>(B._crypto_sign_publickeybytes=P.og)(),B._crypto_sign_secretkeybytes=()=>(B._crypto_sign_secretkeybytes=P.pg)(),B._crypto_sign_messagebytes_max=()=>(B._crypto_sign_messagebytes_max=P.qg)(),B._crypto_sign_primitive=()=>(B._crypto_sign_primitive=P.rg)(),B._crypto_sign_seed_keypair=(A,I,g)=>(B._crypto_sign_seed_keypair=P.sg)(A,I,g),B._crypto_sign_keypair=(A,I)=>(B._crypto_sign_keypair=P.tg)(A,I),B._crypto_sign=(A,I,g,C,Q,i)=>(B._crypto_sign=P.ug)(A,I,g,C,Q,i),B._crypto_sign_open=(A,I,g,C,Q,i)=>(B._crypto_sign_open=P.vg)(A,I,g,C,Q,i),B._crypto_sign_detached=(A,I,g,C,Q,i)=>(B._crypto_sign_detached=P.wg)(A,I,g,C,Q,i),B._crypto_sign_verify_detached=(A,I,g,C,Q)=>(B._crypto_sign_verify_detached=P.xg)(A,I,g,C,Q),B._crypto_sign_init=A=>(B._crypto_sign_init=P.yg)(A),B._crypto_sign_update=(A,I,g,C)=>(B._crypto_sign_update=P.zg)(A,I,g,C),B._crypto_sign_final_create=(A,I,g,C)=>(B._crypto_sign_final_create=P.Ag)(A,I,g,C),B._crypto_sign_final_verify=(A,I,g)=>(B._crypto_sign_final_verify=P.Bg)(A,I,g),B._crypto_sign_ed25519ph_statebytes=()=>(B._crypto_sign_ed25519ph_statebytes=P.Cg)(),B._crypto_sign_ed25519_bytes=()=>(B._crypto_sign_ed25519_bytes=P.Dg)(),B._crypto_sign_ed25519_seedbytes=()=>(B._crypto_sign_ed25519_seedbytes=P.Eg)(),B._crypto_sign_ed25519_publickeybytes=()=>(B._crypto_sign_ed25519_publickeybytes=P.Fg)(),B._crypto_sign_ed25519_secretkeybytes=()=>(B._crypto_sign_ed25519_secretkeybytes=P.Gg)(),B._crypto_sign_ed25519_messagebytes_max=()=>(B._crypto_sign_ed25519_messagebytes_max=P.Hg)(),B._crypto_sign_ed25519_sk_to_seed=(A,I)=>(B._crypto_sign_ed25519_sk_to_seed=P.Ig)(A,I),B._crypto_sign_ed25519_sk_to_pk=(A,I)=>(B._crypto_sign_ed25519_sk_to_pk=P.Jg)(A,I),B._crypto_sign_ed25519ph_init=A=>(B._crypto_sign_ed25519ph_init=P.Kg)(A),B._crypto_sign_ed25519ph_update=(A,I,g,C)=>(B._crypto_sign_ed25519ph_update=P.Lg)(A,I,g,C),B._crypto_sign_ed25519ph_final_create=(A,I,g,C)=>(B._crypto_sign_ed25519ph_final_create=P.Mg)(A,I,g,C),B._crypto_sign_ed25519ph_final_verify=(A,I,g)=>(B._crypto_sign_ed25519ph_final_verify=P.Ng)(A,I,g),B._crypto_sign_ed25519_seed_keypair=(A,I,g)=>(B._crypto_sign_ed25519_seed_keypair=P.Og)(A,I,g),B._crypto_sign_ed25519_keypair=(A,I)=>(B._crypto_sign_ed25519_keypair=P.Pg)(A,I),B._crypto_sign_ed25519_pk_to_curve25519=(A,I)=>(B._crypto_sign_ed25519_pk_to_curve25519=P.Qg)(A,I),B._crypto_sign_ed25519_sk_to_curve25519=(A,I)=>(B._crypto_sign_ed25519_sk_to_curve25519=P.Rg)(A,I),B._crypto_sign_ed25519_verify_detached=(A,I,g,C,Q)=>(B._crypto_sign_ed25519_verify_detached=P.Sg)(A,I,g,C,Q),B._crypto_sign_ed25519_open=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519_open=P.Tg)(A,I,g,C,Q,i),B._crypto_sign_ed25519_detached=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519_detached=P.Ug)(A,I,g,C,Q,i),B._crypto_sign_ed25519=(A,I,g,C,Q,i)=>(B._crypto_sign_ed25519=P.Vg)(A,I,g,C,Q,i),B._crypto_stream_chacha20_keybytes=()=>(B._crypto_stream_chacha20_keybytes=P.Wg)(),B._crypto_stream_chacha20_noncebytes=()=>(B._crypto_stream_chacha20_noncebytes=P.Xg)(),B._crypto_stream_chacha20_messagebytes_max=()=>(B._crypto_stream_chacha20_messagebytes_max=P.Yg)(),B._crypto_stream_chacha20_ietf_keybytes=()=>(B._crypto_stream_chacha20_ietf_keybytes=P.Zg)(),B._crypto_stream_chacha20_ietf_noncebytes=()=>(B._crypto_stream_chacha20_ietf_noncebytes=P._g)(),B._crypto_stream_chacha20_ietf_messagebytes_max=()=>(B._crypto_stream_chacha20_ietf_messagebytes_max=P.$g)(),B._crypto_stream_chacha20=(A,I,g,C,Q)=>(B._crypto_stream_chacha20=P.ah)(A,I,g,C,Q),B._crypto_stream_chacha20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_chacha20_xor_ic=P.bh)(A,I,g,C,Q,i,o,E),B._crypto_stream_chacha20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_chacha20_xor=P.ch)(A,I,g,C,Q,i),B._crypto_stream_chacha20_ietf=(A,I,g,C,Q)=>(B._crypto_stream_chacha20_ietf=P.dh)(A,I,g,C,Q),B._crypto_stream_chacha20_ietf_xor_ic=(A,I,g,C,Q,i,o)=>(B._crypto_stream_chacha20_ietf_xor_ic=P.eh)(A,I,g,C,Q,i,o),B._crypto_stream_chacha20_ietf_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_chacha20_ietf_xor=P.fh)(A,I,g,C,Q,i),B._crypto_stream_chacha20_ietf_keygen=A=>(B._crypto_stream_chacha20_ietf_keygen=P.gh)(A),B._crypto_stream_chacha20_keygen=A=>(B._crypto_stream_chacha20_keygen=P.hh)(A),B._crypto_stream_keybytes=()=>(B._crypto_stream_keybytes=P.ih)(),B._crypto_stream_noncebytes=()=>(B._crypto_stream_noncebytes=P.jh)(),B._crypto_stream_messagebytes_max=()=>(B._crypto_stream_messagebytes_max=P.kh)(),B._crypto_stream_primitive=()=>(B._crypto_stream_primitive=P.lh)(),B._crypto_stream=(A,I,g,C,Q)=>(B._crypto_stream=P.mh)(A,I,g,C,Q),B._crypto_stream_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xor=P.nh)(A,I,g,C,Q,i),B._crypto_stream_keygen=A=>(B._crypto_stream_keygen=P.oh)(A),B._crypto_stream_salsa20_keybytes=()=>(B._crypto_stream_salsa20_keybytes=P.ph)(),B._crypto_stream_salsa20_noncebytes=()=>(B._crypto_stream_salsa20_noncebytes=P.qh)(),B._crypto_stream_salsa20_messagebytes_max=()=>(B._crypto_stream_salsa20_messagebytes_max=P.rh)(),B._crypto_stream_salsa20=(A,I,g,C,Q)=>(B._crypto_stream_salsa20=P.sh)(A,I,g,C,Q),B._crypto_stream_salsa20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_salsa20_xor_ic=P.th)(A,I,g,C,Q,i,o,E),B._crypto_stream_salsa20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa20_xor=P.uh)(A,I,g,C,Q,i),B._crypto_stream_salsa20_keygen=A=>(B._crypto_stream_salsa20_keygen=P.vh)(A),B._crypto_stream_xsalsa20=(A,I,g,C,Q)=>(B._crypto_stream_xsalsa20=P.wh)(A,I,g,C,Q),B._crypto_stream_xsalsa20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_xsalsa20_xor_ic=P.xh)(A,I,g,C,Q,i,o,E),B._crypto_stream_xsalsa20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xsalsa20_xor=P.yh)(A,I,g,C,Q,i),B._crypto_stream_xsalsa20_keybytes=()=>(B._crypto_stream_xsalsa20_keybytes=P.zh)(),B._crypto_stream_xsalsa20_noncebytes=()=>(B._crypto_stream_xsalsa20_noncebytes=P.Ah)(),B._crypto_stream_xsalsa20_messagebytes_max=()=>(B._crypto_stream_xsalsa20_messagebytes_max=P.Bh)(),B._crypto_stream_xsalsa20_keygen=A=>(B._crypto_stream_xsalsa20_keygen=P.Ch)(A),B._crypto_verify_16_bytes=()=>(B._crypto_verify_16_bytes=P.Dh)(),B._crypto_verify_32_bytes=()=>(B._crypto_verify_32_bytes=P.Eh)(),B._crypto_verify_64_bytes=()=>(B._crypto_verify_64_bytes=P.Fh)(),B._crypto_verify_16=(A,I)=>(B._crypto_verify_16=P.Gh)(A,I),B._crypto_verify_32=(A,I)=>(B._crypto_verify_32=P.Hh)(A,I),B._crypto_verify_64=(A,I)=>(B._crypto_verify_64=P.Ih)(A,I),B._randombytes_implementation_name=()=>(B._randombytes_implementation_name=P.Jh)(),B._randombytes_random=()=>(B._randombytes_random=P.Kh)(),B._randombytes_stir=()=>(B._randombytes_stir=P.Lh)(),B._randombytes_uniform=A=>(B._randombytes_uniform=P.Mh)(A),B._randombytes_buf=(A,I)=>(B._randombytes_buf=P.Nh)(A,I),B._randombytes_buf_deterministic=(A,I,g)=>(B._randombytes_buf_deterministic=P.Oh)(A,I,g),B._randombytes_seedbytes=()=>(B._randombytes_seedbytes=P.Ph)(),B._randombytes_close=()=>(B._randombytes_close=P.Qh)(),B._randombytes=(A,I,g)=>(B._randombytes=P.Rh)(A,I,g),B._sodium_bin2hex=(A,I,g,C)=>(B._sodium_bin2hex=P.Sh)(A,I,g,C),B._sodium_hex2bin=(A,I,g,C,Q,i,o)=>(B._sodium_hex2bin=P.Th)(A,I,g,C,Q,i,o),B._sodium_base64_encoded_len=(A,I)=>(B._sodium_base64_encoded_len=P.Uh)(A,I),B._sodium_bin2base64=(A,I,g,C,Q)=>(B._sodium_bin2base64=P.Vh)(A,I,g,C,Q),B._sodium_base642bin=(A,I,g,C,Q,i,o,E)=>(B._sodium_base642bin=P.Wh)(A,I,g,C,Q,i,o,E),B._sodium_init=()=>(B._sodium_init=P.Xh)(),B._sodium_pad=(A,I,g,C,Q)=>(B._sodium_pad=P.Yh)(A,I,g,C,Q),B._sodium_unpad=(A,I,g,C)=>(B._sodium_unpad=P.Zh)(A,I,g,C),B._sodium_version_string=()=>(B._sodium_version_string=P._h)(),B._sodium_library_version_major=()=>(B._sodium_library_version_major=P.$h)(),B._sodium_library_version_minor=()=>(B._sodium_library_version_minor=P.ai)(),B._sodium_library_minimal=()=>(B._sodium_library_minimal=P.bi)(),B._crypto_box_curve25519xchacha20poly1305_seed_keypair=(A,I,g)=>(B._crypto_box_curve25519xchacha20poly1305_seed_keypair=P.ci)(A,I,g),B._crypto_box_curve25519xchacha20poly1305_keypair=(A,I)=>(B._crypto_box_curve25519xchacha20poly1305_keypair=P.di)(A,I),B._crypto_box_curve25519xchacha20poly1305_beforenm=(A,I,g)=>(B._crypto_box_curve25519xchacha20poly1305_beforenm=P.ei)(A,I,g),B._crypto_box_curve25519xchacha20poly1305_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_detached_afternm=P.fi)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_curve25519xchacha20poly1305_detached=P.gi)(A,I,g,C,Q,i,o,E),B._crypto_box_curve25519xchacha20poly1305_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_easy_afternm=P.hi)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_easy=P.ii)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=P.ji)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_open_detached=(A,I,g,C,Q,i,o,E)=>(B._crypto_box_curve25519xchacha20poly1305_open_detached=P.ki)(A,I,g,C,Q,i,o,E),B._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=P.li)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_open_easy=(A,I,g,C,Q,i,o)=>(B._crypto_box_curve25519xchacha20poly1305_open_easy=P.mi)(A,I,g,C,Q,i,o),B._crypto_box_curve25519xchacha20poly1305_seedbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_seedbytes=P.ni)(),B._crypto_box_curve25519xchacha20poly1305_publickeybytes=()=>(B._crypto_box_curve25519xchacha20poly1305_publickeybytes=P.oi)(),B._crypto_box_curve25519xchacha20poly1305_secretkeybytes=()=>(B._crypto_box_curve25519xchacha20poly1305_secretkeybytes=P.pi)(),B._crypto_box_curve25519xchacha20poly1305_beforenmbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_beforenmbytes=P.qi)(),B._crypto_box_curve25519xchacha20poly1305_noncebytes=()=>(B._crypto_box_curve25519xchacha20poly1305_noncebytes=P.ri)(),B._crypto_box_curve25519xchacha20poly1305_macbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_macbytes=P.si)(),B._crypto_box_curve25519xchacha20poly1305_messagebytes_max=()=>(B._crypto_box_curve25519xchacha20poly1305_messagebytes_max=P.ti)(),B._crypto_box_curve25519xchacha20poly1305_seal=(A,I,g,C,Q)=>(B._crypto_box_curve25519xchacha20poly1305_seal=P.ui)(A,I,g,C,Q),B._crypto_box_curve25519xchacha20poly1305_seal_open=(A,I,g,C,Q,i)=>(B._crypto_box_curve25519xchacha20poly1305_seal_open=P.vi)(A,I,g,C,Q,i),B._crypto_box_curve25519xchacha20poly1305_sealbytes=()=>(B._crypto_box_curve25519xchacha20poly1305_sealbytes=P.wi)(),B._crypto_core_ed25519_is_valid_point=A=>(B._crypto_core_ed25519_is_valid_point=P.xi)(A),B._crypto_core_ed25519_add=(A,I,g)=>(B._crypto_core_ed25519_add=P.yi)(A,I,g),B._crypto_core_ed25519_sub=(A,I,g)=>(B._crypto_core_ed25519_sub=P.zi)(A,I,g),B._crypto_core_ed25519_from_uniform=(A,I)=>(B._crypto_core_ed25519_from_uniform=P.Ai)(A,I),B._crypto_core_ed25519_random=A=>(B._crypto_core_ed25519_random=P.Bi)(A),B._crypto_core_ed25519_scalar_random=A=>(B._crypto_core_ed25519_scalar_random=P.Ci)(A),B._crypto_core_ed25519_scalar_invert=(A,I)=>(B._crypto_core_ed25519_scalar_invert=P.Di)(A,I),B._crypto_core_ed25519_scalar_negate=(A,I)=>(B._crypto_core_ed25519_scalar_negate=P.Ei)(A,I),B._crypto_core_ed25519_scalar_complement=(A,I)=>(B._crypto_core_ed25519_scalar_complement=P.Fi)(A,I),B._crypto_core_ed25519_scalar_add=(A,I,g)=>(B._crypto_core_ed25519_scalar_add=P.Gi)(A,I,g),B._crypto_core_ed25519_scalar_reduce=(A,I)=>(B._crypto_core_ed25519_scalar_reduce=P.Hi)(A,I),B._crypto_core_ed25519_scalar_sub=(A,I,g)=>(B._crypto_core_ed25519_scalar_sub=P.Ii)(A,I,g),B._crypto_core_ed25519_scalar_mul=(A,I,g)=>(B._crypto_core_ed25519_scalar_mul=P.Ji)(A,I,g),B._crypto_core_ed25519_bytes=()=>(B._crypto_core_ed25519_bytes=P.Ki)(),B._crypto_core_ed25519_nonreducedscalarbytes=()=>(B._crypto_core_ed25519_nonreducedscalarbytes=P.Li)(),B._crypto_core_ed25519_uniformbytes=()=>(B._crypto_core_ed25519_uniformbytes=P.Mi)(),B._crypto_core_ed25519_hashbytes=()=>(B._crypto_core_ed25519_hashbytes=P.Ni)(),B._crypto_core_ed25519_scalarbytes=()=>(B._crypto_core_ed25519_scalarbytes=P.Oi)(),B._crypto_core_ristretto255_is_valid_point=A=>(B._crypto_core_ristretto255_is_valid_point=P.Pi)(A),B._crypto_core_ristretto255_add=(A,I,g)=>(B._crypto_core_ristretto255_add=P.Qi)(A,I,g),B._crypto_core_ristretto255_sub=(A,I,g)=>(B._crypto_core_ristretto255_sub=P.Ri)(A,I,g),B._crypto_core_ristretto255_from_hash=(A,I)=>(B._crypto_core_ristretto255_from_hash=P.Si)(A,I),B._crypto_core_ristretto255_random=A=>(B._crypto_core_ristretto255_random=P.Ti)(A),B._crypto_core_ristretto255_scalar_random=A=>(B._crypto_core_ristretto255_scalar_random=P.Ui)(A),B._crypto_core_ristretto255_scalar_invert=(A,I)=>(B._crypto_core_ristretto255_scalar_invert=P.Vi)(A,I),B._crypto_core_ristretto255_scalar_negate=(A,I)=>(B._crypto_core_ristretto255_scalar_negate=P.Wi)(A,I),B._crypto_core_ristretto255_scalar_complement=(A,I)=>(B._crypto_core_ristretto255_scalar_complement=P.Xi)(A,I),B._crypto_core_ristretto255_scalar_add=(A,I,g)=>(B._crypto_core_ristretto255_scalar_add=P.Yi)(A,I,g),B._crypto_core_ristretto255_scalar_sub=(A,I,g)=>(B._crypto_core_ristretto255_scalar_sub=P.Zi)(A,I,g),B._crypto_core_ristretto255_scalar_mul=(A,I,g)=>(B._crypto_core_ristretto255_scalar_mul=P._i)(A,I,g),B._crypto_core_ristretto255_scalar_reduce=(A,I)=>(B._crypto_core_ristretto255_scalar_reduce=P.$i)(A,I),B._crypto_core_ristretto255_bytes=()=>(B._crypto_core_ristretto255_bytes=P.aj)(),B._crypto_core_ristretto255_nonreducedscalarbytes=()=>(B._crypto_core_ristretto255_nonreducedscalarbytes=P.bj)(),B._crypto_core_ristretto255_hashbytes=()=>(B._crypto_core_ristretto255_hashbytes=P.cj)(),B._crypto_core_ristretto255_scalarbytes=()=>(B._crypto_core_ristretto255_scalarbytes=P.dj)(),B._crypto_pwhash_scryptsalsa208sha256_ll=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_pwhash_scryptsalsa208sha256_ll=P.ej)(A,I,g,C,Q,i,o,E,a,_),B._crypto_pwhash_scryptsalsa208sha256_bytes_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_bytes_min=P.fj)(),B._crypto_pwhash_scryptsalsa208sha256_bytes_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_bytes_max=P.gj)(),B._crypto_pwhash_scryptsalsa208sha256_passwd_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_passwd_min=P.hj)(),B._crypto_pwhash_scryptsalsa208sha256_passwd_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_passwd_max=P.ij)(),B._crypto_pwhash_scryptsalsa208sha256_saltbytes=()=>(B._crypto_pwhash_scryptsalsa208sha256_saltbytes=P.jj)(),B._crypto_pwhash_scryptsalsa208sha256_strbytes=()=>(B._crypto_pwhash_scryptsalsa208sha256_strbytes=P.kj)(),B._crypto_pwhash_scryptsalsa208sha256_strprefix=()=>(B._crypto_pwhash_scryptsalsa208sha256_strprefix=P.lj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_min=P.mj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_max=P.nj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_min=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_min=P.oj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_max=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_max=P.pj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=P.qj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=P.rj)(),B._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=()=>(B._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=P.sj)(),B._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=()=>(B._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=P.tj)(),B._crypto_pwhash_scryptsalsa208sha256=(A,I,g,C,Q,i,o,E,a,_)=>(B._crypto_pwhash_scryptsalsa208sha256=P.uj)(A,I,g,C,Q,i,o,E,a,_),B._crypto_pwhash_scryptsalsa208sha256_str=(A,I,g,C,Q,i,o)=>(B._crypto_pwhash_scryptsalsa208sha256_str=P.vj)(A,I,g,C,Q,i,o),B._crypto_pwhash_scryptsalsa208sha256_str_verify=(A,I,g,C)=>(B._crypto_pwhash_scryptsalsa208sha256_str_verify=P.wj)(A,I,g,C),B._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=(A,I,g,C)=>(B._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=P.xj)(A,I,g,C),B._crypto_scalarmult_ed25519=(A,I,g)=>(B._crypto_scalarmult_ed25519=P.yj)(A,I,g),B._crypto_scalarmult_ed25519_noclamp=(A,I,g)=>(B._crypto_scalarmult_ed25519_noclamp=P.zj)(A,I,g),B._crypto_scalarmult_ed25519_base=(A,I)=>(B._crypto_scalarmult_ed25519_base=P.Aj)(A,I),B._crypto_scalarmult_ed25519_base_noclamp=(A,I)=>(B._crypto_scalarmult_ed25519_base_noclamp=P.Bj)(A,I),B._crypto_scalarmult_ed25519_bytes=()=>(B._crypto_scalarmult_ed25519_bytes=P.Cj)(),B._crypto_scalarmult_ed25519_scalarbytes=()=>(B._crypto_scalarmult_ed25519_scalarbytes=P.Dj)(),B._crypto_scalarmult_ristretto255=(A,I,g)=>(B._crypto_scalarmult_ristretto255=P.Ej)(A,I,g),B._crypto_scalarmult_ristretto255_base=(A,I)=>(B._crypto_scalarmult_ristretto255_base=P.Fj)(A,I),B._crypto_scalarmult_ristretto255_bytes=()=>(B._crypto_scalarmult_ristretto255_bytes=P.Gj)(),B._crypto_scalarmult_ristretto255_scalarbytes=()=>(B._crypto_scalarmult_ristretto255_scalarbytes=P.Hj)(),B._crypto_secretbox_xchacha20poly1305_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_xchacha20poly1305_detached=P.Ij)(A,I,g,C,Q,i,o),B._crypto_secretbox_xchacha20poly1305_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xchacha20poly1305_easy=P.Jj)(A,I,g,C,Q,i),B._crypto_secretbox_xchacha20poly1305_open_detached=(A,I,g,C,Q,i,o)=>(B._crypto_secretbox_xchacha20poly1305_open_detached=P.Kj)(A,I,g,C,Q,i,o),B._crypto_secretbox_xchacha20poly1305_open_easy=(A,I,g,C,Q,i)=>(B._crypto_secretbox_xchacha20poly1305_open_easy=P.Lj)(A,I,g,C,Q,i),B._crypto_secretbox_xchacha20poly1305_keybytes=()=>(B._crypto_secretbox_xchacha20poly1305_keybytes=P.Mj)(),B._crypto_secretbox_xchacha20poly1305_noncebytes=()=>(B._crypto_secretbox_xchacha20poly1305_noncebytes=P.Nj)(),B._crypto_secretbox_xchacha20poly1305_macbytes=()=>(B._crypto_secretbox_xchacha20poly1305_macbytes=P.Oj)(),B._crypto_secretbox_xchacha20poly1305_messagebytes_max=()=>(B._crypto_secretbox_xchacha20poly1305_messagebytes_max=P.Pj)(),B._crypto_shorthash_siphashx24_bytes=()=>(B._crypto_shorthash_siphashx24_bytes=P.Qj)(),B._crypto_shorthash_siphashx24_keybytes=()=>(B._crypto_shorthash_siphashx24_keybytes=P.Rj)(),B._crypto_shorthash_siphashx24=(A,I,g,C,Q)=>(B._crypto_shorthash_siphashx24=P.Sj)(A,I,g,C,Q),B._crypto_stream_salsa2012=(A,I,g,C,Q)=>(B._crypto_stream_salsa2012=P.Tj)(A,I,g,C,Q),B._crypto_stream_salsa2012_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa2012_xor=P.Uj)(A,I,g,C,Q,i),B._crypto_stream_salsa2012_keybytes=()=>(B._crypto_stream_salsa2012_keybytes=P.Vj)(),B._crypto_stream_salsa2012_noncebytes=()=>(B._crypto_stream_salsa2012_noncebytes=P.Wj)(),B._crypto_stream_salsa2012_messagebytes_max=()=>(B._crypto_stream_salsa2012_messagebytes_max=P.Xj)(),B._crypto_stream_salsa2012_keygen=A=>(B._crypto_stream_salsa2012_keygen=P.Yj)(A),B._crypto_stream_salsa208=(A,I,g,C,Q)=>(B._crypto_stream_salsa208=P.Zj)(A,I,g,C,Q),B._crypto_stream_salsa208_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_salsa208_xor=P._j)(A,I,g,C,Q,i),B._crypto_stream_salsa208_keybytes=()=>(B._crypto_stream_salsa208_keybytes=P.$j)(),B._crypto_stream_salsa208_noncebytes=()=>(B._crypto_stream_salsa208_noncebytes=P.ak)(),B._crypto_stream_salsa208_messagebytes_max=()=>(B._crypto_stream_salsa208_messagebytes_max=P.bk)(),B._crypto_stream_salsa208_keygen=A=>(B._crypto_stream_salsa208_keygen=P.ck)(A),B._crypto_stream_xchacha20_keybytes=()=>(B._crypto_stream_xchacha20_keybytes=P.dk)(),B._crypto_stream_xchacha20_noncebytes=()=>(B._crypto_stream_xchacha20_noncebytes=P.ek)(),B._crypto_stream_xchacha20_messagebytes_max=()=>(B._crypto_stream_xchacha20_messagebytes_max=P.fk)(),B._crypto_stream_xchacha20=(A,I,g,C,Q)=>(B._crypto_stream_xchacha20=P.gk)(A,I,g,C,Q),B._crypto_stream_xchacha20_xor_ic=(A,I,g,C,Q,i,o,E)=>(B._crypto_stream_xchacha20_xor_ic=P.hk)(A,I,g,C,Q,i,o,E),B._crypto_stream_xchacha20_xor=(A,I,g,C,Q,i)=>(B._crypto_stream_xchacha20_xor=P.ik)(A,I,g,C,Q,i),B._crypto_stream_xchacha20_keygen=A=>(B._crypto_stream_xchacha20_keygen=P.jk)(A),B._malloc=A=>(B._malloc=P.kk)(A),B._free=A=>(B._free=P.lk)(A),B.setValue=function(A,I,g=\"i8\"){switch(g.endsWith(\"*\")&&(g=\"*\"),g){case\"i1\":case\"i8\":y[A]=I;break;case\"i16\":h[A>>1]=I;break;case\"i32\":D[A>>2]=I;break;case\"i64\":U(\"to do setValue(i64) use WASM_BIGINT\");case\"float\":p[A>>2]=I;break;case\"double\":w[A>>3]=I;break;case\"*\":f[A>>2]=I;break;default:U(`invalid type for setValue: ${g}`)}},B.getValue=function(A,I=\"i8\"){switch(I.endsWith(\"*\")&&(I=\"*\"),I){case\"i1\":case\"i8\":return y[A];case\"i16\":return h[A>>1];case\"i32\":return D[A>>2];case\"i64\":U(\"to do getValue(i64) use WASM_BIGINT\");case\"float\":return p[A>>2];case\"double\":return w[A>>3];case\"*\":return f[A>>2];default:U(`invalid type for getValue: ${I}`)}},B.UTF8ToString=x,K=function A(){l||q(),l||(K=A)},B.preInit)for(\"function\"==typeof B.preInit&&(B.preInit=[B.preInit]);B.preInit.length>0;)B.preInit.pop()();q()})).catch((function(){return C.useBackupModule()})),I}\"function\"==typeof define&&define.amd?define([\"exports\"],I):\"object\"==typeof exports&&\"string\"!=typeof exports.nodeName?I(exports):A.libsodium=I(A.libsodium_mod||(A.commonJsStrict={}))}(this);\n","!function(e){function a(e,a){\"use strict\";var r,t=\"uint8array\",_=a.ready.then((function(){function t(){if(0!==r._sodium_init())throw new Error(\"libsodium was not correctly initialized.\");for(var a=[\"crypto_aead_aegis128l_decrypt\",\"crypto_aead_aegis128l_decrypt_detached\",\"crypto_aead_aegis128l_encrypt\",\"crypto_aead_aegis128l_encrypt_detached\",\"crypto_aead_aegis128l_keygen\",\"crypto_aead_aegis256_decrypt\",\"crypto_aead_aegis256_decrypt_detached\",\"crypto_aead_aegis256_encrypt\",\"crypto_aead_aegis256_encrypt_detached\",\"crypto_aead_aegis256_keygen\",\"crypto_aead_chacha20poly1305_decrypt\",\"crypto_aead_chacha20poly1305_decrypt_detached\",\"crypto_aead_chacha20poly1305_encrypt\",\"crypto_aead_chacha20poly1305_encrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_decrypt\",\"crypto_aead_chacha20poly1305_ietf_decrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_encrypt\",\"crypto_aead_chacha20poly1305_ietf_encrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_keygen\",\"crypto_aead_chacha20poly1305_keygen\",\"crypto_aead_xchacha20poly1305_ietf_decrypt\",\"crypto_aead_xchacha20poly1305_ietf_decrypt_detached\",\"crypto_aead_xchacha20poly1305_ietf_encrypt\",\"crypto_aead_xchacha20poly1305_ietf_encrypt_detached\",\"crypto_aead_xchacha20poly1305_ietf_keygen\",\"crypto_auth\",\"crypto_auth_hmacsha256\",\"crypto_auth_hmacsha256_final\",\"crypto_auth_hmacsha256_init\",\"crypto_auth_hmacsha256_keygen\",\"crypto_auth_hmacsha256_update\",\"crypto_auth_hmacsha256_verify\",\"crypto_auth_hmacsha512\",\"crypto_auth_hmacsha512256\",\"crypto_auth_hmacsha512256_final\",\"crypto_auth_hmacsha512256_init\",\"crypto_auth_hmacsha512256_keygen\",\"crypto_auth_hmacsha512256_update\",\"crypto_auth_hmacsha512256_verify\",\"crypto_auth_hmacsha512_final\",\"crypto_auth_hmacsha512_init\",\"crypto_auth_hmacsha512_keygen\",\"crypto_auth_hmacsha512_update\",\"crypto_auth_hmacsha512_verify\",\"crypto_auth_keygen\",\"crypto_auth_verify\",\"crypto_box_beforenm\",\"crypto_box_curve25519xchacha20poly1305_beforenm\",\"crypto_box_curve25519xchacha20poly1305_detached\",\"crypto_box_curve25519xchacha20poly1305_detached_afternm\",\"crypto_box_curve25519xchacha20poly1305_easy\",\"crypto_box_curve25519xchacha20poly1305_easy_afternm\",\"crypto_box_curve25519xchacha20poly1305_keypair\",\"crypto_box_curve25519xchacha20poly1305_open_detached\",\"crypto_box_curve25519xchacha20poly1305_open_detached_afternm\",\"crypto_box_curve25519xchacha20poly1305_open_easy\",\"crypto_box_curve25519xchacha20poly1305_open_easy_afternm\",\"crypto_box_curve25519xchacha20poly1305_seal\",\"crypto_box_curve25519xchacha20poly1305_seal_open\",\"crypto_box_curve25519xchacha20poly1305_seed_keypair\",\"crypto_box_detached\",\"crypto_box_easy\",\"crypto_box_easy_afternm\",\"crypto_box_keypair\",\"crypto_box_open_detached\",\"crypto_box_open_easy\",\"crypto_box_open_easy_afternm\",\"crypto_box_seal\",\"crypto_box_seal_open\",\"crypto_box_seed_keypair\",\"crypto_core_ed25519_add\",\"crypto_core_ed25519_from_hash\",\"crypto_core_ed25519_from_uniform\",\"crypto_core_ed25519_is_valid_point\",\"crypto_core_ed25519_random\",\"crypto_core_ed25519_scalar_add\",\"crypto_core_ed25519_scalar_complement\",\"crypto_core_ed25519_scalar_invert\",\"crypto_core_ed25519_scalar_mul\",\"crypto_core_ed25519_scalar_negate\",\"crypto_core_ed25519_scalar_random\",\"crypto_core_ed25519_scalar_reduce\",\"crypto_core_ed25519_scalar_sub\",\"crypto_core_ed25519_sub\",\"crypto_core_hchacha20\",\"crypto_core_hsalsa20\",\"crypto_core_ristretto255_add\",\"crypto_core_ristretto255_from_hash\",\"crypto_core_ristretto255_is_valid_point\",\"crypto_core_ristretto255_random\",\"crypto_core_ristretto255_scalar_add\",\"crypto_core_ristretto255_scalar_complement\",\"crypto_core_ristretto255_scalar_invert\",\"crypto_core_ristretto255_scalar_mul\",\"crypto_core_ristretto255_scalar_negate\",\"crypto_core_ristretto255_scalar_random\",\"crypto_core_ristretto255_scalar_reduce\",\"crypto_core_ristretto255_scalar_sub\",\"crypto_core_ristretto255_sub\",\"crypto_generichash\",\"crypto_generichash_blake2b_salt_personal\",\"crypto_generichash_final\",\"crypto_generichash_init\",\"crypto_generichash_keygen\",\"crypto_generichash_update\",\"crypto_hash\",\"crypto_hash_sha256\",\"crypto_hash_sha256_final\",\"crypto_hash_sha256_init\",\"crypto_hash_sha256_update\",\"crypto_hash_sha512\",\"crypto_hash_sha512_final\",\"crypto_hash_sha512_init\",\"crypto_hash_sha512_update\",\"crypto_kdf_derive_from_key\",\"crypto_kdf_keygen\",\"crypto_kx_client_session_keys\",\"crypto_kx_keypair\",\"crypto_kx_seed_keypair\",\"crypto_kx_server_session_keys\",\"crypto_onetimeauth\",\"crypto_onetimeauth_final\",\"crypto_onetimeauth_init\",\"crypto_onetimeauth_keygen\",\"crypto_onetimeauth_update\",\"crypto_onetimeauth_verify\",\"crypto_pwhash\",\"crypto_pwhash_scryptsalsa208sha256\",\"crypto_pwhash_scryptsalsa208sha256_ll\",\"crypto_pwhash_scryptsalsa208sha256_str\",\"crypto_pwhash_scryptsalsa208sha256_str_verify\",\"crypto_pwhash_str\",\"crypto_pwhash_str_needs_rehash\",\"crypto_pwhash_str_verify\",\"crypto_scalarmult\",\"crypto_scalarmult_base\",\"crypto_scalarmult_ed25519\",\"crypto_scalarmult_ed25519_base\",\"crypto_scalarmult_ed25519_base_noclamp\",\"crypto_scalarmult_ed25519_noclamp\",\"crypto_scalarmult_ristretto255\",\"crypto_scalarmult_ristretto255_base\",\"crypto_secretbox_detached\",\"crypto_secretbox_easy\",\"crypto_secretbox_keygen\",\"crypto_secretbox_open_detached\",\"crypto_secretbox_open_easy\",\"crypto_secretstream_xchacha20poly1305_init_pull\",\"crypto_secretstream_xchacha20poly1305_init_push\",\"crypto_secretstream_xchacha20poly1305_keygen\",\"crypto_secretstream_xchacha20poly1305_pull\",\"crypto_secretstream_xchacha20poly1305_push\",\"crypto_secretstream_xchacha20poly1305_rekey\",\"crypto_shorthash\",\"crypto_shorthash_keygen\",\"crypto_shorthash_siphashx24\",\"crypto_sign\",\"crypto_sign_detached\",\"crypto_sign_ed25519_pk_to_curve25519\",\"crypto_sign_ed25519_sk_to_curve25519\",\"crypto_sign_ed25519_sk_to_pk\",\"crypto_sign_ed25519_sk_to_seed\",\"crypto_sign_final_create\",\"crypto_sign_final_verify\",\"crypto_sign_init\",\"crypto_sign_keypair\",\"crypto_sign_open\",\"crypto_sign_seed_keypair\",\"crypto_sign_update\",\"crypto_sign_verify_detached\",\"crypto_stream_chacha20\",\"crypto_stream_chacha20_ietf_xor\",\"crypto_stream_chacha20_ietf_xor_ic\",\"crypto_stream_chacha20_keygen\",\"crypto_stream_chacha20_xor\",\"crypto_stream_chacha20_xor_ic\",\"crypto_stream_keygen\",\"crypto_stream_xchacha20_keygen\",\"crypto_stream_xchacha20_xor\",\"crypto_stream_xchacha20_xor_ic\",\"randombytes_buf\",\"randombytes_buf_deterministic\",\"randombytes_close\",\"randombytes_random\",\"randombytes_set_implementation\",\"randombytes_stir\",\"randombytes_uniform\",\"sodium_version_string\"],t=[x,k,S,T,w,Y,B,A,M,I,K,N,L,O,U,C,P,R,X,G,D,F,V,H,W,q,j,z,J,Q,Z,$,ee,ae,re,te,_e,ne,se,ce,oe,he,pe,ye,ie,le,ue,de,ve,ge,be,fe,me,Ee,xe,ke,Se,Te,we,Ye,Be,Ae,Me,Ie,Ke,Ne,Le,Oe,Ue,Ce,Pe,Re,Xe,Ge,De,Fe,Ve,He,We,qe,je,ze,Je,Qe,Ze,$e,ea,aa,ra,ta,_a,na,sa,ca,oa,ha,pa,ya,ia,la,ua,da,va,ga,ba,fa,ma,Ea,xa,ka,Sa,Ta,wa,Ya,Ba,Aa,Ma,Ia,Ka,Na,La,Oa,Ua,Ca,Pa,Ra,Xa,Ga,Da,Fa,Va,Ha,Wa,qa,ja,za,Ja,Qa,Za,$a,er,ar,rr,tr,_r,nr,sr,cr,or,hr,pr,yr,ir,lr,ur,dr,vr,gr,br,fr,mr,Er,xr,kr,Sr,Tr,wr,Yr,Br,Ar,Mr,Ir,Kr,Nr,Lr,Or,Ur,Cr,Pr,Rr,Xr,Gr,Dr,Fr,Vr,Hr,Wr,qr],_=0;_=240?(p=4,o=!0):y>=224?(p=3,o=!0):y>=192?(p=2,o=!0):y<128&&(p=1,o=!0)}while(!o);for(var i=p-(c.length-h),l=0;l>8&-39)<<8|87+(a=e[n]>>>4)+(a-10>>8&-39),_+=String.fromCharCode(255&t)+String.fromCharCode(t>>>8);return _}var o={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function h(e){if(null==e)return o.URLSAFE_NO_PADDING;if(e!==o.ORIGINAL&&e!==o.ORIGINAL_NO_PADDING&&e!==o.URLSAFE&&e!=o.URLSAFE_NO_PADDING)throw new Error(\"unsupported base64 variant\");return e}function p(e,a){a=h(a),e=E(_,e,\"input\");var t,_=[],n=0|Math.floor(e.length/3),c=e.length-3*n,o=4*n+(0!==c?2&a?2+(c>>>1):4:0),p=new u(o+1),y=d(e);return _.push(y),_.push(p.address),0===r._sodium_bin2base64(p.address,p.length,y,e.length,a)&&b(_,\"conversion failed\"),p.length=o,t=s(p.to_Uint8Array()),g(_),t}function y(e,a){var r=a||t;if(!i(r))throw new Error(r+\" output format is not available\");if(e instanceof u){if(\"uint8array\"===r)return e.to_Uint8Array();if(\"text\"===r)return s(e.to_Uint8Array());if(\"hex\"===r)return c(e.to_Uint8Array());if(\"base64\"===r)return p(e.to_Uint8Array(),o.URLSAFE_NO_PADDING);throw new Error('What is output format \"'+r+'\"?')}if(\"object\"==typeof e){for(var _=Object.keys(e),n={},h=0;h<_.length;h++)n[_[h]]=y(e[_[h]],r);return n}if(\"string\"==typeof e)return e;throw new TypeError(\"Cannot format output\")}function i(e){for(var a=[\"uint8array\",\"text\",\"hex\",\"base64\"],r=0;r=BigInt(0)){const e=a>>BigInt(32);e>BigInt(4294967295)&&f(c,\"subkey_id cannot be more than 64 bits\"),h=Number(e),o=Number(a&BigInt(4294967295))}else\"number\"==typeof a&&(0|a)===a&&a>=0?o=a:f(c,\"subkey_id must be an unsigned integer or bigint\");\"string\"!=typeof t&&f(c,\"ctx must be a string\"),t=n(t+\"\\0\"),null!=i&&t.length-1!==i&&f(c,\"invalid ctx length\");var p=d(t),i=t.length-1;c.push(p),_=E(c,_,\"key\");var v,b=0|r._crypto_kdf_keybytes();_.length!==b&&f(c,\"invalid key length\"),v=d(_),c.push(v);var x=new u(0|e),k=x.address;c.push(k),r._crypto_kdf_derive_from_key(k,e,o,h,p,v);var S=y(x,s);return g(c),S}function Aa(e){var a=[];l(e);var t=new u(0|r._crypto_kdf_keybytes()),_=t.address;a.push(_),r._crypto_kdf_keygen(_);var n=y(t,e);return g(a),n}function Ma(e,a,t,_){var n=[];l(_),e=E(n,e,\"clientPublicKey\");var s,c=0|r._crypto_kx_publickeybytes();e.length!==c&&f(n,\"invalid clientPublicKey length\"),s=d(e),n.push(s),a=E(n,a,\"clientSecretKey\");var o,h=0|r._crypto_kx_secretkeybytes();a.length!==h&&f(n,\"invalid clientSecretKey length\"),o=d(a),n.push(o),t=E(n,t,\"serverPublicKey\");var p,i=0|r._crypto_kx_publickeybytes();t.length!==i&&f(n,\"invalid serverPublicKey length\"),p=d(t),n.push(p);var v=new u(0|r._crypto_kx_sessionkeybytes()),m=v.address;n.push(m);var x=new u(0|r._crypto_kx_sessionkeybytes()),k=x.address;if(n.push(k),!(0|r._crypto_kx_client_session_keys(m,k,s,o,p))){var S=y({sharedRx:v,sharedTx:x},_);return g(n),S}b(n,\"invalid usage\")}function Ia(e){var a=[];l(e);var t=new u(0|r._crypto_kx_publickeybytes()),_=t.address;a.push(_);var n=new u(0|r._crypto_kx_secretkeybytes()),s=n.address;if(a.push(s),!(0|r._crypto_kx_keypair(_,s))){var c={publicKey:y(t,e),privateKey:y(n,e),keyType:\"x25519\"};return g(a),c}b(a,\"internal error\")}function Ka(e,a){var t=[];l(a),e=E(t,e,\"seed\");var _,n=0|r._crypto_kx_seedbytes();e.length!==n&&f(t,\"invalid seed length\"),_=d(e),t.push(_);var s=new u(0|r._crypto_kx_publickeybytes()),c=s.address;t.push(c);var o=new u(0|r._crypto_kx_secretkeybytes()),h=o.address;if(t.push(h),!(0|r._crypto_kx_seed_keypair(c,h,_))){var p={publicKey:y(s,a),privateKey:y(o,a),keyType:\"x25519\"};return g(t),p}b(t,\"internal error\")}function Na(e,a,t,_){var n=[];l(_),e=E(n,e,\"serverPublicKey\");var s,c=0|r._crypto_kx_publickeybytes();e.length!==c&&f(n,\"invalid serverPublicKey length\"),s=d(e),n.push(s),a=E(n,a,\"serverSecretKey\");var o,h=0|r._crypto_kx_secretkeybytes();a.length!==h&&f(n,\"invalid serverSecretKey length\"),o=d(a),n.push(o),t=E(n,t,\"clientPublicKey\");var p,i=0|r._crypto_kx_publickeybytes();t.length!==i&&f(n,\"invalid clientPublicKey length\"),p=d(t),n.push(p);var v=new u(0|r._crypto_kx_sessionkeybytes()),m=v.address;n.push(m);var x=new u(0|r._crypto_kx_sessionkeybytes()),k=x.address;if(n.push(k),!(0|r._crypto_kx_server_session_keys(m,k,s,o,p))){var S=y({sharedRx:v,sharedTx:x},_);return g(n),S}b(n,\"invalid usage\")}function La(e,a,t){var _=[];l(t);var n=d(e=E(_,e,\"message\")),s=e.length;_.push(n),a=E(_,a,\"key\");var c,o=0|r._crypto_onetimeauth_keybytes();a.length!==o&&f(_,\"invalid key length\"),c=d(a),_.push(c);var h=new u(0|r._crypto_onetimeauth_bytes()),p=h.address;if(_.push(p),!(0|r._crypto_onetimeauth(p,n,s,0,c))){var i=y(h,t);return g(_),i}b(_,\"invalid usage\")}function Oa(e,a){var t=[];l(a),m(t,e,\"state_address\");var _=new u(0|r._crypto_onetimeauth_bytes()),n=_.address;if(t.push(n),!(0|r._crypto_onetimeauth_final(e,n))){var s=(r._free(e),y(_,a));return g(t),s}b(t,\"invalid usage\")}function Ua(e,a){var t=[];l(a);var _=null;null!=e&&(_=d(e=E(t,e,\"key\")),e.length,t.push(_));var n=new u(144).address;if(!(0|r._crypto_onetimeauth_init(n,_))){var s=n;return g(t),s}b(t,\"invalid usage\")}function Ca(e){var a=[];l(e);var t=new u(0|r._crypto_onetimeauth_keybytes()),_=t.address;a.push(_),r._crypto_onetimeauth_keygen(_);var n=y(t,e);return g(a),n}function Pa(e,a,t){var _=[];l(t),m(_,e,\"state_address\");var n=d(a=E(_,a,\"message_chunk\")),s=a.length;_.push(n),0|r._crypto_onetimeauth_update(e,n,s)&&b(_,\"invalid usage\"),g(_)}function Ra(e,a,t){var _=[];e=E(_,e,\"hash\");var n,s=0|r._crypto_onetimeauth_bytes();e.length!==s&&f(_,\"invalid hash length\"),n=d(e),_.push(n);var c=d(a=E(_,a,\"message\")),o=a.length;_.push(c),t=E(_,t,\"key\");var h,p=0|r._crypto_onetimeauth_keybytes();t.length!==p&&f(_,\"invalid key length\"),h=d(t),_.push(h);var y=!(0|r._crypto_onetimeauth_verify(n,c,o,0,h));return g(_),y}function Xa(e,a,t,_,n,s,c){var o=[];l(c),m(o,e,\"keyLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&f(o,\"keyLength must be an unsigned integer\");var h=d(a=E(o,a,\"password\")),p=a.length;o.push(h),t=E(o,t,\"salt\");var i,v=0|r._crypto_pwhash_saltbytes();t.length!==v&&f(o,\"invalid salt length\"),i=d(t),o.push(i),m(o,_,\"opsLimit\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&f(o,\"opsLimit must be an unsigned integer\"),m(o,n,\"memLimit\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&f(o,\"memLimit must be an unsigned integer\"),m(o,s,\"algorithm\"),(\"number\"!=typeof s||(0|s)!==s||s<0)&&f(o,\"algorithm must be an unsigned integer\");var x=new u(0|e),k=x.address;if(o.push(k),!(0|r._crypto_pwhash(k,e,0,h,p,0,i,_,0,n,s))){var S=y(x,c);return g(o),S}b(o,\"invalid usage\")}function Ga(e,a,t,_,n,s){var c=[];l(s),m(c,e,\"keyLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&f(c,\"keyLength must be an unsigned integer\");var o=d(a=E(c,a,\"password\")),h=a.length;c.push(o),t=E(c,t,\"salt\");var p,i=0|r._crypto_pwhash_scryptsalsa208sha256_saltbytes();t.length!==i&&f(c,\"invalid salt length\"),p=d(t),c.push(p),m(c,_,\"opsLimit\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&f(c,\"opsLimit must be an unsigned integer\"),m(c,n,\"memLimit\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&f(c,\"memLimit must be an unsigned integer\");var v=new u(0|e),x=v.address;if(c.push(x),!(0|r._crypto_pwhash_scryptsalsa208sha256(x,e,0,o,h,0,p,_,0,n))){var k=y(v,s);return g(c),k}b(c,\"invalid usage\")}function Da(e,a,t,_,n,s,c){var o=[];l(c);var h=d(e=E(o,e,\"password\")),p=e.length;o.push(h);var i=d(a=E(o,a,\"salt\")),v=a.length;o.push(i),m(o,t,\"opsLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&f(o,\"opsLimit must be an unsigned integer\"),m(o,_,\"r\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&f(o,\"r must be an unsigned integer\"),m(o,n,\"p\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&f(o,\"p must be an unsigned integer\"),m(o,s,\"keyLength\"),(\"number\"!=typeof s||(0|s)!==s||s<0)&&f(o,\"keyLength must be an unsigned integer\");var x=new u(0|s),k=x.address;if(o.push(k),!(0|r._crypto_pwhash_scryptsalsa208sha256_ll(h,p,i,v,t,0,_,n,k,s))){var S=y(x,c);return g(o),S}b(o,\"invalid usage\")}function Fa(e,a,t,_){var n=[];l(_);var s=d(e=E(n,e,\"password\")),c=e.length;n.push(s),m(n,a,\"opsLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&f(n,\"opsLimit must be an unsigned integer\"),m(n,t,\"memLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&f(n,\"memLimit must be an unsigned integer\");var o=new u(0|r._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(n.push(o),!(0|r._crypto_pwhash_scryptsalsa208sha256_str(o,s,c,0,a,0,t))){var h=r.UTF8ToString(o);return g(n),h}b(n,\"invalid usage\")}function Va(e,a,t){var _=[];l(t),\"string\"!=typeof e&&f(_,\"hashed_password must be a string\"),e=n(e+\"\\0\"),null!=c&&e.length-1!==c&&f(_,\"invalid hashed_password length\");var s=d(e),c=e.length-1;_.push(s);var o=d(a=E(_,a,\"password\")),h=a.length;_.push(o);var p=!(0|r._crypto_pwhash_scryptsalsa208sha256_str_verify(s,o,h,0));return g(_),p}function Ha(e,a,t,_){var n=[];l(_);var s=d(e=E(n,e,\"password\")),c=e.length;n.push(s),m(n,a,\"opsLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&f(n,\"opsLimit must be an unsigned integer\"),m(n,t,\"memLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&f(n,\"memLimit must be an unsigned integer\");var o=new u(0|r._crypto_pwhash_strbytes()).address;if(n.push(o),!(0|r._crypto_pwhash_str(o,s,c,0,a,0,t))){var h=r.UTF8ToString(o);return g(n),h}b(n,\"invalid usage\")}function Wa(e,a,t,_){var s=[];l(_),\"string\"!=typeof e&&f(s,\"hashed_password must be a string\"),e=n(e+\"\\0\"),null!=o&&e.length-1!==o&&f(s,\"invalid hashed_password length\");var c=d(e),o=e.length-1;s.push(c),m(s,a,\"opsLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&f(s,\"opsLimit must be an unsigned integer\"),m(s,t,\"memLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&f(s,\"memLimit must be an unsigned integer\");var h=!!(0|r._crypto_pwhash_str_needs_rehash(c,a,0,t));return g(s),h}function qa(e,a,t){var _=[];l(t),\"string\"!=typeof e&&f(_,\"hashed_password must be a string\"),e=n(e+\"\\0\"),null!=c&&e.length-1!==c&&f(_,\"invalid hashed_password length\");var s=d(e),c=e.length-1;_.push(s);var o=d(a=E(_,a,\"password\")),h=a.length;_.push(o);var p=!(0|r._crypto_pwhash_str_verify(s,o,h,0));return g(_),p}function ja(e,a,t){var _=[];l(t),e=E(_,e,\"privateKey\");var n,s=0|r._crypto_scalarmult_scalarbytes();e.length!==s&&f(_,\"invalid privateKey length\"),n=d(e),_.push(n),a=E(_,a,\"publicKey\");var c,o=0|r._crypto_scalarmult_bytes();a.length!==o&&f(_,\"invalid publicKey length\"),c=d(a),_.push(c);var h=new u(0|r._crypto_scalarmult_bytes()),p=h.address;if(_.push(p),!(0|r._crypto_scalarmult(p,n,c))){var i=y(h,t);return g(_),i}b(_,\"weak public key\")}function za(e,a){var t=[];l(a),e=E(t,e,\"privateKey\");var _,n=0|r._crypto_scalarmult_scalarbytes();e.length!==n&&f(t,\"invalid privateKey length\"),_=d(e),t.push(_);var s=new u(0|r._crypto_scalarmult_bytes()),c=s.address;if(t.push(c),!(0|r._crypto_scalarmult_base(c,_))){var o=y(s,a);return g(t),o}b(t,\"unknown error\")}function Ja(e,a,t){var _=[];l(t),e=E(_,e,\"n\");var n,s=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==s&&f(_,\"invalid n length\"),n=d(e),_.push(n),a=E(_,a,\"p\");var c,o=0|r._crypto_scalarmult_ed25519_bytes();a.length!==o&&f(_,\"invalid p length\"),c=d(a),_.push(c);var h=new u(0|r._crypto_scalarmult_ed25519_bytes()),p=h.address;if(_.push(p),!(0|r._crypto_scalarmult_ed25519(p,n,c))){var i=y(h,t);return g(_),i}b(_,\"invalid point or scalar is 0\")}function Qa(e,a){var t=[];l(a),e=E(t,e,\"scalar\");var _,n=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==n&&f(t,\"invalid scalar length\"),_=d(e),t.push(_);var s=new u(0|r._crypto_scalarmult_ed25519_bytes()),c=s.address;if(t.push(c),!(0|r._crypto_scalarmult_ed25519_base(c,_))){var o=y(s,a);return g(t),o}b(t,\"scalar is 0\")}function Za(e,a){var t=[];l(a),e=E(t,e,\"scalar\");var _,n=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==n&&f(t,\"invalid scalar length\"),_=d(e),t.push(_);var s=new u(0|r._crypto_scalarmult_ed25519_bytes()),c=s.address;if(t.push(c),!(0|r._crypto_scalarmult_ed25519_base_noclamp(c,_))){var o=y(s,a);return g(t),o}b(t,\"scalar is 0\")}function $a(e,a,t){var _=[];l(t),e=E(_,e,\"n\");var n,s=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==s&&f(_,\"invalid n length\"),n=d(e),_.push(n),a=E(_,a,\"p\");var c,o=0|r._crypto_scalarmult_ed25519_bytes();a.length!==o&&f(_,\"invalid p length\"),c=d(a),_.push(c);var h=new u(0|r._crypto_scalarmult_ed25519_bytes()),p=h.address;if(_.push(p),!(0|r._crypto_scalarmult_ed25519_noclamp(p,n,c))){var i=y(h,t);return g(_),i}b(_,\"invalid point or scalar is 0\")}function er(e,a,t){var _=[];l(t),e=E(_,e,\"scalar\");var n,s=0|r._crypto_scalarmult_ristretto255_scalarbytes();e.length!==s&&f(_,\"invalid scalar length\"),n=d(e),_.push(n),a=E(_,a,\"element\");var c,o=0|r._crypto_scalarmult_ristretto255_bytes();a.length!==o&&f(_,\"invalid element length\"),c=d(a),_.push(c);var h=new u(0|r._crypto_scalarmult_ristretto255_bytes()),p=h.address;if(_.push(p),!(0|r._crypto_scalarmult_ristretto255(p,n,c))){var i=y(h,t);return g(_),i}b(_,\"result is identity element\")}function ar(e,a){var t=[];l(a),e=E(t,e,\"scalar\");var _,n=0|r._crypto_core_ristretto255_scalarbytes();e.length!==n&&f(t,\"invalid scalar length\"),_=d(e),t.push(_);var s=new u(0|r._crypto_core_ristretto255_bytes()),c=s.address;if(t.push(c),!(0|r._crypto_scalarmult_ristretto255_base(c,_))){var o=y(s,a);return g(t),o}b(t,\"scalar is 0\")}function rr(e,a,t,_){var n=[];l(_);var s=d(e=E(n,e,\"message\")),c=e.length;n.push(s),a=E(n,a,\"nonce\");var o,h=0|r._crypto_secretbox_noncebytes();a.length!==h&&f(n,\"invalid nonce length\"),o=d(a),n.push(o),t=E(n,t,\"key\");var p,i=0|r._crypto_secretbox_keybytes();t.length!==i&&f(n,\"invalid key length\"),p=d(t),n.push(p);var v=new u(0|c),m=v.address;n.push(m);var x=new u(0|r._crypto_secretbox_macbytes()),k=x.address;if(n.push(k),!(0|r._crypto_secretbox_detached(m,k,s,c,0,o,p))){var S=y({mac:x,cipher:v},_);return g(n),S}b(n,\"invalid usage\")}function tr(e,a,t,_){var n=[];l(_);var s=d(e=E(n,e,\"message\")),c=e.length;n.push(s),a=E(n,a,\"nonce\");var o,h=0|r._crypto_secretbox_noncebytes();a.length!==h&&f(n,\"invalid nonce length\"),o=d(a),n.push(o),t=E(n,t,\"key\");var p,i=0|r._crypto_secretbox_keybytes();t.length!==i&&f(n,\"invalid key length\"),p=d(t),n.push(p);var v=new u(c+r._crypto_secretbox_macbytes()|0),m=v.address;if(n.push(m),!(0|r._crypto_secretbox_easy(m,s,c,0,o,p))){var x=y(v,_);return g(n),x}b(n,\"invalid usage\")}function _r(e){var a=[];l(e);var t=new u(0|r._crypto_secretbox_keybytes()),_=t.address;a.push(_),r._crypto_secretbox_keygen(_);var n=y(t,e);return g(a),n}function nr(e,a,t,_,n){var s=[];l(n);var c=d(e=E(s,e,\"ciphertext\")),o=e.length;s.push(c),a=E(s,a,\"mac\");var h,p=0|r._crypto_secretbox_macbytes();a.length!==p&&f(s,\"invalid mac length\"),h=d(a),s.push(h),t=E(s,t,\"nonce\");var i,v=0|r._crypto_secretbox_noncebytes();t.length!==v&&f(s,\"invalid nonce length\"),i=d(t),s.push(i),_=E(s,_,\"key\");var m,x=0|r._crypto_secretbox_keybytes();_.length!==x&&f(s,\"invalid key length\"),m=d(_),s.push(m);var k=new u(0|o),S=k.address;if(s.push(S),!(0|r._crypto_secretbox_open_detached(S,c,h,o,0,i,m))){var T=y(k,n);return g(s),T}b(s,\"wrong secret key for the given ciphertext\")}function sr(e,a,t,_){var n=[];l(_),e=E(n,e,\"ciphertext\");var s,c=r._crypto_secretbox_macbytes(),o=e.length;o>>0;return g([]),a}function Vr(e,a){var t=[];l(a);for(var _=r._malloc(24),n=0;n<6;n++)r.setValue(_+4*n,r.Runtime.addFunction(e[[\"implementation_name\",\"random\",\"stir\",\"uniform\",\"buf\",\"close\"][n]]),\"i32\");0|r._randombytes_set_implementation(_)&&b(t,\"unsupported implementation\"),g(t)}function Hr(e){l(e),r._randombytes_stir()}function Wr(e,a){var t=[];l(a),m(t,e,\"upper_bound\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&f(t,\"upper_bound must be an unsigned integer\");var _=r._randombytes_uniform(e)>>>0;return g(t),_}function qr(){var e=r._sodium_version_string(),a=r.UTF8ToString(e);return g([]),a}return u.prototype.to_Uint8Array=function(){var e=new Uint8Array(this.length);return e.set(r.HEAPU8.subarray(this.address,this.address+this.length)),e},e.add=function(e,a){if(!(e instanceof Uint8Array&&a instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can added\");var r=e.length,t=0,_=0;if(a.length!=e.length)throw new TypeError(\"Arguments must have the same length\");for(_=0;_>=8,t+=e[_]+a[_],e[_]=255&t},e.base64_variants=o,e.compare=function(e,a){if(!(e instanceof Uint8Array&&a instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be compared\");if(e.length!==a.length)throw new TypeError(\"Only instances of identical length can be compared\");for(var r=0,t=1,_=e.length;_-- >0;)r|=a[_]-e[_]>>8&t,t&=(a[_]^e[_])-1>>8;return r+r+t-1},e.from_base64=function(e,a){a=h(a);var t,_=[],n=new u(3*(e=E(_,e,\"input\")).length/4),s=d(e),c=v(4),o=v(4);return _.push(s),_.push(n.address),_.push(n.result_bin_len_p),_.push(n.b64_end_p),0!==r._sodium_base642bin(n.address,n.length,s,e.length,0,c,o,a)&&b(_,\"invalid input\"),r.getValue(o,\"i32\")-s!==e.length&&b(_,\"incomplete input\"),n.length=r.getValue(c,\"i32\"),t=n.to_Uint8Array(),g(_),t},e.from_hex=function(e){var a,t=[],_=new u((e=E(t,e,\"input\")).length/2),n=d(e),s=v(4);return t.push(n),t.push(_.address),t.push(_.hex_end_p),0!==r._sodium_hex2bin(_.address,_.length,n,e.length,0,0,s)&&b(t,\"invalid input\"),r.getValue(s,\"i32\")-n!==e.length&&b(t,\"incomplete input\"),a=_.to_Uint8Array(),g(t),a},e.from_string=n,e.increment=function(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be incremented\");for(var a=256,r=0,t=e.length;r>=8,a+=e[r],e[r]=255&a},e.is_zero=function(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be checked\");for(var a=0,r=0,t=e.length;r 0\");var t,_=[],n=v(4),s=1,c=0,o=0|e.length,h=new u(o+a);_.push(n),_.push(h.address);for(var p=h.address,y=h.address+o+a;p>>48|o>>>32|o>>>16|o))-1>>16);return 0!==r._sodium_pad(n,h.address,e.length,a,h.length)&&b(_,\"internal error\"),h.length=r.getValue(n,\"i32\"),t=h.to_Uint8Array(),g(_),t},e.unpad=function(e,a){if(!(e instanceof Uint8Array))throw new TypeError(\"buffer must be a Uint8Array\");if((a|=0)<=0)throw new Error(\"block size must be > 0\");var t=[],_=d(e),n=v(4);return t.push(_),t.push(n),0!==r._sodium_unpad(n,_,e.length,a)&&b(t,\"unsupported/invalid padding\"),e=(e=new Uint8Array(e)).subarray(0,r.getValue(n,\"i32\")),g(t),e},e.ready=_,e.symbols=function(){return Object.keys(e).sort()},e.to_base64=p,e.to_hex=c,e.to_string=s,e}var r=\"object\"==typeof e.sodium&&\"function\"==typeof e.sodium.onload?e.sodium.onload:null;\"function\"==typeof define&&define.amd?define([\"exports\",\"libsodium-sumo\"],a):\"object\"==typeof exports&&\"string\"!=typeof exports.nodeName?a(exports,require(\"libsodium-sumo\")):e.sodium=a(e.commonJsStrict={},e.libsodium),r&&e.sodium.ready.then((function(){r(e.sodium)}))}(this);\n","var decoder\ntry {\n\tdecoder = new TextDecoder()\n} catch(error) {}\nvar src\nvar srcEnd\nvar position = 0\nvar alreadySet\nconst EMPTY_ARRAY = []\nvar strings = EMPTY_ARRAY\nvar stringPosition = 0\nvar currentUnpackr = {}\nvar currentStructures\nvar srcString\nvar srcStringStart = 0\nvar srcStringEnd = 0\nvar bundledStrings\nvar referenceMap\nvar currentExtensions = []\nvar dataView\nvar defaultOptions = {\n\tuseRecords: false,\n\tmapsAsObjects: true\n}\nexport class C1Type {}\nexport const C1 = new C1Type()\nC1.name = 'MessagePack 0xC1'\nvar sequentialMode = false\nvar inlineObjectReadThreshold = 2\nvar readStruct, onLoadedStructures, onSaveState\nvar BlockedFunction // we use search and replace to change the next call to BlockedFunction to avoid CSP issues for\n// no-eval build\ntry {\n\tnew Function('')\n} catch(error) {\n\t// if eval variants are not supported, do not create inline object readers ever\n\tinlineObjectReadThreshold = Infinity\n}\n\nexport class Unpackr {\n\tconstructor(options) {\n\t\tif (options) {\n\t\t\tif (options.useRecords === false && options.mapsAsObjects === undefined)\n\t\t\t\toptions.mapsAsObjects = true\n\t\t\tif (options.sequential && options.trusted !== false) {\n\t\t\t\toptions.trusted = true;\n\t\t\t\tif (!options.structures && options.useRecords != false) {\n\t\t\t\t\toptions.structures = []\n\t\t\t\t\tif (!options.maxSharedStructures)\n\t\t\t\t\t\toptions.maxSharedStructures = 0\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.structures)\n\t\t\t\toptions.structures.sharedLength = options.structures.length\n\t\t\telse if (options.getStructures) {\n\t\t\t\t(options.structures = []).uninitialized = true // this is what we use to denote an uninitialized structures\n\t\t\t\toptions.structures.sharedLength = 0\n\t\t\t}\n\t\t\tif (options.int64AsNumber) {\n\t\t\t\toptions.int64AsType = 'number'\n\t\t\t}\n\t\t}\n\t\tObject.assign(this, options)\n\t}\n\tunpack(source, options) {\n\t\tif (src) {\n\t\t\t// re-entrant execution, save the state and restore it after we do this unpack\n\t\t\treturn saveState(() => {\n\t\t\t\tclearSource()\n\t\t\t\treturn this ? this.unpack(source, options) : Unpackr.prototype.unpack.call(defaultOptions, source, options)\n\t\t\t})\n\t\t}\n\t\tif (!source.buffer && source.constructor === ArrayBuffer)\n\t\t\tsource = typeof Buffer !== 'undefined' ? Buffer.from(source) : new Uint8Array(source);\n\t\tif (typeof options === 'object') {\n\t\t\tsrcEnd = options.end || source.length\n\t\t\tposition = options.start || 0\n\t\t} else {\n\t\t\tposition = 0\n\t\t\tsrcEnd = options > -1 ? options : source.length\n\t\t}\n\t\tstringPosition = 0\n\t\tsrcStringEnd = 0\n\t\tsrcString = null\n\t\tstrings = EMPTY_ARRAY\n\t\tbundledStrings = null\n\t\tsrc = source\n\t\t// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend\n\t\t// technique for getting data from a database where it can be copied into an existing buffer instead of creating\n\t\t// new ones\n\t\ttry {\n\t\t\tdataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength))\n\t\t} catch(error) {\n\t\t\t// if it doesn't have a buffer, maybe it is the wrong type of object\n\t\t\tsrc = null\n\t\t\tif (source instanceof Uint8Array)\n\t\t\t\tthrow error\n\t\t\tthrow new Error('Source must be a Uint8Array or Buffer but was a ' + ((source && typeof source == 'object') ? source.constructor.name : typeof source))\n\t\t}\n\t\tif (this instanceof Unpackr) {\n\t\t\tcurrentUnpackr = this\n\t\t\tif (this.structures) {\n\t\t\t\tcurrentStructures = this.structures\n\t\t\t\treturn checkedRead(options)\n\t\t\t} else if (!currentStructures || currentStructures.length > 0) {\n\t\t\t\tcurrentStructures = []\n\t\t\t}\n\t\t} else {\n\t\t\tcurrentUnpackr = defaultOptions\n\t\t\tif (!currentStructures || currentStructures.length > 0)\n\t\t\t\tcurrentStructures = []\n\t\t}\n\t\treturn checkedRead(options)\n\t}\n\tunpackMultiple(source, forEach) {\n\t\tlet values, lastPosition = 0\n\t\ttry {\n\t\t\tsequentialMode = true\n\t\t\tlet size = source.length\n\t\t\tlet value = this ? this.unpack(source, size) : defaultUnpackr.unpack(source, size)\n\t\t\tif (forEach) {\n\t\t\t\tif (forEach(value, lastPosition, position) === false) return;\n\t\t\t\twhile(position < size) {\n\t\t\t\t\tlastPosition = position\n\t\t\t\t\tif (forEach(checkedRead(), lastPosition, position) === false) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvalues = [ value ]\n\t\t\t\twhile(position < size) {\n\t\t\t\t\tlastPosition = position\n\t\t\t\t\tvalues.push(checkedRead())\n\t\t\t\t}\n\t\t\t\treturn values\n\t\t\t}\n\t\t} catch(error) {\n\t\t\terror.lastPosition = lastPosition\n\t\t\terror.values = values\n\t\t\tthrow error\n\t\t} finally {\n\t\t\tsequentialMode = false\n\t\t\tclearSource()\n\t\t}\n\t}\n\t_mergeStructures(loadedStructures, existingStructures) {\n\t\tif (onLoadedStructures)\n\t\t\tloadedStructures = onLoadedStructures.call(this, loadedStructures);\n\t\tloadedStructures = loadedStructures || []\n\t\tif (Object.isFrozen(loadedStructures))\n\t\t\tloadedStructures = loadedStructures.map(structure => structure.slice(0))\n\t\tfor (let i = 0, l = loadedStructures.length; i < l; i++) {\n\t\t\tlet structure = loadedStructures[i]\n\t\t\tif (structure) {\n\t\t\t\tstructure.isShared = true\n\t\t\t\tif (i >= 32)\n\t\t\t\t\tstructure.highByte = (i - 32) >> 5\n\t\t\t}\n\t\t}\n\t\tloadedStructures.sharedLength = loadedStructures.length\n\t\tfor (let id in existingStructures || []) {\n\t\t\tif (id >= 0) {\n\t\t\t\tlet structure = loadedStructures[id]\n\t\t\t\tlet existing = existingStructures[id]\n\t\t\t\tif (existing) {\n\t\t\t\t\tif (structure)\n\t\t\t\t\t\t(loadedStructures.restoreStructures || (loadedStructures.restoreStructures = []))[id] = structure\n\t\t\t\t\tloadedStructures[id] = existing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.structures = loadedStructures\n\t}\n\tdecode(source, options) {\n\t\treturn this.unpack(source, options)\n\t}\n}\nexport function getPosition() {\n\treturn position\n}\nexport function checkedRead(options) {\n\ttry {\n\t\tif (!currentUnpackr.trusted && !sequentialMode) {\n\t\t\tlet sharedLength = currentStructures.sharedLength || 0\n\t\t\tif (sharedLength < currentStructures.length)\n\t\t\t\tcurrentStructures.length = sharedLength\n\t\t}\n\t\tlet result\n\t\tif (currentUnpackr.randomAccessStructure && src[position] < 0x40 && src[position] >= 0x20 && readStruct) {\n\t\t\tresult = readStruct(src, position, srcEnd, currentUnpackr)\n\t\t\tsrc = null // dispose of this so that recursive unpack calls don't save state\n\t\t\tif (!(options && options.lazy) && result)\n\t\t\t\tresult = result.toJSON()\n\t\t\tposition = srcEnd\n\t\t} else\n\t\t\tresult = read()\n\t\tif (bundledStrings) { // bundled strings to skip past\n\t\t\tposition = bundledStrings.postBundlePosition\n\t\t\tbundledStrings = null\n\t\t}\n\t\tif (sequentialMode)\n\t\t\t// we only need to restore the structures if there was an error, but if we completed a read,\n\t\t\t// we can clear this out and keep the structures we read\n\t\t\tcurrentStructures.restoreStructures = null\n\n\t\tif (position == srcEnd) {\n\t\t\t// finished reading this source, cleanup references\n\t\t\tif (currentStructures && currentStructures.restoreStructures)\n\t\t\t\trestoreStructures()\n\t\t\tcurrentStructures = null\n\t\t\tsrc = null\n\t\t\tif (referenceMap)\n\t\t\t\treferenceMap = null\n\t\t} else if (position > srcEnd) {\n\t\t\t// over read\n\t\t\tthrow new Error('Unexpected end of MessagePack data')\n\t\t} else if (!sequentialMode) {\n\t\t\tlet jsonView;\n\t\t\ttry {\n\t\t\t\tjsonView = JSON.stringify(result, (_, value) => typeof value === \"bigint\" ? `${value}n` : value).slice(0, 100)\n\t\t\t} catch(error) {\n\t\t\t\tjsonView = '(JSON view not available ' + error + ')'\n\t\t\t}\n\t\t\tthrow new Error('Data read, but end of buffer not reached ' + jsonView)\n\t\t}\n\t\t// else more to read, but we are reading sequentially, so don't clear source yet\n\t\treturn result\n\t} catch(error) {\n\t\tif (currentStructures && currentStructures.restoreStructures)\n\t\t\trestoreStructures()\n\t\tclearSource()\n\t\tif (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer') || position > srcEnd) {\n\t\t\terror.incomplete = true\n\t\t}\n\t\tthrow error\n\t}\n}\n\nfunction restoreStructures() {\n\tfor (let id in currentStructures.restoreStructures) {\n\t\tcurrentStructures[id] = currentStructures.restoreStructures[id]\n\t}\n\tcurrentStructures.restoreStructures = null\n}\n\nexport function read() {\n\tlet token = src[position++]\n\tif (token < 0xa0) {\n\t\tif (token < 0x80) {\n\t\t\tif (token < 0x40)\n\t\t\t\treturn token\n\t\t\telse {\n\t\t\t\tlet structure = currentStructures[token & 0x3f] ||\n\t\t\t\t\tcurrentUnpackr.getStructures && loadStructures()[token & 0x3f]\n\t\t\t\tif (structure) {\n\t\t\t\t\tif (!structure.read) {\n\t\t\t\t\t\tstructure.read = createStructureReader(structure, token & 0x3f)\n\t\t\t\t\t}\n\t\t\t\t\treturn structure.read()\n\t\t\t\t} else\n\t\t\t\t\treturn token\n\t\t\t}\n\t\t} else if (token < 0x90) {\n\t\t\t// map\n\t\t\ttoken -= 0x80\n\t\t\tif (currentUnpackr.mapsAsObjects) {\n\t\t\t\tlet object = {}\n\t\t\t\tfor (let i = 0; i < token; i++) {\n\t\t\t\t\tlet key = readKey()\n\t\t\t\t\tif (key === '__proto__')\n\t\t\t\t\t\tkey = '__proto_'\n\t\t\t\t\tobject[key] = read()\n\t\t\t\t}\n\t\t\t\treturn object\n\t\t\t} else {\n\t\t\t\tlet map = new Map()\n\t\t\t\tfor (let i = 0; i < token; i++) {\n\t\t\t\t\tmap.set(read(), read())\n\t\t\t\t}\n\t\t\t\treturn map\n\t\t\t}\n\t\t} else {\n\t\t\ttoken -= 0x90\n\t\t\tlet array = new Array(token)\n\t\t\tfor (let i = 0; i < token; i++) {\n\t\t\t\tarray[i] = read()\n\t\t\t}\n\t\t\tif (currentUnpackr.freezeData)\n\t\t\t\treturn Object.freeze(array)\n\t\t\treturn array\n\t\t}\n\t} else if (token < 0xc0) {\n\t\t// fixstr\n\t\tlet length = token - 0xa0\n\t\tif (srcStringEnd >= position) {\n\t\t\treturn srcString.slice(position - srcStringStart, (position += length) - srcStringStart)\n\t\t}\n\t\tif (srcStringEnd == 0 && srcEnd < 140) {\n\t\t\t// for small blocks, avoiding the overhead of the extract call is helpful\n\t\t\tlet string = length < 16 ? shortStringInJS(length) : longStringInJS(length)\n\t\t\tif (string != null)\n\t\t\t\treturn string\n\t\t}\n\t\treturn readFixedString(length)\n\t} else {\n\t\tlet value\n\t\tswitch (token) {\n\t\t\tcase 0xc0: return null\n\t\t\tcase 0xc1:\n\t\t\t\tif (bundledStrings) {\n\t\t\t\t\tvalue = read() // followed by the length of the string in characters (not bytes!)\n\t\t\t\t\tif (value > 0)\n\t\t\t\t\t\treturn bundledStrings[1].slice(bundledStrings.position1, bundledStrings.position1 += value)\n\t\t\t\t\telse\n\t\t\t\t\t\treturn bundledStrings[0].slice(bundledStrings.position0, bundledStrings.position0 -= value)\n\t\t\t\t}\n\t\t\t\treturn C1; // \"never-used\", return special object to denote that\n\t\t\tcase 0xc2: return false\n\t\t\tcase 0xc3: return true\n\t\t\tcase 0xc4:\n\t\t\t\t// bin 8\n\t\t\t\tvalue = src[position++]\n\t\t\t\tif (value === undefined)\n\t\t\t\t\tthrow new Error('Unexpected end of buffer')\n\t\t\t\treturn readBin(value)\n\t\t\tcase 0xc5:\n\t\t\t\t// bin 16\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\treturn readBin(value)\n\t\t\tcase 0xc6:\n\t\t\t\t// bin 32\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\treturn readBin(value)\n\t\t\tcase 0xc7:\n\t\t\t\t// ext 8\n\t\t\t\treturn readExt(src[position++])\n\t\t\tcase 0xc8:\n\t\t\t\t// ext 16\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\treturn readExt(value)\n\t\t\tcase 0xc9:\n\t\t\t\t// ext 32\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\treturn readExt(value)\n\t\t\tcase 0xca:\n\t\t\t\tvalue = dataView.getFloat32(position)\n\t\t\t\tif (currentUnpackr.useFloat32 > 2) {\n\t\t\t\t\t// this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n\t\t\t\t\tlet multiplier = mult10[((src[position] & 0x7f) << 1) | (src[position + 1] >> 7)]\n\t\t\t\t\tposition += 4\n\t\t\t\t\treturn ((multiplier * value + (value > 0 ? 0.5 : -0.5)) >> 0) / multiplier\n\t\t\t\t}\n\t\t\t\tposition += 4\n\t\t\t\treturn value\n\t\t\tcase 0xcb:\n\t\t\t\tvalue = dataView.getFloat64(position)\n\t\t\t\tposition += 8\n\t\t\t\treturn value\n\t\t\t// uint handlers\n\t\t\tcase 0xcc:\n\t\t\t\treturn src[position++]\n\t\t\tcase 0xcd:\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\treturn value\n\t\t\tcase 0xce:\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\treturn value\n\t\t\tcase 0xcf:\n\t\t\t\tif (currentUnpackr.int64AsType === 'number') {\n\t\t\t\t\tvalue = dataView.getUint32(position) * 0x100000000\n\t\t\t\t\tvalue += dataView.getUint32(position + 4)\n\t\t\t\t} else if (currentUnpackr.int64AsType === 'string') {\n\t\t\t\t\tvalue = dataView.getBigUint64(position).toString()\n\t\t\t\t} else if (currentUnpackr.int64AsType === 'auto') {\n\t\t\t\t\tvalue = dataView.getBigUint64(position)\n\t\t\t\t\tif (value<=BigInt(2)<=BigInt(-2)<= position) {\n\t\t\t\t\treturn srcString.slice(position - srcStringStart, (position += value) - srcStringStart)\n\t\t\t\t}\n\t\t\t\treturn readString8(value)\n\t\t\tcase 0xda:\n\t\t\t// str 16\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\tif (srcStringEnd >= position) {\n\t\t\t\t\treturn srcString.slice(position - srcStringStart, (position += value) - srcStringStart)\n\t\t\t\t}\n\t\t\t\treturn readString16(value)\n\t\t\tcase 0xdb:\n\t\t\t// str 32\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\tif (srcStringEnd >= position) {\n\t\t\t\t\treturn srcString.slice(position - srcStringStart, (position += value) - srcStringStart)\n\t\t\t\t}\n\t\t\t\treturn readString32(value)\n\t\t\tcase 0xdc:\n\t\t\t// array 16\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\treturn readArray(value)\n\t\t\tcase 0xdd:\n\t\t\t// array 32\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\treturn readArray(value)\n\t\t\tcase 0xde:\n\t\t\t// map 16\n\t\t\t\tvalue = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\treturn readMap(value)\n\t\t\tcase 0xdf:\n\t\t\t// map 32\n\t\t\t\tvalue = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\treturn readMap(value)\n\t\t\tdefault: // negative int\n\t\t\t\tif (token >= 0xe0)\n\t\t\t\t\treturn token - 0x100\n\t\t\t\tif (token === undefined) {\n\t\t\t\t\tlet error = new Error('Unexpected end of MessagePack data')\n\t\t\t\t\terror.incomplete = true\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t\tthrow new Error('Unknown MessagePack token ' + token)\n\n\t\t}\n\t}\n}\nconst validName = /^[a-zA-Z_$][a-zA-Z\\d_$]*$/\nfunction createStructureReader(structure, firstId) {\n\tfunction readObject() {\n\t\t// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function\n\t\tif (readObject.count++ > inlineObjectReadThreshold) {\n\t\t\tlet readObject = structure.read = (new Function('r', 'return function(){return ' + (currentUnpackr.freezeData ? 'Object.freeze' : '') +\n\t\t\t\t'({' + structure.map(key => key === '__proto__' ? '__proto_:r()' : validName.test(key) ? key + ':r()' : ('[' + JSON.stringify(key) + ']:r()')).join(',') + '})}'))(read)\n\t\t\tif (structure.highByte === 0)\n\t\t\t\tstructure.read = createSecondByteReader(firstId, structure.read)\n\t\t\treturn readObject() // second byte is already read, if there is one so immediately read object\n\t\t}\n\t\tlet object = {}\n\t\tfor (let i = 0, l = structure.length; i < l; i++) {\n\t\t\tlet key = structure[i]\n\t\t\tif (key === '__proto__')\n\t\t\t\tkey = '__proto_'\n\t\t\tobject[key] = read()\n\t\t}\n\t\tif (currentUnpackr.freezeData)\n\t\t\treturn Object.freeze(object);\n\t\treturn object\n\t}\n\treadObject.count = 0\n\tif (structure.highByte === 0) {\n\t\treturn createSecondByteReader(firstId, readObject)\n\t}\n\treturn readObject\n}\n\nconst createSecondByteReader = (firstId, read0) => {\n\treturn function() {\n\t\tlet highByte = src[position++]\n\t\tif (highByte === 0)\n\t\t\treturn read0()\n\t\tlet id = firstId < 32 ? -(firstId + (highByte << 5)) : firstId + (highByte << 5)\n\t\tlet structure = currentStructures[id] || loadStructures()[id]\n\t\tif (!structure) {\n\t\t\tthrow new Error('Record id is not defined for ' + id)\n\t\t}\n\t\tif (!structure.read)\n\t\t\tstructure.read = createStructureReader(structure, firstId)\n\t\treturn structure.read()\n\t}\n}\n\nexport function loadStructures() {\n\tlet loadedStructures = saveState(() => {\n\t\t// save the state in case getStructures modifies our buffer\n\t\tsrc = null\n\t\treturn currentUnpackr.getStructures()\n\t})\n\treturn currentStructures = currentUnpackr._mergeStructures(loadedStructures, currentStructures)\n}\n\nvar readFixedString = readStringJS\nvar readString8 = readStringJS\nvar readString16 = readStringJS\nvar readString32 = readStringJS\nexport let isNativeAccelerationEnabled = false\n\nexport function setExtractor(extractStrings) {\n\tisNativeAccelerationEnabled = true\n\treadFixedString = readString(1)\n\treadString8 = readString(2)\n\treadString16 = readString(3)\n\treadString32 = readString(5)\n\tfunction readString(headerLength) {\n\t\treturn function readString(length) {\n\t\t\tlet string = strings[stringPosition++]\n\t\t\tif (string == null) {\n\t\t\t\tif (bundledStrings)\n\t\t\t\t\treturn readStringJS(length)\n\t\t\t\tlet byteOffset = src.byteOffset\n\t\t\t\tlet extraction = extractStrings(position - headerLength + byteOffset, srcEnd + byteOffset, src.buffer)\n\t\t\t\tif (typeof extraction == 'string') {\n\t\t\t\t\tstring = extraction\n\t\t\t\t\tstrings = EMPTY_ARRAY\n\t\t\t\t} else {\n\t\t\t\t\tstrings = extraction\n\t\t\t\t\tstringPosition = 1\n\t\t\t\t\tsrcStringEnd = 1 // even if a utf-8 string was decoded, must indicate we are in the midst of extracted strings and can't skip strings\n\t\t\t\t\tstring = strings[0]\n\t\t\t\t\tif (string === undefined)\n\t\t\t\t\t\tthrow new Error('Unexpected end of buffer')\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet srcStringLength = string.length\n\t\t\tif (srcStringLength <= length) {\n\t\t\t\tposition += length\n\t\t\t\treturn string\n\t\t\t}\n\t\t\tsrcString = string\n\t\t\tsrcStringStart = position\n\t\t\tsrcStringEnd = position + srcStringLength\n\t\t\tposition += length\n\t\t\treturn string.slice(0, length) // we know we just want the beginning\n\t\t}\n\t}\n}\nfunction readStringJS(length) {\n\tlet result\n\tif (length < 16) {\n\t\tif (result = shortStringInJS(length))\n\t\t\treturn result\n\t}\n\tif (length > 64 && decoder)\n\t\treturn decoder.decode(src.subarray(position, position += length))\n\tconst end = position + length\n\tconst units = []\n\tresult = ''\n\twhile (position < end) {\n\t\tconst byte1 = src[position++]\n\t\tif ((byte1 & 0x80) === 0) {\n\t\t\t// 1 byte\n\t\t\tunits.push(byte1)\n\t\t} else if ((byte1 & 0xe0) === 0xc0) {\n\t\t\t// 2 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tunits.push(((byte1 & 0x1f) << 6) | byte2)\n\t\t} else if ((byte1 & 0xf0) === 0xe0) {\n\t\t\t// 3 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tconst byte3 = src[position++] & 0x3f\n\t\t\tunits.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3)\n\t\t} else if ((byte1 & 0xf8) === 0xf0) {\n\t\t\t// 4 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tconst byte3 = src[position++] & 0x3f\n\t\t\tconst byte4 = src[position++] & 0x3f\n\t\t\tlet unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4\n\t\t\tif (unit > 0xffff) {\n\t\t\t\tunit -= 0x10000\n\t\t\t\tunits.push(((unit >>> 10) & 0x3ff) | 0xd800)\n\t\t\t\tunit = 0xdc00 | (unit & 0x3ff)\n\t\t\t}\n\t\t\tunits.push(unit)\n\t\t} else {\n\t\t\tunits.push(byte1)\n\t\t}\n\n\t\tif (units.length >= 0x1000) {\n\t\t\tresult += fromCharCode.apply(String, units)\n\t\t\tunits.length = 0\n\t\t}\n\t}\n\n\tif (units.length > 0) {\n\t\tresult += fromCharCode.apply(String, units)\n\t}\n\n\treturn result\n}\nexport function readString(source, start, length) {\n\tlet existingSrc = src;\n\tsrc = source;\n\tposition = start;\n\ttry {\n\t\treturn readStringJS(length);\n\t} finally {\n\t\tsrc = existingSrc;\n\t}\n}\n\nfunction readArray(length) {\n\tlet array = new Array(length)\n\tfor (let i = 0; i < length; i++) {\n\t\tarray[i] = read()\n\t}\n\tif (currentUnpackr.freezeData)\n\t\treturn Object.freeze(array)\n\treturn array\n}\n\nfunction readMap(length) {\n\tif (currentUnpackr.mapsAsObjects) {\n\t\tlet object = {}\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tlet key = readKey()\n\t\t\tif (key === '__proto__')\n\t\t\t\tkey = '__proto_';\n\t\t\tobject[key] = read()\n\t\t}\n\t\treturn object\n\t} else {\n\t\tlet map = new Map()\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tmap.set(read(), read())\n\t\t}\n\t\treturn map\n\t}\n}\n\nvar fromCharCode = String.fromCharCode\nfunction longStringInJS(length) {\n\tlet start = position\n\tlet bytes = new Array(length)\n\tfor (let i = 0; i < length; i++) {\n\t\tconst byte = src[position++];\n\t\tif ((byte & 0x80) > 0) {\n\t\t\t\tposition = start\n\t\t\t\treturn\n\t\t\t}\n\t\t\tbytes[i] = byte\n\t\t}\n\t\treturn fromCharCode.apply(String, bytes)\n}\nfunction shortStringInJS(length) {\n\tif (length < 4) {\n\t\tif (length < 2) {\n\t\t\tif (length === 0)\n\t\t\t\treturn ''\n\t\t\telse {\n\t\t\t\tlet a = src[position++]\n\t\t\t\tif ((a & 0x80) > 1) {\n\t\t\t\t\tposition -= 1\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a)\n\t\t\t}\n\t\t} else {\n\t\t\tlet a = src[position++]\n\t\t\tlet b = src[position++]\n\t\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0) {\n\t\t\t\tposition -= 2\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 3)\n\t\t\t\treturn fromCharCode(a, b)\n\t\t\tlet c = src[position++]\n\t\t\tif ((c & 0x80) > 0) {\n\t\t\t\tposition -= 3\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn fromCharCode(a, b, c)\n\t\t}\n\t} else {\n\t\tlet a = src[position++]\n\t\tlet b = src[position++]\n\t\tlet c = src[position++]\n\t\tlet d = src[position++]\n\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) {\n\t\t\tposition -= 4\n\t\t\treturn\n\t\t}\n\t\tif (length < 6) {\n\t\t\tif (length === 4)\n\t\t\t\treturn fromCharCode(a, b, c, d)\n\t\t\telse {\n\t\t\t\tlet e = src[position++]\n\t\t\t\tif ((e & 0x80) > 0) {\n\t\t\t\t\tposition -= 5\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a, b, c, d, e)\n\t\t\t}\n\t\t} else if (length < 8) {\n\t\t\tlet e = src[position++]\n\t\t\tlet f = src[position++]\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0) {\n\t\t\t\tposition -= 6\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 7)\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f)\n\t\t\tlet g = src[position++]\n\t\t\tif ((g & 0x80) > 0) {\n\t\t\t\tposition -= 7\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn fromCharCode(a, b, c, d, e, f, g)\n\t\t} else {\n\t\t\tlet e = src[position++]\n\t\t\tlet f = src[position++]\n\t\t\tlet g = src[position++]\n\t\t\tlet h = src[position++]\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) {\n\t\t\t\tposition -= 8\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 10) {\n\t\t\t\tif (length === 8)\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h)\n\t\t\t\telse {\n\t\t\t\t\tlet i = src[position++]\n\t\t\t\t\tif ((i & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 9\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i)\n\t\t\t\t}\n\t\t\t} else if (length < 12) {\n\t\t\t\tlet i = src[position++]\n\t\t\t\tlet j = src[position++]\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0) {\n\t\t\t\t\tposition -= 10\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (length < 11)\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j)\n\t\t\t\tlet k = src[position++]\n\t\t\t\tif ((k & 0x80) > 0) {\n\t\t\t\t\tposition -= 11\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k)\n\t\t\t} else {\n\t\t\t\tlet i = src[position++]\n\t\t\t\tlet j = src[position++]\n\t\t\t\tlet k = src[position++]\n\t\t\t\tlet l = src[position++]\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) {\n\t\t\t\t\tposition -= 12\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (length < 14) {\n\t\t\t\t\tif (length === 12)\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l)\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet m = src[position++]\n\t\t\t\t\t\tif ((m & 0x80) > 0) {\n\t\t\t\t\t\t\tposition -= 13\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet m = src[position++]\n\t\t\t\t\tlet n = src[position++]\n\t\t\t\t\tif ((m & 0x80) > 0 || (n & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 14\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tif (length < 15)\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n)\n\t\t\t\t\tlet o = src[position++]\n\t\t\t\t\tif ((o & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 15\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction readOnlyJSString() {\n\tlet token = src[position++]\n\tlet length\n\tif (token < 0xc0) {\n\t\t// fixstr\n\t\tlength = token - 0xa0\n\t} else {\n\t\tswitch(token) {\n\t\t\tcase 0xd9:\n\t\t\t// str 8\n\t\t\t\tlength = src[position++]\n\t\t\t\tbreak\n\t\t\tcase 0xda:\n\t\t\t// str 16\n\t\t\t\tlength = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\tbreak\n\t\t\tcase 0xdb:\n\t\t\t// str 32\n\t\t\t\tlength = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Expected string')\n\t\t}\n\t}\n\treturn readStringJS(length)\n}\n\n\nfunction readBin(length) {\n\treturn currentUnpackr.copyBuffers ?\n\t\t// specifically use the copying slice (not the node one)\n\t\tUint8Array.prototype.slice.call(src, position, position += length) :\n\t\tsrc.subarray(position, position += length)\n}\nfunction readExt(length) {\n\tlet type = src[position++]\n\tif (currentExtensions[type]) {\n\t\tlet end\n\t\treturn currentExtensions[type](src.subarray(position, end = (position += length)), (readPosition) => {\n\t\t\tposition = readPosition;\n\t\t\ttry {\n\t\t\t\treturn read();\n\t\t\t} finally {\n\t\t\t\tposition = end;\n\t\t\t}\n\t\t})\n\t}\n\telse\n\t\tthrow new Error('Unknown extension type ' + type)\n}\n\nvar keyCache = new Array(4096)\nfunction readKey() {\n\tlet length = src[position++]\n\tif (length >= 0xa0 && length < 0xc0) {\n\t\t// fixstr, potentially use key cache\n\t\tlength = length - 0xa0\n\t\tif (srcStringEnd >= position) // if it has been extracted, must use it (and faster anyway)\n\t\t\treturn srcString.slice(position - srcStringStart, (position += length) - srcStringStart)\n\t\telse if (!(srcStringEnd == 0 && srcEnd < 180))\n\t\t\treturn readFixedString(length)\n\t} else { // not cacheable, go back and do a standard read\n\t\tposition--\n\t\treturn asSafeString(read())\n\t}\n\tlet key = ((length << 5) ^ (length > 1 ? dataView.getUint16(position) : length > 0 ? src[position] : 0)) & 0xfff\n\tlet entry = keyCache[key]\n\tlet checkPosition = position\n\tlet end = position + length - 3\n\tlet chunk\n\tlet i = 0\n\tif (entry && entry.bytes == length) {\n\t\twhile (checkPosition < end) {\n\t\t\tchunk = dataView.getUint32(checkPosition)\n\t\t\tif (chunk != entry[i++]) {\n\t\t\t\tcheckPosition = 0x70000000\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcheckPosition += 4\n\t\t}\n\t\tend += 3\n\t\twhile (checkPosition < end) {\n\t\t\tchunk = src[checkPosition++]\n\t\t\tif (chunk != entry[i++]) {\n\t\t\t\tcheckPosition = 0x70000000\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif (checkPosition === end) {\n\t\t\tposition = checkPosition\n\t\t\treturn entry.string\n\t\t}\n\t\tend -= 3\n\t\tcheckPosition = position\n\t}\n\tentry = []\n\tkeyCache[key] = entry\n\tentry.bytes = length\n\twhile (checkPosition < end) {\n\t\tchunk = dataView.getUint32(checkPosition)\n\t\tentry.push(chunk)\n\t\tcheckPosition += 4\n\t}\n\tend += 3\n\twhile (checkPosition < end) {\n\t\tchunk = src[checkPosition++]\n\t\tentry.push(chunk)\n\t}\n\t// for small blocks, avoiding the overhead of the extract call is helpful\n\tlet string = length < 16 ? shortStringInJS(length) : longStringInJS(length)\n\tif (string != null)\n\t\treturn entry.string = string\n\treturn entry.string = readFixedString(length)\n}\n\nfunction asSafeString(property) {\n\t// protect against expensive (DoS) string conversions\n\tif (typeof property === 'string') return property;\n\tif (typeof property === 'number' || typeof property === 'boolean' || typeof property === 'bigint') return property.toString();\n\tif (property == null) return property + '';\n\tthrow new Error('Invalid property type for record', typeof property);\n}\n// the registration of the record definition extension (as \"r\")\nconst recordDefinition = (id, highByte) => {\n\tlet structure = read().map(asSafeString) // ensure that all keys are strings and\n\t// that the array is mutable\n\tlet firstByte = id\n\tif (highByte !== undefined) {\n\t\tid = id < 32 ? -((highByte << 5) + id) : ((highByte << 5) + id)\n\t\tstructure.highByte = highByte\n\t}\n\tlet existingStructure = currentStructures[id]\n\t// If it is a shared structure, we need to restore any changes after reading.\n\t// Also in sequential mode, we may get incomplete reads and thus errors, and we need to restore\n\t// to the state prior to an incomplete read in order to properly resume.\n\tif (existingStructure && (existingStructure.isShared || sequentialMode)) {\n\t\t(currentStructures.restoreStructures || (currentStructures.restoreStructures = []))[id] = existingStructure\n\t}\n\tcurrentStructures[id] = structure\n\tstructure.read = createStructureReader(structure, firstByte)\n\treturn structure.read()\n}\ncurrentExtensions[0] = () => {} // notepack defines extension 0 to mean undefined, so use that as the default here\ncurrentExtensions[0].noBuffer = true\n\ncurrentExtensions[0x42] = (data) => {\n\t// decode bigint\n\tlet length = data.length;\n\tlet value = BigInt(data[0] & 0x80 ? data[0] - 0x100 : data[0]);\n\tfor (let i = 1; i < length; i++) {\n\t\tvalue <<= 8n;\n\t\tvalue += BigInt(data[i]);\n\t}\n\treturn value;\n}\n\nlet errors = { Error, TypeError, ReferenceError };\ncurrentExtensions[0x65] = () => {\n\tlet data = read()\n\treturn (errors[data[0]] || Error)(data[1], { cause: data[2] })\n}\n\ncurrentExtensions[0x69] = (data) => {\n\t// id extension (for structured clones)\n\tif (currentUnpackr.structuredClone === false) throw new Error('Structured clone extension is disabled')\n\tlet id = dataView.getUint32(position - 4)\n\tif (!referenceMap)\n\t\treferenceMap = new Map()\n\tlet token = src[position]\n\tlet target\n\t// TODO: handle Maps, Sets, and other types that can cycle; this is complicated, because you potentially need to read\n\t// ahead past references to record structure definitions\n\tif (token >= 0x90 && token < 0xa0 || token == 0xdc || token == 0xdd)\n\t\ttarget = []\n\telse\n\t\ttarget = {}\n\n\tlet refEntry = { target } // a placeholder object\n\treferenceMap.set(id, refEntry)\n\tlet targetProperties = read() // read the next value as the target object to id\n\tif (refEntry.used) // there is a cycle, so we have to assign properties to original target\n\t\treturn Object.assign(target, targetProperties)\n\trefEntry.target = targetProperties // the placeholder wasn't used, replace with the deserialized one\n\treturn targetProperties // no cycle, can just use the returned read object\n}\n\ncurrentExtensions[0x70] = (data) => {\n\t// pointer extension (for structured clones)\n\tif (currentUnpackr.structuredClone === false) throw new Error('Structured clone extension is disabled')\n\tlet id = dataView.getUint32(position - 4)\n\tlet refEntry = referenceMap.get(id)\n\trefEntry.used = true\n\treturn refEntry.target\n}\n\ncurrentExtensions[0x73] = () => new Set(read())\n\nexport const typedArrays = ['Int8','Uint8','Uint8Clamped','Int16','Uint16','Int32','Uint32','Float32','Float64','BigInt64','BigUint64'].map(type => type + 'Array')\n\nlet glbl = typeof globalThis === 'object' ? globalThis : window;\ncurrentExtensions[0x74] = (data) => {\n\tlet typeCode = data[0]\n\tlet typedArrayName = typedArrays[typeCode]\n\tif (!typedArrayName) {\n\t\tif (typeCode === 16) {\n\t\t\tlet ab = new ArrayBuffer(data.length - 1)\n\t\t\tlet u8 = new Uint8Array(ab)\n\t\t\tu8.set(data.subarray(1))\n\t\t\treturn ab;\n\t\t}\n\t\tthrow new Error('Could not find typed array for code ' + typeCode)\n\t}\n\t// we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned\n\treturn new glbl[typedArrayName](Uint8Array.prototype.slice.call(data, 1).buffer)\n}\ncurrentExtensions[0x78] = () => {\n\tlet data = read()\n\treturn new RegExp(data[0], data[1])\n}\nconst TEMP_BUNDLE = []\ncurrentExtensions[0x62] = (data) => {\n\tlet dataSize = (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3]\n\tlet dataPosition = position\n\tposition += dataSize - data.length\n\tbundledStrings = TEMP_BUNDLE\n\tbundledStrings = [readOnlyJSString(), readOnlyJSString()]\n\tbundledStrings.position0 = 0\n\tbundledStrings.position1 = 0\n\tbundledStrings.postBundlePosition = position\n\tposition = dataPosition\n\treturn read()\n}\n\ncurrentExtensions[0xff] = (data) => {\n\t// 32-bit date extension\n\tif (data.length == 4)\n\t\treturn new Date((data[0] * 0x1000000 + (data[1] << 16) + (data[2] << 8) + data[3]) * 1000)\n\telse if (data.length == 8)\n\t\treturn new Date(\n\t\t\t((data[0] << 22) + (data[1] << 14) + (data[2] << 6) + (data[3] >> 2)) / 1000000 +\n\t\t\t((data[3] & 0x3) * 0x100000000 + data[4] * 0x1000000 + (data[5] << 16) + (data[6] << 8) + data[7]) * 1000)\n\telse if (data.length == 12)// TODO: Implement support for negative\n\t\treturn new Date(\n\t\t\t((data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3]) / 1000000 +\n\t\t\t(((data[4] & 0x80) ? -0x1000000000000 : 0) + data[6] * 0x10000000000 + data[7] * 0x100000000 + data[8] * 0x1000000 + (data[9] << 16) + (data[10] << 8) + data[11]) * 1000)\n\telse\n\t\treturn new Date('invalid')\n} // notepack defines extension 0 to mean undefined, so use that as the default here\n// registration of bulk record definition?\n// currentExtensions[0x52] = () =>\n\nfunction saveState(callback) {\n\tif (onSaveState)\n\t\tonSaveState();\n\tlet savedSrcEnd = srcEnd\n\tlet savedPosition = position\n\tlet savedStringPosition = stringPosition\n\tlet savedSrcStringStart = srcStringStart\n\tlet savedSrcStringEnd = srcStringEnd\n\tlet savedSrcString = srcString\n\tlet savedStrings = strings\n\tlet savedReferenceMap = referenceMap\n\tlet savedBundledStrings = bundledStrings\n\n\t// TODO: We may need to revisit this if we do more external calls to user code (since it could be slow)\n\tlet savedSrc = new Uint8Array(src.slice(0, srcEnd)) // we copy the data in case it changes while external data is processed\n\tlet savedStructures = currentStructures\n\tlet savedStructuresContents = currentStructures.slice(0, currentStructures.length)\n\tlet savedPackr = currentUnpackr\n\tlet savedSequentialMode = sequentialMode\n\tlet value = callback()\n\tsrcEnd = savedSrcEnd\n\tposition = savedPosition\n\tstringPosition = savedStringPosition\n\tsrcStringStart = savedSrcStringStart\n\tsrcStringEnd = savedSrcStringEnd\n\tsrcString = savedSrcString\n\tstrings = savedStrings\n\treferenceMap = savedReferenceMap\n\tbundledStrings = savedBundledStrings\n\tsrc = savedSrc\n\tsequentialMode = savedSequentialMode\n\tcurrentStructures = savedStructures\n\tcurrentStructures.splice(0, currentStructures.length, ...savedStructuresContents)\n\tcurrentUnpackr = savedPackr\n\tdataView = new DataView(src.buffer, src.byteOffset, src.byteLength)\n\treturn value\n}\nexport function clearSource() {\n\tsrc = null\n\treferenceMap = null\n\tcurrentStructures = null\n}\n\nexport function addExtension(extension) {\n\tif (extension.unpack)\n\t\tcurrentExtensions[extension.type] = extension.unpack\n\telse\n\t\tcurrentExtensions[extension.type] = extension\n}\n\nexport const mult10 = new Array(147) // this is a table matching binary exponents to the multiplier to determine significant digit rounding\nfor (let i = 0; i < 256; i++) {\n\tmult10[i] = +('1e' + Math.floor(45.15 - i * 0.30103))\n}\nexport const Decoder = Unpackr\nvar defaultUnpackr = new Unpackr({ useRecords: false })\nexport const unpack = defaultUnpackr.unpack\nexport const unpackMultiple = defaultUnpackr.unpackMultiple\nexport const decode = defaultUnpackr.unpack\nexport const FLOAT32_OPTIONS = {\n\tNEVER: 0,\n\tALWAYS: 1,\n\tDECIMAL_ROUND: 3,\n\tDECIMAL_FIT: 4\n}\nlet f32Array = new Float32Array(1)\nlet u8Array = new Uint8Array(f32Array.buffer, 0, 4)\nexport function roundFloat32(float32Number) {\n\tf32Array[0] = float32Number\n\tlet multiplier = mult10[((u8Array[3] & 0x7f) << 1) | (u8Array[2] >> 7)]\n\treturn ((multiplier * float32Number + (float32Number > 0 ? 0.5 : -0.5)) >> 0) / multiplier\n}\nexport function setReadStruct(updatedReadStruct, loadedStructs, saveState) {\n\treadStruct = updatedReadStruct;\n\tonLoadedStructures = loadedStructs;\n\tonSaveState = saveState;\n}\n","import { Unpackr, mult10, C1Type, typedArrays, addExtension as unpackAddExtension } from './unpack.js'\nlet textEncoder\ntry {\n\ttextEncoder = new TextEncoder()\n} catch (error) {}\nlet extensions, extensionClasses\nconst hasNodeBuffer = typeof Buffer !== 'undefined'\nconst ByteArrayAllocate = hasNodeBuffer ?\n\tfunction(length) { return Buffer.allocUnsafeSlow(length) } : Uint8Array\nconst ByteArray = hasNodeBuffer ? Buffer : Uint8Array\nconst MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000\nlet target, keysTarget\nlet targetView\nlet position = 0\nlet safeEnd\nlet bundledStrings = null\nlet writeStructSlots\nconst MAX_BUNDLE_SIZE = 0x5500 // maximum characters such that the encoded bytes fits in 16 bits.\nconst hasNonLatin = /[\\u0080-\\uFFFF]/\nexport const RECORD_SYMBOL = Symbol('record-id')\nexport class Packr extends Unpackr {\n\tconstructor(options) {\n\t\tsuper(options)\n\t\tthis.offset = 0\n\t\tlet typeBuffer\n\t\tlet start\n\t\tlet hasSharedUpdate\n\t\tlet structures\n\t\tlet referenceMap\n\t\tlet encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position) {\n\t\t\treturn target.utf8Write(string, position, 0xffffffff)\n\t\t} : (textEncoder && textEncoder.encodeInto) ?\n\t\t\tfunction(string, position) {\n\t\t\t\treturn textEncoder.encodeInto(string, target.subarray(position)).written\n\t\t\t} : false\n\n\t\tlet packr = this\n\t\tif (!options)\n\t\t\toptions = {}\n\t\tlet isSequential = options && options.sequential\n\t\tlet hasSharedStructures = options.structures || options.saveStructures\n\t\tlet maxSharedStructures = options.maxSharedStructures\n\t\tif (maxSharedStructures == null)\n\t\t\tmaxSharedStructures = hasSharedStructures ? 32 : 0\n\t\tif (maxSharedStructures > 8160)\n\t\t\tthrow new Error('Maximum maxSharedStructure is 8160')\n\t\tif (options.structuredClone && options.moreTypes == undefined) {\n\t\t\tthis.moreTypes = true\n\t\t}\n\t\tlet maxOwnStructures = options.maxOwnStructures\n\t\tif (maxOwnStructures == null)\n\t\t\tmaxOwnStructures = hasSharedStructures ? 32 : 64\n\t\tif (!this.structures && options.useRecords != false)\n\t\t\tthis.structures = []\n\t\t// two byte record ids for shared structures\n\t\tlet useTwoByteRecords = maxSharedStructures > 32 || (maxOwnStructures + maxSharedStructures > 64)\n\t\tlet sharedLimitId = maxSharedStructures + 0x40\n\t\tlet maxStructureId = maxSharedStructures + maxOwnStructures + 0x40\n\t\tif (maxStructureId > 8256) {\n\t\t\tthrow new Error('Maximum maxSharedStructure + maxOwnStructure is 8192')\n\t\t}\n\t\tlet recordIdsToRemove = []\n\t\tlet transitionsCount = 0\n\t\tlet serializationsSinceTransitionRebuild = 0\n\n\t\tthis.pack = this.encode = function(value, encodeOptions) {\n\t\t\tif (!target) {\n\t\t\t\ttarget = new ByteArrayAllocate(8192)\n\t\t\t\ttargetView = target.dataView || (target.dataView = new DataView(target.buffer, 0, 8192))\n\t\t\t\tposition = 0\n\t\t\t}\n\t\t\tsafeEnd = target.length - 10\n\t\t\tif (safeEnd - position < 0x800) {\n\t\t\t\t// don't start too close to the end,\n\t\t\t\ttarget = new ByteArrayAllocate(target.length)\n\t\t\t\ttargetView = target.dataView || (target.dataView = new DataView(target.buffer, 0, target.length))\n\t\t\t\tsafeEnd = target.length - 10\n\t\t\t\tposition = 0\n\t\t\t} else\n\t\t\t\tposition = (position + 7) & 0x7ffffff8 // Word align to make any future copying of this buffer faster\n\t\t\tstart = position\n\t\t\tif (encodeOptions & RESERVE_START_SPACE) position += (encodeOptions & 0xff)\n\t\t\treferenceMap = packr.structuredClone ? new Map() : null\n\t\t\tif (packr.bundleStrings && typeof value !== 'string') {\n\t\t\t\tbundledStrings = []\n\t\t\t\tbundledStrings.size = Infinity // force a new bundle start on first string\n\t\t\t} else\n\t\t\t\tbundledStrings = null\n\t\t\tstructures = packr.structures\n\t\t\tif (structures) {\n\t\t\t\tif (structures.uninitialized)\n\t\t\t\t\tstructures = packr._mergeStructures(packr.getStructures())\n\t\t\t\tlet sharedLength = structures.sharedLength || 0\n\t\t\t\tif (sharedLength > maxSharedStructures) {\n\t\t\t\t\t//if (maxSharedStructures <= 32 && structures.sharedLength > 32) // TODO: could support this, but would need to update the limit ids\n\t\t\t\t\tthrow new Error('Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to ' + structures.sharedLength)\n\t\t\t\t}\n\t\t\t\tif (!structures.transitions) {\n\t\t\t\t\t// rebuild our structure transitions\n\t\t\t\t\tstructures.transitions = Object.create(null)\n\t\t\t\t\tfor (let i = 0; i < sharedLength; i++) {\n\t\t\t\t\t\tlet keys = structures[i]\n\t\t\t\t\t\tif (!keys)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\tlet nextTransition, transition = structures.transitions\n\t\t\t\t\t\tfor (let j = 0, l = keys.length; j < l; j++) {\n\t\t\t\t\t\t\tlet key = keys[j]\n\t\t\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttransition = nextTransition\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttransition[RECORD_SYMBOL] = i + 0x40\n\t\t\t\t\t}\n\t\t\t\t\tthis.lastNamedStructuresLength = sharedLength\n\t\t\t\t}\n\t\t\t\tif (!isSequential) {\n\t\t\t\t\tstructures.nextId = sharedLength + 0x40\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (hasSharedUpdate)\n\t\t\t\thasSharedUpdate = false\n\t\t\tlet encodingError;\n\t\t\ttry {\n\t\t\t\tif (packr.randomAccessStructure && value && value.constructor && value.constructor === Object)\n\t\t\t\t\twriteStruct(value);\n\t\t\t\telse\n\t\t\t\t\tpack(value)\n\t\t\t\tlet lastBundle = bundledStrings;\n\t\t\t\tif (bundledStrings)\n\t\t\t\t\twriteBundles(start, pack, 0)\n\t\t\t\tif (referenceMap && referenceMap.idsToInsert) {\n\t\t\t\t\tlet idsToInsert = referenceMap.idsToInsert.sort((a, b) => a.offset > b.offset ? 1 : -1);\n\t\t\t\t\tlet i = idsToInsert.length;\n\t\t\t\t\tlet incrementPosition = -1;\n\t\t\t\t\twhile (lastBundle && i > 0) {\n\t\t\t\t\t\tlet insertionPoint = idsToInsert[--i].offset + start;\n\t\t\t\t\t\tif (insertionPoint < (lastBundle.stringsPosition + start) && incrementPosition === -1)\n\t\t\t\t\t\t\tincrementPosition = 0;\n\t\t\t\t\t\tif (insertionPoint > (lastBundle.position + start)) {\n\t\t\t\t\t\t\tif (incrementPosition >= 0)\n\t\t\t\t\t\t\t\tincrementPosition += 6;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (incrementPosition >= 0) {\n\t\t\t\t\t\t\t\t// update the bundle reference now\n\t\t\t\t\t\t\t\ttargetView.setUint32(lastBundle.position + start,\n\t\t\t\t\t\t\t\t\ttargetView.getUint32(lastBundle.position + start) + incrementPosition)\n\t\t\t\t\t\t\t\tincrementPosition = -1; // reset\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlastBundle = lastBundle.previous;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (incrementPosition >= 0 && lastBundle) {\n\t\t\t\t\t\t// update the bundle reference now\n\t\t\t\t\t\ttargetView.setUint32(lastBundle.position + start,\n\t\t\t\t\t\t\ttargetView.getUint32(lastBundle.position + start) + incrementPosition)\n\t\t\t\t\t}\n\t\t\t\t\tposition += idsToInsert.length * 6;\n\t\t\t\t\tif (position > safeEnd)\n\t\t\t\t\t\tmakeRoom(position)\n\t\t\t\t\tpackr.offset = position\n\t\t\t\t\tlet serialized = insertIds(target.subarray(start, position), idsToInsert)\n\t\t\t\t\treferenceMap = null\n\t\t\t\t\treturn serialized\n\t\t\t\t}\n\t\t\t\tpackr.offset = position // update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially\n\t\t\t\tif (encodeOptions & REUSE_BUFFER_MODE) {\n\t\t\t\t\ttarget.start = start\n\t\t\t\t\ttarget.end = position\n\t\t\t\t\treturn target\n\t\t\t\t}\n\t\t\t\treturn target.subarray(start, position) // position can change if we call pack again in saveStructures, so we get the buffer now\n\t\t\t} catch(error) {\n\t\t\t\tencodingError = error;\n\t\t\t\tthrow error;\n\t\t\t} finally {\n\t\t\t\tif (structures) {\n\t\t\t\t\tresetStructures();\n\t\t\t\t\tif (hasSharedUpdate && packr.saveStructures) {\n\t\t\t\t\t\tlet sharedLength = structures.sharedLength || 0\n\t\t\t\t\t\t// we can't rely on start/end with REUSE_BUFFER_MODE since they will (probably) change when we save\n\t\t\t\t\t\tlet returnBuffer = target.subarray(start, position)\n\t\t\t\t\t\tlet newSharedData = prepareStructures(structures, packr);\n\t\t\t\t\t\tif (!encodingError) { // TODO: If there is an encoding error, should make the structures as uninitialized so they get rebuilt next time\n\t\t\t\t\t\t\tif (packr.saveStructures(newSharedData, newSharedData.isCompatible) === false) {\n\t\t\t\t\t\t\t\t// get updated structures and try again if the update failed\n\t\t\t\t\t\t\t\treturn packr.pack(value, encodeOptions)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpackr.lastNamedStructuresLength = sharedLength\n\t\t\t\t\t\t\t// don't keep large buffers around\n\t\t\t\t\t\t\tif (target.length > 0x40000000) target = null\n\t\t\t\t\t\t\treturn returnBuffer\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// don't keep large buffers around, they take too much memory and cause problems (limit at 1GB)\n\t\t\t\tif (target.length > 0x40000000) target = null\n\t\t\t\tif (encodeOptions & RESET_BUFFER_MODE)\n\t\t\t\t\tposition = start\n\t\t\t}\n\t\t}\n\t\tconst resetStructures = () => {\n\t\t\tif (serializationsSinceTransitionRebuild < 10)\n\t\t\t\tserializationsSinceTransitionRebuild++\n\t\t\tlet sharedLength = structures.sharedLength || 0\n\t\t\tif (structures.length > sharedLength && !isSequential)\n\t\t\t\tstructures.length = sharedLength\n\t\t\tif (transitionsCount > 10000) {\n\t\t\t\t// force a rebuild occasionally after a lot of transitions so it can get cleaned up\n\t\t\t\tstructures.transitions = null\n\t\t\t\tserializationsSinceTransitionRebuild = 0\n\t\t\t\ttransitionsCount = 0\n\t\t\t\tif (recordIdsToRemove.length > 0)\n\t\t\t\t\trecordIdsToRemove = []\n\t\t\t} else if (recordIdsToRemove.length > 0 && !isSequential) {\n\t\t\t\tfor (let i = 0, l = recordIdsToRemove.length; i < l; i++) {\n\t\t\t\t\trecordIdsToRemove[i][RECORD_SYMBOL] = 0\n\t\t\t\t}\n\t\t\t\trecordIdsToRemove = []\n\t\t\t}\n\t\t}\n\t\tconst packArray = (value) => {\n\t\t\tvar length = value.length\n\t\t\tif (length < 0x10) {\n\t\t\t\ttarget[position++] = 0x90 | length\n\t\t\t} else if (length < 0x10000) {\n\t\t\t\ttarget[position++] = 0xdc\n\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t} else {\n\t\t\t\ttarget[position++] = 0xdd\n\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\tposition += 4\n\t\t\t}\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tpack(value[i])\n\t\t\t}\n\t\t}\n\t\tconst pack = (value) => {\n\t\t\tif (position > safeEnd)\n\t\t\t\ttarget = makeRoom(position)\n\n\t\t\tvar type = typeof value\n\t\t\tvar length\n\t\t\tif (type === 'string') {\n\t\t\t\tlet strLength = value.length\n\t\t\t\tif (bundledStrings && strLength >= 4 && strLength < 0x1000) {\n\t\t\t\t\tif ((bundledStrings.size += strLength) > MAX_BUNDLE_SIZE) {\n\t\t\t\t\t\tlet extStart\n\t\t\t\t\t\tlet maxBytes = (bundledStrings[0] ? bundledStrings[0].length * 3 + bundledStrings[1].length : 0) + 10\n\t\t\t\t\t\tif (position + maxBytes > safeEnd)\n\t\t\t\t\t\t\ttarget = makeRoom(position + maxBytes)\n\t\t\t\t\t\tlet lastBundle\n\t\t\t\t\t\tif (bundledStrings.position) { // here we use the 0x62 extension to write the last bundle and reserve space for the reference pointer to the next/current bundle\n\t\t\t\t\t\t\tlastBundle = bundledStrings\n\t\t\t\t\t\t\ttarget[position] = 0xc8 // ext 16\n\t\t\t\t\t\t\tposition += 3 // reserve for the writing bundle size\n\t\t\t\t\t\t\ttarget[position++] = 0x62 // 'b'\n\t\t\t\t\t\t\textStart = position - start\n\t\t\t\t\t\t\tposition += 4 // reserve for writing bundle reference\n\t\t\t\t\t\t\twriteBundles(start, pack, 0) // write the last bundles\n\t\t\t\t\t\t\ttargetView.setUint16(extStart + start - 3, position - start - extStart)\n\t\t\t\t\t\t} else { // here we use the 0x62 extension just to reserve the space for the reference pointer to the bundle (will be updated once the bundle is written)\n\t\t\t\t\t\t\ttarget[position++] = 0xd6 // fixext 4\n\t\t\t\t\t\t\ttarget[position++] = 0x62 // 'b'\n\t\t\t\t\t\t\textStart = position - start\n\t\t\t\t\t\t\tposition += 4 // reserve for writing bundle reference\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbundledStrings = ['', ''] // create new ones\n\t\t\t\t\t\tbundledStrings.previous = lastBundle;\n\t\t\t\t\t\tbundledStrings.size = 0\n\t\t\t\t\t\tbundledStrings.position = extStart\n\t\t\t\t\t}\n\t\t\t\t\tlet twoByte = hasNonLatin.test(value)\n\t\t\t\t\tbundledStrings[twoByte ? 0 : 1] += value\n\t\t\t\t\ttarget[position++] = 0xc1\n\t\t\t\t\tpack(twoByte ? -strLength : strLength);\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tlet headerSize\n\t\t\t\t// first we estimate the header size, so we can write to the correct location\n\t\t\t\tif (strLength < 0x20) {\n\t\t\t\t\theaderSize = 1\n\t\t\t\t} else if (strLength < 0x100) {\n\t\t\t\t\theaderSize = 2\n\t\t\t\t} else if (strLength < 0x10000) {\n\t\t\t\t\theaderSize = 3\n\t\t\t\t} else {\n\t\t\t\t\theaderSize = 5\n\t\t\t\t}\n\t\t\t\tlet maxBytes = strLength * 3\n\t\t\t\tif (position + maxBytes > safeEnd)\n\t\t\t\t\ttarget = makeRoom(position + maxBytes)\n\n\t\t\t\tif (strLength < 0x40 || !encodeUtf8) {\n\t\t\t\t\tlet i, c1, c2, strPosition = position + headerSize\n\t\t\t\t\tfor (i = 0; i < strLength; i++) {\n\t\t\t\t\t\tc1 = value.charCodeAt(i)\n\t\t\t\t\t\tif (c1 < 0x80) {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1\n\t\t\t\t\t\t} else if (c1 < 0x800) {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 | 0xc0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t(c1 & 0xfc00) === 0xd800 &&\n\t\t\t\t\t\t\t((c2 = value.charCodeAt(i + 1)) & 0xfc00) === 0xdc00\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tc1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff)\n\t\t\t\t\t\t\ti++\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 18 | 0xf0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 | 0xe0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlength = strPosition - position - headerSize\n\t\t\t\t} else {\n\t\t\t\t\tlength = encodeUtf8(value, position + headerSize)\n\t\t\t\t}\n\n\t\t\t\tif (length < 0x20) {\n\t\t\t\t\ttarget[position++] = 0xa0 | length\n\t\t\t\t} else if (length < 0x100) {\n\t\t\t\t\tif (headerSize < 2) {\n\t\t\t\t\t\ttarget.copyWithin(position + 2, position + 1, position + 1 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xd9\n\t\t\t\t\ttarget[position++] = length\n\t\t\t\t} else if (length < 0x10000) {\n\t\t\t\t\tif (headerSize < 3) {\n\t\t\t\t\t\ttarget.copyWithin(position + 3, position + 2, position + 2 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xda\n\t\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t\t} else {\n\t\t\t\t\tif (headerSize < 5) {\n\t\t\t\t\t\ttarget.copyWithin(position + 5, position + 3, position + 3 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xdb\n\t\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\t\tposition += 4\n\t\t\t\t}\n\t\t\t\tposition += length\n\t\t\t} else if (type === 'number') {\n\t\t\t\tif (value >>> 0 === value) {// positive integer, 32-bit or less\n\t\t\t\t\t// positive uint\n\t\t\t\t\tif (value < 0x20 || (value < 0x80 && this.useRecords === false) || (value < 0x40 && !this.randomAccessStructure)) {\n\t\t\t\t\t\ttarget[position++] = value\n\t\t\t\t\t} else if (value < 0x100) {\n\t\t\t\t\t\ttarget[position++] = 0xcc\n\t\t\t\t\t\ttarget[position++] = value\n\t\t\t\t\t} else if (value < 0x10000) {\n\t\t\t\t\t\ttarget[position++] = 0xcd\n\t\t\t\t\t\ttarget[position++] = value >> 8\n\t\t\t\t\t\ttarget[position++] = value & 0xff\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget[position++] = 0xce\n\t\t\t\t\t\ttargetView.setUint32(position, value)\n\t\t\t\t\t\tposition += 4\n\t\t\t\t\t}\n\t\t\t\t} else if (value >> 0 === value) { // negative integer\n\t\t\t\t\tif (value >= -0x20) {\n\t\t\t\t\t\ttarget[position++] = 0x100 + value\n\t\t\t\t\t} else if (value >= -0x80) {\n\t\t\t\t\t\ttarget[position++] = 0xd0\n\t\t\t\t\t\ttarget[position++] = value + 0x100\n\t\t\t\t\t} else if (value >= -0x8000) {\n\t\t\t\t\t\ttarget[position++] = 0xd1\n\t\t\t\t\t\ttargetView.setInt16(position, value)\n\t\t\t\t\t\tposition += 2\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget[position++] = 0xd2\n\t\t\t\t\t\ttargetView.setInt32(position, value)\n\t\t\t\t\t\tposition += 4\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet useFloat32\n\t\t\t\t\tif ((useFloat32 = this.useFloat32) > 0 && value < 0x100000000 && value >= -0x80000000) {\n\t\t\t\t\t\ttarget[position++] = 0xca\n\t\t\t\t\t\ttargetView.setFloat32(position, value)\n\t\t\t\t\t\tlet xShifted\n\t\t\t\t\t\tif (useFloat32 < 4 ||\n\t\t\t\t\t\t\t\t// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n\t\t\t\t\t\t\t\t((xShifted = value * mult10[((target[position] & 0x7f) << 1) | (target[position + 1] >> 7)]) >> 0) === xShifted) {\n\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tposition-- // move back into position for writing a double\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xcb\n\t\t\t\t\ttargetView.setFloat64(position, value)\n\t\t\t\t\tposition += 8\n\t\t\t\t}\n\t\t\t} else if (type === 'object' || type === 'function') {\n\t\t\t\tif (!value)\n\t\t\t\t\ttarget[position++] = 0xc0\n\t\t\t\telse {\n\t\t\t\t\tif (referenceMap) {\n\t\t\t\t\t\tlet referee = referenceMap.get(value)\n\t\t\t\t\t\tif (referee) {\n\t\t\t\t\t\t\tif (!referee.id) {\n\t\t\t\t\t\t\t\tlet idsToInsert = referenceMap.idsToInsert || (referenceMap.idsToInsert = [])\n\t\t\t\t\t\t\t\treferee.id = idsToInsert.push(referee)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttarget[position++] = 0xd6 // fixext 4\n\t\t\t\t\t\t\ttarget[position++] = 0x70 // \"p\" for pointer\n\t\t\t\t\t\t\ttargetView.setUint32(position, referee.id)\n\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\treferenceMap.set(value, { offset: position - start })\n\t\t\t\t\t}\n\t\t\t\t\tlet constructor = value.constructor\n\t\t\t\t\tif (constructor === Object) {\n\t\t\t\t\t\twriteObject(value)\n\t\t\t\t\t} else if (constructor === Array) {\n\t\t\t\t\t\tpackArray(value)\n\t\t\t\t\t} else if (constructor === Map) {\n\t\t\t\t\t\tif (this.mapAsEmptyObject) target[position++] = 0x80\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlength = value.size\n\t\t\t\t\t\t\tif (length < 0x10) {\n\t\t\t\t\t\t\t\ttarget[position++] = 0x80 | length\n\t\t\t\t\t\t\t} else if (length < 0x10000) {\n\t\t\t\t\t\t\t\ttarget[position++] = 0xde\n\t\t\t\t\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\t\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttarget[position++] = 0xdf\n\t\t\t\t\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfor (let [key, entryValue] of value) {\n\t\t\t\t\t\t\t\tpack(key)\n\t\t\t\t\t\t\t\tpack(entryValue)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (let i = 0, l = extensions.length; i < l; i++) {\n\t\t\t\t\t\t\tlet extensionClass = extensionClasses[i]\n\t\t\t\t\t\t\tif (value instanceof extensionClass) {\n\t\t\t\t\t\t\t\tlet extension = extensions[i]\n\t\t\t\t\t\t\t\tif (extension.write) {\n\t\t\t\t\t\t\t\t\tif (extension.type) {\n\t\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd4 // one byte \"tag\" extension\n\t\t\t\t\t\t\t\t\t\ttarget[position++] = extension.type\n\t\t\t\t\t\t\t\t\t\ttarget[position++] = 0\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlet writeResult = extension.write.call(this, value)\n\t\t\t\t\t\t\t\t\tif (writeResult === value) { // avoid infinite recursion\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\t\t\t\t\tpackArray(value)\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\twriteObject(value)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tpack(writeResult)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet currentTarget = target\n\t\t\t\t\t\t\t\tlet currentTargetView = targetView\n\t\t\t\t\t\t\t\tlet currentPosition = position\n\t\t\t\t\t\t\t\ttarget = null\n\t\t\t\t\t\t\t\tlet result\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tresult = extension.pack.call(this, value, (size) => {\n\t\t\t\t\t\t\t\t\t\t// restore target and use it\n\t\t\t\t\t\t\t\t\t\ttarget = currentTarget\n\t\t\t\t\t\t\t\t\t\tcurrentTarget = null\n\t\t\t\t\t\t\t\t\t\tposition += size\n\t\t\t\t\t\t\t\t\t\tif (position > safeEnd)\n\t\t\t\t\t\t\t\t\t\t\tmakeRoom(position)\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\ttarget, targetView, position: position - size\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}, pack)\n\t\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\t\t// restore current target information (unless already restored)\n\t\t\t\t\t\t\t\t\tif (currentTarget) {\n\t\t\t\t\t\t\t\t\t\ttarget = currentTarget\n\t\t\t\t\t\t\t\t\t\ttargetView = currentTargetView\n\t\t\t\t\t\t\t\t\t\tposition = currentPosition\n\t\t\t\t\t\t\t\t\t\tsafeEnd = target.length - 10\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t\t\tif (result.length + position > safeEnd)\n\t\t\t\t\t\t\t\t\t\tmakeRoom(result.length + position)\n\t\t\t\t\t\t\t\t\tposition = writeExtensionData(result, target, position, extension.type)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// check isArray after extensions, because extensions can extend Array\n\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\tpackArray(value)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// use this as an alternate mechanism for expressing how to serialize\n\t\t\t\t\t\t\tif (value.toJSON) {\n\t\t\t\t\t\t\t\tconst json = value.toJSON()\n\t\t\t\t\t\t\t\t// if for some reason value.toJSON returns itself it'll loop forever\n\t\t\t\t\t\t\t\tif (json !== value)\n\t\t\t\t\t\t\t\t\treturn pack(json)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// if there is a writeFunction, use it, otherwise just encode as undefined\n\t\t\t\t\t\t\tif (type === 'function')\n\t\t\t\t\t\t\t\treturn pack(this.writeFunction && this.writeFunction(value));\n\n\t\t\t\t\t\t\t// no extension found, write as plain object\n\t\t\t\t\t\t\twriteObject(value)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'boolean') {\n\t\t\t\ttarget[position++] = value ? 0xc3 : 0xc2\n\t\t\t} else if (type === 'bigint') {\n\t\t\t\tif (value < (BigInt(1)<= -(BigInt(1)< 0) {\n\t\t\t\t\t// if we can fit an unsigned int, use that\n\t\t\t\t\ttarget[position++] = 0xcf\n\t\t\t\t\ttargetView.setBigUint64(position, value)\n\t\t\t\t} else {\n\t\t\t\t\t// overflow\n\t\t\t\t\tif (this.largeBigIntToFloat) {\n\t\t\t\t\t\ttarget[position++] = 0xcb\n\t\t\t\t\t\ttargetView.setFloat64(position, Number(value))\n\t\t\t\t\t} else if (this.useBigIntExtension && value < 2n**(1023n) && value > -(2n**(1023n))) {\n\t\t\t\t\t\ttarget[position++] = 0xc7\n\t\t\t\t\t\tposition++;\n\t\t\t\t\t\ttarget[position++] = 0x42 // \"B\" for BigInt\n\t\t\t\t\t\tlet bytes = [];\n\t\t\t\t\t\tlet alignedSign;\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tlet byte = value & 0xffn;\n\t\t\t\t\t\t\talignedSign = (byte & 0x80n) === (value < 0n ? 0x80n : 0n);\n\t\t\t\t\t\t\tbytes.push(byte);\n\t\t\t\t\t\t\tvalue >>= 8n;\n\t\t\t\t\t\t} while (!((value === 0n || value === -1n) && alignedSign));\n\t\t\t\t\t\ttarget[position-2] = bytes.length;\n\t\t\t\t\t\tfor (let i = bytes.length; i > 0;) {\n\t\t\t\t\t\t\ttarget[position++] = Number(bytes[--i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new RangeError(value + ' was too large to fit in MessagePack 64-bit integer format, use' +\n\t\t\t\t\t\t\t' useBigIntExtension or set largeBigIntToFloat to convert to float-64')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tposition += 8\n\t\t\t} else if (type === 'undefined') {\n\t\t\t\tif (this.encodeUndefinedAsNil)\n\t\t\t\t\ttarget[position++] = 0xc0\n\t\t\t\telse {\n\t\t\t\t\ttarget[position++] = 0xd4 // a number of implementations use fixext1 with type 0, data 0 to denote undefined, so we follow suite\n\t\t\t\t\ttarget[position++] = 0\n\t\t\t\t\ttarget[position++] = 0\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error('Unknown type: ' + type)\n\t\t\t}\n\t\t}\n\n\t\tconst writePlainObject = (this.variableMapSize || this.coercibleKeyAsNumber || this.skipValues) ? (object) => {\n\t\t\t// this method is slightly slower, but generates \"preferred serialization\" (optimally small for smaller objects)\n\t\t\tlet keys;\n\t\t\tif (this.skipValues) {\n\t\t\t\tkeys = [];\n\t\t\t\tfor (let key in object) {\n\t\t\t\t\tif ((typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) &&\n\t\t\t\t\t\t!this.skipValues.includes(object[key]))\n\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tkeys = Object.keys(object)\n\t\t\t}\n\t\t\tlet length = keys.length\n\t\t\tif (length < 0x10) {\n\t\t\t\ttarget[position++] = 0x80 | length\n\t\t\t} else if (length < 0x10000) {\n\t\t\t\ttarget[position++] = 0xde\n\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t} else {\n\t\t\t\ttarget[position++] = 0xdf\n\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\tposition += 4\n\t\t\t}\n\t\t\tlet key\n\t\t\tif (this.coercibleKeyAsNumber) {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tkey = keys[i]\n\t\t\t\t\tlet num = Number(key)\n\t\t\t\t\tpack(isNaN(num) ? key : num)\n\t\t\t\t\tpack(object[key])\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tpack(key = keys[i])\n\t\t\t\t\tpack(object[key])\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\t\t(object) => {\n\t\t\ttarget[position++] = 0xde // always using map 16, so we can preallocate and set the length afterwards\n\t\t\tlet objectOffset = position - start\n\t\t\tposition += 2\n\t\t\tlet size = 0\n\t\t\tfor (let key in object) {\n\t\t\t\tif (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\t\tpack(key)\n\t\t\t\t\tpack(object[key])\n\t\t\t\t\tsize++\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[objectOffset++ + start] = size >> 8\n\t\t\ttarget[objectOffset + start] = size & 0xff\n\t\t}\n\n\t\tconst writeRecord = this.useRecords === false ? writePlainObject :\n\t\t(options.progressiveRecords && !useTwoByteRecords) ? // this is about 2% faster for highly stable structures, since it only requires one for-in loop (but much more expensive when new structure needs to be written)\n\t\t(object) => {\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\n\t\t\tlet objectOffset = position++ - start\n\t\t\tlet wroteKeys\n\t\t\tfor (let key in object) {\n\t\t\t\tif (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\tif (nextTransition)\n\t\t\t\t\t\ttransition = nextTransition\n\t\t\t\t\telse {\n\t\t\t\t\t\t// record doesn't exist, create full new record and insert it\n\t\t\t\t\t\tlet keys = Object.keys(object)\n\t\t\t\t\t\tlet lastTransition = transition\n\t\t\t\t\t\ttransition = structures.transitions\n\t\t\t\t\t\tlet newTransitions = 0\n\t\t\t\t\t\tfor (let i = 0, l = keys.length; i < l; i++) {\n\t\t\t\t\t\t\tlet key = keys[i]\n\t\t\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\t\t\t\tnewTransitions++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttransition = nextTransition\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (objectOffset + start + 1 == position) {\n\t\t\t\t\t\t\t// first key, so we don't need to insert, we can just write record directly\n\t\t\t\t\t\t\tposition--\n\t\t\t\t\t\t\tnewRecord(transition, keys, newTransitions)\n\t\t\t\t\t\t} else // otherwise we need to insert the record, moving existing data after the record\n\t\t\t\t\t\t\tinsertNewRecord(transition, keys, objectOffset, newTransitions)\n\t\t\t\t\t\twroteKeys = true\n\t\t\t\t\t\ttransition = lastTransition[key]\n\t\t\t\t\t}\n\t\t\t\t\tpack(object[key])\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!wroteKeys) {\n\t\t\t\tlet recordId = transition[RECORD_SYMBOL]\n\t\t\t\tif (recordId)\n\t\t\t\t\ttarget[objectOffset + start] = recordId\n\t\t\t\telse\n\t\t\t\t\tinsertNewRecord(transition, Object.keys(object), objectOffset, 0)\n\t\t\t}\n\t\t} :\n\t\t(object) => {\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\n\t\t\tlet newTransitions = 0\n\t\t\tfor (let key in object) if (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\tnextTransition = transition[key]\n\t\t\t\tif (!nextTransition) {\n\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\tnewTransitions++\n\t\t\t\t}\n\t\t\t\ttransition = nextTransition\n\t\t\t}\n\t\t\tlet recordId = transition[RECORD_SYMBOL]\n\t\t\tif (recordId) {\n\t\t\t\tif (recordId >= 0x60 && useTwoByteRecords) {\n\t\t\t\t\ttarget[position++] = ((recordId -= 0x60) & 0x1f) + 0x60\n\t\t\t\t\ttarget[position++] = recordId >> 5\n\t\t\t\t} else\n\t\t\t\t\ttarget[position++] = recordId\n\t\t\t} else {\n\t\t\t\tnewRecord(transition, transition.__keys__ || Object.keys(object), newTransitions)\n\t\t\t}\n\t\t\t// now write the values\n\t\t\tfor (let key in object)\n\t\t\t\tif (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\t\tpack(object[key])\n\t\t\t\t}\n\t\t}\n\n\t\t// create reference to useRecords if useRecords is a function\n\t\tconst checkUseRecords = typeof this.useRecords == 'function' && this.useRecords;\n\n\t\tconst writeObject = checkUseRecords ? (object) => {\n\t\t\tcheckUseRecords(object) ? writeRecord(object) : writePlainObject(object)\n\t\t} : writeRecord\n\n\t\tconst makeRoom = (end) => {\n\t\t\tlet newSize\n\t\t\tif (end > 0x1000000) {\n\t\t\t\t// special handling for really large buffers\n\t\t\t\tif ((end - start) > MAX_BUFFER_SIZE)\n\t\t\t\t\tthrow new Error('Packed buffer would be larger than maximum buffer size')\n\t\t\t\tnewSize = Math.min(MAX_BUFFER_SIZE,\n\t\t\t\t\tMath.round(Math.max((end - start) * (end > 0x4000000 ? 1.25 : 2), 0x400000) / 0x1000) * 0x1000)\n\t\t\t} else // faster handling for smaller buffers\n\t\t\t\tnewSize = ((Math.max((end - start) << 2, target.length - 1) >> 12) + 1) << 12\n\t\t\tlet newBuffer = new ByteArrayAllocate(newSize)\n\t\t\ttargetView = newBuffer.dataView || (newBuffer.dataView = new DataView(newBuffer.buffer, 0, newSize))\n\t\t\tend = Math.min(end, target.length)\n\t\t\tif (target.copy)\n\t\t\t\ttarget.copy(newBuffer, 0, start, end)\n\t\t\telse\n\t\t\t\tnewBuffer.set(target.slice(start, end))\n\t\t\tposition -= start\n\t\t\tstart = 0\n\t\t\tsafeEnd = newBuffer.length - 10\n\t\t\treturn target = newBuffer\n\t\t}\n\t\tconst newRecord = (transition, keys, newTransitions) => {\n\t\t\tlet recordId = structures.nextId\n\t\t\tif (!recordId)\n\t\t\t\trecordId = 0x40\n\t\t\tif (recordId < sharedLimitId && this.shouldShareStructure && !this.shouldShareStructure(keys)) {\n\t\t\t\trecordId = structures.nextOwnId\n\t\t\t\tif (!(recordId < maxStructureId))\n\t\t\t\t\trecordId = sharedLimitId\n\t\t\t\tstructures.nextOwnId = recordId + 1\n\t\t\t} else {\n\t\t\t\tif (recordId >= maxStructureId)// cycle back around\n\t\t\t\t\trecordId = sharedLimitId\n\t\t\t\tstructures.nextId = recordId + 1\n\t\t\t}\n\t\t\tlet highByte = keys.highByte = recordId >= 0x60 && useTwoByteRecords ? (recordId - 0x60) >> 5 : -1\n\t\t\ttransition[RECORD_SYMBOL] = recordId\n\t\t\ttransition.__keys__ = keys\n\t\t\tstructures[recordId - 0x40] = keys\n\n\t\t\tif (recordId < sharedLimitId) {\n\t\t\t\tkeys.isShared = true\n\t\t\t\tstructures.sharedLength = recordId - 0x3f\n\t\t\t\thasSharedUpdate = true\n\t\t\t\tif (highByte >= 0) {\n\t\t\t\t\ttarget[position++] = (recordId & 0x1f) + 0x60\n\t\t\t\t\ttarget[position++] = highByte\n\t\t\t\t} else {\n\t\t\t\t\ttarget[position++] = recordId\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (highByte >= 0) {\n\t\t\t\t\ttarget[position++] = 0xd5 // fixext 2\n\t\t\t\t\ttarget[position++] = 0x72 // \"r\" record defintion extension type\n\t\t\t\t\ttarget[position++] = (recordId & 0x1f) + 0x60\n\t\t\t\t\ttarget[position++] = highByte\n\t\t\t\t} else {\n\t\t\t\t\ttarget[position++] = 0xd4 // fixext 1\n\t\t\t\t\ttarget[position++] = 0x72 // \"r\" record defintion extension type\n\t\t\t\t\ttarget[position++] = recordId\n\t\t\t\t}\n\n\t\t\t\tif (newTransitions)\n\t\t\t\t\ttransitionsCount += serializationsSinceTransitionRebuild * newTransitions\n\t\t\t\t// record the removal of the id, we can maintain our shared structure\n\t\t\t\tif (recordIdsToRemove.length >= maxOwnStructures)\n\t\t\t\t\trecordIdsToRemove.shift()[RECORD_SYMBOL] = 0 // we are cycling back through, and have to remove old ones\n\t\t\t\trecordIdsToRemove.push(transition)\n\t\t\t\tpack(keys)\n\t\t\t}\n\t\t}\n\t\tconst insertNewRecord = (transition, keys, insertionOffset, newTransitions) => {\n\t\t\tlet mainTarget = target\n\t\t\tlet mainPosition = position\n\t\t\tlet mainSafeEnd = safeEnd\n\t\t\tlet mainStart = start\n\t\t\ttarget = keysTarget\n\t\t\tposition = 0\n\t\t\tstart = 0\n\t\t\tif (!target)\n\t\t\t\tkeysTarget = target = new ByteArrayAllocate(8192)\n\t\t\tsafeEnd = target.length - 10\n\t\t\tnewRecord(transition, keys, newTransitions)\n\t\t\tkeysTarget = target\n\t\t\tlet keysPosition = position\n\t\t\ttarget = mainTarget\n\t\t\tposition = mainPosition\n\t\t\tsafeEnd = mainSafeEnd\n\t\t\tstart = mainStart\n\t\t\tif (keysPosition > 1) {\n\t\t\t\tlet newEnd = position + keysPosition - 1\n\t\t\t\tif (newEnd > safeEnd)\n\t\t\t\t\tmakeRoom(newEnd)\n\t\t\t\tlet insertionPosition = insertionOffset + start\n\t\t\t\ttarget.copyWithin(insertionPosition + keysPosition, insertionPosition + 1, position)\n\t\t\t\ttarget.set(keysTarget.slice(0, keysPosition), insertionPosition)\n\t\t\t\tposition = newEnd\n\t\t\t} else {\n\t\t\t\ttarget[insertionOffset + start] = keysTarget[0]\n\t\t\t}\n\t\t}\n\t\tconst writeStruct = (object) => {\n\t\t\tlet newPosition = writeStructSlots(object, target, start, position, structures, makeRoom, (value, newPosition, notifySharedUpdate) => {\n\t\t\t\tif (notifySharedUpdate)\n\t\t\t\t\treturn hasSharedUpdate = true;\n\t\t\t\tposition = newPosition;\n\t\t\t\tlet startTarget = target;\n\t\t\t\tpack(value);\n\t\t\t\tresetStructures();\n\t\t\t\tif (startTarget !== target) {\n\t\t\t\t\treturn { position, targetView, target }; // indicate the buffer was re-allocated\n\t\t\t\t}\n\t\t\t\treturn position;\n\t\t\t}, this);\n\t\t\tif (newPosition === 0) // bail and go to a msgpack object\n\t\t\t\treturn writeObject(object);\n\t\t\tposition = newPosition;\n\t\t}\n\t}\n\tuseBuffer(buffer) {\n\t\t// this means we are finished using our own buffer and we can write over it safely\n\t\ttarget = buffer\n\t\ttarget.dataView || (target.dataView = new DataView(target.buffer, target.byteOffset, target.byteLength))\n\t\tposition = 0\n\t}\n\tset position (value) {\n\t\tposition = value;\n\t}\n\tget position() {\n\t\treturn position;\n\t}\n\tclearSharedData() {\n\t\tif (this.structures)\n\t\t\tthis.structures = []\n\t\tif (this.typedStructs)\n\t\t\tthis.typedStructs = []\n\t}\n}\n\nextensionClasses = [ Date, Set, Error, RegExp, ArrayBuffer, Object.getPrototypeOf(Uint8Array.prototype).constructor /*TypedArray*/, C1Type ]\nextensions = [{\n\tpack(date, allocateForWrite, pack) {\n\t\tlet seconds = date.getTime() / 1000\n\t\tif ((this.useTimestamp32 || date.getMilliseconds() === 0) && seconds >= 0 && seconds < 0x100000000) {\n\t\t\t// Timestamp 32\n\t\t\tlet { target, targetView, position} = allocateForWrite(6)\n\t\t\ttarget[position++] = 0xd6\n\t\t\ttarget[position++] = 0xff\n\t\t\ttargetView.setUint32(position, seconds)\n\t\t} else if (seconds > 0 && seconds < 0x100000000) {\n\t\t\t// Timestamp 64\n\t\t\tlet { target, targetView, position} = allocateForWrite(10)\n\t\t\ttarget[position++] = 0xd7\n\t\t\ttarget[position++] = 0xff\n\t\t\ttargetView.setUint32(position, date.getMilliseconds() * 4000000 + ((seconds / 1000 / 0x100000000) >> 0))\n\t\t\ttargetView.setUint32(position + 4, seconds)\n\t\t} else if (isNaN(seconds)) {\n\t\t\tif (this.onInvalidDate) {\n\t\t\t\tallocateForWrite(0)\n\t\t\t\treturn pack(this.onInvalidDate())\n\t\t\t}\n\t\t\t// Intentionally invalid timestamp\n\t\t\tlet { target, targetView, position} = allocateForWrite(3)\n\t\t\ttarget[position++] = 0xd4\n\t\t\ttarget[position++] = 0xff\n\t\t\ttarget[position++] = 0xff\n\t\t} else {\n\t\t\t// Timestamp 96\n\t\t\tlet { target, targetView, position} = allocateForWrite(15)\n\t\t\ttarget[position++] = 0xc7\n\t\t\ttarget[position++] = 12\n\t\t\ttarget[position++] = 0xff\n\t\t\ttargetView.setUint32(position, date.getMilliseconds() * 1000000)\n\t\t\ttargetView.setBigInt64(position + 4, BigInt(Math.floor(seconds)))\n\t\t}\n\t}\n}, {\n\tpack(set, allocateForWrite, pack) {\n\t\tif (this.setAsEmptyObject) {\n\t\t\tallocateForWrite(0);\n\t\t\treturn pack({})\n\t\t}\n\t\tlet array = Array.from(set)\n\t\tlet { target, position} = allocateForWrite(this.moreTypes ? 3 : 0)\n\t\tif (this.moreTypes) {\n\t\t\ttarget[position++] = 0xd4\n\t\t\ttarget[position++] = 0x73 // 's' for Set\n\t\t\ttarget[position++] = 0\n\t\t}\n\t\tpack(array)\n\t}\n}, {\n\tpack(error, allocateForWrite, pack) {\n\t\tlet { target, position} = allocateForWrite(this.moreTypes ? 3 : 0)\n\t\tif (this.moreTypes) {\n\t\t\ttarget[position++] = 0xd4\n\t\t\ttarget[position++] = 0x65 // 'e' for error\n\t\t\ttarget[position++] = 0\n\t\t}\n\t\tpack([ error.name, error.message, error.cause ])\n\t}\n}, {\n\tpack(regex, allocateForWrite, pack) {\n\t\tlet { target, position} = allocateForWrite(this.moreTypes ? 3 : 0)\n\t\tif (this.moreTypes) {\n\t\t\ttarget[position++] = 0xd4\n\t\t\ttarget[position++] = 0x78 // 'x' for regeXp\n\t\t\ttarget[position++] = 0\n\t\t}\n\t\tpack([ regex.source, regex.flags ])\n\t}\n}, {\n\tpack(arrayBuffer, allocateForWrite) {\n\t\tif (this.moreTypes)\n\t\t\twriteExtBuffer(arrayBuffer, 0x10, allocateForWrite)\n\t\telse\n\t\t\twriteBuffer(hasNodeBuffer ? Buffer.from(arrayBuffer) : new Uint8Array(arrayBuffer), allocateForWrite)\n\t}\n}, {\n\tpack(typedArray, allocateForWrite) {\n\t\tlet constructor = typedArray.constructor\n\t\tif (constructor !== ByteArray && this.moreTypes)\n\t\t\twriteExtBuffer(typedArray, typedArrays.indexOf(constructor.name), allocateForWrite)\n\t\telse\n\t\t\twriteBuffer(typedArray, allocateForWrite)\n\t}\n}, {\n\tpack(c1, allocateForWrite) { // specific 0xC1 object\n\t\tlet { target, position} = allocateForWrite(1)\n\t\ttarget[position] = 0xc1\n\t}\n}]\n\nfunction writeExtBuffer(typedArray, type, allocateForWrite, encode) {\n\tlet length = typedArray.byteLength\n\tif (length + 1 < 0x100) {\n\t\tvar { target, position } = allocateForWrite(4 + length)\n\t\ttarget[position++] = 0xc7\n\t\ttarget[position++] = length + 1\n\t} else if (length + 1 < 0x10000) {\n\t\tvar { target, position } = allocateForWrite(5 + length)\n\t\ttarget[position++] = 0xc8\n\t\ttarget[position++] = (length + 1) >> 8\n\t\ttarget[position++] = (length + 1) & 0xff\n\t} else {\n\t\tvar { target, position, targetView } = allocateForWrite(7 + length)\n\t\ttarget[position++] = 0xc9\n\t\ttargetView.setUint32(position, length + 1) // plus one for the type byte\n\t\tposition += 4\n\t}\n\ttarget[position++] = 0x74 // \"t\" for typed array\n\ttarget[position++] = type\n\tif (!typedArray.buffer) typedArray = new Uint8Array(typedArray)\n\ttarget.set(new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength), position)\n}\nfunction writeBuffer(buffer, allocateForWrite) {\n\tlet length = buffer.byteLength\n\tvar target, position\n\tif (length < 0x100) {\n\t\tvar { target, position } = allocateForWrite(length + 2)\n\t\ttarget[position++] = 0xc4\n\t\ttarget[position++] = length\n\t} else if (length < 0x10000) {\n\t\tvar { target, position } = allocateForWrite(length + 3)\n\t\ttarget[position++] = 0xc5\n\t\ttarget[position++] = length >> 8\n\t\ttarget[position++] = length & 0xff\n\t} else {\n\t\tvar { target, position, targetView } = allocateForWrite(length + 5)\n\t\ttarget[position++] = 0xc6\n\t\ttargetView.setUint32(position, length)\n\t\tposition += 4\n\t}\n\ttarget.set(buffer, position)\n}\n\nfunction writeExtensionData(result, target, position, type) {\n\tlet length = result.length\n\tswitch (length) {\n\t\tcase 1:\n\t\t\ttarget[position++] = 0xd4\n\t\t\tbreak\n\t\tcase 2:\n\t\t\ttarget[position++] = 0xd5\n\t\t\tbreak\n\t\tcase 4:\n\t\t\ttarget[position++] = 0xd6\n\t\t\tbreak\n\t\tcase 8:\n\t\t\ttarget[position++] = 0xd7\n\t\t\tbreak\n\t\tcase 16:\n\t\t\ttarget[position++] = 0xd8\n\t\t\tbreak\n\t\tdefault:\n\t\t\tif (length < 0x100) {\n\t\t\t\ttarget[position++] = 0xc7\n\t\t\t\ttarget[position++] = length\n\t\t\t} else if (length < 0x10000) {\n\t\t\t\ttarget[position++] = 0xc8\n\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t} else {\n\t\t\t\ttarget[position++] = 0xc9\n\t\t\t\ttarget[position++] = length >> 24\n\t\t\t\ttarget[position++] = (length >> 16) & 0xff\n\t\t\t\ttarget[position++] = (length >> 8) & 0xff\n\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t}\n\t}\n\ttarget[position++] = type\n\ttarget.set(result, position)\n\tposition += length\n\treturn position\n}\n\nfunction insertIds(serialized, idsToInsert) {\n\t// insert the ids that need to be referenced for structured clones\n\tlet nextId\n\tlet distanceToMove = idsToInsert.length * 6\n\tlet lastEnd = serialized.length - distanceToMove\n\twhile (nextId = idsToInsert.pop()) {\n\t\tlet offset = nextId.offset\n\t\tlet id = nextId.id\n\t\tserialized.copyWithin(offset + distanceToMove, offset, lastEnd)\n\t\tdistanceToMove -= 6\n\t\tlet position = offset + distanceToMove\n\t\tserialized[position++] = 0xd6\n\t\tserialized[position++] = 0x69 // 'i'\n\t\tserialized[position++] = id >> 24\n\t\tserialized[position++] = (id >> 16) & 0xff\n\t\tserialized[position++] = (id >> 8) & 0xff\n\t\tserialized[position++] = id & 0xff\n\t\tlastEnd = offset\n\t}\n\treturn serialized\n}\n\nfunction writeBundles(start, pack, incrementPosition) {\n\tif (bundledStrings.length > 0) {\n\t\ttargetView.setUint32(bundledStrings.position + start, position + incrementPosition - bundledStrings.position - start)\n\t\tbundledStrings.stringsPosition = position - start;\n\t\tlet writeStrings = bundledStrings\n\t\tbundledStrings = null\n\t\tpack(writeStrings[0])\n\t\tpack(writeStrings[1])\n\t}\n}\n\nexport function addExtension(extension) {\n\tif (extension.Class) {\n\t\tif (!extension.pack && !extension.write)\n\t\t\tthrow new Error('Extension has no pack or write function')\n\t\tif (extension.pack && !extension.type)\n\t\t\tthrow new Error('Extension has no type (numeric code to identify the extension)')\n\t\textensionClasses.unshift(extension.Class)\n\t\textensions.unshift(extension)\n\t}\n\tunpackAddExtension(extension)\n}\nfunction prepareStructures(structures, packr) {\n\tstructures.isCompatible = (existingStructures) => {\n\t\tlet compatible = !existingStructures || ((packr.lastNamedStructuresLength || 0) === existingStructures.length)\n\t\tif (!compatible) // we want to merge these existing structures immediately since we already have it and we are in the right transaction\n\t\t\tpackr._mergeStructures(existingStructures);\n\t\treturn compatible;\n\t}\n\treturn structures\n}\nexport function setWriteStructSlots(writeSlots, makeStructures) {\n\twriteStructSlots = writeSlots;\n\tprepareStructures = makeStructures;\n}\n\nlet defaultPackr = new Packr({ useRecords: false })\nexport const pack = defaultPackr.pack\nexport const encode = defaultPackr.pack\nexport const Encoder = Packr\nexport { FLOAT32_OPTIONS } from './unpack.js'\nimport { FLOAT32_OPTIONS } from './unpack.js'\nexport const { NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT } = FLOAT32_OPTIONS\nexport const REUSE_BUFFER_MODE = 512\nexport const RESET_BUFFER_MODE = 1024\nexport const RESERVE_START_SPACE = 2048","// ignore coverage\nexport function truncateHashes(arg, depth = 0) {\n depth += 1;\n if (depth > 10)\n return arg;\n if (typeof arg === 'string') {\n const transforms = [\n // strip ANSI color codes\n // eslint-disable-next-line no-control-regex\n [/\\u001B\\[\\d+m/g, ''],\n // strip line feeds\n [/\\\\n/g, ''],\n // strip contents of Uint8Arrays\n [/(Uint8Array\\(\\d+\\)) \\[.+]/g, s => `${s.slice(0, 20)}...]`],\n // strip contents of Uint8Arrays expressed as objects\n [/({ ('\\d+': \\d+,?\\s*)+})/g, s => `${s.slice(0, 20)}...}`],\n // strip buffers\n [/<(Buffer) ([a-f\\d\\s]+)>/g, s => `${s.slice(0, 20)}...>`],\n [/{\"type\":\"Buffer\",\"data\":\\[(\\d+,?\\s*)+]}/g, s => `${s.slice(0, 40)}...]}`],\n ];\n return transforms.reduce(\n // @ts-expect-error I give up on trying to type this\n (acc, [rx, replacement]) => acc.replaceAll(rx, replacement), arg);\n }\n if (Array.isArray(arg)) {\n return arg.map(element => truncateHashes(element, depth));\n }\n if (typeof arg === 'object') {\n const object = {};\n for (const prop in arg) {\n const value = arg[prop];\n object[truncateHashes(prop, depth)] = truncateHashes(value, depth);\n }\n return object;\n }\n return arg;\n}\n//# sourceMappingURL=truncateHashes.js.map","// ignore file coverage\nimport _debug from 'debug';\nimport { truncateHashes } from './truncateHashes.js';\nconst originalFormatArgs = _debug.formatArgs;\n_debug.formatArgs = function (args) {\n for (let i = 0; i < args.length; i++) {\n args[i] = truncateHashes(args[i]);\n }\n originalFormatArgs.call(this, args);\n};\nexport const debug = _debug('localfirst');\n//# sourceMappingURL=debug.js.map","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","// ignore file coverage\nimport { memoize as _memoize } from 'lodash-es';\nconst BYPASS = false;\nexport const nomemoize = (f, _resolver) => f;\nexport const memoize = BYPASS ? nomemoize : _memoize;\n//# sourceMappingURL=memoize.js.map","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","// src/index.ts\nimport sodium7 from \"libsodium-wrappers-sumo\";\n\n// src/asymmetric.ts\nimport sodium2 from \"libsodium-wrappers-sumo\";\nimport { pack, unpack } from \"msgpackr\";\n\n// src/stretch.ts\nimport sodium from \"libsodium-wrappers-sumo\";\nimport { memoize } from \"@localfirst/shared\";\n\n// src/util/base58.ts\nimport bs58 from \"bs58\";\nvar { encode, decode } = bs58;\nvar base58 = {\n encode: (b) => encode(b),\n decode,\n detect: (s) => /^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$/.test(s)\n};\n\n// src/util/keypairToBase58.ts\nvar keypairToBase58 = (keypair) => ({\n publicKey: base58.encode(keypair.publicKey),\n secretKey: base58.encode(keypair.privateKey)\n});\n\n// src/util/keyToBytes.ts\nvar keyToBytes = (x, encoding = \"base58\") => {\n if (encoding === \"utf8\") {\n return new TextEncoder().encode(x);\n }\n if (encoding === \"base58\") {\n return base58.decode(x);\n }\n throw new Error(`Unknown encoding: ${encoding}`);\n};\n\n// src/stretch.ts\nvar stretch = memoize((password) => {\n const passwordBytes = typeof password === \"string\" ? keyToBytes(password, \"utf8\") : password;\n const salt = base58.decode(\"H5B4DLSXw5xwNYFdz1Wr6e\");\n if (passwordBytes.length >= 16) {\n return sodium.crypto_generichash(32, passwordBytes, salt);\n }\n const opsLimit = sodium.crypto_pwhash_OPSLIMIT_INTERACTIVE;\n const memLimit = sodium.crypto_pwhash_MEMLIMIT_INTERACTIVE;\n return sodium.crypto_pwhash(\n 32,\n passwordBytes,\n salt,\n opsLimit,\n memLimit,\n sodium.crypto_pwhash_ALG_DEFAULT\n );\n});\n\n// src/asymmetric.ts\nvar keyPair = (seed) => {\n const keypair = seed ? sodium2.crypto_box_seed_keypair(stretch(seed)) : sodium2.crypto_box_keypair();\n return keypairToBase58(keypair);\n};\nvar encryptBytes = ({\n secret,\n recipientPublicKey,\n senderSecretKey\n}) => {\n const secretBytes = pack(secret);\n const nonce = sodium2.randombytes_buf(sodium2.crypto_box_NONCEBYTES);\n let senderPublicKey;\n if (senderSecretKey === void 0) {\n const senderKeys = asymmetric.keyPair();\n senderSecretKey = senderKeys.secretKey;\n senderPublicKey = senderKeys.publicKey;\n } else {\n senderPublicKey = void 0;\n }\n const message = sodium2.crypto_box_easy(\n secretBytes,\n nonce,\n keyToBytes(recipientPublicKey),\n keyToBytes(senderSecretKey)\n );\n const cipherBytes = pack({ nonce, message, senderPublicKey });\n return cipherBytes;\n};\nvar decryptBytes = ({\n cipher,\n recipientSecretKey,\n senderPublicKey\n}) => {\n const unpackedCipher = unpack(cipher);\n const { nonce, message } = unpackedCipher;\n senderPublicKey = senderPublicKey ?? unpackedCipher.senderPublicKey;\n const decrypted = sodium2.crypto_box_open_easy(\n message,\n nonce,\n keyToBytes(senderPublicKey),\n keyToBytes(recipientSecretKey)\n );\n return unpack(decrypted);\n};\nvar encrypt = ({\n secret,\n recipientPublicKey,\n senderSecretKey\n}) => {\n const cipherBytes = encryptBytes({ secret, recipientPublicKey, senderSecretKey });\n return base58.encode(cipherBytes);\n};\nvar decrypt = ({\n cipher,\n recipientSecretKey,\n senderPublicKey\n}) => {\n const cipherBytes = keyToBytes(cipher);\n return decryptBytes({ cipher: cipherBytes, recipientSecretKey, senderPublicKey });\n};\nvar asymmetric = {\n keyPair,\n encryptBytes,\n decryptBytes,\n encrypt,\n decrypt\n};\n\n// src/hash.ts\nimport sodium3 from \"libsodium-wrappers-sumo\";\nimport { pack as pack2 } from \"msgpackr\";\nvar hash = (seed, payload) => {\n return base58.encode(hashBytes(seed, payload));\n};\nvar hashBytes = (seed, payload) => {\n const seedBytes = keyToBytes(seed, \"utf8\");\n const payloadBytes = pack2(payload);\n return sodium3.crypto_generichash(32, payloadBytes, seedBytes);\n};\n\n// src/randomKey.ts\nimport sodium4 from \"libsodium-wrappers-sumo\";\nvar randomKeyBytes = (length = 32) => sodium4.randombytes_buf(length);\nvar randomKey = (length = 16) => (\n // we make a longer key than we need, so that we have enough base58 characters to truncate to the desired length\n base58.encode(randomKeyBytes(length * 3)).slice(0, length)\n);\n\n// src/signatures.ts\nimport sodium5 from \"libsodium-wrappers-sumo\";\nimport { pack as pack3 } from \"msgpackr\";\nvar keyPair2 = (seed) => {\n const keypair = seed ? sodium5.crypto_sign_seed_keypair(stretch(seed)) : sodium5.crypto_sign_keypair();\n return keypairToBase58(keypair);\n};\nvar sign = (payload, secretKey) => {\n const payloadBytes = pack3(payload);\n const secretKeyBytes = keyToBytes(secretKey);\n const signatureBytes = sodium5.crypto_sign_detached(payloadBytes, secretKeyBytes);\n return base58.encode(signatureBytes);\n};\nvar verify = ({ payload, signature, publicKey }) => {\n const payloadBytes = pack3(payload);\n const signatureBytes = keyToBytes(signature);\n const publicKeyBytes = keyToBytes(publicKey);\n return sodium5.crypto_sign_verify_detached(signatureBytes, payloadBytes, publicKeyBytes);\n};\nvar signatures = { keyPair: keyPair2, sign, verify };\n\n// src/symmetric.ts\nimport sodium6 from \"libsodium-wrappers-sumo\";\nimport { pack as pack4, unpack as unpack2 } from \"msgpackr\";\nvar encryptBytes2 = (payload, password) => {\n const messageBytes = pack4(payload);\n const key = stretch(password);\n const nonce = sodium6.randombytes_buf(sodium6.crypto_secretbox_NONCEBYTES);\n const encrypted = sodium6.crypto_secretbox_easy(messageBytes, nonce, key);\n const cipher = { nonce, message: encrypted };\n const cipherBytes = pack4(cipher);\n return cipherBytes;\n};\nvar decryptBytes2 = (cipher, password) => {\n const key = stretch(password);\n const { nonce, message } = unpack2(cipher);\n const decrypted = sodium6.crypto_secretbox_open_easy(message, nonce, key);\n return unpack2(decrypted);\n};\nvar encrypt2 = (payload, password) => {\n const cipherBytes = encryptBytes2(payload, password);\n const cipher = base58.encode(cipherBytes);\n return cipher;\n};\nvar decrypt2 = (cipher, password) => {\n const cipherBytes = keyToBytes(cipher);\n return decryptBytes2(cipherBytes, password);\n};\nvar symmetric = { encryptBytes: encryptBytes2, decryptBytes: decryptBytes2, encrypt: encrypt2, decrypt: decrypt2 };\n\n// src/index.ts\nawait sodium7.ready;\nexport {\n asymmetric,\n base58,\n hash,\n hashBytes,\n keyToBytes,\n keypairToBase58,\n randomKey,\n randomKeyBytes,\n signatures,\n stretch,\n symmetric\n};\n//# sourceMappingURL=index.js.map"],"names":["A","I","g","global","C","B","Q","i","o","process","E","a","_","require$$0","c","require$$1","Y","module","t","r","e","y","s","h","D","f","p","w","n","k","F","S","N","G","M","K","U","b","H","J","d","m","l","u","x","v","R","L","P","q","z","j","X","O","W","V","Z","T","$","AA","IA","gA","CA","BA","QA","iA","oA","EA","aA","_A","cA","tA","rA","eA","yA","sA","hA","DA","fA","pA","wA","nA","kA","FA","SA","NA","GA","MA","KA","UI","UA","bA","HA","YA","JA","dA","mA","lA","uA","xA","vA","RA","LA","PA","qA","zA","jA","XA","OA","WA","VA","ZA","TA","$A","AI","II","SI","FI","tg","Ig","XC","bg","FC","Ng","QI","DB","Lg","cg","ZI","KI","NI","NC","MI","nI","tI","WI","Hg","rC","Eg","og","GI","RI","Rg","DI","kI","ag","$I","gg","lI","uI","PI","gI","CI","pB","BI","iI","oI","EI","yg","ug","wC","mg","SC","nC","aI","aC","oC","_I","dC","wg","cI","pC","rI","eI","DC","fC","yI","sI","Xg","hI","jg","Og","mC","Sg","fI","Ug","Gg","pI","wI","bI","HI","Cg","YI","JI","dI","mI","xI","vI","hC","LI","qI","zI","jI","XI","OI","VI","TI","Ag","Bg","Qg","ig","_g","cC","wB","rg","_C","eg","sg","hg","Dg","fg","pg","ng","kg","Fg","Mg","Kg","Yg","Jg","dg","lg","xg","vg","Pg","qg","zg","Wg","Vg","Zg","Tg","$g","AC","IC","gC","CC","BC","QC","iC","EC","tC","eC","yC","sC","kC","GC","MC","KC","UC","bC","HC","YC","JC","lC","uC","xC","vC","RC","LC","PC","qC","zC","jC","OC","WC","VC","ZC","TC","$C","AB","IB","gB","CB","BB","QB","iB","oB","EB","aB","_B","cB","tB","rB","eB","yB","sB","hB","fB","require$$2","Buffer","exports","this","ee","ae","re","te","_e","ne","se","ce","oe","he","pe","ye","ie","le","ue","de","ve","ge","be","fe","me","Ee","xe","ke","Se","Te","we","Ye","Be","Ae","Me","Ie","Ke","Ne","Le","Oe","Ue","Ce","Pe","Re","Xe","Ge","De","Fe","Ve","He","We","qe","je","ze","Je","Qe","Ze","$e","ea","aa","ra","ta","_a","na","sa","ca","oa","ha","pa","ya","ia","la","ua","da","va","ga","ba","fa","ma","Ea","xa","ka","Sa","Ta","wa","Ya","Ba","Aa","Ma","Ia","Ka","Na","La","Oa","Ua","Ca","Pa","Ra","Xa","Ga","Da","Fa","Va","Ha","Wa","qa","ja","za","Ja","Qa","Za","$a","er","ar","rr","tr","_r","nr","sr","cr","or","hr","pr","yr","ir","lr","ur","dr","vr","gr","br","fr","mr","Er","xr","kr","Sr","Tr","wr","Yr","Br","Ar","Mr","Ir","Kr","Nr","Lr","Or","Ur","Cr","Pr","Rr","Xr","Gr","Dr","Fr","Vr","Hr","Wr","qr","decoder","src","srcEnd","position","currentUnpackr","currentStructures","srcString","srcStringStart","srcStringEnd","bundledStrings","referenceMap","currentExtensions","dataView","defaultOptions","C1Type","C1","sequentialMode","inlineObjectReadThreshold","readStruct","Unpackr","options","source","saveState","clearSource","error","checkedRead","forEach","values","lastPosition","size","value","defaultUnpackr","loadedStructures","existingStructures","structure","id","existing","sharedLength","result","read","restoreStructures","jsonView","token","loadStructures","createStructureReader","object","key","readKey","map","array","length","string","shortStringInJS","longStringInJS","readFixedString","readBin","readExt","multiplier","mult10","recordDefinition","extension","readString8","readString16","readString32","readArray","readMap","validName","firstId","readObject","createSecondByteReader","read0","highByte","readStringJS","end","units","byte1","byte2","byte3","byte4","unit","fromCharCode","start","bytes","byte","readOnlyJSString","type","readPosition","keyCache","asSafeString","entry","checkPosition","chunk","property","firstByte","existingStructure","data","errors","target","refEntry","targetProperties","typedArrays","glbl","typeCode","typedArrayName","ab","TEMP_BUNDLE","dataSize","dataPosition","callback","savedSrcEnd","savedPosition","savedSrcStringStart","savedSrcStringEnd","savedSrcString","savedReferenceMap","savedBundledStrings","savedSrc","savedStructures","savedStructuresContents","savedPackr","savedSequentialMode","unpack","f32Array","textEncoder","extensions","extensionClasses","hasNodeBuffer","ByteArrayAllocate","ByteArray","MAX_BUFFER_SIZE","keysTarget","targetView","safeEnd","writeStructSlots","MAX_BUNDLE_SIZE","hasNonLatin","RECORD_SYMBOL","Packr","hasSharedUpdate","structures","encodeUtf8","packr","isSequential","hasSharedStructures","maxSharedStructures","maxOwnStructures","useTwoByteRecords","sharedLimitId","maxStructureId","recordIdsToRemove","transitionsCount","serializationsSinceTransitionRebuild","encodeOptions","RESERVE_START_SPACE","keys","nextTransition","transition","encodingError","writeStruct","pack","lastBundle","writeBundles","idsToInsert","incrementPosition","insertionPoint","makeRoom","serialized","insertIds","REUSE_BUFFER_MODE","resetStructures","returnBuffer","newSharedData","prepareStructures","RESET_BUFFER_MODE","packArray","strLength","extStart","maxBytes","twoByte","headerSize","c1","c2","strPosition","useFloat32","xShifted","referee","constructor","writeObject","entryValue","extensionClass","writeResult","currentTarget","currentTargetView","currentPosition","writeExtensionData","json","alignedSign","writePlainObject","num","objectOffset","writeRecord","wroteKeys","lastTransition","newTransitions","newRecord","insertNewRecord","recordId","checkUseRecords","newSize","newBuffer","insertionOffset","mainTarget","mainPosition","mainSafeEnd","mainStart","keysPosition","newEnd","insertionPosition","newPosition","notifySharedUpdate","startTarget","buffer","date","allocateForWrite","seconds","set","regex","arrayBuffer","writeExtBuffer","writeBuffer","typedArray","encode","nextId","distanceToMove","lastEnd","offset","writeStrings","compatible","defaultPackr","truncateHashes","arg","depth","acc","rx","replacement","element","prop","originalFormatArgs","_debug","args","debug","freeGlobal","freeSelf","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","objectToString","nullTag","undefinedTag","baseGetTag","isObject","asyncTag","funcTag","genTag","proxyTag","isFunction","coreJsData","maskSrcKey","uid","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","getValue","getNative","eq","other","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","hashHas","hashSet","Hash","entries","index","listCacheClear","assocIndexOf","arrayProto","splice","listCacheDelete","lastIndex","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","FUNC_ERROR_TEXT","memoize","resolver","memoized","cache","_memoize","base","ALPHABET","BASE_MAP","xc","BASE","LEADER","FACTOR","iFACTOR","zeroes","pbegin","pend","b58","carry","it1","it2","str","decodeUnsafe","psz","b256","it3","it4","vch","decode","basex","bs58","base58","keypairToBase58","keypair","keyToBytes","encoding","stretch","password","passwordBytes","salt","sodium","opsLimit","memLimit","keyPair","seed","sodium2","encryptBytes","secret","recipientPublicKey","senderSecretKey","secretBytes","nonce","senderPublicKey","senderKeys","asymmetric","message","decryptBytes","cipher","recipientSecretKey","unpackedCipher","decrypted","encrypt","cipherBytes","decrypt","hash","payload","hashBytes","seedBytes","payloadBytes","pack2","sodium3","randomKeyBytes","sodium4","randomKey","keyPair2","sodium5","sign","secretKey","pack3","secretKeyBytes","signatureBytes","verify","signature","publicKey","publicKeyBytes","signatures","encryptBytes2","messageBytes","pack4","sodium6","encrypted","decryptBytes2","unpack2","encrypt2","decrypt2","symmetric","sodium7"],"mappings":"kNAAC,SAASA,GAAE,CAAC,SAASC,GAAED,GAAE,CAAc,IAAIC,IAAYA,GAAED,MAAZ,SAAiBC,GAAE,CAAA,GAAI,IAAIC,EAAED,GAAY,OAAOC,EAAE,QAAnB,WAAsC,OAAOC,IAAjB,SAAwBD,EAAEC,GAAiB,OAAO,QAAjB,WAA0BD,EAAE,SAAS,IAAIE,GAAEH,GAAE,OAAOA,GAAE,MAAM,IAAI,QAAS,SAASD,GAAEC,GAAE,EAAEI,EAAED,IAAG,QAAQH,GAAEI,EAAE,MAAM,SAASL,EAAE,CAAA,EAAGK,EAAE,SAAS,SAASL,EAAE,CAAA,EAAGK,EAAE,qBAAqB,UAAU,CAAC,GAAG,CAACA,EAAE,2BAA0B,EAAGL,IAAG,OAAOA,EAAE,CAACC,GAAED,CAAC,CAAC,CAAC,EAAEK,EAAE,gBAAgB,UAAU,CAAC,OAAO,IAAI,QAAS,SAASL,EAAEC,EAAE,EAAEI,EAAE,CAAE,GAAE,QAAQJ,EAAEI,EAAE,qBAAqB,UAAU,CAAC,OAAO,KAAKD,EAAC,EAAE,QAAS,SAASJ,EAAE,CAAoBA,IAAnB,kBAAsB,OAAOI,GAAEJ,CAAC,CAAC,CAAC,EAAG,OAAO,KAAKK,CAAC,EAAE,QAAS,SAASL,EAAE,CAACI,GAAEJ,CAAC,EAAEK,EAAEL,CAAC,CAAC,CAAC,EAAGA,GAAG,EAAE,IAAIE,GAAEG,EAAWA,IAAT,OAAWA,EAAE,CAAA,EAAGC,GAAY,OAAO,QAAjB,SAAwBC,GAAc,OAAO,eAAnB,WAAiCC,GAAY,OAAOC,IAAjB,UAAoC,OAAOA,GAAQ,UAAzB,UAA6C,OAAOA,GAAQ,SAAS,MAAlC,SAAuCC,GAAE,OAAO,OAAO,GAAGL,CAAC,EAAEM,GAAE,GAAG,GAAGH,GAAE,CAAC,IAAII,GAAEC,GAAcC,GAAEC,GAAgBJ,GAAE,UAAU,IAAIT,GAAEF,IAAIA,EAAEgB,GAAEhB,CAAC,EAAE,IAAI,IAAIA,CAAC,EAAEc,GAAE,UAAUd,CAAC,EAAEY,GAAE,aAAaZ,CAAC,GAAG,CAACK,EAAE,aAAaI,GAAQ,KAAK,OAAO,GAAGA,GAAQ,KAAK,CAAC,EAAE,QAAQ,MAAM,GAAG,EAAEA,GAAQ,KAAK,MAAM,CAAC,EAA+BQ,GAAA,QAAeZ,CAAE,MAAMC,IAAGC,MAAKA,GAAEI,GAAE,KAAK,SAAS,KAAkB,OAAO,SAApB,KAA8B,SAAS,gBAAgBA,GAAE,SAAS,cAAc,KAAKA,GAAEA,GAAE,WAAW,OAAO,EAAE,GAAGA,GAAE,OAAO,EAAEA,GAAE,QAAQ,SAAS,EAAE,EAAE,YAAY,GAAG,EAAE,CAAC,EAAEJ,KAAIL,GAAEF,GAAG,CAAC,IAAIC,EAAE,IAAI,eAAe,OAAOA,EAAE,KAAK,MAAMD,EAAE,EAAE,EAAEC,EAAE,aAAa,cAAcA,EAAE,KAAK,IAAI,EAAE,IAAI,WAAWA,EAAE,QAAQ,CAAC,IAAII,EAAE,MAAM,IAAIa,GAAEC,GAAEd,EAAE,UAAU,OAAO,OAAO,OAAOA,EAAEK,EAAC,EAAEA,GAAE,KAAKL,EAAE,WAAWA,EAAE,UAAUA,EAAE,aAAaA,EAAE,YAAYA,EAAE,MAAMA,EAAE,KAAKA,EAAE,aAAaa,GAAEb,EAAE,YAAY,IAAIe,GAAEC,GAAE,CAAC,OAAO,SAASrB,EAAE,CAAC,KAAK,OAAO,IAAI,YAAY,MAAMA,EAAE,OAAO,CAAC,EAAE,OAAO,SAASA,EAAE,CAAA,EAAG,SAAS,SAASA,EAAEC,EAAE,CAAC,KAAK,QAAQ,SAASD,GAAE,CAAC,QAAQC,GAAEC,GAAE,IAAI,WAAW,GAAG,EAAEE,GAAE,GAAGA,IAAG,EAAE,EAAEA,GAAEF,GAAE,GAAGE,EAAC,EAAE,GAAGA,GAAEF,GAAE,GAAGE,EAAC,EAAEA,GAAEF,GAAE,GAAGE,EAAC,EAAE,GAAGA,GAAE,SAASC,GAAEL,GAAEC,GAAEG,EAAE,CAAC,QAAQC,EAAEC,EAAEC,GAAE,EAAEC,GAAEP,GAAES,GAAEN,EAAE,OAAOO,GAAEV,IAAG,EAAES,IAAG,IAASN,EAAEM,GAAE,CAAC,GAAV,MAAmBN,EAAEM,GAAE,CAAC,GAAV,KAAaH,GAAEG,GAAEH,IAAG,EAAEF,EAAEH,GAAEE,EAAE,WAAWG,GAAE,CAAC,CAAC,EAAED,EAAEJ,GAAEE,EAAE,WAAWG,GAAE,CAAC,CAAC,EAAEP,GAAEQ,IAAG,EAAEN,GAAEE,EAAE,WAAWG,EAAC,CAAC,GAAG,EAAEF,GAAG,EAAEG,GAAEG,KAAIX,GAAEQ,IAAG,EAAEH,GAAG,EAAEC,GAAG,GAAGE,GAAEG,KAAIX,GAAEQ,IAAG,EAAEF,GAAG,EAAEJ,GAAEE,EAAE,WAAWG,GAAE,CAAC,CAAC,EAAE,CAAC,SAASD,IAAG,CAAC,MAAM,IAAI,MAAM,OAAO,CAAC,CAAC,OAAOJ,GAAE,EAAE,EAAE,GAAGA,GAAE,EAAE,EAAE,GAAG,SAASF,GAAE,CAAC,IAAIE,GAAE,IAAI,YAAY,QAAQ,EAAEE,EAAE,IAAI,UAAUF,EAAC,EAAEK,EAAqB,IAAI,WAAWL,EAAC,EAAGM,EAAE,IAAI,WAAWN,EAAC,EAAEQ,GAAsB,IAAI,YAAYR,EAAC,EAAGS,GAA2C,KAAK,KAAMC,GAAwB,KAAK,MAAOE,GAA+Dd,GAAE,EAAGkB,GAAEJ,GAAE,EAAEK,GAAEL,GAAE,EAAEM,GAAEN,GAAE,EAAEO,GAAEP,GAAE,EAAEQ,EAAE,OAAOC,GAAE,EAAEC,GAAE,EAAEC,EAAE,EAAE,SAASC,GAAE1B,EAAEC,EAAE,CAAC,IAAIC,EAAEG,EAAEC,EAAEC,EAAEG,EAAE,EAAE,EAAE,EAAE,EAAEI,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEtB,GAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,EAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEhB,GAAGhE,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGyE,GAAG,EAAElE,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG4D,GAAGrD,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAGO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAG0E,GAAG,EAAEnE,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAGO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGkD,GAAE3C,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG8D,GAAG,EAAEsB,GAAG,EAAE7E,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG+B,EAAE,EAAEmC,GAAG3D,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAGO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAG8E,GAAG,EAAEvE,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAGO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAGK,EAAE,EAAEE,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGC,EAAEM,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGiD,GAAE,EAAEgB,GAAG1D,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG4E,GAAG,EAAErE,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGmD,GAAE,EAAEY,EAAGxD,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG,GAAGqE,GAAG7D,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAIgC,EAAE,EAAEgB,IAAGoB,GAAG5D,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,KAAKsE,GAAG9D,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAGO,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,KAAKoE,KAAK,EAAEpB,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGgB,GAAI,EAAEhB,MAAK,GAAGA,GAAEA,GAAEgB,EAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGU,GAAG,EAAET,GAAGQ,GAAGzB,GAAEwB,GAAG,EAAEC,GAAG,EAAEA,KAAK,EAAEzB,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,GAAEyC,EAAGzC,IAAGxC,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,UAAUgE,GAAIxD,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,EAAEkF,GAAG,EAAEzD,EAAE,EAAE,EAAE,WAAW,EAAEuC,EAAGhB,GAAEO,EAAE,GAAGP,GAAEA,GAAE,SAAS,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,EAAEqB,GAAGoB,EAAGzC,GAAEoB,GAAG,EAAEC,GAAG,EAAE,EAAE,GAAG,EAAEI,KAAKA,GAAGhD,GAAG,EAAE2C,GAAGqB,EAAGzB,GAAIzC,EAAE6C,GAAGC,GAAGJ,GAAG,GAAGiB,IAAI1D,EAAED,IAAI,EAAE8C,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEd,GAAGT,GAAErB,GAAG,EAAEI,EAAE,GAAGuC,GAAGpB,IAAGtB,EAAE0C,IAAI,KAAK,EAAEpB,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEoB,GAAG,EAAEqB,EAAGpB,IAAIzC,EAAEwC,IAAIK,GAAG,EAAE,CAAC,EAAElB,EAAEP,GAAEvB,EAAEgD,GAAGjE,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGiF,GAAG,EAAE1E,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGsE,GAAG/D,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGgD,IAAGqB,GAAG7D,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,KAAK+D,EAAGxD,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAGsF,GAAG9E,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,KAAKuF,GAAGhF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAGQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,KAAKgD,KAAI,EAAEgB,IAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEkB,IAAIjB,IAAI,EAAEjB,MAAK,GAAGA,GAAEA,GAAEuB,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGA,GAAGvB,GAAEyB,GAAG,KAAK,EAAEzB,KAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEyC,EAAGzC,IAAGxC,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,UAAUiE,IAAIzD,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,YAAY,EAAE,EAAEoB,EAAEqE,EAAGzB,GAAIlD,EAAE,EAAE,WAAW,GAAG0E,IAAI5C,IAAGL,GAAES,GAAEvB,KAAK,IAAI,EAAE,YAAY,WAAW,GAAG,GAAG,EAAE,EAAE,GAAGsB,GAAEtB,GAAG,EAAE,EAAE,GAAGT,IAAGc,EAAEkB,GAAE5B,EAAEmD,GAAG,KAAK,EAAEnD,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGmC,EAAE,EAAE,GAAGzB,IAAI,GAAGkB,GAAElB,EAAEsC,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGhB,GAAE,EAAE,GAAGY,GAAI9C,EAAE8B,MAAK,GAAGA,GAAEA,GAAEkB,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGhB,GAAE,EAAER,GAAEQ,GAAEF,GAAE9C,EAAE,EAAEoB,EAAE,EAAE4B,KAAI,EAAEF,KAAI,EAAE,EAAE,EAAE,EAAE,EAAErB,EAAEyC,GAAGY,GAAGzB,EAAEA,EAAEP,GAAEiB,GAAGD,EAAGI,GAAG5D,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG+C,GAAE,EAAExC,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGuF,GAAG,EAAEhF,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEyD,EAAGxD,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGoD,GAAE,EAAE,GAAG+B,GAAG3E,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,KAAKkB,EAAEX,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAEO,IAAI2C,GAAE1C,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,GAAGkB,EAAEgC,IAAGc,EAAGxD,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGsE,IAAInB,GAAElC,EAAEkC,GAAE,KAAK,EAAElC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG8B,GAAE,EAAE8B,GAAG5D,EAAEkC,GAAEgB,GAAG,EAAElD,EAAE,EAAEA,IAAI,EAAEkC,KAAI,EAAE,EAAE,EAAE,EAAE,EAAE/B,EAAE6B,GAAEA,GAAEuC,EAAGrC,IAAG5C,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,YAAYuE,IAAI/D,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,WAAW,EAAE,EAAEuE,GAAG,EAAE9C,EAAE,EAAE,EAAE,WAAW,EAAE2B,GAAEF,GAAEd,GAAE,GAAGc,GAAEA,GAAE,UAAU,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE/B,EAAEsE,EAAGpE,GAAGU,EAAEmB,IAAG,EAAE/B,EAAE,EAAE,EAAE,GAAGsB,GAAEhB,GAAGP,EAAE,EAAEG,EAAEoE,EAAGrC,IAAGlC,EAAEgC,GAAE/B,EAAE2D,GAAG,GAAGP,IAAItC,EAAEd,IAAI,EAAED,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEuE,EAAGpE,EAAEkC,GAAGE,GAAEhC,GAAGwC,GAAG,EAAE,EAAEX,EAAEJ,GAAEzB,EAAEkB,GAAE,EAAEtC,EAAE,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGsE,GAAGO,GAAGtE,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGkC,EAAE3B,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGkD,IAAGe,GAAGzD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,KAAKmD,GAAE5C,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAGoF,GAAG5E,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,KAAKuC,GAAEhC,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAGQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,KAAKkD,KAAI,EAAEE,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE/C,GAAGkD,GAAGrB,EAAEgB,MAAK,GAAGA,GAAEf,EAAEe,GAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGf,EAAEe,GAAEqB,GAAG,KAAK,EAAErB,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEK,EAAEkC,EAAGvC,IAAG1C,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,UAAUuD,GAAG/C,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,WAAW,EAAE,EAAEoD,GAAEqC,EAAGrC,IAAGmB,GAAGhB,EAAE,WAAW,IAAIrB,EAAEM,KAAIA,IAAGH,GAAEa,GAAEzB,KAAK8B,IAAI,EAAE,YAAY,WAAW,GAAG,GAAG,EAAE,EAAE,GAAGK,GAAGnC,GAAG,EAAE,EAAEyB,GAAEuC,GAAItD,EAAEe,GAAEE,GAAEjB,EAAE,GAAGoB,EAAElB,IAAGH,EAAEC,IAAI,EAAEiB,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEZ,IAAGkB,GAAEjC,GAAG,EAAEa,GAAE,GAAGY,GAAEqB,IAAI/B,GAAEU,IAAG,KAAK,EAAEqB,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEjB,EAAE,EAAE,EAAED,EAAE1B,GAAG4B,EAAEZ,IAAGN,GAAEa,IAAG,GAAGvB,EAAE,EAAE4B,IAAI,EAAElB,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEkC,GAAGkB,EAAGpC,EAAE,EAAE2B,GAAG,EAAE,EAAE,GAAGA,GAAGvD,GAAGH,EAAE,EAAE4B,GAAEuC,EAAG/C,GAAEC,IAAGrB,EAAE4B,GAAEqB,GAAG7B,GAAE,GAAGY,GAAGX,GAAErB,IAAI,EAAEiD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE5C,GAAGmC,GAAGrC,GAAG,EAAE6B,EAAE,GAAG3B,EAAE4B,GAAGb,GAAEQ,IAAG,KAAK,EAAEK,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEL,IAAGL,GAAE4C,EAAG9D,EAAE4C,GAAGS,GAAG,EAAE,CAAC,IAAIzB,EAAE/C,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG2E,GAAGnD,IAAIuD,GAAGxE,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAI,EAAEgF,GAAG/B,GAAED,GAAEC,KAAI,EAAEK,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEC,GAAEmB,GAAGzB,GAAE1C,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGsE,GAAG,EAAE/D,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAGO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAGmD,IAAG,EAAE7B,IAAIA,EAAEkE,EAAGpD,GAAEe,GAAEd,GAAEsB,GAAG,CAAC,GAAG,EAAE,GAAGvB,GAAEZ,GAAGD,EAAE,EAAE,GAAGD,IAAI,EAAE6B,KAAI,EAAE,EAAE,EAAE,EAAE,GAAGmB,GAAG,EAAE,GAAG/C,GAAGA,EAAE4B,MAAK,GAAGA,GAAEF,GAAEE,GAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGI,GAAE,EAAEH,EAAEf,GAAEc,GAAES,GAAG,EAAEvB,GAAE,EAAEA,KAAI,EAAEc,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEtB,EAAE2D,EAAG,EAAE3D,EAAEd,GAAEuB,GAAE,EAAE,EAAEvB,GAAE,EAAEyE,EAAG3D,EAAEsB,IAAGb,GAAEd,GAAGD,EAAE,EAAE,EAAE,EAAEY,GAAEqB,GAAE,EAAE,GAAGG,GAAGR,GAAE3B,IAAIM,GAAGqB,GAAE/B,EAAEU,EAAE,KAAK,EAAEV,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEe,GAAE,GAAGZ,EAAE4B,MAAK,GAAG/B,EAAEG,EAAER,GAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEO,EAAEkE,EAAGpE,EAAEE,EAAEc,GAAE,EAAE,EAAE,EAAE,GAAGoB,GAAEhC,GAAGa,GAAE,EAAE,GAAGD,GAAEd,IAAI,GAAGe,GAAEc,GAAE7B,EAAE8B,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGJ,GAAE,EAAE,GAAG,EAAEX,KAAI,GAAGc,GAAEd,GAAE2C,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGF,GAAG,EAAEE,GAAGhC,GAAEG,GAAEe,GAAG,EAAElB,GAAE,EAAEA,KAAI,EAAEG,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAED,GAAEI,GAAE,EAAEJ,GAAE5C,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAGO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAGA,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAGO,EAAEP,EAAE,IAAI,CAAC,GAAG,GAAGkB,EAAEsE,EAAGtE,EAAEK,EAAEO,EAAEU,GAAE,CAAC,EAAE,GAAGA,GAAEhB,GAAGS,EAAE,EAAE,IAAI,EAAEf,EAAEgB,EAAE,KAAK,EAAEhB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGiC,GAAE,EAAE,GAAG5B,GAAGO,EAAE,KAAK,GAAG,EAAE9B,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG8E,GAAG,EAAEQ,GAAGxD,EAAE,EAAEoC,GAAG,EAAEpC,EAAE,EAAEA,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE0D,EAAG,EAAE/D,EAAEF,EAAEsB,GAAE,EAAE,EAAEa,GAAG,EAAElC,EAAEC,EAAE,EAAEF,EAAE,EAAE,EAAEe,GAAEK,GAAE,EAAEd,EAAE,EAAEhB,EAAEgB,EAAE,EAAEK,EAAE,EAAE,IAAI,EAAErB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEU,EAAE,EAAEU,EAAE,EAAE,EAAER,EAAE,EAAEoB,GAAE,EAAEhB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEN,EAAEiE,EAAG,EAAEtE,EAAEsB,GAAE,EAAE,EAAE,EAAE,GAAGA,GAAEhB,GAAGM,EAAE,EAAEL,EAAE+D,GAAI,EAAEjE,EAAE+D,GAAG,GAAG7D,EAAEiC,IAAI7C,EAAE,IAAI,EAAEU,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEiE,EAAG/D,EAAE2B,GAAGkC,GAAG9D,GAAG+B,GAAE,EAAE,EAAEG,GAAGxC,EAAEM,EAAEM,EAAE,EAAEsB,EAAElC,EAAEC,EAAEqE,EAAGrE,EAAEU,EAAEK,EAAEY,GAAE,CAAC,EAAE,EAAEd,GAAGH,EAAEL,GAAG,EAAE,IAAIN,EAAED,KAAK,GAAGA,EAAEA,EAAEE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG2C,GAAG,EAAE,GAAG7C,GAAGC,EAAED,EAAEiC,GAAE,KAAK,EAAEjC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG8D,GAAG,EAAExB,GAAEvB,EAAEd,EAAEoC,EAAE,EAAEtB,EAAE,EAAEA,IAAI,EAAEd,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEgB,EAAEf,EAAED,EAAEsE,EAAGtE,EAAEqB,GAAEtB,EAAEwC,GAAE,EAAE,EAAE,GAAGlB,GAAEf,GAAGI,EAAE,EAAED,EAAE6D,EAAGtD,GAAGjB,EAAEE,EAAED,EAAES,EAAE,IAAIC,EAAEV,IAAI,EAAED,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGY,EAAE,EAAE,EAAE,GAAG4B,GAAEjC,GAAGQ,EAAE,EAAEH,EAAEV,EAAEQ,EAAE4B,GAAE,EAAEpC,EAAEqE,EAAGtE,EAAEC,EAAEoB,IAAGP,EAAEb,IAAI,EAAEQ,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEC,GAAGnB,EAAEe,GAAG,EAAEI,EAAET,EAAEoB,GAAE,GAAGpB,EAAEF,EAAEE,EAAE,KAAK,EAAEF,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEmC,EAAE,EAAE,GAAGlB,EAAEf,KAAK,GAAGA,EAAEA,EAAEW,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEsB,EAAEjC,EAAEA,GAAGyB,GAAEA,GAAE,EAAE1B,EAAEsE,EAAGrE,EAAEwD,GAAG,EAAE,EAAE,EAAE,GAAGA,GAAGnD,GAAGwB,GAAE,EAAEA,GAAE7B,EAAED,EAAE8D,GAAG,EAAE,EAAE3E,GAAGkD,GAAErC,IAAI,EAAEC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE6D,GAAG7D,EAAEA,EAAElB,EAAE,EAAEqC,GAAE,EAAEnB,IAAI,EAAElB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEkB,EAAE,EAAEwB,GAAEiB,GAAGd,GAAE4B,GAAG,EAAEc,EAAGzE,GAAEsB,GAAED,GAAEuB,GAAG,EAAE,EAAE,EAAExB,IAAGwB,GAAGnC,GAAG,EAAET,GAAE,EAAEoB,GAAE,GAAGlB,EAAEG,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEoE,EAAGvE,EAAEK,EAAEkC,GAAE,EAAE,CAAC,EAAE,GAAGpC,EAAEI,GAAGsB,GAAE,EAAE,IAAIxB,EAAE,EAAEqB,GAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG9B,EAAE,EAAE,EAAEsE,IAAIhE,GAAGN,EAAEM,EAAEG,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEe,GAAEf,EAAET,EAAEmD,GAAG,EAAE1C,EAAE,EAAEA,IAAI,EAAE0C,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEnD,EAAE2E,EAAG3E,EAAEe,EAAET,EAAEV,EAAE,EAAE,EAAE,EAAE4C,GAAGjB,GAAEZ,GAAG,EAAEI,EAAEf,EAAEa,EAAE,GAAGb,EAAEa,EAAEb,EAAE,KAAK,EAAEa,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEP,EAAEqE,EAAG,EAAE3E,EAAE,EAAEO,EAAE,EAAE,EAAE,GAAG,EAAEE,IAAIA,EAAEE,GAAG,EAAEJ,EAAE,EAAED,EAAEkB,GAAE,EAAE,EAAEmD,EAAG,EAAE5D,EAAEQ,IAAGC,GAAE,IAAI,EAAElB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEO,GAAG8B,GAAEhC,GAAG,EAAEY,GAAE,EAAEiB,EAAE,GAAG3B,EAAEb,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE2E,EAAGrE,EAAEO,EAAEJ,EAAE,EAAE,CAAC,EAAE,GAAGA,EAAEE,GAAGc,GAAE,EAAE,EAAElC,GAAGe,GAAGN,EAAE,EAAEmE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEA,GAAGpD,EAAEf,EAAEgE,GAAG,EAAEjD,EAAE,EAAEA,IAAI,EAAEiD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEvC,GAAE,EAAEK,GAAErB,EAAE,EAAEuB,GAAEyC,GAAG,EAAE,GAAG,EAAE7D,EAAEQ,EAAE,KAAK,EAAER,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAEQ,EAAE,EAAE,EAAEuD,EAAG,EAAEjE,EAAEiB,GAAE,EAAE,CAAC,EAAEjB,EAAED,EAAEE,EAAE,EAAE,EAAE,EAAEQ,EAAEmB,GAAE,EAAE,IAAItB,EAAE7B,EAAE6B,EAAE,KAAK,EAAE7B,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGsB,EAAE,EAAE,EAAEsD,IAAI/C,GAAGP,EAAE,EAAEO,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEgB,GAAEb,EAAEV,EAAE2C,GAAG,EAAEjC,EAAE,EAAEA,IAAI,EAAEiC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE3C,EAAEkE,EAAGlE,EAAEmB,GAAEZ,EAAEgC,GAAG,EAAE,EAAE,EAAE1B,IAAGM,GAAEjB,GAAG,EAAEK,EAAEP,EAAEa,GAAE,GAAGA,GAAElB,KAAK,GAAGA,EAAEA,EAAEK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEkE,EAAG,EAAEvE,EAAE,EAAEM,EAAE,EAAE,EAAE,GAAGiB,GAAEhB,GAAGQ,EAAE,EAAET,EAAE,EAAED,EAAEuB,GAAE,EAAE,EAAE2C,EAAGxD,EAAE,EAAEH,EAAEY,IAAGZ,EAAE,IAAI,EAAEP,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEa,IAAG0B,GAAGrC,GAAG,EAAEW,GAAE,EAAEH,EAAE,EAAEf,EAAE,EAAE,EAAEwB,GAAE,EAAE,IAAI,EAAExB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE4B,GAAEhC,EAAEiC,GAAE3B,EAAE,EAAEqE,EAAG7D,EAAEO,EAAEK,GAAEkB,GAAE,CAAC,EAAE,GAAGxC,EAAEO,GAAGO,EAAE,EAAE,EAAEW,KAAI7B,EAAE,EAAEwD,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEP,IAAI3C,GAAGN,EAAEA,EAAEQ,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEqB,GAAErB,EAAER,EAAEqC,GAAE,EAAE7B,EAAE,EAAEA,IAAI,EAAER,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEc,EAAE,EAAE,GAAGd,EAAE2E,EAAG3E,EAAEE,GAAEI,EAAEwC,GAAG,EAAE,GAAGlC,EAAE,EAAE,GAAGA,EAAED,GAAGS,EAAE,EAAEd,EAAE,EAAEF,EAAEuE,EAAG,EAAE7D,GAAGZ,GAAE,IAAI,EAAEF,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGI,EAAE,EAAE,EAAE,GAAG0C,GAAGnC,GAAGH,EAAE,EAAEA,EAAE,EAAEJ,EAAEyB,GAAE,EAAER,EAAEsD,EAAG,EAAE3E,EAAEY,GAAGiB,GAAE,IAAI,EAAEzB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEJ,EAAE2E,EAAGtD,EAAEW,IAAG,EAAEC,KAAIA,GAAEtB,GAAG,EAAE,EAAE,GAAGqB,GAAErB,GAAGiB,GAAE,EAAEhB,EAAE,EAAEZ,EAAEmB,EAAE,EAAEL,EAAE6D,EAAG,EAAElD,IAAGL,EAAE,IAAI,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG8B,GAAE,EAAE,EAAE,GAAGL,GAAEd,GAAGI,EAAE,EAAEA,EAAE,EAAED,EAAEqD,GAAG,EAAE,EAAEQ,EAAG,EAAE3E,EAAEgC,IAAGN,GAAE,IAAI,EAAEZ,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEM,GAAGwB,GAAEjC,GAAG,EAAES,EAAE,EAAEY,GAAE,GAAGhC,EAAEY,KAAK,GAAGA,EAAEA,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE+D,EAAG/D,EAAEE,EAAEW,GAAE,EAAE,CAAC,EAAE,EAAEwC,IAAIE,GAAGxD,GAAG,EAAEc,GAAE,EAAEgD,GAAG,EAAEpB,GAAG,EAAE,EAAEvC,EAAE,EAAE,IAAI,EAAEuC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAErD,EAAE0D,GAAG,EAAEiB,EAAGlE,EAAEU,EAAEQ,GAAEC,GAAE,CAAC,EAAE,EAAEJ,IAAGf,EAAEE,GAAG,EAAE,IAAIQ,EAAEZ,KAAK,GAAGA,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGqD,GAAG,EAAE,GAAGzC,GAAGnB,EAAEA,EAAEO,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG6D,GAAG,EAAEtC,GAAEvB,EAAEP,EAAE2D,GAAG,EAAEnC,GAAE,EAAEjB,IAAI,EAAEP,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE4B,GAAE,EAAErB,EAAEoE,EAAG1D,EAAEkB,GAAEO,GAAEG,GAAG,EAAE,EAAE,EAAE8B,EAAGpE,EAAEP,GAAG2B,GAAEhB,GAAGQ,EAAE,EAAE,EAAE0B,GAAG,EAAElC,EAAEM,EAAE,EAAEjB,EAAE,EAAE,EAAEE,GAAE+B,GAAE,EAAE,GAAG,EAAE3B,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAEJ,GAAE,EAAE,EAAE,EAAEF,EAAE,EAAEmB,EAAE,EAAE,EAAEF,EAAE,EAAEI,EAAE,EAAEf,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEN,EAAE2E,EAAG,EAAE/C,GAAE,EAAEnB,EAAE,EAAE,EAAE,GAAG,EAAEe,KAAIA,GAAEb,GAAG,EAAEiB,GAAE,EAAE5B,EAAE8B,GAAE,EAAEK,GAAE,EAAE,IAAI,EAAEnC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEc,EAAE,EAAE4B,GAAE,GAAGjC,EAAE,EAAEgE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE3D,EAAE,EAAE,EAAE6D,EAAGvE,EAAEE,EAAEJ,GAAE4C,GAAG,CAAC,EAAE,EAAEZ,IAAG9B,EAAEO,GAAG,EAAE,EAAEK,IAAIV,EAAE,EAAEgD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEG,IAAI/C,GAAGJ,EAAEA,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEoB,GAAEd,EAAEV,EAAE8B,GAAE,EAAEpB,EAAE,EAAEA,IAAI,EAAEoB,KAAI,EAAE,EAAE,EAAE,EAAE,EAAElC,GAAE,EAAE,EAAEyE,EAAGrE,EAAEiB,GAAEb,EAAEiC,GAAE,EAAE,EAAEV,GAAE,EAAEtB,EAAEL,EAAE,EAAEI,EAAE,EAAE,EAAEiB,GAAEI,GAAE,EAAER,GAAE,EAAEhB,EAAEgC,EAAE,EAAER,GAAE,EAAE,IAAI,EAAExB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEG,EAAE,EAAE,GAAGH,EAAE,EAAED,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAEL,GAAEA,GAAE,EAAEQ,EAAEiE,EAAG,EAAE,EAAEvE,EAAE,EAAE,EAAE,GAAGuC,GAAEhC,GAAGK,EAAE,EAAEZ,EAAE,EAAEM,EAAEoB,GAAE,EAAES,EAAEoC,EAAG,EAAErE,EAAE2B,IAAGjB,EAAE,IAAI,EAAEN,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEiE,EAAGpC,EAAE9B,GAAGqC,GAAGnC,GAAGG,EAAE,EAAE,EAAE2D,GAAG,EAAE9D,EAAEmB,GAAE,EAAEhB,EAAE,EAAE,EAAE6D,EAAGtE,EAAEkB,GAAEQ,GAAE+B,GAAG,CAAC,EAAE,EAAEjC,IAAGxB,EAAEM,GAAG,EAAE,EAAE0D,KAAK/D,EAAE,EAAEE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGA,GAAGF,EAAEA,EAAE4C,EAAG,KAAK,EAAEA,IAAK,EAAE,EAAE,EAAE,EAAE,GAAGsB,GAAG,EAAEjD,GAAEM,GAAEvB,EAAEiD,GAAG,EAAE1B,GAAE,EAAEA,KAAI,EAAEvB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEqE,EAAGrE,EAAEgB,GAAEd,EAAEwC,GAAG,EAAE,EAAE,EAAER,GAAGT,GAAEpB,GAAG,EAAEW,GAAEhB,EAAEE,EAAEH,EAAEA,EAAE,GAAGC,EAAEO,EAAEP,EAAE,KAAK,EAAEO,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEL,EAAEmE,EAAG,EAAErE,EAAEE,EAAE,EAAE,EAAE,EAAE,GAAGwC,GAAGrC,GAAGkB,GAAE,EAAEhB,EAAE,EAAEL,EAAEe,GAAE,EAAE,EAAEoD,EAAGpD,GAAE,EAAED,GAAES,IAAGT,GAAE,IAAI,EAAEd,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEH,GAAGsB,GAAEhB,GAAG,EAAEN,EAAE,EAAEwB,GAAE,EAAEvB,EAAE,EAAE,EAAEiB,GAAE,EAAE,IAAI,EAAEjB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEQ,EAAE,EAAE0B,EAAE,GAAG1B,EAAE,EAAEgB,GAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAExB,EAAEqE,EAAG7D,EAAEW,GAAE0C,GAAG,EAAE,EAAE,EAAE,EAAEzB,IAAGX,GAAEpB,GAAG,EAAE,IAAI,EAAEL,EAAEG,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGoD,GAAG,EAAEpD,EAAE,EAAEiC,GAAE,EAAE,EAAEK,GAAG,EAAEtB,GAAE,EAAEhB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEwB,GAAEgB,GAAGxC,EAAEkE,EAAG1D,EAAEW,GAAEO,GAAEU,GAAG,EAAE,EAAE,GAAGiB,GAAGnD,GAAGU,EAAE,EAAEJ,EAAE,EAAER,EAAEU,EAAE,EAAE,EAAEwD,EAAG,EAAE3E,GAAGmB,EAAE,IAAI,EAAEV,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGe,GAAE,CAAC,EAAEA,GAAExB,EAAEW,EAAE,EAAE,EAAE,EAAEK,EAAExB,EAAE,EAAE,IAAIY,EAAEA,EAAEhB,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGY,EAAE,EAAE,GAAGI,GAAGJ,EAAE,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG6B,GAAE,EAAEZ,EAAEL,EAAEhB,EAAEqC,GAAE,EAAErB,EAAE,EAAEA,IAAI,EAAEhB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE2E,EAAG3E,EAAEK,EAAED,EAAEuB,GAAE,EAAE,EAAE,EAAEK,IAAGJ,GAAEjB,GAAG,EAAEC,EAAE,GAAGP,EAAEL,EAAEY,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAER,EAAEuE,EAAG,EAAEtE,EAAE,EAAEmB,GAAE,EAAE,EAAE,GAAGW,GAAExB,GAAGK,EAAE,EAAEA,EAAE,EAAEZ,EAAEiB,EAAE,EAAErB,EAAE2E,EAAG,EAAE3E,EAAE4B,IAAGJ,GAAE,IAAI,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEQ,GAAGS,EAAEV,GAAG,EAAEiB,GAAE,GAAGhB,EAAEZ,EAAEK,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEsE,EAAGvE,EAAEQ,EAAEuB,GAAE,EAAE,CAAC,EAAE,GAAGA,GAAExB,GAAGc,GAAE,EAAE,EAAEyC,KAAK7D,EAAE,EAAEqC,GAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGtC,GAAGC,EAAEA,EAAEoC,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGvB,EAAE,EAAEiD,GAAGjD,EAAEb,EAAEmD,GAAG,EAAEtC,EAAE,EAAEA,IAAI,EAAEb,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE2B,GAAE,EAAEC,GAAE5B,EAAEsB,GAAEvB,EAAEC,EAAEqD,GAAG,EAAEiB,EAAGnE,EAAEqB,GAAEN,GAAEyB,GAAG,CAAC,EAAE,EAAEtB,IAAGlB,EAAEG,GAAG,EAAE,IAAIP,EAAEW,KAAK,GAAGA,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG6C,GAAG,EAAE,EAAEY,IAAIpE,GAAGC,EAAEA,EAAEU,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEW,GAAEX,EAAEV,EAAEkD,GAAG,EAAE1B,GAAE,EAAEd,IAAI,EAAEwC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAExC,EAAE,EAAEX,EAAE,EAAEuE,EAAGtE,EAAEI,EAAEL,EAAE0D,GAAG,EAAE,EAAE,EAAE5D,GAAE4C,GAAG,EAAE,GAAGvB,GAAE,EAAEZ,IAAIJ,GAAG,EAAEA,EAAEgC,EAAE,KAAK,EAAEhC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEL,GAAE,GAAGO,EAAE,EAAEL,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEW,EAAE4D,EAAGlE,EAAEM,EAAE,EAAEP,EAAE,EAAE,EAAE,GAAGsC,GAAGnC,GAAGkB,GAAE,EAAEA,GAAE8C,EAAGjD,IAAGrB,EAAEU,EAAEW,GAAE,GAAGtB,EAAEmB,IAAGnB,EAAEC,IAAI,EAAEU,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE4D,EAAG9C,GAAEI,IAAGe,GAAGrC,GAAGgB,GAAE,EAAE,EAAEmC,GAAGtD,EAAEG,EAAEe,GAAE,EAAEH,GAAEf,EAAE,EAAEmE,EAAG,EAAEjE,EAAEH,EAAEoC,GAAE,CAAC,EAAE,EAAEc,IAAIjD,EAAEG,GAAG,EAAE,EAAEW,KAAIf,EAAE,EAAE6B,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEiC,IAAIxD,GAAGN,EAAEA,EAAEM,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEoB,GAAEvB,EAAEH,EAAE2C,EAAG,EAAExC,EAAE,EAAEA,IAAI,EAAEwC,IAAK,EAAE,EAAE,EAAE,EAAE,EAAE5B,GAAE,EAAEiB,EAAE/B,EAAED,EAAEoE,EAAGpE,EAAEa,EAAEP,EAAE+B,GAAE,EAAE,EAAE,GAAGxB,EAAET,GAAGQ,EAAE,EAAEX,EAAE,EAAED,EAAEU,EAAE,EAAEJ,EAAE8D,EAAG,EAAErD,IAAGL,EAAE,IAAI,EAAEV,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGgC,EAAE,EAAE,EAAE,GAAGI,GAAEhC,GAAGD,EAAE,EAAEY,GAAE,EAAET,EAAEoB,GAAE,EAAE,EAAE0C,EAAG,EAAEpE,EAAEa,GAAGD,EAAE,IAAI,EAAEN,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEI,GAAGgB,GAAEtB,GAAG,EAAED,EAAE,EAAEO,EAAE,EAAET,EAAE,EAAE,EAAEY,EAAE,EAAE,IAAI,EAAEZ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEe,GAAE,EAAEA,GAAE,EAAE,EAAEG,GAAE,EAAEnB,EAAE4B,GAAEA,GAAE,EAAElB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEV,EAAEoE,EAAG,EAAE3C,GAAEzB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEW,IAAIA,EAAEP,GAAG,EAAE4B,EAAE,EAAEhC,EAAE4D,GAAG,EAAEnC,GAAE,EAAE,IAAI,EAAEzB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAEJ,EAAE,EAAEuE,EAAG7C,GAAEY,GAAEjB,GAAEgD,GAAG,EAAE,EAAE,EAAEjC,GAAGI,GAAEjC,GAAG,EAAE6B,EAAE,EAAEpC,GAAG,EAAEU,EAAE,EAAE,GAAGR,EAAEA,EAAE,EAAE,IAAI,EAAEQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEV,EAAEuE,EAAGvE,EAAE,EAAE2B,GAAE,CAAC,EAAE,GAAGA,GAAEpB,GAAGH,EAAE,EAAE,EAAEjB,IAAIc,EAAED,EAAEC,EAAE,KAAK,EAAED,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGI,GAAGH,EAAEA,EAAE2D,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG9B,GAAE,EAAEQ,GAAE5B,EAAET,EAAEiD,GAAG,EAAExC,EAAE,EAAEA,IAAI,EAAET,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEsE,EAAGtE,EAAEK,EAAEF,EAAEyB,GAAE,EAAE,EAAE,EAAEL,IAAGH,GAAEd,GAAG,EAAEiB,GAAEvB,EAAEO,EAAE,GAAGJ,EAAEI,EAAEP,EAAE,KAAK,EAAEO,IAAI,EAAE,EAAE,EAAE,EAAE,EAAER,EAAEuE,EAAGvE,EAAEI,EAAEuB,GAAE,EAAE,EAAE,EAAE,GAAG,EAAEjB,IAAIA,EAAEH,GAAG,EAAED,EAAEL,EAAED,EAAEsC,GAAE,EAAErC,EAAEsE,EAAG7C,GAAEzB,EAAEuB,GAAEH,IAAGG,GAAEvB,IAAI,EAAED,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEQ,GAAGuD,GAAGxD,GAAG,EAAEoB,GAAE1B,EAAEqC,GAAE,GAAG9B,EAAEJ,EAAEH,EAAE,KAAK,EAAEG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEH,EAAEsE,EAAGvE,EAAEQ,EAAEE,EAAE,EAAE,CAAC,EAAE,GAAGA,EAAEH,GAAGqB,GAAE,EAAE,EAAExC,IAAIY,EAAEC,EAAEkC,EAAE,KAAK,EAAElC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEiC,IAAG9B,GAAGJ,EAAEA,EAAEhB,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEqF,GAAGhD,GAAEtC,EAAEiB,EAAE,EAAEqB,GAAE,EAAEA,KAAI,EAAEtC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE2C,GAAEzB,EAAE4B,GAAEnB,EAAEA,EAAEV,EAAEuB,GAAEnB,EAAEH,EAAEsE,EAAG9D,EAAEI,EAAEG,EAAEuB,GAAE,CAAC,EAAE,GAAGnC,EAAEG,GAAGa,GAAE,EAAE,EAAEuC,KAAK3D,EAAEC,EAAEW,EAAE,KAAK,EAAEX,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGQ,GAAGT,EAAEA,EAAEgD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGd,GAAE,EAAEd,GAAER,EAAE7B,EAAEiB,EAAE,EAAEY,EAAE,EAAEA,IAAI,EAAEZ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEa,EAAEZ,EAAED,EAAE,EAAEuE,EAAGvE,EAAEoC,EAAE3B,EAAE+B,GAAE,EAAE,EAAE/B,EAAER,EAAEM,EAAE,EAAET,GAAE8C,GAAG,EAAE9C,GAAE,GAAGG,EAAEI,EAAEoB,GAAE,KAAK,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEI,EAAE,EAAE,GAAGJ,EAAEJ,KAAK,GAAGA,EAAEA,EAAED,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEyB,GAAExB,EAAEA,GAAGY,EAAEA,EAAE,EAAET,EAAEmE,EAAGtE,EAAE,EAAEG,EAAE,EAAE,EAAE,GAAGmC,GAAEhC,GAAGK,EAAE,EAAEH,EAAE8D,EAAG3D,GAAGX,EAAEG,EAAEgB,GAAE,GAAGpB,EAAES,GAAGT,EAAEC,IAAI,EAAEG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEmE,EAAG9D,EAAEC,GAAG,EAAEa,KAAIA,GAAEhB,GAAG,EAAE,EAAEiC,GAAE9B,EAAEH,EAAEK,EAAE,EAAEQ,GAAElB,EAAEA,EAAEN,EAAE,EAAE2E,EAAGlE,EAAEM,EAAEb,GAAE4C,GAAG,CAAC,EAAE1B,EAAEpB,EAAEW,EAAEF,EAAE,EAAE,EAAEU,EAAEiD,GAAG,EAAE,IAAIrD,EAAEO,GAAEqC,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG3D,EAAE,EAAEe,EAAE,GAAGf,EAAES,EAAEM,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAET,EAAEqE,EAAG3E,EAAEM,EAAE,EAAEe,EAAE,EAAE,EAAE,GAAG,EAAEG,KAAIA,GAAEb,GAAG,EAAEF,EAAEkE,GAAI,EAAErE,EAAE,EAAE,GAAGG,EAAEW,GAAGlB,GAAE,IAAI,EAAEI,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAES,GAAG+B,GAAGnC,GAAG,EAAEW,GAAEb,EAAE,EAAE6D,KAAKnD,EAAEnB,KAAK,GAAGA,EAAEA,EAAES,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEU,EAAE,GAAGV,EAAET,EAAEmD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEnD,EAAE2E,EAAGrE,EAAEG,EAAEe,GAAE,EAAE,EAAE,EAAE,EAAEtB,IAAG8C,GAAGrC,GAAG,EAAEU,EAAE,EAAEf,EAAEN,EAAEE,GAAE,EAAE,EAAEF,EAAE,EAAEwB,GAAE,EAAEH,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEP,EAAE,EAAEO,EAAE,GAAGP,EAAE,EAAEE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGD,EAAE4D,EAAG7D,EAAEgB,GAAE,EAAEG,GAAE,EAAE,GAAGwC,GAAG,EAAE,GAAGA,GAAG9D,GAAGc,GAAE,EAAEL,EAAE,EAAEoB,EAAE,IAAI,EAAEzB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE4D,EAAGjD,GAAEa,EAAEP,GAAE8B,GAAG,EAAE,EAAE,GAAGpC,GAAEf,GAAGwB,GAAE,EAAEZ,GAAEvB,EAAE,EAAEuB,GAAE,EAAEO,GAAEZ,EAAEA,EAAE,EAAElB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE2E,EAAG3E,EAAEO,EAAEuB,GAAE,EAAE,CAAC,EAAES,EAAEvC,EAAEW,EAAEJ,EAAE,EAAE,EAAEH,EAAEb,EAAE,EAAE,IAAIc,EAAEA,EAAE2D,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGhE,EAAE,EAAE,EAAEkE,IAAI7D,GAAGL,EAAEK,EAAEE,EAAE,KAAK,EAAEF,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE2B,GAAE5B,EAAEJ,EAAEyC,EAAE,EAAErC,EAAE,EAAEA,IAAI,EAAEqC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEzC,EAAE2E,EAAG3E,EAAEM,EAAED,EAAE2C,GAAG,EAAE,EAAE,EAAEN,IAAGjB,GAAEd,GAAG,EAAEwB,GAAEnC,EAAEA,GAAGM,EAAEM,EAAEZ,EAAE,GAAGO,EAAEA,EAAE,EAAED,IAAI,EAAEM,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEP,EAAEsE,EAAG3E,EAAEuC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEnC,IAAIA,EAAEO,GAAG,EAAE4B,EAAEvC,EAAEK,EAAE2B,GAAE,EAAEhC,EAAE2E,EAAG/D,EAAEZ,EAAEmC,GAAEV,IAAGU,GAAEnC,IAAI,EAAEK,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEE,GAAGyC,GAAGrC,GAAG,EAAE+B,GAAE1C,EAAEM,EAAE,GAAGN,EAAEM,EAAEN,EAAE,KAAK,EAAEM,IAAI,EAAE,EAAE,EAAE,EAAE,EAAED,EAAEsE,EAAG3E,EAAEK,EAAED,EAAE,EAAE,CAAC,EAAE,GAAGQ,EAAED,GAAG6B,EAAE,EAAE,EAAEyB,KAAK7D,EAAEC,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGE,GAAGH,EAAEA,EAAEiD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGJ,GAAG,EAAEJ,GAAGb,GAAE5B,EAAEiC,GAAE,EAAEL,GAAE,EAAEA,KAAI,EAAE5B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEqB,GAAEpB,EAAEyB,GAAE1B,EAAE6B,GAAE1B,EAAEF,EAAEsE,EAAGrD,GAAEpB,GAAEsB,GAAEsB,GAAG,CAAC,EAAE,GAAGtB,GAAEb,GAAGkD,GAAG,EAAE,EAAEjC,IAAGvB,IAAI,GAAGD,EAAEC,EAAE0C,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAExC,EAAE,GAAGH,EAAEA,EAAEM,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEiE,EAAG,EAAEvE,EAAE,EAAEsB,GAAE,EAAE,EAAEA,GAAE,EAAEf,EAAED,EAAE,EAAE,EAAEO,EAAEU,GAAE,EAAE,GAAG,EAAEd,EAAEgB,GAAE,KAAK,EAAEhB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAEX,GAAE,EAAE,EAAEwB,GAAE,EAAE,EAAET,EAAE,EAAE,EAAEP,EAAE,EAAEY,GAAE,EAAET,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE8D,EAAG,EAAEtE,EAAEmB,GAAE,EAAE,EAAE,EAAE,EAAEjB,GAAGoB,GAAEhB,GAAG,EAAEkB,GAAE,EAAE,EAAE4B,KAAK,EAAErD,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAEgC,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEZ,GAAE,EAAE,GAAGd,EAAEA,EAAE,EAAEH,EAAEoE,EAAG,EAAEjD,GAAE,EAAE,EAAE,EAAE,EAAEiD,EAAGpE,EAAEuB,IAAG,EAAEG,KAAIA,GAAEtB,GAAG,EAAE,EAAEmC,GAAG,EAAEnC,EAAEe,GAAE,EAAEE,GAAE,EAAE,EAAE+C,EAAGnE,EAAEK,EAAEX,GAAEyC,GAAE,CAAC,EAAE,EAAEyB,IAAIhE,EAAEO,GAAG,EAAE,EAAEQ,IAAId,EAAE,EAAEsD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGnD,GAAGH,EAAEA,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGyB,GAAE,EAAEf,EAAEN,EAAER,EAAEiD,GAAG,EAAEzC,EAAE,EAAEA,IAAI,EAAER,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEI,EAAE,EAAEP,GAAEE,EAAE,GAAGC,EAAEsE,EAAGtE,EAAE0B,GAAEvB,EAAE2D,GAAG,EAAE,GAAG5C,GAAE,EAAE,GAAGA,GAAEZ,GAAGO,EAAE,EAAEd,EAAE,EAAEI,EAAEmE,EAAGnE,EAAE,EAAEC,GAAGA,EAAE,IAAI,EAAEJ,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGH,GAAE,EAAE,EAAE,GAAGyC,GAAEhC,GAAGE,EAAE,EAAEA,EAAE,EAAEL,EAAEW,EAAE,EAAEd,EAAEsE,EAAG,EAAEtE,EAAEkB,IAAGL,EAAE,IAAI,EAAEV,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEC,GAAGP,GAAES,GAAG,EAAEQ,EAAE,EAAEd,EAAED,EAAE,EAAEmB,GAAE,EAAE,IAAI,EAAEnB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEwB,GAAE,EAAEA,GAAE,GAAGnB,EAAE,EAAEiB,GAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEtB,EAAEuE,EAAGlE,EAAEgB,GAAE,EAAEb,EAAE,EAAE,EAAE,GAAGmB,GAAEpB,GAAGqB,GAAE,EAAEA,GAAE,EAAE5B,EAAEyC,GAAG,EAAEpB,GAAE,EAAE,IAAI,EAAErB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEJ,EAAEY,EAAEN,EAAEA,EAAED,EAAEL,EAAE2E,EAAG3D,EAAEI,EAAEoB,EAAEI,GAAE,EAAE,EAAE,EAAEvB,GAAGwB,GAAGlC,GAAG,EAAEK,EAAEhB,EAAEc,EAAE,GAAGT,EAAES,EAAEd,EAAE,KAAK,EAAEc,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE6D,EAAGtE,EAAEU,EAAE0D,GAAG,EAAE,CAAC,EAAEpD,EAAErB,EAAEW,EAAEI,EAAE,EAAE,EAAEL,EAAE6D,GAAG,EAAE,IAAI7D,EAAEc,GAAEgC,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGxD,EAAE,EAAEU,EAAE,GAAGV,EAAEU,EAAEK,EAAE,KAAK,EAAEL,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEJ,EAAEqE,EAAG3E,EAAEM,EAAE,EAAEJ,GAAE,EAAE,EAAE,GAAGsB,GAAEb,GAAGC,EAAE,EAAEG,EAAE4D,GAAI,EAAErE,EAAE,EAAE,GAAGS,EAAEM,GAAGT,EAAE,IAAI,EAAEN,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEI,GAAGU,EAAET,GAAG,EAAE,EAAE0D,KAAK3D,EAAEV,KAAK,GAAGA,EAAEA,EAAEe,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEb,GAAE,GAAGQ,EAAEV,EAAEkD,EAAG,KAAK,EAAEA,IAAK,EAAE,EAAE,EAAE,EAAE,EAAElD,EAAE2E,EAAGrE,EAAEI,EAAEc,GAAE,EAAE,EAAE,EAAE,EAAEZ,GAAGgC,GAAEjC,GAAG,EAAEa,GAAExB,EAAEqB,EAAE,GAAGT,EAAE,EAAEZ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE2E,EAAG/D,EAAEG,EAAEK,EAAE,EAAE,CAAC,EAAE,GAAGL,EAAEJ,GAAGc,GAAE,EAAE,EAAEsC,KAAK/D,EAAE,EAAEgC,GAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEiC,IAAI3D,GAAGN,EAAEA,EAAEoD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEU,GAAG1C,EAAEpB,EAAEqD,GAAG,EAAEjC,EAAE,EAAEA,IAAI,EAAEiC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEb,EAAE,EAAEV,GAAE9B,EAAE,EAAE2E,EAAGnE,EAAEW,EAAEI,GAAEoB,GAAE,CAAC,EAAE,GAAGnC,EAAEG,GAAGwB,GAAE,EAAE,EAAEqC,KAAKxE,EAAE,EAAEuC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE+B,IAAInD,GAAGnB,EAAEA,EAAEuD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEhB,EAAEhB,GAAEvB,EAAEmD,GAAG,EAAE5B,GAAE,EAAEA,KAAI,EAAE4B,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEhB,GAAE,EAAE,EAAEwC,EAAG3E,EAAEgB,EAAEG,EAAE0B,GAAG,EAAE,EAAEA,GAAG,EAAElC,EAAEX,EAAE,EAAE,EAAEsB,GAAEW,GAAE,EAAEhB,EAAE,EAAEV,EAAEU,EAAE,EAAED,EAAE,EAAE,IAAI,EAAET,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEsC,GAAG,EAAE,EAAEvB,GAAE,GAAGf,EAAE,EAAEP,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEQ,EAAEmE,EAAGpE,EAAE4B,GAAE,EAAE3B,EAAE,EAAE,EAAE,GAAGyB,GAAEtB,GAAGY,GAAE,EAAEJ,EAAE,EAAEX,EAAE+B,EAAE,EAAEJ,GAAEwC,EAAG,EAAE3E,EAAE6C,IAAItB,GAAE,IAAI,EAAEf,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEmE,EAAGxC,GAAEL,IAAGe,GAAGlC,GAAGL,EAAE,EAAE,EAAEqC,GAAE,EAAEhC,EAAE4B,EAAE,EAAEjC,EAAE,EAAEN,EAAE0D,GAAG,EAAEiB,EAAG1D,EAAEY,GAAEb,EAAEW,GAAE,CAAC,EAAE,EAAET,GAAGF,EAAEL,GAAG,EAAE,IAAIM,EAAEJ,KAAK,GAAGA,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG+C,GAAG,EAAE,EAAEG,IAAIlD,GAAGb,EAAEA,EAAEa,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEI,EAAEC,EAAElB,EAAEoD,GAAG,EAAElC,EAAE,EAAEA,IAAI,EAAEkC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEpD,EAAE2E,EAAG3E,EAAE0C,GAAE7B,EAAEmC,GAAG,EAAE,EAAE,EAAElC,GAAGe,GAAElB,GAAG,EAAEG,EAAEd,EAAE,GAAGA,EAAEK,EAAEL,EAAE,KAAK,EAAEK,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEW,EAAEA,EAAE,EAAEX,EAAEsE,EAAG,EAAE3E,EAAEK,EAAE,EAAE,EAAE,EAAE,GAAGsB,GAAEhB,GAAGO,EAAE,EAAEL,EAAE,EAAER,EAAEY,EAAE,EAAE,EAAE0D,EAAG,EAAE7D,EAAEe,IAAGX,EAAE,IAAI,EAAEb,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEW,GAAGc,GAAEnB,GAAG,EAAEK,EAAE,EAAEC,EAAE,EAAEjB,EAAE,EAAE,EAAE6B,GAAE,EAAE,IAAI,EAAE7B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEM,EAAE,EAAE,GAAGQ,EAAE,EAAEyB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEzB,EAAE0B,EAAEA,EAAE,EAAEzB,EAAE4D,EAAG,EAAE,EAAE5D,EAAE,EAAE,EAAE,GAAGiC,GAAGrC,GAAGS,EAAE,EAAEA,EAAE,EAAEL,EAAE+C,GAAG,EAAEpB,GAAE,IAAI,EAAE3B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE4D,EAAGjD,GAAEM,GAAEP,GAAEqB,GAAG,EAAE,EAAE,EAAElB,IAAGkB,GAAGnC,GAAG,EAAEe,GAAE,EAAE,GAAG,EAAEjB,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAEmB,GAAE,EAAE,EAAE+C,EAAG,EAAEvE,EAAE,EAAE2B,GAAE,CAAC,EAAEA,GAAE,EAAEpB,EAAEL,EAAE,EAAE,EAAEiB,GAAE2C,GAAG,EAAE,IAAIlE,EAAEmB,EAAEsB,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE4B,IAAIrE,GAAG,EAAEA,EAAEM,EAAE,KAAK,EAAEN,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEmB,EAAEf,EAAE,EAAE8C,EAAG,EAAE9C,EAAE,EAAEA,IAAI,EAAE8C,IAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEyB,EAAG,EAAE3D,EAAEhB,EAAE8B,GAAE,EAAE,EAAE,EAAET,GAAGE,GAAEZ,GAAG,EAAEK,EAAE,EAAEJ,EAAE,GAAGZ,EAAEY,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEN,EAAEqE,EAAG3E,EAAEM,EAAEyB,GAAE,EAAE,EAAE,EAAE,GAAGA,GAAEpB,GAAGP,EAAE,EAAEe,EAAE,EAAEb,EAAEa,EAAE,EAAE,EAAEwD,EAAGvE,EAAE,EAAEY,EAAEO,IAAGP,EAAE,IAAI,EAAEV,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEM,GAAGkD,GAAGnD,GAAG,EAAEC,EAAE,EAAES,EAAE,GAAGjB,EAAEJ,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE2E,EAAGvE,EAAEE,EAAEyB,GAAE,EAAE,CAAC,EAAE,GAAGR,GAAEZ,GAAG+B,GAAE,EAAE,EAAE0B,KAAKpE,EAAE,EAAEoB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGd,GAAGN,EAAEA,EAAE2D,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGE,GAAG,EAAEM,GAAGpC,GAAE/B,EAAE+C,GAAG,EAAEhB,GAAE,EAAEA,KAAI,EAAE/B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEgC,GAAE,EAAEP,GAAEzB,EAAE8B,GAAExB,EAAE,EAAEqE,EAAGtE,EAAEY,EAAEU,GAAEE,GAAE,CAAC,EAAE,EAAE2C,IAAIlE,EAAEK,GAAG,EAAE,EAAET,KAAIF,EAAE,EAAEuD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEgB,IAAIlE,GAAGL,EAAEA,EAAEU,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEmB,GAAEnB,EAAEV,EAAEwD,GAAG,EAAE9C,EAAE,EAAEA,IAAI,EAAE8C,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEtD,GAAE,EAAEe,EAAEX,EAAE,EAAEqE,EAAG3E,EAAE0B,GAAErB,EAAEyC,GAAG,EAAE,EAAEpB,GAAE,EAAEf,EAAEN,EAAE,EAAEL,EAAE,EAAE,EAAEsB,GAAEuB,GAAG,EAAE,GAAG,EAAEtC,EAAE4B,GAAE,KAAK,EAAE5B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAEe,GAAE,EAAE,EAAE,EAAEtB,EAAE,EAAE,GAAGM,EAAE,EAAED,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAEJ,GAAEA,GAAE,EAAE,EAAEyE,EAAG,EAAE,EAAE1D,EAAE,EAAE,EAAE,GAAG,EAAEP,IAAIA,EAAEC,GAAG,EAAEM,EAAEjB,EAAE,EAAE6B,GAAE,EAAEA,GAAE,EAAE7B,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE0B,GAAEiD,EAAG3E,EAAEK,EAAEqB,GAAE,EAAE,EAAE,EAAE,EAAEiD,EAAGjD,GAAED,IAAG,EAAEK,KAAIA,GAAEnB,GAAG,EAAE,EAAEgB,GAAE3B,EAAEW,EAAEwB,GAAE,EAAEnC,EAAE2E,EAAGpE,EAAEC,EAAEc,GAAEW,GAAE,CAAC,EAAE,GAAG1B,EAAEI,GAAGiD,GAAG,EAAE,EAAE1C,IAAIb,EAAEL,EAAE0D,GAAG,KAAK,EAAE1D,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAET,GAAGiB,GAAGH,EAAEA,EAAEQ,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEoB,GAAEpB,EAAER,EAAE2D,GAAG,EAAEnD,EAAE,EAAEA,IAAI,EAAEmD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE9C,EAAElB,EAAEsB,GAAEf,EAAEF,EAAEsE,EAAGtE,EAAEmB,GAAEhB,EAAEoC,GAAE,EAAE,EAAE,GAAGpB,GAAEb,GAAGiB,GAAE,EAAErB,EAAEP,EAAEK,EAAEI,EAAE,EAAET,GAAGQ,EAAEmE,EAAG3E,EAAEkB,GAAGT,EAAET,IAAI,EAAEK,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGiB,GAAE,EAAE,GAAGW,GAAE,EAAE,GAAGA,GAAEtB,GAAGE,EAAE,EAAEK,EAAElB,EAAEA,EAAE2E,EAAG3E,EAAEK,EAAEmB,IAAGF,GAAEtB,IAAI,EAAEQ,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEC,GAAGoC,GAAGlC,GAAG,EAAEa,GAAExB,EAAE4B,GAAE5B,EAAEO,EAAEP,EAAE,EAAEyB,GAAE,EAAEzB,IAAI,EAAEO,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEoB,GAAE,EAAE,EAAE,GAAGtB,EAAEL,EAAEmC,GAAE,KAAK,EAAEnC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEuB,GAAEA,GAAE,EAAEhB,EAAEoE,EAAGtE,EAAE2B,GAAEhC,EAAE,EAAE,EAAE,EAAE,GAAG8C,GAAGnC,GAAGoB,GAAE,EAAElB,EAAEb,EAAEO,EAAE4D,GAAG,EAAE,EAAEQ,EAAG3E,EAAEmC,GAAER,IAAGI,GAAE/B,IAAI,EAAEO,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEoB,GAAE3B,EAAEW,EAAEwB,GAAE,EAAEnC,EAAE,EAAE,EAAEE,GAAE4B,GAAE,EAAE5B,GAAE,EAAEI,EAAEoB,GAAE,EAAEA,GAAE,EAAE,IAAI,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEqE,EAAG,EAAE3E,EAAE,EAAEU,EAAE,CAAC,EAAEJ,EAAEN,EAAEW,EAAE,EAAE,EAAE,EAAEW,GAAE9B,EAAE,EAAE,IAAIiB,EAAES,EAAE9B,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGY,EAAE,EAAE,EAAEyD,IAAIhD,GAAGT,EAAE,EAAES,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEqB,GAAEpB,EAAEV,EAAEoC,GAAE,EAAE1B,EAAE,EAAEA,IAAI,EAAE0B,KAAI,EAAE,EAAE,EAAE,EAAE,EAAElB,EAAE,EAAEI,GAAEhB,EAAE,EAAEqE,EAAGvD,EAAEmB,EAAEG,GAAEC,GAAE,EAAE,EAAE,EAAEH,GAAGG,GAAEhC,GAAG,EAAES,EAAE,EAAE,GAAG,EAAEN,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAEd,EAAE2E,EAAG3E,EAAEY,EAAEH,EAAEqD,GAAG,EAAE,EAAEtB,EAAE,EAAE,EAAE,GAAGD,EAAE5B,GAAG,EAAEL,EAAE,EAAEN,EAAE,EAAE,EAAES,EAAEkE,EAAG,EAAEzD,GAAGN,EAAE,IAAI,EAAEZ,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGsB,GAAE,EAAE,EAAE,GAAGoB,GAAE/B,GAAGD,EAAE,EAAEA,EAAE,EAAED,EAAEqB,GAAE,EAAE,EAAE6C,EAAG,EAAE3E,EAAEuC,GAAGrB,EAAE,IAAI,EAAET,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEG,GAAGgC,GAAEjC,GAAG,EAAEW,GAAE,EAAEiB,EAAE,GAAG3B,EAAEN,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEqE,EAAGlE,EAAEG,EAAE8B,GAAE,EAAE,CAAC,EAAE,EAAE2B,IAAIvC,GAAEnB,GAAG,EAAE+B,GAAE,EAAEoB,GAAG,EAAEZ,EAAG,EAAE,EAAE5C,EAAE,EAAE,IAAI,EAAE4C,IAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEyB,EAAG5D,EAAED,EAAE0B,EAAEQ,GAAG,CAAC,EAAE,GAAGvC,EAAEE,GAAGkB,GAAE,EAAE,EAAEyC,KAAKtE,EAAE,EAAEiB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEgC,IAAInC,GAAGd,EAAEA,EAAEmD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEX,EAAEzB,EAAEf,EAAEqC,GAAE,EAAEtB,EAAE,EAAEA,IAAI,EAAEsB,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEpB,EAAER,EAAET,EAAE2E,EAAG3E,EAAEwB,GAAEV,EAAE+B,GAAG,EAAE,EAAE,EAAExB,GAAGwB,GAAGlC,GAAG,EAAEkB,GAAE7B,EAAE,GAAGS,EAAEL,EAAEJ,EAAE,KAAK,EAAEI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEa,EAAEA,EAAE,EAAEH,EAAE6D,EAAG,EAAElE,EAAEL,EAAE,EAAE,EAAE,EAAE,GAAG4C,GAAGrC,GAAGI,EAAE,EAAES,GAAE,EAAEV,EAAE0B,EAAE,EAAE,GAAGnB,EAAE,IAAI,EAAEP,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGR,EAAE,EAAES,EAAE,GAAGT,EAAE,EAAEwD,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEtB,EAAE,EAAEmC,EAAGrE,EAAE6B,GAAE,EAAER,GAAE,EAAE,EAAEK,GAAE,EAAErB,EAAE,EAAEgE,EAAGnE,EAAEoB,GAAEH,GAAEQ,GAAE,CAAC,EAAE,GAAG7B,EAAEO,GAAGK,EAAE,EAAE,EAAEsB,KAAItC,EAAE,EAAEmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGX,GAAGR,EAAEb,EAAEa,EAAE,KAAK,EAAEb,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG+C,GAAE,EAAET,GAAET,EAAEhB,EAAEsD,GAAG,EAAEtC,EAAE,EAAEA,IAAI,EAAEhB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEmB,EAAE,EAAES,GAAExB,EAAEJ,EAAE2E,EAAG3E,EAAEoB,EAAEZ,EAAEmC,GAAE,EAAE,EAAE,GAAGvB,EAAET,GAAGe,GAAE,EAAEtB,EAAE,EAAEJ,EAAEE,GAAE,EAAE,GAAGM,EAAEmE,EAAG,EAAExD,GAAGjB,GAAE,IAAI,EAAEF,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG4B,GAAE,EAAE,GAAGH,GAAE,EAAE,GAAGA,GAAEd,GAAGK,EAAE,EAAEA,EAAE,EAAE,EAAE2D,EAAG,EAAE3E,EAAEoB,GAAGD,EAAE,IAAI,EAAEX,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEN,IAAGyC,GAAEhC,GAAG,EAAET,GAAE,EAAEkB,EAAE,GAAG,EAAEhB,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE4B,GAAE,EAAEN,GAAE,GAAGtB,EAAE,KAAK,GAAG,EAAE,EAAEoC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAExC,EAAE2E,EAAG,EAAEjC,GAAEZ,GAAE,EAAE,EAAE,EAAE,EAAEf,GAAGe,GAAEnB,GAAG,EAAEiB,GAAE5B,EAAE,EAAER,IAAIQ,EAAEM,EAAEN,EAAE,KAAK,EAAEM,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEoC,GAAE1C,EAAEA,EAAEZ,EAAE,EAAEkB,EAAEN,EAAEwC,EAAEA,EAAE,EAAExC,IAAI,EAAEZ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEY,EAAE2E,EAAGrE,EAAE0B,GAAE,EAAE,EAAE,EAAE,EAAEN,IAAGM,GAAErB,GAAG,EAAEe,GAAE,GAAGX,EAAE,EAAEf,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE2E,EAAG5D,EAAEa,GAAEE,GAAE,EAAE,CAAC,EAAEF,GAAEtB,EAAEK,EAAEL,EAAEqE,EAAGvE,EAAEI,EAAEY,EAAEK,GAAE,CAAC,EAAE,EAAEP,GAAGV,EAAEG,GAAG,EAAE,EAAE2D,KAAKlE,EAAEE,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEqD,IAAIrD,GAAGN,EAAEA,EAAE+C,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAErB,GAAEZ,EAAEd,EAAEgD,GAAG,EAAElC,EAAE,EAAEA,IAAI,EAAEkC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEhC,EAAEd,EAAEmB,GAAEjB,EAAE,EAAEe,GAAEI,GAAE,EAAE,GAAGrB,EAAED,EAAE8B,GAAE,KAAK,EAAE9B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEkB,GAAEjB,EAAEuB,GAAE8C,EAAGnD,GAAEK,GAAER,EAAEwB,GAAG,EAAE,EAAErC,EAAEmE,EAAGvE,EAAEyB,GAAEnB,GAAGmC,GAAGlC,GAAG,EAAE,EAAEa,GAAE,EAAE,EAAE,GAAGsC,GAAGnD,GAAG,EAAED,EAAEJ,EAAEE,EAAEF,EAAE,EAAEA,EAAEqE,EAAGrE,EAAEc,GAAGC,EAAEf,IAAI,EAAEE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGiB,GAAE,EAAE,EAAE,GAAGL,EAAET,GAAGO,EAAE,EAAEO,GAAE,GAAGpB,EAAEC,EAAEwB,GAAE,KAAK,EAAExB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEsB,GAAE,EAAE,EAAErC,IAAI4C,GAAE9B,KAAK,GAAGA,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGD,GAAGC,EAAEA,EAAE2D,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGJ,GAAG,EAAEO,GAAGjD,EAAEb,EAAEqD,GAAG,EAAE5B,GAAE,EAAEZ,IAAI,EAAEb,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE4B,GAAE,EAAEN,GAAEtB,EAAE,EAAEsE,EAAGpE,EAAEgB,GAAEC,GAAEsB,GAAG,CAAC,EAAEvC,EAAEF,EAAEM,EAAE,EAAE,EAAE,EAAEQ,EAAEqD,GAAG,EAAE,IAAItD,EAAEF,EAAEuC,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGlD,EAAE,EAAE,EAAEoD,IAAIvC,GAAGb,EAAE,EAAEa,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEM,GAAER,EAAEX,EAAE+B,GAAE,EAAEpB,EAAE,EAAEA,IAAI,EAAEoB,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEjB,EAAE,EAAE,EAAEwD,EAAGtE,EAAEiB,GAAEJ,EAAE0B,GAAE,EAAE,EAAErB,GAAE,EAAEZ,EAAEN,EAAE,EAAEa,EAAE,EAAE,EAAED,EAAE4B,GAAG,EAAE5B,EAAE,EAAER,EAAEoB,GAAE,EAAEP,GAAE,EAAE,IAAI,EAAEb,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAES,EAAE,EAAE,GAAGT,EAAE,EAAEJ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEI,EAAEU,EAAEA,EAAE,EAAED,EAAEyD,EAAG,EAAE,EAAEpE,EAAE,EAAE,EAAE,GAAGsC,GAAGlC,GAAGK,EAAE,EAAEa,GAAE8C,EAAG3D,GAAG,EAAEE,EAAEM,GAAE,GAAGnB,EAAEkB,IAAGlB,EAAE,IAAI,EAAEa,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEyD,EAAG,EAAE9C,GAAEF,IAAGA,GAAEhB,GAAGP,EAAE,EAAE,EAAE0C,GAAG1C,EAAEO,EAAEa,GAAE,EAAER,EAAEZ,EAAEA,EAAEuE,EAAG7D,EAAEG,EAAEK,GAAE0B,GAAG,CAAC,EAAE,EAAEC,IAAInC,EAAEH,GAAG,EAAE,EAAEoB,KAAIxB,EAAEH,EAAEiC,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE+B,IAAIvD,GAAGN,EAAEA,EAAEM,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAES,GAAEL,EAAEV,EAAEoD,GAAG,EAAE1C,EAAE,EAAEA,IAAI,EAAE0C,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEpD,EAAEoE,EAAGpE,EAAEL,GAAEW,EAAE8B,GAAE,EAAE,EAAE,EAAEJ,GAAGhB,GAAEZ,GAAG,EAAET,GAAEK,EAAEK,EAAE,GAAGL,EAAEK,EAAEL,EAAE,KAAK,EAAEK,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAE8D,EAAGvE,EAAEG,EAAE,EAAEO,EAAE,EAAE,EAAE,GAAG6B,GAAEhC,GAAGM,EAAE,EAAEH,EAAEV,EAAES,EAAES,GAAE,EAAElB,EAAEuE,EAAG1D,EAAEb,EAAEF,GAAEqB,IAAGrB,GAAEE,IAAI,EAAES,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAED,GAAGgC,GAAEjC,GAAG,EAAEM,EAAEb,EAAEkB,GAAElB,EAAEG,EAAEH,EAAE,EAAEmB,GAAE,EAAEnB,IAAI,EAAEG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAES,EAAE,EAAE,GAAGT,EAAEH,EAAEoB,GAAE,KAAK,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEwB,GAAEA,GAAE,EAAEhB,EAAE+D,EAAGpE,EAAE0B,GAAE7B,EAAE,EAAE,EAAE,EAAE,GAAG2B,GAAEpB,GAAGmB,GAAE,EAAEd,EAAEZ,EAAEQ,EAAEuD,GAAG,EAAE/D,EAAEuE,EAAG7C,GAAE1B,EAAEoB,GAAEsB,IAAItB,GAAEpB,IAAI,EAAEQ,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEgB,IAAGkB,GAAGnC,GAAG,EAAEiB,GAAExB,EAAEG,EAAE,GAAGH,EAAEG,EAAEH,EAAE,KAAK,EAAEG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEwB,GAAE,EAAE4C,EAAGvE,EAAEQ,EAAEmB,GAAE,EAAE,CAAC,EAAEiB,GAAG,EAAET,EAAE3B,EAAED,EAAEC,EAAEP,EAAEA,EAAEC,EAAEA,EAAEqE,EAAGnE,EAAE2B,GAAEV,GAAEqC,GAAG,EAAE,EAAE,EAAEzC,GAAGyC,GAAGnD,GAAG,EAAEU,EAAEf,EAAE,GAAGA,EAAEI,EAAEJ,EAAE,KAAK,EAAEI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEL,EAAEC,EAAED,EAAE,EAAE,EAAEsE,EAAG,EAAE,EAAEvD,EAAE,CAAC,EAAE,GAAGA,EAAET,GAAGC,EAAE,EAAE,EAAE2D,IAAI,IAAI,GAAG/D,EAAEE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEmD,IAAInD,GAAGF,EAAEA,EAAEgD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAErB,GAAEvB,EAAEJ,EAAEuC,GAAG,EAAEnC,EAAE,EAAEA,IAAI,EAAEmC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEvC,EAAEmE,EAAGnE,EAAES,EAAEP,EAAEkC,GAAE,EAAE,EAAE,EAAElB,IAAGD,GAAEd,GAAG,EAAEM,EAAE,GAAGP,EAAEF,EAAEO,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE4D,EAAG,EAAEjE,EAAEU,EAAE,EAAE,EAAE,EAAE,GAAGwB,GAAEjC,GAAGC,EAAE,EAAEQ,EAAE,EAAEL,EAAEoB,GAAE,EAAE3B,EAAEmE,EAAG,EAAEnE,EAAEiB,IAAGC,GAAE,IAAI,EAAEX,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEE,GAAGkB,GAAExB,GAAG,EAAEc,GAAE,EAAEjB,EAAEE,EAAE,EAAEO,EAAE,EAAEa,GAAE,EAAE,IAAI,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEJ,EAAEM,EAAEP,EAAE,EAAEc,EAAEQ,GAAE,EAAE,GAAG,EAAElB,EAAEoB,GAAE,KAAK,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,GAAGS,EAAEA,EAAE,EAAE,EAAEyD,EAAG,EAAE9B,GAAG,EAAE,CAAC,EAAEZ,GAAE,EAAEtB,EAAEQ,EAAE,EAAEd,EAAE,EAAE,EAAEH,GAAEgC,GAAE,EAAE,IAAI5B,EAAEQ,EAAEwC,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAExC,EAAE,GAAG,EAAER,KAAK,GAAGA,EAAED,EAAEC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAED,EAAEsE,EAAG3E,EAAEM,EAAE,EAAE0B,GAAE,EAAE,EAAE,GAAG,EAAEpB,IAAIA,EAAED,GAAG,EAAEkB,GAAE,EAAExB,EAAEK,EAAE,EAAEV,EAAE2E,EAAG3E,EAAE,EAAEmB,EAAEc,IAAGd,EAAE,IAAI,EAAEd,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAES,GAAGkB,GAAErB,GAAG,EAAE,EAAEuD,KAAK,EAAElE,EAAEM,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE2B,GAAE,GAAGvB,EAAE,EAAE+B,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE7B,EAAE+D,EAAGtE,EAAEK,EAAEE,EAAE,EAAE,EAAE,EAAEuD,GAAG,EAAExD,EAAE,EAAEgE,EAAG9D,EAAES,GAAEC,GAAEoB,GAAE,CAAC,EAAE,GAAGtC,EAAEM,GAAG6B,EAAE,EAAE,EAAEyB,KAAK3D,EAAE,EAAEoC,GAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEJ,IAAGzB,GAAGP,EAAEA,EAAE+C,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEb,EAAE1B,EAAE3B,EAAEmB,EAAE,EAAEgB,GAAE,EAAER,IAAI,EAAE3B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEoC,GAAE,EAAET,EAAE6D,EAAGrE,EAAEe,EAAER,EAAEiD,GAAG,EAAE,EAAE,GAAGnB,GAAEhC,GAAGO,EAAE,EAAEA,EAAE,EAAEJ,EAAEL,EAAE,EAAEH,EAAEqE,EAAG,EAAEpD,IAAGF,EAAE,IAAI,EAAEP,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGT,EAAE,EAAE,EAAE,GAAG,EAAEiB,KAAIA,GAAEX,GAAG,EAAEY,GAAE,EAAEjB,EAAEkC,EAAE,EAAEA,EAAE,EAAE,IAAI,EAAElC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAED,EAAE,EAAE,EAAEiC,GAAEC,EAAE,EAAE,IAAI1B,EAAE1B,EAAE4C,GAAE,KAAK,EAAE5C,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGkB,EAAE,EAAEH,GAAE,GAAGG,EAAE,EAAEQ,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE8D,EAAGtE,EAAEO,EAAEuD,GAAG,EAAE,EAAE,EAAE,GAAGpC,GAAEpB,GAAGmB,GAAE,EAAErB,EAAEkE,GAAI9D,EAAE,EAAEI,EAAE,GAAG+B,IAAI,EAAEnC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG0B,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEsB,IAAI5C,EAAEN,GAAG,EAAE,EAAET,KAAIwC,GAAEjC,EAAEsC,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG7C,GAAEG,EAAEqC,GAAE,KAAK,EAAErC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE0B,GAAEA,GAAE,EAAE1B,EAAEsE,EAAG,EAAEzE,GAAEG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEkC,IAAIA,EAAE5B,GAAG,EAAE,EAAEF,GAAGI,EAAER,EAAEQ,EAAE,GAAGJ,EAAE,EAAEI,IAAI,EAAER,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEqC,GAAE,EAAEiC,EAAG,EAAE,EAAE1D,EAAE,CAAC,EAAE+B,GAAG,EAAErB,GAAE,EAAEhB,EAAEM,EAAEb,EAAEyC,GAAGtC,EAAEH,EAAEE,EAAEA,EAAEqE,EAAG7D,EAAES,GAAEiB,EAAEG,GAAE,EAAE,EAAE,EAAEtB,GAAGE,GAAEZ,GAAG,EAAEG,EAAE,EAAER,EAAEY,EAAE,EAAEA,EAAE,EAAE,IAAI,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEd,EAAEuE,EAAG,EAAEvE,EAAE,EAAEkB,GAAE,CAAC,EAAE,GAAGkB,EAAE7B,GAAG4D,GAAG,EAAE,EAAEtC,KAAI,EAAE7B,EAAEoD,GAAG,KAAK,EAAEpD,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEM,EAAE,GAAGH,EAAE,EAAEG,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEiE,EAAGpE,EAAEC,EAAE,EAAE2B,GAAE,EAAE,EAAE,GAAGb,GAAEX,GAAGkC,GAAG,EAAE5B,EAAET,EAAE,EAAES,EAAE,EAAEI,EAAE,EAAEb,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEJ,EAAEuE,EAAGvE,EAAEI,EAAE,EAAEgC,EAAE,EAAE,EAAE,EAAEuB,IAAID,GAAGnD,GAAG,EAAE6B,EAAEpC,EAAE,EAAEM,IAAIN,EAAEgD,GAAGhD,EAAE,KAAK,EAAEgD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE7C,EAAE,GAAGH,EAAEA,EAAEG,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAEmE,EAAG,EAAEvE,EAAE,EAAEkB,GAAE,EAAE,EAAE,GAAG,EAAED,IAAIA,EAAEV,GAAG,EAAEwB,GAAE,EAAE3B,EAAES,EAAE,EAAEK,GAAE,EAAEW,GAAE,EAAE,IAAI,EAAEzB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEW,EAAEgD,GAAG,EAAElD,GAAG,EAAEL,EAAEiB,GAAE,GAAG7B,EAAEA,EAAE,EAAE,IAAI,EAAEY,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE+D,EAAG1D,EAAE,EAAEe,GAAE,CAAC,EAAEA,GAAEtB,EAAEC,EAAEM,EAAE,EAAE,EAAES,GAAE+B,GAAG,EAAE,IAAI7C,EAAEQ,EAAEgB,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG1B,EAAE,EAAES,EAAE,GAAGA,EAAEP,KAAK,GAAGA,EAAEA,EAAEK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEY,GAAEnB,EAAEiE,EAAG/D,EAAEgB,GAAEkB,GAAG,EAAE,EAAE,EAAE1B,EAAE,EAAET,EAAE,EAAE,EAAEO,EAAE,EAAEQ,GAAEhB,EAAEA,EAAEI,EAAE,EAAEc,GAAE,EAAEC,KAAI,EAAEnB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEiE,EAAGjE,EAAEO,EAAEe,GAAE,EAAE,EAAE,EAAE,EAAE4B,IAAI5B,GAAErB,GAAG,EAAE,EAAEQ,IAAIL,EAAEJ,EAAEgD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE5C,EAAE,GAAGG,EAAEL,KAAK,GAAGA,EAAEA,EAAEE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEG,EAAE0D,EAAG/D,EAAEiB,GAAE,EAAET,EAAE,EAAE,EAAE0B,GAAG,EAAEnC,EAAEO,EAAE,EAAEH,EAAE4D,EAAG5D,EAAEU,GAAEK,GAAEc,GAAE,CAAC,EAAEzB,EAAE,EAAER,EAAEkB,GAAEvB,EAAE,EAAE,EAAE4B,GAAE,EAAE,EAAEV,KAAIlB,EAAES,EAAEuC,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGhD,EAAEA,EAAEU,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEV,EAAEuB,GAAEA,GAAE,EAAEb,EAAE2D,EAAG3D,EAAE,EAAEO,GAAE,EAAE,EAAE,GAAGqB,GAAEjC,GAAGX,EAAE,EAAEwB,GAAE,EAAER,EAAE,EAAE,EAAEhB,EAAE2E,EAAG,EAAE5D,GAAGf,EAAEmB,IAAIA,EAAE,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEiD,IAAI7C,EAAET,GAAG,EAAE,EAAEkB,KAAI,EAAE7B,EAAEqD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAExB,GAAE,EAAE,EAAEvB,EAAE,EAAEiB,GAAE,EAAE,IAAI,EAAEjB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEqB,GAAE2C,GAAG,EAAE,IAAIvD,EAAE2B,GAAES,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG7C,EAAE,EAAEoC,GAAE,GAAGpC,EAAE,EAAES,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE4D,EAAGrE,EAAEW,EAAE,EAAEC,EAAE,EAAE,EAAE,GAAGO,GAAEd,GAAGsB,GAAE,EAAEf,EAAEyD,GAAI5D,EAAE,EAAEO,GAAE,GAAG0B,IAAI,EAAEjC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGY,GAAE,EAAE,EAAEG,GAAER,GAAEX,EAAEgB,GAAE,EAAE,EAAEL,GAAE8C,GAAG,EAAE,EAAE1B,KAAIpB,GAAEJ,EAAEyC,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEjB,GAAE,GAAGpB,GAAEhB,EAAEgB,GAAE,KAAK,EAAEhB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEqE,EAAG,EAAErD,GAAE,EAAEG,GAAE,EAAE,EAAE,GAAGA,GAAEd,GAAGgB,GAAE,EAAE,GAAGZ,EAAET,EAAES,EAAE,GAAGG,EAAEA,EAAE,EAAEH,IAAI,EAAET,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEwB,GAAE,EAAE6C,EAAG,EAAE,EAAE7C,GAAE,CAAC,EAAEH,GAAE,EAAEhB,EAAEkC,GAAGhC,EAAE8B,GAAEnC,EAAEA,EAAER,EAAEA,EAAE2E,EAAG3D,EAAEa,GAAEN,GAAEqB,GAAE,EAAE,EAAE,GAAG5B,EAAEL,GAAGQ,EAAE,EAAEA,EAAE,EAAEnB,EAAEwB,GAAE,EAAEK,GAAE,EAAE,IAAI,EAAE7B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEQ,EAAEmE,EAAG,EAAEnE,EAAE,EAAEY,EAAE,CAAC,EAAE,GAAGA,EAAET,GAAG0D,GAAG,EAAE,IAAI,EAAE7D,EAAE0C,EAAG,KAAK,EAAE1C,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGM,EAAE,EAAEF,EAAE,GAAGC,EAAE,EAAED,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE+D,EAAG9D,EAAE8B,GAAE,EAAEtB,EAAE,EAAE,EAAE,GAAGP,EAAEH,GAAGF,EAAE,EAAEe,GAAEf,EAAE,EAAEoC,GAAG,EAAExB,EAAE,EAAEZ,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAED,EAAEmE,EAAGnE,EAAEC,EAAE,EAAEW,EAAE,EAAE,EAAE,EAAE7B,GAAGoD,GAAEhC,GAAG,EAAES,EAAEZ,EAAE,EAAEI,IAAIJ,EAAEwD,GAAGxD,EAAE,KAAK,EAAEwD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEzC,GAAE,GAAGd,EAAED,EAAEK,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEL,EAAEmE,EAAG,EAAElE,EAAE,EAAEK,EAAE,EAAE,EAAE,GAAG,EAAEO,IAAIA,EAAEV,GAAG,EAAEa,GAAE,EAAEhB,EAAEgB,GAAE,EAAEqB,GAAG,EAAE,IAAI,EAAErC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEI,EAAEP,EAAEQ,EAAET,EAAE,EAAEwB,GAAEkB,GAAG,EAAEzC,EAAE,GAAG,EAAEY,EAAES,GAAE,KAAK,EAAET,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEb,EAAEuE,EAAG,EAAEjE,EAAE,EAAEsB,GAAE,CAAC,EAAE,GAAGtB,EAAEC,GAAGsC,GAAG,EAAE,IAAInC,EAAEV,EAAEiC,GAAE,KAAK,EAAEjC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGG,EAAE,EAAEA,EAAEoE,EAAG/D,GAAGC,EAAEA,EAAEC,EAAE,IAAI,EAAED,IAAI,EAAEC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGyB,EAAE,EAAE,EAAEzB,EAAE,EAAEG,EAAEb,EAAE,GAAGQ,EAAED,GAAGkB,GAAE,EAAE,GAAGzB,EAAEG,EAAEY,EAAE,KAAK,EAAEZ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEY,EAAEf,EAAEA,GAAGa,EAAEA,EAAE,EAAEb,EAAEuE,EAAGvE,EAAE,EAAEM,EAAE,EAAE,EAAE,EAAElB,GAAGqC,GAAElB,GAAG,EAAE,IAAID,EAAEN,EAAEhB,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG0B,EAAE,EAAEY,GAAE,GAAGZ,EAAEJ,KAAK,GAAGA,EAAEA,EAAEG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAED,EAAE+D,EAAGpE,EAAEG,EAAE,EAAEE,EAAE,EAAE,EAAEkC,GAAG,EAAEnC,EAAEE,EAAE,EAAEN,EAAEoE,EAAGxC,GAAEK,EAAEP,GAAE6B,GAAG,CAAC,EAAElC,GAAE,EAAEjB,EAAE6B,EAAEnC,EAAE,EAAE,EAAE6D,GAAG,EAAE,EAAEnC,KAAI1B,EAAEE,EAAEkC,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE3B,EAAEE,EAAEA,EAAE,GAAGX,EAAEA,EAAEH,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEY,EAAE6D,EAAG3E,EAAEK,EAAES,EAAE,EAAE,EAAE,EAAE,GAAG8B,GAAEjC,GAAG6B,EAAE,EAAEtC,GAAE,EAAEY,EAAE,EAAE,EAAEd,EAAE2E,EAAG,EAAEpE,GAAGP,EAAE4B,KAAIA,GAAE,IAAI,EAAEd,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE0D,IAAIhC,EAAE7B,GAAG,EAAE,EAAEK,IAAI,EAAEhB,EAAEuD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAExB,GAAE,EAAE,EAAE1B,EAAE,EAAE8B,GAAE,EAAE,IAAI,EAAE9B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEsB,GAAE8B,GAAG,EAAE,IAAIlD,EAAE6B,GAAEN,GAAE,KAAK,EAAEM,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG/B,EAAE,EAAEW,EAAE,GAAGX,EAAE,EAAEE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEoE,EAAGtE,EAAEO,EAAE,EAAEC,EAAE,EAAE,EAAE,GAAG0B,EAAE5B,GAAGkC,GAAG,EAAEhC,EAAE8D,GAAIpE,EAAE,EAAEiB,GAAE,GAAGM,IAAG,EAAEvB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGoB,GAAE,EAAE,EAAEG,GAAE,EAAE,EAAEI,IAAGF,GAAErB,GAAG,EAAE,EAAEK,IAAIiB,GAAEpB,EAAEyC,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGtC,EAAEX,EAAE4B,GAAE,KAAK,EAAE5B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEkC,EAAEA,EAAE,EAAElC,EAAEsE,EAAG,EAAE3D,EAAEX,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEyB,KAAIA,GAAEnB,GAAG,EAAE,GAAGJ,EAAEF,EAAEE,EAAE,GAAGM,EAAEA,EAAE,EAAEN,IAAI,EAAEF,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE2B,GAAE,EAAE2C,EAAG,EAAE,EAAE3C,GAAE,CAAC,EAAEC,GAAE,EAAEtB,EAAEgB,GAAEnB,EAAEA,EAAER,EAAEA,EAAE2E,EAAG7D,EAAEiB,GAAEI,GAAES,GAAE,EAAE,EAAE,GAAG,EAAEhB,KAAIA,GAAEjB,GAAG,EAAET,GAAE,EAAEF,EAAEE,GAAE,EAAEY,EAAE0B,EAAEA,EAAE,EAAE,IAAI,EAAExC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEQ,EAAEmE,EAAG,EAAEnE,EAAEM,EAAE,EAAE,CAAC,EAAE,GAAGiB,GAAEpB,GAAGyD,GAAG,EAAE,EAAE1C,KAAI,EAAElB,EAAEmD,GAAG,KAAK,EAAEnD,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEM,EAAEJ,EAAEA,EAAE,EAAEA,EAAE,EAAE,EAAEW,EAAEA,EAAE,EAAEP,IAAI,EAAEJ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEiE,EAAGjE,EAAEiB,GAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAET,IAAIA,EAAEP,GAAG,EAAEe,GAAE,GAAGZ,EAAE,EAAEC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAED,EAAEN,EAAEmE,EAAGnE,EAAEM,EAAE,EAAEiB,GAAE,EAAE,EAAE,EAAEmC,IAAItB,GAAEjC,GAAG,EAAEoB,GAAEvB,EAAE,EAAEa,IAAIb,EAAEiC,EAAEjC,EAAE,KAAK,EAAEiC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEpB,EAAE,GAAGP,EAAEN,EAAEE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEF,EAAEmE,EAAG,EAAE7D,EAAE,EAAEI,EAAE,EAAE,EAAE,GAAG,EAAEQ,KAAIA,GAAEf,GAAG,EAAEwB,GAAE,EAAE3B,EAAEO,EAAE,EAAEY,GAAE,EAAE,IAAI,EAAEnB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEO,EAAET,EAAE,EAAEW,EAAE6B,GAAG,EAAExC,EAAE,GAAG,EAAEM,EAAEO,EAAE,KAAK,EAAEP,IAAI,EAAE,EAAE,EAAE,EAAE,EAAER,EAAEuE,EAAG,EAAEvE,EAAE,EAAEyB,GAAE,CAAC,EAAE,EAAEgC,IAAIjD,EAAED,GAAG,EAAE,EAAEY,KAAIb,EAAEN,EAAE2C,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE9B,GAAGP,EAAED,EAAEC,EAAE,GAAGK,EAAEA,EAAE,EAAEL,IAAI,EAAED,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEkE,EAAG1D,EAAE,EAAEQ,GAAE,EAAE,EAAEP,EAAE,EAAEP,EAAEM,EAAEb,EAAE,EAAE,EAAEoC,EAAE,EAAE,GAAGpC,EAAEK,EAAEP,GAAE,KAAK,EAAEO,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEU,EAAEf,EAAEA,GAAGa,EAAEA,EAAE,EAAEb,EAAEuE,EAAGvE,EAAE,EAAEQ,EAAE,EAAE,EAAE,EAAEpB,GAAGqC,GAAElB,GAAG,EAAE,EAAEI,IAAIH,EAAER,EAAEhB,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEmC,GAAE,GAAGX,EAAEF,EAAEE,EAAE,KAAK,EAAEF,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEK,EAAE4D,EAAGlE,EAAEG,EAAE,EAAEM,EAAE,EAAE,EAAE4B,GAAG,EAAEnC,EAAED,EAAE,EAAED,EAAEkE,EAAGvD,EAAEI,GAAEmB,GAAEE,GAAG,CAAC,EAAE3C,GAAE,EAAES,EAAEa,GAAElB,EAAE,EAAE,EAAEf,EAAE,EAAE,EAAEmD,KAAIpC,EAAEG,EAAEuD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE1C,GAAE,GAAGhB,EAAEA,EAAEgB,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEJ,EAAEyD,EAAG3E,EAAEM,EAAE,EAAEsB,GAAE,EAAE,EAAE,GAAGoB,GAAGrC,GAAGa,GAAE,EAAEA,GAAE,EAAEN,EAAE,EAAE,EAAElB,EAAE2E,EAAG,EAAElE,GAAGW,EAAE,IAAI,EAAEF,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGhB,GAAE,EAAE,EAAE,EAAEoC,IAAGV,GAAEjB,GAAG,EAAE,EAAEW,KAAI,EAAEnC,EAAEa,EAAE,KAAK,EAAEb,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEmC,GAAE,EAAE,EAAEhB,EAAE,EAAEkC,EAAE,EAAE,IAAI,EAAElC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE2B,GAAEgC,GAAG,EAAE,IAAIxD,EAAEuB,GAAEqB,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG/C,EAAE,EAAEJ,GAAE,GAAGI,EAAE,EAAEG,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEkE,EAAGrE,EAAES,EAAE,EAAEL,EAAE,EAAE,EAAE,GAAGgC,GAAE/B,GAAGgB,GAAE,EAAEjB,EAAEiE,GAAIlE,EAAE,EAAE0B,GAAE,GAAGH,IAAG,EAAEvB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGwB,GAAE,EAAE,EAAER,GAAE,EAAE,EAAE8C,IAAIvC,GAAErB,GAAG,EAAE,EAAET,KAAI+B,GAAEvB,EAAE8C,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGtD,GAAEI,EAAE2B,GAAE,KAAK,EAAE3B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEoC,GAAEA,GAAE,EAAEpC,EAAEqE,EAAG,EAAEzE,GAAEI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEmB,KAAIA,GAAEd,GAAG,EAAE,GAAGF,EAAEH,EAAEG,EAAE,GAAGC,EAAEA,EAAE,EAAED,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE0B,GAAE,EAAE2C,EAAG,EAAE,EAAE3C,GAAE,CAAC,EAAE8B,GAAG,EAAE7B,GAAE,EAAEtB,EAAEkC,GAAGtC,EAAEoC,GAAEnC,EAAED,EAAEP,EAAEA,EAAE2E,EAAGzD,EAAEI,GAAEkB,EAAEQ,GAAG,EAAE,EAAE,GAAG9B,EAAEP,GAAGS,EAAE,EAAEE,GAAE,EAAEtB,EAAEwB,GAAE,EAAEA,GAAE,EAAE,IAAI,EAAExB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEO,EAAEoE,EAAG,EAAEpE,EAAE,EAAEqB,GAAE,CAAC,EAAE,GAAGA,GAAEjB,GAAGiD,GAAG,EAAE,EAAErC,KAAI,EAAEhB,EAAEmD,GAAG,KAAK,EAAEnD,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEK,EAAE,GAAGJ,EAAE,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE+D,EAAGnE,EAAEmC,GAAE,EAAEjB,GAAE,EAAE,EAAE,GAAGN,EAAET,GAAGE,EAAE,EAAEa,GAAE,GAAGb,EAAE,EAAEgC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEtC,EAAEoE,EAAGpE,EAAEM,EAAE,EAAEe,GAAE,EAAE,EAAE,EAAEyC,IAAIrB,GAAGrC,GAAG,EAAEY,GAAEhB,EAAE,EAAEK,IAAIL,EAAE2C,EAAG3C,EAAE,KAAK,EAAE2C,IAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEtC,EAAEL,EAAEC,EAAE,EAAED,EAAEa,EAAEA,EAAE,EAAER,IAAI,EAAEJ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAED,EAAEoE,EAAG,EAAE/D,EAAEL,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEmB,KAAIA,GAAEf,GAAG,EAAEiB,GAAE,EAAErB,EAAEM,EAAE,EAAE2B,EAAE,EAAE,IAAI,EAAEjC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAEH,EAAE,EAAEY,EAAE6B,GAAG,EAAEzC,EAAE,GAAG,EAAEU,EAAEI,EAAE,KAAK,EAAEJ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEX,EAAEuE,EAAG,EAAEvE,EAAE,EAAEyB,GAAE,CAAC,EAAE,GAAGd,EAAEJ,GAAG6D,GAAG,EAAE,EAAEnD,IAAIR,EAAET,EAAEmD,GAAG,KAAK,EAAEnD,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEI,EAAEmE,EAAGnE,GAAGK,EAAEA,EAAEC,EAAE,IAAI,EAAED,IAAI,EAAEC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGgB,GAAE,EAAE,EAAEb,EAAEH,EAAEH,EAAEG,EAAE,EAAEK,EAAEf,EAAE,EAAEa,EAAEO,GAAE,EAAE,GAAGpB,EAAEI,EAAEc,GAAE,KAAK,EAAEd,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEc,GAAElB,EAAEA,GAAGe,EAAEA,EAAE,EAAEf,EAAEuE,EAAGvE,EAAE,EAAEW,EAAE,EAAE,EAAE,EAAEgD,IAAIlC,GAAElB,GAAG,EAAE,IAAII,EAAEX,EAAEgD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGtC,EAAE,EAAEO,EAAEJ,EAAEA,EAAE,GAAGH,EAAED,EAAEE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE4D,EAAGnE,EAAEM,EAAEO,EAAE,EAAE,EAAE,EAAEyB,GAAG,EAAEnC,EAAEE,EAAE,EAAEL,EAAEmE,EAAGxC,GAAEJ,GAAEJ,GAAEiB,GAAE,CAAC,EAAEpB,GAAE,EAAEb,EAAEU,EAAEhB,EAAE,EAAE,EAAE4C,GAAG,EAAE,EAAEV,IAAIlC,EAAEG,EAAE6B,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAErB,EAAE,GAAGX,EAAEA,EAAEW,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEE,EAAEyD,EAAG3E,EAAEK,EAAE,EAAEa,EAAE,EAAE,EAAE,GAAG0B,GAAEjC,GAAGU,EAAE,EAAEA,EAAE,EAAEH,EAAE,EAAE,EAAElB,EAAE2E,EAAG,EAAEnE,GAAGR,EAAEwB,KAAIA,GAAE,IAAI,EAAEN,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEoD,IAAIvC,GAAEpB,GAAG,EAAE,EAAEK,IAAI,EAAEhB,EAAEmD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEhB,GAAE,EAAE,EAAE9B,EAAE,EAAEkC,EAAE,EAAE,IAAI,EAAElC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE4B,GAAEzC,EAAE,EAAE,IAAIgB,EAAEwB,GAAE5C,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGiB,EAAE,EAAEW,EAAE,GAAGX,EAAE,EAAEG,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEmE,EAAGtE,EAAEU,EAAE,EAAEF,EAAE,EAAE,EAAE,GAAGmB,GAAErB,GAAG6B,EAAE,EAAE3B,EAAE8D,GAAInE,EAAE,EAAEoB,GAAE,GAAGkC,IAAI,EAAEtD,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGyB,GAAE,EAAE,EAAEA,GAAE,EAAE,EAAEmC,IAAItC,GAAEnB,GAAG,EAAE,EAAEK,IAAIW,GAAEd,EAAE8C,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG3C,EAAEX,EAAEsB,GAAE,KAAK,EAAEtB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE2B,GAAEA,GAAE,EAAE3B,EAAEsE,EAAG,EAAE3D,EAAEX,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE4B,KAAIA,GAAEtB,GAAG,EAAE,GAAGH,EAAEH,EAAEG,EAAE,GAAGK,EAAEA,EAAE,EAAEL,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEyB,GAAE,EAAE6C,EAAG,EAAE,EAAE7C,GAAE,CAAC,EAAEH,GAAE,EAAEhB,EAAEkC,GAAGpC,EAAEkC,GAAEpC,EAAEA,EAAEP,EAAEA,EAAE2E,EAAGzD,EAAEiB,GAAEI,EAAEK,GAAE,EAAE,EAAE,GAAG1B,EAAEP,GAAGa,GAAE,EAAEA,GAAE,EAAExB,EAAEqB,EAAE,EAAEA,EAAE,EAAE,IAAI,EAAErB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEO,EAAEoE,EAAG,EAAEpE,EAAE,EAAEwB,GAAE,CAAC,EAAE,GAAGA,GAAEpB,GAAG0D,GAAG,EAAE,EAAEpD,IAAI,EAAEV,EAAE2C,EAAG,KAAK,EAAE3C,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEO,EAAE,GAAGL,EAAE,EAAEK,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE6D,EAAGlE,EAAEkC,GAAE,EAAEjB,GAAE,EAAE,EAAE,GAAGT,EAAEN,GAAGD,EAAE,EAAEgB,GAAE,GAAGhB,EAAE,EAAEmC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEtC,EAAEoE,EAAGpE,EAAEG,EAAE,EAAEqB,GAAE,EAAE,EAAE,EAAEkB,IAAIL,GAAEjC,GAAG,EAAEoB,GAAExB,EAAE,EAAEO,IAAIP,EAAE8B,GAAE9B,EAAE,KAAK,EAAE8B,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEvB,EAAEP,EAAEE,EAAE,EAAEF,EAAEU,EAAEA,EAAE,EAAEH,IAAI,EAAEL,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEF,EAAEoE,EAAG,EAAE7D,EAAEP,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEmB,KAAIA,GAAEf,GAAG,EAAEwB,GAAE,EAAE5B,EAAEG,EAAE,EAAE6B,EAAE,EAAE,IAAI,EAAEhC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEE,EAAEH,EAAE,EAAEa,EAAE2B,GAAG,EAAExC,EAAE,GAAG,EAAES,EAAEO,GAAE,KAAK,EAAEP,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEX,EAAEuE,EAAG,EAAEvE,EAAE,EAAEyB,GAAE,CAAC,EAAE,EAAEyC,IAAIvD,EAAEJ,GAAG,EAAE,EAAES,IAAIV,EAAEN,EAAE+C,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEvC,EAAE,GAAGF,EAAEA,EAAEE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEH,EAAEkE,EAAGlE,EAAEC,EAAE,EAAEe,GAAE,EAAE,EAAEH,GAAE,EAAEX,EAAEQ,EAAEf,EAAE,EAAE,EAAEiB,EAAE,EAAE,GAAGjB,EAAEK,EAAEe,GAAE,KAAK,EAAEf,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEoB,GAAEzB,EAAEA,GAAGe,EAAEA,EAAE,EAAEf,EAAEuE,EAAGvE,EAAE,EAAEW,EAAE,EAAE,EAAE,EAAEkD,IAAIzC,GAAEb,GAAG,EAAE,EAAEC,IAAIG,EAAEX,EAAEiD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGzC,EAAEF,EAAEK,EAAE,KAAK,EAAEL,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEY,GAAEA,GAAE,EAAEP,EAAE4D,EAAGlE,EAAEG,EAAEF,EAAE,EAAE,EAAE,EAAEoC,GAAG,EAAEnC,EAAED,EAAE,EAAED,EAAEkE,EAAGpD,GAAEK,GAAEY,EAAEQ,GAAG,CAAC,EAAE3B,EAAE,EAAEV,EAAES,EAAEd,EAAE,EAAE,EAAEgC,GAAE,EAAE,EAAEI,KAAIpC,EAAEnB,EAAEsB,EAAE,KAAK,EAAEtB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEe,GAAE,GAAGI,EAAEA,EAAEJ,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEgB,EAAEyD,EAAG3E,EAAEM,EAAE,EAAEY,EAAE,EAAE,EAAE,GAAG8B,GAAGrC,GAAGS,EAAE,EAAEA,EAAE,EAAEF,EAAE,EAAE,EAAElB,EAAE2E,EAAG,EAAElE,GAAGT,EAAEqB,IAAIA,EAAE,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEgD,IAAI3C,GAAEZ,GAAG,EAAE,EAAET,KAAI,EAAEF,EAAEyC,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEb,GAAE,EAAE,EAAEtB,EAAE,EAAEkC,EAAE,EAAE,IAAI,EAAElC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEqB,GAAEkC,GAAG,EAAE,IAAIpD,EAAEqB,GAAEiB,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGzC,EAAE,EAAEJ,GAAE,GAAGI,EAAE,EAAEG,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEkE,EAAGrE,EAAES,EAAE,EAAEL,EAAE,EAAE,EAAE,GAAGgC,GAAE/B,GAAG4B,EAAE,EAAE7B,EAAEiE,GAAIlE,EAAE,EAAE0B,GAAE,GAAGL,IAAG,EAAErB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGkB,GAAE,EAAE,EAAEG,GAAE,EAAE,EAAEvC,GAAGkC,GAAEd,GAAG,EAAE,EAAET,KAAIyB,GAAEjB,EAAEsD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG9D,GAAEI,EAAEqB,GAAE,KAAK,EAAErB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEoC,GAAEA,GAAE,EAAEpC,EAAEqE,EAAG,EAAEzE,GAAEI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEwB,KAAIA,GAAEnB,GAAG,EAAE,GAAGF,EAAEH,EAAEG,EAAE,GAAGC,EAAEA,EAAE,EAAED,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEmB,GAAE,EAAEkD,EAAG,EAAE,EAAElD,GAAE,CAAC,EAAEE,GAAE,EAAEhB,EAAEkC,GAAGrC,EAAEmC,GAAEpC,EAAEA,EAAEP,EAAEA,EAAE2E,EAAGzD,EAAEU,GAAEY,EAAEQ,GAAG,EAAE,EAAE,GAAG9B,EAAEP,GAAGU,EAAE,EAAEA,EAAE,EAAErB,EAAEoB,EAAE,EAAEA,EAAE,EAAE,IAAI,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEO,EAAEoE,EAAG,EAAEpE,EAAE,EAAEgB,GAAE,CAAC,EAAE,GAAGA,GAAEZ,GAAG8C,GAAG,EAAE,EAAEnC,KAAI,EAAEf,EAAE6B,GAAE,KAAK,EAAE7B,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEK,EAAE,GAAGJ,EAAE,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE+D,EAAGnE,EAAEmC,GAAE,EAAEjB,GAAE,EAAE,EAAE,GAAGJ,GAAEX,GAAGE,EAAE,EAAEa,GAAE,GAAGb,EAAE,EAAEgC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEtC,EAAEoE,EAAGpE,EAAEM,EAAE,EAAEU,GAAE,EAAE,EAAE,EAAEiD,IAAIxB,GAAGrC,GAAG,EAAEY,GAAEhB,EAAE,EAAEK,IAAIL,EAAEgD,GAAGhD,EAAE,KAAK,EAAEgD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE3C,EAAEL,EAAEC,EAAE,EAAED,EAAEe,GAAEA,GAAE,EAAEV,IAAI,EAAEJ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAED,EAAEoE,EAAG,EAAE/D,EAAEL,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEmB,KAAIA,GAAEf,GAAG,EAAEiB,GAAE,EAAErB,EAAEM,EAAE,EAAE2B,EAAE,EAAE,IAAI,EAAEjC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAEH,EAAE,EAAEc,EAAE2B,GAAG,EAAEzC,EAAE,GAAG,EAAEU,EAAEc,GAAE,KAAK,EAAEd,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEX,EAAEuE,EAAG,EAAEvE,EAAE,EAAEoB,GAAE,CAAC,EAAE,GAAGT,EAAEJ,GAAGoD,GAAG,EAAE,EAAE9C,IAAIJ,EAAET,EAAEgD,GAAG,KAAK,EAAEhD,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEU,EAAE,GAAGD,EAAEA,EAAEC,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEN,EAAEmE,EAAGnE,EAAEK,EAAE,EAAEoB,GAAE,EAAE,EAAEhB,EAAE,EAAEN,EAAEQ,EAAEf,EAAE,EAAE,EAAEgB,EAAE,EAAE,GAAGhB,EAAEI,EAAEa,EAAE,KAAK,EAAEb,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEqB,GAAEzB,EAAEA,GAAGe,EAAEA,EAAE,EAAEf,EAAEuE,EAAGvE,EAAE,EAAEW,EAAE,EAAE,EAAE,EAAE6C,IAAIpC,GAAEb,GAAG,EAAE,EAAEG,IAAIC,EAAEX,EAAEsD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAErC,EAAEJ,EAAEA,EAAE,GAAGH,EAAED,EAAEE,EAAE,KAAK,EAAEF,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEE,EAAE4D,EAAGnE,EAAEM,EAAEO,EAAE,EAAE,EAAE,EAAEyB,GAAG,EAAEnC,EAAEE,EAAE,EAAEL,EAAEmE,EAAGxC,GAAEJ,GAAEQ,EAAEK,GAAE,CAAC,EAAEvB,EAAE,EAAEV,EAAES,EAAEf,EAAE,EAAE,EAAE6B,GAAE,EAAE,EAAEF,KAAI3B,EAAEG,EAAE8C,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEtC,EAAE,GAAGX,EAAEA,EAAEW,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEE,EAAEyD,EAAG3E,EAAEK,EAAE,EAAEa,EAAE,EAAE,EAAE,GAAG0B,GAAEjC,GAAGS,EAAE,EAAEA,EAAE,EAAEF,EAAE,EAAE,EAAElB,EAAE2E,EAAG,EAAEnE,GAAGR,EAAEqB,IAAIA,EAAE,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEqD,IAAIxC,GAAEpB,GAAG,EAAE,EAAEK,IAAI,EAAEhB,EAAEwD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAErB,GAAE,EAAE,EAAE9B,EAAE,EAAEkC,EAAE,EAAE,IAAI,EAAElC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEsB,GAAEpC,EAAE,EAAE,IAAIiB,EAAEiB,GAAEuC,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG3D,EAAE,EAAEW,EAAE,GAAGX,EAAE,EAAEG,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEmE,EAAGtE,EAAEU,EAAE,EAAEF,EAAE,EAAE,EAAE,GAAGmB,GAAErB,GAAG6B,EAAE,EAAE3B,EAAE8D,GAAInE,EAAE,EAAEoB,GAAE,GAAGH,IAAG,EAAEjB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGmB,GAAE,EAAE,EAAEM,GAAE,EAAE,EAAEqC,IAAI7C,GAAEd,GAAG,EAAE,EAAEK,IAAIW,GAAEd,EAAEsC,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGnC,EAAEX,EAAEsB,GAAE,KAAK,EAAEtB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE2B,GAAEA,GAAE,EAAE3B,EAAEsE,EAAG,EAAE3D,EAAEX,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE4B,KAAIA,GAAEtB,GAAG,EAAE,GAAGH,EAAEH,EAAEG,EAAE,GAAGK,EAAEA,EAAE,EAAEL,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEoB,GAAE,EAAEkD,EAAG,EAAE,EAAElD,GAAE,CAAC,EAAEE,GAAE,EAAEhB,EAAEkC,GAAGpC,EAAEkC,GAAEpC,EAAEA,EAAEP,EAAEA,EAAE2E,EAAGzD,EAAEiB,GAAEI,EAAEK,GAAE,EAAE,EAAE,GAAG1B,EAAEP,GAAGU,EAAE,EAAEA,EAAE,EAAErB,EAAEoB,EAAE,EAAEA,EAAE,EAAE,IAAI,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEO,EAAEoE,EAAG,EAAEpE,EAAE,EAAEwB,GAAE,CAAC,EAAE,GAAGA,GAAEpB,GAAGuB,GAAE,EAAE,EAAEjB,IAAI,EAAEV,EAAE+C,GAAG,KAAK,EAAE/C,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEO,EAAE,GAAGL,EAAE,EAAEK,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE6D,EAAGlE,EAAEkC,GAAE,EAAEjB,GAAE,EAAE,EAAE,GAAGT,EAAEN,GAAGD,EAAE,EAAEgB,GAAE,GAAGhB,EAAE,EAAEmC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEtC,EAAEoE,EAAGpE,EAAEG,EAAE,EAAEqB,GAAE,EAAE,EAAE,EAAE6B,IAAIhB,GAAEjC,GAAG,EAAEoB,GAAExB,EAAE,EAAEO,IAAIP,EAAEmD,GAAGnD,EAAE,KAAK,EAAEmD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE5C,EAAEP,EAAEE,EAAE,EAAEF,EAAEU,EAAEA,EAAE,EAAEH,IAAI,EAAEL,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEF,EAAEoE,EAAG,EAAE7D,EAAEP,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEmB,KAAIA,GAAEf,GAAG,EAAEwB,GAAE,EAAE5B,EAAEG,EAAE,EAAE6B,EAAE,EAAE,IAAI,EAAEhC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEE,EAAEH,EAAE,EAAEa,EAAE2B,GAAG,EAAExC,EAAE,GAAG,EAAES,EAAEc,GAAE,KAAK,EAAEd,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEX,EAAEuE,EAAG,EAAEvE,EAAE,EAAEoB,GAAE,CAAC,EAAE,EAAEuC,IAAIhD,EAAEJ,GAAG,EAAE,EAAEW,KAAIZ,EAAEN,EAAEgD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAExC,EAAE,GAAGF,EAAEA,EAAEE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEH,EAAEkE,EAAGlE,EAAEC,EAAE,EAAEoB,GAAE,EAAE,EAAER,GAAE,EAAEX,EAAEQ,EAAEf,EAAE,EAAE,EAAEgB,EAAE,EAAE,GAAGhB,EAAEK,EAAEY,EAAE,KAAK,EAAEZ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEoB,GAAEzB,EAAEA,GAAGe,EAAEA,EAAE,EAAEf,EAAEuE,EAAGvE,EAAE,EAAEW,EAAE,EAAE,EAAE,EAAEyD,IAAIhD,GAAEb,GAAG,EAAE,EAAEC,IAAIG,EAAEX,EAAEmD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG3C,EAAEF,EAAEK,EAAE,KAAK,EAAEL,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEY,GAAEA,GAAE,EAAEP,EAAE4D,EAAGlE,EAAEG,EAAEF,EAAE,EAAE,EAAE,EAAEoC,GAAG,EAAEnC,EAAED,EAAE,EAAED,EAAEkE,EAAGpD,GAAEK,GAAEY,EAAEQ,GAAG,CAAC,EAAE3B,EAAE,EAAEV,EAAES,EAAEd,EAAE,EAAE,EAAE2C,GAAG,EAAE,EAAEP,KAAIpC,EAAEG,EAAE4B,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEnC,GAAE,GAAGI,EAAEA,EAAEJ,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEgB,EAAEyD,EAAG3E,EAAEM,EAAE,EAAEY,EAAE,EAAE,EAAE,GAAG8B,GAAGrC,GAAGS,EAAE,EAAEA,EAAE,EAAEF,EAAE,EAAE,EAAElB,EAAE2E,EAAG,EAAElE,GAAGT,EAAEqB,IAAIA,EAAE,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEqD,IAAIhD,GAAEZ,GAAG,EAAE,EAAET,KAAI,EAAEF,EAAEwD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE5B,GAAE,EAAE,EAAEtB,EAAE,EAAEkC,EAAE,EAAE,IAAI,EAAElC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEqB,GAAEuC,GAAG,EAAE,IAAIzD,EAAEgB,GAAEgB,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGnC,EAAE,EAAEJ,GAAE,GAAGI,EAAE,EAAEG,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEkE,EAAGrE,EAAES,EAAE,EAAEL,EAAE,EAAE,EAAE,GAAGgC,GAAE/B,GAAG4B,EAAE,EAAE7B,EAAEiE,GAAIlE,EAAE,EAAE0B,GAAE,GAAGV,IAAG,EAAEhB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGkB,GAAE,EAAE,EAAEG,GAAE,EAAE,EAAEQ,IAAGb,GAAEd,GAAG,EAAE,EAAET,KAAIyB,GAAExC,EAAEuB,EAAE,KAAK,EAAEvB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGe,GAAEI,EAAEqB,GAAE,KAAK,EAAErB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEoC,GAAEA,GAAE,EAAEpC,EAAEqE,EAAG,EAAEzE,GAAEI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEwB,KAAIA,GAAEnB,GAAG,EAAE,GAAGF,EAAEH,EAAEG,EAAE,GAAGC,EAAEA,EAAE,EAAED,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEmB,GAAE,EAAEkD,EAAG,EAAE,EAAElD,GAAE,CAAC,EAAEE,GAAE,EAAEhB,EAAEkC,GAAGrC,EAAEmC,GAAEpC,EAAEA,EAAEP,EAAEA,EAAE2E,EAAGzD,EAAEU,GAAEY,EAAEQ,GAAG,EAAE,EAAE,GAAG9B,EAAEP,GAAGU,EAAE,EAAEA,EAAE,EAAErB,EAAEoB,EAAE,EAAEA,EAAE,EAAE,IAAI,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEO,EAAEoE,EAAG,EAAEpE,EAAE,EAAEgB,GAAE,CAAC,EAAE,GAAGA,GAAEZ,GAAGsD,GAAG,EAAE,EAAE3C,KAAI,EAAEf,EAAE8C,GAAG,KAAK,EAAE9C,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEK,EAAE,GAAGJ,EAAE,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE+D,EAAGnE,EAAEmC,GAAE,EAAEjB,GAAE,EAAE,EAAE,GAAGJ,GAAEX,GAAGE,EAAE,EAAEa,GAAE,GAAGb,EAAE,EAAEgC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEtC,EAAEoE,EAAGpE,EAAEM,EAAE,EAAEU,GAAE,EAAE,EAAE,EAAE/B,GAAGwD,GAAGrC,GAAG,EAAEY,GAAEhB,EAAE,EAAEK,IAAIL,EAAEnB,EAAEmB,EAAE,KAAK,EAAEnB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEwB,EAAEL,EAAEC,EAAE,EAAED,EAAEe,GAAEA,GAAE,EAAEV,IAAI,EAAEJ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAED,EAAEoE,EAAG,EAAE/D,EAAEL,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEmB,KAAIA,GAAEf,GAAG,EAAEiB,GAAE,EAAErB,EAAEM,EAAE,EAAE2B,EAAE,EAAE,IAAI,EAAEjC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAEH,EAAE,EAAEc,EAAE2B,GAAG,EAAEzC,EAAE,GAAG,EAAEU,EAAEc,GAAE,KAAK,EAAEd,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEX,EAAEuE,EAAG,EAAEvE,EAAE,EAAEoB,GAAE,CAAC,EAAE,GAAGT,EAAEJ,GAAGkD,GAAG,EAAE,EAAE5C,IAAIJ,EAAET,EAAE2C,GAAG,KAAK,EAAE3C,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEU,EAAE,GAAGD,EAAEA,EAAEC,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEN,EAAEmE,EAAGnE,EAAEK,EAAE,EAAEoB,GAAE,EAAE,EAAEhB,EAAE,EAAEN,EAAEQ,EAAEf,EAAE,EAAE,EAAEgB,EAAE,EAAE,GAAGhB,EAAEI,EAAEa,EAAE,KAAK,EAAEb,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEqB,GAAEzB,EAAEA,GAAGe,EAAEA,EAAE,EAAEf,EAAEuE,EAAGvE,EAAE,EAAEW,EAAE,EAAE,EAAE,EAAEsD,IAAI7C,GAAEb,GAAG,EAAE,EAAEG,IAAIC,EAAEX,EAAE8C,EAAG,KAAK,EAAEA,IAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE7B,EAAEJ,EAAEA,EAAE,GAAGH,EAAED,EAAEE,EAAE,KAAK,EAAEF,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEE,EAAE4D,EAAGnE,EAAEM,EAAEO,EAAE,EAAE,EAAE,EAAEyB,GAAG,EAAEnC,EAAEE,EAAE,EAAEL,EAAEmE,EAAGxC,GAAEJ,GAAEQ,EAAEK,GAAE,CAAC,EAAEvB,EAAE,EAAEV,EAAES,EAAEf,EAAE,EAAE,EAAE+D,GAAG,EAAE,EAAEpC,KAAI3B,EAAEG,EAAEmD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE3C,EAAE,GAAGX,EAAEA,EAAEW,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEE,EAAEyD,EAAG3E,EAAEK,EAAE,EAAEa,EAAE,EAAE,EAAE,GAAG0B,GAAEjC,GAAGS,EAAE,EAAEA,EAAE,EAAEF,EAAE,EAAE,EAAElB,EAAE2E,EAAG,EAAEnE,GAAGR,EAAEqB,IAAIA,EAAE,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEuC,IAAI1B,GAAEpB,GAAG,EAAE,EAAEK,IAAI,EAAEhB,EAAEoC,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAED,GAAE,EAAE,EAAE9B,EAAE,EAAEkC,EAAE,EAAE,IAAI,EAAElC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEsB,GAAE4C,GAAG,EAAE,IAAI/D,EAAEiB,GAAE+B,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGnD,EAAE,EAAEW,EAAE,GAAGX,EAAE,EAAEG,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEmE,EAAGtE,EAAEU,EAAE,EAAEF,EAAE,EAAE,EAAE,GAAGmB,GAAErB,GAAG6B,EAAE,EAAE3B,EAAE8D,GAAInE,EAAE,EAAEoB,GAAE,GAAGH,IAAG,EAAEjB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGmB,GAAE,EAAE,EAAEM,GAAE,EAAE,EAAE2B,IAAInC,GAAEd,GAAG,EAAE,EAAEK,IAAIW,GAAEd,EAAE6C,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG1C,EAAEX,EAAEsB,GAAE,KAAK,EAAEtB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE2B,GAAEA,GAAE,EAAE3B,EAAEsE,EAAG,EAAE3D,EAAEX,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE4B,KAAIA,GAAEtB,GAAG,EAAE,GAAGH,EAAEH,EAAEG,EAAE,GAAGK,EAAEA,EAAE,EAAEL,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEoB,GAAE,EAAEkD,EAAG,EAAE,EAAElD,GAAE,CAAC,EAAEE,GAAE,EAAEhB,EAAEkC,GAAGpC,EAAEkC,GAAEpC,EAAEA,EAAEP,EAAEA,EAAE2E,EAAGzD,EAAEiB,GAAEI,EAAEK,GAAE,EAAE,EAAE,GAAG1B,EAAEP,GAAGU,EAAE,EAAEA,EAAE,EAAErB,EAAEoB,EAAE,EAAEA,EAAE,EAAE,IAAI,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEO,EAAEoE,EAAG,EAAEpE,EAAE,EAAEwB,GAAE,CAAC,EAAE,GAAGA,GAAEpB,GAAG2D,GAAG,EAAE,EAAErD,IAAI,EAAEV,EAAE4C,GAAG,KAAK,EAAE5C,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEO,EAAE,GAAGL,EAAE,EAAEK,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE6D,EAAGlE,EAAEkC,GAAE,EAAEjB,GAAE,EAAE,EAAE,GAAGT,EAAEN,GAAGD,EAAE,EAAEgB,GAAE,GAAGhB,EAAE,EAAEmC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEtC,EAAEoE,EAAGpE,EAAEG,EAAE,EAAEqB,GAAE,EAAE,EAAE,EAAExC,GAAGqD,GAAEjC,GAAG,EAAEoB,GAAExB,EAAE,EAAEO,IAAIP,EAAEyD,GAAGzD,EAAE,KAAK,EAAEyD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAElD,EAAEP,EAAEE,EAAE,EAAEF,EAAEU,EAAEA,EAAE,EAAEH,IAAI,EAAEL,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEF,EAAEoE,EAAG,EAAE7D,EAAEP,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEmB,KAAIA,GAAEf,GAAG,EAAEwB,GAAE,EAAE5B,EAAEG,EAAE,EAAE6B,EAAE,EAAE,IAAI,EAAEhC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEE,EAAEH,EAAE,EAAEa,EAAE2B,GAAG,EAAExC,EAAE,GAAG,EAAES,EAAEc,GAAE,KAAK,EAAEd,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEX,EAAEuE,EAAG,EAAEvE,EAAE,EAAEoB,GAAE,CAAC,EAAE,EAAE6C,IAAItD,EAAEJ,GAAG,EAAE,EAAEW,KAAIZ,EAAEN,EAAE8C,EAAG,KAAK,EAAEA,IAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEtC,EAAE,GAAGF,EAAEA,EAAEE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEH,EAAEkE,EAAGlE,EAAEC,EAAE,EAAEoB,GAAE,EAAE,EAAER,GAAE,EAAEX,EAAEQ,EAAEf,EAAE,EAAE,EAAEgB,EAAE,EAAE,GAAGhB,EAAEK,EAAEY,EAAE,KAAK,EAAEZ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEoB,GAAEzB,EAAEA,GAAGe,EAAEA,EAAE,EAAEf,EAAEuE,EAAGvE,EAAE,EAAEW,EAAE,EAAE,EAAE,EAAEmB,IAAGV,GAAEb,GAAG,EAAE,EAAEC,IAAIG,EAAEX,EAAEkD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG1C,EAAEF,EAAEK,EAAE,KAAK,EAAEL,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEY,GAAEA,GAAE,EAAEP,EAAE4D,EAAGlE,EAAEG,EAAEF,EAAE,EAAE,EAAE,EAAEoC,GAAG,EAAEnC,EAAED,EAAE,EAAED,EAAEkE,EAAGpD,GAAEK,GAAEY,EAAEQ,GAAG,CAAC,EAAE3B,EAAE,EAAEV,EAAES,EAAEd,EAAE,EAAE,EAAEkE,GAAG,EAAE,EAAE9B,KAAIpC,EAAEG,EAAE8C,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAErD,GAAE,GAAGI,EAAEA,EAAEJ,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEgB,EAAEyD,EAAG3E,EAAEM,EAAE,EAAEY,EAAE,EAAE,EAAE,GAAG8B,GAAGrC,GAAGS,EAAE,EAAEA,EAAE,EAAEF,EAAE,EAAE,EAAElB,EAAE2E,EAAG,EAAElE,GAAGT,EAAEqB,IAAIA,EAAE,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEkD,IAAI7C,GAAEZ,GAAG,EAAE,EAAET,KAAI,EAAEF,EAAE2D,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE/B,GAAE,EAAE,EAAEtB,EAAE,EAAEkC,EAAE,EAAE,IAAI,EAAElC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEqB,GAAEoC,GAAG,EAAE,IAAItD,EAAEgB,GAAE2B,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG9C,EAAE,EAAEJ,GAAE,GAAGI,EAAE,EAAEG,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEkE,EAAGrE,EAAES,EAAE,EAAEL,EAAE,EAAE,EAAE,GAAGgC,GAAE/B,GAAG4B,EAAE,EAAE7B,EAAEiE,GAAIlE,EAAE,EAAE0B,GAAE,GAAGV,IAAG,EAAEhB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGkB,GAAE,EAAE,EAAEG,GAAE,EAAE,EAAEtC,GAAGiC,GAAEd,GAAG,EAAE,EAAET,KAAIyB,GAAEjB,EAAEtB,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGc,GAAEI,EAAEqB,GAAE,KAAK,EAAErB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEoC,GAAEA,GAAE,EAAEpC,EAAEqE,EAAG,EAAEzE,GAAEI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEwB,KAAIA,GAAEnB,GAAG,EAAE,GAAGF,EAAEH,EAAEG,EAAE,GAAGC,EAAEA,EAAE,EAAED,IAAI,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEmB,GAAE,EAAEkD,EAAG,EAAE,EAAElD,GAAE,CAAC,EAAEE,GAAE,EAAEhB,EAAEkC,GAAGrC,EAAEmC,GAAEpC,EAAEA,EAAEP,EAAEA,EAAE2E,EAAGzD,EAAEU,GAAEY,EAAEQ,GAAG,EAAE,EAAE,GAAG9B,EAAEP,GAAGU,EAAE,EAAEA,EAAE,EAAErB,EAAEoB,EAAE,EAAEA,EAAE,EAAE,IAAI,EAAEpB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEO,EAAEoE,EAAG,EAAEpE,EAAE,EAAEgB,GAAE,CAAC,EAAE,GAAGK,GAAEjB,GAAGsC,GAAG,EAAE,EAAE3B,KAAI,EAAEf,EAAE8B,GAAE,KAAK,EAAE9B,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEK,EAAE,GAAGJ,EAAE,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE+D,EAAGnE,EAAEmC,GAAE,EAAEjB,GAAE,EAAE,EAAE,GAAGJ,GAAEX,GAAGE,EAAE,EAAEa,GAAEb,EAAE,EAAEgC,GAAG,EAAEtB,GAAE,EAAEV,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEN,EAAEoE,EAAGpE,EAAEM,EAAE,EAAEe,GAAE,EAAE,EAAE,EAAEsC,IAAIrB,GAAGlC,GAAG,EAAEiB,GAAErB,EAAE,EAAEK,IAAIL,EAAEkC,EAAElC,EAAE,KAAK,EAAEkC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE5B,EAAEN,EAAEC,EAAE,EAAED,EAAEe,GAAEA,GAAE,EAAET,IAAI,EAAEL,IAAI,EAAE,EAAE,EAAE,EAAE,EAAED,EAAEoE,EAAG,EAAE9D,EAAEN,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEgB,KAAIA,GAAEZ,GAAG,EAAEe,GAAE,EAAEnB,EAAEmB,GAAE,EAAEc,EAAE,EAAE,IAAI,EAAEjC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAEH,EAAE,EAAEc,EAAE2B,GAAG,EAAEzC,EAAE,GAAG,EAAEU,EAAEc,GAAE,KAAK,EAAEd,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEX,EAAEuE,EAAG,EAAEvE,EAAE,EAAEoB,GAAE,CAAC,EAAE,GAAGT,EAAEJ,GAAG2B,GAAE,EAAE,EAAErB,IAAIL,EAAEzB,EAAEiB,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEU,EAAE,GAAGF,EAAEA,EAAEE,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEG,EAAET,EAAEmE,EAAGnE,EAAEI,EAAE,EAAEqB,GAAE,EAAE,EAAEd,EAAE,EAAER,EAAEkB,GAAEzB,EAAE,EAAE,EAAEgB,EAAE,EAAE,GAAGhB,EAAEI,EAAEa,EAAE,KAAK,EAAEb,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEgB,GAAEpB,EAAEA,GAAGyB,GAAEA,GAAE,EAAEzB,EAAEuE,EAAGvE,EAAE,EAAEW,EAAE,EAAE,EAAE,EAAEkD,IAAI5C,EAAEV,GAAG,EAAE,EAAEG,IAAIN,EAAEJ,EAAEiD,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEjC,GAAGZ,EAAEA,EAAEI,EAAE,GAAGK,EAAEA,EAAE,EAAET,IAAI,EAAEI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE+D,EAAGvD,EAAE,EAAED,EAAE,EAAE,EAAEc,GAAE,EAAEtB,EAAEI,EAAE,EAAEI,EAAEL,EAAE6D,EAAGxC,GAAEJ,GAAEQ,EAAEK,GAAE,CAAC,EAAExB,EAAE,EAAET,EAAEoB,GAAE1B,EAAE,EAAE,EAAEoD,GAAG,EAAE,EAAEzB,KAAI3B,EAAES,EAAEsB,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG/B,EAAEA,EAAEW,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEE,EAAEA,EAAE,EAAEJ,EAAE6D,EAAG3E,EAAEK,EAAEW,EAAE,EAAE,EAAE,EAAE,GAAG2B,GAAEhC,GAAGoB,GAAE,EAAEf,EAAE,EAAEF,EAAE,EAAE,EAAEd,EAAE2E,EAAG3E,EAAE,EAAEmB,GAAGA,EAAE,IAAI,EAAEL,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGM,EAAE,EAAE,EAAE,EAAEyC,IAAIzC,EAAET,GAAG,EAAE,EAAEO,IAAI,EAAElB,EAAE+C,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE7B,EAAE,EAAE,EAAEb,EAAE,EAAE0B,GAAE,EAAE,IAAI,EAAE1B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEsB,GAAEuC,GAAG,EAAE,IAAIlC,GAAES,KAAK,GAAGA,EAAEhB,GAAEgB,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGpC,EAAE,EAAE6D,GAAG,GAAG,EAAE,EAAEzB,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEkC,EAAG,EAAE/D,EAAE,EAAEG,EAAE,EAAE,EAAE,GAAGoB,GAAExB,GAAG6B,EAAE,EAAEzB,EAAE4D,GAAItE,EAAEqB,GAAEe,EAAE,GAAGhB,IAAG,EAAEpB,IAAI,EAAEoC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGd,GAAE,EAAE,EAAEK,GAAE,EAAE,EAAEiC,IAAI1B,EAAE5B,GAAG,EAAE,EAAEuD,KAAKzC,GAAE4B,MAAM,GAAGA,GAAGtC,EAAEsC,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGA,GAAG,EAAEA,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEZ,EAAEY,GAAGZ,EAAE,EAAEwB,GAAGU,EAAG,EAAE,EAAExC,GAAE,EAAE,EAAE,GAAG+B,GAAGvD,GAAGqB,GAAE,EAAE3B,EAAE,GAAG,EAAEA,EAAE4D,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEU,EAAG,EAAE5D,EAAE,EAAEwB,EAAE,CAAC,EAAExB,EAAEJ,EAAEwB,GAAE,EAAEI,EAAE9B,EAAEA,EAAEsC,GAAGf,GAAE6B,GAAGA,GAAGc,EAAG7D,EAAEI,EAAEa,GAAEY,GAAE,EAAE,EAAE,GAAG7B,EAAEH,GAAGQ,EAAE,EAAEA,EAAEV,EAAEO,EAAE,GAAG+B,GAAG/B,EAAE6C,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEpD,EAAEkE,EAAG3E,GAAGkB,EAAE6B,IAAI,EAAE3B,EAAE,CAAC,EAAE,GAAGA,EAAET,GAAGqB,GAAE,EAAE,EAAEf,GAAGR,IAAI,GAAGsC,GAAG5B,EAAEV,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAET,EAAE,GAAG+C,GAAGvC,EAAEuC,GAAG,KAAK,EAAEvC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAED,EAAEoE,EAAGpE,EAAEwC,GAAG,EAAExB,GAAE,EAAE,EAAE,GAAG,EAAEb,IAAIA,EAAEC,GAAG,EAAEM,EAAET,EAAED,EAAEgC,EAAE,EAAEpB,EAAE,EAAEX,IAAI,EAAED,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAEmE,EAAGnE,EAAEC,EAAE,EAAEW,EAAE,EAAE,EAAE,GAAGA,EAAET,GAAG2D,GAAG,EAAE,GAAG9D,IAAI,GAAG2C,GAAG3C,EAAE2C,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGnD,EAAE,EAAEA,EAAE,GAAGA,EAAEmD,MAAM,GAAGA,GAAGJ,GAAGI,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE5C,EAAEoE,EAAGpE,EAAE4C,GAAG,EAAEzC,EAAE,EAAE,EAAE,GAAGD,EAAEE,GAAGQ,EAAE,EAAET,EAAEqC,GAAGxC,EAAEU,EAAE,EAAEqD,GAAG,EAAEvB,KAAK,EAAExC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEU,EAAE9B,EAAEgC,EAAEmB,GAAE,EAAET,GAAEI,GAAE,EAAEc,GAAG,GAAG5D,EAAEyB,EAAEY,GAAE,KAAK,EAAEZ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE0B,GAAEqC,EAAGxF,EAAEiB,EAAE,EAAEiB,EAAE,CAAC,EAAE,GAAGT,EAAED,GAAGQ,EAAE,EAAE,EAAEG,KAAIlB,EAAEa,EAAEqB,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEhC,EAAEqE,GAAIvE,EAAEA,EAAES,EAAE,GAAGP,GAAG,EAAEF,IAAI,EAAES,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGiB,GAAE,EAAE,EAAEb,EAAE,EAAEK,GAAE8B,GAAGA,GAAGd,GAAE,GAAGzB,EAAEF,GAAGK,EAAE,EAAEA,EAAEJ,EAAEA,EAAE,GAAG0B,GAAEhC,EAAEY,EAAE,KAAK,EAAEZ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE8C,GAAGuB,EAAGrC,GAAEc,GAAGpC,EAAE,EAAE,EAAE,EAAE,GAAGE,EAAEP,GAAGoD,GAAG,EAAE,IAAIA,GAAGzC,GAAE8B,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGnC,EAAE,EAAEA,EAAE8C,GAAG3D,EAAEE,GAAGyD,GAAG3D,EAAE2D,GAAG,GAAGzD,EAAE,EAAEW,IAAI,EAAE8C,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEY,EAAGvE,EAAE,EAAES,EAAE,EAAE,EAAEgB,GAAEzB,EAAEO,EAAEE,EAAE,EAAEG,EAAEqB,GAAEpB,EAAEgC,GAAGZ,GAAEsC,EAAGjD,GAAEE,GAAEY,EAAEK,GAAG,CAAC,EAAE1B,EAAE,EAAER,EAAE,EAAE,EAAE4D,GAAG,EAAE,EAAE7B,KAAIL,IAAGf,GAAEe,IAAGmB,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEA,GAAG,GAAGnB,GAAEnC,GAAEmC,GAAE,KAAK,EAAEnC,KAAI,EAAE,EAAE,EAAE,EAAE,EAAE+C,GAAG0B,EAAGtC,GAAEwB,GAAG,EAAE/C,EAAE,EAAE,EAAE,GAAGZ,GAAES,GAAGoC,GAAG,EAAEA,GAAG5D,EAAE8D,GAAG9D,EAAE,EAAE0E,GAAGc,EAAGxF,EAAEmC,IAAGR,EAAE3B,IAAI,EAAE8D,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG9B,EAAE,EAAE,EAAE,GAAG,EAAEF,IAAIA,EAAEN,GAAG,EAAE,EAAE6C,KAAKrE,EAAE0E,GAAG7C,EAAE,KAAK,EAAE6C,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEL,GAAGrE,EAAEA,EAAEkD,GAAE,EAAEkC,GAAG,EAAEpF,IAAI,EAAEkD,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,GAAE,EAAE,EAAEtB,EAAEsD,GAAG,EAAE,IAAI/C,GAAE4B,KAAM,GAAGA,EAAGf,GAAEe,EAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGb,GAAE,EAAEgC,GAAG,GAAGhC,GAAElD,EAAE+D,EAAG,KAAK,EAAEA,IAAK,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAGyB,EAAG9D,EAAEwB,GAAE,EAAEjC,EAAE,EAAE,EAAE,GAAGkB,GAAEX,GAAG2D,GAAG,EAAElE,EAAEjB,EAAE+D,EAAGxC,EAAE,EAAEvB,EAAEwF,EAAGxF,EAAEgD,IAAGnB,EAAED,IAAIA,EAAE5B,IAAI,EAAE+D,IAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAEsB,IAAIrD,EAAER,GAAG,EAAE6D,GAAGrF,EAAE,EAAEkF,KAAKlF,EAAEoE,GAAGpE,EAAE,KAAK,EAAEoE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGpE,EAAEA,EAAEkD,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEgC,GAAGlF,EAAEqC,IAAG9B,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAIC,EAAE6B,EAAE,EAAEK,EAAE,GAAG3B,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAImD,GAAEsC,EAAG1B,GAAGO,GAAGtD,GAAEqE,GAAG,EAAE,EAAE,GAAGf,GAAG7C,GAAGG,EAAE,EAAEA,EAAE3B,EAAEkD,GAAEU,GAAG,EAAEwB,GAAG,EAAEpF,IAAI,EAAEkD,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEY,GAAGS,GAAG,EAAE9C,EAAEiB,GAAE,EAAE6B,GAAG,GAAGvE,EAAE0B,EAAEyB,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEc,GAAGuB,EAAGxF,EAAEiE,GAAG,EAAElC,EAAE,CAAC,EAAE,GAAGL,EAAEF,GAAGiD,GAAG,EAAE,IAAIX,GAAGG,GAAGH,GAAG,KAAK,EAAEG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGpD,EAAE,EAAEiD,GAAG,GAAGW,GAAGX,GAAGE,GAAG,KAAK,EAAEF,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEF,GAAG4B,EAAGf,GAAGK,GAAG,EAAEC,GAAG,EAAE,EAAE,GAAG5B,GAAE3B,GAAG4D,GAAG,EAAEpB,GAAG,GAAGI,GAAGR,GAAGjC,EAAE,KAAK,EAAEiC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEkB,GAAGlB,GAAGA,GAAG4B,EAAGvB,GAAGG,GAAG,EAAE1C,EAAE,EAAE,EAAE,GAAGb,EAAEW,GAAGyD,GAAG,EAAE,GAAGrB,KAAK,GAAGK,GAAGL,GAAGY,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGV,GAAG,EAAErC,EAAE0B,GAAEA,GAAE,GAAGsB,GAAGR,GAAGQ,GAAG,KAAK,EAAER,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEA,GAAGuB,EAAGV,IAAIN,GAAGC,IAAIhD,EAAE,EAAE,EAAE,EAAE,GAAGC,EAAEF,GAAGwC,GAAG,EAAE,GAAGF,GAAGG,GAAGG,GAAG,KAAK,EAAEH,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEG,GAAGN,GAAGA,IAAIzB,GAAElC,EAAEJ,EAAE,EAAE,CAAC,EAAE+D,GAAG3D,EAAEJ,EAAE,EAAE,CAAC,EAAE+D,KAAK,EAAE3D,EAAEJ,EAAE,GAAG,CAAC,EAAE+D,KAAK,GAAG3D,EAAEJ,EAAE,GAAG,CAAC,EAAE+D,KAAK,GAAGE,GAAG,EAAE,GAAG9B,EAAE/B,EAAEJ,EAAE,GAAG,CAAC,EAAE,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAI,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAI,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG0E,GAAGzE,EAAE8D,GAAGS,GAAGvE,EAAEkD,GAAEA,GAAEsC,EAAGnE,EAAEE,EAAEU,EAAEkD,GAAG,CAAC,EAAE,GAAGF,GAAGzD,GAAGnB,EAAE,EAAE,GAAG6C,KAAI,GAAGqB,GAAGrB,GAAEjD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGqD,EAAE,EAAEY,GAAG,GAAG3C,EAAEgD,MAAM,GAAGA,GAAGL,GAAGK,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEvE,EAAEwF,EAAGxF,EAAEuE,GAAG,EAAEF,GAAG,EAAE,EAAE,GAAG,EAAEP,KAAKA,GAAGtC,GAAG,EAAE6C,GAAG,GAAGI,GAAGzE,EAAEyE,GAAG,KAAK,EAAEzE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE8E,GAAG9E,EAAEyE,GAAGe,EAAGtC,IAAGI,EAAEmB,IAAI,EAAEQ,GAAG,EAAE,EAAE,GAAG5D,EAAEG,GAAGpB,EAAE,EAAE,EAAE8D,KAAKlE,EAAEyE,GAAGI,GAAG,KAAK,EAAEJ,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGzE,EAAEA,EAAEuE,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEL,GAAGlE,EAAEA,GAAG8E,GAAGA,GAAG,EAAEP,GAAGiB,EAAGxF,EAAE,EAAE8D,GAAG,EAAE,EAAE,GAAGvC,EAAEC,GAAG6C,GAAG,EAAEf,EAAEtD,EAAEuE,GAAGjB,EAAE,EAAEe,GAAGrE,IAAI,EAAEuE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEG,GAAG1E,EAAEwF,EAAG7D,EAAE+C,GAAG5C,EAAEsD,GAAG,CAAC,EAAEH,GAAG,EAAEzD,EAAE,EAAE,EAAEuB,GAAE,EAAE,EAAE5B,IAAInB,EAAEA,EAAEmE,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEpB,GAAE,GAAGG,GAAElD,EAAE4E,GAAG,KAAK,EAAEA,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE5E,GAAG8D,GAAG0B,EAAGpE,EAAE8B,GAAE,EAAE5B,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAEE,GAAGN,EAAE,EAAE0D,GAAG5E,EAAEA,GAAGmE,GAAGqB,EAAGrE,EAAEnB,EAAE0E,IAAIA,GAAG1E,IAAI,EAAE8D,KAAK,EAAE,EAAE,EAAE,EAAE,GAAGmB,GAAG,EAAE,GAAGhC,GAAE,EAAE,GAAGA,GAAEzB,GAAG8C,GAAG,EAAE,EAAEvB,IAAG/C,IAAI,EAAEmE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGpB,GAAE/C,EAAEkD,GAAE,KAAK,EAAEA,KAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,GAAEH,GAAEwC,GAAGjC,EAAEnD,EAAE,GAAGH,EAAED,EAAE,EAAEmD,GAAE/C,EAAEH,EAAE,EAAE,CAAC,EAAEkD,KAAI,EAAE/C,EAAEH,EAAE,EAAE,CAAC,EAAEkD,KAAI,GAAG/C,EAAEH,EAAE,EAAE,CAAC,EAAEkD,KAAI,GAAGA,GAAE,EAAE5C,EAAE+D,GAAGlE,EAAEH,EAAE,EAAE,CAAC,EAAEkD,GAAE/C,EAAEH,EAAE,EAAE,CAAC,EAAEkD,KAAI,EAAE/C,EAAEH,EAAE,EAAE,CAAC,EAAEkD,KAAI,GAAG/C,EAAEH,EAAE,EAAE,CAAC,EAAEkD,KAAI,GAAGA,IAAGY,GAAG0B,EAAGzC,GAAEe,GAAG,EAAE,EAAE,EAAE,GAAGc,GAAG,EAAE,GAAGA,GAAGpD,GAAGkD,GAAG,EAAE,GAAGA,GAAGxB,KAAI,EAAEY,KAAK,EAAE,EAAE,EAAE,EAAE,IAAIvD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAI8E,GAAG/B,IAAGxC,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIkE,GAAGhB,GAAE/C,EAAEH,EAAE,GAAG,CAAC,EAAE+C,GAAE5C,EAAEH,EAAE,GAAG,CAAC,EAAE+C,KAAI,EAAE5C,EAAEH,EAAE,GAAG,CAAC,EAAE+C,KAAI,GAAG5C,EAAEH,EAAE,GAAG,CAAC,EAAE+C,KAAI,GAAG5C,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEG,EAAEH,EAAE,GAAG,CAAC,EAAE,IAAI,EAAEG,EAAEH,EAAE,GAAG,CAAC,EAAE,IAAI,GAAGG,EAAEH,EAAE,GAAG,CAAC,EAAE,IAAI,GAAGA,EAAEwF,EAAGzB,EAAGmB,GAAGrD,EAAEM,GAAE,EAAE,EAAEY,GAAEvB,EAAE0C,GAAG3D,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAIyF,EAAG5B,GAAGQ,GAAGvD,EAAEmD,GAAG,CAAC,EAAEhE,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAE,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAI,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAI,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,EAAEyB,EAAE0C,GAAGnB,GAAE5C,EAAEJ,EAAE,GAAG,CAAC,EAAE,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAI,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAI,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE6B,EAAEmB,GAAE,EAAE,GAAGmB,GAAGlE,EAAEiB,EAAE,KAAK,EAAEjB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE4D,IAAIrD,GAAGP,EAAED,GAAG,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAImD,GAAE,EAAEJ,IAAGxC,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIwE,GAAGN,GAAG/D,EAAEH,EAAE,GAAG,CAAC,EAAE+C,GAAE5C,EAAEH,EAAE,GAAG,CAAC,EAAE+C,KAAI,EAAE5C,EAAEH,EAAE,GAAG,CAAC,EAAE+C,KAAI,GAAG5C,EAAEH,EAAE,GAAG,CAAC,EAAE+C,KAAI,GAAG5C,EAAEH,EAAE,GAAG,CAAC,EAAE4D,GAAGzD,EAAEH,EAAE,GAAG,CAAC,EAAE4D,KAAK,EAAEzD,EAAEH,EAAE,GAAG,CAAC,EAAE4D,KAAK,GAAGzD,EAAEH,EAAE,GAAG,CAAC,EAAE4D,KAAK,GAAGA,GAAGrD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGA,EAAEuE,IAAIhE,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIwF,EAAGtC,GAAEiB,GAAGlB,GAAEyB,GAAG,CAAC,EAAEvE,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEuB,EAAEC,EAAEoC,GAAGzD,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGkD,GAAE3C,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGC,EAAE8D,IAAIvD,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAIyF,EAAGlC,EAAEmB,GAAGpD,EAAEgD,GAAG,CAAC,EAAElE,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAE4E,GAAGpD,EAAE0B,GAAE/C,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGkD,GAAE3C,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGC,EAAEiE,IAAI1D,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAIyF,EAAGtB,GAAGmB,GAAG,EAAErD,EAAE,CAAC,EAAE7B,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAE0B,EAAEF,EAAE0B,GAAE/C,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAE,CAAC,SAAS0B,GAAE3B,EAAEC,EAAEC,EAAEG,EAAEC,EAAEI,EAAEC,EAAE,CAAC,IAAIC,EAAEE,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEtB,GAAEuB,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEE,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,EAAEC,EAAEC,EAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAG,EAAEC,EAAG,EAAEC,GAAG,EAAE,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAE,OAAO7F,EAAEJ,EAAEI,EAAE,IAAI,EAAE8F,GAAG/C,GAAGnD,EAAE,IAAI,CAAC,EAAEP,GAAGyE,GAAGf,GAAG,MAAM,GAAG,CAAC,EAAEgD,GAAGnG,EAAE,IAAI,EAAER,EAAE,GAAG,CAAC,EAAE0E,GAAGZ,GAAGtD,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE,GAAG,CAAC,EAAEkE,GAAGZ,GAAGtE,EAAEG,EAAEC,CAAC,EAAE6C,GAAEqB,GAAGE,GAAGxD,EAAE,IAAI,CAAC,EAAE0D,GAAGpE,GAAG4D,EAAG1D,GAAG,GAAG,CAAC,EAAEF,EAAE4D,EAAG,GAAG,CAAC,GAAG,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAG5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAGS,GAAGrE,EAAE4D,EAAG,GAAG,CAAC,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAG5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAG,GAAG5D,EAAE4D,EAAG,GAAG,CAAC,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAG5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAGD,GAAG3D,EAAE4D,EAAG,GAAG,CAAC,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAG5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAGC,GAAG7D,EAAE4D,EAAG,GAAG,CAAC,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAG5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAG1D,EAAEF,EAAE4D,EAAG,GAAG,CAAC,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAG5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAGG,GAAG/D,EAAE4D,EAAG,GAAG,CAAC,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAG5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAGA,EAAG5D,EAAE4D,EAAG,GAAG,CAAC,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,EAAE5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAG5D,EAAE4D,EAAG,GAAG,CAAC,GAAG,GAAGhE,EAAEJ,EAAE,GAAG,CAAC,EAAEoE,EAAGhE,EAAEJ,EAAE,GAAG,CAAC,EAAEoE,IAAK,EAAEhE,EAAEJ,EAAE,GAAG,CAAC,EAAEoE,IAAK,GAAGhE,EAAEJ,EAAE,GAAG,CAAC,EAAEoE,IAAK,GAAGhE,EAAEJ,EAAE,GAAG,CAAC,EAAEuE,GAAGnE,EAAEJ,EAAE,GAAG,CAAC,EAAEuE,KAAK,EAAEnE,EAAEJ,EAAE,GAAG,CAAC,EAAEuE,KAAK,GAAGnE,EAAEJ,EAAE,GAAG,CAAC,EAAEuE,KAAK,GAAGnE,EAAEJ,EAAE,GAAG,CAAC,EAAEqE,GAAGjE,EAAEJ,EAAE,GAAG,CAAC,EAAEqE,KAAK,EAAEjE,EAAEJ,EAAE,GAAG,CAAC,EAAEqE,KAAK,GAAGjE,EAAEJ,EAAE,GAAG,CAAC,EAAEqE,KAAK,GAAGjE,EAAEJ,EAAE,GAAG,CAAC,EAAEU,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,GAAGN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,GAAGN,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,KAAK,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,KAAK,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,KAAK,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAEmE,GAAG/D,EAAEJ,EAAE,GAAG,CAAC,EAAEmE,KAAK,EAAE/D,EAAEJ,EAAE,GAAG,CAAC,EAAEmE,KAAK,GAAG/D,EAAEJ,EAAE,GAAG,CAAC,EAAEmE,KAAK,GAAG/D,EAAE,GAAGM,EAAEV,EAAE,GAAG,EAAE,EAAE4E,GAAGxE,EAAEM,EAAE,EAAE,CAAC,EAAEkE,KAAK,EAAExE,EAAEM,EAAE,EAAE,CAAC,EAAEkE,KAAK,GAAGxE,EAAEM,EAAE,EAAE,CAAC,EAAEkE,KAAK,GAAGxE,EAAEM,EAAE,EAAE,CAAC,EAAEmE,GAAGzE,EAAEM,EAAE,EAAE,CAAC,EAAEmE,KAAK,EAAEzE,EAAEM,EAAE,EAAE,CAAC,EAAEmE,KAAK,GAAGzE,EAAEM,EAAE,EAAE,CAAC,EAAEmE,KAAK,GAAG9C,GAAE2C,EAAE,EAAEO,GAAG/D,EAAEwD,EAAE,EAAE4C,GAAGtH,EAAEkB,CAAC,EAAEkG,GAAG5C,EAAE,EAAE7D,GAAGyE,GAAGZ,GAAG,MAAM,GAAG,CAAC,EAAEY,GAAGzE,EAAEO,EAAE,IAAI,EAAElB,EAAE,GAAG,CAAC,EAAEoF,GAAGzE,EAAET,EAAEG,EAAEC,CAAC,EAAE6C,GAAExC,EAAE8D,GAAGvD,EAAE,IAAI,CAAC,EAAEa,GAAE0C,EAAE,EAAErE,EAAEc,EAAE,IAAI,CAAC,EAAE,IAAIV,EAAEU,EAAE,IAAI,CAAC,EAAEd,EAAEc,EAAE,IAAI,CAAC,EAAE,GAAGV,EAAEU,EAAE,IAAI,CAAC,EAAE,GAAGhB,EAAEM,EAAE,IAAIR,EAAEc,EAAEI,EAAE,IAAI,GAAG,CAAC,EAAE,GAAGqG,EAAGpG,EAAEX,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEE,GAAG,GAAG,QAAQ,EAAEkB,GAAGZ,EAAEiE,GAAG,GAAG,CAAC,EAAEjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,EAAEjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,GAAGjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAEJ,GAAG5C,EAAEvB,GAAGF,EAAEQ,EAAEiE,GAAG,GAAG,CAAC,KAAK,GAAG,EAAEnE,EAAEN,GAAG,GAAGmE,GAAG3D,EAAEiE,GAAG,GAAG,CAAC,EAAEjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,EAAEjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,GAAGjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,MAAM,GAAGzE,EAAEuH,EAAGlG,EAAE,UAAU,GAAGwD,IAAI7E,GAAGK,EAAEG,EAAEiE,GAAG,GAAG,CAAC,KAAK,GAAG,GAAGvE,KAAK,IAAIA,GAAGG,IAAI,IAAIC,KAAK,GAAG,EAAEiB,GAAGZ,EAAEH,EAAEM,EAAE,GAAG,CAAC,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,GAAGN,EAAEM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAEZ,EAAEuB,EAAE4C,GAAG,EAAEhE,EAAEL,IAAI,GAAGM,EAAEN,EAAE,GAAG,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAG/F,GAAGtB,EAAEM,EAAEiE,GAAG,GAAG,CAAC,IAAI,GAAG,QAAQjE,EAAEiE,GAAG,GAAG,CAAC,EAAEjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE/C,GAAGlB,EAAEM,EAAE,GAAG,CAAC,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,GAAGN,EAAEM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAET,EAAEoB,EAAEpB,EAAE,EAAEgE,GAAGnE,EAAEF,EAAEM,EAAE,EAAEA,EAAEN,IAAI,EAAEE,IAAI,EAAEG,EAAE,EAAE,EAAEA,EAAEA,GAAGL,EAAEQ,EAAEM,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEH,EAAEX,GAAG,EAAEW,IAAI,GAAGX,EAAEuH,EAAG5F,EAAE,UAAU,GAAGtB,GAAGH,GAAGF,EAAEQ,EAAEM,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,IAAIZ,GAAGF,IAAI,IAAIW,KAAK,GAAG,EAAEiB,EAAEuC,KAAK,EAAE,QAAQ,CAAC,EAAEjE,EAAEuB,EAAEnB,EAAE,EAAE8D,EAAG/D,EAAEL,EAAEqE,GAAG,EAAE/D,EAAEN,IAAI,EAAEK,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEiE,GAAGoD,EAAGhG,EAAE,EAAEK,EAAE,CAAC,EAAEyC,GAAG5C,EAAEvB,GAAGF,EAAEQ,EAAEM,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEH,EAAEX,GAAG,GAAGsF,GAAG9E,EAAEM,EAAE,GAAG,CAAC,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,GAAGN,EAAEM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAGT,EAAEH,EAAEA,EAAEqH,EAAG1F,GAAG,GAAGxB,GAAGH,GAAGF,EAAEQ,EAAEM,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,IAAIZ,GAAGF,IAAI,IAAIW,KAAK,EAAEkE,GAAGxE,IAAI,EAAE,EAAEe,EAAE,CAAC,EAAEpB,EAAEyB,EAAE4C,GAAG,EAAErE,EAAEE,IAAI,GAAGG,EAAEH,EAAEiE,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEW,GAAGT,EAAEqH,EAAGpG,EAAE,EAAEE,EAAE,CAAC,GAAGhB,EAAE,EAAEA,EAAEoB,EAAEzB,EAAE,EAAEE,EAAEA,IAAI,GAAGiE,GAAGxD,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEA,GAAGL,EAAEQ,EAAEiE,GAAG,GAAG,CAAC,KAAK,GAAG,EAAEJ,GAAGrE,GAAG,GAAGkF,GAAG1E,EAAEiE,GAAG,GAAG,CAAC,EAAEjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,EAAEjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,GAAGjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,MAAM,GAAGzE,EAAEuH,EAAGzF,GAAG,GAAG,IAAI9B,GAAGW,EAAEH,EAAEiE,GAAG,GAAG,CAAC,KAAK,GAAG,GAAGpE,KAAK,IAAIA,GAAGM,IAAI,IAAI0D,MAAM,EAAErC,EAAE,KAAK,EAAE,EAAEN,EAAE,CAAC,EAAExB,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEL,EAAEmE,GAAG,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAG/F,EAAE,EAAEG,EAAE,CAAC,EAAEzB,EAAEuB,EAAEvB,EAAE,EAAE0E,GAAG1E,EAAEF,IAAI,GAAG0E,GAAG1E,EAAEK,EAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAE4E,GAAG9E,EAAEE,IAAIwE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAErE,GAAGH,EAAEF,IAAI,GAAG,GAAGM,EAAE,EAAE6D,GAAG9D,GAAGL,GAAG,QAAQA,IAAI,IAAI,GAAG0E,GAAI,UAAS,KAAK,MAAM,GAAGN,EAAGpE,EAAEoE,EAAG,KAAK,EAAE/D,EAAE,EAAE,EAAEA,EAAE2E,GAAGhF,EAAEK,IAAI+D,IAAK,EAAE,YAAY,EAAE,GAAG,EAAEG,IAAI,QAAQvE,IAAI,IAAIqE,GAAGD,EAAI,UAAS,KAAK,GAAGzD,EAAEX,IAAI,GAAG,EAAEA,EAAEuH,EAAG7F,EAAE,EAAEE,EAAE,CAAC,EAAE1B,EAAEuB,EAAEpB,EAAEL,EAAEA,EAAEuH,EAAGnG,EAAE,EAAEG,EAAE,CAAC,EAAErB,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEA,EAAEL,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAE6E,IAAI/E,EAAEK,IAAIA,EAAEkH,EAAGlG,EAAE,EAAEM,EAAE,CAAC,GAAG,EAAE3B,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,EAAE0E,KAAK,EAAE/E,EAAE,EAAE,EAAEA,EAAEwE,GAAGO,IAAI7E,EAAE,UAAUG,EAAE0E,GAAI,UAAS,IAAI,EAAE7E,GAAGF,IAAI,QAAQM,EAAEN,IAAI+E,KAAK,EAAE,YAAY,EAAE,GAAG,KAAK7E,IAAI,EAAE6E,KAAK,GAAG,GAAG,GAAGpE,EAAE,EAAEmC,GAAE5C,GAAGF,EAAEuE,GAAGC,GAAG,KAAK,EAAEA,KAAK,EAAEtE,EAAE,EAAE,EAAEA,EAAE6C,GAAE/C,EAAEwE,GAAG+C,EAAGvH,EAAEE,EAAE,OAAO,CAAC,EAAEqE,GAAG9C,EAAEvB,EAAEqH,EAAGnG,EAAE,EAAEO,EAAE,CAAC,EAAE3B,EAAEyB,EAAEd,EAAET,EAAEA,EAAEqH,EAAGlG,EAAE,EAAEK,EAAE,CAAC,EAAE1B,EAAEyB,EAAEzB,EAAE,EAAEE,EAAEA,IAAI,GAAGS,EAAEA,EAAET,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEA,EAAEM,IAAI,GAAG,EAAEA,GAAG,QAAQA,IAAI,GAAGD,IAAI,GAAGA,EAAEL,EAAEE,EAAE,EAAEyF,GAAGrF,GAAGD,EAAEC,IAAI,GAAGK,EAAEL,EAAEK,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,KAAKM,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEX,EAAEW,GAAGT,EAAE,UAAUwF,GAAG/E,EAAG,UAAS,IAAI,EAAEqC,GAAErC,EAAEN,IAAI,OAAOC,IAAIJ,IAAI,EAAES,IAAI,GAAG,GAAG,EAAEsC,GAAE/C,EAAEkE,GAAI/D,EAAE,SAASgE,IAAI,EAAEnB,GAAE5C,EAAE6D,KAAK9D,IAAI,EAAE+D,IAAK,GAAGY,GAAG,GAAG,EAAE5B,GAAEpD,EAAEK,EAAEkH,EAAGvH,EAAEW,EAAE,OAAO,CAAC,EAAEX,EAAEyB,EAAE8C,GAAG,EAAEvE,EAAEK,IAAI,GAAGM,EAAEN,EAAEmE,GAAG,KAAK,EAAExE,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAGrH,EAAEI,EAAE,OAAO,CAAC,EAAEJ,EAAEuB,EAAEzB,EAAE,EAAE2E,GAAGrE,EAAED,EAAEM,EAAE,EAAE0D,GAAGhE,IAAI,EAAEC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAE6E,GAAGL,IAAI1E,EAAE,SAAS,IAAI,EAAE8E,GAAGF,KAAK5E,IAAI,EAAE0E,KAAK,GAAGI,GAAG,GAAG,EAAE5E,EAAEqH,EAAGlG,EAAE,EAAEQ,EAAEgD,EAAE,EAAExE,EAAEoB,EAAEnB,GAAGN,EAAEE,IAAIA,EAAEqH,EAAGtF,EAAEqD,KAAK,EAAE,QAAQ,EAAElE,EAAE,CAAC,GAAG,EAAEpB,EAAEyB,EAAEpB,EAAE,EAAEL,EAAEE,IAAI,EAAEI,IAAI,EAAEN,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGhG,EAAE,EAAEC,EAAE,CAAC,EAAEnB,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,GAAGI,EAAEJ,EAAEI,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAGpG,EAAE,EAAES,EAAE,CAAC,EAAE1B,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAG7F,EAAE,EAAEQ,EAAEgD,KAAK,EAAE,QAAQ,CAAC,EAAElF,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAG5F,EAAE,EAAEG,EAAEE,CAAC,EAAE9B,EAAEuB,EAAEzB,EAAE,EAAE0E,GAAGpE,EAAED,EAAEC,EAAE,EAAEK,EAAEN,IAAI,EAAEC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEA,GAAGF,EAAEQ,EAAEM,EAAE,GAAG,CAAC,KAAK,GAAG,EAAER,EAAEN,GAAG,GAAG4E,GAAGpE,EAAEM,EAAE,GAAG,CAAC,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,GAAGN,EAAEM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAGZ,EAAEqH,EAAGpF,EAAE,UAAU,GAAGjC,GAAGF,GAAGK,EAAEG,EAAEM,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,IAAId,GAAGK,IAAI,IAAIC,KAAK,GAAG,EAAEc,EAAE,CAAC,EAAEpB,EAAEyB,EAAEpB,EAAEH,EAAEA,EAAEqH,EAAGlG,EAAE,EAAEY,EAAE,CAAC,EAAEjC,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEA,EAAEH,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEM,GAAGJ,EAAEqH,EAAG3F,EAAE,EAAEC,EAAEgD,EAAE,GAAGxE,EAAE,EAAEA,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,EAAEI,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAGhG,EAAE,EAAEO,EAAEE,CAAC,EAAE9B,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGpG,EAAE,EAAEK,EAAE,CAAC,EAAEtB,EAAEuB,EAAEvB,EAAE,EAAE,GAAGG,EAAEL,EAAEM,EAAE,EAAEA,EAAEN,IAAI,EAAEK,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEA,GAAGF,EAAEQ,EAAEiE,GAAG,GAAG,CAAC,KAAK,GAAG,EAAEN,GAAGnE,GAAG,GAAGoE,EAAG5D,EAAEiE,GAAG,GAAG,CAAC,EAAEjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,EAAEjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,GAAGjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,MAAM,GAAGpE,EAAEH,EAAEA,GAAGF,EAAEQ,EAAEiE,GAAG,GAAG,CAAC,KAAK,GAAG,EAAEvE,EAAEqH,EAAGnF,EAAE,UAAU,GAAGlC,GAAGG,KAAK,IAAIL,EAAEA,GAAG,GAAGmE,MAAM,GAAG,EAAEzC,EAAE,CAAC,EAAE1B,EAAEyB,EAAEnB,EAAE,EAAEN,EAAEE,IAAI,GAAGG,EAAEH,EAAE,GAAG,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAG5F,EAAE,EAAEO,EAAE,CAAC,EAAElC,EAAEyB,EAAEzB,EAAE,EAAEmE,GAAGnE,EAAEE,IAAI,GAAG,GAAGA,EAAEG,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAE4F,GAAG1F,EAAEF,IAAI,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEK,GAAGL,EAAEE,IAAI,GAAG,GAAGS,EAAE,EAAE4D,GAAGlE,GAAGH,GAAG,QAAQA,IAAI,IAAIsE,GAAG,GAAI,UAAS,KAAK,MAAM,GAAGQ,GAAG9E,EAAEwE,GAAG,KAAK,EAAErE,EAAE,EAAE,EAAEA,EAAEkF,GAAGrF,EAAEG,IAAI2E,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEhF,GAAGA,EAAEE,IAAI,GAAG,GAAG4E,GAAG,EAAEzB,GAAErD,GAAGE,GAAGG,GAAG,QAAQH,IAAI,IAAIwE,GAAGM,GAAI,UAAS,KAAK,IAAID,GAAG,KAAK,EAAE1E,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEsD,GAAEpD,EAAEF,EAAEuH,EAAGrH,EAAEF,EAAE,QAAQ,EAAE,EAAEE,EAAEuB,EAAE4C,GAAG,EAAEM,GAAGtE,EAAEL,EAAE2E,GAAG,EAAEN,GAAGrE,IAAI,EAAEK,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAE6E,IAAIgB,GAAGvF,EAAE,IAAII,EAAEM,EAAE,IAAI,GAAG,CAAC,EAAEV,EAAEI,EAAE,GAAG,CAAC,GAAG,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEI,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQP,EAAEkH,EAAGlF,GAAGrC,EAAEQ,EAAEM,EAAE,EAAE,CAAC,IAAI,GAAG,QAAQN,EAAE,EAAEM,CAAC,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAE,EAAEc,EAAE,CAAC,EAAE1B,EAAEuB,EAAEnB,GAAGN,EAAEuH,EAAG/F,EAAE,EAAEc,GAAG3B,EAAEH,EAAEM,EAAE,EAAE,CAAC,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,GAAGN,EAAEM,EAAE,EAAE,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,GAAGT,EAAE,EAAEA,EAAEoB,EAAEvB,EAAE,EAAEG,EAAEL,IAAI,EAAEM,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAGvG,IAAGR,EAAEM,EAAE,EAAE,CAAC,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,GAAGN,EAAEM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAEoB,EAAE,CAAC,EAAEhC,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAGnF,EAAE,EAAEG,GAAEqC,KAAK,EAAE,QAAQ,CAAC,EAAE5E,EAAEyB,EAAEvB,EAAE,EAAE0E,GAAGtE,EAAED,EAAEC,EAAE,EAAEA,EAAED,IAAI,EAAEC,IAAI,EAAEN,EAAE,EAAE,EAAEA,EAAEW,GAAGT,EAAEM,EAAEM,EAAE,EAAE,CAAC,IAAI,EAAEH,IAAI,GAAGN,EAAEL,EAAEE,IAAI,GAAG,EAAEA,GAAGF,EAAEQ,EAAEM,EAAE,EAAE,CAAC,KAAK,GAAG,EAAEZ,EAAEqH,EAAG/E,GAAE,UAAU,GAAGtC,GAAGG,KAAK,IAAIL,EAAEA,GAAG,GAAGW,KAAK,GAAG,EAAEmB,EAAEE,CAAC,EAAEhC,EAAEyB,EAAEnB,EAAE,EAAEN,EAAEE,IAAI,GAAGG,EAAEH,EAAE0E,GAAG,KAAK,EAAE5E,EAAE,EAAE,EAAEA,EAAEM,GAAGJ,EAAEqH,EAAGtF,EAAE,EAAEQ,IAAGjC,EAAEiE,GAAG,EAAE,CAAC,EAAEjE,EAAEiE,GAAG,EAAE,CAAC,GAAG,EAAEjE,EAAEiE,GAAG,EAAE,CAAC,GAAG,GAAGjE,EAAEiE,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,GAAGpE,EAAE,EAAEA,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,EAAEI,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEH,EAAEqH,EAAGpF,EAAE,EAAEqD,GAAGpB,IAAK,EAAE,QAAQ,CAAC,EAAEpE,EAAEyB,EAAEpB,EAAE,EAAEM,EAAET,IAAI,GAAGI,EAAEJ,EAAEI,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEA,GAAGE,EAAEM,EAAEiE,GAAG,EAAE,CAAC,KAAK,GAAG,EAAEG,GAAG1E,GAAG,GAAGkE,EAAG5D,EAAEiE,GAAG,EAAE,CAAC,EAAEjE,EAAEiE,GAAG,EAAE,CAAC,GAAG,EAAEjE,EAAEiE,GAAG,EAAE,CAAC,GAAG,GAAGjE,EAAEiE,GAAG,EAAE,CAAC,GAAG,MAAM,GAAGvE,EAAEF,EAAEA,EAAEuH,EAAG1F,EAAEgD,GAAGnC,GAAE,UAAU,GAAGxC,GAAGG,GAAGL,EAAEQ,EAAEiE,GAAG,EAAE,CAAC,KAAK,GAAG,KAAK,IAAIzE,EAAEA,GAAG,GAAG4E,MAAM,GAAG,CAAC,EAAE1E,EAAEuB,EAAEd,EAAE,EAAET,EAAEF,IAAI,GAAGK,EAAEL,EAAEM,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,EAAED,EAAEA,EAAEkH,EAAG5E,IAAG3C,EAAEQ,EAAEiE,GAAG,EAAE,CAAC,IAAI,GAAG,QAAQjE,EAAE,EAAEiE,EAAE,EAAEjE,EAAEiE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAElD,EAAE,CAAC,EAAEvB,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAGC,EAAEA,EAAED,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGpG,EAAE,EAAEyB,GAAEwB,IAAK,EAAE,QAAQ,CAAC,EAAEpE,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEH,EAAEI,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEE,EAAEG,EAAEuE,GAAGvE,EAAEA,EAAE0E,GAAG,EAAEpE,EAAET,EAAEA,IAAI,EAAEG,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEM,EAAEE,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,EAAEZ,EAAEuH,EAAG/F,EAAE,EAAEa,EAAE,CAAC,EAAEnC,EAAEuB,EAAE2C,GAAI/D,EAAEL,IAAIA,EAAEuH,EAAGzF,EAAEE,EAAEM,EAAE,CAAC,GAAG,EAAEjC,EAAEoB,EAAEvB,EAAE,EAAEG,EAAEL,IAAI,EAAEoE,IAAK,EAAE/D,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAGnF,EAAE,EAAEpB,GAAE,CAAC,EAAEd,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGoE,EAAGpE,EAAEoE,EAAG,KAAK,EAAElE,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGhF,GAAE,EAAEiD,GAAG,CAAC,EAAEtF,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEL,EAAEoE,EAAG,KAAK,EAAElE,EAAE,EAAE,EAAEA,EAAEkE,GAAIpE,EAAEK,IAAIA,EAAEkH,EAAGrF,EAAE,EAAEM,GAAE,CAAC,GAAG,EAAExC,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,EAAE+D,IAAK,EAAEpE,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGtF,EAAE,EAAES,GAAE,CAAC,EAAE1C,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEH,EAAEkE,EAAG,KAAK,EAAEpE,EAAE,EAAE,EAAEA,EAAEoE,GAAIlE,EAAEqH,EAAGpF,EAAE,EAAEM,GAAE,CAAC,GAAGpC,EAAE,EAAEA,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,EAAEkE,IAAK,EAAE/D,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAG1F,EAAEgD,GAAGjC,GAAE,CAAC,EAAE1C,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGoE,EAAGpE,EAAEoE,EAAG,KAAK,EAAElE,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGpG,EAAE,EAAEwB,GAAE,CAAC,EAAEzC,EAAEuB,EAAEvB,EAAE,EAAEF,EAAEA,IAAI,GAAGK,EAAEL,EAAEoE,EAAG,KAAK,EAAElE,EAAE,EAAE,EAAEA,EAAEA,GAAGA,EAAEG,KAAK,GAAGA,EAAEA,EAAEC,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEM,EAAED,EAAEA,GAAGL,EAAEQ,EAAEI,EAAE,GAAG,CAAC,IAAI,GAAG,QAAQZ,EAAEE,EAAEG,EAAEL,EAAEK,IAAI,GAAGC,EAAEA,EAAED,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEyE,GAAGzE,EAAEA,IAAIM,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEJ,GAAGA,EAAEF,IAAI,GAAG,GAAGW,EAAE,EAAEX,GAAGE,GAAGS,EAAEiE,IAAI5E,GAAG,QAAQA,IAAI,IAAIoE,EAAG9D,EAAG,UAAS,KAAK,IAAIsE,GAAG,KAAK,EAAE5E,IAAI,EAAEE,EAAE,EAAE,EAAEA,GAAGmE,GAAG,EAAErE,GAAGqE,GAAG1D,EAAEgE,GAAG,KAAK,EAAEhE,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEkF,GAAGvE,EAAG,UAAS,EAAEwE,GAAGxE,EAAET,IAAIS,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE0E,GAAGhB,IAAInE,EAAE,SAASgF,IAAI,EAAEW,GAAG7F,IAAIE,IAAI,EAAEmE,KAAK,GAAG1D,EAAE,GAAG,EAAEiE,GAAGtE,EAAE+D,GAAGhE,EAAEL,EAAEuH,EAAGtE,GAAEC,GAAE,OAAO,CAAC,EAAEhD,EAAEuB,EAAEpB,EAAEL,EAAEA,EAAEuH,EAAGxE,GAAED,GAAE,OAAO,CAAC,EAAE5C,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEA,EAAEL,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEI,GAAGN,EAAEK,IAAIA,EAAEkH,EAAGjE,GAAED,GAAE,OAAO,CAAC,GAAG,EAAErD,EAAEyB,EAAEvB,EAAE,EAAEoF,GAAGhF,EAAEK,EAAEN,IAAI,EAAEC,IAAI,EAAEN,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGzF,EAAEE,EAAEK,EAAE,CAAC,EAAErC,EAAEyB,EAAEpB,EAAEH,EAAEA,EAAEqH,EAAGrF,EAAE,EAAEI,EAAE,CAAC,EAAEtC,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEA,EAAEH,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEM,GAAGJ,EAAEG,IAAIA,EAAEkH,EAAGvG,GAAE,EAAEwE,GAAG,CAAC,GAAG,EAAEtF,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,EAAEC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGhF,GAAE,EAAEE,GAAE,CAAC,EAAEpC,EAAEoB,EAAEvB,EAAE,EAAEG,EAAEL,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAGnF,EAAE,EAAEI,GAAE,CAAC,EAAEtC,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAGtF,EAAE,EAAEW,GAAE,CAAC,EAAE5C,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGpF,EAAE,EAAEO,GAAE,CAAC,EAAE1C,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEH,EAAEI,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEM,GAAGJ,EAAEG,IAAIA,EAAEkH,EAAG1F,EAAEgD,GAAGlC,GAAE,CAAC,GAAG,EAAEzC,EAAEuB,EAAEzB,EAAE,EAAE+E,GAAGzE,EAAED,EAAEA,IAAI,EAAEC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEA,GAAGF,EAAEQ,EAAEI,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEkE,GAAG9E,GAAG,GAAG2E,GAAGnE,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEI,EAAE,GAAG,CAAC,GAAG,MAAM,GAAGP,IAAIyF,IAAI9F,GAAGM,EAAEE,EAAEI,EAAE,GAAG,CAAC,KAAK,GAAG,GAAGV,KAAK,EAAE,GAAGG,EAAE,EAAE0E,GAAGzE,GAAGJ,GAAG,EAAE4F,KAAK,IAAI5F,GAAGI,IAAI,IAAIwE,MAAM,GAAGC,GAAG,EAAEzE,EAAEJ,IAAI,EAAEI,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEyE,GAAGH,KAAK,EAAE,QAAQ3E,EAAEuH,EAAGrF,EAAE,EAAEG,EAAE,CAAC,EAAEnC,EAAEuB,EAAEpB,EAAEL,EAAEA,EAAEuH,EAAGnF,EAAE,EAAEE,EAAE,CAAC,EAAEpC,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEA,EAAEL,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEyE,IAAI3E,EAAEK,IAAIA,EAAEkH,EAAGvG,GAAE,EAAEyB,GAAE,CAAC,GAAG,EAAEzC,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,EAAEsE,KAAK,EAAE3E,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAGhF,GAAE,EAAEG,GAAE,CAAC,EAAExC,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,GAAGsE,GAAGtE,EAAEsE,GAAG,KAAK,EAAEzE,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAG/E,GAAE,EAAEgD,GAAG,CAAC,EAAExF,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAGsE,GAAGtE,EAAEsE,GAAG,KAAK,EAAE3E,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGtF,EAAE,EAAEU,GAAE,CAAC,EAAEtC,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,GAAGyE,GAAGzE,EAAEyE,GAAG,KAAK,EAAEtE,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAGpF,EAAE,EAAES,GAAE,CAAC,EAAE1C,EAAEuB,EAAEpB,EAAE,EAAEL,EAAEA,IAAI,GAAG2E,GAAG3E,EAAE2E,GAAG,KAAK,EAAEzE,EAAE,EAAE,EAAEA,EAAEsG,GAAGxG,GAAGiG,GAAGtB,GAAGG,GAAG,KAAK,EAAEH,KAAK,EAAE3E,EAAE,EAAE,EAAEA,EAAE+G,GAAG/G,EAAEA,IAAIiG,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE5F,GAAG,QAAQL,IAAI,IAAIsG,GAAGL,GAAI,UAAS,KAAK,GAAGjG,GAAGA,IAAI,GAAG,GAAGM,EAAE,EAAEoG,GAAG1G,EAAEK,IAAI,GAAGoG,GAAGpG,EAAE0E,GAAG,KAAK,EAAE/E,EAAE,EAAE,EAAEA,EAAEgH,GAAGhH,EAAEA,IAAIyG,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEpG,GAAG,QAAQL,IAAI,IAAImG,GAAGM,GAAI,UAAS,KAAK,GAAGzG,GAAGA,IAAI,GAAG,GAAGW,EAAE,EAAET,GAAGG,IAAI,GAAGC,EAAED,EAAEiF,GAAG,KAAK,EAAEtF,EAAE,EAAE,EAAEA,GAAGqE,GAAG,EAAEA,IAAIhE,EAAEC,EAAEsE,GAAG,IAAI5E,EAAE,SAASoE,GAAI,EAAEK,GAAGzE,GAAGE,EAAEG,IAAI,EAAEC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,KAAKF,IAAI,EAAEK,IAAI,GAAGoE,GAAG,GAAG,EAAEwC,GAAGjH,EAAEA,IAAIqE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEhE,GAAG,QAAQL,IAAI,IAAIoG,GAAG/B,GAAI,UAAS,KAAK,GAAGrE,GAAGA,GAAG,IAAI6F,GAAG,EAAEvF,EAAEN,EAAEK,IAAI,GAAGM,EAAEN,EAAEgF,GAAG,KAAK,EAAErF,EAAE,EAAE,EAAEA,EAAE8G,GAAG9G,EAAEA,IAAIW,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE0F,IAAI,QAAQrG,IAAI,IAAIsF,GAAG3E,EAAG,UAAS,KAAK,GAAGiE,GAAG5E,GAAG,GAAG8F,GAAGd,IAAIhF,EAAE,SAAS0E,IAAI,EAAEa,GAAGhB,KAAKvE,IAAI,EAAEgF,KAAK,GAAGO,GAAG,GAAG,EAAEvF,EAAEuH,EAAGnG,EAAE,EAAEM,EAAE,CAAC,EAAE6E,GAAGrG,EAAEuB,EAAE4D,GAAGrF,EAAE2E,GAAG3E,EAAG,UAAS,EAAEkG,GAAGhG,EAAEA,IAAIF,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEuD,GAAEvD,EAAEE,IAAI,GAAG,EAAEF,EAAEuH,EAAG1E,IAAG,QAAQ3C,IAAI,GAAGyE,KAAK,GAAG3E,EAAE,QAAQ,EAAE,EAAEE,EAAEuB,EAAE0C,GAAG,EAAEjE,EAAEF,IAAI,GAAGK,EAAEL,EAAE,GAAG,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEwE,GAAGrE,GAAGL,EAAE,SAASwE,IAAI,EAAEJ,EAAGlE,IAAIF,IAAI,EAAEK,IAAI,GAAGuF,GAAG,GAAG,EAAE1F,EAAEqH,EAAG3F,EAAE,EAAEK,EAAE,CAAC,EAAEjC,EAAEyB,EAAEpB,EAAEH,EAAEA,EAAEqH,EAAGnG,EAAE,EAAEmB,GAAE,CAAC,EAAEvC,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEA,EAAEH,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGlG,EAAE,EAAEc,EAAE,CAAC,EAAEnC,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEH,EAAEG,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEmE,IAAIjE,EAAEG,IAAIA,EAAEkH,EAAG/F,EAAE,EAAEK,EAAEgD,EAAE,GAAG,EAAE3E,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,EAAE8D,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGhG,EAAE,EAAEW,EAAE,CAAC,EAAE7B,EAAEoB,EAAEvB,EAAE,EAAEG,EAAEL,IAAI,GAAGmE,GAAGnE,EAAEmE,GAAG,KAAK,EAAE9D,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAGpG,EAAE,EAAEW,EAAEE,CAAC,EAAE9B,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGmE,GAAGnE,EAAEmE,GAAG,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAG7F,EAAE,EAAE8D,GAAG,CAAC,EAAExF,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAG8D,GAAG9D,EAAE8D,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAG5F,EAAE,EAAES,EAAE,CAAC,EAAEpC,EAAEyB,EAAEzB,EAAE,EAAE,GAAGK,EAAEH,EAAEiE,GAAG,EAAEA,GAAGjE,IAAI,EAAEG,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEA,EAAEuH,EAAGlG,EAAE,EAAEkB,GAAE,CAAC,EAAErC,EAAEuB,EAAEpB,EAAEL,EAAEA,EAAEuH,EAAGnG,EAAE,EAAEJ,GAAE,CAAC,EAAEd,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEA,EAAEL,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEqE,IAAIvE,EAAEuH,EAAG/F,EAAE,EAAES,EAAE,CAAC,GAAG5B,EAAE,EAAEA,EAAEoB,EAAEvB,EAAE,EAAEG,EAAEL,IAAI,EAAEuE,KAAK,EAAElE,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAG3F,EAAE,EAAEO,EAAE,CAAC,EAAEjC,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGuE,GAAGvE,EAAEuE,GAAG,KAAK,EAAErE,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAG1F,EAAEgD,GAAG/C,EAAEE,CAAC,EAAEhC,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAGkE,GAAGlE,EAAEkE,GAAG,KAAK,EAAEvE,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGhG,EAAE,EAAEa,EAAE,CAAC,EAAEpC,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEH,EAAEqE,GAAG,KAAK,EAAEvE,EAAE,EAAE,EAAEA,EAAEuE,IAAIrE,EAAEG,IAAIA,EAAEkH,EAAGpG,EAAE,EAAEe,EAAE,CAAC,GAAG,EAAEhC,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,EAAEkE,KAAK,EAAErE,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAG7F,EAAE,EAAEe,GAAE,CAAC,EAAEpC,EAAEoB,EAAEvB,EAAE,EAAEG,EAAEL,IAAI,GAAGuE,GAAGvE,EAAEuE,GAAG,KAAK,EAAElE,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAG5F,EAAE,EAAE6D,GAAG,CAAC,EAAEtF,EAAEuB,EAAEpB,EAAE,EAAEyE,GAAG5E,EAAEF,IAAI,GAAG+E,GAAG/E,EAAEuE,GAAG,KAAK,EAAErE,EAAE,EAAE,EAAEA,EAAE0G,GAAG5G,EAAEE,IAAI6E,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE7E,GAAG,QAAQF,IAAI,IAAIgF,GAAGD,GAAI,UAAS,KAAK,GAAG/E,GAAGA,IAAI,GAAG,GAAGmE,GAAG,EAAEK,GAAGxE,EAAEE,IAAI,GAAG0F,GAAG1F,EAAE,GAAG,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEgG,GAAGhG,EAAEA,IAAI4F,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE1F,GAAGG,EAAEL,IAAI,GAAG,GAAGoE,EAAG,EAAEM,GAAGxE,GAAGF,GAAG,QAAQA,IAAI,IAAIuE,GAAGqB,GAAI,UAAS,KAAK,MAAM,GAAGC,GAAG7F,EAAE0E,GAAG,KAAK,EAAExE,EAAE,EAAE,EAAEA,EAAEyG,GAAG3G,EAAEE,IAAI2F,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE1B,IAAI,QAAQnE,IAAI,IAAIoE,EAAGyB,GAAI,UAAS,KAAK,GAAG7F,GAAGA,GAAG,IAAIuF,GAAG,EAAE/B,GAAExD,GAAGE,EAAEiE,GAAG2B,GAAG,KAAK,EAAE3B,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEyD,EAAEvD,EAAEF,EAAEuH,EAAGrH,EAAEF,EAAE,QAAQ,EAAE,EAAEE,EAAEuB,EAAEmD,GAAG,EAAEyB,GAAGhG,EAAEL,EAAEqG,GAAG,EAAEzB,GAAG5E,IAAI,EAAEK,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGlG,EAAE,EAAEgB,EAAE,CAAC,EAAEnC,EAAEuB,EAAEpB,EAAEL,EAAEA,EAAEuH,EAAG3F,EAAE,EAAEU,EAAE,CAAC,EAAEpC,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEA,EAAEL,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEiE,IAAInE,EAAEK,IAAIA,EAAEkH,EAAGzF,EAAEE,EAAEhB,GAAE,CAAC,GAAG,EAAEhB,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,EAAE8D,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGrF,EAAE,EAAEK,GAAE,CAAC,EAAElC,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,GAAGiE,GAAGjE,EAAEiE,GAAG,KAAK,EAAE9D,EAAE,EAAE,EAAEA,EAAEH,EAAEqH,EAAG/F,EAAE,EAAEgB,GAAE,CAAC,EAAExC,EAAEyB,EAAEpB,EAAE,EAAEL,EAAEE,IAAI,GAAGiE,GAAGjE,EAAEiE,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAGtF,EAAE,EAAEuD,GAAG,CAAC,EAAEtF,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,GAAG8D,GAAG9D,EAAE8D,GAAG,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGpF,EAAE,EAAEC,EAAE,CAAC,EAAElC,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEL,EAAEmE,GAAG,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEiE,IAAInE,EAAEK,IAAIA,EAAEkH,EAAG1F,EAAEgD,GAAGpC,GAAE,CAAC,GAAG,EAAEzC,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,EAAE8D,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGhG,EAAE,EAAEqB,GAAE,CAAC,EAAEvC,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,GAAGiE,GAAGjE,EAAEiE,GAAG,KAAK,EAAE9D,EAAE,EAAE,EAAEA,EAAEH,EAAEqH,EAAGpG,EAAE,EAAEuB,GAAE,CAAC,EAAE1C,EAAEyB,EAAEpB,EAAE,EAAEL,EAAEE,IAAI,GAAGiE,GAAGjE,EAAEiE,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAG5F,EAAE,EAAEgB,GAAE,CAAC,EAAEzC,EAAEuB,EAAEzB,EAAE,EAAEuF,GAAGpB,GAAG9D,EAAE8D,GAAG,EAAE9D,EAAEA,IAAI,EAAE8D,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEA,GAAGF,EAAEQ,EAAEI,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,GAAGZ,GAAG,EAAE+F,KAAK,GAAG5B,GAAG,UAAU,GAAGjE,GAAGF,GAAGmE,GAAG3D,EAAEI,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,IAAIZ,GAAGmE,KAAK,IAAI,MAAM,GAAGjE,EAAEG,EAAE,GAAGL,EAAEmE,GAAGoB,GAAG,EAAEpB,GAAGnE,IAAI,EAAEmE,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAE4F,GAAGyB,EAAGnE,GAAEJ,GAAE,OAAO,CAAC,EAAEuC,GAAG9D,EAAEzB,GAAGK,GAAG,QAAQsF,KAAK,GAAGD,KAAK,KAAKL,IAAInF,EAAE,SAASyE,IAAI,GAAG,EAAEzE,EAAEqG,KAAK,OAAOL,KAAKhG,IAAI,EAAEmF,KAAK,GAAG,IAAIM,KAAK,IAAI,EAAEjC,EAAExD,EAAEF,IAAI,EAAEK,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEyD,EAAG3D,EAAEE,EAAEqH,EAAGvH,EAAEE,EAAE,OAAO,CAAC,EAAEF,EAAEyB,EAAE8D,GAAG,EAAEvF,EAAEE,IAAI,GAAGG,EAAEH,EAAE4F,GAAG,KAAK,EAAE9F,EAAE,EAAE,EAAEA,EAAE2E,IAAIzE,EAAEqH,EAAGxE,GAAED,GAAE,OAAO,CAAC,GAAGzC,EAAE,EAAEA,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,EAAEyE,KAAK,EAAEtE,EAAE,EAAE,EAAEA,EAAEH,EAAEqH,EAAGtE,GAAEC,GAAE,QAAQ,EAAE,EAAElD,EAAEyB,EAAEpB,EAAE,EAAEL,EAAEE,IAAI,GAAGyE,GAAGzE,EAAEyE,GAAG,KAAK,EAAE3E,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAGjE,GAAED,GAAE,OAAO,CAAC,EAAEnD,EAAEuB,EAAEzB,EAAE,EAAEkF,IAAIlF,GAAG,QAAQmF,KAAK,GAAGD,KAAK,KAAKP,GAAGtE,EAAEsE,GAAG,GAAG,EAAEzE,GAAGiF,KAAK,GAAG,IAAI9E,IAAI,EAAEsE,KAAK,EAAEzE,EAAE,EAAE,EAAEA,GAAG,EAAEgG,GAAGvB,GAAGR,KAAK,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEnE,GAAGA,IAAI,EAAEkF,KAAK,EAAEhF,EAAE,EAAE,EAAEA,GAAGiE,GAAG,EAAEjE,GAAGiE,GAAG,GAAGe,GAAG,IAAI7E,EAAE,UAAUkG,GAAG,GAAI,UAAS,IAAI,EAAElG,GAAGL,GAAGA,EAAEmE,KAAK,EAAEe,KAAK,EAAElF,EAAE,EAAE,EAAEA,KAAKK,IAAI,EAAE8D,KAAK,GAAGQ,GAAG,GAAG,GAAGC,GAAG,EAAEkB,GAAG3B,GAAGnE,IAAIE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEmF,IAAIhF,GAAG,GAAGH,EAAEmG,GAAG,KAAK,EAAEnG,IAAI,EAAEG,EAAE,EAAE,EAAEA,MAAMH,EAAE,UAAUqF,GAAGrF,EAAG,UAAS,MAAM,EAAE,KAAK,GAAGiE,GAAG,GAAG,EAAE4B,GAAG/F,EAAE,GAAGE,EAAE,EAAEiE,GAAGxD,EAAEA,EAAEL,EAAEuG,GAAGhB,IAAI7F,EAAE,SAASoE,GAAI,EAAEO,GAAGD,KAAK1E,IAAI,EAAE6F,KAAK,GAAGc,GAAG,GAAG,EAAE3G,EAAEuH,EAAG5D,EAAGD,EAAE,QAAQ,EAAE,EAAExD,EAAEuB,EAAEnB,GAAGD,EAAEL,IAAIA,EAAEuH,EAAG1E,GAAEU,GAAE,OAAO,CAAC,GAAG,EAAElD,EAAEoB,EAAEvB,EAAE,EAAEA,EAAEsE,IAAIxE,IAAI,EAAEM,IAAI,EAAED,EAAE,EAAE,EAAEA,GAAG,EAAEkE,IAAIlE,EAAEC,EAAEsF,GAAG,IAAI5F,EAAE,SAASuE,IAAI,EAAEG,IAAIxE,EAAEG,IAAI,EAAEuF,KAAK,EAAE1F,EAAE,EAAE,EAAEA,KAAKF,IAAI,EAAEK,IAAI,GAAG2F,GAAG,GAAG,EAAE9F,EAAEqH,EAAG1E,GAAEU,GAAE,QAAQ,EAAE,EAAEvD,EAAEyB,EAAEqD,GAAG,EAAE9E,EAAEE,IAAI,GAAGG,EAAEH,EAAE6E,GAAG,KAAK,EAAE/E,EAAE,EAAE,EAAEA,EAAEM,GAAGJ,EAAEqH,EAAG5D,EAAGD,EAAE,OAAO,CAAC,GAAGrD,EAAE,EAAEA,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,EAAEI,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAGnE,GAAEJ,GAAE,QAAQ,EAAE,EAAE9C,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEkE,EAAG9D,GAAGN,EAAE,SAASgF,IAAI,EAAEJ,GAAG1E,IAAIF,IAAI,EAAEM,IAAI,GAAGsG,GAAG,GAAG,EAAE1G,EAAEqH,EAAG3F,EAAE,EAAEW,GAAE,CAAC,EAAEvC,EAAEyB,EAAEpB,EAAEH,EAAEA,EAAEqH,EAAGlG,EAAE,EAAEL,GAAE,CAAC,EAAEhB,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEA,EAAEH,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEM,GAAGJ,EAAEqH,EAAGnG,EAAE,EAAEoB,GAAE,CAAC,GAAGnC,EAAE,EAAEA,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,EAAEI,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAGzF,EAAEE,EAAEC,EAAE,CAAC,EAAE/B,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAG/F,EAAE,EAAEW,EAAE,CAAC,EAAEnC,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAG1F,EAAEgD,GAAG3C,EAAE,CAAC,EAAEhC,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAGhG,EAAE,EAAEiE,GAAG,CAAC,EAAExF,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGpG,EAAE,EAAEiB,EAAE,CAAC,EAAE/B,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,GAAGI,EAAEJ,EAAEI,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAG7F,EAAE,EAAEgB,GAAE,CAAC,EAAExC,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAG5F,EAAE,EAAEc,GAAE,CAAC,EAAEzC,EAAEyB,EAAEvB,EAAE,EAAE,GAAGI,EAAED,EAAEC,EAAE,EAAEA,EAAED,IAAI,EAAEC,IAAI,EAAEN,EAAE,EAAE,EAAEA,EAAEA,EAAEuH,EAAG3F,EAAE,EAAEZ,GAAE,CAAC,EAAEd,EAAEuB,EAAEpB,EAAEL,EAAEA,EAAEuH,EAAGnG,EAAE,EAAEkB,EAAE,CAAC,EAAEpC,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEA,EAAEL,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEsE,IAAIxE,EAAEK,IAAIA,EAAEkH,EAAG/F,EAAE,EAAEe,GAAE,CAAC,GAAG,EAAEvC,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,EAAEmE,KAAK,EAAExE,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGlG,EAAE,EAAEmB,GAAE,CAAC,EAAEnC,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,GAAGsE,GAAGtE,EAAEsE,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAGtF,EAAE,EAAEC,EAAE,CAAC,EAAEhC,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGwE,GAAGxE,EAAEwE,GAAG,KAAK,EAAEtE,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAGzF,EAAEE,EAAEG,EAAE,CAAC,EAAEnC,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAGmE,GAAGnE,EAAEmE,GAAG,KAAK,EAAExE,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAG1F,EAAEgD,GAAGzC,EAAE,CAAC,EAAElC,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,GAAGmE,GAAGnE,EAAEmE,GAAG,KAAK,EAAEtE,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAGhG,EAAE,EAAEkB,GAAE,CAAC,EAAEzC,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAGmE,GAAGnE,EAAEmE,GAAG,KAAK,EAAExE,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGpG,EAAE,EAAEqE,GAAG,CAAC,EAAEnF,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,GAAGsE,GAAGtE,EAAEsE,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEmE,IAAIxE,EAAEuH,EAAG7F,EAAE,EAAEkB,GAAE,CAAC,GAAG4B,GAAG,EAAEtE,EAAEuB,EAAEpB,EAAE,EAAEA,EAAEkH,EAAG5F,EAAE,EAAEe,GAAE,CAAC,EAAE1C,EAAEyB,GAAGzB,IAAI,EAAEwE,KAAK,EAAEtE,EAAE,EAAE,EAAEA,GAAG,EAAE2F,GAAG7F,EAAEK,IAAI,GAAGsG,GAAGtG,EAAEmE,GAAG,KAAK,EAAExE,EAAE,EAAE,EAAEA,EAAE6D,GAAG7D,EAAEA,IAAI2G,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEtG,GAAG,QAAQL,IAAI,IAAI2F,GAAGgB,GAAI,UAAS,KAAK,GAAG3G,GAAGA,IAAI,GAAG,GAAGM,EAAE,EAAEoF,GAAG1F,EAAEK,IAAI,GAAGgG,GAAGhG,EAAE,GAAG,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAE8D,GAAG9D,EAAEA,IAAIqG,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEhG,GAAG,QAAQL,IAAI,IAAImF,GAAGkB,GAAI,UAAS,KAAK,GAAGrG,GAAGA,IAAI,GAAG,GAAG4E,GAAG,EAAEM,GAAGlF,EAAEK,IAAI,GAAGuF,GAAGvF,EAAE+D,EAAG,KAAK,EAAEpE,EAAE,EAAE,EAAEA,EAAE+D,GAAG/D,EAAEA,IAAI4F,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEvF,GAAG,QAAQL,IAAI,IAAI8E,GAAGc,GAAI,UAAS,KAAK,GAAG5F,GAAGA,GAAG,IAAI0E,GAAG,EAAEpE,EAAEN,EAAEK,IAAI,GAAG+D,EAAG/D,EAAEkE,GAAG,KAAK,EAAEvE,EAAE,EAAE,EAAEA,EAAE0E,GAAG1E,EAAEA,IAAIoE,IAAK,EAAE,YAAY,EAAE,GAAG,EAAEQ,IAAI,QAAQ5E,IAAI,IAAIK,EAAE+D,EAAI,UAAS,KAAK,GAAGpE,GAAGA,GAAG,IAAI2E,GAAG,EAAEiC,GAAG5G,GAAG,GAAG4E,GAAGiC,GAAG,KAAK,EAAEjC,KAAK,EAAE5E,EAAE,EAAE,EAAEA,EAAEgG,GAAG,GAAGhG,EAAEuH,EAAG,GAAGvH,EAAE,QAAQ,EAAE,EAAEE,EAAEuB,EAAE,GAAGzB,EAAEA,EAAEuH,EAAG9D,EAAED,GAAE,OAAO,CAAC,EAAEtD,EAAEuB,EAAEvB,EAAE,EAAEF,GAAGA,IAAI,GAAG,GAAG,GAAGA,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,GAAGS,EAAE,EAAEuG,IAAIvG,EAAEwD,GAAG,GAAG,IAAIjE,EAAE,SAASoF,IAAI,EAAE6B,IAAInH,EAAEW,IAAI,EAAE,KAAK,EAAEX,EAAE,EAAE,EAAEA,KAAKE,IAAI,EAAES,IAAI,GAAGmG,GAAG,GAAG,EAAElC,GAAGP,GAAG,GAAGI,GAAGJ,GAAGkD,EAAGvB,GAAGY,GAAG,OAAO,CAAC,EAAEjG,EAAEc,EAAEoF,GAAG7G,EAAEoE,GAAIlE,EAAE,SAASG,GAAG,EAAEuD,GAAGtD,EAAEA,IAAIJ,IAAI,EAAEkE,IAAK,GAAGM,GAAG,GAAG,EAAErE,EAAEkH,EAAG9D,EAAED,GAAE,QAAQ,EAAE,EAAEtD,EAAEuB,EAAEd,EAAE,EAAET,EAAEG,IAAI,GAAGgE,GAAGhE,EAAEgE,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAGvH,EAAEM,EAAE,QAAQ,EAAE,EAAEN,EAAEyB,EAAEvB,EAAE,EAAE4G,GAAGxG,EAAED,EAAEgE,GAAG,EAAEF,GAAG9D,IAAI,EAAEC,IAAI,EAAEN,EAAE,EAAE,EAAEA,EAAEA,EAAEuH,EAAGjE,GAAED,GAAE,OAAO,CAAC,EAAEnD,EAAEuB,EAAEnB,GAAGD,EAAEL,IAAIA,EAAEuH,EAAGtE,GAAEC,GAAE,OAAO,CAAC,GAAG,EAAE7C,EAAEoB,EAAEvB,EAAE,EAAEA,EAAEwG,IAAI1G,IAAI,EAAEM,IAAI,EAAED,EAAE,EAAE,EAAEA,GAAG,EAAEiF,GAAGtF,EAAEM,EAAEmG,GAAG,EAAE9F,EAAET,EAAEF,IAAI,EAAEyG,KAAK,EAAEvG,EAAE,EAAE,EAAEA,EAAEA,EAAEqH,EAAGjE,GAAED,GAAE,OAAO,CAAC,EAAErD,EAAEyB,EAAE+E,GAAG,EAAExG,EAAEE,IAAI,GAAGG,EAAEH,EAAE+F,GAAG,KAAK,EAAEjG,EAAE,EAAE,EAAEA,EAAEuE,GAAGlE,GAAGH,EAAE,SAASoG,IAAI,EAAEvB,GAAG/E,IAAIE,IAAI,EAAEG,IAAI,GAAG0G,GAAG,GAAG,EAAE7G,EAAEqH,EAAGnF,EAAE,EAAEC,EAAE,CAAC,EAAErC,EAAEyB,EAAEpB,EAAEH,EAAEA,EAAEqH,EAAGjF,EAAE,EAAEkD,GAAG,CAAC,EAAExF,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEA,EAAEH,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEM,GAAGJ,EAAEG,IAAIA,EAAEkH,EAAGvG,GAAE,EAAE0B,GAAE,CAAC,GAAG,EAAExC,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,EAAEC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAGhF,GAAE,EAAEK,GAAE,CAAC,EAAE5C,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAG/E,GAAE,EAAEC,GAAE,CAAC,EAAEpC,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,GAAGI,EAAEJ,EAAEI,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAGpF,EAAE,EAAEQ,GAAE,CAAC,EAAEzC,EAAEuB,EAAEpB,EAAE,EAAE+D,EAAG9D,EAAEN,EAAEM,EAAE,EAAEA,EAAEN,IAAI,EAAEM,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEA,GAAGF,EAAEQ,EAAEI,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEyD,GAAGrE,GAAG,GAAG0E,GAAGlE,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEI,EAAE,GAAG,CAAC,GAAG,MAAM,GAAGV,EAAE,UAAU,GAAGA,GAAGG,GAAGL,EAAEQ,EAAEI,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,IAAIZ,EAAEqE,GAAGrE,GAAG,MAAM,GAAGA,EAAEM,EAAE8D,EAAG/D,EAAEH,EAAEkE,EAAG,EAAE9D,EAAEJ,IAAI,EAAEG,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEqE,GAAGK,KAAK,EAAE,QAAQ1E,EAAEuH,EAAGlF,EAAE,EAAEmD,GAAG,CAAC,EAAEtF,EAAEuB,EAAEpB,EAAEL,EAAEA,EAAEuH,EAAGjF,EAAE,EAAEG,GAAE,CAAC,EAAEvC,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEA,EAAEL,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGvG,GAAE,EAAE4B,GAAE,CAAC,EAAE1C,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEL,EAAEK,EAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEwE,IAAI1E,EAAEK,IAAIA,EAAEkH,EAAGhF,GAAE,EAAEI,GAAE,CAAC,GAAG,EAAE3C,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,EAAEqE,KAAK,EAAE1E,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAG/E,GAAE,EAAEE,GAAE,CAAC,EAAErC,EAAEoB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGwE,GAAGxE,EAAEwE,GAAG,KAAK,EAAErE,EAAE,EAAE,EAAEA,EAAEoE,GAAGzE,GAAGsG,GAAGjC,GAAGK,GAAG,KAAK,EAAEA,KAAK,EAAE1E,EAAE,EAAE,EAAEA,EAAEgE,GAAGhE,EAAEA,IAAIsG,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEpG,GAAGG,EAAEL,IAAI,GAAG,GAAGM,EAAE,EAAE0E,GAAG9E,GAAGF,GAAG,QAAQA,IAAI,IAAI2E,GAAG2B,GAAI,UAAS,KAAK,MAAM,GAAGI,GAAG1G,EAAEoE,EAAG,KAAK,EAAElE,EAAE,EAAE,EAAEA,EAAE+D,GAAGjE,EAAEE,IAAIwG,KAAK,EAAE,YAAY,EAAE,GAAG,EAAExG,GAAG,QAAQF,IAAI,IAAIwE,GAAGkC,GAAI,UAAS,KAAK,GAAG1G,GAAGA,IAAI,GAAG,GAAG+E,GAAG,EAAEL,GAAG1E,EAAEE,IAAI,GAAGqE,GAAGrE,EAAEqE,GAAG,KAAK,EAAEvE,EAAE,EAAE,EAAEA,EAAEkE,GAAGlE,EAAEA,IAAIuE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAErE,GAAGG,EAAEL,GAAG,IAAIW,EAAE,EAAEoG,GAAG7G,GAAGA,GAAGF,GAAG,QAAQA,IAAI,IAAIoE,EAAGG,GAAI,UAAS,KAAK,MAAM,GAAGjE,EAAEN,EAAEsF,GAAG,KAAK,EAAEpF,EAAE,EAAE,EAAEA,MAAMG,EAAE,SAAS8F,MAAM,EAAE7F,IAAI,GAAG0G,GAAG,GAAG,EAAEb,GAAGnG,EAAEM,EAAED,EAAE,EAAEgE,GAAGrE,EAAG,UAAS,EAAEgH,GAAGhH,EAAEE,IAAIF,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEK,GAAGH,EAAEF,GAAG,IAAImE,GAAG,EAAEjE,IAAIF,GAAG,QAAQA,IAAI,GAAGqE,KAAK,MAAM,GAAG/D,EAAEN,EAAE8G,GAAG,KAAK,EAAEzG,EAAE,EAAE,EAAEA,GAAG,GAAG,EAAE4F,GAAG/F,GAAGA,GAAGF,EAAEM,KAAK,GAAGA,EAAEA,EAAEsE,GAAG,KAAK,EAAE1E,EAAE,EAAE,EAAEA,MAAMG,EAAE,SAAS+F,MAAM,EAAE9F,IAAI,GAAG2G,GAAG,GAAG,EAAE,GAAGjH,EAAEM,EAAED,EAAE,EAAEM,EAAEX,EAAG,UAAS,EAAEwG,GAAGxG,EAAEE,IAAIF,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEK,GAAGH,EAAEF,GAAG,IAAImH,GAAG,EAAEf,GAAGpG,GAAGK,GAAGL,GAAG,QAAQA,IAAI,GAAGW,IAAI,MAAM,GAAGwD,GAAGnE,EAAEkH,GAAG,KAAK,EAAE7G,EAAE,EAAE,EAAEA,KAAK8D,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEmB,GAAGS,GAAI,UAAS,EAAEhB,GAAGM,KAAKU,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEnB,IAAI,QAAQ5E,IAAI,IAAIM,EAAE6D,GAAI,UAAS,KAAK,GAAGnE,GAAGA,GAAG,IAAIqF,GAAG,EAAE4B,IAAIlB,GAAGnB,GAAGmB,GAAG,IAAI7F,EAAE,SAASoF,IAAI,EAAE4B,IAAItC,KAAK,EAAEmB,KAAK,EAAE/F,EAAE,EAAE,EAAEA,KAAKE,IAAI,EAAE6F,KAAK,GAAGhB,GAAG,GAAG,EAAEoC,GAAGhD,IAAInE,EAAE,SAASM,GAAG,EAAEwG,GAAGzG,IAAIL,IAAI,EAAEmE,KAAK,GAAGiC,GAAG,GAAG,EAAEK,GAAG,IAAIzG,EAAE,SAASW,GAAG,EAAEoF,GAAGE,KAAKjG,IAAI,EAAE,KAAK,GAAGwG,GAAG,GAAG,EAAExG,EAAEuH,EAAGvB,GAAGY,GAAG,QAAQ,EAAE,EAAE1G,EAAEuB,EAAEpB,EAAEL,EAAEA,EAAEuH,EAAG9D,EAAED,GAAE,OAAO,CAAC,EAAEtD,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEA,EAAEL,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEI,GAAGN,EAAEK,IAAIA,EAAEkH,EAAGV,GAAGjD,GAAG,OAAO,CAAC,GAAG,EAAE5D,EAAEyB,EAAEvB,EAAE,EAAEA,EAAE6G,IAAI1G,IAAI,EAAEC,IAAI,EAAEN,EAAE,EAAE,EAAEA,GAAG,EAAEiG,IAAI5F,EAAEC,EAAE6F,GAAG,IAAInG,EAAE,SAASqE,IAAI,EAAEmC,IAAItG,EAAEG,IAAI,EAAE8F,KAAK,EAAEjG,EAAE,EAAE,EAAEA,KAAKF,IAAI,EAAEK,IAAI,GAAG2G,GAAG,GAAG,EAAEb,GAAGP,IAAI5F,EAAE,SAAS8E,IAAI,EAAEO,GAAGH,KAAKlF,IAAI,EAAE4F,KAAK,GAAG7B,GAAG,GAAG,EAAE7D,EAAEqH,EAAG5D,EAAGD,EAAE,QAAQ,EAAE,EAAE1D,EAAEyB,EAAEpB,EAAEH,EAAEA,EAAEqH,EAAG1E,GAAEU,GAAE,OAAO,CAAC,EAAEvD,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEA,EAAEH,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEM,GAAGJ,EAAEG,IAAIA,EAAEkH,EAAGnE,GAAEJ,GAAE,OAAO,CAAC,GAAG,EAAE9C,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,EAAEC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGxE,GAAED,GAAE,QAAQ,EAAE,EAAEzC,EAAEoB,EAAEvB,EAAE,EAAEA,EAAEwF,IAAI1F,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,GAAG,EAAEyE,IAAIzE,EAAEC,EAAE+F,GAAG,IAAIrG,EAAE,SAASmF,IAAI,EAAED,IAAIhF,EAAEG,IAAI,EAAEgG,KAAK,EAAEnG,EAAE,EAAE,EAAEA,KAAKF,IAAI,EAAEK,IAAI,GAAGyD,GAAG,GAAG,EAAE5D,EAAEqH,EAAG5D,EAAGD,EAAE,OAAO,CAAC,EAAE1D,EAAEyB,EAAEpB,EAAEH,EAAEA,EAAEqH,EAAG1E,GAAEU,GAAE,OAAO,CAAC,EAAEvD,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEA,EAAEH,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEM,GAAGJ,EAAEqH,EAAGnE,GAAEJ,GAAE,QAAQ,EAAE,GAAG3C,EAAE,EAAEA,EAAEoB,EAAEzB,EAAE,EAAEE,EAAE2F,IAAI3F,IAAI,EAAEI,IAAI,EAAED,EAAE,EAAE,EAAEA,GAAG,EAAEH,GAAGF,EAAEM,EAAEqG,GAAG,KAAK,EAAEA,KAAK,EAAEzG,EAAE,EAAE,EAAEA,EAAEG,EAAEL,EAAEA,EAAEuH,EAAGxE,GAAED,GAAE,OAAO,CAAC,EAAE5C,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEA,EAAEL,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEI,GAAGN,EAAEK,IAAIA,EAAEkH,EAAGtE,GAAEC,GAAE,QAAQ,EAAE,GAAG,EAAElD,EAAEyB,EAAEvB,EAAE,EAAEmE,GAAG/D,GAAGJ,EAAE,SAASyF,IAAI,EAAEhF,GAAGN,IAAI,EAAEC,IAAI,EAAEN,EAAE,EAAE,EAAEA,KAAKE,IAAI,EAAEI,IAAI,GAAGuD,GAAG,GAAG,EAAEvD,GAAGE,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEI,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,EAAEZ,EAAEuH,EAAGnG,EAAE,EAAEiB,EAAE,CAAC,EAAEnC,EAAEuB,EAAE0C,IAAI9D,EAAEL,IAAIA,EAAEuH,EAAGlG,EAAE,EAAEiB,EAAE,CAAC,GAAG,EAAEjC,EAAEoB,EAAEvB,EAAE,EAAEG,EAAEL,IAAI,EAAEmE,KAAK,EAAE9D,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAG/F,EAAE,EAAER,GAAE,CAAC,EAAEd,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGmE,GAAGnE,EAAEmE,GAAG,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAGzF,EAAEE,EAAEO,GAAE,CAAC,EAAEvC,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAG8D,GAAG9D,EAAE8D,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAG3F,EAAE,EAAEY,GAAE,CAAC,EAAEtC,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,GAAG8D,GAAG9D,EAAE8D,GAAG,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAGtF,EAAE,EAAEG,EAAE,CAAC,EAAEpC,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAG8D,GAAG9D,EAAE8D,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGrF,EAAE,EAAEC,EAAE,CAAC,EAAE9B,EAAEoB,EAAEzB,EAAE,EAAEK,EAAEH,IAAI,GAAGiE,GAAGjE,EAAEiE,GAAG,KAAK,EAAE9D,EAAE,EAAE,EAAEA,EAAEL,EAAEuH,EAAG1F,EAAEgD,GAAGW,GAAG,CAAC,EAAEtF,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGmE,GAAGnE,EAAEmE,GAAG,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAGhG,EAAE,EAAEmB,GAAE,CAAC,EAAE1C,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAG8D,GAAG9D,EAAE8D,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAGpG,EAAE,EAAEsB,GAAE,CAAC,EAAEvC,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,GAAG8D,GAAG9D,EAAE8D,GAAG,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAG7F,EAAE,EAAEiB,GAAE,CAAC,EAAE3C,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,GAAG8D,GAAG9D,EAAE8D,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAG5F,EAAE,EAAEiB,GAAE,CAAC,EAAEvC,EAAEoB,EAAEzB,EAAE,EAAEE,EAAEG,EAAEH,IAAI,GAAGiE,GAAGjE,EAAEiE,GAAG,KAAK,EAAE9D,EAAE,EAAE,EAAEA,EAAEqF,IAAIrF,GAAG,QAAQ6F,KAAK,GAAGK,KAAK,KAAKvG,EAAEM,EAAE6D,GAAG,GAAG,EAAEnE,GAAGkG,KAAK,GAAG,IAAIhG,EAAEF,IAAI,EAAEmE,KAAK,EAAEjE,EAAE,EAAE,EAAEA,GAAG,EAAE0E,GAAG5E,EAAEK,IAAI,EAAEqF,KAAK,EAAE1F,EAAE,EAAE,EAAEA,EAAEoG,GAAGlG,EAAEF,IAAI0F,KAAK,EAAE,YAAY,EAAE,GAAG,EAAErF,GAAGL,EAAEE,IAAI,GAAG,GAAGS,EAAE,EAAE,GAAGN,GAAGH,GAAG,QAAQA,IAAI,IAAI2E,GAAGa,GAAI,UAAS,KAAK,MAAM,GAAGP,GAAGjF,EAAEmE,GAAG,KAAK,EAAEhE,EAAE,EAAE,EAAEA,EAAEkG,GAAGrG,EAAEG,IAAI8E,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEnF,GAAGA,EAAEE,GAAG,IAAIgF,GAAG,EAAEb,GAAGrE,GAAGE,GAAG,QAAQA,IAAI,IAAIiE,GAAGgB,GAAI,UAAS,KAAK,MAAM,GAAGL,GAAG5E,EAAE4E,GAAG,KAAK,EAAE9E,EAAE,EAAE,EAAEA,EAAE2F,GAAGzF,EAAEF,IAAI8E,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEzE,GAAGL,EAAEE,GAAG,IAAImF,GAAG,EAAEa,GAAG7F,GAAGH,GAAGI,GAAG,QAAQJ,IAAI,IAAIS,EAAEmE,GAAI,UAAS,KAAK,IAAIqB,GAAG,KAAK,EAAE7F,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEgF,GAAGnF,EAAEF,EAAEuH,EAAGrH,EAAEG,EAAE,QAAQ,EAAE,EAAEH,EAAEuB,EAAE+E,GAAG,EAAEtB,GAAG7E,EAAEL,EAAEiG,GAAG,EAAE3F,EAAEN,IAAI,EAAEK,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEA,EAAEqH,EAAG9D,EAAED,GAAE,OAAO,CAAC,EAAExD,EAAEyB,EAAEiD,GAAG,EAAE1E,EAAEE,IAAI,GAAGqE,GAAGrE,EAAEqE,GAAG,KAAK,EAAEvE,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGvB,GAAGY,GAAG,OAAO,CAAC,EAAE5G,EAAEyB,GAAGzB,KAAKK,EAAE,SAAS+D,KAAM,EAAEG,KAAK,GAAGL,GAAG,GAAG,GAAG,EAAElE,EAAEE,IAAI,GAAGkE,EAAGlE,GAAGqE,GAAGlE,EAAE,GAAG,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAGV,GAAGjD,GAAG,QAAQ,EAAE,EAAE1D,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,GAAG+D,EAAG/D,EAAE+D,EAAG,KAAK,EAAElE,EAAE,EAAE,EAAEA,EAAE2F,GAAGxF,EAAEyE,IAAI9E,EAAE,SAASW,GAAG,EAAE6E,GAAGnB,GAAGA,KAAKrE,IAAI,EAAE8E,KAAK,GAAGa,GAAG,GAAG,EAAEvB,GAAIzD,EAAE4G,EAAGlC,GAAGa,GAAG,OAAO,CAAC,GAAG9B,EAAG,EAAEpE,EAAEyB,EAAEvB,EAAE,EAAEG,EAAEkH,EAAGlH,EAAEgE,GAAG,QAAQ,EAAE,EAAEnE,EAAEuB,GAAGd,IAAI,EAAEyD,IAAK,EAAEpE,EAAE,EAAE,EAAEA,GAAG,EAAEqE,GAAGnE,EAAEG,IAAI,GAAGqE,GAAGrE,EAAE+D,EAAG,KAAK,EAAElE,EAAE,EAAE,EAAEA,EAAEyF,GAAG3F,EAAEE,IAAIwE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAExE,GAAG,QAAQF,IAAI,IAAIW,EAAE+D,GAAI,UAAS,KAAK,GAAG1E,GAAGA,GAAG,IAAIM,EAAE,EAAEwE,GAAG5E,GAAGF,EAAEE,IAAI,GAAGkE,EAAGlE,EAAEgF,GAAG,KAAK,EAAElF,EAAE,EAAE,EAAEA,KAAKoE,IAAK,EAAE,YAAY,EAAE,GAAG,EAAEG,IAAI,QAAQrE,IAAI,IAAII,EAAE8D,EAAI,UAAS,KAAK,GAAGlE,GAAGA,GAAG,IAAI6F,GAAG,EAAEU,GAAGvB,GAAGX,GAAGkC,GAAG,EAAEvB,GAAGX,KAAK,EAAEW,KAAK,EAAEhF,EAAE,EAAE,EAAEA,EAAE6F,GAAG3B,GAAIlE,EAAE,SAASI,GAAG,EAAEqG,GAAG3G,IAAIE,IAAI,EAAEkE,IAAK,GAAGU,GAAG,GAAG,EAAEmB,GAAGvB,IAAI1E,EAAE,SAASW,GAAG,EAAE6F,GAAGnC,KAAKrE,IAAI,EAAE0E,KAAK,GAAGiB,GAAG,GAAG,EAAE3F,EAAEuH,EAAG9D,EAAED,GAAE,OAAO,CAAC,EAAEnD,EAAE2E,GAAGvD,EAAE,EAAEpB,GAAGM,EAAEX,EAAE0G,GAAG,KAAK,EAAEA,KAAK,EAAErG,EAAE,EAAE,EAAEA,EAAEC,GAAGN,EAAEuH,EAAGvB,GAAGY,GAAG,OAAO,CAAC,IAAIjG,GAAGT,EAAE,SAASsE,IAAI,GAAG,EAAEtE,EAAEuB,GAAGpB,IAAIH,IAAI,EAAES,IAAI,GAAGsD,GAAG,GAAG,GAAG,EAAE/D,EAAEF,IAAI,EAAEM,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAGV,GAAGjD,GAAG,OAAO,CAAC,EAAE5D,EAAEyB,EAAEvB,EAAE,EAAEkE,EAAG9D,EAAED,EAAEC,EAAE,EAAEA,EAAED,IAAI,EAAEC,IAAI,EAAEN,EAAE,EAAE,EAAEA,EAAEW,EAAEwE,IAAInF,EAAE,SAASmE,IAAI,EAAEE,GAAG,KAAKrE,IAAI,EAAEmF,KAAK,GAAGoB,GAAG,GAAG,EAAEvG,EAAEuH,EAAG5D,EAAGD,EAAE,OAAO,CAAC,EAAExD,EAAEuB,EAAEpB,EAAEL,EAAEA,EAAEuH,EAAG1E,GAAEU,GAAE,OAAO,CAAC,EAAErD,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEA,EAAEL,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGnE,GAAEJ,GAAE,OAAO,CAAC,EAAE9C,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEL,EAAEK,EAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEiE,IAAInE,EAAEK,IAAIA,EAAEkH,EAAGxE,GAAED,GAAE,QAAQ,EAAE,GAAG,EAAE9C,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,EAAE8D,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGtE,GAAEC,GAAE,OAAO,CAAC,EAAElD,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEH,EAAEiE,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEmE,IAAIjE,EAAEqH,EAAGjE,GAAED,GAAE,QAAQ,EAAE,GAAGhD,EAAE,EAAEA,EAAEoB,EAAEzB,EAAE,EAAEE,EAAE0E,IAAI1E,IAAI,EAAEiE,KAAK,EAAE9D,EAAE,EAAE,EAAEA,GAAG,EAAE8E,IAAI9E,GAAG,QAAQyF,KAAK,GAAGP,KAAK,MAAMpB,GAAGA,GAAGuB,GAAG,IAAI1F,EAAE,SAAS6E,IAAI,GAAG,EAAE7E,IAAIE,EAAEiE,KAAK,EAAEuB,KAAK,EAAExF,EAAE,EAAE,EAAEA,KAAKF,IAAI,EAAEmE,KAAK,GAAGiC,GAAG,GAAG,IAAIN,IAAI,IAAI,EAAEhB,GAAG9E,EAAEK,IAAI,EAAE8E,KAAK,EAAEnF,EAAE,EAAE,EAAEA,EAAEmG,GAAGnG,EAAEA,IAAImF,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEjF,EAAES,EAAEA,GAAG,QAAQX,IAAI,IAAIwE,GAAGW,GAAI,UAAS,KAAK,GAAGnF,GAAGA,GAAG,IAAIqE,GAAG,EAAEsB,GAAG3F,GAAGK,EAAEH,EAAES,EAAE,KAAK,EAAEA,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAE0F,GAAGrF,EAAEL,EAAEuH,EAAGlH,EAAEL,EAAE,QAAQ,EAAE,EAAEE,EAAEuB,EAAEnB,EAAE,EAAEJ,EAAEF,IAAI,GAAGK,EAAEL,EAAEoE,EAAG,KAAK,EAAElE,EAAE,EAAE,EAAEA,EAAEI,GAAGN,EAAEK,IAAIA,EAAEkH,EAAGlC,GAAGa,GAAG,QAAQ,EAAE,GAAG,EAAElG,EAAEyB,EAAEvB,EAAE,EAAEF,EAAEK,IAAI,EAAEC,IAAI,EAAEN,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAG1B,GAAGL,GAAG,OAAO,CAAC,EAAEnF,EAAEoB,EAAEzB,EAAE,EAAEuF,GAAGjF,EAAEJ,EAAEI,EAAE,EAAE,GAAGJ,IAAI,EAAEI,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAE+D,EAAGkC,IAAItG,EAAE,SAAS2E,IAAI,EAAEC,GAAGH,KAAKzE,IAAI,EAAEsG,KAAK,GAAGtC,GAAG,GAAG,EAAE9D,EAAEqH,EAAGlF,EAAE,EAAEI,GAAE,CAAC,EAAEzC,EAAEyB,EAAEpB,EAAEH,EAAEA,EAAEqH,EAAGjF,EAAE,EAAEI,GAAE,CAAC,EAAE1C,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEA,EAAEH,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGvG,GAAE,EAAE2B,GAAE,CAAC,EAAE3C,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEH,EAAEG,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEM,GAAGJ,EAAEqH,EAAG/E,GAAE,EAAEI,GAAE,CAAC,GAAGvC,EAAE,EAAEA,EAAEoB,EAAEzB,EAAE,EAAEE,EAAEA,IAAI,EAAEI,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEwE,GAAGxE,GAAGL,GAAGQ,EAAEI,EAAE,EAAE,CAAC,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,GAAGJ,EAAEI,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,SAASN,EAAE,EAAE6D,GAAGnE,IAAI,EAAEK,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGlF,EAAE,EAAEK,GAAE,CAAC,EAAExC,EAAEuB,EAAEpB,EAAEL,EAAEA,EAAEuH,EAAGjF,EAAE,EAAEM,GAAE,CAAC,EAAE1C,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEA,EAAEL,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEI,GAAGN,EAAEK,IAAIA,EAAEkH,EAAG/E,GAAE,EAAEG,GAAE,CAAC,GAAG,EAAE3C,EAAEyB,EAAEvB,EAAE,EAAEmE,GAAG/D,EAAEA,EAAED,IAAI,EAAEC,IAAI,EAAEN,EAAE,EAAE,EAAEA,EAAEA,GAAGE,EAAEM,EAAEI,EAAE,EAAE,CAAC,KAAK,GAAG,EAAED,EAAET,GAAG,GAAGkG,GAAG5F,EAAEI,EAAE,EAAE,CAAC,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,GAAGJ,EAAEI,EAAE,EAAE,CAAC,GAAG,MAAM,GAAGP,EAAEL,EAAEE,GAAGF,EAAEQ,EAAEI,EAAE,EAAE,CAAC,KAAK,GAAG,EAAEV,GAAGG,EAAEA,EAAEC,EAAEK,EAAEN,GAAGL,EAAE,UAAU,EAAEE,IAAI,IAAIF,EAAEA,GAAG,GAAGW,KAAK,MAAM,GAAG0D,GAAGrE,EAAEqE,GAAG,KAAK,EAAEhE,EAAE,EAAE,EAAEA,EAAEgG,GAAGrG,EAAEK,IAAIgE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEhE,GAAG,QAAQL,IAAI,IAAIgF,GAAGX,GAAI,UAAS,KAAK,GAAGrE,GAAGA,IAAI,GAAG,GAAGmE,GAAG,EAAEI,GAAGvE,EAAEK,IAAI,GAAGoE,GAAGpE,EAAEwE,GAAG,KAAK,EAAE7E,EAAE,EAAE,EAAEA,EAAEuG,GAAGvG,EAAEA,IAAIyE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEpE,GAAGH,EAAEF,IAAI,GAAG,GAAG4E,GAAG,EAAEvE,GAAGL,GAAG,QAAQA,IAAI,IAAI0E,GAAGD,GAAI,UAAS,KAAK,MAAM,GAAGnE,EAAEN,EAAEoE,EAAG,KAAK,EAAE/D,EAAE,EAAE,EAAEA,EAAEH,EAAEqH,EAAGvB,GAAGY,GAAG,OAAO,CAAC,EAAE5G,EAAEyB,EAAEpB,EAAE,EAAEL,EAAEE,IAAI,GAAGI,EAAEJ,EAAEI,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGV,GAAGjD,GAAG,OAAO,CAAC,EAAE5D,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEH,EAAEI,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEM,GAAGJ,EAAEG,IAAIA,EAAEkH,EAAG7B,GAAGC,GAAG,OAAO,CAAC,GAAG,EAAEzF,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,EAAEC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGlC,GAAGa,GAAG,OAAO,CAAC,EAAEhG,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEL,EAAEM,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEkE,GAAIpE,EAAEuH,EAAG1B,GAAGL,GAAG,QAAQ,EAAE,GAAGnF,EAAE,EAAEA,EAAEoB,EAAEvB,EAAE,EAAE0E,GAAGvE,EAAEL,IAAI,EAAEoE,IAAK,EAAE/D,EAAE,EAAE,EAAEA,EAAEyF,GAAG9F,EAAEK,IAAI+D,IAAK,EAAE,YAAY,EAAE,GAAG,EAAE/D,GAAG,QAAQL,IAAI,IAAI6E,GAAGT,EAAI,UAAS,KAAK,GAAGpE,GAAGA,GAAG,IAAI,GAAG,EAAEuF,GAAGlF,GAAGL,EAAEK,IAAI,GAAGC,EAAED,EAAEkF,GAAG,KAAK,EAAEvF,EAAE,EAAE,EAAEA,KAAKM,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE6D,IAAI,QAAQ9D,IAAI,IAAI,GAAGC,EAAG,UAAS,KAAK,GAAGD,GAAGA,GAAG,IAAImG,GAAG,EAAEZ,GAAGjB,GAAGR,GAAG8B,GAAG,EAAEtB,GAAGR,KAAK,EAAEQ,KAAK,EAAEtE,EAAE,EAAE,EAAEA,EAAE8D,GAAG7D,EAAEJ,EAAEF,EAAEM,GAAG6E,IAAInF,EAAE,SAASwE,IAAI,IAAIA,IAAI,QAAQO,KAAK,GAAGO,KAAK,IAAI,EAAEtF,GAAG8E,KAAK9E,IAAI,EAAEmF,KAAK,GAAGgB,GAAG,GAAG,IAAIpB,IAAI,IAAI,EAAEA,GAAG/E,EAAEM,IAAI,EAAEkE,KAAK,EAAExE,EAAE,EAAE,EAAEA,EAAEiG,GAAGjG,EAAEA,IAAIM,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE6E,GAAG9E,EAAEL,GAAG,GAAGA,EAAEuH,EAAGvB,IAAI,QAAQhG,IAAI,IAAI8E,GAAGxE,EAAG,UAAS,KAAK,GAAGD,EAAE,QAAQ,EAAE,EAAEH,EAAEuB,EAAEvB,EAAE,EAAEA,EAAEF,IAAI,GAAGK,EAAEL,EAAEmE,GAAG,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEsG,GAAGnG,GAAGL,EAAE,SAAS,IAAI,EAAEsG,GAAGpG,IAAIF,IAAI,EAAEK,IAAI,GAAGkF,GAAG,GAAG,EAAErF,EAAEqH,EAAGvB,GAAGb,GAAG,OAAO,CAAC,EAAEnF,EAAEyB,EAAEmD,GAAG,EAAE5E,EAAEE,IAAI,GAAGG,EAAEH,EAAEkE,EAAG,KAAK,EAAEpE,EAAE,EAAE,EAAEA,EAAE0G,GAAGrG,GAAGH,EAAE,SAAS2E,IAAI,EAAEiB,GAAG9F,IAAIE,IAAI,EAAEG,IAAI,GAAGyF,GAAG,GAAG,EAAE5F,EAAEqH,EAAGV,GAAGjD,GAAG,OAAO,CAAC,EAAE5D,EAAEyB,GAAG8C,MAAMlE,EAAE,SAASqE,MAAM,EAAED,KAAK,GAAG8B,GAAG,GAAG,GAAG,EAAEvG,EAAEE,IAAI,GAAGiE,GAAGjE,GAAGuE,GAAGpE,EAAE,GAAG,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEK,EAAEkH,EAAG7B,GAAGC,GAAG,QAAQ,EAAE,EAAEzF,EAAEuB,EAAEzB,EAAE,EAAEE,EAAEG,IAAI,GAAG8D,GAAG9D,EAAE8D,GAAG,KAAK,EAAEjE,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGlC,GAAGa,GAAG,OAAO,CAAC,EAAE7F,EAAEoB,EAAEvB,EAAE,EAAEG,EAAEL,IAAI,GAAGmE,GAAGnE,EAAEmE,GAAG,KAAK,EAAE9D,EAAE,EAAE,EAAEA,EAAEH,EAAEqH,EAAG1B,GAAGL,GAAG,OAAO,CAAC,EAAExF,EAAEyB,EAAEpB,EAAE,EAAEkF,GAAGpB,GAAGjE,EAAEiE,GAAG,EAAES,GAAG1E,IAAI,EAAEiE,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEK,EAAE+F,KAAK,EAAE,QAAQpG,EAAEuH,EAAGlF,EAAE,EAAEO,GAAE,CAAC,EAAE1C,EAAEuB,EAAE,GAAGzB,EAAEA,EAAEuH,EAAGjF,EAAE,EAAEK,GAAE,CAAC,EAAEzC,EAAEuB,EAAEvB,EAAE,EAAEF,EAAEA,IAAI,GAAGmE,GAAG,GAAGnE,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAE,GAAGA,EAAEG,EAAE8D,GAAG,EAAE9D,EAAEL,EAAEE,IAAI,EAAEiE,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEyE,IAAIvE,EAAEqH,EAAGlF,EAAE,EAAEM,GAAE,CAAC,IAAI3C,GAAGA,EAAEQ,EAAEI,EAAE,EAAE,CAAC,IAAI,GAAG,QAAQJ,EAAE,EAAEI,CAAC,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,GAAG,EAAEV,EAAEuB,EAAE+C,GAAGtE,EAAEF,IAAI,EAAEyE,KAAK,EAAEvE,EAAE,EAAE,EAAEA,EAAEiG,GAAGjG,EAAEA,IAAIuE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEzE,GAAGA,EAAEE,IAAI,GAAG,GAAGG,EAAE,EAAEqE,GAAG1E,GAAGE,GAAG,QAAQA,IAAI,IAAIqE,GAAGE,GAAI,UAAS,KAAK,MAAM,GAAGa,GAAGpF,EAAE,GAAG,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEoG,GAAGlG,EAAEF,IAAIsF,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEjF,GAAG,QAAQH,IAAI,IAAIkE,EAAGkB,GAAI,UAAS,KAAK,GAAGpF,GAAGA,IAAI,GAAG,GAAGS,EAAE,EAAET,EAAEG,IAAI,GAAG8D,GAAG9D,EAAEgE,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAEG,EAAEkH,EAAG7B,GAAGC,GAAG,OAAO,CAAC,EAAE3F,EAAEyB,GAAGvB,KAAKS,EAAE,SAASqE,MAAM,EAAEb,KAAK,GAAGkC,GAAG,GAAG,GAAG,EAAErG,EAAEK,IAAI,GAAGgE,GAAGhE,GAAG8D,GAAGxD,EAAE,GAAG,KAAK,EAAEX,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAGlC,GAAGa,GAAG,OAAO,CAAC,EAAElG,EAAEyB,EAAEzB,EAAE,EAAEA,EAAEE,IAAI,GAAGG,EAAEH,EAAEmE,GAAG,KAAK,EAAErE,EAAE,EAAE,EAAEA,EAAE6E,IAAI3E,EAAEG,IAAIA,EAAEkH,EAAG1B,GAAGL,GAAG,OAAO,CAAC,GAAG,EAAEtF,EAAEuB,EAAEzB,EAAE,EAAE,GAAGE,EAAEG,IAAI,EAAEwE,KAAK,EAAE3E,EAAE,EAAE,EAAEA,EAAEqG,GAAGrG,EAAEA,IAAI2E,KAAK,EAAE,YAAY,EAAE,GAAG,EAAExE,GAAGL,EAAEE,GAAG,IAAI0E,GAAG,EAAEI,GAAG9E,GAAGG,GAAGH,GAAG,QAAQA,IAAI,IAAIiE,GAAGU,GAAI,UAAS,KAAK,MAAM,GAAGR,GAAGnE,EAAEqF,GAAG,KAAK,EAAElF,EAAE,EAAE,EAAEA,KAAKgE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEO,IAAI,QAAQ1E,IAAI,IAAIS,EAAE0D,GAAI,UAAS,KAAK,GAAGnE,GAAGA,GAAG,IAAI4F,GAAG,EAAEI,GAAGb,GAAGT,GAAG8B,GAAG,EAAE9B,GAAGA,KAAK,EAAES,KAAK,EAAEnF,EAAE,EAAE,EAAEA,EAAEF,EAAEuH,EAAGvB,GAAGb,GAAG,QAAQ,EAAE,EAAEjF,EAAEuB,EAAEpB,EAAE,EAAEH,EAAEF,IAAI,GAAGqE,GAAGrE,EAAEqE,GAAG,KAAK,EAAEnE,EAAE,EAAE,EAAEA,EAAE4F,GAAGzB,IAAIrE,EAAE,SAASW,GAAG,EAAE4E,GAAGrF,IAAIF,IAAI,EAAEqE,KAAK,GAAGW,GAAG,GAAG,EAAE9E,EAAEqH,EAAGvB,GAAGb,GAAG,OAAO,CAAC,EAAEnF,EAAEyB,EAAE,GAAG,EAAEzB,EAAEE,IAAI,GAAGG,EAAEH,EAAE2E,GAAG,KAAK,EAAE7E,EAAE,EAAE,EAAEA,EAAEqF,GAAGhF,GAAGH,EAAE,SAASiE,IAAI,EAAEa,GAAGhF,IAAIE,IAAI,EAAEG,IAAI,GAAGkG,GAAG,GAAG,EAAEvG,EAAEuH,EAAG7B,GAAGC,GAAG,OAAO,CAAC,EAAEtF,EAAEoB,GAAGiD,MAAMxE,EAAE,SAASkE,KAAM,EAAEkB,KAAK,GAAGc,GAAG,GAAG,GAAG,EAAE/F,EAAEL,IAAI,GAAGW,EAAEX,GAAGsF,GAAGpF,EAAE,GAAG,KAAK,EAAEG,EAAE,EAAE,EAAEA,EAAEH,EAAEqH,EAAG1B,GAAGL,GAAG,OAAO,CAAC,EAAExF,EAAEyB,EAAEpB,EAAE,EAAEgE,GAAG1D,EAAET,EAAES,EAAE,EAAEN,EAAEH,IAAI,EAAES,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEE,EAAEqH,EAAG7B,GAAGC,GAAG,OAAO,CAAC,EAAE3F,EAAEyB,GAAG+C,KAAK,KAAK2B,MAAMxF,EAAE,SAAS4D,MAAM,EAAEE,KAAK,GAAG,GAAG,GAAG,EAAEI,GAAG7E,EAAEE,IAAI,GAAGkE,EAAGlE,GAAGuE,GAAG9D,EAAE,GAAG,KAAK,EAAEX,EAAE,EAAE,EAAEA,EAAEwE,GAAGxE,EAAEA,IAAIoE,IAAK,EAAE,YAAY,EAAE,GAAG,EAAEzD,GAAG,QAAQX,IAAI,IAAI,GAAGoE,EAAI,UAAS,KAAK,GAAGpE,GAAGA,GAAG,IAAIK,EAAE,EAAEA,EAAEL,EAAEW,IAAI,GAAGwD,GAAGxD,EAAE0D,GAAG,KAAK,EAAErE,EAAE,EAAE,EAAEA,EAAEuE,GAAGvE,EAAEA,IAAImE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAExD,GAAG,QAAQX,IAAI,IAAIqE,GAAGF,GAAI,UAAS,KAAK,GAAGnE,GAAGA,GAAG,IAAIgF,GAAG,EAAErE,EAAEA,IAAI,GAAG+D,GAAG/D,EAAE0E,GAAG,KAAK,EAAErF,EAAE,EAAE,EAAEA,EAAEA,EAAEuH,EAAGvB,GAAGb,GAAG,OAAO,CAAC,EAAE9E,EAAEoB,EAAEpB,EAAE,EAAEA,EAAEL,IAAI,GAAGE,EAAEF,EAAEmE,GAAG,KAAK,EAAE9D,EAAE,EAAE,EAAEA,EAAE8D,GAAGjE,GAAGF,EAAE,SAASqE,IAAI,EAAEA,GAAGhE,IAAIL,IAAI,EAAEE,IAAI,GAAGqE,GAAG,GAAG,EAAErE,EAAEqH,EAAGvB,GAAGb,GAAG,OAAO,CAAC,EAAEnF,EAAEyB,GAAGoD,MAAMxE,EAAE,SAAS,MAAM,EAAE+D,IAAK,GAAGI,GAAG,GAAG,GAAG,EAAEtE,GAAGG,GAAGL,EAAEE,IAAI,GAAG8E,GAAG9E,GAAGkE,EAAG/D,EAAE,GAAG,KAAK,EAAEL,EAAE,EAAE,EAAEA,IAAI,IAAIqE,GAAG,EAAErE,GAAGA,GAAGE,GAAGF,GAAG,QAAQA,IAAI,GAAGgF,KAAK,MAAM,GAAGR,GAAGxE,EAAEmE,GAAG,KAAK,EAAEjE,EAAE,EAAE,EAAEA,IAAI,IAAIS,EAAE,EAAET,GAAGA,GAAGF,GAAGE,GAAG,QAAQA,IAAI,GAAGsE,KAAK,MAAM,GAAGD,GAAGrE,EAAEwE,GAAG,KAAK,EAAE1E,EAAE,EAAE,EAAEA,IAAI,IAAIuF,GAAG,EAAElF,GAAGL,GAAGE,GAAGF,GAAG,QAAQA,IAAI,GAAGuE,KAAK,MAAM,GAAG5D,EAAEX,EAAE8F,GAAG,KAAK,EAAE5F,EAAE,EAAE,EAAEA,IAAI,IAAI0E,GAAG,EAAE5E,GAAGE,GAAGG,GAAGH,GAAG,QAAQA,IAAI,GAAGS,IAAI,MAAM,GAAG+D,GAAGxE,EAAEgG,GAAG,KAAK,EAAE7F,EAAE,EAAE,EAAEA,IAAI,IAAIiG,GAAG,EAAEpG,GAAGG,GAAGL,GAAGK,GAAG,QAAQA,IAAI,GAAGqE,KAAK,MAAM,GAAGN,EAAG/D,EAAEmG,GAAG,KAAK,EAAExG,EAAE,EAAE,EAAEA,IAAI,IAAI2E,GAAG,EAAE3E,GAAGA,GAAGE,GAAGF,GAAG,QAAQA,IAAI,GAAGoE,IAAK,MAAM,GAAGQ,GAAG5E,EAAE4F,GAAG,KAAK,EAAE1F,EAAE,EAAE,EAAEA,IAAI,IAAIyG,GAAG,EAAEzG,GAAGA,GAAGF,GAAGE,GAAG,QAAQA,IAAI,GAAG0E,KAAK,MAAM,GAAGC,GAAG3E,EAAE6F,GAAG,KAAK,EAAE/F,EAAE,EAAE,EAAEA,IAAI,IAAIkF,GAAG,EAAE7E,GAAGL,GAAGE,GAAGF,GAAG,QAAQA,IAAI,GAAG6E,KAAK,MAAM,GAAG,GAAG7E,EAAEyG,GAAG,KAAK,EAAEvG,EAAE,EAAE,EAAEA,IAAI,IAAI4G,GAAG,EAAE9G,GAAGE,GAAGG,GAAGH,GAAG,QAAQA,IAAI,GAAG,KAAK,MAAM,GAAGiE,GAAGjE,EAAEiH,GAAG,KAAK,EAAE9G,EAAE,EAAE,EAAEA,IAAI,IAAI6G,GAAG,EAAEpC,IAAIH,GAAGrE,GAAGJ,EAAE,SAAS4E,IAAI,KAAK,SAAS9E,GAAGK,GAAG,QAAQA,IAAI,GAAG8D,KAAK,MAAM,GAAGE,GAAGhE,EAAE4G,GAAG,KAAK,EAAEjH,EAAE,EAAE,EAAEA,KAAK,GAAGqE,KAAK,IAAI,EAAErE,GAAG+E,KAAK7E,IAAI,EAAEI,IAAI,GAAG2F,GAAG,GAAG,IAAIjG,GAAG,IAAI,EAAE+E,GAAG7E,GAAGF,EAAE2E,KAAK,EAAEG,KAAK,EAAE9E,EAAE,EAAE,EAAEA,IAAI,GAAGgF,IAAIhF,EAAEuH,EAAGrC,IAAI,QAAQlF,IAAI,GAAG8E,KAAK,GAAG5E,EAAE,OAAO,CAAC,IAAIA,EAAE,QAAQ8E,IAAI,EAAEhF,EAAEyB,EAAEnB,EAAEN,EAAEE,IAAI,EAAE8E,KAAK,EAAEhF,EAAE,EAAE,EAAEA,EAAEI,EAAE,EAAEM,CAAC,EAAEsE,GAAG5E,EAAEM,EAAE,EAAE,CAAC,GAAG,IAAIV,IAAI,GAAGgF,KAAK,EAAEhF,EAAE,QAAQwE,GAAGtE,EAAEqH,EAAGrC,GAAGH,GAAG,OAAO,CAAC,EAAE/E,EAAE,EAAEK,EAAEoB,EAAEzB,GAAGM,GAAG,KAAKN,IAAI,EAAEE,IAAI,EAAEG,EAAE,EAAE,EAAEA,GAAG,EAAEL,GAAGwE,IAAIG,IAAI,QAAQrE,IAAI,GAAG0E,KAAK,IAAI9E,EAAE,KAAK,EAAEyE,KAAK,EAAE3E,EAAE,EAAE,EAAEA,EAAEI,EAAEM,EAAE,EAAE,CAAC,GAAG,KAAKV,IAAI,GAAGwE,KAAK,GAAGtE,EAAEF,EAAEK,EAAEmE,GAAGpE,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAEV,IAAI,GAAGK,IAAI,EAAED,EAAEM,EAAE,EAAE,CAAC,EAAE,KAAK,MAAMJ,IAAI,GAAG0E,KAAK,IAAI3E,GAAG,EAAEC,EAAE,QAAQiE,GAAGA,GAAGgD,EAAGrC,GAAGH,GAAG,OAAO,CAAC,EAAEzE,EAAE,EAAEN,EAAEyB,EAAE+C,IAAI,QAAQtE,IAAI,GAAGG,IAAI,GAAGH,GAAGA,GAAG,KAAKI,EAAEA,IAAI,EAAEiE,KAAK,EAAEvE,EAAE,EAAE,EAAEA,GAAG,EAAEA,EAAEE,GAAGqE,GAAGC,GAAGD,GAAG,KAAK,EAAEC,KAAK,EAAEtE,EAAE,EAAE,EAAEA,EAAEE,EAAEM,EAAE,EAAE,CAAC,GAAG,GAAGV,IAAI,GAAGuE,KAAK,EAAEjE,EAAEiE,GAAGA,GAAG,EAAEnE,EAAEM,EAAE,EAAE,CAAC,EAAE6D,IAAI,IAAI,QAAQlE,KAAK,GAAGC,GAAG,EAAED,EAAE,QAAQM,EAAEA,EAAE4G,EAAGrC,GAAGH,GAAG,QAAQ,EAAE,EAAE1E,EAAE,EAAEH,EAAEuB,EAAEvB,EAAEG,IAAI,EAAEM,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAEqE,IAAI,SAASlE,EAAEL,KAAK,GAAGM,IAAI,GAAGD,GAAGL,IAAI,IAAIE,EAAE,EAAEG,GAAGM,EAAE4D,GAAG5D,EAAE,KAAK,EAAE4D,KAAK,EAAElE,EAAE,EAAE,EAAEA,EAAED,EAAEM,EAAE,EAAE,CAAC,GAAG,IAAIL,IAAI,GAAGM,IAAI,EAAEP,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAEL,IAAI,GAAGM,IAAI,EAAET,EAAE,EAAEE,EAAEM,EAAE,EAAE,CAAC,EAAER,GAAG,IAAI,QAAQI,KAAK,GAAGK,GAAG,EAAET,EAAE,QAAQwE,GAAGpE,EAAEiH,EAAGrC,GAAGH,GAAG,OAAO,CAAC,EAAE7E,EAAE,EAAEF,EAAEyB,EAAEzB,EAAEE,IAAI,EAAEI,IAAI,EAAEN,EAAE,EAAE,EAAEA,EAAE0E,IAAI,SAASxE,EAAEG,KAAK,GAAGM,IAAI,GAAGT,EAAEF,GAAGK,EAAEH,GAAG,IAAI,EAAEA,GAAGI,EAAEoE,GAAGpE,EAAE,KAAK,EAAEoE,KAAK,EAAExE,EAAE,EAAE,EAAEA,EAAEE,EAAEM,EAAE,GAAG,CAAC,GAAG,KAAKR,IAAI,GAAGI,IAAI,GAAGD,EAAEC,EAAEF,EAAEM,EAAE,GAAG,CAAC,GAAG,GAAGR,IAAI,GAAGG,IAAI,EAAEC,EAAE,EAAEF,EAAEM,EAAE,GAAG,CAAC,EAAEJ,GAAG,IAAI,QAAQK,KAAK,GAAGN,GAAG,EAAEC,EAAE,QAAQ8D,EAAGzD,EAAE4G,EAAGrC,GAAGH,GAAG,QAAQ,EAAE,EAAEzE,EAAE,EAAEN,EAAEyB,EAAEzB,EAAEM,IAAI,EAAEK,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEM,EAAEJ,EAAEA,EAAEF,GAAGE,IAAI,IAAI,EAAEA,GAAGI,GAAG8D,EAAGzD,IAAIA,GAAG,QAAQL,IAAI,GAAGD,IAAI,IAAI,KAAK,EAAEM,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAEE,EAAEM,EAAE,GAAG,CAAC,GAAG,IAAIR,IAAI,GAAGI,IAAI,EAAEK,EAAE,EAAEP,EAAEM,EAAE,GAAG,CAAC,EAAEC,GAAG,IAAI,QAAQN,KAAK,GAAGC,GAAG,EAAEN,EAAEE,GAAG,GAAGG,GAAGH,GAAG,QAAQA,IAAI,GAAGI,IAAI,MAAM,GAAGK,EAAET,GAAG,QAAQ0E,IAAI,KAAK,EAAE5E,EAAE,EAAE,EAAEA,EAAEI,EAAEM,EAAE,GAAG,CAAC,GAAG,KAAKL,IAAI,GAAGM,IAAI,GAAGP,EAAEM,EAAE,GAAG,CAAC,GAAG,EAAEL,IAAI,GAAGM,IAAI,EAAET,EAAE,EAAEE,EAAEM,EAAE,GAAG,CAAC,EAAER,GAAG,IAAI,QAAQI,KAAK,GAAGK,GAAG,EAAEX,EAAEK,GAAG,GAAGL,GAAGE,GAAG,QAAQG,IAAI,GAAGM,IAAI,MAAM,GAAGN,EAAEH,GAAG,QAAQ2E,IAAI,KAAK,EAAE7E,EAAE,EAAE,EAAEA,EAAEI,EAAEM,EAAE,GAAG,CAAC,GAAG,KAAKV,IAAI,GAAGK,IAAI,GAAGD,EAAEM,EAAE,GAAG,CAAC,GAAG,GAAGV,IAAI,GAAGK,IAAI,EAAEC,GAAGJ,EAAE,QAAQ,KAAK,IAAI,QAAQF,IAAI,GAAGK,IAAI,IAAI,EAAEH,EAAEF,GAAG,GAAGE,EAAEI,IAAI,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAE,GAAGI,EAAEF,EAAEM,EAAE,GAAG,CAAC,EAAEJ,EAAEuE,GAAG,EAAEzE,EAAEM,EAAE,GAAG,CAAC,EAAEmE,IAAI,IAAI,QAAQlE,KAAK,GAAGN,GAAG,EAAED,EAAEM,EAAE,GAAG,CAAC,GAAG,IAAIR,IAAI,GAAGI,IAAI,EAAED,EAAEH,GAAG,GAAGG,GAAGC,GAAGK,GAAG,QAAQT,IAAI,GAAGI,IAAI,KAAK,QAAQ6D,IAAI,KAAK,EAAExD,IAAI,EAAEN,EAAE,EAAE,EAAEA,EAAED,EAAEM,EAAE,GAAG,CAAC,GAAG,KAAKL,IAAI,GAAGC,IAAI,GAAGF,EAAEM,EAAE,GAAG,CAAC,GAAG,EAAEL,IAAI,GAAGC,IAAI,EAAEF,EAAEM,EAAE,GAAG,CAAC,EAAE,KAAK,MAAMR,IAAI,GAAG,KAAK,IAAII,GAAG,EAAEN,EAAEK,GAAG,GAAGL,GAAGE,GAAG,QAAQG,IAAI,GAAGC,IAAI,MAAM,GAAGD,EAAEH,GAAG,QAAQmE,IAAI,KAAK,EAAErE,EAAE,EAAE,EAAEA,EAAEI,EAAEM,EAAE,GAAG,CAAC,GAAG,GAAGV,IAAI,GAAGK,IAAI,EAAEM,EAAE,EAAEP,EAAEM,EAAE,GAAG,CAAC,EAAEC,GAAG,IAAI,QAAQL,KAAK,GAAGD,GAAG,EAAEH,EAAEF,EAAEA,IAAI,GAAGE,GAAGI,GAAG+D,IAAI,QAAQnE,IAAI,GAAGG,IAAI,KAAKM,EAAE,QAAQmE,IAAI,KAAK,EAAEnE,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEI,EAAEM,EAAE,GAAG,CAAC,GAAG,OAAOR,IAAI,GAAGI,IAAI,GAAGN,EAAEM,EAAEF,EAAEM,EAAE,GAAG,CAAC,GAAG,IAAIR,IAAI,GAAGF,IAAI,EAAEM,EAAE,EAAEF,EAAEM,EAAE,GAAG,CAAC,EAAEJ,GAAG,IAAI,QAAQD,KAAK,GAAGL,GAAG,EAAEI,EAAEM,EAAE,GAAG,CAAC,EAAE2D,GAAGS,KAAK,EAAE0C,GAAG1G,EAAE,EAAE,EAAE0G,GAAG5G,EAAE,EAAE,EAAEX,IAAIM,EAAEN,GAAG,CAAC,EAAE,GAAGM,EAAEN,EAAE,GAAG,CAAC,EAAE,GAAGqB,EAAEJ,EAAE,IAAI,EAAE,CAAC,CAAC,SAASU,GAAE5B,EAAEC,EAAEC,EAAE,CAAC,IAAIG,EAAEC,EAAEC,EAAEG,EAAE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAEC,GAAEC,GAAEtB,GAAEuB,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,EAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEhD,GAAE+D,EAAGlH,GAAGiD,EAAE9C,EAAEN,EAAE,EAAE,CAAC,IAAI,GAAG,QAAQM,EAAE,EAAEN,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAE,EAAEI,GAAG0D,EAAGxD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAEsD,EAAE9B,EAAE4B,EAAEkE,EAAGhH,GAAG+C,EAAE9C,EAAEP,EAAE,GAAG,CAAC,IAAI,GAAG,QAAQO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAE,EAAES,GAAG+C,GAAEjD,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAEoD,EAAE7B,EAAE8B,EAAE,EAAED,EAAED,IAAI,GAAGG,GAAEH,EAAEG,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAG,GAAG/G,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAGkE,GAAG5D,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAEoD,EAAE5B,EAAE6B,EAAE,EAAEM,GAAGJ,GAAED,EAAEC,GAAE,EAAED,EAAEA,IAAI,EAAEC,KAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEA,GAAGC,EAAE9C,EAAEP,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEyD,GAAEJ,GAAG,GAAGO,GAAGrD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,MAAM,GAAGoD,EAAEkE,EAAGzG,EAAE,UAAU,GAAGgD,IAAIR,EAAED,IAAIA,GAAGG,GAAEhD,EAAEP,EAAE,GAAG,CAAC,KAAK,GAAG,MAAM,IAAIqD,GAAGE,KAAI,IAAIE,MAAK,GAAG,EAAExC,GAAGyC,GAAGnD,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAEqD,EAAE9B,EAAE8B,EAAE,EAAEO,GAAGR,EAAED,EAAEO,GAAG,EAAEJ,GAAEF,IAAI,EAAED,IAAI,EAAEE,EAAE,EAAE,EAAEA,EAAEA,GAAGF,EAAE7C,EAAEN,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE0D,GAAGP,GAAG,EAAEI,KAAI,GAAGA,GAAEtC,EAAE,UAAU,GAAGoC,GAAGF,GAAGC,EAAE9C,EAAEN,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,IAAIoD,EAAEM,GAAGN,GAAG,MAAM,GAAGM,GAAG,EAAEF,IAAGJ,EAAE9C,EAAEP,EAAE,GAAG,CAAC,IAAI,EAAEmE,KAAK,GAAGb,EAAEF,EAAEC,IAAI,GAAG,EAAEA,GAAGD,EAAE7C,EAAEP,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEgC,EAAEsB,GAAGD,GAAGC,KAAK,EAAE,EAAEF,EAAEkE,EAAG9D,GAAEG,GAAGxC,GAAG,EAAEkC,IAAI,IAAID,EAAEA,GAAG,GAAGK,MAAK,EAAEH,CAAC,EAAED,EAAE7B,EAAE+B,GAAE,EAAEF,EAAED,IAAI,GAAGK,GAAEL,EAAES,GAAG,KAAK,EAAER,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAGlG,GAAGoC,GAAEjD,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAEoB,GAAGd,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAEoD,EAAE5B,EAAE6B,EAAE,EAAEM,GAAGJ,GAAED,EAAEG,GAAE,EAAEF,GAAED,IAAI,EAAEC,KAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEK,IAAGJ,EAAE9C,EAAEN,EAAE,GAAG,CAAC,IAAI,EAAEyD,KAAK,GAAGL,EAAED,EAAEC,IAAI,GAAG,EAAEC,GAAGF,EAAE7C,EAAEN,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEmD,EAAEkE,EAAGhG,EAAE,UAAU,GAAGgC,GAAGD,KAAK,IAAIA,GAAGD,IAAI,IAAIK,MAAK,GAAG,EAAElC,EAAEqC,KAAK,EAAE,QAAQ,CAAC,EAAEP,EAAE7B,EAAE+B,GAAE,EAAEG,GAAGJ,EAAEF,EAAEO,GAAG,EAAEA,GAAGP,IAAI,EAAEE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEA,GAAGD,EAAE7C,EAAEN,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEsD,GAAEH,GAAG,EAAEI,KAAI,GAAGF,GAAGF,EAAE7C,EAAEN,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEwB,GAAG,GAAG6B,GAAGD,KAAK,IAAID,EAAEG,GAAEH,GAAG,MAAM,EAAEoB,GAAGnB,EAAEC,IAAI,EAAE,EAAEC,GAAEF,EAAEA,GAAGD,EAAE7C,EAAEP,EAAE,EAAE,CAAC,KAAK,GAAG,EAAEwD,GAAEJ,GAAG,GAAGS,GAAGtD,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,MAAM,GAAGsD,EAAED,EAAEA,GAAGD,EAAE7C,EAAEP,EAAE,EAAE,CAAC,KAAK,GAAG,EAAEqD,EAAEiE,EAAG7F,EAAE8B,GAAE7B,EAAE,UAAU,GAAG2B,GAAGC,KAAK,IAAIF,EAAEA,GAAG,GAAGI,MAAK,GAAG,CAAC,EAAEJ,EAAE5B,EAAEmC,GAAG,EAAEL,EAAED,IAAI,GAAGE,GAAEF,EAAEK,GAAG,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEC,EAAEiE,EAAG3F,GAAG0B,EAAE9C,EAAEN,EAAE,GAAG,CAAC,IAAI,GAAG,QAAQM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE2B,EAAEiC,KAAK,EAAE,QAAQ,CAAC,EAAET,EAAE5B,EAAE8B,EAAE,EAAEA,EAAED,IAAI,GAAGE,GAAEF,EAAEE,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEA,EAAEkE,EAAGzF,GAAGwB,EAAE9C,EAAEP,EAAE,EAAE,CAAC,IAAI,GAAG,QAAQO,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE2E,IAAId,GAAGtD,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAEoD,EAAE7B,EAAE8B,EAAE,EAAEE,GAAED,GAAEH,EAAEG,GAAE,EAAEI,GAAGP,IAAI,EAAEG,KAAI,EAAEF,EAAE,EAAE,EAAEA,EAAED,EAAEkE,EAAGhH,EAAE,EAAEF,EAAE,CAAC,EAAEiD,EAAE7B,EAAE+B,IAAGD,EAAEF,IAAIA,EAAEkE,EAAGnG,EAAEa,EAAEvB,EAAE,CAAC,GAAG,EAAE6C,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEF,IAAI,EAAEG,KAAI,EAAED,EAAE,EAAE,EAAEA,EAAEF,EAAEkE,EAAG,EAAE,EAAEzG,EAAE,CAAC,EAAEwC,EAAE7B,EAAE8B,EAAE,EAAED,EAAED,IAAI,GAAGG,GAAEH,EAAEG,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAGrG,EAAE,EAAEM,EAAE,CAAC,EAAE6B,EAAE5B,EAAE6B,EAAE,EAAED,EAAEE,IAAI,GAAGC,GAAED,EAAEC,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEC,EAAEiE,EAAG,EAAE,EAAEpG,EAAE,CAAC,EAAEkC,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEC,IAAI,GAAGC,EAAED,EAAEE,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEG,IAAGF,EAAEC,IAAIA,EAAEgE,EAAGlG,EAAE,EAAEM,EAAE,CAAC,GAAG,EAAE2B,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEC,IAAI,EAAEC,KAAI,EAAEF,EAAE,EAAE,EAAEA,EAAED,EAAEkE,EAAGhG,EAAE,EAAED,EAAE,CAAC,EAAEiC,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEF,IAAI,GAAGG,GAAEH,EAAEG,GAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEC,IAAGH,EAAEkE,EAAG7F,EAAE+C,GAAG5C,EAAE,CAAC,GAAG2B,GAAE,EAAEF,EAAE7B,EAAE8B,EAAE,EAAEA,EAAEgE,EAAG3F,EAAE,EAAEE,EAAE,CAAC,EAAEuB,EAAE5B,GAAG4B,IAAI,EAAEG,KAAI,EAAEF,EAAE,EAAE,EAAEA,GAAG,EAAEE,GAAEH,EAAEE,IAAI,GAAGG,GAAEH,EAAEC,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEqB,GAAGrB,EAAEA,IAAIK,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEJ,GAAGA,EAAED,IAAI,GAAG,GAAGO,GAAG,EAAEM,GAAGX,GAAGD,GAAGD,GAAG,QAAQA,IAAI,IAAIiB,GAAGZ,GAAG,UAAS,KAAK,MAAM,GAAGD,GAAEJ,EAAEI,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,KAAKG,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEQ,GAAGR,IAAGJ,EAAE,UAAUc,GAAGV,GAAG,UAAS,IAAI,EAAEM,GAAGT,IAAID,IAAI,EAAEI,KAAI,GAAGF,EAAE,GAAG,EAAEK,IAAIN,EAAE9C,EAAEN,EAAE,GAAG,CAAC,IAAI,EAAE4D,KAAK,GAAGP,EAAEF,EAAEC,IAAI,GAAG,EAAEG,GAAE8D,EAAGxF,EAAE,UAAU,GAAGwB,GAAGD,GAAGD,EAAE7C,EAAEN,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,IAAIoD,GAAGD,IAAI,IAAIO,MAAM,GAAG,EAAEiB,IAAIrE,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE2D,GAAGnC,EAAE6B,GAAGD,EAAE7C,EAAEP,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEA,EAAEsH,EAAGvF,EAAE,UAAU,GAAGsB,GAAGC,GAAGtD,EAAEO,EAAEP,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,IAAIoD,EAAEA,GAAG,EAAEW,IAAK,GAAG/D,GAAG,MAAM,GAAG,EAAE6E,IAAItE,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAEmD,EAAE5B,EAAEmC,GAAG,EAAEP,EAAEpD,IAAI,GAAGC,EAAED,EAAEwD,GAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEE,EAAErD,EAAED,EAAEsH,EAAGjH,EAAE,EAAEwE,GAAG,CAAC,EAAE5E,EAAEuB,EAAEmC,IAAIN,EAAErD,IAAIA,EAAEsH,EAAG3C,GAAG,EAAEC,GAAG,CAAC,GAAG,EAAEvB,EAAE7B,EAAEvB,EAAE,EAAEoD,EAAErD,IAAI,EAAE2D,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGxF,EAAE,EAAEC,EAAE,CAAC,EAAEsB,EAAE7B,EAAE6B,EAAE,EAAEM,GAAGN,EAAErD,IAAI,GAAG6D,GAAG7D,EAAE2D,GAAG,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEK,GAAG1D,EAAEqD,IAAIQ,KAAK,EAAE,YAAY,EAAE,GAAG,EAAER,EAAErD,IAAI,GAAG,EAAEwD,IAAGxD,GAAG,QAAQA,IAAI,IAAIC,EAAE4D,GAAI,UAAS,KAAK,IAAIP,EAAE,EAAEA,EAAED,EAAED,EAAE,EAAEe,GAAGd,GAAGC,EAAEtD,IAAI,EAAEwD,KAAI,EAAEF,EAAE,EAAE,EAAEA,KAAKE,KAAI,EAAE,YAAY,EAAE,GAAG,EAAExD,EAAEwD,IAAGJ,EAAE,UAAUQ,GAAGJ,GAAG,UAAS,IAAI,EAAEtB,EAAEkB,EAAEE,IAAI,OAAOD,IAAID,IAAI,EAAEI,KAAI,GAAG,GAAG,EAAErB,GAAEnC,EAAEA,EAAEsH,EAAGtH,EAAEoD,EAAE,OAAO,CAAC,EAAEA,EAAE5B,EAAEsC,GAAG,EAAEkB,GAAG3B,EAAErD,EAAEgE,GAAG,EAAER,GAAExD,IAAI,EAAEqD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEY,GAAGH,IAAI7D,EAAE,SAASC,GAAG,EAAEqE,GAAGX,KAAK,OAAOD,KAAK1D,IAAI,EAAE6D,KAAK,GAAG,GAAG,EAAE7D,EAAEsH,EAAG3F,EAAE,EAAEiD,GAAG,CAAC,EAAE3E,EAAEuB,EAAE6B,GAAGD,EAAEpD,IAAIA,EAAEsH,EAAG3C,GAAG,EAAE5C,EAAE,CAAC,GAAG,EAAEqB,EAAE5B,EAAEvB,EAAE,EAAEmD,EAAEpD,IAAI,EAAEqD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEnD,GAAGD,EAAEsH,EAAGhH,EAAE,EAAEuE,GAAG,CAAC,GAAGxB,EAAE,EAAEA,EAAE7B,EAAE4B,EAAE,EAAEC,EAAErD,IAAI,EAAEC,IAAI,EAAEoD,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGjH,EAAE,EAAEyB,EAAE,CAAC,EAAEsB,EAAE5B,EAAE6B,EAAE,EAAEK,GAAGzD,EAAED,EAAEC,EAAE,EAAED,EAAEA,IAAI,EAAEC,IAAI,EAAEmD,EAAE,EAAE,EAAEA,EAAEnD,EAAEqH,EAAGjH,EAAE,EAAEsE,GAAG,CAAC,EAAEvB,EAAE5B,EAAE8B,GAAGD,EAAEpD,IAAIA,EAAEqH,EAAG7F,EAAE+C,GAAGI,GAAG,CAAC,GAAG,EAAEvB,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEpD,IAAI,EAAEqD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAED,GAAGnD,EAAEqH,EAAG3F,EAAE,EAAEI,EAAE,CAAC,GAAGuB,EAAE,EAAEA,EAAE9B,EAAE6B,EAAE,EAAEC,EAAErD,IAAI,EAAEmD,IAAI,EAAEE,EAAE,EAAE,EAAEA,EAAED,GAAGpD,EAAEqH,EAAGnG,EAAEa,EAAE6C,GAAG,CAAC,GAAGzB,EAAE,EAAEA,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEnD,IAAI,EAAEoD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEU,IAAI7D,EAAEqH,EAAGhH,EAAE,EAAEwB,EAAE,CAAC,GAAGuB,EAAE,EAAEA,EAAE7B,EAAE4B,EAAE,EAAES,GAAGR,EAAEpD,IAAI,EAAE6D,KAAK,EAAET,EAAE,EAAE,EAAEA,EAAEe,GAAGnE,EAAEoD,IAAIS,KAAK,EAAE,YAAY,EAAE,GAAG,EAAET,EAAErD,GAAGoD,EAAEnD,IAAI,GAAG,GAAG,EAAEA,EAAEoD,GAAGpD,GAAG,QAAQA,IAAI,IAAI0D,GAAGG,GAAI,UAAS,KAAK,MAAM,GAAGJ,GAAGzD,EAAEyD,GAAG,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEU,EAAGV,EAAEA,IAAIK,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEN,EAAEY,GAAGA,IAAI,QAAQX,IAAI,IAAIrD,EAAE0D,GAAI,UAAS,KAAK,GAAGL,GAAGA,IAAI,GAAG,GAAGiB,GAAG,EAAElC,GAAEiB,GAAGC,EAAEF,EAAEY,GAAG,KAAK,EAAEA,KAAK,EAAEX,EAAE,EAAE,EAAEA,EAAEhB,GAAErC,EAAE0D,IAAIN,EAAE,SAASpD,GAAG,EAAEe,GAAE2C,GAAGzD,IAAImD,IAAI,EAAEM,KAAK,GAAGK,EAAG,GAAG,EAAEzB,GAAEgB,EAAErD,EAAEqH,EAAGhE,EAAED,EAAE,OAAO,CAAC,EAAED,EAAE5B,EAAEgC,GAAE,EAAEJ,EAAEnD,IAAI,GAAGoD,EAAEpD,EAAE+E,GAAG,KAAK,EAAE5B,EAAE,EAAE,EAAEA,EAAEpD,EAAEsH,EAAGtH,EAAE0D,GAAG,OAAO,CAAC,EAAEJ,EAAE9B,EAAE4B,EAAE,EAAEkB,GAAGrE,EAAED,EAAEqD,EAAE,EAAEG,GAAExD,IAAI,EAAEC,IAAI,EAAEqD,EAAE,EAAE,EAAEA,EAAES,EAAGD,IAAI9D,EAAE,SAAS2D,IAAI,EAAEG,GAAGD,KAAK7D,IAAI,EAAE8D,KAAK,GAAGM,GAAG,GAAG,EAAEpE,EAAEsH,EAAG7F,EAAE+C,GAAGzC,EAAE,CAAC,EAAE9B,EAAEuB,EAAE6B,GAAGD,EAAEpD,IAAIA,EAAEsH,EAAGlG,EAAE,EAAEwD,GAAG,CAAC,GAAG,EAAExB,EAAE5B,EAAEvB,EAAE,EAAEmD,EAAEpD,IAAI,EAAEqD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEnD,GAAGD,EAAEsH,EAAGhH,EAAE,EAAEqE,GAAG,CAAC,GAAGtB,EAAE,EAAEA,EAAE7B,EAAE4B,EAAE,EAAEC,EAAErD,IAAI,EAAEC,IAAI,EAAEoD,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGjH,EAAE,EAAEsB,EAAE,CAAC,EAAE2B,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEtD,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEqD,EAAE,EAAE,EAAEA,EAAEtD,EAAEsH,EAAG,EAAE,EAAEzC,GAAG,CAAC,EAAEzB,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEpD,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEpD,EAAEsH,EAAGnG,EAAEa,EAAEF,EAAE,CAAC,EAAEuB,EAAE7B,EAAE4B,EAAE,EAAES,GAAG5D,EAAED,EAAEC,EAAE,EAAE0D,GAAG3D,IAAI,EAAEC,IAAI,EAAEoD,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGhG,EAAE,EAAEsD,GAAG,CAAC,EAAE3E,EAAEuB,EAAE6B,GAAGD,EAAEpD,IAAIA,EAAEsH,EAAGlG,EAAE,EAAEW,EAAE,CAAC,GAAG,EAAEqB,EAAE5B,EAAEvB,EAAE,EAAEmD,EAAEpD,IAAI,EAAEqD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEnD,GAAGD,EAAEsH,EAAGjH,EAAE,EAAEoB,EAAE+C,EAAE,GAAGnB,EAAE,EAAEA,EAAE7B,EAAE4B,EAAE,EAAEC,EAAErD,IAAI,EAAEC,IAAI,EAAEoD,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGnG,EAAEa,EAAE2C,GAAG,CAAC,EAAErB,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEtD,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEqD,EAAE,EAAE,EAAEA,EAAEtD,EAAEsH,EAAGhH,EAAE,EAAEqB,EAAE,CAAC,EAAEyB,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEpD,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEpD,EAAEsH,EAAGzG,EAAE,EAAEgE,GAAG,CAAC,EAAExB,EAAE7B,EAAE4B,EAAE,EAAEC,EAAErD,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEoD,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAG,EAAE,EAAExF,EAAE,CAAC,EAAEsB,EAAE5B,EAAE6B,EAAE,EAAErD,EAAEoD,EAAEpD,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEsB,GAAGtB,EAAEA,IAAInD,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEqD,GAAGD,EAAED,IAAI,GAAG,GAAGO,GAAG,EAAEK,GAAGV,GAAGF,GAAG,QAAQA,IAAI,IAAIgB,GAAGnE,EAAG,UAAS,KAAK,MAAM,GAAG6E,GAAG1B,EAAES,GAAG,KAAK,EAAEP,EAAE,EAAE,EAAEA,EAAE8B,GAAGhC,EAAEE,IAAIwB,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEnB,IAAI,QAAQP,IAAI,IAAIM,GAAGoB,GAAI,UAAS,KAAK,GAAG1B,GAAGA,IAAI,GAAG,GAAGU,GAAG,EAAEvB,GAAEa,GAAGE,EAAEK,GAAGI,EAAG,KAAK,EAAEJ,KAAK,EAAEP,EAAE,EAAE,EAAEA,EAAEZ,GAAEc,EAAEF,EAAEkE,EAAGhE,EAAEF,EAAE,QAAQ,EAAE,EAAEC,EAAE7B,EAAEgC,GAAE,EAAEM,GAAGR,EAAEF,EAAEkB,GAAG,EAAEd,GAAEJ,IAAI,EAAEE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEM,GAAGF,GAAEA,GAAEF,GAAEH,EAAEkE,EAAGlH,EAAE,EAAEe,EAAEa,CAAC,EAAEqB,EAAE7B,EAAE+B,IAAGD,EAAEF,IAAIA,EAAEkE,EAAG,EAAE,EAAE7G,EAAE,CAAC,GAAG,EAAE6C,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEF,IAAI,EAAEG,KAAI,EAAED,EAAE,EAAE,EAAEA,EAAED,EAAEiE,EAAG,EAAE,EAAE/F,EAAE,CAAC,EAAE6B,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEC,IAAI,GAAGE,GAAEF,EAAEE,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAGrG,EAAE,EAAEI,EAAE,CAAC,EAAEgC,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEC,IAAI,GAAGC,GAAED,EAAEC,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAGzG,EAAE,EAAEK,EAAE,CAAC,EAAEkC,EAAE5B,EAAE6B,EAAE,EAAED,EAAEE,IAAI,GAAGC,GAAED,EAAEC,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAGlG,EAAE,EAAEQ,EAAE,CAAC,EAAEyB,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEC,IAAI,GAAGC,GAAED,EAAEC,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAED,EAAEkE,EAAGhG,EAAE,EAAEI,EAAE,CAAC,EAAE4B,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEF,IAAI,GAAGG,GAAEH,EAAEG,GAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAED,EAAEiE,EAAG7F,EAAE+C,GAAG3C,EAAE,CAAC,EAAEuB,EAAE5B,EAAE8B,EAAE,EAAEO,GAAGN,GAAEF,EAAEE,GAAE,EAAEA,GAAEF,IAAI,EAAEE,KAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEA,EAAEkE,EAAGlH,EAAE,EAAE,EAAE,CAAC,EAAEiD,EAAE7B,EAAE8B,EAAEF,EAAEA,EAAEkE,EAAG7G,EAAE,EAAEI,EAAE,CAAC,EAAEwC,EAAE7B,EAAE6B,EAAE,EAAEA,EAAED,IAAI,GAAGE,EAAEA,EAAEF,EAAE,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAEU,GAAIX,EAAEE,IAAIA,EAAEgE,EAAG,EAAE,EAAEjG,EAAE,CAAC,GAAG,EAAE+B,EAAE5B,EAAE6B,EAAE,EAAED,EAAEE,IAAI,EAAES,IAAK,EAAEX,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAGrG,EAAE,EAAES,EAAE,CAAC,EAAE2B,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEC,IAAI,GAAGS,EAAGT,EAAES,EAAG,KAAK,EAAEV,EAAE,EAAE,EAAEA,EAAED,EAAEkE,EAAGpG,EAAE,EAAEK,EAAE,CAAC,EAAE+B,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEF,IAAI,GAAGW,EAAGX,EAAEW,EAAG,KAAK,EAAET,EAAE,EAAE,EAAEA,EAAES,GAAIV,EAAEiE,EAAGlG,EAAE,EAAES,EAAE,CAAC,GAAGkC,EAAG,EAAEX,EAAE5B,EAAE8B,EAAE,EAAEA,EAAEgE,EAAGhG,EAAE,EAAEM,EAAE,CAAC,EAAEyB,EAAE7B,GAAG6B,IAAI,EAAEU,IAAK,EAAEX,EAAE,EAAE,EAAEA,GAAG,EAAEmC,GAAGlC,EAAEC,IAAI,GAAGgC,GAAGhC,EAAES,EAAG,KAAK,EAAEV,EAAE,EAAE,EAAEA,EAAE6C,GAAG7C,EAAEA,IAAIiC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEhC,GAAG,QAAQD,IAAI,IAAIgC,GAAGC,GAAI,UAAS,KAAK,GAAGjC,GAAGA,IAAI,GAAG,GAAGE,GAAE,EAAEgB,GAAGlB,EAAEC,IAAI,GAAGmC,GAAGnC,EAAEO,GAAG,KAAK,EAAER,EAAE,EAAE,EAAEA,EAAE8C,GAAG9C,EAAEA,IAAIoC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEnC,GAAG,QAAQD,IAAI,IAAI2B,GAAGS,GAAI,UAAS,KAAK,GAAGpC,GAAGA,IAAI,GAAG,GAAGI,GAAE,EAAEJ,EAAEC,IAAI,GAAGK,GAAGL,EAAEK,GAAG,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAED,EAAEkE,EAAGhF,GAAEF,GAAE,OAAO,CAAC,EAAEiB,EAAE7B,GAAG6B,KAAKC,EAAE,SAASe,MAAM,EAAEV,KAAK,GAAGc,GAAG,GAAG,GAAG,EAAEpB,EAAED,IAAI,GAAGG,GAAEH,GAAGO,GAAGL,EAAE,GAAG,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAGjF,GAAEtB,GAAE,OAAO,CAAC,EAAEqC,EAAE5B,EAAE6B,EAAE,EAAED,EAAEE,IAAI,GAAGC,GAAED,EAAEC,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAG9E,GAAED,GAAE,OAAO,CAAC,EAAEc,EAAE7B,EAAE4B,EAAE,EAAEkB,GAAGjB,EAAEC,IAAI,GAAG2B,GAAG3B,EAAEC,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAE0C,GAAG1C,EAAEA,IAAI4B,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE7B,GAAGA,EAAEC,GAAG,IAAIG,GAAE,EAAEM,GAAGV,GAAGC,GAAG,QAAQA,IAAI,IAAIU,EAAGkB,GAAI,UAAS,KAAK,MAAM,GAAGR,GAAGpB,EAAES,GAAG,KAAK,EAAEV,EAAE,EAAE,EAAEA,EAAEsC,GAAGrC,EAAED,IAAIqB,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEoB,IAAI,QAAQxC,IAAI,IAAIgB,GAAGI,GAAI,UAAS,KAAK,GAAGZ,GAAGR,GAAG,GAAGD,EAAEkE,EAAGlH,EAAE,EAAE2B,EAAE,CAAC,EAAEsB,EAAE7B,EAAE8B,EAAEF,EAAEA,EAAEkE,EAAGjH,EAAE,EAAEI,EAAE,CAAC,EAAE4C,EAAE7B,EAAE6B,EAAE,EAAEA,EAAED,IAAI,GAAGE,EAAEA,EAAEF,EAAE,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAEE,IAAGH,EAAEkE,EAAG,EAAE,EAAEnG,EAAEa,CAAC,GAAGsB,EAAE,EAAEA,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEF,IAAI,EAAEG,KAAI,EAAED,EAAE,EAAE,EAAEA,EAAED,EAAEiE,EAAG,EAAE,EAAErG,EAAE,CAAC,EAAEmC,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEC,IAAI,GAAGE,GAAEF,EAAEE,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAGhH,EAAE,EAAEY,EAAE,CAAC,EAAEmC,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEC,IAAI,GAAGC,GAAED,EAAEC,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAGlG,EAAE,EAAEG,EAAE,CAAC,EAAE6B,EAAE5B,EAAE6B,EAAE,EAAED,EAAEE,IAAI,GAAGC,GAAED,EAAEC,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAGhG,EAAE,EAAET,EAAE,CAAC,EAAEwC,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEC,IAAI,GAAGC,GAAED,EAAEC,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAED,EAAEkE,EAAGjG,EAAE,EAAEI,EAAE+C,EAAE,EAAElB,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEF,IAAI,GAAGG,GAAEH,EAAEG,GAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAED,EAAEiE,EAAG1F,EAAE,EAAE+C,GAAG,CAAC,EAAEvB,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEC,IAAI,GAAGE,GAAEF,EAAEE,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAG5F,EAAE,EAAEC,EAAE,CAAC,EAAE0B,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEC,IAAI,GAAGC,GAAED,EAAEC,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEC,GAAGF,EAAEG,KAAIA,GAAE+D,EAAGxF,EAAE,EAAED,EAAE,CAAC,GAAG,EAAEuB,EAAE5B,EAAE6B,EAAE,EAAEG,GAAEF,EAAEK,GAAGL,IAAI,EAAEC,KAAI,EAAEH,EAAE,EAAE,EAAEA,EAAE8B,GAAGoC,EAAG1C,GAAG,EAAEC,GAAG,CAAC,EAAEpB,GAAEH,GAAG6B,GAAG3D,KAAK0D,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE7B,EAAE6B,IAAI9B,EAAE,UAAUG,GAAE2B,GAAI,UAAS,IAAI,EAAE9B,GAAGe,KAAK,GAAG,IAAIf,EAAE+B,KAAK,OAAO7B,IAAIF,IAAI,EAAE8B,KAAK,GAAG,GAAG,GAAG,EAAEzC,GAAEW,GAAGE,GAAGM,IAAI,QAAQO,KAAK,GAAGP,KAAK,IAAIP,EAAE,KAAK,EAAEO,KAAK,EAAER,EAAE,EAAE,EAAEA,EAAEV,GAAEY,EAAED,GAAG,QAAQY,KAAK,GAAGC,KAAK,GAAGN,GAAG0D,EAAGhE,EAAEF,EAAE,OAAO,CAAC,EAAEC,EAAE,EAAED,EAAE5B,GAAGyC,KAAK,GAAG,GAAG,EAAEb,EAAEC,IAAI,EAAEO,KAAK,EAAER,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAGnF,GAAED,EAAE,OAAO,CAAC,EAAEmB,EAAE7B,EAAE4B,EAAE,EAAEC,GAAGC,IAAI,GAAGM,GAAGN,EAAEM,GAAG,KAAK,EAAEP,EAAE,EAAE,EAAEA,GAAGM,GAAG,EAAEN,GAAGD,EAAEI,GAAEI,GAAG,KAAK,EAAEA,KAAK,EAAEP,EAAE,EAAE,EAAEA,EAAEO,IAAIN,EAAEgE,EAAGhF,GAAEF,GAAE,OAAO,CAAC,GAAGgB,EAAE,EAAEA,EAAE5B,EAAE6B,EAAE,EAAEyC,GAAGtC,GAAG,UAAS,EAAE0B,GAAGvB,GAAGA,KAAKH,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEH,EAAEiE,EAAGjF,GAAEtB,GAAE,QAAQ,EAAE,EAAEuC,EAAE9B,GAAG8B,IAAI,EAAEM,KAAK,EAAER,EAAE,EAAE,EAAEA,GAAG,EAAEE,EAAED,IAAI,GAAGG,GAAEH,EAAEO,GAAG,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEY,IAAId,EAAEkE,EAAG9E,GAAED,GAAE,OAAO,CAAC,IAAIiB,IAAGH,EAAE,SAASyC,IAAI,GAAG,EAAEzC,EAAE7B,GAAG8B,IAAID,IAAI,EAAEG,KAAI,GAAGG,GAAG,GAAG,GAAG,EAAEL,GAAGa,GAAGf,IAAI,EAAEc,KAAK,EAAEb,EAAE,EAAE,EAAEA,GAAGQ,GAAG,EAAE8B,GAAGvC,EAAEc,GAAG2B,GAAG,EAAEjC,GAAGN,EAAEF,IAAI,EAAEc,KAAK,EAAEZ,EAAE,EAAE,EAAEA,EAAE6B,GAAGL,IAAI1B,EAAE,SAASM,IAAI,EAAEoB,GAAGd,KAAKZ,IAAI,EAAE0B,KAAK,GAAGM,GAAG,GAAG,EAAEzC,GAAEW,EAAEG,KAAI,GAAG,EAAEJ,GAAGD,EAAEnD,IAAIA,EAAEqH,EAAGrF,GAAG,QAAQwB,KAAI,GAAGF,KAAI,GAAGD,EAAE,QAAQ,EAAE,GAAG,EAAEF,EAAE5B,EAAExB,EAAE,EAAEgE,GAAGX,GAAGrD,EAAE,SAASoE,IAAI,EAAEH,IAAIhE,IAAI,EAAEoD,IAAI,EAAED,EAAE,EAAE,EAAEA,KAAKpD,IAAI,EAAEqD,IAAI,GAAGqB,GAAG,GAAG,EAAE1E,EAAEsH,EAAGjH,EAAE,EAAEe,EAAE,CAAC,EAAEnB,EAAEuB,EAAE4B,EAAEpD,EAAEA,EAAEsH,EAAGrG,EAAE,EAAE2D,GAAG,CAAC,EAAEvB,EAAE7B,EAAEvB,EAAE,EAAEoD,EAAErD,IAAI,GAAGoD,EAAEA,EAAEpD,EAAE,KAAK,EAAEqD,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGhG,EAAE,EAAES,EAAE,CAAC,EAAEuB,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEtD,IAAI,GAAGC,EAAED,EAAEoD,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEtD,EAAEsH,EAAGhH,EAAE,EAAEmB,EAAE+C,EAAE,EAAEpB,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEpD,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEpD,EAAEsH,EAAG,EAAE,EAAE3C,GAAG,CAAC,EAAEvB,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEpD,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEpD,EAAEsH,EAAGnG,EAAEa,EAAEL,EAAE,CAAC,EAAE0B,EAAE7B,EAAE4B,EAAE,EAAEC,EAAErD,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEoD,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAG/F,EAAE,EAAEsD,GAAG,CAAC,EAAExB,EAAE7B,EAAE6B,EAAE,EAAEA,EAAErD,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEoD,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGzG,EAAE,EAAEiB,EAAE,CAAC,EAAEwB,EAAE9B,EAAE6B,EAAE,EAAEE,GAAEtD,EAAED,EAAEC,EAAE,EAAED,EAAEA,IAAI,EAAEC,IAAI,EAAEqD,EAAE,EAAE,EAAEA,EAAErD,EAAEqH,EAAGrG,EAAE,EAAEc,EAAE,CAAC,EAAEqB,EAAE5B,EAAE6B,EAAEpD,EAAEA,EAAEqH,EAAG,EAAE,EAAE1C,GAAG,CAAC,EAAExB,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEnD,IAAI,GAAGoD,EAAEA,EAAEpD,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEnD,EAAEqH,EAAGhH,EAAE,EAAEc,EAAE,CAAC,EAAEgC,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEnD,IAAI,GAAGoD,EAAEpD,EAAEoD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEE,GAAGrD,EAAEqH,EAAGjH,EAAE,EAAEiB,EAAE,CAAC,GAAG+B,EAAE,EAAEA,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEpD,IAAI,EAAEqD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEpD,EAAEqH,EAAGnG,EAAEa,EAAEP,EAAE+C,EAAE,EAAEnB,EAAE7B,EAAE6B,EAAE,EAAEA,EAAEpD,IAAI,GAAGmD,EAAEnD,EAAEqD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEpD,EAAEqH,EAAGzG,EAAE,EAAE8D,GAAG,CAAC,EAAErB,EAAE9B,EAAE6B,EAAE,EAAEC,EAAErD,IAAI,GAAGmD,EAAEnD,EAAEmD,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAED,GAAGpD,EAAEqH,EAAG,EAAE,EAAE3F,EAAE,CAAC,GAAGyB,EAAE,EAAEA,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEnD,IAAI,EAAEoD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEnD,EAAEqH,EAAGjG,EAAE,EAAEwD,GAAG,CAAC,EAAEzB,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEnD,IAAI,GAAGoD,EAAEpD,EAAEoD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEM,IAAIzD,EAAEqH,EAAG/F,EAAE,EAAEO,EAAE,CAAC,GAAGuB,EAAE,EAAEA,EAAE7B,EAAE4B,EAAE,EAAES,GAAGR,EAAEpD,IAAI,EAAEyD,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEuC,GAAG3F,EAAEoD,IAAIK,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEJ,EAAEtD,GAAGoD,EAAEnD,IAAI,GAAG,GAAG,EAAE0D,GAAGL,GAAGrD,GAAG,QAAQA,IAAI,IAAIuD,GAAEE,GAAI,UAAS,KAAK,MAAM,GAAGU,GAAGnE,EAAEsD,GAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEoB,GAAG1E,EAAEsD,IAAIc,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEf,GAAGD,EAAEpD,IAAI,GAAG,GAAGiE,GAAG,EAAEV,GAAEF,GAAGrD,GAAG,QAAQA,IAAI,IAAIyD,GAAEW,GAAI,UAAS,KAAK,MAAM,GAAGJ,GAAGhE,EAAEgE,GAAG,KAAK,EAAEX,EAAE,EAAE,EAAEA,EAAEY,GAAGhE,EAAEoD,IAAIW,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEV,GAAGF,EAAEnD,GAAG,IAAI6E,GAAG,EAAElC,GAAEU,GAAGrD,GAAGoD,GAAG,QAAQpD,IAAI,IAAID,EAAEgE,GAAI,UAAS,KAAK,IAAImB,GAAG,KAAK,EAAE9B,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAE8B,GAAGlB,GAAI,UAAS,EAAE2B,GAAGxC,EAAEc,KAAKD,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE8B,GAAG/F,EAAEA,EAAEqH,EAAGrH,EAAEqD,EAAE,QAAQ,EAAE,EAAEF,EAAE5B,EAAEoC,GAAG,EAAEuB,GAAG/B,GAAGC,GAAGD,EAAEnD,IAAI,GAAGqD,EAAErD,EAAE0F,GAAG,KAAK,EAAEvC,EAAE,EAAE,EAAEA,MAAMnD,EAAE,SAASmF,MAAM,EAAE9B,IAAI,GAAGD,EAAE,GAAG,MAAMO,GAAGN,EAAErD,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE8C,GAAEa,IAAI3D,EAAE,UAAU6E,GAAGlB,GAAI,UAAS,IAAI,EAAEwC,GAAG/C,IAAIpD,IAAI,EAAE2D,KAAK,GAAGR,EAAE,GAAG,EAAEnD,EAAEqH,EAAGtB,GAAGpD,GAAE,OAAO,CAAC,EAAES,EAAE7B,GAAGsC,MAAMV,EAAE,SAASiB,MAAM,EAAEI,KAAK,GAAGiB,GAAG,GAAG,GAAG,EAAEO,GAAG3C,EAAErD,GAAGwE,GAAGrB,EAAE,GAAG,EAAEnD,EAAEA,IAAI,EAAEqD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAE0B,GAAGf,IAAIhE,GAAG,UAAU,EAAEqE,GAAGd,KAAIvD,IAAI,EAAEgE,KAAK,GAAGC,GAAG,GAAG,EAAEjE,EAAEsH,EAAG5E,GAAED,GAAE,QAAQ,EAAE,EAAEW,EAAE5B,EAAE6B,EAAErD,EAAEA,EAAEsH,EAAGrF,EAAEU,GAAE,OAAO,CAAC,EAAES,EAAE5B,EAAE4B,EAAE,EAAEC,EAAEM,IAAI3D,IAAI,GAAGsD,EAAED,EAAErD,EAAE,KAAK,EAAEoD,EAAE,EAAE,EAAEA,GAAG,EAAEe,IAAIf,EAAEE,EAAEc,GAAG,IAAIpE,EAAE,SAASyD,IAAG,EAAEG,IAAIP,EAAED,IAAI,EAAEgB,KAAK,EAAEf,EAAE,EAAE,EAAEA,KAAKrD,IAAI,EAAEoD,IAAI,GAAGsB,GAAG,GAAG,EAAE1E,EAAEsH,EAAGrF,EAAEU,GAAE,QAAQ,EAAE,EAAES,EAAE5B,EAAEqC,GAAG,EAAET,EAAEpD,IAAI,GAAGqD,EAAErD,EAAE0D,GAAG,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEpD,EAAEsH,EAAG5E,GAAED,GAAE,OAAO,CAAC,EAAEW,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEpD,IAAI,GAAGqD,EAAErD,EAAEqD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEE,GAAGtD,EAAEsH,EAAGnF,GAAED,EAAE,QAAQ,EAAE,GAAGmB,EAAE,EAAEA,EAAE7B,EAAE4B,EAAE,EAAEC,EAAErD,IAAI,EAAEsD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEM,GAAGL,GAAGtD,EAAE,SAASwD,IAAG,EAAEC,GAAEJ,IAAIrD,IAAI,EAAEsD,IAAI,GAAGsC,GAAG,GAAG,EAAE5F,EAAEsH,EAAGjH,EAAE,EAAEY,EAAE,CAAC,EAAEmC,EAAE5B,EAAE8B,GAAGD,EAAErD,IAAIA,EAAEsH,EAAG,EAAE,EAAEvF,EAAE,CAAC,GAAG,EAAEsB,EAAE7B,EAAE4B,EAAE,EAAEC,EAAErD,IAAI,EAAEsD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGpG,EAAE,EAAE0D,GAAG,CAAC,EAAExB,EAAE5B,EAAE6B,EAAE,EAAED,EAAEpD,IAAI,GAAGsD,EAAEtD,EAAEsD,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEpD,EAAEsH,EAAGlG,EAAE,EAAED,EAAEa,CAAC,EAAEqB,EAAE7B,EAAE4B,EAAE,EAAEC,EAAErD,IAAI,GAAGsD,EAAEtD,EAAEsD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGhH,EAAE,EAAEgB,EAAE,CAAC,EAAE8B,EAAE5B,EAAE6B,EAAE,EAAED,EAAEpD,IAAI,GAAGsD,EAAEtD,EAAEsD,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEC,GAAGrD,EAAEsH,EAAG,EAAE,EAAE7F,EAAE+C,EAAE,GAAGlB,EAAE,EAAEA,EAAE9B,EAAE4B,EAAE,EAAEE,EAAEtD,IAAI,EAAEqD,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAEF,GAAGpD,EAAEsH,EAAG/F,EAAE,EAAEoD,GAAG,CAAC,GAAGtB,EAAE,EAAEA,EAAE7B,EAAE8B,EAAE,EAAED,EAAErD,IAAI,EAAEoD,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAEC,GAAGtD,EAAEsH,EAAGzG,EAAE,EAAEc,EAAE,CAAC,GAAGyB,EAAE,EAAEA,EAAE5B,EAAE6B,EAAE,EAAED,EAAEpD,IAAI,EAAEsD,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEpD,EAAEsH,EAAG5F,EAAE,EAAEmD,GAAG,CAAC,EAAExB,EAAE7B,EAAE4B,EAAE,EAAEC,EAAErD,IAAI,GAAGsD,EAAEtD,EAAEsD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGjG,EAAE,EAAES,EAAE,CAAC,EAAEsB,EAAE5B,EAAE6B,EAAE,EAAEE,GAAED,EAAEtD,EAAEsD,EAAE,EAAEtD,EAAEA,IAAI,EAAEsD,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEA,EAAEkE,EAAGjH,EAAE,EAAE,EAAE,CAAC,EAAEgD,EAAE7B,EAAEgC,IAAGF,EAAEF,IAAIA,EAAEkE,EAAG7G,EAAE,EAAEmE,GAAG,CAAC,GAAG,EAAEtB,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEF,IAAI,EAAEI,KAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEF,EAAEkE,EAAGhH,EAAE,EAAEW,EAAE,CAAC,EAAEoC,EAAE7B,EAAE8B,EAAE,EAAED,EAAED,IAAI,GAAGI,GAAEJ,EAAEI,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAGpG,EAAE,EAAEa,EAAE,CAAC,EAAEqB,EAAE5B,EAAE6B,EAAE,EAAED,EAAEE,IAAI,GAAGE,GAAEF,EAAEE,GAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAG,EAAE,EAAElG,EAAE,CAAC,EAAEiC,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEC,IAAI,GAAGE,GAAEF,EAAEE,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAGnG,EAAEa,EAAEV,EAAE,CAAC,EAAE8B,EAAE5B,EAAE6B,EAAE,EAAED,EAAEE,IAAI,GAAGE,GAAEF,EAAEE,GAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEC,EAAEiE,EAAGzG,EAAE,EAAEY,EAAE+C,EAAE,EAAElB,EAAE9B,EAAE4B,EAAE,EAAEE,EAAED,IAAI,GAAGG,GAAEH,EAAEG,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEF,EAAEkE,EAAGjG,EAAE,EAAEsD,GAAG,CAAC,EAAEtB,EAAE7B,EAAE8B,EAAE,EAAED,EAAED,IAAI,GAAGI,GAAEJ,EAAEI,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAG/F,EAAE,EAAEI,EAAE,CAAC,EAAEyB,EAAE5B,EAAE6B,EAAE,EAAED,EAAEE,IAAI,GAAGE,GAAEF,EAAEE,GAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAG1F,EAAE,EAAEiD,GAAG,CAAC,EAAExB,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEC,IAAI,GAAGE,GAAEF,EAAEE,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAG5F,EAAE,EAAEI,EAAE,CAAC,EAAEsB,EAAE5B,EAAE6B,EAAE,EAAEoB,GAAGrB,EAAEE,IAAI,GAAGoC,GAAGpC,EAAEE,GAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEJ,GAAEI,EAAEA,IAAIsC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAErC,EAAErD,GAAGqD,EAAED,IAAI,GAAG,GAAG,EAAEc,GAAGb,GAAGD,GAAG,QAAQA,IAAI,IAAIa,GAAGyB,GAAI,UAAS,KAAK,MAAM,GAAGC,GAAGvC,EAAEG,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEJ,GAAEjD,EAAEqD,IAAIsC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEvC,GAAGC,EAAErD,IAAI,GAAG,GAAGyD,GAAE,EAAEO,GAAGZ,GAAGpD,GAAG,QAAQA,IAAI,IAAIoE,GAAGuB,GAAI,UAAS,KAAK,MAAM,GAAGC,GAAG5F,EAAE2D,GAAG,KAAK,EAAEP,EAAE,EAAE,EAAEA,EAAEF,GAAElD,EAAEoD,IAAIwC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEvC,GAAGA,EAAErD,GAAG,IAAI4D,GAAG,EAAEC,GAAGR,GAAGrD,GAAG,QAAQA,IAAI,IAAI8D,GAAG8B,GAAI,UAAS,KAAK,MAAM,GAAGlB,GAAG1E,EAAEmE,GAAG,KAAK,EAAEd,EAAE,EAAE,EAAEA,EAAEgD,GAAGrG,EAAEqD,IAAIqB,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEtB,GAAGC,EAAErD,GAAG,IAAIqE,GAAG,EAAExB,GAAEO,GAAGpD,GAAGsD,GAAG,QAAQtD,IAAI,IAAIuD,GAAEmB,GAAI,UAAS,KAAK,IAAIK,GAAG,KAAK,EAAEzB,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAE2B,GAAG/E,EAAEA,EAAEsH,EAAGtH,EAAEoD,EAAE,QAAQ,EAAE,EAAEE,EAAE9B,EAAEvB,EAAE,EAAEqG,GAAGlD,EAAEpD,EAAEiG,GAAG,EAAEzC,GAAExD,IAAI,EAAEoD,IAAI,EAAEE,EAAE,EAAE,EAAEA,EAAEiD,GAAGtB,IAAIjF,EAAE,SAAS+D,GAAI,EAAEgC,GAAGzB,KAAKtE,IAAI,EAAEiF,KAAK,GAAGc,GAAG,GAAG,EAAE/F,EAAEsH,EAAGjF,GAAEtB,GAAE,OAAO,CAAC,EAAEqC,EAAE5B,GAAG+C,MAAMtE,EAAE,SAAS+E,MAAM,EAAES,KAAK,GAAGU,GAAG,GAAG,GAAG,EAAE/C,EAAEpD,IAAI,GAAGqD,EAAErD,GAAGyF,GAAGxF,EAAE,GAAG,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEnD,GAAGD,EAAEsH,EAAG9E,GAAED,GAAE,OAAO,CAAC,GAAGc,EAAE,EAAEA,EAAE7B,EAAE4B,EAAE,EAAE4B,GAAG/E,EAAEA,EAAED,IAAI,EAAEC,IAAI,EAAEoD,EAAE,EAAE,EAAEA,EAAEK,GAAG4B,IAAItF,EAAE,SAASqF,IAAI,EAAE1B,GAAG4B,KAAKvF,IAAI,EAAEsF,KAAK,GAAGY,GAAG,GAAG,EAAElG,EAAEsH,EAAGlH,EAAE,EAAES,EAAE,CAAC,EAAEuC,EAAE5B,EAAE6B,EAAErD,EAAEA,EAAEsH,EAAG7G,EAAE,EAAEc,EAAE,CAAC,EAAE+B,EAAE9B,EAAE4B,EAAE,EAAEE,EAAEtD,IAAI,GAAGqD,EAAEA,EAAErD,EAAE,KAAK,EAAEsD,EAAE,EAAE,EAAEA,EAAEtD,EAAEsH,EAAG,EAAE,EAAE5F,EAAE,CAAC,EAAE0B,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEpD,IAAI,GAAGqD,EAAErD,EAAEqD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEE,GAAGtD,EAAEsH,EAAGrG,EAAE,EAAEW,EAAE,CAAC,GAAGyB,EAAE,EAAEA,EAAE7B,EAAE4B,EAAE,EAAEC,EAAErD,IAAI,EAAEsD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGpG,EAAE,EAAEG,EAAE,CAAC,EAAE+B,EAAE5B,EAAE6B,EAAE,EAAED,EAAEpD,IAAI,GAAGsD,EAAEtD,EAAEsD,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEpD,EAAEsH,EAAGhG,EAAE,EAAEO,EAAE,CAAC,EAAEwB,EAAE7B,EAAE4B,EAAE,EAAEK,GAAEH,EAAEtD,EAAEsD,EAAE,EAAEtD,EAAEA,IAAI,EAAEsD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAED,EAAEkE,EAAGlH,EAAE,EAAEmB,EAAE,CAAC,EAAE8B,EAAE7B,EAAEoC,IAAIN,EAAEF,IAAIA,EAAEkE,EAAG7G,EAAE,EAAEY,EAAE,CAAC,GAAG,EAAEiC,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEF,IAAI,EAAEQ,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAED,EAAEiE,EAAG,EAAE,EAAE1F,EAAE,CAAC,EAAEwB,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEC,IAAI,GAAGO,GAAGP,EAAEO,GAAG,KAAK,EAAER,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAGrG,EAAE,EAAEY,EAAE,CAAC,EAAEwB,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEC,IAAI,GAAGM,GAAGN,EAAEM,GAAG,KAAK,EAAEP,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAGpG,EAAE,EAAEQ,EAAE,CAAC,EAAE0B,EAAE5B,EAAE6B,EAAE,EAAEiB,GAAGlB,EAAEE,IAAI,GAAG2B,GAAG3B,EAAEM,GAAG,KAAK,EAAER,EAAE,EAAE,EAAEA,EAAED,GAAEC,EAAEA,IAAI6B,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE3B,EAAEtD,GAAGqD,EAAED,IAAI,GAAG,GAAG,EAAEiB,GAAGf,GAAGF,GAAG,QAAQA,IAAI,IAAIW,EAAGkB,GAAI,UAAS,KAAK,MAAM,GAAGM,GAAGnC,EAAEK,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAE4C,GAAGlG,EAAEsD,IAAIiC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEnC,GAAGC,EAAErD,IAAI,GAAG,GAAG2D,GAAG,EAAEP,GAAGpD,GAAG,QAAQA,IAAI,IAAImE,GAAGoB,GAAI,UAAS,KAAK,MAAM,GAAGjC,EAAEtD,EAAE0D,GAAG,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEpD,EAAEsH,EAAG9E,GAAED,GAAE,OAAO,CAAC,EAAEc,EAAE7B,EAAE4B,EAAE,EAAEQ,GAAGP,EAAErD,IAAI,GAAGqF,GAAGrF,EAAEsD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAE8C,GAAGnG,EAAEqD,IAAIgC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEjC,EAAEnD,GAAGmD,EAAEpD,GAAG,IAAI,EAAE2D,GAAGP,GAAGpD,GAAG,QAAQA,IAAI,IAAI0D,GAAG2B,GAAI,UAAS,KAAK,MAAM,GAAGd,GAAGvE,EAAEgF,GAAG,KAAK,EAAE5B,EAAE,EAAE,EAAEA,EAAE6C,GAAGjG,EAAEoD,IAAImB,KAAK,EAAE,YAAY,EAAE,GAAG,EAAElB,GAAGD,EAAEpD,GAAG,IAAI+F,GAAG,EAAE1C,GAAGrD,GAAG,QAAQA,IAAI,IAAIyD,GAAEc,GAAI,UAAS,KAAK,MAAM,GAAGtE,EAAED,EAAEuG,GAAG,KAAK,EAAElD,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGtB,GAAGpD,GAAE,QAAQ,EAAE,EAAEU,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEtD,IAAI,GAAGoD,EAAEpD,EAAEC,EAAE,KAAK,EAAEqD,EAAE,EAAE,EAAEA,EAAEmC,GAAGzF,EAAE0E,IAAIzE,EAAE,SAASsD,IAAG,EAAET,GAAEO,EAAEQ,KAAK5D,IAAI,EAAEyE,KAAK,GAAG2B,GAAG,GAAG,EAAE9C,IAAGtD,EAAEqH,EAAGvC,GAAGlC,GAAE,OAAO,CAAC,GAAGO,EAAE,EAAEA,EAAE5B,EAAE8B,EAAE,EAAEtD,EAAEsH,EAAGtH,EAAEqD,EAAE,QAAQ,EAAE,EAAED,EAAE5B,GAAGvB,IAAI,EAAEsD,KAAI,EAAEH,EAAE,EAAE,EAAEA,GAAG,EAAEG,GAAEH,EAAEpD,IAAI,GAAG6D,GAAG7D,EAAEuD,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEkC,GAAGtF,EAAEoD,IAAIS,KAAK,EAAE,YAAY,EAAE,GAAG,EAAET,GAAGC,EAAErD,GAAG,IAAIwD,GAAE,EAAEvD,EAAEmD,GAAGI,GAAEwB,IAAIhF,GAAG,QAAQA,IAAI,IAAIsD,EAAEO,GAAI,UAAS,KAAK,IAAIyC,GAAG,KAAK,EAAEtG,IAAI,EAAEoD,EAAE,EAAE,EAAEA,EAAEsB,GAAGtB,EAAEA,IAAII,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEwB,IAAI,QAAQ5B,IAAI,IAAIpD,EAAEwD,GAAG,UAAS,KAAK,GAAGJ,GAAGA,GAAG,IAAIgD,GAAG,EAAEA,GAAGL,GAAGf,GAAGjC,GAAE,EAAEiC,GAAGA,KAAK,EAAEe,KAAK,EAAE3C,EAAE,EAAE,EAAEA,EAAEiD,GAAG7C,IAAGxD,GAAG,UAAU,EAAEsG,GAAGrG,IAAID,IAAI,EAAEwD,KAAI,GAAGkB,GAAG,GAAG,EAAE6B,GAAG1C,IAAI7D,EAAE,SAASsD,GAAG,EAAEyC,GAAGxC,KAAIvD,IAAI,EAAE6D,KAAK,GAAGyB,GAAG,GAAG,EAAEtF,EAAEsH,EAAGtB,GAAGpD,GAAE,OAAO,CAAC,EAAES,EAAE7B,GAAGmC,MAAM1D,EAAE,SAASwD,MAAK,EAAEc,KAAK,GAAG0B,GAAG,GAAG,GAAG,EAAE5C,EAAErD,IAAI,GAAGoD,EAAEpD,GAAGuE,GAAGtE,EAAE,GAAG,KAAK,EAAEoD,EAAE,EAAE,EAAEA,EAAEpD,GAAGD,EAAEsH,EAAGvC,GAAGlC,GAAE,QAAQ,EAAE,GAAGO,EAAE,EAAEA,EAAE5B,EAAE6B,EAAE,EAAED,EAAEpD,IAAI,EAAEC,IAAI,EAAEmD,EAAE,EAAE,EAAEA,EAAEpD,EAAEsH,EAAG7B,GAAG3C,GAAE,OAAO,CAAC,EAAEM,EAAE5B,EAAE4B,EAAE,EAAE6C,GAAGhG,EAAED,EAAEC,EAAE,EAAED,EAAEA,IAAI,EAAEC,IAAI,EAAEmD,EAAE,EAAE,EAAEA,EAAEkC,GAAGM,IAAI3F,EAAE,SAAS6D,IAAI,EAAES,GAAGP,KAAK/D,IAAI,EAAE2F,KAAK,GAAG1C,GAAE,GAAG,EAAEjD,EAAEqH,EAAG5E,GAAED,GAAE,QAAQ,EAAE,EAAEW,EAAE5B,EAAE8B,GAAGD,EAAEpD,IAAIA,EAAEqH,EAAGrF,EAAEU,GAAE,OAAO,CAAC,GAAG,EAAEU,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEpD,IAAI,EAAEqD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEpD,EAAEqH,EAAGnF,GAAED,EAAE,OAAO,CAAC,EAAEkB,EAAE5B,EAAE6B,EAAE,EAAED,EAAEnD,IAAI,GAAGqD,EAAErD,EAAEqD,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEnD,EAAEqH,EAAGhF,GAAEF,GAAE,QAAQ,EAAE,EAAEgB,EAAE5B,EAAE4B,EAAE,EAAEC,EAAEa,IAAIjE,IAAI,GAAGqD,EAAErD,EAAEqD,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,GAAG,EAAEU,IAAIV,EAAEE,EAAEqC,GAAG,IAAI1F,EAAE,SAASmE,IAAI,EAAEA,IAAIf,EAAED,IAAI,EAAEuC,KAAK,EAAEtC,EAAE,EAAE,EAAEA,KAAKpD,IAAI,EAAEmD,IAAI,GAAGH,GAAE,GAAG,EAAEhD,EAAEqH,EAAG5E,GAAED,GAAE,OAAO,CAAC,EAAEW,EAAE5B,EAAE8B,GAAGD,EAAEpD,IAAIA,EAAEqH,EAAGrF,EAAEU,GAAE,OAAO,CAAC,GAAG,EAAEU,EAAE7B,EAAE4B,EAAE,EAAEC,EAAEpD,IAAI,EAAEqD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEpD,EAAEqH,EAAGnF,GAAED,EAAE,QAAQ,EAAE,EAAEkB,EAAE5B,EAAE6B,EAAE,EAAEA,EAAEoB,IAAIxE,IAAI,GAAGqD,EAAErD,EAAEqD,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,GAAG,EAAEC,GAAGpD,EAAEqD,EAAEoC,GAAG,KAAK,EAAEA,KAAK,EAAErC,EAAE,EAAE,EAAEA,EAAEC,GAAGF,EAAEnD,IAAIA,EAAEqH,EAAGhF,GAAEF,GAAE,OAAO,CAAC,GAAG,EAAEgB,EAAE5B,EAAE6B,EAAE,EAAED,EAAEnD,IAAI,EAAEqD,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEC,GAAGpD,EAAEqH,EAAGjF,GAAEtB,GAAE,QAAQ,EAAE,GAAGuC,EAAE,EAAEA,EAAE9B,EAAE4B,EAAE,EAAEE,EAAErD,IAAI,EAAEoD,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAEG,GAAEJ,GAAGpD,EAAE,SAASgE,IAAI,EAAEV,GAAED,IAAIrD,IAAI,EAAEoD,IAAI,GAAGL,GAAE,GAAG,EAAE/C,EAAEqH,EAAGlH,EAAE,EAAEwE,GAAG,CAAC,EAAExB,EAAE5B,EAAE6B,EAAEpD,EAAEA,EAAEqH,EAAG7G,EAAE,EAAEsB,EAAE,CAAC,EAAEqB,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEnD,IAAI,GAAGoD,EAAEA,EAAEpD,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEnD,EAAEqH,EAAGhH,EAAE,EAAE,EAAE,CAAC,EAAE8C,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEnD,IAAI,GAAGoD,EAAEpD,EAAEoD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEnD,EAAEqH,EAAGnG,EAAEa,EAAEf,EAAE,CAAC,EAAEqC,EAAE9B,EAAE4B,EAAE,EAAEE,EAAErD,IAAI,GAAGoD,EAAEpD,EAAEoD,EAAE,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAEF,GAAGnD,EAAEqH,EAAGjH,EAAE,EAAEa,EAAE,CAAC,GAAGmC,EAAE,EAAEA,EAAE7B,EAAE8B,EAAE,EAAED,EAAEpD,IAAI,EAAEmD,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAEpD,EAAEqH,EAAGlG,EAAE,EAAEP,EAAE,CAAC,EAAEwC,EAAE7B,EAAE6B,EAAE,EAAEA,EAAEpD,IAAI,GAAGmD,EAAEnD,EAAEmD,EAAE,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAEC,GAAGrD,EAAEqH,EAAG,EAAE,EAAEhG,EAAE,CAAC,GAAG8B,EAAE,EAAEA,EAAE5B,EAAE6B,EAAE,EAAED,EAAEnD,IAAI,EAAEqD,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEnD,EAAEqH,EAAG/F,EAAE,EAAEE,EAAE+C,EAAE,EAAEpB,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEnD,IAAI,GAAGoD,EAAEpD,EAAEqD,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEnD,EAAEqH,EAAG5F,EAAE,EAAEiD,GAAG,CAAC,EAAErB,EAAE9B,EAAE4B,EAAE,EAAEE,EAAErD,IAAI,GAAGoD,EAAEpD,EAAEoD,EAAE,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAEF,GAAGnD,EAAEqH,EAAGjG,EAAE,EAAEM,EAAE,CAAC,GAAG0B,EAAE,EAAEA,EAAE7B,EAAE8B,EAAE,EAAED,EAAEpD,IAAI,EAAEmD,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAEpD,EAAEqH,EAAGzF,EAAE,EAAEgD,GAAG,CAAC,EAAExB,EAAE7B,EAAE6B,EAAE,EAAEA,EAAEpD,IAAI,GAAGmD,EAAEnD,EAAEmD,EAAE,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAEC,GAAGrD,EAAEqH,EAAGxF,EAAE,EAAEF,EAAE,CAAC,GAAGwB,EAAE,EAAEA,EAAE5B,EAAE6B,EAAE,EAAED,GAAG8B,KAAK,GAAG,IAAI9B,EAAEnD,IAAI,EAAEqD,IAAI,EAAEF,EAAE,EAAE,EAAEA,GAAG,EAAES,GAAGT,GAAGnD,GAAG,QAAQiF,KAAK,GAAGY,KAAK,MAAM,GAAG5B,GAAGjE,EAAEqD,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEsC,GAAGzF,EAAEmD,IAAIc,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEb,GAAGA,EAAEpD,IAAI,GAAG,GAAGsD,GAAE,EAAEI,GAAGN,GAAGpD,GAAG,QAAQA,IAAI,IAAIuD,GAAEU,GAAI,UAAS,KAAK,MAAM,GAAGF,GAAG/D,EAAEwD,GAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEqB,GAAGzE,EAAEoD,IAAIW,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEZ,GAAGC,EAAEpD,GAAG,IAAImE,GAAG,EAAEb,GAAEH,GAAGnD,GAAG,QAAQA,IAAI,IAAIwD,GAAEO,GAAI,UAAS,KAAK,MAAM,GAAGF,GAAG7D,EAAE6D,GAAG,KAAK,EAAEV,EAAE,EAAE,EAAEA,EAAEa,GAAGb,EAAEA,IAAIU,KAAK,EAAE,YAAY,EAAE,GAAG,EAAET,GAAGA,EAAED,GAAG,IAAImB,GAAG,EAAEA,GAAGlB,GAAGD,GAAGE,GAAG,QAAQF,IAAI,IAAInD,EAAE6D,GAAI,UAAS,KAAK,IAAIwB,GAAG,KAAK,EAAEhC,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEyC,GAAG1C,EAAEC,EAAEiE,EAAGlE,EAAEC,EAAE,QAAQ,EAAE,EAAED,EAAE5B,EAAExB,EAAE,EAAEoE,GAAGd,EAAED,EAAE4C,GAAG,EAAEjG,EAAEqD,IAAI,EAAEC,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEA,EAAEkE,EAAGtB,GAAGpD,GAAE,OAAO,CAAC,EAAEU,EAAE9B,GAAGoC,MAAMP,EAAE,SAASK,MAAM,EAAE2B,KAAK,GAAGc,GAAG,GAAG,GAAG,EAAE7C,EAAEF,IAAI,GAAGM,GAAGN,GAAGiC,GAAGhC,EAAE,GAAG,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAEF,EAAEkE,EAAGvC,GAAGlC,GAAE,OAAO,CAAC,EAAEQ,EAAE7B,EAAE8B,EAAE,EAAED,EAAED,IAAI,GAAGM,GAAGN,EAAEM,GAAG,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEC,EAAEgE,EAAG7B,GAAG3C,GAAE,QAAQ,EAAE,EAAEM,EAAE5B,EAAE6B,EAAE,EAAED,EAAEE,IAAI,GAAGI,GAAGJ,EAAEI,GAAG,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAE8B,GAAGjF,EAAE6D,IAAIT,EAAE,SAASpD,GAAG,EAAEuE,GAAGjB,GAAEA,KAAIF,IAAI,EAAES,KAAK,GAAGG,GAAG,GAAG,EAAEP,IAAIJ,EAAEgE,EAAGxB,GAAGvB,GAAG,OAAO,CAAC,GAAGb,GAAG,EAAEL,EAAE7B,EAAE4B,EAAE,EAAEnD,EAAEqH,EAAGrH,EAAEsD,GAAE,QAAQ,EAAE,EAAED,EAAE9B,GAAG8B,IAAI,EAAEI,KAAK,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAEE,GAAED,EAAErD,IAAI,GAAG2D,GAAG3D,EAAEyD,GAAG,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEmB,GAAGpB,EAAEC,IAAIM,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEN,GAAG,QAAQD,IAAI,IAAIpD,EAAE2D,GAAI,UAAS,KAAK,GAAGP,GAAGA,GAAG,IAAIrD,EAAE,EAAEiE,GAAGX,GAAGD,EAAEC,IAAI,GAAGI,GAAGJ,EAAEc,GAAG,KAAK,EAAEf,EAAE,EAAE,EAAEA,KAAKK,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEI,IAAI,QAAQR,IAAI,IAAItD,EAAE0D,GAAI,UAAS,KAAK,GAAGJ,GAAGA,GAAG,IAAIyC,GAAG,EAAEpB,GAAGP,GAAGN,GAAGyC,GAAG,EAAEnC,GAAGN,KAAK,EAAEM,KAAK,EAAEd,EAAE,EAAE,EAAEA,EAAEsB,GAAGlB,IAAI1D,GAAG,UAAU,EAAE6E,GAAGxB,IAAIrD,IAAI,EAAE0D,KAAK,GAAGO,GAAG,GAAG,EAAE0B,GAAG/B,IAAI5D,EAAE,SAASC,GAAG,EAAE2F,GAAGrC,KAAIvD,IAAI,EAAE4D,KAAK,GAAGa,GAAG,GAAG,EAAEzE,EAAEsH,EAAGtB,GAAGpD,GAAE,OAAO,CAAC,EAAES,EAAE7B,GAAG6C,MAAMpE,EAAE,SAASkE,MAAM,EAAEoB,KAAK,GAAGW,GAAG,GAAG,GAAG,EAAE7C,EAAErD,IAAI,GAAGoD,EAAEpD,GAAGuF,GAAGtF,EAAE,GAAG,KAAK,EAAEoD,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGvC,GAAGlC,GAAE,OAAO,CAAC,EAAES,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEtD,IAAI,GAAGC,EAAED,EAAEoD,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEtD,EAAEsH,EAAG7B,GAAG3C,GAAE,OAAO,CAAC,EAAEO,EAAE7B,EAAE8B,EAAE,EAAEI,GAAGzD,EAAED,EAAEC,EAAE,EAAED,EAAEA,IAAI,EAAEC,IAAI,EAAEoD,EAAE,EAAE,EAAEA,EAAEI,GAAEO,IAAI/D,EAAE,SAASwD,IAAG,EAAEF,GAAEI,KAAK1D,IAAI,EAAE+D,KAAK,GAAGU,GAAG,GAAG,EAAEzE,EAAEqH,EAAG5E,GAAED,GAAE,OAAO,CAAC,EAAEW,EAAE5B,EAAE6B,EAAEpD,EAAEA,EAAEqH,EAAGrF,EAAEU,GAAE,OAAO,CAAC,EAAES,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEnD,IAAI,GAAGoD,EAAEA,EAAEpD,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEnD,EAAEqH,EAAGnF,GAAED,EAAE,OAAO,CAAC,EAAEoB,EAAE9B,EAAE4B,EAAE,EAAEE,EAAErD,IAAI,GAAGoD,EAAEpD,EAAEoD,EAAE,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAEF,GAAGnD,EAAEqH,EAAGhF,GAAEF,GAAE,QAAQ,EAAE,GAAGiB,EAAE,EAAEA,EAAE7B,EAAE8B,EAAE,EAAED,EAAEpD,IAAI,EAAEmD,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAEpD,EAAEqH,EAAGjF,GAAEtB,GAAE,OAAO,CAAC,EAAEsC,EAAE7B,EAAE6B,EAAE,EAAED,EAAES,IAAI5D,IAAI,GAAGqD,EAAErD,EAAEmD,EAAE,KAAK,EAAEC,EAAE,EAAE,EAAEA,GAAG,EAAED,GAAGnD,EAAEqD,EAAEY,GAAG,KAAK,EAAEA,KAAK,EAAEd,EAAE,EAAE,EAAEA,EAAEC,EAAEpD,EAAEA,EAAEqH,EAAG9E,GAAED,GAAE,QAAQ,EAAE,EAAEa,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEnD,IAAI,GAAGqD,EAAED,EAAEpD,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEa,IAAIhE,GAAG,QAAQ4F,KAAK,GAAGT,KAAK,KAAK9B,GAAGD,EAAE,SAASG,IAAG,GAAG,EAAEH,GAAGD,IAAIC,IAAI,EAAEC,IAAI,GAAGoC,GAAG,GAAG,IAAIG,IAAI,IAAI,EAAE7B,GAAGX,EAAEpD,IAAI,EAAEgE,KAAK,EAAEZ,EAAE,EAAE,EAAEA,EAAEqB,GAAGzE,EAAEoD,IAAIY,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEZ,GAAGD,EAAEnD,GAAG,IAAIsD,GAAE,EAAEsC,GAAGxC,GAAGpD,GAAGqD,GAAG,QAAQrD,IAAI,IAAI6D,GAAGG,GAAI,UAAS,KAAK,IAAIR,GAAE,KAAK,EAAEH,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEoB,GAAGxE,EAAEA,EAAEqH,EAAGrH,EAAEoD,EAAE,QAAQ,EAAE,EAAEC,EAAE9B,EAAExB,EAAE,EAAEsD,EAAErD,IAAI,GAAGmD,EAAEnD,EAAEyD,GAAG,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEtD,EAAEsH,EAAGxB,GAAGvB,GAAG,QAAQ,EAAE,EAAElB,EAAE7B,EAAE8B,EAAE,EAAED,EAAErD,IAAI,GAAGC,EAAED,EAAEoD,EAAE,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGpC,GAAGV,GAAG,OAAO,CAAC,EAAEpB,EAAE5B,EAAE6B,EAAE,EAAE+B,GAAGnF,EAAED,EAAEC,EAAE,EAAEwD,GAAEzD,IAAI,EAAEC,IAAI,EAAEmD,EAAE,EAAE,EAAEA,EAAEI,GAAEyB,IAAIjF,EAAE,SAAS+D,GAAI,EAAEJ,GAAGW,KAAKtE,IAAI,EAAEiF,KAAK,GAAG9B,GAAE,GAAG,EAAEnD,EAAEsH,EAAGlH,EAAE,EAAEiB,EAAE,CAAC,EAAEpB,EAAEuB,EAAE4B,EAAEpD,EAAEA,EAAEsH,EAAG7G,EAAE,EAAEiB,EAAE,CAAC,EAAE2B,EAAE7B,EAAEvB,EAAE,EAAEoD,EAAErD,IAAI,GAAGoD,EAAEA,EAAEpD,EAAE,KAAK,EAAEqD,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAG,EAAE,EAAEzF,EAAE,CAAC,EAAEwB,EAAE7B,EAAE6B,EAAE,EAAEA,EAAErD,IAAI,GAAGC,EAAED,EAAEoD,EAAE,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAGpG,EAAE,EAAEU,EAAE,CAAC,EAAEwB,EAAE5B,EAAE6B,EAAE,EAAErD,EAAEA,IAAI,GAAGqD,EAAEpD,EAAED,EAAEC,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEnD,EAAEqH,EAAGlH,EAAE,EAAEsB,EAAE,CAAC,EAAE0B,EAAE5B,EAAE+B,IAAGD,EAAErD,IAAIA,EAAEqH,EAAG7G,EAAE,EAAEmB,EAAE,CAAC,GAAG,EAAE0B,EAAE9B,EAAE4B,EAAE,EAAEE,EAAErD,IAAI,EAAEsD,KAAI,EAAED,EAAE,EAAE,EAAEA,EAAErD,EAAEqH,EAAGpG,EAAE,EAAEW,EAAE,CAAC,EAAEuB,EAAE5B,EAAE8B,EAAE,EAAErD,EAAEmD,EAAEnD,IAAI,GAAGsD,GAAEtD,EAAEsD,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAE4C,GAAG5C,EAAEA,IAAIG,KAAI,EAAE,YAAY,EAAE,GAAG,EAAED,EAAEF,IAAI,GAAG,EAAEc,IAAId,GAAG,QAAQA,IAAI,IAAIiB,GAAGd,GAAG,UAAS,KAAK,IAAIF,EAAE,EAAEA,EAAErD,EAAEsD,EAAE,EAAEa,GAAGd,EAAED,IAAI,EAAEc,KAAK,EAAEb,EAAE,EAAE,EAAEA,EAAEkC,GAAGvF,EAAEqD,IAAIa,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEd,GAAGE,EAAEtD,IAAI,GAAG,GAAG2D,GAAG,EAAEP,GAAGpD,GAAG,QAAQA,IAAI,IAAI4D,GAAGM,GAAI,UAAS,KAAK,MAAM,GAAGb,EAAErD,EAAEwD,GAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEE,GAAGtD,EAAEsH,EAAGvC,GAAGlC,GAAE,OAAO,CAAC,GAAGQ,EAAE,EAAEA,EAAE7B,EAAE4B,EAAE,EAAEC,EAAErD,IAAI,EAAEsD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAErD,EAAEsH,EAAG7B,GAAG3C,GAAE,OAAO,CAAC,EAAEO,EAAE7B,EAAE6B,EAAE,EAAEA,EAAErD,IAAI,GAAGoD,EAAEpD,EAAEsD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEC,GAAGtD,EAAEsH,EAAG7C,GAAGoB,GAAG,OAAO,CAAC,GAAGzC,EAAE,EAAEA,EAAE5B,EAAE6B,EAAE,EAAED,EAAEpD,IAAI,EAAEsD,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEC,GAAGrD,EAAEsH,EAAGxB,GAAGvB,GAAG,OAAO,CAAC,GAAGjB,EAAE,EAAEA,EAAE9B,EAAE4B,EAAE,EAAEE,EAAEtD,IAAI,EAAEqD,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAEtD,EAAEsH,EAAGpC,GAAGV,GAAG,QAAQ,EAAE,EAAEpB,EAAE5B,EAAE8B,EAAE,EAAEO,GAAGT,EAAEpD,IAAI,GAAG0D,GAAG1D,EAAEqD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEiC,GAAGrF,EAAEoD,IAAIM,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEL,GAAGC,EAAEtD,GAAG,IAAIyD,GAAE,EAAE2B,GAAGhC,GAAGC,GAAGrD,GAAGoD,GAAG,QAAQpD,IAAI,IAAIwD,GAAEE,GAAI,UAAS,KAAK,IAAI0B,GAAG,KAAK,EAAEhC,IAAI,EAAEC,EAAE,EAAE,EAAEA,KAAKrD,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEyD,IAAG,QAAQL,IAAI,IAAIO,GAAG3D,EAAG,UAAS,KAAK,GAAGoD,GAAGA,GAAG,IAAIwC,GAAG,EAAEN,GAAGvB,EAAGN,GAAEkC,GAAG,EAAErB,GAAGb,KAAI,EAAEM,IAAK,EAAEX,EAAE,EAAE,EAAEA,EAAEK,GAAEzD,EAAEsD,EAAED,EAAEA,GAAGW,MAAMZ,EAAE,SAASU,MAAM,EAAEG,KAAK,GAAGS,GAAG,GAAG,IAAIS,IAAI,IAAI,EAAEpB,EAAGV,GAAGrD,GAAGiE,GAAGb,EAAE,IAAIU,IAAI,QAAQqB,KAAK,GAAGL,KAAK,IAAI,KAAK,EAAEhB,KAAK,EAAET,EAAE,EAAE,EAAEA,EAAEqC,GAAGrC,EAAEA,IAAIrD,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEiE,GAAGb,EAAEC,GAAG,GAAGA,EAAEiE,EAAGvC,IAAI,QAAQ1B,IAAI,IAAIW,GAAGhE,EAAG,UAAS,KAAK,GAAGoD,EAAE,QAAQ,EAAE,EAAEA,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEC,IAAI,GAAGI,GAAEJ,EAAEI,GAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEuC,GAAGlC,IAAGJ,EAAE,SAASM,IAAI,EAAEiC,GAAGxC,IAAIC,IAAI,EAAEI,KAAI,GAAG2B,GAAG,GAAG,EAAEhC,EAAEkE,EAAGvC,GAAGd,GAAG,OAAO,CAAC,EAAEZ,EAAE7B,EAAEqC,GAAG,EAAER,EAAED,IAAI,GAAGE,EAAEF,EAAEM,GAAG,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEqB,GAAGpB,GAAGF,EAAE,SAASI,IAAG,EAAE4B,GAAG/B,IAAID,IAAI,EAAEE,IAAI,GAAG+B,GAAG,GAAG,EAAE/B,GAAGF,EAAEkE,EAAG7B,GAAG3C,GAAE,OAAO,CAAC,IAAIoB,IAAIb,EAAE,SAASO,IAAI,GAAG,EAAEP,EAAE7B,GAAG2C,KAAKd,IAAI,EAAEa,KAAK,GAAGqB,GAAG,GAAG,GAAG,EAAElC,EAAED,IAAI,EAAEE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEI,IAAGL,EAAEkE,EAAG7C,GAAGoB,GAAG,QAAQ,EAAE,GAAGvC,EAAE,EAAEA,EAAE9B,EAAE6B,EAAE,EAAEC,EAAEF,IAAI,EAAEK,KAAI,EAAEH,EAAE,EAAE,EAAEA,EAAED,EAAEiE,EAAGxB,GAAGvB,GAAG,OAAO,CAAC,EAAEnB,EAAE5B,EAAE8B,EAAE,EAAEF,EAAEC,IAAI,GAAGI,GAAEJ,EAAEI,GAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEE,EAAEgE,EAAGpC,GAAGV,GAAG,OAAO,CAAC,EAAEnB,EAAE7B,EAAE4B,EAAE,EAAE+B,GAAG1B,GAAEH,EAAEG,GAAE,EAAEI,GAAGP,IAAI,EAAEG,KAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,GAAEF,GAAEA,GAAEtD,EAAEA,EAAEqH,EAAG7G,EAAE,EAAEoB,EAAE,CAAC,EAAEuB,EAAE5B,EAAE6B,EAAEpD,EAAEA,EAAEqH,EAAGlH,EAAE,EAAEwB,EAAE,CAAC,EAAEwB,EAAE5B,EAAE4B,EAAE,EAAEA,EAAEnD,IAAI,GAAGqD,EAAED,EAAEpD,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEnD,EAAEqH,EAAGlH,EAAE,EAAEyB,EAAE,CAAC,EAAEoD,GAAG5B,EAAE7B,EAAE0C,GAAGjE,EAAEkE,GAAGlE,EAAG,UAAS,EAAEsF,GAAGtF,EAAEoD,IAAIpD,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEoD,EAAEpD,IAAI,GAAG,EAAE6D,IAAI7D,GAAG,QAAQA,IAAI,GAAGkE,KAAK,IAAIb,EAAE,EAAEA,EAAED,EAAED,EAAE,EAAEQ,GAAGN,EAAErD,IAAI,EAAE6D,KAAK,EAAER,EAAE,EAAE,EAAEA,EAAE+B,GAAGpF,EAAEqD,IAAIQ,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEV,GAAGC,EAAEpD,IAAI,GAAG,GAAGsD,GAAE,EAAEH,GAAGnD,GAAG,QAAQA,IAAI,IAAIyD,GAAGI,GAAI,UAAS,KAAK,MAAM,GAAGR,EAAErD,EAAEwD,GAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEG,IAAGtD,EAAEqH,EAAG7C,GAAGoB,GAAG,OAAO,CAAC,IAAIvC,GAAGD,EAAE,SAASgB,IAAI,GAAG,EAAEf,EAAE9B,GAAG4B,IAAI,KAAK4C,KAAK3C,IAAI,EAAEC,IAAI,GAAG,GAAG,GAAG,EAAEA,EAAErD,IAAI,EAAEsD,KAAI,EAAED,EAAE,EAAE,EAAEA,EAAErD,EAAEqH,EAAGxB,GAAGvB,GAAG,OAAO,CAAC,EAAElB,EAAE7B,EAAE8B,EAAE,EAAED,EAAEpD,IAAI,GAAGmD,EAAEnD,EAAEsD,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEG,IAAGvD,EAAEqH,EAAGpC,GAAGV,GAAG,OAAO,CAAC,GAAGpB,EAAE,EAAEA,EAAE5B,EAAE6B,EAAE,EAAEM,GAAGP,EAAEnD,IAAI,EAAEuD,KAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAE0B,GAAG7E,EAAEmD,IAAII,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEH,GAAGA,EAAEpD,GAAG,IAAI4D,GAAG,EAAEP,EAAED,GAAGpD,GAAG,QAAQA,IAAI,IAAIwD,GAAED,GAAG,UAAS,KAAK,MAAM,GAAGD,GAAEtD,EAAEkF,GAAG,KAAK,EAAE9B,EAAE,EAAE,EAAEA,EAAEgB,GAAGjB,EAAEC,IAAIE,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEM,IAAI,QAAQT,IAAI,IAAInD,EAAEsD,GAAG,UAAS,KAAK,GAAGH,GAAGA,GAAG,IAAIgC,GAAG,EAAEvB,GAAGA,KAAK,GAAGU,GAAGY,GAAGtB,GAAGa,GAAG,KAAK,EAAEtB,EAAE,EAAE,EAAEA,EAAEC,EAAEiE,EAAGvC,GAAGd,GAAG,QAAQ,EAAE,EAAEb,EAAE5B,EAAE8B,EAAE,EAAEwC,IAAIvC,GAAEF,EAAEE,GAAE,IAAItD,GAAG,UAAU,EAAEmF,IAAI/B,IAAI,EAAEE,KAAI,EAAEH,EAAE,EAAE,EAAEA,KAAKnD,IAAI,EAAEsD,KAAI,GAAGc,GAAG,GAAG,EAAEpE,EAAEqH,EAAGvC,GAAGd,GAAG,OAAO,CAAC,EAAEX,EAAE9B,EAAEmC,GAAG,EAAEL,EAAErD,IAAI,GAAGmD,EAAEnD,EAAEuD,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAE6B,GAAG/B,GAAGnD,EAAE,SAASwD,IAAG,EAAEqB,GAAGxB,IAAIrD,IAAI,EAAEmD,IAAI,GAAG0B,GAAG,GAAG,EAAE7E,EAAEqH,EAAG7C,GAAGoB,GAAG,OAAO,CAAC,EAAExC,EAAE7B,GAAGoC,KAAK,KAAKyB,MAAMjC,EAAE,SAASM,MAAM,EAAEI,KAAK,GAAG,GAAG,GAAG,EAAET,EAAEpD,IAAI,GAAGqD,EAAErD,GAAG6D,GAAGV,EAAE,GAAG,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAEpD,EAAEqH,EAAGpC,GAAGV,GAAG,OAAO,CAAC,EAAEnB,EAAE7B,EAAE6B,EAAE,EAAEA,EAAEpD,IAAI,GAAGmD,EAAEnD,EAAEqD,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEE,GAAEH,EAAEnD,EAAEqH,EAAG7C,GAAGoB,GAAG,OAAO,CAAC,EAAEvC,EAAE9B,GAAGyD,KAAK,KAAKM,MAAMnC,EAAE,SAASe,MAAM,EAAED,KAAK,GAAG,GAAG,GAAG,EAAEV,GAAEF,EAAErD,IAAI,GAAGyD,GAAGzD,GAAGiE,GAAGd,EAAE,GAAG,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEe,GAAGpE,EAAEqD,IAAII,KAAK,EAAE,YAAY,EAAE,GAAG,EAAEL,EAAEA,GAAGD,EAAEnD,GAAG,IAAI,EAAEkE,GAAGlE,GAAGoD,GAAGpD,GAAG,QAAQA,IAAI,IAAI0D,GAAGD,GAAI,UAAS,KAAK,MAAM,GAAGD,GAAExD,EAAEsD,GAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,KAAKI,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEH,GAAGF,EAAEnD,GAAG,IAAI6E,GAAG,EAAE7E,GAAGA,GAAG,QAAQA,IAAI,IAAIsD,GAAEE,GAAG,UAAS,KAAK,MAAM,GAAGG,GAAG3D,EAAEkF,GAAG,KAAK,EAAE7B,EAAE,EAAE,EAAEA,EAAEF,EAAEkE,EAAGvC,GAAGd,GAAG,OAAO,CAAC,EAAEZ,EAAE7B,EAAE6B,EAAE,EAAEA,EAAED,IAAI,GAAGE,EAAEF,EAAEK,GAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEE,GAAED,GAAGF,EAAE,SAASG,IAAG,EAAEE,GAAEJ,IAAID,IAAI,EAAEE,IAAI,GAAGa,GAAG,GAAG,EAAEf,EAAEkE,EAAGvC,GAAGd,GAAG,OAAO,CAAC,EAAEX,EAAE9B,GAAGgC,MAAKH,EAAE,SAASM,MAAM,EAAED,KAAK,GAAGW,GAAG,GAAG,GAAG,EAAEjB,GAAGC,GAAGC,EAAEF,IAAI,GAAGU,GAAGV,GAAGM,GAAGL,EAAE,GAAG,KAAK,EAAEC,EAAE,EAAE,EAAEA,IAAI,IAAIG,GAAE,EAAEJ,EAAEpD,GAAGqD,GAAGF,GAAGE,GAAG,QAAQA,IAAI,GAAGQ,KAAK,MAAM,GAAGP,GAAED,EAAEC,GAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,IAAI,IAAI,EAAEA,GAAGA,GAAGC,GAAGpD,EAAEwD,IAAGL,GAAG,QAAQA,IAAI,GAAGG,KAAI,IAAIK,GAAG,KAAK,EAAER,IAAI,EAAEC,EAAE,EAAE,EAAEA,IAAI,IAAI+B,GAAG,EAAE/B,GAAGA,GAAGD,GAAGC,GAAG,QAAQA,IAAI,GAAGpD,IAAI,MAAM,GAAGoE,GAAGhB,EAAEyC,GAAG,KAAK,EAAE1C,EAAE,EAAE,EAAEA,IAAI,IAAIS,GAAG,EAAEP,GAAGF,GAAGC,GAAGD,GAAG,QAAQA,IAAI,GAAGiB,KAAK,MAAM,GAAGF,GAAGf,EAAEmB,GAAG,KAAK,EAAElB,EAAE,EAAE,EAAEA,IAAI,IAAIuC,GAAG,EAAExC,GAAGC,GAAGC,GAAGD,GAAG,QAAQA,IAAI,GAAGc,KAAK,MAAM,GAAGP,GAAGP,EAAEsC,GAAG,KAAK,EAAErC,EAAE,EAAE,EAAEA,IAAI,IAAIgB,GAAG,EAAEjB,GAAGC,GAAGF,GAAGE,GAAG,QAAQA,IAAI,GAAGM,KAAK,MAAM,GAAGF,GAAGJ,EAAEgC,GAAG,KAAK,EAAElC,EAAE,EAAE,EAAEA,IAAI,IAAIyB,GAAG,EAAEzB,GAAGA,GAAGC,GAAGD,GAAG,QAAQA,IAAI,GAAGM,KAAK,MAAM,GAAGG,GAAGT,EAAEwB,GAAG,KAAK,EAAEvB,EAAE,EAAE,EAAEA,IAAI,IAAIe,GAAG,EAAEf,GAAGA,GAAGD,GAAGC,GAAG,QAAQA,IAAI,GAAGQ,KAAK,MAAM,GAAGL,GAAEH,EAAEsB,GAAG,KAAK,EAAEvB,EAAE,EAAE,EAAEA,IAAI,IAAIkD,GAAG,EAAEhD,GAAGF,GAAGC,GAAGD,GAAG,QAAQA,IAAI,GAAGI,KAAI,MAAM,GAAGG,GAAGP,EAAEiD,GAAG,KAAK,EAAEhD,EAAE,EAAE,EAAEA,IAAI,IAAI2B,GAAG,EAAE3B,GAAGU,IAAK/D,IAAI,GAAGoD,EAAE,SAASY,MAAM,GAAG0B,GAAG,GAAG,KAAKpC,GAAGD,GAAG,QAAQA,IAAI,GAAGM,KAAK,MAAM,GAAGF,GAAEJ,EAAE+C,GAAG,KAAK,EAAE9C,EAAE,EAAE,EAAEA,IAAI,IAAI,EAAES,EAAGX,GAAGC,GAAGW,IAAIM,GAAGtE,EAAEoD,EAAE,KAAK,QAAQE,IAAI,GAAGG,KAAI,IAAI,KAAK,EAAEa,KAAK,EAAEjB,EAAE,EAAE,EAAEA,IAAI,GAAGrD,GAAGA,EAAEsH,EAAGhD,IAAI,QAAQjB,IAAI,GAAGW,KAAK,GAAGZ,EAAE,OAAO,CAAC,IAAIA,EAAE,QAAQU,IAAI,EAAER,EAAE9B,EAAErB,EAAE,EAAEJ,CAAC,EAAEC,EAAEsD,EAAEtD,IAAI,EAAEoD,IAAI,EAAEE,EAAE,EAAE,EAAEA,EAAEnD,EAAEJ,EAAE,EAAE,CAAC,GAAG,IAAIuD,IAAI,GAAGtD,IAAI,EAAEoD,EAAE,QAAQG,GAAEA,GAAE+D,EAAGhD,GAAGP,EAAG,OAAO,CAAC,EAAEX,EAAE,EAAEC,EAAE7B,EAAE6B,GAAGC,GAAG,KAAKD,EAAED,IAAI,EAAEG,KAAI,EAAEF,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGE,IAAGO,IAAI,QAAQR,IAAI,GAAGtD,IAAI,IAAIuD,GAAE,KAAK,EAAEO,KAAK,EAAET,EAAE,EAAE,EAAEA,EAAElD,EAAEJ,EAAE,EAAE,CAAC,GAAG,KAAKsD,IAAI,GAAGE,KAAI,GAAGpD,EAAEJ,EAAE,EAAE,CAAC,GAAG,EAAEsD,IAAI,GAAGE,KAAI,EAAEpD,EAAEJ,EAAE,EAAE,CAAC,EAAE,KAAK,MAAMuD,IAAI,GAAGtD,IAAI,IAAIuD,IAAG,EAAEvD,EAAE,QAAQC,EAAEA,EAAEqH,EAAGhD,GAAGP,EAAG,OAAO,CAAC,EAAE/D,EAAE,EAAEsD,EAAE9B,EAAE8B,EAAEtD,IAAI,EAAEC,IAAI,EAAEqD,EAAE,EAAE,EAAEA,EAAEtD,EAAEqD,EAAED,GAAGC,IAAI,IAAIC,EAAE,EAAEtD,EAAEoD,GAAGpD,GAAG,QAAQA,IAAI,GAAGuD,KAAI,MAAM,GAAGtD,EAAED,EAAEC,EAAE,KAAK,EAAEmD,EAAE,EAAE,EAAEA,EAAEjD,EAAEJ,EAAE,EAAE,CAAC,GAAG,GAAGqD,IAAI,GAAGnD,IAAI,EAAEoD,EAAE,EAAElD,EAAEJ,EAAE,EAAE,CAAC,EAAEsD,GAAG,IAAI,QAAQE,MAAK,GAAGtD,GAAG,EAAEoD,EAAE,QAAQgB,GAAGf,EAAEgE,EAAGhD,GAAGP,EAAG,QAAQ,EAAE,EAAEV,EAAE,EAAED,EAAE5B,EAAE4B,EAAEC,IAAI,EAAEC,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEC,GAAGA,EAAErD,GAAG,IAAIoD,EAAE,EAAEC,GAAGrD,GAAGuD,GAAED,IAAIA,GAAG,QAAQtD,IAAI,GAAGC,IAAI,IAAI,KAAK,EAAEqD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAElD,EAAEJ,EAAE,EAAE,CAAC,GAAG,IAAIsD,IAAI,GAAGrD,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,GAAG,EAAEsD,IAAI,GAAGrD,IAAI,EAAEoD,EAAE,EAAEjD,EAAEJ,EAAE,EAAE,CAAC,EAAEqD,GAAG,IAAI,QAAQnD,KAAK,GAAGD,GAAG,EAAEC,EAAE,QAAQkE,GAAGf,EAAEkE,EAAGhD,GAAGP,EAAG,OAAO,CAAC,EAAE9D,EAAE,EAAEqD,EAAE9B,EAAE8B,EAAErD,IAAI,EAAEmD,IAAI,EAAEE,EAAE,EAAE,EAAEA,EAAErD,GAAGsD,IAAG,SAAStD,EAAEoD,KAAK,GAAGrD,IAAI,IAAIoD,EAAE,EAAEA,GAAGC,IAAI,IAAIC,EAAE,EAAEF,EAAEnD,IAAI,EAAEsD,KAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEjD,EAAEJ,EAAE,GAAG,CAAC,GAAG,KAAKqD,IAAI,GAAGnD,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGqD,IAAI,GAAGnD,IAAI,EAAEoD,EAAE,EAAElD,EAAEJ,EAAE,GAAG,CAAC,EAAEsD,GAAG,IAAI,QAAQrD,KAAK,GAAGC,GAAG,EAAED,EAAE,QAAQ4D,GAAGN,EAAEgE,EAAGhD,GAAGP,EAAG,QAAQ,EAAE,EAAE/D,EAAE,EAAEqD,EAAE7B,EAAE6B,EAAErD,IAAI,EAAEsD,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAErD,EAAEoD,EAAEA,EAAEC,GAAGD,IAAI,IAAI,EAAEA,GAAGpD,GAAGuD,GAAED,IAAIA,GAAG,QAAQtD,IAAI,GAAGC,IAAI,IAAI,KAAK,EAAEqD,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEjD,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIqD,IAAI,GAAGpD,IAAI,EAAEqD,EAAE,EAAElD,EAAEJ,EAAE,GAAG,CAAC,EAAEsD,GAAG,IAAI,QAAQpD,KAAK,GAAGD,GAAG,EAAEqD,EAAED,GAAG,GAAGC,GAAGpD,GAAGmD,GAAG,QAAQA,IAAI,GAAGpD,IAAI,KAAK,QAAQ0D,IAAI,KAAK,EAAEN,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAElD,EAAEJ,EAAE,GAAG,CAAC,GAAG,KAAKsD,IAAI,GAAGpD,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEsD,IAAI,GAAGpD,IAAI,EAAEmD,EAAE,EAAEjD,EAAEJ,EAAE,GAAG,CAAC,EAAEqD,GAAG,IAAI,QAAQpD,KAAK,GAAGC,GAAG,EAAED,EAAEqD,EAAEA,IAAI,GAAGC,GAAGtD,GAAGoD,GAAG,QAAQpD,IAAI,GAAGC,IAAI,KAAK,QAAQ4D,IAAI,KAAK,EAAET,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAElD,EAAEJ,EAAE,GAAG,CAAC,GAAG,KAAKuD,IAAI,GAAGtD,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGuD,IAAI,GAAGtD,IAAI,EAAEoD,EAAEE,GAAG,GAAGF,GAAGC,GAAGE,IAAG,QAAQD,IAAI,GAAGtD,IAAI,KAAK,QAAQwD,IAAG,KAAK,EAAED,KAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEG,GAAEF,EAAElD,EAAEJ,EAAE,GAAG,CAAC,EAAEsD,EAAEA,EAAE,EAAElD,EAAEJ,EAAE,GAAG,CAAC,EAAEsD,GAAG,IAAI,QAAQpD,KAAK,GAAGD,GAAG,EAAEG,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIqD,IAAI,GAAGG,KAAI,EAAEF,EAAED,GAAG,GAAGC,GAAGrD,GAAGC,GAAG,QAAQmD,IAAI,GAAGG,KAAI,KAAK,QAAQI,IAAI,KAAK,EAAE1D,IAAI,EAAEoD,EAAE,EAAE,EAAEA,EAAElD,EAAEJ,EAAE,GAAG,CAAC,GAAG,KAAKsD,IAAI,GAAGrD,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEsD,IAAI,GAAGrD,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAE,KAAK,MAAMqD,IAAI,GAAGG,KAAI,IAAIvD,GAAG,EAAEoD,GAAG,QAAQC,IAAI,GAAGrD,IAAI,GAAGqD,IAAI,GAAGA,GAAGpD,EAAEmD,GAAG,QAAQK,IAAG,KAAK,EAAEL,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAElD,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGsD,IAAI,GAAGpD,IAAI,EAAEmD,EAAE,EAAEjD,EAAEJ,EAAE,GAAG,CAAC,EAAEqD,GAAG,IAAI,QAAQpD,KAAK,GAAGC,GAAG,EAAED,EAAEqD,EAAED,EAAEC,IAAI,GAAGD,GAAGpD,GAAGuD,IAAG,QAAQvD,IAAI,GAAGC,IAAI,KAAKqD,EAAE,QAAQU,IAAI,KAAK,EAAEV,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEjD,EAAEJ,EAAE,GAAG,CAAC,GAAG,OAAOqD,IAAI,GAAGpD,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIqD,IAAI,GAAGpD,IAAI,EAAEqD,EAAE,EAAElD,EAAEJ,EAAE,GAAG,CAAC,EAAEsD,GAAG,IAAI,QAAQpD,KAAK,GAAGD,GAAG,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEwD,GAAES,KAAK,CAAC,CAAC,SAASpC,GAAE7B,EAAEC,EAAEC,EAAEE,EAAE,CAAC,QAAQC,EAAE,EAAEC,EAAE,EAAEI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEI,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEtB,GAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEtC,GAAGL,EAAE,GAAG,GAAGH,EAAE,EAAEI,EAAEE,EAAE,GAAGH,EAAEJ,EAAEI,EAAE,EAAE,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAG4B,EAAEzB,EAAEH,EAAE,EAAE,CAAC,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGS,EAAER,GAAG,IAAI,MAAMA,IAAI,EAAEY,GAAG,EAAE,SAASZ,IAAI,GAAG,EAAE,IAAI,EAAE,EAAED,GAAGe,EAAE,UAAUd,KAAK,GAAG,EAAEC,EAAEG,GAAG,CAAC,EAAEQ,EAAEE,GAAG,EAAE,YAAY,IAAIa,IAAI,GAAG3B,IAAI,GAAG,WAAW,SAAS2B,IAAI,EAAE3B,IAAI,IAAI2B,IAAI,EAAE,MAAMA,IAAI,GAAG3B,EAAED,EAAE,EAAES,EAAET,EAAE,EAAEE,EAAEG,EAAE,GAAG,CAAC,EAAEJ,EAAED,GAAO,GAAG,EAAE,EAAE,EAAE,KAAd,IAAmB,CAAC,IAAIJ,EAAEM,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,GAAG,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,GAAG,CAAC,EAAEH,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAES,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEE,GAAGN,EAAEgC,GAAGC,EAAEc,IAAG,GAAG9C,EAAE,IAAI,CAAC,EAAED,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAE4B,EAAEvB,EAAEC,EAAEH,EAAE,IAAI,CAAC,EAAEE,EAAEmF,EAAG/D,EAAEnB,EAAEH,EAAE,IAAI,CAAC,EAAEE,EAAE,EAAE,EAAE,EAAEmB,EAAEnB,EAAEmF,EAAG/D,EAAEG,EAAE,EAAE,EAAEvB,EAAE,GAAGmB,EAAEnB,EAAEmF,EAAG/D,EAAEG,EAAE,EAAE,EAAEvB,EAAEL,GAAGwB,EAAE,GAAGxB,EAAE,EAAEA,GAAGI,EAAEC,EAAED,EAAE,KAAK,EAAEC,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEI,GAAG,EAAEE,GAAGD,EAAE4B,EAAE,MAAM,IAAI,CAAC,GAAG7B,EAAE,EAAEJ,EAAEM,EAAED,EAAE,GAAG,CAAC,EAAEL,EAAE,EAAEA,EAAEI,IAAI,EAAE,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEK,GAAG,IAAIY,EAAEX,EAAEH,EAAE,IAAI,CAAC,IAAIiB,EAAEd,EAAEH,EAAE,IAAI,CAAC,IAAIsB,EAAER,GAAGb,EAAE,EAAEA,KAAKsB,EAAEpB,EAAEH,EAAE,IAAI,CAAC,IAAI0B,EAAEvB,EAAEH,EAAE,IAAI,CAAC,IAAIyB,EAAEF,GAAG1B,EAAE,EAAEA,GAAGK,IAAI,EAAE,IAAI,EAAED,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEJ,GAAGS,EAAEJ,EAAEI,EAAE,KAAK,EAAEJ,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAE,GAAGK,EAAEC,EAAEH,EAAE,IAAI,CAAC,GAAGM,EAAE,EAAEL,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAE,EAAEqB,EAAEjB,EAAEC,IAAI,EAAE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEuB,EAAEvB,EAAEE,EAAEH,EAAE,GAAG,CAAC,EAAEC,EAAEoF,EAAGnF,EAAEC,EAAEH,GAAG,CAAC,EAAEC,EAAE,EAAE,EAAE,EAAEoB,EAAEpB,EAAEoF,EAAGnF,EAAEsB,EAAE,EAAE,EAAEvB,EAAE,GAAGoB,EAAEL,EAAEV,GAAG+E,EAAGnF,EAAEsB,EAAE,EAAE,EAAEvB,GAAG,EAAEA,EAAEJ,GAAGwB,EAAE,GAAG,EAAEpB,EAAEK,IAAI,EAAEU,IAAI,EAAEf,EAAE,EAAE,EAAEA,EAAES,GAAGb,EAAEmB,IAAIA,EAAEd,IAAI,EAAEC,EAAEH,EAAE,IAAI,CAAC,IAAIM,EAAEH,EAAEH,EAAE,GAAG,CAAC,IAAIM,EAAE,GAAG,EAAET,GAAGA,EAAEI,IAAIuB,IAAIvB,EAAEE,EAAEH,EAAE,IAAI,CAAC,IAAImB,EAAEhB,EAAEH,EAAE,IAAI,CAAC,IAAIC,EAAEkB,GAAG,EAAEH,EAAEnB,EAAEa,IAAI,EAAEM,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEU,EAAEP,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEkB,EAAE,EAAEK,EAAEnB,EAAE2B,EAAEzB,GAAGN,EAAEyC,IAAGX,EAAE,EAAEG,GAAGhC,EAAE,IAAI,CAAC,EAAEkC,GAAE7B,EAAEN,EAAE,GAAG,CAAC,EAAEI,IAAIwB,EAAEC,GAAGR,EAAEQ,GAAGH,EAAE,EAAEtB,GAAGJ,GAAG,GAAGoB,EAAEK,GAAG,EAAEL,GAAGH,EAAE,KAAK,EAAE,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAE,EAAEoF,EAAG,EAAEnE,EAAE,EAAE,EAAEJ,EAAEO,EAAE,EAAEgE,EAAG,EAAEnE,EAAE,EAAE,EAAE,EAAEJ,GAAGO,EAAE,GAAGE,EAAE8D,EAAG,EAAEnE,EAAE,EAAE,EAAE,GAAGrB,EAAE,EAAEA,GAAGwB,EAAEP,GAAGb,EAAE,EAAEJ,GAAG,IAAI,EAAE0B,IAAI,EAAE1B,EAAE,EAAE,EAAEA,GAAGmC,GAAE,EAAEnC,GAAGI,EAAE,EAAE2B,EAAE,KAAK,EAAE,IAAI,EAAE/B,EAAE,EAAE,EAAEA,EAAE,GAAG,EAAEI,IAAIa,EAAEX,GAAGF,EAAE0B,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE1B,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEJ,EAAE,EAAEI,GAAGJ,EAAE,IAAI,EAAEiB,IAAI,EAAEb,EAAE,EAAE,EAAEA,GAAGmB,EAAE,EAAEG,EAAEtB,GAAGa,EAAE,EAAEC,EAAE,KAAK,EAAE,IAAI,EAAEd,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEc,EAAEX,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEJ,EAAEA,IAAIsB,EAAEK,GAAGR,EAAEG,EAAEK,GAAG,EAAE3B,GAAGI,EAAE,IAAIC,EAAEI,GAAGI,EAAER,EAAEI,GAAG,KAAK,EAAE,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAE,EAAEwF,EAAG3E,EAAEM,EAAE,EAAE,EAAED,EAAEM,EAAE,EAAEgE,EAAG3E,EAAEM,EAAE,EAAE,EAAE,EAAED,GAAGM,EAAED,EAAEnB,EAAEA,EAAEoF,EAAG3E,EAAEM,EAAE,EAAE,EAAE,EAAEnB,GAAGwB,EAAEN,GAAGlB,EAAE,EAAEkB,EAAElB,EAAEI,IAAI,GAAG,EAAEmB,EAAEnB,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEuB,EAAEd,EAAEqB,EAAER,EAAEtB,GAAGsB,EAAEhB,GAAGF,EAAEW,IAAGN,EAAE,GAAGwB,GAAGhC,EAAE,IAAI,CAAC,GAAGmB,EAAE,EAAEhB,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEyB,EAAE,EAAEzB,EAAEJ,IAAI,EAAEsB,IAAI,EAAElB,EAAE,EAAE,EAAEA,EAAEK,GAAGW,EAAEpB,IAAIsB,EAAEhB,GAAGN,EAAES,EAAE,MAAM,IAAI,CAAC,GAAG,EAAET,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAEI,EAAE,EAAEJ,IAAIqB,EAAEO,GAAGF,EAAEE,IAAI5B,EAAES,IAAI,EAAEa,IAAI,EAAEtB,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGI,GAAGA,EAAEK,IAAIA,GAAG,EAAEgB,GAAGR,EAAEQ,GAAG,KAAK,EAAEhB,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAES,EAAE+E,EAAGvE,EAAES,EAAE,EAAE,EAAEJ,EAAEE,EAAEf,EAAE+E,EAAGvE,EAAES,EAAE,EAAE,EAAEjB,EAAEa,GAAGE,EAAEf,GAAGW,EAAEoE,EAAGvE,EAAES,EAAE,EAAE,EAAEjB,GAAGL,EAAE,EAAEA,GAAGoB,EAAEF,GAAGtB,EAAE,EAAEI,GAAGgB,EAAEX,IAAI,EAAEW,IAAI,EAAEhB,EAAE,EAAE,EAAEA,GAAG0B,EAAE,EAAEA,EAAE1B,GAAGkB,EAAEb,KAAK,GAAGA,EAAEA,EAAEc,EAAE,KAAK,EAAEnB,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEJ,EAAEwF,EAAG,EAAEtE,EAAE,EAAE,EAAEd,EAAEoB,EAAExB,EAAEwF,EAAG,EAAEtE,EAAE,EAAE,EAAElB,EAAEI,GAAGoB,EAAEK,EAAE2D,EAAG,EAAEtE,EAAE,EAAE,EAAElB,EAAEA,IAAImB,EAAEQ,GAAGT,EAAEC,EAAEQ,IAAIH,EAAEpB,GAAG,EAAEA,EAAEgB,IAAIG,EAAEM,IAAIxB,EAAEQ,GAAG,EAAER,EAAEQ,GAAG,KAAK,EAAEgB,IAAI,EAAE7B,EAAE,EAAE,EAAEA,GAAG,EAAEsB,EAAElB,GAAGgB,EAAEE,EAAEC,EAAE,KAAK,EAAED,IAAI,EAAElB,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEiB,EAAEd,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEmB,EAAElB,EAAED,GAAGA,EAAEqB,IAAIA,EAAEnB,GAAGN,EAAE0C,IAAGrC,EAAE,GAAG4B,GAAGhC,EAAE,IAAI,CAAC,GAAG,EAAED,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAE4B,EAAE,EAAE5B,EAAEI,IAAI,EAAEqB,IAAI,EAAEzB,EAAE,EAAE,EAAEA,EAAEK,GAAGwB,EAAEzB,IAAIqB,EAAEnB,GAAGF,EAAEC,EAAE,MAAM,IAAI,CAAC,GAAG,EAAED,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEJ,EAAE,EAAEI,GAAGiB,GAAGA,EAAEK,GAAGI,IAAI1B,EAAEC,IAAI,EAAEoB,IAAI,EAAErB,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGJ,GAAGA,EAAEK,IAAIA,EAAE,GAAG,EAAEY,GAAGR,GAAG,KAAK,EAAEJ,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEC,EAAEmF,EAAG/E,EAAEqB,EAAE,EAAE,EAAEL,EAAED,EAAEnB,EAAEmF,EAAG/E,EAAEqB,EAAE,EAAE,EAAEzB,EAAEoB,GAAGD,EAAEnB,GAAGuB,EAAE4D,EAAG/E,EAAEqB,EAAE,EAAE,EAAEzB,GAAGL,EAAE,EAAEA,GAAGwB,EAAEC,GAAGrB,EAAE,EAAEA,GAAGJ,EAAEK,IAAI,EAAEuB,IAAI,EAAE5B,EAAE,EAAE,EAAEA,GAAG2B,EAAE,EAAEC,EAAExB,GAAGuB,EAAEtB,EAAEkB,EAAE,KAAK,EAAElB,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEE,EAAEH,GAAG,CAAC,EAAEwB,EAAErB,EAAEH,EAAE,GAAG,CAAC,EAAEC,EAAEA,EAAEoF,EAAGpE,EAAEE,EAAE,EAAE,EAAEG,EAAED,EAAEpB,EAAEoF,EAAGpE,EAAEE,EAAE,EAAE,EAAElB,EAAEmB,EAAEC,EAAEC,EAAEI,EAAE2D,EAAGpE,EAAEE,EAAE,EAAE,EAAElB,EAAEA,IAAIe,EAAED,GAAGI,EAAEH,EAAED,IAAIM,EAAED,GAAG,EAAEvB,EAAEA,IAAIyB,EAAEI,IAAI,EAAEhB,GAAGO,EAAE,EAAEP,GAAG,KAAK,EAAEgB,IAAI,EAAEzB,EAAE,EAAE,EAAEA,GAAG,EAAEqB,EAAEzB,GAAGuB,EAAElB,EAAEoB,EAAE,KAAK,EAAEpB,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEoB,EAAEjB,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEK,EAAEC,GAAGF,EAAEoC,IAAGxC,EAAE,GAAGiC,GAAGhC,EAAE,IAAI,CAAC,EAAEG,EAAEiB,EAAEf,EAAEF,EAAE,GAAG,CAAC,EAAE,EAAEA,GAAGC,EAAEA,EAAE,EAAE,KAAK,EAAE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEC,GAAG,EAAEC,GAAGN,EAAEA,EAAE,MAAM,IAAI,CAAC,GAAGK,EAAE,EAAEL,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAEI,EAAE,EAAEJ,GAAG0B,GAAGA,EAAEI,GAAGF,IAAI5B,EAAEK,IAAI,EAAE,IAAI,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGI,GAAGA,EAAEC,IAAIA,EAAEY,GAAGR,EAAEQ,GAAGU,GAAG,KAAK,EAAEtB,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEK,EAAEmF,EAAG7D,EAAEC,EAAE,EAAE,EAAE,EAAEJ,EAAEnB,EAAEmF,EAAG7D,EAAEC,EAAE,EAAE,EAAEvB,EAAE,GAAGmB,EAAEnB,GAAGgB,EAAEmE,EAAG7D,EAAEC,EAAE,EAAE,EAAEvB,GAAGD,EAAE,EAAEA,GAAGoB,EAAE,GAAGxB,EAAE,EAAE6B,EAAEzB,EAAEC,IAAI,EAAEgB,IAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEJ,EAAEI,EAAEA,EAAEoF,EAAGjE,EAAEE,EAAE,EAAE,EAAE,EAAED,EAAEpB,EAAEoF,EAAGjE,EAAEE,EAAE,EAAE,EAAErB,EAAEiB,EAAEG,EAAE,EAAEO,EAAEyD,EAAGjE,EAAEE,EAAE,EAAE,EAAErB,EAAEA,IAAIc,EAAEI,GAAGG,EAAEP,EAAEI,IAAIE,EAAEH,GAAG,EAAErB,IAAI,EAAE+B,IAAI,EAAEX,GAAGG,EAAE,EAAEH,GAAG,KAAK,EAAEW,IAAI,EAAE3B,EAAE,EAAE,EAAEA,GAAGJ,EAAE,EAAE,EAAEA,GAAGqB,EAAEhB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEkB,EAAEf,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEI,EAAEe,EAAEU,EAAE,EAAEA,EAAEzB,GAAGe,EAAEd,EAAEQ,EAAE,KAAK,EAAER,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEgB,EAAEb,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEC,EAAEC,GAAGN,EAAEsC,IAAGlC,EAAE,GAAG6B,GAAGhC,EAAE,IAAI,CAAC,EAAED,EAAE0B,EAAEpB,EAAEN,EAAE,GAAG,CAAC,EAAE,EAAEA,GAAGK,EAAEA,EAAEY,EAAE,KAAK,EAAEA,IAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEK,GAAGQ,EAAEP,GAAGF,EAAEA,EAAE,MAAM,IAAI,CAAC,GAAGC,EAAE,EAAED,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEJ,EAAE,EAAEI,GAAG0B,GAAGF,EAAEE,GAAGD,IAAIzB,EAAEC,IAAI,EAAEQ,IAAI,EAAET,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGJ,GAAGA,EAAEK,IAAIA,EAAEI,GAAGA,EAAEkB,GAAGR,GAAG,KAAK,EAAEd,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEC,EAAEmF,EAAGrE,EAAEU,EAAE,EAAE,EAAEhB,EAAEW,EAAEnB,EAAEmF,EAAGrE,EAAEU,EAAE,EAAE,EAAExB,EAAEQ,GAAGW,EAAEnB,GAAGY,EAAEuE,EAAGrE,EAAEU,EAAE,EAAE,EAAExB,GAAGL,EAAE,EAAEA,GAAGwB,EAAEX,GAAGT,EAAE,EAAEJ,EAAEK,IAAI,EAAEY,IAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEI,EAAEoF,EAAGnE,EAAE,EAAE,EAAE,EAAER,EAAEW,EAAEpB,EAAEoF,EAAGnE,EAAE,EAAE,EAAE,EAAEjB,EAAEa,EAAEO,EAAEX,EAAEa,EAAE8D,EAAGnE,EAAE,EAAE,EAAE,EAAEjB,EAAEA,IAAIkB,EAAEG,GAAG,EAAEH,EAAEG,IAAID,EAAEP,GAAG,EAAEb,IAAIS,EAAEa,IAAIN,EAAEG,GAAGF,EAAED,EAAEG,GAAG,KAAK,EAAEG,IAAI,EAAEtB,EAAE,EAAE,EAAEA,GAAGJ,EAAE,EAAEa,EAAET,GAAGa,EAAEZ,EAAEQ,EAAE,KAAK,EAAEA,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEc,EAAEX,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEJ,EAAEA,EAAEkB,EAAE,EAAEa,EAAE/B,GAAGkB,EAAEb,EAAE,EAAE,KAAK,EAAE,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEe,EAAEZ,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEK,EAAEC,GAAGF,EAAEiC,IAAGrC,EAAE,GAAGiC,GAAGhC,EAAE,IAAI,CAAC,EAAEG,EAAE0B,EAAExB,EAAEF,EAAE,GAAG,CAAC,EAAE,EAAEA,GAAGC,EAAEA,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEC,GAAGI,EAAEH,GAAGN,EAAEA,EAAE,MAAM,IAAI,CAAC,GAAGK,EAAE,EAAEL,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAEI,EAAE,EAAEJ,GAAG4B,GAAGA,EAAEC,GAAGE,IAAI/B,EAAEK,IAAI,EAAEI,IAAI,EAAET,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGI,GAAGA,EAAEC,IAAIA,EAAEsB,GAAGR,EAAEQ,GAAGT,GAAG,KAAK,EAAEb,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEK,EAAEmF,EAAGtE,EAAEa,EAAE,EAAE,EAAEtB,EAAEe,EAAEnB,EAAEmF,EAAGtE,EAAEa,EAAE,EAAE,EAAE1B,EAAEI,GAAGe,EAAEnB,GAAG,EAAEmF,EAAGtE,EAAEa,EAAE,EAAE,EAAE1B,GAAGD,EAAE,EAAEA,GAAGoB,EAAEf,GAAGT,EAAE,EAAE,EAAEI,EAAEC,IAAI,EAAE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEJ,EAAEI,EAAEA,EAAEoF,EAAGvE,EAAEJ,EAAE,EAAE,EAAEJ,EAAEe,EAAEpB,EAAEoF,EAAGvE,EAAEJ,EAAE,EAAE,EAAET,EAAEsB,EAAEF,EAAEf,EAAEqB,EAAE0D,EAAGvE,EAAEJ,EAAE,EAAE,EAAET,EAAEA,IAAI,EAAEqB,GAAGZ,EAAE,EAAEY,IAAID,EAAEE,GAAG,EAAE1B,IAAIS,EAAEqB,IAAIT,EAAEE,GAAGN,EAAEI,EAAEE,GAAG,KAAK,EAAEO,IAAI,EAAE1B,EAAE,EAAE,EAAEA,GAAGJ,EAAE,EAAE0B,EAAE1B,GAAGI,EAAEK,KAAK,GAAGA,EAAEJ,EAAEI,EAAE,KAAK,EAAET,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEI,EAAE,EAAEkB,EAAE,EAAEQ,EAAE1B,GAAG+B,GAAE9B,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEgC,GAAE7B,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEC,EAAEC,GAAGN,EAAEuC,IAAGnC,EAAE,GAAG6B,GAAGhC,EAAE,IAAI,CAAC,EAAED,EAAE4B,EAAEtB,EAAEN,EAAE,GAAG,CAAC,EAAE,EAAEA,GAAGK,EAAEA,EAAEsB,EAAE,KAAK,EAAEA,IAAI,EAAE3B,EAAE,EAAE,EAAEA,EAAEK,GAAG,EAAEC,GAAGF,EAAEA,EAAE,MAAM,IAAI,CAAC,GAAGC,EAAE,EAAED,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEJ,EAAE,EAAEI,GAAGyB,GAAGA,EAAEE,GAAGD,IAAI1B,EAAEC,IAAI,EAAE,IAAI,EAAED,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGJ,GAAGA,EAAEK,IAAIA,EAAEc,GAAGA,EAAED,GAAGiB,IAAG,KAAK,EAAE9B,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEC,EAAEmF,EAAGrD,GAAEL,EAAE,EAAE,EAAE,EAAEN,EAAEnB,EAAEmF,EAAGrD,GAAEL,EAAE,EAAE,EAAEzB,EAAE,GAAGmB,EAAEnB,GAAGiB,EAAEkE,EAAGrD,GAAEL,EAAE,EAAE,EAAEzB,GAAGL,EAAE,EAAEA,GAAGwB,EAAE,GAAGpB,EAAE,EAAEJ,EAAEK,IAAI,EAAEiB,IAAI,EAAEtB,EAAE,EAAE,EAAEA,EAAEI,EAAEoF,EAAG/E,EAAEiB,EAAE,EAAE,EAAE,EAAEF,EAAEpB,EAAEoF,EAAG/E,EAAEiB,EAAE,EAAE,EAAEtB,EAAEkB,EAAEE,EAAE,EAAEJ,EAAEoE,EAAG/E,EAAEiB,EAAE,EAAE,EAAEtB,EAAEA,IAAI,EAAES,GAAGa,EAAE,EAAEb,IAAIW,EAAEF,GAAG,EAAElB,IAAI,EAAEgB,IAAIH,EAAEI,GAAGZ,EAAEQ,EAAEI,GAAG,KAAK,EAAED,IAAI,EAAEhB,EAAE,EAAE,EAAEA,GAAGJ,EAAE,EAAEsB,EAAElB,GAAGkB,EAAE,KAAK,GAAG,EAAEjB,EAAE,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEE,EAAEH,GAAG,CAAC,EAAE,EAAEG,EAAEH,EAAE,GAAG,CAAC,EAAEC,EAAEJ,EAAEA,EAAEyB,EAAE,EAAEG,EAAE5B,GAAGoB,EAAEf,EAAEkB,EAAE,KAAK,EAAElB,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEiB,EAAEd,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEK,EAAEC,GAAGF,EAAEuC,IAAG3C,EAAE,GAAGiC,GAAGhC,EAAE,IAAI,CAAC,EAAEG,EAAEyB,EAAEvB,EAAEF,EAAE,GAAG,CAAC,EAAE,EAAEA,GAAGC,EAAEA,EAAEc,EAAE,KAAK,EAAEA,IAAI,EAAEf,EAAE,EAAE,EAAEA,EAAEC,GAAGc,EAAEb,GAAGN,EAAEA,EAAE,MAAM,IAAI,CAAC,GAAGK,EAAE,EAAEL,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAEI,EAAE,EAAEJ,GAAG+B,GAAGD,EAAEC,GAAGH,IAAI5B,EAAEK,IAAI,EAAEc,IAAI,EAAEnB,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGI,GAAGA,EAAEC,IAAIA,EAAEa,GAAGA,EAAEiB,IAAGf,GAAG,KAAK,EAAEf,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEK,EAAEmF,EAAGpE,EAAEQ,EAAE,EAAE,EAAET,EAAEK,EAAEnB,EAAEmF,EAAGpE,EAAEQ,EAAE,EAAE,EAAEvB,EAAEc,GAAGK,EAAEnB,GAAGsB,EAAE6D,EAAGpE,EAAEQ,EAAE,EAAE,EAAEvB,GAAGD,EAAE,EAAEA,GAAGoB,EAAEL,GAAGnB,EAAE,EAAEyB,EAAErB,EAAEC,IAAI,EAAEsB,IAAI,EAAEvB,EAAE,EAAE,EAAEA,EAAEJ,EAAEI,EAAEA,EAAEoF,EAAG,EAAElE,EAAE,EAAE,EAAEH,EAAEK,EAAEpB,EAAEoF,EAAG,EAAElE,EAAE,EAAE,EAAElB,EAAEuB,EAAEH,EAAEL,EAAEI,EAAEiE,EAAG,EAAElE,EAAE,EAAE,EAAElB,EAAEA,IAAIS,EAAEa,GAAGJ,EAAET,EAAEa,IAAIF,EAAEG,GAAG,EAAE3B,IAAImB,EAAEI,IAAId,EAAEQ,GAAG,EAAER,EAAEQ,GAAG,KAAK,EAAEM,IAAI,EAAEnB,EAAE,EAAE,EAAEA,GAAGJ,EAAE,EAAEmB,EAAEnB,GAAG2B,EAAEtB,EAAEc,EAAE,KAAK,EAAEA,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEwB,EAAErB,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEI,EAAE,EAAEqB,EAAE,EAAEI,EAAEzB,GAAG,EAAEC,EAAEgB,EAAE,KAAK,EAAEhB,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEC,EAAEC,GAAGN,EAAEoC,IAAGhC,EAAE,GAAG6B,GAAGhC,EAAE,IAAI,CAAC,EAAED,EAAE+B,EAAEzB,EAAEN,EAAE,GAAG,CAAC,EAAE,EAAEA,GAAGK,EAAEA,EAAEa,EAAE,KAAK,EAAEA,IAAI,EAAElB,EAAE,EAAE,EAAEA,EAAEK,GAAGa,EAAEZ,GAAGF,EAAEA,EAAE,MAAM,IAAI,CAAC,GAAGC,EAAE,EAAED,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEJ,EAAE,EAAEI,GAAG0B,GAAGF,EAAEE,GAAGD,IAAIzB,EAAEC,IAAI,EAAEa,IAAI,EAAEd,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGJ,GAAGA,EAAEK,IAAIA,EAAE8B,IAAGf,EAAEe,IAAG,GAAG,KAAK,EAAE9B,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEC,EAAEmF,EAAG,EAAE3D,EAAE,EAAE,EAAEX,EAAEM,EAAEnB,EAAEmF,EAAG,EAAE3D,EAAE,EAAE,EAAExB,EAAEa,GAAGM,EAAEnB,GAAGoB,EAAE+D,EAAG,EAAE3D,EAAE,EAAE,EAAExB,GAAGL,EAAE,EAAEA,GAAGwB,EAAEN,GAAGd,EAAE,EAAEJ,EAAEK,IAAI,EAAEoB,IAAI,EAAEzB,EAAE,EAAE,EAAEA,EAAEI,EAAEoF,EAAG7D,EAAER,EAAE,EAAE,EAAED,EAAEM,EAAEpB,EAAEoF,EAAG7D,EAAER,EAAE,EAAE,EAAEf,EAAEqB,EAAED,EAAEN,EAAEK,EAAEiE,EAAG7D,EAAER,EAAE,EAAE,EAAEf,EAAEA,IAAIkB,EAAEI,GAAGP,EAAEG,EAAEI,IAAIF,EAAEC,GAAG,EAAErB,IAAIc,EAAEK,IAAId,EAAE,GAAGkB,EAAElB,EAAE,GAAG,KAAK,EAAEc,IAAI,EAAEnB,EAAE,EAAE,EAAEA,GAAGJ,EAAE,EAAEkB,EAAEd,GAAGqB,EAAEpB,EAAEa,EAAE,KAAK,EAAEA,IAAI,EAAEd,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEJ,EAAEA,EAAEa,EAAE,EAAEkB,EAAE/B,GAAGa,EAAER,EAAEY,EAAE,KAAK,EAAEZ,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEU,EAAEP,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,GAAGA,EAAEmC,KAAIlB,EAAEX,GAAGF,EAAE+B,IAAG9B,EAAE,GAAG4B,GAAGhC,EAAE,IAAI,CAAC,GAAG,EAAEG,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAE0B,EAAE,EAAE1B,EAAEJ,IAAI,EAAEiB,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEC,GAAGgB,EAAErB,IAAIiB,EAAEX,GAAGN,EAAEK,EAAE,MAAM,IAAI,CAAC,GAAG,EAAEL,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAEI,EAAE,EAAEJ,GAAG4B,GAAGA,EAAEC,GAAGE,IAAI/B,EAAEK,IAAI,EAAEY,IAAI,EAAEjB,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGI,GAAGA,EAAEC,IAAIA,EAAEe,GAAG,EAAEA,GAAGP,GAAG,KAAK,EAAER,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEK,EAAEmF,EAAG3E,EAAEkB,EAAE,EAAE,EAAEd,EAAEO,EAAEnB,EAAEmF,EAAG3E,EAAEkB,EAAE,EAAE,EAAE1B,EAAEY,GAAGO,EAAEnB,GAAGkB,EAAEiE,EAAG3E,EAAEkB,EAAE,EAAE,EAAE1B,GAAGD,EAAE,EAAEA,GAAGoB,EAAEP,GAAGjB,EAAE,EAAEqB,EAAEjB,EAAEC,IAAI,EAAEkB,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEJ,EAAEI,EAAEA,EAAEoF,EAAG/D,EAAEP,EAAE,EAAE,EAAED,EAAEO,EAAEpB,EAAEoF,EAAG/D,EAAEP,EAAE,EAAE,EAAEd,EAAEmB,EAAEC,EAAEP,EAAEa,EAAE0D,EAAG/D,EAAEP,EAAE,EAAE,EAAEd,EAAEA,IAAIe,EAAEG,GAAGJ,EAAEC,EAAEG,IAAIE,EAAED,GAAG,EAAEvB,IAAIiB,EAAEa,IAAI,EAAEH,GAAGF,EAAE,EAAEE,GAAG,KAAK,EAAEG,IAAI,EAAE1B,EAAE,EAAE,EAAEA,GAAGJ,EAAE,EAAEiB,EAAEjB,GAAGuB,EAAElB,EAAEY,EAAE,KAAK,EAAEA,IAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEoB,EAAEjB,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEI,EAAEiB,EAAEK,EAAE,EAAEA,EAAEtB,GAAGiB,EAAEhB,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,GAAG,CAAC,EAAEkB,EAAEf,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAE,OAAOJ,EAAE,GAAGiC,GAAG,EAAExB,EAAEH,GAAGN,EAAEkC,EAAElC,EAAEC,EAAE,IAAI,CAAC,EAAEI,EAAEC,EAAEF,GAAG,CAAC,EAAEK,EAAE,EAAET,EAAEM,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEN,EAAE,GAAG,CAAC,EAAE,EAAEI,EAAEwB,GAAGvB,IAAI,EAAEI,IAAI,EAAET,EAAE,EAAE,EAAEA,GAAG,EAAEI,GAAGyB,GAAGA,EAAEE,GAAGL,IAAItB,GAAGJ,EAAEK,EAAEe,EAAE,KAAK,EAAEA,IAAI,EAAEhB,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGJ,GAAGK,EAAE,GAAG,EAAEQ,GAAGQ,GAAGrB,EAAE,KAAK,EAAEK,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEC,EAAEmF,EAAGnE,EAAEK,EAAE,EAAE,EAAEjB,EAAEe,EAAEnB,EAAEmF,EAAGnE,EAAEK,EAAE,EAAE,EAAErB,EAAEI,GAAGe,EAAEnB,GAAGe,EAAEoE,EAAGnE,EAAEK,EAAE,EAAE,EAAErB,GAAGL,EAAE,EAAEA,GAAGwB,EAAEf,GAAGL,EAAE,EAAEJ,EAAEK,IAAI,EAAEe,IAAI,EAAEpB,EAAE,EAAE,EAAEA,EAAEI,EAAEoF,EAAGjE,EAAEN,EAAE,EAAE,EAAER,EAAEe,EAAEpB,EAAEoF,EAAGjE,EAAEN,EAAE,EAAE,EAAEb,EAAEgB,EAAEI,EAAEf,EAAEqB,EAAE0D,EAAGjE,EAAEN,EAAE,EAAE,EAAEb,EAAEA,IAAIe,EAAED,GAAGD,EAAEE,EAAED,IAAIM,EAAEJ,GAAG,EAAEhB,IAAIK,EAAEqB,IAAIL,EAAEE,GAAGJ,EAAEE,EAAEE,GAAG,KAAK,EAAEG,IAAI,EAAE1B,EAAE,EAAE,EAAEA,GAAGJ,EAAE,EAAEoB,EAAEhB,GAAGgB,EAAEX,KAAK,GAAGA,EAAEJ,EAAEI,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEJ,EAAEA,EAAEsB,EAAE,EAAEA,EAAEtB,GAAGI,EAAE,KAAK,GAAG,EAAEC,EAAE,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEM,EAAEH,GAAG,CAAC,EAAE,EAAEG,EAAEH,EAAE,GAAG,CAAC,EAAEH,EAAEI,EAAE,OAAOJ,EAAE,GAAGiC,GAAG,EAAEH,EAAExB,GAAGN,EAAE4C,GAAE5C,EAAEC,EAAE,IAAI,CAAC,EAAEI,EAAEC,EAAEF,GAAG,CAAC,EAAE0B,EAAE,EAAE1B,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEN,EAAE,GAAG,CAAC,EAAE,EAAEA,EAAE6B,GAAGxB,IAAI,EAAEyB,IAAI,EAAE1B,EAAE,EAAE,EAAEA,GAAG,EAAEJ,GAAGI,EAAEC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEK,GAAG,EAAEQ,GAAGA,EAAEQ,GAAG,GAAGjB,EAAE,EAAEA,GAAG2B,GAAGL,EAAEK,GAAGT,GAAGtB,EAAE,EAAEI,EAAEC,IAAI,EAAE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEJ,EAAEwF,EAAG,EAAElE,EAAE,EAAE,EAAE,EAAEE,EAAExB,EAAEwF,EAAG,EAAElE,EAAE,EAAE,EAAEtB,EAAE,GAAGwB,EAAEK,EAAExB,EAAEA,EAAEmF,EAAG,EAAElE,EAAE,EAAE,EAAEtB,EAAEI,GAAGoB,EAAE,GAAGpB,EAAE,EAAEwB,EAAExB,GAAGJ,EAAE6B,EAAExB,EAAE,KAAK,EAAEA,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEC,EAAEL,EAAEA,EAAEwF,EAAG/E,EAAEW,EAAE,EAAE,EAAE,EAAEI,EAAExB,EAAEwF,EAAG/E,EAAEW,EAAE,EAAE,EAAEpB,EAAE8B,EAAEN,EAAE,EAAEK,EAAE2D,EAAG/E,EAAEW,EAAE,EAAE,EAAEpB,EAAEA,IAAIiB,EAAEC,GAAGE,EAAEH,EAAEC,IAAIM,EAAEM,GAAG,EAAE1B,IAAI,EAAEyB,IAAIJ,EAAEF,GAAGd,EAAEgB,EAAEF,GAAG,KAAK,EAAEM,IAAI,EAAE7B,EAAE,EAAE,EAAEA,GAAGI,EAAE,EAAE,EAAEA,GAAG0B,EAAEzB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE2B,EAAExB,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAEe,EAAES,EAAE,EAAET,EAAEf,GAAGuB,EAAEtB,EAAEsB,EAAE,KAAK,EAAEtB,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEwB,EAAErB,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAE,OAAOJ,EAAE,IAAIiC,GAAG,EAAEL,EAAEtB,GAAGN,EAAE8C,GAAE9C,EAAEC,EAAE,IAAI,CAAC,EAAEI,EAAEC,EAAEF,GAAG,CAAC,EAAEwB,EAAE,EAAE5B,EAAEM,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEN,EAAE,GAAG,CAAC,EAAE,EAAEI,EAAE2B,GAAG1B,IAAI,EAAEuB,IAAI,EAAE5B,EAAE,EAAE,EAAEA,GAAG,EAAEI,GAAGJ,EAAEK,EAAEQ,EAAE,KAAK,EAAEA,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAEC,GAAGQ,EAAEQ,GAAG,EAAEA,GAAGM,GAAG3B,EAAE,EAAEA,GAAG0B,GAAGJ,EAAEI,GAAGP,GAAGf,EAAE,EAAEJ,EAAEK,IAAI,EAAEQ,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEI,EAAEoF,EAAG7D,EAAER,EAAE,EAAE,EAAEN,EAAEW,EAAEpB,EAAEoF,EAAG7D,EAAER,EAAE,EAAE,EAAEf,EAAES,GAAGW,EAAEI,EAAE4D,EAAG7D,EAAER,EAAE,EAAE,EAAEf,EAAEA,GAAGoB,EAAEX,GAAGb,EAAE,EAAE6B,EAAEzB,GAAGC,EAAEuB,EAAEvB,EAAE,KAAK,EAAEuB,IAAI,EAAExB,EAAE,EAAE,EAAEA,EAAEJ,EAAEI,EAAEA,EAAEoF,EAAG1D,EAAE,EAAE,EAAE,EAAEjB,EAAEW,EAAEpB,EAAEoF,EAAG1D,EAAE,EAAE,EAAE,EAAE1B,EAAEwB,EAAEJ,EAAEX,EAAEkB,EAAEyD,EAAG1D,EAAE,EAAE,EAAE,EAAE1B,EAAEA,IAAIa,EAAEG,GAAG,EAAEH,EAAEG,IAAII,EAAEI,GAAG,EAAE5B,IAAIa,EAAEkB,IAAItB,EAAEc,GAAGO,EAAErB,EAAEc,GAAG,KAAK,EAAEQ,IAAI,EAAE3B,EAAE,EAAE,EAAEA,GAAGJ,EAAE,EAAEa,EAAEb,GAAG4B,EAAEvB,EAAEQ,EAAE,KAAK,EAAEA,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEyB,EAAEtB,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEkB,EAAEW,EAAE,EAAEX,EAAElB,GAAGyB,EAAEpB,EAAEoB,EAAE,KAAK,EAAEpB,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEI,EAAE,OAAOJ,EAAE,IAAIiC,GAAG,EAAEJ,EAAEvB,GAAGD,EAAE0B,EAAE/B,EAAEC,EAAE,IAAI,CAAC,EAAED,EAAEM,EAAEF,GAAG,CAAC,EAAEyB,EAAE,EAAEzB,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAED,EAAE,GAAG,CAAC,EAAE,EAAED,EAAEsB,GAAG1B,IAAI,EAAE6B,IAAI,EAAEzB,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGkB,GAAGH,EAAEG,GAAGJ,IAAId,GAAGJ,EAAEA,EAAEqB,EAAE,KAAK,EAAEA,IAAI,EAAEjB,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGJ,GAAGK,EAAE,GAAG,EAAEsB,GAAGF,GAAGzB,EAAE,KAAK,EAAEK,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEC,EAAEmF,EAAG/D,EAAEP,EAAE,EAAE,EAAEG,EAAEG,EAAEnB,EAAEmF,EAAG/D,EAAEP,EAAE,EAAE,EAAEb,EAAEgB,GAAGG,EAAEnB,GAAGqB,EAAE8D,EAAG/D,EAAEP,EAAE,EAAE,EAAEb,GAAGL,EAAE,EAAEA,GAAGwB,EAAEH,GAAGjB,EAAE,EAAEyB,EAAE7B,EAAEK,IAAI,EAAEqB,IAAI,EAAE1B,EAAE,EAAE,EAAEA,EAAEI,EAAEJ,EAAEA,EAAEwF,EAAG5D,EAAEf,EAAE,EAAE,EAAEQ,EAAEG,EAAExB,EAAEwF,EAAG5D,EAAEf,EAAE,EAAE,EAAEb,EAAE0B,EAAEF,EAAEH,EAAEwB,GAAE2C,EAAG5D,EAAEf,EAAE,EAAE,EAAEb,EAAEA,IAAI,EAAEoB,GAAGP,EAAE,EAAEO,IAAII,EAAEE,GAAG,EAAEtB,IAAIiB,EAAEwB,KAAIpC,EAAEqB,GAAGF,EAAEnB,EAAEqB,GAAG,KAAK,EAAEe,KAAI,EAAE7C,EAAE,EAAE,EAAEA,GAAGI,EAAE,EAAEiB,EAAEjB,GAAGsB,EAAErB,EAAEgB,EAAE,KAAK,EAAEA,IAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,GAAG,CAAC,EAAEuB,EAAEpB,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAEa,EAAEY,EAAE,EAAExB,EAAED,GAAGa,EAAEZ,EAAEkB,EAAE,KAAK,EAAElB,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEc,EAAEX,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAE,OAAOJ,EAAE,IAAIiC,GAAG,EAAEA,EAAE3B,GAAGN,EAAEuB,EAAEvB,EAAEC,EAAE,IAAI,CAAC,EAAE4B,EAAEvB,EAAEF,GAAG,CAAC,EAAE6B,EAAE,EAAE7B,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEN,EAAE,GAAG,CAAC,EAAE,EAAEA,EAAEsB,GAAGO,IAAI,EAAEI,IAAI,EAAE7B,EAAE,EAAE,EAAEA,GAAG,EAAEJ,GAAGmB,GAAGA,EAAED,GAAGb,IAAIL,GAAGI,EAAE,EAAEyB,EAAE,KAAK,EAAE,IAAI,EAAE7B,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGI,GAAG,EAAEuB,GAAGF,EAAEE,GAAGV,GAAGb,EAAE,KAAK,EAAE,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAE,EAAEwF,EAAGvE,EAAEZ,EAAE,EAAE,EAAEc,EAAEK,EAAE,EAAEgE,EAAGvE,EAAEZ,EAAE,EAAE,EAAE,EAAEc,GAAGK,EAAEnB,GAAG,EAAEmF,EAAGvE,EAAEZ,EAAE,EAAE,EAAE,GAAGD,EAAE,EAAEA,GAAGoB,EAAEL,GAAGnB,EAAE,EAAEI,EAAEC,IAAI,EAAE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAE,EAAEC,EAAEc,EAAEf,EAAEJ,EAAEI,EAAEA,EAAEoF,EAAG9D,EAAEL,EAAE,EAAE,EAAEJ,EAAEO,EAAEpB,EAAEoF,EAAG9D,EAAEL,EAAE,EAAE,EAAEjB,EAAEc,EAAEM,EAAEP,EAAEK,EAAEkE,EAAG9D,EAAEL,EAAE,EAAE,EAAEjB,EAAEA,IAAI,EAAES,GAAGQ,EAAE,EAAER,IAAIW,EAAEN,GAAG,EAAElB,IAAIiB,EAAEK,IAAIM,EAAEE,GAAGJ,EAAEE,EAAEE,GAAG,KAAK,EAAER,IAAI,EAAElB,EAAE,EAAE,EAAEA,GAAGJ,EAAE,EAAEA,GAAGK,EAAEA,EAAEY,EAAE,KAAK,EAAEA,IAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEM,EAAEH,GAAG,CAAC,EAAEE,EAAEC,EAAEH,EAAE,GAAG,CAAC,EAAEH,EAAEI,EAAEe,EAAEC,EAAE,EAAEhB,GAAGc,EAAET,KAAK,GAAGA,EAAEA,EAAE,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEC,GAAO,EAAE2C,KAAP,IAAWlC,IAAIkC,GAAEA,GAAE,GAAG,IAAI,GAAG9C,EAAE,EAAE,EAAEK,EAAE0B,GAAG,CAAC,EAAE,EAAE1B,EAAE0B,EAAE,GAAG,CAAC,EAAEa,GAAEvC,EAAE8B,IAAG,CAAC,EAAEjB,EAAEnB,EAAEM,EAAE8B,GAAE,GAAG,CAAC,EAAEhC,EAAEJ,EAAEK,EAAEL,EAAEM,EAAEyB,EAAE,GAAG,CAAC,EAAE/B,EAAEwF,EAAG1D,EAAExB,EAAEyB,GAAG,CAAC,EAAE/B,EAAE,EAAE,EAAES,EAAEe,EAAEN,IAAI,GAAGb,IAAI,GAAGyB,IAAI,IAAI9B,EAAEwF,EAAG1D,EAAEzB,EAAE,CAAC,EAAEL,GAAGA,GAAGK,IAAI,GAAGY,EAAEO,EAAEf,IAAIL,EAAE,EAAEA,IAAIK,EAAES,EAAE2B,GAAE,KAAK,EAAE3B,IAAI,EAAElB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEI,GAAGJ,EAAES,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAE,EAAEK,EAAEH,EAAEmC,GAAE,GAAG,CAAC,EAAEhC,EAAE+E,EAAG,EAAElF,EAAEmC,IAAG,CAAC,EAAEhC,EAAE,EAAE,EAAEQ,EAAEO,EAAEf,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG+E,EAAG,EAAE,EAAE,EAAE,EAAE/E,EAAEL,GAAGoB,EAAEP,EAAE,IAAI,GAAGb,EAAE,EAAEK,EAAEL,EAAEK,IAAI,GAAGmB,EAAEnB,EAAET,EAAE,KAAK,EAAEI,EAAE,EAAE,EAAEA,EAAEE,EAAEO,GAAG,CAAC,EAAEe,EAAEtB,EAAEO,EAAE,GAAG,CAAC,EAAET,EAAE,GAAG2B,EAAEzB,EAAE6B,IAAG,CAAC,GAAG,EAAE,EAAEnC,GAAGa,EAAEP,EAAE6B,GAAE,GAAG,CAAC,GAAG,EAAE,EAAE/B,EAAE,IAAI,EAAE2B,IAAI,EAAE/B,EAAE,EAAE,EAAEA,EAAE,EAAEA,EAAEM,EAAEiB,EAAE,GAAG,CAAC,EAAEvB,EAAEwF,EAAG3D,EAAEvB,EAAEiB,GAAG,CAAC,EAAEvB,EAAE,EAAE,EAAEiB,EAAEO,EAAEN,EAAE,EAAE,IAAI,GAAG,IAAI,GAAGW,IAAI,GAAG2D,EAAG3D,EAAE,EAAE,CAAC,EAAE7B,EAAEI,GAAGoB,EAAEP,EAAE,IAAI,GAAGb,EAAE,EAAE,EAAE,IAAI,GAAGc,EAAEA,EAAE,EAAE,KAAK,EAAEd,EAAE,EAAE,EAAEA,EAAEA,EAAEoF,EAAGvE,EAAEX,EAAES,IAAG,CAAC,EAAEf,EAAEM,EAAES,GAAE,GAAG,CAAC,EAAE,EAAE,EAAEO,EAAEE,EAAEH,EAAEH,EAAEA,IAAI,IAAIlB,IAAI,GAAGiB,IAAI,GAAGuE,EAAGvE,EAAEjB,EAAE,EAAE,EAAEI,EAAEA,GAAGoB,EAAEF,EAAEtB,IAAI,GAAG,EAAE,EAAE,EAAEI,EAAEc,IAAI,GAAGQ,EAAEL,EAAEH,EAAE,KAAK,EAAEd,EAAE,EAAE,EAAEA,EAAEE,EAAE0B,EAAE,KAAK,CAAC,EAAEN,EAAEpB,EAAE0B,EAAE,KAAK,CAAC,EAAE5B,EAAEA,GAAG+B,GAAE7B,EAAE4B,GAAG,CAAC,GAAGjB,EAAE,EAAEjB,GAAGiB,EAAEX,EAAE4B,EAAE,GAAG,CAAC,GAAGlC,EAAE,EAAEkB,EAAEsE,EAAG5D,EAAEnB,EAAE,EAAE,EAAEa,EAAEE,EAAEN,GAAGE,IAAI,GAAGX,IAAI,GAAGmB,IAAI,GAAG4D,EAAG5D,EAAEnB,EAAE,CAAC,EAAES,GAAGd,EAAE,EAAEA,GAAGoB,EAAEF,EAAEb,IAAI,IAAIL,IAAI,EAAE+B,KAAI,EAAEnC,EAAE,EAAE,EAAEA,GAAG,EAAEI,EAAEc,IAAI,EAAEE,IAAI,EAAEhB,EAAE,EAAE,EAAEA,EAAEkB,EAAEtB,EAAEM,EAAEoC,GAAE,GAAG,CAAC,EAAE1C,EAAEwF,EAAGpE,EAAEd,EAAEoC,IAAG,CAAC,EAAE1C,EAAE,EAAE,EAAE2B,EAAEH,EAAEH,EAAEH,EAAEA,IAAI,IAAII,IAAI,GAAGF,IAAI,GAAGoE,EAAGpE,EAAEE,EAAE,EAAE,EAAEtB,EAAEI,GAAGoB,EAAEG,EAAEL,IAAI,GAAGlB,EAAE,EAAEc,EAAEd,EAAEc,IAAI,GAAGe,EAAEZ,EAAEH,EAAE,KAAK,EAAEd,EAAE,EAAE,EAAEA,EAAEE,EAAE0B,EAAE,KAAK,CAAC,EAAEC,EAAE3B,EAAE0B,EAAE,KAAK,CAAC,EAAE5B,EAAEgB,GAAGqB,GAAEnC,EAAEsC,IAAG,CAAC,GAAGxB,EAAE,EAAEpB,GAAGA,EAAEsB,IAAIA,EAAEhB,EAAEsC,GAAE,GAAG,CAAC,GAAG,EAAExC,EAAEgB,IAAI,EAAEqB,KAAI,EAAEzC,EAAE,EAAE,EAAEA,EAAEA,EAAEwF,EAAG9D,EAAE,EAAE,EAAE,EAAEC,EAAEH,EAAEC,IAAI,GAAG,IAAI,GAAGC,IAAI,GAAG8D,EAAG9D,EAAE,EAAE,CAAC,EAAE1B,EAAEI,GAAGoB,EAAEG,EAAE,IAAI,GAAGvB,EAAE,EAAEA,GAAGgB,EAAEK,EAAEL,EAAE,KAAK,EAAEK,IAAI,EAAErB,EAAE,EAAE,EAAEA,EAAEuB,EAAE3B,EAAEM,EAAEkC,GAAE,GAAG,CAAC,EAAExC,EAAEwF,EAAG/D,EAAEnB,EAAEkC,IAAG,CAAC,EAAExC,EAAE,EAAE,EAAEuB,EAAEC,EAAEH,EAAED,EAAEA,IAAI,IAAIO,IAAI,GAAGF,IAAI,GAAG+D,EAAG/D,EAAEE,EAAE,EAAE,EAAE3B,EAAEI,GAAGoB,EAAED,EAAEI,IAAI,GAAGvB,EAAE,EAAEgB,EAAEhB,EAAEgB,IAAI,GAAGL,GAAEM,EAAED,EAAE,KAAK,EAAEhB,EAAE,EAAE,EAAEA,EAAEE,EAAE0B,EAAE,KAAK,CAAC,EAAEjB,GAAET,EAAE0B,EAAE,KAAK,CAAC,EAAE5B,EAAEJ,GAAG0C,GAAEpC,EAAEwC,IAAG,CAAC,GAAGrB,EAAE,EAAErB,GAAGA,EAAEuB,IAAIA,EAAErB,EAAEwC,GAAE,GAAG,CAAC,GAAG,EAAErB,EAAE+D,EAAGvD,EAAEf,EAAE,EAAE,EAAEK,EAAEC,EAAEC,IAAI,GAAGP,IAAI,GAAGe,IAAI,GAAGuD,EAAGvD,EAAEf,EAAE,CAAC,EAAEO,EAAErB,GAAGoB,EAAED,EAAEL,IAAI,IAAIlB,IAAI,EAAE0C,KAAI,EAAEtC,EAAE,EAAE,EAAEA,GAAG,EAAEqB,GAAGJ,EAAEI,EAAEzB,EAAE,KAAK,EAAEyB,IAAI,EAAErB,EAAE,EAAE,EAAEA,EAAEA,EAAEoF,EAAGjE,EAAEjB,EAAEgC,IAAG,CAAC,EAAEtC,EAAEM,EAAEgC,GAAE,GAAG,CAAC,EAAE,EAAE,EAAEE,GAAEhB,EAAEU,EAAEb,EAAEA,IAAI,IAAIrB,IAAI,GAAGuB,IAAI,IAAInB,EAAEoF,EAAGjE,EAAEvB,EAAE,EAAE,EAAEI,GAAGA,GAAGJ,IAAI,GAAGsC,GAAEd,EAAEgB,KAAIf,EAAE,EAAEA,EAAErB,EAAEiB,IAAI,GAAGmB,GAAEN,EAAEb,EAAE,KAAK,EAAEjB,EAAE,EAAE,EAAEA,EAAEE,EAAE0B,EAAE,KAAK,CAAC,EAAEQ,GAAElC,EAAE0B,EAAE,KAAK,CAAC,EAAE5B,EAAEJ,EAAEA,EAAEK,EAAE,EAAEL,GAAGI,EAAEmB,EAAEO,EAAE,KAAK,EAAEP,IAAI,EAAEvB,EAAE,EAAE,EAAEA,EAAEuB,EAAEiE,EAAGzE,GAAEK,EAAE,EAAE,EAAEC,EAAEG,EAAED,GAAGe,KAAI,GAAGlB,IAAI,GAAGL,KAAI,GAAGyE,EAAGzE,GAAEK,EAAE,CAAC,EAAEG,GAAGnB,EAAE,EAAEA,GAAGoB,EAAEH,EAAED,IAAI,GAAGpB,EAAE,EAAEI,EAAEmB,IAAI,EAAEe,KAAI,EAAElC,EAAE,EAAE,EAAEA,EAAEiB,EAAEf,EAAE+B,IAAG,CAAC,EAAEA,GAAErC,EAAEM,EAAE+B,GAAE,GAAG,CAAC,EAAErC,EAAEwF,EAAGnE,EAAErB,EAAE,EAAE,EAAEsC,GAAEd,EAAExB,EAAEwF,EAAGnE,EAAEgB,GAAE,EAAE,EAAErC,EAAEkC,EAAEX,EAAEnB,GAAGiC,KAAI,GAAGD,GAAEZ,EAAEc,KAAIlC,EAAE,EAAEmB,EAAEnB,GAAGmB,IAAI,IAAIc,KAAI,GAAGhB,IAAI,GAAGrB,KAAK,GAAGsC,GAAEJ,EAAEX,EAAE,KAAK,EAAEnB,EAAE,EAAE,EAAEA,EAAEE,EAAE0B,EAAE,KAAK,CAAC,EAAEM,GAAEhC,EAAE0B,EAAE,KAAK,CAAC,EAAE5B,EAAEJ,EAAE,EAAEqC,GAAE,EAAErC,GAAGI,EAAEiB,EAAEQ,EAAE,KAAK,EAAER,IAAI,EAAErB,EAAE,EAAE,EAAEA,EAAEkC,EAAEb,EAAEf,EAAEiC,GAAE,GAAG,CAAC,EAAElB,EAAEmE,EAAGpD,GAAE9B,EAAEiC,IAAG,CAAC,EAAElB,EAAE,EAAE,EAAEgB,GAAEb,EAAEH,GAAGkB,KAAI,IAAIL,IAAI,GAAGE,KAAI,GAAGoD,EAAGpD,GAAEF,EAAE,EAAE,EAAEb,GAAGjB,EAAE,EAAEA,GAAGoB,EAAEa,GAAEH,IAAI,GAAGlC,EAAE,EAAEA,EAAEqB,IAAI,EAAEkB,KAAI,EAAEnC,EAAE,EAAE,EAAEA,EAAEA,EAAEoF,EAAGhD,GAAEf,EAAE,EAAE,EAAEY,GAAEb,EAAEpB,EAAEoF,EAAGhD,GAAEf,EAAE,CAAC,EAAErB,EAAEmC,GAAEf,EAAEa,GAAEA,GAAEhB,EAAErB,GAAGyB,IAAI,EAAEc,IAAGvC,EAAE,EAAEqB,EAAErB,GAAGqB,IAAI,GAAGI,IAAI,GAAGe,KAAI,GAAGpC,KAAK,GAAGiC,GAAEA,GAAEhB,EAAE,KAAK,EAAErB,EAAE,EAAE,EAAEA,EAAEM,EAAE0B,EAAE,KAAK,CAAC,EAAEK,GAAE/B,EAAE0B,EAAE,KAAK,CAAC,EAAEhC,EAAE4C,GAAEtC,EAAEqC,IAAG,CAAC,EAAEA,GAAE3C,EAAEM,EAAEqC,GAAE,GAAG,CAAC,EAAEJ,GAAEvC,EAAEA,EAAEwF,EAAG3C,GAAE1B,EAAE,EAAE,EAAEf,EAAEoB,EAAEsB,KAAI,IAAI3B,IAAI,GAAG0B,KAAI,GAAG2C,EAAG3C,GAAE1B,EAAE,EAAE,EAAEnB,EAAEA,GAAGwB,EAAEpB,EAAEe,IAAI,GAAG,EAAE,EAAEf,IAAIsB,EAAEoB,GAAEpB,EAAE,KAAK,EAAEoB,KAAI,EAAE9C,EAAE,EAAE,EAAEA,GAAGuC,GAAE,EAAEnC,GAAGJ,EAAE0B,EAAEkB,GAAE,KAAK,EAAElB,IAAI,EAAEtB,EAAE,EAAE,EAAEA,EAAE,EAAEoF,EAAGnD,GAAEhB,EAAE,EAAE,EAAEK,EAAEF,EAAEe,IAAG,IAAI,GAAGlB,IAAI,GAAGgB,KAAI,GAAGmD,EAAGnD,GAAEhB,EAAE,CAAC,EAAE,GAAGrB,EAAE,EAAEA,GAAGwB,EAAEE,EAAEL,IAAI,GAAGjB,EAAE,EAAE,EAAEJ,EAAE,IAAI,EAAEuC,KAAI,EAAEvC,EAAE,EAAE,EAAEA,EAAEM,EAAE0B,EAAE,KAAK,CAAC,EAAEO,GAAEjC,EAAE0B,EAAE,KAAK,CAAC,EAAEhC,EAAEI,EAAEK,EAAEyB,EAAE,EAAE9B,GAAGJ,EAAE4B,EAAEQ,GAAE,KAAK,EAAEA,KAAI,EAAEhC,EAAE,EAAE,EAAEA,EAAEsB,EAAE8D,EAAG5C,GAAED,GAAE,EAAE,EAAEP,GAAEZ,EAAEU,IAAI,IAAIS,KAAI,GAAGC,KAAI,GAAG4C,EAAG5C,GAAED,GAAE,EAAE,EAAEjB,EAAEtB,GAAGoB,EAAEY,GAAEO,KAAI,GAAGvC,EAAE,EAAEJ,GAAG0B,EAAEQ,EAAElC,EAAE,KAAK,EAAEkC,IAAI,EAAE9B,EAAE,EAAE,EAAEA,EAAEA,EAAEoF,EAAGlD,GAAEf,EAAE,EAAE,EAAEa,GAAEZ,EAAEpB,EAAEoF,EAAGlD,GAAEf,EAAE,CAAC,EAAEnB,EAAEuC,GAAEjB,EAAE1B,GAAGuB,IAAI,GAAGW,EAAEV,EAAEY,KAAIpC,EAAE,EAAE0B,EAAE1B,GAAG0B,IAAI,GAAGH,IAAI,GAAGe,KAAI,GAAGlC,KAAK,GAAGgC,GAAEO,GAAEjB,EAAE,KAAK,EAAE1B,EAAE,EAAE,EAAEA,EAAEM,EAAE0B,EAAE,KAAK,CAAC,EAAEI,GAAE9B,EAAE0B,EAAE,KAAK,CAAC,EAAEhC,EAAEA,EAAEwF,EAAGrD,GAAElB,EAAE,EAAE,EAAEb,EAAEoB,EAAExB,IAAI,IAAIiB,IAAI,GAAGkB,KAAI,GAAGqD,EAAGrD,GAAElB,EAAE,EAAE,EAAEjB,EAAEI,GAAGoB,EAAEpB,EAAEa,IAAI,GAAGJ,EAAE,EAAEb,EAAEoB,GAAGpB,IAAI,GAAGkC,EAAElC,EAAE+B,EAAE,KAAK,EAAE3B,EAAE,EAAE,EAAEA,GAAG,EAAEJ,GAAGI,EAAEW,GAAEmB,EAAE,KAAK,EAAEnB,KAAI,EAAEf,EAAE,EAAE,EAAEA,EAAEoB,EAAEoE,EAAGjD,GAAE,EAAE,EAAE,EAAExB,GAAES,EAAEJ,EAAEoE,EAAGjD,GAAE,EAAE,CAAC,EAAEnB,EAAEc,EAAEV,EAAET,GAAEA,IAAGK,IAAI,GAAG,IAAI,GAAGmB,KAAI,GAAGnC,EAAE,EAAEA,GAAG,IAAI,EAAE8B,GAAGlC,EAAE,EAAEoB,EAAEhB,EAAEgB,IAAI,EAAEL,KAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEE,EAAE0B,EAAE,KAAK,CAAC,EAAEjB,GAAET,EAAE0B,EAAE,KAAK,CAAC,EAAE5B,EAAEJ,EAAEwF,EAAGzD,EAAElB,EAAE,EAAE,EAAET,EAAEoB,EAAEU,EAAEsD,EAAGzD,EAAElB,EAAE,EAAE,EAAEb,EAAEI,IAAIJ,EAAEa,IAAI,EAAE,GAAGW,EAAEpB,GAAGe,EAAE,EAAEnB,EAAEkB,IAAIL,GAAGkB,EAAEG,IAAI,IAAIrB,IAAI,GAAGkB,IAAI,IAAIc,GAAE,KAAK,EAAEd,IAAI,EAAE3B,EAAE,EAAE,EAAEA,GAAG,EAAEJ,GAAGI,EAAES,EAAEoB,EAAE,KAAK,EAAEA,IAAI,EAAEjC,EAAE,EAAE,EAAEA,EAAEmB,EAAEqE,EAAGpD,GAAEV,EAAE,EAAE,EAAEb,EAAEW,EAAEN,GAAGC,IAAI,GAAGO,IAAI,GAAGU,KAAI,GAAGoD,EAAGpD,GAAEV,EAAE,CAAC,EAAEP,GAAGf,EAAE,EAAEA,GAAGoB,EAAEX,EAAEa,IAAI,GAAG1B,EAAE,EAAEmB,EAAEf,EAAEe,IAAI,EAAED,IAAI,EAAEd,EAAE,EAAE,EAAEA,EAAEE,EAAE0B,EAAE,KAAK,CAAC,EAAEd,EAAEZ,EAAE0B,EAAE,KAAK,CAAC,EAAE5B,EAAEJ,EAAEwF,EAAG9C,GAAEf,EAAE,EAAE,EAAEvB,EAAEoB,EAAEO,IAAI,IAAIJ,IAAI,GAAGe,KAAI,GAAG8C,EAAG9C,GAAEf,EAAE,EAAE,EAAE3B,EAAEA,GAAGwB,EAAEpB,EAAEuB,IAAI,GAAGL,EAAE,EAAElB,EAAEmB,IAAIV,EAAEkB,EAAEU,GAAE,KAAK,EAAEV,IAAI,EAAE/B,EAAE,EAAE,EAAEA,GAAG,EAAEI,GAAGJ,EAAEa,EAAEyB,GAAE,KAAK,EAAEA,KAAI,EAAElC,EAAE,EAAE,EAAEA,EAAES,EAAE2E,EAAGzE,GAAEK,EAAE,EAAE,EAAEG,EAAEC,EAAEO,EAAE/B,EAAEA,EAAEoB,IAAI,EAAE,EAAEP,IAAI,GAAGO,IAAI,GAAGL,KAAI,GAAGyE,EAAGzE,GAAEK,EAAE,CAAC,EAAEP,EAAET,GAAGJ,EAAEwB,EAAED,GAAGnB,EAAE,EAAES,EAAET,EAAES,IAAI,GAAGO,EAAEW,EAAElB,EAAE,KAAK,EAAET,EAAE,EAAE,EAAEA,EAAEE,EAAE0B,EAAE,KAAK,CAAC,EAAEZ,EAAEd,EAAE0B,EAAE,KAAK,CAAC,EAAE5B,EAAEJ,EAAEwF,EAAG/C,GAAEnB,EAAE,EAAE,EAAElB,EAAEoB,EAAExB,EAAEwF,EAAG/C,GAAEnB,EAAE,EAAE,EAAEtB,EAAEuB,EAAEC,EAAEpB,EAAE2B,IAAI,IAAIT,IAAI,GAAGmB,KAAI,GAAGzC,EAAEA,IAAII,EAAEkB,IAAI,EAAE,GAAGC,GAAGN,EAAE,EAAEb,EAAEqB,IAAIH,EAAES,EAAEI,GAAE,KAAK,EAAEJ,IAAI,EAAE/B,EAAE,EAAE,EAAEA,GAAG,EAAEI,GAAGJ,EAAEsB,EAAEkB,GAAE,KAAK,EAAEA,KAAI,EAAEpC,EAAE,EAAE,EAAEA,EAAEa,EAAEuE,EAAGtE,EAAEC,EAAE,EAAE,EAAEG,EAAEE,EAAED,EAAEvB,EAAEA,EAAEmB,IAAI,EAAE,EAAEA,IAAI,GAAGA,IAAI,GAAGD,IAAI,GAAGsE,EAAGtE,EAAEC,EAAE,CAAC,EAAEF,EAAEjB,GAAGA,EAAEwB,EAAEF,GAAGlB,EAAE,EAAEe,EAAEnB,GAAGiB,EAAEM,EAAEJ,EAAE,KAAK,EAAEA,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEM,EAAE0B,EAAE,KAAK,CAAC,EAAEf,EAAEX,EAAE0B,EAAE,KAAK,CAAC,EAAEhC,EAAEA,EAAEwF,EAAG3D,EAAE,EAAE,EAAE,EAAEzB,EAAEoB,EAAEF,IAAI,IAAI,IAAI,GAAGO,IAAI,GAAG2D,EAAG3D,EAAE,EAAE,EAAE,EAAE7B,EAAEI,GAAGoB,EAAEpB,EAAE,IAAI,GAAGC,EAAE,EAAED,EAAEsB,IAAI1B,EAAEsB,EAAEQ,EAAE,KAAK,EAAER,IAAI,EAAElB,EAAE,EAAE,EAAEA,GAAG,EAAEJ,GAAGkB,EAAElB,EAAEoC,GAAE,KAAK,EAAEA,KAAI,EAAEhC,EAAE,EAAE,EAAEA,EAAEA,EAAEoF,EAAGpE,EAAEP,EAAE,EAAE,EAAES,EAAEE,EAAED,EAAEL,EAAEA,EAAEsE,EAAGpE,EAAEP,EAAE,CAAC,EAAET,EAAEA,EAAES,IAAI,EAAE,EAAEA,EAAEU,GAAGL,IAAI,GAAGL,IAAI,GAAGO,IAAI,GAAG,EAAEpB,GAAGI,EAAEoB,EAAEF,GAAGtB,EAAE,EAAEM,EAAE0B,EAAE,KAAK,CAAC,EAAEnB,EAAEP,EAAE0B,EAAE,KAAK,CAAC,EAAEnB,IAAI,EAAEK,IAAI,EAAElB,EAAE,EAAE,EAAEA,EAAEA,EAAEwF,EAAG1D,EAAEzB,EAAE,EAAE,EAAED,EAAEoB,EAAExB,EAAEwF,EAAG1D,EAAEzB,EAAE,EAAE,EAAEL,EAAEa,EAAEW,EAAEpB,EAAEA,IAAIA,EAAEC,IAAI,EAAE,GAAGQ,GAAGc,EAAE,EAAE3B,EAAEqB,IAAIrB,IAAI,IAAIK,IAAI,GAAGyB,IAAI,KAAK,GAAGzB,EAAEL,EAAE0C,GAAE,KAAK,EAAEtC,EAAE,EAAE,EAAEA,GAAG,EAAEJ,GAAGI,EAAEC,EAAEgC,GAAE,KAAK,EAAEA,KAAI,EAAErC,EAAE,EAAE,EAAEA,EAAEK,EAAEmF,EAAGvE,EAAEE,EAAE,EAAE,EAAEN,EAAEW,EAAEN,EAAEd,EAAEA,EAAEe,IAAI,EAAE,EAAEd,IAAI,GAAGc,IAAI,GAAGF,IAAI,GAAGuE,EAAGvE,EAAEE,EAAE,CAAC,EAAEd,EAAED,GAAGA,EAAEoB,EAAEX,GAAGb,EAAE,EAAEK,EAAED,EAAEC,IAAI,GAAGc,EAAED,EAAEb,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEE,EAAE0B,EAAE,KAAK,CAAC,EAAEb,EAAEb,EAAE0B,EAAE,KAAK,CAAC,EAAE5B,EAAEJ,EAAEwF,EAAG5D,EAAEnB,EAAE,EAAE,EAAEL,EAAEoB,EAAEN,EAAEsE,EAAG5D,EAAEnB,EAAE,EAAE,EAAET,EAAEI,IAAIJ,EAAES,IAAI,EAAE,GAAGe,EAAEpB,GAAG,EAAE,EAAEJ,EAAE,IAAIS,GAAGI,EAAEK,IAAI,IAAIT,IAAI,GAAGmB,IAAI,IAAIC,EAAE,KAAK,EAAEhB,IAAI,EAAET,EAAE,EAAE,EAAEA,GAAG,EAAEJ,GAAGI,EAAEK,EAAE8B,GAAE,KAAK,EAAEA,KAAI,EAAEvC,EAAE,EAAE,EAAEA,EAAES,EAAE+E,EAAGrE,EAAEd,EAAE,EAAE,EAAE,EAAEmB,EAAEN,EAAEd,EAAEA,EAAEC,IAAI,EAAE,EAAEA,EAAEa,GAAGT,IAAI,GAAGJ,IAAI,GAAGc,IAAI,GAAGqE,EAAGrE,EAAEd,EAAE,CAAC,EAAEI,GAAG,EAAEL,GAAGA,EAAEoB,EAAE,GAAGxB,EAAE,EAAEM,EAAE0B,EAAE,KAAK,CAAC,EAAE3B,EAAEC,EAAE0B,EAAE,KAAK,CAAC,EAAE3B,IAAI,EAAEI,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEJ,EAAEA,EAAEM,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEC,GAAGC,EAAEI,EAAEC,EAAEP,GAAG,CAAC,EAAE,KAAK,EAAEM,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEM,EAAEP,GAAG,CAAC,EAAEE,EAAEK,EAAEP,EAAE,GAAG,CAAC,EAAEC,EAAEI,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEH,GAAGC,EAAEK,EAAEH,EAAE,GAAG,CAAC,GAAGG,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEC,IAAI,EAAEC,IAAI,EAAEG,EAAE,EAAE,EAAEA,EAAEA,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEH,GAAGC,EAAEK,EAAEH,EAAE,IAAI,CAAC,GAAGG,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEC,IAAI,EAAEC,IAAI,EAAEG,EAAE,EAAE,EAAEA,EAAEJ,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEF,GAAGG,EAAEE,EAAEH,EAAE,IAAI,CAAC,GAAGG,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEE,EAAEK,EAAEP,EAAE,IAAI,CAAC,EAAEE,IAAI,EAAEG,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEH,GAAGC,EAAEK,EAAEH,EAAE,IAAI,CAAC,GAAGG,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEC,IAAI,EAAEC,IAAI,EAAEG,EAAE,EAAE,EAAEA,EAAEJ,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEF,GAAGG,EAAEE,EAAEH,EAAE,IAAI,CAAC,GAAGG,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEE,EAAEK,EAAEP,EAAE,IAAI,CAAC,EAAEE,IAAI,EAAEG,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEH,GAAGC,EAAEK,EAAEH,EAAE,IAAI,CAAC,GAAGG,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEC,IAAI,EAAEC,IAAI,EAAEG,EAAE,EAAE,EAAEA,EAAEA,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEH,GAAGC,EAAEK,EAAEH,EAAE,IAAI,CAAC,GAAGG,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEC,IAAI,EAAEC,IAAI,EAAEG,EAAE,EAAE,EAAEA,CAAC,CAAC,SAASyB,GAAE9B,EAAEC,EAAE,CAAC,IAAIC,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEI,EAAE,EAAEI,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEK,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAE,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEtB,EAAE,EAAE,EAAE,EAAEwB,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,EAAG,EAAEC,EAAG,EAAEC,EAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,EAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAE,GAAGpD,EAAEpB,EAAEoB,EAAE,KAAK,EAAEtB,EAAE,CAAC,EAAE,CAACC,EAAE,CAAC,IAAO,GAAGS,EAAEH,EAAEP,EAAE,IAAI,CAAC,KAAlB,EAAsB,CAAC,GAAGkE,GAAG3D,EAAEP,EAAE,GAAG,CAAC,GAAG4D,EAAGrD,EAAEN,GAAG,CAAC,IAAIsD,GAAE/C,EAAEP,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,MAAMA,EAAE2D,EAAG,CAAC,MAAML,GAAE/C,EAAEP,EAAE,EAAE,CAAC,EAAEiE,GAAG3D,EAAEP,EAAE,GAAG,CAAC,EAAE4D,EAAGrD,EAAEN,GAAG,CAAC,EAAE,GAAGwH,GAAGvH,EAAE,KAAK,EAAE,EAAE,IAAI,EAAEuH,GAAGvH,EAAE,KAAK,EAAE,EAAE,GAAG,EAAEK,EAAEL,EAAE,MAAM,CAAC,EAAE0D,EAAGrD,EAAEL,EAAE,MAAM,CAAC,EAAE,EAAEyC,GAAEpC,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,MAAM,CAAC,EAAEqD,GAAEhD,EAAEL,EAAE,MAAM,CAAC,EAAE,EAAEK,EAAEL,EAAE,MAAM,CAAC,EAAEyC,GAAEpC,EAAEL,EAAE,MAAM,CAAC,EAAE,EAAEK,EAAEL,EAAE,MAAM,CAAC,EAAEK,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEL,EAAE,MAAM,CAAC,EAAE,EAAEyC,GAAEpC,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEL,EAAE,MAAM,CAAC,EAAEQ,EAAEH,EAAEL,EAAE,MAAM,CAAC,EAAE,EAAEK,EAAEL,EAAE,MAAM,CAAC,EAAEyC,GAAEpC,EAAEL,EAAE,MAAM,CAAC,EAAE,EAAE,CAACK,EAAEP,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI2C,GAAE,GAAGZ,EAAE,IAAIZ,KAAKwB,IAAGO,GAAEA,GAAE,EAAE,GAAGP,GAAEA,GAAE,EAAE,EAAEpC,EAAEL,EAAE,MAAM,CAAC,EAAEgD,GAAE3C,EAAEL,EAAE,MAAM,CAAC,EAAEyC,GAAEjC,EAAE+G,GAAGvH,EAAE,EAAE,IAAI,EAAEuH,GAAG/G,EAAE,KAAK,EAAE,EAAE,IAAI,EAAEsB,GAAE5B,EAAEM,EAAE,KAAK,EAAEA,EAAE,KAAK,EAAEA,CAAC,EAAEsB,GAAE5B,EAAEM,EAAEA,EAAE,KAAK,CAAC,GAAGqB,EAAExB,EAAE,GAAGG,GAAGR,EAAE,KAAK,IAAI6B,GAAG,GAAG,IAAI,CAAC,EAAExB,GAAGH,GAAGe,GAAG,GAAG+C,GAAG,IAAI,CAAC,EAAE3D,EAAEG,GAAG,CAAC,EAAEH,EAAEH,EAAE,GAAG,CAAC,EAAE2B,GAAGA,EAAExB,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAGmB,EAAEA,EAAE,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,CAACY,EAAExB,EAAEP,EAAE,IAAI,CAAC,EAAEsE,EAAG,CAAC,CAAC,GAAG,GAAG3B,IAAGyB,GAAG,EAAEb,GAAEK,KAAM,KAAK,GAAG7B,IAAI,GAAG,IAAIrB,EAAEH,EAAEP,EAAE,IAAI,CAAC,EAAEiE,GAAG1D,EAAEN,EAAE,GAAG,CAAC,EAAEkB,GAAG+B,IAAGvC,GAAED,EAAEuD,EAAE,EAAEtB,GAAE,GAAGhC,GAAEoB,EAAEwB,EAAC,EAAE,KAAKL,KAAI,IAAIxC,IAAI,GAAG,EAAE,GAAGA,EAAE,EAAE,GAAG,EAAE6D,GAAGhB,GAAE,EAAE,IAAI,CAACnD,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEmE,KAAQjB,KAAI,KAAKxC,EAAEH,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAG,IAAjC,EAAoCkD,GAAE,EAAE,EAAE/B,EAAEA,EAAEmD,EAAG/D,EAAEA,EAAEP,GAAG,CAAC,EAAE,GAAG,CAAC,GAAGmE,IAAI,IAAI,GAAGxB,IAAG,GAAGuB,GAAG,EAAE7D,EAAEE,EAAEY,GAAG,CAAC,EAAEA,EAAEZ,EAAEY,EAAE,GAAG,CAAC,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAE0C,GAAEvC,EAAEgE,GAAGH,IAAI9C,IAAI,IAAIf,IAAI,GAAG,EAAE,EAAE,GAAGwD,EAAGzC,EAAET,IAAI,EAAEN,KAAK,EAAE6D,IAAI,CAAClC,EAAEY,GAAE,GAAGA,GAAE,EAAE,IAAIZ,EAAE,GAAG,EAAEzB,EAAE,GAAM,EAAEiD,KAAN,IAAWjD,EAAEK,GAAEoB,EAAEwC,EAAE,OAAO,CAAC,GAAG,CAAChB,GAAE,CAACpC,EAAEwB,GAAE,EAAE,EAAErC,EAAE,EAAE,MAAM,CAAC,CAAC,GAAGa,EAAER,GAAEoB,EAAEwB,EAAC,GAAG,EAAEnD,KAAK,EAAE6D,IAAI,CAAC9C,GAAGA,EAAEwB,GAAE,GAAG,EAAE,EAAErC,EAAE,EAAE,MAAM,CAAC,CAACa,EAAEA,EAAE,CAACwB,GAAE,EAAErC,EAAE,CAAC,CAACyB,EAAEzB,EAAEQ,GAAGY,EAAEnB,EAAEA,EAAEP,GAAG,CAAC,EAAE,GAAG,CAAC,IAAIW,GAAEP,EAAEM,CAAC,GAAG,IAAI,EAAEW,GAAGjB,EAAEe,EAAE,EAAE,KAAK,GAAGb,EAAEF,EAAE2B,EAAE,KAAK,EAAEwF,EAAGlH,EAAE,EAAEA,EAAE,CAAC,EAAEkH,EAAGpG,EAAE,EAAEM,EAAE,CAAC,EAAEM,EAAEzB,GAAGa,EAAEM,GAAG,EAAErB,EAAE,EAAEgB,EAAE,EAAE,EAAE,CAACnB,EAAE,CAACC,EAAE,CAACE,EAAE,CAACC,EAAE,CAACC,EAAE,CAAC,EAAE,CAACE,EAAE,CAACE,EAAE,CAAC,EAAE,CAAC,GAAGS,EAAEE,GAAGf,IAAI,EAAEa,IAAI,GAAG,EAAE,CAAC,GAAG,CAACT,EAAE,MAAM,EAAE,MAAMA,CAAC,CAACa,GAAEQ,EAAEpB,IAAGoB,IAAI,IAAIrB,IAAI,GAAG,EAAEA,CAAC,EAAE,EAAEc,GAAE,EAAEC,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAACM,EAAE,MAAMvB,EAAE,MAAM,CAAC,CAAC,GAAG,GAAGH,EAAEK,EAAE,EAAE,GAAGA,GAAG,MAAMJ,EAAEY,EAAE,GAAGb,GAAGO,GAAEF,CAAC,EAAE,GAAG,GAAGE,GAAEO,CAAC,EAAE,GAAG,EAAE,MAAMf,CAAC,CAACmB,GAAE,EAAEC,GAAEL,EAAEM,EAAE,EAAE,MAAM,CAAC,CAAC,IAAIrB,EAAE,GAAGQ,GAAEO,CAAC,EAAE,KAAK,EAAE,GAAG,MAAMd,EAAE,MAAMH,CAAC,CAAC,GAAGqB,GAAElB,EAAE0B,EAAEP,GAAE,GAAM,EAAEd,IAAN,EAAS,MAAMT,EAAES,EAAE,IAAIqB,EAAE2F,GAAGhH,CAAC,IAAI,GAAGqB,KAAK,GAAG,GAAG1B,EAAEc,IAAIT,EAAE,GAAGN,EAAEe,IAAIT,EAAE,EAAEL,EAAE,GAAGoB,EAAErB,EAAE,MAAM,CAAC,CAACC,EAAED,EAAE,EAAE,EAAEc,EAAE,GAAGd,EAAE,CAAC,CAAC,GAAGE,EAAE,IAAIF,EAAE,GAAGC,GAAGD,IAAI,GAAG,IAAIA,EAAE,EAAEiB,EAAEF,IAAIb,EAAE,IAAIF,EAAEe,IAAIb,EAAE,EAAEe,IAAI,GAAGf,GAAG,EAAEa,IAAI,GAAGb,EAAEyB,IAAIzB,GAAGA,EAAE,IAAIY,GAAG,IAAIA,IAAI,GAAG,IAAIC,EAAEY,GAAGzB,EAAEyB,EAAE,IAAIZ,GAAG,GAAGb,GAAG,EAAEyB,IAAI,GAAGzB,EAAEa,GAAGb,EAAEyB,IAAIzB,GAAGD,EAAE,IAAIyB,GAAO,GAAGZ,EAAER,EAAE,EAAE,KAAd,GAAkB,GAAG,EAAE8B,EAAEpC,GAAG,EAAEiB,IAAI,GAAGA,GAAGjB,EAAEiB,GAAG,EAAEF,IAAI,KAAKkB,EAAE3B,GAAGJ,EAAEwB,GAAGU,GAAGpC,IAAI,EAAEc,IAAI,GAAG,IAAI,KAAK,EAAEd,EAAEoC,GAAGpC,IAAI,EAAEiC,IAAI,GAAG,EAAElB,EAAEA,GAAG,EAAEY,IAAI,GAAGA,EAAEX,EAAEW,GAAG,EAAEX,EAAE,EAAEd,EAAED,EAAEA,EAAE,EAAE,GAAG,CAACkB,GAAEF,EAAEG,GAAEpB,EAAEqB,EAAEN,GAAG,EAAEY,IAAI,GAAG,MAAM,CAAC,CAACR,GAAEQ,EAAEP,GAAEL,EAAEA,EAAE,CAAC,CAACM,EAAEN,CAAC,CAAC,GAAGM,EAAED,GAAEL,GAAGI,IAAG,IAAIT,EAAE,EAAEJ,EAAEgB,GAAGyC,IAAI,IAAI,EAAEE,GAAG3C,GAAGwB,IAAG,IAAI,EAAEU,EAAG5B,GAAEtB,EAAES,EAAEkD,EAAE,MAAM,CAAC,IAAIsD,GAAGzH,EAAE,KAAK,EAAEiB,EAAE,IAAI,EAAEA,EAAE,EAAEb,EAAEC,GAAGF,GAAG0B,EAAEZ,GAAG,IAAIf,EAAEF,EAAE,KAAK,GAAG,IAAI,CAAC,EAAEwB,EAAEnB,GAAGc,EAAEX,EAAEqB,EAAE,IAAI,CAAC,EAAEV,EAAEd,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEF,GAAG,CAAC,EAAEC,EAAEoB,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEgB,EAAEA,EAAEd,GAAGF,GAAGC,EAAE,EAAEyB,GAAG3B,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,GAAGD,EAAEI,EAAEJ,EAAE,IAAI,CAAC,EAAEA,EAAEC,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEF,GAAG,CAAC,EAAEgB,EAAEK,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEC,EAAEe,EAAEd,GAAGF,GAAGC,EAAE,GAAGyB,GAAG3B,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,GAAGD,EAAEI,EAAEJ,EAAE,IAAI,CAAC,EAAEA,EAAEC,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEF,GAAG,CAAC,EAAEgB,EAAEK,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEC,EAAEA,EAAEC,GAAGwB,GAAG1B,EAAE,GAAG0B,GAAG3B,EAAE,IAAI,CAAC,EAAEiB,EAAEd,GAAGF,EAAEA,EAAEK,EAAE,IAAI,CAAC,EAAEL,EAAEE,EAAEwB,EAAE,GAAG,CAAC,EAAExB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEwB,GAAG,CAAC,EAAEzB,EAAEe,EAAEd,EAAEwB,EAAE,GAAG,CAAC,EAAE1B,GAAQ,GAAGc,EAAEA,EAAE,EAAE,KAAf,KAAoB,CAAC,IAAIwG,GAAGzH,EAAE,KAAK,EAAEE,EAAE,IAAI,EAAE2B,EAAE,EAAEZ,EAAE,EAAEb,GAAGe,EAAEd,EAAE,IAAIG,GAAGR,EAAE,KAAK,IAAIiB,GAAG,GAAG,IAAI,CAAC,IAAId,EAAEE,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAEgB,GAAGI,EAAEvB,EAAEG,EAAE,IAAI,CAAC,IAAIN,EAAEG,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAEU,EAAEmG,EAAGlH,GAAG,EAAE,GAAG,GAAGD,GAAG,EAAEC,IAAI,IAAIgB,EAAE,CAAC,EAAEhB,EAAEoB,GAAGpB,IAAI,EAAEC,IAAI,EAAEoB,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGtB,EAAEgB,EAAEd,EAAE,KAAK,EAAEc,IAAI,EAAEf,EAAE,EAAE,EAAEA,EAAES,GAAGM,EAAEqE,EAAGrF,EAAEG,EAAEG,EAAE,KAAK,CAAC,EAAEgB,EAAEnB,EAAEG,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIL,EAAEE,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAEQ,GAAGW,EAAEJ,IAAInB,EAAEC,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAE8B,EAAE+E,EAAGnG,EAAE,EAAEf,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,GAAG,EAAEA,EAAEoB,GAAGpB,IAAI,EAAES,IAAI,EAAEI,EAAE,EAAE,EAAEA,GAAG,EAAEmB,EAAEoD,EAAGpE,GAAGf,EAAEkC,EAAE1B,EAAE,GAAGgB,GAAGe,GAAEvC,IAAI,EAAEkC,IAAI,EAAEnC,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEsB,EAAE,GAAGtB,EAAEqB,GAAGqC,GAAGtC,GAAG,GAAG,EAAEP,EAAEb,EAAEgB,GAAGhB,EAAED,EAAEiC,EAAE,KAAK,EAAEjC,IAAI,EAAEuB,EAAET,EAAEsB,GAAGpC,EAAEmH,EAAGlF,EAAE,EAAEjC,GAAG,EAAE,GAAG,GAAGsB,GAAG,EAAEtB,IAAI,GAAG,GAAGC,EAAE,EAAEA,EAAEoB,EAAEJ,EAAE,EAAEQ,EAAE4D,EAAGjD,EAAEpB,EAAES,GAAGuB,GAAEhD,IAAI,EAAEoC,IAAI,EAAEnC,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEW,EAAEW,EAAEF,EAAEJ,GAAGO,EAAErB,EAAEG,EAAE,IAAI,CAAC,IAAIN,EAAEG,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAEU,GAAGM,EAAEnB,EAAEG,EAAE,IAAI,CAAC,IAAIL,EAAEE,EAAEG,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEyG,EAAGlH,GAAG,EAAE,GAAG,GAAGD,GAAG,EAAEC,IAAI,IAAIqB,EAAE,CAAC,EAAErB,EAAEoB,GAAGpB,IAAI,EAAEe,IAAI,EAAEC,EAAE,EAAE,EAAEA,GAAG,EAAEP,GAAGV,EAAEgB,EAAEN,EAAE,KAAK,EAAEA,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAEe,GAAGF,EAAEuE,EAAGrF,EAAEG,EAAEG,EAAE,KAAK,CAAC,EAAEI,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIW,EAAEd,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAEoB,GAAG,EAAEL,IAAIpB,EAAEE,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAEuB,EAAEsF,EAAGrG,EAAE,EAAEG,GAAG,EAAE,GAAG,GAAGhB,GAAG,EAAEgB,IAAI,GAAG,EAAEA,EAAEI,GAAGL,IAAI,EAAEC,IAAI,EAAES,EAAE,EAAE,EAAEA,GAAG,EAAEV,EAAEqE,EAAGnD,EAAEZ,GAAGrB,EAAE4B,EAAEb,EAAE,GAAGQ,GAAGF,EAAErB,IAAI,EAAE4B,IAAI,EAAEZ,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEY,EAAE,GAAGZ,EAAEP,GAAGgB,EAAEL,GAAG,GAAG,EAAEG,EAAEP,EAAEO,GAAGP,EAAEjB,EAAEgB,EAAE,KAAK,EAAEhB,IAAI,EAAE6B,EAAEL,EAAExB,EAAEmH,EAAGnG,EAAE,EAAEhB,GAAG,EAAE,GAAG,GAAGU,GAAG,EAAEV,IAAI,GAAG,EAAEU,EAAEW,EAAEG,EAAE,EAAEA,EAAE6D,GAAIpE,EAAEjB,EAAEiB,EAAE,GAAGH,EAAE,GAAGmC,GAAEjD,IAAI,EAAEiB,IAAI,EAAEP,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEmB,EAAE,GAAG7B,EAAEsB,GAAGsC,GAAGvC,GAAG,GAAG,EAAEP,EAAEd,EAAEU,GAAGV,EAAEC,EAAEuB,EAAE,KAAK,EAAEvB,IAAI,EAAE4B,EAAEf,EAAEQ,EAAEtB,GAAGC,EAAEkH,EAAG3F,EAAE,EAAEvB,GAAG,EAAE,GAAG,GAAGqB,GAAG,EAAErB,IAAI,GAAG,GAAG,EAAED,EAAEqB,EAAEX,EAAE,EAAE,EAAE2E,EAAGrE,EAAEM,EAAEI,GAAG0B,GAAEnD,IAAI,EAAEqB,IAAI,EAAEtB,EAAE,EAAE,EAAEA,GAAG,CAAC,EAAEyD,EAAGvB,EAAEb,EAAEL,GAAG,EAAEb,EAAEG,EAAE,IAAI,CAAC,IAAIN,EAAEG,EAAEG,EAAE,GAAG,CAAC,GAAG,EAAEQ,GAAGJ,EAAEP,EAAEG,EAAE,IAAI,CAAC,IAAIL,EAAEE,EAAEG,GAAG,CAAC,GAAG,EAAEoB,EAAEyF,EAAGlH,GAAG,EAAE,GAAG,GAAGD,GAAG,EAAEC,IAAI,IAAIS,EAAE,CAAC,EAAET,EAAEoB,GAAGpB,IAAI,EAAEa,IAAI,EAAEE,EAAE,EAAE,EAAEA,GAAG,EAAEF,GAAGd,EAAEc,EAAEY,EAAE,KAAK,EAAEA,IAAI,EAAEzB,EAAE,EAAE,EAAEA,EAAEyB,GAAGmB,GAAEwC,EAAGrF,EAAEG,EAAEG,EAAE,IAAI,CAAC,EAAEQ,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIL,EAAEE,GAAGa,EAAE+B,GAAEzC,EAAG,KAAI,IAAI,CAAC,GAAG,EAAEuB,GAAGyB,GAAEjC,IAAIL,EAAEb,EAAEa,EAAE,GAAG,CAAC,GAAG,EAAE0B,GAAEyE,EAAGtE,GAAE,EAAE5C,GAAG,EAAE,GAAG,GAAGe,GAAG,EAAEf,IAAI,GAAG,EAAEA,EAAEoB,GAAGpB,IAAI,EAAEyB,IAAI,EAAEG,EAAE,EAAE,EAAEA,GAAG,EAAEA,EAAEwD,EAAG3E,GAAGM,EAAE0B,GAAEhB,EAAE,GAAG,GAAGgB,GAAE1B,IAAI,EAAE0B,KAAI,EAAEzC,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEyB,EAAE,GAAGzB,EAAEa,GAAGyC,EAAGlC,GAAG,GAAG,EAAEX,EAAET,EAAES,GAAGT,EAAED,EAAE6B,EAAE,KAAK,EAAE7B,IAAI,EAAE0B,EAAEhB,EAAEV,EAAEC,GAAGa,EAAEqG,EAAGtF,EAAE,EAAE7B,GAAG,EAAE,GAAG,GAAGc,GAAG,EAAEd,IAAI,GAAG,GAAG,EAAEC,EAAEoB,EAAEX,EAAE,EAAEA,EAAE,GAAGT,GAAGiD,GAAElD,IAAI,EAAEc,IAAI,EAAEb,EAAE,EAAE,EAAEA,GAAGiC,EAAE,GAAG,EAAEpB,EAAEb,EAAEa,GAAGb,EAAED,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAEU,EAAEI,EAAEJ,EAAET,GAAGyB,EAAEyF,EAAG,EAAE,EAAEnH,GAAG,EAAE,GAAG,GAAGkD,IAAG,EAAElD,IAAI,GAAG,GAAG,EAAEC,EAAEoB,EAAEP,EAAE,EAAES,EAAE8D,EAAG3E,EAAEe,GAAGa,GAAE5B,IAAI,EAAEgB,IAAI,EAAEzB,EAAE,EAAE,EAAEA,GAAGsB,EAAE,EAAE,EAAEoB,GAAEtB,EAAEK,GAAGK,EAAE5B,EAAEG,EAAE,IAAI,CAAC,IAAIL,EAAEE,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG4B,EAAE/B,EAAEG,EAAE,IAAI,CAAC,IAAIQ,EAAEX,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAE+B,GAAE8E,EAAGrG,GAAG,EAAE,GAAG,GAAGb,GAAG,EAAEa,IAAI,IAAIoB,EAAE,CAAC,EAAEpB,EAAEO,GAAGP,IAAI,EAAE,IAAI,EAAEY,EAAE,EAAE,EAAEA,GAAG,EAAE,GAAGzB,EAAE,EAAEoC,GAAE,KAAK,EAAEA,KAAI,EAAEvB,EAAE,EAAE,EAAEA,EAAE8B,IAAGP,GAAEgD,EAAGpF,EAAEE,EAAEG,EAAE,KAAK,CAAC,EAAE,EAAEH,EAAEG,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIoB,EAAEvB,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAEkC,IAAGkB,GAAGrC,IAAIP,EAAEX,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAE0B,EAAEmF,EAAG9E,GAAE,EAAEX,GAAG,EAAE,GAAG,GAAGZ,GAAG,EAAEY,IAAI,GAAG,EAAEA,EAAEL,GAAGK,IAAI,EAAEkB,KAAI,EAAEJ,GAAE,EAAE,EAAEA,IAAG,EAAEN,EAAEmD,EAAGnD,GAAGpB,EAAEkB,EAAEY,GAAE,GAAGb,GAAGa,GAAE9B,IAAI,EAAEkB,IAAI,EAAEN,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEM,EAAE,GAAGN,EAAE,GAAGK,EAAEV,GAAG,GAAG,EAAEmB,GAAEd,EAAEc,IAAGd,EAAEzB,EAAEiC,EAAE,KAAK,EAAEjC,IAAI,EAAE+B,EAAEQ,GAAEvC,EAAEkH,EAAGjF,EAAE,EAAEjC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAEA,IAAI,GAAG,EAAE,EAAEoB,EAAEmB,GAAE,EAAE,EAAE6C,EAAGrD,GAAGN,EAAEzB,EAAEyB,EAAE,GAAGW,GAAEqB,IAAIrB,GAAEpC,IAAI,EAAEyB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEM,EAAE,GAAG/B,EAAE2C,IAAGc,GAAGrC,GAAG,GAAG,EAAEmB,GAAEvC,EAAEuC,IAAGvC,EAAEa,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAEkB,EAAEQ,GAAE1B,EAAEqG,EAAG,EAAE,EAAErG,GAAG,EAAE,GAAG,GAAG8B,IAAG,EAAE9B,IAAI,GAAG,EAAE8B,GAAEvB,EAAEmB,GAAE,EAAER,EAAE,GAAGlB,GAAG8B,IAAG3C,EAAEa,EAAEb,EAAE,KAAK,EAAEa,IAAI,EAAE8B,GAAE,EAAE,EAAEA,IAAGD,GAAE,GAAG,EAAEH,GAAE1B,EAAE0B,IAAG1B,EAAEb,EAAEsB,EAAE,KAAK,EAAEtB,IAAI,EAAE+B,EAAEQ,GAAEa,GAAE,GAAGvC,GAAGkB,EAAEmF,EAAG5F,EAAE,EAAEtB,GAAG,EAAE,GAAG,GAAG2C,IAAG,EAAE3C,IAAI,GAAG,GAAGa,EAAE,GAAG,EAAEO,EAAEmB,GAAE,EAAE,EAAE6C,EAAGhC,GAAEI,GAAIjB,GAAE1B,IAAI,EAAEkB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEoC,GAAG,GAAGpC,EAAEM,IAAGmB,EAAGpC,GAAG,GAAG,EAAEgC,GAAErB,EAAEqB,IAAGrB,EAAEtB,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAE0D,GAAGf,GAAE3C,GAAG4B,GAAE6E,EAAG,EAAE,EAAEzG,GAAG,EAAE,GAAG,GAAG4B,IAAG,EAAE5B,IAAI,GAAG,GAAGsB,EAAE,EAAE7B,EAAEG,GAAG,CAAC,EAAEI,EAAEsB,EAAEX,EAAEgC,GAAE,EAAEf,GAAE5B,IAAI,EAAE4B,KAAI,EAAEN,EAAE,EAAE,EAAEA,EAAE7B,EAAEG,EAAE,GAAG,CAAC,EAAEgC,GAAE5B,EAAE2E,EAAG3E,EAAEa,EAAEe,GAAEK,GAAE,EAAE,EAAExC,EAAEG,EAAE,KAAK,CAAC,EAAEI,EAAEa,EAAEF,EAAElB,EAAEG,EAAE,KAAK,CAAC,EAAEiB,EAAE8B,GAAE,GAAG9B,EAAEA,EAAEiB,GAAE,GAAG,EAAER,EAAET,EAAEe,IAAGf,EAAEb,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAEuC,GAAErB,EAAEtB,GAAGI,EAAEqG,EAAGzG,EAAE,EAAEI,GAAG,EAAE,GAAG,GAAG0B,IAAG,EAAE1B,IAAI,GAAG,GAAGS,EAAE,EAAEpB,EAAEG,EAAE,IAAI,CAAC,EAAEI,EAAEa,EAAEF,EAAEiB,GAAE,EAAExB,EAAEJ,IAAI,EAAEI,IAAI,EAAES,EAAE,EAAE,EAAEA,EAAEpB,EAAEG,EAAE,IAAI,CAAC,EAAEQ,EAAEuD,GAAG/D,EAAEgE,GAAGe,EAAG3E,EAAE,EAAEI,EAAE2C,EAAG,CAAC,EAAEtD,EAAEkE,GAAG,IAAI,CAAC,EAAEC,GAAGnE,EAAEG,EAAE,IAAI,CAAC,EAAEe,EAAEX,EAAE2E,EAAGpF,EAAEiC,EAAEH,EAAEa,GAAE,CAAC,EAAErB,EAAE,GAAGtB,EAAEgD,IAAGf,EAAEb,GAAG,GAAG,EAAEP,EAAEb,EAAEa,GAAGb,EAAES,EAAEO,EAAE,KAAK,EAAEA,IAAI,EAAEM,EAAET,EAAEb,EAAEA,GAAG,EAAEkH,EAAGzG,EAAE,EAAEO,GAAG,EAAE,GAAG,GAAGgC,IAAG,EAAEhC,IAAI,GAAG,GAAG,EAAEA,EAAEI,EAAEP,EAAE,EAAEA,EAAEuE,EAAGrF,EAAE6C,GAAEK,GAAEI,GAAE,EAAE,EAAErC,EAAEoE,EAAGvE,EAAEb,GAAG,EAAEA,IAAI,EAAE,IAAI,EAAEgB,EAAE,EAAE,EAAEA,IAAIgC,GAAE5B,GAAG,EAAE,EAAEwB,GAAEtB,EAAEF,EAAEU,EAAE,GAAG/B,EAAEyC,GAAE7B,EAAE,GAAG,EAAEA,EAAEZ,EAAEkD,IAAGlD,EAAEE,EAAEuB,EAAE,KAAK,EAAEvB,IAAI,EAAE6B,EAAEnB,EAAEV,EAAEiH,EAAG1F,EAAE,EAAEvB,GAAG,EAAE,GAAG,GAAGuC,IAAG,EAAEvC,IAAI,GAAG,EAAEuB,EAAEJ,EAAE6B,GAAE,EAAEtC,EAAE,GAAGV,GAAGuB,GAAGzB,EAAEE,EAAEF,EAAE,KAAK,EAAEE,IAAI,EAAEuB,EAAE,EAAE,EAAEA,GAAGF,EAAE,GAAG,EAAEA,EAAErB,EAAEqB,GAAGrB,EAAEF,EAAEiB,EAAE,KAAK,EAAEjB,IAAI,EAAEY,EAAEW,EAAEX,EAAEF,GAAGR,GAAGuC,GAAE0E,EAAGlG,EAAE,EAAEjB,GAAG,EAAE,GAAG,GAAGyB,GAAG,EAAEzB,IAAI,GAAG,GAAGE,EAAE,GAAGQ,EAAEW,EAAEE,EAAE,EAAEb,EAAE2E,EAAGzE,EAAEsB,GAAGX,EAAErB,IAAI,EAAEuC,KAAI,EAAE/B,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEqB,EAAE,GAAGU,GAAE,GAAGP,EAAEb,GAAG,GAAG,EAAET,EAAE6B,GAAES,IAAGT,GAAExC,EAAES,EAAE,KAAK,EAAET,IAAI,EAAE8B,EAAEnB,EAAEA,EAAEK,GAAGhB,GAAG,EAAEkH,EAAGzG,EAAE,EAAET,GAAG,EAAE,GAAG,GAAG,GAAG,EAAEA,IAAI,GAAG,GAAGwC,GAAE,GAAGxB,EAAEI,EAAE6B,GAAE,EAAEjC,EAAEoE,EAAGzE,EAAEiC,IAAG,EAAE5C,IAAI,EAAE,IAAI,EAAEgB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEd,EAAEG,EAAE,IAAI,CAAC,EAAEW,EAAEwB,GAAEpB,EAAElB,EAAEG,EAAE,KAAK,CAAC,EAAEmC,GAAEtC,EAAEG,EAAE,GAAG,CAAC,EAAEL,EAAEE,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEyB,EAAE,GAAG9B,EAAEsB,EAAEkB,GAAE,GAAG,EAAE7B,EAAEX,EAAE,GAAGA,EAAEC,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAE6B,EAAEnB,EAAEV,EAAEiH,EAAGlG,EAAE,EAAEf,GAAG,EAAE,GAAG,GAAGqB,GAAG,EAAErB,IAAI,GAAG,EAAEe,EAAEI,EAAE,EAAE,EAAEgD,GAAG/D,EAAEgE,GAAGe,GAAIpF,EAAEC,EAAED,EAAE,GAAGS,EAAEwB,GAAGhC,EAAED,IAAI,EAAEC,IAAI,EAAEe,EAAE,EAAE,EAAEA,GAAG,CAAC,EAAEd,EAAEkE,GAAG,IAAI,CAAC,EAAEC,GAAGnE,EAAEG,EAAE,IAAI,CAAC,EAAEe,EAAElB,EAAEG,EAAE,IAAI,CAAC,EAAEL,EAAEE,EAAEG,EAAE,IAAI,CAAC,EAAEJ,EAAEe,EAAEoE,EAAGrF,EAAEiC,EAAER,EAAEkC,GAAG,CAAC,EAAEzD,EAAE,GAAGF,EAAEqC,IAAGJ,EAAEZ,GAAG,GAAG,EAAEpB,EAAED,EAAEE,GAAGF,EAAEiB,EAAES,EAAE,KAAK,EAAEA,IAAI,EAAExB,EAAED,EAAEA,EAAED,GAAGU,EAAEyG,EAAGlG,EAAE,EAAES,GAAG,EAAE,GAAG,GAAGW,IAAG,EAAEX,IAAI,GAAG,GAAG,EAAE1B,EAAEqB,EAAEnB,EAAE,EAAEQ,EAAE2E,EAAGpF,EAAEuB,EAAEoC,IAAIlC,EAAEzB,IAAI,EAAES,IAAI,EAAEV,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEyB,EAAEvB,EAAEmB,EAAEE,EAAE,GAAGvB,EAAE0C,GAAEO,GAAE,GAAG,EAAE/C,EAAEF,EAAEwB,GAAGxB,EAAEgB,EAAEF,EAAE,KAAK,EAAEE,IAAI,EAAEO,EAAErB,EAAEc,EAAEmG,EAAGrG,EAAE,EAAEE,GAAG,EAAE,GAAG,GAAG0B,IAAG,EAAE1B,IAAI,GAAG,EAAEd,EAAEmB,EAAEG,EAAE,EAAED,EAAE,GAAGrB,EAAEuB,GAAGT,GAAGhB,EAAEgB,EAAEhB,EAAE,KAAK,EAAEgB,IAAI,EAAEd,EAAE,EAAE,EAAEA,GAAG,GAAG,EAAEY,EAAEZ,EAAEY,GAAGZ,EAAEF,EAAEU,EAAE,KAAK,EAAEV,IAAI,EAAEuB,EAAET,EAAES,EAAEN,GAAGf,EAAEA,GAAGsB,EAAE2F,EAAGzG,EAAE,EAAEV,GAAG,EAAE,GAAG,GAAGgB,GAAG,EAAEhB,IAAI,GAAG,GAAG,GAAGiB,EAAEI,EAAEP,EAAE,EAAEG,EAAEoE,EAAG9D,EAAEU,GAAGnB,EAAEZ,IAAI,EAAEsB,IAAI,EAAEP,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEL,EAAE,GAAGY,EAAEE,GAAGO,EAAEZ,GAAG,GAAG,EAAEE,EAAEC,EAAE,GAAGA,EAAEvB,EAAEgB,EAAE,KAAK,EAAEhB,IAAI,EAAEW,EAAEW,EAAEtB,GAAGyB,EAAEyF,EAAGlG,EAAE,EAAEhB,GAAG,EAAE,GAAG,GAAGyB,GAAG,EAAEzB,IAAI,GAAG,GAAGuB,EAAE,EAAErB,EAAEG,EAAE,IAAI,CAAC,EAAEL,EAAEuB,EAAEH,EAAE,EAAE,EAAEK,EAAEzB,IAAI,EAAEyB,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAErB,EAAEG,EAAE,IAAI,CAAC,EAAEoB,EAAEzB,EAAEoF,EAAGpF,EAAES,EAAEgB,EAAED,EAAE,EAAE,EAAEtB,EAAEG,EAAE,KAAK,CAAC,EAAEL,EAAES,EAAEW,EAAElB,EAAEG,EAAE,KAAK,CAAC,EAAEI,EAAEa,EAAE,GAAGb,EAAEA,EAAEI,EAAE,GAAG,EAAEW,EAAEf,EAAEgB,GAAGhB,EAAET,EAAEC,EAAE,KAAK,EAAEA,IAAI,EAAEqB,EAAEE,EAAEvB,GAAGD,EAAEkH,EAAGlH,EAAE,EAAEC,GAAG,EAAE,GAAG,GAAGY,GAAG,EAAEZ,IAAI,GAAG,GAAGQ,EAAE,EAAEA,EAAEW,EAAEK,EAAE,EAAEA,EAAEzB,EAAEA,IAAI,EAAEC,IAAI,EAAEQ,EAAE,EAAE,EAAEA,EAAEP,EAAE4C,IAAG,CAAC,EAAE7C,EAAEC,EAAE4C,GAAE,GAAG,CAAC,EAAE9C,EAAEA,GAAGe,EAAEqE,EAAGrF,EAAE6B,EAAEb,EAAEuC,EAAG,CAAC,GAAGnB,EAAE,EAAE1B,GAAGe,EAAEJ,GAAG2B,GAAE,EAAEhD,GAAGc,EAAEqG,EAAG/E,GAAG,EAAE,GAAG,GAAGY,IAAG,EAAEZ,IAAI,IAAIpB,EAAE,CAAC,GAAGf,EAAE,EAAEA,EAAEoB,GAAGpB,IAAI,EAAEe,IAAI,EAAEN,EAAE,EAAE,EAAEA,GAAG,EAAEA,EAAE2E,EAAGrF,EAAE,EAAE0D,IAAI5C,EAAEd,IAAI,EAAEc,IAAI,EAAEb,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEuB,EAAE,GAAGvB,EAAEmD,IAAGhB,EAAEf,GAAG,GAAG,EAAEE,EAAEtB,EAAEuB,GAAGvB,EAAES,EAAEY,EAAE,KAAK,EAAEA,IAAI,EAAEE,EAAED,EAAEA,EAAEP,GAAGf,GAAGqB,EAAE6F,EAAGzG,EAAE,EAAEY,GAAG,EAAE,GAAG,GAAG8B,IAAG,EAAE9B,IAAI,GAAG,GAAGrB,EAAE,GAAGe,EAAEK,EAAEG,EAAE,EAAEF,EAAE+D,EAAG9D,EAAEE,GAAGT,EAAEf,IAAI,EAAEqB,IAAI,EAAEN,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEa,EAAE,GAAGL,EAAEV,GAAGW,EAAEJ,GAAG,GAAG,EAAEE,EAAEC,EAAE,GAAGA,EAAExB,EAAEsB,EAAE,KAAK,EAAEtB,IAAI,EAAE6B,EAAEN,EAAEA,EAAEb,GAAGI,GAAGd,EAAEmH,EAAG7F,EAAE,EAAEtB,GAAG,EAAE,GAAG,GAAGc,GAAG,EAAEd,IAAI,GAAG,GAAGwB,EAAE,GAAGd,EAAEW,EAAE,EAAE,EAAErB,EAAEqF,EAAG9D,EAAEa,GAAG1B,EAAEV,IAAI,EAAEc,IAAI,EAAEJ,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEmB,EAAE,GAAGL,EAAER,GAAGoB,EAAEf,GAAG,GAAG,EAAEE,EAAEC,EAAE,GAAGA,EAAExB,EAAEC,EAAE,KAAK,EAAEA,IAAI,EAAE4B,EAAEN,EAAEtB,GAAGe,EAAEmG,EAAGnH,EAAE,EAAEC,GAAG,EAAE,GAAG,GAAGe,GAAG,EAAEf,IAAI,GAAG,GAAGuB,EAAE,EAAErB,EAAEG,EAAE,IAAI,CAAC,EAAEL,EAAEuB,EAAEH,EAAE,EAAE,EAAEL,EAAEf,IAAI,EAAEe,IAAI,EAAEQ,EAAE,EAAE,EAAEA,EAAErB,EAAEG,EAAE,IAAI,CAAC,EAAEU,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAEN,EAAEG,EAAEG,EAAE,KAAK,CAAC,EAAE8B,EAAEjC,EAAEG,EAAE,IAAI,CAAC,EAAEQ,EAAEX,EAAEG,EAAE,IAAI,CAAC,EAAEI,EAAE2D,GAAG/D,EAAEgE,GAAGe,EAAGnF,EAAEe,EAAES,EAAEO,EAAE,CAAC,EAAE9B,EAAEkE,GAAG,IAAI,CAAC,EAAEC,GAAGnE,EAAEG,EAAE,IAAI,CAAC,EAAEe,EAAEgD,GAAG/D,EAAEgE,GAAGe,EAAGpF,EAAEqB,EAAEN,EAAES,EAAE,CAAC,EAAEtB,EAAEkE,GAAG,IAAI,CAAC,EAAEC,GAAGnE,EAAEG,EAAE,IAAI,CAAC,EAAEe,GAAM,GAAGN,EAAEA,EAAE,EAAE,KAAb,GAAkB,CAAC,KAAKd,GAAGC,EAAEC,EAAE,KAAKG,GAAGR,EAAE,KAAK,IAAI6B,GAAG,GAAG,IAAI,CAAC,IAAI3B,EAAEG,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAEW,GAAGH,EAAEX,EAAEG,EAAE,KAAK,CAAC,IAAIS,EAAEZ,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAEgB,EAAE6F,EAAGnH,GAAG,EAAE,GAAG,GAAGe,GAAG,EAAEf,IAAI,IAAIE,EAAE,CAAC,EAAEF,EAAEqB,GAAGrB,IAAI,EAAEC,IAAI,EAAEgB,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAGF,EAAEO,EAAErB,EAAE,KAAK,EAAEqB,IAAI,EAAEtB,EAAE,EAAE,EAAEA,EAAEgB,GAAGM,EAAE+D,EAAGtE,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEW,EAAEd,EAAEG,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIN,EAAEG,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAEI,GAAGuB,EAAEZ,IAAIpB,EAAEE,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAEoB,EAAEyF,EAAG7F,EAAE,EAAEtB,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,GAAG,EAAEA,EAAEqB,GAAGrB,IAAI,EAAEgB,IAAI,EAAEN,EAAE,EAAE,EAAEA,GAAG,EAAE0B,EAAEiD,EAAGnF,GAAGD,EAAEyB,EAAEV,EAAE,GAAGF,GAAG,EAAEb,IAAI,EAAEyB,IAAI,EAAE1B,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEc,EAAE,GAAGd,EAAEiB,GAAG2B,GAAEvB,GAAG,GAAG,EAAEnB,EAAEF,EAAEE,GAAGF,EAAEe,EAAEqB,EAAE,KAAK,EAAErB,IAAI,EAAED,EAAEZ,EAAEwB,GAAGX,EAAEoG,EAAG/E,EAAE,EAAErB,GAAG,EAAE,GAAG,GAAGE,GAAG,EAAEF,IAAI,GAAG,GAAGf,EAAE,EAAEA,EAAEqB,EAAEnB,EAAE,EAAE+B,EAAEoD,EAAG3D,EAAEJ,EAAEW,GAAGQ,GAAE1B,IAAI,EAAEW,IAAI,EAAE1B,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEwC,GAAEX,EAAER,EAAEnB,GAAGuB,EAAEtB,EAAEG,EAAE,KAAK,CAAC,IAAIS,EAAEZ,EAAEG,EAAE,IAAI,CAAC,GAAG,EAAEgB,GAAGL,EAAEd,EAAEG,EAAE,KAAK,CAAC,IAAIN,EAAEG,EAAEG,EAAE,GAAG,CAAC,GAAG,EAAEU,EAAEmG,EAAGnH,GAAG,EAAE,GAAG,GAAGe,GAAG,EAAEf,IAAI,IAAIiB,EAAE,CAAC,EAAEjB,EAAEqB,GAAGrB,IAAI,EAAEsB,IAAI,EAAEpB,EAAE,EAAE,EAAEA,GAAG,EAAEc,GAAGD,EAAEO,EAAEN,EAAE,KAAK,EAAEA,IAAI,EAAEhB,EAAE,EAAE,EAAEA,EAAEsB,GAAGZ,EAAE2E,EAAGtE,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEU,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIJ,EAAEC,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAEQ,GAAGU,EAAEH,IAAIrB,EAAEG,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE6G,EAAGzG,EAAE,EAAER,GAAG,EAAE,GAAG,GAAGF,GAAG,EAAEE,IAAI,GAAG,EAAEA,EAAEmB,GAAGnB,IAAI,EAAEoB,IAAI,EAAER,EAAE,EAAE,EAAEA,GAAG,EAAEQ,EAAE+D,EAAG9D,EAAEN,GAAGjB,EAAE,EAAEsB,EAAE,GAAGG,GAAGR,EAAEjB,IAAI,EAAE,IAAI,EAAEE,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEqB,EAAE,GAAGrB,EAAEc,GAAGF,EAAEO,GAAG,GAAG,EAAEI,EAAEvB,EAAEuB,GAAGvB,EAAEa,EAAEO,EAAE,KAAK,EAAEP,IAAI,EAAEQ,EAAEE,EAAEV,EAAEoG,EAAG7F,EAAE,EAAEP,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,GAAG,EAAEC,EAAEK,EAAEI,EAAE,EAAEA,EAAE4D,GAAInF,EAAEa,EAAEb,EAAE,GAAGQ,EAAEc,GAAGwB,GAAE9C,IAAI,EAAEa,IAAI,EAAEC,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEQ,EAAE,GAAGT,EAAEE,GAAG0C,GAAGtC,GAAG,GAAG,EAAEE,EAAER,EAAEC,GAAGD,EAAEf,EAAEyB,EAAE,KAAK,EAAEzB,IAAI,EAAEwB,EAAED,EAAEN,EAAEF,GAAGf,EAAEmH,EAAG1F,EAAE,EAAEzB,GAAG,EAAE,GAAG,GAAGiB,GAAG,EAAEjB,IAAI,GAAG,GAAG,EAAEe,EAAEM,EAAEL,EAAE,EAAEQ,EAAE6D,EAAG/D,EAAEL,EAAEH,GAAGmC,GAAEjD,IAAI,EAAEiB,IAAI,EAAEF,EAAE,EAAE,EAAEA,GAAG,CAAC,EAAEH,EAAEW,EAAEF,EAAEC,GAAGY,EAAE/B,EAAEG,EAAE,KAAK,CAAC,IAAIS,EAAEZ,EAAEG,EAAE,GAAG,CAAC,GAAG,EAAEI,GAAGM,EAAEb,EAAEG,EAAE,KAAK,CAAC,IAAIN,EAAEG,EAAEG,GAAG,CAAC,GAAG,EAAEQ,EAAEqG,EAAGnH,GAAG,EAAE,GAAG,GAAGe,GAAG,EAAEf,IAAI,IAAIgB,EAAE,CAAC,EAAEhB,EAAEqB,GAAGrB,IAAI,EAAEU,IAAI,EAAEY,EAAE,EAAE,EAAEA,GAAG,EAAEZ,GAAGK,EAAEL,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAEd,EAAE,EAAE,EAAEA,EAAEc,GAAGsC,GAAEiC,EAAGtE,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEI,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIN,EAAEG,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAGsD,GAAGvC,IAAIC,EAAEnB,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAEuC,GAAEsE,EAAG/D,GAAE,EAAEpD,GAAG,EAAE,GAAG,GAAGsB,GAAG,EAAEtB,IAAI,GAAG,EAAEA,EAAEqB,GAAGrB,IAAI,EAAEc,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEuE,EAAGrE,GAAGM,EAAEuB,GAAE/B,EAAE,GAAGoB,GAAGW,GAAEvB,IAAI,EAAEuB,KAAI,EAAE7C,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEgB,EAAE,GAAGhB,EAAEU,GAAG+C,EAAGpC,GAAG,GAAG,EAAEP,EAAEd,EAAEgB,GAAGhB,EAAEe,EAAE,EAAE,KAAK,EAAEA,IAAI,EAAEC,EAAEF,EAAEC,EAAEf,GAAGU,EAAEyG,EAAG,EAAE,EAAEpG,GAAG,EAAE,GAAG,GAAGL,GAAG,EAAEK,IAAI,GAAG,GAAG,EAAEf,EAAEqB,EAAEL,EAAE,EAAEO,EAAE,GAAGvB,GAAG+C,GAAEhC,IAAI,EAAEL,IAAI,EAAEV,EAAE,EAAE,EAAEA,GAAGuB,EAAE,GAAG,EAAET,EAAEd,EAAEU,GAAGV,EAAEe,EAAES,EAAE,KAAK,EAAET,IAAI,EAAEQ,EAAET,EAAEE,EAAEhB,GAAGc,EAAEqG,EAAG3F,EAAE,EAAET,GAAG,EAAE,GAAG,GAAGgC,IAAG,EAAEhC,IAAI,GAAG,GAAG,EAAEf,EAAEqB,EAAEX,EAAE,EAAEmB,EAAEwD,EAAGrE,EAAEiB,GAAGS,GAAE1B,IAAI,EAAEF,IAAI,EAAEd,EAAE,EAAE,EAAEA,GAAG6B,EAAE,EAAE,EAAEqB,GAAE7B,EAAEP,GAAGwC,GAAEnD,EAAEG,EAAE,KAAK,CAAC,IAAIN,EAAEG,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAE4B,GAAGX,EAAEpB,EAAEG,EAAE,KAAK,CAAC,IAAII,EAAEP,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAEgC,GAAE6E,EAAGzG,GAAG,EAAE,GAAG,GAAGV,GAAG,EAAEU,IAAI,IAAIa,EAAE,CAAC,EAAEb,EAAEW,GAAGX,IAAI,EAAEwB,IAAI,EAAEpB,EAAE,EAAE,EAAEA,GAAG,EAAEoB,GAAGlC,EAAEkC,EAAEI,GAAE,KAAK,EAAEA,KAAI,EAAE5B,EAAE,EAAE,EAAEA,EAAEiC,IAAGL,GAAE+C,EAAGrF,EAAEG,EAAEG,EAAE,KAAK,CAAC,EAAE4B,EAAE/B,EAAEG,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIQ,EAAEX,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAE+B,IAAGkB,EAAGlC,IAAIX,EAAEP,EAAEG,EAAE,KAAK,CAAC,GAAG,EAAEyB,EAAEoF,EAAG7E,GAAE,EAAExB,GAAG,EAAE,GAAG,GAAGJ,GAAG,EAAEI,IAAI,GAAG,EAAEA,EAAEO,GAAGP,IAAI,EAAE6B,KAAI,EAAEN,GAAE,EAAE,EAAEA,IAAG,EAAEd,EAAE8D,EAAG9D,GAAGb,EAAEqB,EAAEY,GAAE,GAAGW,IAAGX,GAAEjC,IAAI,EAAEqB,IAAI,EAAEjB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEkB,EAAE,GAAGlB,EAAEoB,GAAGoB,GAAEjC,GAAG,GAAG,EAAEU,EAAEjB,EAAEuB,IAAGvB,EAAEd,EAAEuB,EAAE,KAAK,EAAEvB,IAAI,EAAEgC,EAAED,EAAE/B,EAAEmH,EAAG5F,EAAE,EAAEvB,GAAG,EAAE,GAAG,GAAGkC,GAAG,EAAElC,IAAI,GAAG,EAAEkC,EAAEb,EAAEgB,GAAE,EAAEH,EAAEmD,EAAGtD,GAAGjB,EAAEd,EAAEc,EAAE,GAAGwB,GAAEiB,GAAIjB,GAAEtC,IAAI,EAAEc,IAAI,EAAEoB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEF,EAAE,GAAGhC,EAAE2C,IAAGY,EAAGlC,GAAG,GAAG,EAAEU,EAAE/B,EAAEqC,IAAGrC,EAAEU,EAAEwB,EAAE,KAAK,EAAExB,IAAI,EAAEsB,EAAED,EAAErB,EAAEyG,EAAGjF,EAAE,EAAExB,GAAG,EAAE,GAAG,GAAGiC,IAAG,EAAEjC,IAAI,GAAG,EAAEiC,GAAEtB,EAAEgB,GAAE,EAAEL,EAAE,GAAGtB,GAAGiC,IAAG3C,EAAEU,EAAEV,EAAE,KAAK,EAAEU,IAAI,EAAEiC,GAAE,EAAE,EAAEA,IAAGO,GAAE,GAAG,EAAEnB,EAAErB,EAAE2B,IAAG3B,EAAEV,EAAE6B,EAAE,KAAK,EAAE7B,IAAI,EAAEgC,EAAED,EAAEC,EAAER,GAAGd,GAAGqB,EAAEoF,EAAGtF,EAAE,EAAE7B,GAAG,EAAE,GAAG,GAAG2C,IAAG,EAAE3C,IAAI,GAAG,GAAGU,EAAE,GAAGc,EAAEH,EAAEgB,GAAE,EAAEb,EAAE6D,EAAGrD,EAAEpB,GAAGyB,GAAE3B,IAAI,EAAEqB,IAAI,EAAEP,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE6B,GAAE,GAAGtB,EAAEW,IAAG9B,EAAES,GAAG,GAAG,EAAEW,EAAED,EAAE2B,IAAI3B,EAAEf,EAAEQ,EAAE,KAAK,EAAER,IAAI,EAAEqC,GAAErB,EAAEhB,GAAG0B,GAAEyE,EAAG3F,EAAE,EAAER,GAAG,EAAE,GAAG,GAAG0B,IAAG,EAAE1B,IAAI,GAAG,GAAGe,EAAE,EAAE5B,EAAEG,GAAG,CAAC,EAAEU,EAAEe,EAAEV,EAAEqC,GAAG,EAAEhB,GAAE1B,IAAI,EAAE0B,KAAI,EAAEX,EAAE,EAAE,EAAEA,EAAE5B,EAAEG,EAAE,GAAG,CAAC,EAAEoC,GAAE1B,EAAEqE,EAAGrE,EAAEa,EAAEa,GAAEQ,GAAE,EAAE,EAAE/C,EAAEG,EAAE,KAAK,CAAC,EAAEU,EAAEa,EAAER,EAAElB,EAAEG,EAAE,KAAK,CAAC,EAAEuB,EAAEG,EAAE,GAAGH,EAAEA,EAAEQ,GAAE,GAAG,EAAEN,EAAEF,EAAEa,IAAGb,EAAEnB,EAAEM,EAAE,KAAK,EAAEN,IAAI,EAAEsB,EAAED,EAAEf,GAAGN,EAAEyG,EAAGnG,EAAE,EAAEN,GAAG,EAAE,GAAG,GAAG2B,IAAG,EAAE3B,IAAI,GAAG,GAAGmB,EAAE,EAAE1B,EAAEG,EAAE,KAAK,CAAC,EAAEU,EAAEa,EAAER,EAAEqB,GAAE,EAAEhC,EAAEA,IAAI,EAAEM,IAAI,EAAEa,EAAE,EAAE,EAAEA,EAAE1B,EAAEG,EAAE,KAAK,CAAC,EAAEI,EAAE2D,GAAG/D,EAAEgE,GAAGe,EAAGrE,EAAEQ,EAAEd,EAAEE,EAAE,CAAC,EAAET,EAAEkE,GAAG,KAAK,CAAC,EAAEC,GAAGnE,EAAEG,EAAE,KAAK,CAAC,EAAEe,EAAEL,EAAEqE,EAAGrF,EAAEuB,EAAEoB,GAAEW,GAAE,CAAC,EAAEzB,EAAE,GAAG7B,EAAEgD,IAAGzB,EAAEF,GAAG,GAAG,EAAEG,EAAExB,EAAEU,GAAGV,EAAEE,EAAEc,EAAE,KAAK,EAAEd,IAAI,EAAE2B,EAAEL,EAAExB,EAAEA,GAAGwB,EAAE2F,EAAGnG,EAAE,EAAEd,GAAG,EAAE,GAAG,GAAG8C,IAAG,EAAE9C,IAAI,GAAG,GAAG,EAAEA,EAAEmB,EAAEX,EAAE,EAAEA,EAAE2E,EAAGtE,EAAEqC,GAAEL,GAAEa,GAAG,EAAE,EAAE1D,EAAEmF,EAAG3E,EAAEV,GAAGwB,EAAExB,IAAI,EAAEwB,IAAI,EAAEtB,EAAE,EAAE,EAAEA,IAAI8C,GAAE3B,GAAG,EAAE,EAAE+B,GAAEvB,EAAER,EAAEU,EAAE,GAAGhB,EAAE,EAAEyB,GAAE,GAAG,EAAE5B,EAAEG,EAAEgC,IAAGhC,EAAEd,EAAEgC,EAAE,KAAK,EAAEhC,IAAI,EAAE8B,EAAEnB,EAAEX,EAAEkH,EAAGlF,EAAE,EAAEhC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAEA,IAAI,GAAG,EAAEgC,EAAEZ,EAAE0B,GAAE,EAAEnC,EAAE,GAAGX,GAAGgC,EAAEhC,IAAI,GAAGc,EAAEd,EAAEc,EAAE,KAAK,EAAEkB,EAAE,EAAE,EAAEA,GAAGJ,EAAE,GAAG,EAAEA,EAAE5B,EAAE4B,GAAG5B,EAAEC,EAAEa,EAAE,KAAK,EAAEA,IAAI,EAAEH,EAAEiB,EAAEjB,EAAEI,GAAGf,GAAG,EAAEkH,EAAGjH,EAAE,EAAEa,GAAG,EAAE,GAAG,GAAGkB,GAAG,EAAElB,IAAI,GAAG,GAAGd,EAAE,GAAGe,EAAEK,EAAEQ,EAAE,EAAEb,EAAEqE,EAAGzE,EAAEW,GAAGM,EAAE5B,IAAI,EAAE,IAAI,EAAEe,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEe,EAAE,GAAG,EAAEP,GAAGD,EAAEF,GAAG,GAAG,EAAET,EAAE,EAAEmC,IAAG,EAAE/C,EAAEgB,EAAE,KAAK,EAAEhB,IAAI,EAAE+B,EAAEnB,EAAEA,EAAEV,GAAGF,GAAGwB,EAAE2F,EAAGnG,EAAE,EAAEhB,GAAG,EAAE,GAAG,GAAGwB,GAAG,EAAExB,IAAI,GAAG,GAAG,EAAE,GAAGE,EAAEmB,EAAE0B,GAAE,EAAE7C,EAAEmF,EAAGzE,EAAEwC,IAAG5B,EAAExB,IAAI,EAAEwB,IAAI,EAAEtB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEC,EAAEG,EAAE,KAAK,CAAC,EAAEJ,EAAE,EAAEmB,EAAElB,EAAEG,EAAE,KAAK,CAAC,EAAE,EAAEH,EAAEG,EAAE,GAAG,CAAC,EAAEN,EAAEG,EAAEG,EAAE,IAAI,CAAC,EAAEkB,EAAEZ,EAAE,GAAGZ,EAAE6B,EAAE,EAAE,GAAG,EAAEL,EAAExB,EAAEwB,GAAGxB,EAAEC,EAAEC,EAAE,KAAK,EAAED,IAAI,EAAEW,EAAEY,EAAEvB,EAAEkH,EAAGjH,EAAE,EAAED,GAAG,EAAE,GAAG,GAAG4B,GAAG,EAAE5B,IAAI,GAAG,EAAEC,EAAEmB,EAAEG,EAAE,EAAE6C,GAAG/D,EAAEgE,GAAGe,GAAIrF,EAAEC,EAAED,EAAE,GAAGgB,EAAEO,GAAGtB,EAAED,IAAI,EAAEC,IAAI,EAAEC,EAAE,EAAE,EAAEA,GAAG,CAAC,EAAEC,EAAEkE,GAAG,KAAK,CAAC,EAAEC,GAAGnE,EAAEG,EAAE,KAAK,CAAC,EAAEe,EAAElB,EAAEG,EAAE,KAAK,CAAC,EAAEN,EAAEG,EAAEG,EAAE,KAAK,CAAC,EAAEL,EAAEC,EAAEmF,EAAGtE,EAAEqB,EAAEH,EAAEW,GAAE,CAAC,EAAE3C,EAAE,GAAGc,EAAEuB,IAAGF,EAAEf,GAAG,GAAG,EAAErB,EAAEe,EAAEd,GAAGc,EAAEb,EAAEY,EAAE,KAAK,EAAEA,IAAI,EAAEb,EAAED,EAAEA,EAAEe,GAAGC,EAAEmG,EAAGjH,EAAE,EAAEY,GAAG,EAAE,GAAG,GAAGwB,IAAG,EAAExB,IAAI,GAAG,GAAG,EAAEC,EAAEM,EAAEpB,EAAE,EAAEe,EAAEqE,EAAGrF,EAAEyB,EAAEkC,IAAI7C,EAAEd,IAAI,EAAEgB,IAAI,EAAED,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEkB,EAAEhC,EAAEoB,EAAEI,EAAE,GAAGV,EAAE8B,GAAEG,GAAE,GAAG,EAAE/C,EAAEc,EAAEU,GAAGV,EAAEL,EAAEY,EAAE,KAAK,EAAEA,IAAI,EAAEG,EAAExB,EAAEqB,EAAE6F,EAAGzG,EAAE,EAAEY,GAAG,EAAE,GAAG,GAAGuB,IAAG,EAAEvB,IAAI,GAAG,EAAErB,EAAEoB,EAAEI,EAAE,EAAEF,EAAE,GAAGtB,EAAEgC,GAAGX,GAAGP,EAAEO,EAAEP,EAAE,KAAK,EAAEO,IAAI,EAAErB,EAAE,EAAE,EAAEA,GAAG,GAAG,EAAEwB,EAAExB,EAAES,GAAGT,EAAEc,EAAEC,EAAE,KAAK,EAAED,IAAI,EAAEQ,EAAEE,EAAEF,EAAErB,GAAGD,EAAEA,GAAGwB,EAAE0F,EAAGnG,EAAE,EAAED,GAAG,EAAE,GAAG,GAAGO,GAAG,EAAEP,IAAI,GAAG,GAAG,GAAGb,EAAEmB,EAAEX,EAAE,EAAER,EAAEmF,EAAG9D,EAAEa,GAAG1B,EAAET,IAAI,EAAEwB,IAAI,EAAEvB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEsB,EAAE,GAAGC,EAAEX,GAAGsB,EAAEf,GAAG,GAAG,EAAEE,EAAEE,EAAED,GAAGC,EAAEzB,EAAEE,EAAE,KAAK,EAAEF,IAAI,EAAEwB,EAAED,EAAEvB,GAAGc,EAAEqG,EAAGjH,EAAE,EAAEF,GAAG,EAAE,GAAG,GAAGc,GAAG,EAAEd,IAAI,GAAG,GAAGyB,EAAE,EAAEtB,EAAEG,EAAE,KAAK,CAAC,EAAEN,EAAEyB,EAAEJ,EAAEG,EAAE,EAAEV,EAAEd,IAAI,EAAEc,IAAI,EAAEW,EAAE,EAAE,EAAEA,EAAEtB,EAAEG,EAAE,KAAK,CAAC,EAAEQ,EAAEd,EAAEqF,EAAGrF,EAAEgB,EAAEF,EAAEmB,EAAE,EAAE,EAAE9B,EAAEG,EAAE,KAAK,CAAC,EAAEN,EAAEgB,EAAEK,EAAElB,EAAEG,EAAE,KAAK,CAAC,EAAEU,EAAES,EAAE,GAAGT,EAAEN,EAAEM,EAAE,GAAG,EAAEF,EAAEE,EAAEF,GAAGE,EAAEhB,EAAEC,EAAE,KAAK,EAAEA,IAAI,EAAEwB,EAAEX,EAAEb,GAAGD,EAAEmH,EAAGnH,EAAE,EAAEC,GAAG,EAAE,GAAG,GAAGS,GAAG,EAAET,IAAI,GAAG,GAAGe,EAAE,EAAEA,EAAEK,EAAEP,EAAE,EAAEA,EAAEd,EAAEA,IAAI,EAAEC,IAAI,EAAEe,EAAE,EAAE,EAAEA,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAEL,EAAEE,EAAEG,EAAE,KAAK,CAAC,EAAEN,EAAEA,GAAGsB,EAAE+D,EAAGtE,EAAE,EAAEO,EAAEmC,EAAG,CAAC,GAAG/B,EAAE,EAAEV,GAAGiB,EAAEZ,GAAGoB,GAAE,EAAE1B,GAAGL,EAAEyG,EAAGzF,GAAG,EAAE,GAAG,GAAGe,IAAG,EAAEf,IAAI,IAAIJ,EAAE,CAAC,GAAGtB,EAAE,EAAEA,EAAEqB,GAAGrB,IAAI,EAAEsB,IAAI,EAAEN,EAAE,EAAE,EAAEA,GAAG,EAAEA,EAAEqE,EAAGtE,EAAEmB,EAAEqB,GAAI7C,EAAEK,IAAI,EAAEL,IAAI,EAAEV,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEuB,EAAE,GAAGvB,EAAEiD,IAAGvB,EAAEL,GAAG,GAAG,EAAEI,EAAEzB,EAAEyB,GAAGzB,EAAEgB,EAAEC,EAAE,KAAK,EAAEA,IAAI,EAAEM,EAAEE,EAAEF,EAAED,GAAGtB,GAAGiB,EAAEkG,EAAGnG,EAAE,EAAEC,GAAG,EAAE,GAAG,GAAGgC,IAAG,EAAEhC,IAAI,GAAG,GAAGjB,EAAE,GAAGsB,EAAED,EAAEI,EAAE,EAAER,EAAEoE,EAAG9D,EAAEU,GAAGX,EAAEtB,IAAI,EAAEiB,IAAI,EAAEK,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEE,EAAE,GAAGC,EAAEf,GAAGuB,EAAEZ,GAAG,GAAG,EAAEE,EAAEE,EAAED,GAAGC,EAAEV,EAAEE,EAAE,KAAK,EAAEF,IAAI,EAAES,EAAED,EAAEE,EAAET,GAAGN,GAAGK,EAAEoG,EAAGlG,EAAE,EAAEF,GAAG,EAAE,GAAG,GAAGL,GAAG,EAAEK,IAAI,GAAG,GAAGU,EAAE,GAAGT,EAAEK,EAAEG,EAAE,EAAET,EAAEsE,EAAG5D,EAAEC,GAAGV,EAAED,IAAI,EAAEL,IAAI,EAAEM,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEQ,EAAE,GAAGC,EAAEH,GAAGI,EAAEL,GAAG,GAAG,EAAEE,EAAEE,EAAED,GAAGC,EAAEzB,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAEwB,EAAED,EAAEvB,GAAGsB,EAAE6F,EAAGpG,EAAE,EAAEf,GAAG,EAAE,GAAG,GAAGsB,GAAG,EAAEtB,IAAI,GAAG,GAAGyB,EAAE,EAAEtB,EAAEG,EAAE,KAAK,CAAC,EAAEN,EAAEyB,EAAEJ,EAAEG,EAAE,EAAEF,EAAEtB,IAAI,EAAEsB,IAAI,EAAEG,EAAE,EAAE,EAAEA,EAAEtB,EAAEG,EAAE,KAAK,CAAC,EAAEgB,EAAEnB,EAAEG,EAAE,KAAK,CAAC,EAAES,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEoB,EAAEvB,EAAEG,EAAE,KAAK,CAAC,EAAEI,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAEU,EAAEqD,GAAG/D,EAAEgE,GAAGe,EAAGpF,EAAEC,EAAEY,EAAEsB,EAAE,CAAC,EAAEjC,EAAEkE,GAAG,KAAK,CAAC,EAAEC,GAAGnE,EAAEG,EAAE,KAAK,CAAC,EAAEe,EAAEgD,GAAG/D,EAAEgE,GAAGe,EAAGrF,EAAEiB,EAAEK,EAAEW,EAAE,CAAC,EAAE9B,EAAEkE,GAAG,KAAK,CAAC,EAAEC,GAAGnE,EAAEG,EAAE,KAAK,CAAC,EAAEe,GAAM,GAAGM,EAAEA,EAAE,EAAE,KAAb,GAAkB,CAAC,IAAIrB,EAAEiH,GAAGtD,GAAGnE,EAAE,KAAK,EAAE,IAAI,EAAEiB,EAAE,EAAEb,EAAEC,GAAGH,GAAG2B,EAAEZ,GAAG,GAAGT,EAAE,IAAI,CAAC,EAAEgB,EAAEnB,GAAGc,GAAGhB,EAAEH,EAAE,KAAK,GAAG6B,EAAE,IAAI,CAAC,EAAEV,EAAEd,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEH,GAAG,CAAC,EAAEE,EAAEoB,EAAEnB,EAAEH,EAAE,GAAG,CAAC,EAAEiB,EAAEA,EAAEd,GAAGH,GAAGE,EAAE,EAAEyB,GAAGrB,EAAE,IAAI,CAAC,EAAEgB,EAAEnB,GAAGD,EAAED,EAAEC,EAAE,IAAI,CAAC,EAAEA,EAAEC,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEH,GAAG,CAAC,EAAEiB,EAAEK,EAAEnB,EAAEH,EAAE,GAAG,CAAC,EAAEE,EAAEe,EAAEd,GAAGH,GAAGE,EAAE,GAAGyB,GAAGrB,EAAE,IAAI,CAAC,EAAEgB,EAAEnB,GAAGD,EAAED,EAAEC,EAAE,IAAI,CAAC,EAAEA,EAAEC,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEH,GAAG,CAAC,EAAEiB,EAAEK,EAAEnB,EAAEH,EAAE,GAAG,CAAC,EAAEE,EAAEA,EAAEC,GAAGwB,GAAG3B,EAAE,GAAG2B,GAAGrB,EAAE,IAAI,CAAC,EAAEL,EAAEE,GAAGH,EAAEA,EAAEC,EAAE,IAAI,CAAC,EAAED,EAAEG,EAAEwB,EAAE,GAAG,CAAC,EAAExB,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEwB,GAAG,CAAC,EAAE1B,EAAEC,EAAEC,EAAEwB,EAAE,GAAG,CAAC,EAAE3B,GAAQ,GAAGe,EAAEA,EAAE,EAAE,KAAf,KAAoB,CAAC,CAAC,GAAGA,EAAEgD,GAAG,EAAE,EAAEjB,GAAEA,GAAE,EAAE,EAAE,GAAGnB,EAAExB,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAG2C,GAAEA,GAAE,EAAE,KAAK,GAAG,KAAK,CAAC,CAACrB,EAAEpB,EAAE,KAAK,CAAC,CAAC,SAAS6B,GAAE/B,EAAE,CAAC,IAAIC,EAAEC,EAAEG,EAAEC,EAAEC,EAAEG,EAAE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEtB,GAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEjC,GAAGa,GAAE5B,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQsB,EAAEiG,EAAGtH,GAAGO,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAEqB,GAAGD,EAAEZ,EAAER,EAAE,GAAG,CAAC,IAAI,GAAG,QAAQQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEoB,EAAEK,EAAEG,EAAER,EAAEC,IAAI,GAAGS,EAAER,EAAED,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEc,EAAEd,EAAEA,IAAIU,IAAI,EAAE,YAAY,EAAE,GAAG,EAAER,EAAEF,GAAG,GAAGA,GAAGC,EAAEE,IAAIA,GAAG,QAAQH,IAAI,IAAIM,EAAEI,EAAG,UAAS,KAAK,IAAI,EAAET,EAAEC,EAAEmB,GAAEpB,EAAED,IAAI,EAAEG,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAE6B,GAAE9B,EAAEa,EAAEsF,EAAGnG,EAAEC,EAAE,QAAQ,EAAE,EAAEQ,EAAEJ,EAAEE,EAAE4F,EAAGrH,GAAGM,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAEsB,GAAGF,EAAEZ,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEuB,EAAEH,GAAG,GAAGe,EAAE3B,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,GAAGqB,GAAGD,EAAEZ,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEqB,EAAE,UAAU,GAAGA,GAAGC,KAAK,IAAIF,EAAEG,EAAEH,GAAG,MAAM,GAAGA,EAAEK,EAAEL,EAAEC,IAAI,GAAGC,EAAED,EAAEM,EAAE,KAAK,EAAEP,EAAE,EAAE,EAAEA,EAAEC,EAAEkG,EAAGvE,IAAGjB,EAAEvB,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAEoB,EAAEK,EAAEL,EAAE,EAAEO,EAAEL,EAAED,EAAEC,EAAE,EAAEA,EAAED,IAAI,EAAEC,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEI,GAAGH,EAAEb,EAAER,EAAE,GAAG,CAAC,IAAI,EAAEoC,KAAI,GAAGf,EAAED,EAAEC,IAAI,GAAG,EAAED,EAAEmG,EAAGlH,EAAE,UAAU,GAAG+B,IAAGhB,GAAGG,EAAEf,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,GAAGqB,KAAK,IAAIA,GAAGE,IAAI,IAAIC,KAAK,GAAG,EAAE,OAAO,CAAC,EAAEF,EAAEG,EAAEH,EAAE,EAAEA,EAAEF,IAAI,GAAGC,EAAED,EAAEO,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEC,GAAGH,EAAEmG,EAAGjH,GAAGE,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAGqB,EAAE,EAAEA,EAAEI,EAAEH,EAAE,EAAEK,EAAEJ,EAAED,EAAEF,IAAI,EAAEG,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEA,GAAGD,EAAEZ,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEwB,EAAEJ,GAAG,EAAEW,IAAI,GAAGV,EAAEkG,EAAGhH,EAAE,UAAU,GAAGwB,GAAGX,GAAGG,EAAEf,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,GAAGqB,KAAK,IAAIA,GAAGE,IAAI,IAAIC,KAAK,GAAG,EAAE,OAAO,CAAC,EAAEJ,EAAEK,EAAEH,EAAE,EAAED,GAAGD,GAAGE,EAAEC,EAAEF,EAAEM,EAAE,KAAK,EAAEN,IAAI,EAAED,EAAE,EAAE,EAAEA,GAAGS,EAAE,EAAER,EAAEC,IAAI,GAAGC,EAAED,EAAEW,EAAE,KAAK,EAAEZ,EAAE,EAAE,EAAEA,EAAEgB,GAAEf,EAAG,UAAS,EAAEoB,GAAEpB,EAAEF,IAAIE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEO,EAAEN,GAAGH,EAAE,SAASiB,IAAG,EAAEJ,EAAEZ,IAAID,IAAI,EAAEG,IAAI,GAAGD,EAAE,GAAG,EAAED,EAAEkG,EAAGrH,EAAE,EAAE,OAAO,CAAC,EAAEkB,EAAEK,EAAEL,EAAEC,IAAI,GAAGC,EAAED,GAAGc,IAAI,EAAE,SAAS,KAAK,EAAEf,EAAE,EAAE,EAAEA,EAAEG,GAAGF,EAAEC,IAAIA,EAAEiG,EAAGvE,GAAE,EAAE,OAAO,CAAC,GAAG,EAAE3B,EAAEI,EAAEL,EAAE,EAAEC,EAAEC,IAAI,EAAEC,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAED,EAAEmG,EAAGlH,EAAE8C,GAAE,QAAQ,EAAE,EAAE9B,EAAEI,EAAEJ,EAAE,EAAEA,EAAED,IAAI,GAAGE,EAAEF,EAAEG,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEE,GAAGH,EAAEE,IAAIA,EAAEiG,EAAGhH,EAAE6C,GAAE,OAAO,CAAC,GAAG,EAAEhC,EAAEK,EAAEJ,EAAE,EAAEG,EAAED,EAAEA,EAAED,IAAI,EAAEC,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEO,GAAGL,EAAEiG,EAAGrH,EAAE,EAAE,OAAO,CAAC,IAAIkB,GAAGA,EAAEZ,EAAER,EAAE,GAAG,CAAC,IAAI,GAAG,QAAQQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG,EAAEsB,EAAEG,EAAEH,EAAEF,IAAI,EAAEO,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEK,GAAGN,EAAEkG,EAAGvE,GAAE,EAAE,OAAO,CAAC,GAAGrB,EAAE,EAAEP,EAAEK,EAAEH,EAAE,EAAEA,EAAEiG,EAAGlH,EAAE8C,GAAE,OAAO,CAAC,EAAE9B,EAAEI,GAAGJ,IAAI,EAAEM,IAAI,EAAEP,EAAE,EAAE,EAAEA,GAAG,EAAEW,EAAEV,EAAEC,IAAI,GAAGa,EAAEb,EAAEK,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAE0B,GAAE1B,EAAEA,IAAIc,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEf,GAAGA,EAAEC,IAAI,GAAG,GAAGE,EAAE,EAAED,EAAEF,GAAGC,GAAG,QAAQA,IAAI,IAAIM,EAAEQ,EAAG,UAAS,KAAK,MAAM,GAAGX,EAAEH,EAAEG,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEY,EAAEX,EAAED,IAAII,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEJ,EAAES,EAAEA,GAAG,QAAQR,IAAI,IAAIE,EAAEC,EAAG,UAAS,KAAK,GAAGH,GAAGA,GAAG,IAAIY,EAAE,EAAEG,GAAEP,GAAGR,EAAEQ,IAAI,GAAGS,GAAElB,EAAES,EAAE,KAAK,EAAER,EAAE,EAAE,EAAEA,KAAKiB,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEW,GAAEX,IAAGlB,EAAE,UAAUa,EAAEK,GAAG,UAAS,IAAI,EAAEe,EAAEhC,IAAID,IAAI,EAAEkB,KAAI,GAAGT,EAAE,GAAG,EAAET,EAAEmG,EAAGrE,GAAET,GAAE,OAAO,CAAC,EAAEnB,EAAEG,EAAEH,EAAE,EAAEA,EAAEF,IAAI,GAAGC,EAAED,EAAEI,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEkB,GAAEnB,GAAGD,EAAE,SAASG,GAAG,EAAEP,GAAEM,IAAIF,IAAI,EAAEC,IAAI,GAAGW,EAAE,GAAG,EAAEM,GAAER,GAAGV,EAAE,SAASM,GAAG,EAAEQ,EAAEN,IAAIR,IAAI,EAAEU,IAAI,GAAGI,EAAE,GAAG,EAAEN,EAAE2F,EAAGtH,EAAE,EAAE,OAAO,CAAC,EAAEoB,GAAGD,EAAEZ,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEuB,EAAEH,GAAG,GAAGM,EAAElB,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,GAAGsB,GAAGF,EAAEZ,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEqB,GAAGC,GAAGD,KAAK,EAAE,EAAEC,GAAG,EAAEA,IAAI,IAAIF,EAAEG,EAAEH,GAAG,MAAM,EAAEA,EAAEC,EAAEI,EAAE,EAAEL,EAAEE,IAAI,GAAGC,EAAED,EAAEM,EAAE,KAAK,EAAER,EAAE,EAAE,EAAEA,EAAEC,EAAEkG,EAAGjH,EAAE,EAAE,QAAQ,EAAE,EAAEc,EAAEK,EAAEL,EAAE,EAAEA,EAAEC,IAAI,GAAGC,EAAED,EAAEE,EAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEI,EAAEF,EAAED,EAAEkG,EAAGtH,EAAE,EAAE,QAAQ,EAAE,EAAEqB,EAAEG,EAAEH,EAAED,IAAI,GAAGE,EAAEF,GAAGK,IAAI,EAAE,SAAS,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,GAAGL,EAAEE,IAAIA,EAAEgG,EAAGjH,EAAE,EAAE,OAAO,CAAC,GAAG,EAAEe,EAAEI,EAAEH,EAAE,EAAEA,EAAEiG,EAAGhH,EAAE6C,GAAE,QAAQ,EAAE,EAAE/B,EAAEI,GAAGF,IAAI,EAAEG,IAAI,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAEQ,EAAER,EAAEC,IAAI,GAAGqB,GAAErB,EAAEI,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEiC,EAAEhC,EAAED,IAAIsB,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEvB,EAAEA,GAAGC,EAAEC,GAAG,IAAI,EAAEI,EAAEN,GAAGE,GAAG,QAAQA,IAAI,IAAIQ,EAAEa,GAAG,UAAS,KAAK,MAAM,GAAGX,EAAEV,EAAEE,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEwB,GAAExB,EAAEA,IAAIY,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEX,GAAGA,EAAED,GAAG,IAAIc,EAAE,EAAEY,GAAEzB,GAAGD,GAAGE,GAAG,QAAQF,IAAI,IAAII,EAAEQ,EAAG,UAAS,KAAK,IAAIM,GAAE,KAAK,EAAEhB,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEwB,GAAEzB,EAAEC,EAAEkG,EAAGnG,EAAEC,EAAE,QAAQ,EAAE,EAAED,EAAEK,EAAET,GAAE,EAAEuB,GAAEjB,EAAED,EAAEmB,GAAE,EAAEjB,EAAEF,IAAI,EAAEC,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEkB,GAAEH,GAAGf,EAAE,SAASO,GAAG,EAAEO,EAAEH,IAAI,KAAKgB,KAAI3B,IAAI,EAAEe,IAAI,GAAG,GAAG,EAAEA,EAAEoF,EAAGrH,EAAE,EAAE,OAAO,CAAC,EAAEkB,GAAGC,EAAEb,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE2B,EAAEN,GAAG,GAAGU,EAAEvB,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,GAAGsB,EAAEF,EAAEC,GAAG,GAAGC,GAAGD,GAAGD,EAAEZ,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,IAAIqB,GAAGD,IAAI,IAAIO,KAAK,EAAEL,EAAEG,GAAGH,IAAI,EAAE,GAAG,EAAEA,EAAED,IAAI,GAAGM,EAAEN,EAAEc,EAAE,KAAK,EAAEb,EAAE,EAAE,EAAEA,EAAEF,EAAEmG,EAAGlH,EAAE8C,GAAE,OAAO,CAAC,EAAE9B,EAAEI,EAAEH,EAAE,EAAEF,EAAEA,IAAI,GAAGO,EAAEP,EAAEO,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEC,EAAEiG,EAAGlH,EAAE8C,GAAE,OAAO,CAAC,EAAE9B,EAAEI,EAAEU,EAAEd,EAAEC,IAAI,GAAGkB,GAAElB,GAAGS,IAAI,EAAE,SAAS,KAAK,EAAEV,EAAE,EAAE,EAAEA,EAAEkC,EAAEjC,EAAED,IAAImB,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEpB,EAAEA,GAAGC,EAAEC,IAAI,GAAG,GAAG,EAAES,EAAEX,GAAGE,GAAG,QAAQA,IAAI,IAAIM,EAAEY,GAAG,UAAS,KAAK,MAAM,GAAGxB,GAAEM,EAAEK,EAAE,KAAK,EAAEP,EAAE,EAAE,EAAEA,EAAEoC,GAAEpC,EAAEA,IAAIJ,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEK,GAAGA,EAAED,IAAI,GAAG,GAAGc,EAAE,EAAEb,GAAGD,GAAG,QAAQA,IAAI,IAAIO,EAAEX,GAAG,UAAS,KAAK,MAAM,GAAGM,EAAEF,EAAEkB,GAAE,KAAK,EAAEjB,EAAE,EAAE,EAAEA,EAAEa,GAAGd,EAAEE,IAAIA,EAAEiG,EAAGrE,GAAET,GAAE,QAAQ,EAAE,GAAG,EAAErB,EAAEK,EAAEJ,EAAE,EAAED,EAAEE,IAAI,EAAEY,IAAI,EAAEd,EAAE,EAAE,EAAEA,EAAE2B,GAAE1B,EAAEW,GAAGV,EAAE,SAASE,GAAG,EAAEd,EAAEc,EAAEE,IAAIJ,IAAI,EAAEU,IAAI,GAAGY,GAAE,GAAG,EAAEtB,EAAEiG,EAAG1E,GAAEC,GAAE,OAAO,CAAC,EAAE1B,EAAEK,EAAEL,EAAE,EAAEA,EAAEE,IAAI,GAAGI,EAAEJ,EAAEY,EAAE,KAAK,EAAEd,EAAE,EAAE,EAAEA,EAAEE,EAAEiG,EAAGlG,EAAEG,EAAE,QAAQ,EAAE,EAAEH,EAAEI,EAAEL,EAAE,EAAEM,EAAEL,EAAEC,IAAI,GAAGY,EAAEZ,EAAEI,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAEuB,GAAExB,EAAEC,IAAIa,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEb,GAAG,QAAQD,IAAI,IAAII,EAAEU,EAAG,UAAS,KAAK,GAAGd,GAAGA,GAAG,IAAIG,EAAE,EAAEgB,GAAElB,GAAGD,EAAEC,IAAI,GAAGW,EAAEX,EAAEkB,GAAE,KAAK,EAAEnB,EAAE,EAAE,EAAEA,KAAKY,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEM,IAAG,QAAQjB,IAAI,IAAIE,EAAES,EAAG,UAAS,KAAK,GAAGX,GAAGA,GAAG,IAAIgC,EAAE,EAAE,EAAEJ,GAAEX,GAAEW,GAAE,EAAEX,GAAEA,KAAI,EAAEW,KAAI,EAAE5B,EAAE,EAAE,EAAEA,EAAEP,EAAEkB,GAAGX,EAAE,SAASE,GAAG,EAAEL,EAAEE,IAAIC,IAAI,EAAEW,IAAI,GAAGO,GAAE,GAAG,EAAEU,GAAEf,GAAGd,EAAE,SAASI,GAAG,EAAE6B,EAAE3B,IAAIN,IAAI,EAAEc,IAAI,GAAGU,GAAE,GAAG,EAAEtB,GAAGF,EAAEmG,EAAGrE,GAAET,GAAE,OAAO,CAAC,IAAIzB,IAAGK,EAAE,SAASM,GAAG,GAAG,EAAEN,EAAEI,GAAGM,IAAI,WAAWyB,KAAInC,IAAI,EAAEL,KAAI,GAAG,GAAG,GAAG,EAAEK,EAAED,IAAI,EAAEE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAED,EAAEmG,EAAG1E,GAAEC,GAAE,QAAQ,EAAE,EAAEzB,EAAEI,EAAEJ,EAAE,EAAEA,EAAED,IAAI,GAAGE,EAAEF,EAAEE,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEE,GAAGH,EAAEE,IAAIA,EAAEiG,EAAGxE,GAAErC,EAAE,OAAO,CAAC,GAAG,EAAEU,EAAEK,EAAEJ,EAAE,EAAEkB,GAAEhB,EAAEG,EAAEJ,IAAI,EAAEC,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEJ,GAAE2B,IAAGvB,EAAE,SAASU,GAAG,EAAEE,EAAEH,IAAIT,IAAI,EAAEuB,KAAI,GAAGW,EAAE,GAAG,EAAEvB,EAAEwF,EAAGvE,GAAE,EAAE,QAAQ,EAAE,EAAE5B,GAAGC,EAAEb,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEuB,EAAEF,GAAG,GAAGM,EAAEnB,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,GAAGsB,EAAEF,EAAEC,GAAGD,EAAEZ,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEqB,GAAGC,EAAEA,EAAEG,EAAEH,GAAGF,EAAE,UAAU,EAAEC,IAAI,IAAID,EAAEA,GAAG,GAAGG,KAAK,MAAM,GAAGF,EAAED,EAAEW,EAAE,KAAK,EAAET,EAAE,EAAE,EAAEA,EAAEC,GAAGH,EAAEmG,EAAGtH,EAAE,EAAE,OAAO,CAAC,GAAGoB,EAAE,EAAEA,EAAEI,EAAEH,EAAE,EAAED,EAAED,IAAI,EAAEG,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEC,EAAEiG,EAAGjH,EAAE,EAAE,QAAQ,EAAE,EAAEc,EAAEK,EAAEJ,EAAE,EAAED,EAAEE,IAAI,GAAGC,EAAED,EAAEC,EAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEC,EAAEkG,EAAGhH,EAAE6C,GAAE,OAAO,CAAC,EAAEhC,EAAEK,EAAEL,EAAE,EAAEI,EAAEF,EAAED,EAAEE,EAAE,EAAEA,EAAEF,IAAI,EAAEC,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEA,EAAEmG,EAAGrH,EAAE,EAAE,QAAQ,EAAE,EAAEmB,EAAEI,EAAEJ,EAAED,IAAI,GAAGE,EAAEF,GAAGO,IAAI,EAAE,SAAS,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEM,GAAGP,EAAEmG,EAAGvE,GAAE,EAAE,OAAO,CAAC,GAAG1B,EAAE,EAAEA,EAAEG,EAAEJ,EAAE,EAAEC,EAAEF,IAAI,EAAEO,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEF,EAAEmG,EAAGtH,EAAE,EAAE,OAAO,CAAC,EAAEoB,EAAEI,EAAEH,EAAE,EAAED,EAAED,IAAI,GAAGO,EAAEP,EAAEO,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEM,GAAGL,EAAEiG,EAAGjH,EAAE,EAAE,OAAO,CAAC,GAAGqB,EAAE,EAAEP,EAAEK,EAAEJ,EAAE,EAAEA,EAAEkG,EAAGhH,EAAE6C,GAAE,QAAQ,EAAE,EAAEhC,EAAEK,GAAGH,IAAI,EAAEK,IAAI,EAAEP,EAAE,EAAE,EAAEA,GAAG,EAAEW,EAAEX,EAAEC,IAAI,GAAGQ,EAAER,EAAEM,EAAE,KAAK,EAAEP,EAAE,EAAE,EAAEA,EAAED,EAAEE,EAAED,IAAIS,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEP,GAAGF,EAAEC,GAAG,IAAIE,EAAE,EAAEW,EAAEb,GAAGC,GAAGD,GAAG,QAAQA,IAAI,IAAIM,EAAEE,EAAG,UAAS,KAAK,MAAM,GAAGC,EAAET,EAAEG,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,KAAKQ,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEV,GAAGA,EAAEC,GAAG,IAAIW,EAAE,EAAEY,GAAExB,GAAGC,GAAGE,GAAG,QAAQF,IAAI,IAAIG,EAAEM,EAAG,UAAS,KAAK,IAAId,GAAE,KAAK,EAAEO,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEG,EAAEgB,GAAEA,GAAElB,EAAED,EAAEmG,EAAGlG,EAAED,EAAE,QAAQ,EAAE,EAAEC,EAAEI,EAAEC,EAAE,EAAEM,EAAET,EAAEA,EAAEH,EAAE,EAAEG,EAAEH,IAAI,EAAEG,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEK,GAAGN,EAAEmG,EAAGrE,GAAET,GAAE,OAAO,CAAC,IAAID,IAAGnB,EAAE,SAASO,GAAG,GAAG,EAAEP,EAAEI,GAAGU,IAAI,KAAKoB,IAAIlC,IAAI,EAAEmB,KAAI,GAAG,GAAG,GAAG,EAAEnB,EAAED,IAAI,EAAEM,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEO,GAAGR,EAAEM,IAAIA,EAAE6F,EAAG1E,GAAEC,GAAE,OAAO,CAAC,GAAG,EAAE1B,EAAEK,EAAEJ,EAAE,EAAED,EAAEM,IAAI,EAAEE,IAAI,EAAER,EAAE,EAAE,EAAEA,EAAEM,EAAE6F,EAAGxE,GAAErC,EAAE,QAAQ,EAAE,EAAEW,EAAEI,EAAEL,EAAE,EAAEC,EAAEK,IAAI,GAAGE,EAAEF,EAAEE,EAAE,KAAK,EAAEP,EAAE,EAAE,EAAEA,EAAEsB,GAAEnB,EAAEM,GAAGV,EAAE,SAASI,GAAG,EAAE,EAAEE,EAAEJ,IAAIF,IAAI,EAAEU,IAAI,GAAGI,EAAE,GAAG,EAAEZ,EAAEiG,EAAGhF,GAAEK,GAAE,OAAO,CAAC,EAAExB,EAAEK,EAAEJ,EAAE,EAAED,EAAEE,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAER,EAAE,EAAE,EAAEA,EAAEE,EAAEiG,EAAG/F,EAAEE,EAAE,QAAQ,EAAE,EAAEL,EAAEI,EAAEL,EAAE,EAAEM,EAAEL,EAAEC,IAAI,GAAGa,EAAEb,EAAEM,EAAE,KAAK,EAAEP,EAAE,EAAE,EAAEA,EAAEL,GAAEI,EAAEC,IAAIc,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEd,GAAG,QAAQD,IAAI,IAAII,EAAEW,EAAG,UAAS,KAAK,GAAGf,GAAGA,GAAG,IAAIG,EAAE,EAAES,EAAEX,GAAGD,EAAEC,IAAI,GAAGO,EAAEP,EAAEW,EAAE,KAAK,EAAEZ,EAAE,EAAE,EAAEA,KAAKQ,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEE,GAAG,QAAQT,IAAI,IAAIE,EAAEK,EAAG,UAAS,KAAK,GAAGP,GAAGA,GAAG,IAAIgC,EAAE,EAAEC,EAAEpB,EAAEJ,EAAEmB,GAAE,EAAEf,EAAEJ,IAAI,EAAEI,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEkC,EAAE3B,GAAGP,EAAE,SAASE,GAAG,EAAEiC,GAAEpC,IAAIC,IAAI,EAAEO,IAAI,GAAGI,EAAE,GAAG,EAAEiB,GAAEd,GAAGf,EAAE,SAASI,GAAG,EAAE6B,EAAE3B,IAAIN,IAAI,EAAEe,IAAI,GAAGnB,GAAE,GAAG,EAAEU,EAAE6F,EAAGrE,GAAET,GAAE,OAAO,CAAC,EAAErB,GAAGC,EAAEb,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEuB,EAAEF,GAAG,GAAGW,EAAExB,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,GAAGsB,EAAEF,EAAEC,GAAGD,EAAEZ,EAAER,EAAE,GAAG,CAAC,KAAK,GAAG,EAAEqB,GAAGC,EAAEA,EAAEG,EAAEH,GAAGF,EAAE,UAAU,EAAEC,IAAI,IAAID,EAAEA,GAAG,GAAGG,KAAK,MAAM,GAAGF,EAAED,EAAEM,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEC,GAAGH,EAAEC,IAAIA,EAAEkG,EAAG1E,GAAEC,GAAE,OAAO,CAAC,GAAG,EAAE1B,EAAEK,EAAEH,EAAE,EAAEF,EAAEC,IAAI,EAAEE,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEC,EAAEkG,EAAGxE,GAAErC,EAAE,OAAO,CAAC,EAAEU,EAAEK,EAAEL,EAAE,EAAEA,EAAEC,IAAI,GAAGC,EAAED,EAAEE,EAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEG,GAAGF,EAAEC,IAAIA,EAAEiG,EAAGhF,GAAEK,GAAE,QAAQ,EAAE,GAAG,EAAEvB,EAAEI,EAAEL,EAAE,EAAEC,EAAEC,IAAI,EAAEC,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAED,EAAEmG,EAAG5E,GAAE,EAAE,OAAO,CAAC,EAAEtB,EAAEI,EAAEJ,EAAE,EAAEc,EAAEb,EAAEF,EAAEG,EAAE,EAAEA,EAAEH,IAAI,EAAEE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEM,EAAEE,GAAGT,EAAE,SAASO,GAAG,EAAED,EAAEK,IAAIX,IAAI,EAAES,IAAI,GAAGV,EAAE,GAAG,EAAEG,EAAEiG,EAAGrH,EAAE,EAAE,OAAO,CAAC,EAAEkB,EAAEK,EAAEL,GAAGC,GAAGb,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,WAAW,GAAGsB,EAAED,EAAEC,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEI,GAAGH,EAAEC,IAAIA,EAAEiG,EAAGvE,GAAE,EAAE,QAAQ,EAAE,GAAG,EAAE3B,EAAEI,EAAEL,EAAE,EAAEC,EAAEC,IAAI,EAAEE,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAED,EAAEmG,EAAGlH,EAAE8C,GAAE,QAAQ,EAAE,EAAE9B,EAAEI,EAAEJ,EAAE,EAAEA,EAAED,IAAI,GAAGE,EAAEF,EAAEI,EAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEG,GAAGJ,EAAEmG,EAAGtH,EAAE,EAAE,OAAO,CAAC,GAAGqB,EAAE,EAAEA,EAAEG,EAAEJ,EAAE,EAAEC,EAAEF,IAAI,EAAEI,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAED,EAAEkG,EAAGjH,EAAE,EAAE,OAAO,CAAC,EAAEc,EAAEK,EAAEH,EAAE,EAAEF,EAAEC,IAAI,GAAGG,EAAEH,EAAEG,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,EAAEC,EAAEkG,EAAGhH,EAAE6C,GAAE,OAAO,CAAC,EAAEhC,EAAEK,EAAEL,EAAE,EAAEC,GAAGqB,IAAG,KAAKrB,IAAI,GAAGC,EAAED,EAAEG,EAAE,KAAK,EAAEJ,EAAE,EAAE,EAAEA,GAAG,EAAEU,EAAET,GAAGG,GAAG,QAAQkB,KAAI,GAAGL,KAAI,MAAM,GAAGA,GAAEb,EAAEF,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEqB,GAAEtB,EAAEC,IAAIgB,KAAI,EAAE,YAAY,EAAE,GAAG,EAAEb,GAAG,QAAQJ,IAAI,IAAIQ,EAAES,GAAG,UAAS,KAAK,GAAGjB,GAAGA,GAAG,IAAIM,EAAE,EAAEc,GAAEpB,GAAGC,EAAEG,EAAEG,EAAE,KAAK,EAAEH,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEJ,GAAEK,EAAEA,EAAEkG,EAAGlG,EAAED,EAAE,QAAQ,EAAE,EAAEA,EAAEK,EAAEF,EAAE,EAAEC,EAAEF,EAAED,EAAEc,EAAE,EAAEZ,EAAEF,IAAI,EAAEC,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAEA,EAAEmG,EAAG1E,GAAEC,GAAE,OAAO,CAAC,EAAEzB,EAAEI,EAAEJ,EAAED,IAAI,GAAGE,EAAEF,GAAGY,IAAI,EAAE,SAAS,KAAK,EAAEX,EAAE,EAAE,EAAEA,EAAED,EAAEmG,EAAGxE,GAAErC,EAAE,OAAO,CAAC,EAAEW,EAAEI,EAAEJ,EAAE,EAAEA,EAAED,IAAI,GAAGE,EAAEF,EAAEE,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEK,GAAGN,EAAEmG,EAAGhF,GAAEK,GAAE,OAAO,CAAC,GAAGtB,EAAE,EAAEA,EAAEG,EAAEJ,EAAE,EAAEC,EAAEF,IAAI,EAAEM,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAED,EAAEkG,EAAG5E,GAAE,EAAE,QAAQ,EAAE,EAAEvB,EAAEK,EAAEH,EAAE,EAAEF,EAAEC,IAAI,GAAGK,EAAEL,EAAEK,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEC,EAAEkG,EAAGvG,GAAEwB,GAAE,OAAO,CAAC,EAAEpB,EAAEK,EAAEL,EAAE,EAAEW,EAAEX,EAAEC,IAAI,GAAGQ,EAAER,EAAEK,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAE0B,GAAEzB,EAAED,IAAIS,IAAI,EAAE,YAAY,EAAE,GAAG,EAAET,EAAEI,EAAEA,GAAG,QAAQH,IAAI,IAAIM,EAAEE,EAAG,UAAS,KAAK,GAAGR,GAAGA,GAAG,IAAIE,EAAE,EAAEsB,GAAEtB,GAAGF,GAAGC,EAAEF,EAAEI,EAAE,KAAK,EAAEA,IAAI,EAAEH,EAAE,EAAE,EAAEA,KAAKC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEF,GAAGA,EAAEG,GAAG,IAAI8B,EAAE,EAAEH,GAAE1B,GAAGD,GAAG,QAAQA,IAAI,IAAIG,EAAEJ,EAAG,UAAS,KAAK,IAAI2B,GAAE,EAAEd,EAAEZ,IAAI,EAAEC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,EAAEF,EAAEA,EAAED,EAAEE,GAAGc,IAAGhB,EAAE,SAASO,GAAG,IAAIA,GAAG,QAAQQ,KAAI,GAAGH,IAAI,IAAI,EAAEZ,GAAGS,IAAIT,IAAI,EAAEgB,KAAI,GAAGK,GAAE,GAAG,IAAIN,IAAG,IAAI,EAAEJ,EAAEX,EAAEE,IAAI,EAAEK,IAAI,EAAEP,EAAE,EAAE,EAAEA,EAAE2B,GAAE3B,EAAEA,IAAIE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEU,EAAEb,EAAEC,GAAG,GAAGD,EAAEmG,EAAG9E,IAAG,QAAQpB,IAAI,IAAIqB,GAAEnB,EAAG,UAAS,KAAK,GAAGH,EAAE,QAAQ,EAAE,EAAEE,EAAEG,EAAEH,EAAE,EAAEA,EAAEF,IAAI,GAAGC,EAAED,EAAEI,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAE6B,GAAE9B,GAAGD,EAAE,SAASM,GAAG,EAAE0B,GAAE9B,IAAIF,IAAI,EAAEC,IAAI,GAAGwB,GAAE,GAAG,EAAEzB,EAAEmG,EAAG9E,GAAER,EAAE,OAAO,CAAC,EAAEZ,EAAEU,EAAEN,EAAE,EAAEoB,IAAGvB,EAAEF,EAAES,EAAE,IAAIT,EAAE,SAASO,GAAG,EAAEU,IAAGhB,EAAEC,IAAI,EAAEO,IAAI,EAAER,EAAE,EAAE,EAAEA,KAAKD,IAAI,EAAEE,IAAI,GAAGwB,GAAE,GAAG,EAAEzB,EAAEkG,EAAGxE,GAAErC,EAAE,OAAO,CAAC,EAAEY,EAAEG,EAAEH,GAAGF,GAAGZ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,WAAW,GAAGqB,EAAED,EAAEC,EAAE,KAAK,EAAEC,EAAE,EAAE,EAAEA,EAAEE,GAAGJ,EAAEmG,EAAGhF,GAAEK,GAAE,OAAO,CAAC,GAAGvB,EAAE,EAAEA,EAAEI,EAAEH,EAAE,EAAED,EAAED,IAAI,EAAEI,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAED,EAAEmG,EAAG5E,GAAE,EAAE,OAAO,CAAC,EAAEtB,EAAEI,EAAEJ,EAAE,EAAEA,EAAED,IAAI,GAAGE,EAAEF,EAAEI,EAAE,KAAK,EAAEH,EAAE,EAAE,EAAEA,EAAEG,GAAGJ,EAAEE,IAAIA,EAAEiG,EAAGvG,GAAEwB,GAAE,QAAQ,EAAE,GAAG,EAAEpB,EAAEK,EAAEJ,EAAE,EAAEO,EAAEJ,EAAEA,EAAEF,IAAI,EAAEE,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEW,EAAEwF,EAAGhF,GAAEK,GAAE,OAAO,CAAC,EAAExB,GAAGC,EAAEb,EAAER,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE0B,EAAEL,GAAG,GAAGyB,GAAEtC,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,MAAM,GAAGsB,EAAEF,EAAEC,GAAGD,EAAEZ,EAAER,EAAE,EAAE,CAAC,KAAK,GAAG,EAAEqB,EAAE,UAAU,GAAGA,GAAGC,KAAK,IAAIF,EAAEA,GAAG,GAAGM,KAAK,GAAGN,EAAEK,EAAEL,EAAEC,IAAI,GAAGC,EAAED,EAAEU,EAAE,KAAK,EAAEX,EAAE,EAAE,EAAEA,EAAEM,GAAGL,EAAEkG,EAAG5E,GAAE,EAAE,OAAO,CAAC,GAAGrB,EAAE,EAAEA,EAAEG,EAAEL,EAAE,EAAEE,EAAED,IAAI,EAAEK,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAED,EAAEkG,EAAGvG,GAAEwB,GAAE,OAAO,CAAC,EAAEpB,EAAEK,EAAEH,EAAE,EAAES,EAAEX,EAAEC,IAAI,GAAGS,EAAET,EAAEK,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEgB,GAAEhB,EAAEA,IAAIU,IAAI,EAAE,YAAY,EAAE,GAAG,EAAET,GAAGC,EAAEF,GAAG,IAAII,EAAE,EAAEK,EAAET,GAAGC,GAAGD,GAAG,QAAQA,IAAI,IAAIO,EAAEG,EAAG,UAAS,KAAK,MAAM,GAAGJ,EAAEN,EAAEQ,EAAE,KAAK,EAAEP,EAAE,EAAE,EAAEA,KAAKK,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEE,GAAG,QAAQR,IAAI,IAAII,EAAEE,EAAG,UAAS,KAAK,GAAGN,GAAGA,GAAG,IAAIiB,GAAE,EAAEQ,GAAEN,GAAEX,EAAEiB,GAAE,EAAEjB,EAAEA,IAAI,EAAEW,KAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEA,EAAEmG,EAAG9E,GAAER,EAAE,QAAQ,EAAE,EAAEZ,EAAEI,EAAEJ,EAAE,EAAEA,EAAED,IAAI,GAAGE,EAAEF,EAAEM,EAAE,KAAK,EAAEL,EAAE,EAAE,EAAEA,EAAE0B,GAAEzB,GAAGF,EAAE,SAASI,GAAG,EAAEoB,GAAEvB,IAAID,IAAI,EAAEE,IAAI,GAAGO,EAAE,GAAG,EAAER,EAAEkG,EAAG9E,GAAER,EAAE,OAAO,CAAC,EAAEb,EAAEW,EAAEN,EAAE,EAAEc,IAAGjB,EAAED,EAAES,EAAE,IAAIT,EAAE,SAASM,GAAG,EAAEU,IAAGjB,EAAEE,IAAI,EAAEQ,IAAI,EAAEV,EAAE,EAAE,EAAEA,KAAKC,IAAI,EAAEC,IAAI,GAAGc,GAAE,GAAG,EAAEhB,EAAEmG,EAAG5E,GAAE,EAAE,OAAO,CAAC,EAAEtB,EAAEI,EAAEJ,EAAED,IAAI,GAAGE,EAAEF,GAAG0B,KAAI,EAAE,SAAS,KAAK,EAAEzB,EAAE,EAAE,EAAEA,EAAED,EAAEmG,EAAGvG,GAAEwB,GAAE,OAAO,CAAC,EAAEnB,EAAEI,EAAEJ,EAAE,EAAEK,EAAEJ,EAAEF,EAAEE,EAAE,EAAEA,EAAEF,IAAI,EAAEE,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEG,EAAE+F,EAAGvG,GAAEwB,GAAE,OAAO,CAAC,EAAEnB,GAAGD,EAAEZ,EAAER,EAAE,EAAE,CAAC,IAAI,GAAG,QAAQQ,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEoB,EAAEK,EAAEM,EAAEX,EAAEC,IAAI,GAAGQ,EAAEL,EAAEH,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEoB,GAAEpB,EAAEA,IAAIS,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEL,GAAG,QAAQJ,IAAI,IAAIO,EAAEE,EAAG,UAAS,KAAK,GAAGT,GAAGA,GAAG,IAAIE,EAAE,EAAEA,EAAEF,EAAEI,IAAI,GAAGM,EAAEN,EAAEE,EAAE,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEgB,GAAEhB,EAAEA,IAAIU,IAAI,EAAE,YAAY,EAAE,GAAG,EAAEN,GAAG,QAAQJ,IAAI,IAAIM,EAAEI,EAAG,UAAS,KAAK,GAAGV,GAAGA,GAAG,IAAIiB,GAAE,EAAEb,EAAEA,IAAI,GAAGR,GAAEQ,EAAEe,GAAE,KAAK,EAAEnB,EAAE,EAAE,EAAEA,EAAEA,EAAEmG,EAAG9E,GAAER,EAAE,OAAO,CAAC,EAAEX,EAAEA,EAAEG,EAAE,EAAEH,GAAGD,EAAED,EAAEU,EAAE,KAAK,EAAEA,IAAI,EAAER,EAAE,EAAE,EAAEA,EAAEQ,EAAET,GAAGD,EAAE,SAASM,GAAG,EAAEA,EAAEJ,IAAIF,IAAI,EAAEC,IAAI,GAAGe,GAAE,GAAG,EAAEf,EAAEkG,EAAG9E,GAAER,EAAE,OAAO,CAAC,EAAEb,EAAEK,GAAGM,KAAKT,EAAE,SAASK,KAAK,EAAEE,IAAI,GAAGW,GAAE,GAAG,GAAG,EAAEnB,GAAGC,GAAGF,EAAEC,IAAI,GAAGgB,GAAEhB,GAAGQ,EAAEP,EAAE,GAAG,KAAK,EAAEF,EAAE,EAAE,EAAEA,IAAI,IAAIM,EAAE,EAAEN,GAAGA,GAAGC,GAAGD,GAAG,QAAQA,IAAI,GAAGiB,KAAI,MAAM,GAAGD,GAAEhB,EAAEU,EAAE,KAAK,EAAET,EAAE,EAAE,EAAEA,IAAI,IAAIG,EAAE,EAAEH,GAAGA,GAAGD,GAAGC,GAAG,QAAQA,IAAI,GAAGe,KAAI,MAAM,GAAGH,EAAEZ,EAAEL,GAAE,KAAK,EAAEI,EAAE,EAAE,EAAEA,IAAI,IAAIwB,GAAE,EAAEtB,GAAGF,GAAGC,GAAGD,GAAG,QAAQA,IAAI,GAAGa,IAAI,MAAM,GAAGT,EAAEJ,EAAE2B,GAAE,KAAK,EAAE1B,EAAE,EAAE,EAAEA,IAAI,IAAIO,EAAE,EAAER,GAAGC,GAAGC,GAAGD,GAAG,QAAQA,IAAI,GAAGG,IAAI,MAAM,GAAGK,EAAER,EAAEwB,GAAE,KAAK,EAAEvB,EAAE,EAAE,EAAEA,IAAI,IAAI8B,GAAE,EAAE/B,GAAGC,GAAGF,GAAGE,GAAG,QAAQA,IAAI,GAAGO,IAAI,MAAM,GAAGC,EAAER,EAAE6B,GAAE,KAAK,EAAE/B,EAAE,EAAE,EAAEA,IAAI,IAAIe,EAAE,EAAEA,EAAET,GAAGN,GAAG,QAAQA,IAAI,GAAGU,IAAI,IAAIoB,GAAE,EAAE9B,GAAGA,GAAGC,EAAED,IAAI,EAAEM,IAAI,EAAEL,EAAE,EAAE,EAAEA,IAAI,IAAImC,GAAE,EAAEnC,GAAGA,GAAGD,GAAGC,GAAG,QAAQA,IAAI,GAAGK,IAAI,MAAM,GAAGE,EAAEP,EAAEkC,EAAE,KAAK,EAAEnC,EAAE,EAAE,EAAEA,IAAI,IAAIc,EAAE,EAAEZ,GAAGF,GAAGC,GAAGD,GAAG,QAAQA,IAAI,GAAGQ,IAAI,MAAM,GAAGG,EAAEX,EAAEkC,EAAE,KAAK,EAAEjC,EAAE,EAAE,EAAEA,IAAI,IAAIH,EAAE,EAAEE,GAAGC,GAAGC,GAAGD,GAAG,QAAQA,IAAI,GAAGU,IAAI,MAAM,GAAGJ,EAAEN,EAAEP,EAAE,KAAK,EAAEQ,EAAE,EAAE,EAAEA,IAAI,IAAIgB,GAAE,EAAEI,IAAGR,EAAEX,GAAGF,EAAE,SAASqB,IAAG,KAAK,SAAStB,GAAGE,GAAG,QAAQA,IAAI,GAAGK,IAAI,MAAM,GAAGD,EAAEJ,EAAE,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,KAAK,GAAGM,IAAI,IAAI,EAAEN,GAAGY,IAAIX,IAAI,EAAEE,IAAI,GAAGyB,GAAE,GAAG,IAAI5B,GAAG,IAAI,EAAEY,EAAEX,GAAGD,EAAEc,IAAI,EAAEQ,KAAI,EAAEtB,EAAE,EAAE,EAAEA,IAAI,GAAGiB,IAAGjB,EAAEmG,EAAGjF,IAAG,QAAQlB,IAAI,GAAGsB,KAAI,GAAGrB,EAAE,OAAO,CAAC,IAAIA,EAAE,QAAQgB,IAAG,EAAEjB,EAAEK,EAAEF,EAAEH,EAAEC,IAAI,EAAEgB,KAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEhB,EAAE,EAAEJ,CAAC,EAAEqC,GAAEjC,EAAEJ,EAAE,EAAE,CAAC,GAAG,IAAIoB,IAAI,GAAGiB,KAAI,EAAEjB,EAAE,QAAQgB,GAAEf,EAAEkG,EAAGjF,GAAEN,EAAE,OAAO,CAAC,EAAEZ,EAAE,EAAEE,EAAEG,EAAEL,GAAGG,GAAG,KAAKH,IAAI,EAAEC,IAAI,EAAEC,EAAE,EAAE,EAAEA,GAAG,EAAEF,GAAGc,GAAG,QAAQX,IAAI,GAAGc,KAAI,MAAM,GAAGD,GAAEF,EAAEb,EAAE,KAAK,EAAED,EAAE,EAAE,EAAEA,EAAEhB,EAAEJ,EAAE,EAAE,CAAC,GAAG,KAAKoB,IAAI,GAAGgB,KAAI,GAAGf,EAAED,EAAEE,EAAEc,GAAEhC,EAAEJ,EAAE,EAAE,CAAC,GAAG,EAAEoB,IAAI,GAAGE,IAAI,EAAElB,EAAEJ,EAAE,EAAE,CAAC,EAAE,KAAK,MAAMuB,IAAI,GAAGc,KAAI,IAAIf,GAAG,EAAEC,EAAE,QAAQU,EAAEA,EAAEsF,EAAGjF,GAAEN,EAAE,OAAO,CAAC,EAAET,EAAE,EAAEH,EAAEK,EAAEW,IAAG,QAAQf,IAAI,GAAGC,IAAI,GAAGD,GAAGA,GAAG,KAAKE,EAAEA,IAAI,EAAEU,IAAI,EAAEb,EAAE,EAAE,EAAEA,GAAG,EAAEA,EAAEC,GAAGY,EAAEG,GAAEH,EAAE,KAAK,EAAEG,KAAI,EAAEf,EAAE,EAAE,EAAEA,EAAEjB,EAAEJ,EAAE,EAAE,CAAC,GAAG,GAAGoB,IAAI,GAAGa,IAAI,EAAEV,EAAEU,EAAEA,EAAE,EAAE7B,EAAEJ,EAAE,EAAE,CAAC,EAAEiC,GAAG,IAAI,QAAQX,KAAK,GAAGC,GAAG,EAAED,EAAE,QAAQE,EAAEA,EAAE+F,EAAGjF,GAAEN,EAAE,QAAQ,EAAE,EAAEV,EAAE,EAAED,EAAEI,EAAEJ,EAAEC,IAAI,EAAEE,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEY,GAAG,SAASX,EAAEF,KAAK,GAAGG,IAAI,GAAGD,GAAGF,IAAI,IAAIC,EAAE,EAAEC,GAAGE,EAAES,EAAET,EAAE,KAAK,EAAES,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAElB,EAAEJ,EAAE,EAAE,CAAC,GAAG,IAAIsB,IAAI,GAAGE,IAAI,EAAEpB,EAAEJ,EAAE,EAAE,CAAC,GAAG,EAAEsB,IAAI,GAAGE,IAAI,EAAEH,EAAE,EAAEjB,EAAEJ,EAAE,EAAE,CAAC,EAAEqB,GAAG,IAAI,QAAQE,KAAK,GAAGC,GAAG,EAAEH,EAAE,QAAQQ,EAAEN,EAAEgG,EAAGjF,GAAEN,EAAE,OAAO,CAAC,EAAEX,EAAE,EAAED,EAAEK,EAAEL,EAAEC,IAAI,EAAEE,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAES,GAAG,SAASR,EAAEC,KAAK,GAAGE,IAAI,GAAGH,EAAED,GAAGE,EAAED,GAAG,IAAI,EAAEA,GAAGE,EAAEM,EAAEN,EAAE,KAAK,EAAEM,IAAI,EAAER,EAAE,EAAE,EAAEA,EAAEjB,EAAEJ,EAAE,GAAG,CAAC,GAAG,KAAKqB,IAAI,GAAGE,IAAI,GAAGD,EAAEC,EAAEnB,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGqB,IAAI,GAAGC,IAAI,EAAEC,EAAE,EAAEnB,EAAEJ,EAAE,GAAG,CAAC,EAAEuB,GAAG,IAAI,QAAQC,KAAK,GAAGF,GAAG,EAAEC,EAAE,QAAQO,EAAEN,EAAE+F,EAAGjF,GAAEN,EAAE,QAAQ,EAAE,EAAET,EAAE,EAAEH,EAAEK,EAAEL,EAAEG,IAAI,EAAEC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEG,EAAEF,EAAEA,EAAED,GAAGC,IAAI,IAAI,EAAEA,GAAGE,GAAGgB,GAAEf,IAAIA,GAAG,QAAQD,IAAI,GAAGD,IAAI,IAAI,KAAK,EAAEE,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEjB,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIqB,IAAI,GAAGE,IAAI,EAAEC,EAAE,EAAEpB,EAAEJ,EAAE,GAAG,CAAC,EAAEwB,GAAG,IAAI,QAAQF,KAAK,GAAGC,GAAG,EAAEH,EAAEC,GAAG,GAAGC,GAAGD,GAAG,QAAQA,IAAI,GAAGE,IAAI,MAAM,GAAGC,EAAEH,GAAG,QAAQc,GAAG,KAAK,EAAEf,EAAE,EAAE,EAAEA,EAAEhB,EAAEJ,EAAE,GAAG,CAAC,GAAG,KAAKsB,IAAI,GAAGE,IAAI,GAAGpB,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEsB,IAAI,GAAGE,IAAI,EAAEH,EAAE,EAAEjB,EAAEJ,EAAE,GAAG,CAAC,EAAEqB,GAAG,IAAI,QAAQE,KAAK,GAAGC,GAAG,EAAEJ,EAAEE,GAAG,GAAGF,GAAGC,GAAG,QAAQC,IAAI,GAAGE,IAAI,MAAM,GAAGF,EAAED,GAAG,QAAQO,GAAG,KAAK,EAAER,EAAE,EAAE,EAAEA,EAAEhB,EAAEJ,EAAE,GAAG,CAAC,GAAG,KAAKoB,IAAI,GAAGE,IAAI,GAAGlB,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGoB,IAAI,GAAGE,IAAI,EAAEC,GAAGF,EAAE,QAAQU,IAAIA,GAAG,QAAQX,IAAI,GAAGE,IAAI,IAAI,EAAED,EAAED,GAAG,GAAGC,EAAEE,IAAI,EAAEQ,IAAI,EAAEV,EAAE,EAAE,EAAEA,EAAEU,EAAER,EAAEnB,EAAEJ,EAAE,GAAG,CAAC,EAAEuB,EAAEK,EAAE,EAAExB,EAAEJ,EAAE,GAAG,CAAC,EAAE4B,GAAG,IAAI,QAAQJ,KAAK,GAAGF,GAAG,EAAElB,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIqB,IAAI,GAAGE,IAAI,EAAED,EAAED,GAAG,GAAGC,GAAGC,GAAGC,GAAG,QAAQH,IAAI,GAAGE,IAAI,KAAK,QAAQI,GAAG,KAAK,EAAEH,IAAI,EAAEF,EAAE,EAAE,EAAEA,EAAElB,EAAEJ,EAAE,GAAG,CAAC,GAAG,KAAKsB,IAAI,GAAGC,IAAI,GAAGnB,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEsB,IAAI,GAAGC,IAAI,EAAEnB,EAAEJ,EAAE,GAAG,CAAC,EAAE,KAAK,MAAMqB,IAAI,GAAGU,IAAI,IAAIR,GAAG,EAAEH,EAAEE,GAAG,GAAGF,GAAGC,GAAG,QAAQC,IAAI,GAAGC,IAAI,MAAM,GAAGD,EAAED,GAAG,QAAQK,GAAG,KAAK,EAAEN,EAAE,EAAE,EAAEA,EAAEhB,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGoB,IAAI,GAAGE,IAAI,EAAEE,EAAE,EAAEpB,EAAEJ,EAAE,GAAG,CAAC,EAAEwB,GAAG,IAAI,QAAQD,KAAK,GAAGD,GAAG,EAAED,EAAED,EAAEA,IAAI,GAAGC,GAAGE,GAAGG,GAAG,QAAQL,IAAI,GAAGC,IAAI,KAAKE,EAAE,QAAQkB,IAAG,KAAK,EAAElB,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEhB,EAAEJ,EAAE,GAAG,CAAC,GAAG,OAAOqB,IAAI,GAAGE,IAAI,GAAGH,EAAEG,EAAEnB,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIqB,IAAI,GAAGD,IAAI,EAAEG,EAAE,EAAEnB,EAAEJ,EAAE,GAAG,CAAC,EAAEuB,GAAG,IAAI,QAAQD,KAAK,GAAGF,GAAG,EAAEhB,EAAEJ,EAAE,GAAG,CAAC,EAAE0B,EAAEgB,KAAI,CAAC,CAAC,SAASV,GAAEhC,EAAEC,EAAEC,EAAE,CAAC,IAAIE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEtB,GAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,IAAIjC,EAAEZ,EAAEY,EAAE,KAAK,EAAEqG,GAAGjH,EAAE,KAAK,EAAET,EAAE,IAAI,EAAEA,EAAE,EAAEK,EAAEC,GAAGK,GAAGJ,EAAEE,EAAE,KAAK,IAAIL,EAAEJ,GAAG,GAAG,IAAI,CAAC,EAAEU,EAAEJ,GAAGO,EAAEd,EAAEK,EAAE,IAAI,CAAC,EAAES,EAAEP,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEO,EAAE,GAAG,CAAC,EAAEP,EAAEK,GAAG,CAAC,EAAEN,EAAEK,EAAEJ,EAAEK,EAAE,GAAG,CAAC,EAAEE,EAAEA,EAAEP,GAAGK,GAAGN,EAAE,EAAED,GAAGG,EAAE,IAAI,CAAC,EAAEG,EAAEJ,GAAGD,EAAEN,EAAEM,EAAE,IAAI,CAAC,EAAEA,EAAEC,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEK,GAAG,CAAC,EAAED,EAAEG,EAAEP,EAAEK,EAAE,GAAG,CAAC,EAAEN,EAAEQ,EAAEP,GAAGK,GAAGN,EAAE,GAAGD,GAAGG,EAAE,IAAI,CAAC,EAAEG,EAAEJ,GAAGD,EAAEN,EAAEM,EAAE,IAAI,CAAC,EAAEA,EAAEC,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEK,GAAG,CAAC,EAAED,EAAEG,EAAEP,EAAEK,EAAE,GAAG,CAAC,EAAEN,EAAEA,EAAEC,GAAGF,GAAGO,EAAE,GAAGP,GAAGG,EAAE,IAAI,CAAC,EAAEM,EAAEP,GAAGK,EAAEZ,EAAEY,EAAE,IAAI,CAAC,EAAEA,EAAEL,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEF,GAAG,CAAC,EAAEC,EAAEQ,EAAEP,EAAEF,EAAE,GAAG,CAAC,EAAEO,GAAQ,GAAGX,EAAEA,EAAE,EAAE,KAAf,KAAoB,CAAC,IAAIG,EAAEuH,GAAGjH,EAAEF,EAAE,IAAI,EAAER,EAAE,EAAEC,EAAE,EAAES,EAAEH,GAAGF,GAAGG,EAAEP,GAAG,GAAGG,EAAE,IAAI,CAAC,EAAEE,EAAEC,GAAGK,EAAEV,EAAEM,EAAE,IAAI,CAAC,EAAEI,EAAEL,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEF,GAAG,CAAC,EAAEC,EAAEI,EAAEH,EAAEF,EAAE,GAAG,CAAC,EAAEO,EAAEA,EAAEL,GAAGF,GAAGK,EAAE,EAAEF,GAAGJ,EAAE,IAAI,CAAC,EAAEE,EAAEC,GAAGG,EAAER,EAAEQ,EAAE,IAAI,CAAC,EAAEA,EAAEH,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEG,EAAE,GAAG,CAAC,EAAEH,EAAEF,GAAG,CAAC,EAAEC,EAAEM,EAAEL,EAAEF,EAAE,GAAG,CAAC,EAAEK,EAAEE,EAAEL,GAAGF,GAAGK,EAAE,GAAGF,GAAGJ,EAAE,IAAI,CAAC,EAAEE,EAAEC,GAAGG,EAAER,EAAEQ,EAAE,IAAI,CAAC,EAAEA,EAAEH,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEG,EAAE,GAAG,CAAC,EAAEH,EAAEF,GAAG,CAAC,EAAEC,EAAEM,EAAEL,EAAEF,EAAE,GAAG,CAAC,EAAEK,EAAEA,EAAEH,GAAGC,GAAGH,EAAE,GAAGG,GAAGJ,EAAE,IAAI,CAAC,EAAEQ,EAAEL,GAAGF,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAEA,EAAEE,EAAEC,EAAE,GAAG,CAAC,EAAED,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEC,GAAG,CAAC,EAAEE,EAAEE,EAAEL,EAAEC,EAAE,GAAG,CAAC,EAAEH,GAAQ,GAAGJ,EAAEA,EAAE,EAAE,KAAf,KAAoB,CAAC,KAAKa,GAAGR,EAAEC,EAAE,IAAIC,GAAGJ,EAAE,KAAK,IAAIJ,GAAG,GAAG,IAAI,CAAC,IAAIK,EAAEE,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAEP,GAAGiB,EAAEX,EAAEC,EAAE,IAAI,CAAC,IAAIE,EAAEH,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAEI,EAAEP,IAAI,EAAES,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAES,EAAE6G,EAAGlH,GAAG,EAAE,GAAG,GAAGK,GAAG,EAAEL,IAAI,IAAIC,EAAE,CAAC,EAAEL,EAAEwB,EAAEb,EAAE,EAAEA,GAAGP,EAAEK,EAAEI,EAAE,KAAK,EAAEJ,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAEmB,GAAGN,EAAE2E,EAAGlF,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEO,EAAEL,EAAEC,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIE,EAAEH,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAEP,GAAGoB,EAAEI,IAAId,EAAEJ,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAEW,EAAET,IAAI,EAAEU,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEU,EAAE4G,EAAG7G,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,IAAII,EAAE,CAAC,EAAEb,EAAEwB,EAAEN,EAAE,EAAEyB,GAAE6C,EAAGnF,GAAGI,EAAEC,EAAES,EAAE,GAAGF,GAAGK,EAAEb,IAAI,EAAEC,IAAI,EAAEV,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEW,GAAGsC,GAAEzB,GAAG,EAAEnB,GAAGK,EAAEN,EAAEuC,GAAE,KAAK,EAAEvC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,EAAEkH,EAAG3E,GAAE,EAAEvC,GAAG,EAAE,GAAG,GAAGO,GAAG,EAAEP,IAAI,GAAG,EAAEJ,EAAEwB,EAAEnB,EAAE,EAAEgC,GAAEmD,EAAG3E,GAAGgB,EAAEzB,EAAEM,EAAE,GAAGU,GAAGgB,GAAEhC,IAAI,EAAEyB,IAAI,EAAE7B,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEkD,GAAElD,EAAEwB,EAAEC,EAAEY,GAAElB,EAAEnB,EAAEU,GAAGG,EAAEP,EAAEC,EAAE,IAAI,CAAC,IAAIH,EAAEE,EAAEC,EAAE,GAAG,CAAC,GAAG,EAAEP,GAAGe,GAAET,EAAEC,EAAE,IAAI,CAAC,IAAII,EAAEL,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAEF,EAAED,IAAI,EAAEM,IAAI,EAAEV,EAAE,EAAE,EAAEA,EAAEW,EAAE2G,EAAGlH,GAAG,EAAE,GAAG,GAAGO,GAAG,EAAEP,IAAI,IAAIS,EAAE,CAAC,EAAEb,EAAEwB,EAAEnB,EAAE,EAAEA,GAAGD,EAAEO,EAAED,EAAE,KAAK,EAAEC,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEoB,GAAGV,EAAE8E,EAAGlF,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEC,EAAEC,EAAEC,EAAE,KAAK,CAAC,EAAE,EAAE,IAAII,EAAEL,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAEP,GAAG0B,EAAEF,IAAIN,EAAEZ,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAEU,EAAEN,IAAI,EAAES,IAAI,EAAEpB,EAAE,EAAE,EAAEA,EAAEkB,EAAEoG,EAAG3G,GAAG,EAAE,GAAG,GAAGO,GAAG,EAAEP,IAAI,IAAID,EAAE,CAAC,EAAEV,EAAEwB,EAAEP,EAAE,EAAEC,EAAEsE,EAAGvE,GAAGN,EAAEO,EAAEE,EAAE,GAAGP,EAAEE,IAAGF,EAAEF,IAAI,EAAEO,IAAI,EAAElB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEK,GAAGsB,EAAEH,GAAG,EAAEP,GAAGG,EAAEhB,EAAEc,EAAE,KAAK,EAAEd,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEK,EAAEiH,EAAGpG,EAAE,EAAEd,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,GAAG,EAAEJ,EAAEwB,EAAEP,EAAE,EAAE2B,GAAE4C,GAAIpF,EAAEC,EAAEe,EAAE,GAAGV,EAAEgB,GAAGN,EAAEhB,IAAI,EAAEC,IAAI,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEa,GAAGgC,GAAErB,GAAG,EAAEnB,GAAGK,EAAEC,EAAEiC,GAAE,KAAK,EAAEjC,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEa,EAAEyG,EAAG1E,GAAE,EAAEjC,GAAG,EAAE,GAAG,GAAGE,GAAG,EAAEF,IAAI,GAAG,EAAEX,EAAEwB,EAAEnB,EAAE,EAAE4B,EAAEuD,GAAI7E,EAAEE,EAAEH,EAAE,GAAGQ,EAAES,GAAGZ,GAAEJ,IAAI,EAAEE,IAAI,EAAEb,EAAE,EAAE,EAAEA,GAAG,CAAC,EAAE8C,GAAE9C,EAAEwB,EAAEI,EAAEK,EAAEhB,EAAEjB,EAAE0B,GAAGR,EAAEZ,EAAEC,EAAE,IAAI,CAAC,IAAIF,EAAEC,EAAEC,GAAG,CAAC,GAAG,EAAEP,GAAGsC,GAAEhC,EAAEC,EAAE,IAAI,CAAC,IAAIM,EAAEP,EAAEC,EAAE,GAAG,CAAC,GAAG,EAAEG,EAAEL,IAAI,EAAEqB,IAAI,EAAE1B,EAAE,EAAE,EAAEA,EAAEa,EAAEyG,EAAGjH,GAAG,EAAE,GAAG,GAAGQ,GAAG,EAAER,IAAI,IAAIa,EAAE,CAAC,EAAElB,EAAEwB,EAAEd,EAAE,EAAEA,GAAGL,EAAEQ,EAAEa,EAAE,KAAK,EAAEb,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEuB,GAAGgB,GAAEiD,EAAGlF,EAAEC,EAAE,IAAI,CAAC,EAAEF,EAAEK,EAAEJ,EAAEC,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIM,EAAEP,GAAGN,EAAE8B,EAAEvB,EAAG,KAAI,IAAI,CAAC,GAAG,EAAEP,GAAGgD,GAAExB,IAAIE,EAAEpB,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAE2B,EAAEd,IAAI,EAAEU,IAAI,EAAEvB,EAAE,EAAE,EAAEA,EAAE0B,EAAE4F,EAAGzG,GAAG,EAAE,GAAG,GAAGa,GAAG,EAAEb,IAAI,IAAI0B,GAAE,CAAC,EAAEvC,EAAEwB,EAAEG,EAAE,EAAEW,GAAEkD,GAAI3E,EAAEa,EAAEH,EAAE,GAAGL,EAAEoB,IAAGZ,EAAEb,IAAI,EAAEa,IAAI,EAAE1B,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEU,GAAGyC,GAAE3B,GAAG,EAAEN,GAAGS,EAAEtB,EAAEiC,GAAE,KAAK,EAAEjC,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEU,EAAE4G,EAAGhF,GAAE,EAAEjC,GAAG,EAAE,GAAG,GAAGK,GAAG,EAAEL,IAAI,GAAG,EAAEL,EAAEwB,EAAEN,EAAE,EAAElB,GAAG2B,GAAGtB,EAAEK,EAAEiB,EAAE,KAAK,EAAEjB,IAAI,EAAEV,EAAE,EAAE,EAAEA,GAAGiB,EAAE,EAAEC,GAAGR,EAAEL,EAAEuB,EAAE,KAAK,EAAEvB,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEiB,EAAEqG,EAAG1F,EAAE,EAAEvB,GAAG,EAAE,GAAG,GAAGsB,GAAG,EAAEtB,IAAI,GAAG,EAAEL,EAAEwB,EAAEN,EAAE,EAAEsB,GAAEgD,GAAI9E,EAAEO,EAAEP,EAAE,GAAGe,GAAGF,EAAEb,IAAI,EAAEO,IAAI,EAAEjB,EAAE,EAAE,EAAEA,GAAGmB,EAAE,EAAE,EAAE4B,GAAE/C,EAAEwB,EAAEO,EAAE/B,EAAE4B,GAAGH,EAAEnB,EAAEC,EAAE,IAAI,CAAC,IAAIW,EAAEZ,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAEP,GAAGyC,GAAEnC,EAAEC,EAAE,IAAI,CAAC,IAAIY,EAAEb,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAEU,EAAEC,IAAI,EAAEU,IAAI,EAAE5B,EAAE,EAAE,EAAEA,EAAEmB,EAAEmG,EAAGpG,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,IAAIO,EAAE,CAAC,EAAEzB,EAAEwB,EAAEP,EAAE,EAAEA,GAAGC,EAAEC,EAAES,EAAE,KAAK,EAAET,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEgC,GAAGJ,EAAE4D,EAAGlF,EAAEC,EAAE,KAAK,CAAC,EAAEW,EAAED,EAAEX,EAAEC,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIY,EAAEb,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAEP,GAAG0C,GAAElB,IAAIU,EAAE5B,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAE4B,GAAEhB,IAAI,EAAEa,IAAI,EAAEhC,EAAE,EAAE,EAAEA,EAAEkC,EAAEoF,EAAGnG,GAAG,EAAE,GAAG,GAAGe,GAAG,EAAEf,IAAI,IAAIS,EAAE,CAAC,EAAE5B,EAAEwB,EAAEW,GAAE,EAAED,EAAEsD,EAAGxD,GAAGb,EAAEe,EAAEF,EAAE,GAAGP,EAAEgB,IAAGhB,EAAEN,IAAI,EAAEe,IAAI,EAAElC,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEiB,GAAGwB,GAAEjB,GAAG,EAAEW,IAAGH,EAAEd,EAAEgB,EAAE,KAAK,EAAEhB,IAAI,EAAElB,EAAE,EAAE,EAAEA,EAAEiB,EAAEqG,EAAGpF,EAAE,EAAEhB,GAAG,EAAE,GAAG,GAAGD,GAAG,EAAEC,IAAI,GAAG,EAAElB,EAAEwB,EAAEW,GAAE,EAAEA,GAAEqD,EAAGxD,GAAGd,EAAED,EAAEe,EAAE,GAAGJ,EAAEc,IAAGd,EAAEX,IAAI,EAAEC,IAAI,EAAElB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEyB,GAAGiB,GAAElB,GAAG,EAAEP,GAAGe,EAAEb,EAAEgB,GAAE,KAAK,EAAEhB,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEyB,EAAE6F,EAAGnF,GAAE,EAAEhB,GAAG,EAAE,GAAG,GAAGM,GAAG,EAAEN,IAAI,GAAG,EAAEnB,EAAEwB,EAAEP,EAAE,EAAEjB,GAAGyB,GAAGN,EAAEM,EAAEO,EAAE,KAAK,EAAEP,IAAI,EAAEzB,EAAE,EAAE,EAAEA,GAAG+B,EAAE,EAAEA,GAAGd,EAAEE,EAAEqB,GAAE,KAAK,EAAErB,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEgC,EAAEsF,EAAG9E,GAAE,EAAErB,GAAG,EAAE,GAAG,GAAGM,GAAG,EAAEN,IAAI,GAAG,EAAEnB,EAAEwB,EAAEO,EAAE,EAAEA,EAAEyD,EAAGzD,GAAGd,EAAEe,EAAEf,EAAE,GAAGgB,EAAEa,IAAGb,EAAEhB,IAAI,EAAEe,IAAI,EAAEhC,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEuB,GAAGuB,GAAEtB,GAAG,EAAEQ,GAAGoB,EAAE1C,EAAEqB,EAAE,KAAK,EAAErB,IAAI,EAAEV,EAAE,EAAE,EAAEA,EAAEU,GAAGa,EAAE+F,EAAGvF,EAAE,EAAErB,GAAG,EAAE,GAAG,GAAGa,GAAG,EAAEb,IAAI,GAAG,GAAG0C,EAAE,EAAEpD,EAAEwB,EAAEQ,EAAE,EAAE1B,EAAEC,GAAG,CAAC,EAAEG,EAAEV,EAAEU,IAAI,EAAEa,IAAI,EAAEvB,EAAE,EAAE,EAAEA,EAAEM,EAAEC,EAAE,GAAG,CAAC,EAAEP,EAAEU,EAAE8E,EAAG9E,EAAE8B,GAAExC,EAAE+C,GAAE,EAAE,EAAEzC,EAAEC,EAAE,KAAK,CAAC,EAAEG,EAAEV,EAAEwB,EAAElB,EAAEC,EAAE,KAAK,CAAC,EAAEP,EAAEA,EAAEA,EAAEiC,EAAE,EAAEV,GAAGiB,GAAE9B,EAAEO,EAAE,KAAK,EAAEA,IAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEU,GAAGO,EAAEqG,EAAG5G,EAAE,EAAEO,GAAG,EAAE,GAAG,GAAGgB,GAAG,EAAEhB,IAAI,GAAG,GAAGuB,GAAE,EAAExC,EAAEwB,EAAED,EAAE,EAAEjB,EAAEC,EAAE,IAAI,CAAC,EAAEG,EAAEV,EAAEU,IAAI,EAAEO,IAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEM,EAAEC,EAAE,IAAI,CAAC,EAAEP,EAAEqD,EAAE9C,EAAE+C,EAAEkC,EAAG9E,EAAEqB,EAAE/B,EAAE8C,GAAE,CAAC,EAAExC,EAAE+C,EAAE,IAAI,CAAC,EAAEC,EAAEhD,EAAEC,EAAE,IAAI,CAAC,EAAEiB,EAAExB,EAAEsB,EAAE4B,GAAE,EAAExC,GAAGO,EAAER,EAAE4B,GAAE,KAAK,EAAE5B,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAES,EAAE6G,EAAGjF,GAAE,EAAE5B,GAAG,EAAE,GAAG,GAAGa,GAAG,EAAEb,IAAI,GAAG,EAAET,EAAEwB,EAAEd,EAAE,EAAEA,EAAEV,EAAES,IAAI,GAAGQ,EAAER,EAAEQ,EAAE,KAAK,EAAEjB,EAAE,EAAE,EAAEA,EAAES,EAAET,EAAEmB,EAAEqE,EAAGrE,EAAEe,EAAET,EAAEgB,GAAE,CAAC,EAAEzC,EAAEoB,GAAGK,EAAED,GAAG,EAAEF,GAAGC,EAAEnB,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,GAAGgB,EAAEkG,EAAGnG,EAAE,EAAEf,GAAG,EAAE,GAAG,GAAGgB,GAAG,EAAEhB,IAAI,GAAG,GAAGmB,EAAE,EAAEvB,EAAEwB,EAAEF,EAAE,EAAEK,EAAE6D,EAAGnF,EAAEkC,GAAEZ,EAAEqB,GAAE,EAAE,EAAE5B,EAAEoE,EAAG7D,EAAEvB,GAAGC,EAAED,IAAI,EAAEgB,IAAI,EAAEpB,EAAE,EAAE,EAAEA,IAAIiC,EAAET,GAAG,EAAE,EAAExB,GAAGqC,GAAEb,GAAGf,EAAE,EAAEa,EAAEF,IAAI,GAAGG,EAAEH,EAAEH,EAAE,KAAK,EAAEjB,EAAE,EAAE,EAAEA,EAAES,GAAGT,EAAEuB,IAAIA,EAAE+F,EAAGrG,GAAG,EAAE,GAAG,GAAGR,GAAG,EAAEQ,IAAI,IAAIG,EAAE,CAAC,GAAG,EAAEpB,EAAEwB,EAAEF,EAAE,EAAEA,EAAEkE,EAAGzD,EAAEtB,EAAEU,EAAEM,GAAGN,EAAEV,IAAI,EAAEc,IAAI,EAAEvB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEK,GAAGkB,EAAEC,GAAG,EAAEC,GAAGc,GAAEnC,EAAEkB,EAAE,KAAK,EAAElB,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,EAAEkH,EAAGhG,EAAE,EAAElB,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,GAAG,EAAEJ,EAAEwB,EAAEC,EAAE,EAAErB,EAAEoF,GAAInF,EAAED,EAAEmC,GAAE,GAAGnB,EAAEiB,IAAGrC,EAAEI,IAAI,EAAEC,IAAI,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEM,EAAEC,EAAE,IAAI,CAAC,EAAEH,EAAEgB,EAAEI,EAAElB,EAAEC,EAAE,KAAK,CAAC,EAAEa,EAAEd,EAAEC,EAAE,GAAG,CAAC,EAAEF,EAAEC,EAAEC,EAAE,IAAI,CAAC,EAAEP,EAAEA,EAAEmB,EAAEC,EAAE,EAAEf,GAAGe,EAAEhB,EAAEK,EAAE,KAAK,EAAEA,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAES,EAAE6G,EAAGlH,EAAE,EAAEK,GAAG,EAAE,GAAG,GAAGU,GAAG,EAAEV,IAAI,GAAG,EAAET,EAAEwB,EAAEnB,EAAE,EAAEgD,EAAE9C,EAAE+C,EAAEkC,GAAIpF,EAAEK,EAAEW,EAAE,GAAGE,GAAGtB,EAAEI,IAAI,EAAEK,IAAI,EAAET,EAAE,EAAE,EAAEA,GAAGuB,EAAE,CAAC,EAAEjB,EAAE+C,EAAE,IAAI,CAAC,EAAEC,EAAEhD,EAAEC,EAAE,IAAI,CAAC,EAAEiB,EAAElB,EAAEC,EAAE,IAAI,CAAC,EAAEH,EAAEE,EAAEC,EAAE,IAAI,CAAC,EAAEP,EAAEmB,EAAEqE,EAAGvE,EAAE0B,GAAEjC,EAAEuC,GAAE,CAAC,EAAEjD,EAAE4B,GAAGN,EAAEE,GAAG,EAAEf,GAAGL,EAAEc,EAAEC,EAAE,KAAK,EAAED,IAAI,EAAElB,EAAE,EAAE,EAAEA,EAAEK,EAAEiH,EAAGnG,EAAE,EAAED,GAAG,EAAE,GAAG,GAAGU,GAAG,EAAEV,IAAI,GAAG,EAAElB,EAAEwB,EAAEf,EAAE,EAAEQ,EAAEuE,GAAIpF,EAAEC,EAAED,EAAE,GAAGwC,GAAEC,IAAGnC,EAAEN,IAAI,EAAEC,IAAI,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEoB,EAAEpB,EAAEwB,EAAEnB,EAAEL,EAAEA,EAAE0B,EAAEO,EAAE,EAAEf,GAAGT,EAAEI,EAAEc,EAAE,KAAK,EAAEd,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEa,EAAEyG,EAAG3F,EAAE,EAAEd,GAAG,EAAE,GAAG,GAAGa,GAAG,EAAEb,IAAI,GAAG,EAAEb,EAAEwB,EAAEN,EAAE,EAAElB,GAAGa,GAAGJ,EAAEI,EAAEJ,EAAE,KAAK,EAAEI,IAAI,EAAEb,EAAE,EAAE,EAAEA,GAAGK,EAAE,EAAEa,GAAGb,EAAEI,EAAEQ,EAAE,KAAK,EAAER,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAE0B,EAAE4F,EAAGrG,EAAE,EAAER,GAAG,EAAE,GAAG,GAAGI,GAAG,EAAEJ,IAAI,GAAG,EAAET,EAAEwB,EAAEN,EAAE,EAAEC,EAAEqE,GAAInF,EAAEqB,EAAErB,EAAE,GAAGc,EAAEG,GAAGJ,EAAEb,IAAI,EAAEqB,IAAI,EAAE1B,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEU,GAAGgB,EAAEF,GAAG,EAAEF,GAAGK,EAAEvB,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,GAAGM,EAAE4G,EAAGnG,EAAE,EAAEf,GAAG,EAAE,GAAG,GAAGM,GAAG,EAAEN,IAAI,GAAG,GAAGuB,EAAE,EAAE3B,EAAEwB,EAAEF,EAAE,EAAEhB,EAAEC,EAAE,IAAI,CAAC,EAAEH,EAAEJ,EAAEI,IAAI,EAAEM,IAAI,EAAEV,EAAE,EAAE,EAAEA,EAAEM,EAAEC,EAAE,IAAI,CAAC,EAAEP,EAAEI,EAAEoF,EAAGpF,EAAEa,EAAEjB,EAAEoB,EAAE,EAAE,EAAEd,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEJ,EAAEwB,EAAElB,EAAEC,EAAE,KAAK,CAAC,EAAEP,EAAEU,EAAEoB,EAAE9B,EAAEA,EAAEkB,EAAE,EAAED,GAAGK,EAAElB,EAAEC,EAAE,KAAK,EAAEA,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEK,EAAEiH,EAAGlH,EAAE,EAAEC,GAAG,EAAE,GAAG,GAAGa,GAAG,EAAEb,IAAI,GAAG,EAAEL,EAAEwB,EAAEP,EAAE,EAAEC,EAAEd,EAAEC,EAAEiB,EAAE,EAAEL,EAAEjB,EAAEI,IAAI,EAAEC,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEM,EAAEI,GAAG,CAAC,EAAEN,EAAEE,EAAEI,EAAE,GAAG,CAAC,EAAEV,EAAEa,EAAE2E,EAAG/E,EAAE6B,GAAEzB,EAAEsC,GAAE,CAAC,EAAEnD,GAAGoB,EAAEI,GAAGY,GAAE,EAAE3B,GAAGL,EAAES,EAAEgB,EAAE,KAAK,EAAEhB,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEK,EAAEiH,EAAGzF,GAAG,EAAE,GAAG,GAAGO,IAAG,EAAEP,IAAI,IAAIhB,EAAE,CAAC,EAAEb,EAAEwB,EAAEf,EAAE,EAAEC,EAAE8E,GAAIpF,EAAEC,EAAED,EAAE,GAAG+B,GAAEO,IAAGrC,EAAED,IAAI,EAAEC,IAAI,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEe,IAAGc,EAAEL,GAAG,EAAEF,GAAGb,EAAEC,EAAEC,EAAE,KAAK,EAAEA,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEW,EAAE2G,EAAG5G,EAAE,EAAEC,GAAG,EAAE,GAAG,GAAGI,IAAG,EAAEJ,IAAI,GAAG,EAAEX,EAAEwB,EAAEF,EAAE,EAAET,EAAE2E,GAAI/E,EAAEE,EAAEF,EAAE,GAAGI,EAAEO,GAAGT,EAAEF,IAAI,EAAEE,IAAI,EAAEX,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEK,GAAG+B,GAAEZ,GAAG,EAAEF,GAAGF,EAAEhB,EAAES,EAAE,KAAK,EAAET,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEK,EAAEiH,EAAGzG,EAAE,EAAET,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,GAAG,EAAEJ,EAAEwB,EAAEF,EAAE,EAAEtB,GAAGI,EAAEC,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEK,EAAED,EAAEA,GAAGM,EAAEA,EAAEV,EAAEI,EAAEoF,EAAGpF,EAAEyB,EAAE7B,EAAE,EAAE,EAAEA,EAAEW,GAAGkB,EAAEL,GAAG,EAAEF,GAAGF,EAAEhB,EAAEK,EAAE,KAAK,EAAEA,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAES,GAAGE,EAAE2G,EAAGlH,EAAE,EAAEK,GAAG,EAAE,GAAG,GAAGE,GAAG,EAAEF,IAAI,GAAG,GAAGW,EAAE,EAAEpB,EAAEwB,EAAEF,EAAE,EAAEhB,EAAEC,EAAE,IAAI,CAAC,EAAEE,EAAET,EAAES,IAAI,EAAEE,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEM,EAAEC,EAAE,IAAI,CAAC,EAAEP,EAAEM,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEE,EAAEC,EAAE,KAAK,CAAC,EAAEsB,EAAEvB,EAAEC,EAAE,IAAI,CAAC,EAAEF,EAAEC,EAAEC,EAAE,IAAI,CAAC,EAAEG,EAAE2C,EAAE9C,EAAE+C,EAAEkC,EAAGtE,EAAEC,EAAEF,EAAES,EAAE,CAAC,EAAEpB,EAAE+C,EAAE,IAAI,CAAC,EAAEC,EAAEhD,EAAEC,EAAE,IAAI,CAAC,EAAEiB,EAAE6B,EAAE9C,EAAE+C,EAAEkC,EAAG/E,EAAEI,EAAEb,EAAEoC,GAAE,CAAC,EAAE9B,EAAE+C,EAAE,IAAI,CAAC,EAAEC,EAAEhD,EAAEC,EAAE,IAAI,CAAC,EAAEiB,GAAM,GAAGzB,EAAEA,EAAE,EAAE,KAAb,GAAkB,CAAC,IAAIA,EAAE,EAAEc,GAAGR,EAAEC,EAAE,KAAKC,GAAGJ,EAAE,KAAK,IAAIJ,GAAG,GAAG,IAAI,CAAC,IAAIK,EAAEE,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAEP,GAAGiB,EAAEX,EAAEC,EAAE,KAAK,CAAC,IAAIE,EAAEH,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAEI,EAAEP,IAAI,EAAES,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAES,EAAE6G,EAAGlH,GAAG,EAAE,GAAG,GAAGK,GAAG,EAAEL,IAAI,IAAIC,EAAE,CAAC,EAAEL,EAAEwB,EAAEb,EAAE,EAAEA,GAAGP,EAAEK,EAAEI,EAAE,KAAK,EAAEJ,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAEmB,GAAGN,EAAE2E,EAAGlF,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEO,EAAEL,EAAEC,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIE,EAAEH,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAEP,GAAGoB,EAAEI,IAAId,EAAEJ,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAEW,EAAET,IAAI,EAAEU,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEU,EAAE4G,EAAG7G,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,IAAII,EAAE,CAAC,EAAEb,EAAEwB,EAAEN,EAAE,EAAEyB,GAAE6C,EAAGnF,GAAGI,EAAEC,EAAES,EAAE,GAAGF,GAAGK,EAAEb,IAAI,EAAEC,IAAI,EAAEV,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEW,GAAGqB,EAAER,GAAG,EAAEnB,GAAGK,EAAEN,EAAEuC,GAAE,KAAK,EAAEvC,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,EAAEkH,EAAG3E,GAAE,EAAEvC,GAAG,EAAE,GAAG,GAAGO,GAAG,EAAEP,IAAI,GAAG,EAAEJ,EAAEwB,EAAEnB,EAAE,EAAEgC,GAAEmD,EAAG3E,GAAGgB,EAAEzB,EAAEM,EAAE,GAAGU,GAAGgB,GAAEhC,IAAI,EAAEyB,IAAI,EAAE7B,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEiD,GAAEjD,EAAEwB,EAAEC,EAAEY,GAAElB,EAAEnB,EAAEU,GAAGG,EAAEP,EAAEC,EAAE,KAAK,CAAC,IAAIH,EAAEE,EAAEC,EAAE,GAAG,CAAC,GAAG,EAAEP,GAAGe,GAAET,EAAEC,EAAE,KAAK,CAAC,IAAII,EAAEL,EAAEC,EAAE,IAAI,CAAC,GAAG,EAAEF,EAAED,IAAI,EAAEM,IAAI,EAAEV,EAAE,EAAE,EAAEA,EAAEW,EAAE2G,EAAGlH,GAAG,EAAE,GAAG,GAAGO,GAAG,EAAEP,IAAI,IAAIS,EAAE,CAAC,EAAEb,EAAEwB,EAAEnB,EAAE,EAAEA,GAAGD,EAAEO,EAAED,EAAE,KAAK,EAAEC,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEoB,GAAGV,EAAE8E,EAAGlF,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEC,EAAEC,EAAEC,EAAE,KAAK,CAAC,EAAE,EAAE,IAAII,EAAEL,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAEP,GAAG0B,EAAEF,IAAIN,EAAEZ,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAEU,EAAEN,IAAI,EAAES,IAAI,EAAEpB,EAAE,EAAE,EAAEA,EAAEkB,EAAEoG,EAAG3G,GAAG,EAAE,GAAG,GAAGO,GAAG,EAAEP,IAAI,IAAID,EAAE,CAAC,EAAEV,EAAEwB,EAAEP,EAAE,EAAEC,EAAEsE,EAAGvE,GAAGN,EAAEO,EAAEE,EAAE,GAAGP,EAAEE,IAAGF,EAAEF,IAAI,EAAEO,IAAI,EAAElB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEK,GAAGsB,EAAEH,GAAG,EAAEP,GAAGG,EAAEhB,EAAEc,EAAE,KAAK,EAAEd,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEK,EAAEiH,EAAGpG,EAAE,EAAEd,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,GAAG,EAAEJ,EAAEwB,EAAEP,EAAE,EAAE2B,GAAE4C,GAAIpF,EAAEC,EAAEe,EAAE,GAAGV,EAAEgB,GAAGN,EAAEhB,IAAI,EAAEC,IAAI,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEa,GAAGqC,GAAE1B,GAAG,EAAEnB,GAAGK,EAAEC,EAAEiC,GAAE,KAAK,EAAEjC,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEa,EAAEyG,EAAG1E,GAAE,EAAEjC,GAAG,EAAE,GAAG,GAAGE,GAAG,EAAEF,IAAI,GAAG,EAAEX,EAAEwB,EAAEnB,EAAE,EAAE4B,EAAEuD,GAAI7E,EAAEE,EAAEH,EAAE,GAAGQ,EAAES,GAAGZ,GAAEJ,IAAI,EAAEE,IAAI,EAAEb,EAAE,EAAE,EAAEA,GAAG,CAAC,EAAE6C,GAAE7C,EAAEwB,EAAEI,EAAEK,EAAEhB,EAAEjB,EAAE0B,GAAGR,EAAEZ,EAAEC,EAAE,KAAK,CAAC,IAAIF,EAAEC,EAAEC,GAAG,CAAC,GAAG,EAAEP,GAAGsC,GAAEhC,EAAEC,EAAE,KAAK,CAAC,IAAIM,EAAEP,EAAEC,EAAE,GAAG,CAAC,GAAG,EAAEG,EAAEL,IAAI,EAAEqB,IAAI,EAAE1B,EAAE,EAAE,EAAEA,EAAEa,EAAEyG,EAAGjH,GAAG,EAAE,GAAG,GAAGQ,GAAG,EAAER,IAAI,IAAIa,EAAE,CAAC,EAAElB,EAAEwB,EAAEd,EAAE,EAAEA,GAAGL,EAAEQ,EAAEa,EAAE,KAAK,EAAEb,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEuB,GAAGgB,GAAEiD,EAAGlF,EAAEC,EAAE,KAAK,CAAC,EAAEF,EAAEK,EAAEJ,EAAEC,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIM,EAAEP,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAEP,GAAG8C,GAAEtB,IAAIE,EAAEpB,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAEoB,EAAEd,IAAI,EAAEU,IAAI,EAAEvB,EAAE,EAAE,EAAEA,EAAE0B,EAAE4F,EAAGzG,GAAG,EAAE,GAAG,GAAGa,GAAG,EAAEb,IAAI,IAAI0B,GAAE,CAAC,EAAEvC,EAAEwB,EAAEG,EAAE,EAAEW,GAAEkD,GAAI3E,EAAEa,EAAEH,EAAE,GAAGL,EAAEoB,IAAGZ,EAAEb,IAAI,EAAEa,IAAI,EAAE1B,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEU,GAAGsC,GAAExB,GAAG,EAAEN,GAAGS,EAAEtB,EAAEiC,GAAE,KAAK,EAAEjC,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEU,EAAE4G,EAAGhF,GAAE,EAAEjC,GAAG,EAAE,GAAG,GAAGK,GAAG,EAAEL,IAAI,GAAG,EAAEL,EAAEwB,EAAEN,EAAE,EAAElB,GAAG2B,GAAGtB,EAAEK,EAAEiB,EAAE,KAAK,EAAEjB,IAAI,EAAEV,EAAE,EAAE,EAAEA,GAAGiB,EAAE,EAAEC,GAAGR,EAAEL,EAAEuB,EAAE,KAAK,EAAEvB,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEiB,EAAEqG,EAAG1F,EAAE,EAAEvB,GAAG,EAAE,GAAG,GAAGsB,GAAG,EAAEtB,IAAI,GAAG,EAAEL,EAAEwB,EAAEN,EAAE,EAAEsB,GAAEgD,GAAI9E,EAAEO,EAAEP,EAAE,GAAGe,GAAGF,EAAEb,IAAI,EAAEO,IAAI,EAAEjB,EAAE,EAAE,EAAEA,GAAGmB,EAAE,EAAE,EAAEgC,GAAEnD,EAAEwB,EAAEO,EAAE/B,EAAE4B,GAAGH,EAAEnB,EAAEC,EAAE,KAAK,CAAC,IAAIW,EAAEZ,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAEP,GAAG+C,GAAEzC,EAAEC,EAAE,KAAK,CAAC,IAAIY,EAAEb,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAEU,EAAEC,IAAI,EAAEU,IAAI,EAAE5B,EAAE,EAAE,EAAEA,EAAEmB,EAAEmG,EAAGpG,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,IAAIO,EAAE,CAAC,EAAEzB,EAAEwB,EAAEP,EAAE,EAAEA,GAAGC,EAAEC,EAAES,EAAE,KAAK,EAAET,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAE8B,GAAGF,EAAE4D,EAAGlF,EAAEC,EAAE,KAAK,CAAC,EAAEW,EAAED,EAAEX,EAAEC,EAAE,KAAK,CAAC,EAAE,EAAE,IAAIY,EAAEb,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAEP,GAAGyC,GAAEjB,IAAIU,EAAE5B,EAAEC,EAAE,KAAK,CAAC,GAAG,EAAE4B,GAAEhB,IAAI,EAAEW,IAAI,EAAE9B,EAAE,EAAE,EAAEA,EAAEkC,EAAEoF,EAAGnG,GAAG,EAAE,GAAG,GAAGe,GAAG,EAAEf,IAAI,IAAIS,EAAE,CAAC,EAAE5B,EAAEwB,EAAEW,GAAE,EAAED,EAAEsD,EAAG1D,GAAGX,EAAEe,EAAEJ,EAAE,GAAGL,EAAEsB,IAAGtB,EAAEN,IAAI,EAAEe,IAAI,EAAElC,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEiB,GAAG8B,GAAEvB,GAAG,EAAEW,IAAGL,EAAEZ,EAAEgB,EAAE,KAAK,EAAEhB,IAAI,EAAElB,EAAE,EAAE,EAAEA,EAAEiB,EAAEqG,EAAGpF,EAAE,EAAEhB,GAAG,EAAE,GAAG,GAAGD,GAAG,EAAEC,IAAI,GAAG,EAAElB,EAAEwB,EAAEW,GAAE,EAAEA,GAAEqD,EAAG1D,GAAGZ,EAAED,EAAEa,EAAE,GAAGF,EAAEa,IAAGb,EAAEX,IAAI,EAAEC,IAAI,EAAElB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEyB,GAAGgB,GAAEjB,GAAG,EAAEP,GAAGa,EAAEX,EAAEgB,GAAE,KAAK,EAAEhB,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEyB,EAAE6F,EAAGnF,GAAE,EAAEhB,GAAG,EAAE,GAAG,GAAGM,GAAG,EAAEN,IAAI,GAAG,EAAEnB,EAAEwB,EAAEP,EAAE,EAAEjB,GAAGyB,GAAGN,EAAEM,EAAEK,EAAE,KAAK,EAAEL,IAAI,EAAEzB,EAAE,EAAE,EAAEA,GAAG+B,EAAE,EAAEA,GAAGd,EAAEE,EAAEqB,GAAE,KAAK,EAAErB,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAE8B,EAAEwF,EAAG9E,GAAE,EAAErB,GAAG,EAAE,GAAG,GAAGM,GAAG,EAAEN,IAAI,GAAG,EAAEnB,EAAEwB,EAAEO,EAAE,EAAEA,EAAEyD,EAAGzD,GAAGd,EAAEa,EAAEb,EAAE,GAAGgB,EAAEY,IAAGZ,EAAEhB,IAAI,EAAEa,IAAI,EAAE9B,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEuB,GAAGsB,GAAErB,GAAG,EAAEM,GAAGY,GAAEhC,EAAEqB,EAAE,KAAK,EAAErB,IAAI,EAAEV,EAAE,EAAE,EAAEA,EAAEU,GAAGa,EAAE+F,EAAGvF,EAAE,EAAErB,GAAG,EAAE,GAAG,GAAGa,GAAG,EAAEb,IAAI,GAAG,GAAGgC,GAAE,EAAE1C,EAAEwB,EAAEM,EAAE,EAAExB,EAAEC,GAAG,CAAC,EAAEG,EAAEV,EAAEU,IAAI,EAAEa,IAAI,EAAEvB,EAAE,EAAE,EAAEA,EAAEM,EAAEC,EAAE,GAAG,CAAC,EAAEP,EAAEU,EAAE8E,EAAG9E,EAAE8B,GAAExC,EAAEmD,GAAE,EAAE,EAAE7C,EAAEC,EAAE,KAAK,CAAC,EAAEG,EAAEV,EAAEwB,EAAElB,EAAEC,EAAE,KAAK,CAAC,EAAEP,EAAEA,EAAEA,EAAEiC,EAAE,EAAEV,GAAGiB,GAAE9B,EAAEO,EAAE,KAAK,EAAEA,IAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEU,GAAGO,EAAEqG,EAAG5G,EAAE,EAAEO,GAAG,EAAE,GAAG,GAAGgB,GAAG,EAAEhB,IAAI,GAAG,GAAGuB,GAAE,EAAExC,EAAEwB,EAAED,EAAE,EAAEjB,EAAEC,EAAE,KAAK,CAAC,EAAEG,EAAEV,EAAEU,IAAI,EAAEO,IAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEM,EAAEC,EAAE,KAAK,CAAC,EAAEP,EAAEqD,EAAE9C,EAAE+C,EAAEkC,EAAG9E,EAAEqB,EAAE/B,EAAE6C,GAAE,CAAC,EAAEvC,EAAE+C,EAAE,KAAK,CAAC,EAAEC,EAAEhD,EAAEC,EAAE,KAAK,CAAC,EAAEiB,EAAExB,EAAEsB,EAAE2B,GAAE,EAAEvC,GAAGO,EAAER,EAAE4B,GAAE,KAAK,EAAE5B,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAES,EAAE6G,EAAGjF,GAAE,EAAE5B,GAAG,EAAE,GAAG,GAAGa,GAAG,EAAEb,IAAI,GAAG,EAAET,EAAEwB,EAAEd,EAAE,EAAEA,EAAEV,EAAES,IAAI,GAAGQ,EAAER,EAAEQ,EAAE,KAAK,EAAEjB,EAAE,EAAE,EAAEA,EAAES,EAAET,EAAEmB,EAAEqE,EAAGrE,EAAEe,EAAET,EAAEsB,GAAE,CAAC,EAAE/C,EAAEoB,GAAGK,EAAED,GAAG,EAAEF,GAAGC,EAAEnB,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,GAAGgB,EAAEkG,EAAGnG,EAAE,EAAEf,GAAG,EAAE,GAAG,GAAGgB,GAAG,EAAEhB,IAAI,GAAG,GAAGmB,EAAE,EAAEvB,EAAEwB,EAAEF,EAAE,EAAEK,EAAE6D,EAAGnF,EAAEkC,GAAEZ,EAAEmB,GAAE,EAAE,EAAE1B,EAAEoE,EAAG7D,EAAEvB,GAAGC,EAAED,IAAI,EAAEgB,IAAI,EAAEpB,EAAE,EAAE,EAAEA,IAAIiC,EAAET,GAAG,EAAE,EAAExB,GAAGqC,GAAEb,GAAGf,EAAE,EAAEa,EAAEF,IAAI,GAAGG,EAAEH,EAAEH,EAAE,KAAK,EAAEjB,EAAE,EAAE,EAAEA,EAAES,GAAGT,EAAEuB,IAAIA,EAAE+F,EAAGrG,GAAG,EAAE,GAAG,GAAGR,GAAG,EAAEQ,IAAI,IAAIG,EAAE,CAAC,GAAG,EAAEpB,EAAEwB,EAAEF,EAAE,EAAEA,EAAEkE,EAAG1D,EAAErB,EAAEU,EAAEM,GAAGN,EAAEV,IAAI,EAAEc,IAAI,EAAEvB,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEK,GAAGkB,EAAEC,GAAG,EAAEC,GAAGc,GAAEnC,EAAEkB,EAAE,KAAK,EAAElB,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,EAAEkH,EAAGhG,EAAE,EAAElB,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,GAAG,EAAEJ,EAAEwB,EAAEC,EAAE,EAAErB,EAAEoF,GAAInF,EAAED,EAAEmC,GAAE,GAAGnB,EAAEiB,IAAGrC,EAAEI,IAAI,EAAEC,IAAI,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEM,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEgB,EAAEI,EAAElB,EAAEC,EAAE,KAAK,CAAC,EAAEa,EAAEd,EAAEC,EAAE,GAAG,CAAC,EAAEF,EAAEC,EAAEC,EAAE,IAAI,CAAC,EAAEP,EAAEA,EAAEmB,EAAEC,EAAE,EAAEf,GAAGe,EAAEhB,EAAEK,EAAE,KAAK,EAAEA,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAES,EAAE6G,EAAGlH,EAAE,EAAEK,GAAG,EAAE,GAAG,GAAGU,GAAG,EAAEV,IAAI,GAAG,EAAET,EAAEwB,EAAEnB,EAAE,EAAEgD,EAAE9C,EAAE+C,EAAEkC,GAAIpF,EAAEK,EAAEW,EAAE,GAAGE,GAAGtB,EAAEI,IAAI,EAAEK,IAAI,EAAET,EAAE,EAAE,EAAEA,GAAGuB,EAAE,CAAC,EAAEjB,EAAE+C,EAAE,KAAK,CAAC,EAAEC,EAAEhD,EAAEC,EAAE,KAAK,CAAC,EAAEiB,EAAElB,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEE,EAAEC,EAAE,KAAK,CAAC,EAAEP,EAAEmB,EAAEqE,EAAGvE,EAAE0B,GAAEjC,EAAEsB,EAAE,CAAC,EAAEhC,EAAE4B,GAAGN,EAAEE,GAAG,EAAEf,GAAGL,EAAEc,EAAEC,EAAE,KAAK,EAAED,IAAI,EAAElB,EAAE,EAAE,EAAEA,EAAEK,EAAEiH,EAAGnG,EAAE,EAAED,GAAG,EAAE,GAAG,GAAGU,GAAG,EAAEV,IAAI,GAAG,EAAElB,EAAEwB,EAAEf,EAAE,EAAEQ,EAAEuE,GAAIpF,EAAEC,EAAED,EAAE,GAAGwC,GAAEM,IAAGxC,EAAEN,IAAI,EAAEC,IAAI,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEoB,EAAEpB,EAAEwB,EAAEnB,EAAEL,EAAEA,EAAE0B,EAAEO,EAAE,EAAEf,GAAGT,EAAEI,EAAEc,EAAE,KAAK,EAAEd,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEa,EAAEyG,EAAG3F,EAAE,EAAEd,GAAG,EAAE,GAAG,GAAGa,GAAG,EAAEb,IAAI,GAAG,EAAEb,EAAEwB,EAAEN,EAAE,EAAElB,GAAGa,GAAGJ,EAAEI,EAAEJ,EAAE,KAAK,EAAEI,IAAI,EAAEb,EAAE,EAAE,EAAEA,GAAGK,EAAE,EAAEa,GAAGb,EAAEI,EAAEQ,EAAE,KAAK,EAAER,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAE0B,EAAE4F,EAAGrG,EAAE,EAAER,GAAG,EAAE,GAAG,GAAGI,GAAG,EAAEJ,IAAI,GAAG,EAAET,EAAEwB,EAAEN,EAAE,EAAEC,EAAEqE,GAAInF,EAAEqB,EAAErB,EAAE,GAAGc,EAAEG,GAAGJ,EAAEb,IAAI,EAAEqB,IAAI,EAAE1B,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEU,GAAGgB,EAAEF,GAAG,EAAEF,GAAGK,EAAEvB,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEI,GAAGM,EAAE4G,EAAGnG,EAAE,EAAEf,GAAG,EAAE,GAAG,GAAGM,GAAG,EAAEN,IAAI,GAAG,GAAGuB,EAAE,EAAE3B,EAAEwB,EAAEF,EAAE,EAAEhB,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEJ,EAAEI,IAAI,EAAEM,IAAI,EAAEV,EAAE,EAAE,EAAEA,EAAEM,EAAEC,EAAE,KAAK,CAAC,EAAEP,EAAEI,EAAEoF,EAAGpF,EAAEa,EAAEjB,EAAEoB,EAAE,EAAE,EAAEd,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEJ,EAAEwB,EAAElB,EAAEC,EAAE,KAAK,CAAC,EAAEP,EAAEA,EAAEA,EAAEkB,EAAE,EAAER,GAAGO,EAAEb,EAAEC,EAAE,KAAK,EAAEA,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEK,EAAEiH,EAAGlH,EAAE,EAAEC,GAAG,EAAE,GAAG,GAAGa,GAAG,EAAEb,IAAI,GAAG,EAAEL,EAAEwB,EAAEd,EAAE,EAAEQ,EAAEd,EAAEC,EAAEY,EAAE,EAAEA,EAAEjB,EAAEI,IAAI,EAAEC,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEM,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEE,EAAEC,EAAE,KAAK,CAAC,EAAEP,EAAEa,EAAE2E,EAAG/E,EAAE6B,GAAEzB,EAAEmC,GAAE,CAAC,EAAEhD,GAAGoB,EAAEI,GAAGY,GAAE,EAAE3B,GAAGL,EAAES,EAAEgB,EAAE,KAAK,EAAEhB,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEK,EAAEiH,EAAGzF,GAAG,EAAE,GAAG,GAAGO,IAAG,EAAEP,IAAI,IAAIhB,EAAE,CAAC,EAAEb,EAAEwB,EAAEf,EAAE,EAAEC,EAAE8E,GAAIpF,EAAEC,EAAED,EAAE,GAAG+B,GAAEM,IAAGpC,EAAED,IAAI,EAAEC,IAAI,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEe,IAAGc,EAAEL,GAAG,EAAEF,GAAGb,EAAEC,EAAEC,EAAE,KAAK,EAAEA,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEW,EAAE2G,EAAG5G,EAAE,EAAEC,GAAG,EAAE,GAAG,GAAGI,IAAG,EAAEJ,IAAI,GAAG,EAAEX,EAAEwB,EAAEF,EAAE,EAAET,EAAE2E,GAAI/E,EAAEE,EAAEF,EAAE,GAAGI,EAAEO,GAAGT,EAAEF,IAAI,EAAEE,IAAI,EAAEX,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEA,EAAEK,GAAG+B,GAAEZ,GAAG,EAAEF,GAAGF,EAAEhB,EAAES,EAAE,KAAK,EAAET,IAAI,EAAEJ,EAAE,EAAE,EAAEA,EAAEK,EAAEiH,EAAGzG,EAAE,EAAET,GAAG,EAAE,GAAG,GAAGC,GAAG,EAAED,IAAI,GAAG,EAAEJ,EAAEwB,EAAEF,EAAE,EAAEtB,GAAGI,EAAEC,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAEL,EAAE,EAAE,EAAEA,EAAEK,EAAED,EAAEA,GAAGM,EAAEA,EAAEV,EAAEI,EAAEoF,EAAGpF,EAAEyB,EAAE7B,EAAE,EAAE,EAAEA,EAAEW,GAAGkB,EAAEL,GAAG,EAAEF,GAAGF,EAAEhB,EAAEK,EAAE,KAAK,EAAEA,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAES,GAAGE,EAAE2G,EAAGlH,EAAE,EAAEK,GAAG,EAAE,GAAG,GAAGE,GAAG,EAAEF,IAAI,GAAG,GAAGW,EAAE,EAAEpB,EAAEwB,EAAEF,EAAE,EAAEhB,EAAEC,EAAE,KAAK,CAAC,EAAEE,EAAET,EAAES,IAAI,EAAEE,IAAI,EAAEX,EAAE,EAAE,EAAEA,EAAEM,EAAEC,EAAE,KAAK,CAAC,EAAEP,EAAEM,EAAEC,EAAE,KAAK,CAAC,EAAEH,EAAEE,EAAEC,EAAE,KAAK,CAAC,EAAEsB,EAAEvB,EAAEC,EAAE,KAAK,CAAC,EAAEF,EAAEC,EAAEC,EAAE,KAAK,CAAC,EAAEG,EAAE2C,EAAE9C,EAAE+C,EAAEkC,EAAGtE,EAAEC,EAAEF,EAAES,EAAE,CAAC,EAAEpB,EAAE+C,EAAE,KAAK,CAAC,EAAEC,EAAEhD,EAAEC,EAAE,KAAK,CAAC,EAAEiB,EAAE6B,EAAE9C,EAAE+C,EAAEkC,EAAG/E,EAAEI,EAAEb,EAAEoC,GAAE,CAAC,EAAE9B,EAAE+C,EAAE,KAAK,CAAC,EAAEC,EAAEhD,EAAEC,EAAE,KAAK,CAAC,EAAEiB,GAAM,GAAGzB,EAAEA,EAAE,EAAE,KAAb,GAAkB,CAAC,IAAIC,EAAE0H,GAAGzH,EAAEE,EAAE,IAAI,EAAEJ,EAAE,EAAEK,EAAEE,GAAGC,GAAGN,EAAEF,GAAG,GAAGC,EAAE,IAAI,CAAC,EAAEK,EAAEC,GAAGK,GAAGF,EAAEC,EAAEP,EAAE,KAAK,GAAGF,EAAE,IAAI,CAAC,EAAEU,EAAEL,EAAEC,EAAE,GAAG,CAAC,EAAED,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEC,GAAG,CAAC,EAAEH,EAAEC,EAAEC,EAAEC,EAAE,GAAG,CAAC,EAAEI,EAAEA,EAAEL,GAAGC,GAAGH,EAAE,EAAEH,GAAGD,EAAE,IAAI,CAAC,EAAES,EAAEH,GAAGF,EAAEA,EAAEK,EAAE,IAAI,CAAC,EAAEL,EAAEE,EAAEC,EAAE,GAAG,CAAC,EAAED,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEC,GAAG,CAAC,EAAEE,EAAEE,EAAEL,EAAEC,EAAE,GAAG,CAAC,EAAEH,EAAEK,EAAEH,GAAGC,GAAGH,EAAE,GAAGH,GAAGD,EAAE,IAAI,CAAC,EAAEW,EAAEL,GAAGF,EAAEA,EAAEM,EAAE,IAAI,CAAC,EAAEN,EAAEE,EAAEC,EAAE,GAAG,CAAC,EAAED,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEC,GAAG,CAAC,EAAEE,EAAEE,EAAEL,EAAEC,EAAE,GAAG,CAAC,EAAEH,EAAEA,EAAEE,GAAGL,GAAGM,EAAE,GAAGN,GAAGD,EAAE,IAAI,CAAC,EAAES,EAAEH,GAAGC,EAAEA,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEC,EAAE,GAAG,CAAC,EAAED,EAAEL,GAAG,CAAC,EAAEG,EAAEK,EAAEH,EAAEL,EAAE,GAAG,CAAC,EAAEM,GAAQ,GAAGR,EAAEA,EAAE,EAAE,KAAf,KAAoB,CAACsB,EAAElB,EAAE,KAAK,CAAC,CAAC,SAAS6B,GAAEjC,EAAEC,EAAEC,EAAE,CAAC,IAAIE,EAAEC,EAAEC,EAAEI,EAAE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAE,IAAId,EAAElB,EAAEkB,EAAE,IAAI,EAAEO,EAAErB,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAG8B,EAAEvB,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGgC,EAAEzB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGiC,EAAE1B,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG0B,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGkC,EAAE3B,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGmC,GAAE5B,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEE,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGU,EAAEF,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGc,EAAEN,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEV,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGmB,EAAEX,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG4B,EAAEpB,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGA,EAAEC,EAAG,KAAI,EAAEkB,EAAEZ,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEN,GAAG,CAAC,EAAE,SAASmB,EAAEb,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWK,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWK,GAAGP,EAAEE,EAAE,GAAG,IAAI,CAAC,EAAE,SAASK,EAAEP,EAAE,GAAG,CAAC,EAAE,UAAUO,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWK,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWK,GAAGF,EAAEH,EAAE,GAAG,IAAI,CAAC,EAAE,WAAWK,EAAEF,EAAE,GAAG,CAAC,EAAE,WAAWgB,EAAEO,EAAER,EAAEb,EAAEL,GAAG,CAAC,EAAEmB,EAAEd,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWiB,EAAEZ,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWgB,EAAEX,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWY,EAAEP,GAAGqB,EAAE1B,EAAE,GAAG,IAAI,CAAC,EAAE,WAAW,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAW,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWQ,EAAEH,EAAEL,EAAE,IAAI,CAAC,EAAE,UAAUI,EAAE8B,IAAGjB,EAAEZ,EAAEL,EAAE,IAAI,CAAC,EAAEkC,GAAED,GAAGjB,EAAEX,EAAEL,EAAE,IAAI,CAAC,EAAEiC,EAAEZ,EAAEI,EAAEb,EAAEP,EAAEL,EAAE,IAAI,CAAC,EAAEqB,EAAEW,GAAG,EAAE3B,GAAGoB,EAAEzB,EAAE,GAAG,IAAI,CAAC,EAAEgC,EAAED,GAAG,EAAE1B,EAAEL,EAAE,IAAI,CAAC,EAAE+B,EAAET,EAAEO,EAAErB,EAAEH,EAAEL,EAAE,GAAG,CAAC,EAAEsB,EAAEC,EAAEI,EAAEvB,EAAEC,EAAEL,EAAE,GAAG,CAAC,EAAEuB,EAAEM,EAAE,EAAEF,EAAEtB,EAAEqB,EAAE,IAAI,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEtB,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEtB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEtB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEtB,EAAEqB,EAAE,IAAI,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEtB,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEyB,EAAEqF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,IAAI,CAAC,EAAEF,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAEF,EAAEA,EAAEnB,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEyB,EAAEA,EAAEnB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAE0B,EAAEA,EAAEnB,EAAEoB,EAAE,IAAI,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEqB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEqB,EAAEA,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,IAAI,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAE0B,EAAEvB,EAAEH,EAAE,KAAK,CAAC,EAAE4B,EAAEzB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAE,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAE8B,EAAEtB,EAAEH,EAAEL,EAAE,GAAG,CAAC,EAAE4B,EAAExB,EAAEC,EAAEL,GAAG,CAAC,EAAEwB,EAAEN,EAAEM,EAAEnB,EAAEqB,EAAE,IAAI,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEqB,EAAE,IAAI,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,IAAI,CAAC,EAAEF,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAEF,EAAEA,EAAEnB,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEyB,EAAEA,EAAEnB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAE0B,EAAEA,EAAEnB,EAAEoB,EAAE,IAAI,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEqB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEqB,EAAEA,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,IAAI,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAE0B,EAAEvB,EAAEH,EAAE,KAAK,CAAC,EAAE4B,EAAEzB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEe,EAAEZ,EAAEL,EAAE,GAAG,CAAC,EAAE8B,EAAEd,EAAEX,EAAEL,EAAE,GAAG,CAAC,EAAE4B,EAAEhB,EAAEP,EAAEL,GAAG,CAAC,EAAEwB,EAAE,EAAEA,EAAEnB,EAAEqB,EAAE,IAAI,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEqB,EAAE,IAAI,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,IAAI,CAAC,EAAEF,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAEF,EAAEA,EAAEnB,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEyB,EAAEA,EAAEnB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAE0B,EAAEA,EAAEnB,EAAEoB,EAAE,IAAI,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEqB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEqB,EAAEA,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,IAAI,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAE0B,EAAEvB,EAAEH,EAAE,KAAK,CAAC,EAAE4B,EAAEzB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAE+B,EAAE1B,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAE8B,EAAER,EAAEjB,EAAEL,EAAE,GAAG,CAAC,EAAE4B,EAAEL,EAAElB,EAAEL,GAAG,CAAC,EAAEwB,EAAEL,EAAEK,EAAEnB,EAAEqB,EAAE,IAAI,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEqB,EAAE,IAAI,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,IAAI,CAAC,EAAEF,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,GAAG,CAAC,EAAErB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEqB,EAAE,GAAG,CAAC,EAAEF,EAAEA,EAAEnB,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEyB,EAAEA,EAAEnB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAE0B,EAAEA,EAAEnB,EAAEoB,EAAE,IAAI,CAAC,EAAEpB,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEqB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEqB,EAAEA,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,IAAI,CAAC,EAAEpB,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,GAAG,CAAC,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEoB,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,GAAG,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,GAAG,CAAC,EAAEsB,EAAEwF,GAAGrF,EAAEzB,EAAE,GAAG,EAAEA,CAAC,EAAEyB,EAAEtB,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAE0B,EAAEvB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEkC,GAAE7B,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAE4B,EAAEK,EAAE5B,EAAEL,EAAE,GAAG,CAAC,EAAEwB,EAAEH,EAAEhB,EAAEL,GAAG,CAAC,EAAE2B,EAAEK,GAAM,GAAGH,EAAEA,EAAE,EAAE,KAAb,GAAkB,CAACT,EAAElB,EAAE,IAAI,CAAC,CAAC,SAAS8B,GAAElC,EAAEC,EAAE,CAAC,IAAIC,EAAEG,EAAEK,EAAEC,EAAEC,EAAEE,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAE,EAAEG,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEE,EAAE,EAAEtB,EAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEG,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAE,IAAIjC,EAAEpB,EAAEoB,EAAE,GAAG,EAAEN,EAAER,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGqC,EAAE9B,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,EAAElC,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,IAAI,EAAElC,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,IAAI,GAAGlC,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,IAAI,GAAGlC,EAAEJ,EAAE,GAAG,CAAC,EAAEgB,EAAEZ,EAAEJ,EAAE,GAAG,CAAC,EAAEgB,IAAI,EAAEZ,EAAEJ,EAAE,GAAG,CAAC,EAAEgB,IAAI,GAAGZ,EAAEJ,EAAE,GAAG,CAAC,EAAEgB,IAAI,GAAGA,EAAER,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGqC,EAAE9B,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGG,EAAE,EAAEJ,CAAC,EAAEsC,EAAElC,EAAEJ,EAAE,EAAE,CAAC,EAAEsC,IAAI,EAAElC,EAAEJ,EAAE,EAAE,CAAC,EAAEsC,IAAI,GAAGlC,EAAEJ,EAAE,EAAE,CAAC,EAAEsC,IAAI,GAAGlC,EAAEJ,EAAE,EAAE,CAAC,EAAEgB,EAAEZ,EAAEJ,EAAE,EAAE,CAAC,EAAEgB,IAAI,EAAEZ,EAAEJ,EAAE,EAAE,CAAC,EAAEgB,IAAI,GAAGZ,EAAEJ,EAAE,EAAE,CAAC,EAAEgB,IAAI,GAAGA,EAAER,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGqC,EAAE9B,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,EAAElC,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,IAAI,EAAElC,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,IAAI,GAAGlC,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,IAAI,GAAGlC,EAAEJ,EAAE,GAAG,CAAC,EAAEgB,EAAEZ,EAAEJ,EAAE,GAAG,CAAC,EAAEgB,IAAI,EAAEZ,EAAEJ,EAAE,GAAG,CAAC,EAAEgB,IAAI,GAAGZ,EAAEJ,EAAE,GAAG,CAAC,EAAEgB,IAAI,GAAGsB,EAAE9B,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGA,EAAEO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,EAAElC,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,IAAI,EAAElC,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,IAAI,GAAGlC,EAAEJ,EAAE,GAAG,CAAC,EAAEsC,IAAI,GAAGrC,EAAEO,EAAER,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAIC,EAAE6E,GAAG5E,EAAEF,CAAC,EAAEqB,EAAE,IAAIpB,EAAEqB,EAAErB,EAAEqB,EAAE,IAAI,EAAEuB,GAAEP,EAAErC,EAAE,IAAI,EAAEC,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAEqG,GAAGhE,EAAEA,CAAC,EAAEtB,EAAEuG,EAAGjF,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAG,GAAG,OAAO,CAAC,EAAEA,EAAEb,EAAEiB,IAAGM,GAAEhC,EAAE,SAAS,KAAK,EAAE,SAASsB,EAAE,EAAE,EAAEA,EAAEM,GAAE5B,GAAG,UAAUgC,IAAG,EAAEZ,EAAEmF,EAAGjF,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAG,GAAG,OAAO,CAAC,EAAEtB,EAAES,EAAEc,GAAEgF,EAAGjF,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAG,GAAG,OAAO,CAAC,EAAEA,EAAEb,EAAEkB,GAAEP,EAAEA,GAAGA,GAAGE,GAAGG,GAAEF,GAAE,SAAS,KAAK,EAAE,SAASD,EAAE,EAAE,EAAEA,IAAI,IAAItB,EAAE,EAAEsB,GAAGA,GAAG,SAASA,IAAI,EAAEG,KAAI,MAAM,GAAGD,GAAEG,GAAEL,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAE/B,IAAI,UAAUiC,GAAGtB,EAAEwB,GAAE,SAAS,KAAK,EAAE,SAASF,EAAE,EAAE,EAAEA,KAAK,EAAEtB,IAAI,IAAI4B,GAAE,EAAErC,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAEI,EAAEiD,GAAEd,IAAG,UAAUxB,GAAG,EAAET,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAEqD,GAAEV,GAAEL,IAAG,UAAUE,IAAG,EAAEzB,EAAEuG,EAAGjF,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAG,GAAG,OAAO,CAAC,EAAEA,EAAEb,EAAEgB,GAAE8E,EAAGnF,EAAE7B,EAAEN,EAAE,KAAK,CAAC,EAAEmC,GAAG,GAAG,OAAO,CAAC,EAAEA,EAAEX,EAAEkB,GAAE3B,EAAEsB,EAAEA,GAAGtB,GAAGoB,GAAGI,GAAEC,GAAE,SAAS,KAAK,EAAE,SAASL,EAAE,EAAE,EAAEA,IAAI,IAAI,EAAEE,GAAGF,EAAEO,IAAGJ,IAAG,SAASH,IAAI,EAAEI,KAAI,IAAI,KAAK,EAAED,KAAI,EAAED,EAAE,EAAE,EAAEA,EAAE5B,IAAI,UAAU4B,GAAGtB,EAAEoB,EAAE,SAAS,KAAK,EAAE,SAASE,EAAE,EAAE,EAAEA,KAAK,EAAEtB,IAAI,IAAI4B,GAAE,EAAErC,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAES,EAAEC,EAAEyB,GAAG,UAAUpB,GAAG,EAAET,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAEU,EAAEiC,GAAEH,IAAG,UAAUD,IAAG,EAAEJ,EAAEmF,EAAGjF,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAG,GAAG,OAAO,CAAC,EAAEA,EAAEb,EAAEgB,GAAE8E,EAAGvG,EAAET,EAAEN,EAAE,KAAK,CAAC,EAAEe,GAAG,GAAG,OAAO,CAAC,EAAEA,EAAES,EAAEkB,GAAEP,EAAEE,GAAGF,GAAGpB,GAAGwB,GAAEC,GAAE,SAAS,KAAK,EAAE,SAASzB,EAAE,EAAE,EAAEA,IAAI,IAAIsB,EAAE,EAAEF,EAAEE,GAAGtB,EAAE2B,IAAGJ,IAAG,SAASvB,IAAI,EAAEwB,KAAI,IAAI,KAAK,EAAED,KAAI,EAAED,EAAE,EAAE,EAAEA,EAAE1B,IAAI,UAAUwB,GAAGG,GAAEvB,EAAE,SAAS,KAAK,EAAE,SAASoB,EAAE,EAAE,EAAEA,KAAK,EAAEG,KAAI,IAAIK,GAAE,EAAErC,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAEW,EAAEE,EAAEE,GAAG,UAAUuB,IAAG,EAAEhC,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAEa,EAAE6B,GAAEF,IAAG,UAAUD,IAAG,EAAEF,EAAEiF,EAAGjF,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAG,GAAG,OAAO,CAAC,EAAEM,GAAEnB,EAAEc,GAAEgF,EAAGvG,EAAET,EAAEN,EAAE,KAAK,CAAC,EAAEe,GAAG,GAAG,OAAO,CAAC,EAAEoB,EAAEX,EAAET,GAAG,UAAUoB,GAAGK,GAAEF,GAAE,SAAS,KAAK,EAAE,SAASH,EAAE,EAAE,EAAEA,KAAK,EAAEK,KAAI,GAAGL,GAAGA,GAAG,IAAIQ,GAAE,EAAE5B,EAAEA,IAAI,GAAGwB,GAAExB,EAAEsB,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAElB,IAAI,UAAUF,GAAGsB,EAAEE,GAAE,SAAS,KAAK,EAAE,SAASxB,EAAE,EAAE,EAAEA,KAAK,EAAEsB,IAAI,IAAIK,GAAE,EAAEpC,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAEiB,EAAEC,EAAEqB,IAAG,UAAUF,GAAG,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAEkB,EAAEqB,GAAED,IAAG,UAAUE,IAAG,EAAEzB,EAAEuG,GAAI,SAAS7E,KAAI,EAAEM,KAAI,GAAGN,IAAG,GAAG,GAAG,CAAC,EAAEJ,EAAEb,EAAEc,GAAEvB,EAAEA,EAAEuG,EAAGnF,EAAE7B,EAAEN,EAAE,KAAK,CAAC,EAAEmC,GAAG,GAAG,OAAO,CAAC,EAAEE,EAAEb,EAAEa,EAAE,EAAEtB,GAAGoB,EAAEG,GAAEvB,EAAE,KAAK,EAAEA,IAAI,EAAEsB,EAAE,EAAE,EAAEA,EAAElB,IAAI,UAAUJ,GAAGsB,EAAEF,EAAE,SAAS,KAAK,EAAE,SAASpB,EAAE,EAAE,EAAEA,KAAK,EAAEsB,IAAI,IAAIE,GAAE,EAAEjC,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAEmB,EAAE2B,GAAEX,GAAG,UAAUE,GAAG,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAE8C,GAAED,GAAE9B,EAAEf,EAAE,IAAI,EAAEqC,EAAErC,EAAE,IAAI,CAAC,EAAEoC,GAAEpC,EAAE,IAAI,EAAEqC,EAAEtB,CAAC,EAAEO,EAAEhB,EAAEN,EAAE,KAAK,CAAC,EAAEuB,EAAEjB,EAAEN,EAAE,KAAK,CAAC,EAAEgD,GAAE1C,EAAEN,EAAE,KAAK,CAAC,EAAE,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAE0B,EAAEpB,EAAEN,EAAE,KAAK,CAAC,EAAEiD,GAAE3C,EAAEN,EAAE,KAAK,CAAC,EAAEkD,GAAE5C,EAAEN,EAAE,KAAK,CAAC,EAAE2B,EAAErB,EAAEN,EAAE,KAAK,CAAC,EAAE4B,EAAEtB,EAAEN,EAAE,KAAK,CAAC,EAAEmD,GAAE7C,EAAEN,EAAE,KAAK,CAAC,EAAEoD,GAAE9C,EAAEN,EAAE,KAAK,CAAC,EAAE6B,EAAEvB,EAAEN,EAAE,KAAK,CAAC,EAAE8B,EAAExB,EAAEN,EAAE,KAAK,CAAC,EAAE0C,GAAEpC,EAAEN,EAAE,KAAK,CAAC,EAAE2C,GAAErC,EAAEN,EAAE,KAAK,CAAC,EAAE+B,EAAEzB,EAAEN,EAAE,KAAK,CAAC,EAAEgC,EAAE1B,EAAEN,EAAE,KAAK,CAAC,EAAEe,EAAEuG,EAAGjF,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAG,GAAG,OAAO,CAAC,EAAEA,EAAEb,EAAEiB,IAAGM,GAAEhC,EAAE,SAAS,KAAK,EAAE,SAASsB,EAAE,EAAE,EAAEA,EAAEJ,EAAElB,GAAG,UAAUgC,IAAG,EAAEV,EAAEiF,EAAGjF,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAG,GAAG,OAAO,CAAC,EAAEH,EAAEV,EAAEc,GAAEgF,EAAGvG,EAAET,EAAEN,EAAE,KAAK,CAAC,EAAEe,GAAG,GAAG,OAAO,CAAC,EAAEoB,EAAEX,EAAET,EAAEsB,EAAEA,GAAG,UAAUF,GAAGK,GAAEF,GAAE,SAAS,KAAK,EAAE,SAASH,EAAE,EAAE,EAAEA,KAAK,EAAEK,KAAI,GAAGL,GAAGA,GAAG,IAAID,EAAE,EAAEG,EAAEA,IAAI,GAAGE,GAAExB,EAAEsB,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEA,IAAI,UAAUE,GAAGtB,EAAEwB,GAAE,SAAS,KAAK,EAAE,SAASF,EAAE,EAAE,EAAEA,KAAK,EAAEtB,IAAI,IAAIkB,EAAE,EAAE3B,EAAEN,EAAE,KAAK,CAAC,EAAEmC,EAAE7B,EAAEN,EAAE,KAAK,CAAC,EAAEmC,GAAGb,EAAElB,EAAE,GAAGiC,EAAEE,IAAG,UAAUxB,GAAG,EAAET,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAGL,EAAEqB,GAAE,GAAGA,GAAEf,IAAG,UAAUE,IAAG,EAAEH,EAAEiF,EAAG3E,GAAEA,IAAG,GAAG,OAAO,CAAC,EAAEL,GAAEd,EAAEgB,GAAE8E,EAAG5E,GAAEA,IAAG,GAAG,OAAO,CAAC,EAAE3B,EAAES,EAAEkB,GAAEL,EAAEA,GAAGA,GAAGtB,GAAGwB,GAAEC,GAAE,SAAS,KAAK,EAAE,SAASzB,EAAE,EAAE,EAAEA,IAAI,IAAIuB,GAAE,EAAEH,EAAEE,GAAGF,GAAG,SAASpB,IAAI,EAAEwB,KAAI,MAAM,GAAGxB,EAAE2B,GAAEP,EAAE,KAAK,EAAEE,EAAE,EAAE,EAAEA,EAAEC,KAAI,UAAUH,GAAGG,GAAEvB,EAAE,SAAS,KAAK,EAAE,SAASoB,EAAE,EAAE,EAAEA,KAAK,GAAGE,EAAEC,MAAK,IAAIe,GAAE,EAAE/C,EAAEN,EAAE,KAAK,CAAC,EAAEsC,GAAEhC,EAAEN,EAAE,KAAK,CAAC,EAAEsC,IAAGP,EAAEtB,EAAE,GAAG4B,EAAEtB,GAAG,UAAUsB,GAAG,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAGP,EAAEpB,EAAE,GAAGiC,GAAEH,IAAG,UAAUD,IAAG,EAAEJ,EAAEmF,EAAGlE,GAAEA,IAAG,GAAG,OAAO,CAAC,EAAErC,EAAES,EAAEc,GAAEgF,EAAGnE,GAAEA,IAAG,GAAG,OAAO,CAAC,EAAEd,EAAEb,EAAEkB,GAAEP,EAAEA,GAAGA,GAAGE,GAAGG,GAAEF,GAAE,SAAS,KAAK,EAAE,SAASD,EAAE,EAAE,EAAEA,IAAI,IAAItB,EAAE,EAAEA,GAAGsB,GAAG,SAASA,IAAI,EAAEG,KAAI,MAAM,GAAGD,GAAEG,GAAEL,EAAE,KAAK,EAAEF,EAAE,EAAE,EAAEA,EAAEA,IAAI,UAAUpB,GAAGsB,EAAEE,GAAE,SAAS,KAAK,EAAE,SAASxB,EAAE,EAAE,EAAEA,KAAK,EAAEsB,IAAI,IAAIM,GAAE,EAAErC,EAAEN,EAAE,KAAK,CAAC,EAAEmC,EAAE7B,EAAEN,EAAE,KAAK,CAAC,EAAEmC,GAAGN,EAAElB,EAAE,GAAG0B,EAAEE,IAAG,UAAUF,GAAG,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAGT,EAAEf,EAAE,GAAG8B,GAAEL,IAAG,UAAUE,IAAG,EAAEH,EAAEiF,EAAGpE,GAAEA,IAAG,GAAG,OAAO,CAAC,EAAEnC,EAAES,EAAEgB,GAAE8E,EAAGrE,GAAEA,IAAG,GAAG,OAAO,CAAC,EAAEd,EAAEX,EAAEkB,GAAEL,EAAEtB,GAAGsB,GAAGF,GAAGI,GAAEC,GAAE,SAAS,KAAK,EAAE,SAASL,EAAE,EAAE,EAAEA,IAAI,IAAIpB,EAAE,EAAEsB,EAAEtB,GAAGoB,EAAEO,IAAGJ,IAAG,SAASH,IAAI,EAAEI,KAAI,IAAI,KAAK,EAAED,KAAI,EAAEvB,EAAE,EAAE,EAAEA,EAAEuB,KAAI,UAAUD,GAAGC,GAAEH,EAAE,SAAS,KAAK,EAAE,SAASE,EAAE,EAAE,EAAEA,KAAK,GAAGtB,EAAEuB,MAAK,IAAIK,GAAE,EAAErC,EAAEN,EAAE,KAAK,CAAC,EAAEsC,GAAEhC,EAAEN,EAAE,KAAK,CAAC,EAAEsC,IAAGX,EAAEV,EAAE,GAAGoB,EAAEF,GAAG,UAAUpB,GAAG,EAAET,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAGX,EAAER,EAAE,GAAGqB,GAAEC,IAAG,UAAUD,IAAG,EAAExB,EAAEuG,GAAI,SAAS7E,KAAI,EAAEM,KAAI,GAAGN,IAAG,GAAG,GAAG,CAAC,EAAEJ,EAAEb,EAAEW,EAAEpB,EAAEA,EAAEuG,EAAGtE,GAAEA,IAAG,GAAG,OAAO,CAAC,EAAEX,EAAEb,EAAEa,EAAE,EAAEA,GAAGF,EAAEA,EAAEpB,EAAE,KAAK,EAAEA,IAAI,EAAEsB,EAAE,EAAE,EAAEA,EAAEI,KAAI,UAAUJ,GAAGtB,EAAEoB,EAAE,SAAS,KAAK,EAAE,SAASE,EAAE,EAAE,EAAEA,KAAK,EAAEtB,IAAI,IAAIwB,GAAE,EAAEjC,EAAEN,EAAE,KAAK,CAAC,EAAEyC,GAAEnC,EAAEN,EAAE,KAAK,CAAC,EAAEyC,IAAG,EAAEtB,EAAE,GAAGkB,EAAEF,GAAG,UAAUpB,GAAG,EAAET,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAGd,EAAEuB,GAAE,GAAGV,GAAEC,EAAErC,EAAE,IAAI,EAAEe,EAAEf,EAAE,IAAI,EAAEe,CAAC,EAAEqB,GAAEpC,EAAEe,EAAEsB,CAAC,EAAEQ,GAAE9B,EAAEf,EAAE,IAAI,EAAEA,CAAC,EAAE6C,GAAE9B,EAAEA,CAAC,EAAEqB,GAAEC,EAAErC,EAAE,IAAI,EAAEA,EAAEe,CAAC,EAAE8B,GAAE9B,EAAEf,EAAE,IAAI,EAAEqC,CAAC,EAAEQ,GAAE9B,EAAEA,CAAC,EAAE8B,GAAE9B,EAAEA,CAAC,EAAE8B,GAAE9B,EAAEA,CAAC,EAAEqB,GAAED,EAAEnC,EAAE,IAAI,EAAEqC,EAAEtB,CAAC,EAAE8B,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEC,GAAED,EAAEA,EAAEnC,CAAC,EAAEqC,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEQ,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEC,GAAED,EAAEA,EAAEE,EAAErC,EAAE,IAAI,CAAC,EAAE6C,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEC,GAAED,EAAEA,EAAEE,CAAC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEQ,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEC,GAAED,EAAEA,EAAEpB,EAAEf,EAAE,IAAI,CAAC,EAAEqC,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEQ,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEU,GAAEV,EAAEA,CAAC,EAAEC,GAAED,EAAEA,EAAEpB,CAAC,EAAEsB,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEQ,GAAER,EAAErC,EAAE,IAAI,EAAEqC,CAAC,GAAQ,GAAGiB,GAAEA,GAAE,EAAE,KAAf,KAAoB,CAAClB,GAAEC,EAAEA,EAAErC,EAAE,IAAI,CAAC,EAAE6C,GAAER,EAAEA,CAAC,EAAEQ,GAAER,EAAEA,CAAC,EAAEQ,GAAER,EAAEA,CAAC,EAAEQ,GAAER,EAAEA,CAAC,EAAEQ,GAAER,EAAEA,CAAC,EAAEQ,GAAER,EAAEA,CAAC,EAAEQ,GAAER,EAAEA,CAAC,EAAEQ,GAAER,EAAEA,CAAC,EAAEQ,GAAER,EAAEA,CAAC,EAAEQ,GAAER,EAAEA,CAAC,EAAED,GAAEC,EAAEA,EAAErC,EAAE,IAAI,CAAC,EAAE6C,GAAER,EAAEA,CAAC,EAAEQ,GAAER,EAAEA,CAAC,EAAEQ,GAAER,EAAEA,CAAC,EAAED,GAAEC,EAAEA,EAAErC,CAAC,EAAE6C,GAAER,EAAEA,CAAC,EAAEsF,GAAG3H,EAAE,IAAI,EAAEqC,CAAC,EAAEW,GAAE1C,EAAEN,EAAE,KAAK,CAAC,EAAEiD,GAAE3C,EAAEN,EAAE,KAAK,CAAC,EAAEkD,GAAE5C,EAAEN,EAAE,KAAK,CAAC,EAAEmD,GAAE7C,EAAEN,EAAE,KAAK,CAAC,EAAEoD,GAAE9C,EAAEN,EAAE,KAAK,CAAC,EAAEuC,GAAEjC,EAAEN,EAAE,KAAK,CAAC,EAAEyC,GAAEnC,EAAEN,EAAE,KAAK,CAAC,EAAEmC,EAAE7B,EAAEN,EAAE,KAAK,CAAC,EAAEe,EAAET,EAAEN,EAAE,KAAK,CAAC,EAAE0C,IAAGI,GAAE,GAAG,EAAE3C,EAAEH,EAAE,IAAI,CAAC,GAAG,IAAI,GAAGqC,EAAE/B,EAAEN,EAAE,KAAK,CAAC,GAAGqC,GAAGA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAE0C,GAAEC,GAAE5B,EAAE+B,IAAG/B,EAAE,EAAEA,GAAGT,EAAEN,EAAE,KAAK,CAAC,EAAE2C,GAAEI,GAAEZ,EAAEW,IAAGX,EAAE,EAAEA,GAAG7B,EAAEN,EAAE,KAAK,CAAC,EAAE+C,GAAET,GAAEG,GAAEK,IAAGL,GAAE,EAAEA,IAAGnC,EAAEN,EAAE,KAAK,CAAC,EAAEsC,GAAEE,GAAED,GAAEO,IAAGP,GAAE,EAAEA,IAAGjC,EAAEN,EAAE,KAAK,CAAC,EAAEwC,GAAED,GAAEa,GAAEN,IAAGM,GAAE,EAAEA,IAAG9C,EAAEN,EAAE,KAAK,CAAC,EAAEuC,GAAEE,GAAEU,GAAEL,IAAGK,GAAE,EAAEA,IAAG7C,EAAEN,EAAE,KAAK,CAAC,EAAEyC,GAAEN,EAAEe,GAAEJ,IAAGI,GAAE,EAAEA,IAAG5C,EAAEN,EAAE,KAAK,CAAC,EAAEmC,EAAEpB,EAAEkC,GAAEH,IAAGG,GAAE,EAAEA,IAAG3C,EAAEN,EAAE,KAAK,CAAC,EAAEe,EAAEsB,GAAGW,GAAEF,IAAGE,GAAE,EAAEA,MAAK,OAAOF,IAAG,EAAExC,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAE,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAE0C,GAAEpC,EAAEN,EAAE,KAAK,CAAC,EAAE2C,GAAErC,EAAEN,EAAE,KAAK,CAAC,EAAE+C,GAAEzC,EAAEN,EAAE,KAAK,CAAC,EAAEsC,GAAEhC,EAAEN,EAAE,KAAK,CAAC,EAAEwC,GAAElC,EAAEN,EAAE,KAAK,CAAC,EAAEuC,GAAEjC,EAAEN,EAAE,KAAK,CAAC,EAAEyC,GAAEnC,EAAEN,EAAE,KAAK,CAAC,EAAEmC,EAAE7B,EAAEN,EAAE,KAAK,CAAC,EAAEe,EAAET,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAE,EAAEgE,GAAGrG,EAAEA,EAAE,IAAI,CAAC,EAAEoC,GAAEC,EAAErC,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,CAAC,EAAE2H,GAAG5H,EAAEsC,CAAC,EAAElC,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEqB,EAAEkE,GAAGtF,EAAED,CAAC,IAAI6H,KAAKvH,MAAKgC,EAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAE,GAAGS,EAAEf,EAAG,KAAI,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAES,GAAG,CAAC,EAAET,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,GAAG,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEA,EAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,KAAK,CAAC,EAAEqC,EAAEkD,GAAGjD,GAAEtC,EAAE,IAAI,EAAEwC,GAAExC,EAAE,IAAI,CAAC,EAAEoC,GAAEI,GAAEF,GAAEC,GAAEvC,EAAE,IAAI,CAAC,EAAEoC,GAAErB,EAAEf,EAAE,IAAI,EAAEmC,EAAEnC,EAAE,IAAI,EAAEyC,GAAEzC,EAAE,IAAI,CAAC,EAAEoC,GAAEC,EAAErC,EAAE,IAAI,EAAEyC,GAAEF,EAAC,EAAEgD,GAAGjD,GAAEE,EAAC,EAAEJ,GAAEI,GAAEF,GAAEC,EAAC,EAAEH,GAAErB,EAAEoB,EAAEM,EAAC,EAAEL,GAAEC,EAAEI,GAAEF,EAAC,EAAEgD,GAAGjD,GAAEE,EAAC,EAAEJ,GAAEpC,EAAEsC,GAAEC,EAAC,EAAEH,GAAErB,EAAEf,EAAE,GAAG,EAAEmC,EAAEM,EAAC,EAAEL,GAAEC,EAAErC,EAAE,GAAG,EAAEyC,GAAEF,EAAC,EAAEH,GAAEpC,EAAE,IAAI,EAAEsC,GAAEH,CAAC,EAAEkE,GAAG/D,GAAED,CAAC,EAAED,GAAEI,GAAExC,EAAEsC,EAAC,EAAEF,GAAEC,EAAErC,EAAE,IAAI,EAAEe,EAAEuB,EAAC,EAAEqF,GAAG5H,EAAEsC,CAAC,EAAEsF,GAAG3H,EAAE,IAAI,EAAEwC,EAAC,EAAErC,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEqB,EAAErB,EAAE,IAAI,EAAEqB,EAAEpB,EAAE,GAAG,CAAC,CAAC,SAASiC,GAAEnC,EAAE,CAAC,IAAIC,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEK,EAAE,EAAEG,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEF,EAAErB,EAAEqB,EAAE,GAAG,EAAE,EAAE,CAACrB,EAAE,CAACC,EAAE,CAACE,EAAE,CAACC,EAAE,CAACC,EAAE,CAAC,EAAE,CAACE,EAAE,CAACE,EAAE,CAAC,EAAE,CAAC,IAAIV,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,GAAGE,GAAGI,EAAEC,EAAE,IAAI,MAAMP,GAAGkB,EAAElB,IAAI,EAAE,GAAG,GAAGA,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,CAACA,EAAE,OAAOE,GAAGE,EAAEJ,GAAG,EAAE,CAACE,GAAG,IAAI,GAAG,EAAEA,EAAEK,EAAEL,EAAE,OAAO,CAAC,GAAG,EAAEF,KAAK,GAAGK,EAAEE,EAAEL,EAAE,GAAG,CAAC,KAAKK,EAAEF,EAAE,IAAI,CAAC,EAAEL,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEK,IAAIkB,EAAE,MAAMC,EAAEsG,GAAG,GAAG1H,CAAC,EAAEE,EAAEC,EAAEgB,GAAG,CAAC,EAAEC,GAAGxB,EAAEE,EAAE,EAAE,EAAEE,IAAI,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAEE,EAAEG,EAAE,GAAGL,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,IAAIiB,EAAEZ,EAAE,IAAI,KAAK,GAAGW,IAAI,EAAE,MAAM,EAAE,GAAGhB,EAAE,CAACA,EAAE,OAAOE,GAAGJ,EAAE0H,IAAI,GAAGtH,EAAE,GAAGJ,GAAGI,GAAGF,GAAGF,CAAC,IAAI,GAAG,EAAEI,EAAEG,EAAEH,EAAE,OAAO,CAAC,GAAG,EAAEF,KAAK,GAAGG,EAAEE,EAAEH,EAAE,GAAG,CAAC,KAAKG,EAAEF,EAAE,IAAI,CAAC,EAAEH,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEG,IAAIC,EAAEwH,GAAG,GAAG9H,CAAC,EAAEM,EAAEC,EAAE,IAAI,EAAED,GAAGC,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEc,EAAEP,GAAGX,IAAI,GAAGkB,EAAE,EAAEX,EAAE,GAAGO,EAAEV,EAAEc,EAAE,IAAI,CAAC,EAAE,EAAEP,EAAEJ,EAAEP,EAAEI,GAAG,CAAC,EAAEO,EAAEQ,IAAInB,EAAE,OAAO,GAAGmB,GAAG,EAAEd,EAAEE,EAAE,IAAI,GAAGL,EAAE,IAAIiB,IAAI,IAAIb,EAAEJ,EAAEK,EAAEP,EAAE,GAAG,CAAC,GAAGO,EAAE,IAAI,EAAEL,EAAEI,EAAEJ,EAAEF,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEK,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEG,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEL,EAAEO,EAAEF,EAAE,GAAG,CAAC,EAAEH,GAAGF,EAAEI,EAAE,EAAE,EAAEG,EAAE,IAAI,EAAEO,EAAEP,EAAE,IAAI,EAAEI,EAAE,MAAM,CAAC,CAAC,GAAG,EAAEU,EAAEd,EAAE,IAAI,GAAG,MAAM,EAAE,IAAIH,EAAEG,EAAE,OAAOmH,GAAGrG,CAAC,GAAG,IAAI,CAAC,EAAEV,GAAG,GAAGJ,EAAEH,EAAE,GAAG,CAAC,GAAGc,EAAE,EAAEhB,EAAEE,GAAGJ,EAAEO,EAAEL,EAAE,IAAI,CAAC,KAAKF,EAAEO,EAAEL,EAAE,IAAI,CAAC,IAAIS,GAAGT,GAAGG,GAAG,GAAGE,EAAEP,EAAE,GAAG,CAAC,GAAGkB,EAAE,KAAK,EAAEP,IAAI,GAAGN,EAAEM,EAAEP,EAAEF,EAAEF,EAAEI,EAAEF,EAAEF,EAAE,GAAGoB,EAAEb,EAAEH,EAAE,IAAI,CAAC,GAAG,EAAEA,KAAK,GAAGJ,EAAEO,EAAEH,EAAE,IAAI,CAAC,IAAI,CAACF,EAAEK,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEF,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEE,EAAE,MAAMD,CAAC,CAAC,GAAGC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAED,EAAE,GAAG,MAAM,CAAC,GAAG,EAAEF,EAAEK,EAAEH,EAAE,IAAI,CAAC,GAAG,MAAMM,EAAEL,EAAED,EAAE,GAAG,CAAC,CAAC,KAAKU,EAAET,EAAEA,GAAGL,EAAEE,GAAG,GAAG,GAAGA,EAAEK,EAAEP,EAAE,IAAI,CAAC,KAAKK,EAAEL,EAAE,GAAG,EAAEE,EAAEK,EAAEP,EAAE,IAAI,CAAC,IAAI,CAACO,EAAEO,GAAG,CAAC,EAAE,EAAE,MAAMb,CAAC,CAAC,GAAGiB,EAAE,GAAG,EAAElB,IAAI,EAAE,cAAckB,EAAE,IAAIhB,EAAEF,EAAE,GAAG,GAAGc,EAAEP,EAAE,IAAI,GAAG,CAACY,EAAE,GAAGR,EAAE,EAAEO,EAAE,EAAElB,IAAI,GAAG,WAAWmB,EAAE,KAAKD,IAAI,IAAIlB,EAAEY,GAAEV,IAAI,EAAE,CAAC,GAAG,IAAIF,GAAG,GAAG,GAAG,GAAG,EAAE,CAACc,EAAE,CAAC,GAAGZ,EAAEK,EAAE,OAAOY,GAAG,IAAI,CAAC,EAAE,IAAInB,EAAE,EAAEI,EAAEc,KAAS,EAAEC,IAAP,GAAU,IAAIA,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,GAAGb,GAAG,GAAGC,EAAEL,EAAE,GAAG,CAAC,GAAGgB,EAAE,KAAK,GAAGP,IAAI,IAAIN,EAAEH,EAAES,EAAEL,IAAI,CAACK,EAAE,EAAEX,EAAEE,EAAE,MAAMY,CAAC,CAAC,GAAGR,EAAEC,EAAEL,EAAE,IAAI,CAAC,EAAEA,EAAEK,EAAE,KAAKH,IAAI,GAAG,GAAGF,EAAE,IAAI,CAAC,EAAEF,EAAEM,GAAG,EAAEA,KAAK,EAAEJ,GAAGF,EAAEM,EAAEN,EAAEI,IAAI,EAAE,CAACF,EAAE,KAAK,MAAMF,EAAE,EAAE,GAAG,EAAEA,EAAEK,GAAG,CAAC,GAAGA,EAAE,EAAE,EAAEL,GAAG,GAAGA,EAAE,GAAGmB,GAAGnB,GAAGc,GAAG,MAAM,EAAEd,EAAEO,EAAE,OAAOmH,GAAG1H,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAACA,EAAE,MAAM,CAAC,CAAC,KAAKW,GAAGT,GAAGE,GAAG,GAAGG,EAAEP,EAAE,GAAG,CAAC,GAAGkB,EAAE,KAAK,EAAEP,IAAI,GAAGP,EAAEO,EAAEN,EAAEH,EAAEF,EAAEK,EAAEL,GAAGE,EAAEK,EAAEP,EAAE,IAAI,CAAC,IAAIO,EAAEP,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAACK,EAAEE,EAAE,IAAI,EAAEW,IAAI,GAAGP,IAAI,GAAG,CAAC,GAAGQ,EAAEZ,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEA,KAAK,GAAGL,EAAEO,EAAEF,EAAE,IAAI,CAAC,IAAI,CAACH,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEF,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEE,EAAE,MAAMA,CAAC,CAAC,GAAGA,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAED,EAAEC,EAAE,GAAG,MAAM,CAAC,GAAG,EAAEH,EAAEK,EAAEF,EAAE,IAAI,CAAC,GAAG,MAAMG,EAAEJ,EAAEC,EAAE,GAAG,CAAC,CAAC,KAAKC,EAAEF,EAAEA,GAAGJ,EAAEE,GAAG,GAAG,GAAGA,EAAEK,EAAEP,EAAE,IAAI,CAAC,KAAKI,EAAEJ,EAAE,GAAG,EAAEE,EAAEK,EAAEP,EAAE,IAAI,CAAC,IAAI,CAACO,EAAED,GAAG,CAAC,EAAE,EAAE,MAAMJ,CAAC,CAAC,CAAC,CAAC,IAAIG,EAAEE,EAAE,IAAI,KAAK,GAAGW,IAAI,EAAE,CAAClB,EAAEO,EAAE,IAAI,GAAGL,EAAEG,EAAEa,EAAE,KAAK,GAAG,IAAIX,EAAE,GAAGH,EAAEJ,EAAEkB,EAAE,IAAI,CAAC,EAAE,EAAEhB,EAAEK,EAAEP,EAAEK,GAAG,CAAC,EAAEH,EAAEK,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEkB,IAAIX,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEK,EAAEE,EAAE,GAAGL,EAAEF,EAAEK,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEE,EAAE,EAAEF,EAAE,GAAGK,EAAE,IAAI,EAAEL,EAAEK,EAAE,IAAI,EAAEH,EAAEJ,EAAEA,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,IAAII,EAAEG,EAAE,IAAI,KAAK,EAAEW,IAAI,EAAE,CAAChB,EAAEE,EAAEc,EAAE,EAAEX,EAAE,IAAI,EAAEL,EAAEE,GAAGJ,EAAEO,EAAE,IAAI,GAAGW,EAAE,EAAEX,EAAE,IAAI,EAAEH,EAAEG,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEF,EAAEK,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEkB,EAAElB,EAAEA,EAAE,EAAE,EAAE,MAAM,CAAC,CAAuL,GAAnLA,EAAE,EAAEW,EAAEO,EAAE,GAAG,EAAEX,EAAE,IAAI,EAAEL,EAAEK,EAAE,IAAI,GAAGA,EAAE,IAAI,EAAE,GAAGA,EAAE,IAAI,EAAE,GAAGA,EAAE,IAAI,EAAE,KAAKA,EAAE,IAAI,EAAE,KAAKA,EAAE,IAAI,EAAEN,EAAE,GAAG,IAAI,WAAWM,EAAE,IAAI,EAAE,EAAEA,EAAE,IAAI,EAAE,EAAEL,EAAE,OAAOA,GAAGI,EAAEK,EAAET,EAAE,IAAIY,EAAE,EAAEZ,EAAE,MAAM,GAAGgB,IAAI,IAAcC,EAAEZ,EAAE,IAAI,KAAKF,GAAGe,EAAEb,EAAE,IAAI,GAAGL,EAAE,KAAK,GAAGkB,IAAI,EAAEf,IAAI,EAAEc,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,EAAEX,EAAE,KAAK,GAAG,CAAC,EAAE,CAACM,EAAE,CAACI,EAAE,CAACC,EAAE,CAAC,GAAGd,EAAEE,EAAE,IAAI,EAAE,IAAIP,EAAE,QAAQ,CAAC,IAAImB,EAAEZ,EAAEP,GAAG,CAAC,KAAK,GAAGK,IAAI,EAAEA,IAAI,EAAEc,EAAEZ,EAAEP,EAAE,GAAG,CAAC,IAAI,EAAE,MAAMmB,EAAE,GAAG,EAAEnB,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,KAAK,CAAyG,IAAhG,GAAGI,EAAE2H,GAAG,CAAC,KAAd,KAA6BzH,EAAEJ,GAAGG,GAAGL,EAAEO,EAAE,IAAI,GAAG,EAAE,GAAGH,IAAIE,GAAGJ,EAAEE,EAAE,IAAIA,EAAEC,EAAE,EAAEL,GAAG,GAAGM,IAAI,GAAGY,IAAI,KAAcb,EAAEE,EAAE,IAAI,KAAKP,GAAGc,EAAEP,EAAE,IAAI,GAAGD,EAAE,KAAK,GAAGQ,IAAI,EAAEd,IAAI,EAAEK,IAAI,EAAE,MAAM,EAAE,IAAI,EAAED,KAAK,GAAGJ,EAAE+H,GAAGzH,CAAC,IAAI,MAAMY,EAAE,MAAM,CAAC,CAAC,IAAI,GAAGd,EAAE2H,GAAGzH,EAAEQ,EAAER,EAAEF,CAAC,MAAMG,EAAEP,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAE,GAAG,MAAMc,EAAEd,EAAEI,CAAC,CAAC,IAAQ,EAAEJ,IAAP,GAAU,MAAM,EAAE,GAAGkB,EAAE,KAAK,GAAGZ,IAAI,EAAE,CAACF,EAAEJ,EAAE,MAAM,CAAC,CAAC,IAAQ,EAAE+H,GAAG3H,GAAGA,EAAEG,EAAE,IAAI,IAAII,EAAEL,EAAE,GAAG,EAAEF,CAAC,IAAnC,GAAsC,MAAM,EAAEE,EAAEF,EAAEE,EAAE,EAAEF,EAAEJ,EAAE,MAAM,CAAC,CAAC,IAAQ,EAAEI,IAAP,GAAU,MAAM,CAAC,CAACG,EAAE,IAAI,EAAE,EAAEA,EAAE,IAAI,CAAC,CAA6D,IAApD,GAAGH,EAAE2H,GAAG7H,CAAC,KAAd,IAAuB,GAAGF,EAAE+H,GAAG,CAAC,KAAd,GAAkB/H,IAAI,GAAGI,IAAI,IAAcE,EAAEN,EAAEI,EAAE,KAAK,GAAGc,EAAE,KAAK,EAAE,MAAMb,CAAC,CAACL,EAAEO,EAAE,IAAI,EAAED,EAAE,EAAEC,EAAE,IAAI,EAAEP,EAAEA,IAAI,EAAEU,GAAE,IAAI,IAAIH,EAAE,IAAI,EAAEP,GAAG,EAAE,CAAC,GAAGW,EAAEJ,EAAE,IAAI,EAAE,CAAC,IAAIP,EAAE,QAAQ,CAAC,KAAKE,EAAEK,EAAEP,GAAG,CAAC,IAAIK,EAAEE,EAAEP,EAAE,GAAG,CAAC,GAAG,KAAK,EAAEI,GAAG,MAAM,EAAE,GAAG,EAAEJ,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAKA,EAAEO,EAAE,IAAI,KAAK,GAAGH,IAAI,GAAGJ,IAAIO,EAAE,IAAI,EAAEH,GAAGJ,EAAE,EAAEO,EAAE,IAAI,EAAED,EAAEC,EAAE,IAAI,EAAEH,EAAEG,EAAE,IAAI,EAAE,GAAGA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE,EAAEF,EAAE,OAAOH,EAAEF,GAAG,GAAG,EAAEO,EAAEL,EAAE,OAAO,CAAC,EAAEG,EAAEE,EAAEL,EAAE,OAAO,CAAC,EAAEG,GAAO,GAAGL,EAAEA,EAAE,EAAE,KAAd,IAAmB,CAACK,GAAGL,EAAEM,EAAE,GAAG,IAAIJ,EAAE,GAAGE,EAAE,GAAG,EAAEG,EAAE,IAAI,EAAEF,EAAEH,EAAEA,EAAEE,EAAE,EAAEG,EAAE,IAAI,EAAEL,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAEG,EAAEE,EAAE,GAAGP,EAAEI,EAAE,IAAI,CAAC,EAAE,GAAGG,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE,MAAMD,CAAC,CAAC,GAAG,EAAEC,EAAEP,EAAE,IAAI,CAAC,EAAEI,IAAI,GAAGO,IAAI,EAAET,IAAI,EAAES,IAAI,EAAE,MAAM,EAAEJ,EAAEP,EAAE,GAAG,CAAC,EAAEK,EAAEC,EAAEJ,GAAGF,EAAE,GAAGW,EAAE,GAAGA,EAAE,EAAEJ,EAAE,IAAI,EAAEL,EAAEF,GAAGI,EAAEG,EAAE,IAAI,EAAED,EAAE,GAAGN,EAAE,EAAEO,EAAE,IAAI,EAAEP,EAAEO,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAEF,EAAEO,EAAE,GAAGH,EAAEO,EAAE,IAAI,CAAC,EAAE,GAAGJ,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE,MAAMD,CAAC,CAACN,EAAE,EAAE,MAAMC,CAAC,CAACD,EAAE,EAAE,MAAME,CAAC,CAACQ,GAAE,IAAI,EAAEN,IAAI,IAAIG,EAAE,IAAI,EAAEH,GAAGC,EAAED,EAAEE,EAAE,EAAEN,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,GAAGE,EAAEK,EAAEP,GAAG,CAAC,MAAM,EAAEK,GAAG,CAAC,GAAGL,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAE,SAAS,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,MAAMI,CAAC,CAAC,IAAIJ,EAAE,MAAM,GAAGE,EAAEK,EAAEP,GAAG,CAAC,KAAK,GAAGW,IAAI,IAAIN,EAAEH,EAAEK,EAAEP,EAAE,GAAG,CAAC,EAAE,KAAK,EAAEW,IAAI,IAAIX,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAE,IAAIc,GAAGd,EAAEM,EAAE,GAAG,IAAIJ,EAAE,GAAGE,EAAE,GAAG,EAAEG,EAAE,IAAI,EAAEO,EAAEZ,EAAEA,EAAEE,EAAE,EAAEG,EAAE,IAAI,EAAEL,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAEY,EAAEP,EAAE,GAAGP,EAAEI,EAAE,IAAI,CAAC,EAAE,GAAGG,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,GAAGL,GAAGF,GAAGK,GAAG,GAAGA,EAAE,GAAG,GAAG,GAAG,KAAK,EAAEM,EAAE,KAAK,EAAEA,EAAEX,GAAG,GAAG,CAAC,EAAE,GAAGA,EAAEO,EAAE,IAAI,EAAEA,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAE,IAAI,EAAEA,EAAEL,EAAE,IAAI,CAAC,EAAEF,EAAEA,EAAEO,EAAE,IAAI,EAAEA,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAE,IAAI,EAAEA,EAAEL,EAAE,IAAI,CAAC,EAAEF,EAAEO,EAAE,IAAI,EAAEL,EAAE,EAAEK,EAAE,IAAI,EAAED,EAAEC,EAAE,IAAI,EAAEH,EAAEG,EAAE,IAAI,EAAE,EAAEP,EAAEE,EAAE,GAAG,EAAEK,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEI,EAAEJ,EAAE,EAAE,EAAEA,EAAEA,EAAE,EAAE,EAAEI,IAAI,EAAEC,IAAI,GAAG,CAAC,IAAI,EAAEH,KAAK,EAAES,GAAG,CAACJ,EAAEL,EAAE,GAAG,CAAC,EAAE,GAAGK,EAAEL,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAES,EAAE,EAAEJ,EAAEI,EAAE,GAAG,CAAC,EAAE,EAAEP,EAAEG,EAAEL,GAAG,CAAC,EAAEE,EAAE,EAAE,GAAGA,IAAI,GAAG,IAAIJ,EAAE,OAAO,GAAGI,GAAG,GAAGF,EAAEK,EAAE,IAAI,IAAIH,EAAE,IAAIA,IAAI,IAAIF,EAAEK,EAAEP,EAAE,GAAG,CAAC,GAAGO,EAAE,IAAI,EAAEL,EAAEE,EAAEF,EAAEF,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEW,EAAEJ,EAAEL,EAAE,IAAI,CAAC,EAAES,EAAEN,EAAE,EAAED,EAAE,OAAO,CAACJ,EAAE,GAAGI,IAAI,GAAG,WAAWJ,EAAE,KAAKI,IAAI,IAAIJ,EAAEY,GAAER,IAAI,EAAE,CAAC,GAAG,IAAIJ,GAAG,GAAG,GAAG,GAAGO,EAAEI,EAAE,IAAI,CAAC,EAAEX,EAAEO,EAAEI,EAAE,IAAI,CAAC,EAAE,EAAEJ,EAAEI,EAAE,IAAI,CAAC,EAAE,EAAET,EAAE,OAAOF,GAAG,GAAG,EAAEQ,EAAE,CAAC,IAAIH,EAAEE,EAAE,IAAI,IAAID,EAAE,GAAGN,GAAG,CAAC,IAAIA,EAAEI,KAAS,EAAEJ,IAAP,GAAU,IAAIA,IAAI,EAAE,GAAG,GAAGK,EAAEE,EAAEL,GAAG,CAAC,IAAI,CAAC,IAAI,EAAEE,KAAK,GAAGG,GAAGL,EAAEG,GAAG,GAAG,CAAC,GAAG,MAAMG,EAAE,GAAGH,EAAEL,IAAI,GAAG,EAAEA,IAAI,EAAE,EAAEK,EAAEE,EAAE,IAAID,GAAG,EAAED,GAAGH,EAAE,IAAI,CAAC,GAAG,KAAK,CAACK,EAAED,EAAE,IAAI,CAAC,EAAEK,CAAC,MAAMJ,EAAE,IAAI,EAAEF,EAAEC,EAAEC,EAAEL,GAAG,CAAC,EAAES,EAAEJ,EAAEI,EAAE,IAAI,CAAC,EAAET,EAAEF,EAAEE,EAAES,EAAEN,EAAE,GAAGD,EAAE,EAAE,MAAM,CAAC,CAACJ,EAAEO,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEP,EAAE,IAAI,CAAC,EAAEW,EAAEJ,EAAEL,EAAE,GAAG,CAAC,EAAES,EAAEJ,EAAEI,EAAE,GAAG,CAAC,EAAEX,EAAEA,EAAE,EAAEK,EAAE,GAAGD,EAAE,EAAE,CAACG,EAAEF,EAAEM,GAAG,CAAC,EAAET,EAAEK,EAAEH,EAAEO,GAAG,CAAC,EAAEX,CAAC,CAAC,CAAC,GAAG,GAAGA,EAAEO,EAAE,IAAI,KAAK,GAAGW,IAAI,GAAG,CAAChB,EAAEF,EAAEkB,EAAE,EAAEX,EAAE,IAAI,EAAEL,EAAEE,GAAGJ,EAAEO,EAAE,IAAI,GAAGW,EAAE,EAAEX,EAAE,IAAI,EAAEH,EAAEG,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEF,EAAEK,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEkB,EAAElB,EAAEA,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAACO,EAAE,IAAI,EAAE,GAAGP,EAAE,EAAE,MAAM,CAAC,CAACO,EAAEP,GAAG,CAAC,EAAEI,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEM,EAAEC,EAAE,GAAGY,GAAG,GAAGf,EAAE,GAAGA,EAAE,IAAI,CAAC,EAAE,EAAEc,EAAEJ,GAAGR,EAAEJ,GAAG,GAAGA,EAAE,GAAG,IAAIS,EAAEO,EAAEC,EAAE,GAAG,EAAEf,EAAE,GAAGG,EAAE,IAAI,IAAI,EAAED,GAAG,GAAGC,EAAE,IAAI,IAAI,EAAED,GAAG,CAAC,IAAO,GAAGN,EAAEO,EAAED,EAAE,GAAG,CAAC,KAAjB,EAAqB,CAACc,EAAE,GAAGpB,EAAEI,EAAEG,EAAED,EAAE,IAAI,CAAC,EAAED,EAAE,GAAGL,IAAI,GAAG,IAAI,CAAC,IAAI,GAAGE,EAAEK,EAAED,EAAE,GAAG,CAAC,MAAM,EAAEF,GAAG,CAACmB,EAAE,MAAMC,EAAEjB,EAAE,IAAI,EAAEuH,GAAG,GAAG9H,IAAI,EAAE,CAAC,EAAEO,EAAEgB,GAAG,CAAC,EAAEC,EAAE,MAAMnB,CAAC,CAACE,EAAEL,EAAE,IAAI,CAAC,EAAEE,EAAEG,EAAEH,EAAE,GAAG,CAAC,EAAEF,CAAC,KAAK,CAACgB,EAAEX,EAAED,EAAE,IAAI,CAAC,EAAEA,EAAE,IAAI,EAAEF,KAAK,EAAEE,GAAG,CAAC,EAAE,CAAC,GAAGN,EAAEO,EAAED,EAAE,IAAI,CAAC,EAAEJ,EAAEI,EAAE,GAAG,MAAM,CAAC,GAAG,EAAEN,EAAEO,EAAED,EAAE,IAAI,CAAC,GAAG,MAAM,EAAEJ,EAAEI,EAAE,GAAG,CAAC,CAAC,KAAKD,EAAEH,EAAEE,EAAEJ,EAAEE,EAAEF,EAAE,GAAG,GAAGA,EAAEO,EAAEP,EAAE,IAAI,CAAC,KAAKE,EAAEE,EAAE,GAAG,EAAEJ,EAAEO,EAAEH,EAAE,IAAI,CAAC,IAAI,CAACG,EAAEF,GAAG,CAAC,EAAE,EAAE,MAAMC,CAAC,CAACF,EAAE,CAAC,MAAMJ,EAAEO,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEP,EAAE,IAAI,CAAC,EAAEI,EAAEG,EAAEH,EAAE,GAAG,CAAC,EAAEJ,EAAE,GAAGkB,EAAE,CAAClB,EAAEO,EAAED,EAAE,IAAI,CAAC,EAAEA,EAAE,CAAC,GAAGC,GAAGL,EAAE,OAAOF,GAAG,GAAG,IAAI,CAAC,IAAI,EAAEM,GAAG,CAAC,GAAGC,EAAEL,GAAG,CAAC,EAAEE,EAAEA,EAAE,MAAME,EAAEiB,EAAE,MAAMC,EAAEjB,EAAE,IAAI,EAAEuH,GAAG,GAAG9H,CAAC,EAAEO,EAAEgB,GAAG,CAAC,EAAEC,EAAE,MAAMnB,CAAC,CAAC,GAAGE,EAAEW,GAAGX,EAAEW,EAAE,IAAI,CAAC,IAAI,EAAEZ,GAAG,GAAG,KAAK,CAAC,EAAEF,EAAE,CAACA,EAAE,MAAMC,CAAC,CAACE,EAAEH,EAAE,IAAI,CAAC,EAAEc,GAAGlB,EAAEO,EAAED,EAAE,IAAI,CAAC,KAAKC,EAAEH,EAAE,IAAI,CAAC,EAAEJ,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEI,IAAIJ,EAAEO,EAAED,EAAE,IAAI,CAAC,KAAKC,EAAEH,EAAE,IAAI,CAAC,EAAEJ,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEI,EAAE,CAAC,CAACU,EAAEA,EAAEM,EAAE,EAAEpB,EAAEO,EAAE,GAAGD,EAAEA,EAAEc,EAAE,IAAI,CAAC,CAAC,CAAC,GAAGb,EAAED,EAAE,GAAG,CAAC,EAAE,GAAGN,EAAEO,EAAEI,EAAE,GAAG,CAAC,EAAE,EAAEG,EAAEP,EAAEI,EAAEG,GAAG,CAAC,EAAEA,EAAEA,IAAI,GAAG,IAAId,EAAE,OAAO,GAAGc,GAAG,GAAGZ,EAAEK,EAAE,IAAI,IAAIH,EAAE,IAAIU,IAAI,IAAIZ,EAAEK,EAAEP,EAAE,GAAG,CAAC,GAAGO,EAAE,IAAI,EAAEL,EAAEE,EAAEF,EAAEF,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEW,EAAEJ,EAAEL,EAAE,IAAI,CAAC,EAAES,EAAEJ,EAAEI,EAAE,IAAI,CAAC,EAAEX,EAAEO,EAAEI,EAAE,GAAG,CAAC,EAAET,MAAM,CAACE,EAAE,GAAGU,IAAI,GAAG,WAAWV,EAAE,KAAKU,IAAI,IAAId,EAAEY,GAAEE,IAAI,EAAE,CAAC,GAAG,IAAId,GAAG,GAAG,GAAG,GAAGO,EAAEI,EAAE,IAAI,CAAC,EAAEP,EAAEG,EAAEI,EAAE,IAAI,CAAC,EAAE,EAAEJ,EAAEI,EAAE,IAAI,CAAC,EAAE,EAAEX,EAAE,OAAOI,GAAG,GAAG,EAAEC,EAAE,CAAC,IAAIH,EAAEK,EAAE,IAAI,IAAIF,EAAE,GAAGD,GAAG,CAAC,IAAIA,EAAEU,KAAS,EAAEV,IAAP,GAAU,IAAIA,IAAI,EAAE,GAAG,GAAGF,EAAEK,EAAEP,GAAG,CAAC,IAAI,CAAC,IAAI,GAAGO,GAAGP,EAAEE,GAAG,GAAG,CAAC,KAAK,EAAEY,GAAG,MAAMT,EAAE,GAAGH,EAAEE,IAAI,GAAG,EAAEA,IAAI,EAAE,EAAEF,EAAEK,EAAE,IAAIF,GAAG,EAAEH,GAAGF,EAAE,IAAI,CAAC,GAAG,KAAK,CAACO,EAAEF,EAAE,IAAI,CAAC,EAAEM,CAAC,MAAMJ,EAAE,IAAI,EAAEL,EAAEG,EAAEE,EAAEP,GAAG,CAAC,EAAEW,EAAEJ,EAAEI,EAAE,IAAI,CAAC,EAAEX,EAAEO,EAAEI,EAAE,IAAI,CAAC,EAAEA,EAAEJ,EAAEI,EAAE,GAAG,CAAC,EAAEA,EAAE,MAAMP,CAAC,CAACF,EAAEK,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAES,EAAEJ,EAAEP,EAAE,GAAG,CAAC,EAAEW,EAAEJ,EAAEI,EAAE,IAAI,CAAC,EAAE,EAAEJ,EAAEI,EAAE,IAAI,CAAC,EAAEX,EAAEO,EAAEI,EAAE,GAAG,CAAC,EAAET,CAAC,CAAC,MAAMK,EAAE,IAAI,EAAEI,EAAEX,EAAEO,EAAE,IAAI,EAAEO,EAAE,EAAEP,EAAE,IAAI,EAAEP,EAAEO,EAAEI,EAAE,GAAG,CAAC,EAAE,EAAEX,EAAEO,EAAEP,EAAEW,GAAG,CAAC,EAAEX,OAAOO,EAAE,IAAI,EAAEI,EAAEX,EAAEO,EAAE,IAAI,EAAEO,EAAE,EAAEP,EAAE,IAAI,EAAEP,EAAEO,EAAEI,EAAE,GAAG,CAAC,EAAE,EAAEX,EAAEA,EAAEmB,EAAE,EAAE,EAAE,MAAM,CAAC,CAACjB,EAAE,GAAGiB,EAAE,CAACjB,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAED,EAAE,CAAC,GAAGG,GAAGH,EAAE,OAAOF,GAAG,GAAG,IAAI,CAAC,IAAI,EAAEG,GAAG,CAAC,GAAGE,EAAEH,GAAG,CAAC,EAAEJ,EAAEA,EAAE,MAAMI,EAAEU,EAAEgH,GAAG,GAAG5H,CAAC,EAAEY,EAAEP,EAAE,IAAI,EAAEO,EAAE,MAAMZ,CAAC,CAAC,GAAGK,EAAEY,GAAGZ,EAAEY,EAAE,IAAI,CAAC,IAAI,EAAEd,GAAG,GAAG,KAAK,CAAC,EAAEL,EAAE,CAACA,EAAE,MAAME,CAAC,CAACK,EAAEP,EAAE,IAAI,CAAC,EAAEmB,GAAGjB,EAAEK,EAAEF,EAAE,IAAI,CAAC,KAAKE,EAAEP,EAAE,IAAI,CAAC,EAAEE,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEF,IAAIE,EAAEK,EAAEF,EAAE,IAAI,CAAC,KAAKE,EAAEP,EAAE,IAAI,CAAC,EAAEE,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAGS,IAAI,GAAG,GAAGX,EAAEW,EAAEO,EAAE,EAAEX,EAAEF,EAAE,GAAG,CAAC,EAAE,EAAEL,EAAEO,EAAE,GAAGP,EAAEA,EAAEK,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEP,EAAE,GAAG,CAAC,UAAUO,EAAEF,EAAE,GAAG,CAAC,EAAE,EAAEa,EAAEX,EAAE,GAAGD,EAAED,EAAEa,EAAE,IAAI,CAAC,EAAE,EAAEP,EAAEJ,EAAEI,EAAEL,GAAG,CAAC,EAAEK,EAAEA,IAAI,GAAG,IAAIX,EAAE,OAAO,GAAGW,GAAG,GAAGT,EAAEK,EAAE,IAAI,IAAIH,EAAE,IAAIO,IAAI,IAAIT,EAAEK,EAAEP,EAAE,GAAG,CAAC,GAAGO,EAAE,IAAI,EAAEL,EAAEE,EAAEF,EAAEF,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEM,EAAEC,EAAEL,EAAE,IAAI,CAAC,EAAEI,EAAEC,EAAED,EAAE,IAAI,CAAC,EAAEN,EAAEO,EAAED,EAAE,GAAG,CAAC,EAAEJ,MAAM,CAACF,EAAE,GAAGW,IAAI,GAAG,WAAWX,EAAE,KAAKW,IAAI,IAAIX,EAAEY,GAAED,IAAI,EAAE,CAAC,GAAG,IAAIX,GAAG,GAAG,GAAG,GAAGO,EAAED,EAAE,IAAI,CAAC,EAAEN,EAAEO,EAAED,EAAE,IAAI,CAAC,EAAE,EAAEC,EAAED,EAAE,IAAI,CAAC,EAAE,EAAEJ,EAAE,OAAOF,GAAG,GAAG,EAAEI,EAAE,CAAC,IAAIA,EAAE,GAAGJ,GAAGc,EAAE,CAAC,IAAId,EAAEW,KAAS,EAAEX,IAAP,GAAU,IAAIA,IAAI,EAAE,GAAG,GAAGE,EAAEK,EAAEL,GAAG,CAAC,IAAI,CAAC,GAAGE,EAAEF,GAAG,GAAGK,EAAEL,EAAE,GAAG,CAAC,KAAK,EAAES,GAAG,MAAMP,EAAE,GAAGU,EAAEd,IAAI,GAAG,EAAEA,IAAI,EAAE,EAAEE,EAAEK,EAAE,IAAIO,EAAEZ,GAAG,EAAEY,GAAG,IAAI,CAAC,GAAG,KAAK,CAACP,EAAEO,EAAE,IAAI,CAAC,EAAER,EAAEC,EAAED,EAAE,IAAI,CAAC,EAAEF,CAAC,MAAMG,EAAE,IAAI,EAAEH,EAAEU,EAAEP,EAAEL,GAAG,CAAC,EAAEI,EAAEC,EAAED,EAAE,IAAI,CAAC,EAAEJ,EAAEK,EAAED,EAAE,IAAI,CAAC,EAAEA,EAAEC,EAAED,EAAE,GAAG,CAAC,EAAEA,EAAE,MAAMJ,CAAC,CAACF,EAAEO,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEM,EAAEC,EAAEH,EAAE,GAAG,CAAC,EAAEE,EAAEC,EAAED,EAAE,IAAI,CAAC,EAAE,EAAEC,EAAED,EAAE,IAAI,CAAC,EAAEF,EAAEG,EAAED,EAAE,GAAG,CAAC,EAAEN,CAAC,CAACA,EAAEK,EAAE,EAAE,EAAE,MAAM,CAAC,CAACJ,EAAE,GAAGmB,EAAE,CAAClB,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEF,EAAE,CAAC,GAAGK,GAAGF,EAAE,OAAOH,GAAG,GAAG,IAAI,CAAC,IAAI,EAAEE,GAAG,CAAC,GAAGG,EAAEF,GAAG,CAAC,EAAEL,EAAEA,EAAE,MAAME,EAAEqB,EAAE,MAAMC,EAAEsG,GAAG,GAAG5H,CAAC,EAAEmB,EAAEd,EAAEgB,GAAG,CAAC,EAAEC,EAAE,MAAMvB,CAAC,CAAC,GAAGM,EAAEa,GAAGb,EAAEa,EAAE,IAAI,CAAC,IAAI,EAAEhB,GAAG,GAAG,KAAK,CAAC,EAAEJ,EAAE,CAACA,EAAE,MAAMC,CAAC,CAACM,EAAEP,EAAE,IAAI,CAAC,EAAEoB,GAAGlB,EAAEK,EAAEH,EAAE,IAAI,CAAC,KAAKG,EAAEP,EAAE,IAAI,CAAC,EAAEE,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEF,IAAIE,EAAEK,EAAEH,EAAE,IAAI,CAAC,KAAKG,EAAEP,EAAE,IAAI,CAAC,EAAEE,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEF,EAAE,CAACW,IAAI,GAAG,IAAIX,EAAEW,EAAEO,EAAE,EAAEX,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEJ,EAAEO,EAAE,GAAGP,EAAEA,EAAEI,EAAE,IAAI,CAAC,EAAE,EAAEG,EAAEP,EAAE,GAAG,CAAC,IAAIO,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEc,EAAEX,EAAE,GAAGO,EAAEV,EAAEc,EAAE,IAAI,CAAC,EAAE,EAAEP,EAAEJ,EAAEI,EAAEG,GAAG,CAAC,EAAEH,EAAEQ,IAAInB,EAAE,OAAO,GAAGmB,GAAG,EAAEd,EAAEE,EAAE,IAAI,GAAGL,EAAE,IAAIiB,IAAI,IAAIb,EAAEJ,EAAEK,EAAEP,EAAE,GAAG,CAAC,GAAGO,EAAE,IAAI,EAAEL,EAAEI,EAAEJ,EAAEF,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEK,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEG,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEL,EAAEO,EAAEF,EAAE,GAAG,CAAC,EAAEH,GAAGK,EAAE,IAAI,EAAEO,EAAEP,EAAE,IAAI,EAAEI,GAAGX,EAAEI,EAAE,EAAE,CAAC,CAAC,OAAOkB,EAAErB,EAAE,GAAG,EAAE,EAAED,CAAC,CAAC,SAASoC,GAAEpC,EAAEC,EAAEC,EAAEG,EAAEC,EAAEI,EAAE,CAAC,IAAIE,EAAEE,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEtB,EAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEE,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAE,GAAGnC,EAAEV,EAAEU,EAAE,IAAI,EAAEH,EAAE,GAAG6G,GAAG9G,EAAElB,EAAE,GAAG,CAAC,GAAG,CAACiI,GAAGjI,CAAC,GAAGkI,GAAG5H,CAAC,GAAG,CAAC2H,GAAG3H,CAAC,GAAG,CAACkG,GAAGnF,EAAET,EAAE,IAAI,EAAEN,CAAC,EAAE,CAAC,IAAI8G,GAAGjG,EAAEP,EAAE,IAAI,CAAC,EAAEF,GAAG0E,GAAGjE,EAAE,MAAM,GAAG,CAAC,EAAEiE,GAAGjE,EAAEnB,EAAE,GAAG,CAAC,EAAEoF,GAAGjE,EAAEb,EAAE,GAAG,CAAC,EAAE8E,GAAGjE,EAAElB,EAAEC,EAAEG,CAAC,EAAE8C,GAAElD,EAAEkB,EAAEA,EAAEP,EAAE,IAAI,CAAC,EAAEmB,GAAEZ,CAAC,EAAEd,EAAEO,EAAE,EAAE,EAAEV,EAAEgB,EAAEZ,EAAE,EAAEL,EAAE,EAAEqB,EAAER,EAAEQ,EAAE,KAAK,EAAEZ,EAAEI,EAAE,KAAK,EAAEI,EAAEV,EAAEW,GAAGb,IAAI,EAAE,GAAG,CAAC,EAAEF,EAAEM,EAAEJ,EAAE,CAAC,EAAEY,KAAK,EAAEZ,GAAG,EAAEF,GAAGgB,EAAEV,IAAIA,EAAE,EAAEJ,GAAG,CAAC,EAAEY,KAAK,EAAER,GAAG,GAAQ,GAAGJ,EAAEA,EAAE,EAAE,KAAf,KAAoB,CAAC,OAAO,CAACL,GAAGS,EAAET,GAAG,EAAE,EAAE,EAAE,GAAG,EAAES,IAAI,EAAE,MAAMF,EAAE,GAAGgB,GAAGlB,EAAEQ,EAAE,KAAK,GAAGJ,EAAE,EAAE,EAAE,CAACT,EAAE,GAAGK,EAAEF,EAAE,GAAGmB,EAAEtB,EAAEK,EAAE,EAAE,EAAE,IAAI,GAAGA,GAAGa,EAAEb,GAAG,IAAIY,EAAEd,EAAE,EAAEoB,CAAC,GAAG,KAAK,GAAGpB,EAAE,EAAEoB,CAAC,EAAElB,EAAEF,EAAE,EAAEmB,CAAC,EAAE,MAAM,CAAC,IAAI,GAAGjB,EAAEY,EAAEC,EAAE,IAAI,IAAI,MAAM,EAAE,IAAIf,EAAE,EAAEoB,CAAC,EAAElB,EAAEA,EAAEL,IAAI,CAAC,GAAG,CAACO,EAAE,GAAGU,GAAGJ,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAACF,EAAE,EAAEc,CAAC,EAAE,EAAE,MAAMjB,CAAC,CAAC,GAAGG,EAAE,EAAEc,CAAC,EAAE,EAAEA,EAAEZ,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAE,CAACY,EAAE,KAAK,CAAC,CAAC,GAAG,EAAER,IAAI,EAAE,KAAK,CAACT,EAAE,GAAGiB,EAAEd,EAAE,GAAGgB,GAAGd,EAAEI,EAAE,EAAE,IAAII,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAGI,GAAGK,EAAEL,GAAG,IAAIC,EAAEf,EAAE,EAAEoB,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAGN,EAAEC,EAAEI,EAAE,IAAI,IAAI,MAAM,EAAE,IAAInB,EAAE,EAAEoB,CAAC,EAAEN,IAAI,CAAC,GAAGV,EAAE,GAAGU,GAAGJ,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAAC,GAAGF,EAAE,EAAEc,CAAC,EAAE,EAAEA,EAAEZ,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAEY,EAAE,SAAS,MAAMjB,CAAC,CAAC,KAAK,CAACG,EAAE,EAAEc,CAAC,EAAE,CAAC,MAAMd,EAAE,EAAEoB,CAAC,EAAEN,EAAEd,EAAE,EAAEgB,CAAC,EAAE,EAAE,IAAS,EAAEV,IAAR,IAAW,CAACT,EAAE,GAAGiB,EAAEd,EAAE,GAAGgB,GAAGd,EAAEI,EAAE,EAAE,IAAII,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAGI,GAAGK,EAAEL,GAAG,IAAIC,EAAEf,EAAE,EAAEoB,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAGN,EAAEC,EAAEI,EAAE,IAAI,IAAI,MAAM,EAAE,IAAInB,EAAE,EAAEoB,CAAC,EAAEN,IAAI,CAAC,GAAGV,EAAE,GAAGU,GAAGJ,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAAC,GAAGF,EAAE,EAAEc,CAAC,EAAE,EAAEA,EAAEZ,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAEY,EAAE,SAAS,MAAMjB,CAAC,CAAC,KAAK,CAACG,EAAE,EAAEc,CAAC,EAAE,CAAC,MAAMd,EAAE,EAAEoB,CAAC,EAAEN,EAAEd,EAAE,EAAEgB,CAAC,EAAE,EAAE,GAAG,EAAEV,IAAI,EAAE,KAAK,CAACT,EAAE,GAAGiB,EAAEd,EAAE,GAAGgB,GAAGd,EAAEI,EAAE,EAAE,IAAII,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAGI,GAAGK,EAAEL,GAAG,IAAIC,EAAEf,EAAE,EAAEoB,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAGN,EAAEC,EAAEI,EAAE,IAAI,IAAI,MAAM,EAAE,IAAInB,EAAE,EAAEoB,CAAC,EAAEN,IAAI,CAAC,GAAGV,EAAE,GAAGU,GAAGJ,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAAC,GAAGF,EAAE,EAAEc,CAAC,EAAE,EAAEA,EAAEZ,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAEY,EAAE,SAAS,MAAMjB,CAAC,CAAC,KAAK,CAACG,EAAE,EAAEc,CAAC,EAAE,CAAC,MAAMd,EAAE,EAAEoB,CAAC,EAAEN,EAAEd,EAAE,EAAEgB,CAAC,EAAE,EAAE,IAAS,EAAEV,IAAR,IAAW,CAACT,EAAE,GAAGiB,EAAEd,EAAE,GAAGgB,GAAGd,EAAEI,EAAE,EAAE,IAAII,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAGI,GAAGK,EAAEL,GAAG,IAAIC,EAAEf,EAAE,EAAEoB,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAGN,EAAEC,EAAEI,EAAE,IAAI,IAAI,MAAM,EAAE,IAAInB,EAAE,EAAEoB,CAAC,EAAEN,IAAI,CAAC,GAAGV,EAAE,GAAGU,GAAGJ,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAAC,GAAGF,EAAE,EAAEc,CAAC,EAAE,EAAEA,EAAEZ,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAEY,EAAE,SAAS,MAAMjB,CAAC,CAAC,KAAK,CAACG,EAAE,EAAEc,CAAC,EAAE,CAAC,MAAMd,EAAE,EAAEoB,CAAC,EAAEN,EAAEd,EAAE,EAAEgB,CAAC,EAAE,EAAE,GAAG,EAAEV,IAAI,EAAE,OAAOA,EAAEN,EAAE,GAAGmB,GAAGjB,EAAEI,EAAE,EAAE,IAAII,EAAE,KAAK,GAAG,EAAE,GAAG,IAAI,GAAGJ,GAAGS,EAAET,GAAG,IAAIQ,EAAEd,EAAE,EAAEoB,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAGd,EAAEQ,EAAEC,EAAE,IAAI,IAAI,MAAM,EAAE,IAAIf,EAAE,EAAEoB,CAAC,EAAEd,IAAI,CAAC,GAAGF,EAAE,GAAGE,GAAGI,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAAC,GAAGF,EAAE,EAAEM,CAAC,EAAE,EAAEA,EAAEJ,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAEI,EAAE,SAAS,MAAM,CAAC,CAAC,KAAK,CAACN,EAAE,EAAEM,CAAC,EAAE,CAAC,MAAMN,EAAE,EAAEoB,CAAC,EAAEd,EAAEN,EAAE,EAAEmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAS,EAAEtB,IAAR,IAAW,KAAK,CAAC,IAAIK,EAAE,EAAEL,EAAEa,EAAE,KAAK,EAAEJ,EAAEF,EAAEN,GAAGI,IAAI,EAAE,GAAG,CAAC,EAAEF,EAAEH,EAAEK,EAAE,CAAC,EAAEI,KAAK,EAAEJ,GAAG,EAAEF,GAAGc,EAAEjB,IAAIA,EAAE,EAAEK,GAAG,CAAC,EAAEI,KAAK,EAAET,GAAG,GAAQ,GAAGK,EAAEA,EAAE,EAAE,KAAf,KAAoB,CAAC,IAAIL,EAAE,IAAI,CAACC,EAAED,EAAEA,EAAEA,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEC,IAAI,EAAE,MAAMM,EAAE,GAAGY,GAAGd,EAAEQ,EAAE,KAAK,GAAGZ,EAAE,EAAE,EAAE,CAACD,EAAE,GAAGK,EAAEF,EAAE,GAAGe,EAAElB,EAAEK,EAAE,EAAE,EAAE,IAAI,GAAGA,GAAGY,EAAEZ,GAAG,IAAII,EAAEN,EAAE,EAAEgB,CAAC,GAAG,KAAK,GAAGhB,EAAE,EAAEgB,CAAC,EAAEd,EAAEF,EAAE,EAAEe,CAAC,EAAE,MAAM,CAAC,IAAI,GAAGb,EAAEI,EAAEQ,EAAE,IAAI,IAAI,MAAM,EAAE,IAAId,EAAE,EAAEgB,CAAC,EAAEd,EAAEA,EAAEL,IAAI,CAAC,GAAG,CAACO,EAAE,GAAGE,GAAGI,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAACF,EAAE,EAAEM,CAAC,EAAE,EAAE,MAAMT,CAAC,CAAC,GAAGG,EAAE,EAAEM,CAAC,EAAE,EAAEA,EAAEJ,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAE,CAACI,EAAE,KAAK,CAAC,CAAC,GAAG,EAAER,IAAI,EAAE,KAAK,CAACD,EAAE,GAAGS,EAAEN,EAAE,GAAGmB,GAAGjB,EAAEJ,EAAE,EAAE,IAAIY,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAGJ,GAAGS,EAAET,GAAG,IAAIQ,EAAEd,EAAE,EAAEgB,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAGV,EAAEQ,EAAEC,EAAE,IAAI,IAAI,MAAM,EAAE,IAAIf,EAAE,EAAEgB,CAAC,EAAEV,IAAI,CAAC,GAAGF,EAAE,GAAGE,GAAGI,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAAC,GAAGF,EAAE,EAAEM,CAAC,EAAE,EAAEA,EAAEJ,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAEI,EAAE,SAAS,MAAMT,CAAC,CAAC,KAAK,CAACG,EAAE,EAAEM,CAAC,EAAE,CAAC,MAAMN,EAAE,EAAEgB,CAAC,EAAEV,EAAEN,EAAE,EAAEmB,CAAC,EAAE,EAAE,IAAS,EAAErB,IAAR,IAAW,CAACD,EAAE,GAAGS,EAAEN,EAAE,GAAGmB,GAAGjB,EAAEJ,EAAE,EAAE,IAAIY,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAGJ,GAAGS,EAAET,GAAG,IAAIQ,EAAEd,EAAE,EAAEgB,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAGV,EAAEQ,EAAEC,EAAE,IAAI,IAAI,MAAM,EAAE,IAAIf,EAAE,EAAEgB,CAAC,EAAEV,IAAI,CAAC,GAAGF,EAAE,GAAGE,GAAGI,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAAC,GAAGF,EAAE,EAAEM,CAAC,EAAE,EAAEA,EAAEJ,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAEI,EAAE,SAAS,MAAMT,CAAC,CAAC,KAAK,CAACG,EAAE,EAAEM,CAAC,EAAE,CAAC,MAAMN,EAAE,EAAEgB,CAAC,EAAEV,EAAEN,EAAE,EAAEmB,CAAC,EAAE,EAAE,GAAG,EAAErB,IAAI,EAAE,KAAK,CAACD,EAAE,GAAGS,EAAEN,EAAE,GAAGmB,GAAGjB,EAAEJ,EAAE,EAAE,IAAIY,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAGJ,GAAGS,EAAET,GAAG,IAAIQ,EAAEd,EAAE,EAAEgB,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAGV,EAAEQ,EAAEC,EAAE,IAAI,IAAI,MAAM,EAAE,IAAIf,EAAE,EAAEgB,CAAC,EAAEV,IAAI,CAAC,GAAGF,EAAE,GAAGE,GAAGI,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAAC,GAAGF,EAAE,EAAEM,CAAC,EAAE,EAAEA,EAAEJ,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAEI,EAAE,SAAS,MAAMT,CAAC,CAAC,KAAK,CAACG,EAAE,EAAEM,CAAC,EAAE,CAAC,MAAMN,EAAE,EAAEgB,CAAC,EAAEV,EAAEN,EAAE,EAAEmB,CAAC,EAAE,EAAE,IAAS,EAAErB,IAAR,IAAW,CAACD,EAAE,GAAGS,EAAEN,EAAE,GAAGmB,GAAGjB,EAAEJ,EAAE,EAAE,IAAIY,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAGJ,GAAGS,EAAET,GAAG,IAAIQ,EAAEd,EAAE,EAAEgB,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAGV,EAAEQ,EAAEC,EAAE,IAAI,IAAI,MAAM,EAAE,IAAIf,EAAE,EAAEgB,CAAC,EAAEV,IAAI,CAAC,GAAGF,EAAE,GAAGE,GAAGI,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAAC,GAAGF,EAAE,EAAEM,CAAC,EAAE,EAAEA,EAAEJ,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAEI,EAAE,SAAS,MAAMT,CAAC,CAAC,KAAK,CAACG,EAAE,EAAEM,CAAC,EAAE,CAAC,MAAMN,EAAE,EAAEgB,CAAC,EAAEV,EAAEN,EAAE,EAAEmB,CAAC,EAAE,EAAE,GAAG,EAAErB,IAAI,EAAE,OAAOA,EAAEE,EAAE,GAAGe,GAAGb,EAAEJ,EAAE,EAAE,IAAIY,EAAE,KAAK,GAAG,EAAE,GAAG,IAAI,GAAGZ,GAAGgB,EAAEhB,GAAG,IAAIQ,EAAEN,EAAE,EAAEgB,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAGlB,EAAEQ,EAAEQ,EAAE,IAAI,IAAI,MAAM,EAAE,IAAId,EAAE,EAAEgB,CAAC,EAAElB,IAAI,CAAC,GAAGM,EAAE,GAAGN,GAAGY,EAAE,KAAK,GAAGR,EAAE,EAAE,EAAE,CAAC,GAAGF,EAAE,EAAEF,CAAC,EAAE,EAAEA,EAAEI,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAEJ,EAAE,SAAS,MAAM,CAAC,CAAC,KAAK,CAACE,EAAE,EAAEF,CAAC,EAAE,CAAC,MAAME,EAAE,EAAEgB,CAAC,EAAElB,EAAEE,EAAE,EAAEe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAS,EAAElB,IAAR,IAAW,KAAK,CAAC,IAAIgH,GAAG3G,EAAEQ,EAAE,IAAI,EAAEO,CAAC,EAAEpB,EAAEM,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,GAAG,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAE,GAAGL,EAAEmB,EAAG,KAAI,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEL,GAAG,CAAC,EAAEK,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,KAAK,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,KAAK,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,KAAK,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,KAAK,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,KAAK,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEA,EAAEM,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEuF,GAAG9E,EAAEI,EAAE,IAAI,EAAEZ,EAAEY,EAAE,IAAI,CAAC,EAAEuB,GAAEvB,EAAEJ,EAAEe,EAAEX,EAAE,IAAI,CAAC,EAAEuB,GAAEvB,EAAE,GAAG,EAAEY,EAAEZ,EAAE,IAAI,EAAEa,EAAEb,EAAE,IAAI,CAAC,EAAEuB,GAAEvB,EAAE,GAAG,EAAEa,EAAEF,CAAC,EAAEY,GAAEvB,EAAE,IAAI,EAAEJ,EAAEgB,CAAC,EAAEiD,GAAGjE,EAAEI,EAAER,CAAC,EAAE+B,GAAEnC,EAAEQ,EAAEe,CAAC,EAAEY,GAAER,EAAEf,EAAE,IAAI,EAAEY,EAAEC,CAAC,EAAEU,GAAEP,EAAEhB,EAAE,IAAI,EAAEa,EAAEF,CAAC,EAAEY,GAAET,EAAEd,EAAE,IAAI,EAAEJ,EAAEgB,CAAC,EAAEuF,GAAGhH,EAAEa,EAAE,IAAI,EAAEZ,CAAC,EAAEyE,GAAGjE,EAAEI,EAAEb,CAAC,EAAEoC,GAAEnC,EAAEQ,EAAEe,CAAC,EAAEY,GAAER,EAAEH,EAAEC,CAAC,EAAEU,GAAEP,EAAEH,EAAEF,CAAC,EAAEY,GAAET,EAAElB,EAAEgB,CAAC,EAAEuF,GAAGhH,EAAEa,EAAE,IAAI,EAAEZ,CAAC,EAAEyE,GAAGjE,EAAEI,EAAEb,CAAC,EAAEoC,GAAEnC,EAAEQ,EAAEe,CAAC,EAAEY,GAAER,EAAEH,EAAEC,CAAC,EAAEU,GAAEP,EAAEH,EAAEF,CAAC,EAAEY,GAAET,EAAElB,EAAEgB,CAAC,EAAEuF,GAAGhH,EAAEa,EAAE,IAAI,EAAEZ,CAAC,EAAEyE,GAAGjE,EAAEI,EAAEb,CAAC,EAAEoC,GAAEnC,EAAEQ,EAAEe,CAAC,EAAEY,GAAER,EAAEH,EAAEC,CAAC,EAAEU,GAAEP,EAAEH,EAAEF,CAAC,EAAEY,GAAET,EAAElB,EAAEgB,CAAC,EAAEuF,GAAGhH,EAAEa,EAAE,KAAK,EAAEZ,CAAC,EAAEyE,GAAGjE,EAAEI,EAAEb,CAAC,EAAEoC,GAAEnC,EAAEQ,EAAEe,CAAC,EAAEY,GAAER,EAAEH,EAAEC,CAAC,EAAEU,GAAEP,EAAEH,EAAEF,CAAC,EAAEY,GAAET,EAAElB,EAAEgB,CAAC,EAAEuF,GAAGhH,EAAEa,EAAE,KAAK,EAAEZ,CAAC,EAAEyE,GAAGjE,EAAEI,EAAEb,CAAC,EAAEoC,GAAEnC,EAAEQ,EAAEe,CAAC,EAAEY,GAAER,EAAEH,EAAEC,CAAC,EAAEU,GAAEP,EAAEH,EAAEF,CAAC,EAAEY,GAAET,EAAElB,EAAEgB,CAAC,EAAEuF,GAAGhH,EAAEa,EAAE,KAAK,EAAEZ,CAAC,EAAEyE,GAAGjE,EAAEI,EAAEb,CAAC,EAAEoC,GAAEnC,EAAEQ,EAAEe,CAAC,EAAEY,GAAER,EAAEH,EAAEC,CAAC,EAAEU,GAAEP,EAAEH,EAAEF,CAAC,EAAEY,GAAET,EAAElB,EAAEgB,CAAC,EAAEuF,GAAGnG,EAAE,KAAK,EAAEZ,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,GAAG,CAAC,EAAE,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAE+C,GAAE/C,EAAE,GAAG,EAAEgD,GAAEhD,EAAE,GAAG,EAAEJ,EAAE,MAAM,CAAC,EAAE,CAACA,EAAE,CAAC,GAAG,CAACO,GAAGN,EAAEY,EAAE,KAAK,GAAGb,EAAE,CAAC,GAAG,CAACO,GAAGF,EAAEQ,EAAE,KAAK,GAAGb,EAAE,CAAC,EAAE,CAAC,GAAG,EAAEO,GAAGE,EAAER,IAAIA,EAAED,EAAE,EAAE,GAAG,CAAC,EAAEO,EAAEN,EAAEI,EAAE,CAAC,GAAG,MAAML,EAAEA,EAAEC,CAAC,CAAC,IAAI,EAAED,GAAG,EAAE,MAAM,EAAE,KAAKuF,GAAGlF,EAAEQ,EAAE,IAAI,EAAET,CAAC,EAAEH,EAAED,GAAG,GAAGS,EAAEN,EAAEH,GAAGa,EAAE,KAAK,GAAG,CAAC,IAAI,GAAGuB,GAAEpC,EAAEa,EAAE,IAAI,EAAER,EAAEmB,CAAC,EAAEY,GAAER,EAAEH,EAAEC,CAAC,EAAEU,GAAEP,EAAEH,EAAEF,CAAC,EAAEY,GAAET,EAAEtB,EAAEoB,CAAC,EAAEiD,GAAGrE,EAAEL,GAAGa,EAAE,IAAI,GAAGH,IAAG,IAAID,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAEA,IAAI,IAAI2B,GAAEpC,EAAEa,EAAE,IAAI,EAAER,EAAEQ,EAAE,IAAI,EAAEW,CAAC,EAAEY,GAAER,EAAEH,EAAEC,CAAC,EAAEU,GAAEP,EAAEH,EAAEF,CAAC,EAAEY,GAAET,EAAEtB,EAAEoB,CAAC,EAAEkD,GAAGtE,EAAEL,GAAGa,EAAE,IAAI,GAAGH,IAAG,EAAED,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,GAAGiC,GAAEvC,EAAEF,GAAGY,EAAE,KAAK,GAAG,CAAC,IAAI,GAAGuB,GAAEpC,EAAEa,EAAE,IAAI,EAAER,EAAEQ,EAAE,IAAI,EAAEW,CAAC,EAAEY,GAAER,EAAEH,EAAEC,CAAC,EAAEU,GAAEP,EAAEH,EAAEF,CAAC,EAAEY,GAAET,EAAEtB,EAAEoB,CAAC,EAAEmD,GAAGvE,EAAEL,EAAEU,IAAG,IAAIgC,MAAK,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAEA,KAAI,IAAIN,GAAEvB,EAAE,IAAI,EAAE8B,GAAE9B,EAAE,IAAI,EAAEW,CAAC,EAAEY,GAAER,EAAEH,EAAEC,CAAC,EAAEU,GAAEP,EAAEH,EAAEF,CAAC,EAAEY,GAAET,EAAEgB,GAAElB,CAAC,EAAEM,EAAEzB,EAAEO,EAAE,KAAK,CAAC,EAAEmB,EAAE1B,EAAEO,EAAE,KAAK,CAAC,EAAEoB,EAAE3B,EAAEO,EAAE,KAAK,CAAC,EAAEqB,EAAE5B,EAAEO,EAAE,KAAK,CAAC,EAAEsB,EAAE7B,EAAEO,EAAE,KAAK,CAAC,EAAEwB,EAAE/B,EAAEO,EAAE,KAAK,CAAC,EAAEE,EAAET,EAAEO,EAAE,KAAK,CAAC,EAAEyB,GAAEhC,EAAEO,EAAE,KAAK,CAAC,EAAE0B,GAAEjC,EAAEO,EAAE,KAAK,CAAC,EAAE2B,GAAElC,EAAEO,EAAE,KAAK,CAAC,EAAE4B,GAAEnC,EAAEO,EAAE,KAAK,CAAC,EAAEU,EAAEjB,EAAEO,EAAE,KAAK,CAAC,EAAEM,EAAEb,EAAEO,EAAE,KAAK,CAAC,EAAES,EAAEhB,EAAEO,EAAE,KAAK,CAAC,EAAEK,EAAEZ,EAAEO,EAAE,KAAK,CAAC,EAAEO,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEI,EAAEX,EAAEO,EAAE,KAAK,CAAC,EAAEJ,EAAEH,EAAEO,EAAE,KAAK,CAAC,EAAER,EAAEC,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEM,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAER,EAAEL,EAAEM,EAAEO,EAAE,KAAK,CAAC,EAAEJ,EAAEQ,EAAEX,EAAEO,EAAE,KAAK,CAAC,EAAEO,EAAEF,EAAEZ,EAAEO,EAAE,KAAK,CAAC,EAAES,EAAEH,EAAEb,EAAEO,EAAE,KAAK,CAAC,EAAEU,EAAEkB,GAAEnC,EAAEO,EAAE,KAAK,CAAC,EAAE2B,GAAED,GAAEjC,EAAEO,EAAE,KAAK,CAAC,EAAEyB,GAAEvB,EAAET,EAAEO,EAAE,KAAK,CAAC,EAAEwB,EAAEF,EAAE7B,EAAEO,EAAE,KAAK,CAAC,EAAEqB,EAAED,EAAE3B,EAAEO,EAAE,KAAK,CAAC,EAAEmB,EAAED,EAAEzB,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEK,EAAEC,EAAEO,EAAE,KAAK,CAAC,EAAEJ,EAAEQ,EAAEX,EAAEO,EAAE,KAAK,CAAC,EAAEK,EAAEE,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEM,EAAEG,EAAEhB,EAAEO,EAAE,KAAK,CAAC,EAAEU,EAAEkB,GAAEnC,EAAEO,EAAE,KAAK,CAAC,EAAE0B,GAAEC,GAAElC,EAAEO,EAAE,KAAK,CAAC,EAAEE,EAAEuB,GAAEhC,EAAEO,EAAE,KAAK,CAAC,EAAEsB,EAAEE,EAAE/B,EAAEO,EAAE,KAAK,CAAC,EAAEoB,EAAEC,EAAE5B,EAAEO,EAAE,KAAK,CAAC,EAAEkB,EAAEC,EAAEI,GAAEV,EAAEiB,GAAE,IAAI3C,EAAEU,IAAG,EAAEgC,GAAE,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAEN,GAAEX,EAAEA,EAAEzB,CAAC,EAAEoC,GAAEZ,EAAExB,EAAE,GAAG,EAAE2B,CAAC,EAAE0B,GAAE/C,EAAEO,EAAE,KAAK,CAAC,EAAEyC,GAAEhD,EAAEO,EAAE,KAAK,CAAC,EAAE6B,GAAEpC,EAAEO,EAAE,KAAK,CAAC,EAAE8B,GAAErC,EAAEO,EAAE,KAAK,CAAC,EAAEM,EAAEb,EAAEO,EAAE,KAAK,CAAC,EAAES,EAAEhB,EAAEO,EAAE,KAAK,CAAC,EAAEK,EAAEZ,EAAEO,EAAE,KAAK,CAAC,EAAEO,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEI,EAAEX,EAAEO,EAAE,KAAK,CAAC,EAAEJ,EAAEH,EAAEO,EAAE,KAAK,CAAC,EAAE+B,GAAEtC,EAAEO,EAAE,KAAK,CAAC,EAAEgC,GAAEvC,EAAEO,EAAE,KAAK,CAAC,EAAEiC,GAAExC,EAAEO,EAAE,KAAK,CAAC,EAAEkC,GAAEzC,EAAEO,EAAE,KAAK,CAAC,EAAEmC,GAAE1C,EAAEO,EAAE,KAAK,CAAC,EAAEoC,GAAE3C,EAAEO,EAAE,KAAK,CAAC,EAAEkB,EAAEzB,EAAEO,EAAE,KAAK,CAAC,EAAEmB,EAAE1B,EAAEO,EAAE,KAAK,CAAC,EAAEoB,EAAE3B,EAAEO,EAAE,KAAK,CAAC,EAAEqB,EAAE5B,EAAEO,EAAE,KAAK,CAAC,EAAEsB,EAAE7B,EAAEO,EAAE,KAAK,CAAC,EAAEwB,EAAE/B,EAAEO,EAAE,KAAK,CAAC,EAAEE,EAAET,EAAEO,EAAE,KAAK,CAAC,EAAEyB,GAAEhC,EAAEO,EAAE,KAAK,CAAC,EAAE0B,GAAEjC,EAAEO,EAAE,KAAK,CAAC,EAAE2B,GAAElC,EAAEO,EAAE,KAAK,CAAC,EAAE4B,GAAEnC,EAAEO,EAAE,KAAK,CAAC,EAAEU,EAAEjB,EAAEO,EAAE,KAAK,CAAC,EAAER,EAAEC,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEM,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAER,EAAEL,EAAEM,EAAEO,EAAE,KAAK,CAAC,EAAEU,EAAEkB,GAAEnC,EAAEO,EAAE,KAAK,CAAC,EAAE0B,GAAEC,GAAElC,EAAEO,EAAE,KAAK,CAAC,EAAEE,EAAEuB,GAAEhC,EAAEO,EAAE,KAAK,CAAC,EAAEsB,EAAEE,EAAE/B,EAAEO,EAAE,KAAK,CAAC,EAAEoB,EAAEC,EAAE5B,EAAEO,EAAE,KAAK,CAAC,EAAEkB,EAAEC,EAAE1B,EAAEO,EAAE,KAAK,CAAC,EAAEmC,GAAEC,GAAE3C,EAAEO,EAAE,KAAK,CAAC,EAAEiC,GAAEC,GAAEzC,EAAEO,EAAE,KAAK,CAAC,EAAE+B,GAAEC,GAAEvC,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEK,EAAEC,EAAEO,EAAE,KAAK,CAAC,EAAEU,EAAEkB,GAAEnC,EAAEO,EAAE,KAAK,CAAC,EAAE2B,GAAED,GAAEjC,EAAEO,EAAE,KAAK,CAAC,EAAEyB,GAAEvB,EAAET,EAAEO,EAAE,KAAK,CAAC,EAAEwB,EAAEF,EAAE7B,EAAEO,EAAE,KAAK,CAAC,EAAEqB,EAAED,EAAE3B,EAAEO,EAAE,KAAK,CAAC,EAAEmB,EAAED,EAAEzB,EAAEO,EAAE,KAAK,CAAC,EAAEoC,GAAED,GAAE1C,EAAEO,EAAE,KAAK,CAAC,EAAEkC,GAAED,GAAExC,EAAEO,EAAE,KAAK,CAAC,EAAEgC,GAAED,GAAEb,EAAEtB,GAAG,EAAEuB,EAAE1B,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAEkB,EAAEC,EAAEC,EAAEhB,GAAG,EAAEiB,EAAE5B,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAEoB,EAAEC,EAAEC,EAAEf,GAAG,EAAEiB,EAAE/B,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAEsB,EAAEE,EAAEtB,EAAEG,GAAG,EAAEoB,GAAEhC,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAEE,EAAEuB,GAAEC,GAAEjB,GAAG,EAAEkB,GAAElC,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAE0B,GAAEC,GAAEC,GAAEtB,GAAG,EAAEI,EAAEjB,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAE4B,GAAElB,EAAEJ,EAAEwB,IAAG,EAAErB,EAAEhB,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAEM,EAAEG,EAAEJ,EAAEwB,IAAG,EAAEtB,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAEK,EAAEE,EAAEH,EAAEqC,IAAG,EAAE7C,EAAEH,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAEI,EAAER,EAAEJ,EAAEgD,IAAG,EAAErD,EAAEM,EAAEO,EAAE,KAAK,CAAC,EAAEP,EAAEO,EAAE,KAAK,CAAC,EAAER,EAAEL,EAAEM,EAAEO,EAAE,KAAK,CAAC,EAAEkB,EAAEC,EAAE1B,EAAEO,EAAE,KAAK,CAAC,EAAEoB,EAAEC,EAAE5B,EAAEO,EAAE,KAAK,CAAC,EAAEsB,EAAEE,EAAE/B,EAAEO,EAAE,KAAK,CAAC,EAAEE,EAAEuB,GAAEhC,EAAEO,EAAE,KAAK,CAAC,EAAE0B,GAAEC,GAAElC,EAAEO,EAAE,KAAK,CAAC,EAAEU,EAAEkB,GAAEnC,EAAEO,EAAE,KAAK,CAAC,EAAEM,EAAEG,EAAEhB,EAAEO,EAAE,KAAK,CAAC,EAAEK,EAAEE,EAAEd,EAAEO,EAAE,KAAK,CAAC,EAAEJ,EAAEQ,EAAEX,EAAEO,EAAE,KAAK,CAAC,EAAEb,EAAEK,GAAG+B,GAAEhC,EAAES,EAAE,IAAI,EAAEW,CAAC,EAAEY,GAAEgB,GAAE3B,EAAEC,CAAC,EAAEU,GAAEe,GAAEzB,EAAEF,CAAC,EAAExB,EAAEC,EAAE,EAAE,GAAG,EAAEA,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAGD,EAAEA,EAAE,EAAE,EAAEC,EAAE,QAAQ,CAAC,KAAK,CAACoB,EAAER,EAAE,KAAK,EAAEwG,GAAGrH,EAAEW,EAAE,IAAI,EAAEP,CAAC,EAAEmD,GAAE,GAAGC,GAAE0E,GAAGlI,EAAED,CAAC,EAAEmB,IAAI,EAAEnB,KAAK,EAAEC,GAAGuD,GAAEC,IAAG2E,GAAGpI,EAAEC,EAAE,EAAE,CAAC,CAAC,OAAOqB,EAAEV,EAAE,IAAI,EAAEO,CAAC,CAAC,SAASkB,GAAErC,EAAEC,EAAEC,EAAE,CAAC,IAAIE,EAAEC,EAAEC,EAAEE,EAAEE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAEC,GAAEC,GAAEtB,GAAEuB,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,EAAEC,EAAEC,EAAEC,GAAEC,GAAEC,GAAEC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,EAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAExB,EAAGuD,EAAGnH,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEkB,EAAEhB,GAAG,GAAG4E,IAAIrD,EAAEpB,EAAEN,EAAE,IAAI,CAAC,IAAI,EAAEwC,GAAEuC,IAAI,EAAE,EAAEd,GAAGzC,EAAEwC,IAAIW,GAAG2C,EAAGzC,GAAGvE,EAAEL,GAAG,CAAC,EAAEI,EAAEwE,IAAI,GAAGzE,EAAEE,EAAEN,EAAE,IAAI,CAAC,EAAEO,EAAEH,GAAG,EAAE,GAAG2D,EAAG,EAAEA,EAAGvC,EAAEyC,GAAG,EAAEF,EAAGC,KAAK,EAAEW,KAAK,EAAEZ,EAAG,EAAE,EAAEA,EAAGQ,GAAG+C,EAAG7G,EAAEH,EAAEL,EAAE,GAAG,CAAC,EAAEqB,EAAEb,GAAG,GAAGkE,GAAGrE,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAE2E,IAAI,EAAE,EAAEV,GAAGzC,EAAEuC,EAAG,EAAEE,IAAID,GAAGO,GAAGP,GAAG,KAAK,EAAEO,KAAK,EAAEN,GAAG,EAAE,EAAEA,GAAGF,GAAIQ,GAAG+C,EAAGlG,EAAEd,EAAEL,EAAE,IAAI,CAAC,EAAE0B,EAAEP,GAAG,GAAGc,GAAGN,EAAEtB,EAAEN,EAAE,IAAI,CAAC,IAAI,EAAEyC,GAAEP,GAAG,EAAE,GAAG8B,GAAG,EAAEA,GAAGxC,EAAEyC,GAAG,EAAED,GAAGD,IAAK,EAAEQ,KAAK,EAAEP,GAAG,EAAE,EAAEA,GAAGC,IAAIW,GAAG0C,EAAG/F,EAAEjB,EAAEL,EAAE,IAAI,CAAC,EAAEkC,GAAEZ,GAAG,GAAGgD,GAAGjE,EAAEN,EAAE,GAAG,CAAC,EAAEa,EAAE0D,IAAI,EAAE,GAAGR,EAAG,EAAEA,EAAGvC,EAAEwC,GAAG,EAAED,EAAGE,KAAK,EAAEW,KAAK,EAAEb,EAAG,EAAE,EAAEA,EAAGC,GAAGC,GAAGA,GAAGqD,EAAGzF,EAAEvB,EAAEL,EAAE,IAAI,CAAC,EAAEyC,GAAEb,GAAG,GAAGO,IAAGN,EAAExB,EAAEN,EAAE,GAAG,CAAC,IAAI,EAAE2C,GAAEP,IAAG,EAAE,EAAE2B,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGA,GAAGC,GAAG,KAAK,EAAEA,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGR,GAAEc,GAAG/D,EAAEL,EAAE,IAAI,CAAC,EAAEgE,IAAIO,GAAG8C,EAAGjD,GAAGhB,EAAEgB,IAAI,GAAGO,GAAGtE,EAAEN,GAAG,CAAC,EAAEiB,EAAE2D,IAAI,EAAE,GAAGZ,GAAG,EAAEA,GAAGxC,EAAEuC,EAAG,EAAEC,GAAGC,KAAK,EAAEO,KAAK,EAAER,GAAG,EAAE,EAAEA,GAAGpB,GAAEtC,EAAEL,EAAE,IAAI,CAAC,EAAE8D,GAAIS,GAAG8C,EAAG5C,GAAGhE,GAAEkC,GAAE,EAAE,EAAEb,EAAE2C,IAAI,GAAGrC,IAAGL,EAAE1B,EAAEN,EAAE,IAAI,CAAC,IAAI,EAAE6C,GAAER,IAAG,EAAE,GAAG4B,GAAG,EAAEA,GAAGzC,EAAEwC,GAAG,EAAEC,GAAGF,IAAK,EAAES,KAAK,EAAEP,GAAG,EAAE,EAAEA,GAAGkB,GAAG7E,EAAEL,EAAE,IAAI,CAAC,EAAE+D,IAAIM,GAAGgD,EAAGpD,GAAGxD,GAAEyE,GAAG,EAAE,EAAE1D,EAAEyC,IAAI,GAAGM,GAAGlE,EAAEN,EAAE,IAAI,CAAC,EAAEkB,EAAEsD,IAAI,EAAE,GAAGT,EAAG,EAAEA,EAAGvC,EAAEyC,GAAG,EAAEF,EAAGC,KAAK,EAAEM,KAAK,EAAEP,EAAG,EAAE,EAAEA,EAAGP,GAAElD,EAAEL,EAAE,IAAI,CAAC,EAAEA,EAAEqH,EAAGhD,GAAG5D,GAAE8C,GAAE,EAAE,EAAEnC,EAAEiD,IAAI,GAAGvD,IAAGkB,EAAE3B,EAAEN,EAAE,IAAI,CAAC,IAAI,EAAE8C,GAAE/B,IAAG,EAAE,EAAEgD,EAAGvC,EAAEuC,EAAG,EAAEI,GAAGnE,EAAEC,EAAE+D,GAAG,EAAE/D,EAAED,IAAI,EAAEC,IAAI,EAAE8D,EAAG,EAAE,EAAEA,EAAG/D,EAAEsH,EAAG3C,GAAG,EAAExE,EAAEgB,CAAC,EAAE4C,EAAGvC,EAAEwC,GAAGsD,EAAGzC,GAAGxE,EAAEqB,EAAEqB,GAAErB,GAAG,EAAE,EAAEuC,GAAGzC,EAAEuC,EAAG,EAAEE,IAAIjE,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGF,EAAGuD,EAAG7G,EAAEa,EAAEM,EAAEoB,GAAEpB,GAAG,EAAE,EAAEoC,GAAGxC,EAAEyC,GAAG,EAAED,IAAIhE,EAAE+D,EAAG/D,EAAE,KAAK,EAAE+D,IAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGC,GAAGqD,EAAG/C,GAAG1D,EAAEO,EAAEO,CAAC,EAAEoC,EAAGvC,EAAEwC,GAAG,EAAED,GAAI/D,EAAEiE,GAAGjE,EAAE,KAAK,EAAEiE,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAG/F,EAAEY,GAAEL,EAAEmB,GAAEnB,GAAG,EAAE,EAAEiC,EAAGvC,EAAEuC,EAAG,EAAEA,GAAI/D,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAG1C,GAAG3D,EAAEY,EAAEa,EAAC,EAAEqB,EAAGvC,EAAEuC,EAAG,EAAEA,GAAI/D,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAGjD,GAAG3D,GAAE2D,GAAG,EAAE,EAAE/B,GAAE+B,IAAI,GAAGrC,EAAEkB,GAAElB,GAAG,EAAE,EAAEiC,GAAGzC,EAAEuC,EAAG,EAAEE,IAAIjE,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGF,EAAGuD,EAAG9C,GAAGtD,EAAEwD,GAAG3C,CAAC,EAAEiC,GAAGxC,EAAEyC,GAAG,EAAED,IAAIhE,EAAE+D,EAAG/D,EAAE,KAAK,EAAE+D,IAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGC,GAAGqD,EAAGpD,GAAGzC,EAAEQ,EAAEkB,GAAElB,GAAG,EAAE,EAAE8B,EAAGvC,EAAEwC,GAAG,EAAED,GAAI/D,EAAEiE,GAAGjE,EAAE,KAAK,EAAEiE,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAGhD,GAAGjD,EAAEjB,EAAEG,CAAC,EAAEwD,EAAGvC,EAAEuC,EAAG,EAAEsB,GAAGrF,EAAEgE,GAAGhE,EAAE,EAAEgF,GAAGhF,IAAI,EAAEgE,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAG/D,EAAEsH,EAAGnH,EAAEgB,EAAEe,EAAEO,EAAC,EAAEsB,EAAGvC,EAAEwC,GAAGsD,EAAGzC,GAAGxE,EAAEsE,GAAG,CAAC,EAAEZ,EAAGvC,EAAEuC,EAAG,EAAEA,GAAI/D,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAG/C,GAAG1D,EAAEJ,EAAEa,CAAC,EAAE2C,GAAGzC,EAAEuC,EAAG,EAAEE,IAAIjE,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGF,EAAGuD,EAAGlG,EAAEO,EAAES,GAAEO,EAAC,EAAEqB,GAAGxC,EAAEyC,GAAG,EAAED,IAAIhE,EAAE+D,EAAG/D,EAAE,KAAK,EAAE+D,IAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGC,GAAGqD,EAAG1C,GAAG3D,EAAEM,EAAEY,EAAC,EAAE4B,EAAGvC,EAAEwC,GAAG,EAAED,GAAI/D,EAAEiE,GAAGjE,EAAE,KAAK,EAAEiE,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAG/E,GAAE7B,GAAEmB,EAAE,EAAE,EAAEuB,EAAEb,IAAG,GAAGF,GAAEQ,EAAC,EAAEkB,EAAGvC,EAAEuC,EAAG,EAAEA,GAAI/D,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAG9C,GAAGtD,EAAEmD,GAAG/B,EAAC,EAAEyB,EAAGvC,EAAEuC,EAAG,EAAEA,GAAI/D,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAG5C,GAAG3C,EAAEhB,GAAE+B,EAAC,EAAEmB,GAAGzC,EAAEuC,EAAG,EAAEE,IAAIjE,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGF,EAAGuD,EAAGpD,GAAGzC,EAAErB,EAAEG,CAAC,EAAEyD,GAAGxC,EAAEyC,GAAG,EAAED,IAAIhE,EAAE+D,EAAG/D,EAAE,KAAK,EAAE+D,IAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGC,GAAGqD,EAAGhD,GAAGjD,EAAE0D,GAAGvC,EAAC,EAAEuB,EAAGvC,EAAEwC,GAAG,EAAEP,GAAEzD,EAAEiE,GAAGjE,EAAE,EAAE0D,GAAGK,EAAG/D,IAAI,EAAEiE,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGJ,GAAG3D,EAAEA,EAAE,SAAS,EAAE4D,GAAGG,EAAG/D,IAAI,EAAE,SAAS+D,EAAG,EAAE,EAAEA,EAAGE,IAAI,SAASF,IAAK,EAAE/D,IAAI,GAAG+D,GAAIA,GAAI,IAAIiB,GAAG,EAAEK,GAAGrF,EAAEiE,GAAGoB,GAAG,EAAEtB,EAAG/D,IAAI,EAAEiE,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGF,GAAG7D,EAAEA,EAAE,SAAS,EAAE+D,EAAG9D,GAAG+D,IAAIC,GAAGjE,IAAI,EAAE,SAAS+D,EAAG,EAAE,EAAEA,IAAK,IAAI,EAAEA,GAAI/D,GAAGiE,IAAI,SAASA,KAAK,EAAEjE,IAAI,IAAImE,GAAG,KAAK,EAAEF,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGkB,GAAGhF,GAAG+D,GAAGhE,GAAG,SAAS,EAAEA,EAAE+D,EAAG9D,IAAI,EAAE,SAAS8D,EAAG,EAAE,EAAEA,EAAGzD,EAAEP,EAAE,IAAI,CAAC,EAAEiE,IAAI,UAAU/D,GAAGA,EAAEqH,EAAGnH,EAAEgB,EAAEiB,GAAEO,EAAC,EAAEoB,EAAGvC,EAAEwC,GAAGsD,EAAGzC,GAAGxE,EAAEkE,GAAG1D,CAAC,EAAEoD,GAAGzC,EAAEuC,EAAG,EAAEE,IAAIhE,EAAE+D,GAAG/D,EAAE,KAAK,EAAE+D,KAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGD,IAAID,EAAG9D,IAAIA,EAAEqH,EAAG1C,GAAG3D,EAAER,EAAEa,CAAC,GAAG,EAAEyC,EAAGvC,EAAEyC,GAAG,EAAEF,EAAG9D,IAAI,EAAE+D,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAGrH,EAAES,GAAEU,EAAE,EAAE,EAAE8D,GAAGjF,GAAG,GAAGoC,GAAEQ,EAAC,EAAEkB,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGC,GAAGD,GAAG,KAAK,EAAEC,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGE,IAAIE,GAAGmD,EAAG9C,GAAGtD,EAAE8D,GAAGtE,GAAEa,EAAE,EAAE,EAAE+B,EAAE0B,IAAI,EAAE,GAAGhB,GAAG,EAAEA,GAAGxC,EAAEuC,EAAG,EAAEC,GAAGC,KAAK,EAAEE,KAAK,EAAEH,GAAG,EAAE,EAAEA,GAAGG,GAAGmD,EAAGvG,GAAE+B,GAAEP,GAAEa,CAAC,EAAEW,EAAGvC,EAAEwC,GAAG,EAAED,GAAIE,GAAGE,GAAGF,GAAG,KAAK,EAAEE,KAAK,EAAEJ,EAAG,EAAE,EAAEA,EAAGC,IAAIG,GAAGmD,EAAGlH,EAAEG,EAAE8D,GAAG/B,EAAC,GAAG2B,GAAG,EAAEA,GAAGzC,EAAEuC,EAAG,EAAEE,GAAGD,KAAK,EAAEG,KAAK,EAAEF,GAAG,EAAE,EAAEA,GAAGE,GAAGmD,EAAG5C,GAAG3C,EAAEgD,GAAGvC,EAAC,EAAEuB,EAAGvC,EAAEyC,GAAG,EAAEF,GAAIC,GAAGG,GAAGH,GAAG,KAAK,EAAEG,KAAK,EAAEJ,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAGpD,GAAGzC,EAAEkD,GAAG,CAAC,EAAEZ,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGC,GAAGD,GAAG,KAAK,EAAEC,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGE,IAAIE,GAAGmD,EAAGhD,GAAGjD,EAAEa,EAAEO,EAAC,GAAGuB,GAAG,EAAEA,GAAGxC,EAAEuC,EAAG,EAAEU,GAAGR,GAAGqB,GAAGrB,KAAK,EAAEE,KAAK,EAAEH,GAAG,EAAE,EAAEA,GAAGD,EAAGuD,EAAG1C,GAAG3D,EAAEd,EAAEgB,CAAC,EAAE6C,GAAGxC,EAAEyC,IAAIE,GAAGmD,EAAGzC,GAAGxE,EAAEyB,EAAEmB,EAAC,GAAGc,EAAG,EAAEA,EAAGvC,EAAEwC,GAAG,EAAED,EAAGE,KAAK,EAAEE,KAAK,EAAEJ,EAAG,EAAE,EAAEA,EAAGI,GAAGH,GAAGtD,GAAED,EAAE,EAAE,EAAEuD,IAAII,GAAGkD,EAAGtD,GAAGoB,GAAGpB,IAAI,GAAGhC,EAAEkB,EAAC,GAAGe,GAAG,EAAEA,GAAGzC,EAAEuC,EAAG,EAAEE,GAAGD,KAAK,EAAEI,KAAK,EAAEH,GAAG,EAAE,EAAEA,GAAGG,GAAGkD,EAAG9C,GAAGtD,EAAEjB,EAAEiF,EAAE,EAAEnB,EAAGvC,EAAEyC,GAAG,EAAEF,GAAIC,GAAGI,GAAGJ,GAAG,KAAK,EAAEI,KAAK,EAAEL,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAGtC,GAAG1B,EAAErB,EAAEkB,EAAC,EAAEY,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGC,GAAGD,GAAG,KAAK,EAAEC,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGE,IAAIG,GAAGkD,EAAGlH,EAAEG,EAAEgC,GAAEa,CAAC,GAAGY,GAAG,EAAEA,GAAGxC,EAAEuC,EAAG,EAAEC,GAAGC,KAAK,EAAEG,KAAK,EAAEJ,GAAG,EAAE,EAAEA,GAAGI,GAAGkD,EAAGjD,GAAG/B,GAAEZ,EAAEqB,EAAC,EAAEgB,EAAGvC,EAAEwC,GAAG,EAAED,GAAIE,GAAGG,GAAGH,GAAG,KAAK,EAAEG,KAAK,EAAEL,EAAG,EAAE,EAAEA,EAAGC,IAAII,GAAGkD,EAAG3C,GAAG,EAAED,GAAG3C,CAAC,GAAGkC,GAAG,EAAEA,GAAGzC,EAAEuC,EAAG,EAAEE,GAAGD,KAAK,EAAEI,KAAK,EAAEH,GAAG,EAAE,EAAEA,GAAGG,GAAGkD,EAAGpD,GAAGzC,EAAEG,EAAEoB,EAAC,EAAEe,EAAGvC,EAAEyC,GAAG,EAAEF,GAAIC,GAAGI,GAAGJ,GAAG,KAAK,EAAEI,KAAK,EAAEL,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAGhD,GAAGjD,EAAEkD,GAAG1D,CAAC,EAAEkD,EAAGvC,EAAEuC,EAAG,EAAEwB,GAAGvB,GAAGC,GAAGD,GAAG,EAAEI,GAAGJ,KAAK,EAAEC,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGA,EAAGuD,EAAGvD,EAAGrD,GAAEP,EAAE,EAAE,EAAE4D,GAAI,GAAG1B,GAAEQ,EAAC,EAAEmB,GAAGxC,EAAEyC,GAAGqD,EAAGzC,GAAGxE,EAAEuE,GAAG3D,CAAC,EAAE+C,GAAGxC,EAAEwC,GAAG,EAAEA,IAAID,EAAGE,GAAGF,EAAG,KAAK,EAAEE,KAAK,EAAED,GAAG,EAAE,EAAEA,GAAGC,IAAIE,GAAGmD,EAAG9C,GAAGtD,EAAEiD,GAAGiB,EAAE,GAAGrB,EAAG,EAAEA,EAAGvC,EAAEwC,GAAG,EAAE/D,GAAG+D,GAAGsD,EAAGrH,EAAEiF,GAAGnE,GAAE+B,EAAC,GAAGmB,GAAG,EAAEA,GAAGzC,GAAGyC,KAAK,EAAEE,KAAK,EAAEJ,EAAG,EAAE,EAAEA,GAAI,EAAEE,GAAGhE,IAAI,EAAE+D,KAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGD,GAAGsD,EAAGlH,EAAEG,EAAEyE,GAAG1B,CAAC,EAAES,EAAGvC,EAAEyC,GAAG,EAAEF,GAAI9D,EAAE+D,GAAG/D,EAAE,KAAK,EAAE+D,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAGvC,GAAGvC,GAAED,GAAEa,CAAC,EAAEW,EAAGvC,EAAEuC,EAAG,EAAEA,GAAI9D,EAAE+D,GAAG/D,EAAE,KAAK,EAAE+D,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAG3C,GAAG,EAAEN,GAAG/B,EAAC,EAAE0B,GAAGxC,EAAEuC,EAAG,EAAEC,IAAI/D,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAED,GAAG,EAAE,EAAEA,GAAGC,GAAGqD,EAAG5C,GAAG3C,EAAEG,EAAEO,EAAC,EAAEsB,EAAGvC,EAAEwC,GAAG,EAAED,GAAI9D,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAGpD,GAAGzC,EAAE8C,GAAG1D,CAAC,EAAEoD,GAAGzC,EAAEuC,EAAG,EAAEE,IAAIhE,EAAE+D,GAAG/D,EAAE,KAAK,EAAE+D,KAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGD,GAAGsD,EAAGhD,GAAGjD,EAAEe,GAAEO,EAAC,EAAEoB,EAAGvC,EAAEyC,GAAG,EAAEE,GAAGlE,EAAE+D,GAAG/D,EAAE,EAAEiF,GAAGnB,EAAG9D,IAAI,EAAE+D,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGqB,GAAGnF,EAAEA,EAAE,SAAS,EAAE6D,GAAGC,EAAG9D,IAAI,EAAE,SAAS8D,EAAG,EAAE,EAAEA,EAAGC,IAAIC,GAAGF,GAAI,IAAIK,GAAG,EAAEA,GAAGnE,GAAG8D,GAAI,SAASA,IAAK,EAAE9D,IAAI,IAAIsF,GAAG,EAAExB,EAAG9D,IAAI,EAAE8D,IAAK,EAAEC,GAAG,EAAE,EAAEA,GAAGuB,GAAGtF,EAAEA,EAAE,SAAS,EAAE+D,IAAI,UAAUD,EAAG9D,IAAI,EAAE,SAAS8D,EAAG,EAAE,EAAEA,KAAM,EAAE9D,IAAI,GAAG8D,GAAIA,GAAI,IAAIuB,GAAG,EAAEvB,GAAI9D,EAAE+D,GAAGS,GAAG,KAAK,EAAET,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGuB,GAAGtB,IAAIC,GAAGhE,GAAG,SAAS,EAAEA,EAAE8D,EAAGC,KAAK,EAAE,SAASD,EAAG,EAAE,EAAEA,EAAGzD,EAAEP,EAAE,GAAG,CAAC,EAAEkE,IAAI,UAAUD,IAAID,EAAGuD,EAAGlH,EAAEG,EAAEJ,EAAEgB,CAAC,EAAE8C,GAAGzC,EAAEwC,IAAIS,GAAG6C,EAAGzC,GAAGxE,EAAE4B,EAAEkB,EAAC,GAAGY,EAAG,EAAEA,EAAGvC,EAAEyC,GAAG,EAAEF,EAAGC,KAAK,EAAES,KAAK,EAAEV,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAG7G,EAAEa,EAAEI,EAAEqB,EAAC,EAAEgB,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGC,GAAGD,GAAG,KAAK,EAAEC,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAG3C,GAAG,EAAEvD,EAAEO,CAAC,EAAEoC,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGC,GAAGD,GAAG,KAAK,EAAEC,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGU,GAAG6C,EAAG/F,EAAEY,GAAEP,EAAEoB,EAAC,EAAEiB,GAAGzC,EAAEuC,EAAG,EAAEE,IAAID,GAAGS,GAAGT,GAAG,KAAK,EAAES,KAAK,EAAER,GAAG,EAAE,EAAEA,GAAGF,GAAIU,GAAG6C,EAAG/C,GAAG1D,EAAEgB,EAAEa,EAAC,GAAGsB,GAAG,EAAEA,GAAGxC,EAAEyC,GAAG,EAAED,GAAGD,IAAK,EAAEU,KAAK,EAAET,GAAG,EAAE,EAAEA,GAAGC,IAAIQ,GAAG6C,EAAGxF,EAAEmB,GAAEM,GAAEF,CAAC,GAAGU,EAAG,EAAEA,EAAGvC,EAAEwC,GAAG,EAAED,EAAGE,KAAK,EAAEQ,KAAK,EAAEV,EAAG,EAAE,EAAEA,EAAGC,GAAGC,GAAGA,GAAGqD,EAAG1C,GAAG3D,EAAE2B,GAAE6B,GAAG7B,IAAG,EAAE,EAAEmB,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGA,GAAGC,GAAG,KAAK,EAAEA,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAGpD,GAAGzC,EAAEO,EAAEkB,EAAC,EAAEa,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGC,GAAGD,GAAG,KAAK,EAAEC,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGe,GAAGwC,EAAGhD,GAAGjD,EAAEmD,GAAGtD,CAAC,EAAE+C,GAAGzC,EAAEuC,EAAG,EAAEA,EAAG/D,GAAG,GAAGA,GAAGiF,IAAI,SAASjF,IAAI,EAAEiF,KAAK,KAAKjB,GAAGc,GAAGd,GAAG,GAAG,EAAEA,GAAGD,GAAIC,KAAK,EAAEc,KAAK,EAAEb,GAAG,EAAE,EAAEA,IAAI,EAAEF,GAAIE,GAAGjE,KAAK,EAAEiF,KAAK,EAAEjB,GAAG,EAAE,EAAEA,GAAGiB,GAAGjB,GAAGC,GAAG,SAAS,EAAEjE,EAAE+D,EAAGC,KAAK,EAAE,SAASD,EAAG,EAAE,EAAEA,EAAGzD,EAAEP,EAAE,IAAI,CAAC,EAAEkE,IAAI,UAAUD,IAAID,EAAGuD,EAAG/C,GAAG1D,EAAEV,EAAEgB,CAAC,EAAE6C,GAAGxC,EAAEsD,GAAGwC,EAAGzC,GAAGxE,EAAEuB,EAAEoB,EAAC,EAAEiB,GAAGzC,EAAEwC,GAAG,EAAEC,IAAIF,EAAGe,GAAGf,EAAG,KAAK,EAAEe,KAAK,EAAEb,GAAG,EAAE,EAAEA,GAAGa,GAAGwC,EAAG7G,EAAEa,EAAEQ,EAAEmB,EAAC,EAAEe,GAAGxC,EAAEyC,GAAG,EAAED,IAAID,EAAGe,GAAGf,EAAG,KAAK,EAAEe,KAAK,EAAEd,GAAG,EAAE,EAAEA,GAAGC,IAAIa,GAAGwC,EAAG1C,GAAG3D,EAAEG,EAAEO,CAAC,GAAGoC,EAAG,EAAEA,EAAGvC,EAAEwC,GAAG,EAAED,EAAGE,KAAK,EAAEa,KAAK,EAAEf,EAAG,EAAE,EAAEA,EAAGC,GAAGC,GAAGA,GAAGqD,EAAGtC,GAAG1B,EAAEtB,EAAEkB,EAAC,EAAEa,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGA,GAAGC,GAAG,KAAK,EAAEA,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAG9C,GAAGtD,EAAEqB,GAAEa,CAAC,EAAEW,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGC,GAAGD,GAAG,KAAK,EAAEC,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGC,IAAIK,GAAGiD,EAAGjD,GAAG/B,GAAEL,EAAEkB,EAAC,GAAGa,GAAG,EAAEC,GAAGzC,EAAEuC,EAAG,EAAEA,GAAIW,GAAG4C,EAAGlH,EAAEG,EAAEmE,GAAG3C,CAAC,GAAGiC,GAAG,EAAEA,GAAGxC,GAAGwC,KAAK,EAAEK,KAAK,EAAEJ,GAAG,EAAE,EAAEA,IAAI,EAAEA,IAAIC,GAAGoD,EAAGpD,GAAGzC,EAAEC,EAAEqB,EAAC,GAAGgB,EAAG,EAAEA,EAAGvC,GAAGuC,IAAK,EAAEW,KAAK,EAAEV,GAAG,EAAE,EAAEA,IAAI,EAAED,EAAGE,KAAK,EAAEC,KAAK,EAAEH,EAAG,EAAE,EAAEA,EAAGC,GAAGC,GAAGA,GAAGqD,EAAGhD,GAAGjD,EAAEsD,GAAG,CAAC,EAAEZ,EAAGvC,EAAEuC,EAAG,EAAEG,GAAGF,GAAGA,GAAGC,GAAG,EAAEF,GAAIA,EAAGC,KAAK,EAAEC,KAAK,EAAEF,EAAG,EAAE,EAAEA,IAAKC,GAAG/D,GAAG,IAAI,EAAEiE,GAAGjE,EAAEiE,IAAID,IAAI,SAAShE,IAAI,EAAEqF,KAAK,IAAI,EAAEvB,EAAG9D,IAAI,EAAEgE,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGW,GAAGV,GAAG/D,EAAE,SAAS,EAAEA,EAAEgE,GAAGD,KAAK,EAAE,SAASD,EAAG,EAAE,EAAEA,EAAGzD,EAAEP,EAAE,IAAI,CAAC,EAAEmE,IAAI,UAAUF,IAAID,EAAGuD,EAAGnH,EAAEgB,EAAEJ,GAAE+B,EAAC,EAAEmB,GAAGzC,EAAEwC,IAAIE,GAAGoD,EAAGzC,GAAGxE,EAAEmE,GAAGtD,CAAC,GAAG6C,EAAG,EAAEA,EAAGvC,EAAEyC,GAAG,EAAEF,EAAGC,KAAK,EAAEE,KAAK,EAAEH,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAGlH,EAAEG,EAAEE,EAAEa,CAAC,EAAEyC,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGC,GAAGD,GAAG,KAAK,EAAEC,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGG,GAAGoD,EAAGlG,EAAEO,EAAEoD,GAAGvC,EAAC,EAAEyB,GAAGzC,EAAEuC,EAAG,EAAEE,IAAID,GAAGE,GAAGF,GAAG,KAAK,EAAEE,KAAK,EAAED,GAAG,EAAE,EAAEA,GAAGF,GAAIG,GAAGoD,EAAG3C,GAAG,EAAEpD,EAAEY,EAAC,GAAG6B,GAAG,EAAEA,GAAGxC,EAAEyC,GAAG,EAAED,GAAGD,IAAK,EAAEG,KAAK,EAAEF,GAAG,EAAE,EAAEA,GAAGC,IAAIC,GAAGoD,EAAGpF,EAAEO,GAAEZ,EAAEa,EAAC,GAAGqB,EAAG,EAAEA,EAAGvC,EAAEwC,GAAG,EAAED,EAAGE,KAAK,EAAEC,KAAK,EAAEH,EAAG,EAAE,EAAEA,EAAGC,GAAGC,GAAGA,GAAGqD,EAAG/C,GAAG1D,EAAE0C,GAAEF,CAAC,EAAEU,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGA,GAAGC,GAAG,KAAK,EAAEA,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAG1E,GAAE6B,GAAGrC,GAAEO,EAAC,EAAEoB,EAAGvC,EAAEuC,EAAG,EAAEA,GAAIC,GAAGC,GAAGD,GAAG,KAAK,EAAEC,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGC,IAAIe,GAAGuC,EAAG1C,GAAG3D,EAAEiD,GAAGiB,GAAGd,GAAGH,IAAI,EAAE,GAAGF,GAAG,EAAEC,GAAGzC,EAAEuC,EAAG,EAAEA,GAAIO,GAAGgD,EAAGhD,GAAGjD,EAAEgB,GAAEQ,EAAC,GAAGmB,GAAG,EAAEA,GAAGxC,GAAGwC,KAAK,EAAEe,KAAK,EAAEd,GAAG,EAAE,EAAEA,IAAI,EAAED,GAAGD,IAAK,EAAEO,KAAK,EAAEN,GAAG,EAAE,EAAEA,GAAGmB,GAAGpB,EAAGA,GAAIA,EAAG/D,GAAG,IAAIgE,GAAG,EAAED,GAAI/D,EAAEmF,IAAIlB,IAAI,SAASjE,IAAI,EAAEiF,KAAK,IAAI,KAAK,EAAEhB,KAAK,EAAEF,EAAG,EAAE,EAAEA,EAAGO,GAAGN,IAAIC,GAAGjE,GAAG,SAAS,EAAEA,EAAE+D,EAAGC,KAAK,EAAE,SAASD,EAAG,EAAE,EAAEA,EAAGzD,EAAEP,EAAE,IAAI,CAAC,EAAEkE,IAAI,UAAUD,IAAIA,GAAG/D,GAAG,GAAGA,GAAGyE,IAAI,SAASzE,IAAI,EAAEyE,KAAK,KAAKjB,IAAGM,EAAG,UAAUJ,IAAI,GAAG,EAAEI,EAAGC,IAAIN,KAAKK,IAAK,EAAEN,KAAI,GAAGG,GAAG,GAAG,GAAG,EAAEG,EAAG9D,IAAI,EAAEyE,KAAK,EAAEX,EAAG,EAAE,EAAEA,EAAGA,IAAK,UAAUA,GAAI9D,GAAG+D,GAAG/D,GAAG,SAAS,KAAK,EAAE,SAAS8D,EAAG,EAAE,EAAEA,KAAM,EAAE9D,IAAI,KAAKgE,GAAGoB,IAAI,UAAUxB,IAAI,GAAG,EAAEvD,EAAEP,EAAE,IAAI,CAAC,EAAEgE,EAAGzD,EAAEP,EAAE,IAAI,CAAC,EAAEiE,IAAI,UAAU/D,GAAGA,EAAEqH,EAAG9C,GAAGtD,EAAEf,EAAEgB,CAAC,EAAE4C,EAAGvC,EAAEwC,GAAGsD,EAAGzC,GAAGxE,EAAE2B,EAAEkB,EAAC,EAAEa,EAAGvC,EAAEuC,EAAG,EAAEA,GAAI9D,EAAE+D,GAAG/D,EAAE,KAAK,EAAE+D,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAG7G,EAAEa,EAAEW,EAAEkB,EAAC,EAAEa,GAAGxC,EAAEuC,EAAG,EAAEC,IAAI/D,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAED,GAAG,EAAE,EAAEA,GAAGD,EAAGuD,EAAGlH,EAAEG,EAAEa,EAAEO,CAAC,EAAEsC,GAAGzC,EAAEwC,GAAG,EAAEC,IAAIhE,EAAE8D,EAAG9D,EAAE,KAAK,EAAE8D,IAAK,EAAEE,GAAG,EAAE,EAAEA,GAAGD,GAAGsD,EAAG/F,EAAEY,GAAET,EAAEqB,EAAC,EAAEgB,EAAGvC,EAAEyC,GAAG,EAAEF,GAAI9D,EAAE+D,GAAG/D,EAAE,KAAK,EAAE+D,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAG3C,GAAG,EAAE9C,EAAEa,EAAC,EAAEqB,EAAGvC,EAAEuC,EAAG,EAAEA,GAAI9D,EAAE+D,GAAG/D,EAAE,KAAK,EAAE+D,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGC,GAAGsD,EAAG1F,EAAEoB,GAAEO,GAAEF,CAAC,EAAEU,EAAGvC,EAAEuC,EAAG,EAAEA,GAAI9D,EAAE+D,GAAG/D,EAAE,KAAK,EAAE+D,KAAK,EAAED,EAAG,EAAE,EAAEA,EAAGE,GAAGqD,EAAG/C,GAAG1D,EAAE+B,GAAE6B,EAAE,EAAET,GAAGxC,EAAEuC,EAAG,EAAEC,IAAI/D,EAAEgE,GAAGhE,EAAE,KAAK,EAAEgE,KAAK,EAAED,GAAG,EAAE,EAAEA,GAAGD,EAAGuD,EAAGpD,GAAGG,GAAGvC,EAAEmB,EAAC,EAAEgB,GAAGzC,EAAEwC,GAAG,EAAEC,IAAIhE,EAAE8D,EAAG9D,EAAE,KAAK,EAAE8D,IAAK,EAAEE,GAAG,EAAE,EAAEA,GAAGD,GAAGsD,EAAG1C,GAAG3D,EAAEuC,GAAEA,IAAG,EAAE,EAAEO,EAAGvC,EAAEyC,GAAG,EAAEF,GAAIA,GAAI9D,EAAE+D,GAAG/D,EAAE,KAAK,EAAE+D,KAAK,EAAED,EAAG,EAAE,EAAEA,IAAKC,GAAGhE,GAAG,IAAI,EAAE+D,GAAI/D,GAAGiE,GAAGhE,IAAIA,GAAG,SAASD,IAAI,EAAEsE,KAAK,IAAI,KAAK,EAAErE,IAAI,EAAE8D,EAAG,EAAE,EAAEA,EAAGA,GAAI/D,GAAGC,EAAED,GAAG,SAAS,KAAK,EAAE,SAAS+D,EAAG,EAAE,EAAEA,EAAGzD,EAAEP,EAAE,IAAI,CAAC,EAAEE,GAAG,UAAUD,GAAGiE,GAAGG,IAAI,UAAUmB,IAAI,EAAEvB,GAAGG,IAAIlE,EAAE,UAAUmF,IAAI,EAAEP,GAAGK,KAAKjF,IAAI,EAAEkE,KAAK,GAAGL,GAAG,GAAG,EAAE9D,GAAGC,EAAEqH,GAAI,UAAUrH,EAAE8D,KAAM,EAAE/D,IAAI,GAAG+D,IAAK,GAAG,GAAG,CAAC,GAAGC,GAAG,EAAEA,GAAGxC,EAAEqD,GAAG,EAAEd,EAAG/D,IAAI,EAAEC,IAAI,EAAE+D,GAAG,EAAE,EAAEA,GAAGD,IAAK,UAAUA,GAAI/D,GAAGC,EAAED,GAAG,SAAS,KAAK,EAAE,SAAS+D,EAAG,EAAE,EAAEA,KAAM,EAAE/D,IAAI,IAAIiE,GAAG,EAAE3D,EAAEP,EAAE,GAAG,CAAC,EAAEgE,EAAGzD,EAAEP,GAAG,CAAC,EAAEE,GAAG,UAAUD,EAAE,CAAC,SAASqC,GAAEtC,EAAEC,EAAE,CAAC,IAAIC,EAAEE,EAAEC,EAAEC,EAAEI,EAAE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEP,EAAEpB,EAAEoB,EAAE,IAAI,EAAElB,EAAEI,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEE,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGU,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGc,EAAEN,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEV,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG2B,EAAEnB,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGmB,EAAEX,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGoB,EAAEZ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGqB,EAAEb,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGuB,EAAEf,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGwB,EAAEhB,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGyB,EAAEjB,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG0B,EAAElB,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEkH,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEF,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAED,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAED,EAAEA,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEkH,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEF,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAED,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAED,EAAEA,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAE4B,EAAErB,EAAE,GAAGP,EAAEC,EAAG,KAAI,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEsF,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAE0B,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEsF,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAE0B,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,EAAE,GAAG,CAAC,EAAE4B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEsF,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAE0B,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEsF,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAE0B,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEsF,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAE0B,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAErB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEsF,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAE0B,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAE2B,EAAErB,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIwB,EAAElB,EAAEN,EAAE,GAAG,CAAC,GAAGO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIuB,EAAEjB,EAAEN,EAAE,GAAG,CAAC,GAAGO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,IAAIsB,EAAEhB,EAAEN,GAAG,CAAC,GAAGO,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,IAAIyB,EAAEnB,EAAEP,GAAG,CAAC,GAAGQ,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,IAAIqB,EAAEd,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAImB,EAAEb,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIkB,EAAEZ,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAI0B,EAAEA,EAAEpB,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEuF,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEuF,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEuF,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEuF,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,EAAE,GAAG,CAAC,EAAE2B,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEuF,GAAGrF,EAAE3B,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEuF,GAAGrF,EAAE3B,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEuF,GAAGrF,EAAE3B,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,GAAG,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,GAAG,CAAC,EAAEyB,EAAEuF,GAAGrF,EAAE3B,EAAE,GAAG,EAAEA,CAAC,EAAE2B,EAAEtB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAE4B,EAAEA,EAAEtB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAE4B,EAAEtB,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIiB,EAAEX,EAAEN,EAAE,GAAG,CAAC,GAAGO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIa,EAAEP,EAAEN,EAAE,GAAG,CAAC,GAAGO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,IAAI,EAAEM,EAAEN,GAAG,CAAC,GAAGO,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,IAAI,EAAEM,EAAEP,GAAG,CAAC,GAAGQ,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,IAAIU,EAAEH,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIK,EAAEC,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAII,EAAEE,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIG,EAAEkB,EAAEpB,EAAE,IAAI,CAAC,CAAC,SAASc,GAAEhB,EAAEC,EAAEC,EAAEG,EAAEC,EAAE,CAAC,IAAII,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,IAAIb,EAAEZ,EAAEY,EAAE,IAAI,EAAEE,GAAGhB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAID,IAAI,GAAGoB,GAAGjB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAID,GAAG,EAAEqB,GAAGlB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIJ,IAAI,GAAGG,GAAGG,EAAE,GAAGM,EAAER,EAAE,GAAG,EAAE,EAAEE,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,GAAGN,EAAEM,EAAE,EAAE,CAAC,GAAG,IAAIZ,GAAG,EAAEmB,EAAEf,EAAE,GAAG,EAAEa,EAAEb,EAAE,GAAG,EAAEM,EAAEN,EAAG,KAAI,EAAEc,EAAEd,EAAE,GAAG,EAAEK,EAAEL,EAAE,GAAG,EAAEY,EAAEZ,EAAE,IAAI,EAAEJ,EAAEK,EAAEW,EAAE,IAAI,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEI,EAAE,IAAI,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEW,EAAE,IAAI,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEgH,GAAG3F,EAAEb,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,EAAE,IAAI,CAAC,EAAEhB,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,EAAE,GAAG,CAAC,EAAEhB,EAAEA,EAAEK,EAAEa,EAAE,IAAI,CAAC,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEa,EAAE,GAAG,CAAC,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEa,EAAE,GAAG,CAAC,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEa,GAAG,CAAC,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEI,EAAE,IAAI,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEgH,GAAG3F,EAAEb,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,EAAE,IAAI,CAAC,EAAET,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,EAAE,GAAG,CAAC,EAAET,EAAEA,EAAEK,EAAEK,EAAE,IAAI,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,GAAG,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEa,EAAE,IAAI,CAAC,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEa,EAAE,GAAG,CAAC,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEa,EAAE,GAAG,CAAC,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEa,GAAG,CAAC,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEgH,GAAG3F,EAAEb,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEa,EAAE,GAAG,CAAC,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEa,EAAE,IAAI,CAAC,EAAElB,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEa,GAAG,CAAC,EAAEb,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEa,EAAE,GAAG,CAAC,EAAElB,EAAEA,EAAEK,EAAEY,EAAE,IAAI,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,EAAE,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEY,EAAE,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEK,EAAE,IAAI,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,GAAG,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEgH,GAAG3F,EAAEb,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAE,IAAI,CAAC,EAAEV,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,GAAG,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAE,GAAG,CAAC,EAAEV,EAAEA,EAAEK,EAAEO,EAAE,IAAI,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,EAAE,GAAG,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEO,EAAE,GAAG,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,GAAG,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEY,EAAE,IAAI,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,EAAE,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEY,EAAE,GAAG,CAAC,EAAEZ,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEY,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEgH,GAAG3F,EAAEb,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,EAAE,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,EAAE,IAAI,CAAC,EAAEjB,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,EAAE,GAAG,CAAC,EAAEjB,EAAEA,EAAEK,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEc,GAAG,CAAC,EAAEd,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEO,EAAE,IAAI,CAAC,EAAEP,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEO,EAAE,GAAG,CAAC,EAAEP,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEO,EAAE,GAAG,CAAC,EAAEP,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEO,GAAG,CAAC,EAAEP,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEgH,GAAG3F,EAAEb,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,EAAE,GAAG,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,EAAE,IAAI,CAAC,EAAEZ,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,GAAG,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,EAAE,GAAG,CAAC,EAAEZ,EAAEA,EAAEK,EAAED,EAAE,IAAI,CAAC,EAAEC,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAED,GAAG,CAAC,EAAEC,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEc,EAAE,IAAI,CAAC,EAAEd,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEc,GAAG,CAAC,EAAEd,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEgH,GAAG3F,EAAEb,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEc,EAAE,IAAI,CAAC,EAAEnB,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEc,GAAG,CAAC,EAAEd,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEc,EAAE,GAAG,CAAC,EAAEnB,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAED,EAAE,IAAI,CAAC,EAAEC,EAAEG,EAAE,GAAG,CAAC,EAAEH,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEG,GAAG,CAAC,EAAEH,EAAED,GAAG,CAAC,EAAEC,EAAEG,EAAE,GAAG,CAAC,EAAER,EAAEgH,GAAG3F,EAAEb,EAAE,GAAG,EAAEA,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAED,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAED,GAAG,CAAC,EAAEC,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAED,EAAE,GAAG,CAAC,EAAEJ,EAAE0B,EAAEJ,GAAGhB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIC,EAAED,EAAE,IAAI,CAAC,EAAEsB,EAAEC,EAAEJ,GAAGjB,EAAEF,EAAE,EAAE,CAAC,EAAEE,EAAEF,EAAE,EAAE,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIC,EAAED,EAAE,GAAG,CAAC,EAAEuB,EAAEC,EAAEJ,GAAGlB,EAAEF,EAAE,EAAE,CAAC,EAAEE,EAAEF,EAAE,EAAE,CAAC,GAAG,EAAEE,EAAEF,EAAE,EAAE,CAAC,GAAG,GAAGE,EAAEF,EAAE,EAAE,CAAC,GAAG,IAAIC,EAAED,EAAE,GAAG,CAAC,EAAEwB,EAAEC,EAAE1B,GAAGG,EAAE,EAAEF,CAAC,EAAEE,EAAEF,EAAE,EAAE,CAAC,GAAG,EAAEE,EAAEF,EAAE,EAAE,CAAC,GAAG,GAAGE,EAAEF,EAAE,EAAE,CAAC,GAAG,IAAIC,EAAED,GAAG,CAAC,EAAEyB,EAAEC,EAAE3B,GAAGG,EAAE,EAAEI,CAAC,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,GAAGJ,EAAEI,EAAE,EAAE,CAAC,GAAG,IAAIL,EAAEK,GAAG,CAAC,EAAEoB,EAAEC,EAAEP,GAAGlB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIC,EAAED,EAAE,IAAI,CAAC,EAAE2B,EAAEC,EAAET,GAAGjB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIC,EAAED,EAAE,IAAI,CAAC,EAAE4B,EAAEC,EAAEX,GAAGhB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIC,EAAED,EAAE,IAAI,CAAC,EAAE6B,GAAM,GAAGR,EAAEA,EAAE,EAAE,KAAb,GAAkB,CAAC,EAAE,CAAC1B,EAAE,CAACC,EAAE,CAAC,GAAGA,EAAED,EAAE,GAAG,EAAE,CAAC,IAAQ,EAAEC,IAAP,GAAU,MAAMA,EAAE,MAAMD,CAAC,CAACW,EAAEJ,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAEN,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGe,EAAEb,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGa,EAAEX,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGc,EAAEZ,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEH,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGY,EAAEV,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGiB,EAAEf,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEhB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGmB,EAAEjB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGoB,EAAElB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGqB,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGD,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGL,EAAEO,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGA,EAAEsB,GAAGpB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGE,EAAEF,EAAE,IAAI,CAAC,GAAG,IAAI6B,EAAE/B,EAAEJ,EAAE,GAAG,CAAC,EAAEM,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGL,EAAEyB,EAAEC,EAAEtB,EAAEJ,EAAEC,EAAEgC,EAAEL,EAAEzB,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEU,EAAEO,EAAEK,EAAEC,EAAEC,EAAEQ,EAAEH,EAAE1B,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGA,EAAEW,EAAEE,EAAEO,EAAEF,EAAEC,EAAEY,EAAED,EAAE3B,EAAE,EAAEJ,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAG,MAAM,CAAC,CAACiB,EAAEV,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGiB,EAAEf,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEhB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGmB,EAAEjB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGoB,EAAElB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGqB,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGD,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEM,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGL,EAAEO,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEiB,GAAGpB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIF,EAAEJ,EAAE,GAAG,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGV,EAAEI,EAAEJ,EAAEC,EAAE2B,EAAEzB,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEwB,EAAEC,EAAEC,EAAEG,EAAE1B,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGA,EAAEiB,EAAEK,EAAEC,EAAEO,EAAE3B,EAAE,EAAEJ,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGkB,EAAEX,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGc,EAAEZ,EAAE,GAAGP,EAAEK,EAAG,KAAI,EAAE,EAAEE,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGU,EAAEH,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGY,EAAEV,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGiB,EAAEf,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEhB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGmB,EAAEjB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGoB,EAAElB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGqB,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGD,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGL,EAAEO,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGA,GAAGE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGE,EAAEF,EAAE,IAAI,CAAC,GAAG,KAAKE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEE,EAAEF,EAAE,IAAI,CAAC,GAAG,GAAGE,EAAEF,EAAE,IAAI,CAAC,GAAG,IAAIF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGL,EAAE0B,EAAEtB,EAAEJ,EAAEC,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEsB,EAAEC,EAAEC,EAAEC,EAAEtB,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEkB,EAAEC,EAAET,EAAEO,EAAEd,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAG,MAAM,CAAC,CAACwH,GAAGzH,EAAE,EAAEC,CAAC,CAAC,CAACqB,EAAEZ,EAAE,IAAI,CAAC,CAAC,SAAS6B,GAAEvC,EAAEC,EAAEC,EAAEE,EAAE,CAAC,IAAIC,EAAE,EAAEC,EAAE,EAAEI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEI,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAE,IAAIjC,EAAEG,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEL,GAAG,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEL,EAAE,GAAG,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,GAAG,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGJ,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAED,GAAG,IAAI,MAAMA,IAAI,EAAEA,IAAI,EAAE,MAAMA,IAAI,GAAGA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,GAAG,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,GAAG,CAAC,EAAEH,EAAE,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEC,GAAGJ,EAAE2B,GAAG,GAAG1B,EAAE,EAAEQ,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEU,EAAEP,EAAEF,GAAG,CAAC,GAAGyH,GAAGpH,EAAE,EAAE,EAAEoH,GAAGpH,EAAE,EAAE,EAAEoH,GAAGpH,EAAE,CAAC,GAAG,EAAES,GAAG,IAAIb,EAAEC,EAAEN,EAAE,OAAO,CAAC,EAAEa,EAAE,IAAIJ,IAAII,EAAEP,EAAEH,EAAE,IAAI,CAAC,IAAIgB,EAAEb,EAAEH,EAAE,IAAI,CAAC,IAAIU,GAAG,GAAG,EAAE,GAAGP,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEe,EAAE,GAAGG,EAAE,GAAGwG,GAAG5G,EAAEX,EAAEH,GAAG,CAAC,EAAE,EAAE,EAAE0H,GAAG5G,EAAE,EAAE,EAAE4G,GAAG5G,EAAE,EAAE,GAAG,IAAIA,IAAIZ,EAAEC,EAAEH,EAAE,GAAG,CAAC,IAAI,EAAEG,EAAEH,EAAE,GAAG,CAAC,IAAIE,EAAE,GAAG,EAAEC,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEE,GAAGgB,EAAEhB,IAAIQ,GAAGP,GAAGiB,GAAGlB,EAAE,EAAEL,GAAGC,EAAE,IAAI,CAAC,IAAIY,GAAGM,EAAED,GAAGT,EAAEU,IAAI,IAAI0G,GAAG3G,EAAE,EAAE,EAAE2G,GAAG3G,EAAE,EAAE,EAAE2G,GAAG3G,EAAE,CAAC,GAAG,GAAG,GAAGZ,EAAED,EAAE,OAAO,CAAC,EAAE,GAAG,EAAEC,EAAEH,EAAE,GAAG,CAAC,EAAEE,EAAEQ,GAAGA,GAAG,GAAG,EAAEI,GAAG,EAAEA,GAAG,IAAI4G,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,GAAG,EAAEvH,EAAEH,EAAE,IAAI,CAAC,EAAEU,EAAEM,GAAGE,EAAE,IAAI,KAAKF,EAAEb,GAAGoB,GAAG,EAAE,EAAE1B,GAAGC,EAAE,IAAI,CAAC,EAAE,GAAGK,EAAE,EAAE,OAAO,CAAC,EAAE,IAAIG,EAAEJ,GAAGI,EAAES,IAAI,IAAI2G,GAAGxH,EAAE,EAAE,EAAEwH,GAAGxH,EAAE,EAAE,EAAEwH,GAAGxH,EAAE,CAAC,GAAG,GAAG,EAAEC,EAAEH,EAAE,GAAG,CAAC,EAAEgB,EAAE,EAAE,IAAIN,GAAG,EAAEI,GAAG,EAAEA,IAAI4G,GAAGhH,EAAE,EAAE,EAAEgH,GAAGhH,EAAE,EAAE,EAAEgH,GAAGhH,EAAE,EAAE,GAAG,GAAG,EAAEP,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEM,GAAGY,EAAEJ,IAAIA,KAAKR,EAAEH,GAAGsB,GAAGX,EAAE,GAAGjB,GAAGC,EAAE,IAAI,CAAC,EAAE,GAAGK,EAAEW,EAAE,OAAO,CAAC,EAAE,IAAIC,EAAEC,GAAGd,EAAEa,IAAI,IAAI2G,GAAG1G,EAAE,EAAE,EAAE0G,GAAG1G,EAAE,EAAE,EAAE0G,GAAG1G,EAAE,CAAC,GAAG,GAAG,EAAEb,EAAEH,GAAG,CAAC,EAAEM,EAAEQ,EAAEA,IAAI,GAAG,EAAEJ,GAAG,EAAEA,IAAIgH,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,GAAG,GAAG,EAAEvH,EAAEH,EAAE,IAAI,CAAC,EAAEc,EAAEC,GAAGE,MAAMC,EAAEH,GAAGZ,GAAGuB,GAAGX,EAAE,GAAGlB,GAAGC,EAAE,IAAI,CAAC,EAAE,GAAGK,EAAEY,EAAE,OAAO,CAAC,EAAE,IAAIb,EAAEI,GAAGJ,EAAEc,IAAI,IAAI0G,GAAGpH,EAAE,EAAE,EAAEoH,GAAGpH,EAAE,EAAE,EAAEoH,GAAGpH,EAAE,CAAC,GAAG,KAAKQ,GAAG,EAAEJ,GAAG,EAAEA,IAAIgH,GAAG5G,EAAE,EAAE,EAAE4G,GAAG5G,EAAE,EAAE,EAAE4G,GAAG5G,EAAE,EAAE,GAAG,GAAG,EAAEX,EAAEH,EAAE,IAAI,CAAC,EAAEe,EAAEE,EAAE,EAAEA,EAAE,EAAEd,EAAEH,EAAE,IAAI,CAAC,EAAEiB,EAAE,GAAGf,KAAKA,EAAEC,GAAGwB,GAAG,EAAE,GAAG9B,GAAGC,EAAE,IAAI,CAAC,EAAE,GAAGK,EAAE,EAAE,OAAO,CAAC,EAAE,IAAIa,EAAEC,GAAGX,EAAEU,IAAI,IAAI0G,GAAGzG,EAAE,EAAE,EAAEyG,GAAGzG,EAAE,EAAE,EAAEyG,GAAGzG,EAAE,CAAC,GAAG,KAAKF,GAAG,EAAED,GAAG,EAAEA,IAAI4G,GAAG3G,EAAE,EAAE,EAAE2G,GAAG3G,EAAE,EAAE,EAAE2G,GAAG3G,EAAE,EAAE,GAAG,GAAG,EAAEZ,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEE,EAAEA,EAAEQ,EAAE,EAAEP,EAAEH,EAAE,IAAI,CAAC,EAAEE,EAAEQ,GAAGM,KAAKA,EAAEb,GAAGyB,GAAGlB,EAAE,GAAGb,GAAGC,EAAE,IAAI,CAAC,EAAE,GAAGK,EAAEO,EAAE,OAAO,CAAC,EAAE,IAAIJ,EAAEJ,GAAGI,EAAEW,IAAI,IAAIyG,GAAGxH,EAAE,EAAE,EAAEwH,GAAGxH,EAAE,EAAE,EAAEwH,GAAGxH,EAAE,CAAC,GAAG,KAAK,GAAGY,EAAEC,GAAGD,EAAEC,IAAI2G,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,GAAG,GAAG,EAAEvH,EAAEH,EAAE,GAAG,CAAC,EAAEU,EAAEM,EAAE,EAAEA,EAAE,EAAEb,EAAEH,EAAE,IAAI,CAAC,EAAEgB,EAAE,GAAGV,KAAKA,EAAEH,GAAG0B,GAAG,EAAE,GAAGhC,GAAGC,EAAE,IAAI,CAAC,EAAE,GAAGK,EAAE,EAAE,OAAO,CAAC,EAAE,IAAIc,EAAED,GAAGd,EAAEe,IAAI,IAAIyG,GAAG1G,EAAE,EAAE,EAAE0G,GAAG1G,EAAE,EAAE,EAAE0G,GAAG1G,EAAE,CAAC,GAAG,KAAKN,GAAG,EAAEK,GAAG,EAAEA,IAAI2G,GAAGhH,EAAE,EAAE,EAAEgH,GAAGhH,EAAE,EAAE,EAAEgH,GAAGhH,EAAE,EAAE,GAAG,GAAG,EAAEP,EAAEH,GAAG,CAAC,EAAE,EAAEM,EAAEA,EAAEQ,EAAE,EAAEX,EAAEH,EAAE,IAAI,CAAC,EAAEM,EAAEQ,GAAGG,KAAKA,EAAEd,GAAG2B,GAAGhB,EAAE,GAAGjB,GAAGC,EAAE,IAAI,CAAC,EAAE,GAAGK,EAAEW,EAAE,OAAO,CAAC,EAAE,IAAIZ,EAAEI,GAAGJ,EAAEc,IAAI,IAAI0G,GAAGpH,EAAE,EAAE,EAAEoH,GAAGpH,EAAE,EAAE,EAAEoH,GAAGpH,EAAE,CAAC,GAAG,KAAK,GAAG,EAAEI,GAAG,EAAEA,IAAIgH,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,GAAG,GAAG,EAAEvH,EAAEH,EAAE,IAAI,CAAC,EAAEc,EAAEG,EAAEF,EAAEE,EAAE,EAAEd,EAAEH,EAAE,IAAI,CAAC,EAAEiB,EAAEF,GAAGb,KAAKA,EAAEC,GAAG4B,IAAGhB,EAAE,GAAGlB,GAAGC,EAAE,IAAI,CAAC,EAAE,GAAGK,EAAEY,EAAE,OAAO,CAAC,EAAE,IAAIC,EAAEC,GAAGX,EAAEU,IAAI,IAAI0G,GAAGzG,EAAE,EAAE,EAAEyG,GAAGzG,EAAE,EAAE,EAAEyG,GAAGzG,EAAE,CAAC,GAAG,KAAKH,GAAG,EAAEJ,GAAG,EAAEA,IAAIgH,GAAG5G,EAAE,EAAE,EAAE4G,GAAG5G,EAAE,EAAE,EAAE4G,GAAG5G,EAAE,EAAE,GAAG,GAAG,EAAEX,EAAEH,EAAE,IAAI,CAAC,EAAEe,EAAEb,EAAEA,EAAE,EAAE,EAAEC,EAAEH,EAAE,GAAG,CAAC,EAAEE,EAAE,GAAGc,KAAKA,EAAEb,GAAG6B,IAAG,EAAE,GAAGnC,GAAGC,EAAE,IAAI,CAAC,EAAE,GAAGK,EAAE,EAAE,OAAO,CAAC,EAAE,IAAIG,EAAEJ,GAAGI,EAAEW,IAAI,IAAIyG,GAAGxH,EAAE,EAAE,EAAEwH,GAAGxH,EAAE,EAAE,EAAEwH,GAAGxH,EAAE,CAAC,GAAG,KAAKa,GAAG,EAAED,GAAG,EAAEA,IAAI4G,GAAG3G,EAAE,EAAE,EAAE2G,GAAG3G,EAAE,EAAE,EAAE2G,GAAG3G,EAAE,EAAE,GAAG,GAAG,EAAEZ,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEgB,EAAEN,EAAEM,EAAE,EAAEb,EAAEH,EAAE,GAAG,CAAC,EAAEgB,EAAEE,GAAGR,EAAE,GAAGb,GAAGC,EAAE,EAAEY,GAAGJ,IAAIA,GAAGH,EAAEO,EAAE,OAAO,CAAC,EAAEP,EAAEe,GAAG,CAAC,EAAE,GAAG,IAAID,EAAED,GAAGd,EAAEe,IAAI,IAAIyG,GAAG1G,EAAE,EAAE,EAAE0G,GAAG1G,EAAE,EAAE,EAAE0G,GAAG1G,EAAE,CAAC,GAAG,KAAK,GAAGF,EAAEC,GAAGD,EAAEC,IAAI2G,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,GAAG,GAAG,EAAEvH,EAAEH,EAAE,IAAI,CAAC,EAAEU,EAAE,EAAE,EAAEJ,EAAE,EAAEH,EAAEH,GAAG,CAAC,EAAE,EAAEsB,GAAGhB,EAAE,GAAGT,GAAGC,EAAE,EAAEQ,GAAGW,IAAIA,GAAGd,EAAEG,EAAE,OAAO,CAAC,EAAEH,EAAEmB,GAAG,CAAC,EAAE,GAAG,IAAIpB,EAAE,GAAGA,EAAEc,IAAI,IAAI0G,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,CAAC,GAAG,KAAKhH,GAAG,EAAEK,GAAG,EAAEA,IAAI2G,GAAGhH,EAAE,EAAE,EAAEgH,GAAGhH,EAAE,EAAE,EAAEgH,GAAGhH,EAAE,EAAE,GAAG,GAAG,EAAEP,EAAEH,EAAE,IAAI,CAAC,EAAEM,EAAEQ,EAAEA,EAAEG,EAAE,EAAEd,EAAEH,EAAE,IAAI,CAAC,EAAEc,EAAEO,GAAGJ,EAAE,GAAGpB,GAAGC,EAAE,EAAEI,GAAGe,KAAKd,EAAEc,EAAE,OAAO,CAAC,EAAEd,EAAEkB,GAAG,CAAC,EAAE,GAAGnB,EAAE,IAAIc,EAAEF,GAAG,EAAEE,IAAI,IAAI0G,GAAG5G,EAAE,EAAE,EAAE4G,GAAG5G,EAAE,EAAE,EAAE4G,GAAG5G,EAAE,CAAC,GAAG,KAAKR,GAAG,EAAEI,GAAG,EAAEA,IAAIgH,GAAGpH,EAAE,EAAE,EAAEoH,GAAGpH,EAAE,EAAE,EAAEoH,GAAGpH,EAAE,EAAE,GAAG,GAAG,EAAEH,EAAEH,EAAE,GAAG,CAAC,EAAEE,EAAEa,EAAEA,EAAEE,EAAE,EAAEd,EAAEH,EAAE,IAAI,CAAC,EAAEe,EAAEE,GAAGE,EAAE,GAAGtB,GAAGC,EAAE,EAAEkB,GAAGG,KAAKhB,EAAEgB,EAAE,OAAO,CAAC,EAAEhB,EAAEc,GAAG,CAAC,EAAE,GAAGD,EAAE,IAAI,EAAED,GAAG,EAAED,IAAI,IAAI4G,GAAG3G,EAAE,EAAE,EAAE2G,GAAG3G,EAAE,EAAE,EAAE2G,GAAG3G,EAAE,CAAC,GAAG,KAAKb,GAAGQ,EAAEJ,GAAGI,EAAEJ,IAAIoH,GAAGxH,EAAE,EAAE,EAAEwH,GAAGxH,EAAE,EAAE,EAAEwH,GAAGxH,EAAE,EAAE,GAAG,GAAG,EAAEC,EAAEH,EAAE,GAAG,CAAC,EAAEgB,EAAE,EAAE,EAAEG,EAAE,EAAEhB,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEmB,GAAGtB,GAAG,IAAIC,EAAE,EAAE,GAAGD,IAAI,GAAGM,EAAEN,EAAE,OAAO,CAAC,EAAEM,EAAEgB,GAAG,CAAC,EAAE,GAAG,IAAIL,EAAE,GAAGA,EAAEC,IAAI,IAAI2G,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,CAAC,GAAG,KAAK1G,GAAGd,EAAEI,GAAGJ,EAAEI,IAAIoH,GAAG1G,EAAE,EAAE,EAAE0G,GAAG1G,EAAE,EAAE,EAAE0G,GAAG1G,EAAE,EAAE,GAAG,GAAG,EAAEb,EAAEH,GAAG,CAAC,EAAE,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEa,GAAO,EAAEc,IAAP,IAAW,EAAErB,EAAE4B,IAAG,CAAC,EAAEP,EAAEA,EAAE,GAAG,EAAE3B,EAAEM,EAAEc,GAAG,CAAC,EAAE,GAAGf,EAAEC,EAAEF,GAAG,CAAC,GAAG,GAAGyH,GAAG7H,EAAE,EAAE,EAAE6H,GAAG7H,EAAE,EAAE,EAAEA,IAAI,IAAI,GAAG,IAAI6H,GAAGhH,EAAEP,EAAEiB,GAAG,CAAC,EAAE,EAAE,EAAEsG,GAAGhH,EAAE,EAAE,EAAEA,IAAI,GAAG,EAAEP,GAAGqB,GAAG,GAAG1B,GAAG,CAAC,EAAE,EAAEiB,GAAGT,GAAGJ,GAAGY,EAAEX,EAAE6B,IAAG,CAAC,GAAGtB,EAAE,IAAIgH,GAAGhH,EAAEP,EAAEgB,GAAG,CAAC,EAAE,EAAE,EAAEuG,GAAGhH,EAAE,EAAE,EAAEA,IAAI,IAAI,IAAIgH,GAAGxH,EAAEC,EAAEoB,GAAG,CAAC,EAAE,EAAE,EAAEmG,GAAGxH,EAAE,EAAE,EAAEA,IAAI,GAAG,EAAEC,EAAEF,EAAE,IAAI,CAAC,EAAEc,EAAEC,GAAGE,IAAIZ,EAAEJ,IAAIA,EAAEC,EAAEe,GAAG,CAAC,GAAG,IAAIwG,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAE,IAAI,IAAI,IAAIA,GAAGpH,EAAEH,EAAEsB,GAAG,CAAC,EAAE,EAAE,EAAEiG,GAAGpH,EAAE,EAAE,EAAEA,IAAI,GAAG,EAAEH,EAAEF,EAAE,IAAI,CAAC,EAAEe,EAAEC,GAAGE,IAAID,EAAEZ,IAAIA,EAAEH,EAAEmB,GAAG,CAAC,GAAG,IAAIoG,GAAG3G,EAAE,EAAE,EAAE2G,GAAG3G,EAAE,EAAE,EAAEA,IAAI,IAAI,IAAI2G,GAAGxG,EAAEf,EAAEuB,GAAG,CAAC,EAAE,EAAE,EAAEgG,GAAGxG,EAAE,EAAE,EAAEA,IAAI,GAAG,EAAEf,EAAEF,EAAE,IAAI,CAAC,EAAEgB,EAAEK,GAAGH,IAAIA,EAAED,IAAIA,EAAEf,EAAEkB,GAAG,CAAC,GAAG,IAAIqG,GAAG1G,EAAE,EAAE,EAAE0G,GAAG1G,EAAE,EAAE,EAAEA,IAAI,IAAI,IAAI0G,GAAGrG,EAAElB,EAAEwB,GAAG,CAAC,EAAE,EAAE,EAAE+F,GAAGrG,EAAE,EAAE,EAAEA,IAAI,GAAG,EAAElB,EAAEF,EAAE,IAAI,CAAC,EAAEqB,EAAED,GAAGD,GAAGvB,EAAEwB,EAAE,IAAIqG,GAAGzG,EAAE,EAAE,EAAEyG,GAAGzG,EAAE,EAAE,EAAEA,IAAI,IAAI,IAAIyG,GAAGvG,EAAEhB,EAAEyB,GAAG,CAAC,EAAE,EAAE,EAAE8F,GAAGvG,EAAE,EAAE,EAAEA,IAAI,GAAG,EAAEhB,EAAEF,EAAE,IAAI,CAAC,EAAEoB,EAAEF,IAAIT,EAAES,EAAE,IAAIuG,GAAGnG,EAAEpB,EAAE0B,GAAG,CAAC,EAAE,EAAE,EAAE6F,GAAGnG,EAAE,EAAE,EAAEA,IAAI,GAAG,IAAImG,GAAGpG,EAAE,EAAE,EAAEoG,GAAGpG,EAAE,EAAE,EAAEA,IAAI,IAAI,EAAEnB,EAAEF,EAAE,IAAI,CAAC,EAAEkB,EAAEJ,IAAIK,EAAEjB,EAAE2B,GAAG,CAAC,IAAIf,GAAG2G,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAIA,GAAGvG,EAAE,EAAE,EAAEuG,GAAGvG,EAAE,EAAE,EAAEA,IAAI,IAAI,EAAEhB,EAAEF,EAAE,IAAI,CAAC,EAAEc,EAAEK,IAAI,EAAEG,EAAE,IAAImG,GAAGtG,EAAE,EAAE,EAAEsG,GAAGtG,EAAE,EAAE,EAAEA,IAAI,GAAG,IAAIsG,GAAGrG,EAAE,EAAE,EAAEqG,GAAGrG,EAAE,EAAE,EAAEA,IAAI,IAAI,EAAElB,EAAEF,EAAE,IAAI,CAAC,EAAEmB,EAAEH,GAAGA,GAAGH,GAAG4G,GAAGxH,EAAE,EAAE,EAAEwH,GAAGxH,EAAE,EAAE,EAAEA,IAAI,GAAG,GAAG,IAAIwH,GAAG3G,EAAE,EAAE,EAAE2G,GAAG3G,EAAE,EAAE,EAAEA,IAAI,IAAI,EAAEZ,EAAEF,EAAE,KAAK,CAAC,EAAEgB,EAAE,GAAGD,GAAG,GAAG0G,GAAG5G,EAAE,EAAE,EAAE4G,GAAG5G,EAAE,EAAE,EAAEA,IAAI,GAAG,GAAG,IAAI4G,GAAGtG,EAAE,EAAE,EAAEsG,GAAGtG,EAAE,EAAE,EAAEA,IAAI,IAAI,EAAEjB,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEa,GAAGO,GAAGf,GAAGoH,GAAGxG,EAAE,EAAE,EAAEwG,GAAGxG,EAAE,EAAE,EAAEA,IAAI,GAAG,GAAG,IAAIwG,GAAGzG,EAAE,EAAE,EAAEyG,GAAGzG,EAAE,EAAE,EAAEA,IAAI,IAAI,EAAEd,EAAEF,EAAE,KAAK,CAAC,EAAEa,EAAE,GAAGQ,GAAGpB,GAAGwH,GAAGpH,EAAE,EAAE,EAAEoH,GAAGpH,EAAE,EAAE,EAAEA,IAAI,GAAG,GAAG,IAAIoH,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAE,IAAI,IAAI,EAAEvH,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEgC,GAAEhC,EAAEiC,IAAGd,GAAGvB,GAAG6H,GAAGhH,EAAE,EAAE,EAAEgH,GAAGhH,EAAE,EAAE,EAAEA,IAAI,GAAG,GAAG,IAAIgH,GAAG5G,EAAE,EAAE,EAAE4G,GAAG5G,EAAE,EAAE,EAAEA,IAAI,IAAI,EAAEX,EAAE8B,GAAE,KAAK,CAAC,EAAEC,GAAErC,GAAGsB,GAAGD,GAAGwG,GAAG7H,EAAE,EAAE,EAAE6H,GAAG7H,EAAE,EAAE,EAAEA,IAAI,GAAG,GAAG,IAAI6H,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAE,IAAI,IAAI,EAAEvH,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEoC,GAAEhC,EAAEiC,IAAGnB,GAAGL,GAAGgH,GAAG,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAIA,GAAG7H,EAAE,EAAE,EAAE6H,GAAG7H,EAAE,EAAE,EAAEA,IAAI,IAAI,EAAEM,EAAE8B,GAAE,KAAK,CAAC,EAAEC,GAAE/B,EAAEP,GAAG,CAAC,EAAE,EAAEO,EAAEP,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,CAAC,CAAC,SAASoC,GAAExC,EAAEC,EAAEC,EAAE,CAAC,IAAIG,EAAEC,EAAEI,EAAEC,EAAEC,EAAEE,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEtB,GAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEpB,EAAEjB,EAAEiB,EAAE,IAAI,EAAEJ,EAAEV,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGiB,EAAEX,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEZ,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGmB,EAAEb,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGsB,EAAEf,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGsB,EAAEhB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGuB,EAAEjB,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGyB,EAAElB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGqC,GAAE/B,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGyB,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG2B,EAAEpB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGmC,GAAE7B,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGsC,GAAEhC,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG2B,EAAErB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG6B,EAAEtB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGkC,EAAE5B,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGoC,GAAE9B,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGuC,GAAEjC,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG6B,EAAEvB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG+B,EAAExB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGQ,EAAEF,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGc,GAAER,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGwC,GAAElC,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG+B,EAAEzB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGiC,EAAE1B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGS,EAAEH,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGiC,EAAE3B,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGK,GAAGM,EAAEJ,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKY,EAAEN,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,KAAKM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,KAAKM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKM,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIG,EAAEJ,EAAE,GAAG,CAAC,EAAEM,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGoC,GAAE1B,GAAEL,EAAEuB,EAAEQ,GAAET,EAAE7B,EAAEJ,EAAE,GAAG,CAAC,EAAE0C,GAAEtC,EAAEJ,EAAE,GAAG,CAAC,EAAE0C,KAAI,EAAEtC,EAAEJ,EAAE,GAAG,CAAC,EAAE0C,KAAI,GAAGtC,EAAEJ,EAAE,GAAG,CAAC,EAAE0C,KAAI,GAAGD,GAAEH,GAAE5B,EAAEsB,EAAES,GAAEV,EAAE3B,EAAEJ,EAAE,GAAG,CAAC,EAAEyC,GAAErC,EAAEJ,EAAE,GAAG,CAAC,EAAEyC,KAAI,EAAErC,EAAEJ,EAAE,GAAG,CAAC,EAAEyC,KAAI,GAAGrC,EAAEJ,EAAE,GAAG,CAAC,EAAEyC,KAAI,GAAGD,GAAEH,GAAED,EAAEN,EAAEU,GAAEX,EAAEzB,EAAEJ,EAAE,GAAG,CAAC,EAAEwC,GAAEpC,EAAEJ,EAAE,GAAG,CAAC,EAAEwC,KAAI,EAAEpC,EAAEJ,EAAE,GAAG,CAAC,EAAEwC,KAAI,GAAGpC,EAAEJ,EAAE,GAAG,CAAC,EAAEwC,KAAI,GAAGD,GAAEX,EAAEhB,EAAE2B,GAAEZ,EAAEb,EAAEV,EAAEJ,EAAE,GAAG,CAAC,EAAEuC,GAAEnC,EAAEJ,EAAE,GAAG,CAAC,EAAEuC,KAAI,EAAEnC,EAAEJ,EAAE,GAAG,CAAC,EAAEuC,KAAI,GAAGnC,EAAEJ,EAAE,GAAG,CAAC,EAAEuC,KAAI,GAAGvB,GAAEA,GAAEU,EAAEF,EAAEC,EAAEd,EAAEP,EAAEJ,EAAE,EAAE,CAAC,EAAEgB,GAAEZ,EAAEJ,EAAE,EAAE,CAAC,EAAEgB,KAAI,EAAEZ,EAAEJ,EAAE,GAAG,CAAC,EAAEgB,KAAI,GAAGZ,EAAEJ,EAAE,GAAG,CAAC,EAAEgB,KAAI,GAAGsB,GAAEA,GAAEf,EAAEH,EAAEC,EAAEX,EAAEN,EAAEJ,EAAE,EAAE,CAAC,EAAEsC,GAAElC,EAAEJ,EAAE,EAAE,CAAC,EAAEsC,KAAI,EAAElC,EAAEJ,EAAE,EAAE,CAAC,EAAEsC,KAAI,GAAGlC,EAAEJ,EAAE,EAAE,CAAC,EAAEsC,KAAI,GAAGD,GAAED,EAAEC,GAAElB,EAAED,EAAEiB,EAAE/B,EAAE,EAAEJ,CAAC,EAAEqC,GAAEjC,EAAEJ,EAAE,EAAE,CAAC,EAAEqC,KAAI,EAAEjC,EAAEJ,EAAE,EAAE,CAAC,EAAEqC,KAAI,GAAGjC,EAAEJ,EAAE,EAAE,CAAC,EAAEqC,KAAI,GAAGrC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEkH,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEL,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEkH,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEL,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEoC,EAAE7B,EAAE,GAAGP,EAAEE,EAAG,KAAI,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAE+B,EAAE8E,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAE+B,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEkC,EAAEA,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEkC,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAE+B,EAAE8E,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAE+B,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEkC,EAAEA,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,EAAE,GAAG,CAAC,EAAEoC,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAE+B,EAAE8E,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAE+B,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEkC,EAAEA,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEkC,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAE+B,EAAE8E,GAAGjH,EAAEI,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAE+B,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEkC,EAAEA,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEkC,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAE+B,EAAE8E,GAAGjH,EAAEI,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAE+B,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEkC,EAAEA,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEkC,EAAEA,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE7B,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,GAAG,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAE+B,EAAE8E,GAAGjH,EAAEI,EAAE,GAAG,EAAEA,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAED,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEqC,IAAG/B,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIK,EAAEL,EAAE,GAAG,CAAC,EAAEc,IAAGR,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIK,EAAEL,EAAE,GAAG,CAAC,EAAEoC,IAAG9B,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,IAAIK,EAAEL,GAAG,CAAC,EAAEmC,IAAG7B,EAAE,EAAEN,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,IAAIK,EAAEP,GAAG,CAAC,EAAEwC,IAAGhC,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,IAAIO,EAAEL,EAAE,IAAI,CAAC,EAAEuC,IAAGjC,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIK,EAAEL,EAAE,IAAI,CAAC,EAAEwC,IAAGlC,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIK,EAAEL,EAAE,IAAI,CAAC,EAAEI,GAAGE,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIoB,EAAEjB,EAAE,IAAI,CAAC,CAAC,SAASoC,GAAEzC,EAAEC,EAAEC,EAAE,CAAC,IAAIG,EAAEC,EAAEI,EAAEC,EAAEC,EAAEE,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAEC,GAAEtB,GAAEuB,GAAEC,GAAEC,GAAEC,GAAE,EAAEpB,EAAEjB,EAAEiB,EAAE,IAAI,EAAEO,EAAErB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG4B,EAAEtB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEE,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAG8B,EAAEvB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG8B,EAAExB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAEF,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGgC,EAAEzB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGgC,EAAE1B,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGS,EAAEH,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGkC,EAAE3B,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGkC,EAAE5B,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGwC,GAAElC,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGU,EAAEJ,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGoC,GAAE7B,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGoC,GAAE9B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGY,EAAEN,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGgB,EAAEV,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGiB,EAAEX,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGe,GAAER,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGqC,GAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGkB,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGmB,EAAEb,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGqB,EAAEf,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGuC,GAAEhC,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGuC,GAAEjC,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGsB,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGuB,EAAEjB,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGA,GAAGyB,EAAElB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKyB,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,KAAK2B,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,KAAKM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,EAAEM,EAAEN,EAAE,IAAI,CAAC,GAAG,GAAGM,EAAEN,EAAE,IAAI,CAAC,GAAG,KAAKM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIE,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEuB,EAAEiB,GAAED,GAAEjB,EAAEF,EAAEjB,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEmB,EAAEmB,GAAEvB,GAAEG,EAAED,EAAEd,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEyC,GAAE5B,EAAEwB,GAAED,GAAEzB,EAAER,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEmC,EAAEV,EAAES,EAAExB,EAAEiB,EAAExB,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEoB,EAAEa,EAAED,EAAEvB,EAAEc,EAAEpB,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEiB,EAAEc,EAAED,EAAEzB,EAAEc,EAAEhB,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGA,EAAEyC,GAAEZ,EAAED,EAAEJ,EAAEX,EAAEV,EAAE,EAAEJ,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGD,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEkH,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEL,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEkH,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEL,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAE0C,GAAEnC,EAAE,GAAGP,EAAEE,EAAG,KAAI,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEqC,GAAEwE,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEqC,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEwC,GAAEA,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEwC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEqC,GAAEwE,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEqC,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEwC,GAAEA,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,EAAE,GAAG,CAAC,EAAE0C,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEqC,GAAEwE,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAEqC,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEwC,GAAEA,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEwC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEqC,GAAEwE,GAAGjH,EAAEI,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAEqC,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEwC,GAAEA,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEwC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEqC,GAAEwE,GAAGjH,EAAEI,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAEqC,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEwC,GAAEA,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEwC,GAAEA,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEqC,GAAEA,GAAEnC,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,GAAG,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAEqC,GAAEwE,GAAGjH,EAAEI,EAAE,GAAG,EAAEA,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAED,EAAEM,EAAEL,EAAE,IAAI,CAAC,GAAGM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIS,EAAEJ,EAAEL,EAAE,GAAG,CAAC,GAAGM,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIQ,EAAEH,EAAEL,EAAE,GAAG,CAAC,GAAGM,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,IAAII,EAAEC,EAAEL,GAAG,CAAC,GAAGM,EAAE,EAAEN,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,IAAIuB,EAAElB,EAAEP,GAAG,CAAC,GAAGQ,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,IAAIY,EAAEL,EAAEL,EAAE,IAAI,CAAC,GAAGM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIiB,EAAEZ,EAAEL,EAAE,IAAI,CAAC,GAAGM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIqB,EAAEhB,EAAEL,EAAE,IAAI,CAAC,EAAEyB,GAAGnB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIoB,EAAEjB,EAAE,IAAI,CAAC,CAAC,SAASqC,GAAE1C,EAAEC,EAAEC,EAAEG,EAAEC,EAAE,CAAC,IAAII,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,IAAIT,EAAEZ,EAAEY,EAAE,IAAI,EAAEG,GAAGjB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAID,IAAI,GAAGqB,GAAGlB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAID,GAAG,EAAEe,GAAGZ,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIJ,IAAI,GAAGqB,GAAGf,EAAE,GAAGG,EAAEL,EAAE,GAAG,EAAE,EAAEE,EAAEG,EAAE,EAAE,CAAC,GAAG,EAAEH,EAAEG,EAAE,EAAE,CAAC,GAAG,GAAGH,EAAEG,EAAE,EAAE,CAAC,GAAG,IAAIT,GAAG,EAAEU,EAAEN,EAAE,GAAG,EAAEQ,EAAER,EAAE,GAAG,EAAEY,EAAEZ,EAAG,KAAI,EAAEa,EAAEb,EAAE,GAAG,EAAEJ,EAAEK,EAAEY,EAAE,IAAI,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,EAAE,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEY,EAAE,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEW,EAAE,IAAI,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEY,EAAE,IAAI,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,EAAE,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEY,EAAE,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEgH,GAAG7G,EAAEK,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,EAAE,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,EAAE,IAAI,CAAC,EAAEjB,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,GAAG,CAAC,EAAEZ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEY,EAAE,GAAG,CAAC,EAAEjB,EAAEA,EAAEK,EAAEI,EAAE,IAAI,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEW,EAAE,IAAI,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEgH,GAAG7G,EAAEK,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,EAAE,IAAI,CAAC,EAAEhB,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,GAAG,CAAC,EAAEX,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEW,EAAE,GAAG,CAAC,EAAEhB,EAAEA,EAAEK,EAAEO,EAAE,IAAI,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,EAAE,GAAG,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEO,EAAE,GAAG,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,GAAG,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEI,EAAE,IAAI,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEA,EAAEK,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEI,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEgH,GAAG7G,EAAEK,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,EAAE,IAAI,CAAC,EAAET,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,GAAG,CAAC,EAAEJ,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEI,EAAE,GAAG,CAAC,EAAET,EAAEA,EAAEK,EAAEK,EAAE,IAAI,CAAC,EAAEL,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEK,GAAG,CAAC,EAAEL,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEO,EAAE,IAAI,CAAC,EAAEP,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEO,EAAE,GAAG,CAAC,EAAEP,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEO,EAAE,GAAG,CAAC,EAAEP,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEO,GAAG,CAAC,EAAEP,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEgH,GAAG7G,EAAEK,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,EAAE,GAAG,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,EAAE,IAAI,CAAC,EAAEZ,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,GAAG,CAAC,EAAEP,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEO,EAAE,GAAG,CAAC,EAAEZ,EAAEA,EAAEK,EAAED,EAAE,IAAI,CAAC,EAAEC,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAED,GAAG,CAAC,EAAEC,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEK,EAAE,IAAI,CAAC,EAAEL,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEK,GAAG,CAAC,EAAEL,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEgH,GAAG7G,EAAEK,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAE,GAAG,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAE,IAAI,CAAC,EAAEV,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,GAAG,CAAC,EAAEL,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAE,GAAG,CAAC,EAAEV,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAED,EAAE,IAAI,CAAC,EAAEC,EAAEG,EAAE,GAAG,CAAC,EAAEH,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAE,IAAI,CAAC,EAAER,EAAEA,EAAEK,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEG,GAAG,CAAC,EAAEH,EAAED,GAAG,CAAC,EAAEC,EAAEG,EAAE,GAAG,CAAC,EAAER,EAAEgH,GAAG7G,EAAEK,EAAE,GAAG,EAAEA,CAAC,EAAEc,EAAEjB,EAAEG,EAAE,KAAK,CAAC,EAAEL,EAAEE,EAAEG,EAAE,KAAK,CAAC,EAAER,EAAEK,EAAEG,EAAE,KAAK,CAAC,EAAEiB,EAAEF,EAAElB,EAAEG,EAAE,KAAK,CAAC,EAAEH,EAAED,EAAE,IAAI,CAAC,EAAEqB,EAAEC,EAAE1B,EAAEwB,EAAEnB,EAAED,EAAE,GAAG,CAAC,EAAEsB,EAAEC,EAAExB,EAAEe,EAAEb,EAAED,EAAE,GAAG,CAAC,EAAEuB,EAAEC,EAAEP,EAAEC,EAAEjB,EAAED,GAAG,CAAC,EAAEwB,GAAM,GAAGT,EAAEA,EAAE,EAAE,KAAb,GAAkB,CAAC,EAAE,CAACpB,EAAE,CAACC,EAAE,CAAC,GAAGA,EAAED,EAAE,GAAG,EAAE,CAAC,IAAQ,EAAEC,IAAP,GAAU,MAAMA,EAAE,MAAMD,CAAC,CAAC8B,EAAEvB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEH,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEJ,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAEN,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGY,EAAEV,EAAE,GAAGP,EAAEK,EAAG,KAAI,EAAE,EAAEE,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGkB,EAAEX,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGmB,EAAEjB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGoB,EAAElB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGc,EAAEZ,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGiB,EAAEf,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEhB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGe,EAAEb,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGD,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEM,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGL,EAAEO,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGA,EAAEqB,GAAGnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGL,EAAE2B,EAAEJ,EAAEvB,EAAEC,EAAEG,EAAEgB,EAAEjB,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAE4B,EAAEV,EAAEM,EAAEC,EAAEN,EAAEG,EAAEnB,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGA,EAAE6B,EAAEC,EAAEpB,EAAEC,EAAEE,EAAEI,EAAEd,EAAE,EAAEJ,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAG,MAAM,CAAC,CAACsB,EAAEf,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEhB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGe,EAAEb,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGD,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEM,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGL,EAAEO,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGc,EAAEO,GAAGnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIF,EAAEJ,EAAE,GAAG,CAAC,EAAEoB,EAAEhB,EAAEJ,EAAE,GAAG,CAAC,EAAEoB,IAAI,EAAEhB,EAAEJ,EAAE,GAAG,CAAC,EAAEoB,IAAI,GAAGhB,EAAEJ,EAAE,GAAG,CAAC,EAAEoB,IAAI,GAAGnB,EAAE2B,EAAE3B,EAAEC,EAAEE,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAE4B,EAAExB,EAAEgB,EAAEjB,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGA,EAAE6B,EAAEP,EAAEC,EAAEpB,EAAE,EAAEJ,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGwB,EAAEjB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGoB,EAAElB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGc,EAAEZ,EAAE,GAAGP,EAAEK,EAAG,KAAI,EAAE,EAAEE,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGsB,EAAEf,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEhB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGe,EAAEb,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGD,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEM,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGL,EAAEO,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGA,GAAGE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,KAAKE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGL,EAAEI,EAAEJ,EAAEC,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEsB,EAAEC,EAAEH,EAAEjB,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEwB,EAAEL,EAAEM,EAAEtB,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAG,MAAM,CAAC,CAACwH,GAAGzH,EAAE,EAAEC,CAAC,CAAC,CAACqB,EAAEZ,EAAE,IAAI,CAAC,CAAC,SAASiC,GAAE3C,EAAEC,EAAEC,EAAE,CAAC,IAAIG,EAAEC,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,IAAIT,EAAEjB,EAAEiB,EAAE,KAAK,EAAE2F,GAAG5G,EAAE,IAAI,EAAEH,CAAC,EAAEU,EAAEL,EAAEL,EAAE,IAAI,CAAC,EAAEK,GAAGI,EAAEN,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEI,EAAE,GAAG,CAAC,EAAEC,EAAEE,EAAEP,EAAEL,EAAE,IAAI,CAAC,EAAEK,GAAGK,EAAEP,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEK,EAAE,GAAG,CAAC,EAAEE,EAAEK,EAAEZ,EAAEL,EAAE,IAAI,CAAC,EAAEK,GAAGO,EAAET,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEO,EAAE,GAAG,CAAC,EAAEK,EAAEC,EAAEb,EAAEL,EAAE,IAAI,CAAC,EAAEK,GAAGY,EAAEd,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEY,EAAE,GAAG,CAAC,EAAEC,EAAEA,EAAEb,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,MAAM,CAAC,EAAEe,EAAEI,EAAEjB,EAAEL,EAAE,IAAI,CAAC,EAAEK,GAAGa,EAAEf,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEa,EAAE,GAAG,CAAC,EAAEI,EAAEG,EAAEpB,EAAEL,EAAE,IAAI,CAAC,EAAEK,GAAGiB,EAAEnB,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEiB,EAAE,GAAG,CAAC,EAAEG,EAAEN,EAAEd,EAAE,GAAGkB,EAAEvB,EAAG,KAAI,IAAI,CAAC,EAAEK,GAAGoB,EAAEtB,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEkB,GAAG,CAAC,EAAElB,EAAEoB,EAAE,GAAG,CAAC,EAAEN,EAAEA,EAAEd,EAAEL,EAAE,IAAI,CAAC,EAAEK,GAAGkB,EAAEpB,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEkB,EAAE,GAAG,CAAC,EAAEJ,EAAEA,EAAEd,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,MAAM,CAAC,EAAEgB,EAAEO,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,GAAGc,EAAEhB,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEc,EAAE,GAAG,CAAC,EAAEO,EAAEC,EAAEtB,EAAEL,EAAE,KAAK,CAAC,EAAEK,GAAGqB,EAAEvB,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEqB,EAAE,GAAG,CAAC,EAAEC,EAAEC,EAAEvB,EAAEL,EAAE,KAAK,CAAC,EAAEK,GAAGsB,EAAExB,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEsB,EAAE,GAAG,CAAC,EAAEC,EAAEC,EAAExB,EAAEL,EAAE,KAAK,CAAC,EAAEK,GAAGuB,EAAEzB,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEuB,EAAE,GAAG,CAAC,EAAEC,EAAEA,EAAExB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,MAAM,CAAC,EAAE0B,EAAEyD,GAAGlF,EAAED,EAAE,KAAK,EAAE0B,EAAE1B,EAAE,KAAK,CAAC,EAAEgC,GAAE3B,EAAEL,EAAE,KAAK,EAAEC,EAAEY,EAAEb,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEkB,EAAElB,EAAE,KAAK,EAAEqB,EAAErB,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEqB,EAAER,CAAC,EAAEmB,GAAEhC,EAAE,KAAK,EAAEC,EAAEiB,CAAC,EAAE0F,GAAG/F,EAAEb,EAAE,IAAI,EAAEK,CAAC,EAAEiE,GAAGrE,EAAED,EAAE,KAAK,EAAEH,EAAEgB,CAAC,EAAEmB,GAAE3B,EAAEL,EAAE,KAAK,EAAEC,EAAEY,EAAEb,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEkB,EAAElB,EAAE,KAAK,EAAEqB,EAAErB,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEqB,EAAER,CAAC,EAAEmB,GAAEhC,EAAE,KAAK,EAAEC,EAAEiB,CAAC,EAAE0F,GAAG5G,EAAE,IAAI,EAAEK,CAAC,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEI,GAAG,CAAC,EAAEJ,EAAED,GAAG,CAAC,EAAEC,EAAEI,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEK,GAAG,CAAC,EAAEL,EAAED,GAAG,CAAC,EAAEC,EAAEK,EAAE,GAAG,CAAC,EAAEF,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEO,GAAG,CAAC,EAAEP,EAAED,GAAG,CAAC,EAAEC,EAAEO,EAAE,GAAG,CAAC,EAAEJ,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEY,GAAG,CAAC,EAAEZ,EAAED,GAAG,CAAC,EAAEC,EAAEY,EAAE,GAAG,CAAC,EAAET,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEa,GAAG,CAAC,EAAEb,EAAED,GAAG,CAAC,EAAEC,EAAEa,EAAE,GAAG,CAAC,EAAEV,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEiB,GAAG,CAAC,EAAEjB,EAAED,GAAG,CAAC,EAAEC,EAAEiB,EAAE,GAAG,CAAC,EAAEd,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEoB,GAAG,CAAC,EAAEpB,EAAED,GAAG,CAAC,EAAEC,EAAEoB,EAAE,GAAG,CAAC,EAAEjB,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEkB,GAAG,CAAC,EAAElB,EAAED,GAAG,CAAC,EAAEC,EAAEkB,EAAE,GAAG,CAAC,EAAEf,EAAEJ,EAAEC,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEC,EAAEA,EAAEC,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEC,EAAEI,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEuB,GAAG,CAAC,EAAEvB,EAAED,GAAG,CAAC,EAAEC,EAAEuB,EAAE,GAAG,CAAC,EAAEpB,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEsB,GAAG,CAAC,EAAEtB,EAAED,GAAG,CAAC,EAAEC,EAAEsB,EAAE,GAAG,CAAC,EAAEnB,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEqB,GAAG,CAAC,EAAErB,EAAED,GAAG,CAAC,EAAEC,EAAEqB,EAAE,GAAG,CAAC,EAAElB,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEc,GAAG,CAAC,EAAEd,EAAED,GAAG,CAAC,EAAEC,EAAEc,EAAE,GAAG,CAAC,EAAEX,EAAEJ,EAAEC,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEC,EAAEkF,GAAGlF,EAAED,EAAE,KAAK,EAAE0B,CAAC,EAAEM,GAAE3B,EAAEL,EAAE,KAAK,EAAEC,EAAEY,EAAEb,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEkB,EAAElB,EAAE,KAAK,EAAEqB,EAAErB,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEqB,EAAER,CAAC,EAAEmB,GAAEhC,EAAE,KAAK,EAAEC,EAAEiB,CAAC,EAAE0F,GAAG/F,EAAEb,EAAE,IAAI,EAAEK,CAAC,EAAEiE,GAAGrE,EAAED,EAAE,KAAK,EAAEH,EAAEgB,CAAC,EAAEmB,GAAE3B,EAAEL,EAAE,KAAK,EAAEC,EAAEY,EAAEb,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEkB,EAAElB,EAAE,KAAK,EAAEqB,EAAErB,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEqB,EAAER,CAAC,EAAEmB,GAAEhC,EAAE,KAAK,EAAEC,EAAEiB,CAAC,EAAE0F,GAAG5G,EAAE,IAAI,EAAEK,CAAC,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEI,GAAG,CAAC,EAAEJ,EAAED,GAAG,CAAC,EAAEC,EAAEI,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEK,GAAG,CAAC,EAAEL,EAAED,GAAG,CAAC,EAAEC,EAAEK,EAAE,GAAG,CAAC,EAAEF,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEO,GAAG,CAAC,EAAEP,EAAED,GAAG,CAAC,EAAEC,EAAEO,EAAE,GAAG,CAAC,EAAEJ,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEY,GAAG,CAAC,EAAEZ,EAAED,GAAG,CAAC,EAAEC,EAAEY,EAAE,GAAG,CAAC,EAAET,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEa,GAAG,CAAC,EAAEb,EAAED,GAAG,CAAC,EAAEC,EAAEa,EAAE,GAAG,CAAC,EAAEV,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEiB,GAAG,CAAC,EAAEjB,EAAED,GAAG,CAAC,EAAEC,EAAEiB,EAAE,GAAG,CAAC,EAAEd,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEoB,GAAG,CAAC,EAAEpB,EAAED,GAAG,CAAC,EAAEC,EAAEoB,EAAE,GAAG,CAAC,EAAEjB,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEkB,GAAG,CAAC,EAAElB,EAAED,GAAG,CAAC,EAAEC,EAAEkB,EAAE,GAAG,CAAC,EAAEf,EAAEJ,EAAEC,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEC,EAAEA,EAAEC,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEC,EAAEI,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEuB,GAAG,CAAC,EAAEvB,EAAED,GAAG,CAAC,EAAEC,EAAEuB,EAAE,GAAG,CAAC,EAAEpB,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEsB,GAAG,CAAC,EAAEtB,EAAED,GAAG,CAAC,EAAEC,EAAEsB,EAAE,GAAG,CAAC,EAAEnB,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEqB,GAAG,CAAC,EAAErB,EAAED,GAAG,CAAC,EAAEC,EAAEqB,EAAE,GAAG,CAAC,EAAElB,EAAEA,EAAEH,EAAE,GAAGD,EAAED,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEc,GAAG,CAAC,EAAEd,EAAED,GAAG,CAAC,EAAEC,EAAEc,EAAE,GAAG,CAAC,EAAEX,EAAEJ,EAAEC,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEC,EAAEkF,GAAGlF,EAAED,EAAE,KAAK,EAAE0B,CAAC,EAAEM,GAAE3B,EAAEL,EAAE,KAAK,EAAEC,EAAEY,EAAEb,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEkB,EAAElB,EAAE,KAAK,EAAEqB,EAAErB,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEqB,EAAER,CAAC,EAAEmB,GAAEhC,EAAE,KAAK,EAAEC,EAAEiB,CAAC,EAAE0F,GAAG/F,EAAEb,EAAE,IAAI,EAAEK,CAAC,EAAEiE,GAAGrE,EAAED,EAAE,KAAK,EAAEH,EAAEgB,CAAC,EAAEmB,GAAEnC,EAAEG,EAAE,KAAK,EAAEC,EAAEI,EAAEL,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEa,EAAEb,EAAE,KAAK,EAAEkB,EAAElB,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEkB,EAAEb,CAAC,EAAE2B,GAAEhC,EAAE,KAAK,EAAEC,EAAEY,CAAC,EAAE+F,GAAG5G,EAAE,KAAK,EAAEH,CAAC,EAAEI,EAAEC,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEI,GAAG,CAAC,EAAEJ,EAAEL,GAAG,CAAC,EAAEK,EAAEI,EAAE,GAAG,CAAC,EAAEL,EAAEK,EAAEJ,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEK,GAAG,CAAC,EAAEL,EAAEL,GAAG,CAAC,EAAEK,EAAEK,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEJ,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEO,GAAG,CAAC,EAAEP,EAAEL,GAAG,CAAC,EAAEK,EAAEO,EAAE,GAAG,CAAC,EAAEH,EAAEA,EAAEJ,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEY,GAAG,CAAC,EAAEZ,EAAEL,GAAG,CAAC,EAAEK,EAAEY,EAAE,GAAG,CAAC,EAAER,EAAEA,EAAEJ,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEa,GAAG,CAAC,EAAEb,EAAEL,GAAG,CAAC,EAAEK,EAAEa,EAAE,GAAG,CAAC,EAAET,EAAEA,EAAEJ,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEiB,GAAG,CAAC,EAAEjB,EAAEL,GAAG,CAAC,EAAEK,EAAEiB,EAAE,GAAG,CAAC,EAAEb,EAAEA,EAAEJ,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEoB,GAAG,CAAC,EAAEpB,EAAEL,GAAG,CAAC,EAAEK,EAAEoB,EAAE,GAAG,CAAC,EAAEhB,EAAEA,EAAEJ,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEkB,GAAG,CAAC,EAAElB,EAAEL,GAAG,CAAC,EAAEK,EAAEkB,EAAE,GAAG,CAAC,EAAEd,EAAET,EAAEK,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEH,EAAEA,EAAEK,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEH,EAAES,EAAEJ,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEuB,GAAG,CAAC,EAAEvB,EAAEL,GAAG,CAAC,EAAEK,EAAEuB,EAAE,GAAG,CAAC,EAAEnB,EAAEA,EAAEJ,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEsB,GAAG,CAAC,EAAEtB,EAAEL,GAAG,CAAC,EAAEK,EAAEsB,EAAE,GAAG,CAAC,EAAElB,EAAEA,EAAEJ,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEqB,GAAG,CAAC,EAAErB,EAAEL,GAAG,CAAC,EAAEK,EAAEqB,EAAE,GAAG,CAAC,EAAEjB,EAAEA,EAAEJ,EAAE,GAAGL,EAAEG,EAAE,KAAK,IAAI,CAAC,EAAEE,EAAEc,GAAG,CAAC,EAAEd,EAAEL,GAAG,CAAC,EAAEK,EAAEc,EAAE,GAAG,CAAC,EAAEV,EAAET,EAAEK,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEE,EAAEF,EAAE,MAAM,CAAC,EAAEH,EAAEsF,GAAGtF,EAAEG,EAAE,KAAK,EAAE0B,CAAC,EAAEM,GAAE1B,EAAEN,EAAE,KAAK,EAAEH,EAAEU,EAAEP,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAES,EAAET,EAAE,KAAK,EAAEc,EAAEd,EAAE,KAAK,CAAC,EAAEgC,GAAEhC,EAAE,KAAK,EAAEc,EAAEP,CAAC,EAAEyB,GAAEhC,EAAE,KAAK,EAAEH,EAAEY,CAAC,EAAEmG,GAAG5G,EAAE,KAAK,EAAEM,CAAC,EAAEA,EAAE,EAAET,EAAE,EAAEY,GAAGF,EAAEP,EAAE,KAAK,IAAIH,GAAG,GAAG,EAAEiB,EAAEX,EAAEP,EAAEC,EAAE,CAAC,EAAEE,EAAEU,EAAE,EAAE,CAAC,EAAEK,IAAI,EAAEf,EAAE,EAAEU,CAAC,EAAE,GAAGK,EAAEP,EAAEA,IAAIE,EAAE,EAAEZ,IAAI,GAAG,EAAEY,EAAEN,EAAEP,EAAEa,EAAE,CAAC,EAAEV,EAAEQ,EAAE,EAAE,CAAC,EAAEE,IAAI,EAAEV,EAAE,EAAEQ,CAAC,EAAE,GAAGE,GAAO,GAAGZ,EAAEA,EAAE,EAAE,KAAd,IAAmB,CAAC,IAAID,EAAE,EAAEC,EAAE,GAAGU,GAAGV,EAAED,GAAGO,EAAE,GAAGP,GAAGI,EAAE,KAAK,GAAGM,EAAE,EAAE,EAAE,GAAG,EAAEP,EAAE,EAAEH,CAAC,EAAEW,GAAG,IAAIV,GAAGA,EAAE,GAAGU,EAAEJ,EAAEP,EAAE,EAAE,CAAC,GAAGC,GAAG,IAAI,IAAI,GAAG,GAAG,EAAEE,EAAEH,EAAE,EAAE,CAAC,EAAEW,GAAG,IAAIV,GAAGA,EAAE,GAAGU,EAAEJ,EAAEP,EAAE,EAAE,CAAC,GAAGC,GAAG,IAAI,IAAI,GAAG,GAAG,EAAEE,EAAEH,EAAE,EAAE,CAAC,EAAEW,GAAG,IAAIV,GAAGD,EAAEC,GAAG,IAAI,IAAI,GAAO,GAAGS,EAAEA,EAAE,EAAE,KAAd,IAAmB,CAAC,IAAIP,EAAEC,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEJ,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,GAAG,CAAC,EAAE,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEyH,GAAGzH,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE2B,EAAE3B,EAAE,IAAI,EAAEyB,EAAEzB,EAAE,GAAG,EAAEqB,EAAErB,EAAE,GAAG,EAAEmB,EAAEd,EAAE,KAAK,EAAEH,EAAEG,EAAE,KAAK,EAAEO,EAAEP,EAAE,KAAK,EAAEe,EAAEf,EAAE,KAAK,EAAEM,EAAEN,EAAE,KAAK,EAAEmB,EAAE,GAAGoE,GAAGvF,EAAEuB,EAAEvB,EAAE,IAAI,EAAED,GAAGC,EAAE,KAAK,GAAGmB,EAAE,CAAC,CAAC,EAAEmD,GAAG1E,EAAEI,EAAE,KAAK,EAAEL,EAAEK,CAAC,EAAEgC,GAAEvB,EAAET,EAAE,KAAK,EAAEJ,EAAEU,CAAC,EAAE0B,GAAEjB,EAAER,EAAEV,CAAC,EAAEmC,GAAElB,EAAEjB,EAAES,CAAC,EAAE6E,GAAGvF,EAAEa,CAAC,EAAEuB,GAAEvB,EAAEb,EAAEU,CAAC,EAAE0B,GAAEjB,EAAER,EAAEV,CAAC,EAAEmC,GAAElB,EAAEjB,EAAES,CAAC,EAAE6E,GAAGvF,EAAEa,CAAC,EAAEuB,GAAEvB,EAAEb,EAAEU,CAAC,EAAE0B,GAAEjB,EAAER,EAAEV,CAAC,EAAEmC,GAAElB,EAAEjB,EAAES,CAAC,EAAE6E,GAAGvF,EAAEa,CAAC,EAAEuB,GAAEvB,EAAEb,EAAEU,CAAC,EAAE0B,GAAEjB,EAAER,EAAEV,CAAC,EAAEmC,GAAElB,EAAEjB,EAAES,CAAC,EAAE6E,GAAGvF,EAAEa,CAAC,EAAEuB,GAAErC,EAAEC,EAAEU,CAAC,EAAE0B,GAAEhB,EAAET,EAAEV,CAAC,EAAEmC,GAAEZ,EAAEvB,EAAES,CAAC,EAAE0B,GAAEV,EAAE1B,EAAEW,CAAC,EAAEY,EAAEA,EAAE,EAAE,GAAG,CAACoE,GAAGvF,EAAEuB,EAAExB,EAAEC,EAAE,KAAK,CAAC,CAAC,EAAEsE,GAAG1E,EAAED,EAAEK,CAAC,EAAEgC,GAAErC,EAAEC,EAAEU,CAAC,EAAE0B,GAAEhB,EAAET,EAAEV,CAAC,EAAEmC,GAAEZ,EAAEvB,EAAES,CAAC,EAAE0B,GAAEV,EAAE1B,EAAEW,CAAC,EAAEU,EAAEjB,EAAE,KAAK,CAAC,CAAC,SAASuC,GAAE5C,EAAEC,EAAEC,EAAEE,EAAE,CAAC,IAAIC,EAAEC,EAAEI,EAAE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEtB,GAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEnB,EAAEjB,EAAEiB,EAAE,IAAI,EAAEf,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEsH,GAAGvF,GAAE/B,EAAE,IAAI,EAAEJ,EAAEC,CAAC,EAAEuC,GAAEjC,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAG+B,EAAE3B,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGU,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGc,EAAEV,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGe,EAAEX,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGgB,EAAEZ,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGH,EAAEO,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGiB,EAAEb,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGmB,EAAEf,EAAEJ,EAAE,IAAI,CAAC,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGiC,GAAE7B,EAAEJ,EAAE,IAAI,CAAC,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGkC,GAAE9B,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGoB,EAAEhB,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGqB,EAAEjB,EAAEJ,EAAE,IAAI,CAAC,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGY,GAAER,EAAEJ,EAAE,IAAI,CAAC,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGmC,GAAE/B,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGsB,EAAElB,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGuB,EAAEnB,EAAEJ,EAAE,IAAI,CAAC,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGoC,GAAEhC,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGwB,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEwB,EAAEtB,EAAEF,EAAE,KAAK,CAAC,EAAEyB,EAAEvB,EAAEF,EAAE,KAAK,CAAC,EAAE0B,EAAExB,EAAEF,EAAE,KAAK,CAAC,EAAE2B,EAAEzB,EAAEF,EAAE,KAAK,CAAC,EAAE4B,EAAE1B,EAAEF,EAAE,KAAK,CAAC,EAAE6B,EAAE3B,EAAEF,EAAE,KAAK,CAAC,EAAEC,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEF,EAAEJ,EAAE,IAAI,CAAC,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGG,EAAEF,EAAE,KAAK,CAAC,EAAEC,EAAEI,GAAGF,EAAEJ,EAAE,IAAI,CAAC,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,EAAEI,EAAEJ,EAAE,IAAI,CAAC,GAAG,GAAGI,EAAEJ,EAAE,IAAI,CAAC,GAAG,IAAIG,EAAEF,EAAE,KAAK,CAAC,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIG,EAAEF,EAAE,KAAK,CAAC,EAAEkC,GAAEC,GAAEb,EAAED,EAAEE,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEiC,GAAEtB,GAAES,EAAED,EAAEU,EAAE3B,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEoC,GAAEd,EAAEF,EAAEY,EAAE1B,EAAEF,EAAE,KAAK,CAAC,EAAEW,GAAEsB,GAAElB,EAAED,EAAEa,EAAEzB,EAAEF,EAAE,KAAK,CAAC,EAAEa,EAAEZ,EAAEQ,EAAEiB,EAAErB,EAAEH,EAAEF,EAAE,KAAK,CAAC,EAAEgC,GAAEpC,EAAE,EAAE,EAAE6B,EAAEvB,EAAEF,EAAE,KAAK,CAAC,EAAEmC,GAAEL,EAAEI,GAAEE,GAAEZ,EAAE4F,GAAGvH,EAAEkC,GAAE,EAAE,EAAE,GAAGlC,EAAE,CAAC,EAAEyH,GAAG3H,EAAEoC,GAAElC,CAAC,EAAEA,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAE+B,GAAE7B,EAAEF,EAAE,KAAK,CAAC,EAAEgC,GAAE9B,EAAEF,EAAE,KAAK,CAAC,EAAEiC,GAAE/B,EAAEF,EAAE,KAAK,CAAC,EAAEW,GAAET,EAAEF,EAAE,KAAK,CAAC,EAAEkC,GAAEhC,EAAEF,EAAE,KAAK,CAAC,EAAEmC,GAAEjC,EAAEF,EAAE,KAAK,CAAC,EAAEoC,GAAElC,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEkH,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEL,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEkH,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEL,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEmC,EAAE5B,EAAE,GAAGP,EAAEI,EAAG,KAAI,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAE8B,EAAE+E,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAE8B,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAE8B,EAAE+E,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAE8B,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,GAAG,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,EAAE,GAAG,CAAC,EAAEmC,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAE8B,EAAE+E,GAAGjH,EAAEI,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAE8B,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAE8B,EAAE+E,GAAGjH,EAAEI,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAE8B,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,GAAG,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAE8B,EAAE+E,GAAGjH,EAAEI,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAE8B,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE+B,EAAEA,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAE8B,EAAEA,EAAE5B,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,GAAG,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAE8B,EAAE+E,GAAGjH,EAAEI,EAAE,GAAG,EAAEA,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,GAAG,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,GAAG,CAAC,EAAEH,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEqC,IAAGjC,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIG,EAAEH,EAAE,GAAG,CAAC,EAAEoC,IAAGhC,EAAEJ,EAAE,EAAE,CAAC,EAAEI,EAAEJ,EAAE,EAAE,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIG,EAAEH,EAAE,GAAG,CAAC,EAAEmC,IAAG/B,EAAEJ,EAAE,EAAE,CAAC,EAAEI,EAAEJ,EAAE,EAAE,CAAC,GAAG,EAAEI,EAAEJ,EAAE,EAAE,CAAC,GAAG,GAAGI,EAAEJ,EAAE,EAAE,CAAC,GAAG,IAAIG,EAAEH,GAAG,CAAC,EAAEY,IAAGR,EAAE,EAAEJ,CAAC,EAAEI,EAAEJ,EAAE,EAAE,CAAC,GAAG,EAAEI,EAAEJ,EAAE,EAAE,CAAC,GAAG,GAAGI,EAAEJ,EAAE,EAAE,CAAC,GAAG,IAAIG,EAAEP,GAAG,CAAC,EAAEoC,IAAG5B,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,IAAIO,EAAEH,EAAE,IAAI,CAAC,EAAEkC,IAAG9B,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIG,EAAEH,EAAE,IAAI,CAAC,EAAEF,GAAGM,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIG,EAAEH,EAAE,IAAI,CAAC,EAAEiC,IAAG7B,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIkB,EAAEjB,EAAE,IAAI,CAAC,CAAC,SAASwC,GAAE7C,EAAEC,EAAE,CAAC,IAAIC,EAAEE,EAAEC,EAAEC,EAAEE,EAAEE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAEC,GAAEC,GAAEtB,GAAEuB,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,EAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEpB,GAAEyE,EAAGnH,GAAGoB,EAAEjB,EAAEN,EAAE,IAAI,CAAC,IAAI,EAAES,EAAEN,GAAG,GAAGsD,IAAGT,GAAE1C,EAAEN,EAAE,GAAG,CAAC,IAAI,EAAEI,EAAEqD,IAAG,EAAE,EAAEV,GAAEvB,EAAEK,EAAEyB,EAAEhD,EAAEN,EAAE,GAAG,CAAC,EAAE8C,IAAGS,GAAE+D,EAAGhE,EAAE7B,EAAE6B,GAAG,GAAGA,EAAE7B,CAAC,GAAGoB,GAAE,EAAEA,GAAErB,EAAEuB,GAAE,EAAEF,GAAEC,KAAI,EAAES,KAAI,EAAEV,GAAE,EAAE,EAAEA,GAAEE,GAAEuE,EAAGpE,GAAE5C,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEkD,IAAG,GAAGK,IAAGN,GAAE3C,EAAEN,GAAG,CAAC,IAAI,EAAEK,EAAEkD,IAAG,EAAE,EAAEV,GAAErB,EAAEqB,GAAE,EAAEA,IAAGC,GAAEC,GAAED,GAAE,KAAK,EAAEC,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAE1B,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAE+C,GAAEuE,EAAGxD,GAAGpD,GAAES,EAAE,EAAE,EAAEO,EAAEoC,IAAI,GAAG3C,EAAEW,EAAEX,GAAG,EAAE,EAAE0B,GAAErB,EAAEqB,GAAE,EAAEA,IAAGC,GAAEC,GAAED,GAAE,KAAK,EAAEC,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAEE,GAAED,GAAE1B,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEmD,GAAEmE,EAAGlE,EAAE1C,GAAEU,EAAE,EAAE,EAAEP,EAAEuC,GAAG,GAAGN,IAAG7C,EAAEK,EAAEN,EAAE,IAAI,CAAC,IAAI,EAAE8C,IAAG,EAAE,EAAEA,GAAEtB,EAAEqB,GAAE,EAAEC,IAAGC,GAAEA,GAAEI,GAAE,KAAK,EAAEA,KAAI,EAAEL,GAAE,EAAE,EAAEA,GAAET,GAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAE6C,GAAEyE,EAAGnE,GAAEzC,GAAE2B,GAAE,EAAE,EAAE9B,EAAE4C,IAAG,GAAGO,IAAIzC,EAAEX,EAAEN,EAAE,IAAI,CAAC,IAAI,EAAEqB,EAAEqC,IAAI,EAAE,EAAE1D,EAAEwB,EAAEsB,GAAE,EAAER,GAAEO,IAAGA,KAAI,GAAGE,GAAEF,GAAEE,GAAE,KAAK,EAAE/C,EAAE,EAAEA,IAAI,EAAE+C,KAAI,GAAGR,GAAEO,GAAE,UAAUf,EAAEgB,IAAG,GAAG,EAAEP,GAAEK,GAAEC,KAAI,EAAE,SAASD,GAAE,EAAE,EAAEA,GAAE7C,EAAE6C,IAAG,GAAGW,IAAG,SAASX,KAAI,EAAEC,KAAI,GAAGD,GAAEyE,EAAG7D,GAAErD,EAAE8C,GAAE,CAAC,EAAEH,GAAEvB,EAAEsB,IAAGa,GAAG2D,EAAGhE,IAAI,EAAEhC,EAAEgC,GAAG,GAAG/B,EAAES,EAAET,GAAG,EAAE,GAAGsB,GAAE,EAAEA,GAAErB,EAAEuB,GAAE,EAAEF,GAAEC,KAAI,EAAEa,KAAK,EAAEd,GAAE,EAAE,EAAEA,GAAEE,IAAGY,GAAG2D,EAAGrG,EAAEU,EAAEV,GAAG,GAAGsC,GAAElD,CAAC,GAAGyC,GAAE,EAAEA,GAAEtB,EAAEqB,GAAE,EAAEC,GAAEC,KAAI,EAAEY,KAAK,EAAEb,GAAE,EAAE,EAAEA,GAAEkB,GAAGsD,EAAGlE,EAAEvC,EAAE8C,GAAGxC,GAAG,EAAEc,EAAE0B,IAAI,EAAE,EAAEd,GAAErB,EAAEsB,GAAE,EAAED,IAAGE,GAAEiB,GAAGjB,GAAE,KAAK,EAAEiB,KAAK,EAAEnB,GAAE,EAAE,EAAEA,GAAEC,GAAEwE,EAAGnE,GAAE5C,EAAEN,EAAEiB,EAAEjB,GAAG,EAAE,EAAE4C,GAAErB,EAAEqB,GAAE,EAAE7C,EAAEA,GAAG8C,IAAGA,KAAI,GAAGC,GAAED,GAAEC,GAAE,KAAK,EAAEF,GAAE,EAAEA,KAAI,EAAEE,KAAI,IAAI,EAAEiB,GAAGjB,IAAGF,GAAEE,IAAG,GAAGS,GAAE,EAAEX,GAAE7C,EAAE6C,KAAI,EAAEE,KAAI,EAAE/C,EAAE,EAAE,EAAEA,EAAEyC,GAAEM,GAAEA,GAAE,SAAS,EAAES,IAAG,UAAUX,GAAEE,KAAI,EAAE,SAASF,GAAE,EAAE,EAAEA,MAAK,EAAEE,KAAI,GAAGA,GAAEF,IAAG,GAAG7C,EAAEsH,EAAGnH,EAAEM,EAAEc,EAAES,CAAC,EAAEa,GAAErB,EAAEsB,GAAEwE,EAAGpE,GAAE,EAAEI,EAAEhC,CAAC,EAAEuB,GAAErB,EAAEqB,GAAE,EAAEA,IAAG7C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,GAAEwE,EAAG7D,GAAErD,EAAEsD,GAAGrC,CAAC,EAAEwB,GAAErB,EAAEqB,GAAE,EAAEA,IAAG7C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,IAAGc,GAAG0D,EAAG/D,GAAElD,EAAEJ,EAAEiB,CAAC,GAAGlB,EAAE,EAAEA,EAAEwB,EAAEqB,GAAE,EAAE7C,EAAE8C,KAAI,EAAEc,KAAK,EAAE5D,EAAE,EAAE,EAAEA,EAAE4D,GAAG0D,EAAGlE,EAAEvC,EAAEO,EAAEQ,EAAER,GAAG,EAAE,EAAEyB,GAAErB,EAAExB,EAAE,EAAE6C,IAAGC,GAAEc,GAAGd,GAAE,KAAK,EAAEc,KAAK,EAAEf,GAAE,EAAE,EAAEA,GAAE7C,GAAG4D,GAAG0D,EAAGnE,GAAE5C,EAAEoD,GAAG1B,CAAC,GAAGa,GAAE,EAAEA,GAAEtB,EAAEqB,GAAE,EAAE7C,IAAI6C,GAAE7C,KAAK,EAAE4D,KAAK,EAAEd,GAAE,EAAEA,KAAI,EAAED,KAAI,GAAGC,GAAEU,GAAEA,GAAEX,IAAG,EAAEA,GAAE7C,EAAE+C,GAAE,EAAEF,IAAGC,GAAEA,GAAEU,GAAE,KAAK,EAAEA,KAAI,EAAEX,GAAE,EAAE,EAAEA,GAAEe,GAAG5D,EAAE8C,GAAE,SAAS,EAAEC,GAAEF,GAAE7C,IAAI,EAAE,SAAS6C,GAAE,EAAE,EAAEA,GAAEvC,EAAEP,EAAE,IAAI,CAAC,EAAE+C,IAAG,UAAU9C,GAAG8C,GAAEwE,EAAGtH,EAAEU,GAAEO,EAAE,EAAE,EAAEjB,GAAG,GAAGiB,EAAEU,CAAC,EAAE6B,GAAEhC,EAAExB,GAAG6C,GAAEyE,EAAGtH,EAAEiD,GAAEJ,GAAE7C,GAAG,GAAGA,EAAE6C,EAAC,GAAGC,GAAE,EAAEA,GAAEtB,EAAEgC,GAAE,EAAEV,GAAE9C,IAAI,EAAE6C,KAAI,EAAEC,GAAE,EAAE,EAAEA,GAAEe,GAAGyD,EAAGrE,GAAEvC,GAAET,EAAE,EAAE,EAAEiC,EAAEe,IAAG,GAAGO,GAAEN,IAAG,EAAEf,GAAEqB,IAAG,EAAE,EAAEX,GAAErB,EAAEsB,GAAE,EAAED,IAAG7C,EAAE6D,GAAG7D,EAAE,KAAK,EAAE6D,KAAK,EAAEhB,GAAE,EAAE,EAAEA,GAAEC,GAAEwE,EAAGnH,EAAEM,EAAEqD,GAAGpC,CAAC,EAAEmB,GAAErB,EAAEqB,GAAE,EAAEA,IAAG7C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,IAAGe,GAAGyD,EAAGlE,EAAEvC,EAAEyC,EAAEhC,CAAC,GAAGtB,EAAE,EAAEA,EAAEwB,EAAEqB,GAAE,EAAE7C,EAAE8C,KAAI,EAAEe,KAAK,EAAE7D,EAAE,EAAE,EAAEA,EAAE6D,GAAGyD,EAAG7D,GAAErD,EAAE+C,GAAE5C,CAAC,EAAEsC,GAAErB,EAAExB,EAAE,EAAE6D,GAAGhB,KAAIC,GAAEe,GAAGf,GAAE,KAAK,EAAEe,KAAK,EAAEhB,GAAE,EAAEA,KAAI,EAAEC,KAAI,GAAGJ,GAAE1C,EAAE,UAAUoC,GAAEU,IAAG,GAAG,EAAEH,GAAEG,GAAE9C,IAAI,EAAE,SAAS6C,GAAE,EAAE,EAAEA,GAAEkB,GAAI,SAASjB,KAAI,EAAE9C,IAAI,GAAGiE,GAAGnB,IAAG,GAAG9C,EAAEsH,EAAGrE,GAAEf,EAAEwB,GAAGrC,CAAC,EAAEwB,GAAErB,EAAEsB,GAAEwE,EAAG/D,GAAElD,EAAE2C,GAAEjC,GAAEiC,IAAG,EAAE,EAAEH,GAAErB,EAAEqB,GAAE,EAAEA,IAAG7C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,IAAGO,EAAEiE,EAAGpE,GAAE,EAAEY,GAAGpC,CAAC,GAAG1B,EAAE,EAAEA,EAAEwB,EAAEqB,GAAE,EAAE7C,EAAE8C,KAAI,EAAEO,IAAI,EAAErD,EAAE,EAAE,EAAEA,EAAEqD,EAAEiE,EAAGlE,EAAEvC,EAAEV,EAAEM,CAAC,EAAEoC,GAAErB,EAAExB,EAAE,EAAE6C,IAAGC,GAAEO,EAAEP,GAAE,KAAK,EAAEO,IAAI,EAAER,GAAE,EAAE,EAAEA,GAAEQ,GAAGrD,EAAEsH,EAAGnE,GAAE5C,EAAEsB,EAAEJ,CAAC,GAAGqB,GAAE,EAAEA,GAAEtB,EAAEqB,GAAE,EAAEA,IAAG7C,GAAGA,IAAI,EAAEqD,IAAI,EAAEP,GAAE,EAAEA,KAAI,EAAEO,IAAI,IAAIY,GAAG,EAAEpB,IAAGC,IAAGO,IAAI,GAAGU,EAAG,KAAK,EAAEV,IAAI,EAAER,GAAE,EAAE,EAAEA,GAAEoB,GAAGnB,GAAEO,EAAEP,GAAEA,GAAE,SAAS,EAAEF,IAAG,UAAUC,GAAEC,KAAI,EAAE,SAASD,GAAE,EAAE,EAAEA,MAAK,EAAEC,KAAI,GAAGiB,EAAGlB,IAAG,GAAG7C,EAAEsH,EAAG/D,GAAElD,EAAEwB,EAAEJ,CAAC,EAAEoB,GAAErB,EAAEsB,GAAEwE,EAAG7D,GAAErD,EAAE4C,GAAEjC,EAAC,EAAE8B,GAAErB,EAAEqB,GAAE,EAAEA,IAAG7C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEG,GAAEsE,EAAGrE,GAAEf,EAAEjC,EAAEiB,CAAC,EAAE4B,GAAEtB,EAAEqB,GAAE,EAAEC,IAAG9C,EAAEgD,GAAEhD,EAAE,KAAK,EAAEgD,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAEE,GAAEsE,EAAG5D,GAAGrC,EAAEyC,GAAGpC,CAAC,EAAEmB,GAAErB,EAAEsB,GAAE,EAAED,IAAG7C,EAAEgD,GAAEhD,EAAE,KAAK,EAAEgD,KAAI,EAAEH,GAAE,EAAE,EAAEA,GAAEC,GAAEwE,EAAGlE,EAAEvC,EAAE2C,GAAErB,EAAC,EAAEU,GAAErB,EAAEqB,GAAE,EAAEA,IAAG7C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,IAAGE,GAAEsE,EAAGnE,GAAE5C,EAAEJ,EAAEM,CAAC,GAAGT,EAAE,EAAEA,EAAEwB,EAAEqB,GAAE,EAAEA,IAAGA,IAAGC,KAAI,EAAEE,KAAI,EAAEhD,EAAE,EAAEA,IAAI,EAAE8C,KAAI,IAAIiB,EAAG,EAAEd,GAAEjD,GAAG8C,KAAI,GAAGF,GAAE,EAAEC,GAAE7C,IAAI,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEkB,EAAG/D,EAAEA,EAAE,SAAS,EAAEgD,GAAEF,GAAE9C,IAAI,EAAE,SAAS6C,GAAE,EAAE,EAAEA,GAAEvC,EAAEP,EAAE,GAAG,CAAC,EAAEkD,IAAG,UAAUjD,GAAGA,EAAEsH,EAAGhE,EAAEhC,EAAEL,EAAEU,CAAC,EAAEmB,GAAEtB,EAAEqB,IAAGI,GAAEqE,EAAGpE,GAAE,EAAE/C,EAAEM,CAAC,GAAGT,EAAE,EAAEA,EAAEwB,EAAEsB,GAAE,EAAE9C,EAAE6C,KAAI,EAAEI,KAAI,EAAEjD,EAAE,EAAE,EAAEA,EAAE8C,IAAGG,GAAEqE,EAAG7D,GAAErD,EAAEH,EAAEiB,CAAC,GAAG2B,GAAE,EAAEA,GAAErB,EAAExB,EAAE,EAAE6C,GAAEC,KAAI,EAAEG,KAAI,EAAEJ,GAAE,EAAE,EAAEA,GAAE7C,GAAGiD,GAAEqE,EAAG/D,GAAElD,EAAEc,EAAEW,CAAC,GAAGgB,GAAE,EAAEA,GAAEtB,EAAEqB,GAAE,EAAEC,GAAE9C,IAAI,EAAEiD,KAAI,EAAEH,GAAE,EAAE,EAAEA,GAAEG,GAAEqE,EAAGnE,GAAE5C,EAAEa,EAAEQ,CAAC,EAAEiB,GAAErB,EAAEsB,GAAE,EAAED,IAAGA,KAAI7C,EAAEiD,GAAEjD,EAAE,KAAK,EAAEiD,KAAI,EAAEJ,GAAE,EAAEA,KAAI,EAAE7C,IAAI,KAAK8C,GAAEC,IAAG,IAAI,EAAE/C,GAAG8C,GAAEC,IAAGE,GAAEjD,GAAG,IAAIA,GAAG,SAAS+C,KAAI,EAAEa,KAAK,IAAI,KAAK,EAAE5D,IAAI,EAAE6C,GAAE,EAAE,EAAEA,GAAEI,GAAEJ,GAAEC,GAAE,SAAS,EAAEC,GAAE/C,EAAE6C,KAAI,EAAE,SAAS7C,EAAE,EAAE,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAE+C,IAAG,UAAUD,IAAG7C,EAAEsH,EAAG/D,GAAElD,EAAEkB,EAAES,CAAC,EAAEa,GAAErB,EAAEsB,GAAEwE,EAAG7D,GAAErD,EAAEyB,EAAEJ,CAAC,EAAEoB,GAAErB,EAAEqB,GAAE,EAAEA,IAAG7C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,GAAEwE,EAAGrH,EAAEiB,EAAE4C,GAAGpC,CAAC,EAAEmB,GAAErB,EAAEqB,GAAE,EAAEA,IAAG7C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,IAAGM,EAAEkE,EAAGlE,EAAEvC,EAAE6C,GAAGrC,CAAC,GAAGrB,EAAE,EAAEA,EAAEwB,EAAEqB,GAAE,EAAE7C,EAAE8C,KAAI,EAAEM,IAAI,EAAEpD,EAAE,EAAE,EAAEA,EAAE6C,IAAGO,EAAEkE,EAAGnE,GAAE5C,EAAE2C,GAAE,CAAC,GAAGJ,GAAE,EAAEA,GAAEtB,EAAExB,EAAE,EAAEA,EAAE6C,GAAEA,IAAGA,KAAI,EAAEO,IAAI,EAAEN,GAAE,EAAEA,KAAI,EAAED,KAAI,GAAGC,GAAE9C,GAAG,EAAE6C,IAAG7C,EAAEgD,IAAG,IAAIH,GAAE,EAAEA,IAAGC,GAAEA,IAAGE,IAAG,SAASA,KAAI,EAAEe,IAAK,IAAI,KAAK,EAAEf,KAAI,EAAEH,GAAE,EAAE,EAAEA,GAAEO,EAAEpD,EAAE8C,GAAE,SAAS,EAAEE,GAAEH,GAAE7C,IAAI,EAAE,SAAS6C,GAAE,EAAE,EAAEA,GAAEvC,EAAEP,EAAE,IAAI,CAAC,EAAE+C,IAAG,UAAU9C,GAAGA,EAAEsH,EAAGrH,EAAEiB,EAAEoC,EAAEhC,CAAC,EAAEuB,GAAErB,EAAEsB,GAAEwE,EAAGpE,GAAE,EAAEA,GAAE,CAAC,EAAEL,GAAErB,EAAEqB,GAAE,EAAEA,IAAG7C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,GAAEwE,EAAGnH,EAAEM,EAAEiD,GAAGrC,CAAC,EAAEwB,GAAErB,EAAEqB,GAAE,EAAEA,IAAG7C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,GAAEwE,EAAG7D,GAAErD,EAAEuD,GAAG1B,CAAC,EAAEY,GAAErB,EAAEqB,GAAE,EAAEA,IAAG7C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,IAAGI,GAAEoE,EAAG/D,GAAElD,EAAEe,EAAEQ,CAAC,GAAG5B,EAAE,EAAEA,EAAEwB,EAAEqB,GAAE,EAAE7C,EAAE8C,KAAI,EAAEI,KAAI,EAAElD,EAAE,EAAE,EAAEA,EAAE6C,IAAGK,GAAEoE,EAAGzE,GAAEM,GAAE5C,EAAE4C,GAAEd,GAAEqB,GAAGP,IAAG,EAAE,GAAGL,GAAE,EAAEA,GAAEtB,EAAExB,EAAE,EAAEA,EAAE6C,GAAEA,IAAGA,KAAI,EAAEK,KAAI,EAAEJ,GAAE,EAAEA,KAAI,EAAED,KAAI,GAAGC,GAAE9C,GAAG,EAAE6C,IAAG7C,EAAE+C,IAAG,IAAIF,GAAE,EAAEA,IAAGC,GAAEA,IAAGC,IAAG,SAASA,KAAI,EAAEE,KAAI,IAAI,KAAK,EAAEF,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAEK,GAAElD,EAAE8C,GAAE,SAAS,EAAEC,GAAEF,GAAE7C,IAAI,EAAE,SAAS6C,GAAE,EAAE,EAAEA,GAAEvC,EAAEP,EAAE,IAAI,CAAC,EAAE+C,IAAG,UAAU9C,GAAG6C,GAAEG,IAAG,GAAGF,IAAGE,IAAG,SAASA,KAAI,EAAEI,IAAI,KAAKrB,GAAG/B,EAAE,UAAUuC,IAAG,GAAG,EAAEvC,EAAE6C,IAAGP,KAAItC,IAAI,EAAE+B,IAAI,GAAGS,GAAE,GAAG,GAAG,EAAExC,EAAE8C,KAAI,EAAEE,KAAI,EAAEhD,EAAE,EAAE,EAAEA,EAAEgD,GAAEF,GAAED,GAAE7C,EAAEA,IAAI,UAAU6C,IAAGC,GAAEA,GAAE,SAAS,KAAK,EAAE,SAASD,GAAE,EAAE,EAAEA,MAAK,EAAEC,KAAI,KAAKgB,GAAGE,IAAI,UAAUvB,IAAG,GAAG,EAAEnC,EAAEP,EAAE,IAAI,CAAC,EAAEC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEiD,IAAG,UAAUF,IAAG9C,EAAEsH,EAAGnH,EAAEM,EAAER,EAAEiB,CAAC,EAAE4B,GAAEtB,EAAEqB,IAAGG,GAAEsE,EAAGrG,EAAEU,EAAE6B,GAAErB,EAAC,GAAGnC,EAAE,EAAEA,EAAEwB,EAAEsB,GAAE,EAAE9C,EAAE6C,KAAI,EAAEG,KAAI,EAAEhD,EAAE,EAAE,EAAEA,EAAE8C,IAAGE,GAAEsE,EAAGhE,EAAEhC,EAAEH,EAAEW,CAAC,GAAGe,GAAE,EAAEA,GAAErB,EAAExB,EAAE,EAAE6C,GAAEC,KAAI,EAAEE,KAAI,EAAEH,GAAE,EAAE,EAAEA,GAAE7C,GAAGgD,GAAEsE,EAAG7D,GAAErD,EAAEgB,EAAEQ,CAAC,GAAGkB,GAAE,EAAEA,GAAEtB,EAAEqB,GAAE,EAAEC,GAAE9C,IAAI,EAAEgD,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAEE,GAAEsE,EAAG/D,GAAElD,EAAE8C,GAAEO,EAAE,EAAEb,GAAErB,EAAEsB,GAAE,EAAED,KAAI7C,EAAEgD,GAAEhD,EAAE,KAAK,EAAEgD,KAAI,EAAEH,GAAE,EAAEA,KAAI,EAAE7C,IAAI,GAAGgD,GAAEhD,GAAG,EAAE6C,GAAEA,IAAGC,GAAEC,IAAG,IAAI,EAAE/C,GAAGA,GAAG,SAAS+C,KAAI,EAAEG,KAAI,MAAM,GAAGH,GAAEC,GAAEhD,EAAE,KAAK,EAAE6C,GAAE,EAAE,EAAEA,GAAE7C,GAAG6C,GAAEE,GAAE,SAAS,KAAK,EAAE,SAAS/C,EAAE,EAAE,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEgD,IAAG,UAAUF,IAAGG,GAAEiB,IAAI,UAAUZ,GAAG,EAAEN,GAAEX,IAAGU,GAAE,UAAUJ,IAAG,EAAEe,GAAEI,KAAKf,KAAI,EAAEV,KAAI,GAAGO,GAAE,GAAG,EAAE3C,EAAEsH,GAAI,SAAStH,IAAI,EAAE6C,KAAI,GAAG7C,GAAG,GAAG,GAAG,CAAC,EAAE8C,GAAEtB,EAAEiC,GAAE,EAAEV,GAAEF,GAAE7C,EAAE+C,GAAE,EAAE/C,EAAEA,IAAI,EAAE6C,KAAI,EAAEC,GAAE,EAAE,EAAEA,GAAE9C,IAAI,UAAUA,GAAG6C,GAAEA,GAAE,SAAS,KAAK,EAAE,SAAS7C,EAAE,EAAE,EAAEA,KAAK,EAAE6C,KAAI,IAAIG,GAAE,EAAE1C,EAAEP,EAAE,GAAG,CAAC,EAAEC,EAAEM,EAAEP,GAAG,CAAC,EAAEgD,IAAG,UAAUF,GAAE,CAAC,SAASA,GAAE9C,EAAEC,EAAE,CAAC,IAAIC,EAAEE,EAAEC,EAAEC,EAAEE,EAAEE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAEC,GAAEC,GAAEtB,GAAEuB,GAAEC,GAAEC,GAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAErB,GAAE6E,EAAGnH,GAAGsB,EAAEnB,EAAEN,EAAE,IAAI,CAAC,IAAI,EAAES,EAAEN,GAAG,GAAGsB,EAAEK,EAAEL,GAAG,EAAE,EAAEkB,GAAEnB,EAAEkB,IAAGO,GAAEqE,EAAGzE,GAAEvC,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAE6C,IAAG,GAAGhC,GAAG+B,GAAEtC,EAAEN,EAAE,GAAG,CAAC,IAAI,EAAEoB,EAAEP,GAAG,EAAE,GAAG4B,GAAE,EAAEA,GAAEjB,EAAEmB,GAAE,EAAEF,GAAEC,KAAI,EAAEO,KAAI,EAAER,GAAE,EAAE,EAAEA,GAAEE,IAAGO,GAAEoE,EAAGjE,GAAGpC,EAAEX,EAAEN,EAAE,IAAI,CAAC,IAAI,EAAEqB,EAAEgC,GAAG,GAAGJ,IAAGH,GAAExC,EAAEN,EAAE,GAAG,CAAC,IAAI,EAAEI,EAAE6C,IAAG,EAAE,GAAGP,GAAE,EAAEA,GAAElB,EAAEiB,GAAE,EAAEC,GAAEC,KAAI,EAAEO,KAAI,EAAER,GAAE,EAAE,EAAEA,GAAEK,GAAEuE,EAAGrH,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEkB,EAAEjB,GAAG,GAAGiD,IAAGM,GAAElD,EAAEN,GAAG,CAAC,IAAI,EAAEK,EAAE6C,IAAG,EAAE,EAAET,GAAEjB,EAAEkB,GAAE,EAAED,IAAGE,GAAEI,GAAEJ,GAAE,KAAK,EAAEI,KAAI,EAAEN,GAAE,EAAE,EAAEA,GAAEC,GAAEC,GAAErB,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAE2C,GAAE2E,EAAGnE,GAAEzC,GAAEY,EAAE,EAAE,EAAEH,EAAEgC,IAAG,GAAG7B,EAAEK,EAAEL,GAAG,EAAE,EAAEmB,GAAEjB,EAAEiB,GAAE,EAAEA,IAAGC,GAAEA,GAAEC,GAAE,KAAK,EAAEA,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAEN,GAAE7B,EAAEN,EAAE,IAAI,CAAC,EAAE2C,GAAE2E,EAAGvE,GAAErC,GAAEyB,GAAE,EAAE,EAAE5B,EAAEwC,IAAG,GAAGnB,GAAGL,EAAEjB,EAAEN,EAAE,IAAI,CAAC,IAAI,EAAE+B,EAAEH,GAAG,EAAE,EAAE5B,EAAEwB,EAAEiB,GAAE,EAAEc,GAAEb,GAAEC,GAAED,GAAE,EAAEC,GAAED,KAAI,EAAEC,KAAI,EAAE3C,EAAE,EAAE,EAAEA,EAAEA,EAAEsH,EAAGrE,GAAE7C,EAAEyC,GAAE,CAAC,EAAEJ,GAAEjB,EAAEkB,GAAE4E,EAAGzG,EAAEO,EAAEK,EAAEK,CAAC,EAAEW,GAAEjB,EAAEiB,GAAE,EAAEA,IAAGzC,EAAE0C,GAAE1C,EAAE,KAAK,EAAE0C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEO,GAAEsE,EAAGrG,EAAEY,EAAEZ,GAAG,GAAGiC,GAAE7C,CAAC,EAAEqC,GAAElB,EAAEiB,GAAE,EAAEC,IAAG1C,EAAEgD,GAAEhD,EAAE,KAAK,EAAEgD,KAAI,EAAEN,GAAE,EAAE,EAAEA,GAAEM,GAAEsE,EAAGnE,GAAEhC,EAAES,EAAEG,CAAC,EAAEU,GAAEjB,EAAEkB,GAAE,EAAED,IAAGzC,EAAEgD,GAAEhD,EAAE,KAAK,EAAEgD,KAAI,EAAEP,GAAE,EAAE,EAAEA,GAAEC,GAAE4E,EAAGvE,GAAExC,EAAEN,EAAEiB,CAAC,EAAEuB,GAAEjB,EAAEiB,GAAE,EAAEoB,GAAG7D,EAAE0C,GAAE1C,EAAE,EAAEoD,EAAEpD,IAAI,EAAE0C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEA,GAAE6E,EAAGrE,GAAE7C,EAAED,EAAEM,CAAC,EAAEiC,GAAElB,EAAEQ,EAAEhC,EAAE4C,GAAEA,GAAE0E,EAAGtH,EAAEsD,EAAEtD,GAAG,GAAGA,EAAEsD,CAAC,EAAEtD,EAAEwB,EAAEkB,GAAE,EAAE1C,GAAGyC,GAAEG,GAAEH,GAAE,KAAK,EAAEG,KAAI,EAAE5C,EAAE,EAAE,EAAEA,EAAE0C,IAAGE,GAAE0E,EAAGpE,GAAE7C,EAAEwC,GAAE,CAAC,GAAGJ,GAAE,EAAEA,GAAEjB,EAAExB,EAAE,EAAEyC,GAAEC,KAAI,EAAEE,KAAI,EAAEH,GAAE,EAAE,EAAEA,GAAEzC,GAAG4C,GAAE0E,EAAGtE,GAAEtC,GAAEa,EAAE,EAAE,EAAEG,EAAEsB,IAAG,GAAGzB,EAAEU,EAAEV,GAAG,EAAE,GAAGmB,GAAE,EAAEA,GAAElB,EAAEiB,GAAE,EAAEC,GAAE1C,IAAI,EAAE4C,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAE1C,GAAGyC,GAAEzC,IAAI4C,GAAE0E,EAAGnE,GAAEhC,EAAEnB,EAAEC,GAAG,EAAED,GAAG,EAAE,GAAG,EAAEyC,GAAEjB,EAAEkB,GAAE,EAAED,GAAEzC,IAAI,EAAE4C,KAAI,EAAEH,GAAE,EAAE,EAAEA,GAAEC,GAAE1C,EAAEA,EAAEsH,EAAGvE,GAAExC,EAAE8C,EAAEhC,CAAC,EAAEoB,GAAEjB,EAAEiB,GAAE,EAAEL,GAAEM,GAAEA,GAAE1C,EAAE,EAAEqC,GAAEI,GAAEzC,IAAI,EAAE0C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEzC,EAAEyC,GAAE1B,GAAE2B,GAAEA,GAAE,SAAS,EAAEJ,GAAEtC,EAAE0C,KAAI,EAAE,SAAS1C,EAAE,EAAE,EAAEA,EAAEyC,IAAGA,GAAEzC,GAAG,IAAIoD,EAAE,EAAES,GAAG7D,GAAG0C,IAAG,SAAS1C,IAAI,EAAE0C,KAAI,IAAImB,GAAG,EAAEpB,GAAEzC,IAAI,EAAE0C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEF,GAAEvC,EAAEA,EAAE,SAAS,EAAEyC,IAAGA,IAAGC,GAAE1C,IAAI,EAAE,SAASyC,GAAE,EAAE,EAAEA,KAAI,IAAIE,GAAE,EAAE3C,GAAGA,GAAG,SAAS0C,KAAI,EAAE1C,IAAI,MAAM,GAAG0C,GAAE1C,EAAEuD,GAAE,KAAK,EAAEd,GAAE,EAAE,EAAEA,GAAEc,GAAEd,GAAEC,GAAE,SAAS,EAAEE,GAAE5C,EAAEyC,KAAI,EAAE,SAASzC,EAAE,EAAE,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAE2C,IAAG,UAAUD,IAAGzC,EAAEsH,EAAGpE,GAAE7C,EAAE2B,EAAEsB,CAAC,EAAEb,GAAEjB,EAAEmB,GAAE2E,EAAGrE,GAAE7C,EAAE0C,GAAEW,GAAEX,IAAG,EAAE,EAAEJ,GAAElB,EAAEiB,GAAE,EAAEC,IAAG1C,EAAE2C,GAAE3C,EAAE,KAAK,EAAE2C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEU,EAAEkE,EAAG3E,GAAEjC,GAAET,EAAE,EAAE,EAAE2D,GAAGjB,IAAG,GAAG1C,EAAEiB,CAAC,EAAEuB,GAAEjB,EAAEkB,GAAE,EAAED,IAAGzC,EAAEoD,EAAEpD,EAAE,KAAK,EAAEoD,IAAI,EAAEX,GAAE,EAAE,EAAEA,GAAEC,IAAGU,EAAEkE,EAAGjE,EAAEhC,EAAE2B,GAAEtB,CAAC,GAAG1B,EAAE,EAAEA,EAAEwB,EAAEiB,GAAE,EAAEzC,EAAE0C,KAAI,EAAEU,IAAI,EAAEpD,EAAE,EAAE,EAAEA,EAAE0D,GAAG4D,EAAGnE,GAAEhC,EAAEiC,EAAEP,IAAG,EAAEX,EAAEkB,GAAG,EAAE,EAAEX,GAAEjB,EAAExB,EAAE,EAAEyC,IAAGC,GAAEgB,GAAGhB,GAAE,KAAK,EAAEgB,KAAK,EAAEjB,GAAE,EAAE,EAAEA,GAAEzC,EAAE0C,GAAEA,GAAE4E,EAAGvE,GAAExC,EAAEJ,EAAEM,CAAC,EAAEgC,GAAEjB,EAAEiB,GAAE,EAAEkB,GAAG3D,EAAEA,EAAE0C,GAAE,EAAEgB,GAAG1D,IAAI,EAAE0C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEzC,EAAEsH,EAAGjE,EAAEhC,EAAEsB,GAAEiB,EAAE,EAAEnB,GAAEjB,EAAEsB,GAAEwE,EAAGpE,GAAE7C,EAAEyC,GAAEW,EAAC,EAAEf,GAAElB,EAAEiB,GAAE,EAAEC,IAAG1C,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAEJ,GAAE,EAAE,EAAEA,GAAEI,GAAEwE,EAAGzE,GAAE,EAAEG,GAAEtB,CAAC,EAAEe,GAAEjB,EAAEkB,GAAE,EAAED,IAAGzC,EAAE8C,GAAE9C,EAAE,KAAK,EAAE8C,KAAI,EAAEL,GAAE,EAAE,EAAEA,GAAEC,IAAGI,GAAEwE,EAAGnE,GAAEhC,EAAEhB,EAAEM,CAAC,GAAGT,EAAE,EAAEA,EAAEwB,EAAEiB,GAAE,EAAEzC,EAAE0C,KAAI,EAAEI,KAAI,EAAE9C,EAAE,EAAE,EAAEA,EAAE8C,GAAEwE,EAAGvE,GAAExC,EAAEyB,EAAEsB,CAAC,EAAEb,GAAEjB,EAAExB,EAAE,EAAE8D,GAAGpB,GAAEI,GAAEJ,GAAE,EAAEe,GAAEf,KAAI,EAAEI,KAAI,EAAEL,GAAE,EAAE,EAAEA,GAAEC,GAAE4E,EAAGtH,EAAEU,GAAEO,EAAE,EAAE,EAAEjB,GAAG,GAAGiB,EAAEY,CAAC,EAAEiB,GAAEtB,EAAExB,EAAEwD,GAAEA,GAAEd,GAAEA,GAAE4E,EAAGtH,EAAEyC,GAAEzC,GAAG,GAAGA,EAAEyC,EAAC,EAAEA,GAAEjB,EAAEsB,GAAE,EAAEL,IAAGzC,EAAEwD,GAAEd,GAAE,KAAK,EAAEA,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEE,GAAE2E,EAAG3E,GAAEiB,GAAGR,EAAElB,CAAC,EAAEQ,GAAElB,EAAEiB,GAAE,EAAEC,IAAG1C,EAAE2C,GAAE3C,EAAE,KAAK,EAAE2C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,GAAE2E,EAAGnH,EAAEM,EAAEuC,GAAEtB,CAAC,EAAEe,GAAEjB,EAAEkB,GAAE,EAAED,IAAGzC,EAAE2C,GAAE3C,EAAE,KAAK,EAAE2C,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAEC,IAAGC,GAAE2E,EAAGnE,GAAEhC,EAAEN,EAAEO,CAAC,GAAGpB,EAAE,EAAEA,EAAEwB,EAAEiB,GAAE,EAAEzC,EAAE0C,KAAI,EAAEC,KAAI,EAAE3C,EAAE,EAAE,EAAEA,EAAE2C,GAAE2E,EAAGrE,GAAE7C,EAAE2C,GAAExC,CAAC,EAAEkC,GAAEjB,EAAExB,EAAE,EAAE8C,GAAEJ,GAAEC,GAAED,GAAE,EAAEc,GAAEf,GAAEC,KAAI,EAAEC,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAEmB,GAAGlB,GAAEA,GAAE,SAAS,EAAEF,GAAEC,GAAEC,KAAI,EAAE,SAASD,GAAE,EAAE,EAAEA,GAAEzC,EAAEyC,IAAG,GAAGA,IAAG,SAASA,KAAI,EAAEC,KAAI,GAAGA,GAAE1C,EAAEyD,GAAE,EAAEA,GAAEd,GAAEF,GAAEqB,GAAG,EAAErB,GAAEA,KAAI,EAAEE,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEoB,GAAGpB,GAAEC,GAAE,SAAS,EAAEA,IAAG,UAAUF,GAAEC,KAAI,EAAE,SAASD,GAAE,EAAE,EAAEA,MAAK,EAAEC,KAAI,GAAGD,IAAGA,IAAG,IAAIiB,GAAG,EAAEjB,IAAGC,GAAEC,GAAEgB,GAAG,KAAK,EAAEhB,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAEiB,GAAG1D,EAAE0C,GAAE,SAAS,EAAEC,GAAEF,GAAEzC,IAAI,EAAE,SAASyC,GAAE,EAAE,EAAEA,GAAEnC,EAAEP,EAAE,GAAG,CAAC,EAAE2C,IAAG,UAAU1C,GAAGA,EAAEsH,EAAGzG,EAAEO,EAAEH,EAAEY,CAAC,EAAEY,GAAEjB,EAAEkB,GAAE4E,EAAGzE,GAAE,EAAE1C,EAAEM,CAAC,EAAEgC,GAAEjB,EAAEiB,GAAE,EAAEA,IAAGzC,EAAE0C,GAAE1C,EAAE,KAAK,EAAE0C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,GAAE4E,EAAGrE,GAAE7C,EAAEH,EAAEiB,CAAC,EAAEuB,GAAEjB,EAAEiB,GAAE,EAAEA,IAAGzC,EAAE0C,GAAE1C,EAAE,KAAK,EAAE0C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,GAAE4E,EAAGpE,GAAE7C,EAAEkB,EAAEU,CAAC,EAAEQ,GAAEjB,EAAEiB,GAAE,EAAEA,IAAGzC,EAAE0C,GAAE1C,EAAE,KAAK,EAAE0C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEkB,IAAIjB,GAAE4E,EAAGvE,GAAExC,EAAEe,EAAEK,CAAC,GAAG3B,EAAE,EAAEA,EAAEwB,EAAEiB,GAAE,EAAEC,IAAGD,GAAEG,IAAG,KAAKF,GAAEA,KAAI,EAAEiB,KAAK,EAAE3D,EAAE,EAAE,EAAEA,GAAG,EAAEuD,GAAEvD,GAAG4C,IAAG,SAASA,KAAI,EAAEW,KAAI,IAAII,GAAG,EAAElB,GAAEzC,IAAI,EAAE4C,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAEiB,GAAG3D,EAAEA,EAAE,SAAS,EAAE4C,GAAEH,GAAEzC,IAAI,EAAE,SAASyC,GAAE,EAAE,EAAEA,GAAEnC,EAAEP,EAAE,IAAI,CAAC,EAAEwD,IAAG,UAAUvD,GAAGA,EAAEsH,EAAGpE,GAAE7C,EAAEoB,EAAEK,CAAC,EAAEY,GAAElB,EAAEiB,IAAGa,EAAEgE,EAAGrE,GAAE7C,EAAE4B,EAAEsB,CAAC,GAAGtD,EAAE,EAAEA,EAAEwB,EAAEkB,GAAE,EAAE1C,EAAEyC,KAAI,EAAEa,IAAI,EAAEtD,EAAE,EAAE,EAAEA,EAAEyC,IAAGO,GAAEsE,EAAGrH,EAAEiB,EAAE8B,GAAEtB,CAAC,GAAGe,GAAE,EAAEC,GAAElB,EAAExB,EAAE,EAAEA,GAAGmD,GAAEmE,EAAGnE,GAAEhC,EAAEkC,EAAEhC,CAAC,GAAGoB,GAAE,EAAEA,GAAEjB,GAAGiB,KAAI,EAAEO,KAAI,EAAEN,GAAE,EAAE,EAAEA,IAAG,EAAED,GAAEzC,IAAI,EAAEmD,KAAI,EAAEV,GAAE,EAAE,EAAEA,GAAEC,GAAE4E,EAAGvE,GAAExC,EAAEsC,GAAE,CAAC,EAAEJ,GAAEjB,EAAEiB,GAAE,EAAEA,IAAGA,IAAGzC,EAAE0C,GAAE1C,EAAE,KAAK,EAAE0C,KAAI,EAAED,GAAE,EAAE,EAAEA,KAAIC,GAAEC,IAAG,IAAI,EAAE3C,GAAG0C,GAAEC,IAAGY,GAAEvD,IAAIA,GAAG,SAAS2C,KAAI,EAAEe,KAAK,IAAI,KAAK,EAAE1D,IAAI,EAAEyC,GAAE,EAAE,EAAEA,GAAEU,GAAEV,GAAEC,GAAE,SAAS,EAAEC,GAAE3C,EAAEyC,KAAI,EAAE,SAASzC,EAAE,EAAE,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAE2C,IAAG,UAAUD,IAAGzC,EAAEsH,EAAGrH,EAAEiB,EAAEL,EAAEO,CAAC,EAAEqB,GAAEjB,EAAEkB,GAAE4E,EAAGzE,GAAE,EAAEA,GAAE,CAAC,EAAEJ,GAAEjB,EAAEiB,GAAE,EAAEA,IAAGzC,EAAE0C,GAAE1C,EAAE,KAAK,EAAE0C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,GAAE4E,EAAGnH,EAAEM,EAAE4C,EAAEhC,CAAC,EAAEoB,GAAEjB,EAAEiB,GAAE,EAAEA,IAAGzC,EAAE0C,GAAE1C,EAAE,KAAK,EAAE0C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,IAAGG,GAAEyE,EAAGrE,GAAE7C,EAAEwB,EAAEG,CAAC,GAAG/B,EAAE,EAAEA,EAAEwB,EAAEiB,GAAE,EAAEzC,EAAE0C,KAAI,EAAEG,KAAI,EAAE7C,EAAE,EAAE,EAAEA,EAAEyC,IAAGI,GAAEyE,EAAGpE,GAAE7C,EAAEiB,EAAEK,CAAC,GAAGe,GAAE,EAAEA,GAAElB,EAAExB,EAAE,EAAE0C,GAAED,KAAI,EAAEI,KAAI,EAAEH,GAAE,EAAE,EAAEA,GAAE1C,GAAG6C,GAAEyE,EAAGtH,EAAE+C,GAAExC,EAAEwC,GAAEZ,GAAEkB,EAAEN,IAAG,EAAE,GAAGN,GAAE,EAAEA,GAAEjB,EAAEkB,GAAE,EAAED,GAAEzC,IAAI,EAAE6C,KAAI,EAAEJ,GAAE,EAAE,EAAEA,GAAEC,GAAE1C,EAAEyC,IAAGzC,EAAE4C,IAAG,IAAIH,GAAE,EAAEA,IAAGC,GAAEA,IAAGE,IAAG,SAASA,KAAI,EAAEe,KAAK,IAAI,KAAK,EAAEf,KAAI,EAAEH,GAAE,EAAE,EAAEA,GAAEI,GAAE7C,EAAE0C,GAAE,SAAS,EAAEE,GAAEH,GAAEzC,IAAI,EAAE,SAASyC,GAAE,EAAE,EAAEA,GAAEnC,EAAEP,EAAE,IAAI,CAAC,EAAE2C,IAAG,UAAU1C,GAAGyC,GAAEE,IAAG,GAAGD,IAAGC,IAAG,SAASA,KAAI,EAAEQ,KAAI,KAAKf,IAAGpC,EAAE,UAAUe,IAAG,GAAG,EAAEf,EAAEyC,IAAGJ,KAAIrC,IAAI,EAAEoC,KAAI,GAAGE,GAAE,GAAG,GAAG,EAAEtC,EAAE0C,KAAI,EAAEC,KAAI,EAAE3C,EAAE,EAAE,EAAEA,EAAE2C,GAAED,GAAE1C,IAAI,UAAUyC,IAAGC,GAAEA,GAAE,SAAS,KAAK,EAAE,SAAS1C,EAAE,EAAE,EAAEA,KAAK,EAAE0C,KAAI,KAAKM,GAAEa,IAAI,UAAUtB,IAAG,GAAG,EAAEjC,EAAEP,EAAE,IAAI,CAAC,EAAEC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAE4C,IAAG,UAAUD,IAAG1C,EAAEsH,EAAGnH,EAAEM,EAAER,EAAEiB,CAAC,EAAEwB,GAAElB,EAAEiB,IAAGE,GAAE2E,EAAGrG,EAAEY,EAAEuB,EAAElB,CAAC,GAAGlC,EAAE,EAAEA,EAAEwB,EAAEkB,GAAE,EAAE1C,EAAEyC,KAAI,EAAEE,KAAI,EAAE3C,EAAE,EAAE,EAAEA,EAAE0C,IAAGC,GAAE2E,EAAGzG,EAAEO,EAAEG,EAAEU,CAAC,GAAGQ,GAAE,EAAEA,GAAEjB,EAAExB,EAAE,EAAEyC,GAAEC,KAAI,EAAEC,KAAI,EAAEF,GAAE,EAAE,EAAEA,GAAEzC,GAAG2C,GAAE2E,EAAGrE,GAAE7C,EAAEkB,EAAEK,CAAC,GAAGe,GAAE,EAAEA,GAAElB,EAAEiB,GAAE,EAAEC,GAAE1C,IAAI,EAAE2C,KAAI,EAAED,GAAE,EAAE,EAAEA,GAAEC,IAAGF,GAAEzC,IAAIA,EAAEsH,EAAGpE,GAAE7C,EAAE0C,GAAEM,CAAC,GAAG,EAAEZ,GAAEjB,EAAEkB,GAAE,EAAED,IAAGzC,EAAEA,IAAI,EAAE2C,KAAI,EAAEF,GAAE,EAAE,EAAEA,KAAIA,GAAEG,IAAG,IAAI,EAAE5C,GAAG0C,IAAGE,IAAG,SAASA,KAAI,EAAEC,KAAI,IAAIF,GAAE,KAAK,EAAEC,KAAI,EAAEH,GAAE,EAAE,EAAEA,GAAEzC,GAAGyC,GAAEC,GAAE,SAAS,KAAK,EAAE,SAAS1C,EAAE,EAAE,EAAEA,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAE2C,IAAG,UAAUD,IAAGG,GAAEa,IAAG,UAAUK,IAAI,EAAEnB,GAAEG,IAAGJ,GAAE,UAAUkB,IAAI,EAAEX,GAAEO,KAAId,KAAI,EAAEI,KAAI,GAAGN,GAAE,GAAG,EAAExC,EAAEsH,GAAI,SAAStH,IAAI,EAAEyC,KAAI,GAAGzC,GAAG,GAAG,GAAG,CAAC,EAAEyC,GAAEjB,EAAEyB,GAAE,EAAEjD,EAAEA,IAAI,GAAG0C,GAAE1C,EAAE2C,GAAE,KAAK,EAAEF,GAAE,EAAE,EAAEA,GAAEzC,IAAI,UAAUA,GAAGyC,GAAEC,GAAE,SAAS,KAAK,EAAE,SAAS1C,EAAE,EAAE,EAAEA,KAAK,EAAEyC,KAAI,IAAIG,GAAE,EAAEtC,EAAEP,EAAE,GAAG,CAAC,EAAEC,EAAEM,EAAEP,GAAG,CAAC,EAAE2C,IAAG,UAAUD,GAAE,CAAC,SAASK,GAAE/C,EAAEC,EAAE,CAAC,IAAIC,EAAEE,EAAEC,EAAEC,EAAEI,EAAE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAED,EAAEpB,EAAEoB,EAAE,IAAI,EAAElB,EAAEI,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEE,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGU,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGuB,EAAEf,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGc,EAAEN,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGA,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEoB,EAAEb,EAAE,GAAGP,EAAEqB,EAAEpB,EAAG,KAAI,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEpB,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEkH,GAAGlH,EAAEE,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEc,GAAG,CAAC,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAE8F,GAAGlH,EAAEE,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEc,GAAG,CAAC,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEc,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAE8F,GAAGlH,EAAEE,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAE8F,GAAGlH,EAAEE,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAE8F,GAAGlH,EAAEE,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEA,EAAEb,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAE8F,GAAGlH,EAAEE,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEgB,EAAEX,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAE,EAAEkB,EAAEZ,EAAEN,EAAE,GAAG,CAAC,EAAEsB,EAAEL,EAAEX,EAAEN,GAAG,CAAC,EAAEmB,EAAEN,EAAES,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEA,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEA,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEA,EAAEhB,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEc,GAAG,CAAC,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEA,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEA,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAE2F,GAAGlH,EAAEE,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEqB,EAAEhB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEhB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEA,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEA,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEA,EAAEhB,EAAEc,EAAE,GAAG,CAAC,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEc,GAAG,CAAC,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAE2F,GAAGlH,EAAEE,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEqB,EAAEhB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEhB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEc,GAAG,CAAC,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEc,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAE6F,GAAGlH,EAAEE,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAEmB,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEoB,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEoB,EAAEA,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAE6F,GAAGlH,EAAEE,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAEmB,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEoB,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEoB,EAAEA,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEd,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAE6F,GAAGlH,EAAEE,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAEmB,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEoB,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEoB,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEd,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,GAAG,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,GAAG,CAAC,EAAEmB,EAAE6F,GAAGlH,EAAEE,EAAE,GAAG,EAAEA,CAAC,EAAEF,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEhB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEQ,EAAEH,EAAEN,EAAE,GAAG,CAAC,EAAEsB,EAAEjB,EAAEC,EAAEN,EAAE,GAAG,CAAC,EAAEoB,EAAEhB,EAAEE,EAAEN,GAAG,CAAC,EAAED,EAAEI,EAAEkB,EAAEpB,EAAE,IAAI,CAAC,CAAC,SAAS8C,GAAEhD,EAAEC,EAAEC,EAAE,CAAC,IAAIE,EAAEC,EAAEC,EAAEI,EAAE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,IAAIN,EAAElB,EAAEkB,EAAE,IAAI,EAAED,EAAEb,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGsB,EAAEf,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGuB,EAAEhB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGa,EAAEN,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGkB,EAAEV,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGmB,EAAEX,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGyB,EAAEjB,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGA,EAAEC,EAAE,IAAI,EAAEF,EAAE,UAAUoB,EAAEZ,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,IAAIO,EAAEN,GAAG,CAAC,EAAED,EAAEO,GAAG,EAAEL,EAAE,GAAG,IAAI,CAAC,EAAE,WAAWkB,EAAEb,GAAG,EAAEL,EAAE,GAAG,IAAI,CAAC,EAAEF,EAAE2B,EAAEP,EAAEK,EAAElB,GAAGP,EAAEE,EAAG,KAAI,IAAI,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWK,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWK,GAAGF,EAAEH,EAAE,GAAG,IAAI,CAAC,EAAE,WAAWK,EAAEF,EAAE,GAAG,CAAC,EAAE,WAAWE,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWK,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWK,GAAGD,EAAEJ,EAAE,GAAG,IAAI,CAAC,EAAE,SAASK,EAAED,EAAE,GAAG,CAAC,EAAE,UAAUC,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWK,EAAEL,EAAE,IAAI,CAAC,EAAE,WAAWK,GAAGG,EAAER,EAAE,GAAG,IAAI,CAAC,EAAE,WAAWK,EAAEG,EAAE,GAAG,CAAC,EAAE,WAAWH,EAAEL,GAAG,CAAC,EAAEyB,EAAEA,EAAE,WAAWR,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEC,EAAE,WAAWV,EAAEX,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEF,EAAE,UAAUZ,EAAEP,EAAEL,EAAE,KAAK,CAAC,EAAEwB,EAAEnB,EAAEL,EAAE,KAAK,CAAC,EAAE,WAAWiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAE,WAAWgB,EAAEX,EAAEL,EAAE,KAAK,CAAC,EAAE,WAAWY,EAAEP,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,IAAI,CAAC,EAAE0B,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEwB,EAAEC,EAAER,EAAEK,EAAEjB,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEC,EAAEV,EAAEK,EAAEhB,EAAEL,EAAE,IAAI,CAAC,EAAE0B,EAAEF,EAAEZ,EAAEO,EAAEd,EAAEL,EAAE,IAAI,CAAC,EAAEwB,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,GAAG,CAAC,EAAE0B,EAAErB,EAAEL,EAAE,GAAG,CAAC,EAAEwB,EAAEE,EAAE,EAAED,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEuB,EAAEA,EAAEpB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEuB,EAAEA,EAAEpB,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEuB,EAAEA,EAAEpB,EAAE,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEuB,EAAEA,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEuB,EAAEA,EAAEpB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEuB,EAAEuF,GAAGvF,EAAEvB,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,GAAG,CAAC,EAAEM,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEyB,EAAEA,EAAEnB,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAE,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAE,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGvF,EAAEvB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,EAAE,GAAG,CAAC,EAAEmB,EAAEA,EAAEnB,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAE,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGvF,EAAEvB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,GAAG,CAAC,EAAEA,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAE,EAAE,GAAG,CAAC,EAAEmB,EAAEA,EAAEnB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGvF,EAAEvB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,GAAG,CAAC,EAAEO,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAE0B,EAAEA,EAAEnB,EAAED,EAAE,IAAI,CAAC,EAAEC,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAED,GAAG,CAAC,EAAEC,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEsB,EAAEwF,GAAGvF,EAAEvB,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEqB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEqB,EAAEA,EAAEnB,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEG,EAAE,GAAG,CAAC,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEG,EAAE,GAAG,CAAC,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEG,GAAG,CAAC,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAED,EAAE,IAAI,CAAC,EAAEC,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAED,GAAG,CAAC,EAAEC,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEwF,GAAGvF,EAAEvB,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAED,EAAE,IAAI,CAAC,EAAEoB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAED,GAAG,CAAC,EAAEC,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAED,EAAE,GAAG,CAAC,EAAEoB,EAAEA,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEG,EAAE,GAAG,CAAC,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEG,EAAE,GAAG,CAAC,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEG,GAAG,CAAC,EAAEH,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEwF,GAAGvF,EAAEvB,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAEsB,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEG,EAAE,GAAG,CAAC,EAAEH,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEG,EAAE,IAAI,CAAC,EAAEgB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEG,GAAG,CAAC,EAAEH,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEG,EAAE,GAAG,CAAC,EAAEgB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEsB,EAAEA,EAAEnB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,GAAG,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,GAAG,CAAC,EAAEsB,EAAEwF,GAAGvF,EAAEvB,EAAE,GAAG,EAAEA,CAAC,EAAEuB,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEpB,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,IAAI,CAAC,GAAGM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIsB,EAAEjB,EAAEL,EAAE,GAAG,CAAC,GAAGM,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIqB,EAAEhB,EAAEL,EAAE,GAAG,CAAC,GAAGM,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,IAAImB,EAAEd,EAAEL,GAAG,CAAC,GAAGM,EAAE,EAAEN,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,IAAIuB,EAAElB,EAAEP,GAAG,CAAC,GAAGQ,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,IAAIoB,EAAEb,EAAEL,EAAE,IAAI,CAAC,GAAGM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIY,EAAEP,EAAEL,EAAE,IAAI,CAAC,GAAGM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIgB,EAAEX,EAAEL,EAAE,IAAI,CAAC,GAAGM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIiB,GAAO,GAAGS,EAAEA,EAAE,EAAE,KAAd,IAAmB,CAACN,EAAElB,EAAE,IAAI,CAAC,CAAC,SAAS6C,GAAEjD,EAAEC,EAAE,CAAC,IAAIC,EAAEG,EAAE,EAAEC,EAAE,EAAEM,EAAE,EAAEE,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,EAAE,EAAEE,EAAE,EAAE,GAAGL,EAAEpB,EAAEoB,EAAE,GAAG,EAAE,GAAGjB,EAAEgI,GAAGrI,CAAC,KAAKK,EAAE,IAAIJ,EAAE,IAAI,EAAE,aAAa,CAACW,EAAEL,EAAEP,EAAE,IAAI,CAAC,EAAEK,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAEI,EAAEC,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEG,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAGK,EAAEL,EAAE,IAAI,CAAC,EAAEI,EAAED,IAAIe,GAAGd,EAAED,GAAG,KAAK,EAAEO,IAAI,EAAEA,EAAEN,KAAK,KAAKM,EAAEP,GAAG,KAAK,GAAG,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEG,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEG,GAAG,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAES,GAAEN,EAAEO,CAAC,EAAEP,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEG,EAAEkB,EAAEtB,EAAEqB,EAAEA,EAAEjB,EAAEJ,EAAE,KAAK,IAAIA,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAEW,EAAEV,EAAE,EAAE,GAAG,CAACF,KAAKM,EAAE6B,GAAE5B,EAAEK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAEL,EAAEK,EAAE,GAAG,CAAC,EAAEN,EAAEL,EAAE,IAAIK,GAAG,CAACL,EAAE,CAAC,IAAIA,EAAEM,EAAEK,EAAE,IAAI,CAAC,OAAaN,EAAEL,GAAG,MAAM,IAAIA,IAAI,GAAG,IAA/B,OAAoCA,EAAEkC,GAAE,EAAE,EAAE5B,EAAEK,GAAG,CAAC,EAAEX,EAAEA,GAAG,CAAC,GAAGM,EAAEN,GAAG,CAAC,EAAE,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAE,EAAEA,EAAEqI,EAAGjI,EAAE,IAAI,EAAEC,CAAC,EAAEC,EAAE,IAAI,EAAEN,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAE,UAAUJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAE,MAAMJ,EAAE8D,GAAGxD,EAAEK,GAAG,CAAC,CAAC,EAAEL,EAAEK,GAAG,CAAC,EAAE,CAAC,CAAC2H,GAAG3H,EAAEL,EAAEP,EAAE,IAAI,CAAC,CAAC,EAAEsB,EAAEC,EAAEtB,EAAE,IAAI,MAAM,CAAC,CAAC,GAAGM,EAAEA,EAAEK,GAAG,CAAC,GAAG,CAAC,EAAEX,EAAEM,EAAEA,EAAEK,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEX,EAAEM,EAAEA,EAAEK,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEN,EAAEkB,EAAEjB,EAAEK,EAAE,IAAI,CAAC,EAAE6D,GAAGxE,EAAEI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAE6G,GAAG5G,EAAEK,EAAED,EAAE,IAAI,EAAE,EAAE,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,EAAE,GAAG,CAAC,EAAE6G,GAAG5G,EAAEK,EAAE,EAAE,CAAC,EAAEC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAE6G,GAAG5G,EAAEK,EAAE,EAAE,CAAC,EAAEC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAE6G,GAAG5G,EAAEK,EAAE,EAAE,CAAC,EAAEC,EAAEF,EAAE,KAAK,CAAC,EAAE,GAAGwG,GAAG5G,EAAEK,EAAE,EAAE,CAAC,EAAEC,EAAEF,EAAE,KAAK,CAAC,EAAEmB,EAAEqF,GAAG5G,EAAEK,EAAE,EAAE,CAAC,EAAEC,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAE6G,GAAG5G,EAAEK,EAAE,EAAE,CAAC,GAAGA,EAAEC,EAAEP,EAAE,GAAG,CAAC,KAAK6G,GAAG5G,EAAEK,EAAEC,EAAEP,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAEI,EAAEJ,EAAE,GAAG,CAAC,IAAIwH,GAAGjH,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,IAAIO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAE6G,GAAG5G,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE,EAAE,CAAC,GAAGC,EAAEC,EAAEP,EAAE,IAAI,CAAC,IAAI6G,GAAG5G,EAAEK,EAAEC,EAAEP,EAAE,IAAI,CAAC,EAAE,CAAC,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAE6G,GAAG5G,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE,EAAE,CAAC,GAAGC,EAAEC,EAAEP,EAAE,IAAI,CAAC,KAAK6G,GAAG5G,EAAEK,EAAEC,EAAEP,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAEQ,EAAER,EAAE,GAAG,CAAC,IAAIwH,GAAGjH,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,CAAC,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,IAAIO,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAE6G,GAAG5G,EAAEI,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE,EAAE,CAAC,GAAGC,EAAEC,EAAEP,EAAE,IAAI,CAAC,IAAI6G,GAAG5G,EAAEK,EAAEC,EAAEP,EAAE,IAAI,CAAC,EAAE,CAAC,EAAEwI,GAAGnI,EAAE,IAAI,EAAEA,EAAE,GAAG,EAAE,EAAE,EAAEmH,GAAGnH,EAAE,IAAI,EAAE,CAAC,EAAEE,EAAEK,EAAE,IAAI,CAAC,EAAE,IAAIN,EAAE,IAAI,CAAC,IAAIC,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEC,EAAE8D,GAAG/D,EAAE,IAAI,EAAE,KAAKA,EAAE,GAAG,EAAE,EAAE,EAAEmB,EAAEjB,EAAEA,EAAEK,GAAG,CAAC,EAAE,GAAG,CAAC,GAAGD,GAAEJ,EAAEK,EAAE,IAAI,CAAC,EAAEN,CAAC,GAAG,IAAI,EAAEL,EAAE,EAAEa,GAAGK,EAAElB,GAAG,GAAGuB,EAAE,EAAEN,EAAEX,EAAE,GAAGc,GAAGD,EAAEf,EAAE,IAAI,GAAGc,EAAE,IAAI,CAAC,EAAEZ,EAAEO,GAAG,CAAC,EAAEP,EAAEc,GAAG,CAAC,EAAEd,EAAEO,EAAE,GAAG,CAAC,EAAEI,EAAEG,GAAGP,EAAE,EAAEK,GAAGK,EAAE,EAAEN,EAAEX,EAAE,GAAGO,EAAEA,EAAEM,EAAE,IAAI,CAAC,EAAEb,EAAEc,GAAG,CAAC,EAAEd,EAAEO,GAAG,CAAC,EAAEP,EAAEc,EAAE,GAAG,CAAC,EAAEH,EAAEG,GAAGP,EAAE,GAAGK,GAAGK,EAAE,EAAEN,EAAEX,EAAE,GAAGO,EAAEA,EAAEM,EAAE,IAAI,CAAC,EAAEb,EAAEc,GAAG,CAAC,EAAEd,EAAEO,GAAG,CAAC,EAAEP,EAAEc,EAAE,GAAG,CAAC,EAAEH,EAAEJ,GAAGK,GAAG,IAAIK,EAAE,EAAEH,EAAEd,EAAE,GAAGY,EAAEA,EAAEC,EAAE,IAAI,CAAC,EAAEb,EAAEO,GAAG,CAAC,EAAEP,EAAEY,GAAG,CAAC,EAAEZ,EAAEO,EAAE,GAAG,CAAC,EAAEO,GAAQ,GAAGpB,EAAEA,EAAE,EAAE,KAAf,KAAoB,CAAC,IAAIM,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAE+D,GAAGhD,EAAE,KAAKf,EAAE,GAAG,EAAE,EAAE,EAAEmB,EAAE,MAAMjB,EAAEA,EAAEK,GAAG,CAAC,EAAE,GAAG,CAAC,GAAGD,GAAEJ,EAAEK,EAAE,IAAI,CAAC,EAAEN,CAAC,GAAG,IAAI,GAAG,EAAEL,EAAE,EAAEa,GAAGK,EAAElB,GAAG,GAAGuB,EAAE,EAAEN,EAAEX,EAAE,GAAGc,GAAGD,EAAEf,EAAE,IAAI,GAAGc,EAAE,IAAI,CAAC,EAAEZ,EAAEO,GAAG,CAAC,EAAEP,EAAEc,GAAG,CAAC,EAAEd,EAAEO,EAAE,GAAG,CAAC,EAAEI,EAAEG,GAAGP,EAAE,EAAEK,GAAGK,EAAE,EAAEN,EAAEX,EAAE,GAAGO,EAAEA,EAAEM,EAAE,IAAI,CAAC,EAAEb,EAAEc,GAAG,CAAC,EAAEd,EAAEO,GAAG,CAAC,EAAEP,EAAEc,EAAE,GAAG,CAAC,EAAEH,EAAEG,GAAGP,EAAE,GAAGK,GAAGK,EAAE,EAAEN,EAAEX,EAAE,GAAGO,EAAEA,EAAEM,EAAE,IAAI,CAAC,EAAEb,EAAEc,GAAG,CAAC,EAAEd,EAAEO,GAAG,CAAC,EAAEP,EAAEc,EAAE,GAAG,CAAC,EAAEH,EAAEJ,GAAGK,GAAG,IAAIK,EAAE,EAAEJ,EAAEb,EAAE,GAAGY,EAAEA,EAAEC,EAAE,IAAI,CAAC,EAAEb,EAAEO,GAAG,CAAC,EAAEP,EAAEY,GAAG,CAAC,EAAEZ,EAAEO,EAAE,GAAG,CAAC,EAAEM,GAAQ,GAAGnB,EAAEA,EAAE,EAAE,KAAf,KAAoB,CAAC,GAAG,GAAGK,EAAEA,EAAE,EAAE,KAAK,EAAEI,GAAEE,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC4G,GAAGnH,EAAE,IAAI,EAAE,IAAI,EAAEmH,GAAGnH,EAAE,GAAG,EAAE,EAAE,EAAEJ,EAAE,CAAC,CAACqB,EAAEC,CAAC,CAAC,GAAGlB,EAAEJ,EAAE,CAACA,EAAE,CAAC,GAAGM,EAAEL,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,GAAGoB,EAAErB,EAAEqB,EAAE,GAAG,EAAE,EAAE,EAAEV,EAAEV,EAAE,EAAE,GAAG,CAACK,EAAEK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAIR,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEI,EAAE,EAAEE,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEK,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEK,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEI,EAAEC,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEK,EAAEwB,GAAElB,EAAEX,EAAE,GAAG,CAAC,GAAGI,EAAEA,EAAE,EAAE,KAAK,GAAGC,EAAEC,EAAEK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,GAAGR,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEK,EAAE,CAAC,IAAID,EAAE,EAAEE,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEK,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEK,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEI,EAAEC,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEK,EAAEwB,GAAElB,EAAEX,EAAE,GAAG,CAAC,GAAGI,EAAEA,EAAE,EAAE,KAAK,GAAGC,EAAEC,EAAEK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,GAAGR,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEK,EAAE,CAAC,IAAID,EAAE,EAAEE,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEK,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEK,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEI,EAAEC,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEK,EAAEwB,GAAElB,EAAEX,EAAE,GAAG,CAAC,GAAGI,EAAEA,EAAE,EAAE,KAAK,GAAGC,EAAEC,EAAEK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,GAAGR,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEK,EAAE,IAAID,EAAE,EAAEE,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEK,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEK,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEI,EAAEC,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,GAAG,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAEK,EAAEwB,GAAElB,EAAEX,CAAC,GAAGI,EAAEA,EAAE,EAAE,KAAK,EAAEK,GAAEE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAGU,EAAErB,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAES,GAAER,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,GAAGoB,EAAErB,EAAEqB,EAAE,KAAK,EAAE,EAAE,CAACtB,EAAE,EAAEK,EAAEH,EAAE,EAAE,IAAI,CAAC,GAAG,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEsH,GAAG1H,EAAE,KAAK,EAAEa,GAAGP,EAAEA,EAAEF,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE,IAAI,GAAGgB,EAAEd,EAAEF,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,IAAImB,EAAE,IAAI,CAAC,IAAIZ,EAAEE,GAAGH,GAAEa,EAAE,CAAC,GAAG,IAAI,EAAEL,EAAE,EAAED,EAAEX,GAAGgB,GAAGjB,EAAEa,GAAG,IAAIC,EAAEnB,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE0B,EAAEpB,GAAGkB,EAAEnB,EAAEM,EAAE,IAAI,CAAC,EAAEa,EAAElB,EAAEgB,EAAE,GAAG,CAAC,EAAEhB,EAAEkB,EAAE,GAAG,CAAC,EAAElB,EAAEgB,GAAG,CAAC,EAAEL,EAAES,EAAEpB,EAAEgB,EAAE,GAAG,CAAC,EAAEE,EAAEA,EAAElB,GAAGgB,GAAGL,EAAE,EAAEZ,GAAGc,EAAE,IAAI,CAAC,EAAEO,EAAEpB,GAAGW,EAAEN,EAAEM,EAAE,IAAI,CAAC,EAAEA,EAAEX,EAAEgB,EAAE,GAAG,CAAC,EAAEhB,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEgB,GAAG,CAAC,EAAEE,EAAEE,EAAEpB,EAAEgB,EAAE,GAAG,CAAC,EAAEL,EAAEO,EAAElB,GAAGgB,GAAGL,EAAE,GAAGZ,GAAGc,EAAE,IAAI,CAAC,EAAEO,EAAEpB,GAAGW,EAAEN,EAAEM,EAAE,IAAI,CAAC,EAAEA,EAAEX,EAAEgB,EAAE,GAAG,CAAC,EAAEhB,EAAEW,EAAE,GAAG,CAAC,EAAEX,EAAEgB,GAAG,CAAC,EAAEE,EAAEE,EAAEpB,EAAEgB,EAAE,GAAG,CAAC,EAAEL,EAAEK,EAAEhB,GAAGD,GAAGiB,EAAEH,IAAIA,EAAE,GAAGd,GAAG,IAAI,CAAC,EAAEY,EAAEX,GAAGa,EAAER,EAAEQ,EAAE,IAAI,CAAC,EAAEA,EAAEb,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEa,EAAE,GAAG,CAAC,EAAEb,EAAED,GAAG,CAAC,EAAEY,EAAEK,EAAEhB,EAAED,EAAE,GAAG,CAAC,EAAEc,GAAQ,GAAGD,EAAEA,EAAE,EAAE,KAAf,KAAoB,CAAC,IAAI,EAAEE,KAAK,GAAGG,EAAEA,EAAE,EAAE,IAAI,KAAK,CAACZ,EAAE+G,GAAG1H,EAAEA,EAAE,KAAK,EAAE,IAAI,EAAEmE,GAAG7D,EAAEP,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEY,EAAE,IAAI,EAAE4G,GAAG5G,EAAE,KAAK,EAAE,IAAI,EAAE4G,GAAG5G,EAAE,IAAI,EAAE2H,GAAGlI,EAAEE,EAAEP,EAAE,IAAI,CAAC,CAAC,CAAC,CAACsB,EAAErB,EAAE,KAAK,EAAEI,EAAE,CAAC,CAAC,CAAC,OAAOiB,EAAEpB,EAAE,GAAG,EAAEG,CAAC,CAAC,SAAS6C,GAAElD,EAAEC,EAAEC,EAAEG,EAAEC,EAAE,CAAC,IAAII,EAAEC,EAAEC,EAAEE,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEtB,GAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAE,IAAIpD,EAAEY,EAAE,IAAI,EAAEX,EAAEJ,EAAEP,EAAE,IAAI,CAAC,EAAEY,EAAEL,EAAEP,EAAE,IAAI,CAAC,EAAEgD,GAAEzC,EAAEP,EAAE,IAAI,CAAC,EAAE+C,GAAExC,EAAEP,EAAE,IAAI,CAAC,EAAEc,EAAEP,EAAEP,EAAE,IAAI,CAAC,EAAEkB,EAAEX,EAAEP,EAAE,IAAI,CAAC,EAAEmB,EAAEZ,EAAEP,EAAE,IAAI,CAAC,EAAEoB,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEqB,EAAEd,EAAEP,EAAE,IAAI,CAAC,EAAEuB,EAAEhB,EAAEP,EAAE,IAAI,CAAC,EAAEwB,EAAEjB,EAAEP,EAAE,IAAI,CAAC,EAAEyB,EAAElB,EAAEP,EAAE,IAAI,CAAC,EAAE0B,EAAEnB,EAAEP,EAAE,IAAI,CAAC,EAAE2B,EAAEpB,EAAEP,EAAE,GAAG,CAAC,EAAE4B,EAAErB,EAAEP,EAAE,GAAG,CAAC,EAAE6B,EAAEtB,EAAEP,GAAG,CAAC,IAAI,CAAC,GAAG,CAACM,EAAED,IAAI,EAAE,GAAGC,EAAEwB,EAAE5B,MAAM,CAAC,GAAGK,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,EAAE,GAAG,CAAC,EAAE,EAAEH,EAAEG,EAAE,IAAI,CAAC,EAAE,EAAEH,EAAEG,GAAG,CAAC,EAAE,EAAEH,EAAEG,EAAE,GAAG,CAAC,EAAE,EAAEsB,EAAE,EAAE3B,EAAEC,EAAE,KAAKF,EAAE4B,EAAEtB,EAAE,CAAC,EAAEF,EAAEP,EAAE+B,EAAE,CAAC,EAAE,CAAC1B,GAAG0B,EAAEA,EAAE,EAAE,KAAK,EAAE3B,IAAI,EAAEC,GAAG,CAACL,EAAE6B,EAAEpB,EAAE2C,GAAEnD,CAAC,CAAC,IAAI+C,GAAE,GAAGlB,EAAEF,EAAEb,GAAEY,EAAEW,GAAEZ,EAAEe,GAAEhB,EAAEM,EAAEP,EAAEvB,EAAEsB,EAAEU,EAAEX,EAAEY,EAAEd,EAAEe,EAAEhB,EAAEwB,GAAEzB,EAAEqB,GAAEtB,EAAEe,EAAEtB,EAAEkC,GAAEjC,EAAE+B,GAAEK,GAAEP,GAAEM,GAAEV,GAAEvB,EAAEwB,GAAEN,EAAED,EAAE+F,IAAI9F,EAAED,EAAEC,EAAE,GAAGS,GAAE,EAAE,EAAEH,GAAEG,GAAEqF,GAAGxF,IAAGF,EAAEL,EAAEK,EAAE,GAAG,EAAE,EAAEK,GAAEqF,IAAIhF,GAAEd,EAAES,GAAE,GAAGV,EAAE,CAAC,EAAEC,EAAE8F,GAAGxF,IAAGF,EAAEK,GAAEL,EAAE,GAAG,CAAC,EAAEH,EAAE6F,IAAI/F,EAAEI,EAAEO,GAAE,GAAGT,EAAE,EAAE,EAAEE,EAAE2F,IAAIzF,GAAEJ,EAAEI,GAAE,GAAGF,EAAE,EAAE,EAAEO,GAAEoF,IAAIvF,GAAEL,EAAEK,GAAE,GAAGM,GAAE,EAAE,EAAEX,EAAE4F,IAAItF,GAAEE,GAAEF,GAAE,GAAGN,EAAE,EAAE,EAAEW,IAAGK,GAAEnB,EAAEI,EAAE,GAAGH,EAAE,EAAEmB,GAAE2E,IAAIvF,GAAEL,EAAEK,GAAE,GAAGG,GAAE,CAAC,EAAEX,EAAE+F,GAAGjF,GAAEM,GAAE,EAAE,EAAET,GAAEoF,IAAI9G,GAAEd,EAAEc,GAAE,GAAG2B,GAAE,EAAE,EAAEzC,EAAE4H,IAAIlF,GAAEF,GAAEE,GAAE,GAAG1C,EAAE,EAAE,EAAEoC,GAAEN,EAAEW,GAAEmF,IAAI9G,GAAEd,EAAEc,GAAE,GAAG0B,GAAE,CAAC,EAAEJ,GAAEwF,GAAGxF,IAAGN,GAAGoB,GAAET,GAAEC,GAAE,GAAGb,EAAE,GAAG,EAAE,EAAEc,GAAEiF,GAAG/F,GAAGW,GAAEJ,GAAEO,GAAE,GAAG,CAAC,EAAEb,EAAE8F,IAAIlF,GAAEC,GAAEb,EAAE,GAAGM,GAAE,CAAC,EAAEA,GAAEF,EAAEA,EAAEG,GAAER,EAAE+F,GAAG7F,EAAEiB,GAAE,CAAC,EAAEX,GAAEuF,IAAI7F,EAAEF,EAAEM,GAAE,GAAGF,EAAE,CAAC,EAAEQ,GAAEmF,IAAI1F,EAAEA,EAAEG,GAAE,GAAGI,GAAE,EAAE,EAAEN,GAAEyF,IAAI3F,EAAEG,GAAEK,GAAE,GAAGJ,GAAE,EAAE,EAAEI,GAAEmF,GAAGnF,IAAGJ,GAAEF,GAAED,EAAE,GAAG,CAAC,EAAED,EAAE2F,IAAI1F,EAAED,EAAEQ,GAAE,GAAGN,GAAE,CAAC,EAAEA,GAAEJ,EAAEA,EAAEjB,GAAEA,GAAE8G,IAAItF,GAAEA,GAAEW,GAAE,GAAGjB,EAAE,CAAC,EAAEA,EAAEG,IAAGI,GAAEqF,IAAI7F,EAAEA,EAAEjB,GAAE,GAAGyB,GAAE,EAAE,GAAG,EAAEJ,GAAEJ,EAAEA,EAAE6F,GAAG5F,EAAElB,GAAE,EAAE,EAAEyB,GAAEqF,GAAGrF,IAAGzB,GAAEqB,GAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAE4F,IAAIzF,GAAEH,EAAEO,GAAE,GAAGR,EAAE,CAAC,EAAEK,GAAEE,GAAEP,EAAEF,EAAEA,EAAE+F,GAAG5H,EAAEkD,GAAE,CAAC,EAAEnB,EAAE6F,GAAG7F,GAAGO,GAAET,EAAEe,GAAE,GAAG,EAAE,EAAEA,GAAEgF,IAAI5H,EAAEoC,GAAEL,EAAE,GAAGF,EAAE,EAAE,EAAEE,EAAE6F,GAAG7F,GAAGF,EAAEe,GAAEN,GAAE,GAAG,CAAC,EAAEtC,EAAE4H,IAAItF,GAAEtC,EAAE+B,EAAE,GAAGa,GAAE,CAAC,EAAEG,GAAEA,GAAE,EAAE,GAAG,CAAC,GAAGA,GAAEzC,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAG6C,GAAEtC,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGiD,GAAE1C,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGkD,GAAE3C,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGmD,GAAE5C,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGqC,GAAE9B,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGqD,EAAE9C,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGsD,EAAE/C,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGuD,EAAEhD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGwD,GAAEjD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGyD,GAAElD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG0D,GAAGnD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG2D,GAAGpD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG4D,GAAGrD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG6D,GAAGtD,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG8B,EAAEA,EAAEF,GAAGrB,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,IAAIG,EAAE,EAAE0B,CAAC,EAAEC,EAAE3B,EAAE0B,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAE3B,EAAE0B,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAG3B,EAAE0B,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGA,EAAEE,EAAEtB,EAAEmD,GAAG1D,EAAE0B,EAAE,GAAG,CAAC,EAAEC,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAG3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEc,GAAEjC,EAAEiD,GAAGzD,EAAE0B,EAAE,GAAG,CAAC,EAAEC,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAG3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEY,GAAEK,GAAEY,GAAGxD,EAAE0B,EAAE,GAAG,CAAC,EAAEC,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAG3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEU,GAAEM,GAAEY,GAAGvD,EAAE0B,EAAE,GAAG,CAAC,EAAEC,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAG3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEM,GAAEvB,EAAE4C,GAAEtD,EAAE0B,EAAE,GAAG,CAAC,EAAEC,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAG3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAES,GAAEtB,EAAEuC,GAAErD,EAAE0B,EAAE,GAAG,CAAC,EAAEC,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAG3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEa,GAAEzB,EAAEqC,EAAEpD,EAAE0B,EAAE,GAAG,CAAC,EAAEC,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAG3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEK,EAAEhB,EAAEmC,EAAEnD,EAAE0B,EAAE,GAAG,CAAC,EAAEC,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAE3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAG3B,EAAE0B,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGI,EAAEA,EAAEd,EAAEiC,EAAElD,EAAE0B,EAAE,GAAG,CAAC,EAAEK,EAAE/B,EAAE0B,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAE/B,EAAE0B,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAG/B,EAAE0B,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEI,GAAEJ,EAAEX,EAAEnB,EAAE0B,EAAE,GAAG,CAAC,EAAEI,EAAE9B,EAAE0B,EAAE,GAAG,CAAC,EAAEI,IAAI,EAAE9B,EAAE0B,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAG9B,EAAE0B,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGhC,EAAEkD,GAAElD,EAAEsB,EAAEpB,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,EAAEE,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,IAAI,EAAEE,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,IAAI,GAAGE,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,IAAI,GAAGA,EAAEiD,GAAEnB,EAAEP,EAAErB,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,EAAEE,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,IAAI,EAAEE,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,IAAI,GAAGE,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,IAAI,GAAGA,EAAEgD,GAAER,GAAEhB,EAAEtB,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,EAAEE,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,IAAI,EAAEE,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,IAAI,GAAGE,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,IAAI,GAAGA,EAAE4C,GAAEP,GAAEZ,EAAEvB,EAAE0B,EAAE,EAAE,CAAC,EAAE5B,EAAEE,EAAE0B,EAAE,EAAE,CAAC,EAAE5B,IAAI,EAAEE,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,IAAI,GAAGE,EAAE0B,EAAE,GAAG,CAAC,EAAE5B,IAAI,GAAGA,EAAE+C,GAAEjC,GAAEY,EAAExB,EAAE0B,EAAE,EAAE,CAAC,EAAE5B,EAAEE,EAAE0B,EAAE,EAAE,CAAC,EAAE5B,IAAI,EAAEE,EAAE0B,EAAE,EAAE,CAAC,EAAE5B,IAAI,GAAGE,EAAE0B,EAAE,EAAE,CAAC,EAAE5B,IAAI,GAAG8C,GAAE,EAAED,GAAEA,GAAE,EAAE,GAAGC,GAAE,EAAE,CAAC1C,EAAED,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,EAAEA,EAAEC,GAAG,CAACA,EAAED,IAAI,EAAE,GAAG,CAAC,EAAE,EAAEC,IAAI,IAAI0B,EAAE,EAAE5B,EAAE4B,EAAEqB,GAAE,CAAC,EAAE7C,EAAEsB,EAAEE,EAAE,CAAC,EAAE3B,IAAI,GAAG2B,EAAEA,EAAE,EAAE,KAAK,GAAG,CAACzB,EAAEP,EAAE,IAAI,CAAC,EAAEgD,GAAEzC,EAAEP,EAAE,IAAI,CAAC,EAAE+C,GAAE,KAAK,CAAC9C,EAAEA,EAAG,KAAI,EAAEC,EAAE4B,EAAG,KAAI,EAAExB,EAAEA,EAAE,EAAE,EAAEA,GAAGD,EAAEA,EAAE,IAAI,KAAK,EAAE,WAAWC,EAAE,EAAE,EAAEA,CAAC,CAAC,CAAC,SAAS6C,GAAEnD,EAAEC,EAAE,CAACA,GAAG,EAAE,IAAIC,EAAEG,EAAE,EAAEC,EAAE,EAAE,EAAE,EAAEI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEI,EAAE,EAAE,OAAOQ,EAAEpB,EAAEoB,EAAE,IAAI,EAAEjB,EAAE,KAAKC,EAAEC,EAAE,IAAIP,GAAG,IAAI,CAAC,IAAI,EAAE,KAAKA,EAAE,GAAG,EAAEM,IAAI,GAAG,KAAKqH,GAAGtH,EAAE,MAAM,IAAIC,EAAE,CAAC,EAAEuB,GAAE7B,EAAEM,EAAEN,EAAE,GAAG,EAAEE,EAAEA,EAAE,IAAI,CAAC,EAAEuH,GAAGnH,EAAE,EAAE,GAAG,GAAGqH,GAAGtH,EAAE,MAAM,IAAIC,EAAE,CAAC,EAAE,GAAG,EAAEC,EAAEP,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,EAAEM,GAAGI,EAAE,SAAS,KAAK,EAAE,EAAEI,EAAEJ,GAAG,GAAGA,GAAG,EAAE,UAAU,KAAK,GAAG,EAAEL,EAAES,EAAE,GAAG,EAAE,YAAY,KAAKT,EAAEE,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,WAAW,SAASK,IAAI,EAAE,IAAI,IAAIA,IAAI,EAAE,MAAMA,IAAI,GAAGD,EAAEJ,EAAE,IAAI,CAAC,EAAEK,EAAED,EAAEJ,EAAE,IAAI,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,IAAI,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,IAAI,CAAC,EAAEK,IAAI,GAAGA,EAAEC,EAAEI,EAAE,EAAEJ,EAAE,EAAEA,GAAGD,EAAED,EAAEJ,EAAE,IAAI,CAAC,EAAEM,EAAEF,EAAEJ,EAAE,IAAI,CAAC,EAAEM,IAAI,EAAEF,EAAEJ,EAAE,IAAI,CAAC,EAAEM,IAAI,GAAGF,EAAEJ,EAAE,IAAI,CAAC,EAAEM,IAAI,GAAG,GAAG,EAAEC,EAAEP,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,EAAEM,GAAGI,EAAE,SAAS,KAAK,EAAE,EAAEI,EAAEJ,GAAG,GAAGA,GAAG,EAAE,UAAU,KAAK,GAAG,EAAEL,EAAES,EAAE,GAAG,EAAE,YAAY,KAAKT,EAAEE,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,WAAW,SAASK,IAAI,EAAE,IAAI,IAAIA,IAAI,EAAE,MAAMA,IAAI,GAAGD,EAAEJ,EAAE,IAAI,CAAC,EAAEK,EAAED,EAAEJ,EAAE,IAAI,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,IAAI,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,IAAI,CAAC,EAAEK,IAAI,GAAGA,EAAEC,EAAEI,EAAE,EAAEJ,EAAE,EAAEA,GAAGD,EAAED,EAAEJ,EAAE,IAAI,CAAC,EAAEM,EAAEF,EAAEJ,EAAE,IAAI,CAAC,EAAEM,IAAI,EAAEF,EAAEJ,EAAE,IAAI,CAAC,EAAEM,IAAI,GAAGF,EAAEJ,EAAE,IAAI,CAAC,EAAEM,IAAI,GAAGuB,GAAE7B,EAAEA,EAAE,GAAG,EAAEE,EAAEA,EAAE,IAAI,CAAC,EAAE,GAAG,EAAEK,EAAEP,GAAG,CAAC,IAAI,IAAI,MAAM,IAAI,EAAEM,GAAGI,EAAE,SAAS,KAAK,EAAE,EAAEI,EAAEJ,GAAG,GAAGA,GAAG,EAAE,UAAU,KAAK,GAAG,EAAEL,EAAES,EAAE,GAAG,EAAE,YAAY,KAAKT,EAAEE,EAAEP,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,WAAW,SAASK,IAAI,EAAE,IAAI,IAAIA,IAAI,EAAE,MAAMA,IAAI,GAAGD,EAAE,EAAEH,CAAC,EAAEI,EAAED,EAAEH,EAAE,EAAE,CAAC,EAAEI,IAAI,EAAED,EAAEH,EAAE,EAAE,CAAC,EAAEI,IAAI,GAAGD,EAAEH,EAAE,EAAE,CAAC,EAAEI,IAAI,GAAGA,EAAEC,EAAEI,EAAE,EAAEJ,EAAE,EAAEA,GAAGD,EAAED,EAAEH,EAAE,EAAE,CAAC,EAAEK,EAAEF,EAAEH,EAAE,EAAE,CAAC,EAAEK,IAAI,EAAEF,EAAEH,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGF,EAAEH,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAG,GAAG,EAAEC,EAAEP,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM,IAAI,EAAEM,GAAGI,EAAE,SAAS,KAAK,EAAE,EAAEI,EAAEJ,GAAG,GAAGA,GAAG,EAAE,UAAU,KAAK,GAAG,EAAEL,EAAES,EAAE,GAAG,EAAE,YAAY,KAAKT,EAAEE,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,WAAW,SAASK,IAAI,EAAE,IAAI,IAAIA,IAAI,EAAE,MAAMA,IAAI,GAAGD,EAAEH,EAAE,EAAE,CAAC,EAAEI,EAAED,EAAEH,EAAE,EAAE,CAAC,EAAEI,IAAI,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGD,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGA,EAAEC,EAAEI,EAAE,EAAEJ,EAAE,EAAEA,GAAGD,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAG,GAAG,EAAEC,EAAEP,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,EAAEM,GAAGI,EAAE,SAAS,KAAK,EAAE,EAAEI,EAAEJ,GAAG,GAAGA,GAAG,EAAE,UAAU,KAAK,GAAG,EAAEL,EAAES,EAAE,GAAG,EAAE,YAAY,KAAKT,EAAEE,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,WAAW,SAASK,IAAI,EAAE,IAAI,IAAIA,IAAI,EAAE,MAAMA,IAAI,GAAGD,EAAEH,EAAE,GAAG,CAAC,EAAEI,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGD,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGA,EAAEC,EAAEI,EAAE,EAAEJ,EAAE,EAAEA,GAAGD,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAG,GAAG,EAAEC,EAAEP,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,EAAEM,GAAGI,EAAE,SAAS,KAAK,EAAE,EAAEI,EAAEJ,GAAG,GAAGA,GAAG,EAAE,UAAU,KAAK,GAAG,EAAEL,EAAES,EAAE,GAAG,EAAE,YAAY,KAAKT,EAAEE,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,WAAW,SAASK,IAAI,EAAE,IAAI,IAAIA,IAAI,EAAE,MAAMA,IAAI,GAAGD,EAAEH,EAAE,GAAG,CAAC,EAAEI,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGD,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGA,EAAEC,EAAEI,EAAE,EAAEJ,EAAE,EAAEA,GAAGD,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAG,GAAG,EAAEC,EAAEP,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,EAAEM,GAAGI,EAAE,SAAS,KAAK,EAAE,EAAEI,EAAEJ,GAAG,GAAGA,GAAG,EAAE,UAAU,KAAK,GAAG,EAAEL,EAAES,EAAE,GAAG,EAAE,YAAY,KAAKT,EAAEE,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,WAAW,SAASK,IAAI,EAAE,IAAI,IAAIA,IAAI,EAAE,MAAMA,IAAI,GAAGD,EAAEH,EAAE,GAAG,CAAC,EAAEI,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGD,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGA,EAAEC,EAAEI,EAAE,EAAEJ,EAAE,EAAEA,GAAGD,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAG,GAAG,EAAEC,EAAEP,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,EAAEM,GAAGI,EAAE,SAAS,KAAK,EAAE,EAAEI,EAAEJ,GAAG,GAAGA,GAAG,EAAE,UAAU,KAAK,GAAG,EAAEL,EAAES,EAAE,GAAG,EAAE,YAAY,KAAKT,EAAEE,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,WAAW,SAASK,IAAI,EAAE,IAAI,IAAIA,IAAI,EAAE,MAAMA,IAAI,GAAGD,EAAEH,EAAE,GAAG,CAAC,EAAEI,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGD,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGA,EAAEC,EAAEI,EAAE,EAAEJ,EAAE,EAAEA,GAAGD,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAG,GAAG,EAAEC,EAAEP,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,EAAEM,GAAGI,EAAE,SAAS,KAAK,EAAE,EAAEI,EAAEJ,GAAG,GAAGA,GAAG,EAAE,UAAU,KAAK,GAAG,EAAEL,EAAES,EAAE,GAAG,EAAE,YAAY,KAAKT,EAAEE,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,WAAW,SAASK,IAAI,EAAE,IAAI,IAAIA,IAAI,EAAE,MAAMA,IAAI,GAAGD,EAAEH,EAAE,GAAG,CAAC,EAAEI,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGD,EAAEH,EAAE,GAAG,CAAC,EAAEI,IAAI,GAAGA,EAAEC,EAAEI,EAAE,EAAEJ,EAAE,EAAEA,GAAGD,EAAED,EAAEH,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAEF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGF,EAAEH,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAG,GAAG,EAAEC,EAAEP,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,EAAEM,GAAGI,EAAE,SAAS,KAAK,EAAE,EAAEL,EAAEJ,EAAEa,EAAEJ,GAAG,GAAGA,GAAG,EAAE,UAAU,KAAK,GAAG,EAAET,EAAEa,EAAE,GAAG,EAAE,YAAY,KAAKb,EAAEM,EAAEP,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,WAAW,SAASC,IAAI,EAAE,IAAI,IAAIA,IAAI,EAAE,MAAMA,IAAI,GAAGG,EAAEC,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAEC,EAAE,GAAG,CAAC,EAAEJ,IAAI,EAAEG,EAAEC,EAAE,GAAG,CAAC,EAAEJ,IAAI,GAAGG,EAAEC,EAAE,GAAG,CAAC,EAAEJ,IAAI,GAAGA,EAAEK,EAAEI,EAAE,EAAET,GAAGK,EAAE,EAAEF,EAAEC,EAAE,GAAG,CAAC,EAAEJ,EAAEG,EAAEC,EAAE,GAAG,CAAC,EAAEJ,IAAI,EAAEG,EAAEC,EAAE,GAAG,CAAC,EAAEJ,IAAI,GAAGG,EAAEC,EAAE,GAAG,CAAC,EAAEJ,IAAI,GAAGuH,GAAGtH,EAAE,GAAG,EAAEsH,GAAGxH,EAAE,GAAG,EAAEsB,EAAEpB,EAAE,IAAI,EAAE,CAAC,CAAC,SAASkD,GAAEpD,EAAEC,EAAEC,EAAE,CAAC,IAAIG,EAAEC,EAAEI,EAAEC,EAAEC,EAAEE,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEX,EAAEjB,EAAEiB,EAAE,IAAI,EAAER,EAAEN,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGgB,EAAEV,EAAE,GAAGyB,EAAE/B,EAAG,KAAI,EAAE,EAAEM,EAAEyB,EAAE,EAAE,CAAC,GAAG,EAAEzB,EAAEyB,EAAE,EAAE,CAAC,GAAG,GAAGzB,EAAEyB,EAAE,EAAE,CAAC,GAAG,GAAGd,EAAEX,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEZ,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGmB,EAAEb,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEE,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGsB,EAAEf,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGsB,EAAEhB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGuB,EAAEjB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGwB,EAAElB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGyB,EAAEnB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAEF,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG2B,EAAEpB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG2B,EAAErB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG4B,EAAEtB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG6B,EAAEvB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG8B,EAAExB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGS,EAAEH,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGA,GAAGW,EAAEJ,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,KAAKO,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,IAAIE,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAE8B,EAAEC,EAAEH,EAAEC,EAAEF,EAAElB,EAAEN,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEyB,EAAEC,EAAEH,EAAEC,EAAEF,EAAEjB,EAAEF,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGA,EAAEmB,EAAEC,EAAEP,EAAEI,EAAEC,EAAER,EAAEP,EAAE,EAAEJ,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGD,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAE0B,EAAE,GAAG,CAAC,EAAE1B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAE0B,GAAG,CAAC,EAAE1B,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEkH,GAAGlH,EAAEK,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAE0B,EAAE,GAAG,CAAC,EAAE1B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAE0B,GAAG,CAAC,EAAE1B,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEiH,GAAGlH,EAAEK,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAE0B,GAAG,CAAC,EAAE1B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAE0B,EAAE,GAAG,CAAC,EAAEhC,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEiH,GAAGlH,EAAEK,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEiH,GAAGlH,EAAEK,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEiH,GAAGlH,EAAEK,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,GAAG,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAEJ,EAAEiH,GAAGlH,EAAEK,EAAE,GAAG,EAAEA,CAAC,EAAEL,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAE4B,EAAE1B,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEU,EAAEL,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAE+B,EAAEvB,EAAEH,EAAEL,EAAE,GAAG,CAAC,EAAED,EAAEK,EAAEC,EAAEL,GAAG,CAAC,EAAEF,EAAEW,EAAEW,EAAEjB,EAAE,IAAI,CAAC,CAAC,SAASgD,GAAErD,EAAEC,EAAEC,EAAE,CAAC,IAAIG,EAAEC,EAAEI,EAAEC,EAAEC,EAAEE,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEV,EAAEjB,EAAEiB,EAAE,IAAI,EAAEQ,EAAEtB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG2B,EAAErB,EAAE,GAAGoB,EAAE1B,EAAG,KAAI,EAAE,EAAEM,EAAEoB,EAAE,EAAE,CAAC,GAAG,EAAEpB,EAAEoB,EAAE,EAAE,CAAC,GAAG,GAAGpB,EAAEoB,EAAE,EAAE,CAAC,GAAG,GAAGtB,EAAEE,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAEF,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGS,EAAEH,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG6B,EAAEvB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGU,EAAEJ,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGY,EAAEN,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGgB,EAAEV,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGkB,EAAEX,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEZ,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG8B,EAAExB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGmB,EAAEb,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGqB,EAAEf,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGsB,EAAEhB,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGwB,EAAEjB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGwB,EAAElB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGyB,EAAEnB,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGA,GAAGO,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,KAAKM,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAG+B,EAAEP,EAAEC,EAAEM,EAAET,EAAEC,EAAEH,EAAEjB,EAAEJ,EAAE,EAAE,CAAC,EAAEgC,EAAE5B,EAAEJ,EAAE,EAAE,CAAC,EAAEgC,IAAI,EAAE5B,EAAEJ,EAAE,GAAG,CAAC,EAAEgC,IAAI,GAAG5B,EAAEJ,EAAE,GAAG,CAAC,EAAEgC,IAAI,GAAGD,EAAEZ,EAAEC,EAAEW,EAAEjB,EAAEI,EAAEN,EAAER,EAAEJ,EAAE,EAAE,CAAC,EAAE+B,EAAE3B,EAAEJ,EAAE,EAAE,CAAC,EAAE+B,IAAI,EAAE3B,EAAEJ,EAAE,EAAE,CAAC,EAAE+B,IAAI,GAAG3B,EAAEJ,EAAE,EAAE,CAAC,EAAE+B,IAAI,GAAGD,EAAEpB,EAAEC,EAAEmB,EAAED,EAAEvB,EAAEqB,EAAEvB,EAAE,EAAEJ,CAAC,EAAE8B,EAAE1B,EAAEJ,EAAE,EAAE,CAAC,EAAE8B,IAAI,EAAE1B,EAAEJ,EAAE,EAAE,CAAC,EAAE8B,IAAI,GAAG1B,EAAEJ,EAAE,EAAE,CAAC,EAAE8B,IAAI,GAAG9B,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEqB,GAAG,CAAC,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEkH,GAAGlH,EAAEK,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEwB,EAAEtB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAEtB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAEtB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEwB,EAAEA,EAAEtB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEwB,EAAEA,EAAEtB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEwB,EAAEA,EAAEtB,EAAEqB,EAAE,GAAG,CAAC,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEqB,GAAG,CAAC,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEwB,EAAEqF,GAAGlH,EAAEK,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEwB,EAAEtB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAE2B,EAAEA,EAAEtB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEqB,GAAG,CAAC,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEqB,EAAE,GAAG,CAAC,EAAEC,EAAED,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEuB,EAAEA,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEuB,EAAEA,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEuB,EAAEA,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEuB,EAAEsF,GAAGlH,EAAEK,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAEuB,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEuB,EAAEA,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEuB,EAAEA,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEuB,EAAEA,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEuB,EAAEsF,GAAGlH,EAAEK,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAEuB,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEuB,EAAEA,EAAErB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEuB,EAAEA,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEuB,EAAEA,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEuB,EAAEsF,GAAGlH,EAAEK,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAEuB,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAE0B,EAAEA,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEuB,EAAEA,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEuB,EAAEA,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEuB,EAAEA,EAAErB,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,GAAG,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAEuB,EAAEsF,GAAGlH,EAAEK,EAAE,GAAG,EAAEA,CAAC,EAAEL,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEuB,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEwB,EAAEtB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAE2B,EAAEG,EAAEzB,EAAEL,EAAE,GAAG,CAAC,EAAE0B,EAAEG,EAAExB,EAAEL,GAAG,CAAC,EAAEF,EAAE8B,EAAER,EAAEjB,EAAE,IAAI,CAAC,CAAC,SAASiD,GAAEtD,EAAEC,EAAE,CAAC,IAAIC,EAAEG,EAAEC,EAAEI,EAAEC,EAAEC,EAAEE,EAAEI,EAAEC,EAAEC,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,GAAE,EAAEtB,GAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEE,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,EAAE,EAAElC,EAAEpB,EAAEoB,EAAE,IAAI,EAAED,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEuB,EAAEjB,EAAEN,EAAE,IAAI,CAAC,EAAEwB,EAAElB,EAAEN,EAAE,IAAI,CAAC,EAAEyB,EAAEnB,EAAEN,EAAE,IAAI,CAAC,EAAE0B,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEsB,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAE8B,EAAExB,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAErB,EAAEN,EAAE,IAAI,CAAC,EAAEkC,EAAE5B,EAAEN,EAAE,IAAI,CAAC,EAAE+B,EAAEzB,EAAEN,EAAE,KAAK,CAAC,EAAEqC,GAAE/B,GAAG6B,EAAEnC,EAAG,KAAI,IAAI,CAAC,EAAEe,GAAET,EAAEN,EAAE,KAAK,CAAC,EAAEsC,GAAEhC,EAAEN,EAAE,IAAI,CAAC,EAAEuC,GAAEjC,EAAEN,EAAE,KAAK,CAAC,EAAEwC,GAAElC,EAAEN,EAAE,IAAI,CAAC,EAAEyC,GAAEnC,EAAEN,EAAE,KAAK,CAAC,EAAE0C,GAAEpC,EAAEN,EAAE,IAAI,CAAC,EAAE2C,GAAErC,EAAEN,EAAE,IAAI,CAAC,EAAE4B,EAAEtB,EAAEN,EAAE,IAAI,CAAC,EAAE6B,EAAEvB,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAE2B,EAAEC,EAAEvB,EAAEL,EAAE,KAAK,CAAC,EAAEuC,GAAEC,GAAEnC,EAAEL,EAAE,KAAK,CAAC,EAAEqC,GAAEC,GAAEjC,EAAEL,EAAE,KAAK,CAAC,EAAEoC,GAAEtB,GAAET,EAAEL,EAAE,KAAK,CAAC,EAAE8B,EAAEG,EAAE5B,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEG,EAAExB,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEI,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAEC,EAAEnB,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEG,EAAEjB,EAAEL,EAAE,KAAK,CAAC,EAAEyC,GAAEC,GAAErC,EAAEL,EAAE,IAAI,CAAC,EAAE4B,EAAED,EAAEtB,EAAEL,EAAE,IAAI,CAAC,EAAEwC,GAAED,GAAElC,EAAEL,EAAE,IAAI,CAAC,EAAEsC,GAAED,GAAEhC,EAAEL,EAAE,IAAI,CAAC,EAAEc,GAAEsB,GAAE/B,EAAEL,EAAE,IAAI,CAAC,EAAE8B,EAAEG,EAAE5B,EAAEL,EAAE,IAAI,CAAC,EAAE0B,EAAEG,EAAExB,EAAEL,EAAE,IAAI,CAAC,EAAEqB,EAAEI,EAAEpB,EAAEL,EAAE,GAAG,CAAC,EAAEwB,EAAED,EAAElB,EAAEL,EAAE,GAAG,CAAC,EAAEsB,EAAEH,EAAEd,EAAEL,GAAG,CAAC,EAAE0C,GAAED,GAAEN,GAAEhB,EAAEnB,EAAE,IAAI,EAAEmB,EAAEnB,CAAC,EAAEmC,GAAEZ,EAAEvB,EAAE,IAAI,EAAED,EAAE0B,EAAE1B,EAAE,GAAG,CAAC,EAAE6C,GAAEtB,EAAEtB,EAAE,IAAI,EAAEuB,CAAC,EAAEY,GAAEb,EAAEH,EAAEG,CAAC,EAAEjB,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEoF,GAAG5D,EAAExB,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEsB,CAAC,EAAEa,GAAEb,EAAEtB,EAAE,IAAI,EAAEwB,EAAEL,CAAC,EAAEgB,GAAEF,EAAEjC,EAAE,IAAI,EAAEwB,EAAED,CAAC,EAAEY,GAAET,EAAE1B,EAAE,GAAG,EAAEsB,EAAEW,CAAC,EAAEE,GAAET,EAAEA,EAAEP,EAAEpB,EAAE,IAAI,CAAC,EAAEoC,GAAEnC,EAAE,IAAI,EAAED,EAAE,IAAI,EAAEoC,GAAEnC,EAAE,IAAI,EAAEyB,EAAE,IAAI,EAAEU,GAAEnC,EAAE,IAAI,EAAEsB,EAAE,IAAI,EAAEa,GAAEb,EAAEtB,EAAE,IAAI,EAAEmB,EAAEO,CAAC,EAAEgG,GAAG7F,EAAE7B,EAAE,IAAI,EAAEsB,CAAC,EAAED,EAAEf,EAAEN,EAAE,IAAI,CAAC,EAAEsB,EAAEjB,EAAEN,EAAE,IAAI,CAAC,EAAEoB,EAAEd,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEsB,EAAEC,EAAElB,EAAEN,EAAE,IAAI,CAAC,EAAEuB,EAAEjB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEsB,EAAEjB,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAEC,EAAEnB,EAAEN,EAAE,IAAI,CAAC,EAAEwB,EAAElB,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAElB,EAAEL,EAAE,KAAK,CAAC,EAAEwB,EAAEC,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAEyB,EAAEnB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEwB,EAAEnB,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEK,EAAEzB,EAAEN,EAAE,GAAG,CAAC,EAAE0B,EAAEpB,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAE8B,EAAEA,EAAEzB,EAAEN,EAAE,IAAI,CAAC,EAAEqC,GAAE/B,EAAEN,EAAE,IAAI,CAAC,EAAEe,GAAET,EAAEN,EAAE,IAAI,CAAC,EAAEsC,GAAEhC,EAAEN,EAAE,IAAI,CAAC,EAAEuC,GAAEjC,EAAEN,EAAE,IAAI,CAAC,EAAEwC,GAAElC,EAAE6B,GAAG,CAAC,EAAEM,GAAEnC,EAAEN,EAAE,IAAI,CAAC,EAAE0C,GAAEpC,EAAEN,EAAE,IAAI,CAAC,EAAE2C,GAAErC,EAAEN,EAAE,IAAI,CAAC,EAAEmC,EAAE7B,EAAEN,EAAE,IAAI,CAAC,EAAE+C,GAAEzC,EAAEL,EAAE,KAAK,CAAC,EAAE2B,EAAEtB,EAAEL,EAAE,KAAK,CAAC,EAAE+C,GAAE1C,EAAEL,EAAE,KAAK,CAAC,EAAE4B,EAAEvB,EAAEL,EAAE,KAAK,CAAC,EAAEgD,GAAE3C,EAAEL,EAAE,KAAK,CAAC,EAAE+B,EAAE1B,EAAEL,EAAE,KAAK,CAAC,EAAEiD,GAAE5C,EAAEL,EAAE,KAAK,CAAC,EAAEgC,EAAE3B,EAAEL,EAAE,KAAK,CAAC,EAAEkD,GAAE7C,EAAEL,EAAE,KAAK,CAAC,EAAE2C,GAAEtC,EAAEL,EAAE,KAAK,CAAC,EAAEmD,GAAE9C,EAAEL,EAAE,KAAK,CAAC,EAAEoD,GAAE/C,EAAEL,EAAE,KAAK,CAAC,EAAEqD,GAAEhD,EAAEL,EAAE,KAAK,CAAC,EAAEsD,EAAEjD,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAE,GAAG,EAAEA,GAAG,EAAEhB,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEE,GAAGF,EAAEd,EAAEL,EAAE,KAAK,CAAC,GAAGK,EAAEL,EAAE,KAAK,CAAC,EAAEsB,EAAED,GAAGC,EAAEgC,GAAGjD,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAEF,GAAGE,EAAE8B,IAAGhD,EAAEL,EAAE,KAAK,CAAC,EAAEwB,EAAEH,GAAGG,EAAE4B,IAAG/C,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEJ,GAAGI,EAAE0B,IAAG9C,EAAEL,EAAE,KAAK,CAAC,EAAE2C,GAAEtB,GAAGsB,GAAEO,IAAG7C,EAAEL,EAAE,KAAK,CAAC,EAAEgC,EAAEX,GAAGW,EAAEiB,IAAG5C,EAAEL,EAAE,KAAK,CAAC,EAAE+B,EAAEV,GAAGU,EAAEiB,IAAG3C,EAAEL,EAAE,KAAK,CAAC,EAAE4B,EAAEP,GAAGO,EAAEmB,IAAG1C,EAAEL,EAAE,KAAK,CAAC,EAAE2B,EAAEN,GAAGM,EAAEmB,IAAGH,GAAEtC,EAAEL,EAAE,KAAK,CAAC,EAAE8C,GAAEzC,EAAEL,EAAE,KAAK,CAAC,EAAE+C,GAAE1C,EAAEL,EAAE,KAAK,CAAC,EAAEgD,GAAE3C,EAAEL,EAAE,KAAK,CAAC,EAAEiD,GAAE5C,EAAEL,EAAE,KAAK,CAAC,EAAEkD,GAAE7C,EAAEL,EAAE,KAAK,CAAC,EAAEmD,GAAE9C,EAAEL,EAAE,KAAK,CAAC,EAAEoD,GAAE/C,EAAEL,EAAE,KAAK,CAAC,EAAEqD,GAAEhD,EAAEL,EAAE,KAAK,CAAC,EAAEsD,EAAEjD,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEG,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEsB,EAAEjB,EAAEL,EAAE,KAAK,CAAC,EAAEI,EAAEC,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAElB,EAAEL,EAAE,KAAK,CAAC,EAAEQ,EAAEH,EAAEL,EAAE,KAAK,CAAC,EAAEwB,EAAEnB,EAAEL,EAAE,KAAK,CAAC,EAAES,EAAEJ,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAEU,EAAEL,EAAEL,EAAE,KAAK,CAAC,EAAE2B,EAAEtB,EAAEL,EAAE,KAAK,CAAC,EAAEY,EAAEP,EAAEL,EAAE,KAAK,CAAC,EAAE4B,EAAEvB,EAAEL,EAAE,KAAK,CAAC,EAAEgB,EAAEX,EAAEL,EAAE,KAAK,CAAC,EAAE+B,EAAE1B,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEgC,EAAE3B,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAE6C,GAAExC,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE6C,GAAExB,GAAGhB,EAAEL,EAAE,KAAK,CAAC,EAAE6C,IAAGxC,EAAEL,EAAE,KAAK,CAAC,EAAEgC,EAAEX,GAAGW,EAAEd,GAAGb,EAAEL,EAAE,KAAK,CAAC,EAAE+B,EAAEV,GAAGU,EAAEd,GAAGZ,EAAEL,EAAE,KAAK,CAAC,EAAE4B,EAAEP,GAAGO,EAAEZ,GAAGX,EAAEL,EAAE,KAAK,CAAC,EAAE2B,EAAEN,GAAGM,EAAEf,GAAGP,EAAEL,EAAE,KAAK,CAAC,EAAEyB,EAAEJ,GAAGI,EAAEf,GAAGL,EAAEL,EAAE,KAAK,CAAC,EAAEwB,EAAEH,GAAGG,EAAEf,GAAGJ,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAEF,GAAGE,EAAEf,GAAGH,EAAEL,EAAE,KAAK,CAAC,EAAEsB,EAAED,GAAGC,EAAElB,GAAGC,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEE,GAAGF,EAAEhB,GAAGgC,GAAEhB,EAAEnB,EAAE,GAAG,EAAEA,EAAE,IAAI,EAAE0B,CAAC,EAAEgG,GAAG7F,EAAEV,CAAC,EAAEG,EAAEjB,EAAEN,EAAE,IAAI,CAAC,EAAEwB,EAAElB,EAAEN,EAAE,IAAI,CAAC,EAAEyB,EAAEnB,EAAEN,EAAE,IAAI,CAAC,EAAE0B,EAAEpB,EAAEN,EAAE,IAAI,CAAC,EAAE2B,EAAErB,EAAEN,EAAE,KAAK,CAAC,EAAE4B,EAAEtB,EAAEN,EAAE,KAAK,CAAC,EAAE6B,EAAEvB,EAAEN,EAAE,KAAK,CAAC,EAAEgC,EAAE1B,EAAEN,EAAE,KAAK,CAAC,EAAEiC,EAAE3B,EAAEN,EAAE,IAAI,CAAC,EAAE8C,GAAExC,EAAEN,EAAE,KAAK,CAAC,EAAEA,EAAE,GAAG,EAAEG,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEmB,EAAEuB,GAAErB,GAAGqB,GAAEY,GAAGjD,EAAEL,EAAE,KAAK,CAAC,EAAE6C,IAAG9C,GAAG,EAAEoB,EAAEA,GAAGA,GAAGA,EAAEsB,GAAEpB,GAAGoB,GAAEY,IAAGhD,EAAEL,EAAE,KAAK,CAAC,EAAE+B,GAAGhC,GAAG,EAAEoB,EAAEA,GAAGA,GAAGA,EAAEqB,GAAEnB,GAAGmB,GAAEY,IAAG/C,EAAEL,EAAE,KAAK,CAAC,EAAE4B,GAAG7B,GAAG,EAAEoB,EAAEA,GAAGA,GAAGA,EAAEoB,GAAElB,GAAGkB,GAAEY,IAAG9C,EAAEL,EAAE,KAAK,CAAC,EAAE2B,GAAG5B,GAAG,EAAEoB,EAAEA,GAAGA,GAAGA,EAAEmB,GAAEjB,GAAGiB,GAAEY,IAAG7C,EAAEL,EAAE,KAAK,CAAC,EAAE0B,GAAG3B,GAAG,EAAEoB,EAAEA,GAAGA,GAAGA,EAAEkB,GAAEhB,GAAGgB,GAAEY,IAAG5C,EAAEL,EAAE,KAAK,CAAC,EAAEyB,GAAG1B,GAAG,EAAEoB,EAAEA,GAAGA,GAAGA,EAAEL,GAAEO,GAAGP,GAAEkC,IAAG3C,EAAEL,EAAE,KAAK,CAAC,EAAEwB,GAAGzB,GAAG,EAAEoB,EAAEA,GAAGA,GAAGA,EAAEiB,GAAEf,GAAGe,GAAEW,IAAG1C,EAAEL,EAAE,KAAK,CAAC,EAAEuB,GAAGxB,GAAG,EAAEoB,EAAEA,GAAGA,GAAGA,EAAEW,EAAET,GAAGS,EAAEgB,IAAGzC,EAAEL,EAAE,KAAK,CAAC,EAAEsB,GAAGvB,GAAG,EAAEoB,EAAEA,GAAGA,GAAGA,EAAEpB,EAAEA,EAAEmC,EAAEb,GAAGa,EAAES,IAAGtC,EAAEL,EAAE,KAAK,CAAC,EAAEgC,GAAGb,GAAG,EAAEpB,EAAEA,GAAGA,GAAGoC,GAAEN,EAAEI,EAAEJ,CAAC,EAAE6F,GAAG1H,EAAE,IAAI,EAAE6B,CAAC,EAAE9B,EAAE,GAAG,EAAEG,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEmB,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAED,GAAG,EAAEoB,EAAEA,GAAGA,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAED,GAAG,EAAEoB,EAAEA,GAAGA,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAED,GAAG,EAAEoB,EAAEA,GAAGA,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAED,GAAG,EAAEoB,EAAEA,GAAGA,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAED,GAAG,EAAEoB,EAAEA,GAAGA,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAED,GAAG,EAAEoB,EAAEA,GAAGA,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAED,GAAG,EAAEoB,EAAEA,GAAGA,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAED,GAAG,EAAEoB,EAAEA,GAAGA,EAAEA,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAED,GAAG,EAAEoB,EAAEA,GAAGA,EAAEA,EAAEpB,EAAEA,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEmB,GAAG,EAAEpB,EAAEA,GAAGA,EAAE2H,GAAG5H,EAAE+B,CAAC,EAAET,EAAEpB,EAAE,IAAI,CAAC,CAAC,SAASqD,GAAEvD,EAAEC,EAAE,CAAC,IAAIC,EAAEE,EAAEC,EAAEC,EAAEI,EAAE,EAAE,EAAEI,EAAEI,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAEpB,EAAEoB,EAAE,IAAI,EAAElB,EAAEI,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEE,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGU,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGc,EAAEN,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGkB,EAAEV,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEkH,GAAG9F,EAAElB,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEF,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAED,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAED,EAAEA,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEA,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEkH,GAAG9F,EAAElB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEF,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAED,EAAEA,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,KAAK,CAAC,EAAED,EAAEA,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEF,EAAEmB,EAAEZ,EAAE,GAAGP,EAAEC,EAAG,KAAI,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAE+F,GAAG9F,EAAElB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEkB,EAAEA,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEkB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAE+F,GAAG9F,EAAElB,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEkB,EAAEA,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,GAAG,CAAC,EAAEO,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEP,EAAE,GAAG,CAAC,EAAEmB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAE+F,GAAG9F,EAAElB,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEkB,EAAEA,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEkB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAE+F,GAAG9F,EAAElB,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEkB,EAAEA,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEkB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAE+F,GAAG9F,EAAElB,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEkB,EAAEA,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEkB,EAAEA,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAEA,EAAEZ,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,GAAG,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,GAAG,CAAC,EAAEiB,EAAE+F,GAAG9F,EAAElB,EAAE,GAAG,EAAEA,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,IAAI,CAAC,EAAEmB,EAAEA,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,GAAG,CAAC,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEN,EAAE,GAAG,CAAC,EAAEmB,EAAEb,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIa,EAAEP,EAAEN,EAAE,GAAG,CAAC,GAAGO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAI,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAGO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,IAAI,EAAEM,EAAEN,GAAG,CAAC,GAAGO,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,IAAIiB,EAAEX,EAAEP,GAAG,CAAC,GAAGQ,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,IAAIU,EAAEH,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIK,EAAEC,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAII,EAAEE,EAAEN,EAAE,IAAI,CAAC,GAAGO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,IAAIG,EAAEkB,EAAEpB,EAAE,IAAI,CAAC,CAAC,SAASsD,GAAExD,EAAEC,EAAEC,EAAEE,EAAE,CAAC,IAAIC,EAAEC,EAAEI,EAAE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEV,EAAEjB,EAAEiB,EAAE,IAAI,EAAEf,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEsH,GAAG7F,EAAEzB,EAAE,IAAI,EAAEJ,EAAEC,CAAC,EAAE6B,EAAEvB,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAG4B,EAAExB,EAAE,GAAGP,EAAEG,EAAG,KAAI,EAAE,EAAEI,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAG4B,EAAErB,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGU,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGc,EAAEV,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGe,EAAEX,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGgB,EAAEZ,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGiB,EAAEb,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGmB,EAAEf,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGoB,EAAEhB,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGqB,EAAEjB,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGsB,EAAEnB,EAAEF,EAAE,KAAK,CAAC,EAAEsB,EAAEpB,EAAEF,EAAE,KAAK,CAAC,EAAEuB,EAAErB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,KAAKI,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,KAAKI,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,KAAKI,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIG,EAAEF,EAAE,KAAK,CAAC,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,GAAG,GAAGI,EAAEJ,EAAE,GAAG,CAAC,GAAG,IAAIG,EAAEF,EAAE,KAAK,CAAC,EAAEmB,EAAEC,EAAEF,EAAEK,EAAEP,EAAED,EAAEb,EAAEF,EAAE,KAAK,CAAC,EAAEa,EAAEC,EAAEL,EAAEa,EAAE,EAAE,EAAEpB,EAAEF,EAAE,KAAK,CAAC,EAAEC,EAAEI,EAAEqB,EAAEC,EAAEH,EAAEH,EAAE+F,GAAGvH,EAAE4B,EAAE,EAAE,EAAE,GAAG5B,EAAE,CAAC,EAAEyH,GAAG3H,EAAE8B,EAAE5B,CAAC,EAAEA,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEyB,EAAEvB,EAAEF,EAAE,KAAK,CAAC,EAAE0B,EAAExB,EAAEF,EAAE,KAAK,CAAC,EAAE2B,EAAEzB,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEN,GAAG,CAAC,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEL,EAAEkH,GAAGlH,EAAEK,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEwB,EAAEtB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEtB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEtB,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEwB,EAAEA,EAAEtB,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEwB,EAAEA,EAAEtB,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEwB,EAAEA,EAAEtB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEN,GAAG,CAAC,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEwB,EAAEqF,GAAGlH,EAAEK,EAAE,IAAI,EAAEA,EAAE,IAAI,CAAC,EAAEwB,EAAEtB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEyB,EAAEA,EAAEtB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEN,GAAG,CAAC,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEN,EAAE,GAAG,CAAC,EAAE4B,EAAE5B,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEiH,GAAGlH,EAAEK,EAAE,IAAI,EAAEA,EAAE,GAAG,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEiH,GAAGlH,EAAEK,EAAE,GAAG,EAAEA,EAAG,KAAI,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,GAAG,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEiH,GAAGlH,EAAEK,EAAE,GAAG,EAAEA,EAAE,GAAG,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEM,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEF,GAAG,CAAC,EAAEE,EAAEH,GAAG,CAAC,EAAEG,EAAEF,EAAE,GAAG,CAAC,EAAEJ,EAAEiH,GAAGlH,EAAEK,EAAE,GAAG,EAAEA,CAAC,EAAEL,EAAEO,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEwB,EAAEtB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAE4B,EAAEzB,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEH,EAAE,GAAG,CAAC,EAAEyB,EAAEE,EAAExB,EAAEH,EAAE,GAAG,CAAC,EAAEH,EAAE6B,EAAEvB,EAAEH,GAAG,CAAC,EAAEJ,EAAEE,EAAEoB,EAAEjB,EAAE,IAAI,CAAC,CAAC,SAASoD,GAAEzD,EAAEC,EAAEC,EAAEG,EAAEC,EAAE,CAACN,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEG,GAAG,EAAE,IAAIE,EAAE,EAAEG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEI,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,GAAG,EAAE,YAAYxB,EAAEG,EAAE,GAAGF,GAAG,EAAE,EAAEE,EAAEF,EAAE,EAAE,CAAC,GAAG,EAAEE,EAAEF,EAAE,EAAE,CAAC,GAAG,GAAGE,EAAEF,EAAE,EAAE,CAAC,GAAG,IAAII,EAAE,YAAYH,EAAEC,EAAEF,EAAE,EAAE,CAAC,EAAEE,EAAEF,EAAE,EAAE,CAAC,GAAG,EAAEE,EAAEF,EAAE,EAAE,CAAC,GAAG,GAAGE,EAAEF,EAAE,EAAE,CAAC,GAAG,IAAIQ,EAAE,WAAWT,EAAE,EAAE,WAAWE,EAAEA,EAAE,YAAYF,EAAEG,EAAEF,EAAE,EAAE,CAAC,EAAEE,EAAEF,EAAE,EAAE,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIA,EAAE,YAAYa,EAAEX,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,EAAEE,EAAEF,EAAE,GAAG,CAAC,GAAG,GAAGE,EAAEF,EAAE,GAAG,CAAC,GAAG,IAAIY,EAAE,WAAWb,EAAEc,GAAG,YAAY,GAAGI,GAAGtB,EAAEC,EAAE,IAAImB,EAAE,EAAEnB,GAAG,MAAM,EAAED,GAAG,KAAKiB,EAAEJ,EAAEA,GAAGT,EAAEa,GAAGS,EAAEnB,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,GAAGkB,GAAGS,EAAEpB,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,EAAEI,IAAI,EAAES,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEJ,EAAEJ,EAAEI,EAAE,EAAEA,GAAGY,EAAE,KAAK,GAAG,EAAEf,EAAE,EAAE,KAAK,EAAEG,EAAE,EAAE,EAAEA,EAAEJ,EAAEQ,GAAGP,EAAEkF,EAAGlF,EAAED,EAAE,EAAE,EAAE,GAAG,EAAEQ,EAAE,GAAGM,EAAEK,EAAEf,GAAG,EAAEU,EAAEqE,EAAGlF,EAAEa,EAAE,EAAE,EAAEd,EAAEkB,EAAEiE,EAAGrE,EAAEN,GAAGQ,EAAEhB,IAAI,EAAEC,IAAI,EAAEO,EAAE,EAAE,EAAEA,GAAGW,EAAE,EAAE,EAAEC,EAAED,EAAEpB,EAAEoF,EAAGpF,EAAEc,EAAE,EAAE,EAAEZ,EAAE,EAAEkB,EAAE,EAAEpB,EAAEa,EAAE,EAAEuE,EAAG,EAAE/E,EAAE,EAAE,EAAEQ,EAAEJ,EAAEA,EAAEW,EAAElB,EAAE,EAAEW,EAAE,GAAG,EAAEA,GAAGR,GAAGL,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAES,EAAE,EAAE,EAAEA,GAAG,GAAG,EAAEA,EAAE,EAAEA,GAAG,EAAET,EAAEe,EAAE,KAAK,EAAEf,IAAI,EAAEa,EAAEJ,EAAEU,EAAEiE,EAAGvE,EAAE,EAAEM,EAAEL,EAAEL,EAAEY,EAAE,EAAE,EAAEA,EAAED,EAAElB,EAAEkF,EAAG,EAAElF,EAAE,EAAE,EAAEG,GAAGe,EAAEI,EAAExB,EAAEE,EAAED,EAAEmF,EAAGnF,EAAEgB,EAAE,EAAE,EAAEf,EAAEkB,EAAEf,EAAE,EAAEJ,EAAEa,GAAGG,GAAGjB,EAAEwB,EAAEvB,EAAE,KAAK,EAAEA,IAAI,EAAEC,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAG,EAAEF,EAAEa,EAAE,GAAGM,EAAElB,GAAGc,EAAE,IAAI,EAAEf,IAAI,EAAEC,EAAE,EAAE,EAAEA,GAAGoB,EAAEhB,EAAE+E,EAAG5D,EAAEnB,EAAE,EAAE,EAAES,EAAED,EAAEI,EAAEG,EAAEf,EAAE+E,EAAGpF,GAAGK,EAAEQ,EAAE,EAAE,EAAEI,EAAEG,EAAEP,GAAGb,GAAG,EAAEoF,EAAG,EAAE3E,EAAE,EAAE,GAAGT,EAAE,GAAGK,EAAEI,EAAEW,EAAEN,EAAE,EAAEA,GAAGT,EAAEL,IAAI,EAAE,IAAI,EAAES,EAAE,EAAE,EAAEA,GAAGQ,EAAER,EAAE2E,EAAG,EAAErE,EAAE,EAAE,EAAE,EAAEK,EAAE,EAAEpB,EAAEsB,EAAEjB,GAAGkB,GAAG,EAAEL,KAAK,GAAGtB,EAAEA,EAAE,EAAE,KAAK,CAAC,OAAOC,IAAI,GAAGG,EAAE,EAAEgB,EAAE,EAAE,EAAG,CAAA,IAAK,GAAEnB,GAAGM,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAG,IAAK,GAAEC,GAAGM,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAE,IAAK,GAAEC,GAAGM,EAAEP,EAAE,EAAE,CAAC,EAAE,IAAK,GAAEmB,GAAGf,EAAEG,EAAEP,EAAE,EAAE,CAAC,KAAK,EAAE,EAAEI,IAAI,GAAGH,GAAGkB,EAAE,IAAK,GAAEf,IAAIe,EAAEZ,EAAEP,EAAE,EAAE,CAAC,IAAI,GAAGC,GAAGmB,EAAED,IAAI,GAAG,EAAE,IAAK,GAAEf,IAAIe,EAAEZ,EAAEP,EAAE,EAAE,CAAC,IAAI,EAAEC,GAAGmB,EAAED,IAAI,GAAG,EAAE,IAAK,GAAEf,EAAEG,EAAE,EAAEP,CAAC,EAAEI,CAAC,CAAC,OAAOc,EAAEsE,EAAGxF,EAAEI,EAAEa,EAAEA,EAAEhB,EAAEiB,EAAE,EAAE,EAAE,EAAE,EAAED,EAAE,EAAEJ,GAAGb,EAAEA,EAAEa,EAAE,KAAK,EAAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEK,EAAEsE,EAAG,EAAExF,EAAEkB,EAAED,EAAEJ,EAAEW,EAAE,EAAE,EAAEL,EAAEK,EAAEH,EAAE,GAAGZ,EAAEJ,EAAEI,EAAE,GAAG,EAAEW,EAAEX,EAAEW,EAAE,EAAE,IAAI,GAAGX,EAAEH,EAAE,EAAE,KAAK,EAAEe,EAAED,EAAEE,EAAEkE,EAAG/E,EAAE,EAAE,EAAE,EAAEQ,EAAEO,EAAEP,EAAE,EAAEE,EAAEqE,EAAG,EAAEtE,GAAG,EAAE,EAAEI,EAAE,GAAGJ,EAAEC,GAAGF,EAAE,IAAI,EAAEK,IAAI,EAAEL,EAAE,EAAE,EAAEA,GAAG,EAAE,EAAEK,EAAEE,EAAEnB,EAAEmF,EAAGlF,EAAED,EAAE,EAAE,EAAEI,EAAEH,GAAGA,EAAEO,IAAIA,EAAEW,EAAEJ,GAAG,EAAEA,EAAEoE,EAAGxF,EAAEA,EAAEK,EAAE,EAAEI,EAAET,IAAI,EAAEK,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEY,EAAEM,EAAEN,EAAE,EAAEE,EAAEoE,EAAG,EAAErE,GAAGb,EAAE,EAAEc,EAAE,GAAGD,GAAGD,EAAEZ,IAAI,EAAEc,IAAI,EAAEF,EAAE,EAAE,EAAEA,GAAGI,EAAE,EAAE,EAAEA,EAAEE,EAAExB,EAAE,GAAGK,EAAEQ,EAAE2E,EAAGnF,EAAEQ,EAAE,EAAE,EAAEb,GAAG,EAAE,GAAGS,GAAGe,GAAGP,EAAE,EAAEA,EAAEZ,EAAEL,IAAI,EAAEK,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEgB,EAAED,EAAE,EAAE,GAAGA,EAAEoE,EAAGxF,EAAEK,EAAE,EAAE,GAAG,EAAE,EAAEmB,EAAEL,EAAE,EAAEC,EAAEoE,EAAGnF,EAAEgB,EAAE,EAAEF,GAAG,EAAE,IAAI,EAAEC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAGE,EAAE,EAAE,EAAEA,EAAEE,EAAEH,EAAEf,EAAEG,EAAE+E,EAAG3E,EAAEJ,EAAE,EAAE,EAAET,EAAEa,GAAGI,GAAGO,GAAGN,EAAE,EAAEA,EAAEZ,GAAGN,EAAEqB,GAAGf,EAAEG,GAAG,KAAK,EAAEH,IAAI,EAAEO,EAAE,EAAE,EAAEA,EAAEP,EAAEkF,EAAGxF,EAAEM,EAAE,EAAE,EAAEO,EAAEM,EAAEK,EAAE,EAAEL,GAAGE,EAAEhB,KAAK,GAAGA,EAAEA,GAAG,IAAIC,GAAG,KAAK,EAAEO,EAAE,EAAE,EAAEA,EAAEO,EAAEoE,EAAG3E,EAAER,EAAEe,EAAEd,EAAEgB,EAAEH,EAAE,EAAE,EAAEG,EAAEE,EAAEf,EAAE+E,EAAG/E,EAAEQ,EAAE,EAAE,EAAEjB,EAAEC,GAAGgB,EAAEC,EAAEM,IAAIvB,EAAE,GAAG,EAAE,EAAEA,GAAGD,EAAES,GAAGL,GAAG,GAAG,KAAK,EAAEA,IAAI,EAAEH,EAAE,EAAE,EAAEA,EAAEA,EAAEuF,EAAGxF,EAAEC,EAAE,EAAE,EAAEG,EAAEE,EAAEkB,EAAE,EAAEX,EAAE2E,EAAG,GAAGvF,EAAEA,EAAEY,EAAE,GAAGO,EAAEhB,GAAGE,EAAEL,IAAI,EAAEY,IAAI,EAAET,EAAE,EAAE,EAAEA,GAAGkB,EAAE,EAAE,EAAEJ,EAAEM,EAAEf,EAAE+E,EAAG/E,EAAEQ,EAAE,EAAE,EAAEjB,EAAEiB,EAAEE,GAAG,GAAGK,GAAG,EAAEP,EAAEZ,GAAGL,EAAEK,EAAEI,EAAE,KAAK,EAAEJ,IAAI,EAAEY,EAAE,EAAE,EAAEA,EAAEZ,EAAEmF,EAAGxF,EAAEK,EAAE,EAAE,EAAEe,EAAEF,EAAEG,EAAE,GAAGjB,EAAEA,EAAEoB,EAAE,GAAG,EAAEN,EAAEd,EAAEc,GAAGd,EAAEC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAEgB,EAAEH,EAAEL,EAAE2E,EAAG,EAAEpF,EAAES,EAAER,EAAEe,EAAEF,EAAE,EAAE,EAAEC,EAAEK,EAAEf,EAAE+E,EAAG/E,EAAE,EAAE,EAAE,EAAEY,EAAE,GAAGf,EAAEA,GAAG,EAAEW,EAAEO,GAAG,GAAG,EAAEP,EAAEX,EAAEG,EAAET,GAAGoB,EAAEnB,KAAK,GAAGA,EAAEA,GAAGK,EAAEN,EAAES,GAAG,KAAK,EAAEY,EAAEJ,EAAEjB,EAAEwF,EAAGvF,EAAED,EAAE,EAAE,EAAEK,EAAEA,EAAEmB,EAAE,EAAEP,GAAGjB,EAAEA,EAAE,EAAE,KAAK,EAAE,IAAI,EAAEK,EAAE,EAAE,EAAEA,EAAEQ,EAAE2E,EAAG,EAAExF,EAAEa,EAAER,EAAEY,EAAEE,EAAE,EAAE,EAAEA,EAAEK,EAAElB,EAAEkF,EAAGlF,EAAE,EAAE,EAAE,EAAE,EAAEY,GAAGT,GAAGe,GAAG,EAAE,EAAEvB,GAAGiB,EAAEd,KAAK,GAAGA,EAAEA,GAAGE,GAAGL,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEuF,EAAGpF,EAAEH,EAAE,EAAE,EAAEI,EAAEA,EAAEmB,EAAE,EAAEN,GAAGjB,EAAEA,EAAE,EAAE,KAAK,EAAE,IAAI,EAAEI,EAAE,EAAE,EAAEA,EAAEQ,EAAE2E,EAAG,EAAEvF,EAAEY,EAAER,EAAEa,EAAEC,EAAE,EAAE,EAAEA,EAAEK,EAAElB,EAAEkF,EAAGlF,EAAEG,EAAE,EAAE,EAAEW,EAAE,GAAG,EAAEH,GAAGR,EAAE,EAAEe,GAAG,GAAG,EAAEP,EAAE,EAAEjB,EAAEwF,EAAGpF,EAAEJ,GAAG,EAAEI,EAAEE,GAAG,EAAEA,EAAEF,IAAI,EAAEJ,IAAI,EAAEoB,EAAEH,EAAE,EAAE,EAAEZ,EAAEA,EAAEmB,EAAE,EAAEP,GAAGjB,EAAEA,EAAE,EAAE,KAAK,EAAE,IAAI,EAAEK,EAAE,EAAE,EAAEA,EAAEQ,EAAE2E,EAAG,EAAExF,EAAEa,EAAER,EAAEY,EAAEE,EAAE,EAAE,EAAEA,EAAEK,EAAEf,EAAE+E,EAAG,EAAE/E,EAAE,EAAE,EAAE,EAAES,GAAGZ,GAAGkB,GAAG,EAAE,EAAEvB,GAAGG,EAAEH,GAAGQ,GAAGL,GAAG,KAAK,EAAEH,IAAI,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEuF,EAAGpF,EAAEH,EAAE,EAAE,EAAEI,EAAEA,EAAEmB,EAAE,EAAE,EAAEgE,GAAIvF,EAAEA,EAAE,EAAE,GAAGY,GAAGR,EAAEJ,IAAI,EAAE,IAAI,EAAEI,EAAE,EAAE,EAAEA,GAAGc,EAAE,EAAE,EAAEN,EAAEW,EAAEpB,EAAEoF,EAAG/E,EAAEH,EAAE,EAAE,EAAEF,EAAEK,EAAE+E,EAAGpF,EAAEE,EAAE,EAAEkB,EAAE,EAAE,EAAElB,EAAEA,EAAEW,EAAE,EAAEjB,EAAEwB,GAAGxB,IAAI,GAAGI,EAAEJ,EAAEI,EAAE,KAAK,EAAEE,EAAE,EAAEA,GAAG,EAAEkF,EAAGpF,GAAGK,EAAET,EAAE,EAAE,EAAE,EAAEM,EAAEkB,EAAEX,EAAE,EAAE,GAAGb,EAAEA,EAAEK,EAAE,GAAG,EAAEA,EAAEL,EAAEA,EAAEwF,EAAGxF,EAAEC,EAAEG,EAAE,EAAEH,EAAEA,IAAI,EAAED,IAAI,EAAE,EAAEK,EAAE,EAAE,EAAE,EAAEL,EAAEG,EAAE,EAAEJ,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGA,EAAEC,EAAEuB,EAAElB,EAAEH,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAG,CAAC,CAAC,SAASyD,GAAE1D,EAAEC,EAAE,CAAC,IAAIC,EAAEE,EAAEC,EAAEC,EAAEI,EAAE,EAAE,EAAE,EAAE,EAAEI,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEE,GAAE,EAAEtB,GAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEE,GAAE,EAAEzB,EAAEpB,EAAEoB,EAAE,IAAI,EAAEwB,GAAE,EAAE5C,EAAE,IAAI,EAAED,CAAC,EAAEoC,GAAE,EAAE,KAAK,CAAC,EAAEvB,EAAEP,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEY,EAAEI,EAAEX,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEgB,EAAEC,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEC,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEC,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEE,EAAEhB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEC,EAAEjB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEsB,EAAEC,EAAElB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAEC,EAAEnB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEwB,EAAEE,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAE,EAAES,GAAE,EAAEnC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEY,EAAE,SAASP,EAAEL,EAAE,KAAK,CAAC,EAAEgB,EAAE,SAASX,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAE,QAAQZ,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAE,QAAQb,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAE,QAAQd,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAE,OAAOhB,EAAEL,EAAE,KAAK,CAAC,EAAEsB,EAAE,QAAQjB,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAE,SAASlB,EAAEL,EAAE,KAAK,CAAC,EAAEwB,EAAE,SAASnB,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAE,SAASS,GAAEV,EAAEzB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,CAACK,EAAEL,EAAE,KAAK,CAAC,EAAEmC,GAAEV,EAAEA,EAAEzB,EAAE,IAAI,CAAC,EAAE,EAAEoF,GAAGlF,EAAEF,EAAE,IAAI,EAAE,EAAEyB,CAAC,EAAEU,GAAE,EAAEnC,EAAE,IAAI,EAAEE,EAAEH,CAAC,EAAE2H,GAAGvH,EAAEH,EAAE,IAAI,EAAE,CAAC,EAAEQ,EAAEF,EAAEN,EAAE,IAAI,CAAC,EAAEc,GAAET,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEqC,GAAEhC,EAAEL,EAAE,KAAK,CAAC,EAAE2B,EAAEtB,EAAEL,EAAE,KAAK,CAAC,EAAEsC,GAAEjC,EAAEL,EAAE,KAAK,CAAC,EAAE4B,EAAEvB,EAAEL,EAAE,KAAK,CAAC,EAAEuC,GAAElC,EAAEL,EAAE,KAAK,CAAC,EAAE6B,EAAExB,EAAEL,EAAE,KAAK,CAAC,EAAEwC,GAAEnC,EAAEL,EAAE,KAAK,CAAC,EAAE8B,EAAEzB,EAAEL,EAAE,KAAK,CAAC,EAAEyC,GAAEpC,EAAEL,EAAE,KAAK,CAAC,EAAE+B,EAAE1B,EAAEL,EAAE,KAAK,CAAC,EAAE0C,GAAErC,EAAEL,EAAE,KAAK,CAAC,EAAEgC,EAAE3B,EAAEL,EAAE,KAAK,CAAC,EAAE2C,GAAEtC,EAAEL,EAAE,KAAK,CAAC,EAAEiC,EAAE5B,EAAEL,EAAE,KAAK,CAAC,EAAE6C,GAAExC,EAAEL,EAAE,KAAK,CAAC,EAAEkC,GAAE7B,EAAEL,EAAE,KAAK,CAAC,EAAEI,EAAEC,EAAEL,EAAE,KAAK,CAAC,EAAEoC,GAAE/B,EAAEL,EAAE,KAAK,CAAC,EAAED,EAAE,EAAE,EAAE,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAED,EAAEa,EAAEP,EAAEL,EAAE,KAAK,CAAC,EAAED,EAAEiB,EAAEX,EAAEL,EAAE,KAAK,CAAC,EAAED,EAAEkB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAED,EAAEmB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAED,EAAEoB,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAED,EAAEsB,EAAEhB,EAAEL,EAAE,KAAK,CAAC,EAAED,EAAEuB,EAAEjB,EAAEL,EAAE,KAAK,CAAC,EAAED,EAAEwB,EAAElB,EAAEL,EAAE,KAAK,CAAC,EAAED,EAAEyB,EAAEnB,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAE,EAAE,EAAEU,GAAErC,GAAG,GAAGqC,IAAG,EAAE,GAAG,EAAE5B,GAAG,IAAI4B,GAAE,EAAEA,KAAIhC,GAAGA,EAAEC,EAAEL,EAAE,KAAK,CAAC,EAAEoC,GAAEF,GAAEW,GAAE9C,GAAG8C,GAAE,GAAGX,GAAE,GAAGA,GAAE,EAAEA,MAAK7B,EAAEL,EAAE,KAAK,CAAC,EAAEkC,GAAED,EAAEU,GAAE5C,GAAG4C,GAAE,GAAGV,EAAE,GAAGA,EAAE,EAAEA,KAAK5B,EAAEL,EAAE,KAAK,CAAC,EAAEiC,EAAED,EAAEU,GAAE3C,GAAG2C,GAAE,GAAGV,EAAE,GAAGA,EAAE,EAAEA,KAAK3B,EAAEL,EAAE,KAAK,CAAC,EAAEgC,EAAED,EAAEU,GAAE1C,GAAG0C,GAAE,GAAGV,EAAE,GAAGA,EAAE,EAAEA,KAAK1B,EAAEL,EAAE,KAAK,CAAC,EAAE+B,EAAED,EAAEU,GAAEzC,GAAGyC,GAAE,GAAGV,EAAE,GAAGA,EAAE,EAAEA,KAAKzB,EAAEL,EAAE,KAAK,CAAC,EAAE8B,EAAED,EAAEU,GAAExC,GAAGwC,GAAE,GAAGV,EAAE,GAAGA,EAAE,EAAEA,KAAKxB,EAAEL,EAAE,KAAK,CAAC,EAAE6B,EAAED,EAAEU,GAAEvC,GAAGuC,GAAE,GAAGV,EAAE,GAAGA,EAAE,EAAEA,KAAKvB,EAAEL,EAAE,KAAK,CAAC,EAAE4B,EAAED,EAAEU,GAAEtC,GAAGsC,GAAE,GAAGV,EAAE,GAAGA,EAAE,EAAEA,KAAKtB,EAAEL,EAAE,KAAK,CAAC,EAAE2B,EAAE,EAAEb,GAAEf,GAAGe,GAAE,GAAG,EAAE,GAAG,EAAE,EAAE,KAAKT,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEY,EAAEP,EAAEL,EAAE,KAAK,CAAC,EAAEgB,EAAEX,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEhB,EAAEL,EAAE,KAAK,CAAC,EAAEsB,EAAEjB,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAElB,EAAEL,EAAE,KAAK,CAAC,EAAEwB,EAAEnB,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAE,EAAES,GAAEpC,EAAEC,EAAE,IAAI,EAAED,EAAEI,CAAC,EAAEgC,GAAEpC,EAAEA,EAAE,KAAK,EAAEa,EAAEP,EAAEL,EAAE,KAAK,CAAC,EAAEgB,EAAEX,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEhB,EAAEL,EAAE,KAAK,CAAC,EAAEsB,EAAEjB,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAElB,EAAEL,EAAE,KAAK,CAAC,EAAEwB,EAAEnB,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAErB,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAEc,GAAET,EAAEL,EAAE,KAAK,CAAC,EAAEqC,GAAEhC,EAAEL,EAAE,KAAK,CAAC,EAAEsC,GAAEjC,EAAEL,EAAE,KAAK,CAAC,EAAEuC,GAAElC,EAAEL,EAAE,KAAK,CAAC,EAAEwC,GAAEnC,EAAEL,EAAE,KAAK,CAAC,EAAEyC,GAAEpC,EAAEL,EAAE,KAAK,CAAC,EAAE0C,GAAErC,EAAEL,EAAE,KAAK,CAAC,EAAE2C,GAAEtC,EAAEL,EAAE,KAAK,CAAC,EAAE6C,GAAExC,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,GAAG,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE2B,GAAG,EAAEtB,EAAEL,EAAE,KAAK,CAAC,EAAE4B,GAAG,EAAEvB,EAAEL,EAAE,KAAK,CAAC,EAAE6B,GAAG,EAAExB,EAAEL,EAAE,KAAK,CAAC,EAAE8B,GAAG,EAAEzB,EAAEL,EAAE,KAAK,CAAC,EAAE+B,GAAG,EAAE1B,EAAEL,EAAE,KAAK,CAAC,EAAEgC,GAAG,EAAE3B,EAAEL,EAAE,KAAK,CAAC,EAAEiC,GAAG,EAAE5B,EAAEL,EAAE,KAAK,CAAC,EAAEkC,IAAG,EAAE7B,EAAEL,EAAE,KAAK,CAAC,EAAEoC,IAAG,EAAE/B,EAAEL,EAAE,KAAK,CAAC,EAAE6C,GAAEF,GAAEtC,EAAEL,EAAE,KAAK,CAAC,EAAE0C,GAAED,GAAEpC,EAAEL,EAAE,KAAK,CAAC,EAAEwC,GAAED,GAAElC,EAAEL,EAAE,KAAK,CAAC,EAAEsC,GAAED,GAAEhC,EAAEL,EAAE,KAAK,CAAC,EAAEc,GAAE,EAAET,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAEF,EAAEnB,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAED,EAAEjB,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEF,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAED,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEgB,EAAEJ,EAAEuB,GAAE,EAAEnC,EAAE,IAAI,EAAE,EAAEyB,CAAC,EAAEU,GAAEV,EAAEzB,EAAE,GAAG,EAAED,EAAE,KAAK,EAAE6C,GAAE5C,EAAE,IAAI,EAAEE,CAAC,EAAEH,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAED,EAAEa,EAAEP,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAEY,EAAEI,EAAEX,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAEgB,EAAEC,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAEiB,EAAEC,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAEkB,EAAEC,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAEmB,EAAEE,EAAEhB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAEqB,EAAEC,EAAEjB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAEsB,EAAEC,EAAElB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAEuB,EAAEC,EAAEnB,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAEwB,EAAEnB,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEY,EAAEP,EAAEL,EAAE,IAAI,CAAC,EAAEgB,EAAEX,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,IAAI,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAEd,EAAEL,EAAE,IAAI,CAAC,EAAEqB,EAAEhB,EAAEL,EAAE,GAAG,CAAC,EAAEsB,EAAEjB,EAAEL,EAAE,GAAG,CAAC,EAAEuB,EAAElB,EAAEL,GAAG,CAAC,EAAEwB,EAAE,EAAEW,GAAErC,EAAE,EAAEE,CAAC,EAAEmC,GAAErC,EAAE,GAAG,EAAEC,EAAEC,EAAE,GAAG,EAAEyB,CAAC,EAAEU,GAAErC,EAAE,GAAG,EAAE2B,EAAEzB,CAAC,EAAEmC,GAAErC,EAAE,IAAI,EAAE,EAAEC,CAAC,EAAEqB,EAAEpB,EAAE,IAAI,CAAC,CAAC,SAASyD,GAAG3D,EAAEC,EAAEC,EAAE,CAAC,IAAIG,EAAEK,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEI,EAAE,EAAEI,EAAEjB,EAAEiB,EAAE,IAAI,EAAE,EAAE,CAAC,IAAIpB,EAAE,GAAG,OAAO,EAAE,IAAI,CAAC,GAAGS,EAAE,GAAG,EAAEH,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAIY,EAAEJ,EAAER,EAAE,IAAI,CAAC,EAAEQ,EAAER,EAAE,IAAI,CAAC,GAAG,EAAEQ,EAAER,EAAE,IAAI,CAAC,GAAG,GAAGQ,EAAER,EAAE,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAGc,EAAEJ,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGU,GAAGE,EAAE,KAAKD,EAAEH,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK,EAAE,IAAIU,EAAE,EAAE,EAAEA,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEY,EAAER,EAAEJ,EAAE,GAAG,CAAC,EAAEY,IAAI,EAAER,EAAEJ,EAAE,GAAG,CAAC,EAAEY,IAAI,GAAGR,EAAEJ,EAAE,GAAG,CAAC,EAAEY,IAAI,GAAGR,EAAEJ,EAAE,GAAG,CAAC,EAAEU,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,GAAGN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,GAAGA,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGU,GAAGQ,EAAEP,GAAO,EAAEG,IAAP,GAAUH,IAAI,EAAE,cAAc,GAAGA,EAAEA,GAAGH,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK,EAAEU,EAAE,EAAE,EAAEA,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEU,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,GAAGN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,GAAGgB,GAAE1B,EAAEU,EAAEV,EAAE,GAAG,CAAC,EAAEW,GAAGH,EAAER,EAAE,IAAI,CAAC,EAAEQ,EAAER,EAAE,IAAI,CAAC,GAAG,EAAEQ,EAAER,EAAE,IAAI,CAAC,GAAG,GAAGQ,EAAER,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,EAAEI,EAAEJ,EAAE,IAAI,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,IAAI,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,IAAI,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,IAAI,CAAC,EAAEW,IAAI,GAAGA,IAAI,GAAG,IAAI,MAAM,EAAEgH,GAAGjH,EAAEV,EAAE,IAAI,EAAEW,CAAC,EAAEC,EAAEJ,EAAER,EAAE,IAAI,CAAC,EAAEQ,EAAER,EAAE,IAAI,CAAC,GAAG,EAAEQ,EAAER,EAAE,IAAI,CAAC,GAAG,GAAGQ,EAAER,EAAE,IAAI,CAAC,GAAG,EAAE,CAACW,EAAEO,EAAEV,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGW,GAAGG,EAAEF,GAAGF,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK,EAAEY,IAAI,EAAED,EAAE,EAAE,EAAEA,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEc,EAAEV,EAAEJ,EAAE,GAAG,CAAC,EAAEc,IAAI,EAAEV,EAAEJ,EAAE,GAAG,CAAC,EAAEc,IAAI,GAAGV,EAAEJ,EAAE,GAAG,CAAC,EAAEc,IAAI,GAAGV,EAAEJ,EAAE,GAAG,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGA,GAAG,EAAEA,KAAK,EAAEO,GAAGR,IAAI,EAAEI,IAAI,EAAEH,IAAI,EAAEO,IAAI,EAAER,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGU,GAAGQ,EAAEP,KAAK,GAAGA,EAAEA,GAAGH,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK,EAAEU,EAAE,EAAE,EAAEA,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEU,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,GAAGN,EAAEJ,EAAE,GAAG,CAAC,EAAEU,IAAI,GAAGF,EAAER,EAAE,IAAI,CAAC,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,KAAKI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAIyH,IAAI9G,EAAEX,EAAE,GAAG,GAAGY,EAAE,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAEc,GAAE1B,EAAEW,CAAC,EAAED,EAAEF,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEF,GAAG,CAAC,EAAEG,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEF,EAAE,GAAG,CAAC,EAAEK,EAAEA,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,EAAE,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEK,EAAEA,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEK,EAAEA,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEK,EAAEA,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEK,EAAEA,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEK,EAAEA,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEK,EAAEA,EAAEF,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,EAAEQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGQ,EAAER,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEF,EAAE,IAAI,CAAC,EAAEK,EAAEiH,GAAG1H,EAAEI,EAAEH,CAAC,EAAEsH,GAAGxH,EAAE,EAAE,EAAEwH,GAAG7G,EAAE,GAAG,EAAEA,EAAE,CAAC,CAAC,OAAOW,EAAEjB,EAAG,KAAI,EAAEM,CAAC,CAAC8H,GAAE,EAAGnI,GAAG,CAAA,CAACa,GAAE,KAAK,KAAK,IAAI,IAAI,EAAEb,GAAC,CAAE,CAAC,SAASsD,GAAG5D,EAAEC,EAAEC,EAAE,CAACF,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAE,IAAIG,EAAEC,EAAEI,EAAEC,EAAE,EAAEC,EAAE,EAAEU,EAAEjB,EAAEiB,EAAE,IAAI,EAAEf,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEM,EAAEJ,EAAE,IAAI,EAAEA,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAE,IAAI,EAAEA,EAAEF,EAAE,KAAK,CAAC,EAAEM,EAAEA,EAAEJ,EAAE,IAAI,EAAEA,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAE,IAAI,EAAEA,EAAEF,EAAE,KAAK,CAAC,EAAEM,EAAEA,EAAEJ,EAAE,IAAI,EAAEA,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAE,IAAI,EAAEA,EAAEF,EAAE,KAAK,CAAC,EAAEM,EAAEJ,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEM,EAAEJ,EAAE,IAAI,EAAEA,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAE,IAAI,EAAEA,EAAEF,EAAE,KAAK,CAAC,EAAEM,EAAEA,EAAEH,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEM,EAAEA,EAAEH,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEM,EAAEA,EAAEH,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAE,EAAEN,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEM,EAAEA,EAAEH,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEM,EAAE+H,GAAGxI,EAAEG,EAAE,IAAI,EAAEM,EAAEN,EAAG,KAAI,CAAC,EAAE0B,GAAE7B,CAAC,EAAEU,EAAEL,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEO,EAAEA,EAAEL,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEO,EAAEA,EAAEL,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEO,EAAEA,EAAEL,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,GAAG,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEO,EAAEL,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEO,EAAEJ,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEF,EAAE,IAAI,CAAC,EAAEO,EAAEA,EAAEJ,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEF,EAAE,IAAI,CAAC,EAAEO,EAAEA,EAAEJ,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEE,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGS,EAAEF,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGA,EAAEO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEO,EAAEL,EAAEF,EAAE,IAAI,CAAC,EAAEC,EAAEC,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEsI,GAAGhI,EAAEN,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAE8B,GAAE7B,CAAC,EAAED,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEM,EAAEJ,EAAEF,EAAE,KAAK,CAAC,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEM,EAAEJ,EAAEF,EAAE,KAAK,CAAC,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEM,EAAEJ,EAAEF,EAAE,KAAK,CAAC,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,EAAE,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEM,EAAEJ,EAAEF,EAAE,KAAK,CAAC,EAAED,EAAE,EAAEJ,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,EAAE,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,EAAE,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,EAAE,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGuH,GAAGtH,EAAE,EAAE,EAAEoB,EAAEjB,EAAE,IAAI,CAAC,CAAC,SAASwD,GAAG7D,EAAE,CAAC,IAAIC,EAAEC,EAAEG,EAAEC,EAAE,EAAEI,EAAEE,EAAEE,EAAEI,EAAEC,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,IAAIH,EAAErB,EAAEqB,EAAE,KAAK,EAAE2F,GAAGzF,EAAEvB,EAAE,IAAI,EAAED,CAAC,EAAEoB,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,GAAG,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAE,GAAGgB,EAAEvB,EAAG,KAAI,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEgB,GAAG,CAAC,EAAEhB,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,KAAK,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,KAAK,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,KAAK,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,KAAK,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,KAAK,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEA,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEM,EAAEP,EAAE,IAAI,CAAC,EAAEO,EAAEN,EAAE,KAAK,CAAC,EAAEmB,EAAEoE,GAAGnE,EAAEpB,EAAE,IAAI,EAAEsB,EAAEtB,EAAE,IAAI,CAAC,EAAEoC,GAAEjB,EAAEnB,EAAE,IAAI,EAAEoB,EAAEnB,EAAED,EAAE,IAAI,CAAC,EAAEoC,GAAEpC,EAAE,IAAI,EAAEI,EAAEJ,EAAE,IAAI,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEoC,GAAEpC,EAAE,IAAI,EAAEK,EAAEJ,CAAC,EAAEmC,GAAEpC,EAAE,IAAI,EAAEoB,EAAEhB,CAAC,EAAEsE,GAAGtD,EAAED,EAAEI,CAAC,EAAEa,GAAEd,EAAEF,EAAEnB,CAAC,EAAEmC,GAAEzB,EAAEX,EAAE,IAAI,EAAEI,EAAEC,CAAC,EAAE+B,GAAEvB,EAAEb,EAAE,IAAI,EAAEK,EAAEJ,CAAC,EAAEmC,GAAEnB,EAAEjB,EAAE,IAAI,EAAEoB,EAAEhB,CAAC,EAAE4G,GAAGjH,EAAEC,EAAE,IAAI,EAAEsB,CAAC,EAAEoD,GAAGtD,EAAED,EAAEpB,CAAC,EAAEqC,GAAEd,EAAEF,EAAEnB,CAAC,EAAEmC,GAAEzB,EAAEP,EAAEC,CAAC,EAAE+B,GAAEvB,EAAER,EAAEJ,CAAC,EAAEmC,GAAEnB,EAAEG,EAAEhB,CAAC,EAAE4G,GAAGjH,EAAEC,EAAE,IAAI,EAAEsB,CAAC,EAAEoD,GAAGtD,EAAED,EAAEpB,CAAC,EAAEqC,GAAEd,EAAEF,EAAEnB,CAAC,EAAEmC,GAAEzB,EAAEP,EAAEC,CAAC,EAAE+B,GAAEvB,EAAER,EAAEJ,CAAC,EAAEmC,GAAEnB,EAAEG,EAAEhB,CAAC,EAAE4G,GAAGjH,EAAEC,EAAE,KAAK,EAAEsB,CAAC,EAAEoD,GAAGtD,EAAED,EAAEpB,CAAC,EAAEqC,GAAEd,EAAEF,EAAEnB,CAAC,EAAEmC,GAAEzB,EAAEP,EAAEC,CAAC,EAAE+B,GAAEvB,EAAER,EAAEJ,CAAC,EAAEmC,GAAEnB,EAAEG,EAAEhB,CAAC,EAAE4G,GAAGjH,EAAEC,EAAE,KAAK,EAAEsB,CAAC,EAAEoD,GAAGtD,EAAED,EAAEpB,CAAC,EAAEqC,GAAEd,EAAEF,EAAEnB,CAAC,EAAEmC,GAAEzB,EAAEP,EAAEC,CAAC,EAAE+B,GAAEvB,EAAER,EAAEJ,CAAC,EAAEmC,GAAEnB,EAAEG,EAAEhB,CAAC,EAAE4G,GAAGjH,EAAEC,EAAE,KAAK,EAAEsB,CAAC,EAAEoD,GAAGtD,EAAED,EAAEpB,CAAC,EAAEqC,GAAEd,EAAEF,EAAEnB,CAAC,EAAEmC,GAAEzB,EAAEP,EAAEC,CAAC,EAAE+B,GAAEvB,EAAER,EAAEJ,CAAC,EAAEmC,GAAEnB,EAAEG,EAAEhB,CAAC,EAAE4G,GAAGjH,EAAEC,EAAE,KAAK,EAAEsB,CAAC,EAAEoD,GAAGtD,EAAED,EAAEpB,CAAC,EAAEqC,GAAEd,EAAEF,EAAEnB,CAAC,EAAEmC,GAAEzB,EAAEP,EAAEC,CAAC,EAAE+B,GAAEvB,EAAER,EAAEJ,CAAC,EAAEmC,GAAEnB,EAAEG,EAAEhB,CAAC,EAAE4G,GAAGhH,EAAE,KAAK,EAAEsB,CAAC,EAAEhB,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,GAAG,CAAC,EAAE,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAE,EAAEwH,GAAGxH,EAAE,GAAG,EAAE,EAAE,EAAE,EAAEkB,EAAElB,EAAE,IAAI,EAAE,EAAEA,EAAE,KAAK,EAAES,EAAET,EAAE,KAAK,EAAEuB,EAAEvB,EAAE,GAAG,EAAEsB,EAAEtB,EAAE,GAAG,EAAED,EAAE,IAAIoB,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,GAAGc,EAAEpB,EAAE,KAAK,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEc,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,GAAGc,EAAEpB,EAAE,KAAK,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEc,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,GAAGc,EAAEpB,EAAE,KAAK,IAAI,CAAC,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEM,EAAEc,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEb,EAAEN,EAAE,IAAI,CAAC,EAAEM,GAAGc,EAAEpB,EAAE,KAAK,IAAI,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEc,EAAE,GAAG,CAAC,EAAED,EAAEA,EAAEb,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,MAAM,CAAC,EAAEM,EAAEN,GAAG,CAAC,EAAEM,EAAEN,EAAE,MAAM,CAAC,EAAEmB,EAAEA,EAAEb,EAAEgB,EAAE,IAAI,CAAC,EAAEhB,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEgB,EAAE,IAAI,CAAC,EAAEhB,EAAEG,EAAE,IAAI,CAAC,EAAEU,EAAEA,EAAEb,EAAEgB,EAAE,IAAI,CAAC,EAAEhB,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEgB,EAAE,IAAI,CAAC,EAAEhB,EAAEG,EAAE,IAAI,CAAC,EAAEU,EAAEA,EAAEb,EAAEgB,EAAE,IAAI,CAAC,EAAEhB,EAAEG,EAAE,IAAI,CAAC,EAAEH,EAAEgB,EAAE,IAAI,CAAC,EAAEhB,EAAEG,EAAE,IAAI,CAAC,EAAEU,EAAEA,EAAEb,EAAEgB,EAAE,IAAI,CAAC,EAAEhB,EAAEG,EAAE,GAAG,CAAC,EAAEH,EAAEgB,EAAE,GAAG,CAAC,EAAEhB,EAAEG,EAAE,IAAI,CAAC,EAAEU,EAAEA,EAAEb,EAAEgB,EAAE,GAAG,CAAC,EAAEhB,EAAEG,GAAG,CAAC,EAAEH,EAAEgB,GAAG,CAAC,EAAEhB,EAAEG,EAAE,GAAG,CAAC,EAAEU,EAAEA,EAAEb,EAAEiB,EAAE,IAAI,CAAC,EAAEjB,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAEiB,EAAE,IAAI,CAAC,EAAEjB,EAAE,EAAE,IAAI,CAAC,EAAEa,EAAEA,EAAEb,EAAEiB,EAAE,IAAI,CAAC,EAAEjB,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAEiB,EAAE,IAAI,CAAC,EAAEjB,EAAE,EAAE,IAAI,CAAC,EAAEa,EAAEA,EAAEb,EAAEiB,EAAE,IAAI,CAAC,EAAEjB,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAEiB,EAAE,IAAI,CAAC,EAAEjB,EAAE,EAAE,IAAI,CAAC,EAAEa,EAAEA,EAAEb,EAAEiB,EAAE,IAAI,CAAC,EAAEjB,EAAE,EAAE,GAAG,CAAC,EAAEA,EAAEiB,EAAE,GAAG,CAAC,EAAEjB,EAAE,EAAE,IAAI,CAAC,EAAEa,EAAEA,EAAEb,EAAEiB,EAAE,GAAG,CAAC,EAAEjB,EAAE,GAAG,CAAC,EAAEA,EAAEiB,GAAG,CAAC,EAAEjB,EAAE,EAAE,GAAG,CAAC,EAAEa,EAAEA,EAAEpB,EAAEyB,EAAErB,EAAEJ,EAAE,MAAM,CAAC,EAAEwF,GAAGnE,EAAEpB,EAAE,IAAI,EAAEA,EAAE,KAAK,CAAC,GAAG,EAAEwB,GAAG,GAAGY,GAAErC,EAAEC,EAAE,IAAI,EAAEoB,EAAEnB,CAAC,EAAEmC,GAAEzB,EAAEP,EAAEC,CAAC,EAAE+B,GAAEvB,EAAER,EAAEJ,CAAC,EAAEmC,GAAEnB,EAAEG,EAAEhB,CAAC,EAAEsE,GAAGtD,EAAErB,GAAGC,EAAE,IAAI,GAAGU,IAAG,IAAIc,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAEA,IAAI,IAAIY,GAAErC,EAAEC,EAAE,IAAI,EAAEoB,EAAEpB,EAAE,IAAI,EAAEC,CAAC,EAAEmC,GAAEzB,EAAEP,EAAEC,CAAC,EAAE+B,GAAEvB,EAAER,EAAEJ,CAAC,EAAEmC,GAAEnB,EAAEG,EAAEhB,CAAC,EAAEuE,GAAGvD,EAAErB,GAAGC,EAAE,IAAI,GAAGU,IAAG,EAAEc,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,GAAGY,GAAEpC,EAAED,EAAEC,EAAE,IAAI,EAAEC,CAAC,EAAEmC,GAAEd,EAAElB,EAAEC,CAAC,EAAE+B,GAAEb,EAAElB,EAAEJ,CAAC,EAAEmC,GAAElB,EAAEnB,EAAEK,CAAC,EAAEL,EAAEoB,EAAE,EAAE,EAAEA,GAAG,CAAC,OAAOwG,GAAG5H,EAAEC,EAAE,IAAI,EAAEA,CAAC,EAAED,EAAE4I,GAAG5I,EAAE,EAAE,EAAEsB,EAAErB,EAAE,KAAK,EAAED,CAAC,CAAC,SAAS8D,GAAG9D,EAAEC,EAAEC,EAAEG,EAAEC,EAAE,CAAC,IAAIC,EAAEG,EAAE,EAAE,EAAEI,EAAEI,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEtB,GAAE,EAAEuB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAE,GAAG1C,GAAGmC,GAAEhC,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEH,EAAE,GAAG,CAAC,GAAG,EAAEG,EAAEH,EAAE,GAAG,CAAC,GAAG,GAAGG,EAAEH,EAAE,GAAG,CAAC,GAAG,GAAGqC,GAAElC,EAAEH,EAAE,EAAE,CAAC,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,EAAEG,EAAEH,EAAE,GAAG,CAAC,GAAG,GAAGG,EAAEH,EAAE,GAAG,CAAC,GAAG,GAAGoC,GAAEjC,EAAE,EAAEH,CAAC,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGsC,GAAEnC,EAAEH,EAAE,EAAE,CAAC,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGG,EAAEH,EAAE,EAAE,CAAC,GAAG,KAAKmC,GAAE,WAAWC,GAAE,WAAWC,GAAE,WAAWC,GAAE,WAAWtC,EAAEE,EAAEC,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG8B,EAAEtB,EAAEF,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGkC,GAAE,EAAE5B,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGyB,EAAEa,GAAET,EAAE,EAAEvB,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG+B,EAAES,GAAEL,GAAEvB,EAAEN,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGiC,EAAEhB,EAAEV,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAG2B,EAAET,EAAEX,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGA,EAAEmB,EAAEZ,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGkC,GAAEQ,GAAElB,EAAEJ,EAAEb,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGwB,EAAEJ,EAAEd,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAG2B,EAAEN,EAAEf,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGA,EAAEsB,EAAEhB,EAAE,EAAEN,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAG4B,EAAEW,IAAG,EAAEnC,GAAG,EAAE,KAAKgC,GAAEwF,GAAG5H,EAAEiC,GAAE,EAAE,CAAC,EAAEE,GAAEO,GAAEkF,GAAGxF,GAAEH,GAAE,EAAE,CAAC,EAAEH,EAAEhB,GAAE8G,GAAGzH,EAAEyB,EAAE,EAAE,CAAC,EAAEL,EAAEoB,GAAEiF,GAAG9G,GAAEc,EAAE,EAAE,CAAC,EAAEI,EAAEY,GAAEgF,GAAG9G,GAAE6B,GAAE,EAAE,EAAE,EAAExC,EAAEkC,GAAEuF,GAAGnG,EAAEI,EAAE,EAAE,CAAC,EAAEL,EAAEE,EAAEkG,GAAGvF,GAAEZ,EAAE,EAAE,CAAC,EAAEC,EAAEF,EAAEoG,GAAGlG,EAAEW,GAAE,EAAE,EAAE,EAAER,EAAEJ,EAAEmG,GAAGlG,EAAEF,EAAE,EAAE,EAAE,EAAEC,EAAEF,EAAEqG,GAAG7H,EAAEgC,EAAE,EAAE,CAAC,EAAEG,GAAE/B,EAAEyC,GAAEgF,GAAGnG,EAAEF,EAAE,EAAE,CAAC,EAAEO,EAAE8F,GAAGzH,EAAEsB,EAAE,EAAE,CAAC,EAAEiB,GAAER,GAAE0F,GAAGzH,EAAE2B,EAAE,EAAE,EAAE,EAAEP,EAAEE,EAAEmG,GAAG9F,EAAEI,GAAE,EAAE,EAAE,EAAET,EAAEE,EAAEiG,GAAGrG,EAAEQ,EAAE,EAAE,CAAC,EAAEJ,EAAEJ,EAAEqG,GAAGjG,EAAEJ,EAAE,EAAE,EAAE,EAAExB,EAAEA,EAAE6H,GAAGrG,EAAEI,EAAE,EAAE,EAAE,EAAEI,EAAEF,EAAE+F,GAAG7H,EAAEqC,GAAE,EAAE,CAAC,EAAEZ,EAAEQ,EAAE4F,GAAG/F,EAAE9B,EAAE,EAAE,CAAC,EAAE4C,GAAER,GAAEyF,GAAG/F,EAAEG,EAAE,EAAE,EAAE,EAAEI,GAAEL,EAAE6F,GAAG5F,EAAEG,GAAE,EAAE,EAAE,EAAEpC,EAAEC,EAAE4H,GAAGxF,GAAEM,GAAE,EAAE,EAAE,EAAE1C,EAAEwB,EAAEoG,GAAG5H,EAAE0C,GAAE,EAAE,EAAE,EAAET,GAAElC,EAAE6H,GAAGpG,EAAEV,GAAE,EAAE,CAAC,EAAES,EAAEG,EAAEkG,GAAG7H,EAAEyB,EAAE,EAAE,CAAC,EAAEE,EAAEH,EAAEqG,GAAG7H,EAAE2B,EAAE,EAAE,EAAE,EAAEZ,GAAEmB,GAAE2F,GAAGlG,EAAEH,EAAE,EAAE,EAAE,EAAEC,EAAEI,EAAEgG,GAAGjF,GAAEC,GAAE,EAAE,EAAE,EAAEhB,EAAE5B,EAAE4H,GAAGhG,EAAES,GAAE,EAAE,CAAC,EAAErC,EAAE2B,EAAEiG,GAAG5H,EAAE4B,EAAE,EAAE,CAAC,EAAED,EAAEH,EAAEoG,GAAG5H,EAAE2B,EAAE,EAAE,EAAE,EAAEU,GAAET,EAAEgG,GAAGjG,EAAEH,EAAE,EAAE,EAAE,EAAEI,GAAG,GAAGiB,GAAEA,GAAE,EAAE,KAAK,EAAEzC,IAAI,CAACA,EAAEqB,EAAEa,GAAE,EAAEpC,EAAEJ,EAAE,GAAG,CAAC,EAAEM,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGA,EAAE8B,GAAE,EAAE,EAAEhC,EAAEJ,EAAE,GAAG,CAAC,EAAEM,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGA,EAAE0B,EAAEtB,EAAE,EAAEN,EAAEJ,EAAE,GAAG,CAAC,EAAEM,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,EAAEF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGF,EAAEJ,EAAE,GAAG,CAAC,EAAEM,IAAI,GAAGD,EAAEA,EAAEE,EAAE,EAAEH,EAAEJ,EAAE,GAAG,CAAC,EAAEK,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGA,EAAE0B,EAAE,EAAE,EAAE3B,EAAEJ,EAAE,GAAG,CAAC,EAAEK,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGA,EAAE4B,EAAES,GAAE,EAAEtC,EAAEJ,EAAE,GAAG,CAAC,EAAEK,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGA,EAAEgC,GAAEvB,EAAE,EAAEV,EAAEJ,EAAE,GAAG,CAAC,EAAEK,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGA,EAAE6B,EAAEhB,EAAE,EAAEd,EAAEJ,EAAE,GAAG,CAAC,EAAEK,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGA,EAAEuB,EAAET,EAAE,EAAEf,EAAEJ,EAAE,GAAG,CAAC,EAAEK,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGJ,EAAEA,EAAEmB,EAAE,EAAEhB,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEkC,GAAEQ,GAAE,EAAEvC,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEwB,EAAEJ,EAAE,EAAEjB,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEyB,EAAEJ,EAAE,EAAElB,EAAEJ,EAAE,GAAG,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAE4B,EAAEN,EAAE,EAAEnB,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,GAAG,CAAC,EAAEC,IAAI,GAAGA,EAAEC,EAAEsB,EAAE,EAAEpB,EAAEJ,EAAE,EAAE,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGA,EAAE6B,EAAEW,GAAE,EAAErC,EAAE,EAAEJ,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,EAAE,CAAC,EAAEC,IAAI,EAAE,CAAC,SAAS8D,GAAG/D,EAAE,CAAC,IAAIC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAE,EAAE,EAAEM,EAAE,EAAEI,EAAE,EAAE,EAAE,GAAGlB,GAAG,EAAE,CAACM,GAAGF,EAAEJ,EAAE,EAAE,IAAIA,EAAE,IAAIC,EAAEM,EAAEP,EAAE,GAAG,CAAC,IAAI,EAAEC,EAAE,GAAG,EAAE,EAAEA,GAAG,CAAmB,GAAf,EAAE,EAAEA,KAAeG,EAAEA,GAAGH,EAAEM,EAAEH,GAAG,CAAC,GAAG,KAAK,EAAEM,GAAE,IAAI,EAAE,MAAM,EAAEV,EAAEA,EAAEC,EAAE,EAAEC,EAAE,CAACE,EAAE,CAACC,EAAE,CAAC,GAAGE,EAAE,IAAI,IAAI,EAAEH,GAAG,CAAC,GAAGF,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEH,IAAI,GAAG,IAAI,CAAC,IAAI,GAAGI,EAAEE,EAAEH,EAAE,GAAG,CAAC,MAAM,EAAEF,GAAG,MAAMG,EAAES,EAAE,MAAMI,EAAEX,EAAE,IAAI,EAAEuH,GAAG,GAAG7H,IAAI,EAAE,CAAC,EAAEM,EAAEO,GAAG,CAAC,EAAEI,EAAE,MAAMjB,CAAC,CAAC,GAAG,EAAEM,EAAEH,EAAE,IAAI,CAAC,GAAG,EAAEF,KAAK,EAAEE,GAAG,CAACH,EAAEM,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEN,EAAE,IAAI,CAAC,EAAEC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAED,EAAE,MAAMC,CAAC,CAAC,GAAGG,EAAEE,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAEG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAEC,EAAEE,EAAEH,EAAE,IAAI,CAAC,GAAG,MAAMA,EAAEH,EAAEG,EAAE,GAAG,CAAC,CAAC,KAAKI,EAAEP,EAAEA,GAAGC,EAAEG,GAAG,GAAG,GAAGA,EAAEE,EAAEL,EAAE,IAAI,CAAC,KAAKD,EAAEC,EAAE,GAAG,EAAEG,EAAEE,EAAEL,EAAE,IAAI,CAAC,IAAI,CAACK,EAAEC,GAAG,CAAC,EAAE,EAAE,MAAMN,CAAC,CAAC,GAAG,EAAE,EAAED,EAAEM,EAAED,EAAE,GAAG,CAAC,GAAG,MAAML,EAAE,OAAOM,EAAE,IAAI,EAAEP,EAAEO,EAAED,EAAE,GAAG,CAAC,EAAE,GAAGL,EAAEM,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEJ,EAAE,KAAKO,EAAED,GAAG,CAAC,EAAEN,EAAE,CAACO,EAAEF,EAAE,IAAI,CAAC,EAAEH,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEG,EAAE,MAAMJ,CAAC,CAACC,EAAE,CAAC,CAAC,GAAG,EAAE,CAACD,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEF,EAAE,CAAC,GAAGK,GAAGF,EAAE,OAAOJ,GAAG,GAAG,IAAI,CAAC,IAAI,EAAEG,GAAG,CAAC,GAAGG,EAAEF,GAAG,CAAC,EAAEH,EAAEA,EAAE,MAAMA,EAAEY,EAAE,MAAMI,EAAEX,EAAE,IAAI,EAAEuH,GAAG,GAAG7H,CAAC,EAAEM,EAAEO,GAAG,CAAC,EAAEI,EAAE,MAAMjB,CAAC,CAAC,GAAGM,EAAE,GAAGA,EAAE,EAAE,IAAI,CAAC,IAAI,EAAEH,GAAG,GAAG,KAAK,CAAC,EAAEF,EAAE,CAACA,EAAE,MAAMD,CAAC,CAACM,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAGD,EAAEM,EAAEH,EAAE,IAAI,CAAC,KAAKG,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEC,IAAID,EAAEM,EAAEH,EAAE,IAAI,CAAC,KAAKG,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEC,EAAE,CAAC,CAAC,GAAG,EAAEE,IAAI,GAAGE,IAAI,IAAI,GAAGL,EAAEM,EAAED,EAAE,GAAG,CAAC,GAAG,CAACL,EAAE,CAACC,EAAE,CAACE,EAAE,CAACC,EAAE,CAAC,GAAG,EAAE,EAAEJ,GAAG,CAAC,IAAI,EAAEK,IAAIC,EAAE,IAAI,EAAE,CAAC,GAAGA,EAAE,IAAI,EAAEH,EAAEJ,EAAEO,EAAE,IAAI,EAAEP,EAAE,EAAEO,EAAE,IAAI,EAAEP,EAAEO,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEJ,EAAEO,EAAE,IAAI,IAAI,EAAEH,GAAG,MAAM,EAAE,OAAOG,EAAE,IAAI,EAAE,EAAE,KAAKA,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAED,IAAIC,EAAE,IAAI,EAAE,OAAOA,EAAE,IAAI,EAAEH,EAAEJ,EAAEO,EAAE,IAAI,EAAEP,EAAE,EAAEO,EAAE,IAAI,EAAEP,EAAEO,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEJ,EAAE,KAAKO,EAAEP,EAAEI,GAAG,CAAC,EAAEJ,GAAG,GAAGA,GAAG,GAAGC,GAAGD,EAAE,EAAEE,EAAEK,EAAED,EAAE,IAAI,CAAC,EAAEL,IAAI,GAAG,IAAI,CAAC,IAAI,GAAGI,EAAEE,EAAED,EAAE,GAAG,CAAC,MAAM,EAAEJ,GAAG,CAACY,EAAE,MAAMI,EAAEX,EAAE,IAAI,EAAEuH,GAAG,GAAG7H,IAAI,EAAE,CAAC,EAAEM,EAAEO,GAAG,CAAC,EAAEI,EAAE,MAAMhB,CAAC,CAACK,EAAEF,EAAE,IAAI,CAAC,EAAEH,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEG,EAAE,MAAMH,CAAC,CAAC,GAAG,EAAEK,EAAED,EAAE,IAAI,CAAC,GAAG,EAAEJ,KAAK,EAAEI,GAAG,CAACL,EAAEM,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAEC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAED,EAAE,MAAMG,CAAC,CAAC,GAAGC,EAAEE,EAAED,EAAE,IAAI,CAAC,EAAEL,EAAEK,EAAE,GAAG,MAAM,CAAC,GAAG,EAAED,EAAEE,EAAED,EAAE,IAAI,CAAC,GAAG,MAAMD,EAAEJ,EAAEK,EAAE,GAAG,CAAC,CAAC,KAAKE,EAAEP,EAAEA,GAAGC,EAAEG,GAAG,GAAG,GAAGA,EAAEE,EAAEL,EAAE,IAAI,CAAC,KAAKD,EAAEC,EAAE,GAAG,EAAEG,EAAEE,EAAEL,EAAE,IAAI,CAAC,IAAI,CAACK,EAAEC,GAAG,CAAC,EAAE,EAAE,MAAMJ,CAAC,CAACG,EAAED,EAAE,GAAG,CAAC,EAAE,GAAGL,EAAEM,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEJ,EAAEO,EAAEP,EAAEI,GAAG,CAAC,EAAEJ,EAAE,MAAMC,CAAC,CAACC,EAAE,CAAC,CAAC,GAAG,EAAE,CAACD,EAAEM,EAAED,EAAE,IAAI,CAAC,EAAEF,EAAE,CAAC,IAAI,EAAEE,IAAIC,GAAGF,EAAE,OAAOJ,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAGM,EAAEF,GAAG,CAAC,EAAEH,EAAEA,EAAE,MAAME,EAAEU,EAAE,MAAMI,EAAEX,EAAE,IAAI,EAAEuH,GAAG,GAAG7H,CAAC,EAAEM,EAAEO,GAAG,CAAC,EAAEI,EAAE,MAAMhB,CAAC,CAAC,GAAGK,EAAE,IAAI,EAAED,IAAIC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAEL,EAAE,CAACA,EAAE,MAAMA,CAAC,CAACK,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAGD,EAAEM,EAAED,EAAE,IAAI,CAAC,KAAKC,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEC,IAAID,EAAEM,EAAED,EAAE,IAAI,CAAC,KAAKC,EAAEL,EAAE,IAAI,CAAC,EAAED,EAAEM,EAAEN,EAAE,IAAI,CAAC,EAAEC,EAAE,CAAC,CAAC,GAAGK,EAAEH,EAAE,GAAG,CAAC,EAAE,EAAEJ,EAAEO,EAAEP,EAAEI,GAAG,CAAC,EAAEJ,EAAEO,EAAE,IAAI,IAAI,EAAEH,GAAG,OAAO,KAAKG,EAAE,IAAI,EAAEP,EAAE,CAAC,GAAGA,IAAI,GAAG,IAAI,OAAOC,EAAE,OAAO,GAAGD,GAAG,GAAGK,EAAEE,EAAE,IAAI,IAAIP,EAAE,IAAIA,IAAI,IAAIA,EAAEO,EAAEN,EAAE,GAAG,CAAC,GAAGM,EAAE,IAAI,EAAEP,EAAEK,EAAEL,EAAEC,GAAGM,EAAEN,EAAE,GAAG,CAAC,EAAEG,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEI,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEH,EAAE,KAAKM,EAAEH,EAAE,GAAG,CAAC,EAAEJ,GAAGE,EAAE,GAAGF,IAAI,GAAG,WAAWE,EAAE,KAAKF,IAAI,IAAIC,EAAEW,GAAEZ,IAAI,EAAE,CAAC,GAAG,IAAIC,GAAG,GAAG,GAAG,GAAGM,EAAEH,EAAE,IAAI,CAAC,EAAEF,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAE,EAAEI,EAAE,OAAON,GAAG,GAAG,EAAED,EAAE,CAACC,EAAE,CAAC,IAAID,EAAEM,EAAE,IAAI,IAAIF,EAAE,GAAGH,GAAG,CAAC,IAAIA,EAAEF,KAAS,EAAEE,IAAP,GAAU,IAAIA,IAAI,EAAE,GAAG,GAAGD,EAAEM,EAAEC,GAAG,CAAC,IAAI,CAAC,GAAGH,EAAEJ,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,KAAK,EAAED,GAAG,MAAME,EAAE,GAAGD,EAAEC,IAAI,GAAG,EAAEA,IAAI,EAAE,EAAED,EAAEM,GAAGC,EAAE,KAAK,EAAEP,GAAGI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAACH,EAAE,GAAGD,EAAEI,CAAC,MAAME,EAAE,IAAI,EAAEN,EAAEI,EAAEH,EAAE,GAAGD,EAAEO,EAAEH,EAAED,EAAEE,EAAEF,EAAEJ,EAAE,EAAE,MAAMC,CAAC,CAACA,EAAEM,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEN,EAAE,IAAI,CAAC,EAAEG,EAAEF,EAAE,EAAEM,EAAEH,EAAE,EAAE,EAAEC,EAAE,EAAEN,EAAE,EAAE,CAACO,EAAEC,GAAG,CAAC,EAAEJ,EAAEG,EAAEL,EAAEE,GAAG,CAAC,EAAEH,EAAEM,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEE,EAAEP,EAAEI,GAAG,CAAC,EAAEE,EAAEN,EAAEO,EAAE,IAAI,EAAE,EAAE,EAAEA,EAAE,IAAI,EAAEP,GAAG,EAAE,CAAC,CAAC,CAAC,SAASgE,GAAGhE,EAAEC,EAAEC,EAAEE,EAAEC,EAAEK,EAAEC,EAAEC,EAAEE,EAAE,CAAC,IAAII,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAE,GAAG1B,EAAE,KAAK,EAAE,WAAWU,IAAI,EAAE,GAAGX,EAAE,OAAO,CAAC2B,EAAET,EAAEI,EAAEA,EAAEJ,EAAEA,EAAE,IAAI,IAAI,EAAE,CAACjB,EAAE,GAAG,EAAE,EAAE,EAAEG,EAAEC,GAAGH,GAAG,CAACF,IAAIwB,EAAE,IAAIvB,GAAG,GAAG,OAAO,GAAG,IAAI,EAAE,EAAEA,EAAE,IAAIU,IAAID,GAAGT,IAAI,GAAG,IAAI,CAAC,GAAGA,EAAE,CAAC,GAAG,CAACS,EAAE,MAAMT,EAAEW,GAAGO,EAAE,WAAWX,EAAEI,EAAE,EAAE,CAAC,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEI,EAAE,GAAG,CAAC,GAAG,IAAIQ,EAAE,aAAaZ,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEI,EAAE,GAAG,CAAC,GAAG,IAAID,EAAE,aAAaH,EAAE,EAAEI,CAAC,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,GAAGJ,EAAEI,EAAE,EAAE,CAAC,GAAG,IAAIA,EAAE,YAAYJ,EAAEI,EAAE,EAAE,CAAC,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,GAAGJ,EAAEI,EAAE,EAAE,CAAC,GAAG,MAAMO,EAAE,UAAUC,EAAE,YAAYT,EAAE,YAAYC,EAAE,YAAYE,GAAGO,EAAE,WAAWb,EAAEM,EAAE,EAAE,CAAC,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,GAAGN,EAAEM,EAAE,GAAG,CAAC,GAAG,IAAIS,EAAE,YAAYf,EAAEM,EAAE,GAAG,CAAC,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,GAAGN,EAAEM,EAAE,GAAG,CAAC,GAAG,IAAIW,EAAE,WAAWjB,EAAE,EAAEM,CAAC,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,GAAGN,EAAEM,EAAE,EAAE,CAAC,GAAG,IAAIA,EAAE,WAAWN,EAAEM,EAAE,EAAE,CAAC,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,GAAGN,EAAEM,EAAE,EAAE,CAAC,GAAG,MAAMO,EAAE,UAAUE,EAAE,WAAWE,EAAE,UAAUX,EAAE,WAAW2G,GAAGvG,EAAG,KAAI,EAAE,EAAE,GAAG,EAAEX,EAAEW,EAAE,IAAI,CAAC,EAAEG,EAAEd,EAAEW,EAAE,IAAI,CAAC,EAAEK,EAAEhB,EAAEW,EAAE,IAAI,CAAC,EAAEO,EAAElB,EAAEW,EAAE,IAAI,CAAC,EAAEJ,EAAEP,EAAEW,EAAE,IAAI,CAAC,EAAEC,EAAEZ,EAAEW,EAAE,IAAI,CAAC,EAAEE,EAAEb,EAAEW,EAAE,IAAI,CAAC,EAAEP,EAAEJ,EAAEW,EAAE,IAAI,CAAC,EAAEN,EAAEL,EAAEW,EAAE,IAAI,CAAC,EAAE,WAAWX,EAAEW,EAAE,IAAI,CAAC,EAAE,YAAYX,EAAEW,EAAE,IAAI,CAAC,EAAE,UAAUX,EAAEW,EAAE,IAAI,CAAC,EAAE,WAAWX,EAAEW,EAAE,GAAG,CAAC,EAAE,YAAYX,EAAEW,EAAE,IAAI,CAAC,EAAE,YAAYX,EAAEW,GAAG,CAAC,EAAE,YAAYjB,GAAG,EAAEuB,GAAGjB,EAAEW,EAAE,GAAG,CAAC,EAAEjB,IAAI,GAAG,WAAWwH,IAAI9G,EAAEO,EAAE,IAAI,GAAGjB,EAAE,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE0H,GAAGhH,EAAED,EAAET,CAAC,EAAE0H,GAAGzG,EAAE,GAAG,EAAEP,EAAE,GAAG,EAAEJ,EAAEW,EAAE,KAAK,CAAC,EAAE,IAAIsG,GAAG7G,EAAE,GAAG,EAAEV,EAAE,GAAG,MAAMW,GAAGO,EAAE,WAAWX,EAAEI,EAAE,EAAE,CAAC,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEI,EAAE,GAAG,CAAC,GAAG,IAAIQ,EAAE,aAAaZ,EAAEI,EAAE,GAAG,CAAC,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,EAAEJ,EAAEI,EAAE,GAAG,CAAC,GAAG,GAAGJ,EAAEI,EAAE,GAAG,CAAC,GAAG,IAAIF,EAAE,YAAYF,EAAEI,EAAE,EAAE,CAAC,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,GAAGJ,EAAEI,EAAE,EAAE,CAAC,GAAG,IAAIX,EAAE,aAAaO,EAAE,EAAEI,CAAC,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,EAAEJ,EAAEI,EAAE,EAAE,CAAC,GAAG,GAAGJ,EAAEI,EAAE,EAAE,CAAC,GAAG,MAAMO,EAAE,UAAUC,EAAE,YAAYV,EAAE,WAAWT,EAAE,aAAaa,GAAGO,EAAE,WAAWb,EAAEM,EAAE,EAAE,CAAC,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,GAAGN,EAAEM,EAAE,GAAG,CAAC,GAAG,IAAIS,EAAE,YAAYf,EAAEM,EAAE,GAAG,CAAC,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,EAAEN,EAAEM,EAAE,GAAG,CAAC,GAAG,GAAGN,EAAEM,EAAE,GAAG,CAAC,GAAG,IAAIF,EAAE,WAAWJ,EAAEM,EAAE,EAAE,CAAC,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,GAAGN,EAAEM,EAAE,EAAE,CAAC,GAAG,IAAIH,EAAE,WAAWH,EAAE,EAAEM,CAAC,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,EAAEN,EAAEM,EAAE,EAAE,CAAC,GAAG,GAAGN,EAAEM,EAAE,EAAE,CAAC,GAAG,MAAMO,EAAE,UAAUE,EAAE,WAAWX,EAAE,UAAUD,EAAE,WAAW8G,GAAGvG,EAAG,KAAI,EAAE,EAAE,GAAG,EAAEX,EAAEW,EAAE,IAAI,CAAC,EAAEG,EAAEd,EAAEW,EAAE,IAAI,CAAC,EAAEK,EAAEhB,EAAEW,EAAE,IAAI,CAAC,EAAEP,EAAEJ,EAAEW,EAAE,IAAI,CAAC,EAAEN,EAAEL,EAAEW,EAAE,IAAI,CAAC,EAAEC,EAAEZ,EAAEW,EAAE,IAAI,CAAC,EAAEE,EAAEb,EAAEW,EAAE,IAAI,CAAC,EAAEjB,EAAEM,EAAEW,EAAE,IAAI,CAAC,EAAER,EAAEH,EAAEW,EAAE,IAAI,CAAC,EAAE,WAAWX,EAAEW,EAAE,IAAI,CAAC,EAAE,YAAYX,EAAEW,EAAE,IAAI,CAAC,EAAE,UAAUX,EAAEW,EAAE,IAAI,CAAC,EAAE,WAAWX,EAAEW,EAAE,GAAG,CAAC,EAAE,YAAYX,EAAEW,EAAE,IAAI,CAAC,EAAE,YAAYX,EAAEW,GAAG,CAAC,EAAE,WAAWM,EAAEjB,EAAEW,EAAE,GAAG,CAAC,EAAE,WAAWjB,EAAE,EAAEC,EAAE,GAAGE,EAAEC,EAAE,IAAIS,EAAEI,EAAE,IAAI,EAAEN,EAAEM,EAAE,GAAG,IAAI,CAAC,GAAGP,EAAEV,EAAEW,EAAE,EAAE,CAACP,EAAED,IAAI,IAAIM,EAAE,IAAIT,EAAE,KAAK,EAAE,CAAC0H,GAAGhH,EAAET,EAAEE,CAAC,EAAEG,EAAEW,EAAE,KAAK,CAAC,EAAEd,EAAEG,EAAEW,EAAE,KAAK,CAAC,EAAE,MAAMhB,CAAC,CAAC,GAAGyH,GAAGhH,EAAET,EAAEQ,CAAC,EAAEH,EAAEW,EAAE,KAAK,CAAC,EAAER,EAAEH,EAAEW,EAAE,KAAK,CAAC,EAAEC,EAAElB,EAAEM,EAAEW,EAAE,IAAI,CAAC,EAAEjB,GAAGmB,GAAGT,EAAEJ,EAAEW,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,IAAIjB,EAAE,EAAE,EAAEA,EAAEM,EAAEW,EAAE,IAAI,CAAC,EAAEE,EAAEb,EAAEW,EAAE,IAAI,CAAC,EAAEjB,EAAEA,EAAEM,EAAEW,EAAE,IAAI,CAAC,EAAEjB,GAAGkB,EAAER,GAAO,EAAEQ,IAAP,GAAUR,IAAI,EAAE,cAAc,GAAGA,EAAEA,EAAEJ,EAAEW,EAAE,IAAI,CAAC,EAAE,KAAK,EAAEjB,EAAE,EAAE,EAAEA,EAAEM,EAAEW,EAAE,IAAI,CAAC,EAAEP,EAAEJ,EAAEW,EAAE,IAAI,CAAC,EAAEjB,EAAEyB,GAAER,EAAEN,CAAC,EAAE+G,GAAG/G,EAAEE,EAAE,GAAG,EAAEb,EAAEM,EAAEW,EAAE,KAAK,CAAC,EAAE,IAAI,EAAEX,EAAEW,EAAE,KAAK,CAAC,EAAEjB,EAAEC,EAAEA,EAAEQ,EAAE,EAAE,GAAGL,EAAEA,GAAGD,IAAI,EAAEM,IAAI,GAAG,IAAIN,EAAEA,EAAEM,EAAE,IAAI,KAAK,CAACiD,GAAGzC,EAAElB,EAAEwB,CAAC,EAAEF,EAAEK,EAAE,MAAM,CAAC,CAAC8G,GAAE,EAAGnI,IAAG,CAACN,EAAE,CAAC,CAAC,OAAOA,CAAC,CAAC,SAASiE,GAAGjE,EAAEC,EAAEC,EAAEG,EAAEC,EAAEI,EAAEE,EAAE,CAAC,IAAIE,EAAEI,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,GAAGC,EAAER,EAAEQ,EAAE,IAAI,EAAEJ,EAAEiB,GAAE,EAAE,EAAE,CAAC5B,EAAEO,EAAE,IAAI,CAAC,EAAE,EAAEP,EAAEO,EAAE,IAAI,CAAC,EAAE,EAAEP,EAAEO,EAAE,IAAI,CAAC,EAAE,EAAEP,EAAEO,EAAE,IAAI,CAAC,EAAE,EAAEP,EAAEO,EAAE,IAAI,CAAC,EAAE,GAAGP,EAAEO,EAAE,IAAI,CAAC,EAAER,EAAEC,EAAEO,EAAE,IAAI,CAAC,EAAET,EAAEE,EAAEO,EAAE,IAAI,CAAC,EAAEZ,EAAEK,EAAEO,EAAE,GAAG,CAAC,EAAE,GAAGP,EAAEO,EAAE,GAAG,CAAC,EAAEI,EAAEX,EAAEO,EAAE,IAAI,CAAC,EAAE,EAAEP,EAAEO,EAAE,IAAI,CAAC,EAAE,EAAEP,EAAEO,EAAE,IAAI,CAAC,EAAE,EAAEP,EAAEO,EAAE,IAAI,CAAC,EAAEb,EAAEM,EAAEO,EAAE,IAAI,CAAC,EAAEd,EAAE,EAAE,GAAGA,EAAEiD,GAAEnC,EAAE,EAAE,EAAEF,CAAC,EAAE4G,GAAGtG,EAAE,EAAE,MAAM,CAAC,GAAGR,EAAE,CAACS,EAAEL,EAAE,EAAE,EAAEQ,EAAEhB,EAAEgB,EAAE,GAAG,EAAEtB,EAAE,IAAIC,EAAE,CAACC,EAAE,CAACE,EAAE,OAAOQ,EAAE,EAAE,EAAC,CAAE,IAAK,GAAEZ,EAAEQ,EAAE,IAAI,EAAEA,EAAE,IAAI,GAAG,EAAEA,EAAE,IAAI,GAAG,GAAGA,EAAE,IAAI,GAAG,GAAGP,EAAEO,EAAE,IAAI,EAAEA,EAAE,IAAI,GAAG,EAAEA,EAAE,IAAI,GAAG,GAAGA,EAAE,IAAI,GAAG,GAAGJ,EAAE,EAAEM,CAAC,EAAET,EAAEG,EAAEM,EAAE,EAAE,CAAC,EAAET,IAAI,EAAEG,EAAEM,EAAE,EAAE,CAAC,EAAET,IAAI,GAAGG,EAAEM,EAAE,EAAE,CAAC,EAAET,IAAI,GAAGG,EAAEM,EAAE,EAAE,CAAC,EAAEV,EAAEI,EAAEM,EAAE,EAAE,CAAC,EAAEV,IAAI,EAAEI,EAAEM,EAAE,EAAE,CAAC,EAAEV,IAAI,GAAGI,EAAEM,EAAE,EAAE,CAAC,EAAEV,IAAI,GAAGA,EAAEQ,EAAE,IAAI,EAAEA,EAAE,IAAI,GAAG,EAAEA,EAAE,IAAI,GAAG,GAAGA,EAAE,IAAI,GAAG,GAAGP,EAAEO,EAAE,IAAI,EAAEA,EAAE,IAAI,GAAG,EAAEA,EAAE,IAAI,GAAG,GAAGA,EAAE,IAAI,GAAG,GAAGJ,EAAEM,EAAE,EAAE,CAAC,EAAET,EAAEG,EAAEM,EAAE,EAAE,CAAC,EAAET,IAAI,EAAEG,EAAEM,EAAE,EAAE,CAAC,EAAET,IAAI,GAAGG,EAAEM,EAAE,EAAE,CAAC,EAAET,IAAI,GAAGG,EAAEM,EAAE,EAAE,CAAC,EAAEV,EAAEI,EAAEM,EAAE,GAAG,CAAC,EAAEV,IAAI,EAAEI,EAAEM,EAAE,GAAG,CAAC,EAAEV,IAAI,GAAGI,EAAEM,EAAE,GAAG,CAAC,EAAEV,IAAI,GAAGE,EAAE,IAAID,EAAE,GAAG,MAAMC,EAAE,IAAK,GAAE,MAAME,EAAE,QAAQ,MAAMH,CAAC,CAACD,EAAEQ,EAAE,IAAI,EAAEA,EAAE,IAAI,GAAG,EAAEA,EAAE,IAAI,GAAG,GAAGA,EAAE,IAAI,GAAG,GAAGP,EAAEO,EAAE,IAAI,EAAEA,EAAE,IAAI,GAAG,EAAEA,EAAE,IAAI,GAAG,GAAGA,EAAE,IAAI,GAAG,GAAGJ,EAAE,EAAEM,CAAC,EAAET,EAAEG,EAAEM,EAAE,EAAE,CAAC,EAAET,IAAI,EAAEG,EAAEM,EAAE,EAAE,CAAC,EAAET,IAAI,GAAGG,EAAEM,EAAE,EAAE,CAAC,EAAET,IAAI,GAAGG,EAAEM,EAAE,EAAE,CAAC,EAAEV,EAAEI,EAAEM,EAAE,EAAE,CAAC,EAAEV,IAAI,EAAEI,EAAEM,EAAE,EAAE,CAAC,EAAEV,IAAI,GAAGI,EAAEM,EAAE,EAAE,CAAC,EAAEV,IAAI,GAAGA,EAAEQ,EAAE,IAAI,EAAEA,EAAE,IAAI,GAAG,EAAEA,EAAE,IAAI,GAAG,GAAGA,EAAE,IAAI,GAAG,GAAGJ,EAAEM,EAAE,EAAE,CAAC,EAAEV,EAAEI,EAAEM,EAAE,EAAE,CAAC,EAAEV,IAAI,EAAEI,EAAEM,EAAE,GAAG,CAAC,EAAEV,IAAI,GAAGI,EAAEM,EAAE,GAAG,CAAC,EAAEV,IAAI,GAAGE,EAAE,IAAID,EAAE,EAAE,CAAC,GAAG,EAAED,EAAEqI,GAAGlH,CAAC,GAAG,GAAGf,EAAEE,EAAE,GAAG,CAAC,EAAE,EAAEF,EAAEE,EAAE,GAAG,CAAC,EAAE,GAAGF,EAAEE,EAAE,GAAG,CAAC,EAAE,IAAIJ,EAAEA,EAAE,IAAI,KAAK,IAAIF,EAAE6I,GAAGvI,EAAE,GAAG,CAAC,KAAK,EAAEN,EAAE,YAAYC,EAAE0H,GAAG1H,EAAES,EAAE,EAAEJ,EAAE,GAAG,EAAEN,EAAE,EAAE,CAAC,GAAGoB,EAAElB,EAAEF,EAAE,KAAK,EAAE,EAAEA,EAAE,QAAQ,CAAC,IAAII,EAAE,GAAGQ,EAAEZ,EAAEC,EAAE,EAAE,EAAE,GAAGG,EAAEQ,EAAE,EAAE,CAAC,EAAE,IAAIR,EAAEQ,EAAE,EAAE,CAAC,EAAE,GAAGR,EAAEQ,EAAE,EAAE,CAAC,EAAE,EAAEZ,EAAEO,EAAEY,EAAE,IAAI,CAAC,EAAElB,EAAE,GAAGC,EAAED,EAAEI,GAAGL,IAAI,GAAG,GAAG,EAAEI,EAAE,GAAGiB,GAAGpB,EAAEA,EAAE,EAAE,IAAIK,EAAE,GAAG,GAAG,EAAE,EAAEN,EAAEW,GAAEN,EAAE,EAAE,EAAE,GAAG,EAAEL,IAAI,EAAE,MAAMA,EAAEK,EAAEJ,IAAI,CAAC,GAAG0H,GAAG3H,EAAEM,EAAE,GAAG,EAAEe,EAAEpB,EAAE,GAAGC,EAAE,CAAC,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,EAAE,GAAGA,EAAEmB,EAAE,EAAE,KAAK,IAAIpB,EAAE6I,GAAG7I,CAAC,KAAK,EAAEA,EAAE,YAAYE,EAAEyH,GAAG/G,EAAE,EAAE,EAAEN,EAAE,GAAG,EAAEN,EAAE,EAAE,CAAC,GAAGoB,EAAEnB,EAAED,EAAE,KAAK,EAAE,EAAEA,EAAE,QAAQ,CAAC,IAAII,EAAE,GAAGQ,EAAEZ,EAAEE,EAAE,EAAE,EAAE,GAAGE,EAAEQ,EAAE,EAAE,CAAC,EAAE,IAAIR,EAAEQ,EAAE,EAAE,CAAC,EAAE,GAAGR,EAAEQ,EAAE,EAAE,CAAC,EAAE,EAAEZ,EAAEO,EAAEY,EAAE,IAAI,CAAC,EAAElB,EAAE,GAAGC,EAAED,EAAEI,GAAGL,IAAI,GAAG,GAAG,EAAEI,EAAE,GAAGiB,GAAGpB,EAAEA,EAAE,EAAE,IAAIK,EAAE,GAAG,GAAG,EAAE,EAAEN,EAAEW,GAAEN,EAAE,EAAE,EAAE,GAAG,EAAEL,IAAI,EAAE,MAAMA,EAAEK,EAAEJ,IAAI,CAAC,GAAG0H,GAAG3H,EAAEM,EAAE,GAAG,EAAEe,EAAEpB,EAAE,GAAGC,EAAE,CAAC,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,EAAE,GAAGA,EAAEmB,EAAE,EAAE,KAAK,IAAIpB,EAAE6I,GAAG7I,CAAC,KAAK,EAAEA,EAAE,YAAYE,EAAEyH,GAAG/G,EAAE,EAAE,EAAEN,EAAE,GAAG,EAAEN,EAAE,EAAE,CAAC,GAAGoB,EAAEnB,EAAED,EAAE,KAAK,EAAE,EAAEA,EAAE,QAAQ,CAAC,IAAII,EAAE,GAAGQ,EAAEZ,EAAEE,EAAE,EAAE,EAAE,GAAGE,EAAEQ,EAAE,EAAE,CAAC,EAAE,IAAIR,EAAEQ,EAAE,EAAE,CAAC,EAAE,GAAGR,EAAEQ,EAAE,EAAE,CAAC,EAAE,EAAEZ,EAAEO,EAAEY,EAAE,IAAI,CAAC,EAAElB,EAAE,GAAGC,EAAED,EAAEI,GAAGL,IAAI,GAAG,GAAG,EAAEI,EAAE,GAAGiB,GAAGpB,EAAEA,EAAE,EAAE,IAAIK,EAAE,GAAG,GAAG,EAAE,EAAEN,EAAEW,GAAEN,EAAE,EAAE,EAAE,GAAG,EAAEL,IAAI,EAAE,MAAMA,EAAEK,EAAEJ,IAAI,CAAC0H,GAAG3H,EAAEM,EAAE,GAAG,EAAEe,EAAEpB,EAAE,GAAGC,EAAE,CAAC,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,EAAE,GAAGA,EAAEmB,EAAE,EAAE,KAAK,IAAIpB,EAAE6I,GAAG7I,CAAC,KAAK,EAAEA,EAAE,KAAKE,EAAEyH,GAAG/G,EAAE,EAAE,EAAEN,EAAE,GAAG,EAAEN,EAAE,EAAE,CAAC,GAAGK,EAAEJ,EAAED,EAAE,KAAK,EAAE,EAAEA,EAAE,KAAKI,EAAE,GAAGJ,EAAEA,EAAEE,EAAE,EAAE,EAAE,GAAGE,EAAEJ,EAAE,EAAE,CAAC,EAAE,EAAE2G,GAAG1G,EAAED,EAAE,EAAE,EAAEE,EAAEG,EAAE,EAAE,EAAEE,EAAEY,EAAE,IAAI,CAAC,EAAEZ,EAAEY,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGnB,EAAE,KAAKK,GAAGA,EAAEH,IAAIA,EAAE2I,GAAG5I,CAAC,GAAG,KAAK,EAAE,IAAIG,EAAE,GAAGJ,EAAEC,EAAEC,EAAE,EAAE,EAAE,GAAGE,EAAEJ,EAAE,EAAE,CAAC,EAAE,EAAEA,EAAE2G,GAAG3G,EAAE,EAAE,EAAEK,EAAE,EAAE,EAAEE,EAAEY,GAAG,CAAC,EAAEZ,EAAEY,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,MAAMnB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGsB,EAAEhB,EAAE,GAAG,EAAEN,EAAE,CAACwH,GAAGtG,EAAE,EAAE,EAAEsG,GAAG9G,EAAE,GAAG,EAAEV,EAAE,IAAI,MAAM,CAAC,CAAC,CAACwH,GAAGtG,EAAE,EAAE,EAAElB,EAAE,CAAC,CAAC+D,GAAG7C,CAAC,CAAC,MAAMlB,EAAE,IAAI,OAAOsB,EAAER,EAAG,KAAI,EAAEd,CAAC,CAAC,SAASkE,GAAGlE,EAAEC,EAAE,CAAC,IAAIC,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEZ,EAAEF,EAAEC,EAAE,EAAE,EAAE,CAACA,EAAE,GAAG,EAAE,GAAGG,EAAEG,EAAEP,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAEI,GAAG,MAAM,EAAEH,GAAGG,EAAEG,EAAEP,GAAG,CAAC,GAAGC,EAAE,EAAEC,EAAE,CAACE,EAAE,CAACC,EAAE,CAAC,IAAI,GAAGL,EAAEA,EAAEI,EAAE,KAAKG,EAAE,IAAI,EAAE,CAAC,GAAGF,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAEI,IAAI,GAAG,IAAI,CAAC,IAAI,GAAGE,EAAEC,EAAEP,EAAE,GAAG,CAAC,MAAM,EAAEK,GAAG,MAAMA,EAAEM,EAAE,MAAMG,EAAEP,EAAE,IAAI,EAAEuH,GAAG,GAAG1H,IAAI,EAAE,CAAC,EAAEG,EAAEI,GAAG,CAAC,EAAEG,EAAE,MAAMb,CAAC,CAAC,GAAGO,EAAED,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEA,KAAK,EAAEK,GAAG,CAACD,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAED,EAAE,MAAMF,CAAC,CAAC,GAAGI,EAAEC,EAAEP,EAAE,IAAI,CAAC,EAAEI,EAAEJ,EAAE,GAAG,MAAM,CAAC,GAAG,EAAEM,EAAEC,EAAEP,EAAE,IAAI,CAAC,GAAG,MAAMI,EAAEA,EAAEJ,EAAE,GAAG,CAAC,CAAC,KAAKU,EAAEN,EAAEA,GAAGC,EAAEC,GAAG,GAAG,GAAGA,EAAEC,EAAEF,EAAE,IAAI,CAAC,KAAKD,EAAEC,EAAE,GAAG,EAAEC,EAAEC,EAAEF,EAAE,IAAI,CAAC,IAAI,CAACE,EAAEG,GAAG,CAAC,EAAE,EAAE,MAAMR,CAAC,CAAC,GAAG,EAAE,EAAEE,EAAEG,EAAEL,EAAE,GAAG,CAAC,GAAG,MAAMD,EAAE,OAAOM,EAAE,IAAI,EAAEN,EAAEM,EAAEL,EAAE,GAAG,CAAC,EAAE,GAAGE,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEC,EAAE,KAAKM,EAAEL,GAAG,CAAC,EAAED,EAAE,CAACM,EAAED,EAAE,IAAI,CAAC,EAAED,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEC,EAAE,MAAML,CAAC,CAACI,EAAE,CAAC,CAAC,GAAGG,EAAE,CAACJ,EAAEG,EAAEP,EAAE,IAAI,CAAC,EAAEE,EAAE,CAAC,GAAGK,GAAGD,EAAE,OAAOF,GAAG,GAAG,IAAI,CAAC,IAAI,EAAEJ,GAAG,CAAC,GAAGO,EAAED,GAAG,CAAC,EAAED,EAAEA,EAAE,MAAMH,EAAES,EAAE,MAAMG,EAAEP,EAAE,IAAI,EAAEuH,GAAG,GAAG1H,CAAC,EAAEG,EAAEI,GAAG,CAAC,EAAEG,EAAE,MAAMb,CAAC,CAAC,GAAGM,EAAEC,GAAGD,EAAEC,EAAE,IAAI,CAAC,IAAI,EAAER,GAAG,GAAG,KAAK,CAAC,EAAEK,EAAE,CAACA,EAAE,MAAMJ,CAAC,CAACM,EAAEF,EAAE,IAAI,CAAC,EAAEG,GAAGJ,EAAEG,EAAEP,EAAE,IAAI,CAAC,KAAKO,EAAEF,EAAE,IAAI,CAAC,EAAED,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEC,IAAID,EAAEG,EAAEP,EAAE,IAAI,CAAC,KAAKO,EAAEF,EAAE,IAAI,CAAC,EAAED,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAE,CAAC,CAACJ,EAAE,CAACC,EAAE,CAACE,EAAE,CAACC,EAAE,CAAC,GAAG,EAAE,GAAGD,EAAEG,EAAEL,EAAE,GAAG,CAAC,IAAI,CAAC,GAAGK,EAAE,IAAI,IAAI,EAAEL,GAAG,CAAC,GAAGK,EAAE,IAAI,EAAEP,EAAEC,EAAEM,EAAE,IAAI,EAAEN,EAAE,EAAEM,EAAE,IAAI,EAAEN,EAAEM,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEC,EAAEM,EAAE,IAAI,IAAI,EAAEP,GAAG,MAAM,EAAE,OAAOO,EAAE,IAAI,EAAE,EAAE,KAAKA,EAAE,IAAI,EAAE,EAAE,CAAC,GAAGA,EAAE,IAAI,IAAI,EAAEL,GAAG,OAAOK,EAAE,IAAI,EAAEP,EAAEC,EAAEM,EAAE,IAAI,EAAEN,EAAE,EAAEM,EAAE,IAAI,EAAEN,EAAEM,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEC,EAAE,KAAKM,EAAEP,EAAEC,GAAG,CAAC,EAAEA,GAAG,GAAGA,GAAG,GAAGG,GAAGH,EAAE,EAAEI,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEE,IAAI,GAAG,IAAI,CAAC,IAAI,GAAGE,EAAEC,EAAEL,EAAE,GAAG,CAAC,MAAM,EAAEG,GAAG,CAACM,EAAE,MAAMG,EAAEP,EAAE,IAAI,EAAEuH,GAAG,GAAG1H,IAAI,EAAE,CAAC,EAAEG,EAAEI,GAAG,CAAC,EAAEG,EAAE,MAAMZ,CAAC,CAACK,EAAED,EAAE,IAAI,CAAC,EAAED,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAEC,EAAE,MAAMJ,CAAC,CAAC,GAAGM,EAAED,EAAEL,EAAE,IAAI,CAAC,GAAG,EAAEG,KAAK,EAAEH,GAAG,CAACE,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEE,EAAEF,EAAE,GAAG,CAAC,EAAED,EAAE,MAAMA,CAAC,CAAC,GAAGE,EAAEC,EAAEL,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,GAAG,MAAM,CAAC,GAAG,EAAEI,EAAEC,EAAEL,EAAE,IAAI,CAAC,GAAG,MAAMG,EAAED,EAAEF,EAAE,GAAG,CAAC,CAAC,KAAKQ,EAAEN,EAAEA,GAAGC,EAAEC,GAAG,GAAG,GAAGA,EAAEC,EAAEF,EAAE,IAAI,CAAC,KAAKD,EAAEC,EAAE,GAAG,EAAEC,EAAEC,EAAEF,EAAE,IAAI,CAAC,IAAI,CAACE,EAAEG,GAAG,CAAC,EAAE,EAAE,MAAMN,CAAC,CAACG,EAAEL,EAAE,GAAG,CAAC,EAAE,GAAGE,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEC,EAAEM,EAAEP,EAAEC,GAAG,CAAC,EAAEA,EAAE,MAAMA,CAAC,CAACI,EAAE,CAAC,CAAC,GAAGG,EAAE,CAACJ,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEE,EAAE,CAAC,GAAGG,GAAGD,EAAE,OAAOF,GAAG,GAAG,IAAI,CAAC,IAAI,EAAEF,GAAG,CAAC,GAAGK,EAAED,GAAG,CAAC,EAAED,EAAEA,EAAE,MAAMD,EAAEO,EAAE,MAAMG,EAAEP,EAAE,IAAI,EAAEuH,GAAG,GAAG1H,CAAC,EAAEG,EAAEI,GAAG,CAAC,EAAEG,EAAE,MAAMZ,CAAC,CAAC,GAAGK,EAAEC,GAAGD,EAAEC,EAAE,IAAI,CAAC,IAAI,EAAEN,GAAG,GAAG,KAAK,CAAC,EAAEG,EAAE,CAACA,EAAE,MAAMH,CAAC,CAACK,EAAEF,EAAE,IAAI,CAAC,EAAEG,GAAGJ,EAAEG,EAAEL,EAAE,IAAI,CAAC,KAAKK,EAAEF,EAAE,IAAI,CAAC,EAAED,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEC,IAAID,EAAEG,EAAEL,EAAE,IAAI,CAAC,KAAKK,EAAEF,EAAE,IAAI,CAAC,EAAED,EAAEG,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAE,CAAC,CAAC,GAAGE,EAAEP,EAAE,GAAG,CAAC,EAAE,EAAEC,EAAEM,EAAEP,EAAEC,GAAG,CAAC,EAAEA,EAAEM,EAAE,IAAI,IAAI,EAAEP,GAAG,OAAO,KAAKO,EAAE,IAAI,EAAEN,EAAE,CAAC,GAAGA,IAAI,GAAG,IAAI,OAAOG,EAAE,OAAO,GAAGH,GAAG,GAAGI,EAAEE,EAAE,IAAI,IAAIN,EAAE,IAAIA,IAAI,IAAIA,EAAEM,EAAEH,EAAE,GAAG,CAAC,GAAGG,EAAE,IAAI,EAAEN,EAAEI,EAAEJ,EAAEG,GAAGG,EAAEH,EAAE,GAAG,CAAC,EAAEJ,EAAEO,EAAEN,EAAE,IAAI,CAAC,EAAED,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEI,EAAE,KAAKG,EAAEP,EAAE,GAAG,CAAC,EAAEC,GAAGI,EAAE,GAAGJ,IAAI,GAAG,WAAWI,EAAE,KAAKJ,IAAI,IAAIG,EAAEQ,GAAEX,IAAI,EAAE,CAAC,GAAG,IAAIG,GAAG,GAAG,GAAG,GAAGG,EAAEP,EAAE,IAAI,CAAC,EAAEK,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEI,EAAE,OAAOC,GAAG,GAAG,EAAEJ,EAAE,CAAC,IAAIK,EAAEC,EAAE,IAAI,IAAIG,EAAE,GAAGL,GAAG,CAAC,IAAIA,EAAEJ,KAAS,EAAEI,IAAP,GAAU,IAAIA,IAAI,EAAE,GAAG,GAAGD,EAAEG,EAAEH,GAAG,CAAC,IAAI,CAAC,GAAGE,EAAEF,GAAG,GAAGG,EAAEH,EAAE,GAAG,CAAC,KAAK,EAAEH,GAAG,MAAMA,EAAE,GAAGG,EAAEC,IAAI,GAAG,EAAEA,IAAI,EAAE,EAAED,EAAEG,EAAE,IAAIG,EAAEJ,GAAG,EAAEF,GAAG,IAAI,CAAC,GAAG,KAAK,CAACG,EAAEG,EAAE,IAAI,CAAC,EAAEV,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEM,CAAC,MAAMC,EAAE,IAAI,EAAED,EAAEI,EAAEH,EAAEH,GAAG,CAAC,EAAEJ,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEI,EAAE,OAAOG,EAAEP,EAAE,IAAI,CAAC,EAAEA,EAAE,KAAKO,EAAEP,EAAE,GAAG,CAAC,EAAEA,EAAE,CAACC,EAAEM,EAAED,EAAE,GAAG,CAAC,EAAEC,EAAEN,EAAE,IAAI,CAAC,EAAED,EAAEO,EAAED,EAAE,GAAG,CAAC,EAAEN,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEM,EAAEC,EAAEP,EAAE,GAAG,CAAC,EAAEC,CAAC,CAAC,CAAC,SAASkE,GAAGnE,EAAEC,EAAE,CAAC,IAAIC,EAAEG,EAAE,EAAEC,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,OAAOZ,EAAEpB,EAAEoB,EAAE,IAAI,EAAEjB,EAAE,GAAGK,EAAEF,EAAEP,EAAE,GAAG,CAAC,EAAEK,EAAEE,EAAE,EAAEP,CAAC,EAAE,KAAK,KAAK,IAAI,CAACS,EAAE,EAAEF,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,KAAK,EAAE,IAAIK,KAAK,EAAEA,EAAEI,IAAI,KAAKoE,GAAGpE,EAAER,EAAE,IAAI,EAAED,CAAC,EAAE6C,GAAE5C,EAAE,IAAI,EAAEQ,CAAC,EAAET,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAED,EAAEI,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEG,EAAEC,EAAEC,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEI,EAAEK,EAAEJ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAES,EAAEC,EAAEL,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEU,EAAEE,EAAEP,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEY,EAAEI,EAAEX,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEgB,EAAEC,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEiB,EAAEC,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEkB,EAAEC,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEmB,EAAEyB,GAAEvB,EAAErB,EAAE,IAAI,EAAEwB,EAAExB,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAED,EAAEM,EAAEL,EAAE,KAAK,CAAC,EAAEG,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAEI,EAAEC,EAAEL,EAAE,KAAK,CAAC,EAAES,EAAEJ,EAAEL,EAAE,KAAK,CAAC,EAAEU,EAAEL,EAAEL,EAAE,KAAK,CAAC,EAAEY,EAAEP,EAAEL,EAAE,KAAK,CAAC,EAAEgB,EAAEX,EAAEL,EAAE,KAAK,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,KAAK,CAAC,EAAEmB,EAAE,EAAEyB,GAAEzC,EAAEH,EAAE,GAAG,EAAES,EAAET,EAAE,IAAI,CAAC,EAAEmC,GAAEpC,EAAEC,EAAE,GAAG,EAAE,KAAKqB,CAAC,EAAEjB,EAAEC,EAAEL,EAAE,IAAI,CAAC,EAAEU,EAAEL,EAAEL,EAAE,IAAI,CAAC,EAAEY,EAAEP,EAAEL,EAAE,KAAK,CAAC,EAAEgB,EAAEX,EAAEL,EAAE,IAAI,CAAC,EAAEiB,EAAEZ,EAAEL,EAAE,KAAK,CAAC,EAAEkB,EAAEb,EAAEL,EAAE,IAAI,CAAC,EAAEmB,EAAEd,EAAEL,EAAE,KAAK,CAAC,EAAEqB,EAAEhB,EAAEL,EAAE,IAAI,CAAC,EAAEsB,EAAEjB,EAAEL,EAAE,KAAK,CAAC,EAAEuB,EAAElB,EAAEL,EAAE,IAAI,CAAC,EAAEyB,EAAEpB,EAAEL,EAAE,KAAK,CAAC,EAAE0B,EAAErB,EAAEL,EAAE,IAAI,CAAC,EAAE2B,EAAEtB,EAAEL,EAAE,KAAK,CAAC,EAAE4B,EAAEvB,EAAEL,EAAE,IAAI,CAAC,EAAE6B,EAAExB,EAAEL,EAAE,KAAK,CAAC,EAAE8B,EAAEzB,EAAEL,EAAE,IAAI,CAAC,EAAE+B,EAAE1B,EAAEL,EAAE,KAAK,CAAC,EAAEgC,EAAE3B,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAGK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,GAAGK,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAG+B,EAAEC,EAAE,GAAG3B,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAG6B,EAAEC,EAAE,GAAGzB,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAG2B,EAAEC,EAAE,GAAGvB,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAGyB,EAAEC,EAAE,GAAGrB,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAGsB,EAAEC,EAAE,GAAGlB,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAGmB,EAAEE,EAAE,GAAGhB,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAGiB,EAAEC,EAAE,GAAGb,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAGY,EAAEI,EAAE,GAAGX,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAGI,EAAEM,EAAE,GAAGyB,GAAEnC,EAAED,EAAEI,CAAC,EAAEE,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEK,EAAEL,EAAE,KAAK,CAAC,EAAE,EAAEuB,EAAE6D,GAAGhF,EAAEJ,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,CAAC,EAAEmC,GAAErC,EAAEM,EAAEK,CAAC,EAAE0B,GAAEhC,EAAEL,EAAE,GAAG,EAAEM,EAAEN,CAAC,EAAEqC,GAAEhC,EAAEA,EAAEJ,CAAC,EAAEoC,GAAErC,EAAEA,EAAEU,CAAC,EAAEA,EAAEH,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEU,EAAEJ,EAAEC,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEM,EAAEK,EAAEJ,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEW,EAAEC,EAAEL,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEY,EAAEE,EAAEP,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEc,EAAEI,EAAEX,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEkB,EAAEC,EAAEZ,EAAEP,EAAE,IAAI,CAAC,GAAG,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAEmB,EAAEC,EAAEb,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEoB,EAAEC,EAAEd,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,EAAEqB,EAAEE,EAAEhB,EAAEP,GAAG,CAAC,GAAG,EAAEO,EAAEP,GAAG,CAAC,EAAEuB,EAAEqG,GAAGpG,EAAEtB,EAAE,IAAI,EAAEF,CAAC,EAAEC,EAAE,GAAG,EAAEG,EAAEF,EAAE,IAAI,CAAC,GAAG,EAAEK,EAAEP,EAAE,IAAI,CAAC,EAAEU,EAAET,GAAGS,EAAE,EAAEA,GAAGH,EAAEP,EAAE,IAAI,CAAC,EAAEM,EAAEL,GAAGK,EAAE,EAAEA,GAAGC,EAAEP,EAAE,IAAI,CAAC,EAAEW,EAAEV,GAAGU,EAAE,EAAEA,GAAGJ,EAAEP,EAAE,IAAI,CAAC,EAAEY,EAAEX,GAAGW,EAAE,EAAEA,GAAGL,EAAEP,EAAE,IAAI,CAAC,EAAEc,EAAEb,GAAGa,EAAE,EAAEA,GAAGP,EAAEP,EAAE,IAAI,CAAC,EAAEkB,EAAEjB,GAAGiB,EAAE,EAAEA,GAAGX,EAAEP,EAAE,IAAI,CAAC,EAAEmB,EAAElB,GAAGkB,EAAE,EAAEA,GAAGZ,EAAEP,EAAE,GAAG,CAAC,EAAEoB,EAAEnB,GAAGmB,EAAE,EAAEA,GAAGb,EAAEP,EAAE,GAAG,CAAC,EAAEqB,EAAEpB,GAAGoB,EAAE,EAAEA,GAAGd,EAAEP,GAAG,CAAC,EAAEuB,EAAEtB,GAAGsB,EAAE,EAAEA,GAAGc,GAAEhC,EAAEqB,EAAErB,CAAC,EAAEE,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,IAAI,CAAC,EAAE,EAAEO,EAAEP,EAAE,KAAK,CAAC,EAAE,EAAEO,EAAEP,EAAE,KAAK,CAAC,EAAE,EAAEO,EAAEP,EAAE,KAAK,CAAC,EAAE,EAAEO,EAAEP,EAAE,KAAK,CAAC,EAAE,EAAEO,EAAEP,EAAE,KAAK,CAAC,EAAE,EAAEqC,GAAEpC,EAAED,EAAE,IAAI,EAAEA,EAAEK,CAAC,EAAEuH,GAAGpG,EAAEvB,CAAC,EAAED,EAAEQ,EAAEN,EAAE,IAAI,CAAC,EAAE0H,GAAGpG,EAAEnB,CAAC,EAAEA,EAAE,GAAGuI,GAAGpH,EAAE,EAAE,EAAE,EAAEC,EAAE,EAAEzB,GAAG,GAAGsB,EAAEpB,EAAE,IAAI,EAAEG,CAAC,CAAC,SAAS+D,GAAGpE,EAAEC,EAAEC,EAAEG,EAAE,CAAC,IAAIC,EAAE,EAAE,EAAEI,EAAE,EAAEJ,EAAE,EAAEgB,EAAEA,EAAE,EAAE,EAAE,IAAI,IAAIf,EAAE,EAAE,KAAK,CAAC,EAAEN,EAAE,EAAE,GAAGA,IAAI,GAAG,GAAG,CAAC,IAAI,EAAEwE,GAAG/D,EAAE,EAAE,IAAI,EAAE,EAAE,EAAET,CAAC,GAAG,EAAE,MAAM,GAAM,EAAE4G,GAAGnG,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAc,EAAEmG,GAAGnG,EAAER,EAAEG,EAAE,CAAC,GAAG,EAAUmI,GAAG9H,EAAEV,EAAEC,CAAC,CAAC,SAAS,GAAG,EAAEwE,GAAG/D,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAEmG,GAAGnG,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,EAAEmG,GAAGnG,EAAER,EAAEG,EAAE,CAAC,GAAG,IAAI,EAAEmI,GAAG9H,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,GAAGR,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEF,EAAEE,EAAE,EAAE,KAAK,CAAC,EAAEH,EAAE,EAAEJ,CAAC,EAAEK,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,EAAE,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,EAAE,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,EAAE,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,EAAE,CAAC,EAAEE,IAAI,GAAGA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEF,EAAEE,EAAE,EAAE,KAAK,CAAC,EAAEH,EAAEJ,EAAE,EAAE,CAAC,EAAEK,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEF,EAAEE,EAAE,EAAE,KAAK,CAAC,EAAEH,EAAEJ,EAAE,GAAG,CAAC,EAAEK,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEF,EAAEE,EAAE,EAAE,KAAK,CAAC,EAAEH,EAAEJ,EAAE,GAAG,CAAC,EAAEK,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGF,EAAEA,EAAE,GAAG,GAAGC,EAAEA,EAAE,GAAG,KAAK,GAAG,GAAG,OAAO,CAAC,GAAGC,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEL,EAAEA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEL,EAAEA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEL,EAAEG,EAAEE,EAAE,EAAE,KAAK,CAAC,EAAEA,GAAGL,EAAE,EAAG,KAAI,IAAI,CAAC,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAEL,EAAE,GAAG,CAAC,EAAEG,EAAEH,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEL,EAAEA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEL,GAAG,EAAE+F,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG/F,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEF,EAAEE,EAAE,EAAE,KAAK,CAAC,EAAEH,EAAE,EAAEJ,CAAC,EAAEK,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,EAAE,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,EAAE,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,EAAE,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,EAAE,CAAC,EAAEE,IAAI,GAAGA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEF,EAAEE,EAAE,EAAE,KAAK,CAAC,EAAEH,EAAEJ,EAAE,EAAE,CAAC,EAAEK,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEF,EAAEE,EAAE,EAAE,KAAK,CAAC,EAAEH,EAAEJ,EAAE,GAAG,CAAC,EAAEK,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEF,EAAEE,EAAE,EAAE,KAAK,CAAC,EAAEH,EAAEJ,EAAE,GAAG,CAAC,EAAEK,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,GAAG,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGF,EAAEA,EAAE,GAAG,EAAE,GAAGC,EAAEA,EAAE,GAAG,KAAK,EAAE,IAAI,KAAK,CAACC,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEL,EAAEA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEL,EAAEA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEL,EAAEA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEL,EAAEG,EAAEE,EAAE,EAAE,KAAK,CAAC,EAAEA,GAAGL,EAAE,EAAG,KAAI,IAAI,CAAC,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAEL,EAAE,GAAG,CAAC,EAAEG,EAAEH,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEL,EAAEA,EAAEK,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEA,EAAE,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,IAAI,CAAC,EAAEL,GAAG,EAAE+F,GAAG/F,EAAE,EAAE,IAAI,EAAED,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG0H,GAAG3H,EAAEE,EAAED,CAAC,CAAC,CAACuH,GAAG,EAAE,IAAI,EAAE,GAAG,EAAElG,EAAEhB,CAAC,CAAC,SAAS+D,GAAGrE,EAAEC,EAAEC,EAAEG,EAAEC,EAAEM,EAAEE,EAAEI,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAIE,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEtB,EAAE,EAAEuB,GAAE,EAAmE,GAA9DhB,EAAEgG,EAAGpG,EAAE,EAAED,EAAE,CAAC,EAAE,EAAEU,EAAEH,GAAGF,IAAI,GAAG,WAAWK,IAA8B,EAAEd,IAAN,EAASA,IAAI,EAAE,EAAE,OAAOP,EAAE,IAAI,EAAE,GAAG,GAA+F,GAAzFgB,EAAET,EAAE,EAAE,EAAEF,GAAGgB,EAAEhB,EAAE,EAAE,GAAGE,GAAGS,GAAO,EAAEK,IAAP,GAAUL,EAAE,EAAE,EAAEA,KAAK,CAACT,EAAEF,IAAI,GAAG,EAAE,CAAC,EAAE,EAAEE,MAA6B,CAACK,GAAG,CAACD,EAAE,OAAOX,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,UAAUY,IAAI,KAAK,EAAED,IAAI,EAAEA,IAAI,EAAE,WAAW,CAACJ,EAAE,UAAUI,IAAI,KAAK,GAAGN,IAAI,GAAG,GAAGsB,EAAEvB,GAAEsB,EAAEf,GAAG,EAAEC,CAAC,KAAK,GAAGI,GAAGM,EAAElB,GAAEC,EAAEqB,CAAC,GAAGC,EAAE,KAAK,IAAIV,EAAED,KAAK,GAAGA,IAAIO,EAAEZ,GAAG,GAAGK,EAAE,GAAI,KAAI,KAAK,GAAG,CAAC,EAAE,CAAC,GAAGA,IAAI,EAAEb,GAAEV,EAAE,GAAG,CAAC,IAAM2B,EAAE,GAAGmH,GAAG9I,CAAC,EAAasB,EAAEM,EAAEN,EAAE,GAAG,EAAEE,EAAE8G,EAAG1G,EAAE,GAAG,EAAEL,CAAC,EAAEhB,EAAE,IAAI,EAAEiB,EAAEA,EAAEA,EAAE,EAAEjB,EAAEqB,EAAE,IAAI,CAAC,EAAErB,EAAEP,EAAE,GAAG,CAAC,EAAEwB,EAAEjB,EAAEP,GAAG,CAAC,EAAEwB,EAAEjB,EAAEP,EAAE,GAAG,CAAC,EAAEwB,EAAED,EAAE,EAAED,EAAEM,EAAE,GAAG,EAAE,CAACJ,GAAE,MAAM,EAAE,IAAIuH,GAAG9I,EAAEC,EAAEG,EAAEC,EAAE8B,EAAE7B,EAAEP,EAAE,GAAG,CAAC,EAAEkC,CAAC,EAAElB,IAAIa,GAAGL,GAAGW,EAAED,EAAEE,EAAE,GAAGP,EAAE,IAAIX,GAAG,GAAG,GAAGe,EAAE,GAAG,GAAG,EAAE3B,EAAEM,EAAE,EAAE,EAAEoB,EAAEd,GAAG,EAAEmB,EAAEb,EAAEM,EAAE,EAAES,IAAGf,EAAES,EAAE,GAAG,GAAG,IAAI,CAAC,IAAIH,EAAEnB,GAAEsB,EAAEK,CAAC,EAAEF,EAAE,EAAET,EAAE,EAAEtB,GAAGL,EAAE2B,GAAG,GAAGG,EAAE,EAAEvB,EAAEP,EAAEwB,GAAG,CAAC,EAAEhB,EAAE,EAAEH,CAAC,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGkB,GAAGlB,EAAE,EAAEL,GAAGwB,EAAE,EAAEnB,EAAEA,EAAEyB,EAAE,EAAEvB,EAAEgB,GAAG,CAAC,EAAEf,EAAE,EAAEH,CAAC,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGkB,GAAGlB,EAAE,EAAEL,GAAGwB,EAAE,EAAEnB,EAAEA,EAAEyB,EAAE,EAAEvB,EAAEgB,GAAG,CAAC,EAAEf,EAAE,EAAEH,CAAC,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,EAAEG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGG,EAAEH,EAAE,EAAE,CAAC,GAAG,GAAGA,GAAGL,GAAG,IAAIwB,EAAE,EAAExB,EAAEA,EAAE8B,EAAE,EAAEvB,EAAEF,GAAG,CAAC,EAAEG,EAAE,EAAER,CAAC,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,EAAEQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAGQ,EAAER,EAAE,EAAE,CAAC,GAAG,GAAG4B,EAAE,EAAEL,EAAE,GAAG,EAAES,KAAK,GAAGL,EAAEA,EAAE,EAAE,KAAK,CAAC,IAAItB,EAAE,EAAEL,EAAE,EAAE2H,GAAGxF,GAAGxB,GAAEN,EAAE2B,CAAC,GAAG,GAAG,EAAER,EAAES,CAAC,EAAEsC,GAAG/C,EAAEK,EAAEQ,EAAEnB,CAAC,EAAEyG,GAAGxF,GAAGxB,GAAEqB,EAAE,EAAE3B,CAAC,GAAG,GAAG,EAAEwB,EAAEI,CAAC,EAAEsC,GAAG1C,EAAEL,EAAEa,EAAEnB,CAAC,GAAG,EAAEJ,KAAK,GAAGd,GAAGK,EAAEA,EAAE,EAAE,KAAK,EAAE,EAAEL,EAAE,EAAE,EAAEA,IAAIK,IAAI,EAAEO,IAAI,EAAEZ,IAAI,EAAEc,IAAI,GAAG,CAAC,OAAO,CAAC,IAAId,EAAEmC,GAAGxB,GAAEqB,EAAE1B,EAAEC,EAAEgC,IAAG,CAAC,CAAC,GAAG,GAAG,EAAEZ,EAAE,EAAEpB,GAAGmB,GAAGrB,EAAEsB,GAAG,GAAGH,EAAE,IAAI,CAAC,EAAEjB,EAAEmB,GAAG,CAAC,EAAEnB,EAAEP,EAAEK,GAAG,CAAC,EAAEE,GAAGwB,GAAGL,EAAE,EAAErB,GAAGmB,EAAE,IAAI,CAAC,EAAEjB,EAAEwB,GAAG,CAAC,EAAExB,EAAEP,EAAE0B,GAAG,CAAC,EAAEnB,GAAGwB,GAAGL,EAAE,EAAErB,GAAGmB,EAAE,IAAI,CAAC,EAAEjB,EAAEwB,GAAG,CAAC,EAAExB,EAAEP,EAAE0B,GAAG,CAAC,EAAEnB,GAAGmB,GAAGrB,GAAG,IAAImB,EAAE,IAAI,CAAC,EAAEjB,EAAEmB,GAAG,CAAC,EAAEnB,EAAEP,EAAEK,GAAG,CAAC,GAAG,EAAE2B,KAAK,GAAGL,EAAEA,EAAE,EAAE,KAAK,CAAC,IAAI4C,GAAG/C,EAAEK,EAAEQ,EAAEnB,CAAC,EAAElB,EAAEmC,GAAGxB,GAAEqB,EAAE1B,EAAEC,EAAES,GAAG,CAAC,CAAC,GAAG,GAAG,EAAEW,EAAE,EAAEpB,GAAGmB,GAAGrB,EAAEsB,GAAG,GAAGE,EAAE,IAAI,CAAC,EAAEtB,EAAEmB,GAAG,CAAC,EAAEnB,EAAEP,EAAEK,GAAG,CAAC,EAAEE,GAAGwB,GAAGL,EAAE,EAAErB,GAAGwB,EAAE,IAAI,CAAC,EAAEtB,EAAEwB,GAAG,CAAC,EAAExB,EAAEP,EAAE0B,GAAG,CAAC,EAAEnB,GAAGwB,GAAGL,EAAE,EAAErB,GAAGwB,EAAE,IAAI,CAAC,EAAEtB,EAAEwB,GAAG,CAAC,EAAExB,EAAEP,EAAE0B,GAAG,CAAC,EAAEnB,GAAGmB,GAAGrB,GAAG,IAAIwB,EAAE,IAAI,CAAC,EAAEtB,EAAEmB,GAAG,CAAC,EAAEnB,EAAEP,EAAEK,GAAG,CAAC,GAAG,EAAE2B,KAAK,GAAGL,EAAEA,EAAE,EAAE,KAAK,CAAC,GAAG4C,GAAG1C,EAAEL,EAAEa,EAAEnB,CAAC,EAAES,EAAE,EAAE,GAAG,EAAEb,KAAK,GAAGS,GAAGK,EAAEA,EAAE,EAAE,KAAK,EAAE,EAAEL,EAAE,EAAE,EAAEA,IAAIX,IAAI,EAAEgB,IAAI,EAAEd,IAAI,EAAES,IAAI,GAAG,KAAK,CAAC,KAAKlB,GAAGL,EAAE2B,GAAG,GAAGG,EAAE,EAAEP,EAAEhB,EAAEP,EAAEwB,GAAG,CAAC,EAAEpB,EAAE,EAAEC,CAAC,EAAEkB,EAAEnB,EAAEC,EAAE,EAAE,CAAC,EAAEkB,IAAI,EAAEnB,EAAEC,EAAE,EAAE,CAAC,EAAEkB,IAAI,GAAGnB,EAAEC,EAAE,EAAE,CAAC,EAAEkB,IAAI,GAAGlB,GAAGkB,EAAE,EAAEvB,GAAG8B,EAAE,EAAEP,EAAEhB,EAAEgB,EAAEC,GAAG,CAAC,EAAEpB,EAAE,EAAEC,CAAC,EAAEkB,EAAEnB,EAAEC,EAAE,EAAE,CAAC,EAAEkB,IAAI,EAAEnB,EAAEC,EAAE,EAAE,CAAC,EAAEkB,IAAI,GAAGnB,EAAEC,EAAE,EAAE,CAAC,EAAEkB,IAAI,GAAGlB,GAAGkB,EAAE,EAAEvB,GAAG8B,EAAE,EAAEP,EAAEhB,EAAEgB,EAAEC,GAAG,CAAC,EAAEpB,EAAE,EAAEC,CAAC,EAAEkB,EAAEnB,EAAEC,EAAE,EAAE,CAAC,EAAEkB,IAAI,EAAEnB,EAAEC,EAAE,EAAE,CAAC,EAAEkB,IAAI,GAAGnB,EAAEC,EAAE,EAAE,CAAC,EAAEkB,IAAI,GAAGvB,GAAGK,EAAE,GAAGL,GAAG8B,EAAE,EAAEzB,EAAEE,EAAEF,EAAEmB,GAAG,CAAC,EAAEpB,EAAE,EAAEJ,CAAC,EAAEK,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,IAAI,EAAE2B,KAAK,GAAGL,EAAEA,EAAE,EAAE,KAAK,CAAC,IAAI,GAAGW,EAAEA,EAAE,EAAE,MAAM,EAAEnB,GAAG,KAAK,CAAC4H,GAAG9I,EAAEC,EAAEkC,EAAEF,EAAEd,EAAEC,CAAC,EAAEM,EAAE,CAAC,CAAC,OAAOA,CAAC,CAAC,OAAOpB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS+D,GAAGtE,EAAEC,EAAEC,EAAE,CAACF,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAE,IAAIG,EAAEC,EAAEI,EAAEC,EAAE,EAAEW,EAAEjB,EAAEiB,EAAE,IAAI,EAAEf,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEM,EAAEH,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEF,EAAE,IAAI,CAAC,EAAEM,EAAEA,EAAEH,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEF,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAEE,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGS,EAAEF,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGU,EAAEH,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGA,EAAEO,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEM,EAAEJ,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEC,EAAEC,EAAEF,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEJ,EAAEO,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEO,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAEA,EAAEO,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGK,EAAEF,GAAG,CAAC,EAAEG,EAAE,EAAEN,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGM,EAAEN,EAAE,EAAE,CAAC,GAAG,GAAGK,EAAEF,EAAE,GAAG,CAAC,EAAEJ,EAAEA,EAAEO,EAAEN,EAAE,GAAG,CAAC,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,GAAG,CAAC,EAAEG,EAAEN,EAAE,EAAE,CAAC,EAAEM,EAAEN,EAAE,EAAE,CAAC,GAAG,EAAEM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGM,EAAEN,EAAE,GAAG,CAAC,GAAG,GAAGK,EAAEF,EAAE,IAAI,CAAC,EAAEJ,EAAE0I,GAAGtI,EAAG,KAAI,EAAEA,CAAC,EAAEH,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEH,EAAED,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAE8B,GAAE9B,EAAEI,EAAE,IAAI,CAAC,EAAEM,EAAEJ,EAAEF,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGA,EAAEJ,EAAEF,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAED,EAAEJ,EAAE,GAAG,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGA,EAAEJ,EAAEF,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,EAAE,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,GAAG,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,GAAG,CAAC,EAAEW,IAAI,GAAGA,EAAEJ,EAAEF,EAAE,KAAK,CAAC,EAAEH,EAAEK,EAAEF,EAAE,KAAK,CAAC,EAAED,EAAE,EAAEJ,CAAC,EAAEE,EAAEE,EAAEJ,EAAE,EAAE,CAAC,EAAEE,IAAI,EAAEE,EAAEJ,EAAE,EAAE,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,EAAE,CAAC,EAAEE,IAAI,GAAGE,EAAEJ,EAAE,EAAE,CAAC,EAAEW,EAAEP,EAAEJ,EAAE,EAAE,CAAC,EAAEW,IAAI,EAAEP,EAAEJ,EAAE,EAAE,CAAC,EAAEW,IAAI,GAAGP,EAAEJ,EAAE,EAAE,CAAC,EAAEW,IAAI,GAAG6G,GAAGvH,EAAE,EAAE,EAAEqB,EAAEjB,EAAE,IAAI,CAAC,CAAC,SAASkE,GAAGvE,EAAEC,EAAEC,EAAEE,EAAE,CAAC,IAAIC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAE,GAAGL,EAAEC,EAAE,GAAGF,IAAID,GAAG,GAAGJ,EAAE,GAAG,GAAG,IAAI,CAAC,EAAEO,EAAEL,GAAG,CAAC,EAAEK,EAAEF,GAAG,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEI,EAAEA,EAAEC,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEI,EAAEA,EAAEC,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEI,EAAEA,EAAEC,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEI,EAAEA,EAAEC,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEI,EAAEA,EAAEC,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEI,EAAEA,EAAEC,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEI,EAAEA,EAAEC,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEI,EAAEF,EAAE,IAAIE,EAAEF,GAAG,EAAEO,EAAEP,GAAG,EAAEA,GAAGM,GAAG,GAAGV,EAAE,EAAEO,EAAEL,GAAG,CAAC,EAAEK,EAAEL,GAAG,CAAC,EAAEK,EAAEH,GAAG,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAE0G,GAAG5G,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAE,IAAIF,GAAGK,GAAG,GAAGT,EAAE,IAAI,CAAC,EAAEM,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEA,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEA,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEA,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEA,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEA,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEA,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,EAAE,IAAI,CAAC,EAAEG,EAAEA,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEF,GAAG,CAAC,EAAEE,EAAEL,GAAG,CAAC,EAAEK,EAAEF,EAAE,GAAG,CAAC,EAAEG,EAAED,EAAEL,GAAG,CAAC,EAAEK,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAG,MAAK,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,KAAK,CAAC,EAAE0G,GAAG5G,CAAC,EAAEE,EAAEC,EAAEM,EAAE,EAAEN,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEG,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAEE,EAAEL,EAAE,IAAI,CAAC,EAAEK,EAAEH,EAAE,GAAG,CAAC,EAAEG,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,EAAE,IAAI,CAAC,EAAEC,EAAEA,EAAEE,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEH,GAAG,CAAC,EAAEG,EAAEL,GAAG,CAAC,EAAEK,EAAEH,EAAE,GAAG,CAAC,EAAEC,EAAEC,IAAI,GAAGI,EAAEA,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,SAAS8D,GAAGxE,EAAEC,EAAEC,EAAEE,EAAE,CAAC,IAAIC,EAAE,EAAEC,EAAE,EAAEI,EAAE,EAAEE,EAAE,EAAEE,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAE,EAAEC,GAAE,EAAE,GAAGf,EAAEhB,EAAEP,EAAE,IAAI,CAAC,EAAEqB,EAAEd,EAAEP,EAAE,IAAI,CAAC,EAAEsB,EAAEf,EAAEP,EAAE,IAAI,CAAC,EAAEmB,EAAEZ,EAAEP,EAAE,IAAI,CAAC,EAAEoB,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAE,CAACI,EAAEF,IAAI,GAAG,GAAGE,EAAE,IAAI8B,EAAE,CAAC1B,EAAER,EAAE,GAAG,CAAC,GAAG,GAAG0B,EAAEnB,EAAEP,EAAE,GAAG,CAAC,EAAEmC,EAAExB,GAAEe,EAAE,CAAC,EAAEE,EAAErB,EAAEP,EAAE,GAAG,CAAC,EAAEgC,EAAErB,GAAEiB,EAAE,CAAC,EAAEE,EAAEvB,EAAEP,EAAE,IAAI,CAAC,EAAE+B,EAAEpB,GAAEmB,EAAE,CAAC,EAAEG,EAAE1B,EAAEP,EAAE,IAAI,CAAC,EAAE6B,EAAElB,GAAEsB,EAAE,CAAC,EAAEN,EAAEpB,EAAEP,GAAG,CAAC,EAAEK,EAAEkH,EAAG7G,IAAIF,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,MAAM,EAAE,UAAUkB,EAAE,EAAE,EAAEW,EAAE,CAAC,EAAEhB,EAAEW,EAAEL,GAAGR,EAAE2G,EAAGpG,GAAG,UAAUX,EAAE,EAAEP,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,KAAKmB,EAAE,EAAE,EAAEa,EAAE,CAAC,GAAG5B,EAAE,EAAEA,EAAEoB,EAAEX,EAAE,EAAET,EAAEO,IAAI,EAAEQ,IAAI,EAAEf,EAAE,EAAE,EAAEA,EAAES,EAAEyG,EAAGjG,IAAId,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,EAAEO,EAAEP,EAAE,EAAE,CAAC,GAAG,GAAGO,EAAEP,EAAE,EAAE,CAAC,GAAG,MAAM,EAAE,UAAUqB,EAAE,EAAE,EAAEM,EAAE,CAAC,EAAEvB,EAAEoB,EAAEpB,EAAE,EAAEA,EAAES,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAEf,EAAE,EAAE,EAAEA,EAAES,EAAEyG,EAAGlG,IAAIb,EAAEP,EAAE,EAAE,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,GAAGoB,EAAE,EAAE,EAAEK,EAAE,CAAC,EAAErB,EAAEoB,EAAEpB,EAAE,EAAEA,EAAES,IAAI,GAAGM,EAAEN,EAAEM,EAAE,KAAK,EAAEf,EAAE,EAAE,EAAEA,EAAES,EAAEyG,EAAGhG,EAAEA,EAAEW,IAAI1B,EAAEP,EAAE,GAAG,CAAC,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,EAAEO,EAAEP,EAAE,GAAG,CAAC,GAAG,GAAGO,EAAEP,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,EAAE0B,EAAE,CAAC,EAAEtB,EAAEoB,EAAEpB,EAAE,EAAE+B,EAAEhB,EAAEN,EAAEM,EAAE,EAAEA,EAAEN,IAAI,EAAEM,IAAI,EAAEf,EAAE,EAAE,EAAEA,EAAEA,EAAEkH,EAAG7G,EAAE,EAAEkB,EAAE,CAAC,EAAEd,EAAEW,EAAEb,EAAE2G,EAAGpG,EAAE,EAAEW,EAAE,CAAC,EAAExB,EAAEmB,EAAEX,EAAE,EAAER,GAAGD,EAAEO,EAAEP,EAAE,KAAK,EAAEO,IAAI,EAAEN,EAAE,EAAE,EAAEA,EAAEQ,GAAGF,EAAE2G,EAAGjG,EAAE,EAAEI,EAAE,CAAC,GAAGrB,EAAE,EAAEA,EAAEoB,EAAEnB,EAAE,EAAED,EAAEO,IAAI,EAAEE,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAEO,EAAE2G,EAAGlG,EAAE,EAAEM,EAAE,CAAC,EAAEtB,EAAEoB,EAAEpB,EAAE,EAAEA,EAAEO,IAAI,GAAGE,EAAEF,EAAEE,EAAE,KAAK,EAAET,EAAE,EAAE,EAAEA,EAAEO,EAAE2G,EAAGhG,EAAE,EAAEM,EAAE,CAAC,EAAExB,EAAEoB,EAAEpB,EAAE,EAAEgC,GAAEvB,EAAEF,EAAEE,EAAE,EAAEA,EAAEF,IAAI,EAAEE,IAAI,EAAET,EAAE,EAAE,EAAEA,EAAEA,EAAEkH,EAAG7G,EAAE,EAAEgB,EAAE,CAAC,EAAER,EAAEO,EAAEb,GAAGN,EAAEiH,EAAGpG,EAAE,EAAES,EAAE,CAAC,GAAGvB,EAAE,EAAEA,EAAEoB,EAAEP,EAAE,EAAEb,EAAEC,IAAI,EAAEM,IAAI,EAAEP,EAAE,EAAE,EAAEA,EAAEa,EAAEqG,EAAGjG,EAAE,EAAEK,EAAE,CAAC,EAAErB,EAAEmB,EAAEpB,EAAE,EAAEC,GAAGM,EAAEM,EAAEN,EAAE,KAAK,EAAEM,IAAI,EAAEZ,EAAE,EAAE,EAAEA,EAAEY,EAAEqG,EAAGlG,EAAE,EAAEQ,EAAE,CAAC,EAAExB,EAAEoB,EAAEnB,EAAE,EAAED,GAAGO,EAAEM,EAAEN,EAAE,KAAK,EAAEM,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEa,EAAEqG,EAAGhG,EAAE,EAAEQ,EAAE,CAAC,EAAE1B,EAAEoB,EAAEpB,EAAE,EAAEiC,GAAE1B,EAAEM,EAAEN,EAAE,EAAEA,EAAEA,IAAI,EAAEM,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEA,EAAEkH,EAAG7G,EAAE,EAAEiB,EAAE,CAAC,EAAErB,EAAEmB,EAAEP,GAAGM,EAAE+F,EAAGpG,EAAE,EAAEO,EAAE,CAAC,GAAGrB,EAAE,EAAEA,EAAEoB,EAAEnB,EAAE,EAAED,EAAEa,IAAI,EAAEM,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEC,EAAEiH,EAAGjG,EAAE,EAAEO,EAAE,CAAC,EAAExB,EAAEoB,EAAEpB,EAAE,EAAEA,EAAEC,IAAI,GAAGY,EAAEZ,EAAEY,EAAE,KAAK,EAAEb,EAAE,EAAE,EAAEA,EAAEmB,EAAE+F,EAAGlG,EAAE,EAAEU,EAAE,CAAC,EAAEzB,EAAEmB,EAAEpB,EAAE,EAAEC,GAAGY,EAAEM,EAAEN,EAAE,KAAK,EAAEM,IAAI,EAAElB,EAAE,EAAE,EAAEA,EAAEkB,EAAE+F,EAAGhG,EAAE,EAAES,EAAE,CAAC,EAAE3B,EAAEoB,EAAEnB,EAAE,EAAED,GAAGa,EAAEM,EAAEN,EAAE,KAAK,EAAEM,IAAI,EAAEnB,EAAE,EAAE,EAAEA,EAAEmB,EAAEN,EAAEA,EAAEb,EAAEA,EAAEkH,EAAG7G,EAAE,EAAEmB,EAAE,CAAC,EAAEvB,EAAEmB,EAAEf,GAAGS,EAAEoG,EAAGpG,EAAE,EAAEQ,EAAE,CAAC,GAAGtB,EAAE,EAAEA,EAAEoB,EAAEnB,EAAE,EAAED,EAAEK,IAAI,EAAES,IAAI,EAAEd,EAAE,EAAE,EAAEA,EAAEc,EAAEoG,EAAGjG,EAAE,EAAES,EAAE,CAAC,EAAE1B,EAAEoB,EAAEpB,EAAE,EAAEA,GAAGK,EAAES,EAAET,EAAE,KAAK,EAAES,IAAI,EAAEd,EAAE,EAAE,EAAEA,EAAEc,EAAEoG,EAAGlG,EAAE,EAAEW,EAAE,CAAC,EAAE3B,EAAEoB,EAAEpB,EAAE,EAAEA,GAAGK,EAAES,EAAET,EAAE,KAAK,EAAES,IAAI,EAAEd,EAAE,EAAE,EAAEA,EAAEc,EAAEoG,EAAGhG,EAAE,EAAEY,EAAE,CAAC,EAAE7B,EAAEmB,EAAEpB,EAAE,EAAEC,GAAGI,EAAES,EAAET,EAAE,KAAK,EAAES,IAAI,EAAEb,EAAE,EAAE,EAAEA,EAAEa,EAAET,EAAEL,EAAEa,EAAEb,GAAGK,GAAGY,GAAG,SAAShB,IAAI,EAAEI,IAAI,IAAIc,EAAE,KAAK,EAAEF,IAAI,EAAEjB,EAAE,EAAE,EAAEA,EAAEiB,EAAEZ,EAAEW,GAAG,SAAShB,IAAI,EAAEK,IAAI,GAAGL,EAAEO,EAAEP,GAAGK,EAAEW,EAAEiB,GAAE,KAAK,EAAEjB,IAAI,EAAEhB,EAAE,EAAE,EAAEA,EAAEgB,EAAEX,EAAEJ,EAAEQ,EAAES,EAAElB,GAAGK,GAAG,SAASL,IAAI,EAAEK,IAAI,IAAI2B,GAAE,EAAEvB,GAAG,UAAUR,EAAED,IAAI,EAAEK,IAAI,EAAEJ,EAAE,EAAE,EAAEA,KAAK,EAAED,IAAI,GAAGA,EAAEe,EAAED,GAAG,SAASG,KAAKjB,EAAEM,IAAG,WAAWD,EAAEI,EAAEsB,EAAE,KAAK,EAAEtB,IAAI,EAAET,EAAE,EAAEA,KAAK,EAAEK,IAAI,GAAG,CAAC,GAAG,SAASS,GAAG,KAAK,GAAG,GAAG,EAAEG,EAAE,SAASD,EAAEA,EAAE,SAASE,EAAEA,EAAE,SAASb,EAAEU,EAAE,SAASf,EAAEJ,EAAEA,EAAE,GAAG,EAAE,EAAEG,EAAEA,GAAGF,IAAI,EAAE,IAAI,IAAIA,EAAEA,EAAE,GAAG,KAAK,EAAE,GAAGE,GAAG,CAACG,EAAEP,EAAE,IAAI,CAAC,EAAEoB,EAAEb,EAAEP,EAAE,IAAI,CAAC,EAAEuB,EAAEhB,EAAEP,EAAE,IAAI,CAAC,EAAEqB,EAAEd,EAAEP,EAAE,IAAI,CAAC,EAAEsB,EAAEf,EAAEP,EAAE,IAAI,CAAC,EAAEmB,CAAC,CAAC,SAASsD,GAAGzE,EAAEC,EAAEC,EAAEG,EAAE,CAACL,GAAG,EAAEC,GAAG,EAAE,IAAIM,EAAE,EAAE,OAAOA,EAAE,IAAIF,GAAG,GAAG,KAAK,EAAE,YAAYH,GAAG,KAAK,EAAE,KAAKA,GAAGD,GAAGqB,EAAEf,EAAEe,EAAE,IAAI,EAAE,CAACrB,IAAII,GAAG,KAAK,GAAG,OAAO,GAAG,MAAMH,GAAG,KAAK,GAAG,OAAO,GAAG,KAAKuI,GAAE,EAAGnI,GAAC,IAAKmH,GAAGzH,EAAG,KAAI,EAAE,EAAE,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,EAAE,CAAC,EAAE,GAAGI,EAAEJ,EAAE,EAAE,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAIK,EAAE,YAAYH,GAAG,EAAEG,GAAGD,EAAE,EAAEJ,CAAC,EAAEK,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGA,EAAEH,IAAI,GAAG,WAAWE,EAAEJ,EAAE,EAAE,CAAC,EAAEK,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,EAAED,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGD,EAAEJ,EAAE,EAAE,CAAC,EAAEK,IAAI,GAAGH,EAAEyH,GAAGF,GAAGlH,EAAE,EAAE,GAAG,EAAEN,EAAEC,CAAC,EAAEyH,GAAG3H,EAAE,GAAG,EAAEE,EAAE,GAAG,EAAED,EAAE,KAAKO,EAAER,EAAE,IAAI,CAAC,EAAEQ,EAAER,EAAE,IAAI,CAAC,GAAG,EAAEQ,EAAER,EAAE,IAAI,CAAC,GAAG,GAAGQ,EAAER,EAAE,IAAI,CAAC,GAAG,IAAI,EAAEI,EAAEJ,EAAE,IAAI,CAAC,EAAEC,EAAEG,EAAEJ,EAAE,IAAI,CAAC,EAAEC,IAAI,EAAEG,EAAEJ,EAAE,IAAI,CAAC,EAAEC,IAAI,GAAGG,EAAEJ,EAAE,IAAI,CAAC,EAAEC,IAAI,GAAGuH,GAAGtH,EAAE,GAAG,EAAEoB,EAAEpB,EAAE,IAAI,OAAOD,EAAE,IAAII,GAAG,GAAG,OAAO,GAAG,MAAMoI,KAAKnI,GAAG,GAAEmH,GAAGzH,EAAG,KAAI,EAAE,EAAE,GAAG,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,EAAEI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IAAII,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,GAAGI,EAAEJ,EAAE,GAAG,CAAC,EAAE,IA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EA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEE,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAG,KAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,GAAG,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,EAAE,IAAI,CAAC,EAAE0B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEA,CAAC,EAAE4B,GAAE5B,EAAEA,EAAEE,CAAC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Q,EAAE,EAAEP,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG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E,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG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ER,EAAE,EAAE,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG,CAAC,EAAEG,EAAER,EAAE,GAAG,CAAC,EAAEQ,EAAEH,EAAE,GAAG,CAAC,EAAED,EAAEC,EAAE,GAAG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,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAEM,EAAED,EAAEL,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC,EAAEK,EAAEL,EAAE,GAAG,CAAC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,CAAC,EAAE,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEA,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAEJ,EAAEM,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,EAAE,IAAI,CAAC,EAAE,EAAEE,EAAEF,EAAE,KAAK,CAAC,EAAE,EAAEE,EAAEF,E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AAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,EAAE,CAAC,EAAEQ,EAAEP,EAAE,EAAE,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EAAEP,EAAE,GAAG,CAAC,EAAEG,EAAEJ,EAAE,GAAG,CAAC,EAAEQ,EA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48]} \ No newline at end of file diff --git a/index-DbeJlE6u.js b/index-BvQarRZO.js similarity index 99% rename from index-DbeJlE6u.js rename to index-BvQarRZO.js index 700ce48..8bf7be9 100644 --- a/index-DbeJlE6u.js +++ b/index-BvQarRZO.js @@ -1,4 +1,4 @@ -import{b as Ue,S as ge,g as Ge,r as de,i as pt,e as cs,a as Bo,f as Ho,m as jo,L as sn,M as et,c as ds,t as Se,d as q,s as us,h as ae,j as X,k as Q,l as Te,p as on,u as an,n as yt,o as tt,q as Vo,v as nr,w as hs,x as Uo}from"./index-Blps0pow.js";import{c as rr,g as sr}from"./index-CQYrZ5gL.js";class vt{#e={};#t=0;emit(t,...n){if(!this.#e[t])return!1;const r=[...this.#e[t]];for(let s=0;s=0;i--)r.splice(s[i],1)}return this}}off=this.removeListener;removeAllListeners(t){if(t){const n=this.#e[t];n&&(this.#t-=n.length,this.#t===0?this.#e={}:delete this.#e[t])}else this.#e={},this.#t=0;return this}#s(t,n,r=!1){const s={fn:n,once:r},i=this.#e[t]??[];return i.push(s),this.#e[t]=i,this.#t++,this}}function b(e,t="Assertion failed"){if(e===!1||e===null||e===void 0){const n=new Error(Go(t));throw n.stack=Yo(n.stack,"assert.js"),n}}const Go=e=>e.split(` +import{b as Ue,S as ge,g as Ge,r as de,i as pt,e as cs,a as Bo,f as Ho,m as jo,L as sn,M as et,c as ds,t as Se,d as q,s as us,h as ae,j as X,k as Q,l as Te,p as on,u as an,n as yt,o as tt,q as Vo,v as nr,w as hs,x as Uo}from"./index-BXtvCgpn.js";import{c as rr,g as sr}from"./index-D8bkrfVo.js";class vt{#e={};#t=0;emit(t,...n){if(!this.#e[t])return!1;const r=[...this.#e[t]];for(let s=0;s=0;i--)r.splice(s[i],1)}return this}}off=this.removeListener;removeAllListeners(t){if(t){const n=this.#e[t];n&&(this.#t-=n.length,this.#t===0?this.#e={}:delete this.#e[t])}else this.#e={},this.#t=0;return this}#s(t,n,r=!1){const s={fn:n,once:r},i=this.#e[t]??[];return i.push(s),this.#e[t]=i,this.#t++,this}}function b(e,t="Assertion failed"){if(e===!1||e===null||e===void 0){const n=new Error(Go(t));throw n.stack=Yo(n.stack,"assert.js"),n}}const Go=e=>e.split(` `).map(t=>t.trim()).join(` `),Yo=(e="",t)=>e.split(` `).filter(n=>!n.includes(t)).join(` @@ -13,4 +13,4 @@ ${u.message}`)}if(h){s.push(...a.actions),i=a;break}}return i?[i]:void 0}get eve - `)} Keymap: ${JSON.stringify(i,null,2)}`);const a="generation"in n&&n.generation!==void 0?n.generation:o.length-1;return o[a]},Yf=(e,t)=>{const n=e.lockboxes.filter(({contents:i})=>i.type===t.type&&i.name===t.name),r=n.reduce(Ff,0);return n.filter(({contents:i})=>i.generation===r)},Ff=(e,t)=>{const{generation:n}=t.contents;return n>e?n:e},wt=(e,t,n={includeRemoved:!1})=>{const s=[...e.members,...n.includeRemoved?e.removedMembers:[]].find(i=>i.userId===t);if(s===void 0)throw new Error(`A member named '${t}' was not found`);return s},Eo=(e,t,n={includeRemoved:!1})=>{if(zn(e,t))return $e.toMember(Fn(e,t));const{userId:r}=Mt(e,t,n);return wt(e,r,n)},bo=(e,t,n)=>{if(!vo(e,t))return!1;const r=wt(e,t),{roles:s=[]}=r;return s.includes(n)},Qe=(e,t)=>bo(e,t,P),zf=(e,t)=>e.removedMembers.some(n=>n.userId===t),Io=(e,t)=>e.members.filter(n=>n.roles?.includes(t)),Wf=e=>Io(e,P),qf=e=>e.messages,Jf=(e,t)=>{const n=e.roles.find(r=>r.roleName===t);if(!n)throw new Error(`A role called '${t}' was not found`);return n},Xf=(e,t)=>e.removedServers.some(n=>n.host===t),{TEAM:ns}=O,Zf=(e,t)=>{const n=go(e,t)[ns][ns];return Ae(n)},_o=(e,{type:t,name:n})=>{const r=e.lockboxes.filter(({recipient:o})=>o.type===t&&o.name===n).map(({contents:{type:o,name:a}})=>({type:o,name:a})),s=r.flatMap(o=>_o(e,o)),i=[...r,...s];return fo(i,o=>o.name+o.type)},Qf=e=>t=>{const n=Mt(t,e),{userId:r}=Eo(t,e),s=a=>a.userId===r?{...a,devices:a.devices?.filter(c=>c.deviceName!==n.deviceName)}:a,i=t.members.map(s),o=[...t.removedDevices,n];return{...t,members:i,removedDevices:o}},ep=e=>t=>{const n=t.members.filter(i=>i.userId!==e),r=t.members.find(i=>i.userId===e),s=[...t.removedMembers];return r&&s.push(r),{...t,members:n,removedMembers:s}},tp=(e,t)=>n=>({...n,members:n.members.map(r=>({...r,roles:r.userId===e?r.roles.filter(s=>s!==t):r.roles})),lockboxes:n.lockboxes.filter(r=>!(r.recipient.name===e&&r.contents.type===O.ROLE&&r.contents.name===t))}),np=e=>t=>({...t,roles:t.roles.filter(n=>n.roleName!==e),lockboxes:t.lockboxes.filter(n=>!(n.contents.type===O.ROLE&&n.contents.name===e))}),rp=e=>t=>{const n=t.servers.filter(i=>i.host!==e),r=t.servers.find(i=>i.host===e),s=[...t.removedServers];return r&&s.push(r),{...t,servers:n,removedServers:s}},sp=e=>t=>{const n={...t.invitations},r={...n[e],revoked:!0};return{...t,invitations:{...n,[e]:r}}},ip=e=>t=>{const n=t.pendingKeyRotations.filter(r=>r!==e);return{...t,pendingKeyRotations:n}},rs=e=>t=>({...t,teamName:e}),ss=e=>t=>{const n={...t.invitations},r=n[e],s=r.uses+1;return{...t,invitations:{...n,[e]:{...r,uses:s}}}},op={};At(op,{IKEY_LENGTH:()=>So,InvitationValidationError:()=>Ao,create:()=>tn,deriveId:()=>Yn,fail:()=>oe,generateProof:()=>Ce,generateStarterKeys:()=>ze,invitationCanBeUsed:()=>Xn,randomSeed:()=>nn,validate:()=>To});var So=16,tn=({seed:e,maxUses:t=1,expiration:n=0,userId:r})=>{e=je(e);const s=Yn(e),i=ze(e),{publicKey:o}=i.signature;return{id:s,publicKey:o,expiration:n,maxUses:t,userId:r}},nn=(e=So)=>Te(e),Xn=(e,t)=>{const{revoked:n,maxUses:r,uses:s,expiration:i}=e;return n?oe("The invitation has been revoked"):r>0&&s>=r?oe("The invitation cannot be used again"):i>0&&i{const{id:n,signature:r}=e;if(n!==t.id)return oe("IDs don't match",{proof:e,invitation:t});const{publicKey:s}=t;return ae.verify({payload:{id:n},signature:r,publicKey:s})?C:oe("Signature provided is not valid",{proof:e,invitation:t})}),oe=(e,t)=>({isValid:!1,error:new Ao(e,t)}),Ao=class extends Error{constructor(e,t){super(),this.name="Invitation validation failed",this.message=e,this.details=t}index;details},ap=yt.extend("auth:validate"),cp=(...e)=>{for(const t in is){const n=is[t],r=n(...e);if(!r.isValid)return r}return C},is={rootDeviceBelongsToRootUser(...e){const[t,n]=e,{type:r,payload:s}=n.body;if(r!=="ROOT")return C;const{rootDevice:i,rootMember:o}=s;return i.userId!==o.userId?Re("The founding device must belong to the founding member (userIds must match).",...e):C},mustBeAdmin(...e){const[t,n]=e,r=n.body,{type:s,userId:i}=r;return s===It?C:no(r)&&!Qe(t,i)?Re(`Member '${i}' is not an admin`,...e):C},canOnlyRemoveYourOwnDevices(...e){const[t,n]=e,r=n.body.userId;if(Qe(t,r))return C;if(n.body.type==="REMOVE_DEVICE"){const i=n.body.payload.deviceId,a=Mt(t,i).userId;if(r!==a)return Re("Can't remove another user's device.",...e)}return C},canOnlyChangeYourOwnKeys(...e){const[t,n]=e,r=n.body.userId;if(!Qe(t,r)){if(n.body.type==="CHANGE_MEMBER_KEYS"){const i=n.body.payload.keys.name;if(r!==i)return Re("Can't change another user's keys.",...e)}else if(n.body.type==="CHANGE_SERVER_KEYS"){const i=n.body.payload.keys.name;if(r!==i)return Re("Can't change another server's keys.",...e)}}return C},cantAdmitWithInvalidInvitation(...e){const[t,n]=e;if(n.body.type==="ADMIT_MEMBER"||n.body.type==="ADMIT_DEVICE"){const{id:r}=n.body.payload,s=qn(t,r);return Xn(s,n.body.timestamp)}return C}},Re=(e,t,n)=>(e=hs(`${eo(n)} ${e}`),ap(e),{isValid:!1,error:new _f(e,{prevState:t,link:n})}),ft=(e,t)=>{if(t.isInvalid)return kf(e,t);e=jd(e);const n=cp(e,t);if(!n.isValid)throw n.error;const r=t.body;return Ef([xf(t),Nf(r.payload.lockboxes),...dp(r)])(e)},dp=e=>{switch(e.type){case It:{const{name:t,rootMember:n,rootDevice:r}=e.payload;return[rs(t),Qr({roleName:P}),Nt(n),$t(r),...Kt(n.userId,[P])]}case"ADD_MEMBER":{const{member:t,roles:n}=e.payload;return[Nt(t),...Kt(t.userId,n)]}case"ADD_ROLE":{const t=e.payload;return[Qr(t)]}case"ADD_MEMBER_ROLE":{const{userId:t,roleName:n}=e.payload;return[...Kt(t,[n])]}case"REMOVE_MEMBER":{const{userId:t}=e.payload;return[ep(t)]}case"ADD_DEVICE":{const{device:t}=e.payload;return[$t(t)]}case"REMOVE_DEVICE":{const{deviceId:t}=e.payload;return[Qf(t)]}case"REMOVE_ROLE":{const{roleName:t}=e.payload;return[np(t)]}case"REMOVE_MEMBER_ROLE":{const{userId:t,roleName:n}=e.payload;return[tp(t,n)]}case"INVITE_MEMBER":{const{invitation:t}=e.payload;return[es(t)]}case"INVITE_DEVICE":{const{invitation:t}=e.payload;return[es(t)]}case"REVOKE_INVITATION":{const{id:t}=e.payload;return[sp(t)]}case"ADMIT_MEMBER":{const{id:t,memberKeys:n,userName:r}=e.payload,i={userId:n.name,userName:r,keys:n,roles:[]};return[ss(t),Nt(i)]}case"ADMIT_DEVICE":{const{id:t,device:n}=e.payload;return[ss(t),$t(n)]}case"CHANGE_MEMBER_KEYS":{const{keys:t}=e.payload;return[Df(t)]}case"ROTATE_KEYS":{const{userId:t}=e.payload;return[ip(t)]}case"ADD_SERVER":{const{server:t}=e.payload;return[Cf(t)]}case"REMOVE_SERVER":{const{host:t}=e.payload;return[rp(t)]}case"CHANGE_SERVER_KEYS":{const{keys:t}=e.payload;return[$f(t)]}case"MESSAGE":{const{message:t}=e.payload;return[Lf(t)]}case"SET_TEAM_NAME":{const{teamName:t}=e.payload;return[rs(t)]}default:throw up(e)}};function up(e){const{type:t}=e;return new Error(`Unrecognized link type: ${t}`)}var hp=Di({initialState:De,reducer:ft,resolver:ut}),Mo=(e,t)=>{const n=lo(e,t);return hp(n)},{USER:lp}=O,fp=({serializedGraph:e,teamKeyring:t,invitationSeed:n})=>{const r=ze(n),s=Ce(n).id,i=Mo(e,t),{userId:o}=qn(i,s);b(o);const{userName:a}=wt(i,o);b(a);const c=Jn(i,r,{type:lp,name:o});return{userName:a,userId:o,keys:c}},pp=e=>({...e,nonce:Te(),timestamp:Date.now()}),yp=(e,t)=>ae.sign(e,t.signature.secretKey),vp=(e,t,n)=>{const r={challenge:e,signature:t};return ae.verify({payload:e,signature:t,publicKey:n.signature})?C:mp("Signature is not valid",r)},mp=(e,t)=>({isValid:!1,error:new gp(e,t)}),gp=class extends Error{constructor(e,t){super(),this.name="Identity challenge failed",this.message=e+` `+JSON.stringify(t,null,2).replaceAll('"',""),this.details=t}details},Ep={};At(Ep,{createDevice:()=>bp,redactDevice:()=>Ve});var bp=(e,t,n=Te())=>{const r=In(),s=J({type:O.DEVICE,name:r},n);return{userId:e,deviceId:r,deviceName:t,keys:s}},Ve=e=>({userId:e.userId,deviceId:e.deviceId,deviceName:e.deviceName,keys:Z(e.keys)}),os=e=>({...Yh(e),roles:[]}),Ip=e=>"teamName"in e,{DEVICE:Pt,USER:Bt}=O,Zn=class extends vt{state=De;store;context;log;seed;constructor(e){if(super(),this.seed=e.seed??Te(),"user"in e.context)this.context=e.context;else{const{server:r}=e.context;this.context={...e.context,device:$e.toDevice(r),user:$e.toUser(r)}}const{device:t,user:n}=this.context;if(this.log=yt.extend(`auth:team:${this.userName}`),Ip(e)){b(!this.isServer,"Servers can't create teams");const r=N(e.teamKeys,n.keys),s=J(Of,this.seed),i=N(s,n.keys),o=N(n.keys,this.context.device.keys),a={name:e.teamName,rootMember:os(n),rootDevice:Ve(t),lockboxes:[r,i,o]};this.store=Cr({user:n,reducer:ft,resolver:ut,initialState:De,rootPayload:a,keys:e.teamKeys})}else this.store=Cr({user:n,reducer:ft,resolver:ut,initialState:De,graph:Mf(e.source,e.teamKeyring),keys:e.teamKeyring});this.state=this.store.getState(),this.on("updated",()=>{this.checkForPendingKeyRotations()})}get graph(){return this.store.getGraph()}get id(){return this.graph.root}get teamName(){return this.state.teamName}setTeamName(e){this.dispatch({type:"SET_TEAM_NAME",payload:{teamName:e}})}get userName(){return this.context.user.userId}get userId(){return this.context.user.userId}get isServer(){return"server"in this.context}save=()=>Af(this.graph);merge=e=>(this.store.merge(e),this.state=this.store.getState(),this.emit("updated",{head:this.graph.head}),this);dispatch(e,t=this.teamKeys()){this.store.dispatch(e,t),this.state=this.store.getState(),this.emit("updated",{head:this.graph.head})}has=e=>vo(this.state,e);members(e=le,t={includeRemoved:!0}){return e===le?this.state.members:wt(this.state,e,t)}addForTesting=(e,t=[],n)=>{const r={...os(e),roles:t};if(!this.has(r.userId)){const s=this.createMemberLockboxes(r);this.dispatch({type:"ADD_MEMBER",payload:{member:r,roles:t,lockboxes:s}})}if(n){const s=N(e.keys,n.keys);this.dispatch({type:"ADD_DEVICE",payload:{device:n,lockboxes:[s]}})}};remove=e=>{const t=this.rotateKeys({type:Bt,name:e});this.dispatch({type:"REMOVE_MEMBER",payload:{userId:e,lockboxes:t}})};memberWasRemoved=e=>zf(this.state,e);roles(e=le){return e===le?this.state.roles:Jf(this.state,e)}memberHasRole=(e,t)=>bo(this.state,e,t);memberIsAdmin=e=>Qe(this.state,e);hasRole=e=>jf(this.state,e);membersInRole=e=>Io(this.state,e);admins=()=>Wf(this.state);addRole=e=>{typeof e=="string"&&(e={roleName:e});const t=J({type:O.ROLE,name:e.roleName},this.seed),n=N(t,this.adminKeys());this.dispatch({type:"ADD_ROLE",payload:{...e,lockboxes:[n]}})};removeRole=e=>{b(e!==P,"Cannot remove admin role"),this.dispatch({type:"REMOVE_ROLE",payload:{roleName:e}})};addMemberRole=(e,t)=>{const n=this.members(e),r=N(this.roleKeys(t),n.keys);this.dispatch({type:"ADD_MEMBER_ROLE",payload:{userId:e,roleName:t,lockboxes:[r]}})};removeMemberRole=(e,t)=>{if(t===P){const r=this.membersInRole(P).length;b(r>1,"Can't remove the last admin")}const n=this.rotateKeys({type:O.ROLE,name:t});this.dispatch({type:"REMOVE_MEMBER_ROLE",payload:{userId:e,roleName:t,lockboxes:n}})};hasDevice=(e,t)=>po(this.state,e,t);device(e,t){return Mt(this.state,e,t)}removeDevice=e=>{if(!this.hasDevice(e))throw new Error(`Device ${e} not found`);const t=this.rotateKeys({type:Pt,name:e});this.dispatch({type:"REMOVE_DEVICE",payload:{deviceId:e,lockboxes:t}})};deviceWasRemoved=e=>Hf(this.state,e);memberByDeviceId=(e,t)=>Eo(this.state,e,t);verifyIdentityProof=(e,t)=>{b(e.type===Pt);const n=e.name,r=this.hasServer(n)?this.servers(n):this.device(n,{includeRemoved:!0});return vp(e,t,r.keys).isValid};inviteMember({seed:e=nn(),expiration:t,maxUses:n}={}){e=je(e);const r=tn({seed:e,expiration:t,maxUses:n}),{id:s}=r;return this.dispatch({type:"INVITE_MEMBER",payload:{invitation:r}}),{id:s,seed:e}}inviteDevice({seed:e=nn(),expiration:t=Date.now()+30*60*1e3}={}){b(!this.isServer,"Servers can't invite a device"),e=je(e);const r=tn({seed:e,expiration:t,maxUses:1,userId:this.userId}),s=ze(e),i=N(this.context.user.keys,s),{id:o}=r;return this.dispatch({type:"INVITE_DEVICE",payload:{invitation:r,lockboxes:[i]}}),{id:o,seed:e}}revokeInvitation=e=>{this.dispatch({type:"REVOKE_INVITATION",payload:{id:e}})};hasInvitation(e){return Wn(this.state,e)}getInvitation=e=>qn(this.state,e);validateInvitation=e=>{const{id:t}=e;if(!this.hasInvitation(t))return oe("This invitation code doesn't match.");const n=this.getInvitation(t),r=Xn(n,Date.now());return r!==C?r:To(e,n)};admitMember=(e,t,n)=>{const r=this.validateInvitation(e);if(!r.isValid)throw r.error;const{id:s}=e,i=N(this.teamKeys(),t);this.dispatch({type:"ADMIT_MEMBER",payload:{id:s,userName:n,memberKeys:Z(t),lockboxes:[i]}})};admitDevice=(e,t)=>{const n=this.validateInvitation(e);if(!n.isValid)throw n.error;const{id:r}=e,i=this.getInvitation(r).userId,o={...t,userId:i};this.dispatch({type:"ADMIT_DEVICE",payload:{id:r,device:o}})};join=e=>{b(!this.isServer,"Can't join as member on server");const{user:t,device:n}=this.context,r=$h(e),s=N(t.keys,n.keys);this.dispatch({type:"ADD_DEVICE",payload:{device:Ve(n),lockboxes:[s]}},r)};addServer=e=>{const t=this.createMemberLockboxes($e.toMember(e));this.dispatch({type:"ADD_SERVER",payload:{server:e,lockboxes:t}})};removeServer=e=>{this.dispatch({type:"REMOVE_SERVER",payload:{host:e}})};servers(e=le,t={includeRemoved:!0}){return e===le?this.state.servers:Fn(this.state,e,t)}serverWasRemoved=e=>Xf(this.state,e);hasServer=e=>zn(this.state,e);addMessage=e=>{this.dispatch({type:"MESSAGE",payload:{message:e}})};messages=()=>qf(this.state);encrypt=(e,t)=>{const n=t?{type:O.ROLE,name:t}:lt,{secretKey:r,generation:s}=this.keys(n);return{contents:tt.encryptBytes(e,r),recipient:{...n,generation:s}}};decrypt=e=>{const{secretKey:t}=this.keys(e.recipient);return tt.decryptBytes(e.contents,t)};sign=e=>{b(this.context.user);const{keys:{type:t,name:n,generation:r,signature:{secretKey:s}}}=this.context.user;return{contents:e,signature:ae.sign(e,s),author:{type:t,name:n,generation:r}}};verify=e=>ae.verify({payload:e.contents,signature:e.signature,publicKey:this.members(e.author.name).keys.signature});keys=e=>Jn(this.state,this.context.device.keys,e);roleKeys=(e,t)=>this.keys({type:O.ROLE,name:e,generation:t});teamKeys=e=>this.keys({...lt,generation:e});teamKeyring=()=>Zf(this.state,this.context.device.keys);adminKeys=e=>this.roleKeys(P,e);changeKeys=e=>{const{device:t,user:n}=this.context,{type:r}=e;b(r!==Pt,"Can't change device keys");const s=r===Bt,i=r===O.SERVER,o=n.keys;e.generation=o.generation+1;const a=this.rotateKeys(e),c=s?"CHANGE_MEMBER_KEYS":"CHANGE_SERVER_KEYS",d=Z(e);this.dispatch({type:c,payload:{keys:d,lockboxes:a}}),(i||s)&&(n.keys=e),i&&(t.keys=e)};checkForPendingKeyRotations(){if(this.memberIsAdmin(this.userId))for(const e of this.state.pendingKeyRotations){const t=this.rotateKeys({type:Bt,name:this.userId});this.dispatch({type:"ROTATE_KEYS",payload:{userId:e,lockboxes:t}})}}createMemberLockboxes=e=>{const t=e.roles.map(this.roleKeys),n=r=>N(r,e.keys);return[...t,this.teamKeys()].map(n)};rotateKeys=e=>{const t=_t(e)?e:J(e),r=_o(this.state,e).map(o=>J(o)),s=[t,...r];return s.flatMap(o=>Yf(this.state,o).map(c=>{const d=s.find(h=>uo(h,c.recipient));return Uf({oldLockbox:c,newContents:o,updatedRecipientKeys:d?Z(d):void 0})}))}};function Hp(e,t,n){const r=J(lt,n);return new Zn({teamName:e,context:t,teamKeys:r})}var _p=({encryptedGraph:e,teamKeys:t,deviceKeys:n})=>{const r=Ae(t),{encryptedLinks:s,childMap:i,root:o}=e,a=e.links??{},c=(l,p,y={},m=De)=>{const v=s[l],I=a[l]??Oi(v,p);let M={[l]:I};const D=ft(m,I);let $;try{$=Jn(D,n,lt),r[$.encryption.publicKey]=$}catch{$=p}const U=i[l];if(U)for(const Ot of U)M={...M,...c(Ot,$,M,D)};return{...y,...M}},d=s[o].recipientPublicKey,h=r[d],u=c(o,h);return{...e,links:u}},jp=(e,t,n)=>{const r=Ae(n);return new Zn({source:e,context:t,teamKeyring:r})},wo=e=>{if(e===void 0)return"DONE";const{head:t,links:n,need:r}=e,s={head:t};return n&&(s.links=Object.keys(n).join(", ")),r&&(s.need=r.join(", ")),hs(JSON.stringify(s))},Oe=yt.extend("message-queue"),Sp=class extends vt{#e=!1;#t={};#s=0;#n={};#a;#i={};#r=0;#o;constructor({sendMessage:e,timeout:t=1e3}){super(),this.#o=n=>{this.#r=n.index+1,e(n)},this.#a=t}start(){return this.#e=!0,this.#c(),this.#d(),this}stop(){return this.#e=!1,this}send(e){const t=as(this.#i)+1,n={...e,index:t};return this.#i[t]=n,Oe("send %o",n),this.#e&&this.#o(n),this}resend(e){const t=this.#i[e];if(!t)throw new Error(`Received resend request for message #${e}, which doesn't exist.`);return Oe("resend %o",t),this.#o(t),this}receive(e){const{index:t}=e;return Oe("receive %o",e),this.#t[t]||(this.#t[t]=e,this.#e&&this.#c()),this}#d(){for(Oe("processOutbound");this.#i[this.#r];){const e=this.#i[this.#r];this.#o(e)}}#c(){for(Oe("processInbound");this.#t[this.#s];){const t=this.#t[this.#s];this.#s++,this.emit("message",t)}const e=as(this.#t);for(let t=this.#s;t{this.#t[t]||this.emit("request",t),delete this.#n[t]},this.#a))}};function as(e){return Math.max(...Object.keys(e).map(Number),-1)}var Tp=e=>e.type==="SYNC"?`SYNC ${wo(e.payload)}`:`${e.type} ${e.payload?.head?.slice(0,5)||e.payload?.message||""}`,Ap=e=>typeof e=="string",Ro=e=>Ap(e)?e:Object.keys(e).map(t=>`${t}:${Ro(e[t])}`).filter(t=>t.length).join(","),Mp=e=>{const{keys:t,host:n}=e.server;return{...e,user:{userId:n,userName:n,keys:t},device:{userId:n,deviceId:n,deviceName:n,keys:t}}},wp=e=>"server"in e?e.server.host:"userName"in e?e.userName:"user"in e?e.user.userName:"",Oo=e=>"team"in e&&e.team!==void 0,Rt=e=>"invitationSeed"in e&&e.invitationSeed!==void 0,Qn=e=>Rt(e)&&"user"in e&&e.user!==void 0,ko=e=>Rt(e)&&!Qn(e),xo=e=>"server"in e&&e.server!==void 0,rn=e=>"deviceId"in e&&e.deviceId!==void 0,Lo=e=>me(e)&&"userKeys"in e&&e.userKeys!==void 0,Rp=e=>me(e)&&!("userKeys"in e),me=e=>"proofOfInvitation"in e&&e.proofOfInvitation!==void 0,Op=class extends vt{#e;#t;#s=!1;#n=yt.extend("auth:connection");constructor({sendMessage:e,context:t}){super(),this.#t=this.#a(e),this.#n=this.#n.extend(wp(t));const n=xo(t)?Mp(t):t,r=Jl({types:{context:{},events:{}},actions:{requestIdentityClaim:()=>{this.#r("REQUEST_IDENTITY")},sendIdentityClaim:L(({context:s})=>{const o=(a=>{if(Oo(a))return{deviceId:a.device.deviceId};if(Qn(a)){b(a.invitationSeed);const{userName:c,keys:d}=a.user;return{proofOfInvitation:Ce(a.invitationSeed),userName:c,userKeys:Z(d),device:Ve(a.device)}}if(ko(a)){b(a.invitationSeed);const{userName:c,device:d}=a;return{proofOfInvitation:Ce(a.invitationSeed),userName:c,device:Ve(d)}}throw new Error("Invalid context")})(s);return this.#r("CLAIM_IDENTITY",o),{ourIdentityClaim:o}}),receiveIdentityClaim:L(({event:s})=>{H(s,"CLAIM_IDENTITY");const i=s.payload,o="device"in i?i.device:void 0;return{theirIdentityClaim:i,theirDevice:o}}),acceptInvitation:L(({context:s})=>{const{team:i,theirIdentityClaim:o}=s;b(i),b(o),b(me(o));const{proofOfInvitation:a}=o,d=(()=>{if(Lo(o)){const{userName:h,userKeys:u}=o;i.admitMember(a,u,h);const l=u.name;return i.members(l)}else{const{device:h}=o;i.admitDevice(a,h);const{deviceId:u}=h,{userId:l}=i.memberByDeviceId(u);return i.members(l)}})();return this.#r("ACCEPT_INVITATION",{serializedGraph:i.save(),teamKeyring:i.teamKeyring()}),{peer:d}}),joinTeam:L(({context:s,event:i})=>{H(i,"ACCEPT_INVITATION");const{serializedGraph:o,teamKeyring:a}=i.payload,{device:c,invitationSeed:d}=s;b(d);const h=s.user??fp({serializedGraph:o,teamKeyring:a,invitationSeed:d}),u=new Zn({source:o,context:{user:h,device:c},teamKeyring:a});return u.join(a),this.emit("joined",{team:u,user:h}),{user:h,team:u}}),challengeIdentity:L(({context:s})=>{const{team:i,theirIdentityClaim:o}=s;b(i),b(rn(o));const{deviceId:a}=o,c=i.device(a,{includeRemoved:!0}),d=i.memberByDeviceId(a,{includeRemoved:!0});this.#n=this.#n.extend(d.userName);const h=pp({type:O.DEVICE,name:a});return this.#r("CHALLENGE_IDENTITY",{challenge:h}),{theirDevice:c,peer:d,challenge:h}}),proveIdentity:({context:s,event:i})=>{H(i,"CHALLENGE_IDENTITY");const{challenge:o}=i.payload,{keys:a}=s.device,c=yp(o,a);this.#r("PROVE_IDENTITY",{challenge:o,proof:c})},acceptIdentity:()=>this.#r("ACCEPT_IDENTITY"),listenForTeamUpdates:({context:s})=>{b(s.team),s.team.on("updated",({head:i})=>{this.#e.getSnapshot().status!=="done"&&this.#e.send({type:"LOCAL_UPDATE",payload:{head:i}}),this.emit("updated")})},sendSyncMessage:L(({context:s})=>{b(s.team);const i=s.syncState??Dr(),[o,a]=Uh(s.team.graph,i);return a?(this.#n("sending sync message",wo(a)),this.#r("SYNC",a)):this.#n("no sync message to send"),{syncState:o}}),receiveSyncMessage:L(({context:s,event:i})=>{H(i,"SYNC");const o=i.payload,{syncState:a=Dr(),team:c,device:d}=s;b(c);const h=c.teamKeys(),u=d.keys,l=({encryptedGraph:m,keys:v})=>_p({encryptedGraph:m,teamKeys:v,deviceKeys:u}),[p,y]=Gh(c.graph,a,o,h,l);return Xe(p.head,c.graph.head)?{syncState:y}:(this.emit("updated"),{team:c.merge(p),syncState:y})}),sendSeed:L(({context:s})=>{const{user:i,peer:o,seed:a=Vo()}=s,c=Q.encryptBytes({secret:a,recipientPublicKey:o.keys.encryption,senderSecretKey:i.keys.encryption.secretKey});return this.#r("SEED",{encryptedSeed:c}),{seed:a}}),deriveSharedKey:L(({context:s,event:i})=>{H(i,"SEED");const{encryptedSeed:o}=i.payload,{seed:a,user:c,peer:d}=s;try{const h=Q.decryptBytes({cipher:o,senderPublicKey:d.keys.encryption,recipientSecretKey:c.keys.encryption.secretKey});return{sessionKey:Sf(a,h)}}catch(h){if(String(h).includes("incorrect key pair"))return this.#i(ht);throw h}}),receiveEncryptedMessage:({context:s,event:i})=>{H(i,"ENCRYPTED_MESSAGE");const o=s.sessionKey,a=i.payload;try{const c=tt.decryptBytes(a,o);this.emit("message",c)}catch(c){if(String(c).includes("wrong secret key"))return this.#i(ht);throw c}},fail:L((s,{error:i})=>this.#i(i)),receiveError:L(({event:s})=>{H(s,"ERROR");const i=s.payload;return this.#n("receiveError: %o",i),this.emit("remoteError",i),{error:i}}),sendError:L(({event:s})=>{H(s,"LOCAL_ERROR");const i=s.payload;return this.#n("sendError %o",i),this.#t.send(en(i.type,"REMOTE")),this.emit("localError",i),{error:i}}),onConnected:()=>this.emit("connected"),onDisconnected:({event:s})=>this.emit("disconnected",s)},guards:{theySentIdentityClaim:({context:s})=>s.theirIdentityClaim!==void 0,weSentIdentityClaim:({context:s})=>s.ourIdentityClaim!==void 0,bothSentIdentityClaim:Hr(["theySentIdentityClaim","weSentIdentityClaim"]),weHaveInvitation:({context:s})=>Rt(s),theyHaveInvitation:({context:s})=>me(s.theirIdentityClaim),neitherIsMember:Hr(["weHaveInvitation","theyHaveInvitation"]),invitationIsValid:({context:s})=>{const{team:i,theirIdentityClaim:o}=s;return b(me(o)),i.validateInvitation(o.proofOfInvitation).isValid},joinedTheRightTeam:({context:s,event:i})=>{H(i,"ACCEPT_INVITATION");const o=s.invitationSeed,{serializedGraph:a,teamKeyring:c}=i.payload,d=Mo(a,c),{id:h}=Ce(o);return Wn(d,h)},deviceUnknown:({context:s})=>{const{theirIdentityClaim:i}=s;return b(rn(i)),!s.team.hasDevice(i.deviceId,{includeRemoved:!0})},identityIsValid:({context:s,event:i})=>{H(i,"PROVE_IDENTITY");const{challenge:o,proof:a}=i.payload;return s.team.verifyIdentityProof(o,a)},memberWasRemoved:({context:s})=>s.team.memberWasRemoved(s.peer.userId),deviceWasRemoved:({context:s})=>s.team.deviceWasRemoved(s.theirDevice.deviceId),serverWasRemoved:({context:s})=>s.team.serverWasRemoved(s.peer.userId),headsAreEqual:({context:s})=>to(s.team.graph.head,s.syncState?.lastCommonHead)}}).createMachine({context:n,id:"connection",entry:"requestIdentityClaim",initial:"awaitingIdentityClaim",on:{REQUEST_IDENTITY:{actions:"sendIdentityClaim",target:".awaitingIdentityClaim"},ERROR:{actions:"receiveError",target:"#disconnected"},LOCAL_ERROR:{actions:"sendError",target:"#disconnected"}},states:{awaitingIdentityClaim:{always:{guard:"bothSentIdentityClaim",target:"authenticating"},on:{CLAIM_IDENTITY:{actions:"receiveIdentityClaim"}}},authenticating:{initial:"checkingInvitations",states:{checkingInvitations:{always:[{guard:"neitherIsMember",...Y(Vn)},{guard:"weHaveInvitation",target:"awaitingInvitationAcceptance"},{guard:"theyHaveInvitation",target:"validatingInvitation"},{target:"#checkingIdentity"}]},awaitingInvitationAcceptance:{on:{ACCEPT_INVITATION:[{guard:"joinedTheRightTeam",actions:"joinTeam",target:"#checkingIdentity"},Y(Hn)]},...ke},validatingInvitation:{always:[{guard:"invitationIsValid",actions:"acceptInvitation",target:"#checkingIdentity"},Y(Bn)]},checkingIdentity:{id:"checkingIdentity",type:"parallel",states:{provingMyIdentity:{initial:"awaitingIdentityChallenge",states:{awaitingIdentityChallenge:{always:{guard:"weHaveInvitation",target:"done"},on:{CHALLENGE_IDENTITY:{actions:"proveIdentity",target:"awaitingIdentityAcceptance"}},...ke},awaitingIdentityAcceptance:{on:{ACCEPT_IDENTITY:{target:"done"}},...ke},done:{type:"final"}}},verifyingTheirIdentity:{initial:"challengingIdentity",states:{challengingIdentity:{always:[{guard:"theyHaveInvitation",target:"done"},{guard:"deviceUnknown",...Y(Kn)},{actions:"challengeIdentity",target:"awaitingIdentityProof"}]},awaitingIdentityProof:{on:{PROVE_IDENTITY:[{guard:"identityIsValid",actions:"acceptIdentity",target:"done"},Y(Pn)]},...ke},done:{type:"final"}}}},onDone:{target:"done"}},done:{type:"final"}},onDone:{target:"#negotiating"}},negotiating:{id:"negotiating",entry:"sendSeed",on:{SEED:{actions:"deriveSharedKey",target:"synchronizing"}},...ke},synchronizing:{entry:"sendSyncMessage",always:{guard:"headsAreEqual",target:"connected"},on:{SYNC:{actions:["receiveSyncMessage","sendSyncMessage"]}}},connected:{id:"connected",entry:["onConnected","listenForTeamUpdates"],always:[{guard:"memberWasRemoved",...Y(jn)},{guard:"deviceWasRemoved",...Y(Nn)},{guard:"serverWasRemoved",...Y(Un)}],on:{LOCAL_UPDATE:{actions:"sendSyncMessage"},SYNC:{actions:["receiveSyncMessage","sendSyncMessage"]},ENCRYPTED_MESSAGE:{actions:"receiveEncryptedMessage"},DISCONNECT:"#disconnected"}},disconnected:{id:"disconnected",always:{actions:"onDisconnected"}}}});this.#e=He(r),this.#e.subscribe(s=>{const i=Ro(s.value);this.emit("change",i),this.#n(`⏩ ${i} `)}),this.emit=(s,...i)=>(this.#n(`emit ${s} %o`,...i),super.emit(s,...i))}start=(e=[])=>{this.#n("starting"),this.#e.start(),this.#t.start(),this.#s=!0;for(const t of e)this.deliver(t);return this};stop=()=>{if(this.#s&&this.#e.getSnapshot().status!=="done"){const e={type:"DISCONNECT"};this.#e.send(e),this.#t.send(e)}return this.removeAllListeners(),this.#t.stop(),this.#n("connection stopped"),this};deliver(e){const t=an(e);this.#t.receive(t)}send=e=>{b(this._sessionKey,"Can't send encrypted messages until we've finished connecting");const t=tt.encryptBytes(e,this._sessionKey);this.#r("ENCRYPTED_MESSAGE",t)};get state(){return b(this.#s),this.#e.getSnapshot().value}get team(){return this._context.team}get _sessionKey(){return this._context.sessionKey}get _context(){return b(this.#s),this.#e.getSnapshot().context}#a(e){return new Sp({sendMessage:t=>{this.#o("out",t);const n=on(t);e(n)}}).on("message",t=>{if(this.#o("in",t),t.type==="REQUEST_RESEND"){const{index:n}=t.payload;this.#t.resend(n)}else this.#e.send(t)}).on("request",t=>{this.#r("REQUEST_RESEND",{index:t})})}#i(e){this.#n("error: %o",e);const t=en(e,"LOCAL");return this.#e.send(t),{error:t.payload}}#r(e,t){this.#t.send({type:e,payload:t})}#o(e,t){const n=e==="in"?"<-":"->",r=this.#s?this._context.peer?.userName??"?":"?";this.#n(`${n}${r} #${t.index} ${Tp(t)}`)}},Y=e=>({actions:[{type:"fail",params:{error:e}},"onDisconnected"],target:"#disconnected"}),kp=7e3,ke={after:{[kp]:Y(Gn)}};export{P as ADMIN,Of as ADMIN_SCOPE,le as ALL,Op as Connection,mf as DEVICE_ID,lf as ENCRYPTION,Bp as EPHEMERAL_SCOPE,co as HashPurpose,vf as INVITATION,pf as LINK_HASH,yf as LINK_TO_PREVIOUS,gf as SHARED_KEY,hf as SIGNATURE,ff as SYMMETRIC,lt as TEAM_SCOPE,Zn as Team,C as VALID,Q as asymmetric,$e as castServer,Zl as connection,bp as createDevice,J as createKeyset,Hp as createTeam,Kp as createUser,Ep as device,Ce as generateProof,Pp as graphSummary,De as initialState,op as invitation,jp as loadTeam,Ve as redactDevice,Z as redactKeys,Yh as redactUser,Ql as role,ae as signatures,tt as symmetric}; -//# sourceMappingURL=index-DbeJlE6u.js.map +//# sourceMappingURL=index-BvQarRZO.js.map diff --git a/index-DbeJlE6u.js.map b/index-BvQarRZO.js.map similarity index 99% rename from index-DbeJlE6u.js.map rename to index-BvQarRZO.js.map index 1978bdd..537bf41 100644 --- a/index-DbeJlE6u.js.map +++ b/index-BvQarRZO.js.map @@ -1 +1 @@ -{"version":3,"file":"index-DbeJlE6u.js","sources":["../../../../node_modules/@herbcaudill/eventemitter42/dist/EventEmitter.js","../../../../node_modules/@localfirst/shared/dist/assert.js","../../../../node_modules/lodash-es/isObjectLike.js","../../../../node_modules/lodash-es/isSymbol.js","../../../../node_modules/lodash-es/_arrayMap.js","../../../../node_modules/lodash-es/isArray.js","../../../../node_modules/lodash-es/_baseToString.js","../../../../node_modules/lodash-es/identity.js","../../../../node_modules/lodash-es/_WeakMap.js","../../../../node_modules/lodash-es/_baseCreate.js","../../../../node_modules/lodash-es/noop.js","../../../../node_modules/lodash-es/_copyArray.js","../../../../node_modules/lodash-es/_defineProperty.js","../../../../node_modules/lodash-es/_arrayEach.js","../../../../node_modules/lodash-es/_baseFindIndex.js","../../../../node_modules/lodash-es/_baseIsNaN.js","../../../../node_modules/lodash-es/_strictIndexOf.js","../../../../node_modules/lodash-es/_baseIndexOf.js","../../../../node_modules/lodash-es/_arrayIncludes.js","../../../../node_modules/lodash-es/_isIndex.js","../../../../node_modules/lodash-es/_baseAssignValue.js","../../../../node_modules/lodash-es/_assignValue.js","../../../../node_modules/lodash-es/_copyObject.js","../../../../node_modules/lodash-es/isLength.js","../../../../node_modules/lodash-es/isArrayLike.js","../../../../node_modules/lodash-es/_isPrototype.js","../../../../node_modules/lodash-es/_baseTimes.js","../../../../node_modules/lodash-es/_baseIsArguments.js","../../../../node_modules/lodash-es/isArguments.js","../../../../node_modules/lodash-es/stubFalse.js","../../../../node_modules/lodash-es/isBuffer.js","../../../../node_modules/lodash-es/_baseIsTypedArray.js","../../../../node_modules/lodash-es/_baseUnary.js","../../../../node_modules/lodash-es/_nodeUtil.js","../../../../node_modules/lodash-es/isTypedArray.js","../../../../node_modules/lodash-es/_arrayLikeKeys.js","../../../../node_modules/lodash-es/_overArg.js","../../../../node_modules/lodash-es/_nativeKeys.js","../../../../node_modules/lodash-es/_baseKeys.js","../../../../node_modules/lodash-es/keys.js","../../../../node_modules/lodash-es/_nativeKeysIn.js","../../../../node_modules/lodash-es/_baseKeysIn.js","../../../../node_modules/lodash-es/keysIn.js","../../../../node_modules/lodash-es/_isKey.js","../../../../node_modules/lodash-es/_memoizeCapped.js","../../../../node_modules/lodash-es/_stringToPath.js","../../../../node_modules/lodash-es/toString.js","../../../../node_modules/lodash-es/_castPath.js","../../../../node_modules/lodash-es/_toKey.js","../../../../node_modules/lodash-es/_baseGet.js","../../../../node_modules/lodash-es/get.js","../../../../node_modules/lodash-es/_arrayPush.js","../../../../node_modules/lodash-es/_getPrototype.js","../../../../node_modules/lodash-es/_stackClear.js","../../../../node_modules/lodash-es/_stackDelete.js","../../../../node_modules/lodash-es/_stackGet.js","../../../../node_modules/lodash-es/_stackHas.js","../../../../node_modules/lodash-es/_stackSet.js","../../../../node_modules/lodash-es/_Stack.js","../../../../node_modules/lodash-es/_baseAssign.js","../../../../node_modules/lodash-es/_baseAssignIn.js","../../../../node_modules/lodash-es/_cloneBuffer.js","../../../../node_modules/lodash-es/_arrayFilter.js","../../../../node_modules/lodash-es/stubArray.js","../../../../node_modules/lodash-es/_getSymbols.js","../../../../node_modules/lodash-es/_copySymbols.js","../../../../node_modules/lodash-es/_getSymbolsIn.js","../../../../node_modules/lodash-es/_copySymbolsIn.js","../../../../node_modules/lodash-es/_baseGetAllKeys.js","../../../../node_modules/lodash-es/_getAllKeys.js","../../../../node_modules/lodash-es/_getAllKeysIn.js","../../../../node_modules/lodash-es/_DataView.js","../../../../node_modules/lodash-es/_Promise.js","../../../../node_modules/lodash-es/_Set.js","../../../../node_modules/lodash-es/_getTag.js","../../../../node_modules/lodash-es/_initCloneArray.js","../../../../node_modules/lodash-es/_Uint8Array.js","../../../../node_modules/lodash-es/_cloneArrayBuffer.js","../../../../node_modules/lodash-es/_cloneDataView.js","../../../../node_modules/lodash-es/_cloneRegExp.js","../../../../node_modules/lodash-es/_cloneSymbol.js","../../../../node_modules/lodash-es/_cloneTypedArray.js","../../../../node_modules/lodash-es/_initCloneByTag.js","../../../../node_modules/lodash-es/_initCloneObject.js","../../../../node_modules/lodash-es/_baseIsMap.js","../../../../node_modules/lodash-es/isMap.js","../../../../node_modules/lodash-es/_baseIsSet.js","../../../../node_modules/lodash-es/isSet.js","../../../../node_modules/lodash-es/_baseClone.js","../../../../node_modules/lodash-es/clone.js","../../../../node_modules/lodash-es/_setCacheAdd.js","../../../../node_modules/lodash-es/_setCacheHas.js","../../../../node_modules/lodash-es/_SetCache.js","../../../../node_modules/lodash-es/_arraySome.js","../../../../node_modules/lodash-es/_cacheHas.js","../../../../node_modules/lodash-es/_equalArrays.js","../../../../node_modules/lodash-es/_mapToArray.js","../../../../node_modules/lodash-es/_setToArray.js","../../../../node_modules/lodash-es/_equalByTag.js","../../../../node_modules/lodash-es/_equalObjects.js","../../../../node_modules/lodash-es/_baseIsEqualDeep.js","../../../../node_modules/lodash-es/_baseIsEqual.js","../../../../node_modules/lodash-es/_baseIsMatch.js","../../../../node_modules/lodash-es/_isStrictComparable.js","../../../../node_modules/lodash-es/_getMatchData.js","../../../../node_modules/lodash-es/_matchesStrictComparable.js","../../../../node_modules/lodash-es/_baseMatches.js","../../../../node_modules/lodash-es/_baseHasIn.js","../../../../node_modules/lodash-es/_hasPath.js","../../../../node_modules/lodash-es/hasIn.js","../../../../node_modules/lodash-es/_baseMatchesProperty.js","../../../../node_modules/lodash-es/_baseProperty.js","../../../../node_modules/lodash-es/_basePropertyDeep.js","../../../../node_modules/lodash-es/property.js","../../../../node_modules/lodash-es/_baseIteratee.js","../../../../node_modules/lodash-es/_createSet.js","../../../../node_modules/lodash-es/_baseUniq.js","../../../../node_modules/lodash-es/uniq.js","../../../../node_modules/lodash-es/uniqBy.js","../../../../node_modules/@noble/hashes/_assert.js","../../../../node_modules/@noble/hashes/_u64.js","../../../../node_modules/@noble/hashes/crypto.js","../../../../node_modules/@noble/hashes/utils.js","../../../../node_modules/@noble/hashes/sha3.js","../../../../node_modules/@paralleldrive/cuid2/src/index.js","../../../../node_modules/@paralleldrive/cuid2/index.js","../../../../node_modules/@localfirst/crdx/dist/index.js","../../../../node_modules/xstate/dev/dist/xstate-dev.esm.js","../../../../node_modules/xstate/dist/raise-0f7cf128.esm.js","../../../../node_modules/xstate/dist/log-15d0f775.esm.js","../../../../node_modules/xstate/dist/xstate.esm.js","../../../../node_modules/@localfirst/auth/dist/index.js"],"sourcesContent":["export class EventEmitter {\n #listenerMap = {};\n #eventsCount = 0;\n /** Calls each of the listeners registered for a given event. */\n emit(event, ...args) {\n if (!this.#listenerMap[event])\n return false;\n const listeners = [...this.#listenerMap[event]];\n for (let i = 0; i < listeners.length; i++) {\n const { once, fn } = listeners[i];\n if (once)\n this.removeListener(event, fn);\n fn(...args);\n }\n return true;\n }\n /** Add a listener for a given event. */\n addListener(event, fn) {\n return this.#addListener(event, fn, false);\n }\n on = this.addListener;\n /** Add a one-time listener for a given event. */\n once(event, fn) {\n return this.#addListener(event, fn, true);\n }\n removeListener(event, fn) {\n const listeners = this.#listenerMap[event];\n if (listeners) {\n if (!fn) {\n this.removeAllListeners(event);\n }\n else {\n // find the listener\n const removals = [];\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i].fn === fn) {\n const listener = listeners[i];\n // remove this listener\n this.#eventsCount -= 1;\n if (this.#eventsCount === 0) {\n // if there are no more listeners, reset the events object\n this.#listenerMap = {};\n this.#eventsCount = 0;\n }\n else if (listeners.length === 1) {\n // if this is the last listener, remove the key\n delete this.#listenerMap[event];\n }\n else {\n // remove this listener from the array\n removals.push(i);\n }\n }\n }\n for (let i = removals.length - 1; i >= 0; i--) {\n listeners.splice(removals[i], 1);\n }\n }\n return this;\n }\n }\n off = this.removeListener;\n removeAllListeners(event) {\n if (event) {\n const listeners = this.#listenerMap[event];\n // just remove listeners for this event\n if (listeners) {\n this.#eventsCount -= listeners.length;\n if (this.#eventsCount === 0) {\n // if there are no more listeners, reset the events object\n this.#listenerMap = {};\n }\n else {\n // remove the key\n delete this.#listenerMap[event];\n }\n }\n }\n else {\n this.#listenerMap = {};\n this.#eventsCount = 0;\n }\n return this;\n }\n #addListener(event, fn, once = false) {\n const listener = { fn, once };\n const events = this.#listenerMap[event] ?? [];\n events.push(listener);\n this.#listenerMap[event] = events;\n this.#eventsCount++;\n return this;\n }\n}\n//# sourceMappingURL=EventEmitter.js.map","export function assert(value, message = 'Assertion failed') {\n if (value === false || value === null || value === undefined) {\n const error = new Error(trimLines(message));\n error.stack = removeLine(error.stack, 'assert.js');\n throw error;\n }\n}\nconst trimLines = (s) => s\n .split('\\n')\n .map(s => s.trim())\n .join('\\n');\nconst removeLine = (s = '', targetText) => s\n .split('\\n')\n .filter(line => !line.includes(targetText))\n .join('\\n');\n//# sourceMappingURL=assert.js.map","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n","import baseUniq from './_baseUniq.js';\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nexport default uniq;\n","import baseIteratee from './_baseIteratee.js';\nimport baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nexport default uniqBy;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBytes = isBytes;\nexports.number = number;\nexports.bool = bool;\nexports.bytes = bytes;\nexports.hash = hash;\nexports.exists = exists;\nexports.output = output;\nfunction number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`positive integer expected, not ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`boolean expected, not ${b}`);\n}\n// copied from utils\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nfunction bytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(h.outputLen);\n number(h.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nconst assert = { number, bool, bytes, hash, exists, output };\nexports.default = assert;\n//# sourceMappingURL=_assert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.add5L = exports.add5H = exports.add4H = exports.add4L = exports.add3H = exports.add3L = exports.rotlBL = exports.rotlBH = exports.rotlSL = exports.rotlSH = exports.rotr32L = exports.rotr32H = exports.rotrBL = exports.rotrBH = exports.rotrSL = exports.rotrSH = exports.shrSL = exports.shrSH = exports.toBig = void 0;\nexports.fromBig = fromBig;\nexports.split = split;\nexports.add = add;\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\nexports.toBig = toBig;\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nexports.shrSH = shrSH;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.shrSL = shrSL;\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexports.rotrSH = rotrSH;\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.rotrSL = rotrSL;\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexports.rotrBH = rotrBH;\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\nexports.rotrBL = rotrBL;\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nexports.rotr32H = rotr32H;\nconst rotr32L = (h, _l) => h;\nexports.rotr32L = rotr32L;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexports.rotlSH = rotlSH;\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\nexports.rotlSL = rotlSL;\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexports.rotlBH = rotlBH;\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\nexports.rotlBL = rotlBL;\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexports.add3L = add3L;\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexports.add3H = add3H;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexports.add4L = add4L;\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexports.add4H = add4H;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexports.add5L = add5L;\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\nexports.add5H = add5H;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexports.default = u64;\n//# sourceMappingURL=_u64.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.crypto = void 0;\nexports.crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","\"use strict\";\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Hash = exports.nextTick = exports.byteSwapIfBE = exports.byteSwap = exports.isLE = exports.rotl = exports.rotr = exports.createView = exports.u32 = exports.u8 = void 0;\nexports.isBytes = isBytes;\nexports.byteSwap32 = byteSwap32;\nexports.bytesToHex = bytesToHex;\nexports.hexToBytes = hexToBytes;\nexports.asyncLoop = asyncLoop;\nexports.utf8ToBytes = utf8ToBytes;\nexports.toBytes = toBytes;\nexports.concatBytes = concatBytes;\nexports.checkOpts = checkOpts;\nexports.wrapConstructor = wrapConstructor;\nexports.wrapConstructorWithOpts = wrapConstructorWithOpts;\nexports.wrapXOFConstructorWithOpts = wrapXOFConstructorWithOpts;\nexports.randomBytes = randomBytes;\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nconst crypto_1 = require(\"@noble/hashes/crypto\");\nconst _assert_js_1 = require(\"./_assert.js\");\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n// Cast array to different type\nconst u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.u8 = u8;\nconst u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nexports.u32 = u32;\n// Cast array to view\nconst createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.createView = createView;\n// The rotate right (circular right shift) operation for uint32\nconst rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexports.rotr = rotr;\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | ((word >>> (32 - shift)) >>> 0);\nexports.rotl = rotl;\nexports.isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// The byte swap operation for uint32\nconst byteSwap = (word) => ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\nexports.byteSwap = byteSwap;\n// Conditionally byte swap if on a big-endian platform\nexports.byteSwapIfBE = exports.isLE ? (n) => n : (n) => (0, exports.byteSwap)(n);\n// In place byte swap for Uint32Array\nfunction byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = (0, exports.byteSwap)(arr[i]);\n }\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nfunction bytesToHex(bytes) {\n (0, _assert_js_1.bytes)(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nconst nextTick = async () => { };\nexports.nextTick = nextTick;\n// Returns control to thread each 'tick' ms to avoid blocking\nasync function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await (0, exports.nextTick)();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nfunction utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nfunction toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n (0, _assert_js_1.bytes)(data);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nfunction concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n (0, _assert_js_1.bytes)(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nclass Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexports.Hash = Hash;\nconst toStr = {}.toString;\nfunction checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nfunction wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nfunction wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nfunction wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nfunction randomBytes(bytesLength = 32) {\n if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === 'function') {\n return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto_1.crypto && typeof crypto_1.crypto.randomBytes === 'function') {\n return crypto_1.crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shake256 = exports.shake128 = exports.keccak_512 = exports.keccak_384 = exports.keccak_256 = exports.keccak_224 = exports.sha3_512 = exports.sha3_384 = exports.sha3_256 = exports.sha3_224 = exports.Keccak = void 0;\nexports.keccakP = keccakP;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst _u64_js_1 = require(\"./_u64.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ (0, _u64_js_1.split)(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? (0, _u64_js_1.rotlBH)(h, l, s) : (0, _u64_js_1.rotlSH)(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? (0, _u64_js_1.rotlBL)(h, l, s) : (0, _u64_js_1.rotlSL)(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nfunction keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nclass Keccak extends utils_js_1.Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n (0, _assert_js_1.number)(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = (0, utils_js_1.u32)(this.state);\n }\n keccak() {\n if (!utils_js_1.isLE)\n (0, utils_js_1.byteSwap32)(this.state32);\n keccakP(this.state32, this.rounds);\n if (!utils_js_1.isLE)\n (0, utils_js_1.byteSwap32)(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n (0, _assert_js_1.exists)(this);\n const { blockLen, state } = this;\n data = (0, utils_js_1.toBytes)(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n (0, _assert_js_1.exists)(this, false);\n (0, _assert_js_1.bytes)(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n (0, _assert_js_1.number)(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n (0, _assert_js_1.output)(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nexports.Keccak = Keccak;\nconst gen = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapConstructor)(() => new Keccak(blockLen, suffix, outputLen));\nexports.sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexports.sha3_256 = gen(0x06, 136, 256 / 8);\nexports.sha3_384 = gen(0x06, 104, 384 / 8);\nexports.sha3_512 = gen(0x06, 72, 512 / 8);\nexports.keccak_224 = gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexports.keccak_256 = gen(0x01, 136, 256 / 8);\nexports.keccak_384 = gen(0x01, 104, 384 / 8);\nexports.keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapXOFConstructorWithOpts)((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexports.shake128 = genShake(0x1f, 168, 128 / 8);\nexports.shake256 = genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","/* global global, window, module */\nconst { sha3_512: sha3 } = require(\"@noble/hashes/sha3\");\n\nconst defaultLength = 24;\nconst bigLength = 32;\n\nconst createEntropy = (length = 4, random = Math.random) => {\n let entropy = \"\";\n\n while (entropy.length < length) {\n entropy = entropy + Math.floor(random() * 36).toString(36);\n }\n return entropy;\n};\n\n/*\n * Adapted from https://github.com/juanelas/bigint-conversion\n * MIT License Copyright (c) 2018 Juan Hernández Serrano\n */\nfunction bufToBigInt(buf) {\n let bits = 8n;\n\n let value = 0n;\n for (const i of buf.values()) {\n const bi = BigInt(i);\n value = (value << bits) + bi;\n }\n return value;\n}\n\nconst hash = (input = \"\") => {\n // Drop the first character because it will bias the histogram\n // to the left.\n return bufToBigInt(sha3(input)).toString(36).slice(1);\n};\n\nconst alphabet = Array.from({ length: 26 }, (x, i) =>\n String.fromCharCode(i + 97)\n);\n\nconst randomLetter = (random) =>\n alphabet[Math.floor(random() * alphabet.length)];\n\n/*\nThis is a fingerprint of the host environment. It is used to help\nprevent collisions when generating ids in a distributed system.\nIf no global object is available, you can pass in your own, or fall back\non a random string.\n*/\nconst createFingerprint = ({\n globalObj = typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : {},\n random = Math.random,\n} = {}) => {\n const globals = Object.keys(globalObj).toString();\n const sourceString = globals.length\n ? globals + createEntropy(bigLength, random)\n : createEntropy(bigLength, random);\n\n return hash(sourceString).substring(0, bigLength);\n};\n\nconst createCounter = (count) => () => {\n return count++;\n};\n\n// ~22k hosts before 50% chance of initial counter collision\n// with a remaining counter range of 9.0e+15 in JavaScript.\nconst initialCountMax = 476782367;\n\nconst init = ({\n // Fallback if the user does not pass in a CSPRNG. This should be OK\n // because we don't rely solely on the random number generator for entropy.\n // We also use the host fingerprint, current time, and a session counter.\n random = Math.random,\n counter = createCounter(Math.floor(random() * initialCountMax)),\n length = defaultLength,\n fingerprint = createFingerprint({ random }),\n} = {}) => {\n return function cuid2() {\n const firstLetter = randomLetter(random);\n\n // If we're lucky, the `.toString(36)` calls may reduce hashing rounds\n // by shortening the input to the hash function a little.\n const time = Date.now().toString(36);\n const count = counter().toString(36);\n\n // The salt should be long enough to be globally unique across the full\n // length of the hash. For simplicity, we use the same length as the\n // intended id output.\n const salt = createEntropy(length, random);\n const hashInput = `${time + salt + count + fingerprint}`;\n\n return `${firstLetter + hash(hashInput).substring(1, length)}`;\n };\n};\n\nconst createId = init();\n\nconst isCuid = (id, { minLength = 2, maxLength = bigLength } = {}) => {\n const length = id.length;\n const regex = /^[0-9a-z]+$/;\n\n try {\n if (\n typeof id === \"string\" &&\n length >= minLength &&\n length <= maxLength &&\n regex.test(id)\n )\n return true;\n } finally {\n }\n\n return false;\n};\n\nmodule.exports.getConstants = () => ({ defaultLength, bigLength });\nmodule.exports.init = init;\nmodule.exports.createId = createId;\nmodule.exports.bufToBigInt = bufToBigInt;\nmodule.exports.createCounter = createCounter;\nmodule.exports.createFingerprint = createFingerprint;\nmodule.exports.isCuid = isCuid;\n","const { createId, init, getConstants, isCuid } = require(\"./src/index\");\n\nmodule.exports.createId = createId;\nmodule.exports.init = init;\nmodule.exports.getConstants = getConstants;\nmodule.exports.isCuid = isCuid;\n","// src/graph/append.ts\nimport { asymmetric } from \"@localfirst/crypto\";\n\n// src/graph/hashLink.ts\nimport { hash } from \"@localfirst/crypto\";\n\n// src/constants.ts\nvar SIGNATURE = \"SIGNATURE\";\nvar ENCRYPTION = \"ENCRYPTION\";\nvar SYMMETRIC = \"SYMMETRIC\";\nvar LINK_HASH = \"LINK_HASH\";\nvar HashPurpose = {\n SIGNATURE,\n ENCRYPTION,\n SYMMETRIC,\n LINK_HASH\n};\nvar ROOT = \"ROOT\";\nvar MERGE = \"MERGE\";\nvar VALID = { isValid: true };\nvar EPHEMERAL_SCOPE = {\n type: \"EPHEMERAL\",\n name: \"EPHEMERAL\"\n};\n\n// src/graph/hashLink.ts\nvar { LINK_HASH: LINK_HASH2 } = HashPurpose;\nvar hashEncryptedLink = (body) => {\n return hash(LINK_HASH2, body);\n};\n\n// src/graph/append.ts\nvar append = ({\n graph,\n action,\n user,\n context = {},\n keys\n}) => {\n const { publicKey: senderPublicKey, secretKey: senderSecretKey } = user.keys.encryption;\n const { publicKey: recipientPublicKey } = keys.encryption;\n const body = {\n ...action,\n ...context,\n userId: user.userId,\n timestamp: Date.now(),\n prev: graph.head ?? []\n // If there are no previous heads, this is the root node\n };\n const encryptedBody = asymmetric.encryptBytes({\n secret: body,\n recipientPublicKey,\n senderSecretKey\n });\n const hash4 = hashEncryptedLink(encryptedBody);\n const link = {\n hash: hash4,\n body\n };\n const encryptedLink = {\n senderPublicKey,\n recipientPublicKey,\n encryptedBody\n };\n return {\n // if the graph didn't already have a root, this is it\n root: graph.root ?? hash4,\n // we just added the new head, so we're guaranteed to only have one\n head: [hash4],\n // add the new encryptedLink\n encryptedLinks: {\n ...graph.encryptedLinks,\n [hash4]: encryptedLink\n },\n // add the new unencrypted link\n links: {\n ...graph.links,\n [hash4]: link\n }\n };\n};\n\n// src/graph/children.ts\nimport { memoize } from \"@localfirst/shared\";\n\n// src/graph/getLink.ts\nvar getLink = (graph, hash4) => graph.links[hash4];\n\n// src/graph/children.ts\nvar getChildrenHashes = (graph, hash4) => {\n const childrenLookup = calculateChildren(graph);\n return childrenLookup[hash4] || [];\n};\nvar getChildren = (graph, link) => {\n return getChildrenHashes(graph, link.hash).map((hash4) => getLink(graph, hash4));\n};\nvar calculateChildren = memoize((graph) => {\n const childrenLookup = {};\n for (const link of Object.values(graph.links)) {\n const parents = link.body.prev;\n for (const parent of parents) {\n const children = childrenLookup[parent] || [];\n children.push(link.hash);\n childrenLookup[parent] = children;\n }\n }\n return childrenLookup;\n});\n\n// src/graph/concurrency.ts\nimport { memoize as memoize4 } from \"@localfirst/shared\";\n\n// src/graph/getHashes.ts\nvar getHashes = (graph) => Object.keys(graph.links);\n\n// src/graph/getPredecessors.ts\nimport { assert, memoize as memoize2 } from \"@localfirst/shared\";\nimport { uniq } from \"lodash-es\";\nvar memoizeResolver = (graph, hash4) => `${graph.head.join(\"\")}:${hash4}`;\nvar getPredecessors = (graph, link) => getPredecessorHashes(graph, link.hash).map((h) => graph.links[h]).filter((link2) => link2 !== void 0);\nvar getPredecessorHashes = memoize2((graph, hash4) => {\n const link = getLink(graph, hash4);\n assert(link);\n const parents = link.body.prev;\n const predecessors = parents.flatMap((parent) => getPredecessorHashes(graph, parent));\n return uniq(parents.concat(predecessors));\n}, memoizeResolver);\n\n// src/graph/isPredecessor.ts\nvar isPredecessor = (graph, a, b) => {\n return a !== void 0 && b !== void 0 && a.hash in graph.links && b.hash in graph.links && getPredecessorHashes(graph, b.hash).includes(a.hash);\n};\nvar isPredecessorHash = (graph, a, b) => getPredecessorHashes(graph, b).includes(a);\n\n// src/graph/getSuccessors.ts\nimport { memoize as memoize3 } from \"@localfirst/shared\";\nimport { uniq as uniq2 } from \"lodash-es\";\nvar memoizeResolver2 = (graph, hash4) => `${graph.head.join(\"\")}:${hash4}`;\nvar getSuccessorHashes = memoize3((graph, hash4) => {\n const children = getChildrenHashes(graph, hash4);\n const successors = children.flatMap((parent) => getSuccessorHashes(graph, parent));\n return uniq2(children.concat(successors));\n}, memoizeResolver2);\nvar getSuccessors = (graph, link) => getSuccessorHashes(graph, link.hash).map((h) => graph.links[h]).filter((link2) => link2 !== void 0);\n\n// src/graph/isSuccessor.ts\nvar isSuccessor = (graph, a, b) => {\n return a !== void 0 && b !== void 0 && a.hash in graph.links && b.hash in graph.links && getSuccessorHashes(graph, b.hash).includes(a.hash);\n};\nvar isSuccessorHash = (graph, a, b) => getSuccessorHashes(graph, b).includes(a);\n\n// src/graph/concurrency.ts\nvar getConcurrentLinks = (graph, link) => {\n return getConcurrentHashes(graph, link.hash).map((hash4) => getLink(graph, hash4));\n};\nvar getConcurrentHashes = (graph, hash4) => {\n const concurrencyLookup = calculateConcurrency(graph);\n return concurrencyLookup[hash4];\n};\nvar calculateConcurrency = memoize4((graph) => {\n const concurrencyLookup = {};\n for (const _ in graph.links) {\n const hash4 = _;\n concurrencyLookup[hash4] = getHashes(graph).filter((b) => isConcurrent(graph, hash4, b)).sort();\n }\n return concurrencyLookup;\n});\nvar isConcurrent = (graph, a, b) => a !== b && // a link isn't concurrent with itself\n!isPredecessorHash(graph, a, b) && // a link isn't concurrent with any of its predecessors\n!isSuccessorHash(graph, a, b);\nvar getConcurrentBubbles = (graph) => {\n const seen = {};\n const getBubble = (a) => {\n const bubble = [a];\n for (const b of getConcurrentHashes(graph, a))\n if (!seen[b]) {\n seen[b] = true;\n bubble.push(...getBubble(b));\n }\n return bubble;\n };\n const bubbles = [];\n for (const _ in graph.links) {\n const hash4 = _;\n if (!seen[hash4]) {\n seen[hash4] = true;\n const bubble = getBubble(hash4);\n if (bubble.length > 1) {\n bubbles.push(bubble);\n }\n }\n }\n return bubbles;\n};\n\n// src/graph/createGraph.ts\nimport { createId } from \"@paralleldrive/cuid2\";\nvar EMPTY_GRAPH = {\n root: void 0,\n head: void 0,\n encryptedLinks: {},\n links: {}\n};\nvar createGraph = ({\n user,\n id = createId(),\n name = id,\n rootPayload = {},\n context = {},\n keys\n}) => {\n const payload = {\n name,\n id,\n ...rootPayload\n };\n const rootAction = {\n type: ROOT,\n prev: [],\n payload\n };\n const graph = append({\n graph: EMPTY_GRAPH,\n action: rootAction,\n user,\n context,\n keys\n });\n return graph;\n};\n\n// src/graph/decrypt.ts\nimport { asymmetric as asymmetric2 } from \"@localfirst/crypto\";\n\n// src/util/arrayToMap.ts\nvar arrayToMap = (keyAccessor) => {\n return (result, current) => {\n const key = typeof keyAccessor === \"function\" ? keyAccessor(current) : current[keyAccessor];\n return {\n ...result,\n [key]: current\n };\n };\n};\n\n// src/keyset/types.ts\nvar KeyType = {\n GRAPH: \"GRAPH\",\n USER: \"USER\"\n};\nvar hasSecrets = (keys) => keys.encryption.hasOwnProperty(\"secretKey\") && keys.signature.hasOwnProperty(\"secretKey\") && \"secretKey\" in keys;\nvar isKeyset = (k) => k !== void 0 && //\n\"secretKey\" in k && \"encryption\" in k && \"signature\" in k;\nvar isKeyring = (k) => !Array.isArray(k) && !isKeyset(k);\n\n// src/keyset/createKeyring.ts\nvar createKeyring = (keys) => {\n if (isKeyring(keys))\n return keys;\n if (isKeyset(keys))\n keys = [keys];\n return keys.reduce(\n arrayToMap((k) => k.encryption.publicKey),\n {}\n );\n};\n\n// src/graph/decrypt.ts\nimport { assert as assert2 } from \"@localfirst/shared\";\nvar decryptLink = (encryptedLink, keys) => {\n const { senderPublicKey, recipientPublicKey, encryptedBody } = encryptedLink;\n const keyring = createKeyring(keys);\n const keyset = keyring[recipientPublicKey];\n assert2(keyset, `Can't decrypt link: don't have the correct keyset`);\n const cipher = toUint8Array(encryptedBody);\n const decryptedLinkBody = asymmetric2.decryptBytes({\n cipher,\n recipientSecretKey: keyset.encryption.secretKey,\n senderPublicKey\n });\n return {\n hash: hashEncryptedLink(encryptedBody),\n body: decryptedLinkBody\n };\n};\nvar decryptGraph = ({\n encryptedGraph,\n keys\n}) => {\n const { encryptedLinks, root, childMap = {} } = encryptedGraph;\n const links = encryptedGraph.links ?? {};\n const decrypt = (hash4, prevLinks = {}) => {\n const encryptedLink = encryptedLinks[hash4];\n const decryptedLink = links[hash4] ?? // if it's already decrypted, don't bother decrypting it again\n decryptLink(encryptedLink, keys);\n let newLinks = {\n [hash4]: decryptedLink\n };\n const children = childMap[hash4] ?? [];\n for (const hash5 of children) {\n newLinks = { ...newLinks, ...decrypt(hash5, newLinks) };\n }\n return { ...prevLinks, ...newLinks };\n };\n const decryptedLinks = decrypt(root);\n return {\n ...encryptedGraph,\n links: decryptedLinks\n };\n};\nvar toUint8Array = (buf) => {\n return !isBuffer(buf) ? new Uint8Array(buf) : new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n};\nvar isBuffer = (buf) => \"buffer\" in buf && \"byteOffset\" in buf && \"byteLength\" in buf;\n\n// src/graph/getEncryptedLinks.ts\nvar getEncryptedLinks = (graph, hashes) => Object.fromEntries(hashes.map((hash4) => [hash4, getEncryptedLink(graph, hash4)]));\nvar getEncryptedLink = (graph, hash4) => graph.encryptedLinks[hash4];\n\n// src/graph/getHead.ts\nvar getHead = (graph) => graph.head.map((hash4) => getLink(graph, hash4));\n\n// src/graph/getParents.ts\nfunction getParents(graph, linkOrHash) {\n if (typeof linkOrHash === \"string\") {\n const hash4 = linkOrHash;\n const link = getLink(graph, hash4);\n return link.body.prev;\n } else {\n const link = linkOrHash;\n return link.body.prev.map((hash4) => getLink(graph, hash4));\n }\n}\n\n// src/graph/getParentMap.ts\nvar EMPTY = {};\nvar getParentMap = ({\n graph,\n depth,\n start = graph.head,\n end = [],\n prev,\n hashes\n}) => {\n if (hashes) {\n return hashes.reduce(\n (result, hash4) => ({\n ...result,\n [hash4]: getParents(graph, hash4)\n }),\n EMPTY\n );\n }\n if (prev)\n start = getTails(prev);\n if (depth === 0)\n return EMPTY;\n return start.reduce((result, hash4) => {\n const parents = getParents(graph, hash4);\n const parentsToLookup = parents.filter((parent) => !(parent in result)).filter((parent) => !end.includes(parent));\n const parentLinks = getParentMap({\n graph,\n depth: depth ? depth - 1 : void 0,\n start: parentsToLookup,\n end\n });\n return {\n ...result,\n [hash4]: parents,\n ...parentLinks\n };\n }, EMPTY);\n};\nvar getTails = (linkMap) => {\n const keys = Object.keys(linkMap);\n const allParents = keys.flatMap((hash4) => linkMap[hash4]);\n const tails = allParents.filter((hash4) => !(hash4 in linkMap));\n return tails;\n};\nvar getChildMap = (graph) => {\n const childMap = {};\n for (const hash4 of getHashes(graph))\n for (const parent of getParents(graph, hash4)) {\n if (!childMap[parent])\n childMap[parent] = [];\n childMap[parent].push(hash4);\n }\n return childMap;\n};\nvar invertLinkMap = (linkMap) => {\n const inverted = {};\n const keys = Object.keys(linkMap);\n for (const hash4 of keys) {\n for (const parent of linkMap[hash4]) {\n if (!inverted[parent])\n inverted[parent] = [];\n inverted[parent].push(hash4);\n }\n }\n return inverted;\n};\n\n// src/graph/getRoot.ts\nvar getRoot = (graph) => graph.links[graph.root];\n\n// src/graph/topoSort.ts\nvar topoSort = (graph, options = {}) => {\n const { comparator = byHash } = options;\n let links = Object.values(graph.links);\n const remainingParents = Object.fromEntries(\n links.map((link) => [link.hash, link.body.prev.length])\n );\n const sorted = [];\n const take = (link) => {\n sorted.push(link);\n links = links.filter((l) => l.hash !== link.hash);\n const children = getChildrenHashes(graph, link.hash);\n for (const child2 of children)\n remainingParents[child2]--;\n if (children.length !== 1)\n return;\n const childHash = children[0];\n if (remainingParents[childHash] > 0)\n return;\n const child = graph.links[childHash];\n take(child);\n };\n while (links.length > 0) {\n const queue = links.filter((link) => remainingParents[link.hash] === 0).sort(comparator);\n const nextLink = queue.shift();\n take(nextLink);\n }\n return sorted;\n};\nvar byHash = (a, b) => a.hash < b.hash ? -1 : a.hash > b.hash ? 1 : 0;\n\n// src/graph/getSequence.ts\nvar getSequence = (graph, resolver = baseResolver) => {\n const { sort = byHash, filter = noFilter } = resolver(graph);\n const sorted = topoSort(graph, { comparator: sort });\n return sorted.map((link) => {\n const isInvalid = link.isInvalid ?? !filter(link);\n return { ...link, isInvalid };\n });\n};\nvar baseResolver = (_) => ({});\nvar noFilter = (_) => true;\n\n// src/graph/headsAreEqual.ts\nvar headsAreEqual = (a, b) => {\n if (a === void 0 || b === void 0)\n return false;\n if (a.length !== b.length)\n return false;\n a.sort();\n b.sort();\n return a.every((hash4, i) => hash4 === b[i]);\n};\n\n// src/graph/merge.ts\nimport { uniq as uniq3 } from \"lodash-es\";\nvar merge = (ours, theirs) => {\n if (ours.root !== theirs.root)\n throw new Error(\"Cannot merge two graphs with different roots\");\n const mergedLinks = {\n ...theirs.links,\n ...ours.links\n };\n const mergedEncryptedLinks = {\n ...theirs.encryptedLinks,\n ...ours.encryptedLinks\n };\n const mergedHeads = uniq3([...ours.head, ...theirs.head]);\n const newHeads = mergedHeads.filter(isNotParentOfAnyOf(mergedLinks));\n const mergedGraph = {\n root: ours.root,\n head: newHeads,\n encryptedLinks: mergedEncryptedLinks,\n links: mergedLinks\n };\n mergedGraph.head = mergedGraph.head.sort();\n return mergedGraph;\n};\nvar isNotParentOfAnyOf = (links) => (h) => !Object.values(links).some(isParent(h));\nvar isParent = (h) => (l) => l.body.prev.includes(h);\n\n// src/graph/redactGraph.ts\nvar redactGraph = (graph) => {\n const { head, root, encryptedLinks } = graph;\n const childMap = getChildMap(graph);\n return {\n head,\n root,\n encryptedLinks,\n childMap\n };\n};\n\n// src/graph/serialize.ts\nimport { pack, unpack } from \"msgpackr\";\nvar serialize = (graph) => {\n return pack(redactGraph(graph));\n};\nvar deserialize = (serialized, keys) => {\n const graph = unpack(serialized);\n return decryptGraph({ encryptedGraph: graph, keys });\n};\n\n// src/keyset/createKeyset.ts\nimport { hash as hash2, asymmetric as asymmetric3, signatures, stretch, randomKey } from \"@localfirst/crypto\";\nvar { SIGNATURE: SIGNATURE2, ENCRYPTION: ENCRYPTION2, SYMMETRIC: SYMMETRIC2 } = HashPurpose;\nvar createKeyset = (scope, seed = randomKey()) => {\n const { type, name = type } = scope;\n const stretchedSeed = stretch(`${name}:${type}:${seed}`);\n return {\n type,\n name,\n generation: 0,\n signature: signatures.keyPair(hash2(SIGNATURE2, stretchedSeed).slice(0, 32)),\n encryption: asymmetric3.keyPair(hash2(ENCRYPTION2, stretchedSeed).slice(0, 32)),\n secretKey: hash2(SYMMETRIC2, stretchedSeed)\n };\n};\n\n// src/keyset/getLatestGeneration.ts\nvar getLatestGeneration = (keyring) => {\n let latest;\n for (const publicKey in keyring) {\n const keyset = keyring[publicKey];\n if (latest === void 0 || keyset.generation > latest.generation) {\n latest = keyset;\n }\n }\n return latest;\n};\n\n// src/keyset/redactKeys.ts\nvar redactKeys = (keys) => hasSecrets(keys) ? {\n type: keys.type,\n name: keys.name,\n generation: keys.generation,\n encryption: keys.encryption.publicKey,\n signature: keys.signature.publicKey\n} : keys;\n\n// src/store/Store.ts\nimport { EventEmitter } from \"@herbcaudill/eventemitter42\";\nimport { assert as assert3 } from \"@localfirst/shared\";\n\n// src/validator/types.ts\nvar ValidationError = class extends Error {\n name;\n details;\n constructor(message, details) {\n super();\n this.message = message;\n this.details = details;\n }\n};\n\n// src/validator/validators.ts\nimport { memoize as memoize5 } from \"@localfirst/shared\";\nimport { hash as hash3 } from \"@localfirst/crypto\";\nvar _validators = {\n /** Does this link's hash check out? */\n validateHash(link, graph) {\n const { hash: hash4 } = link;\n const { encryptedBody } = graph.encryptedLinks[hash4];\n const computedHash = hashEncryptedLink(encryptedBody);\n if (hash4 === computedHash)\n return VALID;\n return fail(`The hash calculated for this link does not match.`, {\n link,\n hash: hash4,\n expected: computedHash\n });\n },\n /** Do the previous link(s) referenced by this link exist? */\n validatePrev(link, graph) {\n for (const hash4 of link.body.prev)\n if (!(hash4 in graph.links))\n return fail(\n `The link referenced by one of the hashes in the \\`prev\\` property does not exist.`\n );\n return VALID;\n },\n /** If this is a root link, it should not have any predecessors, and should be the graph's root */\n validateRoot(link, graph) {\n const hasNoPrevLink = link.body.prev.length === 0;\n const hasRootType = \"type\" in link.body && link.body.type === ROOT;\n const isTheGraphRoot = getRoot(graph) === link;\n if (hasNoPrevLink === isTheGraphRoot && isTheGraphRoot === hasRootType)\n return VALID;\n const message = hasRootType ? (\n // ROOT\n hasNoPrevLink ? `The ROOT link has to be the link referenced by the graph \\`root\\` property` : `The ROOT link cannot have any predecessors`\n ) : (\n // not ROOT\n hasNoPrevLink ? `Non-ROOT links must have predecessors` : \"The link referenced by the graph `root` property must be a ROOT link\"\n );\n return fail(message, { link, graph });\n },\n /** Sanity check on timestamps: They can't be in the future, relative to the current time on this\n * device. And they can't be earlier than any links they depend on. */\n validateTimestamps(link, graph) {\n const { timestamp } = link.body;\n const now = Date.now();\n if (timestamp > now) {\n return fail(`The link's timestamp is in the future.`, { link, now });\n }\n for (const hash4 of link.body.prev) {\n const prevLink = graph.links[hash4];\n if (prevLink.body.timestamp > timestamp)\n return fail(`This link's timestamp can't be earlier than a previous link.`, {\n link,\n prevLink\n });\n }\n return VALID;\n }\n};\nvar fail = (msg, args) => {\n return {\n isValid: false,\n error: new ValidationError(msg, args)\n };\n};\nvar memoizeFunctionMap = (source) => {\n const result = {};\n const memoizeResolver3 = (link, graph) => {\n return `${hash3(\"memoize\", link)}:${hash3(\"memoize\", graph)}`;\n };\n for (const key in source)\n result[key] = memoize5(source[key], memoizeResolver3);\n return result;\n};\nvar validators = memoizeFunctionMap(_validators);\n\n// src/validator/validate.ts\nvar validate = (graph, customValidators = {}) => {\n {\n const rootHash = graph.root;\n const rootLink = graph.encryptedLinks[rootHash];\n const computedHash = hashEncryptedLink(rootLink.encryptedBody);\n if (computedHash !== rootHash)\n return fail(\"Root hash does not match the hash of the root link\", {\n rootHash,\n computedHash,\n rootLink\n });\n }\n for (const headHash of graph.head) {\n const headLink = graph.encryptedLinks[headHash];\n const computedHash = hashEncryptedLink(headLink.encryptedBody);\n if (computedHash !== headHash)\n return fail(\"Head hash does not match the hash of the head link\", {\n headHash,\n computedHash,\n headLink\n });\n }\n const encryptedLinkHashes = Object.keys(graph.encryptedLinks);\n const linkHashes = Object.keys(graph.links);\n if (encryptedLinkHashes.length !== linkHashes.length)\n return fail(\"Number of encrypted links does not match number of links\", {\n encryptedLinkHashes,\n linkHashes\n });\n const composeValidators = (...validators2) => (currentLink) => {\n const mergedValidators = merge2(validators2);\n for (const key in mergedValidators) {\n const validator = mergedValidators[key];\n try {\n const result = validator(currentLink, graph);\n if (!result.isValid)\n return result;\n } catch (error) {\n const { message } = error;\n return fail(message, error);\n }\n }\n return VALID;\n };\n const compositeValidator = composeValidators(validators, customValidators);\n for (const link of Object.values(graph.links)) {\n const result = compositeValidator(link);\n if (!result.isValid)\n return result;\n }\n return VALID;\n};\nvar merge2 = (validatorSets) => validatorSets.reduce((result, vs) => Object.assign(result, vs), {});\n\n// src/store/makeMachine.ts\nvar makeMachine = ({\n initialState,\n reducer,\n resolver,\n validators: validators2\n}) => {\n return (graph) => {\n validate(graph, validators2);\n const sequence = getSequence(graph, resolver);\n return sequence.reduce(reducer, initialState);\n };\n};\n\n// src/store/Store.ts\nvar Store = class extends EventEmitter {\n user;\n context;\n initialState;\n reducer;\n resolver;\n validators;\n keyring;\n graph;\n state;\n constructor({\n user,\n context = {},\n graph,\n rootPayload,\n initialState = {},\n reducer,\n validators: validators2,\n resolver = baseResolver,\n keys\n }) {\n super();\n if (graph === void 0) {\n assert3(isKeyset(keys), \"If no graph is provided, only pass a single keyset, not a keyring.\");\n this.graph = createGraph({ user, rootPayload, keys });\n } else if (isGraph(graph)) {\n this.graph = graph;\n } else {\n assert3(keys);\n this.graph = deserialize(graph, keys);\n }\n this.context = context;\n this.initialState = initialState;\n this.reducer = reducer;\n this.validators = validators2;\n this.resolver = resolver;\n this.user = user;\n this.keyring = createKeyring(keys);\n this.updateState();\n }\n /** Returns the store's most recent state. */\n getState() {\n return this.state;\n }\n /** Returns the current hash graph */\n getGraph() {\n return this.graph;\n }\n /**\n * Returns the current hash graph in serialized form; this can be used to rehydrate this\n * store from storage.\n * */\n save() {\n return serialize(this.graph);\n }\n /**\n * Dispatches an action to be added to the hash graph. This is the only way to trigger a\n * state change.\n *\n * The `reducer` function provided when creating the store will be called with the current state\n * and the given `action`. Its return value will be considered the **next** state of the tree,\n * and any change listeners will be notified.\n *\n * @returns For convenience, the same action object that was dispatched.\n */\n dispatch(action, keys) {\n const actionWithPayload = {\n payload: void 0,\n ...action\n };\n if (keys === void 0) {\n const prevHash = this.graph.head.sort()[0];\n const prevPublicKey = this.graph.encryptedLinks[prevHash].recipientPublicKey;\n keys = this.keyring[prevPublicKey];\n } else {\n this.keyring[keys.encryption.publicKey] = keys;\n }\n this.graph = append({\n graph: this.graph,\n action: actionWithPayload,\n user: this.user,\n keys,\n context: this.context\n });\n const [head] = getHead(this.graph);\n this.state = this.reducer(this.state, head);\n this.emit(\"updated\", { head: this.graph.head });\n return action;\n }\n /**\n * Merges another graph (e.g. from a peer) with ours.\n * @param theirGraph\n * @returns this `Store` instance\n */\n merge(theirGraph) {\n this.graph = merge(this.graph, theirGraph);\n this.updateState();\n }\n /**\n * Validates the store's integrity, using the built-in validators (verify hashes, check\n * timestamps, etc.) as well as any custom validators provided by the application.\n */\n validate() {\n return validate(this.graph, this.validators);\n }\n // PRIVATE\n updateState() {\n const machine = makeMachine({\n initialState: this.initialState,\n reducer: this.reducer,\n resolver: this.resolver,\n validators: this.validators\n });\n this.state = machine(this.graph);\n this.emit(\"updated\", { head: this.graph.head });\n }\n};\nvar isGraph = (source) => source?.hasOwnProperty(\"root\");\n\n// src/store/createStore.ts\nvar createStore = (options) => {\n return new Store(options);\n};\n\n// src/sync/generateMessage.ts\nvar generateMessage = (graph, prevState) => {\n const message = {\n root: graph.root,\n head: graph.head\n };\n const { their, our, lastCommonHead } = prevState;\n const state = { ...prevState };\n const ourHead = graph.head;\n const theirHead = their.head;\n if (our.reportedError) {\n message.error = our.reportedError;\n delete our.reportedError;\n return [state, message];\n }\n const syncedLastTime = headsAreEqual(ourHead, lastCommonHead);\n if (syncedLastTime) {\n return [state, void 0];\n }\n const syncedThisTime = headsAreEqual(ourHead, theirHead);\n if (syncedThisTime) {\n state.lastCommonHead = ourHead;\n return [state, message];\n }\n const theirHashLookup = Object.fromEntries(\n [\n // we know that they have their heads, and any of their predecessors\n ...theirHead,\n ...theirHead.flatMap((h) => getPredecessorHashes(graph, h)),\n // their previous heads, and any of their predecessors\n ...lastCommonHead,\n ...lastCommonHead.flatMap((h) => getPredecessorHashes(graph, h)),\n // anything in their link map\n ...Object.keys(their.parentMap),\n // anything we've already sent\n ...our.links\n ].map((h) => [h, true])\n );\n let hashesWeThinkTheyNeed = [];\n const weAreAhead = theirHead.length > 0 && // if we don't know their head, we can't assume we're ahead\n theirHead.every((h) => h in graph.links);\n if (weAreAhead) {\n hashesWeThinkTheyNeed = getHashes(graph).filter((hash4) => !(hash4 in theirHashLookup));\n } else {\n if (their.parentMap) {\n const linksWeHave = { ...graph.encryptedLinks, ...their.encryptedLinks };\n message.need = Object.keys(theirHashLookup).filter((hash4) => !(hash4 in linksWeHave));\n hashesWeThinkTheyNeed = getHashes(graph).filter((hash4) => !(hash4 in theirHashLookup));\n }\n if (!headsAreEqual(ourHead, our.parentMapAtHead)) {\n message.parentMap = getParentMap({ graph, end: lastCommonHead });\n state.our.parentMapAtHead = ourHead;\n }\n }\n const hashesTheyAskedFor = their.need;\n const hashesToSend = hashesTheyAskedFor.concat(hashesWeThinkTheyNeed);\n if (hashesToSend.length > 0) {\n message.links = getEncryptedLinks(graph, hashesToSend);\n const additionalDependencies = getParentMap({ graph, hashes: hashesToSend });\n message.parentMap = { ...message.parentMap, ...additionalDependencies };\n }\n state.our.links = our.links.concat(hashesToSend);\n state.their.need = [];\n return [state, message];\n};\n\n// src/sync/initSyncState.ts\nvar initSyncState = () => ({\n their: {\n head: [],\n encryptedLinks: {},\n need: [],\n parentMap: {}\n },\n our: {\n head: [],\n links: []\n },\n lastCommonHead: [],\n failedSyncCount: 0\n});\n\n// src/sync/receiveMessage.ts\nimport { assert as assert4 } from \"@localfirst/shared\";\nvar receiveMessage = (graph, prevState, message, keys, decrypt = decryptGraph) => {\n const keyring = createKeyring(keys);\n const their = message;\n assert4(graph.root === their.root, `Can't sync graphs with different roots`);\n const state = {\n ...prevState,\n their: {\n head: their.head,\n need: their.need ?? [],\n encryptedLinks: { ...prevState.their.encryptedLinks, ...their.links },\n parentMap: { ...prevState.their.parentMap, ...their.parentMap }\n }\n };\n if (Object.keys(state.their.encryptedLinks).length > 0) {\n const { head } = their;\n const ourChildMap = getChildMap(graph);\n const theirChildMap = invertLinkMap(state.their.parentMap);\n const childMap = { ...ourChildMap, ...theirChildMap };\n const encryptedLinks = {\n ...graph.encryptedLinks,\n ...state.their.encryptedLinks\n };\n const encryptedGraph = {\n ...graph,\n head,\n encryptedLinks,\n childMap\n };\n const theirGraph = decrypt({ encryptedGraph, keys: keyring });\n const mergedGraph = merge(graph, theirGraph);\n const validation = validate(mergedGraph);\n if (validation.isValid) {\n graph = mergedGraph;\n } else {\n state.failedSyncCount += 1;\n state.our.reportedError = validation.error;\n }\n state.their.encryptedLinks = {};\n state.their.parentMap = {};\n }\n return [graph, state];\n};\n\n// src/user/createUser.ts\nimport { randomKey as randomKey2 } from \"@localfirst/crypto\";\nimport { createId as createId2 } from \"@paralleldrive/cuid2\";\nvar createUser = (userName, userId = createId2(), seed = randomKey2()) => {\n return {\n userName,\n userId,\n keys: createKeyset({ type: KeyType.USER, name: userId }, seed)\n };\n};\n\n// src/user/redact.ts\nvar redactUser = (user) => {\n const { userId, userName } = user;\n return {\n userId,\n userName,\n keys: redactKeys(user.keys)\n };\n};\nexport {\n EMPTY,\n EMPTY_GRAPH,\n ENCRYPTION,\n EPHEMERAL_SCOPE,\n HashPurpose,\n KeyType,\n LINK_HASH,\n MERGE,\n ROOT,\n SIGNATURE,\n SYMMETRIC,\n Store,\n VALID,\n ValidationError,\n append,\n baseResolver,\n byHash,\n calculateConcurrency,\n createGraph,\n createKeyring,\n createKeyset,\n createStore,\n createUser,\n decryptGraph,\n decryptLink,\n deserialize,\n fail,\n generateMessage,\n getChildMap,\n getChildren,\n getChildrenHashes,\n getConcurrentBubbles,\n getConcurrentHashes,\n getConcurrentLinks,\n getEncryptedLink,\n getEncryptedLinks,\n getHashes,\n getHead,\n getLatestGeneration,\n getLink,\n getParentMap,\n getParents,\n getPredecessorHashes,\n getPredecessors,\n getRoot,\n getSequence,\n getSuccessorHashes,\n getSuccessors,\n getTails,\n hasSecrets,\n headsAreEqual,\n initSyncState,\n invertLinkMap,\n isConcurrent,\n isKeyring,\n isKeyset,\n isPredecessor,\n isPredecessorHash,\n isSuccessor,\n isSuccessorHash,\n makeMachine,\n memoizeResolver,\n merge,\n noFilter,\n receiveMessage,\n redactGraph,\n redactKeys,\n redactUser,\n serialize,\n topoSort,\n validate,\n validators\n};\n//# sourceMappingURL=index.js.map","// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n}\nfunction getDevTools() {\n const w = getGlobal();\n if (!!w.__xstate__) {\n return w.__xstate__;\n }\n return undefined;\n}\nfunction registerService(service) {\n if (typeof window === 'undefined') {\n return;\n }\n const devTools = getDevTools();\n if (devTools) {\n devTools.register(service);\n }\n}\nconst devToolsAdapter = service => {\n if (typeof window === 'undefined') {\n return;\n }\n const devTools = getDevTools();\n if (devTools) {\n devTools.register(service);\n }\n};\n\nexport { devToolsAdapter, getGlobal, registerService };\n","import { devToolsAdapter } from '../dev/dist/xstate-dev.esm.js';\n\nclass Mailbox {\n constructor(_process) {\n this._process = _process;\n this._active = false;\n this._current = null;\n this._last = null;\n }\n start() {\n this._active = true;\n this.flush();\n }\n clear() {\n // we can't set _current to null because we might be currently processing\n // and enqueue following clear shouldnt start processing the enqueued item immediately\n if (this._current) {\n this._current.next = null;\n this._last = this._current;\n }\n }\n enqueue(event) {\n const enqueued = {\n value: event,\n next: null\n };\n if (this._current) {\n this._last.next = enqueued;\n this._last = enqueued;\n return;\n }\n this._current = enqueued;\n this._last = enqueued;\n if (this._active) {\n this.flush();\n }\n }\n flush() {\n while (this._current) {\n // atm the given _process is responsible for implementing proper try/catch handling\n // we assume here that this won't throw in a way that can affect this mailbox\n const consumed = this._current;\n this._process(consumed.value);\n this._current = consumed.next;\n }\n this._last = null;\n }\n}\n\nconst STATE_DELIMITER = '.';\nconst TARGETLESS_KEY = '';\nconst NULL_EVENT = '';\nconst STATE_IDENTIFIER = '#';\nconst WILDCARD = '*';\nconst XSTATE_INIT = 'xstate.init';\nconst XSTATE_ERROR = 'xstate.error';\nconst XSTATE_STOP = 'xstate.stop';\n\n/**\n * Returns an event that represents an implicit event that is sent after the\n * specified `delay`.\n *\n * @param delayRef The delay in milliseconds\n * @param id The state node ID where this event is handled\n */\nfunction createAfterEvent(delayRef, id) {\n return {\n type: `xstate.after.${delayRef}.${id}`\n };\n}\n\n/**\n * Returns an event that represents that a final state node has been reached in\n * the parent state node.\n *\n * @param id The final state node's parent state node `id`\n * @param output The data to pass into the event\n */\nfunction createDoneStateEvent(id, output) {\n return {\n type: `xstate.done.state.${id}`,\n output\n };\n}\n\n/**\n * Returns an event that represents that an invoked service has terminated.\n *\n * An invoked service is terminated when it has reached a top-level final state\n * node, but not when it is canceled.\n *\n * @param invokeId The invoked service ID\n * @param output The data to pass into the event\n */\nfunction createDoneActorEvent(invokeId, output) {\n return {\n type: `xstate.done.actor.${invokeId}`,\n output,\n actorId: invokeId\n };\n}\nfunction createErrorActorEvent(id, error) {\n return {\n type: `xstate.error.actor.${id}`,\n error,\n actorId: id\n };\n}\nfunction createInitEvent(input) {\n return {\n type: XSTATE_INIT,\n input\n };\n}\n\n/**\n * This function makes sure that unhandled errors are thrown in a separate\n * macrotask. It allows those errors to be detected by global error handlers and\n * reported to bug tracking services without interrupting our own stack of\n * execution.\n *\n * @param err Error to be thrown\n */\nfunction reportUnhandledError(err) {\n setTimeout(() => {\n throw err;\n });\n}\n\nconst symbolObservable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n\nfunction matchesState(parentStateId, childStateId) {\n const parentStateValue = toStateValue(parentStateId);\n const childStateValue = toStateValue(childStateId);\n if (typeof childStateValue === 'string') {\n if (typeof parentStateValue === 'string') {\n return childStateValue === parentStateValue;\n }\n\n // Parent more specific than child\n return false;\n }\n if (typeof parentStateValue === 'string') {\n return parentStateValue in childStateValue;\n }\n return Object.keys(parentStateValue).every(key => {\n if (!(key in childStateValue)) {\n return false;\n }\n return matchesState(parentStateValue[key], childStateValue[key]);\n });\n}\nfunction toStatePath(stateId) {\n if (isArray(stateId)) {\n return stateId;\n }\n let result = [];\n let segment = '';\n for (let i = 0; i < stateId.length; i++) {\n const char = stateId.charCodeAt(i);\n switch (char) {\n // \\\n case 92:\n // consume the next character\n segment += stateId[i + 1];\n // and skip over it\n i++;\n continue;\n // .\n case 46:\n result.push(segment);\n segment = '';\n continue;\n }\n segment += stateId[i];\n }\n result.push(segment);\n return result;\n}\nfunction toStateValue(stateValue) {\n if (isMachineSnapshot(stateValue)) {\n return stateValue.value;\n }\n if (typeof stateValue !== 'string') {\n return stateValue;\n }\n const statePath = toStatePath(stateValue);\n return pathToStateValue(statePath);\n}\nfunction pathToStateValue(statePath) {\n if (statePath.length === 1) {\n return statePath[0];\n }\n const value = {};\n let marker = value;\n for (let i = 0; i < statePath.length - 1; i++) {\n if (i === statePath.length - 2) {\n marker[statePath[i]] = statePath[i + 1];\n } else {\n const previous = marker;\n marker = {};\n previous[statePath[i]] = marker;\n }\n }\n return value;\n}\nfunction mapValues(collection, iteratee) {\n const result = {};\n const collectionKeys = Object.keys(collection);\n for (let i = 0; i < collectionKeys.length; i++) {\n const key = collectionKeys[i];\n result[key] = iteratee(collection[key], key, collection, i);\n }\n return result;\n}\nfunction toArrayStrict(value) {\n if (isArray(value)) {\n return value;\n }\n return [value];\n}\nfunction toArray(value) {\n if (value === undefined) {\n return [];\n }\n return toArrayStrict(value);\n}\nfunction resolveOutput(mapper, context, event, self) {\n if (typeof mapper === 'function') {\n return mapper({\n context,\n event,\n self\n });\n }\n return mapper;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isErrorActorEvent(event) {\n return event.type.startsWith('xstate.error.actor');\n}\nfunction toTransitionConfigArray(configLike) {\n return toArrayStrict(configLike).map(transitionLike => {\n if (typeof transitionLike === 'undefined' || typeof transitionLike === 'string') {\n return {\n target: transitionLike\n };\n }\n return transitionLike;\n });\n}\nfunction normalizeTarget(target) {\n if (target === undefined || target === TARGETLESS_KEY) {\n return undefined;\n }\n return toArray(target);\n}\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n const isObserver = typeof nextHandler === 'object';\n const self = isObserver ? nextHandler : undefined;\n return {\n next: (isObserver ? nextHandler.next : nextHandler)?.bind(self),\n error: (isObserver ? nextHandler.error : errorHandler)?.bind(self),\n complete: (isObserver ? nextHandler.complete : completionHandler)?.bind(self)\n };\n}\nfunction createInvokeId(stateNodeId, index) {\n return `${index}.${stateNodeId}`;\n}\nfunction resolveReferencedActor(machine, src) {\n const match = src.match(/^xstate\\.invoke\\.(\\d+)\\.(.*)/);\n if (!match) {\n return machine.implementations.actors[src];\n }\n const [, indexStr, nodeId] = match;\n const node = machine.getStateNodeById(nodeId);\n const invokeConfig = node.config.invoke;\n return (Array.isArray(invokeConfig) ? invokeConfig[indexStr] : invokeConfig).src;\n}\nfunction getAllOwnEventDescriptors(snapshot) {\n return [...new Set([...snapshot._nodes.flatMap(sn => sn.ownEvents)])];\n}\n\nfunction createScheduledEventId(actorRef, id) {\n return `${actorRef.sessionId}.${id}`;\n}\nlet idCounter = 0;\nfunction createSystem(rootActor, options) {\n const children = new Map();\n const keyedActors = new Map();\n const reverseKeyedActors = new WeakMap();\n const inspectionObservers = new Set();\n const timerMap = {};\n const {\n clock,\n logger\n } = options;\n const scheduler = {\n schedule: (source, target, event, delay, id = Math.random().toString(36).slice(2)) => {\n const scheduledEvent = {\n source,\n target,\n event,\n delay,\n id,\n startedAt: Date.now()\n };\n const scheduledEventId = createScheduledEventId(source, id);\n system._snapshot._scheduledEvents[scheduledEventId] = scheduledEvent;\n const timeout = clock.setTimeout(() => {\n delete timerMap[scheduledEventId];\n delete system._snapshot._scheduledEvents[scheduledEventId];\n system._relay(source, target, event);\n }, delay);\n timerMap[scheduledEventId] = timeout;\n },\n cancel: (source, id) => {\n const scheduledEventId = createScheduledEventId(source, id);\n const timeout = timerMap[scheduledEventId];\n delete timerMap[scheduledEventId];\n delete system._snapshot._scheduledEvents[scheduledEventId];\n if (timeout !== undefined) {\n clock.clearTimeout(timeout);\n }\n },\n cancelAll: actorRef => {\n for (const scheduledEventId in system._snapshot._scheduledEvents) {\n const scheduledEvent = system._snapshot._scheduledEvents[scheduledEventId];\n if (scheduledEvent.source === actorRef) {\n scheduler.cancel(actorRef, scheduledEvent.id);\n }\n }\n }\n };\n const sendInspectionEvent = event => {\n if (!inspectionObservers.size) {\n return;\n }\n const resolvedInspectionEvent = {\n ...event,\n rootId: rootActor.sessionId\n };\n inspectionObservers.forEach(observer => observer.next?.(resolvedInspectionEvent));\n };\n const system = {\n _snapshot: {\n _scheduledEvents: (options?.snapshot && options.snapshot.scheduler) ?? {}\n },\n _bookId: () => `x:${idCounter++}`,\n _register: (sessionId, actorRef) => {\n children.set(sessionId, actorRef);\n return sessionId;\n },\n _unregister: actorRef => {\n children.delete(actorRef.sessionId);\n const systemId = reverseKeyedActors.get(actorRef);\n if (systemId !== undefined) {\n keyedActors.delete(systemId);\n reverseKeyedActors.delete(actorRef);\n }\n },\n get: systemId => {\n return keyedActors.get(systemId);\n },\n _set: (systemId, actorRef) => {\n const existing = keyedActors.get(systemId);\n if (existing && existing !== actorRef) {\n throw new Error(`Actor with system ID '${systemId}' already exists.`);\n }\n keyedActors.set(systemId, actorRef);\n reverseKeyedActors.set(actorRef, systemId);\n },\n inspect: observerOrFn => {\n const observer = toObserver(observerOrFn);\n inspectionObservers.add(observer);\n return {\n unsubscribe() {\n inspectionObservers.delete(observer);\n }\n };\n },\n _sendInspectionEvent: sendInspectionEvent,\n _relay: (source, target, event) => {\n system._sendInspectionEvent({\n type: '@xstate.event',\n sourceRef: source,\n actorRef: target,\n event\n });\n target._send(event);\n },\n scheduler,\n getSnapshot: () => {\n return {\n _scheduledEvents: {\n ...system._snapshot._scheduledEvents\n }\n };\n },\n start: () => {\n const scheduledEvents = system._snapshot._scheduledEvents;\n system._snapshot._scheduledEvents = {};\n for (const scheduledId in scheduledEvents) {\n const {\n source,\n target,\n event,\n delay,\n id\n } = scheduledEvents[scheduledId];\n scheduler.schedule(source, target, event, delay, id);\n }\n },\n _clock: clock,\n _logger: logger\n };\n return system;\n}\n\nconst $$ACTOR_TYPE = 1;\n\n// those values are currently used by @xstate/react directly so it's important to keep the assigned values in sync\nlet ProcessingStatus = /*#__PURE__*/function (ProcessingStatus) {\n ProcessingStatus[ProcessingStatus[\"NotStarted\"] = 0] = \"NotStarted\";\n ProcessingStatus[ProcessingStatus[\"Running\"] = 1] = \"Running\";\n ProcessingStatus[ProcessingStatus[\"Stopped\"] = 2] = \"Stopped\";\n return ProcessingStatus;\n}({});\nconst defaultOptions = {\n clock: {\n setTimeout: (fn, ms) => {\n return setTimeout(fn, ms);\n },\n clearTimeout: id => {\n return clearTimeout(id);\n }\n },\n logger: console.log.bind(console),\n devTools: false\n};\n\n/**\n * An Actor is a running process that can receive events, send events and change\n * its behavior based on the events it receives, which can cause effects outside\n * of the actor. When you run a state machine, it becomes an actor.\n */\nclass Actor {\n /**\n * Creates a new actor instance for the given logic with the provided options,\n * if any.\n *\n * @param logic The logic to create an actor from\n * @param options Actor options\n */\n constructor(logic, options) {\n this.logic = logic;\n /** The current internal state of the actor. */\n this._snapshot = void 0;\n /**\n * The clock that is responsible for setting and clearing timeouts, such as\n * delayed events and transitions.\n */\n this.clock = void 0;\n this.options = void 0;\n /** The unique identifier for this actor relative to its parent. */\n this.id = void 0;\n this.mailbox = new Mailbox(this._process.bind(this));\n this.observers = new Set();\n this.eventListeners = new Map();\n this.logger = void 0;\n /** @internal */\n this._processingStatus = ProcessingStatus.NotStarted;\n // Actor Ref\n this._parent = void 0;\n /** @internal */\n this._syncSnapshot = void 0;\n this.ref = void 0;\n // TODO: add typings for system\n this._actorScope = void 0;\n this._systemId = void 0;\n /** The globally unique process ID for this invocation. */\n this.sessionId = void 0;\n /** The system to which this actor belongs. */\n this.system = void 0;\n this._doneEvent = void 0;\n this.src = void 0;\n // array of functions to defer\n this._deferred = [];\n const resolvedOptions = {\n ...defaultOptions,\n ...options\n };\n const {\n clock,\n logger,\n parent,\n syncSnapshot,\n id,\n systemId,\n inspect\n } = resolvedOptions;\n this.system = parent ? parent.system : createSystem(this, {\n clock,\n logger\n });\n if (inspect && !parent) {\n // Always inspect at the system-level\n this.system.inspect(toObserver(inspect));\n }\n this.sessionId = this.system._bookId();\n this.id = id ?? this.sessionId;\n this.logger = options?.logger ?? this.system._logger;\n this.clock = options?.clock ?? this.system._clock;\n this._parent = parent;\n this._syncSnapshot = syncSnapshot;\n this.options = resolvedOptions;\n this.src = resolvedOptions.src ?? logic;\n this.ref = this;\n this._actorScope = {\n self: this,\n id: this.id,\n sessionId: this.sessionId,\n logger: this.logger,\n defer: fn => {\n this._deferred.push(fn);\n },\n system: this.system,\n stopChild: child => {\n if (child._parent !== this) {\n throw new Error(`Cannot stop child actor ${child.id} of ${this.id} because it is not a child`);\n }\n child._stop();\n },\n emit: emittedEvent => {\n const listeners = this.eventListeners.get(emittedEvent.type);\n const wildcardListener = this.eventListeners.get('*');\n if (!listeners && !wildcardListener) {\n return;\n }\n const allListeners = new Set([...(listeners ? listeners.values() : []), ...(wildcardListener ? wildcardListener.values() : [])]);\n for (const handler of Array.from(allListeners)) {\n handler(emittedEvent);\n }\n }\n };\n\n // Ensure that the send method is bound to this Actor instance\n // if destructured\n this.send = this.send.bind(this);\n this.system._sendInspectionEvent({\n type: '@xstate.actor',\n actorRef: this\n });\n if (systemId) {\n this._systemId = systemId;\n this.system._set(systemId, this);\n }\n this._initState(options?.snapshot ?? options?.state);\n if (systemId && this._snapshot.status !== 'active') {\n this.system._unregister(this);\n }\n }\n _initState(persistedState) {\n try {\n this._snapshot = persistedState ? this.logic.restoreSnapshot ? this.logic.restoreSnapshot(persistedState, this._actorScope) : persistedState : this.logic.getInitialSnapshot(this._actorScope, this.options?.input);\n } catch (err) {\n // if we get here then it means that we assign a value to this._snapshot that is not of the correct type\n // we can't get the true `TSnapshot & { status: 'error'; }`, it's impossible\n // so right now this is a lie of sorts\n this._snapshot = {\n status: 'error',\n output: undefined,\n error: err\n };\n }\n }\n update(snapshot, event) {\n // Update state\n this._snapshot = snapshot;\n\n // Execute deferred effects\n let deferredFn;\n while (deferredFn = this._deferred.shift()) {\n try {\n deferredFn();\n } catch (err) {\n // this error can only be caught when executing *initial* actions\n // it's the only time when we call actions provided by the user through those deferreds\n // when the actor is already running we always execute them synchronously while transitioning\n // no \"builtin deferred\" should actually throw an error since they are either safe\n // or the control flow is passed through the mailbox and errors should be caught by the `_process` used by the mailbox\n this._deferred.length = 0;\n this._snapshot = {\n ...snapshot,\n status: 'error',\n error: err\n };\n }\n }\n switch (this._snapshot.status) {\n case 'active':\n for (const observer of this.observers) {\n try {\n observer.next?.(snapshot);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n break;\n case 'done':\n // next observers are meant to be notified about done snapshots\n // this can be seen as something that is different from how observable work\n // but with observables `complete` callback is called without any arguments\n // it's more ergonomic for XState to treat a done snapshot as a \"next\" value\n // and the completion event as something that is separate,\n // something that merely follows emitting that done snapshot\n for (const observer of this.observers) {\n try {\n observer.next?.(snapshot);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n this._stopProcedure();\n this._complete();\n this._doneEvent = createDoneActorEvent(this.id, this._snapshot.output);\n if (this._parent) {\n this.system._relay(this, this._parent, this._doneEvent);\n }\n break;\n case 'error':\n this._error(this._snapshot.error);\n break;\n }\n this.system._sendInspectionEvent({\n type: '@xstate.snapshot',\n actorRef: this,\n event,\n snapshot\n });\n }\n\n /**\n * Subscribe an observer to an actor’s snapshot values.\n *\n * @remarks\n * The observer will receive the actor’s snapshot value when it is emitted.\n * The observer can be:\n *\n * - A plain function that receives the latest snapshot, or\n * - An observer object whose `.next(snapshot)` method receives the latest\n * snapshot\n *\n * @example\n *\n * ```ts\n * // Observer as a plain function\n * const subscription = actor.subscribe((snapshot) => {\n * console.log(snapshot);\n * });\n * ```\n *\n * @example\n *\n * ```ts\n * // Observer as an object\n * const subscription = actor.subscribe({\n * next(snapshot) {\n * console.log(snapshot);\n * },\n * error(err) {\n * // ...\n * },\n * complete() {\n * // ...\n * }\n * });\n * ```\n *\n * The return value of `actor.subscribe(observer)` is a subscription object\n * that has an `.unsubscribe()` method. You can call\n * `subscription.unsubscribe()` to unsubscribe the observer:\n *\n * @example\n *\n * ```ts\n * const subscription = actor.subscribe((snapshot) => {\n * // ...\n * });\n *\n * // Unsubscribe the observer\n * subscription.unsubscribe();\n * ```\n *\n * When the actor is stopped, all of its observers will automatically be\n * unsubscribed.\n *\n * @param observer - Either a plain function that receives the latest\n * snapshot, or an observer object whose `.next(snapshot)` method receives\n * the latest snapshot\n */\n\n subscribe(nextListenerOrObserver, errorListener, completeListener) {\n const observer = toObserver(nextListenerOrObserver, errorListener, completeListener);\n if (this._processingStatus !== ProcessingStatus.Stopped) {\n this.observers.add(observer);\n } else {\n switch (this._snapshot.status) {\n case 'done':\n try {\n observer.complete?.();\n } catch (err) {\n reportUnhandledError(err);\n }\n break;\n case 'error':\n {\n const err = this._snapshot.error;\n if (!observer.error) {\n reportUnhandledError(err);\n } else {\n try {\n observer.error(err);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n break;\n }\n }\n }\n return {\n unsubscribe: () => {\n this.observers.delete(observer);\n }\n };\n }\n on(type, handler) {\n let listeners = this.eventListeners.get(type);\n if (!listeners) {\n listeners = new Set();\n this.eventListeners.set(type, listeners);\n }\n const wrappedHandler = handler.bind(undefined);\n listeners.add(wrappedHandler);\n return {\n unsubscribe: () => {\n listeners.delete(wrappedHandler);\n }\n };\n }\n\n /** Starts the Actor from the initial state */\n start() {\n if (this._processingStatus === ProcessingStatus.Running) {\n // Do not restart the service if it is already started\n return this;\n }\n if (this._syncSnapshot) {\n this.subscribe({\n next: snapshot => {\n if (snapshot.status === 'active') {\n this.system._relay(this, this._parent, {\n type: `xstate.snapshot.${this.id}`,\n snapshot\n });\n }\n },\n error: () => {}\n });\n }\n this.system._register(this.sessionId, this);\n if (this._systemId) {\n this.system._set(this._systemId, this);\n }\n this._processingStatus = ProcessingStatus.Running;\n\n // TODO: this isn't correct when rehydrating\n const initEvent = createInitEvent(this.options.input);\n this.system._sendInspectionEvent({\n type: '@xstate.event',\n sourceRef: this._parent,\n actorRef: this,\n event: initEvent\n });\n const status = this._snapshot.status;\n switch (status) {\n case 'done':\n // a state machine can be \"done\" upon initialization (it could reach a final state using initial microsteps)\n // we still need to complete observers, flush deferreds etc\n this.update(this._snapshot, initEvent);\n // TODO: rethink cleanup of observers, mailbox, etc\n return this;\n case 'error':\n this._error(this._snapshot.error);\n return this;\n }\n if (!this._parent) {\n this.system.start();\n }\n if (this.logic.start) {\n try {\n this.logic.start(this._snapshot, this._actorScope);\n } catch (err) {\n this._snapshot = {\n ...this._snapshot,\n status: 'error',\n error: err\n };\n this._error(err);\n return this;\n }\n }\n\n // TODO: this notifies all subscribers but usually this is redundant\n // there is no real change happening here\n // we need to rethink if this needs to be refactored\n this.update(this._snapshot, initEvent);\n if (this.options.devTools) {\n this.attachDevTools();\n }\n this.mailbox.start();\n return this;\n }\n _process(event) {\n let nextState;\n let caughtError;\n try {\n nextState = this.logic.transition(this._snapshot, event, this._actorScope);\n } catch (err) {\n // we wrap it in a box so we can rethrow it later even if falsy value gets caught here\n caughtError = {\n err\n };\n }\n if (caughtError) {\n const {\n err\n } = caughtError;\n this._snapshot = {\n ...this._snapshot,\n status: 'error',\n error: err\n };\n this._error(err);\n return;\n }\n this.update(nextState, event);\n if (event.type === XSTATE_STOP) {\n this._stopProcedure();\n this._complete();\n }\n }\n _stop() {\n if (this._processingStatus === ProcessingStatus.Stopped) {\n return this;\n }\n this.mailbox.clear();\n if (this._processingStatus === ProcessingStatus.NotStarted) {\n this._processingStatus = ProcessingStatus.Stopped;\n return this;\n }\n this.mailbox.enqueue({\n type: XSTATE_STOP\n });\n return this;\n }\n\n /** Stops the Actor and unsubscribe all listeners. */\n stop() {\n if (this._parent) {\n throw new Error('A non-root actor cannot be stopped directly.');\n }\n return this._stop();\n }\n _complete() {\n for (const observer of this.observers) {\n try {\n observer.complete?.();\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n this.observers.clear();\n }\n _reportError(err) {\n if (!this.observers.size) {\n if (!this._parent) {\n reportUnhandledError(err);\n }\n return;\n }\n let reportError = false;\n for (const observer of this.observers) {\n const errorListener = observer.error;\n reportError ||= !errorListener;\n try {\n errorListener?.(err);\n } catch (err2) {\n reportUnhandledError(err2);\n }\n }\n this.observers.clear();\n if (reportError) {\n reportUnhandledError(err);\n }\n }\n _error(err) {\n this._stopProcedure();\n this._reportError(err);\n if (this._parent) {\n this.system._relay(this, this._parent, createErrorActorEvent(this.id, err));\n }\n }\n // TODO: atm children don't belong entirely to the actor so\n // in a way - it's not even super aware of them\n // so we can't stop them from here but we really should!\n // right now, they are being stopped within the machine's transition\n // but that could throw and leave us with \"orphaned\" active actors\n _stopProcedure() {\n if (this._processingStatus !== ProcessingStatus.Running) {\n // Actor already stopped; do nothing\n return this;\n }\n\n // Cancel all delayed events\n this.system.scheduler.cancelAll(this);\n\n // TODO: mailbox.reset\n this.mailbox.clear();\n // TODO: after `stop` we must prepare ourselves for receiving events again\n // events sent *after* stop signal must be queued\n // it seems like this should be the common behavior for all of our consumers\n // so perhaps this should be unified somehow for all of them\n this.mailbox = new Mailbox(this._process.bind(this));\n this._processingStatus = ProcessingStatus.Stopped;\n this.system._unregister(this);\n return this;\n }\n\n /** @internal */\n _send(event) {\n if (this._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n this.mailbox.enqueue(event);\n }\n\n /**\n * Sends an event to the running Actor to trigger a transition.\n *\n * @param event The event to send\n */\n send(event) {\n this.system._relay(undefined, this, event);\n }\n attachDevTools() {\n const {\n devTools\n } = this.options;\n if (devTools) {\n const resolvedDevToolsAdapter = typeof devTools === 'function' ? devTools : devToolsAdapter;\n resolvedDevToolsAdapter(this);\n }\n }\n toJSON() {\n return {\n xstate$$type: $$ACTOR_TYPE,\n id: this.id\n };\n }\n\n /**\n * Obtain the internal state of the actor, which can be persisted.\n *\n * @remarks\n * The internal state can be persisted from any actor, not only machines.\n *\n * Note that the persisted state is not the same as the snapshot from\n * {@link Actor.getSnapshot}. Persisted state represents the internal state of\n * the actor, while snapshots represent the actor's last emitted value.\n *\n * Can be restored with {@link ActorOptions.state}\n * @see https://stately.ai/docs/persistence\n */\n\n getPersistedSnapshot(options) {\n return this.logic.getPersistedSnapshot(this._snapshot, options);\n }\n [symbolObservable]() {\n return this;\n }\n\n /**\n * Read an actor’s snapshot synchronously.\n *\n * @remarks\n * The snapshot represent an actor's last emitted value.\n *\n * When an actor receives an event, its internal state may change. An actor\n * may emit a snapshot when a state transition occurs.\n *\n * Note that some actors, such as callback actors generated with\n * `fromCallback`, will not emit snapshots.\n * @see {@link Actor.subscribe} to subscribe to an actor’s snapshot values.\n * @see {@link Actor.getPersistedSnapshot} to persist the internal state of an actor (which is more than just a snapshot).\n */\n getSnapshot() {\n return this._snapshot;\n }\n}\n/**\n * Creates a new actor instance for the given actor logic with the provided\n * options, if any.\n *\n * @remarks\n * When you create an actor from actor logic via `createActor(logic)`, you\n * implicitly create an actor system where the created actor is the root actor.\n * Any actors spawned from this root actor and its descendants are part of that\n * actor system.\n * @example\n *\n * ```ts\n * import { createActor } from 'xstate';\n * import { someActorLogic } from './someActorLogic.ts';\n *\n * // Creating the actor, which implicitly creates an actor system with itself as the root actor\n * const actor = createActor(someActorLogic);\n *\n * actor.subscribe((snapshot) => {\n * console.log(snapshot);\n * });\n *\n * // Actors must be started by calling `actor.start()`, which will also start the actor system.\n * actor.start();\n *\n * // Actors can receive events\n * actor.send({ type: 'someEvent' });\n *\n * // You can stop root actors by calling `actor.stop()`, which will also stop the actor system and all actors in that system.\n * actor.stop();\n * ```\n *\n * @param logic - The actor logic to create an actor from. For a state machine\n * actor logic creator, see {@link createMachine}. Other actor logic creators\n * include {@link fromCallback}, {@link fromEventObservable},\n * {@link fromObservable}, {@link fromPromise}, and {@link fromTransition}.\n * @param options - Actor options\n */\nfunction createActor(logic, ...[options]) {\n return new Actor(logic, options);\n}\n\n/**\n * Creates a new Interpreter instance for the given machine with the provided\n * options, if any.\n *\n * @deprecated Use `createActor` instead\n * @alias\n */\nconst interpret = createActor;\n\n/**\n * @deprecated Use `Actor` instead.\n * @alias\n */\n\nfunction resolveCancel(_, snapshot, actionArgs, actionParams, {\n sendId\n}) {\n const resolvedSendId = typeof sendId === 'function' ? sendId(actionArgs, actionParams) : sendId;\n return [snapshot, resolvedSendId];\n}\nfunction executeCancel(actorScope, resolvedSendId) {\n actorScope.defer(() => {\n actorScope.system.scheduler.cancel(actorScope.self, resolvedSendId);\n });\n}\n/**\n * Cancels a delayed `sendTo(...)` action that is waiting to be executed. The\n * canceled `sendTo(...)` action will not send its event or execute, unless the\n * `delay` has already elapsed before `cancel(...)` is called.\n *\n * @example\n *\n * ```ts\n * import { createMachine, sendTo, cancel } from 'xstate';\n *\n * const machine = createMachine({\n * // ...\n * on: {\n * sendEvent: {\n * actions: sendTo(\n * 'some-actor',\n * { type: 'someEvent' },\n * {\n * id: 'some-id',\n * delay: 1000\n * }\n * )\n * },\n * cancelEvent: {\n * actions: cancel('some-id')\n * }\n * }\n * });\n * ```\n *\n * @param sendId The `id` of the `sendTo(...)` action to cancel.\n */\nfunction cancel(sendId) {\n function cancel(args, params) {\n }\n cancel.type = 'xstate.cancel';\n cancel.sendId = sendId;\n cancel.resolve = resolveCancel;\n cancel.execute = executeCancel;\n return cancel;\n}\n\nfunction resolveSpawn(actorScope, snapshot, actionArgs, _actionParams, {\n id,\n systemId,\n src,\n input,\n syncSnapshot\n}) {\n const logic = typeof src === 'string' ? resolveReferencedActor(snapshot.machine, src) : src;\n const resolvedId = typeof id === 'function' ? id(actionArgs) : id;\n let actorRef;\n if (logic) {\n actorRef = createActor(logic, {\n id: resolvedId,\n src,\n parent: actorScope.self,\n syncSnapshot,\n systemId,\n input: typeof input === 'function' ? input({\n context: snapshot.context,\n event: actionArgs.event,\n self: actorScope.self\n }) : input\n });\n }\n return [cloneMachineSnapshot(snapshot, {\n children: {\n ...snapshot.children,\n [resolvedId]: actorRef\n }\n }), {\n id,\n actorRef\n }];\n}\nfunction executeSpawn(actorScope, {\n id,\n actorRef\n}) {\n if (!actorRef) {\n return;\n }\n actorScope.defer(() => {\n if (actorRef._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n actorRef.start();\n });\n}\nfunction spawnChild(...[src, {\n id,\n systemId,\n input,\n syncSnapshot = false\n} = {}]) {\n function spawnChild(args, params) {\n }\n spawnChild.type = 'snapshot.spawnChild';\n spawnChild.id = id;\n spawnChild.systemId = systemId;\n spawnChild.src = src;\n spawnChild.input = input;\n spawnChild.syncSnapshot = syncSnapshot;\n spawnChild.resolve = resolveSpawn;\n spawnChild.execute = executeSpawn;\n return spawnChild;\n}\n\nfunction resolveStop(_, snapshot, args, actionParams, {\n actorRef\n}) {\n const actorRefOrString = typeof actorRef === 'function' ? actorRef(args, actionParams) : actorRef;\n const resolvedActorRef = typeof actorRefOrString === 'string' ? snapshot.children[actorRefOrString] : actorRefOrString;\n let children = snapshot.children;\n if (resolvedActorRef) {\n children = {\n ...children\n };\n delete children[resolvedActorRef.id];\n }\n return [cloneMachineSnapshot(snapshot, {\n children\n }), resolvedActorRef];\n}\nfunction executeStop(actorScope, actorRef) {\n if (!actorRef) {\n return;\n }\n\n // we need to eagerly unregister it here so a new actor with the same systemId can be registered immediately\n // since we defer actual stopping of the actor but we don't defer actor creations (and we can't do that)\n // this could throw on `systemId` collision, for example, when dealing with reentering transitions\n actorScope.system._unregister(actorRef);\n\n // this allows us to prevent an actor from being started if it gets stopped within the same macrostep\n // this can happen, for example, when the invoking state is being exited immediately by an always transition\n if (actorRef._processingStatus !== ProcessingStatus.Running) {\n actorScope.stopChild(actorRef);\n return;\n }\n // stopping a child enqueues a stop event in the child actor's mailbox\n // we need for all of the already enqueued events to be processed before we stop the child\n // the parent itself might want to send some events to a child (for example from exit actions on the invoking state)\n // and we don't want to ignore those events\n actorScope.defer(() => {\n actorScope.stopChild(actorRef);\n });\n}\n/**\n * Stops a child actor.\n *\n * @param actorRef The actor to stop.\n */\nfunction stopChild(actorRef) {\n function stop(args, params) {\n }\n stop.type = 'xstate.stopChild';\n stop.actorRef = actorRef;\n stop.resolve = resolveStop;\n stop.execute = executeStop;\n return stop;\n}\n\n/**\n * Stops a child actor.\n *\n * @deprecated Use `stopChild(...)` instead\n * @alias\n */\nconst stop = stopChild;\n\nfunction checkStateIn(snapshot, _, {\n stateValue\n}) {\n if (typeof stateValue === 'string' && isStateId(stateValue)) {\n const target = snapshot.machine.getStateNodeById(stateValue);\n return snapshot._nodes.some(sn => sn === target);\n }\n return snapshot.matches(stateValue);\n}\nfunction stateIn(stateValue) {\n function stateIn(args, params) {\n return false;\n }\n stateIn.check = checkStateIn;\n stateIn.stateValue = stateValue;\n return stateIn;\n}\nfunction checkNot(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return !evaluateGuard(guards[0], context, event, snapshot);\n}\n\n/**\n * Higher-order guard that evaluates to `true` if the `guard` passed to it\n * evaluates to `false`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, not } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => false\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: not('someNamedGuard'),\n * actions: () => {\n * // will be executed if guard in `not(...)`\n * // evaluates to `false`\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard\n */\nfunction not(guard) {\n function not(args, params) {\n return false;\n }\n not.check = checkNot;\n not.guards = [guard];\n return not;\n}\nfunction checkAnd(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return guards.every(guard => evaluateGuard(guard, context, event, snapshot));\n}\n\n/**\n * Higher-order guard that evaluates to `true` if all `guards` passed to it\n * evaluate to `true`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, and } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => true\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: and([({ context }) => context.value > 0, 'someNamedGuard']),\n * actions: () => {\n * // will be executed if all guards in `and(...)`\n * // evaluate to true\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard action object\n */\nfunction and(guards) {\n function and(args, params) {\n return false;\n }\n and.check = checkAnd;\n and.guards = guards;\n return and;\n}\nfunction checkOr(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return guards.some(guard => evaluateGuard(guard, context, event, snapshot));\n}\n\n/**\n * Higher-order guard that evaluates to `true` if any of the `guards` passed to\n * it evaluate to `true`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, or } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => true\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: or([({ context }) => context.value > 0, 'someNamedGuard']),\n * actions: () => {\n * // will be executed if any of the guards in `or(...)`\n * // evaluate to true\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard action object\n */\nfunction or(guards) {\n function or(args, params) {\n return false;\n }\n or.check = checkOr;\n or.guards = guards;\n return or;\n}\n\n// TODO: throw on cycles (depth check should be enough)\nfunction evaluateGuard(guard, context, event, snapshot) {\n const {\n machine\n } = snapshot;\n const isInline = typeof guard === 'function';\n const resolved = isInline ? guard : machine.implementations.guards[typeof guard === 'string' ? guard : guard.type];\n if (!isInline && !resolved) {\n throw new Error(`Guard '${typeof guard === 'string' ? guard : guard.type}' is not implemented.'.`);\n }\n if (typeof resolved !== 'function') {\n return evaluateGuard(resolved, context, event, snapshot);\n }\n const guardArgs = {\n context,\n event\n };\n const guardParams = isInline || typeof guard === 'string' ? undefined : 'params' in guard ? typeof guard.params === 'function' ? guard.params({\n context,\n event\n }) : guard.params : undefined;\n if (!('check' in resolved)) {\n // the existing type of `.guards` assumes non-nullable `TExpressionGuard`\n // inline guards expect `TExpressionGuard` to be set to `undefined`\n // it's fine to cast this here, our logic makes sure that we call those 2 \"variants\" correctly\n return resolved(guardArgs, guardParams);\n }\n const builtinGuard = resolved;\n return builtinGuard.check(snapshot, guardArgs, resolved // this holds all params\n );\n}\n\nconst isAtomicStateNode = stateNode => stateNode.type === 'atomic' || stateNode.type === 'final';\nfunction getChildren(stateNode) {\n return Object.values(stateNode.states).filter(sn => sn.type !== 'history');\n}\nfunction getProperAncestors(stateNode, toStateNode) {\n const ancestors = [];\n if (toStateNode === stateNode) {\n return ancestors;\n }\n\n // add all ancestors\n let m = stateNode.parent;\n while (m && m !== toStateNode) {\n ancestors.push(m);\n m = m.parent;\n }\n return ancestors;\n}\nfunction getAllStateNodes(stateNodes) {\n const nodeSet = new Set(stateNodes);\n const adjList = getAdjList(nodeSet);\n\n // add descendants\n for (const s of nodeSet) {\n // if previously active, add existing child nodes\n if (s.type === 'compound' && (!adjList.get(s) || !adjList.get(s).length)) {\n getInitialStateNodesWithTheirAncestors(s).forEach(sn => nodeSet.add(sn));\n } else {\n if (s.type === 'parallel') {\n for (const child of getChildren(s)) {\n if (child.type === 'history') {\n continue;\n }\n if (!nodeSet.has(child)) {\n const initialStates = getInitialStateNodesWithTheirAncestors(child);\n for (const initialStateNode of initialStates) {\n nodeSet.add(initialStateNode);\n }\n }\n }\n }\n }\n }\n\n // add all ancestors\n for (const s of nodeSet) {\n let m = s.parent;\n while (m) {\n nodeSet.add(m);\n m = m.parent;\n }\n }\n return nodeSet;\n}\nfunction getValueFromAdj(baseNode, adjList) {\n const childStateNodes = adjList.get(baseNode);\n if (!childStateNodes) {\n return {}; // todo: fix?\n }\n if (baseNode.type === 'compound') {\n const childStateNode = childStateNodes[0];\n if (childStateNode) {\n if (isAtomicStateNode(childStateNode)) {\n return childStateNode.key;\n }\n } else {\n return {};\n }\n }\n const stateValue = {};\n for (const childStateNode of childStateNodes) {\n stateValue[childStateNode.key] = getValueFromAdj(childStateNode, adjList);\n }\n return stateValue;\n}\nfunction getAdjList(stateNodes) {\n const adjList = new Map();\n for (const s of stateNodes) {\n if (!adjList.has(s)) {\n adjList.set(s, []);\n }\n if (s.parent) {\n if (!adjList.has(s.parent)) {\n adjList.set(s.parent, []);\n }\n adjList.get(s.parent).push(s);\n }\n }\n return adjList;\n}\nfunction getStateValue(rootNode, stateNodes) {\n const config = getAllStateNodes(stateNodes);\n return getValueFromAdj(rootNode, getAdjList(config));\n}\nfunction isInFinalState(stateNodeSet, stateNode) {\n if (stateNode.type === 'compound') {\n return getChildren(stateNode).some(s => s.type === 'final' && stateNodeSet.has(s));\n }\n if (stateNode.type === 'parallel') {\n return getChildren(stateNode).every(sn => isInFinalState(stateNodeSet, sn));\n }\n return stateNode.type === 'final';\n}\nconst isStateId = str => str[0] === STATE_IDENTIFIER;\nfunction getCandidates(stateNode, receivedEventType) {\n const candidates = stateNode.transitions.get(receivedEventType) || [...stateNode.transitions.keys()].filter(eventDescriptor => {\n // check if transition is a wildcard transition,\n // which matches any non-transient events\n if (eventDescriptor === WILDCARD) {\n return true;\n }\n if (!eventDescriptor.endsWith('.*')) {\n return false;\n }\n const partialEventTokens = eventDescriptor.split('.');\n const eventTokens = receivedEventType.split('.');\n for (let tokenIndex = 0; tokenIndex < partialEventTokens.length; tokenIndex++) {\n const partialEventToken = partialEventTokens[tokenIndex];\n const eventToken = eventTokens[tokenIndex];\n if (partialEventToken === '*') {\n const isLastToken = tokenIndex === partialEventTokens.length - 1;\n return isLastToken;\n }\n if (partialEventToken !== eventToken) {\n return false;\n }\n }\n return true;\n }).sort((a, b) => b.length - a.length).flatMap(key => stateNode.transitions.get(key));\n return candidates;\n}\n\n/** All delayed transitions from the config. */\nfunction getDelayedTransitions(stateNode) {\n const afterConfig = stateNode.config.after;\n if (!afterConfig) {\n return [];\n }\n const mutateEntryExit = (delay, i) => {\n const afterEvent = createAfterEvent(delay, stateNode.id);\n const eventType = afterEvent.type;\n stateNode.entry.push(raise(afterEvent, {\n id: eventType,\n delay\n }));\n stateNode.exit.push(cancel(eventType));\n return eventType;\n };\n const delayedTransitions = Object.keys(afterConfig).flatMap((delay, i) => {\n const configTransition = afterConfig[delay];\n const resolvedTransition = typeof configTransition === 'string' ? {\n target: configTransition\n } : configTransition;\n const resolvedDelay = Number.isNaN(+delay) ? delay : +delay;\n const eventType = mutateEntryExit(resolvedDelay);\n return toArray(resolvedTransition).map(transition => ({\n ...transition,\n event: eventType,\n delay: resolvedDelay\n }));\n });\n return delayedTransitions.map(delayedTransition => {\n const {\n delay\n } = delayedTransition;\n return {\n ...formatTransition(stateNode, delayedTransition.event, delayedTransition),\n delay\n };\n });\n}\nfunction formatTransition(stateNode, descriptor, transitionConfig) {\n const normalizedTarget = normalizeTarget(transitionConfig.target);\n const reenter = transitionConfig.reenter ?? false;\n const target = resolveTarget(stateNode, normalizedTarget);\n const transition = {\n ...transitionConfig,\n actions: toArray(transitionConfig.actions),\n guard: transitionConfig.guard,\n target,\n source: stateNode,\n reenter,\n eventType: descriptor,\n toJSON: () => ({\n ...transition,\n source: `#${stateNode.id}`,\n target: target ? target.map(t => `#${t.id}`) : undefined\n })\n };\n return transition;\n}\nfunction formatTransitions(stateNode) {\n const transitions = new Map();\n if (stateNode.config.on) {\n for (const descriptor of Object.keys(stateNode.config.on)) {\n if (descriptor === NULL_EVENT) {\n throw new Error('Null events (\"\") cannot be specified as a transition key. Use `always: { ... }` instead.');\n }\n const transitionsConfig = stateNode.config.on[descriptor];\n transitions.set(descriptor, toTransitionConfigArray(transitionsConfig).map(t => formatTransition(stateNode, descriptor, t)));\n }\n }\n if (stateNode.config.onDone) {\n const descriptor = `xstate.done.state.${stateNode.id}`;\n transitions.set(descriptor, toTransitionConfigArray(stateNode.config.onDone).map(t => formatTransition(stateNode, descriptor, t)));\n }\n for (const invokeDef of stateNode.invoke) {\n if (invokeDef.onDone) {\n const descriptor = `xstate.done.actor.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onDone).map(t => formatTransition(stateNode, descriptor, t)));\n }\n if (invokeDef.onError) {\n const descriptor = `xstate.error.actor.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onError).map(t => formatTransition(stateNode, descriptor, t)));\n }\n if (invokeDef.onSnapshot) {\n const descriptor = `xstate.snapshot.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onSnapshot).map(t => formatTransition(stateNode, descriptor, t)));\n }\n }\n for (const delayedTransition of stateNode.after) {\n let existing = transitions.get(delayedTransition.eventType);\n if (!existing) {\n existing = [];\n transitions.set(delayedTransition.eventType, existing);\n }\n existing.push(delayedTransition);\n }\n return transitions;\n}\nfunction formatInitialTransition(stateNode, _target) {\n const resolvedTarget = typeof _target === 'string' ? stateNode.states[_target] : _target ? stateNode.states[_target.target] : undefined;\n if (!resolvedTarget && _target) {\n throw new Error(`Initial state node \"${_target}\" not found on parent state node #${stateNode.id}`);\n }\n const transition = {\n source: stateNode,\n actions: !_target || typeof _target === 'string' ? [] : toArray(_target.actions),\n eventType: null,\n reenter: false,\n target: resolvedTarget ? [resolvedTarget] : [],\n toJSON: () => ({\n ...transition,\n source: `#${stateNode.id}`,\n target: resolvedTarget ? [`#${resolvedTarget.id}`] : []\n })\n };\n return transition;\n}\nfunction resolveTarget(stateNode, targets) {\n if (targets === undefined) {\n // an undefined target signals that the state node should not transition from that state when receiving that event\n return undefined;\n }\n return targets.map(target => {\n if (typeof target !== 'string') {\n return target;\n }\n if (isStateId(target)) {\n return stateNode.machine.getStateNodeById(target);\n }\n const isInternalTarget = target[0] === STATE_DELIMITER;\n // If internal target is defined on machine,\n // do not include machine key on target\n if (isInternalTarget && !stateNode.parent) {\n return getStateNodeByPath(stateNode, target.slice(1));\n }\n const resolvedTarget = isInternalTarget ? stateNode.key + target : target;\n if (stateNode.parent) {\n try {\n const targetStateNode = getStateNodeByPath(stateNode.parent, resolvedTarget);\n return targetStateNode;\n } catch (err) {\n throw new Error(`Invalid transition definition for state node '${stateNode.id}':\\n${err.message}`);\n }\n } else {\n throw new Error(`Invalid target: \"${target}\" is not a valid target from the root node. Did you mean \".${target}\"?`);\n }\n });\n}\nfunction resolveHistoryDefaultTransition(stateNode) {\n const normalizedTarget = normalizeTarget(stateNode.config.target);\n if (!normalizedTarget) {\n return stateNode.parent.initial;\n }\n return {\n target: normalizedTarget.map(t => typeof t === 'string' ? getStateNodeByPath(stateNode.parent, t) : t)\n };\n}\nfunction isHistoryNode(stateNode) {\n return stateNode.type === 'history';\n}\nfunction getInitialStateNodesWithTheirAncestors(stateNode) {\n const states = getInitialStateNodes(stateNode);\n for (const initialState of states) {\n for (const ancestor of getProperAncestors(initialState, stateNode)) {\n states.add(ancestor);\n }\n }\n return states;\n}\nfunction getInitialStateNodes(stateNode) {\n const set = new Set();\n function iter(descStateNode) {\n if (set.has(descStateNode)) {\n return;\n }\n set.add(descStateNode);\n if (descStateNode.type === 'compound') {\n iter(descStateNode.initial.target[0]);\n } else if (descStateNode.type === 'parallel') {\n for (const child of getChildren(descStateNode)) {\n iter(child);\n }\n }\n }\n iter(stateNode);\n return set;\n}\n/** Returns the child state node from its relative `stateKey`, or throws. */\nfunction getStateNode(stateNode, stateKey) {\n if (isStateId(stateKey)) {\n return stateNode.machine.getStateNodeById(stateKey);\n }\n if (!stateNode.states) {\n throw new Error(`Unable to retrieve child state '${stateKey}' from '${stateNode.id}'; no child states exist.`);\n }\n const result = stateNode.states[stateKey];\n if (!result) {\n throw new Error(`Child state '${stateKey}' does not exist on '${stateNode.id}'`);\n }\n return result;\n}\n\n/**\n * Returns the relative state node from the given `statePath`, or throws.\n *\n * @param statePath The string or string array relative path to the state node.\n */\nfunction getStateNodeByPath(stateNode, statePath) {\n if (typeof statePath === 'string' && isStateId(statePath)) {\n try {\n return stateNode.machine.getStateNodeById(statePath);\n } catch (e) {\n // try individual paths\n // throw e;\n }\n }\n const arrayStatePath = toStatePath(statePath).slice();\n let currentStateNode = stateNode;\n while (arrayStatePath.length) {\n const key = arrayStatePath.shift();\n if (!key.length) {\n break;\n }\n currentStateNode = getStateNode(currentStateNode, key);\n }\n return currentStateNode;\n}\n\n/**\n * Returns the state nodes represented by the current state value.\n *\n * @param stateValue The state value or State instance\n */\nfunction getStateNodes(stateNode, stateValue) {\n if (typeof stateValue === 'string') {\n const childStateNode = stateNode.states[stateValue];\n if (!childStateNode) {\n throw new Error(`State '${stateValue}' does not exist on '${stateNode.id}'`);\n }\n return [stateNode, childStateNode];\n }\n const childStateKeys = Object.keys(stateValue);\n const childStateNodes = childStateKeys.map(subStateKey => getStateNode(stateNode, subStateKey)).filter(Boolean);\n return [stateNode.machine.root, stateNode].concat(childStateNodes, childStateKeys.reduce((allSubStateNodes, subStateKey) => {\n const subStateNode = getStateNode(stateNode, subStateKey);\n if (!subStateNode) {\n return allSubStateNodes;\n }\n const subStateNodes = getStateNodes(subStateNode, stateValue[subStateKey]);\n return allSubStateNodes.concat(subStateNodes);\n }, []));\n}\nfunction transitionAtomicNode(stateNode, stateValue, snapshot, event) {\n const childStateNode = getStateNode(stateNode, stateValue);\n const next = childStateNode.next(snapshot, event);\n if (!next || !next.length) {\n return stateNode.next(snapshot, event);\n }\n return next;\n}\nfunction transitionCompoundNode(stateNode, stateValue, snapshot, event) {\n const subStateKeys = Object.keys(stateValue);\n const childStateNode = getStateNode(stateNode, subStateKeys[0]);\n const next = transitionNode(childStateNode, stateValue[subStateKeys[0]], snapshot, event);\n if (!next || !next.length) {\n return stateNode.next(snapshot, event);\n }\n return next;\n}\nfunction transitionParallelNode(stateNode, stateValue, snapshot, event) {\n const allInnerTransitions = [];\n for (const subStateKey of Object.keys(stateValue)) {\n const subStateValue = stateValue[subStateKey];\n if (!subStateValue) {\n continue;\n }\n const subStateNode = getStateNode(stateNode, subStateKey);\n const innerTransitions = transitionNode(subStateNode, subStateValue, snapshot, event);\n if (innerTransitions) {\n allInnerTransitions.push(...innerTransitions);\n }\n }\n if (!allInnerTransitions.length) {\n return stateNode.next(snapshot, event);\n }\n return allInnerTransitions;\n}\nfunction transitionNode(stateNode, stateValue, snapshot, event) {\n // leaf node\n if (typeof stateValue === 'string') {\n return transitionAtomicNode(stateNode, stateValue, snapshot, event);\n }\n\n // compound node\n if (Object.keys(stateValue).length === 1) {\n return transitionCompoundNode(stateNode, stateValue, snapshot, event);\n }\n\n // parallel node\n return transitionParallelNode(stateNode, stateValue, snapshot, event);\n}\nfunction getHistoryNodes(stateNode) {\n return Object.keys(stateNode.states).map(key => stateNode.states[key]).filter(sn => sn.type === 'history');\n}\nfunction isDescendant(childStateNode, parentStateNode) {\n let marker = childStateNode;\n while (marker.parent && marker.parent !== parentStateNode) {\n marker = marker.parent;\n }\n return marker.parent === parentStateNode;\n}\nfunction hasIntersection(s1, s2) {\n const set1 = new Set(s1);\n const set2 = new Set(s2);\n for (const item of set1) {\n if (set2.has(item)) {\n return true;\n }\n }\n for (const item of set2) {\n if (set1.has(item)) {\n return true;\n }\n }\n return false;\n}\nfunction removeConflictingTransitions(enabledTransitions, stateNodeSet, historyValue) {\n const filteredTransitions = new Set();\n for (const t1 of enabledTransitions) {\n let t1Preempted = false;\n const transitionsToRemove = new Set();\n for (const t2 of filteredTransitions) {\n if (hasIntersection(computeExitSet([t1], stateNodeSet, historyValue), computeExitSet([t2], stateNodeSet, historyValue))) {\n if (isDescendant(t1.source, t2.source)) {\n transitionsToRemove.add(t2);\n } else {\n t1Preempted = true;\n break;\n }\n }\n }\n if (!t1Preempted) {\n for (const t3 of transitionsToRemove) {\n filteredTransitions.delete(t3);\n }\n filteredTransitions.add(t1);\n }\n }\n return Array.from(filteredTransitions);\n}\nfunction findLeastCommonAncestor(stateNodes) {\n const [head, ...tail] = stateNodes;\n for (const ancestor of getProperAncestors(head, undefined)) {\n if (tail.every(sn => isDescendant(sn, ancestor))) {\n return ancestor;\n }\n }\n}\nfunction getEffectiveTargetStates(transition, historyValue) {\n if (!transition.target) {\n return [];\n }\n const targets = new Set();\n for (const targetNode of transition.target) {\n if (isHistoryNode(targetNode)) {\n if (historyValue[targetNode.id]) {\n for (const node of historyValue[targetNode.id]) {\n targets.add(node);\n }\n } else {\n for (const node of getEffectiveTargetStates(resolveHistoryDefaultTransition(targetNode), historyValue)) {\n targets.add(node);\n }\n }\n } else {\n targets.add(targetNode);\n }\n }\n return [...targets];\n}\nfunction getTransitionDomain(transition, historyValue) {\n const targetStates = getEffectiveTargetStates(transition, historyValue);\n if (!targetStates) {\n return;\n }\n if (!transition.reenter && targetStates.every(target => target === transition.source || isDescendant(target, transition.source))) {\n return transition.source;\n }\n const lca = findLeastCommonAncestor(targetStates.concat(transition.source));\n if (lca) {\n return lca;\n }\n\n // at this point we know that it's a root transition since LCA couldn't be found\n if (transition.reenter) {\n return;\n }\n return transition.source.machine.root;\n}\nfunction computeExitSet(transitions, stateNodeSet, historyValue) {\n const statesToExit = new Set();\n for (const t of transitions) {\n if (t.target?.length) {\n const domain = getTransitionDomain(t, historyValue);\n if (t.reenter && t.source === domain) {\n statesToExit.add(domain);\n }\n for (const stateNode of stateNodeSet) {\n if (isDescendant(stateNode, domain)) {\n statesToExit.add(stateNode);\n }\n }\n }\n }\n return [...statesToExit];\n}\nfunction areStateNodeCollectionsEqual(prevStateNodes, nextStateNodeSet) {\n if (prevStateNodes.length !== nextStateNodeSet.size) {\n return false;\n }\n for (const node of prevStateNodes) {\n if (!nextStateNodeSet.has(node)) {\n return false;\n }\n }\n return true;\n}\n\n/** https://www.w3.org/TR/scxml/#microstepProcedure */\nfunction microstep(transitions, currentSnapshot, actorScope, event, isInitial, internalQueue) {\n if (!transitions.length) {\n return currentSnapshot;\n }\n const mutStateNodeSet = new Set(currentSnapshot._nodes);\n let historyValue = currentSnapshot.historyValue;\n const filteredTransitions = removeConflictingTransitions(transitions, mutStateNodeSet, historyValue);\n let nextState = currentSnapshot;\n\n // Exit states\n if (!isInitial) {\n [nextState, historyValue] = exitStates(nextState, event, actorScope, filteredTransitions, mutStateNodeSet, historyValue, internalQueue);\n }\n\n // Execute transition content\n nextState = resolveActionsAndContext(nextState, event, actorScope, filteredTransitions.flatMap(t => t.actions), internalQueue);\n\n // Enter states\n nextState = enterStates(nextState, event, actorScope, filteredTransitions, mutStateNodeSet, internalQueue, historyValue, isInitial);\n const nextStateNodes = [...mutStateNodeSet];\n if (nextState.status === 'done') {\n nextState = resolveActionsAndContext(nextState, event, actorScope, nextStateNodes.sort((a, b) => b.order - a.order).flatMap(state => state.exit), internalQueue);\n }\n try {\n if (historyValue === currentSnapshot.historyValue && areStateNodeCollectionsEqual(currentSnapshot._nodes, mutStateNodeSet)) {\n return nextState;\n }\n return cloneMachineSnapshot(nextState, {\n _nodes: nextStateNodes,\n historyValue\n });\n } catch (e) {\n // TODO: Refactor this once proper error handling is implemented.\n // See https://github.com/statelyai/rfcs/pull/4\n throw e;\n }\n}\nfunction getMachineOutput(snapshot, event, actorScope, rootNode, rootCompletionNode) {\n if (rootNode.output === undefined) {\n return;\n }\n const doneStateEvent = createDoneStateEvent(rootCompletionNode.id, rootCompletionNode.output !== undefined && rootCompletionNode.parent ? resolveOutput(rootCompletionNode.output, snapshot.context, event, actorScope.self) : undefined);\n return resolveOutput(rootNode.output, snapshot.context, doneStateEvent, actorScope.self);\n}\nfunction enterStates(currentSnapshot, event, actorScope, filteredTransitions, mutStateNodeSet, internalQueue, historyValue, isInitial) {\n let nextSnapshot = currentSnapshot;\n const statesToEnter = new Set();\n // those are states that were directly targeted or indirectly targeted by the explicit target\n // in other words, those are states for which initial actions should be executed\n // when we target `#deep_child` initial actions of its ancestors shouldn't be executed\n const statesForDefaultEntry = new Set();\n computeEntrySet(filteredTransitions, historyValue, statesForDefaultEntry, statesToEnter);\n\n // In the initial state, the root state node is \"entered\".\n if (isInitial) {\n statesForDefaultEntry.add(currentSnapshot.machine.root);\n }\n const completedNodes = new Set();\n for (const stateNodeToEnter of [...statesToEnter].sort((a, b) => a.order - b.order)) {\n mutStateNodeSet.add(stateNodeToEnter);\n const actions = [];\n\n // Add entry actions\n actions.push(...stateNodeToEnter.entry);\n for (const invokeDef of stateNodeToEnter.invoke) {\n actions.push(spawnChild(invokeDef.src, {\n ...invokeDef,\n syncSnapshot: !!invokeDef.onSnapshot\n }));\n }\n if (statesForDefaultEntry.has(stateNodeToEnter)) {\n const initialActions = stateNodeToEnter.initial.actions;\n actions.push(...initialActions);\n }\n nextSnapshot = resolveActionsAndContext(nextSnapshot, event, actorScope, actions, internalQueue, stateNodeToEnter.invoke.map(invokeDef => invokeDef.id));\n if (stateNodeToEnter.type === 'final') {\n const parent = stateNodeToEnter.parent;\n let ancestorMarker = parent?.type === 'parallel' ? parent : parent?.parent;\n let rootCompletionNode = ancestorMarker || stateNodeToEnter;\n if (parent?.type === 'compound') {\n internalQueue.push(createDoneStateEvent(parent.id, stateNodeToEnter.output !== undefined ? resolveOutput(stateNodeToEnter.output, nextSnapshot.context, event, actorScope.self) : undefined));\n }\n while (ancestorMarker?.type === 'parallel' && !completedNodes.has(ancestorMarker) && isInFinalState(mutStateNodeSet, ancestorMarker)) {\n completedNodes.add(ancestorMarker);\n internalQueue.push(createDoneStateEvent(ancestorMarker.id));\n rootCompletionNode = ancestorMarker;\n ancestorMarker = ancestorMarker.parent;\n }\n if (ancestorMarker) {\n continue;\n }\n nextSnapshot = cloneMachineSnapshot(nextSnapshot, {\n status: 'done',\n output: getMachineOutput(nextSnapshot, event, actorScope, nextSnapshot.machine.root, rootCompletionNode)\n });\n }\n }\n return nextSnapshot;\n}\nfunction computeEntrySet(transitions, historyValue, statesForDefaultEntry, statesToEnter) {\n for (const t of transitions) {\n const domain = getTransitionDomain(t, historyValue);\n for (const s of t.target || []) {\n if (!isHistoryNode(s) && (\n // if the target is different than the source then it will *definitely* be entered\n t.source !== s ||\n // we know that the domain can't lie within the source\n // if it's different than the source then it's outside of it and it means that the target has to be entered as well\n t.source !== domain ||\n // reentering transitions always enter the target, even if it's the source itself\n t.reenter)) {\n statesToEnter.add(s);\n statesForDefaultEntry.add(s);\n }\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n const targetStates = getEffectiveTargetStates(t, historyValue);\n for (const s of targetStates) {\n const ancestors = getProperAncestors(s, domain);\n if (domain?.type === 'parallel') {\n ancestors.push(domain);\n }\n addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, ancestors, !t.source.parent && t.reenter ? undefined : domain);\n }\n }\n}\nfunction addDescendantStatesToEnter(stateNode, historyValue, statesForDefaultEntry, statesToEnter) {\n if (isHistoryNode(stateNode)) {\n if (historyValue[stateNode.id]) {\n const historyStateNodes = historyValue[stateNode.id];\n for (const s of historyStateNodes) {\n statesToEnter.add(s);\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n for (const s of historyStateNodes) {\n addProperAncestorStatesToEnter(s, stateNode.parent, statesToEnter, historyValue, statesForDefaultEntry);\n }\n } else {\n const historyDefaultTransition = resolveHistoryDefaultTransition(stateNode);\n for (const s of historyDefaultTransition.target) {\n statesToEnter.add(s);\n if (historyDefaultTransition === stateNode.parent?.initial) {\n statesForDefaultEntry.add(stateNode.parent);\n }\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n for (const s of historyDefaultTransition.target) {\n addProperAncestorStatesToEnter(s, stateNode.parent, statesToEnter, historyValue, statesForDefaultEntry);\n }\n }\n } else {\n if (stateNode.type === 'compound') {\n const [initialState] = stateNode.initial.target;\n if (!isHistoryNode(initialState)) {\n statesToEnter.add(initialState);\n statesForDefaultEntry.add(initialState);\n }\n addDescendantStatesToEnter(initialState, historyValue, statesForDefaultEntry, statesToEnter);\n addProperAncestorStatesToEnter(initialState, stateNode, statesToEnter, historyValue, statesForDefaultEntry);\n } else {\n if (stateNode.type === 'parallel') {\n for (const child of getChildren(stateNode).filter(sn => !isHistoryNode(sn))) {\n if (![...statesToEnter].some(s => isDescendant(s, child))) {\n if (!isHistoryNode(child)) {\n statesToEnter.add(child);\n statesForDefaultEntry.add(child);\n }\n addDescendantStatesToEnter(child, historyValue, statesForDefaultEntry, statesToEnter);\n }\n }\n }\n }\n }\n}\nfunction addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, ancestors, reentrancyDomain) {\n for (const anc of ancestors) {\n if (!reentrancyDomain || isDescendant(anc, reentrancyDomain)) {\n statesToEnter.add(anc);\n }\n if (anc.type === 'parallel') {\n for (const child of getChildren(anc).filter(sn => !isHistoryNode(sn))) {\n if (![...statesToEnter].some(s => isDescendant(s, child))) {\n statesToEnter.add(child);\n addDescendantStatesToEnter(child, historyValue, statesForDefaultEntry, statesToEnter);\n }\n }\n }\n }\n}\nfunction addProperAncestorStatesToEnter(stateNode, toStateNode, statesToEnter, historyValue, statesForDefaultEntry) {\n addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, getProperAncestors(stateNode, toStateNode));\n}\nfunction exitStates(currentSnapshot, event, actorScope, transitions, mutStateNodeSet, historyValue, internalQueue) {\n let nextSnapshot = currentSnapshot;\n const statesToExit = computeExitSet(transitions, mutStateNodeSet, historyValue);\n statesToExit.sort((a, b) => b.order - a.order);\n let changedHistory;\n\n // From SCXML algorithm: https://www.w3.org/TR/scxml/#exitStates\n for (const exitStateNode of statesToExit) {\n for (const historyNode of getHistoryNodes(exitStateNode)) {\n let predicate;\n if (historyNode.history === 'deep') {\n predicate = sn => isAtomicStateNode(sn) && isDescendant(sn, exitStateNode);\n } else {\n predicate = sn => {\n return sn.parent === exitStateNode;\n };\n }\n changedHistory ??= {\n ...historyValue\n };\n changedHistory[historyNode.id] = Array.from(mutStateNodeSet).filter(predicate);\n }\n }\n for (const s of statesToExit) {\n nextSnapshot = resolveActionsAndContext(nextSnapshot, event, actorScope, [...s.exit, ...s.invoke.map(def => stopChild(def.id))], internalQueue);\n mutStateNodeSet.delete(s);\n }\n return [nextSnapshot, changedHistory || historyValue];\n}\nlet executingCustomAction = false;\nfunction resolveAndExecuteActionsWithContext(currentSnapshot, event, actorScope, actions, extra, retries) {\n const {\n machine\n } = currentSnapshot;\n let intermediateSnapshot = currentSnapshot;\n for (const action of actions) {\n const isInline = typeof action === 'function';\n const resolvedAction = isInline ? action :\n // the existing type of `.actions` assumes non-nullable `TExpressionAction`\n // it's fine to cast this here to get a common type and lack of errors in the rest of the code\n // our logic below makes sure that we call those 2 \"variants\" correctly\n machine.implementations.actions[typeof action === 'string' ? action : action.type];\n if (!resolvedAction) {\n continue;\n }\n const actionArgs = {\n context: intermediateSnapshot.context,\n event,\n self: actorScope.self,\n system: actorScope.system\n };\n const actionParams = isInline || typeof action === 'string' ? undefined : 'params' in action ? typeof action.params === 'function' ? action.params({\n context: intermediateSnapshot.context,\n event\n }) : action.params : undefined;\n function executeAction() {\n actorScope.system._sendInspectionEvent({\n type: '@xstate.action',\n actorRef: actorScope.self,\n action: {\n type: typeof action === 'string' ? action : typeof action === 'object' ? action.type : action.name || '(anonymous)',\n params: actionParams\n }\n });\n try {\n executingCustomAction = resolvedAction;\n resolvedAction(actionArgs, actionParams);\n } finally {\n executingCustomAction = false;\n }\n }\n if (!('resolve' in resolvedAction)) {\n if (actorScope.self._processingStatus === ProcessingStatus.Running) {\n executeAction();\n } else {\n actorScope.defer(() => {\n executeAction();\n });\n }\n continue;\n }\n const builtinAction = resolvedAction;\n const [nextState, params, actions] = builtinAction.resolve(actorScope, intermediateSnapshot, actionArgs, actionParams, resolvedAction,\n // this holds all params\n extra);\n intermediateSnapshot = nextState;\n if ('retryResolve' in builtinAction) {\n retries?.push([builtinAction, params]);\n }\n if ('execute' in builtinAction) {\n if (actorScope.self._processingStatus === ProcessingStatus.Running) {\n builtinAction.execute(actorScope, params);\n } else {\n actorScope.defer(builtinAction.execute.bind(null, actorScope, params));\n }\n }\n if (actions) {\n intermediateSnapshot = resolveAndExecuteActionsWithContext(intermediateSnapshot, event, actorScope, actions, extra, retries);\n }\n }\n return intermediateSnapshot;\n}\nfunction resolveActionsAndContext(currentSnapshot, event, actorScope, actions, internalQueue, deferredActorIds) {\n const retries = deferredActorIds ? [] : undefined;\n const nextState = resolveAndExecuteActionsWithContext(currentSnapshot, event, actorScope, actions, {\n internalQueue,\n deferredActorIds\n }, retries);\n retries?.forEach(([builtinAction, params]) => {\n builtinAction.retryResolve(actorScope, nextState, params);\n });\n return nextState;\n}\nfunction macrostep(snapshot, event, actorScope, internalQueue = []) {\n let nextSnapshot = snapshot;\n const microstates = [];\n function addMicrostate(microstate, event, transitions) {\n actorScope.system._sendInspectionEvent({\n type: '@xstate.microstep',\n actorRef: actorScope.self,\n event,\n snapshot: microstate,\n _transitions: transitions\n });\n microstates.push(microstate);\n }\n\n // Handle stop event\n if (event.type === XSTATE_STOP) {\n nextSnapshot = cloneMachineSnapshot(stopChildren(nextSnapshot, event, actorScope), {\n status: 'stopped'\n });\n addMicrostate(nextSnapshot, event, []);\n return {\n snapshot: nextSnapshot,\n microstates\n };\n }\n let nextEvent = event;\n\n // Assume the state is at rest (no raised events)\n // Determine the next state based on the next microstep\n if (nextEvent.type !== XSTATE_INIT) {\n const currentEvent = nextEvent;\n const isErr = isErrorActorEvent(currentEvent);\n const transitions = selectTransitions(currentEvent, nextSnapshot);\n if (isErr && !transitions.length) {\n // TODO: we should likely only allow transitions selected by very explicit descriptors\n // `*` shouldn't be matched, likely `xstate.error.*` shouldnt be either\n // similarly `xstate.error.actor.*` and `xstate.error.actor.todo.*` have to be considered too\n nextSnapshot = cloneMachineSnapshot(snapshot, {\n status: 'error',\n error: currentEvent.error\n });\n addMicrostate(nextSnapshot, currentEvent, []);\n return {\n snapshot: nextSnapshot,\n microstates\n };\n }\n nextSnapshot = microstep(transitions, snapshot, actorScope, nextEvent, false,\n // isInitial\n internalQueue);\n addMicrostate(nextSnapshot, currentEvent, transitions);\n }\n let shouldSelectEventlessTransitions = true;\n while (nextSnapshot.status === 'active') {\n let enabledTransitions = shouldSelectEventlessTransitions ? selectEventlessTransitions(nextSnapshot, nextEvent) : [];\n\n // eventless transitions should always be selected after selecting *regular* transitions\n // by assigning `undefined` to `previousState` we ensure that `shouldSelectEventlessTransitions` gets always computed to true in such a case\n const previousState = enabledTransitions.length ? nextSnapshot : undefined;\n if (!enabledTransitions.length) {\n if (!internalQueue.length) {\n break;\n }\n nextEvent = internalQueue.shift();\n enabledTransitions = selectTransitions(nextEvent, nextSnapshot);\n }\n nextSnapshot = microstep(enabledTransitions, nextSnapshot, actorScope, nextEvent, false, internalQueue);\n shouldSelectEventlessTransitions = nextSnapshot !== previousState;\n addMicrostate(nextSnapshot, nextEvent, enabledTransitions);\n }\n if (nextSnapshot.status !== 'active') {\n stopChildren(nextSnapshot, nextEvent, actorScope);\n }\n return {\n snapshot: nextSnapshot,\n microstates\n };\n}\nfunction stopChildren(nextState, event, actorScope) {\n return resolveActionsAndContext(nextState, event, actorScope, Object.values(nextState.children).map(child => stopChild(child)), []);\n}\nfunction selectTransitions(event, nextState) {\n return nextState.machine.getTransitionData(nextState, event);\n}\nfunction selectEventlessTransitions(nextState, event) {\n const enabledTransitionSet = new Set();\n const atomicStates = nextState._nodes.filter(isAtomicStateNode);\n for (const stateNode of atomicStates) {\n loop: for (const s of [stateNode].concat(getProperAncestors(stateNode, undefined))) {\n if (!s.always) {\n continue;\n }\n for (const transition of s.always) {\n if (transition.guard === undefined || evaluateGuard(transition.guard, nextState.context, event, nextState)) {\n enabledTransitionSet.add(transition);\n break loop;\n }\n }\n }\n }\n return removeConflictingTransitions(Array.from(enabledTransitionSet), new Set(nextState._nodes), nextState.historyValue);\n}\n\n/**\n * Resolves a partial state value with its full representation in the state\n * node's machine.\n *\n * @param stateValue The partial state value to resolve.\n */\nfunction resolveStateValue(rootNode, stateValue) {\n const allStateNodes = getAllStateNodes(getStateNodes(rootNode, stateValue));\n return getStateValue(rootNode, [...allStateNodes]);\n}\n\nfunction isMachineSnapshot(value) {\n return !!value && typeof value === 'object' && 'machine' in value && 'value' in value;\n}\nconst machineSnapshotMatches = function matches(testValue) {\n return matchesState(testValue, this.value);\n};\nconst machineSnapshotHasTag = function hasTag(tag) {\n return this.tags.has(tag);\n};\nconst machineSnapshotCan = function can(event) {\n const transitionData = this.machine.getTransitionData(this, event);\n return !!transitionData?.length &&\n // Check that at least one transition is not forbidden\n transitionData.some(t => t.target !== undefined || t.actions.length);\n};\nconst machineSnapshotToJSON = function toJSON() {\n const {\n _nodes: nodes,\n tags,\n machine,\n getMeta,\n toJSON,\n can,\n hasTag,\n matches,\n ...jsonValues\n } = this;\n return {\n ...jsonValues,\n tags: Array.from(tags)\n };\n};\nconst machineSnapshotGetMeta = function getMeta() {\n return this._nodes.reduce((acc, stateNode) => {\n if (stateNode.meta !== undefined) {\n acc[stateNode.id] = stateNode.meta;\n }\n return acc;\n }, {});\n};\nfunction createMachineSnapshot(config, machine) {\n return {\n status: config.status,\n output: config.output,\n error: config.error,\n machine,\n context: config.context,\n _nodes: config._nodes,\n value: getStateValue(machine.root, config._nodes),\n tags: new Set(config._nodes.flatMap(sn => sn.tags)),\n children: config.children,\n historyValue: config.historyValue || {},\n matches: machineSnapshotMatches,\n hasTag: machineSnapshotHasTag,\n can: machineSnapshotCan,\n getMeta: machineSnapshotGetMeta,\n toJSON: machineSnapshotToJSON\n };\n}\nfunction cloneMachineSnapshot(snapshot, config = {}) {\n return createMachineSnapshot({\n ...snapshot,\n ...config\n }, snapshot.machine);\n}\nfunction getPersistedSnapshot(snapshot, options) {\n const {\n _nodes: nodes,\n tags,\n machine,\n children,\n context,\n can,\n hasTag,\n matches,\n getMeta,\n toJSON,\n ...jsonValues\n } = snapshot;\n const childrenJson = {};\n for (const id in children) {\n const child = children[id];\n childrenJson[id] = {\n snapshot: child.getPersistedSnapshot(options),\n src: child.src,\n systemId: child._systemId,\n syncSnapshot: child._syncSnapshot\n };\n }\n const persisted = {\n ...jsonValues,\n context: persistContext(context),\n children: childrenJson\n };\n return persisted;\n}\nfunction persistContext(contextPart) {\n let copy;\n for (const key in contextPart) {\n const value = contextPart[key];\n if (value && typeof value === 'object') {\n if ('sessionId' in value && 'send' in value && 'ref' in value) {\n copy ??= Array.isArray(contextPart) ? contextPart.slice() : {\n ...contextPart\n };\n copy[key] = {\n xstate$$type: $$ACTOR_TYPE,\n id: value.id\n };\n } else {\n const result = persistContext(value);\n if (result !== value) {\n copy ??= Array.isArray(contextPart) ? contextPart.slice() : {\n ...contextPart\n };\n copy[key] = result;\n }\n }\n }\n }\n return copy ?? contextPart;\n}\n\nfunction resolveRaise(_, snapshot, args, actionParams, {\n event: eventOrExpr,\n id,\n delay\n}, {\n internalQueue\n}) {\n const delaysMap = snapshot.machine.implementations.delays;\n if (typeof eventOrExpr === 'string') {\n throw new Error(`Only event objects may be used with raise; use raise({ type: \"${eventOrExpr}\" }) instead`);\n }\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n let resolvedDelay;\n if (typeof delay === 'string') {\n const configDelay = delaysMap && delaysMap[delay];\n resolvedDelay = typeof configDelay === 'function' ? configDelay(args, actionParams) : configDelay;\n } else {\n resolvedDelay = typeof delay === 'function' ? delay(args, actionParams) : delay;\n }\n if (typeof resolvedDelay !== 'number') {\n internalQueue.push(resolvedEvent);\n }\n return [snapshot, {\n event: resolvedEvent,\n id,\n delay: resolvedDelay\n }];\n}\nfunction executeRaise(actorScope, params) {\n const {\n event,\n delay,\n id\n } = params;\n if (typeof delay === 'number') {\n actorScope.defer(() => {\n const self = actorScope.self;\n actorScope.system.scheduler.schedule(self, self, event, delay, id);\n });\n return;\n }\n}\n/**\n * Raises an event. This places the event in the internal event queue, so that\n * the event is immediately consumed by the machine in the current step.\n *\n * @param eventType The event to raise.\n */\nfunction raise(eventOrExpr, options) {\n function raise(args, params) {\n }\n raise.type = 'xstate.raise';\n raise.event = eventOrExpr;\n raise.id = options?.id;\n raise.delay = options?.delay;\n raise.resolve = resolveRaise;\n raise.execute = executeRaise;\n return raise;\n}\n\nexport { $$ACTOR_TYPE as $, createActor as A, Actor as B, interpret as C, and as D, not as E, or as F, stateIn as G, isMachineSnapshot as H, getAllOwnEventDescriptors as I, matchesState as J, pathToStateValue as K, toObserver as L, cancel as M, NULL_EVENT as N, raise as O, spawnChild as P, stop as Q, stopChild as R, STATE_DELIMITER as S, ProcessingStatus as T, cloneMachineSnapshot as U, XSTATE_ERROR as V, createErrorActorEvent as W, XSTATE_STOP as X, toTransitionConfigArray as a, formatTransition as b, createInvokeId as c, formatInitialTransition as d, evaluateGuard as e, formatTransitions as f, getDelayedTransitions as g, getCandidates as h, getAllStateNodes as i, getStateNodes as j, createMachineSnapshot as k, isInFinalState as l, mapValues as m, macrostep as n, transitionNode as o, resolveActionsAndContext as p, createInitEvent as q, resolveStateValue as r, microstep as s, toArray as t, getInitialStateNodes as u, toStatePath as v, isStateId as w, getStateNodeByPath as x, getPersistedSnapshot as y, resolveReferencedActor as z };\n","import { T as ProcessingStatus, z as resolveReferencedActor, A as createActor, U as cloneMachineSnapshot, V as XSTATE_ERROR, W as createErrorActorEvent, e as evaluateGuard, M as cancel, O as raise, P as spawnChild, R as stopChild } from './raise-0f7cf128.esm.js';\n\nfunction createSpawner(actorScope, {\n machine,\n context\n}, event, spawnedChildren) {\n const spawn = (src, options = {}) => {\n const {\n systemId,\n input\n } = options;\n if (typeof src === 'string') {\n const logic = resolveReferencedActor(machine, src);\n if (!logic) {\n throw new Error(`Actor logic '${src}' not implemented in machine '${machine.id}'`);\n }\n const actorRef = createActor(logic, {\n id: options.id,\n parent: actorScope.self,\n syncSnapshot: options.syncSnapshot,\n input: typeof input === 'function' ? input({\n context,\n event,\n self: actorScope.self\n }) : input,\n src,\n systemId\n });\n spawnedChildren[actorRef.id] = actorRef;\n return actorRef;\n } else {\n const actorRef = createActor(src, {\n id: options.id,\n parent: actorScope.self,\n syncSnapshot: options.syncSnapshot,\n input: options.input,\n src,\n systemId\n });\n return actorRef;\n }\n };\n return (src, options) => {\n const actorRef = spawn(src, options); // TODO: fix types\n spawnedChildren[actorRef.id] = actorRef;\n actorScope.defer(() => {\n if (actorRef._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n actorRef.start();\n });\n return actorRef;\n };\n}\n\nfunction resolveAssign(actorScope, snapshot, actionArgs, actionParams, {\n assignment\n}) {\n if (!snapshot.context) {\n throw new Error('Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.');\n }\n const spawnedChildren = {};\n const assignArgs = {\n context: snapshot.context,\n event: actionArgs.event,\n spawn: createSpawner(actorScope, snapshot, actionArgs.event, spawnedChildren),\n self: actorScope.self,\n system: actorScope.system\n };\n let partialUpdate = {};\n if (typeof assignment === 'function') {\n partialUpdate = assignment(assignArgs, actionParams);\n } else {\n for (const key of Object.keys(assignment)) {\n const propAssignment = assignment[key];\n partialUpdate[key] = typeof propAssignment === 'function' ? propAssignment(assignArgs, actionParams) : propAssignment;\n }\n }\n const updatedContext = Object.assign({}, snapshot.context, partialUpdate);\n return [cloneMachineSnapshot(snapshot, {\n context: updatedContext,\n children: Object.keys(spawnedChildren).length ? {\n ...snapshot.children,\n ...spawnedChildren\n } : snapshot.children\n })];\n}\n/**\n * Updates the current context of the machine.\n *\n * @example\n *\n * ```ts\n * import { createMachine, assign } from 'xstate';\n *\n * const countMachine = createMachine({\n * context: {\n * count: 0,\n * message: ''\n * },\n * on: {\n * inc: {\n * actions: assign({\n * count: ({ context }) => context.count + 1\n * })\n * },\n * updateMessage: {\n * actions: assign(({ context, event }) => {\n * return {\n * message: event.message.trim()\n * };\n * })\n * }\n * }\n * });\n * ```\n *\n * @param assignment An object that represents the partial context to update, or\n * a function that returns an object that represents the partial context to\n * update.\n */\nfunction assign(assignment) {\n function assign(args, params) {\n }\n assign.type = 'xstate.assign';\n assign.assignment = assignment;\n assign.resolve = resolveAssign;\n return assign;\n}\n\nfunction resolveEmit(_, snapshot, args, actionParams, {\n event: eventOrExpr\n}) {\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n return [snapshot, {\n event: resolvedEvent\n }];\n}\nfunction executeEmit(actorScope, {\n event\n}) {\n actorScope.defer(() => actorScope.emit(event));\n}\n/**\n * Emits an event to event handlers registered on the actor via `actor.on(event,\n * handler)`.\n *\n * @example\n *\n * ```ts\n * import { emit } from 'xstate';\n *\n * const machine = createMachine({\n * // ...\n * on: {\n * something: {\n * actions: emit({\n * type: 'emitted',\n * some: 'data'\n * })\n * }\n * }\n * // ...\n * });\n *\n * const actor = createActor(machine).start();\n *\n * actor.on('emitted', (event) => {\n * console.log(event);\n * });\n *\n * actor.send({ type: 'something' });\n * // logs:\n * // {\n * // type: 'emitted',\n * // some: 'data'\n * // }\n * ```\n */\nfunction emit(/** The event to emit, or an expression that returns an event to emit. */\neventOrExpr) {\n function emit(args, params) {\n }\n emit.type = 'xstate.emit';\n emit.event = eventOrExpr;\n emit.resolve = resolveEmit;\n emit.execute = executeEmit;\n return emit;\n}\n\n/**\n * @remarks\n * `T | unknown` reduces to `unknown` and that can be problematic when it comes\n * to contextual typing. It especially is a problem when the union has a\n * function member, like here:\n *\n * ```ts\n * declare function test(\n * cbOrVal: ((arg: number) => unknown) | unknown\n * ): void;\n * test((arg) => {}); // oops, implicit any\n * ```\n *\n * This type can be used to avoid this problem. This union represents the same\n * value space as `unknown`.\n */\n\n// https://github.com/microsoft/TypeScript/issues/23182#issuecomment-379091887\n\n// @TODO: Replace with native `NoInfer` when TS issue gets fixed:\n// https://github.com/microsoft/TypeScript/pull/57673\n\n/** @deprecated Use the built-in `NoInfer` type instead */\n\n/** The full definition of an event, with a string `type`. */\n\n/**\n * The string or object representing the state value relative to the parent\n * state node.\n *\n * @remarks\n * - For a child atomic state node, this is a string, e.g., `\"pending\"`.\n * - For complex state nodes, this is an object, e.g., `{ success:\n * \"someChildState\" }`.\n */\n\n// TODO: remove once TS fixes this type-widening issue\n\n/** @deprecated Use `AnyMachineSnapshot` instead */\n\n// TODO: possibly refactor this somehow, use even a simpler type, and maybe even make `machine.options` private or something\n/** @ignore */\n\nlet SpecialTargets = /*#__PURE__*/function (SpecialTargets) {\n SpecialTargets[\"Parent\"] = \"#_parent\";\n SpecialTargets[\"Internal\"] = \"#_internal\";\n return SpecialTargets;\n}({});\n\n/** @deprecated Use `AnyActor` instead. */\n\n// Based on RxJS types\n\n// TODO: in v6, this should only accept AnyActorLogic, like ActorRefFromLogic\n\n/** @deprecated Use `Actor` instead. */\n\n/**\n * Represents logic which can be used by an actor.\n *\n * @template TSnapshot - The type of the snapshot.\n * @template TEvent - The type of the event object.\n * @template TInput - The type of the input.\n * @template TSystem - The type of the actor system.\n */\n\n/** @deprecated */\n\nfunction resolveSendTo(actorScope, snapshot, args, actionParams, {\n to,\n event: eventOrExpr,\n id,\n delay\n}, extra) {\n const delaysMap = snapshot.machine.implementations.delays;\n if (typeof eventOrExpr === 'string') {\n throw new Error(`Only event objects may be used with sendTo; use sendTo({ type: \"${eventOrExpr}\" }) instead`);\n }\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n let resolvedDelay;\n if (typeof delay === 'string') {\n const configDelay = delaysMap && delaysMap[delay];\n resolvedDelay = typeof configDelay === 'function' ? configDelay(args, actionParams) : configDelay;\n } else {\n resolvedDelay = typeof delay === 'function' ? delay(args, actionParams) : delay;\n }\n const resolvedTarget = typeof to === 'function' ? to(args, actionParams) : to;\n let targetActorRef;\n if (typeof resolvedTarget === 'string') {\n if (resolvedTarget === SpecialTargets.Parent) {\n targetActorRef = actorScope.self._parent;\n } else if (resolvedTarget === SpecialTargets.Internal) {\n targetActorRef = actorScope.self;\n } else if (resolvedTarget.startsWith('#_')) {\n // SCXML compatibility: https://www.w3.org/TR/scxml/#SCXMLEventProcessor\n // #_invokeid. If the target is the special term '#_invokeid', where invokeid is the invokeid of an SCXML session that the sending session has created by , the Processor must add the event to the external queue of that session.\n targetActorRef = snapshot.children[resolvedTarget.slice(2)];\n } else {\n targetActorRef = extra.deferredActorIds?.includes(resolvedTarget) ? resolvedTarget : snapshot.children[resolvedTarget];\n }\n if (!targetActorRef) {\n throw new Error(`Unable to send event to actor '${resolvedTarget}' from machine '${snapshot.machine.id}'.`);\n }\n } else {\n targetActorRef = resolvedTarget || actorScope.self;\n }\n return [snapshot, {\n to: targetActorRef,\n event: resolvedEvent,\n id,\n delay: resolvedDelay\n }];\n}\nfunction retryResolveSendTo(_, snapshot, params) {\n if (typeof params.to === 'string') {\n params.to = snapshot.children[params.to];\n }\n}\nfunction executeSendTo(actorScope, params) {\n // this forms an outgoing events queue\n // thanks to that the recipient actors are able to read the *updated* snapshot value of the sender\n actorScope.defer(() => {\n const {\n to,\n event,\n delay,\n id\n } = params;\n if (typeof delay === 'number') {\n actorScope.system.scheduler.schedule(actorScope.self, to, event, delay, id);\n return;\n }\n actorScope.system._relay(actorScope.self,\n // at this point, in a deferred task, it should already be mutated by retryResolveSendTo\n // if it initially started as a string\n to, event.type === XSTATE_ERROR ? createErrorActorEvent(actorScope.self.id, event.data) : event);\n });\n}\n/**\n * Sends an event to an actor.\n *\n * @param actor The `ActorRef` to send the event to.\n * @param event The event to send, or an expression that evaluates to the event\n * to send\n * @param options Send action options\n *\n * - `id` - The unique send event identifier (used with `cancel()`).\n * - `delay` - The number of milliseconds to delay the sending of the event.\n */\nfunction sendTo(to, eventOrExpr, options) {\n function sendTo(args, params) {\n }\n sendTo.type = 'xsnapshot.sendTo';\n sendTo.to = to;\n sendTo.event = eventOrExpr;\n sendTo.id = options?.id;\n sendTo.delay = options?.delay;\n sendTo.resolve = resolveSendTo;\n sendTo.retryResolve = retryResolveSendTo;\n sendTo.execute = executeSendTo;\n return sendTo;\n}\n\n/**\n * Sends an event to this machine's parent.\n *\n * @param event The event to send to the parent machine.\n * @param options Options to pass into the send event.\n */\nfunction sendParent(event, options) {\n return sendTo(SpecialTargets.Parent, event, options);\n}\n/**\n * Forwards (sends) an event to the `target` actor.\n *\n * @param target The target actor to forward the event to.\n * @param options Options to pass into the send action creator.\n */\nfunction forwardTo(target, options) {\n return sendTo(target, ({\n event\n }) => event, options);\n}\n\nfunction resolveEnqueueActions(actorScope, snapshot, args, actionParams, {\n collect\n}) {\n const actions = [];\n const enqueue = function enqueue(action) {\n actions.push(action);\n };\n enqueue.assign = (...args) => {\n actions.push(assign(...args));\n };\n enqueue.cancel = (...args) => {\n actions.push(cancel(...args));\n };\n enqueue.raise = (...args) => {\n // for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)\n // then it fails to typecheck that because `...args` use `string` in place of `TDelay`\n actions.push(raise(...args));\n };\n enqueue.sendTo = (...args) => {\n // for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)\n // then it fails to typecheck that because `...args` use `string` in place of `TDelay\n actions.push(sendTo(...args));\n };\n enqueue.sendParent = (...args) => {\n actions.push(sendParent(...args));\n };\n enqueue.spawnChild = (...args) => {\n actions.push(spawnChild(...args));\n };\n enqueue.stopChild = (...args) => {\n actions.push(stopChild(...args));\n };\n enqueue.emit = (...args) => {\n actions.push(emit(...args));\n };\n collect({\n context: args.context,\n event: args.event,\n enqueue,\n check: guard => evaluateGuard(guard, snapshot.context, args.event, snapshot),\n self: actorScope.self,\n system: actorScope.system\n }, actionParams);\n return [snapshot, undefined, actions];\n}\n/**\n * Creates an action object that will execute actions that are queued by the\n * `enqueue(action)` function.\n *\n * @example\n *\n * ```ts\n * import { createMachine, enqueueActions } from 'xstate';\n *\n * const machine = createMachine({\n * entry: enqueueActions(({ enqueue, check }) => {\n * enqueue.assign({ count: 0 });\n *\n * if (check('someGuard')) {\n * enqueue.assign({ count: 1 });\n * }\n *\n * enqueue('someAction');\n * })\n * });\n * ```\n */\nfunction enqueueActions(collect) {\n function enqueueActions(args, params) {\n }\n enqueueActions.type = 'xstate.enqueueActions';\n enqueueActions.collect = collect;\n enqueueActions.resolve = resolveEnqueueActions;\n return enqueueActions;\n}\n\nfunction resolveLog(_, snapshot, actionArgs, actionParams, {\n value,\n label\n}) {\n return [snapshot, {\n value: typeof value === 'function' ? value(actionArgs, actionParams) : value,\n label\n }];\n}\nfunction executeLog({\n logger\n}, {\n value,\n label\n}) {\n if (label) {\n logger(label, value);\n } else {\n logger(value);\n }\n}\n/**\n * @param expr The expression function to evaluate which will be logged. Takes\n * in 2 arguments:\n *\n * - `ctx` - the current state context\n * - `event` - the event that caused this action to be executed.\n *\n * @param label The label to give to the logged expression.\n */\nfunction log(value = ({\n context,\n event\n}) => ({\n context,\n event\n}), label) {\n function log(args, params) {\n }\n log.type = 'xstate.log';\n log.value = value;\n log.label = label;\n log.resolve = resolveLog;\n log.execute = executeLog;\n return log;\n}\n\nexport { SpecialTargets as S, assign as a, enqueueActions as b, sendTo as c, emit as e, forwardTo as f, log as l, sendParent as s };\n","export { createEmptyActor, fromCallback, fromEventObservable, fromObservable, fromPromise, fromTransition } from '../actors/dist/xstate-actors.esm.js';\nimport { t as toArray, S as STATE_DELIMITER, m as mapValues, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, e as evaluateGuard, c as createInvokeId, g as getDelayedTransitions, d as formatInitialTransition, h as getCandidates, r as resolveStateValue, i as getAllStateNodes, j as getStateNodes, k as createMachineSnapshot, l as isInFinalState, n as macrostep, o as transitionNode, p as resolveActionsAndContext, q as createInitEvent, s as microstep, u as getInitialStateNodes, v as toStatePath, w as isStateId, x as getStateNodeByPath, y as getPersistedSnapshot, z as resolveReferencedActor, A as createActor, $ as $$ACTOR_TYPE } from './raise-0f7cf128.esm.js';\nexport { B as Actor, I as __unsafe_getAllOwnEventDescriptors, D as and, M as cancel, A as createActor, j as getStateNodes, C as interpret, H as isMachineSnapshot, J as matchesState, E as not, F as or, K as pathToStateValue, O as raise, P as spawnChild, G as stateIn, Q as stop, R as stopChild, L as toObserver } from './raise-0f7cf128.esm.js';\nimport { a as assign } from './log-15d0f775.esm.js';\nexport { S as SpecialTargets, a as assign, e as emit, b as enqueueActions, f as forwardTo, l as log, s as sendParent, c as sendTo } from './log-15d0f775.esm.js';\nimport '../dev/dist/xstate-dev.esm.js';\n\n/**\n * Asserts that the given event object is of the specified type or types. Throws\n * an error if the event object is not of the specified types.\n *\n * @example\n *\n * ```ts\n * // ...\n * entry: ({ event }) => {\n * assertEvent(event, 'doNothing');\n * // event is { type: 'doNothing' }\n * },\n * // ...\n * exit: ({ event }) => {\n * assertEvent(event, 'greet');\n * // event is { type: 'greet'; message: string }\n *\n * assertEvent(event, ['greet', 'notify']);\n * // event is { type: 'greet'; message: string }\n * // or { type: 'notify'; message: string; level: 'info' | 'error' }\n * },\n * ```\n */\nfunction assertEvent(event, type) {\n const types = toArray(type);\n if (!types.includes(event.type)) {\n const typesText = types.length === 1 ? `type \"${types[0]}\"` : `one of types \"${types.join('\", \"')}\"`;\n throw new Error(`Expected event ${JSON.stringify(event)} to have ${typesText}`);\n }\n}\n\nconst cache = new WeakMap();\nfunction memo(object, key, fn) {\n let memoizedData = cache.get(object);\n if (!memoizedData) {\n memoizedData = {\n [key]: fn()\n };\n cache.set(object, memoizedData);\n } else if (!(key in memoizedData)) {\n memoizedData[key] = fn();\n }\n return memoizedData[key];\n}\n\nconst EMPTY_OBJECT = {};\nconst toSerializableAction = action => {\n if (typeof action === 'string') {\n return {\n type: action\n };\n }\n if (typeof action === 'function') {\n if ('resolve' in action) {\n return {\n type: action.type\n };\n }\n return {\n type: action.name\n };\n }\n return action;\n};\nclass StateNode {\n constructor(/** The raw config used to create the machine. */\n config, options) {\n this.config = config;\n /**\n * The relative key of the state node, which represents its location in the\n * overall state value.\n */\n this.key = void 0;\n /** The unique ID of the state node. */\n this.id = void 0;\n /**\n * The type of this state node:\n *\n * - `'atomic'` - no child state nodes\n * - `'compound'` - nested child state nodes (XOR)\n * - `'parallel'` - orthogonal nested child state nodes (AND)\n * - `'history'` - history state node\n * - `'final'` - final state node\n */\n this.type = void 0;\n /** The string path from the root machine node to this node. */\n this.path = void 0;\n /** The child state nodes. */\n this.states = void 0;\n /**\n * The type of history on this state node. Can be:\n *\n * - `'shallow'` - recalls only top-level historical state value\n * - `'deep'` - recalls historical state value at all levels\n */\n this.history = void 0;\n /** The action(s) to be executed upon entering the state node. */\n this.entry = void 0;\n /** The action(s) to be executed upon exiting the state node. */\n this.exit = void 0;\n /** The parent state node. */\n this.parent = void 0;\n /** The root machine node. */\n this.machine = void 0;\n /**\n * The meta data associated with this state node, which will be returned in\n * State instances.\n */\n this.meta = void 0;\n /**\n * The output data sent with the \"xstate.done.state._id_\" event if this is a\n * final state node.\n */\n this.output = void 0;\n /**\n * The order this state node appears. Corresponds to the implicit document\n * order.\n */\n this.order = -1;\n this.description = void 0;\n this.tags = [];\n this.transitions = void 0;\n this.always = void 0;\n this.parent = options._parent;\n this.key = options._key;\n this.machine = options._machine;\n this.path = this.parent ? this.parent.path.concat(this.key) : [];\n this.id = this.config.id || [this.machine.id, ...this.path].join(STATE_DELIMITER);\n this.type = this.config.type || (this.config.states && Object.keys(this.config.states).length ? 'compound' : this.config.history ? 'history' : 'atomic');\n this.description = this.config.description;\n this.order = this.machine.idMap.size;\n this.machine.idMap.set(this.id, this);\n this.states = this.config.states ? mapValues(this.config.states, (stateConfig, key) => {\n const stateNode = new StateNode(stateConfig, {\n _parent: this,\n _key: key,\n _machine: this.machine\n });\n return stateNode;\n }) : EMPTY_OBJECT;\n if (this.type === 'compound' && !this.config.initial) {\n throw new Error(`No initial state specified for compound state node \"#${this.id}\". Try adding { initial: \"${Object.keys(this.states)[0]}\" } to the state config.`);\n }\n\n // History config\n this.history = this.config.history === true ? 'shallow' : this.config.history || false;\n this.entry = toArray(this.config.entry).slice();\n this.exit = toArray(this.config.exit).slice();\n this.meta = this.config.meta;\n this.output = this.type === 'final' || !this.parent ? this.config.output : undefined;\n this.tags = toArray(config.tags).slice();\n }\n\n /** @internal */\n _initialize() {\n this.transitions = formatTransitions(this);\n if (this.config.always) {\n this.always = toTransitionConfigArray(this.config.always).map(t => formatTransition(this, NULL_EVENT, t));\n }\n Object.keys(this.states).forEach(key => {\n this.states[key]._initialize();\n });\n }\n\n /** The well-structured state node definition. */\n get definition() {\n return {\n id: this.id,\n key: this.key,\n version: this.machine.version,\n type: this.type,\n initial: this.initial ? {\n target: this.initial.target,\n source: this,\n actions: this.initial.actions.map(toSerializableAction),\n eventType: null,\n reenter: false,\n toJSON: () => ({\n target: this.initial.target.map(t => `#${t.id}`),\n source: `#${this.id}`,\n actions: this.initial.actions.map(toSerializableAction),\n eventType: null\n })\n } : undefined,\n history: this.history,\n states: mapValues(this.states, state => {\n return state.definition;\n }),\n on: this.on,\n transitions: [...this.transitions.values()].flat().map(t => ({\n ...t,\n actions: t.actions.map(toSerializableAction)\n })),\n entry: this.entry.map(toSerializableAction),\n exit: this.exit.map(toSerializableAction),\n meta: this.meta,\n order: this.order || -1,\n output: this.output,\n invoke: this.invoke,\n description: this.description,\n tags: this.tags\n };\n }\n\n /** @internal */\n toJSON() {\n return this.definition;\n }\n\n /** The logic invoked as actors by this state node. */\n get invoke() {\n return memo(this, 'invoke', () => toArray(this.config.invoke).map((invokeConfig, i) => {\n const {\n src,\n systemId\n } = invokeConfig;\n const resolvedId = invokeConfig.id ?? createInvokeId(this.id, i);\n const resolvedSrc = typeof src === 'string' ? src : `xstate.invoke.${createInvokeId(this.id, i)}`;\n return {\n ...invokeConfig,\n src: resolvedSrc,\n id: resolvedId,\n systemId: systemId,\n toJSON() {\n const {\n onDone,\n onError,\n ...invokeDefValues\n } = invokeConfig;\n return {\n ...invokeDefValues,\n type: 'xstate.invoke',\n src: resolvedSrc,\n id: resolvedId\n };\n }\n };\n }));\n }\n\n /** The mapping of events to transitions. */\n get on() {\n return memo(this, 'on', () => {\n const transitions = this.transitions;\n return [...transitions].flatMap(([descriptor, t]) => t.map(t => [descriptor, t])).reduce((map, [descriptor, transition]) => {\n map[descriptor] = map[descriptor] || [];\n map[descriptor].push(transition);\n return map;\n }, {});\n });\n }\n get after() {\n return memo(this, 'delayedTransitions', () => getDelayedTransitions(this));\n }\n get initial() {\n return memo(this, 'initial', () => formatInitialTransition(this, this.config.initial));\n }\n\n /** @internal */\n next(snapshot, event) {\n const eventType = event.type;\n const actions = [];\n let selectedTransition;\n const candidates = memo(this, `candidates-${eventType}`, () => getCandidates(this, eventType));\n for (const candidate of candidates) {\n const {\n guard\n } = candidate;\n const resolvedContext = snapshot.context;\n let guardPassed = false;\n try {\n guardPassed = !guard || evaluateGuard(guard, resolvedContext, event, snapshot);\n } catch (err) {\n const guardType = typeof guard === 'string' ? guard : typeof guard === 'object' ? guard.type : undefined;\n throw new Error(`Unable to evaluate guard ${guardType ? `'${guardType}' ` : ''}in transition for event '${eventType}' in state node '${this.id}':\\n${err.message}`);\n }\n if (guardPassed) {\n actions.push(...candidate.actions);\n selectedTransition = candidate;\n break;\n }\n }\n return selectedTransition ? [selectedTransition] : undefined;\n }\n\n /** All the event types accepted by this state node and its descendants. */\n get events() {\n return memo(this, 'events', () => {\n const {\n states\n } = this;\n const events = new Set(this.ownEvents);\n if (states) {\n for (const stateId of Object.keys(states)) {\n const state = states[stateId];\n if (state.states) {\n for (const event of state.events) {\n events.add(`${event}`);\n }\n }\n }\n }\n return Array.from(events);\n });\n }\n\n /**\n * All the events that have transitions directly from this state node.\n *\n * Excludes any inert events.\n */\n get ownEvents() {\n const events = new Set([...this.transitions.keys()].filter(descriptor => {\n return this.transitions.get(descriptor).some(transition => !(!transition.target && !transition.actions.length && !transition.reenter));\n }));\n return Array.from(events);\n }\n}\n\nconst STATE_IDENTIFIER = '#';\nclass StateMachine {\n constructor(/** The raw config used to create the machine. */\n config, implementations) {\n this.config = config;\n /** The machine's own version. */\n this.version = void 0;\n this.schemas = void 0;\n this.implementations = void 0;\n /** @internal */\n this.__xstatenode = true;\n /** @internal */\n this.idMap = new Map();\n this.root = void 0;\n this.id = void 0;\n this.states = void 0;\n this.events = void 0;\n this.id = config.id || '(machine)';\n this.implementations = {\n actors: implementations?.actors ?? {},\n actions: implementations?.actions ?? {},\n delays: implementations?.delays ?? {},\n guards: implementations?.guards ?? {}\n };\n this.version = this.config.version;\n this.schemas = this.config.schemas;\n this.transition = this.transition.bind(this);\n this.getInitialSnapshot = this.getInitialSnapshot.bind(this);\n this.getPersistedSnapshot = this.getPersistedSnapshot.bind(this);\n this.restoreSnapshot = this.restoreSnapshot.bind(this);\n this.start = this.start.bind(this);\n this.root = new StateNode(config, {\n _key: this.id,\n _machine: this\n });\n this.root._initialize();\n this.states = this.root.states; // TODO: remove!\n this.events = this.root.events;\n }\n\n /**\n * Clones this state machine with the provided implementations and merges the\n * `context` (if provided).\n *\n * @param implementations Options (`actions`, `guards`, `actors`, `delays`,\n * `context`) to recursively merge with the existing options.\n * @returns A new `StateMachine` instance with the provided implementations.\n */\n provide(implementations) {\n const {\n actions,\n guards,\n actors,\n delays\n } = this.implementations;\n return new StateMachine(this.config, {\n actions: {\n ...actions,\n ...implementations.actions\n },\n guards: {\n ...guards,\n ...implementations.guards\n },\n actors: {\n ...actors,\n ...implementations.actors\n },\n delays: {\n ...delays,\n ...implementations.delays\n }\n });\n }\n resolveState(config) {\n const resolvedStateValue = resolveStateValue(this.root, config.value);\n const nodeSet = getAllStateNodes(getStateNodes(this.root, resolvedStateValue));\n return createMachineSnapshot({\n _nodes: [...nodeSet],\n context: config.context || {},\n children: {},\n status: isInFinalState(nodeSet, this.root) ? 'done' : config.status || 'active',\n output: config.output,\n error: config.error,\n historyValue: config.historyValue\n }, this);\n }\n\n /**\n * Determines the next snapshot given the current `snapshot` and received\n * `event`. Calculates a full macrostep from all microsteps.\n *\n * @param snapshot The current snapshot\n * @param event The received event\n */\n transition(snapshot, event, actorScope) {\n return macrostep(snapshot, event, actorScope).snapshot;\n }\n\n /**\n * Determines the next state given the current `state` and `event`. Calculates\n * a microstep.\n *\n * @param state The current state\n * @param event The received event\n */\n microstep(snapshot, event, actorScope) {\n return macrostep(snapshot, event, actorScope).microstates;\n }\n getTransitionData(snapshot, event) {\n return transitionNode(this.root, snapshot.value, snapshot, event) || [];\n }\n\n /**\n * The initial state _before_ evaluating any microsteps. This \"pre-initial\"\n * state is provided to initial actions executed in the initial state.\n */\n getPreInitialState(actorScope, initEvent, internalQueue) {\n const {\n context\n } = this.config;\n const preInitial = createMachineSnapshot({\n context: typeof context !== 'function' && context ? context : {},\n _nodes: [this.root],\n children: {},\n status: 'active'\n }, this);\n if (typeof context === 'function') {\n const assignment = ({\n spawn,\n event,\n self\n }) => context({\n spawn,\n input: event.input,\n self\n });\n return resolveActionsAndContext(preInitial, initEvent, actorScope, [assign(assignment)], internalQueue);\n }\n return preInitial;\n }\n\n /**\n * Returns the initial `State` instance, with reference to `self` as an\n * `ActorRef`.\n */\n getInitialSnapshot(actorScope, input) {\n const initEvent = createInitEvent(input); // TODO: fix;\n const internalQueue = [];\n const preInitialState = this.getPreInitialState(actorScope, initEvent, internalQueue);\n const nextState = microstep([{\n target: [...getInitialStateNodes(this.root)],\n source: this.root,\n reenter: true,\n actions: [],\n eventType: null,\n toJSON: null // TODO: fix\n }], preInitialState, actorScope, initEvent, true, internalQueue);\n const {\n snapshot: macroState\n } = macrostep(nextState, initEvent, actorScope, internalQueue);\n return macroState;\n }\n start(snapshot) {\n Object.values(snapshot.children).forEach(child => {\n if (child.getSnapshot().status === 'active') {\n child.start();\n }\n });\n }\n getStateNodeById(stateId) {\n const fullPath = toStatePath(stateId);\n const relativePath = fullPath.slice(1);\n const resolvedStateId = isStateId(fullPath[0]) ? fullPath[0].slice(STATE_IDENTIFIER.length) : fullPath[0];\n const stateNode = this.idMap.get(resolvedStateId);\n if (!stateNode) {\n throw new Error(`Child state node '#${resolvedStateId}' does not exist on machine '${this.id}'`);\n }\n return getStateNodeByPath(stateNode, relativePath);\n }\n get definition() {\n return this.root.definition;\n }\n toJSON() {\n return this.definition;\n }\n getPersistedSnapshot(snapshot, options) {\n return getPersistedSnapshot(snapshot, options);\n }\n restoreSnapshot(snapshot, _actorScope) {\n const children = {};\n const snapshotChildren = snapshot.children;\n Object.keys(snapshotChildren).forEach(actorId => {\n const actorData = snapshotChildren[actorId];\n const childState = actorData.snapshot;\n const src = actorData.src;\n const logic = typeof src === 'string' ? resolveReferencedActor(this, src) : src;\n if (!logic) {\n return;\n }\n const actorRef = createActor(logic, {\n id: actorId,\n parent: _actorScope.self,\n syncSnapshot: actorData.syncSnapshot,\n snapshot: childState,\n src,\n systemId: actorData.systemId\n });\n children[actorId] = actorRef;\n });\n const restoredSnapshot = createMachineSnapshot({\n ...snapshot,\n children,\n _nodes: Array.from(getAllStateNodes(getStateNodes(this.root, snapshot.value)))\n }, this);\n let seen = new Set();\n function reviveContext(contextPart, children) {\n if (seen.has(contextPart)) {\n return;\n }\n seen.add(contextPart);\n for (let key in contextPart) {\n const value = contextPart[key];\n if (value && typeof value === 'object') {\n if ('xstate$$type' in value && value.xstate$$type === $$ACTOR_TYPE) {\n contextPart[key] = children[value.id];\n continue;\n }\n reviveContext(value, children);\n }\n }\n }\n reviveContext(restoredSnapshot.context, children);\n return restoredSnapshot;\n }\n}\n\n// this is not 100% accurate since we can't make parallel regions required in the result\n// `TTestValue` doesn't encode this information anyhow for us to be able to do that\n// this is fine for most practical use cases anyway though\n\n/**\n * Creates a state machine (statechart) with the given configuration.\n *\n * The state machine represents the pure logic of a state machine actor.\n *\n * @example\n *\n * ```ts\n * import { createMachine } from 'xstate';\n *\n * const lightMachine = createMachine({\n * id: 'light',\n * initial: 'green',\n * states: {\n * green: {\n * on: {\n * TIMER: { target: 'yellow' }\n * }\n * },\n * yellow: {\n * on: {\n * TIMER: { target: 'red' }\n * }\n * },\n * red: {\n * on: {\n * TIMER: { target: 'green' }\n * }\n * }\n * }\n * });\n *\n * const lightActor = createActor(lightMachine);\n * lightActor.start();\n *\n * lightActor.send({ type: 'TIMER' });\n * ```\n *\n * @param config The state machine configuration.\n * @param options DEPRECATED: use `setup({ ... })` or `machine.provide({ ... })`\n * to provide machine implementations instead.\n */\nfunction createMachine(config, implementations) {\n return new StateMachine(config, implementations);\n}\n\n/** @internal */\nfunction createInertActorScope(actorLogic) {\n const self = createActor(actorLogic);\n const inertActorScope = {\n self,\n defer: () => {},\n id: '',\n logger: () => {},\n sessionId: '',\n stopChild: () => {},\n system: self.system,\n emit: () => {}\n };\n return inertActorScope;\n}\nfunction getInitialSnapshot(actorLogic, ...[input]) {\n const actorScope = createInertActorScope(actorLogic);\n return actorLogic.getInitialSnapshot(actorScope, input);\n}\n\n/**\n * Determines the next snapshot for the given `actorLogic` based on the given\n * `snapshot` and `event`.\n *\n * If the `snapshot` is `undefined`, the initial snapshot of the `actorLogic` is\n * used.\n *\n * @example\n *\n * ```ts\n * import { getNextSnapshot } from 'xstate';\n * import { trafficLightMachine } from './trafficLightMachine.ts';\n *\n * const nextSnapshot = getNextSnapshot(\n * trafficLightMachine, // actor logic\n * undefined, // snapshot (or initial state if undefined)\n * { type: 'TIMER' }\n * ); // event object\n *\n * console.log(nextSnapshot.value);\n * // => 'yellow'\n *\n * const nextSnapshot2 = getNextSnapshot(\n * trafficLightMachine, // actor logic\n * nextSnapshot, // snapshot\n * { type: 'TIMER' }\n * ); // event object\n *\n * console.log(nextSnapshot2.value);\n * // =>'red'\n * ```\n */\nfunction getNextSnapshot(actorLogic, snapshot, event) {\n const inertActorScope = createInertActorScope(actorLogic);\n inertActorScope.self._snapshot = snapshot;\n return actorLogic.transition(snapshot, event, inertActorScope);\n}\n\n// at the moment we allow extra actors - ones that are not specified by `children`\n// this could be reconsidered in the future\n\nfunction setup({\n schemas,\n actors,\n actions,\n guards,\n delays\n}) {\n return {\n createMachine: config => createMachine({\n ...config,\n schemas\n }, {\n actors,\n actions,\n guards,\n delays\n })\n };\n}\n\nclass SimulatedClock {\n constructor() {\n this.timeouts = new Map();\n this._now = 0;\n this._id = 0;\n this._flushing = false;\n this._flushingInvalidated = false;\n }\n now() {\n return this._now;\n }\n getId() {\n return this._id++;\n }\n setTimeout(fn, timeout) {\n this._flushingInvalidated = this._flushing;\n const id = this.getId();\n this.timeouts.set(id, {\n start: this.now(),\n timeout,\n fn\n });\n return id;\n }\n clearTimeout(id) {\n this._flushingInvalidated = this._flushing;\n this.timeouts.delete(id);\n }\n set(time) {\n if (this._now > time) {\n throw new Error('Unable to travel back in time');\n }\n this._now = time;\n this.flushTimeouts();\n }\n flushTimeouts() {\n if (this._flushing) {\n this._flushingInvalidated = true;\n return;\n }\n this._flushing = true;\n const sorted = [...this.timeouts].sort(([_idA, timeoutA], [_idB, timeoutB]) => {\n const endA = timeoutA.start + timeoutA.timeout;\n const endB = timeoutB.start + timeoutB.timeout;\n return endB > endA ? -1 : 1;\n });\n for (const [id, timeout] of sorted) {\n if (this._flushingInvalidated) {\n this._flushingInvalidated = false;\n this._flushing = false;\n this.flushTimeouts();\n return;\n }\n if (this.now() - timeout.start >= timeout.timeout) {\n this.timeouts.delete(id);\n timeout.fn.call(null);\n }\n }\n this._flushing = false;\n }\n increment(ms) {\n this._now += ms;\n this.flushTimeouts();\n }\n}\n\n/**\n * Returns a promise that resolves to the `output` of the actor when it is done.\n *\n * @example\n *\n * ```ts\n * const machine = createMachine({\n * // ...\n * output: {\n * count: 42\n * }\n * });\n *\n * const actor = createActor(machine);\n *\n * actor.start();\n *\n * const output = await toPromise(actor);\n *\n * console.log(output);\n * // logs { count: 42 }\n * ```\n */\nfunction toPromise(actor) {\n return new Promise((resolve, reject) => {\n actor.subscribe({\n complete: () => {\n resolve(actor.getSnapshot().output);\n },\n error: reject\n });\n });\n}\n\nconst defaultWaitForOptions = {\n timeout: Infinity // much more than 10 seconds\n};\n\n/**\n * Subscribes to an actor ref and waits for its emitted value to satisfy a\n * predicate, and then resolves with that value. Will throw if the desired state\n * is not reached after an optional timeout. (defaults to Infinity).\n *\n * @example\n *\n * ```js\n * const state = await waitFor(someService, (state) => {\n * return state.hasTag('loaded');\n * });\n *\n * state.hasTag('loaded'); // true\n * ```\n *\n * @param actorRef The actor ref to subscribe to\n * @param predicate Determines if a value matches the condition to wait for\n * @param options\n * @returns A promise that eventually resolves to the emitted value that matches\n * the condition\n */\nfunction waitFor(actorRef, predicate, options) {\n const resolvedOptions = {\n ...defaultWaitForOptions,\n ...options\n };\n return new Promise((res, rej) => {\n const {\n signal\n } = resolvedOptions;\n if (signal?.aborted) {\n rej(signal.reason);\n return;\n }\n let done = false;\n const handle = resolvedOptions.timeout === Infinity ? undefined : setTimeout(() => {\n dispose();\n rej(new Error(`Timeout of ${resolvedOptions.timeout} ms exceeded`));\n }, resolvedOptions.timeout);\n const dispose = () => {\n clearTimeout(handle);\n done = true;\n sub?.unsubscribe();\n if (abortListener) {\n signal.removeEventListener('abort', abortListener);\n }\n };\n function checkEmitted(emitted) {\n if (predicate(emitted)) {\n dispose();\n res(emitted);\n }\n }\n\n /**\n * If the `signal` option is provided, this will be the listener for its\n * `abort` event\n */\n let abortListener;\n let sub; // avoid TDZ when disposing synchronously\n\n // See if the current snapshot already matches the predicate\n checkEmitted(actorRef.getSnapshot());\n if (done) {\n return;\n }\n\n // only define the `abortListener` if the `signal` option is provided\n if (signal) {\n abortListener = () => {\n dispose();\n // XState does not \"own\" the signal, so we should reject with its reason (if any)\n rej(signal.reason);\n };\n signal.addEventListener('abort', abortListener);\n }\n sub = actorRef.subscribe({\n next: checkEmitted,\n error: err => {\n dispose();\n rej(err);\n },\n complete: () => {\n dispose();\n rej(new Error(`Actor terminated without satisfying predicate`));\n }\n });\n if (done) {\n sub.unsubscribe();\n }\n });\n}\n\nexport { SimulatedClock, StateMachine, StateNode, assertEvent, createMachine, getInitialSnapshot, getNextSnapshot, setup, toPromise, waitFor };\n","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/connection/index.ts\nvar connection_exports = {};\n__export(connection_exports, {\n Connection: () => Connection,\n DEVICE_REMOVED: () => DEVICE_REMOVED,\n DEVICE_UNKNOWN: () => DEVICE_UNKNOWN,\n ENCRYPTION_FAILURE: () => ENCRYPTION_FAILURE,\n IDENTITY_PROOF_INVALID: () => IDENTITY_PROOF_INVALID,\n INVITATION_PROOF_INVALID: () => INVITATION_PROOF_INVALID,\n JOINED_WRONG_TEAM: () => JOINED_WRONG_TEAM,\n MEMBER_REMOVED: () => MEMBER_REMOVED,\n NEITHER_IS_MEMBER: () => NEITHER_IS_MEMBER,\n SERVER_REMOVED: () => SERVER_REMOVED,\n TIMEOUT: () => TIMEOUT,\n connectionErrors: () => connectionErrors,\n createErrorMessage: () => createErrorMessage,\n isInviteeClaim: () => isInviteeClaim,\n isInviteeContext: () => isInviteeContext,\n isInviteeDeviceClaim: () => isInviteeDeviceClaim,\n isInviteeDeviceContext: () => isInviteeDeviceContext,\n isInviteeMemberClaim: () => isInviteeMemberClaim,\n isInviteeMemberContext: () => isInviteeMemberContext,\n isMemberClaim: () => isMemberClaim,\n isMemberContext: () => isMemberContext,\n isServerContext: () => isServerContext\n});\n\n// src/connection/Connection.ts\nimport { EventEmitter as EventEmitter3 } from \"@herbcaudill/eventemitter42\";\nimport {\n generateMessage,\n headsAreEqual,\n initSyncState,\n receiveMessage,\n redactKeys as redactKeys4\n} from \"@localfirst/crdx\";\nimport { asymmetric as asymmetric3, randomKeyBytes, symmetric as symmetric2 } from \"@localfirst/crypto\";\nimport { assert as assert8, debug as debug4 } from \"@localfirst/shared\";\n\n// src/connection/deriveSharedKey.ts\nimport { hash, hashBytes, base58 } from \"@localfirst/crypto\";\n\n// src/util/actionFingerprint.ts\nvar actionFingerprint = (link) => {\n const fingerprintPayload = (action) => {\n switch (action.type) {\n case \"ADD_MEMBER\": {\n return action.payload.member.userId;\n }\n case \"REMOVE_MEMBER\": {\n return action.payload.userId;\n }\n case \"ADD_ROLE\": {\n return action.payload.roleName;\n }\n case \"ADD_MEMBER_ROLE\":\n case \"REMOVE_MEMBER_ROLE\": {\n return `${action.payload.roleName}:${action.payload.userId}`;\n }\n case \"ADD_DEVICE\": {\n return action.payload.device.deviceName;\n }\n case \"REMOVE_DEVICE\": {\n return action.payload.deviceId;\n }\n case \"INVITE_MEMBER\":\n case \"INVITE_DEVICE\": {\n return action.payload.invitation.id;\n }\n case \"REVOKE_INVITATION\": {\n return action.payload.id;\n }\n case \"ADMIT_MEMBER\":\n case \"ADMIT_DEVICE\": {\n return action.payload.id;\n }\n case \"CHANGE_MEMBER_KEYS\": {\n return JSON.stringify(action.payload.keys);\n }\n default: {\n return JSON.stringify(action.payload);\n }\n }\n };\n if (link.body.type === \"ROOT\") {\n return \"ROOT\";\n }\n return `${link.body.type}:${fingerprintPayload(link.body)}`;\n};\n\n// src/util/arraysAreEqual.ts\nvar arraysAreEqual = (a, b) => {\n if (!a || !b)\n return false;\n const normalize2 = (array) => array.sort().join(\",\");\n return normalize2(a) === normalize2(b);\n};\n\n// src/util/graphSummary.ts\nimport { getSequence } from \"@localfirst/crdx\";\n\n// src/team/membershipResolver.ts\nimport { getConcurrentBubbles } from \"@localfirst/crdx\";\n\n// src/team/isAdminOnlyAction.ts\nvar isAdminOnlyAction = (action) => {\n const nonAdminActions = [\n \"INVITE_DEVICE\",\n \"ADD_DEVICE\",\n \"REMOVE_DEVICE\",\n \"CHANGE_MEMBER_KEYS\",\n \"CHANGE_SERVER_KEYS\",\n \"ADMIT_MEMBER\",\n \"ADMIT_DEVICE\"\n ];\n return !nonAdminActions.includes(action.type);\n};\n\n// src/role/index.ts\nvar role_exports = {};\n__export(role_exports, {\n ADMIN: () => ADMIN\n});\n\n// src/role/constants.ts\nvar ADMIN = \"admin\";\n\n// src/team/bySeniority.ts\nimport { isPredecessor } from \"@localfirst/crdx\";\nimport { assert } from \"@localfirst/shared\";\nvar bySeniority = (chain) => (a, b) => {\n if (isFounder(chain, a))\n return -1;\n if (isFounder(chain, b))\n return 1;\n const linkThatAddedMember = (userId) => {\n const addedMember = (link) => link.body.type === \"ADD_MEMBER\" && link.body.payload.member.userId === userId;\n const result = Object.values(chain.links).find(addedMember);\n assert(result, `Could not find link that added member ${userId}`);\n return result;\n };\n const [addedA, addedB] = [a, b].map(linkThatAddedMember);\n return isPredecessor(chain, addedA, addedB) ? -1 : 1;\n};\nvar isFounder = (chain, userId) => {\n const rootLink = chain.links[chain.root];\n return rootLink.body.userId === userId;\n};\n\n// src/team/membershipResolver.ts\nvar membershipResolver = (graph) => {\n const bubbles = getConcurrentBubbles(graph).map((hashes) => hashes.map((hash3) => graph.links[hash3]));\n const invalidLinks = [];\n for (let bubble of bubbles) {\n for (const ruleName in membershipRules) {\n const rule = membershipRules[ruleName];\n const invalidLinksByThisRule = rule(bubble, graph);\n const alsoInvalid = invalidLinksByThisRule.flatMap((link) => findDependentLinks(bubble, link));\n invalidLinks.push(...invalidLinksByThisRule, ...alsoInvalid);\n bubble = bubble.filter(linkNotIn(invalidLinks));\n }\n }\n return {\n filter: linkNotIn(invalidLinks)\n };\n};\nvar findDependentLinks = (bubble, invalidLink) => {\n const dependentLinks = [];\n switch (invalidLink.body.type) {\n case \"INVITE_MEMBER\":\n case \"INVITE_DEVICE\": {\n const { invitation } = invalidLink.body.payload;\n dependentLinks.push(...bubble.filter(usesInvitation(invitation)));\n break;\n }\n case \"ADMIT_MEMBER\": {\n const userId = invalidLink.body.payload.memberKeys.name;\n dependentLinks.push(...bubble.filter(authorIs(userId)));\n break;\n }\n default: {\n break;\n }\n }\n const alsoInvalid = dependentLinks.flatMap((l) => findDependentLinks(bubble, l));\n return dependentLinks.concat(alsoInvalid);\n};\nvar membershipRules = {\n // RULE: mutual and circular removals are resolved by seniority\n resolveMutualRemovals(links, chain) {\n const removed = getRemovedAndDemotedMembers(links);\n const removers = getRemovalsAndDemotions(links).map(getAuthor);\n const isCircularRemoval = removed.length > 0 && arraysAreEqual(removed, removers);\n if (!isCircularRemoval) {\n return [];\n }\n return links.filter(authorIs(leastSenior(chain, removers)));\n },\n // RULE: If A is removing C, B can't overcome this by concurrently removing C then adding C back\n cantAddBackRemovedMember(links) {\n const removedMembers = getRemovedAndDemotedMembers(links);\n return getAdditions(links).filter((link) => removedMembers.includes(addedUserId(link)));\n },\n // RULE: If B is removed, anything they do concurrently is omitted\n cantDoAnythingWhenRemoved(links) {\n const removedMembers = getRemovedMembers(links);\n return links.filter(authorIn(removedMembers));\n },\n // RULE: If B is demoted, any admin-only actions they do concurrently are omitted\n cantDoAdminActionsWhenDemoted(links) {\n const demotedMembers = getDemotedMembers(links);\n const authorDemoted = authorIn(demotedMembers);\n const isAdminOnly = (link) => isAdminOnlyAction(link.body);\n return links.filter((link) => authorDemoted(link) && isAdminOnly(link));\n }\n};\nvar leastSenior = (chain, userNames) => userNames.sort(bySeniority(chain)).pop();\nvar isAddAction = (link) => [\"ADD_MEMBER\", \"ADD_MEMBER_ROLE\", \"ADMIT_MEMBER\"].includes(link.body.type);\nvar isRemovalAction = (link) => link.body.type === \"REMOVE_MEMBER\";\nvar getAdditions = (links) => links.filter(isAddAction);\nvar getRemovals = (links) => links.filter(isRemovalAction);\nvar isDemotionAction = (link) => link.body.type === \"REMOVE_MEMBER_ROLE\" && link.body.payload.roleName === ADMIN;\nvar getDemotions = (links) => links.filter(isDemotionAction);\nvar getRemovalsAndDemotions = (links) => getRemovals(links).concat(getDemotions(links));\nvar getRemovedAndDemotedMembers = (links) => getRemovalsAndDemotions(links).map(getTarget);\nvar getRemovedMembers = (links) => getRemovals(links).map(getTarget);\nvar getDemotedMembers = (links) => getDemotions(links).map(getTarget);\nvar getTarget = (link) => link.body.payload.userId;\nvar getAuthor = (link) => link.body.userId;\nvar authorIs = (author) => (link) => getAuthor(link) === author;\nvar authorIn = (excludeList) => (link) => excludeList.includes(getAuthor(link));\nvar addedUserId = (link) => {\n switch (link.body.type) {\n case \"ADD_MEMBER\": {\n const addAction = link.body;\n return addAction.payload.member.userId;\n }\n case \"ADD_MEMBER_ROLE\": {\n const addAction = link.body;\n return addAction.payload.userId;\n }\n case \"ADMIT_MEMBER\": {\n const addAction = link.body;\n return addAction.payload.memberKeys.name;\n }\n }\n};\nvar linkNotIn = (excludeList) => (link) => !excludeList.includes(link);\nvar usesInvitation = (invitation) => (l) => (l.body.type === \"ADMIT_MEMBER\" || l.body.type === \"ADMIT_DEVICE\") && l.body.payload.id === invitation.id;\n\n// src/util/graphSummary.ts\nvar graphSummary = (graph) => {\n const links = getSequence(graph, membershipResolver).filter((l) => !l.isInvalid).map((l) => actionFingerprint(l)).join(\",\");\n return links;\n};\n\n// src/util/clone.ts\nimport { clone } from \"lodash-es\";\n\n// src/util/constants.ts\nvar SIGNATURE = \"SIGNATURE\";\nvar ENCRYPTION = \"ENCRYPTION\";\nvar SYMMETRIC = \"SYMMETRIC\";\nvar LINK_HASH = \"LINK_HASH\";\nvar LINK_TO_PREVIOUS = \"LINK_TO_PREVIOUS\";\nvar INVITATION = \"INVITATION\";\nvar DEVICE_ID = \"DEVICE_ID\";\nvar SHARED_KEY = \"SHARED_KEY\";\nvar HashPurpose = {\n SIGNATURE,\n ENCRYPTION,\n SYMMETRIC,\n LINK_HASH,\n LINK_TO_PREVIOUS,\n INVITATION,\n DEVICE_ID,\n SHARED_KEY\n};\nvar VALID = { isValid: true };\n\n// src/util/composeTransforms.ts\nvar composeTransforms = (transforms) => (state) => transforms.reduce((state2, transform) => transform(state2), state);\n\n// src/util/getScope.ts\nvar getScope = (x) => ({\n type: x.type,\n name: x.name\n});\n\n// src/util/lockboxSummary.ts\nvar lockboxSummary = (l) => `${l.recipient.name}(${trunc(l.recipient.publicKey)}):${l.contents.name}#${l.contents.generation}`;\nvar trunc = (s) => s.slice(0, 5);\n\n// src/util/scopesMatch.ts\nimport { assert as assert2 } from \"@localfirst/shared\";\nvar scopesMatch = (a, b) => {\n return a.type === b.type && a.name === b.name;\n};\nvar assertScopesMatch = (a, b) => {\n assert2(\n scopesMatch(a, b),\n `The scope of the new keys must match those of the old lockbox. \n New scope: ${JSON.stringify(getScope(a))} \n Old scope: ${JSON.stringify(getScope(b))}`\n );\n};\n\n// src/util/types.ts\nvar KeyType = {\n GRAPH: \"GRAPH\",\n TEAM: \"TEAM\",\n ROLE: \"ROLE\",\n USER: \"USER\",\n DEVICE: \"DEVICE\",\n SERVER: \"SERVER\",\n EPHEMERAL: \"EPHEMERAL\"\n};\nvar ValidationError = class extends Error {\n constructor(message, details) {\n super();\n this.message = message;\n this.details = details;\n }\n name;\n details;\n};\n\n// src/connection/deriveSharedKey.ts\nvar deriveSharedKey = (a, b) => {\n const aBytes = typeof a === \"string\" ? base58.decode(a) : a;\n const bBytes = typeof b === \"string\" ? base58.decode(b) : b;\n const concatenatedSeeds = [aBytes, bBytes].sort(byteArraySortComparator).reduce((result, seed) => new Uint8Array([...result, ...seed]), new Uint8Array());\n const hashFn = typeof a === \"string\" ? hash : hashBytes;\n return hashFn(HashPurpose.SHARED_KEY, concatenatedSeeds);\n};\nvar byteArraySortComparator = (a, b) => {\n const aString = a.toString();\n const bString = b.toString();\n if (aString < bString)\n return -1;\n if (aString > bString)\n return 1;\n return 0;\n};\n\n// src/connection/errors.ts\nvar DEVICE_REMOVED = \"DEVICE_REMOVED\";\nvar DEVICE_UNKNOWN = \"DEVICE_UNKNOWN\";\nvar ENCRYPTION_FAILURE = \"ENCRYPTION_FAILURE\";\nvar IDENTITY_PROOF_INVALID = \"IDENTITY_PROOF_INVALID\";\nvar INVITATION_PROOF_INVALID = \"INVITATION_PROOF_INVALID\";\nvar JOINED_WRONG_TEAM = \"JOINED_WRONG_TEAM\";\nvar MEMBER_REMOVED = \"MEMBER_REMOVED\";\nvar NEITHER_IS_MEMBER = \"NEITHER_IS_MEMBER\";\nvar SERVER_REMOVED = \"SERVER_REMOVED\";\nvar TIMEOUT = \"TIMEOUT\";\nvar connectionErrors = {\n [DEVICE_REMOVED]: {\n localMessage: \"The peer's device was removed from this team\",\n remoteMessage: \"Your device was removed from this team\"\n },\n [DEVICE_UNKNOWN]: {\n localMessage: \"The peer's device isn't listed on this team\",\n remoteMessage: \"Your device isn't listed on this team\"\n },\n [ENCRYPTION_FAILURE]: {\n localMessage: \"Unable to establish a secure connection\"\n },\n [IDENTITY_PROOF_INVALID]: {\n localMessage: \"The peer's proof of identity is not valid\",\n remoteMessage: \"Your proof of identity isn't valid\"\n },\n [INVITATION_PROOF_INVALID]: {\n localMessage: \"The peer's invitation wasn't accepted\",\n remoteMessage: \"Your invitation wasn't accepted\"\n },\n [JOINED_WRONG_TEAM]: {\n localMessage: \"This isn't the team you were invited to\",\n remoteMessage: \"This isn't the team the peer was invited to\"\n },\n [MEMBER_REMOVED]: {\n localMessage: \"The peer was removed from this team\",\n remoteMessage: \"You were removed from this team\"\n },\n [NEITHER_IS_MEMBER]: {\n localMessage: \"The peer is also holding an invitation and cannot admit you to the team\"\n },\n [SERVER_REMOVED]: {\n localMessage: \"The server was removed from this team\",\n remoteMessage: \"You (a server) were removed from this team\"\n },\n [TIMEOUT]: {\n localMessage: \"We didn't hear back from the peer; giving up\",\n remoteMessage: \"The peer didn't hear back from you, so they gave up\"\n }\n};\nvar createErrorMessage = (type, destination = \"LOCAL\") => {\n const { localMessage, remoteMessage = localMessage } = connectionErrors[type];\n const message = destination === \"LOCAL\" ? localMessage : remoteMessage;\n const messageType = destination === \"LOCAL\" ? \"LOCAL_ERROR\" : \"ERROR\";\n return { type: messageType, payload: { type, message } };\n};\n\n// src/connection/getDeviceUserFromGraph.ts\nimport { assert as assert6 } from \"@localfirst/shared\";\n\n// src/invitation/generateProof.ts\nimport { memoize as memoize2 } from \"@localfirst/shared\";\nimport { signatures } from \"@localfirst/crypto\";\n\n// src/invitation/deriveId.ts\nimport { hash as hash2, stretch } from \"@localfirst/crypto\";\nfunction deriveId(seed) {\n const stretchedKey = stretch(seed);\n return hash2(HashPurpose.INVITATION, stretchedKey).slice(0, 15);\n}\n\n// src/invitation/generateStarterKeys.ts\nimport { createKeyset, EPHEMERAL_SCOPE } from \"@localfirst/crdx\";\n\n// src/invitation/normalize.ts\nvar normalize = (secretKey) => secretKey.replaceAll(/[^a-z\\d]/gi, \"\");\n\n// src/invitation/generateStarterKeys.ts\nimport { memoize } from \"@localfirst/shared\";\nvar generateStarterKeys = memoize((seed) => {\n seed = normalize(seed);\n return createKeyset(EPHEMERAL_SCOPE, seed);\n});\n\n// src/invitation/generateProof.ts\nvar generateProof = memoize2((seed) => {\n seed = normalize(seed);\n const id = deriveId(seed);\n const ephemeralKeys = generateStarterKeys(seed);\n const payload = { id };\n const signature = signatures.sign(payload, ephemeralKeys.signature.secretKey);\n return { id, signature };\n});\n\n// src/team/serialize.ts\nimport {\n decryptGraph,\n getChildMap\n} from \"@localfirst/crdx\";\nimport { pack, unpack } from \"msgpackr\";\nvar serializeTeamGraph = (graph) => {\n const childMap = getChildMap(graph);\n const { encryptedLinks, head, root } = graph;\n const encryptedGraph = { encryptedLinks, childMap, head, root };\n const serialized = pack(encryptedGraph);\n return toUint8Array(serialized);\n};\nvar deserializeTeamGraph = (serialized, keys2) => {\n const encryptedGraph = unpack(serialized);\n return decryptGraph({ encryptedGraph, keys: keys2 });\n};\nvar maybeDeserialize = (source, teamKeyring2) => isGraph(source) ? source : deserializeTeamGraph(source, teamKeyring2);\nvar isGraph = (source) => source?.hasOwnProperty(\"root\");\nvar toUint8Array = (buf) => new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n\n// src/team/teamMachine.ts\nimport { makeMachine } from \"@localfirst/crdx\";\n\n// src/team/constants.ts\nvar ALL = \"ALL\";\nvar initialState = {\n head: [],\n teamName: \"\",\n members: [],\n servers: [],\n roles: [],\n lockboxes: [],\n invitations: {},\n messages: [],\n removedMembers: [],\n removedDevices: [],\n removedServers: [],\n pendingKeyRotations: []\n};\nvar TEAM_SCOPE = { type: KeyType.TEAM, name: KeyType.TEAM };\nvar ADMIN_SCOPE = { type: KeyType.ROLE, name: ADMIN };\nvar EPHEMERAL_SCOPE2 = {\n type: KeyType.EPHEMERAL,\n name: KeyType.EPHEMERAL\n};\n\n// src/team/reducer.ts\nimport { ROOT as ROOT2 } from \"@localfirst/crdx\";\n\n// src/team/invalidLinkReducer.ts\nvar invalidLinkReducer = (state, link) => {\n switch (link.body.type) {\n case \"ADMIT_MEMBER\": {\n const keys2 = link.body.payload.memberKeys;\n const userId = keys2.name;\n const member2 = {\n userName: \"\",\n // not needed here\n userId,\n keys: keys2,\n roles: []\n };\n const removedMembers = [...state.removedMembers, member2];\n const pendingKeyRotations = [...state.pendingKeyRotations];\n if (!pendingKeyRotations.includes(userId)) {\n pendingKeyRotations.push(userId);\n }\n return {\n ...state,\n // Note that we don't need to alter the list of members, because this member is never added\n removedMembers,\n pendingKeyRotations\n };\n }\n default: {\n break;\n }\n }\n return state;\n};\n\n// src/team/setHead.ts\nvar setHead = (link) => (state) => ({ ...state, head: [link.hash] });\n\n// src/team/transforms/addDevice.ts\nvar addDevice = (device2) => (state) => {\n const { userId } = device2;\n return {\n ...state,\n // Add device to the member's list of devices\n members: state.members.map((member2) => {\n if (member2.userId === userId) {\n const { devices = [] } = member2;\n if (devices.find((d) => d.deviceId === device2.deviceId)) {\n return member2;\n } else\n return {\n ...member2,\n devices: [...devices, device2]\n };\n }\n return member2;\n }),\n // Remove device ID from list of removed devices (e.g. if it was removed at one point and is being re-added)\n removedDevices: state.removedDevices.filter((d) => d.keys.name === device2.deviceId)\n };\n};\n\n// src/team/transforms/addMember.ts\nvar addMember = (newMember) => (state) => ({\n ...state,\n // Add member to the team's list of members\n members: [\n ...state.members,\n {\n ...newMember,\n roles: []\n }\n ],\n // Remove member's name from list of removed members (e.g. if member was removed and is now being re-added)\n removedMembers: state.removedMembers.filter((m) => m.userId === newMember.userId)\n});\n\n// src/team/transforms/addMemberRoles.ts\nvar addMemberRoles = (userId, roles = []) => roles.map((roleName) => (state) => ({\n ...state,\n members: state.members.map((member2) => ({\n ...member2,\n roles: member2.userId !== userId || member2.roles.includes(roleName) ? member2.roles : [...member2.roles, roleName]\n }))\n}));\n\n// src/team/transforms/addMessage.ts\nvar addMessage = (message) => (state) => ({\n ...state,\n messages: [...state.messages, message]\n});\n\n// src/team/transforms/addRole.ts\nvar addRole = (newRole) => (state) => ({\n ...state,\n roles: [...state.roles, newRole]\n});\n\n// src/util/unique.ts\nimport { uniqBy } from \"lodash-es\";\nvar unique = uniqBy;\n\n// src/team/transforms/addServer.ts\nvar addServer = (newServer) => (state) => {\n const newState = {\n ...state,\n // Add server to the team's list of servers\n servers: unique([...state.servers, newServer]),\n // Remove server's url from list of removed servers (e.g. if server was removed and is now being re-added)\n removedServers: state.removedServers.filter((m) => m.host !== newServer.host)\n };\n return newState;\n};\n\n// src/team/transforms/changeMemberKeys.ts\nvar changeMemberKeys = (keys2) => (state) => ({\n ...state,\n members: state.members.map(\n (member2) => member2.userId === keys2.name ? {\n ...member2,\n keys: keys2\n // 🡐 replace keys with new ones\n } : member2\n )\n});\n\n// src/team/transforms/changeServerKeys.ts\nvar changeServerKeys = (keys2) => (state) => ({\n ...state,\n servers: state.servers.map(\n (server2) => server2.host === keys2.name ? {\n ...server2,\n keys: keys2\n // 🡐 replace keys with new ones\n } : server2\n )\n});\n\n// src/team/transforms/collectLockboxes.ts\nvar collectLockboxes = (newLockboxes) => (state) => {\n const { lockboxes } = state;\n return newLockboxes ? { ...state, lockboxes: lockboxes.concat(newLockboxes) } : state;\n};\n\n// src/team/transforms/postInvitation.ts\nvar postInvitation = (invitation) => (state) => {\n const invitationState = {\n ...invitation,\n uses: 0,\n revoked: false\n };\n return {\n ...state,\n invitations: {\n ...state.invitations,\n [invitation.id]: invitationState\n }\n };\n};\n\n// src/team/selectors/device.ts\nimport { assert as assert3 } from \"@localfirst/shared\";\n\n// src/team/selectors/server.ts\nvar server = (state, host, options = { includeRemoved: false }) => {\n const serversToSearch = [\n ...state.servers,\n ...options.includeRemoved ? state.removedServers : []\n ];\n const server2 = serversToSearch.find((s) => s.host === host);\n if (server2 === void 0) {\n throw new Error(`A server with host '${host}' was not found`);\n }\n return server2;\n};\n\n// src/team/selectors/hasServer.ts\nvar hasServer = (state, host) => state.servers.find((s) => s.host === host) !== void 0;\n\n// src/server/castServer.ts\nvar toMember = (server2) => ({\n userId: server2.host,\n userName: server2.host,\n keys: server2.keys,\n roles: []\n});\nvar toUser = (server2) => ({\n userId: server2.host,\n userName: server2.host,\n keys: server2.keys\n});\nvar toDevice = (server2) => ({\n userId: server2.host,\n deviceName: server2.host,\n deviceId: server2.host,\n keys: server2.keys\n});\nvar castServer = { toMember, toUser, toDevice };\n\n// src/team/selectors/device.ts\nvar hasDevice = (state, deviceId, options = { includeRemoved: false }) => {\n return getDevice(state, deviceId, options) !== void 0;\n};\nvar device = (state, deviceId, options = { includeRemoved: false }) => {\n const device2 = getDevice(state, deviceId, options);\n assert3(device2, `Device ${deviceId} not found`);\n return device2;\n};\nvar getDevice = (state, deviceId, options = { includeRemoved: false }) => {\n if (hasServer(state, deviceId)) {\n return castServer.toDevice(server(state, deviceId));\n }\n const members = state.members.concat(options.includeRemoved ? state.removedMembers : []);\n const allDevices = members.flatMap((m) => m.devices ?? []);\n return allDevices.find((d) => d.deviceId === deviceId) ?? (options.includeRemoved ? state.removedDevices.find((d) => d.deviceId === deviceId) : void 0);\n};\n\n// src/team/selectors/deviceWasRemoved.ts\nvar deviceWasRemoved = (state, deviceId) => {\n if (!hasDevice(state, deviceId, { includeRemoved: true }))\n return false;\n return state.removedDevices.some((d) => d.keys.name === deviceId);\n};\n\n// src/team/selectors/hasMember.ts\nvar hasMember = (state, userId) => state.members.find((m) => m.userId === userId) !== void 0;\n\n// src/team/selectors/hasRole.ts\nvar hasRole = (state, roleName) => state.roles.find((r) => r.roleName === roleName) !== void 0;\n\n// src/team/selectors/invitation.ts\nimport { assert as assert4 } from \"@localfirst/shared\";\nfunction hasInvitation(state, id) {\n return id in state.invitations;\n}\nfunction getInvitation(state, id) {\n assert4(hasInvitation(state, id), `No invitation with id '${id}' found.`);\n const invitation = state.invitations[id];\n return invitation;\n}\n\n// src/lockbox/create.ts\nimport { EPHEMERAL_SCOPE as EPHEMERAL_SCOPE3, redactKeys } from \"@localfirst/crdx\";\nimport { asymmetric } from \"@localfirst/crypto\";\n\n// src/lockbox/types.ts\nvar isKeyManifest = (keys2) => keys2.hasOwnProperty(\"publicKey\");\n\n// src/lockbox/create.ts\nvar create = (contents, recipientKeys) => {\n const redactedRecipientKeys = isKeyManifest(recipientKeys) ? recipientKeys : redactKeys(recipientKeys);\n const redactedContents = redactKeys(contents);\n const encryptionKeys = asymmetric.keyPair();\n const recipientPublicKey = isKeyManifest(redactedRecipientKeys) ? redactedRecipientKeys.publicKey : redactedRecipientKeys.encryption;\n const encryptedPayload = asymmetric.encryptBytes({\n secret: contents,\n recipientPublicKey,\n senderSecretKey: encryptionKeys.secretKey\n });\n const lockbox = {\n encryptionKey: {\n ...EPHEMERAL_SCOPE3,\n publicKey: encryptionKeys.publicKey\n },\n recipient: {\n ...redactedRecipientKeys,\n publicKey: recipientPublicKey\n },\n contents: {\n ...redactedContents,\n publicKey: contents.encryption.publicKey\n },\n encryptedPayload\n };\n return lockbox;\n};\n\n// src/lockbox/open.ts\nimport { memoize as memoize3 } from \"@localfirst/shared\";\nimport { asymmetric as asymmetric2 } from \"@localfirst/crypto\";\nvar open = memoize3(\n (lockbox, decryptionKeys) => {\n const { encryptionKey, encryptedPayload } = lockbox;\n const decrypted = asymmetric2.decryptBytes({\n cipher: encryptedPayload,\n senderPublicKey: encryptionKey.publicKey,\n recipientSecretKey: decryptionKeys.encryption.secretKey\n });\n const keys2 = decrypted;\n return keys2;\n }\n);\n\n// src/lockbox/rotate.ts\nvar rotate = ({\n oldLockbox,\n newContents,\n updatedRecipientKeys\n}) => {\n assertScopesMatch(newContents, oldLockbox.contents);\n if (updatedRecipientKeys) {\n assertScopesMatch(oldLockbox.recipient, updatedRecipientKeys);\n }\n newContents.generation = oldLockbox.contents.generation + 1;\n const recipientManifest = updatedRecipientKeys ?? oldLockbox.recipient;\n return create(newContents, recipientManifest);\n};\n\n// src/team/selectors/visibleKeys.ts\nvar visibleKeys = (state, keyset) => {\n const { lockboxes } = state;\n const { publicKey } = keyset.encryption;\n const lockboxesICanOpen = lockboxes.filter(({ recipient }) => recipient.publicKey === publicKey);\n const keysets = lockboxesICanOpen.map((lockbox) => open(lockbox, keyset));\n const keys2 = keysets.flatMap((keyset2) => visibleKeys(state, keyset2));\n return [...keysets, ...keys2];\n};\n\n// src/team/selectors/keyMap.ts\nvar keyMap = (state, deviceKeys) => {\n const allVisibleKeys = visibleKeys(state, deviceKeys);\n return allVisibleKeys.reduce(organizeKeysIntoMap, {});\n};\nvar organizeKeysIntoMap = (result, keys2) => {\n const { type, name, generation } = keys2;\n const keysetsForScope = result[type] ?? {};\n const keysetHistory = keysetsForScope[name] ?? [];\n keysetHistory[generation] = keys2;\n return {\n ...result,\n [type]: {\n ...keysetsForScope,\n [name]: keysetHistory\n }\n };\n};\n\n// src/team/selectors/keys.ts\nimport { assert as assert5 } from \"@localfirst/shared\";\nvar keys = (state, deviceKeys, scope) => {\n const { type, name } = scope;\n const keysFromLockboxes = keyMap(state, deviceKeys);\n const keys2 = keysFromLockboxes[type] ? keysFromLockboxes[type][name] : void 0;\n assert5(\n keys2,\n `Couldn't find keys: ${JSON.stringify(scope)}\n Device: ${deviceKeys.name}\n Available lockboxes: \n- ${state.lockboxes.map(lockboxSummary).join(\"\\n- \")} \n Keymap: ${JSON.stringify(keysFromLockboxes, null, 2)}`\n );\n const generation = \"generation\" in scope && scope.generation !== void 0 ? (\n // Return specific generation if requested\n scope.generation\n ) : (\n // Use latest generation by default\n keys2.length - 1\n );\n return keys2[generation];\n};\n\n// src/team/selectors/lockboxesInScope.ts\nvar lockboxesInScope = (state, scope) => {\n const lockboxes = state.lockboxes.filter(\n ({ contents }) => contents.type === scope.type && contents.name === scope.name\n );\n const latestGeneration = lockboxes.reduce(maxGeneration, 0);\n const latestLockboxes = lockboxes.filter(\n ({ contents }) => contents.generation === latestGeneration\n );\n return latestLockboxes;\n};\nvar maxGeneration = (max, lockbox) => {\n const { generation } = lockbox.contents;\n if (generation > max) {\n return generation;\n }\n return max;\n};\n\n// src/team/selectors/member.ts\nvar member = (state, userId, options = { includeRemoved: false }) => {\n const membersToSearch = [\n ...state.members,\n ...options.includeRemoved ? state.removedMembers : []\n ];\n const member2 = membersToSearch.find((m) => m.userId === userId);\n if (member2 === void 0) {\n throw new Error(`A member named '${userId}' was not found`);\n }\n return member2;\n};\n\n// src/team/selectors/memberByDeviceId.ts\nvar memberByDeviceId = (state, deviceId, options = { includeRemoved: false }) => {\n if (hasServer(state, deviceId))\n return castServer.toMember(server(state, deviceId));\n const { userId } = device(state, deviceId, options);\n return member(state, userId, options);\n};\n\n// src/team/selectors/memberHasRole.ts\nvar memberHasRole = (state, userId, role2) => {\n if (!hasMember(state, userId)) {\n return false;\n }\n const member2 = member(state, userId);\n const { roles = [] } = member2;\n return roles.includes(role2);\n};\nvar memberIsAdmin = (state, userId) => memberHasRole(state, userId, ADMIN);\n\n// src/team/selectors/memberWasRemoved.ts\nvar memberWasRemoved = (state, userId) => {\n return state.removedMembers.some((m) => m.userId === userId);\n};\n\n// src/team/selectors/membersInRole.ts\nvar membersInRole = (state, roleName) => state.members.filter((member2) => member2.roles?.includes(roleName));\nvar admins = (state) => membersInRole(state, ADMIN);\n\n// src/team/selectors/messages.ts\nvar messages = (state) => state.messages;\n\n// src/team/selectors/role.ts\nvar role = (state, roleName) => {\n const role2 = state.roles.find((r) => r.roleName === roleName);\n if (!role2)\n throw new Error(`A role called '${roleName}' was not found`);\n return role2;\n};\n\n// src/team/selectors/serverWasRemoved.ts\nvar serverWasRemoved = (state, host) => state.removedServers.some((s) => s.host === host);\n\n// src/team/selectors/teamKeyring.ts\nimport { createKeyring } from \"@localfirst/crdx\";\nvar { TEAM } = KeyType;\nvar teamKeyring = (state, keys2) => {\n const allTeamKeys = keyMap(state, keys2)[TEAM][TEAM];\n return createKeyring(allTeamKeys);\n};\n\n// src/team/selectors/visibleScopes.ts\nvar visibleScopes = (state, { type, name }) => {\n const scopes = state.lockboxes.filter(({ recipient }) => recipient.type === type && recipient.name === name).map(({ contents: { type: type2, name: name2 } }) => ({ type: type2, name: name2 }));\n const derivedScopes = scopes.flatMap((scope) => visibleScopes(state, scope));\n const allScopes = [...scopes, ...derivedScopes];\n return unique(allScopes, (s) => s.name + s.type);\n};\n\n// src/team/transforms/removeDevice.ts\nvar removeDevice = (deviceId) => (state) => {\n const removedDevice = device(state, deviceId);\n const { userId } = memberByDeviceId(state, deviceId);\n const removeDeviceFromMember = (member2) => member2.userId === userId ? {\n ...member2,\n devices: member2.devices?.filter((d) => d.deviceName !== removedDevice.deviceName)\n } : member2;\n const members = state.members.map(removeDeviceFromMember);\n const removedDevices = [...state.removedDevices, removedDevice];\n return {\n ...state,\n members,\n removedDevices\n };\n};\n\n// src/team/transforms/removeMember.ts\nvar removeMember = (userId) => (state) => {\n const remainingMembers = state.members.filter((m) => m.userId !== userId);\n const removedMember = state.members.find((m) => m.userId === userId);\n const removedMembers = [...state.removedMembers];\n if (removedMember)\n removedMembers.push(removedMember);\n return {\n ...state,\n members: remainingMembers,\n removedMembers\n };\n};\n\n// src/team/transforms/removeMemberRole.ts\nvar removeMemberRole = (userId, roleName) => (state) => ({\n ...state,\n // Remove this role from this member's list of roles\n members: state.members.map((member2) => ({\n ...member2,\n roles: member2.userId === userId ? member2.roles.filter((r) => r !== roleName) : member2.roles\n })),\n // Remove any lockboxes this member has for this role\n lockboxes: state.lockboxes.filter(\n (lockbox) => !(lockbox.recipient.name === userId && lockbox.contents.type === KeyType.ROLE && lockbox.contents.name === roleName)\n )\n});\n\n// src/team/transforms/removeRole.ts\nvar removeRole = (roleName) => (state) => ({\n ...state,\n // Remove this role\n roles: state.roles.filter((role2) => role2.roleName !== roleName),\n // Remove any lockboxes for this role\n lockboxes: state.lockboxes.filter(\n (lockbox) => !(lockbox.contents.type === KeyType.ROLE && lockbox.contents.name === roleName)\n )\n});\n\n// src/team/transforms/removeServer.ts\nvar removeServer = (host) => (state) => {\n const remainingServers = state.servers.filter((m) => m.host !== host);\n const removedServer = state.servers.find((m) => m.host === host);\n const removedServers = [...state.removedServers];\n if (removedServer) {\n removedServers.push(removedServer);\n }\n return {\n ...state,\n servers: remainingServers,\n removedServers\n };\n};\n\n// src/team/transforms/revokeInvitation.ts\nvar revokeInvitation = (id) => (state) => {\n const invitations = { ...state.invitations };\n const revokedInvitation = { ...invitations[id], revoked: true };\n return {\n ...state,\n invitations: {\n ...invitations,\n [id]: revokedInvitation\n }\n };\n};\n\n// src/team/transforms/rotateKeys.ts\nvar rotateKeys = (userId) => (state) => {\n const pendingKeyRotations = state.pendingKeyRotations.filter((u) => u !== userId);\n return {\n ...state,\n pendingKeyRotations\n };\n};\n\n// src/team/transforms/setTeamName.ts\nvar setTeamName = (teamName) => (state) => ({\n ...state,\n teamName\n});\n\n// src/team/transforms/useInvitation.ts\nvar useInvitation = (id) => (state) => {\n const invitations = { ...state.invitations };\n const invitationState = invitations[id];\n const uses = invitationState.uses + 1;\n return {\n ...state,\n invitations: {\n ...invitations,\n [id]: {\n ...invitationState,\n uses\n }\n }\n };\n};\n\n// src/team/validate.ts\nimport { debug, truncateHashes } from \"@localfirst/shared\";\nimport { ROOT } from \"@localfirst/crdx\";\n\n// src/invitation/index.ts\nvar invitation_exports = {};\n__export(invitation_exports, {\n IKEY_LENGTH: () => IKEY_LENGTH,\n InvitationValidationError: () => InvitationValidationError,\n create: () => create2,\n deriveId: () => deriveId,\n fail: () => fail,\n generateProof: () => generateProof,\n generateStarterKeys: () => generateStarterKeys,\n invitationCanBeUsed: () => invitationCanBeUsed,\n randomSeed: () => randomSeed,\n validate: () => validate\n});\n\n// src/invitation/create.ts\nvar IKEY_LENGTH = 16;\nvar create2 = ({\n seed,\n maxUses = 1,\n // By default an invitation can only be used once\n expiration = 0,\n // By default an invitation never expires\n userId\n}) => {\n seed = normalize(seed);\n const id = deriveId(seed);\n const starterKeys = generateStarterKeys(seed);\n const { publicKey } = starterKeys.signature;\n return { id, publicKey, expiration, maxUses, userId };\n};\n\n// src/invitation/randomSeed.ts\nimport { randomKey } from \"@localfirst/crypto\";\nvar randomSeed = (length = IKEY_LENGTH) => randomKey(length);\n\n// src/invitation/validate.ts\nimport { memoize as memoize4 } from \"@localfirst/shared\";\nimport { signatures as signatures2 } from \"@localfirst/crypto\";\nvar invitationCanBeUsed = (invitation, timeOfUse) => {\n const { revoked, maxUses, uses, expiration } = invitation;\n if (revoked) {\n return fail(\"The invitation has been revoked\");\n }\n if (maxUses > 0 && uses >= maxUses) {\n return fail(\"The invitation cannot be used again\");\n }\n if (expiration > 0 && expiration < timeOfUse) {\n return fail(\"The invitation has expired\");\n }\n return VALID;\n};\nvar validate = memoize4(\n (proof, invitation) => {\n const { id, signature } = proof;\n if (id !== invitation.id) {\n return fail(\"IDs don't match\", { proof, invitation });\n }\n const { publicKey } = invitation;\n const signatureIsValid = signatures2.verify({\n payload: { id },\n signature,\n publicKey\n });\n if (!signatureIsValid) {\n return fail(\"Signature provided is not valid\", { proof, invitation });\n }\n return VALID;\n }\n);\nvar fail = (message, details) => ({\n isValid: false,\n error: new InvitationValidationError(message, details)\n});\nvar InvitationValidationError = class extends Error {\n constructor(message, details) {\n super();\n this.name = \"Invitation validation failed\";\n this.message = message;\n this.details = details;\n }\n index;\n details;\n};\n\n// src/team/validate.ts\nvar log = debug.extend(\"auth:validate\");\nvar validate2 = (...args) => {\n for (const key in validators) {\n const validator = validators[key];\n const validation = validator(...args);\n if (!validation.isValid) {\n return validation;\n }\n }\n return VALID;\n};\nvar validators = {\n rootDeviceBelongsToRootUser(...args) {\n const [_previousState, link] = args;\n const { type, payload } = link.body;\n if (type !== \"ROOT\")\n return VALID;\n const { rootDevice, rootMember } = payload;\n if (rootDevice.userId !== rootMember.userId) {\n const msg = \"The founding device must belong to the founding member (userIds must match).\";\n return fail2(msg, ...args);\n }\n return VALID;\n },\n /** The user who made these changes was a member with appropriate rights at the time */\n mustBeAdmin(...args) {\n const [previousState, link] = args;\n const action = link.body;\n const { type, userId } = action;\n if (type === ROOT)\n return VALID;\n if (isAdminOnlyAction(action)) {\n const isntAdmin = !memberIsAdmin(previousState, userId);\n if (isntAdmin) {\n return fail2(`Member '${userId}' is not an admin`, ...args);\n }\n }\n return VALID;\n },\n /** Unless I'm an admin, I can't remove anyone's devices but my own */\n canOnlyRemoveYourOwnDevices(...args) {\n const [previousState, link] = args;\n const author = link.body.userId;\n const authorIsAdmin = memberIsAdmin(previousState, author);\n if (authorIsAdmin)\n return VALID;\n if (link.body.type === \"REMOVE_DEVICE\") {\n const target = link.body.payload.deviceId;\n const device2 = device(previousState, target);\n const deviceOwner = device2.userId;\n if (author !== deviceOwner) {\n return fail2(\"Can't remove another user's device.\", ...args);\n }\n }\n return VALID;\n },\n /** Unless I'm an admin, I can't change anyone's keys but my own */\n canOnlyChangeYourOwnKeys(...args) {\n const [previousState, link] = args;\n const author = link.body.userId;\n const authorIsAdmin = memberIsAdmin(previousState, author);\n if (!authorIsAdmin) {\n if (link.body.type === \"CHANGE_MEMBER_KEYS\") {\n const target = link.body.payload.keys.name;\n if (author !== target) {\n return fail2(\"Can't change another user's keys.\", ...args);\n }\n } else if (link.body.type === \"CHANGE_SERVER_KEYS\") {\n const target = link.body.payload.keys.name;\n if (author !== target) {\n return fail2(\"Can't change another server's keys.\", ...args);\n }\n }\n }\n return VALID;\n },\n /** Check for ADMIT with invitations that are revoked OR have been used more than maxUses OR are expired */\n cantAdmitWithInvalidInvitation(...args) {\n const [previousState, link] = args;\n if (link.body.type === \"ADMIT_MEMBER\" || link.body.type === \"ADMIT_DEVICE\") {\n const { id } = link.body.payload;\n const invitation = getInvitation(previousState, id);\n return invitationCanBeUsed(invitation, link.body.timestamp);\n }\n return VALID;\n }\n};\nvar fail2 = (message, previousState, link) => {\n message = truncateHashes(`${actionFingerprint(link)} ${message}`);\n log(message);\n return {\n isValid: false,\n error: new ValidationError(message, { prevState: previousState, link })\n };\n};\n\n// src/team/reducer.ts\nvar reducer = (state, link) => {\n if (link.isInvalid) {\n return invalidLinkReducer(state, link);\n }\n state = clone(state);\n const validation = validate2(state, link);\n if (!validation.isValid) {\n throw validation.error;\n }\n const action = link.body;\n const applyTransforms = composeTransforms([\n setHead(link),\n collectLockboxes(action.payload.lockboxes),\n // Any payload can include lockboxes\n ...getTransforms(action)\n // Get the specific transforms indicated by this action\n ]);\n const newState = applyTransforms(state);\n return newState;\n};\nvar getTransforms = (action) => {\n switch (action.type) {\n case ROOT2: {\n const { name, rootMember, rootDevice } = action.payload;\n return [\n setTeamName(name),\n addRole({ roleName: ADMIN }),\n // Create the admin role\n addMember(rootMember),\n // Add the founding member\n addDevice(rootDevice),\n // Add the founding member's device\n ...addMemberRoles(rootMember.userId, [ADMIN])\n // Make the founding member an admin\n ];\n }\n case \"ADD_MEMBER\": {\n const { member: member2, roles } = action.payload;\n return [\n addMember(member2),\n // Add this member to the team\n ...addMemberRoles(member2.userId, roles)\n // Add each of these roles to the member's list of roles\n ];\n }\n case \"ADD_ROLE\": {\n const newRole = action.payload;\n return [\n addRole(newRole)\n // Add this role to the team\n ];\n }\n case \"ADD_MEMBER_ROLE\": {\n const { userId, roleName } = action.payload;\n return [\n ...addMemberRoles(userId, [roleName])\n // Add this role to the member's list of roles\n ];\n }\n case \"REMOVE_MEMBER\": {\n const { userId } = action.payload;\n return [\n removeMember(userId)\n // Remove this member from the team\n ];\n }\n case \"ADD_DEVICE\": {\n const { device: device2 } = action.payload;\n return [\n addDevice(device2)\n // Add this device to the member's list of devices\n ];\n }\n case \"REMOVE_DEVICE\": {\n const { deviceId } = action.payload;\n return [\n removeDevice(deviceId)\n // Remove this device from the member's list of devices\n ];\n }\n case \"REMOVE_ROLE\": {\n const { roleName } = action.payload;\n return [\n removeRole(roleName)\n // Remove this role from the team\n ];\n }\n case \"REMOVE_MEMBER_ROLE\": {\n const { userId, roleName } = action.payload;\n return [\n removeMemberRole(userId, roleName)\n // Remove this role from the member's list of roles\n ];\n }\n case \"INVITE_MEMBER\": {\n const { invitation } = action.payload;\n return [\n postInvitation(invitation)\n // Add the invitation to the list of open invitations.\n ];\n }\n case \"INVITE_DEVICE\": {\n const { invitation } = action.payload;\n return [\n postInvitation(invitation)\n // Add the invitation to the list of open invitations.\n ];\n }\n case \"REVOKE_INVITATION\": {\n const { id } = action.payload;\n return [\n revokeInvitation(id)\n // Mark the invitation revoked so it can't be used\n ];\n }\n case \"ADMIT_MEMBER\": {\n const { id, memberKeys, userName } = action.payload;\n const userId = memberKeys.name;\n const member2 = {\n userId,\n userName,\n keys: memberKeys,\n roles: []\n };\n return [\n useInvitation(id),\n // Mark the invitation as used\n addMember(member2)\n // Add this member to the team\n ];\n }\n case \"ADMIT_DEVICE\": {\n const { id, device: device2 } = action.payload;\n return [\n useInvitation(id),\n // Mark the invitation as used\n addDevice(device2)\n // Add this device\n ];\n }\n case \"CHANGE_MEMBER_KEYS\": {\n const { keys: keys2 } = action.payload;\n return [\n changeMemberKeys(keys2)\n // Replace this member's public keys with the ones provided\n ];\n }\n case \"ROTATE_KEYS\": {\n const { userId } = action.payload;\n return [\n rotateKeys(userId)\n // Mark this member's keys as having been rotated (the rotated keys themselves are in the lockboxes)\n ];\n }\n case \"ADD_SERVER\": {\n const { server: server2 } = action.payload;\n return [\n addServer(server2)\n // Add the specified server to the team\n ];\n }\n case \"REMOVE_SERVER\": {\n const { host } = action.payload;\n return [\n removeServer(host)\n // Remove the specified server from the team\n ];\n }\n case \"CHANGE_SERVER_KEYS\": {\n const { keys: keys2 } = action.payload;\n return [\n changeServerKeys(keys2)\n // Replace this server's public keys with the ones provided\n ];\n }\n case \"MESSAGE\": {\n const { message } = action.payload;\n return [\n addMessage(message)\n // Add the message to the team's message log\n ];\n }\n case \"SET_TEAM_NAME\": {\n const { teamName } = action.payload;\n return [\n setTeamName(teamName)\n // Set the team's name\n ];\n }\n default: {\n throw unrecognizedLinkType(action);\n }\n }\n};\nfunction unrecognizedLinkType(action) {\n const { type } = action;\n return new Error(`Unrecognized link type: ${type}`);\n}\n\n// src/team/teamMachine.ts\nvar teamMachine = makeMachine({ initialState, reducer, resolver: membershipResolver });\n\n// src/team/getTeamState.ts\nvar getTeamState = (serializedGraph, keyring) => {\n const graph = deserializeTeamGraph(serializedGraph, keyring);\n return teamMachine(graph);\n};\n\n// src/connection/getDeviceUserFromGraph.ts\nvar { USER } = KeyType;\nvar getDeviceUserFromGraph = ({\n serializedGraph,\n teamKeyring: teamKeyring2,\n invitationSeed\n}) => {\n const starterKeys = generateStarterKeys(invitationSeed);\n const invitationId = generateProof(invitationSeed).id;\n const state = getTeamState(serializedGraph, teamKeyring2);\n const { userId } = getInvitation(state, invitationId);\n assert6(userId);\n const { userName } = member(state, userId);\n assert6(userName);\n const userKeys = keys(state, starterKeys, { type: USER, name: userId });\n return {\n userName,\n userId,\n keys: userKeys\n };\n};\n\n// src/connection/identity.ts\nimport { signatures as signatures3, randomKey as randomKey2 } from \"@localfirst/crypto\";\nvar challenge = (identityClaim) => ({\n ...identityClaim,\n nonce: randomKey2(),\n timestamp: Date.now()\n});\nvar prove = (challenge2, keys2) => signatures3.sign(challenge2, keys2.signature.secretKey);\nvar verify = (challenge2, signature, publicKeys) => {\n const details = { challenge: challenge2, signature };\n const signatureIsValid = signatures3.verify({\n payload: challenge2,\n signature,\n publicKey: publicKeys.signature\n });\n if (!signatureIsValid) {\n return fail3(\"Signature is not valid\", details);\n }\n return VALID;\n};\nvar fail3 = (message, details) => ({\n isValid: false,\n error: new IdentityChallengeFailure(message, details)\n});\nvar IdentityChallengeFailure = class extends Error {\n constructor(message, details) {\n super();\n this.name = \"Identity challenge failed\";\n this.message = message + \"\\n\" + JSON.stringify(details, null, 2).replaceAll('\"', \"\");\n this.details = details;\n }\n details;\n};\n\n// src/device/index.ts\nvar device_exports = {};\n__export(device_exports, {\n createDevice: () => createDevice,\n redactDevice: () => redactDevice\n});\n\n// src/device/createDevice.ts\nimport { createKeyset as createKeyset2 } from \"@localfirst/crdx\";\nimport { createId } from \"@paralleldrive/cuid2\";\nimport { randomKey as randomKey3 } from \"@localfirst/crypto\";\nvar createDevice = (userId, deviceName, seed = randomKey3()) => {\n const deviceId = createId();\n const keys2 = createKeyset2({ type: KeyType.DEVICE, name: deviceId }, seed);\n return { userId, deviceId, deviceName, keys: keys2 };\n};\n\n// src/device/redact.ts\nimport { redactKeys as redactKeys2 } from \"@localfirst/crdx\";\nvar redactDevice = (device2) => ({\n userId: device2.userId,\n deviceId: device2.deviceId,\n deviceName: device2.deviceName,\n keys: redactKeys2(device2.keys)\n});\n\n// src/connection/Connection.ts\nimport { pack as pack2, unpack as unpack2 } from \"msgpackr\";\n\n// src/team/Team.ts\nimport { EventEmitter } from \"@herbcaudill/eventemitter42\";\nimport {\n createKeyset as createKeyset3,\n createStore,\n getLatestGeneration,\n isKeyset,\n redactKeys as redactKeys3\n} from \"@localfirst/crdx\";\nimport { randomKey as randomKey4, signatures as signatures4, symmetric } from \"@localfirst/crypto\";\nimport { assert as assert7, debug as debug2 } from \"@localfirst/shared\";\n\n// src/team/redactUser.ts\nimport { redactUser as _redactUser } from \"@localfirst/crdx\";\nvar redactUser = (user) => ({\n ..._redactUser(user),\n roles: []\n});\n\n// src/team/types.ts\nvar isNewTeam = (options) => \"teamName\" in options;\n\n// src/team/Team.ts\nvar { DEVICE, USER: USER2 } = KeyType;\nvar Team = class extends EventEmitter {\n state = initialState;\n store;\n context;\n log;\n seed;\n /**\n * We can make a team instance either by creating a brand-new team, or restoring one from a stored graph.\n */\n constructor(options) {\n super();\n this.seed = options.seed ?? randomKey4();\n if (\"user\" in options.context) {\n this.context = options.context;\n } else {\n const { server: server2 } = options.context;\n this.context = {\n ...options.context,\n device: castServer.toDevice(server2),\n user: castServer.toUser(server2)\n };\n }\n const { device: device2, user } = this.context;\n this.log = debug2.extend(`auth:team:${this.userName}`);\n if (isNewTeam(options)) {\n assert7(!this.isServer, `Servers can't create teams`);\n const lockboxTeamKeysForMember = create(options.teamKeys, user.keys);\n const adminKeys = createKeyset3(ADMIN_SCOPE, this.seed);\n const lockboxAdminKeysForMember = create(adminKeys, user.keys);\n const lockboxUserKeysForDevice = create(user.keys, this.context.device.keys);\n const rootPayload = {\n name: options.teamName,\n rootMember: redactUser(user),\n rootDevice: redactDevice(device2),\n lockboxes: [lockboxTeamKeysForMember, lockboxAdminKeysForMember, lockboxUserKeysForDevice]\n };\n this.store = createStore({\n user,\n reducer,\n resolver: membershipResolver,\n initialState,\n rootPayload,\n keys: options.teamKeys\n });\n } else {\n this.store = createStore({\n user,\n reducer,\n resolver: membershipResolver,\n initialState,\n graph: maybeDeserialize(options.source, options.teamKeyring),\n keys: options.teamKeyring\n });\n }\n this.state = this.store.getState();\n this.on(\"updated\", () => {\n this.checkForPendingKeyRotations();\n });\n }\n /** ************** PUBLIC API */\n get graph() {\n return this.store.getGraph();\n }\n /** We use the hash of the graph's root as a unique ID for the team. */\n get id() {\n return this.graph.root;\n }\n /** Returns this team's user-facing name. */\n get teamName() {\n return this.state.teamName;\n }\n setTeamName(teamName) {\n this.dispatch({ type: \"SET_TEAM_NAME\", payload: { teamName } });\n }\n /** ************** CONTEXT */\n get userName() {\n return this.context.user.userId;\n }\n get userId() {\n return this.context.user.userId;\n }\n get isServer() {\n return \"server\" in this.context;\n }\n /** ************** TEAM STATE\n *\n * All the logic for *reading* team state is in selectors (see `/team/selectors`).\n *\n * Most of the logic for *modifying* team state is in transforms (see `/team/transforms`), which\n * are executed by the reducer. To mutate team state, we dispatch changes to the graph, and then\n * run the graph through the reducer to recalculate team state.\n *\n * Any crypto operations involving the current user's secrets (for example, opening or creating\n * lockboxes, or signing links) are done here, not in the selectors or in the reducer. Only the\n * public-facing outputs (for example, the resulting lockboxesInScope, or the signed links) are\n * posted on the graph.\n */\n save = () => serializeTeamGraph(this.graph);\n /**\n * Merges another graph (e.g. from a peer) with ours.\n * @returns This `Team` instance.\n */\n merge = (theirGraph) => {\n this.store.merge(theirGraph);\n this.state = this.store.getState();\n this.emit(\"updated\", { head: this.graph.head });\n return this;\n };\n /** Add a link to the graph, then recompute team state from the new graph */\n dispatch(action, teamKeys = this.teamKeys()) {\n this.store.dispatch(action, teamKeys);\n this.state = this.store.getState();\n this.emit(\"updated\", { head: this.graph.head });\n }\n /** ************** MEMBERS */\n /** Returns true if the team has a member with the given userId */\n has = (userId) => hasMember(this.state, userId);\n // Overload: one member\n //\n members(userId = ALL, options = { includeRemoved: true }) {\n return userId === ALL ? this.state.members : member(this.state, userId, options);\n }\n /**\n * Adds a member to the team, along with an (optional) device. Since this method assumes that you\n * know the member's secret keys, it only makes sense for unit tests. In real-world scenarios,\n * you'll need to use the `team.invite` workflow to add members without relying on some kind of\n * public key infrastructure.\n *\n * This can be used to add a device for an existing member - just pass the existing user as the\n * first argument.\n */\n addForTesting = (user, roles = [], device2) => {\n const member2 = { ...redactUser(user), roles };\n if (!this.has(member2.userId)) {\n const lockboxes = this.createMemberLockboxes(member2);\n this.dispatch({\n type: \"ADD_MEMBER\",\n payload: { member: member2, roles, lockboxes }\n });\n }\n if (device2) {\n const lockboxUserKeysForDevice = create(user.keys, device2.keys);\n this.dispatch({\n type: \"ADD_DEVICE\",\n payload: { device: device2, lockboxes: [lockboxUserKeysForDevice] }\n });\n }\n };\n /** Remove a member from the team */\n remove = (userId) => {\n const lockboxes = this.rotateKeys({ type: USER2, name: userId });\n this.dispatch({\n type: \"REMOVE_MEMBER\",\n payload: {\n userId,\n lockboxes\n }\n });\n };\n /** Returns true if the member was once on the team but was removed */\n memberWasRemoved = (userId) => memberWasRemoved(this.state, userId);\n //\n roles(roleName = ALL) {\n return roleName === ALL ? this.state.roles : role(this.state, roleName);\n }\n /** Returns true if the member with the given userId has the given role */\n memberHasRole = (userId, roleName) => memberHasRole(this.state, userId, roleName);\n /** Returns true if the member with the given userId is a member of the 3 role */\n memberIsAdmin = (userId) => memberIsAdmin(this.state, userId);\n /** Returns true if the team has a role with the given name */\n hasRole = (roleName) => hasRole(this.state, roleName);\n /** Returns a list of members who have the given role */\n membersInRole = (roleName) => membersInRole(this.state, roleName);\n /** Returns a list of members who are in the admin role */\n admins = () => admins(this.state);\n /** Add a role to the team */\n addRole = (role2) => {\n if (typeof role2 === \"string\") {\n role2 = { roleName: role2 };\n }\n const roleKeys = createKeyset3({ type: KeyType.ROLE, name: role2.roleName }, this.seed);\n const lockboxRoleKeysForAdmins = create(roleKeys, this.adminKeys());\n this.dispatch({\n type: \"ADD_ROLE\",\n payload: { ...role2, lockboxes: [lockboxRoleKeysForAdmins] }\n });\n };\n /** Remove a role from the team */\n removeRole = (roleName) => {\n assert7(roleName !== ADMIN, \"Cannot remove admin role\");\n this.dispatch({\n type: \"REMOVE_ROLE\",\n payload: { roleName }\n });\n };\n /** Give a member a role */\n addMemberRole = (userId, roleName) => {\n const member2 = this.members(userId);\n const lockboxRoleKeysForMember = create(this.roleKeys(roleName), member2.keys);\n this.dispatch({\n type: \"ADD_MEMBER_ROLE\",\n payload: { userId, roleName, lockboxes: [lockboxRoleKeysForMember] }\n });\n };\n /** Remove a role from a member */\n removeMemberRole = (userId, roleName) => {\n if (roleName === ADMIN) {\n const adminCount = this.membersInRole(ADMIN).length;\n assert7(adminCount > 1, \"Can't remove the last admin\");\n }\n const lockboxes = this.rotateKeys({ type: KeyType.ROLE, name: roleName });\n this.dispatch({\n type: \"REMOVE_MEMBER_ROLE\",\n payload: { userId, roleName, lockboxes }\n });\n };\n /** ************** DEVICES */\n /** Returns true if the given member has a device by the given name */\n hasDevice = (deviceId, options) => hasDevice(this.state, deviceId, options);\n /** Find a member's device by name */\n device(deviceId, options) {\n return device(this.state, deviceId, options);\n }\n /** Remove a member's device */\n removeDevice = (deviceId) => {\n if (!this.hasDevice(deviceId))\n throw new Error(`Device ${deviceId} not found`);\n const lockboxes = this.rotateKeys({ type: DEVICE, name: deviceId });\n this.dispatch({\n type: \"REMOVE_DEVICE\",\n payload: {\n deviceId,\n lockboxes\n }\n });\n };\n /** Returns true if the device was once on the team but was removed */\n deviceWasRemoved = (deviceId) => {\n return deviceWasRemoved(this.state, deviceId);\n };\n /** Looks for a member that has this device. If none is found, return */\n memberByDeviceId = (deviceId, options) => {\n return memberByDeviceId(this.state, deviceId, options);\n };\n verifyIdentityProof = (challenge2, proof) => {\n assert7(challenge2.type === DEVICE);\n const deviceId = challenge2.name;\n const device2 = this.hasServer(deviceId) ? this.servers(deviceId) : this.device(deviceId, { includeRemoved: true });\n const validation = verify(challenge2, proof, device2.keys);\n return validation.isValid;\n };\n /** ************** INVITATIONS */\n /**\n * To invite a new member:\n *\n * Alice generates an invitation using a secret seed. The seed an be randomly generated, or\n * selected by Alice. Alice sends the invitation to Bob using a trusted channel.\n *\n * Meanwhile, Alice adds Bob to the graph as a new member, with appropriate roles (if\n * any) and any corresponding lockboxes.\n *\n * Bob can't authenticate directly as that member, since it has random temporary keys created by\n * Alice. Instead, Bob generates a proof of invitation, and when they try to connect to Alice or\n * Charlie they present that proof instead of authenticating.\n *\n * Once Alice or Charlie verifies Bob's proof, they send him the team graph. Bob uses that to\n * instantiate the team, then he updates the team with his real public keys and adds his current\n * device information.\n */\n inviteMember({\n seed = randomSeed(),\n expiration,\n maxUses\n } = {}) {\n seed = normalize(seed);\n const invitation = create2({ seed, expiration, maxUses });\n const { id } = invitation;\n this.dispatch({\n type: \"INVITE_MEMBER\",\n payload: { invitation }\n });\n return { id, seed };\n }\n /**\n * To invite an existing member's device:\n *\n * On his laptop, Bob generates an invitation using a secret seed. He gets that seed to his phone\n * using a QR code or by typing it in.\n *\n * On his phone, Bob connects to his laptop (or to Alice or Charlie). Bob's phone presents its\n * proof of invitation.\n *\n * Once an existing device (Bob's laptop or Alice or Charlie) verifies Bob's phone's proof, they\n * send it the team graph. Using the graph, the phone instantiates the team, then adds itself as\n * a device.\n */\n inviteDevice({\n seed = randomSeed(),\n expiration = Date.now() + 30 * 60 * 1e3\n } = {}) {\n assert7(!this.isServer, \"Servers can't invite a device\");\n seed = normalize(seed);\n const maxUses = 1;\n const invitation = create2({ seed, expiration, maxUses, userId: this.userId });\n const starterKeys = generateStarterKeys(seed);\n const lockboxUserKeysForDeviceStarterKeys = create(this.context.user.keys, starterKeys);\n const { id } = invitation;\n this.dispatch({\n type: \"INVITE_DEVICE\",\n payload: {\n invitation,\n lockboxes: [lockboxUserKeysForDeviceStarterKeys]\n }\n });\n return { id, seed };\n }\n /** Revoke an invitation. */\n revokeInvitation = (id) => {\n this.dispatch({\n type: \"REVOKE_INVITATION\",\n payload: { id }\n });\n };\n /** Returns true if the invitation has ever existed in this team (even if it's been used or revoked) */\n hasInvitation(id) {\n return hasInvitation(this.state, id);\n }\n /** Gets the invitation corresponding to the given id. If it does not exist, throws an error. */\n getInvitation = (id) => getInvitation(this.state, id);\n /** Check whether (1) the invitation is still valid, and (2) the proof of invitation checks out. */\n validateInvitation = (proof) => {\n const { id } = proof;\n if (!this.hasInvitation(id))\n return fail(\"This invitation code doesn't match.\");\n const invitation = this.getInvitation(id);\n const canBeUsedResult = invitationCanBeUsed(invitation, Date.now());\n if (canBeUsedResult !== VALID)\n return canBeUsedResult;\n return validate(proof, invitation);\n };\n /** An existing team member calls this to admit a new member & their device to the team based on proof of invitation */\n admitMember = (proof, memberKeys, userName) => {\n const validation = this.validateInvitation(proof);\n if (!validation.isValid)\n throw validation.error;\n const { id } = proof;\n const lockboxTeamKeysForMember = create(this.teamKeys(), memberKeys);\n this.dispatch({\n type: \"ADMIT_MEMBER\",\n payload: {\n id,\n userName,\n memberKeys: redactKeys3(memberKeys),\n lockboxes: [lockboxTeamKeysForMember]\n }\n });\n };\n /** An existing team member calls this to admit a new device based on proof of invitation */\n admitDevice = (proof, firstUseDevice) => {\n const validation = this.validateInvitation(proof);\n if (!validation.isValid)\n throw validation.error;\n const { id } = proof;\n const invitation = this.getInvitation(id);\n const userId = invitation.userId;\n const device2 = { ...firstUseDevice, userId };\n this.dispatch({\n type: \"ADMIT_DEVICE\",\n payload: {\n id,\n device: device2\n }\n });\n };\n /** Once the new member has received the graph and can instantiate the team, they call this to add their device. */\n join = (teamKeyring2) => {\n assert7(!this.isServer, \"Can't join as member on server\");\n const { user, device: device2 } = this.context;\n const teamKeys = getLatestGeneration(teamKeyring2);\n const lockboxUserKeysForDevice = create(user.keys, device2.keys);\n this.dispatch(\n {\n type: \"ADD_DEVICE\",\n payload: {\n device: redactDevice(device2),\n lockboxes: [lockboxUserKeysForDevice]\n }\n },\n teamKeys\n );\n };\n /** ************** SERVERS */\n /**\n * A server is an always-on, always-connected device that is available to the team but does not\n * belong to any one member. For example, `automerge-repo` calls this a \"sync server\".\n *\n * A server has a host name that uniquely identifies it (e.g. `example.com`, `localhost:8080`, or\n * `188.26.221.135`).\n *\n * The expected usage is for the application to add a server or servers immediately after the team\n * is created. However, the application can add or remove servers at any time.\n *\n * Just before adding a server, the application should send it the latest graph and the team keys\n * (so it can decrypt the team graph). No invitation or authentication is necessary in this phase,\n * as a TLS connection to a trusted address is sufficient to ensure the security of that\n * connection. In response, the server should send back its public keys. This library is not\n * involved in that process.\n *\n * The application should then add the server to the team using `addServer`, passing in the\n * server's public keys. At that point the server will be able to authenticate with other devices\n * using the same protocol as for members.\n *\n * The only actions that a server can dispatch to the graph are `ADMIT_MEMBER` and `ADMIT_DEVICE`.\n * The server needs to be able to admit invited members and devices in order to support\n * star-shaped networks where every device connects to a server, rather than directly to each\n * other.)\n */\n addServer = (server2) => {\n const lockboxes = this.createMemberLockboxes(castServer.toMember(server2));\n this.dispatch({\n type: \"ADD_SERVER\",\n payload: { server: server2, lockboxes }\n });\n };\n /** Removes a server from the team. */\n removeServer = (host) => {\n this.dispatch({\n type: \"REMOVE_SERVER\",\n payload: { host }\n });\n };\n // Overload: one server\n //\n servers(host = ALL, options = { includeRemoved: true }) {\n return host === ALL ? this.state.servers : server(this.state, host, options);\n }\n /** Returns true if the server was once on the team but was removed */\n serverWasRemoved = (host) => serverWasRemoved(this.state, host);\n hasServer = (host) => hasServer(this.state, host);\n /** ************** MESSAGES */\n addMessage = (message) => {\n this.dispatch({\n type: \"MESSAGE\",\n payload: { message }\n });\n };\n messages = () => messages(this.state);\n /** ************** CRYPTO */\n /**\n * Symmetrically encrypt a payload for the given scope using keys available to the current user.\n *\n * > *Note*: Since this convenience function uses symmetric encryption, we can only use it to\n * encrypt for scopes the current user has keys for (e.g. the whole team, or roles they belong\n * to). If we need to encrypt asymmetrically, we use the functions in the crypto module directly.\n */\n encrypt = (payload, roleName) => {\n const scope = roleName ? { type: KeyType.ROLE, name: roleName } : TEAM_SCOPE;\n const { secretKey, generation } = this.keys(scope);\n return {\n contents: symmetric.encryptBytes(payload, secretKey),\n recipient: { ...scope, generation }\n };\n };\n /** Decrypt a payload using keys available to the current user. */\n decrypt = (message) => {\n const { secretKey } = this.keys(message.recipient);\n return symmetric.decryptBytes(message.contents, secretKey);\n };\n /** Sign a message using the current user's keys. */\n sign = (contents) => {\n assert7(this.context.user);\n const {\n keys: {\n type,\n name,\n generation,\n signature: { secretKey }\n }\n } = this.context.user;\n return {\n contents,\n signature: signatures4.sign(contents, secretKey),\n author: { type, name, generation }\n };\n };\n /** Verify a signed message against the author's public key */\n verify = (message) => signatures4.verify({\n payload: message.contents,\n signature: message.signature,\n publicKey: this.members(message.author.name).keys.signature\n });\n /** ************** KEYS\n *\n * These methods all return keysets *with secrets* that are available to the local user. To get\n * other members' public keys, look up the member - the `keys` property contains their public keys.\n */\n /**\n * Returns the secret keyset (if available to the current device) for the given type and name. To\n * get other members' public keys, look up the member - the `keys` property contains their public\n * keys.\n */\n keys = (scope) => keys(this.state, this.context.device.keys, scope);\n /** Returns the keys for the given role. */\n roleKeys = (roleName, generation) => this.keys({ type: KeyType.ROLE, name: roleName, generation });\n /** Returns the current team keys or a specific generation of team keys */\n teamKeys = (generation) => this.keys({ ...TEAM_SCOPE, generation });\n teamKeyring = () => teamKeyring(this.state, this.context.device.keys);\n /** Returns the admin keyset. */\n adminKeys = (generation) => this.roleKeys(ADMIN, generation);\n /**\n * Replaces the current user or device's secret keyset with the one provided.\n * (This can also be used by an admin to change another user's secret keyset.)\n */\n changeKeys = (newKeys) => {\n const { device: device2, user } = this.context;\n const { type } = newKeys;\n assert7(type !== DEVICE, \"Can't change device keys\");\n const isForUser = type === USER2;\n const isForServer = type === KeyType.SERVER;\n const oldKeys = user.keys;\n newKeys.generation = oldKeys.generation + 1;\n const lockboxes = this.rotateKeys(newKeys);\n const action = isForUser ? \"CHANGE_MEMBER_KEYS\" : \"CHANGE_SERVER_KEYS\";\n const keys2 = redactKeys3(newKeys);\n this.dispatch({ type: action, payload: { keys: keys2, lockboxes } });\n if (isForServer || isForUser)\n user.keys = newKeys;\n if (isForServer)\n device2.keys = newKeys;\n };\n checkForPendingKeyRotations() {\n if (!this.memberIsAdmin(this.userId)) {\n return;\n }\n for (const userId of this.state.pendingKeyRotations) {\n const lockboxes = this.rotateKeys({\n type: USER2,\n name: this.userId\n });\n this.dispatch({ type: \"ROTATE_KEYS\", payload: { userId, lockboxes } });\n }\n }\n createMemberLockboxes = (member2) => {\n const roleKeys = member2.roles.map(this.roleKeys);\n const createLockboxRoleKeysForMember = (keys2) => {\n return create(keys2, member2.keys);\n };\n return [...roleKeys, this.teamKeys()].map(createLockboxRoleKeysForMember);\n };\n /**\n * Given a compromised scope (e.g. a member or a role), find all scopes that are visible from that\n * scope, and generates new keys and lockboxes for each of those. Returns all of the new lockboxes\n * in a single array to be posted to the graph.\n *\n * You can pass it a scope, or a keyset (which includes the scope information). If you pass a\n * keyset, it will replace the existing keys with these.\n *\n * @param compromised If `compromised` is a keyset, that will become the new keyset for the\n * compromised scope. If it is just a scope, new keys will be randomly generated for that scope.\n */\n rotateKeys = (compromised) => {\n const newKeyset = isKeyset(compromised) ? compromised : createKeyset3(compromised);\n const visibleScopes2 = visibleScopes(this.state, compromised);\n const otherNewKeysets = visibleScopes2.map((scope) => createKeyset3(scope));\n const newKeysets = [newKeyset, ...otherNewKeysets];\n const newLockboxes = newKeysets.flatMap((newKeyset2) => {\n const oldLockboxes = lockboxesInScope(this.state, newKeyset2);\n return oldLockboxes.map((oldLockbox) => {\n const updatedKeyset = newKeysets.find((k) => scopesMatch(k, oldLockbox.recipient));\n return rotate({\n oldLockbox,\n newContents: newKeyset2,\n // If we did, address the new lockbox to those keys\n updatedRecipientKeys: updatedKeyset ? redactKeys3(updatedKeyset) : void 0\n });\n });\n });\n return newLockboxes;\n };\n};\n\n// src/team/createTeam.ts\nimport { createKeyset as createKeyset4 } from \"@localfirst/crdx\";\nfunction createTeam(teamName, context, seed) {\n const teamKeys = createKeyset4(TEAM_SCOPE, seed);\n return new Team({ teamName, context, teamKeys });\n}\n\n// src/team/decryptTeamGraph.ts\nimport {\n createKeyring as createKeyring2,\n decryptLink\n} from \"@localfirst/crdx\";\nvar decryptTeamGraph = ({\n encryptedGraph,\n teamKeys,\n deviceKeys\n}) => {\n const keyring = createKeyring2(teamKeys);\n const { encryptedLinks, childMap, root } = encryptedGraph;\n const links = encryptedGraph.links ?? {};\n const decrypt = (hash3, previousKeys, previousDecryptedLinks = {}, previousState = initialState) => {\n const encryptedLink = encryptedLinks[hash3];\n const decryptedLink = links[hash3] ?? // If it's already decrypted, don't bother decrypting it again\n decryptLink(encryptedLink, previousKeys);\n let decryptedLinks2 = {\n [hash3]: decryptedLink\n };\n const newState = reducer(previousState, decryptedLink);\n let newKeys;\n try {\n newKeys = keys(newState, deviceKeys, TEAM_SCOPE);\n keyring[newKeys.encryption.publicKey] = newKeys;\n } catch {\n newKeys = previousKeys;\n }\n const children = childMap[hash3];\n if (children) {\n for (const hash4 of children) {\n decryptedLinks2 = {\n ...decryptedLinks2,\n ...decrypt(hash4, newKeys, decryptedLinks2, newState)\n };\n }\n }\n return { ...previousDecryptedLinks, ...decryptedLinks2 };\n };\n const rootPublicKey = encryptedLinks[root].recipientPublicKey;\n const rootKeys = keyring[rootPublicKey];\n const decryptedLinks = decrypt(root, rootKeys);\n return {\n ...encryptedGraph,\n links: decryptedLinks\n };\n};\n\n// src/team/load.ts\nimport { createKeyring as createKeyring3 } from \"@localfirst/crdx\";\nvar load = (source, context, teamKeys) => {\n const teamKeyring2 = createKeyring3(teamKeys);\n return new Team({ source, context, teamKeyring: teamKeyring2 });\n};\n\n// src/util/testing/messageSummary.ts\nimport { truncateHashes as truncateHashes2 } from \"@localfirst/shared\";\nvar syncMessageSummary = (m) => {\n if (m === void 0) {\n return \"DONE\";\n }\n const { head, links, need } = m;\n const body = { head };\n if (links) {\n body.links = Object.keys(links).join(\", \");\n }\n if (need) {\n body.need = need.join(\", \");\n }\n return truncateHashes2(JSON.stringify(body));\n};\n\n// src/connection/Connection.ts\nimport { and, assertEvent, assign, createActor, setup } from \"xstate\";\n\n// src/connection/MessageQueue.ts\nimport { EventEmitter as EventEmitter2 } from \"@herbcaudill/eventemitter42\";\nimport { debug as debug3 } from \"@localfirst/shared\";\nvar log2 = debug3.extend(\"message-queue\");\nvar MessageQueue = class extends EventEmitter2 {\n #started = false;\n #inbound = {};\n #nextInbound = 0;\n #waiting = {};\n #timeout;\n #outbound = {};\n #nextOutbound = 0;\n #sendMessage;\n constructor({ sendMessage, timeout: timeout2 = 1e3 }) {\n super();\n this.#sendMessage = (message) => {\n this.#nextOutbound = message.index + 1;\n sendMessage(message);\n };\n this.#timeout = timeout2;\n }\n /**\n * Messages can be received before the service is started (e.g. while waiting to be ready to send\n * over the network). They will be emitted in order when start() is called.\n */\n start() {\n this.#started = true;\n this.#processInbound();\n this.#processOutbound();\n return this;\n }\n /**\n * Stop emitting messages. Messages will be queued until start() is called again.\n */\n stop() {\n this.#started = false;\n return this;\n }\n /**\n * Assigns a number to the message and sends it.\n */\n send(message) {\n const index = highestIndex(this.#outbound) + 1;\n const numberedMessage = { ...message, index };\n this.#outbound[index] = numberedMessage;\n log2(\"send %o\", numberedMessage);\n if (this.#started)\n this.#sendMessage(numberedMessage);\n return this;\n }\n /**\n * Resends a message that was previously sent.\n */\n resend(index) {\n const message = this.#outbound[index];\n if (!message)\n throw new Error(`Received resend request for message #${index}, which doesn't exist.`);\n log2(\"resend %o\", message);\n this.#sendMessage(message);\n return this;\n }\n /**\n * Queues inbound messages and, if we're started, emits them in order.\n */\n receive(message) {\n const { index } = message;\n log2(\"receive %o\", message);\n if (!this.#inbound[index]) {\n this.#inbound[index] = message;\n if (this.#started)\n this.#processInbound();\n }\n return this;\n }\n #processOutbound() {\n log2(\"processOutbound\");\n while (this.#outbound[this.#nextOutbound]) {\n const message = this.#outbound[this.#nextOutbound];\n this.#sendMessage(message);\n }\n }\n /**\n * Receives any messages that are pending in the inbound queue, and requests any missing messages.\n */\n #processInbound() {\n log2(\"processInbound\");\n while (this.#inbound[this.#nextInbound]) {\n const message = this.#inbound[this.#nextInbound];\n this.#nextInbound++;\n this.emit(\"message\", message);\n }\n const highest = highestIndex(this.#inbound);\n for (let i = this.#nextInbound; i < highest; i++) {\n if (this.#waiting[i])\n continue;\n this.#waiting[i] = setTimeout(() => {\n if (!this.#inbound[i])\n this.emit(\"request\", i);\n delete this.#waiting[i];\n }, this.#timeout);\n }\n }\n};\nfunction highestIndex(queue) {\n return Math.max(...Object.keys(queue).map(Number), -1);\n}\n\n// src/connection/helpers.ts\nvar messageSummary = (message) => message.type === \"SYNC\" ? `SYNC ${syncMessageSummary(message.payload)}` : (\n // @ts-expect-error utility function don't worry about it\n `${message.type} ${message.payload?.head?.slice(0, 5) || message.payload?.message || \"\"}`\n);\nvar isString = (state) => typeof state === \"string\";\nvar stateSummary = (state) => isString(state) ? state : Object.keys(state).map((key) => `${key}:${stateSummary(state[key])}`).filter((s) => s.length).join(\",\");\nvar extendServerContext = (context) => {\n const { keys: keys2, host } = context.server;\n return {\n ...context,\n user: { userId: host, userName: host, keys: keys2 },\n device: { userId: host, deviceId: host, deviceName: host, keys: keys2 }\n };\n};\nvar getUserName = (context) => {\n if (\"server\" in context)\n return context.server.host;\n if (\"userName\" in context)\n return context.userName;\n if (\"user\" in context)\n return context.user.userName;\n return \"\";\n};\n\n// src/connection/types.ts\nvar isMemberContext = (c) => {\n return \"team\" in c && c.team !== void 0;\n};\nvar isInviteeContext = (c) => {\n return \"invitationSeed\" in c && c.invitationSeed !== void 0;\n};\nvar isInviteeMemberContext = (c) => {\n return isInviteeContext(c) && \"user\" in c && c.user !== void 0;\n};\nvar isInviteeDeviceContext = (c) => {\n return isInviteeContext(c) && !isInviteeMemberContext(c);\n};\nvar isServerContext = (c) => {\n return \"server\" in c && c.server !== void 0;\n};\nvar isMemberClaim = (claim) => {\n return \"deviceId\" in claim && claim.deviceId !== void 0;\n};\nvar isInviteeMemberClaim = (claim) => {\n return isInviteeClaim(claim) && \"userKeys\" in claim && claim.userKeys !== void 0;\n};\nvar isInviteeDeviceClaim = (claim) => {\n return isInviteeClaim(claim) && !(\"userKeys\" in claim);\n};\nvar isInviteeClaim = (claim) => {\n return \"proofOfInvitation\" in claim && claim.proofOfInvitation !== void 0;\n};\n\n// src/connection/Connection.ts\nvar Connection = class extends EventEmitter3 {\n #machine;\n #messageQueue;\n #started = false;\n #log = debug4.extend(\"auth:connection\");\n constructor({ sendMessage, context }) {\n super();\n this.#messageQueue = this.#initializeMessageQueue(sendMessage);\n this.#log = this.#log.extend(getUserName(context));\n const initialContext = isServerContext(context) ? extendServerContext(context) : context;\n const machine = setup({\n types: {\n context: {},\n events: {}\n },\n // ******* ACTIONS\n // these are referred to by name in the state machine definition\n actions: {\n // IDENTITY CLAIMS\n requestIdentityClaim: () => {\n this.#queueMessage(\"REQUEST_IDENTITY\");\n },\n sendIdentityClaim: assign(({ context: context2 }) => {\n const createIdentityClaim = (context3) => {\n if (isMemberContext(context3)) {\n return {\n deviceId: context3.device.deviceId\n };\n }\n if (isInviteeMemberContext(context3)) {\n assert8(context3.invitationSeed);\n const { userName, keys: keys2 } = context3.user;\n return {\n proofOfInvitation: generateProof(context3.invitationSeed),\n userName,\n userKeys: redactKeys4(keys2),\n device: redactDevice(context3.device)\n };\n }\n if (isInviteeDeviceContext(context3)) {\n assert8(context3.invitationSeed);\n const { userName, device: device2 } = context3;\n return {\n proofOfInvitation: generateProof(context3.invitationSeed),\n userName,\n device: redactDevice(device2)\n };\n }\n throw new Error(\"Invalid context\");\n };\n const ourIdentityClaim = createIdentityClaim(context2);\n this.#queueMessage(\"CLAIM_IDENTITY\", ourIdentityClaim);\n return { ourIdentityClaim };\n }),\n receiveIdentityClaim: assign(({ event }) => {\n assertEvent(event, \"CLAIM_IDENTITY\");\n const identityClaim = event.payload;\n const theirDevice = \"device\" in identityClaim ? identityClaim.device : void 0;\n return { theirIdentityClaim: identityClaim, theirDevice };\n }),\n // INVITATIONS\n acceptInvitation: assign(({ context: context2 }) => {\n const { team, theirIdentityClaim } = context2;\n assert8(team);\n assert8(theirIdentityClaim);\n assert8(isInviteeClaim(theirIdentityClaim));\n const { proofOfInvitation } = theirIdentityClaim;\n const admit = () => {\n if (isInviteeMemberClaim(theirIdentityClaim)) {\n const { userName, userKeys } = theirIdentityClaim;\n team.admitMember(proofOfInvitation, userKeys, userName);\n const userId = userKeys.name;\n return team.members(userId);\n } else {\n const { device: device2 } = theirIdentityClaim;\n team.admitDevice(proofOfInvitation, device2);\n const { deviceId } = device2;\n const { userId } = team.memberByDeviceId(deviceId);\n return team.members(userId);\n }\n };\n const peer = admit();\n this.#queueMessage(\"ACCEPT_INVITATION\", {\n serializedGraph: team.save(),\n teamKeyring: team.teamKeyring()\n });\n return { peer };\n }),\n joinTeam: assign(({ context: context2, event }) => {\n assertEvent(event, \"ACCEPT_INVITATION\");\n const { serializedGraph, teamKeyring: teamKeyring2 } = event.payload;\n const { device: device2, invitationSeed } = context2;\n assert8(invitationSeed);\n const user = context2.user ?? // If we're joining as a new device for an existing member, we won't have a user object\n // yet, so we need to get those from the graph. We use the invitation seed to generate\n // the starter keys for the new device. We can use these to unlock a lockbox on the team\n // graph that contains our user keys.\n getDeviceUserFromGraph({ serializedGraph, teamKeyring: teamKeyring2, invitationSeed });\n const team = new Team({ source: serializedGraph, context: { user, device: device2 }, teamKeyring: teamKeyring2 });\n team.join(teamKeyring2);\n this.emit(\"joined\", { team, user });\n return { user, team };\n }),\n // AUTHENTICATION\n challengeIdentity: assign(({ context: context2 }) => {\n const { team, theirIdentityClaim } = context2;\n assert8(team);\n assert8(isMemberClaim(theirIdentityClaim));\n const { deviceId } = theirIdentityClaim;\n const theirDevice = team.device(deviceId, { includeRemoved: true });\n const peer = team.memberByDeviceId(deviceId, { includeRemoved: true });\n this.#log = this.#log.extend(peer.userName);\n const challenge2 = challenge({ type: KeyType.DEVICE, name: deviceId });\n this.#queueMessage(\"CHALLENGE_IDENTITY\", { challenge: challenge2 });\n return { theirDevice, peer, challenge: challenge2 };\n }),\n proveIdentity: ({ context: context2, event }) => {\n assertEvent(event, \"CHALLENGE_IDENTITY\");\n const { challenge: challenge2 } = event.payload;\n const { keys: keys2 } = context2.device;\n const proof = prove(challenge2, keys2);\n this.#queueMessage(\"PROVE_IDENTITY\", { challenge: challenge2, proof });\n },\n acceptIdentity: () => this.#queueMessage(\"ACCEPT_IDENTITY\"),\n // SYNCHRONIZATION\n listenForTeamUpdates: ({ context: context2 }) => {\n assert8(context2.team);\n context2.team.on(\"updated\", ({ head }) => {\n if (this.#machine.getSnapshot().status !== \"done\") {\n this.#machine.send({ type: \"LOCAL_UPDATE\", payload: { head } });\n }\n this.emit(\"updated\");\n });\n },\n sendSyncMessage: assign(({ context: context2 }) => {\n assert8(context2.team);\n const previousSyncState = context2.syncState ?? initSyncState();\n const [syncState, syncMessage] = generateMessage(context2.team.graph, previousSyncState);\n if (syncMessage) {\n this.#log(\"sending sync message\", syncMessageSummary(syncMessage));\n this.#queueMessage(\"SYNC\", syncMessage);\n } else {\n this.#log(\"no sync message to send\");\n }\n return { syncState };\n }),\n receiveSyncMessage: assign(({ context: context2, event }) => {\n assertEvent(event, \"SYNC\");\n const syncMessage = event.payload;\n const { syncState: prevSyncState = initSyncState(), team, device: device2 } = context2;\n assert8(team);\n const teamKeys = team.teamKeys();\n const deviceKeys = device2.keys;\n const decrypt = ({ encryptedGraph, keys: keys2 }) => decryptTeamGraph({ encryptedGraph, teamKeys: keys2, deviceKeys });\n const [newChain, syncState] = receiveMessage(\n team.graph,\n prevSyncState,\n syncMessage,\n teamKeys,\n decrypt\n );\n if (headsAreEqual(newChain.head, team.graph.head)) {\n return { syncState };\n } else {\n this.emit(\"updated\");\n return { team: team.merge(newChain), syncState };\n }\n }),\n // SHARED SECRET NEGOTIATION\n sendSeed: assign(({ context: context2 }) => {\n const { user, peer, seed = randomKeyBytes() } = context2;\n const encryptedSeed = asymmetric3.encryptBytes({\n secret: seed,\n recipientPublicKey: peer.keys.encryption,\n senderSecretKey: user.keys.encryption.secretKey\n });\n this.#queueMessage(\"SEED\", { encryptedSeed });\n return { seed };\n }),\n deriveSharedKey: assign(({ context: context2, event }) => {\n assertEvent(event, \"SEED\");\n const { encryptedSeed } = event.payload;\n const { seed, user, peer } = context2;\n try {\n const theirSeed = asymmetric3.decryptBytes({\n cipher: encryptedSeed,\n senderPublicKey: peer.keys.encryption,\n recipientSecretKey: user.keys.encryption.secretKey\n });\n return { sessionKey: deriveSharedKey(seed, theirSeed) };\n } catch (error) {\n if (String(error).includes(\"incorrect key pair\")) {\n return this.#fail(ENCRYPTION_FAILURE);\n } else\n throw error;\n }\n }),\n // ENCRYPTED COMMUNICATION\n receiveEncryptedMessage: ({ context: context2, event }) => {\n assertEvent(event, \"ENCRYPTED_MESSAGE\");\n const sessionKey = context2.sessionKey;\n const encryptedMessage = event.payload;\n try {\n const decryptedMessage = symmetric2.decryptBytes(encryptedMessage, sessionKey);\n this.emit(\"message\", decryptedMessage);\n } catch (error) {\n if (String(error).includes(\"wrong secret key\")) {\n return this.#fail(ENCRYPTION_FAILURE);\n } else\n throw error;\n }\n },\n // FAILURE\n fail: assign((_, { error }) => {\n return this.#fail(error);\n }),\n receiveError: assign(({ event }) => {\n assertEvent(event, \"ERROR\");\n const error = event.payload;\n this.#log(\"receiveError: %o\", error);\n this.emit(\"remoteError\", error);\n return { error };\n }),\n sendError: assign(({ event }) => {\n assertEvent(event, \"LOCAL_ERROR\");\n const error = event.payload;\n this.#log(\"sendError %o\", error);\n this.#messageQueue.send(createErrorMessage(error.type, \"REMOTE\"));\n this.emit(\"localError\", error);\n return { error };\n }),\n // EVENTS FOR EXTERNAL LISTENERS\n onConnected: () => this.emit(\"connected\"),\n onDisconnected: ({ event }) => this.emit(\"disconnected\", event)\n },\n // ******* GUARDS\n // these are referred to by name in the state machine definition\n guards: {\n theySentIdentityClaim: ({ context: context2 }) => context2.theirIdentityClaim !== void 0,\n weSentIdentityClaim: ({ context: context2 }) => context2.ourIdentityClaim !== void 0,\n bothSentIdentityClaim: and([\"theySentIdentityClaim\", \"weSentIdentityClaim\"]),\n weHaveInvitation: ({ context: context2 }) => isInviteeContext(context2),\n theyHaveInvitation: ({ context: context2 }) => isInviteeClaim(context2.theirIdentityClaim),\n neitherIsMember: and([\"weHaveInvitation\", \"theyHaveInvitation\"]),\n invitationIsValid: ({ context: context2 }) => {\n const { team, theirIdentityClaim } = context2;\n assert8(isInviteeClaim(theirIdentityClaim));\n return team.validateInvitation(theirIdentityClaim.proofOfInvitation).isValid;\n },\n joinedTheRightTeam: ({ context: context2, event }) => {\n assertEvent(event, \"ACCEPT_INVITATION\");\n const invitationSeed = context2.invitationSeed;\n const { serializedGraph, teamKeyring: teamKeyring2 } = event.payload;\n const state = getTeamState(serializedGraph, teamKeyring2);\n const { id } = generateProof(invitationSeed);\n return hasInvitation(state, id);\n },\n deviceUnknown: ({ context: context2 }) => {\n const { theirIdentityClaim } = context2;\n assert8(isMemberClaim(theirIdentityClaim));\n return !context2.team.hasDevice(theirIdentityClaim.deviceId, { includeRemoved: true });\n },\n identityIsValid: ({ context: context2, event }) => {\n assertEvent(event, \"PROVE_IDENTITY\");\n const { challenge: challenge2, proof } = event.payload;\n return context2.team.verifyIdentityProof(challenge2, proof);\n },\n memberWasRemoved: ({ context: context2 }) => context2.team.memberWasRemoved(context2.peer.userId),\n deviceWasRemoved: ({ context: context2 }) => context2.team.deviceWasRemoved(context2.theirDevice.deviceId),\n serverWasRemoved: ({ context: context2 }) => context2.team.serverWasRemoved(context2.peer.userId),\n headsAreEqual: ({ context: context2 }) => arraysAreEqual(\n context2.team.graph.head,\n // our head\n context2.syncState?.lastCommonHead\n // last head we had in common with peer\n )\n }\n }).createMachine({\n context: initialContext,\n // ******* STATE MACHINE DEFINITION\n id: \"connection\",\n entry: \"requestIdentityClaim\",\n initial: \"awaitingIdentityClaim\",\n on: {\n REQUEST_IDENTITY: { actions: \"sendIdentityClaim\", target: \".awaitingIdentityClaim\" },\n // Remote error (sent by peer)\n ERROR: { actions: \"receiveError\", target: \"#disconnected\" },\n // Local error (detected by us, sent to peer)\n LOCAL_ERROR: { actions: \"sendError\", target: \"#disconnected\" }\n },\n states: {\n awaitingIdentityClaim: {\n // Don't respond to a request for an identity claim if we've already sent one\n always: { guard: \"bothSentIdentityClaim\", target: \"authenticating\" },\n on: { CLAIM_IDENTITY: { actions: \"receiveIdentityClaim\" } }\n },\n // To authenticate, each peer either presents an invitation (as a new device or as a new\n // member) or a deviceId.\n authenticating: {\n initial: \"checkingInvitations\",\n states: {\n // A new member or new device is invited by being given a randomly-generated secret\n // seed. This seed is used to generate a temporary keypair, the public half of which is\n // recorded on the team graph by the device creating the invitation. The invitee can\n // then use the seed to generate the same keypair, and use that to sign a payload that\n // can be verified by anyone on the team.\n checkingInvitations: {\n always: [\n // We can't both present invitations - someone has to be a member\n { guard: \"neitherIsMember\", ...fail4(NEITHER_IS_MEMBER) },\n // If I have an invitation, wait for acceptance\n { guard: \"weHaveInvitation\", target: \"awaitingInvitationAcceptance\" },\n // If they have an invitation, validate it\n { guard: \"theyHaveInvitation\", target: \"validatingInvitation\" },\n // If there are no invitations, we can proceed directly to verifying each other's identity\n { target: \"#checkingIdentity\" }\n ]\n },\n awaitingInvitationAcceptance: {\n // Wait for them to validate the invitation we included in our identity claim\n on: {\n ACCEPT_INVITATION: [\n // Make sure the team I'm joining is actually the one that invited me\n { guard: \"joinedTheRightTeam\", actions: \"joinTeam\", target: \"#checkingIdentity\" },\n fail4(JOINED_WRONG_TEAM)\n ]\n },\n ...timeout\n },\n validatingInvitation: {\n always: [\n // If the proof succeeds, add them to the team and send an acceptance message,\n // then proceed to the standard identity claim & challenge process\n {\n guard: \"invitationIsValid\",\n actions: \"acceptInvitation\",\n target: \"#checkingIdentity\"\n },\n // If the proof fails, disconnect with error\n fail4(INVITATION_PROOF_INVALID)\n ]\n },\n // We use a signature challenge to verify the identity of an existing team member: We\n // send them a payload that includes a random element, they sign it with their private\n // signature key, and we verify it with their public signature key.\n //\n // Note: The signature challenge is probably not sufficient on its own to prove\n // identity; I suspect it can be defeated with a replay attack, in which Eve\n // simultaneously authenticates to Alice as Bob, and to Bob as Alice, using each of them\n // to sign the challenges provided by the other.\n //\n // In practice the session key negotiation process (below) provides much stronger\n // guarantees of authenticity, because it doesn't involve sending a proof that could be\n // replayed; instead it requires all further communication to be encrypted with an\n // independently derived shared secret that can only be calculated by the parties if\n // they have the correct private encryption keys. See\n // https://github.com/local-first-web/auth/discussions/42\n //\n // We considered removing the signature challenge entirely, but it does provide an\n // additional layer of security in the sense that it requires the peer to demonstrate\n // that they have the signature key in addition to the encrypted key.\n checkingIdentity: {\n id: \"checkingIdentity\",\n type: \"parallel\",\n // Peers mutually authenticate to each other, so we have to complete two 'parallel' processes:\n // 1. prove our identity\n // 2. verify their identity\n states: {\n // 1. prove our identity\n provingMyIdentity: {\n initial: \"awaitingIdentityChallenge\",\n states: {\n awaitingIdentityChallenge: {\n // If we just presented an invitation, they already know who we are\n always: { guard: \"weHaveInvitation\", target: \"done\" },\n on: {\n // When we receive a challenge, respond with proof\n CHALLENGE_IDENTITY: {\n actions: \"proveIdentity\",\n target: \"awaitingIdentityAcceptance\"\n }\n },\n ...timeout\n },\n // Wait for a message confirming that they've validated our proof of identity\n awaitingIdentityAcceptance: {\n on: { ACCEPT_IDENTITY: { target: \"done\" } },\n ...timeout\n },\n done: { type: \"final\" }\n }\n },\n // 2. verify their identity\n verifyingTheirIdentity: {\n initial: \"challengingIdentity\",\n states: {\n // Send a signature challenge\n challengingIdentity: {\n always: [\n // If they just presented an invitation, we already know who they are\n { guard: \"theyHaveInvitation\", target: \"done\" },\n // We received their identity claim in their CLAIM_IDENTITY message. Do we\n // have a device on the team matching their identity claim?\n { guard: \"deviceUnknown\", ...fail4(DEVICE_UNKNOWN) },\n // Send a challenge.\n { actions: \"challengeIdentity\", target: \"awaitingIdentityProof\" }\n ]\n },\n // Then wait for them to respond to the challenge with proof\n awaitingIdentityProof: {\n on: {\n PROVE_IDENTITY: [\n // If the proof succeeds, send them an acceptance message and continue\n { guard: \"identityIsValid\", actions: \"acceptIdentity\", target: \"done\" },\n // If the proof fails, disconnect with error\n fail4(IDENTITY_PROOF_INVALID)\n ]\n },\n ...timeout\n },\n done: { type: \"final\" }\n }\n }\n },\n // Once BOTH processes complete, we continue\n onDone: { target: \"done\" }\n },\n done: { type: \"final\" }\n },\n onDone: { target: \"#negotiating\" }\n },\n // Negotiate a session key (shared secret). Alice generates a random seed, asymmetrically\n // encrypts it with her private key and Bob's public key, and sends it to Bob, who decrypts\n // it with his private key and Alice's public key; and vice versa. Both parties then combine\n // the two seeds to derive a shared key.\n negotiating: {\n id: \"negotiating\",\n entry: \"sendSeed\",\n on: { SEED: { actions: \"deriveSharedKey\", target: \"synchronizing\" } },\n ...timeout\n },\n // Synchronize our team graph with the peer\n synchronizing: {\n entry: \"sendSyncMessage\",\n always: { guard: \"headsAreEqual\", target: \"connected\" },\n on: { SYNC: { actions: [\"receiveSyncMessage\", \"sendSyncMessage\"] } }\n },\n // Once we're connected, all we need to do is just keep team graph in sync with our peer,\n // and relay encrypted messages.\n connected: {\n id: \"connected\",\n entry: [\"onConnected\", \"listenForTeamUpdates\"],\n always: [\n // If updates to the team graph result in our peer being removed from the team,\n // disconnect\n { guard: \"memberWasRemoved\", ...fail4(MEMBER_REMOVED) },\n { guard: \"deviceWasRemoved\", ...fail4(DEVICE_REMOVED) },\n { guard: \"serverWasRemoved\", ...fail4(SERVER_REMOVED) }\n ],\n on: {\n // If the team graph is modified locally, send them a sync message\n LOCAL_UPDATE: { actions: \"sendSyncMessage\" },\n // If they send a sync message, process it\n SYNC: { actions: [\"receiveSyncMessage\", \"sendSyncMessage\"] },\n // Deliver any encrypted messages\n ENCRYPTED_MESSAGE: { actions: \"receiveEncryptedMessage\" },\n // If they disconnect we disconnect\n DISCONNECT: \"#disconnected\"\n }\n },\n // Once we disconnect, no further messages will be sent or received; to reconnect,\n // a new Connection object must be created.\n disconnected: {\n id: \"disconnected\",\n always: { actions: \"onDisconnected\" }\n }\n }\n });\n this.#machine = createActor(machine);\n this.#machine.subscribe((state) => {\n const summary = stateSummary(state.value);\n this.emit(\"change\", summary);\n this.#log(`\\u23E9 ${summary} `);\n });\n this.emit = (event, ...args) => {\n this.#log(`emit ${event} %o`, ...args);\n return super.emit(event, ...args);\n };\n }\n // PUBLIC API\n /** Starts the state machine. Returns this Connection object. */\n start = (storedMessages = []) => {\n this.#log(\"starting\");\n this.#machine.start();\n this.#messageQueue.start();\n this.#started = true;\n for (const m of storedMessages)\n this.deliver(m);\n return this;\n };\n /** Shuts down and sends a disconnect message to the peer. */\n stop = () => {\n if (this.#started && this.#machine.getSnapshot().status !== \"done\") {\n const disconnectMessage = { type: \"DISCONNECT\" };\n this.#machine.send(disconnectMessage);\n this.#messageQueue.send(disconnectMessage);\n }\n this.removeAllListeners();\n this.#messageQueue.stop();\n this.#log(\"connection stopped\");\n return this;\n };\n /**\n * Adds connection messages from the peer to the MessageQueue's incoming message queue, which\n * will pass them to the state machine in order.\n */\n deliver(serializedMessage) {\n const message = unpack2(serializedMessage);\n this.#messageQueue.receive(message);\n }\n /**\n * Public interface for sending a message from the application to our peer via this connection's\n * encrypted channel. We don't care about the content of this message.\n */\n send = (message) => {\n assert8(this._sessionKey, \"Can't send encrypted messages until we've finished connecting\");\n const encryptedMessage = symmetric2.encryptBytes(message, this._sessionKey);\n this.#queueMessage(\"ENCRYPTED_MESSAGE\", encryptedMessage);\n };\n /** Returns the current state of the protocol machine. */\n get state() {\n assert8(this.#started);\n return this.#machine.getSnapshot().value;\n }\n // PUBLIC FOR TESTING\n /**\n * Returns the team that the connection's user is a member of. If the user has not yet joined a\n * team, returns undefined.\n */\n get team() {\n return this._context.team;\n }\n // PRIVATE\n /**\n * Returns the connection's session key when we are in a connected state. Otherwise, returns\n * `undefined`.\n */\n get _sessionKey() {\n return this._context.sessionKey;\n }\n get _context() {\n assert8(this.#started);\n return this.#machine.getSnapshot().context;\n }\n #initializeMessageQueue(sendMessage) {\n return new MessageQueue({\n sendMessage: (message) => {\n this.#logMessage(\"out\", message);\n const serialized = pack2(message);\n sendMessage(serialized);\n }\n }).on(\"message\", (message) => {\n this.#logMessage(\"in\", message);\n if (message.type === \"REQUEST_RESEND\") {\n const { index } = message.payload;\n this.#messageQueue.resend(index);\n } else {\n this.#machine.send(message);\n }\n }).on(\"request\", (index) => {\n this.#queueMessage(\"REQUEST_RESEND\", { index });\n });\n }\n /** Force local error state */\n #fail(error) {\n this.#log(\"error: %o\", error);\n const localMessage = createErrorMessage(error, \"LOCAL\");\n this.#machine.send(localMessage);\n return { error: localMessage.payload };\n }\n /** Shorthand for sending a message to our peer. */\n #queueMessage(type, payload) {\n this.#messageQueue.send({ type, payload });\n }\n #logMessage(direction, message) {\n const arrow = direction === \"in\" ? \"<-\" : \"->\";\n const peerUserName = this.#started ? this._context.peer?.userName ?? \"?\" : \"?\";\n this.#log(`${arrow}${peerUserName} #${message.index} ${messageSummary(message)}`);\n }\n};\nvar fail4 = (error) => ({\n actions: [{ type: \"fail\", params: { error } }, \"onDisconnected\"],\n target: \"#disconnected\"\n});\nvar TIMEOUT_DELAY = 7e3;\nvar timeout = { after: { [TIMEOUT_DELAY]: fail4(TIMEOUT) } };\n\n// src/index.ts\nimport {\n createKeyset as createKeyset5,\n createUser,\n redactKeys as redactKeys5,\n redactUser as redactUser2\n} from \"@localfirst/crdx\";\nimport { asymmetric as asymmetric4, signatures as signatures5, symmetric as symmetric3 } from \"@localfirst/crypto\";\nexport {\n ADMIN,\n ADMIN_SCOPE,\n ALL,\n Connection,\n DEVICE_ID,\n ENCRYPTION,\n EPHEMERAL_SCOPE2 as EPHEMERAL_SCOPE,\n HashPurpose,\n INVITATION,\n LINK_HASH,\n LINK_TO_PREVIOUS,\n SHARED_KEY,\n SIGNATURE,\n SYMMETRIC,\n TEAM_SCOPE,\n Team,\n VALID,\n asymmetric4 as asymmetric,\n castServer,\n connection_exports as connection,\n createDevice,\n createKeyset5 as createKeyset,\n createTeam,\n createUser,\n device_exports as device,\n generateProof,\n graphSummary,\n initialState,\n invitation_exports as invitation,\n load as loadTeam,\n redactDevice,\n redactKeys5 as redactKeys,\n redactUser2 as redactUser,\n role_exports as role,\n signatures5 as signatures,\n symmetric3 as symmetric\n};\n//# sourceMappingURL=index.js.map"],"names":["EventEmitter","#listenerMap","#eventsCount","event","args","listeners","i","once","fn","#addListener","removals","listener","events","assert","value","message","error","trimLines","removeLine","s","targetText","line","isObjectLike","symbolTag","isSymbol","baseGetTag","arrayMap","array","iteratee","index","length","result","isArray","INFINITY","symbolProto","Symbol","symbolToString","baseToString","identity","WeakMap","getNative","root","objectCreate","baseCreate","object","proto","isObject","noop","copyArray","source","defineProperty","func","arrayEach","baseFindIndex","predicate","fromIndex","fromRight","baseIsNaN","strictIndexOf","baseIndexOf","arrayIncludes","MAX_SAFE_INTEGER","reIsUint","isIndex","type","baseAssignValue","key","objectProto","hasOwnProperty","assignValue","objValue","eq","copyObject","props","customizer","isNew","newValue","isLength","isArrayLike","isFunction","isPrototype","Ctor","baseTimes","n","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","arrayTag","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseUnary","freeProcess","freeGlobal","nodeUtil","types","nodeIsTypedArray","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","overArg","transform","arg","nativeKeys","baseKeys","keys","nativeKeysIn","baseKeysIn","isProto","keysIn","reIsDeepProp","reIsPlainProp","isKey","MAX_MEMOIZE_SIZE","memoizeCapped","memoize","cache","rePropName","reEscapeChar","stringToPath","string","match","number","quote","subString","toString","castPath","toKey","baseGet","path","get","defaultValue","arrayPush","values","offset","getPrototype","stackClear","ListCache","stackDelete","data","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Map","MapCache","Stack","entries","baseAssign","baseAssignIn","allocUnsafe","cloneBuffer","buffer","isDeep","arrayFilter","resIndex","stubArray","nativeGetSymbols","getSymbols","symbol","copySymbols","getSymbolsIn","copySymbolsIn","baseGetAllKeys","keysFunc","symbolsFunc","getAllKeys","getAllKeysIn","DataView","Promise","Set","promiseTag","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","initCloneArray","Uint8Array","cloneArrayBuffer","arrayBuffer","cloneDataView","dataView","reFlags","cloneRegExp","regexp","symbolValueOf","cloneSymbol","cloneTypedArray","typedArray","initCloneByTag","tag","initCloneObject","baseIsMap","nodeIsMap","isMap","baseIsSet","nodeIsSet","isSet","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","genTag","cloneableTags","baseClone","bitmask","stack","isFlat","isFull","isFunc","stacked","subValue","clone","HASH_UNDEFINED","setCacheAdd","setCacheHas","SetCache","arraySome","cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","other","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","map","setToArray","set","equalByTag","convert","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","baseIsMatch","matchData","srcValue","isStrictComparable","getMatchData","matchesStrictComparable","baseMatches","baseHasIn","hasPath","hasFunc","hasIn","baseMatchesProperty","baseProperty","basePropertyDeep","property","baseIteratee","createSet","baseUniq","comparator","includes","isCommon","outer","computed","seenIndex","uniq","uniqBy","_assert","isBytes","bool","bytes","hash","exists","output","b","a","lengths","h","instance","checkFinished","out","min","_u64","fromBig","split","add","U32_MASK64","_32n","le","lst","Ah","Al","l","toBig","shrSH","_l","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","_h","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","u64","crypto","exports","byteSwap32","bytesToHex","hexToBytes","asyncLoop","utf8ToBytes","toBytes","concatBytes","checkOpts","wrapConstructor","wrapConstructorWithOpts","wrapXOFConstructorWithOpts","randomBytes","crypto_1","require$$0","_assert_js_1","require$$1","u8","arr","u32","createView","rotr","word","shift","rotl","byteSwap","hexes","_","hex","asciis","asciiToBase16","char","hl","al","ai","hi","n1","n2","nextTick","iters","tick","cb","ts","diff","str","arrays","sum","res","pad","Hash","toStr","defaults","opts","hashCons","hashC","msg","tmp","bytesLength","sha3","keccakP","_u64_js_1","utils_js_1","require$$2","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","round","R","x","y","t","j","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","rounds","B","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","Keccak","blockLen","suffix","outputLen","enableXOF","state","len","pos","take","bufferOut","to","gen","genShake","defaultLength","bigLength","createEntropy","random","entropy","bufToBigInt","buf","bits","bi","input","alphabet","randomLetter","createFingerprint","globalObj","global","globals","sourceString","createCounter","count","initialCountMax","init","counter","fingerprint","firstLetter","time","salt","hashInput","createId","isCuid","id","minLength","maxLength","regex","src","getConstants","createId_1","SIGNATURE","ENCRYPTION","SYMMETRIC","LINK_HASH","HashPurpose","ROOT","VALID","EPHEMERAL_SCOPE","LINK_HASH2","hashEncryptedLink","body","append","graph","action","user","context","senderPublicKey","senderSecretKey","recipientPublicKey","encryptedBody","asymmetric","hash4","link","encryptedLink","getLink","getChildrenHashes","calculateChildren","childrenLookup","parents","parent","children","getHashes","memoizeResolver","getPredecessorHashes","memoize2","predecessors","isPredecessor","isPredecessorHash","memoizeResolver2","getSuccessorHashes","memoize3","successors","uniq2","isSuccessorHash","getConcurrentHashes","calculateConcurrency","memoize4","concurrencyLookup","isConcurrent","getConcurrentBubbles","getBubble","bubble","bubbles","EMPTY_GRAPH","createGraph","name","rootPayload","payload","arrayToMap","keyAccessor","current","KeyType","hasSecrets","isKeyset","k","isKeyring","createKeyring","decryptLink","keyset","assert2","cipher","toUint8Array","decryptedLinkBody","asymmetric2","decryptGraph","encryptedGraph","encryptedLinks","childMap","links","decrypt","prevLinks","decryptedLink","newLinks","hash5","decryptedLinks","getEncryptedLinks","hashes","getEncryptedLink","getHead","getParents","linkOrHash","EMPTY","getParentMap","depth","start","end","prev","getTails","parentsToLookup","parentLinks","linkMap","getChildMap","invertLinkMap","inverted","getRoot","topoSort","options","byHash","remainingParents","sorted","child2","childHash","child","nextLink","getSequence","resolver","baseResolver","sort","filter","noFilter","isInvalid","headsAreEqual","merge","ours","theirs","mergedLinks","mergedEncryptedLinks","newHeads","uniq3","isNotParentOfAnyOf","mergedGraph","isParent","redactGraph","head","serialize","pack","deserialize","serialized","unpack","SIGNATURE2","ENCRYPTION2","SYMMETRIC2","createKeyset","scope","seed","randomKey","stretchedSeed","stretch","signatures","hash2","asymmetric3","getLatestGeneration","keyring","latest","publicKey","redactKeys","ValidationError","details","_validators","computedHash","fail","hasNoPrevLink","hasRootType","isTheGraphRoot","timestamp","now","prevLink","memoizeFunctionMap","memoizeResolver3","hash3","memoize5","validators","validate","customValidators","rootHash","rootLink","headHash","headLink","encryptedLinkHashes","linkHashes","compositeValidator","validators2","currentLink","mergedValidators","merge2","validator","validatorSets","vs","makeMachine","initialState","reducer","Store","assert3","isGraph","actionWithPayload","prevHash","prevPublicKey","theirGraph","machine","createStore","generateMessage","prevState","their","our","lastCommonHead","ourHead","theirHead","theirHashLookup","hashesWeThinkTheyNeed","linksWeHave","hashesToSend","additionalDependencies","initSyncState","receiveMessage","assert4","ourChildMap","theirChildMap","validation","createUser","userName","userId","createId2","randomKey2","redactUser","getGlobal","getDevTools","w","devToolsAdapter","service","devTools","Mailbox","_process","enqueued","consumed","STATE_DELIMITER","TARGETLESS_KEY","NULL_EVENT","STATE_IDENTIFIER","WILDCARD","XSTATE_INIT","XSTATE_STOP","createAfterEvent","delayRef","createDoneStateEvent","createDoneActorEvent","invokeId","createErrorActorEvent","createInitEvent","reportUnhandledError","err","symbolObservable","matchesState","parentStateId","childStateId","parentStateValue","toStateValue","childStateValue","toStatePath","stateId","segment","stateValue","isMachineSnapshot","statePath","pathToStateValue","marker","previous","mapValues","collection","collectionKeys","toArrayStrict","toArray","resolveOutput","mapper","self","isErrorActorEvent","toTransitionConfigArray","configLike","transitionLike","normalizeTarget","target","toObserver","nextHandler","errorHandler","completionHandler","isObserver","createInvokeId","stateNodeId","resolveReferencedActor","indexStr","nodeId","invokeConfig","createScheduledEventId","actorRef","idCounter","createSystem","rootActor","keyedActors","reverseKeyedActors","inspectionObservers","timerMap","clock","logger","scheduler","delay","scheduledEvent","scheduledEventId","system","timeout","sendInspectionEvent","resolvedInspectionEvent","observer","sessionId","systemId","existing","observerOrFn","scheduledEvents","scheduledId","$$ACTOR_TYPE","ProcessingStatus","defaultOptions","ms","Actor","logic","resolvedOptions","syncSnapshot","inspect","emittedEvent","wildcardListener","allListeners","handler","persistedState","snapshot","deferredFn","nextListenerOrObserver","errorListener","completeListener","wrappedHandler","initEvent","nextState","caughtError","reportError","err2","createActor","resolveCancel","actionArgs","actionParams","sendId","resolvedSendId","executeCancel","actorScope","cancel","params","resolveSpawn","_actionParams","resolvedId","cloneMachineSnapshot","executeSpawn","spawnChild","resolveStop","actorRefOrString","resolvedActorRef","executeStop","stopChild","stop","checkAnd","guards","guard","evaluateGuard","and","isInline","resolved","guardArgs","guardParams","isAtomicStateNode","stateNode","getChildren","sn","getProperAncestors","toStateNode","ancestors","m","getAllStateNodes","stateNodes","nodeSet","adjList","getAdjList","getInitialStateNodesWithTheirAncestors","initialStates","initialStateNode","getValueFromAdj","baseNode","childStateNodes","childStateNode","getStateValue","rootNode","config","isInFinalState","stateNodeSet","isStateId","getCandidates","receivedEventType","eventDescriptor","partialEventTokens","eventTokens","tokenIndex","partialEventToken","eventToken","getDelayedTransitions","afterConfig","mutateEntryExit","afterEvent","eventType","raise","configTransition","resolvedTransition","resolvedDelay","transition","delayedTransition","formatTransition","descriptor","transitionConfig","normalizedTarget","reenter","resolveTarget","formatTransitions","transitions","transitionsConfig","invokeDef","formatInitialTransition","_target","resolvedTarget","targets","isInternalTarget","getStateNodeByPath","resolveHistoryDefaultTransition","isHistoryNode","states","getInitialStateNodes","ancestor","iter","descStateNode","getStateNode","stateKey","arrayStatePath","currentStateNode","getStateNodes","childStateKeys","subStateKey","allSubStateNodes","subStateNode","subStateNodes","transitionAtomicNode","next","transitionCompoundNode","subStateKeys","transitionNode","transitionParallelNode","allInnerTransitions","subStateValue","innerTransitions","getHistoryNodes","isDescendant","parentStateNode","hasIntersection","s1","s2","set1","set2","item","removeConflictingTransitions","enabledTransitions","historyValue","filteredTransitions","t1","t1Preempted","transitionsToRemove","t2","computeExitSet","t3","findLeastCommonAncestor","tail","getEffectiveTargetStates","targetNode","node","getTransitionDomain","targetStates","lca","statesToExit","domain","areStateNodeCollectionsEqual","prevStateNodes","nextStateNodeSet","microstep","currentSnapshot","isInitial","internalQueue","mutStateNodeSet","exitStates","resolveActionsAndContext","enterStates","nextStateNodes","e","getMachineOutput","rootCompletionNode","doneStateEvent","nextSnapshot","statesToEnter","statesForDefaultEntry","computeEntrySet","completedNodes","stateNodeToEnter","actions","initialActions","ancestorMarker","addDescendantStatesToEnter","addAncestorStatesToEnter","historyStateNodes","addProperAncestorStatesToEnter","historyDefaultTransition","reentrancyDomain","anc","changedHistory","exitStateNode","historyNode","def","executingCustomAction","resolveAndExecuteActionsWithContext","extra","retries","intermediateSnapshot","executeAction","resolvedAction","builtinAction","deferredActorIds","macrostep","microstates","addMicrostate","microstate","stopChildren","nextEvent","currentEvent","isErr","selectTransitions","shouldSelectEventlessTransitions","selectEventlessTransitions","previousState","enabledTransitionSet","atomicStates","loop","resolveStateValue","allStateNodes","machineSnapshotMatches","testValue","machineSnapshotHasTag","machineSnapshotCan","transitionData","machineSnapshotToJSON","nodes","tags","getMeta","toJSON","can","hasTag","matches","jsonValues","machineSnapshotGetMeta","acc","createMachineSnapshot","getPersistedSnapshot","childrenJson","persistContext","contextPart","copy","resolveRaise","eventOrExpr","delaysMap","resolvedEvent","configDelay","executeRaise","createSpawner","spawnedChildren","spawn","resolveAssign","assignment","assignArgs","partialUpdate","propAssignment","updatedContext","assign","assertEvent","typesText","memo","memoizedData","EMPTY_OBJECT","toSerializableAction","StateNode","stateConfig","resolvedSrc","onDone","onError","invokeDefValues","selectedTransition","candidates","candidate","resolvedContext","guardPassed","guardType","StateMachine","implementations","actors","delays","resolvedStateValue","preInitial","preInitialState","macroState","fullPath","relativePath","resolvedStateId","_actorScope","snapshotChildren","actorId","actorData","childState","restoredSnapshot","reviveContext","createMachine","setup","schemas","__defProp","__export","all","connection_exports","Connection","DEVICE_REMOVED","DEVICE_UNKNOWN","ENCRYPTION_FAILURE","IDENTITY_PROOF_INVALID","INVITATION_PROOF_INVALID","JOINED_WRONG_TEAM","MEMBER_REMOVED","NEITHER_IS_MEMBER","SERVER_REMOVED","TIMEOUT","connectionErrors","createErrorMessage","isInviteeClaim","isInviteeContext","isInviteeDeviceClaim","isInviteeDeviceContext","isInviteeMemberClaim","isInviteeMemberContext","isMemberClaim","isMemberContext","isServerContext","actionFingerprint","fingerprintPayload","arraysAreEqual","normalize2","isAdminOnlyAction","role_exports","ADMIN","bySeniority","chain","isFounder","linkThatAddedMember","addedMember","addedA","addedB","membershipResolver","invalidLinks","ruleName","membershipRules","rule","invalidLinksByThisRule","alsoInvalid","findDependentLinks","linkNotIn","invalidLink","dependentLinks","invitation","usesInvitation","authorIs","removed","getRemovedAndDemotedMembers","removers","getRemovalsAndDemotions","getAuthor","leastSenior","removedMembers","getAdditions","addedUserId","getRemovedMembers","authorIn","demotedMembers","getDemotedMembers","authorDemoted","isAdminOnly","userNames","isAddAction","isRemovalAction","getRemovals","isDemotionAction","getDemotions","getTarget","author","excludeList","graphSummary","LINK_TO_PREVIOUS","INVITATION","DEVICE_ID","SHARED_KEY","composeTransforms","transforms","state2","getScope","lockboxSummary","trunc","scopesMatch","assertScopesMatch","deriveSharedKey","aBytes","base58","bBytes","concatenatedSeeds","byteArraySortComparator","hashBytes","aString","bString","destination","localMessage","remoteMessage","deriveId","stretchedKey","normalize","secretKey","generateStarterKeys","generateProof","ephemeralKeys","signature","serializeTeamGraph","deserializeTeamGraph","keys2","maybeDeserialize","teamKeyring2","ALL","TEAM_SCOPE","ADMIN_SCOPE","EPHEMERAL_SCOPE2","invalidLinkReducer","member2","pendingKeyRotations","setHead","addDevice","device2","devices","d","addMember","newMember","addMemberRoles","roles","roleName","addMessage","addRole","newRole","unique","addServer","newServer","changeMemberKeys","changeServerKeys","server2","collectLockboxes","newLockboxes","lockboxes","postInvitation","invitationState","server","host","hasServer","toMember","toUser","toDevice","castServer","hasDevice","deviceId","getDevice","device","deviceWasRemoved","hasMember","hasRole","r","hasInvitation","getInvitation","isKeyManifest","create","contents","recipientKeys","redactedRecipientKeys","redactedContents","encryptionKeys","encryptedPayload","EPHEMERAL_SCOPE3","open","lockbox","decryptionKeys","encryptionKey","rotate","oldLockbox","newContents","updatedRecipientKeys","recipientManifest","visibleKeys","keysets","recipient","keyset2","keyMap","deviceKeys","organizeKeysIntoMap","generation","keysetsForScope","keysetHistory","keysFromLockboxes","assert5","lockboxesInScope","latestGeneration","maxGeneration","max","member","memberByDeviceId","memberHasRole","role2","memberIsAdmin","memberWasRemoved","membersInRole","admins","messages","role","serverWasRemoved","TEAM","teamKeyring","allTeamKeys","visibleScopes","scopes","type2","name2","derivedScopes","allScopes","removeDevice","removedDevice","removeDeviceFromMember","members","removedDevices","removeMember","remainingMembers","removedMember","removeMemberRole","removeRole","removeServer","remainingServers","removedServer","removedServers","revokeInvitation","invitations","revokedInvitation","rotateKeys","u","setTeamName","teamName","useInvitation","uses","invitation_exports","IKEY_LENGTH","InvitationValidationError","create2","invitationCanBeUsed","randomSeed","maxUses","expiration","starterKeys","timeOfUse","revoked","proof","signatures2","log","debug","validate2","_previousState","rootDevice","rootMember","fail2","deviceOwner","truncateHashes","getTransforms","ROOT2","memberKeys","unrecognizedLinkType","teamMachine","getTeamState","serializedGraph","USER","getDeviceUserFromGraph","invitationSeed","invitationId","assert6","userKeys","challenge","identityClaim","prove","challenge2","signatures3","verify","publicKeys","fail3","IdentityChallengeFailure","device_exports","createDevice","redactDevice","deviceName","randomKey3","createKeyset2","redactKeys2","_redactUser","isNewTeam","DEVICE","USER2","Team","randomKey4","debug2","assert7","lockboxTeamKeysForMember","adminKeys","createKeyset3","lockboxAdminKeysForMember","lockboxUserKeysForDevice","teamKeys","roleKeys","lockboxRoleKeysForAdmins","lockboxRoleKeysForMember","adminCount","lockboxUserKeysForDeviceStarterKeys","canBeUsedResult","redactKeys3","firstUseDevice","symmetric","signatures4","newKeys","isForUser","isForServer","oldKeys","createLockboxRoleKeysForMember","compromised","newKeyset","otherNewKeysets","newKeysets","newKeyset2","updatedKeyset","createTeam","createKeyset4","decryptTeamGraph","createKeyring2","previousKeys","previousDecryptedLinks","decryptedLinks2","newState","rootPublicKey","rootKeys","load","createKeyring3","syncMessageSummary","need","truncateHashes2","log2","debug3","MessageQueue","EventEmitter2","#started","#inbound","#nextInbound","#waiting","#timeout","#outbound","#nextOutbound","#sendMessage","sendMessage","timeout2","#processInbound","#processOutbound","highestIndex","numberedMessage","highest","queue","messageSummary","isString","stateSummary","extendServerContext","getUserName","c","claim","EventEmitter3","#machine","#messageQueue","#log","debug4","#initializeMessageQueue","initialContext","#queueMessage","context2","ourIdentityClaim","context3","assert8","redactKeys4","theirDevice","team","theirIdentityClaim","proofOfInvitation","peer","previousSyncState","syncState","syncMessage","prevSyncState","newChain","randomKeyBytes","encryptedSeed","theirSeed","#fail","sessionKey","encryptedMessage","decryptedMessage","symmetric2","fail4","summary","storedMessages","disconnectMessage","serializedMessage","unpack2","#logMessage","pack2","direction","arrow","peerUserName","TIMEOUT_DELAY"],"mappings":"uSAAO,MAAMA,EAAa,CACtBC,GAAe,CAAA,EACfC,GAAe,EAEf,KAAKC,KAAUC,EAAM,CACjB,GAAI,CAAC,KAAKH,GAAaE,CAAK,EACxB,MAAO,GACX,MAAME,EAAY,CAAC,GAAG,KAAKJ,GAAaE,CAAK,CAAC,EAC9C,QAASG,EAAI,EAAGA,EAAID,EAAU,OAAQC,IAAK,CACvC,KAAM,CAAE,KAAAC,EAAM,GAAAC,CAAI,EAAGH,EAAUC,CAAC,EAC5BC,GACA,KAAK,eAAeJ,EAAOK,CAAE,EACjCA,EAAG,GAAGJ,CAAI,CACb,CACD,MAAO,EACV,CAED,YAAYD,EAAOK,EAAI,CACnB,OAAO,KAAKC,GAAaN,EAAOK,EAAI,EAAK,CAC5C,CACD,GAAK,KAAK,YAEV,KAAKL,EAAOK,EAAI,CACZ,OAAO,KAAKC,GAAaN,EAAOK,EAAI,EAAI,CAC3C,CACD,eAAeL,EAAOK,EAAI,CACtB,MAAMH,EAAY,KAAKJ,GAAaE,CAAK,EACzC,GAAIE,EAAW,CACX,GAAI,CAACG,EACD,KAAK,mBAAmBL,CAAK,MAE5B,CAED,MAAMO,EAAW,CAAA,EACjB,QAAS,EAAI,EAAG,EAAIL,EAAU,OAAQ,IAC9BA,EAAU,CAAC,EAAE,KAAOG,IACHH,EAAU,CAAC,EAE5B,KAAKH,IAAgB,EACjB,KAAKA,KAAiB,GAEtB,KAAKD,GAAe,GACpB,KAAKC,GAAe,GAEfG,EAAU,SAAW,EAE1B,OAAO,KAAKJ,GAAaE,CAAK,EAI9BO,EAAS,KAAK,CAAC,GAI3B,QAAS,EAAIA,EAAS,OAAS,EAAG,GAAK,EAAG,IACtCL,EAAU,OAAOK,EAAS,CAAC,EAAG,CAAC,CAEtC,CACD,OAAO,IACV,CACJ,CACD,IAAM,KAAK,eACX,mBAAmBP,EAAO,CACtB,GAAIA,EAAO,CACP,MAAME,EAAY,KAAKJ,GAAaE,CAAK,EAErCE,IACA,KAAKH,IAAgBG,EAAU,OAC3B,KAAKH,KAAiB,EAEtB,KAAKD,GAAe,GAIpB,OAAO,KAAKA,GAAaE,CAAK,EAGzC,MAEG,KAAKF,GAAe,GACpB,KAAKC,GAAe,EAExB,OAAO,IACV,CACDO,GAAaN,EAAOK,EAAID,EAAO,GAAO,CAClC,MAAMI,EAAW,CAAE,GAAAH,EAAI,KAAAD,GACjBK,EAAS,KAAKX,GAAaE,CAAK,GAAK,CAAA,EAC3C,OAAAS,EAAO,KAAKD,CAAQ,EACpB,KAAKV,GAAaE,CAAK,EAAIS,EAC3B,KAAKV,KACE,IACV,CACL,CC5FO,SAASW,EAAOC,EAAOC,EAAU,mBAAoB,CACxD,GAAID,IAAU,IAASA,IAAU,MAAQA,IAAU,OAAW,CAC1D,MAAME,EAAQ,IAAI,MAAMC,GAAUF,CAAO,CAAC,EAC1C,MAAAC,EAAM,MAAQE,GAAWF,EAAM,MAAO,WAAW,EAC3CA,CACT,CACL,CACA,MAAMC,GAAaE,GAAMA,EACpB,MAAM;AAAA,CAAI,EACV,IAAIA,GAAKA,EAAE,MAAM,EACjB,KAAK;AAAA,CAAI,EACRD,GAAa,CAACC,EAAI,GAAIC,IAAeD,EACtC,MAAM;AAAA,CAAI,EACV,OAAOE,GAAQ,CAACA,EAAK,SAASD,CAAU,CAAC,EACzC,KAAK;AAAA,CAAI,ECUd,SAASE,GAAaR,EAAO,CAC3B,OAAOA,GAAS,MAAQ,OAAOA,GAAS,QAC1C,CCtBA,IAAIS,GAAY,kBAmBhB,SAASC,GAASV,EAAO,CACvB,OAAO,OAAOA,GAAS,UACpBQ,GAAaR,CAAK,GAAKW,GAAWX,CAAK,GAAKS,EACjD,CCjBA,SAASG,GAASC,EAAOC,EAAU,CAKjC,QAJIC,EAAQ,GACRC,EAASH,GAAS,KAAO,EAAIA,EAAM,OACnCI,EAAS,MAAMD,CAAM,EAElB,EAAED,EAAQC,GACfC,EAAOF,CAAK,EAAID,EAASD,EAAME,CAAK,EAAGA,EAAOF,CAAK,EAErD,OAAOI,CACT,CCKA,IAAIC,EAAU,MAAM,QCjBhBC,GAAW,IAGXC,GAAcC,GAASA,GAAO,UAAY,OAC1CC,GAAiBF,GAAcA,GAAY,SAAW,OAU1D,SAASG,GAAavB,EAAO,CAE3B,GAAI,OAAOA,GAAS,SAClB,OAAOA,EAET,GAAIkB,EAAQlB,CAAK,EAEf,OAAOY,GAASZ,EAAOuB,EAAY,EAAI,GAEzC,GAAIb,GAASV,CAAK,EAChB,OAAOsB,GAAiBA,GAAe,KAAKtB,CAAK,EAAI,GAEvD,IAAIiB,EAAUjB,EAAQ,GACtB,OAAQiB,GAAU,KAAQ,EAAIjB,GAAU,CAACmB,GAAY,KAAOF,CAC9D,CClBA,SAASO,GAASxB,EAAO,CACvB,OAAOA,CACT,CCdA,IAAIyB,GAAUC,GAAUC,GAAM,SAAS,ECDnCC,GAAe,OAAO,OAUtBC,GAAc,UAAW,CAC3B,SAASC,GAAS,CAAE,CACpB,OAAO,SAASC,EAAO,CACrB,GAAI,CAACC,GAASD,CAAK,EACjB,MAAO,GAET,GAAIH,GACF,OAAOA,GAAaG,CAAK,EAE3BD,EAAO,UAAYC,EACnB,IAAId,EAAS,IAAIa,EACjB,OAAAA,EAAO,UAAY,OACZb,CACX,CACA,ICfA,SAASgB,IAAO,CAEhB,CCNA,SAASC,GAAUC,EAAQtB,EAAO,CAChC,IAAIE,EAAQ,GACRC,EAASmB,EAAO,OAGpB,IADAtB,IAAUA,EAAQ,MAAMG,CAAM,GACvB,EAAED,EAAQC,GACfH,EAAME,CAAK,EAAIoB,EAAOpB,CAAK,EAE7B,OAAOF,CACT,CCfA,IAAIuB,GAAkB,UAAW,CAC/B,GAAI,CACF,IAAIC,EAAOX,GAAU,OAAQ,gBAAgB,EAC7C,OAAAW,EAAK,CAAE,EAAE,GAAI,CAAA,CAAE,EACRA,CACX,MAAc,CAAE,CAChB,ICCA,SAASC,GAAUzB,EAAOC,EAAU,CAIlC,QAHIC,EAAQ,GACRC,EAASH,GAAS,KAAO,EAAIA,EAAM,OAEhC,EAAEE,EAAQC,GACXF,EAASD,EAAME,CAAK,EAAGA,EAAOF,CAAK,IAAM,IAA7C,CAIF,OAAOA,CACT,CCRA,SAAS0B,GAAc1B,EAAO2B,EAAWC,EAAWC,EAAW,CAI7D,QAHI1B,EAASH,EAAM,OACfE,EAAQ0B,EAA6B,GAEX,EAAE1B,EAAQC,GACtC,GAAIwB,EAAU3B,EAAME,CAAK,EAAGA,EAAOF,CAAK,EACtC,OAAOE,EAGX,MAAO,EACT,CCdA,SAAS4B,GAAU3C,EAAO,CACxB,OAAOA,IAAUA,CACnB,CCCA,SAAS4C,GAAc/B,EAAOb,EAAOyC,EAAW,CAI9C,QAHI1B,EAAQ0B,EAAY,EACpBzB,EAASH,EAAM,OAEZ,EAAEE,EAAQC,GACf,GAAIH,EAAME,CAAK,IAAMf,EACnB,OAAOe,EAGX,MAAO,EACT,CCPA,SAAS8B,GAAYhC,EAAOb,EAAOyC,EAAW,CAC5C,OAAOzC,IAAUA,EACb4C,GAAc/B,EAAOb,EAAOyC,CAAS,EACrCF,GAAc1B,EAAO8B,GAAWF,CAAS,CAC/C,CCNA,SAASK,GAAcjC,EAAOb,EAAO,CACnC,IAAIgB,EAASH,GAAS,KAAO,EAAIA,EAAM,OACvC,MAAO,CAAC,CAACG,GAAU6B,GAAYhC,EAAOb,EAAO,CAAC,EAAI,EACpD,CCbA,IAAI+C,GAAmB,iBAGnBC,GAAW,mBAUf,SAASC,GAAQjD,EAAOgB,EAAQ,CAC9B,IAAIkC,EAAO,OAAOlD,EAClB,OAAAgB,EAASA,GAAiB+B,GAEnB,CAAC,CAAC/B,IACNkC,GAAQ,UACNA,GAAQ,UAAYF,GAAS,KAAKhD,CAAK,IACrCA,EAAQ,IAAMA,EAAQ,GAAK,GAAKA,EAAQgB,CACjD,CCXA,SAASmC,GAAgBrB,EAAQsB,EAAKpD,EAAO,CACvCoD,GAAO,aAAehB,GACxBA,GAAeN,EAAQsB,EAAK,CAC1B,aAAgB,GAChB,WAAc,GACd,MAASpD,EACT,SAAY,EAClB,CAAK,EAED8B,EAAOsB,CAAG,EAAIpD,CAElB,CClBA,IAAIqD,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eAYjC,SAASE,GAAYzB,EAAQsB,EAAKpD,EAAO,CACvC,IAAIwD,EAAW1B,EAAOsB,CAAG,GACrB,EAAEE,GAAe,KAAKxB,EAAQsB,CAAG,GAAKK,GAAGD,EAAUxD,CAAK,IACvDA,IAAU,QAAa,EAAEoD,KAAOtB,KACnCqB,GAAgBrB,EAAQsB,EAAKpD,CAAK,CAEtC,CCZA,SAAS0D,GAAWvB,EAAQwB,EAAO7B,EAAQ8B,EAAY,CACrD,IAAIC,EAAQ,CAAC/B,EACbA,IAAWA,EAAS,CAAA,GAKpB,QAHIf,EAAQ,GACRC,EAAS2C,EAAM,OAEZ,EAAE5C,EAAQC,GAAQ,CACvB,IAAIoC,EAAMO,EAAM5C,CAAK,EAEjB+C,EAEA,OAEAA,IAAa,SACfA,EAAW3B,EAAOiB,CAAG,GAEnBS,EACFV,GAAgBrB,EAAQsB,EAAKU,CAAQ,EAErCP,GAAYzB,EAAQsB,EAAKU,CAAQ,CAEpC,CACD,OAAOhC,CACT,CCpCA,IAAIiB,GAAmB,iBA4BvB,SAASgB,GAAS/D,EAAO,CACvB,OAAO,OAAOA,GAAS,UACrBA,EAAQ,IAAMA,EAAQ,GAAK,GAAKA,GAAS+C,EAC7C,CCJA,SAASiB,GAAYhE,EAAO,CAC1B,OAAOA,GAAS,MAAQ+D,GAAS/D,EAAM,MAAM,GAAK,CAACiE,GAAWjE,CAAK,CACrE,CC7BA,IAAIqD,GAAc,OAAO,UASzB,SAASa,GAAYlE,EAAO,CAC1B,IAAImE,EAAOnE,GAASA,EAAM,YACtB+B,EAAS,OAAOoC,GAAQ,YAAcA,EAAK,WAAcd,GAE7D,OAAOrD,IAAU+B,CACnB,CCNA,SAASqC,GAAUC,EAAGvD,EAAU,CAI9B,QAHIC,EAAQ,GACRE,EAAS,MAAMoD,CAAC,EAEb,EAAEtD,EAAQsD,GACfpD,EAAOF,CAAK,EAAID,EAASC,CAAK,EAEhC,OAAOE,CACT,CCbA,IAAIqD,GAAU,qBASd,SAASC,GAAgBvE,EAAO,CAC9B,OAAOQ,GAAaR,CAAK,GAAKW,GAAWX,CAAK,GAAKsE,EACrD,CCXA,IAAIjB,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eAG7BmB,GAAuBnB,GAAY,qBAoBnCoB,GAAcF,GAAgB,UAAW,CAAE,OAAO,SAAU,GAAI,EAAIA,GAAkB,SAASvE,EAAO,CACxG,OAAOQ,GAAaR,CAAK,GAAKsD,GAAe,KAAKtD,EAAO,QAAQ,GAC/D,CAACwE,GAAqB,KAAKxE,EAAO,QAAQ,CAC9C,ECpBA,SAAS0E,IAAY,CACnB,MAAO,EACT,CCXA,IAAIC,GAAc,OAAO,SAAW,UAAY,SAAW,CAAC,QAAQ,UAAY,QAG5EC,GAAaD,IAAe,OAAO,QAAU,UAAY,QAAU,CAAC,OAAO,UAAY,OAGvFE,GAAgBD,IAAcA,GAAW,UAAYD,GAGrDG,GAASD,GAAgBlD,GAAK,OAAS,OAGvCoD,GAAiBD,GAASA,GAAO,SAAW,OAmB5CE,GAAWD,IAAkBL,GC9B7BJ,GAAU,qBACVW,GAAW,iBACXC,GAAU,mBACVC,GAAU,gBACVC,GAAW,iBACXC,GAAU,oBACVC,GAAS,eACTC,GAAY,kBACZC,GAAY,kBACZC,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZC,GAAa,mBAEbC,GAAiB,uBACjBC,GAAc,oBACdC,GAAa,wBACbC,GAAa,wBACbC,GAAU,qBACVC,GAAW,sBACXC,GAAW,sBACXC,GAAW,sBACXC,GAAkB,6BAClBC,GAAY,uBACZC,GAAY,uBAGZC,EAAiB,CAAA,EACrBA,EAAeT,EAAU,EAAIS,EAAeR,EAAU,EACtDQ,EAAeP,EAAO,EAAIO,EAAeN,EAAQ,EACjDM,EAAeL,EAAQ,EAAIK,EAAeJ,EAAQ,EAClDI,EAAeH,EAAe,EAAIG,EAAeF,EAAS,EAC1DE,EAAeD,EAAS,EAAI,GAC5BC,EAAelC,EAAO,EAAIkC,EAAevB,EAAQ,EACjDuB,EAAeX,EAAc,EAAIW,EAAetB,EAAO,EACvDsB,EAAeV,EAAW,EAAIU,EAAerB,EAAO,EACpDqB,EAAepB,EAAQ,EAAIoB,EAAenB,EAAO,EACjDmB,EAAelB,EAAM,EAAIkB,EAAejB,EAAS,EACjDiB,EAAehB,EAAS,EAAIgB,EAAef,EAAS,EACpDe,EAAed,EAAM,EAAIc,EAAeb,EAAS,EACjDa,EAAeZ,EAAU,EAAI,GAS7B,SAASa,GAAiBzG,EAAO,CAC/B,OAAOQ,GAAaR,CAAK,GACvB+D,GAAS/D,EAAM,MAAM,GAAK,CAAC,CAACwG,EAAe7F,GAAWX,CAAK,CAAC,CAChE,CClDA,SAAS0G,GAAUrE,EAAM,CACvB,OAAO,SAASrC,EAAO,CACrB,OAAOqC,EAAKrC,CAAK,CACrB,CACA,CCRA,IAAI2E,GAAc,OAAO,SAAW,UAAY,SAAW,CAAC,QAAQ,UAAY,QAG5EC,GAAaD,IAAe,OAAO,QAAU,UAAY,QAAU,CAAC,OAAO,UAAY,OAGvFE,GAAgBD,IAAcA,GAAW,UAAYD,GAGrDgC,GAAc9B,IAAiB+B,GAAW,QAG1CC,GAAY,UAAW,CACzB,GAAI,CAEF,IAAIC,EAAQlC,IAAcA,GAAW,SAAWA,GAAW,QAAQ,MAAM,EAAE,MAE3E,OAAIkC,GAKGH,IAAeA,GAAY,SAAWA,GAAY,QAAQ,MAAM,CAC3E,MAAc,CAAE,CAChB,ICtBII,GAAmBF,IAAYA,GAAS,aAmBxCG,GAAeD,GAAmBL,GAAUK,EAAgB,EAAIN,GChBhEpD,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eAUjC,SAAS4D,GAAcjH,EAAOkH,EAAW,CACvC,IAAIC,EAAQjG,EAAQlB,CAAK,EACrBoH,EAAQ,CAACD,GAAS1C,GAAYzE,CAAK,EACnCqH,EAAS,CAACF,GAAS,CAACC,GAASpC,GAAShF,CAAK,EAC3CsH,EAAS,CAACH,GAAS,CAACC,GAAS,CAACC,GAAUL,GAAahH,CAAK,EAC1DuH,EAAcJ,GAASC,GAASC,GAAUC,EAC1CrG,EAASsG,EAAcnD,GAAUpE,EAAM,OAAQ,MAAM,EAAI,CAAE,EAC3DgB,EAASC,EAAO,OAEpB,QAASmC,KAAOpD,GACTkH,GAAa5D,GAAe,KAAKtD,EAAOoD,CAAG,IAC5C,EAAEmE,IAECnE,GAAO,UAENiE,IAAWjE,GAAO,UAAYA,GAAO,WAErCkE,IAAWlE,GAAO,UAAYA,GAAO,cAAgBA,GAAO,eAE7DH,GAAQG,EAAKpC,CAAM,KAExBC,EAAO,KAAKmC,CAAG,EAGnB,OAAOnC,CACT,CCtCA,SAASuG,GAAQnF,EAAMoF,EAAW,CAChC,OAAO,SAASC,EAAK,CACnB,OAAOrF,EAAKoF,EAAUC,CAAG,CAAC,CAC9B,CACA,CCTA,IAAIC,GAAaH,GAAQ,OAAO,KAAM,MAAM,ECCxCnE,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eASjC,SAASuE,GAAS9F,EAAQ,CACxB,GAAI,CAACoC,GAAYpC,CAAM,EACrB,OAAO6F,GAAW7F,CAAM,EAE1B,IAAIb,EAAS,CAAA,EACb,QAASmC,KAAO,OAAOtB,CAAM,EACvBwB,GAAe,KAAKxB,EAAQsB,CAAG,GAAKA,GAAO,eAC7CnC,EAAO,KAAKmC,CAAG,EAGnB,OAAOnC,CACT,CCKA,SAAS4G,GAAK/F,EAAQ,CACpB,OAAOkC,GAAYlC,CAAM,EAAImF,GAAcnF,CAAM,EAAI8F,GAAS9F,CAAM,CACtE,CCzBA,SAASgG,GAAahG,EAAQ,CAC5B,IAAIb,EAAS,CAAA,EACb,GAAIa,GAAU,KACZ,QAASsB,KAAO,OAAOtB,CAAM,EAC3Bb,EAAO,KAAKmC,CAAG,EAGnB,OAAOnC,CACT,CCZA,IAAIoC,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eASjC,SAAS0E,GAAWjG,EAAQ,CAC1B,GAAI,CAACE,GAASF,CAAM,EAClB,OAAOgG,GAAahG,CAAM,EAE5B,IAAIkG,EAAU9D,GAAYpC,CAAM,EAC5Bb,EAAS,CAAA,EAEb,QAASmC,KAAOtB,EACRsB,GAAO,gBAAkB4E,GAAW,CAAC1E,GAAe,KAAKxB,EAAQsB,CAAG,IACxEnC,EAAO,KAAKmC,CAAG,EAGnB,OAAOnC,CACT,CCHA,SAASgH,GAAOnG,EAAQ,CACtB,OAAOkC,GAAYlC,CAAM,EAAImF,GAAcnF,EAAQ,EAAI,EAAIiG,GAAWjG,CAAM,CAC9E,CCzBA,IAAIoG,GAAe,mDACfC,GAAgB,QAUpB,SAASC,GAAMpI,EAAO8B,EAAQ,CAC5B,GAAIZ,EAAQlB,CAAK,EACf,MAAO,GAET,IAAIkD,EAAO,OAAOlD,EAClB,OAAIkD,GAAQ,UAAYA,GAAQ,UAAYA,GAAQ,WAChDlD,GAAS,MAAQU,GAASV,CAAK,EAC1B,GAEFmI,GAAc,KAAKnI,CAAK,GAAK,CAACkI,GAAa,KAAKlI,CAAK,GACzD8B,GAAU,MAAQ9B,KAAS,OAAO8B,CAAM,CAC7C,CCvBA,IAAIuG,GAAmB,IAUvB,SAASC,GAAcjG,EAAM,CAC3B,IAAIpB,EAASsH,GAAQlG,EAAM,SAASe,EAAK,CACvC,OAAIoF,EAAM,OAASH,IACjBG,EAAM,MAAK,EAENpF,CACX,CAAG,EAEGoF,EAAQvH,EAAO,MACnB,OAAOA,CACT,CCpBA,IAAIwH,GAAa,mGAGbC,GAAe,WASfC,GAAeL,GAAc,SAASM,EAAQ,CAChD,IAAI3H,EAAS,CAAA,EACb,OAAI2H,EAAO,WAAW,CAAC,IAAM,IAC3B3H,EAAO,KAAK,EAAE,EAEhB2H,EAAO,QAAQH,GAAY,SAASI,EAAOC,EAAQC,EAAOC,EAAW,CACnE/H,EAAO,KAAK8H,EAAQC,EAAU,QAAQN,GAAc,IAAI,EAAKI,GAAUD,CAAM,CACjF,CAAG,EACM5H,CACT,CAAC,ECDD,SAASgI,GAASjJ,EAAO,CACvB,OAAOA,GAAS,KAAO,GAAKuB,GAAavB,CAAK,CAChD,CCZA,SAASkJ,GAASlJ,EAAO8B,EAAQ,CAC/B,OAAIZ,EAAQlB,CAAK,EACRA,EAEFoI,GAAMpI,EAAO8B,CAAM,EAAI,CAAC9B,CAAK,EAAI2I,GAAaM,GAASjJ,CAAK,CAAC,CACtE,CCfA,IAAImB,GAAW,IASf,SAASgI,GAAMnJ,EAAO,CACpB,GAAI,OAAOA,GAAS,UAAYU,GAASV,CAAK,EAC5C,OAAOA,EAET,IAAIiB,EAAUjB,EAAQ,GACtB,OAAQiB,GAAU,KAAQ,EAAIjB,GAAU,CAACmB,GAAY,KAAOF,CAC9D,CCPA,SAASmI,GAAQtH,EAAQuH,EAAM,CAC7BA,EAAOH,GAASG,EAAMvH,CAAM,EAK5B,QAHIf,EAAQ,EACRC,EAASqI,EAAK,OAEXvH,GAAU,MAAQf,EAAQC,GAC/Bc,EAASA,EAAOqH,GAAME,EAAKtI,GAAO,CAAC,CAAC,EAEtC,OAAQA,GAASA,GAASC,EAAUc,EAAS,MAC/C,CCMA,SAASwH,GAAIxH,EAAQuH,EAAME,EAAc,CACvC,IAAItI,EAASa,GAAU,KAAO,OAAYsH,GAAQtH,EAAQuH,CAAI,EAC9D,OAAOpI,IAAW,OAAYsI,EAAetI,CAC/C,CCtBA,SAASuI,GAAU3I,EAAO4I,EAAQ,CAKhC,QAJI1I,EAAQ,GACRC,EAASyI,EAAO,OAChBC,EAAS7I,EAAM,OAEZ,EAAEE,EAAQC,GACfH,EAAM6I,EAAS3I,CAAK,EAAI0I,EAAO1I,CAAK,EAEtC,OAAOF,CACT,CCdA,IAAI8I,GAAenC,GAAQ,OAAO,eAAgB,MAAM,ECMxD,SAASoC,IAAa,CACpB,KAAK,SAAW,IAAIC,GACpB,KAAK,KAAO,CACd,CCHA,SAASC,GAAY1G,EAAK,CACxB,IAAI2G,EAAO,KAAK,SACZ9I,EAAS8I,EAAK,OAAU3G,CAAG,EAE/B,YAAK,KAAO2G,EAAK,KACV9I,CACT,CCNA,SAAS+I,GAAS5G,EAAK,CACrB,OAAO,KAAK,SAAS,IAAIA,CAAG,CAC9B,CCFA,SAAS6G,GAAS7G,EAAK,CACrB,OAAO,KAAK,SAAS,IAAIA,CAAG,CAC9B,CCNA,IAAI8G,GAAmB,IAYvB,SAASC,GAAS/G,EAAKpD,EAAO,CAC5B,IAAI+J,EAAO,KAAK,SAChB,GAAIA,aAAgBF,GAAW,CAC7B,IAAIO,EAAQL,EAAK,SACjB,GAAI,CAACM,IAAQD,EAAM,OAASF,GAAmB,EAC7C,OAAAE,EAAM,KAAK,CAAChH,EAAKpD,CAAK,CAAC,EACvB,KAAK,KAAO,EAAE+J,EAAK,KACZ,KAETA,EAAO,KAAK,SAAW,IAAIO,GAASF,CAAK,CAC1C,CACD,OAAAL,EAAK,IAAI3G,EAAKpD,CAAK,EACnB,KAAK,KAAO+J,EAAK,KACV,IACT,CCjBA,SAASQ,EAAMC,EAAS,CACtB,IAAIT,EAAO,KAAK,SAAW,IAAIF,GAAUW,CAAO,EAChD,KAAK,KAAOT,EAAK,IACnB,CAGAQ,EAAM,UAAU,MAAQX,GACxBW,EAAM,UAAU,OAAYT,GAC5BS,EAAM,UAAU,IAAMP,GACtBO,EAAM,UAAU,IAAMN,GACtBM,EAAM,UAAU,IAAMJ,GCZtB,SAASM,GAAW3I,EAAQK,EAAQ,CAClC,OAAOL,GAAU4B,GAAWvB,EAAQ0F,GAAK1F,CAAM,EAAGL,CAAM,CAC1D,CCFA,SAAS4I,GAAa5I,EAAQK,EAAQ,CACpC,OAAOL,GAAU4B,GAAWvB,EAAQ8F,GAAO9F,CAAM,EAAGL,CAAM,CAC5D,CCXA,IAAI6C,GAAc,OAAO,SAAW,UAAY,SAAW,CAAC,QAAQ,UAAY,QAG5EC,GAAaD,IAAe,OAAO,QAAU,UAAY,QAAU,CAAC,OAAO,UAAY,OAGvFE,GAAgBD,IAAcA,GAAW,UAAYD,GAGrDG,GAASD,GAAgBlD,GAAK,OAAS,OACvCgJ,GAAc7F,GAASA,GAAO,YAAc,OAUhD,SAAS8F,GAAYC,EAAQC,EAAQ,CACnC,GAAIA,EACF,OAAOD,EAAO,QAEhB,IAAI7J,EAAS6J,EAAO,OAChB5J,EAAS0J,GAAcA,GAAY3J,CAAM,EAAI,IAAI6J,EAAO,YAAY7J,CAAM,EAE9E,OAAA6J,EAAO,KAAK5J,CAAM,EACXA,CACT,CCvBA,SAAS8J,GAAYlK,EAAO2B,EAAW,CAMrC,QALIzB,EAAQ,GACRC,EAASH,GAAS,KAAO,EAAIA,EAAM,OACnCmK,EAAW,EACX/J,EAAS,CAAA,EAEN,EAAEF,EAAQC,GAAQ,CACvB,IAAIhB,EAAQa,EAAME,CAAK,EACnByB,EAAUxC,EAAOe,EAAOF,CAAK,IAC/BI,EAAO+J,GAAU,EAAIhL,EAExB,CACD,OAAOiB,CACT,CCJA,SAASgK,IAAY,CACnB,MAAO,EACT,CChBA,IAAI5H,GAAc,OAAO,UAGrBmB,GAAuBnB,GAAY,qBAGnC6H,GAAmB,OAAO,sBAS1BC,GAAcD,GAA+B,SAASpJ,EAAQ,CAChE,OAAIA,GAAU,KACL,IAETA,EAAS,OAAOA,CAAM,EACfiJ,GAAYG,GAAiBpJ,CAAM,EAAG,SAASsJ,EAAQ,CAC5D,OAAO5G,GAAqB,KAAK1C,EAAQsJ,CAAM,CACnD,CAAG,EACH,EARqCH,GCRrC,SAASI,GAAYlJ,EAAQL,EAAQ,CACnC,OAAO4B,GAAWvB,EAAQgJ,GAAWhJ,CAAM,EAAGL,CAAM,CACtD,CCPA,IAAIoJ,GAAmB,OAAO,sBAS1BI,GAAgBJ,GAA+B,SAASpJ,EAAQ,CAElE,QADIb,EAAS,CAAA,EACNa,GACL0H,GAAUvI,EAAQkK,GAAWrJ,CAAM,CAAC,EACpCA,EAAS6H,GAAa7H,CAAM,EAE9B,OAAOb,CACT,EAPuCgK,GCJvC,SAASM,GAAcpJ,EAAQL,EAAQ,CACrC,OAAO4B,GAAWvB,EAAQmJ,GAAanJ,CAAM,EAAGL,CAAM,CACxD,CCCA,SAAS0J,GAAe1J,EAAQ2J,EAAUC,EAAa,CACrD,IAAIzK,EAASwK,EAAS3J,CAAM,EAC5B,OAAOZ,EAAQY,CAAM,EAAIb,EAASuI,GAAUvI,EAAQyK,EAAY5J,CAAM,CAAC,CACzE,CCNA,SAAS6J,GAAW7J,EAAQ,CAC1B,OAAO0J,GAAe1J,EAAQ+F,GAAMsD,EAAU,CAChD,CCDA,SAASS,GAAa9J,EAAQ,CAC5B,OAAO0J,GAAe1J,EAAQmG,GAAQqD,EAAY,CACpD,CCVA,IAAIO,GAAWnK,GAAUC,GAAM,UAAU,ECArCmK,GAAUpK,GAAUC,GAAM,SAAS,ECAnCoK,GAAMrK,GAAUC,GAAM,KAAK,ECK3B2D,GAAS,eACTE,GAAY,kBACZwG,GAAa,mBACbtG,GAAS,eACTE,GAAa,mBAEbE,GAAc,oBAGdmG,GAAqBC,GAASL,EAAQ,EACtCM,GAAgBD,GAAS7B,EAAG,EAC5B+B,GAAoBF,GAASJ,EAAO,EACpCO,GAAgBH,GAASH,EAAG,EAC5BO,GAAoBJ,GAASzK,EAAO,EASpC8K,EAAS5L,IAGRkL,IAAYU,EAAO,IAAIV,GAAS,IAAI,YAAY,CAAC,CAAC,CAAC,GAAK/F,IACxDuE,IAAOkC,EAAO,IAAIlC,EAAG,GAAK/E,IAC1BwG,IAAWS,EAAOT,GAAQ,QAAS,CAAA,GAAKE,IACxCD,IAAOQ,EAAO,IAAIR,EAAG,GAAKrG,IAC1BjE,IAAW8K,EAAO,IAAI9K,EAAO,GAAKmE,MACrC2G,EAAS,SAASvM,EAAO,CACvB,IAAIiB,EAASN,GAAWX,CAAK,EACzBmE,EAAOlD,GAAUuE,GAAYxF,EAAM,YAAc,OACjDwM,EAAarI,EAAO+H,GAAS/H,CAAI,EAAI,GAEzC,GAAIqI,EACF,OAAQA,EAAU,CAChB,KAAKP,GAAoB,OAAOnG,GAChC,KAAKqG,GAAe,OAAO7G,GAC3B,KAAK8G,GAAmB,OAAOJ,GAC/B,KAAKK,GAAe,OAAO3G,GAC3B,KAAK4G,GAAmB,OAAO1G,EAChC,CAEH,OAAO3E,CACX,GCrDA,IAAIoC,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eASjC,SAASoJ,GAAe5L,EAAO,CAC7B,IAAIG,EAASH,EAAM,OACfI,EAAS,IAAIJ,EAAM,YAAYG,CAAM,EAGzC,OAAIA,GAAU,OAAOH,EAAM,CAAC,GAAK,UAAYyC,GAAe,KAAKzC,EAAO,OAAO,IAC7EI,EAAO,MAAQJ,EAAM,MACrBI,EAAO,MAAQJ,EAAM,OAEhBI,CACT,CCpBA,IAAIyL,GAAa/K,GAAK,WCMtB,SAASgL,GAAiBC,EAAa,CACrC,IAAI3L,EAAS,IAAI2L,EAAY,YAAYA,EAAY,UAAU,EAC/D,WAAIF,GAAWzL,CAAM,EAAE,IAAI,IAAIyL,GAAWE,CAAW,CAAC,EAC/C3L,CACT,CCHA,SAAS4L,GAAcC,EAAUhC,EAAQ,CACvC,IAAID,EAASC,EAAS6B,GAAiBG,EAAS,MAAM,EAAIA,EAAS,OACnE,OAAO,IAAIA,EAAS,YAAYjC,EAAQiC,EAAS,WAAYA,EAAS,UAAU,CAClF,CCZA,IAAIC,GAAU,OASd,SAASC,GAAYC,EAAQ,CAC3B,IAAIhM,EAAS,IAAIgM,EAAO,YAAYA,EAAO,OAAQF,GAAQ,KAAKE,CAAM,CAAC,EACvE,OAAAhM,EAAO,UAAYgM,EAAO,UACnBhM,CACT,CCXA,IAAIG,GAAcC,GAASA,GAAO,UAAY,OAC1C6L,GAAgB9L,GAAcA,GAAY,QAAU,OASxD,SAAS+L,GAAY/B,EAAQ,CAC3B,OAAO8B,GAAgB,OAAOA,GAAc,KAAK9B,CAAM,CAAC,EAAI,EAC9D,CCLA,SAASgC,GAAgBC,EAAYvC,EAAQ,CAC3C,IAAID,EAASC,EAAS6B,GAAiBU,EAAW,MAAM,EAAIA,EAAW,OACvE,OAAO,IAAIA,EAAW,YAAYxC,EAAQwC,EAAW,WAAYA,EAAW,MAAM,CACpF,CCNA,IAAInI,GAAU,mBACVC,GAAU,gBACVG,GAAS,eACTC,GAAY,kBACZE,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZlF,GAAY,kBAEZoF,GAAiB,uBACjBC,GAAc,oBACdC,GAAa,wBACbC,GAAa,wBACbC,GAAU,qBACVC,GAAW,sBACXC,GAAW,sBACXC,GAAW,sBACXC,GAAkB,6BAClBC,GAAY,uBACZC,GAAY,uBAchB,SAAS+G,GAAexL,EAAQyL,EAAKzC,EAAQ,CAC3C,IAAI3G,EAAOrC,EAAO,YAClB,OAAQyL,EAAG,CACT,KAAK1H,GACH,OAAO8G,GAAiB7K,CAAM,EAEhC,KAAKoD,GACL,KAAKC,GACH,OAAO,IAAIhB,EAAK,CAACrC,CAAM,EAEzB,KAAKgE,GACH,OAAO+G,GAAc/K,EAAQgJ,CAAM,EAErC,KAAK/E,GAAY,KAAKC,GACtB,KAAKC,GAAS,KAAKC,GAAU,KAAKC,GAClC,KAAKC,GAAU,KAAKC,GAAiB,KAAKC,GAAW,KAAKC,GACxD,OAAO6G,GAAgBtL,EAAQgJ,CAAM,EAEvC,KAAKxF,GACH,OAAO,IAAInB,EAEb,KAAKoB,GACL,KAAKI,GACH,OAAO,IAAIxB,EAAKrC,CAAM,EAExB,KAAK2D,GACH,OAAOuH,GAAYlL,CAAM,EAE3B,KAAK4D,GACH,OAAO,IAAIvB,EAEb,KAAK1D,GACH,OAAO0M,GAAYrL,CAAM,CAC5B,CACH,CC/DA,SAAS0L,GAAgB1L,EAAQ,CAC/B,OAAQ,OAAOA,EAAO,aAAe,YAAc,CAACoC,GAAYpC,CAAM,EAClED,GAAW8H,GAAa7H,CAAM,CAAC,EAC/B,EACN,CCXA,IAAIwD,GAAS,eASb,SAASmI,GAAUzN,EAAO,CACxB,OAAOQ,GAAaR,CAAK,GAAKuM,EAAOvM,CAAK,GAAKsF,EACjD,CCVA,IAAIoI,GAAY7G,IAAYA,GAAS,MAmBjC8G,GAAQD,GAAYhH,GAAUgH,EAAS,EAAID,GCpB3C/H,GAAS,eASb,SAASkI,GAAU5N,EAAO,CACxB,OAAOQ,GAAaR,CAAK,GAAKuM,EAAOvM,CAAK,GAAK0F,EACjD,CCVA,IAAImI,GAAYhH,IAAYA,GAAS,MAmBjCiH,GAAQD,GAAYnH,GAAUmH,EAAS,EAAID,GCA3CG,GAAkB,EAClBC,GAAkB,EAClBC,GAAqB,EAGrB3J,GAAU,qBACVW,GAAW,iBACXC,GAAU,mBACVC,GAAU,gBACVC,GAAW,iBACXC,GAAU,oBACV6I,GAAS,6BACT5I,GAAS,eACTC,GAAY,kBACZC,GAAY,kBACZC,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZlF,GAAY,kBACZmF,GAAa,mBAEbC,GAAiB,uBACjBC,GAAc,oBACdC,GAAa,wBACbC,GAAa,wBACbC,GAAU,qBACVC,GAAW,sBACXC,GAAW,sBACXC,GAAW,sBACXC,GAAkB,6BAClBC,GAAY,uBACZC,GAAY,uBAGZ4H,EAAgB,CAAA,EACpBA,EAAc7J,EAAO,EAAI6J,EAAclJ,EAAQ,EAC/CkJ,EAActI,EAAc,EAAIsI,EAAcrI,EAAW,EACzDqI,EAAcjJ,EAAO,EAAIiJ,EAAchJ,EAAO,EAC9CgJ,EAAcpI,EAAU,EAAIoI,EAAcnI,EAAU,EACpDmI,EAAclI,EAAO,EAAIkI,EAAcjI,EAAQ,EAC/CiI,EAAchI,EAAQ,EAAIgI,EAAc7I,EAAM,EAC9C6I,EAAc5I,EAAS,EAAI4I,EAAc3I,EAAS,EAClD2I,EAAc1I,EAAS,EAAI0I,EAAczI,EAAM,EAC/CyI,EAAcxI,EAAS,EAAIwI,EAAc1N,EAAS,EAClD0N,EAAc/H,EAAQ,EAAI+H,EAAc9H,EAAe,EACvD8H,EAAc7H,EAAS,EAAI6H,EAAc5H,EAAS,EAAI,GACtD4H,EAAc/I,EAAQ,EAAI+I,EAAc9I,EAAO,EAC/C8I,EAAcvI,EAAU,EAAI,GAkB5B,SAASwI,GAAUpO,EAAOqO,EAASzK,EAAYR,EAAKtB,EAAQwM,EAAO,CACjE,IAAIrN,EACA6J,EAASuD,EAAUN,GACnBQ,EAASF,EAAUL,GACnBQ,EAASH,EAAUJ,GAKvB,GAAIhN,IAAW,OACb,OAAOA,EAET,GAAI,CAACe,GAAShC,CAAK,EACjB,OAAOA,EAET,IAAImH,EAAQjG,EAAQlB,CAAK,EACzB,GAAImH,GAEF,GADAlG,EAASwL,GAAezM,CAAK,EACzB,CAAC8K,EACH,OAAO5I,GAAUlC,EAAOiB,CAAM,MAE3B,CACL,IAAIsM,EAAMhB,EAAOvM,CAAK,EAClByO,EAASlB,GAAOlI,IAAWkI,GAAOW,GAEtC,GAAIlJ,GAAShF,CAAK,EAChB,OAAO4K,GAAY5K,EAAO8K,CAAM,EAElC,GAAIyC,GAAO/H,IAAa+H,GAAOjJ,IAAYmK,GAAU,CAAC3M,GAEpD,GADAb,EAAUsN,GAAUE,EAAU,CAAA,EAAKjB,GAAgBxN,CAAK,EACpD,CAAC8K,EACH,OAAOyD,EACHhD,GAAcvL,EAAO0K,GAAazJ,EAAQjB,CAAK,CAAC,EAChDqL,GAAYrL,EAAOyK,GAAWxJ,EAAQjB,CAAK,CAAC,MAE7C,CACL,GAAI,CAACmO,EAAcZ,CAAG,EACpB,OAAOzL,EAAS9B,EAAQ,GAE1BiB,EAASqM,GAAetN,EAAOuN,EAAKzC,CAAM,CAC3C,CACF,CAEDwD,IAAUA,EAAQ,IAAI/D,GACtB,IAAImE,EAAUJ,EAAM,IAAItO,CAAK,EAC7B,GAAI0O,EACF,OAAOA,EAETJ,EAAM,IAAItO,EAAOiB,CAAM,EAEnB6M,GAAM9N,CAAK,EACbA,EAAM,QAAQ,SAAS2O,EAAU,CAC/B1N,EAAO,IAAImN,GAAUO,EAAUN,EAASzK,EAAY+K,EAAU3O,EAAOsO,CAAK,CAAC,CACjF,CAAK,EACQX,GAAM3N,CAAK,GACpBA,EAAM,QAAQ,SAAS2O,EAAUvL,EAAK,CACpCnC,EAAO,IAAImC,EAAKgL,GAAUO,EAAUN,EAASzK,EAAYR,EAAKpD,EAAOsO,CAAK,CAAC,CACjF,CAAK,EAGH,IAAI7C,EAAW+C,EACVD,EAAS3C,GAAeD,GACxB4C,EAAStG,GAASJ,GAEnBlE,EAAQwD,EAAQ,OAAYsE,EAASzL,CAAK,EAC9C,OAAAsC,GAAUqB,GAAS3D,EAAO,SAAS2O,EAAUvL,EAAK,CAC5CO,IACFP,EAAMuL,EACNA,EAAW3O,EAAMoD,CAAG,GAGtBG,GAAYtC,EAAQmC,EAAKgL,GAAUO,EAAUN,EAASzK,EAAYR,EAAKpD,EAAOsO,CAAK,CAAC,CACxF,CAAG,EACMrN,CACT,CChKA,IAAIgN,GAAqB,EA4BzB,SAASW,GAAM5O,EAAO,CACpB,OAAOoO,GAAUpO,EAAOiO,EAAkB,CAC5C,CChCA,IAAIY,GAAiB,4BAYrB,SAASC,GAAY9O,EAAO,CAC1B,YAAK,SAAS,IAAIA,EAAO6O,EAAc,EAChC,IACT,CCPA,SAASE,GAAY/O,EAAO,CAC1B,OAAO,KAAK,SAAS,IAAIA,CAAK,CAChC,CCCA,SAASgP,GAASvF,EAAQ,CACxB,IAAI1I,EAAQ,GACRC,EAASyI,GAAU,KAAO,EAAIA,EAAO,OAGzC,IADA,KAAK,SAAW,IAAIa,GACb,EAAEvJ,EAAQC,GACf,KAAK,IAAIyI,EAAO1I,CAAK,CAAC,CAE1B,CAGAiO,GAAS,UAAU,IAAMA,GAAS,UAAU,KAAOF,GACnDE,GAAS,UAAU,IAAMD,GCdzB,SAASE,GAAUpO,EAAO2B,EAAW,CAInC,QAHIzB,EAAQ,GACRC,EAASH,GAAS,KAAO,EAAIA,EAAM,OAEhC,EAAEE,EAAQC,GACf,GAAIwB,EAAU3B,EAAME,CAAK,EAAGA,EAAOF,CAAK,EACtC,MAAO,GAGX,MAAO,EACT,CCZA,SAASqO,GAAS1G,EAAOpF,EAAK,CAC5B,OAAOoF,EAAM,IAAIpF,CAAG,CACtB,CCLA,IAAI+L,GAAuB,EACvBC,GAAyB,EAe7B,SAASC,GAAYxO,EAAOyO,EAAOjB,EAASzK,EAAY2L,EAAWjB,EAAO,CACxE,IAAIkB,EAAYnB,EAAUc,GACtBM,EAAY5O,EAAM,OAClB6O,EAAYJ,EAAM,OAEtB,GAAIG,GAAaC,GAAa,EAAEF,GAAaE,EAAYD,GACvD,MAAO,GAGT,IAAIE,EAAarB,EAAM,IAAIzN,CAAK,EAC5B+O,EAAatB,EAAM,IAAIgB,CAAK,EAChC,GAAIK,GAAcC,EAChB,OAAOD,GAAcL,GAASM,GAAc/O,EAE9C,IAAIE,EAAQ,GACRE,EAAS,GACT4O,EAAQxB,EAAUe,GAA0B,IAAIJ,GAAW,OAM/D,IAJAV,EAAM,IAAIzN,EAAOyO,CAAK,EACtBhB,EAAM,IAAIgB,EAAOzO,CAAK,EAGf,EAAEE,EAAQ0O,GAAW,CAC1B,IAAIK,EAAWjP,EAAME,CAAK,EACtBgP,EAAWT,EAAMvO,CAAK,EAE1B,GAAI6C,EACF,IAAIoM,EAAWR,EACX5L,EAAWmM,EAAUD,EAAU/O,EAAOuO,EAAOzO,EAAOyN,CAAK,EACzD1K,EAAWkM,EAAUC,EAAUhP,EAAOF,EAAOyO,EAAOhB,CAAK,EAE/D,GAAI0B,IAAa,OAAW,CAC1B,GAAIA,EACF,SAEF/O,EAAS,GACT,KACD,CAED,GAAI4O,GACF,GAAI,CAACZ,GAAUK,EAAO,SAASS,EAAUE,EAAU,CAC7C,GAAI,CAACf,GAASW,EAAMI,CAAQ,IACvBH,IAAaC,GAAYR,EAAUO,EAAUC,EAAU1B,EAASzK,EAAY0K,CAAK,GACpF,OAAOuB,EAAK,KAAKI,CAAQ,CAEvC,CAAW,EAAG,CACNhP,EAAS,GACT,KACD,UACQ,EACL6O,IAAaC,GACXR,EAAUO,EAAUC,EAAU1B,EAASzK,EAAY0K,CAAK,GACzD,CACLrN,EAAS,GACT,KACD,CACF,CACD,OAAAqN,EAAM,OAAUzN,CAAK,EACrByN,EAAM,OAAUgB,CAAK,EACdrO,CACT,CC1EA,SAASiP,GAAWC,EAAK,CACvB,IAAIpP,EAAQ,GACRE,EAAS,MAAMkP,EAAI,IAAI,EAE3B,OAAAA,EAAI,QAAQ,SAASnQ,EAAOoD,EAAK,CAC/BnC,EAAO,EAAEF,CAAK,EAAI,CAACqC,EAAKpD,CAAK,CACjC,CAAG,EACMiB,CACT,CCRA,SAASmP,GAAWC,EAAK,CACvB,IAAItP,EAAQ,GACRE,EAAS,MAAMoP,EAAI,IAAI,EAE3B,OAAAA,EAAI,QAAQ,SAASrQ,EAAO,CAC1BiB,EAAO,EAAEF,CAAK,EAAIf,CACtB,CAAG,EACMiB,CACT,CCPA,IAAIkO,GAAuB,EACvBC,GAAyB,EAGzBlK,GAAU,mBACVC,GAAU,gBACVC,GAAW,iBACXE,GAAS,eACTC,GAAY,kBACZE,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZlF,GAAY,kBAEZoF,GAAiB,uBACjBC,GAAc,oBAGd1E,GAAcC,GAASA,GAAO,UAAY,OAC1C6L,GAAgB9L,GAAcA,GAAY,QAAU,OAmBxD,SAASkP,GAAWxO,EAAQwN,EAAO/B,EAAKc,EAASzK,EAAY2L,EAAWjB,EAAO,CAC7E,OAAQf,EAAG,CACT,KAAKzH,GACH,GAAKhE,EAAO,YAAcwN,EAAM,YAC3BxN,EAAO,YAAcwN,EAAM,WAC9B,MAAO,GAETxN,EAASA,EAAO,OAChBwN,EAAQA,EAAM,OAEhB,KAAKzJ,GACH,MAAK,EAAA/D,EAAO,YAAcwN,EAAM,YAC5B,CAACC,EAAU,IAAI7C,GAAW5K,CAAM,EAAG,IAAI4K,GAAW4C,CAAK,CAAC,GAK9D,KAAKpK,GACL,KAAKC,GACL,KAAKI,GAGH,OAAO9B,GAAG,CAAC3B,EAAQ,CAACwN,CAAK,EAE3B,KAAKlK,GACH,OAAOtD,EAAO,MAAQwN,EAAM,MAAQxN,EAAO,SAAWwN,EAAM,QAE9D,KAAK7J,GACL,KAAKE,GAIH,OAAO7D,GAAWwN,EAAQ,GAE5B,KAAKhK,GACH,IAAIiL,EAAUL,GAEhB,KAAKxK,GACH,IAAI8J,EAAYnB,EAAUc,GAG1B,GAFAoB,IAAYA,EAAUH,IAElBtO,EAAO,MAAQwN,EAAM,MAAQ,CAACE,EAChC,MAAO,GAGT,IAAId,EAAUJ,EAAM,IAAIxM,CAAM,EAC9B,GAAI4M,EACF,OAAOA,GAAWY,EAEpBjB,GAAWe,GAGXd,EAAM,IAAIxM,EAAQwN,CAAK,EACvB,IAAIrO,EAASoO,GAAYkB,EAAQzO,CAAM,EAAGyO,EAAQjB,CAAK,EAAGjB,EAASzK,EAAY2L,EAAWjB,CAAK,EAC/F,OAAAA,EAAM,OAAUxM,CAAM,EACfb,EAET,KAAKR,GACH,GAAIyM,GACF,OAAOA,GAAc,KAAKpL,CAAM,GAAKoL,GAAc,KAAKoC,CAAK,CAElE,CACD,MAAO,EACT,CC1GA,IAAIH,GAAuB,EAGvB9L,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eAejC,SAASmN,GAAa1O,EAAQwN,EAAOjB,EAASzK,EAAY2L,EAAWjB,EAAO,CAC1E,IAAIkB,EAAYnB,EAAUc,GACtBsB,EAAW9E,GAAW7J,CAAM,EAC5B4O,EAAYD,EAAS,OACrBE,EAAWhF,GAAW2D,CAAK,EAC3BI,EAAYiB,EAAS,OAEzB,GAAID,GAAahB,GAAa,CAACF,EAC7B,MAAO,GAGT,QADIzO,EAAQ2P,EACL3P,KAAS,CACd,IAAIqC,EAAMqN,EAAS1P,CAAK,EACxB,GAAI,EAAEyO,EAAYpM,KAAOkM,EAAQhM,GAAe,KAAKgM,EAAOlM,CAAG,GAC7D,MAAO,EAEV,CAED,IAAIwN,EAAatC,EAAM,IAAIxM,CAAM,EAC7B8N,EAAatB,EAAM,IAAIgB,CAAK,EAChC,GAAIsB,GAAchB,EAChB,OAAOgB,GAActB,GAASM,GAAc9N,EAE9C,IAAIb,EAAS,GACbqN,EAAM,IAAIxM,EAAQwN,CAAK,EACvBhB,EAAM,IAAIgB,EAAOxN,CAAM,EAGvB,QADI+O,EAAWrB,EACR,EAAEzO,EAAQ2P,GAAW,CAC1BtN,EAAMqN,EAAS1P,CAAK,EACpB,IAAIyC,EAAW1B,EAAOsB,CAAG,EACrB2M,EAAWT,EAAMlM,CAAG,EAExB,GAAIQ,EACF,IAAIoM,EAAWR,EACX5L,EAAWmM,EAAUvM,EAAUJ,EAAKkM,EAAOxN,EAAQwM,CAAK,EACxD1K,EAAWJ,EAAUuM,EAAU3M,EAAKtB,EAAQwN,EAAOhB,CAAK,EAG9D,GAAI,EAAE0B,IAAa,OACVxM,IAAauM,GAAYR,EAAU/L,EAAUuM,EAAU1B,EAASzK,EAAY0K,CAAK,EAClF0B,GACD,CACL/O,EAAS,GACT,KACD,CACD4P,IAAaA,EAAWzN,GAAO,cAChC,CACD,GAAInC,GAAU,CAAC4P,EAAU,CACvB,IAAIC,EAAUhP,EAAO,YACjBiP,EAAUzB,EAAM,YAGhBwB,GAAWC,GACV,gBAAiBjP,GAAU,gBAAiBwN,GAC7C,EAAE,OAAOwB,GAAW,YAAcA,aAAmBA,GACnD,OAAOC,GAAW,YAAcA,aAAmBA,KACvD9P,EAAS,GAEZ,CACD,OAAAqN,EAAM,OAAUxM,CAAM,EACtBwM,EAAM,OAAUgB,CAAK,EACdrO,CACT,CC7EA,IAAIkO,GAAuB,EAGvB7K,GAAU,qBACVW,GAAW,iBACXO,GAAY,kBAGZnC,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eAgBjC,SAAS2N,GAAgBlP,EAAQwN,EAAOjB,EAASzK,EAAY2L,EAAWjB,EAAO,CAC7E,IAAI2C,EAAW/P,EAAQY,CAAM,EACzBoP,EAAWhQ,EAAQoO,CAAK,EACxB6B,EAASF,EAAWhM,GAAWsH,EAAOzK,CAAM,EAC5CsP,EAASF,EAAWjM,GAAWsH,EAAO+C,CAAK,EAE/C6B,EAASA,GAAU7M,GAAUkB,GAAY2L,EACzCC,EAASA,GAAU9M,GAAUkB,GAAY4L,EAEzC,IAAIC,EAAWF,GAAU3L,GACrB8L,EAAWF,GAAU5L,GACrB+L,EAAYJ,GAAUC,EAE1B,GAAIG,GAAavM,GAASlD,CAAM,EAAG,CACjC,GAAI,CAACkD,GAASsK,CAAK,EACjB,MAAO,GAET2B,EAAW,GACXI,EAAW,EACZ,CACD,GAAIE,GAAa,CAACF,EAChB,OAAA/C,IAAUA,EAAQ,IAAI/D,GACd0G,GAAYjK,GAAalF,CAAM,EACnCuN,GAAYvN,EAAQwN,EAAOjB,EAASzK,EAAY2L,EAAWjB,CAAK,EAChEgC,GAAWxO,EAAQwN,EAAO6B,EAAQ9C,EAASzK,EAAY2L,EAAWjB,CAAK,EAE7E,GAAI,EAAED,EAAUc,IAAuB,CACrC,IAAIqC,EAAeH,GAAY/N,GAAe,KAAKxB,EAAQ,aAAa,EACpE2P,EAAeH,GAAYhO,GAAe,KAAKgM,EAAO,aAAa,EAEvE,GAAIkC,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAe1P,EAAO,MAAO,EAAGA,EAC/C6P,EAAeF,EAAenC,EAAM,MAAK,EAAKA,EAElD,OAAAhB,IAAUA,EAAQ,IAAI/D,GACfgF,EAAUmC,EAAcC,EAActD,EAASzK,EAAY0K,CAAK,CACxE,CACF,CACD,OAAKiD,GAGLjD,IAAUA,EAAQ,IAAI/D,GACfiG,GAAa1O,EAAQwN,EAAOjB,EAASzK,EAAY2L,EAAWjB,CAAK,GAH/D,EAIX,CC/DA,SAASsD,GAAY5R,EAAOsP,EAAOjB,EAASzK,EAAY0K,EAAO,CAC7D,OAAItO,IAAUsP,EACL,GAELtP,GAAS,MAAQsP,GAAS,MAAS,CAAC9O,GAAaR,CAAK,GAAK,CAACQ,GAAa8O,CAAK,EACzEtP,IAAUA,GAASsP,IAAUA,EAE/B0B,GAAgBhR,EAAOsP,EAAOjB,EAASzK,EAAYgO,GAAatD,CAAK,CAC9E,CCrBA,IAAIa,GAAuB,EACvBC,GAAyB,EAY7B,SAASyC,GAAY/P,EAAQK,EAAQ2P,EAAWlO,EAAY,CACvD,IAAC7C,EAAQ+Q,EAAU,OAClB9Q,EAASD,EAGb,GAAIe,GAAU,KACZ,MAAO,CAACd,EAGV,IADAc,EAAS,OAAOA,CAAM,EACff,KAAS,CACd,IAAIgJ,EAAO+H,EAAU/Q,CAAK,EAC1B,GAAqBgJ,EAAK,CAAC,EACnBA,EAAK,CAAC,IAAMjI,EAAOiI,EAAK,CAAC,CAAC,EAC1B,EAAEA,EAAK,CAAC,IAAKjI,GAEnB,MAAO,EAEV,CACD,KAAO,EAAEf,EAAQC,GAAQ,CACvB+I,EAAO+H,EAAU/Q,CAAK,EACtB,IAAIqC,EAAM2G,EAAK,CAAC,EACZvG,EAAW1B,EAAOsB,CAAG,EACrB2O,EAAWhI,EAAK,CAAC,EAErB,GAAoBA,EAAK,CAAC,GACxB,GAAIvG,IAAa,QAAa,EAAEJ,KAAOtB,GACrC,MAAO,OAEJ,CACL,IAAIwM,EAAQ,IAAI/D,EAGftJ,EACD,GAAI,EAAEA,IAAW,OACT2Q,GAAYG,EAAUvO,EAAU2L,GAAuBC,GAAwBxL,EAAY0K,CAAK,EAChGrN,GAEN,MAAO,EAEV,CACF,CACD,MAAO,EACT,CCjDA,SAAS+Q,GAAmBhS,EAAO,CACjC,OAAOA,IAAUA,GAAS,CAACgC,GAAShC,CAAK,CAC3C,CCFA,SAASiS,GAAanQ,EAAQ,CAI5B,QAHIb,EAAS4G,GAAK/F,CAAM,EACpBd,EAASC,EAAO,OAEbD,KAAU,CACf,IAAIoC,EAAMnC,EAAOD,CAAM,EACnBhB,EAAQ8B,EAAOsB,CAAG,EAEtBnC,EAAOD,CAAM,EAAI,CAACoC,EAAKpD,EAAOgS,GAAmBhS,CAAK,CAAC,CACxD,CACD,OAAOiB,CACT,CCZA,SAASiR,GAAwB9O,EAAK2O,EAAU,CAC9C,OAAO,SAASjQ,EAAQ,CACtB,OAAIA,GAAU,KACL,GAEFA,EAAOsB,CAAG,IAAM2O,IACpBA,IAAa,QAAc3O,KAAO,OAAOtB,CAAM,EACtD,CACA,CCNA,SAASqQ,GAAYhQ,EAAQ,CAC3B,IAAI2P,EAAYG,GAAa9P,CAAM,EACnC,OAAI2P,EAAU,QAAU,GAAKA,EAAU,CAAC,EAAE,CAAC,EAClCI,GAAwBJ,EAAU,CAAC,EAAE,CAAC,EAAGA,EAAU,CAAC,EAAE,CAAC,CAAC,EAE1D,SAAShQ,EAAQ,CACtB,OAAOA,IAAWK,GAAU0P,GAAY/P,EAAQK,EAAQ2P,CAAS,CACrE,CACA,CCXA,SAASM,GAAUtQ,EAAQsB,EAAK,CAC9B,OAAOtB,GAAU,MAAQsB,KAAO,OAAOtB,CAAM,CAC/C,CCMA,SAASuQ,GAAQvQ,EAAQuH,EAAMiJ,EAAS,CACtCjJ,EAAOH,GAASG,EAAMvH,CAAM,EAM5B,QAJIf,EAAQ,GACRC,EAASqI,EAAK,OACdpI,EAAS,GAEN,EAAEF,EAAQC,GAAQ,CACvB,IAAIoC,EAAM+F,GAAME,EAAKtI,CAAK,CAAC,EAC3B,GAAI,EAAEE,EAASa,GAAU,MAAQwQ,EAAQxQ,EAAQsB,CAAG,GAClD,MAEFtB,EAASA,EAAOsB,CAAG,CACpB,CACD,OAAInC,GAAU,EAAEF,GAASC,EAChBC,GAETD,EAASc,GAAU,KAAO,EAAIA,EAAO,OAC9B,CAAC,CAACd,GAAU+C,GAAS/C,CAAM,GAAKiC,GAAQG,EAAKpC,CAAM,IACvDE,EAAQY,CAAM,GAAK2C,GAAY3C,CAAM,GAC1C,CCPA,SAASyQ,GAAMzQ,EAAQuH,EAAM,CAC3B,OAAOvH,GAAU,MAAQuQ,GAAQvQ,EAAQuH,EAAM+I,EAAS,CAC1D,CCtBA,IAAIjD,GAAuB,EACvBC,GAAyB,EAU7B,SAASoD,GAAoBnJ,EAAM0I,EAAU,CAC3C,OAAI3J,GAAMiB,CAAI,GAAK2I,GAAmBD,CAAQ,EACrCG,GAAwB/I,GAAME,CAAI,EAAG0I,CAAQ,EAE/C,SAASjQ,EAAQ,CACtB,IAAI0B,EAAW8F,GAAIxH,EAAQuH,CAAI,EAC/B,OAAQ7F,IAAa,QAAaA,IAAauO,EAC3CQ,GAAMzQ,EAAQuH,CAAI,EAClBuI,GAAYG,EAAUvO,EAAU2L,GAAuBC,EAAsB,CACrF,CACA,CCvBA,SAASqD,GAAarP,EAAK,CACzB,OAAO,SAAStB,EAAQ,CACtB,OAAoCA,IAAOsB,CAAG,CAClD,CACA,CCFA,SAASsP,GAAiBrJ,EAAM,CAC9B,OAAO,SAASvH,EAAQ,CACtB,OAAOsH,GAAQtH,EAAQuH,CAAI,CAC/B,CACA,CCcA,SAASsJ,GAAStJ,EAAM,CACtB,OAAOjB,GAAMiB,CAAI,EAAIoJ,GAAatJ,GAAME,CAAI,CAAC,EAAIqJ,GAAiBrJ,CAAI,CACxE,CChBA,SAASuJ,GAAa5S,EAAO,CAG3B,OAAI,OAAOA,GAAS,WACXA,EAELA,GAAS,KACJwB,GAEL,OAAOxB,GAAS,SACXkB,EAAQlB,CAAK,EAChBwS,GAAoBxS,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EACtCmS,GAAYnS,CAAK,EAEhB2S,GAAS3S,CAAK,CACvB,CCvBA,IAAImB,GAAW,IASX0R,GAAc9G,IAAQ,EAAIqE,GAAW,IAAIrE,GAAI,CAAE,CAAA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAM5K,GAAmB,SAASsI,EAAQ,CAClG,OAAO,IAAIsC,GAAItC,CAAM,CACvB,EAF4ExH,GCNxEiI,GAAmB,IAWvB,SAAS4I,GAASjS,EAAOC,EAAUiS,EAAY,CAC7C,IAAIhS,EAAQ,GACRiS,EAAWlQ,GACX9B,EAASH,EAAM,OACfoS,EAAW,GACXhS,EAAS,CAAE,EACX4O,EAAO5O,EAMN,GAAID,GAAUkJ,GAAkB,CACnC,IAAImG,EAAMvP,EAAW,KAAO+R,GAAUhS,CAAK,EAC3C,GAAIwP,EACF,OAAOD,GAAWC,CAAG,EAEvB4C,EAAW,GACXD,EAAW9D,GACXW,EAAO,IAAIb,EACZ,MAECa,EAAO/O,EAAW,CAAE,EAAGG,EAEzBiS,EACA,KAAO,EAAEnS,EAAQC,GAAQ,CACvB,IAAIhB,EAAQa,EAAME,CAAK,EACnBoS,EAAWrS,EAAWA,EAASd,CAAK,EAAIA,EAG5C,GADAA,EAAuBA,IAAU,EAAKA,EAAQ,EAC1CiT,GAAYE,IAAaA,EAAU,CAErC,QADIC,EAAYvD,EAAK,OACduD,KACL,GAAIvD,EAAKuD,CAAS,IAAMD,EACtB,SAASD,EAGTpS,GACF+O,EAAK,KAAKsD,CAAQ,EAEpBlS,EAAO,KAAKjB,CAAK,CAClB,MACSgT,EAASnD,EAAMsD,EAAUJ,CAAU,IACvClD,IAAS5O,GACX4O,EAAK,KAAKsD,CAAQ,EAEpBlS,EAAO,KAAKjB,CAAK,EAEpB,CACD,OAAOiB,CACT,CCjDA,SAASoS,GAAKxS,EAAO,CACnB,OAAQA,GAASA,EAAM,OAAUiS,GAASjS,CAAK,EAAI,EACrD,CCIA,SAASyS,GAAOzS,EAAOC,EAAU,CAC/B,OAAQD,GAASA,EAAM,OAAUiS,GAASjS,EAAO+R,GAAa9R,CAAW,CAAC,EAAI,EAChF,qBC3BA,OAAO,eAAeyS,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC7CA,EAAA,QAAGC,GACJD,EAAA,OAAGzK,GACLyK,EAAA,KAAGE,GACFF,EAAA,MAAGG,GACJH,EAAA,KAAGI,GACDJ,EAAA,OAAGK,GACHL,EAAA,OAAGM,GACjB,SAAS/K,GAAOzE,EAAG,CACf,GAAI,CAAC,OAAO,cAAcA,CAAC,GAAKA,EAAI,EAChC,MAAM,IAAI,MAAM,kCAAkCA,CAAC,EAAE,CAC7D,CACA,SAASoP,GAAKK,EAAG,CACb,GAAI,OAAOA,GAAM,UACb,MAAM,IAAI,MAAM,yBAAyBA,CAAC,EAAE,CACpD,CAEA,SAASN,GAAQO,EAAG,CAChB,OAAQA,aAAa,YAChBA,GAAK,MAAQ,OAAOA,GAAM,UAAYA,EAAE,YAAY,OAAS,YACtE,CACA,SAASL,GAAMI,KAAME,EAAS,CAC1B,GAAI,CAACR,GAAQM,CAAC,EACV,MAAM,IAAI,MAAM,qBAAqB,EACzC,GAAIE,EAAQ,OAAS,GAAK,CAACA,EAAQ,SAASF,EAAE,MAAM,EAChD,MAAM,IAAI,MAAM,iCAAiCE,CAAO,mBAAmBF,EAAE,MAAM,EAAE,CAC7F,CACA,SAASH,GAAKM,EAAG,CACb,GAAI,OAAOA,GAAM,YAAc,OAAOA,EAAE,QAAW,WAC/C,MAAM,IAAI,MAAM,iDAAiD,EACrEnL,GAAOmL,EAAE,SAAS,EAClBnL,GAAOmL,EAAE,QAAQ,CACrB,CACA,SAASL,GAAOM,EAAUC,EAAgB,GAAM,CAC5C,GAAID,EAAS,UACT,MAAM,IAAI,MAAM,kCAAkC,EACtD,GAAIC,GAAiBD,EAAS,SAC1B,MAAM,IAAI,MAAM,uCAAuC,CAC/D,CACA,SAASL,GAAOO,EAAKF,EAAU,CAC3BR,GAAMU,CAAG,EACT,MAAMC,EAAMH,EAAS,UACrB,GAAIE,EAAI,OAASC,EACb,MAAM,IAAI,MAAM,yDAAyDA,CAAG,EAAE,CAEtF,CACA,MAAMtU,GAAS,CAAE,OAAA+I,GAAQ,KAAA2K,GAAM,MAAAC,GAAK,KAAEC,GAAM,OAAAC,GAAQ,OAAAC,IACrCN,EAAA,QAAGxT,YC/ClB,OAAO,eAAeuU,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,MAA6BA,EAAA,MAAgBA,EAAA,cAAmBA,EAAA,MAAgBA,EAAA,MAA8BA,EAAA,gBAAoBA,EAAA,OAA+BA,EAAA,OAAkBA,EAAA,kBAAqBA,EAAA,OAA+BA,EAAA,gBAAoBA,EAAA,OAAiBA,EAAA,MAA6BA,EAAA,cAAmB,OAC7SA,EAAA,QAAGC,GACLD,EAAA,MAAGE,GACLF,EAAA,IAAGG,GACd,MAAMC,GAA6B,OAAO,GAAK,GAAK,CAAC,EAC/CC,GAAuB,OAAO,EAAE,EAEtC,SAASJ,GAAQlQ,EAAGuQ,EAAK,GAAO,CAC5B,OAAIA,EACO,CAAE,EAAG,OAAOvQ,EAAIqQ,EAAU,EAAG,EAAG,OAAQrQ,GAAKsQ,GAAQD,EAAU,CAAC,EACpE,CAAE,EAAG,OAAQrQ,GAAKsQ,GAAQD,EAAU,EAAI,EAAG,EAAG,OAAOrQ,EAAIqQ,EAAU,EAAI,CAAC,CACnF,CACA,SAASF,GAAMK,EAAKD,EAAK,GAAO,CAC5B,IAAIE,EAAK,IAAI,YAAYD,EAAI,MAAM,EAC/BE,EAAK,IAAI,YAAYF,EAAI,MAAM,EACnC,QAASrV,EAAI,EAAGA,EAAIqV,EAAI,OAAQrV,IAAK,CACjC,KAAM,CAAE,EAAAyU,EAAG,EAAAe,GAAMT,GAAQM,EAAIrV,CAAC,EAAGoV,CAAE,EACnC,CAACE,EAAGtV,CAAC,EAAGuV,EAAGvV,CAAC,CAAC,EAAI,CAACyU,EAAGe,CAAC,CACzB,CACD,MAAO,CAACF,EAAIC,CAAE,CAClB,CACA,MAAME,GAAQ,CAAChB,EAAGe,IAAO,OAAOf,IAAM,CAAC,GAAKU,GAAQ,OAAOK,IAAM,CAAC,EACrDV,EAAA,MAAGW,GAEhB,MAAMC,GAAQ,CAACjB,EAAGkB,EAAI9U,IAAM4T,IAAM5T,EACrBiU,EAAA,MAAGY,GAChB,MAAME,GAAQ,CAACnB,EAAGe,EAAG3U,IAAO4T,GAAM,GAAK5T,EAAO2U,IAAM3U,EACvCiU,EAAA,MAAGc,GAEhB,MAAMC,GAAS,CAACpB,EAAGe,EAAG3U,IAAO4T,IAAM5T,EAAM2U,GAAM,GAAK3U,EACtCiU,EAAA,OAAGe,GACjB,MAAMC,GAAS,CAACrB,EAAGe,EAAG3U,IAAO4T,GAAM,GAAK5T,EAAO2U,IAAM3U,EACvCiU,EAAA,OAAGgB,GAEjB,MAAMC,GAAS,CAACtB,EAAGe,EAAG3U,IAAO4T,GAAM,GAAK5T,EAAO2U,IAAO3U,EAAI,GAC5CiU,EAAA,OAAGiB,GACjB,MAAMC,GAAS,CAACvB,EAAGe,EAAG3U,IAAO4T,IAAO5T,EAAI,GAAQ2U,GAAM,GAAK3U,EAC7CiU,EAAA,OAAGkB,GAEjB,MAAMC,GAAU,CAACC,EAAIV,IAAMA,EACZV,EAAA,QAAGmB,GAClB,MAAME,GAAU,CAAC1B,EAAGkB,IAAOlB,EACZK,EAAA,QAAGqB,GAElB,MAAMC,GAAS,CAAC3B,EAAGe,EAAG3U,IAAO4T,GAAK5T,EAAM2U,IAAO,GAAK3U,EACtCiU,EAAA,OAAGsB,GACjB,MAAMC,GAAS,CAAC5B,EAAGe,EAAG3U,IAAO2U,GAAK3U,EAAM4T,IAAO,GAAK5T,EACtCiU,EAAA,OAAGuB,GAEjB,MAAMC,GAAS,CAAC7B,EAAGe,EAAG3U,IAAO2U,GAAM3U,EAAI,GAAQ4T,IAAO,GAAK5T,EAC7CiU,EAAA,OAAGwB,GACjB,MAAMC,GAAS,CAAC9B,EAAGe,EAAG3U,IAAO4T,GAAM5T,EAAI,GAAQ2U,IAAO,GAAK3U,EAC7CiU,EAAA,OAAGyB,GAGjB,SAAStB,GAAIK,EAAIC,EAAIiB,EAAIC,EAAI,CACzB,MAAMjB,GAAKD,IAAO,IAAMkB,IAAO,GAC/B,MAAO,CAAE,EAAInB,EAAKkB,GAAOhB,EAAI,GAAK,GAAM,GAAM,EAAG,EAAGA,EAAI,CAAC,CAC7D,CAEA,MAAMkB,GAAQ,CAACnB,EAAIkB,EAAIE,KAAQpB,IAAO,IAAMkB,IAAO,IAAME,IAAO,GACnD7B,EAAA,MAAG4B,GAChB,MAAME,GAAQ,CAACC,EAAKvB,EAAIkB,EAAIM,IAAQxB,EAAKkB,EAAKM,GAAOD,EAAM,GAAK,GAAM,GAAM,EAC/D/B,EAAA,MAAG8B,GAChB,MAAMG,GAAQ,CAACxB,EAAIkB,EAAIE,EAAIK,KAAQzB,IAAO,IAAMkB,IAAO,IAAME,IAAO,IAAMK,IAAO,GACpElC,EAAA,MAAGiC,GAChB,MAAME,GAAQ,CAACJ,EAAKvB,EAAIkB,EAAIM,EAAII,IAAQ5B,EAAKkB,EAAKM,EAAKI,GAAOL,EAAM,GAAK,GAAM,GAAM,EACxE/B,EAAA,MAAGmC,GAChB,MAAME,GAAQ,CAAC5B,EAAIkB,EAAIE,EAAIK,EAAII,KAAQ7B,IAAO,IAAMkB,IAAO,IAAME,IAAO,IAAMK,IAAO,IAAMI,IAAO,GACrFtC,EAAA,MAAGqC,GAChB,MAAME,GAAQ,CAACR,EAAKvB,EAAIkB,EAAIM,EAAII,EAAII,IAAQhC,EAAKkB,EAAKM,EAAKI,EAAKI,GAAOT,EAAM,GAAK,GAAM,GAAM,EACjF/B,EAAA,MAAGuC,GAEhB,MAAME,GAAM,CACR,QAAAxC,GAAS,MAAAC,GAAO,MAAAS,GAChB,MAAAC,GAAO,MAAAE,GACP,OAAAC,GAAQ,OAAAC,GAAQ,OAAAC,GAAQ,OAAAC,GACxB,QAAAC,GAAS,QAAAE,GACT,OAAAC,GAAQ,OAAAC,GAAQ,OAAAC,GAAQ,OAAAC,GACxB,IAAAtB,GAAK,MAAAyB,GAAO,MAAAE,GAAO,MAAAG,GAAO,MAAAE,GAAO,MAAAI,GAAO,MAAAF,EAC5C,EACerC,EAAA,QAAGyC,mBClFlB,OAAO,eAAeC,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC9CA,GAAA,OAAG,OACjBA,GAAA,OAAiB,OAAO,YAAe,UAAY,WAAY,WAAa,WAAW,OAAS,oBCFhG,sEACA,OAAO,eAAcC,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAe,KAAAA,EAAA,SAAmBA,EAAuB,aAAAA,EAAA,SAAmBA,EAAe,KAAAA,EAAA,KAAeA,EAAe,KAAAA,EAAA,WAAqBA,EAAc,IAAAA,EAAA,GAAa,OACzKA,EAAA,QAAkBzD,EAClByD,EAAA,WAAqBC,EACrBD,EAAA,WAAqBE,EACrBF,EAAA,WAAqBG,EACrBH,EAAA,UAAoBI,EACpBJ,EAAA,YAAsBK,EACtBL,EAAA,QAAkBM,EAClBN,EAAA,YAAsBO,EACtBP,EAAA,UAAoBQ,GACpBR,EAAA,gBAA0BS,GAC1BT,EAAA,wBAAkCU,GAClCV,EAAA,2BAAqCW,GACrCX,EAAA,YAAsBY,GAOtB,MAAMC,EAAWC,GACXC,EAAeC,EAGrB,SAASzE,EAAQO,EAAG,CAChB,OAAQA,aAAa,YAChBA,GAAK,MAAQ,OAAOA,GAAM,UAAYA,EAAE,YAAY,OAAS,YACrE,CAED,MAAMmE,EAAMC,GAAQ,IAAI,WAAWA,EAAI,OAAQA,EAAI,WAAYA,EAAI,UAAU,EAC7ElB,EAAA,GAAaiB,EACb,MAAME,EAAOD,GAAQ,IAAI,YAAYA,EAAI,OAAQA,EAAI,WAAY,KAAK,MAAMA,EAAI,WAAa,CAAC,CAAC,EAC/FlB,EAAA,IAAcmB,EAEd,MAAMC,EAAcF,GAAQ,IAAI,SAASA,EAAI,OAAQA,EAAI,WAAYA,EAAI,UAAU,EACnFlB,EAAA,WAAqBoB,EAErB,MAAMC,EAAO,CAACC,EAAMC,IAAWD,GAAS,GAAKC,EAAWD,IAASC,EACjEvB,EAAA,KAAeqB,EAEf,MAAMG,EAAO,CAACF,EAAMC,IAAWD,GAAQC,EAAWD,IAAU,GAAKC,IAAY,EAC7EvB,EAAA,KAAewB,EACfxB,EAAA,KAAe,IAAI,WAAW,IAAI,YAAY,CAAC,SAAU,CAAC,EAAE,MAAM,EAAE,CAAC,IAAM,GAE3E,MAAMyB,EAAYH,GAAWA,GAAQ,GAAM,WACrCA,GAAQ,EAAK,SACbA,IAAS,EAAK,MACdA,IAAS,GAAM,IACrBtB,EAAA,SAAmByB,EAEnBzB,EAAuB,aAAAA,EAAQ,KAAQ5S,GAAMA,EAAKA,MAAU4S,EAAQ,UAAU5S,CAAC,EAE/E,SAAS6S,EAAWiB,EAAK,CACrB,QAAS3Y,EAAI,EAAGA,EAAI2Y,EAAI,OAAQ3Y,IAC5B2Y,EAAI3Y,CAAC,KAAQyX,EAAQ,UAAUkB,EAAI3Y,CAAC,CAAC,CAE5C,CAED,MAAMmZ,EAAwB,MAAM,KAAK,CAAE,OAAQ,GAAK,EAAE,CAACC,EAAGpZ,IAAMA,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAInG,SAAS2X,EAAWzD,EAAO,IACnBsE,EAAa,OAAOtE,CAAK,EAE7B,IAAImF,EAAM,GACV,QAASrZ,EAAI,EAAGA,EAAIkU,EAAM,OAAQlU,IAC9BqZ,GAAOF,EAAMjF,EAAMlU,CAAC,CAAC,EAEzB,OAAOqZ,CACV,CAED,MAAMC,EAAS,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAG,EAChE,SAASC,EAAcC,EAAM,CACzB,GAAIA,GAAQF,EAAO,IAAME,GAAQF,EAAO,GACpC,OAAOE,EAAOF,EAAO,GACzB,GAAIE,GAAQF,EAAO,IAAME,GAAQF,EAAO,GACpC,OAAOE,GAAQF,EAAO,GAAK,IAC/B,GAAIE,GAAQF,EAAO,IAAME,GAAQF,EAAO,GACpC,OAAOE,GAAQF,EAAO,GAAK,GAElC,CAID,SAAS1B,EAAWyB,EAAK,CACrB,GAAI,OAAOA,GAAQ,SACf,MAAM,IAAI,MAAM,4BAA8B,OAAOA,CAAG,EAC5D,MAAMI,EAAKJ,EAAI,OACTK,EAAKD,EAAK,EAChB,GAAIA,EAAK,EACL,MAAM,IAAI,MAAM,0DAA4DA,CAAE,EAClF,MAAMpY,EAAQ,IAAI,WAAWqY,CAAE,EAC/B,QAASC,EAAK,EAAGC,EAAK,EAAGD,EAAKD,EAAIC,IAAMC,GAAM,EAAG,CAC7C,MAAMC,GAAKN,EAAcF,EAAI,WAAWO,CAAE,CAAC,EACrCE,GAAKP,EAAcF,EAAI,WAAWO,EAAK,CAAC,CAAC,EAC/C,GAAIC,KAAO,QAAaC,KAAO,OAAW,CACtC,MAAMN,GAAOH,EAAIO,CAAE,EAAIP,EAAIO,EAAK,CAAC,EACjC,MAAM,IAAI,MAAM,+CAAiDJ,GAAO,cAAgBI,CAAE,CAC7F,CACDvY,EAAMsY,CAAE,EAAIE,GAAK,GAAKC,EACzB,CACD,OAAOzY,CACV,CAID,MAAM0Y,EAAW,SAAY,GAC7BtC,EAAA,SAAmBsC,EAEnB,eAAelC,EAAUmC,EAAOC,EAAMC,EAAI,CACtC,IAAIC,EAAK,KAAK,MACd,QAASna,EAAI,EAAGA,EAAIga,EAAOha,IAAK,CAC5Bka,EAAGla,CAAC,EAEJ,MAAMoa,EAAO,KAAK,IAAG,EAAKD,EACtBC,GAAQ,GAAKA,EAAOH,IAExB,QAAUxC,EAAQ,YAClB0C,GAAMC,EACT,CACJ,CAID,SAAStC,EAAYuC,EAAK,CACtB,GAAI,OAAOA,GAAQ,SACf,MAAM,IAAI,MAAM,oCAAoC,OAAOA,CAAG,EAAE,EACpE,OAAO,IAAI,WAAW,IAAI,YAAa,EAAC,OAAOA,CAAG,CAAC,CACtD,CAMD,SAAStC,EAAQxN,EAAM,CACnB,OAAI,OAAOA,GAAS,WAChBA,EAAOuN,EAAYvN,CAAI,MACvBiO,EAAa,OAAOjO,CAAI,EACrBA,CACV,CAID,SAASyN,KAAesC,EAAQ,CAC5B,IAAIC,EAAM,EACV,QAASva,EAAI,EAAGA,EAAIsa,EAAO,OAAQta,IAAK,CACpC,MAAMuU,EAAI+F,EAAOta,CAAC,KACdwY,EAAa,OAAOjE,CAAC,EACzBgG,GAAOhG,EAAE,MACZ,CACD,MAAMiG,EAAM,IAAI,WAAWD,CAAG,EAC9B,QAASva,EAAI,EAAGya,EAAM,EAAGza,EAAIsa,EAAO,OAAQta,IAAK,CAC7C,MAAMuU,EAAI+F,EAAOta,CAAC,EAClBwa,EAAI,IAAIjG,EAAGkG,CAAG,EACdA,GAAOlG,EAAE,MACZ,CACD,OAAOiG,CACV,CAED,MAAME,CAAK,CAEP,OAAQ,CACJ,OAAO,KAAK,YACf,CACJ,CACDjD,EAAA,KAAeiD,EACf,MAAMC,GAAQ,CAAE,EAAC,SACjB,SAAS1C,GAAU2C,EAAUC,EAAM,CAC/B,GAAIA,IAAS,QAAaF,GAAM,KAAKE,CAAI,IAAM,kBAC3C,MAAM,IAAI,MAAM,uCAAuC,EAE3D,OADe,OAAO,OAAOD,EAAUC,CAAI,CAE9C,CACD,SAAS3C,GAAgB4C,EAAU,CAC/B,MAAMC,EAASC,GAAQF,EAAU,EAAC,OAAO/C,EAAQiD,CAAG,CAAC,EAAE,SACjDC,EAAMH,IACZ,OAAAC,EAAM,UAAYE,EAAI,UACtBF,EAAM,SAAWE,EAAI,SACrBF,EAAM,OAAS,IAAMD,IACdC,CACV,CACD,SAAS5C,GAAwB2C,EAAU,CACvC,MAAMC,EAAQ,CAACC,EAAKH,IAASC,EAASD,CAAI,EAAE,OAAO9C,EAAQiD,CAAG,CAAC,EAAE,OAAM,EACjEC,EAAMH,EAAS,CAAA,CAAE,EACvB,OAAAC,EAAM,UAAYE,EAAI,UACtBF,EAAM,SAAWE,EAAI,SACrBF,EAAM,OAAUF,GAASC,EAASD,CAAI,EAC/BE,CACV,CACD,SAAS3C,GAA2B0C,EAAU,CAC1C,MAAMC,EAAQ,CAACC,EAAKH,IAASC,EAASD,CAAI,EAAE,OAAO9C,EAAQiD,CAAG,CAAC,EAAE,OAAM,EACjEC,EAAMH,EAAS,CAAA,CAAE,EACvB,OAAAC,EAAM,UAAYE,EAAI,UACtBF,EAAM,SAAWE,EAAI,SACrBF,EAAM,OAAUF,GAASC,EAASD,CAAI,EAC/BE,CACV,CAID,SAAS1C,GAAY6C,EAAc,GAAI,CACnC,GAAI5C,EAAS,QAAU,OAAOA,EAAS,OAAO,iBAAoB,WAC9D,OAAOA,EAAS,OAAO,gBAAgB,IAAI,WAAW4C,CAAW,CAAC,EAGtE,GAAI5C,EAAS,QAAU,OAAOA,EAAS,OAAO,aAAgB,WAC1D,OAAOA,EAAS,OAAO,YAAY4C,CAAW,EAElD,MAAM,IAAI,MAAM,wCAAwC,CAC3D,QCpND,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5CA,EAAA,oBAAsBA,EAAA,WAAuCA,EAAA,WAAqBA,EAAA,WAAqBA,EAAA,sBAAsBA,EAAA,SAAmBA,EAAA,SAAmBA,EAAA,SAAiCA,EAAA,OAAG,OACxMA,EAAA,QAAGC,GAClB,MAAM5C,GAAeD,EACf8C,GAAY5C,EACZ6C,EAAaC,GAIbC,GAAU,CAAA,EACVC,GAAY,CAAA,EACZC,GAAa,CAAA,EACbC,GAAsB,OAAO,CAAC,EAC9BC,GAAsB,OAAO,CAAC,EAC9BC,GAAsB,OAAO,CAAC,EAC9BC,GAAsB,OAAO,CAAC,EAC9BC,GAAwB,OAAO,GAAG,EAClCC,GAAyB,OAAO,GAAI,EAC1C,QAASC,EAAQ,EAAGC,EAAIN,GAAKO,EAAI,EAAGC,EAAI,EAAGH,EAAQ,GAAIA,IAAS,CAE5D,CAACE,EAAGC,CAAC,EAAI,CAACA,GAAI,EAAID,EAAI,EAAIC,GAAK,CAAC,EAChCZ,GAAQ,KAAK,GAAK,EAAIY,EAAID,EAAE,EAE5BV,GAAU,MAAQQ,EAAQ,IAAMA,EAAQ,GAAM,EAAK,EAAE,EAErD,IAAII,EAAIV,GACR,QAASW,EAAI,EAAGA,EAAI,EAAGA,IACnBJ,GAAMA,GAAKN,IAASM,GAAKJ,IAAOE,IAAWD,GACvCG,EAAIL,KACJQ,GAAKT,KAASA,IAAuB,OAAOU,CAAC,GAAKV,IAE1DF,GAAW,KAAKW,CAAC,CACrB,CACA,KAAM,CAACE,GAAaC,EAAW,KAAwBnB,GAAU,OAAOK,GAAY,EAAI,EAElFe,GAAQ,CAAChI,EAAGe,EAAG3U,IAAOA,EAAI,MAASwa,GAAU,QAAQ5G,EAAGe,EAAG3U,CAAC,KAAQwa,GAAU,QAAQ5G,EAAGe,EAAG3U,CAAC,EAC7F6b,GAAQ,CAACjI,EAAGe,EAAG3U,IAAOA,EAAI,MAASwa,GAAU,QAAQ5G,EAAGe,EAAG3U,CAAC,KAAQwa,GAAU,QAAQ5G,EAAGe,EAAG3U,CAAC,EAEnG,SAASua,GAAQva,EAAG8b,EAAS,GAAI,CAC7B,MAAMC,EAAI,IAAI,YAAY,EAAK,EAE/B,QAASX,EAAQ,GAAKU,EAAQV,EAAQ,GAAIA,IAAS,CAE/C,QAASE,EAAI,EAAGA,EAAI,GAAIA,IACpBS,EAAET,CAAC,EAAItb,EAAEsb,CAAC,EAAItb,EAAEsb,EAAI,EAAE,EAAItb,EAAEsb,EAAI,EAAE,EAAItb,EAAEsb,EAAI,EAAE,EAAItb,EAAEsb,EAAI,EAAE,EAC9D,QAASA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC5B,MAAMU,GAAQV,EAAI,GAAK,GACjBW,GAAQX,EAAI,GAAK,GACjBY,EAAKH,EAAEE,CAAI,EACXE,EAAKJ,EAAEE,EAAO,CAAC,EACfG,EAAKR,GAAMM,EAAIC,EAAI,CAAC,EAAIJ,EAAEC,CAAI,EAC9BK,EAAKR,GAAMK,EAAIC,EAAI,CAAC,EAAIJ,EAAEC,EAAO,CAAC,EACxC,QAAST,EAAI,EAAGA,EAAI,GAAIA,GAAK,GACzBvb,EAAEsb,EAAIC,CAAC,GAAKa,EACZpc,EAAEsb,EAAIC,EAAI,CAAC,GAAKc,CAEvB,CAED,IAAIC,EAAOtc,EAAE,CAAC,EACVuc,EAAOvc,EAAE,CAAC,EACd,QAASwb,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,MAAMrD,EAAQyC,GAAUY,CAAC,EACnBY,EAAKR,GAAMU,EAAMC,EAAMpE,CAAK,EAC5BkE,EAAKR,GAAMS,EAAMC,EAAMpE,CAAK,EAC5BqE,EAAK7B,GAAQa,CAAC,EACpBc,EAAOtc,EAAEwc,CAAE,EACXD,EAAOvc,EAAEwc,EAAK,CAAC,EACfxc,EAAEwc,CAAE,EAAIJ,EACRpc,EAAEwc,EAAK,CAAC,EAAIH,CACf,CAED,QAASd,EAAI,EAAGA,EAAI,GAAIA,GAAK,GAAI,CAC7B,QAASD,EAAI,EAAGA,EAAI,GAAIA,IACpBS,EAAET,CAAC,EAAItb,EAAEub,EAAID,CAAC,EAClB,QAASA,EAAI,EAAGA,EAAI,GAAIA,IACpBtb,EAAEub,EAAID,CAAC,GAAK,CAACS,GAAGT,EAAI,GAAK,EAAE,EAAIS,GAAGT,EAAI,GAAK,EAAE,CACpD,CAEDtb,EAAE,CAAC,GAAK0b,GAAYN,CAAK,EACzBpb,EAAE,CAAC,GAAK2b,GAAYP,CAAK,CAC5B,CACDW,EAAE,KAAK,CAAC,CACZ,CACA,MAAMU,WAAehC,EAAW,IAAK,CAEjC,YAAYiC,EAAUC,EAAQC,EAAWC,EAAY,GAAOf,EAAS,GAAI,CAcrE,GAbA,QACA,KAAK,SAAWY,EAChB,KAAK,OAASC,EACd,KAAK,UAAYC,EACjB,KAAK,UAAYC,EACjB,KAAK,OAASf,EACd,KAAK,IAAM,EACX,KAAK,OAAS,EACd,KAAK,SAAW,GAChB,KAAK,UAAY,MAEbnE,GAAa,QAAQiF,CAAS,EAE9B,GAAK,KAAK,UAAY,KAAK,UAAY,IACvC,MAAM,IAAI,MAAM,0CAA0C,EAC9D,KAAK,MAAQ,IAAI,WAAW,GAAG,EAC/B,KAAK,WAAcnC,EAAW,KAAK,KAAK,KAAK,CAChD,CACD,QAAS,CACAA,EAAW,SACRA,EAAW,YAAY,KAAK,OAAO,EAC3CF,GAAQ,KAAK,QAAS,KAAK,MAAM,EAC5BE,EAAW,SACRA,EAAW,YAAY,KAAK,OAAO,EAC3C,KAAK,OAAS,EACd,KAAK,IAAM,CACd,CACD,OAAO/Q,EAAM,IACLiO,GAAa,QAAQ,IAAI,EAC7B,KAAM,CAAE,SAAA+E,EAAU,MAAAI,CAAO,EAAG,KAC5BpT,KAAW+Q,EAAW,SAAS/Q,CAAI,EACnC,MAAMqT,EAAMrT,EAAK,OACjB,QAASsT,EAAM,EAAGA,EAAMD,GAAM,CAC1B,MAAME,EAAO,KAAK,IAAIP,EAAW,KAAK,IAAKK,EAAMC,CAAG,EACpD,QAAS7d,EAAI,EAAGA,EAAI8d,EAAM9d,IACtB2d,EAAM,KAAK,KAAK,GAAKpT,EAAKsT,GAAK,EAC/B,KAAK,MAAQN,GACb,KAAK,OAAM,CAClB,CACD,OAAO,IACV,CACD,QAAS,CACL,GAAI,KAAK,SACL,OACJ,KAAK,SAAW,GAChB,KAAM,CAAE,MAAAI,EAAO,OAAAH,EAAQ,IAAAK,EAAK,SAAAN,CAAQ,EAAK,KAEzCI,EAAME,CAAG,GAAKL,EACTA,EAAS,KAAeK,IAAQN,EAAW,GAC5C,KAAK,OAAM,EACfI,EAAMJ,EAAW,CAAC,GAAK,IACvB,KAAK,OAAM,CACd,CACD,UAAU3I,EAAK,IACP4D,GAAa,QAAQ,KAAM,EAAK,KAChCA,GAAa,OAAO5D,CAAG,EAC3B,KAAK,OAAM,EACX,MAAMmJ,EAAY,KAAK,MACjB,CAAE,SAAAR,CAAU,EAAG,KACrB,QAASM,EAAM,EAAGD,EAAMhJ,EAAI,OAAQiJ,EAAMD,GAAM,CACxC,KAAK,QAAUL,GACf,KAAK,OAAM,EACf,MAAMO,EAAO,KAAK,IAAIP,EAAW,KAAK,OAAQK,EAAMC,CAAG,EACvDjJ,EAAI,IAAImJ,EAAU,SAAS,KAAK,OAAQ,KAAK,OAASD,CAAI,EAAGD,CAAG,EAChE,KAAK,QAAUC,EACfD,GAAOC,CACV,CACD,OAAOlJ,CACV,CACD,QAAQA,EAAK,CAET,GAAI,CAAC,KAAK,UACN,MAAM,IAAI,MAAM,uCAAuC,EAC3D,OAAO,KAAK,UAAUA,CAAG,CAC5B,CACD,IAAIV,EAAO,CACP,SAAIsE,GAAa,QAAQtE,CAAK,EACvB,KAAK,QAAQ,IAAI,WAAWA,CAAK,CAAC,CAC5C,CACD,WAAWU,EAAK,CAEZ,MADI4D,GAAa,QAAQ5D,EAAK,IAAI,EAC9B,KAAK,SACL,MAAM,IAAI,MAAM,6BAA6B,EACjD,YAAK,UAAUA,CAAG,EAClB,KAAK,QAAO,EACLA,CACV,CACD,QAAS,CACL,OAAO,KAAK,WAAW,IAAI,WAAW,KAAK,SAAS,CAAC,CACxD,CACD,SAAU,CACN,KAAK,UAAY,GACjB,KAAK,MAAM,KAAK,CAAC,CACpB,CACD,WAAWoJ,EAAI,CACX,KAAM,CAAE,SAAAT,EAAU,OAAAC,EAAQ,UAAAC,EAAW,OAAAd,EAAQ,UAAAe,CAAW,EAAG,KAC3D,OAAAM,IAAOA,EAAK,IAAIV,GAAOC,EAAUC,EAAQC,EAAWC,EAAWf,CAAM,GACrEqB,EAAG,QAAQ,IAAI,KAAK,OAAO,EAC3BA,EAAG,IAAM,KAAK,IACdA,EAAG,OAAS,KAAK,OACjBA,EAAG,SAAW,KAAK,SACnBA,EAAG,OAASrB,EAEZqB,EAAG,OAASR,EACZQ,EAAG,UAAYP,EACfO,EAAG,UAAYN,EACfM,EAAG,UAAY,KAAK,UACbA,CACV,CACL,CACc7C,EAAA,OAAGmC,GACjB,MAAMW,GAAM,CAACT,EAAQD,EAAUE,OAAkBnC,EAAW,iBAAiB,IAAM,IAAIgC,GAAOC,EAAUC,EAAQC,CAAS,CAAC,EAC1GtC,EAAA,SAAG8C,GAAI,EAAM,IAAK,IAAM,CAAC,EAKzB9C,EAAA,SAAG8C,GAAI,EAAM,IAAK,IAAM,CAAC,EACzB9C,EAAA,SAAG8C,GAAI,EAAM,IAAK,IAAM,CAAC,EACzB9C,EAAA,SAAG8C,GAAI,EAAM,GAAI,IAAM,CAAC,EACtB9C,EAAA,WAAG8C,GAAI,EAAM,IAAK,IAAM,CAAC,EAKzB9C,EAAA,WAAG8C,GAAI,EAAM,IAAK,IAAM,CAAC,EACzB9C,EAAA,WAAG8C,GAAI,EAAM,IAAK,IAAM,CAAC,EACzB9C,EAAA,WAAG8C,GAAI,EAAM,GAAI,IAAM,CAAC,EAC1C,MAAMC,GAAW,CAACV,EAAQD,EAAUE,OAAkBnC,EAAW,4BAA4B,CAACT,EAAO,KAAO,IAAIyC,GAAOC,EAAUC,EAAQ3C,EAAK,QAAU,OAAY4C,EAAY5C,EAAK,MAAO,EAAI,CAAC,EACjLM,EAAA,SAAG+C,GAAS,GAAM,IAAK,IAAM,CAAC,EAC9B/C,EAAA,SAAG+C,GAAS,GAAM,IAAK,IAAM,CAAC,ECxN9C,KAAM,CAAE,SAAU/C,EAAM,EAAG5C,EAErB4F,GAAgB,GAChBC,GAAY,GAEZC,GAAgB,CAAC7c,EAAS,EAAG8c,EAAS,KAAK,SAAW,CAC1D,IAAIC,EAAU,GAEd,KAAOA,EAAQ,OAAS/c,GACtB+c,EAAUA,EAAU,KAAK,MAAMD,EAAQ,EAAG,EAAE,EAAE,SAAS,EAAE,EAE3D,OAAOC,CACT,EAMA,SAASC,GAAYC,EAAK,CACxB,IAAIC,EAAO,GAEPle,EAAQ,GACZ,UAAWR,KAAKye,EAAI,SAAU,CAC5B,MAAME,EAAK,OAAO3e,CAAC,EACnBQ,GAASA,GAASke,GAAQC,CAC3B,CACD,OAAOne,CACT,CAEA,MAAM2T,GAAO,CAACyK,EAAQ,KAGbJ,GAAYrD,GAAKyD,CAAK,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,EAGhDC,GAAW,MAAM,KAAK,CAAE,OAAQ,EAAI,EAAE,CAAC1C,EAAGnc,IAC9C,OAAO,aAAaA,EAAI,EAAE,CAC5B,EAEM8e,GAAgBR,GACpBO,GAAS,KAAK,MAAMP,EAAQ,EAAGO,GAAS,MAAM,CAAC,EAQ3CE,GAAoB,CAAC,CACzB,UAAAC,EAAY,OAAOC,GAAW,IAC1BA,GACA,OAAO,OAAW,IAClB,OACA,CAAE,EACN,OAAAX,EAAS,KAAK,MAChB,EAAI,KAAO,CACT,MAAMY,EAAU,OAAO,KAAKF,CAAS,EAAE,SAAQ,EACzCG,EAAeD,EAAQ,OACzBA,EAAUb,GAAcD,GAAWE,CAAM,EACzCD,GAAcD,GAAWE,CAAM,EAEnC,OAAOnK,GAAKgL,CAAY,EAAE,UAAU,EAAGf,EAAS,CAClD,EAEMgB,GAAiBC,GAAU,IACxBA,IAKHC,GAAkB,UAElBC,GAAO,CAAC,CAIZ,OAAAjB,EAAS,KAAK,OACd,QAAAkB,EAAUJ,GAAc,KAAK,MAAMd,EAAM,EAAKgB,EAAe,CAAC,EAC9D,OAAA9d,EAAS2c,GACT,YAAAsB,EAAcV,GAAkB,CAAE,OAAAT,EAAQ,CAC5C,EAAI,KACK,UAAiB,CACtB,MAAMoB,EAAcZ,GAAaR,CAAM,EAIjCqB,EAAO,KAAK,IAAK,EAAC,SAAS,EAAE,EAC7BN,EAAQG,EAAO,EAAG,SAAS,EAAE,EAK7BI,EAAOvB,GAAc7c,EAAQ8c,CAAM,EACnCuB,EAAY,GAAGF,EAAOC,EAAOP,EAAQI,CAAW,GAEtD,MAAO,GAAGC,EAAcvL,GAAK0L,CAAS,EAAE,UAAU,EAAGre,CAAM,CAAC,EAChE,EAGMse,GAAWP,GAAI,EAEfQ,GAAS,CAACC,EAAI,CAAE,UAAAC,EAAY,EAAG,UAAAC,EAAY9B,EAAW,EAAG,KAAO,CACpE,MAAM5c,EAASwe,EAAG,OACZG,EAAQ,cAEd,GAAI,CACF,GACE,OAAOH,GAAO,UACdxe,GAAUye,GACVze,GAAU0e,GACVC,EAAM,KAAKH,CAAE,EAEb,MAAO,EACb,QAAY,CACT,CAED,MAAO,EACT,EAE2BI,GAAA,aAAG,KAAO,CAAE,cAAAjC,GAAe,UAAAC,EAAS,GAC5CgC,GAAA,KAAGb,GACCa,GAAA,SAAGN,GACAM,GAAA,YAAG5B,GACD4B,GAAA,cAAGhB,GACCgB,GAAA,kBAAGrB,GACnCqB,GAAA,OAAwBL,GC9HxB,KAAM,CAAE,SAAAD,GAAU,KAAAP,GAAM,aAAAc,GAAc,OAAAN,EAAM,EAAKxH,GAEjD,IAAuB+H,GAAGR,GCKtBS,GAAY,YACZC,GAAa,aACbC,GAAY,YACZC,GAAY,YACZC,GAAc,CAClB,UAAEJ,GACF,WAAEC,GACF,UAAEC,GACF,UAAEC,EACF,EACIE,GAAO,OAEPC,GAAQ,CAAE,QAAS,IACnBC,GAAkB,CACpB,KAAM,YACN,KAAM,WACR,EAGI,CAAE,UAAWC,EAAY,EAAGJ,GAC5BK,GAAqBC,GAChB9M,EAAK4M,GAAYE,CAAI,EAI1BC,GAAS,CAAC,CACZ,MAAAC,EACA,OAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,CAAE,EACZ,KAAAjZ,CACF,IAAM,CACJ,KAAM,CAAE,UAAWkZ,EAAiB,UAAWC,CAAe,EAAKH,EAAK,KAAK,WACvE,CAAE,UAAWI,GAAuBpZ,EAAK,WACzC4Y,EAAO,CACX,GAAGG,EACH,GAAGE,EACH,OAAQD,EAAK,OACb,UAAW,KAAK,IAAK,EACrB,KAAMF,EAAM,MAAQ,CAAE,CAE1B,EACQO,EAAgBC,EAAW,aAAa,CAC5C,OAAQV,EACR,mBAAAQ,EACA,gBAAAD,CACJ,CAAG,EACKI,EAAQZ,GAAkBU,CAAa,EACvCG,EAAO,CACX,KAAMD,EACN,KAAAX,CACJ,EACQa,EAAgB,CACpB,gBAAAP,EACA,mBAAAE,EACA,cAAAC,CACJ,EACE,MAAO,CAEL,KAAMP,EAAM,MAAQS,EAEpB,KAAM,CAACA,CAAK,EAEZ,eAAgB,CACd,GAAGT,EAAM,eACT,CAACS,CAAK,EAAGE,CACV,EAED,MAAO,CACL,GAAGX,EAAM,MACT,CAACS,CAAK,EAAGC,CACV,CACL,CACA,EAMIE,GAAU,CAACZ,EAAOS,IAAUT,EAAM,MAAMS,CAAK,EAG7CI,GAAoB,CAACb,EAAOS,IACPK,GAAkBd,CAAK,EACxBS,CAAK,GAAK,GAK9BK,GAAoBlZ,EAASoY,GAAU,CACzC,MAAMe,EAAiB,CAAA,EACvB,UAAWL,KAAQ,OAAO,OAAOV,EAAM,KAAK,EAAG,CAC7C,MAAMgB,EAAUN,EAAK,KAAK,KAC1B,UAAWO,KAAUD,EAAS,CAC5B,MAAME,EAAWH,EAAeE,CAAM,GAAK,CAAA,EAC3CC,EAAS,KAAKR,EAAK,IAAI,EACvBK,EAAeE,CAAM,EAAIC,CAC1B,CACF,CACD,OAAOH,CACT,CAAC,EAMGI,GAAanB,GAAU,OAAO,KAAKA,EAAM,KAAK,EAK9CoB,GAAkB,CAACpB,EAAOS,IAAU,GAAGT,EAAM,KAAK,KAAK,EAAE,CAAC,IAAIS,CAAK,GAEnEY,GAAuBC,EAAS,CAACtB,EAAOS,IAAU,CACpD,MAAMC,EAAOE,GAAQZ,EAAOS,CAAK,EACjCrhB,EAAOshB,CAAI,EACX,MAAMM,EAAUN,EAAK,KAAK,KACpBa,EAAeP,EAAQ,QAASC,GAAWI,GAAqBrB,EAAOiB,CAAM,CAAC,EACpF,OAAOvO,GAAKsO,EAAQ,OAAOO,CAAY,CAAC,CAC1C,EAAGH,EAAe,EAGdI,GAAgB,CAACxB,EAAO5M,EAAGD,IACtBC,IAAM,QAAUD,IAAM,QAAUC,EAAE,QAAQ4M,EAAM,OAAS7M,EAAE,QAAQ6M,EAAM,OAASqB,GAAqBrB,EAAO7M,EAAE,IAAI,EAAE,SAASC,EAAE,IAAI,EAE1IqO,GAAoB,CAACzB,EAAO5M,EAAGD,IAAMkO,GAAqBrB,EAAO7M,CAAC,EAAE,SAASC,CAAC,EAK9EsO,GAAmB,CAAC1B,EAAOS,IAAU,GAAGT,EAAM,KAAK,KAAK,EAAE,CAAC,IAAIS,CAAK,GACpEkB,GAAqBC,EAAS,CAAC5B,EAAOS,IAAU,CAClD,MAAMS,EAAWL,GAAkBb,EAAOS,CAAK,EACzCoB,EAAaX,EAAS,QAASD,GAAWU,GAAmB3B,EAAOiB,CAAM,CAAC,EACjF,OAAOa,GAAMZ,EAAS,OAAOW,CAAU,CAAC,CAC1C,EAAGH,EAAgB,EAOfK,GAAkB,CAAC/B,EAAO5M,EAAGD,IAAMwO,GAAmB3B,EAAO7M,CAAC,EAAE,SAASC,CAAC,EAM1E4O,GAAsB,CAAChC,EAAOS,IACNwB,GAAqBjC,CAAK,EAC3BS,CAAK,EAE5BwB,GAAuBC,EAAUlC,GAAU,CAC7C,MAAMmC,EAAoB,CAAA,EAC1B,UAAWlK,KAAK+H,EAAM,MAAO,CAC3B,MAAMS,EAAQxI,EACdkK,EAAkB1B,CAAK,EAAIU,GAAUnB,CAAK,EAAE,OAAQ7M,GAAMiP,GAAapC,EAAOS,EAAOtN,CAAC,CAAC,EAAE,KAAI,CAC9F,CACD,OAAOgP,CACT,CAAC,EACGC,GAAe,CAACpC,EAAO5M,EAAGD,IAAMC,IAAMD,GAC1C,CAACsO,GAAkBzB,EAAO5M,EAAGD,CAAC,GAC9B,CAAC4O,GAAgB/B,EAAO5M,EAAGD,CAAC,EACxBkP,GAAwBrC,GAAU,CACpC,MAAM9Q,EAAO,CAAA,EACPoT,EAAalP,GAAM,CACvB,MAAMmP,EAAS,CAACnP,CAAC,EACjB,UAAWD,KAAK6O,GAAoBhC,EAAO5M,CAAC,EACrClE,EAAKiE,CAAC,IACTjE,EAAKiE,CAAC,EAAI,GACVoP,EAAO,KAAK,GAAGD,EAAUnP,CAAC,CAAC,GAE/B,OAAOoP,CACX,EACQC,EAAU,CAAA,EAChB,UAAWvK,KAAK+H,EAAM,MAAO,CAC3B,MAAMS,EAAQxI,EACd,GAAI,CAAC/I,EAAKuR,CAAK,EAAG,CAChBvR,EAAKuR,CAAK,EAAI,GACd,MAAM8B,EAASD,EAAU7B,CAAK,EAC1B8B,EAAO,OAAS,GAClBC,EAAQ,KAAKD,CAAM,CAEtB,CACF,CACD,OAAOC,CACT,EAIIC,GAAc,CAChB,KAAM,OACN,KAAM,OACN,eAAgB,CAAE,EAClB,MAAO,CAAE,CACX,EACIC,GAAc,CAAC,CACjB,KAAAxC,EACA,GAAArB,EAAKF,GAAU,EACf,KAAAgE,EAAO9D,EACP,YAAA+D,EAAc,CAAE,EAChB,QAAAzC,EAAU,CAAE,EACZ,KAAAjZ,CACF,IAAM,CACJ,MAAM2b,EAAU,CACd,KAAAF,EACA,GAAA9D,EACA,GAAG+D,CACP,EAaE,OAPc7C,GAAO,CACnB,MAAO0C,GACP,OAPiB,CACjB,KAAMhD,GACN,KAAM,CAAE,EACR,QAAAoD,CACJ,EAII,KAAA3C,EACA,QAAAC,EACA,KAAAjZ,CACJ,CAAG,CAEH,EAMI4b,GAAcC,GACT,CAACziB,EAAQ0iB,IAAY,CAC1B,MAAMvgB,EAAM,OAAOsgB,GAAgB,WAAaA,EAAYC,CAAO,EAAIA,EAAQD,CAAW,EAC1F,MAAO,CACL,GAAGziB,EACH,CAACmC,CAAG,EAAGugB,CACb,CACA,EAIIC,GAAU,CACZ,MAAO,QACP,KAAM,MACR,EACIC,GAAchc,GAASA,EAAK,WAAW,eAAe,WAAW,GAAKA,EAAK,UAAU,eAAe,WAAW,GAAK,cAAeA,EACnIic,GAAYC,GAAMA,IAAM,QAC5B,cAAeA,GAAK,eAAgBA,GAAK,cAAeA,EACpDC,GAAaD,GAAM,CAAC,MAAM,QAAQA,CAAC,GAAK,CAACD,GAASC,CAAC,EAGnDE,GAAiBpc,GACfmc,GAAUnc,CAAI,EACTA,GACLic,GAASjc,CAAI,IACfA,EAAO,CAACA,CAAI,GACPA,EAAK,OACV4b,GAAYM,GAAMA,EAAE,WAAW,SAAS,EACxC,CAAE,CACN,GAKIG,GAAc,CAAC5C,EAAezZ,IAAS,CACzC,KAAM,CAAE,gBAAAkZ,EAAiB,mBAAAE,EAAoB,cAAAC,CAAa,EAAKI,EAEzD6C,EADUF,GAAcpc,CAAI,EACXoZ,CAAkB,EACzCmD,EAAQD,EAAQ,mDAAmD,EACnE,MAAME,EAASC,GAAapD,CAAa,EACnCqD,EAAoBC,EAAY,aAAa,CACjD,OAAAH,EACA,mBAAoBF,EAAO,WAAW,UACtC,gBAAApD,CACJ,CAAG,EACD,MAAO,CACL,KAAMP,GAAkBU,CAAa,EACrC,KAAMqD,CACV,CACA,EACIE,GAAe,CAAC,CAClB,eAAAC,EACA,KAAA7c,CACF,IAAM,CACJ,KAAM,CAAE,eAAA8c,EAAgB,KAAAhjB,EAAM,SAAAijB,EAAW,CAAE,CAAA,EAAKF,EAC1CG,EAAQH,EAAe,OAAS,GAChCI,EAAU,CAAC1D,EAAO2D,EAAY,CAAA,IAAO,CACzC,MAAMzD,EAAgBqD,EAAevD,CAAK,EACpC4D,EAAgBH,EAAMzD,CAAK,GACjC8C,GAAY5C,EAAezZ,CAAI,EAC/B,IAAIod,EAAW,CACb,CAAC7D,CAAK,EAAG4D,CACf,EACI,MAAMnD,EAAW+C,EAASxD,CAAK,GAAK,CAAA,EACpC,UAAW8D,KAASrD,EAClBoD,EAAW,CAAE,GAAGA,EAAU,GAAGH,EAAQI,EAAOD,CAAQ,GAEtD,MAAO,CAAE,GAAGF,EAAW,GAAGE,EAC9B,EACQE,EAAiBL,EAAQnjB,CAAI,EACnC,MAAO,CACL,GAAG+iB,EACH,MAAOS,CACX,CACA,EACIb,GAAgBrG,GACVjZ,GAASiZ,CAAG,EAA0B,IAAI,WAAWA,EAAI,OAAQA,EAAI,WAAYA,EAAI,UAAU,EAA/E,IAAI,WAAWA,CAAG,EAExCjZ,GAAYiZ,GAAQ,WAAYA,GAAO,eAAgBA,GAAO,eAAgBA,EAG9EmH,GAAoB,CAACzE,EAAO0E,IAAW,OAAO,YAAYA,EAAO,IAAKjE,GAAU,CAACA,EAAOkE,GAAiB3E,EAAOS,CAAK,CAAC,CAAC,CAAC,EACxHkE,GAAmB,CAAC3E,EAAOS,IAAUT,EAAM,eAAeS,CAAK,EAG/DmE,GAAW5E,GAAUA,EAAM,KAAK,IAAKS,GAAUG,GAAQZ,EAAOS,CAAK,CAAC,EAGxE,SAASoE,GAAW7E,EAAO8E,EAAY,CACrC,OAAI,OAAOA,GAAe,SAEXlE,GAAQZ,EADP8E,CACmB,EACrB,KAAK,KAEJA,EACD,KAAK,KAAK,IAAKrE,GAAUG,GAAQZ,EAAOS,CAAK,CAAC,CAE9D,CAGA,IAAIsE,GAAQ,CAAA,EACRC,GAAe,CAAC,CAClB,MAAAhF,EACA,MAAAiF,EACA,MAAAC,EAAQlF,EAAM,KACd,IAAAmF,EAAM,CAAE,EACR,KAAAC,EACA,OAAAV,CACF,IACMA,EACKA,EAAO,OACZ,CAACpkB,EAAQmgB,KAAW,CAClB,GAAGngB,EACH,CAACmgB,CAAK,EAAGoE,GAAW7E,EAAOS,CAAK,CACxC,GACMsE,EACN,GAEMK,IACFF,EAAQG,GAASD,CAAI,GACnBH,IAAU,EACLF,GACFG,EAAM,OAAO,CAAC5kB,EAAQmgB,IAAU,CACrC,MAAMO,EAAU6D,GAAW7E,EAAOS,CAAK,EACjC6E,EAAkBtE,EAAQ,OAAQC,GAAW,EAAEA,KAAU3gB,EAAO,EAAE,OAAQ2gB,GAAW,CAACkE,EAAI,SAASlE,CAAM,CAAC,EAC1GsE,EAAcP,GAAa,CAC/B,MAAAhF,EACA,MAAOiF,EAAQA,EAAQ,EAAI,OAC3B,MAAOK,EACP,IAAAH,CACN,CAAK,EACD,MAAO,CACL,GAAG7kB,EACH,CAACmgB,CAAK,EAAGO,EACT,GAAGuE,CACT,CACG,EAAER,EAAK,GAENM,GAAYG,GACD,OAAO,KAAKA,CAAO,EACR,QAAS/E,GAAU+E,EAAQ/E,CAAK,CAAC,EAChC,OAAQA,GAAU,EAAEA,KAAS+E,EAAQ,EAG5DC,GAAezF,GAAU,CAC3B,MAAMiE,EAAW,CAAA,EACjB,UAAWxD,KAASU,GAAUnB,CAAK,EACjC,UAAWiB,KAAU4D,GAAW7E,EAAOS,CAAK,EACrCwD,EAAShD,CAAM,IAClBgD,EAAShD,CAAM,EAAI,IACrBgD,EAAShD,CAAM,EAAE,KAAKR,CAAK,EAE/B,OAAOwD,CACT,EACIyB,GAAiBF,GAAY,CAC/B,MAAMG,EAAW,CAAA,EACXze,EAAO,OAAO,KAAKse,CAAO,EAChC,UAAW/E,KAASvZ,EAClB,UAAW+Z,KAAUuE,EAAQ/E,CAAK,EAC3BkF,EAAS1E,CAAM,IAClB0E,EAAS1E,CAAM,EAAI,IACrB0E,EAAS1E,CAAM,EAAE,KAAKR,CAAK,EAG/B,OAAOkF,CACT,EAGIC,GAAW5F,GAAUA,EAAM,MAAMA,EAAM,IAAI,EAG3C6F,GAAW,CAAC7F,EAAO8F,EAAU,KAAO,CACtC,KAAM,CAAE,WAAA1T,EAAa2T,EAAQ,EAAGD,EAChC,IAAI5B,EAAQ,OAAO,OAAOlE,EAAM,KAAK,EACrC,MAAMgG,EAAmB,OAAO,YAC9B9B,EAAM,IAAKxD,GAAS,CAACA,EAAK,KAAMA,EAAK,KAAK,KAAK,MAAM,CAAC,CAC1D,EACQuF,EAAS,CAAA,EACTtJ,EAAQ+D,GAAS,CACrBuF,EAAO,KAAKvF,CAAI,EAChBwD,EAAQA,EAAM,OAAQ7P,GAAMA,EAAE,OAASqM,EAAK,IAAI,EAChD,MAAMQ,EAAWL,GAAkBb,EAAOU,EAAK,IAAI,EACnD,UAAWwF,KAAUhF,EACnB8E,EAAiBE,CAAM,IACzB,GAAIhF,EAAS,SAAW,EACtB,OACF,MAAMiF,EAAYjF,EAAS,CAAC,EAC5B,GAAI8E,EAAiBG,CAAS,EAAI,EAChC,OACF,MAAMC,EAAQpG,EAAM,MAAMmG,CAAS,EACnCxJ,EAAKyJ,CAAK,CACd,EACE,KAAOlC,EAAM,OAAS,GAAG,CAEvB,MAAMmC,EADQnC,EAAM,OAAQxD,GAASsF,EAAiBtF,EAAK,IAAI,IAAM,CAAC,EAAE,KAAKtO,CAAU,EAChE,QACvBuK,EAAK0J,CAAQ,CACd,CACD,OAAOJ,CACT,EACIF,GAAS,CAAC3S,EAAGD,IAAMC,EAAE,KAAOD,EAAE,KAAO,GAAKC,EAAE,KAAOD,EAAE,KAAO,EAAI,EAGhEmT,GAAc,CAACtG,EAAOuG,EAAWC,KAAiB,CACpD,KAAM,CAAE,KAAAC,EAAOV,GAAQ,OAAAW,EAASC,IAAaJ,EAASvG,CAAK,EAE3D,OADe6F,GAAS7F,EAAO,CAAE,WAAYyG,CAAI,CAAE,EACrC,IAAK/F,GAAS,CAC1B,MAAMkG,EAAYlG,EAAK,WAAa,CAACgG,EAAOhG,CAAI,EAChD,MAAO,CAAE,GAAGA,EAAM,UAAAkG,EACtB,CAAG,CACH,EACIJ,GAAgBvO,IAAO,CAAA,GACvB0O,GAAY1O,GAAM,GAGlB4O,GAAgB,CAACzT,EAAGD,IAClBC,IAAM,QAAUD,IAAM,QAEtBC,EAAE,SAAWD,EAAE,OACV,IACTC,EAAE,KAAI,EACND,EAAE,KAAI,EACCC,EAAE,MAAM,CAACqN,EAAO5hB,IAAM4hB,IAAUtN,EAAEtU,CAAC,CAAC,GAKzCioB,GAAQ,CAACC,EAAMC,IAAW,CAC5B,GAAID,EAAK,OAASC,EAAO,KACvB,MAAM,IAAI,MAAM,8CAA8C,EAChE,MAAMC,EAAc,CAClB,GAAGD,EAAO,MACV,GAAGD,EAAK,KACZ,EACQG,EAAuB,CAC3B,GAAGF,EAAO,eACV,GAAGD,EAAK,cACZ,EAEQI,EADcC,GAAM,CAAC,GAAGL,EAAK,KAAM,GAAGC,EAAO,IAAI,CAAC,EAC3B,OAAOK,GAAmBJ,CAAW,CAAC,EAC7DK,EAAc,CAClB,KAAMP,EAAK,KACX,KAAMI,EACN,eAAgBD,EAChB,MAAOD,CACX,EACE,OAAAK,EAAY,KAAOA,EAAY,KAAK,KAAI,EACjCA,CACT,EACID,GAAsBnD,GAAW5Q,GAAM,CAAC,OAAO,OAAO4Q,CAAK,EAAE,KAAKqD,GAASjU,CAAC,CAAC,EAC7EiU,GAAYjU,GAAOe,GAAMA,EAAE,KAAK,KAAK,SAASf,CAAC,EAG/CkU,GAAexH,GAAU,CAC3B,KAAM,CAAE,KAAAyH,EAAM,KAAAzmB,EAAM,eAAAgjB,CAAc,EAAKhE,EACjCiE,EAAWwB,GAAYzF,CAAK,EAClC,MAAO,CACL,KAAAyH,EACA,KAAAzmB,EACA,eAAAgjB,EACA,SAAAC,CACJ,CACA,EAIIyD,GAAa1H,GACR2H,GAAKH,GAAYxH,CAAK,CAAC,EAE5B4H,GAAc,CAACC,EAAY3gB,IAAS,CACtC,MAAM8Y,EAAQ8H,GAAOD,CAAU,EAC/B,OAAO/D,GAAa,CAAE,eAAgB9D,EAAO,KAAA9Y,CAAM,CAAA,CACrD,EAII,CAAE,UAAW6gB,GAAY,WAAYC,GAAa,UAAWC,EAAY,EAAGzI,GAC5E0I,EAAe,CAACC,EAAOC,EAAOC,GAAS,IAAO,CAChD,KAAM,CAAE,KAAA9lB,EAAM,KAAAogB,EAAOpgB,CAAI,EAAK4lB,EACxBG,EAAgBC,GAAQ,GAAG5F,CAAI,IAAIpgB,CAAI,IAAI6lB,CAAI,EAAE,EACvD,MAAO,CACL,KAAA7lB,EACA,KAAAogB,EACA,WAAY,EACZ,UAAW6F,GAAW,QAAQC,EAAMV,GAAYO,CAAa,EAAE,MAAM,EAAG,EAAE,CAAC,EAC3E,WAAYI,EAAY,QAAQD,EAAMT,GAAaM,CAAa,EAAE,MAAM,EAAG,EAAE,CAAC,EAC9E,UAAWG,EAAMR,GAAYK,CAAa,CAC9C,CACA,EAGIK,GAAuBC,GAAY,CACrC,IAAIC,EACJ,UAAWC,KAAaF,EAAS,CAC/B,MAAMpF,EAASoF,EAAQE,CAAS,GAC5BD,IAAW,QAAUrF,EAAO,WAAaqF,EAAO,cAClDA,EAASrF,EAEZ,CACD,OAAOqF,CACT,EAGIE,EAAc7hB,GAASgc,GAAWhc,CAAI,EAAI,CAC5C,KAAMA,EAAK,KACX,KAAMA,EAAK,KACX,WAAYA,EAAK,WACjB,WAAYA,EAAK,WAAW,UAC5B,UAAWA,EAAK,UAAU,SAC5B,EAAIA,EAOA8hB,GAAkB,cAAc,KAAM,CACxC,KACA,QACA,YAAY1pB,EAAS2pB,EAAS,CAC5B,QACA,KAAK,QAAU3pB,EACf,KAAK,QAAU2pB,CAChB,CACH,EAKIC,GAAc,CAEhB,aAAaxI,EAAMV,EAAO,CACxB,KAAM,CAAE,KAAMS,CAAO,EAAGC,EAClB,CAAE,cAAAH,CAAe,EAAGP,EAAM,eAAeS,CAAK,EAC9C0I,EAAetJ,GAAkBU,CAAa,EACpD,OAAIE,IAAU0I,EACLzJ,GACF0J,EAAK,oDAAqD,CAC/D,KAAA1I,EACA,KAAMD,EACN,SAAU0I,CAChB,CAAK,CACF,EAED,aAAazI,EAAMV,EAAO,CACxB,UAAWS,KAASC,EAAK,KAAK,KAC5B,GAAI,EAAED,KAAST,EAAM,OACnB,OAAOoJ,EACL,iFACV,EACI,OAAO1J,EACR,EAED,aAAagB,EAAMV,EAAO,CACxB,MAAMqJ,EAAgB3I,EAAK,KAAK,KAAK,SAAW,EAC1C4I,EAAc,SAAU5I,EAAK,MAAQA,EAAK,KAAK,OAASjB,GACxD8J,EAAiB3D,GAAQ5F,CAAK,IAAMU,EAC1C,OAAI2I,IAAkBE,GAAkBA,IAAmBD,EAClD5J,GAQF0J,EAPSE,EAEdD,EAAgB,2EAA+E,6CAG/FA,EAAgB,wCAA0C,uEAEvC,CAAE,KAAA3I,EAAM,MAAAV,CAAO,CAAA,CACrC,EAGD,mBAAmBU,EAAMV,EAAO,CAC9B,KAAM,CAAE,UAAAwJ,CAAS,EAAK9I,EAAK,KACrB+I,EAAM,KAAK,MACjB,GAAID,EAAYC,EACd,OAAOL,EAAK,yCAA0C,CAAE,KAAA1I,EAAM,IAAA+I,CAAG,CAAE,EAErE,UAAWhJ,KAASC,EAAK,KAAK,KAAM,CAClC,MAAMgJ,EAAW1J,EAAM,MAAMS,CAAK,EAClC,GAAIiJ,EAAS,KAAK,UAAYF,EAC5B,OAAOJ,EAAK,+DAAgE,CAC1E,KAAA1I,EACA,SAAAgJ,CACV,CAAS,CACJ,CACD,OAAOhK,EACR,CACH,EACI0J,EAAO,CAACvP,EAAKlb,KACR,CACL,QAAS,GACT,MAAO,IAAIqqB,GAAgBnP,EAAKlb,CAAI,CACxC,GAEIgrB,GAAsBnoB,GAAW,CACnC,MAAMlB,EAAS,CAAA,EACTspB,EAAmB,CAAClJ,EAAMV,IACvB,GAAG6J,EAAM,UAAWnJ,CAAI,CAAC,IAAImJ,EAAM,UAAW7J,CAAK,CAAC,GAE7D,UAAWvd,KAAOjB,EAChBlB,EAAOmC,CAAG,EAAIqnB,EAAStoB,EAAOiB,CAAG,EAAGmnB,CAAgB,EACtD,OAAOtpB,CACT,EACIypB,GAAaJ,GAAmBT,EAAW,EAG3Cc,GAAW,CAAChK,EAAOiK,EAAmB,KAAO,CAC/C,CACE,MAAMC,EAAWlK,EAAM,KACjBmK,EAAWnK,EAAM,eAAekK,CAAQ,EACxCf,EAAetJ,GAAkBsK,EAAS,aAAa,EAC7D,GAAIhB,IAAiBe,EACnB,OAAOd,EAAK,qDAAsD,CAChE,SAAAc,EACA,aAAAf,EACA,SAAAgB,CACR,CAAO,CACJ,CACD,UAAWC,KAAYpK,EAAM,KAAM,CACjC,MAAMqK,EAAWrK,EAAM,eAAeoK,CAAQ,EACxCjB,EAAetJ,GAAkBwK,EAAS,aAAa,EAC7D,GAAIlB,IAAiBiB,EACnB,OAAOhB,EAAK,qDAAsD,CAChE,SAAAgB,EACA,aAAAjB,EACA,SAAAkB,CACR,CAAO,CACJ,CACD,MAAMC,EAAsB,OAAO,KAAKtK,EAAM,cAAc,EACtDuK,EAAa,OAAO,KAAKvK,EAAM,KAAK,EAC1C,GAAIsK,EAAoB,SAAWC,EAAW,OAC5C,OAAOnB,EAAK,2DAA4D,CACtE,oBAAAkB,EACA,WAAAC,CACN,CAAK,EAgBH,MAAMC,GAfoB,IAAIC,IAAiBC,GAAgB,CAC7D,MAAMC,EAAmBC,GAAOH,CAAW,EAC3C,UAAWhoB,KAAOkoB,EAAkB,CAClC,MAAME,EAAYF,EAAiBloB,CAAG,EACtC,GAAI,CACF,MAAMnC,EAASuqB,EAAUH,EAAa1K,CAAK,EAC3C,GAAI,CAAC1f,EAAO,QACV,OAAOA,CACV,OAAQf,EAAO,CACd,KAAM,CAAE,QAAAD,CAAS,EAAGC,EACpB,OAAO6pB,EAAK9pB,EAASC,CAAK,CAC3B,CACF,CACD,OAAOmgB,EACX,GAC+CqK,GAAYE,CAAgB,EACzE,UAAWvJ,KAAQ,OAAO,OAAOV,EAAM,KAAK,EAAG,CAC7C,MAAM1f,EAASkqB,EAAmB9J,CAAI,EACtC,GAAI,CAACpgB,EAAO,QACV,OAAOA,CACV,CACD,OAAOof,EACT,EACIkL,GAAUE,GAAkBA,EAAc,OAAO,CAACxqB,EAAQyqB,IAAO,OAAO,OAAOzqB,EAAQyqB,CAAE,EAAG,CAAE,CAAA,EAG9FC,GAAc,CAAC,CACjB,aAAAC,EACA,QAAAC,EACA,SAAA3E,EACA,WAAYkE,CACd,IACUzK,IACNgK,GAAShK,EAAOyK,CAAW,EACVnE,GAAYtG,EAAOuG,CAAQ,EAC5B,OAAO2E,EAASD,CAAY,GAK5CE,GAAQ,cAAc5sB,EAAa,CACrC,KACA,QACA,aACA,QACA,SACA,WACA,QACA,MACA,MACA,YAAY,CACV,KAAA2hB,EACA,QAAAC,EAAU,CAAE,EACZ,MAAAH,EACA,YAAA4C,EACA,aAAAqI,EAAe,CAAE,EACjB,QAAAC,EACA,WAAYT,EACZ,SAAAlE,EAAWC,GACX,KAAAtf,CACJ,EAAK,CACD,QACI8Y,IAAU,QACZoL,EAAQjI,GAASjc,CAAI,EAAG,oEAAoE,EAC5F,KAAK,MAAQwb,GAAY,CAAE,KAAAxC,EAAM,YAAA0C,EAAa,KAAA1b,CAAI,CAAE,GAC3CmkB,GAAQrL,CAAK,EACtB,KAAK,MAAQA,GAEboL,EAAQlkB,CAAI,EACZ,KAAK,MAAQ0gB,GAAY5H,EAAO9Y,CAAI,GAEtC,KAAK,QAAUiZ,EACf,KAAK,aAAe8K,EACpB,KAAK,QAAUC,EACf,KAAK,WAAaT,EAClB,KAAK,SAAWlE,EAChB,KAAK,KAAOrG,EACZ,KAAK,QAAUoD,GAAcpc,CAAI,EACjC,KAAK,YAAW,CACjB,CAED,UAAW,CACT,OAAO,KAAK,KACb,CAED,UAAW,CACT,OAAO,KAAK,KACb,CAKD,MAAO,CACL,OAAOwgB,GAAU,KAAK,KAAK,CAC5B,CAWD,SAASzH,EAAQ/Y,EAAM,CACrB,MAAMokB,EAAoB,CACxB,QAAS,OACT,GAAGrL,CACT,EACI,GAAI/Y,IAAS,OAAQ,CACnB,MAAMqkB,EAAW,KAAK,MAAM,KAAK,KAAI,EAAG,CAAC,EACnCC,EAAgB,KAAK,MAAM,eAAeD,CAAQ,EAAE,mBAC1DrkB,EAAO,KAAK,QAAQskB,CAAa,CACvC,MACM,KAAK,QAAQtkB,EAAK,WAAW,SAAS,EAAIA,EAE5C,KAAK,MAAQ6Y,GAAO,CAClB,MAAO,KAAK,MACZ,OAAQuL,EACR,KAAM,KAAK,KACX,KAAApkB,EACA,QAAS,KAAK,OACpB,CAAK,EACD,KAAM,CAACugB,CAAI,EAAI7C,GAAQ,KAAK,KAAK,EACjC,YAAK,MAAQ,KAAK,QAAQ,KAAK,MAAO6C,CAAI,EAC1C,KAAK,KAAK,UAAW,CAAE,KAAM,KAAK,MAAM,IAAI,CAAE,EACvCxH,CACR,CAMD,MAAMwL,EAAY,CAChB,KAAK,MAAQ3E,GAAM,KAAK,MAAO2E,CAAU,EACzC,KAAK,YAAW,CACjB,CAKD,UAAW,CACT,OAAOzB,GAAS,KAAK,MAAO,KAAK,UAAU,CAC5C,CAED,aAAc,CACZ,MAAM0B,EAAUV,GAAY,CAC1B,aAAc,KAAK,aACnB,QAAS,KAAK,QACd,SAAU,KAAK,SACf,WAAY,KAAK,UACvB,CAAK,EACD,KAAK,MAAQU,EAAQ,KAAK,KAAK,EAC/B,KAAK,KAAK,UAAW,CAAE,KAAM,KAAK,MAAM,IAAI,CAAE,CAC/C,CACH,EACIL,GAAW7pB,GAAWA,GAAQ,eAAe,MAAM,EAGnDmqB,GAAe7F,GACV,IAAIqF,GAAMrF,CAAO,EAItB8F,GAAkB,CAAC5L,EAAO6L,IAAc,CAC1C,MAAMvsB,EAAU,CACd,KAAM0gB,EAAM,KACZ,KAAMA,EAAM,IAChB,EACQ,CAAE,MAAA8L,EAAO,IAAAC,EAAK,eAAAC,CAAc,EAAKH,EACjCrP,EAAQ,CAAE,GAAGqP,GACbI,EAAUjM,EAAM,KAChBkM,EAAYJ,EAAM,KACxB,GAAIC,EAAI,cACN,OAAAzsB,EAAQ,MAAQysB,EAAI,cACpB,OAAOA,EAAI,cACJ,CAACvP,EAAOld,CAAO,EAGxB,GADuBunB,GAAcoF,EAASD,CAAc,EAE1D,MAAO,CAACxP,EAAO,MAAM,EAGvB,GADuBqK,GAAcoF,EAASC,CAAS,EAErD,OAAA1P,EAAM,eAAiByP,EAChB,CAACzP,EAAOld,CAAO,EAExB,MAAM6sB,EAAkB,OAAO,YAC7B,CAEE,GAAGD,EACH,GAAGA,EAAU,QAAS5Y,GAAM+N,GAAqBrB,EAAO1M,CAAC,CAAC,EAE1D,GAAG0Y,EACH,GAAGA,EAAe,QAAS1Y,GAAM+N,GAAqBrB,EAAO1M,CAAC,CAAC,EAE/D,GAAG,OAAO,KAAKwY,EAAM,SAAS,EAE9B,GAAGC,EAAI,KACR,EAAC,IAAKzY,GAAM,CAACA,EAAG,EAAI,CAAC,CAC1B,EACE,IAAI8Y,EAAwB,CAAA,EAG5B,GAFmBF,EAAU,OAAS,GACtCA,EAAU,MAAO5Y,GAAMA,KAAK0M,EAAM,KAAK,EAErCoM,EAAwBjL,GAAUnB,CAAK,EAAE,OAAQS,GAAU,EAAEA,KAAS0L,EAAgB,MACjF,CACL,GAAIL,EAAM,UAAW,CACnB,MAAMO,EAAc,CAAE,GAAGrM,EAAM,eAAgB,GAAG8L,EAAM,gBACxDxsB,EAAQ,KAAO,OAAO,KAAK6sB,CAAe,EAAE,OAAQ1L,GAAU,EAAEA,KAAS4L,EAAY,EACrFD,EAAwBjL,GAAUnB,CAAK,EAAE,OAAQS,GAAU,EAAEA,KAAS0L,EAAgB,CACvF,CACItF,GAAcoF,EAASF,EAAI,eAAe,IAC7CzsB,EAAQ,UAAY0lB,GAAa,CAAE,MAAAhF,EAAO,IAAKgM,CAAc,CAAE,EAC/DxP,EAAM,IAAI,gBAAkByP,EAE/B,CAED,MAAMK,EADqBR,EAAM,KACO,OAAOM,CAAqB,EACpE,GAAIE,EAAa,OAAS,EAAG,CAC3BhtB,EAAQ,MAAQmlB,GAAkBzE,EAAOsM,CAAY,EACrD,MAAMC,EAAyBvH,GAAa,CAAE,MAAAhF,EAAO,OAAQsM,CAAY,CAAE,EAC3EhtB,EAAQ,UAAY,CAAE,GAAGA,EAAQ,UAAW,GAAGitB,EAChD,CACD,OAAA/P,EAAM,IAAI,MAAQuP,EAAI,MAAM,OAAOO,CAAY,EAC/C9P,EAAM,MAAM,KAAO,GACZ,CAACA,EAAOld,CAAO,CACxB,EAGIktB,GAAgB,KAAO,CACzB,MAAO,CACL,KAAM,CAAE,EACR,eAAgB,CAAE,EAClB,KAAM,CAAE,EACR,UAAW,CAAE,CACd,EACD,IAAK,CACH,KAAM,CAAE,EACR,MAAO,CAAE,CACV,EACD,eAAgB,CAAE,EAClB,gBAAiB,CACnB,GAIIC,GAAiB,CAACzM,EAAO6L,EAAWvsB,EAAS4H,EAAMid,EAAUL,KAAiB,CAChF,MAAM8E,EAAUtF,GAAcpc,CAAI,EAC5B4kB,EAAQxsB,EACdotB,EAAQ1M,EAAM,OAAS8L,EAAM,KAAM,wCAAwC,EAC3E,MAAMtP,EAAQ,CACZ,GAAGqP,EACH,MAAO,CACL,KAAMC,EAAM,KACZ,KAAMA,EAAM,MAAQ,CAAE,EACtB,eAAgB,CAAE,GAAGD,EAAU,MAAM,eAAgB,GAAGC,EAAM,KAAO,EACrE,UAAW,CAAE,GAAGD,EAAU,MAAM,UAAW,GAAGC,EAAM,SAAW,CAChE,CACL,EACE,GAAI,OAAO,KAAKtP,EAAM,MAAM,cAAc,EAAE,OAAS,EAAG,CACtD,KAAM,CAAE,KAAAiL,CAAM,EAAGqE,EACXa,EAAclH,GAAYzF,CAAK,EAC/B4M,EAAgBlH,GAAclJ,EAAM,MAAM,SAAS,EACnDyH,EAAW,CAAE,GAAG0I,EAAa,GAAGC,CAAa,EAC7C5I,EAAiB,CACrB,GAAGhE,EAAM,eACT,GAAGxD,EAAM,MAAM,cACrB,EACUuH,EAAiB,CACrB,GAAG/D,EACH,KAAAyH,EACA,eAAAzD,EACA,SAAAC,CACN,EACUwH,EAAatH,EAAQ,CAAE,eAAAJ,EAAgB,KAAM6E,CAAO,CAAE,EACtDtB,EAAcR,GAAM9G,EAAOyL,CAAU,EACrCoB,EAAa7C,GAAS1C,CAAW,EACnCuF,EAAW,QACb7M,EAAQsH,GAER9K,EAAM,iBAAmB,EACzBA,EAAM,IAAI,cAAgBqQ,EAAW,OAEvCrQ,EAAM,MAAM,eAAiB,GAC7BA,EAAM,MAAM,UAAY,EACzB,CACD,MAAO,CAACwD,EAAOxD,CAAK,CACtB,EAKIsQ,GAAa,CAACC,EAAUC,EAASC,GAAS,EAAI7E,EAAO8E,QAChD,CACL,SAAAH,EACA,OAAAC,EACA,KAAM9E,EAAa,CAAE,KAAMjF,GAAQ,KAAM,KAAM+J,CAAQ,EAAE5E,CAAI,CACjE,GAII+E,GAAcjN,GAAS,CACzB,KAAM,CAAE,OAAA8M,EAAQ,SAAAD,CAAU,EAAG7M,EAC7B,MAAO,CACL,OAAA8M,EACA,SAAAD,EACA,KAAMhE,EAAW7I,EAAK,IAAI,CAC9B,CACA,ECj9BA,SAASkN,IAAY,CACnB,GAAI,OAAO,WAAe,IACxB,OAAO,WAET,GAAI,OAAO,KAAS,IAClB,OAAO,KAET,GAAI,OAAO,OAAW,IACpB,OAAO,OAET,GAAI,OAAOtP,GAAW,IACpB,OAAOA,EAEX,CACA,SAASuP,IAAc,CACrB,MAAMC,EAAIF,KACV,GAAME,EAAE,WACN,OAAOA,EAAE,UAGb,CAUA,MAAMC,GAAkBC,GAAW,CACjC,GAAI,OAAO,OAAW,IACpB,OAEF,MAAMC,EAAWJ,KACbI,GACFA,EAAS,SAASD,CAAO,CAE7B,ECrCA,MAAME,EAAQ,CACZ,YAAYC,EAAU,CACpB,KAAK,SAAWA,EAChB,KAAK,QAAU,GACf,KAAK,SAAW,KAChB,KAAK,MAAQ,IACd,CACD,OAAQ,CACN,KAAK,QAAU,GACf,KAAK,MAAK,CACX,CACD,OAAQ,CAGF,KAAK,WACP,KAAK,SAAS,KAAO,KACrB,KAAK,MAAQ,KAAK,SAErB,CACD,QAAQjvB,EAAO,CACb,MAAMkvB,EAAW,CACf,MAAOlvB,EACP,KAAM,IACZ,EACI,GAAI,KAAK,SAAU,CACjB,KAAK,MAAM,KAAOkvB,EAClB,KAAK,MAAQA,EACb,MACD,CACD,KAAK,SAAWA,EAChB,KAAK,MAAQA,EACT,KAAK,SACP,KAAK,MAAK,CAEb,CACD,OAAQ,CACN,KAAO,KAAK,UAAU,CAGpB,MAAMC,EAAW,KAAK,SACtB,KAAK,SAASA,EAAS,KAAK,EAC5B,KAAK,SAAWA,EAAS,IAC1B,CACD,KAAK,MAAQ,IACd,CACH,CAEA,MAAMC,GAAkB,IAClBC,GAAiB,GACjBC,GAAa,GACbC,GAAmB,IACnBC,GAAW,IACXC,GAAc,cAEdC,GAAc,cASpB,SAASC,GAAiBC,EAAUzP,EAAI,CACtC,MAAO,CACL,KAAM,gBAAgByP,CAAQ,IAAIzP,CAAE,EACxC,CACA,CASA,SAAS0P,GAAqB1P,EAAI3L,EAAQ,CACxC,MAAO,CACL,KAAM,qBAAqB2L,CAAE,GAC7B,OAAA3L,CACJ,CACA,CAWA,SAASsb,GAAqBC,EAAUvb,EAAQ,CAC9C,MAAO,CACL,KAAM,qBAAqBub,CAAQ,GACnC,OAAAvb,EACA,QAASub,CACb,CACA,CACA,SAASC,GAAsB7P,EAAItf,EAAO,CACxC,MAAO,CACL,KAAM,sBAAsBsf,CAAE,GAC9B,MAAAtf,EACA,QAASsf,CACb,CACA,CACA,SAAS8P,GAAgBlR,EAAO,CAC9B,MAAO,CACL,KAAM0Q,GACN,MAAA1Q,CACJ,CACA,CAUA,SAASmR,EAAqBC,EAAK,CACjC,WAAW,IAAM,CACf,MAAMA,CACV,CAAG,CACH,CAEA,MAAMC,GAA0B,OAAO,QAAW,YAAc,OAAO,YAAc,eAErF,SAASC,GAAaC,EAAeC,EAAc,CACjD,MAAMC,EAAmBC,GAAaH,CAAa,EAC7CI,EAAkBD,GAAaF,CAAY,EACjD,OAAI,OAAOG,GAAoB,SACzB,OAAOF,GAAqB,SACvBE,IAAoBF,EAItB,GAEL,OAAOA,GAAqB,SACvBA,KAAoBE,EAEtB,OAAO,KAAKF,CAAgB,EAAE,MAAMzsB,GACnCA,KAAO2sB,EAGNL,GAAaG,EAAiBzsB,CAAG,EAAG2sB,EAAgB3sB,CAAG,CAAC,EAFtD,EAGV,CACH,CACA,SAAS4sB,GAAYC,EAAS,CAC5B,GAAI/uB,GAAQ+uB,CAAO,EACjB,OAAOA,EAET,IAAIhvB,EAAS,CAAA,EACTivB,EAAU,GACd,QAAS1wB,EAAI,EAAGA,EAAIywB,EAAQ,OAAQzwB,IAAK,CAEvC,OADaywB,EAAQ,WAAWzwB,CAAC,EACrB,CAEV,IAAK,IAEH0wB,GAAWD,EAAQzwB,EAAI,CAAC,EAExBA,IACA,SAEF,IAAK,IACHyB,EAAO,KAAKivB,CAAO,EACnBA,EAAU,GACV,QACH,CACDA,GAAWD,EAAQzwB,CAAC,CACrB,CACD,OAAAyB,EAAO,KAAKivB,CAAO,EACZjvB,CACT,CACA,SAAS6uB,GAAaK,EAAY,CAChC,GAAIC,GAAkBD,CAAU,EAC9B,OAAOA,EAAW,MAEpB,GAAI,OAAOA,GAAe,SACxB,OAAOA,EAET,MAAME,EAAYL,GAAYG,CAAU,EACxC,OAAOG,GAAiBD,CAAS,CACnC,CACA,SAASC,GAAiBD,EAAW,CACnC,GAAIA,EAAU,SAAW,EACvB,OAAOA,EAAU,CAAC,EAEpB,MAAMrwB,EAAQ,CAAA,EACd,IAAIuwB,EAASvwB,EACb,QAASR,EAAI,EAAGA,EAAI6wB,EAAU,OAAS,EAAG7wB,IACxC,GAAIA,IAAM6wB,EAAU,OAAS,EAC3BE,EAAOF,EAAU7wB,CAAC,CAAC,EAAI6wB,EAAU7wB,EAAI,CAAC,MACjC,CACL,MAAMgxB,EAAWD,EACjBA,EAAS,CAAA,EACTC,EAASH,EAAU7wB,CAAC,CAAC,EAAI+wB,CAC1B,CAEH,OAAOvwB,CACT,CACA,SAASywB,GAAUC,EAAY5vB,EAAU,CACvC,MAAMG,EAAS,CAAA,EACT0vB,EAAiB,OAAO,KAAKD,CAAU,EAC7C,QAASlxB,EAAI,EAAGA,EAAImxB,EAAe,OAAQnxB,IAAK,CAC9C,MAAM4D,EAAMutB,EAAenxB,CAAC,EAC5ByB,EAAOmC,CAAG,EAAItC,EAAS4vB,EAAWttB,CAAG,EAAGA,EAAKstB,EAAYlxB,CAAC,CAC3D,CACD,OAAOyB,CACT,CACA,SAAS2vB,GAAc5wB,EAAO,CAC5B,OAAIkB,GAAQlB,CAAK,EACRA,EAEF,CAACA,CAAK,CACf,CACA,SAAS6wB,EAAQ7wB,EAAO,CACtB,OAAIA,IAAU,OACL,GAEF4wB,GAAc5wB,CAAK,CAC5B,CACA,SAAS8wB,GAAcC,EAAQjQ,EAASzhB,EAAO2xB,EAAM,CACnD,OAAI,OAAOD,GAAW,WACbA,EAAO,CACZ,QAAAjQ,EACA,MAAAzhB,EACA,KAAA2xB,CACN,CAAK,EAEID,CACT,CACA,SAAS7vB,GAAQlB,EAAO,CACtB,OAAO,MAAM,QAAQA,CAAK,CAC5B,CACA,SAASixB,GAAkB5xB,EAAO,CAChC,OAAOA,EAAM,KAAK,WAAW,oBAAoB,CACnD,CACA,SAAS6xB,GAAwBC,EAAY,CAC3C,OAAOP,GAAcO,CAAU,EAAE,IAAIC,GAC/B,OAAOA,EAAmB,KAAe,OAAOA,GAAmB,SAC9D,CACL,OAAQA,CAChB,EAEWA,CACR,CACH,CACA,SAASC,GAAgBC,EAAQ,CAC/B,GAAI,EAAAA,IAAW,QAAaA,IAAW5C,IAGvC,OAAOmC,EAAQS,CAAM,CACvB,CACA,SAASC,GAAWC,EAAaC,EAAcC,EAAmB,CAChE,MAAMC,EAAa,OAAOH,GAAgB,SACpCR,EAAOW,EAAaH,EAAc,OACxC,MAAO,CACL,MAAOG,EAAaH,EAAY,KAAOA,IAAc,KAAKR,CAAI,EAC9D,OAAQW,EAAaH,EAAY,MAAQC,IAAe,KAAKT,CAAI,EACjE,UAAWW,EAAaH,EAAY,SAAWE,IAAoB,KAAKV,CAAI,CAChF,CACA,CACA,SAASY,GAAeC,EAAa9wB,EAAO,CAC1C,MAAO,GAAGA,CAAK,IAAI8wB,CAAW,EAChC,CACA,SAASC,GAAuBzF,EAASzM,EAAK,CAC5C,MAAM/W,EAAQ+W,EAAI,MAAM,8BAA8B,EACtD,GAAI,CAAC/W,EACH,OAAOwjB,EAAQ,gBAAgB,OAAOzM,CAAG,EAE3C,KAAM,EAAGmS,EAAUC,CAAM,EAAInpB,EAEvBopB,EADO5F,EAAQ,iBAAiB2F,CAAM,EAClB,OAAO,OACjC,OAAQ,MAAM,QAAQC,CAAY,EAAIA,EAAaF,CAAQ,EAAIE,GAAc,GAC/E,CAKA,SAASC,GAAuBC,EAAU3S,EAAI,CAC5C,MAAO,GAAG2S,EAAS,SAAS,IAAI3S,CAAE,EACpC,CACA,IAAI4S,GAAY,EAChB,SAASC,GAAaC,EAAW7L,EAAS,CACxC,MAAM5E,EAAW,IAAI,IACf0Q,EAAc,IAAI,IAClBC,EAAqB,IAAI,QACzBC,EAAsB,IAAI,IAC1BC,EAAW,CAAA,EACX,CACJ,MAAAC,EACA,OAAAC,CACD,EAAGnM,EACEoM,EAAY,CAChB,SAAU,CAAC1wB,EAAQmvB,EAAQjyB,EAAOyzB,EAAOtT,EAAK,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,MAAM,CAAC,IAAM,CACpF,MAAMuT,EAAiB,CACrB,OAAA5wB,EACA,OAAAmvB,EACA,MAAAjyB,EACA,MAAAyzB,EACA,GAAAtT,EACA,UAAW,KAAK,IAAK,CAC7B,EACYwT,EAAmBd,GAAuB/vB,EAAQqd,CAAE,EAC1DyT,EAAO,UAAU,iBAAiBD,CAAgB,EAAID,EACtD,MAAMG,EAAUP,EAAM,WAAW,IAAM,CACrC,OAAOD,EAASM,CAAgB,EAChC,OAAOC,EAAO,UAAU,iBAAiBD,CAAgB,EACzDC,EAAO,OAAO9wB,EAAQmvB,EAAQjyB,CAAK,CACpC,EAAEyzB,CAAK,EACRJ,EAASM,CAAgB,EAAIE,CAC9B,EACD,OAAQ,CAAC/wB,EAAQqd,IAAO,CACtB,MAAMwT,EAAmBd,GAAuB/vB,EAAQqd,CAAE,EACpD0T,EAAUR,EAASM,CAAgB,EACzC,OAAON,EAASM,CAAgB,EAChC,OAAOC,EAAO,UAAU,iBAAiBD,CAAgB,EACrDE,IAAY,QACdP,EAAM,aAAaO,CAAO,CAE7B,EACD,UAAWf,GAAY,CACrB,UAAWa,KAAoBC,EAAO,UAAU,iBAAkB,CAChE,MAAMF,EAAiBE,EAAO,UAAU,iBAAiBD,CAAgB,EACrED,EAAe,SAAWZ,GAC5BU,EAAU,OAAOV,EAAUY,EAAe,EAAE,CAE/C,CACF,CACL,EACQI,EAAsB9zB,GAAS,CACnC,GAAI,CAACozB,EAAoB,KACvB,OAEF,MAAMW,EAA0B,CAC9B,GAAG/zB,EACH,OAAQizB,EAAU,SACxB,EACIG,EAAoB,QAAQY,GAAYA,EAAS,OAAOD,CAAuB,CAAC,CACpF,EACQH,EAAS,CACb,UAAW,CACT,kBAAmBxM,GAAS,UAAYA,EAAQ,SAAS,YAAc,CAAE,CAC1E,EACD,QAAS,IAAM,KAAK2L,IAAW,GAC/B,UAAW,CAACkB,EAAWnB,KACrBtQ,EAAS,IAAIyR,EAAWnB,CAAQ,EACzBmB,GAET,YAAanB,GAAY,CACvBtQ,EAAS,OAAOsQ,EAAS,SAAS,EAClC,MAAMoB,EAAWf,EAAmB,IAAIL,CAAQ,EAC5CoB,IAAa,SACfhB,EAAY,OAAOgB,CAAQ,EAC3Bf,EAAmB,OAAOL,CAAQ,EAErC,EACD,IAAKoB,GACIhB,EAAY,IAAIgB,CAAQ,EAEjC,KAAM,CAACA,EAAUpB,IAAa,CAC5B,MAAMqB,EAAWjB,EAAY,IAAIgB,CAAQ,EACzC,GAAIC,GAAYA,IAAarB,EAC3B,MAAM,IAAI,MAAM,yBAAyBoB,CAAQ,mBAAmB,EAEtEhB,EAAY,IAAIgB,EAAUpB,CAAQ,EAClCK,EAAmB,IAAIL,EAAUoB,CAAQ,CAC1C,EACD,QAASE,GAAgB,CACvB,MAAMJ,EAAW9B,GAAWkC,CAAY,EACxC,OAAAhB,EAAoB,IAAIY,CAAQ,EACzB,CACL,aAAc,CACZZ,EAAoB,OAAOY,CAAQ,CACpC,CACT,CACK,EACD,qBAAsBF,EACtB,OAAQ,CAAChxB,EAAQmvB,EAAQjyB,IAAU,CACjC4zB,EAAO,qBAAqB,CAC1B,KAAM,gBACN,UAAW9wB,EACX,SAAUmvB,EACV,MAAAjyB,CACR,CAAO,EACDiyB,EAAO,MAAMjyB,CAAK,CACnB,EACD,UAAAwzB,EACA,YAAa,KACJ,CACL,iBAAkB,CAChB,GAAGI,EAAO,UAAU,gBACrB,CACT,GAEI,MAAO,IAAM,CACX,MAAMS,EAAkBT,EAAO,UAAU,iBACzCA,EAAO,UAAU,iBAAmB,GACpC,UAAWU,KAAeD,EAAiB,CACzC,KAAM,CACJ,OAAAvxB,EACA,OAAAmvB,EACA,MAAAjyB,EACA,MAAAyzB,EACA,GAAAtT,CACV,EAAYkU,EAAgBC,CAAW,EAC/Bd,EAAU,SAAS1wB,EAAQmvB,EAAQjyB,EAAOyzB,EAAOtT,CAAE,CACpD,CACF,EACD,OAAQmT,EACR,QAASC,CACb,EACE,OAAOK,CACT,CAEA,MAAMW,GAAe,EAGrB,IAAIC,EAAgC,SAAUA,EAAkB,CAC9D,OAAAA,EAAiBA,EAAiB,WAAgB,CAAC,EAAI,aACvDA,EAAiBA,EAAiB,QAAa,CAAC,EAAI,UACpDA,EAAiBA,EAAiB,QAAa,CAAC,EAAI,UAC7CA,CACT,EAAE,CAAE,CAAA,EACJ,MAAMC,GAAiB,CACrB,MAAO,CACL,WAAY,CAACp0B,EAAIq0B,IACR,WAAWr0B,EAAIq0B,CAAE,EAE1B,aAAcvU,GACL,aAAaA,CAAE,CAEzB,EACD,OAAQ,QAAQ,IAAI,KAAK,OAAO,EAChC,SAAU,EACZ,EAOA,MAAMwU,EAAM,CAQV,YAAYC,EAAOxN,EAAS,CAC1B,KAAK,MAAQwN,EAEb,KAAK,UAAY,OAKjB,KAAK,MAAQ,OACb,KAAK,QAAU,OAEf,KAAK,GAAK,OACV,KAAK,QAAU,IAAI5F,GAAQ,KAAK,SAAS,KAAK,IAAI,CAAC,EACnD,KAAK,UAAY,IAAI,IACrB,KAAK,eAAiB,IAAI,IAC1B,KAAK,OAAS,OAEd,KAAK,kBAAoBwF,EAAiB,WAE1C,KAAK,QAAU,OAEf,KAAK,cAAgB,OACrB,KAAK,IAAM,OAEX,KAAK,YAAc,OACnB,KAAK,UAAY,OAEjB,KAAK,UAAY,OAEjB,KAAK,OAAS,OACd,KAAK,WAAa,OAClB,KAAK,IAAM,OAEX,KAAK,UAAY,GACjB,MAAMK,EAAkB,CACtB,GAAGJ,GACH,GAAGrN,CACT,EACU,CACJ,MAAAkM,EACA,OAAAC,EACA,OAAAhR,EACA,aAAAuS,EACA,GAAA3U,EACA,SAAA+T,EACA,QAAAa,CACD,EAAGF,EACJ,KAAK,OAAStS,EAASA,EAAO,OAASyQ,GAAa,KAAM,CACxD,MAAAM,EACA,OAAAC,CACN,CAAK,EACGwB,GAAW,CAACxS,GAEd,KAAK,OAAO,QAAQ2P,GAAW6C,CAAO,CAAC,EAEzC,KAAK,UAAY,KAAK,OAAO,QAAO,EACpC,KAAK,GAAK5U,GAAM,KAAK,UACrB,KAAK,OAASiH,GAAS,QAAU,KAAK,OAAO,QAC7C,KAAK,MAAQA,GAAS,OAAS,KAAK,OAAO,OAC3C,KAAK,QAAU7E,EACf,KAAK,cAAgBuS,EACrB,KAAK,QAAUD,EACf,KAAK,IAAMA,EAAgB,KAAOD,EAClC,KAAK,IAAM,KACX,KAAK,YAAc,CACjB,KAAM,KACN,GAAI,KAAK,GACT,UAAW,KAAK,UAChB,OAAQ,KAAK,OACb,MAAOv0B,GAAM,CACX,KAAK,UAAU,KAAKA,CAAE,CACvB,EACD,OAAQ,KAAK,OACb,UAAWqnB,GAAS,CAClB,GAAIA,EAAM,UAAY,KACpB,MAAM,IAAI,MAAM,2BAA2BA,EAAM,EAAE,OAAO,KAAK,EAAE,4BAA4B,EAE/FA,EAAM,MAAK,CACZ,EACD,KAAMsN,GAAgB,CACpB,MAAM90B,EAAY,KAAK,eAAe,IAAI80B,EAAa,IAAI,EACrDC,EAAmB,KAAK,eAAe,IAAI,GAAG,EACpD,GAAI,CAAC/0B,GAAa,CAAC+0B,EACjB,OAEF,MAAMC,EAAe,IAAI,IAAI,CAAC,GAAIh1B,EAAYA,EAAU,OAAQ,EAAG,CAAE,EAAG,GAAI+0B,EAAmBA,EAAiB,OAAM,EAAK,CAAA,CAAG,CAAC,EAC/H,UAAWE,KAAW,MAAM,KAAKD,CAAY,EAC3CC,EAAQH,CAAY,CAEvB,CACP,EAII,KAAK,KAAO,KAAK,KAAK,KAAK,IAAI,EAC/B,KAAK,OAAO,qBAAqB,CAC/B,KAAM,gBACN,SAAU,IAChB,CAAK,EACGd,IACF,KAAK,UAAYA,EACjB,KAAK,OAAO,KAAKA,EAAU,IAAI,GAEjC,KAAK,WAAW9M,GAAS,UAAYA,GAAS,KAAK,EAC/C8M,GAAY,KAAK,UAAU,SAAW,UACxC,KAAK,OAAO,YAAY,IAAI,CAE/B,CACD,WAAWkB,EAAgB,CACzB,GAAI,CACF,KAAK,UAAYA,EAAiB,KAAK,MAAM,gBAAkB,KAAK,MAAM,gBAAgBA,EAAgB,KAAK,WAAW,EAAIA,EAAiB,KAAK,MAAM,mBAAmB,KAAK,YAAa,KAAK,SAAS,KAAK,CACnN,OAAQjF,EAAK,CAIZ,KAAK,UAAY,CACf,OAAQ,QACR,OAAQ,OACR,MAAOA,CACf,CACK,CACF,CACD,OAAOkF,EAAUr1B,EAAO,CAEtB,KAAK,UAAYq1B,EAGjB,IAAIC,EACJ,KAAOA,EAAa,KAAK,UAAU,MAAK,GACtC,GAAI,CACFA,GACD,OAAQnF,EAAK,CAMZ,KAAK,UAAU,OAAS,EACxB,KAAK,UAAY,CACf,GAAGkF,EACH,OAAQ,QACR,MAAOlF,CACjB,CACO,CAEH,OAAQ,KAAK,UAAU,OAAM,CAC3B,IAAK,SACH,UAAW6D,KAAY,KAAK,UAC1B,GAAI,CACFA,EAAS,OAAOqB,CAAQ,CACzB,OAAQlF,EAAK,CACZD,EAAqBC,CAAG,CACzB,CAEH,MACF,IAAK,OAOH,UAAW6D,KAAY,KAAK,UAC1B,GAAI,CACFA,EAAS,OAAOqB,CAAQ,CACzB,OAAQlF,EAAK,CACZD,EAAqBC,CAAG,CACzB,CAEH,KAAK,eAAc,EACnB,KAAK,UAAS,EACd,KAAK,WAAaL,GAAqB,KAAK,GAAI,KAAK,UAAU,MAAM,EACjE,KAAK,SACP,KAAK,OAAO,OAAO,KAAM,KAAK,QAAS,KAAK,UAAU,EAExD,MACF,IAAK,QACH,KAAK,OAAO,KAAK,UAAU,KAAK,EAChC,KACH,CACD,KAAK,OAAO,qBAAqB,CAC/B,KAAM,mBACN,SAAU,KACV,MAAA9vB,EACA,SAAAq1B,CACN,CAAK,CACF,CA8DD,UAAUE,EAAwBC,EAAeC,EAAkB,CACjE,MAAMzB,EAAW9B,GAAWqD,EAAwBC,EAAeC,CAAgB,EACnF,GAAI,KAAK,oBAAsBjB,EAAiB,QAC9C,KAAK,UAAU,IAAIR,CAAQ,MAE3B,QAAQ,KAAK,UAAU,OAAM,CAC3B,IAAK,OACH,GAAI,CACFA,EAAS,WAAQ,CAClB,OAAQ7D,EAAK,CACZD,EAAqBC,CAAG,CACzB,CACD,MACF,IAAK,QACH,CACE,MAAMA,EAAM,KAAK,UAAU,MAC3B,GAAI,CAAC6D,EAAS,MACZ9D,EAAqBC,CAAG,MAExB,IAAI,CACF6D,EAAS,MAAM7D,CAAG,CACnB,OAAQA,EAAK,CACZD,EAAqBC,CAAG,CACzB,CAEH,KACD,CACJ,CAEH,MAAO,CACL,YAAa,IAAM,CACjB,KAAK,UAAU,OAAO6D,CAAQ,CAC/B,CACP,CACG,CACD,GAAGnwB,EAAMsxB,EAAS,CAChB,IAAIj1B,EAAY,KAAK,eAAe,IAAI2D,CAAI,EACvC3D,IACHA,EAAY,IAAI,IAChB,KAAK,eAAe,IAAI2D,EAAM3D,CAAS,GAEzC,MAAMw1B,EAAiBP,EAAQ,KAAK,MAAS,EAC7C,OAAAj1B,EAAU,IAAIw1B,CAAc,EACrB,CACL,YAAa,IAAM,CACjBx1B,EAAU,OAAOw1B,CAAc,CAChC,CACP,CACG,CAGD,OAAQ,CACN,GAAI,KAAK,oBAAsBlB,EAAiB,QAE9C,OAAO,KAEL,KAAK,eACP,KAAK,UAAU,CACb,KAAMa,GAAY,CACZA,EAAS,SAAW,UACtB,KAAK,OAAO,OAAO,KAAM,KAAK,QAAS,CACrC,KAAM,mBAAmB,KAAK,EAAE,GAChC,SAAAA,CACd,CAAa,CAEJ,EACD,MAAO,IAAM,CAAE,CACvB,CAAO,EAEH,KAAK,OAAO,UAAU,KAAK,UAAW,IAAI,EACtC,KAAK,WACP,KAAK,OAAO,KAAK,KAAK,UAAW,IAAI,EAEvC,KAAK,kBAAoBb,EAAiB,QAG1C,MAAMmB,EAAY1F,GAAgB,KAAK,QAAQ,KAAK,EAQpD,OAPA,KAAK,OAAO,qBAAqB,CAC/B,KAAM,gBACN,UAAW,KAAK,QAChB,SAAU,KACV,MAAO0F,CACb,CAAK,EACc,KAAK,UAAU,OAChB,CACZ,IAAK,OAGH,YAAK,OAAO,KAAK,UAAWA,CAAS,EAE9B,KACT,IAAK,QACH,YAAK,OAAO,KAAK,UAAU,KAAK,EACzB,IACV,CAID,GAHK,KAAK,SACR,KAAK,OAAO,QAEV,KAAK,MAAM,MACb,GAAI,CACF,KAAK,MAAM,MAAM,KAAK,UAAW,KAAK,WAAW,CAClD,OAAQxF,EAAK,CACZ,YAAK,UAAY,CACf,GAAG,KAAK,UACR,OAAQ,QACR,MAAOA,CACjB,EACQ,KAAK,OAAOA,CAAG,EACR,IACR,CAMH,YAAK,OAAO,KAAK,UAAWwF,CAAS,EACjC,KAAK,QAAQ,UACf,KAAK,eAAc,EAErB,KAAK,QAAQ,QACN,IACR,CACD,SAAS31B,EAAO,CACd,IAAI41B,EACAC,EACJ,GAAI,CACFD,EAAY,KAAK,MAAM,WAAW,KAAK,UAAW51B,EAAO,KAAK,WAAW,CAC1E,OAAQmwB,EAAK,CAEZ0F,EAAc,CACZ,IAAA1F,CACR,CACK,CACD,GAAI0F,EAAa,CACf,KAAM,CACJ,IAAA1F,CACD,EAAG0F,EACJ,KAAK,UAAY,CACf,GAAG,KAAK,UACR,OAAQ,QACR,MAAO1F,CACf,EACM,KAAK,OAAOA,CAAG,EACf,MACD,CACD,KAAK,OAAOyF,EAAW51B,CAAK,EACxBA,EAAM,OAAS0vB,KACjB,KAAK,eAAc,EACnB,KAAK,UAAS,EAEjB,CACD,OAAQ,CACN,OAAI,KAAK,oBAAsB8E,EAAiB,QACvC,MAET,KAAK,QAAQ,QACT,KAAK,oBAAsBA,EAAiB,YAC9C,KAAK,kBAAoBA,EAAiB,QACnC,OAET,KAAK,QAAQ,QAAQ,CACnB,KAAM9E,EACZ,CAAK,EACM,MACR,CAGD,MAAO,CACL,GAAI,KAAK,QACP,MAAM,IAAI,MAAM,8CAA8C,EAEhE,OAAO,KAAK,OACb,CACD,WAAY,CACV,UAAWsE,KAAY,KAAK,UAC1B,GAAI,CACFA,EAAS,WAAQ,CAClB,OAAQ7D,EAAK,CACZD,EAAqBC,CAAG,CACzB,CAEH,KAAK,UAAU,OAChB,CACD,aAAaA,EAAK,CAChB,GAAI,CAAC,KAAK,UAAU,KAAM,CACnB,KAAK,SACRD,EAAqBC,CAAG,EAE1B,MACD,CACD,IAAI2F,EAAc,GAClB,UAAW9B,KAAY,KAAK,UAAW,CACrC,MAAMwB,EAAgBxB,EAAS,MAC/B8B,IAAgB,CAACN,EACjB,GAAI,CACFA,IAAgBrF,CAAG,CACpB,OAAQ4F,EAAM,CACb7F,EAAqB6F,CAAI,CAC1B,CACF,CACD,KAAK,UAAU,QACXD,GACF5F,EAAqBC,CAAG,CAE3B,CACD,OAAOA,EAAK,CACV,KAAK,eAAc,EACnB,KAAK,aAAaA,CAAG,EACjB,KAAK,SACP,KAAK,OAAO,OAAO,KAAM,KAAK,QAASH,GAAsB,KAAK,GAAIG,CAAG,CAAC,CAE7E,CAMD,gBAAiB,CACf,OAAI,KAAK,oBAAsBqE,EAAiB,QAEvC,MAIT,KAAK,OAAO,UAAU,UAAU,IAAI,EAGpC,KAAK,QAAQ,QAKb,KAAK,QAAU,IAAIxF,GAAQ,KAAK,SAAS,KAAK,IAAI,CAAC,EACnD,KAAK,kBAAoBwF,EAAiB,QAC1C,KAAK,OAAO,YAAY,IAAI,EACrB,KACR,CAGD,MAAMx0B,EAAO,CACP,KAAK,oBAAsBw0B,EAAiB,SAGhD,KAAK,QAAQ,QAAQx0B,CAAK,CAC3B,CAOD,KAAKA,EAAO,CACV,KAAK,OAAO,OAAO,OAAW,KAAMA,CAAK,CAC1C,CACD,gBAAiB,CACf,KAAM,CACJ,SAAA+uB,CACN,EAAQ,KAAK,QACLA,IAC8B,OAAOA,GAAa,WAAaA,EAAWF,IACpD,IAAI,CAE/B,CACD,QAAS,CACP,MAAO,CACL,aAAc0F,GACd,GAAI,KAAK,EACf,CACG,CAgBD,qBAAqBnN,EAAS,CAC5B,OAAO,KAAK,MAAM,qBAAqB,KAAK,UAAWA,CAAO,CAC/D,CACD,CAACgJ,EAAgB,GAAI,CACnB,OAAO,IACR,CAgBD,aAAc,CACZ,OAAO,KAAK,SACb,CACH,CAuCA,SAAS4F,GAAYpB,KAAU,CAACxN,CAAO,EAAG,CACxC,OAAO,IAAIuN,GAAMC,EAAOxN,CAAO,CACjC,CAgBA,SAAS6O,GAAc1c,EAAG8b,EAAUa,EAAYC,EAAc,CAC5D,OAAAC,CACF,EAAG,CACD,MAAMC,EAAiB,OAAOD,GAAW,WAAaA,EAAOF,EAAYC,CAAY,EAAIC,EACzF,MAAO,CAACf,EAAUgB,CAAc,CAClC,CACA,SAASC,GAAcC,EAAYF,EAAgB,CACjDE,EAAW,MAAM,IAAM,CACrBA,EAAW,OAAO,UAAU,OAAOA,EAAW,KAAMF,CAAc,CACtE,CAAG,CACH,CAiCA,SAASG,GAAOJ,EAAQ,CACtB,SAASI,EAAOv2B,EAAMw2B,EAAQ,CAC7B,CACD,OAAAD,EAAO,KAAO,gBACdA,EAAO,OAASJ,EAChBI,EAAO,QAAUP,GACjBO,EAAO,QAAUF,GACVE,CACT,CAEA,SAASE,GAAaH,EAAYlB,EAAUa,EAAYS,EAAe,CACrE,GAAAxW,EACA,SAAA+T,EACA,IAAA3T,EACA,MAAAxB,EACA,aAAA+V,CACF,EAAG,CACD,MAAMF,EAAQ,OAAOrU,GAAQ,SAAWkS,GAAuB4C,EAAS,QAAS9U,CAAG,EAAIA,EAClFqW,EAAa,OAAOzW,GAAO,WAAaA,EAAG+V,CAAU,EAAI/V,EAC/D,IAAI2S,EACJ,OAAI8B,IACF9B,EAAWkD,GAAYpB,EAAO,CAC5B,GAAIgC,EACJ,IAAArW,EACA,OAAQgW,EAAW,KACnB,aAAAzB,EACA,SAAAZ,EACA,MAAO,OAAOnV,GAAU,WAAaA,EAAM,CACzC,QAASsW,EAAS,QAClB,MAAOa,EAAW,MAClB,KAAMK,EAAW,IAClB,CAAA,EAAIxX,CACX,CAAK,GAEI,CAAC8X,GAAqBxB,EAAU,CACrC,SAAU,CACR,GAAGA,EAAS,SACZ,CAACuB,CAAU,EAAG9D,CACf,CACL,CAAG,EAAG,CACF,GAAA3S,EACA,SAAA2S,CACJ,CAAG,CACH,CACA,SAASgE,GAAaP,EAAY,CAChC,GAAApW,EACA,SAAA2S,CACF,EAAG,CACIA,GAGLyD,EAAW,MAAM,IAAM,CACjBzD,EAAS,oBAAsB0B,EAAiB,SAGpD1B,EAAS,MAAK,CAClB,CAAG,CACH,CACA,SAASiE,MAAc,CAACxW,EAAK,CAC3B,GAAAJ,EACA,SAAA+T,EACA,MAAAnV,EACA,aAAA+V,EAAe,EACjB,EAAI,CAAE,CAAA,EAAG,CACP,SAASiC,EAAW92B,EAAMw2B,EAAQ,CACjC,CACD,OAAAM,EAAW,KAAO,sBAClBA,EAAW,GAAK5W,EAChB4W,EAAW,SAAW7C,EACtB6C,EAAW,IAAMxW,EACjBwW,EAAW,MAAQhY,EACnBgY,EAAW,aAAejC,EAC1BiC,EAAW,QAAUL,GACrBK,EAAW,QAAUD,GACdC,CACT,CAEA,SAASC,GAAYzd,EAAG8b,EAAUp1B,EAAMk2B,EAAc,CACpD,SAAArD,CACF,EAAG,CACD,MAAMmE,EAAmB,OAAOnE,GAAa,WAAaA,EAAS7yB,EAAMk2B,CAAY,EAAIrD,EACnFoE,EAAmB,OAAOD,GAAqB,SAAW5B,EAAS,SAAS4B,CAAgB,EAAIA,EACtG,IAAIzU,EAAW6S,EAAS,SACxB,OAAI6B,IACF1U,EAAW,CACT,GAAGA,CACT,EACI,OAAOA,EAAS0U,EAAiB,EAAE,GAE9B,CAACL,GAAqBxB,EAAU,CACrC,SAAA7S,CACJ,CAAG,EAAG0U,CAAgB,CACtB,CACA,SAASC,GAAYZ,EAAYzD,EAAU,CACzC,GAAKA,EAWL,IAJAyD,EAAW,OAAO,YAAYzD,CAAQ,EAIlCA,EAAS,oBAAsB0B,EAAiB,QAAS,CAC3D+B,EAAW,UAAUzD,CAAQ,EAC7B,MACD,CAKDyD,EAAW,MAAM,IAAM,CACrBA,EAAW,UAAUzD,CAAQ,CACjC,CAAG,EACH,CAMA,SAASsE,GAAUtE,EAAU,CAC3B,SAASuE,EAAKp3B,EAAMw2B,EAAQ,CAC3B,CACD,OAAAY,EAAK,KAAO,mBACZA,EAAK,SAAWvE,EAChBuE,EAAK,QAAUL,GACfK,EAAK,QAAUF,GACRE,CACT,CAyEA,SAASC,GAASjC,EAAU,CAC1B,QAAA5T,EACA,MAAAzhB,CACF,EAAG,CACD,OAAAu3B,CACF,EAAG,CACD,OAAOA,EAAO,MAAMC,GAASC,GAAcD,EAAO/V,EAASzhB,EAAOq1B,CAAQ,CAAC,CAC7E,CA+BA,SAASqC,GAAIH,EAAQ,CACnB,SAASG,EAAIz3B,EAAMw2B,EAAQ,CACzB,MAAO,EACR,CACD,OAAAiB,EAAI,MAAQJ,GACZI,EAAI,OAASH,EACNG,CACT,CAiDA,SAASD,GAAcD,EAAO/V,EAASzhB,EAAOq1B,EAAU,CACtD,KAAM,CACJ,QAAArI,CACD,EAAGqI,EACEsC,EAAW,OAAOH,GAAU,WAC5BI,EAAWD,EAAWH,EAAQxK,EAAQ,gBAAgB,OAAO,OAAOwK,GAAU,SAAWA,EAAQA,EAAM,IAAI,EACjH,GAAI,CAACG,GAAY,CAACC,EAChB,MAAM,IAAI,MAAM,UAAU,OAAOJ,GAAU,SAAWA,EAAQA,EAAM,IAAI,yBAAyB,EAEnG,GAAI,OAAOI,GAAa,WACtB,OAAOH,GAAcG,EAAUnW,EAASzhB,EAAOq1B,CAAQ,EAEzD,MAAMwC,EAAY,CAChB,QAAApW,EACA,MAAAzhB,CACJ,EACQ83B,EAAcH,GAAY,OAAOH,GAAU,SAAW,OAAY,WAAYA,EAAQ,OAAOA,EAAM,QAAW,WAAaA,EAAM,OAAO,CAC5I,QAAA/V,EACA,MAAAzhB,CACJ,CAAG,EAAIw3B,EAAM,OAAS,OACpB,MAAM,UAAWI,EAMIA,EACD,MAAMvC,EAAUwC,EAAWD,CACjD,EAJWA,EAASC,EAAWC,CAAW,CAK1C,CAEA,MAAMC,GAAoBC,GAAaA,EAAU,OAAS,UAAYA,EAAU,OAAS,QACzF,SAASC,GAAYD,EAAW,CAC9B,OAAO,OAAO,OAAOA,EAAU,MAAM,EAAE,OAAOE,GAAMA,EAAG,OAAS,SAAS,CAC3E,CACA,SAASC,GAAmBH,EAAWI,EAAa,CAClD,MAAMC,EAAY,CAAA,EAClB,GAAID,IAAgBJ,EAClB,OAAOK,EAIT,IAAIC,EAAIN,EAAU,OAClB,KAAOM,GAAKA,IAAMF,GAChBC,EAAU,KAAKC,CAAC,EAChBA,EAAIA,EAAE,OAER,OAAOD,CACT,CACA,SAASE,GAAiBC,EAAY,CACpC,MAAMC,EAAU,IAAI,IAAID,CAAU,EAC5BE,EAAUC,GAAWF,CAAO,EAGlC,UAAWz3B,KAAKy3B,EAEd,GAAIz3B,EAAE,OAAS,aAAe,CAAC03B,EAAQ,IAAI13B,CAAC,GAAK,CAAC03B,EAAQ,IAAI13B,CAAC,EAAE,QAC/D43B,GAAuC53B,CAAC,EAAE,QAAQk3B,GAAMO,EAAQ,IAAIP,CAAE,CAAC,UAEnEl3B,EAAE,OAAS,YACb,UAAW0mB,KAASuQ,GAAYj3B,CAAC,EAC/B,GAAI0mB,EAAM,OAAS,WAGf,CAAC+Q,EAAQ,IAAI/Q,CAAK,EAAG,CACvB,MAAMmR,EAAgBD,GAAuClR,CAAK,EAClE,UAAWoR,KAAoBD,EAC7BJ,EAAQ,IAAIK,CAAgB,CAE/B,EAOT,UAAW93B,KAAKy3B,EAAS,CACvB,IAAIH,EAAIt3B,EAAE,OACV,KAAOs3B,GACLG,EAAQ,IAAIH,CAAC,EACbA,EAAIA,EAAE,MAET,CACD,OAAOG,CACT,CACA,SAASM,GAAgBC,EAAUN,EAAS,CAC1C,MAAMO,EAAkBP,EAAQ,IAAIM,CAAQ,EAC5C,GAAI,CAACC,EACH,MAAO,GAET,GAAID,EAAS,OAAS,WAAY,CAChC,MAAME,EAAiBD,EAAgB,CAAC,EACxC,GAAIC,GACF,GAAInB,GAAkBmB,CAAc,EAClC,OAAOA,EAAe,QAGxB,OAAO,EAEV,CACD,MAAMpI,EAAa,CAAA,EACnB,UAAWoI,KAAkBD,EAC3BnI,EAAWoI,EAAe,GAAG,EAAIH,GAAgBG,EAAgBR,CAAO,EAE1E,OAAO5H,CACT,CACA,SAAS6H,GAAWH,EAAY,CAC9B,MAAME,EAAU,IAAI,IACpB,UAAW13B,KAAKw3B,EACTE,EAAQ,IAAI13B,CAAC,GAChB03B,EAAQ,IAAI13B,EAAG,CAAA,CAAE,EAEfA,EAAE,SACC03B,EAAQ,IAAI13B,EAAE,MAAM,GACvB03B,EAAQ,IAAI13B,EAAE,OAAQ,CAAE,CAAA,EAE1B03B,EAAQ,IAAI13B,EAAE,MAAM,EAAE,KAAKA,CAAC,GAGhC,OAAO03B,CACT,CACA,SAASS,GAAcC,EAAUZ,EAAY,CAC3C,MAAMa,EAASd,GAAiBC,CAAU,EAC1C,OAAOO,GAAgBK,EAAUT,GAAWU,CAAM,CAAC,CACrD,CACA,SAASC,GAAeC,EAAcvB,EAAW,CAC/C,OAAIA,EAAU,OAAS,WACdC,GAAYD,CAAS,EAAE,KAAKh3B,GAAKA,EAAE,OAAS,SAAWu4B,EAAa,IAAIv4B,CAAC,CAAC,EAE/Eg3B,EAAU,OAAS,WACdC,GAAYD,CAAS,EAAE,MAAME,GAAMoB,GAAeC,EAAcrB,CAAE,CAAC,EAErEF,EAAU,OAAS,OAC5B,CACA,MAAMwB,GAAYhf,GAAOA,EAAI,CAAC,IAAM+U,GACpC,SAASkK,GAAczB,EAAW0B,EAAmB,CAyBnD,OAxBmB1B,EAAU,YAAY,IAAI0B,CAAiB,GAAK,CAAC,GAAG1B,EAAU,YAAY,KAAM,CAAA,EAAE,OAAO2B,GAAmB,CAG7H,GAAIA,IAAoBnK,GACtB,MAAO,GAET,GAAI,CAACmK,EAAgB,SAAS,IAAI,EAChC,MAAO,GAET,MAAMC,EAAqBD,EAAgB,MAAM,GAAG,EAC9CE,EAAcH,EAAkB,MAAM,GAAG,EAC/C,QAASI,EAAa,EAAGA,EAAaF,EAAmB,OAAQE,IAAc,CAC7E,MAAMC,EAAoBH,EAAmBE,CAAU,EACjDE,EAAaH,EAAYC,CAAU,EACzC,GAAIC,IAAsB,IAExB,OADoBD,IAAeF,EAAmB,OAAS,EAGjE,GAAIG,IAAsBC,EACxB,MAAO,EAEV,CACD,MAAO,EACX,CAAG,EAAE,KAAK,CAACtlB,EAAGD,IAAMA,EAAE,OAASC,EAAE,MAAM,EAAE,QAAQ3Q,GAAOi0B,EAAU,YAAY,IAAIj0B,CAAG,CAAC,CAEtF,CAGA,SAASk2B,GAAsBjC,EAAW,CACxC,MAAMkC,EAAclC,EAAU,OAAO,MACrC,GAAI,CAACkC,EACH,MAAO,GAET,MAAMC,EAAkB,CAAC1G,EAAO,IAAM,CACpC,MAAM2G,EAAazK,GAAiB8D,EAAOuE,EAAU,EAAE,EACjDqC,EAAYD,EAAW,KAC7B,OAAApC,EAAU,MAAM,KAAKsC,GAAMF,EAAY,CACrC,GAAIC,EACJ,MAAA5G,CACD,CAAA,CAAC,EACFuE,EAAU,KAAK,KAAKxB,GAAO6D,CAAS,CAAC,EAC9BA,CACX,EAcE,OAb2B,OAAO,KAAKH,CAAW,EAAE,QAAQ,CAACzG,EAAO,IAAM,CACxE,MAAM8G,EAAmBL,EAAYzG,CAAK,EACpC+G,EAAqB,OAAOD,GAAqB,SAAW,CAChE,OAAQA,CACT,EAAGA,EACEE,EAAgB,OAAO,MAAM,CAAChH,CAAK,EAAIA,EAAQ,CAACA,EAChD4G,EAAYF,EAAgBM,CAAa,EAC/C,OAAOjJ,EAAQgJ,CAAkB,EAAE,IAAIE,IAAe,CACpD,GAAGA,EACH,MAAOL,EACP,MAAOI,CACR,EAAC,CACN,CAAG,EACyB,IAAIE,GAAqB,CACjD,KAAM,CACJ,MAAAlH,CACD,EAAGkH,EACJ,MAAO,CACL,GAAGC,GAAiB5C,EAAW2C,EAAkB,MAAOA,CAAiB,EACzE,MAAAlH,CACN,CACA,CAAG,CACH,CACA,SAASmH,GAAiB5C,EAAW6C,EAAYC,EAAkB,CACjE,MAAMC,EAAmB/I,GAAgB8I,EAAiB,MAAM,EAC1DE,EAAUF,EAAiB,SAAW,GACtC7I,EAASgJ,GAAcjD,EAAW+C,CAAgB,EAClDL,EAAa,CACjB,GAAGI,EACH,QAAStJ,EAAQsJ,EAAiB,OAAO,EACzC,MAAOA,EAAiB,MACxB,OAAA7I,EACA,OAAQ+F,EACR,QAAAgD,EACA,UAAWH,EACX,OAAQ,KAAO,CACb,GAAGH,EACH,OAAQ,IAAI1C,EAAU,EAAE,GACxB,OAAQ/F,EAASA,EAAO,IAAIzV,GAAK,IAAIA,EAAE,EAAE,EAAE,EAAI,MACrD,EACA,EACE,OAAOke,CACT,CACA,SAASQ,GAAkBlD,EAAW,CACpC,MAAMmD,EAAc,IAAI,IACxB,GAAInD,EAAU,OAAO,GACnB,UAAW6C,KAAc,OAAO,KAAK7C,EAAU,OAAO,EAAE,EAAG,CACzD,GAAI6C,IAAevL,GACjB,MAAM,IAAI,MAAM,0FAA0F,EAE5G,MAAM8L,EAAoBpD,EAAU,OAAO,GAAG6C,CAAU,EACxDM,EAAY,IAAIN,EAAYhJ,GAAwBuJ,CAAiB,EAAE,IAAI5e,GAAKoe,GAAiB5C,EAAW6C,EAAYre,CAAC,CAAC,CAAC,CAC5H,CAEH,GAAIwb,EAAU,OAAO,OAAQ,CAC3B,MAAM6C,EAAa,qBAAqB7C,EAAU,EAAE,GACpDmD,EAAY,IAAIN,EAAYhJ,GAAwBmG,EAAU,OAAO,MAAM,EAAE,IAAIxb,GAAKoe,GAAiB5C,EAAW6C,EAAYre,CAAC,CAAC,CAAC,CAClI,CACD,UAAW6e,KAAarD,EAAU,OAAQ,CACxC,GAAIqD,EAAU,OAAQ,CACpB,MAAMR,EAAa,qBAAqBQ,EAAU,EAAE,GACpDF,EAAY,IAAIN,EAAYhJ,GAAwBwJ,EAAU,MAAM,EAAE,IAAI7e,GAAKoe,GAAiB5C,EAAW6C,EAAYre,CAAC,CAAC,CAAC,CAC3H,CACD,GAAI6e,EAAU,QAAS,CACrB,MAAMR,EAAa,sBAAsBQ,EAAU,EAAE,GACrDF,EAAY,IAAIN,EAAYhJ,GAAwBwJ,EAAU,OAAO,EAAE,IAAI7e,GAAKoe,GAAiB5C,EAAW6C,EAAYre,CAAC,CAAC,CAAC,CAC5H,CACD,GAAI6e,EAAU,WAAY,CACxB,MAAMR,EAAa,mBAAmBQ,EAAU,EAAE,GAClDF,EAAY,IAAIN,EAAYhJ,GAAwBwJ,EAAU,UAAU,EAAE,IAAI7e,GAAKoe,GAAiB5C,EAAW6C,EAAYre,CAAC,CAAC,CAAC,CAC/H,CACF,CACD,UAAWme,KAAqB3C,EAAU,MAAO,CAC/C,IAAI7D,EAAWgH,EAAY,IAAIR,EAAkB,SAAS,EACrDxG,IACHA,EAAW,CAAA,EACXgH,EAAY,IAAIR,EAAkB,UAAWxG,CAAQ,GAEvDA,EAAS,KAAKwG,CAAiB,CAChC,CACD,OAAOQ,CACT,CACA,SAASG,GAAwBtD,EAAWuD,EAAS,CACnD,MAAMC,EAAiB,OAAOD,GAAY,SAAWvD,EAAU,OAAOuD,CAAO,EAAIA,EAAUvD,EAAU,OAAOuD,EAAQ,MAAM,EAAI,OAC9H,GAAI,CAACC,GAAkBD,EACrB,MAAM,IAAI,MAAM,uBAAuBA,CAAO,qCAAqCvD,EAAU,EAAE,EAAE,EAEnG,MAAM0C,EAAa,CACjB,OAAQ1C,EACR,QAAS,CAACuD,GAAW,OAAOA,GAAY,SAAW,GAAK/J,EAAQ+J,EAAQ,OAAO,EAC/E,UAAW,KACX,QAAS,GACT,OAAQC,EAAiB,CAACA,CAAc,EAAI,CAAE,EAC9C,OAAQ,KAAO,CACb,GAAGd,EACH,OAAQ,IAAI1C,EAAU,EAAE,GACxB,OAAQwD,EAAiB,CAAC,IAAIA,EAAe,EAAE,EAAE,EAAI,CAAE,CAC7D,EACA,EACE,OAAOd,CACT,CACA,SAASO,GAAcjD,EAAWyD,EAAS,CACzC,GAAIA,IAAY,OAIhB,OAAOA,EAAQ,IAAIxJ,GAAU,CAC3B,GAAI,OAAOA,GAAW,SACpB,OAAOA,EAET,GAAIuH,GAAUvH,CAAM,EAClB,OAAO+F,EAAU,QAAQ,iBAAiB/F,CAAM,EAElD,MAAMyJ,EAAmBzJ,EAAO,CAAC,IAAM7C,GAGvC,GAAIsM,GAAoB,CAAC1D,EAAU,OACjC,OAAO2D,GAAmB3D,EAAW/F,EAAO,MAAM,CAAC,CAAC,EAEtD,MAAMuJ,EAAiBE,EAAmB1D,EAAU,IAAM/F,EAASA,EACnE,GAAI+F,EAAU,OACZ,GAAI,CAEF,OADwB2D,GAAmB3D,EAAU,OAAQwD,CAAc,CAE5E,OAAQrL,EAAK,CACZ,MAAM,IAAI,MAAM,iDAAiD6H,EAAU,EAAE;AAAA,EAAO7H,EAAI,OAAO,EAAE,CAClG,KAED,OAAM,IAAI,MAAM,oBAAoB8B,CAAM,8DAA8DA,CAAM,IAAI,CAExH,CAAG,CACH,CACA,SAAS2J,GAAgC5D,EAAW,CAClD,MAAM+C,EAAmB/I,GAAgBgG,EAAU,OAAO,MAAM,EAChE,OAAK+C,EAGE,CACL,OAAQA,EAAiB,IAAIve,GAAK,OAAOA,GAAM,SAAWmf,GAAmB3D,EAAU,OAAQxb,CAAC,EAAIA,CAAC,CACzG,EAJWwb,EAAU,OAAO,OAK5B,CACA,SAAS6D,GAAc7D,EAAW,CAChC,OAAOA,EAAU,OAAS,SAC5B,CACA,SAASY,GAAuCZ,EAAW,CACzD,MAAM8D,EAASC,GAAqB/D,CAAS,EAC7C,UAAWzL,KAAgBuP,EACzB,UAAWE,KAAY7D,GAAmB5L,EAAcyL,CAAS,EAC/D8D,EAAO,IAAIE,CAAQ,EAGvB,OAAOF,CACT,CACA,SAASC,GAAqB/D,EAAW,CACvC,MAAMhnB,EAAM,IAAI,IAChB,SAASirB,EAAKC,EAAe,CAC3B,GAAI,CAAAlrB,EAAI,IAAIkrB,CAAa,GAIzB,GADAlrB,EAAI,IAAIkrB,CAAa,EACjBA,EAAc,OAAS,WACzBD,EAAKC,EAAc,QAAQ,OAAO,CAAC,CAAC,UAC3BA,EAAc,OAAS,WAChC,UAAWxU,KAASuQ,GAAYiE,CAAa,EAC3CD,EAAKvU,CAAK,EAGf,CACD,OAAAuU,EAAKjE,CAAS,EACPhnB,CACT,CAEA,SAASmrB,GAAanE,EAAWoE,EAAU,CACzC,GAAI5C,GAAU4C,CAAQ,EACpB,OAAOpE,EAAU,QAAQ,iBAAiBoE,CAAQ,EAEpD,GAAI,CAACpE,EAAU,OACb,MAAM,IAAI,MAAM,mCAAmCoE,CAAQ,WAAWpE,EAAU,EAAE,2BAA2B,EAE/G,MAAMp2B,EAASo2B,EAAU,OAAOoE,CAAQ,EACxC,GAAI,CAACx6B,EACH,MAAM,IAAI,MAAM,gBAAgBw6B,CAAQ,wBAAwBpE,EAAU,EAAE,GAAG,EAEjF,OAAOp2B,CACT,CAOA,SAAS+5B,GAAmB3D,EAAWhH,EAAW,CAChD,GAAI,OAAOA,GAAc,UAAYwI,GAAUxI,CAAS,EACtD,GAAI,CACF,OAAOgH,EAAU,QAAQ,iBAAiBhH,CAAS,CACpD,MAAW,CAGX,CAEH,MAAMqL,EAAiB1L,GAAYK,CAAS,EAAE,MAAK,EACnD,IAAIsL,EAAmBtE,EACvB,KAAOqE,EAAe,QAAQ,CAC5B,MAAMt4B,EAAMs4B,EAAe,QAC3B,GAAI,CAACt4B,EAAI,OACP,MAEFu4B,EAAmBH,GAAaG,EAAkBv4B,CAAG,CACtD,CACD,OAAOu4B,CACT,CAOA,SAASC,GAAcvE,EAAWlH,EAAY,CAC5C,GAAI,OAAOA,GAAe,SAAU,CAClC,MAAMoI,EAAiBlB,EAAU,OAAOlH,CAAU,EAClD,GAAI,CAACoI,EACH,MAAM,IAAI,MAAM,UAAUpI,CAAU,wBAAwBkH,EAAU,EAAE,GAAG,EAE7E,MAAO,CAACA,EAAWkB,CAAc,CAClC,CACD,MAAMsD,EAAiB,OAAO,KAAK1L,CAAU,EACvCmI,EAAkBuD,EAAe,IAAIC,GAAeN,GAAanE,EAAWyE,CAAW,CAAC,EAAE,OAAO,OAAO,EAC9G,MAAO,CAACzE,EAAU,QAAQ,KAAMA,CAAS,EAAE,OAAOiB,EAAiBuD,EAAe,OAAO,CAACE,EAAkBD,IAAgB,CAC1H,MAAME,EAAeR,GAAanE,EAAWyE,CAAW,EACxD,GAAI,CAACE,EACH,OAAOD,EAET,MAAME,EAAgBL,GAAcI,EAAc7L,EAAW2L,CAAW,CAAC,EACzE,OAAOC,EAAiB,OAAOE,CAAa,CAChD,EAAK,CAAA,CAAE,CAAC,CACR,CACA,SAASC,GAAqB7E,EAAWlH,EAAYuE,EAAUr1B,EAAO,CAEpE,MAAM88B,EADiBX,GAAanE,EAAWlH,CAAU,EAC7B,KAAKuE,EAAUr1B,CAAK,EAChD,MAAI,CAAC88B,GAAQ,CAACA,EAAK,OACV9E,EAAU,KAAK3C,EAAUr1B,CAAK,EAEhC88B,CACT,CACA,SAASC,GAAuB/E,EAAWlH,EAAYuE,EAAUr1B,EAAO,CACtE,MAAMg9B,EAAe,OAAO,KAAKlM,CAAU,EACrCoI,EAAiBiD,GAAanE,EAAWgF,EAAa,CAAC,CAAC,EACxDF,EAAOG,GAAe/D,EAAgBpI,EAAWkM,EAAa,CAAC,CAAC,EAAG3H,EAAUr1B,CAAK,EACxF,MAAI,CAAC88B,GAAQ,CAACA,EAAK,OACV9E,EAAU,KAAK3C,EAAUr1B,CAAK,EAEhC88B,CACT,CACA,SAASI,GAAuBlF,EAAWlH,EAAYuE,EAAUr1B,EAAO,CACtE,MAAMm9B,EAAsB,CAAA,EAC5B,UAAWV,KAAe,OAAO,KAAK3L,CAAU,EAAG,CACjD,MAAMsM,EAAgBtM,EAAW2L,CAAW,EAC5C,GAAI,CAACW,EACH,SAEF,MAAMT,EAAeR,GAAanE,EAAWyE,CAAW,EAClDY,EAAmBJ,GAAeN,EAAcS,EAAe/H,EAAUr1B,CAAK,EAChFq9B,GACFF,EAAoB,KAAK,GAAGE,CAAgB,CAE/C,CACD,OAAKF,EAAoB,OAGlBA,EAFEnF,EAAU,KAAK3C,EAAUr1B,CAAK,CAGzC,CACA,SAASi9B,GAAejF,EAAWlH,EAAYuE,EAAUr1B,EAAO,CAE9D,OAAI,OAAO8wB,GAAe,SACjB+L,GAAqB7E,EAAWlH,EAAYuE,EAAUr1B,CAAK,EAIhE,OAAO,KAAK8wB,CAAU,EAAE,SAAW,EAC9BiM,GAAuB/E,EAAWlH,EAAYuE,EAAUr1B,CAAK,EAI/Dk9B,GAAuBlF,EAAWlH,EAAYuE,EAAUr1B,CAAK,CACtE,CACA,SAASs9B,GAAgBtF,EAAW,CAClC,OAAO,OAAO,KAAKA,EAAU,MAAM,EAAE,IAAIj0B,GAAOi0B,EAAU,OAAOj0B,CAAG,CAAC,EAAE,OAAOm0B,GAAMA,EAAG,OAAS,SAAS,CAC3G,CACA,SAASqF,GAAarE,EAAgBsE,EAAiB,CACrD,IAAItM,EAASgI,EACb,KAAOhI,EAAO,QAAUA,EAAO,SAAWsM,GACxCtM,EAASA,EAAO,OAElB,OAAOA,EAAO,SAAWsM,CAC3B,CACA,SAASC,GAAgBC,EAAIC,EAAI,CAC/B,MAAMC,EAAO,IAAI,IAAIF,CAAE,EACjBG,EAAO,IAAI,IAAIF,CAAE,EACvB,UAAWG,KAAQF,EACjB,GAAIC,EAAK,IAAIC,CAAI,EACf,MAAO,GAGX,UAAWA,KAAQD,EACjB,GAAID,EAAK,IAAIE,CAAI,EACf,MAAO,GAGX,MAAO,EACT,CACA,SAASC,GAA6BC,EAAoBzE,EAAc0E,EAAc,CACpF,MAAMC,EAAsB,IAAI,IAChC,UAAWC,KAAMH,EAAoB,CACnC,IAAII,EAAc,GAClB,MAAMC,EAAsB,IAAI,IAChC,UAAWC,KAAMJ,EACf,GAAIT,GAAgBc,GAAe,CAACJ,CAAE,EAAG5E,EAAc0E,CAAY,EAAGM,GAAe,CAACD,CAAE,EAAG/E,EAAc0E,CAAY,CAAC,EACpH,GAAIV,GAAaY,EAAG,OAAQG,EAAG,MAAM,EACnCD,EAAoB,IAAIC,CAAE,MACrB,CACLF,EAAc,GACd,KACD,CAGL,GAAI,CAACA,EAAa,CAChB,UAAWI,KAAMH,EACfH,EAAoB,OAAOM,CAAE,EAE/BN,EAAoB,IAAIC,CAAE,CAC3B,CACF,CACD,OAAO,MAAM,KAAKD,CAAmB,CACvC,CACA,SAASO,GAAwBjG,EAAY,CAC3C,KAAM,CAACzP,EAAM,GAAG2V,CAAI,EAAIlG,EACxB,UAAWwD,KAAY7D,GAAmBpP,EAAM,MAAS,EACvD,GAAI2V,EAAK,MAAMxG,GAAMqF,GAAarF,EAAI8D,CAAQ,CAAC,EAC7C,OAAOA,CAGb,CACA,SAAS2C,GAAyBjE,EAAYuD,EAAc,CAC1D,GAAI,CAACvD,EAAW,OACd,MAAO,GAET,MAAMe,EAAU,IAAI,IACpB,UAAWmD,KAAclE,EAAW,OAClC,GAAImB,GAAc+C,CAAU,EAC1B,GAAIX,EAAaW,EAAW,EAAE,EAC5B,UAAWC,KAAQZ,EAAaW,EAAW,EAAE,EAC3CnD,EAAQ,IAAIoD,CAAI,MAGlB,WAAWA,KAAQF,GAAyB/C,GAAgCgD,CAAU,EAAGX,CAAY,EACnGxC,EAAQ,IAAIoD,CAAI,OAIpBpD,EAAQ,IAAImD,CAAU,EAG1B,MAAO,CAAC,GAAGnD,CAAO,CACpB,CACA,SAASqD,GAAoBpE,EAAYuD,EAAc,CACrD,MAAMc,EAAeJ,GAAyBjE,EAAYuD,CAAY,EACtE,GAAI,CAACc,EACH,OAEF,GAAI,CAACrE,EAAW,SAAWqE,EAAa,MAAM9M,GAAUA,IAAWyI,EAAW,QAAU6C,GAAatL,EAAQyI,EAAW,MAAM,CAAC,EAC7H,OAAOA,EAAW,OAEpB,MAAMsE,EAAMP,GAAwBM,EAAa,OAAOrE,EAAW,MAAM,CAAC,EAC1E,GAAIsE,EACF,OAAOA,EAIT,GAAI,CAAAtE,EAAW,QAGf,OAAOA,EAAW,OAAO,QAAQ,IACnC,CACA,SAAS6D,GAAepD,EAAa5B,EAAc0E,EAAc,CAC/D,MAAMgB,EAAe,IAAI,IACzB,UAAWziB,KAAK2e,EACd,GAAI3e,EAAE,QAAQ,OAAQ,CACpB,MAAM0iB,EAASJ,GAAoBtiB,EAAGyhB,CAAY,EAC9CzhB,EAAE,SAAWA,EAAE,SAAW0iB,GAC5BD,EAAa,IAAIC,CAAM,EAEzB,UAAWlH,KAAauB,EAClBgE,GAAavF,EAAWkH,CAAM,GAChCD,EAAa,IAAIjH,CAAS,CAG/B,CAEH,MAAO,CAAC,GAAGiH,CAAY,CACzB,CACA,SAASE,GAA6BC,EAAgBC,EAAkB,CACtE,GAAID,EAAe,SAAWC,EAAiB,KAC7C,MAAO,GAET,UAAWR,KAAQO,EACjB,GAAI,CAACC,EAAiB,IAAIR,CAAI,EAC5B,MAAO,GAGX,MAAO,EACT,CAGA,SAASS,GAAUnE,EAAaoE,EAAiBhJ,EAAYv2B,EAAOw/B,EAAWC,EAAe,CAC5F,GAAI,CAACtE,EAAY,OACf,OAAOoE,EAET,MAAMG,EAAkB,IAAI,IAAIH,EAAgB,MAAM,EACtD,IAAItB,EAAesB,EAAgB,aACnC,MAAMrB,EAAsBH,GAA6B5C,EAAauE,EAAiBzB,CAAY,EACnG,IAAIrI,EAAY2J,EAGXC,IACH,CAAC5J,EAAWqI,CAAY,EAAI0B,GAAW/J,EAAW51B,EAAOu2B,EAAY2H,EAAqBwB,EAAiBzB,EAAcwB,CAAa,GAIxI7J,EAAYgK,GAAyBhK,EAAW51B,EAAOu2B,EAAY2H,EAAoB,QAAQ1hB,GAAKA,EAAE,OAAO,EAAGijB,CAAa,EAG7H7J,EAAYiK,GAAYjK,EAAW51B,EAAOu2B,EAAY2H,EAAqBwB,EAAiBD,EAAexB,EAAcuB,CAAS,EAClI,MAAMM,EAAiB,CAAC,GAAGJ,CAAe,EACtC9J,EAAU,SAAW,SACvBA,EAAYgK,GAAyBhK,EAAW51B,EAAOu2B,EAAYuJ,EAAe,KAAK,CAACprB,EAAGD,IAAMA,EAAE,MAAQC,EAAE,KAAK,EAAE,QAAQoJ,GAASA,EAAM,IAAI,EAAG2hB,CAAa,GAEjK,GAAI,CACF,OAAIxB,IAAiBsB,EAAgB,cAAgBJ,GAA6BI,EAAgB,OAAQG,CAAe,EAChH9J,EAEFiB,GAAqBjB,EAAW,CACrC,OAAQkK,EACR,aAAA7B,CACN,CAAK,CACF,OAAQ8B,EAAG,CAGV,MAAMA,CACP,CACH,CACA,SAASC,GAAiB3K,EAAUr1B,EAAOu2B,EAAY6C,EAAU6G,EAAoB,CACnF,GAAI7G,EAAS,SAAW,OACtB,OAEF,MAAM8G,EAAiBrQ,GAAqBoQ,EAAmB,GAAIA,EAAmB,SAAW,QAAaA,EAAmB,OAASxO,GAAcwO,EAAmB,OAAQ5K,EAAS,QAASr1B,EAAOu2B,EAAW,IAAI,EAAI,MAAS,EACxO,OAAO9E,GAAc2H,EAAS,OAAQ/D,EAAS,QAAS6K,EAAgB3J,EAAW,IAAI,CACzF,CACA,SAASsJ,GAAYN,EAAiBv/B,EAAOu2B,EAAY2H,EAAqBwB,EAAiBD,EAAexB,EAAcuB,EAAW,CACrI,IAAIW,EAAeZ,EACnB,MAAMa,EAAgB,IAAI,IAIpBC,EAAwB,IAAI,IAClCC,GAAgBpC,EAAqBD,EAAcoC,EAAuBD,CAAa,EAGnFZ,GACFa,EAAsB,IAAId,EAAgB,QAAQ,IAAI,EAExD,MAAMgB,EAAiB,IAAI,IAC3B,UAAWC,IAAoB,CAAC,GAAGJ,CAAa,EAAE,KAAK,CAAC1rB,EAAGD,IAAMC,EAAE,MAAQD,EAAE,KAAK,EAAG,CACnFirB,EAAgB,IAAIc,CAAgB,EACpC,MAAMC,EAAU,CAAA,EAGhBA,EAAQ,KAAK,GAAGD,EAAiB,KAAK,EACtC,UAAWnF,KAAamF,EAAiB,OACvCC,EAAQ,KAAK1J,GAAWsE,EAAU,IAAK,CACrC,GAAGA,EACH,aAAc,CAAC,CAACA,EAAU,UAC3B,CAAA,CAAC,EAEJ,GAAIgF,EAAsB,IAAIG,CAAgB,EAAG,CAC/C,MAAME,EAAiBF,EAAiB,QAAQ,QAChDC,EAAQ,KAAK,GAAGC,CAAc,CAC/B,CAED,GADAP,EAAeP,GAAyBO,EAAcngC,EAAOu2B,EAAYkK,EAAShB,EAAee,EAAiB,OAAO,IAAInF,GAAaA,EAAU,EAAE,CAAC,EACnJmF,EAAiB,OAAS,QAAS,CACrC,MAAMje,EAASie,EAAiB,OAChC,IAAIG,EAAiBpe,GAAQ,OAAS,WAAaA,EAASA,GAAQ,OAChE0d,EAAqBU,GAAkBH,EAI3C,IAHIje,GAAQ,OAAS,YACnBkd,EAAc,KAAK5P,GAAqBtN,EAAO,GAAIie,EAAiB,SAAW,OAAY/O,GAAc+O,EAAiB,OAAQL,EAAa,QAASngC,EAAOu2B,EAAW,IAAI,EAAI,MAAS,CAAC,EAEvLoK,GAAgB,OAAS,YAAc,CAACJ,EAAe,IAAII,CAAc,GAAKrH,GAAeoG,EAAiBiB,CAAc,GACjIJ,EAAe,IAAII,CAAc,EACjClB,EAAc,KAAK5P,GAAqB8Q,EAAe,EAAE,CAAC,EAC1DV,EAAqBU,EACrBA,EAAiBA,EAAe,OAElC,GAAIA,EACF,SAEFR,EAAetJ,GAAqBsJ,EAAc,CAChD,OAAQ,OACR,OAAQH,GAAiBG,EAAcngC,EAAOu2B,EAAY4J,EAAa,QAAQ,KAAMF,CAAkB,CAC/G,CAAO,CACF,CACF,CACD,OAAOE,CACT,CACA,SAASG,GAAgBnF,EAAa8C,EAAcoC,EAAuBD,EAAe,CACxF,UAAW5jB,KAAK2e,EAAa,CAC3B,MAAM+D,EAASJ,GAAoBtiB,EAAGyhB,CAAY,EAClD,UAAWj9B,KAAKwb,EAAE,QAAU,CAAA,EACtB,CAACqf,GAAc76B,CAAC,IAEpBwb,EAAE,SAAWxb,GAGbwb,EAAE,SAAW0iB,GAEb1iB,EAAE,WACA4jB,EAAc,IAAIp/B,CAAC,EACnBq/B,EAAsB,IAAIr/B,CAAC,GAE7B4/B,GAA2B5/B,EAAGi9B,EAAcoC,EAAuBD,CAAa,EAElF,MAAMrB,EAAeJ,GAAyBniB,EAAGyhB,CAAY,EAC7D,UAAWj9B,KAAK+9B,EAAc,CAC5B,MAAM1G,EAAYF,GAAmBn3B,EAAGk+B,CAAM,EAC1CA,GAAQ,OAAS,YACnB7G,EAAU,KAAK6G,CAAM,EAEvB2B,GAAyBT,EAAenC,EAAcoC,EAAuBhI,EAAW,CAAC7b,EAAE,OAAO,QAAUA,EAAE,QAAU,OAAY0iB,CAAM,CAC3I,CACF,CACH,CACA,SAAS0B,GAA2B5I,EAAWiG,EAAcoC,EAAuBD,EAAe,CACjG,GAAIvE,GAAc7D,CAAS,EACzB,GAAIiG,EAAajG,EAAU,EAAE,EAAG,CAC9B,MAAM8I,EAAoB7C,EAAajG,EAAU,EAAE,EACnD,UAAWh3B,KAAK8/B,EACdV,EAAc,IAAIp/B,CAAC,EACnB4/B,GAA2B5/B,EAAGi9B,EAAcoC,EAAuBD,CAAa,EAElF,UAAWp/B,KAAK8/B,EACdC,GAA+B//B,EAAGg3B,EAAU,OAAQoI,EAAenC,EAAcoC,CAAqB,CAE9G,KAAW,CACL,MAAMW,EAA2BpF,GAAgC5D,CAAS,EAC1E,UAAWh3B,KAAKggC,EAAyB,OACvCZ,EAAc,IAAIp/B,CAAC,EACfggC,IAA6BhJ,EAAU,QAAQ,SACjDqI,EAAsB,IAAIrI,EAAU,MAAM,EAE5C4I,GAA2B5/B,EAAGi9B,EAAcoC,EAAuBD,CAAa,EAElF,UAAWp/B,KAAKggC,EAAyB,OACvCD,GAA+B//B,EAAGg3B,EAAU,OAAQoI,EAAenC,EAAcoC,CAAqB,CAEzG,SAEGrI,EAAU,OAAS,WAAY,CACjC,KAAM,CAACzL,CAAY,EAAIyL,EAAU,QAAQ,OACpC6D,GAActP,CAAY,IAC7B6T,EAAc,IAAI7T,CAAY,EAC9B8T,EAAsB,IAAI9T,CAAY,GAExCqU,GAA2BrU,EAAc0R,EAAcoC,EAAuBD,CAAa,EAC3FW,GAA+BxU,EAAcyL,EAAWoI,EAAenC,EAAcoC,CAAqB,CAChH,SACUrI,EAAU,OAAS,WACrB,UAAWtQ,KAASuQ,GAAYD,CAAS,EAAE,OAAOE,GAAM,CAAC2D,GAAc3D,CAAE,CAAC,EACnE,CAAC,GAAGkI,CAAa,EAAE,KAAKp/B,GAAKu8B,GAAav8B,EAAG0mB,CAAK,CAAC,IACjDmU,GAAcnU,CAAK,IACtB0Y,EAAc,IAAI1Y,CAAK,EACvB2Y,EAAsB,IAAI3Y,CAAK,GAEjCkZ,GAA2BlZ,EAAOuW,EAAcoC,EAAuBD,CAAa,EAMhG,CACA,SAASS,GAAyBT,EAAenC,EAAcoC,EAAuBhI,EAAW4I,EAAkB,CACjH,UAAWC,KAAO7I,EAIhB,IAHI,CAAC4I,GAAoB1D,GAAa2D,EAAKD,CAAgB,IACzDb,EAAc,IAAIc,CAAG,EAEnBA,EAAI,OAAS,WACf,UAAWxZ,KAASuQ,GAAYiJ,CAAG,EAAE,OAAOhJ,GAAM,CAAC2D,GAAc3D,CAAE,CAAC,EAC7D,CAAC,GAAGkI,CAAa,EAAE,KAAKp/B,GAAKu8B,GAAav8B,EAAG0mB,CAAK,CAAC,IACtD0Y,EAAc,IAAI1Y,CAAK,EACvBkZ,GAA2BlZ,EAAOuW,EAAcoC,EAAuBD,CAAa,EAK9F,CACA,SAASW,GAA+B/I,EAAWI,EAAagI,EAAenC,EAAcoC,EAAuB,CAClHQ,GAAyBT,EAAenC,EAAcoC,EAAuBlI,GAAmBH,EAAWI,CAAW,CAAC,CACzH,CACA,SAASuH,GAAWJ,EAAiBv/B,EAAOu2B,EAAY4E,EAAauE,EAAiBzB,EAAcwB,EAAe,CACjH,IAAIU,EAAeZ,EACnB,MAAMN,EAAeV,GAAepD,EAAauE,EAAiBzB,CAAY,EAC9EgB,EAAa,KAAK,CAACvqB,EAAGD,IAAMA,EAAE,MAAQC,EAAE,KAAK,EAC7C,IAAIysB,EAGJ,UAAWC,KAAiBnC,EAC1B,UAAWoC,KAAe/D,GAAgB8D,CAAa,EAAG,CACxD,IAAIj+B,EACAk+B,EAAY,UAAY,OAC1Bl+B,EAAY+0B,GAAMH,GAAkBG,CAAE,GAAKqF,GAAarF,EAAIkJ,CAAa,EAEzEj+B,EAAY+0B,GACHA,EAAG,SAAWkJ,EAGzBD,IAAmB,CACjB,GAAGlD,CACX,EACMkD,EAAeE,EAAY,EAAE,EAAI,MAAM,KAAK3B,CAAe,EAAE,OAAOv8B,CAAS,CAC9E,CAEH,UAAWnC,KAAKi+B,EACdkB,EAAeP,GAAyBO,EAAcngC,EAAOu2B,EAAY,CAAC,GAAGv1B,EAAE,KAAM,GAAGA,EAAE,OAAO,IAAIsgC,GAAOlK,GAAUkK,EAAI,EAAE,CAAC,CAAC,EAAG7B,CAAa,EAC9IC,EAAgB,OAAO1+B,CAAC,EAE1B,MAAO,CAACm/B,EAAcgB,GAAkBlD,CAAY,CACtD,CACA,IAAIsD,GAAwB,GAC5B,SAASC,GAAoCjC,EAAiBv/B,EAAOu2B,EAAYkK,EAASgB,EAAOC,EAAS,CACxG,KAAM,CACJ,QAAA1U,CACD,EAAGuS,EACJ,IAAIoC,EAAuBpC,EAC3B,UAAWhe,KAAUkf,EAAS,CAoB5B,IAASmB,EAAT,UAAyB,CACvBrL,EAAW,OAAO,qBAAqB,CACrC,KAAM,iBACN,SAAUA,EAAW,KACrB,OAAQ,CACN,KAAM,OAAOhV,GAAW,SAAWA,EAAS,OAAOA,GAAW,SAAWA,EAAO,KAAOA,EAAO,MAAQ,cACtG,OAAQ4U,CACT,CACT,CAAO,EACD,GAAI,CACFoL,GAAwBM,EACxBA,EAAe3L,EAAYC,CAAY,CAC/C,QAAgB,CACRoL,GAAwB,EACzB,CACF,EAlCD,MAAM5J,EAAW,OAAOpW,GAAW,WAC7BsgB,EAAiBlK,EAAWpW,EAIlCyL,EAAQ,gBAAgB,QAAQ,OAAOzL,GAAW,SAAWA,EAASA,EAAO,IAAI,EACjF,GAAI,CAACsgB,EACH,SAEF,MAAM3L,EAAa,CACjB,QAASyL,EAAqB,QAC9B,MAAA3hC,EACA,KAAMu2B,EAAW,KACjB,OAAQA,EAAW,MACzB,EACUJ,EAAewB,GAAY,OAAOpW,GAAW,SAAW,OAAY,WAAYA,EAAS,OAAOA,EAAO,QAAW,WAAaA,EAAO,OAAO,CACjJ,QAASogB,EAAqB,QAC9B,MAAA3hC,CACN,CAAK,EAAIuhB,EAAO,OAAS,OAiBrB,GAAI,EAAE,YAAasgB,GAAiB,CAC9BtL,EAAW,KAAK,oBAAsB/B,EAAiB,QACzDoN,IAEArL,EAAW,MAAM,IAAM,CACrBqL,GACV,CAAS,EAEH,QACD,CACD,MAAME,EAAgBD,EAChB,CAACjM,EAAWa,EAAQgK,CAAO,EAAIqB,EAAc,QAAQvL,EAAYoL,EAAsBzL,EAAYC,EAAc0L,EAEvHJ,CAAK,EACLE,EAAuB/L,EACnB,iBAAkBkM,GACpBJ,GAAS,KAAK,CAACI,EAAerL,CAAM,CAAC,EAEnC,YAAaqL,IACXvL,EAAW,KAAK,oBAAsB/B,EAAiB,QACzDsN,EAAc,QAAQvL,EAAYE,CAAM,EAExCF,EAAW,MAAMuL,EAAc,QAAQ,KAAK,KAAMvL,EAAYE,CAAM,CAAC,GAGrEgK,IACFkB,EAAuBH,GAAoCG,EAAsB3hC,EAAOu2B,EAAYkK,EAASgB,EAAOC,CAAO,EAE9H,CACD,OAAOC,CACT,CACA,SAAS/B,GAAyBL,EAAiBv/B,EAAOu2B,EAAYkK,EAAShB,EAAesC,EAAkB,CAC9G,MAAML,EAAUK,EAAmB,CAAE,EAAG,OAClCnM,EAAY4L,GAAoCjC,EAAiBv/B,EAAOu2B,EAAYkK,EAAS,CACjG,cAAAhB,EACA,iBAAAsC,CACD,EAAEL,CAAO,EACV,OAAAA,GAAS,QAAQ,CAAC,CAACI,EAAerL,CAAM,IAAM,CAC5CqL,EAAc,aAAavL,EAAYX,EAAWa,CAAM,CAC5D,CAAG,EACMb,CACT,CACA,SAASoM,GAAU3M,EAAUr1B,EAAOu2B,EAAYkJ,EAAgB,CAAA,EAAI,CAClE,IAAIU,EAAe9K,EACnB,MAAM4M,EAAc,CAAA,EACpB,SAASC,EAAcC,EAAYniC,EAAOm7B,EAAa,CACrD5E,EAAW,OAAO,qBAAqB,CACrC,KAAM,oBACN,SAAUA,EAAW,KACrB,MAAAv2B,EACA,SAAUmiC,EACV,aAAchH,CACpB,CAAK,EACD8G,EAAY,KAAKE,CAAU,CAC5B,CAGD,GAAIniC,EAAM,OAAS0vB,GACjB,OAAAyQ,EAAetJ,GAAqBuL,GAAajC,EAAcngC,EAAOu2B,CAAU,EAAG,CACjF,OAAQ,SACd,CAAK,EACD2L,EAAc/B,EAAcngC,EAAO,CAAA,CAAE,EAC9B,CACL,SAAUmgC,EACV,YAAA8B,CACN,EAEE,IAAII,EAAYriC,EAIhB,GAAIqiC,EAAU,OAAS5S,GAAa,CAClC,MAAM6S,EAAeD,EACfE,EAAQ3Q,GAAkB0Q,CAAY,EACtCnH,EAAcqH,GAAkBF,EAAcnC,CAAY,EAChE,GAAIoC,GAAS,CAACpH,EAAY,OAIxB,OAAAgF,EAAetJ,GAAqBxB,EAAU,CAC5C,OAAQ,QACR,MAAOiN,EAAa,KAC5B,CAAO,EACDJ,EAAc/B,EAAcmC,EAAc,CAAA,CAAE,EACrC,CACL,SAAUnC,EACV,YAAA8B,CACR,EAEI9B,EAAeb,GAAUnE,EAAa9F,EAAUkB,EAAY8L,EAAW,GAEvE5C,CAAa,EACbyC,EAAc/B,EAAcmC,EAAcnH,CAAW,CACtD,CACD,IAAIsH,EAAmC,GACvC,KAAOtC,EAAa,SAAW,UAAU,CACvC,IAAInC,EAAqByE,EAAmCC,GAA2BvC,EAAckC,CAAS,EAAI,GAIlH,MAAMM,EAAgB3E,EAAmB,OAASmC,EAAe,OACjE,GAAI,CAACnC,EAAmB,OAAQ,CAC9B,GAAI,CAACyB,EAAc,OACjB,MAEF4C,EAAY5C,EAAc,QAC1BzB,EAAqBwE,GAAkBH,EAAWlC,CAAY,CAC/D,CACDA,EAAeb,GAAUtB,EAAoBmC,EAAc5J,EAAY8L,EAAW,GAAO5C,CAAa,EACtGgD,EAAmCtC,IAAiBwC,EACpDT,EAAc/B,EAAckC,EAAWrE,CAAkB,CAC1D,CACD,OAAImC,EAAa,SAAW,UAC1BiC,GAAajC,EAAckC,EAAW9L,CAAU,EAE3C,CACL,SAAU4J,EACV,YAAA8B,CACJ,CACA,CACA,SAASG,GAAaxM,EAAW51B,EAAOu2B,EAAY,CAClD,OAAOqJ,GAAyBhK,EAAW51B,EAAOu2B,EAAY,OAAO,OAAOX,EAAU,QAAQ,EAAE,IAAIlO,GAAS0P,GAAU1P,CAAK,CAAC,EAAG,CAAA,CAAE,CACpI,CACA,SAAS8a,GAAkBxiC,EAAO41B,EAAW,CAC3C,OAAOA,EAAU,QAAQ,kBAAkBA,EAAW51B,CAAK,CAC7D,CACA,SAAS0iC,GAA2B9M,EAAW51B,EAAO,CACpD,MAAM4iC,EAAuB,IAAI,IAC3BC,EAAejN,EAAU,OAAO,OAAOmC,EAAiB,EAC9D,UAAWC,KAAa6K,EACtBC,EAAM,UAAW9hC,IAAK,CAACg3B,CAAS,EAAE,OAAOG,GAAmBH,EAAW,MAAS,CAAC,EAC/E,GAAKh3B,EAAE,QAGP,UAAW05B,KAAc15B,EAAE,OACzB,GAAI05B,EAAW,QAAU,QAAajD,GAAciD,EAAW,MAAO9E,EAAU,QAAS51B,EAAO41B,CAAS,EAAG,CAC1GgN,EAAqB,IAAIlI,CAAU,EACnC,MAAMoI,CACP,EAIP,OAAO/E,GAA6B,MAAM,KAAK6E,CAAoB,EAAG,IAAI,IAAIhN,EAAU,MAAM,EAAGA,EAAU,YAAY,CACzH,CAQA,SAASmN,GAAkB3J,EAAUtI,EAAY,CAC/C,MAAMkS,EAAgBzK,GAAiBgE,GAAcnD,EAAUtI,CAAU,CAAC,EAC1E,OAAOqI,GAAcC,EAAU,CAAC,GAAG4J,CAAa,CAAC,CACnD,CAEA,SAASjS,GAAkBpwB,EAAO,CAChC,MAAO,CAAC,CAACA,GAAS,OAAOA,GAAU,UAAY,YAAaA,GAAS,UAAWA,CAClF,CACA,MAAMsiC,GAAyB,SAAiBC,EAAW,CACzD,OAAO7S,GAAa6S,EAAW,KAAK,KAAK,CAC3C,EACMC,GAAwB,SAAgBj1B,EAAK,CACjD,OAAO,KAAK,KAAK,IAAIA,CAAG,CAC1B,EACMk1B,GAAqB,SAAapjC,EAAO,CAC7C,MAAMqjC,EAAiB,KAAK,QAAQ,kBAAkB,KAAMrjC,CAAK,EACjE,MAAO,CAAC,CAACqjC,GAAgB,QAEzBA,EAAe,KAAK7mB,GAAKA,EAAE,SAAW,QAAaA,EAAE,QAAQ,MAAM,CACrE,EACM8mB,GAAwB,UAAkB,CAC9C,KAAM,CACJ,OAAQC,EACR,KAAAC,EACA,QAAAxW,EACA,QAAAyW,EACA,OAAAC,EACA,IAAAC,EACA,OAAAC,EACA,QAAAC,EACA,GAAGC,CACJ,EAAG,KACJ,MAAO,CACL,GAAGA,EACH,KAAM,MAAM,KAAKN,CAAI,CACzB,CACA,EACMO,GAAyB,UAAmB,CAChD,OAAO,KAAK,OAAO,OAAO,CAACC,EAAKhM,KAC1BA,EAAU,OAAS,SACrBgM,EAAIhM,EAAU,EAAE,EAAIA,EAAU,MAEzBgM,GACN,CAAE,CAAA,CACP,EACA,SAASC,GAAsB5K,EAAQrM,EAAS,CAC9C,MAAO,CACL,OAAQqM,EAAO,OACf,OAAQA,EAAO,OACf,MAAOA,EAAO,MACd,QAAArM,EACA,QAASqM,EAAO,QAChB,OAAQA,EAAO,OACf,MAAOF,GAAcnM,EAAQ,KAAMqM,EAAO,MAAM,EAChD,KAAM,IAAI,IAAIA,EAAO,OAAO,QAAQnB,GAAMA,EAAG,IAAI,CAAC,EAClD,SAAUmB,EAAO,SACjB,aAAcA,EAAO,cAAgB,CAAE,EACvC,QAAS4J,GACT,OAAQE,GACR,IAAKC,GACL,QAASW,GACT,OAAQT,EACZ,CACA,CACA,SAASzM,GAAqBxB,EAAUgE,EAAS,GAAI,CACnD,OAAO4K,GAAsB,CAC3B,GAAG5O,EACH,GAAGgE,CACP,EAAKhE,EAAS,OAAO,CACrB,CACA,SAAS6O,GAAqB7O,EAAUjO,EAAS,CAC/C,KAAM,CACJ,OAAQmc,EACR,KAAAC,EACA,QAAAxW,EACA,SAAAxK,EACA,QAAAf,EACA,IAAAkiB,EACA,OAAAC,EACA,QAAAC,EACA,QAAAJ,EACA,OAAAC,EACA,GAAGI,CACJ,EAAGzO,EACE8O,EAAe,CAAA,EACrB,UAAWhkB,KAAMqC,EAAU,CACzB,MAAMkF,EAAQlF,EAASrC,CAAE,EACzBgkB,EAAahkB,CAAE,EAAI,CACjB,SAAUuH,EAAM,qBAAqBN,CAAO,EAC5C,IAAKM,EAAM,IACX,SAAUA,EAAM,UAChB,aAAcA,EAAM,aAC1B,CACG,CAMD,MALkB,CAChB,GAAGoc,EACH,QAASM,GAAe3iB,CAAO,EAC/B,SAAU0iB,CACd,CAEA,CACA,SAASC,GAAeC,EAAa,CACnC,IAAIC,EACJ,UAAWvgC,KAAOsgC,EAAa,CAC7B,MAAM1jC,EAAQ0jC,EAAYtgC,CAAG,EAC7B,GAAIpD,GAAS,OAAOA,GAAU,SAC5B,GAAI,cAAeA,GAAS,SAAUA,GAAS,QAASA,EACtD2jC,IAAS,MAAM,QAAQD,CAAW,EAAIA,EAAY,QAAU,CAC1D,GAAGA,CACb,EACQC,EAAKvgC,CAAG,EAAI,CACV,aAAcwwB,GACd,GAAI5zB,EAAM,EACpB,MACa,CACL,MAAMiB,EAASwiC,GAAezjC,CAAK,EAC/BiB,IAAWjB,IACb2jC,IAAS,MAAM,QAAQD,CAAW,EAAIA,EAAY,QAAU,CAC1D,GAAGA,CACf,EACUC,EAAKvgC,CAAG,EAAInC,EAEf,CAEJ,CACD,OAAO0iC,GAAQD,CACjB,CAEA,SAASE,GAAahrB,EAAG8b,EAAUp1B,EAAMk2B,EAAc,CACrD,MAAOqO,EACP,GAAArkB,EACA,MAAAsT,CACF,EAAG,CACD,cAAAgM,CACF,EAAG,CACD,MAAMgF,EAAYpP,EAAS,QAAQ,gBAAgB,OACnD,GAAI,OAAOmP,GAAgB,SACzB,MAAM,IAAI,MAAM,iEAAiEA,CAAW,cAAc,EAE5G,MAAME,EAAgB,OAAOF,GAAgB,WAAaA,EAAYvkC,EAAMk2B,CAAY,EAAIqO,EAC5F,IAAI/J,EACJ,GAAI,OAAOhH,GAAU,SAAU,CAC7B,MAAMkR,EAAcF,GAAaA,EAAUhR,CAAK,EAChDgH,EAAgB,OAAOkK,GAAgB,WAAaA,EAAY1kC,EAAMk2B,CAAY,EAAIwO,CAC1F,MACIlK,EAAgB,OAAOhH,GAAU,WAAaA,EAAMxzB,EAAMk2B,CAAY,EAAI1C,EAE5E,OAAI,OAAOgH,GAAkB,UAC3BgF,EAAc,KAAKiF,CAAa,EAE3B,CAACrP,EAAU,CAChB,MAAOqP,EACP,GAAAvkB,EACA,MAAOsa,CACX,CAAG,CACH,CACA,SAASmK,GAAarO,EAAYE,EAAQ,CACxC,KAAM,CACJ,MAAAz2B,EACA,MAAAyzB,EACA,GAAAtT,CACD,EAAGsW,EACJ,GAAI,OAAOhD,GAAU,SAAU,CAC7B8C,EAAW,MAAM,IAAM,CACrB,MAAM5E,EAAO4E,EAAW,KACxBA,EAAW,OAAO,UAAU,SAAS5E,EAAMA,EAAM3xB,EAAOyzB,EAAOtT,CAAE,CACvE,CAAK,EACD,MACD,CACH,CAOA,SAASma,GAAMkK,EAAapd,EAAS,CACnC,SAASkT,EAAMr6B,EAAMw2B,EAAQ,CAC5B,CACD,OAAA6D,EAAM,KAAO,eACbA,EAAM,MAAQkK,EACdlK,EAAM,GAAKlT,GAAS,GACpBkT,EAAM,MAAQlT,GAAS,MACvBkT,EAAM,QAAUiK,GAChBjK,EAAM,QAAUsK,GACTtK,CACT,CCviFA,SAASuK,GAActO,EAAY,CACjC,QAAAvJ,EACA,QAAAvL,CACF,EAAGzhB,EAAO8kC,EAAiB,CACzB,MAAMC,EAAQ,CAACxkB,EAAK6G,EAAU,CAAA,IAAO,CACnC,KAAM,CACJ,SAAA8M,EACA,MAAAnV,CACD,EAAGqI,EACJ,GAAI,OAAO7G,GAAQ,SAAU,CAC3B,MAAMqU,EAAQnC,GAAuBzF,EAASzM,CAAG,EACjD,GAAI,CAACqU,EACH,MAAM,IAAI,MAAM,gBAAgBrU,CAAG,iCAAiCyM,EAAQ,EAAE,GAAG,EAEnF,MAAM8F,EAAWkD,GAAYpB,EAAO,CAClC,GAAIxN,EAAQ,GACZ,OAAQmP,EAAW,KACnB,aAAcnP,EAAQ,aACtB,MAAO,OAAOrI,GAAU,WAAaA,EAAM,CACzC,QAAA0C,EACA,MAAAzhB,EACA,KAAMu2B,EAAW,IAClB,CAAA,EAAIxX,EACL,IAAAwB,EACA,SAAA2T,CACR,CAAO,EACD,OAAA4Q,EAAgBhS,EAAS,EAAE,EAAIA,EACxBA,CACb,KASM,QARiBkD,GAAYzV,EAAK,CAChC,GAAI6G,EAAQ,GACZ,OAAQmP,EAAW,KACnB,aAAcnP,EAAQ,aACtB,MAAOA,EAAQ,MACf,IAAA7G,EACA,SAAA2T,CACR,CAAO,CAGP,EACE,MAAO,CAAC3T,EAAK6G,IAAY,CACvB,MAAM0L,EAAWiS,EAAMxkB,EAAK6G,CAAO,EACnC,OAAA0d,EAAgBhS,EAAS,EAAE,EAAIA,EAC/ByD,EAAW,MAAM,IAAM,CACjBzD,EAAS,oBAAsB0B,EAAiB,SAGpD1B,EAAS,MAAK,CACpB,CAAK,EACMA,CACX,CACA,CAEA,SAASkS,GAAczO,EAAYlB,EAAUa,EAAYC,EAAc,CACrE,WAAA8O,CACF,EAAG,CACD,GAAI,CAAC5P,EAAS,QACZ,MAAM,IAAI,MAAM,+FAA+F,EAEjH,MAAMyP,EAAkB,CAAA,EAClBI,EAAa,CACjB,QAAS7P,EAAS,QAClB,MAAOa,EAAW,MAClB,MAAO2O,GAActO,EAAYlB,EAAUa,EAAW,MAAO4O,CAAe,EAC5E,KAAMvO,EAAW,KACjB,OAAQA,EAAW,MACvB,EACE,IAAI4O,EAAgB,CAAA,EACpB,GAAI,OAAOF,GAAe,WACxBE,EAAgBF,EAAWC,EAAY/O,CAAY,MAEnD,WAAWpyB,KAAO,OAAO,KAAKkhC,CAAU,EAAG,CACzC,MAAMG,EAAiBH,EAAWlhC,CAAG,EACrCohC,EAAcphC,CAAG,EAAI,OAAOqhC,GAAmB,WAAaA,EAAeF,EAAY/O,CAAY,EAAIiP,CACxG,CAEH,MAAMC,EAAiB,OAAO,OAAO,CAAE,EAAEhQ,EAAS,QAAS8P,CAAa,EACxE,MAAO,CAACtO,GAAqBxB,EAAU,CACrC,QAASgQ,EACT,SAAU,OAAO,KAAKP,CAAe,EAAE,OAAS,CAC9C,GAAGzP,EAAS,SACZ,GAAGyP,CACJ,EAAGzP,EAAS,QACd,CAAA,CAAC,CACJ,CAmCA,SAASiQ,EAAOL,EAAY,CAC1B,SAASK,EAAOrlC,EAAMw2B,EAAQ,CAC7B,CACD,OAAA6O,EAAO,KAAO,gBACdA,EAAO,WAAaL,EACpBK,EAAO,QAAUN,GACVM,CACT,CClGA,SAASC,EAAYvlC,EAAO6D,EAAM,CAChC,MAAM4D,EAAQ+pB,EAAQ3tB,CAAI,EAC1B,GAAI,CAAC4D,EAAM,SAASzH,EAAM,IAAI,EAAG,CAC/B,MAAMwlC,EAAY/9B,EAAM,SAAW,EAAI,SAASA,EAAM,CAAC,CAAC,IAAM,iBAAiBA,EAAM,KAAK,MAAM,CAAC,IACjG,MAAM,IAAI,MAAM,kBAAkB,KAAK,UAAUzH,CAAK,CAAC,YAAYwlC,CAAS,EAAE,CAC/E,CACH,CAEA,MAAMr8B,GAAQ,IAAI,QAClB,SAASs8B,GAAKhjC,EAAQsB,EAAK1D,EAAI,CAC7B,IAAIqlC,EAAev8B,GAAM,IAAI1G,CAAM,EACnC,OAAKijC,EAKQ3hC,KAAO2hC,IAClBA,EAAa3hC,CAAG,EAAI1D,MALpBqlC,EAAe,CACb,CAAC3hC,CAAG,EAAG1D,EAAI,CACjB,EACI8I,GAAM,IAAI1G,EAAQijC,CAAY,GAIzBA,EAAa3hC,CAAG,CACzB,CAEA,MAAM4hC,GAAe,CAAA,EACfC,GAAuBrkB,GACvB,OAAOA,GAAW,SACb,CACL,KAAMA,CACZ,EAEM,OAAOA,GAAW,WAChB,YAAaA,EACR,CACL,KAAMA,EAAO,IACrB,EAEW,CACL,KAAMA,EAAO,IACnB,EAESA,EAET,MAAMskB,EAAU,CACd,YACAxM,EAAQjS,EAAS,CA0Ef,GAzEA,KAAK,OAASiS,EAKd,KAAK,IAAM,OAEX,KAAK,GAAK,OAUV,KAAK,KAAO,OAEZ,KAAK,KAAO,OAEZ,KAAK,OAAS,OAOd,KAAK,QAAU,OAEf,KAAK,MAAQ,OAEb,KAAK,KAAO,OAEZ,KAAK,OAAS,OAEd,KAAK,QAAU,OAKf,KAAK,KAAO,OAKZ,KAAK,OAAS,OAKd,KAAK,MAAQ,GACb,KAAK,YAAc,OACnB,KAAK,KAAO,GACZ,KAAK,YAAc,OACnB,KAAK,OAAS,OACd,KAAK,OAASjS,EAAQ,QACtB,KAAK,IAAMA,EAAQ,KACnB,KAAK,QAAUA,EAAQ,SACvB,KAAK,KAAO,KAAK,OAAS,KAAK,OAAO,KAAK,OAAO,KAAK,GAAG,EAAI,CAAA,EAC9D,KAAK,GAAK,KAAK,OAAO,IAAM,CAAC,KAAK,QAAQ,GAAI,GAAG,KAAK,IAAI,EAAE,KAAKgI,EAAe,EAChF,KAAK,KAAO,KAAK,OAAO,OAAS,KAAK,OAAO,QAAU,OAAO,KAAK,KAAK,OAAO,MAAM,EAAE,OAAS,WAAa,KAAK,OAAO,QAAU,UAAY,UAC/I,KAAK,YAAc,KAAK,OAAO,YAC/B,KAAK,MAAQ,KAAK,QAAQ,MAAM,KAChC,KAAK,QAAQ,MAAM,IAAI,KAAK,GAAI,IAAI,EACpC,KAAK,OAAS,KAAK,OAAO,OAASgC,GAAU,KAAK,OAAO,OAAQ,CAAC0U,EAAa/hC,IAC3D,IAAI8hC,GAAUC,EAAa,CAC3C,QAAS,KACT,KAAM/hC,EACN,SAAU,KAAK,OACvB,CAAO,CAEF,EAAI4hC,GACD,KAAK,OAAS,YAAc,CAAC,KAAK,OAAO,QAC3C,MAAM,IAAI,MAAM,wDAAwD,KAAK,EAAE,6BAA6B,OAAO,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC,0BAA0B,EAInK,KAAK,QAAU,KAAK,OAAO,UAAY,GAAO,UAAY,KAAK,OAAO,SAAW,GACjF,KAAK,MAAQnU,EAAQ,KAAK,OAAO,KAAK,EAAE,QACxC,KAAK,KAAOA,EAAQ,KAAK,OAAO,IAAI,EAAE,QACtC,KAAK,KAAO,KAAK,OAAO,KACxB,KAAK,OAAS,KAAK,OAAS,SAAW,CAAC,KAAK,OAAS,KAAK,OAAO,OAAS,OAC3E,KAAK,KAAOA,EAAQ6H,EAAO,IAAI,EAAE,OAClC,CAGD,aAAc,CACZ,KAAK,YAAc6B,GAAkB,IAAI,EACrC,KAAK,OAAO,SACd,KAAK,OAASrJ,GAAwB,KAAK,OAAO,MAAM,EAAE,IAAI,GAAK+I,GAAiB,KAAMtL,GAAY,CAAC,CAAC,GAE1G,OAAO,KAAK,KAAK,MAAM,EAAE,QAAQvrB,GAAO,CACtC,KAAK,OAAOA,CAAG,EAAE,YAAW,CAClC,CAAK,CACF,CAGD,IAAI,YAAa,CACf,MAAO,CACL,GAAI,KAAK,GACT,IAAK,KAAK,IACV,QAAS,KAAK,QAAQ,QACtB,KAAM,KAAK,KACX,QAAS,KAAK,QAAU,CACtB,OAAQ,KAAK,QAAQ,OACrB,OAAQ,KACR,QAAS,KAAK,QAAQ,QAAQ,IAAI6hC,EAAoB,EACtD,UAAW,KACX,QAAS,GACT,OAAQ,KAAO,CACb,OAAQ,KAAK,QAAQ,OAAO,IAAI,GAAK,IAAI,EAAE,EAAE,EAAE,EAC/C,OAAQ,IAAI,KAAK,EAAE,GACnB,QAAS,KAAK,QAAQ,QAAQ,IAAIA,EAAoB,EACtD,UAAW,IACrB,EACA,EAAU,OACJ,QAAS,KAAK,QACd,OAAQxU,GAAU,KAAK,OAAQtT,GACtBA,EAAM,UACd,EACD,GAAI,KAAK,GACT,YAAa,CAAC,GAAG,KAAK,YAAY,OAAQ,CAAA,EAAE,KAAI,EAAG,IAAI,IAAM,CAC3D,GAAG,EACH,QAAS,EAAE,QAAQ,IAAI8nB,EAAoB,CACnD,EAAQ,EACF,MAAO,KAAK,MAAM,IAAIA,EAAoB,EAC1C,KAAM,KAAK,KAAK,IAAIA,EAAoB,EACxC,KAAM,KAAK,KACX,MAAO,KAAK,OAAS,GACrB,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,YAAa,KAAK,YAClB,KAAM,KAAK,IACjB,CACG,CAGD,QAAS,CACP,OAAO,KAAK,UACb,CAGD,IAAI,QAAS,CACX,OAAOH,GAAK,KAAM,SAAU,IAAMjU,EAAQ,KAAK,OAAO,MAAM,EAAE,IAAI,CAACoB,EAAczyB,IAAM,CACrF,KAAM,CACJ,IAAAogB,EACA,SAAA2T,CACD,EAAGtB,EACEgE,EAAahE,EAAa,IAAML,GAAe,KAAK,GAAIpyB,CAAC,EACzD4lC,EAAc,OAAOxlB,GAAQ,SAAWA,EAAM,iBAAiBgS,GAAe,KAAK,GAAIpyB,CAAC,CAAC,GAC/F,MAAO,CACL,GAAGyyB,EACH,IAAKmT,EACL,GAAInP,EACJ,SAAU1C,EACV,QAAS,CACP,KAAM,CACJ,OAAA8R,EACA,QAAAC,EACA,GAAGC,CACJ,EAAGtT,EACJ,MAAO,CACL,GAAGsT,EACH,KAAM,gBACN,IAAKH,EACL,GAAInP,CAChB,CACS,CACT,CACK,CAAA,CAAC,CACH,CAGD,IAAI,IAAK,CACP,OAAO6O,GAAK,KAAM,KAAM,IAEf,CAAC,GADY,KAAK,WACH,EAAE,QAAQ,CAAC,CAAC5K,EAAYre,CAAC,IAAMA,EAAE,IAAIA,GAAK,CAACqe,EAAYre,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC1L,EAAK,CAAC+pB,EAAYH,CAAU,KACpH5pB,EAAI+pB,CAAU,EAAI/pB,EAAI+pB,CAAU,GAAK,CAAA,EACrC/pB,EAAI+pB,CAAU,EAAE,KAAKH,CAAU,EACxB5pB,GACN,CAAE,CAAA,CACN,CACF,CACD,IAAI,OAAQ,CACV,OAAO20B,GAAK,KAAM,qBAAsB,IAAMxL,GAAsB,IAAI,CAAC,CAC1E,CACD,IAAI,SAAU,CACZ,OAAOwL,GAAK,KAAM,UAAW,IAAMnK,GAAwB,KAAM,KAAK,OAAO,OAAO,CAAC,CACtF,CAGD,KAAKjG,EAAUr1B,EAAO,CACpB,MAAMq6B,EAAYr6B,EAAM,KAClBygC,EAAU,CAAA,EAChB,IAAI0F,EACJ,MAAMC,EAAaX,GAAK,KAAM,cAAcpL,CAAS,GAAI,IAAMZ,GAAc,KAAMY,CAAS,CAAC,EAC7F,UAAWgM,KAAaD,EAAY,CAClC,KAAM,CACJ,MAAA5O,CACD,EAAG6O,EACEC,EAAkBjR,EAAS,QACjC,IAAIkR,EAAc,GAClB,GAAI,CACFA,EAAc,CAAC/O,GAASC,GAAcD,EAAO8O,EAAiBtmC,EAAOq1B,CAAQ,CAC9E,OAAQlF,EAAK,CACZ,MAAMqW,EAAY,OAAOhP,GAAU,SAAWA,EAAQ,OAAOA,GAAU,SAAWA,EAAM,KAAO,OAC/F,MAAM,IAAI,MAAM,4BAA4BgP,EAAY,IAAIA,CAAS,KAAO,EAAE,4BAA4BnM,CAAS,oBAAoB,KAAK,EAAE;AAAA,EAAOlK,EAAI,OAAO,EAAE,CACnK,CACD,GAAIoW,EAAa,CACf9F,EAAQ,KAAK,GAAG4F,EAAU,OAAO,EACjCF,EAAqBE,EACrB,KACD,CACF,CACD,OAAOF,EAAqB,CAACA,CAAkB,EAAI,MACpD,CAGD,IAAI,QAAS,CACX,OAAOV,GAAK,KAAM,SAAU,IAAM,CAChC,KAAM,CACJ,OAAA3J,CACD,EAAG,KACEr7B,EAAS,IAAI,IAAI,KAAK,SAAS,EACrC,GAAIq7B,EACF,UAAWlL,KAAW,OAAO,KAAKkL,CAAM,EAAG,CACzC,MAAMhe,EAAQge,EAAOlL,CAAO,EAC5B,GAAI9S,EAAM,OACR,UAAW9d,KAAS8d,EAAM,OACxBrd,EAAO,IAAI,GAAGT,CAAK,EAAE,CAG1B,CAEH,OAAO,MAAM,KAAKS,CAAM,CAC9B,CAAK,CACF,CAOD,IAAI,WAAY,CACd,MAAMA,EAAS,IAAI,IAAI,CAAC,GAAG,KAAK,YAAY,KAAM,CAAA,EAAE,OAAOo6B,GAClD,KAAK,YAAY,IAAIA,CAAU,EAAE,KAAKH,GAAc,EAAE,CAACA,EAAW,QAAU,CAACA,EAAW,QAAQ,QAAU,CAACA,EAAW,QAAQ,CACtI,CAAC,EACF,OAAO,MAAM,KAAKj6B,CAAM,CACzB,CACH,CAEA,MAAM8uB,GAAmB,IACzB,MAAMkX,EAAa,CACjB,YACApN,EAAQqN,EAAiB,CACvB,KAAK,OAASrN,EAEd,KAAK,QAAU,OACf,KAAK,QAAU,OACf,KAAK,gBAAkB,OAEvB,KAAK,aAAe,GAEpB,KAAK,MAAQ,IAAI,IACjB,KAAK,KAAO,OACZ,KAAK,GAAK,OACV,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,GAAKA,EAAO,IAAM,YACvB,KAAK,gBAAkB,CACrB,OAAQqN,GAAiB,QAAU,CAAE,EACrC,QAASA,GAAiB,SAAW,CAAE,EACvC,OAAQA,GAAiB,QAAU,CAAE,EACrC,OAAQA,GAAiB,QAAU,CAAE,CAC3C,EACI,KAAK,QAAU,KAAK,OAAO,QAC3B,KAAK,QAAU,KAAK,OAAO,QAC3B,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,MAAQ,KAAK,MAAM,KAAK,IAAI,EACjC,KAAK,KAAO,IAAIb,GAAUxM,EAAQ,CAChC,KAAM,KAAK,GACX,SAAU,IAChB,CAAK,EACD,KAAK,KAAK,cACV,KAAK,OAAS,KAAK,KAAK,OACxB,KAAK,OAAS,KAAK,KAAK,MACzB,CAUD,QAAQqN,EAAiB,CACvB,KAAM,CACJ,QAAAjG,EACA,OAAAlJ,EACA,OAAAoP,EACA,OAAAC,CACN,EAAQ,KAAK,gBACT,OAAO,IAAIH,GAAa,KAAK,OAAQ,CACnC,QAAS,CACP,GAAGhG,EACH,GAAGiG,EAAgB,OACpB,EACD,OAAQ,CACN,GAAGnP,EACH,GAAGmP,EAAgB,MACpB,EACD,OAAQ,CACN,GAAGC,EACH,GAAGD,EAAgB,MACpB,EACD,OAAQ,CACN,GAAGE,EACH,GAAGF,EAAgB,MACpB,CACP,CAAK,CACF,CACD,aAAarN,EAAQ,CACnB,MAAMwN,EAAqB9D,GAAkB,KAAK,KAAM1J,EAAO,KAAK,EAC9DZ,EAAUF,GAAiBgE,GAAc,KAAK,KAAMsK,CAAkB,CAAC,EAC7E,OAAO5C,GAAsB,CAC3B,OAAQ,CAAC,GAAGxL,CAAO,EACnB,QAASY,EAAO,SAAW,CAAE,EAC7B,SAAU,CAAE,EACZ,OAAQC,GAAeb,EAAS,KAAK,IAAI,EAAI,OAASY,EAAO,QAAU,SACvE,OAAQA,EAAO,OACf,MAAOA,EAAO,MACd,aAAcA,EAAO,YACtB,EAAE,IAAI,CACR,CASD,WAAWhE,EAAUr1B,EAAOu2B,EAAY,CACtC,OAAOyL,GAAU3M,EAAUr1B,EAAOu2B,CAAU,EAAE,QAC/C,CASD,UAAUlB,EAAUr1B,EAAOu2B,EAAY,CACrC,OAAOyL,GAAU3M,EAAUr1B,EAAOu2B,CAAU,EAAE,WAC/C,CACD,kBAAkBlB,EAAUr1B,EAAO,CACjC,OAAOi9B,GAAe,KAAK,KAAM5H,EAAS,MAAOA,EAAUr1B,CAAK,GAAK,EACtE,CAMD,mBAAmBu2B,EAAYZ,EAAW8J,EAAe,CACvD,KAAM,CACJ,QAAAhe,CACN,EAAQ,KAAK,OACHqlB,EAAa7C,GAAsB,CACvC,QAAS,OAAOxiB,GAAY,YAAcA,EAAUA,EAAU,CAAE,EAChE,OAAQ,CAAC,KAAK,IAAI,EAClB,SAAU,CAAE,EACZ,OAAQ,QACT,EAAE,IAAI,EACP,OAAI,OAAOA,GAAY,WAUdme,GAAyBkH,EAAYnR,EAAWY,EAAY,CAAC+O,EATjD,CAAC,CAClB,MAAAP,EACA,MAAA/kC,EACA,KAAA2xB,CACD,IAAKlQ,EAAQ,CACZ,MAAAsjB,EACA,MAAO/kC,EAAM,MACb,KAAA2xB,CACR,CAAO,CACoF,CAAC,EAAG8N,CAAa,EAEjGqH,CACR,CAMD,mBAAmBvQ,EAAYxX,EAAO,CACpC,MAAM4W,EAAY1F,GAAgBlR,CAAK,EACjC0gB,EAAgB,CAAA,EAChBsH,EAAkB,KAAK,mBAAmBxQ,EAAYZ,EAAW8J,CAAa,EAC9E7J,EAAY0J,GAAU,CAAC,CAC3B,OAAQ,CAAC,GAAGvD,GAAqB,KAAK,IAAI,CAAC,EAC3C,OAAQ,KAAK,KACb,QAAS,GACT,QAAS,CAAE,EACX,UAAW,KACX,OAAQ,IACd,CAAK,EAAGgL,EAAiBxQ,EAAYZ,EAAW,GAAM8J,CAAa,EACzD,CACJ,SAAUuH,CACX,EAAGhF,GAAUpM,EAAWD,EAAWY,EAAYkJ,CAAa,EAC7D,OAAOuH,CACR,CACD,MAAM3R,EAAU,CACd,OAAO,OAAOA,EAAS,QAAQ,EAAE,QAAQ3N,GAAS,CAC5CA,EAAM,cAAc,SAAW,UACjCA,EAAM,MAAK,CAEnB,CAAK,CACF,CACD,iBAAiBkJ,EAAS,CACxB,MAAMqW,EAAWtW,GAAYC,CAAO,EAC9BsW,EAAeD,EAAS,MAAM,CAAC,EAC/BE,EAAkB3N,GAAUyN,EAAS,CAAC,CAAC,EAAIA,EAAS,CAAC,EAAE,MAAM1X,GAAiB,MAAM,EAAI0X,EAAS,CAAC,EAClGjP,EAAY,KAAK,MAAM,IAAImP,CAAe,EAChD,GAAI,CAACnP,EACH,MAAM,IAAI,MAAM,sBAAsBmP,CAAe,gCAAgC,KAAK,EAAE,GAAG,EAEjG,OAAOxL,GAAmB3D,EAAWkP,CAAY,CAClD,CACD,IAAI,YAAa,CACf,OAAO,KAAK,KAAK,UAClB,CACD,QAAS,CACP,OAAO,KAAK,UACb,CACD,qBAAqB7R,EAAUjO,EAAS,CACtC,OAAO8c,GAAqB7O,EAAUjO,CAAO,CAC9C,CACD,gBAAgBiO,EAAU+R,EAAa,CACrC,MAAM5kB,EAAW,CAAA,EACX6kB,EAAmBhS,EAAS,SAClC,OAAO,KAAKgS,CAAgB,EAAE,QAAQC,GAAW,CAC/C,MAAMC,EAAYF,EAAiBC,CAAO,EACpCE,EAAaD,EAAU,SACvBhnB,EAAMgnB,EAAU,IAChB3S,EAAQ,OAAOrU,GAAQ,SAAWkS,GAAuB,KAAMlS,CAAG,EAAIA,EAC5E,GAAI,CAACqU,EACH,OAEF,MAAM9B,EAAWkD,GAAYpB,EAAO,CAClC,GAAI0S,EACJ,OAAQF,EAAY,KACpB,aAAcG,EAAU,aACxB,SAAUC,EACV,IAAAjnB,EACA,SAAUgnB,EAAU,QAC5B,CAAO,EACD/kB,EAAS8kB,CAAO,EAAIxU,CAC1B,CAAK,EACD,MAAM2U,EAAmBxD,GAAsB,CAC7C,GAAG5O,EACH,SAAA7S,EACA,OAAQ,MAAM,KAAK+V,GAAiBgE,GAAc,KAAK,KAAMlH,EAAS,KAAK,CAAC,CAAC,CAC9E,EAAE,IAAI,EACP,IAAI7kB,EAAO,IAAI,IACf,SAASk3B,EAAcrD,EAAa7hB,EAAU,CAC5C,GAAI,CAAAhS,EAAK,IAAI6zB,CAAW,EAGxB,CAAA7zB,EAAK,IAAI6zB,CAAW,EACpB,QAAStgC,KAAOsgC,EAAa,CAC3B,MAAM1jC,EAAQ0jC,EAAYtgC,CAAG,EAC7B,GAAIpD,GAAS,OAAOA,GAAU,SAAU,CACtC,GAAI,iBAAkBA,GAASA,EAAM,eAAiB4zB,GAAc,CAClE8P,EAAYtgC,CAAG,EAAIye,EAAS7hB,EAAM,EAAE,EACpC,QACD,CACD+mC,EAAc/mC,EAAO6hB,CAAQ,CAC9B,CACF,EACF,CACD,OAAAklB,EAAcD,EAAiB,QAASjlB,CAAQ,EACzCilB,CACR,CACH,CAgDA,SAASE,GAActO,EAAQqN,EAAiB,CAC9C,OAAO,IAAID,GAAapN,EAAQqN,CAAe,CACjD,CA+DA,SAASkB,GAAM,CACb,QAAAC,EACA,OAAAlB,EACA,QAAAlG,EACA,OAAAlJ,EACA,OAAAqP,CACF,EAAG,CACD,MAAO,CACL,cAAevN,GAAUsO,GAAc,CACrC,GAAGtO,EACH,QAAAwO,CACN,EAAO,CACD,OAAAlB,EACA,QAAAlG,EACA,OAAAlJ,EACA,OAAAqP,CACN,CAAK,CACL,CACA,CCprBA,IAAIkB,GAAY,OAAO,eACnBC,GAAW,CAAC9V,EAAQ+V,IAAQ,CAC9B,QAAS/jB,KAAQ+jB,EACfF,GAAU7V,EAAQhO,EAAM,CAAE,IAAK+jB,EAAI/jB,CAAI,EAAG,WAAY,EAAI,CAAE,CAChE,EAGIgkB,GAAqB,CAAG,EAC5BF,GAASE,GAAoB,CAC3B,WAAY,IAAMC,GAClB,eAAgB,IAAMC,GACtB,eAAgB,IAAMC,GACtB,mBAAoB,IAAMC,GAC1B,uBAAwB,IAAMC,GAC9B,yBAA0B,IAAMC,GAChC,kBAAmB,IAAMC,GACzB,eAAgB,IAAMC,GACtB,kBAAmB,IAAMC,GACzB,eAAgB,IAAMC,GACtB,QAAS,IAAMC,GACf,iBAAkB,IAAMC,GACxB,mBAAoB,IAAMC,GAC1B,eAAgB,IAAMC,GACtB,iBAAkB,IAAMC,GACxB,qBAAsB,IAAMC,GAC5B,uBAAwB,IAAMC,GAC9B,qBAAsB,IAAMC,GAC5B,uBAAwB,IAAMC,GAC9B,cAAe,IAAMC,GACrB,gBAAiB,IAAMC,GACvB,gBAAiB,IAAMC,EACzB,CAAC,EAkBD,IAAIC,GAAqBxnB,GAAS,CAChC,MAAMynB,EAAsBloB,GAAW,CACrC,OAAQA,EAAO,KAAI,CACjB,IAAK,aACH,OAAOA,EAAO,QAAQ,OAAO,OAE/B,IAAK,gBACH,OAAOA,EAAO,QAAQ,OAExB,IAAK,WACH,OAAOA,EAAO,QAAQ,SAExB,IAAK,kBACL,IAAK,qBACH,MAAO,GAAGA,EAAO,QAAQ,QAAQ,IAAIA,EAAO,QAAQ,MAAM,GAE5D,IAAK,aACH,OAAOA,EAAO,QAAQ,OAAO,WAE/B,IAAK,gBACH,OAAOA,EAAO,QAAQ,SAExB,IAAK,gBACL,IAAK,gBACH,OAAOA,EAAO,QAAQ,WAAW,GAEnC,IAAK,oBACH,OAAOA,EAAO,QAAQ,GAExB,IAAK,eACL,IAAK,eACH,OAAOA,EAAO,QAAQ,GAExB,IAAK,qBACH,OAAO,KAAK,UAAUA,EAAO,QAAQ,IAAI,EAE3C,QACE,OAAO,KAAK,UAAUA,EAAO,OAAO,CAEvC,CACL,EACE,OAAIS,EAAK,KAAK,OAAS,OACd,OAEF,GAAGA,EAAK,KAAK,IAAI,IAAIynB,EAAmBznB,EAAK,IAAI,CAAC,EAC3D,EAGI0nB,GAAiB,CAACh1B,EAAGD,IAAM,CAC7B,GAAI,CAACC,GAAK,CAACD,EACT,MAAO,GACT,MAAMk1B,EAAcnoC,GAAUA,EAAM,OAAO,KAAK,GAAG,EACnD,OAAOmoC,EAAWj1B,CAAC,IAAMi1B,EAAWl1B,CAAC,CACvC,EASIm1B,GAAqBroB,GAUhB,CATiB,CACtB,gBACA,aACA,gBACA,qBACA,qBACA,eACA,cACJ,EAC0B,SAASA,EAAO,IAAI,EAI1CsoB,GAAe,CAAG,EACtB9B,GAAS8B,GAAc,CACrB,MAAO,IAAMC,CACf,CAAC,EAGE,IAACA,EAAQ,QAKRC,GAAeC,GAAU,CAACt1B,EAAGD,IAAM,CACrC,GAAIw1B,GAAUD,EAAOt1B,CAAC,EACpB,MAAO,GACT,GAAIu1B,GAAUD,EAAOv1B,CAAC,EACpB,MAAO,GACT,MAAMy1B,EAAuB5b,GAAW,CACtC,MAAM6b,EAAenoB,GAASA,EAAK,KAAK,OAAS,cAAgBA,EAAK,KAAK,QAAQ,OAAO,SAAWsM,EAC/F1sB,EAAS,OAAO,OAAOooC,EAAM,KAAK,EAAE,KAAKG,CAAW,EAC1DzpC,OAAAA,EAAOkB,EAAQ,yCAAyC0sB,CAAM,EAAE,EACzD1sB,CACX,EACQ,CAACwoC,EAAQC,CAAM,EAAI,CAAC31B,EAAGD,CAAC,EAAE,IAAIy1B,CAAmB,EACvD,OAAOpnB,GAAcknB,EAAOI,EAAQC,CAAM,EAAI,GAAK,CACrD,EACIJ,GAAY,CAACD,EAAO1b,IACL0b,EAAM,MAAMA,EAAM,IAAI,EACvB,KAAK,SAAW1b,EAI9Bgc,GAAsBhpB,GAAU,CAClC,MAAMwC,EAAUH,GAAqBrC,CAAK,EAAE,IAAK0E,GAAWA,EAAO,IAAKmF,GAAU7J,EAAM,MAAM6J,CAAK,CAAC,CAAC,EAC/Fof,EAAe,CAAA,EACrB,QAAS1mB,KAAUC,EACjB,UAAW0mB,KAAYC,GAAiB,CACtC,MAAMC,EAAOD,GAAgBD,CAAQ,EAC/BG,EAAyBD,EAAK7mB,EAAQvC,CAAK,EAC3CspB,EAAcD,EAAuB,QAAS3oB,GAAS6oB,GAAmBhnB,EAAQ7B,CAAI,CAAC,EAC7FuoB,EAAa,KAAK,GAAGI,EAAwB,GAAGC,CAAW,EAC3D/mB,EAASA,EAAO,OAAOinB,GAAUP,CAAY,CAAC,CAC/C,CAEH,MAAO,CACL,OAAQO,GAAUP,CAAY,CAClC,CACA,EACIM,GAAqB,CAAChnB,EAAQknB,IAAgB,CAChD,MAAMC,EAAiB,CAAA,EACvB,OAAQD,EAAY,KAAK,KAAI,CAC3B,IAAK,gBACL,IAAK,gBAAiB,CACpB,KAAM,CAAE,WAAAE,CAAY,EAAGF,EAAY,KAAK,QACxCC,EAAe,KAAK,GAAGnnB,EAAO,OAAOqnB,GAAeD,CAAU,CAAC,CAAC,EAChE,KACD,CACD,IAAK,eAAgB,CACnB,MAAM3c,EAASyc,EAAY,KAAK,QAAQ,WAAW,KACnDC,EAAe,KAAK,GAAGnnB,EAAO,OAAOsnB,GAAS7c,CAAM,CAAC,CAAC,EACtD,KACD,CAIF,CACD,MAAMsc,EAAcI,EAAe,QAASr1B,GAAMk1B,GAAmBhnB,EAAQlO,CAAC,CAAC,EAC/E,OAAOq1B,EAAe,OAAOJ,CAAW,CAC1C,EACIH,GAAkB,CAEpB,sBAAsBjlB,EAAOwkB,EAAO,CAClC,MAAMoB,EAAUC,GAA4B7lB,CAAK,EAC3C8lB,EAAWC,GAAwB/lB,CAAK,EAAE,IAAIgmB,EAAS,EAE7D,OAD0BJ,EAAQ,OAAS,GAAK1B,GAAe0B,EAASE,CAAQ,EAIzE9lB,EAAM,OAAO2lB,GAASM,GAAYzB,EAAOsB,CAAQ,CAAC,CAAC,EAFjD,EAGV,EAED,yBAAyB9lB,EAAO,CAC9B,MAAMkmB,EAAiBL,GAA4B7lB,CAAK,EACxD,OAAOmmB,GAAanmB,CAAK,EAAE,OAAQxD,GAAS0pB,EAAe,SAASE,GAAY5pB,CAAI,CAAC,CAAC,CACvF,EAED,0BAA0BwD,EAAO,CAC/B,MAAMkmB,EAAiBG,GAAkBrmB,CAAK,EAC9C,OAAOA,EAAM,OAAOsmB,GAASJ,CAAc,CAAC,CAC7C,EAED,8BAA8BlmB,EAAO,CACnC,MAAMumB,EAAiBC,GAAkBxmB,CAAK,EACxCymB,EAAgBH,GAASC,CAAc,EACvCG,EAAelqB,GAAS4nB,GAAkB5nB,EAAK,IAAI,EACzD,OAAOwD,EAAM,OAAQxD,GAASiqB,EAAcjqB,CAAI,GAAKkqB,EAAYlqB,CAAI,CAAC,CACvE,CACH,EACIypB,GAAc,CAACzB,EAAOmC,IAAcA,EAAU,KAAKpC,GAAYC,CAAK,CAAC,EAAE,MACvEoC,GAAepqB,GAAS,CAAC,aAAc,kBAAmB,cAAc,EAAE,SAASA,EAAK,KAAK,IAAI,EACjGqqB,GAAmBrqB,GAASA,EAAK,KAAK,OAAS,gBAC/C2pB,GAAgBnmB,GAAUA,EAAM,OAAO4mB,EAAW,EAClDE,GAAe9mB,GAAUA,EAAM,OAAO6mB,EAAe,EACrDE,GAAoBvqB,GAASA,EAAK,KAAK,OAAS,sBAAwBA,EAAK,KAAK,QAAQ,WAAa8nB,EACvG0C,GAAgBhnB,GAAUA,EAAM,OAAO+mB,EAAgB,EACvDhB,GAA2B/lB,GAAU8mB,GAAY9mB,CAAK,EAAE,OAAOgnB,GAAahnB,CAAK,CAAC,EAClF6lB,GAA+B7lB,GAAU+lB,GAAwB/lB,CAAK,EAAE,IAAIinB,EAAS,EACrFZ,GAAqBrmB,GAAU8mB,GAAY9mB,CAAK,EAAE,IAAIinB,EAAS,EAC/DT,GAAqBxmB,GAAUgnB,GAAahnB,CAAK,EAAE,IAAIinB,EAAS,EAChEA,GAAazqB,GAASA,EAAK,KAAK,QAAQ,OACxCwpB,GAAaxpB,GAASA,EAAK,KAAK,OAChCmpB,GAAYuB,GAAY1qB,GAASwpB,GAAUxpB,CAAI,IAAM0qB,EACrDZ,GAAYa,GAAiB3qB,GAAS2qB,EAAY,SAASnB,GAAUxpB,CAAI,CAAC,EAC1E4pB,GAAe5pB,GAAS,CAC1B,OAAQA,EAAK,KAAK,KAAI,CACpB,IAAK,aAEH,OADkBA,EAAK,KACN,QAAQ,OAAO,OAElC,IAAK,kBAEH,OADkBA,EAAK,KACN,QAAQ,OAE3B,IAAK,eAEH,OADkBA,EAAK,KACN,QAAQ,WAAW,IAEvC,CACH,EACI8oB,GAAa6B,GAAiB3qB,GAAS,CAAC2qB,EAAY,SAAS3qB,CAAI,EACjEkpB,GAAkBD,GAAgBt1B,IAAOA,EAAE,KAAK,OAAS,gBAAkBA,EAAE,KAAK,OAAS,iBAAmBA,EAAE,KAAK,QAAQ,KAAOs1B,EAAW,GAG/I2B,GAAgBtrB,GACJsG,GAAYtG,EAAOgpB,EAAkB,EAAE,OAAQ30B,GAAM,CAACA,EAAE,SAAS,EAAE,IAAKA,GAAM6zB,GAAkB7zB,CAAC,CAAC,EAAE,KAAK,GAAG,EAQxH+K,GAAY,YACZC,GAAa,aACbC,GAAY,YACZC,GAAY,YACZgsB,GAAmB,mBACnBC,GAAa,aACbC,GAAY,YACZC,GAAa,aACblsB,GAAc,CAChB,UAAAJ,GACA,WAAAC,GACA,UAAAC,GACA,UAAAC,GACA,iBAAAgsB,GACA,WAAAC,GACA,UAAAC,GACA,WAAAC,EACF,EACIhsB,EAAQ,CAAE,QAAS,EAAO,EAG1BisB,GAAqBC,GAAgBpvB,GAAUovB,EAAW,OAAO,CAACC,EAAQ/kC,IAAcA,EAAU+kC,CAAM,EAAGrvB,CAAK,EAGhHsvB,GAAY9wB,IAAO,CACrB,KAAMA,EAAE,KACR,KAAMA,EAAE,IACV,GAGI+wB,GAAkB13B,GAAM,GAAGA,EAAE,UAAU,IAAI,IAAI23B,GAAM33B,EAAE,UAAU,SAAS,CAAC,KAAKA,EAAE,SAAS,IAAI,IAAIA,EAAE,SAAS,UAAU,GACxH23B,GAAStsC,GAAMA,EAAE,MAAM,EAAG,CAAC,EAI3BusC,GAAc,CAAC74B,EAAGD,IACbC,EAAE,OAASD,EAAE,MAAQC,EAAE,OAASD,EAAE,KAEvC+4B,GAAoB,CAAC94B,EAAGD,IAAM,CAChCsQ,EACEwoB,GAAY74B,EAAGD,CAAC,EAChB;AAAA,kBACc,KAAK,UAAU24B,GAAS14B,CAAC,CAAC,CAAC;AAAA,kBAC3B,KAAK,UAAU04B,GAAS34B,CAAC,CAAC,CAAC,EAC7C,CACA,EAGI8P,EAAU,CACZ,MAAO,QACP,KAAM,OACN,KAAM,OACN,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,UAAW,WACb,EACI+F,GAAkB,cAAc,KAAM,CACxC,YAAY1pB,EAAS2pB,EAAS,CAC5B,QACA,KAAK,QAAU3pB,EACf,KAAK,QAAU2pB,CAChB,CACD,KACA,OACF,EAGIkjB,GAAkB,CAAC/4B,EAAGD,IAAM,CAC9B,MAAMi5B,EAAS,OAAOh5B,GAAM,SAAWi5B,GAAO,OAAOj5B,CAAC,EAAIA,EACpDk5B,EAAS,OAAOn5B,GAAM,SAAWk5B,GAAO,OAAOl5B,CAAC,EAAIA,EACpDo5B,EAAoB,CAACH,EAAQE,CAAM,EAAE,KAAKE,EAAuB,EAAE,OAAO,CAAClsC,EAAQ8nB,IAAS,IAAI,WAAW,CAAC,GAAG9nB,EAAQ,GAAG8nB,CAAI,CAAC,EAAG,IAAI,UAAY,EAExJ,OADe,OAAOhV,GAAM,SAAWJ,EAAOy5B,IAChCjtB,GAAY,WAAY+sB,CAAiB,CACzD,EACIC,GAA0B,CAACp5B,EAAGD,IAAM,CACtC,MAAMu5B,EAAUt5B,EAAE,WACZu5B,EAAUx5B,EAAE,WAClB,OAAIu5B,EAAUC,EACL,GACLD,EAAUC,EACL,EACF,CACT,EAGI9F,GAAiB,iBACjBC,GAAiB,iBACjBC,GAAqB,qBACrBC,GAAyB,yBACzBC,GAA2B,2BAC3BC,GAAoB,oBACpBC,GAAiB,iBACjBC,GAAoB,oBACpBC,GAAiB,iBACjBC,GAAU,UACVC,GAAmB,CACrB,CAACV,EAAc,EAAG,CAChB,aAAc,+CACd,cAAe,wCAChB,EACD,CAACC,EAAc,EAAG,CAChB,aAAc,8CACd,cAAe,uCAChB,EACD,CAACC,EAAkB,EAAG,CACpB,aAAc,yCACf,EACD,CAACC,EAAsB,EAAG,CACxB,aAAc,4CACd,cAAe,oCAChB,EACD,CAACC,EAAwB,EAAG,CAC1B,aAAc,wCACd,cAAe,iCAChB,EACD,CAACC,EAAiB,EAAG,CACnB,aAAc,0CACd,cAAe,6CAChB,EACD,CAACC,EAAc,EAAG,CAChB,aAAc,sCACd,cAAe,iCAChB,EACD,CAACC,EAAiB,EAAG,CACnB,aAAc,yEACf,EACD,CAACC,EAAc,EAAG,CAChB,aAAc,wCACd,cAAe,4CAChB,EACD,CAACC,EAAO,EAAG,CACT,aAAc,+CACd,cAAe,qDAChB,CACH,EACIE,GAAqB,CAACjlC,EAAMqqC,EAAc,UAAY,CACxD,KAAM,CAAE,aAAAC,EAAc,cAAAC,EAAgBD,CAAY,EAAKtF,GAAiBhlC,CAAI,EAG5E,MAAO,CAAE,KADWqqC,IAAgB,QAAU,cAAgB,QAClC,QAAS,CAAE,KAAArqC,EAAM,QAF7BqqC,IAAgB,QAAUC,EAAeC,CAEL,EACtD,EAWA,SAASC,GAAS3kB,EAAM,CACtB,MAAM4kB,EAAezkB,GAAQH,CAAI,EACjC,OAAOK,EAAMjJ,GAAY,WAAYwtB,CAAY,EAAE,MAAM,EAAG,EAAE,CAChE,CAMA,IAAIC,GAAaC,GAAcA,EAAU,WAAW,aAAc,EAAE,EAIhEC,GAAsBvlC,EAASwgB,IACjCA,EAAO6kB,GAAU7kB,CAAI,EACdF,EAAavI,GAAiByI,CAAI,EAC1C,EAGGglB,GAAgB9rB,EAAU8G,GAAS,CACrCA,EAAO6kB,GAAU7kB,CAAI,EACrB,MAAMvJ,EAAKkuB,GAAS3kB,CAAI,EAClBilB,EAAgBF,GAAoB/kB,CAAI,EACxCvF,EAAU,CAAE,GAAAhE,GACZyuB,EAAY9kB,GAAW,KAAK3F,EAASwqB,EAAc,UAAU,SAAS,EAC5E,MAAO,CAAE,GAAAxuB,EAAI,UAAAyuB,EACf,CAAC,EAQGC,GAAsBvtB,GAAU,CAClC,MAAMiE,EAAWwB,GAAYzF,CAAK,EAC5B,CAAE,eAAAgE,EAAgB,KAAAyD,EAAM,KAAAzmB,CAAI,EAAKgf,EAEjC6H,EAAaF,GADI,CAAE,eAAA3D,EAAgB,SAAAC,EAAU,KAAAwD,EAAM,KAAAzmB,CAAI,CACvB,EACtC,OAAO2iB,GAAakE,CAAU,CAChC,EACI2lB,GAAuB,CAAC3lB,EAAY4lB,IAAU,CAChD,MAAM1pB,EAAiB+D,GAAOD,CAAU,EACxC,OAAO/D,GAAa,CAAE,eAAAC,EAAgB,KAAM0pB,CAAO,CAAA,CACrD,EACIC,GAAmB,CAAClsC,EAAQmsC,IAAiBtiB,GAAQ7pB,CAAM,EAAIA,EAASgsC,GAAqBhsC,EAAQmsC,CAAY,EACjHtiB,GAAW7pB,GAAWA,GAAQ,eAAe,MAAM,EACnDmiB,GAAgBrG,GAAQ,IAAI,WAAWA,EAAI,OAAQA,EAAI,WAAYA,EAAI,UAAU,EAMjFswB,GAAM,MACN3iB,GAAe,CACjB,KAAM,CAAE,EACR,SAAU,GACV,QAAS,CAAE,EACX,QAAS,CAAE,EACX,MAAO,CAAE,EACT,UAAW,CAAE,EACb,YAAa,CAAE,EACf,SAAU,CAAE,EACZ,eAAgB,CAAE,EAClB,eAAgB,CAAE,EAClB,eAAgB,CAAE,EAClB,oBAAqB,CAAE,CACzB,EACI4iB,GAAa,CAAE,KAAM5qB,EAAQ,KAAM,KAAMA,EAAQ,IAAO,EACxD6qB,GAAc,CAAE,KAAM7qB,EAAQ,KAAM,KAAMulB,CAAQ,EAClDuF,GAAmB,CACrB,KAAM9qB,EAAQ,UACd,KAAMA,EAAQ,SAChB,EAMI+qB,GAAqB,CAACxxB,EAAOkE,IAAS,CACxC,OAAQA,EAAK,KAAK,KAAI,CACpB,IAAK,eAAgB,CACnB,MAAM+sB,EAAQ/sB,EAAK,KAAK,QAAQ,WAC1BsM,EAASygB,EAAM,KACfQ,EAAU,CACd,SAAU,GAEV,OAAAjhB,EACA,KAAMygB,EACN,MAAO,CAAE,CACjB,EACYrD,EAAiB,CAAC,GAAG5tB,EAAM,eAAgByxB,CAAO,EAClDC,EAAsB,CAAC,GAAG1xB,EAAM,mBAAmB,EACzD,OAAK0xB,EAAoB,SAASlhB,CAAM,GACtCkhB,EAAoB,KAAKlhB,CAAM,EAE1B,CACL,GAAGxQ,EAEH,eAAA4tB,EACA,oBAAA8D,CACR,CACK,CAIF,CACD,OAAO1xB,CACT,EAGI2xB,GAAWztB,GAAUlE,IAAW,CAAE,GAAGA,EAAO,KAAM,CAACkE,EAAK,IAAI,CAAG,GAG/D0tB,GAAaC,GAAa7xB,GAAU,CACtC,KAAM,CAAE,OAAAwQ,CAAQ,EAAGqhB,EACnB,MAAO,CACL,GAAG7xB,EAEH,QAASA,EAAM,QAAQ,IAAKyxB,GAAY,CACtC,GAAIA,EAAQ,SAAWjhB,EAAQ,CAC7B,KAAM,CAAE,QAAAshB,EAAU,EAAI,EAAGL,EACzB,OAAIK,EAAQ,KAAMC,GAAMA,EAAE,WAAaF,EAAQ,QAAQ,EAC9CJ,EAEA,CACL,GAAGA,EACH,QAAS,CAAC,GAAGK,EAASD,CAAO,CACzC,CACO,CACD,OAAOJ,CACb,CAAK,EAED,eAAgBzxB,EAAM,eAAe,OAAQ+xB,GAAMA,EAAE,KAAK,OAASF,EAAQ,QAAQ,CACvF,CACA,EAGIG,GAAaC,GAAejyB,IAAW,CACzC,GAAGA,EAEH,QAAS,CACP,GAAGA,EAAM,QACT,CACE,GAAGiyB,EACH,MAAO,CAAE,CACV,CACF,EAED,eAAgBjyB,EAAM,eAAe,OAAQwa,GAAMA,EAAE,SAAWyX,EAAU,MAAM,CAClF,GAGIC,GAAiB,CAAC1hB,EAAQ2hB,EAAQ,CAAE,IAAKA,EAAM,IAAKC,GAAcpyB,IAAW,CAC/E,GAAGA,EACH,QAASA,EAAM,QAAQ,IAAKyxB,IAAa,CACvC,GAAGA,EACH,MAAOA,EAAQ,SAAWjhB,GAAUihB,EAAQ,MAAM,SAASW,CAAQ,EAAIX,EAAQ,MAAQ,CAAC,GAAGA,EAAQ,MAAOW,CAAQ,CACtH,EAAI,CACJ,EAAE,EAGEC,GAAcvvC,GAAakd,IAAW,CACxC,GAAGA,EACH,SAAU,CAAC,GAAGA,EAAM,SAAUld,CAAO,CACvC,GAGIwvC,GAAWC,GAAavyB,IAAW,CACrC,GAAGA,EACH,MAAO,CAAC,GAAGA,EAAM,MAAOuyB,CAAO,CACjC,GAIIC,GAASr8B,GAGTs8B,GAAaC,GAAe1yB,IACb,CACf,GAAGA,EAEH,QAASwyB,GAAO,CAAC,GAAGxyB,EAAM,QAAS0yB,CAAS,CAAC,EAE7C,eAAgB1yB,EAAM,eAAe,OAAQwa,GAAMA,EAAE,OAASkY,EAAU,IAAI,CAChF,GAKIC,GAAoB1B,GAAWjxB,IAAW,CAC5C,GAAGA,EACH,QAASA,EAAM,QAAQ,IACpByxB,GAAYA,EAAQ,SAAWR,EAAM,KAAO,CAC3C,GAAGQ,EACH,KAAMR,CAEZ,EAAQQ,CACL,CACH,GAGImB,GAAoB3B,GAAWjxB,IAAW,CAC5C,GAAGA,EACH,QAASA,EAAM,QAAQ,IACpB6yB,GAAYA,EAAQ,OAAS5B,EAAM,KAAO,CACzC,GAAG4B,EACH,KAAM5B,CAEZ,EAAQ4B,CACL,CACH,GAGIC,GAAoBC,GAAkB/yB,GAAU,CAClD,KAAM,CAAE,UAAAgzB,CAAW,EAAGhzB,EACtB,OAAO+yB,EAAe,CAAE,GAAG/yB,EAAO,UAAWgzB,EAAU,OAAOD,CAAY,CAAG,EAAG/yB,CAClF,EAGIizB,GAAkB9F,GAAgBntB,GAAU,CAC9C,MAAMkzB,EAAkB,CACtB,GAAG/F,EACH,KAAM,EACN,QAAS,EACb,EACE,MAAO,CACL,GAAGntB,EACH,YAAa,CACX,GAAGA,EAAM,YACT,CAACmtB,EAAW,EAAE,EAAG+F,CAClB,CACL,CACA,EAMIC,GAAS,CAACnzB,EAAOozB,EAAM9pB,EAAU,CAAE,eAAgB,MAAY,CAKjE,MAAMupB,EAJkB,CACtB,GAAG7yB,EAAM,QACT,GAAGsJ,EAAQ,eAAiBtJ,EAAM,eAAiB,CAAE,CACzD,EACkC,KAAM9c,GAAMA,EAAE,OAASkwC,CAAI,EAC3D,GAAIP,IAAY,OACd,MAAM,IAAI,MAAM,uBAAuBO,CAAI,iBAAiB,EAE9D,OAAOP,CACT,EAGIQ,GAAY,CAACrzB,EAAOozB,IAASpzB,EAAM,QAAQ,KAAM9c,GAAMA,EAAE,OAASkwC,CAAI,IAAM,OAG5EE,GAAYT,IAAa,CAC3B,OAAQA,EAAQ,KAChB,SAAUA,EAAQ,KAClB,KAAMA,EAAQ,KACd,MAAO,CAAE,CACX,GACIU,GAAUV,IAAa,CACzB,OAAQA,EAAQ,KAChB,SAAUA,EAAQ,KAClB,KAAMA,EAAQ,IAChB,GACIW,GAAYX,IAAa,CAC3B,OAAQA,EAAQ,KAChB,WAAYA,EAAQ,KACpB,SAAUA,EAAQ,KAClB,KAAMA,EAAQ,IAChB,GACIY,GAAa,CAAE,SAAAH,GAAU,OAAAC,GAAQ,SAAAC,EAAW,EAG5CE,GAAY,CAAC1zB,EAAO2zB,EAAUrqB,EAAU,CAAE,eAAgB,MACrDsqB,GAAU5zB,EAAO2zB,EAAUrqB,CAAO,IAAM,OAE7CuqB,GAAS,CAAC7zB,EAAO2zB,EAAUrqB,EAAU,CAAE,eAAgB,MAAY,CACrE,MAAMuoB,EAAU+B,GAAU5zB,EAAO2zB,EAAUrqB,CAAO,EAClDsF,OAAAA,EAAQijB,EAAS,UAAU8B,CAAQ,YAAY,EACxC9B,CACT,EACI+B,GAAY,CAAC5zB,EAAO2zB,EAAUrqB,EAAU,CAAE,eAAgB,MACxD+pB,GAAUrzB,EAAO2zB,CAAQ,EACpBF,GAAW,SAASN,GAAOnzB,EAAO2zB,CAAQ,CAAC,EAEpC3zB,EAAM,QAAQ,OAAOsJ,EAAQ,eAAiBtJ,EAAM,eAAiB,CAAA,CAAE,EAC5D,QAASwa,GAAMA,EAAE,SAAW,CAAA,CAAE,EACvC,KAAMuX,GAAMA,EAAE,WAAa4B,CAAQ,IAAMrqB,EAAQ,eAAiBtJ,EAAM,eAAe,KAAM+xB,GAAMA,EAAE,WAAa4B,CAAQ,EAAI,QAI9IG,GAAmB,CAAC9zB,EAAO2zB,IACxBD,GAAU1zB,EAAO2zB,EAAU,CAAE,eAAgB,GAAM,EAEjD3zB,EAAM,eAAe,KAAM+xB,GAAMA,EAAE,KAAK,OAAS4B,CAAQ,EADvD,GAKPI,GAAY,CAAC/zB,EAAOwQ,IAAWxQ,EAAM,QAAQ,KAAMwa,GAAMA,EAAE,SAAWhK,CAAM,IAAM,OAGlFwjB,GAAU,CAACh0B,EAAOoyB,IAAapyB,EAAM,MAAM,KAAMi0B,GAAMA,EAAE,WAAa7B,CAAQ,IAAM,OAIxF,SAAS8B,GAAcl0B,EAAOqC,EAAI,CAChC,OAAOA,KAAMrC,EAAM,WACrB,CACA,SAASm0B,GAAcn0B,EAAOqC,EAAI,CAChC6N,OAAAA,EAAQgkB,GAAcl0B,EAAOqC,CAAE,EAAG,0BAA0BA,CAAE,UAAU,EACrDrC,EAAM,YAAYqC,CAAE,CAEzC,CAOA,IAAI+xB,GAAiBnD,GAAUA,EAAM,eAAe,WAAW,EAG3DoD,EAAS,CAACC,EAAUC,IAAkB,CACxC,MAAMC,EAAwBJ,GAAcG,CAAa,EAAIA,EAAgBhoB,EAAWgoB,CAAa,EAC/FE,EAAmBloB,EAAW+nB,CAAQ,EACtCI,EAAiB1wB,EAAW,UAC5BF,EAAqBswB,GAAcI,CAAqB,EAAIA,EAAsB,UAAYA,EAAsB,WACpHG,EAAmB3wB,EAAW,aAAa,CAC/C,OAAQswB,EACR,mBAAAxwB,EACA,gBAAiB4wB,EAAe,SACpC,CAAG,EAgBD,MAfgB,CACd,cAAe,CACb,GAAGE,GACH,UAAWF,EAAe,SAC3B,EACD,UAAW,CACT,GAAGF,EACH,UAAW1wB,CACZ,EACD,SAAU,CACR,GAAG2wB,EACH,UAAWH,EAAS,WAAW,SAChC,EACD,iBAAAK,CACJ,CAEA,EAKIE,GAAOzvB,EACT,CAAC0vB,EAASC,IAAmB,CAC3B,KAAM,CAAE,cAAAC,EAAe,iBAAAL,CAAkB,EAAGG,EAO5C,OANkBztB,EAAY,aAAa,CACzC,OAAQstB,EACR,gBAAiBK,EAAc,UAC/B,mBAAoBD,EAAe,WAAW,SACpD,CAAK,CAGF,CACH,EAGIE,GAAS,CAAC,CACZ,WAAAC,EACA,YAAAC,EACA,qBAAAC,CACF,IAAM,CACJ1F,GAAkByF,EAAaD,EAAW,QAAQ,EAC9CE,GACF1F,GAAkBwF,EAAW,UAAWE,CAAoB,EAE9DD,EAAY,WAAaD,EAAW,SAAS,WAAa,EAC1D,MAAMG,EAAoBD,GAAwBF,EAAW,UAC7D,OAAOb,EAAOc,EAAaE,CAAiB,CAC9C,EAGIC,GAAc,CAACt1B,EAAOgH,IAAW,CACnC,KAAM,CAAE,UAAAgsB,CAAW,EAAGhzB,EAChB,CAAE,UAAAsM,CAAS,EAAKtF,EAAO,WAEvBuuB,EADoBvC,EAAU,OAAO,CAAC,CAAE,UAAAwC,CAAS,IAAOA,EAAU,YAAclpB,CAAS,EAC7D,IAAKwoB,GAAYD,GAAKC,EAAS9tB,CAAM,CAAC,EAClEiqB,EAAQsE,EAAQ,QAASE,GAAYH,GAAYt1B,EAAOy1B,CAAO,CAAC,EACtE,MAAO,CAAC,GAAGF,EAAS,GAAGtE,CAAK,CAC9B,EAGIyE,GAAS,CAAC11B,EAAO21B,IACIL,GAAYt1B,EAAO21B,CAAU,EAC9B,OAAOC,GAAqB,CAAE,CAAA,EAElDA,GAAsB,CAAC9xC,EAAQmtC,IAAU,CAC3C,KAAM,CAAE,KAAAlrC,EAAM,KAAAogB,EAAM,WAAA0vB,CAAU,EAAK5E,EAC7B6E,EAAkBhyC,EAAOiC,CAAI,GAAK,CAAA,EAClCgwC,EAAgBD,EAAgB3vB,CAAI,GAAK,CAAA,EAC/C,OAAA4vB,EAAcF,CAAU,EAAI5E,EACrB,CACL,GAAGntC,EACH,CAACiC,CAAI,EAAG,CACN,GAAG+vC,EACH,CAAC3vB,CAAI,EAAG4vB,CACT,CACL,CACA,EAIIrrC,GAAO,CAACsV,EAAO21B,EAAYhqB,IAAU,CACvC,KAAM,CAAE,KAAA5lB,EAAM,KAAAogB,CAAM,EAAGwF,EACjBqqB,EAAoBN,GAAO11B,EAAO21B,CAAU,EAC5C1E,EAAQ+E,EAAkBjwC,CAAI,EAAIiwC,EAAkBjwC,CAAI,EAAEogB,CAAI,EAAI,OACxE8vB,EACEhF,EACA,uBAAuB,KAAK,UAAUtlB,CAAK,CAAC;AAAA,eACjCgqB,EAAW,IAAI;AAAA;AAAA,IAE1B31B,EAAM,UAAU,IAAIuvB,EAAc,EAAE,KAAK;AAAA,GAAM,CAAC;AAAA,eACrC,KAAK,UAAUyG,EAAmB,KAAM,CAAC,CAAC,EACzD,EACE,MAAMH,EAAa,eAAgBlqB,GAASA,EAAM,aAAe,OAE/DA,EAAM,WAGNslB,EAAM,OAAS,EAEjB,OAAOA,EAAM4E,CAAU,CACzB,EAGIK,GAAmB,CAACl2B,EAAO2L,IAAU,CACvC,MAAMqnB,EAAYhzB,EAAM,UAAU,OAChC,CAAC,CAAE,SAAAs0B,KAAeA,EAAS,OAAS3oB,EAAM,MAAQ2oB,EAAS,OAAS3oB,EAAM,IAC9E,EACQwqB,EAAmBnD,EAAU,OAAOoD,GAAe,CAAC,EAI1D,OAHwBpD,EAAU,OAChC,CAAC,CAAE,SAAAsB,CAAQ,IAAOA,EAAS,aAAe6B,CAC9C,CAEA,EACIC,GAAgB,CAACC,EAAKvB,IAAY,CACpC,KAAM,CAAE,WAAAe,CAAU,EAAKf,EAAQ,SAC/B,OAAIe,EAAaQ,EACRR,EAEFQ,CACT,EAGIC,GAAS,CAACt2B,EAAOwQ,EAAQlH,EAAU,CAAE,eAAgB,MAAY,CAKnE,MAAMmoB,EAJkB,CACtB,GAAGzxB,EAAM,QACT,GAAGsJ,EAAQ,eAAiBtJ,EAAM,eAAiB,CAAE,CACzD,EACkC,KAAMwa,GAAMA,EAAE,SAAWhK,CAAM,EAC/D,GAAIihB,IAAY,OACd,MAAM,IAAI,MAAM,mBAAmBjhB,CAAM,iBAAiB,EAE5D,OAAOihB,CACT,EAGI8E,GAAmB,CAACv2B,EAAO2zB,EAAUrqB,EAAU,CAAE,eAAgB,MAAY,CAC/E,GAAI+pB,GAAUrzB,EAAO2zB,CAAQ,EAC3B,OAAOF,GAAW,SAASN,GAAOnzB,EAAO2zB,CAAQ,CAAC,EACpD,KAAM,CAAE,OAAAnjB,CAAM,EAAKqjB,GAAO7zB,EAAO2zB,EAAUrqB,CAAO,EAClD,OAAOgtB,GAAOt2B,EAAOwQ,EAAQlH,CAAO,CACtC,EAGIktB,GAAgB,CAACx2B,EAAOwQ,EAAQimB,IAAU,CAC5C,GAAI,CAAC1C,GAAU/zB,EAAOwQ,CAAM,EAC1B,MAAO,GAET,MAAMihB,EAAU6E,GAAOt2B,EAAOwQ,CAAM,EAC9B,CAAE,MAAA2hB,EAAQ,EAAI,EAAGV,EACvB,OAAOU,EAAM,SAASsE,CAAK,CAC7B,EACIC,GAAgB,CAAC12B,EAAOwQ,IAAWgmB,GAAcx2B,EAAOwQ,EAAQwb,CAAK,EAGrE2K,GAAmB,CAAC32B,EAAOwQ,IACtBxQ,EAAM,eAAe,KAAMwa,GAAMA,EAAE,SAAWhK,CAAM,EAIzDomB,GAAgB,CAAC52B,EAAOoyB,IAAapyB,EAAM,QAAQ,OAAQyxB,GAAYA,EAAQ,OAAO,SAASW,CAAQ,CAAC,EACxGyE,GAAU72B,GAAU42B,GAAc52B,EAAOgsB,CAAK,EAG9C8K,GAAY92B,GAAUA,EAAM,SAG5B+2B,GAAO,CAAC/2B,EAAOoyB,IAAa,CAC9B,MAAMqE,EAAQz2B,EAAM,MAAM,KAAM,GAAM,EAAE,WAAaoyB,CAAQ,EAC7D,GAAI,CAACqE,EACH,MAAM,IAAI,MAAM,kBAAkBrE,CAAQ,iBAAiB,EAC7D,OAAOqE,CACT,EAGIO,GAAmB,CAACh3B,EAAOozB,IAASpzB,EAAM,eAAe,KAAM9c,GAAMA,EAAE,OAASkwC,CAAI,EAIpF,CAAE,KAAA6D,EAAM,EAAGxwB,EACXywB,GAAc,CAACl3B,EAAOixB,IAAU,CAClC,MAAMkG,EAAczB,GAAO11B,EAAOixB,CAAK,EAAEgG,EAAI,EAAEA,EAAI,EACnD,OAAOnwB,GAAcqwB,CAAW,CAClC,EAGIC,GAAgB,CAACp3B,EAAO,CAAE,KAAAja,EAAM,KAAAogB,CAAI,IAAO,CAC7C,MAAMkxB,EAASr3B,EAAM,UAAU,OAAO,CAAC,CAAE,UAAAw1B,KAAgBA,EAAU,OAASzvC,GAAQyvC,EAAU,OAASrvB,CAAI,EAAE,IAAI,CAAC,CAAE,SAAU,CAAE,KAAMmxB,EAAO,KAAMC,CAAK,MAAU,CAAE,KAAMD,EAAO,KAAMC,CAAK,EAAG,EACzLC,EAAgBH,EAAO,QAAS1rB,GAAUyrB,GAAcp3B,EAAO2L,CAAK,CAAC,EACrE8rB,EAAY,CAAC,GAAGJ,EAAQ,GAAGG,CAAa,EAC9C,OAAOhF,GAAOiF,EAAYv0C,GAAMA,EAAE,KAAOA,EAAE,IAAI,CACjD,EAGIw0C,GAAgB/D,GAAc3zB,GAAU,CAC1C,MAAM23B,EAAgB9D,GAAO7zB,EAAO2zB,CAAQ,EACtC,CAAE,OAAAnjB,CAAQ,EAAG+lB,GAAiBv2B,EAAO2zB,CAAQ,EAC7CiE,EAA0BnG,GAAYA,EAAQ,SAAWjhB,EAAS,CACtE,GAAGihB,EACH,QAASA,EAAQ,SAAS,OAAQM,GAAMA,EAAE,aAAe4F,EAAc,UAAU,CAClF,EAAGlG,EACEoG,EAAU73B,EAAM,QAAQ,IAAI43B,CAAsB,EAClDE,EAAiB,CAAC,GAAG93B,EAAM,eAAgB23B,CAAa,EAC9D,MAAO,CACL,GAAG33B,EACH,QAAA63B,EACA,eAAAC,CACJ,CACA,EAGIC,GAAgBvnB,GAAYxQ,GAAU,CACxC,MAAMg4B,EAAmBh4B,EAAM,QAAQ,OAAQwa,GAAMA,EAAE,SAAWhK,CAAM,EAClEynB,EAAgBj4B,EAAM,QAAQ,KAAMwa,GAAMA,EAAE,SAAWhK,CAAM,EAC7Dod,EAAiB,CAAC,GAAG5tB,EAAM,cAAc,EAC/C,OAAIi4B,GACFrK,EAAe,KAAKqK,CAAa,EAC5B,CACL,GAAGj4B,EACH,QAASg4B,EACT,eAAApK,CACJ,CACA,EAGIsK,GAAmB,CAAC1nB,EAAQ4hB,IAAcpyB,IAAW,CACvD,GAAGA,EAEH,QAASA,EAAM,QAAQ,IAAKyxB,IAAa,CACvC,GAAGA,EACH,MAAOA,EAAQ,SAAWjhB,EAASihB,EAAQ,MAAM,OAAQwC,GAAMA,IAAM7B,CAAQ,EAAIX,EAAQ,KAC7F,EAAI,EAEF,UAAWzxB,EAAM,UAAU,OACxB80B,GAAY,EAAEA,EAAQ,UAAU,OAAStkB,GAAUskB,EAAQ,SAAS,OAASruB,EAAQ,MAAQquB,EAAQ,SAAS,OAAS1C,EACzH,CACH,GAGI+F,GAAc/F,GAAcpyB,IAAW,CACzC,GAAGA,EAEH,MAAOA,EAAM,MAAM,OAAQy2B,GAAUA,EAAM,WAAarE,CAAQ,EAEhE,UAAWpyB,EAAM,UAAU,OACxB80B,GAAY,EAAEA,EAAQ,SAAS,OAASruB,EAAQ,MAAQquB,EAAQ,SAAS,OAAS1C,EACpF,CACH,GAGIgG,GAAgBhF,GAAUpzB,GAAU,CACtC,MAAMq4B,EAAmBr4B,EAAM,QAAQ,OAAQwa,GAAMA,EAAE,OAAS4Y,CAAI,EAC9DkF,EAAgBt4B,EAAM,QAAQ,KAAMwa,GAAMA,EAAE,OAAS4Y,CAAI,EACzDmF,EAAiB,CAAC,GAAGv4B,EAAM,cAAc,EAC/C,OAAIs4B,GACFC,EAAe,KAAKD,CAAa,EAE5B,CACL,GAAGt4B,EACH,QAASq4B,EACT,eAAAE,CACJ,CACA,EAGIC,GAAoBn2B,GAAQrC,GAAU,CACxC,MAAMy4B,EAAc,CAAE,GAAGz4B,EAAM,WAAW,EACpC04B,EAAoB,CAAE,GAAGD,EAAYp2B,CAAE,EAAG,QAAS,IACzD,MAAO,CACL,GAAGrC,EACH,YAAa,CACX,GAAGy4B,EACH,CAACp2B,CAAE,EAAGq2B,CACP,CACL,CACA,EAGIC,GAAcnoB,GAAYxQ,GAAU,CACtC,MAAM0xB,EAAsB1xB,EAAM,oBAAoB,OAAQ44B,GAAMA,IAAMpoB,CAAM,EAChF,MAAO,CACL,GAAGxQ,EACH,oBAAA0xB,CACJ,CACA,EAGImH,GAAeC,GAAc94B,IAAW,CAC1C,GAAGA,EACH,SAAA84B,CACF,GAGIC,GAAiB12B,GAAQrC,GAAU,CACrC,MAAMy4B,EAAc,CAAE,GAAGz4B,EAAM,WAAW,EACpCkzB,EAAkBuF,EAAYp2B,CAAE,EAChC22B,EAAO9F,EAAgB,KAAO,EACpC,MAAO,CACL,GAAGlzB,EACH,YAAa,CACX,GAAGy4B,EACH,CAACp2B,CAAE,EAAG,CACJ,GAAG6wB,EACH,KAAA8F,CACD,CACF,CACL,CACA,EAOIC,GAAqB,CAAG,EAC5BhP,GAASgP,GAAoB,CAC3B,YAAa,IAAMC,GACnB,0BAA2B,IAAMC,GACjC,OAAQ,IAAMC,GACd,SAAU,IAAM7I,GAChB,KAAM,IAAM3jB,GACZ,cAAe,IAAMgkB,GACrB,oBAAqB,IAAMD,GAC3B,oBAAqB,IAAM0I,GAC3B,WAAY,IAAMC,GAClB,SAAU,IAAM9rB,EAClB,CAAC,EAGD,IAAI0rB,GAAc,GACdE,GAAU,CAAC,CACb,KAAAxtB,EACA,QAAA2tB,EAAU,EAEV,WAAAC,EAAa,EAEb,OAAAhpB,CACF,IAAM,CACJ5E,EAAO6kB,GAAU7kB,CAAI,EACrB,MAAMvJ,EAAKkuB,GAAS3kB,CAAI,EAClB6tB,EAAc9I,GAAoB/kB,CAAI,EACtC,CAAE,UAAAU,CAAS,EAAKmtB,EAAY,UAClC,MAAO,CAAE,GAAAp3B,EAAI,UAAAiK,EAAW,WAAAktB,EAAY,QAAAD,EAAS,OAAA/oB,CAAM,CACrD,EAII8oB,GAAa,CAACz1C,EAASq1C,KAAgBrtB,GAAUhoB,CAAM,EAKvDw1C,GAAsB,CAAClM,EAAYuM,IAAc,CACnD,KAAM,CAAE,QAAAC,EAAS,QAAAJ,EAAS,KAAAP,EAAM,WAAAQ,CAAU,EAAKrM,EAC/C,OAAIwM,EACK/sB,GAAK,iCAAiC,EAE3C2sB,EAAU,GAAKP,GAAQO,EAClB3sB,GAAK,qCAAqC,EAE/C4sB,EAAa,GAAKA,EAAaE,EAC1B9sB,GAAK,4BAA4B,EAEnC1J,CACT,EACIsK,GAAW9H,EACb,CAACk0B,EAAOzM,IAAe,CACrB,KAAM,CAAE,GAAA9qB,EAAI,UAAAyuB,CAAW,EAAG8I,EAC1B,GAAIv3B,IAAO8qB,EAAW,GACpB,OAAOvgB,GAAK,kBAAmB,CAAE,MAAAgtB,EAAO,WAAAzM,CAAY,CAAA,EAEtD,KAAM,CAAE,UAAA7gB,CAAW,EAAG6gB,EAMtB,OALyB0M,GAAY,OAAO,CAC1C,QAAS,CAAE,GAAAx3B,CAAI,EACf,UAAAyuB,EACA,UAAAxkB,CACN,CAAK,EAIMpJ,EAFE0J,GAAK,kCAAmC,CAAE,MAAAgtB,EAAO,WAAAzM,CAAY,CAAA,CAGvE,CACH,EACIvgB,GAAO,CAAC9pB,EAAS2pB,KAAa,CAChC,QAAS,GACT,MAAO,IAAI0sB,GAA0Br2C,EAAS2pB,CAAO,CACvD,GACI0sB,GAA4B,cAAc,KAAM,CAClD,YAAYr2C,EAAS2pB,EAAS,CAC5B,QACA,KAAK,KAAO,+BACZ,KAAK,QAAU3pB,EACf,KAAK,QAAU2pB,CAChB,CACD,MACA,OACF,EAGIqtB,GAAMC,GAAM,OAAO,eAAe,EAClCC,GAAY,IAAI73C,IAAS,CAC3B,UAAW8D,KAAOsnB,GAAY,CAC5B,MAAMc,EAAYd,GAAWtnB,CAAG,EAC1BoqB,EAAahC,EAAU,GAAGlsB,CAAI,EACpC,GAAI,CAACkuB,EAAW,QACd,OAAOA,CAEV,CACD,OAAOnN,CACT,EACIqK,GAAa,CACf,+BAA+BprB,EAAM,CACnC,KAAM,CAAC83C,EAAgB/1B,CAAI,EAAI/hB,EACzB,CAAE,KAAA4D,EAAM,QAAAsgB,GAAYnC,EAAK,KAC/B,GAAIne,IAAS,OACX,OAAOmd,EACT,KAAM,CAAE,WAAAg3B,EAAY,WAAAC,CAAY,EAAG9zB,EACnC,OAAI6zB,EAAW,SAAWC,EAAW,OAE5BC,GADK,+EACM,GAAGj4C,CAAI,EAEpB+gB,CACR,EAED,eAAe/gB,EAAM,CACnB,KAAM,CAAC0iC,EAAe3gB,CAAI,EAAI/hB,EACxBshB,EAASS,EAAK,KACd,CAAE,KAAAne,EAAM,OAAAyqB,CAAQ,EAAG/M,EACzB,OAAI1d,IAASkd,GACJC,EACL4oB,GAAkBroB,CAAM,GACR,CAACizB,GAAc7R,EAAerU,CAAM,EAE7C4pB,GAAM,WAAW5pB,CAAM,oBAAqB,GAAGruB,CAAI,EAGvD+gB,CACR,EAED,+BAA+B/gB,EAAM,CACnC,KAAM,CAAC0iC,EAAe3gB,CAAI,EAAI/hB,EACxBysC,EAAS1qB,EAAK,KAAK,OAEzB,GADsBwyB,GAAc7R,EAAe+J,CAAM,EAEvD,OAAO1rB,EACT,GAAIgB,EAAK,KAAK,OAAS,gBAAiB,CACtC,MAAMiQ,EAASjQ,EAAK,KAAK,QAAQ,SAE3Bm2B,EADUxG,GAAOhP,EAAe1Q,CAAM,EAChB,OAC5B,GAAIya,IAAWyL,EACb,OAAOD,GAAM,sCAAuC,GAAGj4C,CAAI,CAE9D,CACD,OAAO+gB,CACR,EAED,4BAA4B/gB,EAAM,CAChC,KAAM,CAAC0iC,EAAe3gB,CAAI,EAAI/hB,EACxBysC,EAAS1qB,EAAK,KAAK,OAEzB,GAAI,CADkBwyB,GAAc7R,EAAe+J,CAAM,GAEvD,GAAI1qB,EAAK,KAAK,OAAS,qBAAsB,CAC3C,MAAMiQ,EAASjQ,EAAK,KAAK,QAAQ,KAAK,KACtC,GAAI0qB,IAAWza,EACb,OAAOimB,GAAM,oCAAqC,GAAGj4C,CAAI,CAE5D,SAAU+hB,EAAK,KAAK,OAAS,qBAAsB,CAClD,MAAMiQ,EAASjQ,EAAK,KAAK,QAAQ,KAAK,KACtC,GAAI0qB,IAAWza,EACb,OAAOimB,GAAM,sCAAuC,GAAGj4C,CAAI,CAE9D,EAEH,OAAO+gB,CACR,EAED,kCAAkC/gB,EAAM,CACtC,KAAM,CAAC0iC,EAAe3gB,CAAI,EAAI/hB,EAC9B,GAAI+hB,EAAK,KAAK,OAAS,gBAAkBA,EAAK,KAAK,OAAS,eAAgB,CAC1E,KAAM,CAAE,GAAA7B,CAAI,EAAG6B,EAAK,KAAK,QACnBipB,EAAagH,GAActP,EAAexiB,CAAE,EAClD,OAAOg3B,GAAoBlM,EAAYjpB,EAAK,KAAK,SAAS,CAC3D,CACD,OAAOhB,CACR,CACH,EACIk3B,GAAQ,CAACt3C,EAAS+hC,EAAe3gB,KACnCphB,EAAUw3C,GAAe,GAAG5O,GAAkBxnB,CAAI,CAAC,IAAIphB,CAAO,EAAE,EAChEg3C,GAAIh3C,CAAO,EACJ,CACL,QAAS,GACT,MAAO,IAAI0pB,GAAgB1pB,EAAS,CAAE,UAAW+hC,EAAe,KAAA3gB,EAAM,CAC1E,GAIIwK,GAAU,CAAC1O,EAAOkE,IAAS,CAC7B,GAAIA,EAAK,UACP,OAAOstB,GAAmBxxB,EAAOkE,CAAI,EAEvClE,EAAQvO,GAAMuO,CAAK,EACnB,MAAMqQ,EAAa2pB,GAAUh6B,EAAOkE,CAAI,EACxC,GAAI,CAACmM,EAAW,QACd,MAAMA,EAAW,MAEnB,MAAM5M,EAASS,EAAK,KASpB,OARwBirB,GAAkB,CACxCwC,GAAQztB,CAAI,EACZ4uB,GAAiBrvB,EAAO,QAAQ,SAAS,EAEzC,GAAG82B,GAAc92B,CAAM,CAE3B,CAAG,EACgCzD,CAAK,CAExC,EACIu6B,GAAiB92B,GAAW,CAC9B,OAAQA,EAAO,KAAI,CACjB,KAAK+2B,GAAO,CACV,KAAM,CAAE,KAAAr0B,EAAM,WAAAg0B,EAAY,WAAAD,CAAU,EAAKz2B,EAAO,QAChD,MAAO,CACLo1B,GAAY1yB,CAAI,EAChBmsB,GAAQ,CAAE,SAAUtG,EAAO,EAE3BgG,GAAUmI,CAAU,EAEpBvI,GAAUsI,CAAU,EAEpB,GAAGhI,GAAeiI,EAAW,OAAQ,CAACnO,CAAK,CAAC,CAEpD,CACK,CACD,IAAK,aAAc,CACjB,KAAM,CAAE,OAAQyF,EAAS,MAAAU,CAAK,EAAK1uB,EAAO,QAC1C,MAAO,CACLuuB,GAAUP,CAAO,EAEjB,GAAGS,GAAeT,EAAQ,OAAQU,CAAK,CAE/C,CACK,CACD,IAAK,WAAY,CACf,MAAMI,EAAU9uB,EAAO,QACvB,MAAO,CACL6uB,GAAQC,CAAO,CAEvB,CACK,CACD,IAAK,kBAAmB,CACtB,KAAM,CAAE,OAAA/hB,EAAQ,SAAA4hB,GAAa3uB,EAAO,QACpC,MAAO,CACL,GAAGyuB,GAAe1hB,EAAQ,CAAC4hB,CAAQ,CAAC,CAE5C,CACK,CACD,IAAK,gBAAiB,CACpB,KAAM,CAAE,OAAA5hB,CAAM,EAAK/M,EAAO,QAC1B,MAAO,CACLs0B,GAAavnB,CAAM,CAE3B,CACK,CACD,IAAK,aAAc,CACjB,KAAM,CAAE,OAAQqhB,GAAYpuB,EAAO,QACnC,MAAO,CACLmuB,GAAUC,CAAO,CAEzB,CACK,CACD,IAAK,gBAAiB,CACpB,KAAM,CAAE,SAAA8B,CAAQ,EAAKlwB,EAAO,QAC5B,MAAO,CACLi0B,GAAa/D,CAAQ,CAE7B,CACK,CACD,IAAK,cAAe,CAClB,KAAM,CAAE,SAAAvB,CAAQ,EAAK3uB,EAAO,QAC5B,MAAO,CACL00B,GAAW/F,CAAQ,CAE3B,CACK,CACD,IAAK,qBAAsB,CACzB,KAAM,CAAE,OAAA5hB,EAAQ,SAAA4hB,GAAa3uB,EAAO,QACpC,MAAO,CACLy0B,GAAiB1nB,EAAQ4hB,CAAQ,CAEzC,CACK,CACD,IAAK,gBAAiB,CACpB,KAAM,CAAE,WAAAjF,CAAU,EAAK1pB,EAAO,QAC9B,MAAO,CACLwvB,GAAe9F,CAAU,CAEjC,CACK,CACD,IAAK,gBAAiB,CACpB,KAAM,CAAE,WAAAA,CAAU,EAAK1pB,EAAO,QAC9B,MAAO,CACLwvB,GAAe9F,CAAU,CAEjC,CACK,CACD,IAAK,oBAAqB,CACxB,KAAM,CAAE,GAAA9qB,CAAE,EAAKoB,EAAO,QACtB,MAAO,CACL+0B,GAAiBn2B,CAAE,CAE3B,CACK,CACD,IAAK,eAAgB,CACnB,KAAM,CAAE,GAAAA,EAAI,WAAAo4B,EAAY,SAAAlqB,CAAQ,EAAK9M,EAAO,QAEtCguB,EAAU,CACd,OAFagJ,EAAW,KAGxB,SAAAlqB,EACA,KAAMkqB,EACN,MAAO,CAAE,CACjB,EACM,MAAO,CACL1B,GAAc12B,CAAE,EAEhB2vB,GAAUP,CAAO,CAEzB,CACK,CACD,IAAK,eAAgB,CACnB,KAAM,CAAE,GAAApvB,EAAI,OAAQwvB,CAAO,EAAKpuB,EAAO,QACvC,MAAO,CACLs1B,GAAc12B,CAAE,EAEhBuvB,GAAUC,CAAO,CAEzB,CACK,CACD,IAAK,qBAAsB,CACzB,KAAM,CAAE,KAAMZ,GAAUxtB,EAAO,QAC/B,MAAO,CACLkvB,GAAiB1B,CAAK,CAE9B,CACK,CACD,IAAK,cAAe,CAClB,KAAM,CAAE,OAAAzgB,CAAM,EAAK/M,EAAO,QAC1B,MAAO,CACLk1B,GAAWnoB,CAAM,CAEzB,CACK,CACD,IAAK,aAAc,CACjB,KAAM,CAAE,OAAQqiB,GAAYpvB,EAAO,QACnC,MAAO,CACLgvB,GAAUI,CAAO,CAEzB,CACK,CACD,IAAK,gBAAiB,CACpB,KAAM,CAAE,KAAAO,CAAI,EAAK3vB,EAAO,QACxB,MAAO,CACL20B,GAAahF,CAAI,CAEzB,CACK,CACD,IAAK,qBAAsB,CACzB,KAAM,CAAE,KAAMnC,GAAUxtB,EAAO,QAC/B,MAAO,CACLmvB,GAAiB3B,CAAK,CAE9B,CACK,CACD,IAAK,UAAW,CACd,KAAM,CAAE,QAAAnuC,CAAO,EAAK2gB,EAAO,QAC3B,MAAO,CACL4uB,GAAWvvC,CAAO,CAE1B,CACK,CACD,IAAK,gBAAiB,CACpB,KAAM,CAAE,SAAAg2C,CAAQ,EAAKr1B,EAAO,QAC5B,MAAO,CACLo1B,GAAYC,CAAQ,CAE5B,CACK,CACD,QACE,MAAM4B,GAAqBj3B,CAAM,CAEpC,CACH,EACA,SAASi3B,GAAqBj3B,EAAQ,CACpC,KAAM,CAAE,KAAA1d,CAAM,EAAG0d,EACjB,OAAO,IAAI,MAAM,2BAA2B1d,CAAI,EAAE,CACpD,CAGA,IAAI40C,GAAcnsB,GAAY,CAAE,aAAAC,GAAc,QAAAC,GAAS,SAAU8d,EAAkB,CAAE,EAGjFoO,GAAe,CAACC,EAAiBzuB,IAAY,CAC/C,MAAM5I,EAAQwtB,GAAqB6J,EAAiBzuB,CAAO,EAC3D,OAAOuuB,GAAYn3B,CAAK,CAC1B,EAGI,CAAE,KAAAs3B,EAAM,EAAGr0B,EACXs0B,GAAyB,CAAC,CAC5B,gBAAAF,EACA,YAAa1J,EACb,eAAA6J,CACF,IAAM,CACJ,MAAMvB,EAAc9I,GAAoBqK,CAAc,EAChDC,EAAerK,GAAcoK,CAAc,EAAE,GAC7Ch7B,EAAQ46B,GAAaC,EAAiB1J,CAAY,EAClD,CAAE,OAAA3gB,CAAQ,EAAG2jB,GAAcn0B,EAAOi7B,CAAY,EACpDC,EAAQ1qB,CAAM,EACd,KAAM,CAAE,SAAAD,CAAU,EAAG+lB,GAAOt2B,EAAOwQ,CAAM,EACzC0qB,EAAQ3qB,CAAQ,EAChB,MAAM4qB,EAAWzwC,GAAKsV,EAAOy5B,EAAa,CAAE,KAAMqB,GAAM,KAAMtqB,CAAM,CAAE,EACtE,MAAO,CACL,SAAAD,EACA,OAAAC,EACA,KAAM2qB,CACV,CACA,EAIIC,GAAaC,IAAmB,CAClC,GAAGA,EACH,MAAO3qB,GAAY,EACnB,UAAW,KAAK,IAAK,CACvB,GACI4qB,GAAQ,CAACC,EAAYtK,IAAUuK,GAAY,KAAKD,EAAYtK,EAAM,UAAU,SAAS,EACrFwK,GAAS,CAACF,EAAYzK,EAAW4K,IAAe,CAClD,MAAMjvB,EAAU,CAAE,UAAW8uB,EAAY,UAAAzK,CAAS,EAMlD,OALyB0K,GAAY,OAAO,CAC1C,QAASD,EACT,UAAAzK,EACA,UAAW4K,EAAW,SAC1B,CAAG,EAIMx4B,EAFEy4B,GAAM,yBAA0BlvB,CAAO,CAGlD,EACIkvB,GAAQ,CAAC74C,EAAS2pB,KAAa,CACjC,QAAS,GACT,MAAO,IAAImvB,GAAyB94C,EAAS2pB,CAAO,CACtD,GACImvB,GAA2B,cAAc,KAAM,CACjD,YAAY94C,EAAS2pB,EAAS,CAC5B,QACA,KAAK,KAAO,4BACZ,KAAK,QAAU3pB,EAAU;AAAA,EAAO,KAAK,UAAU2pB,EAAS,KAAM,CAAC,EAAE,WAAW,IAAK,EAAE,EACnF,KAAK,QAAUA,CAChB,CACD,OACF,EAGIovB,GAAiB,CAAG,EACxB5R,GAAS4R,GAAgB,CACvB,aAAc,IAAMC,GACpB,aAAc,IAAMC,EACtB,CAAC,EAME,IAACD,GAAe,CAACtrB,EAAQwrB,EAAYpwB,EAAOqwB,GAAU,IAAO,CAC9D,MAAMtI,EAAWxxB,KACX8uB,EAAQiL,EAAc,CAAE,KAAMz1B,EAAQ,OAAQ,KAAMktB,GAAY/nB,CAAI,EAC1E,MAAO,CAAE,OAAA4E,EAAQ,SAAAmjB,EAAU,WAAAqI,EAAY,KAAM/K,CAAK,CACpD,EAII8K,GAAgBlK,IAAa,CAC/B,OAAQA,EAAQ,OAChB,SAAUA,EAAQ,SAClB,WAAYA,EAAQ,WACpB,KAAMsK,EAAYtK,EAAQ,IAAI,CAChC,GAmBIlhB,GAAcjN,IAAU,CAC1B,GAAG04B,GAAY14B,CAAI,EACnB,MAAO,CAAE,CACX,GAGI24B,GAAa/yB,GAAY,aAAcA,EAGvC,CAAE,OAAAgzB,GAAQ,KAAMC,EAAK,EAAK91B,EAC1B+1B,GAAO,cAAcz6C,EAAa,CACpC,MAAQ0sB,GACR,MACA,QACA,IACA,KAIA,YAAYnF,EAAS,CAGnB,GAFA,QACA,KAAK,KAAOA,EAAQ,MAAQmzB,GAAU,EAClC,SAAUnzB,EAAQ,QACpB,KAAK,QAAUA,EAAQ,YAClB,CACL,KAAM,CAAE,OAAQupB,GAAYvpB,EAAQ,QACpC,KAAK,QAAU,CACb,GAAGA,EAAQ,QACX,OAAQmqB,GAAW,SAASZ,CAAO,EACnC,KAAMY,GAAW,OAAOZ,CAAO,CACvC,CACK,CACD,KAAM,CAAE,OAAQhB,EAAS,KAAAnuB,CAAI,EAAK,KAAK,QAEvC,GADA,KAAK,IAAMg5B,GAAO,OAAO,aAAa,KAAK,QAAQ,EAAE,EACjDL,GAAU/yB,CAAO,EAAG,CACtBqzB,EAAQ,CAAC,KAAK,SAAU,4BAA4B,EACpD,MAAMC,EAA2BvI,EAAO/qB,EAAQ,SAAU5F,EAAK,IAAI,EAC7Dm5B,EAAYC,EAAcxL,GAAa,KAAK,IAAI,EAChDyL,EAA4B1I,EAAOwI,EAAWn5B,EAAK,IAAI,EACvDs5B,EAA2B3I,EAAO3wB,EAAK,KAAM,KAAK,QAAQ,OAAO,IAAI,EACrE0C,EAAc,CAClB,KAAMkD,EAAQ,SACd,WAAYqH,GAAWjN,CAAI,EAC3B,WAAYq4B,GAAalK,CAAO,EAChC,UAAW,CAAC+K,EAA0BG,EAA2BC,CAAwB,CACjG,EACM,KAAK,MAAQ7tB,GAAY,CACvB,KAAAzL,EACA,QAAAgL,GACA,SAAU8d,GACV,aAAA/d,GACA,YAAArI,EACA,KAAMkD,EAAQ,QACtB,CAAO,CACP,MACM,KAAK,MAAQ6F,GAAY,CACvB,KAAAzL,EACA,QAAAgL,GACA,SAAU8d,GACV,aAAA/d,GACA,MAAOyiB,GAAiB5nB,EAAQ,OAAQA,EAAQ,WAAW,EAC3D,KAAMA,EAAQ,WACtB,CAAO,EAEH,KAAK,MAAQ,KAAK,MAAM,SAAQ,EAChC,KAAK,GAAG,UAAW,IAAM,CACvB,KAAK,4BAA2B,CACtC,CAAK,CACF,CAED,IAAI,OAAQ,CACV,OAAO,KAAK,MAAM,UACnB,CAED,IAAI,IAAK,CACP,OAAO,KAAK,MAAM,IACnB,CAED,IAAI,UAAW,CACb,OAAO,KAAK,MAAM,QACnB,CACD,YAAYwvB,EAAU,CACpB,KAAK,SAAS,CAAE,KAAM,gBAAiB,QAAS,CAAE,SAAAA,CAAU,CAAA,CAAE,CAC/D,CAED,IAAI,UAAW,CACb,OAAO,KAAK,QAAQ,KAAK,MAC1B,CACD,IAAI,QAAS,CACX,OAAO,KAAK,QAAQ,KAAK,MAC1B,CACD,IAAI,UAAW,CACb,MAAO,WAAY,KAAK,OACzB,CAcD,KAAO,IAAM/H,GAAmB,KAAK,KAAK,EAK1C,MAAS9hB,IACP,KAAK,MAAM,MAAMA,CAAU,EAC3B,KAAK,MAAQ,KAAK,MAAM,SAAQ,EAChC,KAAK,KAAK,UAAW,CAAE,KAAM,KAAK,MAAM,IAAI,CAAE,EACvC,MAGT,SAASxL,EAAQw5B,EAAW,KAAK,SAAQ,EAAI,CAC3C,KAAK,MAAM,SAASx5B,EAAQw5B,CAAQ,EACpC,KAAK,MAAQ,KAAK,MAAM,SAAQ,EAChC,KAAK,KAAK,UAAW,CAAE,KAAM,KAAK,MAAM,IAAI,CAAE,CAC/C,CAGD,IAAOzsB,GAAWujB,GAAU,KAAK,MAAOvjB,CAAM,EAG9C,QAAQA,EAAS4gB,GAAK9nB,EAAU,CAAE,eAAgB,IAAQ,CACxD,OAAOkH,IAAW4gB,GAAM,KAAK,MAAM,QAAUkF,GAAO,KAAK,MAAO9lB,EAAQlH,CAAO,CAChF,CAUD,cAAgB,CAAC5F,EAAMyuB,EAAQ,CAAA,EAAIN,IAAY,CAC7C,MAAMJ,EAAU,CAAE,GAAG9gB,GAAWjN,CAAI,EAAG,MAAAyuB,CAAK,EAC5C,GAAI,CAAC,KAAK,IAAIV,EAAQ,MAAM,EAAG,CAC7B,MAAMuB,EAAY,KAAK,sBAAsBvB,CAAO,EACpD,KAAK,SAAS,CACZ,KAAM,aACN,QAAS,CAAE,OAAQA,EAAS,MAAAU,EAAO,UAAAa,CAAW,CACtD,CAAO,CACF,CACD,GAAInB,EAAS,CACX,MAAMmL,EAA2B3I,EAAO3wB,EAAK,KAAMmuB,EAAQ,IAAI,EAC/D,KAAK,SAAS,CACZ,KAAM,aACN,QAAS,CAAE,OAAQA,EAAS,UAAW,CAACmL,CAAwB,CAAG,CAC3E,CAAO,CACF,CACL,EAEE,OAAUxsB,GAAW,CACnB,MAAMwiB,EAAY,KAAK,WAAW,CAAE,KAAMuJ,GAAO,KAAM/rB,CAAM,CAAE,EAC/D,KAAK,SAAS,CACZ,KAAM,gBACN,QAAS,CACP,OAAAA,EACA,UAAAwiB,CACD,CACP,CAAK,CACL,EAEE,iBAAoBxiB,GAAWmmB,GAAiB,KAAK,MAAOnmB,CAAM,EAElE,MAAM4hB,EAAWhB,GAAK,CACpB,OAAOgB,IAAahB,GAAM,KAAK,MAAM,MAAQ2F,GAAK,KAAK,MAAO3E,CAAQ,CACvE,CAED,cAAgB,CAAC5hB,EAAQ4hB,IAAaoE,GAAc,KAAK,MAAOhmB,EAAQ4hB,CAAQ,EAEhF,cAAiB5hB,GAAWkmB,GAAc,KAAK,MAAOlmB,CAAM,EAE5D,QAAW4hB,GAAa4B,GAAQ,KAAK,MAAO5B,CAAQ,EAEpD,cAAiBA,GAAawE,GAAc,KAAK,MAAOxE,CAAQ,EAEhE,OAAS,IAAMyE,GAAO,KAAK,KAAK,EAEhC,QAAWJ,GAAU,CACf,OAAOA,GAAU,WACnBA,EAAQ,CAAE,SAAUA,IAEtB,MAAMyG,EAAWJ,EAAc,CAAE,KAAMr2B,EAAQ,KAAM,KAAMgwB,EAAM,QAAQ,EAAI,KAAK,IAAI,EAChF0G,EAA2B9I,EAAO6I,EAAU,KAAK,UAAW,CAAA,EAClE,KAAK,SAAS,CACZ,KAAM,WACN,QAAS,CAAE,GAAGzG,EAAO,UAAW,CAAC0G,CAAwB,CAAG,CAClE,CAAK,CACL,EAEE,WAAc/K,GAAa,CACzBuK,EAAQvK,IAAapG,EAAO,0BAA0B,EACtD,KAAK,SAAS,CACZ,KAAM,cACN,QAAS,CAAE,SAAAoG,CAAU,CAC3B,CAAK,CACL,EAEE,cAAgB,CAAC5hB,EAAQ4hB,IAAa,CACpC,MAAMX,EAAU,KAAK,QAAQjhB,CAAM,EAC7B4sB,EAA2B/I,EAAO,KAAK,SAASjC,CAAQ,EAAGX,EAAQ,IAAI,EAC7E,KAAK,SAAS,CACZ,KAAM,kBACN,QAAS,CAAE,OAAAjhB,EAAQ,SAAA4hB,EAAU,UAAW,CAACgL,CAAwB,CAAG,CAC1E,CAAK,CACL,EAEE,iBAAmB,CAAC5sB,EAAQ4hB,IAAa,CACvC,GAAIA,IAAapG,EAAO,CACtB,MAAMqR,EAAa,KAAK,cAAcrR,CAAK,EAAE,OAC7C2Q,EAAQU,EAAa,EAAG,6BAA6B,CACtD,CACD,MAAMrK,EAAY,KAAK,WAAW,CAAE,KAAMvsB,EAAQ,KAAM,KAAM2rB,CAAQ,CAAE,EACxE,KAAK,SAAS,CACZ,KAAM,qBACN,QAAS,CAAE,OAAA5hB,EAAQ,SAAA4hB,EAAU,UAAAY,CAAW,CAC9C,CAAK,CACL,EAGE,UAAY,CAACW,EAAUrqB,IAAYoqB,GAAU,KAAK,MAAOC,EAAUrqB,CAAO,EAE1E,OAAOqqB,EAAUrqB,EAAS,CACxB,OAAOuqB,GAAO,KAAK,MAAOF,EAAUrqB,CAAO,CAC5C,CAED,aAAgBqqB,GAAa,CAC3B,GAAI,CAAC,KAAK,UAAUA,CAAQ,EAC1B,MAAM,IAAI,MAAM,UAAUA,CAAQ,YAAY,EAChD,MAAMX,EAAY,KAAK,WAAW,CAAE,KAAMsJ,GAAQ,KAAM3I,CAAQ,CAAE,EAClE,KAAK,SAAS,CACZ,KAAM,gBACN,QAAS,CACP,SAAAA,EACA,UAAAX,CACD,CACP,CAAK,CACL,EAEE,iBAAoBW,GACXG,GAAiB,KAAK,MAAOH,CAAQ,EAG9C,iBAAmB,CAACA,EAAUrqB,IACrBitB,GAAiB,KAAK,MAAO5C,EAAUrqB,CAAO,EAEvD,oBAAsB,CAACiyB,EAAY3B,IAAU,CAC3C+C,EAAQpB,EAAW,OAASe,EAAM,EAClC,MAAM3I,EAAW4H,EAAW,KACtB1J,EAAU,KAAK,UAAU8B,CAAQ,EAAI,KAAK,QAAQA,CAAQ,EAAI,KAAK,OAAOA,EAAU,CAAE,eAAgB,EAAI,CAAE,EAElH,OADmB8H,GAAOF,EAAY3B,EAAO/H,EAAQ,IAAI,EACvC,OACtB,EAmBE,aAAa,CACX,KAAAjmB,EAAO0tB,GAAY,EACnB,WAAAE,EACA,QAAAD,CACD,EAAG,GAAI,CACN3tB,EAAO6kB,GAAU7kB,CAAI,EACrB,MAAMuhB,EAAaiM,GAAQ,CAAE,KAAAxtB,EAAM,WAAA4tB,EAAY,QAAAD,CAAO,CAAE,EAClD,CAAE,GAAAl3B,CAAI,EAAG8qB,EACf,YAAK,SAAS,CACZ,KAAM,gBACN,QAAS,CAAE,WAAAA,CAAY,CAC7B,CAAK,EACM,CAAE,GAAA9qB,EAAI,KAAAuJ,EACd,CAcD,aAAa,CACX,KAAAA,EAAO0tB,GAAY,EACnB,WAAAE,EAAa,KAAK,IAAK,EAAG,GAAK,GAAK,GACrC,EAAG,GAAI,CACNmD,EAAQ,CAAC,KAAK,SAAU,+BAA+B,EACvD/wB,EAAO6kB,GAAU7kB,CAAI,EAErB,MAAMuhB,EAAaiM,GAAQ,CAAE,KAAAxtB,EAAM,WAAA4tB,EAAY,QAD/B,EACwC,OAAQ,KAAK,MAAM,CAAE,EACvEC,EAAc9I,GAAoB/kB,CAAI,EACtC0xB,EAAsCjJ,EAAO,KAAK,QAAQ,KAAK,KAAMoF,CAAW,EAChF,CAAE,GAAAp3B,CAAI,EAAG8qB,EACf,YAAK,SAAS,CACZ,KAAM,gBACN,QAAS,CACP,WAAAA,EACA,UAAW,CAACmQ,CAAmC,CAChD,CACP,CAAK,EACM,CAAE,GAAAj7B,EAAI,KAAAuJ,EACd,CAED,iBAAoBvJ,GAAO,CACzB,KAAK,SAAS,CACZ,KAAM,oBACN,QAAS,CAAE,GAAAA,CAAI,CACrB,CAAK,CACL,EAEE,cAAcA,EAAI,CAChB,OAAO6xB,GAAc,KAAK,MAAO7xB,CAAE,CACpC,CAED,cAAiBA,GAAO8xB,GAAc,KAAK,MAAO9xB,CAAE,EAEpD,mBAAsBu3B,GAAU,CAC9B,KAAM,CAAE,GAAAv3B,CAAI,EAAGu3B,EACf,GAAI,CAAC,KAAK,cAAcv3B,CAAE,EACxB,OAAOuK,GAAK,qCAAqC,EACnD,MAAMugB,EAAa,KAAK,cAAc9qB,CAAE,EAClCk7B,EAAkBlE,GAAoBlM,EAAY,KAAK,IAAK,CAAA,EAClE,OAAIoQ,IAAoBr6B,EACfq6B,EACF/vB,GAASosB,EAAOzM,CAAU,CACrC,EAEE,YAAc,CAACyM,EAAOa,EAAYlqB,IAAa,CAC7C,MAAMF,EAAa,KAAK,mBAAmBupB,CAAK,EAChD,GAAI,CAACvpB,EAAW,QACd,MAAMA,EAAW,MACnB,KAAM,CAAE,GAAAhO,CAAI,EAAGu3B,EACTgD,EAA2BvI,EAAO,KAAK,SAAU,EAAEoG,CAAU,EACnE,KAAK,SAAS,CACZ,KAAM,eACN,QAAS,CACP,GAAAp4B,EACA,SAAAkO,EACA,WAAYitB,EAAY/C,CAAU,EAClC,UAAW,CAACmC,CAAwB,CACrC,CACP,CAAK,CACL,EAEE,YAAc,CAAChD,EAAO6D,IAAmB,CACvC,MAAMptB,EAAa,KAAK,mBAAmBupB,CAAK,EAChD,GAAI,CAACvpB,EAAW,QACd,MAAMA,EAAW,MACnB,KAAM,CAAE,GAAAhO,CAAI,EAAGu3B,EAETppB,EADa,KAAK,cAAcnO,CAAE,EACd,OACpBwvB,EAAU,CAAE,GAAG4L,EAAgB,OAAAjtB,CAAM,EAC3C,KAAK,SAAS,CACZ,KAAM,eACN,QAAS,CACP,GAAAnO,EACA,OAAQwvB,CACT,CACP,CAAK,CACL,EAEE,KAAQV,GAAiB,CACvBwL,EAAQ,CAAC,KAAK,SAAU,gCAAgC,EACxD,KAAM,CAAE,KAAAj5B,EAAM,OAAQmuB,CAAO,EAAK,KAAK,QACjCoL,EAAW9wB,GAAoBglB,CAAY,EAC3C6L,EAA2B3I,EAAO3wB,EAAK,KAAMmuB,EAAQ,IAAI,EAC/D,KAAK,SACH,CACE,KAAM,aACN,QAAS,CACP,OAAQkK,GAAalK,CAAO,EAC5B,UAAW,CAACmL,CAAwB,CACrC,CACF,EACDC,CACN,CACA,EA2BE,UAAapK,GAAY,CACvB,MAAMG,EAAY,KAAK,sBAAsBS,GAAW,SAASZ,CAAO,CAAC,EACzE,KAAK,SAAS,CACZ,KAAM,aACN,QAAS,CAAE,OAAQA,EAAS,UAAAG,CAAW,CAC7C,CAAK,CACL,EAEE,aAAgBI,GAAS,CACvB,KAAK,SAAS,CACZ,KAAM,gBACN,QAAS,CAAE,KAAAA,CAAM,CACvB,CAAK,CACL,EAGE,QAAQA,EAAOhC,GAAK9nB,EAAU,CAAE,eAAgB,IAAQ,CACtD,OAAO8pB,IAAShC,GAAM,KAAK,MAAM,QAAU+B,GAAO,KAAK,MAAOC,EAAM9pB,CAAO,CAC5E,CAED,iBAAoB8pB,GAAS4D,GAAiB,KAAK,MAAO5D,CAAI,EAC9D,UAAaA,GAASC,GAAU,KAAK,MAAOD,CAAI,EAEhD,WAActwC,GAAY,CACxB,KAAK,SAAS,CACZ,KAAM,UACN,QAAS,CAAE,QAAAA,CAAS,CAC1B,CAAK,CACL,EACE,SAAW,IAAMg0C,GAAS,KAAK,KAAK,EASpC,QAAU,CAACzwB,EAAS+rB,IAAa,CAC/B,MAAMzmB,EAAQymB,EAAW,CAAE,KAAM3rB,EAAQ,KAAM,KAAM2rB,CAAU,EAAGf,GAC5D,CAAE,UAAAX,EAAW,WAAAmF,CAAU,EAAK,KAAK,KAAKlqB,CAAK,EACjD,MAAO,CACL,SAAU+xB,GAAU,aAAar3B,EAASqqB,CAAS,EACnD,UAAW,CAAE,GAAG/kB,EAAO,WAAAkqB,CAAY,CACzC,CACA,EAEE,QAAW/yC,GAAY,CACrB,KAAM,CAAE,UAAA4tC,CAAS,EAAK,KAAK,KAAK5tC,EAAQ,SAAS,EACjD,OAAO46C,GAAU,aAAa56C,EAAQ,SAAU4tC,CAAS,CAC7D,EAEE,KAAQ4D,GAAa,CACnBqI,EAAQ,KAAK,QAAQ,IAAI,EACzB,KAAM,CACJ,KAAM,CACJ,KAAA52C,EACA,KAAAogB,EACA,WAAA0vB,EACA,UAAW,CAAE,UAAAnF,CAAW,CACzB,CACP,EAAQ,KAAK,QAAQ,KACjB,MAAO,CACL,SAAA4D,EACA,UAAWqJ,GAAY,KAAKrJ,EAAU5D,CAAS,EAC/C,OAAQ,CAAE,KAAA3qC,EAAM,KAAAogB,EAAM,WAAA0vB,CAAY,CACxC,CACA,EAEE,OAAU/yC,GAAY66C,GAAY,OAAO,CACvC,QAAS76C,EAAQ,SACjB,UAAWA,EAAQ,UACnB,UAAW,KAAK,QAAQA,EAAQ,OAAO,IAAI,EAAE,KAAK,SACtD,CAAG,EAWD,KAAQ6oB,GAAUjhB,GAAK,KAAK,MAAO,KAAK,QAAQ,OAAO,KAAMihB,CAAK,EAElE,SAAW,CAACymB,EAAUyD,IAAe,KAAK,KAAK,CAAE,KAAMpvB,EAAQ,KAAM,KAAM2rB,EAAU,WAAAyD,CAAY,CAAA,EAEjG,SAAYA,GAAe,KAAK,KAAK,CAAE,GAAGxE,GAAY,WAAAwE,CAAU,CAAE,EAClE,YAAc,IAAMqB,GAAY,KAAK,MAAO,KAAK,QAAQ,OAAO,IAAI,EAEpE,UAAarB,GAAe,KAAK,SAAS7J,EAAO6J,CAAU,EAK3D,WAAc+H,GAAY,CACxB,KAAM,CAAE,OAAQ/L,EAAS,KAAAnuB,CAAI,EAAK,KAAK,QACjC,CAAE,KAAA3d,CAAM,EAAG63C,EACjBjB,EAAQ52C,IAASu2C,GAAQ,0BAA0B,EACnD,MAAMuB,EAAY93C,IAASw2C,GACrBuB,EAAc/3C,IAAS0gB,EAAQ,OAC/Bs3B,EAAUr6B,EAAK,KACrBk6B,EAAQ,WAAaG,EAAQ,WAAa,EAC1C,MAAM/K,EAAY,KAAK,WAAW4K,CAAO,EACnCn6B,EAASo6B,EAAY,qBAAuB,qBAC5C5M,EAAQuM,EAAYI,CAAO,EACjC,KAAK,SAAS,CAAE,KAAMn6B,EAAQ,QAAS,CAAE,KAAMwtB,EAAO,UAAA+B,CAAW,CAAA,CAAE,GAC/D8K,GAAeD,KACjBn6B,EAAK,KAAOk6B,GACVE,IACFjM,EAAQ,KAAO+L,EACrB,EACE,6BAA8B,CAC5B,GAAK,KAAK,cAAc,KAAK,MAAM,EAGnC,UAAWptB,KAAU,KAAK,MAAM,oBAAqB,CACnD,MAAMwiB,EAAY,KAAK,WAAW,CAChC,KAAMuJ,GACN,KAAM,KAAK,MACnB,CAAO,EACD,KAAK,SAAS,CAAE,KAAM,cAAe,QAAS,CAAE,OAAA/rB,EAAQ,UAAAwiB,CAAW,CAAA,CAAE,CACtE,CACF,CACD,sBAAyBvB,GAAY,CACnC,MAAMyL,EAAWzL,EAAQ,MAAM,IAAI,KAAK,QAAQ,EAC1CuM,EAAkC/M,GAC/BoD,EAAOpD,EAAOQ,EAAQ,IAAI,EAEnC,MAAO,CAAC,GAAGyL,EAAU,KAAK,SAAQ,CAAE,EAAE,IAAIc,CAA8B,CAC5E,EAYE,WAAcC,GAAgB,CAC5B,MAAMC,EAAYv3B,GAASs3B,CAAW,EAAIA,EAAcnB,EAAcmB,CAAW,EAE3EE,EADiB/G,GAAc,KAAK,MAAO6G,CAAW,EACrB,IAAKtyB,GAAUmxB,EAAcnxB,CAAK,CAAC,EACpEyyB,EAAa,CAACF,EAAW,GAAGC,CAAe,EAajD,OAZqBC,EAAW,QAASC,GAClBnI,GAAiB,KAAK,MAAOmI,CAAU,EACxC,IAAKnJ,GAAe,CACtC,MAAMoJ,EAAgBF,EAAW,KAAMx3B,GAAM6oB,GAAY7oB,EAAGsuB,EAAW,SAAS,CAAC,EACjF,OAAOD,GAAO,CACZ,WAAAC,EACA,YAAamJ,EAEb,qBAAsBC,EAAgBd,EAAYc,CAAa,EAAI,MAC7E,CAAS,CACT,CAAO,CACF,CAEL,CACA,EAIA,SAASC,GAAWzF,EAAUn1B,EAASiI,EAAM,CAC3C,MAAMqxB,EAAWuB,EAAcnN,GAAYzlB,CAAI,EAC/C,OAAO,IAAI4wB,GAAK,CAAE,SAAA1D,EAAU,QAAAn1B,EAAS,SAAAs5B,CAAU,CAAA,CACjD,CAOA,IAAIwB,GAAmB,CAAC,CACtB,eAAAl3B,EACA,SAAA01B,EACA,WAAAtH,CACF,IAAM,CACJ,MAAMvpB,EAAUsyB,GAAezB,CAAQ,EACjC,CAAE,eAAAz1B,EAAgB,SAAAC,EAAU,KAAAjjB,CAAI,EAAK+iB,EACrCG,EAAQH,EAAe,OAAS,GAChCI,EAAU,CAAC0F,EAAOsxB,EAAcC,EAAyB,CAAE,EAAE/Z,EAAgBpW,KAAiB,CAClG,MAAMtK,EAAgBqD,EAAe6F,CAAK,EACpCxF,EAAgBH,EAAM2F,CAAK,GACjCtG,GAAY5C,EAAew6B,CAAY,EACvC,IAAIE,EAAkB,CACpB,CAACxxB,CAAK,EAAGxF,CACf,EACI,MAAMi3B,EAAWpwB,GAAQmW,EAAehd,CAAa,EACrD,IAAI+1B,EACJ,GAAI,CACFA,EAAUlzC,GAAKo0C,EAAUnJ,EAAYtE,EAAU,EAC/CjlB,EAAQwxB,EAAQ,WAAW,SAAS,EAAIA,CAC9C,MAAY,CACNA,EAAUe,CACX,CACD,MAAMj6B,EAAW+C,EAAS4F,CAAK,EAC/B,GAAI3I,EACF,UAAWT,MAASS,EAClBm6B,EAAkB,CAChB,GAAGA,EACH,GAAGl3B,EAAQ1D,GAAO25B,EAASiB,EAAiBC,CAAQ,CAC9D,EAGI,MAAO,CAAE,GAAGF,EAAwB,GAAGC,EAC3C,EACQE,EAAgBv3B,EAAehjB,CAAI,EAAE,mBACrCw6C,EAAW5yB,EAAQ2yB,CAAa,EAChC/2B,EAAiBL,EAAQnjB,EAAMw6C,CAAQ,EAC7C,MAAO,CACL,GAAGz3B,EACH,MAAOS,CACX,CACA,EAIIi3B,GAAO,CAACj6C,EAAQ2e,EAASs5B,IAAa,CACxC,MAAM9L,EAAe+N,GAAejC,CAAQ,EAC5C,OAAO,IAAIT,GAAK,CAAE,OAAAx3C,EAAQ,QAAA2e,EAAS,YAAawtB,CAAY,CAAE,CAChE,EAIIgO,GAAsB3kB,GAAM,CAC9B,GAAIA,IAAM,OACR,MAAO,OAET,KAAM,CAAE,KAAAvP,EAAM,MAAAvD,EAAO,KAAA03B,CAAI,EAAK5kB,EACxBlX,EAAO,CAAE,KAAA2H,GACf,OAAIvD,IACFpE,EAAK,MAAQ,OAAO,KAAKoE,CAAK,EAAE,KAAK,IAAI,GAEvC03B,IACF97B,EAAK,KAAO87B,EAAK,KAAK,IAAI,GAErBC,GAAgB,KAAK,UAAU/7B,CAAI,CAAC,CAC7C,EAQIg8B,GAAOC,GAAO,OAAO,eAAe,EACpCC,GAAe,cAAcC,EAAc,CAC7CC,GAAW,GACXC,GAAW,CAAA,EACXC,GAAe,EACfC,GAAW,CAAA,EACXC,GACAC,GAAY,CAAA,EACZC,GAAgB,EAChBC,GACA,YAAY,CAAE,YAAAC,EAAa,QAASC,EAAW,GAAG,EAAI,CACpD,QACA,KAAKF,GAAgBn9C,GAAY,CAC/B,KAAKk9C,GAAgBl9C,EAAQ,MAAQ,EACrCo9C,EAAYp9C,CAAO,CACzB,EACI,KAAKg9C,GAAWK,CACjB,CAKD,OAAQ,CACN,YAAKT,GAAW,GAChB,KAAKU,GAAe,EACpB,KAAKC,GAAgB,EACd,IACR,CAID,MAAO,CACL,YAAKX,GAAW,GACT,IACR,CAID,KAAK58C,EAAS,CACZ,MAAMc,EAAQ08C,GAAa,KAAKP,EAAS,EAAI,EACvCQ,EAAkB,CAAE,GAAGz9C,EAAS,MAAAc,CAAK,EAC3C,YAAKm8C,GAAUn8C,CAAK,EAAI28C,EACxBjB,GAAK,UAAWiB,CAAe,EAC3B,KAAKb,IACP,KAAKO,GAAaM,CAAe,EAC5B,IACR,CAID,OAAO38C,EAAO,CACZ,MAAMd,EAAU,KAAKi9C,GAAUn8C,CAAK,EACpC,GAAI,CAACd,EACH,MAAM,IAAI,MAAM,wCAAwCc,CAAK,wBAAwB,EACvF,OAAA07C,GAAK,YAAax8C,CAAO,EACzB,KAAKm9C,GAAan9C,CAAO,EAClB,IACR,CAID,QAAQA,EAAS,CACf,KAAM,CAAE,MAAAc,CAAO,EAAGd,EAClB,OAAAw8C,GAAK,aAAcx8C,CAAO,EACrB,KAAK68C,GAAS/7C,CAAK,IACtB,KAAK+7C,GAAS/7C,CAAK,EAAId,EACnB,KAAK48C,IACP,KAAKU,GAAe,GAEjB,IACR,CACDC,IAAmB,CAEjB,IADAf,GAAK,iBAAiB,EACf,KAAKS,GAAU,KAAKC,EAAa,GAAG,CACzC,MAAMl9C,EAAU,KAAKi9C,GAAU,KAAKC,EAAa,EACjD,KAAKC,GAAan9C,CAAO,CAC1B,CACF,CAIDs9C,IAAkB,CAEhB,IADAd,GAAK,gBAAgB,EACd,KAAKK,GAAS,KAAKC,EAAY,GAAG,CACvC,MAAM98C,EAAU,KAAK68C,GAAS,KAAKC,EAAY,EAC/C,KAAKA,KACL,KAAK,KAAK,UAAW98C,CAAO,CAC7B,CACD,MAAM09C,EAAUF,GAAa,KAAKX,EAAQ,EAC1C,QAASt9C,EAAI,KAAKu9C,GAAcv9C,EAAIm+C,EAASn+C,IACvC,KAAKw9C,GAASx9C,CAAC,IAEnB,KAAKw9C,GAASx9C,CAAC,EAAI,WAAW,IAAM,CAC7B,KAAKs9C,GAASt9C,CAAC,GAClB,KAAK,KAAK,UAAWA,CAAC,EACxB,OAAO,KAAKw9C,GAASx9C,CAAC,CAC9B,EAAS,KAAKy9C,EAAQ,EAEnB,CACH,EACA,SAASQ,GAAaG,EAAO,CAC3B,OAAO,KAAK,IAAI,GAAG,OAAO,KAAKA,CAAK,EAAE,IAAI,MAAM,EAAG,EAAE,CACvD,CAGA,IAAIC,GAAkB59C,GAAYA,EAAQ,OAAS,OAAS,QAAQq8C,GAAmBr8C,EAAQ,OAAO,CAAC,GAErG,GAAGA,EAAQ,IAAI,IAAIA,EAAQ,SAAS,MAAM,MAAM,EAAG,CAAC,GAAKA,EAAQ,SAAS,SAAW,EAAE,GAErF69C,GAAY3gC,GAAU,OAAOA,GAAU,SACvC4gC,GAAgB5gC,GAAU2gC,GAAS3gC,CAAK,EAAIA,EAAQ,OAAO,KAAKA,CAAK,EAAE,IAAK/Z,GAAQ,GAAGA,CAAG,IAAI26C,GAAa5gC,EAAM/Z,CAAG,CAAC,CAAC,EAAE,EAAE,OAAQ/C,GAAMA,EAAE,MAAM,EAAE,KAAK,GAAG,EAC1J29C,GAAuBl9B,GAAY,CACrC,KAAM,CAAE,KAAMstB,EAAO,KAAAmC,CAAI,EAAKzvB,EAAQ,OACtC,MAAO,CACL,GAAGA,EACH,KAAM,CAAE,OAAQyvB,EAAM,SAAUA,EAAM,KAAMnC,CAAO,EACnD,OAAQ,CAAE,OAAQmC,EAAM,SAAUA,EAAM,WAAYA,EAAM,KAAMnC,CAAO,CAC3E,CACA,EACI6P,GAAen9B,GACb,WAAYA,EACPA,EAAQ,OAAO,KACpB,aAAcA,EACTA,EAAQ,SACb,SAAUA,EACLA,EAAQ,KAAK,SACf,GAIL6nB,GAAmBuV,GACd,SAAUA,GAAKA,EAAE,OAAS,OAE/B7V,GAAoB6V,GACf,mBAAoBA,GAAKA,EAAE,iBAAmB,OAEnDzV,GAA0ByV,GACrB7V,GAAiB6V,CAAC,GAAK,SAAUA,GAAKA,EAAE,OAAS,OAEtD3V,GAA0B2V,GACrB7V,GAAiB6V,CAAC,GAAK,CAACzV,GAAuByV,CAAC,EAErDtV,GAAmBsV,GACd,WAAYA,GAAKA,EAAE,SAAW,OAEnCxV,GAAiByV,GACZ,aAAcA,GAASA,EAAM,WAAa,OAE/C3V,GAAwB2V,GACnB/V,GAAe+V,CAAK,GAAK,aAAcA,GAASA,EAAM,WAAa,OAExE7V,GAAwB6V,GACnB/V,GAAe+V,CAAK,GAAK,EAAE,aAAcA,GAE9C/V,GAAkB+V,GACb,sBAAuBA,GAASA,EAAM,oBAAsB,OAIjE5W,GAAa,cAAc6W,EAAc,CAC3CC,GACAC,GACAzB,GAAW,GACX0B,GAAOC,GAAO,OAAO,iBAAiB,EACtC,YAAY,CAAE,YAAAnB,EAAa,QAAAv8B,GAAW,CACpC,QACA,KAAKw9B,GAAgB,KAAKG,GAAwBpB,CAAW,EAC7D,KAAKkB,GAAO,KAAKA,GAAK,OAAON,GAAYn9B,CAAO,CAAC,EACjD,MAAM49B,EAAiB9V,GAAgB9nB,CAAO,EAAIk9B,GAAoBl9B,CAAO,EAAIA,EAC3EuL,EAAU4a,GAAM,CACpB,MAAO,CACL,QAAS,CAAE,EACX,OAAQ,CAAE,CACX,EAGD,QAAS,CAEP,qBAAsB,IAAM,CAC1B,KAAK0X,GAAc,kBAAkB,CACtC,EACD,kBAAmBha,EAAO,CAAC,CAAE,QAASia,CAAQ,IAAO,CA4BnD,MAAMC,GA3BuBC,GAAa,CACxC,GAAInW,GAAgBmW,CAAQ,EAC1B,MAAO,CACL,SAAUA,EAAS,OAAO,QAC1C,EAEY,GAAIrW,GAAuBqW,CAAQ,EAAG,CACpCC,EAAQD,EAAS,cAAc,EAC/B,KAAM,CAAE,SAAApxB,EAAU,KAAM0gB,CAAK,EAAK0Q,EAAS,KAC3C,MAAO,CACL,kBAAmB/Q,GAAc+Q,EAAS,cAAc,EACxD,SAAApxB,EACA,SAAUsxB,EAAY5Q,CAAK,EAC3B,OAAQ8K,GAAa4F,EAAS,MAAM,CACpD,CACa,CACD,GAAIvW,GAAuBuW,CAAQ,EAAG,CACpCC,EAAQD,EAAS,cAAc,EAC/B,KAAM,CAAE,SAAApxB,EAAU,OAAQshB,CAAO,EAAK8P,EACtC,MAAO,CACL,kBAAmB/Q,GAAc+Q,EAAS,cAAc,EACxD,SAAApxB,EACA,OAAQwrB,GAAalK,CAAO,CAC5C,CACa,CACD,MAAM,IAAI,MAAM,iBAAiB,CAC7C,GACuD4P,CAAQ,EACrD,YAAKD,GAAc,iBAAkBE,CAAgB,EAC9C,CAAE,iBAAAA,CAAgB,CACnC,CAAS,EACD,qBAAsBla,EAAO,CAAC,CAAE,MAAAtlC,KAAY,CAC1CulC,EAAYvlC,EAAO,gBAAgB,EACnC,MAAMm5C,EAAgBn5C,EAAM,QACtB4/C,EAAc,WAAYzG,EAAgBA,EAAc,OAAS,OACvE,MAAO,CAAE,mBAAoBA,EAAe,YAAAyG,EACtD,CAAS,EAED,iBAAkBta,EAAO,CAAC,CAAE,QAASia,CAAQ,IAAO,CAClD,KAAM,CAAE,KAAAM,EAAM,mBAAAC,CAAoB,EAAGP,EACrCG,EAAQG,CAAI,EACZH,EAAQI,CAAkB,EAC1BJ,EAAQ3W,GAAe+W,CAAkB,CAAC,EAC1C,KAAM,CAAE,kBAAAC,CAAmB,EAAGD,EAexBE,GAdQ,IAAM,CAClB,GAAI7W,GAAqB2W,CAAkB,EAAG,CAC5C,KAAM,CAAE,SAAAzxB,EAAU,SAAA4qB,CAAU,EAAG6G,EAC/BD,EAAK,YAAYE,EAAmB9G,EAAU5qB,CAAQ,EACtD,MAAMC,EAAS2qB,EAAS,KACxB,OAAO4G,EAAK,QAAQvxB,CAAM,CACxC,KAAmB,CACL,KAAM,CAAE,OAAQqhB,CAAS,EAAGmQ,EAC5BD,EAAK,YAAYE,EAAmBpQ,CAAO,EAC3C,KAAM,CAAE,SAAA8B,CAAU,EAAG9B,EACf,CAAE,OAAArhB,CAAQ,EAAGuxB,EAAK,iBAAiBpO,CAAQ,EACjD,OAAOoO,EAAK,QAAQvxB,CAAM,CAC3B,CACb,KAEU,YAAKgxB,GAAc,oBAAqB,CACtC,gBAAiBO,EAAK,KAAM,EAC5B,YAAaA,EAAK,YAAa,CAC3C,CAAW,EACM,CAAE,KAAAG,CAAI,CACvB,CAAS,EACD,SAAU1a,EAAO,CAAC,CAAE,QAASia,EAAU,MAAAv/C,CAAK,IAAO,CACjDulC,EAAYvlC,EAAO,mBAAmB,EACtC,KAAM,CAAE,gBAAA24C,EAAiB,YAAa1J,CAAY,EAAKjvC,EAAM,QACvD,CAAE,OAAQ2vC,EAAS,eAAAmJ,CAAc,EAAKyG,EAC5CG,EAAQ5G,CAAc,EACtB,MAAMt3B,EAAO+9B,EAAS,MAItB1G,GAAuB,CAAE,gBAAAF,EAAiB,YAAa1J,EAAc,eAAA6J,CAAgB,CAAA,EAC/E+G,EAAO,IAAIvF,GAAK,CAAE,OAAQ3B,EAAiB,QAAS,CAAE,KAAAn3B,EAAM,OAAQmuB,CAAO,EAAI,YAAaV,CAAc,CAAA,EAChH,OAAA4Q,EAAK,KAAK5Q,CAAY,EACtB,KAAK,KAAK,SAAU,CAAE,KAAA4Q,EAAM,KAAAr+B,CAAM,CAAA,EAC3B,CAAE,KAAAA,EAAM,KAAAq+B,EACzB,CAAS,EAED,kBAAmBva,EAAO,CAAC,CAAE,QAASia,CAAQ,IAAO,CACnD,KAAM,CAAE,KAAAM,EAAM,mBAAAC,CAAoB,EAAGP,EACrCG,EAAQG,CAAI,EACZH,EAAQrW,GAAcyW,CAAkB,CAAC,EACzC,KAAM,CAAE,SAAArO,CAAU,EAAGqO,EACfF,EAAcC,EAAK,OAAOpO,EAAU,CAAE,eAAgB,EAAI,CAAE,EAC5DuO,EAAOH,EAAK,iBAAiBpO,EAAU,CAAE,eAAgB,EAAI,CAAE,EACrE,KAAKyN,GAAO,KAAKA,GAAK,OAAOc,EAAK,QAAQ,EAC1C,MAAM3G,EAAaH,GAAU,CAAE,KAAM30B,EAAQ,OAAQ,KAAMktB,CAAQ,CAAE,EACrE,YAAK6N,GAAc,qBAAsB,CAAE,UAAWjG,CAAY,CAAA,EAC3D,CAAE,YAAAuG,EAAa,KAAAI,EAAM,UAAW3G,CAAU,CAC3D,CAAS,EACD,cAAe,CAAC,CAAE,QAASkG,EAAU,MAAAv/C,CAAK,IAAO,CAC/CulC,EAAYvlC,EAAO,oBAAoB,EACvC,KAAM,CAAE,UAAWq5C,GAAer5C,EAAM,QAClC,CAAE,KAAM+uC,GAAUwQ,EAAS,OAC3B7H,EAAQ0B,GAAMC,EAAYtK,CAAK,EACrC,KAAKuQ,GAAc,iBAAkB,CAAE,UAAWjG,EAAY,MAAA3B,CAAK,CAAE,CACtE,EACD,eAAgB,IAAM,KAAK4H,GAAc,iBAAiB,EAE1D,qBAAsB,CAAC,CAAE,QAASC,KAAe,CAC/CG,EAAQH,EAAS,IAAI,EACrBA,EAAS,KAAK,GAAG,UAAW,CAAC,CAAE,KAAAx2B,CAAI,IAAO,CACpC,KAAKi2B,GAAS,YAAW,EAAG,SAAW,QACzC,KAAKA,GAAS,KAAK,CAAE,KAAM,eAAgB,QAAS,CAAE,KAAAj2B,CAAM,CAAA,CAAE,EAEhE,KAAK,KAAK,SAAS,CAC/B,CAAW,CACF,EACD,gBAAiBuc,EAAO,CAAC,CAAE,QAASia,CAAQ,IAAO,CACjDG,EAAQH,EAAS,IAAI,EACrB,MAAMU,EAAoBV,EAAS,WAAazxB,GAAa,EACvD,CAACoyB,EAAWC,CAAW,EAAIjzB,GAAgBqyB,EAAS,KAAK,MAAOU,CAAiB,EACvF,OAAIE,GACF,KAAKjB,GAAK,uBAAwBjC,GAAmBkD,CAAW,CAAC,EACjE,KAAKb,GAAc,OAAQa,CAAW,GAEtC,KAAKjB,GAAK,yBAAyB,EAE9B,CAAE,UAAAgB,CAAS,CAC5B,CAAS,EACD,mBAAoB5a,EAAO,CAAC,CAAE,QAASia,EAAU,MAAAv/C,CAAK,IAAO,CAC3DulC,EAAYvlC,EAAO,MAAM,EACzB,MAAMmgD,EAAcngD,EAAM,QACpB,CAAE,UAAWogD,EAAgBtyB,GAAa,EAAI,KAAA+xB,EAAM,OAAQlQ,CAAS,EAAG4P,EAC9EG,EAAQG,CAAI,EACZ,MAAM9E,EAAW8E,EAAK,WAChBpM,EAAa9D,EAAQ,KACrBlqB,EAAU,CAAC,CAAE,eAAAJ,EAAgB,KAAM0pB,CAAO,IAAKwN,GAAiB,CAAE,eAAAl3B,EAAgB,SAAU0pB,EAAO,WAAA0E,CAAY,CAAA,EAC/G,CAAC4M,EAAUH,CAAS,EAAInyB,GAC5B8xB,EAAK,MACLO,EACAD,EACApF,EACAt1B,CACZ,EACU,OAAI0C,GAAck4B,EAAS,KAAMR,EAAK,MAAM,IAAI,EACvC,CAAE,UAAAK,CAAS,GAElB,KAAK,KAAK,SAAS,EACZ,CAAE,KAAML,EAAK,MAAMQ,CAAQ,EAAG,UAAAH,GAEjD,CAAS,EAED,SAAU5a,EAAO,CAAC,CAAE,QAASia,CAAQ,IAAO,CAC1C,KAAM,CAAE,KAAA/9B,EAAM,KAAAw+B,EAAM,KAAAt2B,EAAO42B,GAAc,CAAI,EAAGf,EAC1CgB,EAAgBv2B,EAAY,aAAa,CAC7C,OAAQN,EACR,mBAAoBs2B,EAAK,KAAK,WAC9B,gBAAiBx+B,EAAK,KAAK,WAAW,SAClD,CAAW,EACD,YAAK89B,GAAc,OAAQ,CAAE,cAAAiB,CAAe,CAAA,EACrC,CAAE,KAAA72B,CAAI,CACvB,CAAS,EACD,gBAAiB4b,EAAO,CAAC,CAAE,QAASia,EAAU,MAAAv/C,CAAK,IAAO,CACxDulC,EAAYvlC,EAAO,MAAM,EACzB,KAAM,CAAE,cAAAugD,CAAa,EAAKvgD,EAAM,QAC1B,CAAE,KAAA0pB,EAAM,KAAAlI,EAAM,KAAAw+B,CAAI,EAAKT,EAC7B,GAAI,CACF,MAAMiB,EAAYx2B,EAAY,aAAa,CACzC,OAAQu2B,EACR,gBAAiBP,EAAK,KAAK,WAC3B,mBAAoBx+B,EAAK,KAAK,WAAW,SACvD,CAAa,EACD,MAAO,CAAE,WAAYisB,GAAgB/jB,EAAM82B,CAAS,CAAC,CACtD,OAAQ3/C,EAAO,CACd,GAAI,OAAOA,CAAK,EAAE,SAAS,oBAAoB,EAC7C,OAAO,KAAK4/C,GAAMpY,EAAkB,EAEpC,MAAMxnC,CACT,CACX,CAAS,EAED,wBAAyB,CAAC,CAAE,QAAS0+C,EAAU,MAAAv/C,CAAK,IAAO,CACzDulC,EAAYvlC,EAAO,mBAAmB,EACtC,MAAM0gD,EAAanB,EAAS,WACtBoB,EAAmB3gD,EAAM,QAC/B,GAAI,CACF,MAAM4gD,EAAmBC,GAAW,aAAaF,EAAkBD,CAAU,EAC7E,KAAK,KAAK,UAAWE,CAAgB,CACtC,OAAQ//C,EAAO,CACd,GAAI,OAAOA,CAAK,EAAE,SAAS,kBAAkB,EAC3C,OAAO,KAAK4/C,GAAMpY,EAAkB,EAEpC,MAAMxnC,CACT,CACF,EAED,KAAMykC,EAAO,CAAC/rB,EAAG,CAAE,MAAA1Y,CAAK,IACf,KAAK4/C,GAAM5/C,CAAK,CACxB,EACD,aAAcykC,EAAO,CAAC,CAAE,MAAAtlC,KAAY,CAClCulC,EAAYvlC,EAAO,OAAO,EAC1B,MAAMa,EAAQb,EAAM,QACpB,YAAKk/C,GAAK,mBAAoBr+C,CAAK,EACnC,KAAK,KAAK,cAAeA,CAAK,EACvB,CAAE,MAAAA,CAAK,CACxB,CAAS,EACD,UAAWykC,EAAO,CAAC,CAAE,MAAAtlC,KAAY,CAC/BulC,EAAYvlC,EAAO,aAAa,EAChC,MAAMa,EAAQb,EAAM,QACpB,YAAKk/C,GAAK,eAAgBr+C,CAAK,EAC/B,KAAKo+C,GAAc,KAAKnW,GAAmBjoC,EAAM,KAAM,QAAQ,CAAC,EAChE,KAAK,KAAK,aAAcA,CAAK,EACtB,CAAE,MAAAA,CAAK,CACxB,CAAS,EAED,YAAa,IAAM,KAAK,KAAK,WAAW,EACxC,eAAgB,CAAC,CAAE,MAAAb,CAAO,IAAK,KAAK,KAAK,eAAgBA,CAAK,CAC/D,EAGD,OAAQ,CACN,sBAAuB,CAAC,CAAE,QAASu/C,CAAU,IAAKA,EAAS,qBAAuB,OAClF,oBAAqB,CAAC,CAAE,QAASA,CAAU,IAAKA,EAAS,mBAAqB,OAC9E,sBAAuB7nB,GAAI,CAAC,wBAAyB,qBAAqB,CAAC,EAC3E,iBAAkB,CAAC,CAAE,QAAS6nB,CAAQ,IAAOvW,GAAiBuW,CAAQ,EACtE,mBAAoB,CAAC,CAAE,QAASA,CAAU,IAAKxW,GAAewW,EAAS,kBAAkB,EACzF,gBAAiB7nB,GAAI,CAAC,mBAAoB,oBAAoB,CAAC,EAC/D,kBAAmB,CAAC,CAAE,QAAS6nB,KAAe,CAC5C,KAAM,CAAE,KAAAM,EAAM,mBAAAC,CAAoB,EAAGP,EACrCG,OAAAA,EAAQ3W,GAAe+W,CAAkB,CAAC,EACnCD,EAAK,mBAAmBC,EAAmB,iBAAiB,EAAE,OACtE,EACD,mBAAoB,CAAC,CAAE,QAASP,EAAU,MAAAv/C,CAAK,IAAO,CACpDulC,EAAYvlC,EAAO,mBAAmB,EACtC,MAAM84C,EAAiByG,EAAS,eAC1B,CAAE,gBAAA5G,EAAiB,YAAa1J,CAAY,EAAKjvC,EAAM,QACvD8d,EAAQ46B,GAAaC,EAAiB1J,CAAY,EAClD,CAAE,GAAA9uB,CAAE,EAAKuuB,GAAcoK,CAAc,EAC3C,OAAO9G,GAAcl0B,EAAOqC,CAAE,CAC/B,EACD,cAAe,CAAC,CAAE,QAASo/B,KAAe,CACxC,KAAM,CAAE,mBAAAO,CAAoB,EAAGP,EAC/BG,OAAAA,EAAQrW,GAAcyW,CAAkB,CAAC,EAClC,CAACP,EAAS,KAAK,UAAUO,EAAmB,SAAU,CAAE,eAAgB,EAAI,CAAE,CACtF,EACD,gBAAiB,CAAC,CAAE,QAASP,EAAU,MAAAv/C,CAAK,IAAO,CACjDulC,EAAYvlC,EAAO,gBAAgB,EACnC,KAAM,CAAE,UAAWq5C,EAAY,MAAA3B,CAAK,EAAK13C,EAAM,QAC/C,OAAOu/C,EAAS,KAAK,oBAAoBlG,EAAY3B,CAAK,CAC3D,EACD,iBAAkB,CAAC,CAAE,QAAS6H,KAAeA,EAAS,KAAK,iBAAiBA,EAAS,KAAK,MAAM,EAChG,iBAAkB,CAAC,CAAE,QAASA,KAAeA,EAAS,KAAK,iBAAiBA,EAAS,YAAY,QAAQ,EACzG,iBAAkB,CAAC,CAAE,QAASA,KAAeA,EAAS,KAAK,iBAAiBA,EAAS,KAAK,MAAM,EAChG,cAAe,CAAC,CAAE,QAASA,CAAU,IAAK7V,GACxC6V,EAAS,KAAK,MAAM,KAEpBA,EAAS,WAAW,cAErB,CACF,CACF,CAAA,EAAE,cAAc,CACf,QAASF,EAET,GAAI,aACJ,MAAO,uBACP,QAAS,wBACT,GAAI,CACF,iBAAkB,CAAE,QAAS,oBAAqB,OAAQ,wBAA0B,EAEpF,MAAO,CAAE,QAAS,eAAgB,OAAQ,eAAiB,EAE3D,YAAa,CAAE,QAAS,YAAa,OAAQ,eAAiB,CAC/D,EACD,OAAQ,CACN,sBAAuB,CAErB,OAAQ,CAAE,MAAO,wBAAyB,OAAQ,gBAAkB,EACpE,GAAI,CAAE,eAAgB,CAAE,QAAS,sBAAsB,CAAI,CAC5D,EAGD,eAAgB,CACd,QAAS,sBACT,OAAQ,CAMN,oBAAqB,CACnB,OAAQ,CAEN,CAAE,MAAO,kBAAmB,GAAGyB,EAAMpY,EAAiB,CAAG,EAEzD,CAAE,MAAO,mBAAoB,OAAQ,8BAAgC,EAErE,CAAE,MAAO,qBAAsB,OAAQ,sBAAwB,EAE/D,CAAE,OAAQ,mBAAqB,CAChC,CACF,EACD,6BAA8B,CAE5B,GAAI,CACF,kBAAmB,CAEjB,CAAE,MAAO,qBAAsB,QAAS,WAAY,OAAQ,mBAAqB,EACjFoY,EAAMtY,EAAiB,CACxB,CACF,EACD,GAAG3U,EACJ,EACD,qBAAsB,CACpB,OAAQ,CAGN,CACE,MAAO,oBACP,QAAS,mBACT,OAAQ,mBACT,EAEDitB,EAAMvY,EAAwB,CAC/B,CACF,EAoBD,iBAAkB,CAChB,GAAI,mBACJ,KAAM,WAIN,OAAQ,CAEN,kBAAmB,CACjB,QAAS,4BACT,OAAQ,CACN,0BAA2B,CAEzB,OAAQ,CAAE,MAAO,mBAAoB,OAAQ,MAAQ,EACrD,GAAI,CAEF,mBAAoB,CAClB,QAAS,gBACT,OAAQ,4BACT,CACF,EACD,GAAG1U,EACJ,EAED,2BAA4B,CAC1B,GAAI,CAAE,gBAAiB,CAAE,OAAQ,MAAM,CAAI,EAC3C,GAAGA,EACJ,EACD,KAAM,CAAE,KAAM,OAAS,CACxB,CACF,EAED,uBAAwB,CACtB,QAAS,sBACT,OAAQ,CAEN,oBAAqB,CACnB,OAAQ,CAEN,CAAE,MAAO,qBAAsB,OAAQ,MAAQ,EAG/C,CAAE,MAAO,gBAAiB,GAAGitB,EAAM1Y,EAAc,CAAG,EAEpD,CAAE,QAAS,oBAAqB,OAAQ,uBAAyB,CAClE,CACF,EAED,sBAAuB,CACrB,GAAI,CACF,eAAgB,CAEd,CAAE,MAAO,kBAAmB,QAAS,iBAAkB,OAAQ,MAAQ,EAEvE0Y,EAAMxY,EAAsB,CAC7B,CACF,EACD,GAAGzU,EACJ,EACD,KAAM,CAAE,KAAM,OAAS,CACxB,CACF,CACF,EAED,OAAQ,CAAE,OAAQ,MAAQ,CAC3B,EACD,KAAM,CAAE,KAAM,OAAS,CACxB,EACD,OAAQ,CAAE,OAAQ,cAAgB,CACnC,EAKD,YAAa,CACX,GAAI,cACJ,MAAO,WACP,GAAI,CAAE,KAAM,CAAE,QAAS,kBAAmB,OAAQ,gBAAmB,EACrE,GAAGA,EACJ,EAED,cAAe,CACb,MAAO,kBACP,OAAQ,CAAE,MAAO,gBAAiB,OAAQ,WAAa,EACvD,GAAI,CAAE,KAAM,CAAE,QAAS,CAAC,qBAAsB,iBAAiB,EAAK,CACrE,EAGD,UAAW,CACT,GAAI,YACJ,MAAO,CAAC,cAAe,sBAAsB,EAC7C,OAAQ,CAGN,CAAE,MAAO,mBAAoB,GAAGitB,EAAMrY,EAAc,CAAG,EACvD,CAAE,MAAO,mBAAoB,GAAGqY,EAAM3Y,EAAc,CAAG,EACvD,CAAE,MAAO,mBAAoB,GAAG2Y,EAAMnY,EAAc,CAAG,CACxD,EACD,GAAI,CAEF,aAAc,CAAE,QAAS,iBAAmB,EAE5C,KAAM,CAAE,QAAS,CAAC,qBAAsB,iBAAiB,CAAG,EAE5D,kBAAmB,CAAE,QAAS,yBAA2B,EAEzD,WAAY,eACb,CACF,EAGD,aAAc,CACZ,GAAI,eACJ,OAAQ,CAAE,QAAS,gBAAkB,CACtC,CACF,CACP,CAAK,EACD,KAAKqW,GAAWhpB,GAAYhJ,CAAO,EACnC,KAAKgyB,GAAS,UAAWlhC,GAAU,CACjC,MAAMijC,EAAUrC,GAAa5gC,EAAM,KAAK,EACxC,KAAK,KAAK,SAAUijC,CAAO,EAC3B,KAAK7B,GAAK,KAAU6B,CAAO,GAAG,CACpC,CAAK,EACD,KAAK,KAAO,CAAC/gD,KAAUC,KACrB,KAAKi/C,GAAK,QAAQl/C,CAAK,MAAO,GAAGC,CAAI,EAC9B,MAAM,KAAKD,EAAO,GAAGC,CAAI,EAEnC,CAGD,MAAQ,CAAC+gD,EAAiB,KAAO,CAC/B,KAAK9B,GAAK,UAAU,EACpB,KAAKF,GAAS,QACd,KAAKC,GAAc,QACnB,KAAKzB,GAAW,GAChB,UAAWllB,KAAK0oB,EACd,KAAK,QAAQ1oB,CAAC,EAChB,OAAO,IACX,EAEE,KAAO,IAAM,CACX,GAAI,KAAKklB,IAAY,KAAKwB,GAAS,YAAa,EAAC,SAAW,OAAQ,CAClE,MAAMiC,EAAoB,CAAE,KAAM,cAClC,KAAKjC,GAAS,KAAKiC,CAAiB,EACpC,KAAKhC,GAAc,KAAKgC,CAAiB,CAC1C,CACD,YAAK,mBAAkB,EACvB,KAAKhC,GAAc,OACnB,KAAKC,GAAK,oBAAoB,EACvB,IACX,EAKE,QAAQgC,EAAmB,CACzB,MAAMtgD,EAAUugD,GAAQD,CAAiB,EACzC,KAAKjC,GAAc,QAAQr+C,CAAO,CACnC,CAKD,KAAQA,GAAY,CAClB8+C,EAAQ,KAAK,YAAa,+DAA+D,EACzF,MAAMiB,EAAmBE,GAAW,aAAajgD,EAAS,KAAK,WAAW,EAC1E,KAAK0+C,GAAc,oBAAqBqB,CAAgB,CAC5D,EAEE,IAAI,OAAQ,CACVjB,OAAAA,EAAQ,KAAKlC,EAAQ,EACd,KAAKwB,GAAS,YAAW,EAAG,KACpC,CAMD,IAAI,MAAO,CACT,OAAO,KAAK,SAAS,IACtB,CAMD,IAAI,aAAc,CAChB,OAAO,KAAK,SAAS,UACtB,CACD,IAAI,UAAW,CACbU,OAAAA,EAAQ,KAAKlC,EAAQ,EACd,KAAKwB,GAAS,YAAW,EAAG,OACpC,CACDI,GAAwBpB,EAAa,CACnC,OAAO,IAAIV,GAAa,CACtB,YAAc18C,GAAY,CACxB,KAAKwgD,GAAY,MAAOxgD,CAAO,EAC/B,MAAMuoB,EAAak4B,GAAMzgD,CAAO,EAChCo9C,EAAY70B,CAAU,CACvB,CACF,CAAA,EAAE,GAAG,UAAYvoB,GAAY,CAE5B,GADA,KAAKwgD,GAAY,KAAMxgD,CAAO,EAC1BA,EAAQ,OAAS,iBAAkB,CACrC,KAAM,CAAE,MAAAc,CAAK,EAAKd,EAAQ,QAC1B,KAAKq+C,GAAc,OAAOv9C,CAAK,CACvC,MACQ,KAAKs9C,GAAS,KAAKp+C,CAAO,CAE7B,CAAA,EAAE,GAAG,UAAYc,GAAU,CAC1B,KAAK49C,GAAc,iBAAkB,CAAE,MAAA59C,CAAO,CAAA,CACpD,CAAK,CACF,CAED++C,GAAM5/C,EAAO,CACX,KAAKq+C,GAAK,YAAar+C,CAAK,EAC5B,MAAMstC,EAAerF,GAAmBjoC,EAAO,OAAO,EACtD,YAAKm+C,GAAS,KAAK7Q,CAAY,EACxB,CAAE,MAAOA,EAAa,QAC9B,CAEDmR,GAAcz7C,EAAMsgB,EAAS,CAC3B,KAAK86B,GAAc,KAAK,CAAE,KAAAp7C,EAAM,QAAAsgB,CAAS,CAAA,CAC1C,CACDi9B,GAAYE,EAAW1gD,EAAS,CAC9B,MAAM2gD,EAAQD,IAAc,KAAO,KAAO,KACpCE,EAAe,KAAKhE,GAAW,KAAK,SAAS,MAAM,UAAY,IAAM,IAC3E,KAAK0B,GAAK,GAAGqC,CAAK,GAAGC,CAAY,KAAK5gD,EAAQ,KAAK,IAAI49C,GAAe59C,CAAO,CAAC,EAAE,CACjF,CACH,EACIkgD,EAASjgD,IAAW,CACtB,QAAS,CAAC,CAAE,KAAM,OAAQ,OAAQ,CAAE,MAAAA,CAAK,CAAI,EAAE,gBAAgB,EAC/D,OAAQ,eACV,GACI4gD,GAAgB,IAChB5tB,GAAU,CAAE,MAAO,CAAE,CAAC4tB,EAAa,EAAGX,EAAMlY,EAAO,EAAK","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131]} \ No newline at end of file +{"version":3,"file":"index-BvQarRZO.js","sources":["../../../../node_modules/@herbcaudill/eventemitter42/dist/EventEmitter.js","../../../../node_modules/@localfirst/shared/dist/assert.js","../../../../node_modules/lodash-es/isObjectLike.js","../../../../node_modules/lodash-es/isSymbol.js","../../../../node_modules/lodash-es/_arrayMap.js","../../../../node_modules/lodash-es/isArray.js","../../../../node_modules/lodash-es/_baseToString.js","../../../../node_modules/lodash-es/identity.js","../../../../node_modules/lodash-es/_WeakMap.js","../../../../node_modules/lodash-es/_baseCreate.js","../../../../node_modules/lodash-es/noop.js","../../../../node_modules/lodash-es/_copyArray.js","../../../../node_modules/lodash-es/_defineProperty.js","../../../../node_modules/lodash-es/_arrayEach.js","../../../../node_modules/lodash-es/_baseFindIndex.js","../../../../node_modules/lodash-es/_baseIsNaN.js","../../../../node_modules/lodash-es/_strictIndexOf.js","../../../../node_modules/lodash-es/_baseIndexOf.js","../../../../node_modules/lodash-es/_arrayIncludes.js","../../../../node_modules/lodash-es/_isIndex.js","../../../../node_modules/lodash-es/_baseAssignValue.js","../../../../node_modules/lodash-es/_assignValue.js","../../../../node_modules/lodash-es/_copyObject.js","../../../../node_modules/lodash-es/isLength.js","../../../../node_modules/lodash-es/isArrayLike.js","../../../../node_modules/lodash-es/_isPrototype.js","../../../../node_modules/lodash-es/_baseTimes.js","../../../../node_modules/lodash-es/_baseIsArguments.js","../../../../node_modules/lodash-es/isArguments.js","../../../../node_modules/lodash-es/stubFalse.js","../../../../node_modules/lodash-es/isBuffer.js","../../../../node_modules/lodash-es/_baseIsTypedArray.js","../../../../node_modules/lodash-es/_baseUnary.js","../../../../node_modules/lodash-es/_nodeUtil.js","../../../../node_modules/lodash-es/isTypedArray.js","../../../../node_modules/lodash-es/_arrayLikeKeys.js","../../../../node_modules/lodash-es/_overArg.js","../../../../node_modules/lodash-es/_nativeKeys.js","../../../../node_modules/lodash-es/_baseKeys.js","../../../../node_modules/lodash-es/keys.js","../../../../node_modules/lodash-es/_nativeKeysIn.js","../../../../node_modules/lodash-es/_baseKeysIn.js","../../../../node_modules/lodash-es/keysIn.js","../../../../node_modules/lodash-es/_isKey.js","../../../../node_modules/lodash-es/_memoizeCapped.js","../../../../node_modules/lodash-es/_stringToPath.js","../../../../node_modules/lodash-es/toString.js","../../../../node_modules/lodash-es/_castPath.js","../../../../node_modules/lodash-es/_toKey.js","../../../../node_modules/lodash-es/_baseGet.js","../../../../node_modules/lodash-es/get.js","../../../../node_modules/lodash-es/_arrayPush.js","../../../../node_modules/lodash-es/_getPrototype.js","../../../../node_modules/lodash-es/_stackClear.js","../../../../node_modules/lodash-es/_stackDelete.js","../../../../node_modules/lodash-es/_stackGet.js","../../../../node_modules/lodash-es/_stackHas.js","../../../../node_modules/lodash-es/_stackSet.js","../../../../node_modules/lodash-es/_Stack.js","../../../../node_modules/lodash-es/_baseAssign.js","../../../../node_modules/lodash-es/_baseAssignIn.js","../../../../node_modules/lodash-es/_cloneBuffer.js","../../../../node_modules/lodash-es/_arrayFilter.js","../../../../node_modules/lodash-es/stubArray.js","../../../../node_modules/lodash-es/_getSymbols.js","../../../../node_modules/lodash-es/_copySymbols.js","../../../../node_modules/lodash-es/_getSymbolsIn.js","../../../../node_modules/lodash-es/_copySymbolsIn.js","../../../../node_modules/lodash-es/_baseGetAllKeys.js","../../../../node_modules/lodash-es/_getAllKeys.js","../../../../node_modules/lodash-es/_getAllKeysIn.js","../../../../node_modules/lodash-es/_DataView.js","../../../../node_modules/lodash-es/_Promise.js","../../../../node_modules/lodash-es/_Set.js","../../../../node_modules/lodash-es/_getTag.js","../../../../node_modules/lodash-es/_initCloneArray.js","../../../../node_modules/lodash-es/_Uint8Array.js","../../../../node_modules/lodash-es/_cloneArrayBuffer.js","../../../../node_modules/lodash-es/_cloneDataView.js","../../../../node_modules/lodash-es/_cloneRegExp.js","../../../../node_modules/lodash-es/_cloneSymbol.js","../../../../node_modules/lodash-es/_cloneTypedArray.js","../../../../node_modules/lodash-es/_initCloneByTag.js","../../../../node_modules/lodash-es/_initCloneObject.js","../../../../node_modules/lodash-es/_baseIsMap.js","../../../../node_modules/lodash-es/isMap.js","../../../../node_modules/lodash-es/_baseIsSet.js","../../../../node_modules/lodash-es/isSet.js","../../../../node_modules/lodash-es/_baseClone.js","../../../../node_modules/lodash-es/clone.js","../../../../node_modules/lodash-es/_setCacheAdd.js","../../../../node_modules/lodash-es/_setCacheHas.js","../../../../node_modules/lodash-es/_SetCache.js","../../../../node_modules/lodash-es/_arraySome.js","../../../../node_modules/lodash-es/_cacheHas.js","../../../../node_modules/lodash-es/_equalArrays.js","../../../../node_modules/lodash-es/_mapToArray.js","../../../../node_modules/lodash-es/_setToArray.js","../../../../node_modules/lodash-es/_equalByTag.js","../../../../node_modules/lodash-es/_equalObjects.js","../../../../node_modules/lodash-es/_baseIsEqualDeep.js","../../../../node_modules/lodash-es/_baseIsEqual.js","../../../../node_modules/lodash-es/_baseIsMatch.js","../../../../node_modules/lodash-es/_isStrictComparable.js","../../../../node_modules/lodash-es/_getMatchData.js","../../../../node_modules/lodash-es/_matchesStrictComparable.js","../../../../node_modules/lodash-es/_baseMatches.js","../../../../node_modules/lodash-es/_baseHasIn.js","../../../../node_modules/lodash-es/_hasPath.js","../../../../node_modules/lodash-es/hasIn.js","../../../../node_modules/lodash-es/_baseMatchesProperty.js","../../../../node_modules/lodash-es/_baseProperty.js","../../../../node_modules/lodash-es/_basePropertyDeep.js","../../../../node_modules/lodash-es/property.js","../../../../node_modules/lodash-es/_baseIteratee.js","../../../../node_modules/lodash-es/_createSet.js","../../../../node_modules/lodash-es/_baseUniq.js","../../../../node_modules/lodash-es/uniq.js","../../../../node_modules/lodash-es/uniqBy.js","../../../../node_modules/@noble/hashes/_assert.js","../../../../node_modules/@noble/hashes/_u64.js","../../../../node_modules/@noble/hashes/crypto.js","../../../../node_modules/@noble/hashes/utils.js","../../../../node_modules/@noble/hashes/sha3.js","../../../../node_modules/@paralleldrive/cuid2/src/index.js","../../../../node_modules/@paralleldrive/cuid2/index.js","../../../../node_modules/@localfirst/crdx/dist/index.js","../../../../node_modules/xstate/dev/dist/xstate-dev.esm.js","../../../../node_modules/xstate/dist/raise-0f7cf128.esm.js","../../../../node_modules/xstate/dist/log-15d0f775.esm.js","../../../../node_modules/xstate/dist/xstate.esm.js","../../../../node_modules/@localfirst/auth/dist/index.js"],"sourcesContent":["export class EventEmitter {\n #listenerMap = {};\n #eventsCount = 0;\n /** Calls each of the listeners registered for a given event. */\n emit(event, ...args) {\n if (!this.#listenerMap[event])\n return false;\n const listeners = [...this.#listenerMap[event]];\n for (let i = 0; i < listeners.length; i++) {\n const { once, fn } = listeners[i];\n if (once)\n this.removeListener(event, fn);\n fn(...args);\n }\n return true;\n }\n /** Add a listener for a given event. */\n addListener(event, fn) {\n return this.#addListener(event, fn, false);\n }\n on = this.addListener;\n /** Add a one-time listener for a given event. */\n once(event, fn) {\n return this.#addListener(event, fn, true);\n }\n removeListener(event, fn) {\n const listeners = this.#listenerMap[event];\n if (listeners) {\n if (!fn) {\n this.removeAllListeners(event);\n }\n else {\n // find the listener\n const removals = [];\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i].fn === fn) {\n const listener = listeners[i];\n // remove this listener\n this.#eventsCount -= 1;\n if (this.#eventsCount === 0) {\n // if there are no more listeners, reset the events object\n this.#listenerMap = {};\n this.#eventsCount = 0;\n }\n else if (listeners.length === 1) {\n // if this is the last listener, remove the key\n delete this.#listenerMap[event];\n }\n else {\n // remove this listener from the array\n removals.push(i);\n }\n }\n }\n for (let i = removals.length - 1; i >= 0; i--) {\n listeners.splice(removals[i], 1);\n }\n }\n return this;\n }\n }\n off = this.removeListener;\n removeAllListeners(event) {\n if (event) {\n const listeners = this.#listenerMap[event];\n // just remove listeners for this event\n if (listeners) {\n this.#eventsCount -= listeners.length;\n if (this.#eventsCount === 0) {\n // if there are no more listeners, reset the events object\n this.#listenerMap = {};\n }\n else {\n // remove the key\n delete this.#listenerMap[event];\n }\n }\n }\n else {\n this.#listenerMap = {};\n this.#eventsCount = 0;\n }\n return this;\n }\n #addListener(event, fn, once = false) {\n const listener = { fn, once };\n const events = this.#listenerMap[event] ?? [];\n events.push(listener);\n this.#listenerMap[event] = events;\n this.#eventsCount++;\n return this;\n }\n}\n//# sourceMappingURL=EventEmitter.js.map","export function assert(value, message = 'Assertion failed') {\n if (value === false || value === null || value === undefined) {\n const error = new Error(trimLines(message));\n error.stack = removeLine(error.stack, 'assert.js');\n throw error;\n }\n}\nconst trimLines = (s) => s\n .split('\\n')\n .map(s => s.trim())\n .join('\\n');\nconst removeLine = (s = '', targetText) => s\n .split('\\n')\n .filter(line => !line.includes(targetText))\n .join('\\n');\n//# sourceMappingURL=assert.js.map","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n","import baseUniq from './_baseUniq.js';\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nexport default uniq;\n","import baseIteratee from './_baseIteratee.js';\nimport baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nexport default uniqBy;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBytes = isBytes;\nexports.number = number;\nexports.bool = bool;\nexports.bytes = bytes;\nexports.hash = hash;\nexports.exists = exists;\nexports.output = output;\nfunction number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`positive integer expected, not ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`boolean expected, not ${b}`);\n}\n// copied from utils\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nfunction bytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(h.outputLen);\n number(h.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nconst assert = { number, bool, bytes, hash, exists, output };\nexports.default = assert;\n//# sourceMappingURL=_assert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.add5L = exports.add5H = exports.add4H = exports.add4L = exports.add3H = exports.add3L = exports.rotlBL = exports.rotlBH = exports.rotlSL = exports.rotlSH = exports.rotr32L = exports.rotr32H = exports.rotrBL = exports.rotrBH = exports.rotrSL = exports.rotrSH = exports.shrSL = exports.shrSH = exports.toBig = void 0;\nexports.fromBig = fromBig;\nexports.split = split;\nexports.add = add;\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\nexports.toBig = toBig;\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nexports.shrSH = shrSH;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.shrSL = shrSL;\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexports.rotrSH = rotrSH;\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.rotrSL = rotrSL;\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexports.rotrBH = rotrBH;\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\nexports.rotrBL = rotrBL;\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nexports.rotr32H = rotr32H;\nconst rotr32L = (h, _l) => h;\nexports.rotr32L = rotr32L;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexports.rotlSH = rotlSH;\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\nexports.rotlSL = rotlSL;\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexports.rotlBH = rotlBH;\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\nexports.rotlBL = rotlBL;\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexports.add3L = add3L;\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexports.add3H = add3H;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexports.add4L = add4L;\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexports.add4H = add4H;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexports.add5L = add5L;\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\nexports.add5H = add5H;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexports.default = u64;\n//# sourceMappingURL=_u64.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.crypto = void 0;\nexports.crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","\"use strict\";\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Hash = exports.nextTick = exports.byteSwapIfBE = exports.byteSwap = exports.isLE = exports.rotl = exports.rotr = exports.createView = exports.u32 = exports.u8 = void 0;\nexports.isBytes = isBytes;\nexports.byteSwap32 = byteSwap32;\nexports.bytesToHex = bytesToHex;\nexports.hexToBytes = hexToBytes;\nexports.asyncLoop = asyncLoop;\nexports.utf8ToBytes = utf8ToBytes;\nexports.toBytes = toBytes;\nexports.concatBytes = concatBytes;\nexports.checkOpts = checkOpts;\nexports.wrapConstructor = wrapConstructor;\nexports.wrapConstructorWithOpts = wrapConstructorWithOpts;\nexports.wrapXOFConstructorWithOpts = wrapXOFConstructorWithOpts;\nexports.randomBytes = randomBytes;\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nconst crypto_1 = require(\"@noble/hashes/crypto\");\nconst _assert_js_1 = require(\"./_assert.js\");\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n// Cast array to different type\nconst u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.u8 = u8;\nconst u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nexports.u32 = u32;\n// Cast array to view\nconst createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.createView = createView;\n// The rotate right (circular right shift) operation for uint32\nconst rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexports.rotr = rotr;\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | ((word >>> (32 - shift)) >>> 0);\nexports.rotl = rotl;\nexports.isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// The byte swap operation for uint32\nconst byteSwap = (word) => ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\nexports.byteSwap = byteSwap;\n// Conditionally byte swap if on a big-endian platform\nexports.byteSwapIfBE = exports.isLE ? (n) => n : (n) => (0, exports.byteSwap)(n);\n// In place byte swap for Uint32Array\nfunction byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = (0, exports.byteSwap)(arr[i]);\n }\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nfunction bytesToHex(bytes) {\n (0, _assert_js_1.bytes)(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nconst nextTick = async () => { };\nexports.nextTick = nextTick;\n// Returns control to thread each 'tick' ms to avoid blocking\nasync function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await (0, exports.nextTick)();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nfunction utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nfunction toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n (0, _assert_js_1.bytes)(data);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nfunction concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n (0, _assert_js_1.bytes)(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nclass Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexports.Hash = Hash;\nconst toStr = {}.toString;\nfunction checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nfunction wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nfunction wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nfunction wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nfunction randomBytes(bytesLength = 32) {\n if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === 'function') {\n return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto_1.crypto && typeof crypto_1.crypto.randomBytes === 'function') {\n return crypto_1.crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shake256 = exports.shake128 = exports.keccak_512 = exports.keccak_384 = exports.keccak_256 = exports.keccak_224 = exports.sha3_512 = exports.sha3_384 = exports.sha3_256 = exports.sha3_224 = exports.Keccak = void 0;\nexports.keccakP = keccakP;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst _u64_js_1 = require(\"./_u64.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ (0, _u64_js_1.split)(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? (0, _u64_js_1.rotlBH)(h, l, s) : (0, _u64_js_1.rotlSH)(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? (0, _u64_js_1.rotlBL)(h, l, s) : (0, _u64_js_1.rotlSL)(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nfunction keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nclass Keccak extends utils_js_1.Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n (0, _assert_js_1.number)(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = (0, utils_js_1.u32)(this.state);\n }\n keccak() {\n if (!utils_js_1.isLE)\n (0, utils_js_1.byteSwap32)(this.state32);\n keccakP(this.state32, this.rounds);\n if (!utils_js_1.isLE)\n (0, utils_js_1.byteSwap32)(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n (0, _assert_js_1.exists)(this);\n const { blockLen, state } = this;\n data = (0, utils_js_1.toBytes)(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n (0, _assert_js_1.exists)(this, false);\n (0, _assert_js_1.bytes)(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n (0, _assert_js_1.number)(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n (0, _assert_js_1.output)(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nexports.Keccak = Keccak;\nconst gen = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapConstructor)(() => new Keccak(blockLen, suffix, outputLen));\nexports.sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexports.sha3_256 = gen(0x06, 136, 256 / 8);\nexports.sha3_384 = gen(0x06, 104, 384 / 8);\nexports.sha3_512 = gen(0x06, 72, 512 / 8);\nexports.keccak_224 = gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexports.keccak_256 = gen(0x01, 136, 256 / 8);\nexports.keccak_384 = gen(0x01, 104, 384 / 8);\nexports.keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapXOFConstructorWithOpts)((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexports.shake128 = genShake(0x1f, 168, 128 / 8);\nexports.shake256 = genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","/* global global, window, module */\nconst { sha3_512: sha3 } = require(\"@noble/hashes/sha3\");\n\nconst defaultLength = 24;\nconst bigLength = 32;\n\nconst createEntropy = (length = 4, random = Math.random) => {\n let entropy = \"\";\n\n while (entropy.length < length) {\n entropy = entropy + Math.floor(random() * 36).toString(36);\n }\n return entropy;\n};\n\n/*\n * Adapted from https://github.com/juanelas/bigint-conversion\n * MIT License Copyright (c) 2018 Juan Hernández Serrano\n */\nfunction bufToBigInt(buf) {\n let bits = 8n;\n\n let value = 0n;\n for (const i of buf.values()) {\n const bi = BigInt(i);\n value = (value << bits) + bi;\n }\n return value;\n}\n\nconst hash = (input = \"\") => {\n // Drop the first character because it will bias the histogram\n // to the left.\n return bufToBigInt(sha3(input)).toString(36).slice(1);\n};\n\nconst alphabet = Array.from({ length: 26 }, (x, i) =>\n String.fromCharCode(i + 97)\n);\n\nconst randomLetter = (random) =>\n alphabet[Math.floor(random() * alphabet.length)];\n\n/*\nThis is a fingerprint of the host environment. It is used to help\nprevent collisions when generating ids in a distributed system.\nIf no global object is available, you can pass in your own, or fall back\non a random string.\n*/\nconst createFingerprint = ({\n globalObj = typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : {},\n random = Math.random,\n} = {}) => {\n const globals = Object.keys(globalObj).toString();\n const sourceString = globals.length\n ? globals + createEntropy(bigLength, random)\n : createEntropy(bigLength, random);\n\n return hash(sourceString).substring(0, bigLength);\n};\n\nconst createCounter = (count) => () => {\n return count++;\n};\n\n// ~22k hosts before 50% chance of initial counter collision\n// with a remaining counter range of 9.0e+15 in JavaScript.\nconst initialCountMax = 476782367;\n\nconst init = ({\n // Fallback if the user does not pass in a CSPRNG. This should be OK\n // because we don't rely solely on the random number generator for entropy.\n // We also use the host fingerprint, current time, and a session counter.\n random = Math.random,\n counter = createCounter(Math.floor(random() * initialCountMax)),\n length = defaultLength,\n fingerprint = createFingerprint({ random }),\n} = {}) => {\n return function cuid2() {\n const firstLetter = randomLetter(random);\n\n // If we're lucky, the `.toString(36)` calls may reduce hashing rounds\n // by shortening the input to the hash function a little.\n const time = Date.now().toString(36);\n const count = counter().toString(36);\n\n // The salt should be long enough to be globally unique across the full\n // length of the hash. For simplicity, we use the same length as the\n // intended id output.\n const salt = createEntropy(length, random);\n const hashInput = `${time + salt + count + fingerprint}`;\n\n return `${firstLetter + hash(hashInput).substring(1, length)}`;\n };\n};\n\nconst createId = init();\n\nconst isCuid = (id, { minLength = 2, maxLength = bigLength } = {}) => {\n const length = id.length;\n const regex = /^[0-9a-z]+$/;\n\n try {\n if (\n typeof id === \"string\" &&\n length >= minLength &&\n length <= maxLength &&\n regex.test(id)\n )\n return true;\n } finally {\n }\n\n return false;\n};\n\nmodule.exports.getConstants = () => ({ defaultLength, bigLength });\nmodule.exports.init = init;\nmodule.exports.createId = createId;\nmodule.exports.bufToBigInt = bufToBigInt;\nmodule.exports.createCounter = createCounter;\nmodule.exports.createFingerprint = createFingerprint;\nmodule.exports.isCuid = isCuid;\n","const { createId, init, getConstants, isCuid } = require(\"./src/index\");\n\nmodule.exports.createId = createId;\nmodule.exports.init = init;\nmodule.exports.getConstants = getConstants;\nmodule.exports.isCuid = isCuid;\n","// src/graph/append.ts\nimport { asymmetric } from \"@localfirst/crypto\";\n\n// src/graph/hashLink.ts\nimport { hash } from \"@localfirst/crypto\";\n\n// src/constants.ts\nvar SIGNATURE = \"SIGNATURE\";\nvar ENCRYPTION = \"ENCRYPTION\";\nvar SYMMETRIC = \"SYMMETRIC\";\nvar LINK_HASH = \"LINK_HASH\";\nvar HashPurpose = {\n SIGNATURE,\n ENCRYPTION,\n SYMMETRIC,\n LINK_HASH\n};\nvar ROOT = \"ROOT\";\nvar MERGE = \"MERGE\";\nvar VALID = { isValid: true };\nvar EPHEMERAL_SCOPE = {\n type: \"EPHEMERAL\",\n name: \"EPHEMERAL\"\n};\n\n// src/graph/hashLink.ts\nvar { LINK_HASH: LINK_HASH2 } = HashPurpose;\nvar hashEncryptedLink = (body) => {\n return hash(LINK_HASH2, body);\n};\n\n// src/graph/append.ts\nvar append = ({\n graph,\n action,\n user,\n context = {},\n keys\n}) => {\n const { publicKey: senderPublicKey, secretKey: senderSecretKey } = user.keys.encryption;\n const { publicKey: recipientPublicKey } = keys.encryption;\n const body = {\n ...action,\n ...context,\n userId: user.userId,\n timestamp: Date.now(),\n prev: graph.head ?? []\n // If there are no previous heads, this is the root node\n };\n const encryptedBody = asymmetric.encryptBytes({\n secret: body,\n recipientPublicKey,\n senderSecretKey\n });\n const hash4 = hashEncryptedLink(encryptedBody);\n const link = {\n hash: hash4,\n body\n };\n const encryptedLink = {\n senderPublicKey,\n recipientPublicKey,\n encryptedBody\n };\n return {\n // if the graph didn't already have a root, this is it\n root: graph.root ?? hash4,\n // we just added the new head, so we're guaranteed to only have one\n head: [hash4],\n // add the new encryptedLink\n encryptedLinks: {\n ...graph.encryptedLinks,\n [hash4]: encryptedLink\n },\n // add the new unencrypted link\n links: {\n ...graph.links,\n [hash4]: link\n }\n };\n};\n\n// src/graph/children.ts\nimport { memoize } from \"@localfirst/shared\";\n\n// src/graph/getLink.ts\nvar getLink = (graph, hash4) => graph.links[hash4];\n\n// src/graph/children.ts\nvar getChildrenHashes = (graph, hash4) => {\n const childrenLookup = calculateChildren(graph);\n return childrenLookup[hash4] || [];\n};\nvar getChildren = (graph, link) => {\n return getChildrenHashes(graph, link.hash).map((hash4) => getLink(graph, hash4));\n};\nvar calculateChildren = memoize((graph) => {\n const childrenLookup = {};\n for (const link of Object.values(graph.links)) {\n const parents = link.body.prev;\n for (const parent of parents) {\n const children = childrenLookup[parent] || [];\n children.push(link.hash);\n childrenLookup[parent] = children;\n }\n }\n return childrenLookup;\n});\n\n// src/graph/concurrency.ts\nimport { memoize as memoize4 } from \"@localfirst/shared\";\n\n// src/graph/getHashes.ts\nvar getHashes = (graph) => Object.keys(graph.links);\n\n// src/graph/getPredecessors.ts\nimport { assert, memoize as memoize2 } from \"@localfirst/shared\";\nimport { uniq } from \"lodash-es\";\nvar memoizeResolver = (graph, hash4) => `${graph.head.join(\"\")}:${hash4}`;\nvar getPredecessors = (graph, link) => getPredecessorHashes(graph, link.hash).map((h) => graph.links[h]).filter((link2) => link2 !== void 0);\nvar getPredecessorHashes = memoize2((graph, hash4) => {\n const link = getLink(graph, hash4);\n assert(link);\n const parents = link.body.prev;\n const predecessors = parents.flatMap((parent) => getPredecessorHashes(graph, parent));\n return uniq(parents.concat(predecessors));\n}, memoizeResolver);\n\n// src/graph/isPredecessor.ts\nvar isPredecessor = (graph, a, b) => {\n return a !== void 0 && b !== void 0 && a.hash in graph.links && b.hash in graph.links && getPredecessorHashes(graph, b.hash).includes(a.hash);\n};\nvar isPredecessorHash = (graph, a, b) => getPredecessorHashes(graph, b).includes(a);\n\n// src/graph/getSuccessors.ts\nimport { memoize as memoize3 } from \"@localfirst/shared\";\nimport { uniq as uniq2 } from \"lodash-es\";\nvar memoizeResolver2 = (graph, hash4) => `${graph.head.join(\"\")}:${hash4}`;\nvar getSuccessorHashes = memoize3((graph, hash4) => {\n const children = getChildrenHashes(graph, hash4);\n const successors = children.flatMap((parent) => getSuccessorHashes(graph, parent));\n return uniq2(children.concat(successors));\n}, memoizeResolver2);\nvar getSuccessors = (graph, link) => getSuccessorHashes(graph, link.hash).map((h) => graph.links[h]).filter((link2) => link2 !== void 0);\n\n// src/graph/isSuccessor.ts\nvar isSuccessor = (graph, a, b) => {\n return a !== void 0 && b !== void 0 && a.hash in graph.links && b.hash in graph.links && getSuccessorHashes(graph, b.hash).includes(a.hash);\n};\nvar isSuccessorHash = (graph, a, b) => getSuccessorHashes(graph, b).includes(a);\n\n// src/graph/concurrency.ts\nvar getConcurrentLinks = (graph, link) => {\n return getConcurrentHashes(graph, link.hash).map((hash4) => getLink(graph, hash4));\n};\nvar getConcurrentHashes = (graph, hash4) => {\n const concurrencyLookup = calculateConcurrency(graph);\n return concurrencyLookup[hash4];\n};\nvar calculateConcurrency = memoize4((graph) => {\n const concurrencyLookup = {};\n for (const _ in graph.links) {\n const hash4 = _;\n concurrencyLookup[hash4] = getHashes(graph).filter((b) => isConcurrent(graph, hash4, b)).sort();\n }\n return concurrencyLookup;\n});\nvar isConcurrent = (graph, a, b) => a !== b && // a link isn't concurrent with itself\n!isPredecessorHash(graph, a, b) && // a link isn't concurrent with any of its predecessors\n!isSuccessorHash(graph, a, b);\nvar getConcurrentBubbles = (graph) => {\n const seen = {};\n const getBubble = (a) => {\n const bubble = [a];\n for (const b of getConcurrentHashes(graph, a))\n if (!seen[b]) {\n seen[b] = true;\n bubble.push(...getBubble(b));\n }\n return bubble;\n };\n const bubbles = [];\n for (const _ in graph.links) {\n const hash4 = _;\n if (!seen[hash4]) {\n seen[hash4] = true;\n const bubble = getBubble(hash4);\n if (bubble.length > 1) {\n bubbles.push(bubble);\n }\n }\n }\n return bubbles;\n};\n\n// src/graph/createGraph.ts\nimport { createId } from \"@paralleldrive/cuid2\";\nvar EMPTY_GRAPH = {\n root: void 0,\n head: void 0,\n encryptedLinks: {},\n links: {}\n};\nvar createGraph = ({\n user,\n id = createId(),\n name = id,\n rootPayload = {},\n context = {},\n keys\n}) => {\n const payload = {\n name,\n id,\n ...rootPayload\n };\n const rootAction = {\n type: ROOT,\n prev: [],\n payload\n };\n const graph = append({\n graph: EMPTY_GRAPH,\n action: rootAction,\n user,\n context,\n keys\n });\n return graph;\n};\n\n// src/graph/decrypt.ts\nimport { asymmetric as asymmetric2 } from \"@localfirst/crypto\";\n\n// src/util/arrayToMap.ts\nvar arrayToMap = (keyAccessor) => {\n return (result, current) => {\n const key = typeof keyAccessor === \"function\" ? keyAccessor(current) : current[keyAccessor];\n return {\n ...result,\n [key]: current\n };\n };\n};\n\n// src/keyset/types.ts\nvar KeyType = {\n GRAPH: \"GRAPH\",\n USER: \"USER\"\n};\nvar hasSecrets = (keys) => keys.encryption.hasOwnProperty(\"secretKey\") && keys.signature.hasOwnProperty(\"secretKey\") && \"secretKey\" in keys;\nvar isKeyset = (k) => k !== void 0 && //\n\"secretKey\" in k && \"encryption\" in k && \"signature\" in k;\nvar isKeyring = (k) => !Array.isArray(k) && !isKeyset(k);\n\n// src/keyset/createKeyring.ts\nvar createKeyring = (keys) => {\n if (isKeyring(keys))\n return keys;\n if (isKeyset(keys))\n keys = [keys];\n return keys.reduce(\n arrayToMap((k) => k.encryption.publicKey),\n {}\n );\n};\n\n// src/graph/decrypt.ts\nimport { assert as assert2 } from \"@localfirst/shared\";\nvar decryptLink = (encryptedLink, keys) => {\n const { senderPublicKey, recipientPublicKey, encryptedBody } = encryptedLink;\n const keyring = createKeyring(keys);\n const keyset = keyring[recipientPublicKey];\n assert2(keyset, `Can't decrypt link: don't have the correct keyset`);\n const cipher = toUint8Array(encryptedBody);\n const decryptedLinkBody = asymmetric2.decryptBytes({\n cipher,\n recipientSecretKey: keyset.encryption.secretKey,\n senderPublicKey\n });\n return {\n hash: hashEncryptedLink(encryptedBody),\n body: decryptedLinkBody\n };\n};\nvar decryptGraph = ({\n encryptedGraph,\n keys\n}) => {\n const { encryptedLinks, root, childMap = {} } = encryptedGraph;\n const links = encryptedGraph.links ?? {};\n const decrypt = (hash4, prevLinks = {}) => {\n const encryptedLink = encryptedLinks[hash4];\n const decryptedLink = links[hash4] ?? // if it's already decrypted, don't bother decrypting it again\n decryptLink(encryptedLink, keys);\n let newLinks = {\n [hash4]: decryptedLink\n };\n const children = childMap[hash4] ?? [];\n for (const hash5 of children) {\n newLinks = { ...newLinks, ...decrypt(hash5, newLinks) };\n }\n return { ...prevLinks, ...newLinks };\n };\n const decryptedLinks = decrypt(root);\n return {\n ...encryptedGraph,\n links: decryptedLinks\n };\n};\nvar toUint8Array = (buf) => {\n return !isBuffer(buf) ? new Uint8Array(buf) : new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n};\nvar isBuffer = (buf) => \"buffer\" in buf && \"byteOffset\" in buf && \"byteLength\" in buf;\n\n// src/graph/getEncryptedLinks.ts\nvar getEncryptedLinks = (graph, hashes) => Object.fromEntries(hashes.map((hash4) => [hash4, getEncryptedLink(graph, hash4)]));\nvar getEncryptedLink = (graph, hash4) => graph.encryptedLinks[hash4];\n\n// src/graph/getHead.ts\nvar getHead = (graph) => graph.head.map((hash4) => getLink(graph, hash4));\n\n// src/graph/getParents.ts\nfunction getParents(graph, linkOrHash) {\n if (typeof linkOrHash === \"string\") {\n const hash4 = linkOrHash;\n const link = getLink(graph, hash4);\n return link.body.prev;\n } else {\n const link = linkOrHash;\n return link.body.prev.map((hash4) => getLink(graph, hash4));\n }\n}\n\n// src/graph/getParentMap.ts\nvar EMPTY = {};\nvar getParentMap = ({\n graph,\n depth,\n start = graph.head,\n end = [],\n prev,\n hashes\n}) => {\n if (hashes) {\n return hashes.reduce(\n (result, hash4) => ({\n ...result,\n [hash4]: getParents(graph, hash4)\n }),\n EMPTY\n );\n }\n if (prev)\n start = getTails(prev);\n if (depth === 0)\n return EMPTY;\n return start.reduce((result, hash4) => {\n const parents = getParents(graph, hash4);\n const parentsToLookup = parents.filter((parent) => !(parent in result)).filter((parent) => !end.includes(parent));\n const parentLinks = getParentMap({\n graph,\n depth: depth ? depth - 1 : void 0,\n start: parentsToLookup,\n end\n });\n return {\n ...result,\n [hash4]: parents,\n ...parentLinks\n };\n }, EMPTY);\n};\nvar getTails = (linkMap) => {\n const keys = Object.keys(linkMap);\n const allParents = keys.flatMap((hash4) => linkMap[hash4]);\n const tails = allParents.filter((hash4) => !(hash4 in linkMap));\n return tails;\n};\nvar getChildMap = (graph) => {\n const childMap = {};\n for (const hash4 of getHashes(graph))\n for (const parent of getParents(graph, hash4)) {\n if (!childMap[parent])\n childMap[parent] = [];\n childMap[parent].push(hash4);\n }\n return childMap;\n};\nvar invertLinkMap = (linkMap) => {\n const inverted = {};\n const keys = Object.keys(linkMap);\n for (const hash4 of keys) {\n for (const parent of linkMap[hash4]) {\n if (!inverted[parent])\n inverted[parent] = [];\n inverted[parent].push(hash4);\n }\n }\n return inverted;\n};\n\n// src/graph/getRoot.ts\nvar getRoot = (graph) => graph.links[graph.root];\n\n// src/graph/topoSort.ts\nvar topoSort = (graph, options = {}) => {\n const { comparator = byHash } = options;\n let links = Object.values(graph.links);\n const remainingParents = Object.fromEntries(\n links.map((link) => [link.hash, link.body.prev.length])\n );\n const sorted = [];\n const take = (link) => {\n sorted.push(link);\n links = links.filter((l) => l.hash !== link.hash);\n const children = getChildrenHashes(graph, link.hash);\n for (const child2 of children)\n remainingParents[child2]--;\n if (children.length !== 1)\n return;\n const childHash = children[0];\n if (remainingParents[childHash] > 0)\n return;\n const child = graph.links[childHash];\n take(child);\n };\n while (links.length > 0) {\n const queue = links.filter((link) => remainingParents[link.hash] === 0).sort(comparator);\n const nextLink = queue.shift();\n take(nextLink);\n }\n return sorted;\n};\nvar byHash = (a, b) => a.hash < b.hash ? -1 : a.hash > b.hash ? 1 : 0;\n\n// src/graph/getSequence.ts\nvar getSequence = (graph, resolver = baseResolver) => {\n const { sort = byHash, filter = noFilter } = resolver(graph);\n const sorted = topoSort(graph, { comparator: sort });\n return sorted.map((link) => {\n const isInvalid = link.isInvalid ?? !filter(link);\n return { ...link, isInvalid };\n });\n};\nvar baseResolver = (_) => ({});\nvar noFilter = (_) => true;\n\n// src/graph/headsAreEqual.ts\nvar headsAreEqual = (a, b) => {\n if (a === void 0 || b === void 0)\n return false;\n if (a.length !== b.length)\n return false;\n a.sort();\n b.sort();\n return a.every((hash4, i) => hash4 === b[i]);\n};\n\n// src/graph/merge.ts\nimport { uniq as uniq3 } from \"lodash-es\";\nvar merge = (ours, theirs) => {\n if (ours.root !== theirs.root)\n throw new Error(\"Cannot merge two graphs with different roots\");\n const mergedLinks = {\n ...theirs.links,\n ...ours.links\n };\n const mergedEncryptedLinks = {\n ...theirs.encryptedLinks,\n ...ours.encryptedLinks\n };\n const mergedHeads = uniq3([...ours.head, ...theirs.head]);\n const newHeads = mergedHeads.filter(isNotParentOfAnyOf(mergedLinks));\n const mergedGraph = {\n root: ours.root,\n head: newHeads,\n encryptedLinks: mergedEncryptedLinks,\n links: mergedLinks\n };\n mergedGraph.head = mergedGraph.head.sort();\n return mergedGraph;\n};\nvar isNotParentOfAnyOf = (links) => (h) => !Object.values(links).some(isParent(h));\nvar isParent = (h) => (l) => l.body.prev.includes(h);\n\n// src/graph/redactGraph.ts\nvar redactGraph = (graph) => {\n const { head, root, encryptedLinks } = graph;\n const childMap = getChildMap(graph);\n return {\n head,\n root,\n encryptedLinks,\n childMap\n };\n};\n\n// src/graph/serialize.ts\nimport { pack, unpack } from \"msgpackr\";\nvar serialize = (graph) => {\n return pack(redactGraph(graph));\n};\nvar deserialize = (serialized, keys) => {\n const graph = unpack(serialized);\n return decryptGraph({ encryptedGraph: graph, keys });\n};\n\n// src/keyset/createKeyset.ts\nimport { hash as hash2, asymmetric as asymmetric3, signatures, stretch, randomKey } from \"@localfirst/crypto\";\nvar { SIGNATURE: SIGNATURE2, ENCRYPTION: ENCRYPTION2, SYMMETRIC: SYMMETRIC2 } = HashPurpose;\nvar createKeyset = (scope, seed = randomKey()) => {\n const { type, name = type } = scope;\n const stretchedSeed = stretch(`${name}:${type}:${seed}`);\n return {\n type,\n name,\n generation: 0,\n signature: signatures.keyPair(hash2(SIGNATURE2, stretchedSeed).slice(0, 32)),\n encryption: asymmetric3.keyPair(hash2(ENCRYPTION2, stretchedSeed).slice(0, 32)),\n secretKey: hash2(SYMMETRIC2, stretchedSeed)\n };\n};\n\n// src/keyset/getLatestGeneration.ts\nvar getLatestGeneration = (keyring) => {\n let latest;\n for (const publicKey in keyring) {\n const keyset = keyring[publicKey];\n if (latest === void 0 || keyset.generation > latest.generation) {\n latest = keyset;\n }\n }\n return latest;\n};\n\n// src/keyset/redactKeys.ts\nvar redactKeys = (keys) => hasSecrets(keys) ? {\n type: keys.type,\n name: keys.name,\n generation: keys.generation,\n encryption: keys.encryption.publicKey,\n signature: keys.signature.publicKey\n} : keys;\n\n// src/store/Store.ts\nimport { EventEmitter } from \"@herbcaudill/eventemitter42\";\nimport { assert as assert3 } from \"@localfirst/shared\";\n\n// src/validator/types.ts\nvar ValidationError = class extends Error {\n name;\n details;\n constructor(message, details) {\n super();\n this.message = message;\n this.details = details;\n }\n};\n\n// src/validator/validators.ts\nimport { memoize as memoize5 } from \"@localfirst/shared\";\nimport { hash as hash3 } from \"@localfirst/crypto\";\nvar _validators = {\n /** Does this link's hash check out? */\n validateHash(link, graph) {\n const { hash: hash4 } = link;\n const { encryptedBody } = graph.encryptedLinks[hash4];\n const computedHash = hashEncryptedLink(encryptedBody);\n if (hash4 === computedHash)\n return VALID;\n return fail(`The hash calculated for this link does not match.`, {\n link,\n hash: hash4,\n expected: computedHash\n });\n },\n /** Do the previous link(s) referenced by this link exist? */\n validatePrev(link, graph) {\n for (const hash4 of link.body.prev)\n if (!(hash4 in graph.links))\n return fail(\n `The link referenced by one of the hashes in the \\`prev\\` property does not exist.`\n );\n return VALID;\n },\n /** If this is a root link, it should not have any predecessors, and should be the graph's root */\n validateRoot(link, graph) {\n const hasNoPrevLink = link.body.prev.length === 0;\n const hasRootType = \"type\" in link.body && link.body.type === ROOT;\n const isTheGraphRoot = getRoot(graph) === link;\n if (hasNoPrevLink === isTheGraphRoot && isTheGraphRoot === hasRootType)\n return VALID;\n const message = hasRootType ? (\n // ROOT\n hasNoPrevLink ? `The ROOT link has to be the link referenced by the graph \\`root\\` property` : `The ROOT link cannot have any predecessors`\n ) : (\n // not ROOT\n hasNoPrevLink ? `Non-ROOT links must have predecessors` : \"The link referenced by the graph `root` property must be a ROOT link\"\n );\n return fail(message, { link, graph });\n },\n /** Sanity check on timestamps: They can't be in the future, relative to the current time on this\n * device. And they can't be earlier than any links they depend on. */\n validateTimestamps(link, graph) {\n const { timestamp } = link.body;\n const now = Date.now();\n if (timestamp > now) {\n return fail(`The link's timestamp is in the future.`, { link, now });\n }\n for (const hash4 of link.body.prev) {\n const prevLink = graph.links[hash4];\n if (prevLink.body.timestamp > timestamp)\n return fail(`This link's timestamp can't be earlier than a previous link.`, {\n link,\n prevLink\n });\n }\n return VALID;\n }\n};\nvar fail = (msg, args) => {\n return {\n isValid: false,\n error: new ValidationError(msg, args)\n };\n};\nvar memoizeFunctionMap = (source) => {\n const result = {};\n const memoizeResolver3 = (link, graph) => {\n return `${hash3(\"memoize\", link)}:${hash3(\"memoize\", graph)}`;\n };\n for (const key in source)\n result[key] = memoize5(source[key], memoizeResolver3);\n return result;\n};\nvar validators = memoizeFunctionMap(_validators);\n\n// src/validator/validate.ts\nvar validate = (graph, customValidators = {}) => {\n {\n const rootHash = graph.root;\n const rootLink = graph.encryptedLinks[rootHash];\n const computedHash = hashEncryptedLink(rootLink.encryptedBody);\n if (computedHash !== rootHash)\n return fail(\"Root hash does not match the hash of the root link\", {\n rootHash,\n computedHash,\n rootLink\n });\n }\n for (const headHash of graph.head) {\n const headLink = graph.encryptedLinks[headHash];\n const computedHash = hashEncryptedLink(headLink.encryptedBody);\n if (computedHash !== headHash)\n return fail(\"Head hash does not match the hash of the head link\", {\n headHash,\n computedHash,\n headLink\n });\n }\n const encryptedLinkHashes = Object.keys(graph.encryptedLinks);\n const linkHashes = Object.keys(graph.links);\n if (encryptedLinkHashes.length !== linkHashes.length)\n return fail(\"Number of encrypted links does not match number of links\", {\n encryptedLinkHashes,\n linkHashes\n });\n const composeValidators = (...validators2) => (currentLink) => {\n const mergedValidators = merge2(validators2);\n for (const key in mergedValidators) {\n const validator = mergedValidators[key];\n try {\n const result = validator(currentLink, graph);\n if (!result.isValid)\n return result;\n } catch (error) {\n const { message } = error;\n return fail(message, error);\n }\n }\n return VALID;\n };\n const compositeValidator = composeValidators(validators, customValidators);\n for (const link of Object.values(graph.links)) {\n const result = compositeValidator(link);\n if (!result.isValid)\n return result;\n }\n return VALID;\n};\nvar merge2 = (validatorSets) => validatorSets.reduce((result, vs) => Object.assign(result, vs), {});\n\n// src/store/makeMachine.ts\nvar makeMachine = ({\n initialState,\n reducer,\n resolver,\n validators: validators2\n}) => {\n return (graph) => {\n validate(graph, validators2);\n const sequence = getSequence(graph, resolver);\n return sequence.reduce(reducer, initialState);\n };\n};\n\n// src/store/Store.ts\nvar Store = class extends EventEmitter {\n user;\n context;\n initialState;\n reducer;\n resolver;\n validators;\n keyring;\n graph;\n state;\n constructor({\n user,\n context = {},\n graph,\n rootPayload,\n initialState = {},\n reducer,\n validators: validators2,\n resolver = baseResolver,\n keys\n }) {\n super();\n if (graph === void 0) {\n assert3(isKeyset(keys), \"If no graph is provided, only pass a single keyset, not a keyring.\");\n this.graph = createGraph({ user, rootPayload, keys });\n } else if (isGraph(graph)) {\n this.graph = graph;\n } else {\n assert3(keys);\n this.graph = deserialize(graph, keys);\n }\n this.context = context;\n this.initialState = initialState;\n this.reducer = reducer;\n this.validators = validators2;\n this.resolver = resolver;\n this.user = user;\n this.keyring = createKeyring(keys);\n this.updateState();\n }\n /** Returns the store's most recent state. */\n getState() {\n return this.state;\n }\n /** Returns the current hash graph */\n getGraph() {\n return this.graph;\n }\n /**\n * Returns the current hash graph in serialized form; this can be used to rehydrate this\n * store from storage.\n * */\n save() {\n return serialize(this.graph);\n }\n /**\n * Dispatches an action to be added to the hash graph. This is the only way to trigger a\n * state change.\n *\n * The `reducer` function provided when creating the store will be called with the current state\n * and the given `action`. Its return value will be considered the **next** state of the tree,\n * and any change listeners will be notified.\n *\n * @returns For convenience, the same action object that was dispatched.\n */\n dispatch(action, keys) {\n const actionWithPayload = {\n payload: void 0,\n ...action\n };\n if (keys === void 0) {\n const prevHash = this.graph.head.sort()[0];\n const prevPublicKey = this.graph.encryptedLinks[prevHash].recipientPublicKey;\n keys = this.keyring[prevPublicKey];\n } else {\n this.keyring[keys.encryption.publicKey] = keys;\n }\n this.graph = append({\n graph: this.graph,\n action: actionWithPayload,\n user: this.user,\n keys,\n context: this.context\n });\n const [head] = getHead(this.graph);\n this.state = this.reducer(this.state, head);\n this.emit(\"updated\", { head: this.graph.head });\n return action;\n }\n /**\n * Merges another graph (e.g. from a peer) with ours.\n * @param theirGraph\n * @returns this `Store` instance\n */\n merge(theirGraph) {\n this.graph = merge(this.graph, theirGraph);\n this.updateState();\n }\n /**\n * Validates the store's integrity, using the built-in validators (verify hashes, check\n * timestamps, etc.) as well as any custom validators provided by the application.\n */\n validate() {\n return validate(this.graph, this.validators);\n }\n // PRIVATE\n updateState() {\n const machine = makeMachine({\n initialState: this.initialState,\n reducer: this.reducer,\n resolver: this.resolver,\n validators: this.validators\n });\n this.state = machine(this.graph);\n this.emit(\"updated\", { head: this.graph.head });\n }\n};\nvar isGraph = (source) => source?.hasOwnProperty(\"root\");\n\n// src/store/createStore.ts\nvar createStore = (options) => {\n return new Store(options);\n};\n\n// src/sync/generateMessage.ts\nvar generateMessage = (graph, prevState) => {\n const message = {\n root: graph.root,\n head: graph.head\n };\n const { their, our, lastCommonHead } = prevState;\n const state = { ...prevState };\n const ourHead = graph.head;\n const theirHead = their.head;\n if (our.reportedError) {\n message.error = our.reportedError;\n delete our.reportedError;\n return [state, message];\n }\n const syncedLastTime = headsAreEqual(ourHead, lastCommonHead);\n if (syncedLastTime) {\n return [state, void 0];\n }\n const syncedThisTime = headsAreEqual(ourHead, theirHead);\n if (syncedThisTime) {\n state.lastCommonHead = ourHead;\n return [state, message];\n }\n const theirHashLookup = Object.fromEntries(\n [\n // we know that they have their heads, and any of their predecessors\n ...theirHead,\n ...theirHead.flatMap((h) => getPredecessorHashes(graph, h)),\n // their previous heads, and any of their predecessors\n ...lastCommonHead,\n ...lastCommonHead.flatMap((h) => getPredecessorHashes(graph, h)),\n // anything in their link map\n ...Object.keys(their.parentMap),\n // anything we've already sent\n ...our.links\n ].map((h) => [h, true])\n );\n let hashesWeThinkTheyNeed = [];\n const weAreAhead = theirHead.length > 0 && // if we don't know their head, we can't assume we're ahead\n theirHead.every((h) => h in graph.links);\n if (weAreAhead) {\n hashesWeThinkTheyNeed = getHashes(graph).filter((hash4) => !(hash4 in theirHashLookup));\n } else {\n if (their.parentMap) {\n const linksWeHave = { ...graph.encryptedLinks, ...their.encryptedLinks };\n message.need = Object.keys(theirHashLookup).filter((hash4) => !(hash4 in linksWeHave));\n hashesWeThinkTheyNeed = getHashes(graph).filter((hash4) => !(hash4 in theirHashLookup));\n }\n if (!headsAreEqual(ourHead, our.parentMapAtHead)) {\n message.parentMap = getParentMap({ graph, end: lastCommonHead });\n state.our.parentMapAtHead = ourHead;\n }\n }\n const hashesTheyAskedFor = their.need;\n const hashesToSend = hashesTheyAskedFor.concat(hashesWeThinkTheyNeed);\n if (hashesToSend.length > 0) {\n message.links = getEncryptedLinks(graph, hashesToSend);\n const additionalDependencies = getParentMap({ graph, hashes: hashesToSend });\n message.parentMap = { ...message.parentMap, ...additionalDependencies };\n }\n state.our.links = our.links.concat(hashesToSend);\n state.their.need = [];\n return [state, message];\n};\n\n// src/sync/initSyncState.ts\nvar initSyncState = () => ({\n their: {\n head: [],\n encryptedLinks: {},\n need: [],\n parentMap: {}\n },\n our: {\n head: [],\n links: []\n },\n lastCommonHead: [],\n failedSyncCount: 0\n});\n\n// src/sync/receiveMessage.ts\nimport { assert as assert4 } from \"@localfirst/shared\";\nvar receiveMessage = (graph, prevState, message, keys, decrypt = decryptGraph) => {\n const keyring = createKeyring(keys);\n const their = message;\n assert4(graph.root === their.root, `Can't sync graphs with different roots`);\n const state = {\n ...prevState,\n their: {\n head: their.head,\n need: their.need ?? [],\n encryptedLinks: { ...prevState.their.encryptedLinks, ...their.links },\n parentMap: { ...prevState.their.parentMap, ...their.parentMap }\n }\n };\n if (Object.keys(state.their.encryptedLinks).length > 0) {\n const { head } = their;\n const ourChildMap = getChildMap(graph);\n const theirChildMap = invertLinkMap(state.their.parentMap);\n const childMap = { ...ourChildMap, ...theirChildMap };\n const encryptedLinks = {\n ...graph.encryptedLinks,\n ...state.their.encryptedLinks\n };\n const encryptedGraph = {\n ...graph,\n head,\n encryptedLinks,\n childMap\n };\n const theirGraph = decrypt({ encryptedGraph, keys: keyring });\n const mergedGraph = merge(graph, theirGraph);\n const validation = validate(mergedGraph);\n if (validation.isValid) {\n graph = mergedGraph;\n } else {\n state.failedSyncCount += 1;\n state.our.reportedError = validation.error;\n }\n state.their.encryptedLinks = {};\n state.their.parentMap = {};\n }\n return [graph, state];\n};\n\n// src/user/createUser.ts\nimport { randomKey as randomKey2 } from \"@localfirst/crypto\";\nimport { createId as createId2 } from \"@paralleldrive/cuid2\";\nvar createUser = (userName, userId = createId2(), seed = randomKey2()) => {\n return {\n userName,\n userId,\n keys: createKeyset({ type: KeyType.USER, name: userId }, seed)\n };\n};\n\n// src/user/redact.ts\nvar redactUser = (user) => {\n const { userId, userName } = user;\n return {\n userId,\n userName,\n keys: redactKeys(user.keys)\n };\n};\nexport {\n EMPTY,\n EMPTY_GRAPH,\n ENCRYPTION,\n EPHEMERAL_SCOPE,\n HashPurpose,\n KeyType,\n LINK_HASH,\n MERGE,\n ROOT,\n SIGNATURE,\n SYMMETRIC,\n Store,\n VALID,\n ValidationError,\n append,\n baseResolver,\n byHash,\n calculateConcurrency,\n createGraph,\n createKeyring,\n createKeyset,\n createStore,\n createUser,\n decryptGraph,\n decryptLink,\n deserialize,\n fail,\n generateMessage,\n getChildMap,\n getChildren,\n getChildrenHashes,\n getConcurrentBubbles,\n getConcurrentHashes,\n getConcurrentLinks,\n getEncryptedLink,\n getEncryptedLinks,\n getHashes,\n getHead,\n getLatestGeneration,\n getLink,\n getParentMap,\n getParents,\n getPredecessorHashes,\n getPredecessors,\n getRoot,\n getSequence,\n getSuccessorHashes,\n getSuccessors,\n getTails,\n hasSecrets,\n headsAreEqual,\n initSyncState,\n invertLinkMap,\n isConcurrent,\n isKeyring,\n isKeyset,\n isPredecessor,\n isPredecessorHash,\n isSuccessor,\n isSuccessorHash,\n makeMachine,\n memoizeResolver,\n merge,\n noFilter,\n receiveMessage,\n redactGraph,\n redactKeys,\n redactUser,\n serialize,\n topoSort,\n validate,\n validators\n};\n//# sourceMappingURL=index.js.map","// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n}\nfunction getDevTools() {\n const w = getGlobal();\n if (!!w.__xstate__) {\n return w.__xstate__;\n }\n return undefined;\n}\nfunction registerService(service) {\n if (typeof window === 'undefined') {\n return;\n }\n const devTools = getDevTools();\n if (devTools) {\n devTools.register(service);\n }\n}\nconst devToolsAdapter = service => {\n if (typeof window === 'undefined') {\n return;\n }\n const devTools = getDevTools();\n if (devTools) {\n devTools.register(service);\n }\n};\n\nexport { devToolsAdapter, getGlobal, registerService };\n","import { devToolsAdapter } from '../dev/dist/xstate-dev.esm.js';\n\nclass Mailbox {\n constructor(_process) {\n this._process = _process;\n this._active = false;\n this._current = null;\n this._last = null;\n }\n start() {\n this._active = true;\n this.flush();\n }\n clear() {\n // we can't set _current to null because we might be currently processing\n // and enqueue following clear shouldnt start processing the enqueued item immediately\n if (this._current) {\n this._current.next = null;\n this._last = this._current;\n }\n }\n enqueue(event) {\n const enqueued = {\n value: event,\n next: null\n };\n if (this._current) {\n this._last.next = enqueued;\n this._last = enqueued;\n return;\n }\n this._current = enqueued;\n this._last = enqueued;\n if (this._active) {\n this.flush();\n }\n }\n flush() {\n while (this._current) {\n // atm the given _process is responsible for implementing proper try/catch handling\n // we assume here that this won't throw in a way that can affect this mailbox\n const consumed = this._current;\n this._process(consumed.value);\n this._current = consumed.next;\n }\n this._last = null;\n }\n}\n\nconst STATE_DELIMITER = '.';\nconst TARGETLESS_KEY = '';\nconst NULL_EVENT = '';\nconst STATE_IDENTIFIER = '#';\nconst WILDCARD = '*';\nconst XSTATE_INIT = 'xstate.init';\nconst XSTATE_ERROR = 'xstate.error';\nconst XSTATE_STOP = 'xstate.stop';\n\n/**\n * Returns an event that represents an implicit event that is sent after the\n * specified `delay`.\n *\n * @param delayRef The delay in milliseconds\n * @param id The state node ID where this event is handled\n */\nfunction createAfterEvent(delayRef, id) {\n return {\n type: `xstate.after.${delayRef}.${id}`\n };\n}\n\n/**\n * Returns an event that represents that a final state node has been reached in\n * the parent state node.\n *\n * @param id The final state node's parent state node `id`\n * @param output The data to pass into the event\n */\nfunction createDoneStateEvent(id, output) {\n return {\n type: `xstate.done.state.${id}`,\n output\n };\n}\n\n/**\n * Returns an event that represents that an invoked service has terminated.\n *\n * An invoked service is terminated when it has reached a top-level final state\n * node, but not when it is canceled.\n *\n * @param invokeId The invoked service ID\n * @param output The data to pass into the event\n */\nfunction createDoneActorEvent(invokeId, output) {\n return {\n type: `xstate.done.actor.${invokeId}`,\n output,\n actorId: invokeId\n };\n}\nfunction createErrorActorEvent(id, error) {\n return {\n type: `xstate.error.actor.${id}`,\n error,\n actorId: id\n };\n}\nfunction createInitEvent(input) {\n return {\n type: XSTATE_INIT,\n input\n };\n}\n\n/**\n * This function makes sure that unhandled errors are thrown in a separate\n * macrotask. It allows those errors to be detected by global error handlers and\n * reported to bug tracking services without interrupting our own stack of\n * execution.\n *\n * @param err Error to be thrown\n */\nfunction reportUnhandledError(err) {\n setTimeout(() => {\n throw err;\n });\n}\n\nconst symbolObservable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n\nfunction matchesState(parentStateId, childStateId) {\n const parentStateValue = toStateValue(parentStateId);\n const childStateValue = toStateValue(childStateId);\n if (typeof childStateValue === 'string') {\n if (typeof parentStateValue === 'string') {\n return childStateValue === parentStateValue;\n }\n\n // Parent more specific than child\n return false;\n }\n if (typeof parentStateValue === 'string') {\n return parentStateValue in childStateValue;\n }\n return Object.keys(parentStateValue).every(key => {\n if (!(key in childStateValue)) {\n return false;\n }\n return matchesState(parentStateValue[key], childStateValue[key]);\n });\n}\nfunction toStatePath(stateId) {\n if (isArray(stateId)) {\n return stateId;\n }\n let result = [];\n let segment = '';\n for (let i = 0; i < stateId.length; i++) {\n const char = stateId.charCodeAt(i);\n switch (char) {\n // \\\n case 92:\n // consume the next character\n segment += stateId[i + 1];\n // and skip over it\n i++;\n continue;\n // .\n case 46:\n result.push(segment);\n segment = '';\n continue;\n }\n segment += stateId[i];\n }\n result.push(segment);\n return result;\n}\nfunction toStateValue(stateValue) {\n if (isMachineSnapshot(stateValue)) {\n return stateValue.value;\n }\n if (typeof stateValue !== 'string') {\n return stateValue;\n }\n const statePath = toStatePath(stateValue);\n return pathToStateValue(statePath);\n}\nfunction pathToStateValue(statePath) {\n if (statePath.length === 1) {\n return statePath[0];\n }\n const value = {};\n let marker = value;\n for (let i = 0; i < statePath.length - 1; i++) {\n if (i === statePath.length - 2) {\n marker[statePath[i]] = statePath[i + 1];\n } else {\n const previous = marker;\n marker = {};\n previous[statePath[i]] = marker;\n }\n }\n return value;\n}\nfunction mapValues(collection, iteratee) {\n const result = {};\n const collectionKeys = Object.keys(collection);\n for (let i = 0; i < collectionKeys.length; i++) {\n const key = collectionKeys[i];\n result[key] = iteratee(collection[key], key, collection, i);\n }\n return result;\n}\nfunction toArrayStrict(value) {\n if (isArray(value)) {\n return value;\n }\n return [value];\n}\nfunction toArray(value) {\n if (value === undefined) {\n return [];\n }\n return toArrayStrict(value);\n}\nfunction resolveOutput(mapper, context, event, self) {\n if (typeof mapper === 'function') {\n return mapper({\n context,\n event,\n self\n });\n }\n return mapper;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isErrorActorEvent(event) {\n return event.type.startsWith('xstate.error.actor');\n}\nfunction toTransitionConfigArray(configLike) {\n return toArrayStrict(configLike).map(transitionLike => {\n if (typeof transitionLike === 'undefined' || typeof transitionLike === 'string') {\n return {\n target: transitionLike\n };\n }\n return transitionLike;\n });\n}\nfunction normalizeTarget(target) {\n if (target === undefined || target === TARGETLESS_KEY) {\n return undefined;\n }\n return toArray(target);\n}\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n const isObserver = typeof nextHandler === 'object';\n const self = isObserver ? nextHandler : undefined;\n return {\n next: (isObserver ? nextHandler.next : nextHandler)?.bind(self),\n error: (isObserver ? nextHandler.error : errorHandler)?.bind(self),\n complete: (isObserver ? nextHandler.complete : completionHandler)?.bind(self)\n };\n}\nfunction createInvokeId(stateNodeId, index) {\n return `${index}.${stateNodeId}`;\n}\nfunction resolveReferencedActor(machine, src) {\n const match = src.match(/^xstate\\.invoke\\.(\\d+)\\.(.*)/);\n if (!match) {\n return machine.implementations.actors[src];\n }\n const [, indexStr, nodeId] = match;\n const node = machine.getStateNodeById(nodeId);\n const invokeConfig = node.config.invoke;\n return (Array.isArray(invokeConfig) ? invokeConfig[indexStr] : invokeConfig).src;\n}\nfunction getAllOwnEventDescriptors(snapshot) {\n return [...new Set([...snapshot._nodes.flatMap(sn => sn.ownEvents)])];\n}\n\nfunction createScheduledEventId(actorRef, id) {\n return `${actorRef.sessionId}.${id}`;\n}\nlet idCounter = 0;\nfunction createSystem(rootActor, options) {\n const children = new Map();\n const keyedActors = new Map();\n const reverseKeyedActors = new WeakMap();\n const inspectionObservers = new Set();\n const timerMap = {};\n const {\n clock,\n logger\n } = options;\n const scheduler = {\n schedule: (source, target, event, delay, id = Math.random().toString(36).slice(2)) => {\n const scheduledEvent = {\n source,\n target,\n event,\n delay,\n id,\n startedAt: Date.now()\n };\n const scheduledEventId = createScheduledEventId(source, id);\n system._snapshot._scheduledEvents[scheduledEventId] = scheduledEvent;\n const timeout = clock.setTimeout(() => {\n delete timerMap[scheduledEventId];\n delete system._snapshot._scheduledEvents[scheduledEventId];\n system._relay(source, target, event);\n }, delay);\n timerMap[scheduledEventId] = timeout;\n },\n cancel: (source, id) => {\n const scheduledEventId = createScheduledEventId(source, id);\n const timeout = timerMap[scheduledEventId];\n delete timerMap[scheduledEventId];\n delete system._snapshot._scheduledEvents[scheduledEventId];\n if (timeout !== undefined) {\n clock.clearTimeout(timeout);\n }\n },\n cancelAll: actorRef => {\n for (const scheduledEventId in system._snapshot._scheduledEvents) {\n const scheduledEvent = system._snapshot._scheduledEvents[scheduledEventId];\n if (scheduledEvent.source === actorRef) {\n scheduler.cancel(actorRef, scheduledEvent.id);\n }\n }\n }\n };\n const sendInspectionEvent = event => {\n if (!inspectionObservers.size) {\n return;\n }\n const resolvedInspectionEvent = {\n ...event,\n rootId: rootActor.sessionId\n };\n inspectionObservers.forEach(observer => observer.next?.(resolvedInspectionEvent));\n };\n const system = {\n _snapshot: {\n _scheduledEvents: (options?.snapshot && options.snapshot.scheduler) ?? {}\n },\n _bookId: () => `x:${idCounter++}`,\n _register: (sessionId, actorRef) => {\n children.set(sessionId, actorRef);\n return sessionId;\n },\n _unregister: actorRef => {\n children.delete(actorRef.sessionId);\n const systemId = reverseKeyedActors.get(actorRef);\n if (systemId !== undefined) {\n keyedActors.delete(systemId);\n reverseKeyedActors.delete(actorRef);\n }\n },\n get: systemId => {\n return keyedActors.get(systemId);\n },\n _set: (systemId, actorRef) => {\n const existing = keyedActors.get(systemId);\n if (existing && existing !== actorRef) {\n throw new Error(`Actor with system ID '${systemId}' already exists.`);\n }\n keyedActors.set(systemId, actorRef);\n reverseKeyedActors.set(actorRef, systemId);\n },\n inspect: observerOrFn => {\n const observer = toObserver(observerOrFn);\n inspectionObservers.add(observer);\n return {\n unsubscribe() {\n inspectionObservers.delete(observer);\n }\n };\n },\n _sendInspectionEvent: sendInspectionEvent,\n _relay: (source, target, event) => {\n system._sendInspectionEvent({\n type: '@xstate.event',\n sourceRef: source,\n actorRef: target,\n event\n });\n target._send(event);\n },\n scheduler,\n getSnapshot: () => {\n return {\n _scheduledEvents: {\n ...system._snapshot._scheduledEvents\n }\n };\n },\n start: () => {\n const scheduledEvents = system._snapshot._scheduledEvents;\n system._snapshot._scheduledEvents = {};\n for (const scheduledId in scheduledEvents) {\n const {\n source,\n target,\n event,\n delay,\n id\n } = scheduledEvents[scheduledId];\n scheduler.schedule(source, target, event, delay, id);\n }\n },\n _clock: clock,\n _logger: logger\n };\n return system;\n}\n\nconst $$ACTOR_TYPE = 1;\n\n// those values are currently used by @xstate/react directly so it's important to keep the assigned values in sync\nlet ProcessingStatus = /*#__PURE__*/function (ProcessingStatus) {\n ProcessingStatus[ProcessingStatus[\"NotStarted\"] = 0] = \"NotStarted\";\n ProcessingStatus[ProcessingStatus[\"Running\"] = 1] = \"Running\";\n ProcessingStatus[ProcessingStatus[\"Stopped\"] = 2] = \"Stopped\";\n return ProcessingStatus;\n}({});\nconst defaultOptions = {\n clock: {\n setTimeout: (fn, ms) => {\n return setTimeout(fn, ms);\n },\n clearTimeout: id => {\n return clearTimeout(id);\n }\n },\n logger: console.log.bind(console),\n devTools: false\n};\n\n/**\n * An Actor is a running process that can receive events, send events and change\n * its behavior based on the events it receives, which can cause effects outside\n * of the actor. When you run a state machine, it becomes an actor.\n */\nclass Actor {\n /**\n * Creates a new actor instance for the given logic with the provided options,\n * if any.\n *\n * @param logic The logic to create an actor from\n * @param options Actor options\n */\n constructor(logic, options) {\n this.logic = logic;\n /** The current internal state of the actor. */\n this._snapshot = void 0;\n /**\n * The clock that is responsible for setting and clearing timeouts, such as\n * delayed events and transitions.\n */\n this.clock = void 0;\n this.options = void 0;\n /** The unique identifier for this actor relative to its parent. */\n this.id = void 0;\n this.mailbox = new Mailbox(this._process.bind(this));\n this.observers = new Set();\n this.eventListeners = new Map();\n this.logger = void 0;\n /** @internal */\n this._processingStatus = ProcessingStatus.NotStarted;\n // Actor Ref\n this._parent = void 0;\n /** @internal */\n this._syncSnapshot = void 0;\n this.ref = void 0;\n // TODO: add typings for system\n this._actorScope = void 0;\n this._systemId = void 0;\n /** The globally unique process ID for this invocation. */\n this.sessionId = void 0;\n /** The system to which this actor belongs. */\n this.system = void 0;\n this._doneEvent = void 0;\n this.src = void 0;\n // array of functions to defer\n this._deferred = [];\n const resolvedOptions = {\n ...defaultOptions,\n ...options\n };\n const {\n clock,\n logger,\n parent,\n syncSnapshot,\n id,\n systemId,\n inspect\n } = resolvedOptions;\n this.system = parent ? parent.system : createSystem(this, {\n clock,\n logger\n });\n if (inspect && !parent) {\n // Always inspect at the system-level\n this.system.inspect(toObserver(inspect));\n }\n this.sessionId = this.system._bookId();\n this.id = id ?? this.sessionId;\n this.logger = options?.logger ?? this.system._logger;\n this.clock = options?.clock ?? this.system._clock;\n this._parent = parent;\n this._syncSnapshot = syncSnapshot;\n this.options = resolvedOptions;\n this.src = resolvedOptions.src ?? logic;\n this.ref = this;\n this._actorScope = {\n self: this,\n id: this.id,\n sessionId: this.sessionId,\n logger: this.logger,\n defer: fn => {\n this._deferred.push(fn);\n },\n system: this.system,\n stopChild: child => {\n if (child._parent !== this) {\n throw new Error(`Cannot stop child actor ${child.id} of ${this.id} because it is not a child`);\n }\n child._stop();\n },\n emit: emittedEvent => {\n const listeners = this.eventListeners.get(emittedEvent.type);\n const wildcardListener = this.eventListeners.get('*');\n if (!listeners && !wildcardListener) {\n return;\n }\n const allListeners = new Set([...(listeners ? listeners.values() : []), ...(wildcardListener ? wildcardListener.values() : [])]);\n for (const handler of Array.from(allListeners)) {\n handler(emittedEvent);\n }\n }\n };\n\n // Ensure that the send method is bound to this Actor instance\n // if destructured\n this.send = this.send.bind(this);\n this.system._sendInspectionEvent({\n type: '@xstate.actor',\n actorRef: this\n });\n if (systemId) {\n this._systemId = systemId;\n this.system._set(systemId, this);\n }\n this._initState(options?.snapshot ?? options?.state);\n if (systemId && this._snapshot.status !== 'active') {\n this.system._unregister(this);\n }\n }\n _initState(persistedState) {\n try {\n this._snapshot = persistedState ? this.logic.restoreSnapshot ? this.logic.restoreSnapshot(persistedState, this._actorScope) : persistedState : this.logic.getInitialSnapshot(this._actorScope, this.options?.input);\n } catch (err) {\n // if we get here then it means that we assign a value to this._snapshot that is not of the correct type\n // we can't get the true `TSnapshot & { status: 'error'; }`, it's impossible\n // so right now this is a lie of sorts\n this._snapshot = {\n status: 'error',\n output: undefined,\n error: err\n };\n }\n }\n update(snapshot, event) {\n // Update state\n this._snapshot = snapshot;\n\n // Execute deferred effects\n let deferredFn;\n while (deferredFn = this._deferred.shift()) {\n try {\n deferredFn();\n } catch (err) {\n // this error can only be caught when executing *initial* actions\n // it's the only time when we call actions provided by the user through those deferreds\n // when the actor is already running we always execute them synchronously while transitioning\n // no \"builtin deferred\" should actually throw an error since they are either safe\n // or the control flow is passed through the mailbox and errors should be caught by the `_process` used by the mailbox\n this._deferred.length = 0;\n this._snapshot = {\n ...snapshot,\n status: 'error',\n error: err\n };\n }\n }\n switch (this._snapshot.status) {\n case 'active':\n for (const observer of this.observers) {\n try {\n observer.next?.(snapshot);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n break;\n case 'done':\n // next observers are meant to be notified about done snapshots\n // this can be seen as something that is different from how observable work\n // but with observables `complete` callback is called without any arguments\n // it's more ergonomic for XState to treat a done snapshot as a \"next\" value\n // and the completion event as something that is separate,\n // something that merely follows emitting that done snapshot\n for (const observer of this.observers) {\n try {\n observer.next?.(snapshot);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n this._stopProcedure();\n this._complete();\n this._doneEvent = createDoneActorEvent(this.id, this._snapshot.output);\n if (this._parent) {\n this.system._relay(this, this._parent, this._doneEvent);\n }\n break;\n case 'error':\n this._error(this._snapshot.error);\n break;\n }\n this.system._sendInspectionEvent({\n type: '@xstate.snapshot',\n actorRef: this,\n event,\n snapshot\n });\n }\n\n /**\n * Subscribe an observer to an actor’s snapshot values.\n *\n * @remarks\n * The observer will receive the actor’s snapshot value when it is emitted.\n * The observer can be:\n *\n * - A plain function that receives the latest snapshot, or\n * - An observer object whose `.next(snapshot)` method receives the latest\n * snapshot\n *\n * @example\n *\n * ```ts\n * // Observer as a plain function\n * const subscription = actor.subscribe((snapshot) => {\n * console.log(snapshot);\n * });\n * ```\n *\n * @example\n *\n * ```ts\n * // Observer as an object\n * const subscription = actor.subscribe({\n * next(snapshot) {\n * console.log(snapshot);\n * },\n * error(err) {\n * // ...\n * },\n * complete() {\n * // ...\n * }\n * });\n * ```\n *\n * The return value of `actor.subscribe(observer)` is a subscription object\n * that has an `.unsubscribe()` method. You can call\n * `subscription.unsubscribe()` to unsubscribe the observer:\n *\n * @example\n *\n * ```ts\n * const subscription = actor.subscribe((snapshot) => {\n * // ...\n * });\n *\n * // Unsubscribe the observer\n * subscription.unsubscribe();\n * ```\n *\n * When the actor is stopped, all of its observers will automatically be\n * unsubscribed.\n *\n * @param observer - Either a plain function that receives the latest\n * snapshot, or an observer object whose `.next(snapshot)` method receives\n * the latest snapshot\n */\n\n subscribe(nextListenerOrObserver, errorListener, completeListener) {\n const observer = toObserver(nextListenerOrObserver, errorListener, completeListener);\n if (this._processingStatus !== ProcessingStatus.Stopped) {\n this.observers.add(observer);\n } else {\n switch (this._snapshot.status) {\n case 'done':\n try {\n observer.complete?.();\n } catch (err) {\n reportUnhandledError(err);\n }\n break;\n case 'error':\n {\n const err = this._snapshot.error;\n if (!observer.error) {\n reportUnhandledError(err);\n } else {\n try {\n observer.error(err);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n break;\n }\n }\n }\n return {\n unsubscribe: () => {\n this.observers.delete(observer);\n }\n };\n }\n on(type, handler) {\n let listeners = this.eventListeners.get(type);\n if (!listeners) {\n listeners = new Set();\n this.eventListeners.set(type, listeners);\n }\n const wrappedHandler = handler.bind(undefined);\n listeners.add(wrappedHandler);\n return {\n unsubscribe: () => {\n listeners.delete(wrappedHandler);\n }\n };\n }\n\n /** Starts the Actor from the initial state */\n start() {\n if (this._processingStatus === ProcessingStatus.Running) {\n // Do not restart the service if it is already started\n return this;\n }\n if (this._syncSnapshot) {\n this.subscribe({\n next: snapshot => {\n if (snapshot.status === 'active') {\n this.system._relay(this, this._parent, {\n type: `xstate.snapshot.${this.id}`,\n snapshot\n });\n }\n },\n error: () => {}\n });\n }\n this.system._register(this.sessionId, this);\n if (this._systemId) {\n this.system._set(this._systemId, this);\n }\n this._processingStatus = ProcessingStatus.Running;\n\n // TODO: this isn't correct when rehydrating\n const initEvent = createInitEvent(this.options.input);\n this.system._sendInspectionEvent({\n type: '@xstate.event',\n sourceRef: this._parent,\n actorRef: this,\n event: initEvent\n });\n const status = this._snapshot.status;\n switch (status) {\n case 'done':\n // a state machine can be \"done\" upon initialization (it could reach a final state using initial microsteps)\n // we still need to complete observers, flush deferreds etc\n this.update(this._snapshot, initEvent);\n // TODO: rethink cleanup of observers, mailbox, etc\n return this;\n case 'error':\n this._error(this._snapshot.error);\n return this;\n }\n if (!this._parent) {\n this.system.start();\n }\n if (this.logic.start) {\n try {\n this.logic.start(this._snapshot, this._actorScope);\n } catch (err) {\n this._snapshot = {\n ...this._snapshot,\n status: 'error',\n error: err\n };\n this._error(err);\n return this;\n }\n }\n\n // TODO: this notifies all subscribers but usually this is redundant\n // there is no real change happening here\n // we need to rethink if this needs to be refactored\n this.update(this._snapshot, initEvent);\n if (this.options.devTools) {\n this.attachDevTools();\n }\n this.mailbox.start();\n return this;\n }\n _process(event) {\n let nextState;\n let caughtError;\n try {\n nextState = this.logic.transition(this._snapshot, event, this._actorScope);\n } catch (err) {\n // we wrap it in a box so we can rethrow it later even if falsy value gets caught here\n caughtError = {\n err\n };\n }\n if (caughtError) {\n const {\n err\n } = caughtError;\n this._snapshot = {\n ...this._snapshot,\n status: 'error',\n error: err\n };\n this._error(err);\n return;\n }\n this.update(nextState, event);\n if (event.type === XSTATE_STOP) {\n this._stopProcedure();\n this._complete();\n }\n }\n _stop() {\n if (this._processingStatus === ProcessingStatus.Stopped) {\n return this;\n }\n this.mailbox.clear();\n if (this._processingStatus === ProcessingStatus.NotStarted) {\n this._processingStatus = ProcessingStatus.Stopped;\n return this;\n }\n this.mailbox.enqueue({\n type: XSTATE_STOP\n });\n return this;\n }\n\n /** Stops the Actor and unsubscribe all listeners. */\n stop() {\n if (this._parent) {\n throw new Error('A non-root actor cannot be stopped directly.');\n }\n return this._stop();\n }\n _complete() {\n for (const observer of this.observers) {\n try {\n observer.complete?.();\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n this.observers.clear();\n }\n _reportError(err) {\n if (!this.observers.size) {\n if (!this._parent) {\n reportUnhandledError(err);\n }\n return;\n }\n let reportError = false;\n for (const observer of this.observers) {\n const errorListener = observer.error;\n reportError ||= !errorListener;\n try {\n errorListener?.(err);\n } catch (err2) {\n reportUnhandledError(err2);\n }\n }\n this.observers.clear();\n if (reportError) {\n reportUnhandledError(err);\n }\n }\n _error(err) {\n this._stopProcedure();\n this._reportError(err);\n if (this._parent) {\n this.system._relay(this, this._parent, createErrorActorEvent(this.id, err));\n }\n }\n // TODO: atm children don't belong entirely to the actor so\n // in a way - it's not even super aware of them\n // so we can't stop them from here but we really should!\n // right now, they are being stopped within the machine's transition\n // but that could throw and leave us with \"orphaned\" active actors\n _stopProcedure() {\n if (this._processingStatus !== ProcessingStatus.Running) {\n // Actor already stopped; do nothing\n return this;\n }\n\n // Cancel all delayed events\n this.system.scheduler.cancelAll(this);\n\n // TODO: mailbox.reset\n this.mailbox.clear();\n // TODO: after `stop` we must prepare ourselves for receiving events again\n // events sent *after* stop signal must be queued\n // it seems like this should be the common behavior for all of our consumers\n // so perhaps this should be unified somehow for all of them\n this.mailbox = new Mailbox(this._process.bind(this));\n this._processingStatus = ProcessingStatus.Stopped;\n this.system._unregister(this);\n return this;\n }\n\n /** @internal */\n _send(event) {\n if (this._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n this.mailbox.enqueue(event);\n }\n\n /**\n * Sends an event to the running Actor to trigger a transition.\n *\n * @param event The event to send\n */\n send(event) {\n this.system._relay(undefined, this, event);\n }\n attachDevTools() {\n const {\n devTools\n } = this.options;\n if (devTools) {\n const resolvedDevToolsAdapter = typeof devTools === 'function' ? devTools : devToolsAdapter;\n resolvedDevToolsAdapter(this);\n }\n }\n toJSON() {\n return {\n xstate$$type: $$ACTOR_TYPE,\n id: this.id\n };\n }\n\n /**\n * Obtain the internal state of the actor, which can be persisted.\n *\n * @remarks\n * The internal state can be persisted from any actor, not only machines.\n *\n * Note that the persisted state is not the same as the snapshot from\n * {@link Actor.getSnapshot}. Persisted state represents the internal state of\n * the actor, while snapshots represent the actor's last emitted value.\n *\n * Can be restored with {@link ActorOptions.state}\n * @see https://stately.ai/docs/persistence\n */\n\n getPersistedSnapshot(options) {\n return this.logic.getPersistedSnapshot(this._snapshot, options);\n }\n [symbolObservable]() {\n return this;\n }\n\n /**\n * Read an actor’s snapshot synchronously.\n *\n * @remarks\n * The snapshot represent an actor's last emitted value.\n *\n * When an actor receives an event, its internal state may change. An actor\n * may emit a snapshot when a state transition occurs.\n *\n * Note that some actors, such as callback actors generated with\n * `fromCallback`, will not emit snapshots.\n * @see {@link Actor.subscribe} to subscribe to an actor’s snapshot values.\n * @see {@link Actor.getPersistedSnapshot} to persist the internal state of an actor (which is more than just a snapshot).\n */\n getSnapshot() {\n return this._snapshot;\n }\n}\n/**\n * Creates a new actor instance for the given actor logic with the provided\n * options, if any.\n *\n * @remarks\n * When you create an actor from actor logic via `createActor(logic)`, you\n * implicitly create an actor system where the created actor is the root actor.\n * Any actors spawned from this root actor and its descendants are part of that\n * actor system.\n * @example\n *\n * ```ts\n * import { createActor } from 'xstate';\n * import { someActorLogic } from './someActorLogic.ts';\n *\n * // Creating the actor, which implicitly creates an actor system with itself as the root actor\n * const actor = createActor(someActorLogic);\n *\n * actor.subscribe((snapshot) => {\n * console.log(snapshot);\n * });\n *\n * // Actors must be started by calling `actor.start()`, which will also start the actor system.\n * actor.start();\n *\n * // Actors can receive events\n * actor.send({ type: 'someEvent' });\n *\n * // You can stop root actors by calling `actor.stop()`, which will also stop the actor system and all actors in that system.\n * actor.stop();\n * ```\n *\n * @param logic - The actor logic to create an actor from. For a state machine\n * actor logic creator, see {@link createMachine}. Other actor logic creators\n * include {@link fromCallback}, {@link fromEventObservable},\n * {@link fromObservable}, {@link fromPromise}, and {@link fromTransition}.\n * @param options - Actor options\n */\nfunction createActor(logic, ...[options]) {\n return new Actor(logic, options);\n}\n\n/**\n * Creates a new Interpreter instance for the given machine with the provided\n * options, if any.\n *\n * @deprecated Use `createActor` instead\n * @alias\n */\nconst interpret = createActor;\n\n/**\n * @deprecated Use `Actor` instead.\n * @alias\n */\n\nfunction resolveCancel(_, snapshot, actionArgs, actionParams, {\n sendId\n}) {\n const resolvedSendId = typeof sendId === 'function' ? sendId(actionArgs, actionParams) : sendId;\n return [snapshot, resolvedSendId];\n}\nfunction executeCancel(actorScope, resolvedSendId) {\n actorScope.defer(() => {\n actorScope.system.scheduler.cancel(actorScope.self, resolvedSendId);\n });\n}\n/**\n * Cancels a delayed `sendTo(...)` action that is waiting to be executed. The\n * canceled `sendTo(...)` action will not send its event or execute, unless the\n * `delay` has already elapsed before `cancel(...)` is called.\n *\n * @example\n *\n * ```ts\n * import { createMachine, sendTo, cancel } from 'xstate';\n *\n * const machine = createMachine({\n * // ...\n * on: {\n * sendEvent: {\n * actions: sendTo(\n * 'some-actor',\n * { type: 'someEvent' },\n * {\n * id: 'some-id',\n * delay: 1000\n * }\n * )\n * },\n * cancelEvent: {\n * actions: cancel('some-id')\n * }\n * }\n * });\n * ```\n *\n * @param sendId The `id` of the `sendTo(...)` action to cancel.\n */\nfunction cancel(sendId) {\n function cancel(args, params) {\n }\n cancel.type = 'xstate.cancel';\n cancel.sendId = sendId;\n cancel.resolve = resolveCancel;\n cancel.execute = executeCancel;\n return cancel;\n}\n\nfunction resolveSpawn(actorScope, snapshot, actionArgs, _actionParams, {\n id,\n systemId,\n src,\n input,\n syncSnapshot\n}) {\n const logic = typeof src === 'string' ? resolveReferencedActor(snapshot.machine, src) : src;\n const resolvedId = typeof id === 'function' ? id(actionArgs) : id;\n let actorRef;\n if (logic) {\n actorRef = createActor(logic, {\n id: resolvedId,\n src,\n parent: actorScope.self,\n syncSnapshot,\n systemId,\n input: typeof input === 'function' ? input({\n context: snapshot.context,\n event: actionArgs.event,\n self: actorScope.self\n }) : input\n });\n }\n return [cloneMachineSnapshot(snapshot, {\n children: {\n ...snapshot.children,\n [resolvedId]: actorRef\n }\n }), {\n id,\n actorRef\n }];\n}\nfunction executeSpawn(actorScope, {\n id,\n actorRef\n}) {\n if (!actorRef) {\n return;\n }\n actorScope.defer(() => {\n if (actorRef._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n actorRef.start();\n });\n}\nfunction spawnChild(...[src, {\n id,\n systemId,\n input,\n syncSnapshot = false\n} = {}]) {\n function spawnChild(args, params) {\n }\n spawnChild.type = 'snapshot.spawnChild';\n spawnChild.id = id;\n spawnChild.systemId = systemId;\n spawnChild.src = src;\n spawnChild.input = input;\n spawnChild.syncSnapshot = syncSnapshot;\n spawnChild.resolve = resolveSpawn;\n spawnChild.execute = executeSpawn;\n return spawnChild;\n}\n\nfunction resolveStop(_, snapshot, args, actionParams, {\n actorRef\n}) {\n const actorRefOrString = typeof actorRef === 'function' ? actorRef(args, actionParams) : actorRef;\n const resolvedActorRef = typeof actorRefOrString === 'string' ? snapshot.children[actorRefOrString] : actorRefOrString;\n let children = snapshot.children;\n if (resolvedActorRef) {\n children = {\n ...children\n };\n delete children[resolvedActorRef.id];\n }\n return [cloneMachineSnapshot(snapshot, {\n children\n }), resolvedActorRef];\n}\nfunction executeStop(actorScope, actorRef) {\n if (!actorRef) {\n return;\n }\n\n // we need to eagerly unregister it here so a new actor with the same systemId can be registered immediately\n // since we defer actual stopping of the actor but we don't defer actor creations (and we can't do that)\n // this could throw on `systemId` collision, for example, when dealing with reentering transitions\n actorScope.system._unregister(actorRef);\n\n // this allows us to prevent an actor from being started if it gets stopped within the same macrostep\n // this can happen, for example, when the invoking state is being exited immediately by an always transition\n if (actorRef._processingStatus !== ProcessingStatus.Running) {\n actorScope.stopChild(actorRef);\n return;\n }\n // stopping a child enqueues a stop event in the child actor's mailbox\n // we need for all of the already enqueued events to be processed before we stop the child\n // the parent itself might want to send some events to a child (for example from exit actions on the invoking state)\n // and we don't want to ignore those events\n actorScope.defer(() => {\n actorScope.stopChild(actorRef);\n });\n}\n/**\n * Stops a child actor.\n *\n * @param actorRef The actor to stop.\n */\nfunction stopChild(actorRef) {\n function stop(args, params) {\n }\n stop.type = 'xstate.stopChild';\n stop.actorRef = actorRef;\n stop.resolve = resolveStop;\n stop.execute = executeStop;\n return stop;\n}\n\n/**\n * Stops a child actor.\n *\n * @deprecated Use `stopChild(...)` instead\n * @alias\n */\nconst stop = stopChild;\n\nfunction checkStateIn(snapshot, _, {\n stateValue\n}) {\n if (typeof stateValue === 'string' && isStateId(stateValue)) {\n const target = snapshot.machine.getStateNodeById(stateValue);\n return snapshot._nodes.some(sn => sn === target);\n }\n return snapshot.matches(stateValue);\n}\nfunction stateIn(stateValue) {\n function stateIn(args, params) {\n return false;\n }\n stateIn.check = checkStateIn;\n stateIn.stateValue = stateValue;\n return stateIn;\n}\nfunction checkNot(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return !evaluateGuard(guards[0], context, event, snapshot);\n}\n\n/**\n * Higher-order guard that evaluates to `true` if the `guard` passed to it\n * evaluates to `false`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, not } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => false\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: not('someNamedGuard'),\n * actions: () => {\n * // will be executed if guard in `not(...)`\n * // evaluates to `false`\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard\n */\nfunction not(guard) {\n function not(args, params) {\n return false;\n }\n not.check = checkNot;\n not.guards = [guard];\n return not;\n}\nfunction checkAnd(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return guards.every(guard => evaluateGuard(guard, context, event, snapshot));\n}\n\n/**\n * Higher-order guard that evaluates to `true` if all `guards` passed to it\n * evaluate to `true`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, and } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => true\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: and([({ context }) => context.value > 0, 'someNamedGuard']),\n * actions: () => {\n * // will be executed if all guards in `and(...)`\n * // evaluate to true\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard action object\n */\nfunction and(guards) {\n function and(args, params) {\n return false;\n }\n and.check = checkAnd;\n and.guards = guards;\n return and;\n}\nfunction checkOr(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return guards.some(guard => evaluateGuard(guard, context, event, snapshot));\n}\n\n/**\n * Higher-order guard that evaluates to `true` if any of the `guards` passed to\n * it evaluate to `true`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, or } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => true\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: or([({ context }) => context.value > 0, 'someNamedGuard']),\n * actions: () => {\n * // will be executed if any of the guards in `or(...)`\n * // evaluate to true\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard action object\n */\nfunction or(guards) {\n function or(args, params) {\n return false;\n }\n or.check = checkOr;\n or.guards = guards;\n return or;\n}\n\n// TODO: throw on cycles (depth check should be enough)\nfunction evaluateGuard(guard, context, event, snapshot) {\n const {\n machine\n } = snapshot;\n const isInline = typeof guard === 'function';\n const resolved = isInline ? guard : machine.implementations.guards[typeof guard === 'string' ? guard : guard.type];\n if (!isInline && !resolved) {\n throw new Error(`Guard '${typeof guard === 'string' ? guard : guard.type}' is not implemented.'.`);\n }\n if (typeof resolved !== 'function') {\n return evaluateGuard(resolved, context, event, snapshot);\n }\n const guardArgs = {\n context,\n event\n };\n const guardParams = isInline || typeof guard === 'string' ? undefined : 'params' in guard ? typeof guard.params === 'function' ? guard.params({\n context,\n event\n }) : guard.params : undefined;\n if (!('check' in resolved)) {\n // the existing type of `.guards` assumes non-nullable `TExpressionGuard`\n // inline guards expect `TExpressionGuard` to be set to `undefined`\n // it's fine to cast this here, our logic makes sure that we call those 2 \"variants\" correctly\n return resolved(guardArgs, guardParams);\n }\n const builtinGuard = resolved;\n return builtinGuard.check(snapshot, guardArgs, resolved // this holds all params\n );\n}\n\nconst isAtomicStateNode = stateNode => stateNode.type === 'atomic' || stateNode.type === 'final';\nfunction getChildren(stateNode) {\n return Object.values(stateNode.states).filter(sn => sn.type !== 'history');\n}\nfunction getProperAncestors(stateNode, toStateNode) {\n const ancestors = [];\n if (toStateNode === stateNode) {\n return ancestors;\n }\n\n // add all ancestors\n let m = stateNode.parent;\n while (m && m !== toStateNode) {\n ancestors.push(m);\n m = m.parent;\n }\n return ancestors;\n}\nfunction getAllStateNodes(stateNodes) {\n const nodeSet = new Set(stateNodes);\n const adjList = getAdjList(nodeSet);\n\n // add descendants\n for (const s of nodeSet) {\n // if previously active, add existing child nodes\n if (s.type === 'compound' && (!adjList.get(s) || !adjList.get(s).length)) {\n getInitialStateNodesWithTheirAncestors(s).forEach(sn => nodeSet.add(sn));\n } else {\n if (s.type === 'parallel') {\n for (const child of getChildren(s)) {\n if (child.type === 'history') {\n continue;\n }\n if (!nodeSet.has(child)) {\n const initialStates = getInitialStateNodesWithTheirAncestors(child);\n for (const initialStateNode of initialStates) {\n nodeSet.add(initialStateNode);\n }\n }\n }\n }\n }\n }\n\n // add all ancestors\n for (const s of nodeSet) {\n let m = s.parent;\n while (m) {\n nodeSet.add(m);\n m = m.parent;\n }\n }\n return nodeSet;\n}\nfunction getValueFromAdj(baseNode, adjList) {\n const childStateNodes = adjList.get(baseNode);\n if (!childStateNodes) {\n return {}; // todo: fix?\n }\n if (baseNode.type === 'compound') {\n const childStateNode = childStateNodes[0];\n if (childStateNode) {\n if (isAtomicStateNode(childStateNode)) {\n return childStateNode.key;\n }\n } else {\n return {};\n }\n }\n const stateValue = {};\n for (const childStateNode of childStateNodes) {\n stateValue[childStateNode.key] = getValueFromAdj(childStateNode, adjList);\n }\n return stateValue;\n}\nfunction getAdjList(stateNodes) {\n const adjList = new Map();\n for (const s of stateNodes) {\n if (!adjList.has(s)) {\n adjList.set(s, []);\n }\n if (s.parent) {\n if (!adjList.has(s.parent)) {\n adjList.set(s.parent, []);\n }\n adjList.get(s.parent).push(s);\n }\n }\n return adjList;\n}\nfunction getStateValue(rootNode, stateNodes) {\n const config = getAllStateNodes(stateNodes);\n return getValueFromAdj(rootNode, getAdjList(config));\n}\nfunction isInFinalState(stateNodeSet, stateNode) {\n if (stateNode.type === 'compound') {\n return getChildren(stateNode).some(s => s.type === 'final' && stateNodeSet.has(s));\n }\n if (stateNode.type === 'parallel') {\n return getChildren(stateNode).every(sn => isInFinalState(stateNodeSet, sn));\n }\n return stateNode.type === 'final';\n}\nconst isStateId = str => str[0] === STATE_IDENTIFIER;\nfunction getCandidates(stateNode, receivedEventType) {\n const candidates = stateNode.transitions.get(receivedEventType) || [...stateNode.transitions.keys()].filter(eventDescriptor => {\n // check if transition is a wildcard transition,\n // which matches any non-transient events\n if (eventDescriptor === WILDCARD) {\n return true;\n }\n if (!eventDescriptor.endsWith('.*')) {\n return false;\n }\n const partialEventTokens = eventDescriptor.split('.');\n const eventTokens = receivedEventType.split('.');\n for (let tokenIndex = 0; tokenIndex < partialEventTokens.length; tokenIndex++) {\n const partialEventToken = partialEventTokens[tokenIndex];\n const eventToken = eventTokens[tokenIndex];\n if (partialEventToken === '*') {\n const isLastToken = tokenIndex === partialEventTokens.length - 1;\n return isLastToken;\n }\n if (partialEventToken !== eventToken) {\n return false;\n }\n }\n return true;\n }).sort((a, b) => b.length - a.length).flatMap(key => stateNode.transitions.get(key));\n return candidates;\n}\n\n/** All delayed transitions from the config. */\nfunction getDelayedTransitions(stateNode) {\n const afterConfig = stateNode.config.after;\n if (!afterConfig) {\n return [];\n }\n const mutateEntryExit = (delay, i) => {\n const afterEvent = createAfterEvent(delay, stateNode.id);\n const eventType = afterEvent.type;\n stateNode.entry.push(raise(afterEvent, {\n id: eventType,\n delay\n }));\n stateNode.exit.push(cancel(eventType));\n return eventType;\n };\n const delayedTransitions = Object.keys(afterConfig).flatMap((delay, i) => {\n const configTransition = afterConfig[delay];\n const resolvedTransition = typeof configTransition === 'string' ? {\n target: configTransition\n } : configTransition;\n const resolvedDelay = Number.isNaN(+delay) ? delay : +delay;\n const eventType = mutateEntryExit(resolvedDelay);\n return toArray(resolvedTransition).map(transition => ({\n ...transition,\n event: eventType,\n delay: resolvedDelay\n }));\n });\n return delayedTransitions.map(delayedTransition => {\n const {\n delay\n } = delayedTransition;\n return {\n ...formatTransition(stateNode, delayedTransition.event, delayedTransition),\n delay\n };\n });\n}\nfunction formatTransition(stateNode, descriptor, transitionConfig) {\n const normalizedTarget = normalizeTarget(transitionConfig.target);\n const reenter = transitionConfig.reenter ?? false;\n const target = resolveTarget(stateNode, normalizedTarget);\n const transition = {\n ...transitionConfig,\n actions: toArray(transitionConfig.actions),\n guard: transitionConfig.guard,\n target,\n source: stateNode,\n reenter,\n eventType: descriptor,\n toJSON: () => ({\n ...transition,\n source: `#${stateNode.id}`,\n target: target ? target.map(t => `#${t.id}`) : undefined\n })\n };\n return transition;\n}\nfunction formatTransitions(stateNode) {\n const transitions = new Map();\n if (stateNode.config.on) {\n for (const descriptor of Object.keys(stateNode.config.on)) {\n if (descriptor === NULL_EVENT) {\n throw new Error('Null events (\"\") cannot be specified as a transition key. Use `always: { ... }` instead.');\n }\n const transitionsConfig = stateNode.config.on[descriptor];\n transitions.set(descriptor, toTransitionConfigArray(transitionsConfig).map(t => formatTransition(stateNode, descriptor, t)));\n }\n }\n if (stateNode.config.onDone) {\n const descriptor = `xstate.done.state.${stateNode.id}`;\n transitions.set(descriptor, toTransitionConfigArray(stateNode.config.onDone).map(t => formatTransition(stateNode, descriptor, t)));\n }\n for (const invokeDef of stateNode.invoke) {\n if (invokeDef.onDone) {\n const descriptor = `xstate.done.actor.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onDone).map(t => formatTransition(stateNode, descriptor, t)));\n }\n if (invokeDef.onError) {\n const descriptor = `xstate.error.actor.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onError).map(t => formatTransition(stateNode, descriptor, t)));\n }\n if (invokeDef.onSnapshot) {\n const descriptor = `xstate.snapshot.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onSnapshot).map(t => formatTransition(stateNode, descriptor, t)));\n }\n }\n for (const delayedTransition of stateNode.after) {\n let existing = transitions.get(delayedTransition.eventType);\n if (!existing) {\n existing = [];\n transitions.set(delayedTransition.eventType, existing);\n }\n existing.push(delayedTransition);\n }\n return transitions;\n}\nfunction formatInitialTransition(stateNode, _target) {\n const resolvedTarget = typeof _target === 'string' ? stateNode.states[_target] : _target ? stateNode.states[_target.target] : undefined;\n if (!resolvedTarget && _target) {\n throw new Error(`Initial state node \"${_target}\" not found on parent state node #${stateNode.id}`);\n }\n const transition = {\n source: stateNode,\n actions: !_target || typeof _target === 'string' ? [] : toArray(_target.actions),\n eventType: null,\n reenter: false,\n target: resolvedTarget ? [resolvedTarget] : [],\n toJSON: () => ({\n ...transition,\n source: `#${stateNode.id}`,\n target: resolvedTarget ? [`#${resolvedTarget.id}`] : []\n })\n };\n return transition;\n}\nfunction resolveTarget(stateNode, targets) {\n if (targets === undefined) {\n // an undefined target signals that the state node should not transition from that state when receiving that event\n return undefined;\n }\n return targets.map(target => {\n if (typeof target !== 'string') {\n return target;\n }\n if (isStateId(target)) {\n return stateNode.machine.getStateNodeById(target);\n }\n const isInternalTarget = target[0] === STATE_DELIMITER;\n // If internal target is defined on machine,\n // do not include machine key on target\n if (isInternalTarget && !stateNode.parent) {\n return getStateNodeByPath(stateNode, target.slice(1));\n }\n const resolvedTarget = isInternalTarget ? stateNode.key + target : target;\n if (stateNode.parent) {\n try {\n const targetStateNode = getStateNodeByPath(stateNode.parent, resolvedTarget);\n return targetStateNode;\n } catch (err) {\n throw new Error(`Invalid transition definition for state node '${stateNode.id}':\\n${err.message}`);\n }\n } else {\n throw new Error(`Invalid target: \"${target}\" is not a valid target from the root node. Did you mean \".${target}\"?`);\n }\n });\n}\nfunction resolveHistoryDefaultTransition(stateNode) {\n const normalizedTarget = normalizeTarget(stateNode.config.target);\n if (!normalizedTarget) {\n return stateNode.parent.initial;\n }\n return {\n target: normalizedTarget.map(t => typeof t === 'string' ? getStateNodeByPath(stateNode.parent, t) : t)\n };\n}\nfunction isHistoryNode(stateNode) {\n return stateNode.type === 'history';\n}\nfunction getInitialStateNodesWithTheirAncestors(stateNode) {\n const states = getInitialStateNodes(stateNode);\n for (const initialState of states) {\n for (const ancestor of getProperAncestors(initialState, stateNode)) {\n states.add(ancestor);\n }\n }\n return states;\n}\nfunction getInitialStateNodes(stateNode) {\n const set = new Set();\n function iter(descStateNode) {\n if (set.has(descStateNode)) {\n return;\n }\n set.add(descStateNode);\n if (descStateNode.type === 'compound') {\n iter(descStateNode.initial.target[0]);\n } else if (descStateNode.type === 'parallel') {\n for (const child of getChildren(descStateNode)) {\n iter(child);\n }\n }\n }\n iter(stateNode);\n return set;\n}\n/** Returns the child state node from its relative `stateKey`, or throws. */\nfunction getStateNode(stateNode, stateKey) {\n if (isStateId(stateKey)) {\n return stateNode.machine.getStateNodeById(stateKey);\n }\n if (!stateNode.states) {\n throw new Error(`Unable to retrieve child state '${stateKey}' from '${stateNode.id}'; no child states exist.`);\n }\n const result = stateNode.states[stateKey];\n if (!result) {\n throw new Error(`Child state '${stateKey}' does not exist on '${stateNode.id}'`);\n }\n return result;\n}\n\n/**\n * Returns the relative state node from the given `statePath`, or throws.\n *\n * @param statePath The string or string array relative path to the state node.\n */\nfunction getStateNodeByPath(stateNode, statePath) {\n if (typeof statePath === 'string' && isStateId(statePath)) {\n try {\n return stateNode.machine.getStateNodeById(statePath);\n } catch (e) {\n // try individual paths\n // throw e;\n }\n }\n const arrayStatePath = toStatePath(statePath).slice();\n let currentStateNode = stateNode;\n while (arrayStatePath.length) {\n const key = arrayStatePath.shift();\n if (!key.length) {\n break;\n }\n currentStateNode = getStateNode(currentStateNode, key);\n }\n return currentStateNode;\n}\n\n/**\n * Returns the state nodes represented by the current state value.\n *\n * @param stateValue The state value or State instance\n */\nfunction getStateNodes(stateNode, stateValue) {\n if (typeof stateValue === 'string') {\n const childStateNode = stateNode.states[stateValue];\n if (!childStateNode) {\n throw new Error(`State '${stateValue}' does not exist on '${stateNode.id}'`);\n }\n return [stateNode, childStateNode];\n }\n const childStateKeys = Object.keys(stateValue);\n const childStateNodes = childStateKeys.map(subStateKey => getStateNode(stateNode, subStateKey)).filter(Boolean);\n return [stateNode.machine.root, stateNode].concat(childStateNodes, childStateKeys.reduce((allSubStateNodes, subStateKey) => {\n const subStateNode = getStateNode(stateNode, subStateKey);\n if (!subStateNode) {\n return allSubStateNodes;\n }\n const subStateNodes = getStateNodes(subStateNode, stateValue[subStateKey]);\n return allSubStateNodes.concat(subStateNodes);\n }, []));\n}\nfunction transitionAtomicNode(stateNode, stateValue, snapshot, event) {\n const childStateNode = getStateNode(stateNode, stateValue);\n const next = childStateNode.next(snapshot, event);\n if (!next || !next.length) {\n return stateNode.next(snapshot, event);\n }\n return next;\n}\nfunction transitionCompoundNode(stateNode, stateValue, snapshot, event) {\n const subStateKeys = Object.keys(stateValue);\n const childStateNode = getStateNode(stateNode, subStateKeys[0]);\n const next = transitionNode(childStateNode, stateValue[subStateKeys[0]], snapshot, event);\n if (!next || !next.length) {\n return stateNode.next(snapshot, event);\n }\n return next;\n}\nfunction transitionParallelNode(stateNode, stateValue, snapshot, event) {\n const allInnerTransitions = [];\n for (const subStateKey of Object.keys(stateValue)) {\n const subStateValue = stateValue[subStateKey];\n if (!subStateValue) {\n continue;\n }\n const subStateNode = getStateNode(stateNode, subStateKey);\n const innerTransitions = transitionNode(subStateNode, subStateValue, snapshot, event);\n if (innerTransitions) {\n allInnerTransitions.push(...innerTransitions);\n }\n }\n if (!allInnerTransitions.length) {\n return stateNode.next(snapshot, event);\n }\n return allInnerTransitions;\n}\nfunction transitionNode(stateNode, stateValue, snapshot, event) {\n // leaf node\n if (typeof stateValue === 'string') {\n return transitionAtomicNode(stateNode, stateValue, snapshot, event);\n }\n\n // compound node\n if (Object.keys(stateValue).length === 1) {\n return transitionCompoundNode(stateNode, stateValue, snapshot, event);\n }\n\n // parallel node\n return transitionParallelNode(stateNode, stateValue, snapshot, event);\n}\nfunction getHistoryNodes(stateNode) {\n return Object.keys(stateNode.states).map(key => stateNode.states[key]).filter(sn => sn.type === 'history');\n}\nfunction isDescendant(childStateNode, parentStateNode) {\n let marker = childStateNode;\n while (marker.parent && marker.parent !== parentStateNode) {\n marker = marker.parent;\n }\n return marker.parent === parentStateNode;\n}\nfunction hasIntersection(s1, s2) {\n const set1 = new Set(s1);\n const set2 = new Set(s2);\n for (const item of set1) {\n if (set2.has(item)) {\n return true;\n }\n }\n for (const item of set2) {\n if (set1.has(item)) {\n return true;\n }\n }\n return false;\n}\nfunction removeConflictingTransitions(enabledTransitions, stateNodeSet, historyValue) {\n const filteredTransitions = new Set();\n for (const t1 of enabledTransitions) {\n let t1Preempted = false;\n const transitionsToRemove = new Set();\n for (const t2 of filteredTransitions) {\n if (hasIntersection(computeExitSet([t1], stateNodeSet, historyValue), computeExitSet([t2], stateNodeSet, historyValue))) {\n if (isDescendant(t1.source, t2.source)) {\n transitionsToRemove.add(t2);\n } else {\n t1Preempted = true;\n break;\n }\n }\n }\n if (!t1Preempted) {\n for (const t3 of transitionsToRemove) {\n filteredTransitions.delete(t3);\n }\n filteredTransitions.add(t1);\n }\n }\n return Array.from(filteredTransitions);\n}\nfunction findLeastCommonAncestor(stateNodes) {\n const [head, ...tail] = stateNodes;\n for (const ancestor of getProperAncestors(head, undefined)) {\n if (tail.every(sn => isDescendant(sn, ancestor))) {\n return ancestor;\n }\n }\n}\nfunction getEffectiveTargetStates(transition, historyValue) {\n if (!transition.target) {\n return [];\n }\n const targets = new Set();\n for (const targetNode of transition.target) {\n if (isHistoryNode(targetNode)) {\n if (historyValue[targetNode.id]) {\n for (const node of historyValue[targetNode.id]) {\n targets.add(node);\n }\n } else {\n for (const node of getEffectiveTargetStates(resolveHistoryDefaultTransition(targetNode), historyValue)) {\n targets.add(node);\n }\n }\n } else {\n targets.add(targetNode);\n }\n }\n return [...targets];\n}\nfunction getTransitionDomain(transition, historyValue) {\n const targetStates = getEffectiveTargetStates(transition, historyValue);\n if (!targetStates) {\n return;\n }\n if (!transition.reenter && targetStates.every(target => target === transition.source || isDescendant(target, transition.source))) {\n return transition.source;\n }\n const lca = findLeastCommonAncestor(targetStates.concat(transition.source));\n if (lca) {\n return lca;\n }\n\n // at this point we know that it's a root transition since LCA couldn't be found\n if (transition.reenter) {\n return;\n }\n return transition.source.machine.root;\n}\nfunction computeExitSet(transitions, stateNodeSet, historyValue) {\n const statesToExit = new Set();\n for (const t of transitions) {\n if (t.target?.length) {\n const domain = getTransitionDomain(t, historyValue);\n if (t.reenter && t.source === domain) {\n statesToExit.add(domain);\n }\n for (const stateNode of stateNodeSet) {\n if (isDescendant(stateNode, domain)) {\n statesToExit.add(stateNode);\n }\n }\n }\n }\n return [...statesToExit];\n}\nfunction areStateNodeCollectionsEqual(prevStateNodes, nextStateNodeSet) {\n if (prevStateNodes.length !== nextStateNodeSet.size) {\n return false;\n }\n for (const node of prevStateNodes) {\n if (!nextStateNodeSet.has(node)) {\n return false;\n }\n }\n return true;\n}\n\n/** https://www.w3.org/TR/scxml/#microstepProcedure */\nfunction microstep(transitions, currentSnapshot, actorScope, event, isInitial, internalQueue) {\n if (!transitions.length) {\n return currentSnapshot;\n }\n const mutStateNodeSet = new Set(currentSnapshot._nodes);\n let historyValue = currentSnapshot.historyValue;\n const filteredTransitions = removeConflictingTransitions(transitions, mutStateNodeSet, historyValue);\n let nextState = currentSnapshot;\n\n // Exit states\n if (!isInitial) {\n [nextState, historyValue] = exitStates(nextState, event, actorScope, filteredTransitions, mutStateNodeSet, historyValue, internalQueue);\n }\n\n // Execute transition content\n nextState = resolveActionsAndContext(nextState, event, actorScope, filteredTransitions.flatMap(t => t.actions), internalQueue);\n\n // Enter states\n nextState = enterStates(nextState, event, actorScope, filteredTransitions, mutStateNodeSet, internalQueue, historyValue, isInitial);\n const nextStateNodes = [...mutStateNodeSet];\n if (nextState.status === 'done') {\n nextState = resolveActionsAndContext(nextState, event, actorScope, nextStateNodes.sort((a, b) => b.order - a.order).flatMap(state => state.exit), internalQueue);\n }\n try {\n if (historyValue === currentSnapshot.historyValue && areStateNodeCollectionsEqual(currentSnapshot._nodes, mutStateNodeSet)) {\n return nextState;\n }\n return cloneMachineSnapshot(nextState, {\n _nodes: nextStateNodes,\n historyValue\n });\n } catch (e) {\n // TODO: Refactor this once proper error handling is implemented.\n // See https://github.com/statelyai/rfcs/pull/4\n throw e;\n }\n}\nfunction getMachineOutput(snapshot, event, actorScope, rootNode, rootCompletionNode) {\n if (rootNode.output === undefined) {\n return;\n }\n const doneStateEvent = createDoneStateEvent(rootCompletionNode.id, rootCompletionNode.output !== undefined && rootCompletionNode.parent ? resolveOutput(rootCompletionNode.output, snapshot.context, event, actorScope.self) : undefined);\n return resolveOutput(rootNode.output, snapshot.context, doneStateEvent, actorScope.self);\n}\nfunction enterStates(currentSnapshot, event, actorScope, filteredTransitions, mutStateNodeSet, internalQueue, historyValue, isInitial) {\n let nextSnapshot = currentSnapshot;\n const statesToEnter = new Set();\n // those are states that were directly targeted or indirectly targeted by the explicit target\n // in other words, those are states for which initial actions should be executed\n // when we target `#deep_child` initial actions of its ancestors shouldn't be executed\n const statesForDefaultEntry = new Set();\n computeEntrySet(filteredTransitions, historyValue, statesForDefaultEntry, statesToEnter);\n\n // In the initial state, the root state node is \"entered\".\n if (isInitial) {\n statesForDefaultEntry.add(currentSnapshot.machine.root);\n }\n const completedNodes = new Set();\n for (const stateNodeToEnter of [...statesToEnter].sort((a, b) => a.order - b.order)) {\n mutStateNodeSet.add(stateNodeToEnter);\n const actions = [];\n\n // Add entry actions\n actions.push(...stateNodeToEnter.entry);\n for (const invokeDef of stateNodeToEnter.invoke) {\n actions.push(spawnChild(invokeDef.src, {\n ...invokeDef,\n syncSnapshot: !!invokeDef.onSnapshot\n }));\n }\n if (statesForDefaultEntry.has(stateNodeToEnter)) {\n const initialActions = stateNodeToEnter.initial.actions;\n actions.push(...initialActions);\n }\n nextSnapshot = resolveActionsAndContext(nextSnapshot, event, actorScope, actions, internalQueue, stateNodeToEnter.invoke.map(invokeDef => invokeDef.id));\n if (stateNodeToEnter.type === 'final') {\n const parent = stateNodeToEnter.parent;\n let ancestorMarker = parent?.type === 'parallel' ? parent : parent?.parent;\n let rootCompletionNode = ancestorMarker || stateNodeToEnter;\n if (parent?.type === 'compound') {\n internalQueue.push(createDoneStateEvent(parent.id, stateNodeToEnter.output !== undefined ? resolveOutput(stateNodeToEnter.output, nextSnapshot.context, event, actorScope.self) : undefined));\n }\n while (ancestorMarker?.type === 'parallel' && !completedNodes.has(ancestorMarker) && isInFinalState(mutStateNodeSet, ancestorMarker)) {\n completedNodes.add(ancestorMarker);\n internalQueue.push(createDoneStateEvent(ancestorMarker.id));\n rootCompletionNode = ancestorMarker;\n ancestorMarker = ancestorMarker.parent;\n }\n if (ancestorMarker) {\n continue;\n }\n nextSnapshot = cloneMachineSnapshot(nextSnapshot, {\n status: 'done',\n output: getMachineOutput(nextSnapshot, event, actorScope, nextSnapshot.machine.root, rootCompletionNode)\n });\n }\n }\n return nextSnapshot;\n}\nfunction computeEntrySet(transitions, historyValue, statesForDefaultEntry, statesToEnter) {\n for (const t of transitions) {\n const domain = getTransitionDomain(t, historyValue);\n for (const s of t.target || []) {\n if (!isHistoryNode(s) && (\n // if the target is different than the source then it will *definitely* be entered\n t.source !== s ||\n // we know that the domain can't lie within the source\n // if it's different than the source then it's outside of it and it means that the target has to be entered as well\n t.source !== domain ||\n // reentering transitions always enter the target, even if it's the source itself\n t.reenter)) {\n statesToEnter.add(s);\n statesForDefaultEntry.add(s);\n }\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n const targetStates = getEffectiveTargetStates(t, historyValue);\n for (const s of targetStates) {\n const ancestors = getProperAncestors(s, domain);\n if (domain?.type === 'parallel') {\n ancestors.push(domain);\n }\n addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, ancestors, !t.source.parent && t.reenter ? undefined : domain);\n }\n }\n}\nfunction addDescendantStatesToEnter(stateNode, historyValue, statesForDefaultEntry, statesToEnter) {\n if (isHistoryNode(stateNode)) {\n if (historyValue[stateNode.id]) {\n const historyStateNodes = historyValue[stateNode.id];\n for (const s of historyStateNodes) {\n statesToEnter.add(s);\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n for (const s of historyStateNodes) {\n addProperAncestorStatesToEnter(s, stateNode.parent, statesToEnter, historyValue, statesForDefaultEntry);\n }\n } else {\n const historyDefaultTransition = resolveHistoryDefaultTransition(stateNode);\n for (const s of historyDefaultTransition.target) {\n statesToEnter.add(s);\n if (historyDefaultTransition === stateNode.parent?.initial) {\n statesForDefaultEntry.add(stateNode.parent);\n }\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n for (const s of historyDefaultTransition.target) {\n addProperAncestorStatesToEnter(s, stateNode.parent, statesToEnter, historyValue, statesForDefaultEntry);\n }\n }\n } else {\n if (stateNode.type === 'compound') {\n const [initialState] = stateNode.initial.target;\n if (!isHistoryNode(initialState)) {\n statesToEnter.add(initialState);\n statesForDefaultEntry.add(initialState);\n }\n addDescendantStatesToEnter(initialState, historyValue, statesForDefaultEntry, statesToEnter);\n addProperAncestorStatesToEnter(initialState, stateNode, statesToEnter, historyValue, statesForDefaultEntry);\n } else {\n if (stateNode.type === 'parallel') {\n for (const child of getChildren(stateNode).filter(sn => !isHistoryNode(sn))) {\n if (![...statesToEnter].some(s => isDescendant(s, child))) {\n if (!isHistoryNode(child)) {\n statesToEnter.add(child);\n statesForDefaultEntry.add(child);\n }\n addDescendantStatesToEnter(child, historyValue, statesForDefaultEntry, statesToEnter);\n }\n }\n }\n }\n }\n}\nfunction addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, ancestors, reentrancyDomain) {\n for (const anc of ancestors) {\n if (!reentrancyDomain || isDescendant(anc, reentrancyDomain)) {\n statesToEnter.add(anc);\n }\n if (anc.type === 'parallel') {\n for (const child of getChildren(anc).filter(sn => !isHistoryNode(sn))) {\n if (![...statesToEnter].some(s => isDescendant(s, child))) {\n statesToEnter.add(child);\n addDescendantStatesToEnter(child, historyValue, statesForDefaultEntry, statesToEnter);\n }\n }\n }\n }\n}\nfunction addProperAncestorStatesToEnter(stateNode, toStateNode, statesToEnter, historyValue, statesForDefaultEntry) {\n addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, getProperAncestors(stateNode, toStateNode));\n}\nfunction exitStates(currentSnapshot, event, actorScope, transitions, mutStateNodeSet, historyValue, internalQueue) {\n let nextSnapshot = currentSnapshot;\n const statesToExit = computeExitSet(transitions, mutStateNodeSet, historyValue);\n statesToExit.sort((a, b) => b.order - a.order);\n let changedHistory;\n\n // From SCXML algorithm: https://www.w3.org/TR/scxml/#exitStates\n for (const exitStateNode of statesToExit) {\n for (const historyNode of getHistoryNodes(exitStateNode)) {\n let predicate;\n if (historyNode.history === 'deep') {\n predicate = sn => isAtomicStateNode(sn) && isDescendant(sn, exitStateNode);\n } else {\n predicate = sn => {\n return sn.parent === exitStateNode;\n };\n }\n changedHistory ??= {\n ...historyValue\n };\n changedHistory[historyNode.id] = Array.from(mutStateNodeSet).filter(predicate);\n }\n }\n for (const s of statesToExit) {\n nextSnapshot = resolveActionsAndContext(nextSnapshot, event, actorScope, [...s.exit, ...s.invoke.map(def => stopChild(def.id))], internalQueue);\n mutStateNodeSet.delete(s);\n }\n return [nextSnapshot, changedHistory || historyValue];\n}\nlet executingCustomAction = false;\nfunction resolveAndExecuteActionsWithContext(currentSnapshot, event, actorScope, actions, extra, retries) {\n const {\n machine\n } = currentSnapshot;\n let intermediateSnapshot = currentSnapshot;\n for (const action of actions) {\n const isInline = typeof action === 'function';\n const resolvedAction = isInline ? action :\n // the existing type of `.actions` assumes non-nullable `TExpressionAction`\n // it's fine to cast this here to get a common type and lack of errors in the rest of the code\n // our logic below makes sure that we call those 2 \"variants\" correctly\n machine.implementations.actions[typeof action === 'string' ? action : action.type];\n if (!resolvedAction) {\n continue;\n }\n const actionArgs = {\n context: intermediateSnapshot.context,\n event,\n self: actorScope.self,\n system: actorScope.system\n };\n const actionParams = isInline || typeof action === 'string' ? undefined : 'params' in action ? typeof action.params === 'function' ? action.params({\n context: intermediateSnapshot.context,\n event\n }) : action.params : undefined;\n function executeAction() {\n actorScope.system._sendInspectionEvent({\n type: '@xstate.action',\n actorRef: actorScope.self,\n action: {\n type: typeof action === 'string' ? action : typeof action === 'object' ? action.type : action.name || '(anonymous)',\n params: actionParams\n }\n });\n try {\n executingCustomAction = resolvedAction;\n resolvedAction(actionArgs, actionParams);\n } finally {\n executingCustomAction = false;\n }\n }\n if (!('resolve' in resolvedAction)) {\n if (actorScope.self._processingStatus === ProcessingStatus.Running) {\n executeAction();\n } else {\n actorScope.defer(() => {\n executeAction();\n });\n }\n continue;\n }\n const builtinAction = resolvedAction;\n const [nextState, params, actions] = builtinAction.resolve(actorScope, intermediateSnapshot, actionArgs, actionParams, resolvedAction,\n // this holds all params\n extra);\n intermediateSnapshot = nextState;\n if ('retryResolve' in builtinAction) {\n retries?.push([builtinAction, params]);\n }\n if ('execute' in builtinAction) {\n if (actorScope.self._processingStatus === ProcessingStatus.Running) {\n builtinAction.execute(actorScope, params);\n } else {\n actorScope.defer(builtinAction.execute.bind(null, actorScope, params));\n }\n }\n if (actions) {\n intermediateSnapshot = resolveAndExecuteActionsWithContext(intermediateSnapshot, event, actorScope, actions, extra, retries);\n }\n }\n return intermediateSnapshot;\n}\nfunction resolveActionsAndContext(currentSnapshot, event, actorScope, actions, internalQueue, deferredActorIds) {\n const retries = deferredActorIds ? [] : undefined;\n const nextState = resolveAndExecuteActionsWithContext(currentSnapshot, event, actorScope, actions, {\n internalQueue,\n deferredActorIds\n }, retries);\n retries?.forEach(([builtinAction, params]) => {\n builtinAction.retryResolve(actorScope, nextState, params);\n });\n return nextState;\n}\nfunction macrostep(snapshot, event, actorScope, internalQueue = []) {\n let nextSnapshot = snapshot;\n const microstates = [];\n function addMicrostate(microstate, event, transitions) {\n actorScope.system._sendInspectionEvent({\n type: '@xstate.microstep',\n actorRef: actorScope.self,\n event,\n snapshot: microstate,\n _transitions: transitions\n });\n microstates.push(microstate);\n }\n\n // Handle stop event\n if (event.type === XSTATE_STOP) {\n nextSnapshot = cloneMachineSnapshot(stopChildren(nextSnapshot, event, actorScope), {\n status: 'stopped'\n });\n addMicrostate(nextSnapshot, event, []);\n return {\n snapshot: nextSnapshot,\n microstates\n };\n }\n let nextEvent = event;\n\n // Assume the state is at rest (no raised events)\n // Determine the next state based on the next microstep\n if (nextEvent.type !== XSTATE_INIT) {\n const currentEvent = nextEvent;\n const isErr = isErrorActorEvent(currentEvent);\n const transitions = selectTransitions(currentEvent, nextSnapshot);\n if (isErr && !transitions.length) {\n // TODO: we should likely only allow transitions selected by very explicit descriptors\n // `*` shouldn't be matched, likely `xstate.error.*` shouldnt be either\n // similarly `xstate.error.actor.*` and `xstate.error.actor.todo.*` have to be considered too\n nextSnapshot = cloneMachineSnapshot(snapshot, {\n status: 'error',\n error: currentEvent.error\n });\n addMicrostate(nextSnapshot, currentEvent, []);\n return {\n snapshot: nextSnapshot,\n microstates\n };\n }\n nextSnapshot = microstep(transitions, snapshot, actorScope, nextEvent, false,\n // isInitial\n internalQueue);\n addMicrostate(nextSnapshot, currentEvent, transitions);\n }\n let shouldSelectEventlessTransitions = true;\n while (nextSnapshot.status === 'active') {\n let enabledTransitions = shouldSelectEventlessTransitions ? selectEventlessTransitions(nextSnapshot, nextEvent) : [];\n\n // eventless transitions should always be selected after selecting *regular* transitions\n // by assigning `undefined` to `previousState` we ensure that `shouldSelectEventlessTransitions` gets always computed to true in such a case\n const previousState = enabledTransitions.length ? nextSnapshot : undefined;\n if (!enabledTransitions.length) {\n if (!internalQueue.length) {\n break;\n }\n nextEvent = internalQueue.shift();\n enabledTransitions = selectTransitions(nextEvent, nextSnapshot);\n }\n nextSnapshot = microstep(enabledTransitions, nextSnapshot, actorScope, nextEvent, false, internalQueue);\n shouldSelectEventlessTransitions = nextSnapshot !== previousState;\n addMicrostate(nextSnapshot, nextEvent, enabledTransitions);\n }\n if (nextSnapshot.status !== 'active') {\n stopChildren(nextSnapshot, nextEvent, actorScope);\n }\n return {\n snapshot: nextSnapshot,\n microstates\n };\n}\nfunction stopChildren(nextState, event, actorScope) {\n return resolveActionsAndContext(nextState, event, actorScope, Object.values(nextState.children).map(child => stopChild(child)), []);\n}\nfunction selectTransitions(event, nextState) {\n return nextState.machine.getTransitionData(nextState, event);\n}\nfunction selectEventlessTransitions(nextState, event) {\n const enabledTransitionSet = new Set();\n const atomicStates = nextState._nodes.filter(isAtomicStateNode);\n for (const stateNode of atomicStates) {\n loop: for (const s of [stateNode].concat(getProperAncestors(stateNode, undefined))) {\n if (!s.always) {\n continue;\n }\n for (const transition of s.always) {\n if (transition.guard === undefined || evaluateGuard(transition.guard, nextState.context, event, nextState)) {\n enabledTransitionSet.add(transition);\n break loop;\n }\n }\n }\n }\n return removeConflictingTransitions(Array.from(enabledTransitionSet), new Set(nextState._nodes), nextState.historyValue);\n}\n\n/**\n * Resolves a partial state value with its full representation in the state\n * node's machine.\n *\n * @param stateValue The partial state value to resolve.\n */\nfunction resolveStateValue(rootNode, stateValue) {\n const allStateNodes = getAllStateNodes(getStateNodes(rootNode, stateValue));\n return getStateValue(rootNode, [...allStateNodes]);\n}\n\nfunction isMachineSnapshot(value) {\n return !!value && typeof value === 'object' && 'machine' in value && 'value' in value;\n}\nconst machineSnapshotMatches = function matches(testValue) {\n return matchesState(testValue, this.value);\n};\nconst machineSnapshotHasTag = function hasTag(tag) {\n return this.tags.has(tag);\n};\nconst machineSnapshotCan = function can(event) {\n const transitionData = this.machine.getTransitionData(this, event);\n return !!transitionData?.length &&\n // Check that at least one transition is not forbidden\n transitionData.some(t => t.target !== undefined || t.actions.length);\n};\nconst machineSnapshotToJSON = function toJSON() {\n const {\n _nodes: nodes,\n tags,\n machine,\n getMeta,\n toJSON,\n can,\n hasTag,\n matches,\n ...jsonValues\n } = this;\n return {\n ...jsonValues,\n tags: Array.from(tags)\n };\n};\nconst machineSnapshotGetMeta = function getMeta() {\n return this._nodes.reduce((acc, stateNode) => {\n if (stateNode.meta !== undefined) {\n acc[stateNode.id] = stateNode.meta;\n }\n return acc;\n }, {});\n};\nfunction createMachineSnapshot(config, machine) {\n return {\n status: config.status,\n output: config.output,\n error: config.error,\n machine,\n context: config.context,\n _nodes: config._nodes,\n value: getStateValue(machine.root, config._nodes),\n tags: new Set(config._nodes.flatMap(sn => sn.tags)),\n children: config.children,\n historyValue: config.historyValue || {},\n matches: machineSnapshotMatches,\n hasTag: machineSnapshotHasTag,\n can: machineSnapshotCan,\n getMeta: machineSnapshotGetMeta,\n toJSON: machineSnapshotToJSON\n };\n}\nfunction cloneMachineSnapshot(snapshot, config = {}) {\n return createMachineSnapshot({\n ...snapshot,\n ...config\n }, snapshot.machine);\n}\nfunction getPersistedSnapshot(snapshot, options) {\n const {\n _nodes: nodes,\n tags,\n machine,\n children,\n context,\n can,\n hasTag,\n matches,\n getMeta,\n toJSON,\n ...jsonValues\n } = snapshot;\n const childrenJson = {};\n for (const id in children) {\n const child = children[id];\n childrenJson[id] = {\n snapshot: child.getPersistedSnapshot(options),\n src: child.src,\n systemId: child._systemId,\n syncSnapshot: child._syncSnapshot\n };\n }\n const persisted = {\n ...jsonValues,\n context: persistContext(context),\n children: childrenJson\n };\n return persisted;\n}\nfunction persistContext(contextPart) {\n let copy;\n for (const key in contextPart) {\n const value = contextPart[key];\n if (value && typeof value === 'object') {\n if ('sessionId' in value && 'send' in value && 'ref' in value) {\n copy ??= Array.isArray(contextPart) ? contextPart.slice() : {\n ...contextPart\n };\n copy[key] = {\n xstate$$type: $$ACTOR_TYPE,\n id: value.id\n };\n } else {\n const result = persistContext(value);\n if (result !== value) {\n copy ??= Array.isArray(contextPart) ? contextPart.slice() : {\n ...contextPart\n };\n copy[key] = result;\n }\n }\n }\n }\n return copy ?? contextPart;\n}\n\nfunction resolveRaise(_, snapshot, args, actionParams, {\n event: eventOrExpr,\n id,\n delay\n}, {\n internalQueue\n}) {\n const delaysMap = snapshot.machine.implementations.delays;\n if (typeof eventOrExpr === 'string') {\n throw new Error(`Only event objects may be used with raise; use raise({ type: \"${eventOrExpr}\" }) instead`);\n }\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n let resolvedDelay;\n if (typeof delay === 'string') {\n const configDelay = delaysMap && delaysMap[delay];\n resolvedDelay = typeof configDelay === 'function' ? configDelay(args, actionParams) : configDelay;\n } else {\n resolvedDelay = typeof delay === 'function' ? delay(args, actionParams) : delay;\n }\n if (typeof resolvedDelay !== 'number') {\n internalQueue.push(resolvedEvent);\n }\n return [snapshot, {\n event: resolvedEvent,\n id,\n delay: resolvedDelay\n }];\n}\nfunction executeRaise(actorScope, params) {\n const {\n event,\n delay,\n id\n } = params;\n if (typeof delay === 'number') {\n actorScope.defer(() => {\n const self = actorScope.self;\n actorScope.system.scheduler.schedule(self, self, event, delay, id);\n });\n return;\n }\n}\n/**\n * Raises an event. This places the event in the internal event queue, so that\n * the event is immediately consumed by the machine in the current step.\n *\n * @param eventType The event to raise.\n */\nfunction raise(eventOrExpr, options) {\n function raise(args, params) {\n }\n raise.type = 'xstate.raise';\n raise.event = eventOrExpr;\n raise.id = options?.id;\n raise.delay = options?.delay;\n raise.resolve = resolveRaise;\n raise.execute = executeRaise;\n return raise;\n}\n\nexport { $$ACTOR_TYPE as $, createActor as A, Actor as B, interpret as C, and as D, not as E, or as F, stateIn as G, isMachineSnapshot as H, getAllOwnEventDescriptors as I, matchesState as J, pathToStateValue as K, toObserver as L, cancel as M, NULL_EVENT as N, raise as O, spawnChild as P, stop as Q, stopChild as R, STATE_DELIMITER as S, ProcessingStatus as T, cloneMachineSnapshot as U, XSTATE_ERROR as V, createErrorActorEvent as W, XSTATE_STOP as X, toTransitionConfigArray as a, formatTransition as b, createInvokeId as c, formatInitialTransition as d, evaluateGuard as e, formatTransitions as f, getDelayedTransitions as g, getCandidates as h, getAllStateNodes as i, getStateNodes as j, createMachineSnapshot as k, isInFinalState as l, mapValues as m, macrostep as n, transitionNode as o, resolveActionsAndContext as p, createInitEvent as q, resolveStateValue as r, microstep as s, toArray as t, getInitialStateNodes as u, toStatePath as v, isStateId as w, getStateNodeByPath as x, getPersistedSnapshot as y, resolveReferencedActor as z };\n","import { T as ProcessingStatus, z as resolveReferencedActor, A as createActor, U as cloneMachineSnapshot, V as XSTATE_ERROR, W as createErrorActorEvent, e as evaluateGuard, M as cancel, O as raise, P as spawnChild, R as stopChild } from './raise-0f7cf128.esm.js';\n\nfunction createSpawner(actorScope, {\n machine,\n context\n}, event, spawnedChildren) {\n const spawn = (src, options = {}) => {\n const {\n systemId,\n input\n } = options;\n if (typeof src === 'string') {\n const logic = resolveReferencedActor(machine, src);\n if (!logic) {\n throw new Error(`Actor logic '${src}' not implemented in machine '${machine.id}'`);\n }\n const actorRef = createActor(logic, {\n id: options.id,\n parent: actorScope.self,\n syncSnapshot: options.syncSnapshot,\n input: typeof input === 'function' ? input({\n context,\n event,\n self: actorScope.self\n }) : input,\n src,\n systemId\n });\n spawnedChildren[actorRef.id] = actorRef;\n return actorRef;\n } else {\n const actorRef = createActor(src, {\n id: options.id,\n parent: actorScope.self,\n syncSnapshot: options.syncSnapshot,\n input: options.input,\n src,\n systemId\n });\n return actorRef;\n }\n };\n return (src, options) => {\n const actorRef = spawn(src, options); // TODO: fix types\n spawnedChildren[actorRef.id] = actorRef;\n actorScope.defer(() => {\n if (actorRef._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n actorRef.start();\n });\n return actorRef;\n };\n}\n\nfunction resolveAssign(actorScope, snapshot, actionArgs, actionParams, {\n assignment\n}) {\n if (!snapshot.context) {\n throw new Error('Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.');\n }\n const spawnedChildren = {};\n const assignArgs = {\n context: snapshot.context,\n event: actionArgs.event,\n spawn: createSpawner(actorScope, snapshot, actionArgs.event, spawnedChildren),\n self: actorScope.self,\n system: actorScope.system\n };\n let partialUpdate = {};\n if (typeof assignment === 'function') {\n partialUpdate = assignment(assignArgs, actionParams);\n } else {\n for (const key of Object.keys(assignment)) {\n const propAssignment = assignment[key];\n partialUpdate[key] = typeof propAssignment === 'function' ? propAssignment(assignArgs, actionParams) : propAssignment;\n }\n }\n const updatedContext = Object.assign({}, snapshot.context, partialUpdate);\n return [cloneMachineSnapshot(snapshot, {\n context: updatedContext,\n children: Object.keys(spawnedChildren).length ? {\n ...snapshot.children,\n ...spawnedChildren\n } : snapshot.children\n })];\n}\n/**\n * Updates the current context of the machine.\n *\n * @example\n *\n * ```ts\n * import { createMachine, assign } from 'xstate';\n *\n * const countMachine = createMachine({\n * context: {\n * count: 0,\n * message: ''\n * },\n * on: {\n * inc: {\n * actions: assign({\n * count: ({ context }) => context.count + 1\n * })\n * },\n * updateMessage: {\n * actions: assign(({ context, event }) => {\n * return {\n * message: event.message.trim()\n * };\n * })\n * }\n * }\n * });\n * ```\n *\n * @param assignment An object that represents the partial context to update, or\n * a function that returns an object that represents the partial context to\n * update.\n */\nfunction assign(assignment) {\n function assign(args, params) {\n }\n assign.type = 'xstate.assign';\n assign.assignment = assignment;\n assign.resolve = resolveAssign;\n return assign;\n}\n\nfunction resolveEmit(_, snapshot, args, actionParams, {\n event: eventOrExpr\n}) {\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n return [snapshot, {\n event: resolvedEvent\n }];\n}\nfunction executeEmit(actorScope, {\n event\n}) {\n actorScope.defer(() => actorScope.emit(event));\n}\n/**\n * Emits an event to event handlers registered on the actor via `actor.on(event,\n * handler)`.\n *\n * @example\n *\n * ```ts\n * import { emit } from 'xstate';\n *\n * const machine = createMachine({\n * // ...\n * on: {\n * something: {\n * actions: emit({\n * type: 'emitted',\n * some: 'data'\n * })\n * }\n * }\n * // ...\n * });\n *\n * const actor = createActor(machine).start();\n *\n * actor.on('emitted', (event) => {\n * console.log(event);\n * });\n *\n * actor.send({ type: 'something' });\n * // logs:\n * // {\n * // type: 'emitted',\n * // some: 'data'\n * // }\n * ```\n */\nfunction emit(/** The event to emit, or an expression that returns an event to emit. */\neventOrExpr) {\n function emit(args, params) {\n }\n emit.type = 'xstate.emit';\n emit.event = eventOrExpr;\n emit.resolve = resolveEmit;\n emit.execute = executeEmit;\n return emit;\n}\n\n/**\n * @remarks\n * `T | unknown` reduces to `unknown` and that can be problematic when it comes\n * to contextual typing. It especially is a problem when the union has a\n * function member, like here:\n *\n * ```ts\n * declare function test(\n * cbOrVal: ((arg: number) => unknown) | unknown\n * ): void;\n * test((arg) => {}); // oops, implicit any\n * ```\n *\n * This type can be used to avoid this problem. This union represents the same\n * value space as `unknown`.\n */\n\n// https://github.com/microsoft/TypeScript/issues/23182#issuecomment-379091887\n\n// @TODO: Replace with native `NoInfer` when TS issue gets fixed:\n// https://github.com/microsoft/TypeScript/pull/57673\n\n/** @deprecated Use the built-in `NoInfer` type instead */\n\n/** The full definition of an event, with a string `type`. */\n\n/**\n * The string or object representing the state value relative to the parent\n * state node.\n *\n * @remarks\n * - For a child atomic state node, this is a string, e.g., `\"pending\"`.\n * - For complex state nodes, this is an object, e.g., `{ success:\n * \"someChildState\" }`.\n */\n\n// TODO: remove once TS fixes this type-widening issue\n\n/** @deprecated Use `AnyMachineSnapshot` instead */\n\n// TODO: possibly refactor this somehow, use even a simpler type, and maybe even make `machine.options` private or something\n/** @ignore */\n\nlet SpecialTargets = /*#__PURE__*/function (SpecialTargets) {\n SpecialTargets[\"Parent\"] = \"#_parent\";\n SpecialTargets[\"Internal\"] = \"#_internal\";\n return SpecialTargets;\n}({});\n\n/** @deprecated Use `AnyActor` instead. */\n\n// Based on RxJS types\n\n// TODO: in v6, this should only accept AnyActorLogic, like ActorRefFromLogic\n\n/** @deprecated Use `Actor` instead. */\n\n/**\n * Represents logic which can be used by an actor.\n *\n * @template TSnapshot - The type of the snapshot.\n * @template TEvent - The type of the event object.\n * @template TInput - The type of the input.\n * @template TSystem - The type of the actor system.\n */\n\n/** @deprecated */\n\nfunction resolveSendTo(actorScope, snapshot, args, actionParams, {\n to,\n event: eventOrExpr,\n id,\n delay\n}, extra) {\n const delaysMap = snapshot.machine.implementations.delays;\n if (typeof eventOrExpr === 'string') {\n throw new Error(`Only event objects may be used with sendTo; use sendTo({ type: \"${eventOrExpr}\" }) instead`);\n }\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n let resolvedDelay;\n if (typeof delay === 'string') {\n const configDelay = delaysMap && delaysMap[delay];\n resolvedDelay = typeof configDelay === 'function' ? configDelay(args, actionParams) : configDelay;\n } else {\n resolvedDelay = typeof delay === 'function' ? delay(args, actionParams) : delay;\n }\n const resolvedTarget = typeof to === 'function' ? to(args, actionParams) : to;\n let targetActorRef;\n if (typeof resolvedTarget === 'string') {\n if (resolvedTarget === SpecialTargets.Parent) {\n targetActorRef = actorScope.self._parent;\n } else if (resolvedTarget === SpecialTargets.Internal) {\n targetActorRef = actorScope.self;\n } else if (resolvedTarget.startsWith('#_')) {\n // SCXML compatibility: https://www.w3.org/TR/scxml/#SCXMLEventProcessor\n // #_invokeid. If the target is the special term '#_invokeid', where invokeid is the invokeid of an SCXML session that the sending session has created by , the Processor must add the event to the external queue of that session.\n targetActorRef = snapshot.children[resolvedTarget.slice(2)];\n } else {\n targetActorRef = extra.deferredActorIds?.includes(resolvedTarget) ? resolvedTarget : snapshot.children[resolvedTarget];\n }\n if (!targetActorRef) {\n throw new Error(`Unable to send event to actor '${resolvedTarget}' from machine '${snapshot.machine.id}'.`);\n }\n } else {\n targetActorRef = resolvedTarget || actorScope.self;\n }\n return [snapshot, {\n to: targetActorRef,\n event: resolvedEvent,\n id,\n delay: resolvedDelay\n }];\n}\nfunction retryResolveSendTo(_, snapshot, params) {\n if (typeof params.to === 'string') {\n params.to = snapshot.children[params.to];\n }\n}\nfunction executeSendTo(actorScope, params) {\n // this forms an outgoing events queue\n // thanks to that the recipient actors are able to read the *updated* snapshot value of the sender\n actorScope.defer(() => {\n const {\n to,\n event,\n delay,\n id\n } = params;\n if (typeof delay === 'number') {\n actorScope.system.scheduler.schedule(actorScope.self, to, event, delay, id);\n return;\n }\n actorScope.system._relay(actorScope.self,\n // at this point, in a deferred task, it should already be mutated by retryResolveSendTo\n // if it initially started as a string\n to, event.type === XSTATE_ERROR ? createErrorActorEvent(actorScope.self.id, event.data) : event);\n });\n}\n/**\n * Sends an event to an actor.\n *\n * @param actor The `ActorRef` to send the event to.\n * @param event The event to send, or an expression that evaluates to the event\n * to send\n * @param options Send action options\n *\n * - `id` - The unique send event identifier (used with `cancel()`).\n * - `delay` - The number of milliseconds to delay the sending of the event.\n */\nfunction sendTo(to, eventOrExpr, options) {\n function sendTo(args, params) {\n }\n sendTo.type = 'xsnapshot.sendTo';\n sendTo.to = to;\n sendTo.event = eventOrExpr;\n sendTo.id = options?.id;\n sendTo.delay = options?.delay;\n sendTo.resolve = resolveSendTo;\n sendTo.retryResolve = retryResolveSendTo;\n sendTo.execute = executeSendTo;\n return sendTo;\n}\n\n/**\n * Sends an event to this machine's parent.\n *\n * @param event The event to send to the parent machine.\n * @param options Options to pass into the send event.\n */\nfunction sendParent(event, options) {\n return sendTo(SpecialTargets.Parent, event, options);\n}\n/**\n * Forwards (sends) an event to the `target` actor.\n *\n * @param target The target actor to forward the event to.\n * @param options Options to pass into the send action creator.\n */\nfunction forwardTo(target, options) {\n return sendTo(target, ({\n event\n }) => event, options);\n}\n\nfunction resolveEnqueueActions(actorScope, snapshot, args, actionParams, {\n collect\n}) {\n const actions = [];\n const enqueue = function enqueue(action) {\n actions.push(action);\n };\n enqueue.assign = (...args) => {\n actions.push(assign(...args));\n };\n enqueue.cancel = (...args) => {\n actions.push(cancel(...args));\n };\n enqueue.raise = (...args) => {\n // for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)\n // then it fails to typecheck that because `...args` use `string` in place of `TDelay`\n actions.push(raise(...args));\n };\n enqueue.sendTo = (...args) => {\n // for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)\n // then it fails to typecheck that because `...args` use `string` in place of `TDelay\n actions.push(sendTo(...args));\n };\n enqueue.sendParent = (...args) => {\n actions.push(sendParent(...args));\n };\n enqueue.spawnChild = (...args) => {\n actions.push(spawnChild(...args));\n };\n enqueue.stopChild = (...args) => {\n actions.push(stopChild(...args));\n };\n enqueue.emit = (...args) => {\n actions.push(emit(...args));\n };\n collect({\n context: args.context,\n event: args.event,\n enqueue,\n check: guard => evaluateGuard(guard, snapshot.context, args.event, snapshot),\n self: actorScope.self,\n system: actorScope.system\n }, actionParams);\n return [snapshot, undefined, actions];\n}\n/**\n * Creates an action object that will execute actions that are queued by the\n * `enqueue(action)` function.\n *\n * @example\n *\n * ```ts\n * import { createMachine, enqueueActions } from 'xstate';\n *\n * const machine = createMachine({\n * entry: enqueueActions(({ enqueue, check }) => {\n * enqueue.assign({ count: 0 });\n *\n * if (check('someGuard')) {\n * enqueue.assign({ count: 1 });\n * }\n *\n * enqueue('someAction');\n * })\n * });\n * ```\n */\nfunction enqueueActions(collect) {\n function enqueueActions(args, params) {\n }\n enqueueActions.type = 'xstate.enqueueActions';\n enqueueActions.collect = collect;\n enqueueActions.resolve = resolveEnqueueActions;\n return enqueueActions;\n}\n\nfunction resolveLog(_, snapshot, actionArgs, actionParams, {\n value,\n label\n}) {\n return [snapshot, {\n value: typeof value === 'function' ? value(actionArgs, actionParams) : value,\n label\n }];\n}\nfunction executeLog({\n logger\n}, {\n value,\n label\n}) {\n if (label) {\n logger(label, value);\n } else {\n logger(value);\n }\n}\n/**\n * @param expr The expression function to evaluate which will be logged. Takes\n * in 2 arguments:\n *\n * - `ctx` - the current state context\n * - `event` - the event that caused this action to be executed.\n *\n * @param label The label to give to the logged expression.\n */\nfunction log(value = ({\n context,\n event\n}) => ({\n context,\n event\n}), label) {\n function log(args, params) {\n }\n log.type = 'xstate.log';\n log.value = value;\n log.label = label;\n log.resolve = resolveLog;\n log.execute = executeLog;\n return log;\n}\n\nexport { SpecialTargets as S, assign as a, enqueueActions as b, sendTo as c, emit as e, forwardTo as f, log as l, sendParent as s };\n","export { createEmptyActor, fromCallback, fromEventObservable, fromObservable, fromPromise, fromTransition } from '../actors/dist/xstate-actors.esm.js';\nimport { t as toArray, S as STATE_DELIMITER, m as mapValues, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, e as evaluateGuard, c as createInvokeId, g as getDelayedTransitions, d as formatInitialTransition, h as getCandidates, r as resolveStateValue, i as getAllStateNodes, j as getStateNodes, k as createMachineSnapshot, l as isInFinalState, n as macrostep, o as transitionNode, p as resolveActionsAndContext, q as createInitEvent, s as microstep, u as getInitialStateNodes, v as toStatePath, w as isStateId, x as getStateNodeByPath, y as getPersistedSnapshot, z as resolveReferencedActor, A as createActor, $ as $$ACTOR_TYPE } from './raise-0f7cf128.esm.js';\nexport { B as Actor, I as __unsafe_getAllOwnEventDescriptors, D as and, M as cancel, A as createActor, j as getStateNodes, C as interpret, H as isMachineSnapshot, J as matchesState, E as not, F as or, K as pathToStateValue, O as raise, P as spawnChild, G as stateIn, Q as stop, R as stopChild, L as toObserver } from './raise-0f7cf128.esm.js';\nimport { a as assign } from './log-15d0f775.esm.js';\nexport { S as SpecialTargets, a as assign, e as emit, b as enqueueActions, f as forwardTo, l as log, s as sendParent, c as sendTo } from './log-15d0f775.esm.js';\nimport '../dev/dist/xstate-dev.esm.js';\n\n/**\n * Asserts that the given event object is of the specified type or types. Throws\n * an error if the event object is not of the specified types.\n *\n * @example\n *\n * ```ts\n * // ...\n * entry: ({ event }) => {\n * assertEvent(event, 'doNothing');\n * // event is { type: 'doNothing' }\n * },\n * // ...\n * exit: ({ event }) => {\n * assertEvent(event, 'greet');\n * // event is { type: 'greet'; message: string }\n *\n * assertEvent(event, ['greet', 'notify']);\n * // event is { type: 'greet'; message: string }\n * // or { type: 'notify'; message: string; level: 'info' | 'error' }\n * },\n * ```\n */\nfunction assertEvent(event, type) {\n const types = toArray(type);\n if (!types.includes(event.type)) {\n const typesText = types.length === 1 ? `type \"${types[0]}\"` : `one of types \"${types.join('\", \"')}\"`;\n throw new Error(`Expected event ${JSON.stringify(event)} to have ${typesText}`);\n }\n}\n\nconst cache = new WeakMap();\nfunction memo(object, key, fn) {\n let memoizedData = cache.get(object);\n if (!memoizedData) {\n memoizedData = {\n [key]: fn()\n };\n cache.set(object, memoizedData);\n } else if (!(key in memoizedData)) {\n memoizedData[key] = fn();\n }\n return memoizedData[key];\n}\n\nconst EMPTY_OBJECT = {};\nconst toSerializableAction = action => {\n if (typeof action === 'string') {\n return {\n type: action\n };\n }\n if (typeof action === 'function') {\n if ('resolve' in action) {\n return {\n type: action.type\n };\n }\n return {\n type: action.name\n };\n }\n return action;\n};\nclass StateNode {\n constructor(/** The raw config used to create the machine. */\n config, options) {\n this.config = config;\n /**\n * The relative key of the state node, which represents its location in the\n * overall state value.\n */\n this.key = void 0;\n /** The unique ID of the state node. */\n this.id = void 0;\n /**\n * The type of this state node:\n *\n * - `'atomic'` - no child state nodes\n * - `'compound'` - nested child state nodes (XOR)\n * - `'parallel'` - orthogonal nested child state nodes (AND)\n * - `'history'` - history state node\n * - `'final'` - final state node\n */\n this.type = void 0;\n /** The string path from the root machine node to this node. */\n this.path = void 0;\n /** The child state nodes. */\n this.states = void 0;\n /**\n * The type of history on this state node. Can be:\n *\n * - `'shallow'` - recalls only top-level historical state value\n * - `'deep'` - recalls historical state value at all levels\n */\n this.history = void 0;\n /** The action(s) to be executed upon entering the state node. */\n this.entry = void 0;\n /** The action(s) to be executed upon exiting the state node. */\n this.exit = void 0;\n /** The parent state node. */\n this.parent = void 0;\n /** The root machine node. */\n this.machine = void 0;\n /**\n * The meta data associated with this state node, which will be returned in\n * State instances.\n */\n this.meta = void 0;\n /**\n * The output data sent with the \"xstate.done.state._id_\" event if this is a\n * final state node.\n */\n this.output = void 0;\n /**\n * The order this state node appears. Corresponds to the implicit document\n * order.\n */\n this.order = -1;\n this.description = void 0;\n this.tags = [];\n this.transitions = void 0;\n this.always = void 0;\n this.parent = options._parent;\n this.key = options._key;\n this.machine = options._machine;\n this.path = this.parent ? this.parent.path.concat(this.key) : [];\n this.id = this.config.id || [this.machine.id, ...this.path].join(STATE_DELIMITER);\n this.type = this.config.type || (this.config.states && Object.keys(this.config.states).length ? 'compound' : this.config.history ? 'history' : 'atomic');\n this.description = this.config.description;\n this.order = this.machine.idMap.size;\n this.machine.idMap.set(this.id, this);\n this.states = this.config.states ? mapValues(this.config.states, (stateConfig, key) => {\n const stateNode = new StateNode(stateConfig, {\n _parent: this,\n _key: key,\n _machine: this.machine\n });\n return stateNode;\n }) : EMPTY_OBJECT;\n if (this.type === 'compound' && !this.config.initial) {\n throw new Error(`No initial state specified for compound state node \"#${this.id}\". Try adding { initial: \"${Object.keys(this.states)[0]}\" } to the state config.`);\n }\n\n // History config\n this.history = this.config.history === true ? 'shallow' : this.config.history || false;\n this.entry = toArray(this.config.entry).slice();\n this.exit = toArray(this.config.exit).slice();\n this.meta = this.config.meta;\n this.output = this.type === 'final' || !this.parent ? this.config.output : undefined;\n this.tags = toArray(config.tags).slice();\n }\n\n /** @internal */\n _initialize() {\n this.transitions = formatTransitions(this);\n if (this.config.always) {\n this.always = toTransitionConfigArray(this.config.always).map(t => formatTransition(this, NULL_EVENT, t));\n }\n Object.keys(this.states).forEach(key => {\n this.states[key]._initialize();\n });\n }\n\n /** The well-structured state node definition. */\n get definition() {\n return {\n id: this.id,\n key: this.key,\n version: this.machine.version,\n type: this.type,\n initial: this.initial ? {\n target: this.initial.target,\n source: this,\n actions: this.initial.actions.map(toSerializableAction),\n eventType: null,\n reenter: false,\n toJSON: () => ({\n target: this.initial.target.map(t => `#${t.id}`),\n source: `#${this.id}`,\n actions: this.initial.actions.map(toSerializableAction),\n eventType: null\n })\n } : undefined,\n history: this.history,\n states: mapValues(this.states, state => {\n return state.definition;\n }),\n on: this.on,\n transitions: [...this.transitions.values()].flat().map(t => ({\n ...t,\n actions: t.actions.map(toSerializableAction)\n })),\n entry: this.entry.map(toSerializableAction),\n exit: this.exit.map(toSerializableAction),\n meta: this.meta,\n order: this.order || -1,\n output: this.output,\n invoke: this.invoke,\n description: this.description,\n tags: this.tags\n };\n }\n\n /** @internal */\n toJSON() {\n return this.definition;\n }\n\n /** The logic invoked as actors by this state node. */\n get invoke() {\n return memo(this, 'invoke', () => toArray(this.config.invoke).map((invokeConfig, i) => {\n const {\n src,\n systemId\n } = invokeConfig;\n const resolvedId = invokeConfig.id ?? createInvokeId(this.id, i);\n const resolvedSrc = typeof src === 'string' ? src : `xstate.invoke.${createInvokeId(this.id, i)}`;\n return {\n ...invokeConfig,\n src: resolvedSrc,\n id: resolvedId,\n systemId: systemId,\n toJSON() {\n const {\n onDone,\n onError,\n ...invokeDefValues\n } = invokeConfig;\n return {\n ...invokeDefValues,\n type: 'xstate.invoke',\n src: resolvedSrc,\n id: resolvedId\n };\n }\n };\n }));\n }\n\n /** The mapping of events to transitions. */\n get on() {\n return memo(this, 'on', () => {\n const transitions = this.transitions;\n return [...transitions].flatMap(([descriptor, t]) => t.map(t => [descriptor, t])).reduce((map, [descriptor, transition]) => {\n map[descriptor] = map[descriptor] || [];\n map[descriptor].push(transition);\n return map;\n }, {});\n });\n }\n get after() {\n return memo(this, 'delayedTransitions', () => getDelayedTransitions(this));\n }\n get initial() {\n return memo(this, 'initial', () => formatInitialTransition(this, this.config.initial));\n }\n\n /** @internal */\n next(snapshot, event) {\n const eventType = event.type;\n const actions = [];\n let selectedTransition;\n const candidates = memo(this, `candidates-${eventType}`, () => getCandidates(this, eventType));\n for (const candidate of candidates) {\n const {\n guard\n } = candidate;\n const resolvedContext = snapshot.context;\n let guardPassed = false;\n try {\n guardPassed = !guard || evaluateGuard(guard, resolvedContext, event, snapshot);\n } catch (err) {\n const guardType = typeof guard === 'string' ? guard : typeof guard === 'object' ? guard.type : undefined;\n throw new Error(`Unable to evaluate guard ${guardType ? `'${guardType}' ` : ''}in transition for event '${eventType}' in state node '${this.id}':\\n${err.message}`);\n }\n if (guardPassed) {\n actions.push(...candidate.actions);\n selectedTransition = candidate;\n break;\n }\n }\n return selectedTransition ? [selectedTransition] : undefined;\n }\n\n /** All the event types accepted by this state node and its descendants. */\n get events() {\n return memo(this, 'events', () => {\n const {\n states\n } = this;\n const events = new Set(this.ownEvents);\n if (states) {\n for (const stateId of Object.keys(states)) {\n const state = states[stateId];\n if (state.states) {\n for (const event of state.events) {\n events.add(`${event}`);\n }\n }\n }\n }\n return Array.from(events);\n });\n }\n\n /**\n * All the events that have transitions directly from this state node.\n *\n * Excludes any inert events.\n */\n get ownEvents() {\n const events = new Set([...this.transitions.keys()].filter(descriptor => {\n return this.transitions.get(descriptor).some(transition => !(!transition.target && !transition.actions.length && !transition.reenter));\n }));\n return Array.from(events);\n }\n}\n\nconst STATE_IDENTIFIER = '#';\nclass StateMachine {\n constructor(/** The raw config used to create the machine. */\n config, implementations) {\n this.config = config;\n /** The machine's own version. */\n this.version = void 0;\n this.schemas = void 0;\n this.implementations = void 0;\n /** @internal */\n this.__xstatenode = true;\n /** @internal */\n this.idMap = new Map();\n this.root = void 0;\n this.id = void 0;\n this.states = void 0;\n this.events = void 0;\n this.id = config.id || '(machine)';\n this.implementations = {\n actors: implementations?.actors ?? {},\n actions: implementations?.actions ?? {},\n delays: implementations?.delays ?? {},\n guards: implementations?.guards ?? {}\n };\n this.version = this.config.version;\n this.schemas = this.config.schemas;\n this.transition = this.transition.bind(this);\n this.getInitialSnapshot = this.getInitialSnapshot.bind(this);\n this.getPersistedSnapshot = this.getPersistedSnapshot.bind(this);\n this.restoreSnapshot = this.restoreSnapshot.bind(this);\n this.start = this.start.bind(this);\n this.root = new StateNode(config, {\n _key: this.id,\n _machine: this\n });\n this.root._initialize();\n this.states = this.root.states; // TODO: remove!\n this.events = this.root.events;\n }\n\n /**\n * Clones this state machine with the provided implementations and merges the\n * `context` (if provided).\n *\n * @param implementations Options (`actions`, `guards`, `actors`, `delays`,\n * `context`) to recursively merge with the existing options.\n * @returns A new `StateMachine` instance with the provided implementations.\n */\n provide(implementations) {\n const {\n actions,\n guards,\n actors,\n delays\n } = this.implementations;\n return new StateMachine(this.config, {\n actions: {\n ...actions,\n ...implementations.actions\n },\n guards: {\n ...guards,\n ...implementations.guards\n },\n actors: {\n ...actors,\n ...implementations.actors\n },\n delays: {\n ...delays,\n ...implementations.delays\n }\n });\n }\n resolveState(config) {\n const resolvedStateValue = resolveStateValue(this.root, config.value);\n const nodeSet = getAllStateNodes(getStateNodes(this.root, resolvedStateValue));\n return createMachineSnapshot({\n _nodes: [...nodeSet],\n context: config.context || {},\n children: {},\n status: isInFinalState(nodeSet, this.root) ? 'done' : config.status || 'active',\n output: config.output,\n error: config.error,\n historyValue: config.historyValue\n }, this);\n }\n\n /**\n * Determines the next snapshot given the current `snapshot` and received\n * `event`. Calculates a full macrostep from all microsteps.\n *\n * @param snapshot The current snapshot\n * @param event The received event\n */\n transition(snapshot, event, actorScope) {\n return macrostep(snapshot, event, actorScope).snapshot;\n }\n\n /**\n * Determines the next state given the current `state` and `event`. Calculates\n * a microstep.\n *\n * @param state The current state\n * @param event The received event\n */\n microstep(snapshot, event, actorScope) {\n return macrostep(snapshot, event, actorScope).microstates;\n }\n getTransitionData(snapshot, event) {\n return transitionNode(this.root, snapshot.value, snapshot, event) || [];\n }\n\n /**\n * The initial state _before_ evaluating any microsteps. This \"pre-initial\"\n * state is provided to initial actions executed in the initial state.\n */\n getPreInitialState(actorScope, initEvent, internalQueue) {\n const {\n context\n } = this.config;\n const preInitial = createMachineSnapshot({\n context: typeof context !== 'function' && context ? context : {},\n _nodes: [this.root],\n children: {},\n status: 'active'\n }, this);\n if (typeof context === 'function') {\n const assignment = ({\n spawn,\n event,\n self\n }) => context({\n spawn,\n input: event.input,\n self\n });\n return resolveActionsAndContext(preInitial, initEvent, actorScope, [assign(assignment)], internalQueue);\n }\n return preInitial;\n }\n\n /**\n * Returns the initial `State` instance, with reference to `self` as an\n * `ActorRef`.\n */\n getInitialSnapshot(actorScope, input) {\n const initEvent = createInitEvent(input); // TODO: fix;\n const internalQueue = [];\n const preInitialState = this.getPreInitialState(actorScope, initEvent, internalQueue);\n const nextState = microstep([{\n target: [...getInitialStateNodes(this.root)],\n source: this.root,\n reenter: true,\n actions: [],\n eventType: null,\n toJSON: null // TODO: fix\n }], preInitialState, actorScope, initEvent, true, internalQueue);\n const {\n snapshot: macroState\n } = macrostep(nextState, initEvent, actorScope, internalQueue);\n return macroState;\n }\n start(snapshot) {\n Object.values(snapshot.children).forEach(child => {\n if (child.getSnapshot().status === 'active') {\n child.start();\n }\n });\n }\n getStateNodeById(stateId) {\n const fullPath = toStatePath(stateId);\n const relativePath = fullPath.slice(1);\n const resolvedStateId = isStateId(fullPath[0]) ? fullPath[0].slice(STATE_IDENTIFIER.length) : fullPath[0];\n const stateNode = this.idMap.get(resolvedStateId);\n if (!stateNode) {\n throw new Error(`Child state node '#${resolvedStateId}' does not exist on machine '${this.id}'`);\n }\n return getStateNodeByPath(stateNode, relativePath);\n }\n get definition() {\n return this.root.definition;\n }\n toJSON() {\n return this.definition;\n }\n getPersistedSnapshot(snapshot, options) {\n return getPersistedSnapshot(snapshot, options);\n }\n restoreSnapshot(snapshot, _actorScope) {\n const children = {};\n const snapshotChildren = snapshot.children;\n Object.keys(snapshotChildren).forEach(actorId => {\n const actorData = snapshotChildren[actorId];\n const childState = actorData.snapshot;\n const src = actorData.src;\n const logic = typeof src === 'string' ? resolveReferencedActor(this, src) : src;\n if (!logic) {\n return;\n }\n const actorRef = createActor(logic, {\n id: actorId,\n parent: _actorScope.self,\n syncSnapshot: actorData.syncSnapshot,\n snapshot: childState,\n src,\n systemId: actorData.systemId\n });\n children[actorId] = actorRef;\n });\n const restoredSnapshot = createMachineSnapshot({\n ...snapshot,\n children,\n _nodes: Array.from(getAllStateNodes(getStateNodes(this.root, snapshot.value)))\n }, this);\n let seen = new Set();\n function reviveContext(contextPart, children) {\n if (seen.has(contextPart)) {\n return;\n }\n seen.add(contextPart);\n for (let key in contextPart) {\n const value = contextPart[key];\n if (value && typeof value === 'object') {\n if ('xstate$$type' in value && value.xstate$$type === $$ACTOR_TYPE) {\n contextPart[key] = children[value.id];\n continue;\n }\n reviveContext(value, children);\n }\n }\n }\n reviveContext(restoredSnapshot.context, children);\n return restoredSnapshot;\n }\n}\n\n// this is not 100% accurate since we can't make parallel regions required in the result\n// `TTestValue` doesn't encode this information anyhow for us to be able to do that\n// this is fine for most practical use cases anyway though\n\n/**\n * Creates a state machine (statechart) with the given configuration.\n *\n * The state machine represents the pure logic of a state machine actor.\n *\n * @example\n *\n * ```ts\n * import { createMachine } from 'xstate';\n *\n * const lightMachine = createMachine({\n * id: 'light',\n * initial: 'green',\n * states: {\n * green: {\n * on: {\n * TIMER: { target: 'yellow' }\n * }\n * },\n * yellow: {\n * on: {\n * TIMER: { target: 'red' }\n * }\n * },\n * red: {\n * on: {\n * TIMER: { target: 'green' }\n * }\n * }\n * }\n * });\n *\n * const lightActor = createActor(lightMachine);\n * lightActor.start();\n *\n * lightActor.send({ type: 'TIMER' });\n * ```\n *\n * @param config The state machine configuration.\n * @param options DEPRECATED: use `setup({ ... })` or `machine.provide({ ... })`\n * to provide machine implementations instead.\n */\nfunction createMachine(config, implementations) {\n return new StateMachine(config, implementations);\n}\n\n/** @internal */\nfunction createInertActorScope(actorLogic) {\n const self = createActor(actorLogic);\n const inertActorScope = {\n self,\n defer: () => {},\n id: '',\n logger: () => {},\n sessionId: '',\n stopChild: () => {},\n system: self.system,\n emit: () => {}\n };\n return inertActorScope;\n}\nfunction getInitialSnapshot(actorLogic, ...[input]) {\n const actorScope = createInertActorScope(actorLogic);\n return actorLogic.getInitialSnapshot(actorScope, input);\n}\n\n/**\n * Determines the next snapshot for the given `actorLogic` based on the given\n * `snapshot` and `event`.\n *\n * If the `snapshot` is `undefined`, the initial snapshot of the `actorLogic` is\n * used.\n *\n * @example\n *\n * ```ts\n * import { getNextSnapshot } from 'xstate';\n * import { trafficLightMachine } from './trafficLightMachine.ts';\n *\n * const nextSnapshot = getNextSnapshot(\n * trafficLightMachine, // actor logic\n * undefined, // snapshot (or initial state if undefined)\n * { type: 'TIMER' }\n * ); // event object\n *\n * console.log(nextSnapshot.value);\n * // => 'yellow'\n *\n * const nextSnapshot2 = getNextSnapshot(\n * trafficLightMachine, // actor logic\n * nextSnapshot, // snapshot\n * { type: 'TIMER' }\n * ); // event object\n *\n * console.log(nextSnapshot2.value);\n * // =>'red'\n * ```\n */\nfunction getNextSnapshot(actorLogic, snapshot, event) {\n const inertActorScope = createInertActorScope(actorLogic);\n inertActorScope.self._snapshot = snapshot;\n return actorLogic.transition(snapshot, event, inertActorScope);\n}\n\n// at the moment we allow extra actors - ones that are not specified by `children`\n// this could be reconsidered in the future\n\nfunction setup({\n schemas,\n actors,\n actions,\n guards,\n delays\n}) {\n return {\n createMachine: config => createMachine({\n ...config,\n schemas\n }, {\n actors,\n actions,\n guards,\n delays\n })\n };\n}\n\nclass SimulatedClock {\n constructor() {\n this.timeouts = new Map();\n this._now = 0;\n this._id = 0;\n this._flushing = false;\n this._flushingInvalidated = false;\n }\n now() {\n return this._now;\n }\n getId() {\n return this._id++;\n }\n setTimeout(fn, timeout) {\n this._flushingInvalidated = this._flushing;\n const id = this.getId();\n this.timeouts.set(id, {\n start: this.now(),\n timeout,\n fn\n });\n return id;\n }\n clearTimeout(id) {\n this._flushingInvalidated = this._flushing;\n this.timeouts.delete(id);\n }\n set(time) {\n if (this._now > time) {\n throw new Error('Unable to travel back in time');\n }\n this._now = time;\n this.flushTimeouts();\n }\n flushTimeouts() {\n if (this._flushing) {\n this._flushingInvalidated = true;\n return;\n }\n this._flushing = true;\n const sorted = [...this.timeouts].sort(([_idA, timeoutA], [_idB, timeoutB]) => {\n const endA = timeoutA.start + timeoutA.timeout;\n const endB = timeoutB.start + timeoutB.timeout;\n return endB > endA ? -1 : 1;\n });\n for (const [id, timeout] of sorted) {\n if (this._flushingInvalidated) {\n this._flushingInvalidated = false;\n this._flushing = false;\n this.flushTimeouts();\n return;\n }\n if (this.now() - timeout.start >= timeout.timeout) {\n this.timeouts.delete(id);\n timeout.fn.call(null);\n }\n }\n this._flushing = false;\n }\n increment(ms) {\n this._now += ms;\n this.flushTimeouts();\n }\n}\n\n/**\n * Returns a promise that resolves to the `output` of the actor when it is done.\n *\n * @example\n *\n * ```ts\n * const machine = createMachine({\n * // ...\n * output: {\n * count: 42\n * }\n * });\n *\n * const actor = createActor(machine);\n *\n * actor.start();\n *\n * const output = await toPromise(actor);\n *\n * console.log(output);\n * // logs { count: 42 }\n * ```\n */\nfunction toPromise(actor) {\n return new Promise((resolve, reject) => {\n actor.subscribe({\n complete: () => {\n resolve(actor.getSnapshot().output);\n },\n error: reject\n });\n });\n}\n\nconst defaultWaitForOptions = {\n timeout: Infinity // much more than 10 seconds\n};\n\n/**\n * Subscribes to an actor ref and waits for its emitted value to satisfy a\n * predicate, and then resolves with that value. Will throw if the desired state\n * is not reached after an optional timeout. (defaults to Infinity).\n *\n * @example\n *\n * ```js\n * const state = await waitFor(someService, (state) => {\n * return state.hasTag('loaded');\n * });\n *\n * state.hasTag('loaded'); // true\n * ```\n *\n * @param actorRef The actor ref to subscribe to\n * @param predicate Determines if a value matches the condition to wait for\n * @param options\n * @returns A promise that eventually resolves to the emitted value that matches\n * the condition\n */\nfunction waitFor(actorRef, predicate, options) {\n const resolvedOptions = {\n ...defaultWaitForOptions,\n ...options\n };\n return new Promise((res, rej) => {\n const {\n signal\n } = resolvedOptions;\n if (signal?.aborted) {\n rej(signal.reason);\n return;\n }\n let done = false;\n const handle = resolvedOptions.timeout === Infinity ? undefined : setTimeout(() => {\n dispose();\n rej(new Error(`Timeout of ${resolvedOptions.timeout} ms exceeded`));\n }, resolvedOptions.timeout);\n const dispose = () => {\n clearTimeout(handle);\n done = true;\n sub?.unsubscribe();\n if (abortListener) {\n signal.removeEventListener('abort', abortListener);\n }\n };\n function checkEmitted(emitted) {\n if (predicate(emitted)) {\n dispose();\n res(emitted);\n }\n }\n\n /**\n * If the `signal` option is provided, this will be the listener for its\n * `abort` event\n */\n let abortListener;\n let sub; // avoid TDZ when disposing synchronously\n\n // See if the current snapshot already matches the predicate\n checkEmitted(actorRef.getSnapshot());\n if (done) {\n return;\n }\n\n // only define the `abortListener` if the `signal` option is provided\n if (signal) {\n abortListener = () => {\n dispose();\n // XState does not \"own\" the signal, so we should reject with its reason (if any)\n rej(signal.reason);\n };\n signal.addEventListener('abort', abortListener);\n }\n sub = actorRef.subscribe({\n next: checkEmitted,\n error: err => {\n dispose();\n rej(err);\n },\n complete: () => {\n dispose();\n rej(new Error(`Actor terminated without satisfying predicate`));\n }\n });\n if (done) {\n sub.unsubscribe();\n }\n });\n}\n\nexport { SimulatedClock, StateMachine, StateNode, assertEvent, createMachine, getInitialSnapshot, getNextSnapshot, setup, toPromise, waitFor };\n","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/connection/index.ts\nvar connection_exports = {};\n__export(connection_exports, {\n Connection: () => Connection,\n DEVICE_REMOVED: () => DEVICE_REMOVED,\n DEVICE_UNKNOWN: () => DEVICE_UNKNOWN,\n ENCRYPTION_FAILURE: () => ENCRYPTION_FAILURE,\n IDENTITY_PROOF_INVALID: () => IDENTITY_PROOF_INVALID,\n INVITATION_PROOF_INVALID: () => INVITATION_PROOF_INVALID,\n JOINED_WRONG_TEAM: () => JOINED_WRONG_TEAM,\n MEMBER_REMOVED: () => MEMBER_REMOVED,\n NEITHER_IS_MEMBER: () => NEITHER_IS_MEMBER,\n SERVER_REMOVED: () => SERVER_REMOVED,\n TIMEOUT: () => TIMEOUT,\n connectionErrors: () => connectionErrors,\n createErrorMessage: () => createErrorMessage,\n isInviteeClaim: () => isInviteeClaim,\n isInviteeContext: () => isInviteeContext,\n isInviteeDeviceClaim: () => isInviteeDeviceClaim,\n isInviteeDeviceContext: () => isInviteeDeviceContext,\n isInviteeMemberClaim: () => isInviteeMemberClaim,\n isInviteeMemberContext: () => isInviteeMemberContext,\n isMemberClaim: () => isMemberClaim,\n isMemberContext: () => isMemberContext,\n isServerContext: () => isServerContext\n});\n\n// src/connection/Connection.ts\nimport { EventEmitter as EventEmitter3 } from \"@herbcaudill/eventemitter42\";\nimport {\n generateMessage,\n headsAreEqual,\n initSyncState,\n receiveMessage,\n redactKeys as redactKeys4\n} from \"@localfirst/crdx\";\nimport { asymmetric as asymmetric3, randomKeyBytes, symmetric as symmetric2 } from \"@localfirst/crypto\";\nimport { assert as assert8, debug as debug4 } from \"@localfirst/shared\";\n\n// src/connection/deriveSharedKey.ts\nimport { hash, hashBytes, base58 } from \"@localfirst/crypto\";\n\n// src/util/actionFingerprint.ts\nvar actionFingerprint = (link) => {\n const fingerprintPayload = (action) => {\n switch (action.type) {\n case \"ADD_MEMBER\": {\n return action.payload.member.userId;\n }\n case \"REMOVE_MEMBER\": {\n return action.payload.userId;\n }\n case \"ADD_ROLE\": {\n return action.payload.roleName;\n }\n case \"ADD_MEMBER_ROLE\":\n case \"REMOVE_MEMBER_ROLE\": {\n return `${action.payload.roleName}:${action.payload.userId}`;\n }\n case \"ADD_DEVICE\": {\n return action.payload.device.deviceName;\n }\n case \"REMOVE_DEVICE\": {\n return action.payload.deviceId;\n }\n case \"INVITE_MEMBER\":\n case \"INVITE_DEVICE\": {\n return action.payload.invitation.id;\n }\n case \"REVOKE_INVITATION\": {\n return action.payload.id;\n }\n case \"ADMIT_MEMBER\":\n case \"ADMIT_DEVICE\": {\n return action.payload.id;\n }\n case \"CHANGE_MEMBER_KEYS\": {\n return JSON.stringify(action.payload.keys);\n }\n default: {\n return JSON.stringify(action.payload);\n }\n }\n };\n if (link.body.type === \"ROOT\") {\n return \"ROOT\";\n }\n return `${link.body.type}:${fingerprintPayload(link.body)}`;\n};\n\n// src/util/arraysAreEqual.ts\nvar arraysAreEqual = (a, b) => {\n if (!a || !b)\n return false;\n const normalize2 = (array) => array.sort().join(\",\");\n return normalize2(a) === normalize2(b);\n};\n\n// src/util/graphSummary.ts\nimport { getSequence } from \"@localfirst/crdx\";\n\n// src/team/membershipResolver.ts\nimport { getConcurrentBubbles } from \"@localfirst/crdx\";\n\n// src/team/isAdminOnlyAction.ts\nvar isAdminOnlyAction = (action) => {\n const nonAdminActions = [\n \"INVITE_DEVICE\",\n \"ADD_DEVICE\",\n \"REMOVE_DEVICE\",\n \"CHANGE_MEMBER_KEYS\",\n \"CHANGE_SERVER_KEYS\",\n \"ADMIT_MEMBER\",\n \"ADMIT_DEVICE\"\n ];\n return !nonAdminActions.includes(action.type);\n};\n\n// src/role/index.ts\nvar role_exports = {};\n__export(role_exports, {\n ADMIN: () => ADMIN\n});\n\n// src/role/constants.ts\nvar ADMIN = \"admin\";\n\n// src/team/bySeniority.ts\nimport { isPredecessor } from \"@localfirst/crdx\";\nimport { assert } from \"@localfirst/shared\";\nvar bySeniority = (chain) => (a, b) => {\n if (isFounder(chain, a))\n return -1;\n if (isFounder(chain, b))\n return 1;\n const linkThatAddedMember = (userId) => {\n const addedMember = (link) => link.body.type === \"ADD_MEMBER\" && link.body.payload.member.userId === userId;\n const result = Object.values(chain.links).find(addedMember);\n assert(result, `Could not find link that added member ${userId}`);\n return result;\n };\n const [addedA, addedB] = [a, b].map(linkThatAddedMember);\n return isPredecessor(chain, addedA, addedB) ? -1 : 1;\n};\nvar isFounder = (chain, userId) => {\n const rootLink = chain.links[chain.root];\n return rootLink.body.userId === userId;\n};\n\n// src/team/membershipResolver.ts\nvar membershipResolver = (graph) => {\n const bubbles = getConcurrentBubbles(graph).map((hashes) => hashes.map((hash3) => graph.links[hash3]));\n const invalidLinks = [];\n for (let bubble of bubbles) {\n for (const ruleName in membershipRules) {\n const rule = membershipRules[ruleName];\n const invalidLinksByThisRule = rule(bubble, graph);\n const alsoInvalid = invalidLinksByThisRule.flatMap((link) => findDependentLinks(bubble, link));\n invalidLinks.push(...invalidLinksByThisRule, ...alsoInvalid);\n bubble = bubble.filter(linkNotIn(invalidLinks));\n }\n }\n return {\n filter: linkNotIn(invalidLinks)\n };\n};\nvar findDependentLinks = (bubble, invalidLink) => {\n const dependentLinks = [];\n switch (invalidLink.body.type) {\n case \"INVITE_MEMBER\":\n case \"INVITE_DEVICE\": {\n const { invitation } = invalidLink.body.payload;\n dependentLinks.push(...bubble.filter(usesInvitation(invitation)));\n break;\n }\n case \"ADMIT_MEMBER\": {\n const userId = invalidLink.body.payload.memberKeys.name;\n dependentLinks.push(...bubble.filter(authorIs(userId)));\n break;\n }\n default: {\n break;\n }\n }\n const alsoInvalid = dependentLinks.flatMap((l) => findDependentLinks(bubble, l));\n return dependentLinks.concat(alsoInvalid);\n};\nvar membershipRules = {\n // RULE: mutual and circular removals are resolved by seniority\n resolveMutualRemovals(links, chain) {\n const removed = getRemovedAndDemotedMembers(links);\n const removers = getRemovalsAndDemotions(links).map(getAuthor);\n const isCircularRemoval = removed.length > 0 && arraysAreEqual(removed, removers);\n if (!isCircularRemoval) {\n return [];\n }\n return links.filter(authorIs(leastSenior(chain, removers)));\n },\n // RULE: If A is removing C, B can't overcome this by concurrently removing C then adding C back\n cantAddBackRemovedMember(links) {\n const removedMembers = getRemovedAndDemotedMembers(links);\n return getAdditions(links).filter((link) => removedMembers.includes(addedUserId(link)));\n },\n // RULE: If B is removed, anything they do concurrently is omitted\n cantDoAnythingWhenRemoved(links) {\n const removedMembers = getRemovedMembers(links);\n return links.filter(authorIn(removedMembers));\n },\n // RULE: If B is demoted, any admin-only actions they do concurrently are omitted\n cantDoAdminActionsWhenDemoted(links) {\n const demotedMembers = getDemotedMembers(links);\n const authorDemoted = authorIn(demotedMembers);\n const isAdminOnly = (link) => isAdminOnlyAction(link.body);\n return links.filter((link) => authorDemoted(link) && isAdminOnly(link));\n }\n};\nvar leastSenior = (chain, userNames) => userNames.sort(bySeniority(chain)).pop();\nvar isAddAction = (link) => [\"ADD_MEMBER\", \"ADD_MEMBER_ROLE\", \"ADMIT_MEMBER\"].includes(link.body.type);\nvar isRemovalAction = (link) => link.body.type === \"REMOVE_MEMBER\";\nvar getAdditions = (links) => links.filter(isAddAction);\nvar getRemovals = (links) => links.filter(isRemovalAction);\nvar isDemotionAction = (link) => link.body.type === \"REMOVE_MEMBER_ROLE\" && link.body.payload.roleName === ADMIN;\nvar getDemotions = (links) => links.filter(isDemotionAction);\nvar getRemovalsAndDemotions = (links) => getRemovals(links).concat(getDemotions(links));\nvar getRemovedAndDemotedMembers = (links) => getRemovalsAndDemotions(links).map(getTarget);\nvar getRemovedMembers = (links) => getRemovals(links).map(getTarget);\nvar getDemotedMembers = (links) => getDemotions(links).map(getTarget);\nvar getTarget = (link) => link.body.payload.userId;\nvar getAuthor = (link) => link.body.userId;\nvar authorIs = (author) => (link) => getAuthor(link) === author;\nvar authorIn = (excludeList) => (link) => excludeList.includes(getAuthor(link));\nvar addedUserId = (link) => {\n switch (link.body.type) {\n case \"ADD_MEMBER\": {\n const addAction = link.body;\n return addAction.payload.member.userId;\n }\n case \"ADD_MEMBER_ROLE\": {\n const addAction = link.body;\n return addAction.payload.userId;\n }\n case \"ADMIT_MEMBER\": {\n const addAction = link.body;\n return addAction.payload.memberKeys.name;\n }\n }\n};\nvar linkNotIn = (excludeList) => (link) => !excludeList.includes(link);\nvar usesInvitation = (invitation) => (l) => (l.body.type === \"ADMIT_MEMBER\" || l.body.type === \"ADMIT_DEVICE\") && l.body.payload.id === invitation.id;\n\n// src/util/graphSummary.ts\nvar graphSummary = (graph) => {\n const links = getSequence(graph, membershipResolver).filter((l) => !l.isInvalid).map((l) => actionFingerprint(l)).join(\",\");\n return links;\n};\n\n// src/util/clone.ts\nimport { clone } from \"lodash-es\";\n\n// src/util/constants.ts\nvar SIGNATURE = \"SIGNATURE\";\nvar ENCRYPTION = \"ENCRYPTION\";\nvar SYMMETRIC = \"SYMMETRIC\";\nvar LINK_HASH = \"LINK_HASH\";\nvar LINK_TO_PREVIOUS = \"LINK_TO_PREVIOUS\";\nvar INVITATION = \"INVITATION\";\nvar DEVICE_ID = \"DEVICE_ID\";\nvar SHARED_KEY = \"SHARED_KEY\";\nvar HashPurpose = {\n SIGNATURE,\n ENCRYPTION,\n SYMMETRIC,\n LINK_HASH,\n LINK_TO_PREVIOUS,\n INVITATION,\n DEVICE_ID,\n SHARED_KEY\n};\nvar VALID = { isValid: true };\n\n// src/util/composeTransforms.ts\nvar composeTransforms = (transforms) => (state) => transforms.reduce((state2, transform) => transform(state2), state);\n\n// src/util/getScope.ts\nvar getScope = (x) => ({\n type: x.type,\n name: x.name\n});\n\n// src/util/lockboxSummary.ts\nvar lockboxSummary = (l) => `${l.recipient.name}(${trunc(l.recipient.publicKey)}):${l.contents.name}#${l.contents.generation}`;\nvar trunc = (s) => s.slice(0, 5);\n\n// src/util/scopesMatch.ts\nimport { assert as assert2 } from \"@localfirst/shared\";\nvar scopesMatch = (a, b) => {\n return a.type === b.type && a.name === b.name;\n};\nvar assertScopesMatch = (a, b) => {\n assert2(\n scopesMatch(a, b),\n `The scope of the new keys must match those of the old lockbox. \n New scope: ${JSON.stringify(getScope(a))} \n Old scope: ${JSON.stringify(getScope(b))}`\n );\n};\n\n// src/util/types.ts\nvar KeyType = {\n GRAPH: \"GRAPH\",\n TEAM: \"TEAM\",\n ROLE: \"ROLE\",\n USER: \"USER\",\n DEVICE: \"DEVICE\",\n SERVER: \"SERVER\",\n EPHEMERAL: \"EPHEMERAL\"\n};\nvar ValidationError = class extends Error {\n constructor(message, details) {\n super();\n this.message = message;\n this.details = details;\n }\n name;\n details;\n};\n\n// src/connection/deriveSharedKey.ts\nvar deriveSharedKey = (a, b) => {\n const aBytes = typeof a === \"string\" ? base58.decode(a) : a;\n const bBytes = typeof b === \"string\" ? base58.decode(b) : b;\n const concatenatedSeeds = [aBytes, bBytes].sort(byteArraySortComparator).reduce((result, seed) => new Uint8Array([...result, ...seed]), new Uint8Array());\n const hashFn = typeof a === \"string\" ? hash : hashBytes;\n return hashFn(HashPurpose.SHARED_KEY, concatenatedSeeds);\n};\nvar byteArraySortComparator = (a, b) => {\n const aString = a.toString();\n const bString = b.toString();\n if (aString < bString)\n return -1;\n if (aString > bString)\n return 1;\n return 0;\n};\n\n// src/connection/errors.ts\nvar DEVICE_REMOVED = \"DEVICE_REMOVED\";\nvar DEVICE_UNKNOWN = \"DEVICE_UNKNOWN\";\nvar ENCRYPTION_FAILURE = \"ENCRYPTION_FAILURE\";\nvar IDENTITY_PROOF_INVALID = \"IDENTITY_PROOF_INVALID\";\nvar INVITATION_PROOF_INVALID = \"INVITATION_PROOF_INVALID\";\nvar JOINED_WRONG_TEAM = \"JOINED_WRONG_TEAM\";\nvar MEMBER_REMOVED = \"MEMBER_REMOVED\";\nvar NEITHER_IS_MEMBER = \"NEITHER_IS_MEMBER\";\nvar SERVER_REMOVED = \"SERVER_REMOVED\";\nvar TIMEOUT = \"TIMEOUT\";\nvar connectionErrors = {\n [DEVICE_REMOVED]: {\n localMessage: \"The peer's device was removed from this team\",\n remoteMessage: \"Your device was removed from this team\"\n },\n [DEVICE_UNKNOWN]: {\n localMessage: \"The peer's device isn't listed on this team\",\n remoteMessage: \"Your device isn't listed on this team\"\n },\n [ENCRYPTION_FAILURE]: {\n localMessage: \"Unable to establish a secure connection\"\n },\n [IDENTITY_PROOF_INVALID]: {\n localMessage: \"The peer's proof of identity is not valid\",\n remoteMessage: \"Your proof of identity isn't valid\"\n },\n [INVITATION_PROOF_INVALID]: {\n localMessage: \"The peer's invitation wasn't accepted\",\n remoteMessage: \"Your invitation wasn't accepted\"\n },\n [JOINED_WRONG_TEAM]: {\n localMessage: \"This isn't the team you were invited to\",\n remoteMessage: \"This isn't the team the peer was invited to\"\n },\n [MEMBER_REMOVED]: {\n localMessage: \"The peer was removed from this team\",\n remoteMessage: \"You were removed from this team\"\n },\n [NEITHER_IS_MEMBER]: {\n localMessage: \"The peer is also holding an invitation and cannot admit you to the team\"\n },\n [SERVER_REMOVED]: {\n localMessage: \"The server was removed from this team\",\n remoteMessage: \"You (a server) were removed from this team\"\n },\n [TIMEOUT]: {\n localMessage: \"We didn't hear back from the peer; giving up\",\n remoteMessage: \"The peer didn't hear back from you, so they gave up\"\n }\n};\nvar createErrorMessage = (type, destination = \"LOCAL\") => {\n const { localMessage, remoteMessage = localMessage } = connectionErrors[type];\n const message = destination === \"LOCAL\" ? localMessage : remoteMessage;\n const messageType = destination === \"LOCAL\" ? \"LOCAL_ERROR\" : \"ERROR\";\n return { type: messageType, payload: { type, message } };\n};\n\n// src/connection/getDeviceUserFromGraph.ts\nimport { assert as assert6 } from \"@localfirst/shared\";\n\n// src/invitation/generateProof.ts\nimport { memoize as memoize2 } from \"@localfirst/shared\";\nimport { signatures } from \"@localfirst/crypto\";\n\n// src/invitation/deriveId.ts\nimport { hash as hash2, stretch } from \"@localfirst/crypto\";\nfunction deriveId(seed) {\n const stretchedKey = stretch(seed);\n return hash2(HashPurpose.INVITATION, stretchedKey).slice(0, 15);\n}\n\n// src/invitation/generateStarterKeys.ts\nimport { createKeyset, EPHEMERAL_SCOPE } from \"@localfirst/crdx\";\n\n// src/invitation/normalize.ts\nvar normalize = (secretKey) => secretKey.replaceAll(/[^a-z\\d]/gi, \"\");\n\n// src/invitation/generateStarterKeys.ts\nimport { memoize } from \"@localfirst/shared\";\nvar generateStarterKeys = memoize((seed) => {\n seed = normalize(seed);\n return createKeyset(EPHEMERAL_SCOPE, seed);\n});\n\n// src/invitation/generateProof.ts\nvar generateProof = memoize2((seed) => {\n seed = normalize(seed);\n const id = deriveId(seed);\n const ephemeralKeys = generateStarterKeys(seed);\n const payload = { id };\n const signature = signatures.sign(payload, ephemeralKeys.signature.secretKey);\n return { id, signature };\n});\n\n// src/team/serialize.ts\nimport {\n decryptGraph,\n getChildMap\n} from \"@localfirst/crdx\";\nimport { pack, unpack } from \"msgpackr\";\nvar serializeTeamGraph = (graph) => {\n const childMap = getChildMap(graph);\n const { encryptedLinks, head, root } = graph;\n const encryptedGraph = { encryptedLinks, childMap, head, root };\n const serialized = pack(encryptedGraph);\n return toUint8Array(serialized);\n};\nvar deserializeTeamGraph = (serialized, keys2) => {\n const encryptedGraph = unpack(serialized);\n return decryptGraph({ encryptedGraph, keys: keys2 });\n};\nvar maybeDeserialize = (source, teamKeyring2) => isGraph(source) ? source : deserializeTeamGraph(source, teamKeyring2);\nvar isGraph = (source) => source?.hasOwnProperty(\"root\");\nvar toUint8Array = (buf) => new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n\n// src/team/teamMachine.ts\nimport { makeMachine } from \"@localfirst/crdx\";\n\n// src/team/constants.ts\nvar ALL = \"ALL\";\nvar initialState = {\n head: [],\n teamName: \"\",\n members: [],\n servers: [],\n roles: [],\n lockboxes: [],\n invitations: {},\n messages: [],\n removedMembers: [],\n removedDevices: [],\n removedServers: [],\n pendingKeyRotations: []\n};\nvar TEAM_SCOPE = { type: KeyType.TEAM, name: KeyType.TEAM };\nvar ADMIN_SCOPE = { type: KeyType.ROLE, name: ADMIN };\nvar EPHEMERAL_SCOPE2 = {\n type: KeyType.EPHEMERAL,\n name: KeyType.EPHEMERAL\n};\n\n// src/team/reducer.ts\nimport { ROOT as ROOT2 } from \"@localfirst/crdx\";\n\n// src/team/invalidLinkReducer.ts\nvar invalidLinkReducer = (state, link) => {\n switch (link.body.type) {\n case \"ADMIT_MEMBER\": {\n const keys2 = link.body.payload.memberKeys;\n const userId = keys2.name;\n const member2 = {\n userName: \"\",\n // not needed here\n userId,\n keys: keys2,\n roles: []\n };\n const removedMembers = [...state.removedMembers, member2];\n const pendingKeyRotations = [...state.pendingKeyRotations];\n if (!pendingKeyRotations.includes(userId)) {\n pendingKeyRotations.push(userId);\n }\n return {\n ...state,\n // Note that we don't need to alter the list of members, because this member is never added\n removedMembers,\n pendingKeyRotations\n };\n }\n default: {\n break;\n }\n }\n return state;\n};\n\n// src/team/setHead.ts\nvar setHead = (link) => (state) => ({ ...state, head: [link.hash] });\n\n// src/team/transforms/addDevice.ts\nvar addDevice = (device2) => (state) => {\n const { userId } = device2;\n return {\n ...state,\n // Add device to the member's list of devices\n members: state.members.map((member2) => {\n if (member2.userId === userId) {\n const { devices = [] } = member2;\n if (devices.find((d) => d.deviceId === device2.deviceId)) {\n return member2;\n } else\n return {\n ...member2,\n devices: [...devices, device2]\n };\n }\n return member2;\n }),\n // Remove device ID from list of removed devices (e.g. if it was removed at one point and is being re-added)\n removedDevices: state.removedDevices.filter((d) => d.keys.name === device2.deviceId)\n };\n};\n\n// src/team/transforms/addMember.ts\nvar addMember = (newMember) => (state) => ({\n ...state,\n // Add member to the team's list of members\n members: [\n ...state.members,\n {\n ...newMember,\n roles: []\n }\n ],\n // Remove member's name from list of removed members (e.g. if member was removed and is now being re-added)\n removedMembers: state.removedMembers.filter((m) => m.userId === newMember.userId)\n});\n\n// src/team/transforms/addMemberRoles.ts\nvar addMemberRoles = (userId, roles = []) => roles.map((roleName) => (state) => ({\n ...state,\n members: state.members.map((member2) => ({\n ...member2,\n roles: member2.userId !== userId || member2.roles.includes(roleName) ? member2.roles : [...member2.roles, roleName]\n }))\n}));\n\n// src/team/transforms/addMessage.ts\nvar addMessage = (message) => (state) => ({\n ...state,\n messages: [...state.messages, message]\n});\n\n// src/team/transforms/addRole.ts\nvar addRole = (newRole) => (state) => ({\n ...state,\n roles: [...state.roles, newRole]\n});\n\n// src/util/unique.ts\nimport { uniqBy } from \"lodash-es\";\nvar unique = uniqBy;\n\n// src/team/transforms/addServer.ts\nvar addServer = (newServer) => (state) => {\n const newState = {\n ...state,\n // Add server to the team's list of servers\n servers: unique([...state.servers, newServer]),\n // Remove server's url from list of removed servers (e.g. if server was removed and is now being re-added)\n removedServers: state.removedServers.filter((m) => m.host !== newServer.host)\n };\n return newState;\n};\n\n// src/team/transforms/changeMemberKeys.ts\nvar changeMemberKeys = (keys2) => (state) => ({\n ...state,\n members: state.members.map(\n (member2) => member2.userId === keys2.name ? {\n ...member2,\n keys: keys2\n // 🡐 replace keys with new ones\n } : member2\n )\n});\n\n// src/team/transforms/changeServerKeys.ts\nvar changeServerKeys = (keys2) => (state) => ({\n ...state,\n servers: state.servers.map(\n (server2) => server2.host === keys2.name ? {\n ...server2,\n keys: keys2\n // 🡐 replace keys with new ones\n } : server2\n )\n});\n\n// src/team/transforms/collectLockboxes.ts\nvar collectLockboxes = (newLockboxes) => (state) => {\n const { lockboxes } = state;\n return newLockboxes ? { ...state, lockboxes: lockboxes.concat(newLockboxes) } : state;\n};\n\n// src/team/transforms/postInvitation.ts\nvar postInvitation = (invitation) => (state) => {\n const invitationState = {\n ...invitation,\n uses: 0,\n revoked: false\n };\n return {\n ...state,\n invitations: {\n ...state.invitations,\n [invitation.id]: invitationState\n }\n };\n};\n\n// src/team/selectors/device.ts\nimport { assert as assert3 } from \"@localfirst/shared\";\n\n// src/team/selectors/server.ts\nvar server = (state, host, options = { includeRemoved: false }) => {\n const serversToSearch = [\n ...state.servers,\n ...options.includeRemoved ? state.removedServers : []\n ];\n const server2 = serversToSearch.find((s) => s.host === host);\n if (server2 === void 0) {\n throw new Error(`A server with host '${host}' was not found`);\n }\n return server2;\n};\n\n// src/team/selectors/hasServer.ts\nvar hasServer = (state, host) => state.servers.find((s) => s.host === host) !== void 0;\n\n// src/server/castServer.ts\nvar toMember = (server2) => ({\n userId: server2.host,\n userName: server2.host,\n keys: server2.keys,\n roles: []\n});\nvar toUser = (server2) => ({\n userId: server2.host,\n userName: server2.host,\n keys: server2.keys\n});\nvar toDevice = (server2) => ({\n userId: server2.host,\n deviceName: server2.host,\n deviceId: server2.host,\n keys: server2.keys\n});\nvar castServer = { toMember, toUser, toDevice };\n\n// src/team/selectors/device.ts\nvar hasDevice = (state, deviceId, options = { includeRemoved: false }) => {\n return getDevice(state, deviceId, options) !== void 0;\n};\nvar device = (state, deviceId, options = { includeRemoved: false }) => {\n const device2 = getDevice(state, deviceId, options);\n assert3(device2, `Device ${deviceId} not found`);\n return device2;\n};\nvar getDevice = (state, deviceId, options = { includeRemoved: false }) => {\n if (hasServer(state, deviceId)) {\n return castServer.toDevice(server(state, deviceId));\n }\n const members = state.members.concat(options.includeRemoved ? state.removedMembers : []);\n const allDevices = members.flatMap((m) => m.devices ?? []);\n return allDevices.find((d) => d.deviceId === deviceId) ?? (options.includeRemoved ? state.removedDevices.find((d) => d.deviceId === deviceId) : void 0);\n};\n\n// src/team/selectors/deviceWasRemoved.ts\nvar deviceWasRemoved = (state, deviceId) => {\n if (!hasDevice(state, deviceId, { includeRemoved: true }))\n return false;\n return state.removedDevices.some((d) => d.keys.name === deviceId);\n};\n\n// src/team/selectors/hasMember.ts\nvar hasMember = (state, userId) => state.members.find((m) => m.userId === userId) !== void 0;\n\n// src/team/selectors/hasRole.ts\nvar hasRole = (state, roleName) => state.roles.find((r) => r.roleName === roleName) !== void 0;\n\n// src/team/selectors/invitation.ts\nimport { assert as assert4 } from \"@localfirst/shared\";\nfunction hasInvitation(state, id) {\n return id in state.invitations;\n}\nfunction getInvitation(state, id) {\n assert4(hasInvitation(state, id), `No invitation with id '${id}' found.`);\n const invitation = state.invitations[id];\n return invitation;\n}\n\n// src/lockbox/create.ts\nimport { EPHEMERAL_SCOPE as EPHEMERAL_SCOPE3, redactKeys } from \"@localfirst/crdx\";\nimport { asymmetric } from \"@localfirst/crypto\";\n\n// src/lockbox/types.ts\nvar isKeyManifest = (keys2) => keys2.hasOwnProperty(\"publicKey\");\n\n// src/lockbox/create.ts\nvar create = (contents, recipientKeys) => {\n const redactedRecipientKeys = isKeyManifest(recipientKeys) ? recipientKeys : redactKeys(recipientKeys);\n const redactedContents = redactKeys(contents);\n const encryptionKeys = asymmetric.keyPair();\n const recipientPublicKey = isKeyManifest(redactedRecipientKeys) ? redactedRecipientKeys.publicKey : redactedRecipientKeys.encryption;\n const encryptedPayload = asymmetric.encryptBytes({\n secret: contents,\n recipientPublicKey,\n senderSecretKey: encryptionKeys.secretKey\n });\n const lockbox = {\n encryptionKey: {\n ...EPHEMERAL_SCOPE3,\n publicKey: encryptionKeys.publicKey\n },\n recipient: {\n ...redactedRecipientKeys,\n publicKey: recipientPublicKey\n },\n contents: {\n ...redactedContents,\n publicKey: contents.encryption.publicKey\n },\n encryptedPayload\n };\n return lockbox;\n};\n\n// src/lockbox/open.ts\nimport { memoize as memoize3 } from \"@localfirst/shared\";\nimport { asymmetric as asymmetric2 } from \"@localfirst/crypto\";\nvar open = memoize3(\n (lockbox, decryptionKeys) => {\n const { encryptionKey, encryptedPayload } = lockbox;\n const decrypted = asymmetric2.decryptBytes({\n cipher: encryptedPayload,\n senderPublicKey: encryptionKey.publicKey,\n recipientSecretKey: decryptionKeys.encryption.secretKey\n });\n const keys2 = decrypted;\n return keys2;\n }\n);\n\n// src/lockbox/rotate.ts\nvar rotate = ({\n oldLockbox,\n newContents,\n updatedRecipientKeys\n}) => {\n assertScopesMatch(newContents, oldLockbox.contents);\n if (updatedRecipientKeys) {\n assertScopesMatch(oldLockbox.recipient, updatedRecipientKeys);\n }\n newContents.generation = oldLockbox.contents.generation + 1;\n const recipientManifest = updatedRecipientKeys ?? oldLockbox.recipient;\n return create(newContents, recipientManifest);\n};\n\n// src/team/selectors/visibleKeys.ts\nvar visibleKeys = (state, keyset) => {\n const { lockboxes } = state;\n const { publicKey } = keyset.encryption;\n const lockboxesICanOpen = lockboxes.filter(({ recipient }) => recipient.publicKey === publicKey);\n const keysets = lockboxesICanOpen.map((lockbox) => open(lockbox, keyset));\n const keys2 = keysets.flatMap((keyset2) => visibleKeys(state, keyset2));\n return [...keysets, ...keys2];\n};\n\n// src/team/selectors/keyMap.ts\nvar keyMap = (state, deviceKeys) => {\n const allVisibleKeys = visibleKeys(state, deviceKeys);\n return allVisibleKeys.reduce(organizeKeysIntoMap, {});\n};\nvar organizeKeysIntoMap = (result, keys2) => {\n const { type, name, generation } = keys2;\n const keysetsForScope = result[type] ?? {};\n const keysetHistory = keysetsForScope[name] ?? [];\n keysetHistory[generation] = keys2;\n return {\n ...result,\n [type]: {\n ...keysetsForScope,\n [name]: keysetHistory\n }\n };\n};\n\n// src/team/selectors/keys.ts\nimport { assert as assert5 } from \"@localfirst/shared\";\nvar keys = (state, deviceKeys, scope) => {\n const { type, name } = scope;\n const keysFromLockboxes = keyMap(state, deviceKeys);\n const keys2 = keysFromLockboxes[type] ? keysFromLockboxes[type][name] : void 0;\n assert5(\n keys2,\n `Couldn't find keys: ${JSON.stringify(scope)}\n Device: ${deviceKeys.name}\n Available lockboxes: \n- ${state.lockboxes.map(lockboxSummary).join(\"\\n- \")} \n Keymap: ${JSON.stringify(keysFromLockboxes, null, 2)}`\n );\n const generation = \"generation\" in scope && scope.generation !== void 0 ? (\n // Return specific generation if requested\n scope.generation\n ) : (\n // Use latest generation by default\n keys2.length - 1\n );\n return keys2[generation];\n};\n\n// src/team/selectors/lockboxesInScope.ts\nvar lockboxesInScope = (state, scope) => {\n const lockboxes = state.lockboxes.filter(\n ({ contents }) => contents.type === scope.type && contents.name === scope.name\n );\n const latestGeneration = lockboxes.reduce(maxGeneration, 0);\n const latestLockboxes = lockboxes.filter(\n ({ contents }) => contents.generation === latestGeneration\n );\n return latestLockboxes;\n};\nvar maxGeneration = (max, lockbox) => {\n const { generation } = lockbox.contents;\n if (generation > max) {\n return generation;\n }\n return max;\n};\n\n// src/team/selectors/member.ts\nvar member = (state, userId, options = { includeRemoved: false }) => {\n const membersToSearch = [\n ...state.members,\n ...options.includeRemoved ? state.removedMembers : []\n ];\n const member2 = membersToSearch.find((m) => m.userId === userId);\n if (member2 === void 0) {\n throw new Error(`A member named '${userId}' was not found`);\n }\n return member2;\n};\n\n// src/team/selectors/memberByDeviceId.ts\nvar memberByDeviceId = (state, deviceId, options = { includeRemoved: false }) => {\n if (hasServer(state, deviceId))\n return castServer.toMember(server(state, deviceId));\n const { userId } = device(state, deviceId, options);\n return member(state, userId, options);\n};\n\n// src/team/selectors/memberHasRole.ts\nvar memberHasRole = (state, userId, role2) => {\n if (!hasMember(state, userId)) {\n return false;\n }\n const member2 = member(state, userId);\n const { roles = [] } = member2;\n return roles.includes(role2);\n};\nvar memberIsAdmin = (state, userId) => memberHasRole(state, userId, ADMIN);\n\n// src/team/selectors/memberWasRemoved.ts\nvar memberWasRemoved = (state, userId) => {\n return state.removedMembers.some((m) => m.userId === userId);\n};\n\n// src/team/selectors/membersInRole.ts\nvar membersInRole = (state, roleName) => state.members.filter((member2) => member2.roles?.includes(roleName));\nvar admins = (state) => membersInRole(state, ADMIN);\n\n// src/team/selectors/messages.ts\nvar messages = (state) => state.messages;\n\n// src/team/selectors/role.ts\nvar role = (state, roleName) => {\n const role2 = state.roles.find((r) => r.roleName === roleName);\n if (!role2)\n throw new Error(`A role called '${roleName}' was not found`);\n return role2;\n};\n\n// src/team/selectors/serverWasRemoved.ts\nvar serverWasRemoved = (state, host) => state.removedServers.some((s) => s.host === host);\n\n// src/team/selectors/teamKeyring.ts\nimport { createKeyring } from \"@localfirst/crdx\";\nvar { TEAM } = KeyType;\nvar teamKeyring = (state, keys2) => {\n const allTeamKeys = keyMap(state, keys2)[TEAM][TEAM];\n return createKeyring(allTeamKeys);\n};\n\n// src/team/selectors/visibleScopes.ts\nvar visibleScopes = (state, { type, name }) => {\n const scopes = state.lockboxes.filter(({ recipient }) => recipient.type === type && recipient.name === name).map(({ contents: { type: type2, name: name2 } }) => ({ type: type2, name: name2 }));\n const derivedScopes = scopes.flatMap((scope) => visibleScopes(state, scope));\n const allScopes = [...scopes, ...derivedScopes];\n return unique(allScopes, (s) => s.name + s.type);\n};\n\n// src/team/transforms/removeDevice.ts\nvar removeDevice = (deviceId) => (state) => {\n const removedDevice = device(state, deviceId);\n const { userId } = memberByDeviceId(state, deviceId);\n const removeDeviceFromMember = (member2) => member2.userId === userId ? {\n ...member2,\n devices: member2.devices?.filter((d) => d.deviceName !== removedDevice.deviceName)\n } : member2;\n const members = state.members.map(removeDeviceFromMember);\n const removedDevices = [...state.removedDevices, removedDevice];\n return {\n ...state,\n members,\n removedDevices\n };\n};\n\n// src/team/transforms/removeMember.ts\nvar removeMember = (userId) => (state) => {\n const remainingMembers = state.members.filter((m) => m.userId !== userId);\n const removedMember = state.members.find((m) => m.userId === userId);\n const removedMembers = [...state.removedMembers];\n if (removedMember)\n removedMembers.push(removedMember);\n return {\n ...state,\n members: remainingMembers,\n removedMembers\n };\n};\n\n// src/team/transforms/removeMemberRole.ts\nvar removeMemberRole = (userId, roleName) => (state) => ({\n ...state,\n // Remove this role from this member's list of roles\n members: state.members.map((member2) => ({\n ...member2,\n roles: member2.userId === userId ? member2.roles.filter((r) => r !== roleName) : member2.roles\n })),\n // Remove any lockboxes this member has for this role\n lockboxes: state.lockboxes.filter(\n (lockbox) => !(lockbox.recipient.name === userId && lockbox.contents.type === KeyType.ROLE && lockbox.contents.name === roleName)\n )\n});\n\n// src/team/transforms/removeRole.ts\nvar removeRole = (roleName) => (state) => ({\n ...state,\n // Remove this role\n roles: state.roles.filter((role2) => role2.roleName !== roleName),\n // Remove any lockboxes for this role\n lockboxes: state.lockboxes.filter(\n (lockbox) => !(lockbox.contents.type === KeyType.ROLE && lockbox.contents.name === roleName)\n )\n});\n\n// src/team/transforms/removeServer.ts\nvar removeServer = (host) => (state) => {\n const remainingServers = state.servers.filter((m) => m.host !== host);\n const removedServer = state.servers.find((m) => m.host === host);\n const removedServers = [...state.removedServers];\n if (removedServer) {\n removedServers.push(removedServer);\n }\n return {\n ...state,\n servers: remainingServers,\n removedServers\n };\n};\n\n// src/team/transforms/revokeInvitation.ts\nvar revokeInvitation = (id) => (state) => {\n const invitations = { ...state.invitations };\n const revokedInvitation = { ...invitations[id], revoked: true };\n return {\n ...state,\n invitations: {\n ...invitations,\n [id]: revokedInvitation\n }\n };\n};\n\n// src/team/transforms/rotateKeys.ts\nvar rotateKeys = (userId) => (state) => {\n const pendingKeyRotations = state.pendingKeyRotations.filter((u) => u !== userId);\n return {\n ...state,\n pendingKeyRotations\n };\n};\n\n// src/team/transforms/setTeamName.ts\nvar setTeamName = (teamName) => (state) => ({\n ...state,\n teamName\n});\n\n// src/team/transforms/useInvitation.ts\nvar useInvitation = (id) => (state) => {\n const invitations = { ...state.invitations };\n const invitationState = invitations[id];\n const uses = invitationState.uses + 1;\n return {\n ...state,\n invitations: {\n ...invitations,\n [id]: {\n ...invitationState,\n uses\n }\n }\n };\n};\n\n// src/team/validate.ts\nimport { debug, truncateHashes } from \"@localfirst/shared\";\nimport { ROOT } from \"@localfirst/crdx\";\n\n// src/invitation/index.ts\nvar invitation_exports = {};\n__export(invitation_exports, {\n IKEY_LENGTH: () => IKEY_LENGTH,\n InvitationValidationError: () => InvitationValidationError,\n create: () => create2,\n deriveId: () => deriveId,\n fail: () => fail,\n generateProof: () => generateProof,\n generateStarterKeys: () => generateStarterKeys,\n invitationCanBeUsed: () => invitationCanBeUsed,\n randomSeed: () => randomSeed,\n validate: () => validate\n});\n\n// src/invitation/create.ts\nvar IKEY_LENGTH = 16;\nvar create2 = ({\n seed,\n maxUses = 1,\n // By default an invitation can only be used once\n expiration = 0,\n // By default an invitation never expires\n userId\n}) => {\n seed = normalize(seed);\n const id = deriveId(seed);\n const starterKeys = generateStarterKeys(seed);\n const { publicKey } = starterKeys.signature;\n return { id, publicKey, expiration, maxUses, userId };\n};\n\n// src/invitation/randomSeed.ts\nimport { randomKey } from \"@localfirst/crypto\";\nvar randomSeed = (length = IKEY_LENGTH) => randomKey(length);\n\n// src/invitation/validate.ts\nimport { memoize as memoize4 } from \"@localfirst/shared\";\nimport { signatures as signatures2 } from \"@localfirst/crypto\";\nvar invitationCanBeUsed = (invitation, timeOfUse) => {\n const { revoked, maxUses, uses, expiration } = invitation;\n if (revoked) {\n return fail(\"The invitation has been revoked\");\n }\n if (maxUses > 0 && uses >= maxUses) {\n return fail(\"The invitation cannot be used again\");\n }\n if (expiration > 0 && expiration < timeOfUse) {\n return fail(\"The invitation has expired\");\n }\n return VALID;\n};\nvar validate = memoize4(\n (proof, invitation) => {\n const { id, signature } = proof;\n if (id !== invitation.id) {\n return fail(\"IDs don't match\", { proof, invitation });\n }\n const { publicKey } = invitation;\n const signatureIsValid = signatures2.verify({\n payload: { id },\n signature,\n publicKey\n });\n if (!signatureIsValid) {\n return fail(\"Signature provided is not valid\", { proof, invitation });\n }\n return VALID;\n }\n);\nvar fail = (message, details) => ({\n isValid: false,\n error: new InvitationValidationError(message, details)\n});\nvar InvitationValidationError = class extends Error {\n constructor(message, details) {\n super();\n this.name = \"Invitation validation failed\";\n this.message = message;\n this.details = details;\n }\n index;\n details;\n};\n\n// src/team/validate.ts\nvar log = debug.extend(\"auth:validate\");\nvar validate2 = (...args) => {\n for (const key in validators) {\n const validator = validators[key];\n const validation = validator(...args);\n if (!validation.isValid) {\n return validation;\n }\n }\n return VALID;\n};\nvar validators = {\n rootDeviceBelongsToRootUser(...args) {\n const [_previousState, link] = args;\n const { type, payload } = link.body;\n if (type !== \"ROOT\")\n return VALID;\n const { rootDevice, rootMember } = payload;\n if (rootDevice.userId !== rootMember.userId) {\n const msg = \"The founding device must belong to the founding member (userIds must match).\";\n return fail2(msg, ...args);\n }\n return VALID;\n },\n /** The user who made these changes was a member with appropriate rights at the time */\n mustBeAdmin(...args) {\n const [previousState, link] = args;\n const action = link.body;\n const { type, userId } = action;\n if (type === ROOT)\n return VALID;\n if (isAdminOnlyAction(action)) {\n const isntAdmin = !memberIsAdmin(previousState, userId);\n if (isntAdmin) {\n return fail2(`Member '${userId}' is not an admin`, ...args);\n }\n }\n return VALID;\n },\n /** Unless I'm an admin, I can't remove anyone's devices but my own */\n canOnlyRemoveYourOwnDevices(...args) {\n const [previousState, link] = args;\n const author = link.body.userId;\n const authorIsAdmin = memberIsAdmin(previousState, author);\n if (authorIsAdmin)\n return VALID;\n if (link.body.type === \"REMOVE_DEVICE\") {\n const target = link.body.payload.deviceId;\n const device2 = device(previousState, target);\n const deviceOwner = device2.userId;\n if (author !== deviceOwner) {\n return fail2(\"Can't remove another user's device.\", ...args);\n }\n }\n return VALID;\n },\n /** Unless I'm an admin, I can't change anyone's keys but my own */\n canOnlyChangeYourOwnKeys(...args) {\n const [previousState, link] = args;\n const author = link.body.userId;\n const authorIsAdmin = memberIsAdmin(previousState, author);\n if (!authorIsAdmin) {\n if (link.body.type === \"CHANGE_MEMBER_KEYS\") {\n const target = link.body.payload.keys.name;\n if (author !== target) {\n return fail2(\"Can't change another user's keys.\", ...args);\n }\n } else if (link.body.type === \"CHANGE_SERVER_KEYS\") {\n const target = link.body.payload.keys.name;\n if (author !== target) {\n return fail2(\"Can't change another server's keys.\", ...args);\n }\n }\n }\n return VALID;\n },\n /** Check for ADMIT with invitations that are revoked OR have been used more than maxUses OR are expired */\n cantAdmitWithInvalidInvitation(...args) {\n const [previousState, link] = args;\n if (link.body.type === \"ADMIT_MEMBER\" || link.body.type === \"ADMIT_DEVICE\") {\n const { id } = link.body.payload;\n const invitation = getInvitation(previousState, id);\n return invitationCanBeUsed(invitation, link.body.timestamp);\n }\n return VALID;\n }\n};\nvar fail2 = (message, previousState, link) => {\n message = truncateHashes(`${actionFingerprint(link)} ${message}`);\n log(message);\n return {\n isValid: false,\n error: new ValidationError(message, { prevState: previousState, link })\n };\n};\n\n// src/team/reducer.ts\nvar reducer = (state, link) => {\n if (link.isInvalid) {\n return invalidLinkReducer(state, link);\n }\n state = clone(state);\n const validation = validate2(state, link);\n if (!validation.isValid) {\n throw validation.error;\n }\n const action = link.body;\n const applyTransforms = composeTransforms([\n setHead(link),\n collectLockboxes(action.payload.lockboxes),\n // Any payload can include lockboxes\n ...getTransforms(action)\n // Get the specific transforms indicated by this action\n ]);\n const newState = applyTransforms(state);\n return newState;\n};\nvar getTransforms = (action) => {\n switch (action.type) {\n case ROOT2: {\n const { name, rootMember, rootDevice } = action.payload;\n return [\n setTeamName(name),\n addRole({ roleName: ADMIN }),\n // Create the admin role\n addMember(rootMember),\n // Add the founding member\n addDevice(rootDevice),\n // Add the founding member's device\n ...addMemberRoles(rootMember.userId, [ADMIN])\n // Make the founding member an admin\n ];\n }\n case \"ADD_MEMBER\": {\n const { member: member2, roles } = action.payload;\n return [\n addMember(member2),\n // Add this member to the team\n ...addMemberRoles(member2.userId, roles)\n // Add each of these roles to the member's list of roles\n ];\n }\n case \"ADD_ROLE\": {\n const newRole = action.payload;\n return [\n addRole(newRole)\n // Add this role to the team\n ];\n }\n case \"ADD_MEMBER_ROLE\": {\n const { userId, roleName } = action.payload;\n return [\n ...addMemberRoles(userId, [roleName])\n // Add this role to the member's list of roles\n ];\n }\n case \"REMOVE_MEMBER\": {\n const { userId } = action.payload;\n return [\n removeMember(userId)\n // Remove this member from the team\n ];\n }\n case \"ADD_DEVICE\": {\n const { device: device2 } = action.payload;\n return [\n addDevice(device2)\n // Add this device to the member's list of devices\n ];\n }\n case \"REMOVE_DEVICE\": {\n const { deviceId } = action.payload;\n return [\n removeDevice(deviceId)\n // Remove this device from the member's list of devices\n ];\n }\n case \"REMOVE_ROLE\": {\n const { roleName } = action.payload;\n return [\n removeRole(roleName)\n // Remove this role from the team\n ];\n }\n case \"REMOVE_MEMBER_ROLE\": {\n const { userId, roleName } = action.payload;\n return [\n removeMemberRole(userId, roleName)\n // Remove this role from the member's list of roles\n ];\n }\n case \"INVITE_MEMBER\": {\n const { invitation } = action.payload;\n return [\n postInvitation(invitation)\n // Add the invitation to the list of open invitations.\n ];\n }\n case \"INVITE_DEVICE\": {\n const { invitation } = action.payload;\n return [\n postInvitation(invitation)\n // Add the invitation to the list of open invitations.\n ];\n }\n case \"REVOKE_INVITATION\": {\n const { id } = action.payload;\n return [\n revokeInvitation(id)\n // Mark the invitation revoked so it can't be used\n ];\n }\n case \"ADMIT_MEMBER\": {\n const { id, memberKeys, userName } = action.payload;\n const userId = memberKeys.name;\n const member2 = {\n userId,\n userName,\n keys: memberKeys,\n roles: []\n };\n return [\n useInvitation(id),\n // Mark the invitation as used\n addMember(member2)\n // Add this member to the team\n ];\n }\n case \"ADMIT_DEVICE\": {\n const { id, device: device2 } = action.payload;\n return [\n useInvitation(id),\n // Mark the invitation as used\n addDevice(device2)\n // Add this device\n ];\n }\n case \"CHANGE_MEMBER_KEYS\": {\n const { keys: keys2 } = action.payload;\n return [\n changeMemberKeys(keys2)\n // Replace this member's public keys with the ones provided\n ];\n }\n case \"ROTATE_KEYS\": {\n const { userId } = action.payload;\n return [\n rotateKeys(userId)\n // Mark this member's keys as having been rotated (the rotated keys themselves are in the lockboxes)\n ];\n }\n case \"ADD_SERVER\": {\n const { server: server2 } = action.payload;\n return [\n addServer(server2)\n // Add the specified server to the team\n ];\n }\n case \"REMOVE_SERVER\": {\n const { host } = action.payload;\n return [\n removeServer(host)\n // Remove the specified server from the team\n ];\n }\n case \"CHANGE_SERVER_KEYS\": {\n const { keys: keys2 } = action.payload;\n return [\n changeServerKeys(keys2)\n // Replace this server's public keys with the ones provided\n ];\n }\n case \"MESSAGE\": {\n const { message } = action.payload;\n return [\n addMessage(message)\n // Add the message to the team's message log\n ];\n }\n case \"SET_TEAM_NAME\": {\n const { teamName } = action.payload;\n return [\n setTeamName(teamName)\n // Set the team's name\n ];\n }\n default: {\n throw unrecognizedLinkType(action);\n }\n }\n};\nfunction unrecognizedLinkType(action) {\n const { type } = action;\n return new Error(`Unrecognized link type: ${type}`);\n}\n\n// src/team/teamMachine.ts\nvar teamMachine = makeMachine({ initialState, reducer, resolver: membershipResolver });\n\n// src/team/getTeamState.ts\nvar getTeamState = (serializedGraph, keyring) => {\n const graph = deserializeTeamGraph(serializedGraph, keyring);\n return teamMachine(graph);\n};\n\n// src/connection/getDeviceUserFromGraph.ts\nvar { USER } = KeyType;\nvar getDeviceUserFromGraph = ({\n serializedGraph,\n teamKeyring: teamKeyring2,\n invitationSeed\n}) => {\n const starterKeys = generateStarterKeys(invitationSeed);\n const invitationId = generateProof(invitationSeed).id;\n const state = getTeamState(serializedGraph, teamKeyring2);\n const { userId } = getInvitation(state, invitationId);\n assert6(userId);\n const { userName } = member(state, userId);\n assert6(userName);\n const userKeys = keys(state, starterKeys, { type: USER, name: userId });\n return {\n userName,\n userId,\n keys: userKeys\n };\n};\n\n// src/connection/identity.ts\nimport { signatures as signatures3, randomKey as randomKey2 } from \"@localfirst/crypto\";\nvar challenge = (identityClaim) => ({\n ...identityClaim,\n nonce: randomKey2(),\n timestamp: Date.now()\n});\nvar prove = (challenge2, keys2) => signatures3.sign(challenge2, keys2.signature.secretKey);\nvar verify = (challenge2, signature, publicKeys) => {\n const details = { challenge: challenge2, signature };\n const signatureIsValid = signatures3.verify({\n payload: challenge2,\n signature,\n publicKey: publicKeys.signature\n });\n if (!signatureIsValid) {\n return fail3(\"Signature is not valid\", details);\n }\n return VALID;\n};\nvar fail3 = (message, details) => ({\n isValid: false,\n error: new IdentityChallengeFailure(message, details)\n});\nvar IdentityChallengeFailure = class extends Error {\n constructor(message, details) {\n super();\n this.name = \"Identity challenge failed\";\n this.message = message + \"\\n\" + JSON.stringify(details, null, 2).replaceAll('\"', \"\");\n this.details = details;\n }\n details;\n};\n\n// src/device/index.ts\nvar device_exports = {};\n__export(device_exports, {\n createDevice: () => createDevice,\n redactDevice: () => redactDevice\n});\n\n// src/device/createDevice.ts\nimport { createKeyset as createKeyset2 } from \"@localfirst/crdx\";\nimport { createId } from \"@paralleldrive/cuid2\";\nimport { randomKey as randomKey3 } from \"@localfirst/crypto\";\nvar createDevice = (userId, deviceName, seed = randomKey3()) => {\n const deviceId = createId();\n const keys2 = createKeyset2({ type: KeyType.DEVICE, name: deviceId }, seed);\n return { userId, deviceId, deviceName, keys: keys2 };\n};\n\n// src/device/redact.ts\nimport { redactKeys as redactKeys2 } from \"@localfirst/crdx\";\nvar redactDevice = (device2) => ({\n userId: device2.userId,\n deviceId: device2.deviceId,\n deviceName: device2.deviceName,\n keys: redactKeys2(device2.keys)\n});\n\n// src/connection/Connection.ts\nimport { pack as pack2, unpack as unpack2 } from \"msgpackr\";\n\n// src/team/Team.ts\nimport { EventEmitter } from \"@herbcaudill/eventemitter42\";\nimport {\n createKeyset as createKeyset3,\n createStore,\n getLatestGeneration,\n isKeyset,\n redactKeys as redactKeys3\n} from \"@localfirst/crdx\";\nimport { randomKey as randomKey4, signatures as signatures4, symmetric } from \"@localfirst/crypto\";\nimport { assert as assert7, debug as debug2 } from \"@localfirst/shared\";\n\n// src/team/redactUser.ts\nimport { redactUser as _redactUser } from \"@localfirst/crdx\";\nvar redactUser = (user) => ({\n ..._redactUser(user),\n roles: []\n});\n\n// src/team/types.ts\nvar isNewTeam = (options) => \"teamName\" in options;\n\n// src/team/Team.ts\nvar { DEVICE, USER: USER2 } = KeyType;\nvar Team = class extends EventEmitter {\n state = initialState;\n store;\n context;\n log;\n seed;\n /**\n * We can make a team instance either by creating a brand-new team, or restoring one from a stored graph.\n */\n constructor(options) {\n super();\n this.seed = options.seed ?? randomKey4();\n if (\"user\" in options.context) {\n this.context = options.context;\n } else {\n const { server: server2 } = options.context;\n this.context = {\n ...options.context,\n device: castServer.toDevice(server2),\n user: castServer.toUser(server2)\n };\n }\n const { device: device2, user } = this.context;\n this.log = debug2.extend(`auth:team:${this.userName}`);\n if (isNewTeam(options)) {\n assert7(!this.isServer, `Servers can't create teams`);\n const lockboxTeamKeysForMember = create(options.teamKeys, user.keys);\n const adminKeys = createKeyset3(ADMIN_SCOPE, this.seed);\n const lockboxAdminKeysForMember = create(adminKeys, user.keys);\n const lockboxUserKeysForDevice = create(user.keys, this.context.device.keys);\n const rootPayload = {\n name: options.teamName,\n rootMember: redactUser(user),\n rootDevice: redactDevice(device2),\n lockboxes: [lockboxTeamKeysForMember, lockboxAdminKeysForMember, lockboxUserKeysForDevice]\n };\n this.store = createStore({\n user,\n reducer,\n resolver: membershipResolver,\n initialState,\n rootPayload,\n keys: options.teamKeys\n });\n } else {\n this.store = createStore({\n user,\n reducer,\n resolver: membershipResolver,\n initialState,\n graph: maybeDeserialize(options.source, options.teamKeyring),\n keys: options.teamKeyring\n });\n }\n this.state = this.store.getState();\n this.on(\"updated\", () => {\n this.checkForPendingKeyRotations();\n });\n }\n /** ************** PUBLIC API */\n get graph() {\n return this.store.getGraph();\n }\n /** We use the hash of the graph's root as a unique ID for the team. */\n get id() {\n return this.graph.root;\n }\n /** Returns this team's user-facing name. */\n get teamName() {\n return this.state.teamName;\n }\n setTeamName(teamName) {\n this.dispatch({ type: \"SET_TEAM_NAME\", payload: { teamName } });\n }\n /** ************** CONTEXT */\n get userName() {\n return this.context.user.userId;\n }\n get userId() {\n return this.context.user.userId;\n }\n get isServer() {\n return \"server\" in this.context;\n }\n /** ************** TEAM STATE\n *\n * All the logic for *reading* team state is in selectors (see `/team/selectors`).\n *\n * Most of the logic for *modifying* team state is in transforms (see `/team/transforms`), which\n * are executed by the reducer. To mutate team state, we dispatch changes to the graph, and then\n * run the graph through the reducer to recalculate team state.\n *\n * Any crypto operations involving the current user's secrets (for example, opening or creating\n * lockboxes, or signing links) are done here, not in the selectors or in the reducer. Only the\n * public-facing outputs (for example, the resulting lockboxesInScope, or the signed links) are\n * posted on the graph.\n */\n save = () => serializeTeamGraph(this.graph);\n /**\n * Merges another graph (e.g. from a peer) with ours.\n * @returns This `Team` instance.\n */\n merge = (theirGraph) => {\n this.store.merge(theirGraph);\n this.state = this.store.getState();\n this.emit(\"updated\", { head: this.graph.head });\n return this;\n };\n /** Add a link to the graph, then recompute team state from the new graph */\n dispatch(action, teamKeys = this.teamKeys()) {\n this.store.dispatch(action, teamKeys);\n this.state = this.store.getState();\n this.emit(\"updated\", { head: this.graph.head });\n }\n /** ************** MEMBERS */\n /** Returns true if the team has a member with the given userId */\n has = (userId) => hasMember(this.state, userId);\n // Overload: one member\n //\n members(userId = ALL, options = { includeRemoved: true }) {\n return userId === ALL ? this.state.members : member(this.state, userId, options);\n }\n /**\n * Adds a member to the team, along with an (optional) device. Since this method assumes that you\n * know the member's secret keys, it only makes sense for unit tests. In real-world scenarios,\n * you'll need to use the `team.invite` workflow to add members without relying on some kind of\n * public key infrastructure.\n *\n * This can be used to add a device for an existing member - just pass the existing user as the\n * first argument.\n */\n addForTesting = (user, roles = [], device2) => {\n const member2 = { ...redactUser(user), roles };\n if (!this.has(member2.userId)) {\n const lockboxes = this.createMemberLockboxes(member2);\n this.dispatch({\n type: \"ADD_MEMBER\",\n payload: { member: member2, roles, lockboxes }\n });\n }\n if (device2) {\n const lockboxUserKeysForDevice = create(user.keys, device2.keys);\n this.dispatch({\n type: \"ADD_DEVICE\",\n payload: { device: device2, lockboxes: [lockboxUserKeysForDevice] }\n });\n }\n };\n /** Remove a member from the team */\n remove = (userId) => {\n const lockboxes = this.rotateKeys({ type: USER2, name: userId });\n this.dispatch({\n type: \"REMOVE_MEMBER\",\n payload: {\n userId,\n lockboxes\n }\n });\n };\n /** Returns true if the member was once on the team but was removed */\n memberWasRemoved = (userId) => memberWasRemoved(this.state, userId);\n //\n roles(roleName = ALL) {\n return roleName === ALL ? this.state.roles : role(this.state, roleName);\n }\n /** Returns true if the member with the given userId has the given role */\n memberHasRole = (userId, roleName) => memberHasRole(this.state, userId, roleName);\n /** Returns true if the member with the given userId is a member of the 3 role */\n memberIsAdmin = (userId) => memberIsAdmin(this.state, userId);\n /** Returns true if the team has a role with the given name */\n hasRole = (roleName) => hasRole(this.state, roleName);\n /** Returns a list of members who have the given role */\n membersInRole = (roleName) => membersInRole(this.state, roleName);\n /** Returns a list of members who are in the admin role */\n admins = () => admins(this.state);\n /** Add a role to the team */\n addRole = (role2) => {\n if (typeof role2 === \"string\") {\n role2 = { roleName: role2 };\n }\n const roleKeys = createKeyset3({ type: KeyType.ROLE, name: role2.roleName }, this.seed);\n const lockboxRoleKeysForAdmins = create(roleKeys, this.adminKeys());\n this.dispatch({\n type: \"ADD_ROLE\",\n payload: { ...role2, lockboxes: [lockboxRoleKeysForAdmins] }\n });\n };\n /** Remove a role from the team */\n removeRole = (roleName) => {\n assert7(roleName !== ADMIN, \"Cannot remove admin role\");\n this.dispatch({\n type: \"REMOVE_ROLE\",\n payload: { roleName }\n });\n };\n /** Give a member a role */\n addMemberRole = (userId, roleName) => {\n const member2 = this.members(userId);\n const lockboxRoleKeysForMember = create(this.roleKeys(roleName), member2.keys);\n this.dispatch({\n type: \"ADD_MEMBER_ROLE\",\n payload: { userId, roleName, lockboxes: [lockboxRoleKeysForMember] }\n });\n };\n /** Remove a role from a member */\n removeMemberRole = (userId, roleName) => {\n if (roleName === ADMIN) {\n const adminCount = this.membersInRole(ADMIN).length;\n assert7(adminCount > 1, \"Can't remove the last admin\");\n }\n const lockboxes = this.rotateKeys({ type: KeyType.ROLE, name: roleName });\n this.dispatch({\n type: \"REMOVE_MEMBER_ROLE\",\n payload: { userId, roleName, lockboxes }\n });\n };\n /** ************** DEVICES */\n /** Returns true if the given member has a device by the given name */\n hasDevice = (deviceId, options) => hasDevice(this.state, deviceId, options);\n /** Find a member's device by name */\n device(deviceId, options) {\n return device(this.state, deviceId, options);\n }\n /** Remove a member's device */\n removeDevice = (deviceId) => {\n if (!this.hasDevice(deviceId))\n throw new Error(`Device ${deviceId} not found`);\n const lockboxes = this.rotateKeys({ type: DEVICE, name: deviceId });\n this.dispatch({\n type: \"REMOVE_DEVICE\",\n payload: {\n deviceId,\n lockboxes\n }\n });\n };\n /** Returns true if the device was once on the team but was removed */\n deviceWasRemoved = (deviceId) => {\n return deviceWasRemoved(this.state, deviceId);\n };\n /** Looks for a member that has this device. If none is found, return */\n memberByDeviceId = (deviceId, options) => {\n return memberByDeviceId(this.state, deviceId, options);\n };\n verifyIdentityProof = (challenge2, proof) => {\n assert7(challenge2.type === DEVICE);\n const deviceId = challenge2.name;\n const device2 = this.hasServer(deviceId) ? this.servers(deviceId) : this.device(deviceId, { includeRemoved: true });\n const validation = verify(challenge2, proof, device2.keys);\n return validation.isValid;\n };\n /** ************** INVITATIONS */\n /**\n * To invite a new member:\n *\n * Alice generates an invitation using a secret seed. The seed an be randomly generated, or\n * selected by Alice. Alice sends the invitation to Bob using a trusted channel.\n *\n * Meanwhile, Alice adds Bob to the graph as a new member, with appropriate roles (if\n * any) and any corresponding lockboxes.\n *\n * Bob can't authenticate directly as that member, since it has random temporary keys created by\n * Alice. Instead, Bob generates a proof of invitation, and when they try to connect to Alice or\n * Charlie they present that proof instead of authenticating.\n *\n * Once Alice or Charlie verifies Bob's proof, they send him the team graph. Bob uses that to\n * instantiate the team, then he updates the team with his real public keys and adds his current\n * device information.\n */\n inviteMember({\n seed = randomSeed(),\n expiration,\n maxUses\n } = {}) {\n seed = normalize(seed);\n const invitation = create2({ seed, expiration, maxUses });\n const { id } = invitation;\n this.dispatch({\n type: \"INVITE_MEMBER\",\n payload: { invitation }\n });\n return { id, seed };\n }\n /**\n * To invite an existing member's device:\n *\n * On his laptop, Bob generates an invitation using a secret seed. He gets that seed to his phone\n * using a QR code or by typing it in.\n *\n * On his phone, Bob connects to his laptop (or to Alice or Charlie). Bob's phone presents its\n * proof of invitation.\n *\n * Once an existing device (Bob's laptop or Alice or Charlie) verifies Bob's phone's proof, they\n * send it the team graph. Using the graph, the phone instantiates the team, then adds itself as\n * a device.\n */\n inviteDevice({\n seed = randomSeed(),\n expiration = Date.now() + 30 * 60 * 1e3\n } = {}) {\n assert7(!this.isServer, \"Servers can't invite a device\");\n seed = normalize(seed);\n const maxUses = 1;\n const invitation = create2({ seed, expiration, maxUses, userId: this.userId });\n const starterKeys = generateStarterKeys(seed);\n const lockboxUserKeysForDeviceStarterKeys = create(this.context.user.keys, starterKeys);\n const { id } = invitation;\n this.dispatch({\n type: \"INVITE_DEVICE\",\n payload: {\n invitation,\n lockboxes: [lockboxUserKeysForDeviceStarterKeys]\n }\n });\n return { id, seed };\n }\n /** Revoke an invitation. */\n revokeInvitation = (id) => {\n this.dispatch({\n type: \"REVOKE_INVITATION\",\n payload: { id }\n });\n };\n /** Returns true if the invitation has ever existed in this team (even if it's been used or revoked) */\n hasInvitation(id) {\n return hasInvitation(this.state, id);\n }\n /** Gets the invitation corresponding to the given id. If it does not exist, throws an error. */\n getInvitation = (id) => getInvitation(this.state, id);\n /** Check whether (1) the invitation is still valid, and (2) the proof of invitation checks out. */\n validateInvitation = (proof) => {\n const { id } = proof;\n if (!this.hasInvitation(id))\n return fail(\"This invitation code doesn't match.\");\n const invitation = this.getInvitation(id);\n const canBeUsedResult = invitationCanBeUsed(invitation, Date.now());\n if (canBeUsedResult !== VALID)\n return canBeUsedResult;\n return validate(proof, invitation);\n };\n /** An existing team member calls this to admit a new member & their device to the team based on proof of invitation */\n admitMember = (proof, memberKeys, userName) => {\n const validation = this.validateInvitation(proof);\n if (!validation.isValid)\n throw validation.error;\n const { id } = proof;\n const lockboxTeamKeysForMember = create(this.teamKeys(), memberKeys);\n this.dispatch({\n type: \"ADMIT_MEMBER\",\n payload: {\n id,\n userName,\n memberKeys: redactKeys3(memberKeys),\n lockboxes: [lockboxTeamKeysForMember]\n }\n });\n };\n /** An existing team member calls this to admit a new device based on proof of invitation */\n admitDevice = (proof, firstUseDevice) => {\n const validation = this.validateInvitation(proof);\n if (!validation.isValid)\n throw validation.error;\n const { id } = proof;\n const invitation = this.getInvitation(id);\n const userId = invitation.userId;\n const device2 = { ...firstUseDevice, userId };\n this.dispatch({\n type: \"ADMIT_DEVICE\",\n payload: {\n id,\n device: device2\n }\n });\n };\n /** Once the new member has received the graph and can instantiate the team, they call this to add their device. */\n join = (teamKeyring2) => {\n assert7(!this.isServer, \"Can't join as member on server\");\n const { user, device: device2 } = this.context;\n const teamKeys = getLatestGeneration(teamKeyring2);\n const lockboxUserKeysForDevice = create(user.keys, device2.keys);\n this.dispatch(\n {\n type: \"ADD_DEVICE\",\n payload: {\n device: redactDevice(device2),\n lockboxes: [lockboxUserKeysForDevice]\n }\n },\n teamKeys\n );\n };\n /** ************** SERVERS */\n /**\n * A server is an always-on, always-connected device that is available to the team but does not\n * belong to any one member. For example, `automerge-repo` calls this a \"sync server\".\n *\n * A server has a host name that uniquely identifies it (e.g. `example.com`, `localhost:8080`, or\n * `188.26.221.135`).\n *\n * The expected usage is for the application to add a server or servers immediately after the team\n * is created. However, the application can add or remove servers at any time.\n *\n * Just before adding a server, the application should send it the latest graph and the team keys\n * (so it can decrypt the team graph). No invitation or authentication is necessary in this phase,\n * as a TLS connection to a trusted address is sufficient to ensure the security of that\n * connection. In response, the server should send back its public keys. This library is not\n * involved in that process.\n *\n * The application should then add the server to the team using `addServer`, passing in the\n * server's public keys. At that point the server will be able to authenticate with other devices\n * using the same protocol as for members.\n *\n * The only actions that a server can dispatch to the graph are `ADMIT_MEMBER` and `ADMIT_DEVICE`.\n * The server needs to be able to admit invited members and devices in order to support\n * star-shaped networks where every device connects to a server, rather than directly to each\n * other.)\n */\n addServer = (server2) => {\n const lockboxes = this.createMemberLockboxes(castServer.toMember(server2));\n this.dispatch({\n type: \"ADD_SERVER\",\n payload: { server: server2, lockboxes }\n });\n };\n /** Removes a server from the team. */\n removeServer = (host) => {\n this.dispatch({\n type: \"REMOVE_SERVER\",\n payload: { host }\n });\n };\n // Overload: one server\n //\n servers(host = ALL, options = { includeRemoved: true }) {\n return host === ALL ? this.state.servers : server(this.state, host, options);\n }\n /** Returns true if the server was once on the team but was removed */\n serverWasRemoved = (host) => serverWasRemoved(this.state, host);\n hasServer = (host) => hasServer(this.state, host);\n /** ************** MESSAGES */\n addMessage = (message) => {\n this.dispatch({\n type: \"MESSAGE\",\n payload: { message }\n });\n };\n messages = () => messages(this.state);\n /** ************** CRYPTO */\n /**\n * Symmetrically encrypt a payload for the given scope using keys available to the current user.\n *\n * > *Note*: Since this convenience function uses symmetric encryption, we can only use it to\n * encrypt for scopes the current user has keys for (e.g. the whole team, or roles they belong\n * to). If we need to encrypt asymmetrically, we use the functions in the crypto module directly.\n */\n encrypt = (payload, roleName) => {\n const scope = roleName ? { type: KeyType.ROLE, name: roleName } : TEAM_SCOPE;\n const { secretKey, generation } = this.keys(scope);\n return {\n contents: symmetric.encryptBytes(payload, secretKey),\n recipient: { ...scope, generation }\n };\n };\n /** Decrypt a payload using keys available to the current user. */\n decrypt = (message) => {\n const { secretKey } = this.keys(message.recipient);\n return symmetric.decryptBytes(message.contents, secretKey);\n };\n /** Sign a message using the current user's keys. */\n sign = (contents) => {\n assert7(this.context.user);\n const {\n keys: {\n type,\n name,\n generation,\n signature: { secretKey }\n }\n } = this.context.user;\n return {\n contents,\n signature: signatures4.sign(contents, secretKey),\n author: { type, name, generation }\n };\n };\n /** Verify a signed message against the author's public key */\n verify = (message) => signatures4.verify({\n payload: message.contents,\n signature: message.signature,\n publicKey: this.members(message.author.name).keys.signature\n });\n /** ************** KEYS\n *\n * These methods all return keysets *with secrets* that are available to the local user. To get\n * other members' public keys, look up the member - the `keys` property contains their public keys.\n */\n /**\n * Returns the secret keyset (if available to the current device) for the given type and name. To\n * get other members' public keys, look up the member - the `keys` property contains their public\n * keys.\n */\n keys = (scope) => keys(this.state, this.context.device.keys, scope);\n /** Returns the keys for the given role. */\n roleKeys = (roleName, generation) => this.keys({ type: KeyType.ROLE, name: roleName, generation });\n /** Returns the current team keys or a specific generation of team keys */\n teamKeys = (generation) => this.keys({ ...TEAM_SCOPE, generation });\n teamKeyring = () => teamKeyring(this.state, this.context.device.keys);\n /** Returns the admin keyset. */\n adminKeys = (generation) => this.roleKeys(ADMIN, generation);\n /**\n * Replaces the current user or device's secret keyset with the one provided.\n * (This can also be used by an admin to change another user's secret keyset.)\n */\n changeKeys = (newKeys) => {\n const { device: device2, user } = this.context;\n const { type } = newKeys;\n assert7(type !== DEVICE, \"Can't change device keys\");\n const isForUser = type === USER2;\n const isForServer = type === KeyType.SERVER;\n const oldKeys = user.keys;\n newKeys.generation = oldKeys.generation + 1;\n const lockboxes = this.rotateKeys(newKeys);\n const action = isForUser ? \"CHANGE_MEMBER_KEYS\" : \"CHANGE_SERVER_KEYS\";\n const keys2 = redactKeys3(newKeys);\n this.dispatch({ type: action, payload: { keys: keys2, lockboxes } });\n if (isForServer || isForUser)\n user.keys = newKeys;\n if (isForServer)\n device2.keys = newKeys;\n };\n checkForPendingKeyRotations() {\n if (!this.memberIsAdmin(this.userId)) {\n return;\n }\n for (const userId of this.state.pendingKeyRotations) {\n const lockboxes = this.rotateKeys({\n type: USER2,\n name: this.userId\n });\n this.dispatch({ type: \"ROTATE_KEYS\", payload: { userId, lockboxes } });\n }\n }\n createMemberLockboxes = (member2) => {\n const roleKeys = member2.roles.map(this.roleKeys);\n const createLockboxRoleKeysForMember = (keys2) => {\n return create(keys2, member2.keys);\n };\n return [...roleKeys, this.teamKeys()].map(createLockboxRoleKeysForMember);\n };\n /**\n * Given a compromised scope (e.g. a member or a role), find all scopes that are visible from that\n * scope, and generates new keys and lockboxes for each of those. Returns all of the new lockboxes\n * in a single array to be posted to the graph.\n *\n * You can pass it a scope, or a keyset (which includes the scope information). If you pass a\n * keyset, it will replace the existing keys with these.\n *\n * @param compromised If `compromised` is a keyset, that will become the new keyset for the\n * compromised scope. If it is just a scope, new keys will be randomly generated for that scope.\n */\n rotateKeys = (compromised) => {\n const newKeyset = isKeyset(compromised) ? compromised : createKeyset3(compromised);\n const visibleScopes2 = visibleScopes(this.state, compromised);\n const otherNewKeysets = visibleScopes2.map((scope) => createKeyset3(scope));\n const newKeysets = [newKeyset, ...otherNewKeysets];\n const newLockboxes = newKeysets.flatMap((newKeyset2) => {\n const oldLockboxes = lockboxesInScope(this.state, newKeyset2);\n return oldLockboxes.map((oldLockbox) => {\n const updatedKeyset = newKeysets.find((k) => scopesMatch(k, oldLockbox.recipient));\n return rotate({\n oldLockbox,\n newContents: newKeyset2,\n // If we did, address the new lockbox to those keys\n updatedRecipientKeys: updatedKeyset ? redactKeys3(updatedKeyset) : void 0\n });\n });\n });\n return newLockboxes;\n };\n};\n\n// src/team/createTeam.ts\nimport { createKeyset as createKeyset4 } from \"@localfirst/crdx\";\nfunction createTeam(teamName, context, seed) {\n const teamKeys = createKeyset4(TEAM_SCOPE, seed);\n return new Team({ teamName, context, teamKeys });\n}\n\n// src/team/decryptTeamGraph.ts\nimport {\n createKeyring as createKeyring2,\n decryptLink\n} from \"@localfirst/crdx\";\nvar decryptTeamGraph = ({\n encryptedGraph,\n teamKeys,\n deviceKeys\n}) => {\n const keyring = createKeyring2(teamKeys);\n const { encryptedLinks, childMap, root } = encryptedGraph;\n const links = encryptedGraph.links ?? {};\n const decrypt = (hash3, previousKeys, previousDecryptedLinks = {}, previousState = initialState) => {\n const encryptedLink = encryptedLinks[hash3];\n const decryptedLink = links[hash3] ?? // If it's already decrypted, don't bother decrypting it again\n decryptLink(encryptedLink, previousKeys);\n let decryptedLinks2 = {\n [hash3]: decryptedLink\n };\n const newState = reducer(previousState, decryptedLink);\n let newKeys;\n try {\n newKeys = keys(newState, deviceKeys, TEAM_SCOPE);\n keyring[newKeys.encryption.publicKey] = newKeys;\n } catch {\n newKeys = previousKeys;\n }\n const children = childMap[hash3];\n if (children) {\n for (const hash4 of children) {\n decryptedLinks2 = {\n ...decryptedLinks2,\n ...decrypt(hash4, newKeys, decryptedLinks2, newState)\n };\n }\n }\n return { ...previousDecryptedLinks, ...decryptedLinks2 };\n };\n const rootPublicKey = encryptedLinks[root].recipientPublicKey;\n const rootKeys = keyring[rootPublicKey];\n const decryptedLinks = decrypt(root, rootKeys);\n return {\n ...encryptedGraph,\n links: decryptedLinks\n };\n};\n\n// src/team/load.ts\nimport { createKeyring as createKeyring3 } from \"@localfirst/crdx\";\nvar load = (source, context, teamKeys) => {\n const teamKeyring2 = createKeyring3(teamKeys);\n return new Team({ source, context, teamKeyring: teamKeyring2 });\n};\n\n// src/util/testing/messageSummary.ts\nimport { truncateHashes as truncateHashes2 } from \"@localfirst/shared\";\nvar syncMessageSummary = (m) => {\n if (m === void 0) {\n return \"DONE\";\n }\n const { head, links, need } = m;\n const body = { head };\n if (links) {\n body.links = Object.keys(links).join(\", \");\n }\n if (need) {\n body.need = need.join(\", \");\n }\n return truncateHashes2(JSON.stringify(body));\n};\n\n// src/connection/Connection.ts\nimport { and, assertEvent, assign, createActor, setup } from \"xstate\";\n\n// src/connection/MessageQueue.ts\nimport { EventEmitter as EventEmitter2 } from \"@herbcaudill/eventemitter42\";\nimport { debug as debug3 } from \"@localfirst/shared\";\nvar log2 = debug3.extend(\"message-queue\");\nvar MessageQueue = class extends EventEmitter2 {\n #started = false;\n #inbound = {};\n #nextInbound = 0;\n #waiting = {};\n #timeout;\n #outbound = {};\n #nextOutbound = 0;\n #sendMessage;\n constructor({ sendMessage, timeout: timeout2 = 1e3 }) {\n super();\n this.#sendMessage = (message) => {\n this.#nextOutbound = message.index + 1;\n sendMessage(message);\n };\n this.#timeout = timeout2;\n }\n /**\n * Messages can be received before the service is started (e.g. while waiting to be ready to send\n * over the network). They will be emitted in order when start() is called.\n */\n start() {\n this.#started = true;\n this.#processInbound();\n this.#processOutbound();\n return this;\n }\n /**\n * Stop emitting messages. Messages will be queued until start() is called again.\n */\n stop() {\n this.#started = false;\n return this;\n }\n /**\n * Assigns a number to the message and sends it.\n */\n send(message) {\n const index = highestIndex(this.#outbound) + 1;\n const numberedMessage = { ...message, index };\n this.#outbound[index] = numberedMessage;\n log2(\"send %o\", numberedMessage);\n if (this.#started)\n this.#sendMessage(numberedMessage);\n return this;\n }\n /**\n * Resends a message that was previously sent.\n */\n resend(index) {\n const message = this.#outbound[index];\n if (!message)\n throw new Error(`Received resend request for message #${index}, which doesn't exist.`);\n log2(\"resend %o\", message);\n this.#sendMessage(message);\n return this;\n }\n /**\n * Queues inbound messages and, if we're started, emits them in order.\n */\n receive(message) {\n const { index } = message;\n log2(\"receive %o\", message);\n if (!this.#inbound[index]) {\n this.#inbound[index] = message;\n if (this.#started)\n this.#processInbound();\n }\n return this;\n }\n #processOutbound() {\n log2(\"processOutbound\");\n while (this.#outbound[this.#nextOutbound]) {\n const message = this.#outbound[this.#nextOutbound];\n this.#sendMessage(message);\n }\n }\n /**\n * Receives any messages that are pending in the inbound queue, and requests any missing messages.\n */\n #processInbound() {\n log2(\"processInbound\");\n while (this.#inbound[this.#nextInbound]) {\n const message = this.#inbound[this.#nextInbound];\n this.#nextInbound++;\n this.emit(\"message\", message);\n }\n const highest = highestIndex(this.#inbound);\n for (let i = this.#nextInbound; i < highest; i++) {\n if (this.#waiting[i])\n continue;\n this.#waiting[i] = setTimeout(() => {\n if (!this.#inbound[i])\n this.emit(\"request\", i);\n delete this.#waiting[i];\n }, this.#timeout);\n }\n }\n};\nfunction highestIndex(queue) {\n return Math.max(...Object.keys(queue).map(Number), -1);\n}\n\n// src/connection/helpers.ts\nvar messageSummary = (message) => message.type === \"SYNC\" ? `SYNC ${syncMessageSummary(message.payload)}` : (\n // @ts-expect-error utility function don't worry about it\n `${message.type} ${message.payload?.head?.slice(0, 5) || message.payload?.message || \"\"}`\n);\nvar isString = (state) => typeof state === \"string\";\nvar stateSummary = (state) => isString(state) ? state : Object.keys(state).map((key) => `${key}:${stateSummary(state[key])}`).filter((s) => s.length).join(\",\");\nvar extendServerContext = (context) => {\n const { keys: keys2, host } = context.server;\n return {\n ...context,\n user: { userId: host, userName: host, keys: keys2 },\n device: { userId: host, deviceId: host, deviceName: host, keys: keys2 }\n };\n};\nvar getUserName = (context) => {\n if (\"server\" in context)\n return context.server.host;\n if (\"userName\" in context)\n return context.userName;\n if (\"user\" in context)\n return context.user.userName;\n return \"\";\n};\n\n// src/connection/types.ts\nvar isMemberContext = (c) => {\n return \"team\" in c && c.team !== void 0;\n};\nvar isInviteeContext = (c) => {\n return \"invitationSeed\" in c && c.invitationSeed !== void 0;\n};\nvar isInviteeMemberContext = (c) => {\n return isInviteeContext(c) && \"user\" in c && c.user !== void 0;\n};\nvar isInviteeDeviceContext = (c) => {\n return isInviteeContext(c) && !isInviteeMemberContext(c);\n};\nvar isServerContext = (c) => {\n return \"server\" in c && c.server !== void 0;\n};\nvar isMemberClaim = (claim) => {\n return \"deviceId\" in claim && claim.deviceId !== void 0;\n};\nvar isInviteeMemberClaim = (claim) => {\n return isInviteeClaim(claim) && \"userKeys\" in claim && claim.userKeys !== void 0;\n};\nvar isInviteeDeviceClaim = (claim) => {\n return isInviteeClaim(claim) && !(\"userKeys\" in claim);\n};\nvar isInviteeClaim = (claim) => {\n return \"proofOfInvitation\" in claim && claim.proofOfInvitation !== void 0;\n};\n\n// src/connection/Connection.ts\nvar Connection = class extends EventEmitter3 {\n #machine;\n #messageQueue;\n #started = false;\n #log = debug4.extend(\"auth:connection\");\n constructor({ sendMessage, context }) {\n super();\n this.#messageQueue = this.#initializeMessageQueue(sendMessage);\n this.#log = this.#log.extend(getUserName(context));\n const initialContext = isServerContext(context) ? extendServerContext(context) : context;\n const machine = setup({\n types: {\n context: {},\n events: {}\n },\n // ******* ACTIONS\n // these are referred to by name in the state machine definition\n actions: {\n // IDENTITY CLAIMS\n requestIdentityClaim: () => {\n this.#queueMessage(\"REQUEST_IDENTITY\");\n },\n sendIdentityClaim: assign(({ context: context2 }) => {\n const createIdentityClaim = (context3) => {\n if (isMemberContext(context3)) {\n return {\n deviceId: context3.device.deviceId\n };\n }\n if (isInviteeMemberContext(context3)) {\n assert8(context3.invitationSeed);\n const { userName, keys: keys2 } = context3.user;\n return {\n proofOfInvitation: generateProof(context3.invitationSeed),\n userName,\n userKeys: redactKeys4(keys2),\n device: redactDevice(context3.device)\n };\n }\n if (isInviteeDeviceContext(context3)) {\n assert8(context3.invitationSeed);\n const { userName, device: device2 } = context3;\n return {\n proofOfInvitation: generateProof(context3.invitationSeed),\n userName,\n device: redactDevice(device2)\n };\n }\n throw new Error(\"Invalid context\");\n };\n const ourIdentityClaim = createIdentityClaim(context2);\n this.#queueMessage(\"CLAIM_IDENTITY\", ourIdentityClaim);\n return { ourIdentityClaim };\n }),\n receiveIdentityClaim: assign(({ event }) => {\n assertEvent(event, \"CLAIM_IDENTITY\");\n const identityClaim = event.payload;\n const theirDevice = \"device\" in identityClaim ? identityClaim.device : void 0;\n return { theirIdentityClaim: identityClaim, theirDevice };\n }),\n // INVITATIONS\n acceptInvitation: assign(({ context: context2 }) => {\n const { team, theirIdentityClaim } = context2;\n assert8(team);\n assert8(theirIdentityClaim);\n assert8(isInviteeClaim(theirIdentityClaim));\n const { proofOfInvitation } = theirIdentityClaim;\n const admit = () => {\n if (isInviteeMemberClaim(theirIdentityClaim)) {\n const { userName, userKeys } = theirIdentityClaim;\n team.admitMember(proofOfInvitation, userKeys, userName);\n const userId = userKeys.name;\n return team.members(userId);\n } else {\n const { device: device2 } = theirIdentityClaim;\n team.admitDevice(proofOfInvitation, device2);\n const { deviceId } = device2;\n const { userId } = team.memberByDeviceId(deviceId);\n return team.members(userId);\n }\n };\n const peer = admit();\n this.#queueMessage(\"ACCEPT_INVITATION\", {\n serializedGraph: team.save(),\n teamKeyring: team.teamKeyring()\n });\n return { peer };\n }),\n joinTeam: assign(({ context: context2, event }) => {\n assertEvent(event, \"ACCEPT_INVITATION\");\n const { serializedGraph, teamKeyring: teamKeyring2 } = event.payload;\n const { device: device2, invitationSeed } = context2;\n assert8(invitationSeed);\n const user = context2.user ?? // If we're joining as a new device for an existing member, we won't have a user object\n // yet, so we need to get those from the graph. We use the invitation seed to generate\n // the starter keys for the new device. We can use these to unlock a lockbox on the team\n // graph that contains our user keys.\n getDeviceUserFromGraph({ serializedGraph, teamKeyring: teamKeyring2, invitationSeed });\n const team = new Team({ source: serializedGraph, context: { user, device: device2 }, teamKeyring: teamKeyring2 });\n team.join(teamKeyring2);\n this.emit(\"joined\", { team, user });\n return { user, team };\n }),\n // AUTHENTICATION\n challengeIdentity: assign(({ context: context2 }) => {\n const { team, theirIdentityClaim } = context2;\n assert8(team);\n assert8(isMemberClaim(theirIdentityClaim));\n const { deviceId } = theirIdentityClaim;\n const theirDevice = team.device(deviceId, { includeRemoved: true });\n const peer = team.memberByDeviceId(deviceId, { includeRemoved: true });\n this.#log = this.#log.extend(peer.userName);\n const challenge2 = challenge({ type: KeyType.DEVICE, name: deviceId });\n this.#queueMessage(\"CHALLENGE_IDENTITY\", { challenge: challenge2 });\n return { theirDevice, peer, challenge: challenge2 };\n }),\n proveIdentity: ({ context: context2, event }) => {\n assertEvent(event, \"CHALLENGE_IDENTITY\");\n const { challenge: challenge2 } = event.payload;\n const { keys: keys2 } = context2.device;\n const proof = prove(challenge2, keys2);\n this.#queueMessage(\"PROVE_IDENTITY\", { challenge: challenge2, proof });\n },\n acceptIdentity: () => this.#queueMessage(\"ACCEPT_IDENTITY\"),\n // SYNCHRONIZATION\n listenForTeamUpdates: ({ context: context2 }) => {\n assert8(context2.team);\n context2.team.on(\"updated\", ({ head }) => {\n if (this.#machine.getSnapshot().status !== \"done\") {\n this.#machine.send({ type: \"LOCAL_UPDATE\", payload: { head } });\n }\n this.emit(\"updated\");\n });\n },\n sendSyncMessage: assign(({ context: context2 }) => {\n assert8(context2.team);\n const previousSyncState = context2.syncState ?? initSyncState();\n const [syncState, syncMessage] = generateMessage(context2.team.graph, previousSyncState);\n if (syncMessage) {\n this.#log(\"sending sync message\", syncMessageSummary(syncMessage));\n this.#queueMessage(\"SYNC\", syncMessage);\n } else {\n this.#log(\"no sync message to send\");\n }\n return { syncState };\n }),\n receiveSyncMessage: assign(({ context: context2, event }) => {\n assertEvent(event, \"SYNC\");\n const syncMessage = event.payload;\n const { syncState: prevSyncState = initSyncState(), team, device: device2 } = context2;\n assert8(team);\n const teamKeys = team.teamKeys();\n const deviceKeys = device2.keys;\n const decrypt = ({ encryptedGraph, keys: keys2 }) => decryptTeamGraph({ encryptedGraph, teamKeys: keys2, deviceKeys });\n const [newChain, syncState] = receiveMessage(\n team.graph,\n prevSyncState,\n syncMessage,\n teamKeys,\n decrypt\n );\n if (headsAreEqual(newChain.head, team.graph.head)) {\n return { syncState };\n } else {\n this.emit(\"updated\");\n return { team: team.merge(newChain), syncState };\n }\n }),\n // SHARED SECRET NEGOTIATION\n sendSeed: assign(({ context: context2 }) => {\n const { user, peer, seed = randomKeyBytes() } = context2;\n const encryptedSeed = asymmetric3.encryptBytes({\n secret: seed,\n recipientPublicKey: peer.keys.encryption,\n senderSecretKey: user.keys.encryption.secretKey\n });\n this.#queueMessage(\"SEED\", { encryptedSeed });\n return { seed };\n }),\n deriveSharedKey: assign(({ context: context2, event }) => {\n assertEvent(event, \"SEED\");\n const { encryptedSeed } = event.payload;\n const { seed, user, peer } = context2;\n try {\n const theirSeed = asymmetric3.decryptBytes({\n cipher: encryptedSeed,\n senderPublicKey: peer.keys.encryption,\n recipientSecretKey: user.keys.encryption.secretKey\n });\n return { sessionKey: deriveSharedKey(seed, theirSeed) };\n } catch (error) {\n if (String(error).includes(\"incorrect key pair\")) {\n return this.#fail(ENCRYPTION_FAILURE);\n } else\n throw error;\n }\n }),\n // ENCRYPTED COMMUNICATION\n receiveEncryptedMessage: ({ context: context2, event }) => {\n assertEvent(event, \"ENCRYPTED_MESSAGE\");\n const sessionKey = context2.sessionKey;\n const encryptedMessage = event.payload;\n try {\n const decryptedMessage = symmetric2.decryptBytes(encryptedMessage, sessionKey);\n this.emit(\"message\", decryptedMessage);\n } catch (error) {\n if (String(error).includes(\"wrong secret key\")) {\n return this.#fail(ENCRYPTION_FAILURE);\n } else\n throw error;\n }\n },\n // FAILURE\n fail: assign((_, { error }) => {\n return this.#fail(error);\n }),\n receiveError: assign(({ event }) => {\n assertEvent(event, \"ERROR\");\n const error = event.payload;\n this.#log(\"receiveError: %o\", error);\n this.emit(\"remoteError\", error);\n return { error };\n }),\n sendError: assign(({ event }) => {\n assertEvent(event, \"LOCAL_ERROR\");\n const error = event.payload;\n this.#log(\"sendError %o\", error);\n this.#messageQueue.send(createErrorMessage(error.type, \"REMOTE\"));\n this.emit(\"localError\", error);\n return { error };\n }),\n // EVENTS FOR EXTERNAL LISTENERS\n onConnected: () => this.emit(\"connected\"),\n onDisconnected: ({ event }) => this.emit(\"disconnected\", event)\n },\n // ******* GUARDS\n // these are referred to by name in the state machine definition\n guards: {\n theySentIdentityClaim: ({ context: context2 }) => context2.theirIdentityClaim !== void 0,\n weSentIdentityClaim: ({ context: context2 }) => context2.ourIdentityClaim !== void 0,\n bothSentIdentityClaim: and([\"theySentIdentityClaim\", \"weSentIdentityClaim\"]),\n weHaveInvitation: ({ context: context2 }) => isInviteeContext(context2),\n theyHaveInvitation: ({ context: context2 }) => isInviteeClaim(context2.theirIdentityClaim),\n neitherIsMember: and([\"weHaveInvitation\", \"theyHaveInvitation\"]),\n invitationIsValid: ({ context: context2 }) => {\n const { team, theirIdentityClaim } = context2;\n assert8(isInviteeClaim(theirIdentityClaim));\n return team.validateInvitation(theirIdentityClaim.proofOfInvitation).isValid;\n },\n joinedTheRightTeam: ({ context: context2, event }) => {\n assertEvent(event, \"ACCEPT_INVITATION\");\n const invitationSeed = context2.invitationSeed;\n const { serializedGraph, teamKeyring: teamKeyring2 } = event.payload;\n const state = getTeamState(serializedGraph, teamKeyring2);\n const { id } = generateProof(invitationSeed);\n return hasInvitation(state, id);\n },\n deviceUnknown: ({ context: context2 }) => {\n const { theirIdentityClaim } = context2;\n assert8(isMemberClaim(theirIdentityClaim));\n return !context2.team.hasDevice(theirIdentityClaim.deviceId, { includeRemoved: true });\n },\n identityIsValid: ({ context: context2, event }) => {\n assertEvent(event, \"PROVE_IDENTITY\");\n const { challenge: challenge2, proof } = event.payload;\n return context2.team.verifyIdentityProof(challenge2, proof);\n },\n memberWasRemoved: ({ context: context2 }) => context2.team.memberWasRemoved(context2.peer.userId),\n deviceWasRemoved: ({ context: context2 }) => context2.team.deviceWasRemoved(context2.theirDevice.deviceId),\n serverWasRemoved: ({ context: context2 }) => context2.team.serverWasRemoved(context2.peer.userId),\n headsAreEqual: ({ context: context2 }) => arraysAreEqual(\n context2.team.graph.head,\n // our head\n context2.syncState?.lastCommonHead\n // last head we had in common with peer\n )\n }\n }).createMachine({\n context: initialContext,\n // ******* STATE MACHINE DEFINITION\n id: \"connection\",\n entry: \"requestIdentityClaim\",\n initial: \"awaitingIdentityClaim\",\n on: {\n REQUEST_IDENTITY: { actions: \"sendIdentityClaim\", target: \".awaitingIdentityClaim\" },\n // Remote error (sent by peer)\n ERROR: { actions: \"receiveError\", target: \"#disconnected\" },\n // Local error (detected by us, sent to peer)\n LOCAL_ERROR: { actions: \"sendError\", target: \"#disconnected\" }\n },\n states: {\n awaitingIdentityClaim: {\n // Don't respond to a request for an identity claim if we've already sent one\n always: { guard: \"bothSentIdentityClaim\", target: \"authenticating\" },\n on: { CLAIM_IDENTITY: { actions: \"receiveIdentityClaim\" } }\n },\n // To authenticate, each peer either presents an invitation (as a new device or as a new\n // member) or a deviceId.\n authenticating: {\n initial: \"checkingInvitations\",\n states: {\n // A new member or new device is invited by being given a randomly-generated secret\n // seed. This seed is used to generate a temporary keypair, the public half of which is\n // recorded on the team graph by the device creating the invitation. The invitee can\n // then use the seed to generate the same keypair, and use that to sign a payload that\n // can be verified by anyone on the team.\n checkingInvitations: {\n always: [\n // We can't both present invitations - someone has to be a member\n { guard: \"neitherIsMember\", ...fail4(NEITHER_IS_MEMBER) },\n // If I have an invitation, wait for acceptance\n { guard: \"weHaveInvitation\", target: \"awaitingInvitationAcceptance\" },\n // If they have an invitation, validate it\n { guard: \"theyHaveInvitation\", target: \"validatingInvitation\" },\n // If there are no invitations, we can proceed directly to verifying each other's identity\n { target: \"#checkingIdentity\" }\n ]\n },\n awaitingInvitationAcceptance: {\n // Wait for them to validate the invitation we included in our identity claim\n on: {\n ACCEPT_INVITATION: [\n // Make sure the team I'm joining is actually the one that invited me\n { guard: \"joinedTheRightTeam\", actions: \"joinTeam\", target: \"#checkingIdentity\" },\n fail4(JOINED_WRONG_TEAM)\n ]\n },\n ...timeout\n },\n validatingInvitation: {\n always: [\n // If the proof succeeds, add them to the team and send an acceptance message,\n // then proceed to the standard identity claim & challenge process\n {\n guard: \"invitationIsValid\",\n actions: \"acceptInvitation\",\n target: \"#checkingIdentity\"\n },\n // If the proof fails, disconnect with error\n fail4(INVITATION_PROOF_INVALID)\n ]\n },\n // We use a signature challenge to verify the identity of an existing team member: We\n // send them a payload that includes a random element, they sign it with their private\n // signature key, and we verify it with their public signature key.\n //\n // Note: The signature challenge is probably not sufficient on its own to prove\n // identity; I suspect it can be defeated with a replay attack, in which Eve\n // simultaneously authenticates to Alice as Bob, and to Bob as Alice, using each of them\n // to sign the challenges provided by the other.\n //\n // In practice the session key negotiation process (below) provides much stronger\n // guarantees of authenticity, because it doesn't involve sending a proof that could be\n // replayed; instead it requires all further communication to be encrypted with an\n // independently derived shared secret that can only be calculated by the parties if\n // they have the correct private encryption keys. See\n // https://github.com/local-first-web/auth/discussions/42\n //\n // We considered removing the signature challenge entirely, but it does provide an\n // additional layer of security in the sense that it requires the peer to demonstrate\n // that they have the signature key in addition to the encrypted key.\n checkingIdentity: {\n id: \"checkingIdentity\",\n type: \"parallel\",\n // Peers mutually authenticate to each other, so we have to complete two 'parallel' processes:\n // 1. prove our identity\n // 2. verify their identity\n states: {\n // 1. prove our identity\n provingMyIdentity: {\n initial: \"awaitingIdentityChallenge\",\n states: {\n awaitingIdentityChallenge: {\n // If we just presented an invitation, they already know who we are\n always: { guard: \"weHaveInvitation\", target: \"done\" },\n on: {\n // When we receive a challenge, respond with proof\n CHALLENGE_IDENTITY: {\n actions: \"proveIdentity\",\n target: \"awaitingIdentityAcceptance\"\n }\n },\n ...timeout\n },\n // Wait for a message confirming that they've validated our proof of identity\n awaitingIdentityAcceptance: {\n on: { ACCEPT_IDENTITY: { target: \"done\" } },\n ...timeout\n },\n done: { type: \"final\" }\n }\n },\n // 2. verify their identity\n verifyingTheirIdentity: {\n initial: \"challengingIdentity\",\n states: {\n // Send a signature challenge\n challengingIdentity: {\n always: [\n // If they just presented an invitation, we already know who they are\n { guard: \"theyHaveInvitation\", target: \"done\" },\n // We received their identity claim in their CLAIM_IDENTITY message. Do we\n // have a device on the team matching their identity claim?\n { guard: \"deviceUnknown\", ...fail4(DEVICE_UNKNOWN) },\n // Send a challenge.\n { actions: \"challengeIdentity\", target: \"awaitingIdentityProof\" }\n ]\n },\n // Then wait for them to respond to the challenge with proof\n awaitingIdentityProof: {\n on: {\n PROVE_IDENTITY: [\n // If the proof succeeds, send them an acceptance message and continue\n { guard: \"identityIsValid\", actions: \"acceptIdentity\", target: \"done\" },\n // If the proof fails, disconnect with error\n fail4(IDENTITY_PROOF_INVALID)\n ]\n },\n ...timeout\n },\n done: { type: \"final\" }\n }\n }\n },\n // Once BOTH processes complete, we continue\n onDone: { target: \"done\" }\n },\n done: { type: \"final\" }\n },\n onDone: { target: \"#negotiating\" }\n },\n // Negotiate a session key (shared secret). Alice generates a random seed, asymmetrically\n // encrypts it with her private key and Bob's public key, and sends it to Bob, who decrypts\n // it with his private key and Alice's public key; and vice versa. Both parties then combine\n // the two seeds to derive a shared key.\n negotiating: {\n id: \"negotiating\",\n entry: \"sendSeed\",\n on: { SEED: { actions: \"deriveSharedKey\", target: \"synchronizing\" } },\n ...timeout\n },\n // Synchronize our team graph with the peer\n synchronizing: {\n entry: \"sendSyncMessage\",\n always: { guard: \"headsAreEqual\", target: \"connected\" },\n on: { SYNC: { actions: [\"receiveSyncMessage\", \"sendSyncMessage\"] } }\n },\n // Once we're connected, all we need to do is just keep team graph in sync with our peer,\n // and relay encrypted messages.\n connected: {\n id: \"connected\",\n entry: [\"onConnected\", \"listenForTeamUpdates\"],\n always: [\n // If updates to the team graph result in our peer being removed from the team,\n // disconnect\n { guard: \"memberWasRemoved\", ...fail4(MEMBER_REMOVED) },\n { guard: \"deviceWasRemoved\", ...fail4(DEVICE_REMOVED) },\n { guard: \"serverWasRemoved\", ...fail4(SERVER_REMOVED) }\n ],\n on: {\n // If the team graph is modified locally, send them a sync message\n LOCAL_UPDATE: { actions: \"sendSyncMessage\" },\n // If they send a sync message, process it\n SYNC: { actions: [\"receiveSyncMessage\", \"sendSyncMessage\"] },\n // Deliver any encrypted messages\n ENCRYPTED_MESSAGE: { actions: \"receiveEncryptedMessage\" },\n // If they disconnect we disconnect\n DISCONNECT: \"#disconnected\"\n }\n },\n // Once we disconnect, no further messages will be sent or received; to reconnect,\n // a new Connection object must be created.\n disconnected: {\n id: \"disconnected\",\n always: { actions: \"onDisconnected\" }\n }\n }\n });\n this.#machine = createActor(machine);\n this.#machine.subscribe((state) => {\n const summary = stateSummary(state.value);\n this.emit(\"change\", summary);\n this.#log(`\\u23E9 ${summary} `);\n });\n this.emit = (event, ...args) => {\n this.#log(`emit ${event} %o`, ...args);\n return super.emit(event, ...args);\n };\n }\n // PUBLIC API\n /** Starts the state machine. Returns this Connection object. */\n start = (storedMessages = []) => {\n this.#log(\"starting\");\n this.#machine.start();\n this.#messageQueue.start();\n this.#started = true;\n for (const m of storedMessages)\n this.deliver(m);\n return this;\n };\n /** Shuts down and sends a disconnect message to the peer. */\n stop = () => {\n if (this.#started && this.#machine.getSnapshot().status !== \"done\") {\n const disconnectMessage = { type: \"DISCONNECT\" };\n this.#machine.send(disconnectMessage);\n this.#messageQueue.send(disconnectMessage);\n }\n this.removeAllListeners();\n this.#messageQueue.stop();\n this.#log(\"connection stopped\");\n return this;\n };\n /**\n * Adds connection messages from the peer to the MessageQueue's incoming message queue, which\n * will pass them to the state machine in order.\n */\n deliver(serializedMessage) {\n const message = unpack2(serializedMessage);\n this.#messageQueue.receive(message);\n }\n /**\n * Public interface for sending a message from the application to our peer via this connection's\n * encrypted channel. We don't care about the content of this message.\n */\n send = (message) => {\n assert8(this._sessionKey, \"Can't send encrypted messages until we've finished connecting\");\n const encryptedMessage = symmetric2.encryptBytes(message, this._sessionKey);\n this.#queueMessage(\"ENCRYPTED_MESSAGE\", encryptedMessage);\n };\n /** Returns the current state of the protocol machine. */\n get state() {\n assert8(this.#started);\n return this.#machine.getSnapshot().value;\n }\n // PUBLIC FOR TESTING\n /**\n * Returns the team that the connection's user is a member of. If the user has not yet joined a\n * team, returns undefined.\n */\n get team() {\n return this._context.team;\n }\n // PRIVATE\n /**\n * Returns the connection's session key when we are in a connected state. Otherwise, returns\n * `undefined`.\n */\n get _sessionKey() {\n return this._context.sessionKey;\n }\n get _context() {\n assert8(this.#started);\n return this.#machine.getSnapshot().context;\n }\n #initializeMessageQueue(sendMessage) {\n return new MessageQueue({\n sendMessage: (message) => {\n this.#logMessage(\"out\", message);\n const serialized = pack2(message);\n sendMessage(serialized);\n }\n }).on(\"message\", (message) => {\n this.#logMessage(\"in\", message);\n if (message.type === \"REQUEST_RESEND\") {\n const { index } = message.payload;\n this.#messageQueue.resend(index);\n } else {\n this.#machine.send(message);\n }\n }).on(\"request\", (index) => {\n this.#queueMessage(\"REQUEST_RESEND\", { index });\n });\n }\n /** Force local error state */\n #fail(error) {\n this.#log(\"error: %o\", error);\n const localMessage = createErrorMessage(error, \"LOCAL\");\n this.#machine.send(localMessage);\n return { error: localMessage.payload };\n }\n /** Shorthand for sending a message to our peer. */\n #queueMessage(type, payload) {\n this.#messageQueue.send({ type, payload });\n }\n #logMessage(direction, message) {\n const arrow = direction === \"in\" ? \"<-\" : \"->\";\n const peerUserName = this.#started ? this._context.peer?.userName ?? \"?\" : \"?\";\n this.#log(`${arrow}${peerUserName} #${message.index} ${messageSummary(message)}`);\n }\n};\nvar fail4 = (error) => ({\n actions: [{ type: \"fail\", params: { error } }, \"onDisconnected\"],\n target: \"#disconnected\"\n});\nvar TIMEOUT_DELAY = 7e3;\nvar timeout = { after: { [TIMEOUT_DELAY]: fail4(TIMEOUT) } };\n\n// src/index.ts\nimport {\n createKeyset as createKeyset5,\n createUser,\n redactKeys as redactKeys5,\n redactUser as redactUser2\n} from \"@localfirst/crdx\";\nimport { asymmetric as asymmetric4, signatures as signatures5, symmetric as symmetric3 } from \"@localfirst/crypto\";\nexport {\n ADMIN,\n ADMIN_SCOPE,\n ALL,\n Connection,\n DEVICE_ID,\n ENCRYPTION,\n EPHEMERAL_SCOPE2 as EPHEMERAL_SCOPE,\n HashPurpose,\n INVITATION,\n LINK_HASH,\n LINK_TO_PREVIOUS,\n SHARED_KEY,\n SIGNATURE,\n SYMMETRIC,\n TEAM_SCOPE,\n Team,\n VALID,\n asymmetric4 as asymmetric,\n castServer,\n connection_exports as connection,\n createDevice,\n createKeyset5 as createKeyset,\n createTeam,\n createUser,\n device_exports as device,\n generateProof,\n graphSummary,\n initialState,\n invitation_exports as invitation,\n load as loadTeam,\n redactDevice,\n redactKeys5 as redactKeys,\n redactUser2 as redactUser,\n role_exports as role,\n signatures5 as signatures,\n symmetric3 as symmetric\n};\n//# sourceMappingURL=index.js.map"],"names":["EventEmitter","#listenerMap","#eventsCount","event","args","listeners","i","once","fn","#addListener","removals","listener","events","assert","value","message","error","trimLines","removeLine","s","targetText","line","isObjectLike","symbolTag","isSymbol","baseGetTag","arrayMap","array","iteratee","index","length","result","isArray","INFINITY","symbolProto","Symbol","symbolToString","baseToString","identity","WeakMap","getNative","root","objectCreate","baseCreate","object","proto","isObject","noop","copyArray","source","defineProperty","func","arrayEach","baseFindIndex","predicate","fromIndex","fromRight","baseIsNaN","strictIndexOf","baseIndexOf","arrayIncludes","MAX_SAFE_INTEGER","reIsUint","isIndex","type","baseAssignValue","key","objectProto","hasOwnProperty","assignValue","objValue","eq","copyObject","props","customizer","isNew","newValue","isLength","isArrayLike","isFunction","isPrototype","Ctor","baseTimes","n","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","arrayTag","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseUnary","freeProcess","freeGlobal","nodeUtil","types","nodeIsTypedArray","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","overArg","transform","arg","nativeKeys","baseKeys","keys","nativeKeysIn","baseKeysIn","isProto","keysIn","reIsDeepProp","reIsPlainProp","isKey","MAX_MEMOIZE_SIZE","memoizeCapped","memoize","cache","rePropName","reEscapeChar","stringToPath","string","match","number","quote","subString","toString","castPath","toKey","baseGet","path","get","defaultValue","arrayPush","values","offset","getPrototype","stackClear","ListCache","stackDelete","data","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Map","MapCache","Stack","entries","baseAssign","baseAssignIn","allocUnsafe","cloneBuffer","buffer","isDeep","arrayFilter","resIndex","stubArray","nativeGetSymbols","getSymbols","symbol","copySymbols","getSymbolsIn","copySymbolsIn","baseGetAllKeys","keysFunc","symbolsFunc","getAllKeys","getAllKeysIn","DataView","Promise","Set","promiseTag","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","initCloneArray","Uint8Array","cloneArrayBuffer","arrayBuffer","cloneDataView","dataView","reFlags","cloneRegExp","regexp","symbolValueOf","cloneSymbol","cloneTypedArray","typedArray","initCloneByTag","tag","initCloneObject","baseIsMap","nodeIsMap","isMap","baseIsSet","nodeIsSet","isSet","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","genTag","cloneableTags","baseClone","bitmask","stack","isFlat","isFull","isFunc","stacked","subValue","clone","HASH_UNDEFINED","setCacheAdd","setCacheHas","SetCache","arraySome","cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","other","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","map","setToArray","set","equalByTag","convert","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","baseIsMatch","matchData","srcValue","isStrictComparable","getMatchData","matchesStrictComparable","baseMatches","baseHasIn","hasPath","hasFunc","hasIn","baseMatchesProperty","baseProperty","basePropertyDeep","property","baseIteratee","createSet","baseUniq","comparator","includes","isCommon","outer","computed","seenIndex","uniq","uniqBy","_assert","isBytes","bool","bytes","hash","exists","output","b","a","lengths","h","instance","checkFinished","out","min","_u64","fromBig","split","add","U32_MASK64","_32n","le","lst","Ah","Al","l","toBig","shrSH","_l","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","_h","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","u64","crypto","exports","byteSwap32","bytesToHex","hexToBytes","asyncLoop","utf8ToBytes","toBytes","concatBytes","checkOpts","wrapConstructor","wrapConstructorWithOpts","wrapXOFConstructorWithOpts","randomBytes","crypto_1","require$$0","_assert_js_1","require$$1","u8","arr","u32","createView","rotr","word","shift","rotl","byteSwap","hexes","_","hex","asciis","asciiToBase16","char","hl","al","ai","hi","n1","n2","nextTick","iters","tick","cb","ts","diff","str","arrays","sum","res","pad","Hash","toStr","defaults","opts","hashCons","hashC","msg","tmp","bytesLength","sha3","keccakP","_u64_js_1","utils_js_1","require$$2","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","round","R","x","y","t","j","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","rounds","B","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","Keccak","blockLen","suffix","outputLen","enableXOF","state","len","pos","take","bufferOut","to","gen","genShake","defaultLength","bigLength","createEntropy","random","entropy","bufToBigInt","buf","bits","bi","input","alphabet","randomLetter","createFingerprint","globalObj","global","globals","sourceString","createCounter","count","initialCountMax","init","counter","fingerprint","firstLetter","time","salt","hashInput","createId","isCuid","id","minLength","maxLength","regex","src","getConstants","createId_1","SIGNATURE","ENCRYPTION","SYMMETRIC","LINK_HASH","HashPurpose","ROOT","VALID","EPHEMERAL_SCOPE","LINK_HASH2","hashEncryptedLink","body","append","graph","action","user","context","senderPublicKey","senderSecretKey","recipientPublicKey","encryptedBody","asymmetric","hash4","link","encryptedLink","getLink","getChildrenHashes","calculateChildren","childrenLookup","parents","parent","children","getHashes","memoizeResolver","getPredecessorHashes","memoize2","predecessors","isPredecessor","isPredecessorHash","memoizeResolver2","getSuccessorHashes","memoize3","successors","uniq2","isSuccessorHash","getConcurrentHashes","calculateConcurrency","memoize4","concurrencyLookup","isConcurrent","getConcurrentBubbles","getBubble","bubble","bubbles","EMPTY_GRAPH","createGraph","name","rootPayload","payload","arrayToMap","keyAccessor","current","KeyType","hasSecrets","isKeyset","k","isKeyring","createKeyring","decryptLink","keyset","assert2","cipher","toUint8Array","decryptedLinkBody","asymmetric2","decryptGraph","encryptedGraph","encryptedLinks","childMap","links","decrypt","prevLinks","decryptedLink","newLinks","hash5","decryptedLinks","getEncryptedLinks","hashes","getEncryptedLink","getHead","getParents","linkOrHash","EMPTY","getParentMap","depth","start","end","prev","getTails","parentsToLookup","parentLinks","linkMap","getChildMap","invertLinkMap","inverted","getRoot","topoSort","options","byHash","remainingParents","sorted","child2","childHash","child","nextLink","getSequence","resolver","baseResolver","sort","filter","noFilter","isInvalid","headsAreEqual","merge","ours","theirs","mergedLinks","mergedEncryptedLinks","newHeads","uniq3","isNotParentOfAnyOf","mergedGraph","isParent","redactGraph","head","serialize","pack","deserialize","serialized","unpack","SIGNATURE2","ENCRYPTION2","SYMMETRIC2","createKeyset","scope","seed","randomKey","stretchedSeed","stretch","signatures","hash2","asymmetric3","getLatestGeneration","keyring","latest","publicKey","redactKeys","ValidationError","details","_validators","computedHash","fail","hasNoPrevLink","hasRootType","isTheGraphRoot","timestamp","now","prevLink","memoizeFunctionMap","memoizeResolver3","hash3","memoize5","validators","validate","customValidators","rootHash","rootLink","headHash","headLink","encryptedLinkHashes","linkHashes","compositeValidator","validators2","currentLink","mergedValidators","merge2","validator","validatorSets","vs","makeMachine","initialState","reducer","Store","assert3","isGraph","actionWithPayload","prevHash","prevPublicKey","theirGraph","machine","createStore","generateMessage","prevState","their","our","lastCommonHead","ourHead","theirHead","theirHashLookup","hashesWeThinkTheyNeed","linksWeHave","hashesToSend","additionalDependencies","initSyncState","receiveMessage","assert4","ourChildMap","theirChildMap","validation","createUser","userName","userId","createId2","randomKey2","redactUser","getGlobal","getDevTools","w","devToolsAdapter","service","devTools","Mailbox","_process","enqueued","consumed","STATE_DELIMITER","TARGETLESS_KEY","NULL_EVENT","STATE_IDENTIFIER","WILDCARD","XSTATE_INIT","XSTATE_STOP","createAfterEvent","delayRef","createDoneStateEvent","createDoneActorEvent","invokeId","createErrorActorEvent","createInitEvent","reportUnhandledError","err","symbolObservable","matchesState","parentStateId","childStateId","parentStateValue","toStateValue","childStateValue","toStatePath","stateId","segment","stateValue","isMachineSnapshot","statePath","pathToStateValue","marker","previous","mapValues","collection","collectionKeys","toArrayStrict","toArray","resolveOutput","mapper","self","isErrorActorEvent","toTransitionConfigArray","configLike","transitionLike","normalizeTarget","target","toObserver","nextHandler","errorHandler","completionHandler","isObserver","createInvokeId","stateNodeId","resolveReferencedActor","indexStr","nodeId","invokeConfig","createScheduledEventId","actorRef","idCounter","createSystem","rootActor","keyedActors","reverseKeyedActors","inspectionObservers","timerMap","clock","logger","scheduler","delay","scheduledEvent","scheduledEventId","system","timeout","sendInspectionEvent","resolvedInspectionEvent","observer","sessionId","systemId","existing","observerOrFn","scheduledEvents","scheduledId","$$ACTOR_TYPE","ProcessingStatus","defaultOptions","ms","Actor","logic","resolvedOptions","syncSnapshot","inspect","emittedEvent","wildcardListener","allListeners","handler","persistedState","snapshot","deferredFn","nextListenerOrObserver","errorListener","completeListener","wrappedHandler","initEvent","nextState","caughtError","reportError","err2","createActor","resolveCancel","actionArgs","actionParams","sendId","resolvedSendId","executeCancel","actorScope","cancel","params","resolveSpawn","_actionParams","resolvedId","cloneMachineSnapshot","executeSpawn","spawnChild","resolveStop","actorRefOrString","resolvedActorRef","executeStop","stopChild","stop","checkAnd","guards","guard","evaluateGuard","and","isInline","resolved","guardArgs","guardParams","isAtomicStateNode","stateNode","getChildren","sn","getProperAncestors","toStateNode","ancestors","m","getAllStateNodes","stateNodes","nodeSet","adjList","getAdjList","getInitialStateNodesWithTheirAncestors","initialStates","initialStateNode","getValueFromAdj","baseNode","childStateNodes","childStateNode","getStateValue","rootNode","config","isInFinalState","stateNodeSet","isStateId","getCandidates","receivedEventType","eventDescriptor","partialEventTokens","eventTokens","tokenIndex","partialEventToken","eventToken","getDelayedTransitions","afterConfig","mutateEntryExit","afterEvent","eventType","raise","configTransition","resolvedTransition","resolvedDelay","transition","delayedTransition","formatTransition","descriptor","transitionConfig","normalizedTarget","reenter","resolveTarget","formatTransitions","transitions","transitionsConfig","invokeDef","formatInitialTransition","_target","resolvedTarget","targets","isInternalTarget","getStateNodeByPath","resolveHistoryDefaultTransition","isHistoryNode","states","getInitialStateNodes","ancestor","iter","descStateNode","getStateNode","stateKey","arrayStatePath","currentStateNode","getStateNodes","childStateKeys","subStateKey","allSubStateNodes","subStateNode","subStateNodes","transitionAtomicNode","next","transitionCompoundNode","subStateKeys","transitionNode","transitionParallelNode","allInnerTransitions","subStateValue","innerTransitions","getHistoryNodes","isDescendant","parentStateNode","hasIntersection","s1","s2","set1","set2","item","removeConflictingTransitions","enabledTransitions","historyValue","filteredTransitions","t1","t1Preempted","transitionsToRemove","t2","computeExitSet","t3","findLeastCommonAncestor","tail","getEffectiveTargetStates","targetNode","node","getTransitionDomain","targetStates","lca","statesToExit","domain","areStateNodeCollectionsEqual","prevStateNodes","nextStateNodeSet","microstep","currentSnapshot","isInitial","internalQueue","mutStateNodeSet","exitStates","resolveActionsAndContext","enterStates","nextStateNodes","e","getMachineOutput","rootCompletionNode","doneStateEvent","nextSnapshot","statesToEnter","statesForDefaultEntry","computeEntrySet","completedNodes","stateNodeToEnter","actions","initialActions","ancestorMarker","addDescendantStatesToEnter","addAncestorStatesToEnter","historyStateNodes","addProperAncestorStatesToEnter","historyDefaultTransition","reentrancyDomain","anc","changedHistory","exitStateNode","historyNode","def","executingCustomAction","resolveAndExecuteActionsWithContext","extra","retries","intermediateSnapshot","executeAction","resolvedAction","builtinAction","deferredActorIds","macrostep","microstates","addMicrostate","microstate","stopChildren","nextEvent","currentEvent","isErr","selectTransitions","shouldSelectEventlessTransitions","selectEventlessTransitions","previousState","enabledTransitionSet","atomicStates","loop","resolveStateValue","allStateNodes","machineSnapshotMatches","testValue","machineSnapshotHasTag","machineSnapshotCan","transitionData","machineSnapshotToJSON","nodes","tags","getMeta","toJSON","can","hasTag","matches","jsonValues","machineSnapshotGetMeta","acc","createMachineSnapshot","getPersistedSnapshot","childrenJson","persistContext","contextPart","copy","resolveRaise","eventOrExpr","delaysMap","resolvedEvent","configDelay","executeRaise","createSpawner","spawnedChildren","spawn","resolveAssign","assignment","assignArgs","partialUpdate","propAssignment","updatedContext","assign","assertEvent","typesText","memo","memoizedData","EMPTY_OBJECT","toSerializableAction","StateNode","stateConfig","resolvedSrc","onDone","onError","invokeDefValues","selectedTransition","candidates","candidate","resolvedContext","guardPassed","guardType","StateMachine","implementations","actors","delays","resolvedStateValue","preInitial","preInitialState","macroState","fullPath","relativePath","resolvedStateId","_actorScope","snapshotChildren","actorId","actorData","childState","restoredSnapshot","reviveContext","createMachine","setup","schemas","__defProp","__export","all","connection_exports","Connection","DEVICE_REMOVED","DEVICE_UNKNOWN","ENCRYPTION_FAILURE","IDENTITY_PROOF_INVALID","INVITATION_PROOF_INVALID","JOINED_WRONG_TEAM","MEMBER_REMOVED","NEITHER_IS_MEMBER","SERVER_REMOVED","TIMEOUT","connectionErrors","createErrorMessage","isInviteeClaim","isInviteeContext","isInviteeDeviceClaim","isInviteeDeviceContext","isInviteeMemberClaim","isInviteeMemberContext","isMemberClaim","isMemberContext","isServerContext","actionFingerprint","fingerprintPayload","arraysAreEqual","normalize2","isAdminOnlyAction","role_exports","ADMIN","bySeniority","chain","isFounder","linkThatAddedMember","addedMember","addedA","addedB","membershipResolver","invalidLinks","ruleName","membershipRules","rule","invalidLinksByThisRule","alsoInvalid","findDependentLinks","linkNotIn","invalidLink","dependentLinks","invitation","usesInvitation","authorIs","removed","getRemovedAndDemotedMembers","removers","getRemovalsAndDemotions","getAuthor","leastSenior","removedMembers","getAdditions","addedUserId","getRemovedMembers","authorIn","demotedMembers","getDemotedMembers","authorDemoted","isAdminOnly","userNames","isAddAction","isRemovalAction","getRemovals","isDemotionAction","getDemotions","getTarget","author","excludeList","graphSummary","LINK_TO_PREVIOUS","INVITATION","DEVICE_ID","SHARED_KEY","composeTransforms","transforms","state2","getScope","lockboxSummary","trunc","scopesMatch","assertScopesMatch","deriveSharedKey","aBytes","base58","bBytes","concatenatedSeeds","byteArraySortComparator","hashBytes","aString","bString","destination","localMessage","remoteMessage","deriveId","stretchedKey","normalize","secretKey","generateStarterKeys","generateProof","ephemeralKeys","signature","serializeTeamGraph","deserializeTeamGraph","keys2","maybeDeserialize","teamKeyring2","ALL","TEAM_SCOPE","ADMIN_SCOPE","EPHEMERAL_SCOPE2","invalidLinkReducer","member2","pendingKeyRotations","setHead","addDevice","device2","devices","d","addMember","newMember","addMemberRoles","roles","roleName","addMessage","addRole","newRole","unique","addServer","newServer","changeMemberKeys","changeServerKeys","server2","collectLockboxes","newLockboxes","lockboxes","postInvitation","invitationState","server","host","hasServer","toMember","toUser","toDevice","castServer","hasDevice","deviceId","getDevice","device","deviceWasRemoved","hasMember","hasRole","r","hasInvitation","getInvitation","isKeyManifest","create","contents","recipientKeys","redactedRecipientKeys","redactedContents","encryptionKeys","encryptedPayload","EPHEMERAL_SCOPE3","open","lockbox","decryptionKeys","encryptionKey","rotate","oldLockbox","newContents","updatedRecipientKeys","recipientManifest","visibleKeys","keysets","recipient","keyset2","keyMap","deviceKeys","organizeKeysIntoMap","generation","keysetsForScope","keysetHistory","keysFromLockboxes","assert5","lockboxesInScope","latestGeneration","maxGeneration","max","member","memberByDeviceId","memberHasRole","role2","memberIsAdmin","memberWasRemoved","membersInRole","admins","messages","role","serverWasRemoved","TEAM","teamKeyring","allTeamKeys","visibleScopes","scopes","type2","name2","derivedScopes","allScopes","removeDevice","removedDevice","removeDeviceFromMember","members","removedDevices","removeMember","remainingMembers","removedMember","removeMemberRole","removeRole","removeServer","remainingServers","removedServer","removedServers","revokeInvitation","invitations","revokedInvitation","rotateKeys","u","setTeamName","teamName","useInvitation","uses","invitation_exports","IKEY_LENGTH","InvitationValidationError","create2","invitationCanBeUsed","randomSeed","maxUses","expiration","starterKeys","timeOfUse","revoked","proof","signatures2","log","debug","validate2","_previousState","rootDevice","rootMember","fail2","deviceOwner","truncateHashes","getTransforms","ROOT2","memberKeys","unrecognizedLinkType","teamMachine","getTeamState","serializedGraph","USER","getDeviceUserFromGraph","invitationSeed","invitationId","assert6","userKeys","challenge","identityClaim","prove","challenge2","signatures3","verify","publicKeys","fail3","IdentityChallengeFailure","device_exports","createDevice","redactDevice","deviceName","randomKey3","createKeyset2","redactKeys2","_redactUser","isNewTeam","DEVICE","USER2","Team","randomKey4","debug2","assert7","lockboxTeamKeysForMember","adminKeys","createKeyset3","lockboxAdminKeysForMember","lockboxUserKeysForDevice","teamKeys","roleKeys","lockboxRoleKeysForAdmins","lockboxRoleKeysForMember","adminCount","lockboxUserKeysForDeviceStarterKeys","canBeUsedResult","redactKeys3","firstUseDevice","symmetric","signatures4","newKeys","isForUser","isForServer","oldKeys","createLockboxRoleKeysForMember","compromised","newKeyset","otherNewKeysets","newKeysets","newKeyset2","updatedKeyset","createTeam","createKeyset4","decryptTeamGraph","createKeyring2","previousKeys","previousDecryptedLinks","decryptedLinks2","newState","rootPublicKey","rootKeys","load","createKeyring3","syncMessageSummary","need","truncateHashes2","log2","debug3","MessageQueue","EventEmitter2","#started","#inbound","#nextInbound","#waiting","#timeout","#outbound","#nextOutbound","#sendMessage","sendMessage","timeout2","#processInbound","#processOutbound","highestIndex","numberedMessage","highest","queue","messageSummary","isString","stateSummary","extendServerContext","getUserName","c","claim","EventEmitter3","#machine","#messageQueue","#log","debug4","#initializeMessageQueue","initialContext","#queueMessage","context2","ourIdentityClaim","context3","assert8","redactKeys4","theirDevice","team","theirIdentityClaim","proofOfInvitation","peer","previousSyncState","syncState","syncMessage","prevSyncState","newChain","randomKeyBytes","encryptedSeed","theirSeed","#fail","sessionKey","encryptedMessage","decryptedMessage","symmetric2","fail4","summary","storedMessages","disconnectMessage","serializedMessage","unpack2","#logMessage","pack2","direction","arrow","peerUserName","TIMEOUT_DELAY"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131]} \ No newline at end of file diff --git a/index-CQYrZ5gL.js b/index-D8bkrfVo.js similarity index 99% rename from index-CQYrZ5gL.js rename to index-D8bkrfVo.js index 17b9808..5c91a50 100644 --- a/index-CQYrZ5gL.js +++ b/index-D8bkrfVo.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-DbeJlE6u.js","./index-Blps0pow.js"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-BvQarRZO.js","./index-BXtvCgpn.js"])))=>i.map(i=>d[i]); function _mergeNamespaces(n,r){for(var _=0;_S[E]})}}}return Object.freeze(Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}))}(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const E of document.querySelectorAll('link[rel="modulepreload"]'))S(E);new MutationObserver(E=>{for(const x of E)if(x.type==="childList")for(const T of x.addedNodes)T.tagName==="LINK"&&T.rel==="modulepreload"&&S(T)}).observe(document,{childList:!0,subtree:!0});function _(E){const x={};return E.integrity&&(x.integrity=E.integrity),E.referrerPolicy&&(x.referrerPolicy=E.referrerPolicy),E.crossOrigin==="use-credentials"?x.credentials="include":E.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function S(E){if(E.ep)return;E.ep=!0;const x=_(E);fetch(E.href,x)}})();function getDefaultExportFromCjs$1(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var browser$g={exports:{}},process=browser$g.exports={},cachedSetTimeout,cachedClearTimeout;function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?cachedSetTimeout=setTimeout:cachedSetTimeout=defaultSetTimout}catch{cachedSetTimeout=defaultSetTimout}try{typeof clearTimeout=="function"?cachedClearTimeout=clearTimeout:cachedClearTimeout=defaultClearTimeout}catch{cachedClearTimeout=defaultClearTimeout}})();function runTimeout(n){if(cachedSetTimeout===setTimeout)return setTimeout(n,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(n,0);try{return cachedSetTimeout(n,0)}catch{try{return cachedSetTimeout.call(null,n,0)}catch{return cachedSetTimeout.call(this,n,0)}}}function runClearTimeout(n){if(cachedClearTimeout===clearTimeout)return clearTimeout(n);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(n);try{return cachedClearTimeout(n)}catch{try{return cachedClearTimeout.call(null,n)}catch{return cachedClearTimeout.call(this,n)}}}var queue$1=[],draining=!1,currentQueue,queueIndex=-1;function cleanUpNextTick(){!draining||!currentQueue||(draining=!1,currentQueue.length?queue$1=currentQueue.concat(queue$1):queueIndex=-1,queue$1.length&&drainQueue())}function drainQueue(){if(!draining){var n=runTimeout(cleanUpNextTick);draining=!0;for(var r=queue$1.length;r;){for(currentQueue=queue$1,queue$1=[];++queueIndex1)for(var _=1;_0)throw new Error("Invalid string. Length must be a multiple of 4");var _=n.indexOf("=");_===-1&&(_=r);var S=_===r?0:4-_%4;return[_,S]}function byteLength$1(n){var r=getLens(n),_=r[0],S=r[1];return(_+S)*3/4-S}function _byteLength(n,r,_){return(r+_)*3/4-_}function toByteArray(n){var r,_=getLens(n),S=_[0],E=_[1],x=new Arr(_byteLength(n,S,E)),T=0,C=E>0?S-4:S,I;for(I=0;I>16&255,x[T++]=r>>8&255,x[T++]=r&255;return E===2&&(r=revLookup[n.charCodeAt(I)]<<2|revLookup[n.charCodeAt(I+1)]>>4,x[T++]=r&255),E===1&&(r=revLookup[n.charCodeAt(I)]<<10|revLookup[n.charCodeAt(I+1)]<<4|revLookup[n.charCodeAt(I+2)]>>2,x[T++]=r>>8&255,x[T++]=r&255),x}function tripletToBase64(n){return lookup$1[n>>18&63]+lookup$1[n>>12&63]+lookup$1[n>>6&63]+lookup$1[n&63]}function encodeChunk(n,r,_){for(var S,E=[],x=r;x<_;x+=3)S=(n[x]<<16&16711680)+(n[x+1]<<8&65280)+(n[x+2]&255),E.push(tripletToBase64(S));return E.join("")}function fromByteArray(n){for(var r,_=n.length,S=_%3,E=[],x=16383,T=0,C=_-S;TC?C:T+x));return S===1?(r=n[_-1],E.push(lookup$1[r>>2]+lookup$1[r<<4&63]+"==")):S===2&&(r=(n[_-2]<<8)+n[_-1],E.push(lookup$1[r>>10]+lookup$1[r>>4&63]+lookup$1[r<<2&63]+"=")),E.join("")}var ieee754={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ieee754.read=function(n,r,_,S,E){var x,T,C=E*8-S-1,I=(1<>1,A=-7,D=_?E-1:0,N=_?-1:1,O=n[r+D];for(D+=N,x=O&(1<<-A)-1,O>>=-A,A+=C;A>0;x=x*256+n[r+D],D+=N,A-=8);for(T=x&(1<<-A)-1,x>>=-A,A+=S;A>0;T=T*256+n[r+D],D+=N,A-=8);if(x===0)x=1-B;else{if(x===I)return T?NaN:(O?-1:1)*(1/0);T=T+Math.pow(2,S),x=x-B}return(O?-1:1)*T*Math.pow(2,x-S)};ieee754.write=function(n,r,_,S,E,x){var T,C,I,B=x*8-E-1,A=(1<>1,N=E===23?Math.pow(2,-24)-Math.pow(2,-77):0,O=S?0:x-1,M=S?1:-1,L=r<0||r===0&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(C=isNaN(r)?1:0,T=A):(T=Math.floor(Math.log(r)/Math.LN2),r*(I=Math.pow(2,-T))<1&&(T--,I*=2),T+D>=1?r+=N/I:r+=N*Math.pow(2,1-D),r*I>=2&&(T++,I/=2),T+D>=A?(C=0,T=A):T+D>=1?(C=(r*I-1)*Math.pow(2,E),T=T+D):(C=r*Math.pow(2,D-1)*Math.pow(2,E),T=0));E>=8;n[_+O]=C&255,O+=M,C/=256,E-=8);for(T=T<0;n[_+O]=T&255,O+=M,T/=256,B-=8);n[_+O-M]|=L*128};/*! * The buffer module from node.js, for the browser. * @@ -36,7 +36,7 @@ Key "${te.identity}" is not allowed to write to the log`);if(!await Entry.verify `);for(var E="",x=0;x1?S+="0x"+forge$g.util.bytesToHex(n.value.slice(1)):S+="(none)",n.value.length>0){var B=n.value.charCodeAt(0);B==1?S+=" (1 unused bit shown)":B>1&&(S+=" ("+B+" unused bits shown)")}}else if(n.type===asn1$4.Type.OCTETSTRING)_nonLatinRegex.test(n.value)||(S+="("+n.value+") "),S+="0x"+forge$g.util.bytesToHex(n.value);else if(n.type===asn1$4.Type.UTF8)try{S+=forge$g.util.decodeUtf8(n.value)}catch(A){if(A.message==="URI malformed")S+="0x"+forge$g.util.bytesToHex(n.value)+" (malformed UTF8)";else throw A}else n.type===asn1$4.Type.PRINTABLESTRING||n.type===asn1$4.Type.IA5String?S+=n.value:_nonLatinRegex.test(n.value)?S+="0x"+forge$g.util.bytesToHex(n.value):n.value.length===0?S+="[null]":S+=n.value}return S};var forge$f=forge$m;forge$f.des=forge$f.des||{};forge$f.des.startEncrypting=function(n,r,_,S){var E=_createCipher({key:n,output:_,decrypt:!1,mode:S||(r===null?"ECB":"CBC")});return E.start(r),E};forge$f.des.createEncryptionCipher=function(n,r){return _createCipher({key:n,output:null,decrypt:!1,mode:r})};forge$f.des.startDecrypting=function(n,r,_,S){var E=_createCipher({key:n,output:_,decrypt:!0,mode:S||(r===null?"ECB":"CBC")});return E.start(r),E};forge$f.des.createDecryptionCipher=function(n,r){return _createCipher({key:n,output:null,decrypt:!0,mode:r})};forge$f.des.Algorithm=function(n,r){var _=this;_.name=n,_.mode=new r({blockSize:8,cipher:{encrypt:function(S,E){return _updateBlock(_._keys,S,E,!1)},decrypt:function(S,E){return _updateBlock(_._keys,S,E,!0)}}}),_._init=!1};forge$f.des.Algorithm.prototype.initialize=function(n){if(!this._init){var r=forge$f.util.createBuffer(n.key);if(this.name.indexOf("3DES")===0&&r.length()!==24)throw new Error("Invalid Triple-DES key size: "+r.length()*8);this._keys=_createKeys(r),this._init=!0}};registerAlgorithm("DES-ECB",forge$f.cipher.modes.ecb);registerAlgorithm("DES-CBC",forge$f.cipher.modes.cbc);registerAlgorithm("DES-CFB",forge$f.cipher.modes.cfb);registerAlgorithm("DES-OFB",forge$f.cipher.modes.ofb);registerAlgorithm("DES-CTR",forge$f.cipher.modes.ctr);registerAlgorithm("3DES-ECB",forge$f.cipher.modes.ecb);registerAlgorithm("3DES-CBC",forge$f.cipher.modes.cbc);registerAlgorithm("3DES-CFB",forge$f.cipher.modes.cfb);registerAlgorithm("3DES-OFB",forge$f.cipher.modes.ofb);registerAlgorithm("3DES-CTR",forge$f.cipher.modes.ctr);function registerAlgorithm(n,r){var _=function(){return new forge$f.des.Algorithm(n,r)};forge$f.cipher.registerAlgorithm(n,_)}var spfunction1=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],spfunction2=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],spfunction3=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],spfunction4=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],spfunction5=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],spfunction6=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],spfunction7=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],spfunction8=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696];function _createKeys(n){for(var r=[0,4,536870912,536870916,65536,65540,536936448,536936452,512,516,536871424,536871428,66048,66052,536936960,536936964],_=[0,1,1048576,1048577,67108864,67108865,68157440,68157441,256,257,1048832,1048833,67109120,67109121,68157696,68157697],S=[0,8,2048,2056,16777216,16777224,16779264,16779272,0,8,2048,2056,16777216,16777224,16779264,16779272],E=[0,2097152,134217728,136314880,8192,2105344,134225920,136323072,131072,2228224,134348800,136445952,139264,2236416,134356992,136454144],x=[0,262144,16,262160,0,262144,16,262160,4096,266240,4112,266256,4096,266240,4112,266256],T=[0,1024,32,1056,0,1024,32,1056,33554432,33555456,33554464,33555488,33554432,33555456,33554464,33555488],C=[0,268435456,524288,268959744,2,268435458,524290,268959746,0,268435456,524288,268959744,2,268435458,524290,268959746],I=[0,65536,2048,67584,536870912,536936448,536872960,536938496,131072,196608,133120,198656,537001984,537067520,537004032,537069568],B=[0,262144,0,262144,2,262146,2,262146,33554432,33816576,33554432,33816576,33554434,33816578,33554434,33816578],A=[0,268435456,8,268435464,0,268435456,8,268435464,1024,268436480,1032,268436488,1024,268436480,1032,268436488],D=[0,32,0,32,1048576,1048608,1048576,1048608,8192,8224,8192,8224,1056768,1056800,1056768,1056800],N=[0,16777216,512,16777728,2097152,18874368,2097664,18874880,67108864,83886080,67109376,83886592,69206016,85983232,69206528,85983744],O=[0,4096,134217728,134221824,524288,528384,134742016,134746112,16,4112,134217744,134221840,524304,528400,134742032,134746128],M=[0,4,256,260,0,4,256,260,1,5,257,261,1,5,257,261],L=n.length()>8?3:1,F=[],U=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],j=0,z,H=0;H>>4^J)&252645135,J^=z,Q^=z<<4,z=(J>>>-16^Q)&65535,Q^=z,J^=z<<-16,z=(Q>>>2^J)&858993459,J^=z,Q^=z<<2,z=(J>>>-16^Q)&65535,Q^=z,J^=z<<-16,z=(Q>>>1^J)&1431655765,J^=z,Q^=z<<1,z=(J>>>8^Q)&16711935,Q^=z,J^=z<<8,z=(Q>>>1^J)&1431655765,J^=z,Q^=z<<1,z=Q<<8|J>>>20&240,Q=J<<24|J<<8&16711680|J>>>8&65280|J>>>24&240,J=z;for(var Z=0;Z>>26,J=J<<2|J>>>26):(Q=Q<<1|Q>>>27,J=J<<1|J>>>27),Q&=-15,J&=-15;var re=r[Q>>>28]|_[Q>>>24&15]|S[Q>>>20&15]|E[Q>>>16&15]|x[Q>>>12&15]|T[Q>>>8&15]|C[Q>>>4&15],ie=I[J>>>28]|B[J>>>24&15]|A[J>>>20&15]|D[J>>>16&15]|N[J>>>12&15]|O[J>>>8&15]|M[J>>>4&15];z=(ie>>>16^re)&65535,F[j++]=re^z,F[j++]=ie^z<<16}}return F}function _updateBlock(n,r,_,S){var E=n.length===32?3:9,x;E===3?x=S?[30,-2,-2]:[0,32,2]:x=S?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var T,C=r[0],I=r[1];T=(C>>>4^I)&252645135,I^=T,C^=T<<4,T=(C>>>16^I)&65535,I^=T,C^=T<<16,T=(I>>>2^C)&858993459,C^=T,I^=T<<2,T=(I>>>8^C)&16711935,C^=T,I^=T<<8,T=(C>>>1^I)&1431655765,I^=T,C^=T<<1,C=C<<1|C>>>31,I=I<<1|I>>>31;for(var B=0;B>>4|I<<28)^n[N+1];T=C,C=I,I=T^(spfunction2[O>>>24&63]|spfunction4[O>>>16&63]|spfunction6[O>>>8&63]|spfunction8[O&63]|spfunction1[M>>>24&63]|spfunction3[M>>>16&63]|spfunction5[M>>>8&63]|spfunction7[M&63])}T=C,C=I,I=T}C=C>>>1|C<<31,I=I>>>1|I<<31,T=(C>>>1^I)&1431655765,I^=T,C^=T<<1,T=(I>>>8^C)&16711935,C^=T,I^=T<<8,T=(I>>>2^C)&858993459,C^=T,I^=T<<2,T=(C>>>16^I)&65535,I^=T,C^=T<<16,T=(C>>>4^I)&252645135,I^=T,C^=T<<4,_[0]=C,_[1]=I}function _createCipher(n){n=n||{};var r=(n.mode||"CBC").toUpperCase(),_="DES-"+r,S;n.decrypt?S=forge$f.cipher.createDecipher(_,n.key):S=forge$f.cipher.createCipher(_,n.key);var E=S.start;return S.start=function(x,T){var C=null;T instanceof forge$f.util.ByteBuffer&&(C=T,T={}),T=T||{},T.output=C,T.iv=x,E.call(S,T)},S}var forge$e=forge$m;forge$e.md=forge$e.md||{};forge$e.md.algorithms=forge$e.md.algorithms||{};var forge$d=forge$m,hmac$2=forge$d.hmac=forge$d.hmac||{};hmac$2.create=function(){var n=null,r=null,_=null,S=null,E={};return E.start=function(x,T){if(x!==null)if(typeof x=="string")if(x=x.toLowerCase(),x in forge$d.md.algorithms)r=forge$d.md.algorithms[x].create();else throw new Error('Unknown hash algorithm "'+x+'"');else r=x;if(T===null)T=n;else{if(typeof T=="string")T=forge$d.util.createBuffer(T);else if(forge$d.util.isArray(T)){var C=T;T=forge$d.util.createBuffer();for(var I=0;Ir.blockLength&&(r.start(),r.update(T.bytes()),T=r.digest()),_=forge$d.util.createBuffer(),S=forge$d.util.createBuffer(),B=T.length();for(var I=0;I */var hasRequiredSafeBuffer$1;function requireSafeBuffer$1(){return hasRequiredSafeBuffer$1||(hasRequiredSafeBuffer$1=1,function(n,r){var _=require$$1$2,S=_.Buffer;function E(T,C){for(var I in T)C[I]=T[I]}S.from&&S.alloc&&S.allocUnsafe&&S.allocUnsafeSlow?n.exports=_:(E(_,r),r.Buffer=x);function x(T,C,I){return S(T,C,I)}x.prototype=Object.create(S.prototype),E(S,x),x.from=function(T,C,I){if(typeof T=="number")throw new TypeError("Argument must not be a number");return S(T,C,I)},x.alloc=function(T,C,I){if(typeof T!="number")throw new TypeError("Argument must be a number");var B=S(T);return C!==void 0?typeof I=="string"?B.fill(C,I):B.fill(C):B.fill(0),B},x.allocUnsafe=function(T){if(typeof T!="number")throw new TypeError("Argument must be a number");return S(T)},x.allocUnsafeSlow=function(T){if(typeof T!="number")throw new TypeError("Argument must be a number");return _.SlowBuffer(T)}}(safeBuffer$1,safeBuffer$1.exports)),safeBuffer$1.exports}var hasRequiredBrowser$b;function requireBrowser$b(){if(hasRequiredBrowser$b)return browser$f.exports;hasRequiredBrowser$b=1;var n=65536,r=4294967295;function _(){throw new Error(`Secure random number generation is not supported by this browser. -Use Chrome, Firefox or Internet Explorer 11`)}var S=requireSafeBuffer$1().Buffer,E=commonjsGlobal.crypto||commonjsGlobal.msCrypto;E&&E.getRandomValues?browser$f.exports=x:browser$f.exports=_;function x(T,C){if(T>r)throw new RangeError("requested too many random bytes");var I=S.allocUnsafe(T);if(T>0)if(T>n)for(var B=0;B"u"||!getProto$1?undefined$1:getProto$1(Uint8Array),INTRINSICS={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?undefined$1:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?undefined$1:ArrayBuffer,"%ArrayIteratorPrototype%":hasSymbols$3&&getProto$1?getProto$1([][Symbol.iterator]()):undefined$1,"%AsyncFromSyncIteratorPrototype%":undefined$1,"%AsyncFunction%":needsEval,"%AsyncGenerator%":needsEval,"%AsyncGeneratorFunction%":needsEval,"%AsyncIteratorPrototype%":needsEval,"%Atomics%":typeof Atomics>"u"?undefined$1:Atomics,"%BigInt%":typeof BigInt>"u"?undefined$1:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?undefined$1:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?undefined$1:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?undefined$1:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$Error,"%eval%":eval,"%EvalError%":$EvalError,"%Float32Array%":typeof Float32Array>"u"?undefined$1:Float32Array,"%Float64Array%":typeof Float64Array>"u"?undefined$1:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?undefined$1:FinalizationRegistry,"%Function%":$Function,"%GeneratorFunction%":needsEval,"%Int8Array%":typeof Int8Array>"u"?undefined$1:Int8Array,"%Int16Array%":typeof Int16Array>"u"?undefined$1:Int16Array,"%Int32Array%":typeof Int32Array>"u"?undefined$1:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":hasSymbols$3&&getProto$1?getProto$1(getProto$1([][Symbol.iterator]())):undefined$1,"%JSON%":typeof JSON=="object"?JSON:undefined$1,"%Map%":typeof Map>"u"?undefined$1:Map,"%MapIteratorPrototype%":typeof Map>"u"||!hasSymbols$3||!getProto$1?undefined$1:getProto$1(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?undefined$1:Promise,"%Proxy%":typeof Proxy>"u"?undefined$1:Proxy,"%RangeError%":$RangeError,"%ReferenceError%":$ReferenceError,"%Reflect%":typeof Reflect>"u"?undefined$1:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?undefined$1:Set,"%SetIteratorPrototype%":typeof Set>"u"||!hasSymbols$3||!getProto$1?undefined$1:getProto$1(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?undefined$1:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":hasSymbols$3&&getProto$1?getProto$1(""[Symbol.iterator]()):undefined$1,"%Symbol%":hasSymbols$3?Symbol:undefined$1,"%SyntaxError%":$SyntaxError$2,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%TypeError%":$TypeError$6,"%Uint8Array%":typeof Uint8Array>"u"?undefined$1:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?undefined$1:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?undefined$1:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?undefined$1:Uint32Array,"%URIError%":$URIError,"%WeakMap%":typeof WeakMap>"u"?undefined$1:WeakMap,"%WeakRef%":typeof WeakRef>"u"?undefined$1:WeakRef,"%WeakSet%":typeof WeakSet>"u"?undefined$1:WeakSet};if(getProto$1)try{null.error}catch(n){var errorProto=getProto$1(getProto$1(n));INTRINSICS["%Error.prototype%"]=errorProto}var doEval=function n(r){var _;if(r==="%AsyncFunction%")_=getEvalledConstructor("async function () {}");else if(r==="%GeneratorFunction%")_=getEvalledConstructor("function* () {}");else if(r==="%AsyncGeneratorFunction%")_=getEvalledConstructor("async function* () {}");else if(r==="%AsyncGenerator%"){var S=n("%AsyncGeneratorFunction%");S&&(_=S.prototype)}else if(r==="%AsyncIteratorPrototype%"){var E=n("%AsyncGenerator%");E&&getProto$1&&(_=getProto$1(E.prototype))}return INTRINSICS[r]=_,_},LEGACY_ALIASES={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},bind$1=functionBind,hasOwn$2=hasown,$concat$1=bind$1.call(Function.call,Array.prototype.concat),$spliceApply=bind$1.call(Function.apply,Array.prototype.splice),$replace$1=bind$1.call(Function.call,String.prototype.replace),$strSlice=bind$1.call(Function.call,String.prototype.slice),$exec$1=bind$1.call(Function.call,RegExp.prototype.exec),rePropName=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,reEscapeChar=/\\(\\)?/g,stringToPath=function(r){var _=$strSlice(r,0,1),S=$strSlice(r,-1);if(_==="%"&&S!=="%")throw new $SyntaxError$2("invalid intrinsic syntax, expected closing `%`");if(S==="%"&&_!=="%")throw new $SyntaxError$2("invalid intrinsic syntax, expected opening `%`");var E=[];return $replace$1(r,rePropName,function(x,T,C,I){E[E.length]=C?$replace$1(I,reEscapeChar,"$1"):T||x}),E},getBaseIntrinsic=function(r,_){var S=r,E;if(hasOwn$2(LEGACY_ALIASES,S)&&(E=LEGACY_ALIASES[S],S="%"+E[0]+"%"),hasOwn$2(INTRINSICS,S)){var x=INTRINSICS[S];if(x===needsEval&&(x=doEval(S)),typeof x>"u"&&!_)throw new $TypeError$6("intrinsic "+r+" exists, but is not available. Please file an issue!");return{alias:E,name:S,value:x}}throw new $SyntaxError$2("intrinsic "+r+" does not exist!")},getIntrinsic=function(r,_){if(typeof r!="string"||r.length===0)throw new $TypeError$6("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof _!="boolean")throw new $TypeError$6('"allowMissing" argument must be a boolean');if($exec$1(/^%?[^%]*%?$/,r)===null)throw new $SyntaxError$2("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var S=stringToPath(r),E=S.length>0?S[0]:"",x=getBaseIntrinsic("%"+E+"%",_),T=x.name,C=x.value,I=!1,B=x.alias;B&&(E=B[0],$spliceApply(S,$concat$1([0,1],B)));for(var A=1,D=!0;A=S.length){var L=$gOPD$2(C,N);D=!!L,D&&"get"in L&&!("originalValue"in L.get)?C=L.get:C=C[N]}else D=hasOwn$2(C,N),C=C[N];D&&!I&&(INTRINSICS[T]=C)}}return C},callBind$6={exports:{}},GetIntrinsic$8=getIntrinsic,$defineProperty$2=GetIntrinsic$8("%Object.defineProperty%",!0)||!1;if($defineProperty$2)try{$defineProperty$2({},"a",{value:1})}catch{$defineProperty$2=!1}var esDefineProperty=$defineProperty$2,GetIntrinsic$7=getIntrinsic,$gOPD$1=GetIntrinsic$7("%Object.getOwnPropertyDescriptor%",!0);if($gOPD$1)try{$gOPD$1([],"length")}catch{$gOPD$1=null}var gopd$1=$gOPD$1,$defineProperty$1=esDefineProperty,$SyntaxError$1=syntax,$TypeError$5=type$9,gopd=gopd$1,defineDataProperty$1=function(r,_,S){if(!r||typeof r!="object"&&typeof r!="function")throw new $TypeError$5("`obj` must be an object or a function`");if(typeof _!="string"&&typeof _!="symbol")throw new $TypeError$5("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new $TypeError$5("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new $TypeError$5("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new $TypeError$5("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new $TypeError$5("`loose`, if provided, must be a boolean");var E=arguments.length>3?arguments[3]:null,x=arguments.length>4?arguments[4]:null,T=arguments.length>5?arguments[5]:null,C=arguments.length>6?arguments[6]:!1,I=!!gopd&&gopd(r,_);if($defineProperty$1)$defineProperty$1(r,_,{configurable:T===null&&I?I.configurable:!T,enumerable:E===null&&I?I.enumerable:!E,value:S,writable:x===null&&I?I.writable:!x});else if(C||!E&&!x&&!T)r[_]=S;else throw new $SyntaxError$1("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},$defineProperty=esDefineProperty,hasPropertyDescriptors=function(){return!!$defineProperty};hasPropertyDescriptors.hasArrayLengthDefineBug=function(){if(!$defineProperty)return null;try{return $defineProperty([],"length",{value:1}).length!==1}catch{return!0}};var hasPropertyDescriptors_1=hasPropertyDescriptors,GetIntrinsic$6=getIntrinsic,define$5=defineDataProperty$1,hasDescriptors$1=hasPropertyDescriptors_1(),gOPD$4=gopd$1,$TypeError$4=type$9,$floor$1=GetIntrinsic$6("%Math.floor%"),setFunctionLength=function(r,_){if(typeof r!="function")throw new $TypeError$4("`fn` is not a function");if(typeof _!="number"||_<0||_>4294967295||$floor$1(_)!==_)throw new $TypeError$4("`length` must be a positive 32-bit integer");var S=arguments.length>2&&!!arguments[2],E=!0,x=!0;if("length"in r&&gOPD$4){var T=gOPD$4(r,"length");T&&!T.configurable&&(E=!1),T&&!T.writable&&(x=!1)}return(E||x||!S)&&(hasDescriptors$1?define$5(r,"length",_,!0,!0):define$5(r,"length",_)),r};(function(n){var r=functionBind,_=getIntrinsic,S=setFunctionLength,E=type$9,x=_("%Function.prototype.apply%"),T=_("%Function.prototype.call%"),C=_("%Reflect.apply%",!0)||r.call(T,x),I=esDefineProperty,B=_("%Math.max%");n.exports=function(N){if(typeof N!="function")throw new E("a function is required");var O=C(r,T,arguments);return S(O,1+B(0,N.length-(arguments.length-1)),!0)};var A=function(){return C(r,x,arguments)};I?I(n.exports,"apply",{value:A}):n.exports.apply=A})(callBind$6);var callBindExports=callBind$6.exports,GetIntrinsic$5=getIntrinsic,callBind$5=callBindExports,$indexOf$1=callBind$5(GetIntrinsic$5("String.prototype.indexOf")),callBound$c=function(r,_){var S=GetIntrinsic$5(r,!!_);return typeof S=="function"&&$indexOf$1(r,".prototype.")>-1?callBind$5(S):S},hasToStringTag$7=shams(),callBound$b=callBound$c,$toString$4=callBound$b("Object.prototype.toString"),isStandardArguments=function(r){return hasToStringTag$7&&r&&typeof r=="object"&&Symbol.toStringTag in r?!1:$toString$4(r)==="[object Arguments]"},isLegacyArguments=function(r){return isStandardArguments(r)?!0:r!==null&&typeof r=="object"&&typeof r.length=="number"&&r.length>=0&&$toString$4(r)!=="[object Array]"&&$toString$4(r.callee)==="[object Function]"},supportsStandardArguments=function(){return isStandardArguments(arguments)}();isStandardArguments.isLegacyArguments=isLegacyArguments;var isArguments$3=supportsStandardArguments?isStandardArguments:isLegacyArguments,isGeneratorFunction,hasRequiredIsGeneratorFunction;function requireIsGeneratorFunction(){if(hasRequiredIsGeneratorFunction)return isGeneratorFunction;hasRequiredIsGeneratorFunction=1;var n=Object.prototype.toString,r=Function.prototype.toString,_=/^\s*(?:function)?\*/,S=shams(),E=Object.getPrototypeOf,x=function(){if(!S)return!1;try{return Function("return function*() {}")()}catch{}},T;return isGeneratorFunction=function(I){if(typeof I!="function")return!1;if(_.test(r.call(I)))return!0;if(!S){var B=n.call(I);return B==="[object GeneratorFunction]"}if(!E)return!1;if(typeof T>"u"){var A=x();T=A?E(A):!1}return E(I)===T},isGeneratorFunction}var fnToStr=Function.prototype.toString,reflectApply=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,badArrayLike,isCallableMarker;if(typeof reflectApply=="function"&&typeof Object.defineProperty=="function")try{badArrayLike=Object.defineProperty({},"length",{get:function(){throw isCallableMarker}}),isCallableMarker={},reflectApply(function(){throw 42},null,badArrayLike)}catch(n){n!==isCallableMarker&&(reflectApply=null)}else reflectApply=null;var constructorRegex=/^\s*class\b/,isES6ClassFn=function(r){try{var _=fnToStr.call(r);return constructorRegex.test(_)}catch{return!1}},tryFunctionObject=function(r){try{return isES6ClassFn(r)?!1:(fnToStr.call(r),!0)}catch{return!1}},toStr$9=Object.prototype.toString,objectClass="[object Object]",fnClass="[object Function]",genClass="[object GeneratorFunction]",ddaClass="[object HTMLAllCollection]",ddaClass2="[object HTML document.all class]",ddaClass3="[object HTMLCollection]",hasToStringTag$6=typeof Symbol=="function"&&!!Symbol.toStringTag,isIE68=!(0 in[,]),isDDA=function(){return!1};if(typeof document=="object"){var all$2=document.all;toStr$9.call(all$2)===toStr$9.call(document.all)&&(isDDA=function(r){if((isIE68||!r)&&(typeof r>"u"||typeof r=="object"))try{var _=toStr$9.call(r);return(_===ddaClass||_===ddaClass2||_===ddaClass3||_===objectClass)&&r("")==null}catch{}return!1})}var isCallable$1=reflectApply?function(r){if(isDDA(r))return!0;if(!r||typeof r!="function"&&typeof r!="object")return!1;try{reflectApply(r,null,badArrayLike)}catch(_){if(_!==isCallableMarker)return!1}return!isES6ClassFn(r)&&tryFunctionObject(r)}:function(r){if(isDDA(r))return!0;if(!r||typeof r!="function"&&typeof r!="object")return!1;if(hasToStringTag$6)return tryFunctionObject(r);if(isES6ClassFn(r))return!1;var _=toStr$9.call(r);return _!==fnClass&&_!==genClass&&!/^\[object HTML/.test(_)?!1:tryFunctionObject(r)},isCallable=isCallable$1,toStr$8=Object.prototype.toString,hasOwnProperty$2=Object.prototype.hasOwnProperty,forEachArray=function(r,_,S){for(var E=0,x=r.length;E=3&&(E=S),toStr$8.call(r)==="[object Array]"?forEachArray(r,_,E):typeof r=="string"?forEachString(r,_,E):forEachObject(r,_,E)},forEach_1=forEach$3,possibleTypedArrayNames=["Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"],possibleNames=possibleTypedArrayNames,g$1=typeof globalThis>"u"?commonjsGlobal:globalThis,availableTypedArrays$1=function(){for(var r=[],_=0;_"u"?commonjsGlobal:globalThis,typedArrays=availableTypedArrays(),$slice$1=callBound$a("String.prototype.slice"),getPrototypeOf$1=Object.getPrototypeOf,$indexOf=callBound$a("Array.prototype.indexOf",!0)||function(r,_){for(var S=0;S-1?_:_!=="Object"?!1:trySlices(r)}return gOPD$3?tryTypedArrays(r):null},isTypedArray$1,hasRequiredIsTypedArray;function requireIsTypedArray(){if(hasRequiredIsTypedArray)return isTypedArray$1;hasRequiredIsTypedArray=1;var n=whichTypedArray$1;return isTypedArray$1=function(_){return!!n(_)},isTypedArray$1}var hasRequiredTypes;function requireTypes(){return hasRequiredTypes||(hasRequiredTypes=1,function(n){var r=isArguments$3,_=requireIsGeneratorFunction(),S=whichTypedArray$1,E=requireIsTypedArray();function x(ke){return ke.call.bind(ke)}var T=typeof BigInt<"u",C=typeof Symbol<"u",I=x(Object.prototype.toString),B=x(Number.prototype.valueOf),A=x(String.prototype.valueOf),D=x(Boolean.prototype.valueOf);if(T)var N=x(BigInt.prototype.valueOf);if(C)var O=x(Symbol.prototype.valueOf);function M(ke,Pe){if(typeof ke!="object")return!1;try{return Pe(ke),!0}catch{return!1}}n.isArgumentsObject=r,n.isGeneratorFunction=_,n.isTypedArray=E;function L(ke){return typeof Promise<"u"&&ke instanceof Promise||ke!==null&&typeof ke=="object"&&typeof ke.then=="function"&&typeof ke.catch=="function"}n.isPromise=L;function F(ke){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?ArrayBuffer.isView(ke):E(ke)||ce(ke)}n.isArrayBufferView=F;function U(ke){return S(ke)==="Uint8Array"}n.isUint8Array=U;function j(ke){return S(ke)==="Uint8ClampedArray"}n.isUint8ClampedArray=j;function z(ke){return S(ke)==="Uint16Array"}n.isUint16Array=z;function H(ke){return S(ke)==="Uint32Array"}n.isUint32Array=H;function Q(ke){return S(ke)==="Int8Array"}n.isInt8Array=Q;function J(ke){return S(ke)==="Int16Array"}n.isInt16Array=J;function Z(ke){return S(ke)==="Int32Array"}n.isInt32Array=Z;function re(ke){return S(ke)==="Float32Array"}n.isFloat32Array=re;function ie(ke){return S(ke)==="Float64Array"}n.isFloat64Array=ie;function pe(ke){return S(ke)==="BigInt64Array"}n.isBigInt64Array=pe;function ue(ke){return S(ke)==="BigUint64Array"}n.isBigUint64Array=ue;function W(ke){return I(ke)==="[object Map]"}W.working=typeof Map<"u"&&W(new Map);function Y(ke){return typeof Map>"u"?!1:W.working?W(ke):ke instanceof Map}n.isMap=Y;function q(ke){return I(ke)==="[object Set]"}q.working=typeof Set<"u"&&q(new Set);function G(ke){return typeof Set>"u"?!1:q.working?q(ke):ke instanceof Set}n.isSet=G;function ne(ke){return I(ke)==="[object WeakMap]"}ne.working=typeof WeakMap<"u"&&ne(new WeakMap);function ee(ke){return typeof WeakMap>"u"?!1:ne.working?ne(ke):ke instanceof WeakMap}n.isWeakMap=ee;function oe(ke){return I(ke)==="[object WeakSet]"}oe.working=typeof WeakSet<"u"&&oe(new WeakSet);function ae(ke){return oe(ke)}n.isWeakSet=ae;function se(ke){return I(ke)==="[object ArrayBuffer]"}se.working=typeof ArrayBuffer<"u"&&se(new ArrayBuffer);function te(ke){return typeof ArrayBuffer>"u"?!1:se.working?se(ke):ke instanceof ArrayBuffer}n.isArrayBuffer=te;function X(ke){return I(ke)==="[object DataView]"}X.working=typeof ArrayBuffer<"u"&&typeof DataView<"u"&&X(new DataView(new ArrayBuffer(1),0,1));function ce(ke){return typeof DataView>"u"?!1:X.working?X(ke):ke instanceof DataView}n.isDataView=ce;var le=typeof SharedArrayBuffer<"u"?SharedArrayBuffer:void 0;function ye(ke){return I(ke)==="[object SharedArrayBuffer]"}function de(ke){return typeof le>"u"?!1:(typeof ye.working>"u"&&(ye.working=ye(new le)),ye.working?ye(ke):ke instanceof le)}n.isSharedArrayBuffer=de;function he(ke){return I(ke)==="[object AsyncFunction]"}n.isAsyncFunction=he;function me(ke){return I(ke)==="[object Map Iterator]"}n.isMapIterator=me;function Ee(ke){return I(ke)==="[object Set Iterator]"}n.isSetIterator=Ee;function Ce(ke){return I(ke)==="[object Generator]"}n.isGeneratorObject=Ce;function be(ke){return I(ke)==="[object WebAssembly.Module]"}n.isWebAssemblyCompiledModule=be;function ge(ke){return M(ke,B)}n.isNumberObject=ge;function we(ke){return M(ke,A)}n.isStringObject=we;function fe(ke){return M(ke,D)}n.isBooleanObject=fe;function xe(ke){return T&&M(ke,N)}n.isBigIntObject=xe;function Ie(ke){return C&&M(ke,O)}n.isSymbolObject=Ie;function Se(ke){return ge(ke)||we(ke)||fe(ke)||xe(ke)||Ie(ke)}n.isBoxedPrimitive=Se;function $e(ke){return typeof Uint8Array<"u"&&(te(ke)||de(ke))}n.isAnyArrayBuffer=$e,["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(ke){Object.defineProperty(n,ke,{enumerable:!1,value:function(){throw new Error(ke+" is not supported in userland")}})})}(types$2)),types$2}var isBufferBrowser,hasRequiredIsBufferBrowser;function requireIsBufferBrowser(){return hasRequiredIsBufferBrowser||(hasRequiredIsBufferBrowser=1,isBufferBrowser=function(r){return r&&typeof r=="object"&&typeof r.copy=="function"&&typeof r.fill=="function"&&typeof r.readUInt8=="function"}),isBufferBrowser}var hasRequiredUtil$1;function requireUtil$1(){return hasRequiredUtil$1||(hasRequiredUtil$1=1,function(n){var r={},_=Object.getOwnPropertyDescriptors||function(le){for(var ye=Object.keys(le),de={},he=0;he=he)return Ce;switch(Ce){case"%s":return String(de[ye++]);case"%d":return Number(de[ye++]);case"%j":try{return JSON.stringify(de[ye++])}catch{return"[Circular]"}default:return Ce}}),Ee=de[ye];ye"u")return function(){return n.deprecate(ce,le).apply(this,arguments)};var ye=!1;function de(){if(!ye){if(process$1.throwDeprecation)throw new Error(le);process$1.traceDeprecation?console.trace(le):console.error(le),ye=!0}return ce.apply(this,arguments)}return de};var E={},x=/^$/;if(r.NODE_DEBUG){var T=r.NODE_DEBUG;T=T.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),x=new RegExp("^"+T+"$","i")}n.debuglog=function(ce){if(ce=ce.toUpperCase(),!E[ce])if(x.test(ce)){var le=process$1.pid;E[ce]=function(){var ye=n.format.apply(n,arguments);console.error("%s %d: %s",ce,le,ye)}}else E[ce]=function(){};return E[ce]};function C(ce,le){var ye={seen:[],stylize:B};return arguments.length>=3&&(ye.depth=arguments[2]),arguments.length>=4&&(ye.colors=arguments[3]),j(le)?ye.showHidden=le:le&&n._extend(ye,le),re(ye.showHidden)&&(ye.showHidden=!1),re(ye.depth)&&(ye.depth=2),re(ye.colors)&&(ye.colors=!1),re(ye.customInspect)&&(ye.customInspect=!0),ye.colors&&(ye.stylize=I),D(ye,ce,ye.depth)}n.inspect=C,C.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},C.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function I(ce,le){var ye=C.styles[le];return ye?"\x1B["+C.colors[ye][0]+"m"+ce+"\x1B["+C.colors[ye][1]+"m":ce}function B(ce,le){return ce}function A(ce){var le={};return ce.forEach(function(ye,de){le[ye]=!0}),le}function D(ce,le,ye){if(ce.customInspect&&le&&Y(le.inspect)&&le.inspect!==n.inspect&&!(le.constructor&&le.constructor.prototype===le)){var de=le.inspect(ye,ce);return J(de)||(de=D(ce,de,ye)),de}var he=N(ce,le);if(he)return he;var me=Object.keys(le),Ee=A(me);if(ce.showHidden&&(me=Object.getOwnPropertyNames(le)),W(le)&&(me.indexOf("message")>=0||me.indexOf("description")>=0))return O(le);if(me.length===0){if(Y(le)){var Ce=le.name?": "+le.name:"";return ce.stylize("[Function"+Ce+"]","special")}if(ie(le))return ce.stylize(RegExp.prototype.toString.call(le),"regexp");if(ue(le))return ce.stylize(Date.prototype.toString.call(le),"date");if(W(le))return O(le)}var be="",ge=!1,we=["{","}"];if(U(le)&&(ge=!0,we=["[","]"]),Y(le)){var fe=le.name?": "+le.name:"";be=" [Function"+fe+"]"}if(ie(le)&&(be=" "+RegExp.prototype.toString.call(le)),ue(le)&&(be=" "+Date.prototype.toUTCString.call(le)),W(le)&&(be=" "+O(le)),me.length===0&&(!ge||le.length==0))return we[0]+be+we[1];if(ye<0)return ie(le)?ce.stylize(RegExp.prototype.toString.call(le),"regexp"):ce.stylize("[Object]","special");ce.seen.push(le);var xe;return ge?xe=M(ce,le,ye,Ee,me):xe=me.map(function(Ie){return L(ce,le,ye,Ee,Ie,ge)}),ce.seen.pop(),F(xe,be,we)}function N(ce,le){if(re(le))return ce.stylize("undefined","undefined");if(J(le)){var ye="'"+JSON.stringify(le).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return ce.stylize(ye,"string")}if(Q(le))return ce.stylize(""+le,"number");if(j(le))return ce.stylize(""+le,"boolean");if(z(le))return ce.stylize("null","null")}function O(ce){return"["+Error.prototype.toString.call(ce)+"]"}function M(ce,le,ye,de,he){for(var me=[],Ee=0,Ce=le.length;Eer)throw new RangeError("requested too many random bytes");var I=S.allocUnsafe(T);if(T>0)if(T>n)for(var B=0;B"u"||!getProto$1?undefined$1:getProto$1(Uint8Array),INTRINSICS={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?undefined$1:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?undefined$1:ArrayBuffer,"%ArrayIteratorPrototype%":hasSymbols$3&&getProto$1?getProto$1([][Symbol.iterator]()):undefined$1,"%AsyncFromSyncIteratorPrototype%":undefined$1,"%AsyncFunction%":needsEval,"%AsyncGenerator%":needsEval,"%AsyncGeneratorFunction%":needsEval,"%AsyncIteratorPrototype%":needsEval,"%Atomics%":typeof Atomics>"u"?undefined$1:Atomics,"%BigInt%":typeof BigInt>"u"?undefined$1:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?undefined$1:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?undefined$1:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?undefined$1:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$Error,"%eval%":eval,"%EvalError%":$EvalError,"%Float32Array%":typeof Float32Array>"u"?undefined$1:Float32Array,"%Float64Array%":typeof Float64Array>"u"?undefined$1:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?undefined$1:FinalizationRegistry,"%Function%":$Function,"%GeneratorFunction%":needsEval,"%Int8Array%":typeof Int8Array>"u"?undefined$1:Int8Array,"%Int16Array%":typeof Int16Array>"u"?undefined$1:Int16Array,"%Int32Array%":typeof Int32Array>"u"?undefined$1:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":hasSymbols$3&&getProto$1?getProto$1(getProto$1([][Symbol.iterator]())):undefined$1,"%JSON%":typeof JSON=="object"?JSON:undefined$1,"%Map%":typeof Map>"u"?undefined$1:Map,"%MapIteratorPrototype%":typeof Map>"u"||!hasSymbols$3||!getProto$1?undefined$1:getProto$1(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?undefined$1:Promise,"%Proxy%":typeof Proxy>"u"?undefined$1:Proxy,"%RangeError%":$RangeError,"%ReferenceError%":$ReferenceError,"%Reflect%":typeof Reflect>"u"?undefined$1:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?undefined$1:Set,"%SetIteratorPrototype%":typeof Set>"u"||!hasSymbols$3||!getProto$1?undefined$1:getProto$1(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?undefined$1:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":hasSymbols$3&&getProto$1?getProto$1(""[Symbol.iterator]()):undefined$1,"%Symbol%":hasSymbols$3?Symbol:undefined$1,"%SyntaxError%":$SyntaxError$2,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%TypeError%":$TypeError$6,"%Uint8Array%":typeof Uint8Array>"u"?undefined$1:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?undefined$1:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?undefined$1:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?undefined$1:Uint32Array,"%URIError%":$URIError,"%WeakMap%":typeof WeakMap>"u"?undefined$1:WeakMap,"%WeakRef%":typeof WeakRef>"u"?undefined$1:WeakRef,"%WeakSet%":typeof WeakSet>"u"?undefined$1:WeakSet};if(getProto$1)try{null.error}catch(n){var errorProto=getProto$1(getProto$1(n));INTRINSICS["%Error.prototype%"]=errorProto}var doEval=function n(r){var _;if(r==="%AsyncFunction%")_=getEvalledConstructor("async function () {}");else if(r==="%GeneratorFunction%")_=getEvalledConstructor("function* () {}");else if(r==="%AsyncGeneratorFunction%")_=getEvalledConstructor("async function* () {}");else if(r==="%AsyncGenerator%"){var S=n("%AsyncGeneratorFunction%");S&&(_=S.prototype)}else if(r==="%AsyncIteratorPrototype%"){var E=n("%AsyncGenerator%");E&&getProto$1&&(_=getProto$1(E.prototype))}return INTRINSICS[r]=_,_},LEGACY_ALIASES={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},bind$1=functionBind,hasOwn$2=hasown,$concat$1=bind$1.call(Function.call,Array.prototype.concat),$spliceApply=bind$1.call(Function.apply,Array.prototype.splice),$replace$1=bind$1.call(Function.call,String.prototype.replace),$strSlice=bind$1.call(Function.call,String.prototype.slice),$exec$1=bind$1.call(Function.call,RegExp.prototype.exec),rePropName=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,reEscapeChar=/\\(\\)?/g,stringToPath=function(r){var _=$strSlice(r,0,1),S=$strSlice(r,-1);if(_==="%"&&S!=="%")throw new $SyntaxError$2("invalid intrinsic syntax, expected closing `%`");if(S==="%"&&_!=="%")throw new $SyntaxError$2("invalid intrinsic syntax, expected opening `%`");var E=[];return $replace$1(r,rePropName,function(x,T,C,I){E[E.length]=C?$replace$1(I,reEscapeChar,"$1"):T||x}),E},getBaseIntrinsic=function(r,_){var S=r,E;if(hasOwn$2(LEGACY_ALIASES,S)&&(E=LEGACY_ALIASES[S],S="%"+E[0]+"%"),hasOwn$2(INTRINSICS,S)){var x=INTRINSICS[S];if(x===needsEval&&(x=doEval(S)),typeof x>"u"&&!_)throw new $TypeError$6("intrinsic "+r+" exists, but is not available. Please file an issue!");return{alias:E,name:S,value:x}}throw new $SyntaxError$2("intrinsic "+r+" does not exist!")},getIntrinsic=function(r,_){if(typeof r!="string"||r.length===0)throw new $TypeError$6("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof _!="boolean")throw new $TypeError$6('"allowMissing" argument must be a boolean');if($exec$1(/^%?[^%]*%?$/,r)===null)throw new $SyntaxError$2("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var S=stringToPath(r),E=S.length>0?S[0]:"",x=getBaseIntrinsic("%"+E+"%",_),T=x.name,C=x.value,I=!1,B=x.alias;B&&(E=B[0],$spliceApply(S,$concat$1([0,1],B)));for(var A=1,D=!0;A=S.length){var L=$gOPD$2(C,N);D=!!L,D&&"get"in L&&!("originalValue"in L.get)?C=L.get:C=C[N]}else D=hasOwn$2(C,N),C=C[N];D&&!I&&(INTRINSICS[T]=C)}}return C},callBind$6={exports:{}},esDefineProperty,hasRequiredEsDefineProperty;function requireEsDefineProperty(){if(hasRequiredEsDefineProperty)return esDefineProperty;hasRequiredEsDefineProperty=1;var n=getIntrinsic,r=n("%Object.defineProperty%",!0)||!1;if(r)try{r({},"a",{value:1})}catch{r=!1}return esDefineProperty=r,esDefineProperty}var GetIntrinsic$7=getIntrinsic,$gOPD$1=GetIntrinsic$7("%Object.getOwnPropertyDescriptor%",!0);if($gOPD$1)try{$gOPD$1([],"length")}catch{$gOPD$1=null}var gopd$1=$gOPD$1,$defineProperty$1=requireEsDefineProperty(),$SyntaxError$1=syntax,$TypeError$5=type$9,gopd=gopd$1,defineDataProperty$1=function(r,_,S){if(!r||typeof r!="object"&&typeof r!="function")throw new $TypeError$5("`obj` must be an object or a function`");if(typeof _!="string"&&typeof _!="symbol")throw new $TypeError$5("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new $TypeError$5("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new $TypeError$5("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new $TypeError$5("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new $TypeError$5("`loose`, if provided, must be a boolean");var E=arguments.length>3?arguments[3]:null,x=arguments.length>4?arguments[4]:null,T=arguments.length>5?arguments[5]:null,C=arguments.length>6?arguments[6]:!1,I=!!gopd&&gopd(r,_);if($defineProperty$1)$defineProperty$1(r,_,{configurable:T===null&&I?I.configurable:!T,enumerable:E===null&&I?I.enumerable:!E,value:S,writable:x===null&&I?I.writable:!x});else if(C||!E&&!x&&!T)r[_]=S;else throw new $SyntaxError$1("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},$defineProperty=requireEsDefineProperty(),hasPropertyDescriptors=function(){return!!$defineProperty};hasPropertyDescriptors.hasArrayLengthDefineBug=function(){if(!$defineProperty)return null;try{return $defineProperty([],"length",{value:1}).length!==1}catch{return!0}};var hasPropertyDescriptors_1=hasPropertyDescriptors,GetIntrinsic$6=getIntrinsic,define$5=defineDataProperty$1,hasDescriptors$1=hasPropertyDescriptors_1(),gOPD$4=gopd$1,$TypeError$4=type$9,$floor$1=GetIntrinsic$6("%Math.floor%"),setFunctionLength=function(r,_){if(typeof r!="function")throw new $TypeError$4("`fn` is not a function");if(typeof _!="number"||_<0||_>4294967295||$floor$1(_)!==_)throw new $TypeError$4("`length` must be a positive 32-bit integer");var S=arguments.length>2&&!!arguments[2],E=!0,x=!0;if("length"in r&&gOPD$4){var T=gOPD$4(r,"length");T&&!T.configurable&&(E=!1),T&&!T.writable&&(x=!1)}return(E||x||!S)&&(hasDescriptors$1?define$5(r,"length",_,!0,!0):define$5(r,"length",_)),r};(function(n){var r=functionBind,_=getIntrinsic,S=setFunctionLength,E=type$9,x=_("%Function.prototype.apply%"),T=_("%Function.prototype.call%"),C=_("%Reflect.apply%",!0)||r.call(T,x),I=requireEsDefineProperty(),B=_("%Math.max%");n.exports=function(N){if(typeof N!="function")throw new E("a function is required");var O=C(r,T,arguments);return S(O,1+B(0,N.length-(arguments.length-1)),!0)};var A=function(){return C(r,x,arguments)};I?I(n.exports,"apply",{value:A}):n.exports.apply=A})(callBind$6);var callBindExports=callBind$6.exports,GetIntrinsic$5=getIntrinsic,callBind$5=callBindExports,$indexOf$1=callBind$5(GetIntrinsic$5("String.prototype.indexOf")),callBound$c=function(r,_){var S=GetIntrinsic$5(r,!!_);return typeof S=="function"&&$indexOf$1(r,".prototype.")>-1?callBind$5(S):S},hasToStringTag$7=shams(),callBound$b=callBound$c,$toString$4=callBound$b("Object.prototype.toString"),isStandardArguments=function(r){return hasToStringTag$7&&r&&typeof r=="object"&&Symbol.toStringTag in r?!1:$toString$4(r)==="[object Arguments]"},isLegacyArguments=function(r){return isStandardArguments(r)?!0:r!==null&&typeof r=="object"&&typeof r.length=="number"&&r.length>=0&&$toString$4(r)!=="[object Array]"&&$toString$4(r.callee)==="[object Function]"},supportsStandardArguments=function(){return isStandardArguments(arguments)}();isStandardArguments.isLegacyArguments=isLegacyArguments;var isArguments$3=supportsStandardArguments?isStandardArguments:isLegacyArguments,isGeneratorFunction,hasRequiredIsGeneratorFunction;function requireIsGeneratorFunction(){if(hasRequiredIsGeneratorFunction)return isGeneratorFunction;hasRequiredIsGeneratorFunction=1;var n=Object.prototype.toString,r=Function.prototype.toString,_=/^\s*(?:function)?\*/,S=shams(),E=Object.getPrototypeOf,x=function(){if(!S)return!1;try{return Function("return function*() {}")()}catch{}},T;return isGeneratorFunction=function(I){if(typeof I!="function")return!1;if(_.test(r.call(I)))return!0;if(!S){var B=n.call(I);return B==="[object GeneratorFunction]"}if(!E)return!1;if(typeof T>"u"){var A=x();T=A?E(A):!1}return E(I)===T},isGeneratorFunction}var fnToStr=Function.prototype.toString,reflectApply=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,badArrayLike,isCallableMarker;if(typeof reflectApply=="function"&&typeof Object.defineProperty=="function")try{badArrayLike=Object.defineProperty({},"length",{get:function(){throw isCallableMarker}}),isCallableMarker={},reflectApply(function(){throw 42},null,badArrayLike)}catch(n){n!==isCallableMarker&&(reflectApply=null)}else reflectApply=null;var constructorRegex=/^\s*class\b/,isES6ClassFn=function(r){try{var _=fnToStr.call(r);return constructorRegex.test(_)}catch{return!1}},tryFunctionObject=function(r){try{return isES6ClassFn(r)?!1:(fnToStr.call(r),!0)}catch{return!1}},toStr$9=Object.prototype.toString,objectClass="[object Object]",fnClass="[object Function]",genClass="[object GeneratorFunction]",ddaClass="[object HTMLAllCollection]",ddaClass2="[object HTML document.all class]",ddaClass3="[object HTMLCollection]",hasToStringTag$6=typeof Symbol=="function"&&!!Symbol.toStringTag,isIE68=!(0 in[,]),isDDA=function(){return!1};if(typeof document=="object"){var all$2=document.all;toStr$9.call(all$2)===toStr$9.call(document.all)&&(isDDA=function(r){if((isIE68||!r)&&(typeof r>"u"||typeof r=="object"))try{var _=toStr$9.call(r);return(_===ddaClass||_===ddaClass2||_===ddaClass3||_===objectClass)&&r("")==null}catch{}return!1})}var isCallable$1=reflectApply?function(r){if(isDDA(r))return!0;if(!r||typeof r!="function"&&typeof r!="object")return!1;try{reflectApply(r,null,badArrayLike)}catch(_){if(_!==isCallableMarker)return!1}return!isES6ClassFn(r)&&tryFunctionObject(r)}:function(r){if(isDDA(r))return!0;if(!r||typeof r!="function"&&typeof r!="object")return!1;if(hasToStringTag$6)return tryFunctionObject(r);if(isES6ClassFn(r))return!1;var _=toStr$9.call(r);return _!==fnClass&&_!==genClass&&!/^\[object HTML/.test(_)?!1:tryFunctionObject(r)},isCallable=isCallable$1,toStr$8=Object.prototype.toString,hasOwnProperty$2=Object.prototype.hasOwnProperty,forEachArray=function(r,_,S){for(var E=0,x=r.length;E=3&&(E=S),toStr$8.call(r)==="[object Array]"?forEachArray(r,_,E):typeof r=="string"?forEachString(r,_,E):forEachObject(r,_,E)},forEach_1=forEach$3,possibleTypedArrayNames=["Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"],possibleNames=possibleTypedArrayNames,g$1=typeof globalThis>"u"?commonjsGlobal:globalThis,availableTypedArrays$1=function(){for(var r=[],_=0;_"u"?commonjsGlobal:globalThis,typedArrays=availableTypedArrays(),$slice$1=callBound$a("String.prototype.slice"),getPrototypeOf$1=Object.getPrototypeOf,$indexOf=callBound$a("Array.prototype.indexOf",!0)||function(r,_){for(var S=0;S-1?_:_!=="Object"?!1:trySlices(r)}return gOPD$3?tryTypedArrays(r):null},isTypedArray$1,hasRequiredIsTypedArray;function requireIsTypedArray(){if(hasRequiredIsTypedArray)return isTypedArray$1;hasRequiredIsTypedArray=1;var n=whichTypedArray$1;return isTypedArray$1=function(_){return!!n(_)},isTypedArray$1}var hasRequiredTypes;function requireTypes(){return hasRequiredTypes||(hasRequiredTypes=1,function(n){var r=isArguments$3,_=requireIsGeneratorFunction(),S=whichTypedArray$1,E=requireIsTypedArray();function x(ke){return ke.call.bind(ke)}var T=typeof BigInt<"u",C=typeof Symbol<"u",I=x(Object.prototype.toString),B=x(Number.prototype.valueOf),A=x(String.prototype.valueOf),D=x(Boolean.prototype.valueOf);if(T)var N=x(BigInt.prototype.valueOf);if(C)var O=x(Symbol.prototype.valueOf);function M(ke,Pe){if(typeof ke!="object")return!1;try{return Pe(ke),!0}catch{return!1}}n.isArgumentsObject=r,n.isGeneratorFunction=_,n.isTypedArray=E;function L(ke){return typeof Promise<"u"&&ke instanceof Promise||ke!==null&&typeof ke=="object"&&typeof ke.then=="function"&&typeof ke.catch=="function"}n.isPromise=L;function F(ke){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?ArrayBuffer.isView(ke):E(ke)||ce(ke)}n.isArrayBufferView=F;function U(ke){return S(ke)==="Uint8Array"}n.isUint8Array=U;function j(ke){return S(ke)==="Uint8ClampedArray"}n.isUint8ClampedArray=j;function z(ke){return S(ke)==="Uint16Array"}n.isUint16Array=z;function H(ke){return S(ke)==="Uint32Array"}n.isUint32Array=H;function Q(ke){return S(ke)==="Int8Array"}n.isInt8Array=Q;function J(ke){return S(ke)==="Int16Array"}n.isInt16Array=J;function Z(ke){return S(ke)==="Int32Array"}n.isInt32Array=Z;function re(ke){return S(ke)==="Float32Array"}n.isFloat32Array=re;function ie(ke){return S(ke)==="Float64Array"}n.isFloat64Array=ie;function pe(ke){return S(ke)==="BigInt64Array"}n.isBigInt64Array=pe;function ue(ke){return S(ke)==="BigUint64Array"}n.isBigUint64Array=ue;function W(ke){return I(ke)==="[object Map]"}W.working=typeof Map<"u"&&W(new Map);function Y(ke){return typeof Map>"u"?!1:W.working?W(ke):ke instanceof Map}n.isMap=Y;function q(ke){return I(ke)==="[object Set]"}q.working=typeof Set<"u"&&q(new Set);function G(ke){return typeof Set>"u"?!1:q.working?q(ke):ke instanceof Set}n.isSet=G;function ne(ke){return I(ke)==="[object WeakMap]"}ne.working=typeof WeakMap<"u"&&ne(new WeakMap);function ee(ke){return typeof WeakMap>"u"?!1:ne.working?ne(ke):ke instanceof WeakMap}n.isWeakMap=ee;function oe(ke){return I(ke)==="[object WeakSet]"}oe.working=typeof WeakSet<"u"&&oe(new WeakSet);function ae(ke){return oe(ke)}n.isWeakSet=ae;function se(ke){return I(ke)==="[object ArrayBuffer]"}se.working=typeof ArrayBuffer<"u"&&se(new ArrayBuffer);function te(ke){return typeof ArrayBuffer>"u"?!1:se.working?se(ke):ke instanceof ArrayBuffer}n.isArrayBuffer=te;function X(ke){return I(ke)==="[object DataView]"}X.working=typeof ArrayBuffer<"u"&&typeof DataView<"u"&&X(new DataView(new ArrayBuffer(1),0,1));function ce(ke){return typeof DataView>"u"?!1:X.working?X(ke):ke instanceof DataView}n.isDataView=ce;var le=typeof SharedArrayBuffer<"u"?SharedArrayBuffer:void 0;function ye(ke){return I(ke)==="[object SharedArrayBuffer]"}function de(ke){return typeof le>"u"?!1:(typeof ye.working>"u"&&(ye.working=ye(new le)),ye.working?ye(ke):ke instanceof le)}n.isSharedArrayBuffer=de;function he(ke){return I(ke)==="[object AsyncFunction]"}n.isAsyncFunction=he;function me(ke){return I(ke)==="[object Map Iterator]"}n.isMapIterator=me;function Ee(ke){return I(ke)==="[object Set Iterator]"}n.isSetIterator=Ee;function Ce(ke){return I(ke)==="[object Generator]"}n.isGeneratorObject=Ce;function be(ke){return I(ke)==="[object WebAssembly.Module]"}n.isWebAssemblyCompiledModule=be;function ge(ke){return M(ke,B)}n.isNumberObject=ge;function we(ke){return M(ke,A)}n.isStringObject=we;function fe(ke){return M(ke,D)}n.isBooleanObject=fe;function xe(ke){return T&&M(ke,N)}n.isBigIntObject=xe;function Ie(ke){return C&&M(ke,O)}n.isSymbolObject=Ie;function Se(ke){return ge(ke)||we(ke)||fe(ke)||xe(ke)||Ie(ke)}n.isBoxedPrimitive=Se;function $e(ke){return typeof Uint8Array<"u"&&(te(ke)||de(ke))}n.isAnyArrayBuffer=$e,["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(ke){Object.defineProperty(n,ke,{enumerable:!1,value:function(){throw new Error(ke+" is not supported in userland")}})})}(types$2)),types$2}var isBufferBrowser,hasRequiredIsBufferBrowser;function requireIsBufferBrowser(){return hasRequiredIsBufferBrowser||(hasRequiredIsBufferBrowser=1,isBufferBrowser=function(r){return r&&typeof r=="object"&&typeof r.copy=="function"&&typeof r.fill=="function"&&typeof r.readUInt8=="function"}),isBufferBrowser}var hasRequiredUtil$1;function requireUtil$1(){return hasRequiredUtil$1||(hasRequiredUtil$1=1,function(n){var r={},_=Object.getOwnPropertyDescriptors||function(le){for(var ye=Object.keys(le),de={},he=0;he=he)return Ce;switch(Ce){case"%s":return String(de[ye++]);case"%d":return Number(de[ye++]);case"%j":try{return JSON.stringify(de[ye++])}catch{return"[Circular]"}default:return Ce}}),Ee=de[ye];ye"u")return function(){return n.deprecate(ce,le).apply(this,arguments)};var ye=!1;function de(){if(!ye){if(process$1.throwDeprecation)throw new Error(le);process$1.traceDeprecation?console.trace(le):console.error(le),ye=!0}return ce.apply(this,arguments)}return de};var E={},x=/^$/;if(r.NODE_DEBUG){var T=r.NODE_DEBUG;T=T.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),x=new RegExp("^"+T+"$","i")}n.debuglog=function(ce){if(ce=ce.toUpperCase(),!E[ce])if(x.test(ce)){var le=process$1.pid;E[ce]=function(){var ye=n.format.apply(n,arguments);console.error("%s %d: %s",ce,le,ye)}}else E[ce]=function(){};return E[ce]};function C(ce,le){var ye={seen:[],stylize:B};return arguments.length>=3&&(ye.depth=arguments[2]),arguments.length>=4&&(ye.colors=arguments[3]),j(le)?ye.showHidden=le:le&&n._extend(ye,le),re(ye.showHidden)&&(ye.showHidden=!1),re(ye.depth)&&(ye.depth=2),re(ye.colors)&&(ye.colors=!1),re(ye.customInspect)&&(ye.customInspect=!0),ye.colors&&(ye.stylize=I),D(ye,ce,ye.depth)}n.inspect=C,C.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},C.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function I(ce,le){var ye=C.styles[le];return ye?"\x1B["+C.colors[ye][0]+"m"+ce+"\x1B["+C.colors[ye][1]+"m":ce}function B(ce,le){return ce}function A(ce){var le={};return ce.forEach(function(ye,de){le[ye]=!0}),le}function D(ce,le,ye){if(ce.customInspect&&le&&Y(le.inspect)&&le.inspect!==n.inspect&&!(le.constructor&&le.constructor.prototype===le)){var de=le.inspect(ye,ce);return J(de)||(de=D(ce,de,ye)),de}var he=N(ce,le);if(he)return he;var me=Object.keys(le),Ee=A(me);if(ce.showHidden&&(me=Object.getOwnPropertyNames(le)),W(le)&&(me.indexOf("message")>=0||me.indexOf("description")>=0))return O(le);if(me.length===0){if(Y(le)){var Ce=le.name?": "+le.name:"";return ce.stylize("[Function"+Ce+"]","special")}if(ie(le))return ce.stylize(RegExp.prototype.toString.call(le),"regexp");if(ue(le))return ce.stylize(Date.prototype.toString.call(le),"date");if(W(le))return O(le)}var be="",ge=!1,we=["{","}"];if(U(le)&&(ge=!0,we=["[","]"]),Y(le)){var fe=le.name?": "+le.name:"";be=" [Function"+fe+"]"}if(ie(le)&&(be=" "+RegExp.prototype.toString.call(le)),ue(le)&&(be=" "+Date.prototype.toUTCString.call(le)),W(le)&&(be=" "+O(le)),me.length===0&&(!ge||le.length==0))return we[0]+be+we[1];if(ye<0)return ie(le)?ce.stylize(RegExp.prototype.toString.call(le),"regexp"):ce.stylize("[Object]","special");ce.seen.push(le);var xe;return ge?xe=M(ce,le,ye,Ee,me):xe=me.map(function(Ie){return L(ce,le,ye,Ee,Ie,ge)}),ce.seen.pop(),F(xe,be,we)}function N(ce,le){if(re(le))return ce.stylize("undefined","undefined");if(J(le)){var ye="'"+JSON.stringify(le).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return ce.stylize(ye,"string")}if(Q(le))return ce.stylize(""+le,"number");if(j(le))return ce.stylize(""+le,"boolean");if(z(le))return ce.stylize("null","null")}function O(ce){return"["+Error.prototype.toString.call(ce)+"]"}function M(ce,le,ye,de,he){for(var me=[],Ee=0,Ce=le.length;Ee-1&&(me?Ce=Ce.split(` `).map(function(ge){return" "+ge}).join(` `).slice(2):Ce=` @@ -218,7 +218,7 @@ EOD`}return{to_workbook:S,to_sheet:_,from_sheet:T}}(),ETH=function(){function n( * Copyright 2011-2013 John-David Dalton * Available under MIT license */platform.exports;(function(n,r){(function(){var _={function:!0,object:!0},S=_[typeof window]&&window||this,E=r,x=n&&!n.nodeType&&n,T=E&&x&&typeof commonjsGlobal=="object"&&commonjsGlobal;T&&(T.global===T||T.window===T||T.self===T)&&(S=T);var C=Math.pow(2,53)-1,I=/\bOpera/,B=Object.prototype,A=B.hasOwnProperty,D=B.toString;function N(re){return re=String(re),re.charAt(0).toUpperCase()+re.slice(1)}function O(re,ie,pe){var ue={"10.0":"10","6.4":"10 Technical Preview","6.3":"8.1","6.2":"8","6.1":"Server 2008 R2 / 7","6.0":"Server 2008 / Vista","5.2":"Server 2003 / XP 64-bit","5.1":"XP","5.01":"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"};return ie&&pe&&/^Win/i.test(re)&&!/^Windows Phone /i.test(re)&&(ue=ue[/[\d.]+$/.exec(re)])&&(re="Windows "+ue),re=String(re),ie&&pe&&(re=re.replace(RegExp(ie,"i"),pe)),re=L(re.replace(/ ce$/i," CE").replace(/\bhpw/i,"web").replace(/\bMacintosh\b/,"Mac OS").replace(/_PowerPC\b/i," OS").replace(/\b(OS X) [^ \d]+/i,"$1").replace(/\bMac (OS X)\b/,"$1").replace(/\/(\d)/," $1").replace(/_/g,".").replace(/(?: BePC|[ .]*fc[ \d.]+)$/i,"").replace(/\bx86\.64\b/gi,"x86_64").replace(/\b(Windows Phone) OS\b/,"$1").replace(/\b(Chrome OS \w+) [\d.]+\b/,"$1").split(" on ")[0]),re}function M(re,ie){var pe=-1,ue=re?re.length:0;if(typeof ue=="number"&&ue>-1&&ue<=C)for(;++pe3&&"WebKit"||/\bOpera\b/.test(fe)&&(/\bOPR\b/.test(re)?"Blink":"Presto")||/\b(?:Midori|Nook|Safari)\b/i.test(re)&&!/^(?:Trident|EdgeHTML)$/.test(we)&&"WebKit"||!we&&/\bMSIE\b/i.test(re)&&(Se=="Mac OS"?"Tasman":"Trident")||we=="WebKit"&&/\bPlayStation\b(?! Vita\b)/i.test(fe)&&"NetFront")&&(we=[de]),fe=="IE"&&(de=(/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(re)||0)[1])?(fe+=" Mobile",Se="Windows Phone "+(/\+$/.test(de)?de:de+".x"),me.unshift("desktop mode")):/\bWPDesktop\b/i.test(re)?(fe="IE Mobile",Se="Windows Phone 8.x",me.unshift("desktop mode"),be||(be=(/\brv:([\d.]+)/.exec(re)||0)[1])):fe!="IE"&&we=="Trident"&&(de=/\brv:([\d.]+)/.exec(re))&&(fe&&me.push("identifying as "+fe+(be?" "+be:"")),fe="IE",be=de[1]),Ce){if(j(ie,"global"))if(ae&&(de=ae.lang.System,he=de.getProperty("os.arch"),Se=Se||de.getProperty("os.name")+" "+de.getProperty("os.version")),se){try{be=ie.require("ringo/engine").version.join("."),fe="RingoJS"}catch{(de=ie.system)&&de.global.system==ie.system&&(fe="Narwhal",Se||(Se=de[0].os||null))}fe||(fe="Rhino")}else typeof ie.process=="object"&&!ie.process.browser&&(de=ie.process)&&(typeof de.versions=="object"&&(typeof de.versions.electron=="string"?(me.push("Node "+de.versions.node),fe="Electron",be=de.versions.electron):typeof de.versions.nw=="string"&&(me.push("Chromium "+be,"Node "+de.versions.node),fe="NW.js",be=de.versions.nw)),fe||(fe="Node.js",he=de.arch,Se=de.platform,be=/[\d.]+/.exec(de.version),be=be?be[0]:null));else U(de=ie.runtime)==G?(fe="Adobe AIR",Se=de.flash.system.Capabilities.os):U(de=ie.phantom)==oe?(fe="PhantomJS",be=(de=de.version||null)&&de.major+"."+de.minor+"."+de.patch):typeof ce.documentMode=="number"&&(de=/\bTrident\/(\d+)/i.exec(re))?(be=[be,ce.documentMode],(de=+de[1]+4)!=be[1]&&(me.push("IE "+be[1]+" mode"),we&&(we[1]=""),be[1]=de),be=fe=="IE"?String(be[1].toFixed(1)):be[0]):typeof ce.documentMode=="number"&&/^(?:Chrome|Firefox)\b/.test(fe)&&(me.push("masking as "+fe+" "+be),fe="IE",be="11.0",we=["Trident"],Se="Windows");Se=Se&&L(Se)}if(be&&(de=/(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(be)||/(?:alpha|beta)(?: ?\d)?/i.exec(re+";"+(Ce&&ue.appMinorVersion))||/\bMinefield\b/i.test(re)&&"a")&&(Ee=/b/i.test(de)?"beta":"alpha",be=be.replace(RegExp(de+"\\+?$"),"")+(Ee=="beta"?X:te)+(/\d+\+?/.exec(de)||"")),fe=="Fennec"||fe=="Firefox"&&/\b(?:Android|Firefox OS|KaiOS)\b/.test(Se))fe="Firefox Mobile";else if(fe=="Maxthon"&&be)be=be.replace(/\.[\d.]+/,".x");else if(/\bXbox\b/i.test(xe))xe=="Xbox 360"&&(Se=null),xe=="Xbox 360"&&/\bIEMobile\b/.test(re)&&me.unshift("mobile mode");else if((/^(?:Chrome|IE|Opera)$/.test(fe)||fe&&!xe&&!/Browser|Mobi/.test(fe))&&(Se=="Windows CE"||/Mobi/i.test(re)))fe+=" Mobile";else if(fe=="IE"&&Ce)try{ie.external===null&&me.unshift("platform preview")}catch{me.unshift("embedded")}else(/\bBlackBerry\b/.test(xe)||/\bBB10\b/.test(re))&&(de=(RegExp(xe.replace(/ +/g," *")+"/([.\\d]+)","i").exec(re)||0)[1]||be)?(de=[de,/BB10/.test(re)],Se=(de[1]?(xe=null,Ie="BlackBerry"):"Device Software")+" "+de[0],be=null):this!=F&&xe!="Wii"&&(Ce&&le||/Opera/.test(fe)&&/\b(?:MSIE|Firefox)\b/i.test(re)||fe=="Firefox"&&/\bOS X (?:\d+\.){2,}/.test(Se)||fe=="IE"&&(Se&&!/^Win/.test(Se)&&be>5.5||/\bWindows XP\b/.test(Se)&&be>8||be==8&&!/\bTrident\b/.test(re)))&&!I.test(de=J.call(F,re.replace(I,"")+";"))&&de.name&&(de="ing as "+de.name+((de=de.version)?" "+de:""),I.test(fe)?(/\bIE\b/.test(de)&&Se=="Mac OS"&&(Se=null),de="identify"+de):(de="mask"+de,ye?fe=L(ye.replace(/([a-z])([A-Z])/g,"$1 $2")):fe="Opera",/\bIE\b/.test(de)&&(Se=null),Ce||(be=null)),we=["Presto"],me.push(de));(de=(/\bAppleWebKit\/([\d.]+\+?)/i.exec(re)||0)[1])&&(de=[parseFloat(de.replace(/\.(\d)$/,".0$1")),de],fe=="Safari"&&de[1].slice(-1)=="+"?(fe="WebKit Nightly",Ee="alpha",be=de[1].slice(0,-1)):(be==de[1]||be==(de[2]=(/\bSafari\/([\d.]+\+?)/i.exec(re)||0)[1]))&&(be=null),de[1]=(/\b(?:Headless)?Chrome\/([\d.]+)/i.exec(re)||0)[1],de[0]==537.36&&de[2]==537.36&&parseFloat(de[1])>=28&&we=="WebKit"&&(we=["Blink"]),!Ce||!Y&&!de[1]?(we&&(we[1]="like Safari"),de=(de=de[0],de<400?1:de<500?2:de<526?3:de<533?4:de<534?"4+":de<535?5:de<537?6:de<538?7:de<601?8:de<602?9:de<604?10:de<606?11:de<608?12:"12")):(we&&(we[1]="like Chrome"),de=de[1]||(de=de[0],de<530?1:de<532?2:de<532.05?3:de<533?4:de<534.03?5:de<534.07?6:de<534.1?7:de<534.13?8:de<534.16?9:de<534.24?10:de<534.3?11:de<535.01?12:de<535.02?"13+":de<535.07?15:de<535.11?16:de<535.19?17:de<536.05?18:de<536.1?19:de<537.01?20:de<537.11?"21+":de<537.13?23:de<537.18?24:de<537.24?25:de<537.36?26:we!="Blink"?"27":"28")),we&&(we[1]+=" "+(de+=typeof de=="number"?".x":/[.+]/.test(de)?"":"+")),fe=="Safari"&&(!be||parseInt(be)>45)?be=de:fe=="Chrome"&&/\bHeadlessChrome/i.test(re)&&me.unshift("headless")),fe=="Opera"&&(de=/\bzbov|zvav$/.exec(Se))?(fe+=" ",me.unshift("desktop mode"),de=="zvav"?(fe+="Mini",be=null):fe+="Mobile",Se=Se.replace(RegExp(" *"+de+"$"),"")):fe=="Safari"&&/\bChrome\b/.exec(we&&we[1])?(me.unshift("desktop mode"),fe="Chrome Mobile",be=null,/\bOS X\b/.test(Se)?(Ie="Apple",Se="iOS 4.3+"):Se=null):/\bSRWare Iron\b/.test(fe)&&!be&&(be=Ve("Chrome")),be&&be.indexOf(de=/[\d.]+$/.exec(Se))==0&&re.indexOf("/"+de+"-")>-1&&(Se=Q(Se.replace(de,""))),Se&&Se.indexOf(fe)!=-1&&!RegExp(fe+" OS").test(Se)&&(Se=Se.replace(RegExp(" *"+z(fe)+" *"),"")),we&&!/\b(?:Avant|Nook)\b/.test(fe)&&(/Browser|Lunascape|Maxthon/.test(fe)||fe!="Safari"&&/^iOS/.test(Se)&&/\bSafari\b/.test(we[1])||/^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(fe)&&we[1])&&(de=we[we.length-1])&&me.push(de),me.length&&(me=["("+me.join("; ")+")"]),Ie&&xe&&xe.indexOf(Ie)<0&&me.push("on "+Ie),xe&&me.push((/^on /.test(me[me.length-1])?"":"on ")+xe),Se&&(de=/ ([\d.+]+)$/.exec(Se),ge=de&&Se.charAt(Se.length-de[0].length-1)=="/",Se={architecture:32,family:de&&!ge?Se.replace(de[0],""):Se,version:de?de[1]:null,toString:function(){var Ge=this.version;return this.family+(Ge&&!ge?" "+Ge:"")+(this.architecture==64?" 64-bit":"")}}),(de=/\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(he))&&!/\bi686\b/i.test(he)?(Se&&(Se.architecture=64,Se.family=Se.family.replace(RegExp(" *"+de),"")),fe&&(/\bWOW64\b/i.test(re)||Ce&&/\w(?:86|32)$/.test(ue.cpuClass||ue.platform)&&!/\bWin64; x64\b/i.test(re))&&me.unshift("32-bit")):Se&&/^OS X/.test(Se.family)&&fe=="Chrome"&&parseFloat(be)>=39&&(Se.architecture=64),re||(re=null);var Ke={};return Ke.description=re,Ke.layout=we&&we[0],Ke.manufacturer=Ie,Ke.name=fe,Ke.prerelease=Ee,Ke.product=xe,Ke.ua=re,Ke.version=fe&&be,Ke.os=Se||{architecture:null,family:null,version:null,toString:function(){return"null"}},Ke.parse=J,Ke.toString=Ue,Ke.version&&me.unshift(be),Ke.name&&me.unshift(fe),Se&&fe&&!(Se==String(Se).split(" ")[0]&&(Se==fe.split(" ")[0]||xe))&&me.push(xe?"("+Se+")":"on "+Se),me.length&&(Ke.description=me.join(" ")),Ke}var Z=J();E&&x?F(Z,function(re,ie){E[ie]=re}):S.platform=Z}).call(commonjsGlobal)})(platform,platform.exports);var platformExports=platform.exports;const plateforme=getDefaultExportFromCjs(platformExports);var md5$1={exports:{}},core={exports:{}},hasRequiredCore;function requireCore(){return hasRequiredCore||(hasRequiredCore=1,function(n,r){(function(_,S){n.exports=S()})(commonjsGlobal,function(){var _=_||function(S,E){var x;if(typeof window<"u"&&window.crypto&&(x=window.crypto),typeof self<"u"&&self.crypto&&(x=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(x=globalThis.crypto),!x&&typeof window<"u"&&window.msCrypto&&(x=window.msCrypto),!x&&typeof commonjsGlobal<"u"&&commonjsGlobal.crypto&&(x=commonjsGlobal.crypto),!x&&typeof commonjsRequire=="function")try{x=requireCryptoBrowserify()}catch{}var T=function(){if(x){if(typeof x.getRandomValues=="function")try{return x.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof x.randomBytes=="function")try{return x.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},C=Object.create||function(){function j(){}return function(z){var H;return j.prototype=z,H=new j,j.prototype=null,H}}(),I={},B=I.lib={},A=B.Base=function(){return{extend:function(j){var z=C(this);return j&&z.mixIn(j),(!z.hasOwnProperty("init")||this.init===z.init)&&(z.init=function(){z.$super.init.apply(this,arguments)}),z.init.prototype=z,z.$super=this,z},create:function(){var j=this.extend();return j.init.apply(j,arguments),j},init:function(){},mixIn:function(j){for(var z in j)j.hasOwnProperty(z)&&(this[z]=j[z]);j.hasOwnProperty("toString")&&(this.toString=j.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),D=B.WordArray=A.extend({init:function(j,z){j=this.words=j||[],z!=E?this.sigBytes=z:this.sigBytes=j.length*4},toString:function(j){return(j||O).stringify(this)},concat:function(j){var z=this.words,H=j.words,Q=this.sigBytes,J=j.sigBytes;if(this.clamp(),Q%4)for(var Z=0;Z>>2]>>>24-Z%4*8&255;z[Q+Z>>>2]|=re<<24-(Q+Z)%4*8}else for(var ie=0;ie>>2]=H[ie>>>2];return this.sigBytes+=J,this},clamp:function(){var j=this.words,z=this.sigBytes;j[z>>>2]&=4294967295<<32-z%4*8,j.length=S.ceil(z/4)},clone:function(){var j=A.clone.call(this);return j.words=this.words.slice(0),j},random:function(j){for(var z=[],H=0;H>>2]>>>24-J%4*8&255;Q.push((Z>>>4).toString(16)),Q.push((Z&15).toString(16))}return Q.join("")},parse:function(j){for(var z=j.length,H=[],Q=0;Q>>3]|=parseInt(j.substr(Q,2),16)<<24-Q%8*4;return new D.init(H,z/2)}},M=N.Latin1={stringify:function(j){for(var z=j.words,H=j.sigBytes,Q=[],J=0;J>>2]>>>24-J%4*8&255;Q.push(String.fromCharCode(Z))}return Q.join("")},parse:function(j){for(var z=j.length,H=[],Q=0;Q>>2]|=(j.charCodeAt(Q)&255)<<24-Q%4*8;return new D.init(H,z)}},L=N.Utf8={stringify:function(j){try{return decodeURIComponent(escape(M.stringify(j)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(j){return M.parse(unescape(encodeURIComponent(j)))}},F=B.BufferedBlockAlgorithm=A.extend({reset:function(){this._data=new D.init,this._nDataBytes=0},_append:function(j){typeof j=="string"&&(j=L.parse(j)),this._data.concat(j),this._nDataBytes+=j.sigBytes},_process:function(j){var z,H=this._data,Q=H.words,J=H.sigBytes,Z=this.blockSize,re=Z*4,ie=J/re;j?ie=S.ceil(ie):ie=S.max((ie|0)-this._minBufferSize,0);var pe=ie*Z,ue=S.min(pe*4,J);if(pe){for(var W=0;W>>24)&16711935|(z<<24|z>>>8)&4278255360}var H=this._hash.words,Q=L[F+0],J=L[F+1],Z=L[F+2],re=L[F+3],ie=L[F+4],pe=L[F+5],ue=L[F+6],W=L[F+7],Y=L[F+8],q=L[F+9],G=L[F+10],ne=L[F+11],ee=L[F+12],oe=L[F+13],ae=L[F+14],se=L[F+15],te=H[0],X=H[1],ce=H[2],le=H[3];te=D(te,X,ce,le,Q,7,B[0]),le=D(le,te,X,ce,J,12,B[1]),ce=D(ce,le,te,X,Z,17,B[2]),X=D(X,ce,le,te,re,22,B[3]),te=D(te,X,ce,le,ie,7,B[4]),le=D(le,te,X,ce,pe,12,B[5]),ce=D(ce,le,te,X,ue,17,B[6]),X=D(X,ce,le,te,W,22,B[7]),te=D(te,X,ce,le,Y,7,B[8]),le=D(le,te,X,ce,q,12,B[9]),ce=D(ce,le,te,X,G,17,B[10]),X=D(X,ce,le,te,ne,22,B[11]),te=D(te,X,ce,le,ee,7,B[12]),le=D(le,te,X,ce,oe,12,B[13]),ce=D(ce,le,te,X,ae,17,B[14]),X=D(X,ce,le,te,se,22,B[15]),te=N(te,X,ce,le,J,5,B[16]),le=N(le,te,X,ce,ue,9,B[17]),ce=N(ce,le,te,X,ne,14,B[18]),X=N(X,ce,le,te,Q,20,B[19]),te=N(te,X,ce,le,pe,5,B[20]),le=N(le,te,X,ce,G,9,B[21]),ce=N(ce,le,te,X,se,14,B[22]),X=N(X,ce,le,te,ie,20,B[23]),te=N(te,X,ce,le,q,5,B[24]),le=N(le,te,X,ce,ae,9,B[25]),ce=N(ce,le,te,X,re,14,B[26]),X=N(X,ce,le,te,Y,20,B[27]),te=N(te,X,ce,le,oe,5,B[28]),le=N(le,te,X,ce,Z,9,B[29]),ce=N(ce,le,te,X,W,14,B[30]),X=N(X,ce,le,te,ee,20,B[31]),te=O(te,X,ce,le,pe,4,B[32]),le=O(le,te,X,ce,Y,11,B[33]),ce=O(ce,le,te,X,ne,16,B[34]),X=O(X,ce,le,te,ae,23,B[35]),te=O(te,X,ce,le,J,4,B[36]),le=O(le,te,X,ce,ie,11,B[37]),ce=O(ce,le,te,X,W,16,B[38]),X=O(X,ce,le,te,G,23,B[39]),te=O(te,X,ce,le,oe,4,B[40]),le=O(le,te,X,ce,Q,11,B[41]),ce=O(ce,le,te,X,re,16,B[42]),X=O(X,ce,le,te,ue,23,B[43]),te=O(te,X,ce,le,q,4,B[44]),le=O(le,te,X,ce,ee,11,B[45]),ce=O(ce,le,te,X,se,16,B[46]),X=O(X,ce,le,te,Z,23,B[47]),te=M(te,X,ce,le,Q,6,B[48]),le=M(le,te,X,ce,W,10,B[49]),ce=M(ce,le,te,X,ae,15,B[50]),X=M(X,ce,le,te,pe,21,B[51]),te=M(te,X,ce,le,ee,6,B[52]),le=M(le,te,X,ce,re,10,B[53]),ce=M(ce,le,te,X,G,15,B[54]),X=M(X,ce,le,te,J,21,B[55]),te=M(te,X,ce,le,Y,6,B[56]),le=M(le,te,X,ce,se,10,B[57]),ce=M(ce,le,te,X,ue,15,B[58]),X=M(X,ce,le,te,oe,21,B[59]),te=M(te,X,ce,le,ie,6,B[60]),le=M(le,te,X,ce,ne,10,B[61]),ce=M(ce,le,te,X,Z,15,B[62]),X=M(X,ce,le,te,q,21,B[63]),H[0]=H[0]+te|0,H[1]=H[1]+X|0,H[2]=H[2]+ce|0,H[3]=H[3]+le|0},_doFinalize:function(){var L=this._data,F=L.words,U=this._nDataBytes*8,j=L.sigBytes*8;F[j>>>5]|=128<<24-j%32;var z=S.floor(U/4294967296),H=U;F[(j+64>>>9<<4)+15]=(z<<8|z>>>24)&16711935|(z<<24|z>>>8)&4278255360,F[(j+64>>>9<<4)+14]=(H<<8|H>>>24)&16711935|(H<<24|H>>>8)&4278255360,L.sigBytes=(F.length+1)*4,this._process();for(var Q=this._hash,J=Q.words,Z=0;Z<4;Z++){var re=J[Z];J[Z]=(re<<8|re>>>24)&16711935|(re<<24|re>>>8)&4278255360}return Q},clone:function(){var L=C.clone.call(this);return L._hash=this._hash.clone(),L}});function D(L,F,U,j,z,H,Q){var J=L+(F&U|~F&j)+z+Q;return(J<>>32-H)+F}function N(L,F,U,j,z,H,Q){var J=L+(F&j|U&~j)+z+Q;return(J<>>32-H)+F}function O(L,F,U,j,z,H,Q){var J=L+(F^U^j)+z+Q;return(J<>>32-H)+F}function M(L,F,U,j,z,H,Q){var J=L+(U^(F|~j))+z+Q;return(J<>>32-H)+F}E.MD5=C._createHelper(A),E.HmacMD5=C._createHmacHelper(A)}(Math),_.MD5})})(md5$1);var md5Exports=md5$1.exports;const md5=getDefaultExportFromCjs(md5Exports);var encBase64={exports:{}};(function(n,r){(function(_,S){n.exports=S(requireCore())})(commonjsGlobal,function(_){return function(){var S=_,E=S.lib,x=E.WordArray,T=S.enc;T.Base64={stringify:function(I){var B=I.words,A=I.sigBytes,D=this._map;I.clamp();for(var N=[],O=0;O>>2]>>>24-O%4*8&255,L=B[O+1>>>2]>>>24-(O+1)%4*8&255,F=B[O+2>>>2]>>>24-(O+2)%4*8&255,U=M<<16|L<<8|F,j=0;j<4&&O+j*.75>>6*(3-j)&63));var z=D.charAt(64);if(z)for(;N.length%4;)N.push(z);return N.join("")},parse:function(I){var B=I.length,A=this._map,D=this._reverseMap;if(!D){D=this._reverseMap=[];for(var N=0;N>>6-O%4*2,F=M|L;D[N>>>2]|=F<<24-N%4*8,N++}return x.create(D,N)}}(),_.enc.Base64})})(encBase64);var encBase64Exports=encBase64.exports;const Base64=getDefaultExportFromCjs(encBase64Exports);class CacheSuivi{verrou;_cacheSuivi;_cacheRecherche;constructor(){this.verrou=new s$2,this._cacheSuivi={},this._cacheRecherche={}}async suivre({adresseFonction:r,idClient:_,fOriginale:S,args:E,ceciOriginal:x}){const T=Object.entries(E).find(N=>typeof N[1]=="function")?.[0];if(!T)throw new Error("Aucun argument n'est une fonction.");const C=E[T],I=Object.fromEntries(Object.entries(E).filter(N=>typeof N[1]!="function"));if(Object.keys(E).length!==Object.keys(I).length+1)throw new Error("Plus d'un argument pour "+r+" est une fonction : "+JSON.stringify(E));const B=this.générerCodeCache({adresseFonction:r,idClient:_,argsClefs:I}),A=v4$1();if(await this.verrou.acquire(B),this._cacheSuivi[B])this.verrou.release(B),this._cacheSuivi[B].requêtes[A]=C,Object.keys(this._cacheSuivi[B]).includes("val")&&await C(this._cacheSuivi[B].val);else{this._cacheSuivi[B]={requêtes:{[A]:C}};const N=async L=>{if(!this._cacheSuivi[B]||Object.keys(this._cacheSuivi[B]).includes("val")&&deepEqual$1(this._cacheSuivi[B].val,L,{strict:!0}))return;this._cacheSuivi[B].val=L;const F=Object.values(this._cacheSuivi[B].requêtes);await Promise.all(F.map(U=>U(L)))},O={...I,[T]:N},M=await S.apply(x,[O]);this._cacheSuivi[B].fOublier=M,this.verrou.release(B)}return async()=>{await this.oublierSuivi({codeCache:B,idRequête:A})}}async suivreRecherche({adresseFonction:r,nomArgTaille:_,idClient:S,fOriginale:E,args:x,ceciOriginal:T,par:C}){const I=Object.entries(x).find(j=>typeof j[1]=="function")?.[0];if(!I)throw new Error("Aucun argument n'est une fonction.");const B=x[I],A=Object.fromEntries(Object.entries(x).filter(j=>typeof j[1]!="function"));if(Object.keys(x).length!==Object.keys(A).length+1)throw new Error("Plus d'un argument pour "+r+" est une fonction : "+JSON.stringify(x));const D=Object.fromEntries(Object.entries(x).filter(j=>j[0]!==_));let N=x[_];if(N===void 0&&(N=1/0),typeof N!="number")throw new Error(`Argument ${_} n'est pas un nombre dans la fonction ${r}.`);const O=this.générerCodeCache({adresseFonction:r,idClient:S,argsClefs:D}),M=v4$1();await this.verrou.acquire(O);const L=j=>{if(!this._cacheRecherche[O])return;this._cacheRecherche[O].val=j;const z=Object.values(this._cacheRecherche[O].requêtes);C==="profondeur"?z.forEach(H=>H.f(j.filter(Q=>Q.profondeur<=H.taille))):z.forEach(H=>H.f(j.slice(0,H.taille)))};if(this._cacheRecherche[O]){if(this._cacheRecherche[O].requêtes[M]={f:B,taille:N},Object.keys(this._cacheRecherche[O]).includes("val")){const{val:j}=this._cacheRecherche[O];j&&L(j)}}else{this._cacheRecherche[O]={requêtes:{[M]:{f:B,taille:N}},taillePrésente:N};const j={...D,[I]:L,[_]:N};if(C==="profondeur"){const{fOublier:z,fChangerProfondeur:H}=await E.apply(T,[j]);this._cacheRecherche[O].fs={fOublier:z,fChangerTaille:H}}else{const{fOublier:z,fChangerN:H}=await E.apply(T,[j]);this._cacheRecherche[O].fs={fOublier:z,fChangerTaille:H}}}const F=async()=>{await this.oublierRecherche({codeCache:O,idRequête:M})},U=j=>{const z=this._cacheRecherche[O].requêtes[M].taille;if(j===z)return;this._cacheRecherche[O].requêtes[M].taille=j;const{val:H}=this._cacheRecherche[O];H&&L(H);const Q=Math.max(...Object.values(this._cacheRecherche[O].requêtes).map(re=>re.taille)),{taillePrésente:J}=this._cacheRecherche[O],{fChangerTaille:Z}=this._cacheRecherche[O].fs;Q!==J&&(this._cacheRecherche[O].taillePrésente=Q,Z(Q))};return this.verrou.release(O),{fOublier:F,[C==="profondeur"?"fChangerProfondeur":"fChangerN"]:U}}async oublierSuivi({codeCache:r,idRequête:_}){if(await this.verrou.acquire(r),this._cacheSuivi[r]===void 0)return;const{requêtes:S,fOublier:E}=this._cacheSuivi[r];delete S[_],Object.keys(S).length||(E&&await E(),delete this._cacheSuivi[r]),this.verrou.release(r)}async oublierRecherche({codeCache:r,idRequête:_}){if(await this.verrou.acquire(r),this._cacheRecherche[r]===void 0)return;const{requêtes:S,fs:E}=this._cacheRecherche[r];delete S[_],Object.keys(S).length||(E&&await E.fOublier(),delete this._cacheRecherche[r]),this.verrou.release(r)}générerCodeCache({adresseFonction:r,idClient:_,argsClefs:S}){const E=r+"-"+_+"-"+JSON.stringify(S);return Base64.stringify(md5(E))}}const cacheSuivi=(n,r,_)=>envelopper({nom:r,descripteur:_}),cacheRechercheParNRésultats=(n,r,_)=>envelopper({nom:r,descripteur:_,recherche:"nRésultats"}),cacheRechercheParProfondeur=(n,r,_)=>envelopper({nom:r,descripteur:_,recherche:"profondeur"}),envelopper=({nom:n,descripteur:r,recherche:_,nomArgTaille:S})=>{const E=r.value;if(typeof E=="function")r.value=function(...x){if(x.length>1)throw new Error("Args trop longs");const T=this.client?this.client:this;try{return _?(S=S||(_==="profondeur"?"profondeur":"nRésultatsDésirés"),cache$5.suivreRecherche({adresseFonction:this.constructor.name+"."+n,idClient:T.idCompte,fOriginale:E,args:x[0],ceciOriginal:this,par:_,nomArgTaille:S})):cache$5.suivre({adresseFonction:this.constructor.name+"."+n,idClient:T.idCompte,fOriginale:E,args:x[0],ceciOriginal:this})}catch(C){throw console.error(`Erreur: ${C}`),C}};else throw new Error("L'objet décoré n'est pas une fonction");return r},cache$5=new CacheSuivi,conditions={ATTR:"attribution",ÉGAL:"partageÉgal",INCL:"inclureDroitDauteur",CHNG:"indiquerChangements",SRCE:"partagerCodeSource",USGR:"usagereseau"},droits={PRTG:"partager",ADPT:"adapter",CMRC:"usageComercial",PRV:"usagePrivé",BREV:"usageBrevets"},limitations={RSP:"aucuneResponsabilité",GRNT:"aucuneGarantie",MRCM:"marqueCommerce",BREV:"brevetExclu",SOUS:"sousLicence"},catégories={BD:"basesDeDonnées",ART:"artistique",CODE:"codeInformatique",AUTRE:"autre"},infoLicences={"ODbl-1_0":{droits:[droits.CMRC,droits.PRTG,droits.PRV,droits.ADPT],conditions:[conditions.ATTR,conditions.ÉGAL,conditions.INCL],limitations:[limitations.RSP,limitations.BREV,limitations.MRCM,limitations.GRNT],catégorie:catégories.BD},"ODC-BY-1_0":{droits:[droits.CMRC,droits.PRTG,droits.PRV,droits.ADPT],conditions:[conditions.ATTR,conditions.INCL],limitations:[limitations.RSP,limitations.GRNT,limitations.MRCM,limitations.BREV],catégorie:catégories.BD},PDDL:{droits:[droits.CMRC,droits.PRTG,droits.ADPT,droits.PRV],conditions:[],limitations:[limitations.RSP,limitations.GRNT,limitations.MRCM,limitations.BREV],catégorie:catégories.BD},"rvca-open":{droits:[droits.PRV,droits.CMRC,droits.ADPT,droits.PRTG],conditions:[conditions.INCL,conditions.ATTR],limitations:[limitations.SOUS,limitations.RSP],catégorie:catégories.BD,spécialisée:!0},"CC-BY-SA-4_0":{droits:[droits.PRTG,droits.ADPT,droits.CMRC,droits.PRV],conditions:[conditions.INCL,conditions.CHNG,conditions.ÉGAL],limitations:[limitations.RSP,limitations.MRCM,limitations.BREV,limitations.GRNT],catégorie:catégories.ART},"CC-BY-4_0":{droits:[droits.CMRC,droits.PRTG,droits.ADPT,droits.PRV],conditions:[conditions.ATTR,conditions.CHNG],limitations:[limitations.RSP,limitations.MRCM,limitations.BREV,limitations.GRNT],catégorie:catégories.ART},"CC-0-1_0":{droits:[droits.PRTG,droits.ADPT,droits.CMRC,droits.PRV],conditions:[],limitations:[limitations.RSP,limitations.MRCM,limitations.BREV,limitations.GRNT],catégorie:catégories.ART},"0bsd":{droits:[droits.CMRC,droits.PRTG,droits.ADPT,droits.PRV],conditions:[],limitations:[],catégorie:catégories.CODE},"afl-3_0":{droits:[droits.CMRC,droits.PRTG,droits.ADPT,droits.PRV,droits.BREV],conditions:[conditions.INCL,conditions.CHNG],limitations:[limitations.MRCM,limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"agpl-3_0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.INCL,conditions.CHNG,conditions.SRCE,conditions.USGR,conditions.ÉGAL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"apache-2_0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.INCL,conditions.CHNG],limitations:[limitations.MRCM,limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"artistic-2_0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.INCL,conditions.CHNG],limitations:[limitations.RSP,limitations.MRCM,limitations.GRNT],catégorie:catégories.CODE},"bsd-2-clause":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"bsd-3-clause-clear":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.RSP,limitations.BREV,limitations.GRNT],catégorie:catégories.CODE},"bsd-3-clause":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"bsd-4-clause":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"bsl-1_0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"cecill-2_1":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV,droits.BREV],conditions:[conditions.INCL,conditions.SRCE,conditions.ÉGAL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"ecl-2_0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.INCL,conditions.CHNG],limitations:[limitations.BREV,limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"epl-1_0":{droits:[droits.CMRC,droits.PRTG,droits.ADPT,droits.BREV,droits.PRV],conditions:[conditions.SRCE,conditions.INCL,conditions.ÉGAL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"epl-2_0":{droits:[droits.CMRC,droits.PRTG,droits.ADPT,droits.BREV,droits.PRV],conditions:[conditions.SRCE,conditions.INCL,conditions.ÉGAL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"eupl-1_0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.INCL,conditions.SRCE,conditions.CHNG,conditions.USGR,conditions.ÉGAL],limitations:[limitations.RSP,limitations.MRCM,limitations.GRNT],catégorie:catégories.CODE},"eupl-1_2":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.INCL,conditions.SRCE,conditions.CHNG,conditions.USGR,conditions.ÉGAL],limitations:[limitations.RSP,limitations.MRCM,limitations.GRNT],catégorie:catégories.CODE},"gpl-2_0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL,conditions.CHNG,conditions.SRCE,conditions.ÉGAL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"gpl-3_0":{droits:[droits.CMRC,droits.ADPT,droits.PRV,droits.BREV,droits.PRV],conditions:[conditions.INCL,conditions.CHNG,conditions.SRCE,conditions.ÉGAL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},isc:{droits:[droits.CMRC,droits.PRTG,droits.ADPT,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"lgpl-2_1":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL,conditions.SRCE,conditions.CHNG,conditions.ÉGAL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"lgpl-3_0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.INCL,conditions.SRCE,conditions.CHNG,conditions.ÉGAL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"lppl-1_3c":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL,conditions.CHNG,conditions.SRCE],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"mit-0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},mit:{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"mpl-2_0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.SRCE,conditions.INCL,conditions.ÉGAL],limitations:[limitations.RSP,limitations.MRCM,limitations.GRNT],catégorie:catégories.CODE},"ms-pl":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.GRNT,limitations.MRCM],catégorie:catégories.CODE},"ms-rl":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.SRCE,conditions.INCL,conditions.ÉGAL],limitations:[limitations.GRNT,limitations.MRCM],catégorie:catégories.CODE},"mulanpsl-2_0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.RSP,limitations.MRCM,limitations.GRNT],catégorie:catégories.CODE},ncsa:{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"osl-3_0":{droits:[droits.CMRC,droits.PRTG,droits.ADPT,droits.BREV,droits.PRV],conditions:[conditions.INCL,conditions.SRCE,conditions.CHNG,conditions.USGR,conditions.ÉGAL],limitations:[limitations.MRCM,limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},postgresql:{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},unlicence:{droits:[droits.PRV,droits.CMRC,droits.ADPT,droits.PRTG],conditions:[],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"upl-1_0":{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.BREV,droits.PRV],conditions:[conditions.INCL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},vim:{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL,conditions.CHNG,conditions.SRCE,conditions.ÉGAL],limitations:[],catégorie:catégories.CODE},wtfpl:{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[],limitations:[],catégorie:catégories.CODE},zlib:{droits:[droits.CMRC,droits.ADPT,droits.PRTG,droits.PRV],conditions:[conditions.INCL,conditions.CHNG],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.CODE},"ofl-1_1":{droits:[droits.PRV,droits.CMRC,droits.ADPT,droits.PRTG],conditions:[conditions.INCL,conditions.ÉGAL],limitations:[limitations.RSP,limitations.GRNT],catégorie:catégories.AUTRE}};class Licences{client;événements;prêt;perroquet;constructor({client:r}){this.client=r,this.prêt=!1,this.événements=new EventEmitter$4,this.initialiser()}async initialiser(){this.prêt=!0,this.événements.emit("prêt")}async attendrePrêt(){if(!this.prêt)return new Promise(r=>{const _=()=>{r(),this.événements.off("prêt",_)};this.événements.on("prêt",_)})}async suivreLicences({f:r}){if(await r(infoLicences),await this.attendrePrêt(),this.perroquet){const _=async S=>await r(Object.fromEntries(S.map(E=>[E.code,E])));return await this.perroquet.உறுப்படிகளை_கேள்ளு({செ:_,பரிந்துரைகள்:"எனது"})}return faisRien}async suggérerLicence({code:r,infoLicence:_}){await this.attendrePrêt(),this.perroquet&&await this.perroquet.பரிந்துரையு({பரிந்துரை:{code:r,..._}})}async effacerSuggestionLicence({idÉlément:r}){await this.attendrePrêt(),this.perroquet&&await this.perroquet.பரிந்துரையை_நீக்கு({அடையாளம்:r})}async suivreSuggestionsLicences({f:r}){return await this.attendrePrêt(),this.perroquet?await this.perroquet.பரிந்துரைகளை_கேள்ளு({செ:r}):{fOublier:faisRien,fChangerProfondeur:faisRien}}async approuverLicence({suggestion:r}){await this.attendrePrêt(),this.perroquet&&await this.perroquet.அங்கீகரி({பரிந்துரை:r})}}__decorate([cacheSuivi],Licences.prototype,"suivreLicences",null);const cidEtFichierValide=n=>{let r,_;try{[r,_]=n.split("/")}catch{return!1}return!_||!idcValide(r)?!1:{cid:r,fichier:_}};class Épingles{client;requêtes;fsOublier;événements;constructor({client:r}){this.client=r,this.requêtes=[],this.fsOublier={},this.événements=new eventsExports.EventEmitter}async épinglerBd({id:r,récursif:_=!1,fichiers:S=!0}){await this.directementÉpinglée({id:r})||await this._épingler({id:r,récursif:_,fichiers:S})}async désépinglerBd({id:r}){await Promise.all(this.requêtes.filter(S=>S.id===r).map(async S=>await S.fOublier()));const _=this.requêtes.filter(S=>S.parent===r);this.requêtes=this.requêtes.filter(S=>S.id!==r),this.requêtes=this.requêtes.filter(S=>S.parent!==r),await Promise.all(_.map(async S=>{this.requêtes.filter(E=>E.id===S.id&&E.parent!==r).length||await this.désépinglerBd({id:S.id})})),this.événements.emit("changement épingles")}async épinglée({id:r}){return this.requêtes.some(_=>_.id===r)}async épingléeParParent({id:r,parent:_}){return this.requêtes.some(S=>S.id===r&&S.parent===_)}async directementÉpinglée({id:r}){return await this.épingléeParParent({id:r})}async épingles(){return new Set(this.requêtes.map(r=>r.id))}async suivreÉpingles({f:r}){const _=async()=>{const S=await this.épingles();return await r(S)};return this.événements.on("changement épingles",_),async()=>{this.événements.off("changement épingles",_)}}async _épingler({id:r,récursif:_,fichiers:S,parent:E}){if(await this.épingléeParParent({id:r,parent:E}))return;const{bd:x,fOublier:T}=await this.client.ouvrirBd({id:r});if(this.requêtes.push({id:r,parent:E,fOublier:T}),this.événements.emit("changement épingles"),_){const C=async I=>{let B=[];typeof I=="object"?(B=Object.values(I).filter(D=>typeof D=="string"),B.push(...Object.keys(I).filter(D=>typeof D=="string"))):Array.isArray(I)?B=I:typeof I=="string"&&(B=[I]);const A=B.filter(D=>isValidAddress(D));if(S){const D=B.filter(O=>cidEtFichierValide(O)&&!A.includes(O)),{sfip:N}=await this.client.attendreSfipEtOrbite();D.forEach(async O=>{for await(const L of N.pins.add(CID$8.parse(O.split("/")[0])));const M=async()=>{try{await N.pins.rm(CID$8.parse(O))}catch{}};this.requêtes.push({id:O,parent:r,fOublier:M}),this.événements.emit("changement épingles")})}await Promise.all(A.map(async D=>await this._épingler({id:D,récursif:_,fichiers:S,parent:r})))};if(x.type==="keyvalue"){const I=await this.client.suivreBdDic({id:r,f:C});this.fsOublier[r]=I}else if(x.type==="ordered-keyvalue"){const I=await this.client.suivreBdDicOrdonnée({id:r,f:C});this.fsOublier[r]=I}else if(x.type==="set"){const I=await this.client.suivreBdListe({id:r,f:C});this.fsOublier[r]=I}}}async toutDésépingler(){const r=await this.épingles();await Promise.all([...r].map(async _=>{await this.désépinglerBd({id:_})}))}async fermer(){await Promise.all(Object.values(this.fsOublier).map(r=>r()))}}const schémaStructureBdNoms={type:"object",additionalProperties:{type:"string"},required:[]},schémaStructureBdMétadonnées={type:"object",additionalProperties:!0,required:[]};class ComposanteClient{client;clef;typeBd;constructor({client:r,clef:_,typeBd:S}){this.client=r,this.clef=_,this.typeBd=S}async obtIdBd(){const{idCompte:r}=await this.client.attendreInitialisée(),_=await this.client.obtIdBd({nom:this.clef,racine:r,type:this.typeBd});if(!_)throw new Error("Mal initialisé");return _}}class ComposanteClientDic extends ComposanteClient{schémaBdPrincipale;constructor({client:r,clef:_,schémaBdPrincipale:S}){super({client:r,clef:_,typeBd:"keyvalue"}),this.schémaBdPrincipale=S}async obtBd(){const r=await this.obtIdBd();return await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:this.schémaBdPrincipale})}async suivreBdPrincipale({idCompte:r,f:_}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:S})=>await this.suivreIdBd({f:S,idCompte:r}),f:ignorerNonDéfinis(_),fSuivre:async({id:S,fSuivreBd:E})=>await this.client.suivreBdDic({id:S,schéma:this.schémaBdPrincipale,f:E})})}async suivreSousBdDic({idCompte:r,clef:_,schéma:S,f:E}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:x})=>await this.suivreIdBd({f:x,idCompte:r}),f:ignorerNonDéfinis(E),fSuivre:async({id:x,fSuivreBd:T})=>await this.client.suivreBdDicDeClef({id:x,clef:_,schéma:S,f:T})})}async suivreSousBdListe({idCompte:r,clef:_,schéma:S,f:E}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:x})=>await this.suivreIdBd({f:x,idCompte:r}),f:ignorerNonDéfinis(E),fSuivre:async({id:x,fSuivreBd:T})=>await this.client.suivreBdListeDeClef({id:x,clef:_,f:T,schéma:S,renvoyerValeur:!0})})}async suivreIdBd({f:r,idCompte:_}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:S})=>_?(await S(_),faisRien):await this.client.suivreIdCompte({f:S}),f:ignorerNonDéfinis(r),fSuivre:async({id:S,fSuivreBd:E})=>await this.client.suivreBd({id:S,type:"keyvalue",f:async x=>{const T=await this.client.obtIdBd({nom:this.clef,racine:x,type:"keyvalue"});return await E(T)}})})}}__decorate([cacheSuivi],ComposanteClientDic.prototype,"suivreBdPrincipale",null);__decorate([cacheSuivi],ComposanteClientDic.prototype,"suivreSousBdDic",null);__decorate([cacheSuivi],ComposanteClientDic.prototype,"suivreSousBdListe",null);__decorate([cacheSuivi],ComposanteClientDic.prototype,"suivreIdBd",null);class ComposanteClientListe extends ComposanteClient{schémaBdPrincipale;constructor({client:r,clef:_,schémaBdPrincipale:S}){super({client:r,clef:_,typeBd:"set"}),this.schémaBdPrincipale=S}async obtBd(){const r=await this.obtIdBd();return await this.client.ouvrirBdTypée({id:r,type:"set",schéma:this.schémaBdPrincipale})}async suivreBdPrincipale({idCompte:r,f:_}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:S})=>await this.suivreIdBd({f:S,idCompte:r}),f:ignorerNonDéfinis(_),fSuivre:async({id:S,fSuivreBd:E})=>await this.client.suivreBdListe({id:S,f:E,schéma:this.schémaBdPrincipale,renvoyerValeur:!0})})}async suivreIdBd({f:r,idCompte:_}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:S})=>_?(await S(_),faisRien):await this.client.suivreIdCompte({f:S}),f:ignorerNonDéfinis(r),fSuivre:async({id:S,fSuivreBd:E})=>await this.client.suivreBd({id:S,type:"keyvalue",schéma:schémaStructureBdCompte,f:async()=>{const x=await this.client.obtIdBd({nom:this.clef,racine:S,type:"set"});return await E(x)}})})}}__decorate([cacheSuivi],ComposanteClientListe.prototype,"suivreBdPrincipale",null);__decorate([cacheSuivi],ComposanteClientListe.prototype,"suivreIdBd",null);const MAX_TAILLE_IMAGE$3=500*1e3,MAX_TAILLE_IMAGE_VIS$3=1500*1e3,schémaStructureBdProfil={type:"object",properties:{initialisé:{type:"boolean",nullable:!0},image:{type:"string",nullable:!0},contacts:{type:"string",nullable:!0},noms:{type:"string",nullable:!0}},required:[]},schémaContactProfil={type:"object",properties:{type:{type:"string"},contact:{type:"string"}},required:["contact","type"]};class Profil extends ComposanteClientDic{constructor({client:r}){super({client:r,clef:"profil",schémaBdPrincipale:schémaStructureBdProfil})}async épingler(){const r=await this.obtIdBd();await this.client.épingles.épinglerBd({id:r,récursif:!0,fichiers:!0})}async initialiser(){const r=await this.obtIdBd(),{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProfil});await _.set("initialisé",!0),await S()}async suivreInitialisé({f:r,idCompte:_}){return await this.suivreBdPrincipale({idCompte:_,f:async S=>await r(!!S.initialisé)})}async suivreCourriel({f:r,idCompte:_}){return await this.suivreContacts({idCompte:_,f:async S=>await r(S.find(E=>E.type=="courriel")?.contact||null)})}async sauvegarderCourriel({courriel:r}){await this.sauvegarderContact({type:"courriel",contact:r})}async effacerCourriel(){await this.effacerContact({type:"courriel"})}async suivreContacts({f:r,idCompte:_}){return await this.suivreSousBdListe({idCompte:_,clef:"contacts",schéma:schémaContactProfil,f:r})}async sauvegarderContact({type:r,contact:_}){const S=await this.obtIdBd(),E=await this.client.obtIdBd({nom:"contacts",racine:S,type:"set"});if(!E)throw new Error(`Permission de modification refusée pour BD ${S}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"set",schéma:schémaContactProfil});await x.add({type:r,contact:_}),await T()}async effacerContact({type:r,contact:_}){const S=await this.obtIdBd(),E=await this.client.obtIdBd({nom:"contacts",racine:S,type:"set"});if(!E)throw new Error(`Permission de modification refusée pour BD ${S}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"set",schéma:schémaContactProfil}),I=(await x.all()).filter(B=>B.value.type===r&&(_===void 0||B.value.contact===_));await Promise.all(I.map(async B=>await x.del(B.value))),await T()}async suivreNoms({f:r,idCompte:_}){return await this.suivreSousBdDic({idCompte:_,clef:"noms",schéma:schémaStructureBdNoms,f:r})}async sauvegarderNom({langue:r,nom:_}){return await this.sauvegarderNoms({noms:{[r]:_}})}async sauvegarderNoms({noms:r}){const _=await this.obtIdBd(),S=await this.client.obtIdBd({nom:"noms",racine:_,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${_}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const[T,C]of Object.entries(r))await E.set(T,C);await x()}async effacerNom({langue:r}){const _=await this.obtIdBd(),S=await this.client.obtIdBd({nom:"noms",racine:_,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${_}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(r),await x()}async sauvegarderImage({image:r}){if(r.contenu.byteLength>MAX_TAILLE_IMAGE$3)throw new Error("Taille maximale excédée");const _=await this.client.ajouterÀSFIP(r),{bd:S,fOublier:E}=await this.obtBd();await S.set("image",_),await E()}async effacerImage(){const{bd:r,fOublier:_}=await this.obtBd();await r.del("image"),await _()}async suivreImage({f:r,idCompte:_}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:S})=>await this.suivreIdBd({f:S,idCompte:_}),f:ignorerNonDéfinis(r),fSuivre:async({id:S,fSuivreBd:E})=>await this.client.suivreBd({id:S,type:"keyvalue",schéma:schémaStructureBdProfil,f:async x=>{const T=await x.get("image");if(T){const C=await this.client.obtFichierSFIP({id:T,max:MAX_TAILLE_IMAGE_VIS$3});return await E(C)}else return await E(null)}})})}}__decorate([cacheSuivi],Profil.prototype,"suivreCourriel",null);__decorate([cacheSuivi],Profil.prototype,"suivreContacts",null);__decorate([cacheSuivi],Profil.prototype,"suivreNoms",null);__decorate([cacheSuivi],Profil.prototype,"suivreImage",null);function isAsyncIterable$5(n){return n[Symbol.asyncIterator]!=null}function toBuffer(n){if(isAsyncIterable$5(n))return(async()=>{let S=new Uint8Array(0);for await(const E of n)S=concat$3([S,E],S.length+E.length);return S})();const r=[];let _=0;for(const S of n)r.push(S),_+=S.byteLength;return concat$3(r,_)}var FileSaver_min={exports:{}};(function(n,r){(function(_,S){S()})(commonjsGlobal,function(){function _(B,A){return typeof A>"u"?A={autoBom:!1}:typeof A!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),A={autoBom:!A}),A.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(B.type)?new Blob(["\uFEFF",B],{type:B.type}):B}function S(B,A,D){var N=new XMLHttpRequest;N.open("GET",B),N.responseType="blob",N.onload=function(){I(N.response,A,D)},N.onerror=function(){console.error("could not download file")},N.send()}function E(B){var A=new XMLHttpRequest;A.open("HEAD",B,!1);try{A.send()}catch{}return 200<=A.status&&299>=A.status}function x(B){try{B.dispatchEvent(new MouseEvent("click"))}catch{var A=document.createEvent("MouseEvents");A.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),B.dispatchEvent(A)}}var T=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof commonjsGlobal=="object"&&commonjsGlobal.global===commonjsGlobal?commonjsGlobal:void 0,C=T.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),I=T.saveAs||(typeof window!="object"||window!==T?function(){}:"download"in HTMLAnchorElement.prototype&&!C?function(B,A,D){var N=T.URL||T.webkitURL,O=document.createElement("a");A=A||B.name||"download",O.download=A,O.rel="noopener",typeof B=="string"?(O.href=B,O.origin===location.origin?x(O):E(O.href)?S(B,A,D):x(O,O.target="_blank")):(O.href=N.createObjectURL(B),setTimeout(function(){N.revokeObjectURL(O.href)},4e4),setTimeout(function(){x(O)},0))}:"msSaveOrOpenBlob"in navigator?function(B,A,D){if(A=A||B.name||"download",typeof B!="string")navigator.msSaveOrOpenBlob(_(B,D),A);else if(E(B))S(B,A,D);else{var N=document.createElement("a");N.href=B,N.target="_blank",setTimeout(function(){x(N)})}}:function(B,A,D,N){if(N=N||open("","_blank"),N&&(N.document.title=N.document.body.innerText="downloading..."),typeof B=="string")return S(B,A,D);var O=B.type==="application/octet-stream",M=/constructor/i.test(T.HTMLElement)||T.safari,L=/CriOS\/[\d]+/.test(navigator.userAgent);if((L||O&&M||C)&&typeof FileReader<"u"){var F=new FileReader;F.onloadend=function(){var z=F.result;z=L?z:z.replace(/^data:[^;]*;/,"data:attachment/file;"),N?N.location.href=z:location=z,N=null},F.readAsDataURL(B)}else{var U=T.URL||T.webkitURL,j=U.createObjectURL(B);N?N.location=j:location.href=j,N=null,setTimeout(function(){U.revokeObjectURL(j)},4e4)}});T.saveAs=I.saveAs=I,n.exports=I})})(FileSaver_min);var FileSaver_minExports=FileSaver_min.exports;const pkg=getDefaultExportFromCjs(FileSaver_minExports),{saveAs:saveAs$1}=pkg,schémaStructureBdBd={type:"object",properties:{type:{type:"string"},métadonnées:{type:"string",nullable:!0},licence:{type:"string"},licenceContenu:{type:"string",nullable:!0},image:{type:"string",nullable:!0},noms:{type:"string"},descriptions:{type:"string"},tableaux:{type:"string"},motsClefs:{type:"string"},nuées:{type:"string"},statut:{type:"object",properties:{statut:{type:"string"},idNouvelle:{type:"string",nullable:!0}},required:["statut"]},copiéDe:{type:"object",properties:{id:{type:"string"}},required:["id"]}},required:["type","licence","noms","descriptions","tableaux","motsClefs","nuées","statut","copiéDe"]},schémaInfoTableau={type:"object",properties:{clef:{type:"string"}},required:["clef"]},schémaBdTableauxDeBd={type:"object",additionalProperties:schémaInfoTableau,required:[]},schémaBdPrincipale$4={type:"string"},schémaStructureBdMotsClefs={type:"string"},schémaStructureBdNuées={type:"string"},MAX_TAILLE_IMAGE$2=500*1e3,MAX_TAILLE_IMAGE_VIS$2=1500*1e3;class BDs extends ComposanteClientListe{verrouBdUnique;constructor({client:r}){super({client:r,clef:"bds",schémaBdPrincipale:schémaBdPrincipale$4}),this.verrouBdUnique=new s$2}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async suivreBds({f:r,idCompte:_}){return await this.suivreBdPrincipale({idCompte:_,f:r})}async créerBd({licence:r,licenceContenu:_,ajouter:S=!0}){const E=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:{address:void 0,write:await this.client.obtIdCompte()}}),{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdBd});await x.set("type","bd"),await x.set("licence",r),_&&await x.set("licenceContenu",_);const I={address:x.access.address},B=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:I});await x.set("métadonnées",B);const A=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:I});await x.set("noms",A);const D=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:I});await x.set("descriptions",D);const N=await this.client.créerBdIndépendante({type:"ordered-keyvalue",optionsAccès:I});await x.set("tableaux",N);const O=await this.client.créerBdIndépendante({type:"set",optionsAccès:I});await x.set("motsClefs",O);const M=await this.client.créerBdIndépendante({type:"set",optionsAccès:I});if(await x.set("nuées",M),await x.set("statut",{statut:"active"}),S){const{bd:L,fOublier:F}=await this.client.ouvrirBdTypée({id:await this.obtIdBd(),type:"set",schéma:schémaBdPrincipale$4});await L.add(E),F()}return await T(),E}async ajouterÀMesBds({idBd:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:await this.obtIdBd(),type:"set",schéma:schémaBdPrincipale$4});await _.add(r),await S()}async enleverDeMesBds({idBd:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:await this.obtIdBd(),type:"set",schéma:schémaBdPrincipale$4});await _.del(r),await S()}async copierBd({idBd:r,ajouterÀMesBds:_=!0,copierDonnées:S=!0}){const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdBd}),T=await E.get("licence"),C=await E.get("licenceContenu");if(!T)throw new Error(`Aucune licence trouvée sur la BD source ${r}.`);const I=await this.créerBd({licence:T,licenceContenu:C,ajouter:_}),{bd:B,fOublier:A}=await this.client.ouvrirBdTypée({id:I,type:"keyvalue",schéma:schémaStructureBdBd}),D=await E.get("métadonnées");if(D){const{bd:J,fOublier:Z}=await this.client.ouvrirBdTypée({id:D,type:"keyvalue",schéma:schémaStructureBdMétadonnées}),re=await J.allAsJSON();await Z(),await this.sauvegarderMétadonnéesBd({idBd:I,métadonnées:re})}const N=await E.get("noms");if(N){const{bd:J,fOublier:Z}=await this.client.ouvrirBdTypée({id:N,type:"keyvalue",schéma:schémaStructureBdNoms}),re=await J.allAsJSON();await Z(),await this.sauvegarderNomsBd({idBd:I,noms:re})}const O=await E.get("descriptions");if(O){const{bd:J,fOublier:Z}=await this.client.ouvrirBdTypée({id:O,type:"keyvalue",schéma:schémaStructureBdNoms}),re=await J.allAsJSON();await Z(),await this.sauvegarderDescriptionsBd({idBd:I,descriptions:re})}const M=await E.get("motsClefs");if(M){const{bd:J,fOublier:Z}=await this.client.ouvrirBdTypée({id:M,type:"set",schéma:schémaStructureBdMotsClefs}),re=(await J.all()).map(ie=>ie.value);await Z(),await this.ajouterMotsClefsBd({idBd:I,idsMotsClefs:re})}const L=await E.get("nuées");if(L){const{bd:J,fOublier:Z}=await this.client.ouvrirBdTypée({id:L,type:"set",schéma:schémaStructureBdNuées}),re=(await J.all()).map(ie=>ie.value);await Z(),await this.rejoindreNuées({idBd:I,idsNuées:re})}const F=await E.get("tableaux"),U=await B.get("tableaux");if(!U)throw new Error("Erreur d'initialisation.");const{bd:j,fOublier:z}=await this.client.ouvrirBdTypée({id:U,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd});if(F){const{bd:J,fOublier:Z}=await this.client.ouvrirBdTypée({id:F,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd}),re=await J.all();await Z();for(const{key:ie,value:pe}of re){const ue=await this.client.tableaux.copierTableau({id:ie,idBd:I,copierDonnées:S});await j.set(ue,pe)}}const H=await E.get("statut")||{statut:"active"};await B.set("statut",H);const Q=await E.get("image");return Q&&await B.set("image",Q),await B.set("copiéDe",{id:r}),await Promise.all([x(),z(),A()]),I}async créerBdDeSchéma({schéma:r}){const{tableaux:_,motsClefs:S,nuées:E,licence:x,licenceContenu:T,statut:C}=r,I=await this.créerBd({licence:x,licenceContenu:T,ajouter:!1});S&&await this.ajouterMotsClefsBd({idBd:I,idsMotsClefs:S}),E&&await this.rejoindreNuées({idBd:I,idsNuées:E}),C&&await this.changerStatutBd({idBd:I,statut:C});for(const B of _){const{cols:A,clef:D}=B,N=await this.ajouterTableauBd({idBd:I,clefTableau:D});for(const O of A){const{idColonne:M,idVariable:L,index:F,optionnelle:U}=O;if(await this.client.tableaux.ajouterColonneTableau({idTableau:N,idVariable:L,idColonne:M}),F&&await this.client.tableaux.changerColIndex({idTableau:N,idColonne:M,val:!0}),!U){const j={typeRègle:"existe",détails:{}};await this.client.tableaux.ajouterRègleTableau({idTableau:N,idColonne:M,règle:j})}}}return await this.ajouterÀMesBds({idBd:I}),I}async suivreParent({idBd:r,f:_}){return await this.client.suivreBd({id:r,f:async S=>{const E=await S.get("copiéDe");await _(E)},type:"keyvalue",schéma:schémaStructureBdBd})}async suivreNuéesBd({idBd:r,f:_}){return await this.client.suivreBdListeDeClef({id:r,clef:"nuées",schéma:{type:"string"},f:_})}async rechercherBdsParMotsClefs({motsClefs:r,f:_,idCompte:S}){const E=async T=>await this.suivreBds({f:T,idCompte:S}),x=async(T,C)=>{const I=B=>{const A=r.every(D=>B.includes(D));C(A)};return await this.suivreMotsClefsBd({idBd:T,f:I})};return await this.client.suivreBdsSelonCondition({fListe:E,fCondition:x,f:_})}async rechercherBdsParNuée({idNuée:r,f:_,idCompte:S}){const E=async T=>await this.suivreBds({f:T,idCompte:S}),x=async(T,C)=>{const I=async B=>{C(!!B&&B.includes(r))};return await this.suivreNuéesBd({idBd:T,f:I})};return await this.client.suivreBdsSelonCondition({fListe:E,fCondition:x,f:_})}async combinerBds({idBdBase:r,idBd2:_}){const S=async T=>await uneFois(async C=>await this.suivreTableauxBd({idBd:T,f:C})),E=await S(r),x=await S(_);for(const T of x){const{id:C,clef:I}=T;if(I){const B=E.find(A=>A.clef===I)?.id;B&&await this.client.tableaux.combinerDonnées({idTableauBase:B,idTableau2:C})}}}async suivreIdTableauParClef({idBd:r,clef:_,f:S}){const E=async x=>{const T=x.find(C=>C.clef===_);await S(T?.id)};return await this.suivreTableauxBd({idBd:r,f:E})}async suivreBdUnique({schéma:r,idNuéeUnique:_,f:S}){const E="bdUnique: "+_,x=new Set,T=async I=>{let B;await this.verrouBdUnique.acquire(_);const A=await this.client.obtDeStockageLocal({clef:E});switch(I.length){case 0:{A?B=A:(B=await this.créerBdDeSchéma({schéma:r}),await this.client.sauvegarderAuStockageLocal({clef:E,val:B}));break}case 1:{B=I[0],await this.client.sauvegarderAuStockageLocal({clef:E,val:B}),A&&B!==A&&(await this.combinerBds({idBdBase:B,idBd2:A}),await this.effacerBd({idBd:A}));break}default:{A&&(I=[...new Set([...I,A])]),B=I.sort()[0],await this.client.sauvegarderAuStockageLocal({clef:E,val:B});for(const D of I.slice(1))x.has(D)||(x.add(D),await this.combinerBds({idBdBase:B,idBd2:D}),await this.effacerBd({idBd:D}));break}}this.verrouBdUnique.release(_),await S(B)};return await this.rechercherBdsParNuée({idNuée:_,f:T})}async suivreIdTableauParClefDeBdUnique({schémaBd:r,idNuéeUnique:_,clefTableau:S,f:E}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:C})=>await this.suivreBdUnique({schéma:r,idNuéeUnique:_,f:C}),f:E,fSuivre:async({id:C,fSuivreBd:I})=>await this.suivreIdTableauParClef({idBd:C,clef:S,f:I})})}async suivreDonnéesDeTableauUnique({schémaBd:r,idNuéeUnique:_,clefTableau:S,f:E}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:I})=>await this.suivreIdTableauParClefDeBdUnique({schémaBd:r,idNuéeUnique:_,clefTableau:S,f:async B=>{B&&await I(B)}}),f:async I=>await E(I||[]),fSuivre:async({id:I,fSuivreBd:B})=>await this.client.tableaux.suivreDonnées({idTableau:I,f:B})})}async ajouterÉlémentÀTableauUnique({schémaBd:r,idNuéeUnique:_,clefTableau:S,vals:E}){const x=await uneFois(async T=>await this.suivreIdTableauParClefDeBdUnique({schémaBd:r,idNuéeUnique:_,clefTableau:S,f:ignorerNonDéfinis(T)}));return await this.client.tableaux.ajouterÉlément({idTableau:x,vals:E})}async modifierÉlémentDeTableauUnique({vals:r,schémaBd:_,idNuéeUnique:S,clefTableau:E,idÉlément:x}){const T=await uneFois(async C=>await this.suivreIdTableauParClefDeBdUnique({schémaBd:_,idNuéeUnique:S,clefTableau:E,f:I=>{I&&C(I)}}),C=>!!C);return await this.client.tableaux.modifierÉlément({idTableau:T,vals:r,idÉlément:x})}async effacerÉlémentDeTableauUnique({schémaBd:r,idNuéeUnique:_,clefTableau:S,idÉlément:E}){const x=await uneFois(async T=>await this.suivreIdTableauParClefDeBdUnique({schémaBd:r,idNuéeUnique:_,clefTableau:S,f:C=>{C&&T(C)}}),T=>!!T);return await this.client.tableaux.effacerÉlément({idTableau:x,idÉlément:E})}async suivreDonnéesDeTableauParClef({idBd:r,clefTableau:_,f:S}){const E=await uneFois(async x=>await this.suivreIdTableauParClef({idBd:r,clef:_,f:ignorerNonDéfinis(x)}),x=>!!x);return await this.client.tableaux.suivreDonnées({idTableau:E,f:S})}async ajouterÉlémentÀTableauParClef({idBd:r,clefTableau:_,vals:S}){const E=await uneFois(async x=>await this.suivreIdTableauParClef({idBd:r,clef:_,f:ignorerNonDéfinis(x)}));return await this.client.tableaux.ajouterÉlément({idTableau:E,vals:S})}async modifierÉlémentDeTableauParClef({idBd:r,clefTableau:_,idÉlément:S,vals:E}){const x=await uneFois(async T=>await this.suivreIdTableauParClef({idBd:r,clef:_,f:ignorerNonDéfinis(T)}));return await this.client.tableaux.modifierÉlément({idTableau:x,vals:E,idÉlément:S})}async effacerÉlémentDeTableauParClef({idBd:r,clefTableau:_,idÉlément:S}){const E=await uneFois(async x=>await this.suivreIdTableauParClef({idBd:r,clef:_,f:ignorerNonDéfinis(x)}));this.client.tableaux.effacerÉlément({idTableau:E,idÉlément:S})}async sauvegarderMétadonnéesBd({idBd:r,métadonnées:_}){const S=await this.client.obtIdBd({nom:"métadonnées",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdMétadonnées});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderMétadonnéeBd({idBd:r,clef:_,métadonnée:S}){const E=await this.client.obtIdBd({nom:"métadonnées",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdMétadonnées});await x.set(_,S),await T()}async effacerMétadonnéeBd({idBd:r,clef:_}){const S=await this.client.obtIdBd({nom:"métadonnées",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdMétadonnées});await E.del(_),await x()}async suivreMétadonnéesBd({idBd:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"métadonnées",schéma:schémaStructureBdMétadonnées,f:_})}async sauvegarderNomsBd({idBd:r,noms:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderNomBd({idBd:r,langue:_,nom:S}){const E=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerNomBd({idBd:r,langue:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async sauvegarderDescriptionsBd({idBd:r,descriptions:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderDescriptionBd({idBd:r,langue:_,description:S}){const E=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerDescriptionBd({idBd:r,langue:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async changerLicenceBd({idBd:r,licence:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdBd});await S.set("licence",_),await E()}async changerLicenceContenuBd({idBd:r,licenceContenu:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdBd});_?await S.set("licenceContenu",_):await S.del("licenceContenu"),await E()}async ajouterMotsClefsBd({idBd:r,idsMotsClefs:_}){Array.isArray(_)||(_=[_]);const S=await this.client.obtIdBd({nom:"motsClefs",racine:r,type:"set"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"set",schéma:schémaStructureBdMotsClefs});for(const T of _)(await E.all()).map(I=>I.value).includes(T)||await E.add(T);await x()}async effacerMotClefBd({idBd:r,idMotClef:_}){const S=await this.client.obtIdBd({nom:"motsClefs",racine:r,type:"set"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"set",schéma:schémaStructureBdMotsClefs});await E.del(_),await x()}async rejoindreNuées({idBd:r,idsNuées:_}){Array.isArray(_)||(_=[_]);const S=await this.client.obtIdBd({nom:"nuées",racine:r,type:"set"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"set",schéma:schémaStructureBdNuées});for(const T of _)(await E.all()).map(I=>I.value).includes(T)||await E.add(T);await x()}async quitterNuée({idBd:r,idNuée:_}){const S=await this.client.obtIdBd({nom:"nuée",racine:r,type:"set"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"set",schéma:schémaStructureBdNuées});await E.del(_),await x()}async ajouterTableauBd({idBd:r,clefTableau:_}){const S=await this.client.obtIdBd({nom:"tableaux",racine:r,type:"ordered-keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd});_=_||v4$1();const T=await this.client.tableaux.créerTableau({idBd:r});return await E.set(T,{clef:_}),await x(),T}async effacerTableauBd({idBd:r,idTableau:_}){const S=await this.client.obtIdBd({nom:"tableaux",racine:r,type:"ordered-keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd});await E.del(_),await x(),await this.client.tableaux.effacerTableau({idTableau:_})}async spécifierClefTableau({idBd:r,idTableau:_,clef:S}){const E=await this.client.obtIdBd({nom:"tableaux",racine:r,type:"ordered-keyvalue"});if(!E)throw new Error("Id Bd Tableau non obtenable.");const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd}),C=await x.get(_);C&&(C.value.clef=S,x.set(_,C.value)),await T()}async changerStatutBd({idBd:r,statut:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdBd});S.set("statut",_),await E()}async suivreStatutBd({idBd:r,f:_}){return await this.client.suivreBdDic({id:r,schéma:schémaStructureBdBd,f:async S=>{if(S.statut)return await _(S.statut)}})}async marquerObsolète({idBd:r,idNouvelle:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdBd});S.set("statut",{statut:"obsolète",idNouvelle:_}),await E()}async marquerActive({idBd:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdBd});_.set("statut",{statut:"active"}),await S()}async marquerJouet({idBd:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdBd});_.set("statut",{statut:"jouet"}),await S()}async marquerInterne({idBd:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdBd});_.set("statut",{statut:"interne"}),await S()}async suivreLicenceBd({idBd:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdBd,f:async S=>{const E=await S.get("licence");E&&await _(E)}})}async suivreLicenceContenuBd({idBd:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdBd,f:async S=>{const E=await S.get("licenceContenu");await _(E)}})}async inviterAuteur({idBd:r,idCompteAuteur:_,rôle:S}){await this.client.donnerAccès({idBd:r,identité:_,rôle:S})}async sauvegarderImage({idBd:r,image:_}){if(_.contenu.byteLength>MAX_TAILLE_IMAGE$2)throw new Error("Taille maximale excédée");const S=await this.client.ajouterÀSFIP(_),{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdBd});await E.set("image",S),await x()}async effacerImage({idBd:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdBd});await _.del("image"),await S()}async suivreImage({idBd:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdBd,f:async S=>{const E=await S.get("image");if(!E)await _(null);else{const x=await this.client.obtFichierSFIP({id:E,max:MAX_TAILLE_IMAGE_VIS$2});await _(x)}}})}async suivreNomsBd({idBd:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"noms",schéma:schémaStructureBdNoms,f:_})}async suivreDescriptionsBd({idBd:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"descriptions",schéma:schémaStructureBdNoms,f:_})}async suivreMotsClefsBd({idBd:r,f:_}){return await this.client.suivreBdListeDeClef({id:r,clef:"motsClefs",schéma:{type:"string"},f:_})}async suivreTableauxBd({idBd:r,f:_}){const S=async E=>{const x=E.map(T=>({id:T.key,...T.value}));await _(x)};return await this.client.suivreBdDicOrdonnéeDeClef({id:r,clef:"tableaux",schéma:schémaBdTableauxDeBd,f:S})}async suivreScoreAccèsBd({idBd:r,f:_}){return _(Number.parseInt(r)),faisRien}async suivreScoreCouvertureBd({idBd:r,f:_}){return await suivreBdsDeFonctionListe({fListe:async T=>await this.suivreTableauxBd({idBd:r,f:C=>T(C.map(I=>I.id))}),f:async T=>{const C=T.reduce((B,A)=>B+A.numérateur,0),I=T.reduce((B,A)=>B+A.dénominateur,0);await _(I===0?void 0:C/I)},fBranche:async(T,C)=>{const I={},B=async()=>{const{cols:N,règles:O}=I;if(N!==void 0&&O!==void 0){const M=N.filter(U=>U.catégorie&&["numérique","catégorique"].includes(U.catégorie.catégorie)),L=M.length,F=M.filter(U=>O.some(j=>j.règle.règle.typeRègle!=="catégorie"&&j.colonne===U.id)).length;await C({numérateur:F,dénominateur:L})}},A=await this.client.tableaux.suivreColonnesTableau({idTableau:T,f:async N=>{I.cols=N,await B()},catégories:!0}),D=await this.client.tableaux.suivreRègles({idTableau:T,f:async N=>{I.règles=N,await B()}});return async()=>{await A(),await D()}}})}async suivreScoreValideBd({idBd:r,f:_}){return await suivreBdsDeFonctionListe({fListe:async T=>await this.suivreTableauxBd({idBd:r,f:C=>T(C.map(I=>I.id))}),f:async T=>{const C=T.reduce((B,A)=>B+A.numérateur,0),I=T.reduce((B,A)=>B+A.dénominateur,0);await _(I===0?void 0:C/I)},fBranche:async(T,C)=>{const I={},B=()=>{const{données:O,erreurs:M,cols:L}=I;if(O!==void 0&&M!==void 0&&L!==void 0){const F=L.filter(Q=>Q.catégorie&&["numérique","catégorique"].includes(Q.catégorie.catégorie)),U=[],j=M.map(Q=>({id:Q.id,idColonne:Q.erreur.règle.colonne})).filter(Q=>U.find(Z=>Z.id===Q.id&&Z.idColonne===Q.idColonne)?!1:(U.push(Q),!0)).length,z=O.map(Q=>F.filter(J=>Q.données[J.id]!==void 0).length).reduce((Q,J)=>Q+J,0),H=z-j;C({numérateur:H,dénominateur:z})}},A=await this.client.tableaux.suivreDonnées({idTableau:T,f:O=>{I.données=O,B()}}),D=await this.client.tableaux.suivreValidDonnées({idTableau:T,f:O=>{I.erreurs=O,B()}}),N=await this.client.tableaux.suivreColonnesTableau({idTableau:T,f:O=>{I.cols=O,B()},catégories:!0});return async()=>{await A(),await D(),await N()}}})}async suivreQualitéBd({idBd:r,f:_}){const S={},E=async()=>{const{accès:B,couverture:A,valide:D,licence:N}=S,O={total:N?((B||0)+(A||0)+(D||0))/3:0,accès:B,couverture:A,valide:D,licence:N};await _(O)},x=await this.suivreScoreAccèsBd({idBd:r,f:async B=>{S.accès=B,await E()}}),T=await this.suivreScoreCouvertureBd({idBd:r,f:async B=>{S.couverture=B,await E()}}),C=await this.suivreScoreValideBd({idBd:r,f:async B=>{S.valide=B,await E()}}),I=await this.suivreLicenceBd({idBd:r,f:async B=>{S.licence=B?1:0,await E()}});return async()=>{await Promise.all([x,T,C,I])}}async suivreVariablesBd({idBd:r,f:_}){return await suivreBdsDeFonctionListe({fListe:async T=>await this.suivreTableauxBd({idBd:r,f:C=>T(C.map(I=>I.id))}),f:async T=>await _(T||[]),fBranche:async(T,C)=>await this.client.tableaux.suivreVariables({idTableau:T,f:C})})}async suivreDonnéesExportation({idBd:r,langues:_,f:S}){const E={},x=[],T=async()=>{const{nomsBd:I,données:B}=E;if(!B)return;const A=r.split("/").pop(),D=I&&_&&traduire(I,_)||A;await S({nomBd:D,tableaux:B})},C=await suivreBdsDeFonctionListe({fListe:async I=>await this.suivreTableauxBd({idBd:r,f:I}),f:async I=>{E.données=I,await T()},fBranche:async(I,B)=>await this.client.tableaux.suivreDonnéesExportation({idTableau:I,langues:_,f:async A=>await B(A)}),fIdBdDeBranche:I=>I.id,fCode:I=>I.id});if(x.push(C),_){const I=await this.suivreNomsBd({idBd:r,f:async B=>{E.nomsBd=B,await T()}});x.push(I)}return async()=>{await Promise.all(x.map(I=>I()))}}async exporterDonnées({idBd:r,langues:_,nomFichier:S,patience:E=500}){const x=utils$2.book_new(),T=await uneFois(async I=>await this.suivreDonnéesExportation({idBd:r,langues:_,f:I}),attendreStabilité(E));S=S||T.nomBd;const C=new Set;for(const I of T.tableaux){I.fichiersSFIP.forEach(A=>C.add(A));const B=utils$2.json_to_sheet(I.données);utils$2.book_append_sheet(x,B,I.nomTableau.slice(0,30))}return{doc:x,fichiersSFIP:C,nomFichier:S}}async exporterDocumentDonnées({données:r,formatDoc:_,dossier:S="",inclureFichiersSFIP:E=!0}){const{doc:x,fichiersSFIP:T,nomFichier:C}=r,B={xls:"biff8"}[_]||_;if(!(isBrowser$1||isWebWorker)){const A=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url);A.existsSync(S)||A.mkdirSync(S,{recursive:!0})}if(E){const A={octets:writeSync(x,{bookType:B,type:"buffer"}),nom:`${C}.${_}`},D=await Promise.all([...T].map(async N=>({nom:N.replace("/","-"),octets:await toBuffer(await this.client.obtItérableAsyncSFIP({id:N}))})));return await zipper([A],D,path.join(S,C)),path.join(S,`${C}.zip`)}else{if(isNode||isElectronMain)writeFileSync(x,path.join(S,`${C}.${_}`),{bookType:B});else{const A=writeSync(x,{bookType:B,type:"buffer"});saveAs$1(new Blob([new Uint8Array(A)]),`${C}.${_}`)}return path.join(S,`${C}.${_}`)}}async effacerBd({idBd:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:await this.obtIdBd(),type:"set",schéma:schémaBdPrincipale$4});await _.del(r),await S();for(const x of["noms","descriptions","motsClefs"]){const T=await this.client.obtIdBd({nom:x,racine:r});T&&await this.client.effacerBd({id:T})}const E=await this.client.obtIdBd({nom:"tableaux",racine:r,type:"ordered-keyvalue"});if(E){const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd}),C=Object.keys(x.all);for(const I of C)await this.client.tableaux.effacerTableau({idTableau:I});T(),await this.client.effacerBd({id:E})}await this.enleverDeMesBds({idBd:r}),await this.client.effacerBd({id:r})}}__decorate([cacheSuivi],BDs.prototype,"suivreBds",null);__decorate([cacheSuivi],BDs.prototype,"suivreParent",null);__decorate([cacheSuivi],BDs.prototype,"suivreNuéesBd",null);__decorate([cacheSuivi],BDs.prototype,"rechercherBdsParMotsClefs",null);__decorate([cacheSuivi],BDs.prototype,"rechercherBdsParNuée",null);__decorate([cacheSuivi],BDs.prototype,"suivreIdTableauParClef",null);__decorate([cacheSuivi],BDs.prototype,"suivreBdUnique",null);__decorate([cacheSuivi],BDs.prototype,"suivreIdTableauParClefDeBdUnique",null);__decorate([cacheSuivi],BDs.prototype,"suivreDonnéesDeTableauUnique",null);__decorate([cacheSuivi],BDs.prototype,"suivreDonnéesDeTableauParClef",null);__decorate([cacheSuivi],BDs.prototype,"suivreMétadonnéesBd",null);__decorate([cacheSuivi],BDs.prototype,"suivreLicenceBd",null);__decorate([cacheSuivi],BDs.prototype,"suivreLicenceContenuBd",null);__decorate([cacheSuivi],BDs.prototype,"suivreImage",null);__decorate([cacheSuivi],BDs.prototype,"suivreNomsBd",null);__decorate([cacheSuivi],BDs.prototype,"suivreDescriptionsBd",null);__decorate([cacheSuivi],BDs.prototype,"suivreMotsClefsBd",null);__decorate([cacheSuivi],BDs.prototype,"suivreTableauxBd",null);__decorate([cacheSuivi],BDs.prototype,"suivreScoreAccèsBd",null);__decorate([cacheSuivi],BDs.prototype,"suivreScoreCouvertureBd",null);__decorate([cacheSuivi],BDs.prototype,"suivreScoreValideBd",null);__decorate([cacheSuivi],BDs.prototype,"suivreQualitéBd",null);__decorate([cacheSuivi],BDs.prototype,"suivreVariablesBd",null);function générerFonctionRègle({règle:n,varsÀColonnes:r,donnéesCatégorie:_}){const S=n.règle,{colonne:E}=n,{typeRègle:x}=S.règle;switch(x){case"existe":return T=>T.filter(I=>I.données[E]===void 0).map(I=>{const{id:B}=I;return{id:B,erreur:{règle:n}}});case"catégorie":return T=>{const C=S.règle.détails.catégorie;return T.filter(B=>!validerCatégorieVal({val:B.données[E],catégorie:C})).map(B=>{const{id:A}=B;return{id:A,erreur:{règle:n}}})};case"bornes":{const T=S;let C,I;const{val:B,op:A,type:D}=T.règle.détails,N=(O,M)=>O===void 0||M===void 0;switch(A){case">":I=(O,M)=>N(O,M)||O>M;break;case"<":I=(O,M)=>N(O,M)||O=":I=(O,M)=>N(O,M)||O>=M;break;case"≤":case"<=":I=(O,M)=>N(O,M)||O<=M;break}return D==="fixe"?C=O=>{const M=O.données[E];return Array.isArray(M)?M.every(L=>I(L,B)):I(M,B)}:C=O=>{const M=O.données[E],L=D==="dynamiqueVariable"?O.données[r[B]]:O.données[B];return Array.isArray(M)?M.every(F=>I(F,L)):I(M,L)},O=>O.filter(L=>!validerBorneVal({val:L,fComp:C})).map(L=>{const{id:F}=L;return{id:F,erreur:{règle:n}}})}case"valeurCatégorique":{const T=S.règle,C=T.détails.type==="fixe"?T.détails.options:_;if(!C)throw new Error("Options non spécifiées");return I=>I.filter(A=>A.données[E]!==void 0&&!C.includes(A.données[E])).map(A=>{const{id:D}=A;return{id:D,colonne:E,erreur:{règle:n}}})}default:throw Error(`Catégorie ${x} inconnue.`)}}const validerBorneVal=({val:n,fComp:r})=>Array.isArray(n)?n.every(_=>r(_)):r(n),estSpécificationHoroDatage=n=>!!n&&typeof n.système=="string"&&typeof n.val=="string";class Cholqij{lireDate(r){const{système:_,val:S}=r;switch(_){case"dateJS":case"grégorien":{const E=new Date(S);if(isNaN(E.valueOf()))throw new Error(S);return E}default:throw new Error(_)}}dateValide(r){if(!estSpécificationHoroDatage(r))return!1;try{return this.lireDate(r),!0}catch{return!1}}}const cholqij=new Cholqij,schémaBdInfoColAvecCatégorie={type:"object",additionalProperties:{type:"object",properties:{catégorie:{type:"object",nullable:!0,properties:{catégorie:{type:"string"},type:{type:"string"}},required:["catégorie","type"]},id:{type:"string"},variable:{type:"string"},index:{type:"boolean",nullable:!0}},required:["id","variable"]},required:[]},schémaBdDonnéesTableau={type:"object",additionalProperties:{type:"object",additionalProperties:!0,required:[]},required:[]},schémaBdRègles={type:"object",additionalProperties:{type:"object",properties:{colonne:{type:"string"},source:{type:"object",properties:{id:{type:"string"},type:{type:"string"}},required:["id","type"]},règle:{type:"object",properties:{id:{type:"string"},règle:{type:"object",properties:{détails:{type:"object",required:[]},typeRègle:{type:"string"}},required:["détails","typeRègle"]}},required:["id","règle"]}},required:["colonne","règle","source"]},required:[]};function élémentsÉgaux(n,r){const _=Object.keys(n).filter(E=>E!=="id"),S=Object.keys(r).filter(E=>E!=="id");return!(!_.every(E=>n[E]===r[E])||!S.every(E=>n[E]===r[E]))}function indexÉlémentsÉgaux(n,r,_){return!!_.every(S=>n[S]===r[S])}const schémaStructureBdTableau={type:"object",properties:{type:{type:"string"},noms:{type:"string"},données:{type:"string"},colonnes:{type:"string"},règles:{type:"string"}},required:["données","colonnes","noms","règles","type"]};class Tableaux{client;constructor({client:r}){this.client=r}async créerTableau({idBd:r}){const _=await this.client.obtOpsAccès({idBd:r}),S=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:_}),{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdTableau});await E.set("type","tableau");const T=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:_});await E.set("noms",T);const C=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:_});await E.set("données",C);const I=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:_});await E.set("colonnes",I);const B=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:_});return await E.set("règles",B),await x(),S}async copierTableau({id:r,idBd:_,copierDonnées:S=!0}){const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdTableau}),T=await this.créerTableau({idBd:_}),{bd:C,fOublier:I}=await this.client.ouvrirBdTypée({id:T,type:"keyvalue",schéma:schémaStructureBdTableau}),B=await E.get("noms");if(B){const{bd:A,fOublier:D}=await this.client.ouvrirBdTypée({id:B,type:"keyvalue",schéma:schémaStructureBdNoms}),N=await A.allAsJSON();await D(),await this.sauvegarderNomsTableau({idTableau:T,noms:N})}return await this.client.copierContenuBdDic({bdBase:E,nouvelleBd:C,clef:"colonnes",schéma:schémaBdInfoColAvecCatégorie}),await this.client.copierContenuBdDic({bdBase:E,nouvelleBd:C,clef:"règles",schéma:schémaBdRègles}),S&&await this.client.copierContenuBdDic({bdBase:E,nouvelleBd:C,clef:"données",schéma:schémaBdDonnéesTableau}),await Promise.all([x(),I()]),T}async suivreDifférencesAvecTableau({idTableau:r,idTableauRéf:_,f:S}){const E={},x=async()=>{if(!E.colonnesTableau||!E.colonnesTableauRéf)return;const I=[];for(const B of E.colonnesTableauRéf){const A=E.colonnesTableau.find(D=>D.id===B.id);if(A){if(A.variable!==B.variable){const D={type:"variableColonne",sévère:!0,idCol:A.id,varColTableau:A.variable,varColTableauLiée:B.variable};I.push(D)}if(A.index!==B.index){const D={type:"indexColonne",sévère:!0,idCol:A.id,colTableauIndexée:!!A.index};I.push(D)}}else{const D={type:"colonneManquante",sévère:!0,idManquante:B.id};I.push(D)}}for(const B of E.colonnesTableau)if(!E.colonnesTableauRéf.find(D=>D.id===B.id)){const D={type:"colonneSupplémentaire",sévère:!1,idExtra:B.id};I.push(D)}await S(I)},T=await this.suivreColonnesTableau({idTableau:r,f:async I=>{E.colonnesTableau=I,await x()},catégories:!1}),C=await this.suivreColonnesTableau({idTableau:_,f:async I=>{E.colonnesTableauRéf=I,await x()},catégories:!1});return async()=>{await Promise.all([T,C])}}async changerColIndex({idTableau:r,idColonne:_,val:S}){const E=await this.client.obtIdBd({nom:"colonnes",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaBdInfoColAvecCatégorie}),I=(await x.all()).find(B=>B.value.id===_);if(I&&!!I.value.index!==S){const{value:B}=I,A=Object.assign(B,{index:S});await x.put(_,A)}await T()}async suivreIndex({idTableau:r,f:_}){const S=async E=>{const x=E.filter(T=>T.index).map(T=>T.id);await _(x)};return await this.suivreColonnesTableau({idTableau:r,f:S,catégories:!1})}async suivreDonnées({idTableau:r,f:_,clefsSelonVariables:S=!1}){const E={},x=async()=>{const{données:A,colonnes:D}=E;if(A&&D){const N=Object.entries(A).map(([O,M])=>({données:S?Object.keys(M).reduce((F,U)=>{const j=U==="id"?"id":D[U];return F[j]=M[U],F},{}):M,id:O}));await _(N)}},T=async A=>{E.colonnes=Object.fromEntries(A.map(D=>[D.id,D.variable])),await x()},C=await this.suivreColonnesTableau({idTableau:r,f:T,catégories:!1}),I=async A=>{E.données=A,await x()},B=await this.client.suivreBdDicDeClef({id:r,clef:"données",f:I,schéma:schémaBdDonnéesTableau});return async()=>{await B(),await C()}}async formaterÉlément({é:r,colonnes:_,fichiersSFIP:S,langues:E}){const x=async({adresseBdTrads:I,langues:B})=>{const A=await uneFois(D=>this.client.suivreBdDic({id:I,f:D}));return traduire(A,B||[])||I},T={},C=async(I,B)=>{switch(typeof I){case"object":return JSON.stringify(I);case"boolean":return I.toString();case"number":return I;case"string":return["audio","image","vidéo","fichier"].includes(B)?(S.add(I),I):B==="chaîne"&&isValidAddress(I)?await x({adresseBdTrads:I,langues:E}):I;default:return}};for(const I of Object.keys(r)){const B=_.find(O=>O.id===I);if(!B)continue;const{catégorie:A}=B;let D;const N=r[I];A?.type==="simple"?D=await C(N,A.catégorie):A?.type==="liste"&&Array.isArray(N)&&(D=JSON.stringify(await Promise.all(N.map(O=>C(O,A.catégorie))))),D!==void 0&&(T[I]=D)}return T}async suivreDonnéesExportation({idTableau:r,langues:_,f:S}){const E={},x=[],T=async()=>{const{colonnes:B,données:A,nomsTableau:D,nomsVariables:N}=E;if(B&&A&&(!_||D&&N)){const O=new Set;let M=await Promise.all(A.map(U=>this.formaterÉlément({é:U.données,fichiersSFIP:O,colonnes:B,langues:_})));M=M.map(U=>Object.keys(U).reduce((j,z)=>{const H=B.find(J=>J.id===z)?.variable;if(!H)throw new Error(`Colonnne avec id ${z} non trouvée parmis les colonnnes : -${JSON.stringify(B,void 0,2)}.`);const Q=_&&N?.[H]&&traduire(N[H],_)||z;return j[Q]=U[z],j},{}));const L=r.split("/").pop(),F=_&&D&&traduire(D,_)||L;return await S({nomTableau:F,données:M,fichiersSFIP:O})}};if(_){const B=await this.suivreNomsTableau({idTableau:r,f:async D=>{E.nomsTableau=D,await T()}});x.push(B);const A=await suivreBdsDeFonctionListe({fListe:async D=>this.suivreVariables({idTableau:r,f:D}),f:async D=>{E.nomsVariables=Object.fromEntries(D.map(N=>[N.idVar,N.noms])),await T()},fBranche:async(D,N)=>await this.client.variables.suivreNomsVariable({idVariable:D,f:async O=>await N({idVar:D,noms:O})})});x.push(A)}const C=await this.suivreColonnesTableau({idTableau:r,f:async B=>{E.colonnes=B,await T()},catégories:!0});x.push(C);const I=await this.suivreDonnées({idTableau:r,f:async B=>{E.données=B,await T()}});return x.push(I),async()=>{Promise.all(x.map(B=>B()))}}async exporterDonnées({idTableau:r,langues:_,doc:S,nomFichier:E,patience:x=500}){S=S||utils$2.book_new();const T=await uneFois(async I=>await this.suivreDonnéesExportation({idTableau:r,langues:_,f:I}),attendreStabilité(x)),C=utils$2.json_to_sheet(T.données);return utils$2.book_append_sheet(S,C,T.nomTableau.slice(0,30)),E=E||T.nomTableau,{doc:S,fichiersSFIP:T.fichiersSFIP,nomFichier:E}}async ajouterÉlément({idTableau:r,vals:_}){Array.isArray(_)||(_=[_]);const S=await this.client.obtIdBd({nom:"données",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdDonnéesTableau}),T=(await uneFois(B=>this.suivreColonnesTableau({idTableau:r,f:B,catégories:!1}))).filter(B=>B.index).map(B=>B.id),C=B=>{const A=Object.fromEntries(Object.entries(B).filter(D=>T.includes(D[0])));return Base64.stringify(md5(JSON.stringify(A)))},I=[];for(const B of _){const A=T.length?C(B):v4$1();await E.put(A,B),I.push(A)}return await x(),I}async modifierÉlément({idTableau:r,vals:_,idÉlément:S}){const E=await this.client.obtIdBd({nom:"données",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaBdDonnéesTableau}),C=await x.get(S);if(!C)throw new Error(`Id élément ${S} n'existe pas.`);const I=Object.assign({},C,_);Object.keys(_).map(B=>{_[B]===void 0&&delete I[B]}),élémentsÉgaux(I,C)||await x.put(S,I),await T()}async vérifierClefsÉlément({idTableau:r,élément:_}){const S=await this.client.obtIdBd({nom:"colonnes",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdInfoColAvecCatégorie}),C=[...(await E.all()).map(B=>B.value.id),"id"],I=Object.keys(_).filter(B=>C.includes(B));return await x(),Object.fromEntries(I.map(B=>[B,_[B]]))}async effacerÉlément({idTableau:r,idÉlément:_}){const S=await this.client.obtIdBd({nom:"données",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdDonnéesTableau});await E.del(_),await x()}async combinerDonnées({idTableauBase:r,idTableau2:_}){const S=await uneFois(async C=>await this.suivreDonnées({idTableau:r,f:C})),E=await uneFois(async C=>await this.suivreColonnesTableau({idTableau:r,f:C,catégories:!1}),C=>C!==void 0&&[...new Set(S.map(I=>Object.keys(I.données).filter(B=>B!=="id")).flat())].length<=C.length),x=await uneFois(async C=>await this.suivreDonnées({idTableau:_,f:C})),T=E.filter(C=>C.index).map(C=>C.id);for(const C of x){const I=S.find(B=>indexÉlémentsÉgaux(B.données,C.données,T));if(I){const B={};for(const A of E)I.données[A.id]===void 0&&C.données[A.id]!==void 0&&(B[A.id]=C.données[A.id]);Object.keys(B).length&&(await this.effacerÉlément({idTableau:r,idÉlément:I.id}),await this.ajouterÉlément({idTableau:r,vals:Object.assign({},I.données,B)}))}else await this.ajouterÉlément({idTableau:r,vals:C.données})}}async convertirDonnées({idTableau:r,données:_,conversions:S={},importerFichiers:E,cheminBaseFichiers:x,donnéesExistantes:T}){const C=await uneFois(async L=>await this.suivreColonnesTableau({idTableau:r,f:L,catégories:!0})),I=new Set(T?.map(L=>C.filter(F=>F.catégorie?.catégorie==="chaîne").map(F=>F.catégorie?.type==="simple"?[L[F.id]]:L[F.id]).flat().filter(F=>typeof F=="string")).flat()||[]),B={},A=async({chemin:L})=>{try{if(new URL(L),B[L])return B[L];const F=(await axios.get(L)).data,U=L.split("/"),j=U.pop()||U.pop();if(!j)throw new Error("Nom de fichier manquant.");const z=await this.client.ajouterÀSFIP({nomFichier:j,contenu:F});B[L]=z}catch{}if(isNode||isElectronMain){const F=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url),U=await __vitePreload(()=>Promise.resolve().then(()=>index$2),void 0,import.meta.url),j=x?U.resolve(x,L):L;if(!F.existsSync(j))return;if(B[j])return B[j];const z=F.readFileSync(j),H=await this.client.ajouterÀSFIP({nomFichier:U.basename(j),contenu:z});return B[L]=H,H}},D={},N=async({val:L,langue:F})=>{if(D[F]?.[L])return D[F][L];for(const U of I){const{bd:j,fOublier:z}=await this.client.ouvrirBdTypée({id:U,type:"keyvalue",schéma:schémaStructureBdNoms}),H=await j.get(F);if(await z(),H===L)return D[F]||(D[F]={}),D[F][L]=U,U}},O=async({val:L,langue:F})=>{const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNoms}),H={address:U.access.address};await j();const Q=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:H}),{bd:J,fOublier:Z}=await this.client.ouvrirBdTypée({id:Q,type:"keyvalue",schéma:schémaStructureBdNoms});return await J.set(F,L),await Z(),I.add(Q),Q},M=async({val:L,catégorie:F,conversion:U})=>{switch(F){case"audio":case"image":case"vidéo":case"fichier":return typeof L=="string"&&E?cidEtFichierValide(L)?L:await A({chemin:L})||L:L;case"booléen":return typeof L=="string"?L.toLowerCase()==="true":L;case"numérique":{let j,z;U?.type==="numérique"&&({opération:j,systèmeNumération:z}=U);const H=({val:J,ops:Z})=>{if(!Z)return J;let re=J;for(const ie of Z)switch(ie.op){case"+":re=J+ie.val;break;case"-":re=J-ie.val;break;case"*":re=J*ie.val;break;case"/":re=J/ie.val;break;case"^":re=J**ie.val;break;default:throw new Error(ie.op)}return re};let Q;if(typeof L=="string")try{Q=this.client.ennikkai.எண்ணுக்கு({உரை:L,மொழி:z})}catch{}else typeof L=="number"&&(Q=L);return Q!==void 0?H({val:Q,ops:Array.isArray(j)||typeof j>"u"?j:[j]}):L}case"horoDatage":if(U?.type==="horoDatage"&&typeof L=="string"){const{système:j,format:z}=U;return{système:"dateJS",val:cholqij.lireDate({système:j,val:L,format:z}).valueOf()}}else{if(["number","string"].includes(typeof L)){const j=new Date(L);return isNaN(j.valueOf())?L:{système:"dateJS",val:j.valueOf()}}return L}case"intervaleTemps":{const j=typeof L=="string"?JSON.parse(L):L;return Array.isArray(j)?await Promise.all(j.map(async z=>await M({val:z,catégorie:"horoDatage",conversion:U}))):j}case"chaîneNonTraductible":return L;case"chaîne":{if(typeof L!="string"||isValidAddress(L))return L;if(U?.type==="chaîne"){const{langue:j}=U;return await N({val:L,langue:j})||await O({val:L,langue:j})}return L}case"géojson":return typeof L=="string"?JSON.parse(L):L;default:return L}};for(const L of _)for(const F of C)if(F.catégorie){const{type:U,catégorie:j}=F.catégorie,z=L[F.id];if(z===void 0)continue;const H=S[F.id];if(U==="simple")L[F.id]=await M({val:z,catégorie:j,conversion:H});else{const Q=typeof z=="string"?JSON.parse(z):z;L[F.id]=Array.isArray(Q)?await Promise.all(Q.map(async J=>await M({val:J,catégorie:j,conversion:H}))):[await M({val:Q,catégorie:j,conversion:H})]}}return _}async importerDonnées({idTableau:r,données:_,conversions:S={},cheminBaseFichiers:E}){const x=await uneFois(async B=>await this.suivreDonnées({idTableau:r,f:B})),T=await this.convertirDonnées({idTableau:r,données:_,conversions:S,importerFichiers:!0,cheminBaseFichiers:E,donnéesExistantes:x.map(B=>B.données)}),C=[];for(const B of T)x.some(A=>élémentsÉgaux(A.données,B))||C.push(B);const I=[];for(const B of x)T.some(A=>élémentsÉgaux(A,B.données))||I.push(B.id);for(const B of I)await this.effacerÉlément({idTableau:r,idÉlément:B});for(const B of C)await this.ajouterÉlément({idTableau:r,vals:B})}async sauvegarderNomsTableau({idTableau:r,noms:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderNomTableau({idTableau:r,langue:_,nom:S}){const E=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerNomTableau({idTableau:r,langue:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async suivreNomsTableau({idTableau:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"noms",schéma:schémaStructureBdNoms,f:_})}async ajouterColonneTableau({idTableau:r,idVariable:_,idColonne:S}){const E=await this.client.obtIdBd({nom:"colonnes",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaBdInfoColAvecCatégorie});S=S||v4$1();const C={id:S,variable:_};return await x.put(S,C),await T(),S}async effacerColonneTableau({idTableau:r,idColonne:_}){const S=await this.client.obtIdBd({nom:"colonnes",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdInfoColAvecCatégorie});await E.del(_),await x()}async suivreColonnesTableau({idTableau:r,f:_,catégories:S=!1}){const E=async B=>{if(B)return await _(B)},x=async(B,A,D)=>B?await this.client.variables.suivreCatégorieVariable({idVariable:B,f:async N=>{const O=Object.assign({catégorie:N},D);await A(O)}}):faisRien,T=B=>B.variable,C=B=>B.id,I=async({id:B,fSuivreBd:A})=>await this.client.suivreBdsDeBdDic({id:B,f:A,fBranche:x,fIdBdDeBranche:T,fCode:C});return S?await this.client.suivreBdDeClef({id:r,clef:"colonnes",f:E,fSuivre:I}):await this.client.suivreBdDicDeClef({id:r,clef:"colonnes",schéma:schémaBdInfoColAvecCatégorie,f:async B=>E(Object.values(B))})}async suivreVariables({idTableau:r,f:_}){const S=async x=>{await _((x||[]).filter(T=>T&&isValidAddress(T)))},E=async({id:x,fSuivreBd:T})=>await this.client.suivreBdListe({id:x,f:C=>T(C.map(I=>I.variable))});return await this.client.suivreBdDeClef({id:r,clef:"colonnes",f:S,fSuivre:E})}async ajouterRègleTableau({idTableau:r,idColonne:_,règle:S}){const E=await this.client.obtIdBd({nom:"règles",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour tableau ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaBdRègles}),C=v4$1(),B={règle:{id:C,règle:S},source:{type:"tableau",id:r},colonne:_};return await x.put(C,B),await T(),C}async effacerRègleTableau({idTableau:r,idRègle:_}){const S=await this.client.obtIdBd({nom:"règles",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour tableau ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdRègles});await E.del(_),await x()}async suivreRègles({idTableau:r,f:_}){const S={},E=async()=>{if(!(!S.tableau||!S.variable))return await _([...S.tableau,...S.variable])},x=async M=>(S.tableau=Object.values(M),await E()),T=await this.client.suivreBdDicDeClef({id:r,clef:"règles",schéma:schémaBdRègles,f:x}),N=await suivreBdsDeFonctionListe({fListe:async M=>await this.suivreColonnesTableau({idTableau:r,f:M,catégories:!1}),f:async M=>(S.variable=M,await E()),fBranche:async(M,L,F)=>{const U=j=>{const z=j.map(H=>({règle:H,source:{type:"variable",id:M},colonne:F.id}));return L(z)};return await this.client.variables.suivreRèglesVariable({idVariable:M,f:U})},fIdBdDeBranche:M=>M.variable,fCode:M=>M.id});return async()=>{await T(),await N()}}async suivreValidDonnées({idTableau:r,f:_}){const S={},E=async()=>{if(!S.données||!S.règles)return;let L=[];for(const F of S.règles){const U=F(S.données);L=[...L,...U.flat()]}await _(L)},x=async L=>{S.varsÀColonnes&&(S.règles=L.map(F=>générerFonctionRègle({règle:F.règle,varsÀColonnes:S.varsÀColonnes,donnéesCatégorie:F.donnéesCatégorie})),await E())},T=async L=>{S.données=L,await E()},C=await this.suivreColonnesTableau({idTableau:r,f:async L=>{const F=L.reduce((U,j)=>({...U,[j.variable]:j.id}),{});S.varsÀColonnes=F,await E()},catégories:!1}),N=await suivreBdsDeFonctionListe({fListe:async L=>await this.suivreRègles({idTableau:r,f:L}),f:x,fBranche:async(L,F,U)=>{if(U.règle.règle.typeRègle==="valeurCatégorique"&&U.règle.règle.détails.type==="dynamique"){const{tableau:j,colonne:z}=U.règle.règle.détails;return await this.suivreDonnées({idTableau:j,f:async H=>await F({règle:U,donnéesCatégorie:H.map(Q=>Q.données[z])})})}else return await F({règle:U}),faisRien},fIdBdDeBranche:L=>L.règle.id,fCode:L=>L.règle.id}),O=await this.suivreDonnées({idTableau:r,f:T});return async()=>{await N(),await O(),await C()}}async suivreValidRègles({idTableau:r,f:_}){const S={},E=async()=>{if(!S.colonnes||!S.règles)return;const O=[],M=S.règles.map(j=>j.règle).filter(j=>j.règle.règle.typeRègle==="bornes"),L=M.filter(j=>j.règle.règle.détails.type==="dynamiqueColonne"),F=M.filter(j=>j.règle.règle.détails.type==="dynamiqueVariable"),U=S.règles.filter(j=>j.règle.règle.règle.typeRègle==="valeurCatégorique"&&j.règle.règle.règle.détails.type==="dynamique");for(const j of L)if(!S.colonnes.find(H=>H.id===j.règle.règle.détails.val)){const H={règle:j,détails:"colonneBornesInexistante"};O.push(H)}for(const j of F)if(!S.colonnes.find(H=>H.variable===j.règle.règle.détails.val)){const H={règle:j,détails:"variableBornesNonPrésente"};O.push(H)}for(const j of U)if(!j.colsTableauRéf?.find(H=>H.id===j.règle.règle.règle.détails.colonne)){const H={règle:j.règle,détails:"colonneCatégInexistante"};O.push(H)}await _(O)},x=async O=>(S.règles=O,await E()),T=await this.suivreColonnesTableau({idTableau:r,f:async O=>(S.colonnes=O,await E()),catégories:!1}),D=await suivreBdsDeFonctionListe({fListe:async O=>await this.suivreRègles({idTableau:r,f:O}),f:x,fBranche:async(O,M,L)=>{if(L.règle.règle.typeRègle==="valeurCatégorique"&&L.règle.règle.détails.type==="dynamique"){const{tableau:F}=L.règle.règle.détails;return await this.suivreColonnesTableau({idTableau:F,f:U=>M({règle:L,colsTableauRéf:U}),catégories:!1})}else return await M({règle:L}),faisRien},fIdBdDeBranche:O=>O.règle.id,fCode:O=>O.règle.id});return async()=>{await D(),await T()}}async effacerTableau({idTableau:r}){for(const _ of["noms","données","colonnes","règles"]){const S=await this.client.obtIdBd({nom:_,racine:r});S&&await this.client.effacerBd({id:S})}await this.client.effacerBd({id:r})}}__decorate([cacheSuivi],Tableaux.prototype,"suivreDifférencesAvecTableau",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreIndex",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreDonnées",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreNomsTableau",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreColonnesTableau",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreVariables",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreRègles",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreValidDonnées",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreValidRègles",null);const schémaBdPrincipale$3={type:"string"},schémaStructureBdVariable={type:"object",properties:{type:{type:"string",nullable:!0},catégorie:{type:"object",properties:{catégorie:{type:"string",nullable:!0},type:{type:"string",nullable:!0}},required:[],nullable:!0},noms:{type:"string",nullable:!0},descriptions:{type:"string",nullable:!0},unités:{type:"string",nullable:!0},règles:{type:"string",nullable:!0},statut:{type:"object",properties:{idNouvelle:{type:"string",nullable:!0},statut:{type:"string",nullable:!0}},required:[],nullable:!0}},required:[]},schémaBdRèglesVariable={type:"object",additionalProperties:{type:"object",properties:{typeRègle:{type:"string"},détails:{type:"object",required:[],additionalProperties:!0}},required:["détails","typeRègle"]},required:[]};class Variables extends ComposanteClientListe{constructor({client:r}){super({client:r,clef:"variables",schémaBdPrincipale:schémaBdPrincipale$3})}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async suivreVariables({f:r,idCompte:_}){return await this.suivreBdPrincipale({idCompte:_,f:r})}async créerVariable({catégorie:r}){const _=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:{address:void 0,write:await this.client.obtIdCompte()}});await this.ajouterÀMesVariables({idVariable:_});const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:_,type:"keyvalue",schéma:schémaStructureBdVariable}),x=S.access;if(!estUnContrôleurConstellation(x))throw Error("Contrôleur de type non reconnu.");const T={address:x.address};await S.set("type","variable");const C=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:T});await S.set("noms",C);const I=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:T});await S.set("descriptions",I);const B=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:T});return await S.set("règles",B),await S.set("catégorie",this.standardiserCatégorieVariable(r)),await this.établirStatut({id:_,statut:{statut:"active"}}),E(),_}async ajouterÀMesVariables({idVariable:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.add(r),await S()}async enleverDeMesVariables({idVariable:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.del(r),await S()}async copierVariable({idVariable:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdVariable}),E=await _.get("catégorie"),x=await this.créerVariable({catégorie:E}),{bd:T,fOublier:C}=await this.client.ouvrirBdTypée({id:x,type:"keyvalue",schéma:schémaStructureBdVariable}),I=await _.get("noms");if(I){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:I,type:"keyvalue",schéma:schémaStructureBdNoms}),L=await O.allAsJSON();await M(),await this.sauvegarderNomsVariable({idVariable:x,noms:L})}const B=await _.get("descriptions");if(B){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:B,type:"keyvalue",schéma:schémaStructureBdNoms}),L=await O.allAsJSON();await M(),await this.sauvegarderDescriptionsVariable({idVariable:x,descriptions:L})}const A=await _.get("unités");A&&await T.put("unités",A);const D=await _.get("règles");if(D){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:D,type:"keyvalue",schéma:schémaBdRèglesVariable}),L=await O.allAsJSON();await M(),await Promise.all(Object.entries(L).map(async([F,U])=>{await this.ajouterRègleVariable({idVariable:x,règle:U,idRègle:F})}))}const N=await _.get("statut")||{statut:"active"};return await this.établirStatut({id:x,statut:N}),await Promise.all([S(),C()]),x}async inviterAuteur({idVariable:r,idCompteAuteur:_,rôle:S}){await this.client.donnerAccès({idBd:r,identité:_,rôle:S})}async sauvegarderNomsVariable({idVariable:r,noms:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Variable ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderNomVariable({idVariable:r,langue:_,nom:S}){const E=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour variable ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerNomVariable({idVariable:r,langue:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Variable ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async sauvegarderDescriptionsVariable({idVariable:r,descriptions:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Variable ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderDescriptionVariable({idVariable:r,langue:_,description:S}){const E=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour Variable ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerDescriptionVariable({idVariable:r,langue:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Variable ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async sauvegarderCatégorieVariable({idVariable:r,catégorie:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdVariable});await S.set("catégorie",this.standardiserCatégorieVariable(_)),await E()}standardiserCatégorieVariable(r){return typeof r=="string"?{type:"simple",catégorie:r}:r}async sauvegarderUnitésVariable({idVariable:r,idUnité:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdVariable});await S.set("unités",_),await E()}async ajouterRègleVariable({idVariable:r,règle:_,idRègle:S}){const E=await this.client.obtIdBd({nom:"règles",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour variable ${r}.`);S=S||v4$1();const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaBdRèglesVariable});return await x.put(S,_),await T(),S}async effacerRègleVariable({idVariable:r,idRègle:_}){const S=await this.client.obtIdBd({nom:"règles",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour variable ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdRèglesVariable});await E.del(_),await x()}async modifierRègleVariable({idVariable:r,règleModifiée:_,idRègle:S}){await this.effacerRègleVariable({idVariable:r,idRègle:S}),await this.ajouterRègleVariable({idVariable:r,règle:_,idRègle:S})}async suivreNomsVariable({idVariable:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"noms",schéma:schémaStructureBdNoms,f:_})}async suivreDescriptionsVariable({idVariable:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"descriptions",schéma:schémaStructureBdNoms,f:_})}async suivreCatégorieVariable({idVariable:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdVariable,f:async S=>{const E=await S.get("catégorie");E&&E.catégorie&&E.type&&await _(this.standardiserCatégorieVariable(E))}})}async suivreUnitésVariable({idVariable:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdVariable,f:async S=>{const E=await S.get("unités");await _(E||null)}})}async suivreRèglesVariable({idVariable:r,f:_}){const S={catégorie:{},propres:{}},E=async()=>{await _(Object.entries(Object.assign({},S.catégorie,S.propres)).map(([A,D])=>({id:A,règle:D})))},x=async A=>{const D={[v4$1()]:{typeRègle:"catégorie",détails:{catégorie:A}}};S.catégorie=D,await E()},T=await this.suivreCatégorieVariable({idVariable:r,f:x}),C=async A=>{S.propres=A,await E()},I=await this.client.suivreBdDicDeClef({id:r,clef:"règles",schéma:schémaBdRèglesVariable,f:C});return async()=>{await T(),await I()}}async suivreQualitéVariable({idVariable:r,f:_}){const S={noms:{},descr:{},règles:[]},E=async()=>{const D=[Object.keys(S.noms).length?1:0,Object.keys(S.descr).length?1:0];S.catégorie?.catégorie==="numérique"&&D.push(S.unités?1:0),S.catégorie?.catégorie==="numérique"&&D.push(S.règles.length>=1?1:0);const N=D.reduce((O,M)=>O+M,0)/D.length;await _(N)},x=await this.suivreNomsVariable({idVariable:r,f:async D=>{S.noms=D,await E()}}),T=await this.suivreDescriptionsVariable({idVariable:r,f:async D=>{S.descr=D,await E()}}),C=await this.suivreUnitésVariable({idVariable:r,f:async D=>{S.unités=D,await E()}}),I=await this.suivreCatégorieVariable({idVariable:r,f:async D=>{S.catégorie=D,await E()}}),B=await this.suivreRèglesVariable({idVariable:r,f:async D=>{S.règles=D,await E()}});return async()=>{await Promise.all([x(),T(),C(),I(),B()])}}async établirStatut({id:r,statut:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdVariable});await S.set("statut",_),await E()}async marquerObsolète({id:r,idNouvelle:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdVariable});S.set("statut",{statut:"obsolète",idNouvelle:_}),await E()}async effacerVariable({idVariable:r}){await this.enleverDeMesVariables({idVariable:r});for(const _ of["noms","descriptions","règles"]){const S=await this.client.obtIdBd({nom:_,racine:r});S&&await this.client.effacerBd({id:S})}await this.client.effacerBd({id:r})}}__decorate([cacheSuivi],Variables.prototype,"suivreVariables",null);__decorate([cacheSuivi],Variables.prototype,"suivreNomsVariable",null);__decorate([cacheSuivi],Variables.prototype,"suivreDescriptionsVariable",null);__decorate([cacheSuivi],Variables.prototype,"suivreCatégorieVariable",null);__decorate([cacheSuivi],Variables.prototype,"suivreUnitésVariable",null);__decorate([cacheSuivi],Variables.prototype,"suivreRèglesVariable",null);__decorate([cacheSuivi],Variables.prototype,"suivreQualitéVariable",null);function baseSum$1(n,r){for(var _,S=-1,E=n.length;++S{const x=Math.max(0,E.end-r.length-E.errors),T=reverse(n.slice(x,E.end));return{start:findMatchEnds(T,S,E.errors).reduce((I,B)=>E.end-B.end>31&1}function advanceBlock(n,r,_,S){let E=n.P[_],x=n.M[_];const T=S>>>31,C=r[_]|T,I=C|x,B=(C&E)+E^E|C;let A=x|~(B|E),D=E&B;const N=oneIfNotZero(A&n.lastRowMask[_])-oneIfNotZero(D&n.lastRowMask[_]);return A<<=1,D<<=1,D|=T,A|=oneIfNotZero(S)-T,E=D|~(I|A),x=A&I,n.P[_]=E,n.M[_]=x,N}function findMatchEnds(n,r,_){if(r.length===0)return[];_=Math.min(_,r.length);const S=[],E=32,x=Math.ceil(r.length/E)-1,T={P:new Uint32Array(x+1),M:new Uint32Array(x+1),lastRowMask:new Uint32Array(x+1)};T.lastRowMask.fill(1<<31),T.lastRowMask[x]=1<<(r.length-1)%E;const C=new Uint32Array(x+1),I=new Map,B=[];for(let N=0;N<256;N++)B.push(C);for(let N=0;N=r.length)continue;r.charCodeAt(U)===O&&(M[L]|=1<"u"&&(M=C));let L=0;for(let F=0;F<=A;F+=1)L=advanceBlock(T,M,F,L),D[F]+=L;if(D[A]-L<=_&&A0&&D[A]>=_+E;)A-=1;A===x&&D[A]<=_&&(D[A]<_&&S.splice(0,S.length),S.push({start:-1,end:N+1,errors:D[A]}),_=D[A])}return S}function search(n,r,_){const S=findMatchEnds(n,r,_);return findMatchStarts(n,r,S)}const rechercherDansTexte=(n,r)=>{const S=search(r,n,Math.ceil(n.length/4)).sort((E,x)=>E.errors>x.errors?1:-1)[0];if(S)return{type:"texte",score:1/(S.errors+1),début:S.start,fin:S.end}},similTexte=(n,r)=>(Array.isArray(r)&&(r=Object.fromEntries(r.map(E=>[E,E]))),Object.entries(r).map(([E,x])=>{const T=rechercherDansTexte(n,x);if(T){const{score:C,début:I,fin:B}=T;return{type:"résultat",score:C,clef:E,info:{type:"texte",texte:x,début:I,fin:B}}}}).filter(E=>E).sort((E,x)=>E.score>x.score?-1:1)[0]),similImages=(n,r)=>{if(!r)return 0;const{mssim:_}=ssim$1(n,r);return _},combinerRecherches=async(n,r,_,S)=>{const E=[],x=Object.fromEntries(Object.keys(n).map(C=>[C,void 0])),T=()=>{const C=Object.values(x).filter(I=>I).sort((I,B)=>aMieuxQueB(I,B)?-1:1)[0];S(C)};return await Promise.all(Object.entries(n).map(async([C,I])=>{const B=async A=>{x[C]=A,T()};E.push(await I(r,_,B))})),async()=>{await Promise.all(E.map(C=>C()))}},sousRecherche=async(n,r,_,S,E)=>await suivreBdsDeFonctionListe({fListe:r,f:async I=>{const B=meilleurRésultat(I);if(B){const A={type:"résultat",de:n,clef:B.id,score:B.résultat.score,info:{type:"résultat",de:B.résultat.de,info:B.résultat.info}};B.résultat.clef&&(A.info.clef=B.résultat.clef),await E(A)}},fBranche:async(I,B)=>await _(S,I,async A=>{A&&B({id:I,résultat:A})})}),aMieuxQueB=(n,r)=>{const _=(E,x)=>{for(;E.type==="résultat";)E=E.info;for(;x.type==="résultat";)x=x.info;const T=["vide","texte"],C=T.indexOf(E.type),I=T.indexOf(x.type);return C>I},S=(E,x)=>{for(;E.type==="résultat";)E=E.info;for(;x.type==="résultat";)x=x.info;switch(E.type){case"texte":return x.type==="texte"?E.fin-E.début>x.fin-x.début:!1;default:return!1}};return n.score>r.score?!0:n.scoreObject.values(n).filter(_=>_).sort((_,S)=>aMieuxQueB(_.résultat,S.résultat)?-1:1)[0],rechercherSelonId=n=>async(r,_,S)=>{const E=rechercherDansTexte(n,_);if(E){const{score:x,début:T,fin:C}=E;await S({score:x,type:"résultat",de:"id",info:{type:"texte",début:T,fin:C,texte:_}})}else await S();return faisRien},rechercherTous=()=>async(n,r,_)=>(await _({type:"résultat",score:1,de:"*",info:{type:"vide"}}),faisRien),rechercherTousSiVide=n=>async(r,_,S)=>(n===""&&await S({type:"résultat",score:1,de:"*",info:{type:"vide"}}),faisRien),rechercherProfilsSelonActivité=()=>async(n,r,_)=>{const S={noms:void 0,image:void 0,courriel:void 0},E=()=>({type:"résultat",score:[Object.keys(S.noms||{}).length>0,S.image,S.courriel].filter(Boolean).length/3,de:"activité",info:{type:"vide"}}),x=N=>{S.noms=N,_(E())},T=N=>{S.image=N,_(E())},C=N=>{S.courriel=N,_(E())},I=await n.profil.suivreNoms({idCompte:r,f:x}),B=await n.profil.suivreImage({idCompte:r,f:T}),A=await n.profil.suivreCourriel({idCompte:r,f:C});return async()=>{await Promise.all([I(),B(),A()])}},rechercherProfilsSelonNom=n=>async(r,_,S)=>{const E=T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;S({type:"résultat",score:I,clef:B,info:A,de:"nom"})}else S()};return await r.profil.suivreNoms({idCompte:_,f:E})},rechercherProfilsSelonCourriel=n=>async(r,_,S)=>{const E=T=>{const C=T?rechercherDansTexte(n,T):void 0;if(C&&T){const{score:I,début:B,fin:A}=C;S({type:"résultat",score:I,de:"courriel",info:{type:"texte",début:B,fin:A,texte:T}})}else S()};return await r.profil.suivreCourriel({idCompte:_,f:E})},rechercherProfilsSelonTexte=n=>async(r,_,S)=>{const E=rechercherProfilsSelonNom(n),x=rechercherProfilsSelonCourriel(n),T=rechercherSelonId(n),C=rechercherTousSiVide(n);return await combinerRecherches({noms:E,courriel:x,id:T,vide:C},r,_,S)},rechercherProfilsSelonImage=n=>async(r,_,S)=>{const E=T=>{const C=similImages(n,T);S({type:"résultat",score:C,de:"image",info:{type:"vide"}})};return await r.profil.suivreImage({idCompte:_,f:E})},schémaBdPrincipaleRéseau={type:"object",additionalProperties:{type:"string"},required:[]},INTERVALE_SALUT=1e3*10,FACTEUR_ATÉNUATION_CONFIANCE=.8,FACTEUR_ATÉNUATION_BLOQUÉS=.9,CONFIANCE_DE_COAUTEUR=.9,CONFIANCE_DE_FAVORIS=.7,DÉLAI_SESOUVENIR_MEMBRES_EN_LIGNE=1e3*60*60*24*30,N_DÉSIRÉ_SOUVENIR_MEMBRES_EN_LIGNE=50;class Réseau extends ComposanteClientDic{client;bloquésPrivés;_fermé;dispositifsEnLigne;fsOublier;événements;constructor({client:r}){super({client:r,clef:"réseau",schémaBdPrincipale:schémaBdPrincipaleRéseau}),this.client=r,this.bloquésPrivés=new Set,this.dispositifsEnLigne={},this.fsOublier=[],this._fermé=!1,this.événements=new eventsExports.EventEmitter}async initialiser(){const{sfip:r}=await this.client.attendreSfipEtOrbite(),_={},S=r.libp2p.services.pubsub;S.subscribe(this.client.sujet_réseau);const E=B=>{const A=B.detail.msg,D=v4$1();if(A.topic===this.client.sujet_réseau)try{const N=this.messageReçu({msg:JSON.parse(new TextDecoder().decode(A.data))});_[D]=N,N.then(()=>{delete _[D]})}catch(N){console.error(N.toString()),console.error(N.stack.toString())}};S.addEventListener("gossipsub:message",E),this.fsOublier.push(async()=>{S.unsubscribe(this.client.sujet_réseau),S.removeEventListener("gossipsub:message",E),await Promise.all(Object.values(_))});const x=r.libp2p,T=()=>{this.événements.emit("changementConnexions")},C=["peer:discovery","peer:connect","peer:disconnect"];for(const B of C)x.addEventListener(B,T);this.fsOublier.push(...C.map(B=>async()=>x.removeEventListener(B,T)));const I=setInterval(()=>{this.direSalut({})},INTERVALE_SALUT);this.fsOublier.unshift(async()=>clearInterval(I)),await this.direSalut({})}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async envoyerMessageAuDispositif({msg:r,idSFIP:_}){_&&(r.destinataire=_);const S=this.client.sujet_réseau,{sfip:E}=await this.client.attendreSfipEtOrbite(),x=E.libp2p.services.pubsub,T=Buffer$2.from(JSON.stringify(r));await x.publish(S,T)}async envoyerMessageAuMembre({msg:r,idCompte:_,encrypté:S=!0}){const x={signature:await this.client.signer({message:JSON.stringify(r)}),valeur:r},T=Date.now(),C=Object.values(this.dispositifsEnLigne).filter(I=>I.infoDispositif.idCompte===_).filter(I=>I.vuÀ&&T-I.vuÀ{const{idSFIP:B,encryption:A}=I.infoDispositif;if(S){if(A?.type!==this.client.encryption.nom)return;const D=await this.client.encryption.encrypter({message:JSON.stringify(x),clefPubliqueDestinataire:A.clefPublique}),{publique:N}=await this.client.encryption.obtClefs(),O={encrypté:!0,clefPubliqueExpéditeur:N,données:D};await this.envoyerMessageAuDispositif({msg:O,idSFIP:B})}else{const D={encrypté:!1,données:x};await this.envoyerMessageAuDispositif({msg:D,idSFIP:B})}}))}async direSalut({à:r}){const _={type:"Salut !",contenu:{idSFIP:(await this.client.obtIdSFIP()).toString(),idDispositif:this.client.orbite.identity.id,clefPublique:this.client.orbite.identity.publicKey,signatures:this.client.orbite.identity.signatures,idCompte:await this.client.obtIdCompte()}},{publique:S}=await this.client.encryption.obtClefs();this.client.encryption&&(_.contenu.encryption={type:this.client.encryption.nom,clefPublique:S});const x={encrypté:!1,données:{signature:await this.client.signer({message:JSON.stringify(_)}),valeur:_}};try{await this.envoyerMessageAuDispositif({msg:x,idSFIP:r})}catch(T){if(!T.toString().includes("PublishError.InsufficientPeers"))throw T}}async envoyerDemandeRejoindreCompte({idCompte:r,codeSecret:_}){const S=await this.client.obtIdDispositif(),E={type:"Je veux rejoindre ce compte",contenu:{idDispositif:S,empreinteVérification:this.client.empreinteInvitation({idDispositif:S,codeSecret:_})}};await this.envoyerMessageAuMembre({msg:E,idCompte:r})}async messageReçu({msg:r}){if(this._fermé)return;const{encrypté:_,destinataire:S}=r;if(S&&S!==(await this.client.obtIdSFIP()).toString())return;const E=_?JSON.parse(await this.client.encryption.décrypter({message:r.données,clefPubliqueExpéditeur:r.clefPubliqueExpéditeur})):r.données,{valeur:x,signature:T}=E;if(T.clefPublique===this.client.orbite.identity.publicKey&&x.type!=="Salut !"||!await this.client.vérifierSignature({signature:T,message:JSON.stringify(x)}))return;const I=x.contenu;switch(x.type){case"Salut !":{const B=I,{clefPublique:A}=B;if(A!==T.clefPublique)return;await this.recevoirSalut({message:B}),S||await this.direSalut({à:B.idSFIP});break}case"Je veux rejoindre ce compte":{const B=I;await this.client.considérerRequêteRejoindreCompte({requête:B});break}}}async recevoirSalut({message:r}){await this._validerInfoMembre({info:r})&&(this.dispositifsEnLigne[r.idDispositif]={infoDispositif:r,vuÀ:r.idDispositif===await this.client.obtIdDispositif()?void 0:new Date().getTime()},this.événements.emit("membreVu"),await this._sauvegarderDispositifsEnLigne())}_nettoyerDispositifsEnLigne(){const r=new Date().getTime(),_=Object.values(this.dispositifsEnLigne).filter(x=>r-(x.vuÀ||0)>DÉLAI_SESOUVENIR_MEMBRES_EN_LIGNE).sort((x,T)=>(x.vuÀ||0)<(T.vuÀ||0)?-1:1).map(x=>x.infoDispositif.idDispositif),S=Object.keys(this.dispositifsEnLigne).length-N_DÉSIRÉ_SOUVENIR_MEMBRES_EN_LIGNE;_.slice(_.length-S).forEach(x=>delete this.dispositifsEnLigne[x])}async _sauvegarderDispositifsEnLigne(){this._nettoyerDispositifsEnLigne(),await this.client.sauvegarderAuStockageLocal({clef:"dispositifsEnLigne",val:JSON.stringify(this.dispositifsEnLigne)})}async _validerInfoMembre({info:r}){const{idCompte:_,signatures:S,clefPublique:E,idDispositif:x}=r;if(!(_&&S&&E&&x))return!1;const T=await this.client.vérifierSignature({signature:{signature:S.id,clefPublique:E},message:x}),C=await this.client.vérifierSignature({signature:{signature:S.publicKey,clefPublique:x},message:E+S.id});if(!isValidAddress(_))return!1;const{bd:I,fOublier:B}=await this.client.orbite.ouvrirBd({id:_});if(!estUnContrôleurConstellation(I.access))return!1;const A=I.access.estAutorisé(x);return await B(),T&&C&&A}async faireConfianceAuMembre({idCompte:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.set(r,"FIABLE"),await S()}async nePlusFaireConfianceAuMembre({idCompte:r}){const{bd:_,fOublier:S}=await this.obtBd();Object.keys(await _.allAsJSON()).includes(r)&&await _.get(r)==="FIABLE"&&await _.del(r),await S()}async suivreFiables({f:r,idCompte:_}){const S=async E=>{const x=Object.keys(E).filter(T=>E[T]==="FIABLE");return await r(x)};return await this.suivreBdPrincipale({idCompte:_,f:S})}async _initaliserBloquésPrivés(){const r=await this.client.obtDeStockageLocal({clef:"membresBloqués"});r&&(JSON.parse(r).forEach(_=>this.bloquésPrivés.add(_)),this.événements.emit("changementMembresBloqués"))}async _sauvegarderBloquésPrivés(){const r=[...this.bloquésPrivés];this.client.sauvegarderAuStockageLocal({clef:"membresBloqués",val:JSON.stringify(r)})}async bloquerMembre({idCompte:r,privé:_=!1}){if(_)await this.débloquerMembre({idCompte:r}),this.bloquésPrivés.add(r),await this._sauvegarderBloquésPrivés();else{const{bd:S,fOublier:E}=await this.obtBd();await this.débloquerMembre({idCompte:r}),await S.set(r,"BLOQUÉ"),await E()}this.événements.emit("changementMembresBloqués")}async débloquerMembre({idCompte:r}){const{bd:_,fOublier:S}=await this.obtBd();Object.keys(await _.allAsJSON()).includes(r)&&await _.get(r)==="BLOQUÉ"&&await _.del(r),await S(),this.bloquésPrivés.has(r)&&(this.bloquésPrivés.delete(r),await this._sauvegarderBloquésPrivés()),this.événements.emit("changementMembresBloqués")}async suivreBloquésPubliques({f:r,idCompte:_}){const S=async E=>{const x=Object.keys(E).filter(T=>E[T]==="BLOQUÉ");return await r(x)};return await this.suivreBdPrincipale({idCompte:_,f:S})}async suivreBloqués({f:r,idCompte:_}){const S=[];let E=[];const x=async()=>{const T=[...new Set([...[...this.bloquésPrivés].map(C=>({idCompte:C,privé:!0})),...E.map(C=>({idCompte:C,privé:!1}))])];return await r(T)};return S.push(await this.suivreBloquésPubliques({f:async T=>(E=T,await x()),idCompte:_})),(_===void 0||_===this.client.idCompte)&&(await this._initaliserBloquésPrivés(),this.événements.on("changementMembresBloqués",x),S.push(async()=>{this.événements.off("changementMembresBloqués",x)}),await x()),async()=>{await Promise.all(S.map(T=>T()))}}async suivreRelationsImmédiates({f:r,idCompte:_}){_=_||this.client.idCompte;const S=[],E={suivis:[],favoris:[],coauteursBds:[],coauteursProjets:[],coauteursVariables:[],coauteursMotsClefs:[]};let x=[];const T=async()=>{const O=[...E.suivis,...E.favoris,...E.coauteursBds,...E.coauteursProjets,...E.coauteursVariables,...E.coauteursMotsClefs,...x.map(F=>({idCompte:F,confiance:-1}))],L=[...new Set(O)].map(F=>{const{idCompte:U}=F;if(x.includes(U))return{idCompte:U,confiance:-1};const z=1-O.filter(H=>H.idCompte===U).map(H=>H.confiance).map(H=>1-H).reduce((H,Q)=>Q*H,1);return{idCompte:U,confiance:z}});return await r(L)};S.push(await this.suivreBloqués({f:async O=>{x=O.map(M=>M.idCompte),await T()},idCompte:_})),S.push(await this.client.suivreBdDicDeClef({id:_,clef:"réseau",schéma:schémaBdPrincipaleRéseau,f:async O=>(E.suivis=Object.entries(O).filter(([M,L])=>L==="FIABLE").map(([M,L])=>({idCompte:M,confiance:1})),await T())}));const C=async(O,M,L)=>{S.push(await suivreBdsDeFonctionListe({fListe:O,f:async F=>(E[M]=F.map(U=>({idCompte:U,confiance:L})),await T()),fBranche:async(F,U)=>await this.client.suivreAccèsBd({id:F,f:j=>U(j.map(z=>z.idCompte).filter(z=>z!==_))})}))};return await C(async O=>await this.suivreFavorisMembre({idCompte:_,f:M=>O((M||[]).map(L=>L.idObjet))}),"favoris",CONFIANCE_DE_FAVORIS),await C(async O=>await this.suivreBdsMembre({idCompte:_,f:M=>O(M||[])}),"coauteursBds",CONFIANCE_DE_COAUTEUR),await C(async O=>await this.suivreProjetsMembre({idCompte:_,f:M=>O(M||[])}),"coauteursProjets",CONFIANCE_DE_COAUTEUR),await C(async O=>await this.suivreVariablesMembre({idCompte:_,f:M=>O(M||[])}),"coauteursVariables",CONFIANCE_DE_COAUTEUR),await C(async O=>await this.suivreMotsClefsMembre({idCompte:_,f:M=>O(M||[])}),"coauteursMotsClefs",CONFIANCE_DE_COAUTEUR),async()=>{await Promise.all(S.map(O=>O()))}}async suivreRelationsConfiance({f:r,profondeur:_=1/0,idCompteDébut:S}){const E=S||await this.client.obtIdCompte(),x={},T={},C=new s$2;let I=!1;const B=U=>Object.entries(x).filter(([j,z])=>z.relations.map(H=>H.idCompte).includes(U)).map(([j,z])=>j),A=U=>{if(U===E)return 0;const j=({ids:z,p:H=1,déjàVues:Q=new Set})=>{const J=z.map(Z=>B(Z).filter(re=>!Q.has(re))).flat();return J.includes(E)?H:J.length?(Q=new Set(...Q,...J),j({ids:J,p:H+1,déjàVues:Q})):1/0};return j({ids:[U]})},D=async()=>{const U=[];for(const[j,z]of Object.entries(x))for(const H of z.relations){const Q=A(j)+1;U.push({de:j,pour:H.idCompte,confiance:H.confiance,profondeur:Q})}return await r(U)},N=async U=>{x[U]={relations:[]};const j=await this.suivreRelationsImmédiates({f:z=>{x[U]&&(x[U].relations=z,M())},idCompte:U});T[U]=j},O=async U=>{await T[U](),delete T[U],delete x[U]},M=async()=>{if(I)return;await C.acquire("modification");const U=Object.keys(x).filter(z=>A(z)>=_),j=[...new Set(Object.entries(x).filter(([z,H])=>A(z)+1<_).map(([z,H])=>H.relations.map(Q=>Q.idCompte)).flat())].filter(z=>!Object.keys(x).includes(z));await Promise.all(U.map(z=>O(z))),await Promise.all(j.map(z=>N(z))),await D(),C.release("modification")};return await N(E),{fOublier:async()=>{I=!0,await Promise.all(Object.values(T).map(U=>U()))},fChangerProfondeur:async U=>{_=U,await M()}}}async suivreComptesRéseau({f:r,profondeur:_,idCompteDébut:S}){const E=async x=>{x.push({de:this.client.idCompte,pour:this.client.idCompte,confiance:1,profondeur:0});const T={};x.forEach(I=>{Object.keys(T).includes(I.pour)||(T[I.pour]=[]),T[I.pour].push(I)});const C=Object.entries(T).map(([I,B])=>{const A=B.find(F=>F.de===this.client.idCompte);if(A?.confiance===1||A?.confiance===-1)return{idCompte:I,profondeur:A.pour===this.client.idCompte?0:1,confiance:A.confiance};const D=Math.min(...B.map(F=>F.profondeur)),N=B.filter(F=>F.confiance>=0),M=1-B.filter(F=>F.confiance<0).map(F=>1+F.confiance*Math.pow(FACTEUR_ATÉNUATION_BLOQUÉS,F.profondeur-1)).reduce((F,U)=>U*F,1),L=1-N.map(F=>1-F.confiance*Math.pow(FACTEUR_ATÉNUATION_CONFIANCE,F.profondeur-1)).reduce((F,U)=>U*F,1)-M;return{idCompte:I,profondeur:D,confiance:L}});return await r(C)};return await this.suivreRelationsConfiance({f:E,profondeur:_,idCompteDébut:S})}async suivreComptesRéseauEtEnLigne({f:r,profondeur:_,idCompteDébut:S}){const E={réseau:[],enLigne:[]},x=async()=>{const D=[...E.réseau];return E.enLigne.forEach(N=>{D.find(O=>O.idCompte===N.idCompte)||D.push(N)}),await r(D)},T=await this.suivreConnexionsMembres({f:async D=>{const N=D.filter(O=>O.infoMembre.idCompte!==this.client.idCompte).map(O=>({idCompte:O.infoMembre.idCompte,profondeur:1/0,confiance:0}));return E.enLigne=N,await x()}}),C=async D=>(E.réseau=D,await x()),{fOublier:I,fChangerProfondeur:B}=await this.suivreComptesRéseau({f:C,profondeur:_,idCompteDébut:S});return{fOublier:async()=>{await T(),await I()},fChangerProfondeur:B}}async suivreConfianceMonRéseauPourMembre({idCompte:r,f:_,profondeur:S,idCompteRéférence:E}){const x=E||await this.client.obtIdCompte(),T=async C=>{const I=C.find(B=>B.idCompte===r);return await _(I?.confiance||0)};return await this.suivreComptesRéseau({f:T,profondeur:S,idCompteDébut:x})}async suivreConnexionsPostesSFIP({f:r}){const _=async()=>{const{sfip:E}=await this.client.attendreSfipEtOrbite(),x=E.libp2p.getPeers(),T=E.libp2p.getConnections();return await r(x.map(C=>{const I=C.toString(),B=T.filter(A=>A.remotePeer.toString()===I).map(A=>A.remoteAddr.toString());return{pair:I,adresses:B}}))};return this.événements.on("changementConnexions",_),await _(),async()=>{this.événements.off("changementConnexions",_)}}async suivreConnexionsDispositifs({f:r}){const _={infoDispositif:{idSFIP:(await this.client.obtIdSFIP()).toString(),idDispositif:await this.client.obtIdDispositif(),idCompte:await this.client.obtIdCompte(),clefPublique:(await this.client.obtIdentitéOrbite()).publicKey,encryption:{type:await this.client.encryption.obtNom(),clefPublique:(await this.client.encryption.obtClefs()).publique},signatures:(await this.client.obtIdentitéOrbite()).signatures}},S=async()=>await r([...Object.values(this.dispositifsEnLigne),_]);return this.événements.on("membreVu",S),await S(),async()=>{this.événements.off("membreVu",S)}}async suivreConnexionsMembres({f:r}){return await suivreBdsDeFonctionListe({fListe:async E=>{const x=async T=>{const C={};for(const I of T){const{idCompte:B}=I.infoDispositif;C[B]||(C[B]={infoMembre:{idCompte:B,dispositifs:[]}});const{infoMembre:A,vuÀ:D}=C[B];A.dispositifs.push(I.infoDispositif),C[B].vuÀ=D?I.vuÀ?Math.max(D,I.vuÀ):D:I.vuÀ}return await E(Object.values(C))};return await this.suivreConnexionsDispositifs({f:x})},f:r,fBranche:async(E,x,T)=>await this.suivreProtocolesMembre({idCompte:E,f:C=>{x({infoMembre:{...T.infoMembre,protocoles:Object.values(C).flat()},vuÀ:T.vuÀ})}}),fIdBdDeBranche:E=>E.infoMembre.idCompte,fCode:E=>E.infoMembre.idCompte})}async suivreProtocolesMembre({f:r,idCompte:_}){return await this.client.suivreBdDicDeClef({id:_||await this.client.obtIdCompte(),clef:"protocoles",schéma:schémaStructureBdCompte,f:r})}async suivreProtocolesDispositif({idDispositif:r,f:_}){const S=r||await this.client.obtIdDispositif();return await suivreBdDeFonction({fRacine:async({fSuivreRacine:C})=>await this.suivreConnexionsDispositifs({f:async I=>{const B=I.find(A=>A.infoDispositif.idDispositif===S);if(B){const{idCompte:A}=B.infoDispositif;return await C(A)}else return await C(void 0)}}),f:async C=>{if(C)return await _(C[S])},fSuivre:async({id:C,fSuivreBd:I})=>await this.suivreProtocolesMembre({f:I,idCompte:C})})}async rechercher({f:r,nRésultatsDésirés:_=1/0,fRecherche:S,fConfiance:E,fQualité:x,fObjectif:T,fScore:C}){C||(C=ie=>(ie.confiance+ie.qualité+ie.objectif.score)/3),T=T||rechercherTous();const I={},B={},A=3e3;let D,N=3,O=!1;const M=async ie=>{N=ie,Q&&await Q(ie),D&&clearTimeout(D)},L=(ie=A)=>{if(O)return;D&&clearTimeout(D);const pe=Object.values(I).map(oe=>oe.résultats).flat().map(oe=>oe.résultatObjectif.score),ue=pe.length>=_?Math.min(...pe.slice(0,_)):0,W=Object.values(I).reduce(function(oe,ae){return oe[String(ae.membre.profondeur)]=oe[String(ae.membre.profondeur)]||[],oe[String(ae.membre.profondeur)].push(...ae.résultats),oe},{}),q=Object.entries(W).sort((oe,ae)=>Number(oe[0])oe[1]).map(oe=>oe.filter(ae=>ae.résultatObjectif.score>=ue).length),G=q.slice(q.length-3),ne=q.slice(q.length-4),ee=Math.max(3,sum$2(G)?N+1:sum$2(ne)?N:N-1);ee>N?D=setTimeout(()=>M(ee),ie):ee{const pe=Object.values(I).map(ue=>ue.résultats).flat().sort((ue,W)=>ue.résultatObjectif.score{const{idCompte:pe}=ie,ue=async G=>await S({idCompte:ie.idCompte,fSuivi:async ne=>await G(ne||[])}),W=async G=>(I[pe].résultats=G,await F()),Y=async(G,ne)=>{const ee={id:G},oe=async()=>{const{objectif:de,confiance:he,qualité:me}=ee;if(de&&he!==void 0&&me!==void 0){const Ee={id:G,résultatObjectif:{...de,score:C(ee)}};return await ne(Ee)}else return await ne(void 0)},ae=async de=>(ee.objectif=de,await oe()),se=await T(this.client,G,ae),X=await E(G,async de=>(ee.confiance=de,await oe())),le=await x(G,async de=>(ee.qualité=de,await oe()));return async()=>{await Promise.all([se(),X(),le()])}};I[pe]={résultats:[],membre:ie,mettreÀJour:F};const q=await suivreBdsDeFonctionListe({fListe:ue,f:W,fBranche:Y});B[pe]=q},j=async ie=>{await B[ie](),delete I[ie],delete B[ie],await F()},z=new s$2,H=async ie=>{await z.acquire("rechercher"),ie=ie.filter(Y=>Y.confiance>=0);const pe=ie.filter(Y=>!I[Y.idCompte]),ue=Object.keys(I).filter(Y=>!ie.find(q=>q.idCompte===Y)),W=ie.filter(Y=>{const q=I[Y.idCompte];return q&&(Y.confiance!==q.membre.confiance||Y.profondeur!==q.membre.profondeur)});await Promise.all(pe.map(U)),await Promise.all(W.map(async Y=>await I[Y.idCompte].mettreÀJour(Y))),await Promise.all(ue.map(Y=>j(Y))),z.release("rechercher")},{fChangerProfondeur:Q,fOublier:J}=await this.suivreComptesRéseauEtEnLigne({f:H,profondeur:N});return{fChangerN:async(ie=1/0)=>{const pe=_;_=ie,ie!==pe&&(await F(),L(0))},fOublier:async()=>{O=!0,D&&clearTimeout(D),await J(),await Promise.all(Object.values(B).map(ie=>ie()))}}}async rechercherMembres({f:r,nRésultatsDésirés:_,fObjectif:S}){const E=async(C,I)=>{const{fOublier:B}=await this.suivreConfianceMonRéseauPourMembre({idCompte:C,f:I,profondeur:4});return B},x=async({idCompte:C,fSuivi:I})=>(await I([C]),faisRien),T=async(C,I)=>await rechercherProfilsSelonActivité()(this.client,C,async A=>{await I(A?.score||0)});return await this.rechercher({f:r,nRésultatsDésirés:_,fRecherche:x,fConfiance:E,fQualité:T,fObjectif:S})}async suivreConfianceAuteurs({idItem:r,clef:_,f:S}){return await suivreBdsDeFonctionListe({fListe:async I=>await this.suivreAuteursObjet({idObjet:r,clef:_,f:async B=>{const A=B.filter(D=>D.accepté).map(D=>D.idCompte);return await I(A)}}),f:async I=>{const B=I.reduce((A,D)=>A+D,0);await S(B)},fBranche:async(I,B)=>{const{fOublier:A}=await this.suivreConfianceMonRéseauPourMembre({idCompte:I,f:B,profondeur:4});return A},fRéduction:I=>I.flat()})}async rechercherObjets({f:r,clef:_,nRésultatsDésirés:S,fRecherche:E,fRechercheLesMiens:x,fQualité:T,fObjectif:C,toutLeRéseau:I=!0}){if(!I){const D=C||rechercherTous();return await suivreBdsDeFonctionListe({fListe:async N=>({fOublier:await x(N),fChangerN:()=>Promise.resolve()}),f:r,fBranche:async(N,O)=>await D(this.client,N,async M=>{if(M)return await O({id:N,résultatObjectif:M})})})}const B=async({idCompte:D,fSuivi:N})=>{const O={propres:[],favoris:[]},M=async()=>{const U=[...new Set([...O.propres,...O.favoris])];await N(U)},L=await E({idCompte:D,f:async U=>{O.propres=U||[],await M()}}),F=await this.suivreFavorisMembre({idCompte:D,f:async U=>{O.favoris=U?U.map(j=>j.idObjet):[],await M()}});return async()=>{await L(),await F()}},A=async(D,N)=>await this.suivreConfianceAuteurs({idItem:D,clef:_,f:N});return await this.rechercher({f:r,nRésultatsDésirés:S,fRecherche:B,fConfiance:A,fQualité:T,fObjectif:C})}async rechercherNuées({f:r,nRésultatsDésirés:_,fObjectif:S,toutLeRéseau:E=!0}){const x=this.suivreNuéesMembre.bind(this),T=async(I,B)=>await this.client.nuées.suivreQualitéNuée({idNuée:I,f:B}),C=async I=>await this.client.nuées.suivreNuées({f:I});return await this.rechercherObjets({f:r,clef:"nuées",nRésultatsDésirés:_,fRecherche:x,fRechercheLesMiens:C,fQualité:T,fObjectif:S,toutLeRéseau:E})}async rechercherBds({f:r,nRésultatsDésirés:_,fObjectif:S,toutLeRéseau:E=!0}){const x=this.suivreBdsMembre.bind(this),T=async(I,B)=>{const A=async D=>await B(D.total);return await this.client.bds.suivreQualitéBd({idBd:I,f:A})},C=async I=>await this.client.bds.suivreBds({f:I});return await this.rechercherObjets({f:r,clef:"bds",nRésultatsDésirés:_,fRecherche:x,fRechercheLesMiens:C,fQualité:T,fObjectif:S,toutLeRéseau:E})}async rechercherVariables({f:r,nRésultatsDésirés:_,fObjectif:S,toutLeRéseau:E=!0}){const x=this.suivreVariablesMembre.bind(this),T=async(I,B)=>await this.client.variables.suivreQualitéVariable({idVariable:I,f:B}),C=async I=>await this.client.variables.suivreVariables({f:I});return await this.rechercherObjets({f:r,clef:"variables",nRésultatsDésirés:_,fRecherche:x,fRechercheLesMiens:C,fQualité:T,fObjectif:S,toutLeRéseau:E})}async rechercherMotsClefs({f:r,nRésultatsDésirés:_,fObjectif:S,toutLeRéseau:E=!0}){const x=this.suivreMotsClefsMembre.bind(this),T=async(I,B)=>await this.client.motsClefs.suivreQualitéMotClef({idMotClef:I,f:B}),C=async I=>await this.client.motsClefs.suivreMotsClefs({f:I});return await this.rechercherObjets({f:r,clef:"motsClefs",nRésultatsDésirés:_,fRecherche:x,fRechercheLesMiens:C,fQualité:T,fObjectif:S,toutLeRéseau:E})}async rechercherProjets({f:r,nRésultatsDésirés:_,fObjectif:S,toutLeRéseau:E=!0}){const x=this.suivreProjetsMembre.bind(this),T=async(I,B)=>await this.client.projets.suivreQualitéProjet({idProjet:I,f:B}),C=async I=>await this.client.projets.suivreProjets({f:I});return await this.rechercherObjets({f:r,clef:"projets",nRésultatsDésirés:_,fRecherche:x,fRechercheLesMiens:C,fQualité:T,fObjectif:S,toutLeRéseau:E})}async suivreAuteursObjet({idObjet:r,clef:_,f:S}){return await suivreBdsDeFonctionListe({fListe:async B=>await this.client.suivreAccèsBd({id:r,f:B}),f:S,fBranche:async(B,A,D)=>{const N=async M=>(M=M||[],A([{idCompte:D.idCompte,rôle:D.rôle,accepté:M.includes(r)}]));let O;switch(_){case"motsClefs":O=await this.client.motsClefs.suivreMotsClefs({f:N,idCompte:B});break;case"variables":O=await this.client.variables.suivreVariables({f:N,idCompte:B});break;case"bds":O=await this.client.bds.suivreBds({f:N,idCompte:B});break;case"nuées":O=await this.client.nuées.suivreNuées({f:N,idCompte:B});break;case"projets":O=await this.client.projets.suivreProjets({f:N,idCompte:B});break;default:throw new Error(_)}return O},fIdBdDeBranche:B=>B.idCompte,fCode:B=>B.idCompte})}async suivreAuteursMotClef({idMotClef:r,f:_}){return await this.suivreAuteursObjet({idObjet:r,clef:"motsClefs",f:_})}async suivreAuteursVariable({idVariable:r,f:_}){return await this.suivreAuteursObjet({idObjet:r,clef:"variables",f:_})}async suivreAuteursBd({idBd:r,f:_}){return await this.suivreAuteursObjet({idObjet:r,clef:"bds",f:_})}async suivreAuteursProjet({idProjet:r,f:_}){return await this.suivreAuteursObjet({idObjet:r,clef:"projets",f:_})}async suivreAuteursNuée({idNuée:r,f:_}){return await this.suivreAuteursObjet({idObjet:r,clef:"nuées",f:_})}async suivreObjetsMembre({idCompte:r,fListeObjets:_,fSuivi:S}){return await this.client.suivreBdsSelonCondition({fListe:_,fCondition:async(E,x)=>await this.client.suivreAccèsBd({id:E,f:T=>x(T.map(C=>C.idCompte).includes(r))}),f:S})}async suivreBdsMembre({idCompte:r,f:_}){return await this.suivreObjetsMembre({idCompte:r,fListeObjets:async S=>await this.client.bds.suivreBds({f:S,idCompte:r}),fSuivi:_})}async suivreProjetsMembre({idCompte:r,f:_}){return await this.suivreObjetsMembre({idCompte:r,fListeObjets:async S=>await this.client.projets.suivreProjets({f:S,idCompte:r}),fSuivi:_})}async suivreFavorisMembre({idCompte:r,f:_}){return await this.client.favoris.suivreFavoris({f:_,idCompte:r})}async suivreVariablesMembre({idCompte:r,f:_}){return await this.suivreObjetsMembre({idCompte:r,fListeObjets:async S=>await this.client.variables.suivreVariables({f:S,idCompte:r}),fSuivi:_})}async suivreMotsClefsMembre({idCompte:r,f:_}){return await this.suivreObjetsMembre({idCompte:r,fListeObjets:async S=>await this.client.motsClefs.suivreMotsClefs({f:S,idCompte:r}),fSuivi:_})}async suivreNuéesMembre({idCompte:r,f:_}){return await this.suivreObjetsMembre({idCompte:r,fListeObjets:async S=>await this.client.nuées.suivreNuées({f:S,idCompte:r}),fSuivi:_})}async suivreFavorisObjet({idObjet:r,f:_,profondeur:S}){const E=async C=>{const I=C.filter(B=>B.idObjet===r);await _(I)},x=async C=>{const I=async B=>await C([this.client.idCompte,...B.map(A=>A.idCompte)]);return await this.suivreComptesRéseauEtEnLigne({f:I,profondeur:S,idCompteDébut:this.client.idCompte})},T=async(C,I)=>await this.suivreFavorisMembre({idCompte:C,f:B=>I(B?B.map(A=>({idCompte:C,...A})):void 0)});return await this.client.suivreBdsDeFonctionRecherche({fListe:x,f:E,fBranche:T})}async suivreRéplications({idObjet:r,f:_,profondeur:S}){const E={connexionsMembres:[],connexionsDispositifs:[],favoris:[]},x=async()=>{const{connexionsMembres:F,favoris:U}=E,j=U.map(J=>J.favoris.idCompte),z=F.filter(J=>j.includes(J.infoMembre.idCompte)),H=(await Promise.all(U.map(async J=>{const{favoris:Z,dispositifs:re}=J;return await Promise.all(re.map(async ie=>{const pe=E.connexionsDispositifs.find(Y=>Y.infoDispositif.idDispositif===ie)?.vuÀ,ue=E.connexionsDispositifs.find(Y=>Y.infoDispositif.idDispositif===ie)?.infoDispositif.idCompte;return{idObjet:r,idDispositif:ie,idCompte:ue,bd:await this.client.favoris.estÉpingléSurDispositif({dispositifs:Z.dispositifs,idDispositif:ie}),fichiers:await this.client.favoris.estÉpingléSurDispositif({dispositifs:Z.dispositifsFichiers,idDispositif:ie}),récursif:Z.récursif,vuÀ:pe}}))}))).flat();return await _({membres:z,dispositifs:H})},T=await this.suivreConnexionsMembres({f:async F=>(E.connexionsMembres=F,await x())}),C=await this.suivreConnexionsDispositifs({f:async F=>(E.connexionsDispositifs=F,await x())}),I=async F=>(E.favoris=F,await x()),B=async F=>await this.suivreFavorisObjet({idObjet:r,f:F,profondeur:S}),A=async(F,U,j)=>{const z=async Q=>await U({favoris:j,dispositifs:Q}),H=await this.client.suivreDispositifs({f:z,idCompte:F});return async()=>{await H()}},D=F=>F.idCompte,N=F=>F.idCompte,{fOublier:O,fChangerProfondeur:M}=await this.client.suivreBdsDeFonctionRecherche({fListe:B,f:I,fBranche:A,fIdBdDeBranche:D,fCode:N});return{fOublier:async()=>{await O(),await T(),await C()},fChangerProfondeur:M}}async suivreBdsDeNuée({idNuée:r,f:_,nRésultatsDésirés:S}){const E=async(T,C)=>await this.client.bds.rechercherBdsParNuée({idNuée:r,f:C,idCompte:T}),x=async T=>await this.suivreComptesRéseauEtEnLigne({f:async C=>await T(C.map(I=>I.idCompte)),profondeur:S});return await this.client.suivreBdsDeFonctionRecherche({fListe:x,f:_,fBranche:E})}async suivreÉlémentsDeTableauxUniques({idNuéeUnique:r,clef:_,f:S,nBds:E=100}){const x=async B=>{const A=async N=>await this.suivreBdsDeNuée({idNuée:r,f:N,nRésultatsDésirés:E}),D=async(N,O)=>await this.suivreAuteursBd({idBd:N,f:async M=>{const L=M.find(U=>U.accepté)?.idCompte;return await O(L?{bd:N,idCompte:L}:void 0)}});return await this.client.suivreBdsDeFonctionRecherche({fListe:A,f:B,fBranche:D})},T=async(B,A,D)=>{const{idCompte:N}=D;return await suivreBdDeFonction({fRacine:async({fSuivreRacine:F})=>await this.client.bds.suivreIdTableauParClef({idBd:B,clef:_,f:U=>{U&&F(U)}}),f:async F=>await A(F||[]),fSuivre:async({id:F,fSuivreBd:U})=>{const j=async z=>{const H=z.map(Q=>({idCompte:N,élément:Q}));return await U(H)};return await this.client.tableaux.suivreDonnées({idTableau:F,f:j})}})},C=B=>B.bd,I=B=>B.bd;return await this.client.suivreBdsDeFonctionRecherche({fListe:x,f:S,fBranche:T,fIdBdDeBranche:C,fCode:I})}async fermer(){this._fermé=!0,await Promise.all(this.fsOublier.map(r=>r()))}}__decorate([cacheSuivi],Réseau.prototype,"suivreFiables",null);__decorate([cacheSuivi],Réseau.prototype,"suivreBloquésPubliques",null);__decorate([cacheSuivi],Réseau.prototype,"suivreBloqués",null);__decorate([cacheSuivi],Réseau.prototype,"suivreRelationsImmédiates",null);__decorate([cacheRechercheParProfondeur],Réseau.prototype,"suivreRelationsConfiance",null);__decorate([cacheRechercheParProfondeur],Réseau.prototype,"suivreComptesRéseau",null);__decorate([cacheSuivi],Réseau.prototype,"suivreConnexionsPostesSFIP",null);__decorate([cacheSuivi],Réseau.prototype,"suivreConnexionsDispositifs",null);__decorate([cacheSuivi],Réseau.prototype,"suivreConnexionsMembres",null);__decorate([cacheSuivi],Réseau.prototype,"suivreProtocolesMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreProtocolesDispositif",null);__decorate([cacheSuivi],Réseau.prototype,"suivreAuteursObjet",null);__decorate([cacheSuivi],Réseau.prototype,"suivreBdsMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreProjetsMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreFavorisMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreVariablesMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreMotsClefsMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreNuéesMembre",null);__decorate([cacheRechercheParNRésultats],Réseau.prototype,"suivreBdsDeNuée",null);const importationAuth=__vitePreload(()=>import("./index-DbeJlE6u.js"),__vite__mapDeps([0,1]),import.meta.url),importationCrypto=__vitePreload(()=>import("./index-Blps0pow.js").then(n=>n.y),[],import.meta.url),verrouImportation=new s$2;let auth;const obtAuth=async()=>(await verrouImportation.acquire("auth"),auth||(auth=await importationAuth),verrouImportation.release("auth"),auth);let crypto$1;const obtCrypto=async()=>(await verrouImportation.acquire("crypto"),crypto$1||(crypto$1=await importationCrypto),verrouImportation.release("crypto"),crypto$1);class EncryptionLocalFirst{événements;clefs;nom="local-first-auth";constructor(){this.événements=new EventEmitter$4,obtAuth().then(({asymmetric:r})=>{const{publicKey:_,secretKey:S}=r.keyPair();this.clefs={secrète:S,publique:_},this.événements.emit("clefs",this.clefs)})}async obtClefs(){return this.clefs||await new Promise(_=>{this.événements.once("clefs",_)})}async encrypter({message:r,clefPubliqueDestinataire:_}){const{asymmetric:S}=await obtAuth(),E=await this.obtClefs();return S.encrypt({secret:r,recipientPublicKey:_,senderSecretKey:E.secrète}).toString()}async décrypter({message:r,clefPubliqueExpéditeur:_}){const{asymmetric:S}=await obtAuth(),E=await this.obtClefs();return S.decrypt({cipher:r,recipientSecretKey:E.secrète,senderPublicKey:_})}async clefAléatoire(r=6){const{randomKey:_}=await obtCrypto();return _(r)}async obtNom(){return this.nom}}const schémaBdPrincipale$2={type:"object",additionalProperties:{type:"object",properties:{dispositifs:{anyOf:[{type:"array",items:{type:"string"}},{type:"string"}]},dispositifsFichiers:{type:["array","string"],anyOf:[{type:"array",items:{type:"string"},nullable:!0},{type:"string",nullable:!0}],nullable:!0},récursif:{type:"boolean"}},required:["dispositifs","récursif"]},required:[]};class Favoris extends ComposanteClientDic{_promesseInit;oublierÉpingler;constructor({client:r}){super({client:r,clef:"favoris",schémaBdPrincipale:schémaBdPrincipale$2}),this._promesseInit=this._épinglerFavoris()}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async _épinglerFavoris(){let r=[];const _=async E=>{const x=[];await Promise.all(Object.entries(E).map(async([C,I])=>{const B=await this.estÉpingléSurDispositif({dispositifs:I.dispositifs}),A=await this.estÉpingléSurDispositif({dispositifs:I.dispositifsFichiers});B&&await this.client.épingles.épinglerBd({id:C,récursif:I.récursif,fichiers:A}),x.push(C)}));const T=r.filter(C=>!x.includes(C));await Promise.all(T.map(async C=>await this.client.épingles.désépinglerBd({id:C}))),r=x},S=await this.suivreBdPrincipale({f:_});this.oublierÉpingler=S}async suivreFavoris({f:r,idCompte:_}){const S=async E=>{const x=Object.entries(E).map(([T,C])=>({idObjet:T,...C}));await r(x)};return await this.suivreBdPrincipale({idCompte:_,f:S})}async épinglerFavori({idObjet:r,dispositifs:_="TOUS",dispositifsFichiers:S="INSTALLÉ",récursif:E=!0}){const{bd:x,fOublier:T}=await this.obtBd(),C={récursif:E,dispositifs:_};S&&(C.dispositifsFichiers=S),await x.put(r,C),await T()}async désépinglerFavori({idObjet:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.del(r),await S()}async suivreÉtatFavori({idObjet:r,f:_}){return await this.suivreBdPrincipale({f:S=>_(S[r])})}async suivreEstÉpingléSurDispositif({idObjet:r,f:_,idDispositif:S}){const E=async x=>{const T=await this.estÉpingléSurDispositif({dispositifs:x?.dispositifs,idDispositif:S}),C=await this.estÉpingléSurDispositif({dispositifs:x?.dispositifsFichiers,idDispositif:S});return await _({idObjet:r,bd:T,fichiers:C,récursif:x?.récursif||!1})};return await this.suivreÉtatFavori({idObjet:r,f:E})}async estÉpingléSurDispositif({dispositifs:r,idDispositif:_}){return _=_||await this.client.obtIdDispositif(),r===void 0?!1:r==="TOUS"?!0:r==="INSTALLÉ"?_===await this.client.obtIdDispositif()?isNode||isElectronMain:!1:typeof r=="string"?r===_:r.includes(_)}async fermer(){await this._promesseInit,this.oublierÉpingler&&await this.oublierÉpingler()}}__decorate([cacheSuivi],Favoris.prototype,"suivreFavoris",null);__decorate([cacheSuivi],Favoris.prototype,"suivreÉtatFavori",null);__decorate([cacheSuivi],Favoris.prototype,"suivreEstÉpingléSurDispositif",null);const schémaStructureBdMotsClefsdeProjet={type:"string"},schémaStuctureBdsDeProjet={type:"string"},MAX_TAILLE_IMAGE$1=500*1e3,MAX_TAILLE_IMAGE_VIS$1=1500*1e3,schémaBdPrincipale$1={type:"string"},schémaStructureBdProjet={type:"object",properties:{type:{type:"string"},noms:{type:"string"},descriptions:{type:"string"},bds:{type:"string"},image:{type:"string",nullable:!0},motsClefs:{type:"string"},statut:{type:"object",properties:{statut:{type:"string"},idNouvelle:{type:"string",nullable:!0}},required:["statut"]},copiéDe:{type:"object",properties:{id:{type:"string"}},required:["id"]}},required:["noms","descriptions","statut","type","bds","copiéDe"]};class Projets extends ComposanteClientListe{constructor({client:r}){super({client:r,clef:"projets",schémaBdPrincipale:schémaBdPrincipale$1})}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async suivreProjets({f:r,idCompte:_}){return await this.suivreBdPrincipale({idCompte:_,f:r})}async créerProjet(){const{bd:r,fOublier:_}=await this.client.ouvrirBdTypée({id:await this.obtIdBd(),type:"set",schéma:schémaBdPrincipale$1}),S=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:{address:void 0,write:await this.client.obtIdCompte()}}),{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdProjet}),T=E.access;if(!estUnContrôleurConstellation(T))throw Error("Contrôleur de type non reconnu.");const C={address:T.address};await E.set("type","projet");const I=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:C});await E.set("noms",I);const B=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:C});await E.set("descriptions",B);const A=await this.client.créerBdIndépendante({type:"set",optionsAccès:C});await E.set("bds",A);const D=await this.client.créerBdIndépendante({type:"set",optionsAccès:C});return await E.set("motsClefs",D),await E.set("statut",{statut:"active"}),await r.add(S),await Promise.all([_(),x()]),S}async copierProjet({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet}),E=await this.créerProjet(),{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdProjet}),C=await _.get("noms");if(C){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:C,type:"keyvalue",schéma:schémaStructureBdNoms}),L=await O.allAsJSON();await M(),await this.sauvegarderNomsProjet({idProjet:E,noms:L})}const I=await _.get("descriptions");if(I){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:I,type:"keyvalue",schéma:schémaStructureBdNoms}),L=await O.allAsJSON();await M(),await this.sauvegarderDescriptionsProjet({idProjet:E,descriptions:L})}const B=await _.get("motsClefs");if(B){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:B,type:"set",schéma:schémaStructureBdMotsClefsdeProjet}),L=(await O.all()).map(F=>F.value);await M(),await this.ajouterMotsClefsProjet({idProjet:E,idsMotsClefs:L})}const A=await _.get("bds");if(A){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:A,type:"set",schéma:schémaStuctureBdsDeProjet}),L=(await O.all()).map(F=>F.value);await M(),await Promise.all(L.map(async F=>{await this.ajouterBdProjet({idProjet:E,idBd:F})}))}const D=await _.get("statut")||{statut:"active"};await x.set("statut",D);const N=await _.get("image");return N&&await x.set("image",N),await x.set("copiéDe",{id:r}),await Promise.all([S(),T()]),E}async ajouterÀMesProjets({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:await this.obtIdBd(),type:"set",schéma:schémaBdPrincipale$1});await _.add(r),await S()}async enleverDeMesProjets({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:await this.obtIdBd(),type:"set",schéma:schémaBdPrincipale$1});await _.del(r),await S()}async inviterAuteur({idProjet:r,idCompteAuteur:_,rôle:S}){await this.client.donnerAccès({idBd:r,identité:_,rôle:S})}async _obtBdNoms({idProjet:r}){const _=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!_)throw new Error(`Permission de modification refusée pour Projet ${r}.`);return await this.client.ouvrirBdTypée({id:_,type:"keyvalue",schéma:schémaStructureBdNoms})}async sauvegarderNomsProjet({idProjet:r,noms:_}){const{bd:S,fOublier:E}=await this._obtBdNoms({idProjet:r});for(const x in _)await S.set(x,_[x]);await E()}async sauvegarderNomProjet({idProjet:r,langue:_,nom:S}){const{bd:E,fOublier:x}=await this._obtBdNoms({idProjet:r});await E.set(_,S),await x()}async effacerNomProjet({idProjet:r,langue:_}){const{bd:S,fOublier:E}=await this._obtBdNoms({idProjet:r});await S.del(_),await E()}async _obtBdDescr({idProjet:r}){const _=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!_)throw new Error(`Permission de modification refusée pour Projet ${r}.`);return await this.client.ouvrirBdTypée({id:_,type:"keyvalue",schéma:schémaStructureBdNoms})}async sauvegarderDescriptionsProjet({idProjet:r,descriptions:_}){const{bd:S,fOublier:E}=await this._obtBdDescr({idProjet:r});for(const x in _)await S.set(x,_[x]);await E()}async sauvegarderDescriptionProjet({idProjet:r,langue:_,description:S}){const{bd:E,fOublier:x}=await this._obtBdDescr({idProjet:r});await E.set(_,S),await x()}async effacerDescriptionProjet({idProjet:r,langue:_}){const{bd:S,fOublier:E}=await this._obtBdDescr({idProjet:r});await S.del(_),await E()}async _obtBdMotsClefs({idProjet:r}){const _=await this.client.obtIdBd({nom:"motsClefs",racine:r,type:"set"});if(!_)throw new Error(`Permission de modification refusée pour projet ${r}.`);return await this.client.ouvrirBdTypée({id:_,type:"set",schéma:schémaStructureBdMotsClefsdeProjet})}async ajouterMotsClefsProjet({idProjet:r,idsMotsClefs:_}){Array.isArray(_)||(_=[_]);const{bd:S,fOublier:E}=await this._obtBdMotsClefs({idProjet:r});await Promise.all(_.map(async x=>{(await S.all()).map(C=>C.value).includes(x)||await S.add(x)})),await E()}async effacerMotClefProjet({idProjet:r,idMotClef:_}){const{bd:S,fOublier:E}=await this._obtBdMotsClefs({idProjet:r});await S.del(_),await E()}async _obtBdBds({idProjet:r}){const _=await this.client.obtIdBd({nom:"bds",racine:r,type:"set"});if(!_)throw new Error(`Permission de modification refusée pour Projet ${r}.`);return await this.client.ouvrirBdTypée({id:_,type:"set",schéma:schémaStructureBdMotsClefsdeProjet})}async ajouterBdProjet({idProjet:r,idBd:_}){const{bd:S,fOublier:E}=await this._obtBdBds({idProjet:r});await S.add(_),await E()}async effacerBdProjet({idProjet:r,idBd:_}){const{bd:S,fOublier:E}=await this._obtBdBds({idProjet:r});await S.del(_),await E()}async marquerObsolète({idProjet:r,idNouvelle:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});S.set("statut",{statut:"obsolète",idNouvelle:_}),await E()}async changerStatutProjet({idProjet:r,statut:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});S.set("statut",_),await E()}async marquerActif({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});_.set("statut",{statut:"active"}),await S()}async marquerJouet({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});_.set("statut",{statut:"jouet"}),await S()}async marquerInterne({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});_.set("statut",{statut:"interne"}),await S()}async sauvegarderImage({idProjet:r,image:_}){if(_.contenu.byteLength>MAX_TAILLE_IMAGE$1)throw new Error("Taille maximale excédée");const S=await this.client.ajouterÀSFIP(_),{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});await E.set("image",S),await x()}async effacerImage({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});await _.del("image"),await S()}async suivreImage({idProjet:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdProjet,f:async S=>{const E=await S.get("image");if(E){const x=await this.client.obtFichierSFIP({id:E,max:MAX_TAILLE_IMAGE_VIS$1});return await _(x)}else return await _(null)}})}async suivreNomsProjet({idProjet:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"noms",schéma:schémaStructureBdNoms,f:_})}async suivreDescriptionsProjet({idProjet:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"descriptions",schéma:schémaStructureBdNoms,f:_})}async suivreMotsClefsProjet({idProjet:r,f:_}){const S={},E=async()=>{if(S.propres&&S.bds){const D=[...S.propres.map(N=>({idMotClef:N,source:"projet"})),...S.bds.map(N=>({idMotClef:N,source:"bds"}))];return await _(D)}},x=async D=>(S.propres=D,await E()),T=await this.client.suivreBdListeDeClef({id:r,clef:"motsClefs",schéma:{type:"string"},f:x}),A=await suivreBdsDeFonctionListe({fListe:async D=>await this.suivreBdsProjet({idProjet:r,f:D}),f:async D=>(S.bds=D,await E()),fBranche:async(D,N)=>await this.client.bds.suivreMotsClefsBd({idBd:D,f:N})});return async()=>{await T(),await A()}}async suivreBdsProjet({idProjet:r,f:_}){return await this.client.suivreBdListeDeClef({id:r,clef:"bds",schéma:{type:"string"},f:_})}async suivreVariablesProjet({idProjet:r,f:_}){const S=async T=>await _(T||[]),E=async(T,C)=>await this.client.bds.suivreVariablesBd({idBd:T,f:C}),x=async({id:T,fSuivreBd:C})=>await this.client.suivreBdsDeBdListe({id:T,f:C,fBranche:E});return await this.client.suivreBdDeClef({id:r,clef:"bds",f:S,fSuivre:x})}async suivreQualitéProjet({idProjet:r,f:_}){return await suivreBdsDeFonctionListe({fListe:async C=>await this.suivreBdsProjet({idProjet:r,f:C}),f:async C=>await _(C.length?C.reduce((I,B)=>I+B,0)/C.length:0),fBranche:async(C,I)=>await this.client.bds.suivreQualitéBd({idBd:C,f:B=>I(B.total)}),fRéduction:C=>C.flat()})}async suivreDonnéesExportation({idProjet:r,langues:_,f:S}){const E={},x=[],T=async()=>{const{nomsProjet:I,données:B}=E;if(!B)return;const A=r.split("/").pop(),D=I&&_&&traduire(I,_)||A;return await S({nomProjet:D,bds:B})},C=await suivreBdsDeFonctionListe({fListe:async I=>await this.suivreBdsProjet({idProjet:r,f:I}),f:async I=>{E.données=I,await T()},fBranche:async(I,B)=>await this.client.bds.suivreDonnéesExportation({idBd:I,langues:_,f:B})});if(x.push(C),_){const I=await this.suivreNomsProjet({idProjet:r,f:async B=>{E.nomsProjet=B,await T()}});x.push(I)}return async()=>{await Promise.all(x.map(I=>I()))}}async exporterDonnées({idProjet:r,langues:_,nomFichier:S,patience:E=500}){const x=await uneFois(async C=>await this.suivreDonnéesExportation({idProjet:r,langues:_,f:C}),attendreStabilité(E));S=S||x.nomProjet;const T=new Set;return x.bds.forEach(C=>{C.tableaux.forEach(I=>I.fichiersSFIP.forEach(B=>T.add(B)))}),{docs:x.bds.map(C=>{const I=utils$2.book_new();for(const B of C.tableaux){const A=utils$2.json_to_sheet(B.données);utils$2.book_append_sheet(I,A,B.nomTableau.slice(0,30))}return{doc:I,nom:C.nomBd}}),fichiersSFIP:T,nomFichier:S}}async exporterDocumentDonnées({données:r,formatDoc:_,dossier:S="",inclureFichiersSFIP:E=!0}){const{docs:x,fichiersSFIP:T,nomFichier:C}=r,B={xls:"biff8"}[_]||_,A=x.map(N=>({nom:`${N.nom}.${_}`,octets:writeSync(N.doc,{bookType:B,type:"buffer"})})),D=E?await Promise.all([...T].map(async N=>({nom:N.replace("/","-"),octets:await toBuffer(await this.client.obtItérableAsyncSFIP({id:N}))}))):[];await zipper(A,D,path.join(S,C))}async effacerProjet({idProjet:r}){await this.enleverDeMesProjets({idProjet:r});for(const _ of["noms","descriptions","motsClefs","bds"]){const S=await this.client.obtIdBd({nom:_,racine:r});S&&await this.client.effacerBd({id:S})}await this.client.effacerBd({id:r})}}__decorate([cacheSuivi],Projets.prototype,"suivreProjets",null);__decorate([cacheSuivi],Projets.prototype,"suivreImage",null);__decorate([cacheSuivi],Projets.prototype,"suivreNomsProjet",null);__decorate([cacheSuivi],Projets.prototype,"suivreDescriptionsProjet",null);__decorate([cacheSuivi],Projets.prototype,"suivreMotsClefsProjet",null);__decorate([cacheSuivi],Projets.prototype,"suivreBdsProjet",null);__decorate([cacheSuivi],Projets.prototype,"suivreVariablesProjet",null);__decorate([cacheSuivi],Projets.prototype,"suivreQualitéProjet",null);const schémaBdPrincipale={type:"string"},schémaBdMotClef={type:"object",properties:{type:{type:"string",nullable:!0},noms:{type:"string",nullable:!0},descriptions:{type:"string",nullable:!0}},required:[]};class MotsClefs extends ComposanteClientListe{constructor({client:r}){super({client:r,clef:"motsClefs",schémaBdPrincipale})}async épingler(){const r=await this.obtIdBd();await this.client.épingles.épinglerBd({id:r,récursif:!1,fichiers:!1})}async suivreMotsClefs({f:r,idCompte:_}){return await this.suivreBdPrincipale({idCompte:_,f:r})}async créerMotClef(){const r=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:{address:void 0,write:await this.client.obtIdCompte()}});await this.ajouterÀMesMotsClefs({idMotClef:r});const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaBdMotClef}),x={address:_.access.address};await _.set("type","motClef");const T=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:x});await _.set("noms",T);const C=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:x});return await _.set("descriptions",C),await S(),r}async ajouterÀMesMotsClefs({idMotClef:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.add(r),await S()}async enleverDeMesMotsClefs({idMotClef:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.del(r),await S()}async copierMotClef({idMotClef:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaBdMotClef}),E=await this.créerMotClef(),x=await _.get("noms");if(x){const{bd:C,fOublier:I}=await this.client.ouvrirBdTypée({id:x,type:"keyvalue",schéma:schémaStructureBdNoms}),B=await C.allAsJSON();await this.sauvegarderNomsMotClef({idMotClef:E,noms:B}),await I()}const T=await _.get("descriptions");if(T){const{bd:C,fOublier:I}=await this.client.ouvrirBdTypée({id:T,type:"keyvalue",schéma:schémaStructureBdNoms}),B=await C.allAsJSON();await this.sauvegarderDescriptionsMotClef({idMotClef:E,descriptions:B}),await I()}return await S(),E}async inviterAuteur({idMotClef:r,idCompteAuteur:_,rôle:S}){await this.client.donnerAccès({idBd:r,identité:_,rôle:S})}async sauvegarderNomsMotClef({idMotClef:r,noms:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderNomMotClef({idMotClef:r,langue:_,nom:S}){const E=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerNomMotClef({idMotClef:r,langue:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async suivreNomsMotClef({idMotClef:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"noms",schéma:schémaStructureBdNoms,f:_})}async sauvegarderDescriptionsMotClef({idMotClef:r,descriptions:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderDescriptionMotClef({idMotClef:r,langue:_,description:S}){const E=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerDescriptionMotClef({id:r,langue:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async suivreDescriptionsMotClef({idMotClef:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"descriptions",schéma:schémaStructureBdNoms,f:_})}async effacerMotClef({idMotClef:r}){await this.enleverDeMesMotsClefs({idMotClef:r});for(const _ of["noms"]){const S=await this.client.obtIdBd({nom:_,racine:r});S&&await this.client.effacerBd({id:S})}await this.client.effacerBd({id:r})}async suivreQualitéMotClef({idMotClef:r,f:_}){return await this.suivreNomsMotClef({idMotClef:r,f:S=>_(Object.keys(S).length?1:0)})}}__decorate([cacheSuivi],MotsClefs.prototype,"suivreMotsClefs",null);__decorate([cacheSuivi],MotsClefs.prototype,"suivreNomsMotClef",null);__decorate([cacheSuivi],MotsClefs.prototype,"suivreDescriptionsMotClef",null);__decorate([cacheSuivi],MotsClefs.prototype,"suivreQualitéMotClef",null);const MAX_TAILLE_IMAGE=500*1e3,MAX_TAILLE_IMAGE_VIS=1500*1e3,schémaBdAutorisations={type:"object",additionalProperties:{type:"string"},required:[]},schémaStructureBdNuée={type:"object",properties:{type:{type:"string",nullable:!0},métadonnées:{type:"string",nullable:!0},noms:{type:"string",nullable:!0},descriptions:{type:"string",nullable:!0},motsClefs:{type:"string",nullable:!0},image:{type:"string",nullable:!0},tableaux:{type:"string",nullable:!0},autorisation:{type:"string",nullable:!0},statut:{type:"object",properties:{idNouvelle:{type:"string",nullable:!0},statut:{type:"string",nullable:!0}},required:[],nullable:!0},parent:{type:"string",nullable:!0},copiéDe:{type:"string",nullable:!0}},required:[]},schémaStructureBdAuthorisation={type:"object",properties:{philosophie:{type:"string",nullable:!0},membres:{type:"string",nullable:!0}},required:[]},schémaBdMotsClefsNuée={type:"string"};class Nuées extends ComposanteClientListe{constructor({client:r}){super({client:r,clef:"nuées",schémaBdPrincipale:{type:"string"}})}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async créerNuée({nuéeParent:r,autorisation:_="IJPC",ajouter:S=!0}={}){const E=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:{address:void 0,write:await this.client.obtIdCompte()}});S&&await this.ajouterÀMesNuées({idNuée:E});const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNuée}),I={address:x.access.address};await x.set("type","nuée");let B;if(isValidAddress(_))B=_;else if(_==="CJPI"||_==="IJPC")B=await this.générerGestionnaireAutorisations({philosophie:_});else throw new Error(`Autorisation non valide : ${_}`);await x.set("autorisation",B),_==="CJPI"&&await this.accepterMembreNuée({idNuée:E,idCompte:await this.client.obtIdCompte()});const A=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:I});await x.set("noms",A);const D=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:I});await x.set("descriptions",D);const N=await this.client.créerBdIndépendante({type:"ordered-keyvalue",optionsAccès:I});await x.set("tableaux",N);const O=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:I});await x.set("métadonnées",O);const M=await this.client.créerBdIndépendante({type:"set",optionsAccès:I});return await x.set("motsClefs",M),await x.set("statut",{statut:"active"}),r&&await x.set("parent",r),T(),E}async ajouterÀMesNuées({idNuée:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.add(r),await S()}async enleverDeMesNuées({idNuée:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.del(r),await S()}async copierNuée({idNuée:r,ajouterÀMesNuées:_=!0}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée}),x=await S.get("parent"),T=await this.créerNuée({nuéeParent:x,ajouter:_}),{bd:C,fOublier:I}=await this.client.ouvrirBdTypée({id:T,type:"keyvalue",schéma:schémaStructureBdNuée}),B=await S.get("métadonnées");if(B){const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:B,type:"keyvalue",schéma:schémaStructureBdNoms}),z=await U.allAsJSON();await j(),await this.sauvegarderMétadonnéesNuée({idNuée:T,métadonnées:z})}const A=await S.get("noms");if(A){const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:A,type:"keyvalue",schéma:schémaStructureBdNoms}),z=await U.allAsJSON();await j(),await this.sauvegarderNomsNuée({idNuée:T,noms:z})}const D=await S.get("descriptions");if(D){const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:D,type:"keyvalue",schéma:schémaStructureBdNoms}),z=await U.allAsJSON();await j(),await this.sauvegarderDescriptionsNuée({idNuée:T,descriptions:z})}const N=await S.get("motsClefs");if(N){const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:N,type:"set",schéma:schémaBdMotsClefsNuée}),z=(await U.all()).map(H=>H.value);await j(),await this.ajouterMotsClefsNuée({idNuée:T,idsMotsClefs:z})}const O=await S.get("tableaux"),M=await C.get("tableaux");if(!M)throw new Error("Erreur initialisation.");if(O){const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:M,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd}),{bd:z,fOublier:H}=await this.client.ouvrirBdTypée({id:O,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd}),Q=await z.all();await H();for(const J of Q){const Z=await this.client.tableaux.copierTableau({id:J.key,idBd:T,copierDonnées:!1});await U.set(Z,J.value)}await j()}const L=await S.get("statut")||{statut:"active"};await C.set("statut",L);const F=await S.get("image");return F&&await C.set("image",F),await C.set("copiéDe",r),await Promise.all([E(),I()]),T}async suivreNuées({f:r,idCompte:_}){return await this.suivreBdPrincipale({f:r,idCompte:_})}async suivreDeParents({idNuée:r,f:_,fParents:S}){return await suivreBdsDeFonctionListe({fListe:async E=>await this.suivreNuéesParents({idNuée:r,f:x=>E([r,...x].reverse())}),f:_,fBranche:S,fRéduction:E=>E})}async sauvegarderMétadonnéeNuée({idNuée:r,clef:_,valeur:S}){const E=await this.client.obtIdBd({nom:"métadonnées",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdMétadonnées});await x.set(_,S),await T()}async sauvegarderMétadonnéesNuée({idNuée:r,métadonnées:_}){const S=await this.client.obtIdBd({nom:"métadonnées",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdMétadonnées});for(const T in _)await E.set(T,_[T]);await x()}async effacerMétadonnéeNuée({idNuée:r,clef:_}){const S=await this.client.obtIdBd({nom:"métadonnées",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdMétadonnées});await E.del(_),await x()}async suivreMétadonnéesNuée({idNuée:r,f:_,hériter:S=!0}){if(S){const E=async x=>{await _(Object.assign({},...x))};return await this.suivreDeParents({idNuée:r,f:E,fParents:async(x,T)=>await this.client.suivreBdDicDeClef({id:x,clef:"métadonnées",schéma:schémaStructureBdMétadonnées,f:T})})}else return await this.client.suivreBdDicDeClef({id:r,clef:"métadonnées",schéma:schémaStructureBdMétadonnées,f:_})}async sauvegarderNomNuée({idNuée:r,langue:_,nom:S}){const E=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async sauvegarderNomsNuée({idNuée:r,noms:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async effacerNomNuée({idNuée:r,langue:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async suivreNomsNuée({idNuée:r,f:_}){const S=async E=>{await _(Object.assign({},...E))};return await this.suivreDeParents({idNuée:r,f:S,fParents:async(E,x)=>await this.client.suivreBdDicDeClef({id:E,clef:"noms",schéma:schémaStructureBdNoms,f:x})})}async sauvegarderDescriptionNuée({idNuée:r,langue:_,description:S}){const E=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async sauvegarderDescriptionsNuée({idNuée:r,descriptions:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async effacerDescriptionNuée({idNuée:r,langue:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async suivreDescriptionsNuée({idNuée:r,f:_}){const S=async E=>{await _(Object.assign({},...E))};return await this.suivreDeParents({idNuée:r,f:S,fParents:async(E,x)=>await this.client.suivreBdDicDeClef({id:E,clef:"descriptions",schéma:schémaStructureBdNoms,f:x})})}async sauvegarderImage({idNuée:r,image:_}){if(_.contenu.byteLength>MAX_TAILLE_IMAGE)throw new Error("Taille maximale excédée");const S=await this.client.ajouterÀSFIP(_),{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});await E.set("image",S),await x()}async effacerImage({idNuée:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});await _.del("image"),await S()}async suivreImage({idNuée:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdNuée,f:async S=>{const E=await S.get("image");if(!E)await _(null);else{const x=await this.client.obtFichierSFIP({id:E,max:MAX_TAILLE_IMAGE_VIS});await _(x)}}})}async ajouterMotsClefsNuée({idNuée:r,idsMotsClefs:_}){Array.isArray(_)||(_=[_]);const S=await this.client.obtIdBd({nom:"motsClefs",racine:r,type:"set"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"set",schéma:schémaBdMotsClefsNuée});for(const T of _)(await E.all()).map(I=>I.value).includes(T)||await E.add(T);await x()}async effacerMotClefNuée({idNuée:r,idMotClef:_}){const S=await this.client.obtIdBd({nom:"motsClefs",racine:r,type:"set"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"set",schéma:schémaBdMotsClefsNuée});await E.del(_),await x()}async suivreMotsClefsNuée({idNuée:r,f:_}){const S=async E=>{await _([...new Set(E.flat())])};return await this.suivreDeParents({idNuée:r,f:S,fParents:async(E,x)=>await this.client.suivreBdListeDeClef({id:E,clef:"motsClefs",schéma:{type:"string"},f:x})})}async changerStatutNuée({idNuée:r,statut:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});S.set("statut",_),await E()}async suivreStatutNuée({idNuée:r,f:_}){return await this.client.suivreBdDic({id:r,f:async S=>{if(S.statut)return await _(S.statut)},schéma:schémaStructureBdNuée})}async marquerObsolète({idNuée:r,idNouvelle:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});S.set("statut",{statut:"obsolète",idNouvelle:_}),await E()}async marquerActive({idNuée:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});_.set("statut",{statut:"active"}),await S()}async marquerJouet({idNuée:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});_.set("statut",{statut:"jouet"}),await S()}async marquerInterne({idNuée:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});_.set("statut",{statut:"interne"}),await S()}async inviterAuteur({idNuée:r,idCompteAuteur:_,rôle:S}){await this.client.donnerAccès({idBd:r,identité:_,rôle:S})}async générerGestionnaireAutorisations({philosophie:r="IJPC"}){const _=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:{write:await this.client.obtIdCompte()}}),{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:_,type:"keyvalue",schéma:schémaStructureBdAuthorisation});await S.set("philosophie",r);const T={address:S.access.address},C=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:T});return await S.set("membres",C),E(),_}async changerPhisolophieAutorisation({idAutorisation:r,philosophie:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdAuthorisation});await S.set("philosophie",_),E()}async suivrePhilosophieAutorisation({idNuée:r,f:_}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:T})=>await this.suivreGestionnaireAutorisations({idNuée:r,f:T}),f:async T=>{if(!T)return;const C=await T.get("philosophie");C&&["IJPC","CJPI"].includes(C)&&await _(C)},fSuivre:async({id:T,fSuivreBd:C})=>await this.client.suivreBd({id:T,type:"keyvalue",schéma:schémaStructureBdAuthorisation,f:C})})}async accepterMembreAutorisation({idAutorisation:r,idCompte:_}){const S=await this.client.obtIdBd({nom:"membres",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour groupe d'autorisation ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdAutorisations});await E.set(_,"accepté"),x()}async accepterMembreNuée({idNuée:r,idCompte:_}){const S=await this.obtGestionnaireAutorisationsDeNuée({idNuée:r});return await this.accepterMembreAutorisation({idAutorisation:S,idCompte:_})}async exclureMembreAutorisation({idAutorisation:r,idCompte:_}){const S=await this.client.obtIdBd({nom:"membres",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour groupe d'autorisation ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdAutorisations});await E.set(_,"exclus"),x()}async exclureMembreDeNuée({idNuée:r,idCompte:_}){const S=await this.obtGestionnaireAutorisationsDeNuée({idNuée:r});return await this.exclureMembreAutorisation({idAutorisation:S,idCompte:_})}async suivreGestionnaireAutorisations({idNuée:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdNuée,f:async S=>{const E=await S.get("autorisation");await _(E)}})}async changerGestionnaireAutorisations({idNuée:r,idAutorisation:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});await S.set("autorisation",_),E()}async obtGestionnaireAutorisationsDeNuée({idNuée:r}){return await uneFois(async _=>await this.suivreGestionnaireAutorisations({idNuée:r,f:ignorerNonDéfinis(_)}))}async suivreAutorisationsMembresDeGestionnaire({idAutorisation:r,f:_}){const S=async E=>{const x=Object.entries(E).map(([T,C])=>({idCompte:T,statut:C}));await _(x)};return await this.client.suivreBdDicDeClef({id:r,clef:"membres",schéma:schémaBdAutorisations,f:S})}async suivreAutorisationsMembresDeNuée({idNuée:r,f:_}){const S=async({fSuivreRacine:x})=>await this.suivreGestionnaireAutorisations({idNuée:r,f:x}),E=async({id:x,fSuivreBd:T})=>await this.suivreAutorisationsMembresDeGestionnaire({idAutorisation:x,f:T});return await suivreBdDeFonction({fRacine:S,f:ignorerNonDéfinis(_),fSuivre:E})}async ajouterTableauNuée({idNuée:r,clefTableau:_}){const S=await this.client.obtIdBd({nom:"tableaux",racine:r,type:"ordered-keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd});_=_||v4$1();const T=await this.client.tableaux.créerTableau({idBd:r});return await E.set(T,{clef:_}),await x(),T}async effacerTableauNuée({idNuée:r,idTableau:_}){const S=await this.client.obtIdBd({nom:"tableaux",racine:r,type:"ordered-keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd});await E.del(_),await x(),await this.client.tableaux.effacerTableau({idTableau:_})}async suivreTableauxNuée({idNuée:r,f:_}){const S=async x=>{await _(x.flat())},E=async(x,T)=>{const C=I=>{const B=I.map(A=>({id:A.key,...A.value}));T(B)};return await this.client.suivreBdDicOrdonnéeDeClef({id:x,clef:"tableaux",schéma:schémaBdTableauxDeBd,f:C})};return await this.suivreDeParents({idNuée:r,f:S,fParents:E})}async ajouterNomsTableauNuée({idTableau:r,noms:_}){return await this.client.tableaux.sauvegarderNomsTableau({idTableau:r,noms:_})}async effacerNomsTableauNuée({idTableau:r,langue:_}){return await this.client.tableaux.effacerNomTableau({idTableau:r,langue:_})}async suivreNomsTableauNuée({idNuée:r,clefTableau:_,f:S}){const E=async T=>{await S(Object.assign({},...T))},x=async(T,C)=>await suivreBdDeFonction({fRacine:async({fSuivreRacine:I})=>await this.client.bds.suivreIdTableauParClef({idBd:T,clef:_,f:I}),f:ignorerNonDéfinis(C),fSuivre:async({id:I,fSuivreBd:B})=>await this.client.tableaux.suivreNomsTableau({idTableau:I,f:B})});return await this.suivreDeParents({idNuée:r,f:E,fParents:x})}async ajouterColonneTableauNuée({idTableau:r,idVariable:_,idColonne:S,index:E}){const x=await this.client.tableaux.ajouterColonneTableau({idTableau:r,idVariable:_,idColonne:S});return E&&await this.changerColIndexTableauNuée({idTableau:r,idColonne:x,val:!0}),x}async effacerColonneTableauNuée({idTableau:r,idColonne:_}){return await this.client.tableaux.effacerColonneTableau({idTableau:r,idColonne:_})}async changerColIndexTableauNuée({idTableau:r,idColonne:_,val:S}){return await this.client.tableaux.changerColIndex({idTableau:r,idColonne:_,val:S})}async suivreColonnesTableauNuée({idNuée:r,clefTableau:_,f:S,catégories:E=!0}){const x=async C=>{await S(C.flat())},T=async(C,I)=>await suivreBdDeFonction({fRacine:async({fSuivreRacine:B})=>await this.client.bds.suivreIdTableauParClef({idBd:C,clef:_,f:B}),f:ignorerNonDéfinis(I),fSuivre:async({id:B,fSuivreBd:A})=>await this.client.tableaux.suivreColonnesTableau({idTableau:B,f:A,catégories:E})});return await this.suivreDeParents({idNuée:r,f:x,fParents:T})}async ajouterRègleTableauNuée({idTableau:r,idColonne:_,règle:S}){return await this.client.tableaux.ajouterRègleTableau({idTableau:r,idColonne:_,règle:S})}async effacerRègleTableauNuée({idTableau:r,idRègle:_}){return await this.client.tableaux.effacerRègleTableau({idTableau:r,idRègle:_})}async suivreRèglesTableauNuée({idNuée:r,clefTableau:_,f:S}){const E=async T=>{await S(T.flat())},x=async(T,C)=>await suivreBdDeFonction({fRacine:async({fSuivreRacine:I})=>await this.client.bds.suivreIdTableauParClef({idBd:T,clef:_,f:I}),f:ignorerNonDéfinis(C),fSuivre:async({id:I,fSuivreBd:B})=>await this.client.tableaux.suivreRègles({idTableau:I,f:B})});return await this.suivreDeParents({idNuée:r,f:E,fParents:x})}async suivreVariablesNuée({idNuée:r,f:_}){return await suivreBdsDeFonctionListe({fListe:async T=>await this.suivreTableauxNuée({idNuée:r,f:C=>T(C.map(I=>I.id))}),f:async T=>await _(T||[]),fBranche:async(T,C)=>await this.client.tableaux.suivreVariables({idTableau:T,f:C})})}async suivreQualitéNuée({idNuée:r,f:_}){const S={noms:{},descr:{}},E=async()=>{const I=[Object.keys(S.noms).length?1:0,Object.keys(S.descr).length?1:0],B=I.reduce((A,D)=>A+D,0)/I.length;await _(B)},x=await this.suivreNomsNuée({idNuée:r,f:I=>{S.noms=I,E()}}),T=await this.suivreDescriptionsNuée({idNuée:r,f:I=>{S.descr=I,E()}});return async()=>{await x(),await T()}}async suivreDifférencesNuéeEtTableau({idNuée:r,clefTableau:_,idTableau:S,f:E,stricte:x=!0}){const T=async B=>{const A=B.filter(D=>x||D.sévère);await E(A)},C=async({fSuivreRacine:B})=>await this.client.bds.suivreIdTableauParClef({idBd:r,clef:_,f:B}),I=async({id:B,fSuivreBd:A})=>await this.client.tableaux.suivreDifférencesAvecTableau({idTableau:S,idTableauRéf:B,f:A});return await suivreBdDeFonction({fRacine:C,f:ignorerNonDéfinis(T),fSuivre:I})}async suivreDifférencesNuéeEtBd({idNuée:r,idBd:_,f:S}){const E={},x=async()=>{const I=[];if(E.tableauxNuée&&E.tableauxBd){for(const B of E.tableauxNuée)if(!E.tableauxNuée.find(D=>D.clef===B.clef)){const D={type:"tableauManquant",sévère:!0,clefManquante:B.clef};I.push(D)}for(const B of E.tableauxBd)if(!E.tableauxNuée.find(D=>D.clef===B.clef)){const D={type:"tableauSupplémentaire",sévère:!1,clefExtra:B.clef};I.push(D)}}await S(I)},T=await this.client.bds.suivreTableauxBd({idBd:_,f:I=>{E.tableauxBd=I,x()}}),C=await this.suivreTableauxNuée({idNuée:r,f:I=>{E.tableauxNuée=I,x()}});return async()=>{await T(),await C()}}async suivreCorrespondanceBd({idBd:r,f:_}){return await suivreBdsDeFonctionListe({fListe:async x=>await this.client.bds.suivreNuéesBd({idBd:r,f:x}),f:_,fBranche:async(x,T)=>{const C={différencesBds:[],différencesTableaux:[]},I=async()=>{T([...C.différencesBds,...C.différencesTableaux])},B=await this.suivreDifférencesNuéeEtBd({idNuée:x,idBd:r,f:async N=>{C.différencesBds=N,await I()}}),D=await suivreBdsDeFonctionListe({fListe:async N=>await this.client.bds.suivreTableauxBd({idBd:r,f:N}),f:async N=>{C.différencesTableaux=N,await I()},fBranche:async(N,O,M)=>await this.suivreDifférencesNuéeEtTableau({idNuée:x,clefTableau:M.clef,idTableau:N,f:async L=>{await O(L.map(F=>({type:"tableau",sévère:F.sévère,idTableau:N,différence:F})))}}),fCode:N=>N.id,fIdBdDeBranche:N=>N.id});return async()=>{await Promise.all([B,D])}}})}async rechercherNuéesDéscendantes({idNuée:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=async T=>{_(T.map(C=>C.id))};return await this.client.réseau.rechercherNuées({f:x,fObjectif:async(T,C,I)=>await T.nuées.suivreNuéesParents({idNuée:C,f:B=>{B.includes(r)&&I({type:"résultat",score:1,de:"*",info:{type:"vide"}})}}),nRésultatsDésirés:S,toutLeRéseau:E})}async préciserParent({idNuée:r,idNuéeParent:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});S.set("parent",_),await E()}async enleverParent({idNuée:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});_.del("parent"),await S()}async suivreNuéesParents({idNuée:r,f:_}){let S=!1;const E={},x=async()=>{await _(Object.values(Object.values(E).map(I=>I.parent)))},T=async({id:I})=>await this.client.suivreBd({id:I,type:"keyvalue",schéma:schémaStructureBdNuée,f:async B=>{if(S)return;const A=await B.get("parent");if(E[I]?.parent===A){A||await x();return}if(await E[I]?.fOublier(),A){const D=await T({id:A});E[I]={parent:A,fOublier:async()=>{await D(),await E[A]?.fOublier(),delete E[I],await x()}}}else delete E[I];await x()}}),C=await T({id:r});return async()=>{S=!0,await C(),await Promise.all(Object.values(E).map(I=>I.fOublier()))}}async suivreBdsCorrespondantesDUneNuée({idNuée:r,f:_,nRésultatsDésirés:S,vérifierAutorisation:E=!0,toujoursInclureLesMiennes:x=!0}){if(E){const T={},C=async()=>{const{philoAutorisation:F,membres:U,bds:j}=T;if(!j)return;if(!F)return x?await _(j.filter(Q=>Q.auteurs.some(J=>J===this.client.idCompte)).map(Q=>Q.idBd)):void 0;if(!U)return;const z=await this.client.obtIdCompte();return await _((Q=>{if(F==="CJPI"){const J=U.filter(Z=>Z.statut==="accepté").map(Z=>Z.idCompte);return Q.filter(Z=>Z.auteurs.some(re=>J.includes(re))||x&&Z.auteurs.includes(z)).map(Z=>Z.idBd)}else if(F==="IJPC"){const J=U.filter(Z=>Z.statut==="exclus").map(Z=>Z.idCompte);return Q.filter(Z=>!Z.auteurs.some(re=>J.includes(re))).map(Z=>Z.idBd)}else throw new Error(F)})(j))},I=await this.suivrePhilosophieAutorisation({idNuée:r,f:async F=>{T.philoAutorisation=F,await C()}}),B=await this.suivreAutorisationsMembresDeNuée({idNuée:r,f:async F=>{T.membres=F,await C()}}),A=async F=>{T.bds=F,await C()},D=async F=>await this.client.réseau.suivreBdsDeNuée({idNuée:r,f:F,nRésultatsDésirés:S}),N=async(F,U)=>{const j=async z=>await U({idBd:F,auteurs:z.filter(H=>H.accepté).map(H=>H.idCompte)});return await this.client.réseau.suivreAuteursBd({idBd:F,f:j})},{fOublier:O,fChangerProfondeur:M}=await suivreBdsDeFonctionListe({fListe:D,f:A,fBranche:N});return{fOublier:async()=>{await Promise.all([O,B,I].map(F=>F()))},fChangerProfondeur:M}}else return await this.client.réseau.suivreBdsDeNuée({idNuée:r,f:_,nRésultatsDésirés:S})}async suivreBdsCorrespondantes({idNuée:r,f:_,nRésultatsDésirés:S,héritage:E,vérifierAutorisation:x=!0,toujoursInclureLesMiennes:T=!0}){const C={},I=[],B=async()=>{if(!C.directes)return;const N=[...new Set([...C.ascendance||[],...C.descendance||[],...C.directes])];return await _(N)};if(E&&E.includes("ascendance")){const N=await this.suivreDeParents({idNuée:r,f:async O=>{const M=[];O.forEach(L=>L.forEach(F=>{!M.includes(F)&&M.push(F)})),C.ascendance=M,await B()},fParents:async(O,M)=>(await this.suivreBdsCorrespondantesDUneNuée({idNuée:O,f:M,nRésultatsDésirés:S,vérifierAutorisation:x,toujoursInclureLesMiennes:T})).fOublier});I.push(N)}if(E&&E.includes("descendance")){const{fOublier:N}=await suivreBdsDeFonctionListe({fListe:async O=>await this.rechercherNuéesDéscendantes({idNuée:r,f:M=>O([r,...M].reverse())}),f:async O=>{C.descendance=O,await B()},fBranche:async(O,M)=>(await this.suivreBdsCorrespondantesDUneNuée({idNuée:O,f:M,nRésultatsDésirés:S,vérifierAutorisation:x,toujoursInclureLesMiennes:T})).fOublier});I.push(N)}const{fOublier:A,fChangerProfondeur:D}=await this.suivreBdsCorrespondantesDUneNuée({idNuée:r,f:async N=>{C.directes=N,await B()},nRésultatsDésirés:S,vérifierAutorisation:x,toujoursInclureLesMiennes:T});return I.push(A),{fOublier:async()=>{await Promise.all(I.map(N=>N()))},fChangerProfondeur:D}}async suivreEmpreinteTêtesBdsNuée({idNuée:r,f:_,héritage:S}){return await suivreBdsDeFonctionListe({fListe:async E=>{const{fOublier:x}=await this.suivreBdsCorrespondantes({idNuée:r,f:async T=>E([r,...T]),héritage:S});return x},f:async E=>{const x=Base64.stringify(md5(E.join(":")));return await _(x)},fBranche:async(E,x)=>await this.client.suivreEmpreinteTêtesBdRécursive({idBd:E,f:x})})}async suivreDonnéesTableauNuée({idNuée:r,clefTableau:_,f:S,nRésultatsDésirés:E,héritage:x,ignorerErreursFormatBd:T=!0,ignorerErreursFormatTableau:C=!1,ignorerErreursDonnéesTableau:I=!0,licencesPermises:B=void 0,toujoursInclureLesMiennes:A=!0,clefsSelonVariables:D=!1}){const N=async F=>{const U=F.flat();await S(U)},O=async F=>await this.suivreBdsCorrespondantes({idNuée:r,f:async U=>await F(U),nRésultatsDésirés:E,héritage:x,toujoursInclureLesMiennes:A});return await suivreBdsDeFonctionListe({fListe:async F=>{const U=async(j,z)=>{const H={licence:!1,formatBd:!0},Q=[],J=async()=>{const Z=Object.values(H).every(re=>re);await z(Z)};if(B){const Z=await this.client.bds.suivreLicenceBd({idBd:j,f:async re=>(H.licence=B.includes(re),await J())});Q.push(Z)}else H.licence=!0;if(T)H.formatBd=!0;else{const Z=await this.suivreDifférencesNuéeEtBd({idBd:j,idNuée:r,f:async re=>(H.formatBd=!re.length,await J())});Q.push(Z)}return await J(),async()=>{await Promise.all(Q.map(Z=>Z()))}};return await this.client.suivreBdsSelonCondition({fListe:O,fCondition:U,f:F})},f:N,fBranche:async(F,U)=>{const j={},z=async()=>{const{données:Z,erreursÉléments:re,auteurs:ie}=j;if(Z&&re&&ie&&ie.length){const pe=ie.find(W=>W.accepté)?.idCompte;if(!pe)return;const ue=Z.map(W=>({idCompte:pe,élément:W,valid:re.filter(Y=>Y.id==W.id)})).filter(W=>I||!W.valid.length);await U(ue)}},Q=await suivreBdDeFonction({fRacine:async({fSuivreRacine:Z})=>await this.client.suivreBdSelonCondition({fRacine:async re=>await this.client.bds.suivreIdTableauParClef({idBd:F,clef:_,f:ignorerNonDéfinis(re)}),fCondition:async(re,ie)=>C?(await ie(!0),faisRien):(await ie(!0),await this.suivreDifférencesNuéeEtTableau({idNuée:r,clefTableau:_,idTableau:re,f:async pe=>await ie(!pe.length),stricte:!1})),f:Z}),f:async Z=>{j.données=Z?.données,j.erreursÉléments=Z?.erreurs,await z()},fSuivre:async({id:Z,fSuivreBd:re})=>{const ie={},pe=[],ue=async()=>{const{données:q,erreurs:G}=ie;q&&await re({données:q,erreurs:G||[]})},W=await this.client.tableaux.suivreDonnées({idTableau:Z,f:async q=>{ie.données=q,await ue()},clefsSelonVariables:D});pe.push(W);const Y=await this.client.tableaux.suivreValidDonnées({idTableau:Z,f:async q=>{ie.erreurs=q,await ue()}});return pe.push(Y),async()=>{await Promise.all(pe.map(q=>q()))}}}),J=await this.client.réseau.suivreAuteursBd({idBd:F,f:async Z=>{j.auteurs=Z,await z()}});return async()=>{await Promise.all([Q,J])}}})}async suivreDonnéesExportationTableau({clefTableau:r,idNuée:_,langues:S,f:E,nRésultatsDésirés:x,héritage:T}){const C={},I=[],B=async()=>{const{colonnes:N,données:O,nomsTableau:M,nomsVariables:L}=C;if(N&&O&&(!S||M&&L)){const F=new Set;let U=await Promise.all(O.map(async H=>({...await this.client.tableaux.formaterÉlément({é:H.élément.données,colonnes:N,fichiersSFIP:F,langues:S}),auteur:H.idCompte})));U=U.map(H=>Object.keys(H).reduce((Q,J)=>{if(J==="auteur")Q[J]=H[J];else{const Z=N.find(ie=>ie.id===J)?.variable;if(!Z)throw new Error(`Colonnne avec id ${J} non trouvée parmis les colonnnes : +${JSON.stringify(B,void 0,2)}.`);const Q=_&&N?.[H]&&traduire(N[H],_)||z;return j[Q]=U[z],j},{}));const L=r.split("/").pop(),F=_&&D&&traduire(D,_)||L;return await S({nomTableau:F,données:M,fichiersSFIP:O})}};if(_){const B=await this.suivreNomsTableau({idTableau:r,f:async D=>{E.nomsTableau=D,await T()}});x.push(B);const A=await suivreBdsDeFonctionListe({fListe:async D=>this.suivreVariables({idTableau:r,f:D}),f:async D=>{E.nomsVariables=Object.fromEntries(D.map(N=>[N.idVar,N.noms])),await T()},fBranche:async(D,N)=>await this.client.variables.suivreNomsVariable({idVariable:D,f:async O=>await N({idVar:D,noms:O})})});x.push(A)}const C=await this.suivreColonnesTableau({idTableau:r,f:async B=>{E.colonnes=B,await T()},catégories:!0});x.push(C);const I=await this.suivreDonnées({idTableau:r,f:async B=>{E.données=B,await T()}});return x.push(I),async()=>{Promise.all(x.map(B=>B()))}}async exporterDonnées({idTableau:r,langues:_,doc:S,nomFichier:E,patience:x=500}){S=S||utils$2.book_new();const T=await uneFois(async I=>await this.suivreDonnéesExportation({idTableau:r,langues:_,f:I}),attendreStabilité(x)),C=utils$2.json_to_sheet(T.données);return utils$2.book_append_sheet(S,C,T.nomTableau.slice(0,30)),E=E||T.nomTableau,{doc:S,fichiersSFIP:T.fichiersSFIP,nomFichier:E}}async ajouterÉlément({idTableau:r,vals:_}){Array.isArray(_)||(_=[_]);const S=await this.client.obtIdBd({nom:"données",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdDonnéesTableau}),T=(await uneFois(B=>this.suivreColonnesTableau({idTableau:r,f:B,catégories:!1}))).filter(B=>B.index).map(B=>B.id),C=B=>{const A=Object.fromEntries(Object.entries(B).filter(D=>T.includes(D[0])));return Base64.stringify(md5(JSON.stringify(A)))},I=[];for(const B of _){const A=T.length?C(B):v4$1();await E.put(A,B),I.push(A)}return await x(),I}async modifierÉlément({idTableau:r,vals:_,idÉlément:S}){const E=await this.client.obtIdBd({nom:"données",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaBdDonnéesTableau}),C=await x.get(S);if(!C)throw new Error(`Id élément ${S} n'existe pas.`);const I=Object.assign({},C,_);Object.keys(_).map(B=>{_[B]===void 0&&delete I[B]}),élémentsÉgaux(I,C)||await x.put(S,I),await T()}async vérifierClefsÉlément({idTableau:r,élément:_}){const S=await this.client.obtIdBd({nom:"colonnes",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdInfoColAvecCatégorie}),C=[...(await E.all()).map(B=>B.value.id),"id"],I=Object.keys(_).filter(B=>C.includes(B));return await x(),Object.fromEntries(I.map(B=>[B,_[B]]))}async effacerÉlément({idTableau:r,idÉlément:_}){const S=await this.client.obtIdBd({nom:"données",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdDonnéesTableau});await E.del(_),await x()}async combinerDonnées({idTableauBase:r,idTableau2:_}){const S=await uneFois(async C=>await this.suivreDonnées({idTableau:r,f:C})),E=await uneFois(async C=>await this.suivreColonnesTableau({idTableau:r,f:C,catégories:!1}),C=>C!==void 0&&[...new Set(S.map(I=>Object.keys(I.données).filter(B=>B!=="id")).flat())].length<=C.length),x=await uneFois(async C=>await this.suivreDonnées({idTableau:_,f:C})),T=E.filter(C=>C.index).map(C=>C.id);for(const C of x){const I=S.find(B=>indexÉlémentsÉgaux(B.données,C.données,T));if(I){const B={};for(const A of E)I.données[A.id]===void 0&&C.données[A.id]!==void 0&&(B[A.id]=C.données[A.id]);Object.keys(B).length&&(await this.effacerÉlément({idTableau:r,idÉlément:I.id}),await this.ajouterÉlément({idTableau:r,vals:Object.assign({},I.données,B)}))}else await this.ajouterÉlément({idTableau:r,vals:C.données})}}async convertirDonnées({idTableau:r,données:_,conversions:S={},importerFichiers:E,cheminBaseFichiers:x,donnéesExistantes:T}){const C=await uneFois(async L=>await this.suivreColonnesTableau({idTableau:r,f:L,catégories:!0})),I=new Set(T?.map(L=>C.filter(F=>F.catégorie?.catégorie==="chaîne").map(F=>F.catégorie?.type==="simple"?[L[F.id]]:L[F.id]).flat().filter(F=>typeof F=="string")).flat()||[]),B={},A=async({chemin:L})=>{try{if(new URL(L),B[L])return B[L];const F=(await axios.get(L)).data,U=L.split("/"),j=U.pop()||U.pop();if(!j)throw new Error("Nom de fichier manquant.");const z=await this.client.ajouterÀSFIP({nomFichier:j,contenu:F});B[L]=z}catch{}if(isNode||isElectronMain){const F=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url),U=await __vitePreload(()=>Promise.resolve().then(()=>index$2),void 0,import.meta.url),j=x?U.resolve(x,L):L;if(!F.existsSync(j))return;if(B[j])return B[j];const z=F.readFileSync(j),H=await this.client.ajouterÀSFIP({nomFichier:U.basename(j),contenu:z});return B[L]=H,H}},D={},N=async({val:L,langue:F})=>{if(D[F]?.[L])return D[F][L];for(const U of I){const{bd:j,fOublier:z}=await this.client.ouvrirBdTypée({id:U,type:"keyvalue",schéma:schémaStructureBdNoms}),H=await j.get(F);if(await z(),H===L)return D[F]||(D[F]={}),D[F][L]=U,U}},O=async({val:L,langue:F})=>{const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNoms}),H={address:U.access.address};await j();const Q=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:H}),{bd:J,fOublier:Z}=await this.client.ouvrirBdTypée({id:Q,type:"keyvalue",schéma:schémaStructureBdNoms});return await J.set(F,L),await Z(),I.add(Q),Q},M=async({val:L,catégorie:F,conversion:U})=>{switch(F){case"audio":case"image":case"vidéo":case"fichier":return typeof L=="string"&&E?cidEtFichierValide(L)?L:await A({chemin:L})||L:L;case"booléen":return typeof L=="string"?L.toLowerCase()==="true":L;case"numérique":{let j,z;U?.type==="numérique"&&({opération:j,systèmeNumération:z}=U);const H=({val:J,ops:Z})=>{if(!Z)return J;let re=J;for(const ie of Z)switch(ie.op){case"+":re=J+ie.val;break;case"-":re=J-ie.val;break;case"*":re=J*ie.val;break;case"/":re=J/ie.val;break;case"^":re=J**ie.val;break;default:throw new Error(ie.op)}return re};let Q;if(typeof L=="string")try{Q=this.client.ennikkai.எண்ணுக்கு({உரை:L,மொழி:z})}catch{}else typeof L=="number"&&(Q=L);return Q!==void 0?H({val:Q,ops:Array.isArray(j)||typeof j>"u"?j:[j]}):L}case"horoDatage":if(U?.type==="horoDatage"&&typeof L=="string"){const{système:j,format:z}=U;return{système:"dateJS",val:cholqij.lireDate({système:j,val:L,format:z}).valueOf()}}else{if(["number","string"].includes(typeof L)){const j=new Date(L);return isNaN(j.valueOf())?L:{système:"dateJS",val:j.valueOf()}}return L}case"intervaleTemps":{const j=typeof L=="string"?JSON.parse(L):L;return Array.isArray(j)?await Promise.all(j.map(async z=>await M({val:z,catégorie:"horoDatage",conversion:U}))):j}case"chaîneNonTraductible":return L;case"chaîne":{if(typeof L!="string"||isValidAddress(L))return L;if(U?.type==="chaîne"){const{langue:j}=U;return await N({val:L,langue:j})||await O({val:L,langue:j})}return L}case"géojson":return typeof L=="string"?JSON.parse(L):L;default:return L}};for(const L of _)for(const F of C)if(F.catégorie){const{type:U,catégorie:j}=F.catégorie,z=L[F.id];if(z===void 0)continue;const H=S[F.id];if(U==="simple")L[F.id]=await M({val:z,catégorie:j,conversion:H});else{const Q=typeof z=="string"?JSON.parse(z):z;L[F.id]=Array.isArray(Q)?await Promise.all(Q.map(async J=>await M({val:J,catégorie:j,conversion:H}))):[await M({val:Q,catégorie:j,conversion:H})]}}return _}async importerDonnées({idTableau:r,données:_,conversions:S={},cheminBaseFichiers:E}){const x=await uneFois(async B=>await this.suivreDonnées({idTableau:r,f:B})),T=await this.convertirDonnées({idTableau:r,données:_,conversions:S,importerFichiers:!0,cheminBaseFichiers:E,donnéesExistantes:x.map(B=>B.données)}),C=[];for(const B of T)x.some(A=>élémentsÉgaux(A.données,B))||C.push(B);const I=[];for(const B of x)T.some(A=>élémentsÉgaux(A,B.données))||I.push(B.id);for(const B of I)await this.effacerÉlément({idTableau:r,idÉlément:B});for(const B of C)await this.ajouterÉlément({idTableau:r,vals:B})}async sauvegarderNomsTableau({idTableau:r,noms:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderNomTableau({idTableau:r,langue:_,nom:S}){const E=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerNomTableau({idTableau:r,langue:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async suivreNomsTableau({idTableau:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"noms",schéma:schémaStructureBdNoms,f:_})}async ajouterColonneTableau({idTableau:r,idVariable:_,idColonne:S}){const E=await this.client.obtIdBd({nom:"colonnes",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaBdInfoColAvecCatégorie});S=S||v4$1();const C={id:S,variable:_};return await x.put(S,C),await T(),S}async effacerColonneTableau({idTableau:r,idColonne:_}){const S=await this.client.obtIdBd({nom:"colonnes",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdInfoColAvecCatégorie});await E.del(_),await x()}async suivreColonnesTableau({idTableau:r,f:_,catégories:S=!1}){const E=async B=>{if(B)return await _(B)},x=async(B,A,D)=>B?await this.client.variables.suivreCatégorieVariable({idVariable:B,f:async N=>{const O=Object.assign({catégorie:N},D);await A(O)}}):faisRien,T=B=>B.variable,C=B=>B.id,I=async({id:B,fSuivreBd:A})=>await this.client.suivreBdsDeBdDic({id:B,f:A,fBranche:x,fIdBdDeBranche:T,fCode:C});return S?await this.client.suivreBdDeClef({id:r,clef:"colonnes",f:E,fSuivre:I}):await this.client.suivreBdDicDeClef({id:r,clef:"colonnes",schéma:schémaBdInfoColAvecCatégorie,f:async B=>E(Object.values(B))})}async suivreVariables({idTableau:r,f:_}){const S=async x=>{await _((x||[]).filter(T=>T&&isValidAddress(T)))},E=async({id:x,fSuivreBd:T})=>await this.client.suivreBdListe({id:x,f:C=>T(C.map(I=>I.variable))});return await this.client.suivreBdDeClef({id:r,clef:"colonnes",f:S,fSuivre:E})}async ajouterRègleTableau({idTableau:r,idColonne:_,règle:S}){const E=await this.client.obtIdBd({nom:"règles",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour tableau ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaBdRègles}),C=v4$1(),B={règle:{id:C,règle:S},source:{type:"tableau",id:r},colonne:_};return await x.put(C,B),await T(),C}async effacerRègleTableau({idTableau:r,idRègle:_}){const S=await this.client.obtIdBd({nom:"règles",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour tableau ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdRègles});await E.del(_),await x()}async suivreRègles({idTableau:r,f:_}){const S={},E=async()=>{if(!(!S.tableau||!S.variable))return await _([...S.tableau,...S.variable])},x=async M=>(S.tableau=Object.values(M),await E()),T=await this.client.suivreBdDicDeClef({id:r,clef:"règles",schéma:schémaBdRègles,f:x}),N=await suivreBdsDeFonctionListe({fListe:async M=>await this.suivreColonnesTableau({idTableau:r,f:M,catégories:!1}),f:async M=>(S.variable=M,await E()),fBranche:async(M,L,F)=>{const U=j=>{const z=j.map(H=>({règle:H,source:{type:"variable",id:M},colonne:F.id}));return L(z)};return await this.client.variables.suivreRèglesVariable({idVariable:M,f:U})},fIdBdDeBranche:M=>M.variable,fCode:M=>M.id});return async()=>{await T(),await N()}}async suivreValidDonnées({idTableau:r,f:_}){const S={},E=async()=>{if(!S.données||!S.règles)return;let L=[];for(const F of S.règles){const U=F(S.données);L=[...L,...U.flat()]}await _(L)},x=async L=>{S.varsÀColonnes&&(S.règles=L.map(F=>générerFonctionRègle({règle:F.règle,varsÀColonnes:S.varsÀColonnes,donnéesCatégorie:F.donnéesCatégorie})),await E())},T=async L=>{S.données=L,await E()},C=await this.suivreColonnesTableau({idTableau:r,f:async L=>{const F=L.reduce((U,j)=>({...U,[j.variable]:j.id}),{});S.varsÀColonnes=F,await E()},catégories:!1}),N=await suivreBdsDeFonctionListe({fListe:async L=>await this.suivreRègles({idTableau:r,f:L}),f:x,fBranche:async(L,F,U)=>{if(U.règle.règle.typeRègle==="valeurCatégorique"&&U.règle.règle.détails.type==="dynamique"){const{tableau:j,colonne:z}=U.règle.règle.détails;return await this.suivreDonnées({idTableau:j,f:async H=>await F({règle:U,donnéesCatégorie:H.map(Q=>Q.données[z])})})}else return await F({règle:U}),faisRien},fIdBdDeBranche:L=>L.règle.id,fCode:L=>L.règle.id}),O=await this.suivreDonnées({idTableau:r,f:T});return async()=>{await N(),await O(),await C()}}async suivreValidRègles({idTableau:r,f:_}){const S={},E=async()=>{if(!S.colonnes||!S.règles)return;const O=[],M=S.règles.map(j=>j.règle).filter(j=>j.règle.règle.typeRègle==="bornes"),L=M.filter(j=>j.règle.règle.détails.type==="dynamiqueColonne"),F=M.filter(j=>j.règle.règle.détails.type==="dynamiqueVariable"),U=S.règles.filter(j=>j.règle.règle.règle.typeRègle==="valeurCatégorique"&&j.règle.règle.règle.détails.type==="dynamique");for(const j of L)if(!S.colonnes.find(H=>H.id===j.règle.règle.détails.val)){const H={règle:j,détails:"colonneBornesInexistante"};O.push(H)}for(const j of F)if(!S.colonnes.find(H=>H.variable===j.règle.règle.détails.val)){const H={règle:j,détails:"variableBornesNonPrésente"};O.push(H)}for(const j of U)if(!j.colsTableauRéf?.find(H=>H.id===j.règle.règle.règle.détails.colonne)){const H={règle:j.règle,détails:"colonneCatégInexistante"};O.push(H)}await _(O)},x=async O=>(S.règles=O,await E()),T=await this.suivreColonnesTableau({idTableau:r,f:async O=>(S.colonnes=O,await E()),catégories:!1}),D=await suivreBdsDeFonctionListe({fListe:async O=>await this.suivreRègles({idTableau:r,f:O}),f:x,fBranche:async(O,M,L)=>{if(L.règle.règle.typeRègle==="valeurCatégorique"&&L.règle.règle.détails.type==="dynamique"){const{tableau:F}=L.règle.règle.détails;return await this.suivreColonnesTableau({idTableau:F,f:U=>M({règle:L,colsTableauRéf:U}),catégories:!1})}else return await M({règle:L}),faisRien},fIdBdDeBranche:O=>O.règle.id,fCode:O=>O.règle.id});return async()=>{await D(),await T()}}async effacerTableau({idTableau:r}){for(const _ of["noms","données","colonnes","règles"]){const S=await this.client.obtIdBd({nom:_,racine:r});S&&await this.client.effacerBd({id:S})}await this.client.effacerBd({id:r})}}__decorate([cacheSuivi],Tableaux.prototype,"suivreDifférencesAvecTableau",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreIndex",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreDonnées",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreNomsTableau",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreColonnesTableau",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreVariables",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreRègles",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreValidDonnées",null);__decorate([cacheSuivi],Tableaux.prototype,"suivreValidRègles",null);const schémaBdPrincipale$3={type:"string"},schémaStructureBdVariable={type:"object",properties:{type:{type:"string",nullable:!0},catégorie:{type:"object",properties:{catégorie:{type:"string",nullable:!0},type:{type:"string",nullable:!0}},required:[],nullable:!0},noms:{type:"string",nullable:!0},descriptions:{type:"string",nullable:!0},unités:{type:"string",nullable:!0},règles:{type:"string",nullable:!0},statut:{type:"object",properties:{idNouvelle:{type:"string",nullable:!0},statut:{type:"string",nullable:!0}},required:[],nullable:!0}},required:[]},schémaBdRèglesVariable={type:"object",additionalProperties:{type:"object",properties:{typeRègle:{type:"string"},détails:{type:"object",required:[],additionalProperties:!0}},required:["détails","typeRègle"]},required:[]};class Variables extends ComposanteClientListe{constructor({client:r}){super({client:r,clef:"variables",schémaBdPrincipale:schémaBdPrincipale$3})}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async suivreVariables({f:r,idCompte:_}){return await this.suivreBdPrincipale({idCompte:_,f:r})}async créerVariable({catégorie:r}){const _=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:{address:void 0,write:await this.client.obtIdCompte()}});await this.ajouterÀMesVariables({idVariable:_});const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:_,type:"keyvalue",schéma:schémaStructureBdVariable}),x=S.access;if(!estUnContrôleurConstellation(x))throw Error("Contrôleur de type non reconnu.");const T={address:x.address};await S.set("type","variable");const C=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:T});await S.set("noms",C);const I=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:T});await S.set("descriptions",I);const B=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:T});return await S.set("règles",B),await S.set("catégorie",this.standardiserCatégorieVariable(r)),await this.établirStatut({id:_,statut:{statut:"active"}}),E(),_}async ajouterÀMesVariables({idVariable:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.add(r),await S()}async enleverDeMesVariables({idVariable:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.del(r),await S()}async copierVariable({idVariable:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdVariable}),E=await _.get("catégorie"),x=await this.créerVariable({catégorie:E}),{bd:T,fOublier:C}=await this.client.ouvrirBdTypée({id:x,type:"keyvalue",schéma:schémaStructureBdVariable}),I=await _.get("noms");if(I){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:I,type:"keyvalue",schéma:schémaStructureBdNoms}),L=await O.allAsJSON();await M(),await this.sauvegarderNomsVariable({idVariable:x,noms:L})}const B=await _.get("descriptions");if(B){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:B,type:"keyvalue",schéma:schémaStructureBdNoms}),L=await O.allAsJSON();await M(),await this.sauvegarderDescriptionsVariable({idVariable:x,descriptions:L})}const A=await _.get("unités");A&&await T.put("unités",A);const D=await _.get("règles");if(D){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:D,type:"keyvalue",schéma:schémaBdRèglesVariable}),L=await O.allAsJSON();await M(),await Promise.all(Object.entries(L).map(async([F,U])=>{await this.ajouterRègleVariable({idVariable:x,règle:U,idRègle:F})}))}const N=await _.get("statut")||{statut:"active"};return await this.établirStatut({id:x,statut:N}),await Promise.all([S(),C()]),x}async inviterAuteur({idVariable:r,idCompteAuteur:_,rôle:S}){await this.client.donnerAccès({idBd:r,identité:_,rôle:S})}async sauvegarderNomsVariable({idVariable:r,noms:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Variable ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderNomVariable({idVariable:r,langue:_,nom:S}){const E=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour variable ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerNomVariable({idVariable:r,langue:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Variable ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async sauvegarderDescriptionsVariable({idVariable:r,descriptions:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Variable ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderDescriptionVariable({idVariable:r,langue:_,description:S}){const E=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour Variable ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerDescriptionVariable({idVariable:r,langue:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Variable ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async sauvegarderCatégorieVariable({idVariable:r,catégorie:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdVariable});await S.set("catégorie",this.standardiserCatégorieVariable(_)),await E()}standardiserCatégorieVariable(r){return typeof r=="string"?{type:"simple",catégorie:r}:r}async sauvegarderUnitésVariable({idVariable:r,idUnité:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdVariable});await S.set("unités",_),await E()}async ajouterRègleVariable({idVariable:r,règle:_,idRègle:S}){const E=await this.client.obtIdBd({nom:"règles",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour variable ${r}.`);S=S||v4$1();const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaBdRèglesVariable});return await x.put(S,_),await T(),S}async effacerRègleVariable({idVariable:r,idRègle:_}){const S=await this.client.obtIdBd({nom:"règles",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour variable ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdRèglesVariable});await E.del(_),await x()}async modifierRègleVariable({idVariable:r,règleModifiée:_,idRègle:S}){await this.effacerRègleVariable({idVariable:r,idRègle:S}),await this.ajouterRègleVariable({idVariable:r,règle:_,idRègle:S})}async suivreNomsVariable({idVariable:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"noms",schéma:schémaStructureBdNoms,f:_})}async suivreDescriptionsVariable({idVariable:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"descriptions",schéma:schémaStructureBdNoms,f:_})}async suivreCatégorieVariable({idVariable:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdVariable,f:async S=>{const E=await S.get("catégorie");E&&E.catégorie&&E.type&&await _(this.standardiserCatégorieVariable(E))}})}async suivreUnitésVariable({idVariable:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdVariable,f:async S=>{const E=await S.get("unités");await _(E||null)}})}async suivreRèglesVariable({idVariable:r,f:_}){const S={catégorie:{},propres:{}},E=async()=>{await _(Object.entries(Object.assign({},S.catégorie,S.propres)).map(([A,D])=>({id:A,règle:D})))},x=async A=>{const D={[v4$1()]:{typeRègle:"catégorie",détails:{catégorie:A}}};S.catégorie=D,await E()},T=await this.suivreCatégorieVariable({idVariable:r,f:x}),C=async A=>{S.propres=A,await E()},I=await this.client.suivreBdDicDeClef({id:r,clef:"règles",schéma:schémaBdRèglesVariable,f:C});return async()=>{await T(),await I()}}async suivreQualitéVariable({idVariable:r,f:_}){const S={noms:{},descr:{},règles:[]},E=async()=>{const D=[Object.keys(S.noms).length?1:0,Object.keys(S.descr).length?1:0];S.catégorie?.catégorie==="numérique"&&D.push(S.unités?1:0),S.catégorie?.catégorie==="numérique"&&D.push(S.règles.length>=1?1:0);const N=D.reduce((O,M)=>O+M,0)/D.length;await _(N)},x=await this.suivreNomsVariable({idVariable:r,f:async D=>{S.noms=D,await E()}}),T=await this.suivreDescriptionsVariable({idVariable:r,f:async D=>{S.descr=D,await E()}}),C=await this.suivreUnitésVariable({idVariable:r,f:async D=>{S.unités=D,await E()}}),I=await this.suivreCatégorieVariable({idVariable:r,f:async D=>{S.catégorie=D,await E()}}),B=await this.suivreRèglesVariable({idVariable:r,f:async D=>{S.règles=D,await E()}});return async()=>{await Promise.all([x(),T(),C(),I(),B()])}}async établirStatut({id:r,statut:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdVariable});await S.set("statut",_),await E()}async marquerObsolète({id:r,idNouvelle:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdVariable});S.set("statut",{statut:"obsolète",idNouvelle:_}),await E()}async effacerVariable({idVariable:r}){await this.enleverDeMesVariables({idVariable:r});for(const _ of["noms","descriptions","règles"]){const S=await this.client.obtIdBd({nom:_,racine:r});S&&await this.client.effacerBd({id:S})}await this.client.effacerBd({id:r})}}__decorate([cacheSuivi],Variables.prototype,"suivreVariables",null);__decorate([cacheSuivi],Variables.prototype,"suivreNomsVariable",null);__decorate([cacheSuivi],Variables.prototype,"suivreDescriptionsVariable",null);__decorate([cacheSuivi],Variables.prototype,"suivreCatégorieVariable",null);__decorate([cacheSuivi],Variables.prototype,"suivreUnitésVariable",null);__decorate([cacheSuivi],Variables.prototype,"suivreRèglesVariable",null);__decorate([cacheSuivi],Variables.prototype,"suivreQualitéVariable",null);function baseSum$1(n,r){for(var _,S=-1,E=n.length;++S{const x=Math.max(0,E.end-r.length-E.errors),T=reverse(n.slice(x,E.end));return{start:findMatchEnds(T,S,E.errors).reduce((I,B)=>E.end-B.end>31&1}function advanceBlock(n,r,_,S){let E=n.P[_],x=n.M[_];const T=S>>>31,C=r[_]|T,I=C|x,B=(C&E)+E^E|C;let A=x|~(B|E),D=E&B;const N=oneIfNotZero(A&n.lastRowMask[_])-oneIfNotZero(D&n.lastRowMask[_]);return A<<=1,D<<=1,D|=T,A|=oneIfNotZero(S)-T,E=D|~(I|A),x=A&I,n.P[_]=E,n.M[_]=x,N}function findMatchEnds(n,r,_){if(r.length===0)return[];_=Math.min(_,r.length);const S=[],E=32,x=Math.ceil(r.length/E)-1,T={P:new Uint32Array(x+1),M:new Uint32Array(x+1),lastRowMask:new Uint32Array(x+1)};T.lastRowMask.fill(1<<31),T.lastRowMask[x]=1<<(r.length-1)%E;const C=new Uint32Array(x+1),I=new Map,B=[];for(let N=0;N<256;N++)B.push(C);for(let N=0;N=r.length)continue;r.charCodeAt(U)===O&&(M[L]|=1<"u"&&(M=C));let L=0;for(let F=0;F<=A;F+=1)L=advanceBlock(T,M,F,L),D[F]+=L;if(D[A]-L<=_&&A0&&D[A]>=_+E;)A-=1;A===x&&D[A]<=_&&(D[A]<_&&S.splice(0,S.length),S.push({start:-1,end:N+1,errors:D[A]}),_=D[A])}return S}function search(n,r,_){const S=findMatchEnds(n,r,_);return findMatchStarts(n,r,S)}const rechercherDansTexte=(n,r)=>{const S=search(r,n,Math.ceil(n.length/4)).sort((E,x)=>E.errors>x.errors?1:-1)[0];if(S)return{type:"texte",score:1/(S.errors+1),début:S.start,fin:S.end}},similTexte=(n,r)=>(Array.isArray(r)&&(r=Object.fromEntries(r.map(E=>[E,E]))),Object.entries(r).map(([E,x])=>{const T=rechercherDansTexte(n,x);if(T){const{score:C,début:I,fin:B}=T;return{type:"résultat",score:C,clef:E,info:{type:"texte",texte:x,début:I,fin:B}}}}).filter(E=>E).sort((E,x)=>E.score>x.score?-1:1)[0]),similImages=(n,r)=>{if(!r)return 0;const{mssim:_}=ssim$1(n,r);return _},combinerRecherches=async(n,r,_,S)=>{const E=[],x=Object.fromEntries(Object.keys(n).map(C=>[C,void 0])),T=()=>{const C=Object.values(x).filter(I=>I).sort((I,B)=>aMieuxQueB(I,B)?-1:1)[0];S(C)};return await Promise.all(Object.entries(n).map(async([C,I])=>{const B=async A=>{x[C]=A,T()};E.push(await I(r,_,B))})),async()=>{await Promise.all(E.map(C=>C()))}},sousRecherche=async(n,r,_,S,E)=>await suivreBdsDeFonctionListe({fListe:r,f:async I=>{const B=meilleurRésultat(I);if(B){const A={type:"résultat",de:n,clef:B.id,score:B.résultat.score,info:{type:"résultat",de:B.résultat.de,info:B.résultat.info}};B.résultat.clef&&(A.info.clef=B.résultat.clef),await E(A)}},fBranche:async(I,B)=>await _(S,I,async A=>{A&&B({id:I,résultat:A})})}),aMieuxQueB=(n,r)=>{const _=(E,x)=>{for(;E.type==="résultat";)E=E.info;for(;x.type==="résultat";)x=x.info;const T=["vide","texte"],C=T.indexOf(E.type),I=T.indexOf(x.type);return C>I},S=(E,x)=>{for(;E.type==="résultat";)E=E.info;for(;x.type==="résultat";)x=x.info;switch(E.type){case"texte":return x.type==="texte"?E.fin-E.début>x.fin-x.début:!1;default:return!1}};return n.score>r.score?!0:n.scoreObject.values(n).filter(_=>_).sort((_,S)=>aMieuxQueB(_.résultat,S.résultat)?-1:1)[0],rechercherSelonId=n=>async(r,_,S)=>{const E=rechercherDansTexte(n,_);if(E){const{score:x,début:T,fin:C}=E;await S({score:x,type:"résultat",de:"id",info:{type:"texte",début:T,fin:C,texte:_}})}else await S();return faisRien},rechercherTous=()=>async(n,r,_)=>(await _({type:"résultat",score:1,de:"*",info:{type:"vide"}}),faisRien),rechercherTousSiVide=n=>async(r,_,S)=>(n===""&&await S({type:"résultat",score:1,de:"*",info:{type:"vide"}}),faisRien),rechercherProfilsSelonActivité=()=>async(n,r,_)=>{const S={noms:void 0,image:void 0,courriel:void 0},E=()=>({type:"résultat",score:[Object.keys(S.noms||{}).length>0,S.image,S.courriel].filter(Boolean).length/3,de:"activité",info:{type:"vide"}}),x=N=>{S.noms=N,_(E())},T=N=>{S.image=N,_(E())},C=N=>{S.courriel=N,_(E())},I=await n.profil.suivreNoms({idCompte:r,f:x}),B=await n.profil.suivreImage({idCompte:r,f:T}),A=await n.profil.suivreCourriel({idCompte:r,f:C});return async()=>{await Promise.all([I(),B(),A()])}},rechercherProfilsSelonNom=n=>async(r,_,S)=>{const E=T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;S({type:"résultat",score:I,clef:B,info:A,de:"nom"})}else S()};return await r.profil.suivreNoms({idCompte:_,f:E})},rechercherProfilsSelonCourriel=n=>async(r,_,S)=>{const E=T=>{const C=T?rechercherDansTexte(n,T):void 0;if(C&&T){const{score:I,début:B,fin:A}=C;S({type:"résultat",score:I,de:"courriel",info:{type:"texte",début:B,fin:A,texte:T}})}else S()};return await r.profil.suivreCourriel({idCompte:_,f:E})},rechercherProfilsSelonTexte=n=>async(r,_,S)=>{const E=rechercherProfilsSelonNom(n),x=rechercherProfilsSelonCourriel(n),T=rechercherSelonId(n),C=rechercherTousSiVide(n);return await combinerRecherches({noms:E,courriel:x,id:T,vide:C},r,_,S)},rechercherProfilsSelonImage=n=>async(r,_,S)=>{const E=T=>{const C=similImages(n,T);S({type:"résultat",score:C,de:"image",info:{type:"vide"}})};return await r.profil.suivreImage({idCompte:_,f:E})},schémaBdPrincipaleRéseau={type:"object",additionalProperties:{type:"string"},required:[]},INTERVALE_SALUT=1e3*10,FACTEUR_ATÉNUATION_CONFIANCE=.8,FACTEUR_ATÉNUATION_BLOQUÉS=.9,CONFIANCE_DE_COAUTEUR=.9,CONFIANCE_DE_FAVORIS=.7,DÉLAI_SESOUVENIR_MEMBRES_EN_LIGNE=1e3*60*60*24*30,N_DÉSIRÉ_SOUVENIR_MEMBRES_EN_LIGNE=50;class Réseau extends ComposanteClientDic{client;bloquésPrivés;_fermé;dispositifsEnLigne;fsOublier;événements;constructor({client:r}){super({client:r,clef:"réseau",schémaBdPrincipale:schémaBdPrincipaleRéseau}),this.client=r,this.bloquésPrivés=new Set,this.dispositifsEnLigne={},this.fsOublier=[],this._fermé=!1,this.événements=new eventsExports.EventEmitter}async initialiser(){const{sfip:r}=await this.client.attendreSfipEtOrbite(),_={},S=r.libp2p.services.pubsub;S.subscribe(this.client.sujet_réseau);const E=B=>{const A=B.detail.msg,D=v4$1();if(A.topic===this.client.sujet_réseau)try{const N=this.messageReçu({msg:JSON.parse(new TextDecoder().decode(A.data))});_[D]=N,N.then(()=>{delete _[D]})}catch(N){console.error(N.toString()),console.error(N.stack.toString())}};S.addEventListener("gossipsub:message",E),this.fsOublier.push(async()=>{S.unsubscribe(this.client.sujet_réseau),S.removeEventListener("gossipsub:message",E),await Promise.all(Object.values(_))});const x=r.libp2p,T=()=>{this.événements.emit("changementConnexions")},C=["peer:discovery","peer:connect","peer:disconnect"];for(const B of C)x.addEventListener(B,T);this.fsOublier.push(...C.map(B=>async()=>x.removeEventListener(B,T)));const I=setInterval(()=>{this.direSalut({})},INTERVALE_SALUT);this.fsOublier.unshift(async()=>clearInterval(I)),await this.direSalut({})}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async envoyerMessageAuDispositif({msg:r,idSFIP:_}){_&&(r.destinataire=_);const S=this.client.sujet_réseau,{sfip:E}=await this.client.attendreSfipEtOrbite(),x=E.libp2p.services.pubsub,T=Buffer$2.from(JSON.stringify(r));await x.publish(S,T)}async envoyerMessageAuMembre({msg:r,idCompte:_,encrypté:S=!0}){const x={signature:await this.client.signer({message:JSON.stringify(r)}),valeur:r},T=Date.now(),C=Object.values(this.dispositifsEnLigne).filter(I=>I.infoDispositif.idCompte===_).filter(I=>I.vuÀ&&T-I.vuÀ{const{idSFIP:B,encryption:A}=I.infoDispositif;if(S){if(A?.type!==this.client.encryption.nom)return;const D=await this.client.encryption.encrypter({message:JSON.stringify(x),clefPubliqueDestinataire:A.clefPublique}),{publique:N}=await this.client.encryption.obtClefs(),O={encrypté:!0,clefPubliqueExpéditeur:N,données:D};await this.envoyerMessageAuDispositif({msg:O,idSFIP:B})}else{const D={encrypté:!1,données:x};await this.envoyerMessageAuDispositif({msg:D,idSFIP:B})}}))}async direSalut({à:r}){const _={type:"Salut !",contenu:{idSFIP:(await this.client.obtIdSFIP()).toString(),idDispositif:this.client.orbite.identity.id,clefPublique:this.client.orbite.identity.publicKey,signatures:this.client.orbite.identity.signatures,idCompte:await this.client.obtIdCompte()}},{publique:S}=await this.client.encryption.obtClefs();this.client.encryption&&(_.contenu.encryption={type:this.client.encryption.nom,clefPublique:S});const x={encrypté:!1,données:{signature:await this.client.signer({message:JSON.stringify(_)}),valeur:_}};try{await this.envoyerMessageAuDispositif({msg:x,idSFIP:r})}catch(T){if(!T.toString().includes("PublishError.InsufficientPeers"))throw T}}async envoyerDemandeRejoindreCompte({idCompte:r,codeSecret:_}){const S=await this.client.obtIdDispositif(),E={type:"Je veux rejoindre ce compte",contenu:{idDispositif:S,empreinteVérification:this.client.empreinteInvitation({idDispositif:S,codeSecret:_})}};await this.envoyerMessageAuMembre({msg:E,idCompte:r})}async messageReçu({msg:r}){if(this._fermé)return;const{encrypté:_,destinataire:S}=r;if(S&&S!==(await this.client.obtIdSFIP()).toString())return;const E=_?JSON.parse(await this.client.encryption.décrypter({message:r.données,clefPubliqueExpéditeur:r.clefPubliqueExpéditeur})):r.données,{valeur:x,signature:T}=E;if(T.clefPublique===this.client.orbite.identity.publicKey&&x.type!=="Salut !"||!await this.client.vérifierSignature({signature:T,message:JSON.stringify(x)}))return;const I=x.contenu;switch(x.type){case"Salut !":{const B=I,{clefPublique:A}=B;if(A!==T.clefPublique)return;await this.recevoirSalut({message:B}),S||await this.direSalut({à:B.idSFIP});break}case"Je veux rejoindre ce compte":{const B=I;await this.client.considérerRequêteRejoindreCompte({requête:B});break}}}async recevoirSalut({message:r}){await this._validerInfoMembre({info:r})&&(this.dispositifsEnLigne[r.idDispositif]={infoDispositif:r,vuÀ:r.idDispositif===await this.client.obtIdDispositif()?void 0:new Date().getTime()},this.événements.emit("membreVu"),await this._sauvegarderDispositifsEnLigne())}_nettoyerDispositifsEnLigne(){const r=new Date().getTime(),_=Object.values(this.dispositifsEnLigne).filter(x=>r-(x.vuÀ||0)>DÉLAI_SESOUVENIR_MEMBRES_EN_LIGNE).sort((x,T)=>(x.vuÀ||0)<(T.vuÀ||0)?-1:1).map(x=>x.infoDispositif.idDispositif),S=Object.keys(this.dispositifsEnLigne).length-N_DÉSIRÉ_SOUVENIR_MEMBRES_EN_LIGNE;_.slice(_.length-S).forEach(x=>delete this.dispositifsEnLigne[x])}async _sauvegarderDispositifsEnLigne(){this._nettoyerDispositifsEnLigne(),await this.client.sauvegarderAuStockageLocal({clef:"dispositifsEnLigne",val:JSON.stringify(this.dispositifsEnLigne)})}async _validerInfoMembre({info:r}){const{idCompte:_,signatures:S,clefPublique:E,idDispositif:x}=r;if(!(_&&S&&E&&x))return!1;const T=await this.client.vérifierSignature({signature:{signature:S.id,clefPublique:E},message:x}),C=await this.client.vérifierSignature({signature:{signature:S.publicKey,clefPublique:x},message:E+S.id});if(!isValidAddress(_))return!1;const{bd:I,fOublier:B}=await this.client.orbite.ouvrirBd({id:_});if(!estUnContrôleurConstellation(I.access))return!1;const A=I.access.estAutorisé(x);return await B(),T&&C&&A}async faireConfianceAuMembre({idCompte:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.set(r,"FIABLE"),await S()}async nePlusFaireConfianceAuMembre({idCompte:r}){const{bd:_,fOublier:S}=await this.obtBd();Object.keys(await _.allAsJSON()).includes(r)&&await _.get(r)==="FIABLE"&&await _.del(r),await S()}async suivreFiables({f:r,idCompte:_}){const S=async E=>{const x=Object.keys(E).filter(T=>E[T]==="FIABLE");return await r(x)};return await this.suivreBdPrincipale({idCompte:_,f:S})}async _initaliserBloquésPrivés(){const r=await this.client.obtDeStockageLocal({clef:"membresBloqués"});r&&(JSON.parse(r).forEach(_=>this.bloquésPrivés.add(_)),this.événements.emit("changementMembresBloqués"))}async _sauvegarderBloquésPrivés(){const r=[...this.bloquésPrivés];this.client.sauvegarderAuStockageLocal({clef:"membresBloqués",val:JSON.stringify(r)})}async bloquerMembre({idCompte:r,privé:_=!1}){if(_)await this.débloquerMembre({idCompte:r}),this.bloquésPrivés.add(r),await this._sauvegarderBloquésPrivés();else{const{bd:S,fOublier:E}=await this.obtBd();await this.débloquerMembre({idCompte:r}),await S.set(r,"BLOQUÉ"),await E()}this.événements.emit("changementMembresBloqués")}async débloquerMembre({idCompte:r}){const{bd:_,fOublier:S}=await this.obtBd();Object.keys(await _.allAsJSON()).includes(r)&&await _.get(r)==="BLOQUÉ"&&await _.del(r),await S(),this.bloquésPrivés.has(r)&&(this.bloquésPrivés.delete(r),await this._sauvegarderBloquésPrivés()),this.événements.emit("changementMembresBloqués")}async suivreBloquésPubliques({f:r,idCompte:_}){const S=async E=>{const x=Object.keys(E).filter(T=>E[T]==="BLOQUÉ");return await r(x)};return await this.suivreBdPrincipale({idCompte:_,f:S})}async suivreBloqués({f:r,idCompte:_}){const S=[];let E=[];const x=async()=>{const T=[...new Set([...[...this.bloquésPrivés].map(C=>({idCompte:C,privé:!0})),...E.map(C=>({idCompte:C,privé:!1}))])];return await r(T)};return S.push(await this.suivreBloquésPubliques({f:async T=>(E=T,await x()),idCompte:_})),(_===void 0||_===this.client.idCompte)&&(await this._initaliserBloquésPrivés(),this.événements.on("changementMembresBloqués",x),S.push(async()=>{this.événements.off("changementMembresBloqués",x)}),await x()),async()=>{await Promise.all(S.map(T=>T()))}}async suivreRelationsImmédiates({f:r,idCompte:_}){_=_||this.client.idCompte;const S=[],E={suivis:[],favoris:[],coauteursBds:[],coauteursProjets:[],coauteursVariables:[],coauteursMotsClefs:[]};let x=[];const T=async()=>{const O=[...E.suivis,...E.favoris,...E.coauteursBds,...E.coauteursProjets,...E.coauteursVariables,...E.coauteursMotsClefs,...x.map(F=>({idCompte:F,confiance:-1}))],L=[...new Set(O)].map(F=>{const{idCompte:U}=F;if(x.includes(U))return{idCompte:U,confiance:-1};const z=1-O.filter(H=>H.idCompte===U).map(H=>H.confiance).map(H=>1-H).reduce((H,Q)=>Q*H,1);return{idCompte:U,confiance:z}});return await r(L)};S.push(await this.suivreBloqués({f:async O=>{x=O.map(M=>M.idCompte),await T()},idCompte:_})),S.push(await this.client.suivreBdDicDeClef({id:_,clef:"réseau",schéma:schémaBdPrincipaleRéseau,f:async O=>(E.suivis=Object.entries(O).filter(([M,L])=>L==="FIABLE").map(([M,L])=>({idCompte:M,confiance:1})),await T())}));const C=async(O,M,L)=>{S.push(await suivreBdsDeFonctionListe({fListe:O,f:async F=>(E[M]=F.map(U=>({idCompte:U,confiance:L})),await T()),fBranche:async(F,U)=>await this.client.suivreAccèsBd({id:F,f:j=>U(j.map(z=>z.idCompte).filter(z=>z!==_))})}))};return await C(async O=>await this.suivreFavorisMembre({idCompte:_,f:M=>O((M||[]).map(L=>L.idObjet))}),"favoris",CONFIANCE_DE_FAVORIS),await C(async O=>await this.suivreBdsMembre({idCompte:_,f:M=>O(M||[])}),"coauteursBds",CONFIANCE_DE_COAUTEUR),await C(async O=>await this.suivreProjetsMembre({idCompte:_,f:M=>O(M||[])}),"coauteursProjets",CONFIANCE_DE_COAUTEUR),await C(async O=>await this.suivreVariablesMembre({idCompte:_,f:M=>O(M||[])}),"coauteursVariables",CONFIANCE_DE_COAUTEUR),await C(async O=>await this.suivreMotsClefsMembre({idCompte:_,f:M=>O(M||[])}),"coauteursMotsClefs",CONFIANCE_DE_COAUTEUR),async()=>{await Promise.all(S.map(O=>O()))}}async suivreRelationsConfiance({f:r,profondeur:_=1/0,idCompteDébut:S}){const E=S||await this.client.obtIdCompte(),x={},T={},C=new s$2;let I=!1;const B=U=>Object.entries(x).filter(([j,z])=>z.relations.map(H=>H.idCompte).includes(U)).map(([j,z])=>j),A=U=>{if(U===E)return 0;const j=({ids:z,p:H=1,déjàVues:Q=new Set})=>{const J=z.map(Z=>B(Z).filter(re=>!Q.has(re))).flat();return J.includes(E)?H:J.length?(Q=new Set(...Q,...J),j({ids:J,p:H+1,déjàVues:Q})):1/0};return j({ids:[U]})},D=async()=>{const U=[];for(const[j,z]of Object.entries(x))for(const H of z.relations){const Q=A(j)+1;U.push({de:j,pour:H.idCompte,confiance:H.confiance,profondeur:Q})}return await r(U)},N=async U=>{x[U]={relations:[]};const j=await this.suivreRelationsImmédiates({f:z=>{x[U]&&(x[U].relations=z,M())},idCompte:U});T[U]=j},O=async U=>{await T[U](),delete T[U],delete x[U]},M=async()=>{if(I)return;await C.acquire("modification");const U=Object.keys(x).filter(z=>A(z)>=_),j=[...new Set(Object.entries(x).filter(([z,H])=>A(z)+1<_).map(([z,H])=>H.relations.map(Q=>Q.idCompte)).flat())].filter(z=>!Object.keys(x).includes(z));await Promise.all(U.map(z=>O(z))),await Promise.all(j.map(z=>N(z))),await D(),C.release("modification")};return await N(E),{fOublier:async()=>{I=!0,await Promise.all(Object.values(T).map(U=>U()))},fChangerProfondeur:async U=>{_=U,await M()}}}async suivreComptesRéseau({f:r,profondeur:_,idCompteDébut:S}){const E=async x=>{x.push({de:this.client.idCompte,pour:this.client.idCompte,confiance:1,profondeur:0});const T={};x.forEach(I=>{Object.keys(T).includes(I.pour)||(T[I.pour]=[]),T[I.pour].push(I)});const C=Object.entries(T).map(([I,B])=>{const A=B.find(F=>F.de===this.client.idCompte);if(A?.confiance===1||A?.confiance===-1)return{idCompte:I,profondeur:A.pour===this.client.idCompte?0:1,confiance:A.confiance};const D=Math.min(...B.map(F=>F.profondeur)),N=B.filter(F=>F.confiance>=0),M=1-B.filter(F=>F.confiance<0).map(F=>1+F.confiance*Math.pow(FACTEUR_ATÉNUATION_BLOQUÉS,F.profondeur-1)).reduce((F,U)=>U*F,1),L=1-N.map(F=>1-F.confiance*Math.pow(FACTEUR_ATÉNUATION_CONFIANCE,F.profondeur-1)).reduce((F,U)=>U*F,1)-M;return{idCompte:I,profondeur:D,confiance:L}});return await r(C)};return await this.suivreRelationsConfiance({f:E,profondeur:_,idCompteDébut:S})}async suivreComptesRéseauEtEnLigne({f:r,profondeur:_,idCompteDébut:S}){const E={réseau:[],enLigne:[]},x=async()=>{const D=[...E.réseau];return E.enLigne.forEach(N=>{D.find(O=>O.idCompte===N.idCompte)||D.push(N)}),await r(D)},T=await this.suivreConnexionsMembres({f:async D=>{const N=D.filter(O=>O.infoMembre.idCompte!==this.client.idCompte).map(O=>({idCompte:O.infoMembre.idCompte,profondeur:1/0,confiance:0}));return E.enLigne=N,await x()}}),C=async D=>(E.réseau=D,await x()),{fOublier:I,fChangerProfondeur:B}=await this.suivreComptesRéseau({f:C,profondeur:_,idCompteDébut:S});return{fOublier:async()=>{await T(),await I()},fChangerProfondeur:B}}async suivreConfianceMonRéseauPourMembre({idCompte:r,f:_,profondeur:S,idCompteRéférence:E}){const x=E||await this.client.obtIdCompte(),T=async C=>{const I=C.find(B=>B.idCompte===r);return await _(I?.confiance||0)};return await this.suivreComptesRéseau({f:T,profondeur:S,idCompteDébut:x})}async suivreConnexionsPostesSFIP({f:r}){const _=async()=>{const{sfip:E}=await this.client.attendreSfipEtOrbite(),x=E.libp2p.getPeers(),T=E.libp2p.getConnections();return await r(x.map(C=>{const I=C.toString(),B=T.filter(A=>A.remotePeer.toString()===I).map(A=>A.remoteAddr.toString());return{pair:I,adresses:B}}))};return this.événements.on("changementConnexions",_),await _(),async()=>{this.événements.off("changementConnexions",_)}}async suivreConnexionsDispositifs({f:r}){const _={infoDispositif:{idSFIP:(await this.client.obtIdSFIP()).toString(),idDispositif:await this.client.obtIdDispositif(),idCompte:await this.client.obtIdCompte(),clefPublique:(await this.client.obtIdentitéOrbite()).publicKey,encryption:{type:await this.client.encryption.obtNom(),clefPublique:(await this.client.encryption.obtClefs()).publique},signatures:(await this.client.obtIdentitéOrbite()).signatures}},S=async()=>await r([...Object.values(this.dispositifsEnLigne),_]);return this.événements.on("membreVu",S),await S(),async()=>{this.événements.off("membreVu",S)}}async suivreConnexionsMembres({f:r}){return await suivreBdsDeFonctionListe({fListe:async E=>{const x=async T=>{const C={};for(const I of T){const{idCompte:B}=I.infoDispositif;C[B]||(C[B]={infoMembre:{idCompte:B,dispositifs:[]}});const{infoMembre:A,vuÀ:D}=C[B];A.dispositifs.push(I.infoDispositif),C[B].vuÀ=D?I.vuÀ?Math.max(D,I.vuÀ):D:I.vuÀ}return await E(Object.values(C))};return await this.suivreConnexionsDispositifs({f:x})},f:r,fBranche:async(E,x,T)=>await this.suivreProtocolesMembre({idCompte:E,f:C=>{x({infoMembre:{...T.infoMembre,protocoles:Object.values(C).flat()},vuÀ:T.vuÀ})}}),fIdBdDeBranche:E=>E.infoMembre.idCompte,fCode:E=>E.infoMembre.idCompte})}async suivreProtocolesMembre({f:r,idCompte:_}){return await this.client.suivreBdDicDeClef({id:_||await this.client.obtIdCompte(),clef:"protocoles",schéma:schémaStructureBdCompte,f:r})}async suivreProtocolesDispositif({idDispositif:r,f:_}){const S=r||await this.client.obtIdDispositif();return await suivreBdDeFonction({fRacine:async({fSuivreRacine:C})=>await this.suivreConnexionsDispositifs({f:async I=>{const B=I.find(A=>A.infoDispositif.idDispositif===S);if(B){const{idCompte:A}=B.infoDispositif;return await C(A)}else return await C(void 0)}}),f:async C=>{if(C)return await _(C[S])},fSuivre:async({id:C,fSuivreBd:I})=>await this.suivreProtocolesMembre({f:I,idCompte:C})})}async rechercher({f:r,nRésultatsDésirés:_=1/0,fRecherche:S,fConfiance:E,fQualité:x,fObjectif:T,fScore:C}){C||(C=ie=>(ie.confiance+ie.qualité+ie.objectif.score)/3),T=T||rechercherTous();const I={},B={},A=3e3;let D,N=3,O=!1;const M=async ie=>{N=ie,Q&&await Q(ie),D&&clearTimeout(D)},L=(ie=A)=>{if(O)return;D&&clearTimeout(D);const pe=Object.values(I).map(oe=>oe.résultats).flat().map(oe=>oe.résultatObjectif.score),ue=pe.length>=_?Math.min(...pe.slice(0,_)):0,W=Object.values(I).reduce(function(oe,ae){return oe[String(ae.membre.profondeur)]=oe[String(ae.membre.profondeur)]||[],oe[String(ae.membre.profondeur)].push(...ae.résultats),oe},{}),q=Object.entries(W).sort((oe,ae)=>Number(oe[0])oe[1]).map(oe=>oe.filter(ae=>ae.résultatObjectif.score>=ue).length),G=q.slice(q.length-3),ne=q.slice(q.length-4),ee=Math.max(3,sum$2(G)?N+1:sum$2(ne)?N:N-1);ee>N?D=setTimeout(()=>M(ee),ie):ee{const pe=Object.values(I).map(ue=>ue.résultats).flat().sort((ue,W)=>ue.résultatObjectif.score{const{idCompte:pe}=ie,ue=async G=>await S({idCompte:ie.idCompte,fSuivi:async ne=>await G(ne||[])}),W=async G=>(I[pe].résultats=G,await F()),Y=async(G,ne)=>{const ee={id:G},oe=async()=>{const{objectif:de,confiance:he,qualité:me}=ee;if(de&&he!==void 0&&me!==void 0){const Ee={id:G,résultatObjectif:{...de,score:C(ee)}};return await ne(Ee)}else return await ne(void 0)},ae=async de=>(ee.objectif=de,await oe()),se=await T(this.client,G,ae),X=await E(G,async de=>(ee.confiance=de,await oe())),le=await x(G,async de=>(ee.qualité=de,await oe()));return async()=>{await Promise.all([se(),X(),le()])}};I[pe]={résultats:[],membre:ie,mettreÀJour:F};const q=await suivreBdsDeFonctionListe({fListe:ue,f:W,fBranche:Y});B[pe]=q},j=async ie=>{await B[ie](),delete I[ie],delete B[ie],await F()},z=new s$2,H=async ie=>{await z.acquire("rechercher"),ie=ie.filter(Y=>Y.confiance>=0);const pe=ie.filter(Y=>!I[Y.idCompte]),ue=Object.keys(I).filter(Y=>!ie.find(q=>q.idCompte===Y)),W=ie.filter(Y=>{const q=I[Y.idCompte];return q&&(Y.confiance!==q.membre.confiance||Y.profondeur!==q.membre.profondeur)});await Promise.all(pe.map(U)),await Promise.all(W.map(async Y=>await I[Y.idCompte].mettreÀJour(Y))),await Promise.all(ue.map(Y=>j(Y))),z.release("rechercher")},{fChangerProfondeur:Q,fOublier:J}=await this.suivreComptesRéseauEtEnLigne({f:H,profondeur:N});return{fChangerN:async(ie=1/0)=>{const pe=_;_=ie,ie!==pe&&(await F(),L(0))},fOublier:async()=>{O=!0,D&&clearTimeout(D),await J(),await Promise.all(Object.values(B).map(ie=>ie()))}}}async rechercherMembres({f:r,nRésultatsDésirés:_,fObjectif:S}){const E=async(C,I)=>{const{fOublier:B}=await this.suivreConfianceMonRéseauPourMembre({idCompte:C,f:I,profondeur:4});return B},x=async({idCompte:C,fSuivi:I})=>(await I([C]),faisRien),T=async(C,I)=>await rechercherProfilsSelonActivité()(this.client,C,async A=>{await I(A?.score||0)});return await this.rechercher({f:r,nRésultatsDésirés:_,fRecherche:x,fConfiance:E,fQualité:T,fObjectif:S})}async suivreConfianceAuteurs({idItem:r,clef:_,f:S}){return await suivreBdsDeFonctionListe({fListe:async I=>await this.suivreAuteursObjet({idObjet:r,clef:_,f:async B=>{const A=B.filter(D=>D.accepté).map(D=>D.idCompte);return await I(A)}}),f:async I=>{const B=I.reduce((A,D)=>A+D,0);await S(B)},fBranche:async(I,B)=>{const{fOublier:A}=await this.suivreConfianceMonRéseauPourMembre({idCompte:I,f:B,profondeur:4});return A},fRéduction:I=>I.flat()})}async rechercherObjets({f:r,clef:_,nRésultatsDésirés:S,fRecherche:E,fRechercheLesMiens:x,fQualité:T,fObjectif:C,toutLeRéseau:I=!0}){if(!I){const D=C||rechercherTous();return await suivreBdsDeFonctionListe({fListe:async N=>({fOublier:await x(N),fChangerN:()=>Promise.resolve()}),f:r,fBranche:async(N,O)=>await D(this.client,N,async M=>{if(M)return await O({id:N,résultatObjectif:M})})})}const B=async({idCompte:D,fSuivi:N})=>{const O={propres:[],favoris:[]},M=async()=>{const U=[...new Set([...O.propres,...O.favoris])];await N(U)},L=await E({idCompte:D,f:async U=>{O.propres=U||[],await M()}}),F=await this.suivreFavorisMembre({idCompte:D,f:async U=>{O.favoris=U?U.map(j=>j.idObjet):[],await M()}});return async()=>{await L(),await F()}},A=async(D,N)=>await this.suivreConfianceAuteurs({idItem:D,clef:_,f:N});return await this.rechercher({f:r,nRésultatsDésirés:S,fRecherche:B,fConfiance:A,fQualité:T,fObjectif:C})}async rechercherNuées({f:r,nRésultatsDésirés:_,fObjectif:S,toutLeRéseau:E=!0}){const x=this.suivreNuéesMembre.bind(this),T=async(I,B)=>await this.client.nuées.suivreQualitéNuée({idNuée:I,f:B}),C=async I=>await this.client.nuées.suivreNuées({f:I});return await this.rechercherObjets({f:r,clef:"nuées",nRésultatsDésirés:_,fRecherche:x,fRechercheLesMiens:C,fQualité:T,fObjectif:S,toutLeRéseau:E})}async rechercherBds({f:r,nRésultatsDésirés:_,fObjectif:S,toutLeRéseau:E=!0}){const x=this.suivreBdsMembre.bind(this),T=async(I,B)=>{const A=async D=>await B(D.total);return await this.client.bds.suivreQualitéBd({idBd:I,f:A})},C=async I=>await this.client.bds.suivreBds({f:I});return await this.rechercherObjets({f:r,clef:"bds",nRésultatsDésirés:_,fRecherche:x,fRechercheLesMiens:C,fQualité:T,fObjectif:S,toutLeRéseau:E})}async rechercherVariables({f:r,nRésultatsDésirés:_,fObjectif:S,toutLeRéseau:E=!0}){const x=this.suivreVariablesMembre.bind(this),T=async(I,B)=>await this.client.variables.suivreQualitéVariable({idVariable:I,f:B}),C=async I=>await this.client.variables.suivreVariables({f:I});return await this.rechercherObjets({f:r,clef:"variables",nRésultatsDésirés:_,fRecherche:x,fRechercheLesMiens:C,fQualité:T,fObjectif:S,toutLeRéseau:E})}async rechercherMotsClefs({f:r,nRésultatsDésirés:_,fObjectif:S,toutLeRéseau:E=!0}){const x=this.suivreMotsClefsMembre.bind(this),T=async(I,B)=>await this.client.motsClefs.suivreQualitéMotClef({idMotClef:I,f:B}),C=async I=>await this.client.motsClefs.suivreMotsClefs({f:I});return await this.rechercherObjets({f:r,clef:"motsClefs",nRésultatsDésirés:_,fRecherche:x,fRechercheLesMiens:C,fQualité:T,fObjectif:S,toutLeRéseau:E})}async rechercherProjets({f:r,nRésultatsDésirés:_,fObjectif:S,toutLeRéseau:E=!0}){const x=this.suivreProjetsMembre.bind(this),T=async(I,B)=>await this.client.projets.suivreQualitéProjet({idProjet:I,f:B}),C=async I=>await this.client.projets.suivreProjets({f:I});return await this.rechercherObjets({f:r,clef:"projets",nRésultatsDésirés:_,fRecherche:x,fRechercheLesMiens:C,fQualité:T,fObjectif:S,toutLeRéseau:E})}async suivreAuteursObjet({idObjet:r,clef:_,f:S}){return await suivreBdsDeFonctionListe({fListe:async B=>await this.client.suivreAccèsBd({id:r,f:B}),f:S,fBranche:async(B,A,D)=>{const N=async M=>(M=M||[],A([{idCompte:D.idCompte,rôle:D.rôle,accepté:M.includes(r)}]));let O;switch(_){case"motsClefs":O=await this.client.motsClefs.suivreMotsClefs({f:N,idCompte:B});break;case"variables":O=await this.client.variables.suivreVariables({f:N,idCompte:B});break;case"bds":O=await this.client.bds.suivreBds({f:N,idCompte:B});break;case"nuées":O=await this.client.nuées.suivreNuées({f:N,idCompte:B});break;case"projets":O=await this.client.projets.suivreProjets({f:N,idCompte:B});break;default:throw new Error(_)}return O},fIdBdDeBranche:B=>B.idCompte,fCode:B=>B.idCompte})}async suivreAuteursMotClef({idMotClef:r,f:_}){return await this.suivreAuteursObjet({idObjet:r,clef:"motsClefs",f:_})}async suivreAuteursVariable({idVariable:r,f:_}){return await this.suivreAuteursObjet({idObjet:r,clef:"variables",f:_})}async suivreAuteursBd({idBd:r,f:_}){return await this.suivreAuteursObjet({idObjet:r,clef:"bds",f:_})}async suivreAuteursProjet({idProjet:r,f:_}){return await this.suivreAuteursObjet({idObjet:r,clef:"projets",f:_})}async suivreAuteursNuée({idNuée:r,f:_}){return await this.suivreAuteursObjet({idObjet:r,clef:"nuées",f:_})}async suivreObjetsMembre({idCompte:r,fListeObjets:_,fSuivi:S}){return await this.client.suivreBdsSelonCondition({fListe:_,fCondition:async(E,x)=>await this.client.suivreAccèsBd({id:E,f:T=>x(T.map(C=>C.idCompte).includes(r))}),f:S})}async suivreBdsMembre({idCompte:r,f:_}){return await this.suivreObjetsMembre({idCompte:r,fListeObjets:async S=>await this.client.bds.suivreBds({f:S,idCompte:r}),fSuivi:_})}async suivreProjetsMembre({idCompte:r,f:_}){return await this.suivreObjetsMembre({idCompte:r,fListeObjets:async S=>await this.client.projets.suivreProjets({f:S,idCompte:r}),fSuivi:_})}async suivreFavorisMembre({idCompte:r,f:_}){return await this.client.favoris.suivreFavoris({f:_,idCompte:r})}async suivreVariablesMembre({idCompte:r,f:_}){return await this.suivreObjetsMembre({idCompte:r,fListeObjets:async S=>await this.client.variables.suivreVariables({f:S,idCompte:r}),fSuivi:_})}async suivreMotsClefsMembre({idCompte:r,f:_}){return await this.suivreObjetsMembre({idCompte:r,fListeObjets:async S=>await this.client.motsClefs.suivreMotsClefs({f:S,idCompte:r}),fSuivi:_})}async suivreNuéesMembre({idCompte:r,f:_}){return await this.suivreObjetsMembre({idCompte:r,fListeObjets:async S=>await this.client.nuées.suivreNuées({f:S,idCompte:r}),fSuivi:_})}async suivreFavorisObjet({idObjet:r,f:_,profondeur:S}){const E=async C=>{const I=C.filter(B=>B.idObjet===r);await _(I)},x=async C=>{const I=async B=>await C([this.client.idCompte,...B.map(A=>A.idCompte)]);return await this.suivreComptesRéseauEtEnLigne({f:I,profondeur:S,idCompteDébut:this.client.idCompte})},T=async(C,I)=>await this.suivreFavorisMembre({idCompte:C,f:B=>I(B?B.map(A=>({idCompte:C,...A})):void 0)});return await this.client.suivreBdsDeFonctionRecherche({fListe:x,f:E,fBranche:T})}async suivreRéplications({idObjet:r,f:_,profondeur:S}){const E={connexionsMembres:[],connexionsDispositifs:[],favoris:[]},x=async()=>{const{connexionsMembres:F,favoris:U}=E,j=U.map(J=>J.favoris.idCompte),z=F.filter(J=>j.includes(J.infoMembre.idCompte)),H=(await Promise.all(U.map(async J=>{const{favoris:Z,dispositifs:re}=J;return await Promise.all(re.map(async ie=>{const pe=E.connexionsDispositifs.find(Y=>Y.infoDispositif.idDispositif===ie)?.vuÀ,ue=E.connexionsDispositifs.find(Y=>Y.infoDispositif.idDispositif===ie)?.infoDispositif.idCompte;return{idObjet:r,idDispositif:ie,idCompte:ue,bd:await this.client.favoris.estÉpingléSurDispositif({dispositifs:Z.dispositifs,idDispositif:ie}),fichiers:await this.client.favoris.estÉpingléSurDispositif({dispositifs:Z.dispositifsFichiers,idDispositif:ie}),récursif:Z.récursif,vuÀ:pe}}))}))).flat();return await _({membres:z,dispositifs:H})},T=await this.suivreConnexionsMembres({f:async F=>(E.connexionsMembres=F,await x())}),C=await this.suivreConnexionsDispositifs({f:async F=>(E.connexionsDispositifs=F,await x())}),I=async F=>(E.favoris=F,await x()),B=async F=>await this.suivreFavorisObjet({idObjet:r,f:F,profondeur:S}),A=async(F,U,j)=>{const z=async Q=>await U({favoris:j,dispositifs:Q}),H=await this.client.suivreDispositifs({f:z,idCompte:F});return async()=>{await H()}},D=F=>F.idCompte,N=F=>F.idCompte,{fOublier:O,fChangerProfondeur:M}=await this.client.suivreBdsDeFonctionRecherche({fListe:B,f:I,fBranche:A,fIdBdDeBranche:D,fCode:N});return{fOublier:async()=>{await O(),await T(),await C()},fChangerProfondeur:M}}async suivreBdsDeNuée({idNuée:r,f:_,nRésultatsDésirés:S}){const E=async(T,C)=>await this.client.bds.rechercherBdsParNuée({idNuée:r,f:C,idCompte:T}),x=async T=>await this.suivreComptesRéseauEtEnLigne({f:async C=>await T(C.map(I=>I.idCompte)),profondeur:S});return await this.client.suivreBdsDeFonctionRecherche({fListe:x,f:_,fBranche:E})}async suivreÉlémentsDeTableauxUniques({idNuéeUnique:r,clef:_,f:S,nBds:E=100}){const x=async B=>{const A=async N=>await this.suivreBdsDeNuée({idNuée:r,f:N,nRésultatsDésirés:E}),D=async(N,O)=>await this.suivreAuteursBd({idBd:N,f:async M=>{const L=M.find(U=>U.accepté)?.idCompte;return await O(L?{bd:N,idCompte:L}:void 0)}});return await this.client.suivreBdsDeFonctionRecherche({fListe:A,f:B,fBranche:D})},T=async(B,A,D)=>{const{idCompte:N}=D;return await suivreBdDeFonction({fRacine:async({fSuivreRacine:F})=>await this.client.bds.suivreIdTableauParClef({idBd:B,clef:_,f:U=>{U&&F(U)}}),f:async F=>await A(F||[]),fSuivre:async({id:F,fSuivreBd:U})=>{const j=async z=>{const H=z.map(Q=>({idCompte:N,élément:Q}));return await U(H)};return await this.client.tableaux.suivreDonnées({idTableau:F,f:j})}})},C=B=>B.bd,I=B=>B.bd;return await this.client.suivreBdsDeFonctionRecherche({fListe:x,f:S,fBranche:T,fIdBdDeBranche:C,fCode:I})}async fermer(){this._fermé=!0,await Promise.all(this.fsOublier.map(r=>r()))}}__decorate([cacheSuivi],Réseau.prototype,"suivreFiables",null);__decorate([cacheSuivi],Réseau.prototype,"suivreBloquésPubliques",null);__decorate([cacheSuivi],Réseau.prototype,"suivreBloqués",null);__decorate([cacheSuivi],Réseau.prototype,"suivreRelationsImmédiates",null);__decorate([cacheRechercheParProfondeur],Réseau.prototype,"suivreRelationsConfiance",null);__decorate([cacheRechercheParProfondeur],Réseau.prototype,"suivreComptesRéseau",null);__decorate([cacheSuivi],Réseau.prototype,"suivreConnexionsPostesSFIP",null);__decorate([cacheSuivi],Réseau.prototype,"suivreConnexionsDispositifs",null);__decorate([cacheSuivi],Réseau.prototype,"suivreConnexionsMembres",null);__decorate([cacheSuivi],Réseau.prototype,"suivreProtocolesMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreProtocolesDispositif",null);__decorate([cacheSuivi],Réseau.prototype,"suivreAuteursObjet",null);__decorate([cacheSuivi],Réseau.prototype,"suivreBdsMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreProjetsMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreFavorisMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreVariablesMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreMotsClefsMembre",null);__decorate([cacheSuivi],Réseau.prototype,"suivreNuéesMembre",null);__decorate([cacheRechercheParNRésultats],Réseau.prototype,"suivreBdsDeNuée",null);const importationAuth=__vitePreload(()=>import("./index-BvQarRZO.js"),__vite__mapDeps([0,1]),import.meta.url),importationCrypto=__vitePreload(()=>import("./index-BXtvCgpn.js").then(n=>n.y),[],import.meta.url),verrouImportation=new s$2;let auth;const obtAuth=async()=>(await verrouImportation.acquire("auth"),auth||(auth=await importationAuth),verrouImportation.release("auth"),auth);let crypto$1;const obtCrypto=async()=>(await verrouImportation.acquire("crypto"),crypto$1||(crypto$1=await importationCrypto),verrouImportation.release("crypto"),crypto$1);class EncryptionLocalFirst{événements;clefs;nom="local-first-auth";constructor(){this.événements=new EventEmitter$4,obtAuth().then(({asymmetric:r})=>{const{publicKey:_,secretKey:S}=r.keyPair();this.clefs={secrète:S,publique:_},this.événements.emit("clefs",this.clefs)})}async obtClefs(){return this.clefs||await new Promise(_=>{this.événements.once("clefs",_)})}async encrypter({message:r,clefPubliqueDestinataire:_}){const{asymmetric:S}=await obtAuth(),E=await this.obtClefs();return S.encrypt({secret:r,recipientPublicKey:_,senderSecretKey:E.secrète}).toString()}async décrypter({message:r,clefPubliqueExpéditeur:_}){const{asymmetric:S}=await obtAuth(),E=await this.obtClefs();return S.decrypt({cipher:r,recipientSecretKey:E.secrète,senderPublicKey:_})}async clefAléatoire(r=6){const{randomKey:_}=await obtCrypto();return _(r)}async obtNom(){return this.nom}}const schémaBdPrincipale$2={type:"object",additionalProperties:{type:"object",properties:{dispositifs:{anyOf:[{type:"array",items:{type:"string"}},{type:"string"}]},dispositifsFichiers:{type:["array","string"],anyOf:[{type:"array",items:{type:"string"},nullable:!0},{type:"string",nullable:!0}],nullable:!0},récursif:{type:"boolean"}},required:["dispositifs","récursif"]},required:[]};class Favoris extends ComposanteClientDic{_promesseInit;oublierÉpingler;constructor({client:r}){super({client:r,clef:"favoris",schémaBdPrincipale:schémaBdPrincipale$2}),this._promesseInit=this._épinglerFavoris()}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async _épinglerFavoris(){let r=[];const _=async E=>{const x=[];await Promise.all(Object.entries(E).map(async([C,I])=>{const B=await this.estÉpingléSurDispositif({dispositifs:I.dispositifs}),A=await this.estÉpingléSurDispositif({dispositifs:I.dispositifsFichiers});B&&await this.client.épingles.épinglerBd({id:C,récursif:I.récursif,fichiers:A}),x.push(C)}));const T=r.filter(C=>!x.includes(C));await Promise.all(T.map(async C=>await this.client.épingles.désépinglerBd({id:C}))),r=x},S=await this.suivreBdPrincipale({f:_});this.oublierÉpingler=S}async suivreFavoris({f:r,idCompte:_}){const S=async E=>{const x=Object.entries(E).map(([T,C])=>({idObjet:T,...C}));await r(x)};return await this.suivreBdPrincipale({idCompte:_,f:S})}async épinglerFavori({idObjet:r,dispositifs:_="TOUS",dispositifsFichiers:S="INSTALLÉ",récursif:E=!0}){const{bd:x,fOublier:T}=await this.obtBd(),C={récursif:E,dispositifs:_};S&&(C.dispositifsFichiers=S),await x.put(r,C),await T()}async désépinglerFavori({idObjet:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.del(r),await S()}async suivreÉtatFavori({idObjet:r,f:_}){return await this.suivreBdPrincipale({f:S=>_(S[r])})}async suivreEstÉpingléSurDispositif({idObjet:r,f:_,idDispositif:S}){const E=async x=>{const T=await this.estÉpingléSurDispositif({dispositifs:x?.dispositifs,idDispositif:S}),C=await this.estÉpingléSurDispositif({dispositifs:x?.dispositifsFichiers,idDispositif:S});return await _({idObjet:r,bd:T,fichiers:C,récursif:x?.récursif||!1})};return await this.suivreÉtatFavori({idObjet:r,f:E})}async estÉpingléSurDispositif({dispositifs:r,idDispositif:_}){return _=_||await this.client.obtIdDispositif(),r===void 0?!1:r==="TOUS"?!0:r==="INSTALLÉ"?_===await this.client.obtIdDispositif()?isNode||isElectronMain:!1:typeof r=="string"?r===_:r.includes(_)}async fermer(){await this._promesseInit,this.oublierÉpingler&&await this.oublierÉpingler()}}__decorate([cacheSuivi],Favoris.prototype,"suivreFavoris",null);__decorate([cacheSuivi],Favoris.prototype,"suivreÉtatFavori",null);__decorate([cacheSuivi],Favoris.prototype,"suivreEstÉpingléSurDispositif",null);const schémaStructureBdMotsClefsdeProjet={type:"string"},schémaStuctureBdsDeProjet={type:"string"},MAX_TAILLE_IMAGE$1=500*1e3,MAX_TAILLE_IMAGE_VIS$1=1500*1e3,schémaBdPrincipale$1={type:"string"},schémaStructureBdProjet={type:"object",properties:{type:{type:"string"},noms:{type:"string"},descriptions:{type:"string"},bds:{type:"string"},image:{type:"string",nullable:!0},motsClefs:{type:"string"},statut:{type:"object",properties:{statut:{type:"string"},idNouvelle:{type:"string",nullable:!0}},required:["statut"]},copiéDe:{type:"object",properties:{id:{type:"string"}},required:["id"]}},required:["noms","descriptions","statut","type","bds","copiéDe"]};class Projets extends ComposanteClientListe{constructor({client:r}){super({client:r,clef:"projets",schémaBdPrincipale:schémaBdPrincipale$1})}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async suivreProjets({f:r,idCompte:_}){return await this.suivreBdPrincipale({idCompte:_,f:r})}async créerProjet(){const{bd:r,fOublier:_}=await this.client.ouvrirBdTypée({id:await this.obtIdBd(),type:"set",schéma:schémaBdPrincipale$1}),S=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:{address:void 0,write:await this.client.obtIdCompte()}}),{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdProjet}),T=E.access;if(!estUnContrôleurConstellation(T))throw Error("Contrôleur de type non reconnu.");const C={address:T.address};await E.set("type","projet");const I=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:C});await E.set("noms",I);const B=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:C});await E.set("descriptions",B);const A=await this.client.créerBdIndépendante({type:"set",optionsAccès:C});await E.set("bds",A);const D=await this.client.créerBdIndépendante({type:"set",optionsAccès:C});return await E.set("motsClefs",D),await E.set("statut",{statut:"active"}),await r.add(S),await Promise.all([_(),x()]),S}async copierProjet({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet}),E=await this.créerProjet(),{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdProjet}),C=await _.get("noms");if(C){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:C,type:"keyvalue",schéma:schémaStructureBdNoms}),L=await O.allAsJSON();await M(),await this.sauvegarderNomsProjet({idProjet:E,noms:L})}const I=await _.get("descriptions");if(I){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:I,type:"keyvalue",schéma:schémaStructureBdNoms}),L=await O.allAsJSON();await M(),await this.sauvegarderDescriptionsProjet({idProjet:E,descriptions:L})}const B=await _.get("motsClefs");if(B){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:B,type:"set",schéma:schémaStructureBdMotsClefsdeProjet}),L=(await O.all()).map(F=>F.value);await M(),await this.ajouterMotsClefsProjet({idProjet:E,idsMotsClefs:L})}const A=await _.get("bds");if(A){const{bd:O,fOublier:M}=await this.client.ouvrirBdTypée({id:A,type:"set",schéma:schémaStuctureBdsDeProjet}),L=(await O.all()).map(F=>F.value);await M(),await Promise.all(L.map(async F=>{await this.ajouterBdProjet({idProjet:E,idBd:F})}))}const D=await _.get("statut")||{statut:"active"};await x.set("statut",D);const N=await _.get("image");return N&&await x.set("image",N),await x.set("copiéDe",{id:r}),await Promise.all([S(),T()]),E}async ajouterÀMesProjets({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:await this.obtIdBd(),type:"set",schéma:schémaBdPrincipale$1});await _.add(r),await S()}async enleverDeMesProjets({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:await this.obtIdBd(),type:"set",schéma:schémaBdPrincipale$1});await _.del(r),await S()}async inviterAuteur({idProjet:r,idCompteAuteur:_,rôle:S}){await this.client.donnerAccès({idBd:r,identité:_,rôle:S})}async _obtBdNoms({idProjet:r}){const _=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!_)throw new Error(`Permission de modification refusée pour Projet ${r}.`);return await this.client.ouvrirBdTypée({id:_,type:"keyvalue",schéma:schémaStructureBdNoms})}async sauvegarderNomsProjet({idProjet:r,noms:_}){const{bd:S,fOublier:E}=await this._obtBdNoms({idProjet:r});for(const x in _)await S.set(x,_[x]);await E()}async sauvegarderNomProjet({idProjet:r,langue:_,nom:S}){const{bd:E,fOublier:x}=await this._obtBdNoms({idProjet:r});await E.set(_,S),await x()}async effacerNomProjet({idProjet:r,langue:_}){const{bd:S,fOublier:E}=await this._obtBdNoms({idProjet:r});await S.del(_),await E()}async _obtBdDescr({idProjet:r}){const _=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!_)throw new Error(`Permission de modification refusée pour Projet ${r}.`);return await this.client.ouvrirBdTypée({id:_,type:"keyvalue",schéma:schémaStructureBdNoms})}async sauvegarderDescriptionsProjet({idProjet:r,descriptions:_}){const{bd:S,fOublier:E}=await this._obtBdDescr({idProjet:r});for(const x in _)await S.set(x,_[x]);await E()}async sauvegarderDescriptionProjet({idProjet:r,langue:_,description:S}){const{bd:E,fOublier:x}=await this._obtBdDescr({idProjet:r});await E.set(_,S),await x()}async effacerDescriptionProjet({idProjet:r,langue:_}){const{bd:S,fOublier:E}=await this._obtBdDescr({idProjet:r});await S.del(_),await E()}async _obtBdMotsClefs({idProjet:r}){const _=await this.client.obtIdBd({nom:"motsClefs",racine:r,type:"set"});if(!_)throw new Error(`Permission de modification refusée pour projet ${r}.`);return await this.client.ouvrirBdTypée({id:_,type:"set",schéma:schémaStructureBdMotsClefsdeProjet})}async ajouterMotsClefsProjet({idProjet:r,idsMotsClefs:_}){Array.isArray(_)||(_=[_]);const{bd:S,fOublier:E}=await this._obtBdMotsClefs({idProjet:r});await Promise.all(_.map(async x=>{(await S.all()).map(C=>C.value).includes(x)||await S.add(x)})),await E()}async effacerMotClefProjet({idProjet:r,idMotClef:_}){const{bd:S,fOublier:E}=await this._obtBdMotsClefs({idProjet:r});await S.del(_),await E()}async _obtBdBds({idProjet:r}){const _=await this.client.obtIdBd({nom:"bds",racine:r,type:"set"});if(!_)throw new Error(`Permission de modification refusée pour Projet ${r}.`);return await this.client.ouvrirBdTypée({id:_,type:"set",schéma:schémaStructureBdMotsClefsdeProjet})}async ajouterBdProjet({idProjet:r,idBd:_}){const{bd:S,fOublier:E}=await this._obtBdBds({idProjet:r});await S.add(_),await E()}async effacerBdProjet({idProjet:r,idBd:_}){const{bd:S,fOublier:E}=await this._obtBdBds({idProjet:r});await S.del(_),await E()}async marquerObsolète({idProjet:r,idNouvelle:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});S.set("statut",{statut:"obsolète",idNouvelle:_}),await E()}async changerStatutProjet({idProjet:r,statut:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});S.set("statut",_),await E()}async marquerActif({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});_.set("statut",{statut:"active"}),await S()}async marquerJouet({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});_.set("statut",{statut:"jouet"}),await S()}async marquerInterne({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});_.set("statut",{statut:"interne"}),await S()}async sauvegarderImage({idProjet:r,image:_}){if(_.contenu.byteLength>MAX_TAILLE_IMAGE$1)throw new Error("Taille maximale excédée");const S=await this.client.ajouterÀSFIP(_),{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});await E.set("image",S),await x()}async effacerImage({idProjet:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdProjet});await _.del("image"),await S()}async suivreImage({idProjet:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdProjet,f:async S=>{const E=await S.get("image");if(E){const x=await this.client.obtFichierSFIP({id:E,max:MAX_TAILLE_IMAGE_VIS$1});return await _(x)}else return await _(null)}})}async suivreNomsProjet({idProjet:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"noms",schéma:schémaStructureBdNoms,f:_})}async suivreDescriptionsProjet({idProjet:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"descriptions",schéma:schémaStructureBdNoms,f:_})}async suivreMotsClefsProjet({idProjet:r,f:_}){const S={},E=async()=>{if(S.propres&&S.bds){const D=[...S.propres.map(N=>({idMotClef:N,source:"projet"})),...S.bds.map(N=>({idMotClef:N,source:"bds"}))];return await _(D)}},x=async D=>(S.propres=D,await E()),T=await this.client.suivreBdListeDeClef({id:r,clef:"motsClefs",schéma:{type:"string"},f:x}),A=await suivreBdsDeFonctionListe({fListe:async D=>await this.suivreBdsProjet({idProjet:r,f:D}),f:async D=>(S.bds=D,await E()),fBranche:async(D,N)=>await this.client.bds.suivreMotsClefsBd({idBd:D,f:N})});return async()=>{await T(),await A()}}async suivreBdsProjet({idProjet:r,f:_}){return await this.client.suivreBdListeDeClef({id:r,clef:"bds",schéma:{type:"string"},f:_})}async suivreVariablesProjet({idProjet:r,f:_}){const S=async T=>await _(T||[]),E=async(T,C)=>await this.client.bds.suivreVariablesBd({idBd:T,f:C}),x=async({id:T,fSuivreBd:C})=>await this.client.suivreBdsDeBdListe({id:T,f:C,fBranche:E});return await this.client.suivreBdDeClef({id:r,clef:"bds",f:S,fSuivre:x})}async suivreQualitéProjet({idProjet:r,f:_}){return await suivreBdsDeFonctionListe({fListe:async C=>await this.suivreBdsProjet({idProjet:r,f:C}),f:async C=>await _(C.length?C.reduce((I,B)=>I+B,0)/C.length:0),fBranche:async(C,I)=>await this.client.bds.suivreQualitéBd({idBd:C,f:B=>I(B.total)}),fRéduction:C=>C.flat()})}async suivreDonnéesExportation({idProjet:r,langues:_,f:S}){const E={},x=[],T=async()=>{const{nomsProjet:I,données:B}=E;if(!B)return;const A=r.split("/").pop(),D=I&&_&&traduire(I,_)||A;return await S({nomProjet:D,bds:B})},C=await suivreBdsDeFonctionListe({fListe:async I=>await this.suivreBdsProjet({idProjet:r,f:I}),f:async I=>{E.données=I,await T()},fBranche:async(I,B)=>await this.client.bds.suivreDonnéesExportation({idBd:I,langues:_,f:B})});if(x.push(C),_){const I=await this.suivreNomsProjet({idProjet:r,f:async B=>{E.nomsProjet=B,await T()}});x.push(I)}return async()=>{await Promise.all(x.map(I=>I()))}}async exporterDonnées({idProjet:r,langues:_,nomFichier:S,patience:E=500}){const x=await uneFois(async C=>await this.suivreDonnéesExportation({idProjet:r,langues:_,f:C}),attendreStabilité(E));S=S||x.nomProjet;const T=new Set;return x.bds.forEach(C=>{C.tableaux.forEach(I=>I.fichiersSFIP.forEach(B=>T.add(B)))}),{docs:x.bds.map(C=>{const I=utils$2.book_new();for(const B of C.tableaux){const A=utils$2.json_to_sheet(B.données);utils$2.book_append_sheet(I,A,B.nomTableau.slice(0,30))}return{doc:I,nom:C.nomBd}}),fichiersSFIP:T,nomFichier:S}}async exporterDocumentDonnées({données:r,formatDoc:_,dossier:S="",inclureFichiersSFIP:E=!0}){const{docs:x,fichiersSFIP:T,nomFichier:C}=r,B={xls:"biff8"}[_]||_,A=x.map(N=>({nom:`${N.nom}.${_}`,octets:writeSync(N.doc,{bookType:B,type:"buffer"})})),D=E?await Promise.all([...T].map(async N=>({nom:N.replace("/","-"),octets:await toBuffer(await this.client.obtItérableAsyncSFIP({id:N}))}))):[];await zipper(A,D,path.join(S,C))}async effacerProjet({idProjet:r}){await this.enleverDeMesProjets({idProjet:r});for(const _ of["noms","descriptions","motsClefs","bds"]){const S=await this.client.obtIdBd({nom:_,racine:r});S&&await this.client.effacerBd({id:S})}await this.client.effacerBd({id:r})}}__decorate([cacheSuivi],Projets.prototype,"suivreProjets",null);__decorate([cacheSuivi],Projets.prototype,"suivreImage",null);__decorate([cacheSuivi],Projets.prototype,"suivreNomsProjet",null);__decorate([cacheSuivi],Projets.prototype,"suivreDescriptionsProjet",null);__decorate([cacheSuivi],Projets.prototype,"suivreMotsClefsProjet",null);__decorate([cacheSuivi],Projets.prototype,"suivreBdsProjet",null);__decorate([cacheSuivi],Projets.prototype,"suivreVariablesProjet",null);__decorate([cacheSuivi],Projets.prototype,"suivreQualitéProjet",null);const schémaBdPrincipale={type:"string"},schémaBdMotClef={type:"object",properties:{type:{type:"string",nullable:!0},noms:{type:"string",nullable:!0},descriptions:{type:"string",nullable:!0}},required:[]};class MotsClefs extends ComposanteClientListe{constructor({client:r}){super({client:r,clef:"motsClefs",schémaBdPrincipale})}async épingler(){const r=await this.obtIdBd();await this.client.épingles.épinglerBd({id:r,récursif:!1,fichiers:!1})}async suivreMotsClefs({f:r,idCompte:_}){return await this.suivreBdPrincipale({idCompte:_,f:r})}async créerMotClef(){const r=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:{address:void 0,write:await this.client.obtIdCompte()}});await this.ajouterÀMesMotsClefs({idMotClef:r});const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaBdMotClef}),x={address:_.access.address};await _.set("type","motClef");const T=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:x});await _.set("noms",T);const C=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:x});return await _.set("descriptions",C),await S(),r}async ajouterÀMesMotsClefs({idMotClef:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.add(r),await S()}async enleverDeMesMotsClefs({idMotClef:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.del(r),await S()}async copierMotClef({idMotClef:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaBdMotClef}),E=await this.créerMotClef(),x=await _.get("noms");if(x){const{bd:C,fOublier:I}=await this.client.ouvrirBdTypée({id:x,type:"keyvalue",schéma:schémaStructureBdNoms}),B=await C.allAsJSON();await this.sauvegarderNomsMotClef({idMotClef:E,noms:B}),await I()}const T=await _.get("descriptions");if(T){const{bd:C,fOublier:I}=await this.client.ouvrirBdTypée({id:T,type:"keyvalue",schéma:schémaStructureBdNoms}),B=await C.allAsJSON();await this.sauvegarderDescriptionsMotClef({idMotClef:E,descriptions:B}),await I()}return await S(),E}async inviterAuteur({idMotClef:r,idCompteAuteur:_,rôle:S}){await this.client.donnerAccès({idBd:r,identité:_,rôle:S})}async sauvegarderNomsMotClef({idMotClef:r,noms:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderNomMotClef({idMotClef:r,langue:_,nom:S}){const E=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerNomMotClef({idMotClef:r,langue:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async suivreNomsMotClef({idMotClef:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"noms",schéma:schémaStructureBdNoms,f:_})}async sauvegarderDescriptionsMotClef({idMotClef:r,descriptions:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async sauvegarderDescriptionMotClef({idMotClef:r,langue:_,description:S}){const E=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async effacerDescriptionMotClef({id:r,langue:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour mot clef ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async suivreDescriptionsMotClef({idMotClef:r,f:_}){return await this.client.suivreBdDicDeClef({id:r,clef:"descriptions",schéma:schémaStructureBdNoms,f:_})}async effacerMotClef({idMotClef:r}){await this.enleverDeMesMotsClefs({idMotClef:r});for(const _ of["noms"]){const S=await this.client.obtIdBd({nom:_,racine:r});S&&await this.client.effacerBd({id:S})}await this.client.effacerBd({id:r})}async suivreQualitéMotClef({idMotClef:r,f:_}){return await this.suivreNomsMotClef({idMotClef:r,f:S=>_(Object.keys(S).length?1:0)})}}__decorate([cacheSuivi],MotsClefs.prototype,"suivreMotsClefs",null);__decorate([cacheSuivi],MotsClefs.prototype,"suivreNomsMotClef",null);__decorate([cacheSuivi],MotsClefs.prototype,"suivreDescriptionsMotClef",null);__decorate([cacheSuivi],MotsClefs.prototype,"suivreQualitéMotClef",null);const MAX_TAILLE_IMAGE=500*1e3,MAX_TAILLE_IMAGE_VIS=1500*1e3,schémaBdAutorisations={type:"object",additionalProperties:{type:"string"},required:[]},schémaStructureBdNuée={type:"object",properties:{type:{type:"string",nullable:!0},métadonnées:{type:"string",nullable:!0},noms:{type:"string",nullable:!0},descriptions:{type:"string",nullable:!0},motsClefs:{type:"string",nullable:!0},image:{type:"string",nullable:!0},tableaux:{type:"string",nullable:!0},autorisation:{type:"string",nullable:!0},statut:{type:"object",properties:{idNouvelle:{type:"string",nullable:!0},statut:{type:"string",nullable:!0}},required:[],nullable:!0},parent:{type:"string",nullable:!0},copiéDe:{type:"string",nullable:!0}},required:[]},schémaStructureBdAuthorisation={type:"object",properties:{philosophie:{type:"string",nullable:!0},membres:{type:"string",nullable:!0}},required:[]},schémaBdMotsClefsNuée={type:"string"};class Nuées extends ComposanteClientListe{constructor({client:r}){super({client:r,clef:"nuées",schémaBdPrincipale:{type:"string"}})}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async créerNuée({nuéeParent:r,autorisation:_="IJPC",ajouter:S=!0}={}){const E=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:{address:void 0,write:await this.client.obtIdCompte()}});S&&await this.ajouterÀMesNuées({idNuée:E});const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNuée}),I={address:x.access.address};await x.set("type","nuée");let B;if(isValidAddress(_))B=_;else if(_==="CJPI"||_==="IJPC")B=await this.générerGestionnaireAutorisations({philosophie:_});else throw new Error(`Autorisation non valide : ${_}`);await x.set("autorisation",B),_==="CJPI"&&await this.accepterMembreNuée({idNuée:E,idCompte:await this.client.obtIdCompte()});const A=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:I});await x.set("noms",A);const D=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:I});await x.set("descriptions",D);const N=await this.client.créerBdIndépendante({type:"ordered-keyvalue",optionsAccès:I});await x.set("tableaux",N);const O=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:I});await x.set("métadonnées",O);const M=await this.client.créerBdIndépendante({type:"set",optionsAccès:I});return await x.set("motsClefs",M),await x.set("statut",{statut:"active"}),r&&await x.set("parent",r),T(),E}async ajouterÀMesNuées({idNuée:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.add(r),await S()}async enleverDeMesNuées({idNuée:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.del(r),await S()}async copierNuée({idNuée:r,ajouterÀMesNuées:_=!0}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée}),x=await S.get("parent"),T=await this.créerNuée({nuéeParent:x,ajouter:_}),{bd:C,fOublier:I}=await this.client.ouvrirBdTypée({id:T,type:"keyvalue",schéma:schémaStructureBdNuée}),B=await S.get("métadonnées");if(B){const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:B,type:"keyvalue",schéma:schémaStructureBdNoms}),z=await U.allAsJSON();await j(),await this.sauvegarderMétadonnéesNuée({idNuée:T,métadonnées:z})}const A=await S.get("noms");if(A){const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:A,type:"keyvalue",schéma:schémaStructureBdNoms}),z=await U.allAsJSON();await j(),await this.sauvegarderNomsNuée({idNuée:T,noms:z})}const D=await S.get("descriptions");if(D){const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:D,type:"keyvalue",schéma:schémaStructureBdNoms}),z=await U.allAsJSON();await j(),await this.sauvegarderDescriptionsNuée({idNuée:T,descriptions:z})}const N=await S.get("motsClefs");if(N){const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:N,type:"set",schéma:schémaBdMotsClefsNuée}),z=(await U.all()).map(H=>H.value);await j(),await this.ajouterMotsClefsNuée({idNuée:T,idsMotsClefs:z})}const O=await S.get("tableaux"),M=await C.get("tableaux");if(!M)throw new Error("Erreur initialisation.");if(O){const{bd:U,fOublier:j}=await this.client.ouvrirBdTypée({id:M,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd}),{bd:z,fOublier:H}=await this.client.ouvrirBdTypée({id:O,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd}),Q=await z.all();await H();for(const J of Q){const Z=await this.client.tableaux.copierTableau({id:J.key,idBd:T,copierDonnées:!1});await U.set(Z,J.value)}await j()}const L=await S.get("statut")||{statut:"active"};await C.set("statut",L);const F=await S.get("image");return F&&await C.set("image",F),await C.set("copiéDe",r),await Promise.all([E(),I()]),T}async suivreNuées({f:r,idCompte:_}){return await this.suivreBdPrincipale({f:r,idCompte:_})}async suivreDeParents({idNuée:r,f:_,fParents:S}){return await suivreBdsDeFonctionListe({fListe:async E=>await this.suivreNuéesParents({idNuée:r,f:x=>E([r,...x].reverse())}),f:_,fBranche:S,fRéduction:E=>E})}async sauvegarderMétadonnéeNuée({idNuée:r,clef:_,valeur:S}){const E=await this.client.obtIdBd({nom:"métadonnées",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdMétadonnées});await x.set(_,S),await T()}async sauvegarderMétadonnéesNuée({idNuée:r,métadonnées:_}){const S=await this.client.obtIdBd({nom:"métadonnées",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdMétadonnées});for(const T in _)await E.set(T,_[T]);await x()}async effacerMétadonnéeNuée({idNuée:r,clef:_}){const S=await this.client.obtIdBd({nom:"métadonnées",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdMétadonnées});await E.del(_),await x()}async suivreMétadonnéesNuée({idNuée:r,f:_,hériter:S=!0}){if(S){const E=async x=>{await _(Object.assign({},...x))};return await this.suivreDeParents({idNuée:r,f:E,fParents:async(x,T)=>await this.client.suivreBdDicDeClef({id:x,clef:"métadonnées",schéma:schémaStructureBdMétadonnées,f:T})})}else return await this.client.suivreBdDicDeClef({id:r,clef:"métadonnées",schéma:schémaStructureBdMétadonnées,f:_})}async sauvegarderNomNuée({idNuée:r,langue:_,nom:S}){const E=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async sauvegarderNomsNuée({idNuée:r,noms:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async effacerNomNuée({idNuée:r,langue:_}){const S=await this.client.obtIdBd({nom:"noms",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async suivreNomsNuée({idNuée:r,f:_}){const S=async E=>{await _(Object.assign({},...E))};return await this.suivreDeParents({idNuée:r,f:S,fParents:async(E,x)=>await this.client.suivreBdDicDeClef({id:E,clef:"noms",schéma:schémaStructureBdNoms,f:x})})}async sauvegarderDescriptionNuée({idNuée:r,langue:_,description:S}){const E=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!E)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdNoms});await x.set(_,S),await T()}async sauvegarderDescriptionsNuée({idNuée:r,descriptions:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});for(const T in _)await E.set(T,_[T]);await x()}async effacerDescriptionNuée({idNuée:r,langue:_}){const S=await this.client.obtIdBd({nom:"descriptions",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaStructureBdNoms});await E.del(_),await x()}async suivreDescriptionsNuée({idNuée:r,f:_}){const S=async E=>{await _(Object.assign({},...E))};return await this.suivreDeParents({idNuée:r,f:S,fParents:async(E,x)=>await this.client.suivreBdDicDeClef({id:E,clef:"descriptions",schéma:schémaStructureBdNoms,f:x})})}async sauvegarderImage({idNuée:r,image:_}){if(_.contenu.byteLength>MAX_TAILLE_IMAGE)throw new Error("Taille maximale excédée");const S=await this.client.ajouterÀSFIP(_),{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});await E.set("image",S),await x()}async effacerImage({idNuée:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});await _.del("image"),await S()}async suivreImage({idNuée:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdNuée,f:async S=>{const E=await S.get("image");if(!E)await _(null);else{const x=await this.client.obtFichierSFIP({id:E,max:MAX_TAILLE_IMAGE_VIS});await _(x)}}})}async ajouterMotsClefsNuée({idNuée:r,idsMotsClefs:_}){Array.isArray(_)||(_=[_]);const S=await this.client.obtIdBd({nom:"motsClefs",racine:r,type:"set"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"set",schéma:schémaBdMotsClefsNuée});for(const T of _)(await E.all()).map(I=>I.value).includes(T)||await E.add(T);await x()}async effacerMotClefNuée({idNuée:r,idMotClef:_}){const S=await this.client.obtIdBd({nom:"motsClefs",racine:r,type:"set"});if(!S)throw new Error(`Permission de modification refusée pour BD ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"set",schéma:schémaBdMotsClefsNuée});await E.del(_),await x()}async suivreMotsClefsNuée({idNuée:r,f:_}){const S=async E=>{await _([...new Set(E.flat())])};return await this.suivreDeParents({idNuée:r,f:S,fParents:async(E,x)=>await this.client.suivreBdListeDeClef({id:E,clef:"motsClefs",schéma:{type:"string"},f:x})})}async changerStatutNuée({idNuée:r,statut:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});S.set("statut",_),await E()}async suivreStatutNuée({idNuée:r,f:_}){return await this.client.suivreBdDic({id:r,f:async S=>{if(S.statut)return await _(S.statut)},schéma:schémaStructureBdNuée})}async marquerObsolète({idNuée:r,idNouvelle:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});S.set("statut",{statut:"obsolète",idNouvelle:_}),await E()}async marquerActive({idNuée:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});_.set("statut",{statut:"active"}),await S()}async marquerJouet({idNuée:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});_.set("statut",{statut:"jouet"}),await S()}async marquerInterne({idNuée:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});_.set("statut",{statut:"interne"}),await S()}async inviterAuteur({idNuée:r,idCompteAuteur:_,rôle:S}){await this.client.donnerAccès({idBd:r,identité:_,rôle:S})}async générerGestionnaireAutorisations({philosophie:r="IJPC"}){const _=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:{write:await this.client.obtIdCompte()}}),{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:_,type:"keyvalue",schéma:schémaStructureBdAuthorisation});await S.set("philosophie",r);const T={address:S.access.address},C=await this.client.créerBdIndépendante({type:"keyvalue",optionsAccès:T});return await S.set("membres",C),E(),_}async changerPhisolophieAutorisation({idAutorisation:r,philosophie:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdAuthorisation});await S.set("philosophie",_),E()}async suivrePhilosophieAutorisation({idNuée:r,f:_}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:T})=>await this.suivreGestionnaireAutorisations({idNuée:r,f:T}),f:async T=>{if(!T)return;const C=await T.get("philosophie");C&&["IJPC","CJPI"].includes(C)&&await _(C)},fSuivre:async({id:T,fSuivreBd:C})=>await this.client.suivreBd({id:T,type:"keyvalue",schéma:schémaStructureBdAuthorisation,f:C})})}async accepterMembreAutorisation({idAutorisation:r,idCompte:_}){const S=await this.client.obtIdBd({nom:"membres",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour groupe d'autorisation ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdAutorisations});await E.set(_,"accepté"),x()}async accepterMembreNuée({idNuée:r,idCompte:_}){const S=await this.obtGestionnaireAutorisationsDeNuée({idNuée:r});return await this.accepterMembreAutorisation({idAutorisation:S,idCompte:_})}async exclureMembreAutorisation({idAutorisation:r,idCompte:_}){const S=await this.client.obtIdBd({nom:"membres",racine:r,type:"keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour groupe d'autorisation ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"keyvalue",schéma:schémaBdAutorisations});await E.set(_,"exclus"),x()}async exclureMembreDeNuée({idNuée:r,idCompte:_}){const S=await this.obtGestionnaireAutorisationsDeNuée({idNuée:r});return await this.exclureMembreAutorisation({idAutorisation:S,idCompte:_})}async suivreGestionnaireAutorisations({idNuée:r,f:_}){return await this.client.suivreBd({id:r,type:"keyvalue",schéma:schémaStructureBdNuée,f:async S=>{const E=await S.get("autorisation");await _(E)}})}async changerGestionnaireAutorisations({idNuée:r,idAutorisation:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});await S.set("autorisation",_),E()}async obtGestionnaireAutorisationsDeNuée({idNuée:r}){return await uneFois(async _=>await this.suivreGestionnaireAutorisations({idNuée:r,f:ignorerNonDéfinis(_)}))}async suivreAutorisationsMembresDeGestionnaire({idAutorisation:r,f:_}){const S=async E=>{const x=Object.entries(E).map(([T,C])=>({idCompte:T,statut:C}));await _(x)};return await this.client.suivreBdDicDeClef({id:r,clef:"membres",schéma:schémaBdAutorisations,f:S})}async suivreAutorisationsMembresDeNuée({idNuée:r,f:_}){const S=async({fSuivreRacine:x})=>await this.suivreGestionnaireAutorisations({idNuée:r,f:x}),E=async({id:x,fSuivreBd:T})=>await this.suivreAutorisationsMembresDeGestionnaire({idAutorisation:x,f:T});return await suivreBdDeFonction({fRacine:S,f:ignorerNonDéfinis(_),fSuivre:E})}async ajouterTableauNuée({idNuée:r,clefTableau:_}){const S=await this.client.obtIdBd({nom:"tableaux",racine:r,type:"ordered-keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd});_=_||v4$1();const T=await this.client.tableaux.créerTableau({idBd:r});return await E.set(T,{clef:_}),await x(),T}async effacerTableauNuée({idNuée:r,idTableau:_}){const S=await this.client.obtIdBd({nom:"tableaux",racine:r,type:"ordered-keyvalue"});if(!S)throw new Error(`Permission de modification refusée pour Nuée ${r}.`);const{bd:E,fOublier:x}=await this.client.ouvrirBdTypée({id:S,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd});await E.del(_),await x(),await this.client.tableaux.effacerTableau({idTableau:_})}async suivreTableauxNuée({idNuée:r,f:_}){const S=async x=>{await _(x.flat())},E=async(x,T)=>{const C=I=>{const B=I.map(A=>({id:A.key,...A.value}));T(B)};return await this.client.suivreBdDicOrdonnéeDeClef({id:x,clef:"tableaux",schéma:schémaBdTableauxDeBd,f:C})};return await this.suivreDeParents({idNuée:r,f:S,fParents:E})}async ajouterNomsTableauNuée({idTableau:r,noms:_}){return await this.client.tableaux.sauvegarderNomsTableau({idTableau:r,noms:_})}async effacerNomsTableauNuée({idTableau:r,langue:_}){return await this.client.tableaux.effacerNomTableau({idTableau:r,langue:_})}async suivreNomsTableauNuée({idNuée:r,clefTableau:_,f:S}){const E=async T=>{await S(Object.assign({},...T))},x=async(T,C)=>await suivreBdDeFonction({fRacine:async({fSuivreRacine:I})=>await this.client.bds.suivreIdTableauParClef({idBd:T,clef:_,f:I}),f:ignorerNonDéfinis(C),fSuivre:async({id:I,fSuivreBd:B})=>await this.client.tableaux.suivreNomsTableau({idTableau:I,f:B})});return await this.suivreDeParents({idNuée:r,f:E,fParents:x})}async ajouterColonneTableauNuée({idTableau:r,idVariable:_,idColonne:S,index:E}){const x=await this.client.tableaux.ajouterColonneTableau({idTableau:r,idVariable:_,idColonne:S});return E&&await this.changerColIndexTableauNuée({idTableau:r,idColonne:x,val:!0}),x}async effacerColonneTableauNuée({idTableau:r,idColonne:_}){return await this.client.tableaux.effacerColonneTableau({idTableau:r,idColonne:_})}async changerColIndexTableauNuée({idTableau:r,idColonne:_,val:S}){return await this.client.tableaux.changerColIndex({idTableau:r,idColonne:_,val:S})}async suivreColonnesTableauNuée({idNuée:r,clefTableau:_,f:S,catégories:E=!0}){const x=async C=>{await S(C.flat())},T=async(C,I)=>await suivreBdDeFonction({fRacine:async({fSuivreRacine:B})=>await this.client.bds.suivreIdTableauParClef({idBd:C,clef:_,f:B}),f:ignorerNonDéfinis(I),fSuivre:async({id:B,fSuivreBd:A})=>await this.client.tableaux.suivreColonnesTableau({idTableau:B,f:A,catégories:E})});return await this.suivreDeParents({idNuée:r,f:x,fParents:T})}async ajouterRègleTableauNuée({idTableau:r,idColonne:_,règle:S}){return await this.client.tableaux.ajouterRègleTableau({idTableau:r,idColonne:_,règle:S})}async effacerRègleTableauNuée({idTableau:r,idRègle:_}){return await this.client.tableaux.effacerRègleTableau({idTableau:r,idRègle:_})}async suivreRèglesTableauNuée({idNuée:r,clefTableau:_,f:S}){const E=async T=>{await S(T.flat())},x=async(T,C)=>await suivreBdDeFonction({fRacine:async({fSuivreRacine:I})=>await this.client.bds.suivreIdTableauParClef({idBd:T,clef:_,f:I}),f:ignorerNonDéfinis(C),fSuivre:async({id:I,fSuivreBd:B})=>await this.client.tableaux.suivreRègles({idTableau:I,f:B})});return await this.suivreDeParents({idNuée:r,f:E,fParents:x})}async suivreVariablesNuée({idNuée:r,f:_}){return await suivreBdsDeFonctionListe({fListe:async T=>await this.suivreTableauxNuée({idNuée:r,f:C=>T(C.map(I=>I.id))}),f:async T=>await _(T||[]),fBranche:async(T,C)=>await this.client.tableaux.suivreVariables({idTableau:T,f:C})})}async suivreQualitéNuée({idNuée:r,f:_}){const S={noms:{},descr:{}},E=async()=>{const I=[Object.keys(S.noms).length?1:0,Object.keys(S.descr).length?1:0],B=I.reduce((A,D)=>A+D,0)/I.length;await _(B)},x=await this.suivreNomsNuée({idNuée:r,f:I=>{S.noms=I,E()}}),T=await this.suivreDescriptionsNuée({idNuée:r,f:I=>{S.descr=I,E()}});return async()=>{await x(),await T()}}async suivreDifférencesNuéeEtTableau({idNuée:r,clefTableau:_,idTableau:S,f:E,stricte:x=!0}){const T=async B=>{const A=B.filter(D=>x||D.sévère);await E(A)},C=async({fSuivreRacine:B})=>await this.client.bds.suivreIdTableauParClef({idBd:r,clef:_,f:B}),I=async({id:B,fSuivreBd:A})=>await this.client.tableaux.suivreDifférencesAvecTableau({idTableau:S,idTableauRéf:B,f:A});return await suivreBdDeFonction({fRacine:C,f:ignorerNonDéfinis(T),fSuivre:I})}async suivreDifférencesNuéeEtBd({idNuée:r,idBd:_,f:S}){const E={},x=async()=>{const I=[];if(E.tableauxNuée&&E.tableauxBd){for(const B of E.tableauxNuée)if(!E.tableauxNuée.find(D=>D.clef===B.clef)){const D={type:"tableauManquant",sévère:!0,clefManquante:B.clef};I.push(D)}for(const B of E.tableauxBd)if(!E.tableauxNuée.find(D=>D.clef===B.clef)){const D={type:"tableauSupplémentaire",sévère:!1,clefExtra:B.clef};I.push(D)}}await S(I)},T=await this.client.bds.suivreTableauxBd({idBd:_,f:I=>{E.tableauxBd=I,x()}}),C=await this.suivreTableauxNuée({idNuée:r,f:I=>{E.tableauxNuée=I,x()}});return async()=>{await T(),await C()}}async suivreCorrespondanceBd({idBd:r,f:_}){return await suivreBdsDeFonctionListe({fListe:async x=>await this.client.bds.suivreNuéesBd({idBd:r,f:x}),f:_,fBranche:async(x,T)=>{const C={différencesBds:[],différencesTableaux:[]},I=async()=>{T([...C.différencesBds,...C.différencesTableaux])},B=await this.suivreDifférencesNuéeEtBd({idNuée:x,idBd:r,f:async N=>{C.différencesBds=N,await I()}}),D=await suivreBdsDeFonctionListe({fListe:async N=>await this.client.bds.suivreTableauxBd({idBd:r,f:N}),f:async N=>{C.différencesTableaux=N,await I()},fBranche:async(N,O,M)=>await this.suivreDifférencesNuéeEtTableau({idNuée:x,clefTableau:M.clef,idTableau:N,f:async L=>{await O(L.map(F=>({type:"tableau",sévère:F.sévère,idTableau:N,différence:F})))}}),fCode:N=>N.id,fIdBdDeBranche:N=>N.id});return async()=>{await Promise.all([B,D])}}})}async rechercherNuéesDéscendantes({idNuée:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=async T=>{_(T.map(C=>C.id))};return await this.client.réseau.rechercherNuées({f:x,fObjectif:async(T,C,I)=>await T.nuées.suivreNuéesParents({idNuée:C,f:B=>{B.includes(r)&&I({type:"résultat",score:1,de:"*",info:{type:"vide"}})}}),nRésultatsDésirés:S,toutLeRéseau:E})}async préciserParent({idNuée:r,idNuéeParent:_}){const{bd:S,fOublier:E}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});S.set("parent",_),await E()}async enleverParent({idNuée:r}){const{bd:_,fOublier:S}=await this.client.ouvrirBdTypée({id:r,type:"keyvalue",schéma:schémaStructureBdNuée});_.del("parent"),await S()}async suivreNuéesParents({idNuée:r,f:_}){let S=!1;const E={},x=async()=>{await _(Object.values(Object.values(E).map(I=>I.parent)))},T=async({id:I})=>await this.client.suivreBd({id:I,type:"keyvalue",schéma:schémaStructureBdNuée,f:async B=>{if(S)return;const A=await B.get("parent");if(E[I]?.parent===A){A||await x();return}if(await E[I]?.fOublier(),A){const D=await T({id:A});E[I]={parent:A,fOublier:async()=>{await D(),await E[A]?.fOublier(),delete E[I],await x()}}}else delete E[I];await x()}}),C=await T({id:r});return async()=>{S=!0,await C(),await Promise.all(Object.values(E).map(I=>I.fOublier()))}}async suivreBdsCorrespondantesDUneNuée({idNuée:r,f:_,nRésultatsDésirés:S,vérifierAutorisation:E=!0,toujoursInclureLesMiennes:x=!0}){if(E){const T={},C=async()=>{const{philoAutorisation:F,membres:U,bds:j}=T;if(!j)return;if(!F)return x?await _(j.filter(Q=>Q.auteurs.some(J=>J===this.client.idCompte)).map(Q=>Q.idBd)):void 0;if(!U)return;const z=await this.client.obtIdCompte();return await _((Q=>{if(F==="CJPI"){const J=U.filter(Z=>Z.statut==="accepté").map(Z=>Z.idCompte);return Q.filter(Z=>Z.auteurs.some(re=>J.includes(re))||x&&Z.auteurs.includes(z)).map(Z=>Z.idBd)}else if(F==="IJPC"){const J=U.filter(Z=>Z.statut==="exclus").map(Z=>Z.idCompte);return Q.filter(Z=>!Z.auteurs.some(re=>J.includes(re))).map(Z=>Z.idBd)}else throw new Error(F)})(j))},I=await this.suivrePhilosophieAutorisation({idNuée:r,f:async F=>{T.philoAutorisation=F,await C()}}),B=await this.suivreAutorisationsMembresDeNuée({idNuée:r,f:async F=>{T.membres=F,await C()}}),A=async F=>{T.bds=F,await C()},D=async F=>await this.client.réseau.suivreBdsDeNuée({idNuée:r,f:F,nRésultatsDésirés:S}),N=async(F,U)=>{const j=async z=>await U({idBd:F,auteurs:z.filter(H=>H.accepté).map(H=>H.idCompte)});return await this.client.réseau.suivreAuteursBd({idBd:F,f:j})},{fOublier:O,fChangerProfondeur:M}=await suivreBdsDeFonctionListe({fListe:D,f:A,fBranche:N});return{fOublier:async()=>{await Promise.all([O,B,I].map(F=>F()))},fChangerProfondeur:M}}else return await this.client.réseau.suivreBdsDeNuée({idNuée:r,f:_,nRésultatsDésirés:S})}async suivreBdsCorrespondantes({idNuée:r,f:_,nRésultatsDésirés:S,héritage:E,vérifierAutorisation:x=!0,toujoursInclureLesMiennes:T=!0}){const C={},I=[],B=async()=>{if(!C.directes)return;const N=[...new Set([...C.ascendance||[],...C.descendance||[],...C.directes])];return await _(N)};if(E&&E.includes("ascendance")){const N=await this.suivreDeParents({idNuée:r,f:async O=>{const M=[];O.forEach(L=>L.forEach(F=>{!M.includes(F)&&M.push(F)})),C.ascendance=M,await B()},fParents:async(O,M)=>(await this.suivreBdsCorrespondantesDUneNuée({idNuée:O,f:M,nRésultatsDésirés:S,vérifierAutorisation:x,toujoursInclureLesMiennes:T})).fOublier});I.push(N)}if(E&&E.includes("descendance")){const{fOublier:N}=await suivreBdsDeFonctionListe({fListe:async O=>await this.rechercherNuéesDéscendantes({idNuée:r,f:M=>O([r,...M].reverse())}),f:async O=>{C.descendance=O,await B()},fBranche:async(O,M)=>(await this.suivreBdsCorrespondantesDUneNuée({idNuée:O,f:M,nRésultatsDésirés:S,vérifierAutorisation:x,toujoursInclureLesMiennes:T})).fOublier});I.push(N)}const{fOublier:A,fChangerProfondeur:D}=await this.suivreBdsCorrespondantesDUneNuée({idNuée:r,f:async N=>{C.directes=N,await B()},nRésultatsDésirés:S,vérifierAutorisation:x,toujoursInclureLesMiennes:T});return I.push(A),{fOublier:async()=>{await Promise.all(I.map(N=>N()))},fChangerProfondeur:D}}async suivreEmpreinteTêtesBdsNuée({idNuée:r,f:_,héritage:S}){return await suivreBdsDeFonctionListe({fListe:async E=>{const{fOublier:x}=await this.suivreBdsCorrespondantes({idNuée:r,f:async T=>E([r,...T]),héritage:S});return x},f:async E=>{const x=Base64.stringify(md5(E.join(":")));return await _(x)},fBranche:async(E,x)=>await this.client.suivreEmpreinteTêtesBdRécursive({idBd:E,f:x})})}async suivreDonnéesTableauNuée({idNuée:r,clefTableau:_,f:S,nRésultatsDésirés:E,héritage:x,ignorerErreursFormatBd:T=!0,ignorerErreursFormatTableau:C=!1,ignorerErreursDonnéesTableau:I=!0,licencesPermises:B=void 0,toujoursInclureLesMiennes:A=!0,clefsSelonVariables:D=!1}){const N=async F=>{const U=F.flat();await S(U)},O=async F=>await this.suivreBdsCorrespondantes({idNuée:r,f:async U=>await F(U),nRésultatsDésirés:E,héritage:x,toujoursInclureLesMiennes:A});return await suivreBdsDeFonctionListe({fListe:async F=>{const U=async(j,z)=>{const H={licence:!1,formatBd:!0},Q=[],J=async()=>{const Z=Object.values(H).every(re=>re);await z(Z)};if(B){const Z=await this.client.bds.suivreLicenceBd({idBd:j,f:async re=>(H.licence=B.includes(re),await J())});Q.push(Z)}else H.licence=!0;if(T)H.formatBd=!0;else{const Z=await this.suivreDifférencesNuéeEtBd({idBd:j,idNuée:r,f:async re=>(H.formatBd=!re.length,await J())});Q.push(Z)}return await J(),async()=>{await Promise.all(Q.map(Z=>Z()))}};return await this.client.suivreBdsSelonCondition({fListe:O,fCondition:U,f:F})},f:N,fBranche:async(F,U)=>{const j={},z=async()=>{const{données:Z,erreursÉléments:re,auteurs:ie}=j;if(Z&&re&&ie&&ie.length){const pe=ie.find(W=>W.accepté)?.idCompte;if(!pe)return;const ue=Z.map(W=>({idCompte:pe,élément:W,valid:re.filter(Y=>Y.id==W.id)})).filter(W=>I||!W.valid.length);await U(ue)}},Q=await suivreBdDeFonction({fRacine:async({fSuivreRacine:Z})=>await this.client.suivreBdSelonCondition({fRacine:async re=>await this.client.bds.suivreIdTableauParClef({idBd:F,clef:_,f:ignorerNonDéfinis(re)}),fCondition:async(re,ie)=>C?(await ie(!0),faisRien):(await ie(!0),await this.suivreDifférencesNuéeEtTableau({idNuée:r,clefTableau:_,idTableau:re,f:async pe=>await ie(!pe.length),stricte:!1})),f:Z}),f:async Z=>{j.données=Z?.données,j.erreursÉléments=Z?.erreurs,await z()},fSuivre:async({id:Z,fSuivreBd:re})=>{const ie={},pe=[],ue=async()=>{const{données:q,erreurs:G}=ie;q&&await re({données:q,erreurs:G||[]})},W=await this.client.tableaux.suivreDonnées({idTableau:Z,f:async q=>{ie.données=q,await ue()},clefsSelonVariables:D});pe.push(W);const Y=await this.client.tableaux.suivreValidDonnées({idTableau:Z,f:async q=>{ie.erreurs=q,await ue()}});return pe.push(Y),async()=>{await Promise.all(pe.map(q=>q()))}}}),J=await this.client.réseau.suivreAuteursBd({idBd:F,f:async Z=>{j.auteurs=Z,await z()}});return async()=>{await Promise.all([Q,J])}}})}async suivreDonnéesExportationTableau({clefTableau:r,idNuée:_,langues:S,f:E,nRésultatsDésirés:x,héritage:T}){const C={},I=[],B=async()=>{const{colonnes:N,données:O,nomsTableau:M,nomsVariables:L}=C;if(N&&O&&(!S||M&&L)){const F=new Set;let U=await Promise.all(O.map(async H=>({...await this.client.tableaux.formaterÉlément({é:H.élément.données,colonnes:N,fichiersSFIP:F,langues:S}),auteur:H.idCompte})));U=U.map(H=>Object.keys(H).reduce((Q,J)=>{if(J==="auteur")Q[J]=H[J];else{const Z=N.find(ie=>ie.id===J)?.variable;if(!Z)throw new Error(`Colonnne avec id ${J} non trouvée parmis les colonnnes : ${JSON.stringify(N,void 0,2)}.`);const re=S&&L?.[Z]&&traduire(L[Z],S)||J;Q[re]=H[J]}return Q},{}));const j=r.split("/").pop(),z=S&&M&&traduire(M,S)||j;return await E({nomTableau:z,données:U,fichiersSFIP:F})}};if(S){const N=await this.suivreNomsTableauNuée({idNuée:_,clefTableau:r,f:async M=>{C.nomsTableau=M,await B()}});I.push(N);const O=await suivreBdsDeFonctionListe({fListe:async M=>this.suivreVariablesNuée({idNuée:_,f:M}),f:async M=>{C.nomsVariables=Object.fromEntries(M.map(L=>[L.idVar,L.noms])),await B()},fBranche:async(M,L)=>await this.client.variables.suivreNomsVariable({idVariable:M,f:async F=>await L({idVar:M,noms:F})})});I.push(O)}const A=await this.suivreColonnesTableauNuée({idNuée:_,clefTableau:r,f:async N=>{C.colonnes=N,await B()},catégories:!0});I.push(A);const{fOublier:D}=await this.suivreDonnéesTableauNuée({idNuée:_,clefTableau:r,nRésultatsDésirés:x,héritage:T,f:async N=>{C.données=N,await B()}});return I.push(D),async()=>{Promise.all(I.map(N=>N()))}}async suivreDonnéesExportation({idNuée:r,langues:_,f:S,nRésultatsDésirés:E,héritage:x}){const T={},C=[],I=async()=>{const{nomsNuée:D,données:N}=T;if(!N)return;const O=r.split("/").pop(),M=D&&_&&traduire(D,_)||O;await S({nomNuée:M,tableaux:N})},B=await suivreBdsDeFonctionListe({fListe:async D=>await this.suivreTableauxNuée({idNuée:r,f:D}),f:async D=>{T.données=D,await I()},fBranche:async(D,N)=>await this.suivreDonnéesExportationTableau({idNuée:r,clefTableau:D,langues:_,nRésultatsDésirés:E,héritage:x,f:async O=>await N(O)}),fIdBdDeBranche:D=>D.clef,fCode:D=>D.clef});if(C.push(B),_){const D=await this.suivreNomsNuée({idNuée:r,f:async N=>{T.nomsNuée=N,await I()}});C.push(D)}return async()=>{await Promise.all(C.map(D=>D()))}}async exporterDonnéesNuée({idNuée:r,langues:_,nomFichier:S,nRésultatsDésirés:E,héritage:x,patience:T=500}){const C=utils$2.book_new(),I=new Set,B=await uneFois(async A=>await this.suivreDonnéesExportation({idNuée:r,langues:_,f:A,héritage:x,nRésultatsDésirés:E}),attendreStabilité(T));S=S||B.nomNuée;for(const A of B.tableaux){A.fichiersSFIP.forEach(N=>I.add(N));const D=utils$2.json_to_sheet(A.données);utils$2.book_append_sheet(C,D,A.nomTableau.slice(0,30))}return{doc:C,fichiersSFIP:I,nomFichier:S}}async générerDeBd({idBd:r,patience:_=500}){const S=await this.créerNuée({}),[E,x,T,C]=await Promise.all([uneFois(async I=>await this.client.bds.suivreNomsBd({idBd:r,f:I}),attendreStabilité(_)),uneFois(async I=>await this.client.bds.suivreDescriptionsBd({idBd:r,f:I}),attendreStabilité(_)),uneFois(async I=>await this.client.bds.suivreMotsClefsBd({idBd:r,f:I}),attendreStabilité(_)),uneFois(async I=>await this.client.bds.suivreTableauxBd({idBd:r,f:I}),attendreStabilité(_))]);return await Promise.all([this.sauvegarderNomsNuée({idNuée:S,noms:E}),await this.sauvegarderDescriptionsNuée({idNuée:S,descriptions:x}),await this.ajouterMotsClefsNuée({idNuée:S,idsMotsClefs:T})]),await Promise.all(C.map(async I=>{const B=I.id,A=await this.ajouterTableauNuée({idNuée:S,clefTableau:I.clef}),D=await uneFois(async N=>await this.client.tableaux.suivreColonnesTableau({idTableau:B,f:N,catégories:!1}),attendreStabilité(_));for(const N of D){await this.ajouterColonneTableauNuée({idTableau:A,idVariable:N.variable,idColonne:N.id,index:N.index}),await this.changerColIndexTableauNuée({idTableau:A,idColonne:N.id,val:!!N.index});const O=await uneFois(async M=>await this.client.tableaux.suivreRègles({idTableau:B,f:M}),attendreStabilité(_));for(const M of O)M.source.type==="tableau"&&await this.ajouterRègleTableauNuée({idTableau:A,idColonne:N.id,règle:M.règle.règle})}})),S}async générerSchémaBdNuée({idNuée:r,licence:_,patience:S=500}){const[E,x]=await Promise.all([uneFois(async B=>await this.suivreMotsClefsNuée({idNuée:r,f:B}),attendreStabilité(S)),uneFois(async B=>await this.suivreTableauxNuée({idNuée:r,f:B}),attendreStabilité(S))]),T=async B=>await uneFois(async A=>await this.suivreRèglesTableauNuée({idNuée:r,clefTableau:B,f:A}),attendreStabilité(S)),C=async B=>await uneFois(async A=>await this.suivreColonnesTableauNuée({idNuée:r,clefTableau:B,f:A,catégories:!1}),attendreStabilité(S));return{licence:_,nuées:[r],motsClefs:E,tableaux:await Promise.all(x.map(async B=>{const[A,D]=await Promise.all([C(B.clef),T(B.clef)]);return{cols:A.map(N=>{const O=D.some(M=>M.colonne===N.id&&M.règle.règle.typeRègle==="existe");return{idColonne:N.id,idVariable:N.variable,index:!!N.index,optionnelle:!O}}),clef:B.clef}}))}}async effacerNuée({idNuée:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.del(r),await S();for(const x of["noms","descriptions","motsClefs"]){const T=await this.client.obtIdBd({nom:x,racine:r});T&&await this.client.effacerBd({id:T})}const E=await this.client.obtIdBd({nom:"tableaux",racine:r,type:"ordered-keyvalue"});if(E){const{bd:x,fOublier:T}=await this.client.ouvrirBdTypée({id:E,type:"ordered-keyvalue",schéma:schémaBdTableauxDeBd}),C=Object.keys(x.all);for(const I of C)await this.client.tableaux.effacerTableau({idTableau:I});T(),await this.client.effacerBd({id:E})}await this.enleverDeMesNuées({idNuée:r}),await this.client.effacerBd({id:r})}}__decorate([cacheSuivi],Nuées.prototype,"suivreDescriptionsNuée",null);__decorate([cacheSuivi],Nuées.prototype,"suivreImage",null);__decorate([cacheSuivi],Nuées.prototype,"suivreMotsClefsNuée",null);__decorate([cacheSuivi],Nuées.prototype,"suivreNomsTableauNuée",null);__decorate([cacheSuivi],Nuées.prototype,"suivreColonnesTableauNuée",null);__decorate([cacheSuivi],Nuées.prototype,"suivreRèglesTableauNuée",null);__decorate([cacheSuivi],Nuées.prototype,"suivreQualitéNuée",null);__decorate([cacheSuivi],Nuées.prototype,"suivreDifférencesNuéeEtTableau",null);__decorate([cacheSuivi],Nuées.prototype,"suivreDifférencesNuéeEtBd",null);__decorate([cacheSuivi],Nuées.prototype,"suivreCorrespondanceBd",null);__decorate([cacheRechercheParNRésultats],Nuées.prototype,"rechercherNuéesDéscendantes",null);__decorate([cacheSuivi],Nuées.prototype,"suivreNuéesParents",null);__decorate([cacheRechercheParNRésultats],Nuées.prototype,"suivreBdsCorrespondantesDUneNuée",null);__decorate([cacheRechercheParNRésultats],Nuées.prototype,"suivreBdsCorrespondantes",null);__decorate([cacheSuivi],Nuées.prototype,"suivreEmpreinteTêtesBdsNuée",null);__decorate([cacheRechercheParNRésultats],Nuées.prototype,"suivreDonnéesTableauNuée",null);const rechercherVariablesSelonNom=n=>async(r,_,S)=>{const E=async T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;return await S({type:"résultat",score:I,de:"nom",clef:B,info:A})}else return await S()};return await r.variables.suivreNomsVariable({idVariable:_,f:E})},rechercherVariablesSelonDescr=n=>async(r,_,S)=>{const E=async T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;return await S({type:"résultat",score:I,de:"descr",clef:B,info:A})}else return await S()};return await r.variables.suivreDescriptionsVariable({idVariable:_,f:E})},rechercherVariablesSelonTexte=n=>async(r,_,S)=>{const E=rechercherVariablesSelonNom(n),x=rechercherVariablesSelonDescr(n),T=rechercherSelonId(n),C=rechercherTousSiVide(n);return await combinerRecherches({noms:E,descr:x,id:T,vide:C},r,_,S)},rechercherMotsClefsSelonNom=n=>async(r,_,S)=>{const E=async T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;return await S({type:"résultat",score:I,clef:B,info:A,de:"nom"})}else return await S()};return await r.motsClefs.suivreNomsMotClef({idMotClef:_,f:E})},rechercherMotsClefsSelonDescr=n=>async(r,_,S)=>{const E=async T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;return await S({type:"résultat",score:I,clef:B,info:A,de:"descr"})}else return await S()};return await r.motsClefs.suivreDescriptionsMotClef({idMotClef:_,f:E})},rechercherMotsClefsSelonTexte=n=>async(r,_,S)=>{const E=rechercherMotsClefsSelonNom(n),x=rechercherMotsClefsSelonDescr(n),T=rechercherSelonId(n),C=rechercherTousSiVide(n);return await combinerRecherches({noms:E,id:T,descr:x,vide:C},r,_,S)},rechercherBdsSelonNom=n=>async(r,_,S)=>{const E=async T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;return await S({type:"résultat",score:I,clef:B,info:A,de:"nom"})}else return await S()};return await r.bds.suivreNomsBd({idBd:_,f:E})},rechercherBdsSelonDescr=n=>async(r,_,S)=>{const E=async T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;return await S({type:"résultat",score:I,clef:B,info:A,de:"descr"})}else return await S()};return await r.bds.suivreDescriptionsBd({idBd:_,f:E})},rechercherBdsSelonIdVariable=n=>async(r,_,S)=>{const E=async T=>await r.bds.suivreVariablesBd({idBd:_,f:T}),x=rechercherSelonId(n);return await sousRecherche("variable",E,x,r,S)},rechercherBdsSelonNomVariable=n=>async(r,_,S)=>{const E=async T=>await r.bds.suivreVariablesBd({idBd:_,f:T}),x=rechercherVariablesSelonNom(n);return await sousRecherche("variable",E,x,r,S)},rechercherBdsSelonVariable=n=>async(r,_,S)=>await combinerRecherches({id:rechercherBdsSelonIdVariable(n),nom:rechercherBdsSelonNomVariable(n)},r,_,S),rechercherBdsSelonIdMotClef=n=>async(r,_,S)=>{const E=async T=>await r.bds.suivreMotsClefsBd({idBd:_,f:T}),x=rechercherSelonId(n);return await sousRecherche("motClef",E,x,r,S)},rechercherBdsSelonNomMotClef=n=>async(r,_,S)=>{const E=async T=>await r.bds.suivreMotsClefsBd({idBd:_,f:T}),x=rechercherMotsClefsSelonNom(n);return await sousRecherche("motClef",E,x,r,S)},rechercherBdsSelonMotClef=n=>async(r,_,S)=>await combinerRecherches({id:rechercherBdsSelonIdMotClef(n),nom:rechercherBdsSelonNomMotClef(n)},r,_,S),rechercherBdsSelonTexte=n=>async(r,_,S)=>await combinerRecherches({nom:rechercherBdsSelonNom(n),descr:rechercherBdsSelonDescr(n),variables:rechercherBdsSelonVariable(n),motsClefs:rechercherBdsSelonMotClef(n),id:rechercherSelonId(n),vide:rechercherTousSiVide(n)},r,_,S),rechercherProjetsSelonNom=n=>async(r,_,S)=>{const E=T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;S({type:"résultat",score:I,clef:B,info:A,de:"nom"})}else S()};return await r.projets.suivreNomsProjet({idProjet:_,f:E})},rechercherProjetsSelonDescr=n=>async(r,_,S)=>{const E=T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;S({type:"résultat",score:I,clef:B,info:A,de:"descr"})}else S()};return await r.projets.suivreDescriptionsProjet({idProjet:_,f:E})},rechercherProjetsSelonIdBd=n=>async(r,_,S)=>{const E=async T=>await r.projets.suivreBdsProjet({idProjet:_,f:T}),x=rechercherSelonId(n);return await sousRecherche("bd",E,x,r,S)},rechercherProjetsSelonBd=n=>async(r,_,S)=>{const E=async T=>await r.projets.suivreBdsProjet({idProjet:_,f:T}),x=rechercherBdsSelonTexte(n);return await sousRecherche("bd",E,x,r,S)},rechercherProjetsSelonIdVariable=n=>async(r,_,S)=>{const E=async T=>await r.projets.suivreVariablesProjet({idProjet:_,f:T}),x=rechercherSelonId(n);return await sousRecherche("variable",E,x,r,S)},rechercherProjetsSelonNomVariable=n=>async(r,_,S)=>{const E=async T=>await r.projets.suivreVariablesProjet({idProjet:_,f:T}),x=rechercherVariablesSelonNom(n);return await sousRecherche("variable",E,x,r,S)},rechercherProjetsSelonVariable=n=>async(r,_,S)=>{const E=async T=>await r.projets.suivreVariablesProjet({idProjet:_,f:T}),x=rechercherVariablesSelonTexte(n);return await sousRecherche("variable",E,x,r,S)},rechercherProjetsSelonIdMotClef=n=>async(r,_,S)=>{const E=async T=>await r.projets.suivreMotsClefsProjet({idProjet:_,f:C=>T(C.map(I=>I.idMotClef))}),x=rechercherSelonId(n);return await sousRecherche("motClef",E,x,r,S)},rechercherProjetsSelonNomMotClef=n=>async(r,_,S)=>{const E=async T=>await r.projets.suivreMotsClefsProjet({idProjet:_,f:C=>T(C.map(I=>I.idMotClef))}),x=rechercherMotsClefsSelonNom(n);return await sousRecherche("motClef",E,x,r,S)},rechercherProjetsSelonMotClef=n=>async(r,_,S)=>{const E=async T=>await r.projets.suivreMotsClefsProjet({idProjet:_,f:C=>T(C.map(I=>I.idMotClef))}),x=rechercherMotsClefsSelonTexte(n);return await sousRecherche("motClef",E,x,r,S)},rechercherProjetsSelonTexte=n=>async(r,_,S)=>{const E=rechercherProjetsSelonNom(n),x=rechercherProjetsSelonDescr(n),T=rechercherProjetsSelonBd(n),C=rechercherProjetsSelonVariable(n),I=rechercherProjetsSelonMotClef(n),B=rechercherSelonId(n),A=rechercherTousSiVide(n);return await combinerRecherches({noms:E,descr:x,bd:T,variable:C,motClef:I,id:B,tous:A},r,_,S)},rechercherNuéesSelonNom=n=>async(r,_,S)=>{const E=T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;S({type:"résultat",score:I,clef:B,info:A,de:"nom"})}else S()};return await r.nuées.suivreNomsNuée({idNuée:_,f:E})},rechercherNuéesSelonDescr=n=>async(r,_,S)=>{const E=T=>{const C=similTexte(n,T);if(C){const{score:I,clef:B,info:A}=C;S({type:"résultat",score:I,clef:B,info:A,de:"descr"})}else S()};return await r.nuées.suivreDescriptionsNuée({idNuée:_,f:E})},rechercherNuéesSelonIdVariable=n=>async(r,_,S)=>{const E=async T=>await r.nuées.suivreVariablesNuée({idNuée:_,f:T}),x=rechercherSelonId(n);return await sousRecherche("variable",E,x,r,S)},rechercherNuéesSelonNomVariable=n=>async(r,_,S)=>{const E=async T=>await r.nuées.suivreVariablesNuée({idNuée:_,f:T}),x=rechercherVariablesSelonNom(n);return await sousRecherche("variable",E,x,r,S)},rechercherNuéesSelonVariable=n=>async(r,_,S)=>await combinerRecherches({id:rechercherNuéesSelonIdVariable(n),nom:rechercherNuéesSelonNomVariable(n)},r,_,S),rechercherNuéesSelonIdMotClef=n=>async(r,_,S)=>{const E=async T=>await r.nuées.suivreMotsClefsNuée({idNuée:_,f:T}),x=rechercherSelonId(n);return await sousRecherche("motClef",E,x,r,S)},rechercherNuéesSelonNomMotClef=n=>async(r,_,S)=>{const E=async T=>await r.nuées.suivreMotsClefsNuée({idNuée:_,f:T}),x=rechercherMotsClefsSelonNom(n);return await sousRecherche("motClef",E,x,r,S)},rechercherNuéesSelonMotClef=n=>async(r,_,S)=>await combinerRecherches({id:rechercherNuéesSelonIdMotClef(n),nom:rechercherNuéesSelonNomMotClef(n)},r,_,S),rechercherNuéesSelonTexte=n=>async(r,_,S)=>await combinerRecherches({nom:rechercherNuéesSelonNom(n),descr:rechercherNuéesSelonDescr(n),variables:rechercherNuéesSelonVariable(n),motsClefs:rechercherNuéesSelonMotClef(n),id:rechercherSelonId(n),tous:rechercherTousSiVide(n)},r,_,S);class Recherche{client;constructor({client:r}){this.client=r}async rechercherVariables({f:r,nRésultatsDésirés:_,toutLeRéseau:S=!0}){return await this.client.réseau.rechercherVariables({f:r,nRésultatsDésirés:_,toutLeRéseau:S})}async rechercherVariablesSelonId({idVariable:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherSelonId(r);return await this.client.réseau.rechercherVariables({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherVariablesSelonNom({nomVariable:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherVariablesSelonNom(r);return await this.client.réseau.rechercherVariables({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherVariablesSelonDescr({descrVariable:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherVariablesSelonDescr(r);return await this.client.réseau.rechercherVariables({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherVariablesSelonTexte({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherVariablesSelonTexte(r);return await this.client.réseau.rechercherVariables({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherMotsClefs({f:r,nRésultatsDésirés:_,toutLeRéseau:S=!0}){return await this.client.réseau.rechercherMotsClefs({f:r,nRésultatsDésirés:_,toutLeRéseau:S})}async rechercherMotsClefsSelonId({idMotClef:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherSelonId(r);return await this.client.réseau.rechercherMotsClefs({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherMotsClefsSelonNom({nomMotClef:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherMotsClefsSelonNom(r);return await this.client.réseau.rechercherMotsClefs({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherMotsClefsSelonDescr({descrMotClef:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherMotsClefsSelonDescr(r);return await this.client.réseau.rechercherMotsClefs({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherMotsClefsSelonTexte({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherMotsClefsSelonTexte(r);return await this.client.réseau.rechercherMotsClefs({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherBds({f:r,nRésultatsDésirés:_,toutLeRéseau:S=!0}){return await this.client.réseau.rechercherBds({f:r,nRésultatsDésirés:_,toutLeRéseau:S})}async rechercherBdsSelonId({idBd:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherSelonId(r);return await this.client.réseau.rechercherBds({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherBdsSelonNom({nomBd:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherBdsSelonNom(r);return await this.client.réseau.rechercherBds({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherBdsSelonDescr({descrBd:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherBdsSelonDescr(r);return await this.client.réseau.rechercherBds({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherBdsSelonIdMotClef({idMotClef:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherBdsSelonIdMotClef(r);return await this.client.réseau.rechercherBds({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherBdsSelonIdVariable({idVariable:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherBdsSelonIdVariable(r);return await this.client.réseau.rechercherBds({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherBdsSelonNomMotClef({nomMotClef:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherBdsSelonNomMotClef(r);return await this.client.réseau.rechercherBds({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherBdsSelonNomVariable({nomVariable:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherBdsSelonNomVariable(r);return await this.client.réseau.rechercherBds({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherBdsSelonMotClef({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherBdsSelonMotClef(r);return await this.client.réseau.rechercherBds({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherBdsSelonVariable({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherBdsSelonVariable(r);return await this.client.réseau.rechercherBds({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherBdsSelonTexte({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherBdsSelonTexte(r);return await this.client.réseau.rechercherBds({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProfilsSelonId({idCompte:r,f:_,nRésultatsDésirés:S}){const E=rechercherSelonId(r);return await this.client.réseau.rechercherMembres({f:_,nRésultatsDésirés:S,fObjectif:E})}async rechercherProfilsSelonNom({nom:r,f:_,nRésultatsDésirés:S}){const E=rechercherProfilsSelonNom(r);return await this.client.réseau.rechercherMembres({f:_,nRésultatsDésirés:S,fObjectif:E})}async rechercherProfilsSelonImage({image:r,f:_,nRésultatsDésirés:S}){const E=rechercherProfilsSelonImage(r);return await this.client.réseau.rechercherMembres({f:_,nRésultatsDésirés:S,fObjectif:E})}async rechercherProfilsSelonActivité({f:r,nRésultatsDésirés:_}){const S=rechercherProfilsSelonActivité();return await this.client.réseau.rechercherMembres({f:r,nRésultatsDésirés:_,fObjectif:S})}async rechercherProfilsSelonCourriel({courriel:r,f:_,nRésultatsDésirés:S}){const E=rechercherProfilsSelonCourriel(r);return await this.client.réseau.rechercherMembres({f:_,nRésultatsDésirés:S,fObjectif:E})}async rechercherProfilsSelonTexte({texte:r,f:_,nRésultatsDésirés:S}){const E=rechercherProfilsSelonTexte(r);return await this.client.réseau.rechercherMembres({f:_,nRésultatsDésirés:S,fObjectif:E})}async rechercherProjets({f:r,nRésultatsDésirés:_,toutLeRéseau:S=!0}){return await this.client.réseau.rechercherProjets({f:r,nRésultatsDésirés:_,toutLeRéseau:S})}async rechercherProjetsSelonId({idProjet:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherSelonId(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProjetsSelonNom({nomProjet:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherProjetsSelonNom(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProjetsSelonDescr({descrProjet:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherProjetsSelonDescr(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProjetsSelonIdVariable({idVariable:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherProjetsSelonIdVariable(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProjetsSelonNomVariable({nomVariable:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherProjetsSelonNomVariable(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProjetsSelonVariable({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherProjetsSelonVariable(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProjetsSelonIdMotClef({idMotClef:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherProjetsSelonIdMotClef(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProjetsSelonNomMotClef({nomMotClef:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherProjetsSelonNomMotClef(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProjetsSelonMotClef({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherProjetsSelonMotClef(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProjetsSelonIdBd({idBd:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherProjetsSelonIdBd(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProjetsSelonBd({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherProjetsSelonBd(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherProjetsSelonTexte({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherProjetsSelonTexte(r);return await this.client.réseau.rechercherProjets({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherNuées({f:r,nRésultatsDésirés:_,toutLeRéseau:S=!0}){return await this.client.réseau.rechercherNuées({f:r,nRésultatsDésirés:_,toutLeRéseau:S})}async rechercherNuéesSelonId({idNuée:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherSelonId(r);return await this.client.réseau.rechercherNuées({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherNuéesSelonNom({nomNuée:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherNuéesSelonNom(r);return await this.client.réseau.rechercherNuées({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherNuéesSelonDescr({descrNuée:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherNuéesSelonDescr(r);return await this.client.réseau.rechercherNuées({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherNuéesSelonIdMotClef({idMotClef:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherNuéesSelonIdMotClef(r);return await this.client.réseau.rechercherNuées({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherNuéesSelonIdVariable({idVariable:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherNuéesSelonIdVariable(r);return await this.client.réseau.rechercherNuées({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherNuéesSelonNomMotClef({nomMotClef:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherNuéesSelonNomMotClef(r);return await this.client.réseau.rechercherNuées({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherNuéesSelonNomVariable({nomVariable:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherNuéesSelonNomVariable(r);return await this.client.réseau.rechercherNuées({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherNuéesSelonMotClef({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherNuéesSelonMotClef(r);return await this.client.réseau.rechercherNuées({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherNuéesSelonVariable({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherNuéesSelonVariable(r);return await this.client.réseau.rechercherNuées({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}async rechercherNuéesSelonTexte({texte:r,f:_,nRésultatsDésirés:S,toutLeRéseau:E=!0}){const x=rechercherNuéesSelonTexte(r);return await this.client.réseau.rechercherNuées({f:_,nRésultatsDésirés:S,fObjectif:x,toutLeRéseau:E})}}__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherVariables",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherVariablesSelonId",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherVariablesSelonNom",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherVariablesSelonDescr",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherVariablesSelonTexte",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherMotsClefs",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherMotsClefsSelonId",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherMotsClefsSelonNom",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherMotsClefsSelonDescr",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherMotsClefsSelonTexte",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherBds",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherBdsSelonId",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherBdsSelonNom",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherBdsSelonDescr",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherBdsSelonIdMotClef",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherBdsSelonIdVariable",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherBdsSelonNomMotClef",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherBdsSelonNomVariable",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherBdsSelonMotClef",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherBdsSelonVariable",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherBdsSelonTexte",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProfilsSelonId",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProfilsSelonNom",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProfilsSelonImage",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProfilsSelonActivité",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProfilsSelonCourriel",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProfilsSelonTexte",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjets",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonId",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonNom",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonDescr",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonIdVariable",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonNomVariable",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonVariable",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonIdMotClef",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonNomMotClef",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonMotClef",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonIdBd",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonBd",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherProjetsSelonTexte",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherNuées",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherNuéesSelonId",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherNuéesSelonNom",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherNuéesSelonDescr",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherNuéesSelonIdMotClef",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherNuéesSelonIdVariable",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherNuéesSelonNomMotClef",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherNuéesSelonNomVariable",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherNuéesSelonMotClef",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherNuéesSelonVariable",null);__decorate([cacheRechercheParNRésultats],Recherche.prototype,"rechercherNuéesSelonTexte",null);class ImportateurFeuilleCalcul{doc;constructor(r){this.doc=r}obtNomsTableaux(){return this.doc.SheetNames}obtColsTableau(r){const _=this.doc.Sheets[r];return(utils$2.sheet_to_json(_,{header:1})[0]||[]).map(E=>E.toString())}obtDonnées(r,_){const S=this.doc.Sheets[r],E=utils$2.sheet_to_json(S);if(Array.isArray(_))return E.map(x=>Object.fromEntries(Object.keys(x).filter(T=>_.includes(T)).map(T=>[T,x[T]])));{const x=Object.fromEntries(Object.entries(_).map(([T,C])=>[C,T]));return E.map(T=>Object.fromEntries(Object.keys(T).filter(C=>Object.keys(x).includes(C)).map(C=>[x[C],T[C]])))}}}const copieProfonde=n=>JSON.parse(JSON.stringify(n)),estUnDic=n=>typeof n=="object"&&!Array.isArray(n),estUneListe=n=>Array.isArray(n),extraireBranches=(n,r)=>{let _;if(!r.length)return _=estUnDic(n)?Object.values(n):n,{base:{},branches:_};const S=extraireDonnées(n,r.slice(0,r.length-1)),E=r[r.length-1];let x;if(typeof E=="number")if(estUneListe(S)){const T=S[E];if(typeof T!="object")throw new Error(T.toString());x=T,delete S[E]}else throw new Error(`${E} ne peut pas indexer une liste.`);else if(typeof E=="string")if(estUnDic(S)){const T=S[E];if(typeof T!="object")throw new Error(T.toString());x=T,delete S[E]}else throw new Error(`${E} ne peut pas indexer un objet.`);else throw new Error(`${E} n'est pas une clef valide.`);if(estUnDic(x))_=Object.values(x);else if(estUneListe(x))_=x;else throw Error(JSON.stringify(x));return{base:n,branches:_}},injecterBranche=(n,r,_)=>{if(!r.length)Object.assign(n,_);else{const S=r.slice(1,r.length),E=extraireDonnées(n,S),x=r[r.length-1];if(typeof x=="number")if(estUneListe(E))E[x]=_;else throw new Error(`${x} ne peut pas indexer une liste.`);else if(typeof x=="string")if(estUnDic(E))E[x]=_;else throw new Error(`${x} ne peut pas indexer un objet.`);else throw new Error(`${x} n'est pas une clef valide.`)}},aplatirDonnées=(n,r=[],_,S=[])=>{r[r.length-1]!==-1&&r.push(-1);const E=r.indexOf(-1),x=r.slice(0,E),T=r.slice(E+1,r.length),{base:C,branches:I}=extraireBranches(n,x);for(const B of I){if(typeof B!="object")throw new Error(B.toString());const A=copieProfonde(C);injecterBranche(A,x,B),T.length?aplatirDonnées(B,T,A,S):S.push(A)}return S},extraireDonnées=(n,r)=>{let _=n;for(const S of r)if(typeof S=="number")if(estUneListe(_))_=_[S];else throw new Error(`${S} ne peut pas indexer une liste.`);else if(typeof S=="string")if(estUnDic(_))_=_[S];else throw new Error(`${S} ne peut pas indexer un objet.`);else throw new Error(`Clef de type non indexable : ${S}`);return _};class ImportateurDonnéesJSON{donnéesJSON;constructor(r){this.donnéesJSON=r}obtDonnées(r,_,S){let E=[],x=extraireDonnées(this.donnéesJSON,r);if(typeof x!="object")throw new Error(`Type de données erroné : ${x.toString()}`);x=aplatirDonnées(x,_);for(const T of x){if(typeof T!="object")throw new Error(`Élément de type non supporté : ${T}`);E=[Object.fromEntries(Object.keys(S).map(I=>{const B=S[I];let A;try{A=extraireDonnées(T,B)}catch{A=void 0}return[I,A]}).filter(I=>I[1]!==void 0)),...E]}return E}}(isElectronMain||isNode)&&(__vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url).then(n=>set_fs(n)),__vitePreload(()=>Promise.resolve().then(()=>index$4),void 0,import.meta.url).then(n=>__stream.set_readable(n.Readable)));const MESSAGE_NON_DISPO_NAVIGATEUR="L'automatisation de l'importation des fichiers locaux n'est pas disponible sur la version apli internet de Constellation.",schémaBdAutomatisations={type:"object",additionalProperties:{type:"object",anyOf:[{type:"object",properties:{type:{type:"string"},id:{type:"string"},fréquence:{type:"object",properties:{type:{type:"string"},détails:{type:"object",properties:{n:{type:"number"},unités:{type:"string"}},nullable:!0}}},idObjet:{type:"string"},typeObjet:{type:"string"},formatDoc:{type:"string"},dossier:{type:"string",nullable:!0},langues:{type:"array",items:{type:"string"},nullable:!0},dispositifs:{type:"array",items:{type:"string"}},inclureFichiersSFIP:{type:"boolean"},nRésultatsDésirésNuée:{type:"integer",nullable:!0}},required:["type","idObjet","typeObjet","formatDoc","dispositifs","fréquence","inclureFichiersSFIP"]},{type:"object",properties:{id:{type:"string"},fréquence:{type:"object",properties:{type:{type:"string"},détails:{type:"object",properties:{n:{type:"number"},unités:{type:"string"}},nullable:!0}}},idTableau:{type:"string"},dispositif:{type:"string"},source:{type:"object",properties:{typeSource:{type:"string"},adresseFichier:{type:"string",nullable:!0},info:{type:"object",additionalProperties:!0,required:[]}},required:["info","typeSource"]},conversions:{type:"object",nullable:!0,additionalProperties:!0,required:[]}},required:["id","idTableau","dispositif","source"]}],required:["id","type"]},required:[]},obtTempsInterval=n=>{const{n:r,unités:_}=n.détails;switch(_){case"années":return r*365.25*24*60*60*1e3;case"mois":return r*30*24*60*60*1e3;case"semaines":return r*7*24*60*60*1e3;case"jours":return r*24*60*60*1e3;case"heures":return r*60*60*1e3;case"minutes":return r*60*1e3;case"secondes":return r*1e3;case"millisecondes":return r;default:throw new Error(_)}},générerFExportation=(n,r)=>async()=>{const _=await __vitePreload(()=>import("./browser-BvpCU2ob.js").then(A=>A.b),[],import.meta.url),S=await __vitePreload(()=>Promise.resolve().then(()=>index$2),void 0,import.meta.url),E=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url),x=n.dossier?await r.automatisations.résoudreAdressePrivéeFichier({clef:n.dossier}):S.join(_.homedir(),"constellation");if(!x)throw new Error("Dossier introuvable");let T;const C=A=>{const D=A.split(".");return`${D[0]}-${Date.now()}.${D[1]}`};switch(n.typeObjet){case"tableau":{const A=await r.tableaux.exporterDonnées({idTableau:n.idObjet,langues:n.langues});T=A.nomFichier,n.copies&&(T=C(T)),await r.bds.exporterDocumentDonnées({données:A,formatDoc:n.formatDoc,dossier:x,inclureFichiersSFIP:n.inclureFichiersSFIP});break}case"bd":{const A=await r.bds.exporterDonnées({idBd:n.idObjet,langues:n.langues});T=A.nomFichier,n.copies&&(T=C(T)),await r.bds.exporterDocumentDonnées({données:A,formatDoc:n.formatDoc,dossier:x,inclureFichiersSFIP:n.inclureFichiersSFIP});break}case"projet":{const A=await r.projets.exporterDonnées({idProjet:n.idObjet,langues:n.langues});T=A.nomFichier,n.copies&&(T=C(T)),await r.projets.exporterDocumentDonnées({données:A,formatDoc:n.formatDoc,dossier:x,inclureFichiersSFIP:n.inclureFichiersSFIP});break}case"nuée":{const A=await r.nuées.exporterDonnéesNuée({idNuée:n.idObjet,langues:n.langues,nRésultatsDésirés:n.nRésultatsDésirésNuée||1e3,héritage:n.héritage});T=A.nomFichier,n.copies&&(T=C(T)),await r.bds.exporterDocumentDonnées({données:A,formatDoc:n.formatDoc,dossier:x,inclureFichiersSFIP:n.inclureFichiersSFIP});break}default:throw new Error(n.typeObjet)}const I=E.readdirSync(x).filter(A=>{try{return E.statSync(A).isFile()&&B(S.basename(A),T)}catch{return!1}}),B=(A,D)=>{const N=A.split(".").pop()||"";return`${A.slice(0,-(N?.length+1)).split("-").slice(0,-1).join("")}.${N}`===D};if(n.copies){if(n.copies.type==="n"){const A=n.copies.n-I.length;A>0&&I.map(M=>({temps:new Date(E.statSync(M).mtime).valueOf(),fichier:M})).sort((M,L)=>M.temps>L.temps?1:-1).slice(A).map(M=>M.fichier).forEach(M=>E.rmSync(M))}else if(n.copies.type==="temps"){const A=Date.now(),{temps:D}=n.copies;I.filter(O=>{const M=new Date(E.statSync(O).mtime).valueOf();return A-ME.rmSync(O))}}},générerFAuto=(n,r)=>{switch(n.type){case"importation":return async()=>{const _=async T=>await r.automatisations.résoudreAdressePrivéeFichier({clef:T})||void 0,S=await r.automatisations.obtDonnéesImportation(n,_),E=await __vitePreload(()=>Promise.resolve().then(()=>index$2),void 0,import.meta.url);let x;if(n.source.typeSource==="fichier"&&n.source.adresseFichier){const T=await _(n.source.adresseFichier);T&&(x=E.dirname(T))}await r.tableaux.importerDonnées({idTableau:n.idTableau,données:S,conversions:n.conversions,cheminBaseFichiers:x})};case"exportation":return générerFExportation(n,r);default:throw new Error(n)}},lancerAutomatisation=async({spéc:n,idSpéc:r,client:_,fÉtat:S})=>{const E=générerFAuto(n,_),x=`auto: ${r}`,T=n.fréquence?.type==="fixe"?obtTempsInterval(n.fréquence):void 0,C=new s$2;let I="";const B=await _.obtDeStockageLocal({clef:x}),A=new Set([B]),D=async O=>{if(A.has(O))return;if(I=O,await C.acquire("opération"),O!==I||A.has(O)){C.release("opération");return}await _.sauvegarderAuStockageLocal({clef:x,val:O}),A.add(O);const M={type:"sync",depuis:new Date().getTime()};S(M);try{if(await E(),T){const L={type:"programmée",à:Date.now()+T};S(L)}else S({type:"écoute"})}catch(L){const F={type:"erreur",erreur:JSON.stringify({nom:L.name,message:L.message,pile:L.stack,cause:L.cause},void 0,2),prochaineProgramméeÀ:T?Date.now()+T:void 0};S(F)}C.release("opération")},N=async()=>await D(v4$1());if(n.fréquence.type==="fixe"){S({type:"programmée",à:T});const M={},L=async()=>{const J=new Date().getTime();await D(J.toString());const Z=setTimeout(L,T);M.f=async()=>clearTimeout(Z)},F=new Date().getTime(),U=await _.obtDeStockageLocal({clef:x}),j=U?parseInt(U):-1/0,z=F-j,H=setTimeout(L,Math.max(T-z,0));return M.f=async()=>clearTimeout(H),{fOublier:async()=>{M.f&&await M.f()},fLancer:N}}else if(n.fréquence.type==="dynamique")switch(S({type:"écoute"}),n.type){case"exportation":return n.typeObjet==="nuée"?{fOublier:await _.nuées.suivreEmpreinteTêtesBdsNuée({idNuée:n.idObjet,f:D}),fLancer:N}:{fOublier:await _.suivreEmpreinteTêtesBdRécursive({idBd:n.idObjet,f:D}),fLancer:N};case"importation":switch(n.source.typeSource){case"fichier":{if(!isNode&&!isElectronMain)throw new Error(MESSAGE_NON_DISPO_NAVIGATEUR);const M=await __vitePreload(()=>import("chokidar"),[],import.meta.url),L=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url),{adresseFichier:F}=n.source,U=await _.automatisations.résoudreAdressePrivéeFichier({clef:F});if(!U||!L.existsSync(U))throw new Error(`Fichier ${F} introuvable.`);const j=M.watch(U);j.on("change",async()=>{const Z=new Date().getTime().toString();D(Z)});const z=L.statSync(U).mtime.getTime(),H=await _.obtDeStockageLocal({clef:x});if(H?z>parseInt(H):!0){const Z=new Date().getTime().toString();D(Z)}return{fOublier:async()=>await j.close(),fLancer:N}}case"url":return S({type:"erreur",erreur:"La fréquence d'une automatisation d'importation d'URL doit être spécifiée.",prochaineProgramméeÀ:void 0}),{fOublier:faisRien,fLancer:faisRien};default:throw new Error(n.source)}default:throw new Error(n)}else{if(n.fréquence.type==="manuelle")return{fOublier:faisRien,fLancer:N};throw new Error(n.fréquence)}};class AutomatisationActive extends eventsExports.EventEmitter{client;état;fOublier;fLancer;constructor(r,_,S){super(),this.client=S,lancerAutomatisation({spéc:r,idSpéc:_,client:this.client,fÉtat:E=>{this.état=E,this.emit("misÀJour")}}).then(({fOublier:E,fLancer:x})=>{this.fOublier=E,this.fLancer=x,this.emit("prêt")})}async relancer(){this.fOublier||await new Promise(r=>{this.once("prêt",()=>{r()})}),await this.fLancer?.()}async fermer(){this.fOublier||await new Promise(r=>{this.once("prêt",()=>{r()})}),await this.fOublier?.()}}const activePourCeDispositif=(n,r)=>{switch(n.type){case"importation":return n.dispositif===r;case"exportation":return n.dispositifs.includes(r);default:throw new Error(n)}},verrou=new s$2;class Automatisations extends ComposanteClientDic{automatisations;événements;fOublier;constructor({client:r}){super({client:r,clef:"automatisations",schémaBdPrincipale:schémaBdAutomatisations}),this.automatisations={},this.événements=new eventsExports.EventEmitter,this.initialiser()}async initialiser(){this.fOublier=await this.suivreBdPrincipale({f:r=>this.mettreAutosÀJour(Object.values(r))})}async épingler(){await this.client.épingles.épinglerBd({id:await this.obtIdBd(),récursif:!1,fichiers:!1})}async mettreAutosÀJour(r){await verrou.acquire("miseÀJour");const _=Object.keys(this.automatisations);for(const E of _)r.find(x=>x.id===E)||await this.fermerAuto(E);const S=await this.client.obtIdDispositif();for(const E of r)if(activePourCeDispositif(E,S)){if(!Object.keys(this.automatisations).includes(E.id)){const x=new AutomatisationActive(E,E.id,this.client);x.on("misÀJour",()=>this.événements.emit("misÀJour")),this.automatisations[E.id]=x}}else this.automatisations[E.id]&&await this.fermerAuto(E.id);verrou.release("miseÀJour")}async obtDonnéesImportation(r,_=async S=>S){const{typeSource:S}=r.source,{formatDonnées:E}=r.source.info;switch(S){case"url":{const{url:x}=r.source;switch(E){case"json":{const{clefsRacine:T,clefsÉléments:C,cols:I}=r.source.info,B=await importerJSONdURL(x);return new ImportateurDonnéesJSON(B).obtDonnées(T,C,I)}case"feuilleCalcul":{const{nomTableau:T,cols:C,optionsXLSX:I}=r.source.info,B=await importerFeuilleCalculDURL(x,I);return new ImportateurFeuilleCalcul(B).obtDonnées(T,C)}default:throw new Error(E)}}case"fichier":{if(!isElectronMain&&!isNode)throw new Error(MESSAGE_NON_DISPO_NAVIGATEUR);const x=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url),{adresseFichier:T}=r.source,C=await _(T);if(!C||!x.existsSync(C))throw new Error(`Fichier ${C} introuvable.`);switch(E){case"json":{const{clefsRacine:I,clefsÉléments:B,cols:A}=r.source.info,D=await x.promises.readFile(C),N=JSON.parse(D.toString());return new ImportateurDonnéesJSON(N).obtDonnées(I,B,A)}case"feuilleCalcul":{const{nomTableau:I,cols:B}=r.source.info,A=readFileSync(C);return new ImportateurFeuilleCalcul(A).obtDonnées(I,B)}default:throw new Error(E)}}default:throw new Error(S)}}async ajouterAutomatisationExporter({id:r,typeObjet:_,formatDoc:S,inclureFichiersSFIP:E,dossier:x,langues:T,fréquence:C,dispositifs:I,nRésultatsDésirésNuée:B,héritage:A,copies:D}){const{orbite:N}=await this.client.attendreSfipEtOrbite();I=I||[N.identity.id];const O=v4$1(),M=await this.sauvegarderAdressePrivéeFichier({fichier:x}),L={type:"exportation",id:O,idObjet:r,typeObjet:_,dispositifs:I,fréquence:C,formatDoc:S,langues:T,inclureFichiersSFIP:E,dossier:M,nRésultatsDésirésNuée:B,héritage:A,copies:D};Object.keys(L).forEach(j=>{L[j]===void 0&&delete L[j]});const{bd:F,fOublier:U}=await this.obtBd();return await F.put(O,L),await U(),O}async ajouterAutomatisationImporter({idTableau:r,source:_,fréquence:S,dispositif:E}){const{bd:x,fOublier:T}=await this.obtBd(),{orbite:C}=await this.client.attendreSfipEtOrbite();E=E||C.identity.id;const I=v4$1();_.typeSource==="fichier"&&(_.adresseFichier=await this.sauvegarderAdressePrivéeFichier({fichier:_.adresseFichier}));const B={type:"importation",id:I,idTableau:r,dispositif:E,fréquence:S,source:_};return Object.keys(B).forEach(A=>{B[A]===void 0&&delete B[A]}),await x.put(I,B),await T(),I}async annulerAutomatisation({id:r}){const{bd:_,fOublier:S}=await this.obtBd();await _.del(r),await S()}async résoudreAdressePrivéeFichier({clef:r}){return r?await this.client.obtDeStockageLocal({clef:r}):null}async sauvegarderAdressePrivéeFichier({fichier:r}){const _="dossier."+v4$1();return await this.client.sauvegarderAuStockageLocal({clef:_,val:r}),_}async suivreAutomatisations({f:r,idCompte:_}){const S=async E=>{const x=await Promise.all(Object.values(E).map(async T=>{const C=deepcopy(T);if(C.type==="importation"&&C.source.typeSource==="fichier"){const{adresseFichier:I}=C.source;if(I){const B=await this.résoudreAdressePrivéeFichier({clef:I});B?C.source.adresseFichier=B:delete C.source.adresseFichier}}else if(C.type==="exportation"){const{dossier:I}=C;if(I){const B=await this.résoudreAdressePrivéeFichier({clef:I});B?C.dossier=B:delete C.dossier}}return C}));await r(x)};return await this.suivreBdPrincipale({idCompte:_,f:S})}async suivreÉtatAutomatisations({f:r}){const _=async()=>{const S=Object.fromEntries(Object.keys(this.automatisations).map(E=>[E,this.automatisations[E].état]).filter(E=>E[1]));await r(S)};return this.événements.on("misÀJour",_),async()=>{this.événements.off("misÀJour",_)}}async lancerManuellement({id:r}){await this.automatisations[r]?.relancer()}async fermerAuto(r){await this.automatisations[r].fermer(),delete this.automatisations[r]}async fermer(){await Promise.all(Object.keys(this.automatisations).map(r=>{this.fermerAuto(r)})),await this.fOublier?.()}}var empty=null;const empty$1=Object.freeze(Object.defineProperty({__proto__:null,default:empty},Symbol.toStringTag,{value:"Module"})),stockagesLocaux={};class LocalStorage{fichier;_données;_événements;_idRequêteSauvegarde;verrou;fOublier;constructor(r){this.fichier=path.join(r,"données.json"),this._événements=new eventsExports.EventEmitter,this.verrou=new s$2,empty.existsSync(r)||empty.mkdirSync(r,{recursive:!0});try{this._données=JSON.parse(empty.readFileSync(this.fichier).toString())}catch{this._données={}}const _=()=>{const S=v4$1();this._idRequêteSauvegarde=S,this.sauvegarder(S)};this._événements.on("sauvegarder",_),this.fOublier=()=>this._événements.off("sauvegarder",_)}getItem(r){return this._données[r]}setItem(r,_){this._données[r]=_,this.demanderSauvegarde()}demanderSauvegarde(){this._événements.emit("sauvegarder")}removeItem(r){delete this._données[r],this.demanderSauvegarde()}clear(){this._données={},empty.rmSync(this.fichier)}async sauvegarder(r){if(await this.verrou.acquire("sauvegarder"),this._idRequêteSauvegarde!==r){this.verrou.release("sauvegarder");return}await empty.promises.writeFile(this.fichier,JSON.stringify(this._données)),this.verrou.release("sauvegarder")}async fermer(){await this.verrou.acquire("sauvegarder"),this.fOublier&&this.fOublier(),this.verrou.release("sauvegarder")}}const obtStockageLocal=async n=>{if(typeof localStorage>"u"||localStorage===null){const r=path.join(n,"stockageLocal");return stockagesLocaux[r]||(stockagesLocaux[r]=new LocalStorage(r)),stockagesLocaux[r]}else return localStorage},exporterStockageLocal=async n=>{const r=await obtStockageLocal(n);return r instanceof LocalStorage?JSON.stringify(r._données):JSON.stringify(r)};var sha256$6={exports:{}};(function(n,r){(function(_,S){n.exports=S(requireCore())})(commonjsGlobal,function(_){return function(S){var E=_,x=E.lib,T=x.WordArray,C=x.Hasher,I=E.algo,B=[],A=[];(function(){function O(U){for(var j=S.sqrt(U),z=2;z<=j;z++)if(!(U%z))return!1;return!0}function M(U){return(U-(U|0))*4294967296|0}for(var L=2,F=0;F<64;)O(L)&&(F<8&&(B[F]=M(S.pow(L,1/2))),A[F]=M(S.pow(L,1/3)),F++),L++})();var D=[],N=I.SHA256=C.extend({_doReset:function(){this._hash=new T.init(B.slice(0))},_doProcessBlock:function(O,M){for(var L=this._hash.words,F=L[0],U=L[1],j=L[2],z=L[3],H=L[4],Q=L[5],J=L[6],Z=L[7],re=0;re<64;re++){if(re<16)D[re]=O[M+re]|0;else{var ie=D[re-15],pe=(ie<<25|ie>>>7)^(ie<<14|ie>>>18)^ie>>>3,ue=D[re-2],W=(ue<<15|ue>>>17)^(ue<<13|ue>>>19)^ue>>>10;D[re]=pe+D[re-7]+W+D[re-16]}var Y=H&Q^~H&J,q=F&U^F&j^U&j,G=(F<<30|F>>>2)^(F<<19|F>>>13)^(F<<10|F>>>22),ne=(H<<26|H>>>6)^(H<<21|H>>>11)^(H<<7|H>>>25),ee=Z+ne+Y+A[re]+D[re],oe=G+q;Z=J,J=Q,Q=H,H=z+ee|0,z=j,j=U,U=F,F=ee+oe|0}L[0]=L[0]+F|0,L[1]=L[1]+U|0,L[2]=L[2]+j|0,L[3]=L[3]+z|0,L[4]=L[4]+H|0,L[5]=L[5]+Q|0,L[6]=L[6]+J|0,L[7]=L[7]+Z|0},_doFinalize:function(){var O=this._data,M=O.words,L=this._nDataBytes*8,F=O.sigBytes*8;return M[F>>>5]|=128<<24-F%32,M[(F+64>>>9<<4)+14]=S.floor(L/4294967296),M[(F+64>>>9<<4)+15]=L,O.sigBytes=M.length*4,this._process(),this._hash},clone:function(){var O=C.clone.call(this);return O._hash=this._hash.clone(),O}});E.SHA256=C._createHelper(N),E.HmacSHA256=C._createHmacHelper(N)}(Math),_.SHA256})})(sha256$6);var sha256Exports=sha256$6.exports;const sha256$5=getDefaultExportFromCjs(sha256Exports),schémaStructureBdProtocoles={type:"object",additionalProperties:{type:"array",items:{type:"string"}},required:[]};class Protocoles extends ComposanteClientDic{constructor({client:r}){super({client:r,clef:"protocoles",schémaBdPrincipale:schémaStructureBdProtocoles})}async établirProtocoles({protocoles:r,idDispositif:_}){_=_||await this.client.obtIdDispositif();const{bd:S,fOublier:E}=await this.obtBd(),x=(await S.allAsJSON())[_]||[];r?(r.some(T=>!x.includes(T))||x.some(T=>!r.includes(T)))&&await S.put(_,r):x.length&&await S.del(_),await E()}async suivreProtocoles({f:r,idCompte:_}){return await this.suivreBdPrincipale({idCompte:_,f:r})}}__decorate([cacheSuivi],Protocoles.prototype,"suivreProtocoles",null);function assign$1(n,r){for(const _ in r)Object.defineProperty(n,_,{value:r[_],enumerable:!0,configurable:!0});return n}function createError(n,r,_){if(!n||typeof n=="string")throw new TypeError("Please pass an Error to err-code");_||(_={}),typeof r=="object"&&(_=r,r=""),r&&(_.code=r);try{return assign$1(n,_)}catch{_.message=n.message,_.stack=n.stack;const E=function(){};return E.prototype=Object.create(Object.getPrototypeOf(n)),assign$1(new E,_)}}var errCode=createError;const errCode$1=getDefaultExportFromCjs(errCode);function openFailedError(n){return n=n??new Error("Open failed"),errCode$1(n,"ERR_OPEN_FAILED")}function closeFailedError(n){return n=n??new Error("Close failed"),errCode$1(n,"ERR_CLOSE_FAILED")}function putFailedError(n){return n=n??new Error("Put failed"),errCode$1(n,"ERR_PUT_FAILED")}function getFailedError(n){return n=n??new Error("Get failed"),errCode$1(n,"ERR_GET_FAILED")}function deleteFailedError(n){return n=n??new Error("Delete failed"),errCode$1(n,"ERR_DELETE_FAILED")}function hasFailedError(n){return n=n??new Error("Has failed"),errCode$1(n,"ERR_HAS_FAILED")}function notFoundError$1(n){return n=n??new Error("Not Found"),errCode$1(n,"ERR_NOT_FOUND")}function abortedError(n){return n=n??new Error("Aborted"),errCode$1(n,"ERR_ABORTED")}const ErrorsImport=Object.freeze(Object.defineProperty({__proto__:null,abortedError,closeFailedError,deleteFailedError,getFailedError,hasFailedError,notFoundError:notFoundError$1,openFailedError,putFailedError},Symbol.toStringTag,{value:"Module"}));class BaseBlockstore{has(r,_){return Promise.reject(new Error(".has is not implemented"))}put(r,_,S){return Promise.reject(new Error(".put is not implemented"))}async*putMany(r,_){for await(const{cid:S,block:E}of r)await this.put(S,E,_),yield S}get(r,_){return Promise.reject(new Error(".get is not implemented"))}async*getMany(r,_){for await(const S of r)yield{cid:S,block:await this.get(S,_)}}delete(r,_){return Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(r,_){for await(const S of r)await this.delete(S,_),yield S}async*getAll(r){throw new Error(".getAll is not implemented")}}class MemoryBlockstore extends BaseBlockstore{data;constructor(){super(),this.data=new Map}put(r,_){return this.data.set(base32$f.encode(r.multihash.bytes),_),r}get(r){const _=this.data.get(base32$f.encode(r.multihash.bytes));if(_==null)throw notFoundError$1();return _}has(r){return this.data.has(base32$f.encode(r.multihash.bytes))}async delete(r){this.data.delete(base32$f.encode(r.multihash.bytes))}async*getAll(){for(const[r,_]of this.data.entries())yield{cid:CID$9.createV1(code$c,decode$$(base32$f.decode(r))),block:_}}}logger$3("blockstore:core:tiered");const Errors={...ErrorsImport};function notFoundError(n){return n=n??new Error("Not Found"),errCode$1(n,"ERR_NOT_FOUND")}const pathSepS="/",pathSepB=new TextEncoder().encode(pathSepS),pathSep=pathSepB[0];class Key{_buf;constructor(r,_){if(typeof r=="string")this._buf=fromString$6(r);else if(r instanceof Uint8Array)this._buf=r;else throw new Error("Invalid key, should be String of Uint8Array");if(_==null&&(_=!0),_&&this.clean(),this._buf.byteLength===0||this._buf[0]!==pathSep)throw new Error("Invalid key")}toString(r="utf8"){return toString$8(this._buf,r)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(r){return new Key(r.join(pathSepS))}static random(){return new Key(Math.random().toString().substring(2))}static asKey(r){return r instanceof Uint8Array||typeof r=="string"?new Key(r):typeof r.uint8Array=="function"?new Key(r.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=pathSepB),this._buf[0]!==pathSep){const r=new Uint8Array(this._buf.byteLength+1);r.fill(pathSep,0,1),r.set(this._buf,1),this._buf=r}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===pathSep;)this._buf=this._buf.subarray(0,-1)}less(r){const _=this.list(),S=r.list();for(let E=0;E<_.length;E++){if(S.lengthT)return!1}return _.length_.namespaces()))])}}function namespaceType(n){const r=n.split(":");return r.length<2?"":r.slice(0,-1).join(":")}function namespaceValue(n){const r=n.split(":");return r[r.length-1]}function flatten(n){return[].concat(...n)}const SHARDING_FN="SHARDING";function isAsyncIterable$4(n){return n[Symbol.asyncIterator]!=null}function sort(n,r){return isAsyncIterable$4(n)?async function*(){yield*(await all$1(n)).sort(r)}():function*(){yield*all$1(n).sort(r)}()}function isAsyncIterable$3(n){return n[Symbol.asyncIterator]!=null}function take(n,r){return isAsyncIterable$3(n)?async function*(){let _=0;if(!(r<1)){for await(const S of n)if(yield S,_++,_===r)return}}():function*(){let _=0;if(!(r<1)){for(const S of n)if(yield S,_++,_===r)return}}()}class BaseDatastore{put(r,_,S){return Promise.reject(new Error(".put is not implemented"))}get(r,_){return Promise.reject(new Error(".get is not implemented"))}has(r,_){return Promise.reject(new Error(".has is not implemented"))}delete(r,_){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(r,_={}){for await(const{key:S,value:E}of r)await this.put(S,E,_),yield S}async*getMany(r,_={}){for await(const S of r)yield{key:S,value:await this.get(S,_)}}async*deleteMany(r,_={}){for await(const S of r)await this.delete(S,_),yield S}batch(){let r=[],_=[];return{put(S,E){r.push({key:S,value:E})},delete(S){_.push(S)},commit:async S=>{await drain(this.putMany(r,S)),r=[],await drain(this.deleteMany(_,S)),_=[]}}}async*_all(r,_){throw new Error("._all is not implemented")}async*_allKeys(r,_){throw new Error("._allKeys is not implemented")}query(r,_){let S=this._all(r,_);if(r.prefix!=null){const E=r.prefix;S=filter(S,x=>x.key.toString().startsWith(E))}if(Array.isArray(r.filters)&&(S=r.filters.reduce((E,x)=>filter(E,x),S)),Array.isArray(r.orders)&&(S=r.orders.reduce((E,x)=>sort(E,x),S)),r.offset!=null){let E=0;const x=r.offset;S=filter(S,()=>E++>=x)}return r.limit!=null&&(S=take(S,r.limit)),S}queryKeys(r,_){let S=this._allKeys(r,_);if(r.prefix!=null){const E=r.prefix;S=filter(S,x=>x.toString().startsWith(E))}if(Array.isArray(r.filters)&&(S=r.filters.reduce((E,x)=>filter(E,x),S)),Array.isArray(r.orders)&&(S=r.orders.reduce((E,x)=>sort(E,x),S)),r.offset!=null){const E=r.offset;let x=0;S=filter(S,()=>x++>=E)}return r.limit!=null&&(S=take(S,r.limit)),S}}class MemoryDatastore extends BaseDatastore{data;constructor(){super(),this.data=new Map}put(r,_){return this.data.set(r.toString(),_),r}get(r){const _=this.data.get(r.toString());if(_==null)throw notFoundError();return _}has(r){return this.data.has(r.toString())}delete(r){this.data.delete(r.toString())}*_all(){for(const[r,_]of this.data.entries())yield{key:new Key(r),value:_}}*_allKeys(){for(const r of this.data.keys())yield new Key(r)}}new Key(SHARDING_FN);logger$3("datastore:core:tiered");function anySignal(n){const r=new globalThis.AbortController;function _(){r.abort();for(const x of n)x?.removeEventListener!=null&&x.removeEventListener("abort",_)}for(const x of n){if(x?.aborted===!0){_();break}x?.addEventListener!=null&&x.addEventListener("abort",_)}function S(){for(const x of n)x?.removeEventListener!=null&&x.removeEventListener("abort",_)}const E=r.signal;return E.clear=S,E}function isAsyncIterable$2(n){return n[Symbol.asyncIterator]!=null}function isPromise$5(n){return n?.then!=null}function forEach(n,r){let _=0;if(isAsyncIterable$2(n))return async function*(){for await(const I of n){const B=r(I,_++);isPromise$5(B)&&await B,yield I}}();const S=peekable(n),{value:E,done:x}=S.next();if(x===!0)return function*(){}();if(typeof r(E,_++)?.then=="function")return async function*(){yield E;for await(const I of S){const B=r(I,_++);isPromise$5(B)&&await B,yield I}}();const C=r;return function*(){yield E;for(const I of S)C(I,_++),yield I}()}function equals$a(n,r){if(n===r)return!0;if(n.byteLength!==r.byteLength)return!1;for(let _=0;_=255)throw new TypeError("Alphabet too long");for(var _=new Uint8Array(256),S=0;S<_.length;S++)_[S]=255;for(var E=0;E>>0,H=new Uint8Array(z);U!==j;){for(var Q=M[U],J=0,Z=z-1;(Q!==0||J>>0,H[Z]=Q%C>>>0,Q=Q/C>>>0;if(Q!==0)throw new Error("Non-zero carry");F=J,U++}for(var re=z-F;re!==z&&H[re]===0;)re++;for(var ie=I.repeat(L);re>>0,z=new Uint8Array(j);M[L];){var H=_[M.charCodeAt(L)];if(H===255)return;for(var Q=0,J=j-1;(H!==0||Q>>0,z[J]=H%256>>>0,H=H/256>>>0;if(H!==0)throw new Error("Non-zero carry");U=Q,L++}if(M[L]!==" "){for(var Z=j-U;Z!==j&&z[Z]===0;)Z++;for(var re=new Uint8Array(F+(j-Z)),ie=F;Z!==j;)re[ie++]=z[Z++];return re}}}function O(M){var L=N(M);if(L)return L;throw new Error(`Non-${r} character`)}return{encode:D,decodeUnsafe:N,decode:O}}var src$7=base$7,_brrp__multiformats_scope_baseX$6=src$7;let Encoder$7=class{name;prefix;baseEncode;constructor(r,_,S){this.name=r,this.prefix=_,this.baseEncode=S}encode(r){if(r instanceof Uint8Array)return`${this.prefix}${this.baseEncode(r)}`;throw Error("Unknown type, must be binary type")}},Decoder$8=class{name;prefix;baseDecode;prefixCodePoint;constructor(r,_,S){if(this.name=r,this.prefix=_,_.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=_.codePointAt(0),this.baseDecode=S}decode(r){if(typeof r=="string"){if(r.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(r)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(r.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(r){return or$8(this,r)}},ComposedDecoder$6=class{decoders;constructor(r){this.decoders=r}or(r){return or$8(this,r)}decode(r){const _=r[0],S=this.decoders[_];if(S!=null)return S.decode(r);throw RangeError(`Unable to decode multibase string ${JSON.stringify(r)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function or$8(n,r){return new ComposedDecoder$6({...n.decoders??{[n.prefix]:n},...r.decoders??{[r.prefix]:r}})}let Codec$6=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(r,_,S,E){this.name=r,this.prefix=_,this.baseEncode=S,this.baseDecode=E,this.encoder=new Encoder$7(r,_,S),this.decoder=new Decoder$8(r,_,E)}encode(r){return this.encoder.encode(r)}decode(r){return this.decoder.decode(r)}};function from$b({name:n,prefix:r,encode:_,decode:S}){return new Codec$6(n,r,_,S)}function baseX$6({name:n,prefix:r,alphabet:_}){const{encode:S,decode:E}=_brrp__multiformats_scope_baseX$6(_,n);return from$b({prefix:r,name:n,encode:S,decode:x=>coerce$6(E(x))})}function decode$x(n,r,_,S){const E={};for(let A=0;A=8&&(C-=8,T[B++]=255&I>>C)}if(C>=_||255&I<<8-C)throw new SyntaxError("Unexpected end of data");return T}function encode$o(n,r,_){const S=r[r.length-1]==="=",E=(1<<_)-1;let x="",T=0,C=0;for(let I=0;I_;)T-=_,x+=r[E&C>>T];if(T!==0&&(x+=r[E&C<<_-T]),S)for(;x.length*_&7;)x+="=";return x}function rfc4648$6({name:n,prefix:r,bitsPerChar:_,alphabet:S}){return from$b({prefix:r,name:n,encode(E){return encode$o(E,S,_)},decode(E){return decode$x(E,S,_,n)}})}const base32$9=rfc4648$6({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5});rfc4648$6({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5});rfc4648$6({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5});rfc4648$6({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5});rfc4648$6({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5});rfc4648$6({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5});rfc4648$6({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5});rfc4648$6({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5});rfc4648$6({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});const base58btc$5=baseX$6({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"});baseX$6({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var encode_1$8=encode$n,MSB$c=128,REST$c=127,MSBALL$8=~REST$c,INT$8=Math.pow(2,31);function encode$n(n,r,_){r=r||[],_=_||0;for(var S=_;n>=INT$8;)r[_++]=n&255|MSB$c,n/=128;for(;n&MSBALL$8;)r[_++]=n&255|MSB$c,n>>>=7;return r[_]=n|0,encode$n.bytes=_-S+1,r}var decode$w=read$9,MSB$1$6=128,REST$1$6=127;function read$9(n,S){var _=0,S=S||0,E=0,x=S,T,C=n.length;do{if(x>=C)throw read$9.bytes=0,new RangeError("Could not decode varint");T=n[x++],_+=E<28?(T&REST$1$6)<=MSB$1$6);return read$9.bytes=x-S,_}var N1$8=Math.pow(2,7),N2$8=Math.pow(2,14),N3$8=Math.pow(2,21),N4$8=Math.pow(2,28),N5$8=Math.pow(2,35),N6$8=Math.pow(2,42),N7$8=Math.pow(2,49),N8$8=Math.pow(2,56),N9$8=Math.pow(2,63),length$9=function(n){return n{const[D,N]=decode$v(r.subarray(_));return _+=N,D};let E=S(),x=DAG_PB_CODE$3;if(E===18?(E=0,_=0):x=S(),E!==0&&E!==1)throw new RangeError(`Invalid CID version ${E}`);const T=_,C=S(),I=S(),B=_+I,A=B-T;return{version:E,codec:x,multihashCode:C,digestSize:I,multihashSize:A,size:B}}static parse(r,_){const[S,E]=parseCIDtoBytes$3(r,_),x=Kt.decode(E);if(x.version===0&&r[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return baseCache$3(x).set(S,r),x}};function parseCIDtoBytes$3(n,r){switch(n[0]){case"Q":{const _=r??base58btc$5;return[base58btc$5.prefix,_.decode(`${base58btc$5.prefix}${n}`)]}case base58btc$5.prefix:{const _=r??base58btc$5;return[base58btc$5.prefix,_.decode(n)]}case base32$9.prefix:{const _=r??base32$9;return[base32$9.prefix,_.decode(n)]}default:{if(r==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[n[0],r.decode(n)]}}}function toStringV0$3(n,r,_){const{prefix:S}=_;if(S!==base58btc$5.prefix)throw Error(`Cannot string encode V0 in ${_.name} encoding`);const E=r.get(S);if(E==null){const x=_.encode(n).slice(1);return r.set(S,x),x}else return E}function toStringV1$3(n,r,_){const{prefix:S}=_,E=r.get(S);if(E==null){const x=_.encode(n);return r.set(S,x),x}else return E}const DAG_PB_CODE$3=112,SHA_256_CODE$3=18;function encodeCID$3(n,r,_){const S=encodingLength$5(n),E=S+encodingLength$5(r),x=new Uint8Array(E+_.byteLength);return encodeTo$5(n,x,0),encodeTo$5(r,x,S),x.set(_,E),x}const cidSymbol$3=Symbol.for("@ipld/js-cid/CID");class TrackedMap extends Map{metric;constructor(r){super();const{name:_,metrics:S}=r;this.metric=S.registerMetric(_),this.updateComponentMetric()}set(r,_){return super.set(r,_),this.updateComponentMetric(),this}delete(r){const _=super.delete(r);return this.updateComponentMetric(),_}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}}function trackedMap(n){const{name:r,metrics:_}=n;let S;return _!=null?S=new TrackedMap({name:r,metrics:_}):S=new Map,S}function from$a({name:n,code:r,encode:_}){return new Hasher$4(n,r,_)}let Hasher$4=class{name;code;encode;constructor(r,_,S){this.name=r,this.code=_,this.encode=S}digest(r){if(r instanceof Uint8Array){const _=this.encode(r);return _ instanceof Uint8Array?create$a(this.code,_):_.then(S=>create$a(this.code,S))}else throw Error("Unknown type, must be binary type")}};function sha$4(n){return async r=>new Uint8Array(await crypto.subtle.digest(n,r))}const sha256$4=from$a({name:"sha2-256",code:18,encode:sha$4("SHA-256")});var encode_1$7=encode$m,MSB$b=128,REST$b=127,MSBALL$7=~REST$b,INT$7=Math.pow(2,31);function encode$m(n,r,_){r=r||[],_=_||0;for(var S=_;n>=INT$7;)r[_++]=n&255|MSB$b,n/=128;for(;n&MSBALL$7;)r[_++]=n&255|MSB$b,n>>>=7;return r[_]=n|0,encode$m.bytes=_-S+1,r}var decode$t=read$8,MSB$a=128,REST$a=127;function read$8(n,S){var _=0,S=S||0,E=0,x=S,T,C=n.length;do{if(x>=C)throw read$8.bytes=0,new RangeError("Could not decode varint");T=n[x++],_+=E<28?(T&REST$a)<=MSB$a);return read$8.bytes=x-S,_}var N1$7=Math.pow(2,7),N2$7=Math.pow(2,14),N3$7=Math.pow(2,21),N4$7=Math.pow(2,28),N5$7=Math.pow(2,35),N6$7=Math.pow(2,42),N7$7=Math.pow(2,49),N8$7=Math.pow(2,56),N9$7=Math.pow(2,63),length$8=function(n){return n{if(!(n instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");const r=[];for(;n.length>0;){const _=varint$7.decode(n);r.push(_),n=n.slice(varint$7.decode.bytes)}return r};const vd=getDefaultExportFromCjs(src$6);class WantListEntry{_refCounter;cid;priority;wantType;constructor(r,_,S){this._refCounter=1,this.cid=r,this.priority=_??1,this.wantType=S}inc(){this._refCounter+=1}dec(){this._refCounter=Math.max(0,this._refCounter-1)}hasRefs(){return this._refCounter>0}get[Symbol.toStringTag](){return`WantlistEntry `}equals(r){return this._refCounter===r._refCounter&&this.cid.equals(r.cid)&&this.priority===r.priority&&this.wantType===r.wantType}}class BitswapMessageEntry{entry;cancel;sendDontHave;constructor(r,_,S,E,x){this.entry=new WantListEntry(r,_,S),this.cancel=!!E,this.sendDontHave=!!x}get cid(){return this.entry.cid}set cid(r){this.entry.cid=r}get priority(){return this.entry.priority}set priority(r){this.entry.priority=r}get wantType(){return this.entry.wantType}set wantType(r){this.entry.wantType=r}get[Symbol.toStringTag](){return`BitswapMessageEntry ${this.cid.toString(base58btc$5)} `}equals(r){return this.cancel===r.cancel&&this.sendDontHave===r.sendDontHave&&this.wantType===r.wantType&&this.entry.equals(r.entry)}}const logger$2=(n,r)=>{const _=["bitswap"];return r!=null&&_.push(r),n!=null&&_.push(`${n.toString().slice(0,8)}`),logger$3(_.join(":"))},isMapEqual=(n,r)=>{if(n.size!==r.size)return!1;for(const[_,S]of n){const E=r.get(_);if(E===void 0||S instanceof Uint8Array&&E instanceof Uint8Array&&!equals$l(S,E)||S instanceof BitswapMessageEntry&&E instanceof BitswapMessageEntry&&!S.equals(E))return!1}return!0};var encode_1$6=encode$l,MSB$9=128,REST$9=127,MSBALL$6=~REST$9,INT$6=Math.pow(2,31);function encode$l(n,r,_){if(Number.MAX_SAFE_INTEGER&&n>Number.MAX_SAFE_INTEGER)throw encode$l.bytes=0,new RangeError("Could not encode varint");r=r||[],_=_||0;for(var S=_;n>=INT$6;)r[_++]=n&255|MSB$9,n/=128;for(;n&MSBALL$6;)r[_++]=n&255|MSB$9,n>>>=7;return r[_]=n|0,encode$l.bytes=_-S+1,r}var decode$s=read$7,MSB$8=128,REST$8=127;function read$7(n,S){var _=0,S=S||0,E=0,x=S,T,C=n.length;do{if(x>=C||E>49)throw read$7.bytes=0,new RangeError("Could not decode varint");T=n[x++],_+=E<28?(T&REST$8)<=MSB$8);return read$7.bytes=x-S,_}var N1$6=Math.pow(2,7),N2$6=Math.pow(2,14),N3$6=Math.pow(2,21),N4$6=Math.pow(2,28),N5$6=Math.pow(2,35),N6$6=Math.pow(2,42),N7$6=Math.pow(2,49),N8$6=Math.pow(2,56),N9$6=Math.pow(2,63),length$7=function(n){return nS+index$1.encodingLength(E),0)),_=0;for(const S of n)r=varint$6.encode(S,r,_),_+=index$1.encodingLength(S);return r}var Message$4;(function(n){(function(E){let x;(function(I){I.Block="Block",I.Have="Have"})(x=E.WantType||(E.WantType={}));let T;(function(I){I[I.Block=0]="Block",I[I.Have=1]="Have"})(T||(T={})),function(I){I.codec=()=>enumeration(T)}(x=E.WantType||(E.WantType={})),function(I){let B;I.codec=()=>(B==null&&(B=message((A,D,N={})=>{N.lengthDelimited!==!1&&D.fork(),A.block!=null&&A.block.byteLength>0&&(D.uint32(10),D.bytes(A.block)),A.priority!=null&&A.priority!==0&&(D.uint32(16),D.int32(A.priority)),A.cancel!=null&&A.cancel!==!1&&(D.uint32(24),D.bool(A.cancel)),A.wantType!=null&&T[A.wantType]!==0&&(D.uint32(32),n.Wantlist.WantType.codec().encode(A.wantType,D)),A.sendDontHave!=null&&A.sendDontHave!==!1&&(D.uint32(40),D.bool(A.sendDontHave)),N.lengthDelimited!==!1&&D.ldelim()},(A,D)=>{const N={block:new Uint8Array(0),priority:0,cancel:!1,wantType:x.Block,sendDontHave:!1},O=D==null?A.len:A.pos+D;for(;A.pos>>3){case 1:N.block=A.bytes();break;case 2:N.priority=A.int32();break;case 3:N.cancel=A.bool();break;case 4:N.wantType=n.Wantlist.WantType.codec().decode(A);break;case 5:N.sendDontHave=A.bool();break;default:A.skipType(M&7);break}}return N})),B),I.encode=A=>encodeMessage(A,I.codec()),I.decode=A=>decodeMessage$1(A,I.codec())}(E.Entry||(E.Entry={}));let C;E.codec=()=>(C==null&&(C=message((I,B,A={})=>{if(A.lengthDelimited!==!1&&B.fork(),I.entries!=null)for(const D of I.entries)B.uint32(10),n.Wantlist.Entry.codec().encode(D,B);I.full!=null&&I.full!==!1&&(B.uint32(16),B.bool(I.full)),A.lengthDelimited!==!1&&B.ldelim()},(I,B)=>{const A={entries:[],full:!1},D=B==null?I.len:I.pos+B;for(;I.pos>>3){case 1:A.entries.push(n.Wantlist.Entry.codec().decode(I,I.uint32()));break;case 2:A.full=I.bool();break;default:I.skipType(N&7);break}}return A})),C),E.encode=I=>encodeMessage(I,E.codec()),E.decode=I=>decodeMessage$1(I,E.codec())})(n.Wantlist||(n.Wantlist={})),function(E){let x;E.codec=()=>(x==null&&(x=message((T,C,I={})=>{I.lengthDelimited!==!1&&C.fork(),T.prefix!=null&&T.prefix.byteLength>0&&(C.uint32(10),C.bytes(T.prefix)),T.data!=null&&T.data.byteLength>0&&(C.uint32(18),C.bytes(T.data)),I.lengthDelimited!==!1&&C.ldelim()},(T,C)=>{const I={prefix:new Uint8Array(0),data:new Uint8Array(0)},B=C==null?T.len:T.pos+C;for(;T.pos>>3){case 1:I.prefix=T.bytes();break;case 2:I.data=T.bytes();break;default:T.skipType(A&7);break}}return I})),x),E.encode=T=>encodeMessage(T,E.codec()),E.decode=T=>decodeMessage$1(T,E.codec())}(n.Block||(n.Block={}));let r;(function(E){E.Have="Have",E.DontHave="DontHave"})(r=n.BlockPresenceType||(n.BlockPresenceType={}));let _;(function(E){E[E.Have=0]="Have",E[E.DontHave=1]="DontHave"})(_||(_={})),function(E){E.codec=()=>enumeration(_)}(r=n.BlockPresenceType||(n.BlockPresenceType={})),function(E){let x;E.codec=()=>(x==null&&(x=message((T,C,I={})=>{I.lengthDelimited!==!1&&C.fork(),T.cid!=null&&T.cid.byteLength>0&&(C.uint32(10),C.bytes(T.cid)),T.type!=null&&_[T.type]!==0&&(C.uint32(16),n.BlockPresenceType.codec().encode(T.type,C)),I.lengthDelimited!==!1&&C.ldelim()},(T,C)=>{const I={cid:new Uint8Array(0),type:r.Have},B=C==null?T.len:T.pos+C;for(;T.pos>>3){case 1:I.cid=T.bytes();break;case 2:I.type=n.BlockPresenceType.codec().decode(T);break;default:T.skipType(A&7);break}}return I})),x),E.encode=T=>encodeMessage(T,E.codec()),E.decode=T=>decodeMessage$1(T,E.codec())}(n.BlockPresence||(n.BlockPresence={}));let S;n.codec=()=>(S==null&&(S=message((E,x,T={})=>{if(T.lengthDelimited!==!1&&x.fork(),E.wantlist!=null&&(x.uint32(10),n.Wantlist.codec().encode(E.wantlist,x)),E.blocks!=null)for(const C of E.blocks)x.uint32(18),x.bytes(C);if(E.payload!=null)for(const C of E.payload)x.uint32(26),n.Block.codec().encode(C,x);if(E.blockPresences!=null)for(const C of E.blockPresences)x.uint32(34),n.BlockPresence.codec().encode(C,x);E.pendingBytes!=null&&E.pendingBytes!==0&&(x.uint32(40),x.int32(E.pendingBytes)),T.lengthDelimited!==!1&&x.ldelim()},(E,x)=>{const T={blocks:[],payload:[],blockPresences:[],pendingBytes:0},C=x==null?E.len:E.pos+x;for(;E.pos>>3){case 1:T.wantlist=n.Wantlist.codec().decode(E,E.uint32());break;case 2:T.blocks.push(E.bytes());break;case 3:T.payload.push(n.Block.codec().decode(E,E.uint32()));break;case 4:T.blockPresences.push(n.BlockPresence.codec().decode(E,E.uint32()));break;case 5:T.pendingBytes=E.int32();break;default:E.skipType(I&7);break}}return T})),S),n.encode=E=>encodeMessage(E,n.codec()),n.decode=E=>decodeMessage$1(E,n.codec())})(Message$4||(Message$4={}));class BitswapMessage{static Entry=BitswapMessageEntry;static WantType={Block:Message$4.Wantlist.WantType.Block,Have:Message$4.Wantlist.WantType.Have};static BlockPresenceType={Have:Message$4.BlockPresenceType.Have,DontHave:Message$4.BlockPresenceType.DontHave};static deserialize=async(r,_)=>{const S=Message$4.decode(r),E=S.wantlist?.full===!0,x=new BitswapMessage(E);return S.wantlist?.entries.forEach(T=>{if(T.block==null)return;const C=CID$3.decode(T.block);x.addEntry(C,T.priority??0,T.wantType,!!T.cancel,!!T.sendDontHave)}),S.blockPresences.forEach(T=>{if(T.cid==null)return;const C=CID$3.decode(T.cid);T.type===BitswapMessage.BlockPresenceType.Have?x.addHave(C):x.addDontHave(C)}),S.blocks.length>0?(await Promise.all(S.blocks.map(async T=>{const C=await sha256$4.digest(T),I=CID$3.createV0(C);x.addBlock(I,T)})),x):(S.payload.length>0&&(await Promise.all(S.payload.map(async T=>{if(T.prefix==null||T.data==null)return;const C=vd(T.prefix),I=C[0],B=C[1],A=C[2],D=A===sha256$4.code?sha256$4:await _?.getHasher(A);if(D==null)throw new CodeError$4("Unknown hash algorithm","ERR_UNKNOWN_HASH_ALG");const N=await D.digest(T.data),O=CID$3.create(I,B,N);x.addBlock(O,T.data)})),x.setPendingBytes(S.pendingBytes)),x)};static blockPresenceSize=r=>r.bytes.length+1;full;wantlist;blocks;blockPresences;pendingBytes;constructor(r){this.full=r,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}get empty(){return this.blocks.size===0&&this.wantlist.size===0&&this.blockPresences.size===0}addEntry(r,_,S,E,x){S==null&&(S=BitswapMessage.WantType.Block);const T=r.toString(base58btc$5),C=this.wantlist.get(T);C!=null?(C.wantType===S&&(C.priority=_),E===!0&&(C.cancel=!!E),x===!0&&(C.sendDontHave=!!x),S===BitswapMessage.WantType.Block&&C.wantType===BitswapMessage.WantType.Have&&(C.wantType=S)):this.wantlist.set(T,new BitswapMessageEntry(r,_,S,E,x))}addBlock(r,_){const S=r.toString(base58btc$5);this.blocks.set(S,_)}addHave(r){const _=r.toString(base58btc$5);this.blockPresences.has(_)||this.blockPresences.set(_,BitswapMessage.BlockPresenceType.Have)}addDontHave(r){const _=r.toString(base58btc$5);this.blockPresences.has(_)||this.blockPresences.set(_,BitswapMessage.BlockPresenceType.DontHave)}cancel(r){const _=r.toString(base58btc$5);this.wantlist.delete(_),this.addEntry(r,0,BitswapMessage.WantType.Block,!0,!1)}setPendingBytes(r){this.pendingBytes=r}serializeToBitswap100(){return Message$4.encode({wantlist:{entries:Array.from(this.wantlist.values()).map(r=>({block:r.cid.bytes,priority:Number(r.priority),cancel:!!r.cancel,wantType:Message$4.Wantlist.WantType.Block,sendDontHave:!1})),full:!!this.full},blocks:Array.from(this.blocks.values())})}serializeToBitswap110(){const r={wantlist:{entries:Array.from(this.wantlist.values()).map(_=>({block:_.cid.bytes,priority:Number(_.priority),wantType:_.wantType,cancel:!!_.cancel,sendDontHave:!!_.sendDontHave})),full:!!this.full},blockPresences:[],payload:[],pendingBytes:this.pendingBytes,blocks:[]};for(const[_,S]of this.blocks.entries()){const E=CID$3.parse(_),x=E.version,T=E.code,C=E.multihash.code,I=E.multihash.digest.length,B=varintEncoder([x,T,C,I]);r.payload.push({prefix:B,data:S})}for(const[_,S]of this.blockPresences)r.blockPresences.push({cid:CID$3.parse(_).bytes,type:S});return this.pendingBytes>0&&(r.pendingBytes=this.pendingBytes),Message$4.encode(r)}equals(r){return!(this.full!==r.full||this.pendingBytes!==r.pendingBytes||!isMapEqual(this.wantlist,r.wantlist)||!isMapEqual(this.blocks,r.blocks)||!isMapEqual(this.blockPresences,r.blockPresences))}get[Symbol.toStringTag](){const r=Array.from(this.wantlist.keys()),_=Array.from(this.blocks.keys());return`BitswapMessage `}}const WantType$1={Block:Message$4.Wantlist.WantType.Block,Have:Message$4.Wantlist.WantType.Have},sortBy=(n,r)=>Array.prototype.slice.call(r,0).sort((_,S)=>{const E=n(_),x=n(S);return Ex?1:0});class Wantlist{static Entry=WantListEntry;set;_stats;constructor(r,_){this.set=_!=null?trackedMap({name:"ipfs_bitswap_wantlist",metrics:_.metrics}):new Map,this._stats=r}get length(){return this.set.size}add(r,_,S){const E=r.toString(base58btc$5),x=this.set.get(E);x!=null?(x.inc(),x.priority=_,x.wantType===WantType$1.Have&&S===WantType$1.Block&&(x.wantType=S)):(this.set.set(E,new WantListEntry(r,_,S)),this._stats!=null&&this._stats.push(void 0,"wantListSize",1))}remove(r){const _=r.toString(base58btc$5),S=this.set.get(_);S!=null&&(S.dec(),!S.hasRefs()&&(this.set.delete(_),this._stats!=null&&this._stats.push(void 0,"wantListSize",-1)))}removeForce(r){this.set.has(r)&&this.set.delete(r)}forEach(r){this.set.forEach(r)}entries(){return this.set.entries()}sortedEntries(){return new Map(sortBy(r=>r[1].key,Array.from(this.set.entries())))}contains(r){const _=r.toString(base58btc$5);return this.set.has(_)}get(r){const _=r.toString(base58btc$5);return this.set.get(_)}}class Ledger{partner;wantlist;exchangeCount;accounting;lastExchange;constructor(r){this.partner=r,this.wantlist=new Wantlist,this.exchangeCount=0,this.accounting={bytesSent:0,bytesRecv:0}}sentBytes(r){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesSent+=r}receivedBytes(r){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesRecv+=r}wants(r,_,S){this.wantlist.add(r,_,S)}cancelWant(r){this.wantlist.remove(r)}wantlistContains(r){return this.wantlist.get(r)}debtRatio(){return this.accounting.bytesSent/(this.accounting.bytesRecv+1)}}class SortedMap extends Map{_cmp;_keys;constructor(r,_){super(),this._cmp=_??this._defaultSort,this._keys=[];for(const[S,E]of r??[])this.set(S,E)}update(r){if(r<0||r>=this._keys.length)return;const _=this._keys[r];this._keys.splice(r,1);const S=this._find(_);this._keys.splice(S,0,_)}set(r,_){if(this.has(r)){const E=this.indexOf(r);this._keys.splice(E,1)}super.set(r,_);const S=this._find(r);return this._keys.splice(S,0,r),this}clear(){super.clear(),this._keys=[]}delete(r){if(!this.has(r))return!1;const _=this.indexOf(r);return this._keys.splice(_,1),super.delete(r)}indexOf(r){if(!this.has(r))return-1;const _=this._find(r);if(this._keys[_]===r)return _;for(let S=1;S>>1,x=this._kCmp(this._keys[E],r);if(x<0)_=E+1;else if(x>0)S=E;else return E}return _}*keys(){for(const r of this._keys)yield r}*values(){for(const r of this._keys)yield this.get(r)}*entries(){for(const r of this._keys)yield[r,this.get(r)]}*[Symbol.iterator](){yield*this.entries()}forEach(r,_=this){if(r!=null)for(const S of this._keys){const E=this.get(S);if(E==null)throw new Error("Value cannot be undefined");r.apply(_,[[S,E]])}}_defaultSort(r,_){return r[0]<_[0]?-1:_[0]_.priority&&this._pending.updatePriority(r.topic,r.priority),this._taskMerger.merge(r,_);return}this._pending.add(r)}_taskHasMoreInfoThanActiveTasks(r){const _=[];for(const S of this._active)S.topic===r.topic&&_.push(S);return _.length===0?!0:this._taskMerger.hasNewInfo(r,_)}popTasks(r){let _=0;const S=[],E=this._pending.tasks();for(let x=0;xr+_.task.size,0)}get(r){return this._tasks?.get(r)?.task}add(r){this._tasks.set(r.topic,{created:Date.now(),task:r})}delete(r){this._tasks.delete(r)}tasks(){return[...this._tasks.values()].map(r=>r.task)}updatePriority(r,_){const S=this._tasks.get(r);if(S==null)return;const E=this._tasks.indexOf(r);S.task.priority=_,this._tasks.update(E)}_compare(r,_){return r[1].task.priority===_[1].task.priority?r[1].created-_[1].created:_[1].task.priority-r[1].task.priority}}const DefaultTaskMerger={hasNewInfo(n,r){let _=!1,S=!1;for(const E of r)E.data.haveBlock&&(_=!0),E.data.isWantBlock&&(S=!0);return!!(!S&&n.data.isWantBlock||!_&&n.data.haveBlock)},merge(n,r){const _=n.data,S=r.data;!S.haveBlock&&_.haveBlock&&(S.haveBlock=_.haveBlock,S.blockSize=_.blockSize),!S.isWantBlock&&_.isWantBlock&&(S.isWantBlock=!0,(!S.haveBlock||_.haveBlock)&&(S.haveBlock=_.haveBlock,r.size=n.size)),S.isWantBlock&&S.haveBlock&&(r.size=S.blockSize)}},WantType=BitswapMessage.WantType,TARGET_MESSAGE_SIZE=16*1024,MAX_SIZE_REPLACE_HAS_WITH_BLOCK=1024;class DecisionEngine{_log;blockstore;network;_stats;_opts;ledgerMap;_running;_requestQueue;constructor(r,_,S,E,x,T={}){this._log=logger$2(r,"engine"),this.blockstore=_,this.network=S,this._stats=E,this._opts=this._processOpts(T),this.ledgerMap=trackedMap({name:"ipfs_bitswap_ledger_map",metrics:x.metrics}),this._running=!1,this._requestQueue=new RequestQueue(DefaultTaskMerger)}_processOpts(r){return{maxSizeReplaceHasWithBlock:MAX_SIZE_REPLACE_HAS_WITH_BLOCK,targetMessageSize:TARGET_MESSAGE_SIZE,...r}}_scheduleProcessTasks(){setTimeout(()=>{this._processTasks().catch(r=>{this._log.error("error processing stats",r)})})}async _processTasks(){if(!this._running)return;const{peerId:r,tasks:_,pendingSize:S}=this._requestQueue.popTasks(this._opts.targetMessageSize);if(_.length===0)return;const E=new BitswapMessage(!1);E.setPendingBytes(S);const x=[],T=new Map;for(const I of _){const B=CID$3.parse(I.topic);I.data.haveBlock?I.data.isWantBlock?(x.push(B),T.set(I.topic,I.data)):E.addHave(B):E.addDontHave(B)}const C=await this._getBlocks(x);for(const[I,B]of T){const A=CID$3.parse(I),D=C.get(I);D!=null?E.addBlock(A,D):B.sendDontHave&&E.addDontHave(A)}if(E.empty){r!=null&&this._requestQueue.tasksDone(r,_),this._scheduleProcessTasks();return}try{r!=null&&await this.network.sendMessage(r,E);for(const[I,B]of C.entries())r!=null&&this.messageSent(r,CID$3.parse(I),B)}catch(I){this._log.error(I)}r!=null&&this._requestQueue.tasksDone(r,_),this._scheduleProcessTasks()}wantlistForPeer(r){const _=r.toString(),S=this.ledgerMap.get(_);return S!=null?S.wantlist.sortedEntries():new Map}ledgerForPeer(r){const _=r.toString(),S=this.ledgerMap.get(_);if(S!=null)return{peer:S.partner,value:S.debtRatio(),sent:S.accounting.bytesSent,recv:S.accounting.bytesRecv,exchanged:S.exchangeCount}}peers(){return Array.from(this.ledgerMap.values()).map(r=>r.partner)}receivedBlocks(r){if(r.length!==0){for(const _ of this.ledgerMap.values())for(const{cid:S,block:E}of r){const x=_.wantlistContains(S);if(x==null)continue;const T=E.length,C=this._sendAsBlock(x.wantType,T);let I=T;C||(I=BitswapMessage.blockPresenceSize(x.cid)),this._requestQueue.pushTasks(_.partner,[{topic:x.cid.toString(base58btc$5),priority:x.priority,size:I,data:{blockSize:T,isWantBlock:C,haveBlock:!0,sendDontHave:!1}}])}this._scheduleProcessTasks()}}async messageReceived(r,_){const S=this._findOrCreate(r);if(_.empty)return;if(_.full&&(S.wantlist=new Wantlist),this._updateBlockAccounting(_.blocks,S),_.wantlist.size===0){this._scheduleProcessTasks();return}const E=[],x=[];_.wantlist.forEach(T=>{T.cancel?(S.cancelWant(T.cid),E.push(T.cid)):(S.wants(T.cid,T.priority,T.wantType),x.push(T))}),this._cancelWants(r,E),await this._addWants(r,x),this._scheduleProcessTasks()}_cancelWants(r,_){for(const S of _)this._requestQueue.remove(S.toString(base58btc$5),r)}async _addWants(r,_){const S=await this._getBlockSizes(_.map(x=>x.cid)),E=[];for(const x of _){const T=x.cid.toString(base58btc$5),C=S.get(T);if(C==null)x.sendDontHave&&E.push({topic:T,priority:x.priority,size:BitswapMessage.blockPresenceSize(x.cid),data:{isWantBlock:x.wantType===WantType.Block,blockSize:0,haveBlock:!1,sendDontHave:x.sendDontHave}});else{const I=this._sendAsBlock(x.wantType,C);let B=C;I||(B=BitswapMessage.blockPresenceSize(x.cid)),E.push({topic:T,priority:x.priority,size:B,data:{isWantBlock:I,blockSize:C,haveBlock:!0,sendDontHave:x.sendDontHave}})}this._requestQueue.pushTasks(r,E)}}_sendAsBlock(r,_){return r===WantType.Block||_<=this._opts.maxSizeReplaceHasWithBlock}async _getBlockSizes(r){const _=await this._getBlocks(r);return new Map([..._].map(([S,E])=>[S,E.length]))}async _getBlocks(r){const _=new Map;return await Promise.all(r.map(async S=>{try{const E=await this.blockstore.get(S);_.set(S.toString(base58btc$5),E)}catch(E){E.code!=="ERR_NOT_FOUND"&&this._log.error("failed to query blockstore for %s: %s",S,E)}})),_}_updateBlockAccounting(r,_){for(const S of r.values())this._log("got block (%s bytes)",S.length),_.receivedBytes(S.length)}messageSent(r,_,S){const E=this._findOrCreate(r);E.sentBytes(S.length),E.wantlist.remove(_)}numBytesSentTo(r){return this._findOrCreate(r).accounting.bytesSent}numBytesReceivedFrom(r){return this._findOrCreate(r).accounting.bytesRecv}peerDisconnected(r){this.ledgerMap.delete(r.toString())}_findOrCreate(r){const _=r.toString(),S=this.ledgerMap.get(_);if(S!=null)return S;const E=new Ledger(r);return this.ledgerMap.set(_,E),this._stats!=null&&this._stats.push(_,"peerCount",1),E}start(){this._running=!0}stop(){this._running=!1}}function isAsyncIterable$1(n){return n[Symbol.asyncIterator]!=null}const defaultEncoder=n=>{const r=encodingLength$c(n),_=allocUnsafe$2(r);return encode$F(n,_),defaultEncoder.bytes=r,_};defaultEncoder.bytes=0;function encode$k(n,r){r=r??{};const _=r.lengthEncoder??defaultEncoder;function*S(E){const x=_(E.byteLength);x instanceof Uint8Array?yield x:yield*x,E instanceof Uint8Array?yield E:yield*E}return isAsyncIterable$1(n)?async function*(){for await(const E of n)yield*S(E)}():function*(){for(const E of n)yield*S(E)}()}encode$k.single=(n,r)=>{r=r??{};const _=r.lengthEncoder??defaultEncoder;return new Uint8ArrayList(_(n.byteLength),n)};let InvalidMessageLengthError$1=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},InvalidDataLengthError$1=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},InvalidDataLengthLengthError$1=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},UnexpectedEOFError$1=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};const MAX_LENGTH_LENGTH=8,MAX_DATA_LENGTH=1024*1024*4;var ReadMode;(function(n){n[n.LENGTH=0]="LENGTH",n[n.DATA=1]="DATA"})(ReadMode||(ReadMode={}));const defaultDecoder=n=>{const r=decode$Y(n);return defaultDecoder.bytes=encodingLength$c(r),r};defaultDecoder.bytes=0;function decode$r(n,r){const _=new Uint8ArrayList;let S=ReadMode.LENGTH,E=-1;const x=r?.lengthDecoder??defaultDecoder,T=r?.maxLengthLength??MAX_LENGTH_LENGTH,C=r?.maxDataLength??MAX_DATA_LENGTH;function*I(){for(;_.byteLength>0;){if(S===ReadMode.LENGTH)try{if(E=x(_),E<0)throw new InvalidMessageLengthError$1("Invalid message length");if(E>C)throw new InvalidDataLengthError$1("Message length too long");const B=x.bytes;_.consume(B),r?.onLength!=null&&r.onLength(E),S=ReadMode.DATA}catch(B){if(B instanceof RangeError){if(_.byteLength>T)throw new InvalidDataLengthLengthError$1("Message length length too long");break}throw B}if(S===ReadMode.DATA){if(_.byteLength0)throw new UnexpectedEOFError$1("Unexpected end of input")}():function*(){for(const B of n)_.append(B),yield*I();if(_.byteLength>0)throw new UnexpectedEOFError$1("Unexpected end of input")}()}decode$r.fromReader=(n,r)=>{let _=1;const S=async function*(){for(;;)try{const{done:x,value:T}=await n.next(_);if(x===!0)return;T!=null&&(yield T)}catch(x){if(x.code==="ERR_UNDER_READ")return{done:!0,value:null};throw x}finally{_=1}}();return decode$r(S,{...r??{},onLength:x=>{_=x}})};const maxProvidersPerRequest=3,kMaxPriority=Math.pow(2,31)-1,maxListeners=1e3,wantlistSendDebounceMs=1,BITSWAP100="/ipfs/bitswap/1.0.0",BITSWAP110="/ipfs/bitswap/1.1.0",BITSWAP120="/ipfs/bitswap/1.2.0",DEFAULT_MAX_INBOUND_STREAMS$2=1024,DEFAULT_MAX_OUTBOUND_STREAMS$2=1024,DEFAULT_INCOMING_STREAM_TIMEOUT=3e4;let Network$1=class{_log;_libp2p;_bitswap;_protocols;_stats;_running;_hashLoader;_maxInboundStreams;_maxOutboundStreams;_incomingStreamTimeout;_registrarIds;constructor(r,_,S,E={}){this._log=logger$2(r.peerId,"network"),this._libp2p=r,this._bitswap=_,this._protocols=[BITSWAP100],E.b100Only!==!0&&(this._protocols.unshift(BITSWAP110),this._protocols.unshift(BITSWAP120)),this._stats=S,this._running=!1,this._onPeerConnect=this._onPeerConnect.bind(this),this._onPeerDisconnect=this._onPeerDisconnect.bind(this),this._onConnection=this._onConnection.bind(this),this._hashLoader=E.hashLoader??{async getHasher(){throw new Error("Not implemented")}},this._maxInboundStreams=E.maxInboundStreams??DEFAULT_MAX_INBOUND_STREAMS$2,this._maxOutboundStreams=E.maxOutboundStreams??DEFAULT_MAX_OUTBOUND_STREAMS$2,this._incomingStreamTimeout=E.incomingStreamTimeout??DEFAULT_INCOMING_STREAM_TIMEOUT}async start(){this._running=!0,await this._libp2p.handle(this._protocols,this._onConnection,{maxInboundStreams:this._maxInboundStreams,maxOutboundStreams:this._maxOutboundStreams});const r={onConnect:this._onPeerConnect,onDisconnect:this._onPeerDisconnect};this._registrarIds=[];for(const _ of this._protocols)this._registrarIds.push(await this._libp2p.register(_,r));this._libp2p.getConnections().forEach(_=>{this._onPeerConnect(_.remotePeer)})}async stop(){if(this._running=!1,await this._libp2p.unhandle(this._protocols),this._registrarIds!=null){for(const r of this._registrarIds)this._libp2p.unregister(r);this._registrarIds=[]}}_onConnection(r){if(!this._running)return;const{stream:_,connection:S}=r,E=new timeoutAbortController.TimeoutController(this._incomingStreamTimeout);Promise.resolve().then(async()=>{this._log("incoming new bitswap %s connection from %p",_.protocol,S.remotePeer);const x=()=>{_.abort(new CodeError$4("Incoming Bitswap stream timed out","ERR_TIMEOUT"))};let T=AbortSignal.timeout(this._incomingStreamTimeout);T.addEventListener("abort",x),await pipe(_,C=>decode$r(C),async C=>{for await(const I of C){try{const B=await BitswapMessage.deserialize(I.subarray(),this._hashLoader);await this._bitswap._receiveMessage(S.remotePeer,B)}catch(B){this._bitswap._receiveError(B);break}T.removeEventListener("abort",x),T=AbortSignal.timeout(this._incomingStreamTimeout),T.addEventListener("abort",x)}}),await _.close({signal:T})}).catch(x=>{this._log(x),_.abort(x)}).finally(()=>{E.clear()})}_onPeerConnect(r){this._bitswap._onPeerConnected(r)}_onPeerDisconnect(r){this._bitswap._onPeerDisconnected(r)}findProviders(r,_={}){return _.onProgress?.(new CustomProgressEvent("bitswap:network:find-providers",r)),this._libp2p.contentRouting.findProviders(r,_)}async findAndConnect(r,_){await drain(take(map$1(this.findProviders(r,_),async S=>this.connectTo(S.id,_).catch(E=>{this._log.error(E)})),maxProvidersPerRequest)).catch(S=>{this._log.error(S)})}async provide(r,_={}){_.onProgress?.(new CustomProgressEvent("bitswap:network:provide",r)),await this._libp2p.contentRouting.provide(r,_)}async sendMessage(r,_,S={}){if(!this._running)throw new Error("network isn't running");const E=r.toString();this._log("sendMessage to %s",E,_),S.onProgress?.(new CustomProgressEvent("bitswap:network:send-wantlist",r)),await this._writeMessage(r,_,S),this._updateSentStats(r,_.blocks)}async connectTo(r,_={}){if(!this._running)throw new Error("network isn't running");return _.onProgress?.(new CustomProgressEvent("bitswap:network:dial",r)),this._libp2p.dial(r,_)}_updateSentStats(r,_){const S=r.toString();if(this._stats!=null){for(const E of _.values())this._stats.push(S,"dataSent",E.length);this._stats.push(S,"blocksSent",_.size)}}async _writeMessage(r,_,S={}){const E=await this._libp2p.dialProtocol(r,[BITSWAP120,BITSWAP110,BITSWAP100]);try{let x;switch(E.protocol){case BITSWAP100:x=_.serializeToBitswap100();break;case BITSWAP110:case BITSWAP120:x=_.serializeToBitswap110();break;default:throw new Error(`Unknown protocol: ${E.protocol}`)}await pipe([x],T=>encode$k(T),E),await E.close()}catch(x){S.onProgress?.(new CustomProgressEvent("bitswap:network:send-wantlist:error",{peer:r,error:x})),this._log(x),E.abort(x)}}};const unwantEvent=n=>`unwant:${toString$8(n.multihash.bytes,"base64")}`,blockEvent=n=>`block:${toString$8(n.multihash.bytes,"base64")}`;class Notifications extends eventsExports.EventEmitter{_log;constructor(r){super(),this.setMaxListeners(maxListeners),this._log=logger$2(r,"notif")}hasBlock(r,_){const S=blockEvent(r);this._log(S),this.emit(S,_)}async wantBlock(r,_={}){if(r==null)throw new Error("Not a valid cid");const S=blockEvent(r),E=unwantEvent(r);return this._log(`wantBlock:${r}`),new Promise((x,T)=>{const C=()=>{this.removeListener(S,I),_.onProgress?.(new CustomProgressEvent("bitswap:want-block:unwant",r)),T(new Error(`Block for ${r} unwanted`))},I=B=>{this.removeListener(E,C),_.onProgress?.(new CustomProgressEvent("bitswap:want-block:block",r)),x(B)};this.once(E,C),this.once(S,I),_.signal?.addEventListener("abort",()=>{this.removeListener(S,I),this.removeListener(E,C),T(new Error(`Want for ${r} aborted`))})})}unwantBlock(r){const _=unwantEvent(r);this._log(_),this.emit(_)}}var movingAverage={exports:{}};(function(n,r){const _=Math.exp;n.exports=function(E){if(typeof E!="number")throw new Error("must provide a timespan to the moving average constructor");if(E<=0)throw new Error("must provide a timespan > 0 to the moving average constructor");let x,T=0,C=0,I=0,B,A={};function D(N,O){return 1-_(-(N-O)/E)}return A.push=function(O,M){if(B){const L=D(O,B),F=M-x,U=L*F;x=L*M+(1-L)*x,T=(1-L)*(T+F*U),C=Math.sqrt(T),I=x+L*F}else x=M;B=O},A.movingAverage=function(){return x},A.variance=function(){return T},A.deviation=function(){return C},A.forecast=function(){return I},A}})(movingAverage);var movingAverageExports=movingAverage.exports;const MovingAverage$1=getDefaultExportFromCjs(movingAverageExports);class Stat extends eventsExports.EventEmitter{_options;_queue;_stats;_frequencyLastTime;_frequencyAccumulators;_movingAverages;_enabled;_timeout;constructor(r,_){super(),this._options=_,this._queue=[],this._stats={},this._frequencyLastTime=Date.now(),this._frequencyAccumulators={},this._movingAverages={},this._update=this._update.bind(this),r.forEach(S=>{this._stats[S]=BigInt(0),this._movingAverages[S]={},this._options.movingAverageIntervals.forEach(E=>{(this._movingAverages[S][E]=MovingAverage$1(E)).push(this._frequencyLastTime,0)})}),this._enabled=this._options.enabled}enable(){this._enabled=!0}disable(){this._enabled=!1}stop(){this._timeout!=null&&clearTimeout(this._timeout)}get snapshot(){return Object.assign({},this._stats)}get movingAverages(){return Object.assign({},this._movingAverages)}push(r,_){this._enabled&&(this._queue.push([r,_,Date.now()]),this._resetComputeTimeout())}_resetComputeTimeout(){this._timeout!=null&&clearTimeout(this._timeout),this._timeout=setTimeout(this._update,this._nextTimeout())}_nextTimeout(){const r=this._queue.length/this._options.computeThrottleMaxQueueSize;return Math.max(this._options.computeThrottleTimeout*(1-r),0)}_update(){if(this._timeout=void 0,this._queue.length>0){let r;for(;this._queue.length>0;){const _=r=this._queue.shift();_!=null&&this._applyOp(_)}r!=null&&this._updateFrequency(r[2]),this.emit("update",this._stats)}}_updateFrequency(r){const _=r-this._frequencyLastTime;_>0&&Object.keys(this._stats).forEach(S=>{this._updateFrequencyFor(S,_,r)}),this._frequencyLastTime=r}_updateFrequencyFor(r,_,S){const E=this._frequencyAccumulators[r]??0;this._frequencyAccumulators[r]=0;const x=E/_*1e3;let T=this._movingAverages[r];T==null&&(T=this._movingAverages[r]={}),this._options.movingAverageIntervals.forEach(C=>{let I=T[C];I==null&&(I=T[C]=MovingAverage$1(C)),I.push(S,x)})}_applyOp(r){const _=r[0],S=r[1];if(typeof S!="number")throw new Error(`invalid increment number: ${S}`);Object.prototype.hasOwnProperty.call(this._stats,_)||(this._stats[_]=BigInt(0)),this._stats[_]=BigInt(this._stats[_])+BigInt(S),this._frequencyAccumulators[_]==null&&(this._frequencyAccumulators[_]=0),this._frequencyAccumulators[_]+=S}}const defaultOptions$8={enabled:!1,computeThrottleTimeout:1e3,computeThrottleMaxQueueSize:1e3,movingAverageIntervals:[60*1e3,5*60*1e3,15*60*1e3]};class Stats extends eventsExports.EventEmitter{_initialCounters;_options;_enabled;_global;_peers;constructor(r,_=[],S=defaultOptions$8){super();const E=Object.assign({},defaultOptions$8,S);if(typeof E.computeThrottleTimeout!="number")throw new Error("need computeThrottleTimeout");if(typeof E.computeThrottleMaxQueueSize!="number")throw new Error("need computeThrottleMaxQueueSize");this._initialCounters=_,this._options=E,this._enabled=this._options.enabled,this._global=new Stat(_,E),this._global.on("update",x=>this.emit("update",x)),this._peers=trackedMap({name:"ipfs_bitswap_stats_peers",metrics:r.metrics})}enable(){this._enabled=!0,this._options.enabled=!0,this._global.enable()}disable(){this._enabled=!1,this._options.enabled=!1,this._global.disable()}stop(){this._enabled=!1,this._global.stop();for(const r of this._peers)r[1].stop()}get snapshot(){return this._global.snapshot}get movingAverages(){return this._global.movingAverages}forPeer(r){const _=r.toString();return this._peers.get(_)}push(r,_,S){if(this._enabled&&(this._global.push(_,S),r!=null)){let E=this._peers.get(r);E==null&&(E=new Stat(this._initialCounters,this._options),this._peers.set(r,E)),E.push(_,S)}}disconnected(r){const _=r.toString(),S=this._peers.get(_);S!=null&&(S.stop(),this._peers.delete(_))}}var functionDebounce=debounce$2;function debounce$2(n,r,_){var S=null,E=null,x=function(){S&&(clearTimeout(S),E=null,S=null)},T=function(){var I=E;x(),I&&I()},C=function(){if(!r)return n.apply(this,arguments);var I=this,B=arguments,A=_&&!S;if(x(),E=function(){n.apply(I,B)},S=setTimeout(function(){if(S=null,!A){var D=E;return E=null,D()}},r),A)return E()};return C.cancel=x,C.flush=T,C}class MsgQueue{peerId;refcnt;network;_entries;_log;constructor(r,_,S){this.peerId=_,this.network=S,this.refcnt=1,this._entries=[],this._log=logger$2(r,"msgqueue"),this.sendEntries=functionDebounce(this.sendEntries.bind(this),wantlistSendDebounceMs)}addMessage(r,_={}){r.empty||this.send(r,_)}addEntries(r,_={}){this._entries=this._entries.concat(r),this.sendEntries(_)}sendEntries(r={}){if(this._entries.length===0)return;const _=new BitswapMessage(!1);this._entries.forEach(S=>{S.cancel===!0?_.cancel(S.cid):_.addEntry(S.cid,S.priority)}),this._entries=[],this.addMessage(_,r)}async send(r,_={}){try{await this.network.connectTo(this.peerId,_)}catch(S){this._log.error("cant connect to peer %p: %s",this.peerId,S.message);return}this._log("sending message to peer %p",this.peerId),this.network.sendMessage(this.peerId,r,_).catch(S=>{this._log.error("send error",S)})}}class WantManager{peers;wantlist;network;_peerId;_log;constructor(r,_,S,E){this.peers=trackedMap({name:"ipfs_bitswap_want_manager_peers",metrics:E.metrics}),this.wantlist=new Wantlist(S,E),this.network=_,this._peerId=r,this._log=logger$2(r,"want")}_addEntries(r,_,S,E={}){const x=r.map((T,C)=>new BitswapMessage.Entry(T,kMaxPriority-C,BitswapMessage.WantType.Block,_));x.forEach(T=>{T.cancel?S===!0?this.wantlist.removeForce(T.cid.toString(base58btc$5)):this.wantlist.remove(T.cid):(this._log("adding to wantlist"),this.wantlist.add(T.cid,T.priority))});for(const T of this.peers.values())T.addEntries(x,E)}_startPeerHandler(r){let _=this.peers.get(r.toString());if(_!=null){_.refcnt++;return}_=new MsgQueue(this._peerId,r,this.network);const S=new BitswapMessage(!0);for(const E of this.wantlist.entries())S.addEntry(E[1].cid,E[1].priority);return _.addMessage(S),this.peers.set(r.toString(),_),_}_stopPeerHandler(r){const _=this.peers.get(r.toString());_!=null&&(_.refcnt--,!(_.refcnt>0)&&this.peers.delete(r.toString()))}wantBlocks(r,_={}){this._addEntries(r,!1,!1,_),_.signal?.addEventListener("abort",()=>{this.cancelWants(r)})}unwantBlocks(r){this._log("unwant blocks: %s",r.length),this._addEntries(r,!0,!0)}cancelWants(r){this._log("cancel wants: %s",r.length),this._addEntries(r,!0)}connectedPeers(){return Array.from(this.peers.keys())}connected(r){this._startPeerHandler(r)}disconnected(r){this._stopPeerHandler(r)}start(){}stop(){this.peers.forEach(r=>{this.disconnected(r.peerId)})}}const hashLoader={async getHasher(){throw new Error("Not implemented")}},defaultOptions$7={maxInboundStreams:1024,maxOutboundStreams:1024,incomingStreamTimeout:3e4,hashLoader,statsEnabled:!1,statsComputeThrottleTimeout:1e3,statsComputeThrottleMaxQueueSize:1e3},statsKeys=["blocksReceived","dataReceived","dupBlksReceived","dupDataReceived","blocksSent","dataSent","providesBufferLength","wantListLength","peerCount"];class DefaultBitswap{_libp2p;_log;stats;network;blockstore;engine;wm;notifications;started;constructor(r,_,S={}){this._libp2p=r,this._log=logger$2(this.peerId),S=Object.assign({},defaultOptions$7,S),this.stats=new Stats(r,statsKeys,{enabled:S.statsEnabled,computeThrottleTimeout:S.statsComputeThrottleTimeout,computeThrottleMaxQueueSize:S.statsComputeThrottleMaxQueueSize}),this.network=new Network$1(r,this,this.stats,{hashLoader:S.hashLoader,maxInboundStreams:S.maxInboundStreams,maxOutboundStreams:S.maxOutboundStreams,incomingStreamTimeout:S.incomingStreamTimeout}),this.blockstore=_,this.engine=new DecisionEngine(this.peerId,_,this.network,this.stats,r),this.wm=new WantManager(this.peerId,this.network,this.stats,r),this.notifications=new Notifications(this.peerId),this.started=!1}isStarted(){return this.started}get peerId(){return this._libp2p.peerId}async _receiveMessage(r,_){try{await this.engine.messageReceived(r,_)}catch{this._log("failed to receive message",_)}if(_.blocks.size===0)return;const S=[];for(const[E,x]of _.blocks.entries()){const T=CID$3.parse(E);S.push({wasWanted:this.wm.wantlist.contains(T),cid:T,data:x})}this.wm.cancelWants(S.filter(({wasWanted:E})=>E).map(({cid:E})=>E)),await Promise.all(S.map(async({cid:E,wasWanted:x,data:T})=>{await this._handleReceivedBlock(r,E,T,x)}))}async _handleReceivedBlock(r,_,S,E){this._log("received block");const x=await this.blockstore.has(_);this._updateReceiveCounters(r.toString(),_,S,x),E&&await this.put(_,S)}_updateReceiveCounters(r,_,S,E){this.stats.push(r,"blocksReceived",1),this.stats.push(r,"dataReceived",S.length),E&&(this.stats.push(r,"dupBlksReceived",1),this.stats.push(r,"dupDataReceived",S.length))}_receiveError(r){this._log.error("ReceiveError",r)}_onPeerConnected(r){this.wm.connected(r)}_onPeerDisconnected(r){this.wm.disconnected(r),this.engine.peerDisconnected(r),this.stats.disconnected(r)}enableStats(){this.stats.enable()}disableStats(){this.stats.disable()}wantlistForPeer(r,_){return this.engine.wantlistForPeer(r)}ledgerForPeer(r){return this.engine.ledgerForPeer(r)}async want(r,_={}){const S=async(I,B)=>(this.wm.wantBlocks([I],B),this.notifications.wantBlock(I,B));let E=!1;const x=async(I,B)=>{try{return await this.blockstore.get(I,B)}catch(A){if(A.code!=="ERR_NOT_FOUND")throw A;return E||(E=!0,this.network.findAndConnect(I,B).catch(D=>{this._log.error(D)})),await S(I,B)}},T=new AbortController,C=anySignal([T.signal,_.signal]);try{return await Promise.race([this.notifications.wantBlock(r,{..._,signal:C}),x(r,{..._,signal:C})])}finally{T.abort(),C.clear()}}unwant(r){const _=Array.isArray(r)?r:[r];this.wm.unwantBlocks(_),_.forEach(S=>{this.notifications.unwantBlock(S)})}cancelWants(r){this.wm.cancelWants(Array.isArray(r)?r:[r])}async put(r,_,S){await this.blockstore.put(r,_),this.notify(r,_)}async*putMany(r,_){yield*this.blockstore.putMany(forEach(r,({cid:S,block:E})=>{this.notify(S,E)}),_)}notify(r,_,S={}){this.notifications.hasBlock(r,_),this.engine.receivedBlocks([{cid:r,block:_}]),this.network.provide(r,S).catch(E=>{this._log.error("Failed to provide: %s",E.message)})}getWantlist(){return this.wm.wantlist.entries()}get peers(){return this.engine.peers()}async start(){this.wm.start(),await this.network.start(),this.engine.start(),this.started=!0}async stop(){this.stats.stop(),this.wm.stop(),await this.network.stop(),this.engine.stop(),this.started=!1}}const createBitswap=(n,r,_={})=>new DefaultBitswap(n,r,_);class BitswapBlockBroker{bitswap;started;constructor(r,_={}){const{libp2p:S,blockstore:E,hashers:x}=r;this.bitswap=createBitswap(S,E,{hashLoader:{getHasher:async T=>{const C=x.find(I=>I.code===T||I.name===T);if(C!=null)return C;throw new Error(`Could not load hasher for code/name "${T}"`)}},..._}),this.started=!1}isStarted(){return this.started}async start(){await this.bitswap.start(),this.started=!0}async stop(){await this.bitswap.stop(),this.started=!1}announce(r,_,S){this.bitswap.notify(r,_,S)}async retrieve(r,{validateFn:_,...S}={}){return this.bitswap.want(r,S)}}function bitswap(n={}){return r=>new BitswapBlockBroker(r,n)}class TrustlessGateway{url;#e=0;#t=0;#r=0;#s=0;constructor(r){this.url=r instanceof URL?r:new URL(r)}async getRawBlock(r,_){const S=this.url;if(S.pathname=`/ipfs/${r.toString()}`,S.search="?format=raw",_?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${r} from gateway ${this.url} was aborted prior to fetch`);try{this.#e++;const E=await fetch(S.toString(),{signal:_,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"});if(!E.ok)throw this.#t++,new Error(`unable to fetch raw block for CID ${r} from gateway ${this.url}`);return this.#s++,new Uint8Array(await E.arrayBuffer())}catch{throw _?.aborted===!0?new Error(`fetching raw block for CID ${r} from gateway ${this.url} was aborted`):(this.#t++,new Error(`unable to fetch raw block for CID ${r}`))}}reliability(){return this.#e===0?1:this.#r>0?-1/0:this.#s/(this.#e+this.#t*3)}incrementInvalidBlocks(){this.#r++}}class TrustlessGatewayBlockBroker{gateways;log;constructor(r,_={}){this.log=r.logger.forComponent("helia:trustless-gateway-block-broker"),this.gateways=(_.gateways??DEFAULT_TRUSTLESS_GATEWAYS).map(S=>new TrustlessGateway(S))}async retrieve(r,_={}){const S=this.gateways.sort((x,T)=>T.reliability()-x.reliability()),E=[];for(const x of S){this.log("getting block for %c from %s",r,x.url);try{const T=await x.getRawBlock(r,_.signal);this.log.trace("got block for %c from %s",r,x.url);try{await _.validateFn?.(T)}catch(C){throw this.log.error("failed to validate block for %c from %s",r,x.url,C),x.incrementInvalidBlocks(),new Error(`unable to validate block for CID ${r} from gateway ${x.url}`)}return T}catch(T){if(this.log.error("failed to get block for %c from %s",r,x.url,T),T instanceof Error?E.push(T):E.push(new Error(`unable to fetch raw block for CID ${r} from gateway ${x.url}`)),_.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",r,x.url);break}}}throw new AggregateError(E,`unable to fetch raw block for CID ${r} from any gateway`)}}const DEFAULT_TRUSTLESS_GATEWAYS=["https://dweb.link","https://cf-ipfs.com","https://4everland.io"];function trustlessGateway(n={}){return r=>new TrustlessGatewayBlockBroker(r,n)}function isBlockRetriever(n){return typeof n.retrieve=="function"}function isBlockAnnouncer(n){return typeof n.announce=="function"}class NetworkedStorage{child;blockRetrievers;blockAnnouncers;hashers;started;log;constructor(r,_){this.log=r.logger.forComponent("helia:networked-storage"),this.child=r.blockstore,this.blockRetrievers=(_.blockBrokers??[]).filter(isBlockRetriever),this.blockAnnouncers=(_.blockBrokers??[]).filter(isBlockAnnouncer),this.hashers=_.hashers??[],this.started=!1}isStarted(){return this.started}async start(){await start(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!0}async stop(){await stop(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!1}unwrap(){return this.child}async put(r,_,S={}){return await this.child.has(r)?(S.onProgress?.(new CustomProgressEvent("blocks:put:duplicate",r)),r):(S.onProgress?.(new CustomProgressEvent("blocks:put:providers:notify",r)),this.blockAnnouncers.forEach(E=>{E.announce(r,_,S)}),S.onProgress?.(new CustomProgressEvent("blocks:put:blockstore:put",r)),this.child.put(r,_,S))}async*putMany(r,_={}){const S=filter(r,async({cid:x})=>{const T=await this.child.has(x);return T&&_.onProgress?.(new CustomProgressEvent("blocks:put-many:duplicate",x)),!T}),E=forEach(S,({cid:x,block:T})=>{_.onProgress?.(new CustomProgressEvent("blocks:put-many:providers:notify",x)),this.blockAnnouncers.forEach(C=>{C.announce(x,T,_)})});_.onProgress?.(new CustomProgressEvent("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(E,_)}async get(r,_={}){if(_.offline!==!0&&!await this.child.has(r)){_.onProgress?.(new CustomProgressEvent("blocks:get:providers:get",r));const S=await raceBlockRetrievers(r,this.blockRetrievers,this.hashers,{..._,log:this.log});return _.onProgress?.(new CustomProgressEvent("blocks:get:blockstore:put",r)),await this.child.put(r,S,_),_.onProgress?.(new CustomProgressEvent("blocks:get:providers:notify",r)),this.blockAnnouncers.forEach(E=>{E.announce(r,S,_)}),S}return _.onProgress?.(new CustomProgressEvent("blocks:get:blockstore:get",r)),this.child.get(r,_)}async*getMany(r,_={}){_.onProgress?.(new CustomProgressEvent("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(forEach(r,async S=>{if(_.offline!==!0&&!await this.child.has(S)){_.onProgress?.(new CustomProgressEvent("blocks:get-many:providers:get",S));const E=await raceBlockRetrievers(S,this.blockRetrievers,this.hashers,{..._,log:this.log});_.onProgress?.(new CustomProgressEvent("blocks:get-many:blockstore:put",S)),await this.child.put(S,E,_),_.onProgress?.(new CustomProgressEvent("blocks:get-many:providers:notify",S)),this.blockAnnouncers.forEach(x=>{x.announce(S,E,_)})}}))}async delete(r,_={}){_.onProgress?.(new CustomProgressEvent("blocks:delete:blockstore:delete",r)),await this.child.delete(r,_)}async*deleteMany(r,_={}){_.onProgress?.(new CustomProgressEvent("blocks:delete-many:blockstore:delete-many")),yield*this.child.deleteMany(async function*(){for await(const S of r)yield S}(),_)}async has(r,_={}){return this.child.has(r,_)}async*getAll(r={}){r.onProgress?.(new CustomProgressEvent("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(r)}}const getCidBlockVerifierFunction=(n,r)=>{const _=r.find(S=>S.code===n.multihash.code);if(_==null)throw new CodeError$4(`No hasher configured for multihash code 0x${n.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`,"ERR_UNKNOWN_HASH_ALG");return async S=>{const E=await _.digest(S);if(!equals$l(E.digest,n.multihash.digest))throw new CodeError$4("Hash of downloaded block did not match multihash from passed CID","ERR_HASH_MISMATCH")}};async function raceBlockRetrievers(n,r,_,S){const E=getCidBlockVerifierFunction(n,_),x=new AbortController,T=anySignal([x.signal,S.signal]);try{return await Promise.any(r.map(async C=>{try{let I=!1;const B=await C.retrieve(n,{...S,signal:T,validateFn:async A=>{await E(A),I=!0}});return I||await E(B),B}catch(I){throw S.log.error("could not retrieve verified block for %c",n,I),I}}))}finally{T.clear()}}let AbortError$4=class extends Error{type;code;constructor(r,_){super(r??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=_??"ABORT_ERR"}};async function raceEvent(n,r,_,S){const E=new AbortError$4(S?.errorMessage,S?.errorCode);return _?.aborted===!0?Promise.reject(E):new Promise((x,T)=>{function C(){_?.removeEventListener("abort",A),n.removeEventListener(r,I),S?.errorEvent!=null&&n.removeEventListener(S.errorEvent,B)}const I=D=>{try{if(S?.filter?.(D)===!1)return}catch(N){C(),T(N);return}C(),x(D)},B=D=>{C(),T(D.detail)},A=()=>{C(),T(E)};_?.addEventListener("abort",A),n.addEventListener(r,I),S?.errorEvent!=null&&n.addEventListener(S.errorEvent,B)})}let AbortError$3=class extends Error{type;code;constructor(r,_,S){super(r??"The operation was aborted"),this.type="aborted",this.name=S??"AbortError",this.code=_??"ABORT_ERR"}};async function raceSignal(n,r,_){if(r==null)return n;if(r.aborted)return Promise.reject(new AbortError$3(_?.errorMessage,_?.errorCode,_?.errorName));let S;const E=new AbortError$3(_?.errorMessage,_?.errorCode,_?.errorName);try{return await Promise.race([n,new Promise((x,T)=>{S=()=>{T(E)},r.addEventListener("abort",S)})])}finally{S!=null&&r.removeEventListener("abort",S)}}class JobRecipient{deferred;signal;constructor(r){this.signal=r,this.deferred=pDefer(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new AbortError$5)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}}function randomId(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}class Job{id;fn;options;recipients;status;timeline;controller;constructor(r,_){this.id=randomId(),this.status="queued",this.fn=r,this.options=_,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,setMaxListeners$1(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(r){this.controller.abort(r)}onAbort(){this.recipients.reduce((_,S)=>_&&S.signal?.aborted===!0,!0)&&(this.controller.abort(new AbortError$5),this.cleanup())}async join(r={}){const _=new JobRecipient(r.signal);return this.recipients.push(_),r.signal?.addEventListener("abort",this.onAbort),_.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();const r=await raceSignal(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(_=>{_.deferred.resolve(r)}),this.status="complete"}catch(r){this.recipients.forEach(_=>{_.deferred.reject(r)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(r=>{r.cleanup(),r.signal?.removeEventListener("abort",this.onAbort)})}}class Queue extends TypedEventEmitter{concurrency;queue;pending;sort;constructor(r={}){super(),this.concurrency=r.concurrency??Number.POSITIVE_INFINITY,this.pending=0,r.metricName!=null&&r.metrics?.registerMetricGroup(r.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=r.sort,this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending{for(let _=0;_(this.safeDispatchEvent("completed",{detail:E}),this.safeDispatchEvent("success",{detail:{job:S,result:E}}),E)).catch(E=>{if(S.status==="queued"){for(let x=0;x{r.abort(new AbortError$5)}),this.clear()}async onEmpty(r){this.size!==0&&await raceEvent(this,"empty",r?.signal)}async onSizeLessThan(r,_){this.sizethis.size{I!=null?this.abort():this.clear(),_.end(I)},E=I=>{I.detail!=null&&_.push(I.detail)},x=I=>{S(I.detail)},T=()=>{S()},C=()=>{S(new CodeError$4("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",E),this.addEventListener("error",x),this.addEventListener("idle",T),r?.signal?.addEventListener("abort",C);try{yield*_}finally{this.removeEventListener("completed",E),this.removeEventListener("error",x),this.removeEventListener("idle",T),r?.signal?.removeEventListener("abort",C),S()}}}const base36$8=baseX$c({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"});baseX$c({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});const base64$a=rfc4648$c({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6});rfc4648$c({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6});rfc4648$c({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6});rfc4648$c({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});new TextEncoder;new TextDecoder;const code$4=512,code$3=85,dagPbWalker={codec:code$7,*walk(n){yield*decode$K(n).Links.map(_=>_.Hash)}},rawWalker={codec:code$3,*walk(){}},CID_TAG=42,dagCborWalker={codec:code$e,*walk(n){const r=[],_=[];_[CID_TAG]=S=>{if(S[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");const E=CID$8.decode(S.subarray(1));return r.push(E),E},decode$1c(n,{tags:_}),yield*r}};class DagJsonTokenizer extends Tokenizer{tokenBuffer;constructor(r,_){super(r,_),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){const r=this._next();if(r.type===Type$1.map){const _=this._next();if(_.type===Type$1.string&&_.value==="/"){const S=this._next();if(S.type===Type$1.string){if(this._next().type!==Type$1.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(S),new Token(Type$1.tag,42,0)}if(S.type===Type$1.map){const E=this._next();if(E.type===Type$1.string&&E.value==="bytes"){const x=this._next();if(x.type===Type$1.string){for(let C=0;C<2;C++)if(this._next().type!==Type$1.break)throw new Error("Invalid encoded Bytes form");const T=base64$a.decode(`m${x.value}`);return new Token(Type$1.bytes,T,x.value.length)}this.tokenBuffer.push(x)}this.tokenBuffer.push(E)}this.tokenBuffer.push(S)}this.tokenBuffer.push(_)}return r}}const dagJsonWalker={codec:code$6,*walk(n){const r=[],_=[];_[CID_TAG]=S=>{const E=CID$8.parse(S);return r.push(E),E},decode$H(n,{tags:_,tokenizer:new DagJsonTokenizer(n,{tags:_,allowIndefinite:!0,allowUndefined:!0,allowNaN:!0,allowInfinity:!0,allowBigInt:!0,strict:!1,rejectDuplicateMapKeys:!1})}),yield*r}},jsonWalker={codec:code$4,*walk(){}},DEFAULT_DAG_WALKERS=[rawWalker,dagPbWalker,dagCborWalker,dagJsonWalker,jsonWalker],DATASTORE_PIN_PREFIX="/pin/",DATASTORE_BLOCK_PREFIX="/pinned-block/",DATASTORE_ENCODING=base36$8,DAG_WALK_QUEUE_CONCURRENCY=1;function toDSKey(n){return n.version===0&&(n=n.toV1()),new Key(`${DATASTORE_PIN_PREFIX}${n.toString(DATASTORE_ENCODING)}`)}class PinsImpl{datastore;blockstore;dagWalkers;constructor(r,_,S){this.datastore=r,this.blockstore=_,this.dagWalkers={},[...DEFAULT_DAG_WALKERS,...S].forEach(E=>{this.dagWalkers[E.codec]=E})}async*add(r,_={}){const S=toDSKey(r);if(await this.datastore.has(S))throw new Error("Already pinned");const E=Math.round(_.depth??1/0);if(E<0)throw new Error("Depth must be greater than or equal to 0");const x=new Queue({concurrency:DAG_WALK_QUEUE_CONCURRENCY});for await(const C of this.#e(r,x,{..._,depth:E}))await this.#t(C,I=>I.pinnedBy.find(B=>equals$l(B,r.bytes))!=null?!1:(I.pinCount++,I.pinnedBy.push(r.bytes),!0),_),yield C;const T={depth:E,metadata:_.metadata??{}};await this.datastore.put(S,encode$S(T),_)}async*#e(r,_,S){if(S.depth===-1)return;const E=this.dagWalkers[r.code];if(E==null)throw new Error(`No dag walker found for cid codec ${r.code}`);const x=await this.blockstore.get(r,S);yield r;for await(const T of E.walk(x))yield*await _.add(async()=>this.#e(T,_,{...S,depth:S.depth-1}))}async#t(r,_,S){const E=new Key(`${DATASTORE_BLOCK_PREFIX}${DATASTORE_ENCODING.encode(r.multihash.bytes)}`);let x={pinCount:0,pinnedBy:[]};try{x=decode$1c(await this.datastore.get(E,S))}catch(C){if(C.code!=="ERR_NOT_FOUND")throw C}if(_(x)){if(x.pinCount===0&&await this.datastore.has(E)){await this.datastore.delete(E);return}await this.datastore.put(E,encode$S(x),S),S.onProgress?.(new CustomProgressEvent("helia:pin:add",r))}}async*rm(r,_={}){const S=toDSKey(r),E=await this.datastore.get(S,_),x=decode$1c(E);await this.datastore.delete(S,_);const T=new Queue({concurrency:DAG_WALK_QUEUE_CONCURRENCY});for await(const C of this.#e(r,T,{..._,depth:x.depth}))await this.#t(C,I=>(I.pinCount--,I.pinnedBy=I.pinnedBy.filter(B=>equals$l(B,r.bytes)),!0),{..._,depth:x.depth}),yield C}async*ls(r={}){for await(const{key:_,value:S}of this.datastore.query({prefix:DATASTORE_PIN_PREFIX+(r.cid!=null?`${r.cid.toString(base36$8)}`:"")},r)){const E=CID$8.parse(_.toString().substring(5),base36$8),x=decode$1c(S);yield{cid:E,...x}}}async isPinned(r,_={}){const S=new Key(`${DATASTORE_BLOCK_PREFIX}${DATASTORE_ENCODING.encode(r.multihash.bytes)}`);return this.datastore.has(S,_)}}const events={},observable=n=>{n.addEventListener("message",r=>{observable.dispatchEvent("message",n,r)}),n.port!=null&&n.port.addEventListener("message",r=>{observable.dispatchEvent("message",n,r)})};observable.addEventListener=(n,r)=>{events[n]==null&&(events[n]=[]),events[n].push(r)};observable.removeEventListener=(n,r)=>{events[n]!=null&&(events[n]=events[n].filter(_=>_===r))};observable.dispatchEvent=function(n,r,_){events[n]!=null&&events[n].forEach(S=>S(r,_))};const WORKER_REQUEST_READ_LOCK="lock:worker:request-read",WORKER_RELEASE_READ_LOCK="lock:worker:release-read",MASTER_GRANT_READ_LOCK="lock:master:grant-read",WORKER_REQUEST_WRITE_LOCK="lock:worker:request-write",WORKER_RELEASE_WRITE_LOCK="lock:worker:release-write",MASTER_GRANT_WRITE_LOCK="lock:master:grant-write",nanoid=(n=21)=>Math.random().toString().substring(2),handleWorkerLockRequest=(n,r,_,S,E)=>(x,T)=>{if(T.data.type!==_)return;const C={type:T.data.type,name:T.data.name,identifier:T.data.identifier};n.dispatchEvent(new MessageEvent(r,{data:{name:C.name,handler:async()=>{x.postMessage({type:E,name:C.name,identifier:C.identifier}),await new Promise(I=>{const B=A=>{if(A==null||A.data==null)return;const D={type:A.data.type,name:A.data.name,identifier:A.data.identifier};D.type===S&&D.identifier===C.identifier&&(x.removeEventListener("message",B),I())};x.addEventListener("message",B)})}}}))},makeWorkerLockRequest=(n,r,_,S)=>async()=>{const E=nanoid();return globalThis.postMessage({type:r,identifier:E,name:n}),new Promise(x=>{const T=C=>{if(C==null||C.data==null)return;const I={type:C.data.type,identifier:C.data.identifier};I.type===_&&I.identifier===E&&(globalThis.removeEventListener("message",T),x(()=>{globalThis.postMessage({type:S,identifier:E,name:n})}))};globalThis.addEventListener("message",T)})},defaultOptions$6={singleProcess:!1},impl=n=>{if(n=Object.assign({},defaultOptions$6,n),!!globalThis.document||n.singleProcess){const _=new EventTarget;return observable.addEventListener("message",handleWorkerLockRequest(_,"requestReadLock",WORKER_REQUEST_READ_LOCK,WORKER_RELEASE_READ_LOCK,MASTER_GRANT_READ_LOCK)),observable.addEventListener("message",handleWorkerLockRequest(_,"requestWriteLock",WORKER_REQUEST_WRITE_LOCK,WORKER_RELEASE_WRITE_LOCK,MASTER_GRANT_WRITE_LOCK)),_}return{isWorker:!0,readLock:_=>makeWorkerLockRequest(_,WORKER_REQUEST_READ_LOCK,MASTER_GRANT_READ_LOCK,WORKER_RELEASE_READ_LOCK),writeLock:_=>makeWorkerLockRequest(_,WORKER_REQUEST_WRITE_LOCK,MASTER_GRANT_WRITE_LOCK,WORKER_RELEASE_WRITE_LOCK)}},mutexes={};let implementation;async function createReleaseable(n,r){let _;const S=new Promise(E=>{_=E});return n.add(async()=>pTimeout$1((async()=>{await new Promise(E=>{_(()=>{E()})})})(),{milliseconds:r.timeout})),S}const createMutex=(n,r)=>{if(implementation.isWorker===!0)return{readLock:implementation.readLock(n,r),writeLock:implementation.writeLock(n,r)};const _=new PQueue$1({concurrency:1});let S;return{async readLock(){if(S!=null)return createReleaseable(S,r);S=new PQueue$1({concurrency:r.concurrency,autoStart:!1});const E=S,x=createReleaseable(S,r);return _.add(async()=>{E.start(),await E.onIdle().then(()=>{S===E&&(S=null)})}),x},async writeLock(){return S=null,createReleaseable(_,r)}}},defaultOptions$5={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function createMortice(n){const r=Object.assign({},defaultOptions$5,n);return implementation==null&&(implementation=impl(r),implementation.isWorker!==!0&&(implementation.addEventListener("requestReadLock",_=>{mutexes[_.data.name]!=null&&mutexes[_.data.name].readLock().then(async S=>_.data.handler().finally(()=>{S()}))}),implementation.addEventListener("requestWriteLock",async _=>{mutexes[_.data.name]!=null&&mutexes[_.data.name].writeLock().then(async S=>_.data.handler().finally(()=>{S()}))}))),mutexes[r.name]==null&&(mutexes[r.name]=createMutex(r.name,r)),mutexes[r.name]}class BlockStorage{lock;child;pins;started;constructor(r,_,S={}){this.child=r,this.pins=_,this.lock=createMortice({singleProcess:S.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await start(this.child),this.started=!0}async stop(){await stop(this.child),this.started=!1}unwrap(){return this.child}async put(r,_,S={}){const E=await this.lock.readLock();try{return await this.child.put(r,_,S)}finally{E()}}async*putMany(r,_={}){const S=await this.lock.readLock();try{yield*this.child.putMany(r,_)}finally{S()}}async get(r,_={}){const S=await this.lock.readLock();try{return await this.child.get(r,_)}finally{S()}}async*getMany(r,_={}){const S=await this.lock.readLock();try{yield*this.child.getMany(r,_)}finally{S()}}async delete(r,_={}){const S=await this.lock.writeLock();try{if(await this.pins.isPinned(r))throw new Error("CID was pinned");await this.child.delete(r,_)}finally{S()}}async*deleteMany(r,_={}){const S=await this.lock.writeLock();try{const E=this;yield*this.child.deleteMany(async function*(){for await(const x of r){if(await E.pins.isPinned(x))throw new Error("CID was pinned");yield x}}(),_)}finally{S()}}async has(r,_={}){const S=await this.lock.readLock();try{return await this.child.has(r,_)}finally{S()}}async*getAll(r={}){const _=await this.lock.readLock();try{yield*this.child.getAll(r)}finally{_()}}}const DS_VERSION_KEY=new Key("/version"),CURRENT_VERSION=1;async function assertDatastoreVersionIsCurrent(n){if(!await n.has(DS_VERSION_KEY)){await n.put(DS_VERSION_KEY,fromString$6(`${CURRENT_VERSION}`));return}const r=await n.get(DS_VERSION_KEY),_=toString$8(r);if(parseInt(_,10)!==CURRENT_VERSION)throw new Error("Unknown datastore version, a datastore migration may be required")}const code$2=0,name$4="identity",encode$j=coerce$c;function digest$2(n){return create$g(code$2,encode$j(n))}const identity$6={code:code$2,name:name$4,encode:encode$j,digest:digest$2};function defaultHashers(n=[]){return[sha256$8,sha512,identity$6,...n]}class HeliaImpl{libp2p;blockstore;datastore;pins;logger;log;constructor(r){this.logger=r.libp2p.logger,this.log=this.logger.forComponent("helia");const _=defaultHashers(r.hashers),S={blockstore:r.blockstore,datastore:r.datastore,libp2p:r.libp2p,hashers:_,logger:r.libp2p.logger},E=r.blockBrokers?.map(T=>T(S))??[bitswap()(S),trustlessGateway()(S)],x=new NetworkedStorage(S,{blockBrokers:E,hashers:_});this.pins=new PinsImpl(r.datastore,x,r.dagWalkers??[]),this.libp2p=r.libp2p,this.blockstore=new BlockStorage(x,this.pins,{holdGcLock:r.holdGcLock}),this.datastore=r.datastore}async start(){await assertDatastoreVersionIsCurrent(this.datastore),await start(this.blockstore),await this.libp2p.start()}async stop(){await this.libp2p.stop(),await stop(this.blockstore)}async gc(r={}){const _=await this.blockstore.lock.writeLock();try{const S=this,E=this.blockstore.unwrap();this.log("gc start"),await drain(E.deleteMany(async function*(){for await(const{cid:x}of E.getAll())try{if(await S.pins.isPinned(x,r))continue;yield x,r.onProgress?.(new CustomProgressEvent("helia:gc:deleted",x))}catch(T){S.log.error("Error during gc",T),r.onProgress?.(new CustomProgressEvent("helia:gc:error",T))}}()))}finally{_()}this.log("gc finished")}}const inspect$3=Symbol.for("nodejs.util.inspect.custom"),baseDecoder$2=Object.values(bases$4).map(n=>n.decoder).reduce((n,r)=>n.or(r),bases$4.identity.decoder),LIBP2P_KEY_CODE$2=114,MARSHALLED_ED225519_PUBLIC_KEY_LENGTH$2=36,MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH$2=37;let PeerIdImpl$2=class{type;multihash;privateKey;publicKey;string;constructor(r){this.type=r.type,this.multihash=r.multihash,this.privateKey=r.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[peerIdSymbol]=!0;toString(){return this.string==null&&(this.string=base58btc$c.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return CID$9.createV1(LIBP2P_KEY_CODE$2,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(r){if(r==null)return!1;if(r instanceof Uint8Array)return equals$l(this.multihash.bytes,r);if(typeof r=="string")return peerIdFromString$2(r).equals(this);if(r?.multihash?.bytes!=null)return equals$l(this.multihash.bytes,r.multihash.bytes);throw new Error("not valid Id")}[inspect$3](){return`PeerId(${this.toString()})`}},RSAPeerIdImpl$2=class extends PeerIdImpl$2{type="RSA";publicKey;constructor(r){super({...r,type:"RSA"}),this.publicKey=r.publicKey}},Ed25519PeerIdImpl$2=class extends PeerIdImpl$2{type="Ed25519";publicKey;constructor(r){super({...r,type:"Ed25519"}),this.publicKey=r.multihash.digest}},Secp256k1PeerIdImpl$2=class extends PeerIdImpl$2{type="secp256k1";publicKey;constructor(r){super({...r,type:"secp256k1"}),this.publicKey=r.multihash.digest}};const TRANSPORT_IPFS_GATEWAY_HTTP_CODE=2336;class URLPeerIdImpl{type="url";multihash;privateKey;publicKey;url;constructor(r){this.url=r.toString(),this.multihash=identity$a.digest(fromString$6(this.url))}[inspect$3](){return`PeerId(${this.url})`}[peerIdSymbol]=!0;toString(){return this.toCID().toString()}toCID(){return CID$9.createV1(TRANSPORT_IPFS_GATEWAY_HTTP_CODE,this.multihash)}toBytes(){return this.toCID().bytes}equals(r){return r==null?!1:(r instanceof Uint8Array&&(r=toString$8(r)),r.toString()===this.toString())}}function peerIdFromPeerId(n){if(n.type==="RSA")return new RSAPeerIdImpl$2(n);if(n.type==="Ed25519")return new Ed25519PeerIdImpl$2(n);if(n.type==="secp256k1")return new Secp256k1PeerIdImpl$2(n);throw new CodeError$4("Not a PeerId","ERR_INVALID_PARAMETERS")}function peerIdFromString$2(n,r){if(n.charAt(0)==="1"||n.charAt(0)==="Q"){const _=decode$$(base58btc$c.decode(`z${n}`));return n.startsWith("12D")?new Ed25519PeerIdImpl$2({multihash:_}):n.startsWith("16U")?new Secp256k1PeerIdImpl$2({multihash:_}):new RSAPeerIdImpl$2({multihash:_})}return peerIdFromBytes$2(baseDecoder$2.decode(n))}function peerIdFromBytes$2(n){try{const r=decode$$(n);if(r.code===identity$a.code){if(r.digest.length===MARSHALLED_ED225519_PUBLIC_KEY_LENGTH$2)return new Ed25519PeerIdImpl$2({multihash:r});if(r.digest.length===MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH$2)return new Secp256k1PeerIdImpl$2({multihash:r})}if(r.code===sha256$e.code)return new RSAPeerIdImpl$2({multihash:r})}catch{return peerIdFromCID$2(CID$9.decode(n))}throw new Error("Supplied PeerID CID is invalid")}function peerIdFromCID$2(n){if(n?.multihash==null||n.version==null||n.version===1&&n.code!==LIBP2P_KEY_CODE$2&&n.code!==TRANSPORT_IPFS_GATEWAY_HTTP_CODE)throw new Error("Supplied PeerID CID is invalid");if(n.code===TRANSPORT_IPFS_GATEWAY_HTTP_CODE){const _=toString$8(n.multihash.digest);return new URLPeerIdImpl(new URL(_))}const r=n.multihash;if(r.code===sha256$e.code)return new RSAPeerIdImpl$2({multihash:n.multihash});if(r.code===identity$a.code){if(r.digest.length===MARSHALLED_ED225519_PUBLIC_KEY_LENGTH$2)return new Ed25519PeerIdImpl$2({multihash:n.multihash});if(r.digest.length===MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH$2)return new Secp256k1PeerIdImpl$2({multihash:n.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function peerIdFromKeys$1(n,r){return n.length===MARSHALLED_ED225519_PUBLIC_KEY_LENGTH$2?new Ed25519PeerIdImpl$2({multihash:create$j(identity$a.code,n),privateKey:r}):n.length===MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH$2?new Secp256k1PeerIdImpl$2({multihash:create$j(identity$a.code,n),privateKey:r}):new RSAPeerIdImpl$2({multihash:await sha256$e.digest(n),publicKey:n,privateKey:r})}const second$1=1e3,minute$1=60*second$1,FloodsubID="/floodsub/1.0.0",GossipsubIDv10="/meshsub/1.0.0",GossipsubIDv11="/meshsub/1.1.0",GossipsubD=6,GossipsubDlo=4,GossipsubDhi=12,GossipsubDscore=4,GossipsubDout=2,GossipsubHistoryLength=5,GossipsubHistoryGossip=3,GossipsubDlazy=6,GossipsubGossipFactor=.25,GossipsubGossipRetransmission=3,GossipsubHeartbeatInitialDelay=100,GossipsubHeartbeatInterval=second$1,GossipsubFanoutTTL=minute$1,GossipsubPrunePeers=16,GossipsubPruneBackoff=minute$1,GossipsubUnsubscribeBackoff=10*second$1,GossipsubPruneBackoffTicks=15,GossipsubDirectConnectTicks=300,GossipsubDirectConnectInitialDelay=second$1,GossipsubOpportunisticGraftTicks=60,GossipsubOpportunisticGraftPeers=2,GossipsubGraftFloodThreshold=10*second$1,GossipsubMaxIHaveLength=5e3,GossipsubMaxIHaveMessages=10,GossipsubIWantFollowupTime=3*second$1,GossipsubSeenTTL=2*minute$1,TimeCacheDuration=120*1e3,ERR_TOPIC_VALIDATOR_REJECT="ERR_TOPIC_VALIDATOR_REJECT",ERR_TOPIC_VALIDATOR_IGNORE="ERR_TOPIC_VALIDATOR_IGNORE",ACCEPT_FROM_WHITELIST_THRESHOLD_SCORE=0,ACCEPT_FROM_WHITELIST_MAX_MESSAGES=128,ACCEPT_FROM_WHITELIST_DURATION_MS=1e3,DEFAULT_METRIC_MESH_MESSAGE_DELIVERIES_WINDOWS=1e3,BACKOFF_SLACK=1;var indexMinimal={},minimal$1={},aspromise=asPromise;function asPromise(n,r){for(var _=new Array(arguments.length-1),S=0,E=2,x=!0;E1&&C.charAt(I)==="=";)++B;return Math.ceil(C.length*3)/4-B};for(var _=new Array(64),S=new Array(123),E=0;E<64;)S[_[E]=E<26?E+65:E<52?E+71:E<62?E-4:E-59|43]=E++;r.encode=function(C,I,B){for(var A=null,D=[],N=0,O=0,M;I>2],M=(L&3)<<4,O=1;break;case 1:D[N++]=_[M|L>>4],M=(L&15)<<2,O=2;break;case 2:D[N++]=_[M|L>>6],D[N++]=_[L&63],O=0;break}N>8191&&((A||(A=[])).push(String.fromCharCode.apply(String,D)),N=0)}return O&&(D[N++]=_[M],D[N++]=61,O===1&&(D[N++]=61)),A?(N&&A.push(String.fromCharCode.apply(String,D.slice(0,N))),A.join("")):String.fromCharCode.apply(String,D.slice(0,N))};var x="invalid encoding";r.decode=function(C,I,B){for(var A=B,D=0,N,O=0;O1)break;if((M=S[M])===void 0)throw Error(x);switch(D){case 0:N=M,D=1;break;case 1:I[B++]=N<<2|(M&48)>>4,N=M,D=2;break;case 2:I[B++]=(N&15)<<4|(M&60)>>2,N=M,D=3;break;case 3:I[B++]=(N&3)<<6|M,D=0;break}}if(D===1)throw Error(x);return B-A},r.test=function(C){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(C)}})(base64$9);var eventemitter=EventEmitter;function EventEmitter(){this._listeners={}}EventEmitter.prototype.on=function n(r,_,S){return(this._listeners[r]||(this._listeners[r]=[])).push({fn:_,ctx:S||this}),this};EventEmitter.prototype.off=function n(r,_){if(r===void 0)this._listeners={};else if(_===void 0)this._listeners[r]=[];else for(var S=this._listeners[r],E=0;E0?0:2147483648,x,T);else if(isNaN(E))S(2143289344,x,T);else if(E>34028234663852886e22)S((C<<31|2139095040)>>>0,x,T);else if(E<11754943508222875e-54)S((C<<31|Math.round(E/1401298464324817e-60))>>>0,x,T);else{var I=Math.floor(Math.log(E)/Math.LN2),B=Math.round(E*Math.pow(2,-I)*8388608)&8388607;S((C<<31|I+127<<23|B)>>>0,x,T)}}n.writeFloatLE=r.bind(null,writeUintLE),n.writeFloatBE=r.bind(null,writeUintBE);function _(S,E,x){var T=S(E,x),C=(T>>31)*2+1,I=T>>>23&255,B=T&8388607;return I===255?B?NaN:C*(1/0):I===0?C*1401298464324817e-60*B:C*Math.pow(2,I-150)*(B+8388608)}n.readFloatLE=_.bind(null,readUintLE),n.readFloatBE=_.bind(null,readUintBE)}(),typeof Float64Array<"u"?function(){var r=new Float64Array([-0]),_=new Uint8Array(r.buffer),S=_[7]===128;function E(I,B,A){r[0]=I,B[A]=_[0],B[A+1]=_[1],B[A+2]=_[2],B[A+3]=_[3],B[A+4]=_[4],B[A+5]=_[5],B[A+6]=_[6],B[A+7]=_[7]}function x(I,B,A){r[0]=I,B[A]=_[7],B[A+1]=_[6],B[A+2]=_[5],B[A+3]=_[4],B[A+4]=_[3],B[A+5]=_[2],B[A+6]=_[1],B[A+7]=_[0]}n.writeDoubleLE=S?E:x,n.writeDoubleBE=S?x:E;function T(I,B){return _[0]=I[B],_[1]=I[B+1],_[2]=I[B+2],_[3]=I[B+3],_[4]=I[B+4],_[5]=I[B+5],_[6]=I[B+6],_[7]=I[B+7],r[0]}function C(I,B){return _[7]=I[B],_[6]=I[B+1],_[5]=I[B+2],_[4]=I[B+3],_[3]=I[B+4],_[2]=I[B+5],_[1]=I[B+6],_[0]=I[B+7],r[0]}n.readDoubleLE=S?T:C,n.readDoubleBE=S?C:T}():function(){function r(S,E,x,T,C,I){var B=T<0?1:0;if(B&&(T=-T),T===0)S(0,C,I+E),S(1/T>0?0:2147483648,C,I+x);else if(isNaN(T))S(0,C,I+E),S(2146959360,C,I+x);else if(T>17976931348623157e292)S(0,C,I+E),S((B<<31|2146435072)>>>0,C,I+x);else{var A;if(T<22250738585072014e-324)A=T/5e-324,S(A>>>0,C,I+E),S((B<<31|A/4294967296)>>>0,C,I+x);else{var D=Math.floor(Math.log(T)/Math.LN2);D===1024&&(D=1023),A=T*Math.pow(2,-D),S(A*4503599627370496>>>0,C,I+E),S((B<<31|D+1023<<20|A*1048576&1048575)>>>0,C,I+x)}}}n.writeDoubleLE=r.bind(null,writeUintLE,0,4),n.writeDoubleBE=r.bind(null,writeUintBE,4,0);function _(S,E,x,T,C){var I=S(T,C+E),B=S(T,C+x),A=(B>>31)*2+1,D=B>>>20&2047,N=4294967296*(B&1048575)+I;return D===2047?N?NaN:A*(1/0):D===0?A*5e-324*N:A*Math.pow(2,D-1075)*(N+4503599627370496)}n.readDoubleLE=_.bind(null,readUintLE,0,4),n.readDoubleBE=_.bind(null,readUintBE,4,0)}(),n}function writeUintLE(n,r,_){r[_]=n&255,r[_+1]=n>>>8&255,r[_+2]=n>>>16&255,r[_+3]=n>>>24}function writeUintBE(n,r,_){r[_]=n>>>24,r[_+1]=n>>>16&255,r[_+2]=n>>>8&255,r[_+3]=n&255}function readUintLE(n,r){return(n[r]|n[r+1]<<8|n[r+2]<<16|n[r+3]<<24)>>>0}function readUintBE(n,r){return(n[r]<<24|n[r+1]<<16|n[r+2]<<8|n[r+3])>>>0}var inquire_1=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(n){}return null}var utf8$2={};(function(n){var r=n;r.length=function(S){for(var E=0,x=0,T=0;T191&&A<224?I[B++]=(A&31)<<6|S[E++]&63:A>239&&A<365?(A=((A&7)<<18|(S[E++]&63)<<12|(S[E++]&63)<<6|S[E++]&63)-65536,I[B++]=55296+(A>>10),I[B++]=56320+(A&1023)):I[B++]=(A&15)<<12|(S[E++]&63)<<6|S[E++]&63,B>8191&&((C||(C=[])).push(String.fromCharCode.apply(String,I)),B=0);return C?(B&&C.push(String.fromCharCode.apply(String,I.slice(0,B))),C.join("")):String.fromCharCode.apply(String,I.slice(0,B))},r.write=function(S,E,x){for(var T=x,C,I,B=0;B>6|192,E[x++]=C&63|128):(C&64512)===55296&&((I=S.charCodeAt(B+1))&64512)===56320?(C=65536+((C&1023)<<10)+(I&1023),++B,E[x++]=C>>18|240,E[x++]=C>>12&63|128,E[x++]=C>>6&63|128,E[x++]=C&63|128):(E[x++]=C>>12|224,E[x++]=C>>6&63|128,E[x++]=C&63|128);return x-T}})(utf8$2);var pool_1=pool;function pool(n,r,_){var S=_||8192,E=S>>>1,x=null,T=S;return function(I){if(I<1||I>E)return n(I);T+I>S&&(x=n(S),T=0);var B=r.call(x,T,T+=I);return T&7&&(T=(T|7)+1),B}}var longbits,hasRequiredLongbits;function requireLongbits(){if(hasRequiredLongbits)return longbits;hasRequiredLongbits=1,longbits=r;var n=requireMinimal();function r(x,T){this.lo=x>>>0,this.hi=T>>>0}var _=r.zero=new r(0,0);_.toNumber=function(){return 0},_.zzEncode=_.zzDecode=function(){return this},_.length=function(){return 1};var S=r.zeroHash="\0\0\0\0\0\0\0\0";r.fromNumber=function(T){if(T===0)return _;var C=T<0;C&&(T=-T);var I=T>>>0,B=(T-I)/4294967296>>>0;return C&&(B=~B>>>0,I=~I>>>0,++I>4294967295&&(I=0,++B>4294967295&&(B=0))),new r(I,B)},r.from=function(T){if(typeof T=="number")return r.fromNumber(T);if(n.isString(T))if(n.Long)T=n.Long.fromString(T);else return r.fromNumber(parseInt(T,10));return T.low||T.high?new r(T.low>>>0,T.high>>>0):_},r.prototype.toNumber=function(T){if(!T&&this.hi>>>31){var C=~this.lo+1>>>0,I=~this.hi>>>0;return C||(I=I+1>>>0),-(C+I*4294967296)}return this.lo+this.hi*4294967296},r.prototype.toLong=function(T){return n.Long?new n.Long(this.lo|0,this.hi|0,!!T):{low:this.lo|0,high:this.hi|0,unsigned:!!T}};var E=String.prototype.charCodeAt;return r.fromHash=function(T){return T===S?_:new r((E.call(T,0)|E.call(T,1)<<8|E.call(T,2)<<16|E.call(T,3)<<24)>>>0,(E.call(T,4)|E.call(T,5)<<8|E.call(T,6)<<16|E.call(T,7)<<24)>>>0)},r.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},r.prototype.zzEncode=function(){var T=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^T)>>>0,this.lo=(this.lo<<1^T)>>>0,this},r.prototype.zzDecode=function(){var T=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^T)>>>0,this.hi=(this.hi>>>1^T)>>>0,this},r.prototype.length=function(){var T=this.lo,C=(this.lo>>>28|this.hi<<4)>>>0,I=this.hi>>>24;return I===0?C===0?T<16384?T<128?1:2:T<2097152?3:4:C<16384?C<128?5:6:C<2097152?7:8:I<128?9:10},longbits}var hasRequiredMinimal;function requireMinimal(){return hasRequiredMinimal||(hasRequiredMinimal=1,function(n){var r=n;r.asPromise=aspromise,r.base64=base64$9,r.EventEmitter=eventemitter,r.float=float,r.inquire=inquire_1,r.utf8=utf8$2,r.pool=pool_1,r.LongBits=requireLongbits(),r.isNode=!!(typeof commonjsGlobal<"u"&&commonjsGlobal&&commonjsGlobal.process&&commonjsGlobal.process.versions&&commonjsGlobal.process.versions.node),r.global=r.isNode&&commonjsGlobal||typeof window<"u"&&window||typeof self<"u"&&self||commonjsGlobal,r.emptyArray=Object.freeze?Object.freeze([]):[],r.emptyObject=Object.freeze?Object.freeze({}):{},r.isInteger=Number.isInteger||function(x){return typeof x=="number"&&isFinite(x)&&Math.floor(x)===x},r.isString=function(x){return typeof x=="string"||x instanceof String},r.isObject=function(x){return x&&typeof x=="object"},r.isset=r.isSet=function(x,T){var C=x[T];return C!=null&&x.hasOwnProperty(T)?typeof C!="object"||(Array.isArray(C)?C.length:Object.keys(C).length)>0:!1},r.Buffer=function(){try{var E=r.inquire("buffer").Buffer;return E.prototype.utf8Write?E:null}catch{return null}}(),r._Buffer_from=null,r._Buffer_allocUnsafe=null,r.newBuffer=function(x){return typeof x=="number"?r.Buffer?r._Buffer_allocUnsafe(x):new r.Array(x):r.Buffer?r._Buffer_from(x):typeof Uint8Array>"u"?x:new Uint8Array(x)},r.Array=typeof Uint8Array<"u"?Uint8Array:Array,r.Long=r.global.dcodeIO&&r.global.dcodeIO.Long||r.global.Long||r.inquire("long"),r.key2Re=/^true|false|0|1$/,r.key32Re=/^-?(?:0|[1-9][0-9]*)$/,r.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,r.longToHash=function(x){return x?r.LongBits.from(x).toHash():r.LongBits.zeroHash},r.longFromHash=function(x,T){var C=r.LongBits.fromHash(x);return r.Long?r.Long.fromBits(C.lo,C.hi,T):C.toNumber(!!T)};function _(E,x,T){for(var C=Object.keys(x),I=0;I-1;--B)if(T[I[B]]===1&&this[I[B]]!==void 0&&this[I[B]]!==null)return I[B]}},r.oneOfSetter=function(x){return function(T){for(var C=0;C127;)r[_++]=n&127|128,n>>>=7;r[_]=n}function VarintOp(n,r){this.len=n,this.next=void 0,this.val=r}VarintOp.prototype=Object.create(Op.prototype);VarintOp.prototype.fn=writeVarint32;Writer$1.prototype.uint32=function n(r){return this.len+=(this.tail=this.tail.next=new VarintOp((r=r>>>0)<128?1:r<16384?2:r<2097152?3:r<268435456?4:5,r)).len,this};Writer$1.prototype.int32=function n(r){return r<0?this._push(writeVarint64,10,LongBits$1.fromNumber(r)):this.uint32(r)};Writer$1.prototype.sint32=function n(r){return this.uint32((r<<1^r>>31)>>>0)};function writeVarint64(n,r,_){for(;n.hi;)r[_++]=n.lo&127|128,n.lo=(n.lo>>>7|n.hi<<25)>>>0,n.hi>>>=7;for(;n.lo>127;)r[_++]=n.lo&127|128,n.lo=n.lo>>>7;r[_++]=n.lo}Writer$1.prototype.uint64=function n(r){var _=LongBits$1.from(r);return this._push(writeVarint64,_.length(),_)};Writer$1.prototype.int64=Writer$1.prototype.uint64;Writer$1.prototype.sint64=function n(r){var _=LongBits$1.from(r).zzEncode();return this._push(writeVarint64,_.length(),_)};Writer$1.prototype.bool=function n(r){return this._push(writeByte,1,r?1:0)};function writeFixed32(n,r,_){r[_]=n&255,r[_+1]=n>>>8&255,r[_+2]=n>>>16&255,r[_+3]=n>>>24}Writer$1.prototype.fixed32=function n(r){return this._push(writeFixed32,4,r>>>0)};Writer$1.prototype.sfixed32=Writer$1.prototype.fixed32;Writer$1.prototype.fixed64=function n(r){var _=LongBits$1.from(r);return this._push(writeFixed32,4,_.lo)._push(writeFixed32,4,_.hi)};Writer$1.prototype.sfixed64=Writer$1.prototype.fixed64;Writer$1.prototype.float=function n(r){return this._push(util$4.float.writeFloatLE,4,r)};Writer$1.prototype.double=function n(r){return this._push(util$4.float.writeDoubleLE,8,r)};var writeBytes=util$4.Array.prototype.set?function n(r,_,S){_.set(r,S)}:function n(r,_,S){for(var E=0;E>>0;if(!_)return this._push(writeByte,1,0);if(util$4.isString(r)){var S=Writer$1.alloc(_=base64$8.length(r));base64$8.decode(r,S,0),r=S}return this.uint32(_)._push(writeBytes,_,r)};Writer$1.prototype.string=function n(r){var _=utf8$1.length(r);return _?this.uint32(_)._push(utf8$1.write,_,r):this._push(writeByte,1,0)};Writer$1.prototype.fork=function n(){return this.states=new State(this),this.head=this.tail=new Op(noop$1,0,0),this.len=0,this};Writer$1.prototype.reset=function n(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Op(noop$1,0,0),this.len=0),this};Writer$1.prototype.ldelim=function n(){var r=this.head,_=this.tail,S=this.len;return this.reset().uint32(S),S&&(this.tail.next=r.next,this.tail=_,this.len+=S),this};Writer$1.prototype.finish=function n(){for(var r=this.head.next,_=this.constructor.alloc(this.len),S=0;r;)r.fn(r.val,_,S),S+=r.len,r=r.next;return _};Writer$1._configure=function(n){BufferWriter$1=n,Writer$1.create=create$9(),BufferWriter$1._configure()};var writer_buffer=BufferWriter,Writer=writer;(BufferWriter.prototype=Object.create(Writer.prototype)).constructor=BufferWriter;var util$3=requireMinimal();function BufferWriter(){Writer.call(this)}BufferWriter._configure=function(){BufferWriter.alloc=util$3._Buffer_allocUnsafe,BufferWriter.writeBytesBuffer=util$3.Buffer&&util$3.Buffer.prototype instanceof Uint8Array&&util$3.Buffer.prototype.set.name==="set"?function(r,_,S){_.set(r,S)}:function(r,_,S){if(r.copy)r.copy(_,S,0,r.length);else for(var E=0;E>>0;return this.uint32(_),_&&this._push(BufferWriter.writeBytesBuffer,_,r),this};function writeStringBuffer(n,r,_){n.length<40?util$3.utf8.write(n,r,_):r.utf8Write?r.utf8Write(n,_):r.write(n,_)}BufferWriter.prototype.string=function n(r){var _=util$3.Buffer.byteLength(r);return this.uint32(_),_&&this._push(writeStringBuffer,_,r),this};BufferWriter._configure();var reader=Reader$1,util$2=requireMinimal(),BufferReader$1,LongBits=util$2.LongBits,utf8=util$2.utf8;function indexOutOfRange(n,r){return RangeError("index out of range: "+n.pos+" + "+(r||1)+" > "+n.len)}function Reader$1(n){this.buf=n,this.pos=0,this.len=n.length}var create_array=typeof Uint8Array<"u"?function n(r){if(r instanceof Uint8Array||Array.isArray(r))return new Reader$1(r);throw Error("illegal buffer")}:function n(r){if(Array.isArray(r))return new Reader$1(r);throw Error("illegal buffer")},create$8=function n(){return util$2.Buffer?function(_){return(Reader$1.create=function(E){return util$2.Buffer.isBuffer(E)?new BufferReader$1(E):create_array(E)})(_)}:create_array};Reader$1.create=create$8();Reader$1.prototype._slice=util$2.Array.prototype.subarray||util$2.Array.prototype.slice;Reader$1.prototype.uint32=function n(){var r=4294967295;return function(){if(r=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(r=(r|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(r=(r|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(r=(r|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(r=(r|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return r;if((this.pos+=5)>this.len)throw this.pos=this.len,indexOutOfRange(this,10);return r}}();Reader$1.prototype.int32=function n(){return this.uint32()|0};Reader$1.prototype.sint32=function n(){var r=this.uint32();return r>>>1^-(r&1)|0};function readLongVarint(){var n=new LongBits(0,0),r=0;if(this.len-this.pos>4){for(;r<4;++r)if(n.lo=(n.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n;if(n.lo=(n.lo|(this.buf[this.pos]&127)<<28)>>>0,n.hi=(n.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return n;r=0}else{for(;r<3;++r){if(this.pos>=this.len)throw indexOutOfRange(this);if(n.lo=(n.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n}return n.lo=(n.lo|(this.buf[this.pos++]&127)<>>0,n}if(this.len-this.pos>4){for(;r<5;++r)if(n.hi=(n.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n}else for(;r<5;++r){if(this.pos>=this.len)throw indexOutOfRange(this);if(n.hi=(n.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n}throw Error("invalid varint encoding")}Reader$1.prototype.bool=function n(){return this.uint32()!==0};function readFixed32_end(n,r){return(n[r-4]|n[r-3]<<8|n[r-2]<<16|n[r-1]<<24)>>>0}Reader$1.prototype.fixed32=function n(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)};Reader$1.prototype.sfixed32=function n(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)|0};function readFixed64(){if(this.pos+8>this.len)throw indexOutOfRange(this,8);return new LongBits(readFixed32_end(this.buf,this.pos+=4),readFixed32_end(this.buf,this.pos+=4))}Reader$1.prototype.float=function n(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);var r=util$2.float.readFloatLE(this.buf,this.pos);return this.pos+=4,r};Reader$1.prototype.double=function n(){if(this.pos+8>this.len)throw indexOutOfRange(this,4);var r=util$2.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,r};Reader$1.prototype.bytes=function n(){var r=this.uint32(),_=this.pos,S=this.pos+r;if(S>this.len)throw indexOutOfRange(this,r);if(this.pos+=r,Array.isArray(this.buf))return this.buf.slice(_,S);if(_===S){var E=util$2.Buffer;return E?E.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,_,S)};Reader$1.prototype.string=function n(){var r=this.bytes();return utf8.read(r,0,r.length)};Reader$1.prototype.skip=function n(r){if(typeof r=="number"){if(this.pos+r>this.len)throw indexOutOfRange(this,r);this.pos+=r}else do if(this.pos>=this.len)throw indexOutOfRange(this);while(this.buf[this.pos++]&128);return this};Reader$1.prototype.skipType=function(n){switch(n){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(n=this.uint32()&7)!==4;)this.skipType(n);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+n+" at offset "+this.pos)}return this};Reader$1._configure=function(n){BufferReader$1=n,Reader$1.create=create$8(),BufferReader$1._configure();var r=util$2.Long?"toLong":"toNumber";util$2.merge(Reader$1.prototype,{int64:function(){return readLongVarint.call(this)[r](!1)},uint64:function(){return readLongVarint.call(this)[r](!0)},sint64:function(){return readLongVarint.call(this).zzDecode()[r](!1)},fixed64:function(){return readFixed64.call(this)[r](!0)},sfixed64:function(){return readFixed64.call(this)[r](!1)}})};var reader_buffer=BufferReader,Reader=reader;(BufferReader.prototype=Object.create(Reader.prototype)).constructor=BufferReader;var util$1=requireMinimal();function BufferReader(n){Reader.call(this,n)}BufferReader._configure=function(){util$1.Buffer&&(BufferReader.prototype._slice=util$1.Buffer.prototype.slice)};BufferReader.prototype.string=function n(){var r=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+r,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+r,this.len))};BufferReader._configure();var rpc$1={},service=Service,util=requireMinimal();(Service.prototype=Object.create(util.EventEmitter.prototype)).constructor=Service;function Service(n,r,_){if(typeof n!="function")throw TypeError("rpcImpl must be a function");util.EventEmitter.call(this),this.rpcImpl=n,this.requestDelimited=!!r,this.responseDelimited=!!_}Service.prototype.rpcCall=function n(r,_,S,E,x){if(!E)throw TypeError("request must be specified");var T=this;if(!x)return util.asPromise(n,T,r,_,S,E);if(!T.rpcImpl){setTimeout(function(){x(Error("already ended"))},0);return}try{return T.rpcImpl(r,_[T.requestDelimited?"encodeDelimited":"encode"](E).finish(),function(I,B){if(I)return T.emit("error",I,r),x(I);if(B===null){T.end(!0);return}if(!(B instanceof S))try{B=S[T.responseDelimited?"decodeDelimited":"decode"](B)}catch(A){return T.emit("error",A,r),x(A)}return T.emit("data",B,r),x(null,B)})}catch(C){T.emit("error",C,r),setTimeout(function(){x(C)},0);return}};Service.prototype.end=function n(r){return this.rpcImpl&&(r||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this};(function(n){var r=n;r.Service=service})(rpc$1);var roots={};(function(n){var r=n;r.build="minimal",r.Writer=writer,r.BufferWriter=writer_buffer,r.Reader=reader,r.BufferReader=reader_buffer,r.util=requireMinimal(),r.rpc=rpc$1,r.roots=roots,r.configure=_;function _(){r.util._configure(),r.Writer._configure(r.BufferWriter),r.Reader._configure(r.BufferReader)}_()})(indexMinimal);var minimal=indexMinimal;const protobuf=getDefaultExportFromCjs(minimal),defaultDecodeRpcLimits={maxSubscriptions:1/0,maxMessages:1/0,maxIhaveMessageIDs:1/0,maxIwantMessageIDs:1/0,maxControlMessages:1/0,maxPeerInfos:1/0};function decodeRpc(n,r){r={...r};const _=protobuf.Reader.create(n),S=n.length,E=S===void 0?_.len:_.pos+S,x={};for(;_.pos>>3){case 1:x.subscriptions!=null&&x.subscriptions.length>0||(x.subscriptions=[]),x.subscriptions.length0||(x.messages=[]),x.messages.length>>3){case 1:S.subscribe=n.bool();break;case 2:S.topic=n.string();break;default:n.skipType(E&7);break}}return S}function decodeMessage(n,r){const _=r===void 0?n.len:n.pos+r,S={};for(;n.pos<_;){const E=n.uint32();switch(E>>>3){case 1:S.from=n.bytes();break;case 2:S.data=n.bytes();break;case 3:S.seqno=n.bytes();break;case 4:S.topic=n.string();break;case 5:S.signature=n.bytes();break;case 6:S.key=n.bytes();break;default:n.skipType(E&7);break}}if(!S.topic)throw Error("missing required 'topic'");return S}function decodeControlMessage(n,r,_){const S=r===void 0?n.len:n.pos+r,E={};for(;n.pos>>3){case 1:E.ihave!=null&&E.ihave.length>0||(E.ihave=[]),E.ihave.length<_.maxControlMessages?E.ihave.push(decodeControlIHave(n,n.uint32(),_)):n.skipType(x&7);break;case 2:E.iwant!=null&&E.iwant.length>0||(E.iwant=[]),E.iwant.length<_.maxControlMessages?E.iwant.push(decodeControlIWant(n,n.uint32(),_)):n.skipType(x&7);break;case 3:E.graft!=null&&E.graft.length>0||(E.graft=[]),E.graft.length<_.maxControlMessages?E.graft.push(decodeControlGraft(n,n.uint32())):n.skipType(x&7);break;case 4:E.prune!=null&&E.prune.length>0||(E.prune=[]),E.prune.length<_.maxControlMessages?E.prune.push(decodeControlPrune(n,n.uint32(),_)):n.skipType(x&7);break;default:n.skipType(x&7);break}}return E}function decodeControlIHave(n,r,_){const S=r===void 0?n.len:n.pos+r,E={};for(;n.pos>>3){case 1:E.topicID=n.string();break;case 2:E.messageIDs!=null&&E.messageIDs.length>0||(E.messageIDs=[]),_.maxIhaveMessageIDs-- >0?E.messageIDs.push(n.bytes()):n.skipType(x&7);break;default:n.skipType(x&7);break}}return E}function decodeControlIWant(n,r,_){const S=r===void 0?n.len:n.pos+r,E={};for(;n.pos>>3){case 1:E.messageIDs!=null&&E.messageIDs.length>0||(E.messageIDs=[]),_.maxIwantMessageIDs-- >0?E.messageIDs.push(n.bytes()):n.skipType(x&7);break;default:n.skipType(x&7);break}}return E}function decodeControlGraft(n,r){const _=r===void 0?n.len:n.pos+r,S={};for(;n.pos<_;){const E=n.uint32();switch(E>>>3){case 1:S.topicID=n.string();break;default:n.skipType(E&7);break}}return S}function decodeControlPrune(n,r,_){const S=r===void 0?n.len:n.pos+r,E={};for(;n.pos>>3){case 1:E.topicID=n.string();break;case 2:E.peers!=null&&E.peers.length>0||(E.peers=[]),_.maxPeerInfos-- >0?E.peers.push(decodePeerInfo(n,n.uint32())):n.skipType(x&7);break;case 3:E.backoff=n.uint64();break;default:n.skipType(x&7);break}}return E}function decodePeerInfo(n,r){const _=r===void 0?n.len:n.pos+r,S={};for(;n.pos<_;){const E=n.uint32();switch(E>>>3){case 1:S.peerID=n.bytes();break;case 2:S.signedPeerRecord=n.bytes();break;default:n.skipType(E&7);break}}return S}var rpc={exports:{}};(function(n){(function(r,_){typeof commonjsRequire=="function"&&n&&n.exports&&(n.exports=_(minimal))})(commonjsGlobal,function(r){var _=r.Reader,S=r.Writer,E=r.util,x=r.roots.default||(r.roots.default={});return x.RPC=function(){function T(I){if(this.subscriptions=[],this.messages=[],I)for(var B=Object.keys(I),A=0;A>>3){case 1:N.subscriptions&&N.subscriptions.length||(N.subscriptions=[]),N.subscriptions.push(x.RPC.SubOpts.decode(B,B.uint32()));break;case 2:N.messages&&N.messages.length||(N.messages=[]),N.messages.push(x.RPC.Message.decode(B,B.uint32()));break;case 3:N.control=x.RPC.ControlMessage.decode(B,B.uint32());break;default:B.skipType(O&7);break}}return N},T.fromObject=function(B){if(B instanceof x.RPC)return B;var A=new x.RPC;if(B.subscriptions){if(!Array.isArray(B.subscriptions))throw TypeError(".RPC.subscriptions: array expected");A.subscriptions=[];for(var D=0;D>>3){case 1:M.subscribe=D.bool();break;case 2:M.topic=D.string();break;default:D.skipType(L&7);break}}return M},I.fromObject=function(D){if(D instanceof x.RPC.SubOpts)return D;var N=new x.RPC.SubOpts;return D.subscribe!=null&&(N.subscribe=!!D.subscribe),D.topic!=null&&(N.topic=String(D.topic)),N},I.toObject=function(D,N){N||(N={});var O={};return D.subscribe!=null&&D.hasOwnProperty("subscribe")&&(O.subscribe=D.subscribe,N.oneofs&&(O._subscribe="subscribe")),D.topic!=null&&D.hasOwnProperty("topic")&&(O.topic=D.topic,N.oneofs&&(O._topic="topic")),O},I.prototype.toJSON=function(){return this.constructor.toObject(this,r.util.toJSONOptions)},I}(),T.Message=function(){function I(A){if(A)for(var D=Object.keys(A),N=0;N>>3){case 1:M.from=D.bytes();break;case 2:M.data=D.bytes();break;case 3:M.seqno=D.bytes();break;case 4:M.topic=D.string();break;case 5:M.signature=D.bytes();break;case 6:M.key=D.bytes();break;default:D.skipType(L&7);break}}if(!M.hasOwnProperty("topic"))throw E.ProtocolError("missing required 'topic'",{instance:M});return M},I.fromObject=function(D){if(D instanceof x.RPC.Message)return D;var N=new x.RPC.Message;return D.from!=null&&(typeof D.from=="string"?E.base64.decode(D.from,N.from=E.newBuffer(E.base64.length(D.from)),0):D.from.length&&(N.from=D.from)),D.data!=null&&(typeof D.data=="string"?E.base64.decode(D.data,N.data=E.newBuffer(E.base64.length(D.data)),0):D.data.length&&(N.data=D.data)),D.seqno!=null&&(typeof D.seqno=="string"?E.base64.decode(D.seqno,N.seqno=E.newBuffer(E.base64.length(D.seqno)),0):D.seqno.length&&(N.seqno=D.seqno)),D.topic!=null&&(N.topic=String(D.topic)),D.signature!=null&&(typeof D.signature=="string"?E.base64.decode(D.signature,N.signature=E.newBuffer(E.base64.length(D.signature)),0):D.signature.length&&(N.signature=D.signature)),D.key!=null&&(typeof D.key=="string"?E.base64.decode(D.key,N.key=E.newBuffer(E.base64.length(D.key)),0):D.key.length&&(N.key=D.key)),N},I.toObject=function(D,N){N||(N={});var O={};return N.defaults&&(O.topic=""),D.from!=null&&D.hasOwnProperty("from")&&(O.from=N.bytes===String?E.base64.encode(D.from,0,D.from.length):N.bytes===Array?Array.prototype.slice.call(D.from):D.from,N.oneofs&&(O._from="from")),D.data!=null&&D.hasOwnProperty("data")&&(O.data=N.bytes===String?E.base64.encode(D.data,0,D.data.length):N.bytes===Array?Array.prototype.slice.call(D.data):D.data,N.oneofs&&(O._data="data")),D.seqno!=null&&D.hasOwnProperty("seqno")&&(O.seqno=N.bytes===String?E.base64.encode(D.seqno,0,D.seqno.length):N.bytes===Array?Array.prototype.slice.call(D.seqno):D.seqno,N.oneofs&&(O._seqno="seqno")),D.topic!=null&&D.hasOwnProperty("topic")&&(O.topic=D.topic),D.signature!=null&&D.hasOwnProperty("signature")&&(O.signature=N.bytes===String?E.base64.encode(D.signature,0,D.signature.length):N.bytes===Array?Array.prototype.slice.call(D.signature):D.signature,N.oneofs&&(O._signature="signature")),D.key!=null&&D.hasOwnProperty("key")&&(O.key=N.bytes===String?E.base64.encode(D.key,0,D.key.length):N.bytes===Array?Array.prototype.slice.call(D.key):D.key,N.oneofs&&(O._key="key")),O},I.prototype.toJSON=function(){return this.constructor.toObject(this,r.util.toJSONOptions)},I}(),T.ControlMessage=function(){function I(B){if(this.ihave=[],this.iwant=[],this.graft=[],this.prune=[],B)for(var A=Object.keys(B),D=0;D>>3){case 1:O.ihave&&O.ihave.length||(O.ihave=[]),O.ihave.push(x.RPC.ControlIHave.decode(A,A.uint32()));break;case 2:O.iwant&&O.iwant.length||(O.iwant=[]),O.iwant.push(x.RPC.ControlIWant.decode(A,A.uint32()));break;case 3:O.graft&&O.graft.length||(O.graft=[]),O.graft.push(x.RPC.ControlGraft.decode(A,A.uint32()));break;case 4:O.prune&&O.prune.length||(O.prune=[]),O.prune.push(x.RPC.ControlPrune.decode(A,A.uint32()));break;default:A.skipType(M&7);break}}return O},I.fromObject=function(A){if(A instanceof x.RPC.ControlMessage)return A;var D=new x.RPC.ControlMessage;if(A.ihave){if(!Array.isArray(A.ihave))throw TypeError(".RPC.ControlMessage.ihave: array expected");D.ihave=[];for(var N=0;N>>3){case 1:M.topicID=D.string();break;case 2:M.messageIDs&&M.messageIDs.length||(M.messageIDs=[]),M.messageIDs.push(D.bytes());break;default:D.skipType(L&7);break}}return M},I.fromObject=function(D){if(D instanceof x.RPC.ControlIHave)return D;var N=new x.RPC.ControlIHave;if(D.topicID!=null&&(N.topicID=String(D.topicID)),D.messageIDs){if(!Array.isArray(D.messageIDs))throw TypeError(".RPC.ControlIHave.messageIDs: array expected");N.messageIDs=[];for(var O=0;O>>3){case 1:O.messageIDs&&O.messageIDs.length||(O.messageIDs=[]),O.messageIDs.push(A.bytes());break;default:A.skipType(M&7);break}}return O},I.fromObject=function(A){if(A instanceof x.RPC.ControlIWant)return A;var D=new x.RPC.ControlIWant;if(A.messageIDs){if(!Array.isArray(A.messageIDs))throw TypeError(".RPC.ControlIWant.messageIDs: array expected");D.messageIDs=[];for(var N=0;N>>3){case 1:M.topicID=D.string();break;default:D.skipType(L&7);break}}return M},I.fromObject=function(D){if(D instanceof x.RPC.ControlGraft)return D;var N=new x.RPC.ControlGraft;return D.topicID!=null&&(N.topicID=String(D.topicID)),N},I.toObject=function(D,N){N||(N={});var O={};return D.topicID!=null&&D.hasOwnProperty("topicID")&&(O.topicID=D.topicID,N.oneofs&&(O._topicID="topicID")),O},I.prototype.toJSON=function(){return this.constructor.toObject(this,r.util.toJSONOptions)},I}(),T.ControlPrune=function(){function I(A){if(this.peers=[],A)for(var D=Object.keys(A),N=0;N>>3){case 1:M.topicID=D.string();break;case 2:M.peers&&M.peers.length||(M.peers=[]),M.peers.push(x.RPC.PeerInfo.decode(D,D.uint32()));break;case 3:M.backoff=D.uint64();break;default:D.skipType(L&7);break}}return M},I.fromObject=function(D){if(D instanceof x.RPC.ControlPrune)return D;var N=new x.RPC.ControlPrune;if(D.topicID!=null&&(N.topicID=String(D.topicID)),D.peers){if(!Array.isArray(D.peers))throw TypeError(".RPC.ControlPrune.peers: array expected");N.peers=[];for(var O=0;O>>0,D.backoff.high>>>0).toNumber(!0))),N},I.toObject=function(D,N){N||(N={});var O={};if((N.arrays||N.defaults)&&(O.peers=[]),D.topicID!=null&&D.hasOwnProperty("topicID")&&(O.topicID=D.topicID,N.oneofs&&(O._topicID="topicID")),D.peers&&D.peers.length){O.peers=[];for(var M=0;M>>0,D.backoff.high>>>0).toNumber(!0):D.backoff,N.oneofs&&(O._backoff="backoff")),O},I.prototype.toJSON=function(){return this.constructor.toObject(this,r.util.toJSONOptions)},I}(),T.PeerInfo=function(){function I(A){if(A)for(var D=Object.keys(A),N=0;N>>3){case 1:M.peerID=D.bytes();break;case 2:M.signedPeerRecord=D.bytes();break;default:D.skipType(L&7);break}}return M},I.fromObject=function(D){if(D instanceof x.RPC.PeerInfo)return D;var N=new x.RPC.PeerInfo;return D.peerID!=null&&(typeof D.peerID=="string"?E.base64.decode(D.peerID,N.peerID=E.newBuffer(E.base64.length(D.peerID)),0):D.peerID.length&&(N.peerID=D.peerID)),D.signedPeerRecord!=null&&(typeof D.signedPeerRecord=="string"?E.base64.decode(D.signedPeerRecord,N.signedPeerRecord=E.newBuffer(E.base64.length(D.signedPeerRecord)),0):D.signedPeerRecord.length&&(N.signedPeerRecord=D.signedPeerRecord)),N},I.toObject=function(D,N){N||(N={});var O={};return D.peerID!=null&&D.hasOwnProperty("peerID")&&(O.peerID=N.bytes===String?E.base64.encode(D.peerID,0,D.peerID.length):N.bytes===Array?Array.prototype.slice.call(D.peerID):D.peerID,N.oneofs&&(O._peerID="peerID")),D.signedPeerRecord!=null&&D.hasOwnProperty("signedPeerRecord")&&(O.signedPeerRecord=N.bytes===String?E.base64.encode(D.signedPeerRecord,0,D.signedPeerRecord.length):N.bytes===Array?Array.prototype.slice.call(D.signedPeerRecord):D.signedPeerRecord,N.oneofs&&(O._signedPeerRecord="signedPeerRecord")),O},I.prototype.toJSON=function(){return this.constructor.toObject(this,r.util.toJSONOptions)},I}(),T}(),x})})(rpc);var rpcExports=rpc.exports;const cjs=getDefaultExportFromCjs(rpcExports),{RPC:RPC$1}=cjs;class MessageCache{gossip;msgs=new Map;msgIdToStrFn;history=[];notValidatedCount=0;constructor(r,_,S){this.gossip=r,this.msgIdToStrFn=S;for(let E=0;E<_;E++)this.history[E]=[]}get size(){return this.msgs.size}put(r,_,S=!1){const{msgIdStr:E}=r;return this.msgs.has(E)?!1:(this.msgs.set(E,{message:_,validated:S,originatingPeers:new Set,iwantCounts:new Map}),this.history[0].push({...r,topic:_.topic}),S||this.notValidatedCount++,!0)}observeDuplicate(r,_){const S=this.msgs.get(r);S!=null&&!S.validated&&S.originatingPeers.add(_)}get(r){return this.msgs.get(this.msgIdToStrFn(r))?.message}getWithIWantCount(r,_){const S=this.msgs.get(r);if(S==null)return null;const E=(S.iwantCounts.get(_)??0)+1;return S.iwantCounts.set(_,E),{msg:S.message,count:E}}getGossipIDs(r){const _=new Map;for(let S=0;S{if((this.msgs.get(E.msgIdStr)?.validated??!1)&&r.has(E.topic)){let T=_.get(E.topic);T==null&&(T=[],_.set(E.topic,T)),T.push(E.msgId)}});return _}validate(r){const _=this.msgs.get(r);if(_==null)return null;_.validated||this.notValidatedCount--;const{message:S,originatingPeers:E}=_;return _.validated=!0,_.originatingPeers=new Set,{message:S,originatingPeers:E}}shift(){this.history[this.history.length-1].forEach(_=>{const S=this.msgs.get(_.msgIdStr);S!=null&&(this.msgs.delete(_.msgIdStr),S.validated||this.notValidatedCount--)}),this.history.pop(),this.history.unshift([])}remove(r){const _=this.msgs.get(r);return _==null?null:(this.msgs.delete(r),_)}}var SignaturePolicy;(function(n){n.StrictSign="StrictSign",n.StrictNoSign="StrictNoSign"})(SignaturePolicy||(SignaturePolicy={}));var PublishConfigType;(function(n){n[n.Signing=0]="Signing",n[n.Anonymous=1]="Anonymous"})(PublishConfigType||(PublishConfigType={}));var RejectReason;(function(n){n.Error="error",n.Ignore="ignore",n.Reject="reject",n.Blacklisted="blacklisted"})(RejectReason||(RejectReason={}));var ValidateError;(function(n){n.InvalidSignature="invalid_signature",n.InvalidSeqno="invalid_seqno",n.InvalidPeerId="invalid_peerid",n.SignaturePresent="signature_present",n.SeqnoPresent="seqno_present",n.FromPresent="from_present",n.TransformFailed="transform_failed"})(ValidateError||(ValidateError={}));var MessageStatus;(function(n){n.duplicate="duplicate",n.invalid="invalid",n.valid="valid"})(MessageStatus||(MessageStatus={}));function rejectReasonFromAcceptance(n){switch(n){case TopicValidatorResult.Ignore:return RejectReason.Ignore;case TopicValidatorResult.Reject:return RejectReason.Reject;default:throw new Error("Unreachable")}}var MessageSource;(function(n){n.forward="forward",n.publish="publish"})(MessageSource||(MessageSource={}));var InclusionReason;(function(n){n.Fanout="fanout",n.Random="random",n.Subscribed="subscribed",n.Outbound="outbound",n.NotEnough="not_enough",n.Opportunistic="opportunistic"})(InclusionReason||(InclusionReason={}));var ChurnReason;(function(n){n.Dc="disconnected",n.BadScore="bad_score",n.Prune="prune",n.Excess="excess"})(ChurnReason||(ChurnReason={}));var ScorePenalty;(function(n){n.GraftBackoff="graft_backoff",n.BrokenPromise="broken_promise",n.MessageDeficit="message_deficit",n.IPColocation="IP_colocation"})(ScorePenalty||(ScorePenalty={}));var IHaveIgnoreReason;(function(n){n.LowScore="low_score",n.MaxIhave="max_ihave",n.MaxIasked="max_iasked"})(IHaveIgnoreReason||(IHaveIgnoreReason={}));var ScoreThreshold;(function(n){n.graylist="graylist",n.publish="publish",n.gossip="gossip",n.mesh="mesh"})(ScoreThreshold||(ScoreThreshold={}));function getMetrics(n,r,_){return{protocolsEnabled:n.gauge({name:"gossipsub_protocol",help:"Status of enabled protocols",labelNames:["protocol"]}),topicSubscriptionStatus:n.gauge({name:"gossipsub_topic_subscription_status",help:"Status of our subscription to this topic",labelNames:["topicStr"]}),topicPeersCount:n.gauge({name:"gossipsub_topic_peer_count",help:"Number of peers subscribed to each topic",labelNames:["topicStr"]}),meshPeerCounts:n.gauge({name:"gossipsub_mesh_peer_count",help:"Number of peers in our mesh",labelNames:["topicStr"]}),meshPeerInclusionEventsFanout:n.gauge({name:"gossipsub_mesh_peer_inclusion_events_fanout_total",help:"Number of times we include peers in a topic mesh for fanout reasons",labelNames:["topic"]}),meshPeerInclusionEventsRandom:n.gauge({name:"gossipsub_mesh_peer_inclusion_events_random_total",help:"Number of times we include peers in a topic mesh for random reasons",labelNames:["topic"]}),meshPeerInclusionEventsSubscribed:n.gauge({name:"gossipsub_mesh_peer_inclusion_events_subscribed_total",help:"Number of times we include peers in a topic mesh for subscribed reasons",labelNames:["topic"]}),meshPeerInclusionEventsOutbound:n.gauge({name:"gossipsub_mesh_peer_inclusion_events_outbound_total",help:"Number of times we include peers in a topic mesh for outbound reasons",labelNames:["topic"]}),meshPeerInclusionEventsNotEnough:n.gauge({name:"gossipsub_mesh_peer_inclusion_events_not_enough_total",help:"Number of times we include peers in a topic mesh for not_enough reasons",labelNames:["topic"]}),meshPeerInclusionEventsOpportunistic:n.gauge({name:"gossipsub_mesh_peer_inclusion_events_opportunistic_total",help:"Number of times we include peers in a topic mesh for opportunistic reasons",labelNames:["topic"]}),meshPeerInclusionEventsUnknown:n.gauge({name:"gossipsub_mesh_peer_inclusion_events_unknown_total",help:"Number of times we include peers in a topic mesh for unknown reasons",labelNames:["topic"]}),meshPeerChurnEventsDisconnected:n.gauge({name:"gossipsub_peer_churn_events_disconnected_total",help:"Number of times we remove peers in a topic mesh for disconnected reasons",labelNames:["topic"]}),meshPeerChurnEventsBadScore:n.gauge({name:"gossipsub_peer_churn_events_bad_score_total",help:"Number of times we remove peers in a topic mesh for bad_score reasons",labelNames:["topic"]}),meshPeerChurnEventsPrune:n.gauge({name:"gossipsub_peer_churn_events_prune_total",help:"Number of times we remove peers in a topic mesh for prune reasons",labelNames:["topic"]}),meshPeerChurnEventsExcess:n.gauge({name:"gossipsub_peer_churn_events_excess_total",help:"Number of times we remove peers in a topic mesh for excess reasons",labelNames:["topic"]}),meshPeerChurnEventsUnknown:n.gauge({name:"gossipsub_peer_churn_events_unknown_total",help:"Number of times we remove peers in a topic mesh for unknown reasons",labelNames:["topic"]}),peersPerProtocol:n.gauge({name:"gossipsub_peers_per_protocol_count",help:"Peers connected for each topic",labelNames:["protocol"]}),heartbeatDuration:n.histogram({name:"gossipsub_heartbeat_duration_seconds",help:"The time it takes to complete one iteration of the heartbeat",buckets:[.01,.1,1]}),heartbeatSkipped:n.gauge({name:"gossipsub_heartbeat_skipped",help:"Heartbeat run took longer than heartbeat interval so next is skipped"}),acceptedMessagesTotal:n.gauge({name:"gossipsub_accepted_messages_total",help:"Total accepted messages for each topic",labelNames:["topic"]}),ignoredMessagesTotal:n.gauge({name:"gossipsub_ignored_messages_total",help:"Total ignored messages for each topic",labelNames:["topic"]}),rejectedMessagesTotal:n.gauge({name:"gossipsub_rejected_messages_total",help:"Total rejected messages for each topic",labelNames:["topic"]}),unknownValidationResultsTotal:n.gauge({name:"gossipsub_unknown_validation_results_total",help:"Total unknown validation results for each topic",labelNames:["topic"]}),asyncValidationMcacheHit:n.gauge({name:"gossipsub_async_validation_mcache_hit_total",help:"Async validation result reported by the user layer",labelNames:["hit"]}),asyncValidationDelayFromFirstSeenSec:n.histogram({name:"gossipsub_async_validation_delay_from_first_seen",help:"Async validation report delay from first seen in second",buckets:[.01,.03,.1,.3,1,3,10]}),asyncValidationUnknownFirstSeen:n.gauge({name:"gossipsub_async_validation_unknown_first_seen_count_total",help:"Async validation report unknown first seen value for message"}),peerReadStreamError:n.gauge({name:"gossipsub_peer_read_stream_err_count_total",help:"Peer read stream error"}),rpcRecvBytes:n.gauge({name:"gossipsub_rpc_recv_bytes_total",help:"RPC recv"}),rpcRecvCount:n.gauge({name:"gossipsub_rpc_recv_count_total",help:"RPC recv"}),rpcRecvSubscription:n.gauge({name:"gossipsub_rpc_recv_subscription_total",help:"RPC recv"}),rpcRecvMessage:n.gauge({name:"gossipsub_rpc_recv_message_total",help:"RPC recv"}),rpcRecvControl:n.gauge({name:"gossipsub_rpc_recv_control_total",help:"RPC recv"}),rpcRecvIHave:n.gauge({name:"gossipsub_rpc_recv_ihave_total",help:"RPC recv"}),rpcRecvIWant:n.gauge({name:"gossipsub_rpc_recv_iwant_total",help:"RPC recv"}),rpcRecvGraft:n.gauge({name:"gossipsub_rpc_recv_graft_total",help:"RPC recv"}),rpcRecvPrune:n.gauge({name:"gossipsub_rpc_recv_prune_total",help:"RPC recv"}),rpcDataError:n.gauge({name:"gossipsub_rpc_data_err_count_total",help:"RPC data error"}),rpcRecvError:n.gauge({name:"gossipsub_rpc_recv_err_count_total",help:"RPC recv error"}),rpcRecvNotAccepted:n.gauge({name:"gossipsub_rpc_rcv_not_accepted_total",help:"Total count of RPC dropped because acceptFrom() == false"}),rpcSentBytes:n.gauge({name:"gossipsub_rpc_sent_bytes_total",help:"RPC sent"}),rpcSentCount:n.gauge({name:"gossipsub_rpc_sent_count_total",help:"RPC sent"}),rpcSentSubscription:n.gauge({name:"gossipsub_rpc_sent_subscription_total",help:"RPC sent"}),rpcSentMessage:n.gauge({name:"gossipsub_rpc_sent_message_total",help:"RPC sent"}),rpcSentControl:n.gauge({name:"gossipsub_rpc_sent_control_total",help:"RPC sent"}),rpcSentIHave:n.gauge({name:"gossipsub_rpc_sent_ihave_total",help:"RPC sent"}),rpcSentIWant:n.gauge({name:"gossipsub_rpc_sent_iwant_total",help:"RPC sent"}),rpcSentGraft:n.gauge({name:"gossipsub_rpc_sent_graft_total",help:"RPC sent"}),rpcSentPrune:n.gauge({name:"gossipsub_rpc_sent_prune_total",help:"RPC sent"}),msgPublishCount:n.gauge({name:"gossipsub_msg_publish_count_total",help:"Total count of msg published by topic",labelNames:["topic"]}),msgPublishPeersByTopic:n.gauge({name:"gossipsub_msg_publish_peers_total",help:"Total count of peers that we publish a msg to",labelNames:["topic"]}),directPeersPublishedTotal:n.gauge({name:"gossipsub_direct_peers_published_total",help:"Total direct peers that we publish a msg to",labelNames:["topic"]}),floodsubPeersPublishedTotal:n.gauge({name:"gossipsub_floodsub_peers_published_total",help:"Total floodsub peers that we publish a msg to",labelNames:["topic"]}),meshPeersPublishedTotal:n.gauge({name:"gossipsub_mesh_peers_published_total",help:"Total mesh peers that we publish a msg to",labelNames:["topic"]}),fanoutPeersPublishedTotal:n.gauge({name:"gossipsub_fanout_peers_published_total",help:"Total fanout peers that we publish a msg to",labelNames:["topic"]}),msgPublishBytes:n.gauge({name:"gossipsub_msg_publish_bytes_total",help:"Total count of msg publish data.length bytes",labelNames:["topic"]}),msgPublishTime:n.histogram({name:"gossipsub_msg_publish_seconds",help:"Total time in seconds to publish a message",buckets:[.001,.002,.005,.01,.1,.5,1],labelNames:["topic"]}),msgForwardCount:n.gauge({name:"gossipsub_msg_forward_count_total",help:"Total count of msg forwarded by topic",labelNames:["topic"]}),msgForwardPeers:n.gauge({name:"gossipsub_msg_forward_peers_total",help:"Total count of peers that we forward a msg to",labelNames:["topic"]}),msgReceivedPreValidation:n.gauge({name:"gossipsub_msg_received_prevalidation_total",help:"Total count of recv msgs before any validation",labelNames:["topic"]}),msgReceivedError:n.gauge({name:"gossipsub_msg_received_error_total",help:"Total count of recv msgs error",labelNames:["topic"]}),prevalidationInvalidTotal:n.gauge({name:"gossipsub_pre_validation_invalid_total",help:"Total count of invalid messages received",labelNames:["topic"]}),prevalidationValidTotal:n.gauge({name:"gossipsub_pre_validation_valid_total",help:"Total count of valid messages received",labelNames:["topic"]}),prevalidationDuplicateTotal:n.gauge({name:"gossipsub_pre_validation_duplicate_total",help:"Total count of duplicate messages received",labelNames:["topic"]}),prevalidationUnknownTotal:n.gauge({name:"gossipsub_pre_validation_unknown_status_total",help:"Total count of unknown_status messages received",labelNames:["topic"]}),msgReceivedInvalid:n.gauge({name:"gossipsub_msg_received_invalid_total",help:"Tracks specific reason of invalid",labelNames:["error"]}),msgReceivedInvalidByTopic:n.gauge({name:"gossipsub_msg_received_invalid_by_topic_total",help:"Tracks specific invalid message by topic",labelNames:["topic"]}),duplicateMsgDeliveryDelay:n.histogram({name:"gossisub_duplicate_msg_delivery_delay_seconds",help:"Time since the 1st duplicated message validated",labelNames:["topic"],buckets:[.25*_.maxMeshMessageDeliveriesWindowSec,.5*_.maxMeshMessageDeliveriesWindowSec,Number(_.maxMeshMessageDeliveriesWindowSec),2*_.maxMeshMessageDeliveriesWindowSec,4*_.maxMeshMessageDeliveriesWindowSec]}),duplicateMsgLateDelivery:n.gauge({name:"gossisub_duplicate_msg_late_delivery_total",help:"Total count of late duplicate message delivery by topic, which triggers P3 penalty",labelNames:["topic"]}),duplicateMsgIgnored:n.gauge({name:"gossisub_ignored_published_duplicate_msgs_total",help:"Total count of published duplicate message ignored by topic",labelNames:["topic"]}),scoreFnCalls:n.gauge({name:"gossipsub_score_fn_calls_total",help:"Total times score() is called"}),scoreFnRuns:n.gauge({name:"gossipsub_score_fn_runs_total",help:"Total times score() call actually computed computeScore(), no cache"}),scoreCachedDelta:n.histogram({name:"gossipsub_score_cache_delta",help:"Delta of score between cached values that expired",buckets:[10,100,1e3]}),peersByScoreThreshold:n.gauge({name:"gossipsub_peers_by_score_threshold_count",help:"Current count of peers by score threshold",labelNames:["threshold"]}),score:n.avgMinMax({name:"gossipsub_score",help:"Avg min max of gossip scores"}),scoreWeights:n.avgMinMax({name:"gossipsub_score_weights",help:"Separate score weights",labelNames:["topic","p"]}),scorePerMesh:n.avgMinMax({name:"gossipsub_score_per_mesh",help:"Histogram of the scores for each mesh topic",labelNames:["topic"]}),scoringPenalties:n.gauge({name:"gossipsub_scoring_penalties_total",help:"A counter of the kind of penalties being applied to peers",labelNames:["penalty"]}),behaviourPenalty:n.histogram({name:"gossipsub_peer_stat_behaviour_penalty",help:"Current peer stat behaviour_penalty at each scrape",buckets:[.25*_.behaviourPenaltyThreshold,.5*_.behaviourPenaltyThreshold,Number(_.behaviourPenaltyThreshold),2*_.behaviourPenaltyThreshold,4*_.behaviourPenaltyThreshold]}),ihaveRcvIgnored:n.gauge({name:"gossipsub_ihave_rcv_ignored_total",help:"Total received IHAVE messages that we ignore for some reason",labelNames:["reason"]}),ihaveRcvMsgids:n.gauge({name:"gossipsub_ihave_rcv_msgids_total",help:"Total received IHAVE messages by topic",labelNames:["topic"]}),ihaveRcvNotSeenMsgids:n.gauge({name:"gossipsub_ihave_rcv_not_seen_msgids_total",help:"Total messages per topic we do not have, not actual requests",labelNames:["topic"]}),iwantRcvMsgids:n.gauge({name:"gossipsub_iwant_rcv_msgids_total",help:"Total received IWANT messages by topic",labelNames:["topic"]}),iwantRcvDonthaveMsgids:n.gauge({name:"gossipsub_iwant_rcv_dont_have_msgids_total",help:"Total requested messageIDs that we do not have"}),iwantPromiseStarted:n.gauge({name:"gossipsub_iwant_promise_sent_total",help:"Total count of started IWANT promises"}),iwantPromiseResolved:n.gauge({name:"gossipsub_iwant_promise_resolved_total",help:"Total count of resolved IWANT promises"}),iwantPromiseResolvedFromDuplicate:n.gauge({name:"gossipsub_iwant_promise_resolved_from_duplicate_total",help:"Total count of resolved IWANT promises from duplicate messages"}),iwantPromiseResolvedPeers:n.gauge({name:"gossipsub_iwant_promise_resolved_peers",help:"Total count of peers we have asked IWANT promises that are resolved"}),iwantPromiseBroken:n.gauge({name:"gossipsub_iwant_promise_broken",help:"Total count of broken IWANT promises"}),iwantMessagePruned:n.gauge({name:"gossipsub_iwant_message_pruned",help:"Total count of pruned IWANT messages"}),iwantPromiseDeliveryTime:n.histogram({name:"gossipsub_iwant_promise_delivery_seconds",help:"Histogram of delivery time of resolved IWANT promises",buckets:[.5*_.gossipPromiseExpireSec,Number(_.gossipPromiseExpireSec),2*_.gossipPromiseExpireSec,4*_.gossipPromiseExpireSec]}),iwantPromiseUntracked:n.gauge({name:"gossip_iwant_promise_untracked",help:"Total count of untracked IWANT promise"}),connectedPeersBackoffSec:n.histogram({name:"gossipsub_connected_peers_backoff_seconds",help:"Backoff time in seconds",buckets:[1,2,4,10,20,60,120]}),cacheSize:n.gauge({name:"gossipsub_cache_size",help:"Unbounded cache sizes",labelNames:["cache"]}),mcacheSize:n.gauge({name:"gossipsub_mcache_size",help:"Current mcache msg count"}),mcacheNotValidatedCount:n.gauge({name:"gossipsub_mcache_not_validated_count",help:"Current mcache msg count not validated"}),fastMsgIdCacheCollision:n.gauge({name:"gossipsub_fastmsgid_cache_collision_total",help:"Total count of key collisions on fastmsgid cache put"}),newConnectionCount:n.gauge({name:"gossipsub_new_connection_total",help:"Total new connection by status",labelNames:["status"]}),topicStrToLabel:r,toTopic(S){return this.topicStrToLabel.get(S)??S},onJoin(S){this.topicSubscriptionStatus.set({topicStr:S},1),this.meshPeerCounts.set({topicStr:S},0)},onLeave(S){this.topicSubscriptionStatus.set({topicStr:S},0),this.meshPeerCounts.set({topicStr:S},0)},onAddToMesh(S,E,x){const T=this.toTopic(S);switch(E){case InclusionReason.Fanout:this.meshPeerInclusionEventsFanout.inc({topic:T},x);break;case InclusionReason.Random:this.meshPeerInclusionEventsRandom.inc({topic:T},x);break;case InclusionReason.Subscribed:this.meshPeerInclusionEventsSubscribed.inc({topic:T},x);break;case InclusionReason.Outbound:this.meshPeerInclusionEventsOutbound.inc({topic:T},x);break;case InclusionReason.NotEnough:this.meshPeerInclusionEventsNotEnough.inc({topic:T},x);break;case InclusionReason.Opportunistic:this.meshPeerInclusionEventsOpportunistic.inc({topic:T},x);break;default:this.meshPeerInclusionEventsUnknown.inc({topic:T},x);break}},onRemoveFromMesh(S,E,x){const T=this.toTopic(S);switch(E){case ChurnReason.Dc:this.meshPeerChurnEventsDisconnected.inc({topic:T},x);break;case ChurnReason.BadScore:this.meshPeerChurnEventsBadScore.inc({topic:T},x);break;case ChurnReason.Prune:this.meshPeerChurnEventsPrune.inc({topic:T},x);break;case ChurnReason.Excess:this.meshPeerChurnEventsExcess.inc({topic:T},x);break;default:this.meshPeerChurnEventsUnknown.inc({topic:T},x);break}},onReportValidation(S,E,x){if(this.asyncValidationMcacheHit.inc({hit:S!=null?"hit":"miss"}),S!=null){const T=this.toTopic(S.message.topic);switch(E){case TopicValidatorResult.Accept:this.acceptedMessagesTotal.inc({topic:T});break;case TopicValidatorResult.Ignore:this.ignoredMessagesTotal.inc({topic:T});break;case TopicValidatorResult.Reject:this.rejectedMessagesTotal.inc({topic:T});break;default:this.unknownValidationResultsTotal.inc({topic:T});break}}x!=null?this.asyncValidationDelayFromFirstSeenSec.observe((Date.now()-x)/1e3):this.asyncValidationUnknownFirstSeen.inc()},onScorePenalty(S){this.scoringPenalties.inc({penalty:S},1)},onIhaveRcv(S,E,x){const T=this.toTopic(S);this.ihaveRcvMsgids.inc({topic:T},E),this.ihaveRcvNotSeenMsgids.inc({topic:T},x)},onIwantRcv(S,E){for(const[x,T]of S){const C=this.toTopic(x);this.iwantRcvMsgids.inc({topic:C},T)}this.iwantRcvDonthaveMsgids.inc(E)},onForwardMsg(S,E){const x=this.toTopic(S);this.msgForwardCount.inc({topic:x},1),this.msgForwardPeers.inc({topic:x},E)},onPublishMsg(S,E,x,T,C){const I=this.toTopic(S);this.msgPublishCount.inc({topic:I},1),this.msgPublishBytes.inc({topic:I},x*T),this.msgPublishPeersByTopic.inc({topic:I},x),this.directPeersPublishedTotal.inc({topic:I},E.direct),this.floodsubPeersPublishedTotal.inc({topic:I},E.floodsub),this.meshPeersPublishedTotal.inc({topic:I},E.mesh),this.fanoutPeersPublishedTotal.inc({topic:I},E.fanout),this.msgPublishTime.observe({topic:I},C/1e3)},onMsgRecvPreValidation(S){const E=this.toTopic(S);this.msgReceivedPreValidation.inc({topic:E},1)},onMsgRecvError(S){const E=this.toTopic(S);this.msgReceivedError.inc({topic:E},1)},onPrevalidationResult(S,E){const x=this.toTopic(S);switch(E){case MessageStatus.duplicate:this.prevalidationDuplicateTotal.inc({topic:x});break;case MessageStatus.invalid:this.prevalidationInvalidTotal.inc({topic:x});break;case MessageStatus.valid:this.prevalidationValidTotal.inc({topic:x});break;default:this.prevalidationUnknownTotal.inc({topic:x});break}},onMsgRecvInvalid(S,E){const x=this.toTopic(S),T=E.reason===RejectReason.Error?E.error:E.reason;this.msgReceivedInvalid.inc({error:T},1),this.msgReceivedInvalidByTopic.inc({topic:x},1)},onDuplicateMsgDelivery(S,E,x){const T=this.toTopic(S);this.duplicateMsgDeliveryDelay.observe({topic:T},E/1e3),x&&this.duplicateMsgLateDelivery.inc({topic:T},1)},onPublishDuplicateMsg(S){const E=this.toTopic(S);this.duplicateMsgIgnored.inc({topic:E},1)},onPeerReadStreamError(){this.peerReadStreamError.inc(1)},onRpcRecvError(){this.rpcRecvError.inc(1)},onRpcDataError(){this.rpcDataError.inc(1)},onRpcRecv(S,E){this.rpcRecvBytes.inc(E),this.rpcRecvCount.inc(1),S.subscriptions!=null&&this.rpcRecvSubscription.inc(S.subscriptions.length),S.messages!=null&&this.rpcRecvMessage.inc(S.messages.length),S.control!=null&&(this.rpcRecvControl.inc(1),S.control.ihave!=null&&this.rpcRecvIHave.inc(S.control.ihave.length),S.control.iwant!=null&&this.rpcRecvIWant.inc(S.control.iwant.length),S.control.graft!=null&&this.rpcRecvGraft.inc(S.control.graft.length),S.control.prune!=null&&this.rpcRecvPrune.inc(S.control.prune.length))},onRpcSent(S,E){if(this.rpcSentBytes.inc(E),this.rpcSentCount.inc(1),S.subscriptions!=null&&this.rpcSentSubscription.inc(S.subscriptions.length),S.messages!=null&&this.rpcSentMessage.inc(S.messages.length),S.control!=null){const x=S.control.ihave?.length??0,T=S.control.iwant?.length??0,C=S.control.graft?.length??0,I=S.control.prune?.length??0;x>0&&this.rpcSentIHave.inc(x),T>0&&this.rpcSentIWant.inc(T),C>0&&this.rpcSentGraft.inc(C),I>0&&this.rpcSentPrune.inc(I),(x>0||T>0||C>0||I>0)&&this.rpcSentControl.inc(1)}},registerScores(S,E){let x=0,T=0,C=0,I=0;for(const B of S)B>=E.graylistThreshold&&x++,B>=E.publishThreshold&&T++,B>=E.gossipThreshold&&C++,B>=0&&I++;this.peersByScoreThreshold.set({threshold:ScoreThreshold.graylist},x),this.peersByScoreThreshold.set({threshold:ScoreThreshold.publish},T),this.peersByScoreThreshold.set({threshold:ScoreThreshold.gossip},C),this.peersByScoreThreshold.set({threshold:ScoreThreshold.mesh},I),this.score.set(S)},registerScoreWeights(S){for(const[E,x]of S.byTopic)this.scoreWeights.set({topic:E,p:"p1"},x.p1w),this.scoreWeights.set({topic:E,p:"p2"},x.p2w),this.scoreWeights.set({topic:E,p:"p3"},x.p3w),this.scoreWeights.set({topic:E,p:"p3b"},x.p3bw),this.scoreWeights.set({topic:E,p:"p4"},x.p4w);this.scoreWeights.set({p:"p5"},S.p5w),this.scoreWeights.set({p:"p6"},S.p6w),this.scoreWeights.set({p:"p7"},S.p7w)},registerScorePerMesh(S,E){const x=new Map;S.forEach((T,C)=>{const I=this.topicStrToLabel.get(C)??"unknown";let B=x.get(I);B==null&&(B=new Set,x.set(I,B)),T.forEach(A=>B?.add(A))});for(const[T,C]of x){const I=[];C.forEach(B=>{I.push(E.get(B)??0)}),this.scorePerMesh.set({topic:T},I)}}}}const ERR_INVALID_PEER_SCORE_PARAMS="ERR_INVALID_PEER_SCORE_PARAMS",defaultPeerScoreParams={topics:{},topicScoreCap:10,appSpecificScore:()=>0,appSpecificWeight:10,IPColocationFactorWeight:-5,IPColocationFactorThreshold:10,IPColocationFactorWhitelist:new Set,behaviourPenaltyWeight:-10,behaviourPenaltyThreshold:0,behaviourPenaltyDecay:.2,decayInterval:1e3,decayToZero:.1,retainScore:3600*1e3},defaultTopicScoreParams={topicWeight:.5,timeInMeshWeight:1,timeInMeshQuantum:1,timeInMeshCap:3600,firstMessageDeliveriesWeight:1,firstMessageDeliveriesDecay:.5,firstMessageDeliveriesCap:2e3,meshMessageDeliveriesWeight:-1,meshMessageDeliveriesDecay:.5,meshMessageDeliveriesCap:100,meshMessageDeliveriesThreshold:20,meshMessageDeliveriesWindow:10,meshMessageDeliveriesActivation:5e3,meshFailurePenaltyWeight:-1,meshFailurePenaltyDecay:.5,invalidMessageDeliveriesWeight:-1,invalidMessageDeliveriesDecay:.3};function createPeerScoreParams(n={}){return{...defaultPeerScoreParams,...n,topics:n.topics!=null?Object.entries(n.topics).reduce((r,[_,S])=>(r[_]=createTopicScoreParams(S),r),{}):{}}}function createTopicScoreParams(n={}){return{...defaultTopicScoreParams,...n}}function validatePeerScoreParams(n){for(const[r,_]of Object.entries(n.topics))try{validateTopicScoreParams(_)}catch(S){throw new CodeError$4(`invalid score parameters for topic ${r}: ${S.message}`,ERR_INVALID_PEER_SCORE_PARAMS)}if(n.topicScoreCap<0)throw new CodeError$4("invalid topic score cap; must be positive (or 0 for no cap)",ERR_INVALID_PEER_SCORE_PARAMS);if(n.appSpecificScore===null||n.appSpecificScore===void 0)throw new CodeError$4("missing application specific score function",ERR_INVALID_PEER_SCORE_PARAMS);if(n.IPColocationFactorWeight>0)throw new CodeError$4("invalid IPColocationFactorWeight; must be negative (or 0 to disable)",ERR_INVALID_PEER_SCORE_PARAMS);if(n.IPColocationFactorWeight!==0&&n.IPColocationFactorThreshold<1)throw new CodeError$4("invalid IPColocationFactorThreshold; must be at least 1",ERR_INVALID_PEER_SCORE_PARAMS);if(n.behaviourPenaltyWeight>0)throw new CodeError$4("invalid BehaviourPenaltyWeight; must be negative (or 0 to disable)",ERR_INVALID_PEER_SCORE_PARAMS);if(n.behaviourPenaltyWeight!==0&&(n.behaviourPenaltyDecay<=0||n.behaviourPenaltyDecay>=1))throw new CodeError$4("invalid BehaviourPenaltyDecay; must be between 0 and 1",ERR_INVALID_PEER_SCORE_PARAMS);if(n.decayInterval<1e3)throw new CodeError$4("invalid DecayInterval; must be at least 1s",ERR_INVALID_PEER_SCORE_PARAMS);if(n.decayToZero<=0||n.decayToZero>=1)throw new CodeError$4("invalid DecayToZero; must be between 0 and 1",ERR_INVALID_PEER_SCORE_PARAMS)}function validateTopicScoreParams(n){if(n.topicWeight<0)throw new CodeError$4("invalid topic weight; must be >= 0",ERR_INVALID_PEER_SCORE_PARAMS);if(n.timeInMeshQuantum===0)throw new CodeError$4("invalid TimeInMeshQuantum; must be non zero",ERR_INVALID_PEER_SCORE_PARAMS);if(n.timeInMeshWeight<0)throw new CodeError$4("invalid TimeInMeshWeight; must be positive (or 0 to disable)",ERR_INVALID_PEER_SCORE_PARAMS);if(n.timeInMeshWeight!==0&&n.timeInMeshQuantum<=0)throw new CodeError$4("invalid TimeInMeshQuantum; must be positive",ERR_INVALID_PEER_SCORE_PARAMS);if(n.timeInMeshWeight!==0&&n.timeInMeshCap<=0)throw new CodeError$4("invalid TimeInMeshCap; must be positive",ERR_INVALID_PEER_SCORE_PARAMS);if(n.firstMessageDeliveriesWeight<0)throw new CodeError$4("invallid FirstMessageDeliveriesWeight; must be positive (or 0 to disable)",ERR_INVALID_PEER_SCORE_PARAMS);if(n.firstMessageDeliveriesWeight!==0&&(n.firstMessageDeliveriesDecay<=0||n.firstMessageDeliveriesDecay>=1))throw new CodeError$4("invalid FirstMessageDeliveriesDecay; must be between 0 and 1",ERR_INVALID_PEER_SCORE_PARAMS);if(n.firstMessageDeliveriesWeight!==0&&n.firstMessageDeliveriesCap<=0)throw new CodeError$4("invalid FirstMessageDeliveriesCap; must be positive",ERR_INVALID_PEER_SCORE_PARAMS);if(n.meshMessageDeliveriesWeight>0)throw new CodeError$4("invalid MeshMessageDeliveriesWeight; must be negative (or 0 to disable)",ERR_INVALID_PEER_SCORE_PARAMS);if(n.meshMessageDeliveriesWeight!==0&&(n.meshMessageDeliveriesDecay<=0||n.meshMessageDeliveriesDecay>=1))throw new CodeError$4("invalid MeshMessageDeliveriesDecay; must be between 0 and 1",ERR_INVALID_PEER_SCORE_PARAMS);if(n.meshMessageDeliveriesWeight!==0&&n.meshMessageDeliveriesCap<=0)throw new CodeError$4("invalid MeshMessageDeliveriesCap; must be positive",ERR_INVALID_PEER_SCORE_PARAMS);if(n.meshMessageDeliveriesWeight!==0&&n.meshMessageDeliveriesThreshold<=0)throw new CodeError$4("invalid MeshMessageDeliveriesThreshold; must be positive",ERR_INVALID_PEER_SCORE_PARAMS);if(n.meshMessageDeliveriesWindow<0)throw new CodeError$4("invalid MeshMessageDeliveriesWindow; must be non-negative",ERR_INVALID_PEER_SCORE_PARAMS);if(n.meshMessageDeliveriesWeight!==0&&n.meshMessageDeliveriesActivation<1e3)throw new CodeError$4("invalid MeshMessageDeliveriesActivation; must be at least 1s",ERR_INVALID_PEER_SCORE_PARAMS);if(n.meshFailurePenaltyWeight>0)throw new CodeError$4("invalid MeshFailurePenaltyWeight; must be negative (or 0 to disable)",ERR_INVALID_PEER_SCORE_PARAMS);if(n.meshFailurePenaltyWeight!==0&&(n.meshFailurePenaltyDecay<=0||n.meshFailurePenaltyDecay>=1))throw new CodeError$4("invalid MeshFailurePenaltyDecay; must be between 0 and 1",ERR_INVALID_PEER_SCORE_PARAMS);if(n.invalidMessageDeliveriesWeight>0)throw new CodeError$4("invalid InvalidMessageDeliveriesWeight; must be negative (or 0 to disable)",ERR_INVALID_PEER_SCORE_PARAMS);if(n.invalidMessageDeliveriesDecay<=0||n.invalidMessageDeliveriesDecay>=1)throw new CodeError$4("invalid InvalidMessageDeliveriesDecay; must be between 0 and 1",ERR_INVALID_PEER_SCORE_PARAMS)}const defaultPeerScoreThresholds={gossipThreshold:-10,publishThreshold:-50,graylistThreshold:-80,acceptPXThreshold:10,opportunisticGraftThreshold:20};function createPeerScoreThresholds(n={}){return{...defaultPeerScoreThresholds,...n}}function removeItemsFromSet(n,r,_=()=>!0){const S=new Set;if(r<=0)return S;for(const E of n){if(S.size>=r)break;_(E)&&(S.add(E),n.delete(E))}return S}function removeFirstNItemsFromSet(n,r){return removeItemsFromSet(n,r,()=>!0)}class MapDef extends Map{getDefault;constructor(r){super(),this.getDefault=r}getOrDefault(r){let _=super.get(r);return _===void 0&&(_=this.getDefault(),this.set(r,_)),_}}function computeScore(n,r,_,S){let E=0;Object.entries(r.topics).forEach(([T,C])=>{const I=_.topics[T];if(I===void 0)return;let B=0;if(C.inMesh){let O=C.meshTime/I.timeInMeshQuantum;O>I.timeInMeshCap&&(O=I.timeInMeshCap),B+=O*I.timeInMeshWeight}let A=C.firstMessageDeliveries;if(A>I.firstMessageDeliveriesCap&&(A=I.firstMessageDeliveriesCap),B+=A*I.firstMessageDeliveriesWeight,C.meshMessageDeliveriesActive&&C.meshMessageDeliveries0&&E>_.topicScoreCap&&(E=_.topicScoreCap);const x=_.appSpecificScore(n);if(E+=x*_.appSpecificWeight,r.knownIPs.forEach(T=>{if(_.IPColocationFactorWhitelist.has(T))return;const C=S.get(T),I=C!=null?C.size:0;if(I>_.IPColocationFactorThreshold){const B=I-_.IPColocationFactorThreshold,A=B*B;E+=A*_.IPColocationFactorWeight}}),r.behaviourPenalty>_.behaviourPenaltyThreshold){const T=r.behaviourPenalty-_.behaviourPenaltyThreshold,C=T*T;E+=C*_.behaviourPenaltyWeight}return E}function Denque(n,_){var _=_||{};this._capacity=_.capacity,this._head=0,this._tail=0,Array.isArray(n)?this._fromArray(n):(this._capacityMask=3,this._list=new Array(4))}Denque.prototype.peekAt=function n(r){var _=r;if(_===(_|0)){var S=this.size();if(!(_>=S||_<-S))return _<0&&(_+=S),_=this._head+_&this._capacityMask,this._list[_]}};Denque.prototype.get=function n(r){return this.peekAt(r)};Denque.prototype.peek=function n(){if(this._head!==this._tail)return this._list[this._head]};Denque.prototype.peekFront=function n(){return this.peek()};Denque.prototype.peekBack=function n(){return this.peekAt(-1)};Object.defineProperty(Denque.prototype,"length",{get:function n(){return this.size()}});Denque.prototype.size=function n(){return this._head===this._tail?0:this._headthis._capacity&&this.pop(),this._head1e4&&this._tail<=this._list.length>>>2&&this._shrinkArray(),_}};Denque.prototype.push=function n(r){if(arguments.length===0)return this.size();var _=this._tail;return this._list[_]=r,this._tail=_+1&this._capacityMask,this._tail===this._head&&this._growArray(),this._capacity&&this.size()>this._capacity&&this.shift(),this._head1e4&&r<=_>>>2&&this._shrinkArray(),S}};Denque.prototype.removeOne=function n(r){var _=r;if(_===(_|0)&&this._head!==this._tail){var S=this.size(),E=this._list.length;if(!(_>=S||_<-S)){_<0&&(_+=S),_=this._head+_&this._capacityMask;var x=this._list[_],T;if(r0;T--)this._list[_]=this._list[_=_-1+E&this._capacityMask];this._list[_]=void 0,this._head=this._head+1+E&this._capacityMask}else{for(T=S-1-r;T>0;T--)this._list[_]=this._list[_=_+1+E&this._capacityMask];this._list[_]=void 0,this._tail=this._tail-1+E&this._capacityMask}return x}}};Denque.prototype.remove=function n(r,_){var S=r,E,x=_;if(S===(S|0)&&this._head!==this._tail){var T=this.size(),C=this._list.length;if(!(S>=T||S<-T||_<1)){if(S<0&&(S+=T),_===1||!_)return E=new Array(1),E[0]=this.removeOne(S),E;if(S===0&&S+_>=T)return E=this.toArray(),this.clear(),E;S+_>T&&(_=T-S);var I;for(E=new Array(_),I=0;I<_;I++)E[I]=this._list[this._head+S+I&this._capacityMask];if(S=this._head+S&this._capacityMask,r+_===T){for(this._tail=this._tail-_+C&this._capacityMask,I=_;I>0;I--)this._list[S=S+1+C&this._capacityMask]=void 0;return E}if(r===0){for(this._head=this._head+_+C&this._capacityMask,I=_-1;I>0;I--)this._list[S=S+1+C&this._capacityMask]=void 0;return E}if(S0;I--)this.unshift(this._list[S=S-1+C&this._capacityMask]);for(S=this._head-1+C&this._capacityMask;x>0;)this._list[S=S-1+C&this._capacityMask]=void 0,x--;r<0&&(this._tail=S)}else{for(this._tail=S,S=S+_+C&this._capacityMask,I=T-(_+r);I>0;I--)this.push(this._list[S++]);for(S=this._tail;x>0;)this._list[S=S+1+C&this._capacityMask]=void 0,x--}return this._head<2&&this._tail>1e4&&this._tail<=C>>>2&&this._shrinkArray(),E}}};Denque.prototype.splice=function n(r,_){var S=r;if(S===(S|0)){var E=this.size();if(S<0&&(S+=E),!(S>E))if(arguments.length>2){var x,T,C,I=arguments.length,B=this._list.length,A=2;if(!E||S0&&(this._head=this._head+S+B&this._capacityMask)):(C=this.remove(S,_),this._head=this._head+S+B&this._capacityMask);I>A;)this.unshift(arguments[--I]);for(x=S;x>0;x--)this.unshift(T[x-1])}else{T=new Array(E-(S+_));var D=T.length;for(x=0;xthis._tail){for(I=this._head;I>>=1,this._capacityMask>>>=1};Denque.prototype._nextPowerOf2=function n(r){var _=Math.log(r)/Math.log(2),S=1<<_+1;return Math.max(S,4)};var denque=Denque;const Denque$1=getDefaultExportFromCjs(denque);var DeliveryRecordStatus;(function(n){n[n.unknown=0]="unknown",n[n.valid=1]="valid",n[n.invalid=2]="invalid",n[n.ignored=3]="ignored"})(DeliveryRecordStatus||(DeliveryRecordStatus={}));class MessageDeliveries{records;queue;constructor(){this.records=new Map,this.queue=new Denque$1}getRecord(r){return this.records.get(r)}ensureRecord(r){let _=this.records.get(r);if(_!=null)return _;_={status:DeliveryRecordStatus.unknown,firstSeenTsMs:Date.now(),validated:0,peers:new Set},this.records.set(r,_);const S={msgId:r,expire:Date.now()+TimeCacheDuration};return this.queue.push(S),_}gc(){const r=Date.now();let _=this.queue.peekFront();for(;_!=null&&_.expirenew Set);scoreCache=new Map;deliveryRecords=new MessageDeliveries;_backgroundInterval;scoreCacheValidityMs;computeScore;log;constructor(r,_,S,E){this.params=r,this.metrics=_,validatePeerScoreParams(r),this.scoreCacheValidityMs=E.scoreCacheValidityMs,this.computeScore=E.computeScore??computeScore,this.log=S.forComponent("libp2p:gossipsub:score")}get size(){return this.peerStats.size}start(){if(this._backgroundInterval!=null){this.log("Peer score already running");return}this._backgroundInterval=setInterval(()=>{this.background()},this.params.decayInterval),this.log("started")}stop(){if(this._backgroundInterval==null){this.log("Peer score already stopped");return}clearInterval(this._backgroundInterval),delete this._backgroundInterval,this.peerIPs.clear(),this.peerStats.clear(),this.deliveryRecords.clear(),this.log("stopped")}background(){this.refreshScores(),this.deliveryRecords.gc()}dumpPeerScoreStats(){return Object.fromEntries(Array.from(this.peerStats.entries()).map(([r,_])=>[r,_]))}messageFirstSeenTimestampMs(r){const _=this.deliveryRecords.getRecord(r);return _!=null?_.firstSeenTsMs:null}refreshScores(){const r=Date.now(),_=this.params.decayToZero;this.peerStats.forEach((S,E)=>{if(!S.connected){r>S.expire&&(this.removeIPsForPeer(E,S.knownIPs),this.peerStats.delete(E),this.scoreCache.delete(E));return}Object.entries(S.topics).forEach(([x,T])=>{const C=this.params.topics[x];C!==void 0&&(T.firstMessageDeliveries*=C.firstMessageDeliveriesDecay,T.firstMessageDeliveries<_&&(T.firstMessageDeliveries=0),T.meshMessageDeliveries*=C.meshMessageDeliveriesDecay,T.meshMessageDeliveries<_&&(T.meshMessageDeliveries=0),T.meshFailurePenalty*=C.meshFailurePenaltyDecay,T.meshFailurePenalty<_&&(T.meshFailurePenalty=0),T.invalidMessageDeliveries*=C.invalidMessageDeliveriesDecay,T.invalidMessageDeliveries<_&&(T.invalidMessageDeliveries=0),T.inMesh&&(T.meshTime=r-T.graftTime,T.meshTime>C.meshMessageDeliveriesActivation&&(T.meshMessageDeliveriesActive=!0)))}),S.behaviourPenalty*=this.params.behaviourPenaltyDecay,S.behaviourPenalty<_&&(S.behaviourPenalty=0)})}score(r){this.metrics?.scoreFnCalls.inc();const _=this.peerStats.get(r);if(_==null)return 0;const S=Date.now(),E=this.scoreCache.get(r);if(E!=null&&E.cacheUntil>S)return E.score;this.metrics?.scoreFnRuns.inc();const x=this.computeScore(r,_,this.params,this.peerIPs),T=S+this.scoreCacheValidityMs;return E!=null?(this.metrics?.scoreCachedDelta.observe(Math.abs(x-E.score)),E.score=x,E.cacheUntil=T):this.scoreCache.set(r,{score:x,cacheUntil:T}),x}addPenalty(r,_,S){const E=this.peerStats.get(r);E!=null&&(E.behaviourPenalty+=_,this.metrics?.onScorePenalty(S))}addPeer(r){const _={connected:!0,expire:0,topics:{},knownIPs:new Set,behaviourPenalty:0};this.peerStats.set(r,_)}addIP(r,_){const S=this.peerStats.get(r);S?.knownIPs.add(_),this.peerIPs.getOrDefault(_).add(r)}removeIP(r,_){const S=this.peerStats.get(r);S?.knownIPs.delete(_);const E=this.peerIPs.get(_);E!=null&&(E.delete(r),E.size===0&&this.peerIPs.delete(_))}removePeer(r){const _=this.peerStats.get(r);if(_!=null){if(this.score(r)>0){this.removeIPsForPeer(r,_.knownIPs),this.peerStats.delete(r);return}Object.entries(_.topics).forEach(([S,E])=>{E.firstMessageDeliveries=0;const x=this.params.topics[S].meshMessageDeliveriesThreshold;if(E.inMesh&&E.meshMessageDeliveriesActive&&E.meshMessageDeliveries{T!==r.toString()&&this.markDuplicateMessageDelivery(T,S)})}rejectInvalidMessage(r,_){this.markInvalidMessageDelivery(r,_)}rejectMessage(r,_,S,E){switch(E){case RejectReason.Error:this.markInvalidMessageDelivery(r,S);return;case RejectReason.Blacklisted:return}const x=this.deliveryRecords.ensureRecord(_);if(x.status!==DeliveryRecordStatus.unknown){this.log("unexpected rejection: message from %s was first seen %s ago and has delivery status %d",r,Date.now()-x.firstSeenTsMs,DeliveryRecordStatus[x.status]);return}if(E===RejectReason.Ignore){x.status=DeliveryRecordStatus.ignored,x.peers.clear();return}x.status=DeliveryRecordStatus.invalid,this.markInvalidMessageDelivery(r,S),x.peers.forEach(T=>{this.markInvalidMessageDelivery(T,S)}),x.peers.clear()}duplicateMessage(r,_,S){const E=this.deliveryRecords.ensureRecord(_);if(!E.peers.has(r))switch(E.status){case DeliveryRecordStatus.unknown:E.peers.add(r);break;case DeliveryRecordStatus.valid:E.peers.add(r),this.markDuplicateMessageDelivery(r,S,E.validated);break;case DeliveryRecordStatus.invalid:this.markInvalidMessageDelivery(r,S);break;case DeliveryRecordStatus.ignored:break}}markInvalidMessageDelivery(r,_){const S=this.peerStats.get(r);if(S!=null){const E=this.getPtopicStats(S,_);E!=null&&(E.invalidMessageDeliveries+=1)}}markFirstMessageDelivery(r,_){const S=this.peerStats.get(r);if(S!=null){const E=this.getPtopicStats(S,_);if(E!=null){let x=this.params.topics[_].firstMessageDeliveriesCap;E.firstMessageDeliveries=Math.min(x,E.firstMessageDeliveries+1),E.inMesh&&(x=this.params.topics[_].meshMessageDeliveriesCap,E.meshMessageDeliveries=Math.min(x,E.meshMessageDeliveries+1))}}}markDuplicateMessageDelivery(r,_,S){const E=this.peerStats.get(r);if(E!=null){const x=S!==void 0?Date.now():0,T=this.getPtopicStats(E,_);if(T!=null&&T.inMesh){const C=this.params.topics[_];if(S!==void 0){const B=x-S,A=B>C.meshMessageDeliveriesWindow;if(this.metrics?.onDuplicateMsgDelivery(_,B,A),A)return}const I=C.meshMessageDeliveriesCap;T.meshMessageDeliveries=Math.min(I,T.meshMessageDeliveries+1)}}}removeIPsForPeer(r,_){for(const S of _){const E=this.peerIPs.get(S);E!=null&&(E.delete(r),E.size===0&&this.peerIPs.delete(S))}}getPtopicStats(r,_){let S=r.topics[_];return S!==void 0?S:this.params.topics[_]!==void 0?(S={inMesh:!1,graftTime:0,meshTime:0,firstMessageDeliveries:0,meshMessageDeliveries:0,meshMessageDeliveriesActive:!1,meshFailurePenalty:0,invalidMessageDeliveries:0},r.topics[_]=S,S):null}}function computeScoreWeights(n,r,_,S,E){let x=0;const T=new Map;if(Object.entries(r.topics).forEach(([N,O])=>{const M=E.get(N)??"unknown",L=_.topics[N];if(L===void 0)return;let F=T.get(M);F==null&&(F={p1w:0,p2w:0,p3w:0,p3bw:0,p4w:0},T.set(M,F));let U=0,j=0,z=0,H=0,Q=0;if(O.inMesh){const ie=Math.max(O.meshTime/L.timeInMeshQuantum,L.timeInMeshCap);U+=ie*L.timeInMeshWeight}let J=O.firstMessageDeliveries;if(J>L.firstMessageDeliveriesCap&&(J=L.firstMessageDeliveriesCap),j+=J*L.firstMessageDeliveriesWeight,O.meshMessageDeliveriesActive&&O.meshMessageDeliveries0&&x>_.topicScoreCap){x=_.topicScoreCap;const N=_.topicScoreCap/x;for(const O of T.values())O.p1w*=N,O.p2w*=N,O.p3w*=N,O.p3bw*=N,O.p4w*=N}let C=0,I=0,B=0;const A=_.appSpecificScore(n);C+=A*_.appSpecificWeight,r.knownIPs.forEach(N=>{if(_.IPColocationFactorWhitelist.has(N))return;const O=S.get(N),M=O!=null?O.size:0;if(M>_.IPColocationFactorThreshold){const L=M-_.IPColocationFactorThreshold,F=L*L;I+=F*_.IPColocationFactorWeight}});const D=r.behaviourPenalty*r.behaviourPenalty;return B+=D*_.behaviourPenaltyWeight,x+=C+I+B,{byTopic:T,p5w:C,p6w:I,p7w:B,score:x}}function computeAllPeersScoreWeights(n,r,_,S,E){const x={byTopic:new Map,p5w:[],p6w:[],p7w:[],score:[]};for(const T of n){const C=r.get(T);if(C!=null){const I=computeScoreWeights(T,C,_,S,E);for(const[B,A]of I.byTopic){let D=x.byTopic.get(B);D==null&&(D={p1w:[],p2w:[],p3w:[],p3bw:[],p4w:[]},x.byTopic.set(B,D)),D.p1w.push(A.p1w),D.p2w.push(A.p2w),D.p3w.push(A.p3w),D.p3bw.push(A.p3bw),D.p4w.push(A.p4w)}x.p5w.push(I.p5w),x.p6w.push(I.p6w),x.p7w.push(I.p7w),x.score.push(I.score)}else x.p5w.push(0),x.p6w.push(0),x.p7w.push(0),x.score.push(0)}return x}class OutboundStream{rawStream;pushable;closeController;maxBufferSize;constructor(r,_,S){this.rawStream=r,this.pushable=pushable(),this.closeController=new AbortController,this.maxBufferSize=S.maxBufferSize??1/0,this.closeController.signal.addEventListener("abort",()=>{r.close().catch(E=>{r.abort(E)})}),pipe(this.pushable,this.rawStream).catch(_)}get protocol(){return this.rawStream.protocol}push(r){if(this.pushable.readableLength>this.maxBufferSize)throw Error(`OutboundStream buffer full, size > ${this.maxBufferSize}`);this.pushable.push(encode$k.single(r))}pushPrefixed(r){if(this.pushable.readableLength>this.maxBufferSize)throw Error(`OutboundStream buffer full, size > ${this.maxBufferSize}`);this.pushable.push(r)}async close(){this.closeController.abort(),await this.pushable.return()}}class InboundStream{source;rawStream;closeController;constructor(r,_={}){this.rawStream=r,this.closeController=new AbortController,this.closeController.signal.addEventListener("abort",()=>{r.close().catch(S=>{r.abort(S)})}),this.source=pipe(this.rawStream,S=>decode$r(S,_))}async close(){this.closeController.abort()}}class IWantTracer{gossipsubIWantFollowupMs;msgIdToStrFn;metrics;promises=new Map;requestMsByMsg=new Map;requestMsByMsgExpire;constructor(r,_,S){this.gossipsubIWantFollowupMs=r,this.msgIdToStrFn=_,this.metrics=S,this.requestMsByMsgExpire=10*r}get size(){return this.promises.size}get requestMsByMsgSize(){return this.requestMsByMsg.size}addPromise(r,_){const S=Math.floor(Math.random()*_.length),E=_[S],x=this.msgIdToStrFn(E);let T=this.promises.get(x);T==null&&(T=new Map,this.promises.set(x,T));const C=Date.now();T.has(r)||(T.set(r,C+this.gossipsubIWantFollowupMs),this.metrics!=null&&(this.metrics.iwantPromiseStarted.inc(1),this.requestMsByMsg.has(x)||this.requestMsByMsg.set(x,C)))}getBrokenPromises(){const r=Date.now(),_=new Map;let S=0;return this.promises.forEach((E,x)=>{E.forEach((T,C)=>{Tenumeration(__KeyTypeValues$2)})(KeyType$2||(KeyType$2={}));var PublicKey$2;(function(n){let r;n.codec=()=>(r==null&&(r=message((_,S,E={})=>{E.lengthDelimited!==!1&&S.fork(),_.Type!=null&&(S.uint32(8),KeyType$2.codec().encode(_.Type,S)),_.Data!=null&&(S.uint32(18),S.bytes(_.Data)),E.lengthDelimited!==!1&&S.ldelim()},(_,S)=>{const E={},x=S==null?_.len:_.pos+S;for(;_.pos>>3){case 1:E.Type=KeyType$2.codec().decode(_);break;case 2:E.Data=_.bytes();break;default:_.skipType(T&7);break}}return E})),r),n.encode=_=>encodeMessage(_,n.codec()),n.decode=_=>decodeMessage$1(_,n.codec())})(PublicKey$2||(PublicKey$2={}));var PrivateKey$2;(function(n){let r;n.codec=()=>(r==null&&(r=message((_,S,E={})=>{E.lengthDelimited!==!1&&S.fork(),_.Type!=null&&(S.uint32(8),KeyType$2.codec().encode(_.Type,S)),_.Data!=null&&(S.uint32(18),S.bytes(_.Data)),E.lengthDelimited!==!1&&S.ldelim()},(_,S)=>{const E={},x=S==null?_.len:_.pos+S;for(;_.pos>>3){case 1:E.Type=KeyType$2.codec().decode(_);break;case 2:E.Data=_.bytes();break;default:_.skipType(T&7);break}}return E})),r),n.encode=_=>encodeMessage(_,n.codec()),n.decode=_=>decodeMessage$1(_,n.codec())})(PrivateKey$2||(PrivateKey$2={}));let Ed25519PublicKey$2=class{_key;constructor(r){this._key=ensureKey$2(r,PUBLIC_KEY_BYTE_LENGTH$2)}verify(r,_){return hashAndVerify$8(this._key,_,r)}marshal(){return this._key}get bytes(){return PublicKey$2.encode({Type:KeyType$2.Ed25519,Data:this.marshal()}).subarray()}equals(r){return equals$l(this.bytes,r.bytes)}hash(){const r=sha256$e.digest(this.bytes);return isPromise$4(r)?r.then(({bytes:_})=>_):r.bytes}},Ed25519PrivateKey$2=class{_key;_publicKey;constructor(r,_){this._key=ensureKey$2(r,PRIVATE_KEY_BYTE_LENGTH$2),this._publicKey=ensureKey$2(_,PUBLIC_KEY_BYTE_LENGTH$2)}sign(r){return hashAndSign$8(this._key,r)}get public(){return new Ed25519PublicKey$2(this._publicKey)}marshal(){return this._key}get bytes(){return PrivateKey$2.encode({Type:KeyType$2.Ed25519,Data:this.marshal()}).subarray()}equals(r){return equals$l(this.bytes,r.bytes)}async hash(){const r=sha256$e.digest(this.bytes);let _;return isPromise$4(r)?{bytes:_}=await r:_=r.bytes,_}async id(){const r=identity$a.digest(this.public.bytes);return base58btc$c.encode(r.bytes).substring(1)}async export(r,_="libp2p-key"){if(_==="libp2p-key")return exporter$2(this.bytes,r);throw new CodeError$4(`export format '${_}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function unmarshalEd25519PrivateKey$2(n){if(n.length>PRIVATE_KEY_BYTE_LENGTH$2){n=ensureKey$2(n,PRIVATE_KEY_BYTE_LENGTH$2+PUBLIC_KEY_BYTE_LENGTH$2);const S=n.subarray(0,PRIVATE_KEY_BYTE_LENGTH$2),E=n.subarray(PRIVATE_KEY_BYTE_LENGTH$2,n.length);return new Ed25519PrivateKey$2(S,E)}n=ensureKey$2(n,PRIVATE_KEY_BYTE_LENGTH$2);const r=n.subarray(0,PRIVATE_KEY_BYTE_LENGTH$2),_=n.subarray(PUBLIC_KEY_BYTE_LENGTH$2);return new Ed25519PrivateKey$2(r,_)}function unmarshalEd25519PublicKey$2(n){return n=ensureKey$2(n,PUBLIC_KEY_BYTE_LENGTH$2),new Ed25519PublicKey$2(n)}async function generateKeyPair$9(){const{privateKey:n,publicKey:r}=generateKey$8();return new Ed25519PrivateKey$2(n,r)}async function generateKeyPairFromSeed$2(n){const{privateKey:r,publicKey:_}=generateKeyFromSeed$2(n);return new Ed25519PrivateKey$2(r,_)}function ensureKey$2(n,r){if(n=Uint8Array.from(n??[]),n.length!==r)throw new CodeError$4(`Key must be a Uint8Array of length ${r}, got ${n.length}`,"ERR_INVALID_KEY_TYPE");return n}const Ed25519$2=Object.freeze(Object.defineProperty({__proto__:null,Ed25519PrivateKey:Ed25519PrivateKey$2,Ed25519PublicKey:Ed25519PublicKey$2,generateKeyPair:generateKeyPair$9,generateKeyPairFromSeed:generateKeyPairFromSeed$2,unmarshalEd25519PrivateKey:unmarshalEd25519PrivateKey$2,unmarshalEd25519PublicKey:unmarshalEd25519PublicKey$2},Symbol.toStringTag,{value:"Module"}));async function importer(n,r){const _=base64$d.decode(n);return create$7().decrypt(_,r)}function randomBytes$2(n){if(isNaN(n)||n<=0)throw new CodeError$4("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return randomBytes$4(n)}function pbkdf2Init(n,r,_,S){hash(n);const E=checkOpts$2({dkLen:32,asyncTick:10},S),{c:x,dkLen:T,asyncTick:C}=E;if(number$3(x),number$3(T),number$3(C),x<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const I=toBytes$3(r),B=toBytes$3(_),A=new Uint8Array(T),D=hmac.create(n,I),N=D._cloneInto().update(B);return{c:x,dkLen:T,asyncTick:C,DK:A,PRF:D,PRFSalt:N}}function pbkdf2Output(n,r,_,S,E){return n.destroy(),r.destroy(),S&&S.destroy(),E.fill(0),_}function pbkdf2$1(n,r,_,S){const{c:E,dkLen:x,DK:T,PRF:C,PRFSalt:I}=pbkdf2Init(n,r,_,S);let B;const A=new Uint8Array(4),D=createView$2(A),N=new Uint8Array(C.outputLen);for(let O=1,M=0;M{I._cloneInto(A).update(O).digestInto(O);for(let U=0;U=S.maxInboun `),_),_.log.trace('handle: responded with "%s" for "%s"',E,E),{stream:S.unwrap(),protocol:E};if(E==="ls"){const x=new Uint8ArrayList(...r.map(T=>encode$k.single(fromString$6(`${T} `))),fromString$6(` `));_.log.trace('handle: respond with "%s" for %s',r,E),await write(S,x,_),_.log.trace('handle: responded with "%s" for %s',r,E);continue}_.log('handle: respond with "na" for "%s"',E),await write(S,fromString$6(`na -`),_),_.log('handle: responded with "na" for "%s"',E)}}const CLOSE_TIMEOUT=500;class ConnectionImpl{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;transient;log;tags;_newStream;_close;_abort;_getStreams;constructor(r){const{remoteAddr:_,remotePeer:S,newStream:E,close:x,abort:T,getStreams:C}=r;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=_,this.remotePeer=S,this.direction=r.direction,this.status="open",this.timeline=r.timeline,this.multiplexer=r.multiplexer,this.encryption=r.encryption,this.transient=r.transient??!1,this.log=r.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=E,this._close=x,this._abort=T,this._getStreams=C,this.tags=[]}[Symbol.toStringTag]="Connection";[connectionSymbol]=!0;get streams(){return this._getStreams()}async newStream(r,_){if(this.status==="closing")throw new CodeError$4("the connection is being closed","ERR_CONNECTION_BEING_CLOSED");if(this.status==="closed")throw new CodeError$4("the connection is closed","ERR_CONNECTION_CLOSED");if(Array.isArray(r)||(r=[r]),this.transient&&_?.runOnTransientConnection!==!0)throw new CodeError$4("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");const S=await this._newStream(r,_);return S.direction="outbound",S}async close(r={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",r.signal==null){const _=AbortSignal.timeout(CLOSE_TIMEOUT);setMaxListeners$1(1/0,_),r={...r,signal:_}}try{this.log.trace("closing all streams"),await Promise.all(this.streams.map(async _=>_.close(r))),this.log.trace("closing underlying transport"),await this._close(r),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(_){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,_),this.abort(_)}}}abort(r){this.log.error("aborting connection to %a due to error",this.remoteAddr,r),this.status="closing",this.streams.forEach(_=>{_.abort(r)}),this.log.error("all streams aborted",this.streams.length),this._abort(r),this.timeline.close=Date.now(),this.status="closed"}}function createConnection(n){return new ConnectionImpl(n)}const DEFAULT_PROTOCOL_SELECT_TIMEOUT=3e4;function findIncomingStreamLimit(n,r){try{const{options:_}=r.getHandler(n);return _.maxInboundStreams}catch(_){if(_.code!==codes.ERR_NO_HANDLER_FOR_PROTOCOL)throw _}return DEFAULT_MAX_INBOUND_STREAMS}function findOutgoingStreamLimit(n,r,_={}){try{const{options:S}=r.getHandler(n);if(S.maxOutboundStreams!=null)return S.maxOutboundStreams}catch(S){if(S.code!==codes.ERR_NO_HANDLER_FOR_PROTOCOL)throw S}return _.maxOutboundStreams??DEFAULT_MAX_OUTBOUND_STREAMS}function countStreams(n,r,_){let S=0;return _.streams.forEach(E=>{E.direction===r&&E.protocol===n&&S++}),S}class DefaultUpgrader{components;connectionEncryption;muxers;inboundUpgradeTimeout;events;constructor(r,_){this.components=r,this.connectionEncryption=new Map,_.connectionEncryption.forEach(S=>{this.connectionEncryption.set(S.protocol,S)}),this.muxers=new Map,_.muxers.forEach(S=>{this.muxers.set(S.protocol,S)}),this.inboundUpgradeTimeout=_.inboundUpgradeTimeout??INBOUND_UPGRADE_TIMEOUT,this.events=r.events}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(r,_,S){const E=this.components.connectionGater[S];if(E!==void 0&&await E(r,_))throw new CodeError$4(`The multiaddr connection is blocked by gater.${S}`,codes.ERR_CONNECTION_INTERCEPTED)}async upgradeInbound(r,_){if(!await this.components.connectionManager.acceptIncomingConnection(r))throw new CodeError$4("connection denied",codes.ERR_CONNECTION_DENIED);let E,x,T,C,I;const B=AbortSignal.timeout(this.inboundUpgradeTimeout),A=()=>{r.abort(new CodeError$4("inbound upgrade timeout",ERR_TIMEOUT))};B.addEventListener("abort",A,{once:!0}),setMaxListeners$1(1/0,B);try{if(await this.components.connectionGater.denyInboundConnection?.(r)===!0)throw new CodeError$4("The multiaddr connection is blocked by gater.acceptConnection",codes.ERR_CONNECTION_INTERCEPTED);this.components.metrics?.trackMultiaddrConnection(r),r.log("starting the inbound connection upgrade");let D=r;if(_?.skipProtection!==!0){const N=this.components.connectionProtector;N!=null&&(r.log("protecting the inbound connection"),D=await N.protect(r))}try{if(E=D,_?.skipEncryption!==!0){_?.onProgress?.(new CustomProgressEvent("upgrader:encrypt-inbound-connection")),{conn:E,remotePeer:x,protocol:I}=await this._encryptInbound(D);const N={...D,...E};await this.shouldBlockConnection(x,N,"denyInboundEncryptedConnection")}else{const N=r.remoteAddr.getPeerId();if(N==null)throw new CodeError$4("inbound connection that skipped encryption must have a peer id",codes.ERR_INVALID_MULTIADDR);const O=peerIdFromString$2(N);I="native",x=O}if(T=E,_?.muxerFactory!=null)C=_.muxerFactory;else if(this.muxers.size>0){_?.onProgress?.(new CustomProgressEvent("upgrader:multiplex-inbound-connection"));const N=await this._multiplexInbound({...D,...E},this.muxers);C=N.muxerFactory,T=N.stream}}catch(N){throw r.log.error("failed to upgrade inbound connection",N),N}return await this.shouldBlockConnection(x,r,"denyInboundUpgradedConnection"),r.log("successfully upgraded inbound connection"),this._createConnection({cryptoProtocol:I,direction:"inbound",maConn:r,upgradedConn:T,muxerFactory:C,remotePeer:x,transient:_?.transient})}finally{B.removeEventListener("abort",A),this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(r,_){const S=r.remoteAddr.getPeerId();let E;S!=null&&(E=peerIdFromString$2(S),await this.shouldBlockConnection(E,r,"denyOutboundConnection"));let x,T,C,I,B;this.components.metrics?.trackMultiaddrConnection(r),r.log("starting the outbound connection upgrade");let A=r;if(_?.skipProtection!==!0){const D=this.components.connectionProtector;D!=null&&(A=await D.protect(r))}try{if(x=A,_?.skipEncryption!==!0){({conn:x,remotePeer:T,protocol:I}=await this._encryptOutbound(A,E));const D={...A,...x};await this.shouldBlockConnection(T,D,"denyOutboundEncryptedConnection")}else{if(E==null)throw new CodeError$4("Encryption was skipped but no peer id was passed",codes.ERR_INVALID_PEER);I="native",T=E}if(C=x,_?.muxerFactory!=null)B=_.muxerFactory;else if(this.muxers.size>0){const D=await this._multiplexOutbound({...A,...x},this.muxers);B=D.muxerFactory,C=D.stream}}catch(D){throw r.log.error("failed to upgrade outbound connection",D),await r.close(D),D}return await this.shouldBlockConnection(T,r,"denyOutboundUpgradedConnection"),r.log("successfully upgraded outbound connection"),this._createConnection({cryptoProtocol:I,direction:"outbound",maConn:r,upgradedConn:C,muxerFactory:B,remotePeer:T,transient:_?.transient})}_createConnection(r){const{cryptoProtocol:_,direction:S,maConn:E,upgradedConn:x,remotePeer:T,muxerFactory:C,transient:I}=r;let B,A,D;C!=null&&(B=C.createStreamMuxer({direction:S,onIncomingStream:M=>{D!=null&&Promise.resolve().then(async()=>{const L=this.components.registrar.getProtocols(),{stream:F,protocol:U}=await handle(M,L,{log:M.log,yieldBytes:!1});if(D==null)return;D.log("incoming stream opened on %s",U);const j=findIncomingStreamLimit(U,this.components.registrar);if(countStreams(U,"inbound",D)===j){const H=new CodeError$4(`Too many inbound protocol streams for protocol "${U}" - limit ${j}`,codes.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);throw M.abort(H),H}M.source=F.source,M.sink=F.sink,M.protocol=U,F.closeWrite!=null&&(M.closeWrite=F.closeWrite),F.closeRead!=null&&(M.closeRead=F.closeRead),F.close!=null&&(M.close=F.close),await this.components.peerStore.merge(T,{protocols:[U]}),this.components.metrics?.trackProtocolStream(M,D),this._onStream({connection:D,stream:M,protocol:U})}).catch(async L=>{D.log.error("error handling incoming stream id %s",M.id,L.message,L.code,L.stack),M.timeline.close==null&&await M.close()})}}),A=async(M,L={})=>{if(B==null)throw new CodeError$4("Stream is not multiplexed",codes.ERR_MUXER_UNAVAILABLE);D.log("starting new stream for protocols %s",M);const F=await B.newStream();D.log.trace("started new stream %s for protocols %s",F.id,M);try{if(L.signal==null){F.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",M);const Q=AbortSignal.timeout(DEFAULT_PROTOCOL_SELECT_TIMEOUT);setMaxListeners$1(1/0,Q),L={...L,signal:Q}}F.log.trace("selecting protocol from protocols %s",M);const{stream:U,protocol:j}=await select(F,M,{...L,log:F.log,yieldBytes:!0});F.log("selected protocol %s",j);const z=findOutgoingStreamLimit(j,this.components.registrar,L),H=countStreams(j,"outbound",D);if(H>=z){const Q=new CodeError$4(`Too many outbound protocol streams for protocol "${j}" - ${H}/${z}`,codes.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);throw F.abort(Q),Q}return await this.components.peerStore.merge(T,{protocols:[j]}),F.source=U.source,F.sink=U.sink,F.protocol=j,U.closeWrite!=null&&(F.closeWrite=U.closeWrite),U.closeRead!=null&&(F.closeRead=U.closeRead),U.close!=null&&(F.close=U.close),this.components.metrics?.trackProtocolStream(F,D),F}catch(U){throw D.log.error("could not create new stream for protocols %s",M,U),F.timeline.close==null&&F.abort(U),U.code!=null?U:new CodeError$4(String(U),codes.ERR_UNSUPPORTED_PROTOCOL)}},Promise.all([B.sink(x.source),x.sink(B.source)]).catch(M=>{D.log.error("error piping data through muxer",M)}));const N=E.timeline;E.timeline=new Proxy(N,{set:(...M)=>(D!=null&&M[1]==="close"&&M[2]!=null&&N.close==null&&(async()=>{try{D.status==="open"&&await D.close()}catch(L){D.log.error("error closing connection after timeline close",L)}finally{this.events.safeDispatchEvent("connection:close",{detail:D})}})().catch(L=>{D.log.error("error thrown while dispatching connection:close event",L)}),Reflect.set(...M))}),E.timeline.upgraded=Date.now();const O=()=>{throw new CodeError$4("connection is not multiplexed",codes.ERR_CONNECTION_NOT_MULTIPLEXED)};return D=createConnection({remoteAddr:E.remoteAddr,remotePeer:T,status:"open",direction:S,timeline:E.timeline,multiplexer:B?.protocol,encryption:_,transient:I,logger:this.components.logger,newStream:A??O,getStreams:()=>B!=null?B.streams:[],close:async M=>{B!=null&&(D.log.trace("close muxer"),await B.close(M)),D.log.trace("close maconn"),await E.close(M),D.log.trace("closed maconn")},abort:M=>{E.abort(M),B?.abort(M)}}),this.events.safeDispatchEvent("connection:open",{detail:D}),D}_onStream(r){const{connection:_,stream:S,protocol:E}=r,{handler:x,options:T}=this.components.registrar.getHandler(E);if(_.transient&&T.runOnTransientConnection!==!0)throw new CodeError$4("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");x({connection:_,stream:S})}async _encryptInbound(r){const _=Array.from(this.connectionEncryption.keys());r.log("handling inbound crypto protocol selection",_);try{const{stream:S,protocol:E}=await handle(r,_,{log:r.log}),x=this.connectionEncryption.get(E);if(x==null)throw new Error(`no crypto module found for ${E}`);return r.log("encrypting inbound connection using",E),{...await x.secureInbound(this.components.peerId,S),protocol:E}}catch(S){throw r.log.error("encrypting inbound connection failed",S),new CodeError$4(S.message,codes.ERR_ENCRYPTION_FAILED)}}async _encryptOutbound(r,_){const S=Array.from(this.connectionEncryption.keys());r.log("selecting outbound crypto protocol",S);try{r.log.trace("selecting encrypter from %s",S);const{stream:E,protocol:x}=await select(r,S,{log:r.log,yieldBytes:!0}),T=this.connectionEncryption.get(x);if(T==null)throw new Error(`no crypto module found for ${x}`);return r.log("encrypting outbound connection to %p using %s",_,T),{...await T.secureOutbound(this.components.peerId,E,_),protocol:x}}catch(E){throw r.log.error("encrypting outbound connection to %p failed",_,E),new CodeError$4(E.message,codes.ERR_ENCRYPTION_FAILED)}}async _multiplexOutbound(r,_){const S=Array.from(_.keys());r.log("outbound selecting muxer %s",S);try{r.log.trace("selecting stream muxer from %s",S);const{stream:E,protocol:x}=await select(r,S,{log:r.log,yieldBytes:!0});r.log("selected %s as muxer protocol",x);const T=_.get(x);return{stream:E,muxerFactory:T}}catch(E){throw r.log.error("error multiplexing outbound connection",E),new CodeError$4(String(E),codes.ERR_MUXER_UNAVAILABLE)}}async _multiplexInbound(r,_){const S=Array.from(_.keys());r.log("inbound handling muxers %s",S);try{const{stream:E,protocol:x}=await handle(r,S,{log:r.log}),T=_.get(x);return{stream:E,muxerFactory:T}}catch(E){throw r.log.error("error multiplexing inbound connection",E),new CodeError$4(String(E),codes.ERR_MUXER_UNAVAILABLE)}}}class Libp2pNode extends TypedEventEmitter{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(r){super(),this.status="stopped";const _=new TypedEventEmitter,S=_.dispatchEvent.bind(_);_.dispatchEvent=C=>{const I=S(C),B=this.dispatchEvent(new CustomEvent$1(C.type,{detail:C.detail}));return I||B},setMaxListeners$1(1/0,_),this.peerId=r.peerId,this.logger=r.logger??defaultLogger(),this.log=this.logger.forComponent("libp2p"),this.services={};const E=this.components=defaultComponents({peerId:r.peerId,privateKey:r.privateKey,nodeInfo:r.nodeInfo??{name:name$1,version:version$2},logger:this.logger,events:_,datastore:r.datastore??new MemoryDatastore,connectionGater:connectionGater(r.connectionGater),dns:r.dns});this.peerStore=this.configureComponent("peerStore",new PersistentPeerStore(E,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...r.peerStore})),r.metrics!=null&&(this.metrics=this.configureComponent("metrics",r.metrics(this.components))),E.events.addEventListener("peer:update",C=>{if(C.detail.previous==null){const I={id:C.detail.peer.id,multiaddrs:C.detail.peer.addresses.map(B=>B.multiaddr)};E.events.safeDispatchEvent("peer:discovery",{detail:I})}}),r.connectionProtector!=null&&this.configureComponent("connectionProtector",r.connectionProtector(E)),this.components.upgrader=new DefaultUpgrader(this.components,{connectionEncryption:(r.connectionEncryption??[]).map((C,I)=>this.configureComponent(`connection-encryption-${I}`,C(this.components))),muxers:(r.streamMuxers??[]).map((C,I)=>this.configureComponent(`stream-muxers-${I}`,C(this.components))),inboundUpgradeTimeout:r.connectionManager?.inboundUpgradeTimeout}),this.configureComponent("transportManager",new DefaultTransportManager(this.components,r.transportManager)),this.configureComponent("connectionManager",new DefaultConnectionManager(this.components,r.connectionManager)),r.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new ConnectionMonitor(this.components,r.connectionMonitor)),this.configureComponent("registrar",new DefaultRegistrar(this.components)),this.configureComponent("addressManager",new DefaultAddressManager(this.components,r.addresses));const x=(r.peerRouters??[]).map((C,I)=>this.configureComponent(`peer-router-${I}`,C(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new DefaultPeerRouting(this.components,{routers:x}));const T=(r.contentRouters??[]).map((C,I)=>this.configureComponent(`content-router-${I}`,C(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new CompoundContentRouting(this.components,{routers:T})),this.configureComponent("randomWalk",new RandomWalk(this.components)),(r.peerDiscovery??[]).forEach((C,I)=>{this.configureComponent(`peer-discovery-${I}`,C(this.components)).addEventListener("peer",A=>{this.#e(A)})}),r.transports?.forEach((C,I)=>{this.components.transportManager.add(this.configureComponent(`transport-${I}`,C(this.components)))}),r.services!=null)for(const C of Object.keys(r.services)){const I=r.services[C],B=I(this.components);if(B==null){this.log.error("service factory %s returned null or undefined instance",C);continue}this.services[C]=B,this.configureComponent(C,B),B[contentRoutingSymbol]!=null&&(this.log("registering service %s for content routing",C),T.push(B[contentRoutingSymbol])),B[peerRoutingSymbol]!=null&&(this.log("registering service %s for peer routing",C),x.push(B[peerRoutingSymbol])),B[peerDiscoverySymbol]!=null&&(this.log("registering service %s for peer discovery",C),B[peerDiscoverySymbol].addEventListener?.("peer",A=>{this.#e(A)}))}checkServiceDependencies(E)}configureComponent(r,_){return _==null&&this.log.error("component %s was null or undefined",r),this.components[r]=_,_}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started")}catch(r){throw this.log.error("An error occurred starting libp2p",r),this.status="started",await this.stop(),r}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(r){return this.components.connectionManager.getConnections(r)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){const r=new PeerSet;for(const _ of this.components.connectionManager.getConnections())r.add(_.remotePeer);return Array.from(r)}async dial(r,_={}){return this.components.connectionManager.openConnection(r,{priority:75,..._})}async dialProtocol(r,_,S={}){if(_==null)throw new CodeError$4("no protocols were provided to open a stream",codes.ERR_INVALID_PROTOCOLS_FOR_STREAM);if(_=Array.isArray(_)?_:[_],_.length===0)throw new CodeError$4("no protocols were provided to open a stream",codes.ERR_INVALID_PROTOCOLS_FOR_STREAM);return(await this.dial(r,S)).newStream(_,S)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(r,_={}){isMultiaddr(r)&&(r=peerIdFromString$2(r.getPeerId()??"")),await this.components.connectionManager.closeConnections(r,_)}async getPublicKey(r,_={}){if(this.log("getPublicKey %p",r),r.publicKey!=null)return r.publicKey;try{const x=await this.peerStore.get(r);if(x.id.publicKey!=null)return x.id.publicKey}catch(x){if(x.code!==codes.ERR_NOT_FOUND)throw x}const S=concat$3([fromString$6("/pk/"),r.multihash.digest]),E=await this.contentRouting.get(S,_);return unmarshalPublicKey$2(E),await this.peerStore.patch(r,{publicKey:E}),E}async handle(r,_,S){Array.isArray(r)||(r=[r]),await Promise.all(r.map(async E=>{await this.components.registrar.handle(E,_,S)}))}async unhandle(r){Array.isArray(r)||(r=[r]),await Promise.all(r.map(async _=>{await this.components.registrar.unhandle(_)}))}async register(r,_){return this.components.registrar.register(r,_)}unregister(r){this.components.registrar.unregister(r)}async isDialable(r,_={}){return this.components.connectionManager.isDialable(r,_)}#e(r){const{detail:_}=r;if(_.id.toString()===this.peerId.toString()){this.log.error(new Error(codes.ERR_DISCOVERED_SELF));return}this.components.peerStore.merge(_.id,{multiaddrs:_.multiaddrs}).catch(S=>{this.log.error(S)})}}async function createLibp2pNode(n={}){const r=n.peerId??=await createEd25519PeerId();if(r.privateKey==null)throw new CodeError$4("peer id was missing private key","ERR_MISSING_PRIVATE_KEY");return n.privateKey??=await unmarshalPrivateKey$3(r.privateKey),new Libp2pNode(await validateConfig(n))}async function createLibp2p$1(n={}){const r=await createLibp2pNode(n);return n.start!==!1&&await r.start(),r}async function createLibp2p(n){let r=n.libp2p?.peerId;const _=n.logger??defaultLogger();if(r==null){const E=keychain(n.keychain)({datastore:n.datastore,logger:_}),x=new Key("/pkcs8/self");await n.datastore.has(x)&&(r=await E.exportPeerId("self"))}const S=libp2pDefaults(n);return n=n??{},createLibp2p$1({...S,...n.libp2p,start:!1})}async function createHelia(n={}){const r=n.datastore??new MemoryDatastore,_=n.blockstore??new MemoryBlockstore;let S;isLibp2p(n.libp2p)?S=n.libp2p:S=await createLibp2p({...n,libp2p:n.libp2p,datastore:r});const E=new HeliaImpl({...n,libp2p:S,datastore:r,blockstore:_});return n.start!==!1&&await E.start(),E}function isLibp2p(n){return n==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(_=>typeof n[_]=="function")}class LevelBlockstore extends BaseBlockstore{db;opts;base;constructor(r,_={}){super(),this.db=typeof r=="string"?new Level(r,{..._,keyEncoding:"utf8",valueEncoding:"view"}):r,this.opts={createIfMissing:!0,compression:!1,..._},this.base=_.base??base32upper$4}#e(r){return`/${this.base.encoder.encode(r.multihash.bytes)}`}#t(r){return CID$9.createV1(code$c,decode$$(this.base.decoder.decode(r.substring(1))))}async open(){try{await this.db.open(this.opts)}catch(r){throw Errors.openFailedError(r)}}async put(r,_){try{return await this.db.put(this.#e(r),_),r}catch(S){throw Errors.putFailedError(S)}}async get(r){let _;try{_=await this.db.get(this.#e(r))}catch(S){throw S.notFound!=null?Errors.notFoundError(S):Errors.getFailedError(S)}return _}async has(r){try{await this.db.get(this.#e(r))}catch(_){if(_.notFound!=null)return!1;throw _}return!0}async delete(r){try{await this.db.del(this.#e(r))}catch(_){throw Errors.deleteFailedError(_)}}async close(){await this.db.close()}async*getAll(r){for await(const{key:_,value:S}of this.#r({values:!0}))yield{cid:this.#t(_),block:S}}async*#r(r){const _={keys:!0,keyEncoding:"buffer",values:r.values};if(r.prefix!=null){const E=r.prefix.toString();_.gte=E,_.lt=E+"ÿ"}const S=this.db.iterator(_);try{for await(const[E,x]of S)yield{key:new TextDecoder().decode(E),value:x}}finally{await S.close()}}}const IDENTIFY_PROTOCOL_VERSION="0.1.0",MULTICODEC_IDENTIFY_PROTOCOL_NAME="id",MULTICODEC_IDENTIFY_PROTOCOL_VERSION="1.0.0",MAX_IDENTIFY_MESSAGE_SIZE=1024*8,MAX_PUSH_CONCURRENCY=32;var Identify$1;(function(n){let r;n.codec=()=>(r==null&&(r=message((_,S,E={})=>{if(E.lengthDelimited!==!1&&S.fork(),_.protocolVersion!=null&&(S.uint32(42),S.string(_.protocolVersion)),_.agentVersion!=null&&(S.uint32(50),S.string(_.agentVersion)),_.publicKey!=null&&(S.uint32(10),S.bytes(_.publicKey)),_.listenAddrs!=null)for(const x of _.listenAddrs)S.uint32(18),S.bytes(x);if(_.observedAddr!=null&&(S.uint32(34),S.bytes(_.observedAddr)),_.protocols!=null)for(const x of _.protocols)S.uint32(26),S.string(x);_.signedPeerRecord!=null&&(S.uint32(66),S.bytes(_.signedPeerRecord)),E.lengthDelimited!==!1&&S.ldelim()},(_,S)=>{const E={listenAddrs:[],protocols:[]},x=S==null?_.len:_.pos+S;for(;_.pos>>3){case 5:E.protocolVersion=_.string();break;case 6:E.agentVersion=_.string();break;case 1:E.publicKey=_.bytes();break;case 2:E.listenAddrs.push(_.bytes());break;case 4:E.observedAddr=_.bytes();break;case 3:E.protocols.push(_.string());break;case 8:E.signedPeerRecord=_.bytes();break;default:_.skipType(T&7);break}}return E})),r),n.encode=_=>encodeMessage(_,n.codec()),n.decode=_=>decodeMessage$1(_,n.codec())})(Identify$1||(Identify$1={}));const defaultValues={protocolPrefix:"ipfs",timeout:5e3,maxInboundStreams:1,maxOutboundStreams:1,maxObservedAddresses:10,maxMessageSize:MAX_IDENTIFY_MESSAGE_SIZE,runOnConnectionOpen:!0,runOnSelfUpdate:!0,runOnTransientConnection:!0,concurrency:MAX_PUSH_CONCURRENCY};function getCleanMultiaddr(n){if(n!=null&&n.length>0)try{return multiaddr(n)}catch{}}function getAgentVersion(n,r){return r!=null||(r=`${n.name}/${n.version}`,isNode||isElectronMain?r+=` UserAgent=${globalThis.process.version}`:(isBrowser$1||isWebWorker||isElectronRenderer||isReactNative)&&(r+=` UserAgent=${globalThis.navigator.userAgent}`)),r}async function consumeIdentifyMessage(n,r,_,S,E){if(_("received identify from %p",S.remotePeer),E==null)throw new CodeError$4("message was null or undefined","ERR_INVALID_MESSAGE");const x={};if(E.listenAddrs.length>0&&(x.addresses=E.listenAddrs.map(I=>({isCertified:!1,multiaddr:multiaddr(I)}))),E.protocols.length>0&&(x.protocols=E.protocols),E.publicKey!=null&&(x.publicKey=E.publicKey,!(await peerIdFromKeys$1(E.publicKey)).equals(S.remotePeer)))throw new CodeError$4("public key did not match remote PeerId","ERR_INVALID_PUBLIC_KEY");let T;if(E.signedPeerRecord!=null){_("received signedPeerRecord from %p",S.remotePeer);let I=E.signedPeerRecord;const B=await RecordEnvelope.openAndCertify(I,PeerRecord.DOMAIN);let A=PeerRecord.createFromProtobuf(B.payload);if(!A.peerId.equals(B.peerId))throw new CodeError$4("signing key does not match PeerId in the PeerRecord","ERR_INVALID_SIGNING_KEY");if(!S.remotePeer.equals(A.peerId))throw new CodeError$4("signing key does not match remote PeerId","ERR_INVALID_PEER_RECORD_KEY");let D;try{D=await n.get(A.peerId)}catch(N){if(N.code!=="ERR_NOT_FOUND")throw N}if(D!=null&&(x.metadata=D.metadata,D.peerRecordEnvelope!=null)){const N=await RecordEnvelope.createFromProtobuf(D.peerRecordEnvelope),O=PeerRecord.createFromProtobuf(N.payload);O.seqNumber>=A.seqNumber&&(_("sequence number was lower or equal to existing sequence number - stored: %d received: %d",O.seqNumber,A.seqNumber),A=O,I=D.peerRecordEnvelope)}x.peerRecordEnvelope=I,x.addresses=A.multiaddrs.map(N=>({isCertified:!0,multiaddr:N})),T={seq:A.seqNumber,addresses:A.multiaddrs}}else _("%p did not send a signed peer record",S.remotePeer);if(_("patching %p with",S.remotePeer,x),await n.patch(S.remotePeer,x),E.agentVersion!=null||E.protocolVersion!=null){const I={};E.agentVersion!=null&&(I.AgentVersion=fromString$6(E.agentVersion)),E.protocolVersion!=null&&(I.ProtocolVersion=fromString$6(E.protocolVersion)),_("merging %p metadata",S.remotePeer,I),await n.merge(S.remotePeer,{metadata:I})}const C={peerId:S.remotePeer,protocolVersion:E.protocolVersion,agentVersion:E.agentVersion,publicKey:E.publicKey,listenAddrs:E.listenAddrs.map(I=>multiaddr(I)),observedAddr:E.observedAddr==null?void 0:multiaddr(E.observedAddr),protocols:E.protocols,signedPeerRecord:T,connection:S};return r.safeDispatchEvent("peer:identify",{detail:C}),C}class AbstractIdentify{host;protocol;started;timeout;peerId;peerStore;registrar;addressManager;maxInboundStreams;maxOutboundStreams;maxMessageSize;maxObservedAddresses;events;runOnTransientConnection;log;constructor(r,_){this.protocol=_.protocol,this.started=!1,this.peerId=r.peerId,this.peerStore=r.peerStore,this.registrar=r.registrar,this.addressManager=r.addressManager,this.events=r.events,this.log=_.log,this.timeout=_.timeout??defaultValues.timeout,this.maxInboundStreams=_.maxInboundStreams??defaultValues.maxInboundStreams,this.maxOutboundStreams=_.maxOutboundStreams??defaultValues.maxOutboundStreams,this.maxMessageSize=_.maxMessageSize??defaultValues.maxMessageSize,this.maxObservedAddresses=_.maxObservedAddresses??defaultValues.maxObservedAddresses,this.runOnTransientConnection=_.runOnTransientConnection??defaultValues.runOnTransientConnection,this.host={protocolVersion:`${_.protocolPrefix??defaultValues.protocolPrefix}/${IDENTIFY_PROTOCOL_VERSION}`,agentVersion:getAgentVersion(r.nodeInfo,_.agentVersion)}}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:fromString$6(this.host.agentVersion),ProtocolVersion:fromString$6(this.host.protocolVersion)}}),await this.registrar.handle(this.protocol,r=>{this.handleProtocol(r).catch(_=>{this.log.error(_)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.protocol),this.started=!1}}class Identify extends AbstractIdentify{constructor(r,_={}){super(r,{..._,protocol:`/${_.protocolPrefix??defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PROTOCOL_VERSION}`,log:r.logger.forComponent("libp2p:identify")}),(_.runOnConnectionOpen??defaultValues.runOnConnectionOpen)&&r.events.addEventListener("connection:open",S=>{const E=S.detail;this.identify(E).catch(x=>{this.log.error("error during identify trigged by connection:open",x)})})}[serviceCapabilities]=["@libp2p/identify"];async _identify(r,_={}){let S;if(_.signal==null){const E=AbortSignal.timeout(this.timeout);setMaxListeners$1(1/0,E),_={..._,signal:E}}try{S=await r.newStream(this.protocol,{..._,runOnTransientConnection:this.runOnTransientConnection});const x=await pbStream(S,{maxDataLength:this.maxMessageSize}).pb(Identify$1).read(_);return await S.close(_),x}catch(E){throw this.log.error("error while reading identify message",E),S?.abort(E),E}}async identify(r,_={}){const S=await this._identify(r,_),{publicKey:E,protocols:x,observedAddr:T}=S;if(E==null)throw new CodeError$4("public key was missing from identify message","ERR_MISSING_PUBLIC_KEY");const C=await peerIdFromKeys$1(E);if(!r.remotePeer.equals(C))throw new CodeError$4("identified peer does not match the expected peer","ERR_INVALID_PEER");if(this.peerId.equals(C))throw new CodeError$4("identified peer is our own peer id?","ERR_INVALID_PEER");const I=getCleanMultiaddr(T);return this.log("identify completed for peer %p and protocols %o",C,x),this.log("our observed address is %a",I),I!=null&&this.addressManager.getObservedAddrs().length<(this.maxObservedAddresses??1/0)&&(this.log("storing our observed address %a",I),this.addressManager.addObservedAddr(I)),consumeIdentifyMessage(this.peerStore,this.events,this.log,r,S)}async handleProtocol(r){const{connection:_,stream:S}=r,E=AbortSignal.timeout(this.timeout);setMaxListeners$1(1/0,E);try{const x=this.peerId.publicKey??new Uint8Array(0),T=await this.peerStore.get(this.peerId),C=this.addressManager.getAddresses().map(D=>D.decapsulateCode(getProtocol("p2p").code));let I=T.peerRecordEnvelope;if(C.length>0&&I==null){const D=new PeerRecord({peerId:this.peerId,multiaddrs:C});I=(await RecordEnvelope.seal(D,this.peerId)).marshal().subarray()}let B=_.remoteAddr.bytes;IP_OR_DOMAIN.matches(_.remoteAddr)||(B=void 0),await pbStream(S).pb(Identify$1).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:x,listenAddrs:C.map(D=>D.bytes),signedPeerRecord:I,observedAddr:B,protocols:T.protocols},{signal:E}),await S.close({signal:E})}catch(x){this.log.error("could not respond to identify request",x),S.abort(x)}}}function identify(n={}){return r=>new Identify(r,n)}var Peer;(function(n){let r;n.codec=()=>(r==null&&(r=message((_,S,E={})=>{if(E.lengthDelimited!==!1&&S.fork(),_.publicKey!=null&&_.publicKey.byteLength>0&&(S.uint32(10),S.bytes(_.publicKey)),_.addrs!=null)for(const x of _.addrs)S.uint32(18),S.bytes(x);E.lengthDelimited!==!1&&S.ldelim()},(_,S)=>{const E={publicKey:alloc$1(0),addrs:[]},x=S==null?_.len:_.pos+S;for(;_.pos>>3){case 1:{E.publicKey=_.bytes();break}case 2:{E.addrs.push(_.bytes());break}default:{_.skipType(T&7);break}}}return E})),r),n.encode=_=>encodeMessage(_,n.codec()),n.decode=_=>decodeMessage$1(_,n.codec())})(Peer||(Peer={}));const TOPIC="_peer-discovery._p2p._pubsub";class PubSubPeerDiscovery extends TypedEventEmitter{[peerDiscoverySymbol]=!0;[Symbol.toStringTag]="@libp2p/pubsub-peer-discovery";interval;listenOnly;topics;intervalId;components;log;constructor(r,_={}){super();const{interval:S,topics:E,listenOnly:x}=_;this.components=r,this.interval=S??1e4,this.listenOnly=x??!1,this.log=r.logger.forComponent("libp2p:discovery:pubsub"),Array.isArray(E)&&E.length>0?this.topics=E:this.topics=[TOPIC],this._onMessage=this._onMessage.bind(this)}isStarted(){return this.intervalId!=null}start(){}afterStart(){if(this.intervalId!=null)return;const r=this.components.pubsub;if(r==null)throw new Error("PubSub not configured");for(const _ of this.topics)r.subscribe(_),r.addEventListener("message",this._onMessage);this.listenOnly||(this._broadcast(),this.intervalId=setInterval(()=>{this._broadcast()},this.interval))}beforeStop(){const r=this.components.pubsub;if(r==null)throw new Error("PubSub not configured");for(const _ of this.topics)r.unsubscribe(_),r.removeEventListener("message",this._onMessage)}stop(){this.intervalId!=null&&(clearInterval(this.intervalId),this.intervalId=void 0)}_broadcast(){const r=this.components.peerId;if(r.publicKey==null)throw new Error("PeerId was missing public key");const _={publicKey:r.publicKey,addrs:this.components.addressManager.getAddresses().map(x=>x.bytes)},S=Peer.encode(_),E=this.components.pubsub;if(E==null)throw new Error("PubSub not configured");for(const x of this.topics){if(E.getSubscribers(x).length===0){this.log("skipping broadcasting our peer data on topic %s because there are no peers present",x);continue}this.log("broadcasting our peer data on topic %s",x),E.publish(x,S)}}_onMessage(r){if(!this.isStarted())return;const _=r.detail;if(!this.topics.includes(_.topic))return;const S=Peer.decode(_.data);peerIdFromKeys$1(S.publicKey).then(E=>{E.equals(this.components.peerId)||(this.log("discovered peer %p on %s",E,_.topic),this.safeDispatchEvent("peer",{detail:{id:E,multiaddrs:S.addrs.map(x=>multiaddr(x))}}))}).catch(E=>{this.log.error(E)})}}function pubsubPeerDiscovery(n={}){return r=>new PubSubPeerDiscovery(r,n)}const ADRESSES_NŒUDS_RELAI=["/ip4/164.90.222.145/udp/9090/webrtc-direct/certhash/uEiAJOkKT64u6jmXV5YxncCoER5WXSO2HYE23Xpap651xMw/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR","/ip4/164.90.222.145/udp/9091/quic-v1/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR","/ip4/164.90.222.145/tcp/9092/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR"],obtOptionsLibp2pNode=async()=>{const{tcp:n}=await __vitePreload(async()=>{const{tcp:_}=await import("@libp2p/tcp");return{tcp:_}},[],import.meta.url),{mdns:r}=await __vitePreload(async()=>{const{mdns:_}=await import("@libp2p/mdns");return{mdns:_}},[],import.meta.url);return{addresses:{listen:["/ip4/0.0.0.0/tcp/0/ws","/webrtc","/webtransport","/webrtc-direct"]},transports:[webSockets({filter:all}),webRTC({rtcConfiguration:{iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}]}}),webTransport(),webRTCDirect(),n(),circuitRelayTransport({discoverRelays:1})],connectionEncryption:[noise()],streamMuxers:[yamux()],connectionGater:{denyDialMultiaddr:()=>!1},peerDiscovery:[r(),bootstrap({list:ADRESSES_NŒUDS_RELAI,timeout:0}),pubsubPeerDiscovery({interval:1e3,topics:["constellation._peer-discovery._p2p._pubsub"],listenOnly:!1})],services:{identify:identify(),autoNAT:autoNAT(),dcutr:dcutr(),pubsub:gossipsub({allowPublishToZeroPeers:!0}),dht:kadDHT({clientMode:!1})}}},obtOptionsLibp2pÉlectionPrincipal=async()=>{const{tcp:n}=await __vitePreload(async()=>{const{tcp:_}=await import("@libp2p/tcp");return{tcp:_}},[],import.meta.url),{mdns:r}=await __vitePreload(async()=>{const{mdns:_}=await import("@libp2p/mdns");return{mdns:_}},[],import.meta.url);return{addresses:{listen:["/ip4/0.0.0.0/tcp/0/ws","/webrtc","/webtransport"]},transports:[webSockets({filter:all}),webRTC({rtcConfiguration:{iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}]}}),webTransport(),webRTCDirect(),n(),circuitRelayTransport({discoverRelays:1})],connectionEncryption:[noise()],streamMuxers:[yamux()],connectionGater:{denyDialMultiaddr:()=>!1},peerDiscovery:[r(),bootstrap({list:ADRESSES_NŒUDS_RELAI,timeout:0}),pubsubPeerDiscovery({interval:1e3,topics:["constellation._peer-discovery._p2p._pubsub"],listenOnly:!1})],services:{identify:identify(),autoNAT:autoNAT(),dcutr:dcutr(),pubsub:gossipsub({allowPublishToZeroPeers:!0}),dht:kadDHT({clientMode:!1})}}},obtOptionsLibp2pNavigateur=async()=>({addresses:{listen:["/webrtc","/webtransport"]},transports:[webSockets({filter:all}),webRTC({rtcConfiguration:{iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}]}}),webRTCDirect(),webTransport(),circuitRelayTransport({discoverRelays:1})],connectionEncryption:[noise()],streamMuxers:[yamux()],connectionGater:{denyDialMultiaddr:()=>!1},peerDiscovery:[bootstrap({list:ADRESSES_NŒUDS_RELAI,timeout:0}),pubsubPeerDiscovery({interval:1e3,topics:["constellation._peer-discovery._p2p._pubsub"],listenOnly:!1})],services:{identify:identify(),autoNAT:autoNAT(),dcutr:dcutr(),pubsub:gossipsub({allowPublishToZeroPeers:!0}),dht:kadDHT({clientMode:!0})}}),obtOptionsLibp2pTravailleurWeb=async()=>({addresses:{listen:["/webrtc"]},transports:[webSockets({filter:all}),webTransport(),circuitRelayTransport({discoverRelays:1})],connectionEncryption:[noise()],streamMuxers:[yamux()],connectionGater:{denyDialMultiaddr:()=>!1},peerDiscovery:[bootstrap({list:ADRESSES_NŒUDS_RELAI,timeout:0})],services:{identify:identify(),pubsub:gossipsub({allowPublishToZeroPeers:!0})}}),obtConfigLibp2pPlateforme=async()=>{let n;return isBrowser$1||isElectronRenderer?n=await obtOptionsLibp2pNavigateur():isWebWorker?n=await obtOptionsLibp2pTravailleurWeb():isElectronMain?n=await obtOptionsLibp2pÉlectionPrincipal():isNode?n=await obtOptionsLibp2pNode():(console.warn("Plateforme non reconnue. On utilisera la configuration navigateur."),n=await obtOptionsLibp2pNavigateur()),n};async function initSFIP({dossier:n,configLibp2p:r={}}){const _=await obtConfigLibp2pPlateforme(),S=await createLibp2p$1(mergeOptions$a(r,{..._})),x={blockstore:new LevelBlockstore(`${n}/blocks`),libp2p:S,blockBrokers:[bitswap()]};return createHelia({...x})}const index=Object.freeze(Object.defineProperty({__proto__:null,initSFIP},Symbol.toStringTag,{value:"Module"})),estOrbiteDB=n=>{if(!n)return!1;const r=n;return r.id&&typeof r.open=="function"&&typeof r.stop=="function"&&r.ipfs},schémaStructureBdCompte={type:"object",properties:{protocoles:{type:"string",nullable:!0},profil:{type:"string",nullable:!0},motsClefs:{type:"string",nullable:!0},variables:{type:"string",nullable:!0},bds:{type:"string",nullable:!0},projets:{type:"string",nullable:!0},nuées:{type:"string",nullable:!0},favoris:{type:"string",nullable:!0},réseau:{type:"string",nullable:!0},automatisations:{type:"string",nullable:!0}},required:[]},schémaStructureNomsDispositifs={type:"object",additionalProperties:{type:"object",properties:{nom:{type:"string",nullable:!0},type:{type:"string",nullable:!0}}},required:[]},DÉLAI_EXPIRATION_INVITATIONS=1e3*60*5,obtDossierConstellation=async n=>{if(n.dossier&&n.dossier!=="dév"){if(isNode||isElectronMain){const r=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url);r.existsSync(n.dossier)||r.mkdirSync(n.dossier,{recursive:!0})}return n.dossier}if(isNode||isElectronMain){const r=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url),_=(await __vitePreload(async()=>{const{default:x}=await import("env-paths");return{default:x}},[],import.meta.url)).default,S=_("constl",{suffix:""}),E=await join(S.data,n.dossier==="dév"?"constl-dév":"constl");return r.existsSync(E)||r.mkdirSync(E,{recursive:!0}),E}else return"./constl"},join=async(...n)=>{if(isNode||isElectronMain){const{join:r}=await __vitePreload(async()=>{const{join:_}=await Promise.resolve().then(()=>index$2);return{join:_}},void 0,import.meta.url);return r(...n)}else return n.join("/")};class Constellation{_opts;événements;orbite;sfip;épingles;profil;bds;tableaux;variables;réseau;favoris;projets;recherche;motsClefs;automatisations;nuées;licences;protocoles;_orbiteExterne;_sfipExterne;idCompte;encryption;sujet_réseau;motsDePasseRejoindreCompte;ennikkai;verrouObtIdBd;_intervaleVerrou;constructor(r={}){this._opts=r,this.événements=new eventsExports.EventEmitter,this.sujet_réseau=r.sujetRéseau||"réseau-constellation",this.motsDePasseRejoindreCompte={},this.verrouObtIdBd=new s$2,this._orbiteExterne=this._sfipExterne=!1,this.encryption=new EncryptionLocalFirst,this.ennikkai=new எண்ணிக்கை({}),this.épingles=new Épingles({client:this}),this.profil=new Profil({client:this}),this.motsClefs=new MotsClefs({client:this}),this.tableaux=new Tableaux({client:this}),this.variables=new Variables({client:this}),this.bds=new BDs({client:this}),this.projets=new Projets({client:this}),this.nuées=new Nuées({client:this}),this.favoris=new Favoris({client:this}),this.automatisations=new Automatisations({client:this}),this.recherche=new Recherche({client:this}),this.licences=new Licences({client:this}),this.réseau=new Réseau({client:this}),this.protocoles=new Protocoles({client:this}),this._initialiser()}async dossier(){return await obtDossierConstellation(this._opts)}async _initialiser(){await this.verrouillerDossier({message:this._opts.messageVerrou});const{sfip:r,orbite:_}=await this._générerSFIPetOrbite();this.sfip=r,this.orbite=gestionnaireOrbiteGénéral.obtGestionnaireOrbite({orbite:_}),this.événements.emit("sfipEtOrbitePrêts",{sfip:r,orbite:this.orbite});const S={type:nomType,write:this.orbite.identity.id,nom:"racine"};this.idCompte=await this.obtDeStockageLocal({clef:"idCompte",parCompte:!1})||void 0,this.idCompte||(this.idCompte=await this.créerBdIndépendante({type:"keyvalue",optionsAccès:S,nom:"racine"}),await this.nommerDispositif({type:this.détecterTypeDispositif()}),await this.sauvegarderAuStockageLocal({clef:"idCompte",val:this.idCompte,parCompte:!1})),await this.réseau.initialiser(),await this.protocoles.établirProtocoles({protocoles:this._opts.protocoles}),await this.épingler(),this.événements.emit("comptePrêt",{idCompte:this.idCompte})}détecterTypeDispositif(){if(isElectronMain)return"ordinateur";if(isNode)return"serveur";if(isBrowser$1)return["Pad","Kindle","Nexus","Nook","PlayBook"].find(r=>plateforme.product?.includes(r))?"tablette":plateforme.name?.includes("Mobile")||["Phone","Android","iOS"].find(r=>plateforme.os?.family?.includes(r))?"téléphone":"navigateur"}async attendreSfipEtOrbite(){return this.sfip&&this.orbite?{sfip:this.sfip,orbite:this.orbite}:new Promise(r=>{this.événements.once("sfipEtOrbitePrêts",r)})}async attendreInitialisée(){return this.idCompte?{idCompte:this.idCompte}:new Promise(r=>{this.événements.once("comptePrêt",r)})}async verrouillerDossier({message:r}){if(isElectronMain||isNode){const S=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url),E=await join(await this.dossier(),"VERROU"),x=new Date;if(!S.existsSync(E))S.writeFileSync(E,r||"");else{const C=S.statSync(E).mtime,I=()=>{if(x.getTime()-C.getTime()>5e3)S.writeFileSync(E,r||"");else{const B=new TextDecoder().decode(S.readFileSync(E));try{const D=JSON.parse(B);if(D.port){const N=new Error(`Ce compte est déjà ouvert en Constellation, et le serveur local est disponible sur le port ${D.port}. Vous pouvez soit vous connecter sur ce port, soit fermer les instances de Constellation qui ouvertes et puis vous ressayer.`);throw N.name=ERREUR_INIT_IPA_DÉJÀ_LANCÉ,N}}catch{}const A=new Error("Constellation est déjà lancée.");throw A.name=ERREUR_INIT_IPA_DÉJÀ_LANCÉ,A}};try{I()}catch{await new Promise(B=>setTimeout(B,5e3)),I()}}this._intervaleVerrou=setInterval(()=>{try{S.utimesSync(E,x,x)}catch{}},5e3)}}async effacerVerrou(){(isElectronMain||isNode)&&(this._intervaleVerrou&&clearInterval(this._intervaleVerrou),(await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url)).rmSync(await join(await this.dossier(),"VERROU")))}async _générerSFIPetOrbite(){const r=await this.dossier(),{orbite:_}=this._opts;let S,E;if(_)if(estOrbiteDB(_))this._sfipExterne=this._orbiteExterne=!0,S=_.ipfs,E=_;else{const{initOrbite:x}=await __vitePreload(async()=>{const{initOrbite:T}=await Promise.resolve().then(()=>orbite);return{initOrbite:T}},void 0,import.meta.url);_.ipfs?(this._sfipExterne=!0,S=_.ipfs):S=await initSFIP({dossier:await join(r,"sfip")}),E=await x({sfip:S,dossierOrbite:_.directory||await join(r,"orbite")}),S=E.ipfs}else{const{initSFIP:x}=await __vitePreload(async()=>{const{initSFIP:C}=await Promise.resolve().then(()=>index);return{initSFIP:C}},void 0,import.meta.url);S=await x({dossier:await join(await this.dossier(),"sfip")});const{initOrbite:T}=await __vitePreload(async()=>{const{initOrbite:C}=await Promise.resolve().then(()=>orbite);return{initOrbite:C}},void 0,import.meta.url);E=await T({sfip:S,dossierOrbite:await join(await this.dossier(),"orbite")})}return{sfip:S,orbite:E}}async obtOptionsAccès(){return{write:await this.obtIdCompte()}}async épingler(){await this.épingles.épinglerBd({id:await this.obtIdCompte()}),await Promise.all([this.profil,this.automatisations,this.bds,this.variables,this.projets,this.nuées,this.motsClefs,this.réseau,this.favoris].map(async r=>r&&await r.épingler()))}async ouvrirBd({id:r,type:_,options:S}){const{orbite:E}=await this.attendreSfipEtOrbite();return await E.ouvrirBd({id:r,type:_,options:S})}async ouvrirBdTypée({id:r,type:_,schéma:S,options:E}){const{orbite:x}=await this.attendreSfipEtOrbite();return await x.ouvrirBdTypée({id:r,type:_,schéma:S,options:E})}async signer({message:r}){const{orbite:_}=await this.attendreSfipEtOrbite(),S=_.identity,E=await _.identity.sign(S,r),x=_.identity.publicKey;return{signature:E,clefPublique:x}}async vérifierSignature({signature:r,message:_}){if(!r||!r.clefPublique||!r.signature)return!1;const{orbite:S}=await this.attendreSfipEtOrbite();return await S.identity.verify(r.signature,r.clefPublique,_)}async suivreDispositifs({f:r,idCompte:_}){const S=async({id:E})=>{const{orbite:x}=await this.attendreSfipEtOrbite(),{bd:T,fOublier:C}=await x.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdCompte}),I=T.access,B=I.type;if(B==="ipfs")return await r(I.write),await C(),faisRien;if(B==="contrôleur-constellation"){const A=I,D=async()=>{const N=A.gestRôles._rôles[MODÉRATEUR];await r(N)};return A.gestRôles.on("misÀJour",D),D(),async()=>{A.gestRôles.off("misÀJour",D),await C()}}else return await C(),faisRien};return await suivreBdDeFonction({fRacine:async({fSuivreRacine:E})=>_?(await E(_),faisRien):await this.suivreIdCompte({f:E}),f:ignorerNonDéfinis(r),fSuivre:S})}async nommerDispositif({idDispositif:r,nom:_,type:S}){const E=r||await this.obtIdDispositif(),x=await this.obtIdBd({nom:"nomsDispositifs",racine:await this.obtIdCompte(),type:"keyvalue"}),{bd:T,fOublier:C}=await this.ouvrirBdTypée({id:x,type:"keyvalue",schéma:schémaStructureNomsDispositifs});if(_||S){const I={};_&&(I.nom=_),S&&(I.type=S),await T.set(E,I)}else await T.del(E);await C()}async suivreNomsDispositifs({idCompte:r,f:_}){const S=r||await this.obtIdCompte();return await this.suivreBdDicDeClef({id:S,schéma:schémaStructureNomsDispositifs,clef:"nomsDispositifs",f:_})}async suivreNomDispositif({idCompte:r,idDispositif:_,f:S}){return await this.suivreNomsDispositifs({idCompte:r,f:async E=>{const x=E[_];if(x)return await S(x)}})}async générerInvitationRejoindreCompte(){const r=await this.obtIdCompte(),_=await this.encryption.clefAléatoire();return this.motsDePasseRejoindreCompte[_]=Date.now(),{idCompte:r,codeSecret:_}}async révoquerInvitationRejoindreCompte({codeSecret:r}){r?delete this.motsDePasseRejoindreCompte[r]:this.motsDePasseRejoindreCompte={}}async considérerRequêteRejoindreCompte({requête:r}){const{idDispositif:_,empreinteVérification:S}=r,E=Date.now();for(const x of Object.keys(this.motsDePasseRejoindreCompte)){const T=this.motsDePasseRejoindreCompte[x];E-T_=I.includes(T));await new Promise(I=>{const B=async()=>{_&&(clearInterval(A),await C(),await E(),I())},A=setInterval(()=>{B()},10);B()}),this.idCompte=r,await this.sauvegarderAuStockageLocal({clef:"idCompte",val:r,parCompte:!1}),this.événements.emit("comptePrêt",{idCompte:r})}async donnerAccès({idBd:r,identité:_,rôle:S=MEMBRE}){if(!isValidAddress(_))throw new Error(`Identité "${_}" non valide.`);const{bd:E,fOublier:x}=await this.ouvrirBd({id:r}),T=E.access;T.type===nomType&&T.grant(S,_),await x()}async suivreIdCompte({f:r}){const _=async({idCompte:S})=>{await r(S)};return this.événements.on("comptePrêt",_),this.idCompte&&await _({idCompte:this.idCompte}),async()=>{this.événements.off("comptePrêt",_)}}async obtIdSFIP(){const{sfip:r}=await this.attendreSfipEtOrbite();return r.libp2p.peerId}async obtIdDispositif(){const{orbite:r}=await this.attendreSfipEtOrbite();return r.identity.id}async obtIdentitéOrbite(){const{orbite:r}=await this.attendreSfipEtOrbite();return r.identity}async obtIdCompte(){const{idCompte:r}=await this.attendreInitialisée();return r}async copierContenuBdDic({bdBase:r,nouvelleBd:_,clef:S,schéma:E}){const x=await r.get(S);if(typeof x!="string")return;const{bd:T,fOublier:C}=await this.ouvrirBdTypée({id:x,type:"keyvalue",schéma:E}),I=await _.get(S);if(!I)throw new Error("La nouvelle BD n'existait pas.");if(typeof I!="string")throw new Error(`${I} n'est pas une adresse Orbite.`);const{bd:B,fOublier:A}=await this.ouvrirBdTypée({id:I,type:"keyvalue",schéma:E}),D=await T.all();await Promise.all(D.map(async N=>{await B.put(N.key,N.value)})),C(),A()}async combinerBds({idBdBase:r,idBd2:_}){const{bd:S,fOublier:E}=await this.ouvrirBd({id:r}),x=S.type;switch(await E(),x){case"keyvalue":{const{bd:T,fOublier:C}=await this.ouvrirBd({id:r,type:"keyvalue"}),{bd:I,fOublier:B}=await this.ouvrirBd({id:_,type:"keyvalue"});await this.combinerBdsDict({bdBase:T,bd2:I}),await C(),await B();break}case"set":{const{bd:T,fOublier:C}=await this.ouvrirBd({id:r,type:"set"}),{bd:I,fOublier:B}=await this.ouvrirBd({id:_,type:"set"});await this.combinerBdsEnsemble({bdBase:T,bd2:I}),await C(),await B();break}default:throw new Error(`Type de BD ${x} non supporté.`)}}async combinerBdsDict({bdBase:r,bd2:_}){const S=Object.fromEntries((await _.all()).map(E=>[E.key,E.value]));for(const[E,x]of Object.entries(S)){const T=await r.get(E);T!==x&&(T===void 0?await r.put(E,x):isValidAddress(T)&&isValidAddress(x)&&await this.combinerBds({idBdBase:T,idBd2:x}))}}async combinerBdsEnsemble({bdBase:r,bd2:_,index:S}){const E=await r.all(),x=await _.all();for(const T of x){const C=T.value;if(S){if(typeof C!="object")throw new Error(`Erreur combinaison ensembles : ${typeof C}`);const I=E.find(B=>typeof B.value=="object"&&S.every(A=>B.value[A]===C[A]));if(!I)await r.add(C);else{const B=I.value;if(!deepEqual$1(B,C)){const A=Object.assign({},B);for(const[D,N]of Object.entries(C))A[D]===void 0?A[D]=N:deepEqual$1(A[D],N)||isValidAddress(A[D])&&isValidAddress(N)&&await this.combinerBds({idBdBase:A[D],idBd2:N});await r.del(I.value),await r.add(A)}}}else E.some(I=>deepEqual$1(I.value,C))||await r.add(C)}}async suivreBd({id:r,f:_,type:S,schéma:E}){if(!isValidAddress(r))throw new Error(`Adresse "${r}" non valide.`);const x=[],T={};let C=!1;const I=()=>{(E?S==="set"?this.ouvrirBdTypée({id:r,type:S,schéma:E}):S==="keyvalue"?this.ouvrirBdTypée({id:r,type:S,schéma:E}):S==="ordered-keyvalue"?this.ouvrirBdTypée({id:r,type:S,schéma:E}):this.ouvrirBd({id:r,type:S}):this.ouvrirBd({id:r})).then(({bd:D,fOublier:N})=>{x.push(N);const O=()=>{const M=v4$1(),L=_(D);(U=>!!U&&!!U.then)(L)&&(T[M]=L,L.then(()=>{delete T[M]}))};D.events.on("update",O),x.push(async()=>{D.events.off("update",O)}),O()}).catch(D=>{if(!C)if(String(D).includes("ipfs unable to find")||String(D).includes("aborted")||String(D).includes("No Promise in Promise.any was resolved"))I();else throw console.error(D),new Error(D)})};return I(),async()=>{C=!0,await Promise.all(x.map(A=>A())),await Promise.all(Object.values(T))}}async suivreBdDeClef({id:r,clef:_,f:S,fSuivre:E}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:T})=>{const C=async I=>{const B=await I.get(_);return await T(B)};return await this.suivreBd({id:r,f:C,type:"keyvalue"})},f:S,fSuivre:E})}async suivreBdDic({id:r,schéma:_,f:S}){const E=async x=>{const T=x?Object.fromEntries((await x.all()).map(C=>[C.key,C.value])):{};await S(T)};return await this.suivreBd({id:r,type:"keyvalue",schéma:_,f:E})}async suivreBdDicOrdonnée({id:r,schéma:_,f:S}){const E=async x=>{const T=await x.all();await S(T)};return await this.suivreBd({id:r,type:"ordered-keyvalue",schéma:_,f:E})}async suivreBdDicDeClef({id:r,clef:_,schéma:S,f:E}){const x=async C=>{await E(C||{})},T=async({id:C,fSuivreBd:I})=>await this.suivreBdDic({id:C,schéma:S,f:I});return await this.suivreBdDeClef({id:r,clef:_,f:x,fSuivre:T})}async suivreBdDicOrdonnéeDeClef({id:r,clef:_,schéma:S,f:E}){const x=async C=>{await E(C||[])},T=async({id:C,fSuivreBd:I})=>await this.suivreBdDicOrdonnée({id:C,schéma:S,f:I});return await this.suivreBdDeClef({id:r,clef:_,f:x,fSuivre:T})}async suivreBdListeDeClef({id:r,clef:_,f:S,schéma:E,renvoyerValeur:x=!0}){if(x){const T=async I=>{await S(I||[])},C=async({id:I,fSuivreBd:B})=>await this.suivreBdListe({id:I,f:B,schéma:E,renvoyerValeur:x});return await this.suivreBdDeClef({id:r,clef:_,f:T,fSuivre:C})}else{const T=async I=>{await S(I||[])},C=async({id:I,fSuivreBd:B})=>await this.suivreBdListe({id:I,f:B,schéma:E,renvoyerValeur:!1});return await this.suivreBdDeClef({id:r,clef:_,f:T,fSuivre:C})}}async suivreBdListe({id:r,f:_,schéma:S,renvoyerValeur:E=!0}){return await this.suivreBd({id:r,type:"set",schéma:S,f:async x=>{const T=E?(await x.all()).map(C=>C.value):await x.all();await _(T)}})}async suivreTypeObjet({idObjet:r,f:_}){const S=async T=>{let C;const{type:I}=T;I?C=["motClef","variable","bd","projet","nuée"].includes(I)?I:void 0:T.bds?C="projet":T.tableaux?C="bd":T.catégorie?C="variable":T.nom&&(C="motClef"),await _(C)},E={type:"object",properties:{type:{type:"string",nullable:!0}},additionalProperties:!0};return await this.suivreBdDic({id:r,schéma:E,f:S})}async suivreEmpreinteTêtesBdRécursive({idBd:r,f:_}){const S=async I=>{const B=await I.log.heads();return B[B.length-1]?.hash||""},E=I=>Base64.stringify(md5(I));return await suivreBdsDeFonctionListe({fListe:async I=>await this.suivreBdsRécursives({idBd:r,f:async B=>await I(B)}),f:async I=>{await _(E(I.sort().join()))},fBranche:async(I,B)=>await this.suivreBd({id:I,f:async A=>{const D=await S(A);await B(D)}})})}async suivreBdsDeBdListe({id:r,f:_,fBranche:S,fIdBdDeBranche:E=C=>C,fRéduction:x=C=>[...new Set(C.flat())],fCode:T=C=>C}){return await suivreBdsDeFonctionListe({fListe:async I=>await this.suivreBdListe({id:r,f:I}),f:_,fBranche:S,fIdBdDeBranche:E,fRéduction:x,fCode:T})}async suivreBdsDeBdDic({id:r,f:_,fBranche:S,fIdBdDeBranche:E=C=>C,fRéduction:x=C=>[...new Set(C.flat())],fCode:T=C=>C}){return await suivreBdsDeFonctionListe({fListe:async I=>await this.suivreBd({id:r,f:async B=>await I((await B.all()).map(A=>A.value))}),f:_,fBranche:S,fIdBdDeBranche:E,fRéduction:x,fCode:T})}async suivreBdsDeFonctionRecherche({fListe:r,f:_,fBranche:S,fIdBdDeBranche:E=C=>C,fRéduction:x=C=>[...new Set(C.flat())],fCode:T=C=>C}){let C;const I=async D=>{C&&await C(D)};return{fOublier:await suivreBdsDeFonctionListe({fListe:async D=>{const{fOublier:N,fChangerProfondeur:O}=await r(D);return C=O,N},f:_,fBranche:S,fIdBdDeBranche:E,fRéduction:x,fCode:T}),fChangerProfondeur:I}}async suivreBdSelonCondition({fRacine:r,fCondition:_,f:S}){const E=async({id:x,fSuivreBd:T})=>await _(x,async C=>{T(C?x:void 0)});return await suivreBdDeFonction({fRacine:async({fSuivreRacine:x})=>await r(x),f:ignorerNonDéfinis(S),fSuivre:E})}async suivreBdsSelonCondition({fListe:r,fCondition:_,f:S}){return await suivreBdsDeFonctionListe({fListe:r,f:async T=>{const C=T.filter(I=>I.état).map(I=>I.id);return await S(C)},fBranche:async(T,C)=>await _(T,async B=>await C({id:T,état:B}))})}async obtFichierSFIP({id:r,max:_}){return await toBuffer$1(await this.obtItérableAsyncSFIP({id:r}),_)}async obtItérableAsyncSFIP({id:r}){const{sfip:_}=await this.attendreSfipEtOrbite(),S=unixfs(_),E=r.split("/")[0];return S.cat(CID$8.parse(E))}async ajouterÀSFIP({contenu:r,nomFichier:_}){const{sfip:S}=await this.attendreSfipEtOrbite();return(await unixfs(S).addFile({content:r})).toString()+"/"+_}obtClefStockageClient({clef:r,parCompte:_=!0}){return _?`${this.idCompte.slice(this.idCompte.length-23,this.idCompte.length-8)} : ${r}`:r}async obtDeStockageLocal({clef:r,parCompte:_=!0}){const S=this.obtClefStockageClient({clef:r,parCompte:_});return(await obtStockageLocal(await this.dossier())).getItem(S)}async sauvegarderAuStockageLocal({clef:r,val:_,parCompte:S=!0}){const E=this.obtClefStockageClient({clef:r,parCompte:S});return(await obtStockageLocal(await this.dossier())).setItem(E,_)}async effacerDeStockageLocal({clef:r,parCompte:_=!0}){const S=this.obtClefStockageClient({clef:r,parCompte:_});return(await obtStockageLocal(await this.dossier())).removeItem(S)}async obtIdBd({nom:r,racine:_,type:S}){const E={type:"object",properties:{[r]:{type:"string"}},additionalProperties:!0,required:[]},{bd:x,fOublier:T}=typeof _=="string"?await this.ouvrirBdTypée({id:_,type:"keyvalue",schéma:E}):{bd:_,fOublier:faisRien},C=x.address+":"+r;await this.verrouObtIdBd.acquire(C);let I=await x.get(r);const B=await this.obtDeStockageLocal({clef:C});if(typeof I=="string"&&B&&I!==B)try{await this.combinerBds({idBdBase:I,idBd2:B}),await this.effacerBd({id:B}),await this.sauvegarderAuStockageLocal({clef:C,val:I})}catch{}if(typeof I=="string"&&S)try{const{fOublier:A}=await this.ouvrirBd({id:I,type:S});return await A(),this.verrouObtIdBd.release(C),I}catch{throw this.verrouObtIdBd.release(C),new Error("Bd n'existe pas : "+r+" "+I)}if(!I&&S){const A=x.access,{orbite:D}=await this.attendreSfipEtOrbite();if(await A.estAutorisé(D.identity.id)){const O=await this.obtOpsAccès({idBd:x.address});if(I=await this.créerBdIndépendante({type:S,optionsAccès:O}),!I)throw new Error("Bd non générée");await x.set(r,I)}}return typeof I=="string"&&await this.sauvegarderAuStockageLocal({clef:C,val:I}),T&&await T(),this.verrouObtIdBd.release(C),typeof I=="string"?I:void 0}async créerBdIndépendante({type:r,optionsAccès:_,nom:S}){const{orbite:E}=await this.attendreSfipEtOrbite();return _=_||await this.obtOptionsAccès(),await E.créerBdIndépendante({type:r,nom:S,options:{AccessController:ContrôleurConstellation(_)}})}async effacerBd({id:r}){return await this.orbite?.effacerBd({id:r})}async obtOpsAccès({idBd:r}){const{bd:_,fOublier:S}=await this.ouvrirBd({id:r}),E=_.access;return await S(),{address:E.bd.address,write:E.write}}async suivrePermission({idObjet:r,f:_}){const{bd:S,fOublier:E}=await this.ouvrirBd({id:r}),x=S.access,T=x.type;if(T==="ipfs"){const C=await this.obtIdDispositif();return await _(x.write.includes(C)?MEMBRE:void 0),await E(),faisRien}else if(T===nomType){const C=async B=>{const A=B.filter(N=>N.idCompte===this.idCompte).map(N=>N.rôle),D=A.includes(MODÉRATEUR)?MODÉRATEUR:A.includes(MEMBRE)?MEMBRE:void 0;await _(D)},I=await x.suivreUtilisateursAutorisés(C);return async()=>{await I(),await E()}}else throw new Error(`Type d'accès ${T} non reconnu.`)}async suivrePermissionÉcrire({id:r,f:_}){const S=async E=>{await _(E!==void 0)};return await this.suivrePermission({idObjet:r,f:S})}async suivreAccèsBd({id:r,f:_}){const S=async E=>{const x=E.access,T=x.type;if(T==="ipfs"){const C=x.write.map(I=>({idCompte:I,rôle:MODÉRATEUR}));await _(C)}else if(T===nomType)return await x.suivreUtilisateursAutorisés(_);return faisRien};return await this.suivreBd({id:r,f:S})}async suivreBdsRécursives({idBd:r,f:_}){const S={},E=async()=>{await _(Object.keys(S))},x=new s$2,T=async A=>{delete S[A],await Promise.all(Object.keys(S).map(async D=>{S[D]&&(S[D].requêtes.delete(A),S[D].requêtes.size||await S[D].fOublier())}))},C=["copiéDe"],I=async(A,D)=>{const N=j=>j.map(z=>typeof z=="string"?[z]:Array.isArray(z)?z:typeof z=="object"?Object.values(z):[]).flat().filter(z=>isValidAddress(z)),O=async j=>{let z=[];typeof j=="object"?(z=N(Object.entries(j).filter(J=>!C.includes(J[0])).map(J=>J[1])),z.push(...N(Object.keys(j)))):Array.isArray(j)?z=N(j):typeof j=="string"&&(z=[j]);const H=z.filter(J=>!S[A].sousBds.includes(J)),Q=S[A].sousBds.filter(J=>!z.includes(J));S[A].sousBds=z,await Promise.all(Q.map(async J=>{S[J]?.requêtes.delete(A),S[J]?.requêtes.size||await S[J]?.fOublier()})),await Promise.all(H.map(async J=>await I(J,A))),E()};if(await x.acquire(A),S[A]){S[A].requêtes.add(D);return}const{bd:M,fOublier:L}=await this.ouvrirBd({id:A}),{type:F}=M;await L(),S[A]={requêtes:new Set([D]),sousBds:[],fOublier:async()=>{await U(),await T(A)}};let U;F==="keyvalue"?U=await this.suivreBdDic({id:A,f:O}):F==="ordered-keyvalue"?U=await this.suivreBdDicOrdonnée({id:A,f:O}):F==="set"?U=await this.suivreBdListe({id:A,f:O}):U=faisRien,x.release(A),E()};return await I(r,""),async()=>{await Promise.all(Object.values(S).map(A=>A.fOublier()))}}async fermerCompte(){this.réseau&&await this.réseau.fermer(),this.favoris&&await this.favoris.fermer(),this.automatisations&&await this.automatisations.fermer()}async fermer(){await this.attendreInitialisée();const{orbite:r}=await this.attendreSfipEtOrbite();await(await obtStockageLocal(await this.dossier())).fermer?.(),await this.fermerCompte(),await this.épingles.fermer(),await r.fermer({arrêterOrbite:!this._orbiteExterne}),this.sfip&&!this._sfipExterne&&await this.sfip.stop(),await this.effacerVerrou()}async effacerDispositif(){if(await this.fermer(),indexedDB)if(indexedDB.databases){const r=await indexedDB.databases();await Promise.all(r.map(_=>{_.name&&indexedDB.deleteDatabase(_.name)}))}else console.warn("On a pas pu tout effacer.");else{const r=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url);(await obtStockageLocal(await this.dossier())).clear(),r.rmdirSync(await this.dossier())}}async exporterDispositif({nomFichier:r}){if(isNode||isElectronMain){const _=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url),S=await __vitePreload(()=>Promise.resolve().then(()=>index$2),void 0,import.meta.url),E=({dossier:T,zip:C})=>{_.readdirSync(T).map(B=>{if(_.statSync(B)?.isDirectory())E({dossier:S.join(T,B),zip:C.folder(B)});else{const D=_.createReadStream(S.join(T,B));C.file(B,D)}})},x=new JSZip;E({dossier:await this.dossier(),zip:x}),await sauvegarderFichierZip({fichierZip:x,nomFichier:r})}else if(indexedDB?.databases){const _=({bd:T,zip:C})=>{const{name:I}=T;if(I){const B=C.folder(I);if(!B)throw new Error(I);const D=indexedDB.open(I).result.objectStoreNames;[...Array(D.length).keys()].map(O=>D.item(O)).filter(O=>!!O).map(O=>B.file(O,new indexedDbStream.IndexedDbReadStream({databaseName:I,objectStoreName:O})))}},S=new JSZip,E=await indexedDB.databases(),x=S.folder("bdIndexe");if(!x)throw new Error("Erreur Bd Indexe...");E.forEach(T=>{_({bd:T,zip:x})}),S.file("stockageLocal",JSON.stringify(await exporterStockageLocal(await this.dossier()))),await sauvegarderFichierZip({fichierZip:S,nomFichier:r})}else throw new Error("Sauvegarde non implémentée.")}async rétablirDispositif(){throw await this.effacerDispositif(),isNode||isElectronMain?new Error("Non implémenté"):new Error("Non implémenté")}static async créer(r={}){const _=new Constellation(r);return await _.attendreInitialisée(),_}}__decorate([cacheSuivi],Constellation.prototype,"suivreDispositifs",null);__decorate([cacheSuivi],Constellation.prototype,"suivreIdCompte",null);__decorate([cacheSuivi],Constellation.prototype,"suivreEmpreinteTêtesBdRécursive",null);__decorate([cacheSuivi],Constellation.prototype,"suivrePermission",null);__decorate([cacheSuivi],Constellation.prototype,"suivrePermissionÉcrire",null);__decorate([cacheSuivi],Constellation.prototype,"suivreAccèsBd",null);__decorate([cacheSuivi],Constellation.prototype,"suivreBdsRécursives",null);class EnveloppeIpa{ipa;_messagesEnAttente;prêt;dicFRetourSuivi;opts;fsMessages;fsErreurs;_verrou;constructor(r,_,S={}){this.fsMessages={},this.fsErreurs={},this.connecterÉcouteurs({fMessage:r,fErreur:_}),this.opts=S instanceof Constellation?{}:S,S instanceof Constellation&&(this.ipa=S),this.dicFRetourSuivi={},this.prêt=!1,this._messagesEnAttente=[],this._verrou=new s$2,this.init()}fMessage(r){Object.values(this.fsMessages).forEach(_=>_(r))}fErreur({erreur:r,id:_,code:S}){Object.values(this.fsErreurs).forEach(E=>E({erreur:r,id:_,code:S}))}async init(){if(await this._verrou.acquire("init"),this.ipa)return this._verrou.release("init"),this.ipa;try{this.ipa=await Constellation.créer(this.opts)}catch(r){throw this.fErreur({erreur:r.toString(),code:r.name==="Error"?ERREUR_INIT_IPA:r.name}),r}return this._messagesEnAttente.forEach(r=>this._gérerMessage(r)),this.prêt=!0,this._verrou.release("init"),this.ipa}async gérerMessage(r){this.prêt?await this._gérerMessage(r):this._messagesEnAttente.unshift(r)}async _gérerMessage(r){if(!this.ipa){this.fErreur({erreur:"IPA non initialisé",id:r.id,code:ERREUR_INIT_IPA});return}const{type:_}=r;switch(_){case"suivre":{const{id:S,fonction:E,args:x,nomArgFonction:T}=r,C=this.extraireFonctionIPA(E,S);if(!C)return;const I=B=>{const A={type:"suivre",id:S,données:B};this.fMessage(A)};x[T]=I;try{const B=await C(x),A=typeof B=="function"?{fOublier:B}:B;this.dicFRetourSuivi[S]=A;const D={type:"suivrePrêt",id:S};typeof B!="function"&&(D.fonctions=Object.keys(B)),this.fMessage(D)}catch(B){this.fErreur({erreur:B.toString()+B.stack.toString(),id:S,code:ERREUR_EXÉCUTION_IPA})}break}case"action":{const{id:S,fonction:E,args:x}=r,T=this.extraireFonctionIPA(E,S);if(!T)return;try{const C=await T(x),I={type:"action",id:S,résultat:C};this.fMessage(I)}catch(C){this.fErreur({erreur:C.toString()+C.stack.toString(),id:S,code:ERREUR_EXÉCUTION_IPA})}break}case"retour":{const{id:S,fonction:E,args:x}=r,T=this.dicFRetourSuivi[S];T&&await T[E](x),E==="fOublier"&&delete this.dicFRetourSuivi[S];break}default:{this.fErreur({erreur:`Type de requête ${_} non reconnu dans message ${r}`,id:r.id,code:ERREUR_EXÉCUTION_IPA});break}}}extraireFonctionIPA(r,_){const S=`Fonction Constellation.${r.join(".")} n'existe pas ou n'est pas une fonction.`;let E=this.ipa;for(const[x,T]of r.entries()){if(typeof E=="object"&&T in E&&E[T])x===r.length-1?E=E[T].bind(E):E=E[T];else{this.fErreur({erreur:S,id:_,code:ERREUR_FONCTION_MANQUANTE});return}if(!E){this.fErreur({erreur:S,id:_,code:ERREUR_FONCTION_MANQUANTE});return}}if(typeof E!="function"){this.fErreur({erreur:S,id:_,code:ERREUR_PAS_UNE_FONCTION});return}return E}connecterÉcouteurs({fMessage:r,fErreur:_}){const S=v4$1();return this.fsMessages[S]=r,this.fsErreurs[S]=_,()=>{delete this.fsMessages[S],delete this.fsErreurs[S]}}async fermer(){await(await this.init()).fermer()}}class MandataireProc extends Mandatairifiable{ipa;constructor(r={}){super(),this.ipa=new EnveloppeIpa(_=>this.recevoirMessageDIpa(_),({erreur:_,idRequête:S,code:E})=>{const x={type:"erreur",id:S,erreur:_,codeErreur:E};this.recevoirMessageDIpa(x)},r)}envoyerMessageÀIpa(r){this.ipa.gérerMessage(r)}}const générerMandataireProc=(n={})=>générerMandataire(new MandataireProc(n));function selectTranslation(n){return n&&Object.keys(n).length?Object.values(n)[0]:void 0}const RIFFCC_PROTOCOL="Riff.CC",constellationNavigateur={install:n=>{const r=générerMandataireProc({protocoles:[RIFFCC_PROTOCOL]});n.config.globalProperties.$constl=r,n.provide("constl",r)}},VAlertTitle=createSimpleFunctional("v-alert-title"),allowedTypes=["success","info","warning","error"],makeVAlertProps=propsFactory({border:{type:[Boolean,String],validator:n=>typeof n=="boolean"||["top","end","bottom","start"].includes(n)},borderColor:String,closable:Boolean,closeIcon:{type:IconValue,default:"$close"},closeLabel:{type:String,default:"$vuetify.close"},icon:{type:[Boolean,String,Function,Object],default:null},modelValue:{type:Boolean,default:!0},prominent:Boolean,title:String,text:String,type:{type:String,validator:n=>allowedTypes.includes(n)},...makeComponentProps(),...makeDensityProps(),...makeDimensionProps(),...makeElevationProps(),...makeLocationProps(),...makePositionProps(),...makeRoundedProps(),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:"flat"})},"VAlert"),VAlert=genericComponent()({name:"VAlert",props:makeVAlertProps(),emits:{"click:close":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useProxiedModel(n,"modelValue"),x=computed(()=>{if(n.icon!==!1)return n.type?n.icon??`$${n.type}`:n.icon}),T=computed(()=>({color:n.color??n.type,variant:n.variant})),{themeClasses:C}=provideTheme(n),{colorClasses:I,colorStyles:B,variantClasses:A}=useVariant(T),{densityClasses:D}=useDensity(n),{dimensionStyles:N}=useDimension(n),{elevationClasses:O}=useElevation(n),{locationStyles:M}=useLocation(n),{positionClasses:L}=usePosition(n),{roundedClasses:F}=useRounded(n),{textColorClasses:U,textColorStyles:j}=useTextColor(toRef(n,"borderColor")),{t:z}=useLocale(),H=computed(()=>({"aria-label":z(n.closeLabel),onClick(Q){E.value=!1,_("click:close",Q)}}));return()=>{const Q=!!(S.prepend||x.value),J=!!(S.title||n.title),Z=!!(S.close||n.closable);return E.value&&createVNode(n.tag,{class:["v-alert",n.border&&{"v-alert--border":!!n.border,[`v-alert--border-${n.border===!0?"start":n.border}`]:!0},{"v-alert--prominent":n.prominent},C.value,I.value,D.value,O.value,L.value,F.value,A.value,n.class],style:[B.value,N.value,M.value,n.style],role:"alert"},{default:()=>[genOverlays(!1,"v-alert"),n.border&&createVNode("div",{key:"border",class:["v-alert__border",U.value],style:j.value},null),Q&&createVNode("div",{key:"prepend",class:"v-alert__prepend"},[S.prepend?createVNode(VDefaultsProvider,{key:"prepend-defaults",disabled:!x.value,defaults:{VIcon:{density:n.density,icon:x.value,size:n.prominent?44:28}}},S.prepend):createVNode(VIcon,{key:"prepend-icon",density:n.density,icon:x.value,size:n.prominent?44:28},null)]),createVNode("div",{class:"v-alert__content"},[J&&createVNode(VAlertTitle,{key:"title"},{default:()=>[S.title?.()??n.title]}),S.text?.()??n.text,S.default?.()]),S.append&&createVNode("div",{key:"append",class:"v-alert__append"},[S.append()]),Z&&createVNode("div",{key:"close",class:"v-alert__close"},[S.close?createVNode(VDefaultsProvider,{key:"close-defaults",defaults:{VBtn:{icon:n.closeIcon,size:"x-small",variant:"text"}}},{default:()=>[S.close?.({props:H.value})]}):createVNode(VBtn,mergeProps({key:"close-btn",icon:n.closeIcon,size:"x-small",variant:"text"},H.value),null)])]})}}}),makeVLabelProps=propsFactory({text:String,onClick:EventProp(),...makeComponentProps(),...makeThemeProps()},"VLabel"),VLabel=genericComponent()({name:"VLabel",props:makeVLabelProps(),setup(n,r){let{slots:_}=r;return useRender(()=>createVNode("label",{class:["v-label",{"v-label--clickable":!!n.onClick},n.class],style:n.style,onClick:n.onClick},[n.text,_.default?.()])),{}}}),VSelectionControlGroupSymbol=Symbol.for("vuetify:selection-control-group"),makeSelectionControlGroupProps=propsFactory({color:String,disabled:{type:Boolean,default:null},defaultsTarget:String,error:Boolean,id:String,inline:Boolean,falseIcon:IconValue,trueIcon:IconValue,ripple:{type:[Boolean,Object],default:!0},multiple:{type:Boolean,default:null},name:String,readonly:{type:Boolean,default:null},modelValue:null,type:String,valueComparator:{type:Function,default:deepEqual$2},...makeComponentProps(),...makeDensityProps(),...makeThemeProps()},"SelectionControlGroup"),makeVSelectionControlGroupProps=propsFactory({...makeSelectionControlGroupProps({defaultsTarget:"VSelectionControl"})},"VSelectionControlGroup"),VSelectionControlGroup=genericComponent()({name:"VSelectionControlGroup",props:makeVSelectionControlGroupProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),E=getUid(),x=computed(()=>n.id||`v-selection-control-group-${E}`),T=computed(()=>n.name||x.value),C=new Set;return provide(VSelectionControlGroupSymbol,{modelValue:S,forceUpdate:()=>{C.forEach(I=>I())},onForceUpdate:I=>{C.add(I),onScopeDispose(()=>{C.delete(I)})}}),provideDefaults({[n.defaultsTarget]:{color:toRef(n,"color"),disabled:toRef(n,"disabled"),density:toRef(n,"density"),error:toRef(n,"error"),inline:toRef(n,"inline"),modelValue:S,multiple:computed(()=>!!n.multiple||n.multiple==null&&Array.isArray(S.value)),name:T,falseIcon:toRef(n,"falseIcon"),trueIcon:toRef(n,"trueIcon"),readonly:toRef(n,"readonly"),ripple:toRef(n,"ripple"),type:toRef(n,"type"),valueComparator:toRef(n,"valueComparator")}}),useRender(()=>createVNode("div",{class:["v-selection-control-group",{"v-selection-control-group--inline":n.inline},n.class],style:n.style,role:n.type==="radio"?"radiogroup":void 0},[_.default?.()])),{}}}),makeVSelectionControlProps=propsFactory({label:String,baseColor:String,trueValue:null,falseValue:null,value:null,...makeComponentProps(),...makeSelectionControlGroupProps()},"VSelectionControl");function useSelectionControl(n){const r=inject$1(VSelectionControlGroupSymbol,void 0),{densityClasses:_}=useDensity(n),S=useProxiedModel(n,"modelValue"),E=computed(()=>n.trueValue!==void 0?n.trueValue:n.value!==void 0?n.value:!0),x=computed(()=>n.falseValue!==void 0?n.falseValue:!1),T=computed(()=>!!n.multiple||n.multiple==null&&Array.isArray(S.value)),C=computed({get(){const O=r?r.modelValue.value:S.value;return T.value?wrapInArray(O).some(M=>n.valueComparator(M,E.value)):n.valueComparator(O,E.value)},set(O){if(n.readonly)return;const M=O?E.value:x.value;let L=M;T.value&&(L=O?[...wrapInArray(S.value),M]:wrapInArray(S.value).filter(F=>!n.valueComparator(F,E.value))),r?r.modelValue.value=L:S.value=L}}),{textColorClasses:I,textColorStyles:B}=useTextColor(computed(()=>{if(!(n.error||n.disabled))return C.value?n.color:n.baseColor})),{backgroundColorClasses:A,backgroundColorStyles:D}=useBackgroundColor(computed(()=>C.value&&!n.error&&!n.disabled?n.color:n.baseColor)),N=computed(()=>C.value?n.trueIcon:n.falseIcon);return{group:r,densityClasses:_,trueValue:E,falseValue:x,model:C,textColorClasses:I,textColorStyles:B,backgroundColorClasses:A,backgroundColorStyles:D,icon:N}}const VSelectionControl=genericComponent()({name:"VSelectionControl",directives:{Ripple},inheritAttrs:!1,props:makeVSelectionControlProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const{group:E,densityClasses:x,icon:T,model:C,textColorClasses:I,textColorStyles:B,backgroundColorClasses:A,backgroundColorStyles:D,trueValue:N}=useSelectionControl(n),O=getUid(),M=shallowRef(!1),L=shallowRef(!1),F=ref$2(),U=computed(()=>n.id||`input-${O}`),j=computed(()=>!n.disabled&&!n.readonly);E?.onForceUpdate(()=>{F.value&&(F.value.checked=C.value)});function z(Z){j.value&&(M.value=!0,matchesSelector(Z.target,":focus-visible")!==!1&&(L.value=!0))}function H(){M.value=!1,L.value=!1}function Q(Z){Z.stopPropagation()}function J(Z){if(!j.value){F.value&&(F.value.checked=C.value);return}n.readonly&&E&&nextTick$2(()=>E.forceUpdate()),C.value=Z.target.checked}return useRender(()=>{const Z=S.label?S.label({label:n.label,props:{for:U.value}}):n.label,[re,ie]=filterInputAttrs(_),pe=createVNode("input",mergeProps({ref:F,checked:C.value,disabled:!!n.disabled,id:U.value,onBlur:H,onFocus:z,onInput:J,"aria-disabled":!!n.disabled,"aria-label":n.label,type:n.type,value:N.value,name:n.name,"aria-checked":n.type==="checkbox"?C.value:void 0},ie),null);return createVNode("div",mergeProps({class:["v-selection-control",{"v-selection-control--dirty":C.value,"v-selection-control--disabled":n.disabled,"v-selection-control--error":n.error,"v-selection-control--focused":M.value,"v-selection-control--focus-visible":L.value,"v-selection-control--inline":n.inline},x.value,n.class]},re,{style:n.style}),[createVNode("div",{class:["v-selection-control__wrapper",I.value],style:B.value},[S.default?.({backgroundColorClasses:A,backgroundColorStyles:D}),withDirectives(createVNode("div",{class:["v-selection-control__input"]},[S.input?.({model:C,textColorClasses:I,textColorStyles:B,backgroundColorClasses:A,backgroundColorStyles:D,inputNode:pe,icon:T.value,props:{onFocus:z,onBlur:H,id:U.value}})??createVNode(Fragment,null,[T.value&&createVNode(VIcon,{key:"icon",icon:T.value},null),pe])]),[[resolveDirective("ripple"),n.ripple&&[!n.disabled&&!n.readonly,null,["center","circle"]]]])]),Z&&createVNode(VLabel,{for:U.value,onClick:Q},{default:()=>[Z]})])}),{isFocused:M,input:F}}}),makeVCheckboxBtnProps=propsFactory({indeterminate:Boolean,indeterminateIcon:{type:IconValue,default:"$checkboxIndeterminate"},...makeVSelectionControlProps({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),VCheckboxBtn=genericComponent()({name:"VCheckboxBtn",props:makeVCheckboxBtnProps(),emits:{"update:modelValue":n=>!0,"update:indeterminate":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"indeterminate"),E=useProxiedModel(n,"modelValue");function x(I){S.value&&(S.value=!1)}const T=computed(()=>S.value?n.indeterminateIcon:n.falseIcon),C=computed(()=>S.value?n.indeterminateIcon:n.trueIcon);return useRender(()=>{const I=omit(VSelectionControl.filterProps(n),["modelValue"]);return createVNode(VSelectionControl,mergeProps(I,{modelValue:E.value,"onUpdate:modelValue":[B=>E.value=B,x],class:["v-checkbox-btn",n.class],style:n.style,type:"checkbox",falseIcon:T.value,trueIcon:C.value,"aria-checked":S.value?"mixed":void 0}),_)}),{}}});function useInputIcon(n){const{t:r}=useLocale();function _(S){let{name:E}=S;const x={prepend:"prependAction",prependInner:"prependAction",append:"appendAction",appendInner:"appendAction",clear:"clear"}[E],T=n[`onClick:${E}`],C=T&&x?r(`$vuetify.input.${x}`,n.label??""):void 0;return createVNode(VIcon,{icon:n[`${E}Icon`],"aria-label":C,onClick:T},null)}return{InputIcon:_}}const makeVMessagesProps=propsFactory({active:Boolean,color:String,messages:{type:[Array,String],default:()=>[]},...makeComponentProps(),...makeTransitionProps({transition:{component:VSlideYTransition,leaveAbsolute:!0,group:!0}})},"VMessages"),VMessages=genericComponent()({name:"VMessages",props:makeVMessagesProps(),setup(n,r){let{slots:_}=r;const S=computed(()=>wrapInArray(n.messages)),{textColorClasses:E,textColorStyles:x}=useTextColor(computed(()=>n.color));return useRender(()=>createVNode(MaybeTransition,{transition:n.transition,tag:"div",class:["v-messages",E.value,n.class],style:[x.value,n.style],role:"alert","aria-live":"polite"},{default:()=>[n.active&&S.value.map((T,C)=>createVNode("div",{class:"v-messages__message",key:`${C}-${S.value}`},[_.message?_.message({message:T}):T]))]})),{}}}),makeFocusProps=propsFactory({focused:Boolean,"onUpdate:focused":EventProp()},"focus");function useFocus(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:getCurrentInstanceName();const _=useProxiedModel(n,"focused"),S=computed(()=>({[`${r}--focused`]:_.value}));function E(){_.value=!0}function x(){_.value=!1}return{focusClasses:S,isFocused:_,focus:E,blur:x}}const FormKey=Symbol.for("vuetify:form"),makeFormProps=propsFactory({disabled:Boolean,fastFail:Boolean,readonly:Boolean,modelValue:{type:Boolean,default:null},validateOn:{type:String,default:"input"}},"form");function createForm(n){const r=useProxiedModel(n,"modelValue"),_=computed(()=>n.disabled),S=computed(()=>n.readonly),E=shallowRef(!1),x=ref$2([]),T=ref$2([]);async function C(){const A=[];let D=!0;T.value=[],E.value=!0;for(const N of x.value){const O=await N.validate();if(O.length>0&&(D=!1,A.push({id:N.id,errorMessages:O})),!D&&n.fastFail)break}return T.value=A,E.value=!1,{valid:D,errors:T.value}}function I(){x.value.forEach(A=>A.reset())}function B(){x.value.forEach(A=>A.resetValidation())}return watch(x,()=>{let A=0,D=0;const N=[];for(const O of x.value)O.isValid===!1?(D++,N.push({id:O.id,errorMessages:O.errorMessages})):O.isValid===!0&&A++;T.value=N,r.value=D>0?!1:A===x.value.length?!0:null},{deep:!0,flush:"post"}),provide(FormKey,{register:A=>{let{id:D,vm:N,validate:O,reset:M,resetValidation:L}=A;x.value.some(F=>F.id===D),x.value.push({id:D,validate:O,reset:M,resetValidation:L,vm:markRaw(N),isValid:null,errorMessages:[]})},unregister:A=>{x.value=x.value.filter(D=>D.id!==A)},update:(A,D,N)=>{const O=x.value.find(M=>M.id===A);O&&(O.isValid=D,O.errorMessages=N)},isDisabled:_,isReadonly:S,isValidating:E,isValid:r,items:x,validateOn:toRef(n,"validateOn")}),{errors:T,isDisabled:_,isReadonly:S,isValidating:E,isValid:r,items:x,validate:C,reset:I,resetValidation:B}}function useForm(){return inject$1(FormKey,null)}const makeValidationProps=propsFactory({disabled:{type:Boolean,default:null},error:Boolean,errorMessages:{type:[Array,String],default:()=>[]},maxErrors:{type:[Number,String],default:1},name:String,label:String,readonly:{type:Boolean,default:null},rules:{type:Array,default:()=>[]},modelValue:null,validateOn:String,validationValue:null,...makeFocusProps()},"validation");function useValidation(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:getCurrentInstanceName(),_=arguments.length>2&&arguments[2]!==void 0?arguments[2]:getUid();const S=useProxiedModel(n,"modelValue"),E=computed(()=>n.validationValue===void 0?S.value:n.validationValue),x=useForm(),T=ref$2([]),C=shallowRef(!0),I=computed(()=>!!(wrapInArray(S.value===""?null:S.value).length||wrapInArray(E.value===""?null:E.value).length)),B=computed(()=>!!(n.disabled??x?.isDisabled.value)),A=computed(()=>!!(n.readonly??x?.isReadonly.value)),D=computed(()=>n.errorMessages?.length?wrapInArray(n.errorMessages).concat(T.value).slice(0,Math.max(0,+n.maxErrors)):T.value),N=computed(()=>{let Q=(n.validateOn??x?.validateOn.value)||"input";Q==="lazy"&&(Q="input lazy"),Q==="eager"&&(Q="input eager");const J=new Set(Q?.split(" ")??[]);return{input:J.has("input"),blur:J.has("blur")||J.has("input")||J.has("invalid-input"),invalidInput:J.has("invalid-input"),lazy:J.has("lazy"),eager:J.has("eager")}}),O=computed(()=>n.error||n.errorMessages?.length?!1:n.rules.length?C.value?T.value.length||N.value.lazy?null:!0:!T.value.length:!0),M=shallowRef(!1),L=computed(()=>({[`${r}--error`]:O.value===!1,[`${r}--dirty`]:I.value,[`${r}--disabled`]:B.value,[`${r}--readonly`]:A.value})),F=getCurrentInstance("validation"),U=computed(()=>n.name??unref(_));onBeforeMount(()=>{x?.register({id:U.value,vm:F,validate:H,reset:j,resetValidation:z})}),onBeforeUnmount(()=>{x?.unregister(U.value)}),onMounted(async()=>{N.value.lazy||await H(!N.value.eager),x?.update(U.value,O.value,D.value)}),useToggleScope(()=>N.value.input||N.value.invalidInput&&O.value===!1,()=>{watch(E,()=>{if(E.value!=null)H();else if(n.focused){const Q=watch(()=>n.focused,J=>{J||H(),Q()})}})}),useToggleScope(()=>N.value.blur,()=>{watch(()=>n.focused,Q=>{Q||H()})}),watch([O,D],()=>{x?.update(U.value,O.value,D.value)});async function j(){S.value=null,await nextTick$2(),await z()}async function z(){C.value=!0,N.value.lazy?T.value=[]:await H(!N.value.eager)}async function H(){let Q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const J=[];M.value=!0;for(const Z of n.rules){if(J.length>=+(n.maxErrors??1))break;const ie=await(typeof Z=="function"?Z:()=>Z)(E.value);if(ie!==!0){if(ie!==!1&&typeof ie!="string"){console.warn(`${ie} is not a valid value. Rule functions must return boolean true or a string.`);continue}J.push(ie||"")}}return T.value=J,M.value=!1,C.value=Q,T.value}return{errorMessages:D,isDirty:I,isDisabled:B,isReadonly:A,isPristine:C,isValid:O,isValidating:M,reset:j,resetValidation:z,validate:H,validationClasses:L}}const makeVInputProps=propsFactory({id:String,appendIcon:IconValue,centerAffix:{type:Boolean,default:!0},prependIcon:IconValue,hideDetails:[Boolean,String],hideSpinButtons:Boolean,hint:String,persistentHint:Boolean,messages:{type:[Array,String],default:()=>[]},direction:{type:String,default:"horizontal",validator:n=>["horizontal","vertical"].includes(n)},"onClick:prepend":EventProp(),"onClick:append":EventProp(),...makeComponentProps(),...makeDensityProps(),...only(makeDimensionProps(),["maxWidth","minWidth","width"]),...makeThemeProps(),...makeValidationProps()},"VInput"),VInput=genericComponent()({name:"VInput",props:{...makeVInputProps()},emits:{"update:modelValue":n=>!0},setup(n,r){let{attrs:_,slots:S,emit:E}=r;const{densityClasses:x}=useDensity(n),{dimensionStyles:T}=useDimension(n),{themeClasses:C}=provideTheme(n),{rtlClasses:I}=useRtl(),{InputIcon:B}=useInputIcon(n),A=getUid(),D=computed(()=>n.id||`input-${A}`),N=computed(()=>`${D.value}-messages`),{errorMessages:O,isDirty:M,isDisabled:L,isReadonly:F,isPristine:U,isValid:j,isValidating:z,reset:H,resetValidation:Q,validate:J,validationClasses:Z}=useValidation(n,"v-input",D),re=computed(()=>({id:D,messagesId:N,isDirty:M,isDisabled:L,isReadonly:F,isPristine:U,isValid:j,isValidating:z,reset:H,resetValidation:Q,validate:J})),ie=computed(()=>n.errorMessages?.length||!U.value&&O.value.length?O.value:n.hint&&(n.persistentHint||n.focused)?n.hint:n.messages);return useRender(()=>{const pe=!!(S.prepend||n.prependIcon),ue=!!(S.append||n.appendIcon),W=ie.value.length>0,Y=!n.hideDetails||n.hideDetails==="auto"&&(W||!!S.details);return createVNode("div",{class:["v-input",`v-input--${n.direction}`,{"v-input--center-affix":n.centerAffix,"v-input--hide-spin-buttons":n.hideSpinButtons},x.value,C.value,I.value,Z.value,n.class],style:[T.value,n.style]},[pe&&createVNode("div",{key:"prepend",class:"v-input__prepend"},[S.prepend?.(re.value),n.prependIcon&&createVNode(B,{key:"prepend-icon",name:"prepend"},null)]),S.default&&createVNode("div",{class:"v-input__control"},[S.default?.(re.value)]),ue&&createVNode("div",{key:"append",class:"v-input__append"},[n.appendIcon&&createVNode(B,{key:"append-icon",name:"append"},null),S.append?.(re.value)]),Y&&createVNode("div",{class:"v-input__details"},[createVNode(VMessages,{id:N.value,active:W,messages:ie.value},{message:S.message}),S.details?.(re.value)])])}),{reset:H,resetValidation:Q,validate:J,isValid:j,errorMessages:O}}}),makeVCheckboxProps=propsFactory({...makeVInputProps(),...omit(makeVCheckboxBtnProps(),["inline"])},"VCheckbox"),VCheckbox=genericComponent()({name:"VCheckbox",inheritAttrs:!1,props:makeVCheckboxProps(),emits:{"update:modelValue":n=>!0,"update:focused":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const E=useProxiedModel(n,"modelValue"),{isFocused:x,focus:T,blur:C}=useFocus(n),I=getUid(),B=computed(()=>n.id||`checkbox-${I}`);return useRender(()=>{const[A,D]=filterInputAttrs(_),N=VInput.filterProps(n),O=VCheckboxBtn.filterProps(n);return createVNode(VInput,mergeProps({class:["v-checkbox",n.class]},A,N,{modelValue:E.value,"onUpdate:modelValue":M=>E.value=M,id:B.value,focused:x.value,style:n.style}),{...S,default:M=>{let{id:L,messagesId:F,isDisabled:U,isReadonly:j,isValid:z}=M;return createVNode(VCheckboxBtn,mergeProps(O,{id:L.value,"aria-describedby":F.value,disabled:U.value,readonly:j.value},D,{error:z.value===!1,modelValue:E.value,"onUpdate:modelValue":H=>E.value=H,onFocus:T,onBlur:C}),S)}})}),{}}}),GoToSymbol=Symbol.for("vuetify:goto");function genDefaults(){return{container:void 0,duration:300,layout:!1,offset:0,easing:"easeInOutCubic",patterns:{linear:n=>n,easeInQuad:n=>n**2,easeOutQuad:n=>n*(2-n),easeInOutQuad:n=>n<.5?2*n**2:-1+(4-2*n)*n,easeInCubic:n=>n**3,easeOutCubic:n=>--n**3+1,easeInOutCubic:n=>n<.5?4*n**3:(n-1)*(2*n-2)*(2*n-2)+1,easeInQuart:n=>n**4,easeOutQuart:n=>1- --n**4,easeInOutQuart:n=>n<.5?8*n**4:1-8*--n**4,easeInQuint:n=>n**5,easeOutQuint:n=>1+--n**5,easeInOutQuint:n=>n<.5?16*n**5:1+16*--n**5}}}function getContainer(n){return getTarget$1(n)??(document.scrollingElement||document.body)}function getTarget$1(n){return typeof n=="string"?document.querySelector(n):refElement(n)}function getOffset$2(n,r,_){if(typeof n=="number")return r&&_?-n:n;let S=getTarget$1(n),E=0;for(;S;)E+=r?S.offsetLeft:S.offsetTop,S=S.offsetParent;return E}function createGoTo(n,r){return{rtl:r.isRtl,options:mergeDeep(genDefaults(),n)}}async function scrollTo(n,r,_,S){const E=_?"scrollLeft":"scrollTop",x=mergeDeep(S?.options??genDefaults(),r),T=S?.rtl.value,C=(typeof n=="number"?n:getTarget$1(n))??0,I=x.container==="parent"&&C instanceof HTMLElement?C.parentElement:getContainer(x.container),B=typeof x.easing=="function"?x.easing:x.patterns[x.easing];if(!B)throw new TypeError(`Easing function "${x.easing}" not found.`);let A;if(typeof C=="number")A=getOffset$2(C,_,T);else if(A=getOffset$2(C,_,T)-getOffset$2(I,_,T),x.layout){const M=window.getComputedStyle(C).getPropertyValue("--v-layout-top");M&&(A-=parseInt(M,10))}A+=x.offset,A=clampTarget(I,A,!!T,!!_);const D=I[E]??0;if(A===D)return Promise.resolve(A);const N=performance.now();return new Promise(O=>requestAnimationFrame(function M(L){const U=(L-N)/x.duration,j=Math.floor(D+(A-D)*B(clamp(U,0,1)));if(I[E]=j,U>=1&&Math.abs(j-I[E])<10)return O(A);if(U>2)return O(I[E]);requestAnimationFrame(M)}))}function useGoTo(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const r=inject$1(GoToSymbol),{isRtl:_}=useRtl();if(!r)throw new Error("[Vuetify] Could not find injected goto instance");const S={...r,rtl:computed(()=>r.rtl.value||_.value)};async function E(x,T){return scrollTo(x,mergeDeep(n,T),!1,S)}return E.horizontal=async(x,T)=>scrollTo(x,mergeDeep(n,T),!0,S),E}function clampTarget(n,r,_,S){const{scrollWidth:E,scrollHeight:x}=n,[T,C]=n===document.scrollingElement?[window.innerWidth,window.innerHeight]:[n.offsetWidth,n.offsetHeight];let I,B;return S?_?(I=-(E-T),B=0):(I=0,B=E-T):(I=0,B=x+-C),Math.max(Math.min(r,B),I)}function calculateUpdatedTarget(n){let{selectedElement:r,containerElement:_,isRtl:S,isHorizontal:E}=n;const x=getOffsetSize(E,_),T=getScrollPosition(E,S,_),C=getOffsetSize(E,r),I=getOffsetPosition(E,r),B=C*.4;return T>I?I-B:T+xtypeof n=="boolean"||["always","desktop","mobile"].includes(n)},...makeComponentProps(),...makeDisplayProps({mobile:null}),...makeTagProps(),...makeGroupProps({selectedClass:"v-slide-group-item--active"})},"VSlideGroup"),VSlideGroup=genericComponent()({name:"VSlideGroup",props:makeVSlideGroupProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{isRtl:S}=useRtl(),{displayClasses:E,mobile:x}=useDisplay(n),T=useGroup(n,n.symbol),C=shallowRef(!1),I=shallowRef(0),B=shallowRef(0),A=shallowRef(0),D=computed(()=>n.direction==="horizontal"),{resizeRef:N,contentRect:O}=useResizeObserver(),{resizeRef:M,contentRect:L}=useResizeObserver(),F=useGoTo(),U=computed(()=>({container:N.el,duration:200,easing:"easeOutQuart"})),j=computed(()=>T.selected.value.length?T.items.value.findIndex(se=>se.id===T.selected.value[0]):-1),z=computed(()=>T.selected.value.length?T.items.value.findIndex(se=>se.id===T.selected.value[T.selected.value.length-1]):-1);if(IN_BROWSER){let se=-1;watch(()=>[T.selected.value,O.value,L.value,D.value],()=>{cancelAnimationFrame(se),se=requestAnimationFrame(()=>{if(O.value&&L.value){const te=D.value?"width":"height";B.value=O.value[te],A.value=L.value[te],C.value=B.value+1=0&&M.el){const te=M.el.children[z.value];Q(te,n.centerActive)}})})}const H=shallowRef(!1);function Q(se,te){let X=0;te?X=calculateCenteredTarget({containerElement:N.el,isHorizontal:D.value,selectedElement:se}):X=calculateUpdatedTarget({containerElement:N.el,isHorizontal:D.value,isRtl:S.value,selectedElement:se}),J(X)}function J(se){if(!IN_BROWSER||!N.el)return;const te=getOffsetSize(D.value,N.el),X=getScrollPosition(D.value,S.value,N.el);if(!(getScrollSize(D.value,N.el)<=te||Math.abs(se-X)<16)){if(D.value&&S.value&&N.el){const{scrollWidth:le,offsetWidth:ye}=N.el;se=le-ye-se}D.value?F.horizontal(se,U.value):F(se,U.value)}}function Z(se){const{scrollTop:te,scrollLeft:X}=se.target;I.value=D.value?X:te}function re(se){if(H.value=!0,!(!C.value||!M.el)){for(const te of se.composedPath())for(const X of M.el.children)if(X===te){Q(X);return}}}function ie(se){H.value=!1}let pe=!1;function ue(se){!pe&&!H.value&&!(se.relatedTarget&&M.el?.contains(se.relatedTarget))&&q(),pe=!1}function W(){pe=!0}function Y(se){if(!M.el)return;function te(X){se.preventDefault(),q(X)}D.value?se.key==="ArrowRight"?te(S.value?"prev":"next"):se.key==="ArrowLeft"&&te(S.value?"next":"prev"):se.key==="ArrowDown"?te("next"):se.key==="ArrowUp"&&te("prev"),se.key==="Home"?te("first"):se.key==="End"&&te("last")}function q(se){if(!M.el)return;let te;if(!se)te=focusableChildren(M.el)[0];else if(se==="next"){if(te=M.el.querySelector(":focus")?.nextElementSibling,!te)return q("first")}else if(se==="prev"){if(te=M.el.querySelector(":focus")?.previousElementSibling,!te)return q("last")}else se==="first"?te=M.el.firstElementChild:se==="last"&&(te=M.el.lastElementChild);te&&te.focus({preventScroll:!0})}function G(se){const te=D.value&&S.value?-1:1,X=(se==="prev"?-te:te)*B.value;let ce=I.value+X;if(D.value&&S.value&&N.el){const{scrollWidth:le,offsetWidth:ye}=N.el;ce+=le-ye}J(ce)}const ne=computed(()=>({next:T.next,prev:T.prev,select:T.select,isSelected:T.isSelected})),ee=computed(()=>{switch(n.showArrows){case"always":return!0;case"desktop":return!x.value;case!0:return C.value||Math.abs(I.value)>0;case"mobile":return x.value||C.value||Math.abs(I.value)>0;default:return!x.value&&(C.value||Math.abs(I.value)>0)}}),oe=computed(()=>Math.abs(I.value)>1),ae=computed(()=>{if(!N.value)return!1;const se=getScrollSize(D.value,N.el),te=getClientSize(D.value,N.el);return se-te-Math.abs(I.value)>1});return useRender(()=>createVNode(n.tag,{class:["v-slide-group",{"v-slide-group--vertical":!D.value,"v-slide-group--has-affixes":ee.value,"v-slide-group--is-overflowing":C.value},E.value,n.class],style:n.style,tabindex:H.value||T.selected.value.length?-1:0,onFocus:ue},{default:()=>[ee.value&&createVNode("div",{key:"prev",class:["v-slide-group__prev",{"v-slide-group__prev--disabled":!oe.value}],onMousedown:W,onClick:()=>oe.value&&G("prev")},[_.prev?.(ne.value)??createVNode(VFadeTransition,null,{default:()=>[createVNode(VIcon,{icon:S.value?n.nextIcon:n.prevIcon},null)]})]),createVNode("div",{key:"container",ref:N,class:"v-slide-group__container",onScroll:Z},[createVNode("div",{ref:M,class:"v-slide-group__content",onFocusin:re,onFocusout:ie,onKeydown:Y},[_.default?.(ne.value)])]),ee.value&&createVNode("div",{key:"next",class:["v-slide-group__next",{"v-slide-group__next--disabled":!ae.value}],onMousedown:W,onClick:()=>ae.value&&G("next")},[_.next?.(ne.value)??createVNode(VFadeTransition,null,{default:()=>[createVNode(VIcon,{icon:S.value?n.prevIcon:n.nextIcon},null)]})])]})),{selected:T.selected,scrollTo:G,scrollOffset:I,focus:q,hasPrev:oe,hasNext:ae}}}),VChipGroupSymbol=Symbol.for("vuetify:v-chip-group"),makeVChipGroupProps=propsFactory({column:Boolean,filter:Boolean,valueComparator:{type:Function,default:deepEqual$2},...makeVSlideGroupProps(),...makeComponentProps(),...makeGroupProps({selectedClass:"v-chip--selected"}),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:"tonal"})},"VChipGroup"),VChipGroup=genericComponent()({name:"VChipGroup",props:makeVChipGroupProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n),{isSelected:E,select:x,next:T,prev:C,selected:I}=useGroup(n,VChipGroupSymbol);return provideDefaults({VChip:{color:toRef(n,"color"),disabled:toRef(n,"disabled"),filter:toRef(n,"filter"),variant:toRef(n,"variant")}}),useRender(()=>{const B=VSlideGroup.filterProps(n);return createVNode(VSlideGroup,mergeProps(B,{class:["v-chip-group",{"v-chip-group--column":n.column},S.value,n.class],style:n.style}),{default:()=>[_.default?.({isSelected:E,select:x,next:T,prev:C,selected:I.value})]})}),{}}}),makeVChipProps=propsFactory({activeClass:String,appendAvatar:String,appendIcon:IconValue,closable:Boolean,closeIcon:{type:IconValue,default:"$delete"},closeLabel:{type:String,default:"$vuetify.close"},draggable:Boolean,filter:Boolean,filterIcon:{type:String,default:"$complete"},label:Boolean,link:{type:Boolean,default:void 0},pill:Boolean,prependAvatar:String,prependIcon:IconValue,ripple:{type:[Boolean,Object],default:!0},text:String,modelValue:{type:Boolean,default:!0},onClick:EventProp(),onClickOnce:EventProp(),...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeElevationProps(),...makeGroupItemProps(),...makeRoundedProps(),...makeRouterProps(),...makeSizeProps(),...makeTagProps({tag:"span"}),...makeThemeProps(),...makeVariantProps({variant:"tonal"})},"VChip"),VChip=genericComponent()({name:"VChip",directives:{Ripple},props:makeVChipProps(),emits:{"click:close":n=>!0,"update:modelValue":n=>!0,"group:selected":n=>!0,click:n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{t:x}=useLocale(),{borderClasses:T}=useBorder(n),{colorClasses:C,colorStyles:I,variantClasses:B}=useVariant(n),{densityClasses:A}=useDensity(n),{elevationClasses:D}=useElevation(n),{roundedClasses:N}=useRounded(n),{sizeClasses:O}=useSize(n),{themeClasses:M}=provideTheme(n),L=useProxiedModel(n,"modelValue"),F=useGroupItem(n,VChipGroupSymbol,!1),U=useLink$1(n,_),j=computed(()=>n.link!==!1&&U.isLink.value),z=computed(()=>!n.disabled&&n.link!==!1&&(!!F||n.link||U.isClickable.value)),H=computed(()=>({"aria-label":x(n.closeLabel),onClick(Z){Z.preventDefault(),Z.stopPropagation(),L.value=!1,S("click:close",Z)}}));function Q(Z){S("click",Z),z.value&&(U.navigate?.(Z),F?.toggle())}function J(Z){(Z.key==="Enter"||Z.key===" ")&&(Z.preventDefault(),Q(Z))}return()=>{const Z=U.isLink.value?"a":n.tag,re=!!(n.appendIcon||n.appendAvatar),ie=!!(re||E.append),pe=!!(E.close||n.closable),ue=!!(E.filter||n.filter)&&F,W=!!(n.prependIcon||n.prependAvatar),Y=!!(W||E.prepend),q=!F||F.isSelected.value;return L.value&&withDirectives(createVNode(Z,mergeProps({class:["v-chip",{"v-chip--disabled":n.disabled,"v-chip--label":n.label,"v-chip--link":z.value,"v-chip--filter":ue,"v-chip--pill":n.pill},M.value,T.value,q?C.value:void 0,A.value,D.value,N.value,O.value,B.value,F?.selectedClass.value,n.class],style:[q?I.value:void 0,n.style],disabled:n.disabled||void 0,draggable:n.draggable,tabindex:z.value?0:void 0,onClick:Q,onKeydown:z.value&&!j.value&&J},U.linkProps),{default:()=>[genOverlays(z.value,"v-chip"),ue&&createVNode(VExpandXTransition,{key:"filter"},{default:()=>[withDirectives(createVNode("div",{class:"v-chip__filter"},[E.filter?createVNode(VDefaultsProvider,{key:"filter-defaults",disabled:!n.filterIcon,defaults:{VIcon:{icon:n.filterIcon}}},E.filter):createVNode(VIcon,{key:"filter-icon",icon:n.filterIcon},null)]),[[vShow,F.isSelected.value]])]}),Y&&createVNode("div",{key:"prepend",class:"v-chip__prepend"},[E.prepend?createVNode(VDefaultsProvider,{key:"prepend-defaults",disabled:!W,defaults:{VAvatar:{image:n.prependAvatar,start:!0},VIcon:{icon:n.prependIcon,start:!0}}},E.prepend):createVNode(Fragment,null,[n.prependIcon&&createVNode(VIcon,{key:"prepend-icon",icon:n.prependIcon,start:!0},null),n.prependAvatar&&createVNode(VAvatar,{key:"prepend-avatar",image:n.prependAvatar,start:!0},null)])]),createVNode("div",{class:"v-chip__content","data-no-activator":""},[E.default?.({isSelected:F?.isSelected.value,selectedClass:F?.selectedClass.value,select:F?.select,toggle:F?.toggle,value:F?.value.value,disabled:n.disabled})??n.text]),ie&&createVNode("div",{key:"append",class:"v-chip__append"},[E.append?createVNode(VDefaultsProvider,{key:"append-defaults",disabled:!re,defaults:{VAvatar:{end:!0,image:n.appendAvatar},VIcon:{end:!0,icon:n.appendIcon}}},E.append):createVNode(Fragment,null,[n.appendIcon&&createVNode(VIcon,{key:"append-icon",end:!0,icon:n.appendIcon},null),n.appendAvatar&&createVNode(VAvatar,{key:"append-avatar",end:!0,image:n.appendAvatar},null)])]),pe&&createVNode("button",mergeProps({key:"close",class:"v-chip__close",type:"button"},H.value),[E.close?createVNode(VDefaultsProvider,{key:"close-defaults",defaults:{VIcon:{icon:n.closeIcon,size:"x-small"}}},E.close):createVNode(VIcon,{key:"close-icon",icon:n.closeIcon,size:"x-small"},null)])]}),[[resolveDirective("ripple"),z.value&&n.ripple,null]])}}});function elementToViewport(n,r){return{x:n.x+r.x,y:n.y+r.y}}function getOffset$1(n,r){return{x:n.x-r.x,y:n.y-r.y}}function anchorToPoint(n,r){if(n.side==="top"||n.side==="bottom"){const{side:_,align:S}=n,E=S==="left"?0:S==="center"?r.width/2:S==="right"?r.width:S,x=_==="top"?0:_==="bottom"?r.height:_;return elementToViewport({x:E,y:x},r)}else if(n.side==="left"||n.side==="right"){const{side:_,align:S}=n,E=_==="left"?0:_==="right"?r.width:_,x=S==="top"?0:S==="center"?r.height/2:S==="bottom"?r.height:S;return elementToViewport({x:E,y:x},r)}return elementToViewport({x:r.width/2,y:r.height/2},r)}const locationStrategies={static:staticLocationStrategy,connected:connectedLocationStrategy},makeLocationStrategyProps=propsFactory({locationStrategy:{type:[String,Function],default:"static",validator:n=>typeof n=="function"||n in locationStrategies},location:{type:String,default:"bottom"},origin:{type:String,default:"auto"},offset:[Number,String,Array]},"VOverlay-location-strategies");function useLocationStrategies(n,r){const _=ref$2({}),S=ref$2();IN_BROWSER&&useToggleScope(()=>!!(r.isActive.value&&n.locationStrategy),x=>{watch(()=>n.locationStrategy,x),onScopeDispose(()=>{window.removeEventListener("resize",E),S.value=void 0}),window.addEventListener("resize",E,{passive:!0}),typeof n.locationStrategy=="function"?S.value=n.locationStrategy(r,n,_)?.updateLocation:S.value=locationStrategies[n.locationStrategy](r,n,_)?.updateLocation});function E(x){S.value?.(x)}return{contentStyles:_,updateLocation:S}}function staticLocationStrategy(){}function getIntrinsicSize(n,r){const _=nullifyTransforms(n);return r?_.x+=parseFloat(n.style.right||0):_.x-=parseFloat(n.style.left||0),_.y-=parseFloat(n.style.top||0),_}function connectedLocationStrategy(n,r,_){(Array.isArray(n.target.value)||isFixedPosition(n.target.value))&&Object.assign(_.value,{position:"fixed",top:0,[n.isRtl.value?"right":"left"]:0});const{preferredAnchor:E,preferredOrigin:x}=destructComputed(()=>{const M=parseAnchor(r.location,n.isRtl.value),L=r.origin==="overlap"?M:r.origin==="auto"?flipSide(M):parseAnchor(r.origin,n.isRtl.value);return M.side===L.side&&M.align===flipAlign(L).align?{preferredAnchor:flipCorner(M),preferredOrigin:flipCorner(L)}:{preferredAnchor:M,preferredOrigin:L}}),[T,C,I,B]=["minWidth","minHeight","maxWidth","maxHeight"].map(M=>computed(()=>{const L=parseFloat(r[M]);return isNaN(L)?1/0:L})),A=computed(()=>{if(Array.isArray(r.offset))return r.offset;if(typeof r.offset=="string"){const M=r.offset.split(" ").map(parseFloat);return M.length<2&&M.push(0),M}return typeof r.offset=="number"?[r.offset,0]:[0,0]});let D=!1;const N=new ResizeObserver(()=>{D&&O()});watch([n.target,n.contentEl],(M,L)=>{let[F,U]=M,[j,z]=L;j&&!Array.isArray(j)&&N.unobserve(j),F&&!Array.isArray(F)&&N.observe(F),z&&N.unobserve(z),U&&N.observe(U)},{immediate:!0}),onScopeDispose(()=>{N.disconnect()});function O(){if(D=!1,requestAnimationFrame(()=>D=!0),!n.target.value||!n.contentEl.value)return;const M=getTargetBox(n.target.value),L=getIntrinsicSize(n.contentEl.value,n.isRtl.value),F=getScrollParents(n.contentEl.value),U=12;F.length||(F.push(document.documentElement),n.contentEl.value.style.top&&n.contentEl.value.style.left||(L.x-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-x")||0),L.y-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-y")||0)));const j=F.reduce((ue,W)=>{const Y=W.getBoundingClientRect(),q=new Box({x:W===document.documentElement?0:Y.x,y:W===document.documentElement?0:Y.y,width:W.clientWidth,height:W.clientHeight});return ue?new Box({x:Math.max(ue.left,q.left),y:Math.max(ue.top,q.top),width:Math.min(ue.right,q.right)-Math.max(ue.left,q.left),height:Math.min(ue.bottom,q.bottom)-Math.max(ue.top,q.top)}):q},void 0);j.x+=U,j.y+=U,j.width-=U*2,j.height-=U*2;let z={anchor:E.value,origin:x.value};function H(ue){const W=new Box(L),Y=anchorToPoint(ue.anchor,M),q=anchorToPoint(ue.origin,W);let{x:G,y:ne}=getOffset$1(Y,q);switch(ue.anchor.side){case"top":ne-=A.value[0];break;case"bottom":ne+=A.value[0];break;case"left":G-=A.value[0];break;case"right":G+=A.value[0];break}switch(ue.anchor.align){case"top":ne-=A.value[1];break;case"bottom":ne+=A.value[1];break;case"left":G-=A.value[1];break;case"right":G+=A.value[1];break}return W.x+=G,W.y+=ne,W.width=Math.min(W.width,I.value),W.height=Math.min(W.height,B.value),{overflows:getOverflow(W,j),x:G,y:ne}}let Q=0,J=0;const Z={x:0,y:0},re={x:!1,y:!1};let ie=-1;for(;!(ie++>10);){const{x:ue,y:W,overflows:Y}=H(z);Q+=ue,J+=W,L.x+=ue,L.y+=W;{const q=getAxis(z.anchor),G=Y.x.before||Y.x.after,ne=Y.y.before||Y.y.after;let ee=!1;if(["x","y"].forEach(oe=>{if(oe==="x"&&G&&!re.x||oe==="y"&&ne&&!re.y){const ae={anchor:{...z.anchor},origin:{...z.origin}},se=oe==="x"?q==="y"?flipAlign:flipSide:q==="y"?flipSide:flipAlign;ae.anchor=se(ae.anchor),ae.origin=se(ae.origin);const{overflows:te}=H(ae);(te[oe].before<=Y[oe].before&&te[oe].after<=Y[oe].after||te[oe].before+te[oe].after<(Y[oe].before+Y[oe].after)/2)&&(z=ae,ee=re[oe]=!0)}}),ee)continue}Y.x.before&&(Q+=Y.x.before,L.x+=Y.x.before),Y.x.after&&(Q-=Y.x.after,L.x-=Y.x.after),Y.y.before&&(J+=Y.y.before,L.y+=Y.y.before),Y.y.after&&(J-=Y.y.after,L.y-=Y.y.after);{const q=getOverflow(L,j);Z.x=j.width-q.x.before-q.x.after,Z.y=j.height-q.y.before-q.y.after,Q+=q.x.before,L.x+=q.x.before,J+=q.y.before,L.y+=q.y.before}break}const pe=getAxis(z.anchor);return Object.assign(_.value,{"--v-overlay-anchor-origin":`${z.anchor.side} ${z.anchor.align}`,transformOrigin:`${z.origin.side} ${z.origin.align}`,top:convertToUnit(pixelRound(J)),left:n.isRtl.value?void 0:convertToUnit(pixelRound(Q)),right:n.isRtl.value?convertToUnit(pixelRound(-Q)):void 0,minWidth:convertToUnit(pe==="y"?Math.min(T.value,M.width):T.value),maxWidth:convertToUnit(pixelCeil(clamp(Z.x,T.value===1/0?0:T.value,I.value))),maxHeight:convertToUnit(pixelCeil(clamp(Z.y,C.value===1/0?0:C.value,B.value)))}),{available:Z,contentBox:L}}return watch(()=>[E.value,x.value,r.offset,r.minWidth,r.minHeight,r.maxWidth,r.maxHeight],()=>O()),nextTick$2(()=>{const M=O();if(!M)return;const{available:L,contentBox:F}=M;F.height>L.y&&requestAnimationFrame(()=>{O(),requestAnimationFrame(()=>{O()})})}),{updateLocation:O}}function pixelRound(n){return Math.round(n*devicePixelRatio)/devicePixelRatio}function pixelCeil(n){return Math.ceil(n*devicePixelRatio)/devicePixelRatio}let clean=!0;const frames=[];function requestNewFrame(n){!clean||frames.length?(frames.push(n),run()):(clean=!1,n(),run())}let raf=-1;function run(){cancelAnimationFrame(raf),raf=requestAnimationFrame(()=>{const n=frames.shift();n&&n(),frames.length?run():clean=!0})}const scrollStrategies={none:null,close:closeScrollStrategy,block:blockScrollStrategy,reposition:repositionScrollStrategy},makeScrollStrategyProps=propsFactory({scrollStrategy:{type:[String,Function],default:"block",validator:n=>typeof n=="function"||n in scrollStrategies}},"VOverlay-scroll-strategies");function useScrollStrategies(n,r){if(!IN_BROWSER)return;let _;watchEffect(async()=>{_?.stop(),r.isActive.value&&n.scrollStrategy&&(_=effectScope(),await new Promise(S=>setTimeout(S)),_.active&&_.run(()=>{typeof n.scrollStrategy=="function"?n.scrollStrategy(r,n,_):scrollStrategies[n.scrollStrategy]?.(r,n,_)}))}),onScopeDispose(()=>{_?.stop()})}function closeScrollStrategy(n){function r(_){n.isActive.value=!1}bindScroll(n.targetEl.value??n.contentEl.value,r)}function blockScrollStrategy(n,r){const _=n.root.value?.offsetParent,S=[...new Set([...getScrollParents(n.targetEl.value,r.contained?_:void 0),...getScrollParents(n.contentEl.value,r.contained?_:void 0)])].filter(T=>!T.classList.contains("v-overlay-scroll-blocked")),E=window.innerWidth-document.documentElement.offsetWidth,x=(T=>hasScrollbar(T)&&T)(_||document.documentElement);x&&n.root.value.classList.add("v-overlay--scroll-blocked"),S.forEach((T,C)=>{T.style.setProperty("--v-body-scroll-x",convertToUnit(-T.scrollLeft)),T.style.setProperty("--v-body-scroll-y",convertToUnit(-T.scrollTop)),T!==document.documentElement&&T.style.setProperty("--v-scrollbar-offset",convertToUnit(E)),T.classList.add("v-overlay-scroll-blocked")}),onScopeDispose(()=>{S.forEach((T,C)=>{const I=parseFloat(T.style.getPropertyValue("--v-body-scroll-x")),B=parseFloat(T.style.getPropertyValue("--v-body-scroll-y")),A=T.style.scrollBehavior;T.style.scrollBehavior="auto",T.style.removeProperty("--v-body-scroll-x"),T.style.removeProperty("--v-body-scroll-y"),T.style.removeProperty("--v-scrollbar-offset"),T.classList.remove("v-overlay-scroll-blocked"),T.scrollLeft=-I,T.scrollTop=-B,T.style.scrollBehavior=A}),x&&n.root.value.classList.remove("v-overlay--scroll-blocked")})}function repositionScrollStrategy(n,r,_){let S=!1,E=-1,x=-1;function T(C){requestNewFrame(()=>{const I=performance.now();n.updateLocation.value?.(C),S=(performance.now()-I)/(1e3/60)>2})}x=(typeof requestIdleCallback>"u"?C=>C():requestIdleCallback)(()=>{_.run(()=>{bindScroll(n.targetEl.value??n.contentEl.value,C=>{S?(cancelAnimationFrame(E),E=requestAnimationFrame(()=>{E=requestAnimationFrame(()=>{T(C)})})):T(C)})})}),onScopeDispose(()=>{typeof cancelIdleCallback<"u"&&cancelIdleCallback(x),cancelAnimationFrame(E)})}function bindScroll(n,r){const _=[document,...getScrollParents(n)];_.forEach(S=>{S.addEventListener("scroll",r,{passive:!0})}),onScopeDispose(()=>{_.forEach(S=>{S.removeEventListener("scroll",r)})})}const VMenuSymbol=Symbol.for("vuetify:v-menu"),makeDelayProps=propsFactory({closeDelay:[Number,String],openDelay:[Number,String]},"delay");function useDelay(n,r){let _=()=>{};function S(T){_?.();const C=Number(T?n.openDelay:n.closeDelay);return new Promise(I=>{_=defer(C,()=>{r?.(T),I(T)})})}function E(){return S(!0)}function x(){return S(!1)}return{clearDelay:_,runOpenDelay:E,runCloseDelay:x}}const makeActivatorProps=propsFactory({target:[String,Object],activator:[String,Object],activatorProps:{type:Object,default:()=>({})},openOnClick:{type:Boolean,default:void 0},openOnHover:Boolean,openOnFocus:{type:Boolean,default:void 0},closeOnContentClick:Boolean,...makeDelayProps()},"VOverlay-activator");function useActivator(n,r){let{isActive:_,isTop:S,contentEl:E}=r;const x=getCurrentInstance("useActivator"),T=ref$2();let C=!1,I=!1,B=!0;const A=computed(()=>n.openOnFocus||n.openOnFocus==null&&n.openOnHover),D=computed(()=>n.openOnClick||n.openOnClick==null&&!n.openOnHover&&!A.value),{runOpenDelay:N,runCloseDelay:O}=useDelay(n,re=>{re===(n.openOnHover&&C||A.value&&I)&&!(n.openOnHover&&_.value&&!S.value)&&(_.value!==re&&(B=!0),_.value=re)}),M=ref$2(),L={onClick:re=>{re.stopPropagation(),T.value=re.currentTarget||re.target,_.value||(M.value=[re.clientX,re.clientY]),_.value=!_.value},onMouseenter:re=>{re.sourceCapabilities?.firesTouchEvents||(C=!0,T.value=re.currentTarget||re.target,N())},onMouseleave:re=>{C=!1,O()},onFocus:re=>{matchesSelector(re.target,":focus-visible")!==!1&&(I=!0,re.stopPropagation(),T.value=re.currentTarget||re.target,N())},onBlur:re=>{I=!1,re.stopPropagation(),O()}},F=computed(()=>{const re={};return D.value&&(re.onClick=L.onClick),n.openOnHover&&(re.onMouseenter=L.onMouseenter,re.onMouseleave=L.onMouseleave),A.value&&(re.onFocus=L.onFocus,re.onBlur=L.onBlur),re}),U=computed(()=>{const re={};if(n.openOnHover&&(re.onMouseenter=()=>{C=!0,N()},re.onMouseleave=()=>{C=!1,O()}),A.value&&(re.onFocusin=()=>{I=!0,N()},re.onFocusout=()=>{I=!1,O()}),n.closeOnContentClick){const ie=inject$1(VMenuSymbol,null);re.onClick=()=>{_.value=!1,ie?.closeParents()}}return re}),j=computed(()=>{const re={};return n.openOnHover&&(re.onMouseenter=()=>{B&&(C=!0,B=!1,N())},re.onMouseleave=()=>{C=!1,O()}),re});watch(S,re=>{re&&(n.openOnHover&&!C&&(!A.value||!I)||A.value&&!I&&(!n.openOnHover||!C))&&!E.value?.contains(document.activeElement)&&(_.value=!1)}),watch(_,re=>{re||setTimeout(()=>{M.value=void 0})},{flush:"post"});const z=templateRef();watchEffect(()=>{z.value&&nextTick$2(()=>{T.value=z.el})});const H=templateRef(),Q=computed(()=>n.target==="cursor"&&M.value?M.value:H.value?H.el:getTarget(n.target,x)||T.value),J=computed(()=>Array.isArray(Q.value)?void 0:Q.value);let Z;return watch(()=>!!n.activator,re=>{re&&IN_BROWSER?(Z=effectScope(),Z.run(()=>{_useActivator(n,x,{activatorEl:T,activatorEvents:F})})):Z&&Z.stop()},{flush:"post",immediate:!0}),onScopeDispose(()=>{Z?.stop()}),{activatorEl:T,activatorRef:z,target:Q,targetEl:J,targetRef:H,activatorEvents:F,contentEvents:U,scrimEvents:j}}function _useActivator(n,r,_){let{activatorEl:S,activatorEvents:E}=_;watch(()=>n.activator,(I,B)=>{if(B&&I!==B){const A=C(B);A&&T(A)}I&&nextTick$2(()=>x())},{immediate:!0}),watch(()=>n.activatorProps,()=>{x()}),onScopeDispose(()=>{T()});function x(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:C(),B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:n.activatorProps;I&&bindProps(I,mergeProps(E.value,B))}function T(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:C(),B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:n.activatorProps;I&&unbindProps(I,mergeProps(E.value,B))}function C(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:n.activator;const B=getTarget(I,r);return S.value=B?.nodeType===Node.ELEMENT_NODE?B:void 0,S.value}}function getTarget(n,r){if(!n)return;let _;if(n==="parent"){let S=r?.proxy?.$el?.parentNode;for(;S?.hasAttribute("data-no-activator");)S=S.parentNode;_=S}else typeof n=="string"?_=document.querySelector(n):"$el"in n?_=n.$el:_=n;return _}function useHydration(){if(!IN_BROWSER)return shallowRef(!1);const{ssr:n}=useDisplay();if(n){const r=shallowRef(!1);return onMounted(()=>{r.value=!0}),r}else return shallowRef(!0)}const makeLazyProps=propsFactory({eager:Boolean},"lazy");function useLazy(n,r){const _=shallowRef(!1),S=computed(()=>_.value||n.eager||r.value);watch(r,()=>_.value=!0);function E(){n.eager||(_.value=!1)}return{isBooted:_,hasContent:S,onAfterLeave:E}}function useScopeId(){const r=getCurrentInstance("useScopeId").vnode.scopeId;return{scopeId:r?{[r]:""}:void 0}}const StackSymbol=Symbol.for("vuetify:stack"),globalStack=reactive([]);function useStack(n,r,_){const S=getCurrentInstance("useStack"),E=!_,x=inject$1(StackSymbol,void 0),T=reactive({activeChildren:new Set});provide(StackSymbol,T);const C=shallowRef(+r.value);useToggleScope(n,()=>{const A=globalStack.at(-1)?.[1];C.value=A?A+10:+r.value,E&&globalStack.push([S.uid,C.value]),x?.activeChildren.add(S.uid),onScopeDispose(()=>{if(E){const D=toRaw(globalStack).findIndex(N=>N[0]===S.uid);globalStack.splice(D,1)}x?.activeChildren.delete(S.uid)})});const I=shallowRef(!0);E&&watchEffect(()=>{const A=globalStack.at(-1)?.[0]===S.uid;setTimeout(()=>I.value=A)});const B=computed(()=>!T.activeChildren.size);return{globalTop:readonly$2(I),localTop:B,stackStyles:computed(()=>({zIndex:C.value}))}}function useTeleport(n){return{teleportTarget:computed(()=>{const _=n();if(_===!0||!IN_BROWSER)return;const S=_===!1?document.body:typeof _=="string"?document.querySelector(_):_;if(S==null)return;let E=[...S.children].find(x=>x.matches(".v-overlay-container"));return E||(E=document.createElement("div"),E.className="v-overlay-container",S.appendChild(E)),E})}}function defaultConditional(){return!0}function checkEvent(n,r,_){if(!n||checkIsActive(n,_)===!1)return!1;const S=attachedRoot(r);if(typeof ShadowRoot<"u"&&S instanceof ShadowRoot&&S.host===n.target)return!1;const E=(typeof _.value=="object"&&_.value.include||(()=>[]))();return E.push(r),!E.some(x=>x?.contains(n.target))}function checkIsActive(n,r){return(typeof r.value=="object"&&r.value.closeConditional||defaultConditional)(n)}function directive(n,r,_){const S=typeof _.value=="function"?_.value:_.value.handler;n.shadowTarget=n.target,r._clickOutside.lastMousedownWasOutside&&checkEvent(n,r,_)&&setTimeout(()=>{checkIsActive(n,_)&&S&&S(n)},0)}function handleShadow(n,r){const _=attachedRoot(n);r(document),typeof ShadowRoot<"u"&&_ instanceof ShadowRoot&&r(_)}const ClickOutside={mounted(n,r){const _=E=>directive(E,n,r),S=E=>{n._clickOutside.lastMousedownWasOutside=checkEvent(E,n,r)};handleShadow(n,E=>{E.addEventListener("click",_,!0),E.addEventListener("mousedown",S,!0)}),n._clickOutside||(n._clickOutside={lastMousedownWasOutside:!1}),n._clickOutside[r.instance.$.uid]={onClick:_,onMousedown:S}},beforeUnmount(n,r){n._clickOutside&&(handleShadow(n,_=>{if(!_||!n._clickOutside?.[r.instance.$.uid])return;const{onClick:S,onMousedown:E}=n._clickOutside[r.instance.$.uid];_.removeEventListener("click",S,!0),_.removeEventListener("mousedown",E,!0)}),delete n._clickOutside[r.instance.$.uid])}};function Scrim(n){const{modelValue:r,color:_,...S}=n;return createVNode(Transition,{name:"fade-transition",appear:!0},{default:()=>[n.modelValue&&createVNode("div",mergeProps({class:["v-overlay__scrim",n.color.backgroundColorClasses.value],style:n.color.backgroundColorStyles.value},S),null)]})}const makeVOverlayProps=propsFactory({absolute:Boolean,attach:[Boolean,String,Object],closeOnBack:{type:Boolean,default:!0},contained:Boolean,contentClass:null,contentProps:null,disabled:Boolean,opacity:[Number,String],noClickAnimation:Boolean,modelValue:Boolean,persistent:Boolean,scrim:{type:[Boolean,String],default:!0},zIndex:{type:[Number,String],default:2e3},...makeActivatorProps(),...makeComponentProps(),...makeDimensionProps(),...makeLazyProps(),...makeLocationStrategyProps(),...makeScrollStrategyProps(),...makeThemeProps(),...makeTransitionProps()},"VOverlay"),VOverlay=genericComponent()({name:"VOverlay",directives:{ClickOutside},inheritAttrs:!1,props:{_disableGlobalStack:Boolean,...makeVOverlayProps()},emits:{"click:outside":n=>!0,"update:modelValue":n=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(n,r){let{slots:_,attrs:S,emit:E}=r;const x=getCurrentInstance("VOverlay"),T=ref$2(),C=ref$2(),I=ref$2(),B=useProxiedModel(n,"modelValue"),A=computed({get:()=>B.value,set:de=>{de&&n.disabled||(B.value=de)}}),{themeClasses:D}=provideTheme(n),{rtlClasses:N,isRtl:O}=useRtl(),{hasContent:M,onAfterLeave:L}=useLazy(n,A),F=useBackgroundColor(computed(()=>typeof n.scrim=="string"?n.scrim:null)),{globalTop:U,localTop:j,stackStyles:z}=useStack(A,toRef(n,"zIndex"),n._disableGlobalStack),{activatorEl:H,activatorRef:Q,target:J,targetEl:Z,targetRef:re,activatorEvents:ie,contentEvents:pe,scrimEvents:ue}=useActivator(n,{isActive:A,isTop:j,contentEl:I}),{teleportTarget:W}=useTeleport(()=>{const de=n.attach||n.contained;if(de)return de;const he=H?.value?.getRootNode()||x.proxy?.$el?.getRootNode();return he instanceof ShadowRoot?he:!1}),{dimensionStyles:Y}=useDimension(n),q=useHydration(),{scopeId:G}=useScopeId();watch(()=>n.disabled,de=>{de&&(A.value=!1)});const{contentStyles:ne,updateLocation:ee}=useLocationStrategies(n,{isRtl:O,contentEl:I,target:J,isActive:A});useScrollStrategies(n,{root:T,contentEl:I,targetEl:Z,isActive:A,updateLocation:ee});function oe(de){E("click:outside",de),n.persistent?ce():A.value=!1}function ae(de){return A.value&&U.value&&(!n.scrim||de.target===C.value||de instanceof MouseEvent&&de.shadowTarget===C.value)}IN_BROWSER&&watch(A,de=>{de?window.addEventListener("keydown",se):window.removeEventListener("keydown",se)},{immediate:!0}),onBeforeUnmount(()=>{IN_BROWSER&&window.removeEventListener("keydown",se)});function se(de){de.key==="Escape"&&U.value&&(n.persistent?ce():(A.value=!1,I.value?.contains(document.activeElement)&&H.value?.focus()))}const te=useRouter();useToggleScope(()=>n.closeOnBack,()=>{useBackButton(te,de=>{U.value&&A.value?(de(!1),n.persistent?ce():A.value=!1):de()})});const X=ref$2();watch(()=>A.value&&(n.absolute||n.contained)&&W.value==null,de=>{if(de){const he=getScrollParent(T.value);he&&he!==document.scrollingElement&&(X.value=he.scrollTop)}});function ce(){n.noClickAnimation||I.value&&animate(I.value,[{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:standardEasing})}function le(){E("afterEnter")}function ye(){L(),E("afterLeave")}return useRender(()=>createVNode(Fragment,null,[_.activator?.({isActive:A.value,targetRef:re,props:mergeProps({ref:Q},ie.value,n.activatorProps)}),q.value&&M.value&&createVNode(Teleport,{disabled:!W.value,to:W.value},{default:()=>[createVNode("div",mergeProps({class:["v-overlay",{"v-overlay--absolute":n.absolute||n.contained,"v-overlay--active":A.value,"v-overlay--contained":n.contained},D.value,N.value,n.class],style:[z.value,{"--v-overlay-opacity":n.opacity,top:convertToUnit(X.value)},n.style],ref:T},G,S),[createVNode(Scrim,mergeProps({color:F,modelValue:A.value&&!!n.scrim,ref:C},ue.value),null),createVNode(MaybeTransition,{appear:!0,persisted:!0,transition:n.transition,target:J.value,onAfterEnter:le,onAfterLeave:ye},{default:()=>[withDirectives(createVNode("div",mergeProps({ref:I,class:["v-overlay__content",n.contentClass],style:[Y.value,ne.value]},pe.value,n.contentProps),[_.default?.({isActive:A})]),[[vShow,A.value],[resolveDirective("click-outside"),{handler:oe,closeConditional:ae,include:()=>[H.value]}]])]})])]})])),{activatorEl:H,scrimEl:C,target:J,animateClick:ce,contentEl:I,globalTop:U,localTop:j,updateLocation:ee}}}),Refs=Symbol("Forwarded refs");function getDescriptor(n,r){let _=n;for(;_;){const S=Reflect.getOwnPropertyDescriptor(_,r);if(S)return S;_=Object.getPrototypeOf(_)}}function forwardRefs(n){for(var r=arguments.length,_=new Array(r>1?r-1:0),S=1;S!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),{scopeId:E}=useScopeId(),{isRtl:x}=useRtl(),T=getUid(),C=computed(()=>n.id||`v-menu-${T}`),I=ref$2(),B=inject$1(VMenuSymbol,null),A=shallowRef(new Set);provide(VMenuSymbol,{register(){A.value.add(T)},unregister(){A.value.delete(T)},closeParents(F){setTimeout(()=>{!A.value.size&&!n.persistent&&(F==null||I.value?.contentEl&&!isClickInsideElement(F,I.value.contentEl))&&(S.value=!1,B?.closeParents())},40)}}),onBeforeUnmount(()=>B?.unregister()),onDeactivated(()=>S.value=!1);async function D(F){const U=F.relatedTarget,j=F.target;await nextTick$2(),S.value&&U!==j&&I.value?.contentEl&&I.value?.globalTop&&![document,I.value.contentEl].includes(j)&&!I.value.contentEl.contains(j)&&focusableChildren(I.value.contentEl)[0]?.focus()}watch(S,F=>{F?(B?.register(),document.addEventListener("focusin",D,{once:!0})):(B?.unregister(),document.removeEventListener("focusin",D))});function N(F){B?.closeParents(F)}function O(F){if(!n.disabled)if(F.key==="Tab"||F.key==="Enter"&&!n.closeOnContentClick){if(F.key==="Enter"&&(F.target instanceof HTMLTextAreaElement||F.target instanceof HTMLInputElement&&F.target.closest("form")))return;F.key==="Enter"&&F.preventDefault(),getNextElement(focusableChildren(I.value?.contentEl,!1),F.shiftKey?"prev":"next",j=>j.tabIndex>=0)||(S.value=!1,I.value?.activatorEl?.focus())}else n.submenu&&F.key===(x.value?"ArrowRight":"ArrowLeft")&&(S.value=!1,I.value?.activatorEl?.focus())}function M(F){if(n.disabled)return;const U=I.value?.contentEl;U&&S.value?F.key==="ArrowDown"?(F.preventDefault(),F.stopImmediatePropagation(),focusChild(U,"next")):F.key==="ArrowUp"?(F.preventDefault(),F.stopImmediatePropagation(),focusChild(U,"prev")):n.submenu&&(F.key===(x.value?"ArrowRight":"ArrowLeft")?S.value=!1:F.key===(x.value?"ArrowLeft":"ArrowRight")&&(F.preventDefault(),focusChild(U,"first"))):(n.submenu?F.key===(x.value?"ArrowLeft":"ArrowRight"):["ArrowDown","ArrowUp"].includes(F.key))&&(S.value=!0,F.preventDefault(),setTimeout(()=>setTimeout(()=>M(F))))}const L=computed(()=>mergeProps({"aria-haspopup":"menu","aria-expanded":String(S.value),"aria-owns":C.value,onKeydown:M},n.activatorProps));return useRender(()=>{const F=VOverlay.filterProps(n);return createVNode(VOverlay,mergeProps({ref:I,id:C.value,class:["v-menu",n.class],style:n.style},F,{modelValue:S.value,"onUpdate:modelValue":U=>S.value=U,absolute:!0,activatorProps:L.value,location:n.location??(n.submenu?"end":"bottom"),"onClick:outside":N,onKeydown:O},E),{activator:_.activator,default:function(){for(var U=arguments.length,j=new Array(U),z=0;z[_.default?.(...j)]})}})}),forwardRefs({id:C,ΨopenChildren:A},I)}}),makeVCounterProps=propsFactory({active:Boolean,disabled:Boolean,max:[Number,String],value:{type:[Number,String],default:0},...makeComponentProps(),...makeTransitionProps({transition:{component:VSlideYTransition}})},"VCounter"),VCounter=genericComponent()({name:"VCounter",functional:!0,props:makeVCounterProps(),setup(n,r){let{slots:_}=r;const S=computed(()=>n.max?`${n.value} / ${n.max}`:String(n.value));return useRender(()=>createVNode(MaybeTransition,{transition:n.transition},{default:()=>[withDirectives(createVNode("div",{class:["v-counter",{"text-error":n.max&&!n.disabled&&parseFloat(n.value)>parseFloat(n.max)},n.class],style:n.style},[_.default?_.default({counter:S.value,max:n.max,value:n.value}):S.value]),[[vShow,n.active]])]})),{}}}),makeVFieldLabelProps=propsFactory({floating:Boolean,...makeComponentProps()},"VFieldLabel"),VFieldLabel=genericComponent()({name:"VFieldLabel",props:makeVFieldLabelProps(),setup(n,r){let{slots:_}=r;return useRender(()=>createVNode(VLabel,{class:["v-field-label",{"v-field-label--floating":n.floating},n.class],style:n.style,"aria-hidden":n.floating||void 0},_)),{}}}),allowedVariants$1=["underlined","outlined","filled","solo","solo-inverted","solo-filled","plain"],makeVFieldProps=propsFactory({appendInnerIcon:IconValue,bgColor:String,clearable:Boolean,clearIcon:{type:IconValue,default:"$clear"},active:Boolean,centerAffix:{type:Boolean,default:void 0},color:String,baseColor:String,dirty:Boolean,disabled:{type:Boolean,default:null},error:Boolean,flat:Boolean,label:String,persistentClear:Boolean,prependInnerIcon:IconValue,reverse:Boolean,singleLine:Boolean,variant:{type:String,default:"filled",validator:n=>allowedVariants$1.includes(n)},"onClick:clear":EventProp(),"onClick:appendInner":EventProp(),"onClick:prependInner":EventProp(),...makeComponentProps(),...makeLoaderProps(),...makeRoundedProps(),...makeThemeProps()},"VField"),VField=genericComponent()({name:"VField",inheritAttrs:!1,props:{id:String,...makeFocusProps(),...makeVFieldProps()},emits:{"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{themeClasses:x}=provideTheme(n),{loaderClasses:T}=useLoader(n),{focusClasses:C,isFocused:I,focus:B,blur:A}=useFocus(n),{InputIcon:D}=useInputIcon(n),{roundedClasses:N}=useRounded(n),{rtlClasses:O}=useRtl(),M=computed(()=>n.dirty||n.active),L=computed(()=>!n.singleLine&&!!(n.label||E.label)),F=getUid(),U=computed(()=>n.id||`input-${F}`),j=computed(()=>`${U.value}-messages`),z=ref$2(),H=ref$2(),Q=ref$2(),J=computed(()=>["plain","underlined"].includes(n.variant)),{backgroundColorClasses:Z,backgroundColorStyles:re}=useBackgroundColor(toRef(n,"bgColor")),{textColorClasses:ie,textColorStyles:pe}=useTextColor(computed(()=>n.error||n.disabled?void 0:M.value&&I.value?n.color:n.baseColor));watch(M,q=>{if(L.value){const G=z.value.$el,ne=H.value.$el;requestAnimationFrame(()=>{const ee=nullifyTransforms(G),oe=ne.getBoundingClientRect(),ae=oe.x-ee.x,se=oe.y-ee.y-(ee.height/2-oe.height/2),te=oe.width/.75,X=Math.abs(te-ee.width)>1?{maxWidth:convertToUnit(te)}:void 0,ce=getComputedStyle(G),le=getComputedStyle(ne),ye=parseFloat(ce.transitionDuration)*1e3||150,de=parseFloat(le.getPropertyValue("--v-field-label-scale")),he=le.getPropertyValue("color");G.style.visibility="visible",ne.style.visibility="hidden",animate(G,{transform:`translate(${ae}px, ${se}px) scale(${de})`,color:he,...X},{duration:ye,easing:standardEasing,direction:q?"normal":"reverse"}).finished.then(()=>{G.style.removeProperty("visibility"),ne.style.removeProperty("visibility")})})}},{flush:"post"});const ue=computed(()=>({isActive:M,isFocused:I,controlRef:Q,blur:A,focus:B}));function W(q){q.target!==document.activeElement&&q.preventDefault()}function Y(q){q.key!=="Enter"&&q.key!==" "||(q.preventDefault(),q.stopPropagation(),n["onClick:clear"]?.(new MouseEvent("click")))}return useRender(()=>{const q=n.variant==="outlined",G=!!(E["prepend-inner"]||n.prependInnerIcon),ne=!!(n.clearable||E.clear),ee=!!(E["append-inner"]||n.appendInnerIcon||ne),oe=()=>E.label?E.label({...ue.value,label:n.label,props:{for:U.value}}):n.label;return createVNode("div",mergeProps({class:["v-field",{"v-field--active":M.value,"v-field--appended":ee,"v-field--center-affix":n.centerAffix??!J.value,"v-field--disabled":n.disabled,"v-field--dirty":n.dirty,"v-field--error":n.error,"v-field--flat":n.flat,"v-field--has-background":!!n.bgColor,"v-field--persistent-clear":n.persistentClear,"v-field--prepended":G,"v-field--reverse":n.reverse,"v-field--single-line":n.singleLine,"v-field--no-label":!oe(),[`v-field--variant-${n.variant}`]:!0},x.value,Z.value,C.value,T.value,N.value,O.value,n.class],style:[re.value,n.style],onClick:W},_),[createVNode("div",{class:"v-field__overlay"},null),createVNode(LoaderSlot,{name:"v-field",active:!!n.loading,color:n.error?"error":typeof n.loading=="string"?n.loading:n.color},{default:E.loader}),G&&createVNode("div",{key:"prepend",class:"v-field__prepend-inner"},[n.prependInnerIcon&&createVNode(D,{key:"prepend-icon",name:"prependInner"},null),E["prepend-inner"]?.(ue.value)]),createVNode("div",{class:"v-field__field","data-no-activator":""},[["filled","solo","solo-inverted","solo-filled"].includes(n.variant)&&L.value&&createVNode(VFieldLabel,{key:"floating-label",ref:H,class:[ie.value],floating:!0,for:U.value,style:pe.value},{default:()=>[oe()]}),createVNode(VFieldLabel,{ref:z,for:U.value},{default:()=>[oe()]}),E.default?.({...ue.value,props:{id:U.value,class:"v-field__input","aria-describedby":j.value},focus:B,blur:A})]),ne&&createVNode(VExpandXTransition,{key:"clear"},{default:()=>[withDirectives(createVNode("div",{class:"v-field__clearable",onMousedown:ae=>{ae.preventDefault(),ae.stopPropagation()}},[createVNode(VDefaultsProvider,{defaults:{VIcon:{icon:n.clearIcon}}},{default:()=>[E.clear?E.clear({...ue.value,props:{onKeydown:Y,onFocus:B,onBlur:A,onClick:n["onClick:clear"]}}):createVNode(D,{name:"clear",onKeydown:Y,onFocus:B,onBlur:A},null)]})]),[[vShow,n.dirty]])]}),ee&&createVNode("div",{key:"append",class:"v-field__append-inner"},[E["append-inner"]?.(ue.value),n.appendInnerIcon&&createVNode(D,{key:"append-icon",name:"appendInner"},null)]),createVNode("div",{class:["v-field__outline",ie.value],style:pe.value},[q&&createVNode(Fragment,null,[createVNode("div",{class:"v-field__outline__start"},null),L.value&&createVNode("div",{class:"v-field__outline__notch"},[createVNode(VFieldLabel,{ref:H,floating:!0,for:U.value},{default:()=>[oe()]})]),createVNode("div",{class:"v-field__outline__end"},null)]),J.value&&L.value&&createVNode(VFieldLabel,{ref:H,floating:!0,for:U.value},{default:()=>[oe()]})])])}),{controlRef:Q}}});function filterFieldProps(n){const r=Object.keys(VField.props).filter(_=>!isOn(_)&&_!=="class"&&_!=="style");return pick(n,r)}const activeTypes=["color","file","time","date","datetime-local","week","month"],makeVTextFieldProps=propsFactory({autofocus:Boolean,counter:[Boolean,Number,String],counterValue:[Number,Function],prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,suffix:String,role:String,type:{type:String,default:"text"},modelModifiers:Object,...makeVInputProps(),...makeVFieldProps()},"VTextField"),VTextField=genericComponent()({name:"VTextField",directives:{Intersect},inheritAttrs:!1,props:makeVTextFieldProps(),emits:{"click:control":n=>!0,"mousedown:control":n=>!0,"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const x=useProxiedModel(n,"modelValue"),{isFocused:T,focus:C,blur:I}=useFocus(n),B=computed(()=>typeof n.counterValue=="function"?n.counterValue(x.value):typeof n.counterValue=="number"?n.counterValue:(x.value??"").toString().length),A=computed(()=>{if(_.maxlength)return _.maxlength;if(!(!n.counter||typeof n.counter!="number"&&typeof n.counter!="string"))return n.counter}),D=computed(()=>["plain","underlined"].includes(n.variant));function N(J,Z){!n.autofocus||!J||Z[0].target?.focus?.()}const O=ref$2(),M=ref$2(),L=ref$2(),F=computed(()=>activeTypes.includes(n.type)||n.persistentPlaceholder||T.value||n.active);function U(){L.value!==document.activeElement&&L.value?.focus(),T.value||C()}function j(J){S("mousedown:control",J),J.target!==L.value&&(U(),J.preventDefault())}function z(J){U(),S("click:control",J)}function H(J){J.stopPropagation(),U(),nextTick$2(()=>{x.value=null,callEvent(n["onClick:clear"],J)})}function Q(J){const Z=J.target;if(x.value=Z.value,n.modelModifiers?.trim&&["text","search","password","tel","url"].includes(n.type)){const re=[Z.selectionStart,Z.selectionEnd];nextTick$2(()=>{Z.selectionStart=re[0],Z.selectionEnd=re[1]})}}return useRender(()=>{const J=!!(E.counter||n.counter!==!1&&n.counter!=null),Z=!!(J||E.details),[re,ie]=filterInputAttrs(_),{modelValue:pe,...ue}=VInput.filterProps(n),W=filterFieldProps(n);return createVNode(VInput,mergeProps({ref:O,modelValue:x.value,"onUpdate:modelValue":Y=>x.value=Y,class:["v-text-field",{"v-text-field--prefixed":n.prefix,"v-text-field--suffixed":n.suffix,"v-input--plain-underlined":D.value},n.class],style:n.style},re,ue,{centerAffix:!D.value,focused:T.value}),{...E,default:Y=>{let{id:q,isDisabled:G,isDirty:ne,isReadonly:ee,isValid:oe}=Y;return createVNode(VField,mergeProps({ref:M,onMousedown:j,onClick:z,"onClick:clear":H,"onClick:prependInner":n["onClick:prependInner"],"onClick:appendInner":n["onClick:appendInner"],role:n.role},W,{id:q.value,active:F.value||ne.value,dirty:ne.value||n.dirty,disabled:G.value,focused:T.value,error:oe.value===!1}),{...E,default:ae=>{let{props:{class:se,...te}}=ae;const X=withDirectives(createVNode("input",mergeProps({ref:L,value:x.value,onInput:Q,autofocus:n.autofocus,readonly:ee.value,disabled:G.value,name:n.name,placeholder:n.placeholder,size:1,type:n.type,onFocus:U,onBlur:I},te,ie),null),[[resolveDirective("intersect"),{handler:N},null,{once:!0}]]);return createVNode(Fragment,null,[n.prefix&&createVNode("span",{class:"v-text-field__prefix"},[createVNode("span",{class:"v-text-field__prefix__text"},[n.prefix])]),E.default?createVNode("div",{class:se,"data-no-activator":""},[E.default(),X]):cloneVNode(X,{class:se}),n.suffix&&createVNode("span",{class:"v-text-field__suffix"},[createVNode("span",{class:"v-text-field__suffix__text"},[n.suffix])])])}})},details:Z?Y=>createVNode(Fragment,null,[E.details?.(Y),J&&createVNode(Fragment,null,[createVNode("span",null,null),createVNode(VCounter,{active:n.persistentCounter||T.value,value:B.value,max:A.value,disabled:n.disabled},E.counter)])]):void 0})}),forwardRefs({},O,M,L)}}),makeVVirtualScrollItemProps=propsFactory({renderless:Boolean,...makeComponentProps()},"VVirtualScrollItem"),VVirtualScrollItem=genericComponent()({name:"VVirtualScrollItem",inheritAttrs:!1,props:makeVVirtualScrollItemProps(),emits:{"update:height":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{resizeRef:x,contentRect:T}=useResizeObserver(void 0,"border");watch(()=>T.value?.height,C=>{C!=null&&S("update:height",C)}),useRender(()=>n.renderless?createVNode(Fragment,null,[E.default?.({itemRef:x})]):createVNode("div",mergeProps({ref:x,class:["v-virtual-scroll__item",n.class],style:n.style},_),[E.default?.()]))}}),UP=-1,DOWN=1,BUFFER_PX=100,makeVirtualProps=propsFactory({itemHeight:{type:[Number,String],default:null},height:[Number,String]},"virtual");function useVirtual(n,r){const _=useDisplay(),S=shallowRef(0);watchEffect(()=>{S.value=parseFloat(n.itemHeight||0)});const E=shallowRef(0),x=shallowRef(Math.ceil((parseInt(n.height)||_.height.value)/(S.value||16))||1),T=shallowRef(0),C=shallowRef(0),I=ref$2(),B=ref$2();let A=0;const{resizeRef:D,contentRect:N}=useResizeObserver();watchEffect(()=>{D.value=I.value});const O=computed(()=>I.value===document.documentElement?_.height.value:N.value?.height||parseInt(n.height)||0),M=computed(()=>!!(I.value&&B.value&&O.value&&S.value));let L=Array.from({length:r.value.length}),F=Array.from({length:r.value.length});const U=shallowRef(0);let j=-1;function z(ae){return L[ae]||S.value}const H=debounce$3(()=>{const ae=performance.now();F[0]=0;const se=r.value.length;for(let te=1;te<=se-1;te++)F[te]=(F[te-1]||0)+z(te-1);U.value=Math.max(U.value,performance.now()-ae)},U),Q=watch(M,ae=>{ae&&(Q(),A=B.value.offsetTop,H.immediate(),G(),~j&&nextTick$2(()=>{IN_BROWSER&&window.requestAnimationFrame(()=>{ee(j),j=-1})}))});onScopeDispose(()=>{H.clear()});function J(ae,se){const te=L[ae],X=S.value;S.value=X?Math.min(S.value,se):se,(te!==se||X!==S.value)&&(L[ae]=se,H())}function Z(ae){return ae=clamp(ae,0,r.value.length-1),F[ae]||0}function re(ae){return binaryClosest(F,ae)}let ie=0,pe=0,ue=0;watch(O,(ae,se)=>{se&&(G(),ae{pe=0,G()}))});function W(){if(!I.value||!B.value)return;const ae=I.value.scrollTop,se=performance.now();se-ue>500?(pe=Math.sign(ae-ie),A=B.value.offsetTop):pe=ae-ie,ie=ae,ue=se,G()}function Y(){!I.value||!B.value||(pe=0,ue=0,G())}let q=-1;function G(){cancelAnimationFrame(q),q=requestAnimationFrame(ne)}function ne(){if(!I.value||!O.value)return;const ae=ie-A,se=Math.sign(pe),te=Math.max(0,ae-BUFFER_PX),X=clamp(re(te),0,r.value.length),ce=ae+O.value+BUFFER_PX,le=clamp(re(ce)+1,X+1,r.value.length);if((se!==UP||Xx.value)){const ye=Z(E.value)-Z(X),de=Z(le)-Z(x.value);Math.max(ye,de)>BUFFER_PX?(E.value=X,x.value=le):(X<=0&&(E.value=X),le>=r.value.length&&(x.value=le))}T.value=Z(E.value),C.value=Z(r.value.length)-Z(x.value)}function ee(ae){const se=Z(ae);!I.value||ae&&!se?j=ae:I.value.scrollTop=se}const oe=computed(()=>r.value.slice(E.value,x.value).map((ae,se)=>({raw:ae,index:se+E.value})));return watch(r,()=>{L=Array.from({length:r.value.length}),F=Array.from({length:r.value.length}),H.immediate(),G()},{deep:!0}),{calculateVisibleItems:G,containerRef:I,markerRef:B,computedItems:oe,paddingTop:T,paddingBottom:C,scrollToIndex:ee,handleScroll:W,handleScrollend:Y,handleItemResize:J}}function binaryClosest(n,r){let _=n.length-1,S=0,E=0,x=null,T=-1;if(n[_]>1,x=n[E],x>r)_=E-1;else if(x[]},renderless:Boolean,...makeVirtualProps(),...makeComponentProps(),...makeDimensionProps()},"VVirtualScroll"),VVirtualScroll=genericComponent()({name:"VVirtualScroll",props:makeVVirtualScrollProps(),setup(n,r){let{slots:_}=r;const S=getCurrentInstance("VVirtualScroll"),{dimensionStyles:E}=useDimension(n),{calculateVisibleItems:x,containerRef:T,markerRef:C,handleScroll:I,handleScrollend:B,handleItemResize:A,scrollToIndex:D,paddingTop:N,paddingBottom:O,computedItems:M}=useVirtual(n,toRef(n,"items"));return useToggleScope(()=>n.renderless,()=>{function L(){const U=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1)?"addEventListener":"removeEventListener";T.value===document.documentElement?(document[U]("scroll",I,{passive:!0}),document[U]("scrollend",B)):(T.value?.[U]("scroll",I,{passive:!0}),T.value?.[U]("scrollend",B))}onMounted(()=>{T.value=getScrollParent(S.vnode.el,!0),L(!0)}),onScopeDispose(L)}),useRender(()=>{const L=M.value.map(F=>createVNode(VVirtualScrollItem,{key:F.index,renderless:n.renderless,"onUpdate:height":U=>A(F.index,U)},{default:U=>_.default?.({item:F.raw,index:F.index,...U})}));return n.renderless?createVNode(Fragment,null,[createVNode("div",{ref:C,class:"v-virtual-scroll__spacer",style:{paddingTop:convertToUnit(N.value)}},null),L,createVNode("div",{class:"v-virtual-scroll__spacer",style:{paddingBottom:convertToUnit(O.value)}},null)]):createVNode("div",{ref:T,class:["v-virtual-scroll",n.class],onScrollPassive:I,onScrollend:B,style:[E.value,n.style]},[createVNode("div",{ref:C,class:"v-virtual-scroll__container",style:{paddingTop:convertToUnit(N.value),paddingBottom:convertToUnit(O.value)}},[L])])}),{calculateVisibleItems:x,scrollToIndex:D}}});function useScrolling(n,r){const _=shallowRef(!1);let S;function E(C){cancelAnimationFrame(S),_.value=!0,S=requestAnimationFrame(()=>{S=requestAnimationFrame(()=>{_.value=!1})})}async function x(){await new Promise(C=>requestAnimationFrame(C)),await new Promise(C=>requestAnimationFrame(C)),await new Promise(C=>requestAnimationFrame(C)),await new Promise(C=>{if(_.value){const I=watch(_,()=>{I(),C()})}else C()})}async function T(C){if(C.key==="Tab"&&r.value?.focus(),!["PageDown","PageUp","Home","End"].includes(C.key))return;const I=n.value?.$el;if(!I)return;(C.key==="Home"||C.key==="End")&&I.scrollTo({top:C.key==="Home"?0:I.scrollHeight,behavior:"smooth"}),await x();const B=I.querySelectorAll(":scope > :not(.v-virtual-scroll__spacer)");if(C.key==="PageDown"||C.key==="Home"){const A=I.getBoundingClientRect().top;for(const D of B)if(D.getBoundingClientRect().top>=A){D.focus();break}}else{const A=I.getBoundingClientRect().bottom;for(const D of[...B].reverse())if(D.getBoundingClientRect().bottom<=A){D.focus();break}}}return{onScrollPassive:E,onKeydown:T}}const makeSelectProps=propsFactory({chips:Boolean,closableChips:Boolean,closeText:{type:String,default:"$vuetify.close"},openText:{type:String,default:"$vuetify.open"},eager:Boolean,hideNoData:Boolean,hideSelected:Boolean,listProps:{type:Object},menu:Boolean,menuIcon:{type:IconValue,default:"$dropdown"},menuProps:{type:Object},multiple:Boolean,noDataText:{type:String,default:"$vuetify.noDataText"},openOnClear:Boolean,itemColor:String,...makeItemsProps({itemChildren:!1})},"Select"),makeVSelectProps=propsFactory({...makeSelectProps(),...omit(makeVTextFieldProps({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...makeTransitionProps({transition:{component:VDialogTransition}})},"VSelect"),VSelect=genericComponent()({name:"VSelect",props:makeVSelectProps(),emits:{"update:focused":n=>!0,"update:modelValue":n=>!0,"update:menu":n=>!0},setup(n,r){let{slots:_}=r;const{t:S}=useLocale(),E=ref$2(),x=ref$2(),T=ref$2(),C=useProxiedModel(n,"menu"),I=computed({get:()=>C.value,set:ae=>{C.value&&!ae&&x.value?.ΨopenChildren.size||(C.value=ae)}}),{items:B,transformIn:A,transformOut:D}=useItems(n),N=useProxiedModel(n,"modelValue",[],ae=>A(ae===null?[null]:wrapInArray(ae)),ae=>{const se=D(ae);return n.multiple?se:se[0]??null}),O=computed(()=>typeof n.counterValue=="function"?n.counterValue(N.value):typeof n.counterValue=="number"?n.counterValue:N.value.length),M=useForm(),L=computed(()=>N.value.map(ae=>ae.value)),F=shallowRef(!1),U=computed(()=>I.value?n.closeText:n.openText);let j="",z;const H=computed(()=>n.hideSelected?B.value.filter(ae=>!N.value.some(se=>n.valueComparator(se,ae))):B.value),Q=computed(()=>n.hideNoData&&!H.value.length||n.readonly||M?.isReadonly.value),J=computed(()=>({...n.menuProps,activatorProps:{...n.menuProps?.activatorProps||{},"aria-haspopup":"listbox"}})),Z=ref$2(),re=useScrolling(Z,E);function ie(ae){n.openOnClear&&(I.value=!0)}function pe(){Q.value||(I.value=!I.value)}function ue(ae){checkPrintable(ae)&&W(ae)}function W(ae){if(!ae.key||n.readonly||M?.isReadonly.value)return;["Enter"," ","ArrowDown","ArrowUp","Home","End"].includes(ae.key)&&ae.preventDefault(),["Enter","ArrowDown"," "].includes(ae.key)&&(I.value=!0),["Escape","Tab"].includes(ae.key)&&(I.value=!1),ae.key==="Home"?Z.value?.focus("first"):ae.key==="End"&&Z.value?.focus("last");const se=1e3;if(n.multiple||!checkPrintable(ae))return;const te=performance.now();te-z>se&&(j=""),j+=ae.key.toLowerCase(),z=te;const X=B.value.find(ce=>ce.title.toLowerCase().startsWith(j));if(X!==void 0){N.value=[X];const ce=H.value.indexOf(X);IN_BROWSER&&window.requestAnimationFrame(()=>{ce>=0&&T.value?.scrollToIndex(ce)})}}function Y(ae){let se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!ae.props.disabled)if(n.multiple){const te=N.value.findIndex(ce=>n.valueComparator(ce.value,ae.value)),X=se??!~te;if(~te){const ce=X?[...N.value,ae]:[...N.value];ce.splice(te,1),N.value=ce}else X&&(N.value=[...N.value,ae])}else{const te=se!==!1;N.value=te?[ae]:[],nextTick$2(()=>{I.value=!1})}}function q(ae){Z.value?.$el.contains(ae.relatedTarget)||(I.value=!1)}function G(){n.eager&&T.value?.calculateVisibleItems()}function ne(){F.value&&E.value?.focus()}function ee(ae){F.value=!0}function oe(ae){if(ae==null)N.value=[];else if(matchesSelector(E.value,":autofill")||matchesSelector(E.value,":-webkit-autofill")){const se=B.value.find(te=>te.title===ae);se&&Y(se)}else E.value&&(E.value.value="")}return watch(I,()=>{if(!n.hideSelected&&I.value&&N.value.length){const ae=H.value.findIndex(se=>N.value.some(te=>n.valueComparator(te.value,se.value)));IN_BROWSER&&window.requestAnimationFrame(()=>{ae>=0&&T.value?.scrollToIndex(ae)})}}),watch(()=>n.items,(ae,se)=>{I.value||F.value&&!se.length&&ae.length&&(I.value=!0)}),useRender(()=>{const ae=!!(n.chips||_.chip),se=!!(!n.hideNoData||H.value.length||_["prepend-item"]||_["append-item"]||_["no-data"]),te=N.value.length>0,X=VTextField.filterProps(n),ce=te||!F.value&&n.label&&!n.persistentPlaceholder?void 0:n.placeholder;return createVNode(VTextField,mergeProps({ref:E},X,{modelValue:N.value.map(le=>le.props.value).join(", "),"onUpdate:modelValue":oe,focused:F.value,"onUpdate:focused":le=>F.value=le,validationValue:N.externalValue,counterValue:O.value,dirty:te,class:["v-select",{"v-select--active-menu":I.value,"v-select--chips":!!n.chips,[`v-select--${n.multiple?"multiple":"single"}`]:!0,"v-select--selected":N.value.length,"v-select--selection-slot":!!_.selection},n.class],style:n.style,inputmode:"none",placeholder:ce,"onClick:clear":ie,"onMousedown:control":pe,onBlur:q,onKeydown:W,"aria-label":S(U.value),title:S(U.value)}),{..._,default:()=>createVNode(Fragment,null,[createVNode(VMenu,mergeProps({ref:x,modelValue:I.value,"onUpdate:modelValue":le=>I.value=le,activator:"parent",contentClass:"v-select__content",disabled:Q.value,eager:n.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:n.transition,onAfterEnter:G,onAfterLeave:ne},J.value),{default:()=>[se&&createVNode(VList,mergeProps({ref:Z,selected:L.value,selectStrategy:n.multiple?"independent":"single-independent",onMousedown:le=>le.preventDefault(),onKeydown:ue,onFocusin:ee,tabindex:"-1","aria-live":"polite",color:n.itemColor??n.color},re,n.listProps),{default:()=>[_["prepend-item"]?.(),!H.value.length&&!n.hideNoData&&(_["no-data"]?.()??createVNode(VListItem,{title:S(n.noDataText)},null)),createVNode(VVirtualScroll,{ref:T,renderless:!0,items:H.value},{default:le=>{let{item:ye,index:de,itemRef:he}=le;const me=mergeProps(ye.props,{ref:he,key:de,onClick:()=>Y(ye,null)});return _.item?.({item:ye,index:de,props:me})??createVNode(VListItem,mergeProps(me,{role:"option"}),{prepend:Ee=>{let{isSelected:Ce}=Ee;return createVNode(Fragment,null,[n.multiple&&!n.hideSelected?createVNode(VCheckboxBtn,{key:ye.value,modelValue:Ce,ripple:!1,tabindex:"-1"},null):void 0,ye.props.prependAvatar&&createVNode(VAvatar,{image:ye.props.prependAvatar},null),ye.props.prependIcon&&createVNode(VIcon,{icon:ye.props.prependIcon},null)])}})}}),_["append-item"]?.()]})]}),N.value.map((le,ye)=>{function de(Ce){Ce.stopPropagation(),Ce.preventDefault(),Y(le,!1)}const he={"onClick:close":de,onKeydown(Ce){Ce.key!=="Enter"&&Ce.key!==" "||(Ce.preventDefault(),Ce.stopPropagation(),de(Ce))},onMousedown(Ce){Ce.preventDefault(),Ce.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},me=ae?!!_.chip:!!_.selection,Ee=me?ensureValidVNode(ae?_.chip({item:le,index:ye,props:he}):_.selection({item:le,index:ye})):void 0;if(!(me&&!Ee))return createVNode("div",{key:le.value,class:"v-select__selection"},[ae?_.chip?createVNode(VDefaultsProvider,{key:"chip-defaults",defaults:{VChip:{closable:n.closableChips,size:"small",text:le.title}}},{default:()=>[Ee]}):createVNode(VChip,mergeProps({key:"chip",closable:n.closableChips,size:"small",text:le.title,disabled:le.props.disabled},he),null):Ee??createVNode("span",{class:"v-select__selection-text"},[le.title,n.multiple&&yen==null||r==null?-1:n.toString().toLocaleLowerCase().indexOf(r.toString().toLocaleLowerCase()),makeFilterProps=propsFactory({customFilter:Function,customKeyFilter:Object,filterKeys:[Array,String],filterMode:{type:String,default:"intersection"},noFilter:Boolean},"filter");function filterItems(n,r,_){const S=[],E=_?.default??defaultFilter,x=_?.filterKeys?wrapInArray(_.filterKeys):!1,T=Object.keys(_?.customKeyFilter??{}).length;if(!n?.length)return S;e:for(let C=0;C0)&&!_?.noFilter){if(typeof I=="object"){const L=x||Object.keys(B);for(const F of L){const U=getPropertyFromItem(B,F),j=_?.customKeyFilter?.[F];if(N=j?j(U,r,I):E(U,r,I),N!==-1&&N!==!1)j?A[F]=N:D[F]=N;else if(_?.filterMode==="every")continue e}}else N=E(I,r,I),N!==-1&&N!==!1&&(D.title=N);const O=Object.keys(D).length,M=Object.keys(A).length;if(!O&&!M||_?.filterMode==="union"&&M!==T&&!O||_?.filterMode==="intersection"&&(M!==T||!O))continue}S.push({index:C,matches:{...D,...A}})}return S}function useFilter(n,r,_,S){const E=ref$2([]),x=ref$2(new Map),T=computed(()=>S?.transform?unref(r).map(I=>[I,S.transform(I)]):unref(r));watchEffect(()=>{const I=typeof _=="function"?_():unref(_),B=typeof I!="string"&&typeof I!="number"?"":String(I),A=filterItems(T.value,B,{customKeyFilter:{...n.customKeyFilter,...unref(S?.customKeyFilter)},default:n.customFilter,filterKeys:n.filterKeys,filterMode:n.filterMode,noFilter:n.noFilter}),D=unref(r),N=[],O=new Map;A.forEach(M=>{let{index:L,matches:F}=M;const U=D[L];N.push(U),O.set(U.value,F)}),E.value=N,x.value=O});function C(I){return x.value.get(I.value)}return{filteredItems:E,filteredMatches:x,getMatches:C}}function highlightResult$1(n,r,_){if(r==null)return n;if(Array.isArray(r))throw new Error("Multiple matches is not implemented");return typeof r=="number"&&~r?createVNode(Fragment,null,[createVNode("span",{class:"v-autocomplete__unmask"},[n.substr(0,r)]),createVNode("span",{class:"v-autocomplete__mask"},[n.substr(r,_)]),createVNode("span",{class:"v-autocomplete__unmask"},[n.substr(r+_)])]):n}const makeVAutocompleteProps=propsFactory({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:Boolean,search:String,...makeFilterProps({filterKeys:["title"]}),...makeSelectProps(),...omit(makeVTextFieldProps({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...makeTransitionProps({transition:!1})},"VAutocomplete"),VAutocomplete=genericComponent()({name:"VAutocomplete",props:makeVAutocompleteProps(),emits:{"update:focused":n=>!0,"update:search":n=>!0,"update:modelValue":n=>!0,"update:menu":n=>!0},setup(n,r){let{slots:_}=r;const{t:S}=useLocale(),E=ref$2(),x=shallowRef(!1),T=shallowRef(!0),C=shallowRef(!1),I=ref$2(),B=ref$2(),A=useProxiedModel(n,"menu"),D=computed({get:()=>A.value,set:be=>{A.value&&!be&&I.value?.ΨopenChildren.size||(A.value=be)}}),N=shallowRef(-1),O=computed(()=>E.value?.color),M=computed(()=>D.value?n.closeText:n.openText),{items:L,transformIn:F,transformOut:U}=useItems(n),{textColorClasses:j,textColorStyles:z}=useTextColor(O),H=useProxiedModel(n,"search",""),Q=useProxiedModel(n,"modelValue",[],be=>F(be===null?[null]:wrapInArray(be)),be=>{const ge=U(be);return n.multiple?ge:ge[0]??null}),J=computed(()=>typeof n.counterValue=="function"?n.counterValue(Q.value):typeof n.counterValue=="number"?n.counterValue:Q.value.length),Z=useForm(),{filteredItems:re,getMatches:ie}=useFilter(n,L,()=>T.value?"":H.value),pe=computed(()=>n.hideSelected?re.value.filter(be=>!Q.value.some(ge=>ge.value===be.value)):re.value),ue=computed(()=>!!(n.chips||_.chip)),W=computed(()=>ue.value||!!_.selection),Y=computed(()=>Q.value.map(be=>be.props.value)),q=computed(()=>(n.autoSelectFirst===!0||n.autoSelectFirst==="exact"&&H.value===pe.value[0]?.title)&&pe.value.length>0&&!T.value&&!C.value),G=computed(()=>n.hideNoData&&!pe.value.length||n.readonly||Z?.isReadonly.value),ne=ref$2(),ee=useScrolling(ne,E);function oe(be){n.openOnClear&&(D.value=!0),H.value=""}function ae(){G.value||(D.value=!0)}function se(be){G.value||(x.value&&(be.preventDefault(),be.stopPropagation()),D.value=!D.value)}function te(be){checkPrintable(be)&&E.value?.focus()}function X(be){if(n.readonly||Z?.isReadonly.value)return;const ge=E.value.selectionStart,we=Q.value.length;if((N.value>-1||["Enter","ArrowDown","ArrowUp"].includes(be.key))&&be.preventDefault(),["Enter","ArrowDown"].includes(be.key)&&(D.value=!0),["Escape"].includes(be.key)&&(D.value=!1),q.value&&["Enter","Tab"].includes(be.key)&&!Q.value.some(fe=>{let{value:xe}=fe;return xe===pe.value[0].value})&&Ce(pe.value[0]),be.key==="ArrowDown"&&q.value&&ne.value?.focus("next"),["Backspace","Delete"].includes(be.key)){if(!n.multiple&&W.value&&Q.value.length>0&&!H.value)return Ce(Q.value[0],!1);if(~N.value){const fe=N.value;Ce(Q.value[N.value],!1),N.value=fe>=we-1?we-2:fe}else be.key==="Backspace"&&!H.value&&(N.value=we-1)}if(n.multiple){if(be.key==="ArrowLeft"){if(N.value<0&&ge>0)return;const fe=N.value>-1?N.value-1:we-1;Q.value[fe]?N.value=fe:(N.value=-1,E.value.setSelectionRange(H.value?.length,H.value?.length))}if(be.key==="ArrowRight"){if(N.value<0)return;const fe=N.value+1;Q.value[fe]?N.value=fe:(N.value=-1,E.value.setSelectionRange(0,0))}}}function ce(be){if(matchesSelector(E.value,":autofill")||matchesSelector(E.value,":-webkit-autofill")){const ge=L.value.find(we=>we.title===be.target.value);ge&&Ce(ge)}}function le(){n.eager&&B.value?.calculateVisibleItems()}function ye(){x.value&&(T.value=!0,E.value?.focus())}function de(be){x.value=!0,setTimeout(()=>{C.value=!0})}function he(be){C.value=!1}function me(be){(be==null||be===""&&!n.multiple&&!W.value)&&(Q.value=[])}const Ee=shallowRef(!1);function Ce(be){let ge=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!be||be.props.disabled))if(n.multiple){const we=Q.value.findIndex(xe=>n.valueComparator(xe.value,be.value)),fe=ge??!~we;if(~we){const xe=fe?[...Q.value,be]:[...Q.value];xe.splice(we,1),Q.value=xe}else fe&&(Q.value=[...Q.value,be]);n.clearOnSelect&&(H.value="")}else{const we=ge!==!1;Q.value=we?[be]:[],H.value=we&&!W.value?be.title:"",nextTick$2(()=>{D.value=!1,T.value=!0})}}return watch(x,(be,ge)=>{be!==ge&&(be?(Ee.value=!0,H.value=n.multiple||W.value?"":String(Q.value.at(-1)?.props.title??""),T.value=!0,nextTick$2(()=>Ee.value=!1)):(!n.multiple&&H.value==null&&(Q.value=[]),D.value=!1,Q.value.some(we=>{let{title:fe}=we;return fe===H.value})||(H.value=""),N.value=-1))}),watch(H,be=>{!x.value||Ee.value||(be&&(D.value=!0),T.value=!be)}),watch(D,()=>{if(!n.hideSelected&&D.value&&Q.value.length){const be=pe.value.findIndex(ge=>Q.value.some(we=>ge.value===we.value));IN_BROWSER&&window.requestAnimationFrame(()=>{be>=0&&B.value?.scrollToIndex(be)})}}),watch(()=>n.items,(be,ge)=>{D.value||x.value&&!ge.length&&be.length&&(D.value=!0)}),useRender(()=>{const be=!!(!n.hideNoData||pe.value.length||_["prepend-item"]||_["append-item"]||_["no-data"]),ge=Q.value.length>0,we=VTextField.filterProps(n);return createVNode(VTextField,mergeProps({ref:E},we,{modelValue:H.value,"onUpdate:modelValue":[fe=>H.value=fe,me],focused:x.value,"onUpdate:focused":fe=>x.value=fe,validationValue:Q.externalValue,counterValue:J.value,dirty:ge,onChange:ce,class:["v-autocomplete",`v-autocomplete--${n.multiple?"multiple":"single"}`,{"v-autocomplete--active-menu":D.value,"v-autocomplete--chips":!!n.chips,"v-autocomplete--selection-slot":!!W.value,"v-autocomplete--selecting-index":N.value>-1},n.class],style:n.style,readonly:n.readonly,placeholder:ge?void 0:n.placeholder,"onClick:clear":oe,"onMousedown:control":ae,onKeydown:X}),{..._,default:()=>createVNode(Fragment,null,[createVNode(VMenu,mergeProps({ref:I,modelValue:D.value,"onUpdate:modelValue":fe=>D.value=fe,activator:"parent",contentClass:"v-autocomplete__content",disabled:G.value,eager:n.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:n.transition,onAfterEnter:le,onAfterLeave:ye},n.menuProps),{default:()=>[be&&createVNode(VList,mergeProps({ref:ne,selected:Y.value,selectStrategy:n.multiple?"independent":"single-independent",onMousedown:fe=>fe.preventDefault(),onKeydown:te,onFocusin:de,onFocusout:he,tabindex:"-1","aria-live":"polite",color:n.itemColor??n.color},ee,n.listProps),{default:()=>[_["prepend-item"]?.(),!pe.value.length&&!n.hideNoData&&(_["no-data"]?.()??createVNode(VListItem,{title:S(n.noDataText)},null)),createVNode(VVirtualScroll,{ref:B,renderless:!0,items:pe.value},{default:fe=>{let{item:xe,index:Ie,itemRef:Se}=fe;const $e=mergeProps(xe.props,{ref:Se,key:Ie,active:q.value&&Ie===0?!0:void 0,onClick:()=>Ce(xe,null)});return _.item?.({item:xe,index:Ie,props:$e})??createVNode(VListItem,mergeProps($e,{role:"option"}),{prepend:ke=>{let{isSelected:Pe}=ke;return createVNode(Fragment,null,[n.multiple&&!n.hideSelected?createVNode(VCheckboxBtn,{key:xe.value,modelValue:Pe,ripple:!1,tabindex:"-1"},null):void 0,xe.props.prependAvatar&&createVNode(VAvatar,{image:xe.props.prependAvatar},null),xe.props.prependIcon&&createVNode(VIcon,{icon:xe.props.prependIcon},null)])},title:()=>T.value?xe.title:highlightResult$1(xe.title,ie(xe)?.title,H.value?.length??0)})}}),_["append-item"]?.()]})]}),Q.value.map((fe,xe)=>{function Ie(Pe){Pe.stopPropagation(),Pe.preventDefault(),Ce(fe,!1)}const Se={"onClick:close":Ie,onKeydown(Pe){Pe.key!=="Enter"&&Pe.key!==" "||(Pe.preventDefault(),Pe.stopPropagation(),Ie(Pe))},onMousedown(Pe){Pe.preventDefault(),Pe.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},$e=ue.value?!!_.chip:!!_.selection,ke=$e?ensureValidVNode(ue.value?_.chip({item:fe,index:xe,props:Se}):_.selection({item:fe,index:xe})):void 0;if(!($e&&!ke))return createVNode("div",{key:fe.value,class:["v-autocomplete__selection",xe===N.value&&["v-autocomplete__selection--selected",j.value]],style:xe===N.value?z.value:{}},[ue.value?_.chip?createVNode(VDefaultsProvider,{key:"chip-defaults",defaults:{VChip:{closable:n.closableChips,size:"small",text:fe.title}}},{default:()=>[ke]}):createVNode(VChip,mergeProps({key:"chip",closable:n.closableChips,size:"small",text:fe.title,disabled:fe.props.disabled},Se),null):ke??createVNode("span",{class:"v-autocomplete__selection-text"},[fe.title,n.multiple&&xe(n.floating?n.dot?2:4:n.dot?8:12)+(["top","bottom"].includes(A)?+(n.offsetY??0):["left","right"].includes(A)?+(n.offsetX??0):0));return useRender(()=>{const A=Number(n.content),D=!n.max||isNaN(A)?n.content:A<=+n.max?A:`${n.max}+`,[N,O]=pickWithRest(r.attrs,["aria-atomic","aria-label","aria-live","role","title"]);return createVNode(n.tag,mergeProps({class:["v-badge",{"v-badge--bordered":n.bordered,"v-badge--dot":n.dot,"v-badge--floating":n.floating,"v-badge--inline":n.inline},n.class]},O,{style:n.style}),{default:()=>[createVNode("div",{class:"v-badge__wrapper"},[r.slots.default?.(),createVNode(MaybeTransition,{transition:n.transition},{default:()=>[withDirectives(createVNode("span",mergeProps({class:["v-badge__badge",I.value,_.value,E.value,T.value],style:[S.value,C.value,n.inline?{}:B.value],"aria-atomic":"true","aria-label":x(n.label,A),"aria-live":"polite",role:"status"},N),[n.dot?void 0:r.slots.badge?r.slots.badge?.():n.icon?createVNode(VIcon,{icon:n.icon},null):D]),[[vShow,n.modelValue]])]})])]})}),{}}}),makeVBannerActionsProps=propsFactory({color:String,density:String,...makeComponentProps()},"VBannerActions"),VBannerActions=genericComponent()({name:"VBannerActions",props:makeVBannerActionsProps(),setup(n,r){let{slots:_}=r;return provideDefaults({VBtn:{color:n.color,density:n.density,slim:!0,variant:"text"}}),useRender(()=>createVNode("div",{class:["v-banner-actions",n.class],style:n.style},[_.default?.()])),{}}}),VBannerText=createSimpleFunctional("v-banner-text"),makeVBannerProps=propsFactory({avatar:String,bgColor:String,color:String,icon:IconValue,lines:String,stacked:Boolean,sticky:Boolean,text:String,...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeDimensionProps(),...makeDisplayProps({mobile:null}),...makeElevationProps(),...makeLocationProps(),...makePositionProps(),...makeRoundedProps(),...makeTagProps(),...makeThemeProps()},"VBanner"),VBanner=genericComponent()({name:"VBanner",props:makeVBannerProps(),setup(n,r){let{slots:_}=r;const{backgroundColorClasses:S,backgroundColorStyles:E}=useBackgroundColor(n,"bgColor"),{borderClasses:x}=useBorder(n),{densityClasses:T}=useDensity(n),{displayClasses:C,mobile:I}=useDisplay(n),{dimensionStyles:B}=useDimension(n),{elevationClasses:A}=useElevation(n),{locationStyles:D}=useLocation(n),{positionClasses:N}=usePosition(n),{roundedClasses:O}=useRounded(n),{themeClasses:M}=provideTheme(n),L=toRef(n,"color"),F=toRef(n,"density");provideDefaults({VBannerActions:{color:L,density:F}}),useRender(()=>{const U=!!(n.text||_.text),j=!!(n.avatar||n.icon),z=!!(j||_.prepend);return createVNode(n.tag,{class:["v-banner",{"v-banner--stacked":n.stacked||I.value,"v-banner--sticky":n.sticky,[`v-banner--${n.lines}-line`]:!!n.lines},M.value,S.value,x.value,T.value,C.value,A.value,N.value,O.value,n.class],style:[E.value,B.value,D.value,n.style],role:"banner"},{default:()=>[z&&createVNode("div",{key:"prepend",class:"v-banner__prepend"},[_.prepend?createVNode(VDefaultsProvider,{key:"prepend-defaults",disabled:!j,defaults:{VAvatar:{color:L.value,density:F.value,icon:n.icon,image:n.avatar}}},_.prepend):createVNode(VAvatar,{key:"prepend-avatar",color:L.value,density:F.value,icon:n.icon,image:n.avatar},null)]),createVNode("div",{class:"v-banner__content"},[U&&createVNode(VBannerText,{key:"text"},{default:()=>[_.text?.()??n.text]}),_.default?.()]),_.actions&&createVNode(VBannerActions,{key:"actions"},_.actions)]})})}}),makeVBottomNavigationProps=propsFactory({baseColor:String,bgColor:String,color:String,grow:Boolean,mode:{type:String,validator:n=>!n||["horizontal","shift"].includes(n)},height:{type:[Number,String],default:56},active:{type:Boolean,default:!0},...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeElevationProps(),...makeRoundedProps(),...makeLayoutItemProps({name:"bottom-navigation"}),...makeTagProps({tag:"header"}),...makeGroupProps({selectedClass:"v-btn--selected"}),...makeThemeProps()},"VBottomNavigation"),VBottomNavigation=genericComponent()({name:"VBottomNavigation",props:makeVBottomNavigationProps(),emits:{"update:active":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{themeClasses:S}=useTheme(),{borderClasses:E}=useBorder(n),{backgroundColorClasses:x,backgroundColorStyles:T}=useBackgroundColor(toRef(n,"bgColor")),{densityClasses:C}=useDensity(n),{elevationClasses:I}=useElevation(n),{roundedClasses:B}=useRounded(n),{ssrBootStyles:A}=useSsrBoot(),D=computed(()=>Number(n.height)-(n.density==="comfortable"?8:0)-(n.density==="compact"?16:0)),N=useProxiedModel(n,"active",n.active),{layoutItemStyles:O}=useLayoutItem({id:n.name,order:computed(()=>parseInt(n.order,10)),position:computed(()=>"bottom"),layoutSize:computed(()=>N.value?D.value:0),elementSize:D,active:N,absolute:toRef(n,"absolute")});return useGroup(n,VBtnToggleSymbol),provideDefaults({VBtn:{baseColor:toRef(n,"baseColor"),color:toRef(n,"color"),density:toRef(n,"density"),stacked:computed(()=>n.mode!=="horizontal"),variant:"text"}},{scoped:!0}),useRender(()=>createVNode(n.tag,{class:["v-bottom-navigation",{"v-bottom-navigation--active":N.value,"v-bottom-navigation--grow":n.grow,"v-bottom-navigation--shift":n.mode==="shift"},S.value,x.value,E.value,C.value,I.value,B.value,n.class],style:[T.value,O.value,{height:convertToUnit(D.value)},A.value,n.style]},{default:()=>[_.default&&createVNode("div",{class:"v-bottom-navigation__content"},[_.default()])]})),{}}}),makeVDialogProps=propsFactory({fullscreen:Boolean,retainFocus:{type:Boolean,default:!0},scrollable:Boolean,...makeVOverlayProps({origin:"center center",scrollStrategy:"block",transition:{component:VDialogTransition},zIndex:2400})},"VDialog"),VDialog=genericComponent()({name:"VDialog",props:makeVDialogProps(),emits:{"update:modelValue":n=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useProxiedModel(n,"modelValue"),{scopeId:x}=useScopeId(),T=ref$2();function C(A){const D=A.relatedTarget,N=A.target;if(D!==N&&T.value?.contentEl&&T.value?.globalTop&&![document,T.value.contentEl].includes(N)&&!T.value.contentEl.contains(N)){const O=focusableChildren(T.value.contentEl);if(!O.length)return;const M=O[0],L=O[O.length-1];D===M?L.focus():M.focus()}}IN_BROWSER&&watch(()=>E.value&&n.retainFocus,A=>{A?document.addEventListener("focusin",C):document.removeEventListener("focusin",C)},{immediate:!0});function I(){_("afterEnter"),T.value?.contentEl&&!T.value.contentEl.contains(document.activeElement)&&T.value.contentEl.focus({preventScroll:!0})}function B(){_("afterLeave")}return watch(E,async A=>{A||(await nextTick$2(),T.value.activatorEl?.focus({preventScroll:!0}))}),useRender(()=>{const A=VOverlay.filterProps(n),D=mergeProps({"aria-haspopup":"dialog"},n.activatorProps),N=mergeProps({tabindex:-1},n.contentProps);return createVNode(VOverlay,mergeProps({ref:T,class:["v-dialog",{"v-dialog--fullscreen":n.fullscreen,"v-dialog--scrollable":n.scrollable},n.class],style:n.style},A,{modelValue:E.value,"onUpdate:modelValue":O=>E.value=O,"aria-modal":"true",activatorProps:D,contentProps:N,role:"dialog",onAfterEnter:I,onAfterLeave:B},x),{activator:S.activator,default:function(){for(var O=arguments.length,M=new Array(O),L=0;L[S.default?.(...M)]})}})}),forwardRefs({},T)}}),makeVBottomSheetProps=propsFactory({inset:Boolean,...makeVDialogProps({transition:"bottom-sheet-transition"})},"VBottomSheet"),VBottomSheet=genericComponent()({name:"VBottomSheet",props:makeVBottomSheetProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue");return useRender(()=>{const E=VDialog.filterProps(n);return createVNode(VDialog,mergeProps(E,{contentClass:["v-bottom-sheet__content",n.contentClass],modelValue:S.value,"onUpdate:modelValue":x=>S.value=x,class:["v-bottom-sheet",{"v-bottom-sheet--inset":n.inset},n.class],style:n.style}),_)}),{}}}),makeVBreadcrumbsDividerProps=propsFactory({divider:[Number,String],...makeComponentProps()},"VBreadcrumbsDivider"),VBreadcrumbsDivider=genericComponent()({name:"VBreadcrumbsDivider",props:makeVBreadcrumbsDividerProps(),setup(n,r){let{slots:_}=r;return useRender(()=>createVNode("li",{class:["v-breadcrumbs-divider",n.class],style:n.style},[_?.default?.()??n.divider])),{}}}),makeVBreadcrumbsItemProps=propsFactory({active:Boolean,activeClass:String,activeColor:String,color:String,disabled:Boolean,title:String,...makeComponentProps(),...makeRouterProps(),...makeTagProps({tag:"li"})},"VBreadcrumbsItem"),VBreadcrumbsItem=genericComponent()({name:"VBreadcrumbsItem",props:makeVBreadcrumbsItemProps(),setup(n,r){let{slots:_,attrs:S}=r;const E=useLink$1(n,S),x=computed(()=>n.active||E.isActive?.value),T=computed(()=>x.value?n.activeColor:n.color),{textColorClasses:C,textColorStyles:I}=useTextColor(T);return useRender(()=>createVNode(n.tag,{class:["v-breadcrumbs-item",{"v-breadcrumbs-item--active":x.value,"v-breadcrumbs-item--disabled":n.disabled,[`${n.activeClass}`]:x.value&&n.activeClass},C.value,n.class],style:[I.value,n.style],"aria-current":x.value?"page":void 0},{default:()=>[E.isLink.value?createVNode("a",mergeProps({class:"v-breadcrumbs-item--link",onClick:E.navigate},E.linkProps),[_.default?.()??n.title]):_.default?.()??n.title]})),{}}}),makeVBreadcrumbsProps=propsFactory({activeClass:String,activeColor:String,bgColor:String,color:String,disabled:Boolean,divider:{type:String,default:"/"},icon:IconValue,items:{type:Array,default:()=>[]},...makeComponentProps(),...makeDensityProps(),...makeRoundedProps(),...makeTagProps({tag:"ul"})},"VBreadcrumbs"),VBreadcrumbs=genericComponent()({name:"VBreadcrumbs",props:makeVBreadcrumbsProps(),setup(n,r){let{slots:_}=r;const{backgroundColorClasses:S,backgroundColorStyles:E}=useBackgroundColor(toRef(n,"bgColor")),{densityClasses:x}=useDensity(n),{roundedClasses:T}=useRounded(n);provideDefaults({VBreadcrumbsDivider:{divider:toRef(n,"divider")},VBreadcrumbsItem:{activeClass:toRef(n,"activeClass"),activeColor:toRef(n,"activeColor"),color:toRef(n,"color"),disabled:toRef(n,"disabled")}});const C=computed(()=>n.items.map(I=>typeof I=="string"?{item:{title:I},raw:I}:{item:I,raw:I}));return useRender(()=>{const I=!!(_.prepend||n.icon);return createVNode(n.tag,{class:["v-breadcrumbs",S.value,x.value,T.value,n.class],style:[E.value,n.style]},{default:()=>[I&&createVNode("li",{key:"prepend",class:"v-breadcrumbs__prepend"},[_.prepend?createVNode(VDefaultsProvider,{key:"prepend-defaults",disabled:!n.icon,defaults:{VIcon:{icon:n.icon,start:!0}}},_.prepend):createVNode(VIcon,{key:"prepend-icon",start:!0,icon:n.icon},null)]),C.value.map((B,A,D)=>{let{item:N,raw:O}=B;return createVNode(Fragment,null,[_.item?.({item:N,index:A})??createVNode(VBreadcrumbsItem,mergeProps({key:A,disabled:A>=D.length-1},typeof N=="string"?{title:N}:N),{default:_.title?()=>_.title?.({item:N,index:A}):void 0}),A_.divider?.({item:O,index:A}):void 0})])}),_.default?.()]})}),{}}}),VCardActions=genericComponent()({name:"VCardActions",props:makeComponentProps(),setup(n,r){let{slots:_}=r;return provideDefaults({VBtn:{slim:!0,variant:"text"}}),useRender(()=>createVNode("div",{class:["v-card-actions",n.class],style:n.style},[_.default?.()])),{}}}),makeVCardSubtitleProps=propsFactory({opacity:[Number,String],...makeComponentProps(),...makeTagProps()},"VCardSubtitle"),VCardSubtitle=genericComponent()({name:"VCardSubtitle",props:makeVCardSubtitleProps(),setup(n,r){let{slots:_}=r;return useRender(()=>createVNode(n.tag,{class:["v-card-subtitle",n.class],style:[{"--v-card-subtitle-opacity":n.opacity},n.style]},_)),{}}}),VCardTitle=createSimpleFunctional("v-card-title"),makeCardItemProps=propsFactory({appendAvatar:String,appendIcon:IconValue,prependAvatar:String,prependIcon:IconValue,subtitle:[String,Number],title:[String,Number],...makeComponentProps(),...makeDensityProps()},"VCardItem"),VCardItem=genericComponent()({name:"VCardItem",props:makeCardItemProps(),setup(n,r){let{slots:_}=r;return useRender(()=>{const S=!!(n.prependAvatar||n.prependIcon),E=!!(S||_.prepend),x=!!(n.appendAvatar||n.appendIcon),T=!!(x||_.append),C=!!(n.title!=null||_.title),I=!!(n.subtitle!=null||_.subtitle);return createVNode("div",{class:["v-card-item",n.class],style:n.style},[E&&createVNode("div",{key:"prepend",class:"v-card-item__prepend"},[_.prepend?createVNode(VDefaultsProvider,{key:"prepend-defaults",disabled:!S,defaults:{VAvatar:{density:n.density,image:n.prependAvatar},VIcon:{density:n.density,icon:n.prependIcon}}},_.prepend):createVNode(Fragment,null,[n.prependAvatar&&createVNode(VAvatar,{key:"prepend-avatar",density:n.density,image:n.prependAvatar},null),n.prependIcon&&createVNode(VIcon,{key:"prepend-icon",density:n.density,icon:n.prependIcon},null)])]),createVNode("div",{class:"v-card-item__content"},[C&&createVNode(VCardTitle,{key:"title"},{default:()=>[_.title?.()??n.title]}),I&&createVNode(VCardSubtitle,{key:"subtitle"},{default:()=>[_.subtitle?.()??n.subtitle]}),_.default?.()]),T&&createVNode("div",{key:"append",class:"v-card-item__append"},[_.append?createVNode(VDefaultsProvider,{key:"append-defaults",disabled:!x,defaults:{VAvatar:{density:n.density,image:n.appendAvatar},VIcon:{density:n.density,icon:n.appendIcon}}},_.append):createVNode(Fragment,null,[n.appendIcon&&createVNode(VIcon,{key:"append-icon",density:n.density,icon:n.appendIcon},null),n.appendAvatar&&createVNode(VAvatar,{key:"append-avatar",density:n.density,image:n.appendAvatar},null)])])])}),{}}}),makeVCardTextProps=propsFactory({opacity:[Number,String],...makeComponentProps(),...makeTagProps()},"VCardText"),VCardText=genericComponent()({name:"VCardText",props:makeVCardTextProps(),setup(n,r){let{slots:_}=r;return useRender(()=>createVNode(n.tag,{class:["v-card-text",n.class],style:[{"--v-card-text-opacity":n.opacity},n.style]},_)),{}}}),makeVCardProps=propsFactory({appendAvatar:String,appendIcon:IconValue,disabled:Boolean,flat:Boolean,hover:Boolean,image:String,link:{type:Boolean,default:void 0},prependAvatar:String,prependIcon:IconValue,ripple:{type:[Boolean,Object],default:!0},subtitle:[String,Number],text:[String,Number],title:[String,Number],...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeDimensionProps(),...makeElevationProps(),...makeLoaderProps(),...makeLocationProps(),...makePositionProps(),...makeRoundedProps(),...makeRouterProps(),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:"elevated"})},"VCard"),VCard=genericComponent()({name:"VCard",directives:{Ripple},props:makeVCardProps(),setup(n,r){let{attrs:_,slots:S}=r;const{themeClasses:E}=provideTheme(n),{borderClasses:x}=useBorder(n),{colorClasses:T,colorStyles:C,variantClasses:I}=useVariant(n),{densityClasses:B}=useDensity(n),{dimensionStyles:A}=useDimension(n),{elevationClasses:D}=useElevation(n),{loaderClasses:N}=useLoader(n),{locationStyles:O}=useLocation(n),{positionClasses:M}=usePosition(n),{roundedClasses:L}=useRounded(n),F=useLink$1(n,_),U=computed(()=>n.link!==!1&&F.isLink.value),j=computed(()=>!n.disabled&&n.link!==!1&&(n.link||F.isClickable.value));return useRender(()=>{const z=U.value?"a":n.tag,H=!!(S.title||n.title!=null),Q=!!(S.subtitle||n.subtitle!=null),J=H||Q,Z=!!(S.append||n.appendAvatar||n.appendIcon),re=!!(S.prepend||n.prependAvatar||n.prependIcon),ie=!!(S.image||n.image),pe=J||re||Z,ue=!!(S.text||n.text!=null);return withDirectives(createVNode(z,mergeProps({class:["v-card",{"v-card--disabled":n.disabled,"v-card--flat":n.flat,"v-card--hover":n.hover&&!(n.disabled||n.flat),"v-card--link":j.value},E.value,x.value,T.value,B.value,D.value,N.value,M.value,L.value,I.value,n.class],style:[C.value,A.value,O.value,n.style],onClick:j.value&&F.navigate,tabindex:n.disabled?-1:void 0},F.linkProps),{default:()=>[ie&&createVNode("div",{key:"image",class:"v-card__image"},[S.image?createVNode(VDefaultsProvider,{key:"image-defaults",disabled:!n.image,defaults:{VImg:{cover:!0,src:n.image}}},S.image):createVNode(VImg,{key:"image-img",cover:!0,src:n.image},null)]),createVNode(LoaderSlot,{name:"v-card",active:!!n.loading,color:typeof n.loading=="boolean"?void 0:n.loading},{default:S.loader}),pe&&createVNode(VCardItem,{key:"item",prependAvatar:n.prependAvatar,prependIcon:n.prependIcon,title:n.title,subtitle:n.subtitle,appendAvatar:n.appendAvatar,appendIcon:n.appendIcon},{default:S.item,prepend:S.prepend,title:S.title,subtitle:S.subtitle,append:S.append}),ue&&createVNode(VCardText,{key:"text"},{default:()=>[S.text?.()??n.text]}),S.default?.(),S.actions&&createVNode(VCardActions,null,{default:S.actions}),genOverlays(j.value,"v-card")]}),[[resolveDirective("ripple"),j.value&&n.ripple]])}),{}}}),handleGesture=n=>{const{touchstartX:r,touchendX:_,touchstartY:S,touchendY:E}=n,x=.5,T=16;n.offsetX=_-r,n.offsetY=E-S,Math.abs(n.offsetY)r+T&&n.right(n)),Math.abs(n.offsetX)S+T&&n.down(n))};function touchstart(n,r){const _=n.changedTouches[0];r.touchstartX=_.clientX,r.touchstartY=_.clientY,r.start?.({originalEvent:n,...r})}function touchend(n,r){const _=n.changedTouches[0];r.touchendX=_.clientX,r.touchendY=_.clientY,r.end?.({originalEvent:n,...r}),handleGesture(r)}function touchmove(n,r){const _=n.changedTouches[0];r.touchmoveX=_.clientX,r.touchmoveY=_.clientY,r.move?.({originalEvent:n,...r})}function createHandlers(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const r={touchstartX:0,touchstartY:0,touchendX:0,touchendY:0,touchmoveX:0,touchmoveY:0,offsetX:0,offsetY:0,left:n.left,right:n.right,up:n.up,down:n.down,start:n.start,move:n.move,end:n.end};return{touchstart:_=>touchstart(_,r),touchend:_=>touchend(_,r),touchmove:_=>touchmove(_,r)}}function mounted$3(n,r){const _=r.value,S=_?.parent?n.parentElement:n,E=_?.options??{passive:!0},x=r.instance?.$.uid;if(!S||!x)return;const T=createHandlers(r.value);S._touchHandlers=S._touchHandlers??Object.create(null),S._touchHandlers[x]=T,keys$2(T).forEach(C=>{S.addEventListener(C,T[C],E)})}function unmounted$3(n,r){const _=r.value?.parent?n.parentElement:n,S=r.instance?.$.uid;if(!_?._touchHandlers||!S)return;const E=_._touchHandlers[S];keys$2(E).forEach(x=>{_.removeEventListener(x,E[x])}),delete _._touchHandlers[S]}const Touch={mounted:mounted$3,unmounted:unmounted$3},VWindowSymbol=Symbol.for("vuetify:v-window"),VWindowGroupSymbol=Symbol.for("vuetify:v-window-group"),makeVWindowProps=propsFactory({continuous:Boolean,nextIcon:{type:[Boolean,String,Function,Object],default:"$next"},prevIcon:{type:[Boolean,String,Function,Object],default:"$prev"},reverse:Boolean,showArrows:{type:[Boolean,String],validator:n=>typeof n=="boolean"||n==="hover"},touch:{type:[Object,Boolean],default:void 0},direction:{type:String,default:"horizontal"},modelValue:null,disabled:Boolean,selectedClass:{type:String,default:"v-window-item--active"},mandatory:{type:[Boolean,String],default:"force"},...makeComponentProps(),...makeTagProps(),...makeThemeProps()},"VWindow"),VWindow=genericComponent()({name:"VWindow",directives:{Touch},props:makeVWindowProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n),{isRtl:E}=useRtl(),{t:x}=useLocale(),T=useGroup(n,VWindowGroupSymbol),C=ref$2(),I=computed(()=>E.value?!n.reverse:n.reverse),B=shallowRef(!1),A=computed(()=>{const H=n.direction==="vertical"?"y":"x",J=(I.value?!B.value:B.value)?"-reverse":"";return`v-window-${H}${J}-transition`}),D=shallowRef(0),N=ref$2(void 0),O=computed(()=>T.items.value.findIndex(H=>T.selected.value.includes(H.id)));watch(O,(H,Q)=>{const J=T.items.value.length,Z=J-1;J<=2?B.value=Hn.continuous||O.value!==0),L=computed(()=>n.continuous||O.value!==T.items.value.length-1);function F(){M.value&&T.prev()}function U(){L.value&&T.next()}const j=computed(()=>{const H=[],Q={icon:E.value?n.nextIcon:n.prevIcon,class:`v-window__${I.value?"right":"left"}`,onClick:T.prev,"aria-label":x("$vuetify.carousel.prev")};H.push(M.value?_.prev?_.prev({props:Q}):createVNode(VBtn,Q,null):createVNode("div",null,null));const J={icon:E.value?n.prevIcon:n.nextIcon,class:`v-window__${I.value?"left":"right"}`,onClick:T.next,"aria-label":x("$vuetify.carousel.next")};return H.push(L.value?_.next?_.next({props:J}):createVNode(VBtn,J,null):createVNode("div",null,null)),H}),z=computed(()=>n.touch===!1?n.touch:{...{left:()=>{I.value?F():U()},right:()=>{I.value?U():F()},start:Q=>{let{originalEvent:J}=Q;J.stopPropagation()}},...n.touch===!0?{}:n.touch});return useRender(()=>withDirectives(createVNode(n.tag,{ref:C,class:["v-window",{"v-window--show-arrows-on-hover":n.showArrows==="hover"},S.value,n.class],style:n.style},{default:()=>[createVNode("div",{class:"v-window__container",style:{height:N.value}},[_.default?.({group:T}),n.showArrows!==!1&&createVNode("div",{class:"v-window__controls"},[j.value])]),_.additional?.({group:T})]}),[[resolveDirective("touch"),z.value]])),{group:T}}}),makeVCarouselProps=propsFactory({color:String,cycle:Boolean,delimiterIcon:{type:IconValue,default:"$delimiter"},height:{type:[Number,String],default:500},hideDelimiters:Boolean,hideDelimiterBackground:Boolean,interval:{type:[Number,String],default:6e3,validator:n=>Number(n)>0},progress:[Boolean,String],verticalDelimiters:[Boolean,String],...makeVWindowProps({continuous:!0,mandatory:"force",showArrows:!0})},"VCarousel"),VCarousel=genericComponent()({name:"VCarousel",props:makeVCarouselProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),{t:E}=useLocale(),x=ref$2();let T=-1;watch(S,I),watch(()=>n.interval,I),watch(()=>n.cycle,B=>{B?I():window.clearTimeout(T)}),onMounted(C);function C(){!n.cycle||!x.value||(T=window.setTimeout(x.value.group.next,+n.interval>0?+n.interval:6e3))}function I(){window.clearTimeout(T),window.requestAnimationFrame(C)}return useRender(()=>{const B=VWindow.filterProps(n);return createVNode(VWindow,mergeProps({ref:x},B,{modelValue:S.value,"onUpdate:modelValue":A=>S.value=A,class:["v-carousel",{"v-carousel--hide-delimiter-background":n.hideDelimiterBackground,"v-carousel--vertical-delimiters":n.verticalDelimiters},n.class],style:[{height:convertToUnit(n.height)},n.style]}),{default:_.default,additional:A=>{let{group:D}=A;return createVNode(Fragment,null,[!n.hideDelimiters&&createVNode("div",{class:"v-carousel__controls",style:{left:n.verticalDelimiters==="left"&&n.verticalDelimiters?0:"auto",right:n.verticalDelimiters==="right"?0:"auto"}},[D.items.value.length>0&&createVNode(VDefaultsProvider,{defaults:{VBtn:{color:n.color,icon:n.delimiterIcon,size:"x-small",variant:"text"}},scoped:!0},{default:()=>[D.items.value.map((N,O)=>{const M={id:`carousel-item-${N.id}`,"aria-label":E("$vuetify.carousel.ariaLabel.delimiter",O+1,D.items.value.length),class:["v-carousel__controls__item",D.isSelected(N.id)&&"v-btn--active"],onClick:()=>D.select(N.id,!0)};return _.item?_.item({props:M,item:N}):createVNode(VBtn,mergeProps(N,M),null)})]})]),n.progress&&createVNode(VProgressLinear,{class:"v-carousel__progress",color:typeof n.progress=="string"?n.progress:void 0,modelValue:(D.getItemIndex(S.value)+1)/D.items.value.length*100},null)])},prev:_.prev,next:_.next})}),{}}}),makeVWindowItemProps=propsFactory({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},...makeComponentProps(),...makeGroupItemProps(),...makeLazyProps()},"VWindowItem"),VWindowItem=genericComponent()({name:"VWindowItem",directives:{Touch},props:makeVWindowItemProps(),emits:{"group:selected":n=>!0},setup(n,r){let{slots:_}=r;const S=inject$1(VWindowSymbol),E=useGroupItem(n,VWindowGroupSymbol),{isBooted:x}=useSsrBoot();if(!S||!E)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const T=shallowRef(!1),C=computed(()=>x.value&&(S.isReversed.value?n.reverseTransition!==!1:n.transition!==!1));function I(){!T.value||!S||(T.value=!1,S.transitionCount.value>0&&(S.transitionCount.value-=1,S.transitionCount.value===0&&(S.transitionHeight.value=void 0)))}function B(){T.value||!S||(T.value=!0,S.transitionCount.value===0&&(S.transitionHeight.value=convertToUnit(S.rootRef.value?.clientHeight)),S.transitionCount.value+=1)}function A(){I()}function D(M){T.value&&nextTick$2(()=>{!C.value||!T.value||!S||(S.transitionHeight.value=convertToUnit(M.clientHeight))})}const N=computed(()=>{const M=S.isReversed.value?n.reverseTransition:n.transition;return C.value?{name:typeof M!="string"?S.transition.value:M,onBeforeEnter:B,onAfterEnter:I,onEnterCancelled:A,onBeforeLeave:B,onAfterLeave:I,onLeaveCancelled:A,onEnter:D}:!1}),{hasContent:O}=useLazy(n,E.isSelected);return useRender(()=>createVNode(MaybeTransition,{transition:N.value,disabled:!x.value},{default:()=>[withDirectives(createVNode("div",{class:["v-window-item",E.selectedClass.value,n.class],style:n.style},[O.value&&_.default?.()]),[[vShow,E.isSelected.value]])]})),{groupItem:E}}}),makeVCarouselItemProps=propsFactory({...makeVImgProps(),...makeVWindowItemProps()},"VCarouselItem"),VCarouselItem=genericComponent()({name:"VCarouselItem",inheritAttrs:!1,props:makeVCarouselItemProps(),setup(n,r){let{slots:_,attrs:S}=r;useRender(()=>{const E=VImg.filterProps(n),x=VWindowItem.filterProps(n);return createVNode(VWindowItem,mergeProps({class:["v-carousel-item",n.class]},x),{default:()=>[createVNode(VImg,mergeProps(S,E),_)]})})}}),VCode=createSimpleFunctional("v-code"),makeVColorPickerCanvasProps=propsFactory({color:{type:Object},disabled:Boolean,dotSize:{type:[Number,String],default:10},height:{type:[Number,String],default:150},width:{type:[Number,String],default:300},...makeComponentProps()},"VColorPickerCanvas"),VColorPickerCanvas=defineComponent({name:"VColorPickerCanvas",props:makeVColorPickerCanvasProps(),emits:{"update:color":n=>!0,"update:position":n=>!0},setup(n,r){let{emit:_}=r;const S=shallowRef(!1),E=ref$2(),x=shallowRef(parseFloat(n.width)),T=shallowRef(parseFloat(n.height)),C=ref$2({x:0,y:0}),I=computed({get:()=>C.value,set(F){if(!E.value)return;const{x:U,y:j}=F;C.value=F,_("update:color",{h:n.color?.h??0,s:clamp(U,0,x.value)/x.value,v:1-clamp(j,0,T.value)/T.value,a:n.color?.a??1})}}),B=computed(()=>{const{x:F,y:U}=I.value,j=parseInt(n.dotSize,10)/2;return{width:convertToUnit(n.dotSize),height:convertToUnit(n.dotSize),transform:`translate(${convertToUnit(F-j)}, ${convertToUnit(U-j)})`}}),{resizeRef:A}=useResizeObserver(F=>{if(!A.el?.offsetParent)return;const{width:U,height:j}=F[0].contentRect;x.value=U,T.value=j});function D(F,U,j){const{left:z,top:H,width:Q,height:J}=j;I.value={x:clamp(F-z,0,Q),y:clamp(U-H,0,J)}}function N(F){F.type==="mousedown"&&F.preventDefault(),!n.disabled&&(O(F),window.addEventListener("mousemove",O),window.addEventListener("mouseup",M),window.addEventListener("touchmove",O),window.addEventListener("touchend",M))}function O(F){if(n.disabled||!E.value)return;S.value=!0;const U=getEventCoordinates(F);D(U.clientX,U.clientY,E.value.getBoundingClientRect())}function M(){window.removeEventListener("mousemove",O),window.removeEventListener("mouseup",M),window.removeEventListener("touchmove",O),window.removeEventListener("touchend",M)}function L(){if(!E.value)return;const F=E.value,U=F.getContext("2d");if(!U)return;const j=U.createLinearGradient(0,0,F.width,0);j.addColorStop(0,"hsla(0, 0%, 100%, 1)"),j.addColorStop(1,`hsla(${n.color?.h??0}, 100%, 50%, 1)`),U.fillStyle=j,U.fillRect(0,0,F.width,F.height);const z=U.createLinearGradient(0,0,0,F.height);z.addColorStop(0,"hsla(0, 0%, 0%, 0)"),z.addColorStop(1,"hsla(0, 0%, 0%, 1)"),U.fillStyle=z,U.fillRect(0,0,F.width,F.height)}return watch(()=>n.color?.h,L,{immediate:!0}),watch(()=>[x.value,T.value],(F,U)=>{L(),C.value={x:I.value.x*F[0]/U[0],y:I.value.y*F[1]/U[1]}},{flush:"post"}),watch(()=>n.color,()=>{if(S.value){S.value=!1;return}C.value=n.color?{x:n.color.s*x.value,y:(1-n.color.v)*T.value}:{x:0,y:0}},{deep:!0,immediate:!0}),onMounted(()=>L()),useRender(()=>createVNode("div",{ref:A,class:["v-color-picker-canvas",n.class],style:n.style,onMousedown:N,onTouchstartPassive:N},[createVNode("canvas",{ref:E,width:x.value,height:T.value},null),n.color&&createVNode("div",{class:["v-color-picker-canvas__dot",{"v-color-picker-canvas__dot--disabled":n.disabled}],style:B.value},null)])),{}}});function stripAlpha(n,r){if(r){const{a:_,...S}=n;return S}return n}function extractColor(n,r){if(r==null||typeof r=="string"){const _=HSVtoHex(n);return n.a===1?_.slice(0,7):_}if(typeof r=="object"){let _;return has$2(r,["r","g","b"])?_=HSVtoRGB(n):has$2(r,["h","s","l"])?_=HSVtoHSL(n):has$2(r,["h","s","v"])&&(_=n),stripAlpha(_,!has$2(r,["a"])&&n.a===1)}return n}const nullColor={h:0,s:0,v:0,a:1},rgba={inputProps:{type:"number",min:0},inputs:[{label:"R",max:255,step:1,getValue:n=>Math.round(n.r),getColor:(n,r)=>({...n,r:Number(r)})},{label:"G",max:255,step:1,getValue:n=>Math.round(n.g),getColor:(n,r)=>({...n,g:Number(r)})},{label:"B",max:255,step:1,getValue:n=>Math.round(n.b),getColor:(n,r)=>({...n,b:Number(r)})},{label:"A",max:1,step:.01,getValue:n=>{let{a:r}=n;return r!=null?Math.round(r*100)/100:1},getColor:(n,r)=>({...n,a:Number(r)})}],to:HSVtoRGB,from:RGBtoHSV},rgb={...rgba,inputs:rgba.inputs?.slice(0,3)},hsla={inputProps:{type:"number",min:0},inputs:[{label:"H",max:360,step:1,getValue:n=>Math.round(n.h),getColor:(n,r)=>({...n,h:Number(r)})},{label:"S",max:1,step:.01,getValue:n=>Math.round(n.s*100)/100,getColor:(n,r)=>({...n,s:Number(r)})},{label:"L",max:1,step:.01,getValue:n=>Math.round(n.l*100)/100,getColor:(n,r)=>({...n,l:Number(r)})},{label:"A",max:1,step:.01,getValue:n=>{let{a:r}=n;return r!=null?Math.round(r*100)/100:1},getColor:(n,r)=>({...n,a:Number(r)})}],to:HSVtoHSL,from:HSLtoHSV},hsl={...hsla,inputs:hsla.inputs.slice(0,3)},hexa={inputProps:{type:"text"},inputs:[{label:"HEXA",getValue:n=>n,getColor:(n,r)=>r}],to:HSVtoHex,from:HexToHSV},hex={...hexa,inputs:[{label:"HEX",getValue:n=>n.slice(0,7),getColor:(n,r)=>r}]},modes={rgb,rgba,hsl,hsla,hex,hexa},VColorPickerInput=n=>{let{label:r,..._}=n;return createVNode("div",{class:"v-color-picker-edit__input"},[createVNode("input",_,null),createVNode("span",null,[r])])},makeVColorPickerEditProps=propsFactory({color:Object,disabled:Boolean,mode:{type:String,default:"rgba",validator:n=>Object.keys(modes).includes(n)},modes:{type:Array,default:()=>Object.keys(modes),validator:n=>Array.isArray(n)&&n.every(r=>Object.keys(modes).includes(r))},...makeComponentProps()},"VColorPickerEdit"),VColorPickerEdit=defineComponent({name:"VColorPickerEdit",props:makeVColorPickerEditProps(),emits:{"update:color":n=>!0,"update:mode":n=>!0},setup(n,r){let{emit:_}=r;const S=computed(()=>n.modes.map(x=>({...modes[x],name:x}))),E=computed(()=>{const x=S.value.find(C=>C.name===n.mode);if(!x)return[];const T=n.color?x.to(n.color):null;return x.inputs?.map(C=>{let{getValue:I,getColor:B,...A}=C;return{...x.inputProps,...A,disabled:n.disabled,value:T&&I(T),onChange:D=>{const N=D.target;N&&_("update:color",x.from(B(T??x.to(nullColor),N.value)))}}})});return useRender(()=>createVNode("div",{class:["v-color-picker-edit",n.class],style:n.style},[E.value?.map(x=>createVNode(VColorPickerInput,x,null)),S.value.length>1&&createVNode(VBtn,{icon:"$unfold",size:"x-small",variant:"plain",onClick:()=>{const x=S.value.findIndex(T=>T.name===n.mode);_("update:mode",S.value[(x+1)%S.value.length].name)}},null)])),{}}}),VSliderSymbol=Symbol.for("vuetify:v-slider");function getOffset(n,r,_){const S=_==="vertical",E=r.getBoundingClientRect(),x="touches"in n?n.touches[0]:n;return S?x.clientY-(E.top+E.height/2):x.clientX-(E.left+E.width/2)}function getPosition(n,r){return"touches"in n&&n.touches.length?n.touches[0][r]:"changedTouches"in n&&n.changedTouches.length?n.changedTouches[0][r]:n[r]}const makeSliderProps=propsFactory({disabled:{type:Boolean,default:null},error:Boolean,readonly:{type:Boolean,default:null},max:{type:[Number,String],default:100},min:{type:[Number,String],default:0},step:{type:[Number,String],default:0},thumbColor:String,thumbLabel:{type:[Boolean,String],default:void 0,validator:n=>typeof n=="boolean"||n==="always"},thumbSize:{type:[Number,String],default:20},showTicks:{type:[Boolean,String],default:!1,validator:n=>typeof n=="boolean"||n==="always"},ticks:{type:[Array,Object]},tickSize:{type:[Number,String],default:2},color:String,trackColor:String,trackFillColor:String,trackSize:{type:[Number,String],default:4},direction:{type:String,default:"horizontal",validator:n=>["vertical","horizontal"].includes(n)},reverse:Boolean,...makeRoundedProps(),...makeElevationProps({elevation:2}),ripple:{type:Boolean,default:!0}},"Slider"),useSteps=n=>{const r=computed(()=>parseFloat(n.min)),_=computed(()=>parseFloat(n.max)),S=computed(()=>+n.step>0?parseFloat(n.step):0),E=computed(()=>Math.max(getDecimals(S.value),getDecimals(r.value)));function x(T){if(T=parseFloat(T),S.value<=0)return T;const C=clamp(T,r.value,_.value),I=r.value%S.value,B=Math.round((C-I)/S.value)*S.value+I;return parseFloat(Math.min(B,_.value).toFixed(E.value))}return{min:r,max:_,step:S,decimals:E,roundValue:x}},useSlider=n=>{let{props:r,steps:_,onSliderStart:S,onSliderMove:E,onSliderEnd:x,getActiveThumb:T}=n;const{isRtl:C}=useRtl(),I=toRef(r,"reverse"),B=computed(()=>r.direction==="vertical"),A=computed(()=>B.value!==I.value),{min:D,max:N,step:O,decimals:M,roundValue:L}=_,F=computed(()=>parseInt(r.thumbSize,10)),U=computed(()=>parseInt(r.tickSize,10)),j=computed(()=>parseInt(r.trackSize,10)),z=computed(()=>(N.value-D.value)/O.value),H=toRef(r,"disabled"),Q=computed(()=>r.error||r.disabled?void 0:r.thumbColor??r.color),J=computed(()=>r.error||r.disabled?void 0:r.trackColor??r.color),Z=computed(()=>r.error||r.disabled?void 0:r.trackFillColor??r.color),re=shallowRef(!1),ie=shallowRef(0),pe=ref$2(),ue=ref$2();function W(de){const he=r.direction==="vertical",me=he?"top":"left",Ee=he?"height":"width",Ce=he?"clientY":"clientX",{[me]:be,[Ee]:ge}=pe.value?.$el.getBoundingClientRect(),we=getPosition(de,Ce);let fe=Math.min(Math.max((we-be-ie.value)/ge,0),1)||0;return(he?A.value:A.value!==C.value)&&(fe=1-fe),L(D.value+fe*(N.value-D.value))}const Y=de=>{x({value:W(de)}),re.value=!1,ie.value=0},q=de=>{ue.value=T(de),ue.value&&(ue.value.focus(),re.value=!0,ue.value.contains(de.target)?ie.value=getOffset(de,ue.value,r.direction):(ie.value=0,E({value:W(de)})),S({value:W(de)}))},G={passive:!0,capture:!0};function ne(de){E({value:W(de)})}function ee(de){de.stopPropagation(),de.preventDefault(),Y(de),window.removeEventListener("mousemove",ne,G),window.removeEventListener("mouseup",ee)}function oe(de){Y(de),window.removeEventListener("touchmove",ne,G),de.target?.removeEventListener("touchend",oe)}function ae(de){q(de),window.addEventListener("touchmove",ne,G),de.target?.addEventListener("touchend",oe,{passive:!1})}function se(de){de.preventDefault(),q(de),window.addEventListener("mousemove",ne,G),window.addEventListener("mouseup",ee,{passive:!1})}const te=de=>{const he=(de-D.value)/(N.value-D.value)*100;return clamp(isNaN(he)?0:he,0,100)},X=toRef(r,"showTicks"),ce=computed(()=>X.value?r.ticks?Array.isArray(r.ticks)?r.ticks.map(de=>({value:de,position:te(de),label:de.toString()})):Object.keys(r.ticks).map(de=>({value:parseFloat(de),position:te(parseFloat(de)),label:r.ticks[de]})):z.value!==1/0?createRange(z.value+1).map(de=>{const he=D.value+de*O.value;return{value:he,position:te(he)}}):[]:[]),le=computed(()=>ce.value.some(de=>{let{label:he}=de;return!!he})),ye={activeThumbRef:ue,color:toRef(r,"color"),decimals:M,disabled:H,direction:toRef(r,"direction"),elevation:toRef(r,"elevation"),hasLabels:le,isReversed:I,indexFromEnd:A,min:D,max:N,mousePressed:re,numTicks:z,onSliderMousedown:se,onSliderTouchstart:ae,parsedTicks:ce,parseMouseMove:W,position:te,readonly:toRef(r,"readonly"),rounded:toRef(r,"rounded"),roundValue:L,showTicks:X,startOffset:ie,step:O,thumbSize:F,thumbColor:Q,thumbLabel:toRef(r,"thumbLabel"),ticks:toRef(r,"ticks"),tickSize:U,trackColor:J,trackContainerRef:pe,trackFillColor:Z,trackSize:j,vertical:B};return provide(VSliderSymbol,ye),ye},makeVSliderThumbProps=propsFactory({focused:Boolean,max:{type:Number,required:!0},min:{type:Number,required:!0},modelValue:{type:Number,required:!0},position:{type:Number,required:!0},ripple:{type:[Boolean,Object],default:!0},name:String,...makeComponentProps()},"VSliderThumb"),VSliderThumb=genericComponent()({name:"VSliderThumb",directives:{Ripple},props:makeVSliderThumbProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=inject$1(VSliderSymbol),{isRtl:x,rtlClasses:T}=useRtl();if(!E)throw new Error("[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider");const{thumbColor:C,step:I,disabled:B,thumbSize:A,thumbLabel:D,direction:N,isReversed:O,vertical:M,readonly:L,elevation:F,mousePressed:U,decimals:j,indexFromEnd:z}=E,H=computed(()=>B.value?void 0:F.value),{elevationClasses:Q}=useElevation(H),{textColorClasses:J,textColorStyles:Z}=useTextColor(C),{pageup:re,pagedown:ie,end:pe,home:ue,left:W,right:Y,down:q,up:G}=keyValues,ne=[re,ie,pe,ue,W,Y,q,G],ee=computed(()=>I.value?[1,2,3]:[1,5,10]);function oe(se,te){if(!ne.includes(se.key))return;se.preventDefault();const X=I.value||.1,ce=(n.max-n.min)/X;if([W,Y,q,G].includes(se.key)){const ye=(M.value?[x.value?W:Y,O.value?q:G]:z.value!==x.value?[W,G]:[Y,G]).includes(se.key)?1:-1,de=se.shiftKey?2:se.ctrlKey?1:0;te=te+ye*X*ee.value[de]}else if(se.key===ue)te=n.min;else if(se.key===pe)te=n.max;else{const le=se.key===ie?1:-1;te=te-le*X*(ce>100?ce/10:10)}return Math.max(n.min,Math.min(n.max,te))}function ae(se){const te=oe(se,n.modelValue);te!=null&&S("update:modelValue",te)}return useRender(()=>{const se=convertToUnit(z.value?100-n.position:n.position,"%");return createVNode("div",{class:["v-slider-thumb",{"v-slider-thumb--focused":n.focused,"v-slider-thumb--pressed":n.focused&&U.value},n.class,T.value],style:[{"--v-slider-thumb-position":se,"--v-slider-thumb-size":convertToUnit(A.value)},n.style],role:"slider",tabindex:B.value?-1:0,"aria-label":n.name,"aria-valuemin":n.min,"aria-valuemax":n.max,"aria-valuenow":n.modelValue,"aria-readonly":!!L.value,"aria-orientation":N.value,onKeydown:L.value?void 0:ae},[createVNode("div",{class:["v-slider-thumb__surface",J.value,Q.value],style:{...Z.value}},null),withDirectives(createVNode("div",{class:["v-slider-thumb__ripple",J.value],style:Z.value},null),[[resolveDirective("ripple"),n.ripple,null,{circle:!0,center:!0}]]),createVNode(VScaleTransition,{origin:"bottom center"},{default:()=>[withDirectives(createVNode("div",{class:"v-slider-thumb__label-container"},[createVNode("div",{class:["v-slider-thumb__label"]},[createVNode("div",null,[_["thumb-label"]?.({modelValue:n.modelValue})??n.modelValue.toFixed(I.value?j.value:1)])])]),[[vShow,D.value&&n.focused||D.value==="always"]])]})])}),{}}}),makeVSliderTrackProps=propsFactory({start:{type:Number,required:!0},stop:{type:Number,required:!0},...makeComponentProps()},"VSliderTrack"),VSliderTrack=genericComponent()({name:"VSliderTrack",props:makeVSliderTrackProps(),emits:{},setup(n,r){let{slots:_}=r;const S=inject$1(VSliderSymbol);if(!S)throw new Error("[Vuetify] v-slider-track must be inside v-slider or v-range-slider");const{color:E,parsedTicks:x,rounded:T,showTicks:C,tickSize:I,trackColor:B,trackFillColor:A,trackSize:D,vertical:N,min:O,max:M,indexFromEnd:L}=S,{roundedClasses:F}=useRounded(T),{backgroundColorClasses:U,backgroundColorStyles:j}=useBackgroundColor(A),{backgroundColorClasses:z,backgroundColorStyles:H}=useBackgroundColor(B),Q=computed(()=>`inset-${N.value?"block":"inline"}-${L.value?"end":"start"}`),J=computed(()=>N.value?"height":"width"),Z=computed(()=>({[Q.value]:"0%",[J.value]:"100%"})),re=computed(()=>n.stop-n.start),ie=computed(()=>({[Q.value]:convertToUnit(n.start,"%"),[J.value]:convertToUnit(re.value,"%")})),pe=computed(()=>C.value?(N.value?x.value.slice().reverse():x.value).map((W,Y)=>{const q=W.value!==O.value&&W.value!==M.value?convertToUnit(W.position,"%"):void 0;return createVNode("div",{key:W.value,class:["v-slider-track__tick",{"v-slider-track__tick--filled":W.position>=n.start&&W.position<=n.stop,"v-slider-track__tick--first":W.value===O.value,"v-slider-track__tick--last":W.value===M.value}],style:{[Q.value]:q}},[(W.label||_["tick-label"])&&createVNode("div",{class:"v-slider-track__tick-label"},[_["tick-label"]?.({tick:W,index:Y})??W.label])])}):[]);return useRender(()=>createVNode("div",{class:["v-slider-track",F.value,n.class],style:[{"--v-slider-track-size":convertToUnit(D.value),"--v-slider-tick-size":convertToUnit(I.value)},n.style]},[createVNode("div",{class:["v-slider-track__background",z.value,{"v-slider-track__background--opacity":!!E.value||!A.value}],style:{...Z.value,...H.value}},null),createVNode("div",{class:["v-slider-track__fill",U.value],style:{...ie.value,...j.value}},null),C.value&&createVNode("div",{class:["v-slider-track__ticks",{"v-slider-track__ticks--always-show":C.value==="always"}]},[pe.value])])),{}}}),makeVSliderProps=propsFactory({...makeFocusProps(),...makeSliderProps(),...makeVInputProps(),modelValue:{type:[Number,String],default:0}},"VSlider"),VSlider=genericComponent()({name:"VSlider",props:makeVSliderProps(),emits:{"update:focused":n=>!0,"update:modelValue":n=>!0,start:n=>!0,end:n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=ref$2(),{rtlClasses:x}=useRtl(),T=useSteps(n),C=useProxiedModel(n,"modelValue",void 0,J=>T.roundValue(J??T.min.value)),{min:I,max:B,mousePressed:A,roundValue:D,onSliderMousedown:N,onSliderTouchstart:O,trackContainerRef:M,position:L,hasLabels:F,readonly:U}=useSlider({props:n,steps:T,onSliderStart:()=>{S("start",C.value)},onSliderEnd:J=>{let{value:Z}=J;const re=D(Z);C.value=re,S("end",re)},onSliderMove:J=>{let{value:Z}=J;return C.value=D(Z)},getActiveThumb:()=>E.value?.$el}),{isFocused:j,focus:z,blur:H}=useFocus(n),Q=computed(()=>L(C.value));return useRender(()=>{const J=VInput.filterProps(n),Z=!!(n.label||_.label||_.prepend);return createVNode(VInput,mergeProps({class:["v-slider",{"v-slider--has-labels":!!_["tick-label"]||F.value,"v-slider--focused":j.value,"v-slider--pressed":A.value,"v-slider--disabled":n.disabled},x.value,n.class],style:n.style},J,{focused:j.value}),{..._,prepend:Z?re=>createVNode(Fragment,null,[_.label?.(re)??(n.label?createVNode(VLabel,{id:re.id.value,class:"v-slider__label",text:n.label},null):void 0),_.prepend?.(re)]):void 0,default:re=>{let{id:ie,messagesId:pe}=re;return createVNode("div",{class:"v-slider__container",onMousedown:U.value?void 0:N,onTouchstartPassive:U.value?void 0:O},[createVNode("input",{id:ie.value,name:n.name||ie.value,disabled:!!n.disabled,readonly:!!n.readonly,tabindex:"-1",value:C.value},null),createVNode(VSliderTrack,{ref:M,start:0,stop:Q.value},{"tick-label":_["tick-label"]}),createVNode(VSliderThumb,{ref:E,"aria-describedby":pe.value,focused:j.value,min:I.value,max:B.value,modelValue:C.value,"onUpdate:modelValue":ue=>C.value=ue,position:Q.value,elevation:n.elevation,onFocus:z,onBlur:H,ripple:n.ripple,name:n.name},{"thumb-label":_["thumb-label"]})])}})}),{}}}),makeVColorPickerPreviewProps=propsFactory({color:{type:Object},disabled:Boolean,hideAlpha:Boolean,...makeComponentProps()},"VColorPickerPreview"),VColorPickerPreview=defineComponent({name:"VColorPickerPreview",props:makeVColorPickerPreviewProps(),emits:{"update:color":n=>!0},setup(n,r){let{emit:_}=r;const S=new AbortController;onUnmounted(()=>S.abort());async function E(){if(!SUPPORTS_EYE_DROPPER)return;const x=new window.EyeDropper;try{const T=await x.open({signal:S.signal}),C=HexToHSV(T.sRGBHex);_("update:color",{...n.color??nullColor,...C})}catch{}}return useRender(()=>createVNode("div",{class:["v-color-picker-preview",{"v-color-picker-preview--hide-alpha":n.hideAlpha},n.class],style:n.style},[SUPPORTS_EYE_DROPPER&&createVNode("div",{class:"v-color-picker-preview__eye-dropper",key:"eyeDropper"},[createVNode(VBtn,{onClick:E,icon:"$eyeDropper",variant:"plain",density:"comfortable"},null)]),createVNode("div",{class:"v-color-picker-preview__dot"},[createVNode("div",{style:{background:HSVtoCSS(n.color??nullColor)}},null)]),createVNode("div",{class:"v-color-picker-preview__sliders"},[createVNode(VSlider,{class:"v-color-picker-preview__track v-color-picker-preview__hue",modelValue:n.color?.h,"onUpdate:modelValue":x=>_("update:color",{...n.color??nullColor,h:x}),step:0,min:0,max:360,disabled:n.disabled,thumbSize:14,trackSize:8,trackFillColor:"white",hideDetails:!0},null),!n.hideAlpha&&createVNode(VSlider,{class:"v-color-picker-preview__track v-color-picker-preview__alpha",modelValue:n.color?.a??1,"onUpdate:modelValue":x=>_("update:color",{...n.color??nullColor,a:x}),step:1/256,min:0,max:1,disabled:n.disabled,thumbSize:14,trackSize:8,trackFillColor:"white",hideDetails:!0},null)])])),{}}}),red={base:"#f44336",lighten5:"#ffebee",lighten4:"#ffcdd2",lighten3:"#ef9a9a",lighten2:"#e57373",lighten1:"#ef5350",darken1:"#e53935",darken2:"#d32f2f",darken3:"#c62828",darken4:"#b71c1c",accent1:"#ff8a80",accent2:"#ff5252",accent3:"#ff1744",accent4:"#d50000"},pink={base:"#e91e63",lighten5:"#fce4ec",lighten4:"#f8bbd0",lighten3:"#f48fb1",lighten2:"#f06292",lighten1:"#ec407a",darken1:"#d81b60",darken2:"#c2185b",darken3:"#ad1457",darken4:"#880e4f",accent1:"#ff80ab",accent2:"#ff4081",accent3:"#f50057",accent4:"#c51162"},purple={base:"#9c27b0",lighten5:"#f3e5f5",lighten4:"#e1bee7",lighten3:"#ce93d8",lighten2:"#ba68c8",lighten1:"#ab47bc",darken1:"#8e24aa",darken2:"#7b1fa2",darken3:"#6a1b9a",darken4:"#4a148c",accent1:"#ea80fc",accent2:"#e040fb",accent3:"#d500f9",accent4:"#aa00ff"},deepPurple={base:"#673ab7",lighten5:"#ede7f6",lighten4:"#d1c4e9",lighten3:"#b39ddb",lighten2:"#9575cd",lighten1:"#7e57c2",darken1:"#5e35b1",darken2:"#512da8",darken3:"#4527a0",darken4:"#311b92",accent1:"#b388ff",accent2:"#7c4dff",accent3:"#651fff",accent4:"#6200ea"},indigo={base:"#3f51b5",lighten5:"#e8eaf6",lighten4:"#c5cae9",lighten3:"#9fa8da",lighten2:"#7986cb",lighten1:"#5c6bc0",darken1:"#3949ab",darken2:"#303f9f",darken3:"#283593",darken4:"#1a237e",accent1:"#8c9eff",accent2:"#536dfe",accent3:"#3d5afe",accent4:"#304ffe"},blue={base:"#2196f3",lighten5:"#e3f2fd",lighten4:"#bbdefb",lighten3:"#90caf9",lighten2:"#64b5f6",lighten1:"#42a5f5",darken1:"#1e88e5",darken2:"#1976d2",darken3:"#1565c0",darken4:"#0d47a1",accent1:"#82b1ff",accent2:"#448aff",accent3:"#2979ff",accent4:"#2962ff"},lightBlue={base:"#03a9f4",lighten5:"#e1f5fe",lighten4:"#b3e5fc",lighten3:"#81d4fa",lighten2:"#4fc3f7",lighten1:"#29b6f6",darken1:"#039be5",darken2:"#0288d1",darken3:"#0277bd",darken4:"#01579b",accent1:"#80d8ff",accent2:"#40c4ff",accent3:"#00b0ff",accent4:"#0091ea"},cyan={base:"#00bcd4",lighten5:"#e0f7fa",lighten4:"#b2ebf2",lighten3:"#80deea",lighten2:"#4dd0e1",lighten1:"#26c6da",darken1:"#00acc1",darken2:"#0097a7",darken3:"#00838f",darken4:"#006064",accent1:"#84ffff",accent2:"#18ffff",accent3:"#00e5ff",accent4:"#00b8d4"},teal={base:"#009688",lighten5:"#e0f2f1",lighten4:"#b2dfdb",lighten3:"#80cbc4",lighten2:"#4db6ac",lighten1:"#26a69a",darken1:"#00897b",darken2:"#00796b",darken3:"#00695c",darken4:"#004d40",accent1:"#a7ffeb",accent2:"#64ffda",accent3:"#1de9b6",accent4:"#00bfa5"},green={base:"#4caf50",lighten5:"#e8f5e9",lighten4:"#c8e6c9",lighten3:"#a5d6a7",lighten2:"#81c784",lighten1:"#66bb6a",darken1:"#43a047",darken2:"#388e3c",darken3:"#2e7d32",darken4:"#1b5e20",accent1:"#b9f6ca",accent2:"#69f0ae",accent3:"#00e676",accent4:"#00c853"},lightGreen={base:"#8bc34a",lighten5:"#f1f8e9",lighten4:"#dcedc8",lighten3:"#c5e1a5",lighten2:"#aed581",lighten1:"#9ccc65",darken1:"#7cb342",darken2:"#689f38",darken3:"#558b2f",darken4:"#33691e",accent1:"#ccff90",accent2:"#b2ff59",accent3:"#76ff03",accent4:"#64dd17"},lime={base:"#cddc39",lighten5:"#f9fbe7",lighten4:"#f0f4c3",lighten3:"#e6ee9c",lighten2:"#dce775",lighten1:"#d4e157",darken1:"#c0ca33",darken2:"#afb42b",darken3:"#9e9d24",darken4:"#827717",accent1:"#f4ff81",accent2:"#eeff41",accent3:"#c6ff00",accent4:"#aeea00"},yellow={base:"#ffeb3b",lighten5:"#fffde7",lighten4:"#fff9c4",lighten3:"#fff59d",lighten2:"#fff176",lighten1:"#ffee58",darken1:"#fdd835",darken2:"#fbc02d",darken3:"#f9a825",darken4:"#f57f17",accent1:"#ffff8d",accent2:"#ffff00",accent3:"#ffea00",accent4:"#ffd600"},amber={base:"#ffc107",lighten5:"#fff8e1",lighten4:"#ffecb3",lighten3:"#ffe082",lighten2:"#ffd54f",lighten1:"#ffca28",darken1:"#ffb300",darken2:"#ffa000",darken3:"#ff8f00",darken4:"#ff6f00",accent1:"#ffe57f",accent2:"#ffd740",accent3:"#ffc400",accent4:"#ffab00"},orange={base:"#ff9800",lighten5:"#fff3e0",lighten4:"#ffe0b2",lighten3:"#ffcc80",lighten2:"#ffb74d",lighten1:"#ffa726",darken1:"#fb8c00",darken2:"#f57c00",darken3:"#ef6c00",darken4:"#e65100",accent1:"#ffd180",accent2:"#ffab40",accent3:"#ff9100",accent4:"#ff6d00"},deepOrange={base:"#ff5722",lighten5:"#fbe9e7",lighten4:"#ffccbc",lighten3:"#ffab91",lighten2:"#ff8a65",lighten1:"#ff7043",darken1:"#f4511e",darken2:"#e64a19",darken3:"#d84315",darken4:"#bf360c",accent1:"#ff9e80",accent2:"#ff6e40",accent3:"#ff3d00",accent4:"#dd2c00"},brown={base:"#795548",lighten5:"#efebe9",lighten4:"#d7ccc8",lighten3:"#bcaaa4",lighten2:"#a1887f",lighten1:"#8d6e63",darken1:"#6d4c41",darken2:"#5d4037",darken3:"#4e342e",darken4:"#3e2723"},blueGrey={base:"#607d8b",lighten5:"#eceff1",lighten4:"#cfd8dc",lighten3:"#b0bec5",lighten2:"#90a4ae",lighten1:"#78909c",darken1:"#546e7a",darken2:"#455a64",darken3:"#37474f",darken4:"#263238"},grey={base:"#9e9e9e",lighten5:"#fafafa",lighten4:"#f5f5f5",lighten3:"#eeeeee",lighten2:"#e0e0e0",lighten1:"#bdbdbd",darken1:"#757575",darken2:"#616161",darken3:"#424242",darken4:"#212121"},shades={black:"#000000",white:"#ffffff",transparent:"#ffffff00"},colors={red,pink,purple,deepPurple,indigo,blue,lightBlue,cyan,teal,green,lightGreen,lime,yellow,amber,orange,deepOrange,brown,blueGrey,grey,shades},makeVColorPickerSwatchesProps=propsFactory({swatches:{type:Array,default:()=>parseDefaultColors(colors)},disabled:Boolean,color:Object,maxHeight:[Number,String],...makeComponentProps()},"VColorPickerSwatches");function parseDefaultColors(n){return Object.keys(n).map(r=>{const _=n[r];return _.base?[_.base,_.darken4,_.darken3,_.darken2,_.darken1,_.lighten1,_.lighten2,_.lighten3,_.lighten4,_.lighten5]:[_.black,_.white,_.transparent]})}const VColorPickerSwatches=defineComponent({name:"VColorPickerSwatches",props:makeVColorPickerSwatchesProps(),emits:{"update:color":n=>!0},setup(n,r){let{emit:_}=r;return useRender(()=>createVNode("div",{class:["v-color-picker-swatches",n.class],style:[{maxHeight:convertToUnit(n.maxHeight)},n.style]},[createVNode("div",null,[n.swatches.map(S=>createVNode("div",{class:"v-color-picker-swatches__swatch"},[S.map(E=>{const x=parseColor(E),T=RGBtoHSV(x),C=RGBtoCSS(x);return createVNode("div",{class:"v-color-picker-swatches__color",onClick:()=>T&&_("update:color",T)},[createVNode("div",{style:{background:C}},[n.color&&deepEqual$2(n.color,T)?createVNode(VIcon,{size:"x-small",icon:"$success",color:getContrast(E,"#FFFFFF")>2?"white":"black"},null):void 0])])})]))])])),{}}}),makeVColorPickerProps=propsFactory({canvasHeight:{type:[String,Number],default:150},disabled:Boolean,dotSize:{type:[Number,String],default:10},hideCanvas:Boolean,hideSliders:Boolean,hideInputs:Boolean,mode:{type:String,default:"rgba",validator:n=>Object.keys(modes).includes(n)},modes:{type:Array,default:()=>Object.keys(modes),validator:n=>Array.isArray(n)&&n.every(r=>Object.keys(modes).includes(r))},showSwatches:Boolean,swatches:Array,swatchesMaxHeight:{type:[Number,String],default:150},modelValue:{type:[Object,String]},...omit(makeVSheetProps({width:300}),["height","location","minHeight","maxHeight","minWidth","maxWidth"])},"VColorPicker"),VColorPicker=defineComponent({name:"VColorPicker",props:makeVColorPickerProps(),emits:{"update:modelValue":n=>!0,"update:mode":n=>!0},setup(n){const r=useProxiedModel(n,"mode"),_=ref$2(null),S=useProxiedModel(n,"modelValue",void 0,I=>{if(I==null||I==="")return null;let B;try{B=RGBtoHSV(parseColor(I))}catch{return null}return B},I=>I?extractColor(I,n.modelValue):null),E=computed(()=>S.value?{...S.value,h:_.value??S.value.h}:null),{rtlClasses:x}=useRtl();let T=!0;watch(S,I=>{if(!T){T=!0;return}I&&(_.value=I.h)},{immediate:!0});const C=I=>{T=!1,_.value=I.h,S.value=I};return onMounted(()=>{n.modes.includes(r.value)||(r.value=n.modes[0])}),provideDefaults({VSlider:{color:void 0,trackColor:void 0,trackFillColor:void 0}}),useRender(()=>{const I=VSheet.filterProps(n);return createVNode(VSheet,mergeProps({rounded:n.rounded,elevation:n.elevation,theme:n.theme,class:["v-color-picker",x.value,n.class],style:[{"--v-color-picker-color-hsv":HSVtoCSS({...E.value??nullColor,a:1})},n.style]},I,{maxWidth:n.width}),{default:()=>[!n.hideCanvas&&createVNode(VColorPickerCanvas,{key:"canvas",color:E.value,"onUpdate:color":C,disabled:n.disabled,dotSize:n.dotSize,width:n.width,height:n.canvasHeight},null),(!n.hideSliders||!n.hideInputs)&&createVNode("div",{key:"controls",class:"v-color-picker__controls"},[!n.hideSliders&&createVNode(VColorPickerPreview,{key:"preview",color:E.value,"onUpdate:color":C,hideAlpha:!r.value.endsWith("a"),disabled:n.disabled},null),!n.hideInputs&&createVNode(VColorPickerEdit,{key:"edit",modes:n.modes,mode:r.value,"onUpdate:mode":B=>r.value=B,color:E.value,"onUpdate:color":C,disabled:n.disabled},null)]),n.showSwatches&&createVNode(VColorPickerSwatches,{key:"swatches",color:E.value,"onUpdate:color":C,maxHeight:n.swatchesMaxHeight,swatches:n.swatches,disabled:n.disabled},null)]})}),{}}});function highlightResult(n,r,_){if(r==null)return n;if(Array.isArray(r))throw new Error("Multiple matches is not implemented");return typeof r=="number"&&~r?createVNode(Fragment,null,[createVNode("span",{class:"v-combobox__unmask"},[n.substr(0,r)]),createVNode("span",{class:"v-combobox__mask"},[n.substr(r,_)]),createVNode("span",{class:"v-combobox__unmask"},[n.substr(r+_)])]):n}const makeVComboboxProps=propsFactory({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...makeFilterProps({filterKeys:["title"]}),...makeSelectProps({hideNoData:!0,returnObject:!0}),...omit(makeVTextFieldProps({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...makeTransitionProps({transition:!1})},"VCombobox"),VCombobox=genericComponent()({name:"VCombobox",props:makeVComboboxProps(),emits:{"update:focused":n=>!0,"update:modelValue":n=>!0,"update:search":n=>!0,"update:menu":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const{t:E}=useLocale(),x=ref$2(),T=shallowRef(!1),C=shallowRef(!0),I=shallowRef(!1),B=ref$2(),A=ref$2(),D=useProxiedModel(n,"menu"),N=computed({get:()=>D.value,set:ge=>{D.value&&!ge&&B.value?.ΨopenChildren.size||(D.value=ge)}}),O=shallowRef(-1);let M=!1;const L=computed(()=>x.value?.color),F=computed(()=>N.value?n.closeText:n.openText),{items:U,transformIn:j,transformOut:z}=useItems(n),{textColorClasses:H,textColorStyles:Q}=useTextColor(L),J=useProxiedModel(n,"modelValue",[],ge=>j(wrapInArray(ge)),ge=>{const we=z(ge);return n.multiple?we:we[0]??null}),Z=useForm(),re=computed(()=>!!(n.chips||S.chip)),ie=computed(()=>re.value||!!S.selection),pe=shallowRef(!n.multiple&&!ie.value?J.value[0]?.title??"":""),ue=computed({get:()=>pe.value,set:ge=>{if(pe.value=ge??"",!n.multiple&&!ie.value&&(J.value=[transformItem$3(n,ge)]),ge&&n.multiple&&n.delimiters?.length){const we=ge.split(new RegExp(`(?:${n.delimiters.join("|")})+`));we.length>1&&(we.forEach(fe=>{fe=fe.trim(),fe&&me(transformItem$3(n,fe))}),pe.value="")}ge||(O.value=-1),C.value=!ge}}),W=computed(()=>typeof n.counterValue=="function"?n.counterValue(J.value):typeof n.counterValue=="number"?n.counterValue:n.multiple?J.value.length:ue.value.length);watch(pe,ge=>{M?nextTick$2(()=>M=!1):T.value&&!N.value&&(N.value=!0),_("update:search",ge)}),watch(J,ge=>{!n.multiple&&!ie.value&&(pe.value=ge[0]?.title??"")});const{filteredItems:Y,getMatches:q}=useFilter(n,U,()=>C.value?"":ue.value),G=computed(()=>n.hideSelected?Y.value.filter(ge=>!J.value.some(we=>we.value===ge.value)):Y.value),ne=computed(()=>J.value.map(ge=>ge.value)),ee=computed(()=>(n.autoSelectFirst===!0||n.autoSelectFirst==="exact"&&ue.value===G.value[0]?.title)&&G.value.length>0&&!C.value&&!I.value),oe=computed(()=>n.hideNoData&&!G.value.length||n.readonly||Z?.isReadonly.value),ae=ref$2(),se=useScrolling(ae,x);function te(ge){M=!0,n.openOnClear&&(N.value=!0)}function X(){oe.value||(N.value=!0)}function ce(ge){oe.value||(T.value&&(ge.preventDefault(),ge.stopPropagation()),N.value=!N.value)}function le(ge){checkPrintable(ge)&&x.value?.focus()}function ye(ge){if(isComposingIgnoreKey(ge)||n.readonly||Z?.isReadonly.value)return;const we=x.value.selectionStart,fe=J.value.length;if((O.value>-1||["Enter","ArrowDown","ArrowUp"].includes(ge.key))&&ge.preventDefault(),["Enter","ArrowDown"].includes(ge.key)&&(N.value=!0),["Escape"].includes(ge.key)&&(N.value=!1),["Enter","Escape","Tab"].includes(ge.key)&&(ee.value&&["Enter","Tab"].includes(ge.key)&&!J.value.some(xe=>{let{value:Ie}=xe;return Ie===G.value[0].value})&&me(Y.value[0]),C.value=!0),ge.key==="ArrowDown"&&ee.value&&ae.value?.focus("next"),ge.key==="Enter"&&ue.value&&(me(transformItem$3(n,ue.value)),ie.value&&(pe.value="")),["Backspace","Delete"].includes(ge.key)){if(!n.multiple&&ie.value&&J.value.length>0&&!ue.value)return me(J.value[0],!1);if(~O.value){const xe=O.value;me(J.value[O.value],!1),O.value=xe>=fe-1?fe-2:xe}else ge.key==="Backspace"&&!ue.value&&(O.value=fe-1)}if(n.multiple){if(ge.key==="ArrowLeft"){if(O.value<0&&we>0)return;const xe=O.value>-1?O.value-1:fe-1;J.value[xe]?O.value=xe:(O.value=-1,x.value.setSelectionRange(ue.value.length,ue.value.length))}if(ge.key==="ArrowRight"){if(O.value<0)return;const xe=O.value+1;J.value[xe]?O.value=xe:(O.value=-1,x.value.setSelectionRange(0,0))}}}function de(){n.eager&&A.value?.calculateVisibleItems()}function he(){T.value&&(C.value=!0,x.value?.focus())}function me(ge){let we=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!ge||ge.props.disabled))if(n.multiple){const fe=J.value.findIndex(Ie=>n.valueComparator(Ie.value,ge.value)),xe=we??!~fe;if(~fe){const Ie=xe?[...J.value,ge]:[...J.value];Ie.splice(fe,1),J.value=Ie}else xe&&(J.value=[...J.value,ge]);n.clearOnSelect&&(ue.value="")}else{const fe=we!==!1;J.value=fe?[ge]:[],pe.value=fe&&!ie.value?ge.title:"",nextTick$2(()=>{N.value=!1,C.value=!0})}}function Ee(ge){T.value=!0,setTimeout(()=>{I.value=!0})}function Ce(ge){I.value=!1}function be(ge){(ge==null||ge===""&&!n.multiple&&!ie.value)&&(J.value=[])}return watch(T,(ge,we)=>{if(!(ge||ge===we)&&(O.value=-1,N.value=!1,ue.value)){if(n.multiple){me(transformItem$3(n,ue.value));return}if(!ie.value)return;J.value.some(fe=>{let{title:xe}=fe;return xe===ue.value})?pe.value="":me(transformItem$3(n,ue.value))}}),watch(N,()=>{if(!n.hideSelected&&N.value&&J.value.length){const ge=G.value.findIndex(we=>J.value.some(fe=>n.valueComparator(fe.value,we.value)));IN_BROWSER&&window.requestAnimationFrame(()=>{ge>=0&&A.value?.scrollToIndex(ge)})}}),watch(()=>n.items,(ge,we)=>{N.value||T.value&&!we.length&&ge.length&&(N.value=!0)}),useRender(()=>{const ge=!!(!n.hideNoData||G.value.length||S["prepend-item"]||S["append-item"]||S["no-data"]),we=J.value.length>0,fe=VTextField.filterProps(n);return createVNode(VTextField,mergeProps({ref:x},fe,{modelValue:ue.value,"onUpdate:modelValue":[xe=>ue.value=xe,be],focused:T.value,"onUpdate:focused":xe=>T.value=xe,validationValue:J.externalValue,counterValue:W.value,dirty:we,class:["v-combobox",{"v-combobox--active-menu":N.value,"v-combobox--chips":!!n.chips,"v-combobox--selection-slot":!!ie.value,"v-combobox--selecting-index":O.value>-1,[`v-combobox--${n.multiple?"multiple":"single"}`]:!0},n.class],style:n.style,readonly:n.readonly,placeholder:we?void 0:n.placeholder,"onClick:clear":te,"onMousedown:control":X,onKeydown:ye}),{...S,default:()=>createVNode(Fragment,null,[createVNode(VMenu,mergeProps({ref:B,modelValue:N.value,"onUpdate:modelValue":xe=>N.value=xe,activator:"parent",contentClass:"v-combobox__content",disabled:oe.value,eager:n.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:n.transition,onAfterEnter:de,onAfterLeave:he},n.menuProps),{default:()=>[ge&&createVNode(VList,mergeProps({ref:ae,selected:ne.value,selectStrategy:n.multiple?"independent":"single-independent",onMousedown:xe=>xe.preventDefault(),onKeydown:le,onFocusin:Ee,onFocusout:Ce,tabindex:"-1","aria-live":"polite",color:n.itemColor??n.color},se,n.listProps),{default:()=>[S["prepend-item"]?.(),!G.value.length&&!n.hideNoData&&(S["no-data"]?.()??createVNode(VListItem,{title:E(n.noDataText)},null)),createVNode(VVirtualScroll,{ref:A,renderless:!0,items:G.value},{default:xe=>{let{item:Ie,index:Se,itemRef:$e}=xe;const ke=mergeProps(Ie.props,{ref:$e,key:Se,active:ee.value&&Se===0?!0:void 0,onClick:()=>me(Ie,null)});return S.item?.({item:Ie,index:Se,props:ke})??createVNode(VListItem,mergeProps(ke,{role:"option"}),{prepend:Pe=>{let{isSelected:Me}=Pe;return createVNode(Fragment,null,[n.multiple&&!n.hideSelected?createVNode(VCheckboxBtn,{key:Ie.value,modelValue:Me,ripple:!1,tabindex:"-1"},null):void 0,Ie.props.prependAvatar&&createVNode(VAvatar,{image:Ie.props.prependAvatar},null),Ie.props.prependIcon&&createVNode(VIcon,{icon:Ie.props.prependIcon},null)])},title:()=>C.value?Ie.title:highlightResult(Ie.title,q(Ie)?.title,ue.value?.length??0)})}}),S["append-item"]?.()]})]}),J.value.map((xe,Ie)=>{function Se(Me){Me.stopPropagation(),Me.preventDefault(),me(xe,!1)}const $e={"onClick:close":Se,onKeydown(Me){Me.key!=="Enter"&&Me.key!==" "||(Me.preventDefault(),Me.stopPropagation(),Se(Me))},onMousedown(Me){Me.preventDefault(),Me.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},ke=re.value?!!S.chip:!!S.selection,Pe=ke?ensureValidVNode(re.value?S.chip({item:xe,index:Ie,props:$e}):S.selection({item:xe,index:Ie})):void 0;if(!(ke&&!Pe))return createVNode("div",{key:xe.value,class:["v-combobox__selection",Ie===O.value&&["v-combobox__selection--selected",H.value]],style:Ie===O.value?Q.value:{}},[re.value?S.chip?createVNode(VDefaultsProvider,{key:"chip-defaults",defaults:{VChip:{closable:n.closableChips,size:"small",text:xe.title}}},{default:()=>[Pe]}):createVNode(VChip,mergeProps({key:"chip",closable:n.closableChips,size:"small",text:xe.title,disabled:xe.props.disabled},$e),null):Pe??createVNode("span",{class:"v-combobox__selection-text"},[xe.title,n.multiple&&Ie0&&S.push(E),S}function startOfWeek(n,r,_){const S=_??firstDay[r.slice(-2).toUpperCase()]??0,E=new Date(n);for(;E.getDay()!==S;)E.setDate(E.getDate()-1);return E}function endOfWeek(n,r){const _=new Date(n),S=((firstDay[r.slice(-2).toUpperCase()]??0)+6)%7;for(;_.getDay()!==S;)_.setDate(_.getDate()+1);return _}function startOfMonth(n){return new Date(n.getFullYear(),n.getMonth(),1)}function endOfMonth(n){return new Date(n.getFullYear(),n.getMonth()+1,0)}function parseLocalDate(n){const r=n.split("-").map(Number);return new Date(r[0],r[1]-1,r[2])}const _YYYMMDD=/^([12]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\d|3[01]))$/;function date(n){if(n==null)return new Date;if(n instanceof Date)return n;if(typeof n=="string"){let r;if(_YYYMMDD.test(n))return parseLocalDate(n);if(r=Date.parse(n),!isNaN(r))return new Date(r)}return null}const sundayJanuarySecond2000=new Date(2e3,0,2);function getWeekdays(n,r){const _=r??firstDay[n.slice(-2).toUpperCase()]??0;return createRange(7).map(S=>{const E=new Date(sundayJanuarySecond2000);return E.setDate(sundayJanuarySecond2000.getDate()+_+S),new Intl.DateTimeFormat(n,{weekday:"narrow"}).format(E)})}function format(n,r,_,S){const E=date(n)??new Date,x=S?.[r];if(typeof x=="function")return x(E,r,_);let T={};switch(r){case"fullDate":T={year:"numeric",month:"long",day:"numeric"};break;case"fullDateWithWeekday":T={weekday:"long",year:"numeric",month:"long",day:"numeric"};break;case"normalDate":const C=E.getDate(),I=new Intl.DateTimeFormat(_,{month:"long"}).format(E);return`${C} ${I}`;case"normalDateWithWeekday":T={weekday:"short",day:"numeric",month:"short"};break;case"shortDate":T={month:"short",day:"numeric"};break;case"year":T={year:"numeric"};break;case"month":T={month:"long"};break;case"monthShort":T={month:"short"};break;case"monthAndYear":T={month:"long",year:"numeric"};break;case"monthAndDate":T={month:"long",day:"numeric"};break;case"weekday":T={weekday:"long"};break;case"weekdayShort":T={weekday:"short"};break;case"dayOfMonth":return new Intl.NumberFormat(_).format(E.getDate());case"hours12h":T={hour:"numeric",hour12:!0};break;case"hours24h":T={hour:"numeric",hour12:!1};break;case"minutes":T={minute:"numeric"};break;case"seconds":T={second:"numeric"};break;case"fullTime":T={hour:"numeric",minute:"numeric",second:"numeric",hour12:!0};break;case"fullTime12h":T={hour:"numeric",minute:"numeric",second:"numeric",hour12:!0};break;case"fullTime24h":T={hour:"numeric",minute:"numeric",second:"numeric",hour12:!1};break;case"fullDateTime":T={year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0};break;case"fullDateTime12h":T={year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0};break;case"fullDateTime24h":T={year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1};break;case"keyboardDate":T={year:"numeric",month:"2-digit",day:"2-digit"};break;case"keyboardDateTime":T={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1};break;case"keyboardDateTime12h":T={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0};break;case"keyboardDateTime24h":T={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1};break;default:T=x??{timeZone:"UTC",timeZoneName:"short"}}return new Intl.DateTimeFormat(_,T).format(E)}function toISO(n,r){const _=n.toJsDate(r),S=_.getFullYear(),E=padStart(String(_.getMonth()+1),2,"0"),x=padStart(String(_.getDate()),2,"0");return`${S}-${E}-${x}`}function parseISO(n){const[r,_,S]=n.split("-").map(Number);return new Date(r,_-1,S)}function addMinutes(n,r){const _=new Date(n);return _.setMinutes(_.getMinutes()+r),_}function addHours(n,r){const _=new Date(n);return _.setHours(_.getHours()+r),_}function addDays(n,r){const _=new Date(n);return _.setDate(_.getDate()+r),_}function addWeeks(n,r){const _=new Date(n);return _.setDate(_.getDate()+r*7),_}function addMonths(n,r){const _=new Date(n);return _.setDate(1),_.setMonth(_.getMonth()+r),_}function getYear(n){return n.getFullYear()}function getMonth(n){return n.getMonth()}function getDate(n){return n.getDate()}function getNextMonth(n){return new Date(n.getFullYear(),n.getMonth()+1,1)}function getPreviousMonth(n){return new Date(n.getFullYear(),n.getMonth()-1,1)}function getHours(n){return n.getHours()}function getMinutes(n){return n.getMinutes()}function startOfYear(n){return new Date(n.getFullYear(),0,1)}function endOfYear(n){return new Date(n.getFullYear(),11,31)}function isWithinRange(n,r){return isAfter(n,r[0])&&isBefore(n,r[1])}function isValid(n){const r=new Date(n);return r instanceof Date&&!isNaN(r.getTime())}function isAfter(n,r){return n.getTime()>r.getTime()}function isAfterDay(n,r){return isAfter(startOfDay(n),startOfDay(r))}function isBefore(n,r){return n.getTime(){_.locale=n.locale[S]??S??_.locale}),_}function useDate(){const n=inject$1(DateOptionsSymbol);if(!n)throw new Error("[Vuetify] Could not find injected date options");const r=useLocale();return createInstance(n,r)}function getWeek(n,r){const _=n.toJsDate(r);let S=_.getFullYear(),E=new Date(S,0,1);if(_=C&&(S=S+1,E=C)}const x=Math.abs(_.getTime()-E.getTime()),T=Math.ceil(x/(1e3*60*60*24));return Math.floor(T/7)+1}const makeVConfirmEditProps=propsFactory({modelValue:null,color:String,cancelText:{type:String,default:"$vuetify.confirmEdit.cancel"},okText:{type:String,default:"$vuetify.confirmEdit.ok"}},"VConfirmEdit"),VConfirmEdit=genericComponent()({name:"VConfirmEdit",props:makeVConfirmEditProps(),emits:{cancel:()=>!0,save:n=>!0,"update:modelValue":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useProxiedModel(n,"modelValue"),x=ref$2();watchEffect(()=>{x.value=structuredClone(toRaw(E.value))});const{t:T}=useLocale(),C=computed(()=>deepEqual$2(E.value,x.value));function I(){E.value=x.value,_("save",x.value)}function B(){x.value=structuredClone(toRaw(E.value)),_("cancel")}let A=!1;return useRender(()=>{const D=createVNode(Fragment,null,[createVNode(VBtn,{disabled:C.value,variant:"text",color:n.color,onClick:B,text:T(n.cancelText)},null),createVNode(VBtn,{disabled:C.value,variant:"text",color:n.color,onClick:I,text:T(n.okText)},null)]);return createVNode(Fragment,null,[S.default?.({model:x,save:I,cancel:B,isPristine:C.value,get actions(){return A=!0,D}}),!A&&D])}),{save:I,cancel:B,isPristine:C}}}),makeDataTableExpandProps=propsFactory({expandOnClick:Boolean,showExpand:Boolean,expanded:{type:Array,default:()=>[]}},"DataTable-expand"),VDataTableExpandedKey=Symbol.for("vuetify:datatable:expanded");function provideExpanded(n){const r=toRef(n,"expandOnClick"),_=useProxiedModel(n,"expanded",n.expanded,C=>new Set(C),C=>[...C.values()]);function S(C,I){const B=new Set(_.value);I?B.add(C.value):B.delete(C.value),_.value=B}function E(C){return _.value.has(C.value)}function x(C){S(C,!E(C))}const T={expand:S,expanded:_,expandOnClick:r,isExpanded:E,toggleExpand:x};return provide(VDataTableExpandedKey,T),T}function useExpanded(){const n=inject$1(VDataTableExpandedKey);if(!n)throw new Error("foo");return n}const makeDataTableGroupProps=propsFactory({groupBy:{type:Array,default:()=>[]}},"DataTable-group"),VDataTableGroupSymbol=Symbol.for("vuetify:data-table-group");function createGroupBy(n){return{groupBy:useProxiedModel(n,"groupBy")}}function provideGroupBy(n){const{disableSort:r,groupBy:_,sortBy:S}=n,E=ref$2(new Set),x=computed(()=>_.value.map(A=>({...A,order:A.order??!1})).concat(r?.value?[]:S.value));function T(A){return E.value.has(A.id)}function C(A){const D=new Set(E.value);T(A)?D.delete(A.id):D.add(A.id),E.value=D}function I(A){function D(N){const O=[];for(const M of N.items)"type"in M&&M.type==="group"?O.push(...D(M)):O.push(M);return O}return D({type:"group",items:A,id:"dummy",key:"dummy",value:"dummy",depth:0})}const B={sortByWithGroups:x,toggleGroup:C,opened:E,groupBy:_,extractRows:I,isGroupOpen:T};return provide(VDataTableGroupSymbol,B),B}function useGroupBy(){const n=inject$1(VDataTableGroupSymbol);if(!n)throw new Error("Missing group!");return n}function groupItemsByProperty(n,r){if(!n.length)return[];const _=new Map;for(const S of n){const E=getObjectValueByPath(S.raw,r);_.has(E)||_.set(E,[]),_.get(E).push(S)}return _}function groupItems(n,r){let _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,S=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"root";if(!r.length)return[];const E=groupItemsByProperty(n,r[0]),x=[],T=r.slice(1);return E.forEach((C,I)=>{const B=r[0],A=`${S}_${B}_${I}`;x.push({depth:_,id:A,key:B,value:I,items:T.length?groupItems(C,T,_+1,A):C,type:"group"})}),x}function flattenItems(n,r){const _=[];for(const S of n)"type"in S&&S.type==="group"?(S.value!=null&&_.push(S),(r.has(S.id)||S.value==null)&&_.push(...flattenItems(S.items,r))):_.push(S);return _}function useGroupedItems(n,r,_){return{flatItems:computed(()=>{if(!r.value.length)return n.value;const E=groupItems(n.value,r.value.map(x=>x.key));return flattenItems(E,_.value)})}}function useOptions(n){let{page:r,itemsPerPage:_,sortBy:S,groupBy:E,search:x}=n;const T=getCurrentInstance("VDataTable"),C=computed(()=>({page:r.value,itemsPerPage:_.value,sortBy:S.value,groupBy:E.value,search:x.value}));let I=null;watch(C,()=>{deepEqual$2(I,C.value)||(I&&I.search!==C.value.search&&(r.value=1),T.emit("update:options",C.value),I=C.value)},{deep:!0,immediate:!0})}const makeDataTablePaginateProps=propsFactory({page:{type:[Number,String],default:1},itemsPerPage:{type:[Number,String],default:10}},"DataTable-paginate"),VDataTablePaginationSymbol=Symbol.for("vuetify:data-table-pagination");function createPagination(n){const r=useProxiedModel(n,"page",void 0,S=>+(S??1)),_=useProxiedModel(n,"itemsPerPage",void 0,S=>+(S??10));return{page:r,itemsPerPage:_}}function providePagination(n){const{page:r,itemsPerPage:_,itemsLength:S}=n,E=computed(()=>_.value===-1?0:_.value*(r.value-1)),x=computed(()=>_.value===-1?S.value:Math.min(S.value,E.value+_.value)),T=computed(()=>_.value===-1||S.value===0?1:Math.ceil(S.value/_.value));watchEffect(()=>{r.value>T.value&&(r.value=T.value)});function C(N){_.value=N,r.value=1}function I(){r.value=clamp(r.value+1,1,T.value)}function B(){r.value=clamp(r.value-1,1,T.value)}function A(N){r.value=clamp(N,1,T.value)}const D={page:r,itemsPerPage:_,startIndex:E,stopIndex:x,pageCount:T,itemsLength:S,nextPage:I,prevPage:B,setPage:A,setItemsPerPage:C};return provide(VDataTablePaginationSymbol,D),D}function usePagination(){const n=inject$1(VDataTablePaginationSymbol);if(!n)throw new Error("Missing pagination!");return n}function usePaginatedItems(n){const r=getCurrentInstance("usePaginatedItems"),{items:_,startIndex:S,stopIndex:E,itemsPerPage:x}=n,T=computed(()=>x.value<=0?_.value:_.value.slice(S.value,E.value));return watch(T,C=>{r.emit("update:currentItems",C)}),{paginatedItems:T}}const singleSelectStrategy={showSelectAll:!1,allSelected:()=>[],select:n=>{let{items:r,value:_}=n;return new Set(_?[r[0]?.value]:[])},selectAll:n=>{let{selected:r}=n;return r}},pageSelectStrategy={showSelectAll:!0,allSelected:n=>{let{currentPage:r}=n;return r},select:n=>{let{items:r,value:_,selected:S}=n;for(const E of r)_?S.add(E.value):S.delete(E.value);return S},selectAll:n=>{let{value:r,currentPage:_,selected:S}=n;return pageSelectStrategy.select({items:_,value:r,selected:S})}},allSelectStrategy={showSelectAll:!0,allSelected:n=>{let{allItems:r}=n;return r},select:n=>{let{items:r,value:_,selected:S}=n;for(const E of r)_?S.add(E.value):S.delete(E.value);return S},selectAll:n=>{let{value:r,allItems:_,selected:S}=n;return allSelectStrategy.select({items:_,value:r,selected:S})}},makeDataTableSelectProps=propsFactory({showSelect:Boolean,selectStrategy:{type:[String,Object],default:"page"},modelValue:{type:Array,default:()=>[]},valueComparator:{type:Function,default:deepEqual$2}},"DataTable-select"),VDataTableSelectionSymbol=Symbol.for("vuetify:data-table-selection");function provideSelection(n,r){let{allItems:_,currentPage:S}=r;const E=useProxiedModel(n,"modelValue",n.modelValue,U=>new Set(wrapInArray(U).map(j=>_.value.find(z=>n.valueComparator(j,z.value))?.value??j)),U=>[...U.values()]),x=computed(()=>_.value.filter(U=>U.selectable)),T=computed(()=>S.value.filter(U=>U.selectable)),C=computed(()=>{if(typeof n.selectStrategy=="object")return n.selectStrategy;switch(n.selectStrategy){case"single":return singleSelectStrategy;case"all":return allSelectStrategy;case"page":default:return pageSelectStrategy}});function I(U){return wrapInArray(U).every(j=>E.value.has(j.value))}function B(U){return wrapInArray(U).some(j=>E.value.has(j.value))}function A(U,j){const z=C.value.select({items:U,value:j,selected:new Set(E.value)});E.value=z}function D(U){A([U],!I([U]))}function N(U){const j=C.value.selectAll({value:U,allItems:x.value,currentPage:T.value,selected:new Set(E.value)});E.value=j}const O=computed(()=>E.value.size>0),M=computed(()=>{const U=C.value.allSelected({allItems:x.value,currentPage:T.value});return!!U.length&&I(U)}),L=computed(()=>C.value.showSelectAll),F={toggleSelect:D,select:A,selectAll:N,isSelected:I,isSomeSelected:B,someSelected:O,allSelected:M,showSelectAll:L};return provide(VDataTableSelectionSymbol,F),F}function useSelection(){const n=inject$1(VDataTableSelectionSymbol);if(!n)throw new Error("Missing selection!");return n}const makeDataTableSortProps=propsFactory({sortBy:{type:Array,default:()=>[]},customKeySort:Object,multiSort:Boolean,mustSort:Boolean},"DataTable-sort"),VDataTableSortSymbol=Symbol.for("vuetify:data-table-sort");function createSort(n){const r=useProxiedModel(n,"sortBy"),_=toRef(n,"mustSort"),S=toRef(n,"multiSort");return{sortBy:r,mustSort:_,multiSort:S}}function provideSort(n){const{sortBy:r,mustSort:_,multiSort:S,page:E}=n,x=I=>{if(I.key==null)return;let B=r.value.map(D=>({...D}))??[];const A=B.find(D=>D.key===I.key);A?A.order==="desc"?_.value?A.order="asc":B=B.filter(D=>D.key!==I.key):A.order="desc":S.value?B=[...B,{key:I.key,order:"asc"}]:B=[{key:I.key,order:"asc"}],r.value=B,E&&(E.value=1)};function T(I){return!!r.value.find(B=>B.key===I.key)}const C={sortBy:r,toggleSort:x,isSorted:T};return provide(VDataTableSortSymbol,C),C}function useSort(){const n=inject$1(VDataTableSortSymbol);if(!n)throw new Error("Missing sort!");return n}function useSortedItems(n,r,_,S){const E=useLocale();return{sortedItems:computed(()=>_.value.length?sortItems(r.value,_.value,E.current.value,{transform:S?.transform,sortFunctions:{...n.customKeySort,...S?.sortFunctions?.value},sortRawFunctions:S?.sortRawFunctions?.value}):r.value)}}function sortItems(n,r,_,S){const E=new Intl.Collator(_,{sensitivity:"accent",usage:"sort"});return n.map(T=>[T,S?.transform?S.transform(T):T]).sort((T,C)=>{for(let I=0;IF!=null?F.toString().toLocaleLowerCase():F),N!==O)return isEmpty(N)&&isEmpty(O)?0:isEmpty(N)?-1:isEmpty(O)?1:!isNaN(N)&&!isNaN(O)?Number(N)-Number(O):E.compare(N,O)}}return 0}).map(T=>{let[C]=T;return C})}const makeDataIteratorItemsProps=propsFactory({items:{type:Array,default:()=>[]},itemValue:{type:[String,Array,Function],default:"id"},itemSelectable:{type:[String,Array,Function],default:null},returnObject:Boolean},"DataIterator-items");function transformItem$1(n,r){const _=n.returnObject?r:getPropertyFromItem(r,n.itemValue),S=getPropertyFromItem(r,n.itemSelectable,!0);return{type:"item",value:_,selectable:S,raw:r}}function transformItems$1(n,r){const _=[];for(const S of r)_.push(transformItem$1(n,S));return _}function useDataIteratorItems(n){return{items:computed(()=>transformItems$1(n,n.items))}}const makeVDataIteratorProps=propsFactory({search:String,loading:Boolean,...makeComponentProps(),...makeDataIteratorItemsProps(),...makeDataTableSelectProps(),...makeDataTableSortProps(),...makeDataTablePaginateProps({itemsPerPage:5}),...makeDataTableExpandProps(),...makeDataTableGroupProps(),...makeFilterProps(),...makeTagProps(),...makeTransitionProps({transition:{component:VFadeTransition,hideOnLeave:!0}})},"VDataIterator"),VDataIterator=genericComponent()({name:"VDataIterator",props:makeVDataIteratorProps(),emits:{"update:modelValue":n=>!0,"update:groupBy":n=>!0,"update:page":n=>!0,"update:itemsPerPage":n=>!0,"update:sortBy":n=>!0,"update:options":n=>!0,"update:expanded":n=>!0,"update:currentItems":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"groupBy"),E=toRef(n,"search"),{items:x}=useDataIteratorItems(n),{filteredItems:T}=useFilter(n,x,E,{transform:te=>te.raw}),{sortBy:C,multiSort:I,mustSort:B}=createSort(n),{page:A,itemsPerPage:D}=createPagination(n),{toggleSort:N}=provideSort({sortBy:C,multiSort:I,mustSort:B,page:A}),{sortByWithGroups:O,opened:M,extractRows:L,isGroupOpen:F,toggleGroup:U}=provideGroupBy({groupBy:S,sortBy:C}),{sortedItems:j}=useSortedItems(n,T,O,{transform:te=>te.raw}),{flatItems:z}=useGroupedItems(j,S,M),H=computed(()=>z.value.length),{startIndex:Q,stopIndex:J,pageCount:Z,prevPage:re,nextPage:ie,setItemsPerPage:pe,setPage:ue}=providePagination({page:A,itemsPerPage:D,itemsLength:H}),{paginatedItems:W}=usePaginatedItems({items:z,startIndex:Q,stopIndex:J,itemsPerPage:D}),Y=computed(()=>L(W.value)),{isSelected:q,select:G,selectAll:ne,toggleSelect:ee}=provideSelection(n,{allItems:x,currentPage:Y}),{isExpanded:oe,toggleExpand:ae}=provideExpanded(n);useOptions({page:A,itemsPerPage:D,sortBy:C,groupBy:S,search:E});const se=computed(()=>({page:A.value,itemsPerPage:D.value,sortBy:C.value,pageCount:Z.value,toggleSort:N,prevPage:re,nextPage:ie,setPage:ue,setItemsPerPage:pe,isSelected:q,select:G,selectAll:ne,toggleSelect:ee,isExpanded:oe,toggleExpand:ae,isGroupOpen:F,toggleGroup:U,items:Y.value,groupedItems:W.value}));return useRender(()=>createVNode(n.tag,{class:["v-data-iterator",{"v-data-iterator--loading":n.loading},n.class],style:n.style},{default:()=>[_.header?.(se.value),createVNode(MaybeTransition,{transition:n.transition},{default:()=>[n.loading?createVNode(LoaderSlot,{key:"loader",name:"v-data-iterator",active:!0},{default:te=>_.loader?.(te)}):createVNode("div",{key:"items"},[W.value.length?_.default?.(se.value):_["no-data"]?.()])]}),_.footer?.(se.value)]})),{}}});function useRefs(){const n=ref$2([]);onBeforeUpdate(()=>n.value=[]);function r(_,S){n.value[S]=_}return{refs:n,updateRef:r}}const makeVPaginationProps=propsFactory({activeColor:String,start:{type:[Number,String],default:1},modelValue:{type:Number,default:n=>n.start},disabled:Boolean,length:{type:[Number,String],default:1,validator:n=>n%1===0},totalVisible:[Number,String],firstIcon:{type:IconValue,default:"$first"},prevIcon:{type:IconValue,default:"$prev"},nextIcon:{type:IconValue,default:"$next"},lastIcon:{type:IconValue,default:"$last"},ariaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.root"},pageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.page"},currentPageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.currentPage"},firstAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.first"},previousAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.previous"},nextAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.next"},lastAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.last"},ellipsis:{type:String,default:"..."},showFirstLastPage:Boolean,...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeElevationProps(),...makeRoundedProps(),...makeSizeProps(),...makeTagProps({tag:"nav"}),...makeThemeProps(),...makeVariantProps({variant:"text"})},"VPagination"),VPagination=genericComponent()({name:"VPagination",props:makeVPaginationProps(),emits:{"update:modelValue":n=>!0,first:n=>!0,prev:n=>!0,next:n=>!0,last:n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=useProxiedModel(n,"modelValue"),{t:x,n:T}=useLocale(),{isRtl:C}=useRtl(),{themeClasses:I}=provideTheme(n),{width:B}=useDisplay(),A=shallowRef(-1);provideDefaults(void 0,{scoped:!0});const{resizeRef:D}=useResizeObserver(re=>{if(!re.length)return;const{target:ie,contentRect:pe}=re[0],ue=ie.querySelector(".v-pagination__list > *");if(!ue)return;const W=pe.width,Y=ue.offsetWidth+parseFloat(getComputedStyle(ue).marginRight)*2;A.value=L(W,Y)}),N=computed(()=>parseInt(n.length,10)),O=computed(()=>parseInt(n.start,10)),M=computed(()=>n.totalVisible!=null?parseInt(n.totalVisible,10):A.value>=0?A.value:L(B.value,58));function L(re,ie){const pe=n.showFirstLastPage?5:3;return Math.max(0,Math.floor(+((re-ie*pe)/ie).toFixed(2)))}const F=computed(()=>{if(N.value<=0||isNaN(N.value)||N.value>Number.MAX_SAFE_INTEGER)return[];if(M.value<=0)return[];if(M.value===1)return[E.value];if(N.value<=M.value)return createRange(N.value,O.value);const re=M.value%2===0,ie=re?M.value/2:Math.floor(M.value/2),pe=re?ie:ie+1,ue=N.value-ie;if(pe-E.value>=0)return[...createRange(Math.max(1,M.value-1),O.value),n.ellipsis,N.value];if(E.value-ue>=(re?1:0)){const W=M.value-1,Y=N.value-W+O.value;return[O.value,n.ellipsis,...createRange(W,Y)]}else{const W=Math.max(1,M.value-3),Y=W===1?E.value:E.value-Math.ceil(W/2)+O.value;return[O.value,n.ellipsis,...createRange(W,Y),n.ellipsis,N.value]}});function U(re,ie,pe){re.preventDefault(),E.value=ie,pe&&S(pe,ie)}const{refs:j,updateRef:z}=useRefs();provideDefaults({VPaginationBtn:{color:toRef(n,"color"),border:toRef(n,"border"),density:toRef(n,"density"),size:toRef(n,"size"),variant:toRef(n,"variant"),rounded:toRef(n,"rounded"),elevation:toRef(n,"elevation")}});const H=computed(()=>F.value.map((re,ie)=>{const pe=ue=>z(ue,ie);if(typeof re=="string")return{isActive:!1,key:`ellipsis-${ie}`,page:re,props:{ref:pe,ellipsis:!0,icon:!0,disabled:!0}};{const ue=re===E.value;return{isActive:ue,key:re,page:T(re),props:{ref:pe,ellipsis:!1,icon:!0,disabled:!!n.disabled||+n.length<2,color:ue?n.activeColor:n.color,"aria-current":ue,"aria-label":x(ue?n.currentPageAriaLabel:n.pageAriaLabel,re),onClick:W=>U(W,re)}}}})),Q=computed(()=>{const re=!!n.disabled||E.value<=O.value,ie=!!n.disabled||E.value>=O.value+N.value-1;return{first:n.showFirstLastPage?{icon:C.value?n.lastIcon:n.firstIcon,onClick:pe=>U(pe,O.value,"first"),disabled:re,"aria-label":x(n.firstAriaLabel),"aria-disabled":re}:void 0,prev:{icon:C.value?n.nextIcon:n.prevIcon,onClick:pe=>U(pe,E.value-1,"prev"),disabled:re,"aria-label":x(n.previousAriaLabel),"aria-disabled":re},next:{icon:C.value?n.prevIcon:n.nextIcon,onClick:pe=>U(pe,E.value+1,"next"),disabled:ie,"aria-label":x(n.nextAriaLabel),"aria-disabled":ie},last:n.showFirstLastPage?{icon:C.value?n.firstIcon:n.lastIcon,onClick:pe=>U(pe,O.value+N.value-1,"last"),disabled:ie,"aria-label":x(n.lastAriaLabel),"aria-disabled":ie}:void 0}});function J(){const re=E.value-O.value;j.value[re]?.$el.focus()}function Z(re){re.key===keyValues.left&&!n.disabled&&E.value>+n.start?(E.value=E.value-1,nextTick$2(J)):re.key===keyValues.right&&!n.disabled&&E.valuecreateVNode(n.tag,{ref:D,class:["v-pagination",I.value,n.class],style:n.style,role:"navigation","aria-label":x(n.ariaLabel),onKeydown:Z,"data-test":"v-pagination-root"},{default:()=>[createVNode("ul",{class:"v-pagination__list"},[n.showFirstLastPage&&createVNode("li",{key:"first",class:"v-pagination__first","data-test":"v-pagination-first"},[_.first?_.first(Q.value.first):createVNode(VBtn,mergeProps({_as:"VPaginationBtn"},Q.value.first),null)]),createVNode("li",{key:"prev",class:"v-pagination__prev","data-test":"v-pagination-prev"},[_.prev?_.prev(Q.value.prev):createVNode(VBtn,mergeProps({_as:"VPaginationBtn"},Q.value.prev),null)]),H.value.map((re,ie)=>createVNode("li",{key:re.key,class:["v-pagination__item",{"v-pagination__item--is-active":re.isActive}],"data-test":"v-pagination-item"},[_.item?_.item(re):createVNode(VBtn,mergeProps({_as:"VPaginationBtn"},re.props),{default:()=>[re.page]})])),createVNode("li",{key:"next",class:"v-pagination__next","data-test":"v-pagination-next"},[_.next?_.next(Q.value.next):createVNode(VBtn,mergeProps({_as:"VPaginationBtn"},Q.value.next),null)]),n.showFirstLastPage&&createVNode("li",{key:"last",class:"v-pagination__last","data-test":"v-pagination-last"},[_.last?_.last(Q.value.last):createVNode(VBtn,mergeProps({_as:"VPaginationBtn"},Q.value.last),null)])])]})),{}}}),makeVDataTableFooterProps=propsFactory({prevIcon:{type:IconValue,default:"$prev"},nextIcon:{type:IconValue,default:"$next"},firstIcon:{type:IconValue,default:"$first"},lastIcon:{type:IconValue,default:"$last"},itemsPerPageText:{type:String,default:"$vuetify.dataFooter.itemsPerPageText"},pageText:{type:String,default:"$vuetify.dataFooter.pageText"},firstPageLabel:{type:String,default:"$vuetify.dataFooter.firstPage"},prevPageLabel:{type:String,default:"$vuetify.dataFooter.prevPage"},nextPageLabel:{type:String,default:"$vuetify.dataFooter.nextPage"},lastPageLabel:{type:String,default:"$vuetify.dataFooter.lastPage"},itemsPerPageOptions:{type:Array,default:()=>[{value:10,title:"10"},{value:25,title:"25"},{value:50,title:"50"},{value:100,title:"100"},{value:-1,title:"$vuetify.dataFooter.itemsPerPageAll"}]},showCurrentPage:Boolean},"VDataTableFooter"),VDataTableFooter=genericComponent()({name:"VDataTableFooter",props:makeVDataTableFooterProps(),setup(n,r){let{slots:_}=r;const{t:S}=useLocale(),{page:E,pageCount:x,startIndex:T,stopIndex:C,itemsLength:I,itemsPerPage:B,setItemsPerPage:A}=usePagination(),D=computed(()=>n.itemsPerPageOptions.map(N=>typeof N=="number"?{value:N,title:N===-1?S("$vuetify.dataFooter.itemsPerPageAll"):String(N)}:{...N,title:isNaN(Number(N.title))?S(N.title):N.title}));return useRender(()=>{const N=VPagination.filterProps(n);return createVNode("div",{class:"v-data-table-footer"},[_.prepend?.(),createVNode("div",{class:"v-data-table-footer__items-per-page"},[createVNode("span",null,[S(n.itemsPerPageText)]),createVNode(VSelect,{items:D.value,modelValue:B.value,"onUpdate:modelValue":O=>A(Number(O)),density:"compact",variant:"outlined","hide-details":!0},null)]),createVNode("div",{class:"v-data-table-footer__info"},[createVNode("div",null,[S(n.pageText,I.value?T.value+1:0,C.value,I.value)])]),createVNode("div",{class:"v-data-table-footer__pagination"},[createVNode(VPagination,mergeProps({modelValue:E.value,"onUpdate:modelValue":O=>E.value=O,density:"comfortable","first-aria-label":n.firstPageLabel,"last-aria-label":n.lastPageLabel,length:x.value,"next-aria-label":n.nextPageLabel,"previous-aria-label":n.prevPageLabel,rounded:!0,"show-first-last-page":!0,"total-visible":n.showCurrentPage?1:0,variant:"plain"},N),null)])])}),{}}}),VDataTableColumn=defineFunctionalComponent({align:{type:String,default:"start"},fixed:Boolean,fixedOffset:[Number,String],height:[Number,String],lastFixed:Boolean,noPadding:Boolean,tag:String,width:[Number,String],maxWidth:[Number,String],nowrap:Boolean},(n,r)=>{let{slots:_}=r;const S=n.tag??"td";return createVNode(S,{class:["v-data-table__td",{"v-data-table-column--fixed":n.fixed,"v-data-table-column--last-fixed":n.lastFixed,"v-data-table-column--no-padding":n.noPadding,"v-data-table-column--nowrap":n.nowrap},`v-data-table-column--align-${n.align}`],style:{height:convertToUnit(n.height),width:convertToUnit(n.width),maxWidth:convertToUnit(n.maxWidth),left:convertToUnit(n.fixedOffset||null)}},{default:()=>[_.default?.()]})}),makeDataTableHeaderProps=propsFactory({headers:Array},"DataTable-header"),VDataTableHeadersSymbol=Symbol.for("vuetify:data-table-headers"),defaultHeader={title:"",sortable:!1},defaultActionHeader={...defaultHeader,width:48};function priorityQueue(){const r=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).map(_=>({element:_,priority:0}));return{enqueue:(_,S)=>{let E=!1;for(let x=0;xS){r.splice(x,0,{element:_,priority:S}),E=!0;break}E||r.push({element:_,priority:S})},size:()=>r.length,count:()=>{let _=0;if(!r.length)return 0;const S=Math.floor(r[0].priority);for(let E=0;Er.shift()}}function extractLeaves(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];if(!n.children)r.push(n);else for(const _ of n.children)extractLeaves(_,r);return r}function extractKeys(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new Set;for(const _ of n)_.key&&r.add(_.key),_.children&&extractKeys(_.children,r);return r}function getDefaultItem(n){if(n.key){if(n.key==="data-table-group")return defaultHeader;if(["data-table-expand","data-table-select"].includes(n.key))return defaultActionHeader}}function getDepth(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return n.children?Math.max(r,...n.children.map(_=>getDepth(_,r+1))):r}function parseFixedColumns(n){let r=!1;function _(x){let T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(x)if(T&&(x.fixed=!0),x.fixed)if(x.children)for(let C=x.children.length-1;C>=0;C--)_(x.children[C],!0);else r?isNaN(+x.width)&&(`${x.key}`,void 0):x.lastFixed=!0,r=!0;else if(x.children)for(let C=x.children.length-1;C>=0;C--)_(x.children[C]);else r=!1}for(let x=n.length-1;x>=0;x--)_(n[x]);function S(x){let T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!x)return T;if(x.children){x.fixedOffset=T;for(const C of x.children)T=S(C,T)}else x.fixed&&(x.fixedOffset=T,T+=parseFloat(x.width||"0")||0);return T}let E=0;for(const x of n)E=S(x,E)}function parse(n,r){const _=[];let S=0;const E=priorityQueue(n);for(;E.size()>0;){let T=E.count();const C=[];let I=1;for(;T>0;){const{element:B,priority:A}=E.dequeue(),D=r-S-getDepth(B);if(C.push({...B,rowspan:D??1,colspan:B.children?extractLeaves(B).length:1}),B.children)for(const N of B.children){const O=A%1+I/Math.pow(10,S+2);E.enqueue(N,S+D+O)}I+=1,T-=1}S+=1,_.push(C)}return{columns:n.map(T=>extractLeaves(T)).flat(),headers:_}}function convertToInternalHeaders(n){const r=[];for(const _ of n){const S={...getDefaultItem(_),..._},E=S.key??(typeof S.value=="string"?S.value:null),x=S.value??E??null,T={...S,key:E,value:x,sortable:S.sortable??(S.key!=null||!!S.sort),children:S.children?convertToInternalHeaders(S.children):void 0};r.push(T)}return r}function createHeaders(n,r){const _=ref$2([]),S=ref$2([]),E=ref$2({}),x=ref$2({}),T=ref$2({});watchEffect(()=>{const B=(n.headers||Object.keys(n.items[0]??{}).map(L=>({key:L,title:capitalize(L)}))).slice(),A=extractKeys(B);r?.groupBy?.value.length&&!A.has("data-table-group")&&B.unshift({key:"data-table-group",title:"Group"}),r?.showSelect?.value&&!A.has("data-table-select")&&B.unshift({key:"data-table-select"}),r?.showExpand?.value&&!A.has("data-table-expand")&&B.push({key:"data-table-expand"});const D=convertToInternalHeaders(B);parseFixedColumns(D);const N=Math.max(...D.map(L=>getDepth(L)))+1,O=parse(D,N);_.value=O.headers,S.value=O.columns;const M=O.headers.flat(1);for(const L of M)L.key&&(L.sortable&&(L.sort&&(E.value[L.key]=L.sort),L.sortRaw&&(x.value[L.key]=L.sortRaw)),L.filter&&(T.value[L.key]=L.filter))});const C={headers:_,columns:S,sortFunctions:E,sortRawFunctions:x,filterFunctions:T};return provide(VDataTableHeadersSymbol,C),C}function useHeaders(){const n=inject$1(VDataTableHeadersSymbol);if(!n)throw new Error("Missing headers!");return n}const makeVDataTableHeadersProps=propsFactory({color:String,sticky:Boolean,disableSort:Boolean,multiSort:Boolean,sortAscIcon:{type:IconValue,default:"$sortAsc"},sortDescIcon:{type:IconValue,default:"$sortDesc"},headerProps:{type:Object},...makeDisplayProps(),...makeLoaderProps()},"VDataTableHeaders"),VDataTableHeaders=genericComponent()({name:"VDataTableHeaders",props:makeVDataTableHeadersProps(),setup(n,r){let{slots:_}=r;const{t:S}=useLocale(),{toggleSort:E,sortBy:x,isSorted:T}=useSort(),{someSelected:C,allSelected:I,selectAll:B,showSelectAll:A}=useSelection(),{columns:D,headers:N}=useHeaders(),{loaderClasses:O}=useLoader(n);function M(re,ie){if(!(!n.sticky&&!re.fixed))return{position:"sticky",left:re.fixed?convertToUnit(re.fixedOffset):void 0,top:n.sticky?`calc(var(--v-table-header-height) * ${ie})`:void 0}}function L(re){const ie=x.value.find(pe=>pe.key===re.key);return ie?ie.order==="asc"?n.sortAscIcon:n.sortDescIcon:n.sortAscIcon}const{backgroundColorClasses:F,backgroundColorStyles:U}=useBackgroundColor(n,"color"),{displayClasses:j,mobile:z}=useDisplay(n),H=computed(()=>({headers:N.value,columns:D.value,toggleSort:E,isSorted:T,sortBy:x.value,someSelected:C.value,allSelected:I.value,selectAll:B,getSortIcon:L})),Q=computed(()=>["v-data-table__th",{"v-data-table__th--sticky":n.sticky},j.value,O.value]),J=re=>{let{column:ie,x:pe,y:ue}=re;const W=ie.key==="data-table-select"||ie.key==="data-table-expand",Y=mergeProps(n.headerProps??{},ie.headerProps??{});return createVNode(VDataTableColumn,mergeProps({tag:"th",align:ie.align,class:[{"v-data-table__th--sortable":ie.sortable&&!n.disableSort,"v-data-table__th--sorted":T(ie),"v-data-table__th--fixed":ie.fixed},...Q.value],style:{width:convertToUnit(ie.width),minWidth:convertToUnit(ie.minWidth),maxWidth:convertToUnit(ie.maxWidth),...M(ie,ue)},colspan:ie.colspan,rowspan:ie.rowspan,onClick:ie.sortable?()=>E(ie):void 0,fixed:ie.fixed,nowrap:ie.nowrap,lastFixed:ie.lastFixed,noPadding:W},Y),{default:()=>{const q=`header.${ie.key}`,G={column:ie,selectAll:B,isSorted:T,toggleSort:E,sortBy:x.value,someSelected:C.value,allSelected:I.value,getSortIcon:L};return _[q]?_[q](G):ie.key==="data-table-select"?_["header.data-table-select"]?.(G)??(A.value&&createVNode(VCheckboxBtn,{modelValue:I.value,indeterminate:C.value&&!I.value,"onUpdate:modelValue":B},null)):createVNode("div",{class:"v-data-table-header__content"},[createVNode("span",null,[ie.title]),ie.sortable&&!n.disableSort&&createVNode(VIcon,{key:"icon",class:"v-data-table-header__sort-icon",icon:L(ie)},null),n.multiSort&&T(ie)&&createVNode("div",{key:"badge",class:["v-data-table-header__sort-badge",...F.value],style:U.value},[x.value.findIndex(ne=>ne.key===ie.key)+1])])}})},Z=()=>{const re=mergeProps(n.headerProps??{}??{}),ie=computed(()=>D.value.filter(ue=>ue?.sortable&&!n.disableSort)),pe=computed(()=>{if(D.value.find(W=>W.key==="data-table-select")!=null)return I.value?"$checkboxOn":C.value?"$checkboxIndeterminate":"$checkboxOff"});return createVNode(VDataTableColumn,mergeProps({tag:"th",class:[...Q.value],colspan:N.value.length+1},re),{default:()=>[createVNode("div",{class:"v-data-table-header__content"},[createVNode(VSelect,{chips:!0,class:"v-data-table__td-sort-select",clearable:!0,density:"default",items:ie.value,label:S("$vuetify.dataTable.sortBy"),multiple:n.multiSort,variant:"underlined","onClick:clear":()=>x.value=[],appendIcon:pe.value,"onClick:append":()=>B(!I.value)},{..._,chip:ue=>createVNode(VChip,{onClick:ue.item.raw?.sortable?()=>E(ue.item.raw):void 0,onMousedown:W=>{W.preventDefault(),W.stopPropagation()}},{default:()=>[ue.item.title,createVNode(VIcon,{class:["v-data-table__td-sort-icon",T(ue.item.raw)&&"v-data-table__td-sort-icon-active"],icon:L(ue.item.raw),size:"small"},null)]})})])]})};useRender(()=>z.value?createVNode("tr",null,[createVNode(Z,null,null)]):createVNode(Fragment,null,[_.headers?_.headers(H.value):N.value.map((re,ie)=>createVNode("tr",null,[re.map((pe,ue)=>createVNode(J,{column:pe,x:ue,y:ie},null))])),n.loading&&createVNode("tr",{class:"v-data-table-progress"},[createVNode("th",{colspan:D.value.length},[createVNode(LoaderSlot,{name:"v-data-table-progress",absolute:!0,active:!0,color:typeof n.loading=="boolean"?void 0:n.loading,indeterminate:!0},{default:_.loader})])])]))}}),makeVDataTableGroupHeaderRowProps=propsFactory({item:{type:Object,required:!0}},"VDataTableGroupHeaderRow"),VDataTableGroupHeaderRow=genericComponent()({name:"VDataTableGroupHeaderRow",props:makeVDataTableGroupHeaderRowProps(),setup(n,r){let{slots:_}=r;const{isGroupOpen:S,toggleGroup:E,extractRows:x}=useGroupBy(),{isSelected:T,isSomeSelected:C,select:I}=useSelection(),{columns:B}=useHeaders(),A=computed(()=>x([n.item]));return()=>createVNode("tr",{class:"v-data-table-group-header-row",style:{"--v-data-table-group-header-row-depth":n.item.depth}},[B.value.map(D=>{if(D.key==="data-table-group"){const N=S(n.item)?"$expand":"$next",O=()=>E(n.item);return _["data-table-group"]?.({item:n.item,count:A.value.length,props:{icon:N,onClick:O}})??createVNode(VDataTableColumn,{class:"v-data-table-group-header-row__column"},{default:()=>[createVNode(VBtn,{size:"small",variant:"text",icon:N,onClick:O},null),createVNode("span",null,[n.item.value]),createVNode("span",null,[createTextVNode("("),A.value.length,createTextVNode(")")])]})}if(D.key==="data-table-select"){const N=T(A.value),O=C(A.value)&&!N,M=L=>I(A.value,L);return _["data-table-select"]?.({props:{modelValue:N,indeterminate:O,"onUpdate:modelValue":M}})??createVNode("td",null,[createVNode(VCheckboxBtn,{modelValue:N,indeterminate:O,"onUpdate:modelValue":M},null)])}return createVNode("td",null,null)})])}}),makeVDataTableRowProps=propsFactory({index:Number,item:Object,cellProps:[Object,Function],onClick:EventProp(),onContextmenu:EventProp(),onDblclick:EventProp(),...makeDisplayProps()},"VDataTableRow"),VDataTableRow=genericComponent()({name:"VDataTableRow",props:makeVDataTableRowProps(),setup(n,r){let{slots:_}=r;const{displayClasses:S,mobile:E}=useDisplay(n,"v-data-table__tr"),{isSelected:x,toggleSelect:T,someSelected:C,allSelected:I,selectAll:B}=useSelection(),{isExpanded:A,toggleExpand:D}=useExpanded(),{toggleSort:N,sortBy:O,isSorted:M}=useSort(),{columns:L}=useHeaders();useRender(()=>createVNode("tr",{class:["v-data-table__tr",{"v-data-table__tr--clickable":!!(n.onClick||n.onContextmenu||n.onDblclick)},S.value],onClick:n.onClick,onContextmenu:n.onContextmenu,onDblclick:n.onDblclick},[n.item&&L.value.map((F,U)=>{const j=n.item,z=`item.${F.key}`,H=`header.${F.key}`,Q={index:n.index,item:j.raw,internalItem:j,value:getObjectValueByPath(j.columns,F.key),column:F,isSelected:x,toggleSelect:T,isExpanded:A,toggleExpand:D},J={column:F,selectAll:B,isSorted:M,toggleSort:N,sortBy:O.value,someSelected:C.value,allSelected:I.value,getSortIcon:()=>""},Z=typeof n.cellProps=="function"?n.cellProps({index:Q.index,item:Q.item,internalItem:Q.internalItem,value:Q.value,column:F}):n.cellProps,re=typeof F.cellProps=="function"?F.cellProps({index:Q.index,item:Q.item,internalItem:Q.internalItem,value:Q.value}):F.cellProps;return createVNode(VDataTableColumn,mergeProps({align:F.align,class:{"v-data-table__td--expanded-row":F.key==="data-table-expand","v-data-table__td--select-row":F.key==="data-table-select"},fixed:F.fixed,fixedOffset:F.fixedOffset,lastFixed:F.lastFixed,maxWidth:E.value?void 0:F.maxWidth,noPadding:F.key==="data-table-select"||F.key==="data-table-expand",nowrap:F.nowrap,width:E.value?void 0:F.width},Z,re),{default:()=>{if(_[z]&&!E.value)return _[z]?.(Q);if(F.key==="data-table-select")return _["item.data-table-select"]?.(Q)??createVNode(VCheckboxBtn,{disabled:!j.selectable,modelValue:x([j]),onClick:withModifiers(()=>T(j),["stop"])},null);if(F.key==="data-table-expand")return _["item.data-table-expand"]?.(Q)??createVNode(VBtn,{icon:A(j)?"$collapse":"$expand",size:"small",variant:"text",onClick:withModifiers(()=>D(j),["stop"])},null);const ie=toDisplayString(Q.value);return E.value?createVNode(Fragment,null,[createVNode("div",{class:"v-data-table__td-title"},[_[H]?.(J)??F.title]),createVNode("div",{class:"v-data-table__td-value"},[_[z]?.(Q)??ie])]):ie}})})]))}}),makeVDataTableRowsProps=propsFactory({loading:[Boolean,String],loadingText:{type:String,default:"$vuetify.dataIterator.loadingText"},hideNoData:Boolean,items:{type:Array,default:()=>[]},noDataText:{type:String,default:"$vuetify.noDataText"},rowProps:[Object,Function],cellProps:[Object,Function],...makeDisplayProps()},"VDataTableRows"),VDataTableRows=genericComponent()({name:"VDataTableRows",inheritAttrs:!1,props:makeVDataTableRowsProps(),setup(n,r){let{attrs:_,slots:S}=r;const{columns:E}=useHeaders(),{expandOnClick:x,toggleExpand:T,isExpanded:C}=useExpanded(),{isSelected:I,toggleSelect:B}=useSelection(),{toggleGroup:A,isGroupOpen:D}=useGroupBy(),{t:N}=useLocale(),{mobile:O}=useDisplay(n);return useRender(()=>n.loading&&(!n.items.length||S.loading)?createVNode("tr",{class:"v-data-table-rows-loading",key:"loading"},[createVNode("td",{colspan:E.value.length},[S.loading?.()??N(n.loadingText)])]):!n.loading&&!n.items.length&&!n.hideNoData?createVNode("tr",{class:"v-data-table-rows-no-data",key:"no-data"},[createVNode("td",{colspan:E.value.length},[S["no-data"]?.()??N(n.noDataText)])]):createVNode(Fragment,null,[n.items.map((M,L)=>{if(M.type==="group"){const j={index:L,item:M,columns:E.value,isExpanded:C,toggleExpand:T,isSelected:I,toggleSelect:B,toggleGroup:A,isGroupOpen:D};return S["group-header"]?S["group-header"](j):createVNode(VDataTableGroupHeaderRow,mergeProps({key:`group-header_${M.id}`,item:M},getPrefixedEventHandlers(_,":group-header",()=>j)),S)}const F={index:L,item:M.raw,internalItem:M,columns:E.value,isExpanded:C,toggleExpand:T,isSelected:I,toggleSelect:B},U={...F,props:mergeProps({key:`item_${M.key??M.index}`,onClick:x.value?()=>{T(M)}:void 0,index:L,item:M,cellProps:n.cellProps,mobile:O.value},getPrefixedEventHandlers(_,":row",()=>F),typeof n.rowProps=="function"?n.rowProps({item:F.item,index:F.index,internalItem:F.internalItem}):n.rowProps)};return createVNode(Fragment,{key:U.props.key},[S.item?S.item(U):createVNode(VDataTableRow,U.props,S),C(M)&&S["expanded-row"]?.(F)])})])),{}}}),makeVTableProps=propsFactory({fixedHeader:Boolean,fixedFooter:Boolean,height:[Number,String],hover:Boolean,...makeComponentProps(),...makeDensityProps(),...makeTagProps(),...makeThemeProps()},"VTable"),VTable=genericComponent()({name:"VTable",props:makeVTableProps(),setup(n,r){let{slots:_,emit:S}=r;const{themeClasses:E}=provideTheme(n),{densityClasses:x}=useDensity(n);return useRender(()=>createVNode(n.tag,{class:["v-table",{"v-table--fixed-height":!!n.height,"v-table--fixed-header":n.fixedHeader,"v-table--fixed-footer":n.fixedFooter,"v-table--has-top":!!_.top,"v-table--has-bottom":!!_.bottom,"v-table--hover":n.hover},E.value,x.value,n.class],style:n.style},{default:()=>[_.top?.(),_.default?createVNode("div",{class:"v-table__wrapper",style:{height:convertToUnit(n.height)}},[createVNode("table",null,[_.default()])]):_.wrapper?.(),_.bottom?.()]})),{}}}),makeDataTableItemsProps=propsFactory({items:{type:Array,default:()=>[]},itemValue:{type:[String,Array,Function],default:"id"},itemSelectable:{type:[String,Array,Function],default:null},rowProps:[Object,Function],cellProps:[Object,Function],returnObject:Boolean},"DataTable-items");function transformItem(n,r,_,S){const E=n.returnObject?r:getPropertyFromItem(r,n.itemValue),x=getPropertyFromItem(r,n.itemSelectable,!0),T=S.reduce((C,I)=>(I.key!=null&&(C[I.key]=getPropertyFromItem(r,I.value)),C),{});return{type:"item",key:n.returnObject?getPropertyFromItem(r,n.itemValue):E,index:_,value:E,selectable:x,columns:T,raw:r}}function transformItems(n,r,_){return r.map((S,E)=>transformItem(n,S,E,_))}function useDataTableItems(n,r){return{items:computed(()=>transformItems(n,n.items,r.value))}}const makeDataTableProps=propsFactory({...makeVDataTableRowsProps(),hideDefaultBody:Boolean,hideDefaultFooter:Boolean,hideDefaultHeader:Boolean,width:[String,Number],search:String,...makeDataTableExpandProps(),...makeDataTableGroupProps(),...makeDataTableHeaderProps(),...makeDataTableItemsProps(),...makeDataTableSelectProps(),...makeDataTableSortProps(),...makeVDataTableHeadersProps(),...makeVTableProps()},"DataTable"),makeVDataTableProps=propsFactory({...makeDataTablePaginateProps(),...makeDataTableProps(),...makeFilterProps(),...makeVDataTableFooterProps()},"VDataTable"),VDataTable=genericComponent()({name:"VDataTable",props:makeVDataTableProps(),emits:{"update:modelValue":n=>!0,"update:page":n=>!0,"update:itemsPerPage":n=>!0,"update:sortBy":n=>!0,"update:options":n=>!0,"update:groupBy":n=>!0,"update:expanded":n=>!0,"update:currentItems":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const{groupBy:E}=createGroupBy(n),{sortBy:x,multiSort:T,mustSort:C}=createSort(n),{page:I,itemsPerPage:B}=createPagination(n),{disableSort:A}=toRefs(n),{columns:D,headers:N,sortFunctions:O,sortRawFunctions:M,filterFunctions:L}=createHeaders(n,{groupBy:E,showSelect:toRef(n,"showSelect"),showExpand:toRef(n,"showExpand")}),{items:F}=useDataTableItems(n,D),U=toRef(n,"search"),{filteredItems:j}=useFilter(n,F,U,{transform:he=>he.columns,customKeyFilter:L}),{toggleSort:z}=provideSort({sortBy:x,multiSort:T,mustSort:C,page:I}),{sortByWithGroups:H,opened:Q,extractRows:J,isGroupOpen:Z,toggleGroup:re}=provideGroupBy({groupBy:E,sortBy:x,disableSort:A}),{sortedItems:ie}=useSortedItems(n,j,H,{transform:he=>({...he.raw,...he.columns}),sortFunctions:O,sortRawFunctions:M}),{flatItems:pe}=useGroupedItems(ie,E,Q),ue=computed(()=>pe.value.length),{startIndex:W,stopIndex:Y,pageCount:q,setItemsPerPage:G}=providePagination({page:I,itemsPerPage:B,itemsLength:ue}),{paginatedItems:ne}=usePaginatedItems({items:pe,startIndex:W,stopIndex:Y,itemsPerPage:B}),ee=computed(()=>J(ne.value)),{isSelected:oe,select:ae,selectAll:se,toggleSelect:te,someSelected:X,allSelected:ce}=provideSelection(n,{allItems:F,currentPage:ee}),{isExpanded:le,toggleExpand:ye}=provideExpanded(n);useOptions({page:I,itemsPerPage:B,sortBy:x,groupBy:E,search:U}),provideDefaults({VDataTableRows:{hideNoData:toRef(n,"hideNoData"),noDataText:toRef(n,"noDataText"),loading:toRef(n,"loading"),loadingText:toRef(n,"loadingText")}});const de=computed(()=>({page:I.value,itemsPerPage:B.value,sortBy:x.value,pageCount:q.value,toggleSort:z,setItemsPerPage:G,someSelected:X.value,allSelected:ce.value,isSelected:oe,select:ae,selectAll:se,toggleSelect:te,isExpanded:le,toggleExpand:ye,isGroupOpen:Z,toggleGroup:re,items:ee.value.map(he=>he.raw),internalItems:ee.value,groupedItems:ne.value,columns:D.value,headers:N.value}));return useRender(()=>{const he=VDataTableFooter.filterProps(n),me=VDataTableHeaders.filterProps(n),Ee=VDataTableRows.filterProps(n),Ce=VTable.filterProps(n);return createVNode(VTable,mergeProps({class:["v-data-table",{"v-data-table--show-select":n.showSelect,"v-data-table--loading":n.loading},n.class],style:n.style},Ce),{top:()=>S.top?.(de.value),default:()=>S.default?S.default(de.value):createVNode(Fragment,null,[S.colgroup?.(de.value),!n.hideDefaultHeader&&createVNode("thead",{key:"thead"},[createVNode(VDataTableHeaders,me,S)]),S.thead?.(de.value),!n.hideDefaultBody&&createVNode("tbody",null,[S["body.prepend"]?.(de.value),S.body?S.body(de.value):createVNode(VDataTableRows,mergeProps(_,Ee,{items:ne.value}),S),S["body.append"]?.(de.value)]),S.tbody?.(de.value),S.tfoot?.(de.value)]),bottom:()=>S.bottom?S.bottom(de.value):!n.hideDefaultFooter&&createVNode(Fragment,null,[createVNode(VDivider,null,null),createVNode(VDataTableFooter,he,{prepend:S["footer.prepend"]})])})}),{}}}),makeVDataTableVirtualProps=propsFactory({...makeDataTableProps(),...makeDataTableGroupProps(),...makeVirtualProps(),...makeFilterProps()},"VDataTableVirtual"),VDataTableVirtual=genericComponent()({name:"VDataTableVirtual",props:makeVDataTableVirtualProps(),emits:{"update:modelValue":n=>!0,"update:sortBy":n=>!0,"update:options":n=>!0,"update:groupBy":n=>!0,"update:expanded":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const{groupBy:E}=createGroupBy(n),{sortBy:x,multiSort:T,mustSort:C}=createSort(n),{disableSort:I}=toRefs(n),{columns:B,headers:A,filterFunctions:D,sortFunctions:N,sortRawFunctions:O}=createHeaders(n,{groupBy:E,showSelect:toRef(n,"showSelect"),showExpand:toRef(n,"showExpand")}),{items:M}=useDataTableItems(n,B),L=toRef(n,"search"),{filteredItems:F}=useFilter(n,M,L,{transform:me=>me.columns,customKeyFilter:D}),{toggleSort:U}=provideSort({sortBy:x,multiSort:T,mustSort:C}),{sortByWithGroups:j,opened:z,extractRows:H,isGroupOpen:Q,toggleGroup:J}=provideGroupBy({groupBy:E,sortBy:x,disableSort:I}),{sortedItems:Z}=useSortedItems(n,F,j,{transform:me=>({...me.raw,...me.columns}),sortFunctions:N,sortRawFunctions:O}),{flatItems:re}=useGroupedItems(Z,E,z),ie=computed(()=>H(re.value)),{isSelected:pe,select:ue,selectAll:W,toggleSelect:Y,someSelected:q,allSelected:G}=provideSelection(n,{allItems:ie,currentPage:ie}),{isExpanded:ne,toggleExpand:ee}=provideExpanded(n),{containerRef:oe,markerRef:ae,paddingTop:se,paddingBottom:te,computedItems:X,handleItemResize:ce,handleScroll:le,handleScrollend:ye}=useVirtual(n,re),de=computed(()=>X.value.map(me=>me.raw));useOptions({sortBy:x,page:shallowRef(1),itemsPerPage:shallowRef(-1),groupBy:E,search:L}),provideDefaults({VDataTableRows:{hideNoData:toRef(n,"hideNoData"),noDataText:toRef(n,"noDataText"),loading:toRef(n,"loading"),loadingText:toRef(n,"loadingText")}});const he=computed(()=>({sortBy:x.value,toggleSort:U,someSelected:q.value,allSelected:G.value,isSelected:pe,select:ue,selectAll:W,toggleSelect:Y,isExpanded:ne,toggleExpand:ee,isGroupOpen:Q,toggleGroup:J,items:ie.value.map(me=>me.raw),internalItems:ie.value,groupedItems:re.value,columns:B.value,headers:A.value}));useRender(()=>{const me=VDataTableHeaders.filterProps(n),Ee=VDataTableRows.filterProps(n),Ce=VTable.filterProps(n);return createVNode(VTable,mergeProps({class:["v-data-table",{"v-data-table--loading":n.loading},n.class],style:n.style},Ce),{top:()=>S.top?.(he.value),wrapper:()=>createVNode("div",{ref:oe,onScrollPassive:le,onScrollend:ye,class:"v-table__wrapper",style:{height:convertToUnit(n.height)}},[createVNode("table",null,[S.colgroup?.(he.value),!n.hideDefaultHeader&&createVNode("thead",{key:"thead"},[createVNode(VDataTableHeaders,mergeProps(me,{sticky:n.fixedHeader}),S)]),!n.hideDefaultBody&&createVNode("tbody",null,[createVNode("tr",{ref:ae,style:{height:convertToUnit(se.value),border:0}},[createVNode("td",{colspan:B.value.length,style:{height:0,border:0}},null)]),S["body.prepend"]?.(he.value),createVNode(VDataTableRows,mergeProps(_,Ee,{items:de.value}),{...S,item:be=>createVNode(VVirtualScrollItem,{key:be.internalItem.index,renderless:!0,"onUpdate:height":ge=>ce(be.internalItem.index,ge)},{default:ge=>{let{itemRef:we}=ge;return S.item?.({...be,itemRef:we})??createVNode(VDataTableRow,mergeProps(be.props,{ref:we,key:be.internalItem.index,index:be.internalItem.index}),S)}})}),S["body.append"]?.(he.value),createVNode("tr",{style:{height:convertToUnit(te.value),border:0}},[createVNode("td",{colspan:B.value.length,style:{height:0,border:0}},null)])])])]),bottom:()=>S.bottom?.(he.value)})})}}),makeVDataTableServerProps=propsFactory({itemsLength:{type:[Number,String],required:!0},...makeDataTablePaginateProps(),...makeDataTableProps(),...makeVDataTableFooterProps()},"VDataTableServer"),VDataTableServer=genericComponent()({name:"VDataTableServer",props:makeVDataTableServerProps(),emits:{"update:modelValue":n=>!0,"update:page":n=>!0,"update:itemsPerPage":n=>!0,"update:sortBy":n=>!0,"update:options":n=>!0,"update:expanded":n=>!0,"update:groupBy":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const{groupBy:E}=createGroupBy(n),{sortBy:x,multiSort:T,mustSort:C}=createSort(n),{page:I,itemsPerPage:B}=createPagination(n),{disableSort:A}=toRefs(n),D=computed(()=>parseInt(n.itemsLength,10)),{columns:N,headers:O}=createHeaders(n,{groupBy:E,showSelect:toRef(n,"showSelect"),showExpand:toRef(n,"showExpand")}),{items:M}=useDataTableItems(n,N),{toggleSort:L}=provideSort({sortBy:x,multiSort:T,mustSort:C,page:I}),{opened:F,isGroupOpen:U,toggleGroup:j,extractRows:z}=provideGroupBy({groupBy:E,sortBy:x,disableSort:A}),{pageCount:H,setItemsPerPage:Q}=providePagination({page:I,itemsPerPage:B,itemsLength:D}),{flatItems:J}=useGroupedItems(M,E,F),{isSelected:Z,select:re,selectAll:ie,toggleSelect:pe,someSelected:ue,allSelected:W}=provideSelection(n,{allItems:M,currentPage:M}),{isExpanded:Y,toggleExpand:q}=provideExpanded(n),G=computed(()=>z(M.value));useOptions({page:I,itemsPerPage:B,sortBy:x,groupBy:E,search:toRef(n,"search")}),provide("v-data-table",{toggleSort:L,sortBy:x}),provideDefaults({VDataTableRows:{hideNoData:toRef(n,"hideNoData"),noDataText:toRef(n,"noDataText"),loading:toRef(n,"loading"),loadingText:toRef(n,"loadingText")}});const ne=computed(()=>({page:I.value,itemsPerPage:B.value,sortBy:x.value,pageCount:H.value,toggleSort:L,setItemsPerPage:Q,someSelected:ue.value,allSelected:W.value,isSelected:Z,select:re,selectAll:ie,toggleSelect:pe,isExpanded:Y,toggleExpand:q,isGroupOpen:U,toggleGroup:j,items:G.value.map(ee=>ee.raw),internalItems:G.value,groupedItems:J.value,columns:N.value,headers:O.value}));useRender(()=>{const ee=VDataTableFooter.filterProps(n),oe=VDataTableHeaders.filterProps(n),ae=VDataTableRows.filterProps(n),se=VTable.filterProps(n);return createVNode(VTable,mergeProps({class:["v-data-table",{"v-data-table--loading":n.loading},n.class],style:n.style},se),{top:()=>S.top?.(ne.value),default:()=>S.default?S.default(ne.value):createVNode(Fragment,null,[S.colgroup?.(ne.value),!n.hideDefaultHeader&&createVNode("thead",{key:"thead",class:"v-data-table__thead",role:"rowgroup"},[createVNode(VDataTableHeaders,mergeProps(oe,{sticky:n.fixedHeader}),S)]),S.thead?.(ne.value),!n.hideDefaultBody&&createVNode("tbody",{class:"v-data-table__tbody",role:"rowgroup"},[S["body.prepend"]?.(ne.value),S.body?S.body(ne.value):createVNode(VDataTableRows,mergeProps(_,ae,{items:J.value}),S),S["body.append"]?.(ne.value)]),S.tbody?.(ne.value),S.tfoot?.(ne.value)]),bottom:()=>S.bottom?S.bottom(ne.value):!n.hideDefaultFooter&&createVNode(Fragment,null,[createVNode(VDivider,null,null),createVNode(VDataTableFooter,ee,{prepend:S["footer.prepend"]})])})})}}),makeVDatePickerControlsProps=propsFactory({active:{type:[String,Array],default:void 0},disabled:{type:[Boolean,String,Array],default:!1},nextIcon:{type:IconValue,default:"$next"},prevIcon:{type:IconValue,default:"$prev"},modeIcon:{type:IconValue,default:"$subgroup"},text:String,viewMode:{type:String,default:"month"}},"VDatePickerControls"),VDatePickerControls=genericComponent()({name:"VDatePickerControls",props:makeVDatePickerControlsProps(),emits:{"click:year":()=>!0,"click:month":()=>!0,"click:prev":()=>!0,"click:next":()=>!0,"click:text":()=>!0},setup(n,r){let{emit:_}=r;const S=computed(()=>Array.isArray(n.disabled)?n.disabled.includes("text"):!!n.disabled),E=computed(()=>Array.isArray(n.disabled)?n.disabled.includes("mode"):!!n.disabled),x=computed(()=>Array.isArray(n.disabled)?n.disabled.includes("prev"):!!n.disabled),T=computed(()=>Array.isArray(n.disabled)?n.disabled.includes("next"):!!n.disabled);function C(){_("click:prev")}function I(){_("click:next")}function B(){_("click:year")}function A(){_("click:month")}return useRender(()=>createVNode("div",{class:["v-date-picker-controls"]},[createVNode(VBtn,{class:"v-date-picker-controls__month-btn",disabled:S.value,text:n.text,variant:"text",rounded:!0,onClick:A},null),createVNode(VBtn,{key:"mode-btn",class:"v-date-picker-controls__mode-btn",disabled:E.value,density:"comfortable",icon:n.modeIcon,variant:"text",onClick:B},null),createVNode(VSpacer,{key:"mode-spacer"},null),createVNode("div",{key:"month-buttons",class:"v-date-picker-controls__month"},[createVNode(VBtn,{disabled:x.value,icon:n.prevIcon,variant:"text",onClick:C},null),createVNode(VBtn,{disabled:T.value,icon:n.nextIcon,variant:"text",onClick:I},null)])])),{}}}),makeVDatePickerHeaderProps=propsFactory({appendIcon:String,color:String,header:String,transition:String,onClick:EventProp()},"VDatePickerHeader"),VDatePickerHeader=genericComponent()({name:"VDatePickerHeader",props:makeVDatePickerHeaderProps(),emits:{click:()=>!0,"click:append":()=>!0},setup(n,r){let{emit:_,slots:S}=r;const{backgroundColorClasses:E,backgroundColorStyles:x}=useBackgroundColor(n,"color");function T(){_("click")}function C(){_("click:append")}return useRender(()=>{const I=!!(S.default||n.header),B=!!(S.append||n.appendIcon);return createVNode("div",{class:["v-date-picker-header",{"v-date-picker-header--clickable":!!n.onClick},E.value],style:x.value,onClick:T},[S.prepend&&createVNode("div",{key:"prepend",class:"v-date-picker-header__prepend"},[S.prepend()]),I&&createVNode(MaybeTransition,{key:"content",name:n.transition},{default:()=>[createVNode("div",{key:n.header,class:"v-date-picker-header__content"},[S.default?.()??n.header])]}),B&&createVNode("div",{class:"v-date-picker-header__append"},[S.append?createVNode(VDefaultsProvider,{key:"append-defaults",disabled:!n.appendIcon,defaults:{VBtn:{icon:n.appendIcon,variant:"text"}}},{default:()=>[S.append?.()]}):createVNode(VBtn,{key:"append-btn",icon:n.appendIcon,variant:"text",onClick:C},null)])])}),{}}}),makeCalendarProps=propsFactory({allowedDates:[Array,Function],disabled:Boolean,displayValue:null,modelValue:Array,month:[Number,String],max:null,min:null,showAdjacentMonths:Boolean,year:[Number,String],weekdays:{type:Array,default:()=>[0,1,2,3,4,5,6]},weeksInMonth:{type:String,default:"dynamic"},firstDayOfWeek:[Number,String]},"calendar");function useCalendar(n){const r=useDate(),_=useProxiedModel(n,"modelValue",[],O=>wrapInArray(O)),S=computed(()=>n.displayValue?r.date(n.displayValue):_.value.length>0?r.date(_.value[0]):n.min?r.date(n.min):Array.isArray(n.allowedDates)?r.date(n.allowedDates[0]):r.date()),E=useProxiedModel(n,"year",void 0,O=>{const M=O!=null?Number(O):r.getYear(S.value);return r.startOfYear(r.setYear(r.date(),M))},O=>r.getYear(O)),x=useProxiedModel(n,"month",void 0,O=>{const M=O!=null?Number(O):r.getMonth(S.value),L=r.setYear(r.startOfMonth(r.date()),r.getYear(E.value));return r.setMonth(L,M)},O=>r.getMonth(O)),T=computed(()=>{const O=Number(n.firstDayOfWeek??0);return n.weekdays.map(M=>(M+O)%7)}),C=computed(()=>{const O=r.getWeekArray(x.value,n.firstDayOfWeek),M=O.flat(),L=6*7;if(n.weeksInMonth==="static"&&M.lengthT.value.includes(r.toJsDate(L).getDay())).map((L,F)=>{const U=r.toISO(L),j=!r.isSameMonth(L,x.value),z=r.isSameDay(L,r.startOfMonth(x.value)),H=r.isSameDay(L,r.endOfMonth(x.value)),Q=r.isSameDay(L,x.value);return{date:L,isoDate:U,formatted:r.format(L,"keyboardDate"),year:r.getYear(L),month:r.getMonth(L),isDisabled:N(L),isWeekStart:F%7===0,isWeekEnd:F%7===6,isToday:r.isSameDay(L,M),isAdjacent:j,isHidden:j&&!n.showAdjacentMonths,isStart:z,isSelected:_.value.some(J=>r.isSameDay(L,J)),isEnd:H,isSame:Q,localized:r.format(L,"dayOfMonth")}})}const B=computed(()=>{const O=r.startOfWeek(S.value,n.firstDayOfWeek),M=[];for(let F=0;F<=6;F++)M.push(r.addDays(O,F));const L=r.date();return I(M,L)}),A=computed(()=>{const O=C.value.flat(),M=r.date();return I(O,M)}),D=computed(()=>C.value.map(O=>O.length?getWeek(r,O[0]):null));function N(O){if(n.disabled)return!0;const M=r.date(O);return n.min&&r.isAfter(r.date(n.min),M)||n.max&&r.isAfter(M,r.date(n.max))?!0:Array.isArray(n.allowedDates)&&n.allowedDates.length>0?!n.allowedDates.some(L=>r.isSameDay(r.date(L),M)):typeof n.allowedDates=="function"?!n.allowedDates(M):!1}return{displayValue:S,daysInMonth:A,daysInWeek:B,genDays:I,model:_,weeksInMonth:C,weekDays:T,weekNumbers:D}}const makeVDatePickerMonthProps=propsFactory({color:String,hideWeekdays:Boolean,multiple:[Boolean,Number,String],showWeek:Boolean,transition:{type:String,default:"picker-transition"},reverseTransition:{type:String,default:"picker-reverse-transition"},...makeCalendarProps()},"VDatePickerMonth"),VDatePickerMonth=genericComponent()({name:"VDatePickerMonth",props:makeVDatePickerMonthProps(),emits:{"update:modelValue":n=>!0,"update:month":n=>!0,"update:year":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=ref$2(),{daysInMonth:x,model:T,weekNumbers:C}=useCalendar(n),I=useDate(),B=shallowRef(),A=shallowRef(),D=shallowRef(!1),N=computed(()=>D.value?n.reverseTransition:n.transition);n.multiple==="range"&&T.value.length>0&&(B.value=T.value[0],T.value.length>1&&(A.value=T.value[T.value.length-1]));const O=computed(()=>{const U=["number","string"].includes(typeof n.multiple)?Number(n.multiple):1/0;return T.value.length>=U});watch(x,(U,j)=>{j&&(D.value=I.isBefore(U[0].date,j[0].date))});function M(U){const j=I.startOfDay(U);if(T.value.length===0?B.value=void 0:T.value.length===1&&(B.value=T.value[0],A.value=void 0),!B.value)B.value=j,T.value=[B.value];else if(A.value)B.value=U,A.value=void 0,T.value=[B.value];else{if(I.isSameDay(j,B.value)){B.value=void 0,T.value=[];return}else I.isBefore(j,B.value)?(A.value=I.endOfDay(B.value),B.value=j):A.value=I.endOfDay(j);const z=I.getDiff(A.value,B.value,"days"),H=[B.value];for(let Q=1;QI.isSameDay(z,U));if(j===-1)T.value=[...T.value,U];else{const z=[...T.value];z.splice(j,1),T.value=z}}function F(U){n.multiple==="range"?M(U):n.multiple?L(U):T.value=[U]}return()=>createVNode("div",{class:"v-date-picker-month"},[n.showWeek&&createVNode("div",{key:"weeks",class:"v-date-picker-month__weeks"},[!n.hideWeekdays&&createVNode("div",{key:"hide-week-days",class:"v-date-picker-month__day"},[createTextVNode(" ")]),C.value.map(U=>createVNode("div",{class:["v-date-picker-month__day","v-date-picker-month__day--adjacent"]},[U]))]),createVNode(MaybeTransition,{name:N.value},{default:()=>[createVNode("div",{ref:E,key:x.value[0].date?.toString(),class:"v-date-picker-month__days"},[!n.hideWeekdays&&I.getWeekdays(n.firstDayOfWeek).map(U=>createVNode("div",{class:["v-date-picker-month__day","v-date-picker-month__weekday"]},[U])),x.value.map((U,j)=>{const z={props:{onClick:()=>F(U.date)},item:U,i:j};return O.value&&!U.isSelected&&(U.isDisabled=!0),createVNode("div",{class:["v-date-picker-month__day",{"v-date-picker-month__day--adjacent":U.isAdjacent,"v-date-picker-month__day--hide-adjacent":U.isHidden,"v-date-picker-month__day--selected":U.isSelected,"v-date-picker-month__day--week-end":U.isWeekEnd,"v-date-picker-month__day--week-start":U.isWeekStart}],"data-v-date":U.isDisabled?void 0:U.isoDate},[(n.showAdjacentMonths||!U.isAdjacent)&&createVNode(VDefaultsProvider,{defaults:{VBtn:{class:"v-date-picker-month__day-btn",color:(U.isSelected||U.isToday)&&!U.isDisabled?n.color:void 0,disabled:U.isDisabled,icon:!0,ripple:!1,text:U.localized,variant:U.isDisabled?U.isToday?"outlined":"text":U.isToday&&!U.isSelected?"outlined":"flat",onClick:()=>F(U.date)}}},{default:()=>[S.day?.(z)??createVNode(VBtn,z.props,null)]})])})])]})])}}),makeVDatePickerMonthsProps=propsFactory({color:String,height:[String,Number],min:null,max:null,modelValue:Number,year:Number},"VDatePickerMonths"),VDatePickerMonths=genericComponent()({name:"VDatePickerMonths",props:makeVDatePickerMonthsProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useDate(),x=useProxiedModel(n,"modelValue"),T=computed(()=>{let C=E.startOfYear(E.date());return n.year&&(C=E.setYear(C,n.year)),createRange(12).map(I=>{const B=E.format(C,"monthShort"),A=!!(n.min&&E.isAfter(E.startOfMonth(E.date(n.min)),C)||n.max&&E.isAfter(C,E.startOfMonth(E.date(n.max))));return C=E.getNextMonth(C),{isDisabled:A,text:B,value:I}})});return watchEffect(()=>{x.value=x.value??E.getMonth(E.date())}),useRender(()=>createVNode("div",{class:"v-date-picker-months",style:{height:convertToUnit(n.height)}},[createVNode("div",{class:"v-date-picker-months__content"},[T.value.map((C,I)=>{const B={active:x.value===I,color:x.value===I?n.color:void 0,disabled:C.isDisabled,rounded:!0,text:C.text,variant:x.value===C.value?"flat":"text",onClick:()=>A(I)};function A(D){if(x.value===D){_("update:modelValue",x.value);return}x.value=D}return S.month?.({month:C,i:I,props:B})??createVNode(VBtn,mergeProps({key:"month"},B),null)})])])),{}}}),makeVDatePickerYearsProps=propsFactory({color:String,height:[String,Number],min:null,max:null,modelValue:Number},"VDatePickerYears"),VDatePickerYears=genericComponent()({name:"VDatePickerYears",props:makeVDatePickerYearsProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useDate(),x=useProxiedModel(n,"modelValue"),T=computed(()=>{const I=E.getYear(E.date());let B=I-100,A=I+52;n.min&&(B=E.getYear(E.date(n.min))),n.max&&(A=E.getYear(E.date(n.max)));let D=E.startOfYear(E.date());return D=E.setYear(D,B),createRange(A-B+1,B).map(N=>{const O=E.format(D,"year");return D=E.setYear(D,E.getYear(D)+1),{text:O,value:N}})});watchEffect(()=>{x.value=x.value??E.getYear(E.date())});const C=templateRef();return onMounted(async()=>{await nextTick$2(),C.el?.scrollIntoView({block:"center"})}),useRender(()=>createVNode("div",{class:"v-date-picker-years",style:{height:convertToUnit(n.height)}},[createVNode("div",{class:"v-date-picker-years__content"},[T.value.map((I,B)=>{const A={ref:x.value===I.value?C:void 0,active:x.value===I.value,color:x.value===I.value?n.color:void 0,rounded:!0,text:I.text,variant:x.value===I.value?"flat":"text",onClick:()=>{if(x.value===I.value){_("update:modelValue",x.value);return}x.value=I.value}};return S.year?.({year:I,i:B,props:A})??createVNode(VBtn,mergeProps({key:"month"},A),null)})])])),{}}}),VPickerTitle=createSimpleFunctional("v-picker-title"),makeVPickerProps=propsFactory({bgColor:String,landscape:Boolean,title:String,hideHeader:Boolean,...makeVSheetProps()},"VPicker"),VPicker=genericComponent()({name:"VPicker",props:makeVPickerProps(),setup(n,r){let{slots:_}=r;const{backgroundColorClasses:S,backgroundColorStyles:E}=useBackgroundColor(toRef(n,"color"));return useRender(()=>{const x=VSheet.filterProps(n),T=!!(n.title||_.title);return createVNode(VSheet,mergeProps(x,{color:n.bgColor,class:["v-picker",{"v-picker--landscape":n.landscape,"v-picker--with-actions":!!_.actions},n.class],style:n.style}),{default:()=>[!n.hideHeader&&createVNode("div",{key:"header",class:[S.value],style:[E.value]},[T&&createVNode(VPickerTitle,{key:"picker-title"},{default:()=>[_.title?.()??n.title]}),_.header&&createVNode("div",{class:"v-picker__header"},[_.header()])]),createVNode("div",{class:"v-picker__body"},[_.default?.()]),_.actions&&createVNode(VDefaultsProvider,{defaults:{VBtn:{slim:!0,variant:"text"}}},{default:()=>[createVNode("div",{class:"v-picker__actions"},[_.actions()])]})]})}),{}}}),makeVDatePickerProps=propsFactory({header:{type:String,default:"$vuetify.datePicker.header"},...makeVDatePickerControlsProps(),...makeVDatePickerMonthProps({weeksInMonth:"static"}),...omit(makeVDatePickerMonthsProps(),["modelValue"]),...omit(makeVDatePickerYearsProps(),["modelValue"]),...makeVPickerProps({title:"$vuetify.datePicker.title"}),modelValue:null},"VDatePicker"),VDatePicker=genericComponent()({name:"VDatePicker",props:makeVDatePickerProps(),emits:{"update:modelValue":n=>!0,"update:month":n=>!0,"update:year":n=>!0,"update:viewMode":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useDate(),{t:x}=useLocale(),T=useProxiedModel(n,"modelValue",void 0,ie=>wrapInArray(ie),ie=>n.multiple?ie:ie[0]),C=useProxiedModel(n,"viewMode"),I=computed(()=>{const ie=E.date(T.value?.[0]);return ie&&E.isValid(ie)?ie:E.date()}),B=ref$2(Number(n.month??E.getMonth(E.startOfMonth(I.value)))),A=ref$2(Number(n.year??E.getYear(E.startOfYear(E.setMonth(I.value,B.value))))),D=shallowRef(!1),N=computed(()=>n.multiple&&T.value.length>1?x("$vuetify.datePicker.itemsSelected",T.value.length):T.value[0]&&E.isValid(T.value[0])?E.format(E.date(T.value[0]),"normalDateWithWeekday"):x(n.header)),O=computed(()=>{let ie=E.date();return ie=E.setDate(ie,1),ie=E.setMonth(ie,B.value),ie=E.setYear(ie,A.value),E.format(ie,"monthAndYear")}),M=computed(()=>`date-picker-header${D.value?"-reverse":""}-transition`),L=computed(()=>{const ie=E.date(n.min);return n.min&&E.isValid(ie)?ie:null}),F=computed(()=>{const ie=E.date(n.max);return n.max&&E.isValid(ie)?ie:null}),U=computed(()=>{if(n.disabled)return!0;const ie=[];if(C.value!=="month")ie.push("prev","next");else{let pe=E.date();if(pe=E.setYear(pe,A.value),pe=E.setMonth(pe,B.value),L.value){const ue=E.addDays(E.startOfMonth(pe),-1);E.isAfter(L.value,ue)&&ie.push("prev")}if(F.value){const ue=E.addDays(E.endOfMonth(pe),1);E.isAfter(ue,F.value)&&ie.push("next")}}return ie});function j(){B.value<11?B.value++:(A.value++,B.value=0,re(A.value)),Z(B.value)}function z(){B.value>0?B.value--:(A.value--,B.value=11,re(A.value)),Z(B.value)}function H(){C.value="month"}function Q(){C.value=C.value==="months"?"month":"months"}function J(){C.value=C.value==="year"?"month":"year"}function Z(ie){C.value==="months"&&Q(),_("update:month",ie)}function re(ie){C.value==="year"&&J(),_("update:year",ie)}return watch(T,(ie,pe)=>{const ue=wrapInArray(pe),W=wrapInArray(ie);if(!W.length)return;const Y=E.date(ue[ue.length-1]),q=E.date(W[W.length-1]),G=E.getMonth(q),ne=E.getYear(q);G!==B.value&&(B.value=G,Z(B.value)),ne!==A.value&&(A.value=ne,re(A.value)),D.value=E.isBefore(Y,q)}),useRender(()=>{const ie=VPicker.filterProps(n),pe=VDatePickerControls.filterProps(n),ue=VDatePickerHeader.filterProps(n),W=VDatePickerMonth.filterProps(n),Y=omit(VDatePickerMonths.filterProps(n),["modelValue"]),q=omit(VDatePickerYears.filterProps(n),["modelValue"]),G={header:N.value,transition:M.value};return createVNode(VPicker,mergeProps(ie,{class:["v-date-picker",`v-date-picker--${C.value}`,{"v-date-picker--show-week":n.showWeek},n.class],style:n.style}),{title:()=>S.title?.()??createVNode("div",{class:"v-date-picker__title"},[x(n.title)]),header:()=>S.header?createVNode(VDefaultsProvider,{defaults:{VDatePickerHeader:{...G}}},{default:()=>[S.header?.(G)]}):createVNode(VDatePickerHeader,mergeProps({key:"header"},ue,G,{onClick:C.value!=="month"?H:void 0}),{...S,default:void 0}),default:()=>createVNode(Fragment,null,[createVNode(VDatePickerControls,mergeProps(pe,{disabled:U.value,text:O.value,"onClick:next":j,"onClick:prev":z,"onClick:month":Q,"onClick:year":J}),null),createVNode(VFadeTransition,{hideOnLeave:!0},{default:()=>[C.value==="months"?createVNode(VDatePickerMonths,mergeProps({key:"date-picker-months"},Y,{modelValue:B.value,"onUpdate:modelValue":[ne=>B.value=ne,Z],min:L.value,max:F.value,year:A.value}),null):C.value==="year"?createVNode(VDatePickerYears,mergeProps({key:"date-picker-years"},q,{modelValue:A.value,"onUpdate:modelValue":[ne=>A.value=ne,re],min:L.value,max:F.value}),null):createVNode(VDatePickerMonth,mergeProps({key:"date-picker-month"},W,{modelValue:T.value,"onUpdate:modelValue":ne=>T.value=ne,month:B.value,"onUpdate:month":[ne=>B.value=ne,Z],year:A.value,"onUpdate:year":[ne=>A.value=ne,re],min:L.value,max:F.value}),null)]})]),actions:S.actions})}),{}}}),makeVEmptyStateProps=propsFactory({actionText:String,bgColor:String,color:String,icon:IconValue,image:String,justify:{type:String,default:"center"},headline:String,title:String,text:String,textWidth:{type:[Number,String],default:500},href:String,to:String,...makeComponentProps(),...makeDimensionProps(),...makeSizeProps({size:void 0}),...makeThemeProps()},"VEmptyState"),VEmptyState=genericComponent()({name:"VEmptyState",props:makeVEmptyStateProps(),emits:{"click:action":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const{themeClasses:E}=provideTheme(n),{backgroundColorClasses:x,backgroundColorStyles:T}=useBackgroundColor(toRef(n,"bgColor")),{dimensionStyles:C}=useDimension(n),{displayClasses:I}=useDisplay();function B(A){_("click:action",A)}return useRender(()=>{const A=!!(S.actions||n.actionText),D=!!(S.headline||n.headline),N=!!(S.title||n.title),O=!!(S.text||n.text),M=!!(S.media||n.image||n.icon),L=n.size||(n.image?200:96);return createVNode("div",{class:["v-empty-state",{[`v-empty-state--${n.justify}`]:!0},E.value,x.value,I.value,n.class],style:[T.value,C.value,n.style]},[M&&createVNode("div",{key:"media",class:"v-empty-state__media"},[S.media?createVNode(VDefaultsProvider,{key:"media-defaults",defaults:{VImg:{src:n.image,height:L},VIcon:{size:L,icon:n.icon}}},{default:()=>[S.media()]}):createVNode(Fragment,null,[n.image?createVNode(VImg,{key:"image",src:n.image,height:L},null):n.icon?createVNode(VIcon,{key:"icon",color:n.color,size:L,icon:n.icon},null):void 0])]),D&&createVNode("div",{key:"headline",class:"v-empty-state__headline"},[S.headline?.()??n.headline]),N&&createVNode("div",{key:"title",class:"v-empty-state__title"},[S.title?.()??n.title]),O&&createVNode("div",{key:"text",class:"v-empty-state__text",style:{maxWidth:convertToUnit(n.textWidth)}},[S.text?.()??n.text]),S.default&&createVNode("div",{key:"content",class:"v-empty-state__content"},[S.default()]),A&&createVNode("div",{key:"actions",class:"v-empty-state__actions"},[createVNode(VDefaultsProvider,{defaults:{VBtn:{class:"v-empty-state__action-btn",color:n.color??"surface-variant",text:n.actionText}}},{default:()=>[S.actions?.({props:{onClick:B}})??createVNode(VBtn,{onClick:B},null)]})])])}),{}}}),VExpansionPanelSymbol=Symbol.for("vuetify:v-expansion-panel"),makeVExpansionPanelTextProps=propsFactory({...makeComponentProps(),...makeLazyProps()},"VExpansionPanelText"),VExpansionPanelText=genericComponent()({name:"VExpansionPanelText",props:makeVExpansionPanelTextProps(),setup(n,r){let{slots:_}=r;const S=inject$1(VExpansionPanelSymbol);if(!S)throw new Error("[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel");const{hasContent:E,onAfterLeave:x}=useLazy(n,S.isSelected);return useRender(()=>createVNode(VExpandTransition,{onAfterLeave:x},{default:()=>[withDirectives(createVNode("div",{class:["v-expansion-panel-text",n.class],style:n.style},[_.default&&E.value&&createVNode("div",{class:"v-expansion-panel-text__wrapper"},[_.default?.()])]),[[vShow,S.isSelected.value]])]})),{}}}),makeVExpansionPanelTitleProps=propsFactory({color:String,expandIcon:{type:IconValue,default:"$expand"},collapseIcon:{type:IconValue,default:"$collapse"},hideActions:Boolean,focusable:Boolean,static:Boolean,ripple:{type:[Boolean,Object],default:!1},readonly:Boolean,...makeComponentProps(),...makeDimensionProps()},"VExpansionPanelTitle"),VExpansionPanelTitle=genericComponent()({name:"VExpansionPanelTitle",directives:{Ripple},props:makeVExpansionPanelTitleProps(),setup(n,r){let{slots:_}=r;const S=inject$1(VExpansionPanelSymbol);if(!S)throw new Error("[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel");const{backgroundColorClasses:E,backgroundColorStyles:x}=useBackgroundColor(n,"color"),{dimensionStyles:T}=useDimension(n),C=computed(()=>({collapseIcon:n.collapseIcon,disabled:S.disabled.value,expanded:S.isSelected.value,expandIcon:n.expandIcon,readonly:n.readonly})),I=computed(()=>S.isSelected.value?n.collapseIcon:n.expandIcon);return useRender(()=>withDirectives(createVNode("button",{class:["v-expansion-panel-title",{"v-expansion-panel-title--active":S.isSelected.value,"v-expansion-panel-title--focusable":n.focusable,"v-expansion-panel-title--static":n.static},E.value,n.class],style:[x.value,T.value,n.style],type:"button",tabindex:S.disabled.value?-1:void 0,disabled:S.disabled.value,"aria-expanded":S.isSelected.value,onClick:n.readonly?void 0:S.toggle},[createVNode("span",{class:"v-expansion-panel-title__overlay"},null),_.default?.(C.value),!n.hideActions&&createVNode(VDefaultsProvider,{defaults:{VIcon:{icon:I.value}}},{default:()=>[createVNode("span",{class:"v-expansion-panel-title__icon"},[_.actions?.(C.value)??createVNode(VIcon,null,null)])]})]),[[resolveDirective("ripple"),n.ripple]])),{}}}),makeVExpansionPanelProps=propsFactory({title:String,text:String,bgColor:String,...makeElevationProps(),...makeGroupItemProps(),...makeRoundedProps(),...makeTagProps(),...makeVExpansionPanelTitleProps(),...makeVExpansionPanelTextProps()},"VExpansionPanel"),VExpansionPanel=genericComponent()({name:"VExpansionPanel",props:makeVExpansionPanelProps(),emits:{"group:selected":n=>!0},setup(n,r){let{slots:_}=r;const S=useGroupItem(n,VExpansionPanelSymbol),{backgroundColorClasses:E,backgroundColorStyles:x}=useBackgroundColor(n,"bgColor"),{elevationClasses:T}=useElevation(n),{roundedClasses:C}=useRounded(n),I=computed(()=>S?.disabled.value||n.disabled),B=computed(()=>S.group.items.value.reduce((N,O,M)=>(S.group.selected.value.includes(O.id)&&N.push(M),N),[])),A=computed(()=>{const N=S.group.items.value.findIndex(O=>O.id===S.id);return!S.isSelected.value&&B.value.some(O=>O-N===1)}),D=computed(()=>{const N=S.group.items.value.findIndex(O=>O.id===S.id);return!S.isSelected.value&&B.value.some(O=>O-N===-1)});return provide(VExpansionPanelSymbol,S),useRender(()=>{const N=!!(_.text||n.text),O=!!(_.title||n.title),M=VExpansionPanelTitle.filterProps(n),L=VExpansionPanelText.filterProps(n);return createVNode(n.tag,{class:["v-expansion-panel",{"v-expansion-panel--active":S.isSelected.value,"v-expansion-panel--before-active":A.value,"v-expansion-panel--after-active":D.value,"v-expansion-panel--disabled":I.value},C.value,E.value,n.class],style:[x.value,n.style]},{default:()=>[createVNode("div",{class:["v-expansion-panel__shadow",...T.value]},null),createVNode(VDefaultsProvider,{defaults:{VExpansionPanelTitle:{...M},VExpansionPanelText:{...L}}},{default:()=>[O&&createVNode(VExpansionPanelTitle,{key:"title"},{default:()=>[_.title?_.title():n.title]}),N&&createVNode(VExpansionPanelText,{key:"text"},{default:()=>[_.text?_.text():n.text]}),_.default?.()]})]})}),{groupItem:S}}}),allowedVariants=["default","accordion","inset","popout"],makeVExpansionPanelsProps=propsFactory({flat:Boolean,...makeGroupProps(),...pick(makeVExpansionPanelProps(),["bgColor","collapseIcon","color","eager","elevation","expandIcon","focusable","hideActions","readonly","ripple","rounded","tile","static"]),...makeThemeProps(),...makeComponentProps(),...makeTagProps(),variant:{type:String,default:"default",validator:n=>allowedVariants.includes(n)}},"VExpansionPanels"),VExpansionPanels=genericComponent()({name:"VExpansionPanels",props:makeVExpansionPanelsProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{next:S,prev:E}=useGroup(n,VExpansionPanelSymbol),{themeClasses:x}=provideTheme(n),T=computed(()=>n.variant&&`v-expansion-panels--variant-${n.variant}`);return provideDefaults({VExpansionPanel:{bgColor:toRef(n,"bgColor"),collapseIcon:toRef(n,"collapseIcon"),color:toRef(n,"color"),eager:toRef(n,"eager"),elevation:toRef(n,"elevation"),expandIcon:toRef(n,"expandIcon"),focusable:toRef(n,"focusable"),hideActions:toRef(n,"hideActions"),readonly:toRef(n,"readonly"),ripple:toRef(n,"ripple"),rounded:toRef(n,"rounded"),static:toRef(n,"static")}}),useRender(()=>createVNode(n.tag,{class:["v-expansion-panels",{"v-expansion-panels--flat":n.flat,"v-expansion-panels--tile":n.tile},x.value,T.value,n.class],style:n.style},{default:()=>[_.default?.({prev:E,next:S})]})),{next:S,prev:E}}}),makeVFabProps=propsFactory({app:Boolean,appear:Boolean,extended:Boolean,layout:Boolean,offset:Boolean,modelValue:{type:Boolean,default:!0},...omit(makeVBtnProps({active:!0}),["location"]),...makeLayoutItemProps(),...makeLocationProps(),...makeTransitionProps({transition:"fab-transition"})},"VFab"),VFab=genericComponent()({name:"VFab",props:makeVFabProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),E=shallowRef(56),x=ref$2(),{resizeRef:T}=useResizeObserver(D=>{D.length&&(E.value=D[0].target.clientHeight)}),C=computed(()=>n.app||n.absolute),I=computed(()=>C.value?n.location?.split(" ").shift()??"bottom":!1),B=computed(()=>C.value?n.location?.split(" ")[1]??"end":!1);useToggleScope(()=>n.app,()=>{const D=useLayoutItem({id:n.name,order:computed(()=>parseInt(n.order,10)),position:I,layoutSize:computed(()=>n.layout?E.value+24:0),elementSize:computed(()=>E.value+24),active:computed(()=>n.app&&S.value),absolute:toRef(n,"absolute")});watchEffect(()=>{x.value=D.layoutItemStyles.value})});const A=ref$2();return useRender(()=>{const D=VBtn.filterProps(n);return createVNode("div",{ref:A,class:["v-fab",{"v-fab--absolute":n.absolute,"v-fab--app":!!n.app,"v-fab--extended":n.extended,"v-fab--offset":n.offset,[`v-fab--${I.value}`]:C.value,[`v-fab--${B.value}`]:C.value},n.class],style:[n.app?{...x.value}:{height:"inherit",width:void 0},n.style]},[createVNode("div",{class:"v-fab__container"},[createVNode(MaybeTransition,{appear:n.appear,transition:n.transition},{default:()=>[withDirectives(createVNode(VBtn,mergeProps({ref:T},D,{active:void 0,location:void 0}),_),[[vShow,n.active]])]})])])}),{}}}),makeVFileInputProps=propsFactory({chips:Boolean,counter:Boolean,counterSizeString:{type:String,default:"$vuetify.fileInput.counterSize"},counterString:{type:String,default:"$vuetify.fileInput.counter"},hideInput:Boolean,multiple:Boolean,showSize:{type:[Boolean,Number,String],default:!1,validator:n=>typeof n=="boolean"||[1e3,1024].includes(Number(n))},...makeVInputProps({prependIcon:"$file"}),modelValue:{type:[Array,Object],default:n=>n.multiple?[]:null,validator:n=>wrapInArray(n).every(r=>r!=null&&typeof r=="object")},...makeVFieldProps({clearable:!0})},"VFileInput"),VFileInput=genericComponent()({name:"VFileInput",inheritAttrs:!1,props:makeVFileInputProps(),emits:{"click:control":n=>!0,"mousedown:control":n=>!0,"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{t:x}=useLocale(),T=useProxiedModel(n,"modelValue",n.modelValue,ie=>wrapInArray(ie),ie=>!n.multiple&&Array.isArray(ie)?ie[0]:ie),{isFocused:C,focus:I,blur:B}=useFocus(n),A=computed(()=>typeof n.showSize!="boolean"?n.showSize:void 0),D=computed(()=>(T.value??[]).reduce((ie,pe)=>{let{size:ue=0}=pe;return ie+ue},0)),N=computed(()=>humanReadableFileSize(D.value,A.value)),O=computed(()=>(T.value??[]).map(ie=>{const{name:pe="",size:ue=0}=ie;return n.showSize?`${pe} (${humanReadableFileSize(ue,A.value)})`:pe})),M=computed(()=>{const ie=T.value?.length??0;return n.showSize?x(n.counterSizeString,ie,N.value):x(n.counterString,ie)}),L=ref$2(),F=ref$2(),U=ref$2(),j=computed(()=>C.value||n.active),z=computed(()=>["plain","underlined"].includes(n.variant));function H(){U.value!==document.activeElement&&U.value?.focus(),C.value||I()}function Q(ie){U.value?.click()}function J(ie){S("mousedown:control",ie)}function Z(ie){U.value?.click(),S("click:control",ie)}function re(ie){ie.stopPropagation(),H(),nextTick$2(()=>{T.value=[],callEvent(n["onClick:clear"],ie)})}return watch(T,ie=>{(!Array.isArray(ie)||!ie.length)&&U.value&&(U.value.value="")}),useRender(()=>{const ie=!!(E.counter||n.counter),pe=!!(ie||E.details),[ue,W]=filterInputAttrs(_),{modelValue:Y,...q}=VInput.filterProps(n),G=filterFieldProps(n);return createVNode(VInput,mergeProps({ref:L,modelValue:T.value,"onUpdate:modelValue":ne=>T.value=ne,class:["v-file-input",{"v-file-input--chips":!!n.chips,"v-file-input--hide":n.hideInput,"v-input--plain-underlined":z.value},n.class],style:n.style,"onClick:prepend":Q},ue,q,{centerAffix:!z.value,focused:C.value}),{...E,default:ne=>{let{id:ee,isDisabled:oe,isDirty:ae,isReadonly:se,isValid:te}=ne;return createVNode(VField,mergeProps({ref:F,"prepend-icon":n.prependIcon,onMousedown:J,onClick:Z,"onClick:clear":re,"onClick:prependInner":n["onClick:prependInner"],"onClick:appendInner":n["onClick:appendInner"]},G,{id:ee.value,active:j.value||ae.value,dirty:ae.value||n.dirty,disabled:oe.value,focused:C.value,error:te.value===!1}),{...E,default:X=>{let{props:{class:ce,...le}}=X;return createVNode(Fragment,null,[createVNode("input",mergeProps({ref:U,type:"file",readonly:se.value,disabled:oe.value,multiple:n.multiple,name:n.name,onClick:ye=>{ye.stopPropagation(),se.value&&ye.preventDefault(),H()},onChange:ye=>{if(!ye.target)return;const de=ye.target;T.value=[...de.files??[]]},onFocus:H,onBlur:B},le,W),null),createVNode("div",{class:ce},[!!T.value?.length&&!n.hideInput&&(E.selection?E.selection({fileNames:O.value,totalBytes:D.value,totalBytesReadable:N.value}):n.chips?O.value.map(ye=>createVNode(VChip,{key:ye,size:"small",text:ye},null)):O.value.join(", "))])])}})},details:pe?ne=>createVNode(Fragment,null,[E.details?.(ne),ie&&createVNode(Fragment,null,[createVNode("span",null,null),createVNode(VCounter,{active:!!T.value?.length,value:M.value,disabled:n.disabled},E.counter)])]):void 0})}),forwardRefs({},L,F,U)}}),makeVFormProps=propsFactory({...makeComponentProps(),...makeFormProps()},"VForm"),VForm=genericComponent()({name:"VForm",props:makeVFormProps(),emits:{"update:modelValue":n=>!0,submit:n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=createForm(n),x=ref$2();function T(I){I.preventDefault(),E.reset()}function C(I){const B=I,A=E.validate();B.then=A.then.bind(A),B.catch=A.catch.bind(A),B.finally=A.finally.bind(A),S("submit",B),B.defaultPrevented||A.then(D=>{let{valid:N}=D;N&&x.value?.submit()}),B.preventDefault()}return useRender(()=>createVNode("form",{ref:x,class:["v-form",n.class],style:n.style,novalidate:!0,onReset:T,onSubmit:C},[_.default?.(E)])),forwardRefs(E,x)}}),makeVHoverProps=propsFactory({disabled:Boolean,modelValue:{type:Boolean,default:null},...makeDelayProps()},"VHover"),VHover=genericComponent()({name:"VHover",props:makeVHoverProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),{runOpenDelay:E,runCloseDelay:x}=useDelay(n,T=>!n.disabled&&(S.value=T));return()=>_.default?.({isHovering:S.value,props:{onMouseenter:E,onMouseleave:x}})}}),makeVInfiniteScrollProps=propsFactory({color:String,direction:{type:String,default:"vertical",validator:n=>["vertical","horizontal"].includes(n)},side:{type:String,default:"end",validator:n=>["start","end","both"].includes(n)},mode:{type:String,default:"intersect",validator:n=>["intersect","manual"].includes(n)},margin:[Number,String],loadMoreText:{type:String,default:"$vuetify.infiniteScroll.loadMore"},emptyText:{type:String,default:"$vuetify.infiniteScroll.empty"},...makeDimensionProps(),...makeTagProps()},"VInfiniteScroll"),VInfiniteScrollIntersect=defineComponent({name:"VInfiniteScrollIntersect",props:{side:{type:String,required:!0},rootMargin:String},emits:{intersect:(n,r)=>!0},setup(n,r){let{emit:_}=r;const{intersectionRef:S,isIntersecting:E}=useIntersectionObserver();return watch(E,async x=>{_("intersect",n.side,x)}),useRender(()=>createVNode("div",{class:"v-infinite-scroll-intersect",style:{"--v-infinite-margin-size":n.rootMargin},ref:S},[createTextVNode(" ")])),{}}}),VInfiniteScroll=genericComponent()({name:"VInfiniteScroll",props:makeVInfiniteScrollProps(),emits:{load:n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=ref$2(),x=shallowRef("ok"),T=shallowRef("ok"),C=computed(()=>convertToUnit(n.margin)),I=shallowRef(!1);function B(Q){if(!E.value)return;const J=n.direction==="vertical"?"scrollTop":"scrollLeft";E.value[J]=Q}function A(){if(!E.value)return 0;const Q=n.direction==="vertical"?"scrollTop":"scrollLeft";return E.value[Q]}function D(){if(!E.value)return 0;const Q=n.direction==="vertical"?"scrollHeight":"scrollWidth";return E.value[Q]}function N(){if(!E.value)return 0;const Q=n.direction==="vertical"?"clientHeight":"clientWidth";return E.value[Q]}onMounted(()=>{E.value&&(n.side==="start"?B(D()):n.side==="both"&&B(D()/2-N()/2))});function O(Q,J){Q==="start"?x.value=J:Q==="end"&&(T.value=J)}function M(Q){return Q==="start"?x.value:T.value}let L=0;function F(Q,J){I.value=J,I.value&&U(Q)}function U(Q){if(n.mode!=="manual"&&!I.value)return;const J=M(Q);if(!E.value||["empty","loading"].includes(J))return;L=D(),O(Q,"loading");function Z(re){O(Q,re),nextTick$2(()=>{re==="empty"||re==="error"||(re==="ok"&&Q==="start"&&B(D()-L+A()),n.mode!=="manual"&&nextTick$2(()=>{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{U(Q)})})})}))})}S("load",{side:Q,done:Z})}const{t:j}=useLocale();function z(Q,J){if(n.side!==Q&&n.side!=="both")return;const Z=()=>U(Q),re={side:Q,props:{onClick:Z,color:n.color}};return J==="error"?_.error?.(re):J==="empty"?_.empty?.(re)??createVNode("div",null,[j(n.emptyText)]):n.mode==="manual"?J==="loading"?_.loading?.(re)??createVNode(VProgressCircular,{indeterminate:!0,color:n.color},null):_["load-more"]?.(re)??createVNode(VBtn,{variant:"outlined",color:n.color,onClick:Z},{default:()=>[j(n.loadMoreText)]}):_.loading?.(re)??createVNode(VProgressCircular,{indeterminate:!0,color:n.color},null)}const{dimensionStyles:H}=useDimension(n);useRender(()=>{const Q=n.tag,J=n.side==="start"||n.side==="both",Z=n.side==="end"||n.side==="both",re=n.mode==="intersect";return createVNode(Q,{ref:E,class:["v-infinite-scroll",`v-infinite-scroll--${n.direction}`,{"v-infinite-scroll--start":J,"v-infinite-scroll--end":Z}],style:H.value},{default:()=>[createVNode("div",{class:"v-infinite-scroll__side"},[z("start",x.value)]),J&&re&&createVNode(VInfiniteScrollIntersect,{key:"start",side:"start",onIntersect:F,rootMargin:C.value},null),_.default?.(),Z&&re&&createVNode(VInfiniteScrollIntersect,{key:"end",side:"end",onIntersect:F,rootMargin:C.value},null),createVNode("div",{class:"v-infinite-scroll__side"},[z("end",T.value)])]})})}}),VItemGroupSymbol=Symbol.for("vuetify:v-item-group"),makeVItemGroupProps=propsFactory({...makeComponentProps(),...makeGroupProps({selectedClass:"v-item--selected"}),...makeTagProps(),...makeThemeProps()},"VItemGroup"),VItemGroup=genericComponent()({name:"VItemGroup",props:makeVItemGroupProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n),{isSelected:E,select:x,next:T,prev:C,selected:I}=useGroup(n,VItemGroupSymbol);return()=>createVNode(n.tag,{class:["v-item-group",S.value,n.class],style:n.style},{default:()=>[_.default?.({isSelected:E,select:x,next:T,prev:C,selected:I.value})]})}}),VItem=genericComponent()({name:"VItem",props:makeGroupItemProps(),emits:{"group:selected":n=>!0},setup(n,r){let{slots:_}=r;const{isSelected:S,select:E,toggle:x,selectedClass:T,value:C,disabled:I}=useGroupItem(n,VItemGroupSymbol);return()=>_.default?.({isSelected:S.value,selectedClass:T.value,select:E,toggle:x,value:C.value,disabled:I.value})}}),VKbd=createSimpleFunctional("v-kbd"),makeVLayoutProps=propsFactory({...makeComponentProps(),...makeDimensionProps(),...makeLayoutProps()},"VLayout"),VLayout=genericComponent()({name:"VLayout",props:makeVLayoutProps(),setup(n,r){let{slots:_}=r;const{layoutClasses:S,layoutStyles:E,getLayoutItem:x,items:T,layoutRef:C}=createLayout(n),{dimensionStyles:I}=useDimension(n);return useRender(()=>createVNode("div",{ref:C,class:[S.value,n.class],style:[I.value,E.value,n.style]},[_.default?.()])),{getLayoutItem:x,items:T}}}),makeVLayoutItemProps=propsFactory({position:{type:String,required:!0},size:{type:[Number,String],default:300},modelValue:Boolean,...makeComponentProps(),...makeLayoutItemProps()},"VLayoutItem"),VLayoutItem=genericComponent()({name:"VLayoutItem",props:makeVLayoutItemProps(),setup(n,r){let{slots:_}=r;const{layoutItemStyles:S}=useLayoutItem({id:n.name,order:computed(()=>parseInt(n.order,10)),position:toRef(n,"position"),elementSize:toRef(n,"size"),layoutSize:toRef(n,"size"),active:toRef(n,"modelValue"),absolute:toRef(n,"absolute")});return()=>createVNode("div",{class:["v-layout-item",n.class],style:[S.value,n.style]},[_.default?.()])}}),makeVLazyProps=propsFactory({modelValue:Boolean,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},...makeComponentProps(),...makeDimensionProps(),...makeTagProps(),...makeTransitionProps({transition:"fade-transition"})},"VLazy"),VLazy=genericComponent()({name:"VLazy",directives:{intersect:Intersect},props:makeVLazyProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{dimensionStyles:S}=useDimension(n),E=useProxiedModel(n,"modelValue");function x(T){E.value||(E.value=T)}return useRender(()=>withDirectives(createVNode(n.tag,{class:["v-lazy",n.class],style:[S.value,n.style]},{default:()=>[E.value&&createVNode(MaybeTransition,{transition:n.transition,appear:!0},{default:()=>[_.default?.()]})]}),[[resolveDirective("intersect"),{handler:x,options:n.options},null]])),{}}}),makeVLocaleProviderProps=propsFactory({locale:String,fallbackLocale:String,messages:Object,rtl:{type:Boolean,default:void 0},...makeComponentProps()},"VLocaleProvider"),VLocaleProvider=genericComponent()({name:"VLocaleProvider",props:makeVLocaleProviderProps(),setup(n,r){let{slots:_}=r;const{rtlClasses:S}=provideLocale(n);return useRender(()=>createVNode("div",{class:["v-locale-provider",S.value,n.class],style:n.style},[_.default?.()])),{}}});function useSticky(n){let{rootEl:r,isSticky:_,layoutItemStyles:S}=n;const E=shallowRef(!1),x=shallowRef(0),T=computed(()=>{const B=typeof E.value=="boolean"?"top":E.value;return[_.value?{top:"auto",bottom:"auto",height:void 0}:void 0,E.value?{[B]:convertToUnit(x.value)}:{top:S.value.top}]});onMounted(()=>{watch(_,B=>{B?window.addEventListener("scroll",I,{passive:!0}):window.removeEventListener("scroll",I)},{immediate:!0})}),onBeforeUnmount(()=>{window.removeEventListener("scroll",I)});let C=0;function I(){const B=C>window.scrollY?"up":"down",A=r.value.getBoundingClientRect(),D=parseFloat(S.value.top??0),N=window.scrollY-Math.max(0,x.value-D),O=A.height+Math.max(x.value,D)-window.scrollY-window.innerHeight,M=parseFloat(getComputedStyle(r.value).getPropertyValue("--v-body-scroll-y"))||0;A.height0;_--){if(n[_].t===n[_-1].t)continue;const S=kineticEnergyToVelocity(r),E=(n[_].d-n[_-1].d)/(n[_].t-n[_-1].t);r+=(E-S)*Math.abs(E),_===n.length-1&&(r*=.5)}return kineticEnergyToVelocity(r)*1e3}function useVelocity(){const n={};function r(E){Array.from(E.changedTouches).forEach(x=>{(n[x.identifier]??(n[x.identifier]=new CircularBuffer(HISTORY))).push([E.timeStamp,x])})}function _(E){Array.from(E.changedTouches).forEach(x=>{delete n[x.identifier]})}function S(E){const x=n[E]?.values().reverse();if(!x)throw new Error(`No samples for touch id ${E}`);const T=x[0],C=[],I=[];for(const B of x){if(T[0]-B[0]>HORIZON)break;C.push({t:B[0],d:B[1].clientX}),I.push({t:B[0],d:B[1].clientY})}return{x:calculateImpulseVelocity(C),y:calculateImpulseVelocity(I),get direction(){const{x:B,y:A}=this,[D,N]=[Math.abs(B),Math.abs(A)];return D>N&&B>=0?"right":D>N&&B<=0?"left":N>D&&A>=0?"down":N>D&&A<=0?"up":oops$1()}}}return{addMovement:r,endTouch:_,getVelocity:S}}function oops$1(){throw new Error}function useTouch(n){let{el:r,isActive:_,isTemporary:S,width:E,touchless:x,position:T}=n;onMounted(()=>{window.addEventListener("touchstart",j,{passive:!0}),window.addEventListener("touchmove",z,{passive:!1}),window.addEventListener("touchend",H,{passive:!0})}),onBeforeUnmount(()=>{window.removeEventListener("touchstart",j),window.removeEventListener("touchmove",z),window.removeEventListener("touchend",H)});const C=computed(()=>["left","right"].includes(T.value)),{addMovement:I,endTouch:B,getVelocity:A}=useVelocity();let D=!1;const N=shallowRef(!1),O=shallowRef(0),M=shallowRef(0);let L;function F(J,Z){return(T.value==="left"?J:T.value==="right"?document.documentElement.clientWidth-J:T.value==="top"?J:T.value==="bottom"?document.documentElement.clientHeight-J:oops())-(Z?E.value:0)}function U(J){let Z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const re=T.value==="left"?(J-M.value)/E.value:T.value==="right"?(document.documentElement.clientWidth-J-M.value)/E.value:T.value==="top"?(J-M.value)/E.value:T.value==="bottom"?(document.documentElement.clientHeight-J-M.value)/E.value:oops();return Z?Math.max(0,Math.min(1,re)):re}function j(J){if(x.value)return;const Z=J.changedTouches[0].clientX,re=J.changedTouches[0].clientY,ie=25,pe=T.value==="left"?Zdocument.documentElement.clientWidth-ie:T.value==="top"?redocument.documentElement.clientHeight-ie:oops(),ue=_.value&&(T.value==="left"?Zdocument.documentElement.clientWidth-E.value:T.value==="top"?redocument.documentElement.clientHeight-E.value:oops());(pe||ue||_.value&&S.value)&&(L=[Z,re],M.value=F(C.value?Z:re,_.value),O.value=U(C.value?Z:re),D=M.value>-20&&M.value<80,B(J),I(J))}function z(J){const Z=J.changedTouches[0].clientX,re=J.changedTouches[0].clientY;if(D){if(!J.cancelable){D=!1;return}const pe=Math.abs(Z-L[0]),ue=Math.abs(re-L[1]);(C.value?pe>ue&&pe>3:ue>pe&&ue>3)?(N.value=!0,D=!1):(C.value?ue:pe)>3&&(D=!1)}if(!N.value)return;J.preventDefault(),I(J);const ie=U(C.value?Z:re,!1);O.value=Math.max(0,Math.min(1,ie)),ie>1?M.value=F(C.value?Z:re,!0):ie<0&&(M.value=F(C.value?Z:re,!1))}function H(J){if(D=!1,!N.value)return;I(J),N.value=!1;const Z=A(J.changedTouches[0].identifier),re=Math.abs(Z.x),ie=Math.abs(Z.y);(C.value?re>ie&&re>400:ie>re&&ie>3)?_.value=Z.direction===({left:"right",right:"left",top:"down",bottom:"up"}[T.value]||oops()):_.value=O.value>.5}const Q=computed(()=>N.value?{transform:T.value==="left"?`translateX(calc(-100% + ${O.value*E.value}px))`:T.value==="right"?`translateX(calc(100% - ${O.value*E.value}px))`:T.value==="top"?`translateY(calc(-100% + ${O.value*E.value}px))`:T.value==="bottom"?`translateY(calc(100% - ${O.value*E.value}px))`:oops(),transition:"none"}:void 0);return useToggleScope(N,()=>{const J=r.value?.style.transform??null,Z=r.value?.style.transition??null;watchEffect(()=>{r.value?.style.setProperty("transform",Q.value?.transform||"none"),r.value?.style.setProperty("transition",Q.value?.transition||null)}),onScopeDispose(()=>{r.value?.style.setProperty("transform",J),r.value?.style.setProperty("transition",Z)})}),{isDragging:N,dragProgress:O,dragStyles:Q}}function oops(){throw new Error}const locations=["start","end","left","right","top","bottom"],makeVNavigationDrawerProps=propsFactory({color:String,disableResizeWatcher:Boolean,disableRouteWatcher:Boolean,expandOnHover:Boolean,floating:Boolean,modelValue:{type:Boolean,default:null},permanent:Boolean,rail:{type:Boolean,default:null},railWidth:{type:[Number,String],default:56},scrim:{type:[Boolean,String],default:!0},image:String,temporary:Boolean,persistent:Boolean,touchless:Boolean,width:{type:[Number,String],default:256},location:{type:String,default:"start",validator:n=>locations.includes(n)},sticky:Boolean,...makeBorderProps(),...makeComponentProps(),...makeDelayProps(),...makeDisplayProps({mobile:null}),...makeElevationProps(),...makeLayoutItemProps(),...makeRoundedProps(),...makeTagProps({tag:"nav"}),...makeThemeProps()},"VNavigationDrawer"),VNavigationDrawer=genericComponent()({name:"VNavigationDrawer",props:makeVNavigationDrawerProps(),emits:{"update:modelValue":n=>!0,"update:rail":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{isRtl:x}=useRtl(),{themeClasses:T}=provideTheme(n),{borderClasses:C}=useBorder(n),{backgroundColorClasses:I,backgroundColorStyles:B}=useBackgroundColor(toRef(n,"color")),{elevationClasses:A}=useElevation(n),{displayClasses:D,mobile:N}=useDisplay(n),{roundedClasses:O}=useRounded(n),M=useRouter(),L=useProxiedModel(n,"modelValue",null,te=>!!te),{ssrBootStyles:F}=useSsrBoot(),{scopeId:U}=useScopeId(),j=ref$2(),z=shallowRef(!1),{runOpenDelay:H,runCloseDelay:Q}=useDelay(n,te=>{z.value=te}),J=computed(()=>n.rail&&n.expandOnHover&&z.value?Number(n.width):Number(n.rail?n.railWidth:n.width)),Z=computed(()=>toPhysical(n.location,x.value)),re=computed(()=>n.persistent),ie=computed(()=>!n.permanent&&(N.value||n.temporary)),pe=computed(()=>n.sticky&&!ie.value&&Z.value!=="bottom");useToggleScope(()=>n.expandOnHover&&n.rail!=null,()=>{watch(z,te=>S("update:rail",!te))}),useToggleScope(()=>!n.disableResizeWatcher,()=>{watch(ie,te=>!n.permanent&&nextTick$2(()=>L.value=!te))}),useToggleScope(()=>!n.disableRouteWatcher&&!!M,()=>{watch(M.currentRoute,()=>ie.value&&(L.value=!1))}),watch(()=>n.permanent,te=>{te&&(L.value=!0)}),n.modelValue==null&&!ie.value&&(L.value=n.permanent||!N.value);const{isDragging:ue,dragProgress:W}=useTouch({el:j,isActive:L,isTemporary:ie,width:J,touchless:toRef(n,"touchless"),position:Z}),Y=computed(()=>{const te=ie.value?0:n.rail&&n.expandOnHover?Number(n.railWidth):J.value;return ue.value?te*W.value:te}),q=computed(()=>["top","bottom"].includes(n.location)?0:J.value),{layoutItemStyles:G,layoutItemScrimStyles:ne}=useLayoutItem({id:n.name,order:computed(()=>parseInt(n.order,10)),position:Z,layoutSize:Y,elementSize:q,active:computed(()=>L.value||ue.value),disableTransitions:computed(()=>ue.value),absolute:computed(()=>n.absolute||pe.value&&typeof ee.value!="string")}),{isStuck:ee,stickyStyles:oe}=useSticky({rootEl:j,isSticky:pe,layoutItemStyles:G}),ae=useBackgroundColor(computed(()=>typeof n.scrim=="string"?n.scrim:null)),se=computed(()=>({...ue.value?{opacity:W.value*.2,transition:"none"}:void 0,...ne.value}));return provideDefaults({VList:{bgColor:"transparent"}}),useRender(()=>{const te=E.image||n.image;return createVNode(Fragment,null,[createVNode(n.tag,mergeProps({ref:j,onMouseenter:H,onMouseleave:Q,class:["v-navigation-drawer",`v-navigation-drawer--${Z.value}`,{"v-navigation-drawer--expand-on-hover":n.expandOnHover,"v-navigation-drawer--floating":n.floating,"v-navigation-drawer--is-hovering":z.value,"v-navigation-drawer--rail":n.rail,"v-navigation-drawer--temporary":ie.value,"v-navigation-drawer--persistent":re.value,"v-navigation-drawer--active":L.value,"v-navigation-drawer--sticky":pe.value},T.value,I.value,C.value,D.value,A.value,O.value,n.class],style:[B.value,G.value,F.value,oe.value,n.style,["top","bottom"].includes(Z.value)?{height:"auto"}:{}]},U,_),{default:()=>[te&&createVNode("div",{key:"image",class:"v-navigation-drawer__img"},[E.image?createVNode(VDefaultsProvider,{key:"image-defaults",disabled:!n.image,defaults:{VImg:{alt:"",cover:!0,height:"inherit",src:n.image}}},E.image):createVNode(VImg,{key:"image-img",alt:"",cover:!0,height:"inherit",src:n.image},null)]),E.prepend&&createVNode("div",{class:"v-navigation-drawer__prepend"},[E.prepend?.()]),createVNode("div",{class:"v-navigation-drawer__content"},[E.default?.()]),E.append&&createVNode("div",{class:"v-navigation-drawer__append"},[E.append?.()])]}),createVNode(Transition,{name:"fade-transition"},{default:()=>[ie.value&&(ue.value||L.value)&&!!n.scrim&&createVNode("div",mergeProps({class:["v-navigation-drawer__scrim",ae.backgroundColorClasses.value],style:[se.value,ae.backgroundColorStyles.value],onClick:()=>{re.value||(L.value=!1)}},U),null)]})])}),{isStuck:ee}}}),VNoSsr=defineComponent({name:"VNoSsr",setup(n,r){let{slots:_}=r;const S=useHydration();return()=>S.value&&_.default?.()}}),makeVOtpInputProps=propsFactory({autofocus:Boolean,divider:String,focusAll:Boolean,label:{type:String,default:"$vuetify.input.otp"},length:{type:[Number,String],default:6},modelValue:{type:[Number,String],default:void 0},placeholder:String,type:{type:String,default:"number"},...makeDimensionProps(),...makeFocusProps(),...only(makeVFieldProps({variant:"outlined"}),["baseColor","bgColor","class","color","disabled","error","loading","rounded","style","theme","variant"])},"VOtpInput"),VOtpInput=genericComponent()({name:"VOtpInput",props:makeVOtpInputProps(),emits:{finish:n=>!0,"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{dimensionStyles:x}=useDimension(n),{isFocused:T,focus:C,blur:I}=useFocus(n),B=useProxiedModel(n,"modelValue","",re=>re==null?[]:String(re).split(""),re=>re.join("")),{t:A}=useLocale(),D=computed(()=>Number(n.length)),N=computed(()=>Array(D.value).fill(0)),O=ref$2(-1),M=ref$2(),L=ref$2([]),F=computed(()=>L.value[O.value]);function U(){if(Z(F.value.value)){F.value.value="";return}const re=B.value.slice(),ie=F.value.value;re[O.value]=ie;let pe=null;O.value>B.value.length?pe=B.value.length+1:O.value+1!==D.value&&(pe="next"),B.value=re,pe&&focusChild(M.value,pe)}function j(re){const ie=B.value.slice(),pe=O.value;let ue=null;["ArrowLeft","ArrowRight","Backspace","Delete"].includes(re.key)&&(re.preventDefault(),re.key==="ArrowLeft"?ue="prev":re.key==="ArrowRight"?ue="next":["Backspace","Delete"].includes(re.key)&&(ie[O.value]="",B.value=ie,O.value>0&&re.key==="Backspace"?ue="prev":requestAnimationFrame(()=>{L.value[pe]?.select()})),requestAnimationFrame(()=>{ue!=null&&focusChild(M.value,ue)}))}function z(re,ie){ie.preventDefault(),ie.stopPropagation();const pe=ie?.clipboardData?.getData("Text").slice(0,D.value)??"";Z(pe)||(B.value=pe.split(""),L.value?.[re].blur())}function H(){B.value=[]}function Q(re,ie){C(),O.value=ie}function J(){I(),O.value=-1}function Z(re){return n.type==="number"&&/[^0-9]/g.test(re)}return provideDefaults({VField:{color:computed(()=>n.color),bgColor:computed(()=>n.color),baseColor:computed(()=>n.baseColor),disabled:computed(()=>n.disabled),error:computed(()=>n.error),variant:computed(()=>n.variant)}},{scoped:!0}),watch(B,re=>{re.length===D.value&&S("finish",re.join(""))},{deep:!0}),watch(O,re=>{re<0||nextTick$2(()=>{L.value[re]?.select()})}),useRender(()=>{const[re,ie]=filterInputAttrs(_);return createVNode("div",mergeProps({class:["v-otp-input",{"v-otp-input--divided":!!n.divider},n.class],style:[n.style]},re),[createVNode("div",{ref:M,class:"v-otp-input__content",style:[x.value]},[N.value.map((pe,ue)=>createVNode(Fragment,null,[n.divider&&ue!==0&&createVNode("span",{class:"v-otp-input__divider"},[n.divider]),createVNode(VField,{focused:T.value&&n.focusAll||O.value===ue,key:ue},{...E,loader:void 0,default:()=>createVNode("input",{ref:W=>L.value[ue]=W,"aria-label":A(n.label,ue+1),autofocus:ue===0&&n.autofocus,autocomplete:"one-time-code",class:["v-otp-input__field"],disabled:n.disabled,inputmode:n.type==="number"?"numeric":"text",min:n.type==="number"?0:void 0,maxlength:"1",placeholder:n.placeholder,type:n.type==="number"?"text":n.type,value:B.value[ue],onInput:U,onFocus:W=>Q(W,ue),onBlur:J,onKeydown:j,onPaste:W=>z(ue,W)},null)})])),createVNode("input",mergeProps({class:"v-otp-input-input",type:"hidden"},ie,{value:B.value.join("")}),null),createVNode(VOverlay,{contained:!0,"content-class":"v-otp-input__loader","model-value":!!n.loading,persistent:!0},{default:()=>[E.loader?.()??createVNode(VProgressCircular,{color:typeof n.loading=="boolean"?void 0:n.loading,indeterminate:!0,size:"24",width:"2"},null)]}),E.default?.()])])}),{blur:()=>{L.value?.some(re=>re.blur())},focus:()=>{L.value?.[0].focus()},reset:H,isFocused:T}}});function floor(n){return Math.floor(Math.abs(n))*Math.sign(n)}const makeVParallaxProps=propsFactory({scale:{type:[Number,String],default:.5},...makeComponentProps()},"VParallax"),VParallax=genericComponent()({name:"VParallax",props:makeVParallaxProps(),setup(n,r){let{slots:_}=r;const{intersectionRef:S,isIntersecting:E}=useIntersectionObserver(),{resizeRef:x,contentRect:T}=useResizeObserver(),{height:C}=useDisplay(),I=ref$2();watchEffect(()=>{S.value=x.value=I.value?.$el});let B;watch(E,O=>{O?(B=getScrollParent(S.value),B=B===document.scrollingElement?document:B,B.addEventListener("scroll",N,{passive:!0}),N()):B.removeEventListener("scroll",N)}),onBeforeUnmount(()=>{B?.removeEventListener("scroll",N)}),watch(C,N),watch(()=>T.value?.height,N);const A=computed(()=>1-clamp(+n.scale));let D=-1;function N(){E.value&&(cancelAnimationFrame(D),D=requestAnimationFrame(()=>{const O=(I.value?.$el).querySelector(".v-img__img");if(!O)return;const M=B instanceof Document?document.documentElement.clientHeight:B.clientHeight,L=B instanceof Document?window.scrollY:B.scrollTop,F=S.value.getBoundingClientRect().top+L,U=T.value.height,j=F+(U-M)/2,z=floor((L-j)*A.value),H=Math.max(1,(A.value*(M-U)+U)/U);O.style.setProperty("transform",`translateY(${z}px) scale(${H})`)}))}return useRender(()=>createVNode(VImg,{class:["v-parallax",{"v-parallax--active":E.value},n.class],style:n.style,ref:I,cover:!0,onLoadstart:N,onLoad:N},_)),{}}}),makeVRadioProps=propsFactory({...makeVSelectionControlProps({falseIcon:"$radioOff",trueIcon:"$radioOn"})},"VRadio"),VRadio=genericComponent()({name:"VRadio",props:makeVRadioProps(),setup(n,r){let{slots:_}=r;return useRender(()=>{const S=VSelectionControl.filterProps(n);return createVNode(VSelectionControl,mergeProps(S,{class:["v-radio",n.class],style:n.style,type:"radio"}),_)}),{}}}),makeVRadioGroupProps=propsFactory({height:{type:[Number,String],default:"auto"},...makeVInputProps(),...omit(makeSelectionControlGroupProps(),["multiple"]),trueIcon:{type:IconValue,default:"$radioOn"},falseIcon:{type:IconValue,default:"$radioOff"},type:{type:String,default:"radio"}},"VRadioGroup"),VRadioGroup=genericComponent()({name:"VRadioGroup",inheritAttrs:!1,props:makeVRadioGroupProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const E=getUid(),x=computed(()=>n.id||`radio-group-${E}`),T=useProxiedModel(n,"modelValue");return useRender(()=>{const[C,I]=filterInputAttrs(_),B=VInput.filterProps(n),A=VSelectionControl.filterProps(n),D=S.label?S.label({label:n.label,props:{for:x.value}}):n.label;return createVNode(VInput,mergeProps({class:["v-radio-group",n.class],style:n.style},C,B,{modelValue:T.value,"onUpdate:modelValue":N=>T.value=N,id:x.value}),{...S,default:N=>{let{id:O,messagesId:M,isDisabled:L,isReadonly:F}=N;return createVNode(Fragment,null,[D&&createVNode(VLabel,{id:O.value},{default:()=>[D]}),createVNode(VSelectionControlGroup,mergeProps(A,{id:O.value,"aria-describedby":M.value,defaultsTarget:"VRadio",trueIcon:n.trueIcon,falseIcon:n.falseIcon,type:n.type,disabled:L.value,readonly:F.value,"aria-labelledby":D?O.value:void 0,multiple:!1},I,{modelValue:T.value,"onUpdate:modelValue":U=>T.value=U}),S)])}})}),{}}}),makeVRangeSliderProps=propsFactory({...makeFocusProps(),...makeVInputProps(),...makeSliderProps(),strict:Boolean,modelValue:{type:Array,default:()=>[0,0]}},"VRangeSlider"),VRangeSlider=genericComponent()({name:"VRangeSlider",props:makeVRangeSliderProps(),emits:{"update:focused":n=>!0,"update:modelValue":n=>!0,end:n=>!0,start:n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=ref$2(),x=ref$2(),T=ref$2(),{rtlClasses:C}=useRtl();function I(pe){if(!E.value||!x.value)return;const ue=getOffset(pe,E.value.$el,n.direction),W=getOffset(pe,x.value.$el,n.direction),Y=Math.abs(ue),q=Math.abs(W);return Ype?.length?pe.map(ue=>B.roundValue(ue)):[0,0]),{activeThumbRef:D,hasLabels:N,max:O,min:M,mousePressed:L,onSliderMousedown:F,onSliderTouchstart:U,position:j,trackContainerRef:z,readonly:H}=useSlider({props:n,steps:B,onSliderStart:()=>{S("start",A.value)},onSliderEnd:pe=>{let{value:ue}=pe;const W=D.value===E.value?.$el?[ue,A.value[1]]:[A.value[0],ue];!n.strict&&W[0]{let{value:ue}=pe;const[W,Y]=A.value;!n.strict&&W===Y&&W!==M.value&&(D.value=ue>W?x.value?.$el:E.value?.$el,D.value?.focus()),D.value===E.value?.$el?A.value=[Math.min(ue,Y),Y]:A.value=[W,Math.max(W,ue)]},getActiveThumb:I}),{isFocused:Q,focus:J,blur:Z}=useFocus(n),re=computed(()=>j(A.value[0])),ie=computed(()=>j(A.value[1]));return useRender(()=>{const pe=VInput.filterProps(n),ue=!!(n.label||_.label||_.prepend);return createVNode(VInput,mergeProps({class:["v-slider","v-range-slider",{"v-slider--has-labels":!!_["tick-label"]||N.value,"v-slider--focused":Q.value,"v-slider--pressed":L.value,"v-slider--disabled":n.disabled},C.value,n.class],style:n.style,ref:T},pe,{focused:Q.value}),{..._,prepend:ue?W=>createVNode(Fragment,null,[_.label?.(W)??(n.label?createVNode(VLabel,{class:"v-slider__label",text:n.label},null):void 0),_.prepend?.(W)]):void 0,default:W=>{let{id:Y,messagesId:q}=W;return createVNode("div",{class:"v-slider__container",onMousedown:H.value?void 0:F,onTouchstartPassive:H.value?void 0:U},[createVNode("input",{id:`${Y.value}_start`,name:n.name||Y.value,disabled:!!n.disabled,readonly:!!n.readonly,tabindex:"-1",value:A.value[0]},null),createVNode("input",{id:`${Y.value}_stop`,name:n.name||Y.value,disabled:!!n.disabled,readonly:!!n.readonly,tabindex:"-1",value:A.value[1]},null),createVNode(VSliderTrack,{ref:z,start:re.value,stop:ie.value},{"tick-label":_["tick-label"]}),createVNode(VSliderThumb,{ref:E,"aria-describedby":q.value,focused:Q&&D.value===E.value?.$el,modelValue:A.value[0],"onUpdate:modelValue":G=>A.value=[G,A.value[1]],onFocus:G=>{J(),D.value=E.value?.$el,A.value[0]===A.value[1]&&A.value[1]===M.value&&G.relatedTarget!==x.value?.$el&&(E.value?.$el.blur(),x.value?.$el.focus())},onBlur:()=>{Z(),D.value=void 0},min:M.value,max:A.value[1],position:re.value,ripple:n.ripple},{"thumb-label":_["thumb-label"]}),createVNode(VSliderThumb,{ref:x,"aria-describedby":q.value,focused:Q&&D.value===x.value?.$el,modelValue:A.value[1],"onUpdate:modelValue":G=>A.value=[A.value[0],G],onFocus:G=>{J(),D.value=x.value?.$el,A.value[0]===A.value[1]&&A.value[0]===O.value&&G.relatedTarget!==E.value?.$el&&(x.value?.$el.blur(),E.value?.$el.focus())},onBlur:()=>{Z(),D.value=void 0},min:A.value[0],max:O.value,position:ie.value,ripple:n.ripple},{"thumb-label":_["thumb-label"]})])}})}),{}}}),makeVRatingProps=propsFactory({name:String,itemAriaLabel:{type:String,default:"$vuetify.rating.ariaLabel.item"},activeColor:String,color:String,clearable:Boolean,disabled:Boolean,emptyIcon:{type:IconValue,default:"$ratingEmpty"},fullIcon:{type:IconValue,default:"$ratingFull"},halfIncrements:Boolean,hover:Boolean,length:{type:[Number,String],default:5},readonly:Boolean,modelValue:{type:[Number,String],default:0},itemLabels:Array,itemLabelPosition:{type:String,default:"top",validator:n=>["top","bottom"].includes(n)},ripple:Boolean,...makeComponentProps(),...makeDensityProps(),...makeSizeProps(),...makeTagProps(),...makeThemeProps()},"VRating"),VRating=genericComponent()({name:"VRating",props:makeVRatingProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{t:S}=useLocale(),{themeClasses:E}=provideTheme(n),x=useProxiedModel(n,"modelValue"),T=computed(()=>clamp(parseFloat(x.value),0,+n.length)),C=computed(()=>createRange(Number(n.length),1)),I=computed(()=>C.value.flatMap(L=>n.halfIncrements?[L-.5,L]:[L])),B=shallowRef(-1),A=computed(()=>I.value.map(L=>{const F=n.hover&&B.value>-1,U=T.value>=L,j=B.value>=L,H=(F?j:U)?n.fullIcon:n.emptyIcon,Q=n.activeColor??n.color,J=U||j?Q:n.color;return{isFilled:U,isHovered:j,icon:H,color:J}})),D=computed(()=>[0,...I.value].map(L=>{function F(){B.value=L}function U(){B.value=-1}function j(){n.disabled||n.readonly||(x.value=T.value===L&&n.clearable?0:L)}return{onMouseenter:n.hover?F:void 0,onMouseleave:n.hover?U:void 0,onClick:j}})),N=computed(()=>n.name??`v-rating-${getUid()}`);function O(L){let{value:F,index:U,showStar:j=!0}=L;const{onMouseenter:z,onMouseleave:H,onClick:Q}=D.value[U+1],J=`${N.value}-${String(F).replace(".","-")}`,Z={color:A.value[U]?.color,density:n.density,disabled:n.disabled,icon:A.value[U]?.icon,ripple:n.ripple,size:n.size,variant:"plain"};return createVNode(Fragment,null,[createVNode("label",{for:J,class:{"v-rating__item--half":n.halfIncrements&&F%1>0,"v-rating__item--full":n.halfIncrements&&F%1===0},onMouseenter:z,onMouseleave:H,onClick:Q},[createVNode("span",{class:"v-rating__hidden"},[S(n.itemAriaLabel,F,n.length)]),j?_.item?_.item({...A.value[U],props:Z,value:F,index:U,rating:T.value}):createVNode(VBtn,mergeProps({"aria-label":S(n.itemAriaLabel,F,n.length)},Z),null):void 0]),createVNode("input",{class:"v-rating__hidden",name:N.value,id:J,type:"radio",value:F,checked:T.value===F,tabindex:-1,readonly:n.readonly,disabled:n.disabled},null)])}function M(L){return _["item-label"]?_["item-label"](L):L.label?createVNode("span",null,[L.label]):createVNode("span",null,[createTextVNode(" ")])}return useRender(()=>{const L=!!n.itemLabels?.length||_["item-label"];return createVNode(n.tag,{class:["v-rating",{"v-rating--hover":n.hover,"v-rating--readonly":n.readonly},E.value,n.class],style:n.style},{default:()=>[createVNode(O,{value:0,index:-1,showStar:!1},null),C.value.map((F,U)=>createVNode("div",{class:"v-rating__wrapper"},[L&&n.itemLabelPosition==="top"?M({value:F,index:U,label:n.itemLabels?.[U]}):void 0,createVNode("div",{class:"v-rating__item"},[n.halfIncrements?createVNode(Fragment,null,[createVNode(O,{value:F-.5,index:U*2},null),createVNode(O,{value:F,index:U*2+1},null)]):createVNode(O,{value:F,index:U},null)]),L&&n.itemLabelPosition==="bottom"?M({value:F,index:U,label:n.itemLabels?.[U]}):void 0]))]})}),{}}}),rootTypes={actions:"button@2",article:"heading, paragraph",avatar:"avatar",button:"button",card:"image, heading","card-avatar":"image, list-item-avatar",chip:"chip","date-picker":"list-item, heading, divider, date-picker-options, date-picker-days, actions","date-picker-options":"text, avatar@2","date-picker-days":"avatar@28",divider:"divider",heading:"heading",image:"image","list-item":"text","list-item-avatar":"avatar, text","list-item-two-line":"sentences","list-item-avatar-two-line":"avatar, sentences","list-item-three-line":"paragraph","list-item-avatar-three-line":"avatar, paragraph",ossein:"ossein",paragraph:"text@3",sentences:"text@2",subtitle:"text",table:"table-heading, table-thead, table-tbody, table-tfoot","table-heading":"chip, text","table-thead":"heading@6","table-tbody":"table-row-divider@6","table-row-divider":"table-row, divider","table-row":"text@6","table-tfoot":"text@2, avatar@2",text:"text"};function genBone(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return createVNode("div",{class:["v-skeleton-loader__bone",`v-skeleton-loader__${n}`]},[r])}function genBones(n){const[r,_]=n.split("@");return Array.from({length:_}).map(()=>genStructure(r))}function genStructure(n){let r=[];if(!n)return r;const _=rootTypes[n];if(n!==_){if(n.includes(","))return mapBones(n);if(n.includes("@"))return genBones(n);_.includes(",")?r=mapBones(_):_.includes("@")?r=genBones(_):_&&r.push(genStructure(_))}return[genBone(n,r)]}function mapBones(n){return n.replace(/\s/g,"").split(",").map(genStructure)}const makeVSkeletonLoaderProps=propsFactory({boilerplate:Boolean,color:String,loading:Boolean,loadingText:{type:String,default:"$vuetify.loading"},type:{type:[String,Array],default:"ossein"},...makeDimensionProps(),...makeElevationProps(),...makeThemeProps()},"VSkeletonLoader"),VSkeletonLoader=genericComponent()({name:"VSkeletonLoader",props:makeVSkeletonLoaderProps(),setup(n,r){let{slots:_}=r;const{backgroundColorClasses:S,backgroundColorStyles:E}=useBackgroundColor(toRef(n,"color")),{dimensionStyles:x}=useDimension(n),{elevationClasses:T}=useElevation(n),{themeClasses:C}=provideTheme(n),{t:I}=useLocale(),B=computed(()=>genStructure(wrapInArray(n.type).join(",")));return useRender(()=>{const A=!_.default||n.loading,D=n.boilerplate||!A?{}:{ariaLive:"polite",ariaLabel:I(n.loadingText),role:"alert"};return createVNode("div",mergeProps({class:["v-skeleton-loader",{"v-skeleton-loader--boilerplate":n.boilerplate},C.value,S.value,T.value],style:[E.value,A?x.value:{}]},D),[A?B.value:_.default?.()])}),{}}}),VSlideGroupItem=genericComponent()({name:"VSlideGroupItem",props:makeGroupItemProps(),emits:{"group:selected":n=>!0},setup(n,r){let{slots:_}=r;const S=useGroupItem(n,VSlideGroupSymbol);return()=>_.default?.({isSelected:S.isSelected.value,select:S.select,toggle:S.toggle,selectedClass:S.selectedClass.value})}});function useCountdown(n){const r=shallowRef(n());let _=-1;function S(){clearInterval(_)}function E(){S(),nextTick$2(()=>r.value=n())}function x(T){const C=T?getComputedStyle(T):{transitionDuration:.2},I=parseFloat(C.transitionDuration)*1e3||200;if(S(),r.value<=0)return;const B=performance.now();_=window.setInterval(()=>{const A=performance.now()-B+I;r.value=Math.max(n()-A,0),r.value<=0&&S()},I)}return onScopeDispose(S),{clear:S,time:r,start:x,reset:E}}const makeVSnackbarProps=propsFactory({multiLine:Boolean,text:String,timer:[Boolean,String],timeout:{type:[Number,String],default:5e3},vertical:Boolean,...makeLocationProps({location:"bottom"}),...makePositionProps(),...makeRoundedProps(),...makeVariantProps(),...makeThemeProps(),...omit(makeVOverlayProps({transition:"v-snackbar-transition"}),["persistent","noClickAnimation","scrim","scrollStrategy"])},"VSnackbar"),VSnackbar=genericComponent()({name:"VSnackbar",props:makeVSnackbarProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),{positionClasses:E}=usePosition(n),{scopeId:x}=useScopeId(),{themeClasses:T}=provideTheme(n),{colorClasses:C,colorStyles:I,variantClasses:B}=useVariant(n),{roundedClasses:A}=useRounded(n),D=useCountdown(()=>Number(n.timeout)),N=ref$2(),O=ref$2(),M=shallowRef(!1),L=shallowRef(0),F=ref$2(),U=inject$1(VuetifyLayoutKey,void 0);useToggleScope(()=>!!U,()=>{const ue=useLayout();watchEffect(()=>{F.value=ue.mainStyles.value})}),watch(S,z),watch(()=>n.timeout,z),onMounted(()=>{S.value&&z()});let j=-1;function z(){D.reset(),window.clearTimeout(j);const ue=Number(n.timeout);if(!S.value||ue===-1)return;const W=refElement(O.value);D.start(W),j=window.setTimeout(()=>{S.value=!1},ue)}function H(){D.reset(),window.clearTimeout(j)}function Q(){M.value=!0,H()}function J(){M.value=!1,z()}function Z(ue){L.value=ue.touches[0].clientY}function re(ue){Math.abs(L.value-ue.changedTouches[0].clientY)>50&&(S.value=!1)}function ie(){M.value&&J()}const pe=computed(()=>n.location.split(" ").reduce((ue,W)=>(ue[`v-snackbar--${W}`]=!0,ue),{}));return useRender(()=>{const ue=VOverlay.filterProps(n),W=!!(_.default||_.text||n.text);return createVNode(VOverlay,mergeProps({ref:N,class:["v-snackbar",{"v-snackbar--active":S.value,"v-snackbar--multi-line":n.multiLine&&!n.vertical,"v-snackbar--timer":!!n.timer,"v-snackbar--vertical":n.vertical},pe.value,E.value,n.class],style:[F.value,n.style]},ue,{modelValue:S.value,"onUpdate:modelValue":Y=>S.value=Y,contentProps:mergeProps({class:["v-snackbar__wrapper",T.value,C.value,A.value,B.value],style:[I.value],onPointerenter:Q,onPointerleave:J},ue.contentProps),persistent:!0,noClickAnimation:!0,scrim:!1,scrollStrategy:"none",_disableGlobalStack:!0,onTouchstartPassive:Z,onTouchend:re,onAfterLeave:ie},x),{default:()=>[genOverlays(!1,"v-snackbar"),n.timer&&!M.value&&createVNode("div",{key:"timer",class:"v-snackbar__timer"},[createVNode(VProgressLinear,{ref:O,color:typeof n.timer=="string"?n.timer:"info",max:n.timeout,"model-value":D.time.value},null)]),W&&createVNode("div",{key:"content",class:"v-snackbar__content",role:"status","aria-live":"polite"},[_.text?.()??n.text,_.default?.()]),_.actions&&createVNode(VDefaultsProvider,{defaults:{VBtn:{variant:"text",ripple:!1,slim:!0}}},{default:()=>[createVNode("div",{class:"v-snackbar__actions"},[_.actions({isActive:S})])]})],activator:_.activator})}),forwardRefs({},N)}}),makeLineProps=propsFactory({autoDraw:Boolean,autoDrawDuration:[Number,String],autoDrawEasing:{type:String,default:"ease"},color:String,gradient:{type:Array,default:()=>[]},gradientDirection:{type:String,validator:n=>["top","bottom","left","right"].includes(n),default:"top"},height:{type:[String,Number],default:75},labels:{type:Array,default:()=>[]},labelSize:{type:[Number,String],default:7},lineWidth:{type:[String,Number],default:4},id:String,itemValue:{type:String,default:"value"},modelValue:{type:Array,default:()=>[]},min:[String,Number],max:[String,Number],padding:{type:[String,Number],default:8},showLabels:Boolean,smooth:Boolean,width:{type:[Number,String],default:300}},"Line"),makeVBarlineProps=propsFactory({autoLineWidth:Boolean,...makeLineProps()},"VBarline"),VBarline=genericComponent()({name:"VBarline",props:makeVBarlineProps(),setup(n,r){let{slots:_}=r;const S=getUid(),E=computed(()=>n.id||`barline-${S}`),x=computed(()=>Number(n.autoDrawDuration)||500),T=computed(()=>!!(n.showLabels||n.labels.length>0||_?.label)),C=computed(()=>parseFloat(n.lineWidth)||4),I=computed(()=>Math.max(n.modelValue.length*C.value,Number(n.width))),B=computed(()=>({minX:0,maxX:I.value,minY:0,maxY:parseInt(n.height,10)})),A=computed(()=>n.modelValue.map(L=>getPropertyFromItem(L,n.itemValue,L)));function D(L,F){const{minX:U,maxX:j,minY:z,maxY:H}=F,Q=L.length;let J=n.max!=null?Number(n.max):Math.max(...L),Z=n.min!=null?Number(n.min):Math.min(...L);Z>0&&n.min==null&&(Z=0),J<0&&n.max==null&&(J=0);const re=j/Q,ie=(H-z)/(J-Z||1),pe=H-Math.abs(Z*ie);return L.map((ue,W)=>{const Y=Math.abs(ie*ue);return{x:U+W*re,y:pe-Y+ +(ue<0)*Y,height:Y,value:ue}})}const N=computed(()=>{const L=[],F=D(A.value,B.value),U=F.length;for(let j=0;L.lengthD(A.value,B.value)),M=computed(()=>(Math.abs(O.value[0].x-O.value[1].x)-C.value)/2);useRender(()=>{const L=n.gradient.slice().length?n.gradient.slice().reverse():[""];return createVNode("svg",{display:"block"},[createVNode("defs",null,[createVNode("linearGradient",{id:E.value,gradientUnits:"userSpaceOnUse",x1:n.gradientDirection==="left"?"100%":"0",y1:n.gradientDirection==="top"?"100%":"0",x2:n.gradientDirection==="right"?"100%":"0",y2:n.gradientDirection==="bottom"?"100%":"0"},[L.map((F,U)=>createVNode("stop",{offset:U/Math.max(L.length-1,1),"stop-color":F||"currentColor"},null))])]),createVNode("clipPath",{id:`${E.value}-clip`},[O.value.map(F=>createVNode("rect",{x:F.x+M.value,y:F.y,width:C.value,height:F.height,rx:typeof n.smooth=="number"?n.smooth:n.smooth?2:0,ry:typeof n.smooth=="number"?n.smooth:n.smooth?2:0},[n.autoDraw&&createVNode(Fragment,null,[createVNode("animate",{attributeName:"y",from:F.y+F.height,to:F.y,dur:`${x.value}ms`,fill:"freeze"},null),createVNode("animate",{attributeName:"height",from:"0",to:F.height,dur:`${x.value}ms`,fill:"freeze"},null)])]))]),T.value&&createVNode("g",{key:"labels",style:{textAnchor:"middle",dominantBaseline:"mathematical",fill:"currentColor"}},[N.value.map((F,U)=>createVNode("text",{x:F.x+M.value+C.value/2,y:parseInt(n.height,10)-2+(parseInt(n.labelSize,10)||7*.75),"font-size":Number(n.labelSize)||7},[_.label?.({index:U,value:F.value})??F.value]))]),createVNode("g",{"clip-path":`url(#${E.value}-clip)`,fill:`url(#${E.value})`},[createVNode("rect",{x:0,y:0,width:Math.max(n.modelValue.length*C.value,Number(n.width)),height:n.height},null)])])})}});function genPath(n,r){let _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,S=arguments.length>3&&arguments[3]!==void 0?arguments[3]:75;if(n.length===0)return"";const E=n.shift(),x=n[n.length-1];return(_?`M${E.x} ${S-E.x+2} L${E.x} ${E.y}`:`M${E.x} ${E.y}`)+n.map((T,C)=>{const I=n[C+1],B=n[C-1]||E,A=I&&checkCollinear(I,T,B);if(!I||A)return`L${T.x} ${T.y}`;const D=Math.min(getDistance(B,T),getDistance(I,T)),O=D/2n.id||`trendline-${S}`),x=computed(()=>Number(n.autoDrawDuration)||(n.fill?500:2e3)),T=ref$2(0),C=ref$2(null);function I(F,U){const{minX:j,maxX:z,minY:H,maxY:Q}=U,J=F.length,Z=n.max!=null?Number(n.max):Math.max(...F),re=n.min!=null?Number(n.min):Math.min(...F),ie=(z-j)/(J-1),pe=(Q-H)/(Z-re||1);return F.map((ue,W)=>({x:j+W*ie,y:Q-(ue-re)*pe,value:ue}))}const B=computed(()=>!!(n.showLabels||n.labels.length>0||_?.label)),A=computed(()=>parseFloat(n.lineWidth)||4),D=computed(()=>Number(n.width)),N=computed(()=>{const F=Number(n.padding);return{minX:F,maxX:D.value-F,minY:F,maxY:parseInt(n.height,10)-F}}),O=computed(()=>n.modelValue.map(F=>getPropertyFromItem(F,n.itemValue,F))),M=computed(()=>{const F=[],U=I(O.value,N.value),j=U.length;for(let z=0;F.lengthn.modelValue,async()=>{if(await nextTick$2(),!n.autoDraw||!C.value)return;const F=C.value,U=F.getTotalLength();n.fill?(F.style.transformOrigin="bottom center",F.style.transition="none",F.style.transform="scaleY(0)",F.getBoundingClientRect(),F.style.transition=`transform ${x.value}ms ${n.autoDrawEasing}`,F.style.transform="scaleY(1)"):(F.style.strokeDasharray=`${U}`,F.style.strokeDashoffset=`${U}`,F.getBoundingClientRect(),F.style.transition=`stroke-dashoffset ${x.value}ms ${n.autoDrawEasing}`,F.style.strokeDashoffset="0"),T.value=U},{immediate:!0});function L(F){return genPath(I(O.value,N.value),n.smooth?8:Number(n.smooth),F,parseInt(n.height,10))}useRender(()=>{const F=n.gradient.slice().length?n.gradient.slice().reverse():[""];return createVNode("svg",{display:"block","stroke-width":parseFloat(n.lineWidth)??4},[createVNode("defs",null,[createVNode("linearGradient",{id:E.value,gradientUnits:"userSpaceOnUse",x1:n.gradientDirection==="left"?"100%":"0",y1:n.gradientDirection==="top"?"100%":"0",x2:n.gradientDirection==="right"?"100%":"0",y2:n.gradientDirection==="bottom"?"100%":"0"},[F.map((U,j)=>createVNode("stop",{offset:j/Math.max(F.length-1,1),"stop-color":U||"currentColor"},null))])]),B.value&&createVNode("g",{key:"labels",style:{textAnchor:"middle",dominantBaseline:"mathematical",fill:"currentColor"}},[M.value.map((U,j)=>createVNode("text",{x:U.x+A.value/2+A.value/2,y:parseInt(n.height,10)-4+(parseInt(n.labelSize,10)||7*.75),"font-size":Number(n.labelSize)||7},[_.label?.({index:j,value:U.value})??U.value]))]),createVNode("path",{ref:C,d:L(n.fill),fill:n.fill?`url(#${E.value})`:"none",stroke:n.fill?"none":`url(#${E.value})`},null),n.fill&&createVNode("path",{d:L(!1),fill:"none",stroke:n.color??n.gradient?.[0]},null)])})}}),makeVSparklineProps=propsFactory({type:{type:String,default:"trend"},...makeVBarlineProps(),...makeVTrendlineProps()},"VSparkline"),VSparkline=genericComponent()({name:"VSparkline",props:makeVSparklineProps(),setup(n,r){let{slots:_}=r;const{textColorClasses:S,textColorStyles:E}=useTextColor(toRef(n,"color")),x=computed(()=>!!(n.showLabels||n.labels.length>0||_?.label)),T=computed(()=>{let C=parseInt(n.height,10);return x.value&&(C+=parseInt(n.labelSize,10)*1.5),C});useRender(()=>{const C=n.type==="trend"?VTrendline:VBarline,I=n.type==="trend"?VTrendline.filterProps(n):VBarline.filterProps(n);return createVNode(C,mergeProps({key:n.type,class:S.value,style:E.value,viewBox:`0 0 ${n.width} ${parseInt(T.value,10)}`},I),_)})}}),makeVSpeedDialProps=propsFactory({...makeComponentProps(),...makeVMenuProps({offset:8,minWidth:0,openDelay:0,closeDelay:100,location:"top center",transition:"scale-transition"})},"VSpeedDial"),VSpeedDial=genericComponent()({name:"VSpeedDial",props:makeVSpeedDialProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),E=ref$2(),x=computed(()=>{const[C,I="center"]=n.location?.split(" ")??[];return`${C} ${I}`}),T=computed(()=>({[`v-speed-dial__content--${x.value.replace(" ","-")}`]:!0}));return useRender(()=>{const C=VMenu.filterProps(n);return createVNode(VMenu,mergeProps(C,{modelValue:S.value,"onUpdate:modelValue":I=>S.value=I,class:n.class,style:n.style,contentClass:["v-speed-dial__content",T.value,n.contentClass],location:x.value,ref:E,transition:"fade-transition"}),{..._,default:I=>createVNode(VDefaultsProvider,{defaults:{VBtn:{size:"small"}}},{default:()=>[createVNode(MaybeTransition,{appear:!0,group:!0,transition:n.transition},{default:()=>[_.default?.(I)]})]})})}),{}}}),VStepperSymbol=Symbol.for("vuetify:v-stepper"),makeVStepperActionsProps=propsFactory({color:String,disabled:{type:[Boolean,String],default:!1},prevText:{type:String,default:"$vuetify.stepper.prev"},nextText:{type:String,default:"$vuetify.stepper.next"}},"VStepperActions"),VStepperActions=genericComponent()({name:"VStepperActions",props:makeVStepperActionsProps(),emits:{"click:prev":()=>!0,"click:next":()=>!0},setup(n,r){let{emit:_,slots:S}=r;const{t:E}=useLocale();function x(){_("click:prev")}function T(){_("click:next")}return useRender(()=>{const C={onClick:x},I={onClick:T};return createVNode("div",{class:"v-stepper-actions"},[createVNode(VDefaultsProvider,{defaults:{VBtn:{disabled:["prev",!0].includes(n.disabled),text:E(n.prevText),variant:"text"}}},{default:()=>[S.prev?.({props:C})??createVNode(VBtn,C,null)]}),createVNode(VDefaultsProvider,{defaults:{VBtn:{color:n.color,disabled:["next",!0].includes(n.disabled),text:E(n.nextText),variant:"tonal"}}},{default:()=>[S.next?.({props:I})??createVNode(VBtn,I,null)]})])}),{}}}),VStepperHeader=createSimpleFunctional("v-stepper-header"),makeStepperItemProps=propsFactory({color:String,title:String,subtitle:String,complete:Boolean,completeIcon:{type:String,default:"$complete"},editable:Boolean,editIcon:{type:String,default:"$edit"},error:Boolean,errorIcon:{type:String,default:"$error"},icon:String,ripple:{type:[Boolean,Object],default:!0},rules:{type:Array,default:()=>[]}},"StepperItem"),makeVStepperItemProps=propsFactory({...makeStepperItemProps(),...makeGroupItemProps()},"VStepperItem"),VStepperItem=genericComponent()({name:"VStepperItem",directives:{Ripple},props:makeVStepperItemProps(),emits:{"group:selected":n=>!0},setup(n,r){let{slots:_}=r;const S=useGroupItem(n,VStepperSymbol,!0),E=computed(()=>S?.value.value??n.value),x=computed(()=>n.rules.every(N=>N()===!0)),T=computed(()=>!n.disabled&&n.editable),C=computed(()=>!n.disabled&&n.editable),I=computed(()=>n.error||!x.value),B=computed(()=>n.complete||n.rules.length>0&&x.value),A=computed(()=>I.value?n.errorIcon:B.value?n.completeIcon:S.isSelected.value&&n.editable?n.editIcon:n.icon),D=computed(()=>({canEdit:C.value,hasError:I.value,hasCompleted:B.value,title:n.title,subtitle:n.subtitle,step:E.value,value:n.value}));return useRender(()=>{const N=(!S||S.isSelected.value||B.value||C.value)&&!I.value&&!n.disabled,O=!!(n.title!=null||_.title),M=!!(n.subtitle!=null||_.subtitle);function L(){S?.toggle()}return withDirectives(createVNode("button",{class:["v-stepper-item",{"v-stepper-item--complete":B.value,"v-stepper-item--disabled":n.disabled,"v-stepper-item--error":I.value},S?.selectedClass.value],disabled:!n.editable,onClick:L},[T.value&&genOverlays(!0,"v-stepper-item"),createVNode(VAvatar,{key:"stepper-avatar",class:"v-stepper-item__avatar",color:N?n.color:void 0,size:24},{default:()=>[_.icon?.(D.value)??(A.value?createVNode(VIcon,{icon:A.value},null):E.value)]}),createVNode("div",{class:"v-stepper-item__content"},[O&&createVNode("div",{key:"title",class:"v-stepper-item__title"},[_.title?.(D.value)??n.title]),M&&createVNode("div",{key:"subtitle",class:"v-stepper-item__subtitle"},[_.subtitle?.(D.value)??n.subtitle]),_.default?.(D.value)])]),[[resolveDirective("ripple"),n.ripple&&n.editable,null]])}),{}}}),makeVStepperWindowProps=propsFactory({...omit(makeVWindowProps(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VStepperWindow"),VStepperWindow=genericComponent()({name:"VStepperWindow",props:makeVStepperWindowProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=inject$1(VStepperSymbol,null),E=useProxiedModel(n,"modelValue"),x=computed({get(){return E.value!=null||!S?E.value:S.items.value.find(T=>S.selected.value.includes(T.id))?.value},set(T){E.value=T}});return useRender(()=>{const T=VWindow.filterProps(n);return createVNode(VWindow,mergeProps({_as:"VStepperWindow"},T,{modelValue:x.value,"onUpdate:modelValue":C=>x.value=C,class:["v-stepper-window",n.class],style:n.style,mandatory:!1,touch:!1}),_)}),{}}}),makeVStepperWindowItemProps=propsFactory({...makeVWindowItemProps()},"VStepperWindowItem"),VStepperWindowItem=genericComponent()({name:"VStepperWindowItem",props:makeVStepperWindowItemProps(),setup(n,r){let{slots:_}=r;return useRender(()=>{const S=VWindowItem.filterProps(n);return createVNode(VWindowItem,mergeProps({_as:"VStepperWindowItem"},S,{class:["v-stepper-window-item",n.class],style:n.style}),_)}),{}}}),makeStepperProps=propsFactory({altLabels:Boolean,bgColor:String,completeIcon:String,editIcon:String,editable:Boolean,errorIcon:String,hideActions:Boolean,items:{type:Array,default:()=>[]},itemTitle:{type:String,default:"title"},itemValue:{type:String,default:"value"},nonLinear:Boolean,flat:Boolean,...makeDisplayProps()},"Stepper"),makeVStepperProps=propsFactory({...makeStepperProps(),...makeGroupProps({mandatory:"force",selectedClass:"v-stepper-item--selected"}),...makeVSheetProps(),...only(makeVStepperActionsProps(),["prevText","nextText"])},"VStepper"),VStepper=genericComponent()({name:"VStepper",props:makeVStepperProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{items:S,next:E,prev:x,selected:T}=useGroup(n,VStepperSymbol),{displayClasses:C,mobile:I}=useDisplay(n),{completeIcon:B,editIcon:A,errorIcon:D,color:N,editable:O,prevText:M,nextText:L}=toRefs(n),F=computed(()=>n.items.map((z,H)=>{const Q=getPropertyFromItem(z,n.itemTitle,z),J=getPropertyFromItem(z,n.itemValue,H+1);return{title:Q,value:J,raw:z}})),U=computed(()=>S.value.findIndex(z=>T.value.includes(z.id))),j=computed(()=>n.disabled?n.disabled:U.value===0?"prev":U.value===S.value.length-1?"next":!1);return provideDefaults({VStepperItem:{editable:O,errorIcon:D,completeIcon:B,editIcon:A,prevText:M,nextText:L},VStepperActions:{color:N,disabled:j,prevText:M,nextText:L}}),useRender(()=>{const z=VSheet.filterProps(n),H=!!(_.header||n.items.length),Q=n.items.length>0,J=!n.hideActions&&!!(Q||_.actions);return createVNode(VSheet,mergeProps(z,{color:n.bgColor,class:["v-stepper",{"v-stepper--alt-labels":n.altLabels,"v-stepper--flat":n.flat,"v-stepper--non-linear":n.nonLinear,"v-stepper--mobile":I.value},C.value,n.class],style:n.style}),{default:()=>[H&&createVNode(VStepperHeader,{key:"stepper-header"},{default:()=>[F.value.map((Z,re)=>{let{raw:ie,...pe}=Z;return createVNode(Fragment,null,[!!re&&createVNode(VDivider,null,null),createVNode(VStepperItem,pe,{default:_[`header-item.${pe.value}`]??_.header,icon:_.icon,title:_.title,subtitle:_.subtitle})])})]}),Q&&createVNode(VStepperWindow,{key:"stepper-window"},{default:()=>[F.value.map(Z=>createVNode(VStepperWindowItem,{value:Z.value},{default:()=>_[`item.${Z.value}`]?.(Z)??_.item?.(Z)}))]}),_.default?.({prev:x,next:E}),J&&(_.actions?.({next:E,prev:x})??createVNode(VStepperActions,{key:"stepper-actions","onClick:prev":x,"onClick:next":E},_))]})}),{prev:x,next:E}}}),makeVSwitchProps=propsFactory({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...makeVInputProps(),...makeVSelectionControlProps()},"VSwitch"),VSwitch=genericComponent()({name:"VSwitch",inheritAttrs:!1,props:makeVSwitchProps(),emits:{"update:focused":n=>!0,"update:modelValue":n=>!0,"update:indeterminate":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const E=useProxiedModel(n,"indeterminate"),x=useProxiedModel(n,"modelValue"),{loaderClasses:T}=useLoader(n),{isFocused:C,focus:I,blur:B}=useFocus(n),A=ref$2(),D=IN_BROWSER&&window.matchMedia("(forced-colors: active)").matches,N=computed(()=>typeof n.loading=="string"&&n.loading!==""?n.loading:n.color),O=getUid(),M=computed(()=>n.id||`switch-${O}`);function L(){E.value&&(E.value=!1)}function F(U){U.stopPropagation(),U.preventDefault(),A.value?.input?.click()}return useRender(()=>{const[U,j]=filterInputAttrs(_),z=VInput.filterProps(n),H=VSelectionControl.filterProps(n);return createVNode(VInput,mergeProps({class:["v-switch",{"v-switch--flat":n.flat},{"v-switch--inset":n.inset},{"v-switch--indeterminate":E.value},T.value,n.class]},U,z,{modelValue:x.value,"onUpdate:modelValue":Q=>x.value=Q,id:M.value,focused:C.value,style:n.style}),{...S,default:Q=>{let{id:J,messagesId:Z,isDisabled:re,isReadonly:ie,isValid:pe}=Q;const ue={model:x,isValid:pe};return createVNode(VSelectionControl,mergeProps({ref:A},H,{modelValue:x.value,"onUpdate:modelValue":[W=>x.value=W,L],id:J.value,"aria-describedby":Z.value,type:"checkbox","aria-checked":E.value?"mixed":void 0,disabled:re.value,readonly:ie.value,onFocus:I,onBlur:B},j),{...S,default:W=>{let{backgroundColorClasses:Y,backgroundColorStyles:q}=W;return createVNode("div",{class:["v-switch__track",D?void 0:Y.value],style:q.value,onClick:F},[S["track-true"]&&createVNode("div",{key:"prepend",class:"v-switch__track-true"},[S["track-true"](ue)]),S["track-false"]&&createVNode("div",{key:"append",class:"v-switch__track-false"},[S["track-false"](ue)])])},input:W=>{let{inputNode:Y,icon:q,backgroundColorClasses:G,backgroundColorStyles:ne}=W;return createVNode(Fragment,null,[Y,createVNode("div",{class:["v-switch__thumb",{"v-switch__thumb--filled":q||n.loading},n.inset||D?void 0:G.value],style:n.inset?void 0:ne.value},[S.thumb?createVNode(VDefaultsProvider,{defaults:{VIcon:{icon:q,size:"x-small"}}},{default:()=>[S.thumb({...ue,icon:q})]}):createVNode(VScaleTransition,null,{default:()=>[n.loading?createVNode(LoaderSlot,{name:"v-switch",active:!0,color:pe.value===!1?void 0:N.value},{default:ee=>S.loader?S.loader(ee):createVNode(VProgressCircular,{active:ee.isActive,color:ee.color,indeterminate:!0,size:"16",width:"2"},null)}):q&&createVNode(VIcon,{key:String(q),icon:q,size:"x-small"},null)]})])])}})}})}),{}}}),makeVSystemBarProps=propsFactory({color:String,height:[Number,String],window:Boolean,...makeComponentProps(),...makeElevationProps(),...makeLayoutItemProps(),...makeRoundedProps(),...makeTagProps(),...makeThemeProps()},"VSystemBar"),VSystemBar=genericComponent()({name:"VSystemBar",props:makeVSystemBarProps(),setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n),{backgroundColorClasses:E,backgroundColorStyles:x}=useBackgroundColor(toRef(n,"color")),{elevationClasses:T}=useElevation(n),{roundedClasses:C}=useRounded(n),{ssrBootStyles:I}=useSsrBoot(),B=computed(()=>n.height??(n.window?32:24)),{layoutItemStyles:A}=useLayoutItem({id:n.name,order:computed(()=>parseInt(n.order,10)),position:shallowRef("top"),layoutSize:B,elementSize:B,active:computed(()=>!0),absolute:toRef(n,"absolute")});return useRender(()=>createVNode(n.tag,{class:["v-system-bar",{"v-system-bar--window":n.window},S.value,E.value,T.value,C.value,n.class],style:[x.value,A.value,I.value,n.style]},_)),{}}}),VTabsSymbol=Symbol.for("vuetify:v-tabs"),makeVTabProps=propsFactory({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...omit(makeVBtnProps({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),VTab=genericComponent()({name:"VTab",props:makeVTabProps(),setup(n,r){let{slots:_,attrs:S}=r;const{textColorClasses:E,textColorStyles:x}=useTextColor(n,"sliderColor"),T=ref$2(),C=ref$2(),I=computed(()=>n.direction==="horizontal"),B=computed(()=>T.value?.group?.isSelected.value??!1);function A(D){let{value:N}=D;if(N){const O=T.value?.$el.parentElement?.querySelector(".v-tab--selected .v-tab__slider"),M=C.value;if(!O||!M)return;const L=getComputedStyle(O).color,F=O.getBoundingClientRect(),U=M.getBoundingClientRect(),j=I.value?"x":"y",z=I.value?"X":"Y",H=I.value?"right":"bottom",Q=I.value?"width":"height",J=F[j],Z=U[j],re=J>Z?F[H]-U[H]:F[j]-U[j],ie=Math.sign(re)>0?I.value?"right":"bottom":Math.sign(re)<0?I.value?"left":"top":"center",ue=(Math.abs(re)+(Math.sign(re)<0?F[Q]:U[Q]))/Math.max(F[Q],U[Q])||0,W=F[Q]/U[Q]||0,Y=1.5;animate(M,{backgroundColor:[L,"currentcolor"],transform:[`translate${z}(${re}px) scale${z}(${W})`,`translate${z}(${re/Y}px) scale${z}(${(ue-1)/Y+1})`,"none"],transformOrigin:Array(3).fill(ie)},{duration:225,easing:standardEasing})}}return useRender(()=>{const D=VBtn.filterProps(n);return createVNode(VBtn,mergeProps({symbol:VTabsSymbol,ref:T,class:["v-tab",n.class],style:n.style,tabindex:B.value?0:-1,role:"tab","aria-selected":String(B.value),active:!1},D,S,{block:n.fixed,maxWidth:n.fixed?300:void 0,"onGroup:selected":A}),{..._,default:()=>createVNode(Fragment,null,[_.default?.()??n.text,!n.hideSlider&&createVNode("div",{ref:C,class:["v-tab__slider",E.value],style:x.value},null)])})}),forwardRefs({},T)}}),makeVTabsWindowProps=propsFactory({...omit(makeVWindowProps(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VTabsWindow"),VTabsWindow=genericComponent()({name:"VTabsWindow",props:makeVTabsWindowProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=inject$1(VTabsSymbol,null),E=useProxiedModel(n,"modelValue"),x=computed({get(){return E.value!=null||!S?E.value:S.items.value.find(T=>S.selected.value.includes(T.id))?.value},set(T){E.value=T}});return useRender(()=>{const T=VWindow.filterProps(n);return createVNode(VWindow,mergeProps({_as:"VTabsWindow"},T,{modelValue:x.value,"onUpdate:modelValue":C=>x.value=C,class:["v-tabs-window",n.class],style:n.style,mandatory:!1,touch:!1}),_)}),{}}}),makeVTabsWindowItemProps=propsFactory({...makeVWindowItemProps()},"VTabsWindowItem"),VTabsWindowItem=genericComponent()({name:"VTabsWindowItem",props:makeVTabsWindowItemProps(),setup(n,r){let{slots:_}=r;return useRender(()=>{const S=VWindowItem.filterProps(n);return createVNode(VWindowItem,mergeProps({_as:"VTabsWindowItem"},S,{class:["v-tabs-window-item",n.class],style:n.style}),_)}),{}}});function parseItems(n){return n?n.map(r=>isObject$1(r)?r:{text:r,value:r}):[]}const makeVTabsProps=propsFactory({alignTabs:{type:String,default:"start"},color:String,fixedTabs:Boolean,items:{type:Array,default:()=>[]},stacked:Boolean,bgColor:String,grow:Boolean,height:{type:[Number,String],default:void 0},hideSlider:Boolean,sliderColor:String,...makeVSlideGroupProps({mandatory:"force",selectedClass:"v-tab-item--selected"}),...makeDensityProps(),...makeTagProps()},"VTabs"),VTabs=genericComponent()({name:"VTabs",props:makeVTabsProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const E=useProxiedModel(n,"modelValue"),x=computed(()=>parseItems(n.items)),{densityClasses:T}=useDensity(n),{backgroundColorClasses:C,backgroundColorStyles:I}=useBackgroundColor(toRef(n,"bgColor")),{scopeId:B}=useScopeId();return provideDefaults({VTab:{color:toRef(n,"color"),direction:toRef(n,"direction"),stacked:toRef(n,"stacked"),fixed:toRef(n,"fixedTabs"),sliderColor:toRef(n,"sliderColor"),hideSlider:toRef(n,"hideSlider")}}),useRender(()=>{const A=VSlideGroup.filterProps(n),D=!!(S.window||n.items.length>0);return createVNode(Fragment,null,[createVNode(VSlideGroup,mergeProps(A,{modelValue:E.value,"onUpdate:modelValue":N=>E.value=N,class:["v-tabs",`v-tabs--${n.direction}`,`v-tabs--align-tabs-${n.alignTabs}`,{"v-tabs--fixed-tabs":n.fixedTabs,"v-tabs--grow":n.grow,"v-tabs--stacked":n.stacked},T.value,C.value,n.class],style:[{"--v-tabs-height":convertToUnit(n.height)},I.value,n.style],role:"tablist",symbol:VTabsSymbol},B,_),{default:()=>[S.default?.()??x.value.map(N=>S.tab?.({item:N})??createVNode(VTab,mergeProps(N,{key:N.text,value:N.value}),{default:S[`tab.${N.value}`]?()=>S[`tab.${N.value}`]?.({item:N}):void 0}))]}),D&&createVNode(VTabsWindow,mergeProps({modelValue:E.value,"onUpdate:modelValue":N=>E.value=N,key:"tabs-window"},B),{default:()=>[x.value.map(N=>S.item?.({item:N})??createVNode(VTabsWindowItem,{value:N.value},{default:()=>S[`item.${N.value}`]?.({item:N})})),S.window?.()]})])}),{}}}),makeVTextareaProps=propsFactory({autoGrow:Boolean,autofocus:Boolean,counter:[Boolean,Number,String],counterValue:Function,prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,noResize:Boolean,rows:{type:[Number,String],default:5,validator:n=>!isNaN(parseFloat(n))},maxRows:{type:[Number,String],validator:n=>!isNaN(parseFloat(n))},suffix:String,modelModifiers:Object,...makeVInputProps(),...makeVFieldProps()},"VTextarea"),VTextarea=genericComponent()({name:"VTextarea",directives:{Intersect},inheritAttrs:!1,props:makeVTextareaProps(),emits:{"click:control":n=>!0,"mousedown:control":n=>!0,"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const x=useProxiedModel(n,"modelValue"),{isFocused:T,focus:C,blur:I}=useFocus(n),B=computed(()=>typeof n.counterValue=="function"?n.counterValue(x.value):(x.value||"").toString().length),A=computed(()=>{if(_.maxlength)return _.maxlength;if(!(!n.counter||typeof n.counter!="number"&&typeof n.counter!="string"))return n.counter});function D(ue,W){!n.autofocus||!ue||W[0].target?.focus?.()}const N=ref$2(),O=ref$2(),M=shallowRef(""),L=ref$2(),F=computed(()=>n.persistentPlaceholder||T.value||n.active);function U(){L.value!==document.activeElement&&L.value?.focus(),T.value||C()}function j(ue){U(),S("click:control",ue)}function z(ue){S("mousedown:control",ue)}function H(ue){ue.stopPropagation(),U(),nextTick$2(()=>{x.value="",callEvent(n["onClick:clear"],ue)})}function Q(ue){const W=ue.target;if(x.value=W.value,n.modelModifiers?.trim){const Y=[W.selectionStart,W.selectionEnd];nextTick$2(()=>{W.selectionStart=Y[0],W.selectionEnd=Y[1]})}}const J=ref$2(),Z=ref$2(+n.rows),re=computed(()=>["plain","underlined"].includes(n.variant));watchEffect(()=>{n.autoGrow||(Z.value=+n.rows)});function ie(){n.autoGrow&&nextTick$2(()=>{if(!J.value||!O.value)return;const ue=getComputedStyle(J.value),W=getComputedStyle(O.value.$el),Y=parseFloat(ue.getPropertyValue("--v-field-padding-top"))+parseFloat(ue.getPropertyValue("--v-input-padding-top"))+parseFloat(ue.getPropertyValue("--v-field-padding-bottom")),q=J.value.scrollHeight,G=parseFloat(ue.lineHeight),ne=Math.max(parseFloat(n.rows)*G+Y,parseFloat(W.getPropertyValue("--v-input-control-height"))),ee=parseFloat(n.maxRows)*G+Y||1/0,oe=clamp(q??0,ne,ee);Z.value=Math.floor((oe-Y)/G),M.value=convertToUnit(oe)})}onMounted(ie),watch(x,ie),watch(()=>n.rows,ie),watch(()=>n.maxRows,ie),watch(()=>n.density,ie);let pe;return watch(J,ue=>{ue?(pe=new ResizeObserver(ie),pe.observe(J.value)):pe?.disconnect()}),onBeforeUnmount(()=>{pe?.disconnect()}),useRender(()=>{const ue=!!(E.counter||n.counter||n.counterValue),W=!!(ue||E.details),[Y,q]=filterInputAttrs(_),{modelValue:G,...ne}=VInput.filterProps(n),ee=filterFieldProps(n);return createVNode(VInput,mergeProps({ref:N,modelValue:x.value,"onUpdate:modelValue":oe=>x.value=oe,class:["v-textarea v-text-field",{"v-textarea--prefixed":n.prefix,"v-textarea--suffixed":n.suffix,"v-text-field--prefixed":n.prefix,"v-text-field--suffixed":n.suffix,"v-textarea--auto-grow":n.autoGrow,"v-textarea--no-resize":n.noResize||n.autoGrow,"v-input--plain-underlined":re.value},n.class],style:n.style},Y,ne,{centerAffix:Z.value===1&&!re.value,focused:T.value}),{...E,default:oe=>{let{id:ae,isDisabled:se,isDirty:te,isReadonly:X,isValid:ce}=oe;return createVNode(VField,mergeProps({ref:O,style:{"--v-textarea-control-height":M.value},onClick:j,onMousedown:z,"onClick:clear":H,"onClick:prependInner":n["onClick:prependInner"],"onClick:appendInner":n["onClick:appendInner"]},ee,{id:ae.value,active:F.value||te.value,centerAffix:Z.value===1&&!re.value,dirty:te.value||n.dirty,disabled:se.value,focused:T.value,error:ce.value===!1}),{...E,default:le=>{let{props:{class:ye,...de}}=le;return createVNode(Fragment,null,[n.prefix&&createVNode("span",{class:"v-text-field__prefix"},[n.prefix]),withDirectives(createVNode("textarea",mergeProps({ref:L,class:ye,value:x.value,onInput:Q,autofocus:n.autofocus,readonly:X.value,disabled:se.value,placeholder:n.placeholder,rows:n.rows,name:n.name,onFocus:U,onBlur:I},de,q),null),[[resolveDirective("intersect"),{handler:D},null,{once:!0}]]),n.autoGrow&&withDirectives(createVNode("textarea",{class:[ye,"v-textarea__sizer"],id:`${de.id}-sizer`,"onUpdate:modelValue":he=>x.value=he,ref:J,readonly:!0,"aria-hidden":"true"},null),[[vModelText,x.value]]),n.suffix&&createVNode("span",{class:"v-text-field__suffix"},[n.suffix])])}})},details:W?oe=>createVNode(Fragment,null,[E.details?.(oe),ue&&createVNode(Fragment,null,[createVNode("span",null,null),createVNode(VCounter,{active:n.persistentCounter||T.value,value:B.value,max:A.value,disabled:n.disabled},E.counter)])]):void 0})}),forwardRefs({},N,O,L)}}),makeVThemeProviderProps=propsFactory({withBackground:Boolean,...makeComponentProps(),...makeThemeProps(),...makeTagProps()},"VThemeProvider"),VThemeProvider=genericComponent()({name:"VThemeProvider",props:makeVThemeProviderProps(),setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n);return()=>n.withBackground?createVNode(n.tag,{class:["v-theme-provider",S.value,n.class],style:n.style},{default:()=>[_.default?.()]}):_.default?.()}}),makeVTimelineDividerProps=propsFactory({dotColor:String,fillDot:Boolean,hideDot:Boolean,icon:IconValue,iconColor:String,lineColor:String,...makeComponentProps(),...makeRoundedProps(),...makeSizeProps(),...makeElevationProps()},"VTimelineDivider"),VTimelineDivider=genericComponent()({name:"VTimelineDivider",props:makeVTimelineDividerProps(),setup(n,r){let{slots:_}=r;const{sizeClasses:S,sizeStyles:E}=useSize(n,"v-timeline-divider__dot"),{backgroundColorStyles:x,backgroundColorClasses:T}=useBackgroundColor(toRef(n,"dotColor")),{roundedClasses:C}=useRounded(n,"v-timeline-divider__dot"),{elevationClasses:I}=useElevation(n),{backgroundColorClasses:B,backgroundColorStyles:A}=useBackgroundColor(toRef(n,"lineColor"));return useRender(()=>createVNode("div",{class:["v-timeline-divider",{"v-timeline-divider--fill-dot":n.fillDot},n.class],style:n.style},[createVNode("div",{class:["v-timeline-divider__before",B.value],style:A.value},null),!n.hideDot&&createVNode("div",{key:"dot",class:["v-timeline-divider__dot",I.value,C.value,S.value],style:E.value},[createVNode("div",{class:["v-timeline-divider__inner-dot",T.value,C.value],style:x.value},[_.default?createVNode(VDefaultsProvider,{key:"icon-defaults",disabled:!n.icon,defaults:{VIcon:{color:n.iconColor,icon:n.icon,size:n.size}}},_.default):createVNode(VIcon,{key:"icon",color:n.iconColor,icon:n.icon,size:n.size},null)])]),createVNode("div",{class:["v-timeline-divider__after",B.value],style:A.value},null)])),{}}}),makeVTimelineItemProps=propsFactory({density:String,dotColor:String,fillDot:Boolean,hideDot:Boolean,hideOpposite:{type:Boolean,default:void 0},icon:IconValue,iconColor:String,lineInset:[Number,String],...makeComponentProps(),...makeDimensionProps(),...makeElevationProps(),...makeRoundedProps(),...makeSizeProps(),...makeTagProps()},"VTimelineItem"),VTimelineItem=genericComponent()({name:"VTimelineItem",props:makeVTimelineItemProps(),setup(n,r){let{slots:_}=r;const{dimensionStyles:S}=useDimension(n),E=shallowRef(0),x=ref$2();return watch(x,T=>{T&&(E.value=T.$el.querySelector(".v-timeline-divider__dot")?.getBoundingClientRect().width??0)},{flush:"post"}),useRender(()=>createVNode("div",{class:["v-timeline-item",{"v-timeline-item--fill-dot":n.fillDot},n.class],style:[{"--v-timeline-dot-size":convertToUnit(E.value),"--v-timeline-line-inset":n.lineInset?`calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(n.lineInset)})`:convertToUnit(0)},n.style]},[createVNode("div",{class:"v-timeline-item__body",style:S.value},[_.default?.()]),createVNode(VTimelineDivider,{ref:x,hideDot:n.hideDot,icon:n.icon,iconColor:n.iconColor,size:n.size,elevation:n.elevation,dotColor:n.dotColor,fillDot:n.fillDot,rounded:n.rounded},{default:_.icon}),n.density!=="compact"&&createVNode("div",{class:"v-timeline-item__opposite"},[!n.hideOpposite&&_.opposite?.()])])),{}}}),makeVTimelineProps=propsFactory({align:{type:String,default:"center",validator:n=>["center","start"].includes(n)},direction:{type:String,default:"vertical",validator:n=>["vertical","horizontal"].includes(n)},justify:{type:String,default:"auto",validator:n=>["auto","center"].includes(n)},side:{type:String,validator:n=>n==null||["start","end"].includes(n)},lineThickness:{type:[String,Number],default:2},lineColor:String,truncateLine:{type:String,validator:n=>["start","end","both"].includes(n)},...only(makeVTimelineItemProps({lineInset:0}),["dotColor","fillDot","hideOpposite","iconColor","lineInset","size"]),...makeComponentProps(),...makeDensityProps(),...makeTagProps(),...makeThemeProps()},"VTimeline"),VTimeline=genericComponent()({name:"VTimeline",props:makeVTimelineProps(),setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n),{densityClasses:E}=useDensity(n),{rtlClasses:x}=useRtl();provideDefaults({VTimelineDivider:{lineColor:toRef(n,"lineColor")},VTimelineItem:{density:toRef(n,"density"),dotColor:toRef(n,"dotColor"),fillDot:toRef(n,"fillDot"),hideOpposite:toRef(n,"hideOpposite"),iconColor:toRef(n,"iconColor"),lineColor:toRef(n,"lineColor"),lineInset:toRef(n,"lineInset"),size:toRef(n,"size")}});const T=computed(()=>{const I=n.side?n.side:n.density!=="default"?"end":null;return I&&`v-timeline--side-${I}`}),C=computed(()=>{const I=["v-timeline--truncate-line-start","v-timeline--truncate-line-end"];switch(n.truncateLine){case"both":return I;case"start":return I[0];case"end":return I[1];default:return null}});return useRender(()=>createVNode(n.tag,{class:["v-timeline",`v-timeline--${n.direction}`,`v-timeline--align-${n.align}`,`v-timeline--justify-${n.justify}`,C.value,{"v-timeline--inset-line":!!n.lineInset},S.value,E.value,T.value,x.value,n.class],style:[{"--v-timeline-line-thickness":convertToUnit(n.lineThickness)},n.style]},_)),{}}}),makeVToolbarItemsProps=propsFactory({...makeComponentProps(),...makeVariantProps({variant:"text"})},"VToolbarItems"),VToolbarItems=genericComponent()({name:"VToolbarItems",props:makeVToolbarItemsProps(),setup(n,r){let{slots:_}=r;return provideDefaults({VBtn:{color:toRef(n,"color"),height:"inherit",variant:toRef(n,"variant")}}),useRender(()=>createVNode("div",{class:["v-toolbar-items",n.class],style:n.style},[_.default?.()])),{}}}),makeVTooltipProps=propsFactory({id:String,text:String,...omit(makeVOverlayProps({closeOnBack:!1,location:"end",locationStrategy:"connected",eager:!0,minWidth:0,offset:10,openOnClick:!1,openOnHover:!0,origin:"auto",scrim:!1,scrollStrategy:"reposition",transition:!1}),["absolute","persistent"])},"VTooltip"),VTooltip=genericComponent()({name:"VTooltip",props:makeVTooltipProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),{scopeId:E}=useScopeId(),x=getUid(),T=computed(()=>n.id||`v-tooltip-${x}`),C=ref$2(),I=computed(()=>n.location.split(" ").length>1?n.location:n.location+" center"),B=computed(()=>n.origin==="auto"||n.origin==="overlap"||n.origin.split(" ").length>1||n.location.split(" ").length>1?n.origin:n.origin+" center"),A=computed(()=>n.transition?n.transition:S.value?"scale-transition":"fade-transition"),D=computed(()=>mergeProps({"aria-describedby":T.value},n.activatorProps));return useRender(()=>{const N=VOverlay.filterProps(n);return createVNode(VOverlay,mergeProps({ref:C,class:["v-tooltip",n.class],style:n.style,id:T.value},N,{modelValue:S.value,"onUpdate:modelValue":O=>S.value=O,transition:A.value,absolute:!0,location:I.value,origin:B.value,persistent:!0,role:"tooltip",activatorProps:D.value,_disableGlobalStack:!0},E),{activator:_.activator,default:function(){for(var O=arguments.length,M=new Array(O),L=0;L!0},setup(n,r){let{slots:_}=r;const S=useValidation(n,"validation");return()=>_.default?.(S)}}),components=Object.freeze(Object.defineProperty({__proto__:null,VAlert,VAlertTitle,VApp,VAppBar,VAppBarNavIcon,VAppBarTitle,VAutocomplete,VAvatar,VBadge,VBanner,VBannerActions,VBannerText,VBottomNavigation,VBottomSheet,VBreadcrumbs,VBreadcrumbsDivider,VBreadcrumbsItem,VBtn,VBtnGroup,VBtnToggle,VCard,VCardActions,VCardItem,VCardSubtitle,VCardText,VCardTitle,VCarousel,VCarouselItem,VCheckbox,VCheckboxBtn,VChip,VChipGroup,VClassIcon,VCode,VCol,VColorPicker,VCombobox,VComponentIcon,VConfirmEdit,VContainer,VCounter,VDataIterator,VDataTable,VDataTableFooter,VDataTableHeaders,VDataTableRow,VDataTableRows,VDataTableServer,VDataTableVirtual,VDatePicker,VDatePickerControls,VDatePickerHeader,VDatePickerMonth,VDatePickerMonths,VDatePickerYears,VDefaultsProvider,VDialog,VDialogBottomTransition,VDialogTopTransition,VDialogTransition,VDivider,VEmptyState,VExpandTransition,VExpandXTransition,VExpansionPanel,VExpansionPanelText,VExpansionPanelTitle,VExpansionPanels,VFab,VFabTransition,VFadeTransition,VField,VFieldLabel,VFileInput,VFooter,VForm,VHover,VIcon,VImg,VInfiniteScroll,VInput,VItem,VItemGroup,VKbd,VLabel,VLayout,VLayoutItem,VLazy,VLigatureIcon,VList,VListGroup,VListImg,VListItem,VListItemAction,VListItemMedia,VListItemSubtitle,VListItemTitle,VListSubheader,VLocaleProvider,VMain,VMenu,VMessages,VNavigationDrawer,VNoSsr,VOtpInput,VOverlay,VPagination,VParallax,VProgressCircular,VProgressLinear,VRadio,VRadioGroup,VRangeSlider,VRating,VResponsive,VRow,VScaleTransition,VScrollXReverseTransition,VScrollXTransition,VScrollYReverseTransition,VScrollYTransition,VSelect,VSelectionControl,VSelectionControlGroup,VSheet,VSkeletonLoader,VSlideGroup,VSlideGroupItem,VSlideXReverseTransition,VSlideXTransition,VSlideYReverseTransition,VSlideYTransition,VSlider,VSnackbar,VSpacer,VSparkline,VSpeedDial,VStepper,VStepperActions,VStepperHeader,VStepperItem,VStepperWindow,VStepperWindowItem,VSvgIcon,VSwitch,VSystemBar,VTab,VTable,VTabs,VTabsWindow,VTabsWindowItem,VTextField,VTextarea,VThemeProvider,VTimeline,VTimelineItem,VToolbar,VToolbarItems,VToolbarTitle,VTooltip,VValidation,VVirtualScroll,VWindow,VWindowItem},Symbol.toStringTag,{value:"Module"}));function mounted$2(n,r){const _=r.modifiers||{},S=r.value,{once:E,immediate:x,...T}=_,C=!Object.keys(T).length,{handler:I,options:B}=typeof S=="object"?S:{handler:S,options:{attributes:T?.attr??C,characterData:T?.char??C,childList:T?.child??C,subtree:T?.sub??C}},A=new MutationObserver(function(){let D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],N=arguments.length>1?arguments[1]:void 0;I?.(D,N),E&&unmounted$2(n,r)});x&&I?.([],A),n._mutate=Object(n._mutate),n._mutate[r.instance.$.uid]={observer:A},A.observe(n,B)}function unmounted$2(n,r){n._mutate?.[r.instance.$.uid]&&(n._mutate[r.instance.$.uid].observer.disconnect(),delete n._mutate[r.instance.$.uid])}const Mutate={mounted:mounted$2,unmounted:unmounted$2};function mounted$1(n,r){const _=r.value,S={passive:!r.modifiers?.active};window.addEventListener("resize",_,S),n._onResize=Object(n._onResize),n._onResize[r.instance.$.uid]={handler:_,options:S},r.modifiers?.quiet||_()}function unmounted$1(n,r){if(!n._onResize?.[r.instance.$.uid])return;const{handler:_,options:S}=n._onResize[r.instance.$.uid];window.removeEventListener("resize",_,S),delete n._onResize[r.instance.$.uid]}const Resize={mounted:mounted$1,unmounted:unmounted$1};function mounted(n,r){const{self:_=!1}=r.modifiers??{},S=r.value,E=typeof S=="object"&&S.options||{passive:!0},x=typeof S=="function"||"handleEvent"in S?S:S.handler,T=_?n:r.arg?document.querySelector(r.arg):window;T&&(T.addEventListener("scroll",x,E),n._onScroll=Object(n._onScroll),n._onScroll[r.instance.$.uid]={handler:x,options:E,target:_?void 0:T})}function unmounted(n,r){if(!n._onScroll?.[r.instance.$.uid])return;const{handler:_,options:S,target:E=n}=n._onScroll[r.instance.$.uid];E.removeEventListener("scroll",_,S),delete n._onScroll[r.instance.$.uid]}function updated(n,r){r.value!==r.oldValue&&(unmounted(n,r),mounted(n,r))}const Scroll={mounted,unmounted,updated};function useDirectiveComponent(n,r){const _=typeof n=="string"?resolveComponent(n):n,S=mountComponent(_,r);return{mounted:S,updated:S,unmounted(E){render(null,E)}}}function mountComponent(n,r){return function(_,S,E){const x=typeof r=="function"?r(S):r,T=S.value?.text??S.value??x?.text,C=isObject$1(S.value)?S.value:{},I=()=>T??_.textContent,B=(E.ctx===S.instance.$?findComponentParent(E,S.instance.$)?.provides:E.ctx?.provides)??S.instance.$.provides,A=h$2(n,mergeProps(x,C),I);A.appContext=Object.assign(Object.create(null),S.instance.$.appContext,{provides:B}),render(A,_)}}function findComponentParent(n,r){const _=new Set,S=x=>{for(const T of x){if(!T)continue;if(T===n)return!0;_.add(T);let C;if(T.suspense?C=S([T.ssContent]):Array.isArray(T.children)?C=S(T.children):T.component?.vnode&&(C=S([T.component?.subTree])),C)return C;_.delete(T)}return!1};if(!S([r.subTree]))throw new Error("Could not find original vnode");const E=Array.from(_).reverse();for(const x of E)if(x.component)return x.component;return r}const Tooltip=useDirectiveComponent(VTooltip,n=>({activator:"parent",location:n.arg?.replace("-"," "),text:typeof n.value=="boolean"?void 0:n.value})),directives=Object.freeze(Object.defineProperty({__proto__:null,ClickOutside,Intersect,Mutate,Resize,Ripple,Scroll,Tooltip,Touch},Symbol.toStringTag,{value:"Module"}));function createVuetify(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{blueprint:r,..._}=n,S=mergeDeep(r,_),{aliases:E={},components:x={},directives:T={}}=S,C=createDefaults(S.defaults),I=createDisplay(S.display,S.ssr),B=createTheme(S.theme),A=createIcons(S.icons),D=createLocale(S.locale),N=createDate(S.date,D),O=createGoTo(S.goTo,D);return{install:L=>{for(const F in T)L.directive(F,T[F]);for(const F in x)L.component(F,x[F]);for(const F in E)L.component(F,defineComponent({...E[F],name:F,aliasName:E[F].name}));if(B.install(L),L.provide(DefaultsSymbol,C),L.provide(DisplaySymbol,I),L.provide(ThemeSymbol,B),L.provide(IconSymbol,A),L.provide(LocaleSymbol,D),L.provide(DateOptionsSymbol,N.options),L.provide(DateAdapterSymbol,N.instance),L.provide(GoToSymbol,O),IN_BROWSER&&S.ssr)if(L.$nuxt)L.$nuxt.hook("app:suspense:resolve",()=>{I.update()});else{const{mount:F}=L;L.mount=function(){const U=F(...arguments);return nextTick$2(()=>I.update()),L.mount=F,U}}getUid.reset(),L.mixin({computed:{$vuetify(){return reactive({defaults:inject.call(this,DefaultsSymbol),display:inject.call(this,DisplaySymbol),theme:inject.call(this,ThemeSymbol),icons:inject.call(this,IconSymbol),locale:inject.call(this,LocaleSymbol),date:inject.call(this,DateAdapterSymbol)})}}})},defaults:C,display:I,theme:B,icons:A,locale:D,date:N,goTo:O}}const version="3.7.2";createVuetify.version=version;function inject(n){const r=this.$,_=r.parent?.provides??r.vnode.appContext?.provides;if(_&&n in _)return _[n]}const aliases={collapse:"fas fa-chevron-up",complete:"fas fa-check",cancel:"fas fa-times-circle",close:"fas fa-times",delete:"fas fa-times-circle",clear:"fas fa-times-circle",success:"fas fa-check-circle",info:"fas fa-info-circle",warning:"fas fa-exclamation",error:"fas fa-exclamation-triangle",prev:"fas fa-chevron-left",next:"fas fa-chevron-right",checkboxOn:"fas fa-check-square",checkboxOff:"far fa-square",checkboxIndeterminate:"fas fa-minus-square",delimiter:"fas fa-circle",sortAsc:"fas fa-arrow-up",sortDesc:"fas fa-arrow-down",expand:"fas fa-chevron-down",menu:"fas fa-bars",subgroup:"fas fa-caret-down",dropdown:"fas fa-caret-down",radioOn:"far fa-dot-circle",radioOff:"far fa-circle",edit:"fas fa-edit",ratingEmpty:"far fa-star",ratingFull:"fas fa-star",ratingHalf:"fas fa-star-half",loading:"fas fa-sync",first:"fas fa-step-backward",last:"fas fa-step-forward",unfold:"fas fa-arrows-alt-v",file:"fas fa-paperclip",plus:"fas fa-plus",minus:"fas fa-minus",calendar:"fas fa-calendar",treeviewCollapse:"fas fa-caret-down",treeviewExpand:"fas fa-caret-right",eyeDropper:"fas fa-eye-dropper"},fa={component:VClassIcon},vuetify=createVuetify({components,directives,icons:{defaultSet:"fa",aliases,sets:{fa}},defaults:{global:{elevation:0},VTextField:{variant:"solo-filled","bg-color":"background"},VFileInput:{variant:"solo-filled"},VSelect:{variant:"solo-filled"},VAutocomplete:{variant:"solo-filled"},VTooltip:{location:"start"}},theme:{defaultTheme:"default",themes:{default:{dark:!1,colors:{background:"#221F1F","background-lighten-1":"#141414","background-lighten-2":"#363B65","background-darken-1":"#191919","background-darken-2":"#191919",primary:"#A020F0","primary-lighten-1":"#BA52FB","primary-darken-1":"#7918B5",secondary:"#D027C1","secondary-lighten-1":"#392a37","secondary-darken-1":"#AD18A0",surface:"#191919",error:"#F44336",info:"#2986CC",success:"#51BF32",warning:"#F1C232"},variables:{"border-color":"#A020F0","border-opacity":"0.5","high-emphasis-opacity":"0.87","medium-emphasis-opacity":" 0.6","disabled-opacity":"0.38","idle-opacity":"0.04","hover-opacity":"0.04","focus-opacity":"0.12","selected-opacity":"0.08","activated-opacity":"0.12","pressed-opacity":"0.12","dragged-opacity":"0.08","theme-kbd":"#212529","theme-on-kbd":"#FFFFFF","theme-code":"#F5F5F5","theme-on-code":"#000000"}}}}});async function loadFonts(){(await __vitePreload(()=>import("./webfontloader-CUhL5jdM.js").then(r=>r.w),[],import.meta.url)).load({google:{families:["Josefin Sans:100,300,400,500,700,900&display=swap"]}})}const TRUSTED_SITES_TABLE_KEY="trustedSites",TRUSTED_SITES_SITE_ID_COL="siteId",TRUSTED_SITES_NAME_COL="siteName",FEATURED_RELEASES_TABLE_KEY="featuredReleases",FEATURED_RELEASES_RELEASE_ID_COLUMN="releaseId",FEATURED_RELEASES_START_TIME_COLUMN="startTime",FEATURED_RELEASES_END_TIME_COLUMN="endTime",BLOCKED_RELEASES_TABLE_KEY="blockedReleases",BLOCKED_RELEASES_RELEASE_ID_COLUMN="releaseId",RELEASES_FILE_COLUMN="file",RELEASES_AUTHOR_COLUMN="author",RELEASES_NAME_COLUMN="contentName",RELEASES_METADATA_COLUMN="metadata",RELEASES_THUMBNAIL_COLUMN="thumbnail",RELEASES_CATEGORY_COLUMN="category",RELEASES_STATUS_COLUMN="status",COLLECTIONS_RELEASES_COLUMN="releases",COLLECTIONS_AUTHOR_COLUMN="author",COLLECTIONS_NAME_COLUMN="contentName",COLLECTIONS_METADATA_COLUMN="metadata",COLLECTIONS_THUMBNAIL_COLUMN="thumbnail",COLLECTIONS_CATEGORY_COLUMN="category",COLLECTIONS_STATUS_COLUMN="status",RELEASES_DB_TABLE_KEY="releases",COLLECTIONS_DB_TABLE_KEY="collections",clearData=async()=>{if(localStorage.clear(),indexedDB.databases){const n=await indexedDB.databases();await Promise.all(n.map(r=>{r.name&&indexedDB.deleteDatabase(r.name)}))}},loadStubData=async n=>{await clearData(),await n.changeName({name:"Me !",language:"en"});const r=(await __vitePreload(async()=>{const{default:x}=await import("./06-yy_ch01_l01_d01-BgPhPoYF.js");return{default:x}},[],import.meta.url)).default,_=await n.constellation.ajouterÀSFIP({contenu:new Uint8Array(new TextEncoder().encode(r)),nomFichier:"06-yy_ch01_l01_d01.mp3"}),S=(await __vitePreload(async()=>{const{default:x}=await import("./logo-VlxrkOH0.js");return{default:x}},[],import.meta.url)).default,E=await n.constellation.ajouterÀSFIP({contenu:new Uint8Array(new TextEncoder().encode(S)),nomFichier:"logo.svg"});await n.addRelease({[RELEASES_NAME_COLUMN]:"Famous song",[RELEASES_AUTHOR_COLUMN]:"I. B. Astar",[RELEASES_THUMBNAIL_COLUMN]:E,[RELEASES_FILE_COLUMN]:_,[RELEASES_METADATA_COLUMN]:"With an open-access licence, of course.",[RELEASES_CATEGORY_COLUMN]:"audio",[RELEASES_STATUS_COLUMN]:"pending"})};var lib={};Object.defineProperty(lib,"__esModule",{value:!0});var TypedEmitter=lib.TypedEmitter=eventsExports.EventEmitter,dist={},Semaphore={};(function(n){var r=commonjsGlobal&&commonjsGlobal.__awaiter||function(E,x,T,C){return new(T||(T=Promise))(function(I,B){function A(O){try{N(C.next(O))}catch(M){B(M)}}function D(O){try{N(C.throw(O))}catch(M){B(M)}}function N(O){O.done?I(O.value):new T(function(M){M(O.value)}).then(A,D)}N((C=C.apply(E,x||[])).next())})},_=commonjsGlobal&&commonjsGlobal.__generator||function(E,x){var T={label:0,sent:function(){if(B[0]&1)throw B[1];return B[1]},trys:[],ops:[]},C,I,B;return{next:A(0),throw:A(1),return:A(2)};function A(N){return function(O){return D([N,O])}}function D(N){if(C)throw new TypeError("Generator is already executing.");for(;T;)try{if(C=1,I&&(B=I[N[0]&2?"return":N[0]?"throw":"next"])&&!(B=B.call(I,N[1])).done)return B;switch(I=0,B&&(N=[0,B.value]),N[0]){case 0:case 1:B=N;break;case 4:return T.label++,{value:N[1],done:!1};case 5:T.label++,I=N[1],N=[0];continue;case 7:N=T.ops.pop(),T.trys.pop();continue;default:if(B=T.trys,!(B=B.length>0&&B[B.length-1])&&(N[0]===6||N[0]===2)){T=0;continue}if(N[0]===3&&(!B||N[1]>B[0]&&N[1]0?(this.permits-=1,[2,Promise.resolve(!0)]):[2,new Promise(function(C){return x.promiseResolverQueue.push(C)})]})})},E.prototype.acquire=function(){return r(this,void 0,void 0,function(){return _(this,function(x){return[2,this.wait()]})})},E.prototype.waitFor=function(x){return r(this,void 0,void 0,function(){var T=this,C,I;return _(this,function(B){return this.permits>0?(this.permits-=1,[2,Promise.resolve(!0)]):(C=function(A){},I=new Promise(function(A){C=A}),this.promiseResolverQueue.push(C),setTimeout(function(){var A=T.promiseResolverQueue.indexOf(C);A!==-1&&T.promiseResolverQueue.splice(A,1),C(!1)},x),[2,I])})})},E.prototype.tryAcquire=function(){return this.permits>0?(this.permits-=1,!0):!1},E.prototype.drainPermits=function(){if(this.permits>0){var x=this.permits;return this.permits=0,x}return 0},E.prototype.signal=function(){if(this.permits+=1,this.permits>1&&this.promiseResolverQueue.length>0)throw new Error("this.permits should never be > 0 when there is someone waiting.");if(this.permits===1&&this.promiseResolverQueue.length>0){this.permits-=1;var x=this.promiseResolverQueue.shift();x&&x(!0)}},E.prototype.release=function(){this.signal()},E.prototype.execute=function(x){return r(this,void 0,void 0,function(){return _(this,function(T){switch(T.label){case 0:return[4,this.wait()];case 1:T.sent(),T.label=2;case 2:return T.trys.push([2,,4,5]),[4,x()];case 3:return[2,T.sent()];case 4:return this.signal(),[7];case 5:return[2]}})})},E}();n.default=S})(Semaphore);var Lock$1={},__extends=commonjsGlobal&&commonjsGlobal.__extends||function(){var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,_){r.__proto__=_}||function(r,_){for(var S in _)_.hasOwnProperty(S)&&(r[S]=_[S])};return function(r,_){n(r,_);function S(){this.constructor=r}r.prototype=_===null?Object.create(_):(S.prototype=_.prototype,new S)}}();Lock$1.__esModule=!0;var Semaphore_1=Semaphore,Lock=function(n){__extends(r,n);function r(){return n.call(this,1)||this}return r}(Semaphore_1.default);Lock$1.Lock=Lock;(function(n){function r(S){for(var E in S)n.hasOwnProperty(E)||(n[E]=S[E])}n.__esModule=!0;var _=Semaphore;n.default=_.default,r(Lock$1)})(dist);const variableIdKeys=["trustedSitesSiteIdVariableId","trustedSitesNameVariableId","releasesContentNameVar","releasesFileVar","releasesThumbnailVar","releasesAuthorVar","releasesMetadataVar","releasesCategoryVar","releasesStatusVar","collectionsNameVar","collectionsAuthorVar","collectionsThumbnailVar","collectionsMetadataVar","collectionsCategoryVar","collectionsReleasesVar","collectionsStatusVar","featuredReleasesReleaseIdVar","featuredReleasesStartTimeVar","featuredReleasesEndTimeVar","blockedReleasesReleaseIdVar"],useOrbiter=()=>{const n=inject$1("orbiter");if(n)return{orbiter:n};throw new Error("Orbiter not found. Did you register the Orbiter plugin with Vue?")},removeUndefined=n=>Object.fromEntries(Object.entries(n).filter(r=>r[1]!==void 0)),ROOT_DB_JSON_SCHEMA={type:"object",properties:{modDb:{type:"string",nullable:!0},swarmId:{type:"string",nullable:!0}},required:[]},OrbiterSiteDbSchema={type:"object",properties:{modDb:{type:"string"},swarmId:{type:"string"}},required:["modDb","swarmId"]};class Orbiter{siteId;swarmId;initialVariableIds;variableIds;constellation;events;statusType=["approved","deleted","pending","rejected"];contentCategories=["tvShow","movie","audiobook","game","book","music","video","other"];constructor({siteId:r,swarmId:_,variableIds:S,constellation:E}){this.events=new TypedEmitter,this.siteId=r,this.swarmId=_,this.initialVariableIds=S,this.checkVariableIdsComplete(S)&&(this.variableIds=S),this.constellation=E}async setUpSite(){console.log("ici");const r=this.initialVariableIds.trustedSitesSiteIdVariableId||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),_=this.initialVariableIds.trustedSitesNameVariableId||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),S=this.initialVariableIds.featuredReleasesReleaseIdVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),E=this.initialVariableIds.featuredReleasesStartTimeVar||await this.constellation.variables.créerVariable({catégorie:"horoDatage"}),x=this.initialVariableIds.featuredReleasesEndTimeVar||await this.constellation.variables.créerVariable({catégorie:"horoDatage"}),T=this.initialVariableIds.blockedReleasesReleaseIdVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"});console.log("ici 1");const C=this.initialVariableIds.releasesFileVar||await this.constellation.variables.créerVariable({catégorie:"fichier"}),I=this.initialVariableIds.releasesThumbnailVar||await this.constellation.variables.créerVariable({catégorie:"fichier"}),B=this.initialVariableIds.releasesAuthorVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),A=this.initialVariableIds.releasesMetadataVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),D=this.initialVariableIds.releasesContentNameVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"});console.log("ici 2");let N;this.initialVariableIds.releasesCategoryVar?N=this.initialVariableIds.releasesCategoryVar:(N=await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),await this.constellation.variables.ajouterRègleVariable({idVariable:N,règle:{typeRègle:"valeurCatégorique",détails:{type:"fixe",options:this.contentCategories}}}));let O;this.initialVariableIds.releasesStatusVar?O=this.initialVariableIds.releasesStatusVar:(O=await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),await this.constellation.variables.ajouterRègleVariable({idVariable:O,règle:{typeRègle:"valeurCatégorique",détails:{type:"fixe",options:this.statusType}}})),console.log("ici 3");const M=this.initialVariableIds.collectionsNameVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),L=this.initialVariableIds.collectionsAuthorVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),F=this.initialVariableIds.collectionsMetadataVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),U=this.initialVariableIds.collectionsReleasesVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),j=this.initialVariableIds.collectionsThumbnailVar||await this.constellation.variables.créerVariable({catégorie:"fichier"});console.log("ici 4");let z;this.initialVariableIds.collectionsCategoryVar?z=this.initialVariableIds.collectionsCategoryVar:(z=await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),await this.constellation.variables.ajouterRègleVariable({idVariable:z,règle:{typeRègle:"valeurCatégorique",détails:{type:"fixe",options:this.contentCategories}}}));let H;this.initialVariableIds.collectionsStatusVar?H=this.initialVariableIds.collectionsStatusVar:(H=await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),await this.constellation.variables.ajouterRègleVariable({idVariable:H,règle:{typeRègle:"valeurCatégorique",détails:{type:"fixe",options:this.statusType}}})),console.log("ici 5");let Q;if(this.swarmId)Q=this.swarmId;else{Q=await this.constellation.nuées.créerNuée({});const ie=this.getSwarmDbSchema({releasesFileVar:C,releasesCategoryVar:N,releasesThumbnailVar:I,releasesAuthorVar:B,releasesContentNameVar:D,releasesMetadataVar:A,releasesStatusVar:O,collectionsAuthorVar:L,collectionsMetadataVar:F,collectionsNameVar:M,collectionsReleasesVar:U,collectionsThumbnailVar:j,collectionsCategoryVar:z,collectionsStatusVar:H,swarmId:Q});for(const pe of ie.tableaux){const ue=pe.clef,W=await this.constellation.nuées.ajouterTableauNuée({idNuée:Q,clefTableau:ue});for(const Y of pe.cols)await this.constellation.nuées.ajouterColonneTableauNuée({idTableau:W,idVariable:Y.idVariable,idColonne:Y.idColonne})}}console.log("ici 6");const J=await this.constellation.bds.créerBdDeSchéma({schéma:{licence:"ODbl-1_0",tableaux:[{cols:[{idVariable:r,idColonne:TRUSTED_SITES_SITE_ID_COL},{idVariable:_,idColonne:TRUSTED_SITES_NAME_COL}],clef:TRUSTED_SITES_TABLE_KEY},{cols:[{idVariable:S,idColonne:FEATURED_RELEASES_RELEASE_ID_COLUMN},{idVariable:E,idColonne:FEATURED_RELEASES_START_TIME_COLUMN},{idVariable:x,idColonne:FEATURED_RELEASES_END_TIME_COLUMN}],clef:FEATURED_RELEASES_TABLE_KEY},{cols:[{idVariable:T,idColonne:BLOCKED_RELEASES_RELEASE_ID_COLUMN}],clef:BLOCKED_RELEASES_TABLE_KEY}]}});console.log("ici 7");const Z={trustedSitesSiteIdVariableId:r,trustedSitesNameVariableId:_,featuredReleasesReleaseIdVar:S,featuredReleasesStartTimeVar:E,featuredReleasesEndTimeVar:x,blockedReleasesReleaseIdVar:T,releasesFileVar:C,releasesAuthorVar:B,releasesContentNameVar:D,releasesThumbnailVar:I,releasesMetadataVar:A,releasesCategoryVar:N,releasesStatusVar:O,collectionsAuthorVar:L,collectionsMetadataVar:F,collectionsNameVar:M,collectionsThumbnailVar:j,collectionsReleasesVar:U,collectionsCategoryVar:z,collectionsStatusVar:H},re=await this.constellation.créerBdIndépendante({type:"keyvalue"});return console.log("ici 8",{modDbId:J}),await this.constellation.orbite.appliquerFonctionBdOrbite({idBd:re,fonction:"put",args:["modDb",J]}),console.log("ici 9"),await this.constellation.orbite.appliquerFonctionBdOrbite({idBd:re,fonction:"put",args:["swarmId",Q]}),console.log("ici 10"),this.events.emit("site configured",{siteId:re,variableIds:Z}),console.log("ici 11"),{siteId:re,variableIds:Z}}checkVariableIdsComplete(r){return!!r&&variableIdKeys.every(_=>Object.keys(r).includes(_)&&r[_])}getSwarmDbSchema({releasesFileVar:r,releasesCategoryVar:_,releasesThumbnailVar:S,releasesAuthorVar:E,releasesContentNameVar:x,releasesMetadataVar:T,releasesStatusVar:C,collectionsNameVar:I,collectionsCategoryVar:B,collectionsReleasesVar:A,collectionsAuthorVar:D,collectionsMetadataVar:N,collectionsThumbnailVar:O,collectionsStatusVar:M,swarmId:L}){return{licence:"ODbl-1_0",nuées:[L],tableaux:[{cols:[{idVariable:r,idColonne:RELEASES_FILE_COLUMN},{idVariable:_,idColonne:RELEASES_CATEGORY_COLUMN},{idVariable:S,idColonne:RELEASES_THUMBNAIL_COLUMN},{idVariable:E,idColonne:RELEASES_AUTHOR_COLUMN},{idVariable:x,idColonne:RELEASES_NAME_COLUMN},{idVariable:T,idColonne:RELEASES_METADATA_COLUMN},{idVariable:C,idColonne:RELEASES_STATUS_COLUMN}],clef:RELEASES_DB_TABLE_KEY},{cols:[{idVariable:I,idColonne:COLLECTIONS_NAME_COLUMN},{idVariable:B,idColonne:COLLECTIONS_CATEGORY_COLUMN},{idVariable:A,idColonne:COLLECTIONS_RELEASES_COLUMN},{idVariable:D,idColonne:COLLECTIONS_AUTHOR_COLUMN},{idVariable:N,idColonne:COLLECTIONS_METADATA_COLUMN},{idVariable:O,idColonne:COLLECTIONS_THUMBNAIL_COLUMN},{idVariable:M,idColonne:COLLECTIONS_STATUS_COLUMN}],clef:COLLECTIONS_DB_TABLE_KEY}]}}async listenForSiteConfigured({f:r}){const _=()=>!!(this.siteId&&this.checkVariableIdsComplete(this.variableIds));r(_());const S=()=>r(_());return this.events.on("site configured",S),async()=>{this.events.off("site configured",S)}}async siteConfigured(){return this.siteId&&this.checkVariableIdsComplete(this.variableIds)?{siteId:this.siteId,variableIds:this.variableIds}:new Promise(r=>{this.events.once("site configured",r)})}async orbiterConfig(){const{siteId:r,variableIds:_}=await this.siteConfigured(),S=await uneFois(async T=>await this.constellation.suivreBd({id:r,type:"keyvalue",f:async C=>T(await C.get("modDb")),schéma:OrbiterSiteDbSchema})),E=await uneFois(async T=>await this.constellation.suivreBd({id:r,type:"keyvalue",f:async C=>T(await C.get("swarmId")),schéma:OrbiterSiteDbSchema}),T=>typeof T=="string"),x=this.getSwarmDbSchema({..._,swarmId:E});return{modDbId:S,swarmId:E,swarmSchema:x}}async followSiteSwarmId({f:r,siteId:_}){return _||({siteId:_}=await this.siteConfigured()),await this.constellation.suivreBdDic({id:_,schéma:ROOT_DB_JSON_SCHEMA,f:S=>{const E=S.swarmId;typeof E=="string"&&r(E)}})}async followSiteModDbId({f:r,siteId:_}){return _||({siteId:_}=await this.siteConfigured()),await this.constellation.suivreBdDic({id:_,schéma:ROOT_DB_JSON_SCHEMA,f:S=>{const E=S.modDb;typeof E=="string"&&r(E)}})}async followTrustedSites({f:r}){const{siteId:_}=await this.siteConfigured();return await suivreBdDeFonction({fRacine:async({fSuivreRacine:S})=>await this.constellation.suivreBd({id:_,f:async E=>await S(await E.get("modDb")),type:"keyvalue",schéma:OrbiterSiteDbSchema}),f:r,fSuivre:async({id:S,fSuivreBd:E})=>this.constellation.bds.suivreDonnéesDeTableauParClef({idBd:S,clefTableau:TRUSTED_SITES_TABLE_KEY,f:E})})}async listenForSiteBlockedReleases({f:r,siteId:_}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:S})=>await this.followSiteModDbId({f:S,siteId:_}),f:ignorerNonDéfinis(r),fSuivre:async({id:S,fSuivreBd:E})=>await this.constellation.bds.suivreDonnéesDeTableauParClef({idBd:S,clefTableau:BLOCKED_RELEASES_TABLE_KEY,f:async x=>{x&&await E(x.map(T=>({cid:T.données[BLOCKED_RELEASES_RELEASE_ID_COLUMN],id:T.id})))}})})}async listenForSiteReleases({f:r,siteId:_,desiredNResults:S=1e3}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:E})=>await this.followSiteSwarmId({f:E,siteId:_}),f:ignorerNonDéfinis(r),fSuivre:async({id:E,fSuivreBd:x})=>{const{fOublier:T}=await this.constellation.nuées.suivreDonnéesTableauNuée({idNuée:E,clefTableau:RELEASES_DB_TABLE_KEY,f:C=>x(C.map(I=>({release:{release:I.élément.données,id:I.élément.id},contributor:I.idCompte}))),nRésultatsDésirés:S,clefsSelonVariables:!1});return T}})}async listenForSiteCollections({f:r,siteId:_,desiredNResults:S=1e3}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:E})=>await this.followSiteSwarmId({f:E,siteId:_}),f:ignorerNonDéfinis(r),fSuivre:async({id:E,fSuivreBd:x})=>{const{fOublier:T}=await this.constellation.nuées.suivreDonnéesTableauNuée({idNuée:E,clefTableau:COLLECTIONS_DB_TABLE_KEY,f:C=>x(C.map(I=>({collection:{collection:I.élément.données,id:I.élément.id},contributor:I.idCompte}))),nRésultatsDésirés:S,clefsSelonVariables:!1});return T}})}async listenForSiteFeaturedReleases({f:r,siteId:_}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:S})=>await this.followSiteSwarmId({f:S,siteId:_}),f:ignorerNonDéfinis(r),fSuivre:async({id:S,fSuivreBd:E})=>{const{fOublier:x}=await this.constellation.nuées.suivreDonnéesTableauNuée({idNuée:S,clefTableau:FEATURED_RELEASES_TABLE_KEY,f:T=>E(T.map(C=>({id:C.élément.id,featured:C.élément.données}))),clefsSelonVariables:!1});return x}})}async listenForReleases({f:r}){const{siteId:_}=await this.siteConfigured(),S={};let E=!1;const x=new dist.Lock,T=async()=>{const A=Object.values(S).map(N=>N.blockedCids||[]).flat(),D=Object.entries(S).map(N=>(N[1].entries||[]).map(O=>({...O,site:N[0]}))).flat().filter(N=>!A.includes(N.release.release.file));await r(D)},C=async A=>{const D=(A||[]).map(M=>M.données);if(D.push({[TRUSTED_SITES_SITE_ID_COL]:_,[TRUSTED_SITES_NAME_COL]:"Me !"}),await x.acquire(),E)return;const N=D.filter(M=>!Object.keys(S).includes(M.siteName)),O=Object.keys(S).filter(M=>!D.some(L=>L.siteName===M));for(const M of N){const L=[],{siteName:F}=M;S[F]={},this.listenForSiteBlockedReleases({f:async U=>{S[F].blockedCids=U?.map(j=>j.cid),await T()},siteId:M.siteId}).then(U=>L.push(U)),this.listenForSiteReleases({f:async U=>{S[F].entries=U,await T()},siteId:M.siteId}).then(U=>L.push(U)),S[F].fForget=async()=>{await Promise.all(L.map(U=>U()))},await T()}for(const M of O){const{fForget:L}=S[M];L&&await L(),delete S[M]}await T(),x.release()};await C();let I;return this.followTrustedSites({f:C}).then(A=>I=A),async()=>{E=!0,I&&await I(),await Promise.all(Object.values(S).map(A=>A.fForget?A.fForget():Promise.resolve()))}}async listenForCollections({f:r}){const{siteId:_}=await this.siteConfigured(),S={};let E=!1;const x=new dist.Lock,T=async()=>{const A=Object.entries(S).map(D=>(D[1].entries||[]).map(N=>({...N,site:D[0]}))).flat();await r(A)},C=async A=>{const D=(A||[]).map(M=>M.données);if(D.push({[TRUSTED_SITES_SITE_ID_COL]:_,[TRUSTED_SITES_NAME_COL]:"Me !"}),await x.acquire(),E)return;const N=D.filter(M=>!Object.keys(S).includes(M.siteName)),O=Object.keys(S).filter(M=>!D.some(L=>L.siteName===M));for(const M of N){const L=[],{siteName:F}=M;S[F]={},this.listenForSiteCollections({f:async U=>{S[F].entries=U,await T()},siteId:M.siteId}).then(U=>L.push(U)),S[F].fForget=async()=>{await Promise.all(L.map(U=>U()))},await T()}for(const M of O){const{fForget:L}=S[M];L&&await L(),delete S[M]}await T(),x.release()};await C();let I;return this.followTrustedSites({f:C}).then(A=>I=A),async()=>{E=!0,I&&await I(),await Promise.all(Object.values(S).map(A=>A.fForget?A.fForget():Promise.resolve()))}}async listenForFeaturedReleases({f:r}){const{siteId:_}=await this.siteConfigured(),S={};let E=!1;const x=new dist.Lock,T=async()=>{const A=Object.entries(S).map(D=>(D[1].featuredReleases||[]).map(N=>({...N,site:D[0]}))).flat();await r(A)},C=async A=>{const D=(A||[]).map(M=>M.données);if(D.push({[TRUSTED_SITES_SITE_ID_COL]:_,[TRUSTED_SITES_NAME_COL]:"Me !"}),await x.acquire(),E)return;const N=D.filter(M=>!Object.keys(S).includes(M.siteName)),O=Object.keys(S).filter(M=>!D.some(L=>L.siteName===M));for(const M of N){const L=[],{siteName:F}=M;S[F]={},this.listenForSiteFeaturedReleases({f:async U=>{S[F].featuredReleases=U.map(j=>j.featured),await T()},siteId:M.siteId}).then(U=>L.push(U)),S[F].fForget=async()=>{await Promise.all(L.map(U=>U()))},await T()}for(const M of O){const{fForget:L}=S[M];L&&await L(),delete S[M]}await T(),x.release()};await C();let I;return this.followTrustedSites({f:C}).then(A=>I=A),async()=>{E=!0,I&&await I(),await Promise.all(Object.values(S).map(A=>A.fForget?A.fForget():Promise.resolve()))}}async addRelease(r){const{swarmId:_,swarmSchema:S}=await this.orbiterConfig();await this.constellation.bds.ajouterÉlémentÀTableauUnique({schémaBd:S,idNuéeUnique:_,clefTableau:RELEASES_DB_TABLE_KEY,vals:removeUndefined(r)})}async removeRelease(r){const{swarmId:_,swarmSchema:S}=await this.orbiterConfig();await this.constellation.bds.effacerÉlémentDeTableauUnique({schémaBd:S,idNuéeUnique:_,clefTableau:RELEASES_DB_TABLE_KEY,idÉlément:r})}async editRelease({release:r,releaseId:_}){const{swarmId:S,swarmSchema:E}=await this.orbiterConfig();return await this.constellation.bds.modifierÉlémentDeTableauUnique({vals:r,schémaBd:E,idNuéeUnique:S,clefTableau:RELEASES_DB_TABLE_KEY,idÉlément:_})}async addCollection(r){const{swarmId:_,swarmSchema:S}=await this.orbiterConfig();await this.constellation.bds.ajouterÉlémentÀTableauUnique({schémaBd:S,idNuéeUnique:_,clefTableau:COLLECTIONS_DB_TABLE_KEY,vals:removeUndefined(r)})}async removeCollection(r){const{swarmId:_,swarmSchema:S}=await this.orbiterConfig();await this.constellation.bds.effacerÉlémentDeTableauUnique({schémaBd:S,idNuéeUnique:_,clefTableau:COLLECTIONS_DB_TABLE_KEY,idÉlément:r})}async editCollection({collection:r,collectionId:_}){const{swarmId:S,swarmSchema:E}=await this.orbiterConfig();return await this.constellation.bds.modifierÉlémentDeTableauUnique({vals:r,schémaBd:E,idNuéeUnique:S,clefTableau:COLLECTIONS_DB_TABLE_KEY,idÉlément:_})}async getCollectionReleasesSetId({collectionId:r}){const S=(await uneFois(async E=>await this.listenForCollections({f:async x=>E(x.map(T=>T.collection))}))).find(E=>E.id===r);if(!S)throw new Error("Collection not found.");return S.collection[COLLECTIONS_RELEASES_COLUMN]}async addReleaseToCollection({releaseId:r,collectionId:_}){const S=await this.getCollectionReleasesSetId({collectionId:_});await this.constellation.orbite.appliquerFonctionBdOrbite({idBd:S,fonction:"add",args:[r]})}async removeReleaseFromCollection({releaseId:r,collectionId:_}){const S=await this.getCollectionReleasesSetId({collectionId:_});await this.constellation.orbite.appliquerFonctionBdOrbite({idBd:S,fonction:"remove",args:[r]})}async changeName({name:r,language:_}){r?await this.constellation.profil.sauvegarderNom({langue:_,nom:r}):await this.constellation.profil.effacerNom({langue:_})}async changeProfilePhoto({image:r}){return r?await this.constellation.profil.sauvegarderImage({image:r}):await this.constellation.profil.effacerImage()}async addContactInfo({type:r,contact:_}){return await this.constellation.profil.sauvegarderContact({type:r,contact:_})}async removeContactInfo({type:r,contact:_}){return await this.constellation.profil.effacerContact({type:r,contact:_})}async deleteAccount(){return await this.constellation.fermerCompte()}async listenForAccountId({f:r}){return await this.constellation.suivreIdCompte({f:r})}async listenForAccountExists({f:r}){return await this.constellation.profil.suivreInitialisé({f:r})}async listenForNameChange({f:r,accountId:_}){return await this.constellation.profil.suivreNoms({f:r,idCompte:_})}async listenForContactInfoChange({f:r,accountId:_}){return await this.constellation.profil.suivreContacts({f:r,idCompte:_})}async listenForProfilePhotoChange({f:r,accountId:_}){return await this.constellation.profil.suivreImage({f:r,idCompte:_})}async featureRelease({cid:r,startTime:_,endTime:S}){const{modDbId:E}=await this.orbiterConfig();return(await this.constellation.bds.ajouterÉlémentÀTableauParClef({idBd:E,clefTableau:FEATURED_RELEASES_TABLE_KEY,vals:{[FEATURED_RELEASES_RELEASE_ID_COLUMN]:r,[FEATURED_RELEASES_START_TIME_COLUMN]:_,[FEATURED_RELEASES_END_TIME_COLUMN]:S}}))[0]}async listenToIsModerator({f:r,userId:_}){_=_||await this.constellation.obtIdCompte();const{siteId:S}=await this.siteConfigured(),E=x=>x==="MODÉRATEUR"?"ADMIN":x==="MEMBRE"?"MODERATOR":void 0;return await this.constellation.suivreAccèsBd({id:S,f:x=>r(E(x.find(T=>T.idCompte===_)?.rôle))})}async inviteModerator({userId:r,admin:_=!1}){const{siteId:S}=await this.siteConfigured(),{modDbId:E,swarmId:x}=await this.orbiterConfig();await this.constellation.nuées.inviterAuteur({idNuée:x,idCompteAuteur:r,rôle:_?"MODÉRATEUR":"MEMBRE"}),await this.constellation.bds.inviterAuteur({idBd:E,idCompteAuteur:r,rôle:_?"MODÉRATEUR":"MEMBRE"}),_&&await this.constellation.donnerAccès({idBd:S,identité:r,rôle:"MODÉRATEUR"})}async blockRelease({cid:r}){const{modDbId:_}=await this.orbiterConfig();return(await this.constellation.bds.ajouterÉlémentÀTableauParClef({idBd:_,clefTableau:BLOCKED_RELEASES_TABLE_KEY,vals:{[BLOCKED_RELEASES_RELEASE_ID_COLUMN]:r}}))[0]}async unblockRelease({id:r}){const{modDbId:_}=await this.orbiterConfig();await this.constellation.bds.effacerÉlémentDeTableauParClef({idBd:_,clefTableau:BLOCKED_RELEASES_TABLE_KEY,idÉlément:r})}async makeSitePrivate(){const{swarmId:r}=await this.orbiterConfig(),_=await this.constellation.nuées.obtGestionnaireAutorisationsDeNuée({idNuée:r});await this.constellation.nuées.changerPhisolophieAutorisation({idAutorisation:_,philosophie:"CJPI"})}async makeSitePublic(){const{swarmId:r}=await this.orbiterConfig(),_=await this.constellation.nuées.obtGestionnaireAutorisationsDeNuée({idNuée:r});await this.constellation.nuées.changerPhisolophieAutorisation({idAutorisation:_,philosophie:"IJPC"})}async inviteUser({userId:r}){const{swarmId:_}=await this.orbiterConfig();await this.constellation.nuées.accepterMembreNuée({idNuée:_,idCompte:r})}async blockUser({userId:r}){const{swarmId:_}=await this.orbiterConfig();await this.constellation.nuées.exclureMembreDeNuée({idNuée:_,idCompte:r})}async trustSite({siteId:r,siteName:_}){const{modDbId:S}=await this.orbiterConfig();return(await this.constellation.bds.ajouterÉlémentÀTableauParClef({idBd:S,clefTableau:TRUSTED_SITES_TABLE_KEY,vals:{[TRUSTED_SITES_SITE_ID_COL]:r,[TRUSTED_SITES_NAME_COL]:_}}))[0]}async editTrustedSite({elementId:r,site:_}){const{modDbId:S}=await this.orbiterConfig();await this.constellation.bds.modifierÉlémentDeTableauParClef({idBd:S,clefTableau:TRUSTED_SITES_TABLE_KEY,idÉlément:r,vals:_})}async untrustSite({elementId:r}){const{modDbId:_}=await this.orbiterConfig();await this.constellation.bds.effacerÉlémentDeTableauParClef({idBd:_,clefTableau:TRUSTED_SITES_TABLE_KEY,idÉlément:r})}}var define_import_meta_env_default={VITE_SITE_ID:"/orbitdb/zdpuAzXCgBVMkM2WcV3AyDWU7WJzdCgH8fFiHx8nyWE17VfSX",VITE_TRUSTED_SITES_SITE_ID_VAR_ID:"/orbitdb/zdpuAtvsAK6ihHUmw9rLG2YZQA8d42cZLpbJTmvs4PgWZNwAo",VITE_TRUSTED_SITES_NAME_VAR_ID:"/orbitdb/zdpuArAw23QtbkUwXmyFXvyiHNqmbR3EktGnGB5uhGX98EjTu",VITE_RELEASES_FILE_VAR_ID:"/orbitdb/zdpuAkgtpMwVQjN1ArWWLq8oqJbJS34fss6btmg1FqgjqE2A2",VITE_RELEASES_CATEGORY_VAR_ID:"/orbitdb/zdpuAwnKnScLQhutuGSuknzfcDriVwqzvbMGFvceB2JwWbB6U",VITE_RELEASES_AUTHOR_VAR_ID:"/orbitdb/zdpuAtgmz5RDYp4esiD58GGjDJQ5txosWhSdhd4vmm6qXdbdf",VITE_RELEASES_CONTENT_NAME_VAR_ID:"/orbitdb/zdpuAzvnBMVVNyizJNWPFMqgSXNMqeynQB9MZWRhXQVUtzguL",VITE_RELEASES_METADATA_VAR_ID:"/orbitdb/zdpuB1uAB9Aqo7YaUvE6sWbCe6LpACXrPwZS1P9JdfTvzZVET",VITE_RELEASES_THUMBNAIL_VAR_ID:"/orbitdb/zdpuAqCDweUem8NoabFojBsW3S9JLftXj3NonEsskAvV23Jqs",VITE_COLLECTIONS_AUTHOR_VAR_ID:"/orbitdb/zdpuAqZ5uKA4oJUSPE6kfSoYAiKhu9aYvtVMaf8Gd8onwNWuR",VITE_COLLECTIONS_METADATA_VAR_ID:"/orbitdb/zdpuAvjcpUQnu5pAaHbxBg2ubrSg1fsdteydqupVdM4L1x7oq",VITE_COLLECTIONS_NAME_VAR_ID:"/orbitdb/zdpuAtz3b8uUCNxYJtzJDhPm5VTvdaK2qM1WXXMUa6LudZLru",VITE_COLLECTIONS_RELEASES_VAR_ID:"/orbitdb/zdpuAkbDeVh7RamHNV5mr57z9qG8Kjatz3wYZWn2hmPexBCyW",VITE_COLLECTIONS_THUMBNAIL_VAR_ID:"/orbitdb/zdpuAsPhTDX5vjM83GRcLrq3gV7BeLxrg8LYNmQ1F6j5BxKsF",VITE_COLLECTIONS_CATEGORY_VAR_ID:"/orbitdb/zdpuAu6nb7VSwwhPRNVMwvPmJPxe5E7nbMuoXC38TWdjWnvpF",VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID:"/orbitdb/zdpuB3bzESUQLmziMrphiVzCkyKFkNJ8bejXKD9HhUcT5QG7A",VITE_FEATURED_RELEASES_START_TIME_VAR_ID:"/orbitdb/zdpuAmzaq7BN2FUAPArPPka2jtQZhftzM3qBbreKMPqZW2r9e",VITE_FEATURED_RELEASES_END_TIME_VAR_ID:"/orbitdb/zdpuB27Y8FFZ57gSv7ysbL8EznqSKDHo5DZPP6auC8r16VmHg",VITE_APP_VERSION:"0.2.0",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const orbiter={install:n=>{const r=getVariableIds(),_=n.config.globalProperties.$constl,S=new Orbiter({constellation:_,siteId:r?"/orbitdb/zdpuAzXCgBVMkM2WcV3AyDWU7WJzdCgH8fFiHx8nyWE17VfSX":void 0,swarmId:r?define_import_meta_env_default.VITE_SWARM_ID:void 0,variableIds:r});n.config.globalProperties.$orbiter=S,define_import_meta_env_default.VITE_STUB_DATA&&loadStubData(S),n.provide("orbiter",S)}},getVariableIds=()=>{const{VITE_TRUSTED_SITES_SITE_ID_VAR_ID:n,VITE_TRUSTED_SITES_NAME_VAR_ID:r,VITE_RELEASES_FILE_VAR_ID:_,VITE_RELEASES_CATEGORY_VAR_ID:S,VITE_RELEASES_AUTHOR_VAR_ID:E,VITE_RELEASES_CONTENT_NAME_VAR_ID:x,VITE_RELEASES_METADATA_VAR_ID:T,VITE_RELEASES_THUMBNAIL_VAR_ID:C,VITE_RELEASES_STATUS_VAR_ID:I,VITE_COLLECTIONS_AUTHOR_VAR_ID:B,VITE_COLLECTIONS_METADATA_VAR_ID:A,VITE_COLLECTIONS_NAME_VAR_ID:D,VITE_COLLECTIONS_RELEASES_VAR_ID:N,VITE_COLLECTIONS_THUMBNAIL_VAR_ID:O,VITE_COLLECTIONS_CATEGORY_VAR_ID:M,VITE_COLLECTIONS_STATUS_VAR_ID:L,VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID:F,VITE_FEATURED_RELEASES_START_TIME_VAR_ID:U,VITE_FEATURED_RELEASES_END_TIME_VAR_ID:j}=define_import_meta_env_default;return{trustedSitesSiteIdVariableId:n,trustedSitesNameVariableId:r,releasesFileVar:_,releasesCategoryVar:S,releasesAuthorVar:E,releasesContentNameVar:x,releasesMetadataVar:T,releasesThumbnailVar:C,releasesStatusVar:I,collectionsAuthorVar:B,collectionsMetadataVar:A,collectionsNameVar:D,collectionsReleasesVar:N,collectionsThumbnailVar:O,collectionsCategoryVar:M,collectionsStatusVar:L,featuredReleasesReleaseIdVar:F,featuredReleasesStartTimeVar:U,featuredReleasesEndTimeVar:j}};function registerPlugins(n){loadFonts(),n.use(vuetify),n.use(orbiter)}function inscrireExtentions(n){n.use(constellationNavigateur),registerPlugins(n)}/*! +`),_),_.log('handle: responded with "na" for "%s"',E)}}const CLOSE_TIMEOUT=500;class ConnectionImpl{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;transient;log;tags;_newStream;_close;_abort;_getStreams;constructor(r){const{remoteAddr:_,remotePeer:S,newStream:E,close:x,abort:T,getStreams:C}=r;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=_,this.remotePeer=S,this.direction=r.direction,this.status="open",this.timeline=r.timeline,this.multiplexer=r.multiplexer,this.encryption=r.encryption,this.transient=r.transient??!1,this.log=r.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=E,this._close=x,this._abort=T,this._getStreams=C,this.tags=[]}[Symbol.toStringTag]="Connection";[connectionSymbol]=!0;get streams(){return this._getStreams()}async newStream(r,_){if(this.status==="closing")throw new CodeError$4("the connection is being closed","ERR_CONNECTION_BEING_CLOSED");if(this.status==="closed")throw new CodeError$4("the connection is closed","ERR_CONNECTION_CLOSED");if(Array.isArray(r)||(r=[r]),this.transient&&_?.runOnTransientConnection!==!0)throw new CodeError$4("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");const S=await this._newStream(r,_);return S.direction="outbound",S}async close(r={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",r.signal==null){const _=AbortSignal.timeout(CLOSE_TIMEOUT);setMaxListeners$1(1/0,_),r={...r,signal:_}}try{this.log.trace("closing all streams"),await Promise.all(this.streams.map(async _=>_.close(r))),this.log.trace("closing underlying transport"),await this._close(r),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(_){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,_),this.abort(_)}}}abort(r){this.log.error("aborting connection to %a due to error",this.remoteAddr,r),this.status="closing",this.streams.forEach(_=>{_.abort(r)}),this.log.error("all streams aborted",this.streams.length),this._abort(r),this.timeline.close=Date.now(),this.status="closed"}}function createConnection(n){return new ConnectionImpl(n)}const DEFAULT_PROTOCOL_SELECT_TIMEOUT=3e4;function findIncomingStreamLimit(n,r){try{const{options:_}=r.getHandler(n);return _.maxInboundStreams}catch(_){if(_.code!==codes.ERR_NO_HANDLER_FOR_PROTOCOL)throw _}return DEFAULT_MAX_INBOUND_STREAMS}function findOutgoingStreamLimit(n,r,_={}){try{const{options:S}=r.getHandler(n);if(S.maxOutboundStreams!=null)return S.maxOutboundStreams}catch(S){if(S.code!==codes.ERR_NO_HANDLER_FOR_PROTOCOL)throw S}return _.maxOutboundStreams??DEFAULT_MAX_OUTBOUND_STREAMS}function countStreams(n,r,_){let S=0;return _.streams.forEach(E=>{E.direction===r&&E.protocol===n&&S++}),S}class DefaultUpgrader{components;connectionEncryption;muxers;inboundUpgradeTimeout;events;constructor(r,_){this.components=r,this.connectionEncryption=new Map,_.connectionEncryption.forEach(S=>{this.connectionEncryption.set(S.protocol,S)}),this.muxers=new Map,_.muxers.forEach(S=>{this.muxers.set(S.protocol,S)}),this.inboundUpgradeTimeout=_.inboundUpgradeTimeout??INBOUND_UPGRADE_TIMEOUT,this.events=r.events}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(r,_,S){const E=this.components.connectionGater[S];if(E!==void 0&&await E(r,_))throw new CodeError$4(`The multiaddr connection is blocked by gater.${S}`,codes.ERR_CONNECTION_INTERCEPTED)}async upgradeInbound(r,_){if(!await this.components.connectionManager.acceptIncomingConnection(r))throw new CodeError$4("connection denied",codes.ERR_CONNECTION_DENIED);let E,x,T,C,I;const B=AbortSignal.timeout(this.inboundUpgradeTimeout),A=()=>{r.abort(new CodeError$4("inbound upgrade timeout",ERR_TIMEOUT))};B.addEventListener("abort",A,{once:!0}),setMaxListeners$1(1/0,B);try{if(await this.components.connectionGater.denyInboundConnection?.(r)===!0)throw new CodeError$4("The multiaddr connection is blocked by gater.acceptConnection",codes.ERR_CONNECTION_INTERCEPTED);this.components.metrics?.trackMultiaddrConnection(r),r.log("starting the inbound connection upgrade");let D=r;if(_?.skipProtection!==!0){const N=this.components.connectionProtector;N!=null&&(r.log("protecting the inbound connection"),D=await N.protect(r))}try{if(E=D,_?.skipEncryption!==!0){_?.onProgress?.(new CustomProgressEvent("upgrader:encrypt-inbound-connection")),{conn:E,remotePeer:x,protocol:I}=await this._encryptInbound(D);const N={...D,...E};await this.shouldBlockConnection(x,N,"denyInboundEncryptedConnection")}else{const N=r.remoteAddr.getPeerId();if(N==null)throw new CodeError$4("inbound connection that skipped encryption must have a peer id",codes.ERR_INVALID_MULTIADDR);const O=peerIdFromString$2(N);I="native",x=O}if(T=E,_?.muxerFactory!=null)C=_.muxerFactory;else if(this.muxers.size>0){_?.onProgress?.(new CustomProgressEvent("upgrader:multiplex-inbound-connection"));const N=await this._multiplexInbound({...D,...E},this.muxers);C=N.muxerFactory,T=N.stream}}catch(N){throw r.log.error("failed to upgrade inbound connection",N),N}return await this.shouldBlockConnection(x,r,"denyInboundUpgradedConnection"),r.log("successfully upgraded inbound connection"),this._createConnection({cryptoProtocol:I,direction:"inbound",maConn:r,upgradedConn:T,muxerFactory:C,remotePeer:x,transient:_?.transient})}finally{B.removeEventListener("abort",A),this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(r,_){const S=r.remoteAddr.getPeerId();let E;S!=null&&(E=peerIdFromString$2(S),await this.shouldBlockConnection(E,r,"denyOutboundConnection"));let x,T,C,I,B;this.components.metrics?.trackMultiaddrConnection(r),r.log("starting the outbound connection upgrade");let A=r;if(_?.skipProtection!==!0){const D=this.components.connectionProtector;D!=null&&(A=await D.protect(r))}try{if(x=A,_?.skipEncryption!==!0){({conn:x,remotePeer:T,protocol:I}=await this._encryptOutbound(A,E));const D={...A,...x};await this.shouldBlockConnection(T,D,"denyOutboundEncryptedConnection")}else{if(E==null)throw new CodeError$4("Encryption was skipped but no peer id was passed",codes.ERR_INVALID_PEER);I="native",T=E}if(C=x,_?.muxerFactory!=null)B=_.muxerFactory;else if(this.muxers.size>0){const D=await this._multiplexOutbound({...A,...x},this.muxers);B=D.muxerFactory,C=D.stream}}catch(D){throw r.log.error("failed to upgrade outbound connection",D),await r.close(D),D}return await this.shouldBlockConnection(T,r,"denyOutboundUpgradedConnection"),r.log("successfully upgraded outbound connection"),this._createConnection({cryptoProtocol:I,direction:"outbound",maConn:r,upgradedConn:C,muxerFactory:B,remotePeer:T,transient:_?.transient})}_createConnection(r){const{cryptoProtocol:_,direction:S,maConn:E,upgradedConn:x,remotePeer:T,muxerFactory:C,transient:I}=r;let B,A,D;C!=null&&(B=C.createStreamMuxer({direction:S,onIncomingStream:M=>{D!=null&&Promise.resolve().then(async()=>{const L=this.components.registrar.getProtocols(),{stream:F,protocol:U}=await handle(M,L,{log:M.log,yieldBytes:!1});if(D==null)return;D.log("incoming stream opened on %s",U);const j=findIncomingStreamLimit(U,this.components.registrar);if(countStreams(U,"inbound",D)===j){const H=new CodeError$4(`Too many inbound protocol streams for protocol "${U}" - limit ${j}`,codes.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);throw M.abort(H),H}M.source=F.source,M.sink=F.sink,M.protocol=U,F.closeWrite!=null&&(M.closeWrite=F.closeWrite),F.closeRead!=null&&(M.closeRead=F.closeRead),F.close!=null&&(M.close=F.close),await this.components.peerStore.merge(T,{protocols:[U]}),this.components.metrics?.trackProtocolStream(M,D),this._onStream({connection:D,stream:M,protocol:U})}).catch(async L=>{D.log.error("error handling incoming stream id %s",M.id,L.message,L.code,L.stack),M.timeline.close==null&&await M.close()})}}),A=async(M,L={})=>{if(B==null)throw new CodeError$4("Stream is not multiplexed",codes.ERR_MUXER_UNAVAILABLE);D.log("starting new stream for protocols %s",M);const F=await B.newStream();D.log.trace("started new stream %s for protocols %s",F.id,M);try{if(L.signal==null){F.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",M);const Q=AbortSignal.timeout(DEFAULT_PROTOCOL_SELECT_TIMEOUT);setMaxListeners$1(1/0,Q),L={...L,signal:Q}}F.log.trace("selecting protocol from protocols %s",M);const{stream:U,protocol:j}=await select(F,M,{...L,log:F.log,yieldBytes:!0});F.log("selected protocol %s",j);const z=findOutgoingStreamLimit(j,this.components.registrar,L),H=countStreams(j,"outbound",D);if(H>=z){const Q=new CodeError$4(`Too many outbound protocol streams for protocol "${j}" - ${H}/${z}`,codes.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);throw F.abort(Q),Q}return await this.components.peerStore.merge(T,{protocols:[j]}),F.source=U.source,F.sink=U.sink,F.protocol=j,U.closeWrite!=null&&(F.closeWrite=U.closeWrite),U.closeRead!=null&&(F.closeRead=U.closeRead),U.close!=null&&(F.close=U.close),this.components.metrics?.trackProtocolStream(F,D),F}catch(U){throw D.log.error("could not create new stream for protocols %s",M,U),F.timeline.close==null&&F.abort(U),U.code!=null?U:new CodeError$4(String(U),codes.ERR_UNSUPPORTED_PROTOCOL)}},Promise.all([B.sink(x.source),x.sink(B.source)]).catch(M=>{D.log.error("error piping data through muxer",M)}));const N=E.timeline;E.timeline=new Proxy(N,{set:(...M)=>(D!=null&&M[1]==="close"&&M[2]!=null&&N.close==null&&(async()=>{try{D.status==="open"&&await D.close()}catch(L){D.log.error("error closing connection after timeline close",L)}finally{this.events.safeDispatchEvent("connection:close",{detail:D})}})().catch(L=>{D.log.error("error thrown while dispatching connection:close event",L)}),Reflect.set(...M))}),E.timeline.upgraded=Date.now();const O=()=>{throw new CodeError$4("connection is not multiplexed",codes.ERR_CONNECTION_NOT_MULTIPLEXED)};return D=createConnection({remoteAddr:E.remoteAddr,remotePeer:T,status:"open",direction:S,timeline:E.timeline,multiplexer:B?.protocol,encryption:_,transient:I,logger:this.components.logger,newStream:A??O,getStreams:()=>B!=null?B.streams:[],close:async M=>{B!=null&&(D.log.trace("close muxer"),await B.close(M)),D.log.trace("close maconn"),await E.close(M),D.log.trace("closed maconn")},abort:M=>{E.abort(M),B?.abort(M)}}),this.events.safeDispatchEvent("connection:open",{detail:D}),D}_onStream(r){const{connection:_,stream:S,protocol:E}=r,{handler:x,options:T}=this.components.registrar.getHandler(E);if(_.transient&&T.runOnTransientConnection!==!0)throw new CodeError$4("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");x({connection:_,stream:S})}async _encryptInbound(r){const _=Array.from(this.connectionEncryption.keys());r.log("handling inbound crypto protocol selection",_);try{const{stream:S,protocol:E}=await handle(r,_,{log:r.log}),x=this.connectionEncryption.get(E);if(x==null)throw new Error(`no crypto module found for ${E}`);return r.log("encrypting inbound connection using",E),{...await x.secureInbound(this.components.peerId,S),protocol:E}}catch(S){throw r.log.error("encrypting inbound connection failed",S),new CodeError$4(S.message,codes.ERR_ENCRYPTION_FAILED)}}async _encryptOutbound(r,_){const S=Array.from(this.connectionEncryption.keys());r.log("selecting outbound crypto protocol",S);try{r.log.trace("selecting encrypter from %s",S);const{stream:E,protocol:x}=await select(r,S,{log:r.log,yieldBytes:!0}),T=this.connectionEncryption.get(x);if(T==null)throw new Error(`no crypto module found for ${x}`);return r.log("encrypting outbound connection to %p using %s",_,T),{...await T.secureOutbound(this.components.peerId,E,_),protocol:x}}catch(E){throw r.log.error("encrypting outbound connection to %p failed",_,E),new CodeError$4(E.message,codes.ERR_ENCRYPTION_FAILED)}}async _multiplexOutbound(r,_){const S=Array.from(_.keys());r.log("outbound selecting muxer %s",S);try{r.log.trace("selecting stream muxer from %s",S);const{stream:E,protocol:x}=await select(r,S,{log:r.log,yieldBytes:!0});r.log("selected %s as muxer protocol",x);const T=_.get(x);return{stream:E,muxerFactory:T}}catch(E){throw r.log.error("error multiplexing outbound connection",E),new CodeError$4(String(E),codes.ERR_MUXER_UNAVAILABLE)}}async _multiplexInbound(r,_){const S=Array.from(_.keys());r.log("inbound handling muxers %s",S);try{const{stream:E,protocol:x}=await handle(r,S,{log:r.log}),T=_.get(x);return{stream:E,muxerFactory:T}}catch(E){throw r.log.error("error multiplexing inbound connection",E),new CodeError$4(String(E),codes.ERR_MUXER_UNAVAILABLE)}}}class Libp2pNode extends TypedEventEmitter{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(r){super(),this.status="stopped";const _=new TypedEventEmitter,S=_.dispatchEvent.bind(_);_.dispatchEvent=C=>{const I=S(C),B=this.dispatchEvent(new CustomEvent$1(C.type,{detail:C.detail}));return I||B},setMaxListeners$1(1/0,_),this.peerId=r.peerId,this.logger=r.logger??defaultLogger(),this.log=this.logger.forComponent("libp2p"),this.services={};const E=this.components=defaultComponents({peerId:r.peerId,privateKey:r.privateKey,nodeInfo:r.nodeInfo??{name:name$1,version:version$2},logger:this.logger,events:_,datastore:r.datastore??new MemoryDatastore,connectionGater:connectionGater(r.connectionGater),dns:r.dns});this.peerStore=this.configureComponent("peerStore",new PersistentPeerStore(E,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...r.peerStore})),r.metrics!=null&&(this.metrics=this.configureComponent("metrics",r.metrics(this.components))),E.events.addEventListener("peer:update",C=>{if(C.detail.previous==null){const I={id:C.detail.peer.id,multiaddrs:C.detail.peer.addresses.map(B=>B.multiaddr)};E.events.safeDispatchEvent("peer:discovery",{detail:I})}}),r.connectionProtector!=null&&this.configureComponent("connectionProtector",r.connectionProtector(E)),this.components.upgrader=new DefaultUpgrader(this.components,{connectionEncryption:(r.connectionEncryption??[]).map((C,I)=>this.configureComponent(`connection-encryption-${I}`,C(this.components))),muxers:(r.streamMuxers??[]).map((C,I)=>this.configureComponent(`stream-muxers-${I}`,C(this.components))),inboundUpgradeTimeout:r.connectionManager?.inboundUpgradeTimeout}),this.configureComponent("transportManager",new DefaultTransportManager(this.components,r.transportManager)),this.configureComponent("connectionManager",new DefaultConnectionManager(this.components,r.connectionManager)),r.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new ConnectionMonitor(this.components,r.connectionMonitor)),this.configureComponent("registrar",new DefaultRegistrar(this.components)),this.configureComponent("addressManager",new DefaultAddressManager(this.components,r.addresses));const x=(r.peerRouters??[]).map((C,I)=>this.configureComponent(`peer-router-${I}`,C(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new DefaultPeerRouting(this.components,{routers:x}));const T=(r.contentRouters??[]).map((C,I)=>this.configureComponent(`content-router-${I}`,C(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new CompoundContentRouting(this.components,{routers:T})),this.configureComponent("randomWalk",new RandomWalk(this.components)),(r.peerDiscovery??[]).forEach((C,I)=>{this.configureComponent(`peer-discovery-${I}`,C(this.components)).addEventListener("peer",A=>{this.#e(A)})}),r.transports?.forEach((C,I)=>{this.components.transportManager.add(this.configureComponent(`transport-${I}`,C(this.components)))}),r.services!=null)for(const C of Object.keys(r.services)){const I=r.services[C],B=I(this.components);if(B==null){this.log.error("service factory %s returned null or undefined instance",C);continue}this.services[C]=B,this.configureComponent(C,B),B[contentRoutingSymbol]!=null&&(this.log("registering service %s for content routing",C),T.push(B[contentRoutingSymbol])),B[peerRoutingSymbol]!=null&&(this.log("registering service %s for peer routing",C),x.push(B[peerRoutingSymbol])),B[peerDiscoverySymbol]!=null&&(this.log("registering service %s for peer discovery",C),B[peerDiscoverySymbol].addEventListener?.("peer",A=>{this.#e(A)}))}checkServiceDependencies(E)}configureComponent(r,_){return _==null&&this.log.error("component %s was null or undefined",r),this.components[r]=_,_}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started")}catch(r){throw this.log.error("An error occurred starting libp2p",r),this.status="started",await this.stop(),r}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(r){return this.components.connectionManager.getConnections(r)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){const r=new PeerSet;for(const _ of this.components.connectionManager.getConnections())r.add(_.remotePeer);return Array.from(r)}async dial(r,_={}){return this.components.connectionManager.openConnection(r,{priority:75,..._})}async dialProtocol(r,_,S={}){if(_==null)throw new CodeError$4("no protocols were provided to open a stream",codes.ERR_INVALID_PROTOCOLS_FOR_STREAM);if(_=Array.isArray(_)?_:[_],_.length===0)throw new CodeError$4("no protocols were provided to open a stream",codes.ERR_INVALID_PROTOCOLS_FOR_STREAM);return(await this.dial(r,S)).newStream(_,S)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(r,_={}){isMultiaddr(r)&&(r=peerIdFromString$2(r.getPeerId()??"")),await this.components.connectionManager.closeConnections(r,_)}async getPublicKey(r,_={}){if(this.log("getPublicKey %p",r),r.publicKey!=null)return r.publicKey;try{const x=await this.peerStore.get(r);if(x.id.publicKey!=null)return x.id.publicKey}catch(x){if(x.code!==codes.ERR_NOT_FOUND)throw x}const S=concat$3([fromString$6("/pk/"),r.multihash.digest]),E=await this.contentRouting.get(S,_);return unmarshalPublicKey$2(E),await this.peerStore.patch(r,{publicKey:E}),E}async handle(r,_,S){Array.isArray(r)||(r=[r]),await Promise.all(r.map(async E=>{await this.components.registrar.handle(E,_,S)}))}async unhandle(r){Array.isArray(r)||(r=[r]),await Promise.all(r.map(async _=>{await this.components.registrar.unhandle(_)}))}async register(r,_){return this.components.registrar.register(r,_)}unregister(r){this.components.registrar.unregister(r)}async isDialable(r,_={}){return this.components.connectionManager.isDialable(r,_)}#e(r){const{detail:_}=r;if(_.id.toString()===this.peerId.toString()){this.log.error(new Error(codes.ERR_DISCOVERED_SELF));return}this.components.peerStore.merge(_.id,{multiaddrs:_.multiaddrs}).catch(S=>{this.log.error(S)})}}async function createLibp2pNode(n={}){const r=n.peerId??=await createEd25519PeerId();if(r.privateKey==null)throw new CodeError$4("peer id was missing private key","ERR_MISSING_PRIVATE_KEY");return n.privateKey??=await unmarshalPrivateKey$3(r.privateKey),new Libp2pNode(await validateConfig(n))}async function createLibp2p$1(n={}){const r=await createLibp2pNode(n);return n.start!==!1&&await r.start(),r}async function createLibp2p(n){let r=n.libp2p?.peerId;const _=n.logger??defaultLogger();if(r==null){const E=keychain(n.keychain)({datastore:n.datastore,logger:_}),x=new Key("/pkcs8/self");await n.datastore.has(x)&&(r=await E.exportPeerId("self"))}const S=libp2pDefaults(n);return n=n??{},createLibp2p$1({...S,...n.libp2p,start:!1})}async function createHelia(n={}){const r=n.datastore??new MemoryDatastore,_=n.blockstore??new MemoryBlockstore;let S;isLibp2p(n.libp2p)?S=n.libp2p:S=await createLibp2p({...n,libp2p:n.libp2p,datastore:r});const E=new HeliaImpl({...n,libp2p:S,datastore:r,blockstore:_});return n.start!==!1&&await E.start(),E}function isLibp2p(n){return n==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(_=>typeof n[_]=="function")}class LevelBlockstore extends BaseBlockstore{db;opts;base;constructor(r,_={}){super(),this.db=typeof r=="string"?new Level(r,{..._,keyEncoding:"utf8",valueEncoding:"view"}):r,this.opts={createIfMissing:!0,compression:!1,..._},this.base=_.base??base32upper$4}#e(r){return`/${this.base.encoder.encode(r.multihash.bytes)}`}#t(r){return CID$9.createV1(code$c,decode$$(this.base.decoder.decode(r.substring(1))))}async open(){try{await this.db.open(this.opts)}catch(r){throw Errors.openFailedError(r)}}async put(r,_){try{return await this.db.put(this.#e(r),_),r}catch(S){throw Errors.putFailedError(S)}}async get(r){let _;try{_=await this.db.get(this.#e(r))}catch(S){throw S.notFound!=null?Errors.notFoundError(S):Errors.getFailedError(S)}return _}async has(r){try{await this.db.get(this.#e(r))}catch(_){if(_.notFound!=null)return!1;throw _}return!0}async delete(r){try{await this.db.del(this.#e(r))}catch(_){throw Errors.deleteFailedError(_)}}async close(){await this.db.close()}async*getAll(r){for await(const{key:_,value:S}of this.#r({values:!0}))yield{cid:this.#t(_),block:S}}async*#r(r){const _={keys:!0,keyEncoding:"buffer",values:r.values};if(r.prefix!=null){const E=r.prefix.toString();_.gte=E,_.lt=E+"ÿ"}const S=this.db.iterator(_);try{for await(const[E,x]of S)yield{key:new TextDecoder().decode(E),value:x}}finally{await S.close()}}}const IDENTIFY_PROTOCOL_VERSION="0.1.0",MULTICODEC_IDENTIFY_PROTOCOL_NAME="id",MULTICODEC_IDENTIFY_PROTOCOL_VERSION="1.0.0",MAX_IDENTIFY_MESSAGE_SIZE=1024*8,MAX_PUSH_CONCURRENCY=32;var Identify$1;(function(n){let r;n.codec=()=>(r==null&&(r=message((_,S,E={})=>{if(E.lengthDelimited!==!1&&S.fork(),_.protocolVersion!=null&&(S.uint32(42),S.string(_.protocolVersion)),_.agentVersion!=null&&(S.uint32(50),S.string(_.agentVersion)),_.publicKey!=null&&(S.uint32(10),S.bytes(_.publicKey)),_.listenAddrs!=null)for(const x of _.listenAddrs)S.uint32(18),S.bytes(x);if(_.observedAddr!=null&&(S.uint32(34),S.bytes(_.observedAddr)),_.protocols!=null)for(const x of _.protocols)S.uint32(26),S.string(x);_.signedPeerRecord!=null&&(S.uint32(66),S.bytes(_.signedPeerRecord)),E.lengthDelimited!==!1&&S.ldelim()},(_,S)=>{const E={listenAddrs:[],protocols:[]},x=S==null?_.len:_.pos+S;for(;_.pos>>3){case 5:E.protocolVersion=_.string();break;case 6:E.agentVersion=_.string();break;case 1:E.publicKey=_.bytes();break;case 2:E.listenAddrs.push(_.bytes());break;case 4:E.observedAddr=_.bytes();break;case 3:E.protocols.push(_.string());break;case 8:E.signedPeerRecord=_.bytes();break;default:_.skipType(T&7);break}}return E})),r),n.encode=_=>encodeMessage(_,n.codec()),n.decode=_=>decodeMessage$1(_,n.codec())})(Identify$1||(Identify$1={}));const defaultValues={protocolPrefix:"ipfs",timeout:5e3,maxInboundStreams:1,maxOutboundStreams:1,maxObservedAddresses:10,maxMessageSize:MAX_IDENTIFY_MESSAGE_SIZE,runOnConnectionOpen:!0,runOnSelfUpdate:!0,runOnTransientConnection:!0,concurrency:MAX_PUSH_CONCURRENCY};function getCleanMultiaddr(n){if(n!=null&&n.length>0)try{return multiaddr(n)}catch{}}function getAgentVersion(n,r){return r!=null||(r=`${n.name}/${n.version}`,isNode||isElectronMain?r+=` UserAgent=${globalThis.process.version}`:(isBrowser$1||isWebWorker||isElectronRenderer||isReactNative)&&(r+=` UserAgent=${globalThis.navigator.userAgent}`)),r}async function consumeIdentifyMessage(n,r,_,S,E){if(_("received identify from %p",S.remotePeer),E==null)throw new CodeError$4("message was null or undefined","ERR_INVALID_MESSAGE");const x={};if(E.listenAddrs.length>0&&(x.addresses=E.listenAddrs.map(I=>({isCertified:!1,multiaddr:multiaddr(I)}))),E.protocols.length>0&&(x.protocols=E.protocols),E.publicKey!=null&&(x.publicKey=E.publicKey,!(await peerIdFromKeys$1(E.publicKey)).equals(S.remotePeer)))throw new CodeError$4("public key did not match remote PeerId","ERR_INVALID_PUBLIC_KEY");let T;if(E.signedPeerRecord!=null){_("received signedPeerRecord from %p",S.remotePeer);let I=E.signedPeerRecord;const B=await RecordEnvelope.openAndCertify(I,PeerRecord.DOMAIN);let A=PeerRecord.createFromProtobuf(B.payload);if(!A.peerId.equals(B.peerId))throw new CodeError$4("signing key does not match PeerId in the PeerRecord","ERR_INVALID_SIGNING_KEY");if(!S.remotePeer.equals(A.peerId))throw new CodeError$4("signing key does not match remote PeerId","ERR_INVALID_PEER_RECORD_KEY");let D;try{D=await n.get(A.peerId)}catch(N){if(N.code!=="ERR_NOT_FOUND")throw N}if(D!=null&&(x.metadata=D.metadata,D.peerRecordEnvelope!=null)){const N=await RecordEnvelope.createFromProtobuf(D.peerRecordEnvelope),O=PeerRecord.createFromProtobuf(N.payload);O.seqNumber>=A.seqNumber&&(_("sequence number was lower or equal to existing sequence number - stored: %d received: %d",O.seqNumber,A.seqNumber),A=O,I=D.peerRecordEnvelope)}x.peerRecordEnvelope=I,x.addresses=A.multiaddrs.map(N=>({isCertified:!0,multiaddr:N})),T={seq:A.seqNumber,addresses:A.multiaddrs}}else _("%p did not send a signed peer record",S.remotePeer);if(_("patching %p with",S.remotePeer,x),await n.patch(S.remotePeer,x),E.agentVersion!=null||E.protocolVersion!=null){const I={};E.agentVersion!=null&&(I.AgentVersion=fromString$6(E.agentVersion)),E.protocolVersion!=null&&(I.ProtocolVersion=fromString$6(E.protocolVersion)),_("merging %p metadata",S.remotePeer,I),await n.merge(S.remotePeer,{metadata:I})}const C={peerId:S.remotePeer,protocolVersion:E.protocolVersion,agentVersion:E.agentVersion,publicKey:E.publicKey,listenAddrs:E.listenAddrs.map(I=>multiaddr(I)),observedAddr:E.observedAddr==null?void 0:multiaddr(E.observedAddr),protocols:E.protocols,signedPeerRecord:T,connection:S};return r.safeDispatchEvent("peer:identify",{detail:C}),C}class AbstractIdentify{host;protocol;started;timeout;peerId;peerStore;registrar;addressManager;maxInboundStreams;maxOutboundStreams;maxMessageSize;maxObservedAddresses;events;runOnTransientConnection;log;constructor(r,_){this.protocol=_.protocol,this.started=!1,this.peerId=r.peerId,this.peerStore=r.peerStore,this.registrar=r.registrar,this.addressManager=r.addressManager,this.events=r.events,this.log=_.log,this.timeout=_.timeout??defaultValues.timeout,this.maxInboundStreams=_.maxInboundStreams??defaultValues.maxInboundStreams,this.maxOutboundStreams=_.maxOutboundStreams??defaultValues.maxOutboundStreams,this.maxMessageSize=_.maxMessageSize??defaultValues.maxMessageSize,this.maxObservedAddresses=_.maxObservedAddresses??defaultValues.maxObservedAddresses,this.runOnTransientConnection=_.runOnTransientConnection??defaultValues.runOnTransientConnection,this.host={protocolVersion:`${_.protocolPrefix??defaultValues.protocolPrefix}/${IDENTIFY_PROTOCOL_VERSION}`,agentVersion:getAgentVersion(r.nodeInfo,_.agentVersion)}}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:fromString$6(this.host.agentVersion),ProtocolVersion:fromString$6(this.host.protocolVersion)}}),await this.registrar.handle(this.protocol,r=>{this.handleProtocol(r).catch(_=>{this.log.error(_)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.protocol),this.started=!1}}class Identify extends AbstractIdentify{constructor(r,_={}){super(r,{..._,protocol:`/${_.protocolPrefix??defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PROTOCOL_VERSION}`,log:r.logger.forComponent("libp2p:identify")}),(_.runOnConnectionOpen??defaultValues.runOnConnectionOpen)&&r.events.addEventListener("connection:open",S=>{const E=S.detail;this.identify(E).catch(x=>{this.log.error("error during identify trigged by connection:open",x)})})}[serviceCapabilities]=["@libp2p/identify"];async _identify(r,_={}){let S;if(_.signal==null){const E=AbortSignal.timeout(this.timeout);setMaxListeners$1(1/0,E),_={..._,signal:E}}try{S=await r.newStream(this.protocol,{..._,runOnTransientConnection:this.runOnTransientConnection});const x=await pbStream(S,{maxDataLength:this.maxMessageSize}).pb(Identify$1).read(_);return await S.close(_),x}catch(E){throw this.log.error("error while reading identify message",E),S?.abort(E),E}}async identify(r,_={}){const S=await this._identify(r,_),{publicKey:E,protocols:x,observedAddr:T}=S;if(E==null)throw new CodeError$4("public key was missing from identify message","ERR_MISSING_PUBLIC_KEY");const C=await peerIdFromKeys$1(E);if(!r.remotePeer.equals(C))throw new CodeError$4("identified peer does not match the expected peer","ERR_INVALID_PEER");if(this.peerId.equals(C))throw new CodeError$4("identified peer is our own peer id?","ERR_INVALID_PEER");const I=getCleanMultiaddr(T);return this.log("identify completed for peer %p and protocols %o",C,x),this.log("our observed address is %a",I),I!=null&&this.addressManager.getObservedAddrs().length<(this.maxObservedAddresses??1/0)&&(this.log("storing our observed address %a",I),this.addressManager.addObservedAddr(I)),consumeIdentifyMessage(this.peerStore,this.events,this.log,r,S)}async handleProtocol(r){const{connection:_,stream:S}=r,E=AbortSignal.timeout(this.timeout);setMaxListeners$1(1/0,E);try{const x=this.peerId.publicKey??new Uint8Array(0),T=await this.peerStore.get(this.peerId),C=this.addressManager.getAddresses().map(D=>D.decapsulateCode(getProtocol("p2p").code));let I=T.peerRecordEnvelope;if(C.length>0&&I==null){const D=new PeerRecord({peerId:this.peerId,multiaddrs:C});I=(await RecordEnvelope.seal(D,this.peerId)).marshal().subarray()}let B=_.remoteAddr.bytes;IP_OR_DOMAIN.matches(_.remoteAddr)||(B=void 0),await pbStream(S).pb(Identify$1).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:x,listenAddrs:C.map(D=>D.bytes),signedPeerRecord:I,observedAddr:B,protocols:T.protocols},{signal:E}),await S.close({signal:E})}catch(x){this.log.error("could not respond to identify request",x),S.abort(x)}}}function identify(n={}){return r=>new Identify(r,n)}var Peer;(function(n){let r;n.codec=()=>(r==null&&(r=message((_,S,E={})=>{if(E.lengthDelimited!==!1&&S.fork(),_.publicKey!=null&&_.publicKey.byteLength>0&&(S.uint32(10),S.bytes(_.publicKey)),_.addrs!=null)for(const x of _.addrs)S.uint32(18),S.bytes(x);E.lengthDelimited!==!1&&S.ldelim()},(_,S)=>{const E={publicKey:alloc$1(0),addrs:[]},x=S==null?_.len:_.pos+S;for(;_.pos>>3){case 1:{E.publicKey=_.bytes();break}case 2:{E.addrs.push(_.bytes());break}default:{_.skipType(T&7);break}}}return E})),r),n.encode=_=>encodeMessage(_,n.codec()),n.decode=_=>decodeMessage$1(_,n.codec())})(Peer||(Peer={}));const TOPIC="_peer-discovery._p2p._pubsub";class PubSubPeerDiscovery extends TypedEventEmitter{[peerDiscoverySymbol]=!0;[Symbol.toStringTag]="@libp2p/pubsub-peer-discovery";interval;listenOnly;topics;intervalId;components;log;constructor(r,_={}){super();const{interval:S,topics:E,listenOnly:x}=_;this.components=r,this.interval=S??1e4,this.listenOnly=x??!1,this.log=r.logger.forComponent("libp2p:discovery:pubsub"),Array.isArray(E)&&E.length>0?this.topics=E:this.topics=[TOPIC],this._onMessage=this._onMessage.bind(this)}isStarted(){return this.intervalId!=null}start(){}afterStart(){if(this.intervalId!=null)return;const r=this.components.pubsub;if(r==null)throw new Error("PubSub not configured");for(const _ of this.topics)r.subscribe(_),r.addEventListener("message",this._onMessage);this.listenOnly||(this._broadcast(),this.intervalId=setInterval(()=>{this._broadcast()},this.interval))}beforeStop(){const r=this.components.pubsub;if(r==null)throw new Error("PubSub not configured");for(const _ of this.topics)r.unsubscribe(_),r.removeEventListener("message",this._onMessage)}stop(){this.intervalId!=null&&(clearInterval(this.intervalId),this.intervalId=void 0)}_broadcast(){const r=this.components.peerId;if(r.publicKey==null)throw new Error("PeerId was missing public key");const _={publicKey:r.publicKey,addrs:this.components.addressManager.getAddresses().map(x=>x.bytes)},S=Peer.encode(_),E=this.components.pubsub;if(E==null)throw new Error("PubSub not configured");for(const x of this.topics){if(E.getSubscribers(x).length===0){this.log("skipping broadcasting our peer data on topic %s because there are no peers present",x);continue}this.log("broadcasting our peer data on topic %s",x),E.publish(x,S)}}_onMessage(r){if(!this.isStarted())return;const _=r.detail;if(!this.topics.includes(_.topic))return;const S=Peer.decode(_.data);peerIdFromKeys$1(S.publicKey).then(E=>{E.equals(this.components.peerId)||(this.log("discovered peer %p on %s",E,_.topic),this.safeDispatchEvent("peer",{detail:{id:E,multiaddrs:S.addrs.map(x=>multiaddr(x))}}))}).catch(E=>{this.log.error(E)})}}function pubsubPeerDiscovery(n={}){return r=>new PubSubPeerDiscovery(r,n)}const ADRESSES_NŒUDS_RELAI=["/ip4/164.90.222.145/udp/9090/webrtc-direct/certhash/uEiAJOkKT64u6jmXV5YxncCoER5WXSO2HYE23Xpap651xMw/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR","/ip4/164.90.222.145/udp/9091/quic-v1/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR","/ip4/164.90.222.145/tcp/9092/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR"],obtOptionsLibp2pNode=async()=>{const{tcp:n}=await __vitePreload(async()=>{const{tcp:_}=await import("@libp2p/tcp");return{tcp:_}},[],import.meta.url),{mdns:r}=await __vitePreload(async()=>{const{mdns:_}=await import("@libp2p/mdns");return{mdns:_}},[],import.meta.url);return{addresses:{listen:["/ip4/0.0.0.0/tcp/0/ws","/webrtc","/webtransport","/webrtc-direct"]},transports:[webSockets({filter:all}),webRTC({rtcConfiguration:{iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}]}}),webTransport(),webRTCDirect(),n(),circuitRelayTransport({discoverRelays:1})],connectionEncryption:[noise()],streamMuxers:[yamux()],connectionGater:{denyDialMultiaddr:()=>!1},peerDiscovery:[r(),bootstrap({list:ADRESSES_NŒUDS_RELAI,timeout:0}),pubsubPeerDiscovery({interval:1e3,topics:["constellation._peer-discovery._p2p._pubsub"],listenOnly:!1})],services:{identify:identify(),autoNAT:autoNAT(),dcutr:dcutr(),pubsub:gossipsub({allowPublishToZeroPeers:!0}),dht:kadDHT({clientMode:!1})}}},obtOptionsLibp2pÉlectionPrincipal=async()=>{const{tcp:n}=await __vitePreload(async()=>{const{tcp:_}=await import("@libp2p/tcp");return{tcp:_}},[],import.meta.url),{mdns:r}=await __vitePreload(async()=>{const{mdns:_}=await import("@libp2p/mdns");return{mdns:_}},[],import.meta.url);return{addresses:{listen:["/ip4/0.0.0.0/tcp/0/ws","/webrtc","/webtransport"]},transports:[webSockets({filter:all}),webRTC({rtcConfiguration:{iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}]}}),webTransport(),webRTCDirect(),n(),circuitRelayTransport({discoverRelays:1})],connectionEncryption:[noise()],streamMuxers:[yamux()],connectionGater:{denyDialMultiaddr:()=>!1},peerDiscovery:[r(),bootstrap({list:ADRESSES_NŒUDS_RELAI,timeout:0}),pubsubPeerDiscovery({interval:1e3,topics:["constellation._peer-discovery._p2p._pubsub"],listenOnly:!1})],services:{identify:identify(),autoNAT:autoNAT(),dcutr:dcutr(),pubsub:gossipsub({allowPublishToZeroPeers:!0}),dht:kadDHT({clientMode:!1})}}},obtOptionsLibp2pNavigateur=async()=>({addresses:{listen:["/webrtc","/webtransport"]},transports:[webSockets({filter:all}),webRTC({rtcConfiguration:{iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}]}}),webRTCDirect(),webTransport(),circuitRelayTransport({discoverRelays:1})],connectionEncryption:[noise()],streamMuxers:[yamux()],connectionGater:{denyDialMultiaddr:()=>!1},peerDiscovery:[bootstrap({list:ADRESSES_NŒUDS_RELAI,timeout:0}),pubsubPeerDiscovery({interval:1e3,topics:["constellation._peer-discovery._p2p._pubsub"],listenOnly:!1})],services:{identify:identify(),autoNAT:autoNAT(),dcutr:dcutr(),pubsub:gossipsub({allowPublishToZeroPeers:!0}),dht:kadDHT({clientMode:!0})}}),obtOptionsLibp2pTravailleurWeb=async()=>({addresses:{listen:["/webrtc"]},transports:[webSockets({filter:all}),webTransport(),circuitRelayTransport({discoverRelays:1})],connectionEncryption:[noise()],streamMuxers:[yamux()],connectionGater:{denyDialMultiaddr:()=>!1},peerDiscovery:[bootstrap({list:ADRESSES_NŒUDS_RELAI,timeout:0})],services:{identify:identify(),pubsub:gossipsub({allowPublishToZeroPeers:!0})}}),obtConfigLibp2pPlateforme=async()=>{let n;return isBrowser$1||isElectronRenderer?n=await obtOptionsLibp2pNavigateur():isWebWorker?n=await obtOptionsLibp2pTravailleurWeb():isElectronMain?n=await obtOptionsLibp2pÉlectionPrincipal():isNode?n=await obtOptionsLibp2pNode():(console.warn("Plateforme non reconnue. On utilisera la configuration navigateur."),n=await obtOptionsLibp2pNavigateur()),n};async function initSFIP({dossier:n,configLibp2p:r={}}){const _=await obtConfigLibp2pPlateforme(),S=await createLibp2p$1(mergeOptions$a(r,{..._})),x={blockstore:new LevelBlockstore(`${n}/blocks`),libp2p:S,blockBrokers:[bitswap()]};return createHelia({...x})}const index=Object.freeze(Object.defineProperty({__proto__:null,initSFIP},Symbol.toStringTag,{value:"Module"})),estOrbiteDB=n=>{if(!n)return!1;const r=n;return r.id&&typeof r.open=="function"&&typeof r.stop=="function"&&r.ipfs},schémaStructureBdCompte={type:"object",properties:{protocoles:{type:"string",nullable:!0},profil:{type:"string",nullable:!0},motsClefs:{type:"string",nullable:!0},variables:{type:"string",nullable:!0},bds:{type:"string",nullable:!0},projets:{type:"string",nullable:!0},nuées:{type:"string",nullable:!0},favoris:{type:"string",nullable:!0},réseau:{type:"string",nullable:!0},automatisations:{type:"string",nullable:!0}},required:[]},schémaStructureNomsDispositifs={type:"object",additionalProperties:{type:"object",properties:{nom:{type:"string",nullable:!0},type:{type:"string",nullable:!0}}},required:[]},DÉLAI_EXPIRATION_INVITATIONS=1e3*60*5,obtDossierConstellation=async n=>{if(n.dossier&&n.dossier!=="dév"){if(isNode||isElectronMain){const r=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url);r.existsSync(n.dossier)||r.mkdirSync(n.dossier,{recursive:!0})}return n.dossier}if(isNode||isElectronMain){const r=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url),_=(await __vitePreload(async()=>{const{default:x}=await import("env-paths");return{default:x}},[],import.meta.url)).default,S=_("constl",{suffix:""}),E=await join(S.data,n.dossier==="dév"?"constl-dév":"constl");return r.existsSync(E)||r.mkdirSync(E,{recursive:!0}),E}else return"./constl"},join=async(...n)=>{if(isNode||isElectronMain){const{join:r}=await __vitePreload(async()=>{const{join:_}=await Promise.resolve().then(()=>index$2);return{join:_}},void 0,import.meta.url);return r(...n)}else return n.join("/")};class Constellation{_opts;événements;orbite;sfip;épingles;profil;bds;tableaux;variables;réseau;favoris;projets;recherche;motsClefs;automatisations;nuées;licences;protocoles;_orbiteExterne;_sfipExterne;idCompte;encryption;sujet_réseau;motsDePasseRejoindreCompte;ennikkai;verrouObtIdBd;_intervaleVerrou;constructor(r={}){this._opts=r,this.événements=new eventsExports.EventEmitter,this.sujet_réseau=r.sujetRéseau||"réseau-constellation",this.motsDePasseRejoindreCompte={},this.verrouObtIdBd=new s$2,this._orbiteExterne=this._sfipExterne=!1,this.encryption=new EncryptionLocalFirst,this.ennikkai=new எண்ணிக்கை({}),this.épingles=new Épingles({client:this}),this.profil=new Profil({client:this}),this.motsClefs=new MotsClefs({client:this}),this.tableaux=new Tableaux({client:this}),this.variables=new Variables({client:this}),this.bds=new BDs({client:this}),this.projets=new Projets({client:this}),this.nuées=new Nuées({client:this}),this.favoris=new Favoris({client:this}),this.automatisations=new Automatisations({client:this}),this.recherche=new Recherche({client:this}),this.licences=new Licences({client:this}),this.réseau=new Réseau({client:this}),this.protocoles=new Protocoles({client:this}),this._initialiser()}async dossier(){return await obtDossierConstellation(this._opts)}async _initialiser(){await this.verrouillerDossier({message:this._opts.messageVerrou});const{sfip:r,orbite:_}=await this._générerSFIPetOrbite();this.sfip=r,this.orbite=gestionnaireOrbiteGénéral.obtGestionnaireOrbite({orbite:_}),this.événements.emit("sfipEtOrbitePrêts",{sfip:r,orbite:this.orbite});const S={type:nomType,write:this.orbite.identity.id,nom:"racine"};this.idCompte=await this.obtDeStockageLocal({clef:"idCompte",parCompte:!1})||void 0,this.idCompte||(this.idCompte=await this.créerBdIndépendante({type:"keyvalue",optionsAccès:S,nom:"racine"}),await this.nommerDispositif({type:this.détecterTypeDispositif()}),await this.sauvegarderAuStockageLocal({clef:"idCompte",val:this.idCompte,parCompte:!1})),await this.réseau.initialiser(),await this.protocoles.établirProtocoles({protocoles:this._opts.protocoles}),await this.épingler(),this.événements.emit("comptePrêt",{idCompte:this.idCompte})}détecterTypeDispositif(){if(isElectronMain)return"ordinateur";if(isNode)return"serveur";if(isBrowser$1)return["Pad","Kindle","Nexus","Nook","PlayBook"].find(r=>plateforme.product?.includes(r))?"tablette":plateforme.name?.includes("Mobile")||["Phone","Android","iOS"].find(r=>plateforme.os?.family?.includes(r))?"téléphone":"navigateur"}async attendreSfipEtOrbite(){return this.sfip&&this.orbite?{sfip:this.sfip,orbite:this.orbite}:new Promise(r=>{this.événements.once("sfipEtOrbitePrêts",r)})}async attendreInitialisée(){return this.idCompte?{idCompte:this.idCompte}:new Promise(r=>{this.événements.once("comptePrêt",r)})}async verrouillerDossier({message:r}){if(isElectronMain||isNode){const S=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url),E=await join(await this.dossier(),"VERROU"),x=new Date;if(!S.existsSync(E))S.writeFileSync(E,r||"");else{const C=S.statSync(E).mtime,I=()=>{if(x.getTime()-C.getTime()>5e3)S.writeFileSync(E,r||"");else{const B=new TextDecoder().decode(S.readFileSync(E));try{const D=JSON.parse(B);if(D.port){const N=new Error(`Ce compte est déjà ouvert en Constellation, et le serveur local est disponible sur le port ${D.port}. Vous pouvez soit vous connecter sur ce port, soit fermer les instances de Constellation qui ouvertes et puis vous ressayer.`);throw N.name=ERREUR_INIT_IPA_DÉJÀ_LANCÉ,N}}catch{}const A=new Error("Constellation est déjà lancée.");throw A.name=ERREUR_INIT_IPA_DÉJÀ_LANCÉ,A}};try{I()}catch{await new Promise(B=>setTimeout(B,5e3)),I()}}this._intervaleVerrou=setInterval(()=>{try{S.utimesSync(E,x,x)}catch{}},5e3)}}async effacerVerrou(){(isElectronMain||isNode)&&(this._intervaleVerrou&&clearInterval(this._intervaleVerrou),(await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url)).rmSync(await join(await this.dossier(),"VERROU")))}async _générerSFIPetOrbite(){const r=await this.dossier(),{orbite:_}=this._opts;let S,E;if(_)if(estOrbiteDB(_))this._sfipExterne=this._orbiteExterne=!0,S=_.ipfs,E=_;else{const{initOrbite:x}=await __vitePreload(async()=>{const{initOrbite:T}=await Promise.resolve().then(()=>orbite);return{initOrbite:T}},void 0,import.meta.url);_.ipfs?(this._sfipExterne=!0,S=_.ipfs):S=await initSFIP({dossier:await join(r,"sfip")}),E=await x({sfip:S,dossierOrbite:_.directory||await join(r,"orbite")}),S=E.ipfs}else{const{initSFIP:x}=await __vitePreload(async()=>{const{initSFIP:C}=await Promise.resolve().then(()=>index);return{initSFIP:C}},void 0,import.meta.url);S=await x({dossier:await join(await this.dossier(),"sfip")});const{initOrbite:T}=await __vitePreload(async()=>{const{initOrbite:C}=await Promise.resolve().then(()=>orbite);return{initOrbite:C}},void 0,import.meta.url);E=await T({sfip:S,dossierOrbite:await join(await this.dossier(),"orbite")})}return{sfip:S,orbite:E}}async obtOptionsAccès(){return{write:await this.obtIdCompte()}}async épingler(){await this.épingles.épinglerBd({id:await this.obtIdCompte()}),await Promise.all([this.profil,this.automatisations,this.bds,this.variables,this.projets,this.nuées,this.motsClefs,this.réseau,this.favoris].map(async r=>r&&await r.épingler()))}async ouvrirBd({id:r,type:_,options:S}){const{orbite:E}=await this.attendreSfipEtOrbite();return await E.ouvrirBd({id:r,type:_,options:S})}async ouvrirBdTypée({id:r,type:_,schéma:S,options:E}){const{orbite:x}=await this.attendreSfipEtOrbite();return await x.ouvrirBdTypée({id:r,type:_,schéma:S,options:E})}async signer({message:r}){const{orbite:_}=await this.attendreSfipEtOrbite(),S=_.identity,E=await _.identity.sign(S,r),x=_.identity.publicKey;return{signature:E,clefPublique:x}}async vérifierSignature({signature:r,message:_}){if(!r||!r.clefPublique||!r.signature)return!1;const{orbite:S}=await this.attendreSfipEtOrbite();return await S.identity.verify(r.signature,r.clefPublique,_)}async suivreDispositifs({f:r,idCompte:_}){const S=async({id:E})=>{const{orbite:x}=await this.attendreSfipEtOrbite(),{bd:T,fOublier:C}=await x.ouvrirBdTypée({id:E,type:"keyvalue",schéma:schémaStructureBdCompte}),I=T.access,B=I.type;if(B==="ipfs")return await r(I.write),await C(),faisRien;if(B==="contrôleur-constellation"){const A=I,D=async()=>{const N=A.gestRôles._rôles[MODÉRATEUR];await r(N)};return A.gestRôles.on("misÀJour",D),D(),async()=>{A.gestRôles.off("misÀJour",D),await C()}}else return await C(),faisRien};return await suivreBdDeFonction({fRacine:async({fSuivreRacine:E})=>_?(await E(_),faisRien):await this.suivreIdCompte({f:E}),f:ignorerNonDéfinis(r),fSuivre:S})}async nommerDispositif({idDispositif:r,nom:_,type:S}){const E=r||await this.obtIdDispositif(),x=await this.obtIdBd({nom:"nomsDispositifs",racine:await this.obtIdCompte(),type:"keyvalue"}),{bd:T,fOublier:C}=await this.ouvrirBdTypée({id:x,type:"keyvalue",schéma:schémaStructureNomsDispositifs});if(_||S){const I={};_&&(I.nom=_),S&&(I.type=S),await T.set(E,I)}else await T.del(E);await C()}async suivreNomsDispositifs({idCompte:r,f:_}){const S=r||await this.obtIdCompte();return await this.suivreBdDicDeClef({id:S,schéma:schémaStructureNomsDispositifs,clef:"nomsDispositifs",f:_})}async suivreNomDispositif({idCompte:r,idDispositif:_,f:S}){return await this.suivreNomsDispositifs({idCompte:r,f:async E=>{const x=E[_];if(x)return await S(x)}})}async générerInvitationRejoindreCompte(){const r=await this.obtIdCompte(),_=await this.encryption.clefAléatoire();return this.motsDePasseRejoindreCompte[_]=Date.now(),{idCompte:r,codeSecret:_}}async révoquerInvitationRejoindreCompte({codeSecret:r}){r?delete this.motsDePasseRejoindreCompte[r]:this.motsDePasseRejoindreCompte={}}async considérerRequêteRejoindreCompte({requête:r}){const{idDispositif:_,empreinteVérification:S}=r,E=Date.now();for(const x of Object.keys(this.motsDePasseRejoindreCompte)){const T=this.motsDePasseRejoindreCompte[x];E-T_=I.includes(T));await new Promise(I=>{const B=async()=>{_&&(clearInterval(A),await C(),await E(),I())},A=setInterval(()=>{B()},10);B()}),this.idCompte=r,await this.sauvegarderAuStockageLocal({clef:"idCompte",val:r,parCompte:!1}),this.événements.emit("comptePrêt",{idCompte:r})}async donnerAccès({idBd:r,identité:_,rôle:S=MEMBRE}){if(!isValidAddress(_))throw new Error(`Identité "${_}" non valide.`);const{bd:E,fOublier:x}=await this.ouvrirBd({id:r}),T=E.access;T.type===nomType&&T.grant(S,_),await x()}async suivreIdCompte({f:r}){const _=async({idCompte:S})=>{await r(S)};return this.événements.on("comptePrêt",_),this.idCompte&&await _({idCompte:this.idCompte}),async()=>{this.événements.off("comptePrêt",_)}}async obtIdSFIP(){const{sfip:r}=await this.attendreSfipEtOrbite();return r.libp2p.peerId}async obtIdDispositif(){const{orbite:r}=await this.attendreSfipEtOrbite();return r.identity.id}async obtIdentitéOrbite(){const{orbite:r}=await this.attendreSfipEtOrbite();return r.identity}async obtIdCompte(){const{idCompte:r}=await this.attendreInitialisée();return r}async copierContenuBdDic({bdBase:r,nouvelleBd:_,clef:S,schéma:E}){const x=await r.get(S);if(typeof x!="string")return;const{bd:T,fOublier:C}=await this.ouvrirBdTypée({id:x,type:"keyvalue",schéma:E}),I=await _.get(S);if(!I)throw new Error("La nouvelle BD n'existait pas.");if(typeof I!="string")throw new Error(`${I} n'est pas une adresse Orbite.`);const{bd:B,fOublier:A}=await this.ouvrirBdTypée({id:I,type:"keyvalue",schéma:E}),D=await T.all();await Promise.all(D.map(async N=>{await B.put(N.key,N.value)})),C(),A()}async combinerBds({idBdBase:r,idBd2:_}){const{bd:S,fOublier:E}=await this.ouvrirBd({id:r}),x=S.type;switch(await E(),x){case"keyvalue":{const{bd:T,fOublier:C}=await this.ouvrirBd({id:r,type:"keyvalue"}),{bd:I,fOublier:B}=await this.ouvrirBd({id:_,type:"keyvalue"});await this.combinerBdsDict({bdBase:T,bd2:I}),await C(),await B();break}case"set":{const{bd:T,fOublier:C}=await this.ouvrirBd({id:r,type:"set"}),{bd:I,fOublier:B}=await this.ouvrirBd({id:_,type:"set"});await this.combinerBdsEnsemble({bdBase:T,bd2:I}),await C(),await B();break}default:throw new Error(`Type de BD ${x} non supporté.`)}}async combinerBdsDict({bdBase:r,bd2:_}){const S=Object.fromEntries((await _.all()).map(E=>[E.key,E.value]));for(const[E,x]of Object.entries(S)){const T=await r.get(E);T!==x&&(T===void 0?await r.put(E,x):isValidAddress(T)&&isValidAddress(x)&&await this.combinerBds({idBdBase:T,idBd2:x}))}}async combinerBdsEnsemble({bdBase:r,bd2:_,index:S}){const E=await r.all(),x=await _.all();for(const T of x){const C=T.value;if(S){if(typeof C!="object")throw new Error(`Erreur combinaison ensembles : ${typeof C}`);const I=E.find(B=>typeof B.value=="object"&&S.every(A=>B.value[A]===C[A]));if(!I)await r.add(C);else{const B=I.value;if(!deepEqual$1(B,C)){const A=Object.assign({},B);for(const[D,N]of Object.entries(C))A[D]===void 0?A[D]=N:deepEqual$1(A[D],N)||isValidAddress(A[D])&&isValidAddress(N)&&await this.combinerBds({idBdBase:A[D],idBd2:N});await r.del(I.value),await r.add(A)}}}else E.some(I=>deepEqual$1(I.value,C))||await r.add(C)}}async suivreBd({id:r,f:_,type:S,schéma:E}){if(!isValidAddress(r))throw new Error(`Adresse "${r}" non valide.`);const x=[],T={};let C=!1;const I=()=>{(E?S==="set"?this.ouvrirBdTypée({id:r,type:S,schéma:E}):S==="keyvalue"?this.ouvrirBdTypée({id:r,type:S,schéma:E}):S==="ordered-keyvalue"?this.ouvrirBdTypée({id:r,type:S,schéma:E}):this.ouvrirBd({id:r,type:S}):this.ouvrirBd({id:r})).then(({bd:D,fOublier:N})=>{x.push(N);const O=()=>{const M=v4$1(),L=_(D);(U=>!!U&&!!U.then)(L)&&(T[M]=L,L.then(()=>{delete T[M]}))};D.events.on("update",O),x.push(async()=>{D.events.off("update",O)}),O()}).catch(D=>{if(!C)if(String(D).includes("ipfs unable to find")||String(D).includes("aborted")||String(D).includes("No Promise in Promise.any was resolved"))I();else throw console.error(D),new Error(D)})};return I(),async()=>{C=!0,await Promise.all(x.map(A=>A())),await Promise.all(Object.values(T))}}async suivreBdDeClef({id:r,clef:_,f:S,fSuivre:E}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:T})=>{const C=async I=>{const B=await I.get(_);return await T(B)};return await this.suivreBd({id:r,f:C,type:"keyvalue"})},f:S,fSuivre:E})}async suivreBdDic({id:r,schéma:_,f:S}){const E=async x=>{const T=x?Object.fromEntries((await x.all()).map(C=>[C.key,C.value])):{};await S(T)};return await this.suivreBd({id:r,type:"keyvalue",schéma:_,f:E})}async suivreBdDicOrdonnée({id:r,schéma:_,f:S}){const E=async x=>{const T=await x.all();await S(T)};return await this.suivreBd({id:r,type:"ordered-keyvalue",schéma:_,f:E})}async suivreBdDicDeClef({id:r,clef:_,schéma:S,f:E}){const x=async C=>{await E(C||{})},T=async({id:C,fSuivreBd:I})=>await this.suivreBdDic({id:C,schéma:S,f:I});return await this.suivreBdDeClef({id:r,clef:_,f:x,fSuivre:T})}async suivreBdDicOrdonnéeDeClef({id:r,clef:_,schéma:S,f:E}){const x=async C=>{await E(C||[])},T=async({id:C,fSuivreBd:I})=>await this.suivreBdDicOrdonnée({id:C,schéma:S,f:I});return await this.suivreBdDeClef({id:r,clef:_,f:x,fSuivre:T})}async suivreBdListeDeClef({id:r,clef:_,f:S,schéma:E,renvoyerValeur:x=!0}){if(x){const T=async I=>{await S(I||[])},C=async({id:I,fSuivreBd:B})=>await this.suivreBdListe({id:I,f:B,schéma:E,renvoyerValeur:x});return await this.suivreBdDeClef({id:r,clef:_,f:T,fSuivre:C})}else{const T=async I=>{await S(I||[])},C=async({id:I,fSuivreBd:B})=>await this.suivreBdListe({id:I,f:B,schéma:E,renvoyerValeur:!1});return await this.suivreBdDeClef({id:r,clef:_,f:T,fSuivre:C})}}async suivreBdListe({id:r,f:_,schéma:S,renvoyerValeur:E=!0}){return await this.suivreBd({id:r,type:"set",schéma:S,f:async x=>{const T=E?(await x.all()).map(C=>C.value):await x.all();await _(T)}})}async suivreTypeObjet({idObjet:r,f:_}){const S=async T=>{let C;const{type:I}=T;I?C=["motClef","variable","bd","projet","nuée"].includes(I)?I:void 0:T.bds?C="projet":T.tableaux?C="bd":T.catégorie?C="variable":T.nom&&(C="motClef"),await _(C)},E={type:"object",properties:{type:{type:"string",nullable:!0}},additionalProperties:!0};return await this.suivreBdDic({id:r,schéma:E,f:S})}async suivreEmpreinteTêtesBdRécursive({idBd:r,f:_}){const S=async I=>{const B=await I.log.heads();return B[B.length-1]?.hash||""},E=I=>Base64.stringify(md5(I));return await suivreBdsDeFonctionListe({fListe:async I=>await this.suivreBdsRécursives({idBd:r,f:async B=>await I(B)}),f:async I=>{await _(E(I.sort().join()))},fBranche:async(I,B)=>await this.suivreBd({id:I,f:async A=>{const D=await S(A);await B(D)}})})}async suivreBdsDeBdListe({id:r,f:_,fBranche:S,fIdBdDeBranche:E=C=>C,fRéduction:x=C=>[...new Set(C.flat())],fCode:T=C=>C}){return await suivreBdsDeFonctionListe({fListe:async I=>await this.suivreBdListe({id:r,f:I}),f:_,fBranche:S,fIdBdDeBranche:E,fRéduction:x,fCode:T})}async suivreBdsDeBdDic({id:r,f:_,fBranche:S,fIdBdDeBranche:E=C=>C,fRéduction:x=C=>[...new Set(C.flat())],fCode:T=C=>C}){return await suivreBdsDeFonctionListe({fListe:async I=>await this.suivreBd({id:r,f:async B=>await I((await B.all()).map(A=>A.value))}),f:_,fBranche:S,fIdBdDeBranche:E,fRéduction:x,fCode:T})}async suivreBdsDeFonctionRecherche({fListe:r,f:_,fBranche:S,fIdBdDeBranche:E=C=>C,fRéduction:x=C=>[...new Set(C.flat())],fCode:T=C=>C}){let C;const I=async D=>{C&&await C(D)};return{fOublier:await suivreBdsDeFonctionListe({fListe:async D=>{const{fOublier:N,fChangerProfondeur:O}=await r(D);return C=O,N},f:_,fBranche:S,fIdBdDeBranche:E,fRéduction:x,fCode:T}),fChangerProfondeur:I}}async suivreBdSelonCondition({fRacine:r,fCondition:_,f:S}){const E=async({id:x,fSuivreBd:T})=>await _(x,async C=>{T(C?x:void 0)});return await suivreBdDeFonction({fRacine:async({fSuivreRacine:x})=>await r(x),f:ignorerNonDéfinis(S),fSuivre:E})}async suivreBdsSelonCondition({fListe:r,fCondition:_,f:S}){return await suivreBdsDeFonctionListe({fListe:r,f:async T=>{const C=T.filter(I=>I.état).map(I=>I.id);return await S(C)},fBranche:async(T,C)=>await _(T,async B=>await C({id:T,état:B}))})}async obtFichierSFIP({id:r,max:_}){return await toBuffer$1(await this.obtItérableAsyncSFIP({id:r}),_)}async obtItérableAsyncSFIP({id:r}){const{sfip:_}=await this.attendreSfipEtOrbite(),S=unixfs(_),E=r.split("/")[0];return S.cat(CID$8.parse(E))}async ajouterÀSFIP({contenu:r,nomFichier:_}){const{sfip:S}=await this.attendreSfipEtOrbite();return(await unixfs(S).addFile({content:r})).toString()+"/"+_}obtClefStockageClient({clef:r,parCompte:_=!0}){return _?`${this.idCompte.slice(this.idCompte.length-23,this.idCompte.length-8)} : ${r}`:r}async obtDeStockageLocal({clef:r,parCompte:_=!0}){const S=this.obtClefStockageClient({clef:r,parCompte:_});return(await obtStockageLocal(await this.dossier())).getItem(S)}async sauvegarderAuStockageLocal({clef:r,val:_,parCompte:S=!0}){const E=this.obtClefStockageClient({clef:r,parCompte:S});return(await obtStockageLocal(await this.dossier())).setItem(E,_)}async effacerDeStockageLocal({clef:r,parCompte:_=!0}){const S=this.obtClefStockageClient({clef:r,parCompte:_});return(await obtStockageLocal(await this.dossier())).removeItem(S)}async obtIdBd({nom:r,racine:_,type:S}){const E={type:"object",properties:{[r]:{type:"string"}},additionalProperties:!0,required:[]},{bd:x,fOublier:T}=typeof _=="string"?await this.ouvrirBdTypée({id:_,type:"keyvalue",schéma:E}):{bd:_,fOublier:faisRien},C=x.address+":"+r;await this.verrouObtIdBd.acquire(C);let I=await x.get(r);const B=await this.obtDeStockageLocal({clef:C});if(typeof I=="string"&&B&&I!==B)try{await this.combinerBds({idBdBase:I,idBd2:B}),await this.effacerBd({id:B}),await this.sauvegarderAuStockageLocal({clef:C,val:I})}catch{}if(typeof I=="string"&&S)try{const{fOublier:A}=await this.ouvrirBd({id:I,type:S});return await A(),this.verrouObtIdBd.release(C),I}catch{throw this.verrouObtIdBd.release(C),new Error("Bd n'existe pas : "+r+" "+I)}if(!I&&S){const A=x.access,{orbite:D}=await this.attendreSfipEtOrbite();if(await A.estAutorisé(D.identity.id)){const O=await this.obtOpsAccès({idBd:x.address});if(I=await this.créerBdIndépendante({type:S,optionsAccès:O}),!I)throw new Error("Bd non générée");await x.set(r,I)}}return typeof I=="string"&&await this.sauvegarderAuStockageLocal({clef:C,val:I}),T&&await T(),this.verrouObtIdBd.release(C),typeof I=="string"?I:void 0}async créerBdIndépendante({type:r,optionsAccès:_,nom:S}){const{orbite:E}=await this.attendreSfipEtOrbite();return _=_||await this.obtOptionsAccès(),await E.créerBdIndépendante({type:r,nom:S,options:{AccessController:ContrôleurConstellation(_)}})}async effacerBd({id:r}){return await this.orbite?.effacerBd({id:r})}async obtOpsAccès({idBd:r}){const{bd:_,fOublier:S}=await this.ouvrirBd({id:r}),E=_.access;return await S(),{address:E.bd.address,write:E.write}}async suivrePermission({idObjet:r,f:_}){const{bd:S,fOublier:E}=await this.ouvrirBd({id:r}),x=S.access,T=x.type;if(T==="ipfs"){const C=await this.obtIdDispositif();return await _(x.write.includes(C)?MEMBRE:void 0),await E(),faisRien}else if(T===nomType){const C=async B=>{const A=B.filter(N=>N.idCompte===this.idCompte).map(N=>N.rôle),D=A.includes(MODÉRATEUR)?MODÉRATEUR:A.includes(MEMBRE)?MEMBRE:void 0;await _(D)},I=await x.suivreUtilisateursAutorisés(C);return async()=>{await I(),await E()}}else throw new Error(`Type d'accès ${T} non reconnu.`)}async suivrePermissionÉcrire({id:r,f:_}){const S=async E=>{await _(E!==void 0)};return await this.suivrePermission({idObjet:r,f:S})}async suivreAccèsBd({id:r,f:_}){const S=async E=>{const x=E.access,T=x.type;if(T==="ipfs"){const C=x.write.map(I=>({idCompte:I,rôle:MODÉRATEUR}));await _(C)}else if(T===nomType)return await x.suivreUtilisateursAutorisés(_);return faisRien};return await this.suivreBd({id:r,f:S})}async suivreBdsRécursives({idBd:r,f:_}){const S={},E=async()=>{await _(Object.keys(S))},x=new s$2,T=async A=>{delete S[A],await Promise.all(Object.keys(S).map(async D=>{S[D]&&(S[D].requêtes.delete(A),S[D].requêtes.size||await S[D].fOublier())}))},C=["copiéDe"],I=async(A,D)=>{const N=j=>j.map(z=>typeof z=="string"?[z]:Array.isArray(z)?z:typeof z=="object"?Object.values(z):[]).flat().filter(z=>isValidAddress(z)),O=async j=>{let z=[];typeof j=="object"?(z=N(Object.entries(j).filter(J=>!C.includes(J[0])).map(J=>J[1])),z.push(...N(Object.keys(j)))):Array.isArray(j)?z=N(j):typeof j=="string"&&(z=[j]);const H=z.filter(J=>!S[A].sousBds.includes(J)),Q=S[A].sousBds.filter(J=>!z.includes(J));S[A].sousBds=z,await Promise.all(Q.map(async J=>{S[J]?.requêtes.delete(A),S[J]?.requêtes.size||await S[J]?.fOublier()})),await Promise.all(H.map(async J=>await I(J,A))),E()};if(await x.acquire(A),S[A]){S[A].requêtes.add(D);return}const{bd:M,fOublier:L}=await this.ouvrirBd({id:A}),{type:F}=M;await L(),S[A]={requêtes:new Set([D]),sousBds:[],fOublier:async()=>{await U(),await T(A)}};let U;F==="keyvalue"?U=await this.suivreBdDic({id:A,f:O}):F==="ordered-keyvalue"?U=await this.suivreBdDicOrdonnée({id:A,f:O}):F==="set"?U=await this.suivreBdListe({id:A,f:O}):U=faisRien,x.release(A),E()};return await I(r,""),async()=>{await Promise.all(Object.values(S).map(A=>A.fOublier()))}}async fermerCompte(){this.réseau&&await this.réseau.fermer(),this.favoris&&await this.favoris.fermer(),this.automatisations&&await this.automatisations.fermer()}async fermer(){await this.attendreInitialisée();const{orbite:r}=await this.attendreSfipEtOrbite();await(await obtStockageLocal(await this.dossier())).fermer?.(),await this.fermerCompte(),await this.épingles.fermer(),await r.fermer({arrêterOrbite:!this._orbiteExterne}),this.sfip&&!this._sfipExterne&&await this.sfip.stop(),await this.effacerVerrou()}async effacerDispositif(){if(await this.fermer(),indexedDB)if(indexedDB.databases){const r=await indexedDB.databases();await Promise.all(r.map(_=>{_.name&&indexedDB.deleteDatabase(_.name)}))}else console.warn("On a pas pu tout effacer.");else{const r=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url);(await obtStockageLocal(await this.dossier())).clear(),r.rmdirSync(await this.dossier())}}async exporterDispositif({nomFichier:r}){if(isNode||isElectronMain){const _=await __vitePreload(()=>Promise.resolve().then(()=>empty$1),void 0,import.meta.url),S=await __vitePreload(()=>Promise.resolve().then(()=>index$2),void 0,import.meta.url),E=({dossier:T,zip:C})=>{_.readdirSync(T).map(B=>{if(_.statSync(B)?.isDirectory())E({dossier:S.join(T,B),zip:C.folder(B)});else{const D=_.createReadStream(S.join(T,B));C.file(B,D)}})},x=new JSZip;E({dossier:await this.dossier(),zip:x}),await sauvegarderFichierZip({fichierZip:x,nomFichier:r})}else if(indexedDB?.databases){const _=({bd:T,zip:C})=>{const{name:I}=T;if(I){const B=C.folder(I);if(!B)throw new Error(I);const D=indexedDB.open(I).result.objectStoreNames;[...Array(D.length).keys()].map(O=>D.item(O)).filter(O=>!!O).map(O=>B.file(O,new indexedDbStream.IndexedDbReadStream({databaseName:I,objectStoreName:O})))}},S=new JSZip,E=await indexedDB.databases(),x=S.folder("bdIndexe");if(!x)throw new Error("Erreur Bd Indexe...");E.forEach(T=>{_({bd:T,zip:x})}),S.file("stockageLocal",JSON.stringify(await exporterStockageLocal(await this.dossier()))),await sauvegarderFichierZip({fichierZip:S,nomFichier:r})}else throw new Error("Sauvegarde non implémentée.")}async rétablirDispositif(){throw await this.effacerDispositif(),isNode||isElectronMain?new Error("Non implémenté"):new Error("Non implémenté")}static async créer(r={}){const _=new Constellation(r);return await _.attendreInitialisée(),_}}__decorate([cacheSuivi],Constellation.prototype,"suivreDispositifs",null);__decorate([cacheSuivi],Constellation.prototype,"suivreIdCompte",null);__decorate([cacheSuivi],Constellation.prototype,"suivreEmpreinteTêtesBdRécursive",null);__decorate([cacheSuivi],Constellation.prototype,"suivrePermission",null);__decorate([cacheSuivi],Constellation.prototype,"suivrePermissionÉcrire",null);__decorate([cacheSuivi],Constellation.prototype,"suivreAccèsBd",null);__decorate([cacheSuivi],Constellation.prototype,"suivreBdsRécursives",null);class EnveloppeIpa{ipa;_messagesEnAttente;prêt;dicFRetourSuivi;opts;fsMessages;fsErreurs;_verrou;constructor(r,_,S={}){this.fsMessages={},this.fsErreurs={},this.connecterÉcouteurs({fMessage:r,fErreur:_}),this.opts=S instanceof Constellation?{}:S,S instanceof Constellation&&(this.ipa=S),this.dicFRetourSuivi={},this.prêt=!1,this._messagesEnAttente=[],this._verrou=new s$2,this.init()}fMessage(r){Object.values(this.fsMessages).forEach(_=>_(r))}fErreur({erreur:r,id:_,code:S}){Object.values(this.fsErreurs).forEach(E=>E({erreur:r,id:_,code:S}))}async init(){if(await this._verrou.acquire("init"),this.ipa)return this._verrou.release("init"),this.ipa;try{this.ipa=await Constellation.créer(this.opts)}catch(r){throw this.fErreur({erreur:r.toString(),code:r.name==="Error"?ERREUR_INIT_IPA:r.name}),r}return this._messagesEnAttente.forEach(r=>this._gérerMessage(r)),this.prêt=!0,this._verrou.release("init"),this.ipa}async gérerMessage(r){this.prêt?await this._gérerMessage(r):this._messagesEnAttente.unshift(r)}async _gérerMessage(r){if(!this.ipa){this.fErreur({erreur:"IPA non initialisé",id:r.id,code:ERREUR_INIT_IPA});return}const{type:_}=r;switch(_){case"suivre":{const{id:S,fonction:E,args:x,nomArgFonction:T}=r,C=this.extraireFonctionIPA(E,S);if(!C)return;const I=B=>{const A={type:"suivre",id:S,données:B};this.fMessage(A)};x[T]=I;try{const B=await C(x),A=typeof B=="function"?{fOublier:B}:B;this.dicFRetourSuivi[S]=A;const D={type:"suivrePrêt",id:S};typeof B!="function"&&(D.fonctions=Object.keys(B)),this.fMessage(D)}catch(B){this.fErreur({erreur:B.toString()+B.stack.toString(),id:S,code:ERREUR_EXÉCUTION_IPA})}break}case"action":{const{id:S,fonction:E,args:x}=r,T=this.extraireFonctionIPA(E,S);if(!T)return;try{const C=await T(x),I={type:"action",id:S,résultat:C};this.fMessage(I)}catch(C){this.fErreur({erreur:C.toString()+C.stack.toString(),id:S,code:ERREUR_EXÉCUTION_IPA})}break}case"retour":{const{id:S,fonction:E,args:x}=r,T=this.dicFRetourSuivi[S];T&&await T[E](x),E==="fOublier"&&delete this.dicFRetourSuivi[S];break}default:{this.fErreur({erreur:`Type de requête ${_} non reconnu dans message ${r}`,id:r.id,code:ERREUR_EXÉCUTION_IPA});break}}}extraireFonctionIPA(r,_){const S=`Fonction Constellation.${r.join(".")} n'existe pas ou n'est pas une fonction.`;let E=this.ipa;for(const[x,T]of r.entries()){if(typeof E=="object"&&T in E&&E[T])x===r.length-1?E=E[T].bind(E):E=E[T];else{this.fErreur({erreur:S,id:_,code:ERREUR_FONCTION_MANQUANTE});return}if(!E){this.fErreur({erreur:S,id:_,code:ERREUR_FONCTION_MANQUANTE});return}}if(typeof E!="function"){this.fErreur({erreur:S,id:_,code:ERREUR_PAS_UNE_FONCTION});return}return E}connecterÉcouteurs({fMessage:r,fErreur:_}){const S=v4$1();return this.fsMessages[S]=r,this.fsErreurs[S]=_,()=>{delete this.fsMessages[S],delete this.fsErreurs[S]}}async fermer(){await(await this.init()).fermer()}}class MandataireProc extends Mandatairifiable{ipa;constructor(r={}){super(),this.ipa=new EnveloppeIpa(_=>this.recevoirMessageDIpa(_),({erreur:_,idRequête:S,code:E})=>{const x={type:"erreur",id:S,erreur:_,codeErreur:E};this.recevoirMessageDIpa(x)},r)}envoyerMessageÀIpa(r){this.ipa.gérerMessage(r)}}const générerMandataireProc=(n={})=>générerMandataire(new MandataireProc(n));function selectTranslation(n){return n&&Object.keys(n).length?Object.values(n)[0]:void 0}const RIFFCC_PROTOCOL="Riff.CC",constellationNavigateur={install:n=>{const r=générerMandataireProc({protocoles:[RIFFCC_PROTOCOL]});n.config.globalProperties.$constl=r,n.provide("constl",r)}},VAlertTitle=createSimpleFunctional("v-alert-title"),allowedTypes=["success","info","warning","error"],makeVAlertProps=propsFactory({border:{type:[Boolean,String],validator:n=>typeof n=="boolean"||["top","end","bottom","start"].includes(n)},borderColor:String,closable:Boolean,closeIcon:{type:IconValue,default:"$close"},closeLabel:{type:String,default:"$vuetify.close"},icon:{type:[Boolean,String,Function,Object],default:null},modelValue:{type:Boolean,default:!0},prominent:Boolean,title:String,text:String,type:{type:String,validator:n=>allowedTypes.includes(n)},...makeComponentProps(),...makeDensityProps(),...makeDimensionProps(),...makeElevationProps(),...makeLocationProps(),...makePositionProps(),...makeRoundedProps(),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:"flat"})},"VAlert"),VAlert=genericComponent()({name:"VAlert",props:makeVAlertProps(),emits:{"click:close":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useProxiedModel(n,"modelValue"),x=computed(()=>{if(n.icon!==!1)return n.type?n.icon??`$${n.type}`:n.icon}),T=computed(()=>({color:n.color??n.type,variant:n.variant})),{themeClasses:C}=provideTheme(n),{colorClasses:I,colorStyles:B,variantClasses:A}=useVariant(T),{densityClasses:D}=useDensity(n),{dimensionStyles:N}=useDimension(n),{elevationClasses:O}=useElevation(n),{locationStyles:M}=useLocation(n),{positionClasses:L}=usePosition(n),{roundedClasses:F}=useRounded(n),{textColorClasses:U,textColorStyles:j}=useTextColor(toRef(n,"borderColor")),{t:z}=useLocale(),H=computed(()=>({"aria-label":z(n.closeLabel),onClick(Q){E.value=!1,_("click:close",Q)}}));return()=>{const Q=!!(S.prepend||x.value),J=!!(S.title||n.title),Z=!!(S.close||n.closable);return E.value&&createVNode(n.tag,{class:["v-alert",n.border&&{"v-alert--border":!!n.border,[`v-alert--border-${n.border===!0?"start":n.border}`]:!0},{"v-alert--prominent":n.prominent},C.value,I.value,D.value,O.value,L.value,F.value,A.value,n.class],style:[B.value,N.value,M.value,n.style],role:"alert"},{default:()=>[genOverlays(!1,"v-alert"),n.border&&createVNode("div",{key:"border",class:["v-alert__border",U.value],style:j.value},null),Q&&createVNode("div",{key:"prepend",class:"v-alert__prepend"},[S.prepend?createVNode(VDefaultsProvider,{key:"prepend-defaults",disabled:!x.value,defaults:{VIcon:{density:n.density,icon:x.value,size:n.prominent?44:28}}},S.prepend):createVNode(VIcon,{key:"prepend-icon",density:n.density,icon:x.value,size:n.prominent?44:28},null)]),createVNode("div",{class:"v-alert__content"},[J&&createVNode(VAlertTitle,{key:"title"},{default:()=>[S.title?.()??n.title]}),S.text?.()??n.text,S.default?.()]),S.append&&createVNode("div",{key:"append",class:"v-alert__append"},[S.append()]),Z&&createVNode("div",{key:"close",class:"v-alert__close"},[S.close?createVNode(VDefaultsProvider,{key:"close-defaults",defaults:{VBtn:{icon:n.closeIcon,size:"x-small",variant:"text"}}},{default:()=>[S.close?.({props:H.value})]}):createVNode(VBtn,mergeProps({key:"close-btn",icon:n.closeIcon,size:"x-small",variant:"text"},H.value),null)])]})}}}),makeVLabelProps=propsFactory({text:String,onClick:EventProp(),...makeComponentProps(),...makeThemeProps()},"VLabel"),VLabel=genericComponent()({name:"VLabel",props:makeVLabelProps(),setup(n,r){let{slots:_}=r;return useRender(()=>createVNode("label",{class:["v-label",{"v-label--clickable":!!n.onClick},n.class],style:n.style,onClick:n.onClick},[n.text,_.default?.()])),{}}}),VSelectionControlGroupSymbol=Symbol.for("vuetify:selection-control-group"),makeSelectionControlGroupProps=propsFactory({color:String,disabled:{type:Boolean,default:null},defaultsTarget:String,error:Boolean,id:String,inline:Boolean,falseIcon:IconValue,trueIcon:IconValue,ripple:{type:[Boolean,Object],default:!0},multiple:{type:Boolean,default:null},name:String,readonly:{type:Boolean,default:null},modelValue:null,type:String,valueComparator:{type:Function,default:deepEqual$2},...makeComponentProps(),...makeDensityProps(),...makeThemeProps()},"SelectionControlGroup"),makeVSelectionControlGroupProps=propsFactory({...makeSelectionControlGroupProps({defaultsTarget:"VSelectionControl"})},"VSelectionControlGroup"),VSelectionControlGroup=genericComponent()({name:"VSelectionControlGroup",props:makeVSelectionControlGroupProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),E=getUid(),x=computed(()=>n.id||`v-selection-control-group-${E}`),T=computed(()=>n.name||x.value),C=new Set;return provide(VSelectionControlGroupSymbol,{modelValue:S,forceUpdate:()=>{C.forEach(I=>I())},onForceUpdate:I=>{C.add(I),onScopeDispose(()=>{C.delete(I)})}}),provideDefaults({[n.defaultsTarget]:{color:toRef(n,"color"),disabled:toRef(n,"disabled"),density:toRef(n,"density"),error:toRef(n,"error"),inline:toRef(n,"inline"),modelValue:S,multiple:computed(()=>!!n.multiple||n.multiple==null&&Array.isArray(S.value)),name:T,falseIcon:toRef(n,"falseIcon"),trueIcon:toRef(n,"trueIcon"),readonly:toRef(n,"readonly"),ripple:toRef(n,"ripple"),type:toRef(n,"type"),valueComparator:toRef(n,"valueComparator")}}),useRender(()=>createVNode("div",{class:["v-selection-control-group",{"v-selection-control-group--inline":n.inline},n.class],style:n.style,role:n.type==="radio"?"radiogroup":void 0},[_.default?.()])),{}}}),makeVSelectionControlProps=propsFactory({label:String,baseColor:String,trueValue:null,falseValue:null,value:null,...makeComponentProps(),...makeSelectionControlGroupProps()},"VSelectionControl");function useSelectionControl(n){const r=inject$1(VSelectionControlGroupSymbol,void 0),{densityClasses:_}=useDensity(n),S=useProxiedModel(n,"modelValue"),E=computed(()=>n.trueValue!==void 0?n.trueValue:n.value!==void 0?n.value:!0),x=computed(()=>n.falseValue!==void 0?n.falseValue:!1),T=computed(()=>!!n.multiple||n.multiple==null&&Array.isArray(S.value)),C=computed({get(){const O=r?r.modelValue.value:S.value;return T.value?wrapInArray(O).some(M=>n.valueComparator(M,E.value)):n.valueComparator(O,E.value)},set(O){if(n.readonly)return;const M=O?E.value:x.value;let L=M;T.value&&(L=O?[...wrapInArray(S.value),M]:wrapInArray(S.value).filter(F=>!n.valueComparator(F,E.value))),r?r.modelValue.value=L:S.value=L}}),{textColorClasses:I,textColorStyles:B}=useTextColor(computed(()=>{if(!(n.error||n.disabled))return C.value?n.color:n.baseColor})),{backgroundColorClasses:A,backgroundColorStyles:D}=useBackgroundColor(computed(()=>C.value&&!n.error&&!n.disabled?n.color:n.baseColor)),N=computed(()=>C.value?n.trueIcon:n.falseIcon);return{group:r,densityClasses:_,trueValue:E,falseValue:x,model:C,textColorClasses:I,textColorStyles:B,backgroundColorClasses:A,backgroundColorStyles:D,icon:N}}const VSelectionControl=genericComponent()({name:"VSelectionControl",directives:{Ripple},inheritAttrs:!1,props:makeVSelectionControlProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const{group:E,densityClasses:x,icon:T,model:C,textColorClasses:I,textColorStyles:B,backgroundColorClasses:A,backgroundColorStyles:D,trueValue:N}=useSelectionControl(n),O=getUid(),M=shallowRef(!1),L=shallowRef(!1),F=ref$2(),U=computed(()=>n.id||`input-${O}`),j=computed(()=>!n.disabled&&!n.readonly);E?.onForceUpdate(()=>{F.value&&(F.value.checked=C.value)});function z(Z){j.value&&(M.value=!0,matchesSelector(Z.target,":focus-visible")!==!1&&(L.value=!0))}function H(){M.value=!1,L.value=!1}function Q(Z){Z.stopPropagation()}function J(Z){if(!j.value){F.value&&(F.value.checked=C.value);return}n.readonly&&E&&nextTick$2(()=>E.forceUpdate()),C.value=Z.target.checked}return useRender(()=>{const Z=S.label?S.label({label:n.label,props:{for:U.value}}):n.label,[re,ie]=filterInputAttrs(_),pe=createVNode("input",mergeProps({ref:F,checked:C.value,disabled:!!n.disabled,id:U.value,onBlur:H,onFocus:z,onInput:J,"aria-disabled":!!n.disabled,"aria-label":n.label,type:n.type,value:N.value,name:n.name,"aria-checked":n.type==="checkbox"?C.value:void 0},ie),null);return createVNode("div",mergeProps({class:["v-selection-control",{"v-selection-control--dirty":C.value,"v-selection-control--disabled":n.disabled,"v-selection-control--error":n.error,"v-selection-control--focused":M.value,"v-selection-control--focus-visible":L.value,"v-selection-control--inline":n.inline},x.value,n.class]},re,{style:n.style}),[createVNode("div",{class:["v-selection-control__wrapper",I.value],style:B.value},[S.default?.({backgroundColorClasses:A,backgroundColorStyles:D}),withDirectives(createVNode("div",{class:["v-selection-control__input"]},[S.input?.({model:C,textColorClasses:I,textColorStyles:B,backgroundColorClasses:A,backgroundColorStyles:D,inputNode:pe,icon:T.value,props:{onFocus:z,onBlur:H,id:U.value}})??createVNode(Fragment,null,[T.value&&createVNode(VIcon,{key:"icon",icon:T.value},null),pe])]),[[resolveDirective("ripple"),n.ripple&&[!n.disabled&&!n.readonly,null,["center","circle"]]]])]),Z&&createVNode(VLabel,{for:U.value,onClick:Q},{default:()=>[Z]})])}),{isFocused:M,input:F}}}),makeVCheckboxBtnProps=propsFactory({indeterminate:Boolean,indeterminateIcon:{type:IconValue,default:"$checkboxIndeterminate"},...makeVSelectionControlProps({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),VCheckboxBtn=genericComponent()({name:"VCheckboxBtn",props:makeVCheckboxBtnProps(),emits:{"update:modelValue":n=>!0,"update:indeterminate":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"indeterminate"),E=useProxiedModel(n,"modelValue");function x(I){S.value&&(S.value=!1)}const T=computed(()=>S.value?n.indeterminateIcon:n.falseIcon),C=computed(()=>S.value?n.indeterminateIcon:n.trueIcon);return useRender(()=>{const I=omit(VSelectionControl.filterProps(n),["modelValue"]);return createVNode(VSelectionControl,mergeProps(I,{modelValue:E.value,"onUpdate:modelValue":[B=>E.value=B,x],class:["v-checkbox-btn",n.class],style:n.style,type:"checkbox",falseIcon:T.value,trueIcon:C.value,"aria-checked":S.value?"mixed":void 0}),_)}),{}}});function useInputIcon(n){const{t:r}=useLocale();function _(S){let{name:E}=S;const x={prepend:"prependAction",prependInner:"prependAction",append:"appendAction",appendInner:"appendAction",clear:"clear"}[E],T=n[`onClick:${E}`],C=T&&x?r(`$vuetify.input.${x}`,n.label??""):void 0;return createVNode(VIcon,{icon:n[`${E}Icon`],"aria-label":C,onClick:T},null)}return{InputIcon:_}}const makeVMessagesProps=propsFactory({active:Boolean,color:String,messages:{type:[Array,String],default:()=>[]},...makeComponentProps(),...makeTransitionProps({transition:{component:VSlideYTransition,leaveAbsolute:!0,group:!0}})},"VMessages"),VMessages=genericComponent()({name:"VMessages",props:makeVMessagesProps(),setup(n,r){let{slots:_}=r;const S=computed(()=>wrapInArray(n.messages)),{textColorClasses:E,textColorStyles:x}=useTextColor(computed(()=>n.color));return useRender(()=>createVNode(MaybeTransition,{transition:n.transition,tag:"div",class:["v-messages",E.value,n.class],style:[x.value,n.style],role:"alert","aria-live":"polite"},{default:()=>[n.active&&S.value.map((T,C)=>createVNode("div",{class:"v-messages__message",key:`${C}-${S.value}`},[_.message?_.message({message:T}):T]))]})),{}}}),makeFocusProps=propsFactory({focused:Boolean,"onUpdate:focused":EventProp()},"focus");function useFocus(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:getCurrentInstanceName();const _=useProxiedModel(n,"focused"),S=computed(()=>({[`${r}--focused`]:_.value}));function E(){_.value=!0}function x(){_.value=!1}return{focusClasses:S,isFocused:_,focus:E,blur:x}}const FormKey=Symbol.for("vuetify:form"),makeFormProps=propsFactory({disabled:Boolean,fastFail:Boolean,readonly:Boolean,modelValue:{type:Boolean,default:null},validateOn:{type:String,default:"input"}},"form");function createForm(n){const r=useProxiedModel(n,"modelValue"),_=computed(()=>n.disabled),S=computed(()=>n.readonly),E=shallowRef(!1),x=ref$2([]),T=ref$2([]);async function C(){const A=[];let D=!0;T.value=[],E.value=!0;for(const N of x.value){const O=await N.validate();if(O.length>0&&(D=!1,A.push({id:N.id,errorMessages:O})),!D&&n.fastFail)break}return T.value=A,E.value=!1,{valid:D,errors:T.value}}function I(){x.value.forEach(A=>A.reset())}function B(){x.value.forEach(A=>A.resetValidation())}return watch(x,()=>{let A=0,D=0;const N=[];for(const O of x.value)O.isValid===!1?(D++,N.push({id:O.id,errorMessages:O.errorMessages})):O.isValid===!0&&A++;T.value=N,r.value=D>0?!1:A===x.value.length?!0:null},{deep:!0,flush:"post"}),provide(FormKey,{register:A=>{let{id:D,vm:N,validate:O,reset:M,resetValidation:L}=A;x.value.some(F=>F.id===D),x.value.push({id:D,validate:O,reset:M,resetValidation:L,vm:markRaw(N),isValid:null,errorMessages:[]})},unregister:A=>{x.value=x.value.filter(D=>D.id!==A)},update:(A,D,N)=>{const O=x.value.find(M=>M.id===A);O&&(O.isValid=D,O.errorMessages=N)},isDisabled:_,isReadonly:S,isValidating:E,isValid:r,items:x,validateOn:toRef(n,"validateOn")}),{errors:T,isDisabled:_,isReadonly:S,isValidating:E,isValid:r,items:x,validate:C,reset:I,resetValidation:B}}function useForm(){return inject$1(FormKey,null)}const makeValidationProps=propsFactory({disabled:{type:Boolean,default:null},error:Boolean,errorMessages:{type:[Array,String],default:()=>[]},maxErrors:{type:[Number,String],default:1},name:String,label:String,readonly:{type:Boolean,default:null},rules:{type:Array,default:()=>[]},modelValue:null,validateOn:String,validationValue:null,...makeFocusProps()},"validation");function useValidation(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:getCurrentInstanceName(),_=arguments.length>2&&arguments[2]!==void 0?arguments[2]:getUid();const S=useProxiedModel(n,"modelValue"),E=computed(()=>n.validationValue===void 0?S.value:n.validationValue),x=useForm(),T=ref$2([]),C=shallowRef(!0),I=computed(()=>!!(wrapInArray(S.value===""?null:S.value).length||wrapInArray(E.value===""?null:E.value).length)),B=computed(()=>!!(n.disabled??x?.isDisabled.value)),A=computed(()=>!!(n.readonly??x?.isReadonly.value)),D=computed(()=>n.errorMessages?.length?wrapInArray(n.errorMessages).concat(T.value).slice(0,Math.max(0,+n.maxErrors)):T.value),N=computed(()=>{let Q=(n.validateOn??x?.validateOn.value)||"input";Q==="lazy"&&(Q="input lazy"),Q==="eager"&&(Q="input eager");const J=new Set(Q?.split(" ")??[]);return{input:J.has("input"),blur:J.has("blur")||J.has("input")||J.has("invalid-input"),invalidInput:J.has("invalid-input"),lazy:J.has("lazy"),eager:J.has("eager")}}),O=computed(()=>n.error||n.errorMessages?.length?!1:n.rules.length?C.value?T.value.length||N.value.lazy?null:!0:!T.value.length:!0),M=shallowRef(!1),L=computed(()=>({[`${r}--error`]:O.value===!1,[`${r}--dirty`]:I.value,[`${r}--disabled`]:B.value,[`${r}--readonly`]:A.value})),F=getCurrentInstance("validation"),U=computed(()=>n.name??unref(_));onBeforeMount(()=>{x?.register({id:U.value,vm:F,validate:H,reset:j,resetValidation:z})}),onBeforeUnmount(()=>{x?.unregister(U.value)}),onMounted(async()=>{N.value.lazy||await H(!N.value.eager),x?.update(U.value,O.value,D.value)}),useToggleScope(()=>N.value.input||N.value.invalidInput&&O.value===!1,()=>{watch(E,()=>{if(E.value!=null)H();else if(n.focused){const Q=watch(()=>n.focused,J=>{J||H(),Q()})}})}),useToggleScope(()=>N.value.blur,()=>{watch(()=>n.focused,Q=>{Q||H()})}),watch([O,D],()=>{x?.update(U.value,O.value,D.value)});async function j(){S.value=null,await nextTick$2(),await z()}async function z(){C.value=!0,N.value.lazy?T.value=[]:await H(!N.value.eager)}async function H(){let Q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const J=[];M.value=!0;for(const Z of n.rules){if(J.length>=+(n.maxErrors??1))break;const ie=await(typeof Z=="function"?Z:()=>Z)(E.value);if(ie!==!0){if(ie!==!1&&typeof ie!="string"){console.warn(`${ie} is not a valid value. Rule functions must return boolean true or a string.`);continue}J.push(ie||"")}}return T.value=J,M.value=!1,C.value=Q,T.value}return{errorMessages:D,isDirty:I,isDisabled:B,isReadonly:A,isPristine:C,isValid:O,isValidating:M,reset:j,resetValidation:z,validate:H,validationClasses:L}}const makeVInputProps=propsFactory({id:String,appendIcon:IconValue,centerAffix:{type:Boolean,default:!0},prependIcon:IconValue,hideDetails:[Boolean,String],hideSpinButtons:Boolean,hint:String,persistentHint:Boolean,messages:{type:[Array,String],default:()=>[]},direction:{type:String,default:"horizontal",validator:n=>["horizontal","vertical"].includes(n)},"onClick:prepend":EventProp(),"onClick:append":EventProp(),...makeComponentProps(),...makeDensityProps(),...only(makeDimensionProps(),["maxWidth","minWidth","width"]),...makeThemeProps(),...makeValidationProps()},"VInput"),VInput=genericComponent()({name:"VInput",props:{...makeVInputProps()},emits:{"update:modelValue":n=>!0},setup(n,r){let{attrs:_,slots:S,emit:E}=r;const{densityClasses:x}=useDensity(n),{dimensionStyles:T}=useDimension(n),{themeClasses:C}=provideTheme(n),{rtlClasses:I}=useRtl(),{InputIcon:B}=useInputIcon(n),A=getUid(),D=computed(()=>n.id||`input-${A}`),N=computed(()=>`${D.value}-messages`),{errorMessages:O,isDirty:M,isDisabled:L,isReadonly:F,isPristine:U,isValid:j,isValidating:z,reset:H,resetValidation:Q,validate:J,validationClasses:Z}=useValidation(n,"v-input",D),re=computed(()=>({id:D,messagesId:N,isDirty:M,isDisabled:L,isReadonly:F,isPristine:U,isValid:j,isValidating:z,reset:H,resetValidation:Q,validate:J})),ie=computed(()=>n.errorMessages?.length||!U.value&&O.value.length?O.value:n.hint&&(n.persistentHint||n.focused)?n.hint:n.messages);return useRender(()=>{const pe=!!(S.prepend||n.prependIcon),ue=!!(S.append||n.appendIcon),W=ie.value.length>0,Y=!n.hideDetails||n.hideDetails==="auto"&&(W||!!S.details);return createVNode("div",{class:["v-input",`v-input--${n.direction}`,{"v-input--center-affix":n.centerAffix,"v-input--hide-spin-buttons":n.hideSpinButtons},x.value,C.value,I.value,Z.value,n.class],style:[T.value,n.style]},[pe&&createVNode("div",{key:"prepend",class:"v-input__prepend"},[S.prepend?.(re.value),n.prependIcon&&createVNode(B,{key:"prepend-icon",name:"prepend"},null)]),S.default&&createVNode("div",{class:"v-input__control"},[S.default?.(re.value)]),ue&&createVNode("div",{key:"append",class:"v-input__append"},[n.appendIcon&&createVNode(B,{key:"append-icon",name:"append"},null),S.append?.(re.value)]),Y&&createVNode("div",{class:"v-input__details"},[createVNode(VMessages,{id:N.value,active:W,messages:ie.value},{message:S.message}),S.details?.(re.value)])])}),{reset:H,resetValidation:Q,validate:J,isValid:j,errorMessages:O}}}),makeVCheckboxProps=propsFactory({...makeVInputProps(),...omit(makeVCheckboxBtnProps(),["inline"])},"VCheckbox"),VCheckbox=genericComponent()({name:"VCheckbox",inheritAttrs:!1,props:makeVCheckboxProps(),emits:{"update:modelValue":n=>!0,"update:focused":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const E=useProxiedModel(n,"modelValue"),{isFocused:x,focus:T,blur:C}=useFocus(n),I=getUid(),B=computed(()=>n.id||`checkbox-${I}`);return useRender(()=>{const[A,D]=filterInputAttrs(_),N=VInput.filterProps(n),O=VCheckboxBtn.filterProps(n);return createVNode(VInput,mergeProps({class:["v-checkbox",n.class]},A,N,{modelValue:E.value,"onUpdate:modelValue":M=>E.value=M,id:B.value,focused:x.value,style:n.style}),{...S,default:M=>{let{id:L,messagesId:F,isDisabled:U,isReadonly:j,isValid:z}=M;return createVNode(VCheckboxBtn,mergeProps(O,{id:L.value,"aria-describedby":F.value,disabled:U.value,readonly:j.value},D,{error:z.value===!1,modelValue:E.value,"onUpdate:modelValue":H=>E.value=H,onFocus:T,onBlur:C}),S)}})}),{}}}),GoToSymbol=Symbol.for("vuetify:goto");function genDefaults(){return{container:void 0,duration:300,layout:!1,offset:0,easing:"easeInOutCubic",patterns:{linear:n=>n,easeInQuad:n=>n**2,easeOutQuad:n=>n*(2-n),easeInOutQuad:n=>n<.5?2*n**2:-1+(4-2*n)*n,easeInCubic:n=>n**3,easeOutCubic:n=>--n**3+1,easeInOutCubic:n=>n<.5?4*n**3:(n-1)*(2*n-2)*(2*n-2)+1,easeInQuart:n=>n**4,easeOutQuart:n=>1- --n**4,easeInOutQuart:n=>n<.5?8*n**4:1-8*--n**4,easeInQuint:n=>n**5,easeOutQuint:n=>1+--n**5,easeInOutQuint:n=>n<.5?16*n**5:1+16*--n**5}}}function getContainer(n){return getTarget$1(n)??(document.scrollingElement||document.body)}function getTarget$1(n){return typeof n=="string"?document.querySelector(n):refElement(n)}function getOffset$2(n,r,_){if(typeof n=="number")return r&&_?-n:n;let S=getTarget$1(n),E=0;for(;S;)E+=r?S.offsetLeft:S.offsetTop,S=S.offsetParent;return E}function createGoTo(n,r){return{rtl:r.isRtl,options:mergeDeep(genDefaults(),n)}}async function scrollTo(n,r,_,S){const E=_?"scrollLeft":"scrollTop",x=mergeDeep(S?.options??genDefaults(),r),T=S?.rtl.value,C=(typeof n=="number"?n:getTarget$1(n))??0,I=x.container==="parent"&&C instanceof HTMLElement?C.parentElement:getContainer(x.container),B=typeof x.easing=="function"?x.easing:x.patterns[x.easing];if(!B)throw new TypeError(`Easing function "${x.easing}" not found.`);let A;if(typeof C=="number")A=getOffset$2(C,_,T);else if(A=getOffset$2(C,_,T)-getOffset$2(I,_,T),x.layout){const M=window.getComputedStyle(C).getPropertyValue("--v-layout-top");M&&(A-=parseInt(M,10))}A+=x.offset,A=clampTarget(I,A,!!T,!!_);const D=I[E]??0;if(A===D)return Promise.resolve(A);const N=performance.now();return new Promise(O=>requestAnimationFrame(function M(L){const U=(L-N)/x.duration,j=Math.floor(D+(A-D)*B(clamp(U,0,1)));if(I[E]=j,U>=1&&Math.abs(j-I[E])<10)return O(A);if(U>2)return O(I[E]);requestAnimationFrame(M)}))}function useGoTo(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const r=inject$1(GoToSymbol),{isRtl:_}=useRtl();if(!r)throw new Error("[Vuetify] Could not find injected goto instance");const S={...r,rtl:computed(()=>r.rtl.value||_.value)};async function E(x,T){return scrollTo(x,mergeDeep(n,T),!1,S)}return E.horizontal=async(x,T)=>scrollTo(x,mergeDeep(n,T),!0,S),E}function clampTarget(n,r,_,S){const{scrollWidth:E,scrollHeight:x}=n,[T,C]=n===document.scrollingElement?[window.innerWidth,window.innerHeight]:[n.offsetWidth,n.offsetHeight];let I,B;return S?_?(I=-(E-T),B=0):(I=0,B=E-T):(I=0,B=x+-C),Math.max(Math.min(r,B),I)}function calculateUpdatedTarget(n){let{selectedElement:r,containerElement:_,isRtl:S,isHorizontal:E}=n;const x=getOffsetSize(E,_),T=getScrollPosition(E,S,_),C=getOffsetSize(E,r),I=getOffsetPosition(E,r),B=C*.4;return T>I?I-B:T+xtypeof n=="boolean"||["always","desktop","mobile"].includes(n)},...makeComponentProps(),...makeDisplayProps({mobile:null}),...makeTagProps(),...makeGroupProps({selectedClass:"v-slide-group-item--active"})},"VSlideGroup"),VSlideGroup=genericComponent()({name:"VSlideGroup",props:makeVSlideGroupProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{isRtl:S}=useRtl(),{displayClasses:E,mobile:x}=useDisplay(n),T=useGroup(n,n.symbol),C=shallowRef(!1),I=shallowRef(0),B=shallowRef(0),A=shallowRef(0),D=computed(()=>n.direction==="horizontal"),{resizeRef:N,contentRect:O}=useResizeObserver(),{resizeRef:M,contentRect:L}=useResizeObserver(),F=useGoTo(),U=computed(()=>({container:N.el,duration:200,easing:"easeOutQuart"})),j=computed(()=>T.selected.value.length?T.items.value.findIndex(se=>se.id===T.selected.value[0]):-1),z=computed(()=>T.selected.value.length?T.items.value.findIndex(se=>se.id===T.selected.value[T.selected.value.length-1]):-1);if(IN_BROWSER){let se=-1;watch(()=>[T.selected.value,O.value,L.value,D.value],()=>{cancelAnimationFrame(se),se=requestAnimationFrame(()=>{if(O.value&&L.value){const te=D.value?"width":"height";B.value=O.value[te],A.value=L.value[te],C.value=B.value+1=0&&M.el){const te=M.el.children[z.value];Q(te,n.centerActive)}})})}const H=shallowRef(!1);function Q(se,te){let X=0;te?X=calculateCenteredTarget({containerElement:N.el,isHorizontal:D.value,selectedElement:se}):X=calculateUpdatedTarget({containerElement:N.el,isHorizontal:D.value,isRtl:S.value,selectedElement:se}),J(X)}function J(se){if(!IN_BROWSER||!N.el)return;const te=getOffsetSize(D.value,N.el),X=getScrollPosition(D.value,S.value,N.el);if(!(getScrollSize(D.value,N.el)<=te||Math.abs(se-X)<16)){if(D.value&&S.value&&N.el){const{scrollWidth:le,offsetWidth:ye}=N.el;se=le-ye-se}D.value?F.horizontal(se,U.value):F(se,U.value)}}function Z(se){const{scrollTop:te,scrollLeft:X}=se.target;I.value=D.value?X:te}function re(se){if(H.value=!0,!(!C.value||!M.el)){for(const te of se.composedPath())for(const X of M.el.children)if(X===te){Q(X);return}}}function ie(se){H.value=!1}let pe=!1;function ue(se){!pe&&!H.value&&!(se.relatedTarget&&M.el?.contains(se.relatedTarget))&&q(),pe=!1}function W(){pe=!0}function Y(se){if(!M.el)return;function te(X){se.preventDefault(),q(X)}D.value?se.key==="ArrowRight"?te(S.value?"prev":"next"):se.key==="ArrowLeft"&&te(S.value?"next":"prev"):se.key==="ArrowDown"?te("next"):se.key==="ArrowUp"&&te("prev"),se.key==="Home"?te("first"):se.key==="End"&&te("last")}function q(se){if(!M.el)return;let te;if(!se)te=focusableChildren(M.el)[0];else if(se==="next"){if(te=M.el.querySelector(":focus")?.nextElementSibling,!te)return q("first")}else if(se==="prev"){if(te=M.el.querySelector(":focus")?.previousElementSibling,!te)return q("last")}else se==="first"?te=M.el.firstElementChild:se==="last"&&(te=M.el.lastElementChild);te&&te.focus({preventScroll:!0})}function G(se){const te=D.value&&S.value?-1:1,X=(se==="prev"?-te:te)*B.value;let ce=I.value+X;if(D.value&&S.value&&N.el){const{scrollWidth:le,offsetWidth:ye}=N.el;ce+=le-ye}J(ce)}const ne=computed(()=>({next:T.next,prev:T.prev,select:T.select,isSelected:T.isSelected})),ee=computed(()=>{switch(n.showArrows){case"always":return!0;case"desktop":return!x.value;case!0:return C.value||Math.abs(I.value)>0;case"mobile":return x.value||C.value||Math.abs(I.value)>0;default:return!x.value&&(C.value||Math.abs(I.value)>0)}}),oe=computed(()=>Math.abs(I.value)>1),ae=computed(()=>{if(!N.value)return!1;const se=getScrollSize(D.value,N.el),te=getClientSize(D.value,N.el);return se-te-Math.abs(I.value)>1});return useRender(()=>createVNode(n.tag,{class:["v-slide-group",{"v-slide-group--vertical":!D.value,"v-slide-group--has-affixes":ee.value,"v-slide-group--is-overflowing":C.value},E.value,n.class],style:n.style,tabindex:H.value||T.selected.value.length?-1:0,onFocus:ue},{default:()=>[ee.value&&createVNode("div",{key:"prev",class:["v-slide-group__prev",{"v-slide-group__prev--disabled":!oe.value}],onMousedown:W,onClick:()=>oe.value&&G("prev")},[_.prev?.(ne.value)??createVNode(VFadeTransition,null,{default:()=>[createVNode(VIcon,{icon:S.value?n.nextIcon:n.prevIcon},null)]})]),createVNode("div",{key:"container",ref:N,class:"v-slide-group__container",onScroll:Z},[createVNode("div",{ref:M,class:"v-slide-group__content",onFocusin:re,onFocusout:ie,onKeydown:Y},[_.default?.(ne.value)])]),ee.value&&createVNode("div",{key:"next",class:["v-slide-group__next",{"v-slide-group__next--disabled":!ae.value}],onMousedown:W,onClick:()=>ae.value&&G("next")},[_.next?.(ne.value)??createVNode(VFadeTransition,null,{default:()=>[createVNode(VIcon,{icon:S.value?n.prevIcon:n.nextIcon},null)]})])]})),{selected:T.selected,scrollTo:G,scrollOffset:I,focus:q,hasPrev:oe,hasNext:ae}}}),VChipGroupSymbol=Symbol.for("vuetify:v-chip-group"),makeVChipGroupProps=propsFactory({column:Boolean,filter:Boolean,valueComparator:{type:Function,default:deepEqual$2},...makeVSlideGroupProps(),...makeComponentProps(),...makeGroupProps({selectedClass:"v-chip--selected"}),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:"tonal"})},"VChipGroup"),VChipGroup=genericComponent()({name:"VChipGroup",props:makeVChipGroupProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n),{isSelected:E,select:x,next:T,prev:C,selected:I}=useGroup(n,VChipGroupSymbol);return provideDefaults({VChip:{color:toRef(n,"color"),disabled:toRef(n,"disabled"),filter:toRef(n,"filter"),variant:toRef(n,"variant")}}),useRender(()=>{const B=VSlideGroup.filterProps(n);return createVNode(VSlideGroup,mergeProps(B,{class:["v-chip-group",{"v-chip-group--column":n.column},S.value,n.class],style:n.style}),{default:()=>[_.default?.({isSelected:E,select:x,next:T,prev:C,selected:I.value})]})}),{}}}),makeVChipProps=propsFactory({activeClass:String,appendAvatar:String,appendIcon:IconValue,closable:Boolean,closeIcon:{type:IconValue,default:"$delete"},closeLabel:{type:String,default:"$vuetify.close"},draggable:Boolean,filter:Boolean,filterIcon:{type:String,default:"$complete"},label:Boolean,link:{type:Boolean,default:void 0},pill:Boolean,prependAvatar:String,prependIcon:IconValue,ripple:{type:[Boolean,Object],default:!0},text:String,modelValue:{type:Boolean,default:!0},onClick:EventProp(),onClickOnce:EventProp(),...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeElevationProps(),...makeGroupItemProps(),...makeRoundedProps(),...makeRouterProps(),...makeSizeProps(),...makeTagProps({tag:"span"}),...makeThemeProps(),...makeVariantProps({variant:"tonal"})},"VChip"),VChip=genericComponent()({name:"VChip",directives:{Ripple},props:makeVChipProps(),emits:{"click:close":n=>!0,"update:modelValue":n=>!0,"group:selected":n=>!0,click:n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{t:x}=useLocale(),{borderClasses:T}=useBorder(n),{colorClasses:C,colorStyles:I,variantClasses:B}=useVariant(n),{densityClasses:A}=useDensity(n),{elevationClasses:D}=useElevation(n),{roundedClasses:N}=useRounded(n),{sizeClasses:O}=useSize(n),{themeClasses:M}=provideTheme(n),L=useProxiedModel(n,"modelValue"),F=useGroupItem(n,VChipGroupSymbol,!1),U=useLink$1(n,_),j=computed(()=>n.link!==!1&&U.isLink.value),z=computed(()=>!n.disabled&&n.link!==!1&&(!!F||n.link||U.isClickable.value)),H=computed(()=>({"aria-label":x(n.closeLabel),onClick(Z){Z.preventDefault(),Z.stopPropagation(),L.value=!1,S("click:close",Z)}}));function Q(Z){S("click",Z),z.value&&(U.navigate?.(Z),F?.toggle())}function J(Z){(Z.key==="Enter"||Z.key===" ")&&(Z.preventDefault(),Q(Z))}return()=>{const Z=U.isLink.value?"a":n.tag,re=!!(n.appendIcon||n.appendAvatar),ie=!!(re||E.append),pe=!!(E.close||n.closable),ue=!!(E.filter||n.filter)&&F,W=!!(n.prependIcon||n.prependAvatar),Y=!!(W||E.prepend),q=!F||F.isSelected.value;return L.value&&withDirectives(createVNode(Z,mergeProps({class:["v-chip",{"v-chip--disabled":n.disabled,"v-chip--label":n.label,"v-chip--link":z.value,"v-chip--filter":ue,"v-chip--pill":n.pill},M.value,T.value,q?C.value:void 0,A.value,D.value,N.value,O.value,B.value,F?.selectedClass.value,n.class],style:[q?I.value:void 0,n.style],disabled:n.disabled||void 0,draggable:n.draggable,tabindex:z.value?0:void 0,onClick:Q,onKeydown:z.value&&!j.value&&J},U.linkProps),{default:()=>[genOverlays(z.value,"v-chip"),ue&&createVNode(VExpandXTransition,{key:"filter"},{default:()=>[withDirectives(createVNode("div",{class:"v-chip__filter"},[E.filter?createVNode(VDefaultsProvider,{key:"filter-defaults",disabled:!n.filterIcon,defaults:{VIcon:{icon:n.filterIcon}}},E.filter):createVNode(VIcon,{key:"filter-icon",icon:n.filterIcon},null)]),[[vShow,F.isSelected.value]])]}),Y&&createVNode("div",{key:"prepend",class:"v-chip__prepend"},[E.prepend?createVNode(VDefaultsProvider,{key:"prepend-defaults",disabled:!W,defaults:{VAvatar:{image:n.prependAvatar,start:!0},VIcon:{icon:n.prependIcon,start:!0}}},E.prepend):createVNode(Fragment,null,[n.prependIcon&&createVNode(VIcon,{key:"prepend-icon",icon:n.prependIcon,start:!0},null),n.prependAvatar&&createVNode(VAvatar,{key:"prepend-avatar",image:n.prependAvatar,start:!0},null)])]),createVNode("div",{class:"v-chip__content","data-no-activator":""},[E.default?.({isSelected:F?.isSelected.value,selectedClass:F?.selectedClass.value,select:F?.select,toggle:F?.toggle,value:F?.value.value,disabled:n.disabled})??n.text]),ie&&createVNode("div",{key:"append",class:"v-chip__append"},[E.append?createVNode(VDefaultsProvider,{key:"append-defaults",disabled:!re,defaults:{VAvatar:{end:!0,image:n.appendAvatar},VIcon:{end:!0,icon:n.appendIcon}}},E.append):createVNode(Fragment,null,[n.appendIcon&&createVNode(VIcon,{key:"append-icon",end:!0,icon:n.appendIcon},null),n.appendAvatar&&createVNode(VAvatar,{key:"append-avatar",end:!0,image:n.appendAvatar},null)])]),pe&&createVNode("button",mergeProps({key:"close",class:"v-chip__close",type:"button"},H.value),[E.close?createVNode(VDefaultsProvider,{key:"close-defaults",defaults:{VIcon:{icon:n.closeIcon,size:"x-small"}}},E.close):createVNode(VIcon,{key:"close-icon",icon:n.closeIcon,size:"x-small"},null)])]}),[[resolveDirective("ripple"),z.value&&n.ripple,null]])}}});function elementToViewport(n,r){return{x:n.x+r.x,y:n.y+r.y}}function getOffset$1(n,r){return{x:n.x-r.x,y:n.y-r.y}}function anchorToPoint(n,r){if(n.side==="top"||n.side==="bottom"){const{side:_,align:S}=n,E=S==="left"?0:S==="center"?r.width/2:S==="right"?r.width:S,x=_==="top"?0:_==="bottom"?r.height:_;return elementToViewport({x:E,y:x},r)}else if(n.side==="left"||n.side==="right"){const{side:_,align:S}=n,E=_==="left"?0:_==="right"?r.width:_,x=S==="top"?0:S==="center"?r.height/2:S==="bottom"?r.height:S;return elementToViewport({x:E,y:x},r)}return elementToViewport({x:r.width/2,y:r.height/2},r)}const locationStrategies={static:staticLocationStrategy,connected:connectedLocationStrategy},makeLocationStrategyProps=propsFactory({locationStrategy:{type:[String,Function],default:"static",validator:n=>typeof n=="function"||n in locationStrategies},location:{type:String,default:"bottom"},origin:{type:String,default:"auto"},offset:[Number,String,Array]},"VOverlay-location-strategies");function useLocationStrategies(n,r){const _=ref$2({}),S=ref$2();IN_BROWSER&&useToggleScope(()=>!!(r.isActive.value&&n.locationStrategy),x=>{watch(()=>n.locationStrategy,x),onScopeDispose(()=>{window.removeEventListener("resize",E),S.value=void 0}),window.addEventListener("resize",E,{passive:!0}),typeof n.locationStrategy=="function"?S.value=n.locationStrategy(r,n,_)?.updateLocation:S.value=locationStrategies[n.locationStrategy](r,n,_)?.updateLocation});function E(x){S.value?.(x)}return{contentStyles:_,updateLocation:S}}function staticLocationStrategy(){}function getIntrinsicSize(n,r){const _=nullifyTransforms(n);return r?_.x+=parseFloat(n.style.right||0):_.x-=parseFloat(n.style.left||0),_.y-=parseFloat(n.style.top||0),_}function connectedLocationStrategy(n,r,_){(Array.isArray(n.target.value)||isFixedPosition(n.target.value))&&Object.assign(_.value,{position:"fixed",top:0,[n.isRtl.value?"right":"left"]:0});const{preferredAnchor:E,preferredOrigin:x}=destructComputed(()=>{const M=parseAnchor(r.location,n.isRtl.value),L=r.origin==="overlap"?M:r.origin==="auto"?flipSide(M):parseAnchor(r.origin,n.isRtl.value);return M.side===L.side&&M.align===flipAlign(L).align?{preferredAnchor:flipCorner(M),preferredOrigin:flipCorner(L)}:{preferredAnchor:M,preferredOrigin:L}}),[T,C,I,B]=["minWidth","minHeight","maxWidth","maxHeight"].map(M=>computed(()=>{const L=parseFloat(r[M]);return isNaN(L)?1/0:L})),A=computed(()=>{if(Array.isArray(r.offset))return r.offset;if(typeof r.offset=="string"){const M=r.offset.split(" ").map(parseFloat);return M.length<2&&M.push(0),M}return typeof r.offset=="number"?[r.offset,0]:[0,0]});let D=!1;const N=new ResizeObserver(()=>{D&&O()});watch([n.target,n.contentEl],(M,L)=>{let[F,U]=M,[j,z]=L;j&&!Array.isArray(j)&&N.unobserve(j),F&&!Array.isArray(F)&&N.observe(F),z&&N.unobserve(z),U&&N.observe(U)},{immediate:!0}),onScopeDispose(()=>{N.disconnect()});function O(){if(D=!1,requestAnimationFrame(()=>D=!0),!n.target.value||!n.contentEl.value)return;const M=getTargetBox(n.target.value),L=getIntrinsicSize(n.contentEl.value,n.isRtl.value),F=getScrollParents(n.contentEl.value),U=12;F.length||(F.push(document.documentElement),n.contentEl.value.style.top&&n.contentEl.value.style.left||(L.x-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-x")||0),L.y-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-y")||0)));const j=F.reduce((ue,W)=>{const Y=W.getBoundingClientRect(),q=new Box({x:W===document.documentElement?0:Y.x,y:W===document.documentElement?0:Y.y,width:W.clientWidth,height:W.clientHeight});return ue?new Box({x:Math.max(ue.left,q.left),y:Math.max(ue.top,q.top),width:Math.min(ue.right,q.right)-Math.max(ue.left,q.left),height:Math.min(ue.bottom,q.bottom)-Math.max(ue.top,q.top)}):q},void 0);j.x+=U,j.y+=U,j.width-=U*2,j.height-=U*2;let z={anchor:E.value,origin:x.value};function H(ue){const W=new Box(L),Y=anchorToPoint(ue.anchor,M),q=anchorToPoint(ue.origin,W);let{x:G,y:ne}=getOffset$1(Y,q);switch(ue.anchor.side){case"top":ne-=A.value[0];break;case"bottom":ne+=A.value[0];break;case"left":G-=A.value[0];break;case"right":G+=A.value[0];break}switch(ue.anchor.align){case"top":ne-=A.value[1];break;case"bottom":ne+=A.value[1];break;case"left":G-=A.value[1];break;case"right":G+=A.value[1];break}return W.x+=G,W.y+=ne,W.width=Math.min(W.width,I.value),W.height=Math.min(W.height,B.value),{overflows:getOverflow(W,j),x:G,y:ne}}let Q=0,J=0;const Z={x:0,y:0},re={x:!1,y:!1};let ie=-1;for(;!(ie++>10);){const{x:ue,y:W,overflows:Y}=H(z);Q+=ue,J+=W,L.x+=ue,L.y+=W;{const q=getAxis(z.anchor),G=Y.x.before||Y.x.after,ne=Y.y.before||Y.y.after;let ee=!1;if(["x","y"].forEach(oe=>{if(oe==="x"&&G&&!re.x||oe==="y"&&ne&&!re.y){const ae={anchor:{...z.anchor},origin:{...z.origin}},se=oe==="x"?q==="y"?flipAlign:flipSide:q==="y"?flipSide:flipAlign;ae.anchor=se(ae.anchor),ae.origin=se(ae.origin);const{overflows:te}=H(ae);(te[oe].before<=Y[oe].before&&te[oe].after<=Y[oe].after||te[oe].before+te[oe].after<(Y[oe].before+Y[oe].after)/2)&&(z=ae,ee=re[oe]=!0)}}),ee)continue}Y.x.before&&(Q+=Y.x.before,L.x+=Y.x.before),Y.x.after&&(Q-=Y.x.after,L.x-=Y.x.after),Y.y.before&&(J+=Y.y.before,L.y+=Y.y.before),Y.y.after&&(J-=Y.y.after,L.y-=Y.y.after);{const q=getOverflow(L,j);Z.x=j.width-q.x.before-q.x.after,Z.y=j.height-q.y.before-q.y.after,Q+=q.x.before,L.x+=q.x.before,J+=q.y.before,L.y+=q.y.before}break}const pe=getAxis(z.anchor);return Object.assign(_.value,{"--v-overlay-anchor-origin":`${z.anchor.side} ${z.anchor.align}`,transformOrigin:`${z.origin.side} ${z.origin.align}`,top:convertToUnit(pixelRound(J)),left:n.isRtl.value?void 0:convertToUnit(pixelRound(Q)),right:n.isRtl.value?convertToUnit(pixelRound(-Q)):void 0,minWidth:convertToUnit(pe==="y"?Math.min(T.value,M.width):T.value),maxWidth:convertToUnit(pixelCeil(clamp(Z.x,T.value===1/0?0:T.value,I.value))),maxHeight:convertToUnit(pixelCeil(clamp(Z.y,C.value===1/0?0:C.value,B.value)))}),{available:Z,contentBox:L}}return watch(()=>[E.value,x.value,r.offset,r.minWidth,r.minHeight,r.maxWidth,r.maxHeight],()=>O()),nextTick$2(()=>{const M=O();if(!M)return;const{available:L,contentBox:F}=M;F.height>L.y&&requestAnimationFrame(()=>{O(),requestAnimationFrame(()=>{O()})})}),{updateLocation:O}}function pixelRound(n){return Math.round(n*devicePixelRatio)/devicePixelRatio}function pixelCeil(n){return Math.ceil(n*devicePixelRatio)/devicePixelRatio}let clean=!0;const frames=[];function requestNewFrame(n){!clean||frames.length?(frames.push(n),run()):(clean=!1,n(),run())}let raf=-1;function run(){cancelAnimationFrame(raf),raf=requestAnimationFrame(()=>{const n=frames.shift();n&&n(),frames.length?run():clean=!0})}const scrollStrategies={none:null,close:closeScrollStrategy,block:blockScrollStrategy,reposition:repositionScrollStrategy},makeScrollStrategyProps=propsFactory({scrollStrategy:{type:[String,Function],default:"block",validator:n=>typeof n=="function"||n in scrollStrategies}},"VOverlay-scroll-strategies");function useScrollStrategies(n,r){if(!IN_BROWSER)return;let _;watchEffect(async()=>{_?.stop(),r.isActive.value&&n.scrollStrategy&&(_=effectScope(),await new Promise(S=>setTimeout(S)),_.active&&_.run(()=>{typeof n.scrollStrategy=="function"?n.scrollStrategy(r,n,_):scrollStrategies[n.scrollStrategy]?.(r,n,_)}))}),onScopeDispose(()=>{_?.stop()})}function closeScrollStrategy(n){function r(_){n.isActive.value=!1}bindScroll(n.targetEl.value??n.contentEl.value,r)}function blockScrollStrategy(n,r){const _=n.root.value?.offsetParent,S=[...new Set([...getScrollParents(n.targetEl.value,r.contained?_:void 0),...getScrollParents(n.contentEl.value,r.contained?_:void 0)])].filter(T=>!T.classList.contains("v-overlay-scroll-blocked")),E=window.innerWidth-document.documentElement.offsetWidth,x=(T=>hasScrollbar(T)&&T)(_||document.documentElement);x&&n.root.value.classList.add("v-overlay--scroll-blocked"),S.forEach((T,C)=>{T.style.setProperty("--v-body-scroll-x",convertToUnit(-T.scrollLeft)),T.style.setProperty("--v-body-scroll-y",convertToUnit(-T.scrollTop)),T!==document.documentElement&&T.style.setProperty("--v-scrollbar-offset",convertToUnit(E)),T.classList.add("v-overlay-scroll-blocked")}),onScopeDispose(()=>{S.forEach((T,C)=>{const I=parseFloat(T.style.getPropertyValue("--v-body-scroll-x")),B=parseFloat(T.style.getPropertyValue("--v-body-scroll-y")),A=T.style.scrollBehavior;T.style.scrollBehavior="auto",T.style.removeProperty("--v-body-scroll-x"),T.style.removeProperty("--v-body-scroll-y"),T.style.removeProperty("--v-scrollbar-offset"),T.classList.remove("v-overlay-scroll-blocked"),T.scrollLeft=-I,T.scrollTop=-B,T.style.scrollBehavior=A}),x&&n.root.value.classList.remove("v-overlay--scroll-blocked")})}function repositionScrollStrategy(n,r,_){let S=!1,E=-1,x=-1;function T(C){requestNewFrame(()=>{const I=performance.now();n.updateLocation.value?.(C),S=(performance.now()-I)/(1e3/60)>2})}x=(typeof requestIdleCallback>"u"?C=>C():requestIdleCallback)(()=>{_.run(()=>{bindScroll(n.targetEl.value??n.contentEl.value,C=>{S?(cancelAnimationFrame(E),E=requestAnimationFrame(()=>{E=requestAnimationFrame(()=>{T(C)})})):T(C)})})}),onScopeDispose(()=>{typeof cancelIdleCallback<"u"&&cancelIdleCallback(x),cancelAnimationFrame(E)})}function bindScroll(n,r){const _=[document,...getScrollParents(n)];_.forEach(S=>{S.addEventListener("scroll",r,{passive:!0})}),onScopeDispose(()=>{_.forEach(S=>{S.removeEventListener("scroll",r)})})}const VMenuSymbol=Symbol.for("vuetify:v-menu"),makeDelayProps=propsFactory({closeDelay:[Number,String],openDelay:[Number,String]},"delay");function useDelay(n,r){let _=()=>{};function S(T){_?.();const C=Number(T?n.openDelay:n.closeDelay);return new Promise(I=>{_=defer(C,()=>{r?.(T),I(T)})})}function E(){return S(!0)}function x(){return S(!1)}return{clearDelay:_,runOpenDelay:E,runCloseDelay:x}}const makeActivatorProps=propsFactory({target:[String,Object],activator:[String,Object],activatorProps:{type:Object,default:()=>({})},openOnClick:{type:Boolean,default:void 0},openOnHover:Boolean,openOnFocus:{type:Boolean,default:void 0},closeOnContentClick:Boolean,...makeDelayProps()},"VOverlay-activator");function useActivator(n,r){let{isActive:_,isTop:S,contentEl:E}=r;const x=getCurrentInstance("useActivator"),T=ref$2();let C=!1,I=!1,B=!0;const A=computed(()=>n.openOnFocus||n.openOnFocus==null&&n.openOnHover),D=computed(()=>n.openOnClick||n.openOnClick==null&&!n.openOnHover&&!A.value),{runOpenDelay:N,runCloseDelay:O}=useDelay(n,re=>{re===(n.openOnHover&&C||A.value&&I)&&!(n.openOnHover&&_.value&&!S.value)&&(_.value!==re&&(B=!0),_.value=re)}),M=ref$2(),L={onClick:re=>{re.stopPropagation(),T.value=re.currentTarget||re.target,_.value||(M.value=[re.clientX,re.clientY]),_.value=!_.value},onMouseenter:re=>{re.sourceCapabilities?.firesTouchEvents||(C=!0,T.value=re.currentTarget||re.target,N())},onMouseleave:re=>{C=!1,O()},onFocus:re=>{matchesSelector(re.target,":focus-visible")!==!1&&(I=!0,re.stopPropagation(),T.value=re.currentTarget||re.target,N())},onBlur:re=>{I=!1,re.stopPropagation(),O()}},F=computed(()=>{const re={};return D.value&&(re.onClick=L.onClick),n.openOnHover&&(re.onMouseenter=L.onMouseenter,re.onMouseleave=L.onMouseleave),A.value&&(re.onFocus=L.onFocus,re.onBlur=L.onBlur),re}),U=computed(()=>{const re={};if(n.openOnHover&&(re.onMouseenter=()=>{C=!0,N()},re.onMouseleave=()=>{C=!1,O()}),A.value&&(re.onFocusin=()=>{I=!0,N()},re.onFocusout=()=>{I=!1,O()}),n.closeOnContentClick){const ie=inject$1(VMenuSymbol,null);re.onClick=()=>{_.value=!1,ie?.closeParents()}}return re}),j=computed(()=>{const re={};return n.openOnHover&&(re.onMouseenter=()=>{B&&(C=!0,B=!1,N())},re.onMouseleave=()=>{C=!1,O()}),re});watch(S,re=>{re&&(n.openOnHover&&!C&&(!A.value||!I)||A.value&&!I&&(!n.openOnHover||!C))&&!E.value?.contains(document.activeElement)&&(_.value=!1)}),watch(_,re=>{re||setTimeout(()=>{M.value=void 0})},{flush:"post"});const z=templateRef();watchEffect(()=>{z.value&&nextTick$2(()=>{T.value=z.el})});const H=templateRef(),Q=computed(()=>n.target==="cursor"&&M.value?M.value:H.value?H.el:getTarget(n.target,x)||T.value),J=computed(()=>Array.isArray(Q.value)?void 0:Q.value);let Z;return watch(()=>!!n.activator,re=>{re&&IN_BROWSER?(Z=effectScope(),Z.run(()=>{_useActivator(n,x,{activatorEl:T,activatorEvents:F})})):Z&&Z.stop()},{flush:"post",immediate:!0}),onScopeDispose(()=>{Z?.stop()}),{activatorEl:T,activatorRef:z,target:Q,targetEl:J,targetRef:H,activatorEvents:F,contentEvents:U,scrimEvents:j}}function _useActivator(n,r,_){let{activatorEl:S,activatorEvents:E}=_;watch(()=>n.activator,(I,B)=>{if(B&&I!==B){const A=C(B);A&&T(A)}I&&nextTick$2(()=>x())},{immediate:!0}),watch(()=>n.activatorProps,()=>{x()}),onScopeDispose(()=>{T()});function x(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:C(),B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:n.activatorProps;I&&bindProps(I,mergeProps(E.value,B))}function T(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:C(),B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:n.activatorProps;I&&unbindProps(I,mergeProps(E.value,B))}function C(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:n.activator;const B=getTarget(I,r);return S.value=B?.nodeType===Node.ELEMENT_NODE?B:void 0,S.value}}function getTarget(n,r){if(!n)return;let _;if(n==="parent"){let S=r?.proxy?.$el?.parentNode;for(;S?.hasAttribute("data-no-activator");)S=S.parentNode;_=S}else typeof n=="string"?_=document.querySelector(n):"$el"in n?_=n.$el:_=n;return _}function useHydration(){if(!IN_BROWSER)return shallowRef(!1);const{ssr:n}=useDisplay();if(n){const r=shallowRef(!1);return onMounted(()=>{r.value=!0}),r}else return shallowRef(!0)}const makeLazyProps=propsFactory({eager:Boolean},"lazy");function useLazy(n,r){const _=shallowRef(!1),S=computed(()=>_.value||n.eager||r.value);watch(r,()=>_.value=!0);function E(){n.eager||(_.value=!1)}return{isBooted:_,hasContent:S,onAfterLeave:E}}function useScopeId(){const r=getCurrentInstance("useScopeId").vnode.scopeId;return{scopeId:r?{[r]:""}:void 0}}const StackSymbol=Symbol.for("vuetify:stack"),globalStack=reactive([]);function useStack(n,r,_){const S=getCurrentInstance("useStack"),E=!_,x=inject$1(StackSymbol,void 0),T=reactive({activeChildren:new Set});provide(StackSymbol,T);const C=shallowRef(+r.value);useToggleScope(n,()=>{const A=globalStack.at(-1)?.[1];C.value=A?A+10:+r.value,E&&globalStack.push([S.uid,C.value]),x?.activeChildren.add(S.uid),onScopeDispose(()=>{if(E){const D=toRaw(globalStack).findIndex(N=>N[0]===S.uid);globalStack.splice(D,1)}x?.activeChildren.delete(S.uid)})});const I=shallowRef(!0);E&&watchEffect(()=>{const A=globalStack.at(-1)?.[0]===S.uid;setTimeout(()=>I.value=A)});const B=computed(()=>!T.activeChildren.size);return{globalTop:readonly$2(I),localTop:B,stackStyles:computed(()=>({zIndex:C.value}))}}function useTeleport(n){return{teleportTarget:computed(()=>{const _=n();if(_===!0||!IN_BROWSER)return;const S=_===!1?document.body:typeof _=="string"?document.querySelector(_):_;if(S==null)return;let E=[...S.children].find(x=>x.matches(".v-overlay-container"));return E||(E=document.createElement("div"),E.className="v-overlay-container",S.appendChild(E)),E})}}function defaultConditional(){return!0}function checkEvent(n,r,_){if(!n||checkIsActive(n,_)===!1)return!1;const S=attachedRoot(r);if(typeof ShadowRoot<"u"&&S instanceof ShadowRoot&&S.host===n.target)return!1;const E=(typeof _.value=="object"&&_.value.include||(()=>[]))();return E.push(r),!E.some(x=>x?.contains(n.target))}function checkIsActive(n,r){return(typeof r.value=="object"&&r.value.closeConditional||defaultConditional)(n)}function directive(n,r,_){const S=typeof _.value=="function"?_.value:_.value.handler;n.shadowTarget=n.target,r._clickOutside.lastMousedownWasOutside&&checkEvent(n,r,_)&&setTimeout(()=>{checkIsActive(n,_)&&S&&S(n)},0)}function handleShadow(n,r){const _=attachedRoot(n);r(document),typeof ShadowRoot<"u"&&_ instanceof ShadowRoot&&r(_)}const ClickOutside={mounted(n,r){const _=E=>directive(E,n,r),S=E=>{n._clickOutside.lastMousedownWasOutside=checkEvent(E,n,r)};handleShadow(n,E=>{E.addEventListener("click",_,!0),E.addEventListener("mousedown",S,!0)}),n._clickOutside||(n._clickOutside={lastMousedownWasOutside:!1}),n._clickOutside[r.instance.$.uid]={onClick:_,onMousedown:S}},beforeUnmount(n,r){n._clickOutside&&(handleShadow(n,_=>{if(!_||!n._clickOutside?.[r.instance.$.uid])return;const{onClick:S,onMousedown:E}=n._clickOutside[r.instance.$.uid];_.removeEventListener("click",S,!0),_.removeEventListener("mousedown",E,!0)}),delete n._clickOutside[r.instance.$.uid])}};function Scrim(n){const{modelValue:r,color:_,...S}=n;return createVNode(Transition,{name:"fade-transition",appear:!0},{default:()=>[n.modelValue&&createVNode("div",mergeProps({class:["v-overlay__scrim",n.color.backgroundColorClasses.value],style:n.color.backgroundColorStyles.value},S),null)]})}const makeVOverlayProps=propsFactory({absolute:Boolean,attach:[Boolean,String,Object],closeOnBack:{type:Boolean,default:!0},contained:Boolean,contentClass:null,contentProps:null,disabled:Boolean,opacity:[Number,String],noClickAnimation:Boolean,modelValue:Boolean,persistent:Boolean,scrim:{type:[Boolean,String],default:!0},zIndex:{type:[Number,String],default:2e3},...makeActivatorProps(),...makeComponentProps(),...makeDimensionProps(),...makeLazyProps(),...makeLocationStrategyProps(),...makeScrollStrategyProps(),...makeThemeProps(),...makeTransitionProps()},"VOverlay"),VOverlay=genericComponent()({name:"VOverlay",directives:{ClickOutside},inheritAttrs:!1,props:{_disableGlobalStack:Boolean,...makeVOverlayProps()},emits:{"click:outside":n=>!0,"update:modelValue":n=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(n,r){let{slots:_,attrs:S,emit:E}=r;const x=getCurrentInstance("VOverlay"),T=ref$2(),C=ref$2(),I=ref$2(),B=useProxiedModel(n,"modelValue"),A=computed({get:()=>B.value,set:de=>{de&&n.disabled||(B.value=de)}}),{themeClasses:D}=provideTheme(n),{rtlClasses:N,isRtl:O}=useRtl(),{hasContent:M,onAfterLeave:L}=useLazy(n,A),F=useBackgroundColor(computed(()=>typeof n.scrim=="string"?n.scrim:null)),{globalTop:U,localTop:j,stackStyles:z}=useStack(A,toRef(n,"zIndex"),n._disableGlobalStack),{activatorEl:H,activatorRef:Q,target:J,targetEl:Z,targetRef:re,activatorEvents:ie,contentEvents:pe,scrimEvents:ue}=useActivator(n,{isActive:A,isTop:j,contentEl:I}),{teleportTarget:W}=useTeleport(()=>{const de=n.attach||n.contained;if(de)return de;const he=H?.value?.getRootNode()||x.proxy?.$el?.getRootNode();return he instanceof ShadowRoot?he:!1}),{dimensionStyles:Y}=useDimension(n),q=useHydration(),{scopeId:G}=useScopeId();watch(()=>n.disabled,de=>{de&&(A.value=!1)});const{contentStyles:ne,updateLocation:ee}=useLocationStrategies(n,{isRtl:O,contentEl:I,target:J,isActive:A});useScrollStrategies(n,{root:T,contentEl:I,targetEl:Z,isActive:A,updateLocation:ee});function oe(de){E("click:outside",de),n.persistent?ce():A.value=!1}function ae(de){return A.value&&U.value&&(!n.scrim||de.target===C.value||de instanceof MouseEvent&&de.shadowTarget===C.value)}IN_BROWSER&&watch(A,de=>{de?window.addEventListener("keydown",se):window.removeEventListener("keydown",se)},{immediate:!0}),onBeforeUnmount(()=>{IN_BROWSER&&window.removeEventListener("keydown",se)});function se(de){de.key==="Escape"&&U.value&&(n.persistent?ce():(A.value=!1,I.value?.contains(document.activeElement)&&H.value?.focus()))}const te=useRouter();useToggleScope(()=>n.closeOnBack,()=>{useBackButton(te,de=>{U.value&&A.value?(de(!1),n.persistent?ce():A.value=!1):de()})});const X=ref$2();watch(()=>A.value&&(n.absolute||n.contained)&&W.value==null,de=>{if(de){const he=getScrollParent(T.value);he&&he!==document.scrollingElement&&(X.value=he.scrollTop)}});function ce(){n.noClickAnimation||I.value&&animate(I.value,[{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:standardEasing})}function le(){E("afterEnter")}function ye(){L(),E("afterLeave")}return useRender(()=>createVNode(Fragment,null,[_.activator?.({isActive:A.value,targetRef:re,props:mergeProps({ref:Q},ie.value,n.activatorProps)}),q.value&&M.value&&createVNode(Teleport,{disabled:!W.value,to:W.value},{default:()=>[createVNode("div",mergeProps({class:["v-overlay",{"v-overlay--absolute":n.absolute||n.contained,"v-overlay--active":A.value,"v-overlay--contained":n.contained},D.value,N.value,n.class],style:[z.value,{"--v-overlay-opacity":n.opacity,top:convertToUnit(X.value)},n.style],ref:T},G,S),[createVNode(Scrim,mergeProps({color:F,modelValue:A.value&&!!n.scrim,ref:C},ue.value),null),createVNode(MaybeTransition,{appear:!0,persisted:!0,transition:n.transition,target:J.value,onAfterEnter:le,onAfterLeave:ye},{default:()=>[withDirectives(createVNode("div",mergeProps({ref:I,class:["v-overlay__content",n.contentClass],style:[Y.value,ne.value]},pe.value,n.contentProps),[_.default?.({isActive:A})]),[[vShow,A.value],[resolveDirective("click-outside"),{handler:oe,closeConditional:ae,include:()=>[H.value]}]])]})])]})])),{activatorEl:H,scrimEl:C,target:J,animateClick:ce,contentEl:I,globalTop:U,localTop:j,updateLocation:ee}}}),Refs=Symbol("Forwarded refs");function getDescriptor(n,r){let _=n;for(;_;){const S=Reflect.getOwnPropertyDescriptor(_,r);if(S)return S;_=Object.getPrototypeOf(_)}}function forwardRefs(n){for(var r=arguments.length,_=new Array(r>1?r-1:0),S=1;S!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),{scopeId:E}=useScopeId(),{isRtl:x}=useRtl(),T=getUid(),C=computed(()=>n.id||`v-menu-${T}`),I=ref$2(),B=inject$1(VMenuSymbol,null),A=shallowRef(new Set);provide(VMenuSymbol,{register(){A.value.add(T)},unregister(){A.value.delete(T)},closeParents(F){setTimeout(()=>{!A.value.size&&!n.persistent&&(F==null||I.value?.contentEl&&!isClickInsideElement(F,I.value.contentEl))&&(S.value=!1,B?.closeParents())},40)}}),onBeforeUnmount(()=>B?.unregister()),onDeactivated(()=>S.value=!1);async function D(F){const U=F.relatedTarget,j=F.target;await nextTick$2(),S.value&&U!==j&&I.value?.contentEl&&I.value?.globalTop&&![document,I.value.contentEl].includes(j)&&!I.value.contentEl.contains(j)&&focusableChildren(I.value.contentEl)[0]?.focus()}watch(S,F=>{F?(B?.register(),document.addEventListener("focusin",D,{once:!0})):(B?.unregister(),document.removeEventListener("focusin",D))});function N(F){B?.closeParents(F)}function O(F){if(!n.disabled)if(F.key==="Tab"||F.key==="Enter"&&!n.closeOnContentClick){if(F.key==="Enter"&&(F.target instanceof HTMLTextAreaElement||F.target instanceof HTMLInputElement&&F.target.closest("form")))return;F.key==="Enter"&&F.preventDefault(),getNextElement(focusableChildren(I.value?.contentEl,!1),F.shiftKey?"prev":"next",j=>j.tabIndex>=0)||(S.value=!1,I.value?.activatorEl?.focus())}else n.submenu&&F.key===(x.value?"ArrowRight":"ArrowLeft")&&(S.value=!1,I.value?.activatorEl?.focus())}function M(F){if(n.disabled)return;const U=I.value?.contentEl;U&&S.value?F.key==="ArrowDown"?(F.preventDefault(),F.stopImmediatePropagation(),focusChild(U,"next")):F.key==="ArrowUp"?(F.preventDefault(),F.stopImmediatePropagation(),focusChild(U,"prev")):n.submenu&&(F.key===(x.value?"ArrowRight":"ArrowLeft")?S.value=!1:F.key===(x.value?"ArrowLeft":"ArrowRight")&&(F.preventDefault(),focusChild(U,"first"))):(n.submenu?F.key===(x.value?"ArrowLeft":"ArrowRight"):["ArrowDown","ArrowUp"].includes(F.key))&&(S.value=!0,F.preventDefault(),setTimeout(()=>setTimeout(()=>M(F))))}const L=computed(()=>mergeProps({"aria-haspopup":"menu","aria-expanded":String(S.value),"aria-owns":C.value,onKeydown:M},n.activatorProps));return useRender(()=>{const F=VOverlay.filterProps(n);return createVNode(VOverlay,mergeProps({ref:I,id:C.value,class:["v-menu",n.class],style:n.style},F,{modelValue:S.value,"onUpdate:modelValue":U=>S.value=U,absolute:!0,activatorProps:L.value,location:n.location??(n.submenu?"end":"bottom"),"onClick:outside":N,onKeydown:O},E),{activator:_.activator,default:function(){for(var U=arguments.length,j=new Array(U),z=0;z[_.default?.(...j)]})}})}),forwardRefs({id:C,ΨopenChildren:A},I)}}),makeVCounterProps=propsFactory({active:Boolean,disabled:Boolean,max:[Number,String],value:{type:[Number,String],default:0},...makeComponentProps(),...makeTransitionProps({transition:{component:VSlideYTransition}})},"VCounter"),VCounter=genericComponent()({name:"VCounter",functional:!0,props:makeVCounterProps(),setup(n,r){let{slots:_}=r;const S=computed(()=>n.max?`${n.value} / ${n.max}`:String(n.value));return useRender(()=>createVNode(MaybeTransition,{transition:n.transition},{default:()=>[withDirectives(createVNode("div",{class:["v-counter",{"text-error":n.max&&!n.disabled&&parseFloat(n.value)>parseFloat(n.max)},n.class],style:n.style},[_.default?_.default({counter:S.value,max:n.max,value:n.value}):S.value]),[[vShow,n.active]])]})),{}}}),makeVFieldLabelProps=propsFactory({floating:Boolean,...makeComponentProps()},"VFieldLabel"),VFieldLabel=genericComponent()({name:"VFieldLabel",props:makeVFieldLabelProps(),setup(n,r){let{slots:_}=r;return useRender(()=>createVNode(VLabel,{class:["v-field-label",{"v-field-label--floating":n.floating},n.class],style:n.style,"aria-hidden":n.floating||void 0},_)),{}}}),allowedVariants$1=["underlined","outlined","filled","solo","solo-inverted","solo-filled","plain"],makeVFieldProps=propsFactory({appendInnerIcon:IconValue,bgColor:String,clearable:Boolean,clearIcon:{type:IconValue,default:"$clear"},active:Boolean,centerAffix:{type:Boolean,default:void 0},color:String,baseColor:String,dirty:Boolean,disabled:{type:Boolean,default:null},error:Boolean,flat:Boolean,label:String,persistentClear:Boolean,prependInnerIcon:IconValue,reverse:Boolean,singleLine:Boolean,variant:{type:String,default:"filled",validator:n=>allowedVariants$1.includes(n)},"onClick:clear":EventProp(),"onClick:appendInner":EventProp(),"onClick:prependInner":EventProp(),...makeComponentProps(),...makeLoaderProps(),...makeRoundedProps(),...makeThemeProps()},"VField"),VField=genericComponent()({name:"VField",inheritAttrs:!1,props:{id:String,...makeFocusProps(),...makeVFieldProps()},emits:{"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{themeClasses:x}=provideTheme(n),{loaderClasses:T}=useLoader(n),{focusClasses:C,isFocused:I,focus:B,blur:A}=useFocus(n),{InputIcon:D}=useInputIcon(n),{roundedClasses:N}=useRounded(n),{rtlClasses:O}=useRtl(),M=computed(()=>n.dirty||n.active),L=computed(()=>!n.singleLine&&!!(n.label||E.label)),F=getUid(),U=computed(()=>n.id||`input-${F}`),j=computed(()=>`${U.value}-messages`),z=ref$2(),H=ref$2(),Q=ref$2(),J=computed(()=>["plain","underlined"].includes(n.variant)),{backgroundColorClasses:Z,backgroundColorStyles:re}=useBackgroundColor(toRef(n,"bgColor")),{textColorClasses:ie,textColorStyles:pe}=useTextColor(computed(()=>n.error||n.disabled?void 0:M.value&&I.value?n.color:n.baseColor));watch(M,q=>{if(L.value){const G=z.value.$el,ne=H.value.$el;requestAnimationFrame(()=>{const ee=nullifyTransforms(G),oe=ne.getBoundingClientRect(),ae=oe.x-ee.x,se=oe.y-ee.y-(ee.height/2-oe.height/2),te=oe.width/.75,X=Math.abs(te-ee.width)>1?{maxWidth:convertToUnit(te)}:void 0,ce=getComputedStyle(G),le=getComputedStyle(ne),ye=parseFloat(ce.transitionDuration)*1e3||150,de=parseFloat(le.getPropertyValue("--v-field-label-scale")),he=le.getPropertyValue("color");G.style.visibility="visible",ne.style.visibility="hidden",animate(G,{transform:`translate(${ae}px, ${se}px) scale(${de})`,color:he,...X},{duration:ye,easing:standardEasing,direction:q?"normal":"reverse"}).finished.then(()=>{G.style.removeProperty("visibility"),ne.style.removeProperty("visibility")})})}},{flush:"post"});const ue=computed(()=>({isActive:M,isFocused:I,controlRef:Q,blur:A,focus:B}));function W(q){q.target!==document.activeElement&&q.preventDefault()}function Y(q){q.key!=="Enter"&&q.key!==" "||(q.preventDefault(),q.stopPropagation(),n["onClick:clear"]?.(new MouseEvent("click")))}return useRender(()=>{const q=n.variant==="outlined",G=!!(E["prepend-inner"]||n.prependInnerIcon),ne=!!(n.clearable||E.clear),ee=!!(E["append-inner"]||n.appendInnerIcon||ne),oe=()=>E.label?E.label({...ue.value,label:n.label,props:{for:U.value}}):n.label;return createVNode("div",mergeProps({class:["v-field",{"v-field--active":M.value,"v-field--appended":ee,"v-field--center-affix":n.centerAffix??!J.value,"v-field--disabled":n.disabled,"v-field--dirty":n.dirty,"v-field--error":n.error,"v-field--flat":n.flat,"v-field--has-background":!!n.bgColor,"v-field--persistent-clear":n.persistentClear,"v-field--prepended":G,"v-field--reverse":n.reverse,"v-field--single-line":n.singleLine,"v-field--no-label":!oe(),[`v-field--variant-${n.variant}`]:!0},x.value,Z.value,C.value,T.value,N.value,O.value,n.class],style:[re.value,n.style],onClick:W},_),[createVNode("div",{class:"v-field__overlay"},null),createVNode(LoaderSlot,{name:"v-field",active:!!n.loading,color:n.error?"error":typeof n.loading=="string"?n.loading:n.color},{default:E.loader}),G&&createVNode("div",{key:"prepend",class:"v-field__prepend-inner"},[n.prependInnerIcon&&createVNode(D,{key:"prepend-icon",name:"prependInner"},null),E["prepend-inner"]?.(ue.value)]),createVNode("div",{class:"v-field__field","data-no-activator":""},[["filled","solo","solo-inverted","solo-filled"].includes(n.variant)&&L.value&&createVNode(VFieldLabel,{key:"floating-label",ref:H,class:[ie.value],floating:!0,for:U.value,style:pe.value},{default:()=>[oe()]}),createVNode(VFieldLabel,{ref:z,for:U.value},{default:()=>[oe()]}),E.default?.({...ue.value,props:{id:U.value,class:"v-field__input","aria-describedby":j.value},focus:B,blur:A})]),ne&&createVNode(VExpandXTransition,{key:"clear"},{default:()=>[withDirectives(createVNode("div",{class:"v-field__clearable",onMousedown:ae=>{ae.preventDefault(),ae.stopPropagation()}},[createVNode(VDefaultsProvider,{defaults:{VIcon:{icon:n.clearIcon}}},{default:()=>[E.clear?E.clear({...ue.value,props:{onKeydown:Y,onFocus:B,onBlur:A,onClick:n["onClick:clear"]}}):createVNode(D,{name:"clear",onKeydown:Y,onFocus:B,onBlur:A},null)]})]),[[vShow,n.dirty]])]}),ee&&createVNode("div",{key:"append",class:"v-field__append-inner"},[E["append-inner"]?.(ue.value),n.appendInnerIcon&&createVNode(D,{key:"append-icon",name:"appendInner"},null)]),createVNode("div",{class:["v-field__outline",ie.value],style:pe.value},[q&&createVNode(Fragment,null,[createVNode("div",{class:"v-field__outline__start"},null),L.value&&createVNode("div",{class:"v-field__outline__notch"},[createVNode(VFieldLabel,{ref:H,floating:!0,for:U.value},{default:()=>[oe()]})]),createVNode("div",{class:"v-field__outline__end"},null)]),J.value&&L.value&&createVNode(VFieldLabel,{ref:H,floating:!0,for:U.value},{default:()=>[oe()]})])])}),{controlRef:Q}}});function filterFieldProps(n){const r=Object.keys(VField.props).filter(_=>!isOn(_)&&_!=="class"&&_!=="style");return pick(n,r)}const activeTypes=["color","file","time","date","datetime-local","week","month"],makeVTextFieldProps=propsFactory({autofocus:Boolean,counter:[Boolean,Number,String],counterValue:[Number,Function],prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,suffix:String,role:String,type:{type:String,default:"text"},modelModifiers:Object,...makeVInputProps(),...makeVFieldProps()},"VTextField"),VTextField=genericComponent()({name:"VTextField",directives:{Intersect},inheritAttrs:!1,props:makeVTextFieldProps(),emits:{"click:control":n=>!0,"mousedown:control":n=>!0,"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const x=useProxiedModel(n,"modelValue"),{isFocused:T,focus:C,blur:I}=useFocus(n),B=computed(()=>typeof n.counterValue=="function"?n.counterValue(x.value):typeof n.counterValue=="number"?n.counterValue:(x.value??"").toString().length),A=computed(()=>{if(_.maxlength)return _.maxlength;if(!(!n.counter||typeof n.counter!="number"&&typeof n.counter!="string"))return n.counter}),D=computed(()=>["plain","underlined"].includes(n.variant));function N(J,Z){!n.autofocus||!J||Z[0].target?.focus?.()}const O=ref$2(),M=ref$2(),L=ref$2(),F=computed(()=>activeTypes.includes(n.type)||n.persistentPlaceholder||T.value||n.active);function U(){L.value!==document.activeElement&&L.value?.focus(),T.value||C()}function j(J){S("mousedown:control",J),J.target!==L.value&&(U(),J.preventDefault())}function z(J){U(),S("click:control",J)}function H(J){J.stopPropagation(),U(),nextTick$2(()=>{x.value=null,callEvent(n["onClick:clear"],J)})}function Q(J){const Z=J.target;if(x.value=Z.value,n.modelModifiers?.trim&&["text","search","password","tel","url"].includes(n.type)){const re=[Z.selectionStart,Z.selectionEnd];nextTick$2(()=>{Z.selectionStart=re[0],Z.selectionEnd=re[1]})}}return useRender(()=>{const J=!!(E.counter||n.counter!==!1&&n.counter!=null),Z=!!(J||E.details),[re,ie]=filterInputAttrs(_),{modelValue:pe,...ue}=VInput.filterProps(n),W=filterFieldProps(n);return createVNode(VInput,mergeProps({ref:O,modelValue:x.value,"onUpdate:modelValue":Y=>x.value=Y,class:["v-text-field",{"v-text-field--prefixed":n.prefix,"v-text-field--suffixed":n.suffix,"v-input--plain-underlined":D.value},n.class],style:n.style},re,ue,{centerAffix:!D.value,focused:T.value}),{...E,default:Y=>{let{id:q,isDisabled:G,isDirty:ne,isReadonly:ee,isValid:oe}=Y;return createVNode(VField,mergeProps({ref:M,onMousedown:j,onClick:z,"onClick:clear":H,"onClick:prependInner":n["onClick:prependInner"],"onClick:appendInner":n["onClick:appendInner"],role:n.role},W,{id:q.value,active:F.value||ne.value,dirty:ne.value||n.dirty,disabled:G.value,focused:T.value,error:oe.value===!1}),{...E,default:ae=>{let{props:{class:se,...te}}=ae;const X=withDirectives(createVNode("input",mergeProps({ref:L,value:x.value,onInput:Q,autofocus:n.autofocus,readonly:ee.value,disabled:G.value,name:n.name,placeholder:n.placeholder,size:1,type:n.type,onFocus:U,onBlur:I},te,ie),null),[[resolveDirective("intersect"),{handler:N},null,{once:!0}]]);return createVNode(Fragment,null,[n.prefix&&createVNode("span",{class:"v-text-field__prefix"},[createVNode("span",{class:"v-text-field__prefix__text"},[n.prefix])]),E.default?createVNode("div",{class:se,"data-no-activator":""},[E.default(),X]):cloneVNode(X,{class:se}),n.suffix&&createVNode("span",{class:"v-text-field__suffix"},[createVNode("span",{class:"v-text-field__suffix__text"},[n.suffix])])])}})},details:Z?Y=>createVNode(Fragment,null,[E.details?.(Y),J&&createVNode(Fragment,null,[createVNode("span",null,null),createVNode(VCounter,{active:n.persistentCounter||T.value,value:B.value,max:A.value,disabled:n.disabled},E.counter)])]):void 0})}),forwardRefs({},O,M,L)}}),makeVVirtualScrollItemProps=propsFactory({renderless:Boolean,...makeComponentProps()},"VVirtualScrollItem"),VVirtualScrollItem=genericComponent()({name:"VVirtualScrollItem",inheritAttrs:!1,props:makeVVirtualScrollItemProps(),emits:{"update:height":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{resizeRef:x,contentRect:T}=useResizeObserver(void 0,"border");watch(()=>T.value?.height,C=>{C!=null&&S("update:height",C)}),useRender(()=>n.renderless?createVNode(Fragment,null,[E.default?.({itemRef:x})]):createVNode("div",mergeProps({ref:x,class:["v-virtual-scroll__item",n.class],style:n.style},_),[E.default?.()]))}}),UP=-1,DOWN=1,BUFFER_PX=100,makeVirtualProps=propsFactory({itemHeight:{type:[Number,String],default:null},height:[Number,String]},"virtual");function useVirtual(n,r){const _=useDisplay(),S=shallowRef(0);watchEffect(()=>{S.value=parseFloat(n.itemHeight||0)});const E=shallowRef(0),x=shallowRef(Math.ceil((parseInt(n.height)||_.height.value)/(S.value||16))||1),T=shallowRef(0),C=shallowRef(0),I=ref$2(),B=ref$2();let A=0;const{resizeRef:D,contentRect:N}=useResizeObserver();watchEffect(()=>{D.value=I.value});const O=computed(()=>I.value===document.documentElement?_.height.value:N.value?.height||parseInt(n.height)||0),M=computed(()=>!!(I.value&&B.value&&O.value&&S.value));let L=Array.from({length:r.value.length}),F=Array.from({length:r.value.length});const U=shallowRef(0);let j=-1;function z(ae){return L[ae]||S.value}const H=debounce$3(()=>{const ae=performance.now();F[0]=0;const se=r.value.length;for(let te=1;te<=se-1;te++)F[te]=(F[te-1]||0)+z(te-1);U.value=Math.max(U.value,performance.now()-ae)},U),Q=watch(M,ae=>{ae&&(Q(),A=B.value.offsetTop,H.immediate(),G(),~j&&nextTick$2(()=>{IN_BROWSER&&window.requestAnimationFrame(()=>{ee(j),j=-1})}))});onScopeDispose(()=>{H.clear()});function J(ae,se){const te=L[ae],X=S.value;S.value=X?Math.min(S.value,se):se,(te!==se||X!==S.value)&&(L[ae]=se,H())}function Z(ae){return ae=clamp(ae,0,r.value.length-1),F[ae]||0}function re(ae){return binaryClosest(F,ae)}let ie=0,pe=0,ue=0;watch(O,(ae,se)=>{se&&(G(),ae{pe=0,G()}))});function W(){if(!I.value||!B.value)return;const ae=I.value.scrollTop,se=performance.now();se-ue>500?(pe=Math.sign(ae-ie),A=B.value.offsetTop):pe=ae-ie,ie=ae,ue=se,G()}function Y(){!I.value||!B.value||(pe=0,ue=0,G())}let q=-1;function G(){cancelAnimationFrame(q),q=requestAnimationFrame(ne)}function ne(){if(!I.value||!O.value)return;const ae=ie-A,se=Math.sign(pe),te=Math.max(0,ae-BUFFER_PX),X=clamp(re(te),0,r.value.length),ce=ae+O.value+BUFFER_PX,le=clamp(re(ce)+1,X+1,r.value.length);if((se!==UP||Xx.value)){const ye=Z(E.value)-Z(X),de=Z(le)-Z(x.value);Math.max(ye,de)>BUFFER_PX?(E.value=X,x.value=le):(X<=0&&(E.value=X),le>=r.value.length&&(x.value=le))}T.value=Z(E.value),C.value=Z(r.value.length)-Z(x.value)}function ee(ae){const se=Z(ae);!I.value||ae&&!se?j=ae:I.value.scrollTop=se}const oe=computed(()=>r.value.slice(E.value,x.value).map((ae,se)=>({raw:ae,index:se+E.value})));return watch(r,()=>{L=Array.from({length:r.value.length}),F=Array.from({length:r.value.length}),H.immediate(),G()},{deep:!0}),{calculateVisibleItems:G,containerRef:I,markerRef:B,computedItems:oe,paddingTop:T,paddingBottom:C,scrollToIndex:ee,handleScroll:W,handleScrollend:Y,handleItemResize:J}}function binaryClosest(n,r){let _=n.length-1,S=0,E=0,x=null,T=-1;if(n[_]>1,x=n[E],x>r)_=E-1;else if(x[]},renderless:Boolean,...makeVirtualProps(),...makeComponentProps(),...makeDimensionProps()},"VVirtualScroll"),VVirtualScroll=genericComponent()({name:"VVirtualScroll",props:makeVVirtualScrollProps(),setup(n,r){let{slots:_}=r;const S=getCurrentInstance("VVirtualScroll"),{dimensionStyles:E}=useDimension(n),{calculateVisibleItems:x,containerRef:T,markerRef:C,handleScroll:I,handleScrollend:B,handleItemResize:A,scrollToIndex:D,paddingTop:N,paddingBottom:O,computedItems:M}=useVirtual(n,toRef(n,"items"));return useToggleScope(()=>n.renderless,()=>{function L(){const U=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1)?"addEventListener":"removeEventListener";T.value===document.documentElement?(document[U]("scroll",I,{passive:!0}),document[U]("scrollend",B)):(T.value?.[U]("scroll",I,{passive:!0}),T.value?.[U]("scrollend",B))}onMounted(()=>{T.value=getScrollParent(S.vnode.el,!0),L(!0)}),onScopeDispose(L)}),useRender(()=>{const L=M.value.map(F=>createVNode(VVirtualScrollItem,{key:F.index,renderless:n.renderless,"onUpdate:height":U=>A(F.index,U)},{default:U=>_.default?.({item:F.raw,index:F.index,...U})}));return n.renderless?createVNode(Fragment,null,[createVNode("div",{ref:C,class:"v-virtual-scroll__spacer",style:{paddingTop:convertToUnit(N.value)}},null),L,createVNode("div",{class:"v-virtual-scroll__spacer",style:{paddingBottom:convertToUnit(O.value)}},null)]):createVNode("div",{ref:T,class:["v-virtual-scroll",n.class],onScrollPassive:I,onScrollend:B,style:[E.value,n.style]},[createVNode("div",{ref:C,class:"v-virtual-scroll__container",style:{paddingTop:convertToUnit(N.value),paddingBottom:convertToUnit(O.value)}},[L])])}),{calculateVisibleItems:x,scrollToIndex:D}}});function useScrolling(n,r){const _=shallowRef(!1);let S;function E(C){cancelAnimationFrame(S),_.value=!0,S=requestAnimationFrame(()=>{S=requestAnimationFrame(()=>{_.value=!1})})}async function x(){await new Promise(C=>requestAnimationFrame(C)),await new Promise(C=>requestAnimationFrame(C)),await new Promise(C=>requestAnimationFrame(C)),await new Promise(C=>{if(_.value){const I=watch(_,()=>{I(),C()})}else C()})}async function T(C){if(C.key==="Tab"&&r.value?.focus(),!["PageDown","PageUp","Home","End"].includes(C.key))return;const I=n.value?.$el;if(!I)return;(C.key==="Home"||C.key==="End")&&I.scrollTo({top:C.key==="Home"?0:I.scrollHeight,behavior:"smooth"}),await x();const B=I.querySelectorAll(":scope > :not(.v-virtual-scroll__spacer)");if(C.key==="PageDown"||C.key==="Home"){const A=I.getBoundingClientRect().top;for(const D of B)if(D.getBoundingClientRect().top>=A){D.focus();break}}else{const A=I.getBoundingClientRect().bottom;for(const D of[...B].reverse())if(D.getBoundingClientRect().bottom<=A){D.focus();break}}}return{onScrollPassive:E,onKeydown:T}}const makeSelectProps=propsFactory({chips:Boolean,closableChips:Boolean,closeText:{type:String,default:"$vuetify.close"},openText:{type:String,default:"$vuetify.open"},eager:Boolean,hideNoData:Boolean,hideSelected:Boolean,listProps:{type:Object},menu:Boolean,menuIcon:{type:IconValue,default:"$dropdown"},menuProps:{type:Object},multiple:Boolean,noDataText:{type:String,default:"$vuetify.noDataText"},openOnClear:Boolean,itemColor:String,...makeItemsProps({itemChildren:!1})},"Select"),makeVSelectProps=propsFactory({...makeSelectProps(),...omit(makeVTextFieldProps({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...makeTransitionProps({transition:{component:VDialogTransition}})},"VSelect"),VSelect=genericComponent()({name:"VSelect",props:makeVSelectProps(),emits:{"update:focused":n=>!0,"update:modelValue":n=>!0,"update:menu":n=>!0},setup(n,r){let{slots:_}=r;const{t:S}=useLocale(),E=ref$2(),x=ref$2(),T=ref$2(),C=useProxiedModel(n,"menu"),I=computed({get:()=>C.value,set:ae=>{C.value&&!ae&&x.value?.ΨopenChildren.size||(C.value=ae)}}),{items:B,transformIn:A,transformOut:D}=useItems(n),N=useProxiedModel(n,"modelValue",[],ae=>A(ae===null?[null]:wrapInArray(ae)),ae=>{const se=D(ae);return n.multiple?se:se[0]??null}),O=computed(()=>typeof n.counterValue=="function"?n.counterValue(N.value):typeof n.counterValue=="number"?n.counterValue:N.value.length),M=useForm(),L=computed(()=>N.value.map(ae=>ae.value)),F=shallowRef(!1),U=computed(()=>I.value?n.closeText:n.openText);let j="",z;const H=computed(()=>n.hideSelected?B.value.filter(ae=>!N.value.some(se=>n.valueComparator(se,ae))):B.value),Q=computed(()=>n.hideNoData&&!H.value.length||n.readonly||M?.isReadonly.value),J=computed(()=>({...n.menuProps,activatorProps:{...n.menuProps?.activatorProps||{},"aria-haspopup":"listbox"}})),Z=ref$2(),re=useScrolling(Z,E);function ie(ae){n.openOnClear&&(I.value=!0)}function pe(){Q.value||(I.value=!I.value)}function ue(ae){checkPrintable(ae)&&W(ae)}function W(ae){if(!ae.key||n.readonly||M?.isReadonly.value)return;["Enter"," ","ArrowDown","ArrowUp","Home","End"].includes(ae.key)&&ae.preventDefault(),["Enter","ArrowDown"," "].includes(ae.key)&&(I.value=!0),["Escape","Tab"].includes(ae.key)&&(I.value=!1),ae.key==="Home"?Z.value?.focus("first"):ae.key==="End"&&Z.value?.focus("last");const se=1e3;if(n.multiple||!checkPrintable(ae))return;const te=performance.now();te-z>se&&(j=""),j+=ae.key.toLowerCase(),z=te;const X=B.value.find(ce=>ce.title.toLowerCase().startsWith(j));if(X!==void 0){N.value=[X];const ce=H.value.indexOf(X);IN_BROWSER&&window.requestAnimationFrame(()=>{ce>=0&&T.value?.scrollToIndex(ce)})}}function Y(ae){let se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!ae.props.disabled)if(n.multiple){const te=N.value.findIndex(ce=>n.valueComparator(ce.value,ae.value)),X=se??!~te;if(~te){const ce=X?[...N.value,ae]:[...N.value];ce.splice(te,1),N.value=ce}else X&&(N.value=[...N.value,ae])}else{const te=se!==!1;N.value=te?[ae]:[],nextTick$2(()=>{I.value=!1})}}function q(ae){Z.value?.$el.contains(ae.relatedTarget)||(I.value=!1)}function G(){n.eager&&T.value?.calculateVisibleItems()}function ne(){F.value&&E.value?.focus()}function ee(ae){F.value=!0}function oe(ae){if(ae==null)N.value=[];else if(matchesSelector(E.value,":autofill")||matchesSelector(E.value,":-webkit-autofill")){const se=B.value.find(te=>te.title===ae);se&&Y(se)}else E.value&&(E.value.value="")}return watch(I,()=>{if(!n.hideSelected&&I.value&&N.value.length){const ae=H.value.findIndex(se=>N.value.some(te=>n.valueComparator(te.value,se.value)));IN_BROWSER&&window.requestAnimationFrame(()=>{ae>=0&&T.value?.scrollToIndex(ae)})}}),watch(()=>n.items,(ae,se)=>{I.value||F.value&&!se.length&&ae.length&&(I.value=!0)}),useRender(()=>{const ae=!!(n.chips||_.chip),se=!!(!n.hideNoData||H.value.length||_["prepend-item"]||_["append-item"]||_["no-data"]),te=N.value.length>0,X=VTextField.filterProps(n),ce=te||!F.value&&n.label&&!n.persistentPlaceholder?void 0:n.placeholder;return createVNode(VTextField,mergeProps({ref:E},X,{modelValue:N.value.map(le=>le.props.value).join(", "),"onUpdate:modelValue":oe,focused:F.value,"onUpdate:focused":le=>F.value=le,validationValue:N.externalValue,counterValue:O.value,dirty:te,class:["v-select",{"v-select--active-menu":I.value,"v-select--chips":!!n.chips,[`v-select--${n.multiple?"multiple":"single"}`]:!0,"v-select--selected":N.value.length,"v-select--selection-slot":!!_.selection},n.class],style:n.style,inputmode:"none",placeholder:ce,"onClick:clear":ie,"onMousedown:control":pe,onBlur:q,onKeydown:W,"aria-label":S(U.value),title:S(U.value)}),{..._,default:()=>createVNode(Fragment,null,[createVNode(VMenu,mergeProps({ref:x,modelValue:I.value,"onUpdate:modelValue":le=>I.value=le,activator:"parent",contentClass:"v-select__content",disabled:Q.value,eager:n.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:n.transition,onAfterEnter:G,onAfterLeave:ne},J.value),{default:()=>[se&&createVNode(VList,mergeProps({ref:Z,selected:L.value,selectStrategy:n.multiple?"independent":"single-independent",onMousedown:le=>le.preventDefault(),onKeydown:ue,onFocusin:ee,tabindex:"-1","aria-live":"polite",color:n.itemColor??n.color},re,n.listProps),{default:()=>[_["prepend-item"]?.(),!H.value.length&&!n.hideNoData&&(_["no-data"]?.()??createVNode(VListItem,{title:S(n.noDataText)},null)),createVNode(VVirtualScroll,{ref:T,renderless:!0,items:H.value},{default:le=>{let{item:ye,index:de,itemRef:he}=le;const me=mergeProps(ye.props,{ref:he,key:de,onClick:()=>Y(ye,null)});return _.item?.({item:ye,index:de,props:me})??createVNode(VListItem,mergeProps(me,{role:"option"}),{prepend:Ee=>{let{isSelected:Ce}=Ee;return createVNode(Fragment,null,[n.multiple&&!n.hideSelected?createVNode(VCheckboxBtn,{key:ye.value,modelValue:Ce,ripple:!1,tabindex:"-1"},null):void 0,ye.props.prependAvatar&&createVNode(VAvatar,{image:ye.props.prependAvatar},null),ye.props.prependIcon&&createVNode(VIcon,{icon:ye.props.prependIcon},null)])}})}}),_["append-item"]?.()]})]}),N.value.map((le,ye)=>{function de(Ce){Ce.stopPropagation(),Ce.preventDefault(),Y(le,!1)}const he={"onClick:close":de,onKeydown(Ce){Ce.key!=="Enter"&&Ce.key!==" "||(Ce.preventDefault(),Ce.stopPropagation(),de(Ce))},onMousedown(Ce){Ce.preventDefault(),Ce.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},me=ae?!!_.chip:!!_.selection,Ee=me?ensureValidVNode(ae?_.chip({item:le,index:ye,props:he}):_.selection({item:le,index:ye})):void 0;if(!(me&&!Ee))return createVNode("div",{key:le.value,class:"v-select__selection"},[ae?_.chip?createVNode(VDefaultsProvider,{key:"chip-defaults",defaults:{VChip:{closable:n.closableChips,size:"small",text:le.title}}},{default:()=>[Ee]}):createVNode(VChip,mergeProps({key:"chip",closable:n.closableChips,size:"small",text:le.title,disabled:le.props.disabled},he),null):Ee??createVNode("span",{class:"v-select__selection-text"},[le.title,n.multiple&&yen==null||r==null?-1:n.toString().toLocaleLowerCase().indexOf(r.toString().toLocaleLowerCase()),makeFilterProps=propsFactory({customFilter:Function,customKeyFilter:Object,filterKeys:[Array,String],filterMode:{type:String,default:"intersection"},noFilter:Boolean},"filter");function filterItems(n,r,_){const S=[],E=_?.default??defaultFilter,x=_?.filterKeys?wrapInArray(_.filterKeys):!1,T=Object.keys(_?.customKeyFilter??{}).length;if(!n?.length)return S;e:for(let C=0;C0)&&!_?.noFilter){if(typeof I=="object"){const L=x||Object.keys(B);for(const F of L){const U=getPropertyFromItem(B,F),j=_?.customKeyFilter?.[F];if(N=j?j(U,r,I):E(U,r,I),N!==-1&&N!==!1)j?A[F]=N:D[F]=N;else if(_?.filterMode==="every")continue e}}else N=E(I,r,I),N!==-1&&N!==!1&&(D.title=N);const O=Object.keys(D).length,M=Object.keys(A).length;if(!O&&!M||_?.filterMode==="union"&&M!==T&&!O||_?.filterMode==="intersection"&&(M!==T||!O))continue}S.push({index:C,matches:{...D,...A}})}return S}function useFilter(n,r,_,S){const E=ref$2([]),x=ref$2(new Map),T=computed(()=>S?.transform?unref(r).map(I=>[I,S.transform(I)]):unref(r));watchEffect(()=>{const I=typeof _=="function"?_():unref(_),B=typeof I!="string"&&typeof I!="number"?"":String(I),A=filterItems(T.value,B,{customKeyFilter:{...n.customKeyFilter,...unref(S?.customKeyFilter)},default:n.customFilter,filterKeys:n.filterKeys,filterMode:n.filterMode,noFilter:n.noFilter}),D=unref(r),N=[],O=new Map;A.forEach(M=>{let{index:L,matches:F}=M;const U=D[L];N.push(U),O.set(U.value,F)}),E.value=N,x.value=O});function C(I){return x.value.get(I.value)}return{filteredItems:E,filteredMatches:x,getMatches:C}}function highlightResult$1(n,r,_){if(r==null)return n;if(Array.isArray(r))throw new Error("Multiple matches is not implemented");return typeof r=="number"&&~r?createVNode(Fragment,null,[createVNode("span",{class:"v-autocomplete__unmask"},[n.substr(0,r)]),createVNode("span",{class:"v-autocomplete__mask"},[n.substr(r,_)]),createVNode("span",{class:"v-autocomplete__unmask"},[n.substr(r+_)])]):n}const makeVAutocompleteProps=propsFactory({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:Boolean,search:String,...makeFilterProps({filterKeys:["title"]}),...makeSelectProps(),...omit(makeVTextFieldProps({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...makeTransitionProps({transition:!1})},"VAutocomplete"),VAutocomplete=genericComponent()({name:"VAutocomplete",props:makeVAutocompleteProps(),emits:{"update:focused":n=>!0,"update:search":n=>!0,"update:modelValue":n=>!0,"update:menu":n=>!0},setup(n,r){let{slots:_}=r;const{t:S}=useLocale(),E=ref$2(),x=shallowRef(!1),T=shallowRef(!0),C=shallowRef(!1),I=ref$2(),B=ref$2(),A=useProxiedModel(n,"menu"),D=computed({get:()=>A.value,set:be=>{A.value&&!be&&I.value?.ΨopenChildren.size||(A.value=be)}}),N=shallowRef(-1),O=computed(()=>E.value?.color),M=computed(()=>D.value?n.closeText:n.openText),{items:L,transformIn:F,transformOut:U}=useItems(n),{textColorClasses:j,textColorStyles:z}=useTextColor(O),H=useProxiedModel(n,"search",""),Q=useProxiedModel(n,"modelValue",[],be=>F(be===null?[null]:wrapInArray(be)),be=>{const ge=U(be);return n.multiple?ge:ge[0]??null}),J=computed(()=>typeof n.counterValue=="function"?n.counterValue(Q.value):typeof n.counterValue=="number"?n.counterValue:Q.value.length),Z=useForm(),{filteredItems:re,getMatches:ie}=useFilter(n,L,()=>T.value?"":H.value),pe=computed(()=>n.hideSelected?re.value.filter(be=>!Q.value.some(ge=>ge.value===be.value)):re.value),ue=computed(()=>!!(n.chips||_.chip)),W=computed(()=>ue.value||!!_.selection),Y=computed(()=>Q.value.map(be=>be.props.value)),q=computed(()=>(n.autoSelectFirst===!0||n.autoSelectFirst==="exact"&&H.value===pe.value[0]?.title)&&pe.value.length>0&&!T.value&&!C.value),G=computed(()=>n.hideNoData&&!pe.value.length||n.readonly||Z?.isReadonly.value),ne=ref$2(),ee=useScrolling(ne,E);function oe(be){n.openOnClear&&(D.value=!0),H.value=""}function ae(){G.value||(D.value=!0)}function se(be){G.value||(x.value&&(be.preventDefault(),be.stopPropagation()),D.value=!D.value)}function te(be){checkPrintable(be)&&E.value?.focus()}function X(be){if(n.readonly||Z?.isReadonly.value)return;const ge=E.value.selectionStart,we=Q.value.length;if((N.value>-1||["Enter","ArrowDown","ArrowUp"].includes(be.key))&&be.preventDefault(),["Enter","ArrowDown"].includes(be.key)&&(D.value=!0),["Escape"].includes(be.key)&&(D.value=!1),q.value&&["Enter","Tab"].includes(be.key)&&!Q.value.some(fe=>{let{value:xe}=fe;return xe===pe.value[0].value})&&Ce(pe.value[0]),be.key==="ArrowDown"&&q.value&&ne.value?.focus("next"),["Backspace","Delete"].includes(be.key)){if(!n.multiple&&W.value&&Q.value.length>0&&!H.value)return Ce(Q.value[0],!1);if(~N.value){const fe=N.value;Ce(Q.value[N.value],!1),N.value=fe>=we-1?we-2:fe}else be.key==="Backspace"&&!H.value&&(N.value=we-1)}if(n.multiple){if(be.key==="ArrowLeft"){if(N.value<0&&ge>0)return;const fe=N.value>-1?N.value-1:we-1;Q.value[fe]?N.value=fe:(N.value=-1,E.value.setSelectionRange(H.value?.length,H.value?.length))}if(be.key==="ArrowRight"){if(N.value<0)return;const fe=N.value+1;Q.value[fe]?N.value=fe:(N.value=-1,E.value.setSelectionRange(0,0))}}}function ce(be){if(matchesSelector(E.value,":autofill")||matchesSelector(E.value,":-webkit-autofill")){const ge=L.value.find(we=>we.title===be.target.value);ge&&Ce(ge)}}function le(){n.eager&&B.value?.calculateVisibleItems()}function ye(){x.value&&(T.value=!0,E.value?.focus())}function de(be){x.value=!0,setTimeout(()=>{C.value=!0})}function he(be){C.value=!1}function me(be){(be==null||be===""&&!n.multiple&&!W.value)&&(Q.value=[])}const Ee=shallowRef(!1);function Ce(be){let ge=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!be||be.props.disabled))if(n.multiple){const we=Q.value.findIndex(xe=>n.valueComparator(xe.value,be.value)),fe=ge??!~we;if(~we){const xe=fe?[...Q.value,be]:[...Q.value];xe.splice(we,1),Q.value=xe}else fe&&(Q.value=[...Q.value,be]);n.clearOnSelect&&(H.value="")}else{const we=ge!==!1;Q.value=we?[be]:[],H.value=we&&!W.value?be.title:"",nextTick$2(()=>{D.value=!1,T.value=!0})}}return watch(x,(be,ge)=>{be!==ge&&(be?(Ee.value=!0,H.value=n.multiple||W.value?"":String(Q.value.at(-1)?.props.title??""),T.value=!0,nextTick$2(()=>Ee.value=!1)):(!n.multiple&&H.value==null&&(Q.value=[]),D.value=!1,Q.value.some(we=>{let{title:fe}=we;return fe===H.value})||(H.value=""),N.value=-1))}),watch(H,be=>{!x.value||Ee.value||(be&&(D.value=!0),T.value=!be)}),watch(D,()=>{if(!n.hideSelected&&D.value&&Q.value.length){const be=pe.value.findIndex(ge=>Q.value.some(we=>ge.value===we.value));IN_BROWSER&&window.requestAnimationFrame(()=>{be>=0&&B.value?.scrollToIndex(be)})}}),watch(()=>n.items,(be,ge)=>{D.value||x.value&&!ge.length&&be.length&&(D.value=!0)}),useRender(()=>{const be=!!(!n.hideNoData||pe.value.length||_["prepend-item"]||_["append-item"]||_["no-data"]),ge=Q.value.length>0,we=VTextField.filterProps(n);return createVNode(VTextField,mergeProps({ref:E},we,{modelValue:H.value,"onUpdate:modelValue":[fe=>H.value=fe,me],focused:x.value,"onUpdate:focused":fe=>x.value=fe,validationValue:Q.externalValue,counterValue:J.value,dirty:ge,onChange:ce,class:["v-autocomplete",`v-autocomplete--${n.multiple?"multiple":"single"}`,{"v-autocomplete--active-menu":D.value,"v-autocomplete--chips":!!n.chips,"v-autocomplete--selection-slot":!!W.value,"v-autocomplete--selecting-index":N.value>-1},n.class],style:n.style,readonly:n.readonly,placeholder:ge?void 0:n.placeholder,"onClick:clear":oe,"onMousedown:control":ae,onKeydown:X}),{..._,default:()=>createVNode(Fragment,null,[createVNode(VMenu,mergeProps({ref:I,modelValue:D.value,"onUpdate:modelValue":fe=>D.value=fe,activator:"parent",contentClass:"v-autocomplete__content",disabled:G.value,eager:n.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:n.transition,onAfterEnter:le,onAfterLeave:ye},n.menuProps),{default:()=>[be&&createVNode(VList,mergeProps({ref:ne,selected:Y.value,selectStrategy:n.multiple?"independent":"single-independent",onMousedown:fe=>fe.preventDefault(),onKeydown:te,onFocusin:de,onFocusout:he,tabindex:"-1","aria-live":"polite",color:n.itemColor??n.color},ee,n.listProps),{default:()=>[_["prepend-item"]?.(),!pe.value.length&&!n.hideNoData&&(_["no-data"]?.()??createVNode(VListItem,{title:S(n.noDataText)},null)),createVNode(VVirtualScroll,{ref:B,renderless:!0,items:pe.value},{default:fe=>{let{item:xe,index:Ie,itemRef:Se}=fe;const $e=mergeProps(xe.props,{ref:Se,key:Ie,active:q.value&&Ie===0?!0:void 0,onClick:()=>Ce(xe,null)});return _.item?.({item:xe,index:Ie,props:$e})??createVNode(VListItem,mergeProps($e,{role:"option"}),{prepend:ke=>{let{isSelected:Pe}=ke;return createVNode(Fragment,null,[n.multiple&&!n.hideSelected?createVNode(VCheckboxBtn,{key:xe.value,modelValue:Pe,ripple:!1,tabindex:"-1"},null):void 0,xe.props.prependAvatar&&createVNode(VAvatar,{image:xe.props.prependAvatar},null),xe.props.prependIcon&&createVNode(VIcon,{icon:xe.props.prependIcon},null)])},title:()=>T.value?xe.title:highlightResult$1(xe.title,ie(xe)?.title,H.value?.length??0)})}}),_["append-item"]?.()]})]}),Q.value.map((fe,xe)=>{function Ie(Pe){Pe.stopPropagation(),Pe.preventDefault(),Ce(fe,!1)}const Se={"onClick:close":Ie,onKeydown(Pe){Pe.key!=="Enter"&&Pe.key!==" "||(Pe.preventDefault(),Pe.stopPropagation(),Ie(Pe))},onMousedown(Pe){Pe.preventDefault(),Pe.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},$e=ue.value?!!_.chip:!!_.selection,ke=$e?ensureValidVNode(ue.value?_.chip({item:fe,index:xe,props:Se}):_.selection({item:fe,index:xe})):void 0;if(!($e&&!ke))return createVNode("div",{key:fe.value,class:["v-autocomplete__selection",xe===N.value&&["v-autocomplete__selection--selected",j.value]],style:xe===N.value?z.value:{}},[ue.value?_.chip?createVNode(VDefaultsProvider,{key:"chip-defaults",defaults:{VChip:{closable:n.closableChips,size:"small",text:fe.title}}},{default:()=>[ke]}):createVNode(VChip,mergeProps({key:"chip",closable:n.closableChips,size:"small",text:fe.title,disabled:fe.props.disabled},Se),null):ke??createVNode("span",{class:"v-autocomplete__selection-text"},[fe.title,n.multiple&&xe(n.floating?n.dot?2:4:n.dot?8:12)+(["top","bottom"].includes(A)?+(n.offsetY??0):["left","right"].includes(A)?+(n.offsetX??0):0));return useRender(()=>{const A=Number(n.content),D=!n.max||isNaN(A)?n.content:A<=+n.max?A:`${n.max}+`,[N,O]=pickWithRest(r.attrs,["aria-atomic","aria-label","aria-live","role","title"]);return createVNode(n.tag,mergeProps({class:["v-badge",{"v-badge--bordered":n.bordered,"v-badge--dot":n.dot,"v-badge--floating":n.floating,"v-badge--inline":n.inline},n.class]},O,{style:n.style}),{default:()=>[createVNode("div",{class:"v-badge__wrapper"},[r.slots.default?.(),createVNode(MaybeTransition,{transition:n.transition},{default:()=>[withDirectives(createVNode("span",mergeProps({class:["v-badge__badge",I.value,_.value,E.value,T.value],style:[S.value,C.value,n.inline?{}:B.value],"aria-atomic":"true","aria-label":x(n.label,A),"aria-live":"polite",role:"status"},N),[n.dot?void 0:r.slots.badge?r.slots.badge?.():n.icon?createVNode(VIcon,{icon:n.icon},null):D]),[[vShow,n.modelValue]])]})])]})}),{}}}),makeVBannerActionsProps=propsFactory({color:String,density:String,...makeComponentProps()},"VBannerActions"),VBannerActions=genericComponent()({name:"VBannerActions",props:makeVBannerActionsProps(),setup(n,r){let{slots:_}=r;return provideDefaults({VBtn:{color:n.color,density:n.density,slim:!0,variant:"text"}}),useRender(()=>createVNode("div",{class:["v-banner-actions",n.class],style:n.style},[_.default?.()])),{}}}),VBannerText=createSimpleFunctional("v-banner-text"),makeVBannerProps=propsFactory({avatar:String,bgColor:String,color:String,icon:IconValue,lines:String,stacked:Boolean,sticky:Boolean,text:String,...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeDimensionProps(),...makeDisplayProps({mobile:null}),...makeElevationProps(),...makeLocationProps(),...makePositionProps(),...makeRoundedProps(),...makeTagProps(),...makeThemeProps()},"VBanner"),VBanner=genericComponent()({name:"VBanner",props:makeVBannerProps(),setup(n,r){let{slots:_}=r;const{backgroundColorClasses:S,backgroundColorStyles:E}=useBackgroundColor(n,"bgColor"),{borderClasses:x}=useBorder(n),{densityClasses:T}=useDensity(n),{displayClasses:C,mobile:I}=useDisplay(n),{dimensionStyles:B}=useDimension(n),{elevationClasses:A}=useElevation(n),{locationStyles:D}=useLocation(n),{positionClasses:N}=usePosition(n),{roundedClasses:O}=useRounded(n),{themeClasses:M}=provideTheme(n),L=toRef(n,"color"),F=toRef(n,"density");provideDefaults({VBannerActions:{color:L,density:F}}),useRender(()=>{const U=!!(n.text||_.text),j=!!(n.avatar||n.icon),z=!!(j||_.prepend);return createVNode(n.tag,{class:["v-banner",{"v-banner--stacked":n.stacked||I.value,"v-banner--sticky":n.sticky,[`v-banner--${n.lines}-line`]:!!n.lines},M.value,S.value,x.value,T.value,C.value,A.value,N.value,O.value,n.class],style:[E.value,B.value,D.value,n.style],role:"banner"},{default:()=>[z&&createVNode("div",{key:"prepend",class:"v-banner__prepend"},[_.prepend?createVNode(VDefaultsProvider,{key:"prepend-defaults",disabled:!j,defaults:{VAvatar:{color:L.value,density:F.value,icon:n.icon,image:n.avatar}}},_.prepend):createVNode(VAvatar,{key:"prepend-avatar",color:L.value,density:F.value,icon:n.icon,image:n.avatar},null)]),createVNode("div",{class:"v-banner__content"},[U&&createVNode(VBannerText,{key:"text"},{default:()=>[_.text?.()??n.text]}),_.default?.()]),_.actions&&createVNode(VBannerActions,{key:"actions"},_.actions)]})})}}),makeVBottomNavigationProps=propsFactory({baseColor:String,bgColor:String,color:String,grow:Boolean,mode:{type:String,validator:n=>!n||["horizontal","shift"].includes(n)},height:{type:[Number,String],default:56},active:{type:Boolean,default:!0},...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeElevationProps(),...makeRoundedProps(),...makeLayoutItemProps({name:"bottom-navigation"}),...makeTagProps({tag:"header"}),...makeGroupProps({selectedClass:"v-btn--selected"}),...makeThemeProps()},"VBottomNavigation"),VBottomNavigation=genericComponent()({name:"VBottomNavigation",props:makeVBottomNavigationProps(),emits:{"update:active":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{themeClasses:S}=useTheme(),{borderClasses:E}=useBorder(n),{backgroundColorClasses:x,backgroundColorStyles:T}=useBackgroundColor(toRef(n,"bgColor")),{densityClasses:C}=useDensity(n),{elevationClasses:I}=useElevation(n),{roundedClasses:B}=useRounded(n),{ssrBootStyles:A}=useSsrBoot(),D=computed(()=>Number(n.height)-(n.density==="comfortable"?8:0)-(n.density==="compact"?16:0)),N=useProxiedModel(n,"active",n.active),{layoutItemStyles:O}=useLayoutItem({id:n.name,order:computed(()=>parseInt(n.order,10)),position:computed(()=>"bottom"),layoutSize:computed(()=>N.value?D.value:0),elementSize:D,active:N,absolute:toRef(n,"absolute")});return useGroup(n,VBtnToggleSymbol),provideDefaults({VBtn:{baseColor:toRef(n,"baseColor"),color:toRef(n,"color"),density:toRef(n,"density"),stacked:computed(()=>n.mode!=="horizontal"),variant:"text"}},{scoped:!0}),useRender(()=>createVNode(n.tag,{class:["v-bottom-navigation",{"v-bottom-navigation--active":N.value,"v-bottom-navigation--grow":n.grow,"v-bottom-navigation--shift":n.mode==="shift"},S.value,x.value,E.value,C.value,I.value,B.value,n.class],style:[T.value,O.value,{height:convertToUnit(D.value)},A.value,n.style]},{default:()=>[_.default&&createVNode("div",{class:"v-bottom-navigation__content"},[_.default()])]})),{}}}),makeVDialogProps=propsFactory({fullscreen:Boolean,retainFocus:{type:Boolean,default:!0},scrollable:Boolean,...makeVOverlayProps({origin:"center center",scrollStrategy:"block",transition:{component:VDialogTransition},zIndex:2400})},"VDialog"),VDialog=genericComponent()({name:"VDialog",props:makeVDialogProps(),emits:{"update:modelValue":n=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useProxiedModel(n,"modelValue"),{scopeId:x}=useScopeId(),T=ref$2();function C(A){const D=A.relatedTarget,N=A.target;if(D!==N&&T.value?.contentEl&&T.value?.globalTop&&![document,T.value.contentEl].includes(N)&&!T.value.contentEl.contains(N)){const O=focusableChildren(T.value.contentEl);if(!O.length)return;const M=O[0],L=O[O.length-1];D===M?L.focus():M.focus()}}IN_BROWSER&&watch(()=>E.value&&n.retainFocus,A=>{A?document.addEventListener("focusin",C):document.removeEventListener("focusin",C)},{immediate:!0});function I(){_("afterEnter"),T.value?.contentEl&&!T.value.contentEl.contains(document.activeElement)&&T.value.contentEl.focus({preventScroll:!0})}function B(){_("afterLeave")}return watch(E,async A=>{A||(await nextTick$2(),T.value.activatorEl?.focus({preventScroll:!0}))}),useRender(()=>{const A=VOverlay.filterProps(n),D=mergeProps({"aria-haspopup":"dialog"},n.activatorProps),N=mergeProps({tabindex:-1},n.contentProps);return createVNode(VOverlay,mergeProps({ref:T,class:["v-dialog",{"v-dialog--fullscreen":n.fullscreen,"v-dialog--scrollable":n.scrollable},n.class],style:n.style},A,{modelValue:E.value,"onUpdate:modelValue":O=>E.value=O,"aria-modal":"true",activatorProps:D,contentProps:N,role:"dialog",onAfterEnter:I,onAfterLeave:B},x),{activator:S.activator,default:function(){for(var O=arguments.length,M=new Array(O),L=0;L[S.default?.(...M)]})}})}),forwardRefs({},T)}}),makeVBottomSheetProps=propsFactory({inset:Boolean,...makeVDialogProps({transition:"bottom-sheet-transition"})},"VBottomSheet"),VBottomSheet=genericComponent()({name:"VBottomSheet",props:makeVBottomSheetProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue");return useRender(()=>{const E=VDialog.filterProps(n);return createVNode(VDialog,mergeProps(E,{contentClass:["v-bottom-sheet__content",n.contentClass],modelValue:S.value,"onUpdate:modelValue":x=>S.value=x,class:["v-bottom-sheet",{"v-bottom-sheet--inset":n.inset},n.class],style:n.style}),_)}),{}}}),makeVBreadcrumbsDividerProps=propsFactory({divider:[Number,String],...makeComponentProps()},"VBreadcrumbsDivider"),VBreadcrumbsDivider=genericComponent()({name:"VBreadcrumbsDivider",props:makeVBreadcrumbsDividerProps(),setup(n,r){let{slots:_}=r;return useRender(()=>createVNode("li",{class:["v-breadcrumbs-divider",n.class],style:n.style},[_?.default?.()??n.divider])),{}}}),makeVBreadcrumbsItemProps=propsFactory({active:Boolean,activeClass:String,activeColor:String,color:String,disabled:Boolean,title:String,...makeComponentProps(),...makeRouterProps(),...makeTagProps({tag:"li"})},"VBreadcrumbsItem"),VBreadcrumbsItem=genericComponent()({name:"VBreadcrumbsItem",props:makeVBreadcrumbsItemProps(),setup(n,r){let{slots:_,attrs:S}=r;const E=useLink$1(n,S),x=computed(()=>n.active||E.isActive?.value),T=computed(()=>x.value?n.activeColor:n.color),{textColorClasses:C,textColorStyles:I}=useTextColor(T);return useRender(()=>createVNode(n.tag,{class:["v-breadcrumbs-item",{"v-breadcrumbs-item--active":x.value,"v-breadcrumbs-item--disabled":n.disabled,[`${n.activeClass}`]:x.value&&n.activeClass},C.value,n.class],style:[I.value,n.style],"aria-current":x.value?"page":void 0},{default:()=>[E.isLink.value?createVNode("a",mergeProps({class:"v-breadcrumbs-item--link",onClick:E.navigate},E.linkProps),[_.default?.()??n.title]):_.default?.()??n.title]})),{}}}),makeVBreadcrumbsProps=propsFactory({activeClass:String,activeColor:String,bgColor:String,color:String,disabled:Boolean,divider:{type:String,default:"/"},icon:IconValue,items:{type:Array,default:()=>[]},...makeComponentProps(),...makeDensityProps(),...makeRoundedProps(),...makeTagProps({tag:"ul"})},"VBreadcrumbs"),VBreadcrumbs=genericComponent()({name:"VBreadcrumbs",props:makeVBreadcrumbsProps(),setup(n,r){let{slots:_}=r;const{backgroundColorClasses:S,backgroundColorStyles:E}=useBackgroundColor(toRef(n,"bgColor")),{densityClasses:x}=useDensity(n),{roundedClasses:T}=useRounded(n);provideDefaults({VBreadcrumbsDivider:{divider:toRef(n,"divider")},VBreadcrumbsItem:{activeClass:toRef(n,"activeClass"),activeColor:toRef(n,"activeColor"),color:toRef(n,"color"),disabled:toRef(n,"disabled")}});const C=computed(()=>n.items.map(I=>typeof I=="string"?{item:{title:I},raw:I}:{item:I,raw:I}));return useRender(()=>{const I=!!(_.prepend||n.icon);return createVNode(n.tag,{class:["v-breadcrumbs",S.value,x.value,T.value,n.class],style:[E.value,n.style]},{default:()=>[I&&createVNode("li",{key:"prepend",class:"v-breadcrumbs__prepend"},[_.prepend?createVNode(VDefaultsProvider,{key:"prepend-defaults",disabled:!n.icon,defaults:{VIcon:{icon:n.icon,start:!0}}},_.prepend):createVNode(VIcon,{key:"prepend-icon",start:!0,icon:n.icon},null)]),C.value.map((B,A,D)=>{let{item:N,raw:O}=B;return createVNode(Fragment,null,[_.item?.({item:N,index:A})??createVNode(VBreadcrumbsItem,mergeProps({key:A,disabled:A>=D.length-1},typeof N=="string"?{title:N}:N),{default:_.title?()=>_.title?.({item:N,index:A}):void 0}),A_.divider?.({item:O,index:A}):void 0})])}),_.default?.()]})}),{}}}),VCardActions=genericComponent()({name:"VCardActions",props:makeComponentProps(),setup(n,r){let{slots:_}=r;return provideDefaults({VBtn:{slim:!0,variant:"text"}}),useRender(()=>createVNode("div",{class:["v-card-actions",n.class],style:n.style},[_.default?.()])),{}}}),makeVCardSubtitleProps=propsFactory({opacity:[Number,String],...makeComponentProps(),...makeTagProps()},"VCardSubtitle"),VCardSubtitle=genericComponent()({name:"VCardSubtitle",props:makeVCardSubtitleProps(),setup(n,r){let{slots:_}=r;return useRender(()=>createVNode(n.tag,{class:["v-card-subtitle",n.class],style:[{"--v-card-subtitle-opacity":n.opacity},n.style]},_)),{}}}),VCardTitle=createSimpleFunctional("v-card-title"),makeCardItemProps=propsFactory({appendAvatar:String,appendIcon:IconValue,prependAvatar:String,prependIcon:IconValue,subtitle:[String,Number],title:[String,Number],...makeComponentProps(),...makeDensityProps()},"VCardItem"),VCardItem=genericComponent()({name:"VCardItem",props:makeCardItemProps(),setup(n,r){let{slots:_}=r;return useRender(()=>{const S=!!(n.prependAvatar||n.prependIcon),E=!!(S||_.prepend),x=!!(n.appendAvatar||n.appendIcon),T=!!(x||_.append),C=!!(n.title!=null||_.title),I=!!(n.subtitle!=null||_.subtitle);return createVNode("div",{class:["v-card-item",n.class],style:n.style},[E&&createVNode("div",{key:"prepend",class:"v-card-item__prepend"},[_.prepend?createVNode(VDefaultsProvider,{key:"prepend-defaults",disabled:!S,defaults:{VAvatar:{density:n.density,image:n.prependAvatar},VIcon:{density:n.density,icon:n.prependIcon}}},_.prepend):createVNode(Fragment,null,[n.prependAvatar&&createVNode(VAvatar,{key:"prepend-avatar",density:n.density,image:n.prependAvatar},null),n.prependIcon&&createVNode(VIcon,{key:"prepend-icon",density:n.density,icon:n.prependIcon},null)])]),createVNode("div",{class:"v-card-item__content"},[C&&createVNode(VCardTitle,{key:"title"},{default:()=>[_.title?.()??n.title]}),I&&createVNode(VCardSubtitle,{key:"subtitle"},{default:()=>[_.subtitle?.()??n.subtitle]}),_.default?.()]),T&&createVNode("div",{key:"append",class:"v-card-item__append"},[_.append?createVNode(VDefaultsProvider,{key:"append-defaults",disabled:!x,defaults:{VAvatar:{density:n.density,image:n.appendAvatar},VIcon:{density:n.density,icon:n.appendIcon}}},_.append):createVNode(Fragment,null,[n.appendIcon&&createVNode(VIcon,{key:"append-icon",density:n.density,icon:n.appendIcon},null),n.appendAvatar&&createVNode(VAvatar,{key:"append-avatar",density:n.density,image:n.appendAvatar},null)])])])}),{}}}),makeVCardTextProps=propsFactory({opacity:[Number,String],...makeComponentProps(),...makeTagProps()},"VCardText"),VCardText=genericComponent()({name:"VCardText",props:makeVCardTextProps(),setup(n,r){let{slots:_}=r;return useRender(()=>createVNode(n.tag,{class:["v-card-text",n.class],style:[{"--v-card-text-opacity":n.opacity},n.style]},_)),{}}}),makeVCardProps=propsFactory({appendAvatar:String,appendIcon:IconValue,disabled:Boolean,flat:Boolean,hover:Boolean,image:String,link:{type:Boolean,default:void 0},prependAvatar:String,prependIcon:IconValue,ripple:{type:[Boolean,Object],default:!0},subtitle:[String,Number],text:[String,Number],title:[String,Number],...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeDimensionProps(),...makeElevationProps(),...makeLoaderProps(),...makeLocationProps(),...makePositionProps(),...makeRoundedProps(),...makeRouterProps(),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:"elevated"})},"VCard"),VCard=genericComponent()({name:"VCard",directives:{Ripple},props:makeVCardProps(),setup(n,r){let{attrs:_,slots:S}=r;const{themeClasses:E}=provideTheme(n),{borderClasses:x}=useBorder(n),{colorClasses:T,colorStyles:C,variantClasses:I}=useVariant(n),{densityClasses:B}=useDensity(n),{dimensionStyles:A}=useDimension(n),{elevationClasses:D}=useElevation(n),{loaderClasses:N}=useLoader(n),{locationStyles:O}=useLocation(n),{positionClasses:M}=usePosition(n),{roundedClasses:L}=useRounded(n),F=useLink$1(n,_),U=computed(()=>n.link!==!1&&F.isLink.value),j=computed(()=>!n.disabled&&n.link!==!1&&(n.link||F.isClickable.value));return useRender(()=>{const z=U.value?"a":n.tag,H=!!(S.title||n.title!=null),Q=!!(S.subtitle||n.subtitle!=null),J=H||Q,Z=!!(S.append||n.appendAvatar||n.appendIcon),re=!!(S.prepend||n.prependAvatar||n.prependIcon),ie=!!(S.image||n.image),pe=J||re||Z,ue=!!(S.text||n.text!=null);return withDirectives(createVNode(z,mergeProps({class:["v-card",{"v-card--disabled":n.disabled,"v-card--flat":n.flat,"v-card--hover":n.hover&&!(n.disabled||n.flat),"v-card--link":j.value},E.value,x.value,T.value,B.value,D.value,N.value,M.value,L.value,I.value,n.class],style:[C.value,A.value,O.value,n.style],onClick:j.value&&F.navigate,tabindex:n.disabled?-1:void 0},F.linkProps),{default:()=>[ie&&createVNode("div",{key:"image",class:"v-card__image"},[S.image?createVNode(VDefaultsProvider,{key:"image-defaults",disabled:!n.image,defaults:{VImg:{cover:!0,src:n.image}}},S.image):createVNode(VImg,{key:"image-img",cover:!0,src:n.image},null)]),createVNode(LoaderSlot,{name:"v-card",active:!!n.loading,color:typeof n.loading=="boolean"?void 0:n.loading},{default:S.loader}),pe&&createVNode(VCardItem,{key:"item",prependAvatar:n.prependAvatar,prependIcon:n.prependIcon,title:n.title,subtitle:n.subtitle,appendAvatar:n.appendAvatar,appendIcon:n.appendIcon},{default:S.item,prepend:S.prepend,title:S.title,subtitle:S.subtitle,append:S.append}),ue&&createVNode(VCardText,{key:"text"},{default:()=>[S.text?.()??n.text]}),S.default?.(),S.actions&&createVNode(VCardActions,null,{default:S.actions}),genOverlays(j.value,"v-card")]}),[[resolveDirective("ripple"),j.value&&n.ripple]])}),{}}}),handleGesture=n=>{const{touchstartX:r,touchendX:_,touchstartY:S,touchendY:E}=n,x=.5,T=16;n.offsetX=_-r,n.offsetY=E-S,Math.abs(n.offsetY)r+T&&n.right(n)),Math.abs(n.offsetX)S+T&&n.down(n))};function touchstart(n,r){const _=n.changedTouches[0];r.touchstartX=_.clientX,r.touchstartY=_.clientY,r.start?.({originalEvent:n,...r})}function touchend(n,r){const _=n.changedTouches[0];r.touchendX=_.clientX,r.touchendY=_.clientY,r.end?.({originalEvent:n,...r}),handleGesture(r)}function touchmove(n,r){const _=n.changedTouches[0];r.touchmoveX=_.clientX,r.touchmoveY=_.clientY,r.move?.({originalEvent:n,...r})}function createHandlers(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const r={touchstartX:0,touchstartY:0,touchendX:0,touchendY:0,touchmoveX:0,touchmoveY:0,offsetX:0,offsetY:0,left:n.left,right:n.right,up:n.up,down:n.down,start:n.start,move:n.move,end:n.end};return{touchstart:_=>touchstart(_,r),touchend:_=>touchend(_,r),touchmove:_=>touchmove(_,r)}}function mounted$3(n,r){const _=r.value,S=_?.parent?n.parentElement:n,E=_?.options??{passive:!0},x=r.instance?.$.uid;if(!S||!x)return;const T=createHandlers(r.value);S._touchHandlers=S._touchHandlers??Object.create(null),S._touchHandlers[x]=T,keys$2(T).forEach(C=>{S.addEventListener(C,T[C],E)})}function unmounted$3(n,r){const _=r.value?.parent?n.parentElement:n,S=r.instance?.$.uid;if(!_?._touchHandlers||!S)return;const E=_._touchHandlers[S];keys$2(E).forEach(x=>{_.removeEventListener(x,E[x])}),delete _._touchHandlers[S]}const Touch={mounted:mounted$3,unmounted:unmounted$3},VWindowSymbol=Symbol.for("vuetify:v-window"),VWindowGroupSymbol=Symbol.for("vuetify:v-window-group"),makeVWindowProps=propsFactory({continuous:Boolean,nextIcon:{type:[Boolean,String,Function,Object],default:"$next"},prevIcon:{type:[Boolean,String,Function,Object],default:"$prev"},reverse:Boolean,showArrows:{type:[Boolean,String],validator:n=>typeof n=="boolean"||n==="hover"},touch:{type:[Object,Boolean],default:void 0},direction:{type:String,default:"horizontal"},modelValue:null,disabled:Boolean,selectedClass:{type:String,default:"v-window-item--active"},mandatory:{type:[Boolean,String],default:"force"},...makeComponentProps(),...makeTagProps(),...makeThemeProps()},"VWindow"),VWindow=genericComponent()({name:"VWindow",directives:{Touch},props:makeVWindowProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n),{isRtl:E}=useRtl(),{t:x}=useLocale(),T=useGroup(n,VWindowGroupSymbol),C=ref$2(),I=computed(()=>E.value?!n.reverse:n.reverse),B=shallowRef(!1),A=computed(()=>{const H=n.direction==="vertical"?"y":"x",J=(I.value?!B.value:B.value)?"-reverse":"";return`v-window-${H}${J}-transition`}),D=shallowRef(0),N=ref$2(void 0),O=computed(()=>T.items.value.findIndex(H=>T.selected.value.includes(H.id)));watch(O,(H,Q)=>{const J=T.items.value.length,Z=J-1;J<=2?B.value=Hn.continuous||O.value!==0),L=computed(()=>n.continuous||O.value!==T.items.value.length-1);function F(){M.value&&T.prev()}function U(){L.value&&T.next()}const j=computed(()=>{const H=[],Q={icon:E.value?n.nextIcon:n.prevIcon,class:`v-window__${I.value?"right":"left"}`,onClick:T.prev,"aria-label":x("$vuetify.carousel.prev")};H.push(M.value?_.prev?_.prev({props:Q}):createVNode(VBtn,Q,null):createVNode("div",null,null));const J={icon:E.value?n.prevIcon:n.nextIcon,class:`v-window__${I.value?"left":"right"}`,onClick:T.next,"aria-label":x("$vuetify.carousel.next")};return H.push(L.value?_.next?_.next({props:J}):createVNode(VBtn,J,null):createVNode("div",null,null)),H}),z=computed(()=>n.touch===!1?n.touch:{...{left:()=>{I.value?F():U()},right:()=>{I.value?U():F()},start:Q=>{let{originalEvent:J}=Q;J.stopPropagation()}},...n.touch===!0?{}:n.touch});return useRender(()=>withDirectives(createVNode(n.tag,{ref:C,class:["v-window",{"v-window--show-arrows-on-hover":n.showArrows==="hover"},S.value,n.class],style:n.style},{default:()=>[createVNode("div",{class:"v-window__container",style:{height:N.value}},[_.default?.({group:T}),n.showArrows!==!1&&createVNode("div",{class:"v-window__controls"},[j.value])]),_.additional?.({group:T})]}),[[resolveDirective("touch"),z.value]])),{group:T}}}),makeVCarouselProps=propsFactory({color:String,cycle:Boolean,delimiterIcon:{type:IconValue,default:"$delimiter"},height:{type:[Number,String],default:500},hideDelimiters:Boolean,hideDelimiterBackground:Boolean,interval:{type:[Number,String],default:6e3,validator:n=>Number(n)>0},progress:[Boolean,String],verticalDelimiters:[Boolean,String],...makeVWindowProps({continuous:!0,mandatory:"force",showArrows:!0})},"VCarousel"),VCarousel=genericComponent()({name:"VCarousel",props:makeVCarouselProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),{t:E}=useLocale(),x=ref$2();let T=-1;watch(S,I),watch(()=>n.interval,I),watch(()=>n.cycle,B=>{B?I():window.clearTimeout(T)}),onMounted(C);function C(){!n.cycle||!x.value||(T=window.setTimeout(x.value.group.next,+n.interval>0?+n.interval:6e3))}function I(){window.clearTimeout(T),window.requestAnimationFrame(C)}return useRender(()=>{const B=VWindow.filterProps(n);return createVNode(VWindow,mergeProps({ref:x},B,{modelValue:S.value,"onUpdate:modelValue":A=>S.value=A,class:["v-carousel",{"v-carousel--hide-delimiter-background":n.hideDelimiterBackground,"v-carousel--vertical-delimiters":n.verticalDelimiters},n.class],style:[{height:convertToUnit(n.height)},n.style]}),{default:_.default,additional:A=>{let{group:D}=A;return createVNode(Fragment,null,[!n.hideDelimiters&&createVNode("div",{class:"v-carousel__controls",style:{left:n.verticalDelimiters==="left"&&n.verticalDelimiters?0:"auto",right:n.verticalDelimiters==="right"?0:"auto"}},[D.items.value.length>0&&createVNode(VDefaultsProvider,{defaults:{VBtn:{color:n.color,icon:n.delimiterIcon,size:"x-small",variant:"text"}},scoped:!0},{default:()=>[D.items.value.map((N,O)=>{const M={id:`carousel-item-${N.id}`,"aria-label":E("$vuetify.carousel.ariaLabel.delimiter",O+1,D.items.value.length),class:["v-carousel__controls__item",D.isSelected(N.id)&&"v-btn--active"],onClick:()=>D.select(N.id,!0)};return _.item?_.item({props:M,item:N}):createVNode(VBtn,mergeProps(N,M),null)})]})]),n.progress&&createVNode(VProgressLinear,{class:"v-carousel__progress",color:typeof n.progress=="string"?n.progress:void 0,modelValue:(D.getItemIndex(S.value)+1)/D.items.value.length*100},null)])},prev:_.prev,next:_.next})}),{}}}),makeVWindowItemProps=propsFactory({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},...makeComponentProps(),...makeGroupItemProps(),...makeLazyProps()},"VWindowItem"),VWindowItem=genericComponent()({name:"VWindowItem",directives:{Touch},props:makeVWindowItemProps(),emits:{"group:selected":n=>!0},setup(n,r){let{slots:_}=r;const S=inject$1(VWindowSymbol),E=useGroupItem(n,VWindowGroupSymbol),{isBooted:x}=useSsrBoot();if(!S||!E)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const T=shallowRef(!1),C=computed(()=>x.value&&(S.isReversed.value?n.reverseTransition!==!1:n.transition!==!1));function I(){!T.value||!S||(T.value=!1,S.transitionCount.value>0&&(S.transitionCount.value-=1,S.transitionCount.value===0&&(S.transitionHeight.value=void 0)))}function B(){T.value||!S||(T.value=!0,S.transitionCount.value===0&&(S.transitionHeight.value=convertToUnit(S.rootRef.value?.clientHeight)),S.transitionCount.value+=1)}function A(){I()}function D(M){T.value&&nextTick$2(()=>{!C.value||!T.value||!S||(S.transitionHeight.value=convertToUnit(M.clientHeight))})}const N=computed(()=>{const M=S.isReversed.value?n.reverseTransition:n.transition;return C.value?{name:typeof M!="string"?S.transition.value:M,onBeforeEnter:B,onAfterEnter:I,onEnterCancelled:A,onBeforeLeave:B,onAfterLeave:I,onLeaveCancelled:A,onEnter:D}:!1}),{hasContent:O}=useLazy(n,E.isSelected);return useRender(()=>createVNode(MaybeTransition,{transition:N.value,disabled:!x.value},{default:()=>[withDirectives(createVNode("div",{class:["v-window-item",E.selectedClass.value,n.class],style:n.style},[O.value&&_.default?.()]),[[vShow,E.isSelected.value]])]})),{groupItem:E}}}),makeVCarouselItemProps=propsFactory({...makeVImgProps(),...makeVWindowItemProps()},"VCarouselItem"),VCarouselItem=genericComponent()({name:"VCarouselItem",inheritAttrs:!1,props:makeVCarouselItemProps(),setup(n,r){let{slots:_,attrs:S}=r;useRender(()=>{const E=VImg.filterProps(n),x=VWindowItem.filterProps(n);return createVNode(VWindowItem,mergeProps({class:["v-carousel-item",n.class]},x),{default:()=>[createVNode(VImg,mergeProps(S,E),_)]})})}}),VCode=createSimpleFunctional("v-code"),makeVColorPickerCanvasProps=propsFactory({color:{type:Object},disabled:Boolean,dotSize:{type:[Number,String],default:10},height:{type:[Number,String],default:150},width:{type:[Number,String],default:300},...makeComponentProps()},"VColorPickerCanvas"),VColorPickerCanvas=defineComponent({name:"VColorPickerCanvas",props:makeVColorPickerCanvasProps(),emits:{"update:color":n=>!0,"update:position":n=>!0},setup(n,r){let{emit:_}=r;const S=shallowRef(!1),E=ref$2(),x=shallowRef(parseFloat(n.width)),T=shallowRef(parseFloat(n.height)),C=ref$2({x:0,y:0}),I=computed({get:()=>C.value,set(F){if(!E.value)return;const{x:U,y:j}=F;C.value=F,_("update:color",{h:n.color?.h??0,s:clamp(U,0,x.value)/x.value,v:1-clamp(j,0,T.value)/T.value,a:n.color?.a??1})}}),B=computed(()=>{const{x:F,y:U}=I.value,j=parseInt(n.dotSize,10)/2;return{width:convertToUnit(n.dotSize),height:convertToUnit(n.dotSize),transform:`translate(${convertToUnit(F-j)}, ${convertToUnit(U-j)})`}}),{resizeRef:A}=useResizeObserver(F=>{if(!A.el?.offsetParent)return;const{width:U,height:j}=F[0].contentRect;x.value=U,T.value=j});function D(F,U,j){const{left:z,top:H,width:Q,height:J}=j;I.value={x:clamp(F-z,0,Q),y:clamp(U-H,0,J)}}function N(F){F.type==="mousedown"&&F.preventDefault(),!n.disabled&&(O(F),window.addEventListener("mousemove",O),window.addEventListener("mouseup",M),window.addEventListener("touchmove",O),window.addEventListener("touchend",M))}function O(F){if(n.disabled||!E.value)return;S.value=!0;const U=getEventCoordinates(F);D(U.clientX,U.clientY,E.value.getBoundingClientRect())}function M(){window.removeEventListener("mousemove",O),window.removeEventListener("mouseup",M),window.removeEventListener("touchmove",O),window.removeEventListener("touchend",M)}function L(){if(!E.value)return;const F=E.value,U=F.getContext("2d");if(!U)return;const j=U.createLinearGradient(0,0,F.width,0);j.addColorStop(0,"hsla(0, 0%, 100%, 1)"),j.addColorStop(1,`hsla(${n.color?.h??0}, 100%, 50%, 1)`),U.fillStyle=j,U.fillRect(0,0,F.width,F.height);const z=U.createLinearGradient(0,0,0,F.height);z.addColorStop(0,"hsla(0, 0%, 0%, 0)"),z.addColorStop(1,"hsla(0, 0%, 0%, 1)"),U.fillStyle=z,U.fillRect(0,0,F.width,F.height)}return watch(()=>n.color?.h,L,{immediate:!0}),watch(()=>[x.value,T.value],(F,U)=>{L(),C.value={x:I.value.x*F[0]/U[0],y:I.value.y*F[1]/U[1]}},{flush:"post"}),watch(()=>n.color,()=>{if(S.value){S.value=!1;return}C.value=n.color?{x:n.color.s*x.value,y:(1-n.color.v)*T.value}:{x:0,y:0}},{deep:!0,immediate:!0}),onMounted(()=>L()),useRender(()=>createVNode("div",{ref:A,class:["v-color-picker-canvas",n.class],style:n.style,onMousedown:N,onTouchstartPassive:N},[createVNode("canvas",{ref:E,width:x.value,height:T.value},null),n.color&&createVNode("div",{class:["v-color-picker-canvas__dot",{"v-color-picker-canvas__dot--disabled":n.disabled}],style:B.value},null)])),{}}});function stripAlpha(n,r){if(r){const{a:_,...S}=n;return S}return n}function extractColor(n,r){if(r==null||typeof r=="string"){const _=HSVtoHex(n);return n.a===1?_.slice(0,7):_}if(typeof r=="object"){let _;return has$2(r,["r","g","b"])?_=HSVtoRGB(n):has$2(r,["h","s","l"])?_=HSVtoHSL(n):has$2(r,["h","s","v"])&&(_=n),stripAlpha(_,!has$2(r,["a"])&&n.a===1)}return n}const nullColor={h:0,s:0,v:0,a:1},rgba={inputProps:{type:"number",min:0},inputs:[{label:"R",max:255,step:1,getValue:n=>Math.round(n.r),getColor:(n,r)=>({...n,r:Number(r)})},{label:"G",max:255,step:1,getValue:n=>Math.round(n.g),getColor:(n,r)=>({...n,g:Number(r)})},{label:"B",max:255,step:1,getValue:n=>Math.round(n.b),getColor:(n,r)=>({...n,b:Number(r)})},{label:"A",max:1,step:.01,getValue:n=>{let{a:r}=n;return r!=null?Math.round(r*100)/100:1},getColor:(n,r)=>({...n,a:Number(r)})}],to:HSVtoRGB,from:RGBtoHSV},rgb={...rgba,inputs:rgba.inputs?.slice(0,3)},hsla={inputProps:{type:"number",min:0},inputs:[{label:"H",max:360,step:1,getValue:n=>Math.round(n.h),getColor:(n,r)=>({...n,h:Number(r)})},{label:"S",max:1,step:.01,getValue:n=>Math.round(n.s*100)/100,getColor:(n,r)=>({...n,s:Number(r)})},{label:"L",max:1,step:.01,getValue:n=>Math.round(n.l*100)/100,getColor:(n,r)=>({...n,l:Number(r)})},{label:"A",max:1,step:.01,getValue:n=>{let{a:r}=n;return r!=null?Math.round(r*100)/100:1},getColor:(n,r)=>({...n,a:Number(r)})}],to:HSVtoHSL,from:HSLtoHSV},hsl={...hsla,inputs:hsla.inputs.slice(0,3)},hexa={inputProps:{type:"text"},inputs:[{label:"HEXA",getValue:n=>n,getColor:(n,r)=>r}],to:HSVtoHex,from:HexToHSV},hex={...hexa,inputs:[{label:"HEX",getValue:n=>n.slice(0,7),getColor:(n,r)=>r}]},modes={rgb,rgba,hsl,hsla,hex,hexa},VColorPickerInput=n=>{let{label:r,..._}=n;return createVNode("div",{class:"v-color-picker-edit__input"},[createVNode("input",_,null),createVNode("span",null,[r])])},makeVColorPickerEditProps=propsFactory({color:Object,disabled:Boolean,mode:{type:String,default:"rgba",validator:n=>Object.keys(modes).includes(n)},modes:{type:Array,default:()=>Object.keys(modes),validator:n=>Array.isArray(n)&&n.every(r=>Object.keys(modes).includes(r))},...makeComponentProps()},"VColorPickerEdit"),VColorPickerEdit=defineComponent({name:"VColorPickerEdit",props:makeVColorPickerEditProps(),emits:{"update:color":n=>!0,"update:mode":n=>!0},setup(n,r){let{emit:_}=r;const S=computed(()=>n.modes.map(x=>({...modes[x],name:x}))),E=computed(()=>{const x=S.value.find(C=>C.name===n.mode);if(!x)return[];const T=n.color?x.to(n.color):null;return x.inputs?.map(C=>{let{getValue:I,getColor:B,...A}=C;return{...x.inputProps,...A,disabled:n.disabled,value:T&&I(T),onChange:D=>{const N=D.target;N&&_("update:color",x.from(B(T??x.to(nullColor),N.value)))}}})});return useRender(()=>createVNode("div",{class:["v-color-picker-edit",n.class],style:n.style},[E.value?.map(x=>createVNode(VColorPickerInput,x,null)),S.value.length>1&&createVNode(VBtn,{icon:"$unfold",size:"x-small",variant:"plain",onClick:()=>{const x=S.value.findIndex(T=>T.name===n.mode);_("update:mode",S.value[(x+1)%S.value.length].name)}},null)])),{}}}),VSliderSymbol=Symbol.for("vuetify:v-slider");function getOffset(n,r,_){const S=_==="vertical",E=r.getBoundingClientRect(),x="touches"in n?n.touches[0]:n;return S?x.clientY-(E.top+E.height/2):x.clientX-(E.left+E.width/2)}function getPosition(n,r){return"touches"in n&&n.touches.length?n.touches[0][r]:"changedTouches"in n&&n.changedTouches.length?n.changedTouches[0][r]:n[r]}const makeSliderProps=propsFactory({disabled:{type:Boolean,default:null},error:Boolean,readonly:{type:Boolean,default:null},max:{type:[Number,String],default:100},min:{type:[Number,String],default:0},step:{type:[Number,String],default:0},thumbColor:String,thumbLabel:{type:[Boolean,String],default:void 0,validator:n=>typeof n=="boolean"||n==="always"},thumbSize:{type:[Number,String],default:20},showTicks:{type:[Boolean,String],default:!1,validator:n=>typeof n=="boolean"||n==="always"},ticks:{type:[Array,Object]},tickSize:{type:[Number,String],default:2},color:String,trackColor:String,trackFillColor:String,trackSize:{type:[Number,String],default:4},direction:{type:String,default:"horizontal",validator:n=>["vertical","horizontal"].includes(n)},reverse:Boolean,...makeRoundedProps(),...makeElevationProps({elevation:2}),ripple:{type:Boolean,default:!0}},"Slider"),useSteps=n=>{const r=computed(()=>parseFloat(n.min)),_=computed(()=>parseFloat(n.max)),S=computed(()=>+n.step>0?parseFloat(n.step):0),E=computed(()=>Math.max(getDecimals(S.value),getDecimals(r.value)));function x(T){if(T=parseFloat(T),S.value<=0)return T;const C=clamp(T,r.value,_.value),I=r.value%S.value,B=Math.round((C-I)/S.value)*S.value+I;return parseFloat(Math.min(B,_.value).toFixed(E.value))}return{min:r,max:_,step:S,decimals:E,roundValue:x}},useSlider=n=>{let{props:r,steps:_,onSliderStart:S,onSliderMove:E,onSliderEnd:x,getActiveThumb:T}=n;const{isRtl:C}=useRtl(),I=toRef(r,"reverse"),B=computed(()=>r.direction==="vertical"),A=computed(()=>B.value!==I.value),{min:D,max:N,step:O,decimals:M,roundValue:L}=_,F=computed(()=>parseInt(r.thumbSize,10)),U=computed(()=>parseInt(r.tickSize,10)),j=computed(()=>parseInt(r.trackSize,10)),z=computed(()=>(N.value-D.value)/O.value),H=toRef(r,"disabled"),Q=computed(()=>r.error||r.disabled?void 0:r.thumbColor??r.color),J=computed(()=>r.error||r.disabled?void 0:r.trackColor??r.color),Z=computed(()=>r.error||r.disabled?void 0:r.trackFillColor??r.color),re=shallowRef(!1),ie=shallowRef(0),pe=ref$2(),ue=ref$2();function W(de){const he=r.direction==="vertical",me=he?"top":"left",Ee=he?"height":"width",Ce=he?"clientY":"clientX",{[me]:be,[Ee]:ge}=pe.value?.$el.getBoundingClientRect(),we=getPosition(de,Ce);let fe=Math.min(Math.max((we-be-ie.value)/ge,0),1)||0;return(he?A.value:A.value!==C.value)&&(fe=1-fe),L(D.value+fe*(N.value-D.value))}const Y=de=>{x({value:W(de)}),re.value=!1,ie.value=0},q=de=>{ue.value=T(de),ue.value&&(ue.value.focus(),re.value=!0,ue.value.contains(de.target)?ie.value=getOffset(de,ue.value,r.direction):(ie.value=0,E({value:W(de)})),S({value:W(de)}))},G={passive:!0,capture:!0};function ne(de){E({value:W(de)})}function ee(de){de.stopPropagation(),de.preventDefault(),Y(de),window.removeEventListener("mousemove",ne,G),window.removeEventListener("mouseup",ee)}function oe(de){Y(de),window.removeEventListener("touchmove",ne,G),de.target?.removeEventListener("touchend",oe)}function ae(de){q(de),window.addEventListener("touchmove",ne,G),de.target?.addEventListener("touchend",oe,{passive:!1})}function se(de){de.preventDefault(),q(de),window.addEventListener("mousemove",ne,G),window.addEventListener("mouseup",ee,{passive:!1})}const te=de=>{const he=(de-D.value)/(N.value-D.value)*100;return clamp(isNaN(he)?0:he,0,100)},X=toRef(r,"showTicks"),ce=computed(()=>X.value?r.ticks?Array.isArray(r.ticks)?r.ticks.map(de=>({value:de,position:te(de),label:de.toString()})):Object.keys(r.ticks).map(de=>({value:parseFloat(de),position:te(parseFloat(de)),label:r.ticks[de]})):z.value!==1/0?createRange(z.value+1).map(de=>{const he=D.value+de*O.value;return{value:he,position:te(he)}}):[]:[]),le=computed(()=>ce.value.some(de=>{let{label:he}=de;return!!he})),ye={activeThumbRef:ue,color:toRef(r,"color"),decimals:M,disabled:H,direction:toRef(r,"direction"),elevation:toRef(r,"elevation"),hasLabels:le,isReversed:I,indexFromEnd:A,min:D,max:N,mousePressed:re,numTicks:z,onSliderMousedown:se,onSliderTouchstart:ae,parsedTicks:ce,parseMouseMove:W,position:te,readonly:toRef(r,"readonly"),rounded:toRef(r,"rounded"),roundValue:L,showTicks:X,startOffset:ie,step:O,thumbSize:F,thumbColor:Q,thumbLabel:toRef(r,"thumbLabel"),ticks:toRef(r,"ticks"),tickSize:U,trackColor:J,trackContainerRef:pe,trackFillColor:Z,trackSize:j,vertical:B};return provide(VSliderSymbol,ye),ye},makeVSliderThumbProps=propsFactory({focused:Boolean,max:{type:Number,required:!0},min:{type:Number,required:!0},modelValue:{type:Number,required:!0},position:{type:Number,required:!0},ripple:{type:[Boolean,Object],default:!0},name:String,...makeComponentProps()},"VSliderThumb"),VSliderThumb=genericComponent()({name:"VSliderThumb",directives:{Ripple},props:makeVSliderThumbProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=inject$1(VSliderSymbol),{isRtl:x,rtlClasses:T}=useRtl();if(!E)throw new Error("[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider");const{thumbColor:C,step:I,disabled:B,thumbSize:A,thumbLabel:D,direction:N,isReversed:O,vertical:M,readonly:L,elevation:F,mousePressed:U,decimals:j,indexFromEnd:z}=E,H=computed(()=>B.value?void 0:F.value),{elevationClasses:Q}=useElevation(H),{textColorClasses:J,textColorStyles:Z}=useTextColor(C),{pageup:re,pagedown:ie,end:pe,home:ue,left:W,right:Y,down:q,up:G}=keyValues,ne=[re,ie,pe,ue,W,Y,q,G],ee=computed(()=>I.value?[1,2,3]:[1,5,10]);function oe(se,te){if(!ne.includes(se.key))return;se.preventDefault();const X=I.value||.1,ce=(n.max-n.min)/X;if([W,Y,q,G].includes(se.key)){const ye=(M.value?[x.value?W:Y,O.value?q:G]:z.value!==x.value?[W,G]:[Y,G]).includes(se.key)?1:-1,de=se.shiftKey?2:se.ctrlKey?1:0;te=te+ye*X*ee.value[de]}else if(se.key===ue)te=n.min;else if(se.key===pe)te=n.max;else{const le=se.key===ie?1:-1;te=te-le*X*(ce>100?ce/10:10)}return Math.max(n.min,Math.min(n.max,te))}function ae(se){const te=oe(se,n.modelValue);te!=null&&S("update:modelValue",te)}return useRender(()=>{const se=convertToUnit(z.value?100-n.position:n.position,"%");return createVNode("div",{class:["v-slider-thumb",{"v-slider-thumb--focused":n.focused,"v-slider-thumb--pressed":n.focused&&U.value},n.class,T.value],style:[{"--v-slider-thumb-position":se,"--v-slider-thumb-size":convertToUnit(A.value)},n.style],role:"slider",tabindex:B.value?-1:0,"aria-label":n.name,"aria-valuemin":n.min,"aria-valuemax":n.max,"aria-valuenow":n.modelValue,"aria-readonly":!!L.value,"aria-orientation":N.value,onKeydown:L.value?void 0:ae},[createVNode("div",{class:["v-slider-thumb__surface",J.value,Q.value],style:{...Z.value}},null),withDirectives(createVNode("div",{class:["v-slider-thumb__ripple",J.value],style:Z.value},null),[[resolveDirective("ripple"),n.ripple,null,{circle:!0,center:!0}]]),createVNode(VScaleTransition,{origin:"bottom center"},{default:()=>[withDirectives(createVNode("div",{class:"v-slider-thumb__label-container"},[createVNode("div",{class:["v-slider-thumb__label"]},[createVNode("div",null,[_["thumb-label"]?.({modelValue:n.modelValue})??n.modelValue.toFixed(I.value?j.value:1)])])]),[[vShow,D.value&&n.focused||D.value==="always"]])]})])}),{}}}),makeVSliderTrackProps=propsFactory({start:{type:Number,required:!0},stop:{type:Number,required:!0},...makeComponentProps()},"VSliderTrack"),VSliderTrack=genericComponent()({name:"VSliderTrack",props:makeVSliderTrackProps(),emits:{},setup(n,r){let{slots:_}=r;const S=inject$1(VSliderSymbol);if(!S)throw new Error("[Vuetify] v-slider-track must be inside v-slider or v-range-slider");const{color:E,parsedTicks:x,rounded:T,showTicks:C,tickSize:I,trackColor:B,trackFillColor:A,trackSize:D,vertical:N,min:O,max:M,indexFromEnd:L}=S,{roundedClasses:F}=useRounded(T),{backgroundColorClasses:U,backgroundColorStyles:j}=useBackgroundColor(A),{backgroundColorClasses:z,backgroundColorStyles:H}=useBackgroundColor(B),Q=computed(()=>`inset-${N.value?"block":"inline"}-${L.value?"end":"start"}`),J=computed(()=>N.value?"height":"width"),Z=computed(()=>({[Q.value]:"0%",[J.value]:"100%"})),re=computed(()=>n.stop-n.start),ie=computed(()=>({[Q.value]:convertToUnit(n.start,"%"),[J.value]:convertToUnit(re.value,"%")})),pe=computed(()=>C.value?(N.value?x.value.slice().reverse():x.value).map((W,Y)=>{const q=W.value!==O.value&&W.value!==M.value?convertToUnit(W.position,"%"):void 0;return createVNode("div",{key:W.value,class:["v-slider-track__tick",{"v-slider-track__tick--filled":W.position>=n.start&&W.position<=n.stop,"v-slider-track__tick--first":W.value===O.value,"v-slider-track__tick--last":W.value===M.value}],style:{[Q.value]:q}},[(W.label||_["tick-label"])&&createVNode("div",{class:"v-slider-track__tick-label"},[_["tick-label"]?.({tick:W,index:Y})??W.label])])}):[]);return useRender(()=>createVNode("div",{class:["v-slider-track",F.value,n.class],style:[{"--v-slider-track-size":convertToUnit(D.value),"--v-slider-tick-size":convertToUnit(I.value)},n.style]},[createVNode("div",{class:["v-slider-track__background",z.value,{"v-slider-track__background--opacity":!!E.value||!A.value}],style:{...Z.value,...H.value}},null),createVNode("div",{class:["v-slider-track__fill",U.value],style:{...ie.value,...j.value}},null),C.value&&createVNode("div",{class:["v-slider-track__ticks",{"v-slider-track__ticks--always-show":C.value==="always"}]},[pe.value])])),{}}}),makeVSliderProps=propsFactory({...makeFocusProps(),...makeSliderProps(),...makeVInputProps(),modelValue:{type:[Number,String],default:0}},"VSlider"),VSlider=genericComponent()({name:"VSlider",props:makeVSliderProps(),emits:{"update:focused":n=>!0,"update:modelValue":n=>!0,start:n=>!0,end:n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=ref$2(),{rtlClasses:x}=useRtl(),T=useSteps(n),C=useProxiedModel(n,"modelValue",void 0,J=>T.roundValue(J??T.min.value)),{min:I,max:B,mousePressed:A,roundValue:D,onSliderMousedown:N,onSliderTouchstart:O,trackContainerRef:M,position:L,hasLabels:F,readonly:U}=useSlider({props:n,steps:T,onSliderStart:()=>{S("start",C.value)},onSliderEnd:J=>{let{value:Z}=J;const re=D(Z);C.value=re,S("end",re)},onSliderMove:J=>{let{value:Z}=J;return C.value=D(Z)},getActiveThumb:()=>E.value?.$el}),{isFocused:j,focus:z,blur:H}=useFocus(n),Q=computed(()=>L(C.value));return useRender(()=>{const J=VInput.filterProps(n),Z=!!(n.label||_.label||_.prepend);return createVNode(VInput,mergeProps({class:["v-slider",{"v-slider--has-labels":!!_["tick-label"]||F.value,"v-slider--focused":j.value,"v-slider--pressed":A.value,"v-slider--disabled":n.disabled},x.value,n.class],style:n.style},J,{focused:j.value}),{..._,prepend:Z?re=>createVNode(Fragment,null,[_.label?.(re)??(n.label?createVNode(VLabel,{id:re.id.value,class:"v-slider__label",text:n.label},null):void 0),_.prepend?.(re)]):void 0,default:re=>{let{id:ie,messagesId:pe}=re;return createVNode("div",{class:"v-slider__container",onMousedown:U.value?void 0:N,onTouchstartPassive:U.value?void 0:O},[createVNode("input",{id:ie.value,name:n.name||ie.value,disabled:!!n.disabled,readonly:!!n.readonly,tabindex:"-1",value:C.value},null),createVNode(VSliderTrack,{ref:M,start:0,stop:Q.value},{"tick-label":_["tick-label"]}),createVNode(VSliderThumb,{ref:E,"aria-describedby":pe.value,focused:j.value,min:I.value,max:B.value,modelValue:C.value,"onUpdate:modelValue":ue=>C.value=ue,position:Q.value,elevation:n.elevation,onFocus:z,onBlur:H,ripple:n.ripple,name:n.name},{"thumb-label":_["thumb-label"]})])}})}),{}}}),makeVColorPickerPreviewProps=propsFactory({color:{type:Object},disabled:Boolean,hideAlpha:Boolean,...makeComponentProps()},"VColorPickerPreview"),VColorPickerPreview=defineComponent({name:"VColorPickerPreview",props:makeVColorPickerPreviewProps(),emits:{"update:color":n=>!0},setup(n,r){let{emit:_}=r;const S=new AbortController;onUnmounted(()=>S.abort());async function E(){if(!SUPPORTS_EYE_DROPPER)return;const x=new window.EyeDropper;try{const T=await x.open({signal:S.signal}),C=HexToHSV(T.sRGBHex);_("update:color",{...n.color??nullColor,...C})}catch{}}return useRender(()=>createVNode("div",{class:["v-color-picker-preview",{"v-color-picker-preview--hide-alpha":n.hideAlpha},n.class],style:n.style},[SUPPORTS_EYE_DROPPER&&createVNode("div",{class:"v-color-picker-preview__eye-dropper",key:"eyeDropper"},[createVNode(VBtn,{onClick:E,icon:"$eyeDropper",variant:"plain",density:"comfortable"},null)]),createVNode("div",{class:"v-color-picker-preview__dot"},[createVNode("div",{style:{background:HSVtoCSS(n.color??nullColor)}},null)]),createVNode("div",{class:"v-color-picker-preview__sliders"},[createVNode(VSlider,{class:"v-color-picker-preview__track v-color-picker-preview__hue",modelValue:n.color?.h,"onUpdate:modelValue":x=>_("update:color",{...n.color??nullColor,h:x}),step:0,min:0,max:360,disabled:n.disabled,thumbSize:14,trackSize:8,trackFillColor:"white",hideDetails:!0},null),!n.hideAlpha&&createVNode(VSlider,{class:"v-color-picker-preview__track v-color-picker-preview__alpha",modelValue:n.color?.a??1,"onUpdate:modelValue":x=>_("update:color",{...n.color??nullColor,a:x}),step:1/256,min:0,max:1,disabled:n.disabled,thumbSize:14,trackSize:8,trackFillColor:"white",hideDetails:!0},null)])])),{}}}),red={base:"#f44336",lighten5:"#ffebee",lighten4:"#ffcdd2",lighten3:"#ef9a9a",lighten2:"#e57373",lighten1:"#ef5350",darken1:"#e53935",darken2:"#d32f2f",darken3:"#c62828",darken4:"#b71c1c",accent1:"#ff8a80",accent2:"#ff5252",accent3:"#ff1744",accent4:"#d50000"},pink={base:"#e91e63",lighten5:"#fce4ec",lighten4:"#f8bbd0",lighten3:"#f48fb1",lighten2:"#f06292",lighten1:"#ec407a",darken1:"#d81b60",darken2:"#c2185b",darken3:"#ad1457",darken4:"#880e4f",accent1:"#ff80ab",accent2:"#ff4081",accent3:"#f50057",accent4:"#c51162"},purple={base:"#9c27b0",lighten5:"#f3e5f5",lighten4:"#e1bee7",lighten3:"#ce93d8",lighten2:"#ba68c8",lighten1:"#ab47bc",darken1:"#8e24aa",darken2:"#7b1fa2",darken3:"#6a1b9a",darken4:"#4a148c",accent1:"#ea80fc",accent2:"#e040fb",accent3:"#d500f9",accent4:"#aa00ff"},deepPurple={base:"#673ab7",lighten5:"#ede7f6",lighten4:"#d1c4e9",lighten3:"#b39ddb",lighten2:"#9575cd",lighten1:"#7e57c2",darken1:"#5e35b1",darken2:"#512da8",darken3:"#4527a0",darken4:"#311b92",accent1:"#b388ff",accent2:"#7c4dff",accent3:"#651fff",accent4:"#6200ea"},indigo={base:"#3f51b5",lighten5:"#e8eaf6",lighten4:"#c5cae9",lighten3:"#9fa8da",lighten2:"#7986cb",lighten1:"#5c6bc0",darken1:"#3949ab",darken2:"#303f9f",darken3:"#283593",darken4:"#1a237e",accent1:"#8c9eff",accent2:"#536dfe",accent3:"#3d5afe",accent4:"#304ffe"},blue={base:"#2196f3",lighten5:"#e3f2fd",lighten4:"#bbdefb",lighten3:"#90caf9",lighten2:"#64b5f6",lighten1:"#42a5f5",darken1:"#1e88e5",darken2:"#1976d2",darken3:"#1565c0",darken4:"#0d47a1",accent1:"#82b1ff",accent2:"#448aff",accent3:"#2979ff",accent4:"#2962ff"},lightBlue={base:"#03a9f4",lighten5:"#e1f5fe",lighten4:"#b3e5fc",lighten3:"#81d4fa",lighten2:"#4fc3f7",lighten1:"#29b6f6",darken1:"#039be5",darken2:"#0288d1",darken3:"#0277bd",darken4:"#01579b",accent1:"#80d8ff",accent2:"#40c4ff",accent3:"#00b0ff",accent4:"#0091ea"},cyan={base:"#00bcd4",lighten5:"#e0f7fa",lighten4:"#b2ebf2",lighten3:"#80deea",lighten2:"#4dd0e1",lighten1:"#26c6da",darken1:"#00acc1",darken2:"#0097a7",darken3:"#00838f",darken4:"#006064",accent1:"#84ffff",accent2:"#18ffff",accent3:"#00e5ff",accent4:"#00b8d4"},teal={base:"#009688",lighten5:"#e0f2f1",lighten4:"#b2dfdb",lighten3:"#80cbc4",lighten2:"#4db6ac",lighten1:"#26a69a",darken1:"#00897b",darken2:"#00796b",darken3:"#00695c",darken4:"#004d40",accent1:"#a7ffeb",accent2:"#64ffda",accent3:"#1de9b6",accent4:"#00bfa5"},green={base:"#4caf50",lighten5:"#e8f5e9",lighten4:"#c8e6c9",lighten3:"#a5d6a7",lighten2:"#81c784",lighten1:"#66bb6a",darken1:"#43a047",darken2:"#388e3c",darken3:"#2e7d32",darken4:"#1b5e20",accent1:"#b9f6ca",accent2:"#69f0ae",accent3:"#00e676",accent4:"#00c853"},lightGreen={base:"#8bc34a",lighten5:"#f1f8e9",lighten4:"#dcedc8",lighten3:"#c5e1a5",lighten2:"#aed581",lighten1:"#9ccc65",darken1:"#7cb342",darken2:"#689f38",darken3:"#558b2f",darken4:"#33691e",accent1:"#ccff90",accent2:"#b2ff59",accent3:"#76ff03",accent4:"#64dd17"},lime={base:"#cddc39",lighten5:"#f9fbe7",lighten4:"#f0f4c3",lighten3:"#e6ee9c",lighten2:"#dce775",lighten1:"#d4e157",darken1:"#c0ca33",darken2:"#afb42b",darken3:"#9e9d24",darken4:"#827717",accent1:"#f4ff81",accent2:"#eeff41",accent3:"#c6ff00",accent4:"#aeea00"},yellow={base:"#ffeb3b",lighten5:"#fffde7",lighten4:"#fff9c4",lighten3:"#fff59d",lighten2:"#fff176",lighten1:"#ffee58",darken1:"#fdd835",darken2:"#fbc02d",darken3:"#f9a825",darken4:"#f57f17",accent1:"#ffff8d",accent2:"#ffff00",accent3:"#ffea00",accent4:"#ffd600"},amber={base:"#ffc107",lighten5:"#fff8e1",lighten4:"#ffecb3",lighten3:"#ffe082",lighten2:"#ffd54f",lighten1:"#ffca28",darken1:"#ffb300",darken2:"#ffa000",darken3:"#ff8f00",darken4:"#ff6f00",accent1:"#ffe57f",accent2:"#ffd740",accent3:"#ffc400",accent4:"#ffab00"},orange={base:"#ff9800",lighten5:"#fff3e0",lighten4:"#ffe0b2",lighten3:"#ffcc80",lighten2:"#ffb74d",lighten1:"#ffa726",darken1:"#fb8c00",darken2:"#f57c00",darken3:"#ef6c00",darken4:"#e65100",accent1:"#ffd180",accent2:"#ffab40",accent3:"#ff9100",accent4:"#ff6d00"},deepOrange={base:"#ff5722",lighten5:"#fbe9e7",lighten4:"#ffccbc",lighten3:"#ffab91",lighten2:"#ff8a65",lighten1:"#ff7043",darken1:"#f4511e",darken2:"#e64a19",darken3:"#d84315",darken4:"#bf360c",accent1:"#ff9e80",accent2:"#ff6e40",accent3:"#ff3d00",accent4:"#dd2c00"},brown={base:"#795548",lighten5:"#efebe9",lighten4:"#d7ccc8",lighten3:"#bcaaa4",lighten2:"#a1887f",lighten1:"#8d6e63",darken1:"#6d4c41",darken2:"#5d4037",darken3:"#4e342e",darken4:"#3e2723"},blueGrey={base:"#607d8b",lighten5:"#eceff1",lighten4:"#cfd8dc",lighten3:"#b0bec5",lighten2:"#90a4ae",lighten1:"#78909c",darken1:"#546e7a",darken2:"#455a64",darken3:"#37474f",darken4:"#263238"},grey={base:"#9e9e9e",lighten5:"#fafafa",lighten4:"#f5f5f5",lighten3:"#eeeeee",lighten2:"#e0e0e0",lighten1:"#bdbdbd",darken1:"#757575",darken2:"#616161",darken3:"#424242",darken4:"#212121"},shades={black:"#000000",white:"#ffffff",transparent:"#ffffff00"},colors={red,pink,purple,deepPurple,indigo,blue,lightBlue,cyan,teal,green,lightGreen,lime,yellow,amber,orange,deepOrange,brown,blueGrey,grey,shades},makeVColorPickerSwatchesProps=propsFactory({swatches:{type:Array,default:()=>parseDefaultColors(colors)},disabled:Boolean,color:Object,maxHeight:[Number,String],...makeComponentProps()},"VColorPickerSwatches");function parseDefaultColors(n){return Object.keys(n).map(r=>{const _=n[r];return _.base?[_.base,_.darken4,_.darken3,_.darken2,_.darken1,_.lighten1,_.lighten2,_.lighten3,_.lighten4,_.lighten5]:[_.black,_.white,_.transparent]})}const VColorPickerSwatches=defineComponent({name:"VColorPickerSwatches",props:makeVColorPickerSwatchesProps(),emits:{"update:color":n=>!0},setup(n,r){let{emit:_}=r;return useRender(()=>createVNode("div",{class:["v-color-picker-swatches",n.class],style:[{maxHeight:convertToUnit(n.maxHeight)},n.style]},[createVNode("div",null,[n.swatches.map(S=>createVNode("div",{class:"v-color-picker-swatches__swatch"},[S.map(E=>{const x=parseColor(E),T=RGBtoHSV(x),C=RGBtoCSS(x);return createVNode("div",{class:"v-color-picker-swatches__color",onClick:()=>T&&_("update:color",T)},[createVNode("div",{style:{background:C}},[n.color&&deepEqual$2(n.color,T)?createVNode(VIcon,{size:"x-small",icon:"$success",color:getContrast(E,"#FFFFFF")>2?"white":"black"},null):void 0])])})]))])])),{}}}),makeVColorPickerProps=propsFactory({canvasHeight:{type:[String,Number],default:150},disabled:Boolean,dotSize:{type:[Number,String],default:10},hideCanvas:Boolean,hideSliders:Boolean,hideInputs:Boolean,mode:{type:String,default:"rgba",validator:n=>Object.keys(modes).includes(n)},modes:{type:Array,default:()=>Object.keys(modes),validator:n=>Array.isArray(n)&&n.every(r=>Object.keys(modes).includes(r))},showSwatches:Boolean,swatches:Array,swatchesMaxHeight:{type:[Number,String],default:150},modelValue:{type:[Object,String]},...omit(makeVSheetProps({width:300}),["height","location","minHeight","maxHeight","minWidth","maxWidth"])},"VColorPicker"),VColorPicker=defineComponent({name:"VColorPicker",props:makeVColorPickerProps(),emits:{"update:modelValue":n=>!0,"update:mode":n=>!0},setup(n){const r=useProxiedModel(n,"mode"),_=ref$2(null),S=useProxiedModel(n,"modelValue",void 0,I=>{if(I==null||I==="")return null;let B;try{B=RGBtoHSV(parseColor(I))}catch{return null}return B},I=>I?extractColor(I,n.modelValue):null),E=computed(()=>S.value?{...S.value,h:_.value??S.value.h}:null),{rtlClasses:x}=useRtl();let T=!0;watch(S,I=>{if(!T){T=!0;return}I&&(_.value=I.h)},{immediate:!0});const C=I=>{T=!1,_.value=I.h,S.value=I};return onMounted(()=>{n.modes.includes(r.value)||(r.value=n.modes[0])}),provideDefaults({VSlider:{color:void 0,trackColor:void 0,trackFillColor:void 0}}),useRender(()=>{const I=VSheet.filterProps(n);return createVNode(VSheet,mergeProps({rounded:n.rounded,elevation:n.elevation,theme:n.theme,class:["v-color-picker",x.value,n.class],style:[{"--v-color-picker-color-hsv":HSVtoCSS({...E.value??nullColor,a:1})},n.style]},I,{maxWidth:n.width}),{default:()=>[!n.hideCanvas&&createVNode(VColorPickerCanvas,{key:"canvas",color:E.value,"onUpdate:color":C,disabled:n.disabled,dotSize:n.dotSize,width:n.width,height:n.canvasHeight},null),(!n.hideSliders||!n.hideInputs)&&createVNode("div",{key:"controls",class:"v-color-picker__controls"},[!n.hideSliders&&createVNode(VColorPickerPreview,{key:"preview",color:E.value,"onUpdate:color":C,hideAlpha:!r.value.endsWith("a"),disabled:n.disabled},null),!n.hideInputs&&createVNode(VColorPickerEdit,{key:"edit",modes:n.modes,mode:r.value,"onUpdate:mode":B=>r.value=B,color:E.value,"onUpdate:color":C,disabled:n.disabled},null)]),n.showSwatches&&createVNode(VColorPickerSwatches,{key:"swatches",color:E.value,"onUpdate:color":C,maxHeight:n.swatchesMaxHeight,swatches:n.swatches,disabled:n.disabled},null)]})}),{}}});function highlightResult(n,r,_){if(r==null)return n;if(Array.isArray(r))throw new Error("Multiple matches is not implemented");return typeof r=="number"&&~r?createVNode(Fragment,null,[createVNode("span",{class:"v-combobox__unmask"},[n.substr(0,r)]),createVNode("span",{class:"v-combobox__mask"},[n.substr(r,_)]),createVNode("span",{class:"v-combobox__unmask"},[n.substr(r+_)])]):n}const makeVComboboxProps=propsFactory({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...makeFilterProps({filterKeys:["title"]}),...makeSelectProps({hideNoData:!0,returnObject:!0}),...omit(makeVTextFieldProps({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...makeTransitionProps({transition:!1})},"VCombobox"),VCombobox=genericComponent()({name:"VCombobox",props:makeVComboboxProps(),emits:{"update:focused":n=>!0,"update:modelValue":n=>!0,"update:search":n=>!0,"update:menu":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const{t:E}=useLocale(),x=ref$2(),T=shallowRef(!1),C=shallowRef(!0),I=shallowRef(!1),B=ref$2(),A=ref$2(),D=useProxiedModel(n,"menu"),N=computed({get:()=>D.value,set:ge=>{D.value&&!ge&&B.value?.ΨopenChildren.size||(D.value=ge)}}),O=shallowRef(-1);let M=!1;const L=computed(()=>x.value?.color),F=computed(()=>N.value?n.closeText:n.openText),{items:U,transformIn:j,transformOut:z}=useItems(n),{textColorClasses:H,textColorStyles:Q}=useTextColor(L),J=useProxiedModel(n,"modelValue",[],ge=>j(wrapInArray(ge)),ge=>{const we=z(ge);return n.multiple?we:we[0]??null}),Z=useForm(),re=computed(()=>!!(n.chips||S.chip)),ie=computed(()=>re.value||!!S.selection),pe=shallowRef(!n.multiple&&!ie.value?J.value[0]?.title??"":""),ue=computed({get:()=>pe.value,set:ge=>{if(pe.value=ge??"",!n.multiple&&!ie.value&&(J.value=[transformItem$3(n,ge)]),ge&&n.multiple&&n.delimiters?.length){const we=ge.split(new RegExp(`(?:${n.delimiters.join("|")})+`));we.length>1&&(we.forEach(fe=>{fe=fe.trim(),fe&&me(transformItem$3(n,fe))}),pe.value="")}ge||(O.value=-1),C.value=!ge}}),W=computed(()=>typeof n.counterValue=="function"?n.counterValue(J.value):typeof n.counterValue=="number"?n.counterValue:n.multiple?J.value.length:ue.value.length);watch(pe,ge=>{M?nextTick$2(()=>M=!1):T.value&&!N.value&&(N.value=!0),_("update:search",ge)}),watch(J,ge=>{!n.multiple&&!ie.value&&(pe.value=ge[0]?.title??"")});const{filteredItems:Y,getMatches:q}=useFilter(n,U,()=>C.value?"":ue.value),G=computed(()=>n.hideSelected?Y.value.filter(ge=>!J.value.some(we=>we.value===ge.value)):Y.value),ne=computed(()=>J.value.map(ge=>ge.value)),ee=computed(()=>(n.autoSelectFirst===!0||n.autoSelectFirst==="exact"&&ue.value===G.value[0]?.title)&&G.value.length>0&&!C.value&&!I.value),oe=computed(()=>n.hideNoData&&!G.value.length||n.readonly||Z?.isReadonly.value),ae=ref$2(),se=useScrolling(ae,x);function te(ge){M=!0,n.openOnClear&&(N.value=!0)}function X(){oe.value||(N.value=!0)}function ce(ge){oe.value||(T.value&&(ge.preventDefault(),ge.stopPropagation()),N.value=!N.value)}function le(ge){checkPrintable(ge)&&x.value?.focus()}function ye(ge){if(isComposingIgnoreKey(ge)||n.readonly||Z?.isReadonly.value)return;const we=x.value.selectionStart,fe=J.value.length;if((O.value>-1||["Enter","ArrowDown","ArrowUp"].includes(ge.key))&&ge.preventDefault(),["Enter","ArrowDown"].includes(ge.key)&&(N.value=!0),["Escape"].includes(ge.key)&&(N.value=!1),["Enter","Escape","Tab"].includes(ge.key)&&(ee.value&&["Enter","Tab"].includes(ge.key)&&!J.value.some(xe=>{let{value:Ie}=xe;return Ie===G.value[0].value})&&me(Y.value[0]),C.value=!0),ge.key==="ArrowDown"&&ee.value&&ae.value?.focus("next"),ge.key==="Enter"&&ue.value&&(me(transformItem$3(n,ue.value)),ie.value&&(pe.value="")),["Backspace","Delete"].includes(ge.key)){if(!n.multiple&&ie.value&&J.value.length>0&&!ue.value)return me(J.value[0],!1);if(~O.value){const xe=O.value;me(J.value[O.value],!1),O.value=xe>=fe-1?fe-2:xe}else ge.key==="Backspace"&&!ue.value&&(O.value=fe-1)}if(n.multiple){if(ge.key==="ArrowLeft"){if(O.value<0&&we>0)return;const xe=O.value>-1?O.value-1:fe-1;J.value[xe]?O.value=xe:(O.value=-1,x.value.setSelectionRange(ue.value.length,ue.value.length))}if(ge.key==="ArrowRight"){if(O.value<0)return;const xe=O.value+1;J.value[xe]?O.value=xe:(O.value=-1,x.value.setSelectionRange(0,0))}}}function de(){n.eager&&A.value?.calculateVisibleItems()}function he(){T.value&&(C.value=!0,x.value?.focus())}function me(ge){let we=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!ge||ge.props.disabled))if(n.multiple){const fe=J.value.findIndex(Ie=>n.valueComparator(Ie.value,ge.value)),xe=we??!~fe;if(~fe){const Ie=xe?[...J.value,ge]:[...J.value];Ie.splice(fe,1),J.value=Ie}else xe&&(J.value=[...J.value,ge]);n.clearOnSelect&&(ue.value="")}else{const fe=we!==!1;J.value=fe?[ge]:[],pe.value=fe&&!ie.value?ge.title:"",nextTick$2(()=>{N.value=!1,C.value=!0})}}function Ee(ge){T.value=!0,setTimeout(()=>{I.value=!0})}function Ce(ge){I.value=!1}function be(ge){(ge==null||ge===""&&!n.multiple&&!ie.value)&&(J.value=[])}return watch(T,(ge,we)=>{if(!(ge||ge===we)&&(O.value=-1,N.value=!1,ue.value)){if(n.multiple){me(transformItem$3(n,ue.value));return}if(!ie.value)return;J.value.some(fe=>{let{title:xe}=fe;return xe===ue.value})?pe.value="":me(transformItem$3(n,ue.value))}}),watch(N,()=>{if(!n.hideSelected&&N.value&&J.value.length){const ge=G.value.findIndex(we=>J.value.some(fe=>n.valueComparator(fe.value,we.value)));IN_BROWSER&&window.requestAnimationFrame(()=>{ge>=0&&A.value?.scrollToIndex(ge)})}}),watch(()=>n.items,(ge,we)=>{N.value||T.value&&!we.length&&ge.length&&(N.value=!0)}),useRender(()=>{const ge=!!(!n.hideNoData||G.value.length||S["prepend-item"]||S["append-item"]||S["no-data"]),we=J.value.length>0,fe=VTextField.filterProps(n);return createVNode(VTextField,mergeProps({ref:x},fe,{modelValue:ue.value,"onUpdate:modelValue":[xe=>ue.value=xe,be],focused:T.value,"onUpdate:focused":xe=>T.value=xe,validationValue:J.externalValue,counterValue:W.value,dirty:we,class:["v-combobox",{"v-combobox--active-menu":N.value,"v-combobox--chips":!!n.chips,"v-combobox--selection-slot":!!ie.value,"v-combobox--selecting-index":O.value>-1,[`v-combobox--${n.multiple?"multiple":"single"}`]:!0},n.class],style:n.style,readonly:n.readonly,placeholder:we?void 0:n.placeholder,"onClick:clear":te,"onMousedown:control":X,onKeydown:ye}),{...S,default:()=>createVNode(Fragment,null,[createVNode(VMenu,mergeProps({ref:B,modelValue:N.value,"onUpdate:modelValue":xe=>N.value=xe,activator:"parent",contentClass:"v-combobox__content",disabled:oe.value,eager:n.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:n.transition,onAfterEnter:de,onAfterLeave:he},n.menuProps),{default:()=>[ge&&createVNode(VList,mergeProps({ref:ae,selected:ne.value,selectStrategy:n.multiple?"independent":"single-independent",onMousedown:xe=>xe.preventDefault(),onKeydown:le,onFocusin:Ee,onFocusout:Ce,tabindex:"-1","aria-live":"polite",color:n.itemColor??n.color},se,n.listProps),{default:()=>[S["prepend-item"]?.(),!G.value.length&&!n.hideNoData&&(S["no-data"]?.()??createVNode(VListItem,{title:E(n.noDataText)},null)),createVNode(VVirtualScroll,{ref:A,renderless:!0,items:G.value},{default:xe=>{let{item:Ie,index:Se,itemRef:$e}=xe;const ke=mergeProps(Ie.props,{ref:$e,key:Se,active:ee.value&&Se===0?!0:void 0,onClick:()=>me(Ie,null)});return S.item?.({item:Ie,index:Se,props:ke})??createVNode(VListItem,mergeProps(ke,{role:"option"}),{prepend:Pe=>{let{isSelected:Me}=Pe;return createVNode(Fragment,null,[n.multiple&&!n.hideSelected?createVNode(VCheckboxBtn,{key:Ie.value,modelValue:Me,ripple:!1,tabindex:"-1"},null):void 0,Ie.props.prependAvatar&&createVNode(VAvatar,{image:Ie.props.prependAvatar},null),Ie.props.prependIcon&&createVNode(VIcon,{icon:Ie.props.prependIcon},null)])},title:()=>C.value?Ie.title:highlightResult(Ie.title,q(Ie)?.title,ue.value?.length??0)})}}),S["append-item"]?.()]})]}),J.value.map((xe,Ie)=>{function Se(Me){Me.stopPropagation(),Me.preventDefault(),me(xe,!1)}const $e={"onClick:close":Se,onKeydown(Me){Me.key!=="Enter"&&Me.key!==" "||(Me.preventDefault(),Me.stopPropagation(),Se(Me))},onMousedown(Me){Me.preventDefault(),Me.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},ke=re.value?!!S.chip:!!S.selection,Pe=ke?ensureValidVNode(re.value?S.chip({item:xe,index:Ie,props:$e}):S.selection({item:xe,index:Ie})):void 0;if(!(ke&&!Pe))return createVNode("div",{key:xe.value,class:["v-combobox__selection",Ie===O.value&&["v-combobox__selection--selected",H.value]],style:Ie===O.value?Q.value:{}},[re.value?S.chip?createVNode(VDefaultsProvider,{key:"chip-defaults",defaults:{VChip:{closable:n.closableChips,size:"small",text:xe.title}}},{default:()=>[Pe]}):createVNode(VChip,mergeProps({key:"chip",closable:n.closableChips,size:"small",text:xe.title,disabled:xe.props.disabled},$e),null):Pe??createVNode("span",{class:"v-combobox__selection-text"},[xe.title,n.multiple&&Ie0&&S.push(E),S}function startOfWeek(n,r,_){const S=_??firstDay[r.slice(-2).toUpperCase()]??0,E=new Date(n);for(;E.getDay()!==S;)E.setDate(E.getDate()-1);return E}function endOfWeek(n,r){const _=new Date(n),S=((firstDay[r.slice(-2).toUpperCase()]??0)+6)%7;for(;_.getDay()!==S;)_.setDate(_.getDate()+1);return _}function startOfMonth(n){return new Date(n.getFullYear(),n.getMonth(),1)}function endOfMonth(n){return new Date(n.getFullYear(),n.getMonth()+1,0)}function parseLocalDate(n){const r=n.split("-").map(Number);return new Date(r[0],r[1]-1,r[2])}const _YYYMMDD=/^([12]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\d|3[01]))$/;function date(n){if(n==null)return new Date;if(n instanceof Date)return n;if(typeof n=="string"){let r;if(_YYYMMDD.test(n))return parseLocalDate(n);if(r=Date.parse(n),!isNaN(r))return new Date(r)}return null}const sundayJanuarySecond2000=new Date(2e3,0,2);function getWeekdays(n,r){const _=r??firstDay[n.slice(-2).toUpperCase()]??0;return createRange(7).map(S=>{const E=new Date(sundayJanuarySecond2000);return E.setDate(sundayJanuarySecond2000.getDate()+_+S),new Intl.DateTimeFormat(n,{weekday:"narrow"}).format(E)})}function format(n,r,_,S){const E=date(n)??new Date,x=S?.[r];if(typeof x=="function")return x(E,r,_);let T={};switch(r){case"fullDate":T={year:"numeric",month:"long",day:"numeric"};break;case"fullDateWithWeekday":T={weekday:"long",year:"numeric",month:"long",day:"numeric"};break;case"normalDate":const C=E.getDate(),I=new Intl.DateTimeFormat(_,{month:"long"}).format(E);return`${C} ${I}`;case"normalDateWithWeekday":T={weekday:"short",day:"numeric",month:"short"};break;case"shortDate":T={month:"short",day:"numeric"};break;case"year":T={year:"numeric"};break;case"month":T={month:"long"};break;case"monthShort":T={month:"short"};break;case"monthAndYear":T={month:"long",year:"numeric"};break;case"monthAndDate":T={month:"long",day:"numeric"};break;case"weekday":T={weekday:"long"};break;case"weekdayShort":T={weekday:"short"};break;case"dayOfMonth":return new Intl.NumberFormat(_).format(E.getDate());case"hours12h":T={hour:"numeric",hour12:!0};break;case"hours24h":T={hour:"numeric",hour12:!1};break;case"minutes":T={minute:"numeric"};break;case"seconds":T={second:"numeric"};break;case"fullTime":T={hour:"numeric",minute:"numeric",second:"numeric",hour12:!0};break;case"fullTime12h":T={hour:"numeric",minute:"numeric",second:"numeric",hour12:!0};break;case"fullTime24h":T={hour:"numeric",minute:"numeric",second:"numeric",hour12:!1};break;case"fullDateTime":T={year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0};break;case"fullDateTime12h":T={year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0};break;case"fullDateTime24h":T={year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1};break;case"keyboardDate":T={year:"numeric",month:"2-digit",day:"2-digit"};break;case"keyboardDateTime":T={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1};break;case"keyboardDateTime12h":T={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0};break;case"keyboardDateTime24h":T={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1};break;default:T=x??{timeZone:"UTC",timeZoneName:"short"}}return new Intl.DateTimeFormat(_,T).format(E)}function toISO(n,r){const _=n.toJsDate(r),S=_.getFullYear(),E=padStart(String(_.getMonth()+1),2,"0"),x=padStart(String(_.getDate()),2,"0");return`${S}-${E}-${x}`}function parseISO(n){const[r,_,S]=n.split("-").map(Number);return new Date(r,_-1,S)}function addMinutes(n,r){const _=new Date(n);return _.setMinutes(_.getMinutes()+r),_}function addHours(n,r){const _=new Date(n);return _.setHours(_.getHours()+r),_}function addDays(n,r){const _=new Date(n);return _.setDate(_.getDate()+r),_}function addWeeks(n,r){const _=new Date(n);return _.setDate(_.getDate()+r*7),_}function addMonths(n,r){const _=new Date(n);return _.setDate(1),_.setMonth(_.getMonth()+r),_}function getYear(n){return n.getFullYear()}function getMonth(n){return n.getMonth()}function getDate(n){return n.getDate()}function getNextMonth(n){return new Date(n.getFullYear(),n.getMonth()+1,1)}function getPreviousMonth(n){return new Date(n.getFullYear(),n.getMonth()-1,1)}function getHours(n){return n.getHours()}function getMinutes(n){return n.getMinutes()}function startOfYear(n){return new Date(n.getFullYear(),0,1)}function endOfYear(n){return new Date(n.getFullYear(),11,31)}function isWithinRange(n,r){return isAfter(n,r[0])&&isBefore(n,r[1])}function isValid(n){const r=new Date(n);return r instanceof Date&&!isNaN(r.getTime())}function isAfter(n,r){return n.getTime()>r.getTime()}function isAfterDay(n,r){return isAfter(startOfDay(n),startOfDay(r))}function isBefore(n,r){return n.getTime(){_.locale=n.locale[S]??S??_.locale}),_}function useDate(){const n=inject$1(DateOptionsSymbol);if(!n)throw new Error("[Vuetify] Could not find injected date options");const r=useLocale();return createInstance(n,r)}function getWeek(n,r){const _=n.toJsDate(r);let S=_.getFullYear(),E=new Date(S,0,1);if(_=C&&(S=S+1,E=C)}const x=Math.abs(_.getTime()-E.getTime()),T=Math.ceil(x/(1e3*60*60*24));return Math.floor(T/7)+1}const makeVConfirmEditProps=propsFactory({modelValue:null,color:String,cancelText:{type:String,default:"$vuetify.confirmEdit.cancel"},okText:{type:String,default:"$vuetify.confirmEdit.ok"}},"VConfirmEdit"),VConfirmEdit=genericComponent()({name:"VConfirmEdit",props:makeVConfirmEditProps(),emits:{cancel:()=>!0,save:n=>!0,"update:modelValue":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useProxiedModel(n,"modelValue"),x=ref$2();watchEffect(()=>{x.value=structuredClone(toRaw(E.value))});const{t:T}=useLocale(),C=computed(()=>deepEqual$2(E.value,x.value));function I(){E.value=x.value,_("save",x.value)}function B(){x.value=structuredClone(toRaw(E.value)),_("cancel")}let A=!1;return useRender(()=>{const D=createVNode(Fragment,null,[createVNode(VBtn,{disabled:C.value,variant:"text",color:n.color,onClick:B,text:T(n.cancelText)},null),createVNode(VBtn,{disabled:C.value,variant:"text",color:n.color,onClick:I,text:T(n.okText)},null)]);return createVNode(Fragment,null,[S.default?.({model:x,save:I,cancel:B,isPristine:C.value,get actions(){return A=!0,D}}),!A&&D])}),{save:I,cancel:B,isPristine:C}}}),makeDataTableExpandProps=propsFactory({expandOnClick:Boolean,showExpand:Boolean,expanded:{type:Array,default:()=>[]}},"DataTable-expand"),VDataTableExpandedKey=Symbol.for("vuetify:datatable:expanded");function provideExpanded(n){const r=toRef(n,"expandOnClick"),_=useProxiedModel(n,"expanded",n.expanded,C=>new Set(C),C=>[...C.values()]);function S(C,I){const B=new Set(_.value);I?B.add(C.value):B.delete(C.value),_.value=B}function E(C){return _.value.has(C.value)}function x(C){S(C,!E(C))}const T={expand:S,expanded:_,expandOnClick:r,isExpanded:E,toggleExpand:x};return provide(VDataTableExpandedKey,T),T}function useExpanded(){const n=inject$1(VDataTableExpandedKey);if(!n)throw new Error("foo");return n}const makeDataTableGroupProps=propsFactory({groupBy:{type:Array,default:()=>[]}},"DataTable-group"),VDataTableGroupSymbol=Symbol.for("vuetify:data-table-group");function createGroupBy(n){return{groupBy:useProxiedModel(n,"groupBy")}}function provideGroupBy(n){const{disableSort:r,groupBy:_,sortBy:S}=n,E=ref$2(new Set),x=computed(()=>_.value.map(A=>({...A,order:A.order??!1})).concat(r?.value?[]:S.value));function T(A){return E.value.has(A.id)}function C(A){const D=new Set(E.value);T(A)?D.delete(A.id):D.add(A.id),E.value=D}function I(A){function D(N){const O=[];for(const M of N.items)"type"in M&&M.type==="group"?O.push(...D(M)):O.push(M);return O}return D({type:"group",items:A,id:"dummy",key:"dummy",value:"dummy",depth:0})}const B={sortByWithGroups:x,toggleGroup:C,opened:E,groupBy:_,extractRows:I,isGroupOpen:T};return provide(VDataTableGroupSymbol,B),B}function useGroupBy(){const n=inject$1(VDataTableGroupSymbol);if(!n)throw new Error("Missing group!");return n}function groupItemsByProperty(n,r){if(!n.length)return[];const _=new Map;for(const S of n){const E=getObjectValueByPath(S.raw,r);_.has(E)||_.set(E,[]),_.get(E).push(S)}return _}function groupItems(n,r){let _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,S=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"root";if(!r.length)return[];const E=groupItemsByProperty(n,r[0]),x=[],T=r.slice(1);return E.forEach((C,I)=>{const B=r[0],A=`${S}_${B}_${I}`;x.push({depth:_,id:A,key:B,value:I,items:T.length?groupItems(C,T,_+1,A):C,type:"group"})}),x}function flattenItems(n,r){const _=[];for(const S of n)"type"in S&&S.type==="group"?(S.value!=null&&_.push(S),(r.has(S.id)||S.value==null)&&_.push(...flattenItems(S.items,r))):_.push(S);return _}function useGroupedItems(n,r,_){return{flatItems:computed(()=>{if(!r.value.length)return n.value;const E=groupItems(n.value,r.value.map(x=>x.key));return flattenItems(E,_.value)})}}function useOptions(n){let{page:r,itemsPerPage:_,sortBy:S,groupBy:E,search:x}=n;const T=getCurrentInstance("VDataTable"),C=computed(()=>({page:r.value,itemsPerPage:_.value,sortBy:S.value,groupBy:E.value,search:x.value}));let I=null;watch(C,()=>{deepEqual$2(I,C.value)||(I&&I.search!==C.value.search&&(r.value=1),T.emit("update:options",C.value),I=C.value)},{deep:!0,immediate:!0})}const makeDataTablePaginateProps=propsFactory({page:{type:[Number,String],default:1},itemsPerPage:{type:[Number,String],default:10}},"DataTable-paginate"),VDataTablePaginationSymbol=Symbol.for("vuetify:data-table-pagination");function createPagination(n){const r=useProxiedModel(n,"page",void 0,S=>+(S??1)),_=useProxiedModel(n,"itemsPerPage",void 0,S=>+(S??10));return{page:r,itemsPerPage:_}}function providePagination(n){const{page:r,itemsPerPage:_,itemsLength:S}=n,E=computed(()=>_.value===-1?0:_.value*(r.value-1)),x=computed(()=>_.value===-1?S.value:Math.min(S.value,E.value+_.value)),T=computed(()=>_.value===-1||S.value===0?1:Math.ceil(S.value/_.value));watchEffect(()=>{r.value>T.value&&(r.value=T.value)});function C(N){_.value=N,r.value=1}function I(){r.value=clamp(r.value+1,1,T.value)}function B(){r.value=clamp(r.value-1,1,T.value)}function A(N){r.value=clamp(N,1,T.value)}const D={page:r,itemsPerPage:_,startIndex:E,stopIndex:x,pageCount:T,itemsLength:S,nextPage:I,prevPage:B,setPage:A,setItemsPerPage:C};return provide(VDataTablePaginationSymbol,D),D}function usePagination(){const n=inject$1(VDataTablePaginationSymbol);if(!n)throw new Error("Missing pagination!");return n}function usePaginatedItems(n){const r=getCurrentInstance("usePaginatedItems"),{items:_,startIndex:S,stopIndex:E,itemsPerPage:x}=n,T=computed(()=>x.value<=0?_.value:_.value.slice(S.value,E.value));return watch(T,C=>{r.emit("update:currentItems",C)}),{paginatedItems:T}}const singleSelectStrategy={showSelectAll:!1,allSelected:()=>[],select:n=>{let{items:r,value:_}=n;return new Set(_?[r[0]?.value]:[])},selectAll:n=>{let{selected:r}=n;return r}},pageSelectStrategy={showSelectAll:!0,allSelected:n=>{let{currentPage:r}=n;return r},select:n=>{let{items:r,value:_,selected:S}=n;for(const E of r)_?S.add(E.value):S.delete(E.value);return S},selectAll:n=>{let{value:r,currentPage:_,selected:S}=n;return pageSelectStrategy.select({items:_,value:r,selected:S})}},allSelectStrategy={showSelectAll:!0,allSelected:n=>{let{allItems:r}=n;return r},select:n=>{let{items:r,value:_,selected:S}=n;for(const E of r)_?S.add(E.value):S.delete(E.value);return S},selectAll:n=>{let{value:r,allItems:_,selected:S}=n;return allSelectStrategy.select({items:_,value:r,selected:S})}},makeDataTableSelectProps=propsFactory({showSelect:Boolean,selectStrategy:{type:[String,Object],default:"page"},modelValue:{type:Array,default:()=>[]},valueComparator:{type:Function,default:deepEqual$2}},"DataTable-select"),VDataTableSelectionSymbol=Symbol.for("vuetify:data-table-selection");function provideSelection(n,r){let{allItems:_,currentPage:S}=r;const E=useProxiedModel(n,"modelValue",n.modelValue,U=>new Set(wrapInArray(U).map(j=>_.value.find(z=>n.valueComparator(j,z.value))?.value??j)),U=>[...U.values()]),x=computed(()=>_.value.filter(U=>U.selectable)),T=computed(()=>S.value.filter(U=>U.selectable)),C=computed(()=>{if(typeof n.selectStrategy=="object")return n.selectStrategy;switch(n.selectStrategy){case"single":return singleSelectStrategy;case"all":return allSelectStrategy;case"page":default:return pageSelectStrategy}});function I(U){return wrapInArray(U).every(j=>E.value.has(j.value))}function B(U){return wrapInArray(U).some(j=>E.value.has(j.value))}function A(U,j){const z=C.value.select({items:U,value:j,selected:new Set(E.value)});E.value=z}function D(U){A([U],!I([U]))}function N(U){const j=C.value.selectAll({value:U,allItems:x.value,currentPage:T.value,selected:new Set(E.value)});E.value=j}const O=computed(()=>E.value.size>0),M=computed(()=>{const U=C.value.allSelected({allItems:x.value,currentPage:T.value});return!!U.length&&I(U)}),L=computed(()=>C.value.showSelectAll),F={toggleSelect:D,select:A,selectAll:N,isSelected:I,isSomeSelected:B,someSelected:O,allSelected:M,showSelectAll:L};return provide(VDataTableSelectionSymbol,F),F}function useSelection(){const n=inject$1(VDataTableSelectionSymbol);if(!n)throw new Error("Missing selection!");return n}const makeDataTableSortProps=propsFactory({sortBy:{type:Array,default:()=>[]},customKeySort:Object,multiSort:Boolean,mustSort:Boolean},"DataTable-sort"),VDataTableSortSymbol=Symbol.for("vuetify:data-table-sort");function createSort(n){const r=useProxiedModel(n,"sortBy"),_=toRef(n,"mustSort"),S=toRef(n,"multiSort");return{sortBy:r,mustSort:_,multiSort:S}}function provideSort(n){const{sortBy:r,mustSort:_,multiSort:S,page:E}=n,x=I=>{if(I.key==null)return;let B=r.value.map(D=>({...D}))??[];const A=B.find(D=>D.key===I.key);A?A.order==="desc"?_.value?A.order="asc":B=B.filter(D=>D.key!==I.key):A.order="desc":S.value?B=[...B,{key:I.key,order:"asc"}]:B=[{key:I.key,order:"asc"}],r.value=B,E&&(E.value=1)};function T(I){return!!r.value.find(B=>B.key===I.key)}const C={sortBy:r,toggleSort:x,isSorted:T};return provide(VDataTableSortSymbol,C),C}function useSort(){const n=inject$1(VDataTableSortSymbol);if(!n)throw new Error("Missing sort!");return n}function useSortedItems(n,r,_,S){const E=useLocale();return{sortedItems:computed(()=>_.value.length?sortItems(r.value,_.value,E.current.value,{transform:S?.transform,sortFunctions:{...n.customKeySort,...S?.sortFunctions?.value},sortRawFunctions:S?.sortRawFunctions?.value}):r.value)}}function sortItems(n,r,_,S){const E=new Intl.Collator(_,{sensitivity:"accent",usage:"sort"});return n.map(T=>[T,S?.transform?S.transform(T):T]).sort((T,C)=>{for(let I=0;IF!=null?F.toString().toLocaleLowerCase():F),N!==O)return isEmpty(N)&&isEmpty(O)?0:isEmpty(N)?-1:isEmpty(O)?1:!isNaN(N)&&!isNaN(O)?Number(N)-Number(O):E.compare(N,O)}}return 0}).map(T=>{let[C]=T;return C})}const makeDataIteratorItemsProps=propsFactory({items:{type:Array,default:()=>[]},itemValue:{type:[String,Array,Function],default:"id"},itemSelectable:{type:[String,Array,Function],default:null},returnObject:Boolean},"DataIterator-items");function transformItem$1(n,r){const _=n.returnObject?r:getPropertyFromItem(r,n.itemValue),S=getPropertyFromItem(r,n.itemSelectable,!0);return{type:"item",value:_,selectable:S,raw:r}}function transformItems$1(n,r){const _=[];for(const S of r)_.push(transformItem$1(n,S));return _}function useDataIteratorItems(n){return{items:computed(()=>transformItems$1(n,n.items))}}const makeVDataIteratorProps=propsFactory({search:String,loading:Boolean,...makeComponentProps(),...makeDataIteratorItemsProps(),...makeDataTableSelectProps(),...makeDataTableSortProps(),...makeDataTablePaginateProps({itemsPerPage:5}),...makeDataTableExpandProps(),...makeDataTableGroupProps(),...makeFilterProps(),...makeTagProps(),...makeTransitionProps({transition:{component:VFadeTransition,hideOnLeave:!0}})},"VDataIterator"),VDataIterator=genericComponent()({name:"VDataIterator",props:makeVDataIteratorProps(),emits:{"update:modelValue":n=>!0,"update:groupBy":n=>!0,"update:page":n=>!0,"update:itemsPerPage":n=>!0,"update:sortBy":n=>!0,"update:options":n=>!0,"update:expanded":n=>!0,"update:currentItems":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"groupBy"),E=toRef(n,"search"),{items:x}=useDataIteratorItems(n),{filteredItems:T}=useFilter(n,x,E,{transform:te=>te.raw}),{sortBy:C,multiSort:I,mustSort:B}=createSort(n),{page:A,itemsPerPage:D}=createPagination(n),{toggleSort:N}=provideSort({sortBy:C,multiSort:I,mustSort:B,page:A}),{sortByWithGroups:O,opened:M,extractRows:L,isGroupOpen:F,toggleGroup:U}=provideGroupBy({groupBy:S,sortBy:C}),{sortedItems:j}=useSortedItems(n,T,O,{transform:te=>te.raw}),{flatItems:z}=useGroupedItems(j,S,M),H=computed(()=>z.value.length),{startIndex:Q,stopIndex:J,pageCount:Z,prevPage:re,nextPage:ie,setItemsPerPage:pe,setPage:ue}=providePagination({page:A,itemsPerPage:D,itemsLength:H}),{paginatedItems:W}=usePaginatedItems({items:z,startIndex:Q,stopIndex:J,itemsPerPage:D}),Y=computed(()=>L(W.value)),{isSelected:q,select:G,selectAll:ne,toggleSelect:ee}=provideSelection(n,{allItems:x,currentPage:Y}),{isExpanded:oe,toggleExpand:ae}=provideExpanded(n);useOptions({page:A,itemsPerPage:D,sortBy:C,groupBy:S,search:E});const se=computed(()=>({page:A.value,itemsPerPage:D.value,sortBy:C.value,pageCount:Z.value,toggleSort:N,prevPage:re,nextPage:ie,setPage:ue,setItemsPerPage:pe,isSelected:q,select:G,selectAll:ne,toggleSelect:ee,isExpanded:oe,toggleExpand:ae,isGroupOpen:F,toggleGroup:U,items:Y.value,groupedItems:W.value}));return useRender(()=>createVNode(n.tag,{class:["v-data-iterator",{"v-data-iterator--loading":n.loading},n.class],style:n.style},{default:()=>[_.header?.(se.value),createVNode(MaybeTransition,{transition:n.transition},{default:()=>[n.loading?createVNode(LoaderSlot,{key:"loader",name:"v-data-iterator",active:!0},{default:te=>_.loader?.(te)}):createVNode("div",{key:"items"},[W.value.length?_.default?.(se.value):_["no-data"]?.()])]}),_.footer?.(se.value)]})),{}}});function useRefs(){const n=ref$2([]);onBeforeUpdate(()=>n.value=[]);function r(_,S){n.value[S]=_}return{refs:n,updateRef:r}}const makeVPaginationProps=propsFactory({activeColor:String,start:{type:[Number,String],default:1},modelValue:{type:Number,default:n=>n.start},disabled:Boolean,length:{type:[Number,String],default:1,validator:n=>n%1===0},totalVisible:[Number,String],firstIcon:{type:IconValue,default:"$first"},prevIcon:{type:IconValue,default:"$prev"},nextIcon:{type:IconValue,default:"$next"},lastIcon:{type:IconValue,default:"$last"},ariaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.root"},pageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.page"},currentPageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.currentPage"},firstAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.first"},previousAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.previous"},nextAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.next"},lastAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.last"},ellipsis:{type:String,default:"..."},showFirstLastPage:Boolean,...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeElevationProps(),...makeRoundedProps(),...makeSizeProps(),...makeTagProps({tag:"nav"}),...makeThemeProps(),...makeVariantProps({variant:"text"})},"VPagination"),VPagination=genericComponent()({name:"VPagination",props:makeVPaginationProps(),emits:{"update:modelValue":n=>!0,first:n=>!0,prev:n=>!0,next:n=>!0,last:n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=useProxiedModel(n,"modelValue"),{t:x,n:T}=useLocale(),{isRtl:C}=useRtl(),{themeClasses:I}=provideTheme(n),{width:B}=useDisplay(),A=shallowRef(-1);provideDefaults(void 0,{scoped:!0});const{resizeRef:D}=useResizeObserver(re=>{if(!re.length)return;const{target:ie,contentRect:pe}=re[0],ue=ie.querySelector(".v-pagination__list > *");if(!ue)return;const W=pe.width,Y=ue.offsetWidth+parseFloat(getComputedStyle(ue).marginRight)*2;A.value=L(W,Y)}),N=computed(()=>parseInt(n.length,10)),O=computed(()=>parseInt(n.start,10)),M=computed(()=>n.totalVisible!=null?parseInt(n.totalVisible,10):A.value>=0?A.value:L(B.value,58));function L(re,ie){const pe=n.showFirstLastPage?5:3;return Math.max(0,Math.floor(+((re-ie*pe)/ie).toFixed(2)))}const F=computed(()=>{if(N.value<=0||isNaN(N.value)||N.value>Number.MAX_SAFE_INTEGER)return[];if(M.value<=0)return[];if(M.value===1)return[E.value];if(N.value<=M.value)return createRange(N.value,O.value);const re=M.value%2===0,ie=re?M.value/2:Math.floor(M.value/2),pe=re?ie:ie+1,ue=N.value-ie;if(pe-E.value>=0)return[...createRange(Math.max(1,M.value-1),O.value),n.ellipsis,N.value];if(E.value-ue>=(re?1:0)){const W=M.value-1,Y=N.value-W+O.value;return[O.value,n.ellipsis,...createRange(W,Y)]}else{const W=Math.max(1,M.value-3),Y=W===1?E.value:E.value-Math.ceil(W/2)+O.value;return[O.value,n.ellipsis,...createRange(W,Y),n.ellipsis,N.value]}});function U(re,ie,pe){re.preventDefault(),E.value=ie,pe&&S(pe,ie)}const{refs:j,updateRef:z}=useRefs();provideDefaults({VPaginationBtn:{color:toRef(n,"color"),border:toRef(n,"border"),density:toRef(n,"density"),size:toRef(n,"size"),variant:toRef(n,"variant"),rounded:toRef(n,"rounded"),elevation:toRef(n,"elevation")}});const H=computed(()=>F.value.map((re,ie)=>{const pe=ue=>z(ue,ie);if(typeof re=="string")return{isActive:!1,key:`ellipsis-${ie}`,page:re,props:{ref:pe,ellipsis:!0,icon:!0,disabled:!0}};{const ue=re===E.value;return{isActive:ue,key:re,page:T(re),props:{ref:pe,ellipsis:!1,icon:!0,disabled:!!n.disabled||+n.length<2,color:ue?n.activeColor:n.color,"aria-current":ue,"aria-label":x(ue?n.currentPageAriaLabel:n.pageAriaLabel,re),onClick:W=>U(W,re)}}}})),Q=computed(()=>{const re=!!n.disabled||E.value<=O.value,ie=!!n.disabled||E.value>=O.value+N.value-1;return{first:n.showFirstLastPage?{icon:C.value?n.lastIcon:n.firstIcon,onClick:pe=>U(pe,O.value,"first"),disabled:re,"aria-label":x(n.firstAriaLabel),"aria-disabled":re}:void 0,prev:{icon:C.value?n.nextIcon:n.prevIcon,onClick:pe=>U(pe,E.value-1,"prev"),disabled:re,"aria-label":x(n.previousAriaLabel),"aria-disabled":re},next:{icon:C.value?n.prevIcon:n.nextIcon,onClick:pe=>U(pe,E.value+1,"next"),disabled:ie,"aria-label":x(n.nextAriaLabel),"aria-disabled":ie},last:n.showFirstLastPage?{icon:C.value?n.firstIcon:n.lastIcon,onClick:pe=>U(pe,O.value+N.value-1,"last"),disabled:ie,"aria-label":x(n.lastAriaLabel),"aria-disabled":ie}:void 0}});function J(){const re=E.value-O.value;j.value[re]?.$el.focus()}function Z(re){re.key===keyValues.left&&!n.disabled&&E.value>+n.start?(E.value=E.value-1,nextTick$2(J)):re.key===keyValues.right&&!n.disabled&&E.valuecreateVNode(n.tag,{ref:D,class:["v-pagination",I.value,n.class],style:n.style,role:"navigation","aria-label":x(n.ariaLabel),onKeydown:Z,"data-test":"v-pagination-root"},{default:()=>[createVNode("ul",{class:"v-pagination__list"},[n.showFirstLastPage&&createVNode("li",{key:"first",class:"v-pagination__first","data-test":"v-pagination-first"},[_.first?_.first(Q.value.first):createVNode(VBtn,mergeProps({_as:"VPaginationBtn"},Q.value.first),null)]),createVNode("li",{key:"prev",class:"v-pagination__prev","data-test":"v-pagination-prev"},[_.prev?_.prev(Q.value.prev):createVNode(VBtn,mergeProps({_as:"VPaginationBtn"},Q.value.prev),null)]),H.value.map((re,ie)=>createVNode("li",{key:re.key,class:["v-pagination__item",{"v-pagination__item--is-active":re.isActive}],"data-test":"v-pagination-item"},[_.item?_.item(re):createVNode(VBtn,mergeProps({_as:"VPaginationBtn"},re.props),{default:()=>[re.page]})])),createVNode("li",{key:"next",class:"v-pagination__next","data-test":"v-pagination-next"},[_.next?_.next(Q.value.next):createVNode(VBtn,mergeProps({_as:"VPaginationBtn"},Q.value.next),null)]),n.showFirstLastPage&&createVNode("li",{key:"last",class:"v-pagination__last","data-test":"v-pagination-last"},[_.last?_.last(Q.value.last):createVNode(VBtn,mergeProps({_as:"VPaginationBtn"},Q.value.last),null)])])]})),{}}}),makeVDataTableFooterProps=propsFactory({prevIcon:{type:IconValue,default:"$prev"},nextIcon:{type:IconValue,default:"$next"},firstIcon:{type:IconValue,default:"$first"},lastIcon:{type:IconValue,default:"$last"},itemsPerPageText:{type:String,default:"$vuetify.dataFooter.itemsPerPageText"},pageText:{type:String,default:"$vuetify.dataFooter.pageText"},firstPageLabel:{type:String,default:"$vuetify.dataFooter.firstPage"},prevPageLabel:{type:String,default:"$vuetify.dataFooter.prevPage"},nextPageLabel:{type:String,default:"$vuetify.dataFooter.nextPage"},lastPageLabel:{type:String,default:"$vuetify.dataFooter.lastPage"},itemsPerPageOptions:{type:Array,default:()=>[{value:10,title:"10"},{value:25,title:"25"},{value:50,title:"50"},{value:100,title:"100"},{value:-1,title:"$vuetify.dataFooter.itemsPerPageAll"}]},showCurrentPage:Boolean},"VDataTableFooter"),VDataTableFooter=genericComponent()({name:"VDataTableFooter",props:makeVDataTableFooterProps(),setup(n,r){let{slots:_}=r;const{t:S}=useLocale(),{page:E,pageCount:x,startIndex:T,stopIndex:C,itemsLength:I,itemsPerPage:B,setItemsPerPage:A}=usePagination(),D=computed(()=>n.itemsPerPageOptions.map(N=>typeof N=="number"?{value:N,title:N===-1?S("$vuetify.dataFooter.itemsPerPageAll"):String(N)}:{...N,title:isNaN(Number(N.title))?S(N.title):N.title}));return useRender(()=>{const N=VPagination.filterProps(n);return createVNode("div",{class:"v-data-table-footer"},[_.prepend?.(),createVNode("div",{class:"v-data-table-footer__items-per-page"},[createVNode("span",null,[S(n.itemsPerPageText)]),createVNode(VSelect,{items:D.value,modelValue:B.value,"onUpdate:modelValue":O=>A(Number(O)),density:"compact",variant:"outlined","hide-details":!0},null)]),createVNode("div",{class:"v-data-table-footer__info"},[createVNode("div",null,[S(n.pageText,I.value?T.value+1:0,C.value,I.value)])]),createVNode("div",{class:"v-data-table-footer__pagination"},[createVNode(VPagination,mergeProps({modelValue:E.value,"onUpdate:modelValue":O=>E.value=O,density:"comfortable","first-aria-label":n.firstPageLabel,"last-aria-label":n.lastPageLabel,length:x.value,"next-aria-label":n.nextPageLabel,"previous-aria-label":n.prevPageLabel,rounded:!0,"show-first-last-page":!0,"total-visible":n.showCurrentPage?1:0,variant:"plain"},N),null)])])}),{}}}),VDataTableColumn=defineFunctionalComponent({align:{type:String,default:"start"},fixed:Boolean,fixedOffset:[Number,String],height:[Number,String],lastFixed:Boolean,noPadding:Boolean,tag:String,width:[Number,String],maxWidth:[Number,String],nowrap:Boolean},(n,r)=>{let{slots:_}=r;const S=n.tag??"td";return createVNode(S,{class:["v-data-table__td",{"v-data-table-column--fixed":n.fixed,"v-data-table-column--last-fixed":n.lastFixed,"v-data-table-column--no-padding":n.noPadding,"v-data-table-column--nowrap":n.nowrap},`v-data-table-column--align-${n.align}`],style:{height:convertToUnit(n.height),width:convertToUnit(n.width),maxWidth:convertToUnit(n.maxWidth),left:convertToUnit(n.fixedOffset||null)}},{default:()=>[_.default?.()]})}),makeDataTableHeaderProps=propsFactory({headers:Array},"DataTable-header"),VDataTableHeadersSymbol=Symbol.for("vuetify:data-table-headers"),defaultHeader={title:"",sortable:!1},defaultActionHeader={...defaultHeader,width:48};function priorityQueue(){const r=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).map(_=>({element:_,priority:0}));return{enqueue:(_,S)=>{let E=!1;for(let x=0;xS){r.splice(x,0,{element:_,priority:S}),E=!0;break}E||r.push({element:_,priority:S})},size:()=>r.length,count:()=>{let _=0;if(!r.length)return 0;const S=Math.floor(r[0].priority);for(let E=0;Er.shift()}}function extractLeaves(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];if(!n.children)r.push(n);else for(const _ of n.children)extractLeaves(_,r);return r}function extractKeys(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new Set;for(const _ of n)_.key&&r.add(_.key),_.children&&extractKeys(_.children,r);return r}function getDefaultItem(n){if(n.key){if(n.key==="data-table-group")return defaultHeader;if(["data-table-expand","data-table-select"].includes(n.key))return defaultActionHeader}}function getDepth(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return n.children?Math.max(r,...n.children.map(_=>getDepth(_,r+1))):r}function parseFixedColumns(n){let r=!1;function _(x){let T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(x)if(T&&(x.fixed=!0),x.fixed)if(x.children)for(let C=x.children.length-1;C>=0;C--)_(x.children[C],!0);else r?isNaN(+x.width)&&(`${x.key}`,void 0):x.lastFixed=!0,r=!0;else if(x.children)for(let C=x.children.length-1;C>=0;C--)_(x.children[C]);else r=!1}for(let x=n.length-1;x>=0;x--)_(n[x]);function S(x){let T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!x)return T;if(x.children){x.fixedOffset=T;for(const C of x.children)T=S(C,T)}else x.fixed&&(x.fixedOffset=T,T+=parseFloat(x.width||"0")||0);return T}let E=0;for(const x of n)E=S(x,E)}function parse(n,r){const _=[];let S=0;const E=priorityQueue(n);for(;E.size()>0;){let T=E.count();const C=[];let I=1;for(;T>0;){const{element:B,priority:A}=E.dequeue(),D=r-S-getDepth(B);if(C.push({...B,rowspan:D??1,colspan:B.children?extractLeaves(B).length:1}),B.children)for(const N of B.children){const O=A%1+I/Math.pow(10,S+2);E.enqueue(N,S+D+O)}I+=1,T-=1}S+=1,_.push(C)}return{columns:n.map(T=>extractLeaves(T)).flat(),headers:_}}function convertToInternalHeaders(n){const r=[];for(const _ of n){const S={...getDefaultItem(_),..._},E=S.key??(typeof S.value=="string"?S.value:null),x=S.value??E??null,T={...S,key:E,value:x,sortable:S.sortable??(S.key!=null||!!S.sort),children:S.children?convertToInternalHeaders(S.children):void 0};r.push(T)}return r}function createHeaders(n,r){const _=ref$2([]),S=ref$2([]),E=ref$2({}),x=ref$2({}),T=ref$2({});watchEffect(()=>{const B=(n.headers||Object.keys(n.items[0]??{}).map(L=>({key:L,title:capitalize(L)}))).slice(),A=extractKeys(B);r?.groupBy?.value.length&&!A.has("data-table-group")&&B.unshift({key:"data-table-group",title:"Group"}),r?.showSelect?.value&&!A.has("data-table-select")&&B.unshift({key:"data-table-select"}),r?.showExpand?.value&&!A.has("data-table-expand")&&B.push({key:"data-table-expand"});const D=convertToInternalHeaders(B);parseFixedColumns(D);const N=Math.max(...D.map(L=>getDepth(L)))+1,O=parse(D,N);_.value=O.headers,S.value=O.columns;const M=O.headers.flat(1);for(const L of M)L.key&&(L.sortable&&(L.sort&&(E.value[L.key]=L.sort),L.sortRaw&&(x.value[L.key]=L.sortRaw)),L.filter&&(T.value[L.key]=L.filter))});const C={headers:_,columns:S,sortFunctions:E,sortRawFunctions:x,filterFunctions:T};return provide(VDataTableHeadersSymbol,C),C}function useHeaders(){const n=inject$1(VDataTableHeadersSymbol);if(!n)throw new Error("Missing headers!");return n}const makeVDataTableHeadersProps=propsFactory({color:String,sticky:Boolean,disableSort:Boolean,multiSort:Boolean,sortAscIcon:{type:IconValue,default:"$sortAsc"},sortDescIcon:{type:IconValue,default:"$sortDesc"},headerProps:{type:Object},...makeDisplayProps(),...makeLoaderProps()},"VDataTableHeaders"),VDataTableHeaders=genericComponent()({name:"VDataTableHeaders",props:makeVDataTableHeadersProps(),setup(n,r){let{slots:_}=r;const{t:S}=useLocale(),{toggleSort:E,sortBy:x,isSorted:T}=useSort(),{someSelected:C,allSelected:I,selectAll:B,showSelectAll:A}=useSelection(),{columns:D,headers:N}=useHeaders(),{loaderClasses:O}=useLoader(n);function M(re,ie){if(!(!n.sticky&&!re.fixed))return{position:"sticky",left:re.fixed?convertToUnit(re.fixedOffset):void 0,top:n.sticky?`calc(var(--v-table-header-height) * ${ie})`:void 0}}function L(re){const ie=x.value.find(pe=>pe.key===re.key);return ie?ie.order==="asc"?n.sortAscIcon:n.sortDescIcon:n.sortAscIcon}const{backgroundColorClasses:F,backgroundColorStyles:U}=useBackgroundColor(n,"color"),{displayClasses:j,mobile:z}=useDisplay(n),H=computed(()=>({headers:N.value,columns:D.value,toggleSort:E,isSorted:T,sortBy:x.value,someSelected:C.value,allSelected:I.value,selectAll:B,getSortIcon:L})),Q=computed(()=>["v-data-table__th",{"v-data-table__th--sticky":n.sticky},j.value,O.value]),J=re=>{let{column:ie,x:pe,y:ue}=re;const W=ie.key==="data-table-select"||ie.key==="data-table-expand",Y=mergeProps(n.headerProps??{},ie.headerProps??{});return createVNode(VDataTableColumn,mergeProps({tag:"th",align:ie.align,class:[{"v-data-table__th--sortable":ie.sortable&&!n.disableSort,"v-data-table__th--sorted":T(ie),"v-data-table__th--fixed":ie.fixed},...Q.value],style:{width:convertToUnit(ie.width),minWidth:convertToUnit(ie.minWidth),maxWidth:convertToUnit(ie.maxWidth),...M(ie,ue)},colspan:ie.colspan,rowspan:ie.rowspan,onClick:ie.sortable?()=>E(ie):void 0,fixed:ie.fixed,nowrap:ie.nowrap,lastFixed:ie.lastFixed,noPadding:W},Y),{default:()=>{const q=`header.${ie.key}`,G={column:ie,selectAll:B,isSorted:T,toggleSort:E,sortBy:x.value,someSelected:C.value,allSelected:I.value,getSortIcon:L};return _[q]?_[q](G):ie.key==="data-table-select"?_["header.data-table-select"]?.(G)??(A.value&&createVNode(VCheckboxBtn,{modelValue:I.value,indeterminate:C.value&&!I.value,"onUpdate:modelValue":B},null)):createVNode("div",{class:"v-data-table-header__content"},[createVNode("span",null,[ie.title]),ie.sortable&&!n.disableSort&&createVNode(VIcon,{key:"icon",class:"v-data-table-header__sort-icon",icon:L(ie)},null),n.multiSort&&T(ie)&&createVNode("div",{key:"badge",class:["v-data-table-header__sort-badge",...F.value],style:U.value},[x.value.findIndex(ne=>ne.key===ie.key)+1])])}})},Z=()=>{const re=mergeProps(n.headerProps??{}??{}),ie=computed(()=>D.value.filter(ue=>ue?.sortable&&!n.disableSort)),pe=computed(()=>{if(D.value.find(W=>W.key==="data-table-select")!=null)return I.value?"$checkboxOn":C.value?"$checkboxIndeterminate":"$checkboxOff"});return createVNode(VDataTableColumn,mergeProps({tag:"th",class:[...Q.value],colspan:N.value.length+1},re),{default:()=>[createVNode("div",{class:"v-data-table-header__content"},[createVNode(VSelect,{chips:!0,class:"v-data-table__td-sort-select",clearable:!0,density:"default",items:ie.value,label:S("$vuetify.dataTable.sortBy"),multiple:n.multiSort,variant:"underlined","onClick:clear":()=>x.value=[],appendIcon:pe.value,"onClick:append":()=>B(!I.value)},{..._,chip:ue=>createVNode(VChip,{onClick:ue.item.raw?.sortable?()=>E(ue.item.raw):void 0,onMousedown:W=>{W.preventDefault(),W.stopPropagation()}},{default:()=>[ue.item.title,createVNode(VIcon,{class:["v-data-table__td-sort-icon",T(ue.item.raw)&&"v-data-table__td-sort-icon-active"],icon:L(ue.item.raw),size:"small"},null)]})})])]})};useRender(()=>z.value?createVNode("tr",null,[createVNode(Z,null,null)]):createVNode(Fragment,null,[_.headers?_.headers(H.value):N.value.map((re,ie)=>createVNode("tr",null,[re.map((pe,ue)=>createVNode(J,{column:pe,x:ue,y:ie},null))])),n.loading&&createVNode("tr",{class:"v-data-table-progress"},[createVNode("th",{colspan:D.value.length},[createVNode(LoaderSlot,{name:"v-data-table-progress",absolute:!0,active:!0,color:typeof n.loading=="boolean"?void 0:n.loading,indeterminate:!0},{default:_.loader})])])]))}}),makeVDataTableGroupHeaderRowProps=propsFactory({item:{type:Object,required:!0}},"VDataTableGroupHeaderRow"),VDataTableGroupHeaderRow=genericComponent()({name:"VDataTableGroupHeaderRow",props:makeVDataTableGroupHeaderRowProps(),setup(n,r){let{slots:_}=r;const{isGroupOpen:S,toggleGroup:E,extractRows:x}=useGroupBy(),{isSelected:T,isSomeSelected:C,select:I}=useSelection(),{columns:B}=useHeaders(),A=computed(()=>x([n.item]));return()=>createVNode("tr",{class:"v-data-table-group-header-row",style:{"--v-data-table-group-header-row-depth":n.item.depth}},[B.value.map(D=>{if(D.key==="data-table-group"){const N=S(n.item)?"$expand":"$next",O=()=>E(n.item);return _["data-table-group"]?.({item:n.item,count:A.value.length,props:{icon:N,onClick:O}})??createVNode(VDataTableColumn,{class:"v-data-table-group-header-row__column"},{default:()=>[createVNode(VBtn,{size:"small",variant:"text",icon:N,onClick:O},null),createVNode("span",null,[n.item.value]),createVNode("span",null,[createTextVNode("("),A.value.length,createTextVNode(")")])]})}if(D.key==="data-table-select"){const N=T(A.value),O=C(A.value)&&!N,M=L=>I(A.value,L);return _["data-table-select"]?.({props:{modelValue:N,indeterminate:O,"onUpdate:modelValue":M}})??createVNode("td",null,[createVNode(VCheckboxBtn,{modelValue:N,indeterminate:O,"onUpdate:modelValue":M},null)])}return createVNode("td",null,null)})])}}),makeVDataTableRowProps=propsFactory({index:Number,item:Object,cellProps:[Object,Function],onClick:EventProp(),onContextmenu:EventProp(),onDblclick:EventProp(),...makeDisplayProps()},"VDataTableRow"),VDataTableRow=genericComponent()({name:"VDataTableRow",props:makeVDataTableRowProps(),setup(n,r){let{slots:_}=r;const{displayClasses:S,mobile:E}=useDisplay(n,"v-data-table__tr"),{isSelected:x,toggleSelect:T,someSelected:C,allSelected:I,selectAll:B}=useSelection(),{isExpanded:A,toggleExpand:D}=useExpanded(),{toggleSort:N,sortBy:O,isSorted:M}=useSort(),{columns:L}=useHeaders();useRender(()=>createVNode("tr",{class:["v-data-table__tr",{"v-data-table__tr--clickable":!!(n.onClick||n.onContextmenu||n.onDblclick)},S.value],onClick:n.onClick,onContextmenu:n.onContextmenu,onDblclick:n.onDblclick},[n.item&&L.value.map((F,U)=>{const j=n.item,z=`item.${F.key}`,H=`header.${F.key}`,Q={index:n.index,item:j.raw,internalItem:j,value:getObjectValueByPath(j.columns,F.key),column:F,isSelected:x,toggleSelect:T,isExpanded:A,toggleExpand:D},J={column:F,selectAll:B,isSorted:M,toggleSort:N,sortBy:O.value,someSelected:C.value,allSelected:I.value,getSortIcon:()=>""},Z=typeof n.cellProps=="function"?n.cellProps({index:Q.index,item:Q.item,internalItem:Q.internalItem,value:Q.value,column:F}):n.cellProps,re=typeof F.cellProps=="function"?F.cellProps({index:Q.index,item:Q.item,internalItem:Q.internalItem,value:Q.value}):F.cellProps;return createVNode(VDataTableColumn,mergeProps({align:F.align,class:{"v-data-table__td--expanded-row":F.key==="data-table-expand","v-data-table__td--select-row":F.key==="data-table-select"},fixed:F.fixed,fixedOffset:F.fixedOffset,lastFixed:F.lastFixed,maxWidth:E.value?void 0:F.maxWidth,noPadding:F.key==="data-table-select"||F.key==="data-table-expand",nowrap:F.nowrap,width:E.value?void 0:F.width},Z,re),{default:()=>{if(_[z]&&!E.value)return _[z]?.(Q);if(F.key==="data-table-select")return _["item.data-table-select"]?.(Q)??createVNode(VCheckboxBtn,{disabled:!j.selectable,modelValue:x([j]),onClick:withModifiers(()=>T(j),["stop"])},null);if(F.key==="data-table-expand")return _["item.data-table-expand"]?.(Q)??createVNode(VBtn,{icon:A(j)?"$collapse":"$expand",size:"small",variant:"text",onClick:withModifiers(()=>D(j),["stop"])},null);const ie=toDisplayString(Q.value);return E.value?createVNode(Fragment,null,[createVNode("div",{class:"v-data-table__td-title"},[_[H]?.(J)??F.title]),createVNode("div",{class:"v-data-table__td-value"},[_[z]?.(Q)??ie])]):ie}})})]))}}),makeVDataTableRowsProps=propsFactory({loading:[Boolean,String],loadingText:{type:String,default:"$vuetify.dataIterator.loadingText"},hideNoData:Boolean,items:{type:Array,default:()=>[]},noDataText:{type:String,default:"$vuetify.noDataText"},rowProps:[Object,Function],cellProps:[Object,Function],...makeDisplayProps()},"VDataTableRows"),VDataTableRows=genericComponent()({name:"VDataTableRows",inheritAttrs:!1,props:makeVDataTableRowsProps(),setup(n,r){let{attrs:_,slots:S}=r;const{columns:E}=useHeaders(),{expandOnClick:x,toggleExpand:T,isExpanded:C}=useExpanded(),{isSelected:I,toggleSelect:B}=useSelection(),{toggleGroup:A,isGroupOpen:D}=useGroupBy(),{t:N}=useLocale(),{mobile:O}=useDisplay(n);return useRender(()=>n.loading&&(!n.items.length||S.loading)?createVNode("tr",{class:"v-data-table-rows-loading",key:"loading"},[createVNode("td",{colspan:E.value.length},[S.loading?.()??N(n.loadingText)])]):!n.loading&&!n.items.length&&!n.hideNoData?createVNode("tr",{class:"v-data-table-rows-no-data",key:"no-data"},[createVNode("td",{colspan:E.value.length},[S["no-data"]?.()??N(n.noDataText)])]):createVNode(Fragment,null,[n.items.map((M,L)=>{if(M.type==="group"){const j={index:L,item:M,columns:E.value,isExpanded:C,toggleExpand:T,isSelected:I,toggleSelect:B,toggleGroup:A,isGroupOpen:D};return S["group-header"]?S["group-header"](j):createVNode(VDataTableGroupHeaderRow,mergeProps({key:`group-header_${M.id}`,item:M},getPrefixedEventHandlers(_,":group-header",()=>j)),S)}const F={index:L,item:M.raw,internalItem:M,columns:E.value,isExpanded:C,toggleExpand:T,isSelected:I,toggleSelect:B},U={...F,props:mergeProps({key:`item_${M.key??M.index}`,onClick:x.value?()=>{T(M)}:void 0,index:L,item:M,cellProps:n.cellProps,mobile:O.value},getPrefixedEventHandlers(_,":row",()=>F),typeof n.rowProps=="function"?n.rowProps({item:F.item,index:F.index,internalItem:F.internalItem}):n.rowProps)};return createVNode(Fragment,{key:U.props.key},[S.item?S.item(U):createVNode(VDataTableRow,U.props,S),C(M)&&S["expanded-row"]?.(F)])})])),{}}}),makeVTableProps=propsFactory({fixedHeader:Boolean,fixedFooter:Boolean,height:[Number,String],hover:Boolean,...makeComponentProps(),...makeDensityProps(),...makeTagProps(),...makeThemeProps()},"VTable"),VTable=genericComponent()({name:"VTable",props:makeVTableProps(),setup(n,r){let{slots:_,emit:S}=r;const{themeClasses:E}=provideTheme(n),{densityClasses:x}=useDensity(n);return useRender(()=>createVNode(n.tag,{class:["v-table",{"v-table--fixed-height":!!n.height,"v-table--fixed-header":n.fixedHeader,"v-table--fixed-footer":n.fixedFooter,"v-table--has-top":!!_.top,"v-table--has-bottom":!!_.bottom,"v-table--hover":n.hover},E.value,x.value,n.class],style:n.style},{default:()=>[_.top?.(),_.default?createVNode("div",{class:"v-table__wrapper",style:{height:convertToUnit(n.height)}},[createVNode("table",null,[_.default()])]):_.wrapper?.(),_.bottom?.()]})),{}}}),makeDataTableItemsProps=propsFactory({items:{type:Array,default:()=>[]},itemValue:{type:[String,Array,Function],default:"id"},itemSelectable:{type:[String,Array,Function],default:null},rowProps:[Object,Function],cellProps:[Object,Function],returnObject:Boolean},"DataTable-items");function transformItem(n,r,_,S){const E=n.returnObject?r:getPropertyFromItem(r,n.itemValue),x=getPropertyFromItem(r,n.itemSelectable,!0),T=S.reduce((C,I)=>(I.key!=null&&(C[I.key]=getPropertyFromItem(r,I.value)),C),{});return{type:"item",key:n.returnObject?getPropertyFromItem(r,n.itemValue):E,index:_,value:E,selectable:x,columns:T,raw:r}}function transformItems(n,r,_){return r.map((S,E)=>transformItem(n,S,E,_))}function useDataTableItems(n,r){return{items:computed(()=>transformItems(n,n.items,r.value))}}const makeDataTableProps=propsFactory({...makeVDataTableRowsProps(),hideDefaultBody:Boolean,hideDefaultFooter:Boolean,hideDefaultHeader:Boolean,width:[String,Number],search:String,...makeDataTableExpandProps(),...makeDataTableGroupProps(),...makeDataTableHeaderProps(),...makeDataTableItemsProps(),...makeDataTableSelectProps(),...makeDataTableSortProps(),...makeVDataTableHeadersProps(),...makeVTableProps()},"DataTable"),makeVDataTableProps=propsFactory({...makeDataTablePaginateProps(),...makeDataTableProps(),...makeFilterProps(),...makeVDataTableFooterProps()},"VDataTable"),VDataTable=genericComponent()({name:"VDataTable",props:makeVDataTableProps(),emits:{"update:modelValue":n=>!0,"update:page":n=>!0,"update:itemsPerPage":n=>!0,"update:sortBy":n=>!0,"update:options":n=>!0,"update:groupBy":n=>!0,"update:expanded":n=>!0,"update:currentItems":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const{groupBy:E}=createGroupBy(n),{sortBy:x,multiSort:T,mustSort:C}=createSort(n),{page:I,itemsPerPage:B}=createPagination(n),{disableSort:A}=toRefs(n),{columns:D,headers:N,sortFunctions:O,sortRawFunctions:M,filterFunctions:L}=createHeaders(n,{groupBy:E,showSelect:toRef(n,"showSelect"),showExpand:toRef(n,"showExpand")}),{items:F}=useDataTableItems(n,D),U=toRef(n,"search"),{filteredItems:j}=useFilter(n,F,U,{transform:he=>he.columns,customKeyFilter:L}),{toggleSort:z}=provideSort({sortBy:x,multiSort:T,mustSort:C,page:I}),{sortByWithGroups:H,opened:Q,extractRows:J,isGroupOpen:Z,toggleGroup:re}=provideGroupBy({groupBy:E,sortBy:x,disableSort:A}),{sortedItems:ie}=useSortedItems(n,j,H,{transform:he=>({...he.raw,...he.columns}),sortFunctions:O,sortRawFunctions:M}),{flatItems:pe}=useGroupedItems(ie,E,Q),ue=computed(()=>pe.value.length),{startIndex:W,stopIndex:Y,pageCount:q,setItemsPerPage:G}=providePagination({page:I,itemsPerPage:B,itemsLength:ue}),{paginatedItems:ne}=usePaginatedItems({items:pe,startIndex:W,stopIndex:Y,itemsPerPage:B}),ee=computed(()=>J(ne.value)),{isSelected:oe,select:ae,selectAll:se,toggleSelect:te,someSelected:X,allSelected:ce}=provideSelection(n,{allItems:F,currentPage:ee}),{isExpanded:le,toggleExpand:ye}=provideExpanded(n);useOptions({page:I,itemsPerPage:B,sortBy:x,groupBy:E,search:U}),provideDefaults({VDataTableRows:{hideNoData:toRef(n,"hideNoData"),noDataText:toRef(n,"noDataText"),loading:toRef(n,"loading"),loadingText:toRef(n,"loadingText")}});const de=computed(()=>({page:I.value,itemsPerPage:B.value,sortBy:x.value,pageCount:q.value,toggleSort:z,setItemsPerPage:G,someSelected:X.value,allSelected:ce.value,isSelected:oe,select:ae,selectAll:se,toggleSelect:te,isExpanded:le,toggleExpand:ye,isGroupOpen:Z,toggleGroup:re,items:ee.value.map(he=>he.raw),internalItems:ee.value,groupedItems:ne.value,columns:D.value,headers:N.value}));return useRender(()=>{const he=VDataTableFooter.filterProps(n),me=VDataTableHeaders.filterProps(n),Ee=VDataTableRows.filterProps(n),Ce=VTable.filterProps(n);return createVNode(VTable,mergeProps({class:["v-data-table",{"v-data-table--show-select":n.showSelect,"v-data-table--loading":n.loading},n.class],style:n.style},Ce),{top:()=>S.top?.(de.value),default:()=>S.default?S.default(de.value):createVNode(Fragment,null,[S.colgroup?.(de.value),!n.hideDefaultHeader&&createVNode("thead",{key:"thead"},[createVNode(VDataTableHeaders,me,S)]),S.thead?.(de.value),!n.hideDefaultBody&&createVNode("tbody",null,[S["body.prepend"]?.(de.value),S.body?S.body(de.value):createVNode(VDataTableRows,mergeProps(_,Ee,{items:ne.value}),S),S["body.append"]?.(de.value)]),S.tbody?.(de.value),S.tfoot?.(de.value)]),bottom:()=>S.bottom?S.bottom(de.value):!n.hideDefaultFooter&&createVNode(Fragment,null,[createVNode(VDivider,null,null),createVNode(VDataTableFooter,he,{prepend:S["footer.prepend"]})])})}),{}}}),makeVDataTableVirtualProps=propsFactory({...makeDataTableProps(),...makeDataTableGroupProps(),...makeVirtualProps(),...makeFilterProps()},"VDataTableVirtual"),VDataTableVirtual=genericComponent()({name:"VDataTableVirtual",props:makeVDataTableVirtualProps(),emits:{"update:modelValue":n=>!0,"update:sortBy":n=>!0,"update:options":n=>!0,"update:groupBy":n=>!0,"update:expanded":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const{groupBy:E}=createGroupBy(n),{sortBy:x,multiSort:T,mustSort:C}=createSort(n),{disableSort:I}=toRefs(n),{columns:B,headers:A,filterFunctions:D,sortFunctions:N,sortRawFunctions:O}=createHeaders(n,{groupBy:E,showSelect:toRef(n,"showSelect"),showExpand:toRef(n,"showExpand")}),{items:M}=useDataTableItems(n,B),L=toRef(n,"search"),{filteredItems:F}=useFilter(n,M,L,{transform:me=>me.columns,customKeyFilter:D}),{toggleSort:U}=provideSort({sortBy:x,multiSort:T,mustSort:C}),{sortByWithGroups:j,opened:z,extractRows:H,isGroupOpen:Q,toggleGroup:J}=provideGroupBy({groupBy:E,sortBy:x,disableSort:I}),{sortedItems:Z}=useSortedItems(n,F,j,{transform:me=>({...me.raw,...me.columns}),sortFunctions:N,sortRawFunctions:O}),{flatItems:re}=useGroupedItems(Z,E,z),ie=computed(()=>H(re.value)),{isSelected:pe,select:ue,selectAll:W,toggleSelect:Y,someSelected:q,allSelected:G}=provideSelection(n,{allItems:ie,currentPage:ie}),{isExpanded:ne,toggleExpand:ee}=provideExpanded(n),{containerRef:oe,markerRef:ae,paddingTop:se,paddingBottom:te,computedItems:X,handleItemResize:ce,handleScroll:le,handleScrollend:ye}=useVirtual(n,re),de=computed(()=>X.value.map(me=>me.raw));useOptions({sortBy:x,page:shallowRef(1),itemsPerPage:shallowRef(-1),groupBy:E,search:L}),provideDefaults({VDataTableRows:{hideNoData:toRef(n,"hideNoData"),noDataText:toRef(n,"noDataText"),loading:toRef(n,"loading"),loadingText:toRef(n,"loadingText")}});const he=computed(()=>({sortBy:x.value,toggleSort:U,someSelected:q.value,allSelected:G.value,isSelected:pe,select:ue,selectAll:W,toggleSelect:Y,isExpanded:ne,toggleExpand:ee,isGroupOpen:Q,toggleGroup:J,items:ie.value.map(me=>me.raw),internalItems:ie.value,groupedItems:re.value,columns:B.value,headers:A.value}));useRender(()=>{const me=VDataTableHeaders.filterProps(n),Ee=VDataTableRows.filterProps(n),Ce=VTable.filterProps(n);return createVNode(VTable,mergeProps({class:["v-data-table",{"v-data-table--loading":n.loading},n.class],style:n.style},Ce),{top:()=>S.top?.(he.value),wrapper:()=>createVNode("div",{ref:oe,onScrollPassive:le,onScrollend:ye,class:"v-table__wrapper",style:{height:convertToUnit(n.height)}},[createVNode("table",null,[S.colgroup?.(he.value),!n.hideDefaultHeader&&createVNode("thead",{key:"thead"},[createVNode(VDataTableHeaders,mergeProps(me,{sticky:n.fixedHeader}),S)]),!n.hideDefaultBody&&createVNode("tbody",null,[createVNode("tr",{ref:ae,style:{height:convertToUnit(se.value),border:0}},[createVNode("td",{colspan:B.value.length,style:{height:0,border:0}},null)]),S["body.prepend"]?.(he.value),createVNode(VDataTableRows,mergeProps(_,Ee,{items:de.value}),{...S,item:be=>createVNode(VVirtualScrollItem,{key:be.internalItem.index,renderless:!0,"onUpdate:height":ge=>ce(be.internalItem.index,ge)},{default:ge=>{let{itemRef:we}=ge;return S.item?.({...be,itemRef:we})??createVNode(VDataTableRow,mergeProps(be.props,{ref:we,key:be.internalItem.index,index:be.internalItem.index}),S)}})}),S["body.append"]?.(he.value),createVNode("tr",{style:{height:convertToUnit(te.value),border:0}},[createVNode("td",{colspan:B.value.length,style:{height:0,border:0}},null)])])])]),bottom:()=>S.bottom?.(he.value)})})}}),makeVDataTableServerProps=propsFactory({itemsLength:{type:[Number,String],required:!0},...makeDataTablePaginateProps(),...makeDataTableProps(),...makeVDataTableFooterProps()},"VDataTableServer"),VDataTableServer=genericComponent()({name:"VDataTableServer",props:makeVDataTableServerProps(),emits:{"update:modelValue":n=>!0,"update:page":n=>!0,"update:itemsPerPage":n=>!0,"update:sortBy":n=>!0,"update:options":n=>!0,"update:expanded":n=>!0,"update:groupBy":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const{groupBy:E}=createGroupBy(n),{sortBy:x,multiSort:T,mustSort:C}=createSort(n),{page:I,itemsPerPage:B}=createPagination(n),{disableSort:A}=toRefs(n),D=computed(()=>parseInt(n.itemsLength,10)),{columns:N,headers:O}=createHeaders(n,{groupBy:E,showSelect:toRef(n,"showSelect"),showExpand:toRef(n,"showExpand")}),{items:M}=useDataTableItems(n,N),{toggleSort:L}=provideSort({sortBy:x,multiSort:T,mustSort:C,page:I}),{opened:F,isGroupOpen:U,toggleGroup:j,extractRows:z}=provideGroupBy({groupBy:E,sortBy:x,disableSort:A}),{pageCount:H,setItemsPerPage:Q}=providePagination({page:I,itemsPerPage:B,itemsLength:D}),{flatItems:J}=useGroupedItems(M,E,F),{isSelected:Z,select:re,selectAll:ie,toggleSelect:pe,someSelected:ue,allSelected:W}=provideSelection(n,{allItems:M,currentPage:M}),{isExpanded:Y,toggleExpand:q}=provideExpanded(n),G=computed(()=>z(M.value));useOptions({page:I,itemsPerPage:B,sortBy:x,groupBy:E,search:toRef(n,"search")}),provide("v-data-table",{toggleSort:L,sortBy:x}),provideDefaults({VDataTableRows:{hideNoData:toRef(n,"hideNoData"),noDataText:toRef(n,"noDataText"),loading:toRef(n,"loading"),loadingText:toRef(n,"loadingText")}});const ne=computed(()=>({page:I.value,itemsPerPage:B.value,sortBy:x.value,pageCount:H.value,toggleSort:L,setItemsPerPage:Q,someSelected:ue.value,allSelected:W.value,isSelected:Z,select:re,selectAll:ie,toggleSelect:pe,isExpanded:Y,toggleExpand:q,isGroupOpen:U,toggleGroup:j,items:G.value.map(ee=>ee.raw),internalItems:G.value,groupedItems:J.value,columns:N.value,headers:O.value}));useRender(()=>{const ee=VDataTableFooter.filterProps(n),oe=VDataTableHeaders.filterProps(n),ae=VDataTableRows.filterProps(n),se=VTable.filterProps(n);return createVNode(VTable,mergeProps({class:["v-data-table",{"v-data-table--loading":n.loading},n.class],style:n.style},se),{top:()=>S.top?.(ne.value),default:()=>S.default?S.default(ne.value):createVNode(Fragment,null,[S.colgroup?.(ne.value),!n.hideDefaultHeader&&createVNode("thead",{key:"thead",class:"v-data-table__thead",role:"rowgroup"},[createVNode(VDataTableHeaders,mergeProps(oe,{sticky:n.fixedHeader}),S)]),S.thead?.(ne.value),!n.hideDefaultBody&&createVNode("tbody",{class:"v-data-table__tbody",role:"rowgroup"},[S["body.prepend"]?.(ne.value),S.body?S.body(ne.value):createVNode(VDataTableRows,mergeProps(_,ae,{items:J.value}),S),S["body.append"]?.(ne.value)]),S.tbody?.(ne.value),S.tfoot?.(ne.value)]),bottom:()=>S.bottom?S.bottom(ne.value):!n.hideDefaultFooter&&createVNode(Fragment,null,[createVNode(VDivider,null,null),createVNode(VDataTableFooter,ee,{prepend:S["footer.prepend"]})])})})}}),makeVDatePickerControlsProps=propsFactory({active:{type:[String,Array],default:void 0},disabled:{type:[Boolean,String,Array],default:!1},nextIcon:{type:IconValue,default:"$next"},prevIcon:{type:IconValue,default:"$prev"},modeIcon:{type:IconValue,default:"$subgroup"},text:String,viewMode:{type:String,default:"month"}},"VDatePickerControls"),VDatePickerControls=genericComponent()({name:"VDatePickerControls",props:makeVDatePickerControlsProps(),emits:{"click:year":()=>!0,"click:month":()=>!0,"click:prev":()=>!0,"click:next":()=>!0,"click:text":()=>!0},setup(n,r){let{emit:_}=r;const S=computed(()=>Array.isArray(n.disabled)?n.disabled.includes("text"):!!n.disabled),E=computed(()=>Array.isArray(n.disabled)?n.disabled.includes("mode"):!!n.disabled),x=computed(()=>Array.isArray(n.disabled)?n.disabled.includes("prev"):!!n.disabled),T=computed(()=>Array.isArray(n.disabled)?n.disabled.includes("next"):!!n.disabled);function C(){_("click:prev")}function I(){_("click:next")}function B(){_("click:year")}function A(){_("click:month")}return useRender(()=>createVNode("div",{class:["v-date-picker-controls"]},[createVNode(VBtn,{class:"v-date-picker-controls__month-btn",disabled:S.value,text:n.text,variant:"text",rounded:!0,onClick:A},null),createVNode(VBtn,{key:"mode-btn",class:"v-date-picker-controls__mode-btn",disabled:E.value,density:"comfortable",icon:n.modeIcon,variant:"text",onClick:B},null),createVNode(VSpacer,{key:"mode-spacer"},null),createVNode("div",{key:"month-buttons",class:"v-date-picker-controls__month"},[createVNode(VBtn,{disabled:x.value,icon:n.prevIcon,variant:"text",onClick:C},null),createVNode(VBtn,{disabled:T.value,icon:n.nextIcon,variant:"text",onClick:I},null)])])),{}}}),makeVDatePickerHeaderProps=propsFactory({appendIcon:String,color:String,header:String,transition:String,onClick:EventProp()},"VDatePickerHeader"),VDatePickerHeader=genericComponent()({name:"VDatePickerHeader",props:makeVDatePickerHeaderProps(),emits:{click:()=>!0,"click:append":()=>!0},setup(n,r){let{emit:_,slots:S}=r;const{backgroundColorClasses:E,backgroundColorStyles:x}=useBackgroundColor(n,"color");function T(){_("click")}function C(){_("click:append")}return useRender(()=>{const I=!!(S.default||n.header),B=!!(S.append||n.appendIcon);return createVNode("div",{class:["v-date-picker-header",{"v-date-picker-header--clickable":!!n.onClick},E.value],style:x.value,onClick:T},[S.prepend&&createVNode("div",{key:"prepend",class:"v-date-picker-header__prepend"},[S.prepend()]),I&&createVNode(MaybeTransition,{key:"content",name:n.transition},{default:()=>[createVNode("div",{key:n.header,class:"v-date-picker-header__content"},[S.default?.()??n.header])]}),B&&createVNode("div",{class:"v-date-picker-header__append"},[S.append?createVNode(VDefaultsProvider,{key:"append-defaults",disabled:!n.appendIcon,defaults:{VBtn:{icon:n.appendIcon,variant:"text"}}},{default:()=>[S.append?.()]}):createVNode(VBtn,{key:"append-btn",icon:n.appendIcon,variant:"text",onClick:C},null)])])}),{}}}),makeCalendarProps=propsFactory({allowedDates:[Array,Function],disabled:Boolean,displayValue:null,modelValue:Array,month:[Number,String],max:null,min:null,showAdjacentMonths:Boolean,year:[Number,String],weekdays:{type:Array,default:()=>[0,1,2,3,4,5,6]},weeksInMonth:{type:String,default:"dynamic"},firstDayOfWeek:[Number,String]},"calendar");function useCalendar(n){const r=useDate(),_=useProxiedModel(n,"modelValue",[],O=>wrapInArray(O)),S=computed(()=>n.displayValue?r.date(n.displayValue):_.value.length>0?r.date(_.value[0]):n.min?r.date(n.min):Array.isArray(n.allowedDates)?r.date(n.allowedDates[0]):r.date()),E=useProxiedModel(n,"year",void 0,O=>{const M=O!=null?Number(O):r.getYear(S.value);return r.startOfYear(r.setYear(r.date(),M))},O=>r.getYear(O)),x=useProxiedModel(n,"month",void 0,O=>{const M=O!=null?Number(O):r.getMonth(S.value),L=r.setYear(r.startOfMonth(r.date()),r.getYear(E.value));return r.setMonth(L,M)},O=>r.getMonth(O)),T=computed(()=>{const O=Number(n.firstDayOfWeek??0);return n.weekdays.map(M=>(M+O)%7)}),C=computed(()=>{const O=r.getWeekArray(x.value,n.firstDayOfWeek),M=O.flat(),L=6*7;if(n.weeksInMonth==="static"&&M.lengthT.value.includes(r.toJsDate(L).getDay())).map((L,F)=>{const U=r.toISO(L),j=!r.isSameMonth(L,x.value),z=r.isSameDay(L,r.startOfMonth(x.value)),H=r.isSameDay(L,r.endOfMonth(x.value)),Q=r.isSameDay(L,x.value);return{date:L,isoDate:U,formatted:r.format(L,"keyboardDate"),year:r.getYear(L),month:r.getMonth(L),isDisabled:N(L),isWeekStart:F%7===0,isWeekEnd:F%7===6,isToday:r.isSameDay(L,M),isAdjacent:j,isHidden:j&&!n.showAdjacentMonths,isStart:z,isSelected:_.value.some(J=>r.isSameDay(L,J)),isEnd:H,isSame:Q,localized:r.format(L,"dayOfMonth")}})}const B=computed(()=>{const O=r.startOfWeek(S.value,n.firstDayOfWeek),M=[];for(let F=0;F<=6;F++)M.push(r.addDays(O,F));const L=r.date();return I(M,L)}),A=computed(()=>{const O=C.value.flat(),M=r.date();return I(O,M)}),D=computed(()=>C.value.map(O=>O.length?getWeek(r,O[0]):null));function N(O){if(n.disabled)return!0;const M=r.date(O);return n.min&&r.isAfter(r.date(n.min),M)||n.max&&r.isAfter(M,r.date(n.max))?!0:Array.isArray(n.allowedDates)&&n.allowedDates.length>0?!n.allowedDates.some(L=>r.isSameDay(r.date(L),M)):typeof n.allowedDates=="function"?!n.allowedDates(M):!1}return{displayValue:S,daysInMonth:A,daysInWeek:B,genDays:I,model:_,weeksInMonth:C,weekDays:T,weekNumbers:D}}const makeVDatePickerMonthProps=propsFactory({color:String,hideWeekdays:Boolean,multiple:[Boolean,Number,String],showWeek:Boolean,transition:{type:String,default:"picker-transition"},reverseTransition:{type:String,default:"picker-reverse-transition"},...makeCalendarProps()},"VDatePickerMonth"),VDatePickerMonth=genericComponent()({name:"VDatePickerMonth",props:makeVDatePickerMonthProps(),emits:{"update:modelValue":n=>!0,"update:month":n=>!0,"update:year":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=ref$2(),{daysInMonth:x,model:T,weekNumbers:C}=useCalendar(n),I=useDate(),B=shallowRef(),A=shallowRef(),D=shallowRef(!1),N=computed(()=>D.value?n.reverseTransition:n.transition);n.multiple==="range"&&T.value.length>0&&(B.value=T.value[0],T.value.length>1&&(A.value=T.value[T.value.length-1]));const O=computed(()=>{const U=["number","string"].includes(typeof n.multiple)?Number(n.multiple):1/0;return T.value.length>=U});watch(x,(U,j)=>{j&&(D.value=I.isBefore(U[0].date,j[0].date))});function M(U){const j=I.startOfDay(U);if(T.value.length===0?B.value=void 0:T.value.length===1&&(B.value=T.value[0],A.value=void 0),!B.value)B.value=j,T.value=[B.value];else if(A.value)B.value=U,A.value=void 0,T.value=[B.value];else{if(I.isSameDay(j,B.value)){B.value=void 0,T.value=[];return}else I.isBefore(j,B.value)?(A.value=I.endOfDay(B.value),B.value=j):A.value=I.endOfDay(j);const z=I.getDiff(A.value,B.value,"days"),H=[B.value];for(let Q=1;QI.isSameDay(z,U));if(j===-1)T.value=[...T.value,U];else{const z=[...T.value];z.splice(j,1),T.value=z}}function F(U){n.multiple==="range"?M(U):n.multiple?L(U):T.value=[U]}return()=>createVNode("div",{class:"v-date-picker-month"},[n.showWeek&&createVNode("div",{key:"weeks",class:"v-date-picker-month__weeks"},[!n.hideWeekdays&&createVNode("div",{key:"hide-week-days",class:"v-date-picker-month__day"},[createTextVNode(" ")]),C.value.map(U=>createVNode("div",{class:["v-date-picker-month__day","v-date-picker-month__day--adjacent"]},[U]))]),createVNode(MaybeTransition,{name:N.value},{default:()=>[createVNode("div",{ref:E,key:x.value[0].date?.toString(),class:"v-date-picker-month__days"},[!n.hideWeekdays&&I.getWeekdays(n.firstDayOfWeek).map(U=>createVNode("div",{class:["v-date-picker-month__day","v-date-picker-month__weekday"]},[U])),x.value.map((U,j)=>{const z={props:{onClick:()=>F(U.date)},item:U,i:j};return O.value&&!U.isSelected&&(U.isDisabled=!0),createVNode("div",{class:["v-date-picker-month__day",{"v-date-picker-month__day--adjacent":U.isAdjacent,"v-date-picker-month__day--hide-adjacent":U.isHidden,"v-date-picker-month__day--selected":U.isSelected,"v-date-picker-month__day--week-end":U.isWeekEnd,"v-date-picker-month__day--week-start":U.isWeekStart}],"data-v-date":U.isDisabled?void 0:U.isoDate},[(n.showAdjacentMonths||!U.isAdjacent)&&createVNode(VDefaultsProvider,{defaults:{VBtn:{class:"v-date-picker-month__day-btn",color:(U.isSelected||U.isToday)&&!U.isDisabled?n.color:void 0,disabled:U.isDisabled,icon:!0,ripple:!1,text:U.localized,variant:U.isDisabled?U.isToday?"outlined":"text":U.isToday&&!U.isSelected?"outlined":"flat",onClick:()=>F(U.date)}}},{default:()=>[S.day?.(z)??createVNode(VBtn,z.props,null)]})])})])]})])}}),makeVDatePickerMonthsProps=propsFactory({color:String,height:[String,Number],min:null,max:null,modelValue:Number,year:Number},"VDatePickerMonths"),VDatePickerMonths=genericComponent()({name:"VDatePickerMonths",props:makeVDatePickerMonthsProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useDate(),x=useProxiedModel(n,"modelValue"),T=computed(()=>{let C=E.startOfYear(E.date());return n.year&&(C=E.setYear(C,n.year)),createRange(12).map(I=>{const B=E.format(C,"monthShort"),A=!!(n.min&&E.isAfter(E.startOfMonth(E.date(n.min)),C)||n.max&&E.isAfter(C,E.startOfMonth(E.date(n.max))));return C=E.getNextMonth(C),{isDisabled:A,text:B,value:I}})});return watchEffect(()=>{x.value=x.value??E.getMonth(E.date())}),useRender(()=>createVNode("div",{class:"v-date-picker-months",style:{height:convertToUnit(n.height)}},[createVNode("div",{class:"v-date-picker-months__content"},[T.value.map((C,I)=>{const B={active:x.value===I,color:x.value===I?n.color:void 0,disabled:C.isDisabled,rounded:!0,text:C.text,variant:x.value===C.value?"flat":"text",onClick:()=>A(I)};function A(D){if(x.value===D){_("update:modelValue",x.value);return}x.value=D}return S.month?.({month:C,i:I,props:B})??createVNode(VBtn,mergeProps({key:"month"},B),null)})])])),{}}}),makeVDatePickerYearsProps=propsFactory({color:String,height:[String,Number],min:null,max:null,modelValue:Number},"VDatePickerYears"),VDatePickerYears=genericComponent()({name:"VDatePickerYears",props:makeVDatePickerYearsProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useDate(),x=useProxiedModel(n,"modelValue"),T=computed(()=>{const I=E.getYear(E.date());let B=I-100,A=I+52;n.min&&(B=E.getYear(E.date(n.min))),n.max&&(A=E.getYear(E.date(n.max)));let D=E.startOfYear(E.date());return D=E.setYear(D,B),createRange(A-B+1,B).map(N=>{const O=E.format(D,"year");return D=E.setYear(D,E.getYear(D)+1),{text:O,value:N}})});watchEffect(()=>{x.value=x.value??E.getYear(E.date())});const C=templateRef();return onMounted(async()=>{await nextTick$2(),C.el?.scrollIntoView({block:"center"})}),useRender(()=>createVNode("div",{class:"v-date-picker-years",style:{height:convertToUnit(n.height)}},[createVNode("div",{class:"v-date-picker-years__content"},[T.value.map((I,B)=>{const A={ref:x.value===I.value?C:void 0,active:x.value===I.value,color:x.value===I.value?n.color:void 0,rounded:!0,text:I.text,variant:x.value===I.value?"flat":"text",onClick:()=>{if(x.value===I.value){_("update:modelValue",x.value);return}x.value=I.value}};return S.year?.({year:I,i:B,props:A})??createVNode(VBtn,mergeProps({key:"month"},A),null)})])])),{}}}),VPickerTitle=createSimpleFunctional("v-picker-title"),makeVPickerProps=propsFactory({bgColor:String,landscape:Boolean,title:String,hideHeader:Boolean,...makeVSheetProps()},"VPicker"),VPicker=genericComponent()({name:"VPicker",props:makeVPickerProps(),setup(n,r){let{slots:_}=r;const{backgroundColorClasses:S,backgroundColorStyles:E}=useBackgroundColor(toRef(n,"color"));return useRender(()=>{const x=VSheet.filterProps(n),T=!!(n.title||_.title);return createVNode(VSheet,mergeProps(x,{color:n.bgColor,class:["v-picker",{"v-picker--landscape":n.landscape,"v-picker--with-actions":!!_.actions},n.class],style:n.style}),{default:()=>[!n.hideHeader&&createVNode("div",{key:"header",class:[S.value],style:[E.value]},[T&&createVNode(VPickerTitle,{key:"picker-title"},{default:()=>[_.title?.()??n.title]}),_.header&&createVNode("div",{class:"v-picker__header"},[_.header()])]),createVNode("div",{class:"v-picker__body"},[_.default?.()]),_.actions&&createVNode(VDefaultsProvider,{defaults:{VBtn:{slim:!0,variant:"text"}}},{default:()=>[createVNode("div",{class:"v-picker__actions"},[_.actions()])]})]})}),{}}}),makeVDatePickerProps=propsFactory({header:{type:String,default:"$vuetify.datePicker.header"},...makeVDatePickerControlsProps(),...makeVDatePickerMonthProps({weeksInMonth:"static"}),...omit(makeVDatePickerMonthsProps(),["modelValue"]),...omit(makeVDatePickerYearsProps(),["modelValue"]),...makeVPickerProps({title:"$vuetify.datePicker.title"}),modelValue:null},"VDatePicker"),VDatePicker=genericComponent()({name:"VDatePicker",props:makeVDatePickerProps(),emits:{"update:modelValue":n=>!0,"update:month":n=>!0,"update:year":n=>!0,"update:viewMode":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const E=useDate(),{t:x}=useLocale(),T=useProxiedModel(n,"modelValue",void 0,ie=>wrapInArray(ie),ie=>n.multiple?ie:ie[0]),C=useProxiedModel(n,"viewMode"),I=computed(()=>{const ie=E.date(T.value?.[0]);return ie&&E.isValid(ie)?ie:E.date()}),B=ref$2(Number(n.month??E.getMonth(E.startOfMonth(I.value)))),A=ref$2(Number(n.year??E.getYear(E.startOfYear(E.setMonth(I.value,B.value))))),D=shallowRef(!1),N=computed(()=>n.multiple&&T.value.length>1?x("$vuetify.datePicker.itemsSelected",T.value.length):T.value[0]&&E.isValid(T.value[0])?E.format(E.date(T.value[0]),"normalDateWithWeekday"):x(n.header)),O=computed(()=>{let ie=E.date();return ie=E.setDate(ie,1),ie=E.setMonth(ie,B.value),ie=E.setYear(ie,A.value),E.format(ie,"monthAndYear")}),M=computed(()=>`date-picker-header${D.value?"-reverse":""}-transition`),L=computed(()=>{const ie=E.date(n.min);return n.min&&E.isValid(ie)?ie:null}),F=computed(()=>{const ie=E.date(n.max);return n.max&&E.isValid(ie)?ie:null}),U=computed(()=>{if(n.disabled)return!0;const ie=[];if(C.value!=="month")ie.push("prev","next");else{let pe=E.date();if(pe=E.setYear(pe,A.value),pe=E.setMonth(pe,B.value),L.value){const ue=E.addDays(E.startOfMonth(pe),-1);E.isAfter(L.value,ue)&&ie.push("prev")}if(F.value){const ue=E.addDays(E.endOfMonth(pe),1);E.isAfter(ue,F.value)&&ie.push("next")}}return ie});function j(){B.value<11?B.value++:(A.value++,B.value=0,re(A.value)),Z(B.value)}function z(){B.value>0?B.value--:(A.value--,B.value=11,re(A.value)),Z(B.value)}function H(){C.value="month"}function Q(){C.value=C.value==="months"?"month":"months"}function J(){C.value=C.value==="year"?"month":"year"}function Z(ie){C.value==="months"&&Q(),_("update:month",ie)}function re(ie){C.value==="year"&&J(),_("update:year",ie)}return watch(T,(ie,pe)=>{const ue=wrapInArray(pe),W=wrapInArray(ie);if(!W.length)return;const Y=E.date(ue[ue.length-1]),q=E.date(W[W.length-1]),G=E.getMonth(q),ne=E.getYear(q);G!==B.value&&(B.value=G,Z(B.value)),ne!==A.value&&(A.value=ne,re(A.value)),D.value=E.isBefore(Y,q)}),useRender(()=>{const ie=VPicker.filterProps(n),pe=VDatePickerControls.filterProps(n),ue=VDatePickerHeader.filterProps(n),W=VDatePickerMonth.filterProps(n),Y=omit(VDatePickerMonths.filterProps(n),["modelValue"]),q=omit(VDatePickerYears.filterProps(n),["modelValue"]),G={header:N.value,transition:M.value};return createVNode(VPicker,mergeProps(ie,{class:["v-date-picker",`v-date-picker--${C.value}`,{"v-date-picker--show-week":n.showWeek},n.class],style:n.style}),{title:()=>S.title?.()??createVNode("div",{class:"v-date-picker__title"},[x(n.title)]),header:()=>S.header?createVNode(VDefaultsProvider,{defaults:{VDatePickerHeader:{...G}}},{default:()=>[S.header?.(G)]}):createVNode(VDatePickerHeader,mergeProps({key:"header"},ue,G,{onClick:C.value!=="month"?H:void 0}),{...S,default:void 0}),default:()=>createVNode(Fragment,null,[createVNode(VDatePickerControls,mergeProps(pe,{disabled:U.value,text:O.value,"onClick:next":j,"onClick:prev":z,"onClick:month":Q,"onClick:year":J}),null),createVNode(VFadeTransition,{hideOnLeave:!0},{default:()=>[C.value==="months"?createVNode(VDatePickerMonths,mergeProps({key:"date-picker-months"},Y,{modelValue:B.value,"onUpdate:modelValue":[ne=>B.value=ne,Z],min:L.value,max:F.value,year:A.value}),null):C.value==="year"?createVNode(VDatePickerYears,mergeProps({key:"date-picker-years"},q,{modelValue:A.value,"onUpdate:modelValue":[ne=>A.value=ne,re],min:L.value,max:F.value}),null):createVNode(VDatePickerMonth,mergeProps({key:"date-picker-month"},W,{modelValue:T.value,"onUpdate:modelValue":ne=>T.value=ne,month:B.value,"onUpdate:month":[ne=>B.value=ne,Z],year:A.value,"onUpdate:year":[ne=>A.value=ne,re],min:L.value,max:F.value}),null)]})]),actions:S.actions})}),{}}}),makeVEmptyStateProps=propsFactory({actionText:String,bgColor:String,color:String,icon:IconValue,image:String,justify:{type:String,default:"center"},headline:String,title:String,text:String,textWidth:{type:[Number,String],default:500},href:String,to:String,...makeComponentProps(),...makeDimensionProps(),...makeSizeProps({size:void 0}),...makeThemeProps()},"VEmptyState"),VEmptyState=genericComponent()({name:"VEmptyState",props:makeVEmptyStateProps(),emits:{"click:action":n=>!0},setup(n,r){let{emit:_,slots:S}=r;const{themeClasses:E}=provideTheme(n),{backgroundColorClasses:x,backgroundColorStyles:T}=useBackgroundColor(toRef(n,"bgColor")),{dimensionStyles:C}=useDimension(n),{displayClasses:I}=useDisplay();function B(A){_("click:action",A)}return useRender(()=>{const A=!!(S.actions||n.actionText),D=!!(S.headline||n.headline),N=!!(S.title||n.title),O=!!(S.text||n.text),M=!!(S.media||n.image||n.icon),L=n.size||(n.image?200:96);return createVNode("div",{class:["v-empty-state",{[`v-empty-state--${n.justify}`]:!0},E.value,x.value,I.value,n.class],style:[T.value,C.value,n.style]},[M&&createVNode("div",{key:"media",class:"v-empty-state__media"},[S.media?createVNode(VDefaultsProvider,{key:"media-defaults",defaults:{VImg:{src:n.image,height:L},VIcon:{size:L,icon:n.icon}}},{default:()=>[S.media()]}):createVNode(Fragment,null,[n.image?createVNode(VImg,{key:"image",src:n.image,height:L},null):n.icon?createVNode(VIcon,{key:"icon",color:n.color,size:L,icon:n.icon},null):void 0])]),D&&createVNode("div",{key:"headline",class:"v-empty-state__headline"},[S.headline?.()??n.headline]),N&&createVNode("div",{key:"title",class:"v-empty-state__title"},[S.title?.()??n.title]),O&&createVNode("div",{key:"text",class:"v-empty-state__text",style:{maxWidth:convertToUnit(n.textWidth)}},[S.text?.()??n.text]),S.default&&createVNode("div",{key:"content",class:"v-empty-state__content"},[S.default()]),A&&createVNode("div",{key:"actions",class:"v-empty-state__actions"},[createVNode(VDefaultsProvider,{defaults:{VBtn:{class:"v-empty-state__action-btn",color:n.color??"surface-variant",text:n.actionText}}},{default:()=>[S.actions?.({props:{onClick:B}})??createVNode(VBtn,{onClick:B},null)]})])])}),{}}}),VExpansionPanelSymbol=Symbol.for("vuetify:v-expansion-panel"),makeVExpansionPanelTextProps=propsFactory({...makeComponentProps(),...makeLazyProps()},"VExpansionPanelText"),VExpansionPanelText=genericComponent()({name:"VExpansionPanelText",props:makeVExpansionPanelTextProps(),setup(n,r){let{slots:_}=r;const S=inject$1(VExpansionPanelSymbol);if(!S)throw new Error("[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel");const{hasContent:E,onAfterLeave:x}=useLazy(n,S.isSelected);return useRender(()=>createVNode(VExpandTransition,{onAfterLeave:x},{default:()=>[withDirectives(createVNode("div",{class:["v-expansion-panel-text",n.class],style:n.style},[_.default&&E.value&&createVNode("div",{class:"v-expansion-panel-text__wrapper"},[_.default?.()])]),[[vShow,S.isSelected.value]])]})),{}}}),makeVExpansionPanelTitleProps=propsFactory({color:String,expandIcon:{type:IconValue,default:"$expand"},collapseIcon:{type:IconValue,default:"$collapse"},hideActions:Boolean,focusable:Boolean,static:Boolean,ripple:{type:[Boolean,Object],default:!1},readonly:Boolean,...makeComponentProps(),...makeDimensionProps()},"VExpansionPanelTitle"),VExpansionPanelTitle=genericComponent()({name:"VExpansionPanelTitle",directives:{Ripple},props:makeVExpansionPanelTitleProps(),setup(n,r){let{slots:_}=r;const S=inject$1(VExpansionPanelSymbol);if(!S)throw new Error("[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel");const{backgroundColorClasses:E,backgroundColorStyles:x}=useBackgroundColor(n,"color"),{dimensionStyles:T}=useDimension(n),C=computed(()=>({collapseIcon:n.collapseIcon,disabled:S.disabled.value,expanded:S.isSelected.value,expandIcon:n.expandIcon,readonly:n.readonly})),I=computed(()=>S.isSelected.value?n.collapseIcon:n.expandIcon);return useRender(()=>withDirectives(createVNode("button",{class:["v-expansion-panel-title",{"v-expansion-panel-title--active":S.isSelected.value,"v-expansion-panel-title--focusable":n.focusable,"v-expansion-panel-title--static":n.static},E.value,n.class],style:[x.value,T.value,n.style],type:"button",tabindex:S.disabled.value?-1:void 0,disabled:S.disabled.value,"aria-expanded":S.isSelected.value,onClick:n.readonly?void 0:S.toggle},[createVNode("span",{class:"v-expansion-panel-title__overlay"},null),_.default?.(C.value),!n.hideActions&&createVNode(VDefaultsProvider,{defaults:{VIcon:{icon:I.value}}},{default:()=>[createVNode("span",{class:"v-expansion-panel-title__icon"},[_.actions?.(C.value)??createVNode(VIcon,null,null)])]})]),[[resolveDirective("ripple"),n.ripple]])),{}}}),makeVExpansionPanelProps=propsFactory({title:String,text:String,bgColor:String,...makeElevationProps(),...makeGroupItemProps(),...makeRoundedProps(),...makeTagProps(),...makeVExpansionPanelTitleProps(),...makeVExpansionPanelTextProps()},"VExpansionPanel"),VExpansionPanel=genericComponent()({name:"VExpansionPanel",props:makeVExpansionPanelProps(),emits:{"group:selected":n=>!0},setup(n,r){let{slots:_}=r;const S=useGroupItem(n,VExpansionPanelSymbol),{backgroundColorClasses:E,backgroundColorStyles:x}=useBackgroundColor(n,"bgColor"),{elevationClasses:T}=useElevation(n),{roundedClasses:C}=useRounded(n),I=computed(()=>S?.disabled.value||n.disabled),B=computed(()=>S.group.items.value.reduce((N,O,M)=>(S.group.selected.value.includes(O.id)&&N.push(M),N),[])),A=computed(()=>{const N=S.group.items.value.findIndex(O=>O.id===S.id);return!S.isSelected.value&&B.value.some(O=>O-N===1)}),D=computed(()=>{const N=S.group.items.value.findIndex(O=>O.id===S.id);return!S.isSelected.value&&B.value.some(O=>O-N===-1)});return provide(VExpansionPanelSymbol,S),useRender(()=>{const N=!!(_.text||n.text),O=!!(_.title||n.title),M=VExpansionPanelTitle.filterProps(n),L=VExpansionPanelText.filterProps(n);return createVNode(n.tag,{class:["v-expansion-panel",{"v-expansion-panel--active":S.isSelected.value,"v-expansion-panel--before-active":A.value,"v-expansion-panel--after-active":D.value,"v-expansion-panel--disabled":I.value},C.value,E.value,n.class],style:[x.value,n.style]},{default:()=>[createVNode("div",{class:["v-expansion-panel__shadow",...T.value]},null),createVNode(VDefaultsProvider,{defaults:{VExpansionPanelTitle:{...M},VExpansionPanelText:{...L}}},{default:()=>[O&&createVNode(VExpansionPanelTitle,{key:"title"},{default:()=>[_.title?_.title():n.title]}),N&&createVNode(VExpansionPanelText,{key:"text"},{default:()=>[_.text?_.text():n.text]}),_.default?.()]})]})}),{groupItem:S}}}),allowedVariants=["default","accordion","inset","popout"],makeVExpansionPanelsProps=propsFactory({flat:Boolean,...makeGroupProps(),...pick(makeVExpansionPanelProps(),["bgColor","collapseIcon","color","eager","elevation","expandIcon","focusable","hideActions","readonly","ripple","rounded","tile","static"]),...makeThemeProps(),...makeComponentProps(),...makeTagProps(),variant:{type:String,default:"default",validator:n=>allowedVariants.includes(n)}},"VExpansionPanels"),VExpansionPanels=genericComponent()({name:"VExpansionPanels",props:makeVExpansionPanelsProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{next:S,prev:E}=useGroup(n,VExpansionPanelSymbol),{themeClasses:x}=provideTheme(n),T=computed(()=>n.variant&&`v-expansion-panels--variant-${n.variant}`);return provideDefaults({VExpansionPanel:{bgColor:toRef(n,"bgColor"),collapseIcon:toRef(n,"collapseIcon"),color:toRef(n,"color"),eager:toRef(n,"eager"),elevation:toRef(n,"elevation"),expandIcon:toRef(n,"expandIcon"),focusable:toRef(n,"focusable"),hideActions:toRef(n,"hideActions"),readonly:toRef(n,"readonly"),ripple:toRef(n,"ripple"),rounded:toRef(n,"rounded"),static:toRef(n,"static")}}),useRender(()=>createVNode(n.tag,{class:["v-expansion-panels",{"v-expansion-panels--flat":n.flat,"v-expansion-panels--tile":n.tile},x.value,T.value,n.class],style:n.style},{default:()=>[_.default?.({prev:E,next:S})]})),{next:S,prev:E}}}),makeVFabProps=propsFactory({app:Boolean,appear:Boolean,extended:Boolean,layout:Boolean,offset:Boolean,modelValue:{type:Boolean,default:!0},...omit(makeVBtnProps({active:!0}),["location"]),...makeLayoutItemProps(),...makeLocationProps(),...makeTransitionProps({transition:"fab-transition"})},"VFab"),VFab=genericComponent()({name:"VFab",props:makeVFabProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),E=shallowRef(56),x=ref$2(),{resizeRef:T}=useResizeObserver(D=>{D.length&&(E.value=D[0].target.clientHeight)}),C=computed(()=>n.app||n.absolute),I=computed(()=>C.value?n.location?.split(" ").shift()??"bottom":!1),B=computed(()=>C.value?n.location?.split(" ")[1]??"end":!1);useToggleScope(()=>n.app,()=>{const D=useLayoutItem({id:n.name,order:computed(()=>parseInt(n.order,10)),position:I,layoutSize:computed(()=>n.layout?E.value+24:0),elementSize:computed(()=>E.value+24),active:computed(()=>n.app&&S.value),absolute:toRef(n,"absolute")});watchEffect(()=>{x.value=D.layoutItemStyles.value})});const A=ref$2();return useRender(()=>{const D=VBtn.filterProps(n);return createVNode("div",{ref:A,class:["v-fab",{"v-fab--absolute":n.absolute,"v-fab--app":!!n.app,"v-fab--extended":n.extended,"v-fab--offset":n.offset,[`v-fab--${I.value}`]:C.value,[`v-fab--${B.value}`]:C.value},n.class],style:[n.app?{...x.value}:{height:"inherit",width:void 0},n.style]},[createVNode("div",{class:"v-fab__container"},[createVNode(MaybeTransition,{appear:n.appear,transition:n.transition},{default:()=>[withDirectives(createVNode(VBtn,mergeProps({ref:T},D,{active:void 0,location:void 0}),_),[[vShow,n.active]])]})])])}),{}}}),makeVFileInputProps=propsFactory({chips:Boolean,counter:Boolean,counterSizeString:{type:String,default:"$vuetify.fileInput.counterSize"},counterString:{type:String,default:"$vuetify.fileInput.counter"},hideInput:Boolean,multiple:Boolean,showSize:{type:[Boolean,Number,String],default:!1,validator:n=>typeof n=="boolean"||[1e3,1024].includes(Number(n))},...makeVInputProps({prependIcon:"$file"}),modelValue:{type:[Array,Object],default:n=>n.multiple?[]:null,validator:n=>wrapInArray(n).every(r=>r!=null&&typeof r=="object")},...makeVFieldProps({clearable:!0})},"VFileInput"),VFileInput=genericComponent()({name:"VFileInput",inheritAttrs:!1,props:makeVFileInputProps(),emits:{"click:control":n=>!0,"mousedown:control":n=>!0,"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{t:x}=useLocale(),T=useProxiedModel(n,"modelValue",n.modelValue,ie=>wrapInArray(ie),ie=>!n.multiple&&Array.isArray(ie)?ie[0]:ie),{isFocused:C,focus:I,blur:B}=useFocus(n),A=computed(()=>typeof n.showSize!="boolean"?n.showSize:void 0),D=computed(()=>(T.value??[]).reduce((ie,pe)=>{let{size:ue=0}=pe;return ie+ue},0)),N=computed(()=>humanReadableFileSize(D.value,A.value)),O=computed(()=>(T.value??[]).map(ie=>{const{name:pe="",size:ue=0}=ie;return n.showSize?`${pe} (${humanReadableFileSize(ue,A.value)})`:pe})),M=computed(()=>{const ie=T.value?.length??0;return n.showSize?x(n.counterSizeString,ie,N.value):x(n.counterString,ie)}),L=ref$2(),F=ref$2(),U=ref$2(),j=computed(()=>C.value||n.active),z=computed(()=>["plain","underlined"].includes(n.variant));function H(){U.value!==document.activeElement&&U.value?.focus(),C.value||I()}function Q(ie){U.value?.click()}function J(ie){S("mousedown:control",ie)}function Z(ie){U.value?.click(),S("click:control",ie)}function re(ie){ie.stopPropagation(),H(),nextTick$2(()=>{T.value=[],callEvent(n["onClick:clear"],ie)})}return watch(T,ie=>{(!Array.isArray(ie)||!ie.length)&&U.value&&(U.value.value="")}),useRender(()=>{const ie=!!(E.counter||n.counter),pe=!!(ie||E.details),[ue,W]=filterInputAttrs(_),{modelValue:Y,...q}=VInput.filterProps(n),G=filterFieldProps(n);return createVNode(VInput,mergeProps({ref:L,modelValue:T.value,"onUpdate:modelValue":ne=>T.value=ne,class:["v-file-input",{"v-file-input--chips":!!n.chips,"v-file-input--hide":n.hideInput,"v-input--plain-underlined":z.value},n.class],style:n.style,"onClick:prepend":Q},ue,q,{centerAffix:!z.value,focused:C.value}),{...E,default:ne=>{let{id:ee,isDisabled:oe,isDirty:ae,isReadonly:se,isValid:te}=ne;return createVNode(VField,mergeProps({ref:F,"prepend-icon":n.prependIcon,onMousedown:J,onClick:Z,"onClick:clear":re,"onClick:prependInner":n["onClick:prependInner"],"onClick:appendInner":n["onClick:appendInner"]},G,{id:ee.value,active:j.value||ae.value,dirty:ae.value||n.dirty,disabled:oe.value,focused:C.value,error:te.value===!1}),{...E,default:X=>{let{props:{class:ce,...le}}=X;return createVNode(Fragment,null,[createVNode("input",mergeProps({ref:U,type:"file",readonly:se.value,disabled:oe.value,multiple:n.multiple,name:n.name,onClick:ye=>{ye.stopPropagation(),se.value&&ye.preventDefault(),H()},onChange:ye=>{if(!ye.target)return;const de=ye.target;T.value=[...de.files??[]]},onFocus:H,onBlur:B},le,W),null),createVNode("div",{class:ce},[!!T.value?.length&&!n.hideInput&&(E.selection?E.selection({fileNames:O.value,totalBytes:D.value,totalBytesReadable:N.value}):n.chips?O.value.map(ye=>createVNode(VChip,{key:ye,size:"small",text:ye},null)):O.value.join(", "))])])}})},details:pe?ne=>createVNode(Fragment,null,[E.details?.(ne),ie&&createVNode(Fragment,null,[createVNode("span",null,null),createVNode(VCounter,{active:!!T.value?.length,value:M.value,disabled:n.disabled},E.counter)])]):void 0})}),forwardRefs({},L,F,U)}}),makeVFormProps=propsFactory({...makeComponentProps(),...makeFormProps()},"VForm"),VForm=genericComponent()({name:"VForm",props:makeVFormProps(),emits:{"update:modelValue":n=>!0,submit:n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=createForm(n),x=ref$2();function T(I){I.preventDefault(),E.reset()}function C(I){const B=I,A=E.validate();B.then=A.then.bind(A),B.catch=A.catch.bind(A),B.finally=A.finally.bind(A),S("submit",B),B.defaultPrevented||A.then(D=>{let{valid:N}=D;N&&x.value?.submit()}),B.preventDefault()}return useRender(()=>createVNode("form",{ref:x,class:["v-form",n.class],style:n.style,novalidate:!0,onReset:T,onSubmit:C},[_.default?.(E)])),forwardRefs(E,x)}}),makeVHoverProps=propsFactory({disabled:Boolean,modelValue:{type:Boolean,default:null},...makeDelayProps()},"VHover"),VHover=genericComponent()({name:"VHover",props:makeVHoverProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),{runOpenDelay:E,runCloseDelay:x}=useDelay(n,T=>!n.disabled&&(S.value=T));return()=>_.default?.({isHovering:S.value,props:{onMouseenter:E,onMouseleave:x}})}}),makeVInfiniteScrollProps=propsFactory({color:String,direction:{type:String,default:"vertical",validator:n=>["vertical","horizontal"].includes(n)},side:{type:String,default:"end",validator:n=>["start","end","both"].includes(n)},mode:{type:String,default:"intersect",validator:n=>["intersect","manual"].includes(n)},margin:[Number,String],loadMoreText:{type:String,default:"$vuetify.infiniteScroll.loadMore"},emptyText:{type:String,default:"$vuetify.infiniteScroll.empty"},...makeDimensionProps(),...makeTagProps()},"VInfiniteScroll"),VInfiniteScrollIntersect=defineComponent({name:"VInfiniteScrollIntersect",props:{side:{type:String,required:!0},rootMargin:String},emits:{intersect:(n,r)=>!0},setup(n,r){let{emit:_}=r;const{intersectionRef:S,isIntersecting:E}=useIntersectionObserver();return watch(E,async x=>{_("intersect",n.side,x)}),useRender(()=>createVNode("div",{class:"v-infinite-scroll-intersect",style:{"--v-infinite-margin-size":n.rootMargin},ref:S},[createTextVNode(" ")])),{}}}),VInfiniteScroll=genericComponent()({name:"VInfiniteScroll",props:makeVInfiniteScrollProps(),emits:{load:n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=ref$2(),x=shallowRef("ok"),T=shallowRef("ok"),C=computed(()=>convertToUnit(n.margin)),I=shallowRef(!1);function B(Q){if(!E.value)return;const J=n.direction==="vertical"?"scrollTop":"scrollLeft";E.value[J]=Q}function A(){if(!E.value)return 0;const Q=n.direction==="vertical"?"scrollTop":"scrollLeft";return E.value[Q]}function D(){if(!E.value)return 0;const Q=n.direction==="vertical"?"scrollHeight":"scrollWidth";return E.value[Q]}function N(){if(!E.value)return 0;const Q=n.direction==="vertical"?"clientHeight":"clientWidth";return E.value[Q]}onMounted(()=>{E.value&&(n.side==="start"?B(D()):n.side==="both"&&B(D()/2-N()/2))});function O(Q,J){Q==="start"?x.value=J:Q==="end"&&(T.value=J)}function M(Q){return Q==="start"?x.value:T.value}let L=0;function F(Q,J){I.value=J,I.value&&U(Q)}function U(Q){if(n.mode!=="manual"&&!I.value)return;const J=M(Q);if(!E.value||["empty","loading"].includes(J))return;L=D(),O(Q,"loading");function Z(re){O(Q,re),nextTick$2(()=>{re==="empty"||re==="error"||(re==="ok"&&Q==="start"&&B(D()-L+A()),n.mode!=="manual"&&nextTick$2(()=>{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{U(Q)})})})}))})}S("load",{side:Q,done:Z})}const{t:j}=useLocale();function z(Q,J){if(n.side!==Q&&n.side!=="both")return;const Z=()=>U(Q),re={side:Q,props:{onClick:Z,color:n.color}};return J==="error"?_.error?.(re):J==="empty"?_.empty?.(re)??createVNode("div",null,[j(n.emptyText)]):n.mode==="manual"?J==="loading"?_.loading?.(re)??createVNode(VProgressCircular,{indeterminate:!0,color:n.color},null):_["load-more"]?.(re)??createVNode(VBtn,{variant:"outlined",color:n.color,onClick:Z},{default:()=>[j(n.loadMoreText)]}):_.loading?.(re)??createVNode(VProgressCircular,{indeterminate:!0,color:n.color},null)}const{dimensionStyles:H}=useDimension(n);useRender(()=>{const Q=n.tag,J=n.side==="start"||n.side==="both",Z=n.side==="end"||n.side==="both",re=n.mode==="intersect";return createVNode(Q,{ref:E,class:["v-infinite-scroll",`v-infinite-scroll--${n.direction}`,{"v-infinite-scroll--start":J,"v-infinite-scroll--end":Z}],style:H.value},{default:()=>[createVNode("div",{class:"v-infinite-scroll__side"},[z("start",x.value)]),J&&re&&createVNode(VInfiniteScrollIntersect,{key:"start",side:"start",onIntersect:F,rootMargin:C.value},null),_.default?.(),Z&&re&&createVNode(VInfiniteScrollIntersect,{key:"end",side:"end",onIntersect:F,rootMargin:C.value},null),createVNode("div",{class:"v-infinite-scroll__side"},[z("end",T.value)])]})})}}),VItemGroupSymbol=Symbol.for("vuetify:v-item-group"),makeVItemGroupProps=propsFactory({...makeComponentProps(),...makeGroupProps({selectedClass:"v-item--selected"}),...makeTagProps(),...makeThemeProps()},"VItemGroup"),VItemGroup=genericComponent()({name:"VItemGroup",props:makeVItemGroupProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n),{isSelected:E,select:x,next:T,prev:C,selected:I}=useGroup(n,VItemGroupSymbol);return()=>createVNode(n.tag,{class:["v-item-group",S.value,n.class],style:n.style},{default:()=>[_.default?.({isSelected:E,select:x,next:T,prev:C,selected:I.value})]})}}),VItem=genericComponent()({name:"VItem",props:makeGroupItemProps(),emits:{"group:selected":n=>!0},setup(n,r){let{slots:_}=r;const{isSelected:S,select:E,toggle:x,selectedClass:T,value:C,disabled:I}=useGroupItem(n,VItemGroupSymbol);return()=>_.default?.({isSelected:S.value,selectedClass:T.value,select:E,toggle:x,value:C.value,disabled:I.value})}}),VKbd=createSimpleFunctional("v-kbd"),makeVLayoutProps=propsFactory({...makeComponentProps(),...makeDimensionProps(),...makeLayoutProps()},"VLayout"),VLayout=genericComponent()({name:"VLayout",props:makeVLayoutProps(),setup(n,r){let{slots:_}=r;const{layoutClasses:S,layoutStyles:E,getLayoutItem:x,items:T,layoutRef:C}=createLayout(n),{dimensionStyles:I}=useDimension(n);return useRender(()=>createVNode("div",{ref:C,class:[S.value,n.class],style:[I.value,E.value,n.style]},[_.default?.()])),{getLayoutItem:x,items:T}}}),makeVLayoutItemProps=propsFactory({position:{type:String,required:!0},size:{type:[Number,String],default:300},modelValue:Boolean,...makeComponentProps(),...makeLayoutItemProps()},"VLayoutItem"),VLayoutItem=genericComponent()({name:"VLayoutItem",props:makeVLayoutItemProps(),setup(n,r){let{slots:_}=r;const{layoutItemStyles:S}=useLayoutItem({id:n.name,order:computed(()=>parseInt(n.order,10)),position:toRef(n,"position"),elementSize:toRef(n,"size"),layoutSize:toRef(n,"size"),active:toRef(n,"modelValue"),absolute:toRef(n,"absolute")});return()=>createVNode("div",{class:["v-layout-item",n.class],style:[S.value,n.style]},[_.default?.()])}}),makeVLazyProps=propsFactory({modelValue:Boolean,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},...makeComponentProps(),...makeDimensionProps(),...makeTagProps(),...makeTransitionProps({transition:"fade-transition"})},"VLazy"),VLazy=genericComponent()({name:"VLazy",directives:{intersect:Intersect},props:makeVLazyProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{dimensionStyles:S}=useDimension(n),E=useProxiedModel(n,"modelValue");function x(T){E.value||(E.value=T)}return useRender(()=>withDirectives(createVNode(n.tag,{class:["v-lazy",n.class],style:[S.value,n.style]},{default:()=>[E.value&&createVNode(MaybeTransition,{transition:n.transition,appear:!0},{default:()=>[_.default?.()]})]}),[[resolveDirective("intersect"),{handler:x,options:n.options},null]])),{}}}),makeVLocaleProviderProps=propsFactory({locale:String,fallbackLocale:String,messages:Object,rtl:{type:Boolean,default:void 0},...makeComponentProps()},"VLocaleProvider"),VLocaleProvider=genericComponent()({name:"VLocaleProvider",props:makeVLocaleProviderProps(),setup(n,r){let{slots:_}=r;const{rtlClasses:S}=provideLocale(n);return useRender(()=>createVNode("div",{class:["v-locale-provider",S.value,n.class],style:n.style},[_.default?.()])),{}}});function useSticky(n){let{rootEl:r,isSticky:_,layoutItemStyles:S}=n;const E=shallowRef(!1),x=shallowRef(0),T=computed(()=>{const B=typeof E.value=="boolean"?"top":E.value;return[_.value?{top:"auto",bottom:"auto",height:void 0}:void 0,E.value?{[B]:convertToUnit(x.value)}:{top:S.value.top}]});onMounted(()=>{watch(_,B=>{B?window.addEventListener("scroll",I,{passive:!0}):window.removeEventListener("scroll",I)},{immediate:!0})}),onBeforeUnmount(()=>{window.removeEventListener("scroll",I)});let C=0;function I(){const B=C>window.scrollY?"up":"down",A=r.value.getBoundingClientRect(),D=parseFloat(S.value.top??0),N=window.scrollY-Math.max(0,x.value-D),O=A.height+Math.max(x.value,D)-window.scrollY-window.innerHeight,M=parseFloat(getComputedStyle(r.value).getPropertyValue("--v-body-scroll-y"))||0;A.height0;_--){if(n[_].t===n[_-1].t)continue;const S=kineticEnergyToVelocity(r),E=(n[_].d-n[_-1].d)/(n[_].t-n[_-1].t);r+=(E-S)*Math.abs(E),_===n.length-1&&(r*=.5)}return kineticEnergyToVelocity(r)*1e3}function useVelocity(){const n={};function r(E){Array.from(E.changedTouches).forEach(x=>{(n[x.identifier]??(n[x.identifier]=new CircularBuffer(HISTORY))).push([E.timeStamp,x])})}function _(E){Array.from(E.changedTouches).forEach(x=>{delete n[x.identifier]})}function S(E){const x=n[E]?.values().reverse();if(!x)throw new Error(`No samples for touch id ${E}`);const T=x[0],C=[],I=[];for(const B of x){if(T[0]-B[0]>HORIZON)break;C.push({t:B[0],d:B[1].clientX}),I.push({t:B[0],d:B[1].clientY})}return{x:calculateImpulseVelocity(C),y:calculateImpulseVelocity(I),get direction(){const{x:B,y:A}=this,[D,N]=[Math.abs(B),Math.abs(A)];return D>N&&B>=0?"right":D>N&&B<=0?"left":N>D&&A>=0?"down":N>D&&A<=0?"up":oops$1()}}}return{addMovement:r,endTouch:_,getVelocity:S}}function oops$1(){throw new Error}function useTouch(n){let{el:r,isActive:_,isTemporary:S,width:E,touchless:x,position:T}=n;onMounted(()=>{window.addEventListener("touchstart",j,{passive:!0}),window.addEventListener("touchmove",z,{passive:!1}),window.addEventListener("touchend",H,{passive:!0})}),onBeforeUnmount(()=>{window.removeEventListener("touchstart",j),window.removeEventListener("touchmove",z),window.removeEventListener("touchend",H)});const C=computed(()=>["left","right"].includes(T.value)),{addMovement:I,endTouch:B,getVelocity:A}=useVelocity();let D=!1;const N=shallowRef(!1),O=shallowRef(0),M=shallowRef(0);let L;function F(J,Z){return(T.value==="left"?J:T.value==="right"?document.documentElement.clientWidth-J:T.value==="top"?J:T.value==="bottom"?document.documentElement.clientHeight-J:oops())-(Z?E.value:0)}function U(J){let Z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const re=T.value==="left"?(J-M.value)/E.value:T.value==="right"?(document.documentElement.clientWidth-J-M.value)/E.value:T.value==="top"?(J-M.value)/E.value:T.value==="bottom"?(document.documentElement.clientHeight-J-M.value)/E.value:oops();return Z?Math.max(0,Math.min(1,re)):re}function j(J){if(x.value)return;const Z=J.changedTouches[0].clientX,re=J.changedTouches[0].clientY,ie=25,pe=T.value==="left"?Zdocument.documentElement.clientWidth-ie:T.value==="top"?redocument.documentElement.clientHeight-ie:oops(),ue=_.value&&(T.value==="left"?Zdocument.documentElement.clientWidth-E.value:T.value==="top"?redocument.documentElement.clientHeight-E.value:oops());(pe||ue||_.value&&S.value)&&(L=[Z,re],M.value=F(C.value?Z:re,_.value),O.value=U(C.value?Z:re),D=M.value>-20&&M.value<80,B(J),I(J))}function z(J){const Z=J.changedTouches[0].clientX,re=J.changedTouches[0].clientY;if(D){if(!J.cancelable){D=!1;return}const pe=Math.abs(Z-L[0]),ue=Math.abs(re-L[1]);(C.value?pe>ue&&pe>3:ue>pe&&ue>3)?(N.value=!0,D=!1):(C.value?ue:pe)>3&&(D=!1)}if(!N.value)return;J.preventDefault(),I(J);const ie=U(C.value?Z:re,!1);O.value=Math.max(0,Math.min(1,ie)),ie>1?M.value=F(C.value?Z:re,!0):ie<0&&(M.value=F(C.value?Z:re,!1))}function H(J){if(D=!1,!N.value)return;I(J),N.value=!1;const Z=A(J.changedTouches[0].identifier),re=Math.abs(Z.x),ie=Math.abs(Z.y);(C.value?re>ie&&re>400:ie>re&&ie>3)?_.value=Z.direction===({left:"right",right:"left",top:"down",bottom:"up"}[T.value]||oops()):_.value=O.value>.5}const Q=computed(()=>N.value?{transform:T.value==="left"?`translateX(calc(-100% + ${O.value*E.value}px))`:T.value==="right"?`translateX(calc(100% - ${O.value*E.value}px))`:T.value==="top"?`translateY(calc(-100% + ${O.value*E.value}px))`:T.value==="bottom"?`translateY(calc(100% - ${O.value*E.value}px))`:oops(),transition:"none"}:void 0);return useToggleScope(N,()=>{const J=r.value?.style.transform??null,Z=r.value?.style.transition??null;watchEffect(()=>{r.value?.style.setProperty("transform",Q.value?.transform||"none"),r.value?.style.setProperty("transition",Q.value?.transition||null)}),onScopeDispose(()=>{r.value?.style.setProperty("transform",J),r.value?.style.setProperty("transition",Z)})}),{isDragging:N,dragProgress:O,dragStyles:Q}}function oops(){throw new Error}const locations=["start","end","left","right","top","bottom"],makeVNavigationDrawerProps=propsFactory({color:String,disableResizeWatcher:Boolean,disableRouteWatcher:Boolean,expandOnHover:Boolean,floating:Boolean,modelValue:{type:Boolean,default:null},permanent:Boolean,rail:{type:Boolean,default:null},railWidth:{type:[Number,String],default:56},scrim:{type:[Boolean,String],default:!0},image:String,temporary:Boolean,persistent:Boolean,touchless:Boolean,width:{type:[Number,String],default:256},location:{type:String,default:"start",validator:n=>locations.includes(n)},sticky:Boolean,...makeBorderProps(),...makeComponentProps(),...makeDelayProps(),...makeDisplayProps({mobile:null}),...makeElevationProps(),...makeLayoutItemProps(),...makeRoundedProps(),...makeTagProps({tag:"nav"}),...makeThemeProps()},"VNavigationDrawer"),VNavigationDrawer=genericComponent()({name:"VNavigationDrawer",props:makeVNavigationDrawerProps(),emits:{"update:modelValue":n=>!0,"update:rail":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{isRtl:x}=useRtl(),{themeClasses:T}=provideTheme(n),{borderClasses:C}=useBorder(n),{backgroundColorClasses:I,backgroundColorStyles:B}=useBackgroundColor(toRef(n,"color")),{elevationClasses:A}=useElevation(n),{displayClasses:D,mobile:N}=useDisplay(n),{roundedClasses:O}=useRounded(n),M=useRouter(),L=useProxiedModel(n,"modelValue",null,te=>!!te),{ssrBootStyles:F}=useSsrBoot(),{scopeId:U}=useScopeId(),j=ref$2(),z=shallowRef(!1),{runOpenDelay:H,runCloseDelay:Q}=useDelay(n,te=>{z.value=te}),J=computed(()=>n.rail&&n.expandOnHover&&z.value?Number(n.width):Number(n.rail?n.railWidth:n.width)),Z=computed(()=>toPhysical(n.location,x.value)),re=computed(()=>n.persistent),ie=computed(()=>!n.permanent&&(N.value||n.temporary)),pe=computed(()=>n.sticky&&!ie.value&&Z.value!=="bottom");useToggleScope(()=>n.expandOnHover&&n.rail!=null,()=>{watch(z,te=>S("update:rail",!te))}),useToggleScope(()=>!n.disableResizeWatcher,()=>{watch(ie,te=>!n.permanent&&nextTick$2(()=>L.value=!te))}),useToggleScope(()=>!n.disableRouteWatcher&&!!M,()=>{watch(M.currentRoute,()=>ie.value&&(L.value=!1))}),watch(()=>n.permanent,te=>{te&&(L.value=!0)}),n.modelValue==null&&!ie.value&&(L.value=n.permanent||!N.value);const{isDragging:ue,dragProgress:W}=useTouch({el:j,isActive:L,isTemporary:ie,width:J,touchless:toRef(n,"touchless"),position:Z}),Y=computed(()=>{const te=ie.value?0:n.rail&&n.expandOnHover?Number(n.railWidth):J.value;return ue.value?te*W.value:te}),q=computed(()=>["top","bottom"].includes(n.location)?0:J.value),{layoutItemStyles:G,layoutItemScrimStyles:ne}=useLayoutItem({id:n.name,order:computed(()=>parseInt(n.order,10)),position:Z,layoutSize:Y,elementSize:q,active:computed(()=>L.value||ue.value),disableTransitions:computed(()=>ue.value),absolute:computed(()=>n.absolute||pe.value&&typeof ee.value!="string")}),{isStuck:ee,stickyStyles:oe}=useSticky({rootEl:j,isSticky:pe,layoutItemStyles:G}),ae=useBackgroundColor(computed(()=>typeof n.scrim=="string"?n.scrim:null)),se=computed(()=>({...ue.value?{opacity:W.value*.2,transition:"none"}:void 0,...ne.value}));return provideDefaults({VList:{bgColor:"transparent"}}),useRender(()=>{const te=E.image||n.image;return createVNode(Fragment,null,[createVNode(n.tag,mergeProps({ref:j,onMouseenter:H,onMouseleave:Q,class:["v-navigation-drawer",`v-navigation-drawer--${Z.value}`,{"v-navigation-drawer--expand-on-hover":n.expandOnHover,"v-navigation-drawer--floating":n.floating,"v-navigation-drawer--is-hovering":z.value,"v-navigation-drawer--rail":n.rail,"v-navigation-drawer--temporary":ie.value,"v-navigation-drawer--persistent":re.value,"v-navigation-drawer--active":L.value,"v-navigation-drawer--sticky":pe.value},T.value,I.value,C.value,D.value,A.value,O.value,n.class],style:[B.value,G.value,F.value,oe.value,n.style,["top","bottom"].includes(Z.value)?{height:"auto"}:{}]},U,_),{default:()=>[te&&createVNode("div",{key:"image",class:"v-navigation-drawer__img"},[E.image?createVNode(VDefaultsProvider,{key:"image-defaults",disabled:!n.image,defaults:{VImg:{alt:"",cover:!0,height:"inherit",src:n.image}}},E.image):createVNode(VImg,{key:"image-img",alt:"",cover:!0,height:"inherit",src:n.image},null)]),E.prepend&&createVNode("div",{class:"v-navigation-drawer__prepend"},[E.prepend?.()]),createVNode("div",{class:"v-navigation-drawer__content"},[E.default?.()]),E.append&&createVNode("div",{class:"v-navigation-drawer__append"},[E.append?.()])]}),createVNode(Transition,{name:"fade-transition"},{default:()=>[ie.value&&(ue.value||L.value)&&!!n.scrim&&createVNode("div",mergeProps({class:["v-navigation-drawer__scrim",ae.backgroundColorClasses.value],style:[se.value,ae.backgroundColorStyles.value],onClick:()=>{re.value||(L.value=!1)}},U),null)]})])}),{isStuck:ee}}}),VNoSsr=defineComponent({name:"VNoSsr",setup(n,r){let{slots:_}=r;const S=useHydration();return()=>S.value&&_.default?.()}}),makeVOtpInputProps=propsFactory({autofocus:Boolean,divider:String,focusAll:Boolean,label:{type:String,default:"$vuetify.input.otp"},length:{type:[Number,String],default:6},modelValue:{type:[Number,String],default:void 0},placeholder:String,type:{type:String,default:"number"},...makeDimensionProps(),...makeFocusProps(),...only(makeVFieldProps({variant:"outlined"}),["baseColor","bgColor","class","color","disabled","error","loading","rounded","style","theme","variant"])},"VOtpInput"),VOtpInput=genericComponent()({name:"VOtpInput",props:makeVOtpInputProps(),emits:{finish:n=>!0,"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const{dimensionStyles:x}=useDimension(n),{isFocused:T,focus:C,blur:I}=useFocus(n),B=useProxiedModel(n,"modelValue","",re=>re==null?[]:String(re).split(""),re=>re.join("")),{t:A}=useLocale(),D=computed(()=>Number(n.length)),N=computed(()=>Array(D.value).fill(0)),O=ref$2(-1),M=ref$2(),L=ref$2([]),F=computed(()=>L.value[O.value]);function U(){if(Z(F.value.value)){F.value.value="";return}const re=B.value.slice(),ie=F.value.value;re[O.value]=ie;let pe=null;O.value>B.value.length?pe=B.value.length+1:O.value+1!==D.value&&(pe="next"),B.value=re,pe&&focusChild(M.value,pe)}function j(re){const ie=B.value.slice(),pe=O.value;let ue=null;["ArrowLeft","ArrowRight","Backspace","Delete"].includes(re.key)&&(re.preventDefault(),re.key==="ArrowLeft"?ue="prev":re.key==="ArrowRight"?ue="next":["Backspace","Delete"].includes(re.key)&&(ie[O.value]="",B.value=ie,O.value>0&&re.key==="Backspace"?ue="prev":requestAnimationFrame(()=>{L.value[pe]?.select()})),requestAnimationFrame(()=>{ue!=null&&focusChild(M.value,ue)}))}function z(re,ie){ie.preventDefault(),ie.stopPropagation();const pe=ie?.clipboardData?.getData("Text").slice(0,D.value)??"";Z(pe)||(B.value=pe.split(""),L.value?.[re].blur())}function H(){B.value=[]}function Q(re,ie){C(),O.value=ie}function J(){I(),O.value=-1}function Z(re){return n.type==="number"&&/[^0-9]/g.test(re)}return provideDefaults({VField:{color:computed(()=>n.color),bgColor:computed(()=>n.color),baseColor:computed(()=>n.baseColor),disabled:computed(()=>n.disabled),error:computed(()=>n.error),variant:computed(()=>n.variant)}},{scoped:!0}),watch(B,re=>{re.length===D.value&&S("finish",re.join(""))},{deep:!0}),watch(O,re=>{re<0||nextTick$2(()=>{L.value[re]?.select()})}),useRender(()=>{const[re,ie]=filterInputAttrs(_);return createVNode("div",mergeProps({class:["v-otp-input",{"v-otp-input--divided":!!n.divider},n.class],style:[n.style]},re),[createVNode("div",{ref:M,class:"v-otp-input__content",style:[x.value]},[N.value.map((pe,ue)=>createVNode(Fragment,null,[n.divider&&ue!==0&&createVNode("span",{class:"v-otp-input__divider"},[n.divider]),createVNode(VField,{focused:T.value&&n.focusAll||O.value===ue,key:ue},{...E,loader:void 0,default:()=>createVNode("input",{ref:W=>L.value[ue]=W,"aria-label":A(n.label,ue+1),autofocus:ue===0&&n.autofocus,autocomplete:"one-time-code",class:["v-otp-input__field"],disabled:n.disabled,inputmode:n.type==="number"?"numeric":"text",min:n.type==="number"?0:void 0,maxlength:"1",placeholder:n.placeholder,type:n.type==="number"?"text":n.type,value:B.value[ue],onInput:U,onFocus:W=>Q(W,ue),onBlur:J,onKeydown:j,onPaste:W=>z(ue,W)},null)})])),createVNode("input",mergeProps({class:"v-otp-input-input",type:"hidden"},ie,{value:B.value.join("")}),null),createVNode(VOverlay,{contained:!0,"content-class":"v-otp-input__loader","model-value":!!n.loading,persistent:!0},{default:()=>[E.loader?.()??createVNode(VProgressCircular,{color:typeof n.loading=="boolean"?void 0:n.loading,indeterminate:!0,size:"24",width:"2"},null)]}),E.default?.()])])}),{blur:()=>{L.value?.some(re=>re.blur())},focus:()=>{L.value?.[0].focus()},reset:H,isFocused:T}}});function floor(n){return Math.floor(Math.abs(n))*Math.sign(n)}const makeVParallaxProps=propsFactory({scale:{type:[Number,String],default:.5},...makeComponentProps()},"VParallax"),VParallax=genericComponent()({name:"VParallax",props:makeVParallaxProps(),setup(n,r){let{slots:_}=r;const{intersectionRef:S,isIntersecting:E}=useIntersectionObserver(),{resizeRef:x,contentRect:T}=useResizeObserver(),{height:C}=useDisplay(),I=ref$2();watchEffect(()=>{S.value=x.value=I.value?.$el});let B;watch(E,O=>{O?(B=getScrollParent(S.value),B=B===document.scrollingElement?document:B,B.addEventListener("scroll",N,{passive:!0}),N()):B.removeEventListener("scroll",N)}),onBeforeUnmount(()=>{B?.removeEventListener("scroll",N)}),watch(C,N),watch(()=>T.value?.height,N);const A=computed(()=>1-clamp(+n.scale));let D=-1;function N(){E.value&&(cancelAnimationFrame(D),D=requestAnimationFrame(()=>{const O=(I.value?.$el).querySelector(".v-img__img");if(!O)return;const M=B instanceof Document?document.documentElement.clientHeight:B.clientHeight,L=B instanceof Document?window.scrollY:B.scrollTop,F=S.value.getBoundingClientRect().top+L,U=T.value.height,j=F+(U-M)/2,z=floor((L-j)*A.value),H=Math.max(1,(A.value*(M-U)+U)/U);O.style.setProperty("transform",`translateY(${z}px) scale(${H})`)}))}return useRender(()=>createVNode(VImg,{class:["v-parallax",{"v-parallax--active":E.value},n.class],style:n.style,ref:I,cover:!0,onLoadstart:N,onLoad:N},_)),{}}}),makeVRadioProps=propsFactory({...makeVSelectionControlProps({falseIcon:"$radioOff",trueIcon:"$radioOn"})},"VRadio"),VRadio=genericComponent()({name:"VRadio",props:makeVRadioProps(),setup(n,r){let{slots:_}=r;return useRender(()=>{const S=VSelectionControl.filterProps(n);return createVNode(VSelectionControl,mergeProps(S,{class:["v-radio",n.class],style:n.style,type:"radio"}),_)}),{}}}),makeVRadioGroupProps=propsFactory({height:{type:[Number,String],default:"auto"},...makeVInputProps(),...omit(makeSelectionControlGroupProps(),["multiple"]),trueIcon:{type:IconValue,default:"$radioOn"},falseIcon:{type:IconValue,default:"$radioOff"},type:{type:String,default:"radio"}},"VRadioGroup"),VRadioGroup=genericComponent()({name:"VRadioGroup",inheritAttrs:!1,props:makeVRadioGroupProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const E=getUid(),x=computed(()=>n.id||`radio-group-${E}`),T=useProxiedModel(n,"modelValue");return useRender(()=>{const[C,I]=filterInputAttrs(_),B=VInput.filterProps(n),A=VSelectionControl.filterProps(n),D=S.label?S.label({label:n.label,props:{for:x.value}}):n.label;return createVNode(VInput,mergeProps({class:["v-radio-group",n.class],style:n.style},C,B,{modelValue:T.value,"onUpdate:modelValue":N=>T.value=N,id:x.value}),{...S,default:N=>{let{id:O,messagesId:M,isDisabled:L,isReadonly:F}=N;return createVNode(Fragment,null,[D&&createVNode(VLabel,{id:O.value},{default:()=>[D]}),createVNode(VSelectionControlGroup,mergeProps(A,{id:O.value,"aria-describedby":M.value,defaultsTarget:"VRadio",trueIcon:n.trueIcon,falseIcon:n.falseIcon,type:n.type,disabled:L.value,readonly:F.value,"aria-labelledby":D?O.value:void 0,multiple:!1},I,{modelValue:T.value,"onUpdate:modelValue":U=>T.value=U}),S)])}})}),{}}}),makeVRangeSliderProps=propsFactory({...makeFocusProps(),...makeVInputProps(),...makeSliderProps(),strict:Boolean,modelValue:{type:Array,default:()=>[0,0]}},"VRangeSlider"),VRangeSlider=genericComponent()({name:"VRangeSlider",props:makeVRangeSliderProps(),emits:{"update:focused":n=>!0,"update:modelValue":n=>!0,end:n=>!0,start:n=>!0},setup(n,r){let{slots:_,emit:S}=r;const E=ref$2(),x=ref$2(),T=ref$2(),{rtlClasses:C}=useRtl();function I(pe){if(!E.value||!x.value)return;const ue=getOffset(pe,E.value.$el,n.direction),W=getOffset(pe,x.value.$el,n.direction),Y=Math.abs(ue),q=Math.abs(W);return Ype?.length?pe.map(ue=>B.roundValue(ue)):[0,0]),{activeThumbRef:D,hasLabels:N,max:O,min:M,mousePressed:L,onSliderMousedown:F,onSliderTouchstart:U,position:j,trackContainerRef:z,readonly:H}=useSlider({props:n,steps:B,onSliderStart:()=>{S("start",A.value)},onSliderEnd:pe=>{let{value:ue}=pe;const W=D.value===E.value?.$el?[ue,A.value[1]]:[A.value[0],ue];!n.strict&&W[0]{let{value:ue}=pe;const[W,Y]=A.value;!n.strict&&W===Y&&W!==M.value&&(D.value=ue>W?x.value?.$el:E.value?.$el,D.value?.focus()),D.value===E.value?.$el?A.value=[Math.min(ue,Y),Y]:A.value=[W,Math.max(W,ue)]},getActiveThumb:I}),{isFocused:Q,focus:J,blur:Z}=useFocus(n),re=computed(()=>j(A.value[0])),ie=computed(()=>j(A.value[1]));return useRender(()=>{const pe=VInput.filterProps(n),ue=!!(n.label||_.label||_.prepend);return createVNode(VInput,mergeProps({class:["v-slider","v-range-slider",{"v-slider--has-labels":!!_["tick-label"]||N.value,"v-slider--focused":Q.value,"v-slider--pressed":L.value,"v-slider--disabled":n.disabled},C.value,n.class],style:n.style,ref:T},pe,{focused:Q.value}),{..._,prepend:ue?W=>createVNode(Fragment,null,[_.label?.(W)??(n.label?createVNode(VLabel,{class:"v-slider__label",text:n.label},null):void 0),_.prepend?.(W)]):void 0,default:W=>{let{id:Y,messagesId:q}=W;return createVNode("div",{class:"v-slider__container",onMousedown:H.value?void 0:F,onTouchstartPassive:H.value?void 0:U},[createVNode("input",{id:`${Y.value}_start`,name:n.name||Y.value,disabled:!!n.disabled,readonly:!!n.readonly,tabindex:"-1",value:A.value[0]},null),createVNode("input",{id:`${Y.value}_stop`,name:n.name||Y.value,disabled:!!n.disabled,readonly:!!n.readonly,tabindex:"-1",value:A.value[1]},null),createVNode(VSliderTrack,{ref:z,start:re.value,stop:ie.value},{"tick-label":_["tick-label"]}),createVNode(VSliderThumb,{ref:E,"aria-describedby":q.value,focused:Q&&D.value===E.value?.$el,modelValue:A.value[0],"onUpdate:modelValue":G=>A.value=[G,A.value[1]],onFocus:G=>{J(),D.value=E.value?.$el,A.value[0]===A.value[1]&&A.value[1]===M.value&&G.relatedTarget!==x.value?.$el&&(E.value?.$el.blur(),x.value?.$el.focus())},onBlur:()=>{Z(),D.value=void 0},min:M.value,max:A.value[1],position:re.value,ripple:n.ripple},{"thumb-label":_["thumb-label"]}),createVNode(VSliderThumb,{ref:x,"aria-describedby":q.value,focused:Q&&D.value===x.value?.$el,modelValue:A.value[1],"onUpdate:modelValue":G=>A.value=[A.value[0],G],onFocus:G=>{J(),D.value=x.value?.$el,A.value[0]===A.value[1]&&A.value[0]===O.value&&G.relatedTarget!==E.value?.$el&&(x.value?.$el.blur(),E.value?.$el.focus())},onBlur:()=>{Z(),D.value=void 0},min:A.value[0],max:O.value,position:ie.value,ripple:n.ripple},{"thumb-label":_["thumb-label"]})])}})}),{}}}),makeVRatingProps=propsFactory({name:String,itemAriaLabel:{type:String,default:"$vuetify.rating.ariaLabel.item"},activeColor:String,color:String,clearable:Boolean,disabled:Boolean,emptyIcon:{type:IconValue,default:"$ratingEmpty"},fullIcon:{type:IconValue,default:"$ratingFull"},halfIncrements:Boolean,hover:Boolean,length:{type:[Number,String],default:5},readonly:Boolean,modelValue:{type:[Number,String],default:0},itemLabels:Array,itemLabelPosition:{type:String,default:"top",validator:n=>["top","bottom"].includes(n)},ripple:Boolean,...makeComponentProps(),...makeDensityProps(),...makeSizeProps(),...makeTagProps(),...makeThemeProps()},"VRating"),VRating=genericComponent()({name:"VRating",props:makeVRatingProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{t:S}=useLocale(),{themeClasses:E}=provideTheme(n),x=useProxiedModel(n,"modelValue"),T=computed(()=>clamp(parseFloat(x.value),0,+n.length)),C=computed(()=>createRange(Number(n.length),1)),I=computed(()=>C.value.flatMap(L=>n.halfIncrements?[L-.5,L]:[L])),B=shallowRef(-1),A=computed(()=>I.value.map(L=>{const F=n.hover&&B.value>-1,U=T.value>=L,j=B.value>=L,H=(F?j:U)?n.fullIcon:n.emptyIcon,Q=n.activeColor??n.color,J=U||j?Q:n.color;return{isFilled:U,isHovered:j,icon:H,color:J}})),D=computed(()=>[0,...I.value].map(L=>{function F(){B.value=L}function U(){B.value=-1}function j(){n.disabled||n.readonly||(x.value=T.value===L&&n.clearable?0:L)}return{onMouseenter:n.hover?F:void 0,onMouseleave:n.hover?U:void 0,onClick:j}})),N=computed(()=>n.name??`v-rating-${getUid()}`);function O(L){let{value:F,index:U,showStar:j=!0}=L;const{onMouseenter:z,onMouseleave:H,onClick:Q}=D.value[U+1],J=`${N.value}-${String(F).replace(".","-")}`,Z={color:A.value[U]?.color,density:n.density,disabled:n.disabled,icon:A.value[U]?.icon,ripple:n.ripple,size:n.size,variant:"plain"};return createVNode(Fragment,null,[createVNode("label",{for:J,class:{"v-rating__item--half":n.halfIncrements&&F%1>0,"v-rating__item--full":n.halfIncrements&&F%1===0},onMouseenter:z,onMouseleave:H,onClick:Q},[createVNode("span",{class:"v-rating__hidden"},[S(n.itemAriaLabel,F,n.length)]),j?_.item?_.item({...A.value[U],props:Z,value:F,index:U,rating:T.value}):createVNode(VBtn,mergeProps({"aria-label":S(n.itemAriaLabel,F,n.length)},Z),null):void 0]),createVNode("input",{class:"v-rating__hidden",name:N.value,id:J,type:"radio",value:F,checked:T.value===F,tabindex:-1,readonly:n.readonly,disabled:n.disabled},null)])}function M(L){return _["item-label"]?_["item-label"](L):L.label?createVNode("span",null,[L.label]):createVNode("span",null,[createTextVNode(" ")])}return useRender(()=>{const L=!!n.itemLabels?.length||_["item-label"];return createVNode(n.tag,{class:["v-rating",{"v-rating--hover":n.hover,"v-rating--readonly":n.readonly},E.value,n.class],style:n.style},{default:()=>[createVNode(O,{value:0,index:-1,showStar:!1},null),C.value.map((F,U)=>createVNode("div",{class:"v-rating__wrapper"},[L&&n.itemLabelPosition==="top"?M({value:F,index:U,label:n.itemLabels?.[U]}):void 0,createVNode("div",{class:"v-rating__item"},[n.halfIncrements?createVNode(Fragment,null,[createVNode(O,{value:F-.5,index:U*2},null),createVNode(O,{value:F,index:U*2+1},null)]):createVNode(O,{value:F,index:U},null)]),L&&n.itemLabelPosition==="bottom"?M({value:F,index:U,label:n.itemLabels?.[U]}):void 0]))]})}),{}}}),rootTypes={actions:"button@2",article:"heading, paragraph",avatar:"avatar",button:"button",card:"image, heading","card-avatar":"image, list-item-avatar",chip:"chip","date-picker":"list-item, heading, divider, date-picker-options, date-picker-days, actions","date-picker-options":"text, avatar@2","date-picker-days":"avatar@28",divider:"divider",heading:"heading",image:"image","list-item":"text","list-item-avatar":"avatar, text","list-item-two-line":"sentences","list-item-avatar-two-line":"avatar, sentences","list-item-three-line":"paragraph","list-item-avatar-three-line":"avatar, paragraph",ossein:"ossein",paragraph:"text@3",sentences:"text@2",subtitle:"text",table:"table-heading, table-thead, table-tbody, table-tfoot","table-heading":"chip, text","table-thead":"heading@6","table-tbody":"table-row-divider@6","table-row-divider":"table-row, divider","table-row":"text@6","table-tfoot":"text@2, avatar@2",text:"text"};function genBone(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return createVNode("div",{class:["v-skeleton-loader__bone",`v-skeleton-loader__${n}`]},[r])}function genBones(n){const[r,_]=n.split("@");return Array.from({length:_}).map(()=>genStructure(r))}function genStructure(n){let r=[];if(!n)return r;const _=rootTypes[n];if(n!==_){if(n.includes(","))return mapBones(n);if(n.includes("@"))return genBones(n);_.includes(",")?r=mapBones(_):_.includes("@")?r=genBones(_):_&&r.push(genStructure(_))}return[genBone(n,r)]}function mapBones(n){return n.replace(/\s/g,"").split(",").map(genStructure)}const makeVSkeletonLoaderProps=propsFactory({boilerplate:Boolean,color:String,loading:Boolean,loadingText:{type:String,default:"$vuetify.loading"},type:{type:[String,Array],default:"ossein"},...makeDimensionProps(),...makeElevationProps(),...makeThemeProps()},"VSkeletonLoader"),VSkeletonLoader=genericComponent()({name:"VSkeletonLoader",props:makeVSkeletonLoaderProps(),setup(n,r){let{slots:_}=r;const{backgroundColorClasses:S,backgroundColorStyles:E}=useBackgroundColor(toRef(n,"color")),{dimensionStyles:x}=useDimension(n),{elevationClasses:T}=useElevation(n),{themeClasses:C}=provideTheme(n),{t:I}=useLocale(),B=computed(()=>genStructure(wrapInArray(n.type).join(",")));return useRender(()=>{const A=!_.default||n.loading,D=n.boilerplate||!A?{}:{ariaLive:"polite",ariaLabel:I(n.loadingText),role:"alert"};return createVNode("div",mergeProps({class:["v-skeleton-loader",{"v-skeleton-loader--boilerplate":n.boilerplate},C.value,S.value,T.value],style:[E.value,A?x.value:{}]},D),[A?B.value:_.default?.()])}),{}}}),VSlideGroupItem=genericComponent()({name:"VSlideGroupItem",props:makeGroupItemProps(),emits:{"group:selected":n=>!0},setup(n,r){let{slots:_}=r;const S=useGroupItem(n,VSlideGroupSymbol);return()=>_.default?.({isSelected:S.isSelected.value,select:S.select,toggle:S.toggle,selectedClass:S.selectedClass.value})}});function useCountdown(n){const r=shallowRef(n());let _=-1;function S(){clearInterval(_)}function E(){S(),nextTick$2(()=>r.value=n())}function x(T){const C=T?getComputedStyle(T):{transitionDuration:.2},I=parseFloat(C.transitionDuration)*1e3||200;if(S(),r.value<=0)return;const B=performance.now();_=window.setInterval(()=>{const A=performance.now()-B+I;r.value=Math.max(n()-A,0),r.value<=0&&S()},I)}return onScopeDispose(S),{clear:S,time:r,start:x,reset:E}}const makeVSnackbarProps=propsFactory({multiLine:Boolean,text:String,timer:[Boolean,String],timeout:{type:[Number,String],default:5e3},vertical:Boolean,...makeLocationProps({location:"bottom"}),...makePositionProps(),...makeRoundedProps(),...makeVariantProps(),...makeThemeProps(),...omit(makeVOverlayProps({transition:"v-snackbar-transition"}),["persistent","noClickAnimation","scrim","scrollStrategy"])},"VSnackbar"),VSnackbar=genericComponent()({name:"VSnackbar",props:makeVSnackbarProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),{positionClasses:E}=usePosition(n),{scopeId:x}=useScopeId(),{themeClasses:T}=provideTheme(n),{colorClasses:C,colorStyles:I,variantClasses:B}=useVariant(n),{roundedClasses:A}=useRounded(n),D=useCountdown(()=>Number(n.timeout)),N=ref$2(),O=ref$2(),M=shallowRef(!1),L=shallowRef(0),F=ref$2(),U=inject$1(VuetifyLayoutKey,void 0);useToggleScope(()=>!!U,()=>{const ue=useLayout();watchEffect(()=>{F.value=ue.mainStyles.value})}),watch(S,z),watch(()=>n.timeout,z),onMounted(()=>{S.value&&z()});let j=-1;function z(){D.reset(),window.clearTimeout(j);const ue=Number(n.timeout);if(!S.value||ue===-1)return;const W=refElement(O.value);D.start(W),j=window.setTimeout(()=>{S.value=!1},ue)}function H(){D.reset(),window.clearTimeout(j)}function Q(){M.value=!0,H()}function J(){M.value=!1,z()}function Z(ue){L.value=ue.touches[0].clientY}function re(ue){Math.abs(L.value-ue.changedTouches[0].clientY)>50&&(S.value=!1)}function ie(){M.value&&J()}const pe=computed(()=>n.location.split(" ").reduce((ue,W)=>(ue[`v-snackbar--${W}`]=!0,ue),{}));return useRender(()=>{const ue=VOverlay.filterProps(n),W=!!(_.default||_.text||n.text);return createVNode(VOverlay,mergeProps({ref:N,class:["v-snackbar",{"v-snackbar--active":S.value,"v-snackbar--multi-line":n.multiLine&&!n.vertical,"v-snackbar--timer":!!n.timer,"v-snackbar--vertical":n.vertical},pe.value,E.value,n.class],style:[F.value,n.style]},ue,{modelValue:S.value,"onUpdate:modelValue":Y=>S.value=Y,contentProps:mergeProps({class:["v-snackbar__wrapper",T.value,C.value,A.value,B.value],style:[I.value],onPointerenter:Q,onPointerleave:J},ue.contentProps),persistent:!0,noClickAnimation:!0,scrim:!1,scrollStrategy:"none",_disableGlobalStack:!0,onTouchstartPassive:Z,onTouchend:re,onAfterLeave:ie},x),{default:()=>[genOverlays(!1,"v-snackbar"),n.timer&&!M.value&&createVNode("div",{key:"timer",class:"v-snackbar__timer"},[createVNode(VProgressLinear,{ref:O,color:typeof n.timer=="string"?n.timer:"info",max:n.timeout,"model-value":D.time.value},null)]),W&&createVNode("div",{key:"content",class:"v-snackbar__content",role:"status","aria-live":"polite"},[_.text?.()??n.text,_.default?.()]),_.actions&&createVNode(VDefaultsProvider,{defaults:{VBtn:{variant:"text",ripple:!1,slim:!0}}},{default:()=>[createVNode("div",{class:"v-snackbar__actions"},[_.actions({isActive:S})])]})],activator:_.activator})}),forwardRefs({},N)}}),makeLineProps=propsFactory({autoDraw:Boolean,autoDrawDuration:[Number,String],autoDrawEasing:{type:String,default:"ease"},color:String,gradient:{type:Array,default:()=>[]},gradientDirection:{type:String,validator:n=>["top","bottom","left","right"].includes(n),default:"top"},height:{type:[String,Number],default:75},labels:{type:Array,default:()=>[]},labelSize:{type:[Number,String],default:7},lineWidth:{type:[String,Number],default:4},id:String,itemValue:{type:String,default:"value"},modelValue:{type:Array,default:()=>[]},min:[String,Number],max:[String,Number],padding:{type:[String,Number],default:8},showLabels:Boolean,smooth:Boolean,width:{type:[Number,String],default:300}},"Line"),makeVBarlineProps=propsFactory({autoLineWidth:Boolean,...makeLineProps()},"VBarline"),VBarline=genericComponent()({name:"VBarline",props:makeVBarlineProps(),setup(n,r){let{slots:_}=r;const S=getUid(),E=computed(()=>n.id||`barline-${S}`),x=computed(()=>Number(n.autoDrawDuration)||500),T=computed(()=>!!(n.showLabels||n.labels.length>0||_?.label)),C=computed(()=>parseFloat(n.lineWidth)||4),I=computed(()=>Math.max(n.modelValue.length*C.value,Number(n.width))),B=computed(()=>({minX:0,maxX:I.value,minY:0,maxY:parseInt(n.height,10)})),A=computed(()=>n.modelValue.map(L=>getPropertyFromItem(L,n.itemValue,L)));function D(L,F){const{minX:U,maxX:j,minY:z,maxY:H}=F,Q=L.length;let J=n.max!=null?Number(n.max):Math.max(...L),Z=n.min!=null?Number(n.min):Math.min(...L);Z>0&&n.min==null&&(Z=0),J<0&&n.max==null&&(J=0);const re=j/Q,ie=(H-z)/(J-Z||1),pe=H-Math.abs(Z*ie);return L.map((ue,W)=>{const Y=Math.abs(ie*ue);return{x:U+W*re,y:pe-Y+ +(ue<0)*Y,height:Y,value:ue}})}const N=computed(()=>{const L=[],F=D(A.value,B.value),U=F.length;for(let j=0;L.lengthD(A.value,B.value)),M=computed(()=>(Math.abs(O.value[0].x-O.value[1].x)-C.value)/2);useRender(()=>{const L=n.gradient.slice().length?n.gradient.slice().reverse():[""];return createVNode("svg",{display:"block"},[createVNode("defs",null,[createVNode("linearGradient",{id:E.value,gradientUnits:"userSpaceOnUse",x1:n.gradientDirection==="left"?"100%":"0",y1:n.gradientDirection==="top"?"100%":"0",x2:n.gradientDirection==="right"?"100%":"0",y2:n.gradientDirection==="bottom"?"100%":"0"},[L.map((F,U)=>createVNode("stop",{offset:U/Math.max(L.length-1,1),"stop-color":F||"currentColor"},null))])]),createVNode("clipPath",{id:`${E.value}-clip`},[O.value.map(F=>createVNode("rect",{x:F.x+M.value,y:F.y,width:C.value,height:F.height,rx:typeof n.smooth=="number"?n.smooth:n.smooth?2:0,ry:typeof n.smooth=="number"?n.smooth:n.smooth?2:0},[n.autoDraw&&createVNode(Fragment,null,[createVNode("animate",{attributeName:"y",from:F.y+F.height,to:F.y,dur:`${x.value}ms`,fill:"freeze"},null),createVNode("animate",{attributeName:"height",from:"0",to:F.height,dur:`${x.value}ms`,fill:"freeze"},null)])]))]),T.value&&createVNode("g",{key:"labels",style:{textAnchor:"middle",dominantBaseline:"mathematical",fill:"currentColor"}},[N.value.map((F,U)=>createVNode("text",{x:F.x+M.value+C.value/2,y:parseInt(n.height,10)-2+(parseInt(n.labelSize,10)||7*.75),"font-size":Number(n.labelSize)||7},[_.label?.({index:U,value:F.value})??F.value]))]),createVNode("g",{"clip-path":`url(#${E.value}-clip)`,fill:`url(#${E.value})`},[createVNode("rect",{x:0,y:0,width:Math.max(n.modelValue.length*C.value,Number(n.width)),height:n.height},null)])])})}});function genPath(n,r){let _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,S=arguments.length>3&&arguments[3]!==void 0?arguments[3]:75;if(n.length===0)return"";const E=n.shift(),x=n[n.length-1];return(_?`M${E.x} ${S-E.x+2} L${E.x} ${E.y}`:`M${E.x} ${E.y}`)+n.map((T,C)=>{const I=n[C+1],B=n[C-1]||E,A=I&&checkCollinear(I,T,B);if(!I||A)return`L${T.x} ${T.y}`;const D=Math.min(getDistance(B,T),getDistance(I,T)),O=D/2n.id||`trendline-${S}`),x=computed(()=>Number(n.autoDrawDuration)||(n.fill?500:2e3)),T=ref$2(0),C=ref$2(null);function I(F,U){const{minX:j,maxX:z,minY:H,maxY:Q}=U,J=F.length,Z=n.max!=null?Number(n.max):Math.max(...F),re=n.min!=null?Number(n.min):Math.min(...F),ie=(z-j)/(J-1),pe=(Q-H)/(Z-re||1);return F.map((ue,W)=>({x:j+W*ie,y:Q-(ue-re)*pe,value:ue}))}const B=computed(()=>!!(n.showLabels||n.labels.length>0||_?.label)),A=computed(()=>parseFloat(n.lineWidth)||4),D=computed(()=>Number(n.width)),N=computed(()=>{const F=Number(n.padding);return{minX:F,maxX:D.value-F,minY:F,maxY:parseInt(n.height,10)-F}}),O=computed(()=>n.modelValue.map(F=>getPropertyFromItem(F,n.itemValue,F))),M=computed(()=>{const F=[],U=I(O.value,N.value),j=U.length;for(let z=0;F.lengthn.modelValue,async()=>{if(await nextTick$2(),!n.autoDraw||!C.value)return;const F=C.value,U=F.getTotalLength();n.fill?(F.style.transformOrigin="bottom center",F.style.transition="none",F.style.transform="scaleY(0)",F.getBoundingClientRect(),F.style.transition=`transform ${x.value}ms ${n.autoDrawEasing}`,F.style.transform="scaleY(1)"):(F.style.strokeDasharray=`${U}`,F.style.strokeDashoffset=`${U}`,F.getBoundingClientRect(),F.style.transition=`stroke-dashoffset ${x.value}ms ${n.autoDrawEasing}`,F.style.strokeDashoffset="0"),T.value=U},{immediate:!0});function L(F){return genPath(I(O.value,N.value),n.smooth?8:Number(n.smooth),F,parseInt(n.height,10))}useRender(()=>{const F=n.gradient.slice().length?n.gradient.slice().reverse():[""];return createVNode("svg",{display:"block","stroke-width":parseFloat(n.lineWidth)??4},[createVNode("defs",null,[createVNode("linearGradient",{id:E.value,gradientUnits:"userSpaceOnUse",x1:n.gradientDirection==="left"?"100%":"0",y1:n.gradientDirection==="top"?"100%":"0",x2:n.gradientDirection==="right"?"100%":"0",y2:n.gradientDirection==="bottom"?"100%":"0"},[F.map((U,j)=>createVNode("stop",{offset:j/Math.max(F.length-1,1),"stop-color":U||"currentColor"},null))])]),B.value&&createVNode("g",{key:"labels",style:{textAnchor:"middle",dominantBaseline:"mathematical",fill:"currentColor"}},[M.value.map((U,j)=>createVNode("text",{x:U.x+A.value/2+A.value/2,y:parseInt(n.height,10)-4+(parseInt(n.labelSize,10)||7*.75),"font-size":Number(n.labelSize)||7},[_.label?.({index:j,value:U.value})??U.value]))]),createVNode("path",{ref:C,d:L(n.fill),fill:n.fill?`url(#${E.value})`:"none",stroke:n.fill?"none":`url(#${E.value})`},null),n.fill&&createVNode("path",{d:L(!1),fill:"none",stroke:n.color??n.gradient?.[0]},null)])})}}),makeVSparklineProps=propsFactory({type:{type:String,default:"trend"},...makeVBarlineProps(),...makeVTrendlineProps()},"VSparkline"),VSparkline=genericComponent()({name:"VSparkline",props:makeVSparklineProps(),setup(n,r){let{slots:_}=r;const{textColorClasses:S,textColorStyles:E}=useTextColor(toRef(n,"color")),x=computed(()=>!!(n.showLabels||n.labels.length>0||_?.label)),T=computed(()=>{let C=parseInt(n.height,10);return x.value&&(C+=parseInt(n.labelSize,10)*1.5),C});useRender(()=>{const C=n.type==="trend"?VTrendline:VBarline,I=n.type==="trend"?VTrendline.filterProps(n):VBarline.filterProps(n);return createVNode(C,mergeProps({key:n.type,class:S.value,style:E.value,viewBox:`0 0 ${n.width} ${parseInt(T.value,10)}`},I),_)})}}),makeVSpeedDialProps=propsFactory({...makeComponentProps(),...makeVMenuProps({offset:8,minWidth:0,openDelay:0,closeDelay:100,location:"top center",transition:"scale-transition"})},"VSpeedDial"),VSpeedDial=genericComponent()({name:"VSpeedDial",props:makeVSpeedDialProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),E=ref$2(),x=computed(()=>{const[C,I="center"]=n.location?.split(" ")??[];return`${C} ${I}`}),T=computed(()=>({[`v-speed-dial__content--${x.value.replace(" ","-")}`]:!0}));return useRender(()=>{const C=VMenu.filterProps(n);return createVNode(VMenu,mergeProps(C,{modelValue:S.value,"onUpdate:modelValue":I=>S.value=I,class:n.class,style:n.style,contentClass:["v-speed-dial__content",T.value,n.contentClass],location:x.value,ref:E,transition:"fade-transition"}),{..._,default:I=>createVNode(VDefaultsProvider,{defaults:{VBtn:{size:"small"}}},{default:()=>[createVNode(MaybeTransition,{appear:!0,group:!0,transition:n.transition},{default:()=>[_.default?.(I)]})]})})}),{}}}),VStepperSymbol=Symbol.for("vuetify:v-stepper"),makeVStepperActionsProps=propsFactory({color:String,disabled:{type:[Boolean,String],default:!1},prevText:{type:String,default:"$vuetify.stepper.prev"},nextText:{type:String,default:"$vuetify.stepper.next"}},"VStepperActions"),VStepperActions=genericComponent()({name:"VStepperActions",props:makeVStepperActionsProps(),emits:{"click:prev":()=>!0,"click:next":()=>!0},setup(n,r){let{emit:_,slots:S}=r;const{t:E}=useLocale();function x(){_("click:prev")}function T(){_("click:next")}return useRender(()=>{const C={onClick:x},I={onClick:T};return createVNode("div",{class:"v-stepper-actions"},[createVNode(VDefaultsProvider,{defaults:{VBtn:{disabled:["prev",!0].includes(n.disabled),text:E(n.prevText),variant:"text"}}},{default:()=>[S.prev?.({props:C})??createVNode(VBtn,C,null)]}),createVNode(VDefaultsProvider,{defaults:{VBtn:{color:n.color,disabled:["next",!0].includes(n.disabled),text:E(n.nextText),variant:"tonal"}}},{default:()=>[S.next?.({props:I})??createVNode(VBtn,I,null)]})])}),{}}}),VStepperHeader=createSimpleFunctional("v-stepper-header"),makeStepperItemProps=propsFactory({color:String,title:String,subtitle:String,complete:Boolean,completeIcon:{type:String,default:"$complete"},editable:Boolean,editIcon:{type:String,default:"$edit"},error:Boolean,errorIcon:{type:String,default:"$error"},icon:String,ripple:{type:[Boolean,Object],default:!0},rules:{type:Array,default:()=>[]}},"StepperItem"),makeVStepperItemProps=propsFactory({...makeStepperItemProps(),...makeGroupItemProps()},"VStepperItem"),VStepperItem=genericComponent()({name:"VStepperItem",directives:{Ripple},props:makeVStepperItemProps(),emits:{"group:selected":n=>!0},setup(n,r){let{slots:_}=r;const S=useGroupItem(n,VStepperSymbol,!0),E=computed(()=>S?.value.value??n.value),x=computed(()=>n.rules.every(N=>N()===!0)),T=computed(()=>!n.disabled&&n.editable),C=computed(()=>!n.disabled&&n.editable),I=computed(()=>n.error||!x.value),B=computed(()=>n.complete||n.rules.length>0&&x.value),A=computed(()=>I.value?n.errorIcon:B.value?n.completeIcon:S.isSelected.value&&n.editable?n.editIcon:n.icon),D=computed(()=>({canEdit:C.value,hasError:I.value,hasCompleted:B.value,title:n.title,subtitle:n.subtitle,step:E.value,value:n.value}));return useRender(()=>{const N=(!S||S.isSelected.value||B.value||C.value)&&!I.value&&!n.disabled,O=!!(n.title!=null||_.title),M=!!(n.subtitle!=null||_.subtitle);function L(){S?.toggle()}return withDirectives(createVNode("button",{class:["v-stepper-item",{"v-stepper-item--complete":B.value,"v-stepper-item--disabled":n.disabled,"v-stepper-item--error":I.value},S?.selectedClass.value],disabled:!n.editable,onClick:L},[T.value&&genOverlays(!0,"v-stepper-item"),createVNode(VAvatar,{key:"stepper-avatar",class:"v-stepper-item__avatar",color:N?n.color:void 0,size:24},{default:()=>[_.icon?.(D.value)??(A.value?createVNode(VIcon,{icon:A.value},null):E.value)]}),createVNode("div",{class:"v-stepper-item__content"},[O&&createVNode("div",{key:"title",class:"v-stepper-item__title"},[_.title?.(D.value)??n.title]),M&&createVNode("div",{key:"subtitle",class:"v-stepper-item__subtitle"},[_.subtitle?.(D.value)??n.subtitle]),_.default?.(D.value)])]),[[resolveDirective("ripple"),n.ripple&&n.editable,null]])}),{}}}),makeVStepperWindowProps=propsFactory({...omit(makeVWindowProps(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VStepperWindow"),VStepperWindow=genericComponent()({name:"VStepperWindow",props:makeVStepperWindowProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=inject$1(VStepperSymbol,null),E=useProxiedModel(n,"modelValue"),x=computed({get(){return E.value!=null||!S?E.value:S.items.value.find(T=>S.selected.value.includes(T.id))?.value},set(T){E.value=T}});return useRender(()=>{const T=VWindow.filterProps(n);return createVNode(VWindow,mergeProps({_as:"VStepperWindow"},T,{modelValue:x.value,"onUpdate:modelValue":C=>x.value=C,class:["v-stepper-window",n.class],style:n.style,mandatory:!1,touch:!1}),_)}),{}}}),makeVStepperWindowItemProps=propsFactory({...makeVWindowItemProps()},"VStepperWindowItem"),VStepperWindowItem=genericComponent()({name:"VStepperWindowItem",props:makeVStepperWindowItemProps(),setup(n,r){let{slots:_}=r;return useRender(()=>{const S=VWindowItem.filterProps(n);return createVNode(VWindowItem,mergeProps({_as:"VStepperWindowItem"},S,{class:["v-stepper-window-item",n.class],style:n.style}),_)}),{}}}),makeStepperProps=propsFactory({altLabels:Boolean,bgColor:String,completeIcon:String,editIcon:String,editable:Boolean,errorIcon:String,hideActions:Boolean,items:{type:Array,default:()=>[]},itemTitle:{type:String,default:"title"},itemValue:{type:String,default:"value"},nonLinear:Boolean,flat:Boolean,...makeDisplayProps()},"Stepper"),makeVStepperProps=propsFactory({...makeStepperProps(),...makeGroupProps({mandatory:"force",selectedClass:"v-stepper-item--selected"}),...makeVSheetProps(),...only(makeVStepperActionsProps(),["prevText","nextText"])},"VStepper"),VStepper=genericComponent()({name:"VStepper",props:makeVStepperProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const{items:S,next:E,prev:x,selected:T}=useGroup(n,VStepperSymbol),{displayClasses:C,mobile:I}=useDisplay(n),{completeIcon:B,editIcon:A,errorIcon:D,color:N,editable:O,prevText:M,nextText:L}=toRefs(n),F=computed(()=>n.items.map((z,H)=>{const Q=getPropertyFromItem(z,n.itemTitle,z),J=getPropertyFromItem(z,n.itemValue,H+1);return{title:Q,value:J,raw:z}})),U=computed(()=>S.value.findIndex(z=>T.value.includes(z.id))),j=computed(()=>n.disabled?n.disabled:U.value===0?"prev":U.value===S.value.length-1?"next":!1);return provideDefaults({VStepperItem:{editable:O,errorIcon:D,completeIcon:B,editIcon:A,prevText:M,nextText:L},VStepperActions:{color:N,disabled:j,prevText:M,nextText:L}}),useRender(()=>{const z=VSheet.filterProps(n),H=!!(_.header||n.items.length),Q=n.items.length>0,J=!n.hideActions&&!!(Q||_.actions);return createVNode(VSheet,mergeProps(z,{color:n.bgColor,class:["v-stepper",{"v-stepper--alt-labels":n.altLabels,"v-stepper--flat":n.flat,"v-stepper--non-linear":n.nonLinear,"v-stepper--mobile":I.value},C.value,n.class],style:n.style}),{default:()=>[H&&createVNode(VStepperHeader,{key:"stepper-header"},{default:()=>[F.value.map((Z,re)=>{let{raw:ie,...pe}=Z;return createVNode(Fragment,null,[!!re&&createVNode(VDivider,null,null),createVNode(VStepperItem,pe,{default:_[`header-item.${pe.value}`]??_.header,icon:_.icon,title:_.title,subtitle:_.subtitle})])})]}),Q&&createVNode(VStepperWindow,{key:"stepper-window"},{default:()=>[F.value.map(Z=>createVNode(VStepperWindowItem,{value:Z.value},{default:()=>_[`item.${Z.value}`]?.(Z)??_.item?.(Z)}))]}),_.default?.({prev:x,next:E}),J&&(_.actions?.({next:E,prev:x})??createVNode(VStepperActions,{key:"stepper-actions","onClick:prev":x,"onClick:next":E},_))]})}),{prev:x,next:E}}}),makeVSwitchProps=propsFactory({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...makeVInputProps(),...makeVSelectionControlProps()},"VSwitch"),VSwitch=genericComponent()({name:"VSwitch",inheritAttrs:!1,props:makeVSwitchProps(),emits:{"update:focused":n=>!0,"update:modelValue":n=>!0,"update:indeterminate":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const E=useProxiedModel(n,"indeterminate"),x=useProxiedModel(n,"modelValue"),{loaderClasses:T}=useLoader(n),{isFocused:C,focus:I,blur:B}=useFocus(n),A=ref$2(),D=IN_BROWSER&&window.matchMedia("(forced-colors: active)").matches,N=computed(()=>typeof n.loading=="string"&&n.loading!==""?n.loading:n.color),O=getUid(),M=computed(()=>n.id||`switch-${O}`);function L(){E.value&&(E.value=!1)}function F(U){U.stopPropagation(),U.preventDefault(),A.value?.input?.click()}return useRender(()=>{const[U,j]=filterInputAttrs(_),z=VInput.filterProps(n),H=VSelectionControl.filterProps(n);return createVNode(VInput,mergeProps({class:["v-switch",{"v-switch--flat":n.flat},{"v-switch--inset":n.inset},{"v-switch--indeterminate":E.value},T.value,n.class]},U,z,{modelValue:x.value,"onUpdate:modelValue":Q=>x.value=Q,id:M.value,focused:C.value,style:n.style}),{...S,default:Q=>{let{id:J,messagesId:Z,isDisabled:re,isReadonly:ie,isValid:pe}=Q;const ue={model:x,isValid:pe};return createVNode(VSelectionControl,mergeProps({ref:A},H,{modelValue:x.value,"onUpdate:modelValue":[W=>x.value=W,L],id:J.value,"aria-describedby":Z.value,type:"checkbox","aria-checked":E.value?"mixed":void 0,disabled:re.value,readonly:ie.value,onFocus:I,onBlur:B},j),{...S,default:W=>{let{backgroundColorClasses:Y,backgroundColorStyles:q}=W;return createVNode("div",{class:["v-switch__track",D?void 0:Y.value],style:q.value,onClick:F},[S["track-true"]&&createVNode("div",{key:"prepend",class:"v-switch__track-true"},[S["track-true"](ue)]),S["track-false"]&&createVNode("div",{key:"append",class:"v-switch__track-false"},[S["track-false"](ue)])])},input:W=>{let{inputNode:Y,icon:q,backgroundColorClasses:G,backgroundColorStyles:ne}=W;return createVNode(Fragment,null,[Y,createVNode("div",{class:["v-switch__thumb",{"v-switch__thumb--filled":q||n.loading},n.inset||D?void 0:G.value],style:n.inset?void 0:ne.value},[S.thumb?createVNode(VDefaultsProvider,{defaults:{VIcon:{icon:q,size:"x-small"}}},{default:()=>[S.thumb({...ue,icon:q})]}):createVNode(VScaleTransition,null,{default:()=>[n.loading?createVNode(LoaderSlot,{name:"v-switch",active:!0,color:pe.value===!1?void 0:N.value},{default:ee=>S.loader?S.loader(ee):createVNode(VProgressCircular,{active:ee.isActive,color:ee.color,indeterminate:!0,size:"16",width:"2"},null)}):q&&createVNode(VIcon,{key:String(q),icon:q,size:"x-small"},null)]})])])}})}})}),{}}}),makeVSystemBarProps=propsFactory({color:String,height:[Number,String],window:Boolean,...makeComponentProps(),...makeElevationProps(),...makeLayoutItemProps(),...makeRoundedProps(),...makeTagProps(),...makeThemeProps()},"VSystemBar"),VSystemBar=genericComponent()({name:"VSystemBar",props:makeVSystemBarProps(),setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n),{backgroundColorClasses:E,backgroundColorStyles:x}=useBackgroundColor(toRef(n,"color")),{elevationClasses:T}=useElevation(n),{roundedClasses:C}=useRounded(n),{ssrBootStyles:I}=useSsrBoot(),B=computed(()=>n.height??(n.window?32:24)),{layoutItemStyles:A}=useLayoutItem({id:n.name,order:computed(()=>parseInt(n.order,10)),position:shallowRef("top"),layoutSize:B,elementSize:B,active:computed(()=>!0),absolute:toRef(n,"absolute")});return useRender(()=>createVNode(n.tag,{class:["v-system-bar",{"v-system-bar--window":n.window},S.value,E.value,T.value,C.value,n.class],style:[x.value,A.value,I.value,n.style]},_)),{}}}),VTabsSymbol=Symbol.for("vuetify:v-tabs"),makeVTabProps=propsFactory({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...omit(makeVBtnProps({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),VTab=genericComponent()({name:"VTab",props:makeVTabProps(),setup(n,r){let{slots:_,attrs:S}=r;const{textColorClasses:E,textColorStyles:x}=useTextColor(n,"sliderColor"),T=ref$2(),C=ref$2(),I=computed(()=>n.direction==="horizontal"),B=computed(()=>T.value?.group?.isSelected.value??!1);function A(D){let{value:N}=D;if(N){const O=T.value?.$el.parentElement?.querySelector(".v-tab--selected .v-tab__slider"),M=C.value;if(!O||!M)return;const L=getComputedStyle(O).color,F=O.getBoundingClientRect(),U=M.getBoundingClientRect(),j=I.value?"x":"y",z=I.value?"X":"Y",H=I.value?"right":"bottom",Q=I.value?"width":"height",J=F[j],Z=U[j],re=J>Z?F[H]-U[H]:F[j]-U[j],ie=Math.sign(re)>0?I.value?"right":"bottom":Math.sign(re)<0?I.value?"left":"top":"center",ue=(Math.abs(re)+(Math.sign(re)<0?F[Q]:U[Q]))/Math.max(F[Q],U[Q])||0,W=F[Q]/U[Q]||0,Y=1.5;animate(M,{backgroundColor:[L,"currentcolor"],transform:[`translate${z}(${re}px) scale${z}(${W})`,`translate${z}(${re/Y}px) scale${z}(${(ue-1)/Y+1})`,"none"],transformOrigin:Array(3).fill(ie)},{duration:225,easing:standardEasing})}}return useRender(()=>{const D=VBtn.filterProps(n);return createVNode(VBtn,mergeProps({symbol:VTabsSymbol,ref:T,class:["v-tab",n.class],style:n.style,tabindex:B.value?0:-1,role:"tab","aria-selected":String(B.value),active:!1},D,S,{block:n.fixed,maxWidth:n.fixed?300:void 0,"onGroup:selected":A}),{..._,default:()=>createVNode(Fragment,null,[_.default?.()??n.text,!n.hideSlider&&createVNode("div",{ref:C,class:["v-tab__slider",E.value],style:x.value},null)])})}),forwardRefs({},T)}}),makeVTabsWindowProps=propsFactory({...omit(makeVWindowProps(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VTabsWindow"),VTabsWindow=genericComponent()({name:"VTabsWindow",props:makeVTabsWindowProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=inject$1(VTabsSymbol,null),E=useProxiedModel(n,"modelValue"),x=computed({get(){return E.value!=null||!S?E.value:S.items.value.find(T=>S.selected.value.includes(T.id))?.value},set(T){E.value=T}});return useRender(()=>{const T=VWindow.filterProps(n);return createVNode(VWindow,mergeProps({_as:"VTabsWindow"},T,{modelValue:x.value,"onUpdate:modelValue":C=>x.value=C,class:["v-tabs-window",n.class],style:n.style,mandatory:!1,touch:!1}),_)}),{}}}),makeVTabsWindowItemProps=propsFactory({...makeVWindowItemProps()},"VTabsWindowItem"),VTabsWindowItem=genericComponent()({name:"VTabsWindowItem",props:makeVTabsWindowItemProps(),setup(n,r){let{slots:_}=r;return useRender(()=>{const S=VWindowItem.filterProps(n);return createVNode(VWindowItem,mergeProps({_as:"VTabsWindowItem"},S,{class:["v-tabs-window-item",n.class],style:n.style}),_)}),{}}});function parseItems(n){return n?n.map(r=>isObject$1(r)?r:{text:r,value:r}):[]}const makeVTabsProps=propsFactory({alignTabs:{type:String,default:"start"},color:String,fixedTabs:Boolean,items:{type:Array,default:()=>[]},stacked:Boolean,bgColor:String,grow:Boolean,height:{type:[Number,String],default:void 0},hideSlider:Boolean,sliderColor:String,...makeVSlideGroupProps({mandatory:"force",selectedClass:"v-tab-item--selected"}),...makeDensityProps(),...makeTagProps()},"VTabs"),VTabs=genericComponent()({name:"VTabs",props:makeVTabsProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{attrs:_,slots:S}=r;const E=useProxiedModel(n,"modelValue"),x=computed(()=>parseItems(n.items)),{densityClasses:T}=useDensity(n),{backgroundColorClasses:C,backgroundColorStyles:I}=useBackgroundColor(toRef(n,"bgColor")),{scopeId:B}=useScopeId();return provideDefaults({VTab:{color:toRef(n,"color"),direction:toRef(n,"direction"),stacked:toRef(n,"stacked"),fixed:toRef(n,"fixedTabs"),sliderColor:toRef(n,"sliderColor"),hideSlider:toRef(n,"hideSlider")}}),useRender(()=>{const A=VSlideGroup.filterProps(n),D=!!(S.window||n.items.length>0);return createVNode(Fragment,null,[createVNode(VSlideGroup,mergeProps(A,{modelValue:E.value,"onUpdate:modelValue":N=>E.value=N,class:["v-tabs",`v-tabs--${n.direction}`,`v-tabs--align-tabs-${n.alignTabs}`,{"v-tabs--fixed-tabs":n.fixedTabs,"v-tabs--grow":n.grow,"v-tabs--stacked":n.stacked},T.value,C.value,n.class],style:[{"--v-tabs-height":convertToUnit(n.height)},I.value,n.style],role:"tablist",symbol:VTabsSymbol},B,_),{default:()=>[S.default?.()??x.value.map(N=>S.tab?.({item:N})??createVNode(VTab,mergeProps(N,{key:N.text,value:N.value}),{default:S[`tab.${N.value}`]?()=>S[`tab.${N.value}`]?.({item:N}):void 0}))]}),D&&createVNode(VTabsWindow,mergeProps({modelValue:E.value,"onUpdate:modelValue":N=>E.value=N,key:"tabs-window"},B),{default:()=>[x.value.map(N=>S.item?.({item:N})??createVNode(VTabsWindowItem,{value:N.value},{default:()=>S[`item.${N.value}`]?.({item:N})})),S.window?.()]})])}),{}}}),makeVTextareaProps=propsFactory({autoGrow:Boolean,autofocus:Boolean,counter:[Boolean,Number,String],counterValue:Function,prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,noResize:Boolean,rows:{type:[Number,String],default:5,validator:n=>!isNaN(parseFloat(n))},maxRows:{type:[Number,String],validator:n=>!isNaN(parseFloat(n))},suffix:String,modelModifiers:Object,...makeVInputProps(),...makeVFieldProps()},"VTextarea"),VTextarea=genericComponent()({name:"VTextarea",directives:{Intersect},inheritAttrs:!1,props:makeVTextareaProps(),emits:{"click:control":n=>!0,"mousedown:control":n=>!0,"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,r){let{attrs:_,emit:S,slots:E}=r;const x=useProxiedModel(n,"modelValue"),{isFocused:T,focus:C,blur:I}=useFocus(n),B=computed(()=>typeof n.counterValue=="function"?n.counterValue(x.value):(x.value||"").toString().length),A=computed(()=>{if(_.maxlength)return _.maxlength;if(!(!n.counter||typeof n.counter!="number"&&typeof n.counter!="string"))return n.counter});function D(ue,W){!n.autofocus||!ue||W[0].target?.focus?.()}const N=ref$2(),O=ref$2(),M=shallowRef(""),L=ref$2(),F=computed(()=>n.persistentPlaceholder||T.value||n.active);function U(){L.value!==document.activeElement&&L.value?.focus(),T.value||C()}function j(ue){U(),S("click:control",ue)}function z(ue){S("mousedown:control",ue)}function H(ue){ue.stopPropagation(),U(),nextTick$2(()=>{x.value="",callEvent(n["onClick:clear"],ue)})}function Q(ue){const W=ue.target;if(x.value=W.value,n.modelModifiers?.trim){const Y=[W.selectionStart,W.selectionEnd];nextTick$2(()=>{W.selectionStart=Y[0],W.selectionEnd=Y[1]})}}const J=ref$2(),Z=ref$2(+n.rows),re=computed(()=>["plain","underlined"].includes(n.variant));watchEffect(()=>{n.autoGrow||(Z.value=+n.rows)});function ie(){n.autoGrow&&nextTick$2(()=>{if(!J.value||!O.value)return;const ue=getComputedStyle(J.value),W=getComputedStyle(O.value.$el),Y=parseFloat(ue.getPropertyValue("--v-field-padding-top"))+parseFloat(ue.getPropertyValue("--v-input-padding-top"))+parseFloat(ue.getPropertyValue("--v-field-padding-bottom")),q=J.value.scrollHeight,G=parseFloat(ue.lineHeight),ne=Math.max(parseFloat(n.rows)*G+Y,parseFloat(W.getPropertyValue("--v-input-control-height"))),ee=parseFloat(n.maxRows)*G+Y||1/0,oe=clamp(q??0,ne,ee);Z.value=Math.floor((oe-Y)/G),M.value=convertToUnit(oe)})}onMounted(ie),watch(x,ie),watch(()=>n.rows,ie),watch(()=>n.maxRows,ie),watch(()=>n.density,ie);let pe;return watch(J,ue=>{ue?(pe=new ResizeObserver(ie),pe.observe(J.value)):pe?.disconnect()}),onBeforeUnmount(()=>{pe?.disconnect()}),useRender(()=>{const ue=!!(E.counter||n.counter||n.counterValue),W=!!(ue||E.details),[Y,q]=filterInputAttrs(_),{modelValue:G,...ne}=VInput.filterProps(n),ee=filterFieldProps(n);return createVNode(VInput,mergeProps({ref:N,modelValue:x.value,"onUpdate:modelValue":oe=>x.value=oe,class:["v-textarea v-text-field",{"v-textarea--prefixed":n.prefix,"v-textarea--suffixed":n.suffix,"v-text-field--prefixed":n.prefix,"v-text-field--suffixed":n.suffix,"v-textarea--auto-grow":n.autoGrow,"v-textarea--no-resize":n.noResize||n.autoGrow,"v-input--plain-underlined":re.value},n.class],style:n.style},Y,ne,{centerAffix:Z.value===1&&!re.value,focused:T.value}),{...E,default:oe=>{let{id:ae,isDisabled:se,isDirty:te,isReadonly:X,isValid:ce}=oe;return createVNode(VField,mergeProps({ref:O,style:{"--v-textarea-control-height":M.value},onClick:j,onMousedown:z,"onClick:clear":H,"onClick:prependInner":n["onClick:prependInner"],"onClick:appendInner":n["onClick:appendInner"]},ee,{id:ae.value,active:F.value||te.value,centerAffix:Z.value===1&&!re.value,dirty:te.value||n.dirty,disabled:se.value,focused:T.value,error:ce.value===!1}),{...E,default:le=>{let{props:{class:ye,...de}}=le;return createVNode(Fragment,null,[n.prefix&&createVNode("span",{class:"v-text-field__prefix"},[n.prefix]),withDirectives(createVNode("textarea",mergeProps({ref:L,class:ye,value:x.value,onInput:Q,autofocus:n.autofocus,readonly:X.value,disabled:se.value,placeholder:n.placeholder,rows:n.rows,name:n.name,onFocus:U,onBlur:I},de,q),null),[[resolveDirective("intersect"),{handler:D},null,{once:!0}]]),n.autoGrow&&withDirectives(createVNode("textarea",{class:[ye,"v-textarea__sizer"],id:`${de.id}-sizer`,"onUpdate:modelValue":he=>x.value=he,ref:J,readonly:!0,"aria-hidden":"true"},null),[[vModelText,x.value]]),n.suffix&&createVNode("span",{class:"v-text-field__suffix"},[n.suffix])])}})},details:W?oe=>createVNode(Fragment,null,[E.details?.(oe),ue&&createVNode(Fragment,null,[createVNode("span",null,null),createVNode(VCounter,{active:n.persistentCounter||T.value,value:B.value,max:A.value,disabled:n.disabled},E.counter)])]):void 0})}),forwardRefs({},N,O,L)}}),makeVThemeProviderProps=propsFactory({withBackground:Boolean,...makeComponentProps(),...makeThemeProps(),...makeTagProps()},"VThemeProvider"),VThemeProvider=genericComponent()({name:"VThemeProvider",props:makeVThemeProviderProps(),setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n);return()=>n.withBackground?createVNode(n.tag,{class:["v-theme-provider",S.value,n.class],style:n.style},{default:()=>[_.default?.()]}):_.default?.()}}),makeVTimelineDividerProps=propsFactory({dotColor:String,fillDot:Boolean,hideDot:Boolean,icon:IconValue,iconColor:String,lineColor:String,...makeComponentProps(),...makeRoundedProps(),...makeSizeProps(),...makeElevationProps()},"VTimelineDivider"),VTimelineDivider=genericComponent()({name:"VTimelineDivider",props:makeVTimelineDividerProps(),setup(n,r){let{slots:_}=r;const{sizeClasses:S,sizeStyles:E}=useSize(n,"v-timeline-divider__dot"),{backgroundColorStyles:x,backgroundColorClasses:T}=useBackgroundColor(toRef(n,"dotColor")),{roundedClasses:C}=useRounded(n,"v-timeline-divider__dot"),{elevationClasses:I}=useElevation(n),{backgroundColorClasses:B,backgroundColorStyles:A}=useBackgroundColor(toRef(n,"lineColor"));return useRender(()=>createVNode("div",{class:["v-timeline-divider",{"v-timeline-divider--fill-dot":n.fillDot},n.class],style:n.style},[createVNode("div",{class:["v-timeline-divider__before",B.value],style:A.value},null),!n.hideDot&&createVNode("div",{key:"dot",class:["v-timeline-divider__dot",I.value,C.value,S.value],style:E.value},[createVNode("div",{class:["v-timeline-divider__inner-dot",T.value,C.value],style:x.value},[_.default?createVNode(VDefaultsProvider,{key:"icon-defaults",disabled:!n.icon,defaults:{VIcon:{color:n.iconColor,icon:n.icon,size:n.size}}},_.default):createVNode(VIcon,{key:"icon",color:n.iconColor,icon:n.icon,size:n.size},null)])]),createVNode("div",{class:["v-timeline-divider__after",B.value],style:A.value},null)])),{}}}),makeVTimelineItemProps=propsFactory({density:String,dotColor:String,fillDot:Boolean,hideDot:Boolean,hideOpposite:{type:Boolean,default:void 0},icon:IconValue,iconColor:String,lineInset:[Number,String],...makeComponentProps(),...makeDimensionProps(),...makeElevationProps(),...makeRoundedProps(),...makeSizeProps(),...makeTagProps()},"VTimelineItem"),VTimelineItem=genericComponent()({name:"VTimelineItem",props:makeVTimelineItemProps(),setup(n,r){let{slots:_}=r;const{dimensionStyles:S}=useDimension(n),E=shallowRef(0),x=ref$2();return watch(x,T=>{T&&(E.value=T.$el.querySelector(".v-timeline-divider__dot")?.getBoundingClientRect().width??0)},{flush:"post"}),useRender(()=>createVNode("div",{class:["v-timeline-item",{"v-timeline-item--fill-dot":n.fillDot},n.class],style:[{"--v-timeline-dot-size":convertToUnit(E.value),"--v-timeline-line-inset":n.lineInset?`calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(n.lineInset)})`:convertToUnit(0)},n.style]},[createVNode("div",{class:"v-timeline-item__body",style:S.value},[_.default?.()]),createVNode(VTimelineDivider,{ref:x,hideDot:n.hideDot,icon:n.icon,iconColor:n.iconColor,size:n.size,elevation:n.elevation,dotColor:n.dotColor,fillDot:n.fillDot,rounded:n.rounded},{default:_.icon}),n.density!=="compact"&&createVNode("div",{class:"v-timeline-item__opposite"},[!n.hideOpposite&&_.opposite?.()])])),{}}}),makeVTimelineProps=propsFactory({align:{type:String,default:"center",validator:n=>["center","start"].includes(n)},direction:{type:String,default:"vertical",validator:n=>["vertical","horizontal"].includes(n)},justify:{type:String,default:"auto",validator:n=>["auto","center"].includes(n)},side:{type:String,validator:n=>n==null||["start","end"].includes(n)},lineThickness:{type:[String,Number],default:2},lineColor:String,truncateLine:{type:String,validator:n=>["start","end","both"].includes(n)},...only(makeVTimelineItemProps({lineInset:0}),["dotColor","fillDot","hideOpposite","iconColor","lineInset","size"]),...makeComponentProps(),...makeDensityProps(),...makeTagProps(),...makeThemeProps()},"VTimeline"),VTimeline=genericComponent()({name:"VTimeline",props:makeVTimelineProps(),setup(n,r){let{slots:_}=r;const{themeClasses:S}=provideTheme(n),{densityClasses:E}=useDensity(n),{rtlClasses:x}=useRtl();provideDefaults({VTimelineDivider:{lineColor:toRef(n,"lineColor")},VTimelineItem:{density:toRef(n,"density"),dotColor:toRef(n,"dotColor"),fillDot:toRef(n,"fillDot"),hideOpposite:toRef(n,"hideOpposite"),iconColor:toRef(n,"iconColor"),lineColor:toRef(n,"lineColor"),lineInset:toRef(n,"lineInset"),size:toRef(n,"size")}});const T=computed(()=>{const I=n.side?n.side:n.density!=="default"?"end":null;return I&&`v-timeline--side-${I}`}),C=computed(()=>{const I=["v-timeline--truncate-line-start","v-timeline--truncate-line-end"];switch(n.truncateLine){case"both":return I;case"start":return I[0];case"end":return I[1];default:return null}});return useRender(()=>createVNode(n.tag,{class:["v-timeline",`v-timeline--${n.direction}`,`v-timeline--align-${n.align}`,`v-timeline--justify-${n.justify}`,C.value,{"v-timeline--inset-line":!!n.lineInset},S.value,E.value,T.value,x.value,n.class],style:[{"--v-timeline-line-thickness":convertToUnit(n.lineThickness)},n.style]},_)),{}}}),makeVToolbarItemsProps=propsFactory({...makeComponentProps(),...makeVariantProps({variant:"text"})},"VToolbarItems"),VToolbarItems=genericComponent()({name:"VToolbarItems",props:makeVToolbarItemsProps(),setup(n,r){let{slots:_}=r;return provideDefaults({VBtn:{color:toRef(n,"color"),height:"inherit",variant:toRef(n,"variant")}}),useRender(()=>createVNode("div",{class:["v-toolbar-items",n.class],style:n.style},[_.default?.()])),{}}}),makeVTooltipProps=propsFactory({id:String,text:String,...omit(makeVOverlayProps({closeOnBack:!1,location:"end",locationStrategy:"connected",eager:!0,minWidth:0,offset:10,openOnClick:!1,openOnHover:!0,origin:"auto",scrim:!1,scrollStrategy:"reposition",transition:!1}),["absolute","persistent"])},"VTooltip"),VTooltip=genericComponent()({name:"VTooltip",props:makeVTooltipProps(),emits:{"update:modelValue":n=>!0},setup(n,r){let{slots:_}=r;const S=useProxiedModel(n,"modelValue"),{scopeId:E}=useScopeId(),x=getUid(),T=computed(()=>n.id||`v-tooltip-${x}`),C=ref$2(),I=computed(()=>n.location.split(" ").length>1?n.location:n.location+" center"),B=computed(()=>n.origin==="auto"||n.origin==="overlap"||n.origin.split(" ").length>1||n.location.split(" ").length>1?n.origin:n.origin+" center"),A=computed(()=>n.transition?n.transition:S.value?"scale-transition":"fade-transition"),D=computed(()=>mergeProps({"aria-describedby":T.value},n.activatorProps));return useRender(()=>{const N=VOverlay.filterProps(n);return createVNode(VOverlay,mergeProps({ref:C,class:["v-tooltip",n.class],style:n.style,id:T.value},N,{modelValue:S.value,"onUpdate:modelValue":O=>S.value=O,transition:A.value,absolute:!0,location:I.value,origin:B.value,persistent:!0,role:"tooltip",activatorProps:D.value,_disableGlobalStack:!0},E),{activator:_.activator,default:function(){for(var O=arguments.length,M=new Array(O),L=0;L!0},setup(n,r){let{slots:_}=r;const S=useValidation(n,"validation");return()=>_.default?.(S)}}),components=Object.freeze(Object.defineProperty({__proto__:null,VAlert,VAlertTitle,VApp,VAppBar,VAppBarNavIcon,VAppBarTitle,VAutocomplete,VAvatar,VBadge,VBanner,VBannerActions,VBannerText,VBottomNavigation,VBottomSheet,VBreadcrumbs,VBreadcrumbsDivider,VBreadcrumbsItem,VBtn,VBtnGroup,VBtnToggle,VCard,VCardActions,VCardItem,VCardSubtitle,VCardText,VCardTitle,VCarousel,VCarouselItem,VCheckbox,VCheckboxBtn,VChip,VChipGroup,VClassIcon,VCode,VCol,VColorPicker,VCombobox,VComponentIcon,VConfirmEdit,VContainer,VCounter,VDataIterator,VDataTable,VDataTableFooter,VDataTableHeaders,VDataTableRow,VDataTableRows,VDataTableServer,VDataTableVirtual,VDatePicker,VDatePickerControls,VDatePickerHeader,VDatePickerMonth,VDatePickerMonths,VDatePickerYears,VDefaultsProvider,VDialog,VDialogBottomTransition,VDialogTopTransition,VDialogTransition,VDivider,VEmptyState,VExpandTransition,VExpandXTransition,VExpansionPanel,VExpansionPanelText,VExpansionPanelTitle,VExpansionPanels,VFab,VFabTransition,VFadeTransition,VField,VFieldLabel,VFileInput,VFooter,VForm,VHover,VIcon,VImg,VInfiniteScroll,VInput,VItem,VItemGroup,VKbd,VLabel,VLayout,VLayoutItem,VLazy,VLigatureIcon,VList,VListGroup,VListImg,VListItem,VListItemAction,VListItemMedia,VListItemSubtitle,VListItemTitle,VListSubheader,VLocaleProvider,VMain,VMenu,VMessages,VNavigationDrawer,VNoSsr,VOtpInput,VOverlay,VPagination,VParallax,VProgressCircular,VProgressLinear,VRadio,VRadioGroup,VRangeSlider,VRating,VResponsive,VRow,VScaleTransition,VScrollXReverseTransition,VScrollXTransition,VScrollYReverseTransition,VScrollYTransition,VSelect,VSelectionControl,VSelectionControlGroup,VSheet,VSkeletonLoader,VSlideGroup,VSlideGroupItem,VSlideXReverseTransition,VSlideXTransition,VSlideYReverseTransition,VSlideYTransition,VSlider,VSnackbar,VSpacer,VSparkline,VSpeedDial,VStepper,VStepperActions,VStepperHeader,VStepperItem,VStepperWindow,VStepperWindowItem,VSvgIcon,VSwitch,VSystemBar,VTab,VTable,VTabs,VTabsWindow,VTabsWindowItem,VTextField,VTextarea,VThemeProvider,VTimeline,VTimelineItem,VToolbar,VToolbarItems,VToolbarTitle,VTooltip,VValidation,VVirtualScroll,VWindow,VWindowItem},Symbol.toStringTag,{value:"Module"}));function mounted$2(n,r){const _=r.modifiers||{},S=r.value,{once:E,immediate:x,...T}=_,C=!Object.keys(T).length,{handler:I,options:B}=typeof S=="object"?S:{handler:S,options:{attributes:T?.attr??C,characterData:T?.char??C,childList:T?.child??C,subtree:T?.sub??C}},A=new MutationObserver(function(){let D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],N=arguments.length>1?arguments[1]:void 0;I?.(D,N),E&&unmounted$2(n,r)});x&&I?.([],A),n._mutate=Object(n._mutate),n._mutate[r.instance.$.uid]={observer:A},A.observe(n,B)}function unmounted$2(n,r){n._mutate?.[r.instance.$.uid]&&(n._mutate[r.instance.$.uid].observer.disconnect(),delete n._mutate[r.instance.$.uid])}const Mutate={mounted:mounted$2,unmounted:unmounted$2};function mounted$1(n,r){const _=r.value,S={passive:!r.modifiers?.active};window.addEventListener("resize",_,S),n._onResize=Object(n._onResize),n._onResize[r.instance.$.uid]={handler:_,options:S},r.modifiers?.quiet||_()}function unmounted$1(n,r){if(!n._onResize?.[r.instance.$.uid])return;const{handler:_,options:S}=n._onResize[r.instance.$.uid];window.removeEventListener("resize",_,S),delete n._onResize[r.instance.$.uid]}const Resize={mounted:mounted$1,unmounted:unmounted$1};function mounted(n,r){const{self:_=!1}=r.modifiers??{},S=r.value,E=typeof S=="object"&&S.options||{passive:!0},x=typeof S=="function"||"handleEvent"in S?S:S.handler,T=_?n:r.arg?document.querySelector(r.arg):window;T&&(T.addEventListener("scroll",x,E),n._onScroll=Object(n._onScroll),n._onScroll[r.instance.$.uid]={handler:x,options:E,target:_?void 0:T})}function unmounted(n,r){if(!n._onScroll?.[r.instance.$.uid])return;const{handler:_,options:S,target:E=n}=n._onScroll[r.instance.$.uid];E.removeEventListener("scroll",_,S),delete n._onScroll[r.instance.$.uid]}function updated(n,r){r.value!==r.oldValue&&(unmounted(n,r),mounted(n,r))}const Scroll={mounted,unmounted,updated};function useDirectiveComponent(n,r){const _=typeof n=="string"?resolveComponent(n):n,S=mountComponent(_,r);return{mounted:S,updated:S,unmounted(E){render(null,E)}}}function mountComponent(n,r){return function(_,S,E){const x=typeof r=="function"?r(S):r,T=S.value?.text??S.value??x?.text,C=isObject$1(S.value)?S.value:{},I=()=>T??_.textContent,B=(E.ctx===S.instance.$?findComponentParent(E,S.instance.$)?.provides:E.ctx?.provides)??S.instance.$.provides,A=h$2(n,mergeProps(x,C),I);A.appContext=Object.assign(Object.create(null),S.instance.$.appContext,{provides:B}),render(A,_)}}function findComponentParent(n,r){const _=new Set,S=x=>{for(const T of x){if(!T)continue;if(T===n)return!0;_.add(T);let C;if(T.suspense?C=S([T.ssContent]):Array.isArray(T.children)?C=S(T.children):T.component?.vnode&&(C=S([T.component?.subTree])),C)return C;_.delete(T)}return!1};if(!S([r.subTree]))throw new Error("Could not find original vnode");const E=Array.from(_).reverse();for(const x of E)if(x.component)return x.component;return r}const Tooltip=useDirectiveComponent(VTooltip,n=>({activator:"parent",location:n.arg?.replace("-"," "),text:typeof n.value=="boolean"?void 0:n.value})),directives=Object.freeze(Object.defineProperty({__proto__:null,ClickOutside,Intersect,Mutate,Resize,Ripple,Scroll,Tooltip,Touch},Symbol.toStringTag,{value:"Module"}));function createVuetify(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{blueprint:r,..._}=n,S=mergeDeep(r,_),{aliases:E={},components:x={},directives:T={}}=S,C=createDefaults(S.defaults),I=createDisplay(S.display,S.ssr),B=createTheme(S.theme),A=createIcons(S.icons),D=createLocale(S.locale),N=createDate(S.date,D),O=createGoTo(S.goTo,D);return{install:L=>{for(const F in T)L.directive(F,T[F]);for(const F in x)L.component(F,x[F]);for(const F in E)L.component(F,defineComponent({...E[F],name:F,aliasName:E[F].name}));if(B.install(L),L.provide(DefaultsSymbol,C),L.provide(DisplaySymbol,I),L.provide(ThemeSymbol,B),L.provide(IconSymbol,A),L.provide(LocaleSymbol,D),L.provide(DateOptionsSymbol,N.options),L.provide(DateAdapterSymbol,N.instance),L.provide(GoToSymbol,O),IN_BROWSER&&S.ssr)if(L.$nuxt)L.$nuxt.hook("app:suspense:resolve",()=>{I.update()});else{const{mount:F}=L;L.mount=function(){const U=F(...arguments);return nextTick$2(()=>I.update()),L.mount=F,U}}getUid.reset(),L.mixin({computed:{$vuetify(){return reactive({defaults:inject.call(this,DefaultsSymbol),display:inject.call(this,DisplaySymbol),theme:inject.call(this,ThemeSymbol),icons:inject.call(this,IconSymbol),locale:inject.call(this,LocaleSymbol),date:inject.call(this,DateAdapterSymbol)})}}})},defaults:C,display:I,theme:B,icons:A,locale:D,date:N,goTo:O}}const version="3.7.2";createVuetify.version=version;function inject(n){const r=this.$,_=r.parent?.provides??r.vnode.appContext?.provides;if(_&&n in _)return _[n]}const aliases={collapse:"fas fa-chevron-up",complete:"fas fa-check",cancel:"fas fa-times-circle",close:"fas fa-times",delete:"fas fa-times-circle",clear:"fas fa-times-circle",success:"fas fa-check-circle",info:"fas fa-info-circle",warning:"fas fa-exclamation",error:"fas fa-exclamation-triangle",prev:"fas fa-chevron-left",next:"fas fa-chevron-right",checkboxOn:"fas fa-check-square",checkboxOff:"far fa-square",checkboxIndeterminate:"fas fa-minus-square",delimiter:"fas fa-circle",sortAsc:"fas fa-arrow-up",sortDesc:"fas fa-arrow-down",expand:"fas fa-chevron-down",menu:"fas fa-bars",subgroup:"fas fa-caret-down",dropdown:"fas fa-caret-down",radioOn:"far fa-dot-circle",radioOff:"far fa-circle",edit:"fas fa-edit",ratingEmpty:"far fa-star",ratingFull:"fas fa-star",ratingHalf:"fas fa-star-half",loading:"fas fa-sync",first:"fas fa-step-backward",last:"fas fa-step-forward",unfold:"fas fa-arrows-alt-v",file:"fas fa-paperclip",plus:"fas fa-plus",minus:"fas fa-minus",calendar:"fas fa-calendar",treeviewCollapse:"fas fa-caret-down",treeviewExpand:"fas fa-caret-right",eyeDropper:"fas fa-eye-dropper"},fa={component:VClassIcon},vuetify=createVuetify({components,directives,icons:{defaultSet:"fa",aliases,sets:{fa}},defaults:{global:{elevation:0},VTextField:{variant:"solo-filled","bg-color":"background"},VFileInput:{variant:"solo-filled"},VSelect:{variant:"solo-filled"},VAutocomplete:{variant:"solo-filled"},VTooltip:{location:"start"}},theme:{defaultTheme:"default",themes:{default:{dark:!1,colors:{background:"#221F1F","background-lighten-1":"#141414","background-lighten-2":"#363B65","background-darken-1":"#191919","background-darken-2":"#191919",primary:"#A020F0","primary-lighten-1":"#BA52FB","primary-darken-1":"#7918B5",secondary:"#D027C1","secondary-lighten-1":"#392a37","secondary-darken-1":"#AD18A0",surface:"#191919",error:"#F44336",info:"#2986CC",success:"#51BF32",warning:"#F1C232"},variables:{"border-color":"#A020F0","border-opacity":"0.5","high-emphasis-opacity":"0.87","medium-emphasis-opacity":" 0.6","disabled-opacity":"0.38","idle-opacity":"0.04","hover-opacity":"0.04","focus-opacity":"0.12","selected-opacity":"0.08","activated-opacity":"0.12","pressed-opacity":"0.12","dragged-opacity":"0.08","theme-kbd":"#212529","theme-on-kbd":"#FFFFFF","theme-code":"#F5F5F5","theme-on-code":"#000000"}}}}});async function loadFonts(){(await __vitePreload(()=>import("./webfontloader-DsQjSDUy.js").then(r=>r.w),[],import.meta.url)).load({google:{families:["Josefin Sans:100,300,400,500,700,900&display=swap"]}})}const TRUSTED_SITES_TABLE_KEY="trustedSites",TRUSTED_SITES_SITE_ID_COL="siteId",TRUSTED_SITES_NAME_COL="siteName",FEATURED_RELEASES_TABLE_KEY="featuredReleases",FEATURED_RELEASES_RELEASE_ID_COLUMN="releaseId",FEATURED_RELEASES_START_TIME_COLUMN="startTime",FEATURED_RELEASES_END_TIME_COLUMN="endTime",BLOCKED_RELEASES_TABLE_KEY="blockedReleases",BLOCKED_RELEASES_RELEASE_ID_COLUMN="releaseId",RELEASES_FILE_COLUMN="file",RELEASES_AUTHOR_COLUMN="author",RELEASES_NAME_COLUMN="contentName",RELEASES_METADATA_COLUMN="metadata",RELEASES_THUMBNAIL_COLUMN="thumbnail",RELEASES_CATEGORY_COLUMN="category",RELEASES_STATUS_COLUMN="status",COLLECTIONS_RELEASES_COLUMN="releases",COLLECTIONS_AUTHOR_COLUMN="author",COLLECTIONS_NAME_COLUMN="contentName",COLLECTIONS_METADATA_COLUMN="metadata",COLLECTIONS_THUMBNAIL_COLUMN="thumbnail",COLLECTIONS_CATEGORY_COLUMN="category",COLLECTIONS_STATUS_COLUMN="status",RELEASES_DB_TABLE_KEY="releases",COLLECTIONS_DB_TABLE_KEY="collections",clearData=async()=>{if(localStorage.clear(),indexedDB.databases){const n=await indexedDB.databases();await Promise.all(n.map(r=>{r.name&&indexedDB.deleteDatabase(r.name)}))}},loadStubData=async n=>{await clearData(),await n.changeName({name:"Me !",language:"en"});const r=(await __vitePreload(async()=>{const{default:x}=await import("./06-yy_ch01_l01_d01-BgPhPoYF.js");return{default:x}},[],import.meta.url)).default,_=await n.constellation.ajouterÀSFIP({contenu:new Uint8Array(new TextEncoder().encode(r)),nomFichier:"06-yy_ch01_l01_d01.mp3"}),S=(await __vitePreload(async()=>{const{default:x}=await import("./logo-VlxrkOH0.js");return{default:x}},[],import.meta.url)).default,E=await n.constellation.ajouterÀSFIP({contenu:new Uint8Array(new TextEncoder().encode(S)),nomFichier:"logo.svg"});await n.addRelease({[RELEASES_NAME_COLUMN]:"Famous song",[RELEASES_AUTHOR_COLUMN]:"I. B. Astar",[RELEASES_THUMBNAIL_COLUMN]:E,[RELEASES_FILE_COLUMN]:_,[RELEASES_METADATA_COLUMN]:"With an open-access licence, of course.",[RELEASES_CATEGORY_COLUMN]:"audio",[RELEASES_STATUS_COLUMN]:"pending"})};var lib={};Object.defineProperty(lib,"__esModule",{value:!0});var TypedEmitter=lib.TypedEmitter=eventsExports.EventEmitter,dist={},Semaphore={};(function(n){var r=commonjsGlobal&&commonjsGlobal.__awaiter||function(E,x,T,C){return new(T||(T=Promise))(function(I,B){function A(O){try{N(C.next(O))}catch(M){B(M)}}function D(O){try{N(C.throw(O))}catch(M){B(M)}}function N(O){O.done?I(O.value):new T(function(M){M(O.value)}).then(A,D)}N((C=C.apply(E,x||[])).next())})},_=commonjsGlobal&&commonjsGlobal.__generator||function(E,x){var T={label:0,sent:function(){if(B[0]&1)throw B[1];return B[1]},trys:[],ops:[]},C,I,B;return{next:A(0),throw:A(1),return:A(2)};function A(N){return function(O){return D([N,O])}}function D(N){if(C)throw new TypeError("Generator is already executing.");for(;T;)try{if(C=1,I&&(B=I[N[0]&2?"return":N[0]?"throw":"next"])&&!(B=B.call(I,N[1])).done)return B;switch(I=0,B&&(N=[0,B.value]),N[0]){case 0:case 1:B=N;break;case 4:return T.label++,{value:N[1],done:!1};case 5:T.label++,I=N[1],N=[0];continue;case 7:N=T.ops.pop(),T.trys.pop();continue;default:if(B=T.trys,!(B=B.length>0&&B[B.length-1])&&(N[0]===6||N[0]===2)){T=0;continue}if(N[0]===3&&(!B||N[1]>B[0]&&N[1]0?(this.permits-=1,[2,Promise.resolve(!0)]):[2,new Promise(function(C){return x.promiseResolverQueue.push(C)})]})})},E.prototype.acquire=function(){return r(this,void 0,void 0,function(){return _(this,function(x){return[2,this.wait()]})})},E.prototype.waitFor=function(x){return r(this,void 0,void 0,function(){var T=this,C,I;return _(this,function(B){return this.permits>0?(this.permits-=1,[2,Promise.resolve(!0)]):(C=function(A){},I=new Promise(function(A){C=A}),this.promiseResolverQueue.push(C),setTimeout(function(){var A=T.promiseResolverQueue.indexOf(C);A!==-1&&T.promiseResolverQueue.splice(A,1),C(!1)},x),[2,I])})})},E.prototype.tryAcquire=function(){return this.permits>0?(this.permits-=1,!0):!1},E.prototype.drainPermits=function(){if(this.permits>0){var x=this.permits;return this.permits=0,x}return 0},E.prototype.signal=function(){if(this.permits+=1,this.permits>1&&this.promiseResolverQueue.length>0)throw new Error("this.permits should never be > 0 when there is someone waiting.");if(this.permits===1&&this.promiseResolverQueue.length>0){this.permits-=1;var x=this.promiseResolverQueue.shift();x&&x(!0)}},E.prototype.release=function(){this.signal()},E.prototype.execute=function(x){return r(this,void 0,void 0,function(){return _(this,function(T){switch(T.label){case 0:return[4,this.wait()];case 1:T.sent(),T.label=2;case 2:return T.trys.push([2,,4,5]),[4,x()];case 3:return[2,T.sent()];case 4:return this.signal(),[7];case 5:return[2]}})})},E}();n.default=S})(Semaphore);var Lock$1={},__extends=commonjsGlobal&&commonjsGlobal.__extends||function(){var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,_){r.__proto__=_}||function(r,_){for(var S in _)_.hasOwnProperty(S)&&(r[S]=_[S])};return function(r,_){n(r,_);function S(){this.constructor=r}r.prototype=_===null?Object.create(_):(S.prototype=_.prototype,new S)}}();Lock$1.__esModule=!0;var Semaphore_1=Semaphore,Lock=function(n){__extends(r,n);function r(){return n.call(this,1)||this}return r}(Semaphore_1.default);Lock$1.Lock=Lock;(function(n){function r(S){for(var E in S)n.hasOwnProperty(E)||(n[E]=S[E])}n.__esModule=!0;var _=Semaphore;n.default=_.default,r(Lock$1)})(dist);const variableIdKeys=["trustedSitesSiteIdVariableId","trustedSitesNameVariableId","releasesContentNameVar","releasesFileVar","releasesThumbnailVar","releasesAuthorVar","releasesMetadataVar","releasesCategoryVar","releasesStatusVar","collectionsNameVar","collectionsAuthorVar","collectionsThumbnailVar","collectionsMetadataVar","collectionsCategoryVar","collectionsReleasesVar","collectionsStatusVar","featuredReleasesReleaseIdVar","featuredReleasesStartTimeVar","featuredReleasesEndTimeVar","blockedReleasesReleaseIdVar"],useOrbiter=()=>{const n=inject$1("orbiter");if(n)return{orbiter:n};throw new Error("Orbiter not found. Did you register the Orbiter plugin with Vue?")},removeUndefined=n=>Object.fromEntries(Object.entries(n).filter(r=>r[1]!==void 0)),ROOT_DB_JSON_SCHEMA={type:"object",properties:{modDb:{type:"string",nullable:!0},swarmId:{type:"string",nullable:!0}},required:[]},OrbiterSiteDbSchema={type:"object",properties:{modDb:{type:"string"},swarmId:{type:"string"}},required:["modDb","swarmId"]};class Orbiter{siteId;swarmId;initialVariableIds;variableIds;constellation;events;statusType=["approved","deleted","pending","rejected"];contentCategories=["tvShow","movie","audiobook","game","book","music","video","other"];constructor({siteId:r,swarmId:_,variableIds:S,constellation:E}){this.events=new TypedEmitter,this.siteId=r,this.swarmId=_,this.initialVariableIds=S,this.checkVariableIdsComplete(S)&&(this.variableIds=S),this.constellation=E}async setUpSite(){console.log("ici");const r=this.initialVariableIds.trustedSitesSiteIdVariableId||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),_=this.initialVariableIds.trustedSitesNameVariableId||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),S=this.initialVariableIds.featuredReleasesReleaseIdVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),E=this.initialVariableIds.featuredReleasesStartTimeVar||await this.constellation.variables.créerVariable({catégorie:"horoDatage"}),x=this.initialVariableIds.featuredReleasesEndTimeVar||await this.constellation.variables.créerVariable({catégorie:"horoDatage"}),T=this.initialVariableIds.blockedReleasesReleaseIdVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"});console.log("ici 1");const C=this.initialVariableIds.releasesFileVar||await this.constellation.variables.créerVariable({catégorie:"fichier"}),I=this.initialVariableIds.releasesThumbnailVar||await this.constellation.variables.créerVariable({catégorie:"fichier"}),B=this.initialVariableIds.releasesAuthorVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),A=this.initialVariableIds.releasesMetadataVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),D=this.initialVariableIds.releasesContentNameVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"});console.log("ici 2");let N;this.initialVariableIds.releasesCategoryVar?N=this.initialVariableIds.releasesCategoryVar:(N=await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),await this.constellation.variables.ajouterRègleVariable({idVariable:N,règle:{typeRègle:"valeurCatégorique",détails:{type:"fixe",options:this.contentCategories}}}));let O;this.initialVariableIds.releasesStatusVar?O=this.initialVariableIds.releasesStatusVar:(O=await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),await this.constellation.variables.ajouterRègleVariable({idVariable:O,règle:{typeRègle:"valeurCatégorique",détails:{type:"fixe",options:this.statusType}}})),console.log("ici 3");const M=this.initialVariableIds.collectionsNameVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),L=this.initialVariableIds.collectionsAuthorVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),F=this.initialVariableIds.collectionsMetadataVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),U=this.initialVariableIds.collectionsReleasesVar||await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),j=this.initialVariableIds.collectionsThumbnailVar||await this.constellation.variables.créerVariable({catégorie:"fichier"});console.log("ici 4");let z;this.initialVariableIds.collectionsCategoryVar?z=this.initialVariableIds.collectionsCategoryVar:(z=await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),await this.constellation.variables.ajouterRègleVariable({idVariable:z,règle:{typeRègle:"valeurCatégorique",détails:{type:"fixe",options:this.contentCategories}}}));let H;this.initialVariableIds.collectionsStatusVar?H=this.initialVariableIds.collectionsStatusVar:(H=await this.constellation.variables.créerVariable({catégorie:"chaîneNonTraductible"}),await this.constellation.variables.ajouterRègleVariable({idVariable:H,règle:{typeRègle:"valeurCatégorique",détails:{type:"fixe",options:this.statusType}}})),console.log("ici 5");let Q;if(this.swarmId)Q=this.swarmId;else{Q=await this.constellation.nuées.créerNuée({});const ie=this.getSwarmDbSchema({releasesFileVar:C,releasesCategoryVar:N,releasesThumbnailVar:I,releasesAuthorVar:B,releasesContentNameVar:D,releasesMetadataVar:A,releasesStatusVar:O,collectionsAuthorVar:L,collectionsMetadataVar:F,collectionsNameVar:M,collectionsReleasesVar:U,collectionsThumbnailVar:j,collectionsCategoryVar:z,collectionsStatusVar:H,swarmId:Q});for(const pe of ie.tableaux){const ue=pe.clef,W=await this.constellation.nuées.ajouterTableauNuée({idNuée:Q,clefTableau:ue});for(const Y of pe.cols)await this.constellation.nuées.ajouterColonneTableauNuée({idTableau:W,idVariable:Y.idVariable,idColonne:Y.idColonne})}}console.log("ici 6");const J=await this.constellation.bds.créerBdDeSchéma({schéma:{licence:"ODbl-1_0",tableaux:[{cols:[{idVariable:r,idColonne:TRUSTED_SITES_SITE_ID_COL},{idVariable:_,idColonne:TRUSTED_SITES_NAME_COL}],clef:TRUSTED_SITES_TABLE_KEY},{cols:[{idVariable:S,idColonne:FEATURED_RELEASES_RELEASE_ID_COLUMN},{idVariable:E,idColonne:FEATURED_RELEASES_START_TIME_COLUMN},{idVariable:x,idColonne:FEATURED_RELEASES_END_TIME_COLUMN}],clef:FEATURED_RELEASES_TABLE_KEY},{cols:[{idVariable:T,idColonne:BLOCKED_RELEASES_RELEASE_ID_COLUMN}],clef:BLOCKED_RELEASES_TABLE_KEY}]}});console.log("ici 7");const Z={trustedSitesSiteIdVariableId:r,trustedSitesNameVariableId:_,featuredReleasesReleaseIdVar:S,featuredReleasesStartTimeVar:E,featuredReleasesEndTimeVar:x,blockedReleasesReleaseIdVar:T,releasesFileVar:C,releasesAuthorVar:B,releasesContentNameVar:D,releasesThumbnailVar:I,releasesMetadataVar:A,releasesCategoryVar:N,releasesStatusVar:O,collectionsAuthorVar:L,collectionsMetadataVar:F,collectionsNameVar:M,collectionsThumbnailVar:j,collectionsReleasesVar:U,collectionsCategoryVar:z,collectionsStatusVar:H},re=await this.constellation.créerBdIndépendante({type:"keyvalue"});return console.log("ici 8",{modDbId:J}),await this.constellation.orbite.appliquerFonctionBdOrbite({idBd:re,fonction:"put",args:["modDb",J]}),console.log("ici 9"),await this.constellation.orbite.appliquerFonctionBdOrbite({idBd:re,fonction:"put",args:["swarmId",Q]}),console.log("ici 10"),this.events.emit("site configured",{siteId:re,variableIds:Z}),console.log("ici 11"),{siteId:re,variableIds:Z}}checkVariableIdsComplete(r){return!!r&&variableIdKeys.every(_=>Object.keys(r).includes(_)&&r[_])}getSwarmDbSchema({releasesFileVar:r,releasesCategoryVar:_,releasesThumbnailVar:S,releasesAuthorVar:E,releasesContentNameVar:x,releasesMetadataVar:T,releasesStatusVar:C,collectionsNameVar:I,collectionsCategoryVar:B,collectionsReleasesVar:A,collectionsAuthorVar:D,collectionsMetadataVar:N,collectionsThumbnailVar:O,collectionsStatusVar:M,swarmId:L}){return{licence:"ODbl-1_0",nuées:[L],tableaux:[{cols:[{idVariable:r,idColonne:RELEASES_FILE_COLUMN},{idVariable:_,idColonne:RELEASES_CATEGORY_COLUMN},{idVariable:S,idColonne:RELEASES_THUMBNAIL_COLUMN},{idVariable:E,idColonne:RELEASES_AUTHOR_COLUMN},{idVariable:x,idColonne:RELEASES_NAME_COLUMN},{idVariable:T,idColonne:RELEASES_METADATA_COLUMN},{idVariable:C,idColonne:RELEASES_STATUS_COLUMN}],clef:RELEASES_DB_TABLE_KEY},{cols:[{idVariable:I,idColonne:COLLECTIONS_NAME_COLUMN},{idVariable:B,idColonne:COLLECTIONS_CATEGORY_COLUMN},{idVariable:A,idColonne:COLLECTIONS_RELEASES_COLUMN},{idVariable:D,idColonne:COLLECTIONS_AUTHOR_COLUMN},{idVariable:N,idColonne:COLLECTIONS_METADATA_COLUMN},{idVariable:O,idColonne:COLLECTIONS_THUMBNAIL_COLUMN},{idVariable:M,idColonne:COLLECTIONS_STATUS_COLUMN}],clef:COLLECTIONS_DB_TABLE_KEY}]}}async listenForSiteConfigured({f:r}){const _=()=>!!(this.siteId&&this.checkVariableIdsComplete(this.variableIds));r(_());const S=()=>r(_());return this.events.on("site configured",S),async()=>{this.events.off("site configured",S)}}async siteConfigured(){return this.siteId&&this.checkVariableIdsComplete(this.variableIds)?{siteId:this.siteId,variableIds:this.variableIds}:new Promise(r=>{this.events.once("site configured",r)})}async orbiterConfig(){const{siteId:r,variableIds:_}=await this.siteConfigured(),S=await uneFois(async T=>await this.constellation.suivreBd({id:r,type:"keyvalue",f:async C=>T(await C.get("modDb")),schéma:OrbiterSiteDbSchema})),E=await uneFois(async T=>await this.constellation.suivreBd({id:r,type:"keyvalue",f:async C=>T(await C.get("swarmId")),schéma:OrbiterSiteDbSchema}),T=>typeof T=="string"),x=this.getSwarmDbSchema({..._,swarmId:E});return{modDbId:S,swarmId:E,swarmSchema:x}}async followSiteSwarmId({f:r,siteId:_}){return _||({siteId:_}=await this.siteConfigured()),await this.constellation.suivreBdDic({id:_,schéma:ROOT_DB_JSON_SCHEMA,f:S=>{const E=S.swarmId;typeof E=="string"&&r(E)}})}async followSiteModDbId({f:r,siteId:_}){return _||({siteId:_}=await this.siteConfigured()),await this.constellation.suivreBdDic({id:_,schéma:ROOT_DB_JSON_SCHEMA,f:S=>{const E=S.modDb;typeof E=="string"&&r(E)}})}async followTrustedSites({f:r}){const{siteId:_}=await this.siteConfigured();return await suivreBdDeFonction({fRacine:async({fSuivreRacine:S})=>await this.constellation.suivreBd({id:_,f:async E=>await S(await E.get("modDb")),type:"keyvalue",schéma:OrbiterSiteDbSchema}),f:r,fSuivre:async({id:S,fSuivreBd:E})=>this.constellation.bds.suivreDonnéesDeTableauParClef({idBd:S,clefTableau:TRUSTED_SITES_TABLE_KEY,f:E})})}async listenForSiteBlockedReleases({f:r,siteId:_}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:S})=>await this.followSiteModDbId({f:S,siteId:_}),f:ignorerNonDéfinis(r),fSuivre:async({id:S,fSuivreBd:E})=>await this.constellation.bds.suivreDonnéesDeTableauParClef({idBd:S,clefTableau:BLOCKED_RELEASES_TABLE_KEY,f:async x=>{x&&await E(x.map(T=>({cid:T.données[BLOCKED_RELEASES_RELEASE_ID_COLUMN],id:T.id})))}})})}async listenForSiteReleases({f:r,siteId:_,desiredNResults:S=1e3}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:E})=>await this.followSiteSwarmId({f:E,siteId:_}),f:ignorerNonDéfinis(r),fSuivre:async({id:E,fSuivreBd:x})=>{const{fOublier:T}=await this.constellation.nuées.suivreDonnéesTableauNuée({idNuée:E,clefTableau:RELEASES_DB_TABLE_KEY,f:C=>x(C.map(I=>({release:{release:I.élément.données,id:I.élément.id},contributor:I.idCompte}))),nRésultatsDésirés:S,clefsSelonVariables:!1});return T}})}async listenForSiteCollections({f:r,siteId:_,desiredNResults:S=1e3}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:E})=>await this.followSiteSwarmId({f:E,siteId:_}),f:ignorerNonDéfinis(r),fSuivre:async({id:E,fSuivreBd:x})=>{const{fOublier:T}=await this.constellation.nuées.suivreDonnéesTableauNuée({idNuée:E,clefTableau:COLLECTIONS_DB_TABLE_KEY,f:C=>x(C.map(I=>({collection:{collection:I.élément.données,id:I.élément.id},contributor:I.idCompte}))),nRésultatsDésirés:S,clefsSelonVariables:!1});return T}})}async listenForSiteFeaturedReleases({f:r,siteId:_}){return await suivreBdDeFonction({fRacine:async({fSuivreRacine:S})=>await this.followSiteSwarmId({f:S,siteId:_}),f:ignorerNonDéfinis(r),fSuivre:async({id:S,fSuivreBd:E})=>{const{fOublier:x}=await this.constellation.nuées.suivreDonnéesTableauNuée({idNuée:S,clefTableau:FEATURED_RELEASES_TABLE_KEY,f:T=>E(T.map(C=>({id:C.élément.id,featured:C.élément.données}))),clefsSelonVariables:!1});return x}})}async listenForReleases({f:r}){const{siteId:_}=await this.siteConfigured(),S={};let E=!1;const x=new dist.Lock,T=async()=>{const A=Object.values(S).map(N=>N.blockedCids||[]).flat(),D=Object.entries(S).map(N=>(N[1].entries||[]).map(O=>({...O,site:N[0]}))).flat().filter(N=>!A.includes(N.release.release.file));await r(D)},C=async A=>{const D=(A||[]).map(M=>M.données);if(D.push({[TRUSTED_SITES_SITE_ID_COL]:_,[TRUSTED_SITES_NAME_COL]:"Me !"}),await x.acquire(),E)return;const N=D.filter(M=>!Object.keys(S).includes(M.siteName)),O=Object.keys(S).filter(M=>!D.some(L=>L.siteName===M));for(const M of N){const L=[],{siteName:F}=M;S[F]={},this.listenForSiteBlockedReleases({f:async U=>{S[F].blockedCids=U?.map(j=>j.cid),await T()},siteId:M.siteId}).then(U=>L.push(U)),this.listenForSiteReleases({f:async U=>{S[F].entries=U,await T()},siteId:M.siteId}).then(U=>L.push(U)),S[F].fForget=async()=>{await Promise.all(L.map(U=>U()))},await T()}for(const M of O){const{fForget:L}=S[M];L&&await L(),delete S[M]}await T(),x.release()};await C();let I;return this.followTrustedSites({f:C}).then(A=>I=A),async()=>{E=!0,I&&await I(),await Promise.all(Object.values(S).map(A=>A.fForget?A.fForget():Promise.resolve()))}}async listenForCollections({f:r}){const{siteId:_}=await this.siteConfigured(),S={};let E=!1;const x=new dist.Lock,T=async()=>{const A=Object.entries(S).map(D=>(D[1].entries||[]).map(N=>({...N,site:D[0]}))).flat();await r(A)},C=async A=>{const D=(A||[]).map(M=>M.données);if(D.push({[TRUSTED_SITES_SITE_ID_COL]:_,[TRUSTED_SITES_NAME_COL]:"Me !"}),await x.acquire(),E)return;const N=D.filter(M=>!Object.keys(S).includes(M.siteName)),O=Object.keys(S).filter(M=>!D.some(L=>L.siteName===M));for(const M of N){const L=[],{siteName:F}=M;S[F]={},this.listenForSiteCollections({f:async U=>{S[F].entries=U,await T()},siteId:M.siteId}).then(U=>L.push(U)),S[F].fForget=async()=>{await Promise.all(L.map(U=>U()))},await T()}for(const M of O){const{fForget:L}=S[M];L&&await L(),delete S[M]}await T(),x.release()};await C();let I;return this.followTrustedSites({f:C}).then(A=>I=A),async()=>{E=!0,I&&await I(),await Promise.all(Object.values(S).map(A=>A.fForget?A.fForget():Promise.resolve()))}}async listenForFeaturedReleases({f:r}){const{siteId:_}=await this.siteConfigured(),S={};let E=!1;const x=new dist.Lock,T=async()=>{const A=Object.entries(S).map(D=>(D[1].featuredReleases||[]).map(N=>({...N,site:D[0]}))).flat();await r(A)},C=async A=>{const D=(A||[]).map(M=>M.données);if(D.push({[TRUSTED_SITES_SITE_ID_COL]:_,[TRUSTED_SITES_NAME_COL]:"Me !"}),await x.acquire(),E)return;const N=D.filter(M=>!Object.keys(S).includes(M.siteName)),O=Object.keys(S).filter(M=>!D.some(L=>L.siteName===M));for(const M of N){const L=[],{siteName:F}=M;S[F]={},this.listenForSiteFeaturedReleases({f:async U=>{S[F].featuredReleases=U.map(j=>j.featured),await T()},siteId:M.siteId}).then(U=>L.push(U)),S[F].fForget=async()=>{await Promise.all(L.map(U=>U()))},await T()}for(const M of O){const{fForget:L}=S[M];L&&await L(),delete S[M]}await T(),x.release()};await C();let I;return this.followTrustedSites({f:C}).then(A=>I=A),async()=>{E=!0,I&&await I(),await Promise.all(Object.values(S).map(A=>A.fForget?A.fForget():Promise.resolve()))}}async addRelease(r){const{swarmId:_,swarmSchema:S}=await this.orbiterConfig();await this.constellation.bds.ajouterÉlémentÀTableauUnique({schémaBd:S,idNuéeUnique:_,clefTableau:RELEASES_DB_TABLE_KEY,vals:removeUndefined(r)})}async removeRelease(r){const{swarmId:_,swarmSchema:S}=await this.orbiterConfig();await this.constellation.bds.effacerÉlémentDeTableauUnique({schémaBd:S,idNuéeUnique:_,clefTableau:RELEASES_DB_TABLE_KEY,idÉlément:r})}async editRelease({release:r,releaseId:_}){const{swarmId:S,swarmSchema:E}=await this.orbiterConfig();return await this.constellation.bds.modifierÉlémentDeTableauUnique({vals:r,schémaBd:E,idNuéeUnique:S,clefTableau:RELEASES_DB_TABLE_KEY,idÉlément:_})}async addCollection(r){const{swarmId:_,swarmSchema:S}=await this.orbiterConfig();await this.constellation.bds.ajouterÉlémentÀTableauUnique({schémaBd:S,idNuéeUnique:_,clefTableau:COLLECTIONS_DB_TABLE_KEY,vals:removeUndefined(r)})}async removeCollection(r){const{swarmId:_,swarmSchema:S}=await this.orbiterConfig();await this.constellation.bds.effacerÉlémentDeTableauUnique({schémaBd:S,idNuéeUnique:_,clefTableau:COLLECTIONS_DB_TABLE_KEY,idÉlément:r})}async editCollection({collection:r,collectionId:_}){const{swarmId:S,swarmSchema:E}=await this.orbiterConfig();return await this.constellation.bds.modifierÉlémentDeTableauUnique({vals:r,schémaBd:E,idNuéeUnique:S,clefTableau:COLLECTIONS_DB_TABLE_KEY,idÉlément:_})}async getCollectionReleasesSetId({collectionId:r}){const S=(await uneFois(async E=>await this.listenForCollections({f:async x=>E(x.map(T=>T.collection))}))).find(E=>E.id===r);if(!S)throw new Error("Collection not found.");return S.collection[COLLECTIONS_RELEASES_COLUMN]}async addReleaseToCollection({releaseId:r,collectionId:_}){const S=await this.getCollectionReleasesSetId({collectionId:_});await this.constellation.orbite.appliquerFonctionBdOrbite({idBd:S,fonction:"add",args:[r]})}async removeReleaseFromCollection({releaseId:r,collectionId:_}){const S=await this.getCollectionReleasesSetId({collectionId:_});await this.constellation.orbite.appliquerFonctionBdOrbite({idBd:S,fonction:"remove",args:[r]})}async changeName({name:r,language:_}){r?await this.constellation.profil.sauvegarderNom({langue:_,nom:r}):await this.constellation.profil.effacerNom({langue:_})}async changeProfilePhoto({image:r}){return r?await this.constellation.profil.sauvegarderImage({image:r}):await this.constellation.profil.effacerImage()}async addContactInfo({type:r,contact:_}){return await this.constellation.profil.sauvegarderContact({type:r,contact:_})}async removeContactInfo({type:r,contact:_}){return await this.constellation.profil.effacerContact({type:r,contact:_})}async deleteAccount(){return await this.constellation.fermerCompte()}async listenForAccountId({f:r}){return await this.constellation.suivreIdCompte({f:r})}async listenForAccountExists({f:r}){return await this.constellation.profil.suivreInitialisé({f:r})}async listenForNameChange({f:r,accountId:_}){return await this.constellation.profil.suivreNoms({f:r,idCompte:_})}async listenForContactInfoChange({f:r,accountId:_}){return await this.constellation.profil.suivreContacts({f:r,idCompte:_})}async listenForProfilePhotoChange({f:r,accountId:_}){return await this.constellation.profil.suivreImage({f:r,idCompte:_})}async featureRelease({cid:r,startTime:_,endTime:S}){const{modDbId:E}=await this.orbiterConfig();return(await this.constellation.bds.ajouterÉlémentÀTableauParClef({idBd:E,clefTableau:FEATURED_RELEASES_TABLE_KEY,vals:{[FEATURED_RELEASES_RELEASE_ID_COLUMN]:r,[FEATURED_RELEASES_START_TIME_COLUMN]:_,[FEATURED_RELEASES_END_TIME_COLUMN]:S}}))[0]}async listenToIsModerator({f:r,userId:_}){_=_||await this.constellation.obtIdCompte();const{siteId:S}=await this.siteConfigured(),E=x=>x==="MODÉRATEUR"?"ADMIN":x==="MEMBRE"?"MODERATOR":void 0;return await this.constellation.suivreAccèsBd({id:S,f:x=>r(E(x.find(T=>T.idCompte===_)?.rôle))})}async inviteModerator({userId:r,admin:_=!1}){const{siteId:S}=await this.siteConfigured(),{modDbId:E,swarmId:x}=await this.orbiterConfig();await this.constellation.nuées.inviterAuteur({idNuée:x,idCompteAuteur:r,rôle:_?"MODÉRATEUR":"MEMBRE"}),await this.constellation.bds.inviterAuteur({idBd:E,idCompteAuteur:r,rôle:_?"MODÉRATEUR":"MEMBRE"}),_&&await this.constellation.donnerAccès({idBd:S,identité:r,rôle:"MODÉRATEUR"})}async blockRelease({cid:r}){const{modDbId:_}=await this.orbiterConfig();return(await this.constellation.bds.ajouterÉlémentÀTableauParClef({idBd:_,clefTableau:BLOCKED_RELEASES_TABLE_KEY,vals:{[BLOCKED_RELEASES_RELEASE_ID_COLUMN]:r}}))[0]}async unblockRelease({id:r}){const{modDbId:_}=await this.orbiterConfig();await this.constellation.bds.effacerÉlémentDeTableauParClef({idBd:_,clefTableau:BLOCKED_RELEASES_TABLE_KEY,idÉlément:r})}async makeSitePrivate(){const{swarmId:r}=await this.orbiterConfig(),_=await this.constellation.nuées.obtGestionnaireAutorisationsDeNuée({idNuée:r});await this.constellation.nuées.changerPhisolophieAutorisation({idAutorisation:_,philosophie:"CJPI"})}async makeSitePublic(){const{swarmId:r}=await this.orbiterConfig(),_=await this.constellation.nuées.obtGestionnaireAutorisationsDeNuée({idNuée:r});await this.constellation.nuées.changerPhisolophieAutorisation({idAutorisation:_,philosophie:"IJPC"})}async inviteUser({userId:r}){const{swarmId:_}=await this.orbiterConfig();await this.constellation.nuées.accepterMembreNuée({idNuée:_,idCompte:r})}async blockUser({userId:r}){const{swarmId:_}=await this.orbiterConfig();await this.constellation.nuées.exclureMembreDeNuée({idNuée:_,idCompte:r})}async trustSite({siteId:r,siteName:_}){const{modDbId:S}=await this.orbiterConfig();return(await this.constellation.bds.ajouterÉlémentÀTableauParClef({idBd:S,clefTableau:TRUSTED_SITES_TABLE_KEY,vals:{[TRUSTED_SITES_SITE_ID_COL]:r,[TRUSTED_SITES_NAME_COL]:_}}))[0]}async editTrustedSite({elementId:r,site:_}){const{modDbId:S}=await this.orbiterConfig();await this.constellation.bds.modifierÉlémentDeTableauParClef({idBd:S,clefTableau:TRUSTED_SITES_TABLE_KEY,idÉlément:r,vals:_})}async untrustSite({elementId:r}){const{modDbId:_}=await this.orbiterConfig();await this.constellation.bds.effacerÉlémentDeTableauParClef({idBd:_,clefTableau:TRUSTED_SITES_TABLE_KEY,idÉlément:r})}}var define_import_meta_env_default={VITE_SITE_ID:"/orbitdb/zdpuAzXCgBVMkM2WcV3AyDWU7WJzdCgH8fFiHx8nyWE17VfSX",VITE_TRUSTED_SITES_SITE_ID_VAR_ID:"/orbitdb/zdpuAtvsAK6ihHUmw9rLG2YZQA8d42cZLpbJTmvs4PgWZNwAo",VITE_TRUSTED_SITES_NAME_VAR_ID:"/orbitdb/zdpuArAw23QtbkUwXmyFXvyiHNqmbR3EktGnGB5uhGX98EjTu",VITE_RELEASES_FILE_VAR_ID:"/orbitdb/zdpuAkgtpMwVQjN1ArWWLq8oqJbJS34fss6btmg1FqgjqE2A2",VITE_RELEASES_CATEGORY_VAR_ID:"/orbitdb/zdpuAwnKnScLQhutuGSuknzfcDriVwqzvbMGFvceB2JwWbB6U",VITE_RELEASES_AUTHOR_VAR_ID:"/orbitdb/zdpuAtgmz5RDYp4esiD58GGjDJQ5txosWhSdhd4vmm6qXdbdf",VITE_RELEASES_CONTENT_NAME_VAR_ID:"/orbitdb/zdpuAzvnBMVVNyizJNWPFMqgSXNMqeynQB9MZWRhXQVUtzguL",VITE_RELEASES_METADATA_VAR_ID:"/orbitdb/zdpuB1uAB9Aqo7YaUvE6sWbCe6LpACXrPwZS1P9JdfTvzZVET",VITE_RELEASES_THUMBNAIL_VAR_ID:"/orbitdb/zdpuAqCDweUem8NoabFojBsW3S9JLftXj3NonEsskAvV23Jqs",VITE_COLLECTIONS_AUTHOR_VAR_ID:"/orbitdb/zdpuAqZ5uKA4oJUSPE6kfSoYAiKhu9aYvtVMaf8Gd8onwNWuR",VITE_COLLECTIONS_METADATA_VAR_ID:"/orbitdb/zdpuAvjcpUQnu5pAaHbxBg2ubrSg1fsdteydqupVdM4L1x7oq",VITE_COLLECTIONS_NAME_VAR_ID:"/orbitdb/zdpuAtz3b8uUCNxYJtzJDhPm5VTvdaK2qM1WXXMUa6LudZLru",VITE_COLLECTIONS_RELEASES_VAR_ID:"/orbitdb/zdpuAkbDeVh7RamHNV5mr57z9qG8Kjatz3wYZWn2hmPexBCyW",VITE_COLLECTIONS_THUMBNAIL_VAR_ID:"/orbitdb/zdpuAsPhTDX5vjM83GRcLrq3gV7BeLxrg8LYNmQ1F6j5BxKsF",VITE_COLLECTIONS_CATEGORY_VAR_ID:"/orbitdb/zdpuAu6nb7VSwwhPRNVMwvPmJPxe5E7nbMuoXC38TWdjWnvpF",VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID:"/orbitdb/zdpuB3bzESUQLmziMrphiVzCkyKFkNJ8bejXKD9HhUcT5QG7A",VITE_FEATURED_RELEASES_START_TIME_VAR_ID:"/orbitdb/zdpuAmzaq7BN2FUAPArPPka2jtQZhftzM3qBbreKMPqZW2r9e",VITE_FEATURED_RELEASES_END_TIME_VAR_ID:"/orbitdb/zdpuB27Y8FFZ57gSv7ysbL8EznqSKDHo5DZPP6auC8r16VmHg",VITE_APP_VERSION:"0.2.0",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const orbiter={install:n=>{const r=getVariableIds(),_=n.config.globalProperties.$constl,S=new Orbiter({constellation:_,siteId:r?"/orbitdb/zdpuAzXCgBVMkM2WcV3AyDWU7WJzdCgH8fFiHx8nyWE17VfSX":void 0,swarmId:r?define_import_meta_env_default.VITE_SWARM_ID:void 0,variableIds:r});n.config.globalProperties.$orbiter=S,define_import_meta_env_default.VITE_STUB_DATA&&loadStubData(S),n.provide("orbiter",S)}},getVariableIds=()=>{const{VITE_TRUSTED_SITES_SITE_ID_VAR_ID:n,VITE_TRUSTED_SITES_NAME_VAR_ID:r,VITE_RELEASES_FILE_VAR_ID:_,VITE_RELEASES_CATEGORY_VAR_ID:S,VITE_RELEASES_AUTHOR_VAR_ID:E,VITE_RELEASES_CONTENT_NAME_VAR_ID:x,VITE_RELEASES_METADATA_VAR_ID:T,VITE_RELEASES_THUMBNAIL_VAR_ID:C,VITE_RELEASES_STATUS_VAR_ID:I,VITE_COLLECTIONS_AUTHOR_VAR_ID:B,VITE_COLLECTIONS_METADATA_VAR_ID:A,VITE_COLLECTIONS_NAME_VAR_ID:D,VITE_COLLECTIONS_RELEASES_VAR_ID:N,VITE_COLLECTIONS_THUMBNAIL_VAR_ID:O,VITE_COLLECTIONS_CATEGORY_VAR_ID:M,VITE_COLLECTIONS_STATUS_VAR_ID:L,VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID:F,VITE_FEATURED_RELEASES_START_TIME_VAR_ID:U,VITE_FEATURED_RELEASES_END_TIME_VAR_ID:j}=define_import_meta_env_default;return{trustedSitesSiteIdVariableId:n,trustedSitesNameVariableId:r,releasesFileVar:_,releasesCategoryVar:S,releasesAuthorVar:E,releasesContentNameVar:x,releasesMetadataVar:T,releasesThumbnailVar:C,releasesStatusVar:I,collectionsAuthorVar:B,collectionsMetadataVar:A,collectionsNameVar:D,collectionsReleasesVar:N,collectionsThumbnailVar:O,collectionsCategoryVar:M,collectionsStatusVar:L,featuredReleasesReleaseIdVar:F,featuredReleasesStartTimeVar:U,featuredReleasesEndTimeVar:j}};function registerPlugins(n){loadFonts(),n.use(vuetify),n.use(orbiter)}function inscrireExtentions(n){n.use(constellationNavigateur),registerPlugins(n)}/*! * vue-router v4.4.5 * (c) 2024 Eduardo San Martin Morote * @license MIT - */const isBrowser=typeof document<"u";function isRouteComponent(n){return typeof n=="object"||"displayName"in n||"props"in n||"__vccOpts"in n}function isESModule(n){return n.__esModule||n[Symbol.toStringTag]==="Module"||n.default&&isRouteComponent(n.default)}const assign=Object.assign;function applyToParams(n,r){const _={};for(const S in r){const E=r[S];_[S]=isArray(E)?E.map(n):n(E)}return _}const noop=()=>{},isArray=Array.isArray,HASH_RE=/#/g,AMPERSAND_RE=/&/g,SLASH_RE=/\//g,EQUAL_RE=/=/g,IM_RE=/\?/g,PLUS_RE=/\+/g,ENC_BRACKET_OPEN_RE=/%5B/g,ENC_BRACKET_CLOSE_RE=/%5D/g,ENC_CARET_RE=/%5E/g,ENC_BACKTICK_RE=/%60/g,ENC_CURLY_OPEN_RE=/%7B/g,ENC_PIPE_RE=/%7C/g,ENC_CURLY_CLOSE_RE=/%7D/g,ENC_SPACE_RE=/%20/g;function commonEncode(n){return encodeURI(""+n).replace(ENC_PIPE_RE,"|").replace(ENC_BRACKET_OPEN_RE,"[").replace(ENC_BRACKET_CLOSE_RE,"]")}function encodeHash(n){return commonEncode(n).replace(ENC_CURLY_OPEN_RE,"{").replace(ENC_CURLY_CLOSE_RE,"}").replace(ENC_CARET_RE,"^")}function encodeQueryValue(n){return commonEncode(n).replace(PLUS_RE,"%2B").replace(ENC_SPACE_RE,"+").replace(HASH_RE,"%23").replace(AMPERSAND_RE,"%26").replace(ENC_BACKTICK_RE,"`").replace(ENC_CURLY_OPEN_RE,"{").replace(ENC_CURLY_CLOSE_RE,"}").replace(ENC_CARET_RE,"^")}function encodeQueryKey(n){return encodeQueryValue(n).replace(EQUAL_RE,"%3D")}function encodePath(n){return commonEncode(n).replace(HASH_RE,"%23").replace(IM_RE,"%3F")}function encodeParam(n){return n==null?"":encodePath(n).replace(SLASH_RE,"%2F")}function decode(n){try{return decodeURIComponent(""+n)}catch{}return""+n}const TRAILING_SLASH_RE=/\/$/,removeTrailingSlash=n=>n.replace(TRAILING_SLASH_RE,"");function parseURL(n,r,_="/"){let S,E={},x="",T="";const C=r.indexOf("#");let I=r.indexOf("?");return C=0&&(I=-1),I>-1&&(S=r.slice(0,I),x=r.slice(I+1,C>-1?C:r.length),E=n(x)),C>-1&&(S=S||r.slice(0,C),T=r.slice(C,r.length)),S=resolveRelativePath(S??r,_),{fullPath:S+(x&&"?")+x+T,path:S,query:E,hash:decode(T)}}function stringifyURL(n,r){const _=r.query?n(r.query):"";return r.path+(_&&"?")+_+(r.hash||"")}function stripBase(n,r){return!r||!n.toLowerCase().startsWith(r.toLowerCase())?n:n.slice(r.length)||"/"}function isSameRouteLocation(n,r,_){const S=r.matched.length-1,E=_.matched.length-1;return S>-1&&S===E&&isSameRouteRecord(r.matched[S],_.matched[E])&&isSameRouteLocationParams(r.params,_.params)&&n(r.query)===n(_.query)&&r.hash===_.hash}function isSameRouteRecord(n,r){return(n.aliasOf||n)===(r.aliasOf||r)}function isSameRouteLocationParams(n,r){if(Object.keys(n).length!==Object.keys(r).length)return!1;for(const _ in n)if(!isSameRouteLocationParamsValue(n[_],r[_]))return!1;return!0}function isSameRouteLocationParamsValue(n,r){return isArray(n)?isEquivalentArray(n,r):isArray(r)?isEquivalentArray(r,n):n===r}function isEquivalentArray(n,r){return isArray(r)?n.length===r.length&&n.every((_,S)=>_===r[S]):n.length===1&&n[0]===r}function resolveRelativePath(n,r){if(n.startsWith("/"))return n;if(!n)return r;const _=r.split("/"),S=n.split("/"),E=S[S.length-1];(E===".."||E===".")&&S.push("");let x=_.length-1,T,C;for(T=0;T1&&x--;else break;return _.slice(0,x).join("/")+"/"+S.slice(T).join("/")}const START_LOCATION_NORMALIZED={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var NavigationType;(function(n){n.pop="pop",n.push="push"})(NavigationType||(NavigationType={}));var NavigationDirection;(function(n){n.back="back",n.forward="forward",n.unknown=""})(NavigationDirection||(NavigationDirection={}));function normalizeBase(n){if(!n)if(isBrowser){const r=document.querySelector("base");n=r&&r.getAttribute("href")||"/",n=n.replace(/^\w+:\/\/[^\/]+/,"")}else n="/";return n[0]!=="/"&&n[0]!=="#"&&(n="/"+n),removeTrailingSlash(n)}const BEFORE_HASH_RE=/^[^#]+#/;function createHref(n,r){return n.replace(BEFORE_HASH_RE,"#")+r}function getElementPosition(n,r){const _=document.documentElement.getBoundingClientRect(),S=n.getBoundingClientRect();return{behavior:r.behavior,left:S.left-_.left-(r.left||0),top:S.top-_.top-(r.top||0)}}const computeScrollPosition=()=>({left:window.scrollX,top:window.scrollY});function scrollToPosition(n){let r;if("el"in n){const _=n.el,S=typeof _=="string"&&_.startsWith("#"),E=typeof _=="string"?S?document.getElementById(_.slice(1)):document.querySelector(_):_;if(!E)return;r=getElementPosition(E,n)}else r=n;"scrollBehavior"in document.documentElement.style?window.scrollTo(r):window.scrollTo(r.left!=null?r.left:window.scrollX,r.top!=null?r.top:window.scrollY)}function getScrollKey(n,r){return(history.state?history.state.position-r:-1)+n}const scrollPositions=new Map;function saveScrollPosition(n,r){scrollPositions.set(n,r)}function getSavedScrollPosition(n){const r=scrollPositions.get(n);return scrollPositions.delete(n),r}let createBaseLocation=()=>location.protocol+"//"+location.host;function createCurrentLocation(n,r){const{pathname:_,search:S,hash:E}=r,x=n.indexOf("#");if(x>-1){let C=E.includes(n.slice(x))?n.slice(x).length:1,I=E.slice(C);return I[0]!=="/"&&(I="/"+I),stripBase(I,"")}return stripBase(_,n)+S+E}function useHistoryListeners(n,r,_,S){let E=[],x=[],T=null;const C=({state:N})=>{const O=createCurrentLocation(n,location),M=_.value,L=r.value;let F=0;if(N){if(_.value=O,r.value=N,T&&T===M){T=null;return}F=L?N.position-L.position:0}else S(O);E.forEach(U=>{U(_.value,M,{delta:F,type:NavigationType.pop,direction:F?F>0?NavigationDirection.forward:NavigationDirection.back:NavigationDirection.unknown})})};function I(){T=_.value}function B(N){E.push(N);const O=()=>{const M=E.indexOf(N);M>-1&&E.splice(M,1)};return x.push(O),O}function A(){const{history:N}=window;N.state&&N.replaceState(assign({},N.state,{scroll:computeScrollPosition()}),"")}function D(){for(const N of x)N();x=[],window.removeEventListener("popstate",C),window.removeEventListener("beforeunload",A)}return window.addEventListener("popstate",C),window.addEventListener("beforeunload",A,{passive:!0}),{pauseListeners:I,listen:B,destroy:D}}function buildState(n,r,_,S=!1,E=!1){return{back:n,current:r,forward:_,replaced:S,position:window.history.length,scroll:E?computeScrollPosition():null}}function useHistoryStateNavigation(n){const{history:r,location:_}=window,S={value:createCurrentLocation(n,_)},E={value:r.state};E.value||x(S.value,{back:null,current:S.value,forward:null,position:r.length-1,replaced:!0,scroll:null},!0);function x(I,B,A){const D=n.indexOf("#"),N=D>-1?(_.host&&document.querySelector("base")?n:n.slice(D))+I:createBaseLocation()+n+I;try{r[A?"replaceState":"pushState"](B,"",N),E.value=B}catch(O){console.error(O),_[A?"replace":"assign"](N)}}function T(I,B){const A=assign({},r.state,buildState(E.value.back,I,E.value.forward,!0),B,{position:E.value.position});x(I,A,!0),S.value=I}function C(I,B){const A=assign({},E.value,r.state,{forward:I,scroll:computeScrollPosition()});x(A.current,A,!0);const D=assign({},buildState(S.value,I,null),{position:A.position+1},B);x(I,D,!1),S.value=I}return{location:S,state:E,push:C,replace:T}}function createWebHistory(n){n=normalizeBase(n);const r=useHistoryStateNavigation(n),_=useHistoryListeners(n,r.state,r.location,r.replace);function S(x,T=!0){T||_.pauseListeners(),history.go(x)}const E=assign({location:"",base:n,go:S,createHref:createHref.bind(null,n)},r,_);return Object.defineProperty(E,"location",{enumerable:!0,get:()=>r.location.value}),Object.defineProperty(E,"state",{enumerable:!0,get:()=>r.state.value}),E}function createWebHashHistory(n){return n=location.host?n||location.pathname+location.search:"",n.includes("#")||(n+="#"),createWebHistory(n)}function isRouteLocation(n){return typeof n=="string"||n&&typeof n=="object"}function isRouteName(n){return typeof n=="string"||typeof n=="symbol"}const NavigationFailureSymbol=Symbol("");var NavigationFailureType;(function(n){n[n.aborted=4]="aborted",n[n.cancelled=8]="cancelled",n[n.duplicated=16]="duplicated"})(NavigationFailureType||(NavigationFailureType={}));function createRouterError(n,r){return assign(new Error,{type:n,[NavigationFailureSymbol]:!0},r)}function isNavigationFailure(n,r){return n instanceof Error&&NavigationFailureSymbol in n&&(r==null||!!(n.type&r))}const BASE_PARAM_PATTERN="[^/]+?",BASE_PATH_PARSER_OPTIONS={sensitive:!1,strict:!1,start:!0,end:!0},REGEX_CHARS_RE=/[.+*?^${}()[\]/\\]/g;function tokensToParser(n,r){const _=assign({},BASE_PATH_PARSER_OPTIONS,r),S=[];let E=_.start?"^":"";const x=[];for(const B of n){const A=B.length?[]:[90];_.strict&&!B.length&&(E+="/");for(let D=0;Dr.length?r.length===1&&r[0]===80?1:-1:0}function comparePathParserScore(n,r){let _=0;const S=n.score,E=r.score;for(;_0&&r[r.length-1]<0}const ROOT_TOKEN={type:0,value:""},VALID_PARAM_RE=/[a-zA-Z0-9_]/;function tokenizePath(n){if(!n)return[[]];if(n==="/")return[[ROOT_TOKEN]];if(!n.startsWith("/"))throw new Error(`Invalid path "${n}"`);function r(O){throw new Error(`ERR (${_})/"${B}": ${O}`)}let _=0,S=_;const E=[];let x;function T(){x&&E.push(x),x=[]}let C=0,I,B="",A="";function D(){B&&(_===0?x.push({type:0,value:B}):_===1||_===2||_===3?(x.length>1&&(I==="*"||I==="+")&&r(`A repeatable param (${B}) must be alone in its segment. eg: '/:ids+.`),x.push({type:1,value:B,regexp:A,repeatable:I==="*"||I==="+",optional:I==="*"||I==="?"})):r("Invalid state to consume buffer"),B="")}function N(){B+=I}for(;C{T(z)}:noop}function T(D){if(isRouteName(D)){const N=S.get(D);N&&(S.delete(D),_.splice(_.indexOf(N),1),N.children.forEach(T),N.alias.forEach(T))}else{const N=_.indexOf(D);N>-1&&(_.splice(N,1),D.record.name&&S.delete(D.record.name),D.children.forEach(T),D.alias.forEach(T))}}function C(){return _}function I(D){const N=findInsertionIndex(D,_);_.splice(N,0,D),D.record.name&&!isAliasRecord(D)&&S.set(D.record.name,D)}function B(D,N){let O,M={},L,F;if("name"in D&&D.name){if(O=S.get(D.name),!O)throw createRouterError(1,{location:D});F=O.record.name,M=assign(paramsFromLocation(N.params,O.keys.filter(z=>!z.optional).concat(O.parent?O.parent.keys.filter(z=>z.optional):[]).map(z=>z.name)),D.params&¶msFromLocation(D.params,O.keys.map(z=>z.name))),L=O.stringify(M)}else if(D.path!=null)L=D.path,O=_.find(z=>z.re.test(L)),O&&(M=O.parse(L),F=O.record.name);else{if(O=N.name?S.get(N.name):_.find(z=>z.re.test(N.path)),!O)throw createRouterError(1,{location:D,currentLocation:N});F=O.record.name,M=assign({},N.params,D.params),L=O.stringify(M)}const U=[];let j=O;for(;j;)U.unshift(j.record),j=j.parent;return{name:F,path:L,params:M,matched:U,meta:mergeMetaFields(U)}}n.forEach(D=>x(D));function A(){_.length=0,S.clear()}return{addRoute:x,resolve:B,removeRoute:T,clearRoutes:A,getRoutes:C,getRecordMatcher:E}}function paramsFromLocation(n,r){const _={};for(const S of r)S in n&&(_[S]=n[S]);return _}function normalizeRouteRecord(n){const r={path:n.path,redirect:n.redirect,name:n.name,meta:n.meta||{},aliasOf:n.aliasOf,beforeEnter:n.beforeEnter,props:normalizeRecordProps(n),children:n.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in n?n.components||null:n.component&&{default:n.component}};return Object.defineProperty(r,"mods",{value:{}}),r}function normalizeRecordProps(n){const r={},_=n.props||!1;if("component"in n)r.default=_;else for(const S in n.components)r[S]=typeof _=="object"?_[S]:_;return r}function isAliasRecord(n){for(;n;){if(n.record.aliasOf)return!0;n=n.parent}return!1}function mergeMetaFields(n){return n.reduce((r,_)=>assign(r,_.meta),{})}function mergeOptions(n,r){const _={};for(const S in n)_[S]=S in r?r[S]:n[S];return _}function findInsertionIndex(n,r){let _=0,S=r.length;for(;_!==S;){const x=_+S>>1;comparePathParserScore(n,r[x])<0?S=x:_=x+1}const E=getInsertionAncestor(n);return E&&(S=r.lastIndexOf(E,S-1)),S}function getInsertionAncestor(n){let r=n;for(;r=r.parent;)if(isMatchable(r)&&comparePathParserScore(n,r)===0)return r}function isMatchable({record:n}){return!!(n.name||n.components&&Object.keys(n.components).length||n.redirect)}function parseQuery(n){const r={};if(n===""||n==="?")return r;const S=(n[0]==="?"?n.slice(1):n).split("&");for(let E=0;Ex&&encodeQueryValue(x)):[S&&encodeQueryValue(S)]).forEach(x=>{x!==void 0&&(r+=(r.length?"&":"")+_,x!=null&&(r+="="+x))})}return r}function normalizeQuery(n){const r={};for(const _ in n){const S=n[_];S!==void 0&&(r[_]=isArray(S)?S.map(E=>E==null?null:""+E):S==null?S:""+S)}return r}const matchedRouteKey=Symbol(""),viewDepthKey=Symbol(""),routerKey=Symbol(""),routeLocationKey=Symbol(""),routerViewLocationKey=Symbol("");function useCallbacks(){let n=[];function r(S){return n.push(S),()=>{const E=n.indexOf(S);E>-1&&n.splice(E,1)}}function _(){n=[]}return{add:r,list:()=>n.slice(),reset:_}}function guardToPromiseFn(n,r,_,S,E,x=T=>T()){const T=S&&(S.enterCallbacks[E]=S.enterCallbacks[E]||[]);return()=>new Promise((C,I)=>{const B=N=>{N===!1?I(createRouterError(4,{from:_,to:r})):N instanceof Error?I(N):isRouteLocation(N)?I(createRouterError(2,{from:r,to:N})):(T&&S.enterCallbacks[E]===T&&typeof N=="function"&&T.push(N),C())},A=x(()=>n.call(S&&S.instances[E],r,_,B));let D=Promise.resolve(A);n.length<3&&(D=D.then(B)),D.catch(N=>I(N))})}function extractComponentsGuards(n,r,_,S,E=x=>x()){const x=[];for(const T of n)for(const C in T.components){let I=T.components[C];if(!(r!=="beforeRouteEnter"&&!T.instances[C]))if(isRouteComponent(I)){const A=(I.__vccOpts||I)[r];A&&x.push(guardToPromiseFn(A,_,S,T,C,E))}else{let B=I();x.push(()=>B.then(A=>{if(!A)throw new Error(`Couldn't resolve component "${C}" at "${T.path}"`);const D=isESModule(A)?A.default:A;T.mods[C]=A,T.components[C]=D;const O=(D.__vccOpts||D)[r];return O&&guardToPromiseFn(O,_,S,T,C,E)()}))}}return x}function useLink(n){const r=inject$1(routerKey),_=inject$1(routeLocationKey),S=computed(()=>{const I=unref(n.to);return r.resolve(I)}),E=computed(()=>{const{matched:I}=S.value,{length:B}=I,A=I[B-1],D=_.matched;if(!A||!D.length)return-1;const N=D.findIndex(isSameRouteRecord.bind(null,A));if(N>-1)return N;const O=getOriginalPath(I[B-2]);return B>1&&getOriginalPath(A)===O&&D[D.length-1].path!==O?D.findIndex(isSameRouteRecord.bind(null,I[B-2])):N}),x=computed(()=>E.value>-1&&includesParams(_.params,S.value.params)),T=computed(()=>E.value>-1&&E.value===_.matched.length-1&&isSameRouteLocationParams(_.params,S.value.params));function C(I={}){return guardEvent(I)?r[unref(n.replace)?"replace":"push"](unref(n.to)).catch(noop):Promise.resolve()}return{route:S,href:computed(()=>S.value.href),isActive:x,isExactActive:T,navigate:C}}const RouterLinkImpl=defineComponent$1({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink,setup(n,{slots:r}){const _=reactive(useLink(n)),{options:S}=inject$1(routerKey),E=computed(()=>({[getLinkClass(n.activeClass,S.linkActiveClass,"router-link-active")]:_.isActive,[getLinkClass(n.exactActiveClass,S.linkExactActiveClass,"router-link-exact-active")]:_.isExactActive}));return()=>{const x=r.default&&r.default(_);return n.custom?x:h$2("a",{"aria-current":_.isExactActive?n.ariaCurrentValue:null,href:_.href,onClick:_.navigate,class:E.value},x)}}}),RouterLink=RouterLinkImpl;function guardEvent(n){if(!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)&&!n.defaultPrevented&&!(n.button!==void 0&&n.button!==0)){if(n.currentTarget&&n.currentTarget.getAttribute){const r=n.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(r))return}return n.preventDefault&&n.preventDefault(),!0}}function includesParams(n,r){for(const _ in r){const S=r[_],E=n[_];if(typeof S=="string"){if(S!==E)return!1}else if(!isArray(E)||E.length!==S.length||S.some((x,T)=>x!==E[T]))return!1}return!0}function getOriginalPath(n){return n?n.aliasOf?n.aliasOf.path:n.path:""}const getLinkClass=(n,r,_)=>n??r??_,RouterViewImpl=defineComponent$1({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(n,{attrs:r,slots:_}){const S=inject$1(routerViewLocationKey),E=computed(()=>n.route||S.value),x=inject$1(viewDepthKey,0),T=computed(()=>{let B=unref(x);const{matched:A}=E.value;let D;for(;(D=A[B])&&!D.components;)B++;return B}),C=computed(()=>E.value.matched[T.value]);provide(viewDepthKey,computed(()=>T.value+1)),provide(matchedRouteKey,C),provide(routerViewLocationKey,E);const I=ref$2();return watch(()=>[I.value,C.value,n.name],([B,A,D],[N,O,M])=>{A&&(A.instances[D]=B,O&&O!==A&&B&&B===N&&(A.leaveGuards.size||(A.leaveGuards=O.leaveGuards),A.updateGuards.size||(A.updateGuards=O.updateGuards))),B&&A&&(!O||!isSameRouteRecord(A,O)||!N)&&(A.enterCallbacks[D]||[]).forEach(L=>L(B))},{flush:"post"}),()=>{const B=E.value,A=n.name,D=C.value,N=D&&D.components[A];if(!N)return normalizeSlot(_.default,{Component:N,route:B});const O=D.props[A],M=O?O===!0?B.params:typeof O=="function"?O(B):O:null,F=h$2(N,assign({},M,r,{onVnodeUnmounted:U=>{U.component.isUnmounted&&(D.instances[A]=null)},ref:I}));return normalizeSlot(_.default,{Component:F,route:B})||F}}});function normalizeSlot(n,r){if(!n)return null;const _=n(r);return _.length===1?_[0]:_}const RouterView=RouterViewImpl;function createRouter(n){const r=createRouterMatcher(n.routes,n),_=n.parseQuery||parseQuery,S=n.stringifyQuery||stringifyQuery,E=n.history,x=useCallbacks(),T=useCallbacks(),C=useCallbacks(),I=shallowRef(START_LOCATION_NORMALIZED);let B=START_LOCATION_NORMALIZED;isBrowser&&n.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const A=applyToParams.bind(null,he=>""+he),D=applyToParams.bind(null,encodeParam),N=applyToParams.bind(null,decode);function O(he,me){let Ee,Ce;return isRouteName(he)?(Ee=r.getRecordMatcher(he),Ce=me):Ce=he,r.addRoute(Ce,Ee)}function M(he){const me=r.getRecordMatcher(he);me&&r.removeRoute(me)}function L(){return r.getRoutes().map(he=>he.record)}function F(he){return!!r.getRecordMatcher(he)}function U(he,me){if(me=assign({},me||I.value),typeof he=="string"){const fe=parseURL(_,he,me.path),xe=r.resolve({path:fe.path},me),Ie=E.createHref(fe.fullPath);return assign(fe,xe,{params:N(xe.params),hash:decode(fe.hash),redirectedFrom:void 0,href:Ie})}let Ee;if(he.path!=null)Ee=assign({},he,{path:parseURL(_,he.path,me.path).path});else{const fe=assign({},he.params);for(const xe in fe)fe[xe]==null&&delete fe[xe];Ee=assign({},he,{params:D(fe)}),me.params=D(me.params)}const Ce=r.resolve(Ee,me),be=he.hash||"";Ce.params=A(N(Ce.params));const ge=stringifyURL(S,assign({},he,{hash:encodeHash(be),path:Ce.path})),we=E.createHref(ge);return assign({fullPath:ge,hash:be,query:S===stringifyQuery?normalizeQuery(he.query):he.query||{}},Ce,{redirectedFrom:void 0,href:we})}function j(he){return typeof he=="string"?parseURL(_,he,I.value.path):assign({},he)}function z(he,me){if(B!==he)return createRouterError(8,{from:me,to:he})}function H(he){return Z(he)}function Q(he){return H(assign(j(he),{replace:!0}))}function J(he){const me=he.matched[he.matched.length-1];if(me&&me.redirect){const{redirect:Ee}=me;let Ce=typeof Ee=="function"?Ee(he):Ee;return typeof Ce=="string"&&(Ce=Ce.includes("?")||Ce.includes("#")?Ce=j(Ce):{path:Ce},Ce.params={}),assign({query:he.query,hash:he.hash,params:Ce.path!=null?{}:he.params},Ce)}}function Z(he,me){const Ee=B=U(he),Ce=I.value,be=he.state,ge=he.force,we=he.replace===!0,fe=J(Ee);if(fe)return Z(assign(j(fe),{state:typeof fe=="object"?assign({},be,fe.state):be,force:ge,replace:we}),me||Ee);const xe=Ee;xe.redirectedFrom=me;let Ie;return!ge&&isSameRouteLocation(S,Ce,Ee)&&(Ie=createRouterError(16,{to:xe,from:Ce}),te(Ce,Ce,!0,!1)),(Ie?Promise.resolve(Ie):pe(xe,Ce)).catch(Se=>isNavigationFailure(Se)?isNavigationFailure(Se,2)?Se:se(Se):oe(Se,xe,Ce)).then(Se=>{if(Se){if(isNavigationFailure(Se,2))return Z(assign({replace:we},j(Se.to),{state:typeof Se.to=="object"?assign({},be,Se.to.state):be,force:ge}),me||xe)}else Se=W(xe,Ce,!0,we,be);return ue(xe,Ce,Se),Se})}function re(he,me){const Ee=z(he,me);return Ee?Promise.reject(Ee):Promise.resolve()}function ie(he){const me=le.values().next().value;return me&&typeof me.runWithContext=="function"?me.runWithContext(he):he()}function pe(he,me){let Ee;const[Ce,be,ge]=extractChangingRecords(he,me);Ee=extractComponentsGuards(Ce.reverse(),"beforeRouteLeave",he,me);for(const fe of Ce)fe.leaveGuards.forEach(xe=>{Ee.push(guardToPromiseFn(xe,he,me))});const we=re.bind(null,he,me);return Ee.push(we),de(Ee).then(()=>{Ee=[];for(const fe of x.list())Ee.push(guardToPromiseFn(fe,he,me));return Ee.push(we),de(Ee)}).then(()=>{Ee=extractComponentsGuards(be,"beforeRouteUpdate",he,me);for(const fe of be)fe.updateGuards.forEach(xe=>{Ee.push(guardToPromiseFn(xe,he,me))});return Ee.push(we),de(Ee)}).then(()=>{Ee=[];for(const fe of ge)if(fe.beforeEnter)if(isArray(fe.beforeEnter))for(const xe of fe.beforeEnter)Ee.push(guardToPromiseFn(xe,he,me));else Ee.push(guardToPromiseFn(fe.beforeEnter,he,me));return Ee.push(we),de(Ee)}).then(()=>(he.matched.forEach(fe=>fe.enterCallbacks={}),Ee=extractComponentsGuards(ge,"beforeRouteEnter",he,me,ie),Ee.push(we),de(Ee))).then(()=>{Ee=[];for(const fe of T.list())Ee.push(guardToPromiseFn(fe,he,me));return Ee.push(we),de(Ee)}).catch(fe=>isNavigationFailure(fe,8)?fe:Promise.reject(fe))}function ue(he,me,Ee){C.list().forEach(Ce=>ie(()=>Ce(he,me,Ee)))}function W(he,me,Ee,Ce,be){const ge=z(he,me);if(ge)return ge;const we=me===START_LOCATION_NORMALIZED,fe=isBrowser?history.state:{};Ee&&(Ce||we?E.replace(he.fullPath,assign({scroll:we&&fe&&fe.scroll},be)):E.push(he.fullPath,be)),I.value=he,te(he,me,Ee,we),se()}let Y;function q(){Y||(Y=E.listen((he,me,Ee)=>{if(!ye.listening)return;const Ce=U(he),be=J(Ce);if(be){Z(assign(be,{replace:!0}),Ce).catch(noop);return}B=Ce;const ge=I.value;isBrowser&&saveScrollPosition(getScrollKey(ge.fullPath,Ee.delta),computeScrollPosition()),pe(Ce,ge).catch(we=>isNavigationFailure(we,12)?we:isNavigationFailure(we,2)?(Z(we.to,Ce).then(fe=>{isNavigationFailure(fe,20)&&!Ee.delta&&Ee.type===NavigationType.pop&&E.go(-1,!1)}).catch(noop),Promise.reject()):(Ee.delta&&E.go(-Ee.delta,!1),oe(we,Ce,ge))).then(we=>{we=we||W(Ce,ge,!1),we&&(Ee.delta&&!isNavigationFailure(we,8)?E.go(-Ee.delta,!1):Ee.type===NavigationType.pop&&isNavigationFailure(we,20)&&E.go(-1,!1)),ue(Ce,ge,we)}).catch(noop)}))}let G=useCallbacks(),ne=useCallbacks(),ee;function oe(he,me,Ee){se(he);const Ce=ne.list();return Ce.length?Ce.forEach(be=>be(he,me,Ee)):console.error(he),Promise.reject(he)}function ae(){return ee&&I.value!==START_LOCATION_NORMALIZED?Promise.resolve():new Promise((he,me)=>{G.add([he,me])})}function se(he){return ee||(ee=!he,q(),G.list().forEach(([me,Ee])=>he?Ee(he):me()),G.reset()),he}function te(he,me,Ee,Ce){const{scrollBehavior:be}=n;if(!isBrowser||!be)return Promise.resolve();const ge=!Ee&&getSavedScrollPosition(getScrollKey(he.fullPath,0))||(Ce||!Ee)&&history.state&&history.state.scroll||null;return nextTick$2().then(()=>be(he,me,ge)).then(we=>we&&scrollToPosition(we)).catch(we=>oe(we,he,me))}const X=he=>E.go(he);let ce;const le=new Set,ye={currentRoute:I,listening:!0,addRoute:O,removeRoute:M,clearRoutes:r.clearRoutes,hasRoute:F,getRoutes:L,resolve:U,options:n,push:H,replace:Q,go:X,back:()=>X(-1),forward:()=>X(1),beforeEach:x.add,beforeResolve:T.add,afterEach:C.add,onError:ne.add,isReady:ae,install(he){const me=this;he.component("RouterLink",RouterLink),he.component("RouterView",RouterView),he.config.globalProperties.$router=me,Object.defineProperty(he.config.globalProperties,"$route",{enumerable:!0,get:()=>unref(I)}),isBrowser&&!ce&&I.value===START_LOCATION_NORMALIZED&&(ce=!0,H(E.location).catch(be=>{}));const Ee={};for(const be in START_LOCATION_NORMALIZED)Object.defineProperty(Ee,be,{get:()=>I.value[be],enumerable:!0});he.provide(routerKey,me),he.provide(routeLocationKey,shallowReactive(Ee)),he.provide(routerViewLocationKey,I);const Ce=he.unmount;le.add(he),he.unmount=function(){le.delete(he),le.size<1&&(B=START_LOCATION_NORMALIZED,Y&&Y(),Y=null,I.value=START_LOCATION_NORMALIZED,ce=!1,ee=!1),Ce()}}};function de(he){return he.reduce((me,Ee)=>me.then(()=>ie(Ee)),Promise.resolve())}return ye}function extractChangingRecords(n,r){const _=[],S=[],E=[],x=Math.max(r.matched.length,n.matched.length);for(let T=0;TisSameRouteRecord(B,C))?S.push(C):_.push(C));const I=n.matched[T];I&&(r.matched.find(B=>isSameRouteRecord(B,I))||E.push(I))}return[_,S,E]}const _export_sfc=(n,r)=>{const _=n.__vccOpts||n;for(const[S,E]of r)_[S]=E;return _},_sfc_main$b={},_hoisted_1$7=createBaseVNode("h1",null,"About",-1),_hoisted_2$4=createBaseVNode("p",null,"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Recusandae libero inventore assumenda saepe quae? Ipsam optio, nihil commodi saepe inventore molestias quas praesentium tenetur fugit? A quaerat rem nobis accusamus.",-1);function _sfc_render$1(n,r){return openBlock(),createBlock(VContainer,{"fill-height":""},{default:withCtx(()=>[_hoisted_1$7,_hoisted_2$4]),_:1})}const AboutPage=_export_sfc(_sfc_main$b,[["render",_sfc_render$1]]);class Stabilisateur{n;valeurAntérieure;constructor(r=1e3){this.n=r}async stabiliser(r){return deepEqual$1(r,this.valeurAntérieure)?!1:(this.valeurAntérieure=r,new Promise(_=>{setTimeout(()=>_(deepEqual$1(r,this.valeurAntérieure)),this.n)}))}}const débalerRéfsArgs=n=>Object.fromEntries(Object.entries(n).map(([r,_])=>[r,unref(_)])),suivre=(n,r={},_)=>{const S=ref$2(_),E=new Stabilisateur;let x;const T=Object.values(r).some(I=>isRef(I)),C=computed(()=>{const I=débalerRéfsArgs(r);if(Object.values(I).every(B=>B!==void 0))return I});return watchEffect(async()=>{if(x&&(x(),x=void 0),C.value){if(T&&x&&!await E.stabiliser(C.value))return;x=await n({...C.value,f:I=>S.value=I})}else S.value=void 0}),onUnmounted(async()=>{x&&await x()}),computed(()=>S.value)},useUserProfilePhoto=n=>{const{orbiter:r}=useOrbiter(),_=suivre(r.listenForProfilePhotoChange,{accountId:n}),S=ref$2();return onMounted(async()=>{const x=await[__vitePreload(()=>import("./undraw_pic_profile_re_7g2h-eI3UEY91.js"),[],import.meta.url),__vitePreload(()=>import("./undraw_profile_pic_re_iwgo-D0oiVxqP.js"),[],import.meta.url)][Math.floor(Math.random()*2)];S.value=x.default}),computed(()=>_.value?URL.createObjectURL(new Blob([_.value],{type:"image"})):S.value)},_sfc_main$a=defineComponent$1({__name:"accountPage",props:{accountId:{}},setup(n){const{orbiter:r}=useOrbiter(),_=n,S=suivre(r.listenForNameChange,{accountId:computed(()=>_.accountId)}),E=computed(()=>selectTranslation(S.value)||"Anonymous"),x=useUserProfilePhoto(_.accountId);return(T,C)=>(openBlock(),createElementBlock(Fragment,null,[createVNode(VImg,{src:unref(x)},null,8,["src"]),createTextVNode(" "+toDisplayString(E.value),1)],64))}}),_sfc_main$9={},_hoisted_1$6=createBaseVNode("p",null,"Working. Coming soon..",-1);function _sfc_render(n,r){return openBlock(),createBlock(VContainer,null,{default:withCtx(()=>[_hoisted_1$6]),_:1})}const BuildingPage=_export_sfc(_sfc_main$9,[["render",_sfc_render]]),_hoisted_1$5={class:"mb-4 text-h5 text-lg-h4"},_hoisted_2$3={class:"d-flex align-center"},_hoisted_3$3={class:"bg-background.lighten-2 pa-1 mr-2"},_hoisted_4$2={class:"text-subtitle-2 text-medium-emphasis mr-2"},_hoisted_5$1={class:"text-subtitle-2 text-medium-emphasis ml-2"},_hoisted_6$1={class:"text-subtitle-2 text-medium-emphasis mb-4",style:{"line-height":"1.1em"}},_hoisted_7$1={class:"d-flex mt-8"},_sfc_main$8=defineComponent$1({__name:"featuredSlider",props:{featuredList:{}},setup(n){return(r,_)=>(openBlock(),createBlock(VCarousel,{"hide-delimiters":"",height:"400px"},{prev:withCtx(({props:S})=>[createVNode(VBtn,mergeProps(S,{variant:"solo"}),null,16)]),next:withCtx(({props:S})=>[createVNode(VBtn,mergeProps(S,{variant:"solo"}),null,16)]),default:withCtx(()=>[(openBlock(!0),createElementBlock(Fragment,null,renderList(r.featuredList,S=>(openBlock(),createBlock(VCarouselItem,{key:S.name,src:S.cover,cover:"",gradient:"to right, rgba(0,0,0,.80), rgba(0,0,0,.01)"},{default:withCtx(()=>[createVNode(VContainer,{class:"fill-height"},{default:withCtx(()=>[createVNode(VRow,{justify:"center",align:"center","justify-sm":"space-around",class:"px-sm-12"},{default:withCtx(()=>[createVNode(VCol,{cols:"12",sm:"7",md:"6",lg:"5"},{default:withCtx(()=>[createVNode(VSheet,{color:"transparent",class:"my-10"},{default:withCtx(()=>[createBaseVNode("p",_hoisted_1$5,toDisplayString(S.name),1),createBaseVNode("div",_hoisted_2$3,[createBaseVNode("p",_hoisted_3$3,toDisplayString(S.classification),1),createBaseVNode("p",_hoisted_4$2,toDisplayString(S.duration),1),createVNode(VIcon,{style:{"font-size":"0.2em"},icon:"fas fa-circle"}),createBaseVNode("p",_hoisted_5$1,toDisplayString(S.date),1)]),createBaseVNode("p",_hoisted_6$1,toDisplayString(S.description),1),createBaseVNode("div",_hoisted_7$1,[createVNode(VBtn,{color:"primary",rounded:"0","prepend-icon":"fas fa-play",class:"text-none mr-4",text:"Play now",onClick:E=>S.category&&S.contentCID&&r.$router.push(`/release/${S.category}/${S.contentCID}`)},null,8,["onClick"])])]),_:2},1024)]),_:2},1024),createVNode(VCol,{cols:"12",md:"2"},{default:withCtx(()=>[createVNode(VBtn,{variant:"plain",class:"text-none text-h6",ripple:!1,size:"x-large"},{prepend:withCtx(()=>[createVNode(VIcon,{icon:"far fa-circle-play",class:"mb-1",size:"small"})]),default:withCtx(()=>[createTextVNode(" Preview ")]),_:1})]),_:1})]),_:2},1024)]),_:2},1024)]),_:2},1032,["src"]))),128))]),_:1}))}}),_hoisted_1$4={class:"text-h5 font-weight-bold mb-6 mr-auto"},_hoisted_2$2={class:"text-subtitle-1"},_hoisted_3$2={class:"text-subtitle-2"},_hoisted_4$1={class:"text-body-2 text-center"},_hoisted_5={class:"text-caption text-center text-medium-emphasis"},_hoisted_6={class:"text-body-2 text-center"},_hoisted_7={class:"text-caption text-center text-medium-emphasis"},_sfc_main$7=defineComponent$1({__name:"contentSection",props:{title:{},items:{},layout:{},showNavigation:{type:Boolean},showViewAll:{type:Boolean}},setup(n){return(r,_)=>(openBlock(),createBlock(VContainer,{class:"mt-4"},{default:withCtx(()=>[createVNode(VContainer,{class:"d-flex justify-between w-100"},{default:withCtx(()=>[createBaseVNode("p",_hoisted_1$4,toDisplayString(r.title),1),r.showNavigation?(openBlock(),createElementBlock(Fragment,{key:0},[createVNode(VBtn,{icon:"",class:"justify-self-end"},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-caret-left",size:"x-small"})]),_:1}),createVNode(VBtn,{icon:"",class:"justify-self-end"},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-caret-right",size:"x-small",color:"primary"})]),_:1})],64)):createCommentVNode("",!0),r.showViewAll?(openBlock(),createBlock(VBtn,{key:1,variant:"text",text:"View All",class:"text-none"})):createCommentVNode("",!0)]),_:1}),r.layout==="card"?(openBlock(),createBlock(VRow,{key:0,justify:"center"},{default:withCtx(()=>[(openBlock(!0),createElementBlock(Fragment,null,renderList(r.items,S=>(openBlock(),createBlock(VCol,{key:S.id},{default:withCtx(()=>[createVNode(VHover,{"open-delay":"150","close-delay":"150"},{default:withCtx(({props:E,isHovering:x})=>[createVNode(VCard,mergeProps({ref_for:!0},E,{position:"relative"}),{default:withCtx(()=>[createVNode(VImg,{src:S.thumbnail,height:"100%",cover:"",gradient:"to bottom, rgba(0,0,0,.4), rgba(0,0,0,.41)"},{default:withCtx(()=>[createVNode(VCardItem,null,{default:withCtx(()=>[createVNode(VSheet,{class:"d-flex bg-transparent"},{default:withCtx(()=>[createBaseVNode("div",null,[createBaseVNode("p",_hoisted_2$2,toDisplayString(S.title),1),createBaseVNode("p",_hoisted_3$2,toDisplayString(S.subtitle),1)]),x?(openBlock(),createBlock(VSheet,{key:0,position:"absolute",location:"right",class:"d-flex mr-2 flex-column w-auto bg-transparent"},{default:withCtx(()=>[createVNode(VBtn,{size:"x-small",class:"my-1",color:"white",icon:""},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-share-nodes",size:"small"})]),_:1}),createVNode(VBtn,{size:"x-small",class:"my-1",color:"white",icon:""},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-heart",size:"small"})]),_:1}),createVNode(VBtn,{size:"x-small",class:"my-1",color:"white",icon:""},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-plus",size:"small"})]),_:1})]),_:1})):createCommentVNode("",!0)]),_:2},1024)]),_:2},1024),createVNode(VCardActions,null,{default:withCtx(()=>[createVNode(VBtn,{color:"primary",variant:"flat",rounded:"0","prepend-icon":"fas fa-play",size:"small",class:"mt-3 mb-1 text-none",text:"Play now",onClick:T=>S.category&&S.contentCID&&r.$router.push(`/release/${S.category}/${S.contentCID}`)},null,8,["onClick"])]),_:2},1024)]),_:2},1032,["src"])]),_:2},1040)]),_:2},1024)]),_:2},1024))),128))]),_:1})):createCommentVNode("",!0),r.layout==="list"?(openBlock(),createBlock(VRow,{key:1,justify:"center"},{default:withCtx(()=>[(openBlock(!0),createElementBlock(Fragment,null,renderList(r.items,S=>(openBlock(),createBlock(VCol,{key:S.id},{default:withCtx(()=>[createVNode(VSheet,{class:"mx-auto",width:"170px",onClick:E=>S.category==="video"&&S.contentCID&&r.$router.push(`/release/${S.category}/${S.contentCID}`)},{default:withCtx(()=>[createVNode(VImg,{src:S.thumbnail,width:"170px",cover:"","aspect-ratio":"1"},null,8,["src"]),createBaseVNode("p",_hoisted_4$1,toDisplayString(S.title),1),createBaseVNode("p",_hoisted_5,toDisplayString(S.subtitle),1)]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:1})):createCommentVNode("",!0),r.layout==="grid"?(openBlock(),createBlock(VRow,{key:2,justify:"center"},{default:withCtx(()=>[(openBlock(!0),createElementBlock(Fragment,null,renderList(r.items,S=>(openBlock(),createBlock(VCol,{key:S.id},{default:withCtx(()=>[createVNode(VHover,{"open-delay":"150","close-delay":"150"},{default:withCtx(({props:E,isHovering:x})=>[createVNode(VSheet,mergeProps({ref_for:!0},E,{color:"transparent",class:"pa-1",position:"relative"}),{default:withCtx(()=>[createVNode(VImg,{src:S.thumbnail,width:"240px",class:"mx-auto",cover:"","aspect-ratio":1},null,8,["src"]),x?(openBlock(),createBlock(VBtn,{key:0,position:"absolute",size:"x-large",location:"center",icon:"",variant:"solo"},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-play",size:"x-large",color:"primary"})]),_:1})):createCommentVNode("",!0)]),_:2},1040)]),_:2},1024),createBaseVNode("p",_hoisted_6,toDisplayString(S.title),1),createBaseVNode("p",_hoisted_7,toDisplayString(S.subtitle),1)]),_:2},1024))),128))]),_:1})):createCommentVNode("",!0)]),_:1}))}}),_sfc_main$6=defineComponent$1({__name:"homePage",setup(n){const r=[{id:"1",classification:"PG",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",cover:"/mock/movie-aaronsw.jpg",date:"2014",duration:"1h 45m",description:"The Internet's Own Boy follows the story of programming prodigy and information activist Aaron Swartz.",name:"The Internet's Own Boy: The Story of Aaron Swartz",rating:4},{id:"2",classification:"PG",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",cover:"/mock/movie-rip.png",date:"2008",duration:"1h 26m",description:"Join filmmaker Brett Gaylor and mashup artist Girl Talk as they explore copyright and content creation in the digital age. In the process they dissect the media landscape of the 21st century and shatter the wall between users and producers.",name:"RiP!: A Remix Manifesto",rating:4.5},{id:"3",classification:"Unrated",category:"video",contentCID:"QmabExd2NYTdDb2kX9tVAdf1LwzgJnyivknbCnF3nuG289",cover:"/mock/featured-tpbafk-fanart.png",date:"2012",duration:"1h 26m",description:"The Pirate Bay Away From Keyboard is a documentary film about the file sharing website The Pirate Bay.",name:"TPB AFK: The Pirate Bay Away From Keyboard",rating:4.5}],_={"tv-popular-shows":[{id:"1",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"Pure Pwnage",subtitle:"1 Season^",thumbnail:"/mock/tvshow-purepwnage.png"},{id:"2",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"Pioneer One",subtitle:"2 Seasons",thumbnail:"/mock/tvshow-pioneerone.png"},{id:"3",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"Flash Gordon",subtitle:"1 Seasons",thumbnail:"/mock/tvshow-flashgordon.png"},{id:"4",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"The Beverley Hillbillies",subtitle:"~1.6 Seasons^",thumbnail:"/mock/tvshow-beverleyhillbillies.png"}],"featured-various":[{id:"1",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"RiP!: A Remix Manifesto",subtitle:"(2008)",thumbnail:"/mock/movie-rip-poster.png"},{id:"2",title:"Adam McHeffey",subtitle:"Let's Kick Fire",thumbnail:"/mock/music-letskickfire.jpg"},{id:"3",title:"Swear and Shake",subtitle:"Maple Ridge",thumbnail:"/mock/music-mapleridge.webp"},{id:"4",title:"Nine Inch Nails",subtitle:"The Slip",thumbnail:"/mock/music-theslip.jpg"},{id:"5",title:"Radiohead",subtitle:"IN RAINBOWS",thumbnail:"/mock/music-inrainbows.jpg"},{id:"6",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"The Internet's Own Boy: The Story of Aaron Swartz",subtitle:"(2014)",thumbnail:"/mock/movie-aaronsw.jpg"},{id:"7",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"TPB AFK: The Pirate Bay Away from Keyboard",subtitle:"(2012)",thumbnail:"/mock/movie-tbpafk.webp"},{id:"8",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"Cosmos Laundromat",subtitle:"(2015)",thumbnail:"/mock/movie-cosmoslaundromat.webp"},{id:"9",title:"Nine Inch Nails",subtitle:"Ghosts I-IV",thumbnail:"/mock/music-ghosts-i-iv.png"}],"featured-music":[{id:"1",title:"Swear and Shake",subtitle:"Maple Ridge",thumbnail:"/mock/music-mapleridge.webp"},{id:"2",title:"Adam McHeffey",subtitle:"Let's Kick Fire",thumbnail:"/mock/music-letskickfire.jpg"},{id:"3",title:"Nine Inch Nails",subtitle:"The Slip",thumbnail:"/mock/music-theslip.jpg"},{id:"4",title:"Silence is Sexy",subtitle:"Everything You Should Know",thumbnail:"/mock/music-everythingyoushouldknow.jpg"},{id:"5",title:"Nine Inch Nails",subtitle:"Ghosts I-IV",thumbnail:"/mock/music-ghosts-i-iv.png"},{id:"6",title:"paniq",subtitle:"Beyond Good and Evil",thumbnail:"/mock/music-paniq-bgae.jpg"},{id:"7",title:"Brad Sucks",subtitle:"Guess Who's A Mess",thumbnail:"/mock/music-guesswhosamess.webp"},{id:"8",title:"Hello Madness",subtitle:"Life and light after dusk",thumbnail:"/mock/music-lightandlightafterdusk.webp"},{id:"9",title:"OK! Crazy Fiction Lady",subtitle:"OK! Crazy Fiction Lady",thumbnail:"/mock/music-okcfl.png"},{id:"10",title:"OK! Crazy Fiction Lady",subtitle:"Bye Bye Fishies",thumbnail:"/mock/music-byebyefishies.png"},{id:"11",title:"paniq",subtitle:"Story of Ohm",thumbnail:"/mock/music-storyofohm.png"},{id:"12",title:"Girl Talk",subtitle:"All Day",thumbnail:"/mock/music-allday.png"}]};return(S,E)=>(openBlock(),createBlock(VContainer,{class:"fill-height"},{default:withCtx(()=>[createVNode(_sfc_main$8,{"featured-list":r}),createVNode(_sfc_main$7,{title:"Featured",items:_["featured-various"],layout:"list",description:"Various featured content of mixed media","show-view-all":!0},null,8,["items"]),createVNode(_sfc_main$7,{title:"Featured Music",items:_["featured-music"],layout:"grid","show-view-all":!0},null,8,["items"]),createVNode(_sfc_main$7,{title:"TV Shows",items:_["tv-popular-shows"],layout:"card","show-navigation":!0},null,8,["items"])]),_:1}))}}),_hoisted_1$3=createBaseVNode("code",null,".env",-1),_sfc_main$5=defineComponent$1({__name:"initiateModDBs",setup(n){const{orbiter:r}=useOrbiter(),_=suivre(({f:L})=>r.listenForSiteConfigured({f:L})),S=computed(()=>_.value===!1),E=ref$2(!1),x=ref$2(),T=ref$2(),C=ref$2(!1),I=async()=>{E.value=!0;const{siteId:L,variableIds:F}=await r.setUpSite();x.value=L,T.value=F,E.value=!1},B=!1,A=computed(()=>{const L="VITE_TRUSTED_SITES_SITE_ID_VAR_ID="+T.value?.trustedSitesSiteIdVariableId,F="VITE_TRUSTED_SITES_NAME_VAR_ID="+T.value?.trustedSitesNameVariableId,U="VITE_RELEASES_FILE_VAR_ID="+T.value?.releasesFileVar,j="VITE_RELEASES_CATEGORY_VAR_ID="+T.value?.releasesCategoryVar,z="VITE_RELEASES_AUTHOR_VAR_ID="+T.value?.releasesAuthorVar,H="VITE_RELEASES_CONTENT_NAME_VAR_ID="+T.value?.releasesContentNameVar,Q="VITE_RELEASES_METADATA_VAR_ID="+T.value?.releasesMetadataVar,J="VITE_RELEASES_THUMBNAIL_VAR_ID="+T.value?.releasesThumbnailVar,Z="VITE_COLLECTIONS_AUTHOR_VAR_ID="+T.value?.collectionsAuthorVar,re="VITE_COLLECTIONS_METADATA_VAR_ID="+T.value?.collectionsMetadataVar,ie="VITE_COLLECTIONS_NAME_VAR_ID="+T.value?.collectionsNameVar,pe="VITE_COLLECTIONS_RELEASES_VAR_ID="+T.value?.collectionsReleasesVar,ue="VITE_COLLECTIONS_THUMBNAIL_VAR_ID="+T.value?.collectionsThumbnailVar,W="VITE_COLLECTIONS_CATEGORY_VAR_ID="+T.value?.collectionsCategoryVar,Y="VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID="+T.value?.featuredReleasesReleaseIdVar,q="VITE_FEATURED_RELEASES_START_TIME_VAR_ID="+T.value?.featuredReleasesStartTimeVar,G="VITE_FEATURED_RELEASES_END_TIME_VAR_ID="+T.value?.featuredReleasesEndTimeVar;return"# The address below should be regenerated for each Orbiter.CC site. If you are setting up an independent site, erase the value below and run the site in development mode (`pnpm dev`) to automatically regenerate. \n"+("VITE_SITE_ID="+x.value)+` + */const isBrowser=typeof document<"u";function isRouteComponent(n){return typeof n=="object"||"displayName"in n||"props"in n||"__vccOpts"in n}function isESModule(n){return n.__esModule||n[Symbol.toStringTag]==="Module"||n.default&&isRouteComponent(n.default)}const assign=Object.assign;function applyToParams(n,r){const _={};for(const S in r){const E=r[S];_[S]=isArray(E)?E.map(n):n(E)}return _}const noop=()=>{},isArray=Array.isArray,HASH_RE=/#/g,AMPERSAND_RE=/&/g,SLASH_RE=/\//g,EQUAL_RE=/=/g,IM_RE=/\?/g,PLUS_RE=/\+/g,ENC_BRACKET_OPEN_RE=/%5B/g,ENC_BRACKET_CLOSE_RE=/%5D/g,ENC_CARET_RE=/%5E/g,ENC_BACKTICK_RE=/%60/g,ENC_CURLY_OPEN_RE=/%7B/g,ENC_PIPE_RE=/%7C/g,ENC_CURLY_CLOSE_RE=/%7D/g,ENC_SPACE_RE=/%20/g;function commonEncode(n){return encodeURI(""+n).replace(ENC_PIPE_RE,"|").replace(ENC_BRACKET_OPEN_RE,"[").replace(ENC_BRACKET_CLOSE_RE,"]")}function encodeHash(n){return commonEncode(n).replace(ENC_CURLY_OPEN_RE,"{").replace(ENC_CURLY_CLOSE_RE,"}").replace(ENC_CARET_RE,"^")}function encodeQueryValue(n){return commonEncode(n).replace(PLUS_RE,"%2B").replace(ENC_SPACE_RE,"+").replace(HASH_RE,"%23").replace(AMPERSAND_RE,"%26").replace(ENC_BACKTICK_RE,"`").replace(ENC_CURLY_OPEN_RE,"{").replace(ENC_CURLY_CLOSE_RE,"}").replace(ENC_CARET_RE,"^")}function encodeQueryKey(n){return encodeQueryValue(n).replace(EQUAL_RE,"%3D")}function encodePath(n){return commonEncode(n).replace(HASH_RE,"%23").replace(IM_RE,"%3F")}function encodeParam(n){return n==null?"":encodePath(n).replace(SLASH_RE,"%2F")}function decode(n){try{return decodeURIComponent(""+n)}catch{}return""+n}const TRAILING_SLASH_RE=/\/$/,removeTrailingSlash=n=>n.replace(TRAILING_SLASH_RE,"");function parseURL(n,r,_="/"){let S,E={},x="",T="";const C=r.indexOf("#");let I=r.indexOf("?");return C=0&&(I=-1),I>-1&&(S=r.slice(0,I),x=r.slice(I+1,C>-1?C:r.length),E=n(x)),C>-1&&(S=S||r.slice(0,C),T=r.slice(C,r.length)),S=resolveRelativePath(S??r,_),{fullPath:S+(x&&"?")+x+T,path:S,query:E,hash:decode(T)}}function stringifyURL(n,r){const _=r.query?n(r.query):"";return r.path+(_&&"?")+_+(r.hash||"")}function stripBase(n,r){return!r||!n.toLowerCase().startsWith(r.toLowerCase())?n:n.slice(r.length)||"/"}function isSameRouteLocation(n,r,_){const S=r.matched.length-1,E=_.matched.length-1;return S>-1&&S===E&&isSameRouteRecord(r.matched[S],_.matched[E])&&isSameRouteLocationParams(r.params,_.params)&&n(r.query)===n(_.query)&&r.hash===_.hash}function isSameRouteRecord(n,r){return(n.aliasOf||n)===(r.aliasOf||r)}function isSameRouteLocationParams(n,r){if(Object.keys(n).length!==Object.keys(r).length)return!1;for(const _ in n)if(!isSameRouteLocationParamsValue(n[_],r[_]))return!1;return!0}function isSameRouteLocationParamsValue(n,r){return isArray(n)?isEquivalentArray(n,r):isArray(r)?isEquivalentArray(r,n):n===r}function isEquivalentArray(n,r){return isArray(r)?n.length===r.length&&n.every((_,S)=>_===r[S]):n.length===1&&n[0]===r}function resolveRelativePath(n,r){if(n.startsWith("/"))return n;if(!n)return r;const _=r.split("/"),S=n.split("/"),E=S[S.length-1];(E===".."||E===".")&&S.push("");let x=_.length-1,T,C;for(T=0;T1&&x--;else break;return _.slice(0,x).join("/")+"/"+S.slice(T).join("/")}const START_LOCATION_NORMALIZED={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var NavigationType;(function(n){n.pop="pop",n.push="push"})(NavigationType||(NavigationType={}));var NavigationDirection;(function(n){n.back="back",n.forward="forward",n.unknown=""})(NavigationDirection||(NavigationDirection={}));function normalizeBase(n){if(!n)if(isBrowser){const r=document.querySelector("base");n=r&&r.getAttribute("href")||"/",n=n.replace(/^\w+:\/\/[^\/]+/,"")}else n="/";return n[0]!=="/"&&n[0]!=="#"&&(n="/"+n),removeTrailingSlash(n)}const BEFORE_HASH_RE=/^[^#]+#/;function createHref(n,r){return n.replace(BEFORE_HASH_RE,"#")+r}function getElementPosition(n,r){const _=document.documentElement.getBoundingClientRect(),S=n.getBoundingClientRect();return{behavior:r.behavior,left:S.left-_.left-(r.left||0),top:S.top-_.top-(r.top||0)}}const computeScrollPosition=()=>({left:window.scrollX,top:window.scrollY});function scrollToPosition(n){let r;if("el"in n){const _=n.el,S=typeof _=="string"&&_.startsWith("#"),E=typeof _=="string"?S?document.getElementById(_.slice(1)):document.querySelector(_):_;if(!E)return;r=getElementPosition(E,n)}else r=n;"scrollBehavior"in document.documentElement.style?window.scrollTo(r):window.scrollTo(r.left!=null?r.left:window.scrollX,r.top!=null?r.top:window.scrollY)}function getScrollKey(n,r){return(history.state?history.state.position-r:-1)+n}const scrollPositions=new Map;function saveScrollPosition(n,r){scrollPositions.set(n,r)}function getSavedScrollPosition(n){const r=scrollPositions.get(n);return scrollPositions.delete(n),r}let createBaseLocation=()=>location.protocol+"//"+location.host;function createCurrentLocation(n,r){const{pathname:_,search:S,hash:E}=r,x=n.indexOf("#");if(x>-1){let C=E.includes(n.slice(x))?n.slice(x).length:1,I=E.slice(C);return I[0]!=="/"&&(I="/"+I),stripBase(I,"")}return stripBase(_,n)+S+E}function useHistoryListeners(n,r,_,S){let E=[],x=[],T=null;const C=({state:N})=>{const O=createCurrentLocation(n,location),M=_.value,L=r.value;let F=0;if(N){if(_.value=O,r.value=N,T&&T===M){T=null;return}F=L?N.position-L.position:0}else S(O);E.forEach(U=>{U(_.value,M,{delta:F,type:NavigationType.pop,direction:F?F>0?NavigationDirection.forward:NavigationDirection.back:NavigationDirection.unknown})})};function I(){T=_.value}function B(N){E.push(N);const O=()=>{const M=E.indexOf(N);M>-1&&E.splice(M,1)};return x.push(O),O}function A(){const{history:N}=window;N.state&&N.replaceState(assign({},N.state,{scroll:computeScrollPosition()}),"")}function D(){for(const N of x)N();x=[],window.removeEventListener("popstate",C),window.removeEventListener("beforeunload",A)}return window.addEventListener("popstate",C),window.addEventListener("beforeunload",A,{passive:!0}),{pauseListeners:I,listen:B,destroy:D}}function buildState(n,r,_,S=!1,E=!1){return{back:n,current:r,forward:_,replaced:S,position:window.history.length,scroll:E?computeScrollPosition():null}}function useHistoryStateNavigation(n){const{history:r,location:_}=window,S={value:createCurrentLocation(n,_)},E={value:r.state};E.value||x(S.value,{back:null,current:S.value,forward:null,position:r.length-1,replaced:!0,scroll:null},!0);function x(I,B,A){const D=n.indexOf("#"),N=D>-1?(_.host&&document.querySelector("base")?n:n.slice(D))+I:createBaseLocation()+n+I;try{r[A?"replaceState":"pushState"](B,"",N),E.value=B}catch(O){console.error(O),_[A?"replace":"assign"](N)}}function T(I,B){const A=assign({},r.state,buildState(E.value.back,I,E.value.forward,!0),B,{position:E.value.position});x(I,A,!0),S.value=I}function C(I,B){const A=assign({},E.value,r.state,{forward:I,scroll:computeScrollPosition()});x(A.current,A,!0);const D=assign({},buildState(S.value,I,null),{position:A.position+1},B);x(I,D,!1),S.value=I}return{location:S,state:E,push:C,replace:T}}function createWebHistory(n){n=normalizeBase(n);const r=useHistoryStateNavigation(n),_=useHistoryListeners(n,r.state,r.location,r.replace);function S(x,T=!0){T||_.pauseListeners(),history.go(x)}const E=assign({location:"",base:n,go:S,createHref:createHref.bind(null,n)},r,_);return Object.defineProperty(E,"location",{enumerable:!0,get:()=>r.location.value}),Object.defineProperty(E,"state",{enumerable:!0,get:()=>r.state.value}),E}function createWebHashHistory(n){return n=location.host?n||location.pathname+location.search:"",n.includes("#")||(n+="#"),createWebHistory(n)}function isRouteLocation(n){return typeof n=="string"||n&&typeof n=="object"}function isRouteName(n){return typeof n=="string"||typeof n=="symbol"}const NavigationFailureSymbol=Symbol("");var NavigationFailureType;(function(n){n[n.aborted=4]="aborted",n[n.cancelled=8]="cancelled",n[n.duplicated=16]="duplicated"})(NavigationFailureType||(NavigationFailureType={}));function createRouterError(n,r){return assign(new Error,{type:n,[NavigationFailureSymbol]:!0},r)}function isNavigationFailure(n,r){return n instanceof Error&&NavigationFailureSymbol in n&&(r==null||!!(n.type&r))}const BASE_PARAM_PATTERN="[^/]+?",BASE_PATH_PARSER_OPTIONS={sensitive:!1,strict:!1,start:!0,end:!0},REGEX_CHARS_RE=/[.+*?^${}()[\]/\\]/g;function tokensToParser(n,r){const _=assign({},BASE_PATH_PARSER_OPTIONS,r),S=[];let E=_.start?"^":"";const x=[];for(const B of n){const A=B.length?[]:[90];_.strict&&!B.length&&(E+="/");for(let D=0;Dr.length?r.length===1&&r[0]===80?1:-1:0}function comparePathParserScore(n,r){let _=0;const S=n.score,E=r.score;for(;_0&&r[r.length-1]<0}const ROOT_TOKEN={type:0,value:""},VALID_PARAM_RE=/[a-zA-Z0-9_]/;function tokenizePath(n){if(!n)return[[]];if(n==="/")return[[ROOT_TOKEN]];if(!n.startsWith("/"))throw new Error(`Invalid path "${n}"`);function r(O){throw new Error(`ERR (${_})/"${B}": ${O}`)}let _=0,S=_;const E=[];let x;function T(){x&&E.push(x),x=[]}let C=0,I,B="",A="";function D(){B&&(_===0?x.push({type:0,value:B}):_===1||_===2||_===3?(x.length>1&&(I==="*"||I==="+")&&r(`A repeatable param (${B}) must be alone in its segment. eg: '/:ids+.`),x.push({type:1,value:B,regexp:A,repeatable:I==="*"||I==="+",optional:I==="*"||I==="?"})):r("Invalid state to consume buffer"),B="")}function N(){B+=I}for(;C{T(z)}:noop}function T(D){if(isRouteName(D)){const N=S.get(D);N&&(S.delete(D),_.splice(_.indexOf(N),1),N.children.forEach(T),N.alias.forEach(T))}else{const N=_.indexOf(D);N>-1&&(_.splice(N,1),D.record.name&&S.delete(D.record.name),D.children.forEach(T),D.alias.forEach(T))}}function C(){return _}function I(D){const N=findInsertionIndex(D,_);_.splice(N,0,D),D.record.name&&!isAliasRecord(D)&&S.set(D.record.name,D)}function B(D,N){let O,M={},L,F;if("name"in D&&D.name){if(O=S.get(D.name),!O)throw createRouterError(1,{location:D});F=O.record.name,M=assign(paramsFromLocation(N.params,O.keys.filter(z=>!z.optional).concat(O.parent?O.parent.keys.filter(z=>z.optional):[]).map(z=>z.name)),D.params&¶msFromLocation(D.params,O.keys.map(z=>z.name))),L=O.stringify(M)}else if(D.path!=null)L=D.path,O=_.find(z=>z.re.test(L)),O&&(M=O.parse(L),F=O.record.name);else{if(O=N.name?S.get(N.name):_.find(z=>z.re.test(N.path)),!O)throw createRouterError(1,{location:D,currentLocation:N});F=O.record.name,M=assign({},N.params,D.params),L=O.stringify(M)}const U=[];let j=O;for(;j;)U.unshift(j.record),j=j.parent;return{name:F,path:L,params:M,matched:U,meta:mergeMetaFields(U)}}n.forEach(D=>x(D));function A(){_.length=0,S.clear()}return{addRoute:x,resolve:B,removeRoute:T,clearRoutes:A,getRoutes:C,getRecordMatcher:E}}function paramsFromLocation(n,r){const _={};for(const S of r)S in n&&(_[S]=n[S]);return _}function normalizeRouteRecord(n){const r={path:n.path,redirect:n.redirect,name:n.name,meta:n.meta||{},aliasOf:n.aliasOf,beforeEnter:n.beforeEnter,props:normalizeRecordProps(n),children:n.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in n?n.components||null:n.component&&{default:n.component}};return Object.defineProperty(r,"mods",{value:{}}),r}function normalizeRecordProps(n){const r={},_=n.props||!1;if("component"in n)r.default=_;else for(const S in n.components)r[S]=typeof _=="object"?_[S]:_;return r}function isAliasRecord(n){for(;n;){if(n.record.aliasOf)return!0;n=n.parent}return!1}function mergeMetaFields(n){return n.reduce((r,_)=>assign(r,_.meta),{})}function mergeOptions(n,r){const _={};for(const S in n)_[S]=S in r?r[S]:n[S];return _}function findInsertionIndex(n,r){let _=0,S=r.length;for(;_!==S;){const x=_+S>>1;comparePathParserScore(n,r[x])<0?S=x:_=x+1}const E=getInsertionAncestor(n);return E&&(S=r.lastIndexOf(E,S-1)),S}function getInsertionAncestor(n){let r=n;for(;r=r.parent;)if(isMatchable(r)&&comparePathParserScore(n,r)===0)return r}function isMatchable({record:n}){return!!(n.name||n.components&&Object.keys(n.components).length||n.redirect)}function parseQuery(n){const r={};if(n===""||n==="?")return r;const S=(n[0]==="?"?n.slice(1):n).split("&");for(let E=0;Ex&&encodeQueryValue(x)):[S&&encodeQueryValue(S)]).forEach(x=>{x!==void 0&&(r+=(r.length?"&":"")+_,x!=null&&(r+="="+x))})}return r}function normalizeQuery(n){const r={};for(const _ in n){const S=n[_];S!==void 0&&(r[_]=isArray(S)?S.map(E=>E==null?null:""+E):S==null?S:""+S)}return r}const matchedRouteKey=Symbol(""),viewDepthKey=Symbol(""),routerKey=Symbol(""),routeLocationKey=Symbol(""),routerViewLocationKey=Symbol("");function useCallbacks(){let n=[];function r(S){return n.push(S),()=>{const E=n.indexOf(S);E>-1&&n.splice(E,1)}}function _(){n=[]}return{add:r,list:()=>n.slice(),reset:_}}function guardToPromiseFn(n,r,_,S,E,x=T=>T()){const T=S&&(S.enterCallbacks[E]=S.enterCallbacks[E]||[]);return()=>new Promise((C,I)=>{const B=N=>{N===!1?I(createRouterError(4,{from:_,to:r})):N instanceof Error?I(N):isRouteLocation(N)?I(createRouterError(2,{from:r,to:N})):(T&&S.enterCallbacks[E]===T&&typeof N=="function"&&T.push(N),C())},A=x(()=>n.call(S&&S.instances[E],r,_,B));let D=Promise.resolve(A);n.length<3&&(D=D.then(B)),D.catch(N=>I(N))})}function extractComponentsGuards(n,r,_,S,E=x=>x()){const x=[];for(const T of n)for(const C in T.components){let I=T.components[C];if(!(r!=="beforeRouteEnter"&&!T.instances[C]))if(isRouteComponent(I)){const A=(I.__vccOpts||I)[r];A&&x.push(guardToPromiseFn(A,_,S,T,C,E))}else{let B=I();x.push(()=>B.then(A=>{if(!A)throw new Error(`Couldn't resolve component "${C}" at "${T.path}"`);const D=isESModule(A)?A.default:A;T.mods[C]=A,T.components[C]=D;const O=(D.__vccOpts||D)[r];return O&&guardToPromiseFn(O,_,S,T,C,E)()}))}}return x}function useLink(n){const r=inject$1(routerKey),_=inject$1(routeLocationKey),S=computed(()=>{const I=unref(n.to);return r.resolve(I)}),E=computed(()=>{const{matched:I}=S.value,{length:B}=I,A=I[B-1],D=_.matched;if(!A||!D.length)return-1;const N=D.findIndex(isSameRouteRecord.bind(null,A));if(N>-1)return N;const O=getOriginalPath(I[B-2]);return B>1&&getOriginalPath(A)===O&&D[D.length-1].path!==O?D.findIndex(isSameRouteRecord.bind(null,I[B-2])):N}),x=computed(()=>E.value>-1&&includesParams(_.params,S.value.params)),T=computed(()=>E.value>-1&&E.value===_.matched.length-1&&isSameRouteLocationParams(_.params,S.value.params));function C(I={}){return guardEvent(I)?r[unref(n.replace)?"replace":"push"](unref(n.to)).catch(noop):Promise.resolve()}return{route:S,href:computed(()=>S.value.href),isActive:x,isExactActive:T,navigate:C}}const RouterLinkImpl=defineComponent$1({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink,setup(n,{slots:r}){const _=reactive(useLink(n)),{options:S}=inject$1(routerKey),E=computed(()=>({[getLinkClass(n.activeClass,S.linkActiveClass,"router-link-active")]:_.isActive,[getLinkClass(n.exactActiveClass,S.linkExactActiveClass,"router-link-exact-active")]:_.isExactActive}));return()=>{const x=r.default&&r.default(_);return n.custom?x:h$2("a",{"aria-current":_.isExactActive?n.ariaCurrentValue:null,href:_.href,onClick:_.navigate,class:E.value},x)}}}),RouterLink=RouterLinkImpl;function guardEvent(n){if(!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)&&!n.defaultPrevented&&!(n.button!==void 0&&n.button!==0)){if(n.currentTarget&&n.currentTarget.getAttribute){const r=n.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(r))return}return n.preventDefault&&n.preventDefault(),!0}}function includesParams(n,r){for(const _ in r){const S=r[_],E=n[_];if(typeof S=="string"){if(S!==E)return!1}else if(!isArray(E)||E.length!==S.length||S.some((x,T)=>x!==E[T]))return!1}return!0}function getOriginalPath(n){return n?n.aliasOf?n.aliasOf.path:n.path:""}const getLinkClass=(n,r,_)=>n??r??_,RouterViewImpl=defineComponent$1({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(n,{attrs:r,slots:_}){const S=inject$1(routerViewLocationKey),E=computed(()=>n.route||S.value),x=inject$1(viewDepthKey,0),T=computed(()=>{let B=unref(x);const{matched:A}=E.value;let D;for(;(D=A[B])&&!D.components;)B++;return B}),C=computed(()=>E.value.matched[T.value]);provide(viewDepthKey,computed(()=>T.value+1)),provide(matchedRouteKey,C),provide(routerViewLocationKey,E);const I=ref$2();return watch(()=>[I.value,C.value,n.name],([B,A,D],[N,O,M])=>{A&&(A.instances[D]=B,O&&O!==A&&B&&B===N&&(A.leaveGuards.size||(A.leaveGuards=O.leaveGuards),A.updateGuards.size||(A.updateGuards=O.updateGuards))),B&&A&&(!O||!isSameRouteRecord(A,O)||!N)&&(A.enterCallbacks[D]||[]).forEach(L=>L(B))},{flush:"post"}),()=>{const B=E.value,A=n.name,D=C.value,N=D&&D.components[A];if(!N)return normalizeSlot(_.default,{Component:N,route:B});const O=D.props[A],M=O?O===!0?B.params:typeof O=="function"?O(B):O:null,F=h$2(N,assign({},M,r,{onVnodeUnmounted:U=>{U.component.isUnmounted&&(D.instances[A]=null)},ref:I}));return normalizeSlot(_.default,{Component:F,route:B})||F}}});function normalizeSlot(n,r){if(!n)return null;const _=n(r);return _.length===1?_[0]:_}const RouterView=RouterViewImpl;function createRouter(n){const r=createRouterMatcher(n.routes,n),_=n.parseQuery||parseQuery,S=n.stringifyQuery||stringifyQuery,E=n.history,x=useCallbacks(),T=useCallbacks(),C=useCallbacks(),I=shallowRef(START_LOCATION_NORMALIZED);let B=START_LOCATION_NORMALIZED;isBrowser&&n.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const A=applyToParams.bind(null,he=>""+he),D=applyToParams.bind(null,encodeParam),N=applyToParams.bind(null,decode);function O(he,me){let Ee,Ce;return isRouteName(he)?(Ee=r.getRecordMatcher(he),Ce=me):Ce=he,r.addRoute(Ce,Ee)}function M(he){const me=r.getRecordMatcher(he);me&&r.removeRoute(me)}function L(){return r.getRoutes().map(he=>he.record)}function F(he){return!!r.getRecordMatcher(he)}function U(he,me){if(me=assign({},me||I.value),typeof he=="string"){const fe=parseURL(_,he,me.path),xe=r.resolve({path:fe.path},me),Ie=E.createHref(fe.fullPath);return assign(fe,xe,{params:N(xe.params),hash:decode(fe.hash),redirectedFrom:void 0,href:Ie})}let Ee;if(he.path!=null)Ee=assign({},he,{path:parseURL(_,he.path,me.path).path});else{const fe=assign({},he.params);for(const xe in fe)fe[xe]==null&&delete fe[xe];Ee=assign({},he,{params:D(fe)}),me.params=D(me.params)}const Ce=r.resolve(Ee,me),be=he.hash||"";Ce.params=A(N(Ce.params));const ge=stringifyURL(S,assign({},he,{hash:encodeHash(be),path:Ce.path})),we=E.createHref(ge);return assign({fullPath:ge,hash:be,query:S===stringifyQuery?normalizeQuery(he.query):he.query||{}},Ce,{redirectedFrom:void 0,href:we})}function j(he){return typeof he=="string"?parseURL(_,he,I.value.path):assign({},he)}function z(he,me){if(B!==he)return createRouterError(8,{from:me,to:he})}function H(he){return Z(he)}function Q(he){return H(assign(j(he),{replace:!0}))}function J(he){const me=he.matched[he.matched.length-1];if(me&&me.redirect){const{redirect:Ee}=me;let Ce=typeof Ee=="function"?Ee(he):Ee;return typeof Ce=="string"&&(Ce=Ce.includes("?")||Ce.includes("#")?Ce=j(Ce):{path:Ce},Ce.params={}),assign({query:he.query,hash:he.hash,params:Ce.path!=null?{}:he.params},Ce)}}function Z(he,me){const Ee=B=U(he),Ce=I.value,be=he.state,ge=he.force,we=he.replace===!0,fe=J(Ee);if(fe)return Z(assign(j(fe),{state:typeof fe=="object"?assign({},be,fe.state):be,force:ge,replace:we}),me||Ee);const xe=Ee;xe.redirectedFrom=me;let Ie;return!ge&&isSameRouteLocation(S,Ce,Ee)&&(Ie=createRouterError(16,{to:xe,from:Ce}),te(Ce,Ce,!0,!1)),(Ie?Promise.resolve(Ie):pe(xe,Ce)).catch(Se=>isNavigationFailure(Se)?isNavigationFailure(Se,2)?Se:se(Se):oe(Se,xe,Ce)).then(Se=>{if(Se){if(isNavigationFailure(Se,2))return Z(assign({replace:we},j(Se.to),{state:typeof Se.to=="object"?assign({},be,Se.to.state):be,force:ge}),me||xe)}else Se=W(xe,Ce,!0,we,be);return ue(xe,Ce,Se),Se})}function re(he,me){const Ee=z(he,me);return Ee?Promise.reject(Ee):Promise.resolve()}function ie(he){const me=le.values().next().value;return me&&typeof me.runWithContext=="function"?me.runWithContext(he):he()}function pe(he,me){let Ee;const[Ce,be,ge]=extractChangingRecords(he,me);Ee=extractComponentsGuards(Ce.reverse(),"beforeRouteLeave",he,me);for(const fe of Ce)fe.leaveGuards.forEach(xe=>{Ee.push(guardToPromiseFn(xe,he,me))});const we=re.bind(null,he,me);return Ee.push(we),de(Ee).then(()=>{Ee=[];for(const fe of x.list())Ee.push(guardToPromiseFn(fe,he,me));return Ee.push(we),de(Ee)}).then(()=>{Ee=extractComponentsGuards(be,"beforeRouteUpdate",he,me);for(const fe of be)fe.updateGuards.forEach(xe=>{Ee.push(guardToPromiseFn(xe,he,me))});return Ee.push(we),de(Ee)}).then(()=>{Ee=[];for(const fe of ge)if(fe.beforeEnter)if(isArray(fe.beforeEnter))for(const xe of fe.beforeEnter)Ee.push(guardToPromiseFn(xe,he,me));else Ee.push(guardToPromiseFn(fe.beforeEnter,he,me));return Ee.push(we),de(Ee)}).then(()=>(he.matched.forEach(fe=>fe.enterCallbacks={}),Ee=extractComponentsGuards(ge,"beforeRouteEnter",he,me,ie),Ee.push(we),de(Ee))).then(()=>{Ee=[];for(const fe of T.list())Ee.push(guardToPromiseFn(fe,he,me));return Ee.push(we),de(Ee)}).catch(fe=>isNavigationFailure(fe,8)?fe:Promise.reject(fe))}function ue(he,me,Ee){C.list().forEach(Ce=>ie(()=>Ce(he,me,Ee)))}function W(he,me,Ee,Ce,be){const ge=z(he,me);if(ge)return ge;const we=me===START_LOCATION_NORMALIZED,fe=isBrowser?history.state:{};Ee&&(Ce||we?E.replace(he.fullPath,assign({scroll:we&&fe&&fe.scroll},be)):E.push(he.fullPath,be)),I.value=he,te(he,me,Ee,we),se()}let Y;function q(){Y||(Y=E.listen((he,me,Ee)=>{if(!ye.listening)return;const Ce=U(he),be=J(Ce);if(be){Z(assign(be,{replace:!0}),Ce).catch(noop);return}B=Ce;const ge=I.value;isBrowser&&saveScrollPosition(getScrollKey(ge.fullPath,Ee.delta),computeScrollPosition()),pe(Ce,ge).catch(we=>isNavigationFailure(we,12)?we:isNavigationFailure(we,2)?(Z(we.to,Ce).then(fe=>{isNavigationFailure(fe,20)&&!Ee.delta&&Ee.type===NavigationType.pop&&E.go(-1,!1)}).catch(noop),Promise.reject()):(Ee.delta&&E.go(-Ee.delta,!1),oe(we,Ce,ge))).then(we=>{we=we||W(Ce,ge,!1),we&&(Ee.delta&&!isNavigationFailure(we,8)?E.go(-Ee.delta,!1):Ee.type===NavigationType.pop&&isNavigationFailure(we,20)&&E.go(-1,!1)),ue(Ce,ge,we)}).catch(noop)}))}let G=useCallbacks(),ne=useCallbacks(),ee;function oe(he,me,Ee){se(he);const Ce=ne.list();return Ce.length?Ce.forEach(be=>be(he,me,Ee)):console.error(he),Promise.reject(he)}function ae(){return ee&&I.value!==START_LOCATION_NORMALIZED?Promise.resolve():new Promise((he,me)=>{G.add([he,me])})}function se(he){return ee||(ee=!he,q(),G.list().forEach(([me,Ee])=>he?Ee(he):me()),G.reset()),he}function te(he,me,Ee,Ce){const{scrollBehavior:be}=n;if(!isBrowser||!be)return Promise.resolve();const ge=!Ee&&getSavedScrollPosition(getScrollKey(he.fullPath,0))||(Ce||!Ee)&&history.state&&history.state.scroll||null;return nextTick$2().then(()=>be(he,me,ge)).then(we=>we&&scrollToPosition(we)).catch(we=>oe(we,he,me))}const X=he=>E.go(he);let ce;const le=new Set,ye={currentRoute:I,listening:!0,addRoute:O,removeRoute:M,clearRoutes:r.clearRoutes,hasRoute:F,getRoutes:L,resolve:U,options:n,push:H,replace:Q,go:X,back:()=>X(-1),forward:()=>X(1),beforeEach:x.add,beforeResolve:T.add,afterEach:C.add,onError:ne.add,isReady:ae,install(he){const me=this;he.component("RouterLink",RouterLink),he.component("RouterView",RouterView),he.config.globalProperties.$router=me,Object.defineProperty(he.config.globalProperties,"$route",{enumerable:!0,get:()=>unref(I)}),isBrowser&&!ce&&I.value===START_LOCATION_NORMALIZED&&(ce=!0,H(E.location).catch(be=>{}));const Ee={};for(const be in START_LOCATION_NORMALIZED)Object.defineProperty(Ee,be,{get:()=>I.value[be],enumerable:!0});he.provide(routerKey,me),he.provide(routeLocationKey,shallowReactive(Ee)),he.provide(routerViewLocationKey,I);const Ce=he.unmount;le.add(he),he.unmount=function(){le.delete(he),le.size<1&&(B=START_LOCATION_NORMALIZED,Y&&Y(),Y=null,I.value=START_LOCATION_NORMALIZED,ce=!1,ee=!1),Ce()}}};function de(he){return he.reduce((me,Ee)=>me.then(()=>ie(Ee)),Promise.resolve())}return ye}function extractChangingRecords(n,r){const _=[],S=[],E=[],x=Math.max(r.matched.length,n.matched.length);for(let T=0;TisSameRouteRecord(B,C))?S.push(C):_.push(C));const I=n.matched[T];I&&(r.matched.find(B=>isSameRouteRecord(B,I))||E.push(I))}return[_,S,E]}const _export_sfc=(n,r)=>{const _=n.__vccOpts||n;for(const[S,E]of r)_[S]=E;return _},_sfc_main$b={},_hoisted_1$7=createBaseVNode("h1",null,"About",-1),_hoisted_2$4=createBaseVNode("p",null,"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Recusandae libero inventore assumenda saepe quae? Ipsam optio, nihil commodi saepe inventore molestias quas praesentium tenetur fugit? A quaerat rem nobis accusamus.",-1);function _sfc_render$1(n,r){return openBlock(),createBlock(VContainer,{"fill-height":""},{default:withCtx(()=>[_hoisted_1$7,_hoisted_2$4]),_:1})}const AboutPage=_export_sfc(_sfc_main$b,[["render",_sfc_render$1]]);class Stabilisateur{n;valeurAntérieure;constructor(r=1e3){this.n=r}async stabiliser(r){return deepEqual$1(r,this.valeurAntérieure)?!1:(this.valeurAntérieure=r,new Promise(_=>{setTimeout(()=>_(deepEqual$1(r,this.valeurAntérieure)),this.n)}))}}const débalerRéfsArgs=n=>Object.fromEntries(Object.entries(n).map(([r,_])=>[r,unref(_)])),suivre=(n,r={},_)=>{const S=ref$2(_),E=new Stabilisateur;let x;const T=Object.values(r).some(I=>isRef(I)),C=computed(()=>{const I=débalerRéfsArgs(r);if(Object.values(I).every(B=>B!==void 0))return I});return watchEffect(async()=>{if(x&&(x(),x=void 0),C.value){if(T&&x&&!await E.stabiliser(C.value))return;x=await n({...C.value,f:I=>S.value=I})}else S.value=void 0}),onUnmounted(async()=>{x&&await x()}),computed(()=>S.value)},useUserProfilePhoto=n=>{const{orbiter:r}=useOrbiter(),_=suivre(r.listenForProfilePhotoChange,{accountId:n}),S=ref$2();return onMounted(async()=>{const x=await[__vitePreload(()=>import("./undraw_pic_profile_re_7g2h-eI3UEY91.js"),[],import.meta.url),__vitePreload(()=>import("./undraw_profile_pic_re_iwgo-D0oiVxqP.js"),[],import.meta.url)][Math.floor(Math.random()*2)];S.value=x.default}),computed(()=>_.value?URL.createObjectURL(new Blob([_.value],{type:"image"})):S.value)},_sfc_main$a=defineComponent$1({__name:"accountPage",props:{accountId:{}},setup(n){const{orbiter:r}=useOrbiter(),_=n,S=suivre(r.listenForNameChange,{accountId:computed(()=>_.accountId)}),E=computed(()=>selectTranslation(S.value)||"Anonymous"),x=useUserProfilePhoto(_.accountId);return(T,C)=>(openBlock(),createElementBlock(Fragment,null,[createVNode(VImg,{src:unref(x)},null,8,["src"]),createTextVNode(" "+toDisplayString(E.value),1)],64))}}),_sfc_main$9={},_hoisted_1$6=createBaseVNode("p",null,"Working. Coming soon..",-1);function _sfc_render(n,r){return openBlock(),createBlock(VContainer,null,{default:withCtx(()=>[_hoisted_1$6]),_:1})}const BuildingPage=_export_sfc(_sfc_main$9,[["render",_sfc_render]]),_hoisted_1$5={class:"mb-4 text-h5 text-lg-h4"},_hoisted_2$3={class:"d-flex align-center"},_hoisted_3$3={class:"bg-background.lighten-2 pa-1 mr-2"},_hoisted_4$2={class:"text-subtitle-2 text-medium-emphasis mr-2"},_hoisted_5$1={class:"text-subtitle-2 text-medium-emphasis ml-2"},_hoisted_6$1={class:"text-subtitle-2 text-medium-emphasis mb-4",style:{"line-height":"1.1em"}},_hoisted_7$1={class:"d-flex mt-8"},_sfc_main$8=defineComponent$1({__name:"featuredSlider",props:{featuredList:{}},setup(n){return(r,_)=>(openBlock(),createBlock(VCarousel,{"hide-delimiters":"",height:"400px"},{prev:withCtx(({props:S})=>[createVNode(VBtn,mergeProps(S,{variant:"solo"}),null,16)]),next:withCtx(({props:S})=>[createVNode(VBtn,mergeProps(S,{variant:"solo"}),null,16)]),default:withCtx(()=>[(openBlock(!0),createElementBlock(Fragment,null,renderList(r.featuredList,S=>(openBlock(),createBlock(VCarouselItem,{key:S.name,src:S.cover,cover:"",gradient:"to right, rgba(0,0,0,.80), rgba(0,0,0,.01)"},{default:withCtx(()=>[createVNode(VContainer,{class:"fill-height"},{default:withCtx(()=>[createVNode(VRow,{justify:"center",align:"center","justify-sm":"space-around",class:"px-sm-12"},{default:withCtx(()=>[createVNode(VCol,{cols:"12",sm:"7",md:"6",lg:"5"},{default:withCtx(()=>[createVNode(VSheet,{color:"transparent",class:"my-10"},{default:withCtx(()=>[createBaseVNode("p",_hoisted_1$5,toDisplayString(S.name),1),createBaseVNode("div",_hoisted_2$3,[createBaseVNode("p",_hoisted_3$3,toDisplayString(S.classification),1),createBaseVNode("p",_hoisted_4$2,toDisplayString(S.duration),1),createVNode(VIcon,{style:{"font-size":"0.2em"},icon:"fas fa-circle"}),createBaseVNode("p",_hoisted_5$1,toDisplayString(S.date),1)]),createBaseVNode("p",_hoisted_6$1,toDisplayString(S.description),1),createBaseVNode("div",_hoisted_7$1,[createVNode(VBtn,{color:"primary",rounded:"0","prepend-icon":"fas fa-play",class:"text-none mr-4",text:"Play now",onClick:E=>S.category&&S.contentCID&&r.$router.push(`/release/${S.category}/${S.contentCID}`)},null,8,["onClick"])])]),_:2},1024)]),_:2},1024),createVNode(VCol,{cols:"12",md:"2"},{default:withCtx(()=>[createVNode(VBtn,{variant:"plain",class:"text-none text-h6",ripple:!1,size:"x-large"},{prepend:withCtx(()=>[createVNode(VIcon,{icon:"far fa-circle-play",class:"mb-1",size:"small"})]),default:withCtx(()=>[createTextVNode(" Preview ")]),_:1})]),_:1})]),_:2},1024)]),_:2},1024)]),_:2},1032,["src"]))),128))]),_:1}))}}),_hoisted_1$4={class:"text-h5 font-weight-bold mb-6 mr-auto"},_hoisted_2$2={class:"text-subtitle-1"},_hoisted_3$2={class:"text-subtitle-2"},_hoisted_4$1={class:"text-body-2 text-center"},_hoisted_5={class:"text-caption text-center text-medium-emphasis"},_hoisted_6={class:"text-body-2 text-center"},_hoisted_7={class:"text-caption text-center text-medium-emphasis"},_sfc_main$7=defineComponent$1({__name:"contentSection",props:{title:{},items:{},layout:{},showNavigation:{type:Boolean},showViewAll:{type:Boolean}},setup(n){return(r,_)=>(openBlock(),createBlock(VContainer,{class:"mt-4"},{default:withCtx(()=>[createVNode(VContainer,{class:"d-flex justify-between w-100"},{default:withCtx(()=>[createBaseVNode("p",_hoisted_1$4,toDisplayString(r.title),1),r.showNavigation?(openBlock(),createElementBlock(Fragment,{key:0},[createVNode(VBtn,{icon:"",class:"justify-self-end"},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-caret-left",size:"x-small"})]),_:1}),createVNode(VBtn,{icon:"",class:"justify-self-end"},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-caret-right",size:"x-small",color:"primary"})]),_:1})],64)):createCommentVNode("",!0),r.showViewAll?(openBlock(),createBlock(VBtn,{key:1,variant:"text",text:"View All",class:"text-none"})):createCommentVNode("",!0)]),_:1}),r.layout==="card"?(openBlock(),createBlock(VRow,{key:0,justify:"center"},{default:withCtx(()=>[(openBlock(!0),createElementBlock(Fragment,null,renderList(r.items,S=>(openBlock(),createBlock(VCol,{key:S.id},{default:withCtx(()=>[createVNode(VHover,{"open-delay":"150","close-delay":"150"},{default:withCtx(({props:E,isHovering:x})=>[createVNode(VCard,mergeProps({ref_for:!0},E,{position:"relative"}),{default:withCtx(()=>[createVNode(VImg,{src:S.thumbnail,height:"100%",cover:"",gradient:"to bottom, rgba(0,0,0,.4), rgba(0,0,0,.41)"},{default:withCtx(()=>[createVNode(VCardItem,null,{default:withCtx(()=>[createVNode(VSheet,{class:"d-flex bg-transparent"},{default:withCtx(()=>[createBaseVNode("div",null,[createBaseVNode("p",_hoisted_2$2,toDisplayString(S.title),1),createBaseVNode("p",_hoisted_3$2,toDisplayString(S.subtitle),1)]),x?(openBlock(),createBlock(VSheet,{key:0,position:"absolute",location:"right",class:"d-flex mr-2 flex-column w-auto bg-transparent"},{default:withCtx(()=>[createVNode(VBtn,{size:"x-small",class:"my-1",color:"white",icon:""},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-share-nodes",size:"small"})]),_:1}),createVNode(VBtn,{size:"x-small",class:"my-1",color:"white",icon:""},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-heart",size:"small"})]),_:1}),createVNode(VBtn,{size:"x-small",class:"my-1",color:"white",icon:""},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-plus",size:"small"})]),_:1})]),_:1})):createCommentVNode("",!0)]),_:2},1024)]),_:2},1024),createVNode(VCardActions,null,{default:withCtx(()=>[createVNode(VBtn,{color:"primary",variant:"flat",rounded:"0","prepend-icon":"fas fa-play",size:"small",class:"mt-3 mb-1 text-none",text:"Play now",onClick:T=>S.category&&S.contentCID&&r.$router.push(`/release/${S.category}/${S.contentCID}`)},null,8,["onClick"])]),_:2},1024)]),_:2},1032,["src"])]),_:2},1040)]),_:2},1024)]),_:2},1024))),128))]),_:1})):createCommentVNode("",!0),r.layout==="list"?(openBlock(),createBlock(VRow,{key:1,justify:"center"},{default:withCtx(()=>[(openBlock(!0),createElementBlock(Fragment,null,renderList(r.items,S=>(openBlock(),createBlock(VCol,{key:S.id},{default:withCtx(()=>[createVNode(VSheet,{class:"mx-auto",width:"170px",onClick:E=>S.category==="video"&&S.contentCID&&r.$router.push(`/release/${S.category}/${S.contentCID}`)},{default:withCtx(()=>[createVNode(VImg,{src:S.thumbnail,width:"170px",cover:"","aspect-ratio":"1"},null,8,["src"]),createBaseVNode("p",_hoisted_4$1,toDisplayString(S.title),1),createBaseVNode("p",_hoisted_5,toDisplayString(S.subtitle),1)]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:1})):createCommentVNode("",!0),r.layout==="grid"?(openBlock(),createBlock(VRow,{key:2,justify:"center"},{default:withCtx(()=>[(openBlock(!0),createElementBlock(Fragment,null,renderList(r.items,S=>(openBlock(),createBlock(VCol,{key:S.id},{default:withCtx(()=>[createVNode(VHover,{"open-delay":"150","close-delay":"150"},{default:withCtx(({props:E,isHovering:x})=>[createVNode(VSheet,mergeProps({ref_for:!0},E,{color:"transparent",class:"pa-1",position:"relative"}),{default:withCtx(()=>[createVNode(VImg,{src:S.thumbnail,width:"240px",class:"mx-auto",cover:"","aspect-ratio":1},null,8,["src"]),x?(openBlock(),createBlock(VBtn,{key:0,position:"absolute",size:"x-large",location:"center",icon:"",variant:"solo"},{default:withCtx(()=>[createVNode(VIcon,{icon:"fas fa-play",size:"x-large",color:"primary"})]),_:1})):createCommentVNode("",!0)]),_:2},1040)]),_:2},1024),createBaseVNode("p",_hoisted_6,toDisplayString(S.title),1),createBaseVNode("p",_hoisted_7,toDisplayString(S.subtitle),1)]),_:2},1024))),128))]),_:1})):createCommentVNode("",!0)]),_:1}))}}),_sfc_main$6=defineComponent$1({__name:"homePage",setup(n){const r=[{id:"1",classification:"PG",category:"video",contentCID:"Qmcw6w7pE4J5cxD9ygsp7kgnUyxMYc2UHxsnTj6sTxUuX3",cover:"/mock/movie-aaronsw.jpg",date:"2014",duration:"1h 45m",description:"The Internet's Own Boy follows the story of programming prodigy and information activist Aaron Swartz.",name:"The Internet's Own Boy: The Story of Aaron Swartz",rating:4},{id:"2",classification:"PG",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",cover:"/mock/movie-rip.png",date:"2008",duration:"1h 26m",description:"Join filmmaker Brett Gaylor and mashup artist Girl Talk as they explore copyright and content creation in the digital age. In the process they dissect the media landscape of the 21st century and shatter the wall between users and producers.",name:"RiP!: A Remix Manifesto",rating:4.5},{id:"3",classification:"Unrated",category:"video",contentCID:"QmabExd2NYTdDb2kX9tVAdf1LwzgJnyivknbCnF3nuG289",cover:"/mock/featured-tpbafk-fanart.png",date:"2012",duration:"1h 26m",description:"The Pirate Bay Away From Keyboard is a documentary film about the file sharing website The Pirate Bay.",name:"TPB AFK: The Pirate Bay Away From Keyboard",rating:4.5}],_={"tv-popular-shows":[{id:"1",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"Pure Pwnage",subtitle:"1 Season^",thumbnail:"/mock/tvshow-purepwnage.png"},{id:"2",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"Pioneer One",subtitle:"2 Seasons",thumbnail:"/mock/tvshow-pioneerone.png"},{id:"3",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"Flash Gordon",subtitle:"1 Seasons",thumbnail:"/mock/tvshow-flashgordon.png"},{id:"4",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"The Beverley Hillbillies",subtitle:"~1.6 Seasons^",thumbnail:"/mock/tvshow-beverleyhillbillies.png"}],"featured-various":[{id:"1",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"RiP!: A Remix Manifesto",subtitle:"(2008)",thumbnail:"/mock/movie-rip-poster.png"},{id:"2",title:"Adam McHeffey",subtitle:"Let's Kick Fire",thumbnail:"/mock/music-letskickfire.jpg"},{id:"3",title:"Swear and Shake",subtitle:"Maple Ridge",thumbnail:"/mock/music-mapleridge.webp"},{id:"4",title:"Nine Inch Nails",subtitle:"The Slip",thumbnail:"/mock/music-theslip.jpg"},{id:"5",title:"Radiohead",subtitle:"IN RAINBOWS",thumbnail:"/mock/music-inrainbows.jpg"},{id:"6",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"The Internet's Own Boy: The Story of Aaron Swartz",subtitle:"(2014)",thumbnail:"/mock/movie-aaronsw.jpg"},{id:"7",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"TPB AFK: The Pirate Bay Away from Keyboard",subtitle:"(2012)",thumbnail:"/mock/movie-tbpafk.webp"},{id:"8",category:"video",contentCID:"QmTWWUmvC9txvE7aHs9xHd541qLx3ax58urvx3Kb3SFK2Q",title:"Cosmos Laundromat",subtitle:"(2015)",thumbnail:"/mock/movie-cosmoslaundromat.webp"},{id:"9",title:"Nine Inch Nails",subtitle:"Ghosts I-IV",thumbnail:"/mock/music-ghosts-i-iv.png"}],"featured-music":[{id:"1",title:"Swear and Shake",subtitle:"Maple Ridge",thumbnail:"/mock/music-mapleridge.webp"},{id:"2",title:"Adam McHeffey",subtitle:"Let's Kick Fire",thumbnail:"/mock/music-letskickfire.jpg"},{id:"3",title:"Nine Inch Nails",subtitle:"The Slip",thumbnail:"/mock/music-theslip.jpg"},{id:"4",title:"Silence is Sexy",subtitle:"Everything You Should Know",thumbnail:"/mock/music-everythingyoushouldknow.jpg"},{id:"5",title:"Nine Inch Nails",subtitle:"Ghosts I-IV",thumbnail:"/mock/music-ghosts-i-iv.png"},{id:"6",title:"paniq",subtitle:"Beyond Good and Evil",thumbnail:"/mock/music-paniq-bgae.jpg"},{id:"7",title:"Brad Sucks",subtitle:"Guess Who's A Mess",thumbnail:"/mock/music-guesswhosamess.webp"},{id:"8",title:"Hello Madness",subtitle:"Life and light after dusk",thumbnail:"/mock/music-lightandlightafterdusk.webp"},{id:"9",title:"OK! Crazy Fiction Lady",subtitle:"OK! Crazy Fiction Lady",thumbnail:"/mock/music-okcfl.png"},{id:"10",title:"OK! Crazy Fiction Lady",subtitle:"Bye Bye Fishies",thumbnail:"/mock/music-byebyefishies.png"},{id:"11",title:"paniq",subtitle:"Story of Ohm",thumbnail:"/mock/music-storyofohm.png"},{id:"12",title:"Girl Talk",subtitle:"All Day",thumbnail:"/mock/music-allday.png"}]};return(S,E)=>(openBlock(),createBlock(VContainer,{class:"fill-height"},{default:withCtx(()=>[createVNode(_sfc_main$8,{"featured-list":r}),createVNode(_sfc_main$7,{title:"Featured",items:_["featured-various"],layout:"list",description:"Various featured content of mixed media","show-view-all":!0},null,8,["items"]),createVNode(_sfc_main$7,{title:"Featured Music",items:_["featured-music"],layout:"grid","show-view-all":!0},null,8,["items"]),createVNode(_sfc_main$7,{title:"TV Shows",items:_["tv-popular-shows"],layout:"card","show-navigation":!0},null,8,["items"])]),_:1}))}}),_hoisted_1$3=createBaseVNode("code",null,".env",-1),_sfc_main$5=defineComponent$1({__name:"initiateModDBs",setup(n){const{orbiter:r}=useOrbiter(),_=suivre(({f:L})=>r.listenForSiteConfigured({f:L})),S=computed(()=>_.value===!1),E=ref$2(!1),x=ref$2(),T=ref$2(),C=ref$2(!1),I=async()=>{E.value=!0;const{siteId:L,variableIds:F}=await r.setUpSite();x.value=L,T.value=F,E.value=!1},B=!1,A=computed(()=>{const L="VITE_TRUSTED_SITES_SITE_ID_VAR_ID="+T.value?.trustedSitesSiteIdVariableId,F="VITE_TRUSTED_SITES_NAME_VAR_ID="+T.value?.trustedSitesNameVariableId,U="VITE_RELEASES_FILE_VAR_ID="+T.value?.releasesFileVar,j="VITE_RELEASES_CATEGORY_VAR_ID="+T.value?.releasesCategoryVar,z="VITE_RELEASES_AUTHOR_VAR_ID="+T.value?.releasesAuthorVar,H="VITE_RELEASES_CONTENT_NAME_VAR_ID="+T.value?.releasesContentNameVar,Q="VITE_RELEASES_METADATA_VAR_ID="+T.value?.releasesMetadataVar,J="VITE_RELEASES_THUMBNAIL_VAR_ID="+T.value?.releasesThumbnailVar,Z="VITE_COLLECTIONS_AUTHOR_VAR_ID="+T.value?.collectionsAuthorVar,re="VITE_COLLECTIONS_METADATA_VAR_ID="+T.value?.collectionsMetadataVar,ie="VITE_COLLECTIONS_NAME_VAR_ID="+T.value?.collectionsNameVar,pe="VITE_COLLECTIONS_RELEASES_VAR_ID="+T.value?.collectionsReleasesVar,ue="VITE_COLLECTIONS_THUMBNAIL_VAR_ID="+T.value?.collectionsThumbnailVar,W="VITE_COLLECTIONS_CATEGORY_VAR_ID="+T.value?.collectionsCategoryVar,Y="VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID="+T.value?.featuredReleasesReleaseIdVar,q="VITE_FEATURED_RELEASES_START_TIME_VAR_ID="+T.value?.featuredReleasesStartTimeVar,G="VITE_FEATURED_RELEASES_END_TIME_VAR_ID="+T.value?.featuredReleasesEndTimeVar;return"# The address below should be regenerated for each Orbiter.CC site. If you are setting up an independent site, erase the value below and run the site in development mode (`pnpm dev`) to automatically regenerate. \n"+("VITE_SITE_ID="+x.value)+` # These should ideally stay the same for all Orbiter.CC sites for optimal performance. Only change if you know what you are doing. `+L+` @@ -340,4 +340,4 @@ for(;;){const{done:B,value:A}=await r.read();if(B)break;if(C.length>=S.maxInboun `+q+` `+G+` `}),D=async()=>{x.value&&(C.value=!0,FileSaver_minExports.saveAs(A.value,"[erase this bit].env"),C.value=!1)},N=ref$2(!1),O=async()=>{navigator.clipboard&&await navigator.clipboard.writeText(A.value),N.value=!0},M=async()=>{if(!x.value||!T.value)throw new Error("Mod DB and variables not generated.")};return(L,F)=>(openBlock(),createBlock(VDialog,{modelValue:S.value,"onUpdate:modelValue":F[0]||(F[0]=U=>S.value=U),persistent:"","max-width":"800"},{default:withCtx(()=>[createVNode(VCard,null,{default:withCtx(()=>[createVNode(VCardTitle,null,{default:withCtx(()=>[createTextVNode(toDisplayString(x.value?"Site is now configured":"Site not configured"),1)]),_:1}),x.value?(openBlock(),createBlock(VCardText,{key:1},{default:withCtx(()=>[createTextVNode(" Site configured! Be sure to copy the code below into a "),_hoisted_1$3,createTextVNode(" file and place it at the root of your Orbiter.CC project. "),createVNode(VTextarea,{class:"mt-4",value:A.value,"append-inner-icon":N.value?"mdi-check":"mdi-content-copy",readonly:"",variant:"outlined","onClick:appendInner":O},null,8,["value","append-inner-icon"])]),_:1})):(openBlock(),createBlock(VCardText,{key:0},{default:withCtx(()=>[createTextVNode(" Each instance of Orbiter.CC must be compiled with a unique site configuration. Click below to configure the site. (This can take a while.) "),unref(B)?(openBlock(),createBlock(VAlert,{key:0,class:"mt-4",title:"You seem to be in development mode",text:"This is fine if you're just testing things out. If you're trying to deploy a development server, however, be aware that Orbiter account credentials are linked to the browser and the site domain name. This means that the site will be configured with your localhost address as the root moderator, which is probably not what you want. You should instead deploy the site to your production domain name first, open this page under that domain name (or in the installable Electron app version of your site) and then configure and recompile and deploy the site.",type:"warning",variant:"tonal"})):createCommentVNode("",!0)]),_:1})),x.value?(openBlock(),createBlock(VCardActions,{key:3},{default:withCtx(()=>[createVNode(VSpacer),createVNode(VBtn,{color:"primary","prepend-icon":"mdi-download",loading:C.value,onClick:D},{default:withCtx(()=>[createTextVNode(" Download .env file ")]),_:1},8,["loading"]),createVNode(VBtn,{color:"primary","prepend-icon":"mdi-export",onClick:M},{default:withCtx(()=>[createTextVNode(" Close and enter site ")]),_:1})]),_:1})):(openBlock(),createBlock(VCardActions,{key:2},{default:withCtx(()=>[createVNode(VBtn,{color:"primary mx-auto","prepend-icon":"mdi-creation",variant:"outlined",loading:E.value,onClick:I},{default:withCtx(()=>[createTextVNode(" Configure site ")]),_:1},8,["loading"])]),_:1}))]),_:1})]),_:1},8,["modelValue"]))}}),_hoisted_1$2=createBaseVNode("div",{class:"text-body-2 font-weight-light mb-n1"},"Welcome to",-1),_hoisted_2$1=createBaseVNode("h1",{class:"text-h2 font-weight-bold"},"Orbiter.CC",-1),_hoisted_3$1=createBaseVNode("div",{class:"text-body-2 italic"},"E cinere surgemus",-1),_hoisted_4=createBaseVNode("div",{class:"py-14"},null,-1),_sfc_main$4=defineComponent$1({__name:"initPage",setup(n){const{orbiter:r}=useOrbiter(),_=ref$2(!1);return onMounted(async()=>{await r.siteConfigured(),_.value=!0}),(S,E)=>(openBlock(),createBlock(VResponsive,{class:"d-flex align-center text-center fill-height"},{default:withCtx(()=>[createVNode(VImg,{contain:"",height:"300",src:"src/assets/logo.svg"}),_hoisted_1$2,_hoisted_2$1,_hoisted_3$1,_hoisted_4,createVNode(_sfc_main$5)]),_:1}))}});function isCID(n){try{return isString(n)?!!CID$9.parse(n):n instanceof Uint8Array?!!CID$9.decode(n):!!CID$9.asCID(n)}catch{return!1}}function isString(n){return typeof n=="string"}const _hoisted_1$1=createBaseVNode("p",{class:"text-subtitle mb-6 text-center"}," Please fill out any extra information about the content that might be useful. ",-1),_sfc_main$3=defineComponent$1({__name:"newReleaseForm",setup(n){const{orbiter:r}=useOrbiter(),_=ref$2(),S=ref$2(),E=ref$2(),x=ref$2(),T=ref$2(),C=ref$2(),I=ref$2(),B=ref$2({}),A=ref$2({}),D=ref$2({}),N={required:Q=>!!Q||"Required field.",isValidCid:Q=>isCID(Q)||"Please enter a valid CID."},O=ref$2(!1),M=computed(()=>{if(x.value&&E.value&&C.value&&T.value&&_.value.isValid){let Q=B.value;return T.value=="movie"?Q={...Q,...D.value}:T.value=="music"&&(Q={...Q,...A.value}),{contentCIDValue:x.value,authorValue:E.value,metadataValue:Q,releaseNameValue:C.value,releaseCategoryValue:T.value}}else return}),L=()=>{if(!M.value)return;O.value=!0,console.log("ON SUBMIT");const{contentCIDValue:Q,authorValue:J,metadataValue:Z,releaseNameValue:re,releaseCategoryValue:ie}=M.value;r.addRelease({[RELEASES_AUTHOR_COLUMN]:J,[RELEASES_CATEGORY_COLUMN]:ie,[RELEASES_FILE_COLUMN]:Q,[RELEASES_METADATA_COLUMN]:JSON.stringify(Z),[RELEASES_NAME_COLUMN]:re,[RELEASES_THUMBNAIL_COLUMN]:I.value,[RELEASES_STATUS_COLUMN]:"pending"}),O.value=!1},F=["CC BY","CC BY-NC","CC BY-NC-ND"],U=["Album","Soundtrack","EP","Anthology","Compilation","Single","Live Album","Remix","Bootleg","Interview","Mixtape","Demo","Concert Recording","DJ Mix","Unknown"],j=["MP3","FLAC","AAC","AC3","DTS"],z=["CD","DVD","Vinyl","Soundboard","SACD","DAT","WEB","Blu-Ray"],H=["Feature Film","Short Film","Miniseries","Stand-up Comedy","Live Performance","Movie Collection"];return(Q,J)=>{const Z=resolveComponent("IconTooltip");return openBlock(),createBlock(VForm,{ref_key:"formRef",ref:_,"validate-on":"input lazy",class:"d-flex flex-column ga-2",onSubmit:withModifiers(L,["prevent"])},{default:withCtx(()=>[createVNode(VTextField,{modelValue:C.value,"onUpdate:modelValue":J[0]||(J[0]=re=>C.value=re),label:"Name",rules:[N.required]},null,8,["modelValue","rules"]),createVNode(VTextField,{modelValue:x.value,"onUpdate:modelValue":J[1]||(J[1]=re=>x.value=re),label:"Content CID",rules:[N.isValidCid]},null,8,["modelValue","rules"]),createVNode(VSelect,{modelValue:T.value,"onUpdate:modelValue":J[2]||(J[2]=re=>T.value=re),items:unref(r).contentCategories,rules:[N.required],label:"Category"},null,8,["modelValue","items","rules"]),createVNode(VTextField,{modelValue:E.value,"onUpdate:modelValue":J[3]||(J[3]=re=>E.value=re),label:"Author",rules:[N.required]},null,8,["modelValue","rules"]),createVNode(VTextField,{modelValue:I.value,"onUpdate:modelValue":J[4]||(J[4]=re=>I.value=re),label:"Thumbnail CID (Optional)"},null,8,["modelValue"]),createVNode(VDialog,{modelValue:S.value,"onUpdate:modelValue":J[20]||(J[20]=re=>S.value=re),width:"auto"},{activator:withCtx(({props:re})=>[createVNode(VBtn,mergeProps(re,{rounded:"0",text:"Advanced",variant:"outlined",class:"mb-4",block:""}),null,16)]),default:withCtx(()=>[createVNode(VSheet,{width:"480px","max-height":"620px",class:"pa-8 ma-auto"},{default:withCtx(()=>[_hoisted_1$1,createVNode(VTextField,{modelValue:B.value.description,"onUpdate:modelValue":J[5]||(J[5]=re=>B.value.description=re),label:"Description"},null,8,["modelValue"]),createVNode(VSelect,{modelValue:B.value.license,"onUpdate:modelValue":J[6]||(J[6]=re=>B.value.license=re),items:F,label:"License"},null,8,["modelValue"]),T.value=="music"?(openBlock(),createElementBlock(Fragment,{key:0},[createVNode(VTextField,{modelValue:A.value.tags,"onUpdate:modelValue":J[7]||(J[7]=re=>A.value.tags=re),label:"Tags",placeholder:"Values sepatared by comma"},{"append-inner":withCtx(()=>[createVNode(Z,{icon:"fas fa-circle-question",content:"Any tags you feel are appropriate for the media - such as rock, country, or pop."})]),_:1},8,["modelValue"]),createVNode(VTextField,{modelValue:A.value.musicBrainzID,"onUpdate:modelValue":J[8]||(J[8]=re=>A.value.musicBrainzID=re),label:"MusicBrainz ID"},{"append-inner":withCtx(()=>[createVNode(Z,{icon:"fas fa-circle-question",content:"If the content has an entry on MusicBrainz, enter it here to pre-fill the rest of this form."})]),_:1},8,["modelValue"]),createVNode(VTextField,{modelValue:A.value.albumTitle,"onUpdate:modelValue":J[9]||(J[9]=re=>A.value.albumTitle=re),label:"Album Title"},null,8,["modelValue"]),createVNode(VTextField,{modelValue:A.value.initialReleaseYear,"onUpdate:modelValue":J[10]||(J[10]=re=>A.value.initialReleaseYear=re),label:"Initial Release Year"},null,8,["modelValue"]),createVNode(VSelect,{modelValue:A.value.releaseType,"onUpdate:modelValue":J[11]||(J[11]=re=>A.value.releaseType=re),items:U,label:"Release Type"},null,8,["modelValue"]),createVNode(VSelect,{modelValue:A.value.fileFormat,"onUpdate:modelValue":J[12]||(J[12]=re=>A.value.fileFormat=re),items:j,label:"Format"},null,8,["modelValue"]),createVNode(VTextField,{modelValue:A.value.bitrate,"onUpdate:modelValue":J[13]||(J[13]=re=>A.value.bitrate=re),label:"Bitrate"},null,8,["modelValue"]),createVNode(VSelect,{modelValue:A.value.mediaFormat,"onUpdate:modelValue":J[14]||(J[14]=re=>A.value.mediaFormat=re),items:z,label:"Media"},null,8,["modelValue"])],64)):T.value=="movie"?(openBlock(),createElementBlock(Fragment,{key:1},[createVNode(VTextField,{modelValue:D.value.posterCID,"onUpdate:modelValue":J[15]||(J[15]=re=>D.value.posterCID=re),label:"Poster CID"},null,8,["modelValue"]),createVNode(VTextField,{modelValue:D.value.TMDBID,"onUpdate:modelValue":J[16]||(J[16]=re=>D.value.TMDBID=re),label:"TMDB ID"},null,8,["modelValue"]),createVNode(VTextField,{modelValue:D.value.IMDBID,"onUpdate:modelValue":J[17]||(J[17]=re=>D.value.IMDBID=re),label:"IMDB ID"},null,8,["modelValue"]),createVNode(VSelect,{modelValue:D.value.releaseType,"onUpdate:modelValue":J[18]||(J[18]=re=>D.value.releaseType=re),items:H,label:"Media"},null,8,["modelValue"])],64)):createCommentVNode("",!0),createVNode(VBtn,{rounded:"0",text:"Save",color:"primary",block:"",onClick:J[19]||(J[19]=re=>S.value=!1)})]),_:1})]),_:1},8,["modelValue"]),createVNode(VBtn,{rounded:"0",color:"primary",type:"submit",block:"",text:"Submit",disabled:!M.value,loading:O.value},null,8,["disabled","loading"])]),_:1},512)}}}),_sfc_main$2=defineComponent$1({__name:"uploadPage",setup(n){return(r,_)=>(openBlock(),createBlock(VContainer,null,{default:withCtx(()=>[createVNode(VSheet,{width:"480px",class:"px-8 pb-16 pt-10 mx-auto"},{default:withCtx(()=>[createVNode(_sfc_main$3)]),_:1})]),_:1}))}}),_hoisted_1={class:"d-flex flex-column align-center justify-center bg-black"},_hoisted_2=["src"],_hoisted_3={key:2,class:"position-absolute left-0 bottom-0 w-100"},_sfc_main$1=defineComponent$1({__name:"videoPlayer",props:{videoSource:{}},setup(n){const r=n,_=ref$2(null),S=ref$2(!1),E=ref$2(!0),x=ref$2(0),T=ref$2(0),C=j=>{console.log("seeking",j),_.value&&(E.value=!0,D(),_.value.currentTime=j)},I=()=>{S.value?D():M()},B=()=>{_.value&&!(_.value.volume>0)?O():N()},A=j=>{console.log(j)},D=()=>{_.value&&(_.value.pause(),S.value=!1)},N=()=>{_.value&&(console.log("mute"),_.value.volume=0)},O=()=>{_.value&&(console.log("unmute"),_.value.volume=1)},M=()=>{_.value&&(_.value.play(),S.value=!0)},L=()=>{_.value&&(T.value=_.value.currentTime,S.value&&requestAnimationFrame(L))},F=()=>{_.value&&_.value.requestFullscreen()};watch(()=>r.videoSource,()=>{_.value&&(_.value.load(),_.value.addEventListener("loadedmetadata",()=>{x.value=_.value.duration}))});const U=()=>{E.value=!1,_.value&&_.value.currentTime>0&&(_.value?.play(),S.value=!0)};return onMounted(()=>{_.value&&(_.value.addEventListener("progress",L),_.value.addEventListener("canplay",U))}),onBeforeUnmount(()=>{_.value&&(_.value.removeEventListener("progress",L),_.value.removeEventListener("canplay",U))}),(j,z)=>(openBlock(),createElementBlock("div",_hoisted_1,[createVNode(VHover,{"open-delay":150,"close-delay":150},{default:withCtx(({isHovering:H,props:Q})=>[createVNode(VContainer,mergeProps(Q,{id:"video-player",class:"position-relative"}),{default:withCtx(()=>[H?(openBlock(),createBlock(VBtn,{key:0,size:"small",icon:"fa:fas fa-arrow-left",class:"position-absolute top-0 left-0 mt-2 ml-2",style:{zIndex:1e3},onClick:z[0]||(z[0]=J=>j.$router.back())})):createCommentVNode("",!0),createBaseVNode("video",{ref_key:"videoPlayerRef",ref:_,autoplay:"",class:"w-100 h-100",src:r.videoSource,controls:!1,crossorigin:"anonymous",onLoadeddata:A,onClick:I},null,40,_hoisted_2),E.value?(openBlock(),createBlock(VProgressCircular,{key:1,indeterminate:"",size:"32",class:"position-absolute top-0 right-0 bottom-0 left-0 ma-auto"})):createCommentVNode("",!0),H?(openBlock(),createElementBlock("div",_hoisted_3,[createVNode(VSlider,{modelValue:T.value,"onUpdate:modelValue":[z[1]||(z[1]=J=>T.value=J),C],"track-fill-color":"primary","thumb-color":"white","thumb-size":"16px",class:"pt-4",max:_.value?.duration},{prepend:withCtx(()=>[createVNode(VBtn,{icon:"",size:"small",onClick:I},{default:withCtx(()=>[S.value?(openBlock(),createBlock(VIcon,{key:0,icon:"fa:fas fa-pause"})):(openBlock(),createBlock(VIcon,{key:1,icon:"fa:fas fa-play"}))]),_:1})]),append:withCtx(()=>[createVNode(VBtn,{icon:"",size:"small",onClick:B},{default:withCtx(()=>[_.value&&!(_.value.volume>0)?(openBlock(),createBlock(VIcon,{key:0,icon:"fa:fas fa-volume-off"})):(openBlock(),createBlock(VIcon,{key:1,icon:"fa:fas fa-volume-high"}))]),_:1}),createVNode(VBtn,{icon:"",size:"small",onClick:F},{default:withCtx(()=>[createVNode(VIcon,{icon:"fa:fas fa-expand"})]),_:1})]),_:1},8,["modelValue","max"])])):createCommentVNode("",!0)]),_:2},1040)]),_:1})]))}}),IPFS_GATEWAY="cdn.riff.cc",_sfc_main=defineComponent$1({__name:"releasePage",props:{contentCID:{required:!0,type:String},category:{required:!0,type:String}},setup(n){const r=n;return(_,S)=>(openBlock(),createBlock(VContainer,null,{default:withCtx(()=>[createVNode(VSheet,{"min-height":"75vh"},{default:withCtx(()=>[createVNode(_sfc_main$1,{"video-source":`https://${IPFS_GATEWAY}/ipfs/${r.contentCID}`},null,8,["video-source"])]),_:1})]),_:1}))}}),routes=[{path:"/",component:_sfc_main$6},{path:"/account",name:"Account",component:_sfc_main$a},{path:"/upload",name:"Upload",component:_sfc_main$2},{path:"/init",name:"Create Website",component:_sfc_main$4},{path:"/admin",name:"Admin Website",component:BuildingPage},{path:"/music",component:BuildingPage},{path:"/movies",component:BuildingPage},{path:"/tv-shows",component:BuildingPage},{path:"/about",component:AboutPage},{path:"/release/:category/:contentCID",name:"Release",component:_sfc_main,props:!0}],routeur=createRouter({history:createWebHashHistory(),routes}),app=createApp(_sfc_main$c);inscrireExtentions(app);app.use(routeur);app.mount("#app");export{Buffer$2 as B,_debug as _,getAugmentedNamespace as a,pathBrowserify as b,commonjsGlobal as c,getDefaultExportFromCjs as d,empty$1 as e,global$1 as g,process$1 as p,requireCryptoBrowserify as r}; -//# sourceMappingURL=index-CQYrZ5gL.js.map +//# sourceMappingURL=index-D8bkrfVo.js.map diff --git a/index-CQYrZ5gL.js.map b/index-D8bkrfVo.js.map similarity index 63% rename from index-CQYrZ5gL.js.map rename to index-D8bkrfVo.js.map index 0809fcc..915a5cc 100644 --- a/index-CQYrZ5gL.js.map +++ b/index-D8bkrfVo.js.map @@ -1 +1 @@ -{"version":3,"mappings":"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ACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,gEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,CACF,CACF,EACD,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,iEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEAC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V,EAAe,KACf,EAAe,KACf,EAAe,GACf,EAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,MAAe,IACvB,EAGI,eAAiB,CACpB,KACA,QACA,aACA,WACA,YACA,iBACA,eACA,WACA,SACA,WACA,cACA,kBACA,gBACA,YACA,UACA,YACA,eACA,UACA,UACD,EAEA,SAAS,OAAOr2B,EAA2D,CAAE,OAAOA,EAAI,IAAI,SAASvB,EAAG,CAAE,MAAO,CAAEA,GAAG,GAAI,IAAKA,GAAG,EAAG,IAAIA,EAAE,GAAG,CAAI,EAAI,CAItJ,IAAI,QAAwB,OAAO,CAElC,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAGA,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAEA,QACA,MACA,IACA,QACA,QACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,MACA,SAEA,IACA,SACA,SACA,MACA,QACA,QACA,MACA,IACA,MACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,QACA,SACA,SACA,QACA,QAGA,EACA,SACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACD,CAAC,EACG,OAAsB,IAA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M,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,cAAe,EAAEC,EAAmB,EACvD,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,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,oBACL,IAAK,gBACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,cACL,IAAK,qBACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,eACL,IAAK,eACL,IAAK,iBACL,IAAK,eACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,YACL,IAAK,YACL,IAAK,gBACL,IAAK,cACL,IAAK,eACL,IAAK,kBACL,IAAK,oBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,UACL,IAAK,SACL,IAAK,cACL,IAAK,UACL,IAAK,oBACL,IAAK,kBACL,IAAK,QACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,gBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,iBACL,IAAK,YACL,IAAK,cACL,IAAK,eACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,kBACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,YACL,IAAK,oBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,WACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,eACL,IAAK,cACL,IAAK,YACL,IAAK,kBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,aACL,IAAK,oBACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACL,IAAK,yBACL,IAAK,cACL,IAAK,aACL,IAAK,mBACL,IAAK,sBACL,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,aACL,IAAK,iBACL,IAAK,YACL,IAAK,mBACL,IAAK,cACL,IAAK,wBACL,IAAK,kBACL,IAAK,qBACL,IAAK,kBACL,IAAK,kBACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,iBACL,IAAK,eACL,IAAK,mBACL,IAAK,aACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACL,IAAK,0BACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,cACL,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,kBACL,IAAK,mBACL,IAAK,cACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,eACL,IAAK,oBACL,IAAK,sBACL,IAAK,sBACL,IAAK,mBACL,IAAK,qBACL,IAAK,qBACL,IAAK,gBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,gBACL,IAAK,wBACL,IAAK,qBACL,IAAK,SACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,mBACL,IAAK,oBACL,IAAK,eACL,IAAK,oBACL,IAAK,uBACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,qBACL,IAAK,yBACL,IAAK,mBACL,IAAK,WACL,IAAK,iBACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,mBACL,IAAK,mBACL,IAAK,iBACL,IAAK,kBACL,IAAK,oBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,SACL,IAAK,SACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,oBACL,IAAK,sBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,oBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACP,EACI,KAAO,CACT,EAAG,QACH,EAAG,KACH,EAAG,OACH,EAAG,UACH,EAAG,MACH,EAAG,UACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,SACH,GAAI,KACJ,GAAI,MACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,KACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,MACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,QACJ,GAAI,MACJ,GAAI,KACJ,GAAI,MACJ,GAAI,MACJ,GAAI,SACJ,GAAI,OACJ,GAAI,WACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,KACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,OACJ,GAAI,SACJ,GAAI,SACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,SACJ,GAAI,SACJ,GAAI,SACJ,GAAI,WACJ,GAAI,SACJ,GAAI,YACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,WACJ,GAAI,SACJ,GAAI,QACJ,GAAI,UACJ,GAAI,SACJ,GAAI,YACJ,GAAI,cACJ,GAAI,YACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,IAAK,SACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,cACL,IAAK,WACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,UACL,IAAK,aACL,IAAK,OACL,IAAK,QACL,IAAK,YACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,IACL,IAAK,IACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,WACL,IAAK,SACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,gBACL,IAAK,iBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,aACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,aACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,WACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,aACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,SACL,IAAK,aACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,WACL,IAAK,OACL,IAAK,QACL,IAAK,aACL,IAAK,KACL,IAAK,QACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,iBACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,cACL,IAAK,WACL,IAAK,iBACL,IAAK,aACL,IAAK,YACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,MACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,YACL,IAAK,cACL,IAAK,QACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,oBACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,QACL,IAAK,cACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,YACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,MACL,IAAK,YACL,IAAK,aACL,IAAK,qBACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,aACL,IAAK,cACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,SACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,MACL,IAAK,cACL,IAAK,MACL,IAAK,aACL,IAAK,gBACL,IAAK,UACL,IAAK,eACL,IAAK,UACL,IAAK,WACL,IAAK,SACL,IAAK,YACL,IAAK,YACP,EACI,SAAW,CACb,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EAC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,CACd,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,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C,CAAC,EACL,EACR,CACH,CAAC,ECnGY,IAAM,CACjB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,KAAO,CAClB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,OAAS,CACpB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,WAAa,CACxB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,OAAS,CACpB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,KAAO,CAClB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,UAAY,CACvB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,KAAO,CAClB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,KAAO,CAClB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,MAAQ,CACnB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,WAAa,CACxB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,KAAO,CAClB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,OAAS,CACpB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,MAAQ,CACnB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,OAAS,CACpB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,WAAa,CACxB,KAAM,UACN,SAAU,U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CJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,iBAAkB,EAClB,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI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","names":["getDefaultExportFromCjs","x","browser","fun","marker","queue","timeout","len","args","i","array","noop","name","dir","browserExports","buffer","byteLength","lookup","code","b64","validLen","placeHoldersLen","lens","tmp","arr","curByte","num","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","value","c","rt","exports","base64","ieee754$1","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","GlobalUint8Array","GlobalArrayBuffer","GlobalSharedArrayBuffer","typedArraySupport","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","actual","fromArrayLike","arrayView","copy","byteOffset","obj","numberIsNaN","a","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","str","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","type","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","Blob","Buffer$1","File","atob","btoa","constants","process","global","expectsLowerCase","set","isOn","key","extend","el","hasOwnProperty","hasOwn","isArray","isMap","isSet","isFunction","isString","isSymbol","isObject","isPromise","objectToString","isPlainObject","cache","_","oldValue","fns","def","writable","item","normalized","cssText","isRef","_key","entries","val2","v","_a","detached","currentEffectScope","fromParent","l","effect","scope","trigger","scheduler","dep","lastShouldTrack","lastEffect","computed","effect2","trackId","debuggerEventExtraInfo","oldDep","dirtyLevel","tracking","cleanup","depsMap","newValue","oldTarget","deps","newLength","key2","object","instrumentations","_isReadonly","_isShallow","receiver","isReadonly2","isShallow2","targetIsArray","readonly","isOldValueReadonly","hadKey","result","getProto","get","isReadonly","isShallow","rawTarget","rawKey","has2","wrap","has","add","get2","clear","hadItems","callback","thisArg","observed","method","targetIsMap","isPair","isKeyOnly","innerIterator","done","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","shallow","rawType","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","raw","getter","_setter","isSSR","self","getterOrOptions","debugOptions","setter","onlyGetter","ref2","newVal","oldVal","r","ref","rawValue","__v_isShallow","useDirectValue","objectWithRefs","_object","_defaultValue","_getter","source","defaultValue","instance","appWarnHandler","trace","_b","vnode","warnArgs","currentVNode","normalizedStack","parentInstance","logs","entry","recurseCount","postfix","isRoot","open","close","props","keys","err","values","throwInDev","contextVNode","cur","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","nextTick","p","findInsertionIndex","id","middle","middleJob","middleJobId","job","cb","seen","deduped","diff","event","rawArgs","isModelListener","modelArg","modifiersKey","number","trim","handlerName","handler","onceHandler","comp","appContext","asMixin","cached","hasExtends","extendEmits","raw2","normalizedFromExtend","options","prev","ctx","isNonScopedSlot","renderFnWithContext","prevInstance","Component","withProxy","propsOptions","slots","attrs","emit","render","renderCache","data","setupState","inheritAttrs","fallthroughAttrs","proxyToUse","thisProxy","render2","root","shapeFlag","prevVNode","nextVNode","optimized","prevProps","prevChildren","component","nextProps","nextChildren","patchFlag","emits","dynamicProps","emitsOptions","nextKeys","parent","maybeSelfReference","warnMissing","selfName","resolve","registry","suspense","hook","prepend","hooks","wrappedHook","reset","lifecycle","directives","bindings","modifiers","traverse","oldBindings","binding","renderItem","index","defineComponent","extraOptions","state","accessCache","normalizedProps","publicGetter","cssModule","globalProperties","descriptor","publicThis","callHook","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","components","filters","methodHandler","opt","provides","registerLifecycleHook","register","_hook","exposed","checkDuplicateProperties","injected","inject","h","base","mixins","extendsOptions","globalMixins","optionMergeStrategies","resolved","mergeOptions","to","strats","strat","merged","hydrate","rootComponent","rootProps","context","installedPlugins","isMounted","app","version","plugin","mixin","directive","rootContainer","isHydrate","namespace","lastApp","parentProvides","treatDefaultAsFactory","rawProps","isStateful","rawPrevProps","rawCurrentProps","hasAttrsChanged","propsToUpdate","camelizedKey","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","extendProps","normalizedKey","prop","booleanIndex","stringIndex","ctor","expectedTypes","t","normalizeSlot","rawSlot","rawSlots","children","needDeletionCheck","deletionComparisonTarget","rawRef","oldRawRef","parentSuspense","isUnmount","refValue","owner","oldRef","refs","_isString","_isRef","doSet","existing","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","patch","n1","n2","container","anchor","parentComponent","slotScopeIds","getNextHostNode","unmount","processText","processCommentNode","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","nextSibling","next","removeStaticNode","mountElement","patchElement","vnodeHook","transition","dirs","mountChildren","setScopeId","unmountChildren","needCallTransitionHooks","scopeId","subTree","parentVNode","child","dynamicChildren","oldProps","newProps","patchBlockChildren","patchChildren","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","mountComponent","updateComponent","initialVNode","setupRenderEffect","placeholder","updateComponentPreRender","componentUpdateFn","bu","u","nonHydratedAsyncRoot","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateNode","hydrateSubTree","scopedInitialVNode","update","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","nextIndex","move","moveType","leave","delayLeave","afterLeave","remove2","performLeave","doRemove","memoIndex","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","remove","removeFragment","performRemove","bum","um","isFlushing","currentNamespace","allowed","ch1","ch2","arrI","subComponent","immediate","deep","flush","once","onTrack","onTrigger","_cb","unwatch","reactiveGetter","source2","forceTrigger","isMultiSource","onCleanup","baseGetter","ssrCleanup","path","segments","depth","current","keepAliveRoot","enterCbKey","getCurrentInstance","mode","innerChild","enterHooks","oldChild","oldInnerChild","leavingHooks","earlyRemove","delayedLeave","leavingVNodesCache","leavingVNodes","postClone","appear","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","callAsyncHook","hook2","leavingVNode","afterHook","cancelHook","called","cancelled","vnode2","hooks2","keepComment","parentKey","keyedFragmentCount","select","targetSelector","insert","querySelector","createText","createComment","disabled","mainAnchor","targetAnchor","mount","container2","anchor2","wasDisabled","currentContainer","currentAnchor","nextTarget","shouldRemove","isReorder","node","parentNode","hydrateChildren","targetNode","disableTracking","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","cloned","klass","style","extraProps","mergeRef","cloneTransition","mergedProps","text","flag","asBlock","slot","slotFlag","toMerge","incoming","g","registerGlobalSetter","setters","setupResult","setup","setupContext","resolvedResult","compile","skipOptions","template","isCustomElement","compilerOptions","delimiters","componentCompilerOptions","finalCompilerOptions","includeInferred","match","inferFromRegistry","propsOrChildren","tag","is","selector","content","before","wrapper","h2","baseProps","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","durations","enterDuration","leaveDuration","finishEnter","isAppear","finishLeave","makeEnterHook","cls","_vtc","expectedType","explicitTimeout","resolveIfNotStale","propCount","endEvent","ended","onEnd","styles","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","isSVG","transitionClasses","isCssString","hasControlledDisplay","prevStyle","cssVarText","prefixed","rawName","isBoolean","needRemove","prevValue","nextValue","invokers","existingInvoker","invoker","initialValue","originalStop","moveClass","movedChildren","cssTransitionProps","oldPos","newPos","dx","dy","clone","lazy","castToNumber","domValue","elValue","cacheKey","guard","containerOrSelector","defaults","definition","fallback","deepEqual","property","k","unit","o","paths","exclude","rest","include","events","inputEvents","rootAttrs","inputAttrs","debounce","delay","timeoutId","_len","trimmedStr","char","chunked","prefix","arrayFn","sourceProperty","targetProperty","nodes","kebab","propName","_len2","_key2","filterByTabIndex","targets","elements","location","condition","_el","idx","inc","focusable","vnodes","targetDiv","mouseX","mouseY","divRect","divLeft","divTop","divRight","divBottom","isPrintableChar","noModifier","isRtl","side","align","_ref","width","height","rect","tx","ta","sx","sy","w","keyframes","animation","_handler","background","Rtxt","Gtxt","Btxt","Rbg","Gbg","Bbg","Ytxt","Ybg","outputContrast","SAPC","message","original","replacement","fromXYZ","xyz","transform","transformedY","toXYZ","lab","Ln","C","rgb","matrix","color","groups","realValues","hex","hsva","f","hsla","rgba","hsv","sprime","hsl","_ref2","amount","CIELAB.fromXYZ","sRGB.toXYZ","sRGB.fromXYZ","CIELAB.toXYZ","second","l1","light","dark","blackContrast","vm","_getCurrentInstance","uid","injectedDefaults","providedDefaults","newDefaults","scoped","properties","componentDefaults","_props","propValue","_subcomponentDefaults","subComponents","provideSubDefaults","propKeys","setupBindings","exposeDefaults","_defineComponent","suffix","getData","acc","includeHidden","stopAt","hasText","_createVNode","makeTransitionProps","origin","functions","offsetTop","offsetLeft","offsetWidth","offsetHeight","position","top","left","expandedParentClass","sizeProperty","offsetProperty","initialStyle","resetStyles","speed","_mergeProps","els","targetBox","elBox","originX","originY","anchorSide","anchorOffset","offsetX","offsetY","tsx","tsy","maxs","asa","maxHeight","maxWidth","minHeight","minWidth","ratio","aspectStyles","dimensionStyles","colors","classes","backgroundColor","textColor","textColorClasses","textColorStyles","backgroundColorClasses","backgroundColorStyles","rounded","tile","group","customProps","observer","_observe","isIntersecting","observe","intersect","roundedClasses","currentSrc","image","naturalWidth","naturalHeight","normalisedSrc","aspectRatio","init","pollForSize","lazyImg","onError","onLoad","getSrc","img","timer","poll","imgHeight","imgWidth","containClasses","__image","sources","__preloadImage","__placeholder","__error","__gradient","isBooted","stop","responsiveProps","_withDirectives","_Fragment","_resolveDirective","border","elevation","active","transformIn","transformOut","internal","kebabProp","isControlled","model","externalValue","internalValue","params","messages","shortKey","currentLocale","fallbackLocale","provided","i18n","rtl","locale","genDefaults","themes","theme","defaultTheme","parsedOptions","computedThemes","variation","onColor","colorVal","lines","themeName","bgLines","fgLines","getHead","install","head","updateStyles","styleEl","themeClasses","newTheme","line","lightOverlay","darkOverlay","variables","allowedDensities","borderClasses","elevationClasses","rtlClasses","isExtended","contentHeight","extensionHeight","hasTitle","hasImage","extension","box","resizeRef","contentRect","layout","isKeptAlive","layoutItemStyles","layoutItemScrimStyles","positions","layoutSizes","activeItems","previousLayer","layers","layer","parentLayout","rootZIndex","registered","priorities","disabledTransitions","layoutRect","computedOverlaps","map","overlaps","overlap","bottom","topPosition","bottomPosition","topAmount","bottomAmount","uniquePriorities","items","transitionsEnabled","mainRect","mainStyles","getLayoutItem","rootVm","order","layoutSize","elementSize","disableTransitions","absolute","instanceIndex","zIndex","isHorizontal","isOppositeHorizontal","isOppositeVertical","layoutClasses","layoutStyles","canScroll","previousScroll","previousScrollHeight","currentScroll","savedScroll","currentThreshold","isScrollActive","isScrollingUp","scrollThreshold","scrollRatio","onScroll","targetEl","currentScrollHeight","scrollTarget","newTarget","vToolbarRef","isActive","scrollBehavior","behavior","canHide","isCollapsed","isFlat","opacity","ssrBootStyles","toolbarProps","allowedVariants","isClickable","variantClasses","variant","colorClasses","colorStyles","densityClasses","injectKey","required","isSelected","isFirst","isLast","selectedClass","isUnmounted","selected","groupVm","unwrapped","unregister","forceMandatoryValue","step","currentId","currentIndex","newItem","ids","modelValue","itemByIndex","itemIndex","btnGroupProps","aliases","Icon","sets","defaultSet","icons","iconAlias","icon","iconSetName","setName","iconName","sizeClasses","sizeStyles","slotIcon","iconData","slotValue","hasClick","intersectionRef","MAGIC_RADIUS_CONSTANT","CIRCUMFERENCE","underlayColorClasses","underlayColorStyles","normalizedValue","diameter","strokeWidth","strokeDashOffset","opposite","getOffset","progress","locationStyles","bufferColorClasses","bufferColorStyles","barColorClasses","barColorStyles","normalizedBuffer","isReversed","isForcedColorsModeActive","handleClick","right","bar","useLink","RouterLink","isLink","href","linkProps","routerLink","link","route","router","popped","removeBefore","removeAfter","onPopstate","localX","localY","radius","scale","centerX","centerY","ripples","element","wasEnabled","enabled","loaderClasses","positionClasses","variantProps","isDisabled","isElevated","valueAttr","onClick","Tag","hasPrepend","hasAppend","hasIcon","dividerStyles","divider","autoHeight","ssr","userAgent","regexp","android","ios","cordova","electron","chrome","edge","firefox","opera","win","mac","linux","thresholds","mobileBreakpoint","platform","updateSize","xs","sm","md","lg","xl","xxl","breakpointValue","mobile","display","displayClasses","offsetKey","orderKey","propMap","breakpointClass","className","breakpoint","classList","hasColClasses","prefixKey","mandatory","strategy","parents","parentStrategy","singleSelected","_ref3","_ref4","opened","newOpened","on","_ref5","_ref6","childrenIds","everySelected","cid","noneSelected","_ref7","activeStrategy","selectStrategy","openStrategy","getPath","nodeIds","nested","parentId","isGroup","newSelected","newActivated","uidSymbol","computedId","isOpen","_id","activatorProps","toggleIcon","activatorDefaults","_vShow","activate","isActivated","isIndeterminate","isGroupActivator","openOnSelect","roundedProps","lineClasses","slotProps","onKeyDown","hasSubtitle","hasAppendMedia","hasPrependMedia","itemProps","slotsWithItem","listGroupProps","listItemProps","transformItem","title","transformItems","hasNullItem","activeColor","baseColor","isFocused","contentRef","onFocusin","onFocusout","onFocus","focus","onKeydown","onMousedown","scrollToTop","layoutRef","warning","EventEmitter","eventsModule","listener","that","doError","er","listeners","wrapped","originalListener","unwrap","evlistener","emitter","reject","errorListener","resolver","flags","wrapListener","Events","EE","addListener","evt","clearEvent","names","handlers","ee","a1","a2","a3","a4","a5","module","getDOMException","errorMessage","AbortError","getAbortedReason","signal","reason","pTimeout","promise","milliseconds","customTimers","cancelablePromise","timeoutError","TimeoutError","error","lowerBound","comparator","count","it","#queue","run","#carryoverConcurrencyCount","#isIntervalIgnored","#intervalCount","#intervalCap","#interval","#intervalEnd","#intervalId","#timeoutId","#queueClass","#pending","#concurrency","#isPaused","#throwOnTimeout","PriorityQueue","#doesIntervalAllowAnother","#doesConcurrentAllowAnother","#next","#tryToStartAnother","#onResumeInterval","#onInterval","#initializeIntervalIfNeeded","#isIntervalPaused","now","canInitializeInterval","#processQueue","newConcurrency","#throwOnAbort","_resolve","function_","operation","#onEvent","filter","deferred","hwm","getNext","pushable","onNext","drain","waitNext","bufferNext","bufferError","push","_return","_throw","cancel","_pushable","opts","isAsyncIterable","thing","merge","syncSources","duplex","isIterable","stream","sourceWrap","require$$0","retimer","AbortController","ms","DefaultTimeout","ipfs","log","onSynced","libp2p","pubsub","address","headsSyncAddress","pathJoin","PQueue","peers","started","onPeerJoined","peerId","heads","sendHeads","receiveHeads","headBytes","handleReceiveHeads","connection","handlePeerSubscribed","task","remotePeer","subscriptions","subscription","timeoutController","TimeoutController","handleUpdateMessage","topic","stopSync","startSync","inherits_browserModule","superCtor","TempCtor","inherits","require$$1","dist","clock","time","equals","aa","bb","ii","coerce","ALPHABET","BASE_MAP","xc","BASE","LEADER","FACTOR","iFACTOR","encode","zeroes","pbegin","pend","b58","carry","it1","it2","decodeUnsafe","psz","b256","it3","it4","vch","decode","_brrp__multiformats_scope_baseX","baseEncode","baseDecode","decoder","or","decoders","ComposedDecoder","Encoder","Decoder","Codec","baseX","basex","bitsPerChar","codes","bits","written","pad","mask","rfc4648","base32","base58btc","encode_1","MSB","REST","MSBALL","INT","oldOffset","MSB$1","REST$1","shift","counter","N1","N2","N3","N4","N5","N6","N7","N8","N9","varint","_brrp_varint","encodeTo","int","encodingLength","create","digest","sizeOffset","varint.encodingLength","digestOffset","varint.encodeTo","Digest","multihash","varint.decode","equalBytes","format","toStringV0","baseCache","toStringV1","CID","DAG_PB_CODE","SHA_256_CODE","Digest.create","other","unknown","Digest.equals","encodeCID","cidSymbol","Digest.decode","remainder","specs","prefixSize","multihashBytes","digestBytes","Digest.Digest","initialBytes","codec","multihashCode","digestSize","multihashSize","parseCIDtoBytes","codeOffset","hashOffset","Hasher","enumerable","configurable","linksWithin","elementPath","links","treeWithin","tree","part","hasher","hash","Block","typeOf","isBuffer","objectType","objectTypeName","major","terminal","typ","Type","encodedLength","textDecoder","textEncoder","toString","slice","concat","chunks","off","compare","b1","b2","chunkSize","topChunk","chunkPos","byts","chunk","need","_minor","token","uint","nuint","buint","tok1","tok2","uint.readUint8","uint.readUint16","uint.readUint32","uint.readUint64","negint","unsigned","uint.encodeUintValue","uint.uintBoundaries","toToken","minor","_options","totLength","tok","_data","_pos","uint.encodeUint","float","decoded","success","inp","valu32","exponent","mantissa","logicalExponent","ui8a","half","exp","mant","uint.decodeUint8","uint.decodeUint16","uint.decodeUint32","uint.decodeUint64","negint.decodeNegint8","negint.decodeNegint16","negint.decodeNegint32","negint.decodeNegint64","bytes.decodeBytesCompact","bytes.decodeBytes8","bytes.decodeBytes16","bytes.decodeBytes32","bytes.decodeBytes64","string.decodeStringCompact","string.decodeString8","string.decodeString16","string.decodeString32","string.decodeString64","array.decodeArrayCompact","array.decodeArray8","array.decodeArray16","array.decodeArray32","array.decodeArray64","array.decodeArrayIndefinite","map.decodeMapCompact","map.decodeMap8","map.decodeMap16","map.decodeMap32","map.decodeMap64","map.decodeMapIndefinite","tag.decodeTagCompact","tag.decodeTag8","tag.decodeTag16","tag.decodeTag32","tag.decodeTag64","float.decodeUndefined","float.decodeFloat16","float.decodeFloat32","float.decodeFloat64","float.decodeBreak","encoders","stack","_typ","_refStack","_obj","refStack","customTypeEncoder","tokens","typeEncoder","keyToken1","keyToken2","tcmp","quickBytes","encoder","byt","tokeniser","useMaps","tagged","toByteView","cborg.Token","cborg.Type","decodeOptions","cborg.encode","cborg.decode","sha","sha256","hashStringEncoding","identity","payload","Block.encode","signature","identities","isEqual","Block.decode","MemoryStorage","memory","put","DefaultStorage","storage","currentHeads","all","newHeads","iterator","LastWriteWins","First","sortById","resolveConflict","NoZeroes","func","randomId","DefaultAccessController","logId","logHeads","access","entryStorage","headsStorage","indexStorage","sortFn","_entries","_index","_heads","appendQueue","joinQueue","maxTime","append","heads_","nexts","getReferences","join","isLog","joinEntry","verifyEntry","headsHashes","hashesToAdd","hashesToGet","connectedHeads","traverseAndVerify","getEntries","rootEntries","shouldStopFn","useRefs","traversed","toFetch","fetched","notIndexed","fetchEntries","gt","gte","lt","lte","amountToIterate","shouldStopTraversal","useBuffer","LRU","skipFirst","skipLast","endIndex","startIndex","storage1","storage2","reverse","iteratorOptions","pin","block","manifests","manifest","textEndec","ModuleError","formats","Encoding","require$$2","ViewFormat","BufferFormat","view","UTF8Format","encodings","require$$3","Transcoder","maybeType","nextTickBrowser","symbol","common","fromCallback","getOptions","getCallback","kPromise","kCallback","kHandleOne","kHandleMany","kCloseCallbacks","kKeyEncoding","kValueEncoding","emptyOptions","db","legacy","hint","onnext","nextv","onnextv","keyEncoding","keyFormat","mapped","callbacks","subject","cause","AbstractIterator","AbstractKeyIterator","AbstractValueIterator","Iterator","DefaultKeyIterator","DefaultValueIterator","mapEntry","kUndefer","DeferredIterator","DeferredKeyIterator","DeferredValueIterator","kStatus","kOperations","valueEncoding","mappedKey","mappedValue","AbstractChainedBatch","DefaultChainedBatch","rangeOptions","queueMicrotask","kUnfix","kIterator","AbstractSublevelIterator","unfix","AbstractSublevelKeyIterator","AbstractSublevelValueIterator","kPrefix","kUpperBound","kPrefixRange","kParent","AbstractLevel","AbstractSublevel","separator","forward","reserved","mergeManifests","upperBound","MultiFormat","Unfixer","operations","supportsEncoding","prefixLength","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","kOptions","passive","maybeOpened","maybeClosed","pending","sync","resource","valueFormat","mappedKeys","ke","ve","op","valueErr","require$$11","require$$12","abstractLevel","tasks","results","isErrored","isSync","each","lower","upper","lowerExclusive","upperExclusive","deserialize","createKeyRange","kLocation","keyRange","transaction","store","ev","cursor","complete","direction","parallel","req","request","loop","defaultPath","lru","directory","meta","referencesCount","syncAutomatically","onUpdate","addOperation","applyOperation","drop","indexBy","database","doc","del","query","findFn","isPeerId","TopicValidatorResult","FaultTolerance","setMaxListeners","eventTargets","nodeSetMaxListeners","#listeners","detail","CustomEvent","objs","startables","forge","api","baseN","maxline","digits","regex","util","attr","div","oldSetImmediate","rval","isArrayBuffer","isArrayBufferView","growSize","s3","chr1","chr2","chr3","enc1","enc2","enc3","enc4","flg","empty","exception","ex","re","argi","decimals","dec_point","thousands_sep","ip","blanks","zeros","zeroGroups","zeroMaxGroup","blobUrl","st","et","sample","samples","numWorkers","avg","reduce","workers","worker","r1","r2","algorithm","modes","finish","padding","inputLength","partialBytes","iv","additionalData","ivLength","overflow","lengths","z_i","v_i","x_i","lsb","z","ah","multiplier","perInt","shft","mid","m_i","m_j","blockSize","ints","blocks","cipher","_createCipher","inBlock","outBlock","_updateBlock","encryptOp","decrypt","registerAlgorithm","factory","xtime","ei","e4","e8","sx2","me","ime","temp","iNk","Nk","Nr1","m0","m1","m2","m3","wnew","wi","Nr","round","prefixCodePoint","base10","base16","base16upper","base2","alphabetBytesToChars","alphabetCharsToBytes","base256emoji","base32upper","base32pad","base32padupper","base32hex","base32hexupper","base32hexpad","base32hexpadupper","base32z","base36","base36upper","base58flickr","base64pad","base64url","base64urlpad","base8","bases","identityBase","base58","createCodec","ascii","BASES","nativeCrypto","oids","asn1","tagClass","constructed","obj1","obj2","equal","longForm","longFormBytes","byteCount","bitStringContents","savedRead","savedRemaining","unused","subOptions","composed","used","tc","asn1Options","useBitStringContents","lenBytes","oid","valueBytes","utc","date","year","MM","DD","hh","mm","ss","hhoffset","mmoffset","gentime","YYYY","fff","isUTC","capture","level","indentation","indent","subvalues","pc2bytes0","pc2bytes1","pc2bytes2","pc2bytes3","pc2bytes4","pc2bytes5","pc2bytes6","pc2bytes7","pc2bytes8","pc2bytes9","pc2bytes10","pc2bytes11","pc2bytes12","pc2bytes13","iterations","shifts","lefttmp","righttmp","looping","endloop","loopinc","right1","right2","hmac","_md","_ipadding","_opadding","keylen","inner","copyProps","SafeBuffer","MAX_BYTES","MAX_UINT32","oldBrowser","crypto","browserModule","randomBytes","generated","streamBrowser","shams","symObj","symVal","syms","hasSymbols","uri","test","$Object","hasProto","toStr","arrLike","joiner","implementation","bound","binder","boundLength","boundArgs","Empty","bind","undefined","$SyntaxError","$TypeError","expressionSyntax","$gOPD","doEval","gen","$concat","$replace","$exec","quote","subString","allowMissing","intrinsicName","alias","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","desc","GetIntrinsic","$defineProperty","gopd","defineDataProperty","nonEnumerable","nonWritable","nonConfigurable","loose","define","hasDescriptors","gOPD","$floor","functionLengthIsConfigurable","functionLengthIsWritable","setFunctionLength","$apply","$call","$reflectApply","$max","originalFunction","applyBind","callBind","$indexOf","callBound","hasToStringTag","$toString","isArguments","fnToStr","isFnRegex","getGeneratorFunc","GeneratorFunction","generatorFunc","fnStr","isCallable","strClass","forEach","availableTypedArrays","$slice","getPrototypeOf","typedArray","superProto","whichTypedArray","isTypedArray","isArgumentsObject","isGeneratorFunction","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isDataView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","isMapToString","isSetToString","isWeakMapToString","isWeakMap","isWeakSetToString","isWeakSet","isArrayBufferToString","isDataViewToString","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isBoxedPrimitive","isAnyArrayBuffer","getOwnPropertyDescriptors","descriptors","formatRegExp","objects","inspect","isNull","warned","deprecated","debugs","debugEnvRegex","define_process_env_default","debugEnv","pid","stylizeNoColor","isUndefined","stylizeWithColor","formatValue","styleType","arrayToHash","recurseTimes","primitive","formatPrimitive","visibleKeys","isError","formatError","isRegExp","isDate","braces","formatArray","formatProperty","reduceToSingleString","simple","isNumber","ar","isNullOrUndefined","isPrimitive","months","timestamp","kCustomPromisifiedSymbol","promiseResolve","promiseReject","callbackifyOnRejected","newReason","callbackify","callbackified","maybeCb","rej","ownKeys","enumerableOnly","symbols","_objectSpread","_defineProperty","_toPropertyKey","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_toPrimitive","prim","_require","_require2","custom","copyBuffer","BufferList","hasStrings","nb","destroy","_this","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","undestroy","errorOrDestroy","rState","wState","destroy_1","_inheritsLoose","subClass","superClass","createErrorType","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","startsWith","search","endsWith","this_len","includes","determiner","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","isDuplex","duplexKey","getHighWaterMark","deprecate","config","_stream_writable","Writable","CorkedRequest","onCorkedFinish","Duplex","WritableState","internalUtil","Stream","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","destroyImpl","_require$codes","ERR_INVALID_ARG_TYPE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","noDecode","onwrite","realHasInstance","writeAfterEnd","validChunk","isBuf","writeOrBuffer","clearBuffer","decodeChunk","newChunk","doWrite","writev","onwriteError","finishMaybe","onwriteStateUpdate","finished","needFinish","afterWrite","onwriteDrain","holder","allBuffers","endWritable","callFinal","prefinish","corkReq","objectKeys","_stream_duplex","Readable","onend","onEndNT","isEncoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","StringDecoder","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","utf8End","utf8Text","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","total","ERR_STREAM_PREMATURE_CLOSE","isRequest","eos","readable","onlegacyfinish","onfinish","writableEnded","readableEnded","onerror","onclose","onrequest","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","_this2","createReadableStreamAsyncIterator","_Object$create","_stream_readable","ReadableState","EElistenerCount","debugUtil","debug","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","kProxyEvents","prependListener","skipChunkCheck","readableAddChunk","addToFront","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","MAX_HWM","computeNewHighWaterMark","howMuchToRead","nOrig","endReadable","doRead","fromList","emitReadable_","flow","maybeReadMore_","dest","pipeOpts","doEnd","endFn","unpipe","onunpipe","unpipeInfo","ondrain","pipeOnDrain","cleanedUp","ondata","indexOf","dests","nReadingNextTick","updateReadableListening","resume","resume_","paused","endReadableNT","iterable","_stream_transform","Transform","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","rs","err2","_stream_passthrough","PassThrough","ERR_MISSING_ARGS","destroyer","reading","writing","closed","call","pipe","popCallback","streams","pipeline","destroys","throwIfNotStringOrBuffer","HashBase","ARRAY16","MD5","M","fnF","fnG","fnH","fnI","rotl","zl","zr","sl","sr","hl","hr","RIPEMD160","words","al","bl","cl","dl","br","cr","dr","tl","tr","fn1","fn5","fn2","fn4","fn3","Hash","finalSize","accum","assigned","rem","lowBits","highBits","K","W","Sha","rotl5","rotl30","ft","H","Sha1","rotl1","sha1","Sha256","ch","maj","sigma0","sigma1","gamma0","gamma1","T1","T2","Sha224","sha224","Sha512","Ch","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","bh","dh","eh","fh","gh","fl","gl","xh","gamma0l","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","sha512","SHA512","Sha384","sha384","sha_jsModule","Algorithm","didOnEnd","CipherBase","hashMode","inputEnc","outputEnc","outData","fin","alg","ZEROS","blocksize","Hmac","ipad","opad","md5","Legacy","MAX_ALLOC","defaultEncoding","pVersionMajor","toBuffer","checkParameters","sizes","saltLen","getDigest","ipad1","shaFunc","rmd160Func","pbkdf2","password","salt","DK","block1","destPos","hLen","T","U","ZERO_BUF","subtle","toBrowser","checks","checkNative","algo","prom","browserPbkdf2","getNextTick","resolvePromise","resp","utils","inL","inR","outL","outR","pc2table","sTable","sb","permuteTable","assert","Cipher","inputOff","outputOff","DESState","DES","shiftTable","kL","kR","inOff","outOff","lStart","rStart","keyL","keyR","CBCState","instantiate","CBC","cbc","EDEState","k1","k2","k3","EDE","des","modeName","xor","encryptStart","encryptByte","byteParam","bit","shiftIn","getBlock","incr32","chunkNum","modeModules","asUInt32Array","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","t0","t1","t2","t3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","x2","x4","x8","AES","keyWords","keySize","ksRows","invKeySchedule","ik","ksR","tt","ZEROES","toArray","fromArray","GHASH","Vi","Zi","lsbVi","abl","aes","xorTest","calcIv","ck","ghash","toPad","ivBits","tail","StreamCipher","rump","EVP_BytesToKey","keyBits","ivLen","keyLen","keyStart","ivStart","MODES","AuthCipher","ebtk","Splitter","PADDING","setTo","padBuff","createCipheriv","suite","createCipher","Decipher","unpad","autoPadding","padded","createDecipheriv","createDecipher","ciphers","deciphers","getCiphers","aesModes","desModes","BN","endian","parseHex4Bits","parseHexByte","parseLength","parseBase","limbLen","limbPow","mod","word","pow","groupSizes","groupBases","groupSize","groupBase","ArrayType","reqLength","q","toBitArray","wbit","bytesNeeded","bitsLeft","cmp","smallMulTo","ncarry","rword","maxJ","comb10MulTo","a0","al0","ah0","al1","ah1","al2","ah2","al3","ah3","al4","ah4","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","bl1","bh1","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","fftm","FFTM","N","rb","rbt","rws","iws","rtws","itws","rtwdf","itwdf","rtwdf_","itwdf_","ie","ro","io","rx","odd","ws","ph","rwst","iwst","nrws","nrwst","niwst","rmws","carryMask","newCarry","extended","maskedWords","bhi","bhiBits","qj","positive","dm","A","B","D","yp","xp","im","jm","x1","delta","negative","Red","primes","MPrime","rlen","K256","outLen","P224","P192","P25519","prime","mod3","one","nOne","lpow","inv","windowSize","wnd","currentLen","Mont","this","brorandModule","Rand","rand","bn","brorand","MillerRabin","min_bytes","red","rone","rn1","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","sqrt","SEVEN","DH","setPublicKey","pub","setPrivateKey","priv","primeCache","checkPrime","generator","malleable","secret","front","formatReturnValue","generatePrime","getDiffieHellman","ENCODINGS","createDiffieHellman","genc","processNextickArgsModule","isarray","pna","asyncWrite","writableHwm","defaultHwm","valid","readableHwm","needMoreData","increasedAwaitDrain","fromListPartial","copyFromBufferString","copyFromBuffer","allocate","isNegNum","getr","blind","blinder","crt","blinds","blinded","qinv","zero2","toHex","minAssert","minUtils","getNAF","naf","getJSF","jsf","d1","d2","m8","m14","m24","u1","u2","cachedProperty","computer","parseBytes","intFromLE","BaseCurve","conf","adjustCount","doubles","I","repr","nafW","nafPoints","defW","points","coeffs","jacobianResult","wndWidth","comb","ja","jb","zero","BasePoint","curve","compact","power","precomputed","dbl","ShortCurve","beta","lambda","betas","lambdas","basis","vec","tinv","ntinv","aprxSqrt","y1","y2","prevR","len1","v1","v2","p1","p2","q1","q2","isOdd","point","ax","rhs","npoints","ncoeffs","split","Point","isRed","pre","endoMul","obj2point","nx","ny","ys1","dyinv","_precompute","negate","JPoint","zinv","zinv2","ay","pz2","z2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","zz","yyu4","kbase","z3","pz3","zs","MontCurve","da","EdwardsCurve","lhs","nt","zi","isSurrogatePair","htonl","toHex32","zero8","join32","split32","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","ft_1","ch32","p32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","sha1_K","SHA1","sha256_K","SHA256","SHA224","sha512_K","c0_hi","g1_512_hi","c0_lo","g1_512_lo","c1_hi","c1_lo","c2_hi","g0_512_hi","c2_lo","g0_512_lo","c3_hi","c3_lo","s1_512_hi","s1_512_lo","ch64_hi","ch64_lo","c4_hi","c4_lo","T1_hi","T1_lo","s0_512_hi","s0_512_lo","maj64_hi","maj64_lo","T2_hi","T2_lo","yh","yl","zh","SHA384","Ah","Bh","Dh","Eh","rh","Kh","sh","secp256k1","curves","PresetCurve","defineCurve","HmacDRBG","entropy","nonce","pers","seed","kmac","entropyEnc","addEnc","KeyPair","ec","Signature","Position","getLength","initial","octetLen","rmPadding","slen","constructLength","octets","backHalf","EC","drbg","ns2","truncOnly","bkey","ns1","kp","kpX","recoveryParam","sinv","isYOdd","isSecondKey","rInv","Q","Qprime","eddsa","lastIx","sig","EDDSA","R","Rencoded","s_","S","SG","RplusAh","normed","xIsOdd","elliptic","iframe","wEval","wExecScript","winKeys","body","Entity","named","entity","reporter","Reporter","ReporterError","inherited","elem","DecoderBuffer","save","fail","EncoderBuffer","tags","overrided","Node","stateProps","cstate","newKey","present","prevKey","prevObj","explicit","bignum","der","DERDecoder","DERNode","der_1","any","decodedTag","derDecodeTag","derDecodeLen","possibleEnd","numstr","printstr","relative","identifiers","ident","subident","mon","day","hour","sec","oct","tagStr","PEMDecoder","pem","label","DEREncoder","encodedTag","encodeTag","header","lenOctets","objid","two","numArray","dataBuffer","PEMEncoder","asn","Time","AttributeTypeValue","AlgorithmIdentifier","SubjectPublicKeyInfo","RelativeDistinguishedName","RDNSequence","Name","Validity","Extension","TBSCertificate","X509Certificate","asn1_1","RSAPrivateKey","RSAPublicKey","PublicKey","PrivateKeyInfo","EncryptedPrivateKeyInfo","DSAPrivateKey","ECParameters","ECPrivateKey","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherText","cipherKey","match2","aesid","fixProc","compat","iters","parseKeys","stripped","subtype","ndata","createHmac","RSA_PKCS1_PADDING","sign","hashType","signType","ecSign","dsaSign","curveId","bits2int","kv","getKey","makeKey","makeR","toDER","hlen","hbits","bits2octets","obits","signModule","verify","ecVerify","dsaVerify","padNum","pubkey","unpacked","checkValue","montp","createHash","algorithms","Sign","Verify","sigBuffer","createSign","createVerify","ECDH","inenc","otherPub","_priv","i2ops","withPublic","paddedMsg","mgf","publicKey","oaep","pkcs1","iHash","hLen2","ps","dblen","maskedDb","maskedSeed","nonZero","privateKey","zBuffer","status","dif","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","randomFill","randomFillSync","actualFill","ourBuf","algos","algoKeys","hashes","publicEncrypt","rf","dkLen","prf","dk","u_c","u_c1","outer","rMessage","rHeader","rCRLF","li","nl","vi","insertSpace","$1","candidate","_initialized","_init","_state","_input","_w","int32s","_update","finalBlock","_padding","_k","_crypto","pools","increment","formatKey","formatSeed","generate","_reseed","_reseedSync","_seed","needed","_2powK","seedBytes","defaultSeedFile","getRandomValues","globalScope","jQuery","prng_aes","_prng_aes_output","_prng_aes_buffer","spawnPrng","_ctx","_navBytes","effKeyBits","L","T8","TM","encrypt","_finish","_output","_iv","mixRound","mashRound","runPlan","plan","ptr","ctr","BigInteger","mi","km","bs","cbs","ds","pm","pt","nsh","ys","y0","yt","qd","u0","cs","g2","is1","ac","prng","mgf1Md","keyLength","maxLength","lHash","PS","PS_length","DB","dbMask","maskedDB","seedMask","em","lHashPrime","in_ps","is_0","error_mask","maskLength","GCD_30_DELTA","THIRTY","op_or","rng","primeincFindPrime","primeincFindPrimeWithWorkers","primeincFindPrimeWithoutWorkers","generateRandom","deltaIdx","mrTests","getMillerRabinTests","maxBlockTime","_primeinc","workLoad","workerScript","cores","workerMessage","bits1","pki","oidBytes","digestInfo","digestAlgorithm","xq","bt","eb","yhex","ed","ml","xhex","pair","pkcs8","genOp","exportOp","keypair","scheme","schemeOptions","dP","dQ","qInv","rsaKey","padByte","numZeros","padBytes","getPrime","countBytes","encryptionAlgorithm","encryptedData","encOid","cipherFn","prfAlgorithm","saltBytes","encrypted","epki","passBuf","Slen","Plen","P","Inew","dIvLen","digests","prfOid","asUint8Array","arrays","curr","bigIntegerToUintBase64url","uint8ArrayToString","base64urlToBigInteger","base64urlToBuffer","uint8ArrayFromString","isBytes","exists","checkFinished","createView","tick","toBytes","abytes","concatBytes","sum","checkOpts","hashCons","hashC","bytesLength","setBigUint64","_32n","_u32_max","wh","wl","blockLen","outputLen","padOffset","take","dataView","oview","le","lst","Al","_l","_h","Bl","Cl","low","Dl","El","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","CHIh","CHIl","T1ll","T1h","T1l","MAJh","MAJl","All","_0n","_1n","_2n","ai","ensureBytes","expectedLength","hashLen","qByteLen","hmacFn","reseed","pred","validators","optValidators","checkField","fieldName","isOptional","checkVal","_3n","_5n","_8n","modulo","legendreC","Z","p1div4","Fp","Q1div2","ge","nv","field","nums","lastMultiplied","inverted","nBitLength","_nBitLength","nByteLength","ORDER","bitLen","redef","BITS","BYTES","sqrtP","fieldOrder","bitLength","fieldLen","minLen","reduced","constTimeNegate","neg","validateW","windows","elm","window","precomputes","maxNumber","shiftBy","wbits","offset1","offset2","cond1","cond2","scalars","MASK","buckets","lastBits","scalar","resI","sumI","validateOpts","ut.validateObject","curveDef","CURVE","CURVE_ORDER","prehash","cHash","cofactor","modP","Fn","uvRatio","adjustScalarBytes","domain","phflag","aCoordinate","ut.aInRange","assertPoint","toAffineMemo","iz","is0","assertValidMemo","X","Y","X2","Y2","Z2","Z4","aX2","XY","ZT","ey","ez","toInv","wnaf","X1","Y1","Z1","X1Z2","X2Z1","Y1Z2","Y2Z1","x1y1","F","X3","Y3","T3","Z3","zip215","lastByte","ut.bytesToNumberLE","isValid","isXOdd","isLastByteOdd","privKey","getExtendedPublicKey","ut.numberToBytesLE","ut.bytesToHex","modN","modN_LE","hashed","pointBytes","getPublicKey","hashDomainToScalar","msgs","ut.concatBytes","verifyOpts","SB","montgomeryBits","montgomeryBytes","powPminus2","cswap","x_2","x_3","dummy","a24","montgomeryLadder","x_1","z_2","z_3","sw","k_t","AA","BB","DA","CB","dacb","da_cb","encodeUCoordinate","decodeUCoordinate","uEnc","decodeScalar","scalarMult","pointU","_scalar","pu","GuBytes","scalarMultBase","_10n","_20n","_40n","_80n","b10","b20","b40","b80","b160","b240","b250","v3","v7","vx2","root1","root2","useRoot1","useRoot2","noRoot","pow_p_5_8","PUBLIC_KEY_BYTE_LENGTH","PRIVATE_KEY_BYTE_LENGTH","KEYS_BYTE_LENGTH","generateKey","privateKeyRaw","concatKeys","generateKeyFromSeed","hashAndSign","hashAndVerify","derivedEmptyPasswordKey","nonceLength","saltLength","webcrypto","aesGcm","cryptoKey","deriveParams","runtimeDerivedEmptyPassword","ciphertext","plaintext","exporter","encryptedKey","ciphers.create","LongBits","part0","part1","part2","write","indexOutOfRange","reader","writeLength","utf8.read","wireType","decodeMessage","pool","slab","writer","Op","VarintOp","writeVarint64","writeByte","writeFixed32","writeBytes","utf8.length","utf8.write","State","writeVarint32","writeStringBuffer","CODEC_TYPES","findValue","enumValue","KeyType","__KeyTypeValues","_codec","PrivateKey","ensureKey","crypto.publicKeyLength","crypto.hashAndVerify","pbm.PublicKey","pbm.KeyType","uint8ArrayEquals","crypto.privateKeyLength","crypto.hashAndSign","Ed25519PublicKey","pbm.PrivateKey","CodeError","unmarshalEd25519PrivateKey","privateKeyBytes","publicKeyBytes","Ed25519PrivateKey","unmarshalEd25519PublicKey","generateKeyPair","crypto.generateKey","generateKeyPairFromSeed","crypto.generateKeyFromSeed","curveTypes","digestLength","t1_hi","t1_lo","t2_hi","t2_lo","s0_hi","s0_lo","s1_hi","s1_lo","ch_hi","ch_lo","maj_hi","maj_lo","a_hi","a_lo","b_hi","b_lo","c_hi","c_lo","d_hi","d_lo","e_hi","e_lo","f_hi","f_lo","g_hi","g_lo","h_hi","h_lo","randB","convert","types","jwk2priv","jwk2pub","pkcs1ToJwk","jwkToPkcs1","jwk","pkixToJwk","jwkToPkix","exportKey","unmarshalPrivateKey","derivePublicFromPrivate","jwKey","convertKey","handle","fkey","fmsg","fomsg","MAX_KEY_SIZE","crypto.utils.jwkToPkix","crypto.encrypt","crypto.getRandomValues","RsaPublicKey","crypto.decrypt","crypto.utils.jwkToPkcs1","unmarshalRsaPrivateKey","crypto.utils.pkcs1ToJwk","crypto.keySize","crypto.unmarshalPrivateKey","RsaPrivateKey","unmarshalRsaPublicKey","crypto.utils.pkixToJwk","fromJwk","W15","W2","assertHash","assertExists","assertBytes","oHash","endo","dataLen","ut.numberToHexUnpadded","lenLen","isLong","lengthBytes","tlv","ut.abytes","seqBytes","seqLeftBytes","rBytes","rLeftBytes","sBytes","sLeftBytes","seq","mod.Field","_c","_isCompressed","fromBytes","weierstrassEquation","x3","isWithinCurveOrder","ut.inRange","normPrivateKeyToScalar","wrapPrivateKey","ut.isBytes","ut.bytesToNumberBE","mod.mod","assertPrjPoint","px","py","pz","U1","U2","t4","t5","sc","k1neg","k2neg","k1p","k2p","fake","f1p","f2p","isTorsionFree","clearCofactor","isCompressed","_bits","compressedLen","uncompressedLen","invN","mod.invert","cat","sqrtError","numToNByteStr","ut.numberToBytesBE","isBiggerThanHalfOrder","HALF","normalizeS","slcNum","recovery","msgHash","rec","bits2int_modN","radj","ir","ut.hexToBytes","mod.getMinHashLength","mod.mapHashToField","isProbPub","getSharedSecret","privateA","publicB","ORDER_MASK","ut.bitMask","int2octets","prepSig","defaultSigOpts","lowS","ent","h1int","seedArgs","k2sig","kBytes","normS","defaultVerOpts","ut.createHmacDrbg","sg","_sig","derError","defHash","_6n","_11n","_22n","_23n","_44n","_88n","b11","b22","b44","b88","b176","b220","b223","POW_2_128","secp","compressPublicKey","validatePrivateKey","validatePublicKey","computePublicKey","crypto.validatePublicKey","crypto.compressPublicKey","keysProtobuf.PublicKey","keysProtobuf.KeyType","crypto.computePublicKey","crypto.validatePrivateKey","Secp256k1PublicKey","keysProtobuf.PrivateKey","unmarshalSecp256k1PrivateKey","Secp256k1PrivateKey","unmarshalSecp256k1PublicKey","supportedKeys","RSA","Ed25519","Secp256k1","unsupportedKey","supported","typeToKey","keysPBM.PrivateKey","keysPBM.KeyType","unmarshal","crypto.keys.supportedKeys","pubKey","verifiedCache","uint8ArrayCompare","verified","hasKey","storedKey","addKey","crypto.keys.generateKeyPair","crypto.keys.unmarshalPrivateKey","signatures","keystore","identityProvider","verifiedIdentitiesCache","getIdentity","createIdentity","DefaultIdentityProvider","idSignature","publicKeyAndIdSignature","verifyIdentity","verifiedIdentity","identityVerified","signingKey","protocol","accessController","characters","orbitdb","manifestBytes","writerIdentity","canAppend","hasCapability","capabilities","_capabilities","toSet","capability","manifestStore","databases","Database","AccessController","addr","acType","onDatabaseClosed","rnds8","byteToHex","unsafeStringify","randomUUID","v4","native","rnds","vals","Set","entryValue","putValue","_CodeOrName","_Code","strs","addCodeArg","plus","expr","safeStringify","optimize","interpolate","mergeExprItems","strConcat","stringify","getProperty","getEsmExportName","regexpCode","code_1","ValueError","UsedValueState","Scope","prefixes","nameOrPrefix","ng","ValueScopeName","nameStr","ValueScope","valueKey","vs","_name","keyOrRef","scopeName","usedValues","getCode","valueCode","nameSet","scope_1","code_2","scope_2","_names","_constants","Def","varKind","es5","_n","optimizeExpr","Assign","sideEffects","addExprNames","AssignOp","Label","Break","Throw","AnyCode","ParentNode","subtractNames","addNames","BlockNode","Root","Else","If","cond","ns","not","For","ForLoop","iteration","ForRange","ForIter","Func","async","Return","Try","Catch","Finally","CodeGen","extScope","prefixOrName","constant","_constant","keyValues","thenBody","elseBody","forBody","tryBody","catchCode","finallyCode","nodeCount","toClose","funcBody","replaceName","canOptimize","par","andCode","mappend","and","orCode","codegen_1","schema","rules","RULES","topSchemaRef","schemaPath","keyword","$data","mergeNames","mergeToName","mergeValues","resultToName","toName","dataProp","dataPropType","jsPropertySyntax","names_1","util_1","schemaType","reportError","cxt","errorPaths","overrideAllErrors","compositeRule","allErrors","errObj","errorObjectCode","addError","returnErrors","reportExtraError","resetErrorsCount","errsCount","extendErrors","schemaValue","errs","validateName","schemaEnv","createErrors","errorObject","errorInstancePath","errorSchemaPath","extraErrorProps","errorPath","instancePath","instPath","errSchemaPath","parentSchema","schPath","propertyName","errors_1","rule","kwd","applicability_1","DataType","coerceTo","checkTypes","wrongType","coerceTypes","dataType","coerced","coerceSpecificType","parentData","parentDataProperty","strictNums","correct","EQ","numCond","_cond","dataTypes","notObj","schemaCode","ty","sch","childData","util_2","missing","ownProperties","schemaMap","passSchema","dataAndSchema","valCxt","pattern","regExp","validArr","validateItems","notValid","schValid","_sch","schCxt","macroSchema","schemaRef","validate","validateRef","validateKeyword","assignValid","reportErrs","ruleErrs","validateAsync","validateSync","validateErrs","_await","passCxt","allowUndefined","schemaProp","subschema","dpType","dataPathArr","nextData","dataContextProps","_nextData","jtdDiscriminator","jtdMetadata","jsonSchemaTraverseModule","post","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","normalize","baseId","schemaId","uriResolver","schId","baseIds","pathPrefix","localRefs","schemaRefs","fullPath","innerBaseId","addRef","addAnchor","ambiguos","schOrRef","checkAmbiguosRef","sch1","sch2","dataType_1","resolve_1","checkedTypes","rootName","ValidationError","evaluated","typeErrors","groupKeywords","useDefaults","schTs","kwdT","withTypes","successAction","failAction","errorParams","assign","codeBlock","$dataValid","wrong$DataType","invalid$DataSchema","validateSchemaRef","appl","nextContext","schemaCxt","ruleType","dataLevel","dataNames","jsonPointer","matches","up","errorMsg","segment","pointerType","validate_1","env","rootId","_ValidationError","sourceCode","validateCode","schOrFunc","schEnv","refPath","parsedRef","partSchema","$ref","HEX","normalizeIPv4","host","keepZero","strip","tokenCount","isZone","endipv6Encountered","endIpv6","consume","normalizeIPv6","ipv6","newHost","escapedHost","skip","ind","removeDotSegments","normalizeComponentEncoding","esc","recomposeAuthority","uriTokens","ipV4res","ipV6res","wsComponents","secure","urnComponents","urnScheme","schemeHandler","SCHEMES","nid","uriComponents","nss","uuidComponents","wss","parse","baseURI","relativeURI","schemelessOptions","skipNormalization","uriA","uriB","cmpts","authority","gotEncoding","isIP","ipv4result","ipv6result","fastUriModule","uri_1","validation_error_1","ref_error_1","rules_1","compile_1","codegen_2","$dataRefSchema","defaultRegExp","META_IGNORE_OPTIONS","EXT_SCOPE_NAMES","removedOptions","deprecatedOptions","MAX_EXPRESSION","requiredOptions","_d","_e","_f","_g","_j","_m","_o","_p","_q","_r","_s","_t","_u","_v","_x","_y","_z","_0","_optz","Ajv","getLogger","formatOpt","checkOptions","getMetaSchemaOptions","addInitialFormats","addInitialKeywords","addInitialSchemas","_dataRefSchema","schemaKeyRef","_meta","loadSchema","runCompileAsync","_schema","loadMetaSchema","_compileAsync","checkLoaded","loadMissingSchema","missingRef","_loadSchema","_validateSchema","throwOrLogError","$schema","keyRef","getSchEnv","definitions","kwdOrDef","checkKeyword","addRule","keywordMetaschema","dataVar","metaSchema","keywordsJsonPointers","keywords","seg","schemaOrData","schemas","validateSchema","addSchema","currentOpts","optsSchemas","defs","metaOpts","noLogs","logger","KEYWORD_NAME","ruleGroup","addBeforeRule","_rule","$dataRef","callRootRef","schOrEnv","callValidate","inlineRefSchema","schName","$async","callAsyncRef","callSyncRef","addEvaluatedFrom","addErrorsFrom","schEvaluated","core_1","core","prec","invalid","ucs2length_1","missingProperty","useLoop","allErrorsMode","exitOnErrorMode","definedProperties","requiredKey","loopAllRequired","loopUntilMissing","equal_1","itemTypes","validateUniqueItems","loopN","loopN2","indices","eql","getEql","loopEnum","vSchema","equalCode","validation_1","extraItems","schArr","checkStrictTuple","fullTuple","items_1","additionalItems_1","prefixItems","minContains","maxContains","validateItemsWithCount","checkLimits","_valid","depsCount","property_ies","propDeps","schDeps","splitDependencies","validatePropertyDeps","validateSchemaDeps","propertyDeps","schemaDeps","hasProperty","depProp","patProps","checkAdditionalProperties","additionalPropertyCode","isAdditional","definedProp","propsSchema","deleteAdditional","applyAdditionalSchema","additionalProperties_1","allProps","applyPropertySchema","patterns","alwaysValidPatterns","checkProperties","validatePatternProperties","pat","checkMatchingProperties","validateProperties","alwaysValid","passing","validateOneOf","hasThen","hasElse","validateIf","ifClause","validateClause","require$$13","require$$14","require$$15","draft2020","applicator","validate$DataFormat","validateFormat","fmts","fDef","fType","unknownFmt","invalidFmt","callFormat","validData","formatDef","unknownFormat","fmtType","fmtRef","getFormat","validCondition","unknownMsg","fmtDef","fmt","format_2","format_1","DiscrError","discrError","tagName","validateMapping","mapping","getMapping","tagValue","applyTagSchema","oneOfMapping","topRequired","hasRequired","tagRequired","propSch","addMappings","addMapping","draft7_1","discriminator_1","draft7MetaSchema","META_SUPPORT_DATA","META_SCHEMA_ID","validateRoot","compileKeySchema","validateAdditionalProperties","validateKey","getKeyValidator","supportedKey","sfip","dossierOrbite","createOrbitDB","bd","schéma","orbite","Semaphore","existante","idRequête","uuidv4","fOublier","vérifierTypeBd","typeBd","nom","idsRequêtes","idBd","fonction","résultat","arrêterOrbite","fFinale","éléments","é","autorisés","élément","rôle","objAccèsUtilisateur","_rôles","listeRôle","utl","utilisateurs","gestAccès","idAjout","rôleValide","seraÉventuellementUnModérateur","prochains","prochain","prochaineEntrée","gestionnaireOrbite","adresseBdAccès","fOublierBd","événements","gestRôles","fOublierSuiviBdAccès","estAutorisé","_rôle","mods","idsMods","membres","cp","_gc1","_ga1","c3","e3","nbfs","s2a","bufs","maxlen","widx","ridx","mixed","sgn","P_2","P_1","Q_2","Q_1","dow","dout","date1904","epoch","V","ss0","outl","outstr","sfmt","period","fakee","$$","$2","$3","aval","den","rr","myn","myd","cc","dd","_frac","ffmt","ri","ff","oa","lres","rres","in_str","flen","dt","ssm","nstr","jj","vv","myv","ostr","decpt","lasti","retval","thresh","lat","tbl","dateNF","datestr","timestr","CRC32","signed_crc_table","T0","slice_by_16_tables","TT","T4","T5","T6","T7","T9","Ta","Tb","Tc","Td","Te","Tf","crc32_bstr","bstr","crc32_buf","crc32_str","_CFB","namecmp","dirname","filename","write_dos_date","hms","ymd","parse_dos_date","parse_extra_field","blob","sz","tgt","sz1","sz2","fs","get_fs","file","parse_zip","parse_mad","mver","ssz","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","fat_addrs","mv","check_get_mver","check_shifts","dir_cnt","sectors","sectorify","sleuth_fat","sector_list","make_sector_list","ENDOFCHAIN","files","Paths","FileIndex","FullPaths","read_directory","build_full_paths","HEADER_SIGNATURE","nsectors","FI","FP","pl","dad","get_mfat_entry","mini","MSSZ","cnt","sector","get_sector_list","chkd","buf_chain","modulus","minifat_store","namelen","ctime","read_date","mtime","read_file","init_cfb","cfb","seed_cfb","nm","rebuild_cfb","gc","_file","fullPaths","HEADER_CLSID","elt","_write","_opts","write_mad","write_zip","mini_size","fat_size","mini_cnt","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","_nm","find","UCFullPaths","UCPaths","UCPath","write_file","a2s","_zlib","use_zlib","zlib","InflateRaw","InflRaw","_inflateRawSync","usz","_inflate","_deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","read_bits_3","read_bits_4","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","DST_LN_RE","LEN_LN_RE","write_stored","boff","write_huff_fixed","addrs","mlen","len_eb","dst_eb","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","next_code","hcodes","h1","inflate","outbuf","woff","OL","max_len_1","max_len_2","warn_or_throw","wrn","fcnt","start_cd","csz","efsz","fcsz","EF","parse_local_file","meth","crc32","_csz","_usz","ef","cfb_add","cdirs","fp","fi","crcs","sz_cd","namebuf","ContentTypeMap","get_content_type","write_base64_76","write_quoted_printable","encoded","si","parse_quoted_printable","di","oi","parse_mime","fname","cte","ctype","fdata","row","mboundary","boundary","start_di","ca","cstr","dispcnt","csl","qp","cfb_new","unsafe","fpath","cfb_del","cfb_mov","old_name","new_name","cfb_gc","url","infile","ks","o2","dnthresh","mt","fixdate","debomit","wt","lnos","safe_split_regex","zip","safe","skip_root","skip_LC","eq","quot","encregex","coderegex","raw_unescapexml","xlsx","entregex","entrepl","orig","ww","mtcache","entities","vt_cache","av","utf8_b","lpp4_","is_buf_a","oI","oR","oo","loc","hexstr","fld","tmpbyte","cntbyte","RT","blksz","newblk","curbuf","endbuf","ba","cell","biff","rowstr","colstr","col","ce","sname","sheet","sheets","_ws","dense","_R","_C","_origin","_range","__R","__Rstr","__C","cell_ref","cchCharacters","_null","rgsStrRun","dwSizeStrRun","iStyleRef","fX100","fInt","RK","d100","xColorType","nTS","bR","bG","bB","icv","font","grbit","ClipFmt","ct","ctext","type2ct","f1","f2","f3","currentFilePath","rels","rel","canonictarget","rid","rId","relobj","targetmode","Rn","FEtag","rdf","HP","TOP","hp","xml","toks","Props","Custprops","BLACKLIST","dwLowDateTime","dwHighDateTime","stringType","headingString","headerParts","cElements","CodePage","dict","PIDSI","start_addr","NumProps","Dictionary","DictObj","PropID","Offset","PropH","piddsi","oldpos","RE","hdr","piao","pr","pio","pinfo","clsid","NumSets","FMTID0","FMTID1","Offset0","Offset1","SystemIdentifier","CLSID","PSet0","PSet1","entries2","clsid2","ps0","ps1","cch","fHighByte","fExtSt","fRichSt","cRun","cbExtRst","xlstr","otext","accel","extra","cAnti","preamble","ansiPath","unicodePath","sVer","displayName","targetFrameName","moniker","oleMoniker","Loc","guid","fileTime","Target","hashidx","Pretarget","rw","ixfe","iSupBook","itabFirst","itabLast","udfName","rwFirst","rwLast","colFirst","colLast","ot","fts","wb","UserName","hidden","ucnt","sst","extsst","miyRw","fullcalc","xWn","yWn","dxWn","dyWn","iTabCur","iTabFirst","ctabSel","wTabRatio","os","numFmtId","fmtstr","rkrec","rkrecs","lastcol","ixfes","ixfeP","guts","xnum","ctab","virtPath","rgst","chKey","cce","itab","npflen","rgce","cchName","cchComment","comment","cUse","fMTREnabled","fUserSetThreadCount","cUserThreadCount","idObj","stAuthor","merges","cmcs","cmo","cf","texts","controlInfo","cchText","hlink","O","wzTooltip","ccv","coldx","lcb","dbf_codepage_map","dbf_reverse_map","dbf_to_aoa","memo","vfp","l7","nrow","fpos","fields","hend","dbf_to_sheet","dbf_to_workbook","_RLEN","sheet_to_dbf","old_cp","aoa","headers","cols","hcnt","coltypes","colwidths","coldecimals","guess","_guess","hf","hb","rout","sylk_escapes","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa","sylk_to_aoa_str","records","rj","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","d1904","nn","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","cell_t","shrbase","F_seen","sylk_to_workbook","aoasht","outwb","write_ws_cell_sylk","write_ws_cols_sylk","write_ws_rows_sylk","rows","sheet_to_sylk","RS","dif_to_aoa","dif_to_aoa_str","metadata","dif_to_sheet","dif_to_workbook","make_value","make_value_str","sheet_to_dif","eth_to_aoa","eth_to_sheet","eth_to_workbook","sep","sheet_to_eth_data","coord","sheet_to_eth","set_text_arr","prn_to_aoa_str","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","sepcc","startcc","_re","finish_cell","prn_to_sheet_str","prn_to_sheet","prn_to_workbook","sheet_to_prn","OLD_WTF","lotushopper","Enum","WK1Enum","lotus_to_workbook","lotus_to_workbook_buf","next_n","sidx","snames","realnames","sdata","refguess","sheetRows","qpw_to_workbook_buf","tmpcell","WK3Enum","osheets","rnames","sheet_to_wk1","write_BOF_WK1","write_RANGE","max_R","write_INTEGER","write_NUMBER","write_LABEL","book_to_wk3","write_BOF_WK3","write_XFORMAT_SHEETNAME","wsidx","write_NUMBER_17","write_LABEL_16","wscnt","parse_RANGE","parse_cell","parse_LABEL","parse_STRING","parse_INTEGER","parse_NUMBER","parse_FORMULA","wk1_fmla_to_csf","wk1_parse_rc","FuncTab","BinOpTab","argc","argL","argR","parse_cell_3","parse_LABEL_16","parse_NUMBER_18","parse_NUMBER_17","parse_FORMULA_19","parse_NUMBER_25","parse_NUMBER_27","parse_FORMULA_28","parse_SHEETNAMECS","parse_SHEETNAMELP","parse_SHEETINFOQP","parse_XFORMAT","SST","CC","rpr","pass","tregex","rpregex","parse_r","rregex","rend","parse_rs_factory","nlregex","parse_rpr2","intro","outro","r_to_html","terms","html","sitag","comps","vers","verifier","KeyData","Password","Verifier","PasswordArray","PasswordDecoded","PasswordByte","Intermediate1","Intermediate2","Intermediate3","PadArray","InitialCode","XorMatrix","Ror","Byte","XorRor","byte1","byte2","CreateXorKey_Method1","XorKey","CurrentElement","Char","Index","ObfuscationArray","Temp","PasswordLastChar","PadIndex","Data","XorArrayIndex","XorArray","Value","rowtf","rtfre","last_index","H6","L2","h6","tint","chr","collw","_MDW","coll","NF","xf","alignment","cellXfs","make_pstyx","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","stFmtCode","bls","underline","family","bCharSet","sss","fls","ixfeParent","ifmt","defTableStyle","defPivotStyle","Themes","dwThemeVersion","themeXML","extType","cexts","xfext","xfe","mdb","cm","metatype","lastmeta","comments","csize","bbox","_shapeid","_comments","fillopts","fillparm","fillxml","shadata","threaded","people","authors","commentList","authtag","cmnttag","textMatch","iauthor","lastauthor","tcnt","tidx","carr","rootid","tcopts","person","rfx","newcfb","newpath","vba","rcregex","rcbase","rcfunc","cRel","rRel","fstr","$0","$4","$5","rl","area","ixti","bitSemi","bitBaxcel","bitGoto","bitIf","iftab","cparams","tab","nameindex","ptgs","supbooks","XTI","ixtiraw","nameidx","last_sp","sp","fflen","lbl","bookidx","externbook","ixtidata","lp","rp","parsedf","fnd","PtgNonDisp","_left","rgcb","cbf","o1","o3","bf","oint","postamble","lastbang","_str","revarr","wch","margins","fmtid","fillid","data1","data2","mtch","sheetPr","svs","columns","afilter","_merge","tmpref","cname","outlineprops","margin","seencol","coli","colm","colM","sview","oldt","oldv","cellregex","rowregex","isregex","refregex","match_v","match_f","cells","cref","tagr","tagc","sstr","ftag","do_format","arrayf","sharedf","rowobj","rowrite","sheetStubs","marr","marrlen","xlen","rstarti","outa","rslice","___f","_tag","_cell","rdata","_drawing","relc","ncolspan","lcs","caddr","ncell","fBool","bError","isst","relId","tooltip","locidx","fAlwaysCalc","Workbook","af","RR","aii","last_seen","cap","nf","csheet","nc","_good","cn","Sheets","DN","dn","xmlns","dname","dnstart","write_names","workbookPr","strName","Names","viz","vistab","oval","stag","csty","sid","interiors","opening","ishtml","sheetnames","cursheet","sheetname","dtag","didx","fidx","pidx","cstys","wsprops","raw_Rn3","cma","cmd","ssfidx","_col","_NamedRange","_DefinedName","AutoFilter","pagemargins","RecordType","nextrt","ll","Directory","last_formula","cur_sheet","Preamble","lastcell","last_cell","cmnt","rngC","rngR","temp_val","country","XFs","palette","get_rgb","process_cell_style","xfd","addcell","file_depth","afi","last_RT","BIFF2Fmt","BIFF2FmtTable","FilterDatabases","last_lbl","seen_codepage","cpval","tmpri","fakebs8","_fr","_fc","_fe","_arraystart","_ixfe","b4idx","b2idx","noteobj","DSI","DocSummary","SI","Summary","DSEntries","SEntries","CEntries","Keys","DocSummaryRE","SummaryRE","CEntries2","CompObj","WB","WorkbookP","wbpath","HL","_WB","_sheet","MAX_ROWS","_sheets","_wb","blen","mtch2","CS","hd","midx","footer","or_R","or_C","elts","Aelts","Aelti","get_computed_style","fixed","_nfm","number_format_map","NFtag","tNF","etpos","nfidx","sheetag","rowtag","SheetNames","ctag","textp","textpidx","textR","row_ol","mrange","mR","mC","rowpeat","colpeat","atag","_Ref","creator","creatoridx","isstub","intable","baddate","rptR","rpt","xlmlidx","styletag","nrange","ptp","Styles","master_styles","nopts","has_time","np","odsref","write_text_p","null_cell_xml","covered_cell_xml","write_ws","nfs","ROWS","_Fref","text_p","_tgt","write_automatic_styles_ods","cidx","colobj","nfi","fods","u8","u8a","i32","ias","ia","midata","aipayload","clen","u8i","frame","ofmt","nfmt","ver","dur","dstyle","dmin","dmax","auto","autodur","dstr","zstr","lut","dv","zidx","ieee","doff","d128","pb","iwa","orefs","orefidx","rtp","rtpref","mtype","tswpsa","_i","wide_offsets","used_storage_u8","used_storage","used_storage_offsets","offsets","dws","mtype2","_tile","pi","tableref","shapeoffs","sheetoffs","packets","packet","docroot","iwam","wide","tri","new_7","new_4","last_offset","cell_storage","_dv","_last_offset","_cell_storage","celload","_celload","dependents","mess","sheetrefs","ainfo","sheetref","newsheetref","remap","arch","tiaref","sheetroot","sa","drawables","tia","loc2","mlist","parentidx","tmaref","tiaroot","dap","oldtmaref","tma","tmaroot","uuid","new_uuid","srrta","hsoa","hsa","hseadata","hsea","_a2","oldref","newref","newloc","_a3","_b2","row_headers","tspref","tiles","tst","oldtileref","newtileref","oldtile","wsname","sheetidx","rootref","tmafile","trunc","row_header_ref","rowhead","base_bucket","R2","_bucket","col_header_ref","colhead","rbtree","tilestore","tstride","tileref","save_token","mlst","ntiles","newtileid","tiledata","tilerow","newtile","tilecontent","mergeid","sstref","sstroot","sstdata","wbrels","relsPath","sheetRels","stype","dfile","drelsp","draw","chartp","crelsp","tcomments","_zip","index_zip","xlsb","binname","propdata","custprops","wbsheets","wbext","wbrelsi","wbrelsfile","nmode","wsloop","snjseen","snj","dsm","seds","einfo","vbafmt","_sn","wsrels","_type","need_vml","needtc","main","ab","vu","oopts","ftype","bom","_BT","defval","isempty","outi","header_cnt","FS","txt","datarow","endregex","cmds","js","ROW","JS","RC","roll","vis","author","dynamic","rngstr","wsr","BOM","prototype","kind","allOwnKeys","caseless","assignValue","targetKey","constructor","superConstructor","sourceObj","destObj","propFilter","searchString","lastIndex","TypedArray","reducer","reducedDescriptors","arrayOrString","delimiter","ALPHA","visit","reducedValue","setImmediateSupported","postMessageSupported","response","toJSON","axiosError","dots","formData","option","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","exposedHelpers","build","charMap","_encode","serializeFn","serializedParams","hashmarkIndex","fulfilled","rejected","URLSearchParams","FormData","helpers","buildPath","isNumericKey","parser","transformRequest","contentType","hasJSONContentType","isObjectPayload","isFileList","_FormData","transformResponse","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","validateStatus","rawHeaders","normalizeValue","tokensRE","isHeaderNameFilter","accessorName","methodName","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","matcher","deleted","deleteHeader","asStrings","accessors","defineAccessor","headerValue","samplesCount","timestamps","firstSampleTS","chunkLength","startedAt","bytesCount","passed","freq","threshold","lastArgs","invoke","isDownloadStream","bytesNotified","_speedometer","loaded","progressBytes","rate","inRange","throttled","lengthComputable","standardBrowserEnv","msie","urlParsingNode","originURL","resolveURL","requestURL","nonStandardBrowserEnv","expires","cookie","baseURL","relativeURL","requestedURL","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","xsrfValue","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","onloadend","responseHeaders","timeoutErrorMessage","signals","controller","aborted","onabort","unsubscribe","onProgress","onFinish","_onFinish","loadedBytes","duplexAccessed","hasContentType","DEFAULT_CHUNK_SIZE","resolvers","cancelToken","withCredentials","fetchOptions","composedSignal","requestContentLength","_request","contentTypeHeader","isCredentialsSupported","isStreamResponse","responseContentLength","responseData","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","validator","formatMessage","allowUnknown","instanceConfig","configOrUrl","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","onFulfilled","onRejected","forEachMethodNoData","forEachMethodWithData","generateHTTPMethod","isForm","executor","onfulfilled","abort","createInstance","defaultConfig","promises","données","optsXLSX","readXLSX","émetteur","clef","résoudre","nomArgFonction","argsSansF","tâche","messageRetour","fOublierTâche","lorsqueRetour","retour","fonctions","erreur","fSuivre","listeAtributs","_thisArg","mandataireClient","decorators","isArgs","keysShim","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","theKeys","skipProto","skipConstructor","shimObjectKeys","keysWorksWithArguments","supportsDescriptors","defineProperty","predicate","defineProperties","predicates","source1","getSymbols","nextKey","letters","thrower","polyfill","getPolyfill","shim","shimAssign","functionsHaveNames","functionsHaveConfigurableNames","boundFunctionsHaveNames","setFunctionName","calls","shimFlags","bigIntValueOf","gPO","sepRegex","intStr","dec","inspect_","customInspect","numericSeparator","bigIntStr","maxDepth","noIndent","newOpts","symString","mapParts","setParts","isBigInt","protoTag","stringTag","constructorTag","defaultStyle","quoteChar","trailer","joinedEntries","baseIndent","lineJoiner","isArr","symMap","$WeakMap","$Map","$mapGet","$mapHas","getSideChannel","$wm","$m","$o","channel","SLOT","getStopIterationIterator","origIterator","siIterator","tryStringObject","$Set","exported","$setHas","esGetIteratorModule","arraylike","noPrimordialCollections","shimObjectIs","$byteLength","tryDateGetDayCall","isDateObject","isRegex","hasLastIndexDataProperty","tryNumberObject","booleanBrandCheck","isSymbolModule","hasNativeBigInts","isBigintModule","whichBoxedPrimitive","$WeakSet","isWeaksetModule","whichCollection","getIterator","require$$16","require$$17","val1","altValue","curB","looseOpts","key1","item1","actualBoxed","expectedBoxed","hasActual","hasExpected","sentinel","iA","iB","resultA","resultB","item2","aIsArray","bIsArray","aIsError","bIsError","aIsRegex","bIsRegex","aIsDate","bIsDate","aWhich","bWhich","aIsBuffer","bIsBuffer","aIsArrayBuffer","bIsArrayBuffer","aIsSAB","bIsSAB","ka","kb","aCollection","bCollection","isMergeableObject","customMerge","destination","sourceIsArray","sourceAndTargetTypesMatch","deepmergeAll","cjs","promiseExists","globalObject","Obj","symbolExists","mapExists","setExists","weakMapExists","weakSetExists","dataViewExists","symbolIteratorExists","symbolToStringTagExists","setEntriesExists","mapEntriesExists","setIteratorPrototype","mapIteratorPrototype","arrayIteratorExists","arrayIteratorPrototype","stringIteratorExists","stringIteratorPrototype","toStringLeftSliceLength","toStringRightSliceLength","typeDetect","typeofObj","objPrototype","collection","cloneBuffer","customizer","valueType","copyFunction","copiedValue","references","visited","collectionKey","collectionValue","collectionValueType","copiedCollectionValue","require","J","allowAboveRoot","lastSegmentLength","lastSlash","lastSlashIndex","pathObject","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSeparator","joined","fromStart","fromEnd","fromLen","toStart","toEnd","toLen","lastCommonSep","fromCode","toCode","_makeLong","hasRoot","matchedSlash","basename","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","isElectron","isBrowser","trads","langues","langueTrouvée","nImporteLaquelle","fichiersDocs","fichiersSFIP","nomFichier","fichierZip","dossierFichiersSFIP","fichier","contenu","fluxÉcriture","flux","fileSave","idc","fRacine","oublierFSuivre","idBdCible","premièreFois","oublierRacine","nouvelIdBdCible","déjàAppellé","annulerRebours","crono","fListe","fBranche","fIdBdDeBranche","fRéduction","branches","fCode","arbre","dictBranches","prêt","listeDonnées","réduits","verrou","retourRacine","dictÉléments","existants","nouveaux","disparus","changés","idBdBranche","oublierBdRacine","_done","_customDefinitions","allTypes","geoJSONObject","nonGeoTypes","geoTypes","geometryObject","coordinates","multiPoint","lineString","multilineString","_linearRingCoor","polygon","multiPolygon","geometryCollection","feature","featureCollection","estSpécificationHoroDatage","système","date_","cholqij","Cholqij","exts","catégorie","வார்ப்புரு","tableau","விண்மீன்","அட்டவணை_சாபி","குழு_அடையாளம்","மாறிலிகள்","முன்னிருப்பாக_மாறிலிகள்","நகல்","வேண்டிய_அட்டவணை","அட்டவணை","நெடுவரிசை","அ","பேற்றோர்","அட்டவணை_அடையாளம்","அங்கீகரிக்கப்பட்ட_தரவுத்தளம்_வார்ப்புரு","தரவுத்தளம்","செ","fSuivreRacine","பேற்றோர்கள்","உறுப்படிகள்","அடையாளம்","fSuivreBranche","fSuivreBd","சந்ததி","த","இ","பரிந்துரைகள்","பங்கேற்பாளர்","ப","பரிந்துரை","தேதியை_சேரு","உறுப்படி","இறுதியான_செயலி","மீத்தரவு","தரவுத்தள_அடையாளம்","பரிந்துரை_உறுப்படி","இருக்கும்_உறுப்படி","அங்கீ","ஈ","தகவல்கள்","செ_கடைசி","முந்தையானது","தேதி_முந்தையானது","தேதி_புதுசு","செ_மறந்துவிடு","பரிந்துரைக்கப்பட்டவையை_மறந்துவிடு","தீர்வு","மொழி","தகவல்_மொழி","எண்","குறிகள்","அடிமானங்கள்","பிரிப்பு","குறிகள்_","எதிர்","தசம","உரை","முழு","பெட்டியல்","படித்தல்","பெ","ஆ","ஐ","ஊ","கீழ்_","கீழ்","மேல்","மேல்_","அடி","சுற்று","அடுக்குக்குறி","அடிமானம்","அடு","எ","குறி","பி","பிரிவு","மொழிகள்","மொ","வகை","மீதி","மதிப்பு","ம","உ","ச","வரிசைகள்","வ","குறியீடு","தகவல்","things","bufEnd","beginInclusive","endExclusive","bufStart","sliceStartInBuf","sliceEndsInBuf","needle","radix","rightmostPositions","lastPatIndex","currentLength","emitted","newBl","byteLen","postOffset","wire","fieldNum","linksBeforeData","nameBytes","abuf","bbuf","pbl","pbn","__DataTypeValues","UnixTime","Metadata","UnixFS","marshaled","PBData","blockSizes","fanout","persist","blockstore","dagPb","bytesWritten","unixfs","dagPb.encode","InvalidParametersError","previous","leaves","leaf","rawCodec.code","originalPath","bytesRead","currentChunkSize","maxChildrenPerNode","balancedLayout","roots","CID_V0","CID_V1","Dir","hexes","library","_validBytes","_x86Multiply","_x86Rotl","_x86Fmix","_x64Add","_x64Multiply","_x64Rotl","_x64LeftShift","_x64Xor","_x64Fmix","h4","k4","c4","bytes.fromHex","needsSort","finder","noCreate","bytePos","bitPos","previousPopCount","bytePopCount","targetLength","randomIndex","pendingBitsForResultingByte","pendingBitsForNewByte","resultingByte","newByte","usingBits","masked","Bucket","posAtParent","place","asyncMap","asyncReduce","hashValue","bucket","newPlace","onlyChild","mappedChildren","START_MASKS","STOP_MASKS","pendingBits","availableBits","taking","byteBitsToInt","maskFor","wrapHash","hashFn","hashing","InfiniteHash","available","took","availableForUntake","uint8ArrayConcat","ConsumableBuffer","bucketOptions","hamtHashFn","calculateSize","shardRoot","padLength","childrenSize","labelPrefix","shard","subShard","isDir","flushedDir","newDir","oldDir","DirSharded","toPathComponents","pathElems","currentPath","pathElem","rootDir","singleRoot","importer","candidates","wrapWithDirectory","shardSplitThresholdBytes","shardFanoutBits","cidVersion","rawLeaves","leafType","fileImportConcurrency","blockWriteConcurrency","reduceSingleLeafToSelf","chunker","chunkValidator","buildDag","buildTree","NotUnixFSError","recurs","isa","_buf","_token","dp","startPos","swallow","chars","numStr","readu4","u4","readUtf8Char","_decode","cborgJson.Tokenizer","keyToken","valueToken","innerKeyToken","innerValueToken","DagJsonTokenizer","cborgJson.decode","toResolve","subObject","subPath","subObjectCid","dagCbor.decode","dagJson.decode","blockStart","requestedStart","requestedEnd","blockLength","blockEnd","fileSize","rawContent","contentGenerator","mh.decode","json.decode","rootBucket","toPrefix","bucketPath","entryPrefix","entryName","peekable","peek","concurrency","ordered","ops","slotAvailable","defer","resultAvailable","sourceFinished","sourceErr","opErred","valuesAvailable","yieldOrderedValues","yieldUnOrderedValues","yieldDirectoryContent","linkName","linkPath","streamPosition","childOps","childLink","childStart","childEnd","dagPb.code","dagPb.decode","raw.code","childQueue","yieldFileContent","wanted","yieldHamtDirectoryContent","contentFile","contentDirectory","contentHamtShardedDirectory","linkCid","nextName","nextPath","dagPbResolver","rawResolver","dagCbor.code","dagCborResolver","dagJson.code","dagJsonResolver","identifyResolver","json.code","jsonResolver","entryPath","startingDepth","recurse","globalThis","resultIndex","msAbs","isPlural","createDebug","disable","enable","humanize","selectColor","prevTime","enableOverride","namespacesCache","enabledCache","formatter","newDebug","namespaces","toNamespace","lastC","formatters","createDisabledLogger","contents","dagPB.encode","dagPB.prepare","nextSegment","fileName","dagPB.decode","converted","parentLinks","secs","dagPB.code","finalSegment","existingLink","sibling","siblingName","siblingHash","siblingIndex","siblingPrefix","newPrefix","sourceEntry","linkSizes","pblink","mergeOpts","defaultOptions","updatedCid","updatedBlock","parentCid","emptyDirCid","parentBlock","rootNode","tsize","oldUnixfs","dagSize","localFileSize","localDagSize","pbNode","linkResult","helia","UnixFSClass","__extends","extendStatics","__","stream_1","_super","IndexedDbReadStream","dbRequest","dbEvent","IndexedDbWriteStream","__export","objectTypes","freeExports","freeModule","freeGlobal","maxSafeInteger","reOpera","objectProto","capitalize","cleanupOS","forOwn","getClassOf","isHostType","qualify","accumulator","ua","isCustomContext","nav","likeChrome","objectClass","airRuntimeClass","enviroClass","javaClass","phantomClass","java","rhino","operaClass","description","prerelease","useFeatures","isSpecialCasedOS","getLayout","getName","product","getProduct","manufacturer","getManufacturer","getOS","guesses","getVersion","toStringPlatform","CryptoJS","Math","cryptoSecureRandomInt","C_lib","overrides","WordArray","sigBytes","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","doFlush","processedWords","dataWords","dataSigBytes","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","cfg","messageUpdate","C_algo","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","base64Chars","byte3","triplet","paddingChar","base64Str","base64StrLength","reverseMap","paddingIndex","parseLoop","bits2","bitsCombined","adresseFonction","idClient","fOriginale","ceciOriginal","codeCache","fsSuivis","f_","argsAvecF","nomArgTaille","argsSansFOuTaille","taille","infoRequêtes","info","argsComplets","fChangerProfondeur","fChangerN","fOublierRequête","fChangerTailleRequête","tailleAvant","maxTaille","taillePrésente","fChangerTaille","requêtes","argsClefs","texte","_cible","descripteur","recherche","client","licences","infoLicence","idÉlément","suggestion","récursif","fichiers","dépendants","épingles","l_vals","idsOrbite","cids","id_","fOublier_","idCompte","schémaBdPrincipale","MAX_TAILLE_IMAGE","MAX_TAILLE_IMAGE_VIS","idBdProfil","bdProfil","profil","contacts","courriel","contact","idBdContacts","àEffacer","langue","noms","idBdNoms","idImage","saveAs","licence","licenceContenu","ajouter","idBdBd","bdBD","optionsAccès","idBdMétadonnées","idBdDescr","idBdTableaux","idBdMotsClefs","idBdNuées","bdRacine","fOublierRacine","ajouterÀMesBds","copierDonnées","bdBase","idNouvelleBd","nouvelleBd","fOublierNouvelle","bdMétadonnées","fOublierBdNoms","métadonnées","bdNoms","bdDescr","fOublierBdDescr","descriptions","bdMotsClefs","fOublierBdMotsClefs","motsClefs","bdNuées","fOublierBdNuées","nuées","idNouvelleBdTableaux","nouvelleBdTableaux","fOublierNouvelleTableaux","bdTableaux","fOublierBdTableaux","tableaux","idTableau","idNouveauTableau","statut","tb","clefTableau","idColonne","idVariable","optionnelle","règle","copiéDe","fCondition","fSuivreCondition","fFinaleSuivreCondition","motsClefsBd","état","idNuée","nuéesBd","idBdBase","idBd2","obtTableaux","fSuivi","tableauxBase","tableauxBd2","idTableauBaseCorresp","infoTableau","idNuéeUnique","clefStockageLocal","déjàCombinées","bds","idBdLocale","schémaBd","métadonnée","lng","bdBd","idsMotsClefs","idMotClef","idsNuées","infoExistante","idNouvelle","idCompteAuteur","infos","numérateur","dénominateur","fFinaleBranche","règles","colsÉligibles","fOublierCols","fOublierRègles","erreurs","déjàVus","nCellulesÉrronnées","fOublierDonnées","fOublierErreurs","fOublierColonnes","accès","couverture","valide","score","oublierAccès","oublierCouverture","oublierValide","oublierLicence","fsOublier","nomsBd","idCourt","nomBd","fOublierNomsBd","patience","tableauXLSX","formatDoc","dossier","inclureFichiersSFIP","bookType","fichierDoc","writeXLSX","fichiersDeSFIP","writeFile","document","idSousBd","fOublierTableaux","varsÀColonnes","donnéesCatégorie","règleDeLaVariable","colonne","typeRègle","règleTypeBornes","fComp","fOp","typeBornes","manquantes","donnéesCol","borne","règleTypeCatégorique","élément1","élément2","clefs1","clefs2","idBdTableau","bdTableau","idBdDonnées","idBdColonnes","idBdRègles","fOublierNoms","idTableauRéf","différences","cRéf","cCorresp","cTableau","fOublierColonnesTableau","fOublierColonnesRéf","bdColonnes","élémentCol","nouvelÉlément","clefsSelonVariables","colonnes","donnéesFinales","idVar","fSuivreColonnes","oublierColonnes","fSuivreDonnées","oublierDonnées","extraireTraduction","adresseBdTrads","élémentFinal","formaterValeur","nomsTableau","nomsVariables","donnéesFormattées","idCol","nomVar","idCourtTableau","nomTableau","fOublierNomsTableaux","fOublierNomsVariables","bdDonnées","colsIndexe","obtIdIndex","valsIndex","précédent","clefsPermises","clefsFinales","idTableauBase","idTableau2","donnéesTableauBase","colsTableauBase","donnéesTableau2","existant","àAjouter","conversions","importerFichiers","cheminBaseFichiers","donnéesExistantes","idsOrbiteColsChaîne","fichiersDéjàAjoutés","ajouterFichierÀSFIP","chemin","contenuFichier","composantesUrl","cheminAbsolut","cacheRechercheIdOrbite","rechercherIdOrbiteChaîne","valLangue","créerIdOrbiteChaîne","bdNuée","fOublierBdTableau","idOrbite","convertir","conversion","opération","systèmeNumération","convertirValNumérique","valFinale","valNumérique","valObjet","valListe","donnéesTableau","donnéesConverties","catégories","branche","fSuivreBdColonnes","bdRègles","idRègle","dicRègles","fFinaleRèglesTableau","oublierRèglesTableau","oublierRèglesVariable","fFinaleSuivreBranche","règlesColonnes","nouvellesErreurs","fFinaleRègles","fFinaleDonnées","fOublierVarsÀColonnes","règlesTypeBornes","règlesBornesColonnes","règlesBornesVariables","règlesCatégoriquesDynamiques","idBdVariable","bdVariable","fOublierVariable","fOublierBase","bdNouvelle","unités","fOublierBdRègles","idUnité","règleModifiée","fSuivreCatégorie","règleCat","fOublierCatégorie","fSuivreRèglesPropres","rgls","fOublierRèglesPropres","rés","scores","qualité","oublierNoms","oublierDescr","descr","oublierUnités","oublierCatégorie","oublierRègles","baseSum","iteratee","average","variance","mean","covariance","mean_a","mean_b","diff_a","diff_b","ssim","K1","K2","C1","C2","C3","luminance","ux","uy","contrast","sy2","structure","sxy","patRev","minStart","textRev","rm","peq","hIn","pV","mV","hInIsNegative","xV","xH","pH","mH","hOut","maxErrors","bMax","emptyPeq","asciiPeq","charPeq","charCode","maxBlockScore","meilleure","correspTexte","possibilités","corresp","début","imageRef","mssim","fsRecherche","fSuivreRecherche","résultats","fSuivreFinale","fRecherche","de","fRechercher","meilleur","xPlusImportantQueY","ordreImportanceCroissante","iX","iY","xPlusLongQueY","idRecherché","_client","infosCompte","calculerScore","fSuivreNoms","fSuivreImage","fSuivreCourriel","fOublierImage","fOublierCourriel","courrielProfil","fRechercherNoms","fRechercherCourriel","fRechercherId","fRechercherTous","imageCompte","promesses","fÉcoutePubSub","évé","messageGs","promesse","fSuivreConnexions","intervale","idSFIP","sujet","msgBinaire","encrypté","msgSigné","maintenant","dispositifsMembre","encryption","msgEncrypté","clefPubliqueExpéditeur","msgPourDispositif","à","valeur","clefPublique","codeSecret","idDispositif","destinataire","contenuSalut","contenuMessage","effaçables","nEffacer","sigIdValide","sigClefPubliqueValide","bdCompte","bdCompteValide","fiables","bloquésPrivésChaîne","bloqués","privé","bloquésPubliques","listeBloqués","blqs","comptes","tous","relations","confiance","inscrireSuiviAuteurs","favoris","projets","profondeur","idCompteDébut","idCompteDébutFinal","dicRelations","dicOublierRelations","fermer","connectéPar","calcProfondeurCompte","rechercherP","déjàVues","connexions","relationsFinales","suivreRelationsImmédiates","fOublierRelationsImmédiates","fMiseÀJour","oublierRelationsImmédiates","àOublier","àSuivre","maRelation","profondeurCompte","rsPositives","coûtNégatif","dicComptes","fOublierComptesEnLigne","infoMembresEnLigne","fSuivreComptesRéseau","fOublierComptesRéseau","idCompteRéférence","idCompteRéférenceFinal","infoRecherchée","pairs","adresses","moi","fFinaleDispositifs","dispositifs","infoMembre","vuÀ","protocoles","idDispositifFinal","dispositif","nRésultatsDésirés","fConfiance","fQualité","fObjectif","fScore","résultatsParMembre","fsOublierRechercheMembres","DÉLAI_REBOURS","annuler","ajusterProfondeur","débuterReboursAjusterProfondeur","délai","pireScoreInclus","parProfondeur","nScoresInclusParProfondeur","dernierTrois","dernierQuatre","nouvelleProfondeur","résultatsOrdonnés","listeRésultats","suivreRésultatsMembre","membre","objectif","résultatFinalBranche","fSuivreObjectif","fOublierObjectif","fOublierConfiance","fOublierQualité","fOublierRechercheMembre","oublierRésultatsMembre","compte","fSuivreComptes","clefsObsolètes","avant","fOublierSuivreComptes","nouveauN","nDésirésAvant","idItem","auteurs","idsAuteurs","confiances","idAuteur","fRechercheLesMiens","toutLeRéseau","fObjectifFinal","fRechercheFinale","fOublierPropres","propres","fOublierFavoris","fSuivreQualité","fFinaleSuivreQualité","idObjet","objetsMembre","fOublierBranche","idProjet","fListeObjets","favorisDIntérêt","infosMembres","fav","connexionsMembres","idsMembres","fOublierConnexionsMembres","fOublierConnexionsDispositifs","fSuivreFavoris","fListeFavoris","fBrancheFavoris","fSuivreDispositifsMembre","fOublierDispositifsMembre","nBds","fListeListe","fSuivreRacineListe","fBrancheListe","fSuivreDonnéesTableauFinale","donnéesMembre","asymmetric","secretKey","clefPubliqueDestinataire","clefs","randomKey","précédentes","nouvelles","épinglerBd","épinglerFichiers","favorisFinaux","dispositifsFichiers","bdEstÉpinglée","fichiersSontÉpinglés","idBdProjet","bdProjet","fOublierProjet","idBdBds","idNouveauProjet","fOublierDescr","fOublierMotsClefs","bdBds","fOublierBds","motsClefsFinaux","fFinalePropres","mots","fOublierMotsClefsPropres","fOublierMotsClefsBds","fSuivreBds","fSuiviListe","scoresBds","fSuiviBranche","nomsProjet","nomProjet","fOublierNomsProjet","donnéesBd","docs","bdMotClef","fOublierMotClef","idBdDescriptions","idNouveauMotClef","bdDescriptions","fOublierDescriptions","nuéeParent","autorisation","idBdNuée","fOublierNuée","autorisationFinale","ajouterÀMesNuées","idNouvelleNuée","fOublierBdMétadonnées","fParents","hériter","philosophie","idBdAutorisation","idBdMembres","idAutorisation","dicMembres","fFinaleTableaux","lNoms","idNuéeParent","idColonneFinale","stricte","différencesFinales","tableauNuée","fOublierTableauxBd","fOublierTableauxNuée","fFinaleNuée","fOublierDifférencesBd","fOublierDifférencesTableaux","diffs","fSuiviRésultats","annulé","ascendance","suivreParent","fOublierParent","vérifierAutorisation","toujoursInclureLesMiennes","philoAutorisation","idMonCompte","bds_","invités","exclus","fOublierSuivrePhilo","philo","fOublierSuivreMembres","héritage","finaux","fOublierAscendance","finales","fOublierDescendance","fOublierDirectes","empreintes","empreinte","ignorerErreursFormatBd","ignorerErreursFormatTableau","ignorerErreursDonnéesTableau","licencesPermises","donnéesTableaux","conformes","fFinaleBdConforme","conforme","fOublierLicence","fOublierErreursFormatBd","erreursÉléments","auteur","donnéesMembres","fOublierSuivreTableau","fFinaleTableau","fOublierDonnnées","fOublierAuteursBd","nomsNuée","nomNuée","fOublierNomsNuée","idTableauNuée","obtRèglesTableau","générerCols","obligatoire","nomsVariable","fRechercherDescr","nomMotClef","desrcMotClef","descrBd","descrs","nomVariable","descProjet","fRechercherBd","fRechercherVariable","fRechercherMotClef","descrNuée","utils.rechercherSelonId","variable.rechercherVariablesSelonNom","descrVariable","variable.rechercherVariablesSelonDescr","variable.rechercherVariablesSelonTexte","motClef.rechercherMotsClefsSelonNom","descrMotClef","motClef.rechercherMotsClefsSelonDescr","motClef.rechercherMotsClefsSelonTexte","bd.rechercherBdsSelonNom","bd.rechercherBdsSelonDescr","bd.rechercherBdsSelonIdMotClef","bd.rechercherBdsSelonIdVariable","bd.rechercherBdsSelonNomMotClef","bd.rechercherBdsSelonNomVariable","bd.rechercherBdsSelonMotClef","bd.rechercherBdsSelonVariable","bd.rechercherBdsSelonTexte","profil.rechercherProfilsSelonNom","profil.rechercherProfilsSelonImage","profil.rechercherProfilsSelonActivité","profil.rechercherProfilsSelonCourriel","profil.rechercherProfilsSelonTexte","projet.rechercherProjetsSelonNom","descrProjet","projet.rechercherProjetsSelonDescr","projet.rechercherProjetsSelonIdVariable","projet.rechercherProjetsSelonNomVariable","projet.rechercherProjetsSelonVariable","projet.rechercherProjetsSelonIdMotClef","projet.rechercherProjetsSelonNomMotClef","projet.rechercherProjetsSelonMotClef","projet.rechercherProjetsSelonIdBd","projet.rechercherProjetsSelonBd","projet.rechercherProjetsSelonTexte","nuée.rechercherNuéesSelonNom","nuée.rechercherNuéesSelonDescr","nuée.rechercherNuéesSelonIdMotClef","nuée.rechercherNuéesSelonIdVariable","nuée.rechercherNuéesSelonNomMotClef","nuée.rechercherNuéesSelonNomVariable","nuée.rechercherNuéesSelonMotClef","nuée.rechercherNuéesSelonVariable","nuée.rechercherNuéesSelonTexte","feuille","colsInversées","avantDernière","dernièreClef","conteneurBranches","clefsSaufLaDernière","_base","_élémentsFinaux","iNull","clefsAvant","clefsAprès","copieBase","clefsRacine","clefsÉléments","racineDonnéesJSON","élémentJSON","XLSX.set_fs","XLSX.stream","fréq","spéc","ajouterÉtiquetteÀNomFichier","composantes","donnéesExp","donnéesNuée","correspondants","nomsCorrespondent","réf","enTrop","temps","dateModifFichier","résoudreAdresse","adresse","fichierRésolu","idSpéc","fÉtat","fAuto","clefStockageDernièreFois","tempsInterval","idDernièreRequêteOpération","requêteDernièreModifImportée","requêtesDéjàExécutées","fAutoAvecÉtats","requête","nouvelÉtat","fLancer","dicFOublierIntervale","fAutoAvecÉtatsRécursif","dernièreFoisChaîne","dernièreFois","tempsDepuisDernièreFois","chokidar","adresseFichier","adresseFichierRésolue","écouteur","dernièreModif","dernièreImportation","monIdDispositif","autos","automatisationsDavant","ceDispositif","typeSource","formatDonnées","donnéesJson","optionsXLSX","docXLSX","XLSX.readFile","typeObjet","fréquence","nRésultatsDésirésNuée","copies","idAuto","idDossier","autosFinales","autoFinale","adresseRésolue","dossierRésolu","étatsAuto","dossierConstellation","dossierStockageLocal","stockageLocal","isPrime","sqrtN","factor","getFractionalBits","nPrime","gamma0x","gamma1x","ErrClass","errCode","notFoundError","Errors.notFoundError","clean","list1","list2","sorter","puts","dels","onAbort","metrics","priority","wantType","sendDontHave","subsystem","createLogger","valueA","valueB","varint.default","varint.encode","Message","Wantlist","WantType","__WantTypeValues","Entry","BlockPresenceType","__BlockPresenceTypeValues","BlockPresence","hashLoader","isFull","blockPresence","multicodec","hashAlg","full","cidStr","bpType","stats","newIdx","pivot","DefaultTaskMerger","taskMerger","peerTasks","targetMinBytes","pendingSize","existingTask","tasksWithTopic","activeTask","pendingTasks","haveBlock","isWantBlock","newTask","taskData","existingData","network","blockCids","blockTasks","blk","peerIdStr","ledger","want","entrySize","cancels","wants","blocksMap","lengthLength","lengthBuf","encodeLength","maybeYield","ReadMode","dataLength","lengthDecoder","maxLengthLength","maxDataLength","InvalidMessageLengthError","InvalidDataLengthError","dataLengthLength","InvalidDataLengthLengthError","UnexpectedEOFError","varByteSource","DEFAULT_MAX_INBOUND_STREAMS","DEFAULT_MAX_OUTBOUND_STREAMS","bitswap","topology","conn","abortListener","lp.decode","provider","CONSTANTS.maxProvidersPerRequest","peer","stringId","serialized","lp.encode","CONSTANTS.maxListeners","blockEvt","unwantEvt","onUnwant","onBlock","timespan","ma","previousTime","incr","initialCounters","interval","MovingAverage","urgency","latestTime","timeDiff","timeDiffMS","hz","movingAverages","movingAverageInterval","movingAverage","peerStat","peerStats","wait","callFirst","debouncedFn","debounceWrapper","callNow","selfPeerId","otherPeerId","force","CONSTANTS.kMaxPriority","mq","fullwantlist","Network","wasWanted","fetchFromNetwork","promptedNetwork","loadOrFetchFromNetwork","cidsArray","hashers","codecOrName","validateFn","#attempts","#errors","#invalidBlocks","#successes","gwUrl","gatewayOrUrl","sortedGateways","aggregateErrors","gateway","missingBlocks","notifyEach","providers","blocksWereValidated","eventName","removeListeners","eventListener","errorEventListener","recipient","onQueueJobComplete","onQueueError","onQueueIdle","onSignalAbort","datastore","dagWalkers","dagWalker","pinKey","childCid","#walkDag","#updatePinnedBlock","pinnedBlock","withPinnedBlock","blockKey","masterEvent","requestType","releaseType","grantType","requestEvent","releaseEventListener","releaseEvent","responseEvent","masterQueue","readQueue","localReadQueue","readPromise","release","pins","releaseLock","blockBrokers","networkedStorage","baseDecoder","LIBP2P_KEY_CODE","MARSHALLED_ED225519_PUBLIC_KEY_LENGTH","MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH","peerIdFromString","PeerIdImpl","RSAPeerIdImpl","Ed25519PeerIdImpl","Secp256k1PeerIdImpl","peerIdFromBytes","peerIdFromCID","peerIdFromKeys","minute","s64","invalidEncoding","f32","f8b","writeFloat_f32_cpy","writeFloat_f32_rev","readFloat_f32_cpy","readFloat_f32_rev","writeFloat_ieee754","writeUint","readFloat_ieee754","readUint","f64","writeDouble_f64_cpy","writeDouble_f64_rev","readDouble_f64_cpy","readDouble_f64_rev","writeDouble_ieee754","off0","off1","readDouble_ieee754","utf8","SIZE","zeroHash","charCodeAt","sizeOrArray","ifNotSet","newError","CustomError","fieldNames","fieldMap","Writer","BufferWriter","write_uint32","write_int32","write_sint32","write_uint64","write_sint64","write_bool","write_fixed32","write_fixed64","write_float","write_double","writeBytes_set","writeBytes_for","write_bytes","write_string","fork","ldelim","BufferWriter_","write_bytes_buffer","write_string_buffer","Reader","BufferReader","create_typed_array","create_array","read_uint32_setup","read_int32","read_sint32","read_bool","read_fixed32","read_sfixed32","read_float","read_double","read_bytes","nativeBuffer","read_string","BufferReader_","read_string_buffer","rpcImpl","requestDelimited","responseDelimited","rpcCall","requestCtor","responseCtor","endedByRPC","rpc","protobuf","configure","$protobuf","$Reader","$Writer","$util","$root","RPC","$oneOfFields","SubOpts","ControlMessage","ControlIHave","ControlIWant","ControlGraft","ControlPrune","PeerInfo","gossip","historyCapacity","msgIdToStrFn","messageId","validated","msgIdStr","msgId","fromPeerIdStr","topics","msgIdsByTopic","msgIds","originatingPeers","cacheEntry","SignaturePolicy","PublishConfigType","RejectReason","ValidateError","MessageStatus","acceptance","MessageSource","InclusionReason","ChurnReason","ScorePenalty","IHaveIgnoreReason","ScoreThreshold","topicStrToLabel","topicStr","messageRecord","firstSeenTimestampMs","penalty","ihave","idonthave","iwantByTopic","iwantDonthave","iwant","tosendCount","tosendGroupCount","deliveryDelayMs","isLateDelivery","rpcBytes","graft","prune","scoreThresholds","graylist","publish","mesh","wsTopic","scoreByPeer","peersPerTopicLabel","topicLabel","peersInMesh","meshScores","topicScoreParams","superSet","ineed","subset","getDefault","pstats","peerIPs","tstats","topicParams","topicScore","deficit","p3","p3b","p4","p5","peersInIP","numPeersInIP","surplus","p6","excess","p7","peekAt","peekFront","peekBack","unshift","pop","removeOne","removed","del_count","splice","arg_len","arguments_index","leng","isEmpty","_fromArray","capacity","_copyArray","fullCopy","_growArray","newList","_shrinkArray","_nextPowerOf2","log2","nextPow2","DeliveryRecordStatus","Denque","drec","componentLogger","decayToZero","tparams","cacheUntil","penaltyLabel","peersWithIP","validatedTime","ipsToRemove","ipToRemove","peerSet","topicStats","byTopic","topicScores","p1w","p2w","p3w","p3bw","p4w","capF","p5w","p6w","p7w","peerIdStrs","swPeer","swPeerTopic","swTopic","rawStream","errCallback","gossipsubIWantFollowupMs","ix","expireByPeer","brokenPromises","expire","isDuplicate","maxMs","requestMs","_password","_salt","asyncTick","assertNumber","PRF","PRFSalt","prfW","ti","Ti","ui","aView","bView","buffers","uintArray","encodedString","arrayBuffer","binary","formatted","stringLength","resultView","hexString","padCount","inputBuffer","inputBase","internalReserved","biggest","retBuf","retView","views","outputLength","prevLength","condition1","condition2","bigIntBuffer","bigIntView","bigInt","smallIntBuffer","smallIntView","modValue","smallInt","tempBuf","tempView","inputBuffer1","inputBuffer2","view1","view2","inputNumber","fullLength","baseBlock","inputOffset","EMPTY_BUFFER","BaseClass","pvtsutils.BufferSourceConverter","endLength","sizeOnly","pvtsutils.Convert","warnings","valueBeforeDecode","idBlock","firstOctet","encodedBuf","pvutils.utilToBase","encodedView","curView","inputView","intBuffer","tagNumberMask","intTagNumberBuffer","tagNumberBufferMaxLength","tempBufferView","pvutils.utilFromBase","lenBlock","lenOffset","lengthBufferView","optional","primitiveSchema","parameters","valueBlockType","resultOffset","_writer","idBlockBuf","valueBlockBuf","lenBlockBuf","thisRaw","otherRaw","pvutils.isEqualBuffer","stringValueBlockType","isHexOnly","inputObject","newType","newObject","incomingOffset","returnObject","newASN1Type","indefiniteLength","isIndefiniteForm","currentOffset","blockName","octet","pvutils.utilDecodeTC","Boolean","isConstructed","currentBlockName","unusedBits","valueBlock","valueHex","bitsStr","firstView","secondView","firstViewCopy","firstViewCopyLength","secondViewCopy","secondViewCopyLength","pvutils.utilConcatView","pvutils.utilEncodeTC","updatedView","firstBit","bitNumber","currentByte","asn1View","byteNumber","secondInt","integer","valueDec","isFirstSid","sidValue","sidBlock","retBuffers","valueBuf","pos1","pos2","parsedSID","sidStr","inputString","valueView","strLength","valueHexView","codeBuf","codeView","valueDate","inputDate","parserArray","outputArray","pvutils.padNumber","timeString","dateTimeString","fractionPart","hourDifference","minuteDifference","differencePosition","differenceString","fractionPointPosition","fractionPartCheck","fractionResult","tempDate","asn1js.fromBER","asn1js.Sequence","asn1js.Integer","asn1js.ObjectIdentifier","asn1js.Null","asn1js.BitString","keyBuf","asn1js.OctetString","keyArr","encryptionKey","pbkdf2Params","finalWrapperBuf","finalWrapperArr","decryptedResult","keyDerivationFunc","encryptionScheme","encryptionSchemeName","crypto.utils.exportToPem","unmarshalPublicKey","keysPBM.PublicKey","dek","pbkdf2Sync","publishConfig","originalData","transformedData","rpcMsg","signaturePolicy","fromPeerId","rpcMsgPreSign","randInt","seqno","seqnoBytes","maxDigits","allowZeroPrefix","digitCount","leadingChar","hasLeadingZero","maxValue","digit","readGroups","ipv4","headSize","headIp4","tailSize","sections","isv4","v4Buffer","argv","resolvable","ipString","ip.isIP","ip.toBytes","ipBuff","ip.toString","port","mh","mbstr","mb","portBuf","addrBytes","portBytes","Protocol","multiaddr","tuple","GossipStatusCode","constants.GossipsubIDv11","constants.GossipsubIDv10","constants.GossipsubD","constants.GossipsubDlo","constants.GossipsubDhi","constants.GossipsubDscore","constants.GossipsubDout","constants.GossipsubDlazy","constants.GossipsubHeartbeatInterval","constants.GossipsubFanoutTTL","constants.GossipsubHistoryLength","constants.GossipsubHistoryGossip","constants.GossipsubSeenTTL","constants.GossipsubIWantFollowupTime","constants.GossipsubPrunePeers","constants.GossipsubPruneBackoff","constants.GossipsubUnsubscribeBackoff","constants.GossipsubGraftFloodThreshold","constants.GossipsubOpportunisticGraftPeers","constants.GossipsubOpportunisticGraftTicks","constants.GossipsubDirectConnectTicks","constants.FloodsubID","maxMeshMessageDeliveriesWindowMs","topicParam","constants.DEFAULT_METRIC_MESH_MESSAGE_DELIVERIES_WINDOWS","registrar","registrarTopologyIds","heartbeatTimeout","constants.GossipsubHeartbeatInitialDelay","constants.GossipsubDirectConnectInitialDelay","closePromises","outboundStream","inboundStream","priorInboundStream","currentIP","peersInTopic","subOpt","subscribe","handleReceivedMessagePromise","topicSet","validationResult","validationCode","propagationSource","fastMsgIdStr","msgIdCached","topicValidator","constants.ERR_TOPIC_VALIDATOR_IGNORE","constants.ERR_TOPIC_VALIDATOR_REJECT","toPeer","controlMsg","sent","iwantMessageIds","peerhave","constants.GossipsubMaxIHaveMessages","iasked","constants.GossipsubMaxIHaveLength","topicID","messageIDs","iask","iwantList","constants.GossipsubGossipRetransmission","doPX","floodCutoff","onUnsubscribe","backoff","intervalMs","constants.GossipsubPruneBackoffTicks","toconnect","wasSubscribed","toAdd","fanoutPeers","fanoutCount","meshPeers","excludePeers","tosend","newFanoutPeers","rawMsg","startMs","ignoreDuplicatePublishError","willSendToSelf","allowPublishToZeroPeers","batchPublish","durationMs","prefixedData","rejectReason","ctrl","outRpc","tograft","toprune","noPX","pruning","peersToGossipByTopic","gossipIDsByTopic","peersToGossip","candidateToGossip","constants.GossipsubGossipFactor","peerMessageIDs","control","controlIHaveMsgs","backoffMs","xid","peerInfo","msToNextHeartbeat","Dlo","Dhi","Dscore","Dout","fanoutTTL","getScore","candidateMeshPeers","shuffledPeers","peerStreams","prunePeer","graftPeer","peersArray","outbound","rotate","peersList","medianIndex","medianScore","newMeshPeers","lastpb","topicPeers","candidateFanoutPeers","backoffSize","expiredMs","nextResult","readBuffer","abortPromise","originalStream","decodeLength","lengthBuffer","piped","NOISE_MSG_MAX_LENGTH_BYTES","NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG","DUMP_SESSION_KEYS","u32","wrapCipher","bool","u8to16","t6","t7","hibit","r0","r3","r4","r5","r6","r7","r8","r9","h0","h5","h7","h8","h9","d0","d3","d4","d5","d6","d7","d8","d9","aexists","aoutput","opos","wrapConstructorWithKey","poly1305","Poly1305","sigma16","sigma32","sigma16_32","sigma32_32","isAligned32","BLOCK_LEN","BLOCK_LEN32","MAX_COUNTER","U32_EMPTY","runCipher","sigma","rounds","b32","isAligned","d32","o32","pos32","posj","allowShortKeys","extendNonceFn","counterLength","counterRight","anumber","abool","toClean","k32","nonceNcLen","n32","chachaCore","y00","y01","y02","y03","y04","y05","y06","y07","y08","y09","y10","y11","y12","y13","y14","y15","x00","x01","x02","x03","x04","x05","x06","x07","x08","x09","x10","x11","x12","x13","x14","x15","chacha20","ZEROS16","updatePadded","ZEROS32","computeTag","AAD","authKey","_poly1305_aead","xorStream","plength","clength","passedTag","chacha20poly1305","ikm","prk","okm","HMAC","HMACTmp","pureJsCrypto","ad","defaultCrypto","uint16BEEncode","uint8ArrayAllocUnsafe","uint16BEDecode","uint8ArrayAlloc","CHACHA_TAG_LENGTH","encryptStream","handshake","decryptStream","UnexpectedPeerError","InvalidCryptoExchangeError","NoiseExtensions","NoiseHandshakePayload","localPeer","staticPublicKey","extensions","signedPayload","createHandshakePayload","libp2pPublicKey","noiseStaticKey","payloadPeerId","generatedPayload","pk","MIN_NONCE","MAX_NONCE","ERR_MAX_NONCE","emptyKey","encryptedMessage","derivedU8","tempK","Nonce","protocolName","protocolNameBytes","tempk1","tempk2","cs1","cs2","ne","prologue","psk","hs","spk","messageBuffer","valid1","valid2","initiator","session","ephemeral","resultingBuffer","resultingPlaintext","resultingValid","logLocalStaticKeys","keyLogger","logLocalEphemeralKeys","logRemoteStaticKey","logRemoteEphemeralKey","logCipherState","isInitiator","staticKeypair","receivedMessageBuffer","decodedPayload","registerMetrics","staticNoiseKey","prologueBytes","wrappedConnection","user","noise","Noise","FrameType","Flag","GoAwayCode","readStatus","StreamState","toSend","_reject","readData","rtt","CLOSE_TIMEOUT","shutDownListener","streamID","pingId","fmtLong","fmtShort","plural","formatArgs","load","useColors","localstorage","tuples","stringTuples","stringAddr","tup","#string","#tuples","#stringTuples","#path","transport","zone","tcp","udp","ip4","ip6","dns6","ip6zone","addrString","resolvableProto","protos","MultiaddrClass","ERR_IPNS_EXPIRED_RECORD","ERR_UNRECOGNIZED_VALIDITY","ERR_SIGNATURE_VERIFICATION","ERR_UNRECOGNIZED_FORMAT","ERR_UNDEFINED_PARAMETER","ERR_INVALID_RECORD_DATA","ERR_INVALID_VALUE","ERR_INVALID_EMBEDDED_KEY","ERR_RECORD_TOO_LARGE","IpnsEntry","ValidityType","__ValidityTypeValues","IPNS_PREFIX","LIBP2P_CID_CODEC","parseRFC3339","rfc3339Matcher","month","millisecond","extractPublicKey","ERRORS.ERR_UNDEFINED_PARAMETER","ERRORS.ERR_INVALID_EMBEDDED_KEY","ipnsRecordDataForV2Sig","entryData","ERRORS.ERR_SIGNATURE_VERIFICATION","parseCborData","validity","ERRORS.ERR_UNRECOGNIZED_FORMAT","validateCborDataMatchesPbData","peerIdFromRoutingKey","ERRORS.ERR_UNRECOGNIZED_VALIDITY","ERRORS.ERR_INVALID_VALUE","ERRORS.ERR_INVALID_RECORD_DATA","MAX_RECORD_SIZE","dataForSignature","ERRORS.ERR_IPNS_EXPIRED_RECORD","ipnsValidator","marshalledData","ERRORS.ERR_RECORD_TOO_LARGE","receivedRecord","__classPrivateFieldGet","_PQueue_doesIntervalAllowAnother_get","_PQueue_doesConcurrentAllowAnother_get","_PQueue_next","_PQueue_onResumeInterval","_PQueue_isIntervalPaused_get","_PQueue_tryToStartAnother","_PQueue_initializeIntervalIfNeeded","_PQueue_onInterval","_PQueue_processQueue","_PQueue_throwOnAbort","_PQueue_onEvent","defaultValues","onStart","#handleProviderRecords","ndjson","toIt","#handlePeerRecords","Netmask","chr0","chrA","chra","ip2long","long2ip","long","net","lastLong","ipRange","ipAddr","octet34","octet12","PROTOCOL_PREFIX","PROTOCOL_NAME","PROTOCOL_VERSION","TIMEOUT","MAX_INBOUND_STREAMS","MAX_OUTBOUND_STREAMS","MessageType","__MessageTypeValues","ResponseStatus","__ResponseStatusValues","Dial","DialResponse","ourHosts","dialRequest","multiaddrs","isFromSameHost","isPublicIp","isNotOurHost","isSupportedTransport","lastMultiaddr","protocols","addressManager","randomCid","networkSegments","verifyAddress","dialResponse","addrStr","DNS","IP","_WebSockets","WebSockets","_WebSocketsSecure","_WebRTCDirect","WebRTCDirect","_WebTransport","WebTransport","_P2P","_Circuit","Circuit","partialMatch","pnames","peerData","Envelope","envelopeData","Protobuf","payloadType","signData","envelope","domainUint8Array","uint8arraysFromString","domainLength","payloadTypeLength","payloadLength","arrayEquals","sort","PeerRecord","AddressInfo","peerRecord","seqNumber","MAX_CONNECTIONS","HopMessage","__TypeValues","Peer","StopMessage","Reservation","Limit","Status","__StatusValues","ReservationVoucher","expireTimeSeconds","expireTimeMillis","currentTime","bitfield","itemcount","errorRate","itemCount","seeds","fingerprintSize","fnv","fingerprint","uint8Array","fnvPrime","utf8Buffer","fnv1a","fnv1aHash","swapped","inJ","inK","maxItems","bucketSize","filterSize","cuckoo","curSize","remoteAddr","closedRead","closedWrite","streamClose","streamAbort","streamSink","maConn","#removeRelayPeer","relayAddr","relayConn","reservation","had","createListener","#removeRelay","existingReservation","#createReservation","expiration","timeoutDuration","hopstr","hasRelayAddress","relayAddressBytes","errMsg","discoverRelays","destinationAddr","relayId","destinationId","relayPeer","destinationPeer","disconnectOnFailure","relayConnection","pbstr","mafmt.Circuit","remotePeerId","localAddr","defaultClear","settle","rejectFunction","signalListener","delayPromise","HolePunch","certhash","matchers","exactMatch","transportManager","relayedConnection","connectTimer","connect","publicAddresses","IDENTIFY_PROTOCOL_VERSION","MULTICODEC_IDENTIFY_PROTOCOL_NAME","MULTICODEC_IDENTIFY_PROTOCOL_VERSION","Identify","MAX_IDENTIFY_MESSAGE_SIZE","connections","listenAddresses","signedPeerRecord","supportedProtocols","agentVersion","protocolVersion","pushes","IdentifyMessage","observedAddr","cleanObservedAddr","getCleanMultiaddr","#consumeIdentifyMessage","peerRecordEnvelope","existingPeer","storedEnvelope","storedRecord","identify","IdentifyClass","PROTOCOL","Record","seconds","nanoseconds","timeReceived","utils.toRFC3339","recvtime","utils.parseRFC3339","ConnectionType","__ConnectionTypeValues","selectors","keyhash","publicKeyHash","isPrivate","peerRouting","queryManager","logPrefix","dsKey","best","fixupRec","sentCorrection","putEvent","localRec","getValueQuery","routingTable","maybeNotifyPeer","sendEvent","toFind","provs","findProvidersQuery","newProviders","sendTimeout","timeoutSignal","originDhtKey","pd","dhtKey","kadId","uint8ArrayXor","uint8ArrayXorCompare","dhtKeyXor","furthestDistance","peerIds","pkKey","utils.keyForPublicKey","recPeer","keys.marshalPublicKey","foundPeer","findPeerQuery","utils.convertBuffer","tablePeers","getCloserPeersQuery","closerThan","_cache","cacheSize","cleanupInterval","provideValidity","Queue","deleteCount","batch","expired","startingPeer","ourPeerId","pathIndex","numPaths","queryFuncTimeout","peersSeen","connectionManager","queryPeer","peerKadId","peerXor","compoundSignal","closerPeer","closerPeerKadId","closerPeerXor","disjointPaths","queryFunc","stopQueryTimer","queryEarlyExitController","startTime","queryFinished","peersToQuery","removeListener","returnValue","onItem","arguments_","rejectHandler","rejectionEvent","arrayPromise","queryTimeout","array1","array2","countBucket","iterate","firstId","secondId","findBucket","bitIndex","kBuck","utils.convertPeerId","peerStorePeers","kClosest","updatePeerTags","utils.debounce","newClosest","addedPeers","removedPeers","oldContacts","newContact","responded","oldContact","pingJob","refreshInterval","refreshQueryTimeout","refreshCpls","lastRefresh","lastCpl","cpl","maxCommonPrefix","dates","targetCommonPrefixLength","randomData","randomUint16","localKadId","randomPrefix","toggledLocalPrefix","targetPrefix","keyPrefix","keyBuffer","keyView","distance","leadingZeros","closer","providerPeers","closerPeers","peerAfterFilter","idFromKey","rawRecord","deserializedRecord","recordKey","peerInfoMapper","desMessage","dht","kBucketSize","clientMode","querySelfInterval","pingTimeout","pingConcurrency","maxInboundStreams","maxOutboundStreams","providersInit","loggingPrefix","recordValidators","recordSelectors","initialQuerySelfHasRun","KADDHTPeerRouting","KADDHTContentRouting","hasPublicAddress","EventTypes","KadDHTClass","isHighSurrogate","isLowSurrogate","truncate","charLength","curByteLength","getByteLength","prevCodePoint","sanitized","sanitize","dsname","keyInfo","kid","oldName","newName","oldDsname","newDsname","oldInfoName","newInfoName","oldPass","newPass","oldDek","newDek","keyAsPEM","pointsToConsume","rlKey","secDuration","delayMs","msDuration","initPoints","durationSec","msBeforeExpires","MessageTypes","maxMessageSize","maxUnprocessedMessageQueueSize","createStream","send","maxMsgSize","maxBufferSize","PING_LENGTH","PingServiceClass","streamLabel","pack","BrowserInfo","NodeInfo","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","matched","uaMatch","matchedRule","versionParts","searchBotMatch","isNode","drainTimeout","drained","closeListener","initialState","__FlagValues","messageLength","flagField","messageFieldIdType","messageFieldLengthLength","originalOnEnd","_evt","lengthPrefixed.decode","checkBuffer","msgbuf","sendbuf","lengthPrefixed.encode","prefixedBuf","bufferedStream","#onStreamEnd","pc","connectedPromise","candidateInit","rtcConfiguration","dataChannel","baseAddr","shouldCloseConnection","messageStream","peerConnection","muxerFactory","offerSdp","answerMessage","answerSdp","pbOffer","offer","answer","remoteAddress","webRTCConn","destinationIdString","lastProtoInRemote","tempK1","tempK2","cipherLength","encS","consumed","identitySig","payloadBytes","remoteStaticKey","remoteIdentityKey","remoteIdentityKeyBytes","signaturePayload","receivedPayload","localCert","localDescription","sdp","digest.decode","mhdecoded","ufrag","ipVersion","CERTFP","rawConn","remotePeerString","theirPeerId","p.peerIdFromString","remoteCerthash","sdp.decodeCerthash","sdp.certhash","certificate","sdp.toSupportedHashFunction","dataChannelOpenPromise","handshakeDataChannel","handshakeTimeout","mungedOfferSdp","sdp.munge","sdp.fromMultiAddr","myPeerId","fingerprintsPrologue","connectionEncrypter","wrappedChannel","wrappedDuplex","eventListeningName","hashCode","localFingerprint","sdp.getLocalFingerprint","localFpString","localFpArray","uint8arrayFromString","local","remote","sdp.mbdecoder","sniProtoCode","headProtoCode","headProtoVal","restMa","interpreter","restVal","tailProto","maHasTLS","sni","baseVal","decodedValue","socket","handleOpen","handleErr","resolution","rejection","listen","highWaterMark","lowWaterMark","EventIterator","evOptions","connected","isConnected","connError","cleanUp","cont","onOpen","onMessage","connectedSource","remotePort","wsUrl","httpProto","wsProto","WebSocket","testMa","mafmt.WebSockets","mafmt.WebSocketsSecure","metricPrefix","cOpts","errorPromise","rawSocket","toUri","filters.wss","filters.all","bidiStream","streamId","activeStreams","onStreamEnd","streamIDCounter","wtStream","muxer","maybeSubset","otherByteArray","certhashes","cleanUpWTSession","ready","authenticated","metric","remoteExtensions","WebTransportMatcher","aSeq","bSeq","recordAValidityDate","recordBValidityDate","libp2pInfo.name","libp2pInfo.version","Peer$metadataEntry","Peer$tagsEntry","Address","PeerPB","isCertified","b32key","addresses","addressMap","maStr","existingAddr","uint8arrayEquals","metadataEntries","tagsEntries","mergedTags","expiry","base32Str","mortice","existingBuf","#findExistingPeer","peerPb","#saveIfDifferent","peerCache","#emitIfUpdated","expectedPeer","later","observedPeerIdStr","announce","startingConfidence","addrSet","startable","service","serviceCapabilities","gater","isAPrivate","isBPrivate","isACircuit","isBCircuit","publicResult","relayResult","DEFAULT_TYPES","question","httpQueue","fqdn","searchParams","maxSize","hashlru","foundAllAnswers","answers","cachedAnswers","tld","DNSClass","dnsaddrResolver","recursionLimit","hostname","resultingOptions","maPeerIdStr","maPeerId","numConnections","dialQueue","peerValues","peersThatHaveNotFailed","peerAValue","peerBValue","lastDialFailure","lastDialFailureTimestamp","streamProtocols","closableProtocols","sortedConnections","toPrune","connectionALifespan","connectionBLifespan","peerIdOrMultiaddr","existingConnection","existingDial","addrsToDial","dialed","userSignal","resolvedAddresses","peerIdMultiaddr","filteredAddrs","addrPeerId","dedupedAddrs","dedupedMultiaddrs","gatedAdrs","sortedGatedAddrs","minConnections","conns","allStreams","counts","keepAlivePeers","connectionList","storedConns","isNewPeer","storedConn","peerConnections","trackedConnection","statusMap","topologies","couldNotListen","supportedAddrs","multistream.writeAll","multistream.readString","multistream.write","originalSink","originalSource","negotiated","negotiating","doneNegotiating","sentProtocol","sendingProtocol","doneSendingProtocol","readProtocol","readingProtocol","doneReadingProtocol","sink","sentData","protocolString","negotiate","doSendProtocol","doReadProtocol","originalCloseRead","originalCloseWrite","originalClose","newStream","getStreams","streamCount","encrypter","connectionType","connectionGater","encryptedConn","upgradedConn","cryptoProtocol","protectedConn","protector","idStr","multiplexed","transient","muxedStream","mss.handle","incomingLimit","mss.select","outgoingLimit","_timeline","errConnectionNotMultiplexed","muxers","originalDispatch","internalResult","externalResult","pkg.name","pkg.version","peerRouters","contentRouters","#onDiscoveryPeer","createService","peerKey","createLibp2p","selfKey","#encode","#decode","#query","iteratorOpts","nodeInfo","peerStore","listenOnly","encodedPeer","PBPeer","mdns","libp2pWebRTC","configPlateforme","configLibp2p","optionsHelia","xCommeOrbite","envPaths","__vite_default__","chemins","optionsAccèsRacine","nomTypeContrôleurConstellation","fichierVerrou","modifiéÀ","verrifierSiVieux","messageJSON","sfipFinale","orbiteFinale","initOrbite","initSFIP","typeAccès","contrôleurConstellation","idBdNomsDispositifs","bdNomsDispositifs","idCompteFinal","nomsDispositif","empreinteVérification","dateCodeSecret","autorisé","oublierPermission","vérifierSiAutorisé","identité","idBdDicInit","bdDicInit","fOublierInit","idNouvelleBdDic","nouvelleBdDic","bd2","fOublier2","contenuBd2","valBdBase","contenuBdBase","valBd2","valExistant","combiné","lancerSuivi","idSuivi","fSuivreBdRacine","valeurs","renvoyerValeur","typeFinal","schémaObjet","obtTêteBd","calculerEmpreinte","têtes","tête","_fChangerProfondeur","fOublierL","fChangerL","bdsRecherchées","él","parCompte","clefClient","racine","schémaBdRacine","clefRequête","idBdPrécédente","générerContrôleurConstellation","mesRôles","rôlePlusPuissant","fOublierSuivreAccès","listeAccès","dicBds","enleverRequêtesDe","clefsÀExclure","_suivreBdsRécursives","extraireÉléments","obsolètes","fOublierSuiviBd","indexedDbDatabases","ajouterDossierÀZip","fluxFichier","sauvegarderBdIndexeÀZip","dossierZipBd","tableauxBdIndexe","dossierZipIndexe","fMessage","fErreur","fonctionIPA","retourFinal","idMessage","idÉcouteurs","messageErreur","mandataire.générerMandataireProc","closeProps","hasClose","updateHandlers","trueValue","falseValue","isMultiple","currentValue","isFocusVisible","isInteractive","onBlur","onClickLabel","onInput","inputNode","indeterminate","onChange","falseIcon","trueIcon","controlProps","$event","InputIcon","localeKey","focusClasses","blur","isValidating","itemErrorMessages","resetValidation","errorMessages","validationModel","form","internalErrorMessages","isPristine","isDirty","validateOn","validationClasses","silent","messagesId","hasMessages","hasDetails","focused","controlAttrs","inputProps","checkboxProps","getTarget","horizontal","totalOffset","_target","goTo","ease","targetLocation","layoutOffset","startLocation","goToInstance","go","scrollWidth","scrollHeight","containerWidth","containerHeight","selectedElement","containerElement","containerSize","scrollPosition","childrenStartPosition","additionalOffset","containerOffsetSize","childrenOffsetPosition","childrenOffsetSize","scrollLeft","isOverflowing","scrollOffset","contentSize","containerRef","containerRect","goToOptions","firstSelectedIndex","lastSelectedIndex","scrollToChildren","center","scrollToPosition","newPosition","offsetSize","scrollTop","ignoreFocusEvent","onFocusAffixes","toFocus","scrollTo","offsetStep","hasAffixes","hasPrev","hasNext","scrollSize","clientSize","slideGroupProps","hasFilter","hasColor","contentStyles","updateLocation","onResize","contentBox","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","newContentEl","oldContentEl","scrollParents","viewportMargin","viewport","scrollBox","placement","checkOverflow","_placement","targetPoint","contentPoint","flipped","resets","overflows","axis","hasOverflowX","hasOverflowY","newPlacement","flip","newOverflows","offsetParent","scrollElements","scrollbarWidth","scrollableParent","slow","raf","ric","clearDelay","runDelay","isOpening","runOpenDelay","runCloseDelay","isTop","contentEl","activatorEl","isHovered","firstEnter","openOnFocus","openOnClick","cursorTarget","availableEvents","activatorEvents","contentEvents","menu","scrimEvents","activatorRef","targetRef","activator","getActivator","unbindActivatorProps","bindActivatorProps","hasContent","disableGlobalStack","createStackEntry","_zIndex","lastZIndex","globalTop","_isTop","localTop","targetElement","scrimEl","_onAfterLeave","scrimColor","stackStyles","teleportTarget","onClickOutside","animateClick","closeConditional","scrollParent","currentObj","childRefs","overlay","openChildren","onFocusIn","after","onActivatorKeydown","overlayProps","hasLabel","labelRef","floatingLabelRef","controlRef","isPlainOrUnderlined","targetRect","targetWidth","targetStyle","onKeydownClear","isOutlined","hasClear","counterValue","onIntersect","vInputRef","vFieldRef","inputRef","onControlMousedown","onControlClick","onClear","caretPosition","hasCounter","fieldProps","fieldClass","itemHeight","paddingTop","paddingBottom","markerRef","markerOffset","viewportHeight","hasInitialRender","updateTime","targetScrollIndex","getSize","updateOffsets","calculateVisibleItems","scrollToIndex","handleItemResize","prevHeight","prevMinHeight","calculateOffset","calculateIndex","lastScrollTop","scrollVelocity","lastScrollTime","handleScroll","scrollTime","handleScrollend","_calculateVisibleItems","startPx","endPx","topOverflow","bottomOverflow","computedItems","high","handleListeners","listRef","textFieldRef","isScrolling","scrollTimeout","onListScroll","finishScrolling","onListKeydown","ue","vTextFieldRef","vMenuRef","vVirtualScrollRef","_menu","transformed","selectedValues","selection","keyboardLookupPrefix","keyboardLookupLastTime","displayItems","menuDisabled","computedMenuProps","listEvents","onMousedownControl","KEYBOARD_LOOKUP_THRESHOLD","onModelUpdate","hasChips","hasList","textFieldProps","itemRef","onChipClose","hasSlot","slotContent","_createTextVNode","customFiltersLength","customMatches","defaultMatches","filterKeys","keyFilter","defaultMatchesLength","customMatchesLength","filteredItems","filteredMatches","transformedItems","_query","strQuery","originalItems","_filteredItems","_filteredMatches","getMatches","highlightResult","listHasFocus","selectionIndex","filteredItem","hasSelectionSlot","highlightFirst","onMousedownMenuIcon","selectionStart","originalSelectionIndex","onUpdateModelValue","isSelecting","badgeAttrs","density","firstElement","lastElement","contentProps","dialogProps","hasHeader","hasCardItem","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","touch","rootRef","isRtlReverse","transitionCount","transitionHeight","activeIndex","itemsLength","canMoveBack","canMoveForward","arrows","touchOptions","originalEvent","windowRef","slideTimeout","restartTimeout","startTimeout","windowProps","groupItem","isTransitioning","hasTransition","onAfterTransition","onBeforeTransition","onTransitionCancelled","onEnterTransition","imgProps","windowItemProps","hue","isInteracting","canvasRef","canvasWidth","canvasHeight","_dotPosition","dotPosition","dotStyles","updateDotPosition","handleMouseDown","handleMouseMove","handleMouseUp","coords","updateCanvas","canvas","saturationGradient","valueGradient","stripAlpha","enabledModes","inputs","getValue","getColor","vertical","roundValue","clamped","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","indexFromEnd","thumbSize","tickSize","trackSize","numTicks","thumbColor","trackColor","trackFillColor","mousePressed","startOffset","trackContainerRef","activeThumbRef","parseMouseMove","trackStart","trackLength","clickOffset","clickPos","handleStop","handleStart","moveListenerOptions","onMouseMove","onSliderMouseUp","onSliderTouchend","onSliderTouchstart","onSliderMousedown","percentage","showTicks","parsedTicks","hasLabels","slider","thumbLabel","elevationProps","pageup","pagedown","home","down","relevantKeys","multipliers","parseKeydown","_step","positionPercentage","trackFillColorClasses","trackFillColorStyles","trackColorClasses","trackColorStyles","startDir","endDir","backgroundStyles","trackFillWidth","trackFillStyles","computedTicks","directionValue","thumbContainerRef","roundedValue","trackStop","abortController","openEyeDropper","eyeDropper","colorHexValue","swatch","currentColor","externalChange","updateColor","sheetProps","cleared","_search","firstDayOfWeek","weeks","currentWeek","firstDayOfMonth","lastDayOfMonth","firstDayWeekIndex","lastDayWeekIndex","adjacentDay","lastDay","daysFromSunday","weekday","formatString","newDate","customFormat","comparing","d1w1","tv","diffTime","diffDays","internalModel","actionsUsed","actions","expandOnClick","expanded","expand","newExpanded","isExpanded","toggleExpand","disableSort","groupBy","sortBy","sortByWithGroups","isGroupOpen","toggleGroup","extractRows","dive","groupedItems","flatItems","page","itemsPerPage","oldOptions","stopIndex","pageCount","setItemsPerPage","nextPage","prevPage","setPage","paginatedItems","currentPage","allItems","_ref8","_ref9","allSelectable","currentPageSelectable","isSomeSelected","toggleSelect","selectAll","someSelected","allSelected","showSelectAll","mustSort","multiSort","toggleSort","column","newSortBy","isSorted","sortByItems","stringCollator","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","sortBRaw","customResult","selectable","sortedItems","paginatedItemsWithoutGroups","updateRef","maxButtons","firstItem","totalWidth","itemWidth","getMax","totalVisible","minButtons","even","rangeLength","rangeStart","setValue","controls","prevDisabled","nextDisabled","updateFocus","itemsPerPageOptions","paginationProps","added","whole","seenFixed","setFixed","parentFixed","setFixedOffset","fixedOffset","currentDepth","rowSize","fraction","internalHeaders","defaultItem","internalItem","sortFunctions","sortRawFunctions","filterFunctions","flatHeaders","getFixedStyles","getSortIcon","headerCellClasses","VDataTableHeaderCell","noPadding","headerProps","columnSlotName","columnSlotProps","VDataTableMobileHeaderCell","appendIcon","selectGroup","slotName","headerSlotName","cellProps","columnCellProps","displayValue","itemSlotProps","itemColumns","dataTableFooterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","itemsWithoutGroups","disableMonth","disableYear","disablePrev","disableNext","onClickPrev","onClickNext","onClickYear","onClickMonth","onClickAppend","weekDays","weeksInMonth","days","daysInMonth","week","genDays","today","isoDate","isAdjacent","isStart","isEnd","isSame","daysInWeek","weekNumbers","daysRef","rangeStop","isReverse","atMax","onRangeClick","datesInRange","nextDate","onMultipleClick","weekDay","btnProps","years","yearRef","viewMode","isReversing","headerTransition","minDate","maxDate","_date","onUpdateYear","onUpdateMonth","onClickDate","arrBefore","arrAfter","newMonth","newYear","pickerProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","onClickAction","hasActions","hasHeadline","hasMedia","expansionPanel","selectedIndices","isBeforeSelected","selectedIndex","isAfterSelected","expansionPanelTitleProps","expansionPanelTextProps","variantClass","hasPosition","orientation","vFabRef","totalBytes","totalBytesReadable","fileNames","fileCount","onClickPrepend","formRef","onReset","onSubmit","isHovering","rootEl","startStatus","endStatus","setScrollAmount","getScrollAmount","getScrollSize","getContainerSize","setStatus","getStatus","previousScrollSize","handleIntersect","_isIntersecting","intersecting","renderSide","hasStartIntersect","hasEndIntersect","intersectMode","toggle","isSticky","isStuck","stuckPosition","stickyStyles","layoutTop","bodyScroll","work","vprev","vcurr","touches","addMovement","endTouch","getVelocity","newest","absX","absY","oops","isTemporary","touchless","onTouchstart","onTouchmove","onTouchend","maybeDragging","isDragging","dragProgress","getProgress","touchX","touchY","touchZone","inTouchZone","inElement","velocity","vx","vy","dragStyles","isPersistent","scrimStyles","show","focusIndex","isValidNumber","onPaste","clipboardText","displayHeight","scrollPos","translate","sizeScale","startThumbRef","stopThumbRef","stopOffset","rating","increments","hoverIndex","itemState","isFilled","eventState","onMouseenter","onMouseleave","VRatingItem","showStar","createLabel","labelProps","bone","bones","isLoading","loadingProps","slideGroupItem","elapsed","countdown","timerRef","startY","hasLayout","activeTimeout","clearTimeout","onPointerenter","onPointerleave","locationClasses","autoDrawDuration","lineWidth","genBars","minX","maxX","minY","maxY","totalValues","minValue","gridX","gridY","horizonY","parsedLabels","labels","bars","gradientData","isCollinear","radiusForPoint","p0","vector","unitVector","lastLength","genPoints","pathRef","genPath","_genPath","totalHeight","lineProps","menuRef","menuProps","prevSlotProps","nextSlotProps","canEdit","hasError","hasCompleted","_model","_items","completeIcon","editIcon","errorIcon","editable","prevText","nextText","hasWindow","loaderColor","onTrackClick","sliderColorClasses","sliderColorStyles","sliderEl","updateSlider","prevEl","nextEl","prevBox","nextBox","xy","rightBottom","widthHeight","prevPos","initialScale","controlHeight","textareaRef","sizerRef","calculateInputHeight","fieldStyle","lineHeight","newHeight","_vModelText","lineColorClasses","lineColorStyles","dotSize","dotRef","sideClasses","truncateClasses","validation","modifierKeys","mutations","concreteComponent","walk","vuetify","blueprint","audioFile","audioCid","thumbnailFile","thumbnailCid","__awaiter","_arguments","__generator","verb","permits","permitCount","nextResolver","Lock_1","Lock","Semaphore_1","orbiter","siteId","swarmId","variableIds","constellation","trustedSitesSiteIdVariableId","trustedSitesNameVariableId","featuredReleasesReleaseIdVar","featuredReleasesStartTimeVar","featuredReleasesEndTimeVar","blockedReleasesReleaseIdVar","releasesFileVar","releasesThumbnailVar","releasesAuthorVar","releasesMetadataVar","releasesContentNameVar","releasesCategoryVar","releasesStatusVar","collectionsNameVar","collectionsAuthorVar","collectionsMetadataVar","collectionsReleasesVar","collectionsThumbnailVar","collectionsCategoryVar","collectionsStatusVar","releasesDbFormat","tableKey","modDbId","configured","fFinal","swarmSchema","blocked","desiredNResults","releases","collections","featured","siteInfos","lock","blockedCids","fFollowTrustedSites","sites","sitesList","newSites","obsoleteSites","site","fsForgetSite","siteName","fForget","forgetTrustedSites","releaseId","collectionId","collectionReleases","language","accountId","endTime","userId","resolveModType","admin","authId","elementId","orbiterApp","OrbiterApp","VITE_TRUSTED_SITES_SITE_ID_VAR_ID","VITE_TRUSTED_SITES_NAME_VAR_ID","VITE_RELEASES_FILE_VAR_ID","VITE_RELEASES_CATEGORY_VAR_ID","VITE_RELEASES_AUTHOR_VAR_ID","VITE_RELEASES_CONTENT_NAME_VAR_ID","VITE_RELEASES_METADATA_VAR_ID","VITE_RELEASES_THUMBNAIL_VAR_ID","VITE_RELEASES_STATUS_VAR_ID","VITE_COLLECTIONS_AUTHOR_VAR_ID","VITE_COLLECTIONS_METADATA_VAR_ID","VITE_COLLECTIONS_NAME_VAR_ID","VITE_COLLECTIONS_RELEASES_VAR_ID","VITE_COLLECTIONS_THUMBNAIL_VAR_ID","VITE_COLLECTIONS_CATEGORY_VAR_ID","VITE_COLLECTIONS_STATUS_VAR_ID","VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID","VITE_FEATURED_RELEASES_START_TIME_VAR_ID","VITE_FEATURED_RELEASES_END_TIME_VAR_ID","appli","newParams","parseQuery","currentLocation","hashPos","searchPos","stringifyQuery","pathname","aLastIndex","bLastIndex","fromSegments","toSegments","lastToSegment","toPosition","NavigationType","NavigationDirection","baseEl","docRect","elRect","scrollToOptions","positionEl","isIdSelector","scroll","slicePos","pathFromHash","historyState","replace","teardowns","pauseState","popStateHandler","fromState","pauseListeners","teardown","beforeUnloadListener","history","back","replaced","computeScroll","changeLocation","hashIndex","currentState","historyNavigation","historyListeners","triggerListeners","routerHistory","NavigationFailureType","segmentScores","tokenIndex","subSegmentScore","repeatable","subPattern","avoidDuplicatedSlash","param","aScore","bScore","crash","previousState","finalizeSegment","customRe","consumeBuffer","addCharToBuffer","routes","globalOptions","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizedRecords","originalMatcher","normalizedRecord","parentPath","connectingSlash","removeRoute","insertMatcher","matcherRef","getRoutes","parentMatcher","clearRoutes","propsObject","partialOptions","insertionAncestor","ancestor","searchParam","eqPos","normalizedQuery","runWithContext","enterCallbackArray","guardReturn","guardCall","guardType","guards","rawComponent","componentPromise","resolvedComponent","currentRoute","activeRecordIndex","routeMatched","currentMatched","parentRecordPath","isExactActive","navigate","elClass","innerValue","outerValue","propClass","globalClass","defaultClass","injectedRoute","routeToDisplay","injectedDepth","initialDepth","matchedRoute","matchedRouteRef","viewRef","oldInstance","currentName","ViewComponent","routePropsOption","routeProps","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","matcherLocation","targetParams","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","redirect","newTargetLocation","redirectedFrom","shouldRedirect","toLocation","failure","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","installedApps","leavingRecords","updatingRecords","enteringRecords","canceledNavigationCheck","runGuardQueue","beforeEnter","isPush","isFirstNavigation","removeHistoryListener","setupListeners","_from","readyHandlers","errorListeners","isReady","reactiveRoute","unmountApp","recordFrom","recordTo","_hoisted_1","_createElementVNode","_openBlock","_createBlock","_component_v_container","_withCtx","fonc","défaut","stab","dynamique","définis","argsFinaux","profilePic","follow","defaultAvatar","svg","__props","userAvatar","featuredReleases","staticData","siteConfigured","siteNotConfigured","generatingDb","generatedSiteId","generatedVariableIds","generatingEnvFile","generateDb","development","envFileText","trustedSitesSiteIdVar","trustedSitesNameVar","downloadEnvFile","textCopied","copyGeneratedEnvFile","acceptNewModDb","orbiterReady","openAdvanced","contentCID","releaseCategory","releaseName","thumbnailCID","releaseMetadata","musicReleaseMetadata","movieReleaseMetadata","loading","readyToSave","metadataValue","handleOnSubmit","contentCIDValue","authorValue","releaseNameValue","releaseCategoryValue","licenseTypes","musicReleaseTypes","musicFileFormats","musicMediaFormats","movieReleaseTypes","propsComponent","videoPlayerRef","isPlaying","videoDuration","seekingTrack","pause","togglePlay","play","toggleVolume","unmute","mute","updateProgress","toggleFullscreen","canPlay","HomePage","AccountPage","UploadPage","InitPage","ReleasePage","App"],"ignoreList":[0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1766,1767,1768,1769,1776,1778,1779,1786],"sources":["../../../../node_modules/vite-plugin-node-polyfills/shims/process/dist/index.js","../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js","../../index.html?html-proxy&index=0.js","../../../../node_modules/vite-plugin-node-polyfills/shims/global/dist/index.js","../../../../node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../../node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../../node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../../node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../src/constants/navigation.ts","../../../../node_modules/vuetify/lib/util/propsFactory.mjs","../../../../node_modules/vuetify/lib/composables/component.mjs","../../../../node_modules/vuetify/lib/util/globals.mjs","../../../../node_modules/vuetify/lib/util/helpers.mjs","../../../../node_modules/vuetify/lib/util/anchor.mjs","../../../../node_modules/vuetify/lib/util/box.mjs","../../../../node_modules/vuetify/lib/util/animation.mjs","../../../../node_modules/vuetify/lib/util/bindProps.mjs","../../../../node_modules/vuetify/lib/util/color/APCA.mjs","../../../../node_modules/vuetify/lib/util/console.mjs","../../../../node_modules/vuetify/lib/util/color/transformCIELAB.mjs","../../../../node_modules/vuetify/lib/util/color/transformSRGB.mjs","../../../../node_modules/vuetify/lib/util/colorUtils.mjs","../../../../node_modules/vuetify/lib/util/getCurrentInstance.mjs","../../../../node_modules/vuetify/lib/util/injectSelf.mjs","../../../../node_modules/vuetify/lib/composables/defaults.mjs","../../../../node_modules/vuetify/lib/util/defineComponent.mjs","../../../../node_modules/vuetify/lib/util/createSimpleFunctional.mjs","../../../../node_modules/vuetify/lib/util/dom.mjs","../../../../node_modules/vuetify/lib/util/easing.mjs","../../../../node_modules/vuetify/lib/util/events.mjs","../../../../node_modules/vuetify/lib/util/getScrollParent.mjs","../../../../node_modules/vuetify/lib/util/isFixedPosition.mjs","../../../../node_modules/vuetify/lib/util/useRender.mjs","../../../../node_modules/vuetify/lib/composables/tag.mjs","../../../../node_modules/vuetify/lib/components/VToolbar/VToolbarTitle.mjs","../../../../node_modules/vuetify/lib/components/transitions/createTransition.mjs","../../../../node_modules/vuetify/lib/components/transitions/expand-transition.mjs","../../../../node_modules/vuetify/lib/components/transitions/dialog-transition.mjs","../../../../node_modules/vuetify/lib/components/transitions/index.mjs","../../../../node_modules/vuetify/lib/components/VDefaultsProvider/VDefaultsProvider.mjs","../../../../node_modules/vuetify/lib/composables/dimensions.mjs","../../../../node_modules/vuetify/lib/components/VResponsive/VResponsive.mjs","../../../../node_modules/vuetify/lib/composables/color.mjs","../../../../node_modules/vuetify/lib/composables/rounded.mjs","../../../../node_modules/vuetify/lib/composables/transition.mjs","../../../../node_modules/vuetify/lib/directives/intersect/index.mjs","../../../../node_modules/vuetify/lib/components/VImg/VImg.mjs","../../../../node_modules/vuetify/lib/composables/border.mjs","../../../../node_modules/vuetify/lib/composables/elevation.mjs","../../../../node_modules/vuetify/lib/composables/toggleScope.mjs","../../../../node_modules/vuetify/lib/composables/proxiedModel.mjs","../../../../node_modules/vuetify/lib/locale/en.mjs","../../../../node_modules/vuetify/lib/locale/adapters/vuetify.mjs","../../../../node_modules/vuetify/lib/composables/locale.mjs","../../../../node_modules/vuetify/lib/composables/theme.mjs","../../../../node_modules/vuetify/lib/components/VToolbar/VToolbar.mjs","../../../../node_modules/vuetify/lib/composables/resizeObserver.mjs","../../../../node_modules/vuetify/lib/composables/layout.mjs","../../../../node_modules/vuetify/lib/composables/scroll.mjs","../../../../node_modules/vuetify/lib/composables/ssrBoot.mjs","../../../../node_modules/vuetify/lib/components/VAppBar/VAppBar.mjs","../../../../node_modules/vuetify/lib/composables/density.mjs","../../../../node_modules/vuetify/lib/composables/variant.mjs","../../../../node_modules/vuetify/lib/components/VBtnGroup/VBtnGroup.mjs","../../../../node_modules/vuetify/lib/composables/group.mjs","../../../../node_modules/vuetify/lib/components/VBtnToggle/VBtnToggle.mjs","../../../../node_modules/vuetify/lib/iconsets/mdi.mjs","../../../../node_modules/vuetify/lib/composables/icons.mjs","../../../../node_modules/vuetify/lib/composables/size.mjs","../../../../node_modules/vuetify/lib/components/VIcon/VIcon.mjs","../../../../node_modules/vuetify/lib/composables/intersectionObserver.mjs","../../../../node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.mjs","../../../../node_modules/vuetify/lib/composables/location.mjs","../../../../node_modules/vuetify/lib/components/VProgressLinear/VProgressLinear.mjs","../../../../node_modules/vuetify/lib/composables/loader.mjs","../../../../node_modules/vuetify/lib/composables/position.mjs","../../../../node_modules/vuetify/lib/composables/router.mjs","../../../../node_modules/vuetify/lib/composables/selectLink.mjs","../../../../node_modules/vuetify/lib/directives/ripple/index.mjs","../../../../node_modules/vuetify/lib/components/VBtn/VBtn.mjs","../../../../node_modules/vuetify/lib/components/VAppBar/VAppBarNavIcon.mjs","../../../../node_modules/vuetify/lib/components/VAppBar/VAppBarTitle.mjs","../../../../node_modules/vuetify/lib/components/VDivider/VDivider.mjs","../../../../node_modules/vuetify/lib/components/VFooter/VFooter.mjs","../../../../node_modules/vuetify/lib/components/VGrid/VContainer.mjs","../../../../node_modules/vuetify/lib/composables/display.mjs","../../../../node_modules/vuetify/lib/components/VGrid/VCol.mjs","../../../../node_modules/vuetify/lib/components/VGrid/VRow.mjs","../../../../node_modules/vuetify/lib/components/VGrid/VSpacer.mjs","../../../../node_modules/vuetify/lib/components/VList/list.mjs","../../../../node_modules/vuetify/lib/composables/nested/activeStrategies.mjs","../../../../node_modules/vuetify/lib/composables/nested/openStrategies.mjs","../../../../node_modules/vuetify/lib/composables/nested/selectStrategies.mjs","../../../../node_modules/vuetify/lib/composables/nested/nested.mjs","../../../../node_modules/vuetify/lib/components/VList/VListGroup.mjs","../../../../node_modules/vuetify/lib/components/VList/VListItemSubtitle.mjs","../../../../node_modules/vuetify/lib/components/VList/VListItemTitle.mjs","../../../../node_modules/vuetify/lib/components/VAvatar/VAvatar.mjs","../../../../node_modules/vuetify/lib/components/VList/VListItem.mjs","../../../../node_modules/vuetify/lib/components/VList/VListSubheader.mjs","../../../../node_modules/vuetify/lib/components/VList/VListChildren.mjs","../../../../node_modules/vuetify/lib/composables/list-items.mjs","../../../../node_modules/vuetify/lib/components/VList/VList.mjs","../../../../node_modules/vuetify/lib/components/VList/VListImg.mjs","../../../../node_modules/vuetify/lib/components/VList/VListItemAction.mjs","../../../../node_modules/vuetify/lib/components/VList/VListItemMedia.mjs","../../../../node_modules/vuetify/lib/components/VSheet/VSheet.mjs","../../src/components/layout/appFooter.vue","../../../../node_modules/vuetify/lib/components/VApp/VApp.mjs","../../../../node_modules/vuetify/lib/components/VMain/VMain.mjs","../../../../node_modules/events/events.js","../../../../node_modules/eventemitter3/index.js","../../../../node_modules/p-timeout/index.js","../../../../node_modules/p-queue/dist/lower-bound.js","../../../../node_modules/p-queue/dist/priority-queue.js","../../../../node_modules/p-queue/dist/index.js","../../../../node_modules/p-defer/index.js","../../../../node_modules/it-pushable/dist/src/fifo.js","../../../../node_modules/it-pushable/dist/src/index.js","../../../../node_modules/it-merge/dist/src/index.js","../../../../node_modules/it-pipe/dist/src/index.js","../../../../node_modules/retimer/time-browser.js","../../../../node_modules/retimer/retimer.js","../../../../node_modules/timeout-abort-controller/index.js","../../../../node_modules/@orbitdb/core/src/utils/path-join.js","../../../../node_modules/@orbitdb/core/src/sync.js","../../../../node_modules/inherits/inherits_browser.js","../../../../node_modules/lru/index.js","../../../../node_modules/@orbitdb/core/src/oplog/clock.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/bytes.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/vendor/base-x.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/bases/base.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/bases/base32.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/bases/base58.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/vendor/varint.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/varint.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/hashes/digest.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/cid.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/hashes/hasher.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/block.js","../../../../node_modules/cborg/lib/is.js","../../../../node_modules/cborg/lib/token.js","../../../../node_modules/cborg/lib/byte-utils.js","../../../../node_modules/cborg/lib/bl.js","../../../../node_modules/cborg/lib/common.js","../../../../node_modules/cborg/lib/0uint.js","../../../../node_modules/cborg/lib/1negint.js","../../../../node_modules/cborg/lib/2bytes.js","../../../../node_modules/cborg/lib/3string.js","../../../../node_modules/cborg/lib/4array.js","../../../../node_modules/cborg/lib/5map.js","../../../../node_modules/cborg/lib/6tag.js","../../../../node_modules/cborg/lib/7float.js","../../../../node_modules/cborg/lib/jump.js","../../../../node_modules/cborg/lib/encode.js","../../../../node_modules/cborg/lib/decode.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@ipld/dag-cbor/src/index.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/hashes/sha2-browser.js","../../../../node_modules/@orbitdb/core/src/oplog/entry.js","../../../../node_modules/@orbitdb/core/src/storage/memory.js","../../../../node_modules/@orbitdb/core/src/oplog/heads.js","../../../../node_modules/@orbitdb/core/src/oplog/conflict-resolution.js","../../../../node_modules/@orbitdb/core/src/oplog/log.js","../../../../node_modules/@orbitdb/core/src/storage/composed.js","../../../../node_modules/it-drain/dist/src/index.js","../../../../node_modules/@orbitdb/core/src/storage/ipfs-block.js","../../../../node_modules/level-supports/index.js","../../../../node_modules/module-error/index.js","../../../../node_modules/level-transcoder/lib/text-endec.js","../../../../node_modules/level-transcoder/lib/encoding.js","../../../../node_modules/level-transcoder/lib/formats.js","../../../../node_modules/level-transcoder/lib/encodings.js","../../../../node_modules/level-transcoder/index.js","../../../../node_modules/catering/next-tick-browser.js","../../../../node_modules/catering/index.js","../../../../node_modules/abstract-level/lib/common.js","../../../../node_modules/abstract-level/abstract-iterator.js","../../../../node_modules/abstract-level/lib/default-kv-iterator.js","../../../../node_modules/abstract-level/lib/deferred-iterator.js","../../../../node_modules/abstract-level/abstract-chained-batch.js","../../../../node_modules/abstract-level/lib/default-chained-batch.js","../../../../node_modules/abstract-level/lib/range-options.js","../../../../node_modules/queue-microtask/index.js","../../../../node_modules/abstract-level/lib/next-tick-browser.js","../../../../node_modules/abstract-level/lib/abstract-sublevel-iterator.js","../../../../node_modules/abstract-level/lib/abstract-sublevel.js","../../../../node_modules/abstract-level/abstract-level.js","../../../../node_modules/abstract-level/index.js","../../../../node_modules/run-parallel-limit/index.js","../../../../node_modules/browser-level/util/key-range.js","../../../../node_modules/browser-level/util/deserialize.js","../../../../node_modules/browser-level/iterator.js","../../../../node_modules/browser-level/util/clear.js","../../../../node_modules/browser-level/index.js","../../../../node_modules/level/browser.js","../../../../node_modules/@orbitdb/core/src/storage/level.js","../../../../node_modules/@orbitdb/core/src/storage/lru.js","../../../../node_modules/@orbitdb/core/src/database.js","../../../../node_modules/@orbitdb/core/src/databases/documents.js","../../../../node_modules/@orbitdb/core/src/databases/events.js","../../../../node_modules/@orbitdb/core/src/databases/keyvalue.js","../../../../node_modules/@orbitdb/core/src/databases/index.js","../../../../node_modules/@libp2p/interface/dist/src/connection/index.js","../../../../node_modules/@libp2p/interface/dist/src/content-routing/index.js","../../../../node_modules/@libp2p/interface/dist/src/peer-discovery/index.js","../../../../node_modules/@libp2p/interface/dist/src/peer-id/index.js","../../../../node_modules/@libp2p/interface/dist/src/peer-routing/index.js","../../../../node_modules/@libp2p/interface/dist/src/peer-store/tags.js","../../../../node_modules/@libp2p/interface/dist/src/pubsub/index.js","../../../../node_modules/@libp2p/interface/dist/src/transport/index.js","../../../../node_modules/@libp2p/interface/dist/src/errors.js","../../../../node_modules/@libp2p/interface/dist/src/events.js","../../../../node_modules/@libp2p/interface/dist/src/event-target.js","../../../../node_modules/@libp2p/interface/dist/src/startable.js","../../../../node_modules/@libp2p/interface/dist/src/index.js","../../../../node_modules/node-forge/lib/forge.js","../../../../node_modules/node-forge/lib/baseN.js","../../../../node_modules/node-forge/lib/util.js","../../../../node_modules/node-forge/lib/cipher.js","../../../../node_modules/node-forge/lib/cipherModes.js","../../../../node_modules/node-forge/lib/aes.js","../../../../node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/multiformats/dist/src/bases/base10.js","../../../../node_modules/multiformats/dist/src/bases/base16.js","../../../../node_modules/multiformats/dist/src/bases/base2.js","../../../../node_modules/multiformats/dist/src/bases/base256emoji.js","../../../../node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/multiformats/dist/src/bases/base36.js","../../../../node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/multiformats/dist/src/bases/base8.js","../../../../node_modules/multiformats/dist/src/bases/identity.js","../../../../node_modules/multiformats/dist/src/codecs/json.js","../../../../node_modules/multiformats/dist/src/codecs/raw.js","../../../../node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/multiformats/dist/src/varint.js","../../../../node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/multiformats/dist/src/hashes/identity.js","../../../../node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/multiformats/dist/src/cid.js","../../../../node_modules/multiformats/dist/src/basics.js","../../../../node_modules/uint8arrays/dist/src/alloc.js","../../../../node_modules/uint8arrays/dist/src/util/bases.js","../../../../node_modules/uint8arrays/dist/src/from-string.js","../../../../node_modules/uint8arrays/dist/src/to-string.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/webcrypto.js","../../../../node_modules/node-forge/lib/oids.js","../../../../node_modules/node-forge/lib/asn1.js","../../../../node_modules/node-forge/lib/des.js","../../../../node_modules/node-forge/lib/md.js","../../../../node_modules/node-forge/lib/hmac.js","../../../../node_modules/safe-buffer/index.js","../../../../node_modules/randombytes/browser.js","../../../../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../../../../node_modules/has-symbols/shams.js","../../../../node_modules/has-tostringtag/shams.js","../../../../node_modules/es-errors/index.js","../../../../node_modules/es-errors/eval.js","../../../../node_modules/es-errors/range.js","../../../../node_modules/es-errors/ref.js","../../../../node_modules/es-errors/syntax.js","../../../../node_modules/es-errors/type.js","../../../../node_modules/es-errors/uri.js","../../../../node_modules/has-symbols/index.js","../../../../node_modules/has-proto/index.js","../../../../node_modules/function-bind/implementation.js","../../../../node_modules/function-bind/index.js","../../../../node_modules/hasown/index.js","../../../../node_modules/get-intrinsic/index.js","../../../../node_modules/es-define-property/index.js","../../../../node_modules/gopd/index.js","../../../../node_modules/define-data-property/index.js","../../../../node_modules/has-property-descriptors/index.js","../../../../node_modules/set-function-length/index.js","../../../../node_modules/call-bind/index.js","../../../../node_modules/call-bind/callBound.js","../../../../node_modules/is-arguments/index.js","../../../../node_modules/is-generator-function/index.js","../../../../node_modules/is-callable/index.js","../../../../node_modules/for-each/index.js","../../../../node_modules/possible-typed-array-names/index.js","../../../../node_modules/available-typed-arrays/index.js","../../../../node_modules/which-typed-array/index.js","../../../../node_modules/is-typed-array/index.js","../../../../node_modules/util/support/types.js","../../../../node_modules/util/support/isBufferBrowser.js","../../../../node_modules/util/util.js","../../../../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../../../node_modules/readable-stream/lib/internal/streams/destroy.js","../../../../node_modules/readable-stream/errors-browser.js","../../../../node_modules/readable-stream/lib/internal/streams/state.js","../../../../node_modules/util-deprecate/browser.js","../../../../node_modules/readable-stream/lib/_stream_writable.js","../../../../node_modules/readable-stream/lib/_stream_duplex.js","../../../../node_modules/string_decoder/lib/string_decoder.js","../../../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../../../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../../../../node_modules/readable-stream/lib/internal/streams/from-browser.js","../../../../node_modules/readable-stream/lib/_stream_readable.js","../../../../node_modules/readable-stream/lib/_stream_transform.js","../../../../node_modules/readable-stream/lib/_stream_passthrough.js","../../../../node_modules/readable-stream/lib/internal/streams/pipeline.js","../../../../node_modules/readable-stream/readable-browser.js","../../../../node_modules/hash-base/index.js","../../../../node_modules/md5.js/index.js","../../../../node_modules/ripemd160/index.js","../../../../node_modules/sha.js/hash.js","../../../../node_modules/sha.js/sha.js","../../../../node_modules/sha.js/sha1.js","../../../../node_modules/sha.js/sha256.js","../../../../node_modules/sha.js/sha224.js","../../../../node_modules/sha.js/sha512.js","../../../../node_modules/sha.js/sha384.js","../../../../node_modules/sha.js/index.js","../../../../node_modules/stream-browserify/index.js","../../../../node_modules/cipher-base/index.js","../../../../node_modules/create-hash/browser.js","../../../../node_modules/create-hmac/legacy.js","../../../../node_modules/create-hash/md5.js","../../../../node_modules/create-hmac/browser.js","../../../../node_modules/browserify-sign/algos.js","../../../../node_modules/pbkdf2/lib/precondition.js","../../../../node_modules/pbkdf2/lib/default-encoding.js","../../../../node_modules/pbkdf2/lib/to-buffer.js","../../../../node_modules/pbkdf2/lib/sync-browser.js","../../../../node_modules/pbkdf2/lib/async.js","../../../../node_modules/pbkdf2/browser.js","../../../../node_modules/des.js/lib/des/utils.js","../../../../node_modules/minimalistic-assert/index.js","../../../../node_modules/des.js/lib/des/cipher.js","../../../../node_modules/des.js/lib/des/des.js","../../../../node_modules/des.js/lib/des/cbc.js","../../../../node_modules/des.js/lib/des/ede.js","../../../../node_modules/des.js/lib/des.js","../../../../node_modules/browserify-des/index.js","../../../../node_modules/browserify-aes/modes/ecb.js","../../../../node_modules/buffer-xor/index.js","../../../../node_modules/browserify-aes/modes/cbc.js","../../../../node_modules/browserify-aes/modes/cfb.js","../../../../node_modules/browserify-aes/modes/cfb8.js","../../../../node_modules/browserify-aes/modes/cfb1.js","../../../../node_modules/browserify-aes/modes/ofb.js","../../../../node_modules/browserify-aes/incr32.js","../../../../node_modules/browserify-aes/modes/ctr.js","../../../../node_modules/browserify-aes/modes/index.js","../../../../node_modules/browserify-aes/aes.js","../../../../node_modules/browserify-aes/ghash.js","../../../../node_modules/browserify-aes/authCipher.js","../../../../node_modules/browserify-aes/streamCipher.js","../../../../node_modules/evp_bytestokey/index.js","../../../../node_modules/browserify-aes/encrypter.js","../../../../node_modules/browserify-aes/decrypter.js","../../../../node_modules/browserify-aes/browser.js","../../../../node_modules/browserify-des/modes.js","../../../../node_modules/browserify-cipher/browser.js","../../../../node_modules/bn.js/lib/bn.js","../../../../node_modules/brorand/index.js","../../../../node_modules/miller-rabin/lib/mr.js","../../../../node_modules/diffie-hellman/lib/generatePrime.js","../../../../node_modules/diffie-hellman/lib/dh.js","../../../../node_modules/diffie-hellman/browser.js","../../../../node_modules/process-nextick-args/index.js","../../../../node_modules/browserify-sign/node_modules/isarray/index.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/index.js","../../../../node_modules/core-util-is/lib/util.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/BufferList.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","../../../../node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js","../../../../node_modules/browserify-rsa/index.js","../../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../../node_modules/elliptic/lib/elliptic/utils.js","../../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../../node_modules/elliptic/lib/elliptic/curve/mont.js","../../../../node_modules/elliptic/lib/elliptic/curve/edwards.js","../../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../../node_modules/hash.js/lib/hash/utils.js","../../../../node_modules/hash.js/lib/hash/common.js","../../../../node_modules/hash.js/lib/hash/sha/common.js","../../../../node_modules/hash.js/lib/hash/sha/1.js","../../../../node_modules/hash.js/lib/hash/sha/256.js","../../../../node_modules/hash.js/lib/hash/sha/224.js","../../../../node_modules/hash.js/lib/hash/sha/512.js","../../../../node_modules/hash.js/lib/hash/sha/384.js","../../../../node_modules/hash.js/lib/hash/sha.js","../../../../node_modules/hash.js/lib/hash/ripemd.js","../../../../node_modules/hash.js/lib/hash/hmac.js","../../../../node_modules/hash.js/lib/hash.js","../../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../../../../node_modules/elliptic/lib/elliptic/curves.js","../../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../../node_modules/elliptic/lib/elliptic/eddsa/key.js","../../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../../../../node_modules/elliptic/lib/elliptic/eddsa/index.js","../../../../node_modules/elliptic/lib/elliptic.js","../../../../node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","../../../../node_modules/vm-browserify/index.js","../../../../node_modules/asn1.js/lib/asn1/api.js","../../../../node_modules/asn1.js/lib/asn1/base/reporter.js","../../../../node_modules/asn1.js/lib/asn1/base/buffer.js","../../../../node_modules/asn1.js/lib/asn1/base/node.js","../../../../node_modules/asn1.js/lib/asn1/base/index.js","../../../../node_modules/asn1.js/lib/asn1/constants/der.js","../../../../node_modules/asn1.js/lib/asn1/constants/index.js","../../../../node_modules/asn1.js/lib/asn1/decoders/der.js","../../../../node_modules/asn1.js/lib/asn1/decoders/pem.js","../../../../node_modules/asn1.js/lib/asn1/decoders/index.js","../../../../node_modules/asn1.js/lib/asn1/encoders/der.js","../../../../node_modules/asn1.js/lib/asn1/encoders/pem.js","../../../../node_modules/asn1.js/lib/asn1/encoders/index.js","../../../../node_modules/asn1.js/lib/asn1.js","../../../../node_modules/parse-asn1/certificate.js","../../../../node_modules/parse-asn1/asn1.js","../../../../node_modules/parse-asn1/fixProc.js","../../../../node_modules/parse-asn1/index.js","../../../../node_modules/browserify-sign/browser/sign.js","../../../../node_modules/browserify-sign/browser/verify.js","../../../../node_modules/browserify-sign/browser/index.js","../../../../node_modules/create-ecdh/browser.js","../../../../node_modules/public-encrypt/mgf.js","../../../../node_modules/public-encrypt/xor.js","../../../../node_modules/public-encrypt/withPublic.js","../../../../node_modules/public-encrypt/publicEncrypt.js","../../../../node_modules/public-encrypt/privateDecrypt.js","../../../../node_modules/public-encrypt/browser.js","../../../../node_modules/randomfill/browser.js","../../../../node_modules/crypto-browserify/index.js","../../../../node_modules/node-forge/lib/pbkdf2.js","../../../../node_modules/node-forge/lib/pem.js","../../../../node_modules/node-forge/lib/sha256.js","../../../../node_modules/node-forge/lib/prng.js","../../../../node_modules/node-forge/lib/random.js","../../../../node_modules/node-forge/lib/rc2.js","../../../../node_modules/node-forge/lib/jsbn.js","../../../../node_modules/node-forge/lib/sha1.js","../../../../node_modules/node-forge/lib/pkcs1.js","../../../../node_modules/node-forge/lib/prime.js","../../../../node_modules/node-forge/lib/rsa.js","../../../../node_modules/node-forge/lib/pbe.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/hashes/identity.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/uint8arrays/dist/src/equals.js","../../../../node_modules/uint8arrays/dist/src/util/as-uint8array.js","../../../../node_modules/uint8arrays/dist/src/concat.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/util.js","../../../../node_modules/@noble/hashes/esm/_assert.js","../../../../node_modules/@noble/hashes/esm/crypto.js","../../../../node_modules/@noble/hashes/esm/utils.js","../../../../node_modules/@noble/hashes/esm/_md.js","../../../../node_modules/@noble/hashes/esm/_u64.js","../../../../node_modules/@noble/hashes/esm/sha512.js","../../../../node_modules/@noble/curves/esm/abstract/utils.js","../../../../node_modules/@noble/curves/esm/abstract/modular.js","../../../../node_modules/@noble/curves/esm/abstract/curve.js","../../../../node_modules/@noble/curves/esm/abstract/edwards.js","../../../../node_modules/@noble/curves/esm/abstract/montgomery.js","../../../../node_modules/@noble/curves/esm/ed25519.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/ed25519-browser.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/ciphers/aes-gcm.browser.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/exporter.js","../../../../node_modules/uint8-varint/dist/src/index.js","../../../../node_modules/protons-runtime/dist/src/utils/float.js","../../../../node_modules/protons-runtime/dist/src/utils/longbits.js","../../../../node_modules/protons-runtime/dist/src/utils/utf8.js","../../../../node_modules/protons-runtime/dist/src/utils/reader.js","../../../../node_modules/protons-runtime/dist/src/decode.js","../../../../node_modules/protons-runtime/dist/src/utils/pool.js","../../../../node_modules/protons-runtime/dist/src/utils/writer.js","../../../../node_modules/protons-runtime/dist/src/encode.js","../../../../node_modules/protons-runtime/dist/src/codec.js","../../../../node_modules/protons-runtime/dist/src/codecs/enum.js","../../../../node_modules/protons-runtime/dist/src/codecs/message.js","../../../../node_modules/protons-runtime/dist/src/index.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/keys.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/ed25519-class.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/ecdh-browser.js","../../../../node_modules/node-forge/lib/sha512.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/random-bytes.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/jwk2pem.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/rsa-utils.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/rsa-browser.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/rsa-class.js","../../../../node_modules/@noble/hashes/esm/sha256.js","../../../../node_modules/@noble/hashes/esm/hmac.js","../../../../node_modules/@noble/curves/esm/abstract/weierstrass.js","../../../../node_modules/@noble/curves/esm/_shortw_utils.js","../../../../node_modules/@noble/curves/esm/secp256k1.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/secp256k1-browser.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/secp256k1-class.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/index.js","../../../../node_modules/uint8arrays/dist/src/compare.js","../../../../node_modules/@orbitdb/core/src/key-store.js","../../../../node_modules/@orbitdb/core/src/identities/identity.js","../../../../node_modules/@orbitdb/core/src/identities/providers/publickey.js","../../../../node_modules/@orbitdb/core/src/identities/providers/index.js","../../../../node_modules/@orbitdb/core/src/identities/identities.js","../../../../node_modules/@orbitdb/core/src/address.js","../../../../node_modules/@orbitdb/core/src/manifest-store.js","../../../../node_modules/@orbitdb/core/src/utils/create-id.js","../../../../node_modules/@orbitdb/core/src/access-controllers/ipfs.js","../../../../node_modules/@orbitdb/core/src/access-controllers/orbitdb.js","../../../../node_modules/@orbitdb/core/src/access-controllers/index.js","../../../../node_modules/@orbitdb/core/src/orbitdb.js","../../../../node_modules/uuid/dist/esm-browser/rng.js","../../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../../node_modules/uuid/dist/esm-browser/native.js","../../../../node_modules/uuid/dist/esm-browser/v4.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/block.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/@constl/ipa/dist/accès/consts.js","../../../../node_modules/@orbitdb/feed-db/dist/feed.js","../../../../node_modules/@orbitdb/feed-db/dist/utils.js","../../../../node_modules/@orbitdb/set-db/dist/set.js","../../../../node_modules/@orbitdb/set-db/dist/utils.js","../../../../node_modules/@orbitdb/ordered-keyvalue-db/dist/ordered-keyvalue.js","../../../../node_modules/@orbitdb/ordered-keyvalue-db/dist/utils.js","../../../../node_modules/ajv/dist/compile/codegen/code.js","../../../../node_modules/ajv/dist/compile/codegen/scope.js","../../../../node_modules/ajv/dist/compile/codegen/index.js","../../../../node_modules/ajv/dist/compile/util.js","../../../../node_modules/ajv/dist/compile/names.js","../../../../node_modules/ajv/dist/compile/errors.js","../../../../node_modules/ajv/dist/compile/validate/boolSchema.js","../../../../node_modules/ajv/dist/compile/rules.js","../../../../node_modules/ajv/dist/compile/validate/applicability.js","../../../../node_modules/ajv/dist/compile/validate/dataType.js","../../../../node_modules/ajv/dist/compile/validate/defaults.js","../../../../node_modules/ajv/dist/vocabularies/code.js","../../../../node_modules/ajv/dist/compile/validate/keyword.js","../../../../node_modules/ajv/dist/compile/validate/subschema.js","../../../../node_modules/fast-deep-equal/index.js","../../../../node_modules/json-schema-traverse/index.js","../../../../node_modules/ajv/dist/compile/resolve.js","../../../../node_modules/ajv/dist/compile/validate/index.js","../../../../node_modules/ajv/dist/runtime/validation_error.js","../../../../node_modules/ajv/dist/compile/ref_error.js","../../../../node_modules/ajv/dist/compile/index.js","../../../../node_modules/fast-uri/lib/scopedChars.js","../../../../node_modules/fast-uri/lib/utils.js","../../../../node_modules/fast-uri/lib/schemes.js","../../../../node_modules/fast-uri/index.js","../../../../node_modules/ajv/dist/runtime/uri.js","../../../../node_modules/ajv/dist/core.js","../../../../node_modules/ajv/dist/vocabularies/core/id.js","../../../../node_modules/ajv/dist/vocabularies/core/ref.js","../../../../node_modules/ajv/dist/vocabularies/core/index.js","../../../../node_modules/ajv/dist/vocabularies/validation/limitNumber.js","../../../../node_modules/ajv/dist/vocabularies/validation/multipleOf.js","../../../../node_modules/ajv/dist/runtime/ucs2length.js","../../../../node_modules/ajv/dist/vocabularies/validation/limitLength.js","../../../../node_modules/ajv/dist/vocabularies/validation/pattern.js","../../../../node_modules/ajv/dist/vocabularies/validation/limitProperties.js","../../../../node_modules/ajv/dist/vocabularies/validation/required.js","../../../../node_modules/ajv/dist/vocabularies/validation/limitItems.js","../../../../node_modules/ajv/dist/runtime/equal.js","../../../../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js","../../../../node_modules/ajv/dist/vocabularies/validation/const.js","../../../../node_modules/ajv/dist/vocabularies/validation/enum.js","../../../../node_modules/ajv/dist/vocabularies/validation/index.js","../../../../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js","../../../../node_modules/ajv/dist/vocabularies/applicator/items.js","../../../../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js","../../../../node_modules/ajv/dist/vocabularies/applicator/items2020.js","../../../../node_modules/ajv/dist/vocabularies/applicator/contains.js","../../../../node_modules/ajv/dist/vocabularies/applicator/dependencies.js","../../../../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js","../../../../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js","../../../../node_modules/ajv/dist/vocabularies/applicator/properties.js","../../../../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js","../../../../node_modules/ajv/dist/vocabularies/applicator/not.js","../../../../node_modules/ajv/dist/vocabularies/applicator/anyOf.js","../../../../node_modules/ajv/dist/vocabularies/applicator/oneOf.js","../../../../node_modules/ajv/dist/vocabularies/applicator/allOf.js","../../../../node_modules/ajv/dist/vocabularies/applicator/if.js","../../../../node_modules/ajv/dist/vocabularies/applicator/thenElse.js","../../../../node_modules/ajv/dist/vocabularies/applicator/index.js","../../../../node_modules/ajv/dist/vocabularies/format/format.js","../../../../node_modules/ajv/dist/vocabularies/format/index.js","../../../../node_modules/ajv/dist/vocabularies/metadata.js","../../../../node_modules/ajv/dist/vocabularies/draft7.js","../../../../node_modules/ajv/dist/vocabularies/discriminator/types.js","../../../../node_modules/ajv/dist/vocabularies/discriminator/index.js","../../../../node_modules/ajv/dist/ajv.js","../../../../node_modules/@constl/bohr-db/dist/utils.js","../../../../node_modules/@constl/bohr-db/dist/feed.js","../../../../node_modules/@constl/bohr-db/dist/keyvalue.js","../../../../node_modules/@constl/bohr-db/dist/ordered-keyvalue.js","../../../../node_modules/@constl/bohr-db/dist/set.js","../../../../node_modules/@chriscdn/promise-semaphore/lib/promise-semaphore.modern.js","../../../../node_modules/@constl/ipa/dist/orbite.js","../../../../node_modules/@constl/ipa/dist/accès/gestionnaireUtilisateurs.js","../../../../node_modules/@constl/ipa/dist/accès/utils.js","../../../../node_modules/@constl/ipa/dist/accès/cntrlMod.js","../../../../node_modules/@constl/ipa/dist/accès/cntrlConstellation.js","../../../../node_modules/@constl/ipa/dist/accès/index.js","../../../../node_modules/xlsx/xlsx.mjs","../../../../node_modules/axios/lib/helpers/bind.js","../../../../node_modules/axios/lib/utils.js","../../../../node_modules/axios/lib/core/AxiosError.js","../../../../node_modules/axios/lib/helpers/null.js","../../../../node_modules/axios/lib/helpers/toFormData.js","../../../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../../../node_modules/axios/lib/helpers/buildURL.js","../../../../node_modules/axios/lib/core/InterceptorManager.js","../../../../node_modules/axios/lib/defaults/transitional.js","../../../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../../../node_modules/axios/lib/platform/browser/classes/FormData.js","../../../../node_modules/axios/lib/platform/browser/classes/Blob.js","../../../../node_modules/axios/lib/platform/browser/index.js","../../../../node_modules/axios/lib/platform/common/utils.js","../../../../node_modules/axios/lib/platform/index.js","../../../../node_modules/axios/lib/helpers/toURLEncodedForm.js","../../../../node_modules/axios/lib/helpers/formDataToJSON.js","../../../../node_modules/axios/lib/defaults/index.js","../../../../node_modules/axios/lib/helpers/parseHeaders.js","../../../../node_modules/axios/lib/core/AxiosHeaders.js","../../../../node_modules/axios/lib/core/transformData.js","../../../../node_modules/axios/lib/cancel/isCancel.js","../../../../node_modules/axios/lib/cancel/CanceledError.js","../../../../node_modules/axios/lib/core/settle.js","../../../../node_modules/axios/lib/helpers/parseProtocol.js","../../../../node_modules/axios/lib/helpers/speedometer.js","../../../../node_modules/axios/lib/helpers/throttle.js","../../../../node_modules/axios/lib/helpers/progressEventReducer.js","../../../../node_modules/axios/lib/helpers/isURLSameOrigin.js","../../../../node_modules/axios/lib/helpers/cookies.js","../../../../node_modules/axios/lib/helpers/isAbsoluteURL.js","../../../../node_modules/axios/lib/helpers/combineURLs.js","../../../../node_modules/axios/lib/core/buildFullPath.js","../../../../node_modules/axios/lib/core/mergeConfig.js","../../../../node_modules/axios/lib/helpers/resolveConfig.js","../../../../node_modules/axios/lib/adapters/xhr.js","../../../../node_modules/axios/lib/helpers/composeSignals.js","../../../../node_modules/axios/lib/helpers/trackStream.js","../../../../node_modules/axios/lib/adapters/fetch.js","../../../../node_modules/axios/lib/adapters/adapters.js","../../../../node_modules/axios/lib/core/dispatchRequest.js","../../../../node_modules/axios/lib/env/data.js","../../../../node_modules/axios/lib/helpers/validator.js","../../../../node_modules/axios/lib/core/Axios.js","../../../../node_modules/axios/lib/cancel/CancelToken.js","../../../../node_modules/axios/lib/helpers/spread.js","../../../../node_modules/axios/lib/helpers/isAxiosError.js","../../../../node_modules/axios/lib/helpers/HttpStatusCode.js","../../../../node_modules/axios/lib/axios.js","../../../../node_modules/@constl/ipa/dist/importateur/index.js","../../../../node_modules/@constl/mandataire/node_modules/uuid/dist/esm-browser/stringify.js","../../../../node_modules/@constl/mandataire/node_modules/uuid/dist/esm-browser/rng.js","../../../../node_modules/@constl/mandataire/node_modules/uuid/dist/esm-browser/native.js","../../../../node_modules/@constl/mandataire/node_modules/uuid/dist/esm-browser/v4.js","../../../../node_modules/@constl/mandataire/dist/src/codes.js","../../../../node_modules/@constl/mandataire/dist/src/utils.js","../../../../node_modules/@constl/mandataire/dist/src/mandataire.js","../../../../node_modules/tslib/tslib.es6.mjs","../../../../node_modules/object-keys/isArguments.js","../../../../node_modules/object-keys/implementation.js","../../../../node_modules/object-keys/index.js","../../../../node_modules/define-properties/index.js","../../../../node_modules/object.assign/implementation.js","../../../../node_modules/object.assign/polyfill.js","../../../../node_modules/object.assign/shim.js","../../../../node_modules/object.assign/index.js","../../../../node_modules/functions-have-names/index.js","../../../../node_modules/set-function-name/index.js","../../../../node_modules/regexp.prototype.flags/implementation.js","../../../../node_modules/regexp.prototype.flags/polyfill.js","../../../../node_modules/regexp.prototype.flags/shim.js","../../../../node_modules/regexp.prototype.flags/index.js","../../../../__vite-browser-external","../../../../node_modules/object-inspect/index.js","../../../../node_modules/side-channel/index.js","../../../../node_modules/internal-slot/index.js","../../../../node_modules/stop-iteration-iterator/index.js","../../../../node_modules/isarray/index.js","../../../../node_modules/is-string/index.js","../../../../node_modules/is-map/index.js","../../../../node_modules/is-set/index.js","../../../../node_modules/es-get-iterator/index.js","../../../../node_modules/object-is/implementation.js","../../../../node_modules/object-is/polyfill.js","../../../../node_modules/object-is/shim.js","../../../../node_modules/object-is/index.js","../../../../node_modules/is-array-buffer/index.js","../../../../node_modules/is-date-object/index.js","../../../../node_modules/is-regex/index.js","../../../../node_modules/is-shared-array-buffer/index.js","../../../../node_modules/is-number-object/index.js","../../../../node_modules/is-boolean-object/index.js","../../../../node_modules/is-symbol/index.js","../../../../node_modules/has-bigints/index.js","../../../../node_modules/is-bigint/index.js","../../../../node_modules/which-boxed-primitive/index.js","../../../../node_modules/is-weakmap/index.js","../../../../node_modules/is-weakset/index.js","../../../../node_modules/which-collection/index.js","../../../../node_modules/array-buffer-byte-length/index.js","../../../../node_modules/deep-equal/index.js","../../../../node_modules/deepmerge/dist/cjs.js","../../../../node_modules/deepcopy/node_modules/type-detect/type-detect.js","../../../../node_modules/deepcopy/src/buffer.mjs","../../../../node_modules/deepcopy/src/detector.mjs","../../../../node_modules/deepcopy/src/collection.mjs","../../../../node_modules/deepcopy/src/global.mjs","../../../../node_modules/deepcopy/src/copy_map.mjs","../../../../node_modules/deepcopy/src/copier.mjs","../../../../node_modules/deepcopy/src/index.mjs","../../../../node_modules/jszip/dist/jszip.min.js","../../../../node_modules/browser-fs-access/dist/index.modern.js","../../../../node_modules/path-browserify/index.js","../../../../node_modules/is-electron/index.js","../../../../node_modules/wherearewe/src/index.js","../../../../node_modules/@constl/utils-ipa/dist/src/données.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@constl/utils-ipa/dist/src/sfip.js","../../../../node_modules/@constl/utils-ipa/dist/src/fonctions.js","../../../../node_modules/geojson-validation/index.js","../../../../node_modules/@constl/utils-ipa/dist/src/cholqij.js","../../../../node_modules/@constl/utils-ipa/dist/src/valide.js","../../../../node_modules/@lassi-js/kili/விநியோகம்/மாறிலிகள்.js","../../../../node_modules/@lassi-js/kili/விநியோகம்/கிளி.js","../../../../node_modules/ennikkai/விநியோகம்/மாறிலிகள்.js","../../../../node_modules/ennikkai/விநியோகம்/கிளி.js","../../../../node_modules/ennikkai/விநியோகம்/எண்ணிக்கை.js","../../../../node_modules/it-first/dist/src/index.js","../../../../node_modules/it-batch/dist/src/index.js","../../../../node_modules/it-parallel-batch/dist/src/index.js","../../../../node_modules/uint8arraylist/dist/src/index.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/chunker/fixed-size.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@ipld/dag-pb/src/pb-decode.js","../../../../node_modules/@ipld/dag-pb/src/pb-encode.js","../../../../node_modules/@ipld/dag-pb/src/util.js","../../../../node_modules/@ipld/dag-pb/src/index.js","../../../../node_modules/ipfs-unixfs/dist/src/errors.js","../../../../node_modules/ipfs-unixfs/dist/src/unixfs.js","../../../../node_modules/ipfs-unixfs/dist/src/index.js","../../../../node_modules/progress-events/dist/src/index.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/utils/persist.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dag-builder/buffer-importer.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/errors.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dag-builder/dir.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dag-builder/file.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dag-builder/index.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dag-builder/validate-chunks.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/layout/balanced.js","../../../../node_modules/it-all/dist/src/index.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dir.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dir-flat.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/murmurhash3js-revisited/lib/murmurHash3js.js","../../../../node_modules/murmurhash3js-revisited/index.js","../../../../node_modules/@multiformats/murmur3/src/index.js","../../../../node_modules/sparse-array/index.js","../../../../node_modules/hamt-sharding/dist/src/bucket.js","../../../../node_modules/hamt-sharding/dist/src/consumable-buffer.js","../../../../node_modules/hamt-sharding/dist/src/consumable-hash.js","../../../../node_modules/hamt-sharding/dist/src/index.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dir-sharded.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/flat-to-shard.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/utils/to-path-components.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/tree-builder.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/index.js","../../../../node_modules/@helia/unixfs/dist/src/commands/add.js","../../../../node_modules/it-last/dist/src/index.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/errors.js","../../../../node_modules/cborg/lib/json/encode.js","../../../../node_modules/cborg/lib/json/decode.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/@ipld/dag-json/src/index.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/identity.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/json.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/raw.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.js","../../../../node_modules/it-peekable/dist/src/index.js","../../../../node_modules/it-filter/dist/src/index.js","../../../../node_modules/it-map/dist/src/index.js","../../../../node_modules/it-parallel/dist/src/index.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/index.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/index.js","../../../../node_modules/is-plain-obj/index.js","../../../../node_modules/merge-options/index.js","../../../../node_modules/@helia/unixfs/dist/src/errors.js","../../../../node_modules/weald/node_modules/ms/dist/index.mjs","../../../../node_modules/weald/dist/src/common.js","../../../../node_modules/weald/dist/src/browser.js","../../../../node_modules/@libp2p/logger/dist/src/index.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/consumable-hash.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/hamt-constants.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/persist.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/dir-sharded.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/hamt-utils.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/is-over-shard-threshold.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/add-link.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/cid-to-directory.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/cid-to-pblink.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/resolve.js","../../../../node_modules/@helia/unixfs/dist/src/commands/cat.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/codecs/raw.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/constants.js","../../../../node_modules/@helia/unixfs/dist/src/commands/chmod.js","../../../../node_modules/@helia/unixfs/dist/src/commands/cp.js","../../../../node_modules/@helia/unixfs/dist/src/commands/ls.js","../../../../node_modules/@helia/unixfs/dist/src/commands/mkdir.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/remove-link.js","../../../../node_modules/@helia/unixfs/dist/src/commands/rm.js","../../../../node_modules/@helia/unixfs/dist/src/commands/stat.js","../../../../node_modules/@helia/unixfs/dist/src/commands/touch.js","../../../../node_modules/@helia/unixfs/dist/src/unixfs.js","../../../../node_modules/@helia/unixfs/dist/src/index.js","../../../../node_modules/indexed-db-stream/lib/indexed-db-read-stream.js","../../../../node_modules/indexed-db-stream/lib/indexed-db-write-stream.js","../../../../node_modules/indexed-db-stream/lib/index.js","../../../../node_modules/platform/platform.js","../../../../node_modules/crypto-js/core.js","../../../../node_modules/crypto-js/md5.js","../../../../node_modules/crypto-js/enc-base64.js","../../../../node_modules/@constl/ipa/dist/décorateursCache.js","../../../../node_modules/@constl/ipa/dist/licences.js","../../../../node_modules/@constl/ipa/dist/epingles.js","../../../../node_modules/@constl/ipa/dist/types.js","../../../../node_modules/@constl/ipa/dist/composanteClient.js","../../../../node_modules/@constl/ipa/dist/profil.js","../../../../node_modules/it-to-buffer/dist/src/index.js","../../../../node_modules/file-saver/dist/FileSaver.min.js","../../../../node_modules/@constl/ipa/dist/bds.js","../../../../node_modules/@constl/ipa/dist/valid.js","../../../../node_modules/@constl/ipa/dist/dates.js","../../../../node_modules/@constl/ipa/dist/tableaux.js","../../../../node_modules/@constl/ipa/dist/variables.js","../../../../node_modules/lodash/_baseSum.js","../../../../node_modules/lodash/identity.js","../../../../node_modules/lodash/sum.js","../../../../node_modules/average/src/average.js","../../../../node_modules/variance/src/variance.js","../../../../node_modules/covariance/src/covariance.js","../../../../node_modules/ssim/src/ssim.js","../../../../node_modules/approx-string-match/build/src/index.js","../../../../node_modules/@constl/ipa/dist/recherche/utils.js","../../../../node_modules/@constl/ipa/dist/recherche/profil.js","../../../../node_modules/@constl/ipa/dist/reseau.js","../../../../node_modules/@constl/ipa/dist/encryption.js","../../../../node_modules/@constl/ipa/dist/favoris.js","../../../../node_modules/@constl/ipa/dist/projets.js","../../../../node_modules/@constl/ipa/dist/motsClefs.js","../../../../node_modules/@constl/ipa/dist/nuées.js","../../../../node_modules/@constl/ipa/dist/recherche/variable.js","../../../../node_modules/@constl/ipa/dist/recherche/motClef.js","../../../../node_modules/@constl/ipa/dist/recherche/bd.js","../../../../node_modules/@constl/ipa/dist/recherche/projet.js","../../../../node_modules/@constl/ipa/dist/recherche/nuée.js","../../../../node_modules/@constl/ipa/dist/recherche/recherche.js","../../../../node_modules/@constl/ipa/dist/importateur/xlsx.js","../../../../node_modules/@constl/ipa/dist/importateur/json.js","../../../../node_modules/@constl/ipa/dist/automatisation.js","../../../../node_modules/node-stdlib-browser/esm/mock/empty.js","../../../../node_modules/@constl/ipa/dist/stockageLocal.js","../../../../node_modules/crypto-js/sha256.js","../../../../node_modules/@constl/ipa/dist/protocoles.js","../../../../node_modules/err-code/index.js","../../../../node_modules/blockstore-core/dist/src/errors.js","../../../../node_modules/blockstore-core/dist/src/base.js","../../../../node_modules/blockstore-core/dist/src/memory.js","../../../../node_modules/blockstore-core/dist/src/tiered.js","../../../../node_modules/blockstore-core/dist/src/index.js","../../../../node_modules/datastore-core/dist/src/errors.js","../../../../node_modules/interface-datastore/dist/src/key.js","../../../../node_modules/datastore-core/dist/src/shard.js","../../../../node_modules/it-sort/dist/src/index.js","../../../../node_modules/it-take/dist/src/index.js","../../../../node_modules/datastore-core/dist/src/base.js","../../../../node_modules/datastore-core/dist/src/memory.js","../../../../node_modules/datastore-core/dist/src/sharding.js","../../../../node_modules/datastore-core/dist/src/tiered.js","../../../../node_modules/any-signal/dist/src/index.js","../../../../node_modules/it-foreach/dist/src/index.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@libp2p/utils/dist/src/tracked-map.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/varint-decoder/node_modules/varint/encode.js","../../../../node_modules/varint-decoder/node_modules/varint/decode.js","../../../../node_modules/varint-decoder/node_modules/varint/length.js","../../../../node_modules/varint-decoder/node_modules/varint/index.js","../../../../node_modules/varint-decoder/src/index.js","../../../../node_modules/ipfs-bitswap/dist/src/wantlist/entry.js","../../../../node_modules/ipfs-bitswap/dist/src/message/entry.js","../../../../node_modules/ipfs-bitswap/dist/src/utils/index.js","../../../../node_modules/varint/encode.js","../../../../node_modules/varint/decode.js","../../../../node_modules/varint/length.js","../../../../node_modules/varint/index.js","../../../../node_modules/ipfs-bitswap/dist/src/utils/varint-encoder.js","../../../../node_modules/ipfs-bitswap/dist/src/message/message.js","../../../../node_modules/ipfs-bitswap/dist/src/message/index.js","../../../../node_modules/ipfs-bitswap/dist/src/wantlist/index.js","../../../../node_modules/ipfs-bitswap/dist/src/decision-engine/ledger.js","../../../../node_modules/ipfs-bitswap/dist/src/utils/sorted-map.js","../../../../node_modules/ipfs-bitswap/dist/src/decision-engine/req-queue.js","../../../../node_modules/ipfs-bitswap/dist/src/decision-engine/task-merger.js","../../../../node_modules/ipfs-bitswap/dist/src/decision-engine/index.js","../../../../node_modules/it-length-prefixed/dist/src/utils.js","../../../../node_modules/it-length-prefixed/dist/src/encode.js","../../../../node_modules/it-length-prefixed/dist/src/errors.js","../../../../node_modules/it-length-prefixed/dist/src/decode.js","../../../../node_modules/ipfs-bitswap/dist/src/constants.js","../../../../node_modules/ipfs-bitswap/dist/src/network.js","../../../../node_modules/ipfs-bitswap/dist/src/notifications.js","../../../../node_modules/@vascosantos/moving-average/index.js","../../../../node_modules/ipfs-bitswap/dist/src/stats/stat.js","../../../../node_modules/ipfs-bitswap/dist/src/stats/index.js","../../../../node_modules/just-debounce-it/index.mjs","../../../../node_modules/ipfs-bitswap/dist/src/want-manager/msg-queue.js","../../../../node_modules/ipfs-bitswap/dist/src/want-manager/index.js","../../../../node_modules/ipfs-bitswap/dist/src/bitswap.js","../../../../node_modules/ipfs-bitswap/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/block-brokers/dist/src/bitswap.js","../../../../node_modules/@constl/ipa/node_modules/@helia/block-brokers/dist/src/trustless-gateway/trustless-gateway.js","../../../../node_modules/@constl/ipa/node_modules/@helia/block-brokers/dist/src/trustless-gateway/broker.js","../../../../node_modules/@constl/ipa/node_modules/@helia/block-brokers/dist/src/trustless-gateway/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/block-brokers/dist/src/utils/networked-storage.js","../../../../node_modules/race-event/dist/src/index.js","../../../../node_modules/race-signal/dist/src/index.js","../../../../node_modules/@libp2p/utils/dist/src/queue/recipient.js","../../../../node_modules/@libp2p/utils/dist/src/queue/job.js","../../../../node_modules/@libp2p/utils/dist/src/queue/index.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bases/base36.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/codecs/json.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/codecs/raw.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/dag-walkers.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/pins.js","../../../../node_modules/observable-webworkers/dist/src/index.js","../../../../node_modules/mortice/dist/src/constants.js","../../../../node_modules/mortice/dist/src/utils.js","../../../../node_modules/mortice/dist/src/browser.js","../../../../node_modules/mortice/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/storage.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/datastore-version.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/hashes/identity.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/default-hashers.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/helia.js","../../../../node_modules/@libp2p/peer-id/dist/src/index.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/constants.js","../../../../node_modules/@protobufjs/aspromise/index.js","../../../../node_modules/@protobufjs/base64/index.js","../../../../node_modules/@protobufjs/eventemitter/index.js","../../../../node_modules/@protobufjs/float/index.js","../../../../node_modules/@protobufjs/inquire/index.js","../../../../node_modules/@protobufjs/utf8/index.js","../../../../node_modules/@protobufjs/pool/index.js","../../../../node_modules/protobufjs/src/util/longbits.js","../../../../node_modules/protobufjs/src/util/minimal.js","../../../../node_modules/protobufjs/src/writer.js","../../../../node_modules/protobufjs/src/writer_buffer.js","../../../../node_modules/protobufjs/src/reader.js","../../../../node_modules/protobufjs/src/reader_buffer.js","../../../../node_modules/protobufjs/src/rpc/service.js","../../../../node_modules/protobufjs/src/rpc.js","../../../../node_modules/protobufjs/src/roots.js","../../../../node_modules/protobufjs/src/index-minimal.js","../../../../node_modules/protobufjs/minimal.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message/decodeRpc.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message/rpc.cjs","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message/rpc.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message-cache.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/types.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/metrics.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/constants.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score-params.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score-thresholds.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/set.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/compute-score.js","../../../../node_modules/denque/index.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/message-deliveries.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/scoreMetrics.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/stream.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/tracer.js","../../../../node_modules/@libp2p/crypto/dist/src/webcrypto-browser.js","../../../../node_modules/@libp2p/crypto/dist/src/util.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/ed25519-browser.js","../../../../node_modules/@libp2p/crypto/dist/src/ciphers/aes-gcm.browser.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/exporter.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/keys.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/ed25519-class.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/importer.js","../../../../node_modules/@libp2p/crypto/dist/src/random-bytes.js","../../../../node_modules/@noble/hashes/esm/pbkdf2.js","../../../../node_modules/pvtsutils/build/index.es.js","../../../../node_modules/pvutils/build/utils.es.js","../../../../node_modules/asn1js/build/index.es.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/rsa-utils.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/rsa-browser.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/rsa-class.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/secp256k1-browser.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/secp256k1-class.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/index.js","../../../../node_modules/@noble/hashes/esm/sha1.js","../../../../node_modules/@libp2p/crypto/dist/src/pbkdf2.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/buildRawMessage.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/shuffle.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/messageIdToString.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/publishConfig.js","../../../../node_modules/@libp2p/pubsub/dist/src/utils.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/msgIdFn.js","../../../../node_modules/@chainsafe/is-ip/lib/parser.js","../../../../node_modules/@chainsafe/is-ip/lib/parse.js","../../../../node_modules/@chainsafe/is-ip/lib/is-ip.js","../../../../node_modules/@multiformats/multiaddr/dist/src/ip.js","../../../../node_modules/@multiformats/multiaddr/dist/src/protocols-table.js","../../../../node_modules/@multiformats/multiaddr/dist/src/convert.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/multiaddr.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/time-cache.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/index.js","../../../../node_modules/it-queueless-pushable/dist/src/index.js","../../../../node_modules/it-byte-stream/dist/src/errors.js","../../../../node_modules/it-byte-stream/dist/src/index.js","../../../../node_modules/it-length-prefixed-stream/dist/src/errors.js","../../../../node_modules/it-length-prefixed-stream/dist/src/index.js","../../../../node_modules/it-pair/dist/src/index.js","../../../../node_modules/it-pair/dist/src/duplex.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/constants.js","../../../../node_modules/@constl/ipa/node_modules/@noble/ciphers/esm/utils.js","../../../../node_modules/@constl/ipa/node_modules/@noble/ciphers/esm/_assert.js","../../../../node_modules/@constl/ipa/node_modules/@noble/ciphers/esm/_poly1305.js","../../../../node_modules/@constl/ipa/node_modules/@noble/ciphers/esm/_arx.js","../../../../node_modules/@constl/ipa/node_modules/@noble/ciphers/esm/chacha.js","../../../../node_modules/@noble/hashes/esm/hkdf.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/crypto/js.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/crypto/index.browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/encoder.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/crypto/streaming.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/errors.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/util.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/ed25519-browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/webcrypto.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/ciphers/aes-gcm.browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/exporter.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/keys.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/ed25519-class.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/ecdh-browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/random-bytes.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/jwk2pem.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/rsa-utils.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/rsa-browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/rsa-class.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/secp256k1-browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/secp256k1-class.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/index.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/proto/payload.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/utils.js","../../../../node_modules/uint8arrays/dist/src/xor.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/nonce.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/handshakes/abstract-handshake.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/handshakes/xx.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/logger.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/handshake-xx.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/metrics.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/noise.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/index.js","../../../../node_modules/get-iterator/dist/src/index.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/constants.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/config.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/frame.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/decode.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/encode.js","../../../../node_modules/@libp2p/utils/dist/src/is-promise.js","../../../../node_modules/@libp2p/utils/dist/src/close-source.js","../../../../node_modules/@libp2p/utils/dist/src/abstract-stream.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/stream.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/muxer.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/interface/dist/src/content-routing/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/interface/dist/src/errors.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/interface/dist/src/events.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/interface/dist/src/peer-routing/index.js","../../../../node_modules/ms/index.js","../../../../node_modules/debug/src/common.js","../../../../node_modules/debug/src/browser.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/vendor/base-x.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bytes.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base32.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base58.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base64.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/logger/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/interface/dist/src/peer-id/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base10.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base16.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base2.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base256emoji.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base36.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base8.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/identity.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/codecs/json.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/vendor/varint.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/varint.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/hashes/digest.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/hashes/identity.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/hashes/hasher.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/hashes/sha2-browser.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/cid.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/basics.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/uint8arrays/dist/src/equals.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/peer-id/dist/src/index.js","../../../../node_modules/@multiformats/multiaddr/dist/src/codec.js","../../../../node_modules/@multiformats/multiaddr/dist/src/multiaddr.js","../../../../node_modules/@multiformats/multiaddr/dist/src/index.js","../../../../node_modules/browser-readablestream-to-it/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/interface/dist/src/errors.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/util/as-uint8array.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/vendor/base-x.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bytes.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base10.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base16.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base2.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base256emoji.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base32.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base36.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base58.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base64.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base8.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/identity.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/codecs/json.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/vendor/varint.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/varint.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/hashes/digest.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/hashes/identity.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/hashes/hasher.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/hashes/sha2-browser.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/cid.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/basics.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/alloc.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/util/bases.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/from-string.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/equals.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/ed25519-browser.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/concat.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/webcrypto.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/ciphers/aes-gcm.browser.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/exporter.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/keys.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/ed25519-class.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/to-string.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/util.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/ecdh-browser.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/random-bytes.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/jwk2pem.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/rsa-utils.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/rsa-browser.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/rsa-class.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/secp256k1.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/secp256k1-class.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/index.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/logger/dist/src/index.js","../../../../node_modules/timestamp-nano/dist/timestamp.min.js","../../../../node_modules/@constl/ipa/node_modules/ipns/dist/src/errors.js","../../../../node_modules/@constl/ipa/node_modules/ipns/dist/src/pb/ipns.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/interface/dist/src/peer-id/index.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/peer-id/node_modules/uint8arrays/dist/src/equals.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/peer-id/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/ipns/dist/src/utils.js","../../../../node_modules/@constl/ipa/node_modules/ipns/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/ipns/dist/src/validator.js","../../../../node_modules/it-ndjson/dist/src/parse.js","../../../../node_modules/@constl/ipa/node_modules/p-timeout/index.js","../../../../node_modules/@constl/ipa/node_modules/p-queue/dist/lower-bound.js","../../../../node_modules/@constl/ipa/node_modules/p-queue/dist/priority-queue.js","../../../../node_modules/@constl/ipa/node_modules/p-queue/dist/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/uint8arrays/dist/src/util/as-uint8array.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/uint8arrays/dist/src/alloc.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/uint8arrays/dist/src/util/bases.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/uint8arrays/dist/src/from-string.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/dist/src/routings.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/dist/src/client.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/dist/src/index.js","../../../../node_modules/@libp2p/peer-id-factory/dist/src/index.js","../../../../node_modules/netmask/lib/netmask.js","../../../../node_modules/@libp2p/utils/dist/src/private-ip.js","../../../../node_modules/@libp2p/autonat/dist/src/constants.js","../../../../node_modules/@libp2p/autonat/dist/src/pb/index.js","../../../../node_modules/@libp2p/autonat/dist/src/autonat.js","../../../../node_modules/@libp2p/autonat/dist/src/index.js","../../../../node_modules/@multiformats/mafmt/dist/src/index.js","../../../../node_modules/@libp2p/bootstrap/dist/src/index.js","../../../../node_modules/@libp2p/peer-record/dist/src/errors.js","../../../../node_modules/@libp2p/peer-record/dist/src/envelope/envelope.js","../../../../node_modules/@libp2p/peer-record/dist/src/envelope/index.js","../../../../node_modules/@libp2p/utils/dist/src/array-equals.js","../../../../node_modules/@libp2p/peer-record/dist/src/peer-record/consts.js","../../../../node_modules/@libp2p/peer-record/dist/src/peer-record/peer-record.js","../../../../node_modules/@libp2p/peer-record/dist/src/peer-record/index.js","../../../../node_modules/it-protobuf-stream/dist/src/index.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/constants.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/pb/index.js","../../../../node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/utils.js","../../../../node_modules/@libp2p/peer-collections/dist/src/util.js","../../../../node_modules/@libp2p/peer-collections/dist/src/map.js","../../../../node_modules/@libp2p/peer-collections/dist/src/set.js","../../../../node_modules/@libp2p/utils/dist/src/filters/bloom-filter.js","../../../../node_modules/@libp2p/utils/dist/src/filters/fingerprint.js","../../../../node_modules/@libp2p/utils/dist/src/filters/utils.js","../../../../node_modules/@libp2p/utils/dist/src/filters/bucket.js","../../../../node_modules/@sindresorhus/fnv1a/index.js","../../../../node_modules/@libp2p/utils/dist/src/filters/hashes.js","../../../../node_modules/@libp2p/utils/dist/src/filters/cuckoo-filter.js","../../../../node_modules/@libp2p/utils/dist/src/filters/scalable-cuckoo-filter.js","../../../../node_modules/@libp2p/peer-collections/dist/src/filter.js","../../../../node_modules/@libp2p/utils/dist/src/stream-to-ma-conn.js","../../../../node_modules/@libp2p/utils/dist/src/peer-queue.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/transport/discovery.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/transport/listener.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/transport/reservation-store.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/transport/transport.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/transport/index.js","../../../../node_modules/delay/index.js","../../../../node_modules/@libp2p/dcutr/dist/src/pb/message.js","../../../../node_modules/@multiformats/multiaddr-matcher/dist/src/index.js","../../../../node_modules/@libp2p/dcutr/dist/src/utils.js","../../../../node_modules/@libp2p/dcutr/dist/src/dcutr.js","../../../../node_modules/@libp2p/dcutr/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@libp2p/identify/dist/src/consts.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@libp2p/identify/dist/src/pb/message.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@libp2p/identify/dist/src/identify.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@libp2p/identify/dist/src/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/constants.js","../../../../node_modules/@libp2p/record/dist/src/record.js","../../../../node_modules/@libp2p/record/dist/src/utils.js","../../../../node_modules/@libp2p/record/dist/src/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/message/dht.js","../../../../node_modules/@libp2p/kad-dht/dist/src/query/events.js","../../../../node_modules/@libp2p/kad-dht/dist/src/record/selectors.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/@libp2p/kad-dht/dist/src/record/validators.js","../../../../node_modules/@libp2p/kad-dht/dist/src/utils.js","../../../../node_modules/@libp2p/kad-dht/dist/src/content-fetching/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/message/utils.js","../../../../node_modules/@libp2p/kad-dht/dist/src/content-routing/index.js","../../../../node_modules/@libp2p/utils/dist/src/moving-average.js","../../../../node_modules/@libp2p/utils/dist/src/adaptive-timeout.js","../../../../node_modules/@libp2p/kad-dht/dist/src/network.js","../../../../node_modules/uint8arrays/dist/src/xor-compare.js","../../../../node_modules/@libp2p/kad-dht/dist/src/peer-list/peer-distance-list.js","../../../../node_modules/@libp2p/kad-dht/dist/src/peer-routing/index.js","../../../../node_modules/hashlru/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/providers.js","../../../../node_modules/@libp2p/kad-dht/dist/src/query/query-path.js","../../../../node_modules/@libp2p/kad-dht/dist/src/query/manager.js","../../../../node_modules/it-length/dist/src/index.js","../../../../node_modules/p-event/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/query-self.js","../../../../node_modules/@libp2p/kad-dht/dist/src/routing-table/k-bucket.js","../../../../node_modules/@libp2p/kad-dht/dist/src/routing-table/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/routing-table/generated-prefix-list-browser.js","../../../../node_modules/@libp2p/kad-dht/dist/src/routing-table/refresh.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/add-provider.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/find-node.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/get-providers.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/get-value.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/ping.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/put-value.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/topology-listener.js","../../../../node_modules/@libp2p/kad-dht/dist/src/kad-dht.js","../../../../node_modules/@libp2p/kad-dht/dist/src/index.js","../../../../node_modules/truncate-utf8-bytes/lib/truncate.js","../../../../node_modules/utf8-byte-length/browser.js","../../../../node_modules/truncate-utf8-bytes/browser.js","../../../../node_modules/sanitize-filename/index.js","../../../../node_modules/@libp2p/keychain/dist/src/errors.js","../../../../node_modules/@libp2p/keychain/dist/src/keychain.js","../../../../node_modules/@libp2p/keychain/dist/src/index.js","../../../../node_modules/@libp2p/utils/dist/src/rate-limiter.js","../../../../node_modules/@libp2p/mplex/dist/src/message-types.js","../../../../node_modules/@libp2p/mplex/dist/src/decode.js","../../../../node_modules/@libp2p/mplex/dist/src/encode.js","../../../../node_modules/@libp2p/mplex/dist/src/stream.js","../../../../node_modules/@libp2p/mplex/dist/src/mplex.js","../../../../node_modules/@libp2p/mplex/dist/src/index.js","../../../../node_modules/@libp2p/ping/dist/src/constants.js","../../../../node_modules/@libp2p/ping/dist/src/ping.js","../../../../node_modules/@libp2p/ping/dist/src/index.js","../../../../node_modules/@libp2p/webrtc/dist/src/error.js","../../../../node_modules/detect-browser/es/index.js","../../../../node_modules/@libp2p/webrtc/dist/src/constants.js","../../../../node_modules/@libp2p/webrtc/dist/src/util.js","../../../../node_modules/@libp2p/webrtc/dist/src/maconn.js","../../../../node_modules/@libp2p/webrtc/dist/src/pb/message.js","../../../../node_modules/@libp2p/webrtc/dist/src/stream.js","../../../../node_modules/@libp2p/webrtc/dist/src/muxer.js","../../../../node_modules/@libp2p/webrtc/dist/src/webrtc/index.browser.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/pb/message.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/util.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/initiate-connection.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/listener.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/signaling-stream-handler.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/transport.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/constants.js","../../../../node_modules/@noble/ciphers/esm/_assert.js","../../../../node_modules/@noble/ciphers/esm/utils.js","../../../../node_modules/@noble/ciphers/esm/_arx.js","../../../../node_modules/@noble/ciphers/esm/_poly1305.js","../../../../node_modules/@noble/ciphers/esm/chacha.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/crypto/js.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/crypto/index.browser.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/crypto.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/encoder.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/metrics.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/logger.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/errors.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/nonce.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/protocol.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/proto/payload.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/utils.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/performHandshake.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/streaming.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/noise.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/index.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base10.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base16.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base2.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base256emoji.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base36.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base8.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/identity.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/codecs/json.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/basics.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-public/sdp.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-public/util.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-public/transport.js","../../../../node_modules/@libp2p/webrtc/dist/src/index.js","../../../../node_modules/@multiformats/multiaddr-to-uri/dist/src/index.js","../../../../node_modules/it-ws/dist/src/ready.js","../../../../node_modules/it-ws/dist/src/sink.js","../../../../node_modules/event-iterator/lib/event-iterator.js","../../../../node_modules/event-iterator/lib/dom.js","../../../../node_modules/it-ws/dist/src/source.js","../../../../node_modules/it-ws/dist/src/duplex.js","../../../../node_modules/it-ws/dist/src/web-socket.browser.js","../../../../node_modules/it-ws/dist/src/ws-url.js","../../../../node_modules/it-ws/dist/src/client.js","../../../../node_modules/@libp2p/websockets/dist/src/constants.js","../../../../node_modules/@libp2p/websockets/dist/src/filters.js","../../../../node_modules/@libp2p/websockets/dist/src/listener.browser.js","../../../../node_modules/@libp2p/websockets/dist/src/socket-to-conn.js","../../../../node_modules/@libp2p/websockets/dist/src/index.js","../../../../node_modules/@libp2p/webtransport/dist/src/listener.browser.js","../../../../node_modules/@libp2p/webtransport/dist/src/stream.js","../../../../node_modules/@libp2p/webtransport/dist/src/utils/inert-duplex.js","../../../../node_modules/@libp2p/webtransport/dist/src/muxer.js","../../../../node_modules/@libp2p/webtransport/dist/src/utils/is-subset.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base10.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base16.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base2.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base256emoji.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base36.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base8.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/identity.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/codecs/json.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/basics.js","../../../../node_modules/@libp2p/webtransport/dist/src/utils/parse-multiaddr.js","../../../../node_modules/@libp2p/webtransport/dist/src/webtransport.browser.js","../../../../node_modules/@libp2p/webtransport/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/ipns/dist/src/errors.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/ipns/dist/src/pb/ipns.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/ipns/dist/src/utils.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/ipns/dist/src/selector.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/ipns/dist/src/validator.js","../../../../node_modules/libp2p/dist/src/version.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/version.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/bootstrappers.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/libp2p-defaults.browser.js","../../../../node_modules/@libp2p/peer-store/dist/src/errors.js","../../../../node_modules/@libp2p/peer-store/dist/src/pb/peer.js","../../../../node_modules/@libp2p/peer-store/dist/src/utils/bytes-to-peer.js","../../../../node_modules/@libp2p/peer-store/dist/src/utils/peer-id-to-datastore-key.js","../../../../node_modules/@libp2p/peer-store/dist/src/utils/dedupe-addresses.js","../../../../node_modules/@libp2p/peer-store/dist/src/utils/to-peer-pb.js","../../../../node_modules/@libp2p/peer-store/dist/src/store.js","../../../../node_modules/@libp2p/peer-store/dist/src/index.js","../../../../node_modules/libp2p/dist/src/address-manager/utils.js","../../../../node_modules/libp2p/dist/src/address-manager/index.js","../../../../node_modules/libp2p/dist/src/components.js","../../../../node_modules/libp2p/dist/src/config/connection-gater.browser.js","../../../../node_modules/@libp2p/utils/dist/src/multiaddr/is-private.js","../../../../node_modules/@libp2p/utils/dist/src/address-sort.js","../../../../node_modules/@multiformats/dns/dist/src/utils/get-types.js","../../../../node_modules/@multiformats/dns/dist/src/utils/to-dns-response.js","../../../../node_modules/@multiformats/dns/dist/src/resolvers/dns-json-over-https.js","../../../../node_modules/@multiformats/dns/dist/src/resolvers/default.browser.js","../../../../node_modules/@multiformats/dns/dist/src/utils/cache.js","../../../../node_modules/@multiformats/dns/dist/src/dns.js","../../../../node_modules/@multiformats/dns/dist/src/index.js","../../../../node_modules/@multiformats/multiaddr/dist/src/resolvers/dnsaddr.js","../../../../node_modules/libp2p/dist/src/errors.js","../../../../node_modules/libp2p/dist/src/config.js","../../../../node_modules/libp2p/dist/src/get-peer.js","../../../../node_modules/libp2p/dist/src/connection-manager/constants.defaults.js","../../../../node_modules/libp2p/dist/src/connection-manager/constants.browser.js","../../../../node_modules/libp2p/dist/src/connection-manager/auto-dial.js","../../../../node_modules/@libp2p/utils/dist/src/close.js","../../../../node_modules/libp2p/dist/src/connection-manager/connection-pruner.js","../../../../node_modules/@libp2p/utils/dist/src/priority-queue.js","../../../../node_modules/libp2p/dist/src/connection-manager/utils.js","../../../../node_modules/libp2p/dist/src/connection-manager/dial-queue.js","../../../../node_modules/libp2p/dist/src/connection-manager/index.js","../../../../node_modules/libp2p/dist/src/connection-monitor.js","../../../../node_modules/libp2p/dist/src/content-routing.js","../../../../node_modules/libp2p/dist/src/peer-routing.js","../../../../node_modules/libp2p/dist/src/random-walk.js","../../../../node_modules/libp2p/dist/src/registrar.js","../../../../node_modules/libp2p/dist/src/transport-manager.js","../../../../node_modules/@libp2p/multistream-select/dist/src/constants.js","../../../../node_modules/@libp2p/multistream-select/dist/src/multistream.js","../../../../node_modules/@libp2p/multistream-select/dist/src/select.js","../../../../node_modules/@libp2p/multistream-select/dist/src/handle.js","../../../../node_modules/libp2p/dist/src/connection/index.js","../../../../node_modules/libp2p/dist/src/upgrader.js","../../../../node_modules/libp2p/dist/src/libp2p.js","../../../../node_modules/libp2p/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/libp2p.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/index.js","../../../../node_modules/blockstore-level/dist/src/index.js","../../../../node_modules/@libp2p/identify/dist/src/consts.js","../../../../node_modules/@libp2p/identify/dist/src/pb/message.js","../../../../node_modules/@libp2p/identify/dist/src/utils.js","../../../../node_modules/@libp2p/identify/dist/src/identify.js","../../../../node_modules/@libp2p/identify/dist/src/index.js","../../../../node_modules/@libp2p/pubsub-peer-discovery/dist/src/peer.js","../../../../node_modules/@libp2p/pubsub-peer-discovery/dist/src/index.js","../../../../node_modules/@constl/ipa/dist/sfip/const.js","../../../../node_modules/@constl/ipa/dist/sfip/configNode.js","../../../../node_modules/@constl/ipa/dist/sfip/configÉlectronPrincipal.js","../../../../node_modules/@constl/ipa/dist/sfip/configNavigateur.js","../../../../node_modules/@constl/ipa/dist/sfip/configTravailleur.js","../../../../node_modules/@constl/ipa/dist/sfip/index.js","../../../../node_modules/@constl/ipa/dist/client.js","../../../../node_modules/@constl/ipa/dist/mandataire/enveloppe.js","../../../../node_modules/@constl/ipa/dist/mandataire/ipaProc.js","../../src/utils.ts","../../src/plugins/constellation/browser.ts","../../../../node_modules/vuetify/lib/components/VAlert/VAlertTitle.mjs","../../../../node_modules/vuetify/lib/components/VAlert/VAlert.mjs","../../../../node_modules/vuetify/lib/components/VLabel/VLabel.mjs","../../../../node_modules/vuetify/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs","../../../../node_modules/vuetify/lib/components/VSelectionControl/VSelectionControl.mjs","../../../../node_modules/vuetify/lib/components/VCheckbox/VCheckboxBtn.mjs","../../../../node_modules/vuetify/lib/components/VInput/InputIcon.mjs","../../../../node_modules/vuetify/lib/components/VMessages/VMessages.mjs","../../../../node_modules/vuetify/lib/composables/focus.mjs","../../../../node_modules/vuetify/lib/composables/form.mjs","../../../../node_modules/vuetify/lib/composables/validation.mjs","../../../../node_modules/vuetify/lib/components/VInput/VInput.mjs","../../../../node_modules/vuetify/lib/components/VCheckbox/VCheckbox.mjs","../../../../node_modules/vuetify/lib/composables/goto.mjs","../../../../node_modules/vuetify/lib/components/VSlideGroup/helpers.mjs","../../../../node_modules/vuetify/lib/components/VSlideGroup/VSlideGroup.mjs","../../../../node_modules/vuetify/lib/components/VChipGroup/VChipGroup.mjs","../../../../node_modules/vuetify/lib/components/VChip/VChip.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/util/point.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/locationStrategies.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/requestNewFrame.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/scrollStrategies.mjs","../../../../node_modules/vuetify/lib/components/VMenu/shared.mjs","../../../../node_modules/vuetify/lib/composables/delay.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/useActivator.mjs","../../../../node_modules/vuetify/lib/composables/hydration.mjs","../../../../node_modules/vuetify/lib/composables/lazy.mjs","../../../../node_modules/vuetify/lib/composables/scopeId.mjs","../../../../node_modules/vuetify/lib/composables/stack.mjs","../../../../node_modules/vuetify/lib/composables/teleport.mjs","../../../../node_modules/vuetify/lib/directives/click-outside/index.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/VOverlay.mjs","../../../../node_modules/vuetify/lib/composables/forwardRefs.mjs","../../../../node_modules/vuetify/lib/components/VMenu/VMenu.mjs","../../../../node_modules/vuetify/lib/components/VCounter/VCounter.mjs","../../../../node_modules/vuetify/lib/components/VField/VFieldLabel.mjs","../../../../node_modules/vuetify/lib/components/VField/VField.mjs","../../../../node_modules/vuetify/lib/components/VTextField/VTextField.mjs","../../../../node_modules/vuetify/lib/components/VVirtualScroll/VVirtualScrollItem.mjs","../../../../node_modules/vuetify/lib/composables/virtual.mjs","../../../../node_modules/vuetify/lib/components/VVirtualScroll/VVirtualScroll.mjs","../../../../node_modules/vuetify/lib/components/VSelect/useScrolling.mjs","../../../../node_modules/vuetify/lib/components/VSelect/VSelect.mjs","../../../../node_modules/vuetify/lib/composables/filter.mjs","../../../../node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.mjs","../../../../node_modules/vuetify/lib/components/VBadge/VBadge.mjs","../../../../node_modules/vuetify/lib/components/VBanner/VBannerActions.mjs","../../../../node_modules/vuetify/lib/components/VBanner/VBannerText.mjs","../../../../node_modules/vuetify/lib/components/VBanner/VBanner.mjs","../../../../node_modules/vuetify/lib/components/VBottomNavigation/VBottomNavigation.mjs","../../../../node_modules/vuetify/lib/components/VDialog/VDialog.mjs","../../../../node_modules/vuetify/lib/components/VBottomSheet/VBottomSheet.mjs","../../../../node_modules/vuetify/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs","../../../../node_modules/vuetify/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs","../../../../node_modules/vuetify/lib/components/VBreadcrumbs/VBreadcrumbs.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCardActions.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCardSubtitle.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCardTitle.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCardItem.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCardText.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCard.mjs","../../../../node_modules/vuetify/lib/directives/touch/index.mjs","../../../../node_modules/vuetify/lib/components/VWindow/VWindow.mjs","../../../../node_modules/vuetify/lib/components/VCarousel/VCarousel.mjs","../../../../node_modules/vuetify/lib/components/VWindow/VWindowItem.mjs","../../../../node_modules/vuetify/lib/components/VCarousel/VCarouselItem.mjs","../../../../node_modules/vuetify/lib/components/VCode/index.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/VColorPickerCanvas.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/util/index.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/VColorPickerEdit.mjs","../../../../node_modules/vuetify/lib/components/VSlider/slider.mjs","../../../../node_modules/vuetify/lib/components/VSlider/VSliderThumb.mjs","../../../../node_modules/vuetify/lib/components/VSlider/VSliderTrack.mjs","../../../../node_modules/vuetify/lib/components/VSlider/VSlider.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/VColorPickerPreview.mjs","../../../../node_modules/vuetify/lib/util/colors.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/VColorPickerSwatches.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/VColorPicker.mjs","../../../../node_modules/vuetify/lib/components/VCombobox/VCombobox.mjs","../../../../node_modules/vuetify/lib/composables/date/adapters/vuetify.mjs","../../../../node_modules/vuetify/lib/composables/date/date.mjs","../../../../node_modules/vuetify/lib/components/VConfirmEdit/VConfirmEdit.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/expand.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/group.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/options.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/paginate.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/select.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/sort.mjs","../../../../node_modules/vuetify/lib/components/VDataIterator/composables/items.mjs","../../../../node_modules/vuetify/lib/components/VDataIterator/VDataIterator.mjs","../../../../node_modules/vuetify/lib/composables/refs.mjs","../../../../node_modules/vuetify/lib/components/VPagination/VPagination.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableFooter.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableColumn.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/headers.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableHeaders.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableGroupHeaderRow.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableRow.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableRows.mjs","../../../../node_modules/vuetify/lib/components/VTable/VTable.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/items.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTable.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableVirtual.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableServer.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePickerControls.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePickerHeader.mjs","../../../../node_modules/vuetify/lib/composables/calendar.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePickerMonth.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePickerMonths.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePickerYears.mjs","../../../../node_modules/vuetify/lib/labs/VPicker/VPickerTitle.mjs","../../../../node_modules/vuetify/lib/labs/VPicker/VPicker.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePicker.mjs","../../../../node_modules/vuetify/lib/components/VEmptyState/VEmptyState.mjs","../../../../node_modules/vuetify/lib/components/VExpansionPanel/shared.mjs","../../../../node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanelText.mjs","../../../../node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs","../../../../node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanel.mjs","../../../../node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanels.mjs","../../../../node_modules/vuetify/lib/components/VFab/VFab.mjs","../../../../node_modules/vuetify/lib/components/VFileInput/VFileInput.mjs","../../../../node_modules/vuetify/lib/components/VForm/VForm.mjs","../../../../node_modules/vuetify/lib/components/VHover/VHover.mjs","../../../../node_modules/vuetify/lib/components/VInfiniteScroll/VInfiniteScroll.mjs","../../../../node_modules/vuetify/lib/components/VItemGroup/VItemGroup.mjs","../../../../node_modules/vuetify/lib/components/VItemGroup/VItem.mjs","../../../../node_modules/vuetify/lib/components/VKbd/index.mjs","../../../../node_modules/vuetify/lib/components/VLayout/VLayout.mjs","../../../../node_modules/vuetify/lib/components/VLayout/VLayoutItem.mjs","../../../../node_modules/vuetify/lib/components/VLazy/VLazy.mjs","../../../../node_modules/vuetify/lib/components/VLocaleProvider/VLocaleProvider.mjs","../../../../node_modules/vuetify/lib/components/VNavigationDrawer/sticky.mjs","../../../../node_modules/vuetify/lib/composables/touch.mjs","../../../../node_modules/vuetify/lib/components/VNavigationDrawer/touch.mjs","../../../../node_modules/vuetify/lib/components/VNavigationDrawer/VNavigationDrawer.mjs","../../../../node_modules/vuetify/lib/components/VNoSsr/VNoSsr.mjs","../../../../node_modules/vuetify/lib/components/VOtpInput/VOtpInput.mjs","../../../../node_modules/vuetify/lib/components/VParallax/VParallax.mjs","../../../../node_modules/vuetify/lib/components/VRadio/VRadio.mjs","../../../../node_modules/vuetify/lib/components/VRadioGroup/VRadioGroup.mjs","../../../../node_modules/vuetify/lib/components/VRangeSlider/VRangeSlider.mjs","../../../../node_modules/vuetify/lib/components/VRating/VRating.mjs","../../../../node_modules/vuetify/lib/components/VSkeletonLoader/VSkeletonLoader.mjs","../../../../node_modules/vuetify/lib/components/VSlideGroup/VSlideGroupItem.mjs","../../../../node_modules/vuetify/lib/components/VSnackbar/VSnackbar.mjs","../../../../node_modules/vuetify/lib/components/VSparkline/util/line.mjs","../../../../node_modules/vuetify/lib/components/VSparkline/VBarline.mjs","../../../../node_modules/vuetify/lib/components/VSparkline/util/path.mjs","../../../../node_modules/vuetify/lib/components/VSparkline/VTrendline.mjs","../../../../node_modules/vuetify/lib/components/VSparkline/VSparkline.mjs","../../../../node_modules/vuetify/lib/components/VSpeedDial/VSpeedDial.mjs","../../../../node_modules/vuetify/lib/components/VStepper/shared.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepperActions.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepperHeader.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepperItem.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepperWindow.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepperWindowItem.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepper.mjs","../../../../node_modules/vuetify/lib/components/VSwitch/VSwitch.mjs","../../../../node_modules/vuetify/lib/components/VSystemBar/VSystemBar.mjs","../../../../node_modules/vuetify/lib/components/VTabs/shared.mjs","../../../../node_modules/vuetify/lib/components/VTabs/VTab.mjs","../../../../node_modules/vuetify/lib/components/VTabs/VTabsWindow.mjs","../../../../node_modules/vuetify/lib/components/VTabs/VTabsWindowItem.mjs","../../../../node_modules/vuetify/lib/components/VTabs/VTabs.mjs","../../../../node_modules/vuetify/lib/components/VTextarea/VTextarea.mjs","../../../../node_modules/vuetify/lib/components/VThemeProvider/VThemeProvider.mjs","../../../../node_modules/vuetify/lib/components/VTimeline/VTimelineDivider.mjs","../../../../node_modules/vuetify/lib/components/VTimeline/VTimelineItem.mjs","../../../../node_modules/vuetify/lib/components/VTimeline/VTimeline.mjs","../../../../node_modules/vuetify/lib/components/VToolbar/VToolbarItems.mjs","../../../../node_modules/vuetify/lib/components/VTooltip/VTooltip.mjs","../../../../node_modules/vuetify/lib/components/VValidation/VValidation.mjs","../../../../node_modules/vuetify/lib/directives/mutate/index.mjs","../../../../node_modules/vuetify/lib/directives/resize/index.mjs","../../../../node_modules/vuetify/lib/directives/scroll/index.mjs","../../../../node_modules/vuetify/lib/composables/directiveComponent.mjs","../../../../node_modules/vuetify/lib/directives/tooltip/index.mjs","../../../../node_modules/vuetify/lib/framework.mjs","../../../../node_modules/vuetify/lib/iconsets/fa.mjs","../../src/plugins/vuetify.ts","../../src/plugins/webfontloader.ts","../../src/plugins/orbiter/consts.ts","../../src/plugins/orbiter/dev/index.ts","../../../../node_modules/tiny-typed-emitter/lib/index.js","../../../../node_modules/semaphore-async-await/dist/Semaphore.js","../../../../node_modules/semaphore-async-await/dist/Lock.js","../../../../node_modules/semaphore-async-await/dist/index.js","../../src/plugins/orbiter/types.ts","../../src/plugins/orbiter/utils.ts","../../src/plugins/orbiter/orbiter.ts","../../src/plugins/orbiter/index.ts","../../src/plugins/inscription/common.ts","../../src/plugins/inscription/browser.ts","../../../../node_modules/vue-router/dist/vue-router.mjs","../../src/views/aboutPage.vue","../../../../node_modules/@constl/vue/dist/utils.js","../../../../node_modules/@constl/vue/dist/suivi.js","../../src/components/users/utils.ts","../../src/views/accountPage.vue","../../src/views/buildingPage.vue","../../src/views/homePage.vue","../../src/components/initiateModDBs.vue","../../src/views/initPage.vue","../../../../node_modules/is-ipfs/dist/src/index.js","../../src/components/releases/newReleaseForm.vue","../../src/components/releases/videoPlayer.vue","../../src/views/releasePage.vue","../../src/plugins/router.ts","../../src/indexWeb.ts"],"sourcesContent":["function getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar browser = {exports: {}};\n\n// shim for using process in browser\nvar process = browser.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ());\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] };\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\nvar browserExports = browser.exports;\nconst process$1 = /*@__PURE__*/getDefaultExportFromCjs(browserExports);\n\nexport { process$1 as default, process$1 as process };\n//# sourceMappingURL=index.js.map\n","var buffer = {};\n\nvar base64Js = {};\n\nbase64Js.byteLength = byteLength;\nbase64Js.toByteArray = toByteArray;\nbase64Js.fromByteArray = fromByteArray;\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens (b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4);\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n var curByte = 0;\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen;\n\n var i;\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = (tmp >> 16) & 0xFF;\n arr[curByte++] = (tmp >> 8) & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[curByte++] = (tmp >> 8) & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n );\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n );\n }\n\n return parts.join('')\n}\n\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\n\nieee754.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = (nBytes * 8) - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n};\n\nieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = (nBytes * 8) - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n(function (exports) {\n\n\tconst base64 = base64Js;\n\tconst ieee754$1 = ieee754;\n\tconst customInspectSymbol =\n\t (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n\t ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n\t : null;\n\n\texports.Buffer = Buffer;\n\texports.SlowBuffer = SlowBuffer;\n\texports.INSPECT_MAX_BYTES = 50;\n\n\tconst K_MAX_LENGTH = 0x7fffffff;\n\texports.kMaxLength = K_MAX_LENGTH;\n\tconst { Uint8Array: GlobalUint8Array, ArrayBuffer: GlobalArrayBuffer, SharedArrayBuffer: GlobalSharedArrayBuffer } = globalThis;\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Print warning and recommend using `buffer` v4.x which has an Object\n\t * implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * We report that the browser does not support typed arrays if the are not subclassable\n\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t * for __proto__ and has a buggy typed array implementation.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t typeof console.error === 'function') {\n\t console.error(\n\t 'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t );\n\t}\n\n\tfunction typedArraySupport () {\n\t // Can typed array instances can be augmented?\n\t try {\n\t const arr = new GlobalUint8Array(1);\n\t const proto = { foo: function () { return 42 } };\n\t Object.setPrototypeOf(proto, GlobalUint8Array.prototype);\n\t Object.setPrototypeOf(arr, proto);\n\t return arr.foo() === 42\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\n\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.buffer\n\t }\n\t});\n\n\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.byteOffset\n\t }\n\t});\n\n\tfunction createBuffer (length) {\n\t if (length > K_MAX_LENGTH) {\n\t throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t }\n\t // Return an augmented `Uint8Array` instance\n\t const buf = new GlobalUint8Array(length);\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\t return buf\n\t}\n\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t if (typeof encodingOrOffset === 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be of type string. Received type number'\n\t )\n\t }\n\t return allocUnsafe(arg)\n\t }\n\t return from(arg, encodingOrOffset, length)\n\t}\n\n\tBuffer.poolSize = 8192; // not used by this implementation\n\n\tfunction from (value, encodingOrOffset, length) {\n\t if (typeof value === 'string') {\n\t return fromString(value, encodingOrOffset)\n\t }\n\n\t if (GlobalArrayBuffer.isView(value)) {\n\t return fromArrayView(value)\n\t }\n\n\t if (value == null) {\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t }\n\n\t if (isInstance(value, GlobalArrayBuffer) ||\n\t (value && isInstance(value.buffer, GlobalArrayBuffer))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof GlobalSharedArrayBuffer !== 'undefined' &&\n\t (isInstance(value, GlobalSharedArrayBuffer) ||\n\t (value && isInstance(value.buffer, GlobalSharedArrayBuffer)))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof value === 'number') {\n\t throw new TypeError(\n\t 'The \"value\" argument must not be of type number. Received type number'\n\t )\n\t }\n\n\t const valueOf = value.valueOf && value.valueOf();\n\t if (valueOf != null && valueOf !== value) {\n\t return Buffer.from(valueOf, encodingOrOffset, length)\n\t }\n\n\t const b = fromObject(value);\n\t if (b) return b\n\n\t if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t typeof value[Symbol.toPrimitive] === 'function') {\n\t return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n\t }\n\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t}\n\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t return from(value, encodingOrOffset, length)\n\t};\n\n\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t// https://github.com/feross/buffer/pull/148\n\tObject.setPrototypeOf(Buffer.prototype, GlobalUint8Array.prototype);\n\tObject.setPrototypeOf(Buffer, GlobalUint8Array);\n\n\tfunction assertSize (size) {\n\t if (typeof size !== 'number') {\n\t throw new TypeError('\"size\" argument must be of type number')\n\t } else if (size < 0) {\n\t throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t }\n\t}\n\n\tfunction alloc (size, fill, encoding) {\n\t assertSize(size);\n\t if (size <= 0) {\n\t return createBuffer(size)\n\t }\n\t if (fill !== undefined) {\n\t // Only pay attention to encoding if it's a string. This\n\t // prevents accidentally sending in a number that would\n\t // be interpreted as a start offset.\n\t return typeof encoding === 'string'\n\t ? createBuffer(size).fill(fill, encoding)\n\t : createBuffer(size).fill(fill)\n\t }\n\t return createBuffer(size)\n\t}\n\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t return alloc(size, fill, encoding)\n\t};\n\n\tfunction allocUnsafe (size) {\n\t assertSize(size);\n\t return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t}\n\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t return allocUnsafe(size)\n\t};\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t return allocUnsafe(size)\n\t};\n\n\tfunction fromString (string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') {\n\t encoding = 'utf8';\n\t }\n\n\t if (!Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\n\t const length = byteLength(string, encoding) | 0;\n\t let buf = createBuffer(length);\n\n\t const actual = buf.write(string, encoding);\n\n\t if (actual !== length) {\n\t // Writing a hex string, for example, that contains invalid characters will\n\t // cause everything after the first invalid character to be ignored. (e.g.\n\t // 'abxxcd' will be treated as 'ab')\n\t buf = buf.slice(0, actual);\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromArrayLike (array) {\n\t const length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t const buf = createBuffer(length);\n\t for (let i = 0; i < length; i += 1) {\n\t buf[i] = array[i] & 255;\n\t }\n\t return buf\n\t}\n\n\tfunction fromArrayView (arrayView) {\n\t if (isInstance(arrayView, GlobalUint8Array)) {\n\t const copy = new GlobalUint8Array(arrayView);\n\t return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n\t }\n\t return fromArrayLike(arrayView)\n\t}\n\n\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t throw new RangeError('\"offset\" is outside of buffer bounds')\n\t }\n\n\t if (array.byteLength < byteOffset + (length || 0)) {\n\t throw new RangeError('\"length\" is outside of buffer bounds')\n\t }\n\n\t let buf;\n\t if (byteOffset === undefined && length === undefined) {\n\t buf = new GlobalUint8Array(array);\n\t } else if (length === undefined) {\n\t buf = new GlobalUint8Array(array, byteOffset);\n\t } else {\n\t buf = new GlobalUint8Array(array, byteOffset, length);\n\t }\n\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t return buf\n\t}\n\n\tfunction fromObject (obj) {\n\t if (Buffer.isBuffer(obj)) {\n\t const len = checked(obj.length) | 0;\n\t const buf = createBuffer(len);\n\n\t if (buf.length === 0) {\n\t return buf\n\t }\n\n\t obj.copy(buf, 0, 0, len);\n\t return buf\n\t }\n\n\t if (obj.length !== undefined) {\n\t if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t return createBuffer(0)\n\t }\n\t return fromArrayLike(obj)\n\t }\n\n\t if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t return fromArrayLike(obj.data)\n\t }\n\t}\n\n\tfunction checked (length) {\n\t // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= K_MAX_LENGTH) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\n\tfunction SlowBuffer (length) {\n\t if (+length != length) { // eslint-disable-line eqeqeq\n\t length = 0;\n\t }\n\t return Buffer.alloc(+length)\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return b != null && b._isBuffer === true &&\n\t b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t};\n\n\tBuffer.compare = function compare (a, b) {\n\t if (isInstance(a, GlobalUint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t if (isInstance(b, GlobalUint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError(\n\t 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t )\n\t }\n\n\t if (a === b) return 0\n\n\t let x = a.length;\n\t let y = b.length;\n\n\t for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n\t if (a[i] !== b[i]) {\n\t x = a[i];\n\t y = b[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t case 'base64':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t if (!Array.isArray(list)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\n\t if (list.length === 0) {\n\t return Buffer.alloc(0)\n\t }\n\n\t let i;\n\t if (length === undefined) {\n\t length = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t length += list[i].length;\n\t }\n\t }\n\n\t const buffer = Buffer.allocUnsafe(length);\n\t let pos = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t let buf = list[i];\n\t if (isInstance(buf, GlobalUint8Array)) {\n\t if (pos + buf.length > buffer.length) {\n\t if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n\t buf.copy(buffer, pos);\n\t } else {\n\t GlobalUint8Array.prototype.set.call(\n\t buffer,\n\t buf,\n\t pos\n\t );\n\t }\n\t } else if (!Buffer.isBuffer(buf)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t } else {\n\t buf.copy(buffer, pos);\n\t }\n\t pos += buf.length;\n\t }\n\t return buffer\n\t};\n\n\tfunction byteLength (string, encoding) {\n\t if (Buffer.isBuffer(string)) {\n\t return string.length\n\t }\n\t if (GlobalArrayBuffer.isView(string) || isInstance(string, GlobalArrayBuffer)) {\n\t return string.byteLength\n\t }\n\t if (typeof string !== 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t 'Received type ' + typeof string\n\t )\n\t }\n\n\t const len = string.length;\n\t const mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t if (!mustMatch && len === 0) return 0\n\n\t // Use a for loop to avoid recursion\n\t let loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return len\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8ToBytes(string).length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return len * 2\n\t case 'hex':\n\t return len >>> 1\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t if (loweredCase) {\n\t return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t }\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\tBuffer.byteLength = byteLength;\n\n\tfunction slowToString (encoding, start, end) {\n\t let loweredCase = false;\n\n\t // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t // property of a typed array.\n\n\t // This behaves neither like String nor Uint8Array in that we set start/end\n\t // to their upper/lower bounds if the value passed is out of range.\n\t // undefined is handled specially as per ECMA-262 6th Edition,\n\t // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t if (start === undefined || start < 0) {\n\t start = 0;\n\t }\n\t // Return early if start > this.length. Done here to prevent potential uint32\n\t // coercion fail below.\n\t if (start > this.length) {\n\t return ''\n\t }\n\n\t if (end === undefined || end > this.length) {\n\t end = this.length;\n\t }\n\n\t if (end <= 0) {\n\t return ''\n\t }\n\n\t // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\t end >>>= 0;\n\t start >>>= 0;\n\n\t if (end <= start) {\n\t return ''\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\n\t case 'latin1':\n\t case 'binary':\n\t return latin1Slice(this, start, end)\n\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\n\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t// reliably in a browserify context because there could be multiple different\n\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t// instances that were created from another copy of the `buffer` package.\n\t// See: https://github.com/feross/buffer/issues/154\n\tBuffer.prototype._isBuffer = true;\n\n\tfunction swap (b, n, m) {\n\t const i = b[n];\n\t b[n] = b[m];\n\t b[m] = i;\n\t}\n\n\tBuffer.prototype.swap16 = function swap16 () {\n\t const len = this.length;\n\t if (len % 2 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t }\n\t for (let i = 0; i < len; i += 2) {\n\t swap(this, i, i + 1);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap32 = function swap32 () {\n\t const len = this.length;\n\t if (len % 4 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t }\n\t for (let i = 0; i < len; i += 4) {\n\t swap(this, i, i + 3);\n\t swap(this, i + 1, i + 2);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap64 = function swap64 () {\n\t const len = this.length;\n\t if (len % 8 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t }\n\t for (let i = 0; i < len; i += 8) {\n\t swap(this, i, i + 7);\n\t swap(this, i + 1, i + 6);\n\t swap(this, i + 2, i + 5);\n\t swap(this, i + 3, i + 4);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.toString = function toString () {\n\t const length = this.length;\n\t if (length === 0) return ''\n\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t return slowToString.apply(this, arguments)\n\t};\n\n\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t};\n\n\tBuffer.prototype.inspect = function inspect () {\n\t let str = '';\n\t const max = exports.INSPECT_MAX_BYTES;\n\t str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t if (this.length > max) str += ' ... ';\n\t return ''\n\t};\n\tif (customInspectSymbol) {\n\t Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t}\n\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t if (isInstance(target, GlobalUint8Array)) {\n\t target = Buffer.from(target, target.offset, target.byteLength);\n\t }\n\t if (!Buffer.isBuffer(target)) {\n\t throw new TypeError(\n\t 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t 'Received type ' + (typeof target)\n\t )\n\t }\n\n\t if (start === undefined) {\n\t start = 0;\n\t }\n\t if (end === undefined) {\n\t end = target ? target.length : 0;\n\t }\n\t if (thisStart === undefined) {\n\t thisStart = 0;\n\t }\n\t if (thisEnd === undefined) {\n\t thisEnd = this.length;\n\t }\n\n\t if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t throw new RangeError('out of range index')\n\t }\n\n\t if (thisStart >= thisEnd && start >= end) {\n\t return 0\n\t }\n\t if (thisStart >= thisEnd) {\n\t return -1\n\t }\n\t if (start >= end) {\n\t return 1\n\t }\n\n\t start >>>= 0;\n\t end >>>= 0;\n\t thisStart >>>= 0;\n\t thisEnd >>>= 0;\n\n\t if (this === target) return 0\n\n\t let x = thisEnd - thisStart;\n\t let y = end - start;\n\t const len = Math.min(x, y);\n\n\t const thisCopy = this.slice(thisStart, thisEnd);\n\t const targetCopy = target.slice(start, end);\n\n\t for (let i = 0; i < len; ++i) {\n\t if (thisCopy[i] !== targetCopy[i]) {\n\t x = thisCopy[i];\n\t y = targetCopy[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t//\n\t// Arguments:\n\t// - buffer - a Buffer to search\n\t// - val - a string, Buffer, or number\n\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t// - encoding - an optional encoding, relevant is val is a string\n\t// - dir - true for indexOf, false for lastIndexOf\n\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t // Empty buffer means no match\n\t if (buffer.length === 0) return -1\n\n\t // Normalize byteOffset\n\t if (typeof byteOffset === 'string') {\n\t encoding = byteOffset;\n\t byteOffset = 0;\n\t } else if (byteOffset > 0x7fffffff) {\n\t byteOffset = 0x7fffffff;\n\t } else if (byteOffset < -0x80000000) {\n\t byteOffset = -0x80000000;\n\t }\n\t byteOffset = +byteOffset; // Coerce to Number.\n\t if (numberIsNaN(byteOffset)) {\n\t // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t byteOffset = dir ? 0 : (buffer.length - 1);\n\t }\n\n\t // Normalize byteOffset: negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t if (byteOffset >= buffer.length) {\n\t if (dir) return -1\n\t else byteOffset = buffer.length - 1;\n\t } else if (byteOffset < 0) {\n\t if (dir) byteOffset = 0;\n\t else return -1\n\t }\n\n\t // Normalize val\n\t if (typeof val === 'string') {\n\t val = Buffer.from(val, encoding);\n\t }\n\n\t // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t if (Buffer.isBuffer(val)) {\n\t // Special case: looking for empty string/buffer always fails\n\t if (val.length === 0) {\n\t return -1\n\t }\n\t return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t } else if (typeof val === 'number') {\n\t val = val & 0xFF; // Search for a byte value [0-255]\n\t if (typeof GlobalUint8Array.prototype.indexOf === 'function') {\n\t if (dir) {\n\t return GlobalUint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t } else {\n\t return GlobalUint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t }\n\t }\n\t return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t }\n\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t let indexSize = 1;\n\t let arrLength = arr.length;\n\t let valLength = val.length;\n\n\t if (encoding !== undefined) {\n\t encoding = String(encoding).toLowerCase();\n\t if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t encoding === 'utf16le' || encoding === 'utf-16le') {\n\t if (arr.length < 2 || val.length < 2) {\n\t return -1\n\t }\n\t indexSize = 2;\n\t arrLength /= 2;\n\t valLength /= 2;\n\t byteOffset /= 2;\n\t }\n\t }\n\n\t function read (buf, i) {\n\t if (indexSize === 1) {\n\t return buf[i]\n\t } else {\n\t return buf.readUInt16BE(i * indexSize)\n\t }\n\t }\n\n\t let i;\n\t if (dir) {\n\t let foundIndex = -1;\n\t for (i = byteOffset; i < arrLength; i++) {\n\t if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t if (foundIndex === -1) foundIndex = i;\n\t if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t } else {\n\t if (foundIndex !== -1) i -= i - foundIndex;\n\t foundIndex = -1;\n\t }\n\t }\n\t } else {\n\t if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t for (i = byteOffset; i >= 0; i--) {\n\t let found = true;\n\t for (let j = 0; j < valLength; j++) {\n\t if (read(arr, i + j) !== read(val, j)) {\n\t found = false;\n\t break\n\t }\n\t }\n\t if (found) return i\n\t }\n\t }\n\n\t return -1\n\t}\n\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t return this.indexOf(val, byteOffset, encoding) !== -1\n\t};\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t};\n\n\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t};\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0;\n\t const remaining = buf.length - offset;\n\t if (!length) {\n\t length = remaining;\n\t } else {\n\t length = Number(length);\n\t if (length > remaining) {\n\t length = remaining;\n\t }\n\t }\n\n\t const strLen = string.length;\n\n\t if (length > strLen / 2) {\n\t length = strLen / 2;\n\t }\n\t let i;\n\t for (i = 0; i < length; ++i) {\n\t const parsed = parseInt(string.substr(i * 2, 2), 16);\n\t if (numberIsNaN(parsed)) return i\n\t buf[offset + i] = parsed;\n\t }\n\t return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8';\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset;\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset >>> 0;\n\t if (isFinite(length)) {\n\t length = length >>> 0;\n\t if (encoding === undefined) encoding = 'utf8';\n\t } else {\n\t encoding = length;\n\t length = undefined;\n\t }\n\t } else {\n\t throw new Error(\n\t 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t )\n\t }\n\n\t const remaining = this.length - offset;\n\t if (length === undefined || length > remaining) length = remaining;\n\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('Attempt to write outside buffer bounds')\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t let loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return asciiWrite(this, string, offset, length)\n\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t};\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t};\n\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t end = Math.min(buf.length, end);\n\t const res = [];\n\n\t let i = start;\n\t while (i < end) {\n\t const firstByte = buf[i];\n\t let codePoint = null;\n\t let bytesPerSequence = (firstByte > 0xEF)\n\t ? 4\n\t : (firstByte > 0xDF)\n\t ? 3\n\t : (firstByte > 0xBF)\n\t ? 2\n\t : 1;\n\n\t if (i + bytesPerSequence <= end) {\n\t let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t switch (bytesPerSequence) {\n\t case 1:\n\t if (firstByte < 0x80) {\n\t codePoint = firstByte;\n\t }\n\t break\n\t case 2:\n\t secondByte = buf[i + 1];\n\t if ((secondByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t if (tempCodePoint > 0x7F) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 3:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 4:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t fourthByte = buf[i + 3];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t }\n\t }\n\n\t if (codePoint === null) {\n\t // we did not generate a valid codePoint so insert a\n\t // replacement char (U+FFFD) and advance only 1 byte\n\t codePoint = 0xFFFD;\n\t bytesPerSequence = 1;\n\t } else if (codePoint > 0xFFFF) {\n\t // encode to utf16 (surrogate pair dance)\n\t codePoint -= 0x10000;\n\t res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t codePoint = 0xDC00 | codePoint & 0x3FF;\n\t }\n\n\t res.push(codePoint);\n\t i += bytesPerSequence;\n\t }\n\n\t return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tconst MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t const len = codePoints.length;\n\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t }\n\n\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t let res = '';\n\t let i = 0;\n\t while (i < len) {\n\t res += String.fromCharCode.apply(\n\t String,\n\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t );\n\t }\n\t return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t let ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (let i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i] & 0x7F);\n\t }\n\t return ret\n\t}\n\n\tfunction latin1Slice (buf, start, end) {\n\t let ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (let i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i]);\n\t }\n\t return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t const len = buf.length;\n\n\t if (!start || start < 0) start = 0;\n\t if (!end || end < 0 || end > len) end = len;\n\n\t let out = '';\n\t for (let i = start; i < end; ++i) {\n\t out += hexSliceLookupTable[buf[i]];\n\t }\n\t return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t const bytes = buf.slice(start, end);\n\t let res = '';\n\t // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\t for (let i = 0; i < bytes.length - 1; i += 2) {\n\t res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t }\n\t return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t const len = this.length;\n\t start = ~~start;\n\t end = end === undefined ? len : ~~end;\n\n\t if (start < 0) {\n\t start += len;\n\t if (start < 0) start = 0;\n\t } else if (start > len) {\n\t start = len;\n\t }\n\n\t if (end < 0) {\n\t end += len;\n\t if (end < 0) end = 0;\n\t } else if (end > len) {\n\t end = len;\n\t }\n\n\t if (end < start) end = start;\n\n\t const newBuf = this.subarray(start, end);\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t return newBuf\n\t};\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUintLE =\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let val = this[offset];\n\t let mul = 1;\n\t let i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUintBE =\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length);\n\t }\n\n\t let val = this[offset + --byteLength];\n\t let mul = 1;\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUint8 =\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t return this[offset]\n\t};\n\n\tBuffer.prototype.readUint16LE =\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return this[offset] | (this[offset + 1] << 8)\n\t};\n\n\tBuffer.prototype.readUint16BE =\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return (this[offset] << 8) | this[offset + 1]\n\t};\n\n\tBuffer.prototype.readUint32LE =\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t};\n\n\tBuffer.prototype.readUint32BE =\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const lo = first +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 24;\n\n\t const hi = this[++offset] +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t last * 2 ** 24;\n\n\t return BigInt(lo) + (BigInt(hi) << BigInt(32))\n\t});\n\n\tBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const hi = first * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset];\n\n\t const lo = this[++offset] * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t last;\n\n\t return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n\t});\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let val = this[offset];\n\t let mul = 1;\n\t let i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let i = byteLength;\n\t let mul = 1;\n\t let val = this[offset + --i];\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t};\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t const val = this[offset] | (this[offset + 1] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t const val = this[offset + 1] | (this[offset] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t};\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const val = this[offset + 4] +\n\t this[offset + 5] * 2 ** 8 +\n\t this[offset + 6] * 2 ** 16 +\n\t (last << 24); // Overflow\n\n\t return (BigInt(val) << BigInt(32)) +\n\t BigInt(first +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 24)\n\t});\n\n\tBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const val = (first << 24) + // Overflow\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset];\n\n\t return (BigInt(val) << BigInt(32)) +\n\t BigInt(this[++offset] * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t last)\n\t});\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754$1.read(this, offset, true, 23, 4)\n\t};\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754$1.read(this, offset, false, 23, 4)\n\t};\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754$1.read(this, offset, true, 52, 8)\n\t};\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754$1.read(this, offset, false, 52, 8)\n\t};\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\n\tBuffer.prototype.writeUintLE =\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t let mul = 1;\n\t let i = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUintBE =\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t let i = byteLength - 1;\n\t let mul = 1;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUint8 =\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeUint16LE =\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint16BE =\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint32LE =\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset + 3] = (value >>> 24);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeUint32BE =\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t let lo = Number(value & BigInt(0xffffffff));\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t return offset\n\t}\n\n\tfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t let lo = Number(value & BigInt(0xffffffff));\n\t buf[offset + 7] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 6] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 5] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 4] = lo;\n\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t buf[offset + 3] = hi;\n\t hi = hi >> 8;\n\t buf[offset + 2] = hi;\n\t hi = hi >> 8;\n\t buf[offset + 1] = hi;\n\t hi = hi >> 8;\n\t buf[offset] = hi;\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n\t return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n\t return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t let i = 0;\n\t let mul = 1;\n\t let sub = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t let i = byteLength - 1;\n\t let mul = 1;\n\t let sub = 0;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n\t if (value < 0) value = 0xff + value + 1;\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 3] = (value >>> 24);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t if (value < 0) value = 0xffffffff + value + 1;\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n\t return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n\t return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4);\n\t }\n\t ieee754$1.write(buf, value, offset, littleEndian, 23, 4);\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t};\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8);\n\t }\n\t ieee754$1.write(buf, value, offset, littleEndian, 52, 8);\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t};\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t if (!start) start = 0;\n\t if (!end && end !== 0) end = this.length;\n\t if (targetStart >= target.length) targetStart = target.length;\n\t if (!targetStart) targetStart = 0;\n\t if (end > 0 && end < start) end = start;\n\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t // Are we oob?\n\t if (end > this.length) end = this.length;\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start;\n\t }\n\n\t const len = end - start;\n\n\t if (this === target && typeof GlobalUint8Array.prototype.copyWithin === 'function') {\n\t // Use built-in when available, missing from IE11\n\t this.copyWithin(targetStart, start, end);\n\t } else {\n\t GlobalUint8Array.prototype.set.call(\n\t target,\n\t this.subarray(start, end),\n\t targetStart\n\t );\n\t }\n\n\t return len\n\t};\n\n\t// Usage:\n\t// buffer.fill(number[, offset[, end]])\n\t// buffer.fill(buffer[, offset[, end]])\n\t// buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t // Handle string cases:\n\t if (typeof val === 'string') {\n\t if (typeof start === 'string') {\n\t encoding = start;\n\t start = 0;\n\t end = this.length;\n\t } else if (typeof end === 'string') {\n\t encoding = end;\n\t end = this.length;\n\t }\n\t if (encoding !== undefined && typeof encoding !== 'string') {\n\t throw new TypeError('encoding must be a string')\n\t }\n\t if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\t if (val.length === 1) {\n\t const code = val.charCodeAt(0);\n\t if ((encoding === 'utf8' && code < 128) ||\n\t encoding === 'latin1') {\n\t // Fast path: If `val` fits into a single byte, use that numeric value.\n\t val = code;\n\t }\n\t }\n\t } else if (typeof val === 'number') {\n\t val = val & 255;\n\t } else if (typeof val === 'boolean') {\n\t val = Number(val);\n\t }\n\n\t // Invalid ranges are not set to a default, so can range check early.\n\t if (start < 0 || this.length < start || this.length < end) {\n\t throw new RangeError('Out of range index')\n\t }\n\n\t if (end <= start) {\n\t return this\n\t }\n\n\t start = start >>> 0;\n\t end = end === undefined ? this.length : end >>> 0;\n\n\t if (!val) val = 0;\n\n\t let i;\n\t if (typeof val === 'number') {\n\t for (i = start; i < end; ++i) {\n\t this[i] = val;\n\t }\n\t } else {\n\t const bytes = Buffer.isBuffer(val)\n\t ? val\n\t : Buffer.from(val, encoding);\n\t const len = bytes.length;\n\t if (len === 0) {\n\t throw new TypeError('The value \"' + val +\n\t '\" is invalid for argument \"value\"')\n\t }\n\t for (i = 0; i < end - start; ++i) {\n\t this[i + start] = bytes[i % len];\n\t }\n\t }\n\n\t return this\n\t};\n\n\t// CUSTOM ERRORS\n\t// =============\n\n\t// Simplified versions from Node, changed for Buffer-only usage\n\tconst errors = {};\n\tfunction E (sym, getMessage, Base) {\n\t errors[sym] = class NodeError extends Base {\n\t constructor () {\n\t super();\n\n\t Object.defineProperty(this, 'message', {\n\t value: getMessage.apply(this, arguments),\n\t writable: true,\n\t configurable: true\n\t });\n\n\t // Add the error code to the name to include it in the stack trace.\n\t this.name = `${this.name} [${sym}]`;\n\t // Access the stack to generate the error message including the error code\n\t // from the name.\n\t this.stack; // eslint-disable-line no-unused-expressions\n\t // Reset the name to the actual name.\n\t delete this.name;\n\t }\n\n\t get code () {\n\t return sym\n\t }\n\n\t set code (value) {\n\t Object.defineProperty(this, 'code', {\n\t configurable: true,\n\t enumerable: true,\n\t value,\n\t writable: true\n\t });\n\t }\n\n\t toString () {\n\t return `${this.name} [${sym}]: ${this.message}`\n\t }\n\t };\n\t}\n\n\tE('ERR_BUFFER_OUT_OF_BOUNDS',\n\t function (name) {\n\t if (name) {\n\t return `${name} is outside of buffer bounds`\n\t }\n\n\t return 'Attempt to access memory outside buffer bounds'\n\t }, RangeError);\n\tE('ERR_INVALID_ARG_TYPE',\n\t function (name, actual) {\n\t return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n\t }, TypeError);\n\tE('ERR_OUT_OF_RANGE',\n\t function (str, range, input) {\n\t let msg = `The value of \"${str}\" is out of range.`;\n\t let received = input;\n\t if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n\t received = addNumericalSeparator(String(input));\n\t } else if (typeof input === 'bigint') {\n\t received = String(input);\n\t if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n\t received = addNumericalSeparator(received);\n\t }\n\t received += 'n';\n\t }\n\t msg += ` It must be ${range}. Received ${received}`;\n\t return msg\n\t }, RangeError);\n\n\tfunction addNumericalSeparator (val) {\n\t let res = '';\n\t let i = val.length;\n\t const start = val[0] === '-' ? 1 : 0;\n\t for (; i >= start + 4; i -= 3) {\n\t res = `_${val.slice(i - 3, i)}${res}`;\n\t }\n\t return `${val.slice(0, i)}${res}`\n\t}\n\n\t// CHECK FUNCTIONS\n\t// ===============\n\n\tfunction checkBounds (buf, offset, byteLength) {\n\t validateNumber(offset, 'offset');\n\t if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n\t boundsError(offset, buf.length - (byteLength + 1));\n\t }\n\t}\n\n\tfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n\t if (value > max || value < min) {\n\t const n = typeof min === 'bigint' ? 'n' : '';\n\t let range;\n\t if (byteLength > 3) {\n\t if (min === 0 || min === BigInt(0)) {\n\t range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n\t } else {\n\t range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n\t `${(byteLength + 1) * 8 - 1}${n}`;\n\t }\n\t } else {\n\t range = `>= ${min}${n} and <= ${max}${n}`;\n\t }\n\t throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n\t }\n\t checkBounds(buf, offset, byteLength);\n\t}\n\n\tfunction validateNumber (value, name) {\n\t if (typeof value !== 'number') {\n\t throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n\t }\n\t}\n\n\tfunction boundsError (value, length, type) {\n\t if (Math.floor(value) !== value) {\n\t validateNumber(value, type);\n\t throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n\t }\n\n\t if (length < 0) {\n\t throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n\t }\n\n\t throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n\t `>= ${type ? 1 : 0} and <= ${length}`,\n\t value)\n\t}\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\tfunction base64clean (str) {\n\t // Node takes equal signs as end of the Base64 encoding\n\t str = str.split('=')[0];\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = str.trim().replace(INVALID_BASE64_RE, '');\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '=';\n\t }\n\t return str\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity;\n\t let codePoint;\n\t const length = string.length;\n\t let leadSurrogate = null;\n\t const bytes = [];\n\n\t for (let i = 0; i < length; ++i) {\n\t codePoint = string.charCodeAt(i);\n\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t }\n\n\t // valid lead\n\t leadSurrogate = codePoint;\n\n\t continue\n\t }\n\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t leadSurrogate = codePoint;\n\t continue\n\t }\n\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t }\n\n\t leadSurrogate = null;\n\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint);\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\n\t return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t const byteArray = [];\n\t for (let i = 0; i < str.length; ++i) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF);\n\t }\n\t return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t let c, hi, lo;\n\t const byteArray = [];\n\t for (let i = 0; i < str.length; ++i) {\n\t if ((units -= 2) < 0) break\n\n\t c = str.charCodeAt(i);\n\t hi = c >> 8;\n\t lo = c % 256;\n\t byteArray.push(lo);\n\t byteArray.push(hi);\n\t }\n\n\t return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t let i;\n\t for (i = 0; i < length; ++i) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i];\n\t }\n\t return i\n\t}\n\n\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t// the `instanceof` check but they should be treated as of that type.\n\t// See: https://github.com/feross/buffer/issues/166\n\tfunction isInstance (obj, type) {\n\t return obj instanceof type ||\n\t (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t obj.constructor.name === type.name)\n\t}\n\tfunction numberIsNaN (obj) {\n\t // For IE11 support\n\t return obj !== obj // eslint-disable-line no-self-compare\n\t}\n\n\t// Create lookup table for `toString('hex')`\n\t// See: https://github.com/feross/buffer/issues/219\n\tconst hexSliceLookupTable = (function () {\n\t const alphabet = '0123456789abcdef';\n\t const table = new Array(256);\n\t for (let i = 0; i < 16; ++i) {\n\t const i16 = i * 16;\n\t for (let j = 0; j < 16; ++j) {\n\t table[i16 + j] = alphabet[i] + alphabet[j];\n\t }\n\t }\n\t return table\n\t})();\n\n\t// Return not function with Error if BigInt not supported\n\tfunction defineBigIntMethod (fn) {\n\t return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n\t}\n\n\tfunction BufferBigIntNotDefined () {\n\t throw new Error('BigInt not supported')\n\t} \n} (buffer));\n\nconst Buffer = buffer.Buffer;\n\nconst Blob = buffer.Blob;\nconst BlobOptions = buffer.BlobOptions;\nconst Buffer$1 = buffer.Buffer;\nconst File = buffer.File;\nconst FileOptions = buffer.FileOptions;\nconst INSPECT_MAX_BYTES = buffer.INSPECT_MAX_BYTES;\nconst SlowBuffer = buffer.SlowBuffer;\nconst TranscodeEncoding = buffer.TranscodeEncoding;\nconst atob = buffer.atob;\nconst btoa = buffer.btoa;\nconst constants = buffer.constants;\nconst isAscii = buffer.isAscii;\nconst isUtf8 = buffer.isUtf8;\nconst kMaxLength = buffer.kMaxLength;\nconst kStringMaxLength = buffer.kStringMaxLength;\nconst resolveObjectURL = buffer.resolveObjectURL;\nconst transcode = buffer.transcode;\nexport { Blob, BlobOptions, Buffer$1 as Buffer, File, FileOptions, INSPECT_MAX_BYTES, SlowBuffer, TranscodeEncoding, atob, btoa, constants, Buffer as default, isAscii, isUtf8, kMaxLength, kStringMaxLength, resolveObjectURL, transcode };\n//# sourceMappingURL=index.js.map\n","\n import process from \"process\";\n import { Buffer } from \"buffer\";\n window.Buffer = Buffer;\n window.process = process;\n ","const global = globalThis || void 0 || self;\n\nexport { global as default, global };\n//# sourceMappingURL=index.js.map\n","/**\n* @vue/shared v3.4.31\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str, expectsLowerCase) {\n const set = new Set(str.split(\",\"));\n return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](...arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"HOISTED\": -1,\n \"-1\": \"HOISTED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n start = Math.max(0, Math.min(start, source.length));\n end = Math.max(0, Math.min(end, source.length));\n if (start > end) return \"\";\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n if (isString(value) || typeof value === \"number\") {\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props) return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>| looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n return !!(val && val.__v_isRef === true);\n};\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (isRef(val)) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.4.31\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { NOOP, extend, isArray, isSymbol, isMap, isIntegerKey, hasOwn, hasChanged, isObject, makeMap, capitalize, toRawType, def, isFunction } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n constructor(fn, trigger, scheduler, scope) {\n this.fn = fn;\n this.trigger = trigger;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n /**\n * @internal\n */\n this._dirtyLevel = 4;\n /**\n * @internal\n */\n this._trackId = 0;\n /**\n * @internal\n */\n this._runnings = 0;\n /**\n * @internal\n */\n this._shouldSchedule = false;\n /**\n * @internal\n */\n this._depsLength = 0;\n recordEffectScope(this, scope);\n }\n get dirty() {\n if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {\n this._dirtyLevel = 1;\n pauseTracking();\n for (let i = 0; i < this._depsLength; i++) {\n const dep = this.deps[i];\n if (dep.computed) {\n triggerComputed(dep.computed);\n if (this._dirtyLevel >= 4) {\n break;\n }\n }\n }\n if (this._dirtyLevel === 1) {\n this._dirtyLevel = 0;\n }\n resetTracking();\n }\n return this._dirtyLevel >= 4;\n }\n set dirty(v) {\n this._dirtyLevel = v ? 4 : 0;\n }\n run() {\n this._dirtyLevel = 0;\n if (!this.active) {\n return this.fn();\n }\n let lastShouldTrack = shouldTrack;\n let lastEffect = activeEffect;\n try {\n shouldTrack = true;\n activeEffect = this;\n this._runnings++;\n preCleanupEffect(this);\n return this.fn();\n } finally {\n postCleanupEffect(this);\n this._runnings--;\n activeEffect = lastEffect;\n shouldTrack = lastShouldTrack;\n }\n }\n stop() {\n if (this.active) {\n preCleanupEffect(this);\n postCleanupEffect(this);\n this.onStop && this.onStop();\n this.active = false;\n }\n }\n}\nfunction triggerComputed(computed) {\n return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n effect2._trackId++;\n effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n if (effect2.deps.length > effect2._depsLength) {\n for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n cleanupDepEffect(effect2.deps[i], effect2);\n }\n effect2.deps.length = effect2._depsLength;\n }\n}\nfunction cleanupDepEffect(dep, effect2) {\n const trackId = dep.get(effect2);\n if (trackId !== void 0 && effect2._trackId !== trackId) {\n dep.delete(effect2);\n if (dep.size === 0) {\n dep.cleanup();\n }\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn, NOOP, () => {\n if (_effect.dirty) {\n _effect.run();\n }\n });\n if (options) {\n extend(_effect, options);\n if (options.scope) recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n pauseScheduleStack++;\n}\nfunction resetScheduling() {\n pauseScheduleStack--;\n while (!pauseScheduleStack && queueEffectSchedulers.length) {\n queueEffectSchedulers.shift()();\n }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n var _a;\n if (dep.get(effect2) !== effect2._trackId) {\n dep.set(effect2, effect2._trackId);\n const oldDep = effect2.deps[effect2._depsLength];\n if (oldDep !== dep) {\n if (oldDep) {\n cleanupDepEffect(oldDep, effect2);\n }\n effect2.deps[effect2._depsLength++] = dep;\n } else {\n effect2._depsLength++;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n var _a;\n pauseScheduling();\n for (const effect2 of dep.keys()) {\n let tracking;\n if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);\n effect2._dirtyLevel = dirtyLevel;\n }\n if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n effect2.trigger();\n if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {\n effect2._shouldSchedule = false;\n if (effect2.scheduler) {\n queueEffectSchedulers.push(effect2.scheduler);\n }\n }\n }\n }\n resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n const dep = /* @__PURE__ */ new Map();\n dep.cleanup = cleanup;\n dep.computed = computed;\n return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n }\n trackEffect(\n activeEffect,\n dep,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key\n } : void 0\n );\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n pauseScheduling();\n for (const dep of deps) {\n if (dep) {\n triggerEffects(\n dep,\n 4,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : void 0\n );\n }\n }\n resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n const depsMap = targetMap.get(object);\n return depsMap && depsMap.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n pauseScheduling();\n const res = toRaw(this)[key].apply(this, args);\n resetScheduling();\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the reciever is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\"];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nconst COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this.getter = getter;\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this.effect = new ReactiveEffect(\n () => getter(this._value),\n () => triggerRefValue(\n this,\n this.effect._dirtyLevel === 2 ? 2 : 3\n )\n );\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {\n triggerRefValue(self, 4);\n }\n trackRefValue(self);\n if (self.effect._dirtyLevel >= 2) {\n if (!!(process.env.NODE_ENV !== \"production\") && this._warnRecursive) {\n warn(COMPUTED_SIDE_EFFECT_WARN, `\n\ngetter: `, this.getter);\n }\n triggerRefValue(self, 2);\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n get _dirty() {\n return this.effect.dirty;\n }\n set _dirty(v) {\n this.effect.dirty = v;\n }\n // #endregion\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nfunction trackRefValue(ref2) {\n var _a;\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n trackEffect(\n activeEffect,\n (_a = ref2.dep) != null ? _a : ref2.dep = createDep(\n () => ref2.dep = void 0,\n ref2 instanceof ComputedRefImpl ? ref2 : void 0\n ),\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"get\",\n key: \"value\"\n } : void 0\n );\n }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 4, newVal, oldVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n triggerEffects(\n dep,\n dirtyLevel,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal,\n oldValue: oldVal\n } : void 0\n );\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n const oldVal = this._rawValue;\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, 4, newVal, oldVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, 4, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst deferredComputed = computed;\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\"\n};\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseScheduling, pauseTracking, proxyRefs, reactive, readonly, ref, resetScheduling, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, track, trigger, triggerRef, unref };\n","/**\n* @vue/runtime-core v3.4.31\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, shallowReadonly, ref, track, reactive, shallowReactive, trigger, ReactiveEffect, isShallow, isReactive, getCurrentScope, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, customRef, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, looseToNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, capitalize, toNumber, isBuiltInDirective, isGloballyAllowed, NO, isReservedProp, EMPTY_ARR, toRawType, makeMap, def, remove, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, invokeArrayFns, hasChanged, isSet, isMap, isPlainObject, isRegExp } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn$1(msg, ...args) {\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n // eslint-disable-next-line no-restricted-syntax\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\")) return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n pauseTracking();\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.pre) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n const cb = activePostFlushCbs[postFlushIndex];\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n if (cb.active !== false) cb();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre) return -1;\n if (b.pre && !a.pre) return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n instance.effect.dirty = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record) return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.add(oldComp);\n }\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n } else if (instance.parent) {\n instance.parent.effect.dirty = true;\n queueJob(() => {\n instance.parent.update();\n hmrDirtyComponents.delete(oldComp);\n });\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n }\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(\n normalizeClassComponent(instance.type)\n );\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n // eslint-disable-next-line no-restricted-syntax\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted) return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx) return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n props,\n data,\n setupState,\n ctx,\n inheritAttrs\n } = instance;\n const prev = setCurrentRenderingInstance(instance);\n let result;\n let fallthroughAttrs;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4) {\n const proxyToUse = withProxy || proxy;\n const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n get(target, key, receiver) {\n warn$1(\n `Property '${String(\n key\n )}' was accessed via 'this'. Avoid using 'this' in templates.`\n );\n return Reflect.get(target, key, receiver);\n }\n }) : proxyToUse;\n result = normalizeVNode(\n render.call(\n thisProxy,\n proxyToUse,\n renderCache,\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n setupState,\n data,\n ctx\n )\n );\n fallthroughAttrs = attrs;\n } else {\n const render2 = Component;\n if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(\n render2.length > 1 ? render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get attrs() {\n markAttrsAccessed();\n return shallowReadonly(attrs);\n },\n slots,\n emit\n } : { attrs, slots, emit }\n ) : render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n null\n )\n );\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1);\n result = createVNode(Comment);\n }\n let root = result;\n let setRoot = void 0;\n if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 | 6)) {\n if (propsOptions && keys.some(isModelListener)) {\n fallthroughAttrs = filterModelListeners(\n fallthroughAttrs,\n propsOptions\n );\n }\n root = cloneVNode(root, fallthroughAttrs, false, true);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n if (!isModelListener(key)) {\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n } else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn$1(\n `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n );\n }\n if (eventAttrs.length) {\n warn$1(\n `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n );\n }\n }\n }\n }\n if (vnode.dirs) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n );\n }\n root = cloneVNode(root, null, false, true);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n if (vnode.transition) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Component inside renders non-element root node that cannot be animated.`\n );\n }\n root.transition = vnode.transition;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n setRoot(root);\n } else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren, false);\n if (!childRoot) {\n return [vnode, void 0];\n } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n return getChildRoot(childRoot);\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n } else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n if (child.type !== Comment || child.children === \"v-if\") {\n if (singleRoot) {\n return;\n } else {\n singleRoot = child;\n if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n return filterSingleRoot(singleRoot.children);\n }\n }\n }\n } else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024) {\n return true;\n }\n if (patchFlag & 16) {\n if (!prevProps) {\n return !!nextProps;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n } else if (patchFlag & 8) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n } else {\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n while (parent) {\n const root = parent.subTree;\n if (root.suspense && root.suspense.activeBranch === vnode) {\n root.el = vnode.el;\n }\n if (root === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n } else {\n break;\n }\n }\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n name: \"Suspense\",\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n if (n1 == null) {\n mountSuspense(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n } else {\n if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n n2.suspense = n1.suspense;\n n2.suspense.vnode = n2;\n n2.el = n1.el;\n return;\n }\n patchSuspense(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n }\n },\n hydrate: hydrateSuspense,\n normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n const {\n p: patch,\n o: { createElement }\n } = rendererInternals;\n const hiddenContainer = createElement(\"div\");\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n container,\n hiddenContainer,\n anchor,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n patch(\n null,\n suspense.pendingBranch = vnode.ssContent,\n hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds\n );\n if (suspense.deps > 0) {\n triggerEvent(vnode, \"onPending\");\n triggerEvent(vnode, \"onFallback\");\n patch(\n null,\n vnode.ssFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds\n );\n setActiveBranch(suspense, vnode.ssFallback);\n } else {\n suspense.resolve(false, true);\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = n2.suspense = n1.suspense;\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n patch(\n pendingBranch,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else if (isInFallback) {\n if (!isHydrating) {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n }\n } else {\n suspense.pendingId = suspenseId++;\n if (isHydrating) {\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n } else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n suspense.deps = 0;\n suspense.effects.length = 0;\n suspense.hiddenContainer = createElement(\"div\");\n if (isInFallback) {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n suspense.resolve(true);\n } else {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n } else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newBranch);\n } else {\n triggerEvent(n2, \"onPending\");\n suspense.pendingBranch = newBranch;\n if (newBranch.shapeFlag & 512) {\n suspense.pendingId = newBranch.component.suspenseId;\n } else {\n suspense.pendingId = suspenseId++;\n }\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n } else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n hasWarned = true;\n console[console.info ? \"info\" : \"log\"](\n ` is an experimental feature and its API will likely change.`\n );\n }\n const {\n p: patch,\n m: move,\n um: unmount,\n n: next,\n o: { parentNode, remove }\n } = rendererInternals;\n let parentSuspenseId;\n const isSuspensible = isVNodeSuspensible(vnode);\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch) {\n parentSuspenseId = parentSuspense.pendingId;\n parentSuspense.deps++;\n }\n }\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const initialAnchor = anchor;\n const suspense = {\n vnode,\n parent: parentSuspense,\n parentComponent,\n namespace,\n container,\n hiddenContainer,\n deps: 0,\n pendingId: suspenseId++,\n timeout: typeof timeout === \"number\" ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: !isHydrating,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false, sync = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(\n `suspense.resolve() is called without a pending branch.`\n );\n }\n if (suspense.isUnmounted) {\n throw new Error(\n `suspense.resolve() is called on an already unmounted suspense boundary.`\n );\n }\n }\n const {\n vnode: vnode2,\n activeBranch,\n pendingBranch,\n pendingId,\n effects,\n parentComponent: parentComponent2,\n container: container2\n } = suspense;\n let delayEnter = false;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n } else if (!resume) {\n delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(\n pendingBranch,\n container2,\n anchor === initialAnchor ? next(activeBranch) : anchor,\n 0\n );\n queuePostFlushCb(effects);\n }\n };\n }\n if (activeBranch) {\n if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {\n anchor = next(activeBranch);\n }\n unmount(activeBranch, parentComponent2, suspense, true);\n }\n if (!delayEnter) {\n move(pendingBranch, container2, anchor, 0);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n if (!hasUnresolvedAncestor && !delayEnter) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0 && !sync) {\n parentSuspense.resolve();\n }\n }\n }\n triggerEvent(vnode2, \"onResolve\");\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n triggerEvent(vnode2, \"onFallback\");\n const anchor2 = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n patch(\n null,\n fallbackVNode,\n container2,\n anchor2,\n parentComponent2,\n null,\n // fallback tree will not have suspense context\n namespace2,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n unmount(\n activeBranch,\n parentComponent2,\n null,\n // no suspense so unmount hooks fire now\n true\n // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container2, anchor2, type) {\n suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n suspense.container = container2;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect, optimized2) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance.asyncDep.catch((err) => {\n handleError(err, instance, 0);\n }).then((asyncSetupResult) => {\n if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n return;\n }\n instance.asyncResolved = true;\n const { vnode: vnode2 } = instance;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(vnode2);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n vnode2.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(\n instance,\n vnode2,\n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el),\n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree),\n suspense,\n namespace,\n optimized2\n );\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode2.el);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense2, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(\n suspense.activeBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n if (suspense.pendingBranch) {\n unmount(\n suspense.pendingBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n node.parentNode,\n // eslint-disable-next-line no-restricted-globals\n document.createElement(\"div\"),\n null,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals,\n true\n );\n const result = hydrateNode(\n node,\n suspense.pendingBranch = vnode.ssContent,\n parentComponent,\n suspense,\n slotScopeIds,\n optimized\n );\n if (suspense.deps === 0) {\n suspense.resolve(false, true);\n }\n return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32;\n vnode.ssContent = normalizeSuspenseSlot(\n isSlotChildren ? children.default : children\n );\n vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n warn$1(` slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter((c) => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n let el = branch.el;\n while (!el && branch.component) {\n branch = branch.component.subTree;\n el = branch.el;\n }\n vnode.el = el;\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\nfunction isVNodeSuspensible(vnode) {\n const suspensible = vnode.props && vnode.props.suspensible;\n return suspensible != null && suspensible !== false;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n injectHook(lifecycle, (...args) => hook(...args), target);\n }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getComponentPublicInstance(currentRenderingInstance);\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res) res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n if (name !== \"default\") props.name = name;\n return createVNode(\"slot\", props, fallback && fallback());\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(\n Fragment,\n {\n key: props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key || `_${name}`\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i) return null;\n if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \n","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VApp.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { createLayout, makeLayoutProps } from \"../../composables/layout.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVAppProps = propsFactory({\n ...makeComponentProps(),\n ...makeLayoutProps({\n fullHeight: true\n }),\n ...makeThemeProps()\n}, 'VApp');\nexport const VApp = genericComponent()({\n name: 'VApp',\n props: makeVAppProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const theme = provideTheme(props);\n const {\n layoutClasses,\n getLayoutItem,\n items,\n layoutRef\n } = createLayout(props);\n const {\n rtlClasses\n } = useRtl();\n useRender(() => _createVNode(\"div\", {\n \"ref\": layoutRef,\n \"class\": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],\n \"style\": [props.style]\n }, [_createVNode(\"div\", {\n \"class\": \"v-application__wrap\"\n }, [slots.default?.()])]));\n return {\n getLayoutItem,\n items,\n theme\n };\n }\n});\n//# sourceMappingURL=VApp.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VMain.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useLayout } from \"../../composables/layout.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVMainProps = propsFactory({\n scrollable: Boolean,\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps({\n tag: 'main'\n })\n}, 'VMain');\nexport const VMain = genericComponent()({\n name: 'VMain',\n props: makeVMainProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n mainStyles\n } = useLayout();\n const {\n ssrBootStyles\n } = useSsrBoot();\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-main', {\n 'v-main--scrollable': props.scrollable\n }, props.class],\n \"style\": [mainStyles.value, ssrBootStyles.value, dimensionStyles.value, props.style]\n }, {\n default: () => [props.scrollable ? _createVNode(\"div\", {\n \"class\": \"v-main__scroller\"\n }, [slots.default?.()]) : slots.default?.()]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VMain.mjs.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined\n\t? new AbortError(errorMessage)\n\t: new DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined\n\t\t? getDOMException('This operation was aborted.')\n\t\t: signal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t} = options;\n\n\tlet timer;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t});\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tpromise.then(resolve, reject);\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t})();\n\t});\n\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n run,\n };\n if (this.size && this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #interval;\n #intervalEnd = 0;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n\n Applies to each future operation.\n */\n timeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = (this.#carryoverConcurrencyCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit('empty');\n if (this.#pending === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n }, { once: true });\n });\n }\n async add(function_, options = {}) {\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options,\n };\n return new Promise((resolve, reject) => {\n this.#queue.enqueue(async () => {\n this.#pending++;\n this.#intervalCount++;\n try {\n options.signal?.throwIfAborted();\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout });\n }\n if (options.signal) {\n operation = Promise.race([operation, this.#throwOnAbort(options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n this.#next();\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n}\n","export default function pDefer() {\n\tconst deferred = {};\n\n\tdeferred.promise = new Promise((resolve, reject) => {\n\t\tdeferred.resolve = resolve;\n\t\tdeferred.reject = reject;\n\t});\n\n\treturn deferred;\n}\n","// ported from https://www.npmjs.com/package/fast-fifo\nclass FixedFIFO {\n buffer;\n mask;\n top;\n btm;\n next;\n constructor(hwm) {\n if (!(hwm > 0) || ((hwm - 1) & hwm) !== 0) {\n throw new Error('Max size for a FixedFIFO should be a power of two');\n }\n this.buffer = new Array(hwm);\n this.mask = hwm - 1;\n this.top = 0;\n this.btm = 0;\n this.next = null;\n }\n push(data) {\n if (this.buffer[this.top] !== undefined) {\n return false;\n }\n this.buffer[this.top] = data;\n this.top = (this.top + 1) & this.mask;\n return true;\n }\n shift() {\n const last = this.buffer[this.btm];\n if (last === undefined) {\n return undefined;\n }\n this.buffer[this.btm] = undefined;\n this.btm = (this.btm + 1) & this.mask;\n return last;\n }\n isEmpty() {\n return this.buffer[this.btm] === undefined;\n }\n}\nexport class FIFO {\n size;\n hwm;\n head;\n tail;\n constructor(options = {}) {\n this.hwm = options.splitLimit ?? 16;\n this.head = new FixedFIFO(this.hwm);\n this.tail = this.head;\n this.size = 0;\n }\n calculateSize(obj) {\n if (obj?.byteLength != null) {\n return obj.byteLength;\n }\n return 1;\n }\n push(val) {\n if (val?.value != null) {\n this.size += this.calculateSize(val.value);\n }\n if (!this.head.push(val)) {\n const prev = this.head;\n this.head = prev.next = new FixedFIFO(2 * this.head.buffer.length);\n this.head.push(val);\n }\n }\n shift() {\n let val = this.tail.shift();\n if (val === undefined && (this.tail.next != null)) {\n const next = this.tail.next;\n this.tail.next = null;\n this.tail = next;\n val = this.tail.shift();\n }\n if (val?.value != null) {\n this.size -= this.calculateSize(val.value);\n }\n return val;\n }\n isEmpty() {\n return this.head.isEmpty();\n }\n}\n//# sourceMappingURL=fifo.js.map","/**\n * @packageDocumentation\n *\n * An iterable that you can push values into.\n *\n * @example\n *\n * ```js\n * import { pushable } from 'it-pushable'\n *\n * const source = pushable()\n *\n * setTimeout(() => source.push('hello'), 100)\n * setTimeout(() => source.push('world'), 200)\n * setTimeout(() => source.end(), 300)\n *\n * const start = Date.now()\n *\n * for await (const value of source) {\n * console.log(`got \"${value}\" after ${Date.now() - start}ms`)\n * }\n * console.log(`done after ${Date.now() - start}ms`)\n *\n * // Output:\n * // got \"hello\" after 105ms\n * // got \"world\" after 207ms\n * // done after 309ms\n * ```\n *\n * @example\n *\n * ```js\n * import { pushableV } from 'it-pushable'\n * import all from 'it-all'\n *\n * const source = pushableV()\n *\n * source.push(1)\n * source.push(2)\n * source.push(3)\n * source.end()\n *\n * console.info(await all(source))\n *\n * // Output:\n * // [ [1, 2, 3] ]\n * ```\n */\nimport deferred from 'p-defer';\nimport { FIFO } from './fifo.js';\nexport class AbortError extends Error {\n type;\n code;\n constructor(message, code) {\n super(message ?? 'The operation was aborted');\n this.type = 'aborted';\n this.code = code ?? 'ABORT_ERR';\n }\n}\nexport function pushable(options = {}) {\n const getNext = (buffer) => {\n const next = buffer.shift();\n if (next == null) {\n return { done: true };\n }\n if (next.error != null) {\n throw next.error;\n }\n return {\n done: next.done === true,\n // @ts-expect-error if done is false, value will be present\n value: next.value\n };\n };\n return _pushable(getNext, options);\n}\nexport function pushableV(options = {}) {\n const getNext = (buffer) => {\n let next;\n const values = [];\n while (!buffer.isEmpty()) {\n next = buffer.shift();\n if (next == null) {\n break;\n }\n if (next.error != null) {\n throw next.error;\n }\n if (next.done === false) {\n // @ts-expect-error if done is false value should be pushed\n values.push(next.value);\n }\n }\n if (next == null) {\n return { done: true };\n }\n return {\n done: next.done === true,\n value: values\n };\n };\n return _pushable(getNext, options);\n}\nfunction _pushable(getNext, options) {\n options = options ?? {};\n let onEnd = options.onEnd;\n let buffer = new FIFO();\n let pushable;\n let onNext;\n let ended;\n let drain = deferred();\n const waitNext = async () => {\n try {\n if (!buffer.isEmpty()) {\n return getNext(buffer);\n }\n if (ended) {\n return { done: true };\n }\n return await new Promise((resolve, reject) => {\n onNext = (next) => {\n onNext = null;\n buffer.push(next);\n try {\n resolve(getNext(buffer));\n }\n catch (err) {\n reject(err);\n }\n return pushable;\n };\n });\n }\n finally {\n if (buffer.isEmpty()) {\n // settle promise in the microtask queue to give consumers a chance to\n // await after calling .push\n queueMicrotask(() => {\n drain.resolve();\n drain = deferred();\n });\n }\n }\n };\n const bufferNext = (next) => {\n if (onNext != null) {\n return onNext(next);\n }\n buffer.push(next);\n return pushable;\n };\n const bufferError = (err) => {\n buffer = new FIFO();\n if (onNext != null) {\n return onNext({ error: err });\n }\n buffer.push({ error: err });\n return pushable;\n };\n const push = (value) => {\n if (ended) {\n return pushable;\n }\n // @ts-expect-error `byteLength` is not declared on PushType\n if (options?.objectMode !== true && value?.byteLength == null) {\n throw new Error('objectMode was not true but tried to push non-Uint8Array value');\n }\n return bufferNext({ done: false, value });\n };\n const end = (err) => {\n if (ended)\n return pushable;\n ended = true;\n return (err != null) ? bufferError(err) : bufferNext({ done: true });\n };\n const _return = () => {\n buffer = new FIFO();\n end();\n return { done: true };\n };\n const _throw = (err) => {\n end(err);\n return { done: true };\n };\n pushable = {\n [Symbol.asyncIterator]() { return this; },\n next: waitNext,\n return: _return,\n throw: _throw,\n push,\n end,\n get readableLength() {\n return buffer.size;\n },\n onEmpty: async (options) => {\n const signal = options?.signal;\n signal?.throwIfAborted();\n if (buffer.isEmpty()) {\n return;\n }\n let cancel;\n let listener;\n if (signal != null) {\n cancel = new Promise((resolve, reject) => {\n listener = () => {\n reject(new AbortError());\n };\n signal.addEventListener('abort', listener);\n });\n }\n try {\n await Promise.race([\n drain.promise,\n cancel\n ]);\n }\n finally {\n if (listener != null && signal != null) {\n signal?.removeEventListener('abort', listener);\n }\n }\n }\n };\n if (onEnd == null) {\n return pushable;\n }\n const _pushable = pushable;\n pushable = {\n [Symbol.asyncIterator]() { return this; },\n next() {\n return _pushable.next();\n },\n throw(err) {\n _pushable.throw(err);\n if (onEnd != null) {\n onEnd(err);\n onEnd = undefined;\n }\n return { done: true };\n },\n return() {\n _pushable.return();\n if (onEnd != null) {\n onEnd();\n onEnd = undefined;\n }\n return { done: true };\n },\n push,\n end(err) {\n _pushable.end(err);\n if (onEnd != null) {\n onEnd(err);\n onEnd = undefined;\n }\n return pushable;\n },\n get readableLength() {\n return _pushable.readableLength;\n },\n onEmpty: (opts) => {\n return _pushable.onEmpty(opts);\n }\n };\n return pushable;\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Merge several (async)iterables into one, yield values as they arrive.\n *\n * Nb. sources are iterated over in parallel so the order of emitted items is not guaranteed.\n *\n * @example\n *\n * ```javascript\n * import merge from 'it-merge'\n * import all from 'it-all'\n *\n * // This can also be an iterator, generator, etc\n * const values1 = [0, 1, 2, 3, 4]\n * const values2 = [5, 6, 7, 8, 9]\n *\n * const arr = all(merge(values1, values2))\n *\n * console.info(arr) // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import merge from 'it-merge'\n * import all from 'it-all'\n *\n * // This can also be an iterator, async iterator, generator, etc\n * const values1 = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n * const values2 = async function * () {\n * yield * [5, 6, 7, 8, 9]\n * }\n *\n * const arr = await all(merge(values1(), values2()))\n *\n * console.info(arr) // 0, 1, 5, 6, 2, 3, 4, 7, 8, 9 <- nb. order is not guaranteed\n * ```\n */\nimport { pushable } from 'it-pushable';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction merge(...sources) {\n const syncSources = [];\n for (const source of sources) {\n if (!isAsyncIterable(source)) {\n syncSources.push(source);\n }\n }\n if (syncSources.length === sources.length) {\n // all sources are synchronous\n return (function* () {\n for (const source of syncSources) {\n yield* source;\n }\n })();\n }\n return (async function* () {\n const output = pushable({\n objectMode: true\n });\n void Promise.resolve().then(async () => {\n try {\n await Promise.all(sources.map(async (source) => {\n for await (const item of source) {\n output.push(item);\n }\n }));\n output.end();\n }\n catch (err) {\n output.end(err);\n }\n });\n yield* output;\n })();\n}\nexport default merge;\n//# sourceMappingURL=index.js.map","import { pushable } from 'it-pushable';\nimport merge from 'it-merge';\nexport function pipe(first, ...rest) {\n if (first == null) {\n throw new Error('Empty pipeline');\n }\n // Duplex at start: wrap in function and return duplex source\n if (isDuplex(first)) {\n const duplex = first;\n first = () => duplex.source;\n // Iterable at start: wrap in function\n }\n else if (isIterable(first) || isAsyncIterable(first)) {\n const source = first;\n first = () => source;\n }\n const fns = [first, ...rest];\n if (fns.length > 1) {\n // Duplex at end: use duplex sink\n if (isDuplex(fns[fns.length - 1])) {\n fns[fns.length - 1] = fns[fns.length - 1].sink;\n }\n }\n if (fns.length > 2) {\n // Duplex in the middle, consume source with duplex sink and return duplex source\n for (let i = 1; i < fns.length - 1; i++) {\n if (isDuplex(fns[i])) {\n fns[i] = duplexPipelineFn(fns[i]);\n }\n }\n }\n return rawPipe(...fns);\n}\nexport const rawPipe = (...fns) => {\n let res;\n while (fns.length > 0) {\n res = fns.shift()(res);\n }\n return res;\n};\nconst isAsyncIterable = (obj) => {\n return obj?.[Symbol.asyncIterator] != null;\n};\nconst isIterable = (obj) => {\n return obj?.[Symbol.iterator] != null;\n};\nconst isDuplex = (obj) => {\n if (obj == null) {\n return false;\n }\n return obj.sink != null && obj.source != null;\n};\nconst duplexPipelineFn = (duplex) => {\n return (source) => {\n const p = duplex.sink(source);\n if (p?.then != null) {\n const stream = pushable({\n objectMode: true\n });\n p.then(() => {\n stream.end();\n }, (err) => {\n stream.end(err);\n });\n let sourceWrap;\n const source = duplex.source;\n if (isAsyncIterable(source)) {\n sourceWrap = async function* () {\n yield* source;\n stream.end();\n };\n }\n else if (isIterable(source)) {\n sourceWrap = function* () {\n yield* source;\n stream.end();\n };\n }\n else {\n throw new Error('Unknown duplex source type - must be Iterable or AsyncIterable');\n }\n return merge(stream, sourceWrap());\n }\n return duplex.source;\n };\n};\n//# sourceMappingURL=index.js.map","'use strict'\n\nmodule.exports = function getTime () {\n return Date.now()\n}\n","'use strict'\n\nconst getTime = require('./time')\n\nclass Retimer {\n constructor (callback, timeout, args) {\n const that = this\n\n this._started = getTime()\n this._rescheduled = 0\n this._scheduled = timeout\n this._args = args\n this._triggered = false\n\n this._timerWrapper = () => {\n if (that._rescheduled > 0) {\n that._scheduled = that._rescheduled - (getTime() - that._started)\n that._schedule(that._scheduled)\n } else {\n that._triggered = true\n callback.apply(null, that._args)\n }\n }\n\n this._timer = setTimeout(this._timerWrapper, timeout)\n }\n\n reschedule (timeout) {\n if (!timeout) {\n timeout = this._scheduled\n }\n const now = getTime()\n if ((now + timeout) - (this._started + this._scheduled) < 0) {\n clearTimeout(this._timer)\n this._schedule(timeout)\n } else if (!this._triggered) {\n this._started = now\n this._rescheduled = timeout\n } else {\n this._schedule(timeout)\n }\n }\n\n _schedule (timeout) {\n this._triggered = false\n this._started = getTime()\n this._rescheduled = 0\n this._scheduled = timeout\n this._timer = setTimeout(this._timerWrapper, timeout)\n }\n\n clear () {\n clearTimeout(this._timer)\n }\n}\n\nfunction retimer () {\n if (typeof arguments[0] !== 'function') {\n throw new Error('callback needed')\n }\n\n if (typeof arguments[1] !== 'number') {\n throw new Error('timeout needed')\n }\n\n let args\n\n if (arguments.length > 0) {\n args = new Array(arguments.length - 2)\n\n /* eslint-disable no-var */\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 2]\n }\n }\n\n return new Retimer(arguments[0], arguments[1], args)\n}\n\nmodule.exports = retimer\n","'use strict'\n\nconst { AbortController } = globalThis\n\n// @ts-expect-error no types\nconst retimer = require('retimer')\n\nclass TimeoutController extends AbortController {\n /**\n * @constructor\n * @param {number} ms milliseconds\n */\n constructor (ms) {\n super()\n this._ms = ms\n this._timer = retimer(() => this.abort(), ms)\n // Patch for safari not supported extending built in classes\n Object.setPrototypeOf(this, TimeoutController.prototype)\n }\n\n /**\n * Aborts the controller and clears the timer\n */\n abort () {\n this._timer.clear()\n return super.abort()\n }\n\n /**\n * Clears the timer\n */\n clear () {\n this._timer.clear()\n }\n\n /**\n * Resets the timer\n */\n reset () {\n this._timer.clear()\n this._timer = retimer(() => this.abort(), this._ms)\n }\n}\n\nmodule.exports = {\n TimeoutController\n}\n","export const posixJoin = (...paths) => paths\n .join('/')\n .replace(/((?<=\\/)\\/+)|(^\\.\\/)|((?<=\\/)\\.\\/)/g, '') || '.'\n\nexport const win32Join = (...paths) => paths\n .join('\\\\')\n .replace(/\\//g, '\\\\')\n .replace(/((?<=\\\\)\\\\+)|(^\\.\\\\)|((?<=\\\\)\\.\\\\)/g, '') || '.'\n\nexport const join = posixJoin\n\nexport default posixJoin\n","import { pipe } from 'it-pipe'\nimport PQueue from 'p-queue'\nimport { EventEmitter } from 'events'\nimport { TimeoutController } from 'timeout-abort-controller'\nimport pathJoin from './utils/path-join.js'\n\nconst DefaultTimeout = 30000 // 30 seconds\n\n/**\n * @module Sync\n * @description\n * The Sync Protocol for OrbitDB synchronizes the database operations {@link module:Log} between multiple peers.\n *\n * The Sync Protocol sends and receives heads between multiple peers,\n * both when opening a database and when a database is updated, ie.\n * new entries are appended to the log.\n *\n * When Sync is started, a peer subscribes to a pubsub topic of the log's id.\n * Upon subscribing to the topic, peers already connected to the topic receive\n * the subscription message and \"dial\" the subscribing peer using a libp2p\n * custom protocol. Once connected to the subscribing peer on a direct\n * peer-to-peer connection, the dialing peer and the subscribing peer exchange * the heads of the Log each peer currently has. Once completed, the peers have * the same \"local state\".\n *\n * Once the initial sync has completed, peers notify one another of updates to\n * the log, ie. updates to the database, using the initially opened pubsub\n * topic subscription. A peer with new heads broadcasts changes to other peers\n * by publishing the updated heads to the pubsub topic. Peers subscribed to the\n * same topic will then receive the update and will update their log's state,\n * the heads, accordingly.\n *\n * The Sync Protocol is eventually consistent. It guarantees that once all\n * messages have been sent and received, peers will observe the same log state\n * and values. The Sync Protocol does not guarantee the order in which messages\n * are received or even that a message is recieved at all, nor any timing on\n * when messages are received.\n *\n * @example\n * // Using defaults\n * const sync = await Sync({ ipfs, log, onSynced: (peerId, heads) => ... })\n *\n * @example\n * // Using all parameters\n * const sync = await Sync({ ipfs, log, events, onSynced: (peerId, heads) => ..., start: false })\n * sync.events.on('join', (peerId, heads) => ...)\n * sync.events.on('leave', (peerId) => ...)\n * sync.events.on('error', (err) => ...)\n * await sync.start()\n */\n\n/**\n * Creates a Sync instance for sychronizing logs between multiple peers.\n *\n * @function\n * @param {Object} params One or more parameters for configuring Sync.\n * @param {IPFS} params.ipfs An IPFS instance.\n * @param {Log} params.log The log instance to sync.\n * @param {EventEmitter} [params.events] An event emitter to use. Events\n * emitted are 'join', 'leave' and 'error'. If the parameter is not provided,\n * an EventEmitter will be created.\n * @param {onSynced} [params.onSynced] A callback function that is called after\n * the peer has received heads from another peer.\n * @param {Boolean} [params.start] True if sync should start automatically,\n * false otherwise. Defaults to true.\n * @return {module:Sync~Sync} sync An instance of the Sync Protocol.\n * @memberof module:Sync\n * @instance\n */\nconst Sync = async ({ ipfs, log, events, onSynced, start, timeout }) => {\n /**\n * @namespace module:Sync~Sync\n * @description The instance returned by {@link module:Sync}.\n */\n\n /**\n * Callback function when new heads have been received from other peers.\n * @callback module:Sync~Sync#onSynced\n * @param {PeerID} peerId PeerID of the peer who we received heads from\n * @param {Entry[]} heads An array of Log entries\n */\n\n /**\n * Event fired when when a peer has connected and the exchange of\n * heads has been completed.\n * @event module:Sync~Sync#join\n * @param {PeerID} peerId PeerID of the peer who we received heads from\n * @param {Entry[]} heads An array of Log entries\n * @example\n * sync.events.on('join', (peerID, heads) => ...)\n */\n\n /**\n * Event fired when a peer leaves the sync protocol.\n * @event module:Sync~Sync#leave\n * @param {PeerID} peerId PeerID of the peer who left\n * @example\n * sync.events.on('leave', (peerID) => ...)\n */\n\n /**\n * Event fired when an error occurs.\n * @event module:Sync~Sync#error\n * @param {Error} error The error that occured\n * @example\n * sync.events.on('error', (error) => ...)\n */\n\n if (!ipfs) throw new Error('An instance of ipfs is required.')\n if (!log) throw new Error('An instance of log is required.')\n\n const libp2p = ipfs.libp2p\n const pubsub = ipfs.libp2p.services.pubsub\n\n const address = log.id\n const headsSyncAddress = pathJoin('/orbitdb/heads/', address)\n\n const queue = new PQueue({ concurrency: 1 })\n\n /**\n * Set of currently connected peers for the log for this Sync instance.\n * @name peers\n * @†ype Set\n * @memberof module:Sync~Sync\n * @instance\n */\n const peers = new Set()\n\n /**\n * Event emitter that emits Sync changes. See Events section for details.\n * @†ype EventEmitter\n * @memberof module:Sync~Sync\n * @instance\n */\n events = events || new EventEmitter()\n\n timeout = timeout || DefaultTimeout\n\n let started = false\n\n const onPeerJoined = async (peerId) => {\n const heads = await log.heads()\n events.emit('join', peerId, heads)\n }\n\n const sendHeads = (source) => {\n return (async function * () {\n const heads = await log.heads()\n for await (const { bytes } of heads) {\n yield bytes\n }\n })()\n }\n\n const receiveHeads = (peerId) => async (source) => {\n for await (const value of source) {\n const headBytes = value.subarray()\n if (headBytes && onSynced) {\n await onSynced(headBytes)\n }\n }\n if (started) {\n await onPeerJoined(peerId)\n }\n }\n\n const handleReceiveHeads = async ({ connection, stream }) => {\n const peerId = String(connection.remotePeer)\n try {\n peers.add(peerId)\n await pipe(stream, receiveHeads(peerId), sendHeads, stream)\n } catch (e) {\n peers.delete(peerId)\n events.emit('error', e)\n }\n }\n\n const handlePeerSubscribed = async (event) => {\n const task = async () => {\n const { peerId: remotePeer, subscriptions } = event.detail\n const peerId = String(remotePeer)\n const subscription = subscriptions.find(e => e.topic === address)\n if (!subscription) {\n return\n }\n if (subscription.subscribe) {\n if (peers.has(peerId)) {\n return\n }\n const timeoutController = new TimeoutController(timeout)\n const { signal } = timeoutController\n try {\n peers.add(peerId)\n const stream = await libp2p.dialProtocol(remotePeer, headsSyncAddress, { signal })\n await pipe(sendHeads, stream, receiveHeads(peerId))\n } catch (e) {\n console.error(e)\n peers.delete(peerId)\n if (e.code === 'ERR_UNSUPPORTED_PROTOCOL') {\n // Skip peer, they don't have this database currently\n } else {\n events.emit('error', e)\n }\n } finally {\n if (timeoutController) {\n timeoutController.clear()\n }\n }\n } else {\n peers.delete(peerId)\n events.emit('leave', peerId)\n }\n }\n queue.add(task)\n }\n\n const handleUpdateMessage = async message => {\n const { topic, data } = message.detail\n\n const task = async () => {\n try {\n if (data && onSynced) {\n await onSynced(data)\n }\n } catch (e) {\n events.emit('error', e)\n }\n }\n\n if (topic === address) {\n queue.add(task)\n }\n }\n\n /**\n * Add a log entry to the Sync Protocol to be sent to peers.\n * @function add\n * @param {Entry} entry Log entry\n * @memberof module:Sync~Sync\n * @instance\n */\n const add = async (entry) => {\n if (started) {\n await pubsub.publish(address, entry.bytes)\n }\n }\n\n /**\n * Stop the Sync Protocol.\n * @function stop\n * @memberof module:Sync~Sync\n * @instance\n */\n const stopSync = async () => {\n if (started) {\n started = false\n await queue.onIdle()\n pubsub.removeEventListener('subscription-change', handlePeerSubscribed)\n pubsub.removeEventListener('message', handleUpdateMessage)\n await libp2p.unhandle(headsSyncAddress)\n await pubsub.unsubscribe(address)\n peers.clear()\n }\n }\n\n /**\n * Start the Sync Protocol.\n * @function start\n * @memberof module:Sync~Sync\n * @instance\n */\n const startSync = async () => {\n if (!started) {\n // Exchange head entries with peers when connected\n await libp2p.handle(headsSyncAddress, handleReceiveHeads)\n pubsub.addEventListener('subscription-change', handlePeerSubscribed)\n pubsub.addEventListener('message', handleUpdateMessage)\n // Subscribe to the pubsub channel for this database through which updates are sent\n await pubsub.subscribe(address)\n started = true\n }\n }\n\n // Start Sync automatically\n if (start !== false) {\n await startSync()\n }\n\n return {\n add,\n stop: stopSync,\n start: startSync,\n events,\n peers\n }\n}\n\nexport { Sync as default }\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","var events = require('events')\nvar inherits = require('inherits')\n\nmodule.exports = LRU\n\nfunction LRU (opts) {\n if (!(this instanceof LRU)) return new LRU(opts)\n if (typeof opts === 'number') opts = {max: opts}\n if (!opts) opts = {}\n events.EventEmitter.call(this)\n this.cache = {}\n this.head = this.tail = null\n this.length = 0\n this.max = opts.max || 1000\n this.maxAge = opts.maxAge || 0\n}\n\ninherits(LRU, events.EventEmitter)\n\nObject.defineProperty(LRU.prototype, 'keys', {\n get: function () { return Object.keys(this.cache) }\n})\n\nLRU.prototype.clear = function () {\n this.cache = {}\n this.head = this.tail = null\n this.length = 0\n}\n\nLRU.prototype.remove = function (key) {\n if (typeof key !== 'string') key = '' + key\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n delete this.cache[key]\n this._unlink(key, element.prev, element.next)\n return element.value\n}\n\nLRU.prototype._unlink = function (key, prev, next) {\n this.length--\n\n if (this.length === 0) {\n this.head = this.tail = null\n } else {\n if (this.head === key) {\n this.head = prev\n this.cache[this.head].next = null\n } else if (this.tail === key) {\n this.tail = next\n this.cache[this.tail].prev = null\n } else {\n this.cache[prev].next = next\n this.cache[next].prev = prev\n }\n }\n}\n\nLRU.prototype.peek = function (key) {\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n\n if (!this._checkAge(key, element)) return\n return element.value\n}\n\nLRU.prototype.set = function (key, value) {\n if (typeof key !== 'string') key = '' + key\n\n var element\n\n if (this.cache.hasOwnProperty(key)) {\n element = this.cache[key]\n element.value = value\n if (this.maxAge) element.modified = Date.now()\n\n // If it's already the head, there's nothing more to do:\n if (key === this.head) return value\n this._unlink(key, element.prev, element.next)\n } else {\n element = {value: value, modified: 0, next: null, prev: null}\n if (this.maxAge) element.modified = Date.now()\n this.cache[key] = element\n\n // Eviction is only possible if the key didn't already exist:\n if (this.length === this.max) this.evict()\n }\n\n this.length++\n element.next = null\n element.prev = this.head\n\n if (this.head) this.cache[this.head].next = key\n this.head = key\n\n if (!this.tail) this.tail = key\n return value\n}\n\nLRU.prototype._checkAge = function (key, element) {\n if (this.maxAge && (Date.now() - element.modified) > this.maxAge) {\n this.remove(key)\n this.emit('evict', {key: key, value: element.value})\n return false\n }\n return true\n}\n\nLRU.prototype.get = function (key) {\n if (typeof key !== 'string') key = '' + key\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n\n if (!this._checkAge(key, element)) return\n\n if (this.head !== key) {\n if (key === this.tail) {\n this.tail = element.next\n this.cache[this.tail].prev = null\n } else {\n // Set prev.next -> element.next:\n this.cache[element.prev].next = element.next\n }\n\n // Set element.next.prev -> element.prev:\n this.cache[element.next].prev = element.prev\n\n // Element is the new head\n this.cache[this.head].next = key\n element.prev = this.head\n element.next = null\n this.head = key\n }\n\n return element.value\n}\n\nLRU.prototype.evict = function () {\n if (!this.tail) return\n var key = this.tail\n var value = this.remove(this.tail)\n this.emit('evict', {key: key, value: value})\n}\n","/**\n * @namespace module:Log~Clock\n * @memberof module:Log\n * @description\n * The lamport clock.\n * @private\n */\n\n/**\n * Compares two clocks by time and then, time is the same, by id.\n *\n * compareClocks should never return zero (0). If it does, a and b refer to the\n * same clock.\n * @param {module:Clock} a The first clock.\n * @param {module:Clock} b The second clock.\n * @return {number} Returns a negative integer if clock a is less than clock b\n * otherwise a positive integer is returned.\n * @memberof module:Log~Clock\n */\nconst compareClocks = (a, b) => {\n // Calculate the \"distance\" based on the clock, ie. lower or greater\n const dist = a.time - b.time\n\n // If the sequence number is the same (concurrent events),\n // and the IDs are different, take the one with a \"lower\" id\n if (dist === 0 && a.id !== b.id) return a.id < b.id ? -1 : 1\n\n return dist\n}\n\n/**\n * Advances a clock's time by 1, returning a new instance of Clock.\n * @param {module:Clock} clock The clock to advance.\n * @return {module:Clock} A new instance of clock with time advanced by 1.\n * @memberof module:Log~Clock\n */\nconst tickClock = (clock) => {\n return Clock(clock.id, ++clock.time)\n}\n\n/**\n * Creates an instance of Clock.\n * @function\n * @param {string} id A unique identifier.\n * @param {number} [time=0] A natural number (including 0).\n * @memberof module:Log~Clock\n * @instance\n */\nconst Clock = (id, time) => {\n time = time || 0\n\n return {\n id,\n time\n }\n}\n\nexport { Clock as default, compareClocks, tickClock }\n","const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) return new Uint8Array(o)\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n","import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase}\n */\n encode (bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.UnibaseDecoder}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\n */\n decode (text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.CombobaseDecoder}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {Prefix} */ (input[0])\n const decoder = this.decoders[prefix]\n if (decoder) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} left\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} right\n * @returns {ComposedDecoder}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec}\n * @implements {API.MultibaseEncoder}\n * @implements {API.MultibaseDecoder}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseEncode, baseDecode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n return from({\n prefix,\n name,\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input) {\n return decode(input, alphabet, bitsPerChar, name)\n }\n })\n}\n","import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n","import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n","var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n \n encode.bytes = offset - oldOffset + 1;\n \n return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length;\n\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\n\n read.bytes = counter - offset;\n\n return res\n}\n\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n};\n\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n","import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n","import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\n const bytes = new Uint8Array(digestOffset + size)\n varint.encodeTo(code, bytes, 0)\n varint.encodeTo(size, bytes, sizeOffset)\n bytes.set(digest, digestOffset)\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n const bytes = coerce(multihash)\n const [code, sizeOffset] = varint.decode(bytes)\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n const digest = bytes.subarray(sizeOffset + digestOffset)\n\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n","import { base32 } from './bases/base32.js'\nimport { base58btc } from './bases/base58.js'\nimport { coerce } from './bytes.js'\nimport * as Digest from './hashes/digest.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\nimport * as varint from './varint.js'\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder} [base]\n * @returns {API.ToString}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID} */ (\n CID.createV0(\n /** @type {API.MultihashDigest} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID}\n */\n toV1 () {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash\n const multihash = Digest.create(code, digest)\n return /** @type {CID} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n /**\n * @returns {API.LinkJSON}\n */\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link|U} input\n * @returns {CID|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} digest - (Multi)hash of the of the content.\n * @returns {CID}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\n } else {\n return new CID(version, code, digest, digest.bytes)\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes)\n return new CID(version, code, digest, bytes)\n }\n default: {\n throw new Error('Invalid version')\n }\n }\n }\n\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest} digest - Multihash.\n * @returns {CID}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest} digest - Miltihash of the content.\n * @returns {CID}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView>} bytes\n * @returns {CID}\n */\n static decode (bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes)\n if (remainder.length) {\n throw new Error('Incorrect length')\n }\n return cid\n }\n\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} bytes\n * @returns {[CID, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n */\n static inspectBytes (initialBytes) {\n let offset = 0\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset))\n offset += length\n return i\n }\n\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {CID}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {[Prefix, API.ByteView>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n const { prefix } = base\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n }\n\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes).slice(1)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n const { prefix } = base\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version)\n const hashOffset = codeOffset + varint.encodingLength(code)\n const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n varint.encodeTo(version, bytes, 0)\n varint.encodeTo(code, bytes, codeOffset)\n bytes.set(multihash, hashOffset)\n return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n","import * as Digest from './digest.js'\n\n/**\n * @template {string} Name\n * @template {number} Code\n * @param {object} options\n * @param {Name} options.name\n * @param {Code} options.code\n * @param {(input: Uint8Array) => Await} options.encode\n */\nexport const from = ({ name, code, encode }) => new Hasher(name, code, encode)\n\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n *\n * @template {string} Name\n * @template {number} Code\n * @class\n * @implements {MultihashHasher}\n */\nexport class Hasher {\n /**\n *\n * @param {Name} name\n * @param {Code} code\n * @param {(input: Uint8Array) => Await} encode\n */\n constructor (name, code, encode) {\n this.name = name\n this.code = code\n this.encode = encode\n }\n\n /**\n * @param {Uint8Array} input\n * @returns {Await>}\n */\n digest (input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input)\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest))\n } else {\n throw Error('Unknown type, must be binary type')\n /* c8 ignore next 1 */\n }\n }\n}\n\n/**\n * @template {number} Alg\n * @typedef {import('./interface.js').MultihashHasher} MultihashHasher\n */\n\n/**\n * @template T\n * @typedef {Promise|T} Await\n */\n","import { bytes as binary, CID } from './index.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\nfunction readonly ({ enumerable = true, configurable = false } = {}) {\n return { enumerable, configurable, writable: false }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<[string, CID]>}\n */\nfunction * linksWithin (path, value) {\n if (value != null && typeof value === 'object') {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index]\n const cid = CID.asCID(element)\n if (cid) {\n yield [elementPath.join('/'), cid]\n } else if (typeof element === 'object') {\n yield * links(element, elementPath)\n }\n }\n } else {\n const cid = CID.asCID(value)\n if (cid) {\n yield [path.join('/'), cid]\n } else {\n yield * links(value, path)\n }\n }\n }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array} base\n * @returns {Iterable<[string, CID]>}\n */\nfunction * links (source, base) {\n if (source == null || source instanceof Uint8Array) {\n return\n }\n const cid = CID.asCID(source)\n if (cid) {\n yield [base.join('/'), cid]\n }\n for (const [key, value] of Object.entries(source)) {\n const path = /** @type {[string|number, string]} */ ([...base, key])\n yield * linksWithin(path, value)\n }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable}\n */\nfunction * treeWithin (path, value) {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index]\n yield elementPath.join('/')\n if (typeof element === 'object' && !CID.asCID(element)) {\n yield * tree(element, elementPath)\n }\n }\n } else {\n yield * tree(value, path)\n }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array} base\n * @returns {Iterable}\n */\nfunction * tree (source, base) {\n if (source == null || typeof source !== 'object') {\n return\n }\n for (const [key, value] of Object.entries(source)) {\n const path = /** @type {[string|number, string]} */ ([...base, key])\n yield path.join('/')\n if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && !CID.asCID(value)) {\n yield * treeWithin(path, value)\n }\n }\n}\n\n/**\n *\n * @template T\n * @param {T} source\n * @param {string[]} path\n * @returns {API.BlockCursorView}\n */\nfunction get (source, path) {\n let node = /** @type {Record} */(source)\n for (const [index, key] of path.entries()) {\n node = node[key]\n if (node == null) {\n throw new Error(`Object has no property at ${path.slice(0, index + 1).map(part => `[${JSON.stringify(part)}]`).join('')}`)\n }\n const cid = CID.asCID(node)\n if (cid) {\n return { value: cid, remaining: path.slice(index + 1).join('/') }\n }\n }\n return { value: node }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} C - multicodec code corresponding to codec used to encode the block\n * @template {number} A - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @implements {API.BlockView}\n */\nclass Block {\n /**\n * @param {object} options\n * @param {CID} options.cid\n * @param {API.ByteView} options.bytes\n * @param {T} options.value\n */\n constructor ({ cid, bytes, value }) {\n if (!cid || !bytes || typeof value === 'undefined') { throw new Error('Missing required argument') }\n\n this.cid = cid\n this.bytes = bytes\n this.value = value\n this.asBlock = this\n\n // Mark all the properties immutable\n Object.defineProperties(this, {\n cid: readonly(),\n bytes: readonly(),\n value: readonly(),\n asBlock: readonly()\n })\n }\n\n links () {\n return links(this.value, [])\n }\n\n tree () {\n return tree(this.value, [])\n }\n\n /**\n *\n * @param {string} [path]\n * @returns {API.BlockCursorView}\n */\n get (path = '/') {\n return get(this.value, path.split('/').filter(Boolean))\n }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {T} options.value\n * @param {API.BlockEncoder} options.codec\n * @param {API.MultihashHasher} options.hasher\n * @returns {Promise>}\n */\nasync function encode ({ value, codec, hasher }) {\n if (typeof value === 'undefined') throw new Error('Missing required argument \"value\"')\n if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n const bytes = codec.encode(value)\n const hash = await hasher.digest(bytes)\n /** @type {CID} */\n const cid = CID.create(\n 1,\n codec.code,\n hash\n )\n\n return new Block({ value, bytes, cid })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {API.ByteView} options.bytes\n * @param {API.BlockDecoder} options.codec\n * @param {API.MultihashHasher} options.hasher\n * @returns {Promise>}\n */\nasync function decode ({ bytes, codec, hasher }) {\n if (!bytes) throw new Error('Missing required argument \"bytes\"')\n if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n const value = codec.decode(bytes)\n const hash = await hasher.digest(bytes)\n /** @type {CID} */\n const cid = CID.create(1, codec.code, hash)\n\n return new Block({ value, bytes, cid })\n}\n\n/**\n * @typedef {object} RequiredCreateOptions\n * @property {CID} options.cid\n */\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {{ cid: API.Link, value:T, codec?: API.BlockDecoder, bytes: API.ByteView }|{cid:API.Link, bytes:API.ByteView, value?:void, codec:API.BlockDecoder}} options\n * @returns {API.BlockView}\n */\nfunction createUnsafe ({ bytes, cid, value: maybeValue, codec }) {\n const value = maybeValue !== undefined\n ? maybeValue\n : (codec && codec.decode(bytes))\n\n if (value === undefined) throw new Error('Missing required argument, must either provide \"value\" or \"codec\"')\n\n return new Block({\n // eslint-disable-next-line object-shorthand\n cid: /** @type {CID} */ (cid),\n bytes,\n value\n })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {object} options\n * @param {API.Link} options.cid\n * @param {API.ByteView} options.bytes\n * @param {API.BlockDecoder} options.codec\n * @param {API.MultihashHasher} options.hasher\n * @returns {Promise>}\n */\nasync function create ({ bytes, cid, hasher, codec }) {\n if (!bytes) throw new Error('Missing required argument \"bytes\"')\n if (!hasher) throw new Error('Missing required argument \"hasher\"')\n const value = codec.decode(bytes)\n const hash = await hasher.digest(bytes)\n if (!binary.equals(cid.multihash.bytes, hash.bytes)) {\n throw new Error('CID hash does not match bytes')\n }\n\n return createUnsafe({\n bytes,\n cid,\n value,\n codec\n })\n}\n\nexport { encode, decode, create, createUnsafe, Block }\n","// This is an unfortunate replacement for @sindresorhus/is that we need to\n// re-implement for performance purposes. In particular the is.observable()\n// check is expensive, and unnecessary for our purposes. The values returned\n// are compatible with @sindresorhus/is, however.\n\nconst typeofs = [\n 'string',\n 'number',\n 'bigint',\n 'symbol'\n]\n\nconst objectTypeNames = [\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'HTMLElement',\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array'\n]\n\n/**\n * @param {any} value\n * @returns {string}\n */\nexport function is (value) {\n if (value === null) {\n return 'null'\n }\n if (value === undefined) {\n return 'undefined'\n }\n if (value === true || value === false) {\n return 'boolean'\n }\n const typeOf = typeof value\n if (typeofs.includes(typeOf)) {\n return typeOf\n }\n /* c8 ignore next 4 */\n // not going to bother testing this, it's not going to be valid anyway\n if (typeOf === 'function') {\n return 'Function'\n }\n if (Array.isArray(value)) {\n return 'Array'\n }\n if (isBuffer(value)) {\n return 'Buffer'\n }\n const objectType = getObjectType(value)\n if (objectType) {\n return objectType\n }\n /* c8 ignore next */\n return 'Object'\n}\n\n/**\n * @param {any} value\n * @returns {boolean}\n */\nfunction isBuffer (value) {\n return value && value.constructor && value.constructor.isBuffer && value.constructor.isBuffer.call(null, value)\n}\n\n/**\n * @param {any} value\n * @returns {string|undefined}\n */\nfunction getObjectType (value) {\n const objectTypeName = Object.prototype.toString.call(value).slice(8, -1)\n if (objectTypeNames.includes(objectTypeName)) {\n return objectTypeName\n }\n /* c8 ignore next */\n return undefined\n}\n","class Type {\n /**\n * @param {number} major\n * @param {string} name\n * @param {boolean} terminal\n */\n constructor (major, name, terminal) {\n this.major = major\n this.majorEncoded = major << 5\n this.name = name\n this.terminal = terminal\n }\n\n /* c8 ignore next 3 */\n toString () {\n return `Type[${this.major}].${this.name}`\n }\n\n /**\n * @param {Type} typ\n * @returns {number}\n */\n compare (typ) {\n /* c8 ignore next 1 */\n return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0\n }\n}\n\n// convert to static fields when better supported\nType.uint = new Type(0, 'uint', true)\nType.negint = new Type(1, 'negint', true)\nType.bytes = new Type(2, 'bytes', true)\nType.string = new Type(3, 'string', true)\nType.array = new Type(4, 'array', false)\nType.map = new Type(5, 'map', false)\nType.tag = new Type(6, 'tag', false) // terminal?\nType.float = new Type(7, 'float', true)\nType.false = new Type(7, 'false', true)\nType.true = new Type(7, 'true', true)\nType.null = new Type(7, 'null', true)\nType.undefined = new Type(7, 'undefined', true)\nType.break = new Type(7, 'break', true)\n// Type.indefiniteLength = new Type(0, 'indefiniteLength', true)\n\nclass Token {\n /**\n * @param {Type} type\n * @param {any} [value]\n * @param {number} [encodedLength]\n */\n constructor (type, value, encodedLength) {\n this.type = type\n this.value = value\n this.encodedLength = encodedLength\n /** @type {Uint8Array|undefined} */\n this.encodedBytes = undefined\n /** @type {Uint8Array|undefined} */\n this.byteValue = undefined\n }\n\n /* c8 ignore next 3 */\n toString () {\n return `Token[${this.type}].${this.value}`\n }\n}\n\nexport { Type, Token }\n","// Use Uint8Array directly in the browser, use Buffer in Node.js but don't\n// speak its name directly to avoid bundlers pulling in the `Buffer` polyfill\n\n// @ts-ignore\nexport const useBuffer = globalThis.process &&\n // @ts-ignore\n !globalThis.process.browser &&\n // @ts-ignore\n globalThis.Buffer &&\n // @ts-ignore\n typeof globalThis.Buffer.isBuffer === 'function'\n\nconst textDecoder = new TextDecoder()\nconst textEncoder = new TextEncoder()\n\n/**\n * @param {Uint8Array} buf\n * @returns {boolean}\n */\nfunction isBuffer (buf) {\n // @ts-ignore\n return useBuffer && globalThis.Buffer.isBuffer(buf)\n}\n\n/**\n * @param {Uint8Array|number[]} buf\n * @returns {Uint8Array}\n */\nexport function asU8A (buf) {\n /* c8 ignore next */\n if (!(buf instanceof Uint8Array)) {\n return Uint8Array.from(buf)\n }\n return isBuffer(buf) ? new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength) : buf\n}\n\nexport const toString = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return end - start > 64\n ? // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(bytes.subarray(start, end)).toString('utf8')\n : utf8Slice(bytes, start, end)\n }\n /* c8 ignore next 11 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return end - start > 64\n ? textDecoder.decode(bytes.subarray(start, end))\n : utf8Slice(bytes, start, end)\n }\n\nexport const fromString = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {string} string\n */\n (string) => {\n return string.length > 64\n ? // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(string)\n : utf8ToBytes(string)\n }\n /* c8 ignore next 7 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {string} string\n */\n (string) => {\n return string.length > 64 ? textEncoder.encode(string) : utf8ToBytes(string)\n }\n\n/**\n * Buffer variant not fast enough for what we need\n * @param {number[]} arr\n * @returns {Uint8Array}\n */\nexport const fromArray = (arr) => {\n return Uint8Array.from(arr)\n}\n\nexport const slice = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n if (isBuffer(bytes)) {\n return new Uint8Array(bytes.subarray(start, end))\n }\n return bytes.slice(start, end)\n }\n /* c8 ignore next 9 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return bytes.slice(start, end)\n }\n\nexport const concat = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\n (chunks, length) => {\n // might get a stray plain Array here\n /* c8 ignore next 1 */\n chunks = chunks.map((c) => c instanceof Uint8Array\n ? c\n // this case is occasionally missed during test runs so becomes coverage-flaky\n /* c8 ignore next 4 */\n : // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(c))\n // @ts-ignore\n return asU8A(globalThis.Buffer.concat(chunks, length))\n }\n /* c8 ignore next 19 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\n (chunks, length) => {\n const out = new Uint8Array(length)\n let off = 0\n for (let b of chunks) {\n if (off + b.length > out.length) {\n // final chunk that's bigger than we need\n b = b.subarray(0, out.length - off)\n }\n out.set(b, off)\n off += b.length\n }\n return out\n }\n\nexport const alloc = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {number} size\n * @returns {Uint8Array}\n */\n (size) => {\n // we always write over the contents we expose so this should be safe\n // @ts-ignore\n return globalThis.Buffer.allocUnsafe(size)\n }\n /* c8 ignore next 8 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {number} size\n * @returns {Uint8Array}\n */\n (size) => {\n return new Uint8Array(size)\n }\n\nexport const toHex = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} d\n * @returns {string}\n */\n (d) => {\n if (typeof d === 'string') {\n return d\n }\n // @ts-ignore\n return globalThis.Buffer.from(toBytes(d)).toString('hex')\n }\n /* c8 ignore next 12 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} d\n * @returns {string}\n */\n (d) => {\n if (typeof d === 'string') {\n return d\n }\n // @ts-ignore not smart enough to figure this out\n return Array.prototype.reduce.call(toBytes(d), (p, c) => `${p}${c.toString(16).padStart(2, '0')}`, '')\n }\n\nexport const fromHex = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {string|Uint8Array} hex\n * @returns {Uint8Array}\n */\n (hex) => {\n if (hex instanceof Uint8Array) {\n return hex\n }\n // @ts-ignore\n return globalThis.Buffer.from(hex, 'hex')\n }\n /* c8 ignore next 17 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {string|Uint8Array} hex\n * @returns {Uint8Array}\n */\n (hex) => {\n if (hex instanceof Uint8Array) {\n return hex\n }\n if (!hex.length) {\n return new Uint8Array(0)\n }\n return new Uint8Array(hex.split('')\n .map((/** @type {string} */ c, /** @type {number} */ i, /** @type {string[]} */ d) => i % 2 === 0 ? `0x${c}${d[i + 1]}` : '')\n .filter(Boolean)\n .map((/** @type {string} */ e) => parseInt(e, 16)))\n }\n\n/**\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} obj\n * @returns {Uint8Array}\n */\nfunction toBytes (obj) {\n if (obj instanceof Uint8Array && obj.constructor.name === 'Uint8Array') {\n return obj\n }\n if (obj instanceof ArrayBuffer) {\n return new Uint8Array(obj)\n }\n if (ArrayBuffer.isView(obj)) {\n return new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength)\n }\n /* c8 ignore next */\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {Uint8Array} b1\n * @param {Uint8Array} b2\n * @returns {number}\n */\nexport function compare (b1, b2) {\n /* c8 ignore next 5 */\n if (isBuffer(b1) && isBuffer(b2)) {\n // probably not possible to get here in the current API\n // @ts-ignore Buffer\n return b1.compare(b2)\n }\n for (let i = 0; i < b1.length; i++) {\n if (b1[i] === b2[i]) {\n continue\n }\n return b1[i] < b2[i] ? -1 : 1\n } /* c8 ignore next 3 */\n return 0\n}\n\n// The below code is taken from https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n// Licensed Apache-2.0.\n\n/**\n * @param {string} str\n * @returns {number[]}\n */\nfunction utf8ToBytes (str) {\n const out = []\n let p = 0\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i)\n if (c < 128) {\n out[p++] = c\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192\n out[p++] = (c & 63) | 128\n } else if (\n ((c & 0xFC00) === 0xD800) && (i + 1) < str.length &&\n ((str.charCodeAt(i + 1) & 0xFC00) === 0xDC00)) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03FF) << 10) + (str.charCodeAt(++i) & 0x03FF)\n out[p++] = (c >> 18) | 240\n out[p++] = ((c >> 12) & 63) | 128\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n } else {\n out[p++] = (c >> 12) | 224\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n }\n }\n return out\n}\n\n// The below code is mostly taken from https://github.com/feross/buffer\n// Licensed MIT. Copyright (c) Feross Aboukhadijeh\n\n/**\n * @param {Uint8Array} buf\n * @param {number} offset\n * @param {number} end\n * @returns {string}\n */\nfunction utf8Slice (buf, offset, end) {\n const res = []\n\n while (offset < end) {\n const firstByte = buf[offset]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xef) ? 4 : (firstByte > 0xdf) ? 3 : (firstByte > 0xbf) ? 2 : 1\n\n if (offset + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[offset + 1]\n if ((secondByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0x1f) << 0x6 | (secondByte & 0x3f)\n if (tempCodePoint > 0x7f) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[offset + 1]\n thirdByte = buf[offset + 2]\n if ((secondByte & 0xc0) === 0x80 && (thirdByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0xf) << 0xc | (secondByte & 0x3f) << 0x6 | (thirdByte & 0x3f)\n /* c8 ignore next 3 */\n if (tempCodePoint > 0x7ff && (tempCodePoint < 0xd800 || tempCodePoint > 0xdfff)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[offset + 1]\n thirdByte = buf[offset + 2]\n fourthByte = buf[offset + 3]\n if ((secondByte & 0xc0) === 0x80 && (thirdByte & 0xc0) === 0x80 && (fourthByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0xf) << 0x12 | (secondByte & 0x3f) << 0xc | (thirdByte & 0x3f) << 0x6 | (fourthByte & 0x3f)\n if (tempCodePoint > 0xffff && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n /* c8 ignore next 5 */\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xfffd\n bytesPerSequence = 1\n } else if (codePoint > 0xffff) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3ff | 0xd800)\n codePoint = 0xdc00 | codePoint & 0x3ff\n }\n\n res.push(codePoint)\n offset += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\n/**\n * @param {number[]} codePoints\n * @returns {string}\n */\nexport function decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n /* c8 ignore next 10 */\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n","/**\n * Bl is a list of byte chunks, similar to https://github.com/rvagg/bl but for\n * writing rather than reading.\n * A Bl object accepts set() operations for individual bytes and copyTo() for\n * inserting byte arrays. These write operations don't automatically increment\n * the internal cursor so its \"length\" won't be changed. Instead, increment()\n * must be called to extend its length to cover the inserted data.\n * The toBytes() call will convert all internal memory to a single Uint8Array of\n * the correct length, truncating any data that is stored but hasn't been\n * included by an increment().\n * get() can retrieve a single byte.\n * All operations (except toBytes()) take an \"offset\" argument that will perform\n * the write at the offset _from the current cursor_. For most operations this\n * will be `0` to write at the current cursor position but it can be ahead of\n * the current cursor. Negative offsets probably work but are untested.\n */\n\n// TODO: ipjs doesn't support this, only for test files: https://github.com/mikeal/ipjs/blob/master/src/package/testFile.js#L39\nimport { alloc, concat, slice } from './byte-utils.js'\n\n// the ts-ignores in this file are almost all for the `Uint8Array|number[]` duality that exists\n// for perf reasons. Consider better approaches to this or removing it entirely, it is quite\n// risky because of some assumptions about small chunks === number[] and everything else === Uint8Array.\n\nconst defaultChunkSize = 256\n\nexport class Bl {\n /**\n * @param {number} [chunkSize]\n */\n constructor (chunkSize = defaultChunkSize) {\n this.chunkSize = chunkSize\n /** @type {number} */\n this.cursor = 0\n /** @type {number} */\n this.maxCursor = -1\n /** @type {(Uint8Array|number[])[]} */\n this.chunks = []\n // keep the first chunk around if we can to save allocations for future encodes\n /** @type {Uint8Array|number[]|null} */\n this._initReuseChunk = null\n }\n\n reset () {\n this.cursor = 0\n this.maxCursor = -1\n if (this.chunks.length) {\n this.chunks = []\n }\n if (this._initReuseChunk !== null) {\n this.chunks.push(this._initReuseChunk)\n this.maxCursor = this._initReuseChunk.length - 1\n }\n }\n\n /**\n * @param {Uint8Array|number[]} bytes\n */\n push (bytes) {\n let topChunk = this.chunks[this.chunks.length - 1]\n const newMax = this.cursor + bytes.length\n if (newMax <= this.maxCursor + 1) {\n // we have at least one chunk and we can fit these bytes into that chunk\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1\n // @ts-ignore\n topChunk.set(bytes, chunkPos)\n } else {\n // can't fit it in\n if (topChunk) {\n // trip the last chunk to `cursor` if we need to\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1\n if (chunkPos < topChunk.length) {\n // @ts-ignore\n this.chunks[this.chunks.length - 1] = topChunk.subarray(0, chunkPos)\n this.maxCursor = this.cursor - 1\n }\n }\n if (bytes.length < 64 && bytes.length < this.chunkSize) {\n // make a new chunk and copy the new one into it\n topChunk = alloc(this.chunkSize)\n this.chunks.push(topChunk)\n this.maxCursor += topChunk.length\n if (this._initReuseChunk === null) {\n this._initReuseChunk = topChunk\n }\n // @ts-ignore\n topChunk.set(bytes, 0)\n } else {\n // push the new bytes in as its own chunk\n this.chunks.push(bytes)\n this.maxCursor += bytes.length\n }\n }\n this.cursor += bytes.length\n }\n\n /**\n * @param {boolean} [reset]\n * @returns {Uint8Array}\n */\n toBytes (reset = false) {\n let byts\n if (this.chunks.length === 1) {\n const chunk = this.chunks[0]\n if (reset && this.cursor > chunk.length / 2) {\n /* c8 ignore next 2 */\n // @ts-ignore\n byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor)\n this._initReuseChunk = null\n this.chunks = []\n } else {\n // @ts-ignore\n byts = slice(chunk, 0, this.cursor)\n }\n } else {\n // @ts-ignore\n byts = concat(this.chunks, this.cursor)\n }\n if (reset) {\n this.reset()\n }\n return byts\n }\n}\n","const decodeErrPrefix = 'CBOR decode error:'\nconst encodeErrPrefix = 'CBOR encode error:'\n\nconst uintMinorPrefixBytes = []\nuintMinorPrefixBytes[23] = 1\nuintMinorPrefixBytes[24] = 2\nuintMinorPrefixBytes[25] = 3\nuintMinorPrefixBytes[26] = 5\nuintMinorPrefixBytes[27] = 9\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} need\n */\nfunction assertEnoughData (data, pos, need) {\n if (data.length - pos < need) {\n throw new Error(`${decodeErrPrefix} not enough data for type`)\n }\n}\n\nexport {\n decodeErrPrefix,\n encodeErrPrefix,\n uintMinorPrefixBytes,\n assertEnoughData\n}\n","/* globals BigInt */\n\nimport { Token, Type } from './token.js'\nimport { decodeErrPrefix, assertEnoughData } from './common.js'\n\nexport const uintBoundaries = [24, 256, 65536, 4294967296, BigInt('18446744073709551616')]\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint8 (data, offset, options) {\n assertEnoughData(data, offset, 1)\n const value = data[offset]\n if (options.strict === true && value < uintBoundaries[0]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint16 (data, offset, options) {\n assertEnoughData(data, offset, 2)\n const value = (data[offset] << 8) | data[offset + 1]\n if (options.strict === true && value < uintBoundaries[1]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint32 (data, offset, options) {\n assertEnoughData(data, offset, 4)\n const value = (data[offset] * 16777216 /* 2 ** 24 */) + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3]\n if (options.strict === true && value < uintBoundaries[2]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number|bigint}\n */\nexport function readUint64 (data, offset, options) {\n // assume BigInt, convert back to Number if within safe range\n assertEnoughData(data, offset, 8)\n const hi = (data[offset] * 16777216 /* 2 ** 24 */) + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3]\n const lo = (data[offset + 4] * 16777216 /* 2 ** 24 */) + (data[offset + 5] << 16) + (data[offset + 6] << 8) + data[offset + 7]\n const value = (BigInt(hi) << BigInt(32)) + BigInt(lo)\n if (options.strict === true && value < uintBoundaries[3]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n if (value <= Number.MAX_SAFE_INTEGER) {\n return Number(value)\n }\n if (options.allowBigInt === true) {\n return value\n }\n throw new Error(`${decodeErrPrefix} integers outside of the safe integer range are not supported`)\n}\n\n/* not required thanks to quick[] list\nconst oneByteTokens = new Array(24).fill(0).map((v, i) => new Token(Type.uint, i, 1))\nexport function decodeUintCompact (data, pos, minor, options) {\n return oneByteTokens[minor]\n}\n*/\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint8 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint16 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint32 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint32(data, pos + 1, options), 5)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint64 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint64(data, pos + 1, options), 9)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeUint (buf, token) {\n return encodeUintValue(buf, 0, token.value)\n}\n\n/**\n * @param {Bl} buf\n * @param {number} major\n * @param {number|bigint} uint\n */\nexport function encodeUintValue (buf, major, uint) {\n if (uint < uintBoundaries[0]) {\n const nuint = Number(uint)\n // pack into one byte, minor=0, additional=value\n buf.push([major | nuint])\n } else if (uint < uintBoundaries[1]) {\n const nuint = Number(uint)\n // pack into two byte, minor=0, additional=24\n buf.push([major | 24, nuint])\n } else if (uint < uintBoundaries[2]) {\n const nuint = Number(uint)\n // pack into three byte, minor=0, additional=25\n buf.push([major | 25, nuint >>> 8, nuint & 0xff])\n } else if (uint < uintBoundaries[3]) {\n const nuint = Number(uint)\n // pack into five byte, minor=0, additional=26\n buf.push([major | 26, (nuint >>> 24) & 0xff, (nuint >>> 16) & 0xff, (nuint >>> 8) & 0xff, nuint & 0xff])\n } else {\n const buint = BigInt(uint)\n if (buint < uintBoundaries[4]) {\n // pack into nine byte, minor=0, additional=27\n const set = [major | 27, 0, 0, 0, 0, 0, 0, 0]\n // simulate bitwise above 32 bits\n let lo = Number(buint & BigInt(0xffffffff))\n let hi = Number(buint >> BigInt(32) & BigInt(0xffffffff))\n set[8] = lo & 0xff\n lo = lo >> 8\n set[7] = lo & 0xff\n lo = lo >> 8\n set[6] = lo & 0xff\n lo = lo >> 8\n set[5] = lo & 0xff\n set[4] = hi & 0xff\n hi = hi >> 8\n set[3] = hi & 0xff\n hi = hi >> 8\n set[2] = hi & 0xff\n hi = hi >> 8\n set[1] = hi & 0xff\n buf.push(set)\n } else {\n throw new Error(`${decodeErrPrefix} encountered BigInt larger than allowable range`)\n }\n }\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeUint.encodedSize = function encodedSize (token) {\n return encodeUintValue.encodedSize(token.value)\n}\n\n/**\n * @param {number} uint\n * @returns {number}\n */\nencodeUintValue.encodedSize = function encodedSize (uint) {\n if (uint < uintBoundaries[0]) {\n return 1\n }\n if (uint < uintBoundaries[1]) {\n return 2\n }\n if (uint < uintBoundaries[2]) {\n return 3\n }\n if (uint < uintBoundaries[3]) {\n return 5\n }\n return 9\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeUint.compareTokens = function compareTokens (tok1, tok2) {\n return tok1.value < tok2.value ? -1 : tok1.value > tok2.value ? 1 : /* c8 ignore next */ 0\n}\n","/* eslint-env es2020 */\n\nimport { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint8 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint16 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint32 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint32(data, pos + 1, options), 5)\n}\n\nconst neg1b = BigInt(-1)\nconst pos1b = BigInt(1)\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint64 (data, pos, _minor, options) {\n const int = uint.readUint64(data, pos + 1, options)\n if (typeof int !== 'bigint') {\n const value = -1 - int\n if (value >= Number.MIN_SAFE_INTEGER) {\n return new Token(Type.negint, value, 9)\n }\n }\n if (options.allowBigInt !== true) {\n throw new Error(`${decodeErrPrefix} integers outside of the safe integer range are not supported`)\n }\n return new Token(Type.negint, neg1b - BigInt(int), 9)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeNegint (buf, token) {\n const negint = token.value\n const unsigned = (typeof negint === 'bigint' ? (negint * neg1b - pos1b) : (negint * -1 - 1))\n uint.encodeUintValue(buf, token.type.majorEncoded, unsigned)\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeNegint.encodedSize = function encodedSize (token) {\n const negint = token.value\n const unsigned = (typeof negint === 'bigint' ? (negint * neg1b - pos1b) : (negint * -1 - 1))\n /* c8 ignore next 4 */\n // handled by quickEncode, we shouldn't get here but it's included for completeness\n if (unsigned < uint.uintBoundaries[0]) {\n return 1\n }\n if (unsigned < uint.uintBoundaries[1]) {\n return 2\n }\n if (unsigned < uint.uintBoundaries[2]) {\n return 3\n }\n if (unsigned < uint.uintBoundaries[3]) {\n return 5\n }\n return 9\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeNegint.compareTokens = function compareTokens (tok1, tok2) {\n // opposite of the uint comparison since we store the uint version in bytes\n return tok1.value < tok2.value ? 1 : tok1.value > tok2.value ? -1 : /* c8 ignore next */ 0\n}\n","import { Token, Type } from './token.js'\nimport { assertEnoughData, decodeErrPrefix } from './common.js'\nimport * as uint from './0uint.js'\nimport { compare, fromString, slice } from './byte-utils.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (data, pos, prefix, length) {\n assertEnoughData(data, pos, prefix + length)\n const buf = slice(data, pos + prefix, pos + prefix + length)\n return new Token(Type.bytes, buf, prefix + length)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeBytesCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer bytes lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * `encodedBytes` allows for caching when we do a byte version of a string\n * for key sorting purposes\n * @param {Token} token\n * @returns {Uint8Array}\n */\nfunction tokenBytes (token) {\n if (token.encodedBytes === undefined) {\n token.encodedBytes = token.type === Type.string ? fromString(token.value) : token.value\n }\n // @ts-ignore c'mon\n return token.encodedBytes\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeBytes (buf, token) {\n const bytes = tokenBytes(token)\n uint.encodeUintValue(buf, token.type.majorEncoded, bytes.length)\n buf.push(bytes)\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeBytes.encodedSize = function encodedSize (token) {\n const bytes = tokenBytes(token)\n return uint.encodeUintValue.encodedSize(bytes.length) + bytes.length\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeBytes.compareTokens = function compareTokens (tok1, tok2) {\n return compareBytes(tokenBytes(tok1), tokenBytes(tok2))\n}\n\n/**\n * @param {Uint8Array} b1\n * @param {Uint8Array} b2\n * @returns {number}\n */\nexport function compareBytes (b1, b2) {\n return b1.length < b2.length ? -1 : b1.length > b2.length ? 1 : compare(b1, b2)\n}\n","import { Token, Type } from './token.js'\nimport { assertEnoughData, decodeErrPrefix } from './common.js'\nimport * as uint from './0uint.js'\nimport { encodeBytes } from './2bytes.js'\nimport { toString, slice } from './byte-utils.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} prefix\n * @param {number} length\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nfunction toToken (data, pos, prefix, length, options) {\n const totLength = prefix + length\n assertEnoughData(data, pos, totLength)\n const tok = new Token(Type.string, toString(data, pos + prefix, pos + totLength), totLength)\n if (options.retainStringBytes === true) {\n tok.byteValue = slice(data, pos + prefix, pos + totLength)\n }\n return tok\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeStringCompact (data, pos, minor, options) {\n return toToken(data, pos, 1, minor, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options), options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options), options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options), options)\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer string lengths not supported`)\n }\n return toToken(data, pos, 9, l, options)\n}\n\nexport const encodeString = encodeBytes\n","import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (_data, _pos, prefix, length) {\n return new Token(Type.array, length, prefix)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeArrayCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer array lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArrayIndefinite (data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return toToken(data, pos, 1, Infinity)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeArray (buf, token) {\n uint.encodeUintValue(buf, Type.array.majorEncoded, token.value)\n}\n\n// using an array as a map key, are you sure about this? we can only sort\n// by map length here, it's up to the encoder to decide to look deeper\nencodeArray.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeArray.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n","import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (_data, _pos, prefix, length) {\n return new Token(Type.map, length, prefix)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeMapCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer map lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMapIndefinite (data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return toToken(data, pos, 1, Infinity)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeMap (buf, token) {\n uint.encodeUintValue(buf, Type.map.majorEncoded, token.value)\n}\n\n// using a map as a map key, are you sure about this? we can only sort\n// by map length here, it's up to the encoder to decide to look deeper\nencodeMap.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeMap.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n","import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeTagCompact (_data, _pos, minor, _options) {\n return new Token(Type.tag, minor, 1)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag8 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag16 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag32 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint32(data, pos + 1, options), 5)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag64 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint64(data, pos + 1, options), 9)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeTag (buf, token) {\n uint.encodeUintValue(buf, Type.tag.majorEncoded, token.value)\n}\n\nencodeTag.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeTag.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n","// TODO: shift some of the bytes logic to bytes-utils so we can use Buffer\n// where possible\n\nimport { Token, Type } from './token.js'\nimport { decodeErrPrefix } from './common.js'\nimport { encodeUint } from './0uint.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n * @typedef {import('../interface').EncodeOptions} EncodeOptions\n */\n\nconst MINOR_FALSE = 20\nconst MINOR_TRUE = 21\nconst MINOR_NULL = 22\nconst MINOR_UNDEFINED = 23\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUndefined (_data, _pos, _minor, options) {\n if (options.allowUndefined === false) {\n throw new Error(`${decodeErrPrefix} undefined values are not supported`)\n } else if (options.coerceUndefinedToNull === true) {\n return new Token(Type.null, null, 1)\n }\n return new Token(Type.undefined, undefined, 1)\n}\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBreak (_data, _pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return new Token(Type.break, undefined, 1)\n}\n\n/**\n * @param {number} value\n * @param {number} bytes\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nfunction createToken (value, bytes, options) {\n if (options) {\n if (options.allowNaN === false && Number.isNaN(value)) {\n throw new Error(`${decodeErrPrefix} NaN values are not supported`)\n }\n if (options.allowInfinity === false && (value === Infinity || value === -Infinity)) {\n throw new Error(`${decodeErrPrefix} Infinity values are not supported`)\n }\n }\n return new Token(Type.float, value, bytes)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat16 (data, pos, _minor, options) {\n return createToken(readFloat16(data, pos + 1), 3, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat32 (data, pos, _minor, options) {\n return createToken(readFloat32(data, pos + 1), 5, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat64 (data, pos, _minor, options) {\n return createToken(readFloat64(data, pos + 1), 9, options)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n * @param {EncodeOptions} options\n */\nexport function encodeFloat (buf, token, options) {\n const float = token.value\n\n if (float === false) {\n buf.push([Type.float.majorEncoded | MINOR_FALSE])\n } else if (float === true) {\n buf.push([Type.float.majorEncoded | MINOR_TRUE])\n } else if (float === null) {\n buf.push([Type.float.majorEncoded | MINOR_NULL])\n } else if (float === undefined) {\n buf.push([Type.float.majorEncoded | MINOR_UNDEFINED])\n } else {\n let decoded\n let success = false\n if (!options || options.float64 !== true) {\n encodeFloat16(float)\n decoded = readFloat16(ui8a, 1)\n if (float === decoded || Number.isNaN(float)) {\n ui8a[0] = 0xf9\n buf.push(ui8a.slice(0, 3))\n success = true\n } else {\n encodeFloat32(float)\n decoded = readFloat32(ui8a, 1)\n if (float === decoded) {\n ui8a[0] = 0xfa\n buf.push(ui8a.slice(0, 5))\n success = true\n }\n }\n }\n if (!success) {\n encodeFloat64(float)\n decoded = readFloat64(ui8a, 1)\n ui8a[0] = 0xfb\n buf.push(ui8a.slice(0, 9))\n }\n }\n}\n\n/**\n * @param {Token} token\n * @param {EncodeOptions} options\n * @returns {number}\n */\nencodeFloat.encodedSize = function encodedSize (token, options) {\n const float = token.value\n\n if (float === false || float === true || float === null || float === undefined) {\n return 1\n }\n\n if (!options || options.float64 !== true) {\n encodeFloat16(float)\n let decoded = readFloat16(ui8a, 1)\n if (float === decoded || Number.isNaN(float)) {\n return 3\n }\n encodeFloat32(float)\n decoded = readFloat32(ui8a, 1)\n if (float === decoded) {\n return 5\n }\n }\n return 9\n}\n\nconst buffer = new ArrayBuffer(9)\nconst dataView = new DataView(buffer, 1)\nconst ui8a = new Uint8Array(buffer, 0)\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat16 (inp) {\n if (inp === Infinity) {\n dataView.setUint16(0, 0x7c00, false)\n } else if (inp === -Infinity) {\n dataView.setUint16(0, 0xfc00, false)\n } else if (Number.isNaN(inp)) {\n dataView.setUint16(0, 0x7e00, false)\n } else {\n dataView.setFloat32(0, inp)\n const valu32 = dataView.getUint32(0)\n const exponent = (valu32 & 0x7f800000) >> 23\n const mantissa = valu32 & 0x7fffff\n\n /* c8 ignore next 6 */\n if (exponent === 0xff) {\n // too big, Infinity, but this should be hard (impossible?) to trigger\n dataView.setUint16(0, 0x7c00, false)\n } else if (exponent === 0x00) {\n // 0.0, -0.0 and subnormals, shouldn't be possible to get here because 0.0 should be counted as an int\n dataView.setUint16(0, ((inp & 0x80000000) >> 16) | (mantissa >> 13), false)\n } else { // standard numbers\n // chunks of logic here borrowed from https://github.com/PJK/libcbor/blob/c78f437182533e3efa8d963ff4b945bb635c2284/src/cbor/encoding.c#L127\n const logicalExponent = exponent - 127\n // Now we know that 2^exponent <= 0 logically\n /* c8 ignore next 6 */\n if (logicalExponent < -24) {\n /* No unambiguous representation exists, this float is not a half float\n and is too small to be represented using a half, round off to zero.\n Consistent with the reference implementation. */\n // should be difficult (impossible?) to get here in JS\n dataView.setUint16(0, 0)\n } else if (logicalExponent < -14) {\n /* Offset the remaining decimal places by shifting the significand, the\n value is lost. This is an implementation decision that works around the\n absence of standard half-float in the language. */\n dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | /* sign bit */ (1 << (24 + logicalExponent)), false)\n } else {\n dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | ((logicalExponent + 15) << 10) | (mantissa >> 13), false)\n }\n }\n }\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat16 (ui8a, pos) {\n if (ui8a.length - pos < 2) {\n throw new Error(`${decodeErrPrefix} not enough data for float16`)\n }\n\n const half = (ui8a[pos] << 8) + ui8a[pos + 1]\n if (half === 0x7c00) {\n return Infinity\n }\n if (half === 0xfc00) {\n return -Infinity\n }\n if (half === 0x7e00) {\n return NaN\n }\n const exp = (half >> 10) & 0x1f\n const mant = half & 0x3ff\n let val\n if (exp === 0) {\n val = mant * (2 ** -24)\n } else if (exp !== 31) {\n val = (mant + 1024) * (2 ** (exp - 25))\n /* c8 ignore next 4 */\n } else {\n // may not be possible to get here\n val = mant === 0 ? Infinity : NaN\n }\n return (half & 0x8000) ? -val : val\n}\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat32 (inp) {\n dataView.setFloat32(0, inp, false)\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat32 (ui8a, pos) {\n if (ui8a.length - pos < 4) {\n throw new Error(`${decodeErrPrefix} not enough data for float32`)\n }\n const offset = (ui8a.byteOffset || 0) + pos\n return new DataView(ui8a.buffer, offset, 4).getFloat32(0, false)\n}\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat64 (inp) {\n dataView.setFloat64(0, inp, false)\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat64 (ui8a, pos) {\n if (ui8a.length - pos < 8) {\n throw new Error(`${decodeErrPrefix} not enough data for float64`)\n }\n const offset = (ui8a.byteOffset || 0) + pos\n return new DataView(ui8a.buffer, offset, 8).getFloat64(0, false)\n}\n\n/**\n * @param {Token} _tok1\n * @param {Token} _tok2\n * @returns {number}\n */\nencodeFloat.compareTokens = encodeUint.compareTokens\n/*\nencodeFloat.compareTokens = function compareTokens (_tok1, _tok2) {\n return _tok1\n throw new Error(`${encodeErrPrefix} cannot use floats as map keys`)\n}\n*/\n","import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport * as negint from './1negint.js'\nimport * as bytes from './2bytes.js'\nimport * as string from './3string.js'\nimport * as array from './4array.js'\nimport * as map from './5map.js'\nimport * as tag from './6tag.js'\nimport * as float from './7float.js'\nimport { decodeErrPrefix } from './common.js'\nimport { fromArray } from './byte-utils.js'\n\n/**\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n */\nfunction invalidMinor (data, pos, minor) {\n throw new Error(`${decodeErrPrefix} encountered invalid minor (${minor}) for major ${data[pos] >>> 5}`)\n}\n\n/**\n * @param {string} msg\n * @returns {()=>any}\n */\nfunction errorer (msg) {\n return () => { throw new Error(`${decodeErrPrefix} ${msg}`) }\n}\n\n/** @type {((data:Uint8Array, pos:number, minor:number, options?:DecodeOptions) => any)[]} */\nexport const jump = []\n\n// unsigned integer, 0x00..0x17 (0..23)\nfor (let i = 0; i <= 0x17; i++) {\n jump[i] = invalidMinor // uint.decodeUintCompact, handled by quick[]\n}\njump[0x18] = uint.decodeUint8 // unsigned integer, one-byte uint8_t follows\njump[0x19] = uint.decodeUint16 // unsigned integer, two-byte uint16_t follows\njump[0x1a] = uint.decodeUint32 // unsigned integer, four-byte uint32_t follows\njump[0x1b] = uint.decodeUint64 // unsigned integer, eight-byte uint64_t follows\njump[0x1c] = invalidMinor\njump[0x1d] = invalidMinor\njump[0x1e] = invalidMinor\njump[0x1f] = invalidMinor\n// negative integer, -1-0x00..-1-0x17 (-1..-24)\nfor (let i = 0x20; i <= 0x37; i++) {\n jump[i] = invalidMinor // negintDecode, handled by quick[]\n}\njump[0x38] = negint.decodeNegint8 // negative integer, -1-n one-byte uint8_t for n follows\njump[0x39] = negint.decodeNegint16 // negative integer, -1-n two-byte uint16_t for n follows\njump[0x3a] = negint.decodeNegint32 // negative integer, -1-n four-byte uint32_t for follows\njump[0x3b] = negint.decodeNegint64 // negative integer, -1-n eight-byte uint64_t for follows\njump[0x3c] = invalidMinor\njump[0x3d] = invalidMinor\njump[0x3e] = invalidMinor\njump[0x3f] = invalidMinor\n// byte string, 0x00..0x17 bytes follow\nfor (let i = 0x40; i <= 0x57; i++) {\n jump[i] = bytes.decodeBytesCompact\n}\njump[0x58] = bytes.decodeBytes8 // byte string, one-byte uint8_t for n, and then n bytes follow\njump[0x59] = bytes.decodeBytes16 // byte string, two-byte uint16_t for n, and then n bytes follow\njump[0x5a] = bytes.decodeBytes32 // byte string, four-byte uint32_t for n, and then n bytes follow\njump[0x5b] = bytes.decodeBytes64 // byte string, eight-byte uint64_t for n, and then n bytes follow\njump[0x5c] = invalidMinor\njump[0x5d] = invalidMinor\njump[0x5e] = invalidMinor\njump[0x5f] = errorer('indefinite length bytes/strings are not supported') // byte string, byte strings follow, terminated by \"break\"\n// UTF-8 string 0x00..0x17 bytes follow\nfor (let i = 0x60; i <= 0x77; i++) {\n jump[i] = string.decodeStringCompact\n}\njump[0x78] = string.decodeString8 // UTF-8 string, one-byte uint8_t for n, and then n bytes follow\njump[0x79] = string.decodeString16 // UTF-8 string, two-byte uint16_t for n, and then n bytes follow\njump[0x7a] = string.decodeString32 // UTF-8 string, four-byte uint32_t for n, and then n bytes follow\njump[0x7b] = string.decodeString64 // UTF-8 string, eight-byte uint64_t for n, and then n bytes follow\njump[0x7c] = invalidMinor\njump[0x7d] = invalidMinor\njump[0x7e] = invalidMinor\njump[0x7f] = errorer('indefinite length bytes/strings are not supported') // UTF-8 strings follow, terminated by \"break\"\n// array, 0x00..0x17 data items follow\nfor (let i = 0x80; i <= 0x97; i++) {\n jump[i] = array.decodeArrayCompact\n}\njump[0x98] = array.decodeArray8 // array, one-byte uint8_t for n, and then n data items follow\njump[0x99] = array.decodeArray16 // array, two-byte uint16_t for n, and then n data items follow\njump[0x9a] = array.decodeArray32 // array, four-byte uint32_t for n, and then n data items follow\njump[0x9b] = array.decodeArray64 // array, eight-byte uint64_t for n, and then n data items follow\njump[0x9c] = invalidMinor\njump[0x9d] = invalidMinor\njump[0x9e] = invalidMinor\njump[0x9f] = array.decodeArrayIndefinite // array, data items follow, terminated by \"break\"\n// map, 0x00..0x17 pairs of data items follow\nfor (let i = 0xa0; i <= 0xb7; i++) {\n jump[i] = map.decodeMapCompact\n}\njump[0xb8] = map.decodeMap8 // map, one-byte uint8_t for n, and then n pairs of data items follow\njump[0xb9] = map.decodeMap16 // map, two-byte uint16_t for n, and then n pairs of data items follow\njump[0xba] = map.decodeMap32 // map, four-byte uint32_t for n, and then n pairs of data items follow\njump[0xbb] = map.decodeMap64 // map, eight-byte uint64_t for n, and then n pairs of data items follow\njump[0xbc] = invalidMinor\njump[0xbd] = invalidMinor\njump[0xbe] = invalidMinor\njump[0xbf] = map.decodeMapIndefinite // map, pairs of data items follow, terminated by \"break\"\n// tags\nfor (let i = 0xc0; i <= 0xd7; i++) {\n jump[i] = tag.decodeTagCompact\n}\njump[0xd8] = tag.decodeTag8\njump[0xd9] = tag.decodeTag16\njump[0xda] = tag.decodeTag32\njump[0xdb] = tag.decodeTag64\njump[0xdc] = invalidMinor\njump[0xdd] = invalidMinor\njump[0xde] = invalidMinor\njump[0xdf] = invalidMinor\n// 0xe0..0xf3 simple values, unsupported\nfor (let i = 0xe0; i <= 0xf3; i++) {\n jump[i] = errorer('simple values are not supported')\n}\njump[0xf4] = invalidMinor // false, handled by quick[]\njump[0xf5] = invalidMinor // true, handled by quick[]\njump[0xf6] = invalidMinor // null, handled by quick[]\njump[0xf7] = float.decodeUndefined // undefined\njump[0xf8] = errorer('simple values are not supported') // simple value, one byte follows, unsupported\njump[0xf9] = float.decodeFloat16 // half-precision float (two-byte IEEE 754)\njump[0xfa] = float.decodeFloat32 // single-precision float (four-byte IEEE 754)\njump[0xfb] = float.decodeFloat64 // double-precision float (eight-byte IEEE 754)\njump[0xfc] = invalidMinor\njump[0xfd] = invalidMinor\njump[0xfe] = invalidMinor\njump[0xff] = float.decodeBreak // \"break\" stop code\n\n/** @type {Token[]} */\nexport const quick = []\n// ints <24\nfor (let i = 0; i < 24; i++) {\n quick[i] = new Token(Type.uint, i, 1)\n}\n// negints >= -24\nfor (let i = -1; i >= -24; i--) {\n quick[31 - i] = new Token(Type.negint, i, 1)\n}\n// empty bytes\nquick[0x40] = new Token(Type.bytes, new Uint8Array(0), 1)\n// empty string\nquick[0x60] = new Token(Type.string, '', 1)\n// empty list\nquick[0x80] = new Token(Type.array, 0, 1)\n// empty map\nquick[0xa0] = new Token(Type.map, 0, 1)\n// false\nquick[0xf4] = new Token(Type.false, false, 1)\n// true\nquick[0xf5] = new Token(Type.true, true, 1)\n// null\nquick[0xf6] = new Token(Type.null, null, 1)\n\n/**\n * @param {Token} token\n * @returns {Uint8Array|undefined}\n */\nexport function quickEncodeToken (token) {\n switch (token.type) {\n case Type.false:\n return fromArray([0xf4])\n case Type.true:\n return fromArray([0xf5])\n case Type.null:\n return fromArray([0xf6])\n case Type.bytes:\n if (!token.value.length) {\n return fromArray([0x40])\n }\n return\n case Type.string:\n if (token.value === '') {\n return fromArray([0x60])\n }\n return\n case Type.array:\n if (token.value === 0) {\n return fromArray([0x80])\n }\n /* c8 ignore next 2 */\n // shouldn't be possible if this were called when there was only one token\n return\n case Type.map:\n if (token.value === 0) {\n return fromArray([0xa0])\n }\n /* c8 ignore next 2 */\n // shouldn't be possible if this were called when there was only one token\n return\n case Type.uint:\n if (token.value < 24) {\n return fromArray([Number(token.value)])\n }\n return\n case Type.negint:\n if (token.value >= -24) {\n return fromArray([31 - Number(token.value)])\n }\n }\n}\n","import { is } from './is.js'\nimport { Token, Type } from './token.js'\nimport { Bl } from './bl.js'\nimport { encodeErrPrefix } from './common.js'\nimport { quickEncodeToken } from './jump.js'\nimport { asU8A } from './byte-utils.js'\n\nimport { encodeUint } from './0uint.js'\nimport { encodeNegint } from './1negint.js'\nimport { encodeBytes } from './2bytes.js'\nimport { encodeString } from './3string.js'\nimport { encodeArray } from './4array.js'\nimport { encodeMap } from './5map.js'\nimport { encodeTag } from './6tag.js'\nimport { encodeFloat } from './7float.js'\n\n/**\n * @typedef {import('../interface').EncodeOptions} EncodeOptions\n * @typedef {import('../interface').OptionalTypeEncoder} OptionalTypeEncoder\n * @typedef {import('../interface').Reference} Reference\n * @typedef {import('../interface').StrictTypeEncoder} StrictTypeEncoder\n * @typedef {import('../interface').TokenTypeEncoder} TokenTypeEncoder\n * @typedef {import('../interface').TokenOrNestedTokens} TokenOrNestedTokens\n */\n\n/** @type {EncodeOptions} */\nconst defaultEncodeOptions = {\n float64: false,\n mapSorter,\n quickEncodeToken\n}\n\n/** @returns {TokenTypeEncoder[]} */\nexport function makeCborEncoders () {\n const encoders = []\n encoders[Type.uint.major] = encodeUint\n encoders[Type.negint.major] = encodeNegint\n encoders[Type.bytes.major] = encodeBytes\n encoders[Type.string.major] = encodeString\n encoders[Type.array.major] = encodeArray\n encoders[Type.map.major] = encodeMap\n encoders[Type.tag.major] = encodeTag\n encoders[Type.float.major] = encodeFloat\n return encoders\n}\n\nconst cborEncoders = makeCborEncoders()\n\nconst buf = new Bl()\n\n/** @implements {Reference} */\nclass Ref {\n /**\n * @param {object|any[]} obj\n * @param {Reference|undefined} parent\n */\n constructor (obj, parent) {\n this.obj = obj\n this.parent = parent\n }\n\n /**\n * @param {object|any[]} obj\n * @returns {boolean}\n */\n includes (obj) {\n /** @type {Reference|undefined} */\n let p = this\n do {\n if (p.obj === obj) {\n return true\n }\n } while (p = p.parent) // eslint-disable-line\n return false\n }\n\n /**\n * @param {Reference|undefined} stack\n * @param {object|any[]} obj\n * @returns {Reference}\n */\n static createCheck (stack, obj) {\n if (stack && stack.includes(obj)) {\n throw new Error(`${encodeErrPrefix} object contains circular references`)\n }\n return new Ref(obj, stack)\n }\n}\n\nconst simpleTokens = {\n null: new Token(Type.null, null),\n undefined: new Token(Type.undefined, undefined),\n true: new Token(Type.true, true),\n false: new Token(Type.false, false),\n emptyArray: new Token(Type.array, 0),\n emptyMap: new Token(Type.map, 0)\n}\n\n/** @type {{[typeName: string]: StrictTypeEncoder}} */\nconst typeEncoders = {\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n number (obj, _typ, _options, _refStack) {\n if (!Number.isInteger(obj) || !Number.isSafeInteger(obj)) {\n return new Token(Type.float, obj)\n } else if (obj >= 0) {\n return new Token(Type.uint, obj)\n } else {\n return new Token(Type.negint, obj)\n }\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n bigint (obj, _typ, _options, _refStack) {\n if (obj >= BigInt(0)) {\n return new Token(Type.uint, obj)\n } else {\n return new Token(Type.negint, obj)\n }\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n Uint8Array (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, obj)\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n string (obj, _typ, _options, _refStack) {\n return new Token(Type.string, obj)\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n boolean (obj, _typ, _options, _refStack) {\n return obj ? simpleTokens.true : simpleTokens.false\n },\n\n /**\n * @param {any} _obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n null (_obj, _typ, _options, _refStack) {\n return simpleTokens.null\n },\n\n /**\n * @param {any} _obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n undefined (_obj, _typ, _options, _refStack) {\n return simpleTokens.undefined\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n ArrayBuffer (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj))\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n DataView (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength))\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} options\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\n Array (obj, _typ, options, refStack) {\n if (!obj.length) {\n if (options.addBreakTokens === true) {\n return [simpleTokens.emptyArray, new Token(Type.break)]\n }\n return simpleTokens.emptyArray\n }\n refStack = Ref.createCheck(refStack, obj)\n const entries = []\n let i = 0\n for (const e of obj) {\n entries[i++] = objectToTokens(e, options, refStack)\n }\n if (options.addBreakTokens) {\n return [new Token(Type.array, obj.length), entries, new Token(Type.break)]\n }\n return [new Token(Type.array, obj.length), entries]\n },\n\n /**\n * @param {any} obj\n * @param {string} typ\n * @param {EncodeOptions} options\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\n Object (obj, typ, options, refStack) {\n // could be an Object or a Map\n const isMap = typ !== 'Object'\n // it's slightly quicker to use Object.keys() than Object.entries()\n const keys = isMap ? obj.keys() : Object.keys(obj)\n const length = isMap ? obj.size : keys.length\n if (!length) {\n if (options.addBreakTokens === true) {\n return [simpleTokens.emptyMap, new Token(Type.break)]\n }\n return simpleTokens.emptyMap\n }\n refStack = Ref.createCheck(refStack, obj)\n /** @type {TokenOrNestedTokens[]} */\n const entries = []\n let i = 0\n for (const key of keys) {\n entries[i++] = [\n objectToTokens(key, options, refStack),\n objectToTokens(isMap ? obj.get(key) : obj[key], options, refStack)\n ]\n }\n sortMapEntries(entries, options)\n if (options.addBreakTokens) {\n return [new Token(Type.map, length), entries, new Token(Type.break)]\n }\n return [new Token(Type.map, length), entries]\n }\n}\n\ntypeEncoders.Map = typeEncoders.Object\ntypeEncoders.Buffer = typeEncoders.Uint8Array\nfor (const typ of 'Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64'.split(' ')) {\n typeEncoders[`${typ}Array`] = typeEncoders.DataView\n}\n\n/**\n * @param {any} obj\n * @param {EncodeOptions} [options]\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\nfunction objectToTokens (obj, options = {}, refStack) {\n const typ = is(obj)\n const customTypeEncoder = (options && options.typeEncoders && /** @type {OptionalTypeEncoder} */ options.typeEncoders[typ]) || typeEncoders[typ]\n if (typeof customTypeEncoder === 'function') {\n const tokens = customTypeEncoder(obj, typ, options, refStack)\n if (tokens != null) {\n return tokens\n }\n }\n const typeEncoder = typeEncoders[typ]\n if (!typeEncoder) {\n throw new Error(`${encodeErrPrefix} unsupported type: ${typ}`)\n }\n return typeEncoder(obj, typ, options, refStack)\n}\n\n/*\nCBOR key sorting is a mess.\n\nThe canonicalisation recommendation from https://tools.ietf.org/html/rfc7049#section-3.9\nincludes the wording:\n\n> The keys in every map must be sorted lowest value to highest.\n> Sorting is performed on the bytes of the representation of the key\n> data items without paying attention to the 3/5 bit splitting for\n> major types.\n> ...\n> * If two keys have different lengths, the shorter one sorts\n earlier;\n> * If two keys have the same length, the one with the lower value\n in (byte-wise) lexical order sorts earlier.\n\n1. It is not clear what \"bytes of the representation of the key\" means: is it\n the CBOR representation, or the binary representation of the object itself?\n Consider the int and uint difference here.\n2. It is not clear what \"without paying attention to\" means: do we include it\n and compare on that? Or do we omit the special prefix byte, (mostly) treating\n the key in its plain binary representation form.\n\nThe FIDO 2.0: Client To Authenticator Protocol spec takes the original CBOR\nwording and clarifies it according to their understanding.\nhttps://fidoalliance.org/specs/fido-v2.0-rd-20170927/fido-client-to-authenticator-protocol-v2.0-rd-20170927.html#message-encoding\n\n> The keys in every map must be sorted lowest value to highest. Sorting is\n> performed on the bytes of the representation of the key data items without\n> paying attention to the 3/5 bit splitting for major types. The sorting rules\n> are:\n> * If the major types are different, the one with the lower value in numerical\n> order sorts earlier.\n> * If two keys have different lengths, the shorter one sorts earlier;\n> * If two keys have the same length, the one with the lower value in\n> (byte-wise) lexical order sorts earlier.\n\nSome other implementations, such as borc, do a full encode then do a\nlength-first, byte-wise-second comparison:\nhttps://github.com/dignifiedquire/borc/blob/b6bae8b0bcde7c3976b0f0f0957208095c392a36/src/encoder.js#L358\nhttps://github.com/dignifiedquire/borc/blob/b6bae8b0bcde7c3976b0f0f0957208095c392a36/src/utils.js#L143-L151\n\nThis has the benefit of being able to easily handle arbitrary keys, including\ncomplex types (maps and arrays).\n\nWe'll opt for the FIDO approach, since it affords some efficies since we don't\nneed a full encode of each key to determine order and can defer to the types\nto determine how to most efficiently order their values (i.e. int and uint\nordering can be done on the numbers, no need for byte-wise, for example).\n\nRecommendation: stick to single key types or you'll get into trouble, and prefer\nstring keys because it's much simpler that way.\n*/\n\n/*\n(UPDATE, Dec 2020)\nhttps://tools.ietf.org/html/rfc8949 is the updated CBOR spec and clarifies some\nof the questions above with a new recommendation for sorting order being much\ncloser to what would be expected in other environments (i.e. no length-first\nweirdness).\nThis new sorting order is not yet implemented here but could be added as an\noption. \"Determinism\" (canonicity) is system dependent and it's difficult to\nchange existing systems that are built with existing expectations. So if a new\nordering is introduced here, the old needs to be kept as well with the user\nhaving the option.\n*/\n\n/**\n * @param {TokenOrNestedTokens[]} entries\n * @param {EncodeOptions} options\n */\nfunction sortMapEntries (entries, options) {\n if (options.mapSorter) {\n entries.sort(options.mapSorter)\n }\n}\n\n/**\n * @param {(Token|Token[])[]} e1\n * @param {(Token|Token[])[]} e2\n * @returns {number}\n */\nfunction mapSorter (e1, e2) {\n // the key position ([0]) could have a single token or an array\n // almost always it'll be a single token but complex key might get involved\n /* c8 ignore next 2 */\n const keyToken1 = Array.isArray(e1[0]) ? e1[0][0] : e1[0]\n const keyToken2 = Array.isArray(e2[0]) ? e2[0][0] : e2[0]\n\n // different key types\n if (keyToken1.type !== keyToken2.type) {\n return keyToken1.type.compare(keyToken2.type)\n }\n\n const major = keyToken1.type.major\n // TODO: handle case where cmp === 0 but there are more keyToken e. complex type)\n const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2)\n /* c8 ignore next 5 */\n if (tcmp === 0) {\n // duplicate key or complex type where the first token matched,\n // i.e. a map or array and we're only comparing the opening token\n console.warn('WARNING: complex key types used, CBOR key sorting guarantees are gone')\n }\n return tcmp\n}\n\n/**\n * @param {Bl} buf\n * @param {TokenOrNestedTokens} tokens\n * @param {TokenTypeEncoder[]} encoders\n * @param {EncodeOptions} options\n */\nfunction tokensToEncoded (buf, tokens, encoders, options) {\n if (Array.isArray(tokens)) {\n for (const token of tokens) {\n tokensToEncoded(buf, token, encoders, options)\n }\n } else {\n encoders[tokens.type.major](buf, tokens, options)\n }\n}\n\n/**\n * @param {any} data\n * @param {TokenTypeEncoder[]} encoders\n * @param {EncodeOptions} options\n * @returns {Uint8Array}\n */\nfunction encodeCustom (data, encoders, options) {\n const tokens = objectToTokens(data, options)\n if (!Array.isArray(tokens) && options.quickEncodeToken) {\n const quickBytes = options.quickEncodeToken(tokens)\n if (quickBytes) {\n return quickBytes\n }\n const encoder = encoders[tokens.type.major]\n if (encoder.encodedSize) {\n const size = encoder.encodedSize(tokens, options)\n const buf = new Bl(size)\n encoder(buf, tokens, options)\n /* c8 ignore next 4 */\n // this would be a problem with encodedSize() functions\n if (buf.chunks.length !== 1) {\n throw new Error(`Unexpected error: pre-calculated length for ${tokens} was wrong`)\n }\n return asU8A(buf.chunks[0])\n }\n }\n buf.reset()\n tokensToEncoded(buf, tokens, encoders, options)\n return buf.toBytes(true)\n}\n\n/**\n * @param {any} data\n * @param {EncodeOptions} [options]\n * @returns {Uint8Array}\n */\nfunction encode (data, options) {\n options = Object.assign({}, defaultEncodeOptions, options)\n return encodeCustom(data, cborEncoders, options)\n}\n\nexport { objectToTokens, encode, encodeCustom, Ref }\n","import { decodeErrPrefix } from './common.js'\nimport { Type } from './token.js'\nimport { jump, quick } from './jump.js'\n\n/**\n * @typedef {import('./token.js').Token} Token\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n * @typedef {import('../interface').DecodeTokenizer} DecodeTokenizer\n */\n\nconst defaultDecodeOptions = {\n strict: false,\n allowIndefinite: true,\n allowUndefined: true,\n allowBigInt: true\n}\n\n/**\n * @implements {DecodeTokenizer}\n */\nclass Tokeniser {\n /**\n * @param {Uint8Array} data\n * @param {DecodeOptions} options\n */\n constructor (data, options = {}) {\n this._pos = 0\n this.data = data\n this.options = options\n }\n\n pos () {\n return this._pos\n }\n\n done () {\n return this._pos >= this.data.length\n }\n\n next () {\n const byt = this.data[this._pos]\n let token = quick[byt]\n if (token === undefined) {\n const decoder = jump[byt]\n /* c8 ignore next 4 */\n // if we're here then there's something wrong with our jump or quick lists!\n if (!decoder) {\n throw new Error(`${decodeErrPrefix} no decoder for major type ${byt >>> 5} (byte 0x${byt.toString(16).padStart(2, '0')})`)\n }\n const minor = byt & 31\n token = decoder(this.data, this._pos, minor, this.options)\n }\n // @ts-ignore we get to assume encodedLength is set (crossing fingers slightly)\n this._pos += token.encodedLength\n return token\n }\n}\n\nconst DONE = Symbol.for('DONE')\nconst BREAK = Symbol.for('BREAK')\n\n/**\n * @param {Token} token\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokenToArray (token, tokeniser, options) {\n const arr = []\n for (let i = 0; i < token.value; i++) {\n const value = tokensToObject(tokeniser, options)\n if (value === BREAK) {\n if (token.value === Infinity) {\n // normal end to indefinite length array\n break\n }\n throw new Error(`${decodeErrPrefix} got unexpected break to lengthed array`)\n }\n if (value === DONE) {\n throw new Error(`${decodeErrPrefix} found array but not enough entries (got ${i}, expected ${token.value})`)\n }\n arr[i] = value\n }\n return arr\n}\n\n/**\n * @param {Token} token\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokenToMap (token, tokeniser, options) {\n const useMaps = options.useMaps === true\n const obj = useMaps ? undefined : {}\n const m = useMaps ? new Map() : undefined\n for (let i = 0; i < token.value; i++) {\n const key = tokensToObject(tokeniser, options)\n if (key === BREAK) {\n if (token.value === Infinity) {\n // normal end to indefinite length map\n break\n }\n throw new Error(`${decodeErrPrefix} got unexpected break to lengthed map`)\n }\n if (key === DONE) {\n throw new Error(`${decodeErrPrefix} found map but not enough entries (got ${i} [no key], expected ${token.value})`)\n }\n if (useMaps !== true && typeof key !== 'string') {\n throw new Error(`${decodeErrPrefix} non-string keys not supported (got ${typeof key})`)\n }\n if (options.rejectDuplicateMapKeys === true) {\n // @ts-ignore\n if ((useMaps && m.has(key)) || (!useMaps && (key in obj))) {\n throw new Error(`${decodeErrPrefix} found repeat map key \"${key}\"`)\n }\n }\n const value = tokensToObject(tokeniser, options)\n if (value === DONE) {\n throw new Error(`${decodeErrPrefix} found map but not enough entries (got ${i} [no value], expected ${token.value})`)\n }\n if (useMaps) {\n // @ts-ignore TODO reconsider this .. maybe needs to be strict about key types\n m.set(key, value)\n } else {\n // @ts-ignore TODO reconsider this .. maybe needs to be strict about key types\n obj[key] = value\n }\n }\n // @ts-ignore c'mon man\n return useMaps ? m : obj\n}\n\n/**\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokensToObject (tokeniser, options) {\n // should we support array as an argument?\n // check for tokenIter[Symbol.iterator] and replace tokenIter with what that returns?\n if (tokeniser.done()) {\n return DONE\n }\n\n const token = tokeniser.next()\n\n if (token.type === Type.break) {\n return BREAK\n }\n\n if (token.type.terminal) {\n return token.value\n }\n\n if (token.type === Type.array) {\n return tokenToArray(token, tokeniser, options)\n }\n\n if (token.type === Type.map) {\n return tokenToMap(token, tokeniser, options)\n }\n\n if (token.type === Type.tag) {\n if (options.tags && typeof options.tags[token.value] === 'function') {\n const tagged = tokensToObject(tokeniser, options)\n return options.tags[token.value](tagged)\n }\n throw new Error(`${decodeErrPrefix} tag not supported (${token.value})`)\n }\n /* c8 ignore next */\n throw new Error('unsupported')\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {[any, Uint8Array]}\n */\nfunction decodeFirst (data, options) {\n if (!(data instanceof Uint8Array)) {\n throw new Error(`${decodeErrPrefix} data to decode must be a Uint8Array`)\n }\n options = Object.assign({}, defaultDecodeOptions, options)\n const tokeniser = options.tokenizer || new Tokeniser(data, options)\n const decoded = tokensToObject(tokeniser, options)\n if (decoded === DONE) {\n throw new Error(`${decodeErrPrefix} did not find any content to decode`)\n }\n if (decoded === BREAK) {\n throw new Error(`${decodeErrPrefix} got unexpected break`)\n }\n return [decoded, data.subarray(tokeniser.pos())]\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {any}\n */\nfunction decode (data, options) {\n const [decoded, remainder] = decodeFirst(data, options)\n if (remainder.length > 0) {\n throw new Error(`${decodeErrPrefix} too many terminals, data makes no sense`)\n }\n return decoded\n}\n\nexport { Tokeniser, tokensToObject, decode, decodeFirst }\n","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import * as cborg from 'cborg'\nimport { CID } from 'multiformats/cid'\n\n// https://github.com/ipfs/go-ipfs/issues/3570#issuecomment-273931692\nconst CID_CBOR_TAG = 42\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView} ByteView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView} ArrayBufferView\n */\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} buf\n * @returns {ByteView}\n */\nexport function toByteView (buf) {\n if (buf instanceof ArrayBuffer) {\n return new Uint8Array(buf, 0, buf.byteLength)\n }\n\n return buf\n}\n\n/**\n * cidEncoder will receive all Objects during encode, it needs to filter out\n * anything that's not a CID and return `null` for that so it's encoded as\n * normal.\n *\n * @param {any} obj\n * @returns {cborg.Token[]|null}\n */\nfunction cidEncoder (obj) {\n if (obj.asCID !== obj && obj['/'] !== obj.bytes) {\n return null // any other kind of object\n }\n const cid = CID.asCID(obj)\n /* c8 ignore next 4 */\n // very unlikely case, and it'll probably throw a recursion error in cborg\n if (!cid) {\n return null\n }\n const bytes = new Uint8Array(cid.bytes.byteLength + 1)\n bytes.set(cid.bytes, 1) // prefix is 0x00, for historical reasons\n return [\n new cborg.Token(cborg.Type.tag, CID_CBOR_TAG),\n new cborg.Token(cborg.Type.bytes, bytes)\n ]\n}\n\n// eslint-disable-next-line jsdoc/require-returns-check\n/**\n * Intercept all `undefined` values from an object walk and reject the entire\n * object if we find one.\n *\n * @returns {null}\n */\nfunction undefinedEncoder () {\n throw new Error('`undefined` is not supported by the IPLD Data Model and cannot be encoded')\n}\n\n/**\n * Intercept all `number` values from an object walk and reject the entire\n * object if we find something that doesn't fit the IPLD data model (NaN &\n * Infinity).\n *\n * @param {number} num\n * @returns {null}\n */\nfunction numberEncoder (num) {\n if (Number.isNaN(num)) {\n throw new Error('`NaN` is not supported by the IPLD Data Model and cannot be encoded')\n }\n if (num === Infinity || num === -Infinity) {\n throw new Error('`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded')\n }\n return null\n}\n\nconst _encodeOptions = {\n float64: true,\n typeEncoders: {\n Object: cidEncoder,\n undefined: undefinedEncoder,\n number: numberEncoder\n }\n}\n\nexport const encodeOptions = {\n ..._encodeOptions,\n typeEncoders: {\n ..._encodeOptions.typeEncoders\n }\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {CID}\n */\nfunction cidDecoder (bytes) {\n if (bytes[0] !== 0) {\n throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00')\n }\n return CID.decode(bytes.subarray(1)) // ignore leading 0x00\n}\n\nconst _decodeOptions = {\n allowIndefinite: false,\n coerceUndefinedToNull: true,\n allowNaN: false,\n allowInfinity: false,\n allowBigInt: true, // this will lead to BigInt for ints outside of\n // safe-integer range, which may surprise users\n strict: true,\n useMaps: false,\n rejectDuplicateMapKeys: true,\n /** @type {import('cborg').TagDecoder[]} */\n tags: []\n}\n_decodeOptions.tags[CID_CBOR_TAG] = cidDecoder\n\nexport const decodeOptions = {\n ..._decodeOptions,\n tags: _decodeOptions.tags.slice()\n}\n\nexport const name = 'dag-cbor'\nexport const code = 0x71\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView}\n */\nexport const encode = (node) => cborg.encode(node, _encodeOptions)\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} data\n * @returns {T}\n */\nexport const decode = (data) => cborg.decode(toByteView(data), _decodeOptions)\n","/* global crypto */\n\nimport { from } from './hasher.js'\n\n/**\n * @param {AlgorithmIdentifier} name\n */\nconst sha = name =>\n /**\n * @param {Uint8Array} data\n */\n async data => new Uint8Array(await crypto.subtle.digest(name, data))\n\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n})\n","import Clock from './clock.js'\nimport * as Block from 'multiformats/block'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport { base58btc } from 'multiformats/bases/base58'\n\nconst codec = dagCbor\nconst hasher = sha256\nconst hashStringEncoding = base58btc\n\n/**\n * @typedef {Object} module:Log~Entry\n * @property {string} id A string linking multiple entries together.\n * @property {*} payload An arbitrary chunk of data.\n * @property {Array} next One or more hashes pointing to the next entries in a chain of\n * entries.\n * @property {Array} refs One or more hashes which reference other entries in the chain.\n * @property {Clock} clock A logical clock. See {@link module:Log~Clock}.\n * @property {integer} v The version of the entry.\n * @property {string} key The public key of the identity.\n * @property {string} identity The identity of the entry's owner.\n * @property {string} sig The signature of the entry signed by the owner.\n */\n\n/**\n * Creates an Entry.\n * @param {module:Identities~Identity} identity The identity instance\n * @param {string} logId The unique identifier for this log\n * @param {*} data Data of the entry to be added. Can be any JSON.stringifyable\n * data.\n * @param {module:Log~Clock} [clock] The clock\n * @param {Array} [next=[]] An array of CIDs as base58btc encoded\n * strings which point to the next entries in a chain of entries.\n * @param {Array} [refs=[]] An array of CIDs as\n * base58btc encoded strings pointing to various entries which come before\n * this entry.\n * @return {Promise} A promise which contains an instance of\n * Entry.\n * Entry consists of the following properties:\n *\n * - id: A string linking multiple entries together,\n * - payload: An arbitrary chunk of data,\n * - next: One or more hashes pointing to the next entries in a chain of\n * entries,\n * - refs: One or more hashes which reference other entries in the chain,\n * - clock: A logical clock. See {@link module:Log~Clock},\n * - v: The version of the entry,\n * - key: The public key of the identity,\n * - identity: The identity of the entry's owner,\n * - sig: The signature of the entry signed by the owner.\n * @memberof module:Log~Entry\n * @example\n * const entry = await Entry.create(identity, 'log1', 'hello')\n * console.log(entry)\n * // { payload: \"hello\", next: [], ... }\n * @private\n */\nconst create = async (identity, id, payload, clock = null, next = [], refs = []) => {\n if (identity == null) throw new Error('Identity is required, cannot create entry')\n if (id == null) throw new Error('Entry requires an id')\n if (payload == null) throw new Error('Entry requires a payload')\n if (next == null || !Array.isArray(next)) throw new Error(\"'next' argument is not an array\")\n\n clock = clock || Clock(identity.publicKey)\n\n const entry = {\n id, // For determining a unique chain\n payload, // Can be any dag-cbor encodeable data\n next, // Array of strings of CIDs\n refs, // Array of strings of CIDs\n clock, // Clock\n v: 2 // To tag the version of this data structure\n }\n\n const { bytes } = await Block.encode({ value: entry, codec, hasher })\n const signature = await identity.sign(identity, bytes)\n\n entry.key = identity.publicKey\n entry.identity = identity.hash\n entry.sig = signature\n\n return encode(entry)\n}\n\n/**\n * Verifies an entry signature.\n * @param {Identities} identities Identities system to use\n * @param {module:Log~Entry} entry The entry being verified\n * @return {Promise} A promise that resolves to a boolean value indicating if\n * the signature is valid.\n * @memberof module:Log~Entry\n * @private\n */\nconst verify = async (identities, entry) => {\n if (!identities) throw new Error('Identities is required, cannot verify entry')\n if (!isEntry(entry)) throw new Error('Invalid Log entry')\n if (!entry.key) throw new Error(\"Entry doesn't have a key\")\n if (!entry.sig) throw new Error(\"Entry doesn't have a signature\")\n\n const value = {\n id: entry.id,\n payload: entry.payload,\n next: entry.next,\n refs: entry.refs,\n clock: entry.clock,\n v: entry.v\n }\n\n const { bytes } = await Block.encode({ value, codec, hasher })\n\n return identities.verify(entry.sig, entry.key, bytes)\n}\n\n/**\n * Checks if an object is an Entry.\n * @param {module:Log~Entry} obj\n * @return {boolean}\n * @memberof module:Log~Entry\n * @private\n */\nconst isEntry = (obj) => {\n return obj && obj.id !== undefined &&\n obj.next !== undefined &&\n obj.payload !== undefined &&\n obj.v !== undefined &&\n obj.clock !== undefined &&\n obj.refs !== undefined\n}\n\n/**\n * Determines whether two entries are equal.\n * @param {module:Log~Entry} a An entry to compare.\n * @param {module:Log~Entry} b An entry to compare.\n * @return {boolean} True if a and b are equal, false otherwise.\n * @memberof module:Log~Entry\n * @private\n */\nconst isEqual = (a, b) => {\n return a && b && a.hash === b.hash\n}\n\n/**\n * Decodes a serialized Entry from bytes\n * @param {Uint8Array} bytes\n * @return {module:Log~Entry}\n * @memberof module:Log~Entry\n * @private\n */\nconst decode = async (bytes) => {\n const { value } = await Block.decode({ bytes, codec, hasher })\n return encode(value)\n}\n\n/**\n * Encodes an Entry and adds bytes field to it\n * @param {Entry} entry\n * @return {module:Log~Entry}\n * @memberof module:Log~Entry\n * @private\n */\nconst encode = async (entry) => {\n const { cid, bytes } = await Block.encode({ value: entry, codec, hasher })\n const hash = cid.toString(hashStringEncoding)\n const clock = Clock(entry.clock.id, entry.clock.time)\n return {\n ...entry,\n clock,\n hash,\n bytes\n }\n}\n\nexport default {\n create,\n verify,\n decode,\n encode,\n isEntry,\n isEqual\n}\n","/**\n * @namespace Storage-Memory\n * @memberof module:Storage\n * @description\n * MemoryStorage stores data in memory.\n */\n\n/**\n * Creates an instance of MemoryStorage.\n * @function\n * @return {module:Storage.Storage-Memory} An instance of MemoryStorage.\n * @memberof module:Storage\n * @instance\n */\nconst MemoryStorage = async () => {\n let memory = {}\n\n /**\n * Puts data to memory.\n * @function\n * @param {string} hash The hash of the data to put.\n * @param {*} data The data to store.\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const put = async (hash, data) => {\n memory[hash] = data\n }\n\n /**\n * Deletes data from memory.\n * @function\n * @param {string} hash The hash of the data to delete.\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const del = async (hash) => {\n delete memory[hash]\n }\n\n /**\n * Gets data from memory.\n * @function\n * @param {string} hash The hash of the data to get.\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const get = async (hash) => {\n return memory[hash]\n }\n\n /**\n * Iterates over records stored in memory.\n * @function\n * @yields [string, string] The next key/value pair from memory.\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const iterator = async function * () {\n for await (const [key, value] of Object.entries(memory)) {\n yield [key, value]\n }\n }\n\n /**\n * Merges data from another source into memory.\n * @function\n * @param {module:Storage} other Another storage instance.\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const merge = async (other) => {\n if (other) {\n for await (const [key, value] of other.iterator()) {\n put(key, value)\n }\n }\n }\n\n /**\n * Clears the contents of memory.\n * @function\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const clear = async () => {\n memory = {}\n }\n\n const close = async () => {}\n\n return {\n put,\n del,\n get,\n iterator,\n merge,\n clear,\n close\n }\n}\n\nexport default MemoryStorage\n","/**\n * @namespace module:Log~Heads\n * @memberof module:Log\n * @description The log's heads.\n * @private\n */\nimport Entry from './entry.js'\nimport MemoryStorage from '../storage/memory.js'\n\nconst DefaultStorage = MemoryStorage\n\nconst Heads = async ({ storage, heads }) => {\n storage = storage || await DefaultStorage()\n\n const put = async (heads) => {\n heads = findHeads(heads)\n for (const head of heads) {\n await storage.put(head.hash, head.bytes)\n }\n }\n\n const set = async (heads) => {\n await storage.clear()\n await put(heads)\n }\n\n const add = async (head) => {\n const currentHeads = await all()\n if (currentHeads.find(e => Entry.isEqual(e, head))) {\n return\n }\n const newHeads = findHeads([...currentHeads, head])\n await set(newHeads)\n\n return newHeads\n }\n\n const remove = async (hash) => {\n const currentHeads = await all()\n const newHeads = currentHeads.filter(e => e.hash !== hash)\n await set(newHeads)\n }\n\n const iterator = async function * () {\n const it = storage.iterator()\n for await (const [, bytes] of it) {\n const head = await Entry.decode(bytes)\n yield head\n }\n }\n\n const all = async () => {\n const values = []\n for await (const head of iterator()) {\n values.push(head)\n }\n return values\n }\n\n const clear = async () => {\n await storage.clear()\n }\n\n const close = async () => {\n await storage.close()\n }\n\n // Initialize the heads if given as parameter\n await put(heads || [])\n\n return {\n put,\n set,\n add,\n remove,\n iterator,\n all,\n clear,\n close\n }\n}\n\n/**\n * Find heads from a collection of entries.\n *\n * Finds entries that are the heads of this collection,\n * ie. entries that are not referenced by other entries.\n *\n * This function is private and not exposed in the Log API\n *\n * @param {Array} entries Entries to search heads from\n * @return {Array}\n * @private\n */\nconst findHeads = (entries) => {\n entries = new Set(entries)\n const items = {}\n for (const entry of entries) {\n for (const next of entry.next) {\n items[next] = entry.hash\n }\n }\n\n const res = []\n for (const entry of entries) {\n if (!items[entry.hash]) {\n res.push(entry)\n }\n }\n\n return res\n}\n\nexport default Heads\n","import { compareClocks } from './clock.js'\n\n/**\n * Sort two entries as Last-Write-Wins (LWW).\n *\n * Last Write Wins is a conflict resolution strategy for sorting elements\n * where the element with a greater clock (latest) is chosen as the winner.\n *\n * @param {Entry} a First entry\n * @param {Entry} b Second entry\n * @return {number} 1 if a is latest, -1 if b is latest\n * @private\n */\nfunction LastWriteWins (a, b) {\n // Ultimate conflict resolution (take the first/left arg)\n const First = (a, b) => a\n // Sort two entries by their clock id, if the same always take the first\n const sortById = (a, b) => SortByClockId(a, b, First)\n // Sort two entries by their clock time, if concurrent,\n // determine sorting using provided conflict resolution function\n const sortByEntryClocks = (a, b) => SortByClocks(a, b, sortById)\n // Sort entries by clock time as the primary sort criteria\n return sortByEntryClocks(a, b)\n}\n\n/**\n * Sort two entries by their clock time.\n * @param {Entry} a First entry to compare\n * @param {Entry} b Second entry to compare\n * @param {function(a, b)} resolveConflict A function to call if entries are\n * concurrent (happened at the same time). The function should take in two\n * entries and return 1 if the first entry should be chosen and -1 if the\n * second entry should be chosen.\n * @return {number} 1 if a is greater, -1 if b is greater\n * @private\n */\nfunction SortByClocks (a, b, resolveConflict) {\n // Compare the clocks\n const diff = compareClocks(a.clock, b.clock)\n // If the clocks are concurrent, use the provided\n // conflict resolution function to determine which comes first\n return diff === 0 ? resolveConflict(a, b) : diff\n}\n\n/**\n * Sort two entries by their clock id.\n * @param {Entry} a First entry to compare\n * @param {Entry} b Second entry to compare\n * @param {function(a, b)} resolveConflict A function to call if the clocks ids\n * are the same. The function should take in two entries and return 1 if the\n * first entry should be chosen and -1 if the second entry should be chosen.\n * @return {number} 1 if a is greater, -1 if b is greater\n * @private\n */\nfunction SortByClockId (a, b, resolveConflict) {\n // Sort by ID if clocks are concurrent,\n // take the entry with a \"greater\" clock id\n return a.clock.id === b.clock.id\n ? resolveConflict(a, b)\n : a.clock.id < b.clock.id ? -1 : 1\n}\n\n/**\n * A wrapper function to throw an error if the results of a passed function\n * return zero\n * @param {function(a, b)} [tiebreaker] The tiebreaker function to validate.\n * @return {function(a, b)} 1 if a is greater, -1 if b is greater\n * @throws {Error} if func ever returns 0\n * @private\n */\nfunction NoZeroes (func) {\n const msg = `Your log's tiebreaker function, ${func.name}, has returned zero and therefore cannot be`\n\n const comparator = (a, b) => {\n // Validate by calling the function\n const result = func(a, b)\n if (result === 0) { throw Error(msg) }\n return result\n }\n\n return comparator\n}\n\nexport default {\n SortByClocks,\n SortByClockId,\n LastWriteWins,\n NoZeroes\n}\n","/**\n * @module Log\n * @description\n * Log is a verifiable, append-only log CRDT.\n *\n * Implemented as a Merkle-CRDT as per the paper\n * [\"Merkle-CRDTs: Merkle-DAGs meet CRDTs\"]{@link https://arxiv.org/abs/2004.00107}\n */\nimport LRU from 'lru'\nimport PQueue from 'p-queue'\nimport Entry from './entry.js'\nimport Clock, { tickClock } from './clock.js'\nimport Heads from './heads.js'\nimport ConflictResolution from './conflict-resolution.js'\nimport MemoryStorage from '../storage/memory.js'\n\nconst { LastWriteWins, NoZeroes } = ConflictResolution\n\nconst randomId = () => new Date().getTime().toString()\nconst maxClockTimeReducer = (res, acc) => Math.max(res, acc.clock.time)\n\n// Default storage for storing the Log and its entries. Default: Memory. Options: Memory, LRU, IPFS.\nconst DefaultStorage = MemoryStorage\n\n// Default AccessController for the Log.\n// Default policy is that anyone can write to the Log.\n// Signature of an entry will always be verified regardless of AccessController policy.\n// Any object that implements the function `canAppend()` that returns true|false can be\n// used as an AccessController.\nconst DefaultAccessController = async () => {\n // An AccessController may do any async initialization stuff here...\n return {\n canAppend: async (entry) => true\n }\n}\n\n/**\n * Create a new Log instance\n\n * @function\n * @param {IPFS} ipfs An IPFS instance\n * @param {Object} identity Identity.\n * @param {Object} options\n * @param {string} options.logId ID of the log\n * @param {Array} options.logHeads Set the heads of the log\n * @param {Object} options.access AccessController (./default-access-controller)\n * @param {Array} options.entries An Array of Entries from which to create the log\n * @param {module:Storage} [options.entryStorage] A compatible storage instance\n * for storing log entries. Defaults to MemoryStorage.\n * @param {module:Storage} [options.headsStorage] A compatible storage\n * instance for storing log heads. Defaults to MemoryStorage.\n * @param {module:Storage} [options.indexStorage] A compatible storage\n * instance for storing an index of log entries. Defaults to MemoryStorage.\n * @param {Function} options.sortFn The sort function - by default LastWriteWins\n * @return {module:Log~Log} sync An instance of Log\n * @memberof module:Log\n * @instance\n */\nconst Log = async (identity, { logId, logHeads, access, entryStorage, headsStorage, indexStorage, sortFn } = {}) => {\n /**\n * @namespace Log\n * @description The instance returned by {@link module:Log}\n */\n\n if (identity == null) {\n throw new Error('Identity is required')\n }\n if (logHeads != null && !Array.isArray(logHeads)) {\n throw new Error('\\'logHeads\\' argument must be an array')\n }\n // Set Log's id\n const id = logId || randomId()\n // Access Controller\n access = access || await DefaultAccessController()\n // Oplog entry storage\n const _entries = entryStorage || await DefaultStorage()\n // Entry index for keeping track which entries are already in the log\n const _index = indexStorage || await DefaultStorage()\n // Heads storage\n headsStorage = headsStorage || await DefaultStorage()\n // Add heads to the state storage, ie. init the log state\n const _heads = await Heads({ storage: headsStorage, heads: logHeads })\n // Conflict-resolution sorting function\n sortFn = NoZeroes(sortFn || LastWriteWins)\n // Internal queues for processing appends and joins in their call-order\n const appendQueue = new PQueue({ concurrency: 1 })\n const joinQueue = new PQueue({ concurrency: 1 })\n\n /**\n * Returns the clock of the log.\n * @return {module:Clock}\n * @memberof module:Log~Log\n * @instance\n */\n const clock = async () => {\n // Find the latest clock from the heads\n const maxTime = Math.max(0, (await heads()).reduce(maxClockTimeReducer, 0))\n return Clock(identity.publicKey, maxTime)\n }\n\n /**\n * Returns the current heads of the log\n *\n * @return {Array}\n * @memberof module:Log~Log\n * @instance\n */\n const heads = async () => {\n const res = await _heads.all()\n return res.sort(sortFn).reverse()\n }\n\n /**\n * Returns all entries in the log\n *\n * @return {Array}\n * @memberof module:Log~Log\n * @instance\n */\n const values = async () => {\n const values = []\n for await (const entry of traverse()) {\n values.unshift(entry)\n }\n return values\n }\n\n /**\n * Retrieve an entry\n *\n * @param {string} hash The hash of the entry to retrieve\n * @return {module:Log~Entry}\n * @memberof module:Log~Log\n * @instance\n */\n const get = async (hash) => {\n const bytes = await _entries.get(hash)\n if (bytes) {\n const entry = await Entry.decode(bytes)\n return entry\n }\n }\n\n const has = async (hash) => {\n const entry = await _index.get(hash)\n return entry != null\n }\n\n /**\n * Append an new entry to the log\n *\n * @param {data} data Payload to add to the entry\n * @param {Object} options\n * @param {number} options.referencesCount TODO\n * @return {module:Log~Entry} Entry that was appended\n * @memberof module:Log~Log\n * @instance\n */\n const append = async (data, options = { referencesCount: 0 }) => {\n const task = async () => {\n // 1. Prepare entry\n // 2. Authorize entry\n // 3. Store entry\n // 4. return Entry\n // Get current heads of the log\n const heads_ = await heads()\n // Create the next pointers from heads\n const nexts = heads_.map(entry => entry.hash)\n // Get references (pointers) to multiple entries in the past\n // (skips the heads which are covered by the next field)\n const refs = await getReferences(heads_, options.referencesCount + heads_.length)\n // Create the entry\n const entry = await Entry.create(\n identity,\n id,\n data,\n tickClock(await clock()),\n nexts,\n refs\n )\n // Authorize the entry\n const canAppend = await access.canAppend(entry)\n if (!canAppend) {\n throw new Error(`Could not append entry:\\nKey \"${identity.hash}\" is not allowed to write to the log`)\n }\n\n // The appended entry is now the latest head\n await _heads.set([entry])\n // Add entry to the entry storage\n await _entries.put(entry.hash, entry.bytes)\n // Add entry to the entry index\n await _index.put(entry.hash, true)\n // Return the appended entry\n return entry\n }\n\n return appendQueue.add(task)\n }\n\n /**\n * Join two logs.\n *\n * Joins another log into this one.\n *\n * @param {module:Log~Log} log Log to join with this Log\n *\n * @example\n *\n * await log1.join(log2)\n *\n * @memberof module:Log~Log\n * @instance\n */\n const join = async (log) => {\n if (!log) {\n throw new Error('Log instance not defined')\n }\n if (!isLog(log)) {\n throw new Error('Given argument is not an instance of Log')\n }\n if (_entries.merge) {\n await _entries.merge(log.storage)\n }\n const heads = await log.heads()\n for (const entry of heads) {\n await joinEntry(entry)\n }\n }\n\n /**\n * Join an entry into a log.\n *\n * @param {module:Log~Entry} entry Entry to join with this Log\n *\n * @example\n *\n * await log.joinEntry(entry)\n *\n * @memberof module:Log~Log\n * @instance\n */\n const joinEntry = async (entry) => {\n const task = async () => {\n /* 1. Check if the entry is already in the log and return early if it is */\n const isAlreadyInTheLog = await has(entry.hash)\n if (isAlreadyInTheLog) {\n return false\n }\n\n const verifyEntry = async (entry) => {\n // Check that the Entry belongs to this Log\n if (entry.id !== id) {\n throw new Error(`Entry's id (${entry.id}) doesn't match the log's id (${id}).`)\n }\n // Verify if entry is allowed to be added to the log\n const canAppend = await access.canAppend(entry)\n if (!canAppend) {\n throw new Error(`Could not append entry:\\nKey \"${entry.identity}\" is not allowed to write to the log`)\n }\n // Verify signature for the entry\n const isValid = await Entry.verify(identity, entry)\n if (!isValid) {\n throw new Error(`Could not validate signature for entry \"${entry.hash}\"`)\n }\n }\n\n /* 2. Verify the entry */\n await verifyEntry(entry)\n\n /* 3. Find missing entries and connections (=path in the DAG) to the current heads */\n const headsHashes = (await heads()).map(e => e.hash)\n const hashesToAdd = new Set([entry.hash])\n const hashesToGet = new Set([...entry.next, ...entry.refs])\n const connectedHeads = new Set()\n\n const traverseAndVerify = async () => {\n const getEntries = Array.from(hashesToGet.values()).filter(has).map(get)\n const entries = await Promise.all(getEntries)\n\n for (const e of entries) {\n hashesToGet.delete(e.hash)\n\n await verifyEntry(e)\n\n hashesToAdd.add(e.hash)\n\n for (const hash of [...e.next, ...e.refs]) {\n const isInTheLog = await has(hash)\n\n if (!isInTheLog && !hashesToAdd.has(hash)) {\n hashesToGet.add(hash)\n } else if (headsHashes.includes(hash)) {\n connectedHeads.add(hash)\n }\n }\n }\n\n if (hashesToGet.size > 0) {\n await traverseAndVerify()\n }\n }\n\n await traverseAndVerify()\n\n /* 4. Add missing entries to the index (=to the log) */\n for (const hash of hashesToAdd.values()) {\n await _index.put(hash, true)\n }\n\n /* 5. Remove heads which new entries are connect to */\n for (const hash of connectedHeads.values()) {\n await _heads.remove(hash)\n }\n\n /* 6. Add the new entry to heads (=union with current heads) */\n await _heads.add(entry)\n\n return true\n }\n\n return joinQueue.add(task)\n }\n\n /**\n * TODO\n * @memberof module:Log~Log\n * @instance\n */\n const traverse = async function * (rootEntries, shouldStopFn, useRefs = true) {\n // By default, we don't stop traversal and traverse\n // until the end of the log\n const defaultStopFn = () => false\n shouldStopFn = shouldStopFn || defaultStopFn\n // Start traversal from given entries or from current heads\n rootEntries = rootEntries || (await heads())\n // Sort the given given root entries and use as the starting stack\n let stack = rootEntries.sort(sortFn)\n // Keep a record of all the hashes of entries we've traversed and yielded\n const traversed = {}\n // Keep a record of all the hashes we are fetching or have already fetched\n let toFetch = []\n const fetched = {}\n // A function to check if we've seen a hash\n const notIndexed = (hash) => !(traversed[hash] || fetched[hash])\n // Current entry during traversal\n let entry\n // Start traversal and process stack until it's empty (traversed the full log)\n while (stack.length > 0) {\n stack = stack.sort(sortFn)\n // Get the next entry from the stack\n entry = stack.pop()\n if (entry) {\n const { hash, next, refs } = entry\n // If we have an entry that we haven't traversed yet, process it\n if (!traversed[hash]) {\n // Yield the current entry\n yield entry\n // If we should stop traversing, stop here\n const done = await shouldStopFn(entry)\n if (done === true) {\n break\n }\n // Add to the hash indices\n traversed[hash] = true\n fetched[hash] = true\n // Add the next and refs hashes to the list of hashes to fetch next,\n // filter out traversed and fetched hashes\n toFetch = [...toFetch, ...next, ...(useRefs ? refs : [])].filter(notIndexed)\n // Function to fetch an entry and making sure it's not a duplicate (check the hash indices)\n const fetchEntries = (hash) => {\n if (!traversed[hash] && !fetched[hash]) {\n fetched[hash] = true\n return get(hash)\n }\n }\n // Fetch the next/reference entries\n const nexts = await Promise.all(toFetch.map(fetchEntries))\n\n // Add the next and refs fields from the fetched entries to the next round\n toFetch = nexts\n .filter(e => e !== null && e !== undefined)\n .reduce((res, acc) => Array.from(new Set([...res, ...acc.next, ...(useRefs ? acc.refs : [])])), [])\n .filter(notIndexed)\n // Add the fetched entries to the stack to be processed\n stack = [...nexts, ...stack]\n }\n }\n }\n }\n\n /**\n * Async iterator over the log entries\n *\n * @param {Object} options\n * @param {amount} options.amount Number of entried to return. Default: return all entries.\n * @param {string} options.gt Beginning hash of the iterator, non-inclusive\n * @param {string} options.gte Beginning hash of the iterator, inclusive\n * @param {string} options.lt Ending hash of the iterator, non-inclusive\n * @param {string} options.lte Ending hash of the iterator, inclusive\n * @return {Symbol.asyncIterator} Iterator object of log entries\n *\n * @examples\n *\n * (async () => {\n * log = await Log(testIdentity, { logId: 'X' })\n *\n * for (let i = 0; i <= 100; i++) {\n * await log.append('entry' + i)\n * }\n *\n * let it = log.iterator({\n * lte: 'zdpuApFd5XAPkCTmSx7qWQmQzvtdJPtx2K5p9to6ytCS79bfk',\n * amount: 10\n * })\n *\n * for await (let entry of it) {\n * console.log(entry.payload) // 'entry100', 'entry99', ..., 'entry91'\n * }\n * })()\n *\n * @memberof module:Log~Log\n * @instance\n */\n const iterator = async function * ({ amount = -1, gt, gte, lt, lte } = {}) {\n // TODO: write comments on how the iterator algorithm works\n\n if (amount === 0) {\n return\n }\n\n if (typeof lte === 'string') {\n lte = [await get(lte)]\n }\n\n if (typeof lt === 'string') {\n const entry = await get(lt)\n const nexts = await Promise.all(entry.next.map(n => get(n)))\n lt = nexts\n }\n\n if (lt != null && !Array.isArray(lt)) throw new Error('lt must be a string or an array of Entries')\n if (lte != null && !Array.isArray(lte)) throw new Error('lte must be a string or an array of Entries')\n\n const start = (lt || (lte || await heads())).filter(i => i != null)\n const end = (gt || gte) ? await get(gt || gte) : null\n\n const amountToIterate = (end || amount === -1) ? -1 : amount\n\n let count = 0\n const shouldStopTraversal = async (entry) => {\n count++\n if (!entry) {\n return false\n }\n if (count >= amountToIterate && amountToIterate !== -1) {\n return true\n }\n if (end && Entry.isEqual(entry, end)) {\n return true\n }\n return false\n }\n\n const useBuffer = end && amount !== -1 && !lt && !lte\n const buffer = useBuffer ? new LRU(amount + 2) : null\n let index = 0\n\n const it = traverse(start, shouldStopTraversal)\n\n for await (const entry of it) {\n const skipFirst = (lt && Entry.isEqual(entry, start))\n const skipLast = (gt && Entry.isEqual(entry, end))\n const skip = skipFirst || skipLast\n if (!skip) {\n if (useBuffer) {\n buffer.set(index++, entry.hash)\n } else {\n yield entry\n }\n }\n }\n\n if (useBuffer) {\n const endIndex = buffer.keys.length\n const startIndex = endIndex > amount ? endIndex - amount : 0\n const keys = buffer.keys.slice(startIndex, endIndex)\n for (const key of keys) {\n const hash = buffer.get(key)\n const entry = await get(hash)\n yield entry\n }\n }\n }\n\n /**\n * Clear all entries from the log and the underlying storages\n * @memberof module:Log~Log\n * @instance\n */\n const clear = async () => {\n await _index.clear()\n await _heads.clear()\n await _entries.clear()\n }\n\n /**\n * Close the log and underlying storages\n * @memberof module:Log~Log\n * @instance\n */\n const close = async () => {\n await _index.close()\n await _heads.close()\n await _entries.close()\n }\n\n /**\n * Check if an object is a Log.\n * @param {Log} obj\n * @return {boolean}\n * @memberof module:Log~Log\n * @instance\n */\n const isLog = (obj) => {\n return obj && obj.id !== undefined &&\n obj.clock !== undefined &&\n obj.heads !== undefined &&\n obj.values !== undefined &&\n obj.access !== undefined &&\n obj.identity !== undefined &&\n obj.storage !== undefined\n }\n\n /**\n * Get an array of references to multiple entries in the past.\n * @param {Array} heads An array of Log heads starting rom which the references are collected from.\n * @param {number} amount The number of references to return.\n * @return {Array}\n * @private\n */\n const getReferences = async (heads, amount = 0) => {\n let refs = []\n const shouldStopTraversal = async (entry) => {\n return refs.length >= amount && amount !== -1\n }\n for await (const { hash } of traverse(heads, shouldStopTraversal, false)) {\n refs.push(hash)\n }\n refs = refs.slice(heads.length + 1, amount)\n return refs\n }\n\n return {\n id,\n clock,\n heads,\n values,\n all: values, // Alias for values()\n get,\n has,\n append,\n join,\n joinEntry,\n traverse,\n iterator,\n clear,\n close,\n access,\n identity,\n storage: _entries\n }\n}\n\nexport { Log as default, DefaultAccessController, Clock }\n","/**\n * @namespace Storage-Composed\n * @memberof module:Storage\n * @description\n * ComposedStorage stores data to multiple storage backends.\n * @example Store to LRU and Level\n * await ComposedStorage(await LRUStorage(), await LevelStorage())\n * @example Store to memory and IPFS\n * await ComposedStorage(await MemoryStorage(), await IPFSBlockStorage())\n * @example Store to LRU and a nested ComposedStorage\n * const storage1 = await ComposedStorage(await LRUStorage(), await LevelStorage())\n * await ComposedStorage(storage1, await IPFSBlockStorage())\n */\n\n/**\n * Creates an instance of ComposedStorage.\n * @function\n * @param {module:Storage} storage1 A storage instance.\n * @param {module:Storage} storage2 A storage instance.\n * @return {module:Storage.Storage-Composed} An instance of ComposedStorage.\n * @memberof module:Storage\n * @instance\n */\nconst ComposedStorage = async (storage1, storage2) => {\n /**\n * Puts data to all configured storages.\n * @function\n * @param {string} hash The hash of the data to put.\n * @param {*} data The data to store.\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const put = async (hash, data) => {\n await storage1.put(hash, data)\n await storage2.put(hash, data)\n }\n\n /**\n * Gets data from the composed storage.\n *\n * Get will fetch the data from storage1 first. If no value is found, an\n * attempt is made to fetch the data from storage2. If data exists in\n * storage2 but not in storage1, the data is added to storage1.\n * @function\n * @param {string} hash The hash of the data to get.\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const get = async (hash) => {\n let value = await storage1.get(hash)\n if (!value) {\n value = await storage2.get(hash)\n if (value) {\n await storage1.put(hash, value)\n }\n }\n return value\n }\n\n /**\n * Deletes a value from storage.\n * @function\n * @param {string} hash The hash of the value to delete.\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const del = async (hash) => {\n await storage1.del(hash)\n await storage2.del(hash)\n }\n\n /**\n * Iterates over records stored in both storages.\n * @function\n * @yields [string, string] The next key/value pair from all storages.\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const iterator = async function * ({ amount, reverse } = {}) {\n const keys = []\n const iteratorOptions = { amount: amount || -1, reverse: reverse || false }\n for (const storage of [storage1, storage2]) {\n for await (const [key, value] of storage.iterator(iteratorOptions)) {\n if (!keys[key]) {\n keys[key] = true\n yield [key, value]\n }\n }\n }\n }\n\n /**\n * Merges data from another source into each of the composed storages.\n * @function\n * @param {module:Storage} other Another storage instance.\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const merge = async (other) => {\n await storage1.merge(other)\n await storage2.merge(other)\n await other.merge(storage1)\n await other.merge(storage2)\n }\n\n /**\n * Calls clear on each of the composed storages.\n * @function\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const clear = async () => {\n await storage1.clear()\n await storage2.clear()\n }\n\n /**\n * Calls close on each of the composed storages.\n * @function\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const close = async () => {\n await storage1.close()\n await storage2.close()\n }\n\n return {\n put,\n get,\n del,\n iterator,\n merge,\n clear,\n close\n }\n}\n\nexport default ComposedStorage\n","/**\n * @packageDocumentation\n *\n * Mostly useful for tests or when you want to be explicit about consuming an iterable without doing anything with any yielded values.\n *\n * @example\n *\n * ```javascript\n * import drain from 'it-drain'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * drain(values)\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import drain from 'it-drain'\n *\n * const values = async function * {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * await drain(values())\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction drain(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n for await (const _ of source) { } // eslint-disable-line no-unused-vars,no-empty,@typescript-eslint/no-unused-vars\n })();\n }\n else {\n for (const _ of source) { } // eslint-disable-line no-unused-vars,no-empty,@typescript-eslint/no-unused-vars\n }\n}\nexport default drain;\n//# sourceMappingURL=index.js.map","/**\n * @namespace Storage-IPFS\n * @memberof module:Storage\n * @description\n * IPFSBlockStorage uses IPFS to store data as raw blocks.\n */\nimport { CID } from 'multiformats/cid'\nimport { base58btc } from 'multiformats/bases/base58'\nimport { TimeoutController } from 'timeout-abort-controller'\nimport drain from 'it-drain'\n\nconst DefaultTimeout = 30000 // 30 seconds\n\n/**\n * Creates an instance of IPFSBlockStorage.\n * @function\n * @param {Object} params One or more parameters for configuring\n * IPFSBlockStorage.\n * @param {IPFS} params.ipfs An IPFS instance.\n * @param {boolean} [params.pin=false] True, if the block should be pinned,\n * false otherwise.\n * @param {number} [params.timeout=defaultTimeout] A timeout in ms.\n * @return {module:Storage.Storage-IPFS} An instance of IPFSBlockStorage.\n * @memberof module:Storage\n * @throw An instance of ipfs is required if params.ipfs is not specified.\n * @instance\n */\nconst IPFSBlockStorage = async ({ ipfs, pin, timeout } = {}) => {\n if (!ipfs) throw new Error('An instance of ipfs is required.')\n\n /**\n * Puts data to an IPFS block.\n * @function\n * @param {string} hash The hash of the block to put.\n * @param {*} data The data to store in the IPFS block.\n * @memberof module:Storage.Storage-IPFS\n * @instance\n */\n const put = async (hash, data) => {\n const cid = CID.parse(hash, base58btc)\n const { signal } = new TimeoutController(timeout || DefaultTimeout)\n await ipfs.blockstore.put(cid, data, { signal })\n\n if (pin && !(await ipfs.pins.isPinned(cid))) {\n await drain(ipfs.pins.add(cid))\n }\n }\n\n const del = async (hash) => {}\n\n /**\n * Gets data from an IPFS block.\n * @function\n * @param {string} hash The hash of the block to get.\n * @return {Uint8Array} The block.\n * @memberof module:Storage.Storage-IPFS\n * @instance\n */\n const get = async (hash) => {\n const cid = CID.parse(hash, base58btc)\n const { signal } = new TimeoutController(timeout || DefaultTimeout)\n const block = await ipfs.blockstore.get(cid, { signal })\n if (block) {\n return block\n }\n }\n\n const iterator = async function * () {}\n\n const merge = async (other) => {}\n\n const clear = async () => {}\n\n const close = async () => {}\n\n return {\n put,\n del,\n get,\n iterator,\n merge,\n clear,\n close\n }\n}\n\nexport default IPFSBlockStorage\n","'use strict'\n\nexports.supports = function supports (...manifests) {\n const manifest = manifests.reduce((acc, m) => Object.assign(acc, m), {})\n\n return Object.assign(manifest, {\n snapshots: manifest.snapshots || false,\n permanence: manifest.permanence || false,\n seek: manifest.seek || false,\n clear: manifest.clear || false,\n getMany: manifest.getMany || false,\n keyIterator: manifest.keyIterator || false,\n valueIterator: manifest.valueIterator || false,\n iteratorNextv: manifest.iteratorNextv || false,\n iteratorAll: manifest.iteratorAll || false,\n status: manifest.status || false,\n createIfMissing: manifest.createIfMissing || false,\n errorIfExists: manifest.errorIfExists || false,\n deferredOpen: manifest.deferredOpen || false,\n promises: manifest.promises || false,\n streams: manifest.streams || false,\n encodings: Object.assign({}, manifest.encodings),\n events: Object.assign({}, manifest.events),\n additionalMethods: Object.assign({}, manifest.additionalMethods)\n })\n}\n","'use strict'\n\nmodule.exports = class ModuleError extends Error {\n /**\n * @param {string} message Error message\n * @param {{ code?: string, cause?: Error, expected?: boolean, transient?: boolean }} [options]\n */\n constructor (message, options) {\n super(message || '')\n\n if (typeof options === 'object' && options !== null) {\n if (options.code) this.code = String(options.code)\n if (options.expected) this.expected = true\n if (options.transient) this.transient = true\n if (options.cause) this.cause = options.cause\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n }\n}\n","'use strict'\n\n/** @type {{ textEncoder: TextEncoder, textDecoder: TextDecoder }|null} */\nlet lazy = null\n\n/**\n * Get semi-global instances of TextEncoder and TextDecoder.\n * @returns {{ textEncoder: TextEncoder, textDecoder: TextDecoder }}\n */\nmodule.exports = function () {\n if (lazy === null) {\n lazy = {\n textEncoder: new TextEncoder(),\n textDecoder: new TextDecoder()\n }\n }\n\n return lazy\n}\n","'use strict'\n\nconst ModuleError = require('module-error')\nconst formats = new Set(['buffer', 'view', 'utf8'])\n\n/**\n * @template TIn, TFormat, TOut\n * @abstract\n */\nclass Encoding {\n /**\n * @param {IEncoding} options\n */\n constructor (options) {\n /** @type {(data: TIn) => TFormat} */\n this.encode = options.encode || this.encode\n\n /** @type {(data: TFormat) => TOut} */\n this.decode = options.decode || this.decode\n\n /** @type {string} */\n this.name = options.name || this.name\n\n /** @type {string} */\n this.format = options.format || this.format\n\n if (typeof this.encode !== 'function') {\n throw new TypeError(\"The 'encode' property must be a function\")\n }\n\n if (typeof this.decode !== 'function') {\n throw new TypeError(\"The 'decode' property must be a function\")\n }\n\n this.encode = this.encode.bind(this)\n this.decode = this.decode.bind(this)\n\n if (typeof this.name !== 'string' || this.name === '') {\n throw new TypeError(\"The 'name' property must be a string\")\n }\n\n if (typeof this.format !== 'string' || !formats.has(this.format)) {\n throw new TypeError(\"The 'format' property must be one of 'buffer', 'view', 'utf8'\")\n }\n\n if (options.createViewTranscoder) {\n this.createViewTranscoder = options.createViewTranscoder\n }\n\n if (options.createBufferTranscoder) {\n this.createBufferTranscoder = options.createBufferTranscoder\n }\n\n if (options.createUTF8Transcoder) {\n this.createUTF8Transcoder = options.createUTF8Transcoder\n }\n }\n\n get commonName () {\n return /** @type {string} */ (this.name.split('+')[0])\n }\n\n /** @return {BufferFormat} */\n createBufferTranscoder () {\n throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'buffer'`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n\n /** @return {ViewFormat} */\n createViewTranscoder () {\n throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'view'`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n\n /** @return {UTF8Format} */\n createUTF8Transcoder () {\n throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'utf8'`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n}\n\nexports.Encoding = Encoding\n\n/**\n * @typedef {import('./encoding').IEncoding} IEncoding\n * @template TIn, TFormat, TOut\n */\n\n/**\n * @typedef {import('./formats').BufferFormat} BufferFormat\n * @template TIn, TOut\n */\n\n/**\n * @typedef {import('./formats').ViewFormat} ViewFormat\n * @template TIn, TOut\n */\n\n/**\n * @typedef {import('./formats').UTF8Format} UTF8Format\n * @template TIn, TOut\n */\n","'use strict'\n\nconst { Buffer } = require('buffer') || {}\nconst { Encoding } = require('./encoding')\nconst textEndec = require('./text-endec')\n\n/**\n * @template TIn, TOut\n * @extends {Encoding}\n */\nclass BufferFormat extends Encoding {\n /**\n * @param {Omit, 'format'>} options\n */\n constructor (options) {\n super({ ...options, format: 'buffer' })\n }\n\n /** @override */\n createViewTranscoder () {\n return new ViewFormat({\n encode: this.encode, // Buffer is a view (UInt8Array)\n decode: (data) => this.decode(\n Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n ),\n name: `${this.name}+view`\n })\n }\n\n /** @override */\n createBufferTranscoder () {\n return this\n }\n}\n\n/**\n * @extends {Encoding}\n * @template TIn, TOut\n */\nclass ViewFormat extends Encoding {\n /**\n * @param {Omit, 'format'>} options\n */\n constructor (options) {\n super({ ...options, format: 'view' })\n }\n\n /** @override */\n createBufferTranscoder () {\n return new BufferFormat({\n encode: (data) => {\n const view = this.encode(data)\n return Buffer.from(view.buffer, view.byteOffset, view.byteLength)\n },\n decode: this.decode, // Buffer is a view (UInt8Array)\n name: `${this.name}+buffer`\n })\n }\n\n /** @override */\n createViewTranscoder () {\n return this\n }\n}\n\n/**\n * @extends {Encoding}\n * @template TIn, TOut\n */\nclass UTF8Format extends Encoding {\n /**\n * @param {Omit, 'format'>} options\n */\n constructor (options) {\n super({ ...options, format: 'utf8' })\n }\n\n /** @override */\n createBufferTranscoder () {\n return new BufferFormat({\n encode: (data) => Buffer.from(this.encode(data), 'utf8'),\n decode: (data) => this.decode(data.toString('utf8')),\n name: `${this.name}+buffer`\n })\n }\n\n /** @override */\n createViewTranscoder () {\n const { textEncoder, textDecoder } = textEndec()\n\n return new ViewFormat({\n encode: (data) => textEncoder.encode(this.encode(data)),\n decode: (data) => this.decode(textDecoder.decode(data)),\n name: `${this.name}+view`\n })\n }\n\n /** @override */\n createUTF8Transcoder () {\n return this\n }\n}\n\nexports.BufferFormat = BufferFormat\nexports.ViewFormat = ViewFormat\nexports.UTF8Format = UTF8Format\n\n/**\n * @typedef {import('./encoding').IEncoding} IEncoding\n * @template TIn, TFormat, TOut\n */\n","'use strict'\n\nconst { Buffer } = require('buffer') || { Buffer: { isBuffer: () => false } }\nconst { textEncoder, textDecoder } = require('./text-endec')()\nconst { BufferFormat, ViewFormat, UTF8Format } = require('./formats')\n\n/** @type {(v: T) => v} */\nconst identity = (v) => v\n\n/**\n * @type {typeof import('./encodings').utf8}\n */\nexports.utf8 = new UTF8Format({\n encode: function (data) {\n // On node 16.9.1 buffer.toString() is 5x faster than TextDecoder\n return Buffer.isBuffer(data)\n ? data.toString('utf8')\n : ArrayBuffer.isView(data)\n ? textDecoder.decode(data)\n : String(data)\n },\n decode: identity,\n name: 'utf8',\n createViewTranscoder () {\n return new ViewFormat({\n encode: function (data) {\n return ArrayBuffer.isView(data) ? data : textEncoder.encode(data)\n },\n decode: function (data) {\n return textDecoder.decode(data)\n },\n name: `${this.name}+view`\n })\n },\n createBufferTranscoder () {\n return new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data)\n ? data\n : ArrayBuffer.isView(data)\n ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n : Buffer.from(String(data), 'utf8')\n },\n decode: function (data) {\n return data.toString('utf8')\n },\n name: `${this.name}+buffer`\n })\n }\n})\n\n/**\n * @type {typeof import('./encodings').json}\n */\nexports.json = new UTF8Format({\n encode: JSON.stringify,\n decode: JSON.parse,\n name: 'json'\n})\n\n/**\n * @type {typeof import('./encodings').buffer}\n */\nexports.buffer = new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data)\n ? data\n : ArrayBuffer.isView(data)\n ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n : Buffer.from(String(data), 'utf8')\n },\n decode: identity,\n name: 'buffer',\n createViewTranscoder () {\n return new ViewFormat({\n encode: function (data) {\n return ArrayBuffer.isView(data) ? data : Buffer.from(String(data), 'utf8')\n },\n decode: function (data) {\n return Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n },\n name: `${this.name}+view`\n })\n }\n})\n\n/**\n * @type {typeof import('./encodings').view}\n */\nexports.view = new ViewFormat({\n encode: function (data) {\n return ArrayBuffer.isView(data) ? data : textEncoder.encode(data)\n },\n decode: identity,\n name: 'view',\n createBufferTranscoder () {\n return new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data)\n ? data\n : ArrayBuffer.isView(data)\n ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n : Buffer.from(String(data), 'utf8')\n },\n decode: identity,\n name: `${this.name}+buffer`\n })\n }\n})\n\n/**\n * @type {typeof import('./encodings').hex}\n */\nexports.hex = new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data) ? data : Buffer.from(String(data), 'hex')\n },\n decode: function (buffer) {\n return buffer.toString('hex')\n },\n name: 'hex'\n})\n\n/**\n * @type {typeof import('./encodings').base64}\n */\nexports.base64 = new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data) ? data : Buffer.from(String(data), 'base64')\n },\n decode: function (buffer) {\n return buffer.toString('base64')\n },\n name: 'base64'\n})\n","'use strict'\n\nconst ModuleError = require('module-error')\nconst encodings = require('./lib/encodings')\nconst { Encoding } = require('./lib/encoding')\nconst { BufferFormat, ViewFormat, UTF8Format } = require('./lib/formats')\n\nconst kFormats = Symbol('formats')\nconst kEncodings = Symbol('encodings')\nconst validFormats = new Set(['buffer', 'view', 'utf8'])\n\n/** @template T */\nclass Transcoder {\n /**\n * @param {Array<'buffer'|'view'|'utf8'>} formats\n */\n constructor (formats) {\n if (!Array.isArray(formats)) {\n throw new TypeError(\"The first argument 'formats' must be an array\")\n } else if (!formats.every(f => validFormats.has(f))) {\n // Note: we only only support aliases in key- and valueEncoding options (where we already did)\n throw new TypeError(\"Format must be one of 'buffer', 'view', 'utf8'\")\n }\n\n /** @type {Map, Encoding>} */\n this[kEncodings] = new Map()\n this[kFormats] = new Set(formats)\n\n // Register encodings (done early in order to populate encodings())\n for (const k in encodings) {\n try {\n this.encoding(k)\n } catch (err) {\n /* istanbul ignore if: assertion */\n if (err.code !== 'LEVEL_ENCODING_NOT_SUPPORTED') throw err\n }\n }\n }\n\n /**\n * @returns {Array>}\n */\n encodings () {\n return Array.from(new Set(this[kEncodings].values()))\n }\n\n /**\n * @param {string|MixedEncoding} encoding\n * @returns {Encoding}\n */\n encoding (encoding) {\n let resolved = this[kEncodings].get(encoding)\n\n if (resolved === undefined) {\n if (typeof encoding === 'string' && encoding !== '') {\n resolved = lookup[encoding]\n\n if (!resolved) {\n throw new ModuleError(`Encoding '${encoding}' is not found`, {\n code: 'LEVEL_ENCODING_NOT_FOUND'\n })\n }\n } else if (typeof encoding !== 'object' || encoding === null) {\n throw new TypeError(\"First argument 'encoding' must be a string or object\")\n } else {\n resolved = from(encoding)\n }\n\n const { name, format } = resolved\n\n if (!this[kFormats].has(format)) {\n if (this[kFormats].has('view')) {\n resolved = resolved.createViewTranscoder()\n } else if (this[kFormats].has('buffer')) {\n resolved = resolved.createBufferTranscoder()\n } else if (this[kFormats].has('utf8')) {\n resolved = resolved.createUTF8Transcoder()\n } else {\n throw new ModuleError(`Encoding '${name}' cannot be transcoded`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n }\n\n for (const k of [encoding, name, resolved.name, resolved.commonName]) {\n this[kEncodings].set(k, resolved)\n }\n }\n\n return resolved\n }\n}\n\nexports.Transcoder = Transcoder\n\n/**\n * @param {MixedEncoding} options\n * @returns {Encoding}\n */\nfunction from (options) {\n if (options instanceof Encoding) {\n return options\n }\n\n // Loosely typed for ecosystem compatibility\n const maybeType = 'type' in options && typeof options.type === 'string' ? options.type : undefined\n const name = options.name || maybeType || `anonymous-${anonymousCount++}`\n\n switch (detectFormat(options)) {\n case 'view': return new ViewFormat({ ...options, name })\n case 'utf8': return new UTF8Format({ ...options, name })\n case 'buffer': return new BufferFormat({ ...options, name })\n default: {\n throw new TypeError(\"Format must be one of 'buffer', 'view', 'utf8'\")\n }\n }\n}\n\n/**\n * If format is not provided, fallback to detecting `level-codec`\n * or `multiformats` encodings, else assume a format of buffer.\n * @param {MixedEncoding} options\n * @returns {string}\n */\nfunction detectFormat (options) {\n if ('format' in options && options.format !== undefined) {\n return options.format\n } else if ('buffer' in options && typeof options.buffer === 'boolean') {\n return options.buffer ? 'buffer' : 'utf8' // level-codec\n } else if ('code' in options && Number.isInteger(options.code)) {\n return 'view' // multiformats\n } else {\n return 'buffer'\n }\n}\n\n/**\n * @typedef {import('./lib/encoding').MixedEncoding} MixedEncoding\n * @template TIn, TFormat, TOut\n */\n\n/**\n * @type {Object.>}\n */\nconst aliases = {\n binary: encodings.buffer,\n 'utf-8': encodings.utf8\n}\n\n/**\n * @type {Object.>}\n */\nconst lookup = {\n ...encodings,\n ...aliases\n}\n\nlet anonymousCount = 0\n","module.exports = typeof queueMicrotask === 'function' ? queueMicrotask : (fn) => Promise.resolve().then(fn)\n","'use strict'\n\nvar nextTick = require('./next-tick')\n\nexports.fromCallback = function (callback, symbol) {\n if (callback === undefined) {\n var promise = new Promise(function (resolve, reject) {\n callback = function (err, res) {\n if (err) reject(err)\n else resolve(res)\n }\n })\n\n callback[symbol !== undefined ? symbol : 'promise'] = promise\n } else if (typeof callback !== 'function') {\n throw new TypeError('Callback must be a function')\n }\n\n return callback\n}\n\nexports.fromPromise = function (promise, callback) {\n if (callback === undefined) return promise\n\n promise\n .then(function (res) { nextTick(() => callback(null, res)) })\n .catch(function (err) { nextTick(() => callback(err)) })\n}\n","'use strict'\n\nexports.getCallback = function (options, callback) {\n return typeof options === 'function' ? options : callback\n}\n\nexports.getOptions = function (options, def) {\n if (typeof options === 'object' && options !== null) {\n return options\n }\n\n if (def !== undefined) {\n return def\n }\n\n return {}\n}\n","'use strict'\n\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { getOptions, getCallback } = require('./lib/common')\n\nconst kPromise = Symbol('promise')\nconst kCallback = Symbol('callback')\nconst kWorking = Symbol('working')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\nconst kAutoClose = Symbol('autoClose')\nconst kFinishWork = Symbol('finishWork')\nconst kReturnMany = Symbol('returnMany')\nconst kClosing = Symbol('closing')\nconst kHandleClose = Symbol('handleClose')\nconst kClosed = Symbol('closed')\nconst kCloseCallbacks = Symbol('closeCallbacks')\nconst kKeyEncoding = Symbol('keyEncoding')\nconst kValueEncoding = Symbol('valueEncoding')\nconst kAbortOnClose = Symbol('abortOnClose')\nconst kLegacy = Symbol('legacy')\nconst kKeys = Symbol('keys')\nconst kValues = Symbol('values')\nconst kLimit = Symbol('limit')\nconst kCount = Symbol('count')\n\nconst emptyOptions = Object.freeze({})\nconst noop = () => {}\nlet warnedEnd = false\n\n// This class is an internal utility for common functionality between AbstractIterator,\n// AbstractKeyIterator and AbstractValueIterator. It's not exported.\nclass CommonIterator {\n constructor (db, options, legacy) {\n if (typeof db !== 'object' || db === null) {\n const hint = db === null ? 'null' : typeof db\n throw new TypeError(`The first argument must be an abstract-level database, received ${hint}`)\n }\n\n if (typeof options !== 'object' || options === null) {\n throw new TypeError('The second argument must be an options object')\n }\n\n this[kClosed] = false\n this[kCloseCallbacks] = []\n this[kWorking] = false\n this[kClosing] = false\n this[kAutoClose] = false\n this[kCallback] = null\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n this[kHandleClose] = this[kHandleClose].bind(this)\n this[kKeyEncoding] = options[kKeyEncoding]\n this[kValueEncoding] = options[kValueEncoding]\n this[kLegacy] = legacy\n this[kLimit] = Number.isInteger(options.limit) && options.limit >= 0 ? options.limit : Infinity\n this[kCount] = 0\n\n // Undocumented option to abort pending work on close(). Used by the\n // many-level module as a temporary solution to a blocked close().\n // TODO (next major): consider making this the default behavior. Native\n // implementations should have their own logic to safely close iterators.\n this[kAbortOnClose] = !!options.abortOnClose\n\n this.db = db\n this.db.attachResource(this)\n this.nextTick = db.nextTick\n }\n\n get count () {\n return this[kCount]\n }\n\n get limit () {\n return this[kLimit]\n }\n\n next (callback) {\n let promise\n\n if (callback === undefined) {\n promise = new Promise((resolve, reject) => {\n callback = (err, key, value) => {\n if (err) reject(err)\n else if (!this[kLegacy]) resolve(key)\n else if (key === undefined && value === undefined) resolve()\n else resolve([key, value])\n }\n })\n } else if (typeof callback !== 'function') {\n throw new TypeError('Callback must be a function')\n }\n\n if (this[kClosing]) {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call next() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n } else if (this[kWorking]) {\n this.nextTick(callback, new ModuleError('Iterator is busy: cannot call next() until previous call has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n }))\n } else {\n this[kWorking] = true\n this[kCallback] = callback\n\n if (this[kCount] >= this[kLimit]) this.nextTick(this[kHandleOne], null)\n else this._next(this[kHandleOne])\n }\n\n return promise\n }\n\n _next (callback) {\n this.nextTick(callback)\n }\n\n nextv (size, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, emptyOptions)\n\n if (!Number.isInteger(size)) {\n this.nextTick(callback, new TypeError(\"The first argument 'size' must be an integer\"))\n return callback[kPromise]\n }\n\n if (this[kClosing]) {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call nextv() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n } else if (this[kWorking]) {\n this.nextTick(callback, new ModuleError('Iterator is busy: cannot call nextv() until previous call has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n }))\n } else {\n if (size < 1) size = 1\n if (this[kLimit] < Infinity) size = Math.min(size, this[kLimit] - this[kCount])\n\n this[kWorking] = true\n this[kCallback] = callback\n\n if (size <= 0) this.nextTick(this[kHandleMany], null, [])\n else this._nextv(size, options, this[kHandleMany])\n }\n\n return callback[kPromise]\n }\n\n _nextv (size, options, callback) {\n const acc = []\n const onnext = (err, key, value) => {\n if (err) {\n return callback(err)\n } else if (this[kLegacy] ? key === undefined && value === undefined : key === undefined) {\n return callback(null, acc)\n }\n\n acc.push(this[kLegacy] ? [key, value] : key)\n\n if (acc.length === size) {\n callback(null, acc)\n } else {\n this._next(onnext)\n }\n }\n\n this._next(onnext)\n }\n\n all (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, emptyOptions)\n\n if (this[kClosing]) {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call all() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n } else if (this[kWorking]) {\n this.nextTick(callback, new ModuleError('Iterator is busy: cannot call all() until previous call has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n }))\n } else {\n this[kWorking] = true\n this[kCallback] = callback\n this[kAutoClose] = true\n\n if (this[kCount] >= this[kLimit]) this.nextTick(this[kHandleMany], null, [])\n else this._all(options, this[kHandleMany])\n }\n\n return callback[kPromise]\n }\n\n _all (options, callback) {\n // Must count here because we're directly calling _nextv()\n let count = this[kCount]\n const acc = []\n\n const nextv = () => {\n // Not configurable, because implementations should optimize _all().\n const size = this[kLimit] < Infinity ? Math.min(1e3, this[kLimit] - count) : 1e3\n\n if (size <= 0) {\n this.nextTick(callback, null, acc)\n } else {\n this._nextv(size, emptyOptions, onnextv)\n }\n }\n\n const onnextv = (err, items) => {\n if (err) {\n callback(err)\n } else if (items.length === 0) {\n callback(null, acc)\n } else {\n acc.push.apply(acc, items)\n count += items.length\n nextv()\n }\n }\n\n nextv()\n }\n\n [kFinishWork] () {\n const cb = this[kCallback]\n\n // Callback will be null if work was aborted on close\n if (this[kAbortOnClose] && cb === null) return noop\n\n this[kWorking] = false\n this[kCallback] = null\n\n if (this[kClosing]) this._close(this[kHandleClose])\n\n return cb\n }\n\n [kReturnMany] (cb, err, items) {\n if (this[kAutoClose]) {\n this.close(cb.bind(null, err, items))\n } else {\n cb(err, items)\n }\n }\n\n seek (target, options) {\n options = getOptions(options, emptyOptions)\n\n if (this[kClosing]) {\n // Don't throw here, to be kind to implementations that wrap\n // another db and don't necessarily control when the db is closed\n } else if (this[kWorking]) {\n throw new ModuleError('Iterator is busy: cannot call seek() until next() has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n })\n } else {\n const keyEncoding = this.db.keyEncoding(options.keyEncoding || this[kKeyEncoding])\n const keyFormat = keyEncoding.format\n\n if (options.keyEncoding !== keyFormat) {\n options = { ...options, keyEncoding: keyFormat }\n }\n\n const mapped = this.db.prefixKey(keyEncoding.encode(target), keyFormat)\n this._seek(mapped, options)\n }\n }\n\n _seek (target, options) {\n throw new ModuleError('Iterator does not support seek()', {\n code: 'LEVEL_NOT_SUPPORTED'\n })\n }\n\n close (callback) {\n callback = fromCallback(callback, kPromise)\n\n if (this[kClosed]) {\n this.nextTick(callback)\n } else if (this[kClosing]) {\n this[kCloseCallbacks].push(callback)\n } else {\n this[kClosing] = true\n this[kCloseCallbacks].push(callback)\n\n if (!this[kWorking]) {\n this._close(this[kHandleClose])\n } else if (this[kAbortOnClose]) {\n // Don't wait for work to finish. Subsequently ignore the result.\n const cb = this[kFinishWork]()\n\n cb(new ModuleError('Aborted on iterator close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n return callback[kPromise]\n }\n\n _close (callback) {\n this.nextTick(callback)\n }\n\n [kHandleClose] () {\n this[kClosed] = true\n this.db.detachResource(this)\n\n const callbacks = this[kCloseCallbacks]\n this[kCloseCallbacks] = []\n\n for (const cb of callbacks) {\n cb()\n }\n }\n\n async * [Symbol.asyncIterator] () {\n try {\n let item\n\n while ((item = (await this.next())) !== undefined) {\n yield item\n }\n } finally {\n if (!this[kClosed]) await this.close()\n }\n }\n}\n\n// For backwards compatibility this class is not (yet) called AbstractEntryIterator.\nclass AbstractIterator extends CommonIterator {\n constructor (db, options) {\n super(db, options, true)\n this[kKeys] = options.keys !== false\n this[kValues] = options.values !== false\n }\n\n [kHandleOne] (err, key, value) {\n const cb = this[kFinishWork]()\n if (err) return cb(err)\n\n try {\n key = this[kKeys] && key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n value = this[kValues] && value !== undefined ? this[kValueEncoding].decode(value) : undefined\n } catch (err) {\n return cb(new IteratorDecodeError('entry', err))\n }\n\n if (!(key === undefined && value === undefined)) {\n this[kCount]++\n }\n\n cb(null, key, value)\n }\n\n [kHandleMany] (err, entries) {\n const cb = this[kFinishWork]()\n if (err) return this[kReturnMany](cb, err)\n\n try {\n for (const entry of entries) {\n const key = entry[0]\n const value = entry[1]\n\n entry[0] = this[kKeys] && key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n entry[1] = this[kValues] && value !== undefined ? this[kValueEncoding].decode(value) : undefined\n }\n } catch (err) {\n return this[kReturnMany](cb, new IteratorDecodeError('entries', err))\n }\n\n this[kCount] += entries.length\n this[kReturnMany](cb, null, entries)\n }\n\n end (callback) {\n if (!warnedEnd && typeof console !== 'undefined') {\n warnedEnd = true\n console.warn(new ModuleError(\n 'The iterator.end() method was renamed to close() and end() is an alias that will be removed in a future version',\n { code: 'LEVEL_LEGACY' }\n ))\n }\n\n return this.close(callback)\n }\n}\n\nclass AbstractKeyIterator extends CommonIterator {\n constructor (db, options) {\n super(db, options, false)\n }\n\n [kHandleOne] (err, key) {\n const cb = this[kFinishWork]()\n if (err) return cb(err)\n\n try {\n key = key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n } catch (err) {\n return cb(new IteratorDecodeError('key', err))\n }\n\n if (key !== undefined) this[kCount]++\n cb(null, key)\n }\n\n [kHandleMany] (err, keys) {\n const cb = this[kFinishWork]()\n if (err) return this[kReturnMany](cb, err)\n\n try {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n keys[i] = key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n }\n } catch (err) {\n return this[kReturnMany](cb, new IteratorDecodeError('keys', err))\n }\n\n this[kCount] += keys.length\n this[kReturnMany](cb, null, keys)\n }\n}\n\nclass AbstractValueIterator extends CommonIterator {\n constructor (db, options) {\n super(db, options, false)\n }\n\n [kHandleOne] (err, value) {\n const cb = this[kFinishWork]()\n if (err) return cb(err)\n\n try {\n value = value !== undefined ? this[kValueEncoding].decode(value) : undefined\n } catch (err) {\n return cb(new IteratorDecodeError('value', err))\n }\n\n if (value !== undefined) this[kCount]++\n cb(null, value)\n }\n\n [kHandleMany] (err, values) {\n const cb = this[kFinishWork]()\n if (err) return this[kReturnMany](cb, err)\n\n try {\n for (let i = 0; i < values.length; i++) {\n const value = values[i]\n values[i] = value !== undefined ? this[kValueEncoding].decode(value) : undefined\n }\n } catch (err) {\n return this[kReturnMany](cb, new IteratorDecodeError('values', err))\n }\n\n this[kCount] += values.length\n this[kReturnMany](cb, null, values)\n }\n}\n\n// Internal utility, not typed or exported\nclass IteratorDecodeError extends ModuleError {\n constructor (subject, cause) {\n super(`Iterator could not decode ${subject}`, {\n code: 'LEVEL_DECODE_ERROR',\n cause\n })\n }\n}\n\n// To help migrating to abstract-level\nfor (const k of ['_ended property', '_nexting property', '_end method']) {\n Object.defineProperty(AbstractIterator.prototype, k.split(' ')[0], {\n get () { throw new ModuleError(`The ${k} has been removed`, { code: 'LEVEL_LEGACY' }) },\n set () { throw new ModuleError(`The ${k} has been removed`, { code: 'LEVEL_LEGACY' }) }\n })\n}\n\n// Exposed so that AbstractLevel can set these options\nAbstractIterator.keyEncoding = kKeyEncoding\nAbstractIterator.valueEncoding = kValueEncoding\n\nexports.AbstractIterator = AbstractIterator\nexports.AbstractKeyIterator = AbstractKeyIterator\nexports.AbstractValueIterator = AbstractValueIterator\n","'use strict'\n\nconst { AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\n\nconst kIterator = Symbol('iterator')\nconst kCallback = Symbol('callback')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\n\nclass DefaultKeyIterator extends AbstractKeyIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kIterator] = db.iterator({ ...options, keys: true, values: false })\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n }\n}\n\nclass DefaultValueIterator extends AbstractValueIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kIterator] = db.iterator({ ...options, keys: false, values: true })\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n }\n}\n\nfor (const Iterator of [DefaultKeyIterator, DefaultValueIterator]) {\n const keys = Iterator === DefaultKeyIterator\n const mapEntry = keys ? (entry) => entry[0] : (entry) => entry[1]\n\n Iterator.prototype._next = function (callback) {\n this[kCallback] = callback\n this[kIterator].next(this[kHandleOne])\n }\n\n Iterator.prototype[kHandleOne] = function (err, key, value) {\n const callback = this[kCallback]\n if (err) callback(err)\n else callback(null, keys ? key : value)\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n this[kCallback] = callback\n this[kIterator].nextv(size, options, this[kHandleMany])\n }\n\n Iterator.prototype._all = function (options, callback) {\n this[kCallback] = callback\n this[kIterator].all(options, this[kHandleMany])\n }\n\n Iterator.prototype[kHandleMany] = function (err, entries) {\n const callback = this[kCallback]\n if (err) callback(err)\n else callback(null, entries.map(mapEntry))\n }\n\n Iterator.prototype._seek = function (target, options) {\n this[kIterator].seek(target, options)\n }\n\n Iterator.prototype._close = function (callback) {\n this[kIterator].close(callback)\n }\n}\n\n// Internal utilities, should be typed as AbstractKeyIterator and AbstractValueIterator\nexports.DefaultKeyIterator = DefaultKeyIterator\nexports.DefaultValueIterator = DefaultValueIterator\n","'use strict'\n\nconst { AbstractIterator, AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\nconst ModuleError = require('module-error')\n\nconst kNut = Symbol('nut')\nconst kUndefer = Symbol('undefer')\nconst kFactory = Symbol('factory')\n\nclass DeferredIterator extends AbstractIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kNut] = null\n this[kFactory] = () => db.iterator(options)\n\n this.db.defer(() => this[kUndefer]())\n }\n}\n\nclass DeferredKeyIterator extends AbstractKeyIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kNut] = null\n this[kFactory] = () => db.keys(options)\n\n this.db.defer(() => this[kUndefer]())\n }\n}\n\nclass DeferredValueIterator extends AbstractValueIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kNut] = null\n this[kFactory] = () => db.values(options)\n\n this.db.defer(() => this[kUndefer]())\n }\n}\n\nfor (const Iterator of [DeferredIterator, DeferredKeyIterator, DeferredValueIterator]) {\n Iterator.prototype[kUndefer] = function () {\n if (this.db.status === 'open') {\n this[kNut] = this[kFactory]()\n }\n }\n\n Iterator.prototype._next = function (callback) {\n if (this[kNut] !== null) {\n this[kNut].next(callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._next(callback))\n } else {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call next() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n if (this[kNut] !== null) {\n this[kNut].nextv(size, options, callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._nextv(size, options, callback))\n } else {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call nextv() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n Iterator.prototype._all = function (options, callback) {\n if (this[kNut] !== null) {\n this[kNut].all(callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._all(options, callback))\n } else {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call all() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n Iterator.prototype._seek = function (target, options) {\n if (this[kNut] !== null) {\n // TODO: explain why we need _seek() rather than seek() here\n this[kNut]._seek(target, options)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._seek(target, options))\n }\n }\n\n Iterator.prototype._close = function (callback) {\n if (this[kNut] !== null) {\n this[kNut].close(callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._close(callback))\n } else {\n this.nextTick(callback)\n }\n }\n}\n\nexports.DeferredIterator = DeferredIterator\nexports.DeferredKeyIterator = DeferredKeyIterator\nexports.DeferredValueIterator = DeferredValueIterator\n","'use strict'\n\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { getCallback, getOptions } = require('./lib/common')\n\nconst kPromise = Symbol('promise')\nconst kStatus = Symbol('status')\nconst kOperations = Symbol('operations')\nconst kFinishClose = Symbol('finishClose')\nconst kCloseCallbacks = Symbol('closeCallbacks')\n\nclass AbstractChainedBatch {\n constructor (db) {\n if (typeof db !== 'object' || db === null) {\n const hint = db === null ? 'null' : typeof db\n throw new TypeError(`The first argument must be an abstract-level database, received ${hint}`)\n }\n\n this[kOperations] = []\n this[kCloseCallbacks] = []\n this[kStatus] = 'open'\n this[kFinishClose] = this[kFinishClose].bind(this)\n\n this.db = db\n this.db.attachResource(this)\n this.nextTick = db.nextTick\n }\n\n get length () {\n return this[kOperations].length\n }\n\n put (key, value, options) {\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Batch is not open: cannot call put() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n })\n }\n\n const err = this.db._checkKey(key) || this.db._checkValue(value)\n if (err) throw err\n\n const db = options && options.sublevel != null ? options.sublevel : this.db\n const original = options\n const keyEncoding = db.keyEncoding(options && options.keyEncoding)\n const valueEncoding = db.valueEncoding(options && options.valueEncoding)\n const keyFormat = keyEncoding.format\n\n // Forward encoding options\n options = { ...options, keyEncoding: keyFormat, valueEncoding: valueEncoding.format }\n\n // Prevent double prefixing\n if (db !== this.db) {\n options.sublevel = null\n }\n\n const mappedKey = db.prefixKey(keyEncoding.encode(key), keyFormat)\n const mappedValue = valueEncoding.encode(value)\n\n this._put(mappedKey, mappedValue, options)\n this[kOperations].push({ ...original, type: 'put', key, value })\n\n return this\n }\n\n _put (key, value, options) {}\n\n del (key, options) {\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Batch is not open: cannot call del() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n })\n }\n\n const err = this.db._checkKey(key)\n if (err) throw err\n\n const db = options && options.sublevel != null ? options.sublevel : this.db\n const original = options\n const keyEncoding = db.keyEncoding(options && options.keyEncoding)\n const keyFormat = keyEncoding.format\n\n // Forward encoding options\n options = { ...options, keyEncoding: keyFormat }\n\n // Prevent double prefixing\n if (db !== this.db) {\n options.sublevel = null\n }\n\n this._del(db.prefixKey(keyEncoding.encode(key), keyFormat), options)\n this[kOperations].push({ ...original, type: 'del', key })\n\n return this\n }\n\n _del (key, options) {}\n\n clear () {\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Batch is not open: cannot call clear() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n })\n }\n\n this._clear()\n this[kOperations] = []\n\n return this\n }\n\n _clear () {}\n\n write (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options)\n\n if (this[kStatus] !== 'open') {\n this.nextTick(callback, new ModuleError('Batch is not open: cannot call write() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n }))\n } else if (this.length === 0) {\n this.close(callback)\n } else {\n this[kStatus] = 'writing'\n this._write(options, (err) => {\n this[kStatus] = 'closing'\n this[kCloseCallbacks].push(() => callback(err))\n\n // Emit after setting 'closing' status, because event may trigger a\n // db close which in turn triggers (idempotently) closing this batch.\n if (!err) this.db.emit('batch', this[kOperations])\n\n this._close(this[kFinishClose])\n })\n }\n\n return callback[kPromise]\n }\n\n _write (options, callback) {}\n\n close (callback) {\n callback = fromCallback(callback, kPromise)\n\n if (this[kStatus] === 'closing') {\n this[kCloseCallbacks].push(callback)\n } else if (this[kStatus] === 'closed') {\n this.nextTick(callback)\n } else {\n this[kCloseCallbacks].push(callback)\n\n if (this[kStatus] !== 'writing') {\n this[kStatus] = 'closing'\n this._close(this[kFinishClose])\n }\n }\n\n return callback[kPromise]\n }\n\n _close (callback) {\n this.nextTick(callback)\n }\n\n [kFinishClose] () {\n this[kStatus] = 'closed'\n this.db.detachResource(this)\n\n const callbacks = this[kCloseCallbacks]\n this[kCloseCallbacks] = []\n\n for (const cb of callbacks) {\n cb()\n }\n }\n}\n\nexports.AbstractChainedBatch = AbstractChainedBatch\n","'use strict'\n\nconst { AbstractChainedBatch } = require('../abstract-chained-batch')\nconst ModuleError = require('module-error')\nconst kEncoded = Symbol('encoded')\n\n// Functional default for chained batch, with support of deferred open\nclass DefaultChainedBatch extends AbstractChainedBatch {\n constructor (db) {\n super(db)\n this[kEncoded] = []\n }\n\n _put (key, value, options) {\n this[kEncoded].push({ ...options, type: 'put', key, value })\n }\n\n _del (key, options) {\n this[kEncoded].push({ ...options, type: 'del', key })\n }\n\n _clear () {\n this[kEncoded] = []\n }\n\n // Assumes this[kEncoded] cannot change after write()\n _write (options, callback) {\n if (this.db.status === 'opening') {\n this.db.defer(() => this._write(options, callback))\n } else if (this.db.status === 'open') {\n if (this[kEncoded].length === 0) this.nextTick(callback)\n else this.db._batch(this[kEncoded], options, callback)\n } else {\n this.nextTick(callback, new ModuleError('Batch is not open: cannot call write() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n }))\n }\n }\n}\n\nexports.DefaultChainedBatch = DefaultChainedBatch\n","'use strict'\n\nconst ModuleError = require('module-error')\nconst hasOwnProperty = Object.prototype.hasOwnProperty\nconst rangeOptions = new Set(['lt', 'lte', 'gt', 'gte'])\n\nmodule.exports = function (options, keyEncoding) {\n const result = {}\n\n for (const k in options) {\n if (!hasOwnProperty.call(options, k)) continue\n if (k === 'keyEncoding' || k === 'valueEncoding') continue\n\n if (k === 'start' || k === 'end') {\n throw new ModuleError(`The legacy range option '${k}' has been removed`, {\n code: 'LEVEL_LEGACY'\n })\n } else if (k === 'encoding') {\n // To help migrating to abstract-level\n throw new ModuleError(\"The levelup-style 'encoding' alias has been removed, use 'valueEncoding' instead\", {\n code: 'LEVEL_LEGACY'\n })\n }\n\n if (rangeOptions.has(k)) {\n // Note that we don't reject nullish and empty options here. While\n // those types are invalid as keys, they are valid as range options.\n result[k] = keyEncoding.encode(options[k])\n } else {\n result[k] = options[k]\n }\n }\n\n result.reverse = !!result.reverse\n result.limit = Number.isInteger(result.limit) && result.limit >= 0 ? result.limit : -1\n\n return result\n}\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","'use strict'\n\nconst queueMicrotask = require('queue-microtask')\n\nmodule.exports = function (fn, ...args) {\n if (args.length === 0) {\n queueMicrotask(fn)\n } else {\n queueMicrotask(() => fn(...args))\n }\n}\n","'use strict'\n\nconst { AbstractIterator, AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\n\nconst kUnfix = Symbol('unfix')\nconst kIterator = Symbol('iterator')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\nconst kCallback = Symbol('callback')\n\n// TODO: unfix natively if db supports it\nclass AbstractSublevelIterator extends AbstractIterator {\n constructor (db, options, iterator, unfix) {\n super(db, options)\n\n this[kIterator] = iterator\n this[kUnfix] = unfix\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n this[kCallback] = null\n }\n\n [kHandleOne] (err, key, value) {\n const callback = this[kCallback]\n if (err) return callback(err)\n if (key !== undefined) key = this[kUnfix](key)\n callback(err, key, value)\n }\n\n [kHandleMany] (err, entries) {\n const callback = this[kCallback]\n if (err) return callback(err)\n\n for (const entry of entries) {\n const key = entry[0]\n if (key !== undefined) entry[0] = this[kUnfix](key)\n }\n\n callback(err, entries)\n }\n}\n\nclass AbstractSublevelKeyIterator extends AbstractKeyIterator {\n constructor (db, options, iterator, unfix) {\n super(db, options)\n\n this[kIterator] = iterator\n this[kUnfix] = unfix\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n this[kCallback] = null\n }\n\n [kHandleOne] (err, key) {\n const callback = this[kCallback]\n if (err) return callback(err)\n if (key !== undefined) key = this[kUnfix](key)\n callback(err, key)\n }\n\n [kHandleMany] (err, keys) {\n const callback = this[kCallback]\n if (err) return callback(err)\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (key !== undefined) keys[i] = this[kUnfix](key)\n }\n\n callback(err, keys)\n }\n}\n\nclass AbstractSublevelValueIterator extends AbstractValueIterator {\n constructor (db, options, iterator) {\n super(db, options)\n this[kIterator] = iterator\n }\n}\n\nfor (const Iterator of [AbstractSublevelIterator, AbstractSublevelKeyIterator]) {\n Iterator.prototype._next = function (callback) {\n this[kCallback] = callback\n this[kIterator].next(this[kHandleOne])\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n this[kCallback] = callback\n this[kIterator].nextv(size, options, this[kHandleMany])\n }\n\n Iterator.prototype._all = function (options, callback) {\n this[kCallback] = callback\n this[kIterator].all(options, this[kHandleMany])\n }\n}\n\nfor (const Iterator of [AbstractSublevelValueIterator]) {\n Iterator.prototype._next = function (callback) {\n this[kIterator].next(callback)\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n this[kIterator].nextv(size, options, callback)\n }\n\n Iterator.prototype._all = function (options, callback) {\n this[kIterator].all(options, callback)\n }\n}\n\nfor (const Iterator of [AbstractSublevelIterator, AbstractSublevelKeyIterator, AbstractSublevelValueIterator]) {\n Iterator.prototype._seek = function (target, options) {\n this[kIterator].seek(target, options)\n }\n\n Iterator.prototype._close = function (callback) {\n this[kIterator].close(callback)\n }\n}\n\nexports.AbstractSublevelIterator = AbstractSublevelIterator\nexports.AbstractSublevelKeyIterator = AbstractSublevelKeyIterator\nexports.AbstractSublevelValueIterator = AbstractSublevelValueIterator\n","'use strict'\n\nconst ModuleError = require('module-error')\nconst { Buffer } = require('buffer') || {}\nconst {\n AbstractSublevelIterator,\n AbstractSublevelKeyIterator,\n AbstractSublevelValueIterator\n} = require('./abstract-sublevel-iterator')\n\nconst kPrefix = Symbol('prefix')\nconst kUpperBound = Symbol('upperBound')\nconst kPrefixRange = Symbol('prefixRange')\nconst kParent = Symbol('parent')\nconst kUnfix = Symbol('unfix')\n\nconst textEncoder = new TextEncoder()\nconst defaults = { separator: '!' }\n\n// Wrapped to avoid circular dependency\nmodule.exports = function ({ AbstractLevel }) {\n class AbstractSublevel extends AbstractLevel {\n static defaults (options) {\n // To help migrating from subleveldown to abstract-level\n if (typeof options === 'string') {\n throw new ModuleError('The subleveldown string shorthand for { separator } has been removed', {\n code: 'LEVEL_LEGACY'\n })\n } else if (options && options.open) {\n throw new ModuleError('The subleveldown open option has been removed', {\n code: 'LEVEL_LEGACY'\n })\n }\n\n if (options == null) {\n return defaults\n } else if (!options.separator) {\n return { ...options, separator: '!' }\n } else {\n return options\n }\n }\n\n // TODO: add autoClose option, which if true, does parent.attachResource(this)\n constructor (db, name, options) {\n // Don't forward AbstractSublevel options to AbstractLevel\n const { separator, manifest, ...forward } = AbstractSublevel.defaults(options)\n name = trim(name, separator)\n\n // Reserve one character between separator and name to give us an upper bound\n const reserved = separator.charCodeAt(0) + 1\n const parent = db[kParent] || db\n\n // Keys should sort like ['!a!', '!a!!a!', '!a\"', '!aa!', '!b!'].\n // Use ASCII for consistent length between string, Buffer and Uint8Array\n if (!textEncoder.encode(name).every(x => x > reserved && x < 127)) {\n throw new ModuleError(`Prefix must use bytes > ${reserved} < ${127}`, {\n code: 'LEVEL_INVALID_PREFIX'\n })\n }\n\n super(mergeManifests(parent, manifest), forward)\n\n const prefix = (db.prefix || '') + separator + name + separator\n const upperBound = prefix.slice(0, -1) + String.fromCharCode(reserved)\n\n this[kParent] = parent\n this[kPrefix] = new MultiFormat(prefix)\n this[kUpperBound] = new MultiFormat(upperBound)\n this[kUnfix] = new Unfixer()\n\n this.nextTick = parent.nextTick\n }\n\n prefixKey (key, keyFormat) {\n if (keyFormat === 'utf8') {\n return this[kPrefix].utf8 + key\n } else if (key.byteLength === 0) {\n // Fast path for empty key (no copy)\n return this[kPrefix][keyFormat]\n } else if (keyFormat === 'view') {\n const view = this[kPrefix].view\n const result = new Uint8Array(view.byteLength + key.byteLength)\n\n result.set(view, 0)\n result.set(key, view.byteLength)\n\n return result\n } else {\n const buffer = this[kPrefix].buffer\n return Buffer.concat([buffer, key], buffer.byteLength + key.byteLength)\n }\n }\n\n // Not exposed for now.\n [kPrefixRange] (range, keyFormat) {\n if (range.gte !== undefined) {\n range.gte = this.prefixKey(range.gte, keyFormat)\n } else if (range.gt !== undefined) {\n range.gt = this.prefixKey(range.gt, keyFormat)\n } else {\n range.gte = this[kPrefix][keyFormat]\n }\n\n if (range.lte !== undefined) {\n range.lte = this.prefixKey(range.lte, keyFormat)\n } else if (range.lt !== undefined) {\n range.lt = this.prefixKey(range.lt, keyFormat)\n } else {\n range.lte = this[kUpperBound][keyFormat]\n }\n }\n\n get prefix () {\n return this[kPrefix].utf8\n }\n\n get db () {\n return this[kParent]\n }\n\n _open (options, callback) {\n // The parent db must open itself or be (re)opened by the user because\n // a sublevel should not initiate state changes on the rest of the db.\n this[kParent].open({ passive: true }, callback)\n }\n\n _put (key, value, options, callback) {\n this[kParent].put(key, value, options, callback)\n }\n\n _get (key, options, callback) {\n this[kParent].get(key, options, callback)\n }\n\n _getMany (keys, options, callback) {\n this[kParent].getMany(keys, options, callback)\n }\n\n _del (key, options, callback) {\n this[kParent].del(key, options, callback)\n }\n\n _batch (operations, options, callback) {\n this[kParent].batch(operations, options, callback)\n }\n\n _clear (options, callback) {\n // TODO (refactor): move to AbstractLevel\n this[kPrefixRange](options, options.keyEncoding)\n this[kParent].clear(options, callback)\n }\n\n _iterator (options) {\n // TODO (refactor): move to AbstractLevel\n this[kPrefixRange](options, options.keyEncoding)\n const iterator = this[kParent].iterator(options)\n const unfix = this[kUnfix].get(this[kPrefix].utf8.length, options.keyEncoding)\n return new AbstractSublevelIterator(this, options, iterator, unfix)\n }\n\n _keys (options) {\n this[kPrefixRange](options, options.keyEncoding)\n const iterator = this[kParent].keys(options)\n const unfix = this[kUnfix].get(this[kPrefix].utf8.length, options.keyEncoding)\n return new AbstractSublevelKeyIterator(this, options, iterator, unfix)\n }\n\n _values (options) {\n this[kPrefixRange](options, options.keyEncoding)\n const iterator = this[kParent].values(options)\n return new AbstractSublevelValueIterator(this, options, iterator)\n }\n }\n\n return { AbstractSublevel }\n}\n\nconst mergeManifests = function (parent, manifest) {\n return {\n // Inherit manifest of parent db\n ...parent.supports,\n\n // Disable unsupported features\n createIfMissing: false,\n errorIfExists: false,\n\n // Unset additional events because we're not forwarding them\n events: {},\n\n // Unset additional methods (like approximateSize) which we can't support here unless\n // the AbstractSublevel class is overridden by an implementation of `abstract-level`.\n additionalMethods: {},\n\n // Inherit manifest of custom AbstractSublevel subclass. Such a class is not\n // allowed to override encodings.\n ...manifest,\n\n encodings: {\n utf8: supportsEncoding(parent, 'utf8'),\n buffer: supportsEncoding(parent, 'buffer'),\n view: supportsEncoding(parent, 'view')\n }\n }\n}\n\nconst supportsEncoding = function (parent, encoding) {\n // Prefer a non-transcoded encoding for optimal performance\n return parent.supports.encodings[encoding]\n ? parent.keyEncoding(encoding).name === encoding\n : false\n}\n\nclass MultiFormat {\n constructor (key) {\n this.utf8 = key\n this.view = textEncoder.encode(key)\n this.buffer = Buffer ? Buffer.from(this.view.buffer, 0, this.view.byteLength) : {}\n }\n}\n\nclass Unfixer {\n constructor () {\n this.cache = new Map()\n }\n\n get (prefixLength, keyFormat) {\n let unfix = this.cache.get(keyFormat)\n\n if (unfix === undefined) {\n if (keyFormat === 'view') {\n unfix = function (prefixLength, key) {\n // Avoid Uint8Array#slice() because it copies\n return key.subarray(prefixLength)\n }.bind(null, prefixLength)\n } else {\n unfix = function (prefixLength, key) {\n // Avoid Buffer#subarray() because it's slow\n return key.slice(prefixLength)\n }.bind(null, prefixLength)\n }\n\n this.cache.set(keyFormat, unfix)\n }\n\n return unfix\n }\n}\n\nconst trim = function (str, char) {\n let start = 0\n let end = str.length\n\n while (start < end && str[start] === char) start++\n while (end > start && str[end - 1] === char) end--\n\n return str.slice(start, end)\n}\n","'use strict'\n\nconst { supports } = require('level-supports')\nconst { Transcoder } = require('level-transcoder')\nconst { EventEmitter } = require('events')\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { AbstractIterator } = require('./abstract-iterator')\nconst { DefaultKeyIterator, DefaultValueIterator } = require('./lib/default-kv-iterator')\nconst { DeferredIterator, DeferredKeyIterator, DeferredValueIterator } = require('./lib/deferred-iterator')\nconst { DefaultChainedBatch } = require('./lib/default-chained-batch')\nconst { getCallback, getOptions } = require('./lib/common')\nconst rangeOptions = require('./lib/range-options')\n\nconst kPromise = Symbol('promise')\nconst kLanded = Symbol('landed')\nconst kResources = Symbol('resources')\nconst kCloseResources = Symbol('closeResources')\nconst kOperations = Symbol('operations')\nconst kUndefer = Symbol('undefer')\nconst kDeferOpen = Symbol('deferOpen')\nconst kOptions = Symbol('options')\nconst kStatus = Symbol('status')\nconst kDefaultOptions = Symbol('defaultOptions')\nconst kTranscoder = Symbol('transcoder')\nconst kKeyEncoding = Symbol('keyEncoding')\nconst kValueEncoding = Symbol('valueEncoding')\nconst noop = () => {}\n\nclass AbstractLevel extends EventEmitter {\n constructor (manifest, options) {\n super()\n\n if (typeof manifest !== 'object' || manifest === null) {\n throw new TypeError(\"The first argument 'manifest' must be an object\")\n }\n\n options = getOptions(options)\n const { keyEncoding, valueEncoding, passive, ...forward } = options\n\n this[kResources] = new Set()\n this[kOperations] = []\n this[kDeferOpen] = true\n this[kOptions] = forward\n this[kStatus] = 'opening'\n\n this.supports = supports(manifest, {\n status: true,\n promises: true,\n clear: true,\n getMany: true,\n deferredOpen: true,\n\n // TODO (next major): add seek\n snapshots: manifest.snapshots !== false,\n permanence: manifest.permanence !== false,\n\n // TODO: remove from level-supports because it's always supported\n keyIterator: true,\n valueIterator: true,\n iteratorNextv: true,\n iteratorAll: true,\n\n encodings: manifest.encodings || {},\n events: Object.assign({}, manifest.events, {\n opening: true,\n open: true,\n closing: true,\n closed: true,\n put: true,\n del: true,\n batch: true,\n clear: true\n })\n })\n\n this[kTranscoder] = new Transcoder(formats(this))\n this[kKeyEncoding] = this[kTranscoder].encoding(keyEncoding || 'utf8')\n this[kValueEncoding] = this[kTranscoder].encoding(valueEncoding || 'utf8')\n\n // Add custom and transcoder encodings to manifest\n for (const encoding of this[kTranscoder].encodings()) {\n if (!this.supports.encodings[encoding.commonName]) {\n this.supports.encodings[encoding.commonName] = true\n }\n }\n\n this[kDefaultOptions] = {\n empty: Object.freeze({}),\n entry: Object.freeze({\n keyEncoding: this[kKeyEncoding].commonName,\n valueEncoding: this[kValueEncoding].commonName\n }),\n key: Object.freeze({\n keyEncoding: this[kKeyEncoding].commonName\n })\n }\n\n // Let subclass finish its constructor\n this.nextTick(() => {\n if (this[kDeferOpen]) {\n this.open({ passive: false }, noop)\n }\n })\n }\n\n get status () {\n return this[kStatus]\n }\n\n keyEncoding (encoding) {\n return this[kTranscoder].encoding(encoding != null ? encoding : this[kKeyEncoding])\n }\n\n valueEncoding (encoding) {\n return this[kTranscoder].encoding(encoding != null ? encoding : this[kValueEncoding])\n }\n\n open (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n\n options = { ...this[kOptions], ...getOptions(options) }\n\n options.createIfMissing = options.createIfMissing !== false\n options.errorIfExists = !!options.errorIfExists\n\n const maybeOpened = (err) => {\n if (this[kStatus] === 'closing' || this[kStatus] === 'opening') {\n // Wait until pending state changes are done\n this.once(kLanded, err ? () => maybeOpened(err) : maybeOpened)\n } else if (this[kStatus] !== 'open') {\n callback(new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN',\n cause: err\n }))\n } else {\n callback()\n }\n }\n\n if (options.passive) {\n if (this[kStatus] === 'opening') {\n this.once(kLanded, maybeOpened)\n } else {\n this.nextTick(maybeOpened)\n }\n } else if (this[kStatus] === 'closed' || this[kDeferOpen]) {\n this[kDeferOpen] = false\n this[kStatus] = 'opening'\n this.emit('opening')\n\n this._open(options, (err) => {\n if (err) {\n this[kStatus] = 'closed'\n\n // Resources must be safe to close in any db state\n this[kCloseResources](() => {\n this.emit(kLanded)\n maybeOpened(err)\n })\n\n this[kUndefer]()\n return\n }\n\n this[kStatus] = 'open'\n this[kUndefer]()\n this.emit(kLanded)\n\n // Only emit public event if pending state changes are done\n if (this[kStatus] === 'open') this.emit('open')\n\n // TODO (next major): remove this alias\n if (this[kStatus] === 'open') this.emit('ready')\n\n maybeOpened()\n })\n } else if (this[kStatus] === 'open') {\n this.nextTick(maybeOpened)\n } else {\n this.once(kLanded, () => this.open(options, callback))\n }\n\n return callback[kPromise]\n }\n\n _open (options, callback) {\n this.nextTick(callback)\n }\n\n close (callback) {\n callback = fromCallback(callback, kPromise)\n\n const maybeClosed = (err) => {\n if (this[kStatus] === 'opening' || this[kStatus] === 'closing') {\n // Wait until pending state changes are done\n this.once(kLanded, err ? maybeClosed(err) : maybeClosed)\n } else if (this[kStatus] !== 'closed') {\n callback(new ModuleError('Database is not closed', {\n code: 'LEVEL_DATABASE_NOT_CLOSED',\n cause: err\n }))\n } else {\n callback()\n }\n }\n\n if (this[kStatus] === 'open') {\n this[kStatus] = 'closing'\n this.emit('closing')\n\n const cancel = (err) => {\n this[kStatus] = 'open'\n this[kUndefer]()\n this.emit(kLanded)\n maybeClosed(err)\n }\n\n this[kCloseResources](() => {\n this._close((err) => {\n if (err) return cancel(err)\n\n this[kStatus] = 'closed'\n this[kUndefer]()\n this.emit(kLanded)\n\n // Only emit public event if pending state changes are done\n if (this[kStatus] === 'closed') this.emit('closed')\n\n maybeClosed()\n })\n })\n } else if (this[kStatus] === 'closed') {\n this.nextTick(maybeClosed)\n } else {\n this.once(kLanded, () => this.close(callback))\n }\n\n return callback[kPromise]\n }\n\n [kCloseResources] (callback) {\n if (this[kResources].size === 0) {\n return this.nextTick(callback)\n }\n\n let pending = this[kResources].size\n let sync = true\n\n const next = () => {\n if (--pending === 0) {\n // We don't have tests for generic resources, so dezalgo\n if (sync) this.nextTick(callback)\n else callback()\n }\n }\n\n // In parallel so that all resources know they are closed\n for (const resource of this[kResources]) {\n resource.close(next)\n }\n\n sync = false\n this[kResources].clear()\n }\n\n _close (callback) {\n this.nextTick(callback)\n }\n\n get (key, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].entry)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.get(key, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const err = this._checkKey(key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const valueEncoding = this.valueEncoding(options.valueEncoding)\n const keyFormat = keyEncoding.format\n const valueFormat = valueEncoding.format\n\n // Forward encoding options to the underlying store\n if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n // Avoid spread operator because of https://bugs.chromium.org/p/chromium/issues/detail?id=1204540\n options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n }\n\n this._get(this.prefixKey(keyEncoding.encode(key), keyFormat), options, (err, value) => {\n if (err) {\n // Normalize not found error for backwards compatibility with abstract-leveldown and level(up)\n if (err.code === 'LEVEL_NOT_FOUND' || err.notFound || /NotFound/i.test(err)) {\n if (!err.code) err.code = 'LEVEL_NOT_FOUND' // Preferred way going forward\n if (!err.notFound) err.notFound = true // Same as level-errors\n if (!err.status) err.status = 404 // Same as level-errors\n }\n\n return callback(err)\n }\n\n try {\n value = valueEncoding.decode(value)\n } catch (err) {\n return callback(new ModuleError('Could not decode value', {\n code: 'LEVEL_DECODE_ERROR',\n cause: err\n }))\n }\n\n callback(null, value)\n })\n\n return callback[kPromise]\n }\n\n _get (key, options, callback) {\n this.nextTick(callback, new Error('NotFound'))\n }\n\n getMany (keys, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].entry)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.getMany(keys, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n if (!Array.isArray(keys)) {\n this.nextTick(callback, new TypeError(\"The first argument 'keys' must be an array\"))\n return callback[kPromise]\n }\n\n if (keys.length === 0) {\n this.nextTick(callback, null, [])\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const valueEncoding = this.valueEncoding(options.valueEncoding)\n const keyFormat = keyEncoding.format\n const valueFormat = valueEncoding.format\n\n // Forward encoding options\n if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n }\n\n const mappedKeys = new Array(keys.length)\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n const err = this._checkKey(key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n mappedKeys[i] = this.prefixKey(keyEncoding.encode(key), keyFormat)\n }\n\n this._getMany(mappedKeys, options, (err, values) => {\n if (err) return callback(err)\n\n try {\n for (let i = 0; i < values.length; i++) {\n if (values[i] !== undefined) {\n values[i] = valueEncoding.decode(values[i])\n }\n }\n } catch (err) {\n return callback(new ModuleError(`Could not decode one or more of ${values.length} value(s)`, {\n code: 'LEVEL_DECODE_ERROR',\n cause: err\n }))\n }\n\n callback(null, values)\n })\n\n return callback[kPromise]\n }\n\n _getMany (keys, options, callback) {\n this.nextTick(callback, null, new Array(keys.length).fill(undefined))\n }\n\n put (key, value, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].entry)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.put(key, value, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const err = this._checkKey(key) || this._checkValue(value)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const valueEncoding = this.valueEncoding(options.valueEncoding)\n const keyFormat = keyEncoding.format\n const valueFormat = valueEncoding.format\n\n // Forward encoding options\n if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n }\n\n const mappedKey = this.prefixKey(keyEncoding.encode(key), keyFormat)\n const mappedValue = valueEncoding.encode(value)\n\n this._put(mappedKey, mappedValue, options, (err) => {\n if (err) return callback(err)\n this.emit('put', key, value)\n callback()\n })\n\n return callback[kPromise]\n }\n\n _put (key, value, options, callback) {\n this.nextTick(callback)\n }\n\n del (key, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].key)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.del(key, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const err = this._checkKey(key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const keyFormat = keyEncoding.format\n\n // Forward encoding options\n if (options.keyEncoding !== keyFormat) {\n options = Object.assign({}, options, { keyEncoding: keyFormat })\n }\n\n this._del(this.prefixKey(keyEncoding.encode(key), keyFormat), options, (err) => {\n if (err) return callback(err)\n this.emit('del', key)\n callback()\n })\n\n return callback[kPromise]\n }\n\n _del (key, options, callback) {\n this.nextTick(callback)\n }\n\n batch (operations, options, callback) {\n if (!arguments.length) {\n if (this[kStatus] === 'opening') return new DefaultChainedBatch(this)\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n return this._chainedBatch()\n }\n\n if (typeof operations === 'function') callback = operations\n else callback = getCallback(options, callback)\n\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].empty)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.batch(operations, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n if (!Array.isArray(operations)) {\n this.nextTick(callback, new TypeError(\"The first argument 'operations' must be an array\"))\n return callback[kPromise]\n }\n\n if (operations.length === 0) {\n this.nextTick(callback)\n return callback[kPromise]\n }\n\n const mapped = new Array(operations.length)\n const { keyEncoding: ke, valueEncoding: ve, ...forward } = options\n\n for (let i = 0; i < operations.length; i++) {\n if (typeof operations[i] !== 'object' || operations[i] === null) {\n this.nextTick(callback, new TypeError('A batch operation must be an object'))\n return callback[kPromise]\n }\n\n const op = Object.assign({}, operations[i])\n\n if (op.type !== 'put' && op.type !== 'del') {\n this.nextTick(callback, new TypeError(\"A batch operation must have a type property that is 'put' or 'del'\"))\n return callback[kPromise]\n }\n\n const err = this._checkKey(op.key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const db = op.sublevel != null ? op.sublevel : this\n const keyEncoding = db.keyEncoding(op.keyEncoding || ke)\n const keyFormat = keyEncoding.format\n\n op.key = db.prefixKey(keyEncoding.encode(op.key), keyFormat)\n op.keyEncoding = keyFormat\n\n if (op.type === 'put') {\n const valueErr = this._checkValue(op.value)\n\n if (valueErr) {\n this.nextTick(callback, valueErr)\n return callback[kPromise]\n }\n\n const valueEncoding = db.valueEncoding(op.valueEncoding || ve)\n\n op.value = valueEncoding.encode(op.value)\n op.valueEncoding = valueEncoding.format\n }\n\n // Prevent double prefixing\n if (db !== this) {\n op.sublevel = null\n }\n\n mapped[i] = op\n }\n\n this._batch(mapped, forward, (err) => {\n if (err) return callback(err)\n this.emit('batch', operations)\n callback()\n })\n\n return callback[kPromise]\n }\n\n _batch (operations, options, callback) {\n this.nextTick(callback)\n }\n\n sublevel (name, options) {\n return this._sublevel(name, AbstractSublevel.defaults(options))\n }\n\n _sublevel (name, options) {\n return new AbstractSublevel(this, name, options)\n }\n\n prefixKey (key, keyFormat) {\n return key\n }\n\n clear (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].empty)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.clear(options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const original = options\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n\n options = rangeOptions(options, keyEncoding)\n options.keyEncoding = keyEncoding.format\n\n if (options.limit === 0) {\n this.nextTick(callback)\n } else {\n this._clear(options, (err) => {\n if (err) return callback(err)\n this.emit('clear', original)\n callback()\n })\n }\n\n return callback[kPromise]\n }\n\n _clear (options, callback) {\n this.nextTick(callback)\n }\n\n iterator (options) {\n const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n options = rangeOptions(options, keyEncoding)\n options.keys = options.keys !== false\n options.values = options.values !== false\n\n // We need the original encoding options in AbstractIterator in order to decode data\n options[AbstractIterator.keyEncoding] = keyEncoding\n options[AbstractIterator.valueEncoding] = valueEncoding\n\n // Forward encoding options to private API\n options.keyEncoding = keyEncoding.format\n options.valueEncoding = valueEncoding.format\n\n if (this[kStatus] === 'opening') {\n return new DeferredIterator(this, options)\n } else if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n\n return this._iterator(options)\n }\n\n _iterator (options) {\n return new AbstractIterator(this, options)\n }\n\n keys (options) {\n // Also include valueEncoding (though unused) because we may fallback to _iterator()\n const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n options = rangeOptions(options, keyEncoding)\n\n // We need the original encoding options in AbstractKeyIterator in order to decode data\n options[AbstractIterator.keyEncoding] = keyEncoding\n options[AbstractIterator.valueEncoding] = valueEncoding\n\n // Forward encoding options to private API\n options.keyEncoding = keyEncoding.format\n options.valueEncoding = valueEncoding.format\n\n if (this[kStatus] === 'opening') {\n return new DeferredKeyIterator(this, options)\n } else if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n\n return this._keys(options)\n }\n\n _keys (options) {\n return new DefaultKeyIterator(this, options)\n }\n\n values (options) {\n const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n options = rangeOptions(options, keyEncoding)\n\n // We need the original encoding options in AbstractValueIterator in order to decode data\n options[AbstractIterator.keyEncoding] = keyEncoding\n options[AbstractIterator.valueEncoding] = valueEncoding\n\n // Forward encoding options to private API\n options.keyEncoding = keyEncoding.format\n options.valueEncoding = valueEncoding.format\n\n if (this[kStatus] === 'opening') {\n return new DeferredValueIterator(this, options)\n } else if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n\n return this._values(options)\n }\n\n _values (options) {\n return new DefaultValueIterator(this, options)\n }\n\n defer (fn) {\n if (typeof fn !== 'function') {\n throw new TypeError('The first argument must be a function')\n }\n\n this[kOperations].push(fn)\n }\n\n [kUndefer] () {\n if (this[kOperations].length === 0) {\n return\n }\n\n const operations = this[kOperations]\n this[kOperations] = []\n\n for (const op of operations) {\n op()\n }\n }\n\n // TODO: docs and types\n attachResource (resource) {\n if (typeof resource !== 'object' || resource === null ||\n typeof resource.close !== 'function') {\n throw new TypeError('The first argument must be a resource object')\n }\n\n this[kResources].add(resource)\n }\n\n // TODO: docs and types\n detachResource (resource) {\n this[kResources].delete(resource)\n }\n\n _chainedBatch () {\n return new DefaultChainedBatch(this)\n }\n\n _checkKey (key) {\n if (key === null || key === undefined) {\n return new ModuleError('Key cannot be null or undefined', {\n code: 'LEVEL_INVALID_KEY'\n })\n }\n }\n\n _checkValue (value) {\n if (value === null || value === undefined) {\n return new ModuleError('Value cannot be null or undefined', {\n code: 'LEVEL_INVALID_VALUE'\n })\n }\n }\n}\n\n// Expose browser-compatible nextTick for dependents\n// TODO: after we drop node 10, also use queueMicrotask in node\nAbstractLevel.prototype.nextTick = require('./lib/next-tick')\n\nconst { AbstractSublevel } = require('./lib/abstract-sublevel')({ AbstractLevel })\n\nexports.AbstractLevel = AbstractLevel\nexports.AbstractSublevel = AbstractSublevel\n\nconst maybeError = function (db, callback) {\n if (db[kStatus] !== 'open') {\n db.nextTick(callback, new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n }))\n return true\n }\n\n return false\n}\n\nconst formats = function (db) {\n return Object.keys(db.supports.encodings)\n .filter(k => !!db.supports.encodings[k])\n}\n","'use strict'\n\nexports.AbstractLevel = require('./abstract-level').AbstractLevel\nexports.AbstractSublevel = require('./abstract-level').AbstractSublevel\nexports.AbstractIterator = require('./abstract-iterator').AbstractIterator\nexports.AbstractKeyIterator = require('./abstract-iterator').AbstractKeyIterator\nexports.AbstractValueIterator = require('./abstract-iterator').AbstractValueIterator\nexports.AbstractChainedBatch = require('./abstract-chained-batch').AbstractChainedBatch\n","/*! run-parallel-limit. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallelLimit\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallelLimit (tasks, limit, cb) {\n if (typeof limit !== 'number') throw new Error('second argument must be a Number')\n let results, len, pending, keys, isErrored\n let isSync = true\n let next\n\n if (Array.isArray(tasks)) {\n results = []\n pending = len = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = len = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (err) isErrored = true\n if (--pending === 0 || err) {\n done(err)\n } else if (!isErrored && next < len) {\n let key\n if (keys) {\n key = keys[next]\n next += 1\n tasks[key](function (err, result) { each(key, err, result) })\n } else {\n key = next\n next += 1\n tasks[key](function (err, result) { each(key, err, result) })\n }\n }\n }\n\n next = limit\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.some(function (key, i) {\n tasks[key](function (err, result) { each(key, err, result) })\n if (i === limit - 1) return true // early return\n return false\n })\n } else {\n // array\n tasks.some(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n if (i === limit - 1) return true // early return\n return false\n })\n }\n\n isSync = false\n}\n","/* global IDBKeyRange */\n\n'use strict'\n\nmodule.exports = function createKeyRange (options) {\n const lower = options.gte !== undefined ? options.gte : options.gt !== undefined ? options.gt : undefined\n const upper = options.lte !== undefined ? options.lte : options.lt !== undefined ? options.lt : undefined\n const lowerExclusive = options.gte === undefined\n const upperExclusive = options.lte === undefined\n\n if (lower !== undefined && upper !== undefined) {\n return IDBKeyRange.bound(lower, upper, lowerExclusive, upperExclusive)\n } else if (lower !== undefined) {\n return IDBKeyRange.lowerBound(lower, lowerExclusive)\n } else if (upper !== undefined) {\n return IDBKeyRange.upperBound(upper, upperExclusive)\n } else {\n return null\n }\n}\n","'use strict'\n\nconst textEncoder = new TextEncoder()\n\nmodule.exports = function (data) {\n if (data instanceof Uint8Array) {\n return data\n } else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data)\n } else {\n // Non-binary data stored with an old version (level-js < 5.0.0)\n return textEncoder.encode(data)\n }\n}\n","'use strict'\n\nconst { AbstractIterator } = require('abstract-level')\nconst createKeyRange = require('./util/key-range')\nconst deserialize = require('./util/deserialize')\n\nconst kCache = Symbol('cache')\nconst kFinished = Symbol('finished')\nconst kOptions = Symbol('options')\nconst kCurrentOptions = Symbol('currentOptions')\nconst kPosition = Symbol('position')\nconst kLocation = Symbol('location')\nconst kFirst = Symbol('first')\nconst emptyOptions = {}\n\nclass Iterator extends AbstractIterator {\n constructor (db, location, options) {\n super(db, options)\n\n this[kCache] = []\n this[kFinished] = this.limit === 0\n this[kOptions] = options\n this[kCurrentOptions] = { ...options }\n this[kPosition] = undefined\n this[kLocation] = location\n this[kFirst] = true\n }\n\n // Note: if called by _all() then size can be Infinity. This is an internal\n // detail; by design AbstractIterator.nextv() does not support Infinity.\n _nextv (size, options, callback) {\n this[kFirst] = false\n\n if (this[kFinished]) {\n return this.nextTick(callback, null, [])\n } else if (this[kCache].length > 0) {\n // TODO: mixing next and nextv is not covered by test suite\n size = Math.min(size, this[kCache].length)\n return this.nextTick(callback, null, this[kCache].splice(0, size))\n }\n\n // Adjust range by what we already visited\n if (this[kPosition] !== undefined) {\n if (this[kOptions].reverse) {\n this[kCurrentOptions].lt = this[kPosition]\n this[kCurrentOptions].lte = undefined\n } else {\n this[kCurrentOptions].gt = this[kPosition]\n this[kCurrentOptions].gte = undefined\n }\n }\n\n let keyRange\n\n try {\n keyRange = createKeyRange(this[kCurrentOptions])\n } catch (_) {\n // The lower key is greater than the upper key.\n // IndexedDB throws an error, but we'll just return 0 results.\n this[kFinished] = true\n return this.nextTick(callback, null, [])\n }\n\n const transaction = this.db.db.transaction([this[kLocation]], 'readonly')\n const store = transaction.objectStore(this[kLocation])\n const entries = []\n\n if (!this[kOptions].reverse) {\n let keys\n let values\n\n const complete = () => {\n // Wait for both requests to complete\n if (keys === undefined || values === undefined) return\n\n const length = Math.max(keys.length, values.length)\n\n if (length === 0 || size === Infinity) {\n this[kFinished] = true\n } else {\n this[kPosition] = keys[length - 1]\n }\n\n // Resize\n entries.length = length\n\n // Merge keys and values\n for (let i = 0; i < length; i++) {\n const key = keys[i]\n const value = values[i]\n\n entries[i] = [\n this[kOptions].keys && key !== undefined ? deserialize(key) : undefined,\n this[kOptions].values && value !== undefined ? deserialize(value) : undefined\n ]\n }\n\n maybeCommit(transaction)\n }\n\n // If keys were not requested and size is Infinity, we don't have to keep\n // track of position and can thus skip getting keys.\n if (this[kOptions].keys || size < Infinity) {\n store.getAllKeys(keyRange, size < Infinity ? size : undefined).onsuccess = (ev) => {\n keys = ev.target.result\n complete()\n }\n } else {\n keys = []\n this.nextTick(complete)\n }\n\n if (this[kOptions].values) {\n store.getAll(keyRange, size < Infinity ? size : undefined).onsuccess = (ev) => {\n values = ev.target.result\n complete()\n }\n } else {\n values = []\n this.nextTick(complete)\n }\n } else {\n // Can't use getAll() in reverse, so use a slower cursor that yields one item at a time\n // TODO: test if all target browsers support openKeyCursor\n const method = !this[kOptions].values && store.openKeyCursor ? 'openKeyCursor' : 'openCursor'\n\n store[method](keyRange, 'prev').onsuccess = (ev) => {\n const cursor = ev.target.result\n\n if (cursor) {\n const { key, value } = cursor\n this[kPosition] = key\n\n entries.push([\n this[kOptions].keys && key !== undefined ? deserialize(key) : undefined,\n this[kOptions].values && value !== undefined ? deserialize(value) : undefined\n ])\n\n if (entries.length < size) {\n cursor.continue()\n } else {\n maybeCommit(transaction)\n }\n } else {\n this[kFinished] = true\n }\n }\n }\n\n // If an error occurs (on the request), the transaction will abort.\n transaction.onabort = () => {\n callback(transaction.error || new Error('aborted by user'))\n callback = null\n }\n\n transaction.oncomplete = () => {\n callback(null, entries)\n callback = null\n }\n }\n\n _next (callback) {\n if (this[kCache].length > 0) {\n const [key, value] = this[kCache].shift()\n this.nextTick(callback, null, key, value)\n } else if (this[kFinished]) {\n this.nextTick(callback)\n } else {\n let size = Math.min(100, this.limit - this.count)\n\n if (this[kFirst]) {\n // It's common to only want one entry initially or after a seek()\n this[kFirst] = false\n size = 1\n }\n\n this._nextv(size, emptyOptions, (err, entries) => {\n if (err) return callback(err)\n this[kCache] = entries\n this._next(callback)\n })\n }\n }\n\n _all (options, callback) {\n this[kFirst] = false\n\n // TODO: mixing next and all is not covered by test suite\n const cache = this[kCache].splice(0, this[kCache].length)\n const size = this.limit - this.count - cache.length\n\n if (size <= 0) {\n return this.nextTick(callback, null, cache)\n }\n\n this._nextv(size, emptyOptions, (err, entries) => {\n if (err) return callback(err)\n if (cache.length > 0) entries = cache.concat(entries)\n callback(null, entries)\n })\n }\n\n _seek (target, options) {\n this[kFirst] = true\n this[kCache] = []\n this[kFinished] = false\n this[kPosition] = undefined\n\n // TODO: not covered by test suite\n this[kCurrentOptions] = { ...this[kOptions] }\n\n let keyRange\n\n try {\n keyRange = createKeyRange(this[kOptions])\n } catch (_) {\n this[kFinished] = true\n return\n }\n\n if (keyRange !== null && !keyRange.includes(target)) {\n this[kFinished] = true\n } else if (this[kOptions].reverse) {\n this[kCurrentOptions].lte = target\n } else {\n this[kCurrentOptions].gte = target\n }\n }\n}\n\nexports.Iterator = Iterator\n\nfunction maybeCommit (transaction) {\n // Commit (meaning close) now instead of waiting for auto-commit\n if (typeof transaction.commit === 'function') {\n transaction.commit()\n }\n}\n","'use strict'\n\nmodule.exports = function clear (db, location, keyRange, options, callback) {\n if (options.limit === 0) return db.nextTick(callback)\n\n const transaction = db.db.transaction([location], 'readwrite')\n const store = transaction.objectStore(location)\n let count = 0\n\n transaction.oncomplete = function () {\n callback()\n }\n\n transaction.onabort = function () {\n callback(transaction.error || new Error('aborted by user'))\n }\n\n // A key cursor is faster (skips reading values) but not supported by IE\n // TODO: we no longer support IE. Test others\n const method = store.openKeyCursor ? 'openKeyCursor' : 'openCursor'\n const direction = options.reverse ? 'prev' : 'next'\n\n store[method](keyRange, direction).onsuccess = function (ev) {\n const cursor = ev.target.result\n\n if (cursor) {\n // Wait for a request to complete before continuing, saving CPU.\n store.delete(cursor.key).onsuccess = function () {\n if (options.limit <= 0 || ++count < options.limit) {\n cursor.continue()\n }\n }\n }\n }\n}\n","/* global indexedDB */\n\n'use strict'\n\nconst { AbstractLevel } = require('abstract-level')\nconst ModuleError = require('module-error')\nconst parallel = require('run-parallel-limit')\nconst { fromCallback } = require('catering')\nconst { Iterator } = require('./iterator')\nconst deserialize = require('./util/deserialize')\nconst clear = require('./util/clear')\nconst createKeyRange = require('./util/key-range')\n\n// Keep as-is for compatibility with existing level-js databases\nconst DEFAULT_PREFIX = 'level-js-'\n\nconst kIDB = Symbol('idb')\nconst kNamePrefix = Symbol('namePrefix')\nconst kLocation = Symbol('location')\nconst kVersion = Symbol('version')\nconst kStore = Symbol('store')\nconst kOnComplete = Symbol('onComplete')\nconst kPromise = Symbol('promise')\n\nclass BrowserLevel extends AbstractLevel {\n constructor (location, options, _) {\n // To help migrating to abstract-level\n if (typeof options === 'function' || typeof _ === 'function') {\n throw new ModuleError('The levelup-style callback argument has been removed', {\n code: 'LEVEL_LEGACY'\n })\n }\n\n const { prefix, version, ...forward } = options || {}\n\n super({\n encodings: { view: true },\n snapshots: false,\n createIfMissing: false,\n errorIfExists: false,\n seek: true\n }, forward)\n\n if (typeof location !== 'string') {\n throw new Error('constructor requires a location string argument')\n }\n\n // TODO (next major): remove default prefix\n this[kLocation] = location\n this[kNamePrefix] = prefix == null ? DEFAULT_PREFIX : prefix\n this[kVersion] = parseInt(version || 1, 10)\n this[kIDB] = null\n }\n\n get location () {\n return this[kLocation]\n }\n\n get namePrefix () {\n return this[kNamePrefix]\n }\n\n get version () {\n return this[kVersion]\n }\n\n // Exposed for backwards compat and unit tests\n get db () {\n return this[kIDB]\n }\n\n get type () {\n return 'browser-level'\n }\n\n _open (options, callback) {\n const req = indexedDB.open(this[kNamePrefix] + this[kLocation], this[kVersion])\n\n req.onerror = function () {\n callback(req.error || new Error('unknown error'))\n }\n\n req.onsuccess = () => {\n this[kIDB] = req.result\n callback()\n }\n\n req.onupgradeneeded = (ev) => {\n const db = ev.target.result\n\n if (!db.objectStoreNames.contains(this[kLocation])) {\n db.createObjectStore(this[kLocation])\n }\n }\n }\n\n [kStore] (mode) {\n const transaction = this[kIDB].transaction([this[kLocation]], mode)\n return transaction.objectStore(this[kLocation])\n }\n\n [kOnComplete] (request, callback) {\n const transaction = request.transaction\n\n // Take advantage of the fact that a non-canceled request error aborts\n // the transaction. I.e. no need to listen for \"request.onerror\".\n transaction.onabort = function () {\n callback(transaction.error || new Error('aborted by user'))\n }\n\n transaction.oncomplete = function () {\n callback(null, request.result)\n }\n }\n\n _get (key, options, callback) {\n const store = this[kStore]('readonly')\n let req\n\n try {\n req = store.get(key)\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, function (err, value) {\n if (err) return callback(err)\n\n if (value === undefined) {\n return callback(new ModuleError('Entry not found', {\n code: 'LEVEL_NOT_FOUND'\n }))\n }\n\n callback(null, deserialize(value))\n })\n }\n\n _getMany (keys, options, callback) {\n const store = this[kStore]('readonly')\n const tasks = keys.map((key) => (next) => {\n let request\n\n try {\n request = store.get(key)\n } catch (err) {\n return next(err)\n }\n\n request.onsuccess = () => {\n const value = request.result\n next(null, value === undefined ? value : deserialize(value))\n }\n\n request.onerror = (ev) => {\n ev.stopPropagation()\n next(request.error)\n }\n })\n\n parallel(tasks, 16, callback)\n }\n\n _del (key, options, callback) {\n const store = this[kStore]('readwrite')\n let req\n\n try {\n req = store.delete(key)\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, callback)\n }\n\n _put (key, value, options, callback) {\n const store = this[kStore]('readwrite')\n let req\n\n try {\n // Will throw a DataError or DataCloneError if the environment\n // does not support serializing the key or value respectively.\n req = store.put(value, key)\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, callback)\n }\n\n // TODO: implement key and value iterators\n _iterator (options) {\n return new Iterator(this, this[kLocation], options)\n }\n\n _batch (operations, options, callback) {\n const store = this[kStore]('readwrite')\n const transaction = store.transaction\n let index = 0\n let error\n\n transaction.onabort = function () {\n callback(error || transaction.error || new Error('aborted by user'))\n }\n\n transaction.oncomplete = function () {\n callback()\n }\n\n // Wait for a request to complete before making the next, saving CPU.\n function loop () {\n const op = operations[index++]\n const key = op.key\n\n let req\n\n try {\n req = op.type === 'del' ? store.delete(key) : store.put(op.value, key)\n } catch (err) {\n error = err\n transaction.abort()\n return\n }\n\n if (index < operations.length) {\n req.onsuccess = loop\n } else if (typeof transaction.commit === 'function') {\n // Commit now instead of waiting for auto-commit\n transaction.commit()\n }\n }\n\n loop()\n }\n\n _clear (options, callback) {\n let keyRange\n let req\n\n try {\n keyRange = createKeyRange(options)\n } catch (e) {\n // The lower key is greater than the upper key.\n // IndexedDB throws an error, but we'll just do nothing.\n return this.nextTick(callback)\n }\n\n if (options.limit >= 0) {\n // IDBObjectStore#delete(range) doesn't have such an option.\n // Fall back to cursor-based implementation.\n return clear(this, this[kLocation], keyRange, options, callback)\n }\n\n try {\n const store = this[kStore]('readwrite')\n req = keyRange ? store.delete(keyRange) : store.clear()\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, callback)\n }\n\n _close (callback) {\n this[kIDB].close()\n this.nextTick(callback)\n }\n}\n\nBrowserLevel.destroy = function (location, prefix, callback) {\n if (typeof prefix === 'function') {\n callback = prefix\n prefix = DEFAULT_PREFIX\n }\n\n callback = fromCallback(callback, kPromise)\n const request = indexedDB.deleteDatabase(prefix + location)\n\n request.onsuccess = function () {\n callback()\n }\n\n request.onerror = function (err) {\n callback(err)\n }\n\n return callback[kPromise]\n}\n\nexports.BrowserLevel = BrowserLevel\n","exports.Level = require('browser-level').BrowserLevel\n","/**\n * @namespace Storage-Level\n * @memberof module:Storage\n * @description\n * LevelStorage stores data to a Level-compatible database.\n *\n * To learn more about Level, see {@link https://github.com/Level/level}.\n */\nimport { Level } from 'level'\n\nconst defaultPath = './level'\nconst defaultValueEncoding = 'view'\n\n/**\n * Creates an instance of LevelStorage.\n * @function\n * @param {Object} [params={}] One or more parameters for configuring\n * LevelStorage.\n * @param {string} [params.path=defaultPath] The Level path.\n * @param {string} [params.valueEncoding=defaultValueEncoding] Value encoding.\n * @return {module:Storage.Storage-Level} An instance of LevelStorage.\n * @memberof module:Storage\n * @instance\n */\nconst LevelStorage = async ({ path, valueEncoding } = {}) => {\n path = path || defaultPath\n valueEncoding = valueEncoding || defaultValueEncoding\n\n const db = new Level(path, { valueEncoding, passive: true })\n await db.open()\n\n /**\n * Puts data to Level.\n * @function\n * @param {string} hash The hash of the data to put.\n * @param {*} data The data to store.\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const put = async (hash, value) => {\n await db.put(hash, value)\n }\n\n /**\n * Deletes data from Level.\n * @function\n * @param {string} hash The hash of the data to delete.\n * @param {*} data The data to store.\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const del = async (hash) => {\n await db.del(hash)\n }\n\n /**\n * Gets data from Level.\n * @function\n * @param {string} hash The hash of the data to get.\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const get = async (hash) => {\n try {\n const value = await db.get(hash)\n if (value) {\n return value\n }\n } catch (e) {\n // LEVEL_NOT_FOUND (ie. key not found)\n }\n }\n\n /**\n * Iterates over records stored in Level.\n * @function\n * @yields [string, string] The next key/value pair from Level.\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const iterator = async function * ({ amount, reverse } = {}) {\n const iteratorOptions = { limit: amount || -1, reverse: reverse || false }\n for await (const [key, value] of db.iterator(iteratorOptions)) {\n yield [key, value]\n }\n }\n const merge = async (other) => {}\n\n /**\n * Clears the contents of the Level db.\n * @function\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const clear = async () => {\n await db.clear()\n }\n\n /**\n * Closes the Level db.\n * @function\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const close = async () => {\n await db.close()\n }\n\n return {\n put,\n del,\n get,\n iterator,\n merge,\n clear,\n close\n }\n}\n\nexport default LevelStorage\n","/**\n * @namespace Storage-LRU\n * @memberof module:Storage\n * @description\n * LRUStorage stores data in a Least Recently Used (LRU) cache.\n */\nimport LRU from 'lru'\n\nconst defaultSize = 1000000\n\n/**\n * Creates an instance of LRUStorage.\n * @function\n * @param {Object} [params={}] One or more parameters for configuring\n * LRUStorage.\n * @param {string} [params.size=defaultSize] The number of elements to store.\n * @return {module:Storage.Storage-LRU} An instance of LRUStorage.\n * @memberof module:Storage\n * @instance\n */\nconst LRUStorage = async ({ size } = {}) => {\n let lru = new LRU(size || defaultSize)\n\n /**\n * Puts data to the LRU cache.\n * @function\n * @param {string} hash The hash of the data to put.\n * @param {*} data The data to store.\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const put = async (hash, data) => {\n lru.set(hash, data)\n }\n\n /**\n * Deletes data from the LRU cache.\n * @function\n * @param {string} hash The hash of the data to delete.\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const del = async (hash) => {\n lru.remove(hash)\n }\n\n /**\n * Gets data from the LRU cache.\n * @function\n * @param {string} hash The hash of the data to get.\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const get = async (hash) => {\n return lru.get(hash)\n }\n\n /**\n * Iterates over records stored in the LRU cache.\n * @function\n * @yields [string, string] The next key/value pair from the LRU cache.\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const iterator = async function * () {\n for await (const key of lru.keys) {\n const value = lru.get(key)\n yield [key, value]\n }\n }\n\n /**\n * Merges data from another source into the LRU cache.\n * @function\n * @param {module:Storage} other Another storage instance.\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const merge = async (other) => {\n if (other) {\n for await (const [key, value] of other.iterator()) {\n lru.set(key, value)\n }\n }\n }\n\n /**\n * Clears the contents of the LRU cache.\n * @function\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const clear = async () => {\n lru = new LRU(size || defaultSize)\n }\n\n const close = async () => {}\n\n return {\n put,\n del,\n get,\n iterator,\n merge,\n clear,\n close\n }\n}\n\nexport default LRUStorage\n","/**\n * @module Database\n * @description\n * Database is the base class for OrbitDB data stores and handles all lower\n * level add operations and database sync-ing using IPFS.\n */\nimport { EventEmitter } from 'events'\nimport PQueue from 'p-queue'\nimport Sync from './sync.js'\nimport { Log, Entry } from './oplog/index.js'\nimport { ComposedStorage, LRUStorage, IPFSBlockStorage, LevelStorage } from './storage/index.js'\nimport pathJoin from './utils/path-join.js'\n\nconst defaultReferencesCount = 16\nconst defaultCacheSize = 1000\n\n/**\n * Creates an instance of Database.\n * @function\n * @param {Object} params One or more parameters for configuring Database.\n * @param {IPFS} params.ipfs An IPFS instance.\n * @param {Identity} [params.identity] An Identity instance.\n * @param {string} [params.address] The address of the database.\n * @param {string} [params.name] The name of the database.\n * @param {module:AccessControllers} [params.access] An AccessController\n * instance.\n * @param {string} [params.directory] A location for storing Database-related\n * data. Defaults to ./orbitdb/[params.address].\n * @param {*} [params.meta={}] The database's metadata.\n * @param {module:Storage} [params.headsStorage] A compatible storage\n * instance for storing log heads. Defaults to ComposedStorage.\n * @param {module:Storage} [params.entryStorage] A compatible storage instance\n * for storing log entries. Defaults to ComposedStorage.\n * @param {module:Storage} [params.indexStorage] A compatible storage\n * instance for storing an index of log entries. Defaults to ComposedStorage.\n * @param {number} [params.referencesCount=16] The maximum distance between\n * references to other entries.\n * @param {boolean} [params.syncAutomatically=false] If true, sync databases\n * automatically. Otherwise, false.\n * @param {function} [params.onUpdate] A function callback. Fired when an\n * entry is added to the oplog.\n * @return {module:Databases~Database} An instance of Database.\n * @instance\n */\nconst Database = async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate }) => {\n /**\n * @namespace module:Databases~Database\n * @description The instance returned by {@link module:Database~Database}.\n */\n\n /**\n * Event fired when an update occurs.\n * @event module:Databases~Database#update\n * @param {module:Entry} entry An entry.\n * @example\n * database.events.on('update', (entry) => ...)\n */\n\n /**\n * Event fired when a close occurs.\n * @event module:Databases~Database#close\n * @example\n * database.events.on('close', () => ...)\n */\n\n /**\n * Event fired when a drop occurs.\n * @event module:Databases~Database#drop\n * @example\n * database.events.on('drop', () => ...)\n */\n\n /** Events inherited from Sync */\n\n /**\n * Event fired when when a peer has connected to the database.\n * @event module:Databases~Database#join\n * @param {PeerID} peerId PeerID of the peer who connected\n * @param {Entry[]} heads An array of Log entries\n * @example\n * database.events.on('join', (peerID, heads) => ...)\n */\n\n /**\n * Event fired when a peer has disconnected from the database.\n * @event module:Databases~Database#leave\n * @param {PeerID} peerId PeerID of the peer who disconnected\n * @example\n * database.events.on('leave', (peerID) => ...)\n */\n\n directory = pathJoin(directory || './orbitdb', `./${address}/`)\n meta = meta || {}\n referencesCount = Number(referencesCount) > -1 ? referencesCount : defaultReferencesCount\n\n entryStorage = entryStorage || await ComposedStorage(\n await LRUStorage({ size: defaultCacheSize }),\n await IPFSBlockStorage({ ipfs, pin: true })\n )\n\n headsStorage = headsStorage || await ComposedStorage(\n await LRUStorage({ size: defaultCacheSize }),\n await LevelStorage({ path: pathJoin(directory, '/log/_heads/') })\n )\n\n indexStorage = indexStorage || await ComposedStorage(\n await LRUStorage({ size: defaultCacheSize }),\n await LevelStorage({ path: pathJoin(directory, '/log/_index/') })\n )\n\n const log = await Log(identity, { logId: address, access, entryStorage, headsStorage, indexStorage })\n\n const events = new EventEmitter()\n\n const queue = new PQueue({ concurrency: 1 })\n\n /**\n * Adds an operation to the oplog.\n * @function addOperation\n * @param {*} op Some operation to add to the oplog.\n * @return {string} The hash of the operation.\n * @memberof module:Databases~Database\n * @instance\n * @async\n */\n const addOperation = async (op) => {\n const task = async () => {\n const entry = await log.append(op, { referencesCount })\n await sync.add(entry)\n if (onUpdate) {\n await onUpdate(log, entry)\n }\n events.emit('update', entry)\n return entry.hash\n }\n const hash = await queue.add(task)\n await queue.onIdle()\n return hash\n }\n\n const applyOperation = async (bytes) => {\n const task = async () => {\n const entry = await Entry.decode(bytes)\n if (entry) {\n const updated = await log.joinEntry(entry)\n if (updated) {\n if (onUpdate) {\n await onUpdate(log, entry)\n }\n events.emit('update', entry)\n }\n }\n }\n await queue.add(task)\n }\n\n /**\n * Closes the database, stopping sync and closing the oplog.\n * @memberof module:Databases~Database\n * @instance\n * @async\n */\n const close = async () => {\n await sync.stop()\n await queue.onIdle()\n await log.close()\n if (access && access.close) {\n await access.close()\n }\n events.emit('close')\n }\n\n /**\n * Drops the database, clearing the oplog.\n * @memberof module:Databases~Database\n * @instance\n * @async\n */\n const drop = async () => {\n await queue.onIdle()\n await log.clear()\n if (access && access.drop) {\n await access.drop()\n }\n events.emit('drop')\n }\n\n const sync = await Sync({ ipfs, log, events, onSynced: applyOperation, start: syncAutomatically })\n\n return {\n /**\n * The address of the database.\n * @†ype string\n * @memberof module:Databases~Database\n * @instance\n */\n address,\n /**\n * The name of the database.\n * @†ype string\n * @memberof module:Databases~Database\n * @instance\n */\n name,\n identity,\n meta,\n close,\n drop,\n addOperation,\n /**\n * The underlying [operations log]{@link module:Log~Log} of the database.\n * @†ype {module:Log~Log}\n * @memberof module:Databases~Database\n * @instance\n */\n log,\n /**\n * A [sync]{@link module:Sync~Sync} instance of the database.\n * @†ype {module:Sync~Sync}\n * @memberof module:Databases~Database\n * @instance\n */\n sync,\n /**\n * Set of currently connected peers for this Database instance.\n * @†ype Set\n * @memberof module:Databases~Database\n * @instance\n */\n peers: sync.peers,\n /**\n * Event emitter that emits Database changes. See Events section for details.\n * @†ype EventEmitter\n * @memberof module:Databases~Database\n * @instance\n */\n events,\n /**\n * The [access controller]{@link module:AccessControllers} instance of the database.\n * @memberof module:Databases~Database\n * @instance\n */\n access\n }\n}\n\nexport default Database\n","/**\n * @namespace Databases-Documents\n * @memberof module:Databases\n * @description Documents database.\n * @example Create documents db with custom index\n * import { createHelia } from 'helia'\n * import { createOrbitDB, Documents } from 'orbitdb'\n *\n * const ipfs = createHelia()\n * const orbitdb = await createOrbitDB({ ipfs })\n * const db = await orbitdb.open('my-docs', { Database: Documents({ indexBy: 'myCustomId'} ) }\n *\n * @augments module:Databases~Database\n */\nimport Database from '../database.js'\n\nconst type = 'documents'\n\nconst DefaultOptions = { indexBy: '_id' }\n\n/**\n * Defines a Documents database.\n * @param {Object} options Various options for configuring the Document store.\n * @param {string} [options.indexBy=_id] An index.\n * @return {module:Databases.Databases-Documents} A Documents function.\n * @memberof module:Databases\n */\nconst Documents = ({ indexBy } = DefaultOptions) => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate }) => {\n const database = await Database({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically })\n\n const { addOperation, log } = database\n\n /**\n * Stores a document to the store.\n * @function\n * @param {Object} doc An object representing a key/value list of fields.\n * @return {string} The hash of the new oplog entry.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const put = async (doc) => {\n const key = doc[indexBy]\n\n if (!key) { throw new Error(`The provided document doesn't contain field '${indexBy}'`) }\n\n return addOperation({ op: 'PUT', key, value: doc })\n }\n\n /**\n * Deletes a document from the store.\n * @function\n * @param {string} key The key of the doc to delete.\n * @return {string} The hash of the new oplog entry.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const del = async (key) => {\n if (!await get(key)) { throw new Error(`No document with key '${key}' in the database`) }\n\n return addOperation({ op: 'DEL', key, value: null })\n }\n\n /**\n * Gets a document from the store by key.\n * @function\n * @param {string} key The key of the doc to get.\n * @return {Object} The doc corresponding to key or null.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const get = async (key) => {\n for await (const doc of iterator()) {\n if (key === doc.key) {\n return doc\n }\n }\n }\n\n /**\n * Queries the document store for documents matching mapper filters.\n * @function\n * @param {function(Object)} findFn A function for querying for specific\n * results.\n *\n * The findFn function's signature takes the form `function(doc)` where doc\n * is a document's value property. The function should return true if the\n * document should be included in the results, false otherwise.\n * @return {Array} Found documents.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const query = async (findFn) => {\n const results = []\n\n for await (const doc of iterator()) {\n if (findFn(doc.value)) {\n results.push(doc.value)\n }\n }\n\n return results\n }\n\n /**\n * Iterates over documents.\n * @function\n * @param {Object} [filters={}] Various filters to apply to the iterator.\n * @param {string} [filters.amount=-1] The number of results to fetch.\n * @yields [string, string, string] The next document as hash/key/value.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const iterator = async function * ({ amount } = {}) {\n const keys = {}\n let count = 0\n for await (const entry of log.iterator()) {\n const { op, key, value } = entry.payload\n if (op === 'PUT' && !keys[key]) {\n keys[key] = true\n count++\n const hash = entry.hash\n yield { hash, key, value }\n } else if (op === 'DEL' && !keys[key]) {\n keys[key] = true\n }\n if (count >= amount) {\n break\n }\n }\n }\n\n /**\n * Returns all documents.\n * @function\n * @return [][string, string, string] An array of documents as hash/key\n * value entries.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const all = async () => {\n const values = []\n for await (const entry of iterator()) {\n values.unshift(entry)\n }\n return values\n }\n\n return {\n ...database,\n type,\n put,\n del,\n get,\n iterator,\n query,\n indexBy,\n all\n }\n}\n\nDocuments.type = type\n\nexport default Documents\n","/**\n * @namespace Databases-Events\n * @memberof module:Databases\n * @description\n * Events database is an immutable, append-only event log database.\n *\n * @augments module:Databases~Database\n */\nimport Database from '../database.js'\n\nconst type = 'events'\n\n/**\n * Defines an Events database.\n * @return {module:Databases.Databases-Events} A Events function.\n * @memberof module:Databases\n */\nconst Events = () => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate }) => {\n const database = await Database({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate })\n\n const { addOperation, log } = database\n\n /**\n * Adds an event to the store.\n * @function\n * @param {*} value The event to be added.\n * @return {string} The hash of the new oplog entry.\n * @memberof module:Databases.Databases-Events\n * @instance\n */\n const add = async (value) => {\n return addOperation({ op: 'ADD', key: null, value })\n }\n\n /**\n * Gets an event from the store by hash.\n * @function\n * @param {string} hash The hash of the event to get.\n * @return {*} The value corresponding to hash or null.\n * @memberof module:Databases.Databases-Events\n * @instance\n */\n const get = async (hash) => {\n const entry = await log.get(hash)\n return entry.payload.value\n }\n\n /**\n * Iterates over events.\n * @function\n * @param {Object} [filters={}] Various filters to apply to the iterator.\n * @param {string} [filters.gt] All events which are greater than the\n * given hash.\n * @param {string} [filters.gte] All events which are greater than or equal\n * to the given hash.\n * @param {string} [filters.lt] All events which are less than the given\n * hash.\n * @param {string} [filters.lte] All events which are less than or equal to\n * the given hash.\n * @param {string} [filters.amount=-1] The number of results to fetch.\n * @yields [string, string] The next event as hash/value.\n * @memberof module:Databases.Databases-Events\n * @instance\n */\n const iterator = async function * ({ gt, gte, lt, lte, amount } = {}) {\n const it = log.iterator({ gt, gte, lt, lte, amount })\n for await (const event of it) {\n const hash = event.hash\n const value = event.payload.value\n yield { hash, value }\n }\n }\n\n /**\n * Returns all events.\n * @function\n * @return [][string, string] An array of events as hash/value entries.\n * @memberof module:Databases.Databases-Events\n * @instance\n */\n const all = async () => {\n const values = []\n for await (const entry of iterator()) {\n values.unshift(entry)\n }\n return values\n }\n\n return {\n ...database,\n type,\n add,\n get,\n iterator,\n all\n }\n}\n\nEvents.type = type\n\nexport default Events\n","/**\n * @namespace Databases-KeyValue\n * @memberof module:Databases\n * @description\n * Key-Value database.\n *\n * @augments module:Databases~Database\n */\nimport Database from '../database.js'\n\nconst type = 'keyvalue'\n\n/**\n * Defines a KeyValue database.\n * @return {module:Databases.Databases-KeyValue} A KeyValue function.\n * @memberof module:Databases\n */\nconst KeyValue = () => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate }) => {\n const database = await Database({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate })\n\n const { addOperation, log } = database\n\n /**\n * Stores a key/value pair to the store.\n * @function\n * @param {string} key The key to store.\n * @param {*} value The value to store.\n * @return {string} The hash of the new oplog entry.\n * @memberof module:Databases.Databases-KeyValue\n * @instance\n */\n const put = async (key, value) => {\n return addOperation({ op: 'PUT', key, value })\n }\n\n /**\n * Deletes a key/value pair from the store.\n * @function\n * @param {string} key The key of the key/value pair to delete.\n * @memberof module:Databases.Databases-KeyValue\n * @instance\n */\n const del = async (key) => {\n return addOperation({ op: 'DEL', key, value: null })\n }\n\n /**\n * Gets a value from the store by key.\n * @function\n * @param {string} key The key of the value to get.\n * @return {*} The value corresponding to key or null.\n * @memberof module:Databases.Databases-KeyValue\n * @instance\n */\n const get = async (key) => {\n for await (const entry of log.traverse()) {\n const { op, key: k, value } = entry.payload\n if (op === 'PUT' && k === key) {\n return value\n } else if (op === 'DEL' && k === key) {\n return\n }\n }\n }\n\n /**\n * Iterates over keyvalue pairs.\n * @function\n * @param {Object} [filters={}] Various filters to apply to the iterator.\n * @param {string} [filters.amount=-1] The number of results to fetch.\n * @yields [string, string, string] The next key/value as key/value/hash.\n * @memberof module:Databases.Databases-KeyValue\n * @instance\n */\n const iterator = async function * ({ amount } = {}) {\n const keys = {}\n let count = 0\n for await (const entry of log.traverse()) {\n const { op, key, value } = entry.payload\n if (op === 'PUT' && !keys[key]) {\n keys[key] = true\n count++\n const hash = entry.hash\n yield { key, value, hash }\n } else if (op === 'DEL' && !keys[key]) {\n keys[key] = true\n }\n if (count >= amount) {\n break\n }\n }\n }\n\n /**\n * Returns all key/value pairs.\n * @function\n * @return [][string, string, string] An array of key/value pairs as\n * key/value/hash entries.\n * @memberof module:Databases.Databases-KeyValue\n * @instance\n */\n const all = async () => {\n const values = []\n for await (const entry of iterator()) {\n values.unshift(entry)\n }\n return values\n }\n\n return {\n ...database,\n type,\n put,\n set: put, // Alias for put()\n del,\n get,\n iterator,\n all\n }\n}\n\nKeyValue.type = type\n\nexport default KeyValue\n","/**\n * @module Databases\n * @description\n * Provides various database structures for storing data.\n */\nimport Documents from './documents.js'\nimport Events from './events.js'\nimport KeyValue from './keyvalue.js'\nimport KeyValueIndexed from './keyvalue-indexed.js'\n/**\n\n * An array of available database types.\n * @name databaseTypes\n * @†ype []\n * @return [] An array of database types.\n * @memberof module:Databases\n */\nconst databaseTypes = {}\n\n/**\n * Add a new database type.\n * @example\n * import { useDatabaseType } from 'orbitdb'\n * const CustomDBTypeModule = async (params) => {\n * const database = await Database(...params)\n * ...\n * }\n * useDatabaseType(CustomDBTypeModule)\n * @function useDatabaseType\n * @param {module:Databases} database A Database-compatible module.\n * @throws Database type does not contain required field \\'type\\'.\n * @throws Database type '${store.type}' already added.\n * @memberof module:Databases\n */\nconst useDatabaseType = (database) => {\n if (!database.type) {\n throw new Error('Database type does not contain required field \\'type\\'.')\n }\n\n databaseTypes[database.type] = database\n}\n\nconst getDatabaseType = (type) => {\n if (!type) {\n throw new Error('Type not specified')\n }\n\n if (!databaseTypes[type]) {\n throw new Error(`Unsupported database type: '${type}'`)\n }\n\n return databaseTypes[type]\n}\n\nuseDatabaseType(Events)\nuseDatabaseType(Documents)\nuseDatabaseType(KeyValue)\n\nexport { useDatabaseType, getDatabaseType, Documents, Events, KeyValue, KeyValueIndexed }\n","export const connectionSymbol = Symbol.for('@libp2p/connection');\nexport function isConnection(other) {\n return other != null && Boolean(other[connectionSymbol]);\n}\n//# sourceMappingURL=index.js.map","/**\n * Any object that implements this Symbol as a property should return a\n * ContentRouting instance as the property value, similar to how\n * `Symbol.Iterable` can be used to return an `Iterable` from an `Iterator`.\n *\n * @example\n *\n * ```TypeScript\n * import { contentRoutingSymbol, ContentRouting } from '@libp2p/content-routing'\n *\n * class MyContentRouter implements ContentRouting {\n * get [contentRoutingSymbol] () {\n * return this\n * }\n *\n * // ...other methods\n * }\n * ```\n */\nexport const contentRoutingSymbol = Symbol.for('@libp2p/content-routing');\n//# sourceMappingURL=index.js.map","/**\n * Any object that implements this Symbol as a property should return a\n * PeerDiscovery instance as the property value, similar to how\n * `Symbol.Iterable` can be used to return an `Iterable` from an `Iterator`.\n *\n * @example\n *\n * ```TypeScript\n * import { peerDiscovery, PeerDiscovery } from '@libp2p/peer-discovery'\n *\n * class MyPeerDiscoverer implements PeerDiscovery {\n * get [peerDiscovery] () {\n * return this\n * }\n *\n * // ...other methods\n * }\n * ```\n */\nexport const peerDiscoverySymbol = Symbol.for('@libp2p/peer-discovery');\n//# sourceMappingURL=index.js.map","export const peerIdSymbol = Symbol.for('@libp2p/peer-id');\nexport function isPeerId(other) {\n return other != null && Boolean(other[peerIdSymbol]);\n}\n//# sourceMappingURL=index.js.map","/**\n * Any object that implements this Symbol as a property should return a\n * PeerRouting instance as the property value, similar to how\n * `Symbol.Iterable` can be used to return an `Iterable` from an `Iterator`.\n *\n * @example\n *\n * ```TypeScript\n * import { peerRouting, PeerRouting } from '@libp2p/peer-routing'\n *\n * class MyPeerRouter implements PeerRouting {\n * get [peerRouting] () {\n * return this\n * }\n *\n * // ...other methods\n * }\n * ```\n */\nexport const peerRoutingSymbol = Symbol.for('@libp2p/peer-routing');\n//# sourceMappingURL=index.js.map","export const KEEP_ALIVE = 'keep-alive';\n//# sourceMappingURL=tags.js.map","/**\n * On the producing side:\n * * Build messages with the signature, key (from may be enough for certain inlineable public key types), from and seqno fields.\n *\n * On the consuming side:\n * * Enforce the fields to be present, reject otherwise.\n * * Propagate only if the fields are valid and signature can be verified, reject otherwise.\n */\nexport const StrictSign = 'StrictSign';\n/**\n * On the producing side:\n * * Build messages without the signature, key, from and seqno fields.\n * * The corresponding protobuf key-value pairs are absent from the marshalled message, not just empty.\n *\n * On the consuming side:\n * * Enforce the fields to be absent, reject otherwise.\n * * Propagate only if the fields are absent, reject otherwise.\n * * A message_id function will not be able to use the above fields, and should instead rely on the data field. A commonplace strategy is to calculate a hash.\n */\nexport const StrictNoSign = 'StrictNoSign';\nexport var TopicValidatorResult;\n(function (TopicValidatorResult) {\n /**\n * The message is considered valid, and it should be delivered and forwarded to the network\n */\n TopicValidatorResult[\"Accept\"] = \"accept\";\n /**\n * The message is neither delivered nor forwarded to the network\n */\n TopicValidatorResult[\"Ignore\"] = \"ignore\";\n /**\n * The message is considered invalid, and it should be rejected\n */\n TopicValidatorResult[\"Reject\"] = \"reject\";\n})(TopicValidatorResult || (TopicValidatorResult = {}));\n//# sourceMappingURL=index.js.map","export const transportSymbol = Symbol.for('@libp2p/transport');\nexport function isTransport(other) {\n return other != null && Boolean(other[transportSymbol]);\n}\n/**\n * Enum Transport Manager Fault Tolerance values\n */\nexport var FaultTolerance;\n(function (FaultTolerance) {\n /**\n * should be used for failing in any listen circumstance\n */\n FaultTolerance[FaultTolerance[\"FATAL_ALL\"] = 0] = \"FATAL_ALL\";\n /**\n * should be used for not failing when not listening\n */\n FaultTolerance[FaultTolerance[\"NO_FATAL\"] = 1] = \"NO_FATAL\";\n})(FaultTolerance || (FaultTolerance = {}));\n//# sourceMappingURL=index.js.map","/**\n * When this error is thrown it means an operation was aborted,\n * usually in response to the `abort` event being emitted by an\n * AbortSignal.\n */\nexport class AbortError extends Error {\n code;\n type;\n constructor(message = 'The operation was aborted') {\n super(message);\n this.name = 'AbortError';\n this.code = AbortError.code;\n this.type = AbortError.type;\n }\n static code = 'ABORT_ERR';\n static type = 'aborted';\n}\nexport class CodeError extends Error {\n code;\n props;\n constructor(message, code, props) {\n super(message);\n this.code = code;\n this.name = props?.name ?? 'CodeError';\n this.props = props ?? {}; // eslint-disable-line @typescript-eslint/consistent-type-assertions\n }\n}\nexport class AggregateCodeError extends AggregateError {\n code;\n props;\n constructor(errors, message, code, props) {\n super(errors, message);\n this.code = code;\n this.name = props?.name ?? 'AggregateCodeError';\n this.props = props ?? {}; // eslint-disable-line @typescript-eslint/consistent-type-assertions\n }\n}\nexport class UnexpectedPeerError extends Error {\n code;\n constructor(message = 'Unexpected Peer') {\n super(message);\n this.name = 'UnexpectedPeerError';\n this.code = UnexpectedPeerError.code;\n }\n static code = 'ERR_UNEXPECTED_PEER';\n}\nexport class InvalidCryptoExchangeError extends Error {\n code;\n constructor(message = 'Invalid crypto exchange') {\n super(message);\n this.name = 'InvalidCryptoExchangeError';\n this.code = InvalidCryptoExchangeError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_EXCHANGE';\n}\nexport class InvalidCryptoTransmissionError extends Error {\n code;\n constructor(message = 'Invalid crypto transmission') {\n super(message);\n this.name = 'InvalidCryptoTransmissionError';\n this.code = InvalidCryptoTransmissionError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_TRANSMISSION';\n}\n// Error codes\nexport const ERR_TIMEOUT = 'ERR_TIMEOUT';\nexport const ERR_INVALID_PARAMETERS = 'ERR_INVALID_PARAMETERS';\nexport const ERR_NOT_FOUND = 'ERR_NOT_FOUND';\nexport const ERR_INVALID_MESSAGE = 'ERR_INVALID_MESSAGE';\n//# sourceMappingURL=errors.js.map","import { setMaxListeners as nodeSetMaxListeners } from 'events';\n// create a setMaxListeners that doesn't break browser usage\nexport const setMaxListeners = (n, ...eventTargets) => {\n try {\n nodeSetMaxListeners(n, ...eventTargets);\n }\n catch {\n // swallow error, gulp\n }\n};\n//# sourceMappingURL=events.js.map","import { setMaxListeners } from './events.js';\n/**\n * An implementation of a typed event target\n * etc\n */\nexport class TypedEventEmitter extends EventTarget {\n #listeners = new Map();\n constructor() {\n super();\n // silence MaxListenersExceededWarning warning on Node.js, this is a red\n // herring almost all of the time\n setMaxListeners(Infinity, this);\n }\n listenerCount(type) {\n const listeners = this.#listeners.get(type);\n if (listeners == null) {\n return 0;\n }\n return listeners.length;\n }\n addEventListener(type, listener, options) {\n super.addEventListener(type, listener, options);\n let list = this.#listeners.get(type);\n if (list == null) {\n list = [];\n this.#listeners.set(type, list);\n }\n list.push({\n callback: listener,\n once: (options !== true && options !== false && options?.once) ?? false\n });\n }\n removeEventListener(type, listener, options) {\n super.removeEventListener(type.toString(), listener ?? null, options);\n let list = this.#listeners.get(type);\n if (list == null) {\n return;\n }\n list = list.filter(({ callback }) => callback !== listener);\n this.#listeners.set(type, list);\n }\n dispatchEvent(event) {\n const result = super.dispatchEvent(event);\n let list = this.#listeners.get(event.type);\n if (list == null) {\n return result;\n }\n list = list.filter(({ once }) => !once);\n this.#listeners.set(event.type, list);\n return result;\n }\n safeDispatchEvent(type, detail = {}) {\n return this.dispatchEvent(new CustomEvent(type, detail));\n }\n}\nexport const CustomEvent = globalThis.CustomEvent;\n//# sourceMappingURL=event-target.js.map","export function isStartable(obj) {\n return obj != null && typeof obj.start === 'function' && typeof obj.stop === 'function';\n}\nexport async function start(...objs) {\n const startables = [];\n for (const obj of objs) {\n if (isStartable(obj)) {\n startables.push(obj);\n }\n }\n await Promise.all(startables.map(async (s) => {\n if (s.beforeStart != null) {\n await s.beforeStart();\n }\n }));\n await Promise.all(startables.map(async (s) => {\n await s.start();\n }));\n await Promise.all(startables.map(async (s) => {\n if (s.afterStart != null) {\n await s.afterStart();\n }\n }));\n}\nexport async function stop(...objs) {\n const startables = [];\n for (const obj of objs) {\n if (isStartable(obj)) {\n startables.push(obj);\n }\n }\n await Promise.all(startables.map(async (s) => {\n if (s.beforeStop != null) {\n await s.beforeStop();\n }\n }));\n await Promise.all(startables.map(async (s) => {\n await s.stop();\n }));\n await Promise.all(startables.map(async (s) => {\n if (s.afterStop != null) {\n await s.afterStop();\n }\n }));\n}\n//# sourceMappingURL=startable.js.map","/**\n * @packageDocumentation\n *\n * Exports a `Libp2p` type for modules to use as a type argument.\n *\n * @example\n *\n * ```typescript\n * import type { Libp2p } from '@libp2p/interface'\n *\n * function doSomethingWithLibp2p (node: Libp2p) {\n * // ...\n * }\n * ```\n */\n/**\n * This symbol is used by libp2p services to define the capabilities they can\n * provide to other libp2p services.\n *\n * The service should define a property with this symbol as the key and the\n * value should be a string array of provided capabilities.\n */\nexport const serviceCapabilities = Symbol.for('@libp2p/service-capabilities');\n/**\n * This symbol is used by libp2p services to define the capabilities they\n * require from other libp2p services.\n *\n * The service should define a property with this symbol as the key and the\n * value should be a string array of required capabilities.\n */\nexport const serviceDependencies = Symbol.for('@libp2p/service-dependencies');\nexport * from './connection/index.js';\nexport * from './connection-encrypter/index.js';\nexport * from './connection-gater/index.js';\nexport * from './content-routing/index.js';\nexport * from './keys/index.js';\nexport * from './metrics/index.js';\nexport * from './peer-discovery/index.js';\nexport * from './peer-id/index.js';\nexport * from './peer-info/index.js';\nexport * from './peer-routing/index.js';\nexport * from './peer-store/index.js';\nexport * from './peer-store/tags.js';\nexport * from './pubsub/index.js';\nexport * from './record/index.js';\nexport * from './stream-handler/index.js';\nexport * from './stream-muxer/index.js';\nexport * from './topology/index.js';\nexport * from './transport/index.js';\nexport * from './errors.js';\nexport * from './event-target.js';\nexport * from './events.js';\nexport * from './startable.js';\n//# sourceMappingURL=index.js.map","/**\n * Node.js module for Forge.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2016 Digital Bazaar, Inc.\n */\nmodule.exports = {\n // default options\n options: {\n usePureJavaScript: false\n }\n};\n","/**\n * Base-N/Base-X encoding/decoding functions.\n *\n * Original implementation from base-x:\n * https://github.com/cryptocoinjs/base-x\n *\n * Which is MIT licensed:\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\nvar api = {};\nmodule.exports = api;\n\n// baseN alphabet indexes\nvar _reverseAlphabets = {};\n\n/**\n * BaseN-encodes a Uint8Array using the given alphabet.\n *\n * @param input the Uint8Array to encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the baseN-encoded output string.\n */\napi.encode = function(input, alphabet, maxline) {\n if(typeof alphabet !== 'string') {\n throw new TypeError('\"alphabet\" must be a string.');\n }\n if(maxline !== undefined && typeof maxline !== 'number') {\n throw new TypeError('\"maxline\" must be a number.');\n }\n\n var output = '';\n\n if(!(input instanceof Uint8Array)) {\n // assume forge byte buffer\n output = _encodeWithByteBuffer(input, alphabet);\n } else {\n var i = 0;\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var digits = [0];\n for(i = 0; i < input.length; ++i) {\n for(var j = 0, carry = input[i]; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % base;\n carry = (carry / base) | 0;\n }\n\n while(carry > 0) {\n digits.push(carry % base);\n carry = (carry / base) | 0;\n }\n }\n\n // deal with leading zeros\n for(i = 0; input[i] === 0 && i < input.length - 1; ++i) {\n output += first;\n }\n // convert digits to a string\n for(i = digits.length - 1; i >= 0; --i) {\n output += alphabet[digits[i]];\n }\n }\n\n if(maxline) {\n var regex = new RegExp('.{1,' + maxline + '}', 'g');\n output = output.match(regex).join('\\r\\n');\n }\n\n return output;\n};\n\n/**\n * Decodes a baseN-encoded (using the given alphabet) string to a\n * Uint8Array.\n *\n * @param input the baseN-encoded input string.\n *\n * @return the Uint8Array.\n */\napi.decode = function(input, alphabet) {\n if(typeof input !== 'string') {\n throw new TypeError('\"input\" must be a string.');\n }\n if(typeof alphabet !== 'string') {\n throw new TypeError('\"alphabet\" must be a string.');\n }\n\n var table = _reverseAlphabets[alphabet];\n if(!table) {\n // compute reverse alphabet\n table = _reverseAlphabets[alphabet] = [];\n for(var i = 0; i < alphabet.length; ++i) {\n table[alphabet.charCodeAt(i)] = i;\n }\n }\n\n // remove whitespace characters\n input = input.replace(/\\s/g, '');\n\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var bytes = [0];\n for(var i = 0; i < input.length; i++) {\n var value = table[input.charCodeAt(i)];\n if(value === undefined) {\n return;\n }\n\n for(var j = 0, carry = value; j < bytes.length; ++j) {\n carry += bytes[j] * base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while(carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for(var k = 0; input[k] === first && k < input.length - 1; ++k) {\n bytes.push(0);\n }\n\n if(typeof Buffer !== 'undefined') {\n return Buffer.from(bytes.reverse());\n }\n\n return new Uint8Array(bytes.reverse());\n};\n\nfunction _encodeWithByteBuffer(input, alphabet) {\n var i = 0;\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var digits = [0];\n for(i = 0; i < input.length(); ++i) {\n for(var j = 0, carry = input.at(i); j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % base;\n carry = (carry / base) | 0;\n }\n\n while(carry > 0) {\n digits.push(carry % base);\n carry = (carry / base) | 0;\n }\n }\n\n var output = '';\n\n // deal with leading zeros\n for(i = 0; input.at(i) === 0 && i < input.length() - 1; ++i) {\n output += first;\n }\n // convert digits to a string\n for(i = digits.length - 1; i >= 0; --i) {\n output += alphabet[digits[i]];\n }\n\n return output;\n}\n","/**\n * Utility functions for web applications.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2018 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nvar baseN = require('./baseN');\n\n/* Utilities API */\nvar util = module.exports = forge.util = forge.util || {};\n\n// define setImmediate and nextTick\n(function() {\n // use native nextTick (unless we're in webpack)\n // webpack (or better node-libs-browser polyfill) sets process.browser.\n // this way we can detect webpack properly\n if(typeof process !== 'undefined' && process.nextTick && !process.browser) {\n util.nextTick = process.nextTick;\n if(typeof setImmediate === 'function') {\n util.setImmediate = setImmediate;\n } else {\n // polyfill setImmediate with nextTick, older versions of node\n // (those w/o setImmediate) won't totally starve IO\n util.setImmediate = util.nextTick;\n }\n return;\n }\n\n // polyfill nextTick with native setImmediate\n if(typeof setImmediate === 'function') {\n util.setImmediate = function() { return setImmediate.apply(undefined, arguments); };\n util.nextTick = function(callback) {\n return setImmediate(callback);\n };\n return;\n }\n\n /* Note: A polyfill upgrade pattern is used here to allow combining\n polyfills. For example, MutationObserver is fast, but blocks UI updates,\n so it needs to allow UI updates periodically, so it falls back on\n postMessage or setTimeout. */\n\n // polyfill with setTimeout\n util.setImmediate = function(callback) {\n setTimeout(callback, 0);\n };\n\n // upgrade polyfill to use postMessage\n if(typeof window !== 'undefined' &&\n typeof window.postMessage === 'function') {\n var msg = 'forge.setImmediate';\n var callbacks = [];\n util.setImmediate = function(callback) {\n callbacks.push(callback);\n // only send message when one hasn't been sent in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n window.postMessage(msg, '*');\n }\n };\n function handler(event) {\n if(event.source === window && event.data === msg) {\n event.stopPropagation();\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }\n }\n window.addEventListener('message', handler, true);\n }\n\n // upgrade polyfill to use MutationObserver\n if(typeof MutationObserver !== 'undefined') {\n // polyfill with MutationObserver\n var now = Date.now();\n var attr = true;\n var div = document.createElement('div');\n var callbacks = [];\n new MutationObserver(function() {\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }).observe(div, {attributes: true});\n var oldSetImmediate = util.setImmediate;\n util.setImmediate = function(callback) {\n if(Date.now() - now > 15) {\n now = Date.now();\n oldSetImmediate(callback);\n } else {\n callbacks.push(callback);\n // only trigger observer when it hasn't been triggered in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n div.setAttribute('a', attr = !attr);\n }\n }\n };\n }\n\n util.nextTick = util.setImmediate;\n})();\n\n// check if running under Node.js\nutil.isNodejs =\n typeof process !== 'undefined' && process.versions && process.versions.node;\n\n\n// 'self' will also work in Web Workers (instance of WorkerGlobalScope) while\n// it will point to `window` in the main thread.\n// To remain compatible with older browsers, we fall back to 'window' if 'self'\n// is not available.\nutil.globalScope = (function() {\n if(util.isNodejs) {\n return global;\n }\n\n return typeof self === 'undefined' ? window : self;\n})();\n\n// define isArray\nutil.isArray = Array.isArray || function(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n};\n\n// define isArrayBuffer\nutil.isArrayBuffer = function(x) {\n return typeof ArrayBuffer !== 'undefined' && x instanceof ArrayBuffer;\n};\n\n// define isArrayBufferView\nutil.isArrayBufferView = function(x) {\n return x && util.isArrayBuffer(x.buffer) && x.byteLength !== undefined;\n};\n\n/**\n * Ensure a bits param is 8, 16, 24, or 32. Used to validate input for\n * algorithms where bit manipulation, JavaScript limitations, and/or algorithm\n * design only allow for byte operations of a limited size.\n *\n * @param n number of bits.\n *\n * Throw Error if n invalid.\n */\nfunction _checkBitsParam(n) {\n if(!(n === 8 || n === 16 || n === 24 || n === 32)) {\n throw new Error('Only 8, 16, 24, or 32 bits supported: ' + n);\n }\n}\n\n// TODO: set ByteBuffer to best available backing\nutil.ByteBuffer = ByteStringBuffer;\n\n/** Buffer w/BinaryString backing */\n\n/**\n * Constructor for a binary string backed byte buffer.\n *\n * @param [b] the bytes to wrap (either encoded as string, one byte per\n * character, or as an ArrayBuffer or Typed Array).\n */\nfunction ByteStringBuffer(b) {\n // TODO: update to match DataBuffer API\n\n // the data in this buffer\n this.data = '';\n // the pointer for reading from this buffer\n this.read = 0;\n\n if(typeof b === 'string') {\n this.data = b;\n } else if(util.isArrayBuffer(b) || util.isArrayBufferView(b)) {\n if(typeof Buffer !== 'undefined' && b instanceof Buffer) {\n this.data = b.toString('binary');\n } else {\n // convert native buffer to forge buffer\n // FIXME: support native buffers internally instead\n var arr = new Uint8Array(b);\n try {\n this.data = String.fromCharCode.apply(null, arr);\n } catch(e) {\n for(var i = 0; i < arr.length; ++i) {\n this.putByte(arr[i]);\n }\n }\n }\n } else if(b instanceof ByteStringBuffer ||\n (typeof b === 'object' && typeof b.data === 'string' &&\n typeof b.read === 'number')) {\n // copy existing buffer\n this.data = b.data;\n this.read = b.read;\n }\n\n // used for v8 optimization\n this._constructedStringLength = 0;\n}\nutil.ByteStringBuffer = ByteStringBuffer;\n\n/* Note: This is an optimization for V8-based browsers. When V8 concatenates\n a string, the strings are only joined logically using a \"cons string\" or\n \"constructed/concatenated string\". These containers keep references to one\n another and can result in very large memory usage. For example, if a 2MB\n string is constructed by concatenating 4 bytes together at a time, the\n memory usage will be ~44MB; so ~22x increase. The strings are only joined\n together when an operation requiring their joining takes place, such as\n substr(). This function is called when adding data to this buffer to ensure\n these types of strings are periodically joined to reduce the memory\n footprint. */\nvar _MAX_CONSTRUCTED_STRING_LENGTH = 4096;\nutil.ByteStringBuffer.prototype._optimizeConstructedString = function(x) {\n this._constructedStringLength += x;\n if(this._constructedStringLength > _MAX_CONSTRUCTED_STRING_LENGTH) {\n // this substr() should cause the constructed string to join\n this.data.substr(0, 1);\n this._constructedStringLength = 0;\n }\n};\n\n/**\n * Gets the number of bytes in this buffer.\n *\n * @return the number of bytes in this buffer.\n */\nutil.ByteStringBuffer.prototype.length = function() {\n return this.data.length - this.read;\n};\n\n/**\n * Gets whether or not this buffer is empty.\n *\n * @return true if this buffer is empty, false if not.\n */\nutil.ByteStringBuffer.prototype.isEmpty = function() {\n return this.length() <= 0;\n};\n\n/**\n * Puts a byte in this buffer.\n *\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putByte = function(b) {\n return this.putBytes(String.fromCharCode(b));\n};\n\n/**\n * Puts a byte in this buffer N times.\n *\n * @param b the byte to put.\n * @param n the number of bytes of value b to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.fillWithByte = function(b, n) {\n b = String.fromCharCode(b);\n var d = this.data;\n while(n > 0) {\n if(n & 1) {\n d += b;\n }\n n >>>= 1;\n if(n > 0) {\n b += b;\n }\n }\n this.data = d;\n this._optimizeConstructedString(n);\n return this;\n};\n\n/**\n * Puts bytes in this buffer.\n *\n * @param bytes the bytes (as a binary encoded string) to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putBytes = function(bytes) {\n this.data += bytes;\n this._optimizeConstructedString(bytes.length);\n return this;\n};\n\n/**\n * Puts a UTF-16 encoded string into this buffer.\n *\n * @param str the string to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putString = function(str) {\n return this.putBytes(util.encodeUtf8(str));\n};\n\n/**\n * Puts a 16-bit integer in this buffer in big-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt16 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 24-bit integer in this buffer in big-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt24 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 32-bit integer in this buffer in big-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt32 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 24 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 16-bit integer in this buffer in little-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt16Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF));\n};\n\n/**\n * Puts a 24-bit integer in this buffer in little-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt24Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF));\n};\n\n/**\n * Puts a 32-bit integer in this buffer in little-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt32Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 24 & 0xFF));\n};\n\n/**\n * Puts an n-bit integer in this buffer in big-endian order.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt = function(i, n) {\n _checkBitsParam(n);\n var bytes = '';\n do {\n n -= 8;\n bytes += String.fromCharCode((i >> n) & 0xFF);\n } while(n > 0);\n return this.putBytes(bytes);\n};\n\n/**\n * Puts a signed n-bit integer in this buffer in big-endian order. Two's\n * complement representation is used.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putSignedInt = function(i, n) {\n // putInt checks n\n if(i < 0) {\n i += 2 << (n - 1);\n }\n return this.putInt(i, n);\n};\n\n/**\n * Puts the given buffer into this buffer.\n *\n * @param buffer the buffer to put into this one.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putBuffer = function(buffer) {\n return this.putBytes(buffer.getBytes());\n};\n\n/**\n * Gets a byte from this buffer and advances the read pointer by 1.\n *\n * @return the byte.\n */\nutil.ByteStringBuffer.prototype.getByte = function() {\n return this.data.charCodeAt(this.read++);\n};\n\n/**\n * Gets a uint16 from this buffer in big-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.ByteStringBuffer.prototype.getInt16 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 8 ^\n this.data.charCodeAt(this.read + 1));\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in big-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.ByteStringBuffer.prototype.getInt24 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 16 ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2));\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in big-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.ByteStringBuffer.prototype.getInt32 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 24 ^\n this.data.charCodeAt(this.read + 1) << 16 ^\n this.data.charCodeAt(this.read + 2) << 8 ^\n this.data.charCodeAt(this.read + 3));\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets a uint16 from this buffer in little-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.ByteStringBuffer.prototype.getInt16Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in little-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.ByteStringBuffer.prototype.getInt24Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2) << 16);\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in little-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.ByteStringBuffer.prototype.getInt32Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2) << 16 ^\n this.data.charCodeAt(this.read + 3) << 24);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets an n-bit integer from this buffer in big-endian order and advances the\n * read pointer by ceil(n/8).\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.ByteStringBuffer.prototype.getInt = function(n) {\n _checkBitsParam(n);\n var rval = 0;\n do {\n // TODO: Use (rval * 0x100) if adding support for 33 to 53 bits.\n rval = (rval << 8) + this.data.charCodeAt(this.read++);\n n -= 8;\n } while(n > 0);\n return rval;\n};\n\n/**\n * Gets a signed n-bit integer from this buffer in big-endian order, using\n * two's complement, and advances the read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.ByteStringBuffer.prototype.getSignedInt = function(n) {\n // getInt checks n\n var x = this.getInt(n);\n var max = 2 << (n - 2);\n if(x >= max) {\n x -= max << 1;\n }\n return x;\n};\n\n/**\n * Reads bytes out as a binary encoded string and clears them from the\n * buffer. Note that the resulting string is binary encoded (in node.js this\n * encoding is referred to as `binary`, it is *not* `utf8`).\n *\n * @param count the number of bytes to read, undefined or null for all.\n *\n * @return a binary encoded string of bytes.\n */\nutil.ByteStringBuffer.prototype.getBytes = function(count) {\n var rval;\n if(count) {\n // read count bytes\n count = Math.min(this.length(), count);\n rval = this.data.slice(this.read, this.read + count);\n this.read += count;\n } else if(count === 0) {\n rval = '';\n } else {\n // read all bytes, optimize to only copy when needed\n rval = (this.read === 0) ? this.data : this.data.slice(this.read);\n this.clear();\n }\n return rval;\n};\n\n/**\n * Gets a binary encoded string of the bytes from this buffer without\n * modifying the read pointer.\n *\n * @param count the number of bytes to get, omit to get all.\n *\n * @return a string full of binary encoded characters.\n */\nutil.ByteStringBuffer.prototype.bytes = function(count) {\n return (typeof(count) === 'undefined' ?\n this.data.slice(this.read) :\n this.data.slice(this.read, this.read + count));\n};\n\n/**\n * Gets a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n *\n * @return the byte.\n */\nutil.ByteStringBuffer.prototype.at = function(i) {\n return this.data.charCodeAt(this.read + i);\n};\n\n/**\n * Puts a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.setAt = function(i, b) {\n this.data = this.data.substr(0, this.read + i) +\n String.fromCharCode(b) +\n this.data.substr(this.read + i + 1);\n return this;\n};\n\n/**\n * Gets the last byte without modifying the read pointer.\n *\n * @return the last byte.\n */\nutil.ByteStringBuffer.prototype.last = function() {\n return this.data.charCodeAt(this.data.length - 1);\n};\n\n/**\n * Creates a copy of this buffer.\n *\n * @return the copy.\n */\nutil.ByteStringBuffer.prototype.copy = function() {\n var c = util.createBuffer(this.data);\n c.read = this.read;\n return c;\n};\n\n/**\n * Compacts this buffer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.compact = function() {\n if(this.read > 0) {\n this.data = this.data.slice(this.read);\n this.read = 0;\n }\n return this;\n};\n\n/**\n * Clears this buffer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.clear = function() {\n this.data = '';\n this.read = 0;\n return this;\n};\n\n/**\n * Shortens this buffer by triming bytes off of the end of this buffer.\n *\n * @param count the number of bytes to trim off.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.truncate = function(count) {\n var len = Math.max(0, this.length() - count);\n this.data = this.data.substr(this.read, len);\n this.read = 0;\n return this;\n};\n\n/**\n * Converts this buffer to a hexadecimal string.\n *\n * @return a hexadecimal string.\n */\nutil.ByteStringBuffer.prototype.toHex = function() {\n var rval = '';\n for(var i = this.read; i < this.data.length; ++i) {\n var b = this.data.charCodeAt(i);\n if(b < 16) {\n rval += '0';\n }\n rval += b.toString(16);\n }\n return rval;\n};\n\n/**\n * Converts this buffer to a UTF-16 string (standard JavaScript string).\n *\n * @return a UTF-16 string.\n */\nutil.ByteStringBuffer.prototype.toString = function() {\n return util.decodeUtf8(this.bytes());\n};\n\n/** End Buffer w/BinaryString backing */\n\n/** Buffer w/UInt8Array backing */\n\n/**\n * FIXME: Experimental. Do not use yet.\n *\n * Constructor for an ArrayBuffer-backed byte buffer.\n *\n * The buffer may be constructed from a string, an ArrayBuffer, DataView, or a\n * TypedArray.\n *\n * If a string is given, its encoding should be provided as an option,\n * otherwise it will default to 'binary'. A 'binary' string is encoded such\n * that each character is one byte in length and size.\n *\n * If an ArrayBuffer, DataView, or TypedArray is given, it will be used\n * *directly* without any copying. Note that, if a write to the buffer requires\n * more space, the buffer will allocate a new backing ArrayBuffer to\n * accommodate. The starting read and write offsets for the buffer may be\n * given as options.\n *\n * @param [b] the initial bytes for this buffer.\n * @param options the options to use:\n * [readOffset] the starting read offset to use (default: 0).\n * [writeOffset] the starting write offset to use (default: the\n * length of the first parameter).\n * [growSize] the minimum amount, in bytes, to grow the buffer by to\n * accommodate writes (default: 1024).\n * [encoding] the encoding ('binary', 'utf8', 'utf16', 'hex') for the\n * first parameter, if it is a string (default: 'binary').\n */\nfunction DataBuffer(b, options) {\n // default options\n options = options || {};\n\n // pointers for read from/write to buffer\n this.read = options.readOffset || 0;\n this.growSize = options.growSize || 1024;\n\n var isArrayBuffer = util.isArrayBuffer(b);\n var isArrayBufferView = util.isArrayBufferView(b);\n if(isArrayBuffer || isArrayBufferView) {\n // use ArrayBuffer directly\n if(isArrayBuffer) {\n this.data = new DataView(b);\n } else {\n // TODO: adjust read/write offset based on the type of view\n // or specify that this must be done in the options ... that the\n // offsets are byte-based\n this.data = new DataView(b.buffer, b.byteOffset, b.byteLength);\n }\n this.write = ('writeOffset' in options ?\n options.writeOffset : this.data.byteLength);\n return;\n }\n\n // initialize to empty array buffer and add any given bytes using putBytes\n this.data = new DataView(new ArrayBuffer(0));\n this.write = 0;\n\n if(b !== null && b !== undefined) {\n this.putBytes(b);\n }\n\n if('writeOffset' in options) {\n this.write = options.writeOffset;\n }\n}\nutil.DataBuffer = DataBuffer;\n\n/**\n * Gets the number of bytes in this buffer.\n *\n * @return the number of bytes in this buffer.\n */\nutil.DataBuffer.prototype.length = function() {\n return this.write - this.read;\n};\n\n/**\n * Gets whether or not this buffer is empty.\n *\n * @return true if this buffer is empty, false if not.\n */\nutil.DataBuffer.prototype.isEmpty = function() {\n return this.length() <= 0;\n};\n\n/**\n * Ensures this buffer has enough empty space to accommodate the given number\n * of bytes. An optional parameter may be given that indicates a minimum\n * amount to grow the buffer if necessary. If the parameter is not given,\n * the buffer will be grown by some previously-specified default amount\n * or heuristic.\n *\n * @param amount the number of bytes to accommodate.\n * @param [growSize] the minimum amount, in bytes, to grow the buffer by if\n * necessary.\n */\nutil.DataBuffer.prototype.accommodate = function(amount, growSize) {\n if(this.length() >= amount) {\n return this;\n }\n growSize = Math.max(growSize || this.growSize, amount);\n\n // grow buffer\n var src = new Uint8Array(\n this.data.buffer, this.data.byteOffset, this.data.byteLength);\n var dst = new Uint8Array(this.length() + growSize);\n dst.set(src);\n this.data = new DataView(dst.buffer);\n\n return this;\n};\n\n/**\n * Puts a byte in this buffer.\n *\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putByte = function(b) {\n this.accommodate(1);\n this.data.setUint8(this.write++, b);\n return this;\n};\n\n/**\n * Puts a byte in this buffer N times.\n *\n * @param b the byte to put.\n * @param n the number of bytes of value b to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.fillWithByte = function(b, n) {\n this.accommodate(n);\n for(var i = 0; i < n; ++i) {\n this.data.setUint8(b);\n }\n return this;\n};\n\n/**\n * Puts bytes in this buffer. The bytes may be given as a string, an\n * ArrayBuffer, a DataView, or a TypedArray.\n *\n * @param bytes the bytes to put.\n * @param [encoding] the encoding for the first parameter ('binary', 'utf8',\n * 'utf16', 'hex'), if it is a string (default: 'binary').\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putBytes = function(bytes, encoding) {\n if(util.isArrayBufferView(bytes)) {\n var src = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n var len = src.byteLength - src.byteOffset;\n this.accommodate(len);\n var dst = new Uint8Array(this.data.buffer, this.write);\n dst.set(src);\n this.write += len;\n return this;\n }\n\n if(util.isArrayBuffer(bytes)) {\n var src = new Uint8Array(bytes);\n this.accommodate(src.byteLength);\n var dst = new Uint8Array(this.data.buffer);\n dst.set(src, this.write);\n this.write += src.byteLength;\n return this;\n }\n\n // bytes is a util.DataBuffer or equivalent\n if(bytes instanceof util.DataBuffer ||\n (typeof bytes === 'object' &&\n typeof bytes.read === 'number' && typeof bytes.write === 'number' &&\n util.isArrayBufferView(bytes.data))) {\n var src = new Uint8Array(bytes.data.byteLength, bytes.read, bytes.length());\n this.accommodate(src.byteLength);\n var dst = new Uint8Array(bytes.data.byteLength, this.write);\n dst.set(src);\n this.write += src.byteLength;\n return this;\n }\n\n if(bytes instanceof util.ByteStringBuffer) {\n // copy binary string and process as the same as a string parameter below\n bytes = bytes.data;\n encoding = 'binary';\n }\n\n // string conversion\n encoding = encoding || 'binary';\n if(typeof bytes === 'string') {\n var view;\n\n // decode from string\n if(encoding === 'hex') {\n this.accommodate(Math.ceil(bytes.length / 2));\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.hex.decode(bytes, view, this.write);\n return this;\n }\n if(encoding === 'base64') {\n this.accommodate(Math.ceil(bytes.length / 4) * 3);\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.base64.decode(bytes, view, this.write);\n return this;\n }\n\n // encode text as UTF-8 bytes\n if(encoding === 'utf8') {\n // encode as UTF-8 then decode string as raw binary\n bytes = util.encodeUtf8(bytes);\n encoding = 'binary';\n }\n\n // decode string as raw binary\n if(encoding === 'binary' || encoding === 'raw') {\n // one byte per character\n this.accommodate(bytes.length);\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.raw.decode(view);\n return this;\n }\n\n // encode text as UTF-16 bytes\n if(encoding === 'utf16') {\n // two bytes per character\n this.accommodate(bytes.length * 2);\n view = new Uint16Array(this.data.buffer, this.write);\n this.write += util.text.utf16.encode(view);\n return this;\n }\n\n throw new Error('Invalid encoding: ' + encoding);\n }\n\n throw Error('Invalid parameter: ' + bytes);\n};\n\n/**\n * Puts the given buffer into this buffer.\n *\n * @param buffer the buffer to put into this one.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putBuffer = function(buffer) {\n this.putBytes(buffer);\n buffer.clear();\n return this;\n};\n\n/**\n * Puts a string into this buffer.\n *\n * @param str the string to put.\n * @param [encoding] the encoding for the string (default: 'utf16').\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putString = function(str) {\n return this.putBytes(str, 'utf16');\n};\n\n/**\n * Puts a 16-bit integer in this buffer in big-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt16 = function(i) {\n this.accommodate(2);\n this.data.setInt16(this.write, i);\n this.write += 2;\n return this;\n};\n\n/**\n * Puts a 24-bit integer in this buffer in big-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt24 = function(i) {\n this.accommodate(3);\n this.data.setInt16(this.write, i >> 8 & 0xFFFF);\n this.data.setInt8(this.write, i >> 16 & 0xFF);\n this.write += 3;\n return this;\n};\n\n/**\n * Puts a 32-bit integer in this buffer in big-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt32 = function(i) {\n this.accommodate(4);\n this.data.setInt32(this.write, i);\n this.write += 4;\n return this;\n};\n\n/**\n * Puts a 16-bit integer in this buffer in little-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt16Le = function(i) {\n this.accommodate(2);\n this.data.setInt16(this.write, i, true);\n this.write += 2;\n return this;\n};\n\n/**\n * Puts a 24-bit integer in this buffer in little-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt24Le = function(i) {\n this.accommodate(3);\n this.data.setInt8(this.write, i >> 16 & 0xFF);\n this.data.setInt16(this.write, i >> 8 & 0xFFFF, true);\n this.write += 3;\n return this;\n};\n\n/**\n * Puts a 32-bit integer in this buffer in little-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt32Le = function(i) {\n this.accommodate(4);\n this.data.setInt32(this.write, i, true);\n this.write += 4;\n return this;\n};\n\n/**\n * Puts an n-bit integer in this buffer in big-endian order.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt = function(i, n) {\n _checkBitsParam(n);\n this.accommodate(n / 8);\n do {\n n -= 8;\n this.data.setInt8(this.write++, (i >> n) & 0xFF);\n } while(n > 0);\n return this;\n};\n\n/**\n * Puts a signed n-bit integer in this buffer in big-endian order. Two's\n * complement representation is used.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putSignedInt = function(i, n) {\n _checkBitsParam(n);\n this.accommodate(n / 8);\n if(i < 0) {\n i += 2 << (n - 1);\n }\n return this.putInt(i, n);\n};\n\n/**\n * Gets a byte from this buffer and advances the read pointer by 1.\n *\n * @return the byte.\n */\nutil.DataBuffer.prototype.getByte = function() {\n return this.data.getInt8(this.read++);\n};\n\n/**\n * Gets a uint16 from this buffer in big-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.DataBuffer.prototype.getInt16 = function() {\n var rval = this.data.getInt16(this.read);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in big-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.DataBuffer.prototype.getInt24 = function() {\n var rval = (\n this.data.getInt16(this.read) << 8 ^\n this.data.getInt8(this.read + 2));\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in big-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.DataBuffer.prototype.getInt32 = function() {\n var rval = this.data.getInt32(this.read);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets a uint16 from this buffer in little-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.DataBuffer.prototype.getInt16Le = function() {\n var rval = this.data.getInt16(this.read, true);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in little-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.DataBuffer.prototype.getInt24Le = function() {\n var rval = (\n this.data.getInt8(this.read) ^\n this.data.getInt16(this.read + 1, true) << 8);\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in little-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.DataBuffer.prototype.getInt32Le = function() {\n var rval = this.data.getInt32(this.read, true);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets an n-bit integer from this buffer in big-endian order and advances the\n * read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.DataBuffer.prototype.getInt = function(n) {\n _checkBitsParam(n);\n var rval = 0;\n do {\n // TODO: Use (rval * 0x100) if adding support for 33 to 53 bits.\n rval = (rval << 8) + this.data.getInt8(this.read++);\n n -= 8;\n } while(n > 0);\n return rval;\n};\n\n/**\n * Gets a signed n-bit integer from this buffer in big-endian order, using\n * two's complement, and advances the read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.DataBuffer.prototype.getSignedInt = function(n) {\n // getInt checks n\n var x = this.getInt(n);\n var max = 2 << (n - 2);\n if(x >= max) {\n x -= max << 1;\n }\n return x;\n};\n\n/**\n * Reads bytes out as a binary encoded string and clears them from the\n * buffer.\n *\n * @param count the number of bytes to read, undefined or null for all.\n *\n * @return a binary encoded string of bytes.\n */\nutil.DataBuffer.prototype.getBytes = function(count) {\n // TODO: deprecate this method, it is poorly named and\n // this.toString('binary') replaces it\n // add a toTypedArray()/toArrayBuffer() function\n var rval;\n if(count) {\n // read count bytes\n count = Math.min(this.length(), count);\n rval = this.data.slice(this.read, this.read + count);\n this.read += count;\n } else if(count === 0) {\n rval = '';\n } else {\n // read all bytes, optimize to only copy when needed\n rval = (this.read === 0) ? this.data : this.data.slice(this.read);\n this.clear();\n }\n return rval;\n};\n\n/**\n * Gets a binary encoded string of the bytes from this buffer without\n * modifying the read pointer.\n *\n * @param count the number of bytes to get, omit to get all.\n *\n * @return a string full of binary encoded characters.\n */\nutil.DataBuffer.prototype.bytes = function(count) {\n // TODO: deprecate this method, it is poorly named, add \"getString()\"\n return (typeof(count) === 'undefined' ?\n this.data.slice(this.read) :\n this.data.slice(this.read, this.read + count));\n};\n\n/**\n * Gets a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n *\n * @return the byte.\n */\nutil.DataBuffer.prototype.at = function(i) {\n return this.data.getUint8(this.read + i);\n};\n\n/**\n * Puts a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.setAt = function(i, b) {\n this.data.setUint8(i, b);\n return this;\n};\n\n/**\n * Gets the last byte without modifying the read pointer.\n *\n * @return the last byte.\n */\nutil.DataBuffer.prototype.last = function() {\n return this.data.getUint8(this.write - 1);\n};\n\n/**\n * Creates a copy of this buffer.\n *\n * @return the copy.\n */\nutil.DataBuffer.prototype.copy = function() {\n return new util.DataBuffer(this);\n};\n\n/**\n * Compacts this buffer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.compact = function() {\n if(this.read > 0) {\n var src = new Uint8Array(this.data.buffer, this.read);\n var dst = new Uint8Array(src.byteLength);\n dst.set(src);\n this.data = new DataView(dst);\n this.write -= this.read;\n this.read = 0;\n }\n return this;\n};\n\n/**\n * Clears this buffer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.clear = function() {\n this.data = new DataView(new ArrayBuffer(0));\n this.read = this.write = 0;\n return this;\n};\n\n/**\n * Shortens this buffer by triming bytes off of the end of this buffer.\n *\n * @param count the number of bytes to trim off.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.truncate = function(count) {\n this.write = Math.max(0, this.length() - count);\n this.read = Math.min(this.read, this.write);\n return this;\n};\n\n/**\n * Converts this buffer to a hexadecimal string.\n *\n * @return a hexadecimal string.\n */\nutil.DataBuffer.prototype.toHex = function() {\n var rval = '';\n for(var i = this.read; i < this.data.byteLength; ++i) {\n var b = this.data.getUint8(i);\n if(b < 16) {\n rval += '0';\n }\n rval += b.toString(16);\n }\n return rval;\n};\n\n/**\n * Converts this buffer to a string, using the given encoding. If no\n * encoding is given, 'utf8' (UTF-8) is used.\n *\n * @param [encoding] the encoding to use: 'binary', 'utf8', 'utf16', 'hex',\n * 'base64' (default: 'utf8').\n *\n * @return a string representation of the bytes in this buffer.\n */\nutil.DataBuffer.prototype.toString = function(encoding) {\n var view = new Uint8Array(this.data, this.read, this.length());\n encoding = encoding || 'utf8';\n\n // encode to string\n if(encoding === 'binary' || encoding === 'raw') {\n return util.binary.raw.encode(view);\n }\n if(encoding === 'hex') {\n return util.binary.hex.encode(view);\n }\n if(encoding === 'base64') {\n return util.binary.base64.encode(view);\n }\n\n // decode to text\n if(encoding === 'utf8') {\n return util.text.utf8.decode(view);\n }\n if(encoding === 'utf16') {\n return util.text.utf16.decode(view);\n }\n\n throw new Error('Invalid encoding: ' + encoding);\n};\n\n/** End Buffer w/UInt8Array backing */\n\n/**\n * Creates a buffer that stores bytes. A value may be given to populate the\n * buffer with data. This value can either be string of encoded bytes or a\n * regular string of characters. When passing a string of binary encoded\n * bytes, the encoding `raw` should be given. This is also the default. When\n * passing a string of characters, the encoding `utf8` should be given.\n *\n * @param [input] a string with encoded bytes to store in the buffer.\n * @param [encoding] (default: 'raw', other: 'utf8').\n */\nutil.createBuffer = function(input, encoding) {\n // TODO: deprecate, use new ByteBuffer() instead\n encoding = encoding || 'raw';\n if(input !== undefined && encoding === 'utf8') {\n input = util.encodeUtf8(input);\n }\n return new util.ByteBuffer(input);\n};\n\n/**\n * Fills a string with a particular value. If you want the string to be a byte\n * string, pass in String.fromCharCode(theByte).\n *\n * @param c the character to fill the string with, use String.fromCharCode\n * to fill the string with a byte value.\n * @param n the number of characters of value c to fill with.\n *\n * @return the filled string.\n */\nutil.fillString = function(c, n) {\n var s = '';\n while(n > 0) {\n if(n & 1) {\n s += c;\n }\n n >>>= 1;\n if(n > 0) {\n c += c;\n }\n }\n return s;\n};\n\n/**\n * Performs a per byte XOR between two byte strings and returns the result as a\n * string of bytes.\n *\n * @param s1 first string of bytes.\n * @param s2 second string of bytes.\n * @param n the number of bytes to XOR.\n *\n * @return the XOR'd result.\n */\nutil.xorBytes = function(s1, s2, n) {\n var s3 = '';\n var b = '';\n var t = '';\n var i = 0;\n var c = 0;\n for(; n > 0; --n, ++i) {\n b = s1.charCodeAt(i) ^ s2.charCodeAt(i);\n if(c >= 10) {\n s3 += t;\n t = '';\n c = 0;\n }\n t += String.fromCharCode(b);\n ++c;\n }\n s3 += t;\n return s3;\n};\n\n/**\n * Converts a hex string into a 'binary' encoded string of bytes.\n *\n * @param hex the hexadecimal string to convert.\n *\n * @return the binary-encoded string of bytes.\n */\nutil.hexToBytes = function(hex) {\n // TODO: deprecate: \"Deprecated. Use util.binary.hex.decode instead.\"\n var rval = '';\n var i = 0;\n if(hex.length & 1 == 1) {\n // odd number of characters, convert first character alone\n i = 1;\n rval += String.fromCharCode(parseInt(hex[0], 16));\n }\n // convert 2 characters (1 byte) at a time\n for(; i < hex.length; i += 2) {\n rval += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n }\n return rval;\n};\n\n/**\n * Converts a 'binary' encoded string of bytes to hex.\n *\n * @param bytes the byte string to convert.\n *\n * @return the string of hexadecimal characters.\n */\nutil.bytesToHex = function(bytes) {\n // TODO: deprecate: \"Deprecated. Use util.binary.hex.encode instead.\"\n return util.createBuffer(bytes).toHex();\n};\n\n/**\n * Converts an 32-bit integer to 4-big-endian byte string.\n *\n * @param i the integer.\n *\n * @return the byte string.\n */\nutil.int32ToBytes = function(i) {\n return (\n String.fromCharCode(i >> 24 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n// base64 characters, reverse mapping\nvar _base64 =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nvar _base64Idx = [\n/*43 -43 = 0*/\n/*'+', 1, 2, 3,'/' */\n 62, -1, -1, -1, 63,\n\n/*'0','1','2','3','4','5','6','7','8','9' */\n 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,\n\n/*15, 16, 17,'=', 19, 20, 21 */\n -1, -1, -1, 64, -1, -1, -1,\n\n/*65 - 43 = 22*/\n/*'A','B','C','D','E','F','G','H','I','J','K','L','M', */\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,\n\n/*'N','O','P','Q','R','S','T','U','V','W','X','Y','Z' */\n 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\n\n/*91 - 43 = 48 */\n/*48, 49, 50, 51, 52, 53 */\n -1, -1, -1, -1, -1, -1,\n\n/*97 - 43 = 54*/\n/*'a','b','c','d','e','f','g','h','i','j','k','l','m' */\n 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,\n\n/*'n','o','p','q','r','s','t','u','v','w','x','y','z' */\n 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51\n];\n\n// base58 characters (Bitcoin alphabet)\nvar _base58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\n/**\n * Base64 encodes a 'binary' encoded string of bytes.\n *\n * @param input the binary encoded string of bytes to base64-encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the base64-encoded output.\n */\nutil.encode64 = function(input, maxline) {\n // TODO: deprecate: \"Deprecated. Use util.binary.base64.encode instead.\"\n var line = '';\n var output = '';\n var chr1, chr2, chr3;\n var i = 0;\n while(i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n // encode 4 character group\n line += _base64.charAt(chr1 >> 2);\n line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));\n if(isNaN(chr2)) {\n line += '==';\n } else {\n line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));\n line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);\n }\n\n if(maxline && line.length > maxline) {\n output += line.substr(0, maxline) + '\\r\\n';\n line = line.substr(maxline);\n }\n }\n output += line;\n return output;\n};\n\n/**\n * Base64 decodes a string into a 'binary' encoded string of bytes.\n *\n * @param input the base64-encoded input.\n *\n * @return the binary encoded string.\n */\nutil.decode64 = function(input) {\n // TODO: deprecate: \"Deprecated. Use util.binary.base64.decode instead.\"\n\n // remove all non-base64 characters\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\n var output = '';\n var enc1, enc2, enc3, enc4;\n var i = 0;\n\n while(i < input.length) {\n enc1 = _base64Idx[input.charCodeAt(i++) - 43];\n enc2 = _base64Idx[input.charCodeAt(i++) - 43];\n enc3 = _base64Idx[input.charCodeAt(i++) - 43];\n enc4 = _base64Idx[input.charCodeAt(i++) - 43];\n\n output += String.fromCharCode((enc1 << 2) | (enc2 >> 4));\n if(enc3 !== 64) {\n // decoded at least 2 bytes\n output += String.fromCharCode(((enc2 & 15) << 4) | (enc3 >> 2));\n if(enc4 !== 64) {\n // decoded 3 bytes\n output += String.fromCharCode(((enc3 & 3) << 6) | enc4);\n }\n }\n }\n\n return output;\n};\n\n/**\n * Encodes the given string of characters (a standard JavaScript\n * string) as a binary encoded string where the bytes represent\n * a UTF-8 encoded string of characters. Non-ASCII characters will be\n * encoded as multiple bytes according to UTF-8.\n *\n * @param str a standard string of characters to encode.\n *\n * @return the binary encoded string.\n */\nutil.encodeUtf8 = function(str) {\n return unescape(encodeURIComponent(str));\n};\n\n/**\n * Decodes a binary encoded string that contains bytes that\n * represent a UTF-8 encoded string of characters -- into a\n * string of characters (a standard JavaScript string).\n *\n * @param str the binary encoded string to decode.\n *\n * @return the resulting standard string of characters.\n */\nutil.decodeUtf8 = function(str) {\n return decodeURIComponent(escape(str));\n};\n\n// binary encoding/decoding tools\n// FIXME: Experimental. Do not use yet.\nutil.binary = {\n raw: {},\n hex: {},\n base64: {},\n base58: {},\n baseN : {\n encode: baseN.encode,\n decode: baseN.decode\n }\n};\n\n/**\n * Encodes a Uint8Array as a binary-encoded string. This encoding uses\n * a value between 0 and 255 for each character.\n *\n * @param bytes the Uint8Array to encode.\n *\n * @return the binary-encoded string.\n */\nutil.binary.raw.encode = function(bytes) {\n return String.fromCharCode.apply(null, bytes);\n};\n\n/**\n * Decodes a binary-encoded string to a Uint8Array. This encoding uses\n * a value between 0 and 255 for each character.\n *\n * @param str the binary-encoded string to decode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.raw.decode = function(str, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length);\n }\n offset = offset || 0;\n var j = offset;\n for(var i = 0; i < str.length; ++i) {\n out[j++] = str.charCodeAt(i);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Encodes a 'binary' string, ArrayBuffer, DataView, TypedArray, or\n * ByteBuffer as a string of hexadecimal characters.\n *\n * @param bytes the bytes to convert.\n *\n * @return the string of hexadecimal characters.\n */\nutil.binary.hex.encode = util.bytesToHex;\n\n/**\n * Decodes a hex-encoded string to a Uint8Array.\n *\n * @param hex the hexadecimal string to convert.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.hex.decode = function(hex, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(Math.ceil(hex.length / 2));\n }\n offset = offset || 0;\n var i = 0, j = offset;\n if(hex.length & 1) {\n // odd number of characters, convert first character alone\n i = 1;\n out[j++] = parseInt(hex[0], 16);\n }\n // convert 2 characters (1 byte) at a time\n for(; i < hex.length; i += 2) {\n out[j++] = parseInt(hex.substr(i, 2), 16);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Base64-encodes a Uint8Array.\n *\n * @param input the Uint8Array to encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the base64-encoded output string.\n */\nutil.binary.base64.encode = function(input, maxline) {\n var line = '';\n var output = '';\n var chr1, chr2, chr3;\n var i = 0;\n while(i < input.byteLength) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n\n // encode 4 character group\n line += _base64.charAt(chr1 >> 2);\n line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));\n if(isNaN(chr2)) {\n line += '==';\n } else {\n line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));\n line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);\n }\n\n if(maxline && line.length > maxline) {\n output += line.substr(0, maxline) + '\\r\\n';\n line = line.substr(maxline);\n }\n }\n output += line;\n return output;\n};\n\n/**\n * Decodes a base64-encoded string to a Uint8Array.\n *\n * @param input the base64-encoded input string.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.base64.decode = function(input, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(Math.ceil(input.length / 4) * 3);\n }\n\n // remove all non-base64 characters\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\n offset = offset || 0;\n var enc1, enc2, enc3, enc4;\n var i = 0, j = offset;\n\n while(i < input.length) {\n enc1 = _base64Idx[input.charCodeAt(i++) - 43];\n enc2 = _base64Idx[input.charCodeAt(i++) - 43];\n enc3 = _base64Idx[input.charCodeAt(i++) - 43];\n enc4 = _base64Idx[input.charCodeAt(i++) - 43];\n\n out[j++] = (enc1 << 2) | (enc2 >> 4);\n if(enc3 !== 64) {\n // decoded at least 2 bytes\n out[j++] = ((enc2 & 15) << 4) | (enc3 >> 2);\n if(enc4 !== 64) {\n // decoded 3 bytes\n out[j++] = ((enc3 & 3) << 6) | enc4;\n }\n }\n }\n\n // make sure result is the exact decoded length\n return output ? (j - offset) : out.subarray(0, j);\n};\n\n// add support for base58 encoding/decoding with Bitcoin alphabet\nutil.binary.base58.encode = function(input, maxline) {\n return util.binary.baseN.encode(input, _base58, maxline);\n};\nutil.binary.base58.decode = function(input, maxline) {\n return util.binary.baseN.decode(input, _base58, maxline);\n};\n\n// text encoding/decoding tools\n// FIXME: Experimental. Do not use yet.\nutil.text = {\n utf8: {},\n utf16: {}\n};\n\n/**\n * Encodes the given string as UTF-8 in a Uint8Array.\n *\n * @param str the string to encode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.text.utf8.encode = function(str, output, offset) {\n str = util.encodeUtf8(str);\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length);\n }\n offset = offset || 0;\n var j = offset;\n for(var i = 0; i < str.length; ++i) {\n out[j++] = str.charCodeAt(i);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Decodes the UTF-8 contents from a Uint8Array.\n *\n * @param bytes the Uint8Array to decode.\n *\n * @return the resulting string.\n */\nutil.text.utf8.decode = function(bytes) {\n return util.decodeUtf8(String.fromCharCode.apply(null, bytes));\n};\n\n/**\n * Encodes the given string as UTF-16 in a Uint8Array.\n *\n * @param str the string to encode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.text.utf16.encode = function(str, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length * 2);\n }\n var view = new Uint16Array(out.buffer);\n offset = offset || 0;\n var j = offset;\n var k = offset;\n for(var i = 0; i < str.length; ++i) {\n view[k++] = str.charCodeAt(i);\n j += 2;\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Decodes the UTF-16 contents from a Uint8Array.\n *\n * @param bytes the Uint8Array to decode.\n *\n * @return the resulting string.\n */\nutil.text.utf16.decode = function(bytes) {\n return String.fromCharCode.apply(null, new Uint16Array(bytes.buffer));\n};\n\n/**\n * Deflates the given data using a flash interface.\n *\n * @param api the flash interface.\n * @param bytes the data.\n * @param raw true to return only raw deflate data, false to include zlib\n * header and trailer.\n *\n * @return the deflated data as a string.\n */\nutil.deflate = function(api, bytes, raw) {\n bytes = util.decode64(api.deflate(util.encode64(bytes)).rval);\n\n // strip zlib header and trailer if necessary\n if(raw) {\n // zlib header is 2 bytes (CMF,FLG) where FLG indicates that\n // there is a 4-byte DICT (alder-32) block before the data if\n // its 5th bit is set\n var start = 2;\n var flg = bytes.charCodeAt(1);\n if(flg & 0x20) {\n start = 6;\n }\n // zlib trailer is 4 bytes of adler-32\n bytes = bytes.substring(start, bytes.length - 4);\n }\n\n return bytes;\n};\n\n/**\n * Inflates the given data using a flash interface.\n *\n * @param api the flash interface.\n * @param bytes the data.\n * @param raw true if the incoming data has no zlib header or trailer and is\n * raw DEFLATE data.\n *\n * @return the inflated data as a string, null on error.\n */\nutil.inflate = function(api, bytes, raw) {\n // TODO: add zlib header and trailer if necessary/possible\n var rval = api.inflate(util.encode64(bytes)).rval;\n return (rval === null) ? null : util.decode64(rval);\n};\n\n/**\n * Sets a storage object.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param obj the storage object, null to remove.\n */\nvar _setStorageObject = function(api, id, obj) {\n if(!api) {\n throw new Error('WebStorage not available.');\n }\n\n var rval;\n if(obj === null) {\n rval = api.removeItem(id);\n } else {\n // json-encode and base64-encode object\n obj = util.encode64(JSON.stringify(obj));\n rval = api.setItem(id, obj);\n }\n\n // handle potential flash error\n if(typeof(rval) !== 'undefined' && rval.rval !== true) {\n var error = new Error(rval.error.message);\n error.id = rval.error.id;\n error.name = rval.error.name;\n throw error;\n }\n};\n\n/**\n * Gets a storage object.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n *\n * @return the storage object entry or null if none exists.\n */\nvar _getStorageObject = function(api, id) {\n if(!api) {\n throw new Error('WebStorage not available.');\n }\n\n // get the existing entry\n var rval = api.getItem(id);\n\n /* Note: We check api.init because we can't do (api == localStorage)\n on IE because of \"Class doesn't support Automation\" exception. Only\n the flash api has an init method so this works too, but we need a\n better solution in the future. */\n\n // flash returns item wrapped in an object, handle special case\n if(api.init) {\n if(rval.rval === null) {\n if(rval.error) {\n var error = new Error(rval.error.message);\n error.id = rval.error.id;\n error.name = rval.error.name;\n throw error;\n }\n // no error, but also no item\n rval = null;\n } else {\n rval = rval.rval;\n }\n }\n\n // handle decoding\n if(rval !== null) {\n // base64-decode and json-decode data\n rval = JSON.parse(util.decode64(rval));\n }\n\n return rval;\n};\n\n/**\n * Stores an item in local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param data the data for the item (any javascript object/primitive).\n */\nvar _setItem = function(api, id, key, data) {\n // get storage object\n var obj = _getStorageObject(api, id);\n if(obj === null) {\n // create a new storage object\n obj = {};\n }\n // update key\n obj[key] = data;\n\n // set storage object\n _setStorageObject(api, id, obj);\n};\n\n/**\n * Gets an item from local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n *\n * @return the item.\n */\nvar _getItem = function(api, id, key) {\n // get storage object\n var rval = _getStorageObject(api, id);\n if(rval !== null) {\n // return data at key\n rval = (key in rval) ? rval[key] : null;\n }\n\n return rval;\n};\n\n/**\n * Removes an item from local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n */\nvar _removeItem = function(api, id, key) {\n // get storage object\n var obj = _getStorageObject(api, id);\n if(obj !== null && key in obj) {\n // remove key\n delete obj[key];\n\n // see if entry has no keys remaining\n var empty = true;\n for(var prop in obj) {\n empty = false;\n break;\n }\n if(empty) {\n // remove entry entirely if no keys are left\n obj = null;\n }\n\n // set storage object\n _setStorageObject(api, id, obj);\n }\n};\n\n/**\n * Clears the local disk storage identified by the given ID.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n */\nvar _clearItems = function(api, id) {\n _setStorageObject(api, id, null);\n};\n\n/**\n * Calls a storage function.\n *\n * @param func the function to call.\n * @param args the arguments for the function.\n * @param location the location argument.\n *\n * @return the return value from the function.\n */\nvar _callStorageFunction = function(func, args, location) {\n var rval = null;\n\n // default storage types\n if(typeof(location) === 'undefined') {\n location = ['web', 'flash'];\n }\n\n // apply storage types in order of preference\n var type;\n var done = false;\n var exception = null;\n for(var idx in location) {\n type = location[idx];\n try {\n if(type === 'flash' || type === 'both') {\n if(args[0] === null) {\n throw new Error('Flash local storage not available.');\n }\n rval = func.apply(this, args);\n done = (type === 'flash');\n }\n if(type === 'web' || type === 'both') {\n args[0] = localStorage;\n rval = func.apply(this, args);\n done = true;\n }\n } catch(ex) {\n exception = ex;\n }\n if(done) {\n break;\n }\n }\n\n if(!done) {\n throw exception;\n }\n\n return rval;\n};\n\n/**\n * Stores an item on local disk.\n *\n * The available types of local storage include 'flash', 'web', and 'both'.\n *\n * The type 'flash' refers to flash local storage (SharedObject). In order\n * to use flash local storage, the 'api' parameter must be valid. The type\n * 'web' refers to WebStorage, if supported by the browser. The type 'both'\n * refers to storing using both 'flash' and 'web', not just one or the\n * other.\n *\n * The location array should list the storage types to use in order of\n * preference:\n *\n * ['flash']: flash only storage\n * ['web']: web only storage\n * ['both']: try to store in both\n * ['flash','web']: store in flash first, but if not available, 'web'\n * ['web','flash']: store in web first, but if not available, 'flash'\n *\n * The location array defaults to: ['web', 'flash']\n *\n * @param api the flash interface, null to use only WebStorage.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param data the data for the item (any javascript object/primitive).\n * @param location an array with the preferred types of storage to use.\n */\nutil.setItem = function(api, id, key, data, location) {\n _callStorageFunction(_setItem, arguments, location);\n};\n\n/**\n * Gets an item on local disk.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface, null to use only WebStorage.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param location an array with the preferred types of storage to use.\n *\n * @return the item.\n */\nutil.getItem = function(api, id, key, location) {\n return _callStorageFunction(_getItem, arguments, location);\n};\n\n/**\n * Removes an item on local disk.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param location an array with the preferred types of storage to use.\n */\nutil.removeItem = function(api, id, key, location) {\n _callStorageFunction(_removeItem, arguments, location);\n};\n\n/**\n * Clears the local disk storage identified by the given ID.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface if flash is available.\n * @param id the storage ID to use.\n * @param location an array with the preferred types of storage to use.\n */\nutil.clearItems = function(api, id, location) {\n _callStorageFunction(_clearItems, arguments, location);\n};\n\n/**\n * Check if an object is empty.\n *\n * Taken from:\n * http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object-from-json/679937#679937\n *\n * @param object the object to check.\n */\nutil.isEmpty = function(obj) {\n for(var prop in obj) {\n if(obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Format with simple printf-style interpolation.\n *\n * %%: literal '%'\n * %s,%o: convert next argument into a string.\n *\n * @param format the string to format.\n * @param ... arguments to interpolate into the format string.\n */\nutil.format = function(format) {\n var re = /%./g;\n // current match\n var match;\n // current part\n var part;\n // current arg index\n var argi = 0;\n // collected parts to recombine later\n var parts = [];\n // last index found\n var last = 0;\n // loop while matches remain\n while((match = re.exec(format))) {\n part = format.substring(last, re.lastIndex - 2);\n // don't add empty strings (ie, parts between %s%s)\n if(part.length > 0) {\n parts.push(part);\n }\n last = re.lastIndex;\n // switch on % code\n var code = match[0][1];\n switch(code) {\n case 's':\n case 'o':\n // check if enough arguments were given\n if(argi < arguments.length) {\n parts.push(arguments[argi++ + 1]);\n } else {\n parts.push('');\n }\n break;\n // FIXME: do proper formating for numbers, etc\n //case 'f':\n //case 'd':\n case '%':\n parts.push('%');\n break;\n default:\n parts.push('<%' + code + '?>');\n }\n }\n // add trailing part of format string\n parts.push(format.substring(last));\n return parts.join('');\n};\n\n/**\n * Formats a number.\n *\n * http://snipplr.com/view/5945/javascript-numberformat--ported-from-php/\n */\nutil.formatNumber = function(number, decimals, dec_point, thousands_sep) {\n // http://kevin.vanzonneveld.net\n // + original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfix by: Michael White (http://crestidg.com)\n // + bugfix by: Benjamin Lupton\n // + bugfix by: Allan Jensen (http://www.winternet.no)\n // + revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\n // * example 1: number_format(1234.5678, 2, '.', '');\n // * returns 1: 1234.57\n\n var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;\n var d = dec_point === undefined ? ',' : dec_point;\n var t = thousands_sep === undefined ?\n '.' : thousands_sep, s = n < 0 ? '-' : '';\n var i = parseInt((n = Math.abs(+n || 0).toFixed(c)), 10) + '';\n var j = (i.length > 3) ? i.length % 3 : 0;\n return s + (j ? i.substr(0, j) + t : '') +\n i.substr(j).replace(/(\\d{3})(?=\\d)/g, '$1' + t) +\n (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '');\n};\n\n/**\n * Formats a byte size.\n *\n * http://snipplr.com/view/5949/format-humanize-file-byte-size-presentation-in-javascript/\n */\nutil.formatSize = function(size) {\n if(size >= 1073741824) {\n size = util.formatNumber(size / 1073741824, 2, '.', '') + ' GiB';\n } else if(size >= 1048576) {\n size = util.formatNumber(size / 1048576, 2, '.', '') + ' MiB';\n } else if(size >= 1024) {\n size = util.formatNumber(size / 1024, 0) + ' KiB';\n } else {\n size = util.formatNumber(size, 0) + ' bytes';\n }\n return size;\n};\n\n/**\n * Converts an IPv4 or IPv6 string representation into bytes (in network order).\n *\n * @param ip the IPv4 or IPv6 address to convert.\n *\n * @return the 4-byte IPv6 or 16-byte IPv6 address or null if the address can't\n * be parsed.\n */\nutil.bytesFromIP = function(ip) {\n if(ip.indexOf('.') !== -1) {\n return util.bytesFromIPv4(ip);\n }\n if(ip.indexOf(':') !== -1) {\n return util.bytesFromIPv6(ip);\n }\n return null;\n};\n\n/**\n * Converts an IPv4 string representation into bytes (in network order).\n *\n * @param ip the IPv4 address to convert.\n *\n * @return the 4-byte address or null if the address can't be parsed.\n */\nutil.bytesFromIPv4 = function(ip) {\n ip = ip.split('.');\n if(ip.length !== 4) {\n return null;\n }\n var b = util.createBuffer();\n for(var i = 0; i < ip.length; ++i) {\n var num = parseInt(ip[i], 10);\n if(isNaN(num)) {\n return null;\n }\n b.putByte(num);\n }\n return b.getBytes();\n};\n\n/**\n * Converts an IPv6 string representation into bytes (in network order).\n *\n * @param ip the IPv6 address to convert.\n *\n * @return the 16-byte address or null if the address can't be parsed.\n */\nutil.bytesFromIPv6 = function(ip) {\n var blanks = 0;\n ip = ip.split(':').filter(function(e) {\n if(e.length === 0) ++blanks;\n return true;\n });\n var zeros = (8 - ip.length + blanks) * 2;\n var b = util.createBuffer();\n for(var i = 0; i < 8; ++i) {\n if(!ip[i] || ip[i].length === 0) {\n b.fillWithByte(0, zeros);\n zeros = 0;\n continue;\n }\n var bytes = util.hexToBytes(ip[i]);\n if(bytes.length < 2) {\n b.putByte(0);\n }\n b.putBytes(bytes);\n }\n return b.getBytes();\n};\n\n/**\n * Converts 4-bytes into an IPv4 string representation or 16-bytes into\n * an IPv6 string representation. The bytes must be in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv4 or IPv6 string representation if 4 or 16 bytes,\n * respectively, are given, otherwise null.\n */\nutil.bytesToIP = function(bytes) {\n if(bytes.length === 4) {\n return util.bytesToIPv4(bytes);\n }\n if(bytes.length === 16) {\n return util.bytesToIPv6(bytes);\n }\n return null;\n};\n\n/**\n * Converts 4-bytes into an IPv4 string representation. The bytes must be\n * in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv4 string representation or null for an invalid # of bytes.\n */\nutil.bytesToIPv4 = function(bytes) {\n if(bytes.length !== 4) {\n return null;\n }\n var ip = [];\n for(var i = 0; i < bytes.length; ++i) {\n ip.push(bytes.charCodeAt(i));\n }\n return ip.join('.');\n};\n\n/**\n * Converts 16-bytes into an IPv16 string representation. The bytes must be\n * in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv16 string representation or null for an invalid # of bytes.\n */\nutil.bytesToIPv6 = function(bytes) {\n if(bytes.length !== 16) {\n return null;\n }\n var ip = [];\n var zeroGroups = [];\n var zeroMaxGroup = 0;\n for(var i = 0; i < bytes.length; i += 2) {\n var hex = util.bytesToHex(bytes[i] + bytes[i + 1]);\n // canonicalize zero representation\n while(hex[0] === '0' && hex !== '0') {\n hex = hex.substr(1);\n }\n if(hex === '0') {\n var last = zeroGroups[zeroGroups.length - 1];\n var idx = ip.length;\n if(!last || idx !== last.end + 1) {\n zeroGroups.push({start: idx, end: idx});\n } else {\n last.end = idx;\n if((last.end - last.start) >\n (zeroGroups[zeroMaxGroup].end - zeroGroups[zeroMaxGroup].start)) {\n zeroMaxGroup = zeroGroups.length - 1;\n }\n }\n }\n ip.push(hex);\n }\n if(zeroGroups.length > 0) {\n var group = zeroGroups[zeroMaxGroup];\n // only shorten group of length > 0\n if(group.end - group.start > 0) {\n ip.splice(group.start, group.end - group.start + 1, '');\n if(group.start === 0) {\n ip.unshift('');\n }\n if(group.end === 7) {\n ip.push('');\n }\n }\n }\n return ip.join(':');\n};\n\n/**\n * Estimates the number of processes that can be run concurrently. If\n * creating Web Workers, keep in mind that the main JavaScript process needs\n * its own core.\n *\n * @param options the options to use:\n * update true to force an update (not use the cached value).\n * @param callback(err, max) called once the operation completes.\n */\nutil.estimateCores = function(options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n if('cores' in util && !options.update) {\n return callback(null, util.cores);\n }\n if(typeof navigator !== 'undefined' &&\n 'hardwareConcurrency' in navigator &&\n navigator.hardwareConcurrency > 0) {\n util.cores = navigator.hardwareConcurrency;\n return callback(null, util.cores);\n }\n if(typeof Worker === 'undefined') {\n // workers not available\n util.cores = 1;\n return callback(null, util.cores);\n }\n if(typeof Blob === 'undefined') {\n // can't estimate, default to 2\n util.cores = 2;\n return callback(null, util.cores);\n }\n\n // create worker concurrency estimation code as blob\n var blobUrl = URL.createObjectURL(new Blob(['(',\n function() {\n self.addEventListener('message', function(e) {\n // run worker for 4 ms\n var st = Date.now();\n var et = st + 4;\n while(Date.now() < et);\n self.postMessage({st: st, et: et});\n });\n }.toString(),\n ')()'], {type: 'application/javascript'}));\n\n // take 5 samples using 16 workers\n sample([], 5, 16);\n\n function sample(max, samples, numWorkers) {\n if(samples === 0) {\n // get overlap average\n var avg = Math.floor(max.reduce(function(avg, x) {\n return avg + x;\n }, 0) / max.length);\n util.cores = Math.max(1, avg);\n URL.revokeObjectURL(blobUrl);\n return callback(null, util.cores);\n }\n map(numWorkers, function(err, results) {\n max.push(reduce(numWorkers, results));\n sample(max, samples - 1, numWorkers);\n });\n }\n\n function map(numWorkers, callback) {\n var workers = [];\n var results = [];\n for(var i = 0; i < numWorkers; ++i) {\n var worker = new Worker(blobUrl);\n worker.addEventListener('message', function(e) {\n results.push(e.data);\n if(results.length === numWorkers) {\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].terminate();\n }\n callback(null, results);\n }\n });\n workers.push(worker);\n }\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].postMessage(i);\n }\n }\n\n function reduce(numWorkers, results) {\n // find overlapping time windows\n var overlaps = [];\n for(var n = 0; n < numWorkers; ++n) {\n var r1 = results[n];\n var overlap = overlaps[n] = [];\n for(var i = 0; i < numWorkers; ++i) {\n if(n === i) {\n continue;\n }\n var r2 = results[i];\n if((r1.st > r2.st && r1.st < r2.et) ||\n (r2.st > r1.st && r2.st < r1.et)) {\n overlap.push(i);\n }\n }\n }\n // get maximum overlaps ... don't include overlapping worker itself\n // as the main JS process was also being scheduled during the work and\n // would have to be subtracted from the estimate anyway\n return overlaps.reduce(function(max, overlap) {\n return Math.max(max, overlap.length);\n }, 0);\n }\n};\n","/**\n * Cipher base API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nmodule.exports = forge.cipher = forge.cipher || {};\n\n// registered algorithms\nforge.cipher.algorithms = forge.cipher.algorithms || {};\n\n/**\n * Creates a cipher object that can be used to encrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createCipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: false\n });\n};\n\n/**\n * Creates a decipher object that can be used to decrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createDecipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: true\n });\n};\n\n/**\n * Registers an algorithm by name. If the name was already registered, the\n * algorithm API object will be overwritten.\n *\n * @param name the name of the algorithm.\n * @param algorithm the algorithm API object.\n */\nforge.cipher.registerAlgorithm = function(name, algorithm) {\n name = name.toUpperCase();\n forge.cipher.algorithms[name] = algorithm;\n};\n\n/**\n * Gets a registered algorithm by name.\n *\n * @param name the name of the algorithm.\n *\n * @return the algorithm, if found, null if not.\n */\nforge.cipher.getAlgorithm = function(name) {\n name = name.toUpperCase();\n if(name in forge.cipher.algorithms) {\n return forge.cipher.algorithms[name];\n }\n return null;\n};\n\nvar BlockCipher = forge.cipher.BlockCipher = function(options) {\n this.algorithm = options.algorithm;\n this.mode = this.algorithm.mode;\n this.blockSize = this.mode.blockSize;\n this._finish = false;\n this._input = null;\n this.output = null;\n this._op = options.decrypt ? this.mode.decrypt : this.mode.encrypt;\n this._decrypt = options.decrypt;\n this.algorithm.initialize(options);\n};\n\n/**\n * Starts or restarts the encryption or decryption process, whichever\n * was previously configured.\n *\n * For non-GCM mode, the IV may be a binary-encoded string of bytes, an array\n * of bytes, a byte buffer, or an array of 32-bit integers. If the IV is in\n * bytes, then it must be Nb (16) bytes in length. If the IV is given in as\n * 32-bit integers, then it must be 4 integers long.\n *\n * Note: an IV is not required or used in ECB mode.\n *\n * For GCM-mode, the IV must be given as a binary-encoded string of bytes or\n * a byte buffer. The number of bytes should be 12 (96 bits) as recommended\n * by NIST SP-800-38D but another length may be given.\n *\n * @param options the options to use:\n * iv the initialization vector to use as a binary-encoded string of\n * bytes, null to reuse the last ciphered block from a previous\n * update() (this \"residue\" method is for legacy support only).\n * additionalData additional authentication data as a binary-encoded\n * string of bytes, for 'GCM' mode, (default: none).\n * tagLength desired length of authentication tag, in bits, for\n * 'GCM' mode (0-128, default: 128).\n * tag the authentication tag to check if decrypting, as a\n * binary-encoded string of bytes.\n * output the output the buffer to write to, null to create one.\n */\nBlockCipher.prototype.start = function(options) {\n options = options || {};\n var opts = {};\n for(var key in options) {\n opts[key] = options[key];\n }\n opts.decrypt = this._decrypt;\n this._finish = false;\n this._input = forge.util.createBuffer();\n this.output = options.output || forge.util.createBuffer();\n this.mode.start(opts);\n};\n\n/**\n * Updates the next block according to the cipher mode.\n *\n * @param input the buffer to read from.\n */\nBlockCipher.prototype.update = function(input) {\n if(input) {\n // input given, so empty it into the input buffer\n this._input.putBuffer(input);\n }\n\n // do cipher operation until it needs more input and not finished\n while(!this._op.call(this.mode, this._input, this.output, this._finish) &&\n !this._finish) {}\n\n // free consumed memory from input buffer\n this._input.compact();\n};\n\n/**\n * Finishes encrypting or decrypting.\n *\n * @param pad a padding function to use in CBC mode, null for default,\n * signature(blockSize, buffer, decrypt).\n *\n * @return true if successful, false on error.\n */\nBlockCipher.prototype.finish = function(pad) {\n // backwards-compatibility w/deprecated padding API\n // Note: will overwrite padding functions even after another start() call\n if(pad && (this.mode.name === 'ECB' || this.mode.name === 'CBC')) {\n this.mode.pad = function(input) {\n return pad(this.blockSize, input, false);\n };\n this.mode.unpad = function(output) {\n return pad(this.blockSize, output, true);\n };\n }\n\n // build options for padding and afterFinish functions\n var options = {};\n options.decrypt = this._decrypt;\n\n // get # of bytes that won't fill a block\n options.overflow = this._input.length() % this.blockSize;\n\n if(!this._decrypt && this.mode.pad) {\n if(!this.mode.pad(this._input, options)) {\n return false;\n }\n }\n\n // do final update\n this._finish = true;\n this.update();\n\n if(this._decrypt && this.mode.unpad) {\n if(!this.mode.unpad(this.output, options)) {\n return false;\n }\n }\n\n if(this.mode.afterFinish) {\n if(!this.mode.afterFinish(this.output, options)) {\n return false;\n }\n }\n\n return true;\n};\n","/**\n * Supported cipher modes.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nforge.cipher = forge.cipher || {};\n\n// supported cipher modes\nvar modes = module.exports = forge.cipher.modes = forge.cipher.modes || {};\n\n/** Electronic codebook (ECB) (Don't use this; it's not secure) **/\n\nmodes.ecb = function(options) {\n options = options || {};\n this.name = 'ECB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.ecb.prototype.start = function(options) {};\n\nmodes.ecb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.ecb.prototype.unpad = function(output, options) {\n // check for error: input data not a multiple of blockSize\n if(options.overflow > 0) {\n return false;\n }\n\n // ensure padding byte count is valid\n var len = output.length();\n var count = output.at(len - 1);\n if(count > (this.blockSize << 2)) {\n return false;\n }\n\n // trim off padding bytes\n output.truncate(count);\n return true;\n};\n\n/** Cipher-block Chaining (CBC) **/\n\nmodes.cbc = function(options) {\n options = options || {};\n this.name = 'CBC';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.cbc.prototype.start = function(options) {\n // Note: legacy support for using IV residue (has security flaws)\n // if IV is null, reuse block from previous processing\n if(options.iv === null) {\n // must have a previous block\n if(!this._prev) {\n throw new Error('Invalid IV parameter.');\n }\n this._iv = this._prev.slice(0);\n } else if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n } else {\n // save IV as \"previous\" block\n this._iv = transformIV(options.iv, this.blockSize);\n this._prev = this._iv.slice(0);\n }\n};\n\nmodes.cbc.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n // CBC XOR's IV (or previous block) with plaintext\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._prev[i] ^ input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output, save previous block\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n this._prev = this._outBlock;\n};\n\nmodes.cbc.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output, save previous ciphered block\n // CBC XOR's IV (or previous block) with ciphertext\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._prev[i] ^ this._outBlock[i]);\n }\n this._prev = this._inBlock.slice(0);\n};\n\nmodes.cbc.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.cbc.prototype.unpad = function(output, options) {\n // check for error: input data not a multiple of blockSize\n if(options.overflow > 0) {\n return false;\n }\n\n // ensure padding byte count is valid\n var len = output.length();\n var count = output.at(len - 1);\n if(count > (this.blockSize << 2)) {\n return false;\n }\n\n // trim off padding bytes\n output.truncate(count);\n return true;\n};\n\n/** Cipher feedback (CFB) **/\n\nmodes.cfb = function(options) {\n options = options || {};\n this.name = 'CFB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output, write input as output\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32() ^ this._outBlock[i];\n output.putInt32(this._inBlock[i]);\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output, write input as partial output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialBlock[i] = input.getInt32() ^ this._outBlock[i];\n this._partialOutput.putInt32(this._partialBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._partialBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block (CFB always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output, write input as output\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n output.putInt32(this._inBlock[i] ^ this._outBlock[i]);\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output, write input as partial output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialBlock[i] = input.getInt32();\n this._partialOutput.putInt32(this._partialBlock[i] ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._partialBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\n/** Output feedback (OFB) **/\n\nmodes.ofb = function(options) {\n options = options || {};\n this.name = 'OFB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(input.length() === 0) {\n return true;\n }\n\n // encrypt block (OFB always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output and update next input\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(input.getInt32() ^ this._outBlock[i]);\n this._inBlock[i] = this._outBlock[i];\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._outBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.decrypt = modes.ofb.prototype.encrypt;\n\n/** Counter (CTR) **/\n\nmodes.ctr = function(options) {\n options = options || {};\n this.name = 'CTR';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.ctr.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.ctr.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block (CTR always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n } else {\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n }\n\n // block complete, increment counter (input block)\n inc32(this._inBlock);\n};\n\nmodes.ctr.prototype.decrypt = modes.ctr.prototype.encrypt;\n\n/** Galois/Counter Mode (GCM) **/\n\nmodes.gcm = function(options) {\n options = options || {};\n this.name = 'GCM';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n\n // R is actually this value concatenated with 120 more zero bits, but\n // we only XOR against R so the other zeros have no effect -- we just\n // apply this value to the first integer in a block\n this._R = 0xE1000000;\n};\n\nmodes.gcm.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // ensure IV is a byte buffer\n var iv = forge.util.createBuffer(options.iv);\n\n // no ciphered data processed yet\n this._cipherLength = 0;\n\n // default additional data is none\n var additionalData;\n if('additionalData' in options) {\n additionalData = forge.util.createBuffer(options.additionalData);\n } else {\n additionalData = forge.util.createBuffer();\n }\n\n // default tag length is 128 bits\n if('tagLength' in options) {\n this._tagLength = options.tagLength;\n } else {\n this._tagLength = 128;\n }\n\n // if tag is given, ensure tag matches tag length\n this._tag = null;\n if(options.decrypt) {\n // save tag to check later\n this._tag = forge.util.createBuffer(options.tag).getBytes();\n if(this._tag.length !== (this._tagLength / 8)) {\n throw new Error('Authentication tag does not match tag length.');\n }\n }\n\n // create tmp storage for hash calculation\n this._hashBlock = new Array(this._ints);\n\n // no tag generated yet\n this.tag = null;\n\n // generate hash subkey\n // (apply block cipher to \"zero\" block)\n this._hashSubkey = new Array(this._ints);\n this.cipher.encrypt([0, 0, 0, 0], this._hashSubkey);\n\n // generate table M\n // use 4-bit tables (32 component decomposition of a 16 byte value)\n // 8-bit tables take more space and are known to have security\n // vulnerabilities (in native implementations)\n this.componentBits = 4;\n this._m = this.generateHashTable(this._hashSubkey, this.componentBits);\n\n // Note: support IV length different from 96 bits? (only supporting\n // 96 bits is recommended by NIST SP-800-38D)\n // generate J_0\n var ivLength = iv.length();\n if(ivLength === 12) {\n // 96-bit IV\n this._j0 = [iv.getInt32(), iv.getInt32(), iv.getInt32(), 1];\n } else {\n // IV is NOT 96-bits\n this._j0 = [0, 0, 0, 0];\n while(iv.length() > 0) {\n this._j0 = this.ghash(\n this._hashSubkey, this._j0,\n [iv.getInt32(), iv.getInt32(), iv.getInt32(), iv.getInt32()]);\n }\n this._j0 = this.ghash(\n this._hashSubkey, this._j0, [0, 0].concat(from64To32(ivLength * 8)));\n }\n\n // generate ICB (initial counter block)\n this._inBlock = this._j0.slice(0);\n inc32(this._inBlock);\n this._partialBytes = 0;\n\n // consume authentication data\n additionalData = forge.util.createBuffer(additionalData);\n // save additional data length as a BE 64-bit number\n this._aDataLength = from64To32(additionalData.length() * 8);\n // pad additional data to 128 bit (16 byte) block size\n var overflow = additionalData.length() % this.blockSize;\n if(overflow) {\n additionalData.fillWithByte(0, this.blockSize - overflow);\n }\n this._s = [0, 0, 0, 0];\n while(additionalData.length() > 0) {\n this._s = this.ghash(this._hashSubkey, this._s, [\n additionalData.getInt32(),\n additionalData.getInt32(),\n additionalData.getInt32(),\n additionalData.getInt32()\n ]);\n }\n};\n\nmodes.gcm.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i] ^= input.getInt32());\n }\n this._cipherLength += this.blockSize;\n } else {\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes <= 0 || finish) {\n // handle overflow prior to hashing\n if(finish) {\n // get block overflow\n var overflow = inputLength % this.blockSize;\n this._cipherLength += overflow;\n // truncate for hash function\n this._partialOutput.truncate(this.blockSize - overflow);\n } else {\n this._cipherLength += this.blockSize;\n }\n\n // get output block for hashing\n for(var i = 0; i < this._ints; ++i) {\n this._outBlock[i] = this._partialOutput.getInt32();\n }\n this._partialOutput.read -= this.blockSize;\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n // block still incomplete, restore input buffer, get partial output,\n // and return early\n input.read -= this.blockSize;\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n }\n\n // update hash block S\n this._s = this.ghash(this._hashSubkey, this._s, this._outBlock);\n\n // increment counter (input block)\n inc32(this._inBlock);\n};\n\nmodes.gcm.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n var inputLength = input.length();\n if(inputLength < this.blockSize && !(finish && inputLength > 0)) {\n return true;\n }\n\n // encrypt block (GCM always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // increment counter (input block)\n inc32(this._inBlock);\n\n // update hash block S\n this._hashBlock[0] = input.getInt32();\n this._hashBlock[1] = input.getInt32();\n this._hashBlock[2] = input.getInt32();\n this._hashBlock[3] = input.getInt32();\n this._s = this.ghash(this._hashSubkey, this._s, this._hashBlock);\n\n // XOR hash input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i] ^ this._hashBlock[i]);\n }\n\n // increment cipher data length\n if(inputLength < this.blockSize) {\n this._cipherLength += inputLength % this.blockSize;\n } else {\n this._cipherLength += this.blockSize;\n }\n};\n\nmodes.gcm.prototype.afterFinish = function(output, options) {\n var rval = true;\n\n // handle overflow\n if(options.decrypt && options.overflow) {\n output.truncate(this.blockSize - options.overflow);\n }\n\n // handle authentication tag\n this.tag = forge.util.createBuffer();\n\n // concatenate additional data length with cipher length\n var lengths = this._aDataLength.concat(from64To32(this._cipherLength * 8));\n\n // include lengths in hash\n this._s = this.ghash(this._hashSubkey, this._s, lengths);\n\n // do GCTR(J_0, S)\n var tag = [];\n this.cipher.encrypt(this._j0, tag);\n for(var i = 0; i < this._ints; ++i) {\n this.tag.putInt32(this._s[i] ^ tag[i]);\n }\n\n // trim tag to length\n this.tag.truncate(this.tag.length() % (this._tagLength / 8));\n\n // check authentication tag\n if(options.decrypt && this.tag.bytes() !== this._tag) {\n rval = false;\n }\n\n return rval;\n};\n\n/**\n * See NIST SP-800-38D 6.3 (Algorithm 1). This function performs Galois\n * field multiplication. The field, GF(2^128), is defined by the polynomial:\n *\n * x^128 + x^7 + x^2 + x + 1\n *\n * Which is represented in little-endian binary form as: 11100001 (0xe1). When\n * the value of a coefficient is 1, a bit is set. The value R, is the\n * concatenation of this value and 120 zero bits, yielding a 128-bit value\n * which matches the block size.\n *\n * This function will multiply two elements (vectors of bytes), X and Y, in\n * the field GF(2^128). The result is initialized to zero. For each bit of\n * X (out of 128), x_i, if x_i is set, then the result is multiplied (XOR'd)\n * by the current value of Y. For each bit, the value of Y will be raised by\n * a power of x (multiplied by the polynomial x). This can be achieved by\n * shifting Y once to the right. If the current value of Y, prior to being\n * multiplied by x, has 0 as its LSB, then it is a 127th degree polynomial.\n * Otherwise, we must divide by R after shifting to find the remainder.\n *\n * @param x the first block to multiply by the second.\n * @param y the second block to multiply by the first.\n *\n * @return the block result of the multiplication.\n */\nmodes.gcm.prototype.multiply = function(x, y) {\n var z_i = [0, 0, 0, 0];\n var v_i = y.slice(0);\n\n // calculate Z_128 (block has 128 bits)\n for(var i = 0; i < 128; ++i) {\n // if x_i is 0, Z_{i+1} = Z_i (unchanged)\n // else Z_{i+1} = Z_i ^ V_i\n // get x_i by finding 32-bit int position, then left shift 1 by remainder\n var x_i = x[(i / 32) | 0] & (1 << (31 - i % 32));\n if(x_i) {\n z_i[0] ^= v_i[0];\n z_i[1] ^= v_i[1];\n z_i[2] ^= v_i[2];\n z_i[3] ^= v_i[3];\n }\n\n // if LSB(V_i) is 1, V_i = V_i >> 1\n // else V_i = (V_i >> 1) ^ R\n this.pow(v_i, v_i);\n }\n\n return z_i;\n};\n\nmodes.gcm.prototype.pow = function(x, out) {\n // if LSB(x) is 1, x = x >>> 1\n // else x = (x >>> 1) ^ R\n var lsb = x[3] & 1;\n\n // always do x >>> 1:\n // starting with the rightmost integer, shift each integer to the right\n // one bit, pulling in the bit from the integer to the left as its top\n // most bit (do this for the last 3 integers)\n for(var i = 3; i > 0; --i) {\n out[i] = (x[i] >>> 1) | ((x[i - 1] & 1) << 31);\n }\n // shift the first integer normally\n out[0] = x[0] >>> 1;\n\n // if lsb was not set, then polynomial had a degree of 127 and doesn't\n // need to divided; otherwise, XOR with R to find the remainder; we only\n // need to XOR the first integer since R technically ends w/120 zero bits\n if(lsb) {\n out[0] ^= this._R;\n }\n};\n\nmodes.gcm.prototype.tableMultiply = function(x) {\n // assumes 4-bit tables are used\n var z = [0, 0, 0, 0];\n for(var i = 0; i < 32; ++i) {\n var idx = (i / 8) | 0;\n var x_i = (x[idx] >>> ((7 - (i % 8)) * 4)) & 0xF;\n var ah = this._m[i][x_i];\n z[0] ^= ah[0];\n z[1] ^= ah[1];\n z[2] ^= ah[2];\n z[3] ^= ah[3];\n }\n return z;\n};\n\n/**\n * A continuing version of the GHASH algorithm that operates on a single\n * block. The hash block, last hash value (Ym) and the new block to hash\n * are given.\n *\n * @param h the hash block.\n * @param y the previous value for Ym, use [0, 0, 0, 0] for a new hash.\n * @param x the block to hash.\n *\n * @return the hashed value (Ym).\n */\nmodes.gcm.prototype.ghash = function(h, y, x) {\n y[0] ^= x[0];\n y[1] ^= x[1];\n y[2] ^= x[2];\n y[3] ^= x[3];\n return this.tableMultiply(y);\n //return this.multiply(y, h);\n};\n\n/**\n * Precomputes a table for multiplying against the hash subkey. This\n * mechanism provides a substantial speed increase over multiplication\n * performed without a table. The table-based multiplication this table is\n * for solves X * H by multiplying each component of X by H and then\n * composing the results together using XOR.\n *\n * This function can be used to generate tables with different bit sizes\n * for the components, however, this implementation assumes there are\n * 32 components of X (which is a 16 byte vector), therefore each component\n * takes 4-bits (so the table is constructed with bits=4).\n *\n * @param h the hash subkey.\n * @param bits the bit size for a component.\n */\nmodes.gcm.prototype.generateHashTable = function(h, bits) {\n // TODO: There are further optimizations that would use only the\n // first table M_0 (or some variant) along with a remainder table;\n // this can be explored in the future\n var multiplier = 8 / bits;\n var perInt = 4 * multiplier;\n var size = 16 * multiplier;\n var m = new Array(size);\n for(var i = 0; i < size; ++i) {\n var tmp = [0, 0, 0, 0];\n var idx = (i / perInt) | 0;\n var shft = ((perInt - 1 - (i % perInt)) * bits);\n tmp[idx] = (1 << (bits - 1)) << shft;\n m[i] = this.generateSubHashTable(this.multiply(tmp, h), bits);\n }\n return m;\n};\n\n/**\n * Generates a table for multiplying against the hash subkey for one\n * particular component (out of all possible component values).\n *\n * @param mid the pre-multiplied value for the middle key of the table.\n * @param bits the bit size for a component.\n */\nmodes.gcm.prototype.generateSubHashTable = function(mid, bits) {\n // compute the table quickly by minimizing the number of\n // POW operations -- they only need to be performed for powers of 2,\n // all other entries can be composed from those powers using XOR\n var size = 1 << bits;\n var half = size >>> 1;\n var m = new Array(size);\n m[half] = mid.slice(0);\n var i = half >>> 1;\n while(i > 0) {\n // raise m0[2 * i] and store in m0[i]\n this.pow(m[2 * i], m[i] = []);\n i >>= 1;\n }\n i = 2;\n while(i < half) {\n for(var j = 1; j < i; ++j) {\n var m_i = m[i];\n var m_j = m[j];\n m[i + j] = [\n m_i[0] ^ m_j[0],\n m_i[1] ^ m_j[1],\n m_i[2] ^ m_j[2],\n m_i[3] ^ m_j[3]\n ];\n }\n i *= 2;\n }\n m[0] = [0, 0, 0, 0];\n /* Note: We could avoid storing these by doing composition during multiply\n calculate top half using composition by speed is preferred. */\n for(i = half + 1; i < size; ++i) {\n var c = m[i ^ half];\n m[i] = [mid[0] ^ c[0], mid[1] ^ c[1], mid[2] ^ c[2], mid[3] ^ c[3]];\n }\n return m;\n};\n\n/** Utility functions */\n\nfunction transformIV(iv, blockSize) {\n if(typeof iv === 'string') {\n // convert iv string into byte buffer\n iv = forge.util.createBuffer(iv);\n }\n\n if(forge.util.isArray(iv) && iv.length > 4) {\n // convert iv byte array into byte buffer\n var tmp = iv;\n iv = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n iv.putByte(tmp[i]);\n }\n }\n\n if(iv.length() < blockSize) {\n throw new Error(\n 'Invalid IV length; got ' + iv.length() +\n ' bytes and expected ' + blockSize + ' bytes.');\n }\n\n if(!forge.util.isArray(iv)) {\n // convert iv byte buffer into 32-bit integer array\n var ints = [];\n var blocks = blockSize / 4;\n for(var i = 0; i < blocks; ++i) {\n ints.push(iv.getInt32());\n }\n iv = ints;\n }\n\n return iv;\n}\n\nfunction inc32(block) {\n // increment last 32 bits of block only\n block[block.length - 1] = (block[block.length - 1] + 1) & 0xFFFFFFFF;\n}\n\nfunction from64To32(num) {\n // convert 64-bit number to two BE Int32s\n return [(num / 0x100000000) | 0, num & 0xFFFFFFFF];\n}\n","/**\n * Advanced Encryption Standard (AES) implementation.\n *\n * This implementation is based on the public domain library 'jscrypto' which\n * was written by:\n *\n * Emily Stark (estark@stanford.edu)\n * Mike Hamburg (mhamburg@stanford.edu)\n * Dan Boneh (dabo@cs.stanford.edu)\n *\n * Parts of this code are based on the OpenSSL implementation of AES:\n * http://www.openssl.org\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./cipher');\nrequire('./cipherModes');\nrequire('./util');\n\n/* AES API */\nmodule.exports = forge.aes = forge.aes || {};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('AES-', key);\n * cipher.start({iv: iv});\n *\n * Creates an AES cipher object to encrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as a string of bytes, an array of bytes,\n * a byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.startEncrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: false,\n mode: mode\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('AES-', key);\n *\n * Creates an AES cipher object to encrypt data using the given symmetric key.\n *\n * The key may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.createEncryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: false,\n mode: mode\n });\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('AES-', key);\n * decipher.start({iv: iv});\n *\n * Creates an AES cipher object to decrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as a string of bytes, an array of bytes,\n * a byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.startDecrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: true,\n mode: mode\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('AES-', key);\n *\n * Creates an AES cipher object to decrypt data using the given symmetric key.\n *\n * The key may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.createDecryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: true,\n mode: mode\n });\n};\n\n/**\n * Creates a new AES cipher algorithm object.\n *\n * @param name the name of the algorithm.\n * @param mode the mode factory function.\n *\n * @return the AES algorithm object.\n */\nforge.aes.Algorithm = function(name, mode) {\n if(!init) {\n initialize();\n }\n var self = this;\n self.name = name;\n self.mode = new mode({\n blockSize: 16,\n cipher: {\n encrypt: function(inBlock, outBlock) {\n return _updateBlock(self._w, inBlock, outBlock, false);\n },\n decrypt: function(inBlock, outBlock) {\n return _updateBlock(self._w, inBlock, outBlock, true);\n }\n }\n });\n self._init = false;\n};\n\n/**\n * Initializes this AES algorithm by expanding its key.\n *\n * @param options the options to use.\n * key the key to use with this algorithm.\n * decrypt true if the algorithm should be initialized for decryption,\n * false for encryption.\n */\nforge.aes.Algorithm.prototype.initialize = function(options) {\n if(this._init) {\n return;\n }\n\n var key = options.key;\n var tmp;\n\n /* Note: The key may be a string of bytes, an array of bytes, a byte\n buffer, or an array of 32-bit integers. If the key is in bytes, then\n it must be 16, 24, or 32 bytes in length. If it is in 32-bit\n integers, it must be 4, 6, or 8 integers long. */\n\n if(typeof key === 'string' &&\n (key.length === 16 || key.length === 24 || key.length === 32)) {\n // convert key string into byte buffer\n key = forge.util.createBuffer(key);\n } else if(forge.util.isArray(key) &&\n (key.length === 16 || key.length === 24 || key.length === 32)) {\n // convert key integer array into byte buffer\n tmp = key;\n key = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n key.putByte(tmp[i]);\n }\n }\n\n // convert key byte buffer into 32-bit integer array\n if(!forge.util.isArray(key)) {\n tmp = key;\n key = [];\n\n // key lengths of 16, 24, 32 bytes allowed\n var len = tmp.length();\n if(len === 16 || len === 24 || len === 32) {\n len = len >>> 2;\n for(var i = 0; i < len; ++i) {\n key.push(tmp.getInt32());\n }\n }\n }\n\n // key must be an array of 32-bit integers by now\n if(!forge.util.isArray(key) ||\n !(key.length === 4 || key.length === 6 || key.length === 8)) {\n throw new Error('Invalid key parameter.');\n }\n\n // encryption operation is always used for these modes\n var mode = this.mode.name;\n var encryptOp = (['CFB', 'OFB', 'CTR', 'GCM'].indexOf(mode) !== -1);\n\n // do key expansion\n this._w = _expandKey(key, options.decrypt && !encryptOp);\n this._init = true;\n};\n\n/**\n * Expands a key. Typically only used for testing.\n *\n * @param key the symmetric key to expand, as an array of 32-bit words.\n * @param decrypt true to expand for decryption, false for encryption.\n *\n * @return the expanded key.\n */\nforge.aes._expandKey = function(key, decrypt) {\n if(!init) {\n initialize();\n }\n return _expandKey(key, decrypt);\n};\n\n/**\n * Updates a single block. Typically only used for testing.\n *\n * @param w the expanded key to use.\n * @param input an array of block-size 32-bit words.\n * @param output an array of block-size 32-bit words.\n * @param decrypt true to decrypt, false to encrypt.\n */\nforge.aes._updateBlock = _updateBlock;\n\n/** Register AES algorithms **/\n\nregisterAlgorithm('AES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('AES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('AES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('AES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('AES-CTR', forge.cipher.modes.ctr);\nregisterAlgorithm('AES-GCM', forge.cipher.modes.gcm);\n\nfunction registerAlgorithm(name, mode) {\n var factory = function() {\n return new forge.aes.Algorithm(name, mode);\n };\n forge.cipher.registerAlgorithm(name, factory);\n}\n\n/** AES implementation **/\n\nvar init = false; // not yet initialized\nvar Nb = 4; // number of words comprising the state (AES = 4)\nvar sbox; // non-linear substitution table used in key expansion\nvar isbox; // inversion of sbox\nvar rcon; // round constant word array\nvar mix; // mix-columns table\nvar imix; // inverse mix-columns table\n\n/**\n * Performs initialization, ie: precomputes tables to optimize for speed.\n *\n * One way to understand how AES works is to imagine that 'addition' and\n * 'multiplication' are interfaces that require certain mathematical\n * properties to hold true (ie: they are associative) but they might have\n * different implementations and produce different kinds of results ...\n * provided that their mathematical properties remain true. AES defines\n * its own methods of addition and multiplication but keeps some important\n * properties the same, ie: associativity and distributivity. The\n * explanation below tries to shed some light on how AES defines addition\n * and multiplication of bytes and 32-bit words in order to perform its\n * encryption and decryption algorithms.\n *\n * The basics:\n *\n * The AES algorithm views bytes as binary representations of polynomials\n * that have either 1 or 0 as the coefficients. It defines the addition\n * or subtraction of two bytes as the XOR operation. It also defines the\n * multiplication of two bytes as a finite field referred to as GF(2^8)\n * (Note: 'GF' means \"Galois Field\" which is a field that contains a finite\n * number of elements so GF(2^8) has 256 elements).\n *\n * This means that any two bytes can be represented as binary polynomials;\n * when they multiplied together and modularly reduced by an irreducible\n * polynomial of the 8th degree, the results are the field GF(2^8). The\n * specific irreducible polynomial that AES uses in hexadecimal is 0x11b.\n * This multiplication is associative with 0x01 as the identity:\n *\n * (b * 0x01 = GF(b, 0x01) = b).\n *\n * The operation GF(b, 0x02) can be performed at the byte level by left\n * shifting b once and then XOR'ing it (to perform the modular reduction)\n * with 0x11b if b is >= 128. Repeated application of the multiplication\n * of 0x02 can be used to implement the multiplication of any two bytes.\n *\n * For instance, multiplying 0x57 and 0x13, denoted as GF(0x57, 0x13), can\n * be performed by factoring 0x13 into 0x01, 0x02, and 0x10. Then these\n * factors can each be multiplied by 0x57 and then added together. To do\n * the multiplication, values for 0x57 multiplied by each of these 3 factors\n * can be precomputed and stored in a table. To add them, the values from\n * the table are XOR'd together.\n *\n * AES also defines addition and multiplication of words, that is 4-byte\n * numbers represented as polynomials of 3 degrees where the coefficients\n * are the values of the bytes.\n *\n * The word [a0, a1, a2, a3] is a polynomial a3x^3 + a2x^2 + a1x + a0.\n *\n * Addition is performed by XOR'ing like powers of x. Multiplication\n * is performed in two steps, the first is an algebriac expansion as\n * you would do normally (where addition is XOR). But the result is\n * a polynomial larger than 3 degrees and thus it cannot fit in a word. So\n * next the result is modularly reduced by an AES-specific polynomial of\n * degree 4 which will always produce a polynomial of less than 4 degrees\n * such that it will fit in a word. In AES, this polynomial is x^4 + 1.\n *\n * The modular product of two polynomials 'a' and 'b' is thus:\n *\n * d(x) = d3x^3 + d2x^2 + d1x + d0\n * with\n * d0 = GF(a0, b0) ^ GF(a3, b1) ^ GF(a2, b2) ^ GF(a1, b3)\n * d1 = GF(a1, b0) ^ GF(a0, b1) ^ GF(a3, b2) ^ GF(a2, b3)\n * d2 = GF(a2, b0) ^ GF(a1, b1) ^ GF(a0, b2) ^ GF(a3, b3)\n * d3 = GF(a3, b0) ^ GF(a2, b1) ^ GF(a1, b2) ^ GF(a0, b3)\n *\n * As a matrix:\n *\n * [d0] = [a0 a3 a2 a1][b0]\n * [d1] [a1 a0 a3 a2][b1]\n * [d2] [a2 a1 a0 a3][b2]\n * [d3] [a3 a2 a1 a0][b3]\n *\n * Special polynomials defined by AES (0x02 == {02}):\n * a(x) = {03}x^3 + {01}x^2 + {01}x + {02}\n * a^-1(x) = {0b}x^3 + {0d}x^2 + {09}x + {0e}.\n *\n * These polynomials are used in the MixColumns() and InverseMixColumns()\n * operations, respectively, to cause each element in the state to affect\n * the output (referred to as diffusing).\n *\n * RotWord() uses: a0 = a1 = a2 = {00} and a3 = {01}, which is the\n * polynomial x3.\n *\n * The ShiftRows() method modifies the last 3 rows in the state (where\n * the state is 4 words with 4 bytes per word) by shifting bytes cyclically.\n * The 1st byte in the second row is moved to the end of the row. The 1st\n * and 2nd bytes in the third row are moved to the end of the row. The 1st,\n * 2nd, and 3rd bytes are moved in the fourth row.\n *\n * More details on how AES arithmetic works:\n *\n * In the polynomial representation of binary numbers, XOR performs addition\n * and subtraction and multiplication in GF(2^8) denoted as GF(a, b)\n * corresponds with the multiplication of polynomials modulo an irreducible\n * polynomial of degree 8. In other words, for AES, GF(a, b) will multiply\n * polynomial 'a' with polynomial 'b' and then do a modular reduction by\n * an AES-specific irreducible polynomial of degree 8.\n *\n * A polynomial is irreducible if its only divisors are one and itself. For\n * the AES algorithm, this irreducible polynomial is:\n *\n * m(x) = x^8 + x^4 + x^3 + x + 1,\n *\n * or {01}{1b} in hexadecimal notation, where each coefficient is a bit:\n * 100011011 = 283 = 0x11b.\n *\n * For example, GF(0x57, 0x83) = 0xc1 because\n *\n * 0x57 = 87 = 01010111 = x^6 + x^4 + x^2 + x + 1\n * 0x85 = 131 = 10000101 = x^7 + x + 1\n *\n * (x^6 + x^4 + x^2 + x + 1) * (x^7 + x + 1)\n * = x^13 + x^11 + x^9 + x^8 + x^7 +\n * x^7 + x^5 + x^3 + x^2 + x +\n * x^6 + x^4 + x^2 + x + 1\n * = x^13 + x^11 + x^9 + x^8 + x^6 + x^5 + x^4 + x^3 + 1 = y\n * y modulo (x^8 + x^4 + x^3 + x + 1)\n * = x^7 + x^6 + 1.\n *\n * The modular reduction by m(x) guarantees the result will be a binary\n * polynomial of less than degree 8, so that it can fit in a byte.\n *\n * The operation to multiply a binary polynomial b with x (the polynomial\n * x in binary representation is 00000010) is:\n *\n * b_7x^8 + b_6x^7 + b_5x^6 + b_4x^5 + b_3x^4 + b_2x^3 + b_1x^2 + b_0x^1\n *\n * To get GF(b, x) we must reduce that by m(x). If b_7 is 0 (that is the\n * most significant bit is 0 in b) then the result is already reduced. If\n * it is 1, then we can reduce it by subtracting m(x) via an XOR.\n *\n * It follows that multiplication by x (00000010 or 0x02) can be implemented\n * by performing a left shift followed by a conditional bitwise XOR with\n * 0x1b. This operation on bytes is denoted by xtime(). Multiplication by\n * higher powers of x can be implemented by repeated application of xtime().\n *\n * By adding intermediate results, multiplication by any constant can be\n * implemented. For instance:\n *\n * GF(0x57, 0x13) = 0xfe because:\n *\n * xtime(b) = (b & 128) ? (b << 1 ^ 0x11b) : (b << 1)\n *\n * Note: We XOR with 0x11b instead of 0x1b because in javascript our\n * datatype for b can be larger than 1 byte, so a left shift will not\n * automatically eliminate bits that overflow a byte ... by XOR'ing the\n * overflow bit with 1 (the extra one from 0x11b) we zero it out.\n *\n * GF(0x57, 0x02) = xtime(0x57) = 0xae\n * GF(0x57, 0x04) = xtime(0xae) = 0x47\n * GF(0x57, 0x08) = xtime(0x47) = 0x8e\n * GF(0x57, 0x10) = xtime(0x8e) = 0x07\n *\n * GF(0x57, 0x13) = GF(0x57, (0x01 ^ 0x02 ^ 0x10))\n *\n * And by the distributive property (since XOR is addition and GF() is\n * multiplication):\n *\n * = GF(0x57, 0x01) ^ GF(0x57, 0x02) ^ GF(0x57, 0x10)\n * = 0x57 ^ 0xae ^ 0x07\n * = 0xfe.\n */\nfunction initialize() {\n init = true;\n\n /* Populate the Rcon table. These are the values given by\n [x^(i-1),{00},{00},{00}] where x^(i-1) are powers of x (and x = 0x02)\n in the field of GF(2^8), where i starts at 1.\n\n rcon[0] = [0x00, 0x00, 0x00, 0x00]\n rcon[1] = [0x01, 0x00, 0x00, 0x00] 2^(1-1) = 2^0 = 1\n rcon[2] = [0x02, 0x00, 0x00, 0x00] 2^(2-1) = 2^1 = 2\n ...\n rcon[9] = [0x1B, 0x00, 0x00, 0x00] 2^(9-1) = 2^8 = 0x1B\n rcon[10] = [0x36, 0x00, 0x00, 0x00] 2^(10-1) = 2^9 = 0x36\n\n We only store the first byte because it is the only one used.\n */\n rcon = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1B, 0x36];\n\n // compute xtime table which maps i onto GF(i, 0x02)\n var xtime = new Array(256);\n for(var i = 0; i < 128; ++i) {\n xtime[i] = i << 1;\n xtime[i + 128] = (i + 128) << 1 ^ 0x11B;\n }\n\n // compute all other tables\n sbox = new Array(256);\n isbox = new Array(256);\n mix = new Array(4);\n imix = new Array(4);\n for(var i = 0; i < 4; ++i) {\n mix[i] = new Array(256);\n imix[i] = new Array(256);\n }\n var e = 0, ei = 0, e2, e4, e8, sx, sx2, me, ime;\n for(var i = 0; i < 256; ++i) {\n /* We need to generate the SubBytes() sbox and isbox tables so that\n we can perform byte substitutions. This requires us to traverse\n all of the elements in GF, find their multiplicative inverses,\n and apply to each the following affine transformation:\n\n bi' = bi ^ b(i + 4) mod 8 ^ b(i + 5) mod 8 ^ b(i + 6) mod 8 ^\n b(i + 7) mod 8 ^ ci\n for 0 <= i < 8, where bi is the ith bit of the byte, and ci is the\n ith bit of a byte c with the value {63} or {01100011}.\n\n It is possible to traverse every possible value in a Galois field\n using what is referred to as a 'generator'. There are many\n generators (128 out of 256): 3,5,6,9,11,82 to name a few. To fully\n traverse GF we iterate 255 times, multiplying by our generator\n each time.\n\n On each iteration we can determine the multiplicative inverse for\n the current element.\n\n Suppose there is an element in GF 'e'. For a given generator 'g',\n e = g^x. The multiplicative inverse of e is g^(255 - x). It turns\n out that if use the inverse of a generator as another generator\n it will produce all of the corresponding multiplicative inverses\n at the same time. For this reason, we choose 5 as our inverse\n generator because it only requires 2 multiplies and 1 add and its\n inverse, 82, requires relatively few operations as well.\n\n In order to apply the affine transformation, the multiplicative\n inverse 'ei' of 'e' can be repeatedly XOR'd (4 times) with a\n bit-cycling of 'ei'. To do this 'ei' is first stored in 's' and\n 'x'. Then 's' is left shifted and the high bit of 's' is made the\n low bit. The resulting value is stored in 's'. Then 'x' is XOR'd\n with 's' and stored in 'x'. On each subsequent iteration the same\n operation is performed. When 4 iterations are complete, 'x' is\n XOR'd with 'c' (0x63) and the transformed value is stored in 'x'.\n For example:\n\n s = 01000001\n x = 01000001\n\n iteration 1: s = 10000010, x ^= s\n iteration 2: s = 00000101, x ^= s\n iteration 3: s = 00001010, x ^= s\n iteration 4: s = 00010100, x ^= s\n x ^= 0x63\n\n This can be done with a loop where s = (s << 1) | (s >> 7). However,\n it can also be done by using a single 16-bit (in this case 32-bit)\n number 'sx'. Since XOR is an associative operation, we can set 'sx'\n to 'ei' and then XOR it with 'sx' left-shifted 1,2,3, and 4 times.\n The most significant bits will flow into the high 8 bit positions\n and be correctly XOR'd with one another. All that remains will be\n to cycle the high 8 bits by XOR'ing them all with the lower 8 bits\n afterwards.\n\n At the same time we're populating sbox and isbox we can precompute\n the multiplication we'll need to do to do MixColumns() later.\n */\n\n // apply affine transformation\n sx = ei ^ (ei << 1) ^ (ei << 2) ^ (ei << 3) ^ (ei << 4);\n sx = (sx >> 8) ^ (sx & 255) ^ 0x63;\n\n // update tables\n sbox[e] = sx;\n isbox[sx] = e;\n\n /* Mixing columns is done using matrix multiplication. The columns\n that are to be mixed are each a single word in the current state.\n The state has Nb columns (4 columns). Therefore each column is a\n 4 byte word. So to mix the columns in a single column 'c' where\n its rows are r0, r1, r2, and r3, we use the following matrix\n multiplication:\n\n [2 3 1 1]*[r0,c]=[r'0,c]\n [1 2 3 1] [r1,c] [r'1,c]\n [1 1 2 3] [r2,c] [r'2,c]\n [3 1 1 2] [r3,c] [r'3,c]\n\n r0, r1, r2, and r3 are each 1 byte of one of the words in the\n state (a column). To do matrix multiplication for each mixed\n column c' we multiply the corresponding row from the left matrix\n with the corresponding column from the right matrix. In total, we\n get 4 equations:\n\n r0,c' = 2*r0,c + 3*r1,c + 1*r2,c + 1*r3,c\n r1,c' = 1*r0,c + 2*r1,c + 3*r2,c + 1*r3,c\n r2,c' = 1*r0,c + 1*r1,c + 2*r2,c + 3*r3,c\n r3,c' = 3*r0,c + 1*r1,c + 1*r2,c + 2*r3,c\n\n As usual, the multiplication is as previously defined and the\n addition is XOR. In order to optimize mixing columns we can store\n the multiplication results in tables. If you think of the whole\n column as a word (it might help to visualize by mentally rotating\n the equations above by counterclockwise 90 degrees) then you can\n see that it would be useful to map the multiplications performed on\n each byte (r0, r1, r2, r3) onto a word as well. For instance, we\n could map 2*r0,1*r0,1*r0,3*r0 onto a word by storing 2*r0 in the\n highest 8 bits and 3*r0 in the lowest 8 bits (with the other two\n respectively in the middle). This means that a table can be\n constructed that uses r0 as an index to the word. We can do the\n same with r1, r2, and r3, creating a total of 4 tables.\n\n To construct a full c', we can just look up each byte of c in\n their respective tables and XOR the results together.\n\n Also, to build each table we only have to calculate the word\n for 2,1,1,3 for every byte ... which we can do on each iteration\n of this loop since we will iterate over every byte. After we have\n calculated 2,1,1,3 we can get the results for the other tables\n by cycling the byte at the end to the beginning. For instance\n we can take the result of table 2,1,1,3 and produce table 3,2,1,1\n by moving the right most byte to the left most position just like\n how you can imagine the 3 moved out of 2,1,1,3 and to the front\n to produce 3,2,1,1.\n\n There is another optimization in that the same multiples of\n the current element we need in order to advance our generator\n to the next iteration can be reused in performing the 2,1,1,3\n calculation. We also calculate the inverse mix column tables,\n with e,9,d,b being the inverse of 2,1,1,3.\n\n When we're done, and we need to actually mix columns, the first\n byte of each state word should be put through mix[0] (2,1,1,3),\n the second through mix[1] (3,2,1,1) and so forth. Then they should\n be XOR'd together to produce the fully mixed column.\n */\n\n // calculate mix and imix table values\n sx2 = xtime[sx];\n e2 = xtime[e];\n e4 = xtime[e2];\n e8 = xtime[e4];\n me =\n (sx2 << 24) ^ // 2\n (sx << 16) ^ // 1\n (sx << 8) ^ // 1\n (sx ^ sx2); // 3\n ime =\n (e2 ^ e4 ^ e8) << 24 ^ // E (14)\n (e ^ e8) << 16 ^ // 9\n (e ^ e4 ^ e8) << 8 ^ // D (13)\n (e ^ e2 ^ e8); // B (11)\n // produce each of the mix tables by rotating the 2,1,1,3 value\n for(var n = 0; n < 4; ++n) {\n mix[n][e] = me;\n imix[n][sx] = ime;\n // cycle the right most byte to the left most position\n // ie: 2,1,1,3 becomes 3,2,1,1\n me = me << 24 | me >>> 8;\n ime = ime << 24 | ime >>> 8;\n }\n\n // get next element and inverse\n if(e === 0) {\n // 1 is the inverse of 1\n e = ei = 1;\n } else {\n // e = 2e + 2*2*2*(10e)) = multiply e by 82 (chosen generator)\n // ei = ei + 2*2*ei = multiply ei by 5 (inverse generator)\n e = e2 ^ xtime[xtime[xtime[e2 ^ e8]]];\n ei ^= xtime[xtime[ei]];\n }\n }\n}\n\n/**\n * Generates a key schedule using the AES key expansion algorithm.\n *\n * The AES algorithm takes the Cipher Key, K, and performs a Key Expansion\n * routine to generate a key schedule. The Key Expansion generates a total\n * of Nb*(Nr + 1) words: the algorithm requires an initial set of Nb words,\n * and each of the Nr rounds requires Nb words of key data. The resulting\n * key schedule consists of a linear array of 4-byte words, denoted [wi ],\n * with i in the range 0 <= i < Nb(Nr + 1).\n *\n * KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk)\n * AES-128 (Nb=4, Nk=4, Nr=10)\n * AES-192 (Nb=4, Nk=6, Nr=12)\n * AES-256 (Nb=4, Nk=8, Nr=14)\n * Note: Nr=Nk+6.\n *\n * Nb is the number of columns (32-bit words) comprising the State (or\n * number of bytes in a block). For AES, Nb=4.\n *\n * @param key the key to schedule (as an array of 32-bit words).\n * @param decrypt true to modify the key schedule to decrypt, false not to.\n *\n * @return the generated key schedule.\n */\nfunction _expandKey(key, decrypt) {\n // copy the key's words to initialize the key schedule\n var w = key.slice(0);\n\n /* RotWord() will rotate a word, moving the first byte to the last\n byte's position (shifting the other bytes left).\n\n We will be getting the value of Rcon at i / Nk. 'i' will iterate\n from Nk to (Nb * Nr+1). Nk = 4 (4 byte key), Nb = 4 (4 words in\n a block), Nr = Nk + 6 (10). Therefore 'i' will iterate from\n 4 to 44 (exclusive). Each time we iterate 4 times, i / Nk will\n increase by 1. We use a counter iNk to keep track of this.\n */\n\n // go through the rounds expanding the key\n var temp, iNk = 1;\n var Nk = w.length;\n var Nr1 = Nk + 6 + 1;\n var end = Nb * Nr1;\n for(var i = Nk; i < end; ++i) {\n temp = w[i - 1];\n if(i % Nk === 0) {\n // temp = SubWord(RotWord(temp)) ^ Rcon[i / Nk]\n temp =\n sbox[temp >>> 16 & 255] << 24 ^\n sbox[temp >>> 8 & 255] << 16 ^\n sbox[temp & 255] << 8 ^\n sbox[temp >>> 24] ^ (rcon[iNk] << 24);\n iNk++;\n } else if(Nk > 6 && (i % Nk === 4)) {\n // temp = SubWord(temp)\n temp =\n sbox[temp >>> 24] << 24 ^\n sbox[temp >>> 16 & 255] << 16 ^\n sbox[temp >>> 8 & 255] << 8 ^\n sbox[temp & 255];\n }\n w[i] = w[i - Nk] ^ temp;\n }\n\n /* When we are updating a cipher block we always use the code path for\n encryption whether we are decrypting or not (to shorten code and\n simplify the generation of look up tables). However, because there\n are differences in the decryption algorithm, other than just swapping\n in different look up tables, we must transform our key schedule to\n account for these changes:\n\n 1. The decryption algorithm gets its key rounds in reverse order.\n 2. The decryption algorithm adds the round key before mixing columns\n instead of afterwards.\n\n We don't need to modify our key schedule to handle the first case,\n we can just traverse the key schedule in reverse order when decrypting.\n\n The second case requires a little work.\n\n The tables we built for performing rounds will take an input and then\n perform SubBytes() and MixColumns() or, for the decrypt version,\n InvSubBytes() and InvMixColumns(). But the decrypt algorithm requires\n us to AddRoundKey() before InvMixColumns(). This means we'll need to\n apply some transformations to the round key to inverse-mix its columns\n so they'll be correct for moving AddRoundKey() to after the state has\n had its columns inverse-mixed.\n\n To inverse-mix the columns of the state when we're decrypting we use a\n lookup table that will apply InvSubBytes() and InvMixColumns() at the\n same time. However, the round key's bytes are not inverse-substituted\n in the decryption algorithm. To get around this problem, we can first\n substitute the bytes in the round key so that when we apply the\n transformation via the InvSubBytes()+InvMixColumns() table, it will\n undo our substitution leaving us with the original value that we\n want -- and then inverse-mix that value.\n\n This change will correctly alter our key schedule so that we can XOR\n each round key with our already transformed decryption state. This\n allows us to use the same code path as the encryption algorithm.\n\n We make one more change to the decryption key. Since the decryption\n algorithm runs in reverse from the encryption algorithm, we reverse\n the order of the round keys to avoid having to iterate over the key\n schedule backwards when running the encryption algorithm later in\n decryption mode. In addition to reversing the order of the round keys,\n we also swap each round key's 2nd and 4th rows. See the comments\n section where rounds are performed for more details about why this is\n done. These changes are done inline with the other substitution\n described above.\n */\n if(decrypt) {\n var tmp;\n var m0 = imix[0];\n var m1 = imix[1];\n var m2 = imix[2];\n var m3 = imix[3];\n var wnew = w.slice(0);\n end = w.length;\n for(var i = 0, wi = end - Nb; i < end; i += Nb, wi -= Nb) {\n // do not sub the first or last round key (round keys are Nb\n // words) as no column mixing is performed before they are added,\n // but do change the key order\n if(i === 0 || i === (end - Nb)) {\n wnew[i] = w[wi];\n wnew[i + 1] = w[wi + 3];\n wnew[i + 2] = w[wi + 2];\n wnew[i + 3] = w[wi + 1];\n } else {\n // substitute each round key byte because the inverse-mix\n // table will inverse-substitute it (effectively cancel the\n // substitution because round key bytes aren't sub'd in\n // decryption mode) and swap indexes 3 and 1\n for(var n = 0; n < Nb; ++n) {\n tmp = w[wi + n];\n wnew[i + (3&-n)] =\n m0[sbox[tmp >>> 24]] ^\n m1[sbox[tmp >>> 16 & 255]] ^\n m2[sbox[tmp >>> 8 & 255]] ^\n m3[sbox[tmp & 255]];\n }\n }\n }\n w = wnew;\n }\n\n return w;\n}\n\n/**\n * Updates a single block (16 bytes) using AES. The update will either\n * encrypt or decrypt the block.\n *\n * @param w the key schedule.\n * @param input the input block (an array of 32-bit words).\n * @param output the updated output block.\n * @param decrypt true to decrypt the block, false to encrypt it.\n */\nfunction _updateBlock(w, input, output, decrypt) {\n /*\n Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])\n begin\n byte state[4,Nb]\n state = in\n AddRoundKey(state, w[0, Nb-1])\n for round = 1 step 1 to Nr-1\n SubBytes(state)\n ShiftRows(state)\n MixColumns(state)\n AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])\n end for\n SubBytes(state)\n ShiftRows(state)\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n out = state\n end\n\n InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])\n begin\n byte state[4,Nb]\n state = in\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n for round = Nr-1 step -1 downto 1\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])\n InvMixColumns(state)\n end for\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[0, Nb-1])\n out = state\n end\n */\n\n // Encrypt: AddRoundKey(state, w[0, Nb-1])\n // Decrypt: AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n var Nr = w.length / 4 - 1;\n var m0, m1, m2, m3, sub;\n if(decrypt) {\n m0 = imix[0];\n m1 = imix[1];\n m2 = imix[2];\n m3 = imix[3];\n sub = isbox;\n } else {\n m0 = mix[0];\n m1 = mix[1];\n m2 = mix[2];\n m3 = mix[3];\n sub = sbox;\n }\n var a, b, c, d, a2, b2, c2;\n a = input[0] ^ w[0];\n b = input[decrypt ? 3 : 1] ^ w[1];\n c = input[2] ^ w[2];\n d = input[decrypt ? 1 : 3] ^ w[3];\n var i = 3;\n\n /* In order to share code we follow the encryption algorithm when both\n encrypting and decrypting. To account for the changes required in the\n decryption algorithm, we use different lookup tables when decrypting\n and use a modified key schedule to account for the difference in the\n order of transformations applied when performing rounds. We also get\n key rounds in reverse order (relative to encryption). */\n for(var round = 1; round < Nr; ++round) {\n /* As described above, we'll be using table lookups to perform the\n column mixing. Each column is stored as a word in the state (the\n array 'input' has one column as a word at each index). In order to\n mix a column, we perform these transformations on each row in c,\n which is 1 byte in each word. The new column for c0 is c'0:\n\n m0 m1 m2 m3\n r0,c'0 = 2*r0,c0 + 3*r1,c0 + 1*r2,c0 + 1*r3,c0\n r1,c'0 = 1*r0,c0 + 2*r1,c0 + 3*r2,c0 + 1*r3,c0\n r2,c'0 = 1*r0,c0 + 1*r1,c0 + 2*r2,c0 + 3*r3,c0\n r3,c'0 = 3*r0,c0 + 1*r1,c0 + 1*r2,c0 + 2*r3,c0\n\n So using mix tables where c0 is a word with r0 being its upper\n 8 bits and r3 being its lower 8 bits:\n\n m0[c0 >> 24] will yield this word: [2*r0,1*r0,1*r0,3*r0]\n ...\n m3[c0 & 255] will yield this word: [1*r3,1*r3,3*r3,2*r3]\n\n Therefore to mix the columns in each word in the state we\n do the following (& 255 omitted for brevity):\n c'0,r0 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r1 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r2 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r3 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n\n However, before mixing, the algorithm requires us to perform\n ShiftRows(). The ShiftRows() transformation cyclically shifts the\n last 3 rows of the state over different offsets. The first row\n (r = 0) is not shifted.\n\n s'_r,c = s_r,(c + shift(r, Nb) mod Nb\n for 0 < r < 4 and 0 <= c < Nb and\n shift(1, 4) = 1\n shift(2, 4) = 2\n shift(3, 4) = 3.\n\n This causes the first byte in r = 1 to be moved to the end of\n the row, the first 2 bytes in r = 2 to be moved to the end of\n the row, the first 3 bytes in r = 3 to be moved to the end of\n the row:\n\n r1: [c0 c1 c2 c3] => [c1 c2 c3 c0]\n r2: [c0 c1 c2 c3] [c2 c3 c0 c1]\n r3: [c0 c1 c2 c3] [c3 c0 c1 c2]\n\n We can make these substitutions inline with our column mixing to\n generate an updated set of equations to produce each word in the\n state (note the columns have changed positions):\n\n c0 c1 c2 c3 => c0 c1 c2 c3\n c0 c1 c2 c3 c1 c2 c3 c0 (cycled 1 byte)\n c0 c1 c2 c3 c2 c3 c0 c1 (cycled 2 bytes)\n c0 c1 c2 c3 c3 c0 c1 c2 (cycled 3 bytes)\n\n Therefore:\n\n c'0 = 2*r0,c0 + 3*r1,c1 + 1*r2,c2 + 1*r3,c3\n c'0 = 1*r0,c0 + 2*r1,c1 + 3*r2,c2 + 1*r3,c3\n c'0 = 1*r0,c0 + 1*r1,c1 + 2*r2,c2 + 3*r3,c3\n c'0 = 3*r0,c0 + 1*r1,c1 + 1*r2,c2 + 2*r3,c3\n\n c'1 = 2*r0,c1 + 3*r1,c2 + 1*r2,c3 + 1*r3,c0\n c'1 = 1*r0,c1 + 2*r1,c2 + 3*r2,c3 + 1*r3,c0\n c'1 = 1*r0,c1 + 1*r1,c2 + 2*r2,c3 + 3*r3,c0\n c'1 = 3*r0,c1 + 1*r1,c2 + 1*r2,c3 + 2*r3,c0\n\n ... and so forth for c'2 and c'3. The important distinction is\n that the columns are cycling, with c0 being used with the m0\n map when calculating c0, but c1 being used with the m0 map when\n calculating c1 ... and so forth.\n\n When performing the inverse we transform the mirror image and\n skip the bottom row, instead of the top one, and move upwards:\n\n c3 c2 c1 c0 => c0 c3 c2 c1 (cycled 3 bytes) *same as encryption\n c3 c2 c1 c0 c1 c0 c3 c2 (cycled 2 bytes)\n c3 c2 c1 c0 c2 c1 c0 c3 (cycled 1 byte) *same as encryption\n c3 c2 c1 c0 c3 c2 c1 c0\n\n If you compare the resulting matrices for ShiftRows()+MixColumns()\n and for InvShiftRows()+InvMixColumns() the 2nd and 4th columns are\n different (in encrypt mode vs. decrypt mode). So in order to use\n the same code to handle both encryption and decryption, we will\n need to do some mapping.\n\n If in encryption mode we let a=c0, b=c1, c=c2, d=c3, and r be\n a row number in the state, then the resulting matrix in encryption\n mode for applying the above transformations would be:\n\n r1: a b c d\n r2: b c d a\n r3: c d a b\n r4: d a b c\n\n If we did the same in decryption mode we would get:\n\n r1: a d c b\n r2: b a d c\n r3: c b a d\n r4: d c b a\n\n If instead we swap d and b (set b=c3 and d=c1), then we get:\n\n r1: a b c d\n r2: d a b c\n r3: c d a b\n r4: b c d a\n\n Now the 1st and 3rd rows are the same as the encryption matrix. All\n we need to do then to make the mapping exactly the same is to swap\n the 2nd and 4th rows when in decryption mode. To do this without\n having to do it on each iteration, we swapped the 2nd and 4th rows\n in the decryption key schedule. We also have to do the swap above\n when we first pull in the input and when we set the final output. */\n a2 =\n m0[a >>> 24] ^\n m1[b >>> 16 & 255] ^\n m2[c >>> 8 & 255] ^\n m3[d & 255] ^ w[++i];\n b2 =\n m0[b >>> 24] ^\n m1[c >>> 16 & 255] ^\n m2[d >>> 8 & 255] ^\n m3[a & 255] ^ w[++i];\n c2 =\n m0[c >>> 24] ^\n m1[d >>> 16 & 255] ^\n m2[a >>> 8 & 255] ^\n m3[b & 255] ^ w[++i];\n d =\n m0[d >>> 24] ^\n m1[a >>> 16 & 255] ^\n m2[b >>> 8 & 255] ^\n m3[c & 255] ^ w[++i];\n a = a2;\n b = b2;\n c = c2;\n }\n\n /*\n Encrypt:\n SubBytes(state)\n ShiftRows(state)\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n\n Decrypt:\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[0, Nb-1])\n */\n // Note: rows are shifted inline\n output[0] =\n (sub[a >>> 24] << 24) ^\n (sub[b >>> 16 & 255] << 16) ^\n (sub[c >>> 8 & 255] << 8) ^\n (sub[d & 255]) ^ w[++i];\n output[decrypt ? 3 : 1] =\n (sub[b >>> 24] << 24) ^\n (sub[c >>> 16 & 255] << 16) ^\n (sub[d >>> 8 & 255] << 8) ^\n (sub[a & 255]) ^ w[++i];\n output[2] =\n (sub[c >>> 24] << 24) ^\n (sub[d >>> 16 & 255] << 16) ^\n (sub[a >>> 8 & 255] << 8) ^\n (sub[b & 255]) ^ w[++i];\n output[decrypt ? 1 : 3] =\n (sub[d >>> 24] << 24) ^\n (sub[a >>> 16 & 255] << 16) ^\n (sub[b >>> 8 & 255] << 8) ^\n (sub[c & 255]) ^ w[++i];\n}\n\n/**\n * Deprecated. Instead, use:\n *\n * forge.cipher.createCipher('AES-', key);\n * forge.cipher.createDecipher('AES-', key);\n *\n * Creates a deprecated AES cipher object. This object's mode will default to\n * CBC (cipher-block-chaining).\n *\n * The key and iv may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param options the options to use.\n * key the symmetric key to use.\n * output the buffer to write to.\n * decrypt true for decryption, false for encryption.\n * mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nfunction _createCipher(options) {\n options = options || {};\n var mode = (options.mode || 'CBC').toUpperCase();\n var algorithm = 'AES-' + mode;\n\n var cipher;\n if(options.decrypt) {\n cipher = forge.cipher.createDecipher(algorithm, options.key);\n } else {\n cipher = forge.cipher.createCipher(algorithm, options.key);\n }\n\n // backwards compatible start API\n var start = cipher.start;\n cipher.start = function(iv, options) {\n // backwards compatibility: support second arg as output buffer\n var output = null;\n if(options instanceof forge.util.ByteBuffer) {\n output = options;\n options = {};\n }\n options = options || {};\n options.output = output;\n options.iv = iv;\n start.call(cipher, options);\n };\n\n return cipher;\n}\n","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n const prefixCodePoint = prefix.codePointAt(0);\n /* c8 ignore next 3 */\n if (prefixCodePoint === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefixCodePoint;\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});\n//# sourceMappingURL=base10.js.map","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});\n//# sourceMappingURL=base16.js.map","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});\n//# sourceMappingURL=base2.js.map","import { from } from './base.js';\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂');\nconst alphabetBytesToChars = (alphabet.reduce((p, c, i) => { p[i] = c; return p; }, ([])));\nconst alphabetCharsToBytes = (alphabet.reduce((p, c, i) => {\n const codePoint = c.codePointAt(0);\n if (codePoint == null) {\n throw new Error(`Invalid character: ${c}`);\n }\n p[codePoint] = i;\n return p;\n}, ([])));\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const codePoint = char.codePointAt(0);\n if (codePoint == null) {\n throw new Error(`Invalid character: ${char}`);\n }\n const byt = alphabetCharsToBytes[codePoint];\n if (byt == null) {\n throw new Error(`Non-base256emoji character: ${char}`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n});\n//# sourceMappingURL=base256emoji.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base36.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});\n//# sourceMappingURL=base8.js.map","import { fromString, toString } from '../bytes.js';\nimport { from } from './base.js';\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n});\n//# sourceMappingURL=identity.js.map","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 0x0200;\nexport function encode(node) {\n return textEncoder.encode(JSON.stringify(node));\n}\nexport function decode(data) {\n return JSON.parse(textDecoder.decode(data));\n}\n//# sourceMappingURL=json.js.map","import { coerce } from '../bytes.js';\nexport const name = 'raw';\nexport const code = 0x55;\nexport function encode(node) {\n return coerce(node);\n}\nexport function decode(data) {\n return coerce(data);\n}\n//# sourceMappingURL=raw.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n/**\n * Used to check that the passed multihash has the passed code\n */\nexport function hasCode(digest, code) {\n return digest.code === code;\n}\n//# sourceMappingURL=digest.js.map","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0x0;\nconst name = 'identity';\nconst encode = coerce;\nfunction digest(input) {\n return Digest.create(code, encode(input));\n}\nexport const identity = { code, name, encode, digest };\n//# sourceMappingURL=identity.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","import { base32 } from './bases/base32.js';\nimport { base36 } from './bases/base36.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n case base36.prefix: {\n const decoder = base ?? base36;\n return [base36.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base2 from './bases/base2.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base8 from './bases/base8.js';\nimport * as identityBase from './bases/identity.js';\nimport * as json from './codecs/json.js';\nimport * as raw from './codecs/raw.js';\nimport * as identity from './hashes/identity.js';\nimport * as sha2 from './hashes/sha2.js';\nimport { CID, hasher, digest, varint, bytes } from './index.js';\nexport const bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji };\nexport const hashes = { ...sha2, ...identity };\nexport const codecs = { raw, json };\nexport { CID, hasher, digest, varint, bytes };\n//# sourceMappingURL=basics.js.map","/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc(size = 0) {\n return new Uint8Array(size);\n}\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe(size = 0) {\n return new Uint8Array(size);\n}\n//# sourceMappingURL=alloc.js.map","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '#alloc';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: {\n decode\n }\n };\n}\nconst string = createCodec('utf8', 'u', (buf) => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, (str) => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', (buf) => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, (str) => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;\n//# sourceMappingURL=bases.js.map","import bases, {} from './util/bases.js';\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n // add multibase prefix\n return base.decoder.decode(`${base.prefix}${string}`); // eslint-disable-line @typescript-eslint/restrict-template-expressions\n}\n//# sourceMappingURL=from-string.js.map","import bases, {} from './util/bases.js';\n/**\n * Turns a `Uint8Array` into a string.\n *\n * Supports `utf8`, `utf-8` and any encoding supported by the multibase module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n // strip multibase prefix\n return base.encoder.encode(array).substring(1);\n}\n//# sourceMappingURL=to-string.js.map","/* eslint-env browser */\n// Check native crypto exists and is enabled (In insecure context `self.crypto`\n// exists but `self.crypto.subtle` does not).\nexport default {\n get(win = globalThis) {\n const nativeCrypto = win.crypto;\n if (nativeCrypto == null || nativeCrypto.subtle == null) {\n throw Object.assign(new Error('Missing Web Crypto API. ' +\n 'The most likely cause of this error is that this page is being accessed ' +\n 'from an insecure context (i.e. not HTTPS). For more information and ' +\n 'possible resolutions see ' +\n 'https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api'), { code: 'ERR_MISSING_WEB_CRYPTO' });\n }\n return nativeCrypto;\n }\n};\n//# sourceMappingURL=webcrypto.js.map","/**\n * Object IDs for ASN.1.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nforge.pki = forge.pki || {};\nvar oids = module.exports = forge.pki.oids = forge.oids = forge.oids || {};\n\n// set id to name mapping and name to id mapping\nfunction _IN(id, name) {\n oids[id] = name;\n oids[name] = id;\n}\n// set id to name mapping only\nfunction _I_(id, name) {\n oids[id] = name;\n}\n\n// algorithm OIDs\n_IN('1.2.840.113549.1.1.1', 'rsaEncryption');\n// Note: md2 & md4 not implemented\n//_IN('1.2.840.113549.1.1.2', 'md2WithRSAEncryption');\n//_IN('1.2.840.113549.1.1.3', 'md4WithRSAEncryption');\n_IN('1.2.840.113549.1.1.4', 'md5WithRSAEncryption');\n_IN('1.2.840.113549.1.1.5', 'sha1WithRSAEncryption');\n_IN('1.2.840.113549.1.1.7', 'RSAES-OAEP');\n_IN('1.2.840.113549.1.1.8', 'mgf1');\n_IN('1.2.840.113549.1.1.9', 'pSpecified');\n_IN('1.2.840.113549.1.1.10', 'RSASSA-PSS');\n_IN('1.2.840.113549.1.1.11', 'sha256WithRSAEncryption');\n_IN('1.2.840.113549.1.1.12', 'sha384WithRSAEncryption');\n_IN('1.2.840.113549.1.1.13', 'sha512WithRSAEncryption');\n// Edwards-curve Digital Signature Algorithm (EdDSA) Ed25519\n_IN('1.3.101.112', 'EdDSA25519');\n\n_IN('1.2.840.10040.4.3', 'dsa-with-sha1');\n\n_IN('1.3.14.3.2.7', 'desCBC');\n\n_IN('1.3.14.3.2.26', 'sha1');\n// Deprecated equivalent of sha1WithRSAEncryption\n_IN('1.3.14.3.2.29', 'sha1WithRSASignature');\n_IN('2.16.840.1.101.3.4.2.1', 'sha256');\n_IN('2.16.840.1.101.3.4.2.2', 'sha384');\n_IN('2.16.840.1.101.3.4.2.3', 'sha512');\n_IN('2.16.840.1.101.3.4.2.4', 'sha224');\n_IN('2.16.840.1.101.3.4.2.5', 'sha512-224');\n_IN('2.16.840.1.101.3.4.2.6', 'sha512-256');\n_IN('1.2.840.113549.2.2', 'md2');\n_IN('1.2.840.113549.2.5', 'md5');\n\n// pkcs#7 content types\n_IN('1.2.840.113549.1.7.1', 'data');\n_IN('1.2.840.113549.1.7.2', 'signedData');\n_IN('1.2.840.113549.1.7.3', 'envelopedData');\n_IN('1.2.840.113549.1.7.4', 'signedAndEnvelopedData');\n_IN('1.2.840.113549.1.7.5', 'digestedData');\n_IN('1.2.840.113549.1.7.6', 'encryptedData');\n\n// pkcs#9 oids\n_IN('1.2.840.113549.1.9.1', 'emailAddress');\n_IN('1.2.840.113549.1.9.2', 'unstructuredName');\n_IN('1.2.840.113549.1.9.3', 'contentType');\n_IN('1.2.840.113549.1.9.4', 'messageDigest');\n_IN('1.2.840.113549.1.9.5', 'signingTime');\n_IN('1.2.840.113549.1.9.6', 'counterSignature');\n_IN('1.2.840.113549.1.9.7', 'challengePassword');\n_IN('1.2.840.113549.1.9.8', 'unstructuredAddress');\n_IN('1.2.840.113549.1.9.14', 'extensionRequest');\n\n_IN('1.2.840.113549.1.9.20', 'friendlyName');\n_IN('1.2.840.113549.1.9.21', 'localKeyId');\n_IN('1.2.840.113549.1.9.22.1', 'x509Certificate');\n\n// pkcs#12 safe bags\n_IN('1.2.840.113549.1.12.10.1.1', 'keyBag');\n_IN('1.2.840.113549.1.12.10.1.2', 'pkcs8ShroudedKeyBag');\n_IN('1.2.840.113549.1.12.10.1.3', 'certBag');\n_IN('1.2.840.113549.1.12.10.1.4', 'crlBag');\n_IN('1.2.840.113549.1.12.10.1.5', 'secretBag');\n_IN('1.2.840.113549.1.12.10.1.6', 'safeContentsBag');\n\n// password-based-encryption for pkcs#12\n_IN('1.2.840.113549.1.5.13', 'pkcs5PBES2');\n_IN('1.2.840.113549.1.5.12', 'pkcs5PBKDF2');\n\n_IN('1.2.840.113549.1.12.1.1', 'pbeWithSHAAnd128BitRC4');\n_IN('1.2.840.113549.1.12.1.2', 'pbeWithSHAAnd40BitRC4');\n_IN('1.2.840.113549.1.12.1.3', 'pbeWithSHAAnd3-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.4', 'pbeWithSHAAnd2-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.5', 'pbeWithSHAAnd128BitRC2-CBC');\n_IN('1.2.840.113549.1.12.1.6', 'pbewithSHAAnd40BitRC2-CBC');\n\n// hmac OIDs\n_IN('1.2.840.113549.2.7', 'hmacWithSHA1');\n_IN('1.2.840.113549.2.8', 'hmacWithSHA224');\n_IN('1.2.840.113549.2.9', 'hmacWithSHA256');\n_IN('1.2.840.113549.2.10', 'hmacWithSHA384');\n_IN('1.2.840.113549.2.11', 'hmacWithSHA512');\n\n// symmetric key algorithm oids\n_IN('1.2.840.113549.3.7', 'des-EDE3-CBC');\n_IN('2.16.840.1.101.3.4.1.2', 'aes128-CBC');\n_IN('2.16.840.1.101.3.4.1.22', 'aes192-CBC');\n_IN('2.16.840.1.101.3.4.1.42', 'aes256-CBC');\n\n// certificate issuer/subject OIDs\n_IN('2.5.4.3', 'commonName');\n_IN('2.5.4.4', 'surname');\n_IN('2.5.4.5', 'serialNumber');\n_IN('2.5.4.6', 'countryName');\n_IN('2.5.4.7', 'localityName');\n_IN('2.5.4.8', 'stateOrProvinceName');\n_IN('2.5.4.9', 'streetAddress');\n_IN('2.5.4.10', 'organizationName');\n_IN('2.5.4.11', 'organizationalUnitName');\n_IN('2.5.4.12', 'title');\n_IN('2.5.4.13', 'description');\n_IN('2.5.4.15', 'businessCategory');\n_IN('2.5.4.17', 'postalCode');\n_IN('2.5.4.42', 'givenName');\n_IN('1.3.6.1.4.1.311.60.2.1.2', 'jurisdictionOfIncorporationStateOrProvinceName');\n_IN('1.3.6.1.4.1.311.60.2.1.3', 'jurisdictionOfIncorporationCountryName');\n\n// X.509 extension OIDs\n_IN('2.16.840.1.113730.1.1', 'nsCertType');\n_IN('2.16.840.1.113730.1.13', 'nsComment'); // deprecated in theory; still widely used\n_I_('2.5.29.1', 'authorityKeyIdentifier'); // deprecated, use .35\n_I_('2.5.29.2', 'keyAttributes'); // obsolete use .37 or .15\n_I_('2.5.29.3', 'certificatePolicies'); // deprecated, use .32\n_I_('2.5.29.4', 'keyUsageRestriction'); // obsolete use .37 or .15\n_I_('2.5.29.5', 'policyMapping'); // deprecated use .33\n_I_('2.5.29.6', 'subtreesConstraint'); // obsolete use .30\n_I_('2.5.29.7', 'subjectAltName'); // deprecated use .17\n_I_('2.5.29.8', 'issuerAltName'); // deprecated use .18\n_I_('2.5.29.9', 'subjectDirectoryAttributes');\n_I_('2.5.29.10', 'basicConstraints'); // deprecated use .19\n_I_('2.5.29.11', 'nameConstraints'); // deprecated use .30\n_I_('2.5.29.12', 'policyConstraints'); // deprecated use .36\n_I_('2.5.29.13', 'basicConstraints'); // deprecated use .19\n_IN('2.5.29.14', 'subjectKeyIdentifier');\n_IN('2.5.29.15', 'keyUsage');\n_I_('2.5.29.16', 'privateKeyUsagePeriod');\n_IN('2.5.29.17', 'subjectAltName');\n_IN('2.5.29.18', 'issuerAltName');\n_IN('2.5.29.19', 'basicConstraints');\n_I_('2.5.29.20', 'cRLNumber');\n_I_('2.5.29.21', 'cRLReason');\n_I_('2.5.29.22', 'expirationDate');\n_I_('2.5.29.23', 'instructionCode');\n_I_('2.5.29.24', 'invalidityDate');\n_I_('2.5.29.25', 'cRLDistributionPoints'); // deprecated use .31\n_I_('2.5.29.26', 'issuingDistributionPoint'); // deprecated use .28\n_I_('2.5.29.27', 'deltaCRLIndicator');\n_I_('2.5.29.28', 'issuingDistributionPoint');\n_I_('2.5.29.29', 'certificateIssuer');\n_I_('2.5.29.30', 'nameConstraints');\n_IN('2.5.29.31', 'cRLDistributionPoints');\n_IN('2.5.29.32', 'certificatePolicies');\n_I_('2.5.29.33', 'policyMappings');\n_I_('2.5.29.34', 'policyConstraints'); // deprecated use .36\n_IN('2.5.29.35', 'authorityKeyIdentifier');\n_I_('2.5.29.36', 'policyConstraints');\n_IN('2.5.29.37', 'extKeyUsage');\n_I_('2.5.29.46', 'freshestCRL');\n_I_('2.5.29.54', 'inhibitAnyPolicy');\n\n// extKeyUsage purposes\n_IN('1.3.6.1.4.1.11129.2.4.2', 'timestampList');\n_IN('1.3.6.1.5.5.7.1.1', 'authorityInfoAccess');\n_IN('1.3.6.1.5.5.7.3.1', 'serverAuth');\n_IN('1.3.6.1.5.5.7.3.2', 'clientAuth');\n_IN('1.3.6.1.5.5.7.3.3', 'codeSigning');\n_IN('1.3.6.1.5.5.7.3.4', 'emailProtection');\n_IN('1.3.6.1.5.5.7.3.8', 'timeStamping');\n","/**\n * Javascript implementation of Abstract Syntax Notation Number One.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n *\n * An API for storing data using the Abstract Syntax Notation Number One\n * format using DER (Distinguished Encoding Rules) encoding. This encoding is\n * commonly used to store data for PKI, i.e. X.509 Certificates, and this\n * implementation exists for that purpose.\n *\n * Abstract Syntax Notation Number One (ASN.1) is used to define the abstract\n * syntax of information without restricting the way the information is encoded\n * for transmission. It provides a standard that allows for open systems\n * communication. ASN.1 defines the syntax of information data and a number of\n * simple data types as well as a notation for describing them and specifying\n * values for them.\n *\n * The RSA algorithm creates public and private keys that are often stored in\n * X.509 or PKCS#X formats -- which use ASN.1 (encoded in DER format). This\n * class provides the most basic functionality required to store and load DSA\n * keys that are encoded according to ASN.1.\n *\n * The most common binary encodings for ASN.1 are BER (Basic Encoding Rules)\n * and DER (Distinguished Encoding Rules). DER is just a subset of BER that\n * has stricter requirements for how data must be encoded.\n *\n * Each ASN.1 structure has a tag (a byte identifying the ASN.1 structure type)\n * and a byte array for the value of this ASN1 structure which may be data or a\n * list of ASN.1 structures.\n *\n * Each ASN.1 structure using BER is (Tag-Length-Value):\n *\n * | byte 0 | bytes X | bytes Y |\n * |--------|---------|----------\n * | tag | length | value |\n *\n * ASN.1 allows for tags to be of \"High-tag-number form\" which allows a tag to\n * be two or more octets, but that is not supported by this class. A tag is\n * only 1 byte. Bits 1-5 give the tag number (ie the data type within a\n * particular 'class'), 6 indicates whether or not the ASN.1 value is\n * constructed from other ASN.1 values, and bits 7 and 8 give the 'class'. If\n * bits 7 and 8 are both zero, the class is UNIVERSAL. If only bit 7 is set,\n * then the class is APPLICATION. If only bit 8 is set, then the class is\n * CONTEXT_SPECIFIC. If both bits 7 and 8 are set, then the class is PRIVATE.\n * The tag numbers for the data types for the class UNIVERSAL are listed below:\n *\n * UNIVERSAL 0 Reserved for use by the encoding rules\n * UNIVERSAL 1 Boolean type\n * UNIVERSAL 2 Integer type\n * UNIVERSAL 3 Bitstring type\n * UNIVERSAL 4 Octetstring type\n * UNIVERSAL 5 Null type\n * UNIVERSAL 6 Object identifier type\n * UNIVERSAL 7 Object descriptor type\n * UNIVERSAL 8 External type and Instance-of type\n * UNIVERSAL 9 Real type\n * UNIVERSAL 10 Enumerated type\n * UNIVERSAL 11 Embedded-pdv type\n * UNIVERSAL 12 UTF8String type\n * UNIVERSAL 13 Relative object identifier type\n * UNIVERSAL 14-15 Reserved for future editions\n * UNIVERSAL 16 Sequence and Sequence-of types\n * UNIVERSAL 17 Set and Set-of types\n * UNIVERSAL 18-22, 25-30 Character string types\n * UNIVERSAL 23-24 Time types\n *\n * The length of an ASN.1 structure is specified after the tag identifier.\n * There is a definite form and an indefinite form. The indefinite form may\n * be used if the encoding is constructed and not all immediately available.\n * The indefinite form is encoded using a length byte with only the 8th bit\n * set. The end of the constructed object is marked using end-of-contents\n * octets (two zero bytes).\n *\n * The definite form looks like this:\n *\n * The length may take up 1 or more bytes, it depends on the length of the\n * value of the ASN.1 structure. DER encoding requires that if the ASN.1\n * structure has a value that has a length greater than 127, more than 1 byte\n * will be used to store its length, otherwise just one byte will be used.\n * This is strict.\n *\n * In the case that the length of the ASN.1 value is less than 127, 1 octet\n * (byte) is used to store the \"short form\" length. The 8th bit has a value of\n * 0 indicating the length is \"short form\" and not \"long form\" and bits 7-1\n * give the length of the data. (The 8th bit is the left-most, most significant\n * bit: also known as big endian or network format).\n *\n * In the case that the length of the ASN.1 value is greater than 127, 2 to\n * 127 octets (bytes) are used to store the \"long form\" length. The first\n * byte's 8th bit is set to 1 to indicate the length is \"long form.\" Bits 7-1\n * give the number of additional octets. All following octets are in base 256\n * with the most significant digit first (typical big-endian binary unsigned\n * integer storage). So, for instance, if the length of a value was 257, the\n * first byte would be set to:\n *\n * 10000010 = 130 = 0x82.\n *\n * This indicates there are 2 octets (base 256) for the length. The second and\n * third bytes (the octets just mentioned) would store the length in base 256:\n *\n * octet 2: 00000001 = 1 * 256^1 = 256\n * octet 3: 00000001 = 1 * 256^0 = 1\n * total = 257\n *\n * The algorithm for converting a js integer value of 257 to base-256 is:\n *\n * var value = 257;\n * var bytes = [];\n * bytes[0] = (value >>> 8) & 0xFF; // most significant byte first\n * bytes[1] = value & 0xFF; // least significant byte last\n *\n * On the ASN.1 UNIVERSAL Object Identifier (OID) type:\n *\n * An OID can be written like: \"value1.value2.value3...valueN\"\n *\n * The DER encoding rules:\n *\n * The first byte has the value 40 * value1 + value2.\n * The following bytes, if any, encode the remaining values. Each value is\n * encoded in base 128, most significant digit first (big endian), with as\n * few digits as possible, and the most significant bit of each byte set\n * to 1 except the last in each value's encoding. For example: Given the\n * OID \"1.2.840.113549\", its DER encoding is (remember each byte except the\n * last one in each encoding is OR'd with 0x80):\n *\n * byte 1: 40 * 1 + 2 = 42 = 0x2A.\n * bytes 2-3: 128 * 6 + 72 = 840 = 6 72 = 6 72 = 0x0648 = 0x8648\n * bytes 4-6: 16384 * 6 + 128 * 119 + 13 = 6 119 13 = 0x06770D = 0x86F70D\n *\n * The final value is: 0x2A864886F70D.\n * The full OID (including ASN.1 tag and length of 6 bytes) is:\n * 0x06062A864886F70D\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./oids');\n\n/* ASN.1 API */\nvar asn1 = module.exports = forge.asn1 = forge.asn1 || {};\n\n/**\n * ASN.1 classes.\n */\nasn1.Class = {\n UNIVERSAL: 0x00,\n APPLICATION: 0x40,\n CONTEXT_SPECIFIC: 0x80,\n PRIVATE: 0xC0\n};\n\n/**\n * ASN.1 types. Not all types are supported by this implementation, only\n * those necessary to implement a simple PKI are implemented.\n */\nasn1.Type = {\n NONE: 0,\n BOOLEAN: 1,\n INTEGER: 2,\n BITSTRING: 3,\n OCTETSTRING: 4,\n NULL: 5,\n OID: 6,\n ODESC: 7,\n EXTERNAL: 8,\n REAL: 9,\n ENUMERATED: 10,\n EMBEDDED: 11,\n UTF8: 12,\n ROID: 13,\n SEQUENCE: 16,\n SET: 17,\n PRINTABLESTRING: 19,\n IA5STRING: 22,\n UTCTIME: 23,\n GENERALIZEDTIME: 24,\n BMPSTRING: 30\n};\n\n/**\n * Creates a new asn1 object.\n *\n * @param tagClass the tag class for the object.\n * @param type the data type (tag number) for the object.\n * @param constructed true if the asn1 object is in constructed form.\n * @param value the value for the object, if it is not constructed.\n * @param [options] the options to use:\n * [bitStringContents] the plain BIT STRING content including padding\n * byte.\n *\n * @return the asn1 object.\n */\nasn1.create = function(tagClass, type, constructed, value, options) {\n /* An asn1 object has a tagClass, a type, a constructed flag, and a\n value. The value's type depends on the constructed flag. If\n constructed, it will contain a list of other asn1 objects. If not,\n it will contain the ASN.1 value as an array of bytes formatted\n according to the ASN.1 data type. */\n\n // remove undefined values\n if(forge.util.isArray(value)) {\n var tmp = [];\n for(var i = 0; i < value.length; ++i) {\n if(value[i] !== undefined) {\n tmp.push(value[i]);\n }\n }\n value = tmp;\n }\n\n var obj = {\n tagClass: tagClass,\n type: type,\n constructed: constructed,\n composed: constructed || forge.util.isArray(value),\n value: value\n };\n if(options && 'bitStringContents' in options) {\n // TODO: copy byte buffer if it's a buffer not a string\n obj.bitStringContents = options.bitStringContents;\n // TODO: add readonly flag to avoid this overhead\n // save copy to detect changes\n obj.original = asn1.copy(obj);\n }\n return obj;\n};\n\n/**\n * Copies an asn1 object.\n *\n * @param obj the asn1 object.\n * @param [options] copy options:\n * [excludeBitStringContents] true to not copy bitStringContents\n *\n * @return the a copy of the asn1 object.\n */\nasn1.copy = function(obj, options) {\n var copy;\n\n if(forge.util.isArray(obj)) {\n copy = [];\n for(var i = 0; i < obj.length; ++i) {\n copy.push(asn1.copy(obj[i], options));\n }\n return copy;\n }\n\n if(typeof obj === 'string') {\n // TODO: copy byte buffer if it's a buffer not a string\n return obj;\n }\n\n copy = {\n tagClass: obj.tagClass,\n type: obj.type,\n constructed: obj.constructed,\n composed: obj.composed,\n value: asn1.copy(obj.value, options)\n };\n if(options && !options.excludeBitStringContents) {\n // TODO: copy byte buffer if it's a buffer not a string\n copy.bitStringContents = obj.bitStringContents;\n }\n return copy;\n};\n\n/**\n * Compares asn1 objects for equality.\n *\n * Note this function does not run in constant time.\n *\n * @param obj1 the first asn1 object.\n * @param obj2 the second asn1 object.\n * @param [options] compare options:\n * [includeBitStringContents] true to compare bitStringContents\n *\n * @return true if the asn1 objects are equal.\n */\nasn1.equals = function(obj1, obj2, options) {\n if(forge.util.isArray(obj1)) {\n if(!forge.util.isArray(obj2)) {\n return false;\n }\n if(obj1.length !== obj2.length) {\n return false;\n }\n for(var i = 0; i < obj1.length; ++i) {\n if(!asn1.equals(obj1[i], obj2[i])) {\n return false;\n }\n }\n return true;\n }\n\n if(typeof obj1 !== typeof obj2) {\n return false;\n }\n\n if(typeof obj1 === 'string') {\n return obj1 === obj2;\n }\n\n var equal = obj1.tagClass === obj2.tagClass &&\n obj1.type === obj2.type &&\n obj1.constructed === obj2.constructed &&\n obj1.composed === obj2.composed &&\n asn1.equals(obj1.value, obj2.value);\n if(options && options.includeBitStringContents) {\n equal = equal && (obj1.bitStringContents === obj2.bitStringContents);\n }\n\n return equal;\n};\n\n/**\n * Gets the length of a BER-encoded ASN.1 value.\n *\n * In case the length is not specified, undefined is returned.\n *\n * @param b the BER-encoded ASN.1 byte buffer, starting with the first\n * length byte.\n *\n * @return the length of the BER-encoded ASN.1 value or undefined.\n */\nasn1.getBerValueLength = function(b) {\n // TODO: move this function and related DER/BER functions to a der.js\n // file; better abstract ASN.1 away from der/ber.\n var b2 = b.getByte();\n if(b2 === 0x80) {\n return undefined;\n }\n\n // see if the length is \"short form\" or \"long form\" (bit 8 set)\n var length;\n var longForm = b2 & 0x80;\n if(!longForm) {\n // length is just the first byte\n length = b2;\n } else {\n // the number of bytes the length is specified in bits 7 through 1\n // and each length byte is in big-endian base-256\n length = b.getInt((b2 & 0x7F) << 3);\n }\n return length;\n};\n\n/**\n * Check if the byte buffer has enough bytes. Throws an Error if not.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the bytes remaining in the current parsing state.\n * @param n the number of bytes the buffer must have.\n */\nfunction _checkBufferLength(bytes, remaining, n) {\n if(n > remaining) {\n var error = new Error('Too few bytes to parse DER.');\n error.available = bytes.length();\n error.remaining = remaining;\n error.requested = n;\n throw error;\n }\n}\n\n/**\n * Gets the length of a BER-encoded ASN.1 value.\n *\n * In case the length is not specified, undefined is returned.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the bytes remaining in the current parsing state.\n *\n * @return the length of the BER-encoded ASN.1 value or undefined.\n */\nvar _getValueLength = function(bytes, remaining) {\n // TODO: move this function and related DER/BER functions to a der.js\n // file; better abstract ASN.1 away from der/ber.\n // fromDer already checked that this byte exists\n var b2 = bytes.getByte();\n remaining--;\n if(b2 === 0x80) {\n return undefined;\n }\n\n // see if the length is \"short form\" or \"long form\" (bit 8 set)\n var length;\n var longForm = b2 & 0x80;\n if(!longForm) {\n // length is just the first byte\n length = b2;\n } else {\n // the number of bytes the length is specified in bits 7 through 1\n // and each length byte is in big-endian base-256\n var longFormBytes = b2 & 0x7F;\n _checkBufferLength(bytes, remaining, longFormBytes);\n length = bytes.getInt(longFormBytes << 3);\n }\n // FIXME: this will only happen for 32 bit getInt with high bit set\n if(length < 0) {\n throw new Error('Negative length: ' + length);\n }\n return length;\n};\n\n/**\n * Parses an asn1 object from a byte buffer in DER format.\n *\n * @param bytes the byte buffer to parse from.\n * @param [strict] true to be strict when checking value lengths, false to\n * allow truncated values (default: true).\n * @param [options] object with options or boolean strict flag\n * [strict] true to be strict when checking value lengths, false to\n * allow truncated values (default: true).\n * [parseAllBytes] true to ensure all bytes are parsed\n * (default: true)\n * [decodeBitStrings] true to attempt to decode the content of\n * BIT STRINGs (not OCTET STRINGs) using strict mode. Note that\n * without schema support to understand the data context this can\n * erroneously decode values that happen to be valid ASN.1. This\n * flag will be deprecated or removed as soon as schema support is\n * available. (default: true)\n *\n * @throws Will throw an error for various malformed input conditions.\n *\n * @return the parsed asn1 object.\n */\nasn1.fromDer = function(bytes, options) {\n if(options === undefined) {\n options = {\n strict: true,\n parseAllBytes: true,\n decodeBitStrings: true\n };\n }\n if(typeof options === 'boolean') {\n options = {\n strict: options,\n parseAllBytes: true,\n decodeBitStrings: true\n };\n }\n if(!('strict' in options)) {\n options.strict = true;\n }\n if(!('parseAllBytes' in options)) {\n options.parseAllBytes = true;\n }\n if(!('decodeBitStrings' in options)) {\n options.decodeBitStrings = true;\n }\n\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n var byteCount = bytes.length();\n var value = _fromDer(bytes, bytes.length(), 0, options);\n if(options.parseAllBytes && bytes.length() !== 0) {\n var error = new Error('Unparsed DER bytes remain after ASN.1 parsing.');\n error.byteCount = byteCount;\n error.remaining = bytes.length();\n throw error;\n }\n return value;\n};\n\n/**\n * Internal function to parse an asn1 object from a byte buffer in DER format.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the number of bytes remaining for this chunk.\n * @param depth the current parsing depth.\n * @param options object with same options as fromDer().\n *\n * @return the parsed asn1 object.\n */\nfunction _fromDer(bytes, remaining, depth, options) {\n // temporary storage for consumption calculations\n var start;\n\n // minimum length for ASN.1 DER structure is 2\n _checkBufferLength(bytes, remaining, 2);\n\n // get the first byte\n var b1 = bytes.getByte();\n // consumed one byte\n remaining--;\n\n // get the tag class\n var tagClass = (b1 & 0xC0);\n\n // get the type (bits 1-5)\n var type = b1 & 0x1F;\n\n // get the variable value length and adjust remaining bytes\n start = bytes.length();\n var length = _getValueLength(bytes, remaining);\n remaining -= start - bytes.length();\n\n // ensure there are enough bytes to get the value\n if(length !== undefined && length > remaining) {\n if(options.strict) {\n var error = new Error('Too few bytes to read ASN.1 value.');\n error.available = bytes.length();\n error.remaining = remaining;\n error.requested = length;\n throw error;\n }\n // Note: be lenient with truncated values and use remaining state bytes\n length = remaining;\n }\n\n // value storage\n var value;\n // possible BIT STRING contents storage\n var bitStringContents;\n\n // constructed flag is bit 6 (32 = 0x20) of the first byte\n var constructed = ((b1 & 0x20) === 0x20);\n if(constructed) {\n // parse child asn1 objects from the value\n value = [];\n if(length === undefined) {\n // asn1 object of indefinite length, read until end tag\n for(;;) {\n _checkBufferLength(bytes, remaining, 2);\n if(bytes.bytes(2) === String.fromCharCode(0, 0)) {\n bytes.getBytes(2);\n remaining -= 2;\n break;\n }\n start = bytes.length();\n value.push(_fromDer(bytes, remaining, depth + 1, options));\n remaining -= start - bytes.length();\n }\n } else {\n // parsing asn1 object of definite length\n while(length > 0) {\n start = bytes.length();\n value.push(_fromDer(bytes, length, depth + 1, options));\n remaining -= start - bytes.length();\n length -= start - bytes.length();\n }\n }\n }\n\n // if a BIT STRING, save the contents including padding\n if(value === undefined && tagClass === asn1.Class.UNIVERSAL &&\n type === asn1.Type.BITSTRING) {\n bitStringContents = bytes.bytes(length);\n }\n\n // determine if a non-constructed value should be decoded as a composed\n // value that contains other ASN.1 objects. BIT STRINGs (and OCTET STRINGs)\n // can be used this way.\n if(value === undefined && options.decodeBitStrings &&\n tagClass === asn1.Class.UNIVERSAL &&\n // FIXME: OCTET STRINGs not yet supported here\n // .. other parts of forge expect to decode OCTET STRINGs manually\n (type === asn1.Type.BITSTRING /*|| type === asn1.Type.OCTETSTRING*/) &&\n length > 1) {\n // save read position\n var savedRead = bytes.read;\n var savedRemaining = remaining;\n var unused = 0;\n if(type === asn1.Type.BITSTRING) {\n /* The first octet gives the number of bits by which the length of the\n bit string is less than the next multiple of eight (this is called\n the \"number of unused bits\").\n\n The second and following octets give the value of the bit string\n converted to an octet string. */\n _checkBufferLength(bytes, remaining, 1);\n unused = bytes.getByte();\n remaining--;\n }\n // if all bits are used, maybe the BIT/OCTET STRING holds ASN.1 objs\n if(unused === 0) {\n try {\n // attempt to parse child asn1 object from the value\n // (stored in array to signal composed value)\n start = bytes.length();\n var subOptions = {\n // enforce strict mode to avoid parsing ASN.1 from plain data\n strict: true,\n decodeBitStrings: true\n };\n var composed = _fromDer(bytes, remaining, depth + 1, subOptions);\n var used = start - bytes.length();\n remaining -= used;\n if(type == asn1.Type.BITSTRING) {\n used++;\n }\n\n // if the data all decoded and the class indicates UNIVERSAL or\n // CONTEXT_SPECIFIC then assume we've got an encapsulated ASN.1 object\n var tc = composed.tagClass;\n if(used === length &&\n (tc === asn1.Class.UNIVERSAL || tc === asn1.Class.CONTEXT_SPECIFIC)) {\n value = [composed];\n }\n } catch(ex) {\n }\n }\n if(value === undefined) {\n // restore read position\n bytes.read = savedRead;\n remaining = savedRemaining;\n }\n }\n\n if(value === undefined) {\n // asn1 not constructed or composed, get raw value\n // TODO: do DER to OID conversion and vice-versa in .toDer?\n\n if(length === undefined) {\n if(options.strict) {\n throw new Error('Non-constructed ASN.1 object of indefinite length.');\n }\n // be lenient and use remaining state bytes\n length = remaining;\n }\n\n if(type === asn1.Type.BMPSTRING) {\n value = '';\n for(; length > 0; length -= 2) {\n _checkBufferLength(bytes, remaining, 2);\n value += String.fromCharCode(bytes.getInt16());\n remaining -= 2;\n }\n } else {\n value = bytes.getBytes(length);\n remaining -= length;\n }\n }\n\n // add BIT STRING contents if available\n var asn1Options = bitStringContents === undefined ? null : {\n bitStringContents: bitStringContents\n };\n\n // create and return asn1 object\n return asn1.create(tagClass, type, constructed, value, asn1Options);\n}\n\n/**\n * Converts the given asn1 object to a buffer of bytes in DER format.\n *\n * @param asn1 the asn1 object to convert to bytes.\n *\n * @return the buffer of bytes.\n */\nasn1.toDer = function(obj) {\n var bytes = forge.util.createBuffer();\n\n // build the first byte\n var b1 = obj.tagClass | obj.type;\n\n // for storing the ASN.1 value\n var value = forge.util.createBuffer();\n\n // use BIT STRING contents if available and data not changed\n var useBitStringContents = false;\n if('bitStringContents' in obj) {\n useBitStringContents = true;\n if(obj.original) {\n useBitStringContents = asn1.equals(obj, obj.original);\n }\n }\n\n if(useBitStringContents) {\n value.putBytes(obj.bitStringContents);\n } else if(obj.composed) {\n // if composed, use each child asn1 object's DER bytes as value\n // turn on 6th bit (0x20 = 32) to indicate asn1 is constructed\n // from other asn1 objects\n if(obj.constructed) {\n b1 |= 0x20;\n } else {\n // type is a bit string, add unused bits of 0x00\n value.putByte(0x00);\n }\n\n // add all of the child DER bytes together\n for(var i = 0; i < obj.value.length; ++i) {\n if(obj.value[i] !== undefined) {\n value.putBuffer(asn1.toDer(obj.value[i]));\n }\n }\n } else {\n // use asn1.value directly\n if(obj.type === asn1.Type.BMPSTRING) {\n for(var i = 0; i < obj.value.length; ++i) {\n value.putInt16(obj.value.charCodeAt(i));\n }\n } else {\n // ensure integer is minimally-encoded\n // TODO: should all leading bytes be stripped vs just one?\n // .. ex '00 00 01' => '01'?\n if(obj.type === asn1.Type.INTEGER &&\n obj.value.length > 1 &&\n // leading 0x00 for positive integer\n ((obj.value.charCodeAt(0) === 0 &&\n (obj.value.charCodeAt(1) & 0x80) === 0) ||\n // leading 0xFF for negative integer\n (obj.value.charCodeAt(0) === 0xFF &&\n (obj.value.charCodeAt(1) & 0x80) === 0x80))) {\n value.putBytes(obj.value.substr(1));\n } else {\n value.putBytes(obj.value);\n }\n }\n }\n\n // add tag byte\n bytes.putByte(b1);\n\n // use \"short form\" encoding\n if(value.length() <= 127) {\n // one byte describes the length\n // bit 8 = 0 and bits 7-1 = length\n bytes.putByte(value.length() & 0x7F);\n } else {\n // use \"long form\" encoding\n // 2 to 127 bytes describe the length\n // first byte: bit 8 = 1 and bits 7-1 = # of additional bytes\n // other bytes: length in base 256, big-endian\n var len = value.length();\n var lenBytes = '';\n do {\n lenBytes += String.fromCharCode(len & 0xFF);\n len = len >>> 8;\n } while(len > 0);\n\n // set first byte to # bytes used to store the length and turn on\n // bit 8 to indicate long-form length is used\n bytes.putByte(lenBytes.length | 0x80);\n\n // concatenate length bytes in reverse since they were generated\n // little endian and we need big endian\n for(var i = lenBytes.length - 1; i >= 0; --i) {\n bytes.putByte(lenBytes.charCodeAt(i));\n }\n }\n\n // concatenate value bytes\n bytes.putBuffer(value);\n return bytes;\n};\n\n/**\n * Converts an OID dot-separated string to a byte buffer. The byte buffer\n * contains only the DER-encoded value, not any tag or length bytes.\n *\n * @param oid the OID dot-separated string.\n *\n * @return the byte buffer.\n */\nasn1.oidToDer = function(oid) {\n // split OID into individual values\n var values = oid.split('.');\n var bytes = forge.util.createBuffer();\n\n // first byte is 40 * value1 + value2\n bytes.putByte(40 * parseInt(values[0], 10) + parseInt(values[1], 10));\n // other bytes are each value in base 128 with 8th bit set except for\n // the last byte for each value\n var last, valueBytes, value, b;\n for(var i = 2; i < values.length; ++i) {\n // produce value bytes in reverse because we don't know how many\n // bytes it will take to store the value\n last = true;\n valueBytes = [];\n value = parseInt(values[i], 10);\n do {\n b = value & 0x7F;\n value = value >>> 7;\n // if value is not last, then turn on 8th bit\n if(!last) {\n b |= 0x80;\n }\n valueBytes.push(b);\n last = false;\n } while(value > 0);\n\n // add value bytes in reverse (needs to be in big endian)\n for(var n = valueBytes.length - 1; n >= 0; --n) {\n bytes.putByte(valueBytes[n]);\n }\n }\n\n return bytes;\n};\n\n/**\n * Converts a DER-encoded byte buffer to an OID dot-separated string. The\n * byte buffer should contain only the DER-encoded value, not any tag or\n * length bytes.\n *\n * @param bytes the byte buffer.\n *\n * @return the OID dot-separated string.\n */\nasn1.derToOid = function(bytes) {\n var oid;\n\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n // first byte is 40 * value1 + value2\n var b = bytes.getByte();\n oid = Math.floor(b / 40) + '.' + (b % 40);\n\n // other bytes are each value in base 128 with 8th bit set except for\n // the last byte for each value\n var value = 0;\n while(bytes.length() > 0) {\n b = bytes.getByte();\n value = value << 7;\n // not the last byte for the value\n if(b & 0x80) {\n value += b & 0x7F;\n } else {\n // last byte\n oid += '.' + (value + b);\n value = 0;\n }\n }\n\n return oid;\n};\n\n/**\n * Converts a UTCTime value to a date.\n *\n * Note: GeneralizedTime has 4 digits for the year and is used for X.509\n * dates past 2049. Parsing that structure hasn't been implemented yet.\n *\n * @param utc the UTCTime value to convert.\n *\n * @return the date.\n */\nasn1.utcTimeToDate = function(utc) {\n /* The following formats can be used:\n\n YYMMDDhhmmZ\n YYMMDDhhmm+hh'mm'\n YYMMDDhhmm-hh'mm'\n YYMMDDhhmmssZ\n YYMMDDhhmmss+hh'mm'\n YYMMDDhhmmss-hh'mm'\n\n Where:\n\n YY is the least significant two digits of the year\n MM is the month (01 to 12)\n DD is the day (01 to 31)\n hh is the hour (00 to 23)\n mm are the minutes (00 to 59)\n ss are the seconds (00 to 59)\n Z indicates that local time is GMT, + indicates that local time is\n later than GMT, and - indicates that local time is earlier than GMT\n hh' is the absolute value of the offset from GMT in hours\n mm' is the absolute value of the offset from GMT in minutes */\n var date = new Date();\n\n // if YY >= 50 use 19xx, if YY < 50 use 20xx\n var year = parseInt(utc.substr(0, 2), 10);\n year = (year >= 50) ? 1900 + year : 2000 + year;\n var MM = parseInt(utc.substr(2, 2), 10) - 1; // use 0-11 for month\n var DD = parseInt(utc.substr(4, 2), 10);\n var hh = parseInt(utc.substr(6, 2), 10);\n var mm = parseInt(utc.substr(8, 2), 10);\n var ss = 0;\n\n // not just YYMMDDhhmmZ\n if(utc.length > 11) {\n // get character after minutes\n var c = utc.charAt(10);\n var end = 10;\n\n // see if seconds are present\n if(c !== '+' && c !== '-') {\n // get seconds\n ss = parseInt(utc.substr(10, 2), 10);\n end += 2;\n }\n }\n\n // update date\n date.setUTCFullYear(year, MM, DD);\n date.setUTCHours(hh, mm, ss, 0);\n\n if(end) {\n // get +/- after end of time\n c = utc.charAt(end);\n if(c === '+' || c === '-') {\n // get hours+minutes offset\n var hhoffset = parseInt(utc.substr(end + 1, 2), 10);\n var mmoffset = parseInt(utc.substr(end + 4, 2), 10);\n\n // calculate offset in milliseconds\n var offset = hhoffset * 60 + mmoffset;\n offset *= 60000;\n\n // apply offset\n if(c === '+') {\n date.setTime(+date - offset);\n } else {\n date.setTime(+date + offset);\n }\n }\n }\n\n return date;\n};\n\n/**\n * Converts a GeneralizedTime value to a date.\n *\n * @param gentime the GeneralizedTime value to convert.\n *\n * @return the date.\n */\nasn1.generalizedTimeToDate = function(gentime) {\n /* The following formats can be used:\n\n YYYYMMDDHHMMSS\n YYYYMMDDHHMMSS.fff\n YYYYMMDDHHMMSSZ\n YYYYMMDDHHMMSS.fffZ\n YYYYMMDDHHMMSS+hh'mm'\n YYYYMMDDHHMMSS.fff+hh'mm'\n YYYYMMDDHHMMSS-hh'mm'\n YYYYMMDDHHMMSS.fff-hh'mm'\n\n Where:\n\n YYYY is the year\n MM is the month (01 to 12)\n DD is the day (01 to 31)\n hh is the hour (00 to 23)\n mm are the minutes (00 to 59)\n ss are the seconds (00 to 59)\n .fff is the second fraction, accurate to three decimal places\n Z indicates that local time is GMT, + indicates that local time is\n later than GMT, and - indicates that local time is earlier than GMT\n hh' is the absolute value of the offset from GMT in hours\n mm' is the absolute value of the offset from GMT in minutes */\n var date = new Date();\n\n var YYYY = parseInt(gentime.substr(0, 4), 10);\n var MM = parseInt(gentime.substr(4, 2), 10) - 1; // use 0-11 for month\n var DD = parseInt(gentime.substr(6, 2), 10);\n var hh = parseInt(gentime.substr(8, 2), 10);\n var mm = parseInt(gentime.substr(10, 2), 10);\n var ss = parseInt(gentime.substr(12, 2), 10);\n var fff = 0;\n var offset = 0;\n var isUTC = false;\n\n if(gentime.charAt(gentime.length - 1) === 'Z') {\n isUTC = true;\n }\n\n var end = gentime.length - 5, c = gentime.charAt(end);\n if(c === '+' || c === '-') {\n // get hours+minutes offset\n var hhoffset = parseInt(gentime.substr(end + 1, 2), 10);\n var mmoffset = parseInt(gentime.substr(end + 4, 2), 10);\n\n // calculate offset in milliseconds\n offset = hhoffset * 60 + mmoffset;\n offset *= 60000;\n\n // apply offset\n if(c === '+') {\n offset *= -1;\n }\n\n isUTC = true;\n }\n\n // check for second fraction\n if(gentime.charAt(14) === '.') {\n fff = parseFloat(gentime.substr(14), 10) * 1000;\n }\n\n if(isUTC) {\n date.setUTCFullYear(YYYY, MM, DD);\n date.setUTCHours(hh, mm, ss, fff);\n\n // apply offset\n date.setTime(+date + offset);\n } else {\n date.setFullYear(YYYY, MM, DD);\n date.setHours(hh, mm, ss, fff);\n }\n\n return date;\n};\n\n/**\n * Converts a date to a UTCTime value.\n *\n * Note: GeneralizedTime has 4 digits for the year and is used for X.509\n * dates past 2049. Converting to a GeneralizedTime hasn't been\n * implemented yet.\n *\n * @param date the date to convert.\n *\n * @return the UTCTime value.\n */\nasn1.dateToUtcTime = function(date) {\n // TODO: validate; currently assumes proper format\n if(typeof date === 'string') {\n return date;\n }\n\n var rval = '';\n\n // create format YYMMDDhhmmssZ\n var format = [];\n format.push(('' + date.getUTCFullYear()).substr(2));\n format.push('' + (date.getUTCMonth() + 1));\n format.push('' + date.getUTCDate());\n format.push('' + date.getUTCHours());\n format.push('' + date.getUTCMinutes());\n format.push('' + date.getUTCSeconds());\n\n // ensure 2 digits are used for each format entry\n for(var i = 0; i < format.length; ++i) {\n if(format[i].length < 2) {\n rval += '0';\n }\n rval += format[i];\n }\n rval += 'Z';\n\n return rval;\n};\n\n/**\n * Converts a date to a GeneralizedTime value.\n *\n * @param date the date to convert.\n *\n * @return the GeneralizedTime value as a string.\n */\nasn1.dateToGeneralizedTime = function(date) {\n // TODO: validate; currently assumes proper format\n if(typeof date === 'string') {\n return date;\n }\n\n var rval = '';\n\n // create format YYYYMMDDHHMMSSZ\n var format = [];\n format.push('' + date.getUTCFullYear());\n format.push('' + (date.getUTCMonth() + 1));\n format.push('' + date.getUTCDate());\n format.push('' + date.getUTCHours());\n format.push('' + date.getUTCMinutes());\n format.push('' + date.getUTCSeconds());\n\n // ensure 2 digits are used for each format entry\n for(var i = 0; i < format.length; ++i) {\n if(format[i].length < 2) {\n rval += '0';\n }\n rval += format[i];\n }\n rval += 'Z';\n\n return rval;\n};\n\n/**\n * Converts a javascript integer to a DER-encoded byte buffer to be used\n * as the value for an INTEGER type.\n *\n * @param x the integer.\n *\n * @return the byte buffer.\n */\nasn1.integerToDer = function(x) {\n var rval = forge.util.createBuffer();\n if(x >= -0x80 && x < 0x80) {\n return rval.putSignedInt(x, 8);\n }\n if(x >= -0x8000 && x < 0x8000) {\n return rval.putSignedInt(x, 16);\n }\n if(x >= -0x800000 && x < 0x800000) {\n return rval.putSignedInt(x, 24);\n }\n if(x >= -0x80000000 && x < 0x80000000) {\n return rval.putSignedInt(x, 32);\n }\n var error = new Error('Integer too large; max is 32-bits.');\n error.integer = x;\n throw error;\n};\n\n/**\n * Converts a DER-encoded byte buffer to a javascript integer. This is\n * typically used to decode the value of an INTEGER type.\n *\n * @param bytes the byte buffer.\n *\n * @return the integer.\n */\nasn1.derToInteger = function(bytes) {\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n var n = bytes.length() * 8;\n if(n > 32) {\n throw new Error('Integer too large; max is 32-bits.');\n }\n return bytes.getSignedInt(n);\n};\n\n/**\n * Validates that the given ASN.1 object is at least a super set of the\n * given ASN.1 structure. Only tag classes and types are checked. An\n * optional map may also be provided to capture ASN.1 values while the\n * structure is checked.\n *\n * To capture an ASN.1 value, set an object in the validator's 'capture'\n * parameter to the key to use in the capture map. To capture the full\n * ASN.1 object, specify 'captureAsn1'. To capture BIT STRING bytes, including\n * the leading unused bits counter byte, specify 'captureBitStringContents'.\n * To capture BIT STRING bytes, without the leading unused bits counter byte,\n * specify 'captureBitStringValue'.\n *\n * Objects in the validator may set a field 'optional' to true to indicate\n * that it isn't necessary to pass validation.\n *\n * @param obj the ASN.1 object to validate.\n * @param v the ASN.1 structure validator.\n * @param capture an optional map to capture values in.\n * @param errors an optional array for storing validation errors.\n *\n * @return true on success, false on failure.\n */\nasn1.validate = function(obj, v, capture, errors) {\n var rval = false;\n\n // ensure tag class and type are the same if specified\n if((obj.tagClass === v.tagClass || typeof(v.tagClass) === 'undefined') &&\n (obj.type === v.type || typeof(v.type) === 'undefined')) {\n // ensure constructed flag is the same if specified\n if(obj.constructed === v.constructed ||\n typeof(v.constructed) === 'undefined') {\n rval = true;\n\n // handle sub values\n if(v.value && forge.util.isArray(v.value)) {\n var j = 0;\n for(var i = 0; rval && i < v.value.length; ++i) {\n rval = v.value[i].optional || false;\n if(obj.value[j]) {\n rval = asn1.validate(obj.value[j], v.value[i], capture, errors);\n if(rval) {\n ++j;\n } else if(v.value[i].optional) {\n rval = true;\n }\n }\n if(!rval && errors) {\n errors.push(\n '[' + v.name + '] ' +\n 'Tag class \"' + v.tagClass + '\", type \"' +\n v.type + '\" expected value length \"' +\n v.value.length + '\", got \"' +\n obj.value.length + '\"');\n }\n }\n }\n\n if(rval && capture) {\n if(v.capture) {\n capture[v.capture] = obj.value;\n }\n if(v.captureAsn1) {\n capture[v.captureAsn1] = obj;\n }\n if(v.captureBitStringContents && 'bitStringContents' in obj) {\n capture[v.captureBitStringContents] = obj.bitStringContents;\n }\n if(v.captureBitStringValue && 'bitStringContents' in obj) {\n var value;\n if(obj.bitStringContents.length < 2) {\n capture[v.captureBitStringValue] = '';\n } else {\n // FIXME: support unused bits with data shifting\n var unused = obj.bitStringContents.charCodeAt(0);\n if(unused !== 0) {\n throw new Error(\n 'captureBitStringValue only supported for zero unused bits');\n }\n capture[v.captureBitStringValue] = obj.bitStringContents.slice(1);\n }\n }\n }\n } else if(errors) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected constructed \"' + v.constructed + '\", got \"' +\n obj.constructed + '\"');\n }\n } else if(errors) {\n if(obj.tagClass !== v.tagClass) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected tag class \"' + v.tagClass + '\", got \"' +\n obj.tagClass + '\"');\n }\n if(obj.type !== v.type) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected type \"' + v.type + '\", got \"' + obj.type + '\"');\n }\n }\n return rval;\n};\n\n// regex for testing for non-latin characters\nvar _nonLatinRegex = /[^\\\\u0000-\\\\u00ff]/;\n\n/**\n * Pretty prints an ASN.1 object to a string.\n *\n * @param obj the object to write out.\n * @param level the level in the tree.\n * @param indentation the indentation to use.\n *\n * @return the string.\n */\nasn1.prettyPrint = function(obj, level, indentation) {\n var rval = '';\n\n // set default level and indentation\n level = level || 0;\n indentation = indentation || 2;\n\n // start new line for deep levels\n if(level > 0) {\n rval += '\\n';\n }\n\n // create indent\n var indent = '';\n for(var i = 0; i < level * indentation; ++i) {\n indent += ' ';\n }\n\n // print class:type\n rval += indent + 'Tag: ';\n switch(obj.tagClass) {\n case asn1.Class.UNIVERSAL:\n rval += 'Universal:';\n break;\n case asn1.Class.APPLICATION:\n rval += 'Application:';\n break;\n case asn1.Class.CONTEXT_SPECIFIC:\n rval += 'Context-Specific:';\n break;\n case asn1.Class.PRIVATE:\n rval += 'Private:';\n break;\n }\n\n if(obj.tagClass === asn1.Class.UNIVERSAL) {\n rval += obj.type;\n\n // known types\n switch(obj.type) {\n case asn1.Type.NONE:\n rval += ' (None)';\n break;\n case asn1.Type.BOOLEAN:\n rval += ' (Boolean)';\n break;\n case asn1.Type.INTEGER:\n rval += ' (Integer)';\n break;\n case asn1.Type.BITSTRING:\n rval += ' (Bit string)';\n break;\n case asn1.Type.OCTETSTRING:\n rval += ' (Octet string)';\n break;\n case asn1.Type.NULL:\n rval += ' (Null)';\n break;\n case asn1.Type.OID:\n rval += ' (Object Identifier)';\n break;\n case asn1.Type.ODESC:\n rval += ' (Object Descriptor)';\n break;\n case asn1.Type.EXTERNAL:\n rval += ' (External or Instance of)';\n break;\n case asn1.Type.REAL:\n rval += ' (Real)';\n break;\n case asn1.Type.ENUMERATED:\n rval += ' (Enumerated)';\n break;\n case asn1.Type.EMBEDDED:\n rval += ' (Embedded PDV)';\n break;\n case asn1.Type.UTF8:\n rval += ' (UTF8)';\n break;\n case asn1.Type.ROID:\n rval += ' (Relative Object Identifier)';\n break;\n case asn1.Type.SEQUENCE:\n rval += ' (Sequence)';\n break;\n case asn1.Type.SET:\n rval += ' (Set)';\n break;\n case asn1.Type.PRINTABLESTRING:\n rval += ' (Printable String)';\n break;\n case asn1.Type.IA5String:\n rval += ' (IA5String (ASCII))';\n break;\n case asn1.Type.UTCTIME:\n rval += ' (UTC time)';\n break;\n case asn1.Type.GENERALIZEDTIME:\n rval += ' (Generalized time)';\n break;\n case asn1.Type.BMPSTRING:\n rval += ' (BMP String)';\n break;\n }\n } else {\n rval += obj.type;\n }\n\n rval += '\\n';\n rval += indent + 'Constructed: ' + obj.constructed + '\\n';\n\n if(obj.composed) {\n var subvalues = 0;\n var sub = '';\n for(var i = 0; i < obj.value.length; ++i) {\n if(obj.value[i] !== undefined) {\n subvalues += 1;\n sub += asn1.prettyPrint(obj.value[i], level + 1, indentation);\n if((i + 1) < obj.value.length) {\n sub += ',';\n }\n }\n }\n rval += indent + 'Sub values: ' + subvalues + sub;\n } else {\n rval += indent + 'Value: ';\n if(obj.type === asn1.Type.OID) {\n var oid = asn1.derToOid(obj.value);\n rval += oid;\n if(forge.pki && forge.pki.oids) {\n if(oid in forge.pki.oids) {\n rval += ' (' + forge.pki.oids[oid] + ') ';\n }\n }\n }\n if(obj.type === asn1.Type.INTEGER) {\n try {\n rval += asn1.derToInteger(obj.value);\n } catch(ex) {\n rval += '0x' + forge.util.bytesToHex(obj.value);\n }\n } else if(obj.type === asn1.Type.BITSTRING) {\n // TODO: shift bits as needed to display without padding\n if(obj.value.length > 1) {\n // remove unused bits field\n rval += '0x' + forge.util.bytesToHex(obj.value.slice(1));\n } else {\n rval += '(none)';\n }\n // show unused bit count\n if(obj.value.length > 0) {\n var unused = obj.value.charCodeAt(0);\n if(unused == 1) {\n rval += ' (1 unused bit shown)';\n } else if(unused > 1) {\n rval += ' (' + unused + ' unused bits shown)';\n }\n }\n } else if(obj.type === asn1.Type.OCTETSTRING) {\n if(!_nonLatinRegex.test(obj.value)) {\n rval += '(' + obj.value + ') ';\n }\n rval += '0x' + forge.util.bytesToHex(obj.value);\n } else if(obj.type === asn1.Type.UTF8) {\n try {\n rval += forge.util.decodeUtf8(obj.value);\n } catch(e) {\n if(e.message === 'URI malformed') {\n rval +=\n '0x' + forge.util.bytesToHex(obj.value) + ' (malformed UTF8)';\n } else {\n throw e;\n }\n }\n } else if(obj.type === asn1.Type.PRINTABLESTRING ||\n obj.type === asn1.Type.IA5String) {\n rval += obj.value;\n } else if(_nonLatinRegex.test(obj.value)) {\n rval += '0x' + forge.util.bytesToHex(obj.value);\n } else if(obj.value.length === 0) {\n rval += '[null]';\n } else {\n rval += obj.value;\n }\n }\n\n return rval;\n};\n","/**\n * DES (Data Encryption Standard) implementation.\n *\n * This implementation supports DES as well as 3DES-EDE in ECB and CBC mode.\n * It is based on the BSD-licensed implementation by Paul Tero:\n *\n * Paul Tero, July 2001\n * http://www.tero.co.uk/des/\n *\n * Optimised for performance with large blocks by\n * Michael Hayworth, November 2001\n * http://www.netdealing.com\n *\n * THIS SOFTWARE IS PROVIDED \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl \n * Copyright (c) 2012-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./cipher');\nrequire('./cipherModes');\nrequire('./util');\n\n/* DES API */\nmodule.exports = forge.des = forge.des || {};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('DES-', key);\n * cipher.start({iv: iv});\n *\n * Creates an DES cipher object to encrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as binary-encoded strings of bytes or\n * byte buffers.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC' if IV is\n * given, 'ECB' if null).\n *\n * @return the cipher.\n */\nforge.des.startEncrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: false,\n mode: mode || (iv === null ? 'ECB' : 'CBC')\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('DES-', key);\n *\n * Creates an DES cipher object to encrypt data using the given symmetric key.\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.des.createEncryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: false,\n mode: mode\n });\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('DES-', key);\n * decipher.start({iv: iv});\n *\n * Creates an DES cipher object to decrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as binary-encoded strings of bytes or\n * byte buffers.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC' if IV is\n * given, 'ECB' if null).\n *\n * @return the cipher.\n */\nforge.des.startDecrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: true,\n mode: mode || (iv === null ? 'ECB' : 'CBC')\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('DES-', key);\n *\n * Creates an DES cipher object to decrypt data using the given symmetric key.\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.des.createDecryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: true,\n mode: mode\n });\n};\n\n/**\n * Creates a new DES cipher algorithm object.\n *\n * @param name the name of the algorithm.\n * @param mode the mode factory function.\n *\n * @return the DES algorithm object.\n */\nforge.des.Algorithm = function(name, mode) {\n var self = this;\n self.name = name;\n self.mode = new mode({\n blockSize: 8,\n cipher: {\n encrypt: function(inBlock, outBlock) {\n return _updateBlock(self._keys, inBlock, outBlock, false);\n },\n decrypt: function(inBlock, outBlock) {\n return _updateBlock(self._keys, inBlock, outBlock, true);\n }\n }\n });\n self._init = false;\n};\n\n/**\n * Initializes this DES algorithm by expanding its key.\n *\n * @param options the options to use.\n * key the key to use with this algorithm.\n * decrypt true if the algorithm should be initialized for decryption,\n * false for encryption.\n */\nforge.des.Algorithm.prototype.initialize = function(options) {\n if(this._init) {\n return;\n }\n\n var key = forge.util.createBuffer(options.key);\n if(this.name.indexOf('3DES') === 0) {\n if(key.length() !== 24) {\n throw new Error('Invalid Triple-DES key size: ' + key.length() * 8);\n }\n }\n\n // do key expansion to 16 or 48 subkeys (single or triple DES)\n this._keys = _createKeys(key);\n this._init = true;\n};\n\n/** Register DES algorithms **/\n\nregisterAlgorithm('DES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('DES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('DES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('DES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('DES-CTR', forge.cipher.modes.ctr);\n\nregisterAlgorithm('3DES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('3DES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('3DES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('3DES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('3DES-CTR', forge.cipher.modes.ctr);\n\nfunction registerAlgorithm(name, mode) {\n var factory = function() {\n return new forge.des.Algorithm(name, mode);\n };\n forge.cipher.registerAlgorithm(name, factory);\n}\n\n/** DES implementation **/\n\nvar spfunction1 = [0x1010400,0,0x10000,0x1010404,0x1010004,0x10404,0x4,0x10000,0x400,0x1010400,0x1010404,0x400,0x1000404,0x1010004,0x1000000,0x4,0x404,0x1000400,0x1000400,0x10400,0x10400,0x1010000,0x1010000,0x1000404,0x10004,0x1000004,0x1000004,0x10004,0,0x404,0x10404,0x1000000,0x10000,0x1010404,0x4,0x1010000,0x1010400,0x1000000,0x1000000,0x400,0x1010004,0x10000,0x10400,0x1000004,0x400,0x4,0x1000404,0x10404,0x1010404,0x10004,0x1010000,0x1000404,0x1000004,0x404,0x10404,0x1010400,0x404,0x1000400,0x1000400,0,0x10004,0x10400,0,0x1010004];\nvar spfunction2 = [-0x7fef7fe0,-0x7fff8000,0x8000,0x108020,0x100000,0x20,-0x7fefffe0,-0x7fff7fe0,-0x7fffffe0,-0x7fef7fe0,-0x7fef8000,-0x80000000,-0x7fff8000,0x100000,0x20,-0x7fefffe0,0x108000,0x100020,-0x7fff7fe0,0,-0x80000000,0x8000,0x108020,-0x7ff00000,0x100020,-0x7fffffe0,0,0x108000,0x8020,-0x7fef8000,-0x7ff00000,0x8020,0,0x108020,-0x7fefffe0,0x100000,-0x7fff7fe0,-0x7ff00000,-0x7fef8000,0x8000,-0x7ff00000,-0x7fff8000,0x20,-0x7fef7fe0,0x108020,0x20,0x8000,-0x80000000,0x8020,-0x7fef8000,0x100000,-0x7fffffe0,0x100020,-0x7fff7fe0,-0x7fffffe0,0x100020,0x108000,0,-0x7fff8000,0x8020,-0x80000000,-0x7fefffe0,-0x7fef7fe0,0x108000];\nvar spfunction3 = [0x208,0x8020200,0,0x8020008,0x8000200,0,0x20208,0x8000200,0x20008,0x8000008,0x8000008,0x20000,0x8020208,0x20008,0x8020000,0x208,0x8000000,0x8,0x8020200,0x200,0x20200,0x8020000,0x8020008,0x20208,0x8000208,0x20200,0x20000,0x8000208,0x8,0x8020208,0x200,0x8000000,0x8020200,0x8000000,0x20008,0x208,0x20000,0x8020200,0x8000200,0,0x200,0x20008,0x8020208,0x8000200,0x8000008,0x200,0,0x8020008,0x8000208,0x20000,0x8000000,0x8020208,0x8,0x20208,0x20200,0x8000008,0x8020000,0x8000208,0x208,0x8020000,0x20208,0x8,0x8020008,0x20200];\nvar spfunction4 = [0x802001,0x2081,0x2081,0x80,0x802080,0x800081,0x800001,0x2001,0,0x802000,0x802000,0x802081,0x81,0,0x800080,0x800001,0x1,0x2000,0x800000,0x802001,0x80,0x800000,0x2001,0x2080,0x800081,0x1,0x2080,0x800080,0x2000,0x802080,0x802081,0x81,0x800080,0x800001,0x802000,0x802081,0x81,0,0,0x802000,0x2080,0x800080,0x800081,0x1,0x802001,0x2081,0x2081,0x80,0x802081,0x81,0x1,0x2000,0x800001,0x2001,0x802080,0x800081,0x2001,0x2080,0x800000,0x802001,0x80,0x800000,0x2000,0x802080];\nvar spfunction5 = [0x100,0x2080100,0x2080000,0x42000100,0x80000,0x100,0x40000000,0x2080000,0x40080100,0x80000,0x2000100,0x40080100,0x42000100,0x42080000,0x80100,0x40000000,0x2000000,0x40080000,0x40080000,0,0x40000100,0x42080100,0x42080100,0x2000100,0x42080000,0x40000100,0,0x42000000,0x2080100,0x2000000,0x42000000,0x80100,0x80000,0x42000100,0x100,0x2000000,0x40000000,0x2080000,0x42000100,0x40080100,0x2000100,0x40000000,0x42080000,0x2080100,0x40080100,0x100,0x2000000,0x42080000,0x42080100,0x80100,0x42000000,0x42080100,0x2080000,0,0x40080000,0x42000000,0x80100,0x2000100,0x40000100,0x80000,0,0x40080000,0x2080100,0x40000100];\nvar spfunction6 = [0x20000010,0x20400000,0x4000,0x20404010,0x20400000,0x10,0x20404010,0x400000,0x20004000,0x404010,0x400000,0x20000010,0x400010,0x20004000,0x20000000,0x4010,0,0x400010,0x20004010,0x4000,0x404000,0x20004010,0x10,0x20400010,0x20400010,0,0x404010,0x20404000,0x4010,0x404000,0x20404000,0x20000000,0x20004000,0x10,0x20400010,0x404000,0x20404010,0x400000,0x4010,0x20000010,0x400000,0x20004000,0x20000000,0x4010,0x20000010,0x20404010,0x404000,0x20400000,0x404010,0x20404000,0,0x20400010,0x10,0x4000,0x20400000,0x404010,0x4000,0x400010,0x20004010,0,0x20404000,0x20000000,0x400010,0x20004010];\nvar spfunction7 = [0x200000,0x4200002,0x4000802,0,0x800,0x4000802,0x200802,0x4200800,0x4200802,0x200000,0,0x4000002,0x2,0x4000000,0x4200002,0x802,0x4000800,0x200802,0x200002,0x4000800,0x4000002,0x4200000,0x4200800,0x200002,0x4200000,0x800,0x802,0x4200802,0x200800,0x2,0x4000000,0x200800,0x4000000,0x200800,0x200000,0x4000802,0x4000802,0x4200002,0x4200002,0x2,0x200002,0x4000000,0x4000800,0x200000,0x4200800,0x802,0x200802,0x4200800,0x802,0x4000002,0x4200802,0x4200000,0x200800,0,0x2,0x4200802,0,0x200802,0x4200000,0x800,0x4000002,0x4000800,0x800,0x200002];\nvar spfunction8 = [0x10001040,0x1000,0x40000,0x10041040,0x10000000,0x10001040,0x40,0x10000000,0x40040,0x10040000,0x10041040,0x41000,0x10041000,0x41040,0x1000,0x40,0x10040000,0x10000040,0x10001000,0x1040,0x41000,0x40040,0x10040040,0x10041000,0x1040,0,0,0x10040040,0x10000040,0x10001000,0x41040,0x40000,0x41040,0x40000,0x10041000,0x1000,0x40,0x10040040,0x1000,0x41040,0x10001000,0x40,0x10000040,0x10040000,0x10040040,0x10000000,0x40000,0x10001040,0,0x10041040,0x40040,0x10000040,0x10040000,0x10001000,0x10001040,0,0x10041040,0x41000,0x41000,0x1040,0x1040,0x40040,0x10000000,0x10041000];\n\n/**\n * Create necessary sub keys.\n *\n * @param key the 64-bit or 192-bit key.\n *\n * @return the expanded keys.\n */\nfunction _createKeys(key) {\n var pc2bytes0 = [0,0x4,0x20000000,0x20000004,0x10000,0x10004,0x20010000,0x20010004,0x200,0x204,0x20000200,0x20000204,0x10200,0x10204,0x20010200,0x20010204],\n pc2bytes1 = [0,0x1,0x100000,0x100001,0x4000000,0x4000001,0x4100000,0x4100001,0x100,0x101,0x100100,0x100101,0x4000100,0x4000101,0x4100100,0x4100101],\n pc2bytes2 = [0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808,0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808],\n pc2bytes3 = [0,0x200000,0x8000000,0x8200000,0x2000,0x202000,0x8002000,0x8202000,0x20000,0x220000,0x8020000,0x8220000,0x22000,0x222000,0x8022000,0x8222000],\n pc2bytes4 = [0,0x40000,0x10,0x40010,0,0x40000,0x10,0x40010,0x1000,0x41000,0x1010,0x41010,0x1000,0x41000,0x1010,0x41010],\n pc2bytes5 = [0,0x400,0x20,0x420,0,0x400,0x20,0x420,0x2000000,0x2000400,0x2000020,0x2000420,0x2000000,0x2000400,0x2000020,0x2000420],\n pc2bytes6 = [0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002,0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002],\n pc2bytes7 = [0,0x10000,0x800,0x10800,0x20000000,0x20010000,0x20000800,0x20010800,0x20000,0x30000,0x20800,0x30800,0x20020000,0x20030000,0x20020800,0x20030800],\n pc2bytes8 = [0,0x40000,0,0x40000,0x2,0x40002,0x2,0x40002,0x2000000,0x2040000,0x2000000,0x2040000,0x2000002,0x2040002,0x2000002,0x2040002],\n pc2bytes9 = [0,0x10000000,0x8,0x10000008,0,0x10000000,0x8,0x10000008,0x400,0x10000400,0x408,0x10000408,0x400,0x10000400,0x408,0x10000408],\n pc2bytes10 = [0,0x20,0,0x20,0x100000,0x100020,0x100000,0x100020,0x2000,0x2020,0x2000,0x2020,0x102000,0x102020,0x102000,0x102020],\n pc2bytes11 = [0,0x1000000,0x200,0x1000200,0x200000,0x1200000,0x200200,0x1200200,0x4000000,0x5000000,0x4000200,0x5000200,0x4200000,0x5200000,0x4200200,0x5200200],\n pc2bytes12 = [0,0x1000,0x8000000,0x8001000,0x80000,0x81000,0x8080000,0x8081000,0x10,0x1010,0x8000010,0x8001010,0x80010,0x81010,0x8080010,0x8081010],\n pc2bytes13 = [0,0x4,0x100,0x104,0,0x4,0x100,0x104,0x1,0x5,0x101,0x105,0x1,0x5,0x101,0x105];\n\n // how many iterations (1 for des, 3 for triple des)\n // changed by Paul 16/6/2007 to use Triple DES for 9+ byte keys\n var iterations = key.length() > 8 ? 3 : 1;\n\n // stores the return keys\n var keys = [];\n\n // now define the left shifts which need to be done\n var shifts = [0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0];\n\n var n = 0, tmp;\n for(var j = 0; j < iterations; j++) {\n var left = key.getInt32();\n var right = key.getInt32();\n\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n tmp = ((right >>> -16) ^ left) & 0x0000ffff;\n left ^= tmp;\n right ^= (tmp << -16);\n\n tmp = ((left >>> 2) ^ right) & 0x33333333;\n right ^= tmp;\n left ^= (tmp << 2);\n\n tmp = ((right >>> -16) ^ left) & 0x0000ffff;\n left ^= tmp;\n right ^= (tmp << -16);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n // right needs to be shifted and OR'd with last four bits of left\n tmp = (left << 8) | ((right >>> 20) & 0x000000f0);\n\n // left needs to be put upside down\n left = ((right << 24) | ((right << 8) & 0xff0000) |\n ((right >>> 8) & 0xff00) | ((right >>> 24) & 0xf0));\n right = tmp;\n\n // now go through and perform these shifts on the left and right keys\n for(var i = 0; i < shifts.length; ++i) {\n //shift the keys either one or two bits to the left\n if(shifts[i]) {\n left = (left << 2) | (left >>> 26);\n right = (right << 2) | (right >>> 26);\n } else {\n left = (left << 1) | (left >>> 27);\n right = (right << 1) | (right >>> 27);\n }\n left &= -0xf;\n right &= -0xf;\n\n // now apply PC-2, in such a way that E is easier when encrypting or\n // decrypting this conversion will look like PC-2 except only the last 6\n // bits of each byte are used rather than 48 consecutive bits and the\n // order of lines will be according to how the S selection functions will\n // be applied: S2, S4, S6, S8, S1, S3, S5, S7\n var lefttmp = (\n pc2bytes0[left >>> 28] | pc2bytes1[(left >>> 24) & 0xf] |\n pc2bytes2[(left >>> 20) & 0xf] | pc2bytes3[(left >>> 16) & 0xf] |\n pc2bytes4[(left >>> 12) & 0xf] | pc2bytes5[(left >>> 8) & 0xf] |\n pc2bytes6[(left >>> 4) & 0xf]);\n var righttmp = (\n pc2bytes7[right >>> 28] | pc2bytes8[(right >>> 24) & 0xf] |\n pc2bytes9[(right >>> 20) & 0xf] | pc2bytes10[(right >>> 16) & 0xf] |\n pc2bytes11[(right >>> 12) & 0xf] | pc2bytes12[(right >>> 8) & 0xf] |\n pc2bytes13[(right >>> 4) & 0xf]);\n tmp = ((righttmp >>> 16) ^ lefttmp) & 0x0000ffff;\n keys[n++] = lefttmp ^ tmp;\n keys[n++] = righttmp ^ (tmp << 16);\n }\n }\n\n return keys;\n}\n\n/**\n * Updates a single block (1 byte) using DES. The update will either\n * encrypt or decrypt the block.\n *\n * @param keys the expanded keys.\n * @param input the input block (an array of 32-bit words).\n * @param output the updated output block.\n * @param decrypt true to decrypt the block, false to encrypt it.\n */\nfunction _updateBlock(keys, input, output, decrypt) {\n // set up loops for single or triple DES\n var iterations = keys.length === 32 ? 3 : 9;\n var looping;\n if(iterations === 3) {\n looping = decrypt ? [30, -2, -2] : [0, 32, 2];\n } else {\n looping = (decrypt ?\n [94, 62, -2, 32, 64, 2, 30, -2, -2] :\n [0, 32, 2, 62, 30, -2, 64, 96, 2]);\n }\n\n var tmp;\n\n var left = input[0];\n var right = input[1];\n\n // first each 64 bit chunk of the message must be permuted according to IP\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n tmp = ((left >>> 16) ^ right) & 0x0000ffff;\n right ^= tmp;\n left ^= (tmp << 16);\n\n tmp = ((right >>> 2) ^ left) & 0x33333333;\n left ^= tmp;\n right ^= (tmp << 2);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n // rotate left 1 bit\n left = ((left << 1) | (left >>> 31));\n right = ((right << 1) | (right >>> 31));\n\n for(var j = 0; j < iterations; j += 3) {\n var endloop = looping[j + 1];\n var loopinc = looping[j + 2];\n\n // now go through and perform the encryption or decryption\n for(var i = looping[j]; i != endloop; i += loopinc) {\n var right1 = right ^ keys[i];\n var right2 = ((right >>> 4) | (right << 28)) ^ keys[i + 1];\n\n // passing these bytes through the S selection functions\n tmp = left;\n left = right;\n right = tmp ^ (\n spfunction2[(right1 >>> 24) & 0x3f] |\n spfunction4[(right1 >>> 16) & 0x3f] |\n spfunction6[(right1 >>> 8) & 0x3f] |\n spfunction8[right1 & 0x3f] |\n spfunction1[(right2 >>> 24) & 0x3f] |\n spfunction3[(right2 >>> 16) & 0x3f] |\n spfunction5[(right2 >>> 8) & 0x3f] |\n spfunction7[right2 & 0x3f]);\n }\n // unreverse left and right\n tmp = left;\n left = right;\n right = tmp;\n }\n\n // rotate right 1 bit\n left = ((left >>> 1) | (left << 31));\n right = ((right >>> 1) | (right << 31));\n\n // now perform IP-1, which is IP in the opposite direction\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((right >>> 2) ^ left) & 0x33333333;\n left ^= tmp;\n right ^= (tmp << 2);\n\n tmp = ((left >>> 16) ^ right) & 0x0000ffff;\n right ^= tmp;\n left ^= (tmp << 16);\n\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n output[0] = left;\n output[1] = right;\n}\n\n/**\n * Deprecated. Instead, use:\n *\n * forge.cipher.createCipher('DES-', key);\n * forge.cipher.createDecipher('DES-', key);\n *\n * Creates a deprecated DES cipher object. This object's mode will default to\n * CBC (cipher-block-chaining).\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param options the options to use.\n * key the symmetric key to use (64 or 192 bits).\n * output the buffer to write to.\n * decrypt true for decryption, false for encryption.\n * mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nfunction _createCipher(options) {\n options = options || {};\n var mode = (options.mode || 'CBC').toUpperCase();\n var algorithm = 'DES-' + mode;\n\n var cipher;\n if(options.decrypt) {\n cipher = forge.cipher.createDecipher(algorithm, options.key);\n } else {\n cipher = forge.cipher.createCipher(algorithm, options.key);\n }\n\n // backwards compatible start API\n var start = cipher.start;\n cipher.start = function(iv, options) {\n // backwards compatibility: support second arg as output buffer\n var output = null;\n if(options instanceof forge.util.ByteBuffer) {\n output = options;\n options = {};\n }\n options = options || {};\n options.output = output;\n options.iv = iv;\n start.call(cipher, options);\n };\n\n return cipher;\n}\n","/**\n * Node.js module for Forge message digests.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2017 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nmodule.exports = forge.md = forge.md || {};\nforge.md.algorithms = forge.md.algorithms || {};\n","/**\n * Hash-based Message Authentication Code implementation. Requires a message\n * digest object that can be obtained, for example, from forge.md.sha1 or\n * forge.md.md5.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2012 Digital Bazaar, Inc. All rights reserved.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\n/* HMAC API */\nvar hmac = module.exports = forge.hmac = forge.hmac || {};\n\n/**\n * Creates an HMAC object that uses the given message digest object.\n *\n * @return an HMAC object.\n */\nhmac.create = function() {\n // the hmac key to use\n var _key = null;\n\n // the message digest to use\n var _md = null;\n\n // the inner padding\n var _ipadding = null;\n\n // the outer padding\n var _opadding = null;\n\n // hmac context\n var ctx = {};\n\n /**\n * Starts or restarts the HMAC with the given key and message digest.\n *\n * @param md the message digest to use, null to reuse the previous one,\n * a string to use builtin 'sha1', 'md5', 'sha256'.\n * @param key the key to use as a string, array of bytes, byte buffer,\n * or null to reuse the previous key.\n */\n ctx.start = function(md, key) {\n if(md !== null) {\n if(typeof md === 'string') {\n // create builtin message digest\n md = md.toLowerCase();\n if(md in forge.md.algorithms) {\n _md = forge.md.algorithms[md].create();\n } else {\n throw new Error('Unknown hash algorithm \"' + md + '\"');\n }\n } else {\n // store message digest\n _md = md;\n }\n }\n\n if(key === null) {\n // reuse previous key\n key = _key;\n } else {\n if(typeof key === 'string') {\n // convert string into byte buffer\n key = forge.util.createBuffer(key);\n } else if(forge.util.isArray(key)) {\n // convert byte array into byte buffer\n var tmp = key;\n key = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n key.putByte(tmp[i]);\n }\n }\n\n // if key is longer than blocksize, hash it\n var keylen = key.length();\n if(keylen > _md.blockLength) {\n _md.start();\n _md.update(key.bytes());\n key = _md.digest();\n }\n\n // mix key into inner and outer padding\n // ipadding = [0x36 * blocksize] ^ key\n // opadding = [0x5C * blocksize] ^ key\n _ipadding = forge.util.createBuffer();\n _opadding = forge.util.createBuffer();\n keylen = key.length();\n for(var i = 0; i < keylen; ++i) {\n var tmp = key.at(i);\n _ipadding.putByte(0x36 ^ tmp);\n _opadding.putByte(0x5C ^ tmp);\n }\n\n // if key is shorter than blocksize, add additional padding\n if(keylen < _md.blockLength) {\n var tmp = _md.blockLength - keylen;\n for(var i = 0; i < tmp; ++i) {\n _ipadding.putByte(0x36);\n _opadding.putByte(0x5C);\n }\n }\n _key = key;\n _ipadding = _ipadding.bytes();\n _opadding = _opadding.bytes();\n }\n\n // digest is done like so: hash(opadding | hash(ipadding | message))\n\n // prepare to do inner hash\n // hash(ipadding | message)\n _md.start();\n _md.update(_ipadding);\n };\n\n /**\n * Updates the HMAC with the given message bytes.\n *\n * @param bytes the bytes to update with.\n */\n ctx.update = function(bytes) {\n _md.update(bytes);\n };\n\n /**\n * Produces the Message Authentication Code (MAC).\n *\n * @return a byte buffer containing the digest value.\n */\n ctx.getMac = function() {\n // digest is done like so: hash(opadding | hash(ipadding | message))\n // here we do the outer hashing\n var inner = _md.digest().bytes();\n _md.start();\n _md.update(_opadding);\n _md.update(inner);\n return _md.digest();\n };\n // alias for getMac\n ctx.digest = ctx.getMac;\n\n return ctx;\n};\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\n/** @type {(O: object) => string} */\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {(receiver: import('.').TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call} Getter */\n/** @type {{ [k in `\\$${import('.').TypedArrayName}`]?: Getter } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict';\n\nmodule.exports = require('./browser/algorithms.json');\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n this.padding = options.padding !== false\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n if (this.padding === false) {\n return false;\n }\n\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n if (this.padding === false) {\n return buffer;\n }\n\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","module.exports = require('events').EventEmitter;\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, { hasUnpiped: false });\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar BN = require('bn.js');\nvar randomBytes = require('randombytes');\nvar Buffer = require('safe-buffer').Buffer;\n\nfunction getr(priv) {\n\tvar len = priv.modulus.byteLength();\n\tvar r;\n\tdo {\n\t\tr = new BN(randomBytes(len));\n\t} while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2));\n\treturn r;\n}\n\nfunction blind(priv) {\n\tvar r = getr(priv);\n\tvar blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();\n\treturn { blinder: blinder, unblinder: r.invm(priv.modulus) };\n}\n\nfunction crt(msg, priv) {\n\tvar blinds = blind(priv);\n\tvar len = priv.modulus.byteLength();\n\tvar blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus);\n\tvar c1 = blinded.toRed(BN.mont(priv.prime1));\n\tvar c2 = blinded.toRed(BN.mont(priv.prime2));\n\tvar qinv = priv.coefficient;\n\tvar p = priv.prime1;\n\tvar q = priv.prime2;\n\tvar m1 = c1.redPow(priv.exponent1).fromRed();\n\tvar m2 = c2.redPow(priv.exponent2).fromRed();\n\tvar h = m1.isub(m2).imul(qinv).umod(p).imul(q);\n\treturn m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len);\n}\ncrt.getr = getr;\n\nmodule.exports = crt;\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var indexOf = function (xs, item) {\n if (xs.indexOf) return xs.indexOf(item);\n else for (var i = 0; i < xs.length; i++) {\n if (xs[i] === item) return i;\n }\n return -1;\n};\nvar Object_keys = function (obj) {\n if (Object.keys) return Object.keys(obj)\n else {\n var res = [];\n for (var key in obj) res.push(key)\n return res;\n }\n};\n\nvar forEach = function (xs, fn) {\n if (xs.forEach) return xs.forEach(fn)\n else for (var i = 0; i < xs.length; i++) {\n fn(xs[i], i, xs);\n }\n};\n\nvar defineProp = (function() {\n try {\n Object.defineProperty({}, '_', {});\n return function(obj, name, value) {\n Object.defineProperty(obj, name, {\n writable: true,\n enumerable: false,\n configurable: true,\n value: value\n })\n };\n } catch(e) {\n return function(obj, name, value) {\n obj[name] = value;\n };\n }\n}());\n\nvar globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',\n'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',\n'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',\n'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',\n'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];\n\nfunction Context() {}\nContext.prototype = {};\n\nvar Script = exports.Script = function NodeScript (code) {\n if (!(this instanceof Script)) return new Script(code);\n this.code = code;\n};\n\nScript.prototype.runInContext = function (context) {\n if (!(context instanceof Context)) {\n throw new TypeError(\"needs a 'context' argument.\");\n }\n \n var iframe = document.createElement('iframe');\n if (!iframe.style) iframe.style = {};\n iframe.style.display = 'none';\n \n document.body.appendChild(iframe);\n \n var win = iframe.contentWindow;\n var wEval = win.eval, wExecScript = win.execScript;\n\n if (!wEval && wExecScript) {\n // win.eval() magically appears when this is called in IE:\n wExecScript.call(win, 'null');\n wEval = win.eval;\n }\n \n forEach(Object_keys(context), function (key) {\n win[key] = context[key];\n });\n forEach(globals, function (key) {\n if (context[key]) {\n win[key] = context[key];\n }\n });\n \n var winKeys = Object_keys(win);\n\n var res = wEval.call(win, this.code);\n \n forEach(Object_keys(win), function (key) {\n // Avoid copying circular objects like `top` and `window` by only\n // updating existing context properties or new properties in the `win`\n // that was only introduced after the eval.\n if (key in context || indexOf(winKeys, key) === -1) {\n context[key] = win[key];\n }\n });\n\n forEach(globals, function (key) {\n if (!(key in context)) {\n defineProp(context, key, win[key]);\n }\n });\n \n document.body.removeChild(iframe);\n \n return res;\n};\n\nScript.prototype.runInThisContext = function () {\n return eval(this.code); // maybe...\n};\n\nScript.prototype.runInNewContext = function (context) {\n var ctx = Script.createContext(context);\n var res = this.runInContext(ctx);\n\n if (context) {\n forEach(Object_keys(ctx), function (key) {\n context[key] = ctx[key];\n });\n }\n\n return res;\n};\n\nforEach(Object_keys(Script.prototype), function (name) {\n exports[name] = Script[name] = function (code) {\n var s = Script(code);\n return s[name].apply(s, [].slice.call(arguments, 1));\n };\n});\n\nexports.isContext = function (context) {\n return context instanceof Context;\n};\n\nexports.createScript = function (code) {\n return exports.Script(code);\n};\n\nexports.createContext = Script.createContext = function (context) {\n var copy = new Context();\n if(typeof context === 'object') {\n forEach(Object_keys(context), function (key) {\n copy[key] = context[key];\n });\n }\n return copy;\n};\n","var asn1 = require('../asn1');\nvar inherits = require('inherits');\n\nvar api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n};\n\nEntity.prototype._createNamed = function createNamed(base) {\n var named;\n try {\n named = require('vm').runInThisContext(\n '(function ' + this.name + '(entity) {\\n' +\n ' this._initNamed(entity);\\n' +\n '})'\n );\n } catch (e) {\n named = function (entity) {\n this._initNamed(entity);\n };\n }\n inherits(named, base);\n named.prototype._initNamed = function initnamed(entity) {\n base.call(this, entity);\n };\n\n return new named(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(asn1.decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(asn1.encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","var inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n var state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n var state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n var state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n var state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n var state = this._reporterState;\n\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n var state = this._reporterState;\n\n var now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n\n var inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n var state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n};\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","var inherits = require('inherits');\nvar Reporter = require('../base').Reporter;\nvar Buffer = require('buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n}\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n var res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n}\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n}\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!(item instanceof EncoderBuffer))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = new Buffer(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","var Reporter = require('../base').Reporter;\nvar EncoderBuffer = require('../base').EncoderBuffer;\nvar DecoderBuffer = require('../base').DecoderBuffer;\nvar assert = require('minimalistic-assert');\n\n// Supported tags\nvar tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nvar methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nvar overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent) {\n var state = {};\n this._baseState = state;\n\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nvar stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n var state = this._baseState;\n var cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n var res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n var state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n var clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n var state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n var state = this._baseState;\n\n // Filter children and args\n var children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n var res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n var value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n var state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n var state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n var state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n var state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n var state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n var state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n var state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n var state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n var result = state['default'];\n var present = true;\n\n var prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n var tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n var save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n var prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n var explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n var start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n if (state.any)\n var save = input.save();\n var body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any)\n result = result;\n else if (state.choice === null)\n result = this._decodeGeneric(state.tag, input, options);\n else\n result = this._decodeChoice(input, options);\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n var data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n var state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n var state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n var state = this._baseState;\n var result = null;\n var match = false;\n\n Object.keys(state.choice).some(function(key) {\n var save = input.save();\n var node = state.choice[key];\n try {\n var value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n var state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n var result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n var result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default']\n else\n return;\n }\n\n // Encode children first\n var content = null;\n var primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n var prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n var res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n var child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n var state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n var result;\n if (!state.any && state.choice === null) {\n var tag = state.implicit !== null ? state.implicit : state.tag;\n var cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n var state = this._baseState;\n\n var node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n var state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n};\n","var base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","var constants = require('../constants');\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = constants._reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = constants._reverse(exports.tag);\n","var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n var res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n var value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","var inherits = require('inherits');\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\nvar bignum = asn1.bignum;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!(data instanceof base.DecoderBuffer))\n data = new base.DecoderBuffer(data, options);\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n var len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n var state = buffer.save();\n var res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n while (true) {\n var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n var res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len)\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n var result = [];\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n var str = '';\n for (var i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n var numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n var printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n var result;\n var identifiers = [];\n var ident = 0;\n while (!buffer.isEmpty()) {\n var subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n var first = (identifiers[0] / 40) | 0;\n var second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n if (tag === 'gentime') {\n var year = str.slice(0, 4) | 0;\n var mon = str.slice(4, 6) | 0;\n var day = str.slice(6, 8) | 0;\n var hour = str.slice(8, 10) | 0;\n var min = str.slice(10, 12) | 0;\n var sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n var year = str.slice(0, 2) | 0;\n var mon = str.slice(2, 4) | 0;\n var day = str.slice(4, 6) | 0;\n var hour = str.slice(6, 8) | 0;\n var min = str.slice(8, 10) | 0;\n var sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull(buffer) {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n var res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n var tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n var num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n var lines = data.toString().split(/[\\r\\n]+/g);\n\n var label = options.label.toUpperCase();\n\n var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n var start = -1;\n var end = -1;\n for (var i = 0; i < lines.length; i++) {\n var match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n var base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9\\+\\/=]+/gi, '');\n\n var input = new Buffer(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","var decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n var header = new Buffer(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n var lenOctets = 1;\n for (var i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n var header = new Buffer(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n var buf = new Buffer(str.length * 2);\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s\\.]+/g);\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n var size = 0;\n for (var i = 0; i < id.length; i++) {\n var ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n var objid = new Buffer(size);\n var offset = objid.length - 1;\n for (var i = id.length - 1; i >= 0; i--) {\n var ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = new Buffer(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n var size = num.length;\n if (num.length === 0)\n size++;\n\n var out = new Buffer(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n var size = 1;\n for (var i = num; i >= 0x100; i >>= 8)\n size++;\n\n var out = new Array(size);\n for (var i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(new Buffer(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null)\n return false;\n\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","var inherits = require('inherits');\n\nvar DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n\n var p = buf.toString('base64');\n var out = [ '-----BEGIN ' + options.label + '-----' ];\n for (var i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","var encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","var asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict';\n\nvar asn = require('asn1.js');\n\nvar Time = asn.define('Time', function () {\n\tthis.choice({\n\t\tutcTime: this.utctime(),\n\t\tgeneralTime: this.gentime()\n\t});\n});\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n\tthis.seq().obj(\n\t\tthis.key('type').objid(),\n\t\tthis.key('value').any()\n\t);\n});\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').objid(),\n\t\tthis.key('parameters').optional(),\n\t\tthis.key('curve').objid().optional()\n\t);\n});\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').use(AlgorithmIdentifier),\n\t\tthis.key('subjectPublicKey').bitstr()\n\t);\n});\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n\tthis.setof(AttributeTypeValue);\n});\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n\tthis.seqof(RelativeDistinguishedName);\n});\n\nvar Name = asn.define('Name', function () {\n\tthis.choice({\n\t\trdnSequence: this.use(RDNSequence)\n\t});\n});\n\nvar Validity = asn.define('Validity', function () {\n\tthis.seq().obj(\n\t\tthis.key('notBefore').use(Time),\n\t\tthis.key('notAfter').use(Time)\n\t);\n});\n\nvar Extension = asn.define('Extension', function () {\n\tthis.seq().obj(\n\t\tthis.key('extnID').objid(),\n\t\tthis.key('critical').bool().def(false),\n\t\tthis.key('extnValue').octstr()\n\t);\n});\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n\tthis.seq().obj(\n\t\tthis.key('version').explicit(0)['int']().optional(),\n\t\tthis.key('serialNumber')['int'](),\n\t\tthis.key('signature').use(AlgorithmIdentifier),\n\t\tthis.key('issuer').use(Name),\n\t\tthis.key('validity').use(Validity),\n\t\tthis.key('subject').use(Name),\n\t\tthis.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n\t\tthis.key('issuerUniqueID').implicit(1).bitstr().optional(),\n\t\tthis.key('subjectUniqueID').implicit(2).bitstr().optional(),\n\t\tthis.key('extensions').explicit(3).seqof(Extension).optional()\n\t);\n});\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n\tthis.seq().obj(\n\t\tthis.key('tbsCertificate').use(TBSCertificate),\n\t\tthis.key('signatureAlgorithm').use(AlgorithmIdentifier),\n\t\tthis.key('signatureValue').bitstr()\n\t);\n});\n\nmodule.exports = X509Certificate;\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n\n'use strict';\n\nvar asn1 = require('asn1.js');\n\nexports.certificate = require('./certificate');\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('modulus')['int'](),\n\t\tthis.key('publicExponent')['int'](),\n\t\tthis.key('privateExponent')['int'](),\n\t\tthis.key('prime1')['int'](),\n\t\tthis.key('prime2')['int'](),\n\t\tthis.key('exponent1')['int'](),\n\t\tthis.key('exponent2')['int'](),\n\t\tthis.key('coefficient')['int']()\n\t);\n});\nexports.RSAPrivateKey = RSAPrivateKey;\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('modulus')['int'](),\n\t\tthis.key('publicExponent')['int']()\n\t);\n});\nexports.RSAPublicKey = RSAPublicKey;\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').objid(),\n\t\tthis.key('none').null_().optional(),\n\t\tthis.key('curve').objid().optional(),\n\t\tthis.key('params').seq().obj(\n\t\t\tthis.key('p')['int'](),\n\t\t\tthis.key('q')['int'](),\n\t\t\tthis.key('g')['int']()\n\t\t).optional()\n\t);\n});\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').use(AlgorithmIdentifier),\n\t\tthis.key('subjectPublicKey').bitstr()\n\t);\n});\nexports.PublicKey = PublicKey;\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('algorithm').use(AlgorithmIdentifier),\n\t\tthis.key('subjectPrivateKey').octstr()\n\t);\n});\nexports.PrivateKey = PrivateKeyInfo;\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').seq().obj(\n\t\t\tthis.key('id').objid(),\n\t\t\tthis.key('decrypt').seq().obj(\n\t\t\t\tthis.key('kde').seq().obj(\n\t\t\t\t\tthis.key('id').objid(),\n\t\t\t\t\tthis.key('kdeparams').seq().obj(\n\t\t\t\t\t\tthis.key('salt').octstr(),\n\t\t\t\t\t\tthis.key('iters')['int']()\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tthis.key('cipher').seq().obj(\n\t\t\t\t\tthis.key('algo').objid(),\n\t\t\t\t\tthis.key('iv').octstr()\n\t\t\t\t)\n\t\t\t)\n\t\t),\n\t\tthis.key('subjectPrivateKey').octstr()\n\t);\n});\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo;\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('p')['int'](),\n\t\tthis.key('q')['int'](),\n\t\tthis.key('g')['int'](),\n\t\tthis.key('pub_key')['int'](),\n\t\tthis.key('priv_key')['int']()\n\t);\n});\nexports.DSAPrivateKey = DSAPrivateKey;\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n\tthis['int']();\n});\n\nvar ECParameters = asn1.define('ECParameters', function () {\n\tthis.choice({\n\t\tnamedCurve: this.objid()\n\t});\n});\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('privateKey').octstr(),\n\t\tthis.key('parameters').optional().explicit(0).use(ECParameters),\n\t\tthis.key('publicKey').optional().explicit(1).bitstr()\n\t);\n});\nexports.ECPrivateKey = ECPrivateKey;\n\nexports.signature = asn1.define('signature', function () {\n\tthis.seq().obj(\n\t\tthis.key('r')['int'](),\n\t\tthis.key('s')['int']()\n\t);\n});\n","'use strict';\n\n// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m;\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m;\nvar evp = require('evp_bytestokey');\nvar ciphers = require('browserify-aes');\nvar Buffer = require('safe-buffer').Buffer;\nmodule.exports = function (okey, password) {\n\tvar key = okey.toString();\n\tvar match = key.match(findProc);\n\tvar decrypted;\n\tif (!match) {\n\t\tvar match2 = key.match(fullRegex);\n\t\tdecrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64');\n\t} else {\n\t\tvar suite = 'aes' + match[1];\n\t\tvar iv = Buffer.from(match[2], 'hex');\n\t\tvar cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64');\n\t\tvar cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;\n\t\tvar out = [];\n\t\tvar cipher = ciphers.createDecipheriv(suite, cipherKey, iv);\n\t\tout.push(cipher.update(cipherText));\n\t\tout.push(cipher['final']());\n\t\tdecrypted = Buffer.concat(out);\n\t}\n\tvar tag = key.match(startRegex)[1];\n\treturn {\n\t\ttag: tag,\n\t\tdata: decrypted\n\t};\n};\n","'use strict';\n\nvar asn1 = require('./asn1');\nvar aesid = require('./aesid.json');\nvar fixProc = require('./fixProc');\nvar ciphers = require('browserify-aes');\nvar compat = require('pbkdf2');\nvar Buffer = require('safe-buffer').Buffer;\n\nfunction decrypt(data, password) {\n\tvar salt = data.algorithm.decrypt.kde.kdeparams.salt;\n\tvar iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);\n\tvar algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')];\n\tvar iv = data.algorithm.decrypt.cipher.iv;\n\tvar cipherText = data.subjectPrivateKey;\n\tvar keylen = parseInt(algo.split('-')[1], 10) / 8;\n\tvar key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1');\n\tvar cipher = ciphers.createDecipheriv(algo, key, iv);\n\tvar out = [];\n\tout.push(cipher.update(cipherText));\n\tout.push(cipher['final']());\n\treturn Buffer.concat(out);\n}\n\nfunction parseKeys(buffer) {\n\tvar password;\n\tif (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n\t\tpassword = buffer.passphrase;\n\t\tbuffer = buffer.key;\n\t}\n\tif (typeof buffer === 'string') {\n\t\tbuffer = Buffer.from(buffer);\n\t}\n\n\tvar stripped = fixProc(buffer, password);\n\n\tvar type = stripped.tag;\n\tvar data = stripped.data;\n\tvar subtype, ndata;\n\tswitch (type) {\n\t\tcase 'CERTIFICATE':\n\t\t\tndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;\n\t\t\t// falls through\n\t\tcase 'PUBLIC KEY':\n\t\t\tif (!ndata) {\n\t\t\t\tndata = asn1.PublicKey.decode(data, 'der');\n\t\t\t}\n\t\t\tsubtype = ndata.algorithm.algorithm.join('.');\n\t\t\tswitch (subtype) {\n\t\t\t\tcase '1.2.840.113549.1.1.1':\n\t\t\t\t\treturn asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');\n\t\t\t\tcase '1.2.840.10045.2.1':\n\t\t\t\t\tndata.subjectPrivateKey = ndata.subjectPublicKey;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'ec',\n\t\t\t\t\t\tdata: ndata\n\t\t\t\t\t};\n\t\t\t\tcase '1.2.840.10040.4.1':\n\t\t\t\t\tndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der');\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'dsa',\n\t\t\t\t\t\tdata: ndata.algorithm.params\n\t\t\t\t\t};\n\t\t\t\tdefault: throw new Error('unknown key id ' + subtype);\n\t\t\t}\n\t\t\t// throw new Error('unknown key type ' + type)\n\t\tcase 'ENCRYPTED PRIVATE KEY':\n\t\t\tdata = asn1.EncryptedPrivateKey.decode(data, 'der');\n\t\t\tdata = decrypt(data, password);\n\t\t\t// falls through\n\t\tcase 'PRIVATE KEY':\n\t\t\tndata = asn1.PrivateKey.decode(data, 'der');\n\t\t\tsubtype = ndata.algorithm.algorithm.join('.');\n\t\t\tswitch (subtype) {\n\t\t\t\tcase '1.2.840.113549.1.1.1':\n\t\t\t\t\treturn asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');\n\t\t\t\tcase '1.2.840.10045.2.1':\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcurve: ndata.algorithm.curve,\n\t\t\t\t\t\tprivateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n\t\t\t\t\t};\n\t\t\t\tcase '1.2.840.10040.4.1':\n\t\t\t\t\tndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der');\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'dsa',\n\t\t\t\t\t\tparams: ndata.algorithm.params\n\t\t\t\t\t};\n\t\t\t\tdefault: throw new Error('unknown key id ' + subtype);\n\t\t\t}\n\t\t\t// throw new Error('unknown key type ' + type)\n\t\tcase 'RSA PUBLIC KEY':\n\t\t\treturn asn1.RSAPublicKey.decode(data, 'der');\n\t\tcase 'RSA PRIVATE KEY':\n\t\t\treturn asn1.RSAPrivateKey.decode(data, 'der');\n\t\tcase 'DSA PRIVATE KEY':\n\t\t\treturn {\n\t\t\t\ttype: 'dsa',\n\t\t\t\tparams: asn1.DSAPrivateKey.decode(data, 'der')\n\t\t\t};\n\t\tcase 'EC PRIVATE KEY':\n\t\t\tdata = asn1.ECPrivateKey.decode(data, 'der');\n\t\t\treturn {\n\t\t\t\tcurve: data.parameters.value,\n\t\t\t\tprivateKey: data.privateKey\n\t\t\t};\n\t\tdefault: throw new Error('unknown key type ' + type);\n\t}\n}\nparseKeys.signature = asn1.signature;\n\nmodule.exports = parseKeys;\n","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar createHmac = require('create-hmac');\nvar crt = require('browserify-rsa');\nvar EC = require('elliptic').ec;\nvar BN = require('bn.js');\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\n\nvar RSA_PKCS1_PADDING = 1;\n\nfunction sign(hash, key, hashType, signType, tag) {\n var priv = parseKeys(key);\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n return ecSign(hash, priv);\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong private key type'); }\n return dsaSign(hash, priv, hashType);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) { throw new Error('illegal or unsupported padding mode'); }\n\n hash = Buffer.concat([tag, hash]);\n var len = priv.modulus.byteLength();\n var pad = [0, 1];\n while (hash.length + pad.length + 1 < len) { pad.push(0xff); }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) { pad.push(hash[i]); }\n\n var out = crt(pad, priv);\n return out;\n}\n\nfunction ecSign(hash, priv) {\n var curveId = curves[priv.curve.join('.')];\n if (!curveId) { throw new Error('unknown curve ' + priv.curve.join('.')); }\n\n var curve = new EC(curveId);\n var key = curve.keyFromPrivate(priv.privateKey);\n var out = key.sign(hash);\n\n return Buffer.from(out.toDER());\n}\n\nfunction dsaSign(hash, priv, algo) {\n var x = priv.params.priv_key;\n var p = priv.params.p;\n var q = priv.params.q;\n var g = priv.params.g;\n var r = new BN(0);\n var k;\n var H = bits2int(hash, q).mod(q);\n var s = false;\n var kv = getKey(x, q, hash, algo);\n while (s === false) {\n k = makeKey(q, kv, algo);\n r = makeR(g, k, p, q);\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q);\n if (s.cmpn(0) === 0) {\n s = false;\n r = new BN(0);\n }\n }\n return toDER(r, s);\n}\n\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray();\n\n // Pad values\n if (r[0] & 0x80) { r = [0].concat(r); }\n if (s[0] & 0x80) { s = [0].concat(s); }\n\n var total = r.length + s.length + 4;\n var res = [\n 0x30, total, 0x02, r.length\n ];\n res = res.concat(r, [0x02, s.length], s);\n return Buffer.from(res);\n}\n\nfunction getKey(x, q, hash, algo) {\n x = Buffer.from(x.toArray());\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length);\n x = Buffer.concat([zeros, x]);\n }\n var hlen = hash.length;\n var hbits = bits2octets(hash, q);\n var v = Buffer.alloc(hlen);\n v.fill(1);\n var k = Buffer.alloc(hlen);\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n return { k: k, v: v };\n}\n\nfunction bits2int(obits, q) {\n var bits = new BN(obits);\n var shift = (obits.length << 3) - q.bitLength();\n if (shift > 0) { bits.ishrn(shift); }\n return bits;\n}\n\nfunction bits2octets(bits, q) {\n bits = bits2int(bits, q);\n bits = bits.mod(q);\n var out = Buffer.from(bits.toArray());\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length);\n out = Buffer.concat([zeros, out]);\n }\n return out;\n}\n\nfunction makeKey(q, kv, algo) {\n var t;\n var k;\n\n do {\n t = Buffer.alloc(0);\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n t = Buffer.concat([t, kv.v]);\n }\n\n k = bits2int(t, q);\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n } while (k.cmp(q) !== -1);\n\n return k;\n}\n\nfunction makeR(g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);\n}\n\nmodule.exports = sign;\nmodule.exports.getKey = getKey;\nmodule.exports.makeKey = makeKey;\n","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\n\nfunction verify(sig, hash, key, signType, tag) {\n var pub = parseKeys(key);\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }\n return ecVerify(sig, hash, pub);\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong public key type'); }\n return dsaVerify(sig, hash, pub);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }\n\n hash = Buffer.concat([tag, hash]);\n var len = pub.modulus.byteLength();\n var pad = [1];\n var padNum = 0;\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff);\n padNum += 1;\n }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n pad = Buffer.from(pad);\n var red = BN.mont(pub.modulus);\n sig = new BN(sig).toRed(red);\n\n sig = sig.redPow(new BN(pub.publicExponent));\n sig = Buffer.from(sig.fromRed().toArray());\n var out = padNum < 8 ? 1 : 0;\n len = Math.min(sig.length, pad.length);\n if (sig.length !== pad.length) { out = 1; }\n\n i = -1;\n while (++i < len) { out |= sig[i] ^ pad[i]; }\n return out === 0;\n}\n\nfunction ecVerify(sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')];\n if (!curveId) { throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')); }\n\n var curve = new EC(curveId);\n var pubkey = pub.data.subjectPrivateKey.data;\n\n return curve.verify(hash, sig, pubkey);\n}\n\nfunction dsaVerify(sig, hash, pub) {\n var p = pub.data.p;\n var q = pub.data.q;\n var g = pub.data.g;\n var y = pub.data.pub_key;\n var unpacked = parseKeys.signature.decode(sig, 'der');\n var s = unpacked.s;\n var r = unpacked.r;\n checkValue(s, q);\n checkValue(r, q);\n var montp = BN.mont(p);\n var w = s.invm(q);\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q);\n return v.cmp(r) === 0;\n}\n\nfunction checkValue(b, q) {\n if (b.cmpn(0) <= 0) { throw new Error('invalid sig'); }\n if (b.cmp(q) >= 0) { throw new Error('invalid sig'); }\n}\n\nmodule.exports = verify;\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar createHash = require('create-hash');\nvar stream = require('readable-stream');\nvar inherits = require('inherits');\nvar sign = require('./sign');\nvar verify = require('./verify');\n\nvar algorithms = require('./algorithms.json');\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');\n algorithms[key.toLowerCase()] = algorithms[key];\n});\n\nfunction Sign(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { throw new Error('Unknown message digest'); }\n\n this._hashType = data.hash;\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Sign, stream.Writable);\n\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nSign.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nSign.prototype.sign = function signMethod(key, enc) {\n this.end();\n var hash = this._hash.digest();\n var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n\n return enc ? sig.toString(enc) : sig;\n};\n\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { throw new Error('Unknown message digest'); }\n\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Verify, stream.Writable);\n\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nVerify.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;\n\n this.end();\n var hash = this._hash.digest();\n return verify(sigBuffer, hash, key, this._signType, this._tag);\n};\n\nfunction createSign(algorithm) {\n return new Sign(algorithm);\n}\n\nfunction createVerify(algorithm) {\n return new Verify(algorithm);\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n};\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","/**\n * Password-Based Key-Derivation Function #2 implementation.\n *\n * See RFC 2898 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./hmac');\nrequire('./md');\nrequire('./util');\n\nvar pkcs5 = forge.pkcs5 = forge.pkcs5 || {};\n\nvar crypto;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript) {\n crypto = require('crypto');\n}\n\n/**\n * Derives a key from a password.\n *\n * @param p the password as a binary-encoded string of bytes.\n * @param s the salt as a binary-encoded string of bytes.\n * @param c the iteration count, a positive integer.\n * @param dkLen the intended length, in bytes, of the derived key,\n * (max: 2^32 - 1) * hash length of the PRF.\n * @param [md] the message digest (or algorithm identifier as a string) to use\n * in the PRF, defaults to SHA-1.\n * @param [callback(err, key)] presence triggers asynchronous version, called\n * once the operation completes.\n *\n * @return the derived key, as a binary-encoded string of bytes, for the\n * synchronous version (if no callback is specified).\n */\nmodule.exports = forge.pbkdf2 = pkcs5.pbkdf2 = function(\n p, s, c, dkLen, md, callback) {\n if(typeof md === 'function') {\n callback = md;\n md = null;\n }\n\n // use native implementation if possible and not disabled, note that\n // some node versions only support SHA-1, others allow digest to be changed\n if(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n crypto.pbkdf2 && (md === null || typeof md !== 'object') &&\n (crypto.pbkdf2Sync.length > 4 || (!md || md === 'sha1'))) {\n if(typeof md !== 'string') {\n // default prf to SHA-1\n md = 'sha1';\n }\n p = Buffer.from(p, 'binary');\n s = Buffer.from(s, 'binary');\n if(!callback) {\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2Sync(p, s, c, dkLen).toString('binary');\n }\n return crypto.pbkdf2Sync(p, s, c, dkLen, md).toString('binary');\n }\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2(p, s, c, dkLen, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n return crypto.pbkdf2(p, s, c, dkLen, md, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n\n if(typeof md === 'undefined' || md === null) {\n // default prf to SHA-1\n md = 'sha1';\n }\n if(typeof md === 'string') {\n if(!(md in forge.md.algorithms)) {\n throw new Error('Unknown hash algorithm: ' + md);\n }\n md = forge.md[md].create();\n }\n\n var hLen = md.digestLength;\n\n /* 1. If dkLen > (2^32 - 1) * hLen, output \"derived key too long\" and\n stop. */\n if(dkLen > (0xFFFFFFFF * hLen)) {\n var err = new Error('Derived key is too long.');\n if(callback) {\n return callback(err);\n }\n throw err;\n }\n\n /* 2. Let len be the number of hLen-octet blocks in the derived key,\n rounding up, and let r be the number of octets in the last\n block:\n\n len = CEIL(dkLen / hLen),\n r = dkLen - (len - 1) * hLen. */\n var len = Math.ceil(dkLen / hLen);\n var r = dkLen - (len - 1) * hLen;\n\n /* 3. For each block of the derived key apply the function F defined\n below to the password P, the salt S, the iteration count c, and\n the block index to compute the block:\n\n T_1 = F(P, S, c, 1),\n T_2 = F(P, S, c, 2),\n ...\n T_len = F(P, S, c, len),\n\n where the function F is defined as the exclusive-or sum of the\n first c iterates of the underlying pseudorandom function PRF\n applied to the password P and the concatenation of the salt S\n and the block index i:\n\n F(P, S, c, i) = u_1 XOR u_2 XOR ... XOR u_c\n\n where\n\n u_1 = PRF(P, S || INT(i)),\n u_2 = PRF(P, u_1),\n ...\n u_c = PRF(P, u_{c-1}).\n\n Here, INT(i) is a four-octet encoding of the integer i, most\n significant octet first. */\n var prf = forge.hmac.create();\n prf.start(md, p);\n var dk = '';\n var xor, u_c, u_c1;\n\n // sync version\n if(!callback) {\n for(var i = 1; i <= len; ++i) {\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n for(var j = 2; j <= c; ++j) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n }\n /* 5. Output the derived key DK. */\n return dk;\n }\n\n // async version\n var i = 1, j;\n function outer() {\n if(i > len) {\n // done\n return callback(null, dk);\n }\n\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n j = 2;\n inner();\n }\n\n function inner() {\n if(j <= c) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n ++j;\n return forge.util.setImmediate(inner);\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n\n ++i;\n outer();\n }\n\n outer();\n};\n","/**\n * Javascript implementation of basic PEM (Privacy Enhanced Mail) algorithms.\n *\n * See: RFC 1421.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2013-2014 Digital Bazaar, Inc.\n *\n * A Forge PEM object has the following fields:\n *\n * type: identifies the type of message (eg: \"RSA PRIVATE KEY\").\n *\n * procType: identifies the type of processing performed on the message,\n * it has two subfields: version and type, eg: 4,ENCRYPTED.\n *\n * contentDomain: identifies the type of content in the message, typically\n * only uses the value: \"RFC822\".\n *\n * dekInfo: identifies the message encryption algorithm and mode and includes\n * any parameters for the algorithm, it has two subfields: algorithm and\n * parameters, eg: DES-CBC,F8143EDE5960C597.\n *\n * headers: contains all other PEM encapsulated headers -- where order is\n * significant (for pairing data like recipient ID + key info).\n *\n * body: the binary-encoded body.\n */\nvar forge = require('./forge');\nrequire('./util');\n\n// shortcut for pem API\nvar pem = module.exports = forge.pem = forge.pem || {};\n\n/**\n * Encodes (serializes) the given PEM object.\n *\n * @param msg the PEM message object to encode.\n * @param options the options to use:\n * maxline the maximum characters per line for the body, (default: 64).\n *\n * @return the PEM-formatted string.\n */\npem.encode = function(msg, options) {\n options = options || {};\n var rval = '-----BEGIN ' + msg.type + '-----\\r\\n';\n\n // encode special headers\n var header;\n if(msg.procType) {\n header = {\n name: 'Proc-Type',\n values: [String(msg.procType.version), msg.procType.type]\n };\n rval += foldHeader(header);\n }\n if(msg.contentDomain) {\n header = {name: 'Content-Domain', values: [msg.contentDomain]};\n rval += foldHeader(header);\n }\n if(msg.dekInfo) {\n header = {name: 'DEK-Info', values: [msg.dekInfo.algorithm]};\n if(msg.dekInfo.parameters) {\n header.values.push(msg.dekInfo.parameters);\n }\n rval += foldHeader(header);\n }\n\n if(msg.headers) {\n // encode all other headers\n for(var i = 0; i < msg.headers.length; ++i) {\n rval += foldHeader(msg.headers[i]);\n }\n }\n\n // terminate header\n if(msg.procType) {\n rval += '\\r\\n';\n }\n\n // add body\n rval += forge.util.encode64(msg.body, options.maxline || 64) + '\\r\\n';\n\n rval += '-----END ' + msg.type + '-----\\r\\n';\n return rval;\n};\n\n/**\n * Decodes (deserializes) all PEM messages found in the given string.\n *\n * @param str the PEM-formatted string to decode.\n *\n * @return the PEM message objects in an array.\n */\npem.decode = function(str) {\n var rval = [];\n\n // split string into PEM messages (be lenient w/EOF on BEGIN line)\n var rMessage = /\\s*-----BEGIN ([A-Z0-9- ]+)-----\\r?\\n?([\\x21-\\x7e\\s]+?(?:\\r?\\n\\r?\\n))?([:A-Za-z0-9+\\/=\\s]+?)-----END \\1-----/g;\n var rHeader = /([\\x21-\\x7e]+):\\s*([\\x21-\\x7e\\s^:]+)/;\n var rCRLF = /\\r?\\n/;\n var match;\n while(true) {\n match = rMessage.exec(str);\n if(!match) {\n break;\n }\n\n // accept \"NEW CERTIFICATE REQUEST\" as \"CERTIFICATE REQUEST\"\n // https://datatracker.ietf.org/doc/html/rfc7468#section-7\n var type = match[1];\n if(type === 'NEW CERTIFICATE REQUEST') {\n type = 'CERTIFICATE REQUEST';\n }\n\n var msg = {\n type: type,\n procType: null,\n contentDomain: null,\n dekInfo: null,\n headers: [],\n body: forge.util.decode64(match[3])\n };\n rval.push(msg);\n\n // no headers\n if(!match[2]) {\n continue;\n }\n\n // parse headers\n var lines = match[2].split(rCRLF);\n var li = 0;\n while(match && li < lines.length) {\n // get line, trim any rhs whitespace\n var line = lines[li].replace(/\\s+$/, '');\n\n // RFC2822 unfold any following folded lines\n for(var nl = li + 1; nl < lines.length; ++nl) {\n var next = lines[nl];\n if(!/\\s/.test(next[0])) {\n break;\n }\n line += next;\n li = nl;\n }\n\n // parse header\n match = line.match(rHeader);\n if(match) {\n var header = {name: match[1], values: []};\n var values = match[2].split(',');\n for(var vi = 0; vi < values.length; ++vi) {\n header.values.push(ltrim(values[vi]));\n }\n\n // Proc-Type must be the first header\n if(!msg.procType) {\n if(header.name !== 'Proc-Type') {\n throw new Error('Invalid PEM formatted message. The first ' +\n 'encapsulated header must be \"Proc-Type\".');\n } else if(header.values.length !== 2) {\n throw new Error('Invalid PEM formatted message. The \"Proc-Type\" ' +\n 'header must have two subfields.');\n }\n msg.procType = {version: values[0], type: values[1]};\n } else if(!msg.contentDomain && header.name === 'Content-Domain') {\n // special-case Content-Domain\n msg.contentDomain = values[0] || '';\n } else if(!msg.dekInfo && header.name === 'DEK-Info') {\n // special-case DEK-Info\n if(header.values.length === 0) {\n throw new Error('Invalid PEM formatted message. The \"DEK-Info\" ' +\n 'header must have at least one subfield.');\n }\n msg.dekInfo = {algorithm: values[0], parameters: values[1] || null};\n } else {\n msg.headers.push(header);\n }\n }\n\n ++li;\n }\n\n if(msg.procType === 'ENCRYPTED' && !msg.dekInfo) {\n throw new Error('Invalid PEM formatted message. The \"DEK-Info\" ' +\n 'header must be present if \"Proc-Type\" is \"ENCRYPTED\".');\n }\n }\n\n if(rval.length === 0) {\n throw new Error('Invalid PEM formatted message.');\n }\n\n return rval;\n};\n\nfunction foldHeader(header) {\n var rval = header.name + ': ';\n\n // ensure values with CRLF are folded\n var values = [];\n var insertSpace = function(match, $1) {\n return ' ' + $1;\n };\n for(var i = 0; i < header.values.length; ++i) {\n values.push(header.values[i].replace(/^(\\S+\\r\\n)/, insertSpace));\n }\n rval += values.join(',') + '\\r\\n';\n\n // do folding\n var length = 0;\n var candidate = -1;\n for(var i = 0; i < rval.length; ++i, ++length) {\n if(length > 65 && candidate !== -1) {\n var insert = rval[candidate];\n if(insert === ',') {\n ++candidate;\n rval = rval.substr(0, candidate) + '\\r\\n ' + rval.substr(candidate);\n } else {\n rval = rval.substr(0, candidate) +\n '\\r\\n' + insert + rval.substr(candidate + 1);\n }\n length = (i - candidate - 1);\n candidate = -1;\n ++i;\n } else if(rval[i] === ' ' || rval[i] === '\\t' || rval[i] === ',') {\n candidate = i;\n }\n }\n\n return rval;\n}\n\nfunction ltrim(str) {\n return str.replace(/^\\s+/, '');\n}\n","/**\n * Secure Hash Algorithm with 256-bit digest (SHA-256) implementation.\n *\n * See FIPS 180-2 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha256 = module.exports = forge.sha256 = forge.sha256 || {};\nforge.md.sha256 = forge.md.algorithms.sha256 = sha256;\n\n/**\n * Creates a SHA-256 message digest object.\n *\n * @return a message digest object.\n */\nsha256.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // SHA-256 state contains eight 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(64);\n\n // message digest object\n var md = {\n algorithm: 'sha256',\n blockLength: 64,\n digestLength: 32,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x6A09E667,\n h1: 0xBB67AE85,\n h2: 0x3C6EF372,\n h3: 0xA54FF53A,\n h4: 0x510E527F,\n h5: 0x9B05688C,\n h6: 0x1F83D9AB,\n h7: 0x5BE0CD19\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-256 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var s2 = {\n h0: _state.h0,\n h1: _state.h1,\n h2: _state.h2,\n h3: _state.h3,\n h4: _state.h4,\n h5: _state.h5,\n h6: _state.h6,\n h7: _state.h7\n };\n _update(s2, _w, finalBlock);\n var rval = forge.util.createBuffer();\n rval.putInt32(s2.h0);\n rval.putInt32(s2.h1);\n rval.putInt32(s2.h2);\n rval.putInt32(s2.h3);\n rval.putInt32(s2.h4);\n rval.putInt32(s2.h5);\n rval.putInt32(s2.h6);\n rval.putInt32(s2.h7);\n return rval;\n };\n\n return md;\n};\n\n// sha-256 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n// table of constants\nvar _k = null;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 64);\n\n // create K table for SHA-256\n _k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-256 state with the given byte buffer.\n *\n * @param s the SHA-256 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (64 byte) chunks\n var t1, t2, s0, s1, ch, maj, i, a, b, c, d, e, f, g, h;\n var len = bytes.length();\n while(len >= 64) {\n // the w array will be populated with sixteen 32-bit big-endian words\n // and then extended into 64 32-bit words according to SHA-256\n for(i = 0; i < 16; ++i) {\n w[i] = bytes.getInt32();\n }\n for(; i < 64; ++i) {\n // XOR word 2 words ago rot right 17, rot right 19, shft right 10\n t1 = w[i - 2];\n t1 =\n ((t1 >>> 17) | (t1 << 15)) ^\n ((t1 >>> 19) | (t1 << 13)) ^\n (t1 >>> 10);\n // XOR word 15 words ago rot right 7, rot right 18, shft right 3\n t2 = w[i - 15];\n t2 =\n ((t2 >>> 7) | (t2 << 25)) ^\n ((t2 >>> 18) | (t2 << 14)) ^\n (t2 >>> 3);\n // sum(t1, word 7 ago, t2, word 16 ago) modulo 2^32\n w[i] = (t1 + w[i - 7] + t2 + w[i - 16]) | 0;\n }\n\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n e = s.h4;\n f = s.h5;\n g = s.h6;\n h = s.h7;\n\n // round function\n for(i = 0; i < 64; ++i) {\n // Sum1(e)\n s1 =\n ((e >>> 6) | (e << 26)) ^\n ((e >>> 11) | (e << 21)) ^\n ((e >>> 25) | (e << 7));\n // Ch(e, f, g) (optimized the same way as SHA-1)\n ch = g ^ (e & (f ^ g));\n // Sum0(a)\n s0 =\n ((a >>> 2) | (a << 30)) ^\n ((a >>> 13) | (a << 19)) ^\n ((a >>> 22) | (a << 10));\n // Maj(a, b, c) (optimized the same way as SHA-1)\n maj = (a & b) | (c & (a ^ b));\n\n // main algorithm\n t1 = h + s1 + ch + _k[i] + w[i];\n t2 = s0 + maj;\n h = g;\n g = f;\n f = e;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n // can't truncate with `| 0`\n e = (d + t1) >>> 0;\n d = c;\n c = b;\n b = a;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n // can't truncate with `| 0`\n a = (t1 + t2) >>> 0;\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n s.h4 = (s.h4 + e) | 0;\n s.h5 = (s.h5 + f) | 0;\n s.h6 = (s.h6 + g) | 0;\n s.h7 = (s.h7 + h) | 0;\n len -= 64;\n }\n}\n","/**\n * A javascript implementation of a cryptographically-secure\n * Pseudo Random Number Generator (PRNG). The Fortuna algorithm is followed\n * here though the use of SHA-256 is not enforced; when generating an\n * a PRNG context, the hashing algorithm and block cipher used for\n * the generator are specified via a plugin.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nvar _crypto = null;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n !process.versions['node-webkit']) {\n _crypto = require('crypto');\n}\n\n/* PRNG API */\nvar prng = module.exports = forge.prng = forge.prng || {};\n\n/**\n * Creates a new PRNG context.\n *\n * A PRNG plugin must be passed in that will provide:\n *\n * 1. A function that initializes the key and seed of a PRNG context. It\n * will be given a 16 byte key and a 16 byte seed. Any key expansion\n * or transformation of the seed from a byte string into an array of\n * integers (or similar) should be performed.\n * 2. The cryptographic function used by the generator. It takes a key and\n * a seed.\n * 3. A seed increment function. It takes the seed and returns seed + 1.\n * 4. An api to create a message digest.\n *\n * For an example, see random.js.\n *\n * @param plugin the PRNG plugin to use.\n */\nprng.create = function(plugin) {\n var ctx = {\n plugin: plugin,\n key: null,\n seed: null,\n time: null,\n // number of reseeds so far\n reseeds: 0,\n // amount of data generated so far\n generated: 0,\n // no initial key bytes\n keyBytes: ''\n };\n\n // create 32 entropy pools (each is a message digest)\n var md = plugin.md;\n var pools = new Array(32);\n for(var i = 0; i < 32; ++i) {\n pools[i] = md.create();\n }\n ctx.pools = pools;\n\n // entropy pools are written to cyclically, starting at index 0\n ctx.pool = 0;\n\n /**\n * Generates random bytes. The bytes may be generated synchronously or\n * asynchronously. Web workers must use the asynchronous interface or\n * else the behavior is undefined.\n *\n * @param count the number of random bytes to generate.\n * @param [callback(err, bytes)] called once the operation completes.\n *\n * @return count random bytes as a string.\n */\n ctx.generate = function(count, callback) {\n // do synchronously\n if(!callback) {\n return ctx.generateSync(count);\n }\n\n // simple generator using counter-based CBC\n var cipher = ctx.plugin.cipher;\n var increment = ctx.plugin.increment;\n var formatKey = ctx.plugin.formatKey;\n var formatSeed = ctx.plugin.formatSeed;\n var b = forge.util.createBuffer();\n\n // paranoid deviation from Fortuna:\n // reset key for every request to protect previously\n // generated random bytes should the key be discovered;\n // there is no 100ms based reseeding because of this\n // forced reseed for every `generate` call\n ctx.key = null;\n\n generate();\n\n function generate(err) {\n if(err) {\n return callback(err);\n }\n\n // sufficient bytes generated\n if(b.length() >= count) {\n return callback(null, b.getBytes(count));\n }\n\n // if amount of data generated is greater than 1 MiB, trigger reseed\n if(ctx.generated > 0xfffff) {\n ctx.key = null;\n }\n\n if(ctx.key === null) {\n // prevent stack overflow\n return forge.util.nextTick(function() {\n _reseed(generate);\n });\n }\n\n // generate the random bytes\n var bytes = cipher(ctx.key, ctx.seed);\n ctx.generated += bytes.length;\n b.putBytes(bytes);\n\n // generate bytes for a new key and seed\n ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));\n ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));\n\n forge.util.setImmediate(generate);\n }\n };\n\n /**\n * Generates random bytes synchronously.\n *\n * @param count the number of random bytes to generate.\n *\n * @return count random bytes as a string.\n */\n ctx.generateSync = function(count) {\n // simple generator using counter-based CBC\n var cipher = ctx.plugin.cipher;\n var increment = ctx.plugin.increment;\n var formatKey = ctx.plugin.formatKey;\n var formatSeed = ctx.plugin.formatSeed;\n\n // paranoid deviation from Fortuna:\n // reset key for every request to protect previously\n // generated random bytes should the key be discovered;\n // there is no 100ms based reseeding because of this\n // forced reseed for every `generateSync` call\n ctx.key = null;\n\n var b = forge.util.createBuffer();\n while(b.length() < count) {\n // if amount of data generated is greater than 1 MiB, trigger reseed\n if(ctx.generated > 0xfffff) {\n ctx.key = null;\n }\n\n if(ctx.key === null) {\n _reseedSync();\n }\n\n // generate the random bytes\n var bytes = cipher(ctx.key, ctx.seed);\n ctx.generated += bytes.length;\n b.putBytes(bytes);\n\n // generate bytes for a new key and seed\n ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));\n ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));\n }\n\n return b.getBytes(count);\n };\n\n /**\n * Private function that asynchronously reseeds a generator.\n *\n * @param callback(err) called once the operation completes.\n */\n function _reseed(callback) {\n if(ctx.pools[0].messageLength >= 32) {\n _seed();\n return callback();\n }\n // not enough seed data...\n var needed = (32 - ctx.pools[0].messageLength) << 5;\n ctx.seedFile(needed, function(err, bytes) {\n if(err) {\n return callback(err);\n }\n ctx.collect(bytes);\n _seed();\n callback();\n });\n }\n\n /**\n * Private function that synchronously reseeds a generator.\n */\n function _reseedSync() {\n if(ctx.pools[0].messageLength >= 32) {\n return _seed();\n }\n // not enough seed data...\n var needed = (32 - ctx.pools[0].messageLength) << 5;\n ctx.collect(ctx.seedFileSync(needed));\n _seed();\n }\n\n /**\n * Private function that seeds a generator once enough bytes are available.\n */\n function _seed() {\n // update reseed count\n ctx.reseeds = (ctx.reseeds === 0xffffffff) ? 0 : ctx.reseeds + 1;\n\n // goal is to update `key` via:\n // key = hash(key + s)\n // where 's' is all collected entropy from selected pools, then...\n\n // create a plugin-based message digest\n var md = ctx.plugin.md.create();\n\n // consume current key bytes\n md.update(ctx.keyBytes);\n\n // digest the entropy of pools whose index k meet the\n // condition 'n mod 2^k == 0' where n is the number of reseeds\n var _2powK = 1;\n for(var k = 0; k < 32; ++k) {\n if(ctx.reseeds % _2powK === 0) {\n md.update(ctx.pools[k].digest().getBytes());\n ctx.pools[k].start();\n }\n _2powK = _2powK << 1;\n }\n\n // get digest for key bytes\n ctx.keyBytes = md.digest().getBytes();\n\n // paranoid deviation from Fortuna:\n // update `seed` via `seed = hash(key)`\n // instead of initializing to zero once and only\n // ever incrementing it\n md.start();\n md.update(ctx.keyBytes);\n var seedBytes = md.digest().getBytes();\n\n // update state\n ctx.key = ctx.plugin.formatKey(ctx.keyBytes);\n ctx.seed = ctx.plugin.formatSeed(seedBytes);\n ctx.generated = 0;\n }\n\n /**\n * The built-in default seedFile. This seedFile is used when entropy\n * is needed immediately.\n *\n * @param needed the number of bytes that are needed.\n *\n * @return the random bytes.\n */\n function defaultSeedFile(needed) {\n // use window.crypto.getRandomValues strong source of entropy if available\n var getRandomValues = null;\n var globalScope = forge.util.globalScope;\n var _crypto = globalScope.crypto || globalScope.msCrypto;\n if(_crypto && _crypto.getRandomValues) {\n getRandomValues = function(arr) {\n return _crypto.getRandomValues(arr);\n };\n }\n\n var b = forge.util.createBuffer();\n if(getRandomValues) {\n while(b.length() < needed) {\n // max byte length is 65536 before QuotaExceededError is thrown\n // http://www.w3.org/TR/WebCryptoAPI/#RandomSource-method-getRandomValues\n var count = Math.max(1, Math.min(needed - b.length(), 65536) / 4);\n var entropy = new Uint32Array(Math.floor(count));\n try {\n getRandomValues(entropy);\n for(var i = 0; i < entropy.length; ++i) {\n b.putInt32(entropy[i]);\n }\n } catch(e) {\n /* only ignore QuotaExceededError */\n if(!(typeof QuotaExceededError !== 'undefined' &&\n e instanceof QuotaExceededError)) {\n throw e;\n }\n }\n }\n }\n\n // be sad and add some weak random data\n if(b.length() < needed) {\n /* Draws from Park-Miller \"minimal standard\" 31 bit PRNG,\n implemented with David G. Carta's optimization: with 32 bit math\n and without division (Public Domain). */\n var hi, lo, next;\n var seed = Math.floor(Math.random() * 0x010000);\n while(b.length() < needed) {\n lo = 16807 * (seed & 0xFFFF);\n hi = 16807 * (seed >> 16);\n lo += (hi & 0x7FFF) << 16;\n lo += hi >> 15;\n lo = (lo & 0x7FFFFFFF) + (lo >> 31);\n seed = lo & 0xFFFFFFFF;\n\n // consume lower 3 bytes of seed\n for(var i = 0; i < 3; ++i) {\n // throw in more pseudo random\n next = seed >>> (i << 3);\n next ^= Math.floor(Math.random() * 0x0100);\n b.putByte(next & 0xFF);\n }\n }\n }\n\n return b.getBytes(needed);\n }\n // initialize seed file APIs\n if(_crypto) {\n // use nodejs async API\n ctx.seedFile = function(needed, callback) {\n _crypto.randomBytes(needed, function(err, bytes) {\n if(err) {\n return callback(err);\n }\n callback(null, bytes.toString());\n });\n };\n // use nodejs sync API\n ctx.seedFileSync = function(needed) {\n return _crypto.randomBytes(needed).toString();\n };\n } else {\n ctx.seedFile = function(needed, callback) {\n try {\n callback(null, defaultSeedFile(needed));\n } catch(e) {\n callback(e);\n }\n };\n ctx.seedFileSync = defaultSeedFile;\n }\n\n /**\n * Adds entropy to a prng ctx's accumulator.\n *\n * @param bytes the bytes of entropy as a string.\n */\n ctx.collect = function(bytes) {\n // iterate over pools distributing entropy cyclically\n var count = bytes.length;\n for(var i = 0; i < count; ++i) {\n ctx.pools[ctx.pool].update(bytes.substr(i, 1));\n ctx.pool = (ctx.pool === 31) ? 0 : ctx.pool + 1;\n }\n };\n\n /**\n * Collects an integer of n bits.\n *\n * @param i the integer entropy.\n * @param n the number of bits in the integer.\n */\n ctx.collectInt = function(i, n) {\n var bytes = '';\n for(var x = 0; x < n; x += 8) {\n bytes += String.fromCharCode((i >> x) & 0xFF);\n }\n ctx.collect(bytes);\n };\n\n /**\n * Registers a Web Worker to receive immediate entropy from the main thread.\n * This method is required until Web Workers can access the native crypto\n * API. This method should be called twice for each created worker, once in\n * the main thread, and once in the worker itself.\n *\n * @param worker the worker to register.\n */\n ctx.registerWorker = function(worker) {\n // worker receives random bytes\n if(worker === self) {\n ctx.seedFile = function(needed, callback) {\n function listener(e) {\n var data = e.data;\n if(data.forge && data.forge.prng) {\n self.removeEventListener('message', listener);\n callback(data.forge.prng.err, data.forge.prng.bytes);\n }\n }\n self.addEventListener('message', listener);\n self.postMessage({forge: {prng: {needed: needed}}});\n };\n } else {\n // main thread sends random bytes upon request\n var listener = function(e) {\n var data = e.data;\n if(data.forge && data.forge.prng) {\n ctx.seedFile(data.forge.prng.needed, function(err, bytes) {\n worker.postMessage({forge: {prng: {err: err, bytes: bytes}}});\n });\n }\n };\n // TODO: do we need to remove the event listener when the worker dies?\n worker.addEventListener('message', listener);\n }\n };\n\n return ctx;\n};\n","/**\n * An API for getting cryptographically-secure random bytes. The bytes are\n * generated using the Fortuna algorithm devised by Bruce Schneier and\n * Niels Ferguson.\n *\n * Getting strong random bytes is not yet easy to do in javascript. The only\n * truish random entropy that can be collected is from the mouse, keyboard, or\n * from timing with respect to page loads, etc. This generator makes a poor\n * attempt at providing random bytes when those sources haven't yet provided\n * enough entropy to initially seed or to reseed the PRNG.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2009-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./sha256');\nrequire('./prng');\nrequire('./util');\n\n(function() {\n\n// forge.random already defined\nif(forge.random && forge.random.getBytes) {\n module.exports = forge.random;\n return;\n}\n\n(function(jQuery) {\n\n// the default prng plugin, uses AES-128\nvar prng_aes = {};\nvar _prng_aes_output = new Array(4);\nvar _prng_aes_buffer = forge.util.createBuffer();\nprng_aes.formatKey = function(key) {\n // convert the key into 32-bit integers\n var tmp = forge.util.createBuffer(key);\n key = new Array(4);\n key[0] = tmp.getInt32();\n key[1] = tmp.getInt32();\n key[2] = tmp.getInt32();\n key[3] = tmp.getInt32();\n\n // return the expanded key\n return forge.aes._expandKey(key, false);\n};\nprng_aes.formatSeed = function(seed) {\n // convert seed into 32-bit integers\n var tmp = forge.util.createBuffer(seed);\n seed = new Array(4);\n seed[0] = tmp.getInt32();\n seed[1] = tmp.getInt32();\n seed[2] = tmp.getInt32();\n seed[3] = tmp.getInt32();\n return seed;\n};\nprng_aes.cipher = function(key, seed) {\n forge.aes._updateBlock(key, seed, _prng_aes_output, false);\n _prng_aes_buffer.putInt32(_prng_aes_output[0]);\n _prng_aes_buffer.putInt32(_prng_aes_output[1]);\n _prng_aes_buffer.putInt32(_prng_aes_output[2]);\n _prng_aes_buffer.putInt32(_prng_aes_output[3]);\n return _prng_aes_buffer.getBytes();\n};\nprng_aes.increment = function(seed) {\n // FIXME: do we care about carry or signed issues?\n ++seed[3];\n return seed;\n};\nprng_aes.md = forge.md.sha256;\n\n/**\n * Creates a new PRNG.\n */\nfunction spawnPrng() {\n var ctx = forge.prng.create(prng_aes);\n\n /**\n * Gets random bytes. If a native secure crypto API is unavailable, this\n * method tries to make the bytes more unpredictable by drawing from data that\n * can be collected from the user of the browser, eg: mouse movement.\n *\n * If a callback is given, this method will be called asynchronously.\n *\n * @param count the number of random bytes to get.\n * @param [callback(err, bytes)] called once the operation completes.\n *\n * @return the random bytes in a string.\n */\n ctx.getBytes = function(count, callback) {\n return ctx.generate(count, callback);\n };\n\n /**\n * Gets random bytes asynchronously. If a native secure crypto API is\n * unavailable, this method tries to make the bytes more unpredictable by\n * drawing from data that can be collected from the user of the browser,\n * eg: mouse movement.\n *\n * @param count the number of random bytes to get.\n *\n * @return the random bytes in a string.\n */\n ctx.getBytesSync = function(count) {\n return ctx.generate(count);\n };\n\n return ctx;\n}\n\n// create default prng context\nvar _ctx = spawnPrng();\n\n// add other sources of entropy only if window.crypto.getRandomValues is not\n// available -- otherwise this source will be automatically used by the prng\nvar getRandomValues = null;\nvar globalScope = forge.util.globalScope;\nvar _crypto = globalScope.crypto || globalScope.msCrypto;\nif(_crypto && _crypto.getRandomValues) {\n getRandomValues = function(arr) {\n return _crypto.getRandomValues(arr);\n };\n}\n\nif(forge.options.usePureJavaScript ||\n (!forge.util.isNodejs && !getRandomValues)) {\n // if this is a web worker, do not use weak entropy, instead register to\n // receive strong entropy asynchronously from the main thread\n if(typeof window === 'undefined' || window.document === undefined) {\n // FIXME:\n }\n\n // get load time entropy\n _ctx.collectInt(+new Date(), 32);\n\n // add some entropy from navigator object\n if(typeof(navigator) !== 'undefined') {\n var _navBytes = '';\n for(var key in navigator) {\n try {\n if(typeof(navigator[key]) == 'string') {\n _navBytes += navigator[key];\n }\n } catch(e) {\n /* Some navigator keys might not be accessible, e.g. the geolocation\n attribute throws an exception if touched in Mozilla chrome://\n context.\n\n Silently ignore this and just don't use this as a source of\n entropy. */\n }\n }\n _ctx.collect(_navBytes);\n _navBytes = null;\n }\n\n // add mouse and keyboard collectors if jquery is available\n if(jQuery) {\n // set up mouse entropy capture\n jQuery().mousemove(function(e) {\n // add mouse coords\n _ctx.collectInt(e.clientX, 16);\n _ctx.collectInt(e.clientY, 16);\n });\n\n // set up keyboard entropy capture\n jQuery().keypress(function(e) {\n _ctx.collectInt(e.charCode, 8);\n });\n }\n}\n\n/* Random API */\nif(!forge.random) {\n forge.random = _ctx;\n} else {\n // extend forge.random with _ctx\n for(var key in _ctx) {\n forge.random[key] = _ctx[key];\n }\n}\n\n// expose spawn PRNG\nforge.random.createInstance = spawnPrng;\n\nmodule.exports = forge.random;\n\n})(typeof(jQuery) !== 'undefined' ? jQuery : null);\n\n})();\n","/**\n * RC2 implementation.\n *\n * @author Stefan Siegl\n *\n * Copyright (c) 2012 Stefan Siegl \n *\n * Information on the RC2 cipher is available from RFC #2268,\n * http://www.ietf.org/rfc/rfc2268.txt\n */\nvar forge = require('./forge');\nrequire('./util');\n\nvar piTable = [\n 0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed, 0x28, 0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d,\n 0xc6, 0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e, 0x62, 0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2,\n 0x17, 0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13, 0x61, 0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32,\n 0xbd, 0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b, 0xf0, 0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82,\n 0x54, 0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c, 0x73, 0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc,\n 0x12, 0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1, 0x42, 0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26,\n 0x6f, 0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57, 0x27, 0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03,\n 0xf8, 0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7, 0x06, 0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7,\n 0x08, 0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7, 0x84, 0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a,\n 0x96, 0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74, 0x4b, 0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec,\n 0xc2, 0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc, 0x24, 0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39,\n 0x99, 0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a, 0xfc, 0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31,\n 0x2d, 0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae, 0x05, 0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9,\n 0xd3, 0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c, 0x63, 0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9,\n 0x0d, 0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0, 0xbb, 0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e,\n 0xc5, 0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77, 0x0a, 0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad\n];\n\nvar s = [1, 2, 3, 5];\n\n/**\n * Rotate a word left by given number of bits.\n *\n * Bits that are shifted out on the left are put back in on the right\n * hand side.\n *\n * @param word The word to shift left.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar rol = function(word, bits) {\n return ((word << bits) & 0xffff) | ((word & 0xffff) >> (16 - bits));\n};\n\n/**\n * Rotate a word right by given number of bits.\n *\n * Bits that are shifted out on the right are put back in on the left\n * hand side.\n *\n * @param word The word to shift right.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar ror = function(word, bits) {\n return ((word & 0xffff) >> bits) | ((word << (16 - bits)) & 0xffff);\n};\n\n/* RC2 API */\nmodule.exports = forge.rc2 = forge.rc2 || {};\n\n/**\n * Perform RC2 key expansion as per RFC #2268, section 2.\n *\n * @param key variable-length user key (between 1 and 128 bytes)\n * @param effKeyBits number of effective key bits (default: 128)\n * @return the expanded RC2 key (ByteBuffer of 128 bytes)\n */\nforge.rc2.expandKey = function(key, effKeyBits) {\n if(typeof key === 'string') {\n key = forge.util.createBuffer(key);\n }\n effKeyBits = effKeyBits || 128;\n\n /* introduce variables that match the names used in RFC #2268 */\n var L = key;\n var T = key.length();\n var T1 = effKeyBits;\n var T8 = Math.ceil(T1 / 8);\n var TM = 0xff >> (T1 & 0x07);\n var i;\n\n for(i = T; i < 128; i++) {\n L.putByte(piTable[(L.at(i - 1) + L.at(i - T)) & 0xff]);\n }\n\n L.setAt(128 - T8, piTable[L.at(128 - T8) & TM]);\n\n for(i = 127 - T8; i >= 0; i--) {\n L.setAt(i, piTable[L.at(i + 1) ^ L.at(i + T8)]);\n }\n\n return L;\n};\n\n/**\n * Creates a RC2 cipher object.\n *\n * @param key the symmetric key to use (as base for key generation).\n * @param bits the number of effective key bits.\n * @param encrypt false for decryption, true for encryption.\n *\n * @return the cipher.\n */\nvar createCipher = function(key, bits, encrypt) {\n var _finish = false, _input = null, _output = null, _iv = null;\n var mixRound, mashRound;\n var i, j, K = [];\n\n /* Expand key and fill into K[] Array */\n key = forge.rc2.expandKey(key, bits);\n for(i = 0; i < 64; i++) {\n K.push(key.getInt16Le());\n }\n\n if(encrypt) {\n /**\n * Perform one mixing round \"in place\".\n *\n * @param R Array of four words to perform mixing on.\n */\n mixRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) +\n ((~R[(i + 3) % 4]) & R[(i + 1) % 4]);\n R[i] = rol(R[i], s[i]);\n j++;\n }\n };\n\n /**\n * Perform one mashing round \"in place\".\n *\n * @param R Array of four words to perform mashing on.\n */\n mashRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[R[(i + 3) % 4] & 63];\n }\n };\n } else {\n /**\n * Perform one r-mixing round \"in place\".\n *\n * @param R Array of four words to perform mixing on.\n */\n mixRound = function(R) {\n for(i = 3; i >= 0; i--) {\n R[i] = ror(R[i], s[i]);\n R[i] -= K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) +\n ((~R[(i + 3) % 4]) & R[(i + 1) % 4]);\n j--;\n }\n };\n\n /**\n * Perform one r-mashing round \"in place\".\n *\n * @param R Array of four words to perform mashing on.\n */\n mashRound = function(R) {\n for(i = 3; i >= 0; i--) {\n R[i] -= K[R[(i + 3) % 4] & 63];\n }\n };\n }\n\n /**\n * Run the specified cipher execution plan.\n *\n * This function takes four words from the input buffer, applies the IV on\n * it (if requested) and runs the provided execution plan.\n *\n * The plan must be put together in form of a array of arrays. Where the\n * outer one is simply a list of steps to perform and the inner one needs\n * to have two elements: the first one telling how many rounds to perform,\n * the second one telling what to do (i.e. the function to call).\n *\n * @param {Array} plan The plan to execute.\n */\n var runPlan = function(plan) {\n var R = [];\n\n /* Get data from input buffer and fill the four words into R */\n for(i = 0; i < 4; i++) {\n var val = _input.getInt16Le();\n\n if(_iv !== null) {\n if(encrypt) {\n /* We're encrypting, apply the IV first. */\n val ^= _iv.getInt16Le();\n } else {\n /* We're decryption, keep cipher text for next block. */\n _iv.putInt16Le(val);\n }\n }\n\n R.push(val & 0xffff);\n }\n\n /* Reset global \"j\" variable as per spec. */\n j = encrypt ? 0 : 63;\n\n /* Run execution plan. */\n for(var ptr = 0; ptr < plan.length; ptr++) {\n for(var ctr = 0; ctr < plan[ptr][0]; ctr++) {\n plan[ptr][1](R);\n }\n }\n\n /* Write back result to output buffer. */\n for(i = 0; i < 4; i++) {\n if(_iv !== null) {\n if(encrypt) {\n /* We're encrypting in CBC-mode, feed back encrypted bytes into\n IV buffer to carry it forward to next block. */\n _iv.putInt16Le(R[i]);\n } else {\n R[i] ^= _iv.getInt16Le();\n }\n }\n\n _output.putInt16Le(R[i]);\n }\n };\n\n /* Create cipher object */\n var cipher = null;\n cipher = {\n /**\n * Starts or restarts the encryption or decryption process, whichever\n * was previously configured.\n *\n * To use the cipher in CBC mode, iv may be given either as a string\n * of bytes, or as a byte buffer. For ECB mode, give null as iv.\n *\n * @param iv the initialization vector to use, null for ECB mode.\n * @param output the output the buffer to write to, null to create one.\n */\n start: function(iv, output) {\n if(iv) {\n /* CBC mode */\n if(typeof iv === 'string') {\n iv = forge.util.createBuffer(iv);\n }\n }\n\n _finish = false;\n _input = forge.util.createBuffer();\n _output = output || new forge.util.createBuffer();\n _iv = iv;\n\n cipher.output = _output;\n },\n\n /**\n * Updates the next block.\n *\n * @param input the buffer to read from.\n */\n update: function(input) {\n if(!_finish) {\n // not finishing, so fill the input buffer with more input\n _input.putBuffer(input);\n }\n\n while(_input.length() >= 8) {\n runPlan([\n [ 5, mixRound ],\n [ 1, mashRound ],\n [ 6, mixRound ],\n [ 1, mashRound ],\n [ 5, mixRound ]\n ]);\n }\n },\n\n /**\n * Finishes encrypting or decrypting.\n *\n * @param pad a padding function to use, null for PKCS#7 padding,\n * signature(blockSize, buffer, decrypt).\n *\n * @return true if successful, false on error.\n */\n finish: function(pad) {\n var rval = true;\n\n if(encrypt) {\n if(pad) {\n rval = pad(8, _input, !encrypt);\n } else {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (_input.length() === 8) ? 8 : (8 - _input.length());\n _input.fillWithByte(padding, padding);\n }\n }\n\n if(rval) {\n // do final update\n _finish = true;\n cipher.update();\n }\n\n if(!encrypt) {\n // check for error: input data not a multiple of block size\n rval = (_input.length() === 0);\n if(rval) {\n if(pad) {\n rval = pad(8, _output, !encrypt);\n } else {\n // ensure padding byte count is valid\n var len = _output.length();\n var count = _output.at(len - 1);\n\n if(count > len) {\n rval = false;\n } else {\n // trim off padding bytes\n _output.truncate(count);\n }\n }\n }\n }\n\n return rval;\n }\n };\n\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to encrypt data in ECB or CBC mode using the\n * given symmetric key. The output will be stored in the 'output' member\n * of the returned cipher.\n *\n * The key and iv may be given as a string of bytes or a byte buffer.\n * The cipher is initialized to use 128 effective key bits.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n *\n * @return the cipher.\n */\nforge.rc2.startEncrypting = function(key, iv, output) {\n var cipher = forge.rc2.createEncryptionCipher(key, 128);\n cipher.start(iv, output);\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to encrypt data in ECB or CBC mode using the\n * given symmetric key.\n *\n * The key may be given as a string of bytes or a byte buffer.\n *\n * To start encrypting call start() on the cipher with an iv and optional\n * output buffer.\n *\n * @param key the symmetric key to use.\n *\n * @return the cipher.\n */\nforge.rc2.createEncryptionCipher = function(key, bits) {\n return createCipher(key, bits, true);\n};\n\n/**\n * Creates an RC2 cipher object to decrypt data in ECB or CBC mode using the\n * given symmetric key. The output will be stored in the 'output' member\n * of the returned cipher.\n *\n * The key and iv may be given as a string of bytes or a byte buffer.\n * The cipher is initialized to use 128 effective key bits.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n *\n * @return the cipher.\n */\nforge.rc2.startDecrypting = function(key, iv, output) {\n var cipher = forge.rc2.createDecryptionCipher(key, 128);\n cipher.start(iv, output);\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to decrypt data in ECB or CBC mode using the\n * given symmetric key.\n *\n * The key may be given as a string of bytes or a byte buffer.\n *\n * To start decrypting call start() on the cipher with an iv and optional\n * output buffer.\n *\n * @param key the symmetric key to use.\n *\n * @return the cipher.\n */\nforge.rc2.createDecryptionCipher = function(key, bits) {\n return createCipher(key, bits, false);\n};\n","// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n/*\nLicensing (LICENSE)\n-------------------\n\nThis software is covered under the following copyright:\n*/\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n/*\nAddress all questions regarding this license to:\n\n Tom Wu\n tjw@cs.Stanford.EDU\n*/\nvar forge = require('./forge');\n\nmodule.exports = forge.jsbn = forge.jsbn || {};\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary&0xffffff)==0xefcafe);\n\n// (public) Constructor\nfunction BigInteger(a,b,c) {\n this.data = [];\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n}\nforge.jsbn.BigInteger = BigInteger;\n\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this.data[i++]+w.data[j]+c;\n c = Math.floor(v/0x4000000);\n w.data[j++] = v&0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this.data[i]&0x7fff;\n var h = this.data[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w.data[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w.data[j++] = l&0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this.data[i]&0x3fff;\n var h = this.data[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w.data[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w.data[j++] = l&0xfffffff;\n }\n return c;\n}\n\n// node.js (no browser)\nif(typeof(navigator) === 'undefined')\n{\n BigInteger.prototype.am = am3;\n dbits = 28;\n} else if(j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else if(j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n} else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1<= 0; --i) r.data[i] = this.data[i];\n r.t = this.t;\n r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this.data[0] = x;\n else if(x < -1) this.data[0] = x+this.DV;\n else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n// (protected) set from string and radix\nfunction bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this.data[this.t++] = x;\n else if(sh+k > this.DB) {\n this.data[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh));\n } else\n this.data[this.t-1] |= x<= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this.data[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this.data[this.t-1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1< 0) {\n if(p < this.DB && (d = this.data[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this.data[i]&((1<>(p+=this.DB-k);\n } else {\n d = (this.data[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n}\n\n// (public) -this\nfunction bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n// (public) |this|\nfunction bnAbs() { return (this.s<0)?this.negate():this; }\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this.data[i]-a.data[i]) != 0) return r;\n return 0;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this.data[this.t-1]^(this.s&this.DM));\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r.data[i+n] = this.data[i];\n for(i = n-1; i >= 0; --i) r.data[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r.data[i-n] = this.data[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r.data[i+ds+1] = (this.data[i]>>cbs)|c;\n c = (this.data[i]&bm)<= 0; --i) r.data[i] = 0;\n r.data[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r.data[i-ds-1] |= (this.data[i]&bm)<>bs;\n }\n if(bs > 0) r.data[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n } else {\n c += this.s;\n while(i < a.t) {\n c -= a.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r.data[i++] = this.DV+c;\n else if(c > 0) r.data[i++] = c;\n r.t = i;\n r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r.data[i] = 0;\n for(i = 0; i < y.t; ++i) r.data[i+x.t] = x.am(0,y.data[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r.data[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x.data[i],r,2*i,0,1);\n if((r.data[i+x.t]+=x.am(i+1,2*x.data[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r.data[i+x.t] -= x.DV;\n r.data[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r.data[r.t-1] += x.am(i,x.data[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm.data[pm.t-1]);\t// normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y.data[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y.data[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r.data[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y);\t// \"negative\" y so we can replace sub with am later\n while(y.t < ys) y.data[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r.data[--i]==y0)?this.DM:Math.floor(r.data[i]*d1+(r.data[i-1]+e)*d2);\n if((r.data[i]+=y.am(0,qd,r,j,0,ys)) < qd) {\t// Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r.data[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r);\t// Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) { this.m = m; }\nfunction cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n}\nfunction cRevert(x) { return x; }\nfunction cReduce(x) { x.divRemTo(this.m,null,x); }\nfunction cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\nfunction cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\nClassic.prototype.convert = cConvert;\nClassic.prototype.revert = cRevert;\nClassic.prototype.reduce = cReduce;\nClassic.prototype.mulTo = cMulTo;\nClassic.prototype.sqrTo = cSqrTo;\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this.data[0];\n if((x&1) == 0) return 0;\n var y = x&3;\t\t// y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf;\t// y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff;\t// y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;\t// y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV;\t\t// y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while(x.t <= this.mt2)\t// pad x so am has enough room later\n x.data[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x.data[i]*mp mod DV\n var j = x.data[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x.data[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x.data[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x.data[j] >= x.DV) { x.data[j] -= x.DV; x.data[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (protected) true iff this is even\nfunction bnpIsEven() { return ((this.t>0)?(this.data[0]&1):this.s) == 0; }\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n}\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.isEven = bnpIsEven;\nBigInteger.prototype.exp = bnpExp;\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.modPowInt = bnModPowInt;\n\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n// jsbn2 lib\n\n//Copyright (c) 2005-2009 Tom Wu\n//All Rights Reserved.\n//See \"LICENSE\" for details (See jsbn.js for LICENSE).\n\n//Extended JavaScript BN functions, required for RSA private ops.\n\n//Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n\n//(public)\nfunction bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n//(public) return value as integer\nfunction bnIntValue() {\nif(this.s < 0) {\n if(this.t == 1) return this.data[0]-this.DV;\n else if(this.t == 0) return -1;\n} else if(this.t == 1) return this.data[0];\nelse if(this.t == 0) return 0;\n// assumes 16 < DB < 32\nreturn ((this.data[1]&((1<<(32-this.DB))-1))<>24; }\n\n//(public) return value as short (assumes DB>=16)\nfunction bnShortValue() { return (this.t==0)?this.s:(this.data[0]<<16)>>16; }\n\n//(protected) return x s.t. r^x < DV\nfunction bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n//(public) 0 if this == 0, 1 if this > 0\nfunction bnSigNum() {\nif(this.s < 0) return -1;\nelse if(this.t <= 0 || (this.t == 1 && this.data[0] <= 0)) return 0;\nelse return 1;\n}\n\n//(protected) convert to radix string\nfunction bnpToRadix(b) {\nif(b == null) b = 10;\nif(this.signum() == 0 || b < 2 || b > 36) return \"0\";\nvar cs = this.chunkSize(b);\nvar a = Math.pow(b,cs);\nvar d = nbv(a), y = nbi(), z = nbi(), r = \"\";\nthis.divRemTo(d,y,z);\nwhile(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n}\nreturn z.intValue().toString(b) + r;\n}\n\n//(protected) convert from radix string\nfunction bnpFromRadix(s,b) {\nthis.fromInt(0);\nif(b == null) b = 10;\nvar cs = this.chunkSize(b);\nvar d = Math.pow(b,cs), mi = false, j = 0, w = 0;\nfor(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n}\nif(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n}\nif(mi) BigInteger.ZERO.subTo(this,this);\n}\n\n//(protected) alternate constructor\nfunction bnpFromNumber(a,b,c) {\nif(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1)) // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n} else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1< 0) {\n if(p < this.DB && (d = this.data[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this.data[i]&((1<>(p+=this.DB-8);\n } else {\n d = (this.data[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n}\nreturn r;\n}\n\nfunction bnEquals(a) { return(this.compareTo(a)==0); }\nfunction bnMin(a) { return(this.compareTo(a)<0)?this:a; }\nfunction bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n//(protected) r = this op a (bitwise)\nfunction bnpBitwiseTo(a,op,r) {\nvar i, f, m = Math.min(a.t,this.t);\nfor(i = 0; i < m; ++i) r.data[i] = op(this.data[i],a.data[i]);\nif(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r.data[i] = op(this.data[i],f);\n r.t = this.t;\n} else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r.data[i] = op(f,a.data[i]);\n r.t = a.t;\n}\nr.s = op(this.s,a.s);\nr.clamp();\n}\n\n//(public) this & a\nfunction op_and(x,y) { return x&y; }\nfunction bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n//(public) this | a\nfunction op_or(x,y) { return x|y; }\nfunction bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n//(public) this ^ a\nfunction op_xor(x,y) { return x^y; }\nfunction bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n//(public) this & ~a\nfunction op_andnot(x,y) { return x&~y; }\nfunction bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n//(public) ~this\nfunction bnNot() {\nvar r = nbi();\nfor(var i = 0; i < this.t; ++i) r.data[i] = this.DM&~this.data[i];\nr.t = this.t;\nr.s = ~this.s;\nreturn r;\n}\n\n//(public) this << n\nfunction bnShiftLeft(n) {\nvar r = nbi();\nif(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\nreturn r;\n}\n\n//(public) this >> n\nfunction bnShiftRight(n) {\nvar r = nbi();\nif(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\nreturn r;\n}\n\n//return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\nif(x == 0) return -1;\nvar r = 0;\nif((x&0xffff) == 0) { x >>= 16; r += 16; }\nif((x&0xff) == 0) { x >>= 8; r += 8; }\nif((x&0xf) == 0) { x >>= 4; r += 4; }\nif((x&3) == 0) { x >>= 2; r += 2; }\nif((x&1) == 0) ++r;\nreturn r;\n}\n\n//(public) returns index of lowest 1-bit (or -1 if none)\nfunction bnGetLowestSetBit() {\nfor(var i = 0; i < this.t; ++i)\n if(this.data[i] != 0) return i*this.DB+lbit(this.data[i]);\nif(this.s < 0) return this.t*this.DB;\nreturn -1;\n}\n\n//return number of 1 bits in x\nfunction cbit(x) {\nvar r = 0;\nwhile(x != 0) { x &= x-1; ++r; }\nreturn r;\n}\n\n//(public) return number of set bits\nfunction bnBitCount() {\nvar r = 0, x = this.s&this.DM;\nfor(var i = 0; i < this.t; ++i) r += cbit(this.data[i]^x);\nreturn r;\n}\n\n//(public) true iff nth bit is set\nfunction bnTestBit(n) {\nvar j = Math.floor(n/this.DB);\nif(j >= this.t) return(this.s!=0);\nreturn((this.data[j]&(1<<(n%this.DB)))!=0);\n}\n\n//(protected) this op (1<>= this.DB;\n}\nif(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n} else {\n c += this.s;\n while(i < a.t) {\n c += a.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n}\nr.s = (c<0)?-1:0;\nif(c > 0) r.data[i++] = c;\nelse if(c < -1) r.data[i++] = this.DV+c;\nr.t = i;\nr.clamp();\n}\n\n//(public) this + a\nfunction bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n//(public) this - a\nfunction bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n//(public) this * a\nfunction bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n//(public) this / a\nfunction bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n//(public) this % a\nfunction bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n//(public) [this/a,this%a]\nfunction bnDivideAndRemainder(a) {\nvar q = nbi(), r = nbi();\nthis.divRemTo(a,q,r);\nreturn new Array(q,r);\n}\n\n//(protected) this *= n, this >= 0, 1 < n < DV\nfunction bnpDMultiply(n) {\nthis.data[this.t] = this.am(0,n-1,this,0,0,this.t);\n++this.t;\nthis.clamp();\n}\n\n//(protected) this += n << w words, this >= 0\nfunction bnpDAddOffset(n,w) {\nif(n == 0) return;\nwhile(this.t <= w) this.data[this.t++] = 0;\nthis.data[w] += n;\nwhile(this.data[w] >= this.DV) {\n this.data[w] -= this.DV;\n if(++w >= this.t) this.data[this.t++] = 0;\n ++this.data[w];\n}\n}\n\n//A \"null\" reducer\nfunction NullExp() {}\nfunction nNop(x) { return x; }\nfunction nMulTo(x,y,r) { x.multiplyTo(y,r); }\nfunction nSqrTo(x,r) { x.squareTo(r); }\n\nNullExp.prototype.convert = nNop;\nNullExp.prototype.revert = nNop;\nNullExp.prototype.mulTo = nMulTo;\nNullExp.prototype.sqrTo = nSqrTo;\n\n//(public) this^e\nfunction bnPow(e) { return this.exp(e,new NullExp()); }\n\n//(protected) r = lower n words of \"this * a\", a.t <= n\n//\"this\" should be the larger one if appropriate.\nfunction bnpMultiplyLowerTo(a,n,r) {\nvar i = Math.min(this.t+a.t,n);\nr.s = 0; // assumes a,this >= 0\nr.t = i;\nwhile(i > 0) r.data[--i] = 0;\nvar j;\nfor(j = r.t-this.t; i < j; ++i) r.data[i+this.t] = this.am(0,a.data[i],r,i,0,this.t);\nfor(j = Math.min(a.t,n); i < j; ++i) this.am(0,a.data[i],r,i,0,n-i);\nr.clamp();\n}\n\n//(protected) r = \"this * a\" without lower n words, n > 0\n//\"this\" should be the larger one if appropriate.\nfunction bnpMultiplyUpperTo(a,n,r) {\n--n;\nvar i = r.t = this.t+a.t-n;\nr.s = 0; // assumes a,this >= 0\nwhile(--i >= 0) r.data[i] = 0;\nfor(i = Math.max(n-this.t,0); i < a.t; ++i)\n r.data[this.t+i-n] = this.am(n-i,a.data[i],r,0,0,this.t+i-n);\nr.clamp();\nr.drShiftTo(1,r);\n}\n\n//Barrett modular reduction\nfunction Barrett(m) {\n// setup Barrett\nthis.r2 = nbi();\nthis.q3 = nbi();\nBigInteger.ONE.dlShiftTo(2*m.t,this.r2);\nthis.mu = this.r2.divide(m);\nthis.m = m;\n}\n\nfunction barrettConvert(x) {\nif(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\nelse if(x.compareTo(this.m) < 0) return x;\nelse { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n}\n\nfunction barrettRevert(x) { return x; }\n\n//x = x mod m (HAC 14.42)\nfunction barrettReduce(x) {\nx.drShiftTo(this.m.t-1,this.r2);\nif(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\nthis.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\nthis.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\nwhile(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\nx.subTo(this.r2,x);\nwhile(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n//r = x^2 mod m; x != r\nfunction barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n//r = x*y mod m; x,y != r\nfunction barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nBarrett.prototype.convert = barrettConvert;\nBarrett.prototype.revert = barrettRevert;\nBarrett.prototype.reduce = barrettReduce;\nBarrett.prototype.mulTo = barrettMulTo;\nBarrett.prototype.sqrTo = barrettSqrTo;\n\n//(public) this^e % m (HAC 14.85)\nfunction bnModPow(e,m) {\nvar i = e.bitLength(), k, r = nbv(1), z;\nif(i <= 0) return r;\nelse if(i < 18) k = 1;\nelse if(i < 48) k = 3;\nelse if(i < 144) k = 4;\nelse if(i < 768) k = 5;\nelse k = 6;\nif(i < 8)\n z = new Classic(m);\nelse if(m.isEven())\n z = new Barrett(m);\nelse\n z = new Montgomery(m);\n\n// precomputation\nvar g = new Array(), n = 3, k1 = k-1, km = (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n}\n\nvar j = e.t-1, w, is1 = true, r2 = nbi(), t;\ni = nbits(e.data[j])-1;\nwhile(j >= 0) {\n if(i >= k1) w = (e.data[j]>>(i-k1))&km;\n else {\n w = (e.data[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e.data[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n } else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e.data[j]&(1< 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n}\nwhile(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n } else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n}\nif(g > 0) y.lShiftTo(g,y);\nreturn y;\n}\n\n//(protected) this % n, n < 2^26\nfunction bnpModInt(n) {\nif(n <= 0) return 0;\nvar d = this.DV%n, r = (this.s<0)?n-1:0;\nif(this.t > 0)\n if(d == 0) r = this.data[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this.data[i])%n;\nreturn r;\n}\n\n//(public) 1/this % m (HAC 14.61)\nfunction bnModInverse(m) {\nvar ac = m.isEven();\nif((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\nvar u = m.clone(), v = this.clone();\nvar a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\nwhile(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n } else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n } else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n } else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n}\nif(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\nif(d.compareTo(m) >= 0) return d.subtract(m);\nif(d.signum() < 0) d.addTo(m,d); else return d;\nif(d.signum() < 0) return d.add(m); else return d;\n}\n\nvar lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509];\nvar lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n//(public) test primality with certainty >= 1-.5^t\nfunction bnIsProbablePrime(t) {\nvar i, x = this.abs();\nif(x.t == 1 && x.data[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x.data[0] == lowprimes[i]) return true;\n return false;\n}\nif(x.isEven()) return false;\ni = 1;\nwhile(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n}\nreturn x.millerRabin(t);\n}\n\n//(protected) true if probably prime (HAC 4.24, Miller-Rabin)\nfunction bnpMillerRabin(t) {\nvar n1 = this.subtract(BigInteger.ONE);\nvar k = n1.getLowestSetBit();\nif(k <= 0) return false;\nvar r = n1.shiftRight(k);\nvar prng = bnGetPrng();\nvar a;\nfor(var i = 0; i < t; ++i) {\n // select witness 'a' at random from between 1 and n1\n do {\n a = new BigInteger(this.bitLength(), prng);\n }\n while(a.compareTo(BigInteger.ONE) <= 0 || a.compareTo(n1) >= 0);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n}\nreturn true;\n}\n\n// get pseudo random number generator\nfunction bnGetPrng() {\n // create prng with api that matches BigInteger secure random\n return {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n for(var i = 0; i < x.length; ++i) {\n x[i] = Math.floor(Math.random() * 0x0100);\n }\n }\n };\n}\n\n//protected\nBigInteger.prototype.chunkSize = bnpChunkSize;\nBigInteger.prototype.toRadix = bnpToRadix;\nBigInteger.prototype.fromRadix = bnpFromRadix;\nBigInteger.prototype.fromNumber = bnpFromNumber;\nBigInteger.prototype.bitwiseTo = bnpBitwiseTo;\nBigInteger.prototype.changeBit = bnpChangeBit;\nBigInteger.prototype.addTo = bnpAddTo;\nBigInteger.prototype.dMultiply = bnpDMultiply;\nBigInteger.prototype.dAddOffset = bnpDAddOffset;\nBigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\nBigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\nBigInteger.prototype.modInt = bnpModInt;\nBigInteger.prototype.millerRabin = bnpMillerRabin;\n\n//public\nBigInteger.prototype.clone = bnClone;\nBigInteger.prototype.intValue = bnIntValue;\nBigInteger.prototype.byteValue = bnByteValue;\nBigInteger.prototype.shortValue = bnShortValue;\nBigInteger.prototype.signum = bnSigNum;\nBigInteger.prototype.toByteArray = bnToByteArray;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.min = bnMin;\nBigInteger.prototype.max = bnMax;\nBigInteger.prototype.and = bnAnd;\nBigInteger.prototype.or = bnOr;\nBigInteger.prototype.xor = bnXor;\nBigInteger.prototype.andNot = bnAndNot;\nBigInteger.prototype.not = bnNot;\nBigInteger.prototype.shiftLeft = bnShiftLeft;\nBigInteger.prototype.shiftRight = bnShiftRight;\nBigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\nBigInteger.prototype.bitCount = bnBitCount;\nBigInteger.prototype.testBit = bnTestBit;\nBigInteger.prototype.setBit = bnSetBit;\nBigInteger.prototype.clearBit = bnClearBit;\nBigInteger.prototype.flipBit = bnFlipBit;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.remainder = bnRemainder;\nBigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\nBigInteger.prototype.modPow = bnModPow;\nBigInteger.prototype.modInverse = bnModInverse;\nBigInteger.prototype.pow = bnPow;\nBigInteger.prototype.gcd = bnGCD;\nBigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n//BigInteger interfaces not implemented in jsbn:\n\n//BigInteger(int signum, byte[] magnitude)\n//double doubleValue()\n//float floatValue()\n//int hashCode()\n//long longValue()\n//static BigInteger valueOf(long val)\n","/**\n * Secure Hash Algorithm with 160-bit digest (SHA-1) implementation.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha1 = module.exports = forge.sha1 = forge.sha1 || {};\nforge.md.sha1 = forge.md.algorithms.sha1 = sha1;\n\n/**\n * Creates a SHA-1 message digest object.\n *\n * @return a message digest object.\n */\nsha1.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // SHA-1 state contains five 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(80);\n\n // message digest object\n var md = {\n algorithm: 'sha1',\n blockLength: 64,\n digestLength: 20,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x67452301,\n h1: 0xEFCDAB89,\n h2: 0x98BADCFE,\n h3: 0x10325476,\n h4: 0xC3D2E1F0\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-1 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var s2 = {\n h0: _state.h0,\n h1: _state.h1,\n h2: _state.h2,\n h3: _state.h3,\n h4: _state.h4\n };\n _update(s2, _w, finalBlock);\n var rval = forge.util.createBuffer();\n rval.putInt32(s2.h0);\n rval.putInt32(s2.h1);\n rval.putInt32(s2.h2);\n rval.putInt32(s2.h3);\n rval.putInt32(s2.h4);\n return rval;\n };\n\n return md;\n};\n\n// sha-1 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 64);\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-1 state with the given byte buffer.\n *\n * @param s the SHA-1 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (64 byte) chunks\n var t, a, b, c, d, e, f, i;\n var len = bytes.length();\n while(len >= 64) {\n // the w array will be populated with sixteen 32-bit big-endian words\n // and then extended into 80 32-bit words according to SHA-1 algorithm\n // and for 32-79 using Max Locktyukhin's optimization\n\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n e = s.h4;\n\n // round 1\n for(i = 0; i < 16; ++i) {\n t = bytes.getInt32();\n w[i] = t;\n f = d ^ (b & (c ^ d));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x5A827999 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n for(; i < 20; ++i) {\n t = (w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n t = (t << 1) | (t >>> 31);\n w[i] = t;\n f = d ^ (b & (c ^ d));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x5A827999 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 2\n for(; i < 32; ++i) {\n t = (w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n t = (t << 1) | (t >>> 31);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0x6ED9EBA1 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n for(; i < 40; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0x6ED9EBA1 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 3\n for(; i < 60; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = (b & c) | (d & (b ^ c));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x8F1BBCDC + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 4\n for(; i < 80; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0xCA62C1D6 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n s.h4 = (s.h4 + e) | 0;\n\n len -= 64;\n }\n}\n","/**\n * Partial implementation of PKCS#1 v2.2: RSA-OEAP\n *\n * Modified but based on the following MIT and BSD licensed code:\n *\n * https://github.com/kjur/jsjws/blob/master/rsa.js:\n *\n * The 'jsjws'(JSON Web Signature JavaScript Library) License\n *\n * Copyright (c) 2012 Kenji Urushima\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * http://webrsa.cvs.sourceforge.net/viewvc/webrsa/Client/RSAES-OAEP.js?content-type=text%2Fplain:\n *\n * RSAES-OAEP.js\n * $Id: RSAES-OAEP.js,v 1.1.1.1 2003/03/19 15:37:20 ellispritchard Exp $\n * JavaScript Implementation of PKCS #1 v2.1 RSA CRYPTOGRAPHY STANDARD (RSA Laboratories, June 14, 2002)\n * Copyright (C) Ellis Pritchard, Guardian Unlimited 2003.\n * Contact: ellis@nukinetics.com\n * Distributed under the BSD License.\n *\n * Official documentation: http://www.rsa.com/rsalabs/node.asp?id=2125\n *\n * @author Evan Jones (http://evanjones.ca/)\n * @author Dave Longley\n *\n * Copyright (c) 2013-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./random');\nrequire('./sha1');\n\n// shortcut for PKCS#1 API\nvar pkcs1 = module.exports = forge.pkcs1 = forge.pkcs1 || {};\n\n/**\n * Encode the given RSAES-OAEP message (M) using key, with optional label (L)\n * and seed.\n *\n * This method does not perform RSA encryption, it only encodes the message\n * using RSAES-OAEP.\n *\n * @param key the RSA key to use.\n * @param message the message to encode.\n * @param options the options to use:\n * label an optional label to use.\n * seed the seed to use.\n * md the message digest object to use, undefined for SHA-1.\n * mgf1 optional mgf1 parameters:\n * md the message digest object to use for MGF1.\n *\n * @return the encoded message bytes.\n */\npkcs1.encode_rsa_oaep = function(key, message, options) {\n // parse arguments\n var label;\n var seed;\n var md;\n var mgf1Md;\n // legacy args (label, seed, md)\n if(typeof options === 'string') {\n label = options;\n seed = arguments[3] || undefined;\n md = arguments[4] || undefined;\n } else if(options) {\n label = options.label || undefined;\n seed = options.seed || undefined;\n md = options.md || undefined;\n if(options.mgf1 && options.mgf1.md) {\n mgf1Md = options.mgf1.md;\n }\n }\n\n // default OAEP to SHA-1 message digest\n if(!md) {\n md = forge.md.sha1.create();\n } else {\n md.start();\n }\n\n // default MGF-1 to same as OAEP\n if(!mgf1Md) {\n mgf1Md = md;\n }\n\n // compute length in bytes and check output\n var keyLength = Math.ceil(key.n.bitLength() / 8);\n var maxLength = keyLength - 2 * md.digestLength - 2;\n if(message.length > maxLength) {\n var error = new Error('RSAES-OAEP input message length is too long.');\n error.length = message.length;\n error.maxLength = maxLength;\n throw error;\n }\n\n if(!label) {\n label = '';\n }\n md.update(label, 'raw');\n var lHash = md.digest();\n\n var PS = '';\n var PS_length = maxLength - message.length;\n for(var i = 0; i < PS_length; i++) {\n PS += '\\x00';\n }\n\n var DB = lHash.getBytes() + PS + '\\x01' + message;\n\n if(!seed) {\n seed = forge.random.getBytes(md.digestLength);\n } else if(seed.length !== md.digestLength) {\n var error = new Error('Invalid RSAES-OAEP seed. The seed length must ' +\n 'match the digest length.');\n error.seedLength = seed.length;\n error.digestLength = md.digestLength;\n throw error;\n }\n\n var dbMask = rsa_mgf1(seed, keyLength - md.digestLength - 1, mgf1Md);\n var maskedDB = forge.util.xorBytes(DB, dbMask, DB.length);\n\n var seedMask = rsa_mgf1(maskedDB, md.digestLength, mgf1Md);\n var maskedSeed = forge.util.xorBytes(seed, seedMask, seed.length);\n\n // return encoded message\n return '\\x00' + maskedSeed + maskedDB;\n};\n\n/**\n * Decode the given RSAES-OAEP encoded message (EM) using key, with optional\n * label (L).\n *\n * This method does not perform RSA decryption, it only decodes the message\n * using RSAES-OAEP.\n *\n * @param key the RSA key to use.\n * @param em the encoded message to decode.\n * @param options the options to use:\n * label an optional label to use.\n * md the message digest object to use for OAEP, undefined for SHA-1.\n * mgf1 optional mgf1 parameters:\n * md the message digest object to use for MGF1.\n *\n * @return the decoded message bytes.\n */\npkcs1.decode_rsa_oaep = function(key, em, options) {\n // parse args\n var label;\n var md;\n var mgf1Md;\n // legacy args\n if(typeof options === 'string') {\n label = options;\n md = arguments[3] || undefined;\n } else if(options) {\n label = options.label || undefined;\n md = options.md || undefined;\n if(options.mgf1 && options.mgf1.md) {\n mgf1Md = options.mgf1.md;\n }\n }\n\n // compute length in bytes\n var keyLength = Math.ceil(key.n.bitLength() / 8);\n\n if(em.length !== keyLength) {\n var error = new Error('RSAES-OAEP encoded message length is invalid.');\n error.length = em.length;\n error.expectedLength = keyLength;\n throw error;\n }\n\n // default OAEP to SHA-1 message digest\n if(md === undefined) {\n md = forge.md.sha1.create();\n } else {\n md.start();\n }\n\n // default MGF-1 to same as OAEP\n if(!mgf1Md) {\n mgf1Md = md;\n }\n\n if(keyLength < 2 * md.digestLength + 2) {\n throw new Error('RSAES-OAEP key is too short for the hash function.');\n }\n\n if(!label) {\n label = '';\n }\n md.update(label, 'raw');\n var lHash = md.digest().getBytes();\n\n // split the message into its parts\n var y = em.charAt(0);\n var maskedSeed = em.substring(1, md.digestLength + 1);\n var maskedDB = em.substring(1 + md.digestLength);\n\n var seedMask = rsa_mgf1(maskedDB, md.digestLength, mgf1Md);\n var seed = forge.util.xorBytes(maskedSeed, seedMask, maskedSeed.length);\n\n var dbMask = rsa_mgf1(seed, keyLength - md.digestLength - 1, mgf1Md);\n var db = forge.util.xorBytes(maskedDB, dbMask, maskedDB.length);\n\n var lHashPrime = db.substring(0, md.digestLength);\n\n // constant time check that all values match what is expected\n var error = (y !== '\\x00');\n\n // constant time check lHash vs lHashPrime\n for(var i = 0; i < md.digestLength; ++i) {\n error |= (lHash.charAt(i) !== lHashPrime.charAt(i));\n }\n\n // \"constant time\" find the 0x1 byte separating the padding (zeros) from the\n // message\n // TODO: It must be possible to do this in a better/smarter way?\n var in_ps = 1;\n var index = md.digestLength;\n for(var j = md.digestLength; j < db.length; j++) {\n var code = db.charCodeAt(j);\n\n var is_0 = (code & 0x1) ^ 0x1;\n\n // non-zero if not 0 or 1 in the ps section\n var error_mask = in_ps ? 0xfffe : 0x0000;\n error |= (code & error_mask);\n\n // latch in_ps to zero after we find 0x1\n in_ps = in_ps & is_0;\n index += in_ps;\n }\n\n if(error || db.charCodeAt(index) !== 0x1) {\n throw new Error('Invalid RSAES-OAEP padding.');\n }\n\n return db.substring(index + 1);\n};\n\nfunction rsa_mgf1(seed, maskLength, hash) {\n // default to SHA-1 message digest\n if(!hash) {\n hash = forge.md.sha1.create();\n }\n var t = '';\n var count = Math.ceil(maskLength / hash.digestLength);\n for(var i = 0; i < count; ++i) {\n var c = String.fromCharCode(\n (i >> 24) & 0xFF, (i >> 16) & 0xFF, (i >> 8) & 0xFF, i & 0xFF);\n hash.start();\n hash.update(seed + c);\n t += hash.digest().getBytes();\n }\n return t.substring(0, maskLength);\n}\n","/**\n * Prime number generation API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./jsbn');\nrequire('./random');\n\n(function() {\n\n// forge.prime already defined\nif(forge.prime) {\n module.exports = forge.prime;\n return;\n}\n\n/* PRIME API */\nvar prime = module.exports = forge.prime = forge.prime || {};\n\nvar BigInteger = forge.jsbn.BigInteger;\n\n// primes are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29\nvar GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];\nvar THIRTY = new BigInteger(null);\nTHIRTY.fromInt(30);\nvar op_or = function(x, y) {return x|y;};\n\n/**\n * Generates a random probable prime with the given number of bits.\n *\n * Alternative algorithms can be specified by name as a string or as an\n * object with custom options like so:\n *\n * {\n * name: 'PRIMEINC',\n * options: {\n * maxBlockTime: ,\n * millerRabinTests: ,\n * workerScript: ,\n * workers: .\n * workLoad: the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * }\n * }\n *\n * @param bits the number of bits for the prime number.\n * @param options the options to use.\n * [algorithm] the algorithm to use (default: 'PRIMEINC').\n * [prng] a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n *\n * @return callback(err, num) called once the operation completes.\n */\nprime.generateProbablePrime = function(bits, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // default to PRIMEINC algorithm\n var algorithm = options.algorithm || 'PRIMEINC';\n if(typeof algorithm === 'string') {\n algorithm = {name: algorithm};\n }\n algorithm.options = algorithm.options || {};\n\n // create prng with api that matches BigInteger secure random\n var prng = options.prng || forge.random;\n var rng = {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n var b = prng.getBytesSync(x.length);\n for(var i = 0; i < x.length; ++i) {\n x[i] = b.charCodeAt(i);\n }\n }\n };\n\n if(algorithm.name === 'PRIMEINC') {\n return primeincFindPrime(bits, rng, algorithm.options, callback);\n }\n\n throw new Error('Invalid prime generation algorithm: ' + algorithm.name);\n};\n\nfunction primeincFindPrime(bits, rng, options, callback) {\n if('workers' in options) {\n return primeincFindPrimeWithWorkers(bits, rng, options, callback);\n }\n return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);\n}\n\nfunction primeincFindPrimeWithoutWorkers(bits, rng, options, callback) {\n // initialize random number\n var num = generateRandom(bits, rng);\n\n /* Note: All primes are of the form 30k+i for i < 30 and gcd(30, i)=1. The\n number we are given is always aligned at 30k + 1. Each time the number is\n determined not to be prime we add to get to the next 'i', eg: if the number\n was at 30k + 1 we add 6. */\n var deltaIdx = 0;\n\n // get required number of MR tests\n var mrTests = getMillerRabinTests(num.bitLength());\n if('millerRabinTests' in options) {\n mrTests = options.millerRabinTests;\n }\n\n // find prime nearest to 'num' for maxBlockTime ms\n // 10 ms gives 5ms of leeway for other calculations before dropping\n // below 60fps (1000/60 == 16.67), but in reality, the number will\n // likely be higher due to an 'atomic' big int modPow\n var maxBlockTime = 10;\n if('maxBlockTime' in options) {\n maxBlockTime = options.maxBlockTime;\n }\n\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n}\n\nfunction _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback) {\n var start = +new Date();\n do {\n // overflow, regenerate random number\n if(num.bitLength() > bits) {\n num = generateRandom(bits, rng);\n }\n // do primality test\n if(num.isProbablePrime(mrTests)) {\n return callback(null, num);\n }\n // get next potential prime\n num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);\n } while(maxBlockTime < 0 || (+new Date() - start < maxBlockTime));\n\n // keep trying later\n forge.util.setImmediate(function() {\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n });\n}\n\n// NOTE: This algorithm is indeterminate in nature because workers\n// run in parallel looking at different segments of numbers. Even if this\n// algorithm is run twice with the same input from a predictable RNG, it\n// may produce different outputs.\nfunction primeincFindPrimeWithWorkers(bits, rng, options, callback) {\n // web workers unavailable\n if(typeof Worker === 'undefined') {\n return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);\n }\n\n // initialize random number\n var num = generateRandom(bits, rng);\n\n // use web workers to generate keys\n var numWorkers = options.workers;\n var workLoad = options.workLoad || 100;\n var range = workLoad * 30 / 8;\n var workerScript = options.workerScript || 'forge/prime.worker.js';\n if(numWorkers === -1) {\n return forge.util.estimateCores(function(err, cores) {\n if(err) {\n // default to 2\n cores = 2;\n }\n numWorkers = cores - 1;\n generate();\n });\n }\n generate();\n\n function generate() {\n // require at least 1 worker\n numWorkers = Math.max(1, numWorkers);\n\n // TODO: consider optimizing by starting workers outside getPrime() ...\n // note that in order to clean up they will have to be made internally\n // asynchronous which may actually be slower\n\n // start workers immediately\n var workers = [];\n for(var i = 0; i < numWorkers; ++i) {\n // FIXME: fix path or use blob URLs\n workers[i] = new Worker(workerScript);\n }\n var running = numWorkers;\n\n // listen for requests from workers and assign ranges to find prime\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].addEventListener('message', workerMessage);\n }\n\n /* Note: The distribution of random numbers is unknown. Therefore, each\n web worker is continuously allocated a range of numbers to check for a\n random number until one is found.\n\n Every 30 numbers will be checked just 8 times, because prime numbers\n have the form:\n\n 30k+i, for i < 30 and gcd(30, i)=1 (there are 8 values of i for this)\n\n Therefore, if we want a web worker to run N checks before asking for\n a new range of numbers, each range must contain N*30/8 numbers.\n\n For 100 checks (workLoad), this is a range of 375. */\n\n var found = false;\n function workerMessage(e) {\n // ignore message, prime already found\n if(found) {\n return;\n }\n\n --running;\n var data = e.data;\n if(data.found) {\n // terminate all workers\n for(var i = 0; i < workers.length; ++i) {\n workers[i].terminate();\n }\n found = true;\n return callback(null, new BigInteger(data.prime, 16));\n }\n\n // overflow, regenerate random number\n if(num.bitLength() > bits) {\n num = generateRandom(bits, rng);\n }\n\n // assign new range to check\n var hex = num.toString(16);\n\n // start prime search\n e.target.postMessage({\n hex: hex,\n workLoad: workLoad\n });\n\n num.dAddOffset(range, 0);\n }\n }\n}\n\n/**\n * Generates a random number using the given number of bits and RNG.\n *\n * @param bits the number of bits for the number.\n * @param rng the random number generator to use.\n *\n * @return the random number.\n */\nfunction generateRandom(bits, rng) {\n var num = new BigInteger(bits, rng);\n // force MSB set\n var bits1 = bits - 1;\n if(!num.testBit(bits1)) {\n num.bitwiseTo(BigInteger.ONE.shiftLeft(bits1), op_or, num);\n }\n // align number on 30k+1 boundary\n num.dAddOffset(31 - num.mod(THIRTY).byteValue(), 0);\n return num;\n}\n\n/**\n * Returns the required number of Miller-Rabin tests to generate a\n * prime with an error probability of (1/2)^80.\n *\n * See Handbook of Applied Cryptography Chapter 4, Table 4.4.\n *\n * @param bits the bit size.\n *\n * @return the required number of iterations.\n */\nfunction getMillerRabinTests(bits) {\n if(bits <= 100) return 27;\n if(bits <= 150) return 18;\n if(bits <= 200) return 15;\n if(bits <= 250) return 12;\n if(bits <= 300) return 9;\n if(bits <= 350) return 8;\n if(bits <= 400) return 7;\n if(bits <= 500) return 6;\n if(bits <= 600) return 5;\n if(bits <= 800) return 4;\n if(bits <= 1250) return 3;\n return 2;\n}\n\n})();\n","/**\n * Javascript implementation of basic RSA algorithms.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n *\n * The only algorithm currently supported for PKI is RSA.\n *\n * An RSA key is often stored in ASN.1 DER format. The SubjectPublicKeyInfo\n * ASN.1 structure is composed of an algorithm of type AlgorithmIdentifier\n * and a subjectPublicKey of type bit string.\n *\n * The AlgorithmIdentifier contains an Object Identifier (OID) and parameters\n * for the algorithm, if any. In the case of RSA, there aren't any.\n *\n * SubjectPublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * subjectPublicKey BIT STRING\n * }\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * For an RSA public key, the subjectPublicKey is:\n *\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n *\n * PrivateKeyInfo ::= SEQUENCE {\n * version Version,\n * privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,\n * privateKey PrivateKey,\n * attributes [0] IMPLICIT Attributes OPTIONAL\n * }\n *\n * Version ::= INTEGER\n * PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier\n * PrivateKey ::= OCTET STRING\n * Attributes ::= SET OF Attribute\n *\n * An RSA private key as the following structure:\n *\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p-1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER -- (inverse of q) mod p\n * }\n *\n * Version ::= INTEGER\n *\n * The OID for the RSA key algorithm is: 1.2.840.113549.1.1.1\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./jsbn');\nrequire('./oids');\nrequire('./pkcs1');\nrequire('./prime');\nrequire('./random');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\nvar _crypto = forge.util.isNodejs ? require('crypto') : null;\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n// shortcut for util API\nvar util = forge.util;\n\n/*\n * RSA encryption and decryption, see RFC 2313.\n */\nforge.pki = forge.pki || {};\nmodule.exports = forge.pki.rsa = forge.rsa = forge.rsa || {};\nvar pki = forge.pki;\n\n// for finding primes, which are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29\nvar GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];\n\n// validator for a PrivateKeyInfo structure\nvar privateKeyValidator = {\n // PrivateKeyInfo\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'PrivateKeyInfo.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // privateKeyAlgorithm\n name: 'PrivateKeyInfo.privateKeyAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'privateKeyOid'\n }]\n }, {\n // PrivateKey\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'privateKey'\n }]\n};\n\n// validator for an RSA private key\nvar rsaPrivateKeyValidator = {\n // RSAPrivateKey\n name: 'RSAPrivateKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'RSAPrivateKey.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // modulus (n)\n name: 'RSAPrivateKey.modulus',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyModulus'\n }, {\n // publicExponent (e)\n name: 'RSAPrivateKey.publicExponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPublicExponent'\n }, {\n // privateExponent (d)\n name: 'RSAPrivateKey.privateExponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrivateExponent'\n }, {\n // prime1 (p)\n name: 'RSAPrivateKey.prime1',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrime1'\n }, {\n // prime2 (q)\n name: 'RSAPrivateKey.prime2',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrime2'\n }, {\n // exponent1 (d mod (p-1))\n name: 'RSAPrivateKey.exponent1',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyExponent1'\n }, {\n // exponent2 (d mod (q-1))\n name: 'RSAPrivateKey.exponent2',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyExponent2'\n }, {\n // coefficient ((inverse of q) mod p)\n name: 'RSAPrivateKey.coefficient',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyCoefficient'\n }]\n};\n\n// validator for an RSA public key\nvar rsaPublicKeyValidator = {\n // RSAPublicKey\n name: 'RSAPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // modulus (n)\n name: 'RSAPublicKey.modulus',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'publicKeyModulus'\n }, {\n // publicExponent (e)\n name: 'RSAPublicKey.exponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'publicKeyExponent'\n }]\n};\n\n// validator for an SubjectPublicKeyInfo structure\n// Note: Currently only works with an RSA public key\nvar publicKeyValidator = forge.pki.rsa.publicKeyValidator = {\n name: 'SubjectPublicKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'subjectPublicKeyInfo',\n value: [{\n name: 'SubjectPublicKeyInfo.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'publicKeyOid'\n }]\n }, {\n // subjectPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n value: [{\n // RSAPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey.RSAPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n captureAsn1: 'rsaPublicKey'\n }]\n }]\n};\n\n// validator for a DigestInfo structure\nvar digestInfoValidator = {\n name: 'DigestInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'DigestInfo.DigestAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'DigestInfo.DigestAlgorithm.algorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'algorithmIdentifier'\n }, {\n // NULL paramters\n name: 'DigestInfo.DigestAlgorithm.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.NULL,\n // captured only to check existence for md2 and md5\n capture: 'parameters',\n optional: true,\n constructed: false\n }]\n }, {\n // digest\n name: 'DigestInfo.digest',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'digest'\n }]\n};\n\n/**\n * Wrap digest in DigestInfo object.\n *\n * This function implements EMSA-PKCS1-v1_5-ENCODE as per RFC 3447.\n *\n * DigestInfo ::= SEQUENCE {\n * digestAlgorithm DigestAlgorithmIdentifier,\n * digest Digest\n * }\n *\n * DigestAlgorithmIdentifier ::= AlgorithmIdentifier\n * Digest ::= OCTET STRING\n *\n * @param md the message digest object with the hash to sign.\n *\n * @return the encoded message (ready for RSA encrytion)\n */\nvar emsaPkcs1v15encode = function(md) {\n // get the oid for the algorithm\n var oid;\n if(md.algorithm in pki.oids) {\n oid = pki.oids[md.algorithm];\n } else {\n var error = new Error('Unknown message digest algorithm.');\n error.algorithm = md.algorithm;\n throw error;\n }\n var oidBytes = asn1.oidToDer(oid).getBytes();\n\n // create the digest info\n var digestInfo = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var digestAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n digestAlgorithm.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OID, false, oidBytes));\n digestAlgorithm.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.NULL, false, ''));\n var digest = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING,\n false, md.digest().getBytes());\n digestInfo.value.push(digestAlgorithm);\n digestInfo.value.push(digest);\n\n // encode digest info\n return asn1.toDer(digestInfo).getBytes();\n};\n\n/**\n * Performs x^c mod n (RSA encryption or decryption operation).\n *\n * @param x the number to raise and mod.\n * @param key the key to use.\n * @param pub true if the key is public, false if private.\n *\n * @return the result of x^c mod n.\n */\nvar _modPow = function(x, key, pub) {\n if(pub) {\n return x.modPow(key.e, key.n);\n }\n\n if(!key.p || !key.q) {\n // allow calculation without CRT params (slow)\n return x.modPow(key.d, key.n);\n }\n\n // pre-compute dP, dQ, and qInv if necessary\n if(!key.dP) {\n key.dP = key.d.mod(key.p.subtract(BigInteger.ONE));\n }\n if(!key.dQ) {\n key.dQ = key.d.mod(key.q.subtract(BigInteger.ONE));\n }\n if(!key.qInv) {\n key.qInv = key.q.modInverse(key.p);\n }\n\n /* Chinese remainder theorem (CRT) states:\n\n Suppose n1, n2, ..., nk are positive integers which are pairwise\n coprime (n1 and n2 have no common factors other than 1). For any\n integers x1, x2, ..., xk there exists an integer x solving the\n system of simultaneous congruences (where ~= means modularly\n congruent so a ~= b mod n means a mod n = b mod n):\n\n x ~= x1 mod n1\n x ~= x2 mod n2\n ...\n x ~= xk mod nk\n\n This system of congruences has a single simultaneous solution x\n between 0 and n - 1. Furthermore, each xk solution and x itself\n is congruent modulo the product n = n1*n2*...*nk.\n So x1 mod n = x2 mod n = xk mod n = x mod n.\n\n The single simultaneous solution x can be solved with the following\n equation:\n\n x = sum(xi*ri*si) mod n where ri = n/ni and si = ri^-1 mod ni.\n\n Where x is less than n, xi = x mod ni.\n\n For RSA we are only concerned with k = 2. The modulus n = pq, where\n p and q are coprime. The RSA decryption algorithm is:\n\n y = x^d mod n\n\n Given the above:\n\n x1 = x^d mod p\n r1 = n/p = q\n s1 = q^-1 mod p\n x2 = x^d mod q\n r2 = n/q = p\n s2 = p^-1 mod q\n\n So y = (x1r1s1 + x2r2s2) mod n\n = ((x^d mod p)q(q^-1 mod p) + (x^d mod q)p(p^-1 mod q)) mod n\n\n According to Fermat's Little Theorem, if the modulus P is prime,\n for any integer A not evenly divisible by P, A^(P-1) ~= 1 mod P.\n Since A is not divisible by P it follows that if:\n N ~= M mod (P - 1), then A^N mod P = A^M mod P. Therefore:\n\n A^N mod P = A^(M mod (P - 1)) mod P. (The latter takes less effort\n to calculate). In order to calculate x^d mod p more quickly the\n exponent d mod (p - 1) is stored in the RSA private key (the same\n is done for x^d mod q). These values are referred to as dP and dQ\n respectively. Therefore we now have:\n\n y = ((x^dP mod p)q(q^-1 mod p) + (x^dQ mod q)p(p^-1 mod q)) mod n\n\n Since we'll be reducing x^dP by modulo p (same for q) we can also\n reduce x by p (and q respectively) before hand. Therefore, let\n\n xp = ((x mod p)^dP mod p), and\n xq = ((x mod q)^dQ mod q), yielding:\n\n y = (xp*q*(q^-1 mod p) + xq*p*(p^-1 mod q)) mod n\n\n This can be further reduced to a simple algorithm that only\n requires 1 inverse (the q inverse is used) to be used and stored.\n The algorithm is called Garner's algorithm. If qInv is the\n inverse of q, we simply calculate:\n\n y = (qInv*(xp - xq) mod p) * q + xq\n\n However, there are two further complications. First, we need to\n ensure that xp > xq to prevent signed BigIntegers from being used\n so we add p until this is true (since we will be mod'ing with\n p anyway). Then, there is a known timing attack on algorithms\n using the CRT. To mitigate this risk, \"cryptographic blinding\"\n should be used. This requires simply generating a random number r\n between 0 and n-1 and its inverse and multiplying x by r^e before\n calculating y and then multiplying y by r^-1 afterwards. Note that\n r must be coprime with n (gcd(r, n) === 1) in order to have an\n inverse.\n */\n\n // cryptographic blinding\n var r;\n do {\n r = new BigInteger(\n forge.util.bytesToHex(forge.random.getBytes(key.n.bitLength() / 8)),\n 16);\n } while(r.compareTo(key.n) >= 0 || !r.gcd(key.n).equals(BigInteger.ONE));\n x = x.multiply(r.modPow(key.e, key.n)).mod(key.n);\n\n // calculate xp and xq\n var xp = x.mod(key.p).modPow(key.dP, key.p);\n var xq = x.mod(key.q).modPow(key.dQ, key.q);\n\n // xp must be larger than xq to avoid signed bit usage\n while(xp.compareTo(xq) < 0) {\n xp = xp.add(key.p);\n }\n\n // do last step\n var y = xp.subtract(xq)\n .multiply(key.qInv).mod(key.p)\n .multiply(key.q).add(xq);\n\n // remove effect of random for cryptographic blinding\n y = y.multiply(r.modInverse(key.n)).mod(key.n);\n\n return y;\n};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED, use 'sign' on a private key object or\n * 'encrypt' on a public key object instead.\n *\n * Performs RSA encryption.\n *\n * The parameter bt controls whether to put padding bytes before the\n * message passed in. Set bt to either true or false to disable padding\n * completely (in order to handle e.g. EMSA-PSS encoding seperately before),\n * signaling whether the encryption operation is a public key operation\n * (i.e. encrypting data) or not, i.e. private key operation (data signing).\n *\n * For PKCS#1 v1.5 padding pass in the block type to use, i.e. either 0x01\n * (for signing) or 0x02 (for encryption). The key operation mode (private\n * or public) is derived from this flag in that case).\n *\n * @param m the message to encrypt as a byte string.\n * @param key the RSA key to use.\n * @param bt for PKCS#1 v1.5 padding, the block type to use\n * (0x01 for private key, 0x02 for public),\n * to disable padding: true = public key, false = private key.\n *\n * @return the encrypted bytes as a string.\n */\npki.rsa.encrypt = function(m, key, bt) {\n var pub = bt;\n var eb;\n\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n if(bt !== false && bt !== true) {\n // legacy, default to PKCS#1 v1.5 padding\n pub = (bt === 0x02);\n eb = _encodePkcs1_v1_5(m, key, bt);\n } else {\n eb = forge.util.createBuffer();\n eb.putBytes(m);\n }\n\n // load encryption block as big integer 'x'\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var x = new BigInteger(eb.toHex(), 16);\n\n // do RSA encryption\n var y = _modPow(x, key, pub);\n\n // convert y into the encrypted data byte string, if y is shorter in\n // bytes than k, then prepend zero bytes to fill up ed\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var yhex = y.toString(16);\n var ed = forge.util.createBuffer();\n var zeros = k - Math.ceil(yhex.length / 2);\n while(zeros > 0) {\n ed.putByte(0x00);\n --zeros;\n }\n ed.putBytes(forge.util.hexToBytes(yhex));\n return ed.getBytes();\n};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED, use 'decrypt' on a private key object or\n * 'verify' on a public key object instead.\n *\n * Performs RSA decryption.\n *\n * The parameter ml controls whether to apply PKCS#1 v1.5 padding\n * or not. Set ml = false to disable padding removal completely\n * (in order to handle e.g. EMSA-PSS later on) and simply pass back\n * the RSA encryption block.\n *\n * @param ed the encrypted data to decrypt in as a byte string.\n * @param key the RSA key to use.\n * @param pub true for a public key operation, false for private.\n * @param ml the message length, if known, false to disable padding.\n *\n * @return the decrypted message as a byte string.\n */\npki.rsa.decrypt = function(ed, key, pub, ml) {\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n // error if the length of the encrypted data ED is not k\n if(ed.length !== k) {\n var error = new Error('Encrypted message length is invalid.');\n error.length = ed.length;\n error.expected = k;\n throw error;\n }\n\n // convert encrypted data into a big integer\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var y = new BigInteger(forge.util.createBuffer(ed).toHex(), 16);\n\n // y must be less than the modulus or it wasn't the result of\n // a previous mod operation (encryption) using that modulus\n if(y.compareTo(key.n) >= 0) {\n throw new Error('Encrypted message is invalid.');\n }\n\n // do RSA decryption\n var x = _modPow(y, key, pub);\n\n // create the encryption block, if x is shorter in bytes than k, then\n // prepend zero bytes to fill up eb\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var xhex = x.toString(16);\n var eb = forge.util.createBuffer();\n var zeros = k - Math.ceil(xhex.length / 2);\n while(zeros > 0) {\n eb.putByte(0x00);\n --zeros;\n }\n eb.putBytes(forge.util.hexToBytes(xhex));\n\n if(ml !== false) {\n // legacy, default to PKCS#1 v1.5 padding\n return _decodePkcs1_v1_5(eb.getBytes(), key, pub);\n }\n\n // return message\n return eb.getBytes();\n};\n\n/**\n * Creates an RSA key-pair generation state object. It is used to allow\n * key-generation to be performed in steps. It also allows for a UI to\n * display progress updates.\n *\n * @param bits the size for the private key in bits, defaults to 2048.\n * @param e the public exponent to use, defaults to 65537 (0x10001).\n * @param [options] the options to use.\n * prng a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n * algorithm the algorithm to use (default: 'PRIMEINC').\n *\n * @return the state object to use to generate the key-pair.\n */\npki.rsa.createKeyPairGenerationState = function(bits, e, options) {\n // TODO: migrate step-based prime generation code to forge.prime\n\n // set default bits\n if(typeof(bits) === 'string') {\n bits = parseInt(bits, 10);\n }\n bits = bits || 2048;\n\n // create prng with api that matches BigInteger secure random\n options = options || {};\n var prng = options.prng || forge.random;\n var rng = {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n var b = prng.getBytesSync(x.length);\n for(var i = 0; i < x.length; ++i) {\n x[i] = b.charCodeAt(i);\n }\n }\n };\n\n var algorithm = options.algorithm || 'PRIMEINC';\n\n // create PRIMEINC algorithm state\n var rval;\n if(algorithm === 'PRIMEINC') {\n rval = {\n algorithm: algorithm,\n state: 0,\n bits: bits,\n rng: rng,\n eInt: e || 65537,\n e: new BigInteger(null),\n p: null,\n q: null,\n qBits: bits >> 1,\n pBits: bits - (bits >> 1),\n pqState: 0,\n num: null,\n keys: null\n };\n rval.e.fromInt(rval.eInt);\n } else {\n throw new Error('Invalid key generation algorithm: ' + algorithm);\n }\n\n return rval;\n};\n\n/**\n * Attempts to runs the key-generation algorithm for at most n seconds\n * (approximately) using the given state. When key-generation has completed,\n * the keys will be stored in state.keys.\n *\n * To use this function to update a UI while generating a key or to prevent\n * causing browser lockups/warnings, set \"n\" to a value other than 0. A\n * simple pattern for generating a key and showing a progress indicator is:\n *\n * var state = pki.rsa.createKeyPairGenerationState(2048);\n * var step = function() {\n * // step key-generation, run algorithm for 100 ms, repeat\n * if(!forge.pki.rsa.stepKeyPairGenerationState(state, 100)) {\n * setTimeout(step, 1);\n * } else {\n * // key-generation complete\n * // TODO: turn off progress indicator here\n * // TODO: use the generated key-pair in \"state.keys\"\n * }\n * };\n * // TODO: turn on progress indicator here\n * setTimeout(step, 0);\n *\n * @param state the state to use.\n * @param n the maximum number of milliseconds to run the algorithm for, 0\n * to run the algorithm to completion.\n *\n * @return true if the key-generation completed, false if not.\n */\npki.rsa.stepKeyPairGenerationState = function(state, n) {\n // set default algorithm if not set\n if(!('algorithm' in state)) {\n state.algorithm = 'PRIMEINC';\n }\n\n // TODO: migrate step-based prime generation code to forge.prime\n // TODO: abstract as PRIMEINC algorithm\n\n // do key generation (based on Tom Wu's rsa.js, see jsbn.js license)\n // with some minor optimizations and designed to run in steps\n\n // local state vars\n var THIRTY = new BigInteger(null);\n THIRTY.fromInt(30);\n var deltaIdx = 0;\n var op_or = function(x, y) {return x | y;};\n\n // keep stepping until time limit is reached or done\n var t1 = +new Date();\n var t2;\n var total = 0;\n while(state.keys === null && (n <= 0 || total < n)) {\n // generate p or q\n if(state.state === 0) {\n /* Note: All primes are of the form:\n\n 30k+i, for i < 30 and gcd(30, i)=1, where there are 8 values for i\n\n When we generate a random number, we always align it at 30k + 1. Each\n time the number is determined not to be prime we add to get to the\n next 'i', eg: if the number was at 30k + 1 we add 6. */\n var bits = (state.p === null) ? state.pBits : state.qBits;\n var bits1 = bits - 1;\n\n // get a random number\n if(state.pqState === 0) {\n state.num = new BigInteger(bits, state.rng);\n // force MSB set\n if(!state.num.testBit(bits1)) {\n state.num.bitwiseTo(\n BigInteger.ONE.shiftLeft(bits1), op_or, state.num);\n }\n // align number on 30k+1 boundary\n state.num.dAddOffset(31 - state.num.mod(THIRTY).byteValue(), 0);\n deltaIdx = 0;\n\n ++state.pqState;\n } else if(state.pqState === 1) {\n // try to make the number a prime\n if(state.num.bitLength() > bits) {\n // overflow, try again\n state.pqState = 0;\n // do primality test\n } else if(state.num.isProbablePrime(\n _getMillerRabinTests(state.num.bitLength()))) {\n ++state.pqState;\n } else {\n // get next potential prime\n state.num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);\n }\n } else if(state.pqState === 2) {\n // ensure number is coprime with e\n state.pqState =\n (state.num.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) === 0) ? 3 : 0;\n } else if(state.pqState === 3) {\n // store p or q\n state.pqState = 0;\n if(state.p === null) {\n state.p = state.num;\n } else {\n state.q = state.num;\n }\n\n // advance state if both p and q are ready\n if(state.p !== null && state.q !== null) {\n ++state.state;\n }\n state.num = null;\n }\n } else if(state.state === 1) {\n // ensure p is larger than q (swap them if not)\n if(state.p.compareTo(state.q) < 0) {\n state.num = state.p;\n state.p = state.q;\n state.q = state.num;\n }\n ++state.state;\n } else if(state.state === 2) {\n // compute phi: (p - 1)(q - 1) (Euler's totient function)\n state.p1 = state.p.subtract(BigInteger.ONE);\n state.q1 = state.q.subtract(BigInteger.ONE);\n state.phi = state.p1.multiply(state.q1);\n ++state.state;\n } else if(state.state === 3) {\n // ensure e and phi are coprime\n if(state.phi.gcd(state.e).compareTo(BigInteger.ONE) === 0) {\n // phi and e are coprime, advance\n ++state.state;\n } else {\n // phi and e aren't coprime, so generate a new p and q\n state.p = null;\n state.q = null;\n state.state = 0;\n }\n } else if(state.state === 4) {\n // create n, ensure n is has the right number of bits\n state.n = state.p.multiply(state.q);\n\n // ensure n is right number of bits\n if(state.n.bitLength() === state.bits) {\n // success, advance\n ++state.state;\n } else {\n // failed, get new q\n state.q = null;\n state.state = 0;\n }\n } else if(state.state === 5) {\n // set keys\n var d = state.e.modInverse(state.phi);\n state.keys = {\n privateKey: pki.rsa.setPrivateKey(\n state.n, state.e, d, state.p, state.q,\n d.mod(state.p1), d.mod(state.q1),\n state.q.modInverse(state.p)),\n publicKey: pki.rsa.setPublicKey(state.n, state.e)\n };\n }\n\n // update timing\n t2 = +new Date();\n total += t2 - t1;\n t1 = t2;\n }\n\n return state.keys !== null;\n};\n\n/**\n * Generates an RSA public-private key pair in a single call.\n *\n * To generate a key-pair in steps (to allow for progress updates and to\n * prevent blocking or warnings in slow browsers) then use the key-pair\n * generation state functions.\n *\n * To generate a key-pair asynchronously (either through web-workers, if\n * available, or by breaking up the work on the main thread), pass a\n * callback function.\n *\n * @param [bits] the size for the private key in bits, defaults to 2048.\n * @param [e] the public exponent to use, defaults to 65537.\n * @param [options] options for key-pair generation, if given then 'bits'\n * and 'e' must *not* be given:\n * bits the size for the private key in bits, (default: 2048).\n * e the public exponent to use, (default: 65537 (0x10001)).\n * workerScript the worker script URL.\n * workers the number of web workers (if supported) to use,\n * (default: 2).\n * workLoad the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * prng a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\". Disables use of native APIs.\n * algorithm the algorithm to use (default: 'PRIMEINC').\n * @param [callback(err, keypair)] called once the operation completes.\n *\n * @return an object with privateKey and publicKey properties.\n */\npki.rsa.generateKeyPair = function(bits, e, options, callback) {\n // (bits), (options), (callback)\n if(arguments.length === 1) {\n if(typeof bits === 'object') {\n options = bits;\n bits = undefined;\n } else if(typeof bits === 'function') {\n callback = bits;\n bits = undefined;\n }\n } else if(arguments.length === 2) {\n // (bits, e), (bits, options), (bits, callback), (options, callback)\n if(typeof bits === 'number') {\n if(typeof e === 'function') {\n callback = e;\n e = undefined;\n } else if(typeof e !== 'number') {\n options = e;\n e = undefined;\n }\n } else {\n options = bits;\n callback = e;\n bits = undefined;\n e = undefined;\n }\n } else if(arguments.length === 3) {\n // (bits, e, options), (bits, e, callback), (bits, options, callback)\n if(typeof e === 'number') {\n if(typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n } else {\n callback = options;\n options = e;\n e = undefined;\n }\n }\n options = options || {};\n if(bits === undefined) {\n bits = options.bits || 2048;\n }\n if(e === undefined) {\n e = options.e || 0x10001;\n }\n\n // use native code if permitted, available, and parameters are acceptable\n if(!forge.options.usePureJavaScript && !options.prng &&\n bits >= 256 && bits <= 16384 && (e === 0x10001 || e === 3)) {\n if(callback) {\n // try native async\n if(_detectNodeCrypto('generateKeyPair')) {\n return _crypto.generateKeyPair('rsa', {\n modulusLength: bits,\n publicExponent: e,\n publicKeyEncoding: {\n type: 'spki',\n format: 'pem'\n },\n privateKeyEncoding: {\n type: 'pkcs8',\n format: 'pem'\n }\n }, function(err, pub, priv) {\n if(err) {\n return callback(err);\n }\n callback(null, {\n privateKey: pki.privateKeyFromPem(priv),\n publicKey: pki.publicKeyFromPem(pub)\n });\n });\n }\n if(_detectSubtleCrypto('generateKey') &&\n _detectSubtleCrypto('exportKey')) {\n // use standard native generateKey\n return util.globalScope.crypto.subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: _intToUint8Array(e),\n hash: {name: 'SHA-256'}\n }, true /* key can be exported*/, ['sign', 'verify'])\n .then(function(pair) {\n return util.globalScope.crypto.subtle.exportKey(\n 'pkcs8', pair.privateKey);\n // avoiding catch(function(err) {...}) to support IE <= 8\n }).then(undefined, function(err) {\n callback(err);\n }).then(function(pkcs8) {\n if(pkcs8) {\n var privateKey = pki.privateKeyFromAsn1(\n asn1.fromDer(forge.util.createBuffer(pkcs8)));\n callback(null, {\n privateKey: privateKey,\n publicKey: pki.setRsaPublicKey(privateKey.n, privateKey.e)\n });\n }\n });\n }\n if(_detectSubtleMsCrypto('generateKey') &&\n _detectSubtleMsCrypto('exportKey')) {\n var genOp = util.globalScope.msCrypto.subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: _intToUint8Array(e),\n hash: {name: 'SHA-256'}\n }, true /* key can be exported*/, ['sign', 'verify']);\n genOp.oncomplete = function(e) {\n var pair = e.target.result;\n var exportOp = util.globalScope.msCrypto.subtle.exportKey(\n 'pkcs8', pair.privateKey);\n exportOp.oncomplete = function(e) {\n var pkcs8 = e.target.result;\n var privateKey = pki.privateKeyFromAsn1(\n asn1.fromDer(forge.util.createBuffer(pkcs8)));\n callback(null, {\n privateKey: privateKey,\n publicKey: pki.setRsaPublicKey(privateKey.n, privateKey.e)\n });\n };\n exportOp.onerror = function(err) {\n callback(err);\n };\n };\n genOp.onerror = function(err) {\n callback(err);\n };\n return;\n }\n } else {\n // try native sync\n if(_detectNodeCrypto('generateKeyPairSync')) {\n var keypair = _crypto.generateKeyPairSync('rsa', {\n modulusLength: bits,\n publicExponent: e,\n publicKeyEncoding: {\n type: 'spki',\n format: 'pem'\n },\n privateKeyEncoding: {\n type: 'pkcs8',\n format: 'pem'\n }\n });\n return {\n privateKey: pki.privateKeyFromPem(keypair.privateKey),\n publicKey: pki.publicKeyFromPem(keypair.publicKey)\n };\n }\n }\n }\n\n // use JavaScript implementation\n var state = pki.rsa.createKeyPairGenerationState(bits, e, options);\n if(!callback) {\n pki.rsa.stepKeyPairGenerationState(state, 0);\n return state.keys;\n }\n _generateKeyPair(state, options, callback);\n};\n\n/**\n * Sets an RSA public key from BigIntegers modulus and exponent.\n *\n * @param n the modulus.\n * @param e the exponent.\n *\n * @return the public key.\n */\npki.setRsaPublicKey = pki.rsa.setPublicKey = function(n, e) {\n var key = {\n n: n,\n e: e\n };\n\n /**\n * Encrypts the given data with this public key. Newer applications\n * should use the 'RSA-OAEP' decryption scheme, 'RSAES-PKCS1-V1_5' is for\n * legacy applications.\n *\n * @param data the byte string to encrypt.\n * @param scheme the encryption scheme to use:\n * 'RSAES-PKCS1-V1_5' (default),\n * 'RSA-OAEP',\n * 'RAW', 'NONE', or null to perform raw RSA encryption,\n * an object with an 'encode' property set to a function\n * with the signature 'function(data, key)' that returns\n * a binary-encoded string representing the encoded data.\n * @param schemeOptions any scheme-specific options.\n *\n * @return the encrypted byte string.\n */\n key.encrypt = function(data, scheme, schemeOptions) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSAES-PKCS1-V1_5';\n }\n\n if(scheme === 'RSAES-PKCS1-V1_5') {\n scheme = {\n encode: function(m, key, pub) {\n return _encodePkcs1_v1_5(m, key, 0x02).getBytes();\n }\n };\n } else if(scheme === 'RSA-OAEP' || scheme === 'RSAES-OAEP') {\n scheme = {\n encode: function(m, key) {\n return forge.pkcs1.encode_rsa_oaep(key, m, schemeOptions);\n }\n };\n } else if(['RAW', 'NONE', 'NULL', null].indexOf(scheme) !== -1) {\n scheme = {encode: function(e) {return e;}};\n } else if(typeof scheme === 'string') {\n throw new Error('Unsupported encryption scheme: \"' + scheme + '\".');\n }\n\n // do scheme-based encoding then rsa encryption\n var e = scheme.encode(data, key, true);\n return pki.rsa.encrypt(e, key, true);\n };\n\n /**\n * Verifies the given signature against the given digest.\n *\n * PKCS#1 supports multiple (currently two) signature schemes:\n * RSASSA-PKCS1-V1_5 and RSASSA-PSS.\n *\n * By default this implementation uses the \"old scheme\", i.e.\n * RSASSA-PKCS1-V1_5, in which case once RSA-decrypted, the\n * signature is an OCTET STRING that holds a DigestInfo.\n *\n * DigestInfo ::= SEQUENCE {\n * digestAlgorithm DigestAlgorithmIdentifier,\n * digest Digest\n * }\n * DigestAlgorithmIdentifier ::= AlgorithmIdentifier\n * Digest ::= OCTET STRING\n *\n * To perform PSS signature verification, provide an instance\n * of Forge PSS object as the scheme parameter.\n *\n * @param digest the message digest hash to compare against the signature,\n * as a binary-encoded string.\n * @param signature the signature to verify, as a binary-encoded string.\n * @param scheme signature verification scheme to use:\n * 'RSASSA-PKCS1-V1_5' or undefined for RSASSA PKCS#1 v1.5,\n * a Forge PSS object for RSASSA-PSS,\n * 'NONE' or null for none, DigestInfo will not be expected, but\n * PKCS#1 v1.5 padding will still be used.\n * @param options optional verify options\n * _parseAllDigestBytes testing flag to control parsing of all\n * digest bytes. Unsupported and not for general usage.\n * (default: true)\n *\n * @return true if the signature was verified, false if not.\n */\n key.verify = function(digest, signature, scheme, options) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSASSA-PKCS1-V1_5';\n }\n if(options === undefined) {\n options = {\n _parseAllDigestBytes: true\n };\n }\n if(!('_parseAllDigestBytes' in options)) {\n options._parseAllDigestBytes = true;\n }\n\n if(scheme === 'RSASSA-PKCS1-V1_5') {\n scheme = {\n verify: function(digest, d) {\n // remove padding\n d = _decodePkcs1_v1_5(d, key, true);\n // d is ASN.1 BER-encoded DigestInfo\n var obj = asn1.fromDer(d, {\n parseAllBytes: options._parseAllDigestBytes\n });\n\n // validate DigestInfo\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, digestInfoValidator, capture, errors)) {\n var error = new Error(\n 'ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 ' +\n 'DigestInfo value.');\n error.errors = errors;\n throw error;\n }\n // check hash algorithm identifier\n // see PKCS1-v1-5DigestAlgorithms in RFC 8017\n // FIXME: add support to vaidator for strict value choices\n var oid = asn1.derToOid(capture.algorithmIdentifier);\n if(!(oid === forge.oids.md2 ||\n oid === forge.oids.md5 ||\n oid === forge.oids.sha1 ||\n oid === forge.oids.sha224 ||\n oid === forge.oids.sha256 ||\n oid === forge.oids.sha384 ||\n oid === forge.oids.sha512 ||\n oid === forge.oids['sha512-224'] ||\n oid === forge.oids['sha512-256'])) {\n var error = new Error(\n 'Unknown RSASSA-PKCS1-v1_5 DigestAlgorithm identifier.');\n error.oid = oid;\n throw error;\n }\n\n // special check for md2 and md5 that NULL parameters exist\n if(oid === forge.oids.md2 || oid === forge.oids.md5) {\n if(!('parameters' in capture)) {\n throw new Error(\n 'ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 ' +\n 'DigestInfo value. ' +\n 'Missing algorithm identifer NULL parameters.');\n }\n }\n\n // compare the given digest to the decrypted one\n return digest === capture.digest;\n }\n };\n } else if(scheme === 'NONE' || scheme === 'NULL' || scheme === null) {\n scheme = {\n verify: function(digest, d) {\n // remove padding\n d = _decodePkcs1_v1_5(d, key, true);\n return digest === d;\n }\n };\n }\n\n // do rsa decryption w/o any decoding, then verify -- which does decoding\n var d = pki.rsa.decrypt(signature, key, true, false);\n return scheme.verify(digest, d, key.n.bitLength());\n };\n\n return key;\n};\n\n/**\n * Sets an RSA private key from BigIntegers modulus, exponent, primes,\n * prime exponents, and modular multiplicative inverse.\n *\n * @param n the modulus.\n * @param e the public exponent.\n * @param d the private exponent ((inverse of e) mod n).\n * @param p the first prime.\n * @param q the second prime.\n * @param dP exponent1 (d mod (p-1)).\n * @param dQ exponent2 (d mod (q-1)).\n * @param qInv ((inverse of q) mod p)\n *\n * @return the private key.\n */\npki.setRsaPrivateKey = pki.rsa.setPrivateKey = function(\n n, e, d, p, q, dP, dQ, qInv) {\n var key = {\n n: n,\n e: e,\n d: d,\n p: p,\n q: q,\n dP: dP,\n dQ: dQ,\n qInv: qInv\n };\n\n /**\n * Decrypts the given data with this private key. The decryption scheme\n * must match the one used to encrypt the data.\n *\n * @param data the byte string to decrypt.\n * @param scheme the decryption scheme to use:\n * 'RSAES-PKCS1-V1_5' (default),\n * 'RSA-OAEP',\n * 'RAW', 'NONE', or null to perform raw RSA decryption.\n * @param schemeOptions any scheme-specific options.\n *\n * @return the decrypted byte string.\n */\n key.decrypt = function(data, scheme, schemeOptions) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSAES-PKCS1-V1_5';\n }\n\n // do rsa decryption w/o any decoding\n var d = pki.rsa.decrypt(data, key, false, false);\n\n if(scheme === 'RSAES-PKCS1-V1_5') {\n scheme = {decode: _decodePkcs1_v1_5};\n } else if(scheme === 'RSA-OAEP' || scheme === 'RSAES-OAEP') {\n scheme = {\n decode: function(d, key) {\n return forge.pkcs1.decode_rsa_oaep(key, d, schemeOptions);\n }\n };\n } else if(['RAW', 'NONE', 'NULL', null].indexOf(scheme) !== -1) {\n scheme = {decode: function(d) {return d;}};\n } else {\n throw new Error('Unsupported encryption scheme: \"' + scheme + '\".');\n }\n\n // decode according to scheme\n return scheme.decode(d, key, false);\n };\n\n /**\n * Signs the given digest, producing a signature.\n *\n * PKCS#1 supports multiple (currently two) signature schemes:\n * RSASSA-PKCS1-V1_5 and RSASSA-PSS.\n *\n * By default this implementation uses the \"old scheme\", i.e.\n * RSASSA-PKCS1-V1_5. In order to generate a PSS signature, provide\n * an instance of Forge PSS object as the scheme parameter.\n *\n * @param md the message digest object with the hash to sign.\n * @param scheme the signature scheme to use:\n * 'RSASSA-PKCS1-V1_5' or undefined for RSASSA PKCS#1 v1.5,\n * a Forge PSS object for RSASSA-PSS,\n * 'NONE' or null for none, DigestInfo will not be used but\n * PKCS#1 v1.5 padding will still be used.\n *\n * @return the signature as a byte string.\n */\n key.sign = function(md, scheme) {\n /* Note: The internal implementation of RSA operations is being\n transitioned away from a PKCS#1 v1.5 hard-coded scheme. Some legacy\n code like the use of an encoding block identifier 'bt' will eventually\n be removed. */\n\n // private key operation\n var bt = false;\n\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n }\n\n if(scheme === undefined || scheme === 'RSASSA-PKCS1-V1_5') {\n scheme = {encode: emsaPkcs1v15encode};\n bt = 0x01;\n } else if(scheme === 'NONE' || scheme === 'NULL' || scheme === null) {\n scheme = {encode: function() {return md;}};\n bt = 0x01;\n }\n\n // encode and then encrypt\n var d = scheme.encode(md, key.n.bitLength());\n return pki.rsa.encrypt(d, key, bt);\n };\n\n return key;\n};\n\n/**\n * Wraps an RSAPrivateKey ASN.1 object in an ASN.1 PrivateKeyInfo object.\n *\n * @param rsaKey the ASN.1 RSAPrivateKey.\n *\n * @return the ASN.1 PrivateKeyInfo.\n */\npki.wrapRsaPrivateKey = function(rsaKey) {\n // PrivateKeyInfo\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version (0)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(0).getBytes()),\n // privateKeyAlgorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.rsaEncryption).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // PrivateKey\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(rsaKey).getBytes())\n ]);\n};\n\n/**\n * Converts a private key from an ASN.1 object.\n *\n * @param obj the ASN.1 representation of a PrivateKeyInfo containing an\n * RSAPrivateKey or an RSAPrivateKey.\n *\n * @return the private key.\n */\npki.privateKeyFromAsn1 = function(obj) {\n // get PrivateKeyInfo\n var capture = {};\n var errors = [];\n if(asn1.validate(obj, privateKeyValidator, capture, errors)) {\n obj = asn1.fromDer(forge.util.createBuffer(capture.privateKey));\n }\n\n // get RSAPrivateKey\n capture = {};\n errors = [];\n if(!asn1.validate(obj, rsaPrivateKeyValidator, capture, errors)) {\n var error = new Error('Cannot read private key. ' +\n 'ASN.1 object does not contain an RSAPrivateKey.');\n error.errors = errors;\n throw error;\n }\n\n // Note: Version is currently ignored.\n // capture.privateKeyVersion\n // FIXME: inefficient, get a BigInteger that uses byte strings\n var n, e, d, p, q, dP, dQ, qInv;\n n = forge.util.createBuffer(capture.privateKeyModulus).toHex();\n e = forge.util.createBuffer(capture.privateKeyPublicExponent).toHex();\n d = forge.util.createBuffer(capture.privateKeyPrivateExponent).toHex();\n p = forge.util.createBuffer(capture.privateKeyPrime1).toHex();\n q = forge.util.createBuffer(capture.privateKeyPrime2).toHex();\n dP = forge.util.createBuffer(capture.privateKeyExponent1).toHex();\n dQ = forge.util.createBuffer(capture.privateKeyExponent2).toHex();\n qInv = forge.util.createBuffer(capture.privateKeyCoefficient).toHex();\n\n // set private key\n return pki.setRsaPrivateKey(\n new BigInteger(n, 16),\n new BigInteger(e, 16),\n new BigInteger(d, 16),\n new BigInteger(p, 16),\n new BigInteger(q, 16),\n new BigInteger(dP, 16),\n new BigInteger(dQ, 16),\n new BigInteger(qInv, 16));\n};\n\n/**\n * Converts a private key to an ASN.1 RSAPrivateKey.\n *\n * @param key the private key.\n *\n * @return the ASN.1 representation of an RSAPrivateKey.\n */\npki.privateKeyToAsn1 = pki.privateKeyToRSAPrivateKey = function(key) {\n // RSAPrivateKey\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version (0 = only 2 primes, 1 multiple primes)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(0).getBytes()),\n // modulus (n)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.n)),\n // publicExponent (e)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.e)),\n // privateExponent (d)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.d)),\n // privateKeyPrime1 (p)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.p)),\n // privateKeyPrime2 (q)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.q)),\n // privateKeyExponent1 (dP)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.dP)),\n // privateKeyExponent2 (dQ)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.dQ)),\n // coefficient (qInv)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.qInv))\n ]);\n};\n\n/**\n * Converts a public key from an ASN.1 SubjectPublicKeyInfo or RSAPublicKey.\n *\n * @param obj the asn1 representation of a SubjectPublicKeyInfo or RSAPublicKey.\n *\n * @return the public key.\n */\npki.publicKeyFromAsn1 = function(obj) {\n // get SubjectPublicKeyInfo\n var capture = {};\n var errors = [];\n if(asn1.validate(obj, publicKeyValidator, capture, errors)) {\n // get oid\n var oid = asn1.derToOid(capture.publicKeyOid);\n if(oid !== pki.oids.rsaEncryption) {\n var error = new Error('Cannot read public key. Unknown OID.');\n error.oid = oid;\n throw error;\n }\n obj = capture.rsaPublicKey;\n }\n\n // get RSA params\n errors = [];\n if(!asn1.validate(obj, rsaPublicKeyValidator, capture, errors)) {\n var error = new Error('Cannot read public key. ' +\n 'ASN.1 object does not contain an RSAPublicKey.');\n error.errors = errors;\n throw error;\n }\n\n // FIXME: inefficient, get a BigInteger that uses byte strings\n var n = forge.util.createBuffer(capture.publicKeyModulus).toHex();\n var e = forge.util.createBuffer(capture.publicKeyExponent).toHex();\n\n // set public key\n return pki.setRsaPublicKey(\n new BigInteger(n, 16),\n new BigInteger(e, 16));\n};\n\n/**\n * Converts a public key to an ASN.1 SubjectPublicKeyInfo.\n *\n * @param key the public key.\n *\n * @return the asn1 representation of a SubjectPublicKeyInfo.\n */\npki.publicKeyToAsn1 = pki.publicKeyToSubjectPublicKeyInfo = function(key) {\n // SubjectPublicKeyInfo\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.rsaEncryption).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // subjectPublicKey\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, [\n pki.publicKeyToRSAPublicKey(key)\n ])\n ]);\n};\n\n/**\n * Converts a public key to an ASN.1 RSAPublicKey.\n *\n * @param key the public key.\n *\n * @return the asn1 representation of a RSAPublicKey.\n */\npki.publicKeyToRSAPublicKey = function(key) {\n // RSAPublicKey\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // modulus (n)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.n)),\n // publicExponent (e)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.e))\n ]);\n};\n\n/**\n * Encodes a message using PKCS#1 v1.5 padding.\n *\n * @param m the message to encode.\n * @param key the RSA key to use.\n * @param bt the block type to use, i.e. either 0x01 (for signing) or 0x02\n * (for encryption).\n *\n * @return the padded byte buffer.\n */\nfunction _encodePkcs1_v1_5(m, key, bt) {\n var eb = forge.util.createBuffer();\n\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n /* use PKCS#1 v1.5 padding */\n if(m.length > (k - 11)) {\n var error = new Error('Message is too long for PKCS#1 v1.5 padding.');\n error.length = m.length;\n error.max = k - 11;\n throw error;\n }\n\n /* A block type BT, a padding string PS, and the data D shall be\n formatted into an octet string EB, the encryption block:\n\n EB = 00 || BT || PS || 00 || D\n\n The block type BT shall be a single octet indicating the structure of\n the encryption block. For this version of the document it shall have\n value 00, 01, or 02. For a private-key operation, the block type\n shall be 00 or 01. For a public-key operation, it shall be 02.\n\n The padding string PS shall consist of k-3-||D|| octets. For block\n type 00, the octets shall have value 00; for block type 01, they\n shall have value FF; and for block type 02, they shall be\n pseudorandomly generated and nonzero. This makes the length of the\n encryption block EB equal to k. */\n\n // build the encryption block\n eb.putByte(0x00);\n eb.putByte(bt);\n\n // create the padding\n var padNum = k - 3 - m.length;\n var padByte;\n // private key op\n if(bt === 0x00 || bt === 0x01) {\n padByte = (bt === 0x00) ? 0x00 : 0xFF;\n for(var i = 0; i < padNum; ++i) {\n eb.putByte(padByte);\n }\n } else {\n // public key op\n // pad with random non-zero values\n while(padNum > 0) {\n var numZeros = 0;\n var padBytes = forge.random.getBytes(padNum);\n for(var i = 0; i < padNum; ++i) {\n padByte = padBytes.charCodeAt(i);\n if(padByte === 0) {\n ++numZeros;\n } else {\n eb.putByte(padByte);\n }\n }\n padNum = numZeros;\n }\n }\n\n // zero followed by message\n eb.putByte(0x00);\n eb.putBytes(m);\n\n return eb;\n}\n\n/**\n * Decodes a message using PKCS#1 v1.5 padding.\n *\n * @param em the message to decode.\n * @param key the RSA key to use.\n * @param pub true if the key is a public key, false if it is private.\n * @param ml the message length, if specified.\n *\n * @return the decoded bytes.\n */\nfunction _decodePkcs1_v1_5(em, key, pub, ml) {\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n /* It is an error if any of the following conditions occurs:\n\n 1. The encryption block EB cannot be parsed unambiguously.\n 2. The padding string PS consists of fewer than eight octets\n or is inconsisent with the block type BT.\n 3. The decryption process is a public-key operation and the block\n type BT is not 00 or 01, or the decryption process is a\n private-key operation and the block type is not 02.\n */\n\n // parse the encryption block\n var eb = forge.util.createBuffer(em);\n var first = eb.getByte();\n var bt = eb.getByte();\n if(first !== 0x00 ||\n (pub && bt !== 0x00 && bt !== 0x01) ||\n (!pub && bt != 0x02) ||\n (pub && bt === 0x00 && typeof(ml) === 'undefined')) {\n throw new Error('Encryption block is invalid.');\n }\n\n var padNum = 0;\n if(bt === 0x00) {\n // check all padding bytes for 0x00\n padNum = k - 3 - ml;\n for(var i = 0; i < padNum; ++i) {\n if(eb.getByte() !== 0x00) {\n throw new Error('Encryption block is invalid.');\n }\n }\n } else if(bt === 0x01) {\n // find the first byte that isn't 0xFF, should be after all padding\n padNum = 0;\n while(eb.length() > 1) {\n if(eb.getByte() !== 0xFF) {\n --eb.read;\n break;\n }\n ++padNum;\n }\n } else if(bt === 0x02) {\n // look for 0x00 byte\n padNum = 0;\n while(eb.length() > 1) {\n if(eb.getByte() === 0x00) {\n --eb.read;\n break;\n }\n ++padNum;\n }\n }\n\n // zero must be 0x00 and padNum must be (k - 3 - message length)\n var zero = eb.getByte();\n if(zero !== 0x00 || padNum !== (k - 3 - eb.length())) {\n throw new Error('Encryption block is invalid.');\n }\n\n return eb.getBytes();\n}\n\n/**\n * Runs the key-generation algorithm asynchronously, either in the background\n * via Web Workers, or using the main thread and setImmediate.\n *\n * @param state the key-pair generation state.\n * @param [options] options for key-pair generation:\n * workerScript the worker script URL.\n * workers the number of web workers (if supported) to use,\n * (default: 2, -1 to use estimated cores minus one).\n * workLoad the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * @param callback(err, keypair) called once the operation completes.\n */\nfunction _generateKeyPair(state, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n var opts = {\n algorithm: {\n name: options.algorithm || 'PRIMEINC',\n options: {\n workers: options.workers || 2,\n workLoad: options.workLoad || 100,\n workerScript: options.workerScript\n }\n }\n };\n if('prng' in options) {\n opts.prng = options.prng;\n }\n\n generate();\n\n function generate() {\n // find p and then q (done in series to simplify)\n getPrime(state.pBits, function(err, num) {\n if(err) {\n return callback(err);\n }\n state.p = num;\n if(state.q !== null) {\n return finish(err, state.q);\n }\n getPrime(state.qBits, finish);\n });\n }\n\n function getPrime(bits, callback) {\n forge.prime.generateProbablePrime(bits, opts, callback);\n }\n\n function finish(err, num) {\n if(err) {\n return callback(err);\n }\n\n // set q\n state.q = num;\n\n // ensure p is larger than q (swap them if not)\n if(state.p.compareTo(state.q) < 0) {\n var tmp = state.p;\n state.p = state.q;\n state.q = tmp;\n }\n\n // ensure p is coprime with e\n if(state.p.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) !== 0) {\n state.p = null;\n generate();\n return;\n }\n\n // ensure q is coprime with e\n if(state.q.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) !== 0) {\n state.q = null;\n getPrime(state.qBits, finish);\n return;\n }\n\n // compute phi: (p - 1)(q - 1) (Euler's totient function)\n state.p1 = state.p.subtract(BigInteger.ONE);\n state.q1 = state.q.subtract(BigInteger.ONE);\n state.phi = state.p1.multiply(state.q1);\n\n // ensure e and phi are coprime\n if(state.phi.gcd(state.e).compareTo(BigInteger.ONE) !== 0) {\n // phi and e aren't coprime, so generate a new p and q\n state.p = state.q = null;\n generate();\n return;\n }\n\n // create n, ensure n is has the right number of bits\n state.n = state.p.multiply(state.q);\n if(state.n.bitLength() !== state.bits) {\n // failed, get new q\n state.q = null;\n getPrime(state.qBits, finish);\n return;\n }\n\n // set keys\n var d = state.e.modInverse(state.phi);\n state.keys = {\n privateKey: pki.rsa.setPrivateKey(\n state.n, state.e, d, state.p, state.q,\n d.mod(state.p1), d.mod(state.q1),\n state.q.modInverse(state.p)),\n publicKey: pki.rsa.setPublicKey(state.n, state.e)\n };\n\n callback(null, state.keys);\n }\n}\n\n/**\n * Converts a positive BigInteger into 2's-complement big-endian bytes.\n *\n * @param b the big integer to convert.\n *\n * @return the bytes.\n */\nfunction _bnToBytes(b) {\n // prepend 0x00 if first byte >= 0x80\n var hex = b.toString(16);\n if(hex[0] >= '8') {\n hex = '00' + hex;\n }\n var bytes = forge.util.hexToBytes(hex);\n\n // ensure integer is minimally-encoded\n if(bytes.length > 1 &&\n // leading 0x00 for positive integer\n ((bytes.charCodeAt(0) === 0 &&\n (bytes.charCodeAt(1) & 0x80) === 0) ||\n // leading 0xFF for negative integer\n (bytes.charCodeAt(0) === 0xFF &&\n (bytes.charCodeAt(1) & 0x80) === 0x80))) {\n return bytes.substr(1);\n }\n return bytes;\n}\n\n/**\n * Returns the required number of Miller-Rabin tests to generate a\n * prime with an error probability of (1/2)^80.\n *\n * See Handbook of Applied Cryptography Chapter 4, Table 4.4.\n *\n * @param bits the bit size.\n *\n * @return the required number of iterations.\n */\nfunction _getMillerRabinTests(bits) {\n if(bits <= 100) return 27;\n if(bits <= 150) return 18;\n if(bits <= 200) return 15;\n if(bits <= 250) return 12;\n if(bits <= 300) return 9;\n if(bits <= 350) return 8;\n if(bits <= 400) return 7;\n if(bits <= 500) return 6;\n if(bits <= 600) return 5;\n if(bits <= 800) return 4;\n if(bits <= 1250) return 3;\n return 2;\n}\n\n/**\n * Performs feature detection on the Node crypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectNodeCrypto(fn) {\n return forge.util.isNodejs && typeof _crypto[fn] === 'function';\n}\n\n/**\n * Performs feature detection on the SubtleCrypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectSubtleCrypto(fn) {\n return (typeof util.globalScope !== 'undefined' &&\n typeof util.globalScope.crypto === 'object' &&\n typeof util.globalScope.crypto.subtle === 'object' &&\n typeof util.globalScope.crypto.subtle[fn] === 'function');\n}\n\n/**\n * Performs feature detection on the deprecated Microsoft Internet Explorer\n * outdated SubtleCrypto interface. This function should only be used after\n * checking for the modern, standard SubtleCrypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectSubtleMsCrypto(fn) {\n return (typeof util.globalScope !== 'undefined' &&\n typeof util.globalScope.msCrypto === 'object' &&\n typeof util.globalScope.msCrypto.subtle === 'object' &&\n typeof util.globalScope.msCrypto.subtle[fn] === 'function');\n}\n\nfunction _intToUint8Array(x) {\n var bytes = forge.util.hexToBytes(x.toString(16));\n var buffer = new Uint8Array(bytes.length);\n for(var i = 0; i < bytes.length; ++i) {\n buffer[i] = bytes.charCodeAt(i);\n }\n return buffer;\n}\n\nfunction _privateKeyFromJwk(jwk) {\n if(jwk.kty !== 'RSA') {\n throw new Error(\n 'Unsupported key algorithm \"' + jwk.kty + '\"; algorithm must be \"RSA\".');\n }\n return pki.setRsaPrivateKey(\n _base64ToBigInt(jwk.n),\n _base64ToBigInt(jwk.e),\n _base64ToBigInt(jwk.d),\n _base64ToBigInt(jwk.p),\n _base64ToBigInt(jwk.q),\n _base64ToBigInt(jwk.dp),\n _base64ToBigInt(jwk.dq),\n _base64ToBigInt(jwk.qi));\n}\n\nfunction _publicKeyFromJwk(jwk) {\n if(jwk.kty !== 'RSA') {\n throw new Error('Key algorithm must be \"RSA\".');\n }\n return pki.setRsaPublicKey(\n _base64ToBigInt(jwk.n),\n _base64ToBigInt(jwk.e));\n}\n\nfunction _base64ToBigInt(b64) {\n return new BigInteger(forge.util.bytesToHex(forge.util.decode64(b64)), 16);\n}\n","/**\n * Password-based encryption functions.\n *\n * @author Dave Longley\n * @author Stefan Siegl \n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl \n *\n * An EncryptedPrivateKeyInfo:\n *\n * EncryptedPrivateKeyInfo ::= SEQUENCE {\n * encryptionAlgorithm EncryptionAlgorithmIdentifier,\n * encryptedData EncryptedData }\n *\n * EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * EncryptedData ::= OCTET STRING\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./md');\nrequire('./oids');\nrequire('./pbkdf2');\nrequire('./pem');\nrequire('./random');\nrequire('./rc2');\nrequire('./rsa');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Password-based encryption implementation. */\nvar pki = forge.pki = forge.pki || {};\nmodule.exports = pki.pbe = forge.pbe = forge.pbe || {};\nvar oids = pki.oids;\n\n// validator for an EncryptedPrivateKeyInfo structure\n// Note: Currently only works w/algorithm params\nvar encryptedPrivateKeyValidator = {\n name: 'EncryptedPrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedPrivateKeyInfo.encryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encryptionOid'\n }, {\n name: 'AlgorithmIdentifier.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'encryptionParams'\n }]\n }, {\n // encryptedData\n name: 'EncryptedPrivateKeyInfo.encryptedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encryptedData'\n }]\n};\n\n// validator for a PBES2Algorithms structure\n// Note: Currently only works w/PBKDF2 + AES encryption schemes\nvar PBES2AlgorithmsValidator = {\n name: 'PBES2Algorithms',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'kdfOid'\n }, {\n name: 'PBES2Algorithms.params',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.params.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'kdfSalt'\n }, {\n name: 'PBES2Algorithms.params.iterationCount',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'kdfIterationCount'\n }, {\n name: 'PBES2Algorithms.params.keyLength',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n optional: true,\n capture: 'keyLength'\n }, {\n // prf\n name: 'PBES2Algorithms.params.prf',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'PBES2Algorithms.params.prf.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'prfOid'\n }]\n }]\n }]\n }, {\n name: 'PBES2Algorithms.encryptionScheme',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.encryptionScheme.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encOid'\n }, {\n name: 'PBES2Algorithms.encryptionScheme.iv',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encIv'\n }]\n }]\n};\n\nvar pkcs12PbeParamsValidator = {\n name: 'pkcs-12PbeParams',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'pkcs-12PbeParams.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'salt'\n }, {\n name: 'pkcs-12PbeParams.iterations',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'iterations'\n }]\n};\n\n/**\n * Encrypts a ASN.1 PrivateKeyInfo object, producing an EncryptedPrivateKeyInfo.\n *\n * PBES2Algorithms ALGORITHM-IDENTIFIER ::=\n * { {PBES2-params IDENTIFIED BY id-PBES2}, ...}\n *\n * id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13}\n *\n * PBES2-params ::= SEQUENCE {\n * keyDerivationFunc AlgorithmIdentifier {{PBES2-KDFs}},\n * encryptionScheme AlgorithmIdentifier {{PBES2-Encs}}\n * }\n *\n * PBES2-KDFs ALGORITHM-IDENTIFIER ::=\n * { {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ... }\n *\n * PBES2-Encs ALGORITHM-IDENTIFIER ::= { ... }\n *\n * PBKDF2-params ::= SEQUENCE {\n * salt CHOICE {\n * specified OCTET STRING,\n * otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}\n * },\n * iterationCount INTEGER (1..MAX),\n * keyLength INTEGER (1..MAX) OPTIONAL,\n * prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT algid-hmacWithSHA1\n * }\n *\n * @param obj the ASN.1 PrivateKeyInfo object.\n * @param password the password to encrypt with.\n * @param options:\n * algorithm the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des'), defaults to 'aes128'.\n * count the iteration count to use.\n * saltSize the salt size to use.\n * prfAlgorithm the PRF message digest algorithm to use\n * ('sha1', 'sha224', 'sha256', 'sha384', 'sha512')\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptPrivateKeyInfo = function(obj, password, options) {\n // set default options\n options = options || {};\n options.saltSize = options.saltSize || 8;\n options.count = options.count || 2048;\n options.algorithm = options.algorithm || 'aes128';\n options.prfAlgorithm = options.prfAlgorithm || 'sha1';\n\n // generate PBE params\n var salt = forge.random.getBytesSync(options.saltSize);\n var count = options.count;\n var countBytes = asn1.integerToDer(count);\n var dkLen;\n var encryptionAlgorithm;\n var encryptedData;\n if(options.algorithm.indexOf('aes') === 0 || options.algorithm === 'des') {\n // do PBES2\n var ivLen, encOid, cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n dkLen = 16;\n ivLen = 16;\n encOid = oids['aes128-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n dkLen = 24;\n ivLen = 16;\n encOid = oids['aes192-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n dkLen = 32;\n ivLen = 16;\n encOid = oids['aes256-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'des':\n dkLen = 8;\n ivLen = 8;\n encOid = oids['desCBC'];\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // get PRF message digest\n var prfAlgorithm = 'hmacWith' + options.prfAlgorithm.toUpperCase();\n var md = prfAlgorithmToMessageDigest(prfAlgorithm);\n\n // encrypt private key using pbe SHA-1 and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = forge.random.getBytesSync(ivLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n // get PBKDF2-params\n var params = createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm);\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBES2']).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // keyDerivationFunc\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBKDF2']).getBytes()),\n // PBKDF2-params\n params\n ]),\n // encryptionScheme\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(encOid).getBytes()),\n // iv\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, iv)\n ])\n ])\n ]);\n } else if(options.algorithm === '3des') {\n // Do PKCS12 PBE\n dkLen = 24;\n\n var saltBytes = new forge.util.ByteBuffer(salt);\n var dk = pki.pbe.generatePkcs12Key(password, saltBytes, 1, count, dkLen);\n var iv = pki.pbe.generatePkcs12Key(password, saltBytes, 2, count, dkLen);\n var cipher = forge.des.createEncryptionCipher(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pbeWithSHAAnd3-KeyTripleDES-CBC']).getBytes()),\n // pkcs-12PbeParams\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ])\n ]);\n } else {\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // EncryptedPrivateKeyInfo\n var rval = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // encryptionAlgorithm\n encryptionAlgorithm,\n // encryptedData\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, encryptedData)\n ]);\n return rval;\n};\n\n/**\n * Decrypts a ASN.1 PrivateKeyInfo object.\n *\n * @param obj the ASN.1 EncryptedPrivateKeyInfo object.\n * @param password the password to decrypt with.\n *\n * @return the ASN.1 PrivateKeyInfo on success, null on failure.\n */\npki.decryptPrivateKeyInfo = function(obj, password) {\n var rval = null;\n\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, encryptedPrivateKeyValidator, capture, errors)) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // get cipher\n var oid = asn1.derToOid(capture.encryptionOid);\n var cipher = pki.pbe.getCipher(oid, capture.encryptionParams, password);\n\n // get encrypted data\n var encrypted = forge.util.createBuffer(capture.encryptedData);\n\n cipher.update(encrypted);\n if(cipher.finish()) {\n rval = asn1.fromDer(cipher.output);\n }\n\n return rval;\n};\n\n/**\n * Converts a EncryptedPrivateKeyInfo to PEM format.\n *\n * @param epki the EncryptedPrivateKeyInfo.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted encrypted private key.\n */\npki.encryptedPrivateKeyToPem = function(epki, maxline) {\n // convert to DER, then PEM-encode\n var msg = {\n type: 'ENCRYPTED PRIVATE KEY',\n body: asn1.toDer(epki).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts a PEM-encoded EncryptedPrivateKeyInfo to ASN.1 format. Decryption\n * is not performed.\n *\n * @param pem the EncryptedPrivateKeyInfo in PEM-format.\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptedPrivateKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY') {\n var error = new Error('Could not convert encrypted private key from PEM; ' +\n 'PEM header type is \"ENCRYPTED PRIVATE KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert encrypted private key from PEM; ' +\n 'PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n return asn1.fromDer(msg.body);\n};\n\n/**\n * Encrypts an RSA private key. By default, the key will be wrapped in\n * a PrivateKeyInfo and encrypted to produce a PKCS#8 EncryptedPrivateKeyInfo.\n * This is the standard, preferred way to encrypt a private key.\n *\n * To produce a non-standard PEM-encrypted private key that uses encapsulated\n * headers to indicate the encryption algorithm (old-style non-PKCS#8 OpenSSL\n * private key encryption), set the 'legacy' option to true. Note: Using this\n * option will cause the iteration count to be forced to 1.\n *\n * Note: The 'des' algorithm is supported, but it is not considered to be\n * secure because it only uses a single 56-bit key. If possible, it is highly\n * recommended that a different algorithm be used.\n *\n * @param rsaKey the RSA key to encrypt.\n * @param password the password to use.\n * @param options:\n * algorithm: the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des', 'des').\n * count: the iteration count to use.\n * saltSize: the salt size to use.\n * legacy: output an old non-PKCS#8 PEM-encrypted+encapsulated\n * headers (DEK-Info) private key.\n *\n * @return the PEM-encoded ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptRsaPrivateKey = function(rsaKey, password, options) {\n // standard PKCS#8\n options = options || {};\n if(!options.legacy) {\n // encrypt PrivateKeyInfo\n var rval = pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(rsaKey));\n rval = pki.encryptPrivateKeyInfo(rval, password, options);\n return pki.encryptedPrivateKeyToPem(rval);\n }\n\n // legacy non-PKCS#8\n var algorithm;\n var iv;\n var dkLen;\n var cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n algorithm = 'AES-128-CBC';\n dkLen = 16;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n algorithm = 'AES-192-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n algorithm = 'AES-256-CBC';\n dkLen = 32;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case '3des':\n algorithm = 'DES-EDE3-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n case 'des':\n algorithm = 'DES-CBC';\n dkLen = 8;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Could not encrypt RSA private key; unsupported ' +\n 'encryption algorithm \"' + options.algorithm + '\".');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // encrypt private key using OpenSSL legacy key derivation\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(pki.privateKeyToAsn1(rsaKey)));\n cipher.finish();\n\n var msg = {\n type: 'RSA PRIVATE KEY',\n procType: {\n version: '4',\n type: 'ENCRYPTED'\n },\n dekInfo: {\n algorithm: algorithm,\n parameters: forge.util.bytesToHex(iv).toUpperCase()\n },\n body: cipher.output.getBytes()\n };\n return forge.pem.encode(msg);\n};\n\n/**\n * Decrypts an RSA private key.\n *\n * @param pem the PEM-formatted EncryptedPrivateKeyInfo to decrypt.\n * @param password the password to use.\n *\n * @return the RSA key on success, null on failure.\n */\npki.decryptRsaPrivateKey = function(pem, password) {\n var rval = null;\n\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY' &&\n msg.type !== 'PRIVATE KEY' &&\n msg.type !== 'RSA PRIVATE KEY') {\n var error = new Error('Could not convert private key from PEM; PEM header type ' +\n 'is not \"ENCRYPTED PRIVATE KEY\", \"PRIVATE KEY\", or \"RSA PRIVATE KEY\".');\n error.headerType = error;\n throw error;\n }\n\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n var dkLen;\n var cipherFn;\n switch(msg.dekInfo.algorithm) {\n case 'DES-CBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'DES-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'AES-128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'RC2-40-CBC':\n dkLen = 5;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 40);\n };\n break;\n case 'RC2-64-CBC':\n dkLen = 8;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 64);\n };\n break;\n case 'RC2-128-CBC':\n dkLen = 16;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 128);\n };\n break;\n default:\n var error = new Error('Could not decrypt private key; unsupported ' +\n 'encryption algorithm \"' + msg.dekInfo.algorithm + '\".');\n error.algorithm = msg.dekInfo.algorithm;\n throw error;\n }\n\n // use OpenSSL legacy key derivation\n var iv = forge.util.hexToBytes(msg.dekInfo.parameters);\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(forge.util.createBuffer(msg.body));\n if(cipher.finish()) {\n rval = cipher.output.getBytes();\n } else {\n return rval;\n }\n } else {\n rval = msg.body;\n }\n\n if(msg.type === 'ENCRYPTED PRIVATE KEY') {\n rval = pki.decryptPrivateKeyInfo(asn1.fromDer(rval), password);\n } else {\n // decryption already performed above\n rval = asn1.fromDer(rval);\n }\n\n if(rval !== null) {\n rval = pki.privateKeyFromAsn1(rval);\n }\n\n return rval;\n};\n\n/**\n * Derives a PKCS#12 key.\n *\n * @param password the password to derive the key material from, null or\n * undefined for none.\n * @param salt the salt, as a ByteBuffer, to use.\n * @param id the PKCS#12 ID byte (1 = key material, 2 = IV, 3 = MAC).\n * @param iter the iteration count.\n * @param n the number of bytes to derive from the password.\n * @param md the message digest to use, defaults to SHA-1.\n *\n * @return a ByteBuffer with the bytes derived from the password.\n */\npki.pbe.generatePkcs12Key = function(password, salt, id, iter, n, md) {\n var j, l;\n\n if(typeof md === 'undefined' || md === null) {\n if(!('sha1' in forge.md)) {\n throw new Error('\"sha1\" hash algorithm unavailable.');\n }\n md = forge.md.sha1.create();\n }\n\n var u = md.digestLength;\n var v = md.blockLength;\n var result = new forge.util.ByteBuffer();\n\n /* Convert password to Unicode byte buffer + trailing 0-byte. */\n var passBuf = new forge.util.ByteBuffer();\n if(password !== null && password !== undefined) {\n for(l = 0; l < password.length; l++) {\n passBuf.putInt16(password.charCodeAt(l));\n }\n passBuf.putInt16(0);\n }\n\n /* Length of salt and password in BYTES. */\n var p = passBuf.length();\n var s = salt.length();\n\n /* 1. Construct a string, D (the \"diversifier\"), by concatenating\n v copies of ID. */\n var D = new forge.util.ByteBuffer();\n D.fillWithByte(id, v);\n\n /* 2. Concatenate copies of the salt together to create a string S of length\n v * ceil(s / v) bytes (the final copy of the salt may be trunacted\n to create S).\n Note that if the salt is the empty string, then so is S. */\n var Slen = v * Math.ceil(s / v);\n var S = new forge.util.ByteBuffer();\n for(l = 0; l < Slen; l++) {\n S.putByte(salt.at(l % s));\n }\n\n /* 3. Concatenate copies of the password together to create a string P of\n length v * ceil(p / v) bytes (the final copy of the password may be\n truncated to create P).\n Note that if the password is the empty string, then so is P. */\n var Plen = v * Math.ceil(p / v);\n var P = new forge.util.ByteBuffer();\n for(l = 0; l < Plen; l++) {\n P.putByte(passBuf.at(l % p));\n }\n\n /* 4. Set I=S||P to be the concatenation of S and P. */\n var I = S;\n I.putBuffer(P);\n\n /* 5. Set c=ceil(n / u). */\n var c = Math.ceil(n / u);\n\n /* 6. For i=1, 2, ..., c, do the following: */\n for(var i = 1; i <= c; i++) {\n /* a) Set Ai=H^r(D||I). (l.e. the rth hash of D||I, H(H(H(...H(D||I)))) */\n var buf = new forge.util.ByteBuffer();\n buf.putBytes(D.bytes());\n buf.putBytes(I.bytes());\n for(var round = 0; round < iter; round++) {\n md.start();\n md.update(buf.getBytes());\n buf = md.digest();\n }\n\n /* b) Concatenate copies of Ai to create a string B of length v bytes (the\n final copy of Ai may be truncated to create B). */\n var B = new forge.util.ByteBuffer();\n for(l = 0; l < v; l++) {\n B.putByte(buf.at(l % u));\n }\n\n /* c) Treating I as a concatenation I0, I1, ..., Ik-1 of v-byte blocks,\n where k=ceil(s / v) + ceil(p / v), modify I by setting\n Ij=(Ij+B+1) mod 2v for each j. */\n var k = Math.ceil(s / v) + Math.ceil(p / v);\n var Inew = new forge.util.ByteBuffer();\n for(j = 0; j < k; j++) {\n var chunk = new forge.util.ByteBuffer(I.getBytes(v));\n var x = 0x1ff;\n for(l = B.length() - 1; l >= 0; l--) {\n x = x >> 8;\n x += B.at(l) + chunk.at(l);\n chunk.setAt(l, x & 0xff);\n }\n Inew.putBuffer(chunk);\n }\n I = Inew;\n\n /* Add Ai to A. */\n result.putBuffer(buf);\n }\n\n result.truncate(result.length() - n);\n return result;\n};\n\n/**\n * Get new Forge cipher object instance.\n *\n * @param oid the OID (in string notation).\n * @param params the ASN.1 params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipher = function(oid, params, password) {\n switch(oid) {\n case pki.oids['pkcs5PBES2']:\n return pki.pbe.getCipherForPBES2(oid, params, password);\n\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n return pki.pbe.getCipherForPKCS12PBE(oid, params, password);\n\n default:\n var error = new Error('Cannot read encrypted PBE data block. Unsupported OID.');\n error.oid = oid;\n error.supportedOids = [\n 'pkcs5PBES2',\n 'pbeWithSHAAnd3-KeyTripleDES-CBC',\n 'pbewithSHAAnd40BitRC2-CBC'\n ];\n throw error;\n }\n};\n\n/**\n * Get new Forge cipher object instance according to PBES2 params block.\n *\n * The returned cipher instance is already started using the IV\n * from PBES2 parameter block.\n *\n * @param oid the PKCS#5 PBKDF2 OID (in string notation).\n * @param params the ASN.1 PBES2-params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipherForPBES2 = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, PBES2AlgorithmsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // check oids\n oid = asn1.derToOid(capture.kdfOid);\n if(oid !== pki.oids['pkcs5PBKDF2']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported key derivation function OID.');\n error.oid = oid;\n error.supportedOids = ['pkcs5PBKDF2'];\n throw error;\n }\n oid = asn1.derToOid(capture.encOid);\n if(oid !== pki.oids['aes128-CBC'] &&\n oid !== pki.oids['aes192-CBC'] &&\n oid !== pki.oids['aes256-CBC'] &&\n oid !== pki.oids['des-EDE3-CBC'] &&\n oid !== pki.oids['desCBC']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported encryption scheme OID.');\n error.oid = oid;\n error.supportedOids = [\n 'aes128-CBC', 'aes192-CBC', 'aes256-CBC', 'des-EDE3-CBC', 'desCBC'];\n throw error;\n }\n\n // set PBE params\n var salt = capture.kdfSalt;\n var count = forge.util.createBuffer(capture.kdfIterationCount);\n count = count.getInt(count.length() << 3);\n var dkLen;\n var cipherFn;\n switch(pki.oids[oid]) {\n case 'aes128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'des-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'desCBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n\n // decrypt private key using pbe with chosen PRF and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = capture.encIv;\n var cipher = cipherFn(dk);\n cipher.start(iv);\n\n return cipher;\n};\n\n/**\n * Get new Forge cipher object instance for PKCS#12 PBE.\n *\n * The returned cipher instance is already started using the key & IV\n * derived from the provided password and PKCS#12 PBE salt.\n *\n * @param oid The PKCS#12 PBE OID (in string notation).\n * @param params The ASN.1 PKCS#12 PBE-params object.\n * @param password The password to decrypt with.\n *\n * @return the new cipher object instance.\n */\npki.pbe.getCipherForPKCS12PBE = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, pkcs12PbeParamsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n var salt = forge.util.createBuffer(capture.salt);\n var count = forge.util.createBuffer(capture.iterations);\n count = count.getInt(count.length() << 3);\n\n var dkLen, dIvLen, cipherFn;\n switch(oid) {\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n dkLen = 24;\n dIvLen = 8;\n cipherFn = forge.des.startDecrypting;\n break;\n\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n dkLen = 5;\n dIvLen = 8;\n cipherFn = function(key, iv) {\n var cipher = forge.rc2.createDecryptionCipher(key, 40);\n cipher.start(iv, null);\n return cipher;\n };\n break;\n\n default:\n var error = new Error('Cannot read PKCS #12 PBE data block. Unsupported OID.');\n error.oid = oid;\n throw error;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n var key = pki.pbe.generatePkcs12Key(password, salt, 1, count, dkLen, md);\n md.start();\n var iv = pki.pbe.generatePkcs12Key(password, salt, 2, count, dIvLen, md);\n\n return cipherFn(key, iv);\n};\n\n/**\n * OpenSSL's legacy key derivation function.\n *\n * See: http://www.openssl.org/docs/crypto/EVP_BytesToKey.html\n *\n * @param password the password to derive the key from.\n * @param salt the salt to use, null for none.\n * @param dkLen the number of bytes needed for the derived key.\n * @param [options] the options to use:\n * [md] an optional message digest object to use.\n */\npki.pbe.opensslDeriveBytes = function(password, salt, dkLen, md) {\n if(typeof md === 'undefined' || md === null) {\n if(!('md5' in forge.md)) {\n throw new Error('\"md5\" hash algorithm unavailable.');\n }\n md = forge.md.md5.create();\n }\n if(salt === null) {\n salt = '';\n }\n var digests = [hash(md, password + salt)];\n for(var length = 16, i = 1; length < dkLen; ++i, length += 16) {\n digests.push(hash(md, digests[i - 1] + password + salt));\n }\n return digests.join('').substr(0, dkLen);\n};\n\nfunction hash(md, bytes) {\n return md.start().update(bytes).digest().getBytes();\n}\n\nfunction prfOidToMessageDigest(prfOid) {\n // get PRF algorithm, default to SHA-1\n var prfAlgorithm;\n if(!prfOid) {\n prfAlgorithm = 'hmacWithSHA1';\n } else {\n prfAlgorithm = pki.oids[asn1.derToOid(prfOid)];\n if(!prfAlgorithm) {\n var error = new Error('Unsupported PRF OID.');\n error.oid = prfOid;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n }\n return prfAlgorithmToMessageDigest(prfAlgorithm);\n}\n\nfunction prfAlgorithmToMessageDigest(prfAlgorithm) {\n var factory = forge.md;\n switch(prfAlgorithm) {\n case 'hmacWithSHA224':\n factory = forge.md.sha512;\n case 'hmacWithSHA1':\n case 'hmacWithSHA256':\n case 'hmacWithSHA384':\n case 'hmacWithSHA512':\n prfAlgorithm = prfAlgorithm.substr(8).toLowerCase();\n break;\n default:\n var error = new Error('Unsupported PRF algorithm.');\n error.algorithm = prfAlgorithm;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n if(!factory || !(prfAlgorithm in factory)) {\n throw new Error('Unknown hash algorithm: ' + prfAlgorithm);\n }\n return factory[prfAlgorithm].create();\n}\n\nfunction createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm) {\n var params = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ]);\n // when PRF algorithm is not SHA-1 default, add key length and PRF algorithm\n if(prfAlgorithm !== 'hmacWithSHA1') {\n params.value.push(\n // key length\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(dkLen.toString(16))),\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids[prfAlgorithm]).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]));\n }\n return params;\n}\n","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0x0;\nconst name = 'identity';\nconst encode = coerce;\nfunction digest(input) {\n return Digest.create(code, encode(input));\n}\nexport const identity = { code, name, encode, digest };\n//# sourceMappingURL=identity.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","/**\n * Returns true if the two passed Uint8Arrays have the same content\n */\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=equals.js.map","/**\n * To guarantee Uint8Array semantics, convert nodejs Buffers\n * into vanilla Uint8Arrays\n */\nexport function asUint8Array(buf) {\n return buf;\n}\n//# sourceMappingURL=as-uint8array.js.map","import { allocUnsafe } from '#alloc';\nimport { asUint8Array } from '#util/as-uint8array';\n/**\n * Returns a new Uint8Array created by concatenating the passed Uint8Arrays\n */\nexport function concat(arrays, length) {\n if (length == null) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return asUint8Array(output);\n}\n//# sourceMappingURL=concat.js.map","import 'node-forge/lib/util.js';\nimport 'node-forge/lib/jsbn.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nexport function bigIntegerToUintBase64url(num, len) {\n // Call `.abs()` to convert to unsigned\n let buf = Uint8Array.from(num.abs().toByteArray()); // toByteArray converts to big endian\n // toByteArray() gives us back a signed array, which will include a leading 0\n // byte if the most significant bit of the number is 1:\n // https://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-integer\n // Our number will always be positive so we should remove the leading padding.\n buf = buf[0] === 0 ? buf.subarray(1) : buf;\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return uint8ArrayToString(buf, 'base64url');\n}\n// Convert a base64url encoded string to a BigInteger\nexport function base64urlToBigInteger(str) {\n const buf = base64urlToBuffer(str);\n return new forge.jsbn.BigInteger(uint8ArrayToString(buf, 'base16'), 16);\n}\nexport function base64urlToBuffer(str, len) {\n let buf = uint8ArrayFromString(str, 'base64urlpad');\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return buf;\n}\nexport function isPromise(thing) {\n if (thing == null) {\n return false;\n }\n return typeof thing.then === 'function' &&\n typeof thing.catch === 'function' &&\n typeof thing.finally === 'function';\n}\n//# sourceMappingURL=util.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`positive integer expected, not ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`boolean expected, not ${b}`);\n}\n// copied from utils\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nfunction bytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(h.outputLen);\n number(h.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { bytes as abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// The rotate left (circular left shift) operation for uint32\nexport const rotl = (word, shift) => (word << shift) | ((word >>> (32 - shift)) >>> 0);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// The byte swap operation for uint32\nexport const byteSwap = (word) => ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\n// Conditionally byte swap if on a big-endian platform\nexport const byteSwapIfBE = isLE ? (n) => n : (n) => byteSwap(n);\n// In place byte swap for Uint32Array\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { exists, output } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n/**\n * Polyfill for Safari 14\n */\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/**\n * Choice: a ? b : c\n */\nexport const Chi = (a, b, c) => (a & b) ^ (~a & c);\n/**\n * Majority function, true if any two inputs is true\n */\nexport const Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_md.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { HashMD } from './_md.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexport class SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nexport class SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nexport class SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nexport function abytes(item) {\n if (!isBytes(item))\n throw new Error('Uint8Array expected');\n}\nexport function abool(title, value) {\n if (typeof value !== 'boolean')\n throw new Error(`${title} must be valid boolean, got \"${value}\".`);\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n abytes(bytes);\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n }\n catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n }\n else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n// Is positive bigint\nconst isPosBig = (n) => typeof n === 'bigint' && _0n <= n;\nexport function inRange(n, min, max) {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title, n, min, max) {\n // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n // consider P=256n, min=0n, max=P\n // - a for min=0 would require -1: `inRange('x', x, -1n, P)`\n // - b would commonly require subtraction: `inRange('x', x, 0n, P - 1n)`\n // - our way is the cleanest: `inRange('x', x, 0n, P)\n if (!inRange(n, min, max))\n throw new Error(`expected valid ${title}: ${min} <= n < ${max}, got ${typeof n} ${n}`);\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_2n << BigInt(n - 1)) - _1n;\n// DRBG\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error(`Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n throw new Error('not implemented');\n};\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(fn) {\n const map = new WeakMap();\n return (arg, ...args) => {\n const val = map.get(arg);\n if (val !== undefined)\n return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n//# sourceMappingURL=utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport { bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, validateObject, } from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num, power, modulo) {\n if (modulo <= _0n || power < _0n)\n throw new Error('Expected power/modulo > 0');\n if (modulo === _1n)\n return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n)\n res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n// Inverses number over modulo\nexport function invert(number, modulo) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n let Q, S, Z;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++)\n ;\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++)\n ;\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp, n) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE))\n throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO))\n return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE))\n break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\nexport function FpSqrt(P) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp, n) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp, n) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f, num, power) {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n)\n throw new Error('Expected power > 0');\n if (power === _0n)\n return f.ONE;\n if (power === _1n)\n return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f, nums) {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\nexport function FpDiv(f, lhs, rhs) {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\nexport function FpLegendre(order) {\n // (a | p) ≡ 1 if a is a square (mod p), quadratic residue\n // (a | p) ≡ -1 if a is not a square (mod p), quadratic non residue\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreConst = (order - _1n) / _2n; // Integer arithmetic\n return (f, x) => f.pow(x, legendreConst);\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f) {\n const legendre = FpLegendre(f.ORDER);\n return (x) => {\n const p = legendre(f, x);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * NOTE: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you doing.\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLen, isLE = false, redef = {}) {\n if (ORDER <= _0n)\n throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048)\n throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n });\n return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { validateField, nLength } from './modular.js';\nimport { validateObject, bitLen } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap(); // This allows use make points immutable (nothing changes inside)\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF(c, bits) {\n const constTimeNegate = (condition, item) => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const validateW = (W) => {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error(`Wrong window size=${W}, should be [1..${bits}]`);\n };\n const opts = (W) => {\n validateW(W);\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm, n) {\n let p = c.ZERO;\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm, W) {\n const { windows, windowSize } = opts(W);\n const points = [];\n let p = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n let p = c.ZERO;\n let f = c.BASE;\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n // Shift number by W bits.\n n >>= shiftBy;\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n wNAFCached(P, n, transform) {\n const W = pointWindowSizes.get(P) || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W);\n if (W !== 1)\n pointPrecomputes.set(P, transform(comp));\n }\n return this.wNAF(W, comp, n);\n },\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n setWindowSize(P, W) {\n validateW(W);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n },\n };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM).\n * MSM is basically (Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster with precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param field field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka private keys / bigints)\n */\nexport function pippenger(c, field, points, scalars) {\n // If we split scalars by some window (let's say 8 bits), every chunk will only\n // take 256 buckets even if there are 4096 scalars, also re-uses double.\n // TODO:\n // - https://eprint.iacr.org/2024/750.pdf\n // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n // 0 is accepted in scalars\n if (!Array.isArray(points) || !Array.isArray(scalars) || scalars.length !== points.length)\n throw new Error('arrays of points and scalars must have equal length');\n scalars.forEach((s, i) => {\n if (!field.isValid(s))\n throw new Error(`wrong scalar at index ${i}`);\n });\n points.forEach((p, i) => {\n if (!(p instanceof c))\n throw new Error(`wrong point at index ${i}`);\n });\n const wbits = bitLen(BigInt(points.length));\n const windowSize = wbits > 12 ? wbits - 3 : wbits > 4 ? wbits - 2 : wbits ? 2 : 1; // in bits\n const MASK = (1 << windowSize) - 1;\n const buckets = new Array(MASK + 1).fill(c.ZERO); // +1 for zero array\n const lastBits = Math.floor((field.BITS - 1) / windowSize) * windowSize;\n let sum = c.ZERO;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(c.ZERO);\n for (let j = 0; j < scalars.length; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & BigInt(MASK));\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = c.ZERO; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = c.ZERO; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0)\n for (let j = 0; j < windowSize; j++)\n sum = sum.double();\n }\n return sum;\n}\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\n//# sourceMappingURL=curve.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Twisted Edwards curve. The formula is: ax² + y² = 1 + dx²y²\nimport { validateBasic, wNAF, pippenger, } from './curve.js';\nimport { mod, Field } from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes, memoized, abool } from './utils.js';\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _8n = BigInt(8);\n// verification rule is either zip215 or rfc8032 / nist186-5. Consult fromHex:\nconst VERIFY_DEFAULT = { zip215: true };\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(curve, {\n hash: 'function',\n a: 'bigint',\n d: 'bigint',\n randomBytes: 'function',\n }, {\n adjustScalarBytes: 'function',\n domain: 'function',\n uvRatio: 'function',\n mapToCurve: 'function',\n });\n // Set defaults\n return Object.freeze({ ...opts });\n}\n/**\n * Creates Twisted Edwards curve with EdDSA signatures.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, d, p, n, Gx, Gy, h\n * const curve = twistedEdwards({ a, d, Fp: Field(p), n, Gx, Gy, h })\n */\nexport function twistedEdwards(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER, prehash: prehash, hash: cHash, randomBytes, nByteLength, h: cofactor, } = CURVE;\n const MASK = _2n << (BigInt(nByteLength * 8) - _1n);\n const modP = Fp.create; // Function overrides\n const Fn = Field(CURVE.n, CURVE.nBitLength);\n // sqrt(u/v)\n const uvRatio = CURVE.uvRatio ||\n ((u, v) => {\n try {\n return { isValid: true, value: Fp.sqrt(u * Fp.inv(v)) };\n }\n catch (e) {\n return { isValid: false, value: _0n };\n }\n });\n const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes) => bytes); // NOOP\n const domain = CURVE.domain ||\n ((data, ctx, phflag) => {\n abool('phflag', phflag);\n if (ctx.length || phflag)\n throw new Error('Contexts/pre-hash are not supported');\n return data;\n }); // NOOP\n // 0 <= n < MASK\n // Coordinates larger than Fp.ORDER are allowed for zip215\n function aCoordinate(title, n) {\n ut.aInRange('coordinate ' + title, n, _0n, MASK);\n }\n function assertPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ExtendedPoint expected');\n }\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n const toAffineMemo = memoized((p, iz) => {\n const { ex: x, ey: y, ez: z } = p;\n const is0 = p.is0();\n if (iz == null)\n iz = is0 ? _8n : Fp.inv(z); // 8 was chosen arbitrarily\n const ax = modP(x * iz);\n const ay = modP(y * iz);\n const zz = modP(z * iz);\n if (is0)\n return { x: _0n, y: _1n };\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n });\n const assertValidMemo = memoized((p) => {\n const { a, d } = CURVE;\n if (p.is0())\n throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { ex: X, ey: Y, ez: Z, et: T } = p;\n const X2 = modP(X * X); // X²\n const Y2 = modP(Y * Y); // Y²\n const Z2 = modP(Z * Z); // Z²\n const Z4 = modP(Z2 * Z2); // Z⁴\n const aX2 = modP(X2 * a); // aX²\n const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²\n const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = modP(X * Y);\n const ZT = modP(Z * T);\n if (XY !== ZT)\n throw new Error('bad point: equation left != right (2)');\n return true;\n });\n // Extended Point works in extended coordinates: (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy).\n // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates\n class Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n aCoordinate('x', ex);\n aCoordinate('y', ey);\n aCoordinate('z', ez);\n aCoordinate('t', et);\n Object.freeze(this);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n static fromAffine(p) {\n if (p instanceof Point)\n throw new Error('extended point not allowed');\n const { x, y } = p || {};\n aCoordinate('x', x);\n aCoordinate('y', y);\n return new Point(x, y, _1n, modP(x * y));\n }\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.ez));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n // Multiscalar Multiplication\n static msm(points, scalars) {\n return pippenger(Point, Fn, points, scalars);\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n wnaf.setWindowSize(this, windowSize);\n }\n // Not required for fromHex(), which always creates valid points.\n // Could be useful for fromAffine().\n assertValidity() {\n assertValidMemo(this);\n }\n // Compare one point to another.\n equals(other) {\n assertPoint(other);\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = other;\n const X1Z2 = modP(X1 * Z2);\n const X2Z1 = modP(X2 * Z1);\n const Y1Z2 = modP(Y1 * Z2);\n const Y2Z1 = modP(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n negate() {\n // Flips point sign to a negative one (-x, y in affine coords)\n return new Point(modP(-this.ex), this.ey, this.ez, modP(-this.et));\n }\n // Fast algo for doubling Extended Point.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n // Cost: 4M + 4S + 1*a + 6add + 1*2.\n double() {\n const { a } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const A = modP(X1 * X1); // A = X12\n const B = modP(Y1 * Y1); // B = Y12\n const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12\n const D = modP(a * A); // D = a*A\n const x1y1 = X1 + Y1;\n const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B\n const G = D + B; // G = D+B\n const F = G - C; // F = G-C\n const H = D - B; // H = D-B\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n // Fast algo for adding 2 Extended Points.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd\n // Cost: 9M + 1*a + 1*d + 7add.\n add(other) {\n assertPoint(other);\n const { a, d } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = other;\n // Faster algo for adding 2 Extended Points when curve's a=-1.\n // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-4\n // Cost: 8M + 8add + 2*2.\n // Note: It does not check whether the `other` point is valid.\n if (a === BigInt(-1)) {\n const A = modP((Y1 - X1) * (Y2 + X2));\n const B = modP((Y1 + X1) * (Y2 - X2));\n const F = modP(B - A);\n if (F === _0n)\n return this.double(); // Same point. Tests say it doesn't affect timing\n const C = modP(Z1 * _2n * T2);\n const D = modP(T1 * _2n * Z2);\n const E = D + C;\n const G = B + A;\n const H = D - C;\n const X3 = modP(E * F);\n const Y3 = modP(G * H);\n const T3 = modP(E * H);\n const Z3 = modP(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n const A = modP(X1 * X2); // A = X1*X2\n const B = modP(Y1 * Y2); // B = Y1*Y2\n const C = modP(T1 * d * T2); // C = T1*d*T2\n const D = modP(Z1 * Z2); // D = Z1*Z2\n const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B\n const F = D - C; // F = D-C\n const G = D + C; // G = D+C\n const H = modP(B - a * A); // H = B-a*A\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, n, Point.normalizeZ);\n }\n // Constant-time multiplication.\n multiply(scalar) {\n const n = scalar;\n ut.aInRange('scalar', n, _1n, CURVE_ORDER); // 1 <= scalar < L\n const { p, f } = this.wNAF(n);\n return Point.normalizeZ([p, f])[0];\n }\n // Non-constant-time multiplication. Uses double-and-add algorithm.\n // It's faster, but should only be used when you don't care about\n // an exposed private key e.g. sig verification.\n // Does NOT allow scalars higher than CURVE.n.\n multiplyUnsafe(scalar) {\n const n = scalar;\n ut.aInRange('scalar', n, _0n, CURVE_ORDER); // 0 <= scalar < L\n if (n === _0n)\n return I;\n if (this.equals(I) || n === _1n)\n return this;\n if (this.equals(G))\n return this.wNAF(n).p;\n return wnaf.unsafeLadder(this, n);\n }\n // Checks if point is of small order.\n // If you add something to small order point, you will have \"dirty\"\n // point with torsion component.\n // Multiplies point by cofactor and checks if the result is 0.\n isSmallOrder() {\n return this.multiplyUnsafe(cofactor).is0();\n }\n // Multiplies point by curve order and checks if the result is 0.\n // Returns `false` is the point is dirty.\n isTorsionFree() {\n return wnaf.unsafeLadder(this, CURVE_ORDER).is0();\n }\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n toAffine(iz) {\n return toAffineMemo(this, iz);\n }\n clearCofactor() {\n const { h: cofactor } = CURVE;\n if (cofactor === _1n)\n return this;\n return this.multiplyUnsafe(cofactor);\n }\n // Converts hash string or Uint8Array to Point.\n // Uses algo from RFC8032 5.1.3.\n static fromHex(hex, zip215 = false) {\n const { d, a } = CURVE;\n const len = Fp.BYTES;\n hex = ensureBytes('pointHex', hex, len); // copy hex to a new array\n abool('zip215', zip215);\n const normed = hex.slice(); // copy again, we'll manipulate it\n const lastByte = hex[len - 1]; // select last byte\n normed[len - 1] = lastByte & ~0x80; // clear last bit\n const y = ut.bytesToNumberLE(normed);\n // RFC8032 prohibits >= p, but ZIP215 doesn't\n // zip215=true: 0 <= y < MASK (2^256 for ed25519)\n // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n const max = zip215 ? MASK : Fp.ORDER;\n ut.aInRange('pointHex.y', y, _0n, max);\n // Ed25519: x² = (y²-1)/(dy²+1) mod p. Ed448: x² = (y²-1)/(dy²-1) mod p. Generic case:\n // ax²+y²=1+dx²y² => y²-1=dx²y²-ax² => y²-1=x²(dy²-a) => x²=(y²-1)/(dy²-a)\n const y2 = modP(y * y); // denominator is always non-0 mod p.\n const u = modP(y2 - _1n); // u = y² - 1\n const v = modP(d * y2 - a); // v = d y² + 1.\n let { isValid, value: x } = uvRatio(u, v); // √(u/v)\n if (!isValid)\n throw new Error('Point.fromHex: invalid y coordinate');\n const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === _0n && isLastByteOdd)\n // if x=0 and x_0 = 1, fail\n throw new Error('Point.fromHex: x=0 and x_0=1');\n if (isLastByteOdd !== isXOdd)\n x = modP(-x); // if x_0 != x mod 2, set x = p-x\n return Point.fromAffine({ x, y });\n }\n static fromPrivateKey(privKey) {\n return getExtendedPublicKey(privKey).point;\n }\n toRawBytes() {\n const { x, y } = this.toAffine();\n const bytes = ut.numberToBytesLE(y, Fp.BYTES); // each y has 2 x values (x, -y)\n bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0; // when compressing, it's enough to store y\n return bytes; // and use the last byte to encode sign of x\n }\n toHex() {\n return ut.bytesToHex(this.toRawBytes()); // Same as toRawBytes, but returns string.\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));\n Point.ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0\n const { BASE: G, ZERO: I } = Point;\n const wnaf = wNAF(Point, nByteLength * 8);\n function modN(a) {\n return mod(a, CURVE_ORDER);\n }\n // Little-endian SHA512 with modulo n\n function modN_LE(hash) {\n return modN(ut.bytesToNumberLE(hash));\n }\n /** Convenience method that creates public key and other stuff. RFC8032 5.1.5 */\n function getExtendedPublicKey(key) {\n const len = nByteLength;\n key = ensureBytes('private key', key, len);\n // Hash private key with curve's hash function to produce uniformingly random input\n // Check byte lengths: ensure(64, h(ensure(32, key)))\n const hashed = ensureBytes('hashed private key', cHash(key), 2 * len);\n const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE\n const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)\n const scalar = modN_LE(head); // The actual private scalar\n const point = G.multiply(scalar); // Point on Edwards curve aka public key\n const pointBytes = point.toRawBytes(); // Uint8Array representation\n return { head, prefix, scalar, point, pointBytes };\n }\n // Calculates EdDSA pub key. RFC8032 5.1.5. Privkey is hashed. Use first half with 3 bits cleared\n function getPublicKey(privKey) {\n return getExtendedPublicKey(privKey).pointBytes;\n }\n // int('LE', SHA512(dom2(F, C) || msgs)) mod N\n function hashDomainToScalar(context = new Uint8Array(), ...msgs) {\n const msg = ut.concatBytes(...msgs);\n return modN_LE(cHash(domain(msg, ensureBytes('context', context), !!prehash)));\n }\n /** Signs message with privateKey. RFC8032 5.1.6 */\n function sign(msg, privKey, options = {}) {\n msg = ensureBytes('message', msg);\n if (prehash)\n msg = prehash(msg); // for ed25519ph etc.\n const { prefix, scalar, pointBytes } = getExtendedPublicKey(privKey);\n const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)\n const R = G.multiply(r).toRawBytes(); // R = rG\n const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)\n const s = modN(r + k * scalar); // S = (r + k * s) mod L\n ut.aInRange('signature.s', s, _0n, CURVE_ORDER); // 0 <= s < l\n const res = ut.concatBytes(R, ut.numberToBytesLE(s, Fp.BYTES));\n return ensureBytes('result', res, nByteLength * 2); // 64-byte signature\n }\n const verifyOpts = VERIFY_DEFAULT;\n function verify(sig, msg, publicKey, options = verifyOpts) {\n const { context, zip215 } = options;\n const len = Fp.BYTES; // Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n sig = ensureBytes('signature', sig, 2 * len); // An extended group equation is checked.\n msg = ensureBytes('message', msg);\n if (zip215 !== undefined)\n abool('zip215', zip215);\n if (prehash)\n msg = prehash(msg); // for ed25519ph, etc\n const s = ut.bytesToNumberLE(sig.slice(len, 2 * len));\n // zip215: true is good for consensus-critical apps and allows points < 2^256\n // zip215: false follows RFC8032 / NIST186-5 and restricts points to CURVE.p\n let A, R, SB;\n try {\n A = Point.fromHex(publicKey, zip215);\n R = Point.fromHex(sig.slice(0, len), zip215);\n SB = G.multiplyUnsafe(s); // 0 <= s < l is done inside\n }\n catch (error) {\n return false;\n }\n if (!zip215 && A.isSmallOrder())\n return false;\n const k = hashDomainToScalar(context, R.toRawBytes(), A.toRawBytes(), msg);\n const RkA = R.add(A.multiplyUnsafe(k));\n // [8][S]B = [8]R + [8][k]A'\n return RkA.subtract(SB).clearCofactor().equals(Point.ZERO);\n }\n G._setWindowSize(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n const utils = {\n getExtendedPublicKey,\n // ed25519 private keys are uniform 32b. No need to check for modulo bias, like in secp256k1.\n randomPrivateKey: () => randomBytes(Fp.BYTES),\n /**\n * We're doing scalar multiplication (used in getPublicKey etc) with precomputed BASE_POINT\n * values. This slows down first getPublicKey() by milliseconds (see Speed section),\n * but allows to speed-up subsequent getPublicKey() calls up to 20x.\n * @param windowSize 2, 4, 8, 16\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3));\n return point;\n },\n };\n return {\n CURVE,\n getPublicKey,\n sign,\n verify,\n ExtendedPoint: Point,\n utils,\n };\n}\n//# sourceMappingURL=edwards.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { mod, pow } from './modular.js';\nimport { aInRange, bytesToNumberLE, ensureBytes, numberToBytesLE, validateObject, } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nfunction validateOpts(curve) {\n validateObject(curve, {\n a: 'bigint',\n }, {\n montgomeryBits: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n adjustScalarBytes: 'function',\n domain: 'function',\n powPminus2: 'function',\n Gu: 'bigint',\n });\n // Set defaults\n return Object.freeze({ ...curve });\n}\n// NOTE: not really montgomery curve, just bunch of very specific methods for X25519/X448 (RFC 7748, https://www.rfc-editor.org/rfc/rfc7748)\n// Uses only one coordinate instead of two\nexport function montgomery(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { P } = CURVE;\n const modP = (n) => mod(n, P);\n const montgomeryBits = CURVE.montgomeryBits;\n const montgomeryBytes = Math.ceil(montgomeryBits / 8);\n const fieldLen = CURVE.nByteLength;\n const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes) => bytes);\n const powPminus2 = CURVE.powPminus2 || ((x) => pow(x, P - BigInt(2), P));\n // cswap from RFC7748. But it is not from RFC7748!\n /*\n cswap(swap, x_2, x_3):\n dummy = mask(swap) AND (x_2 XOR x_3)\n x_2 = x_2 XOR dummy\n x_3 = x_3 XOR dummy\n Return (x_2, x_3)\n Where mask(swap) is the all-1 or all-0 word of the same length as x_2\n and x_3, computed, e.g., as mask(swap) = 0 - swap.\n */\n function cswap(swap, x_2, x_3) {\n const dummy = modP(swap * (x_2 - x_3));\n x_2 = modP(x_2 - dummy);\n x_3 = modP(x_3 + dummy);\n return [x_2, x_3];\n }\n // x25519 from 4\n // The constant a24 is (486662 - 2) / 4 = 121665 for curve25519/X25519\n const a24 = (CURVE.a - BigInt(2)) / BigInt(4);\n /**\n *\n * @param pointU u coordinate (x) on Montgomery Curve 25519\n * @param scalar by which the point would be multiplied\n * @returns new Point on Montgomery curve\n */\n function montgomeryLadder(u, scalar) {\n aInRange('u', u, _0n, P);\n aInRange('scalar', scalar, _0n, P);\n // Section 5: Implementations MUST accept non-canonical values and process them as\n // if they had been reduced modulo the field prime.\n const k = scalar;\n const x_1 = u;\n let x_2 = _1n;\n let z_2 = _0n;\n let x_3 = u;\n let z_3 = _1n;\n let swap = _0n;\n let sw;\n for (let t = BigInt(montgomeryBits - 1); t >= _0n; t--) {\n const k_t = (k >> t) & _1n;\n swap ^= k_t;\n sw = cswap(swap, x_2, x_3);\n x_2 = sw[0];\n x_3 = sw[1];\n sw = cswap(swap, z_2, z_3);\n z_2 = sw[0];\n z_3 = sw[1];\n swap = k_t;\n const A = x_2 + z_2;\n const AA = modP(A * A);\n const B = x_2 - z_2;\n const BB = modP(B * B);\n const E = AA - BB;\n const C = x_3 + z_3;\n const D = x_3 - z_3;\n const DA = modP(D * A);\n const CB = modP(C * B);\n const dacb = DA + CB;\n const da_cb = DA - CB;\n x_3 = modP(dacb * dacb);\n z_3 = modP(x_1 * modP(da_cb * da_cb));\n x_2 = modP(AA * BB);\n z_2 = modP(E * (AA + modP(a24 * E)));\n }\n // (x_2, x_3) = cswap(swap, x_2, x_3)\n sw = cswap(swap, x_2, x_3);\n x_2 = sw[0];\n x_3 = sw[1];\n // (z_2, z_3) = cswap(swap, z_2, z_3)\n sw = cswap(swap, z_2, z_3);\n z_2 = sw[0];\n z_3 = sw[1];\n // z_2^(p - 2)\n const z2 = powPminus2(z_2);\n // Return x_2 * (z_2^(p - 2))\n return modP(x_2 * z2);\n }\n function encodeUCoordinate(u) {\n return numberToBytesLE(modP(u), montgomeryBytes);\n }\n function decodeUCoordinate(uEnc) {\n // Section 5: When receiving such an array, implementations of X25519\n // MUST mask the most significant bit in the final byte.\n const u = ensureBytes('u coordinate', uEnc, montgomeryBytes);\n if (fieldLen === 32)\n u[31] &= 127; // 0b0111_1111\n return bytesToNumberLE(u);\n }\n function decodeScalar(n) {\n const bytes = ensureBytes('scalar', n);\n const len = bytes.length;\n if (len !== montgomeryBytes && len !== fieldLen)\n throw new Error(`Expected ${montgomeryBytes} or ${fieldLen} bytes, got ${len}`);\n return bytesToNumberLE(adjustScalarBytes(bytes));\n }\n function scalarMult(scalar, u) {\n const pointU = decodeUCoordinate(u);\n const _scalar = decodeScalar(scalar);\n const pu = montgomeryLadder(pointU, _scalar);\n // The result was not contributory\n // https://cr.yp.to/ecdh.html#validate\n if (pu === _0n)\n throw new Error('Invalid private or public key received');\n return encodeUCoordinate(pu);\n }\n // Computes public key from private. By doing scalar multiplication of base point.\n const GuBytes = encodeUCoordinate(CURVE.Gu);\n function scalarMultBase(scalar) {\n return scalarMult(scalar, GuBytes);\n }\n return {\n scalarMult,\n scalarMultBase,\n getSharedSecret: (privateKey, publicKey) => scalarMult(privateKey, publicKey),\n getPublicKey: (privateKey) => scalarMultBase(privateKey),\n utils: { randomPrivateKey: () => CURVE.randomBytes(CURVE.nByteLength) },\n GuBytes: GuBytes,\n };\n}\n//# sourceMappingURL=montgomery.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha512';\nimport { concatBytes, randomBytes, utf8ToBytes } from '@noble/hashes/utils';\nimport { twistedEdwards } from './abstract/edwards.js';\nimport { createHasher, expand_message_xmd } from './abstract/hash-to-curve.js';\nimport { Field, FpSqrtEven, isNegativeLE, mod, pow2 } from './abstract/modular.js';\nimport { montgomery } from './abstract/montgomery.js';\nimport { bytesToHex, bytesToNumberLE, ensureBytes, equalBytes, numberToBytesLE, } from './abstract/utils.js';\n/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n */\nconst ED25519_P = BigInt('57896044618658097711785492504343953926634992332820282019728792003956564819949');\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst ED25519_SQRT_M1 = /* @__PURE__ */ BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _5n = BigInt(5), _8n = BigInt(8);\nfunction ed25519_pow_2_252_3(x) {\n // prettier-ignore\n const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\n const P = ED25519_P;\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P; // x^3, 11\n const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n const b10 = (pow2(b5, _5n, P) * b5) % P;\n const b20 = (pow2(b10, _10n, P) * b10) % P;\n const b40 = (pow2(b20, _20n, P) * b20) % P;\n const b80 = (pow2(b40, _40n, P) * b40) % P;\n const b160 = (pow2(b80, _80n, P) * b80) % P;\n const b240 = (pow2(b160, _80n, P) * b80) % P;\n const b250 = (pow2(b240, _10n, P) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n // ^ To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n}\nfunction adjustScalarBytes(bytes) {\n // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n // set the three least significant bits of the first byte\n bytes[0] &= 248; // 0b1111_1000\n // and the most significant bit of the last to zero,\n bytes[31] &= 127; // 0b0111_1111\n // set the second most significant bit of the last byte to 1\n bytes[31] |= 64; // 0b0100_0000\n return bytes;\n}\n// sqrt(u/v)\nfunction uvRatio(u, v) {\n const P = ED25519_P;\n const v3 = mod(v * v * v, P); // v³\n const v7 = mod(v3 * v3 * v, P); // v⁷\n // (p+3)/8 and (p-5)/8\n const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n let x = mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x, P); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx² = -u√(-1)\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if (isNegativeLE(x, P))\n x = mod(-x, P);\n return { isValid: useRoot1 || useRoot2, value: x };\n}\n// Just in case\nexport const ED25519_TORSION_SUBGROUP = [\n '0100000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n '0000000000000000000000000000000000000000000000000000000000000080',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\nconst Fp = /* @__PURE__ */ (() => Field(ED25519_P, undefined, true))();\nconst ed25519Defaults = /* @__PURE__ */ (() => ({\n // Param: a\n a: BigInt(-1), // Fp.create(-1) is proper; our way still works and is faster\n // d is equal to -121665/121666 over finite field.\n // Negative number is P - number, and division is invert(number, P)\n d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n // Finite field 𝔽p over which we'll do calculations; 2n**255n - 19n\n Fp,\n // Subgroup order: how many points curve has\n // 2n**252n + 27742317777372353535851937790883648493n;\n n: BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989'),\n // Cofactor\n h: _8n,\n // Base point (x, y) aka generator point\n Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n hash: sha512,\n randomBytes,\n adjustScalarBytes,\n // dom2\n // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.\n // Constant-time, u/√v\n uvRatio,\n}))();\n/**\n * ed25519 curve with EdDSA signatures.\n */\nexport const ed25519 = /* @__PURE__ */ (() => twistedEdwards(ed25519Defaults))();\nfunction ed25519_domain(data, ctx, phflag) {\n if (ctx.length > 255)\n throw new Error('Context is too big');\n return concatBytes(utf8ToBytes('SigEd25519 no Ed25519 collisions'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);\n}\nexport const ed25519ctx = /* @__PURE__ */ (() => twistedEdwards({\n ...ed25519Defaults,\n domain: ed25519_domain,\n}))();\nexport const ed25519ph = /* @__PURE__ */ (() => twistedEdwards(Object.assign({}, ed25519Defaults, {\n domain: ed25519_domain,\n prehash: sha512,\n})))();\nexport const x25519 = /* @__PURE__ */ (() => montgomery({\n P: ED25519_P,\n a: BigInt(486662),\n montgomeryBits: 255, // n is 253 bits\n nByteLength: 32,\n Gu: BigInt(9),\n powPminus2: (x) => {\n const P = ED25519_P;\n // x^(p-2) aka x^(2^255-21)\n const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n return mod(pow2(pow_p_5_8, _3n, P) * b2, P);\n },\n adjustScalarBytes,\n randomBytes,\n}))();\n/**\n * Converts ed25519 public key to x25519 public key. Uses formula:\n * * `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`\n * * `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`\n * @example\n * const someonesPub = ed25519.getPublicKey(ed25519.utils.randomPrivateKey());\n * const aPriv = x25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(aPriv, edwardsToMontgomeryPub(someonesPub))\n */\nexport function edwardsToMontgomeryPub(edwardsPub) {\n const { y } = ed25519.ExtendedPoint.fromHex(edwardsPub);\n const _1n = BigInt(1);\n return Fp.toBytes(Fp.create((_1n + y) * Fp.inv(_1n - y)));\n}\nexport const edwardsToMontgomery = edwardsToMontgomeryPub; // deprecated\n/**\n * Converts ed25519 secret key to x25519 secret key.\n * @example\n * const someonesPub = x25519.getPublicKey(x25519.utils.randomPrivateKey());\n * const aPriv = ed25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(edwardsToMontgomeryPriv(aPriv), someonesPub)\n */\nexport function edwardsToMontgomeryPriv(edwardsPriv) {\n const hashed = ed25519Defaults.hash(edwardsPriv.subarray(0, 32));\n return ed25519Defaults.adjustScalarBytes(hashed).subarray(0, 32);\n}\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\nconst ELL2_C1 = /* @__PURE__ */ (() => (Fp.ORDER + _3n) / _8n)(); // 1. c1 = (q + 3) / 8 # Integer arithmetic\nconst ELL2_C2 = /* @__PURE__ */ (() => Fp.pow(_2n, ELL2_C1))(); // 2. c2 = 2^c1\nconst ELL2_C3 = /* @__PURE__ */ (() => Fp.sqrt(Fp.neg(Fp.ONE)))(); // 3. c3 = sqrt(-1)\n// prettier-ignore\nfunction map_to_curve_elligator2_curve25519(u) {\n const ELL2_C4 = (Fp.ORDER - _5n) / _8n; // 4. c4 = (q - 5) / 8 # Integer arithmetic\n const ELL2_J = BigInt(486662);\n let tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1\n let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not\n let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)\n let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2\n let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3\n let gx1 = Fp.mul(tv1, ELL2_J); // 7. gx1 = J * tv1 # x1n + J * xd\n gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd\n gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2\n gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2\n tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4\n tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3\n tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3\n tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7\n let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)\n y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3\n tv2 = Fp.sqr(y11); // 19. tv2 = y11^2\n tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd\n let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1\n let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt\n let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd\n let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u\n y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2\n let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3\n let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n tv2 = Fp.sqr(y21); // 28. tv2 = y21^2\n tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd\n let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2\n let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt\n tv2 = Fp.sqr(y1); // 32. tv2 = y1^2\n tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd\n let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1\n let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2\n let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2\n let e4 = Fp.isOdd(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y\n y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)\n return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; // 39. return (xn, xd, y, 1)\n}\nconst ELL2_C1_EDWARDS = /* @__PURE__ */ (() => FpSqrtEven(Fp, Fp.neg(BigInt(486664))))(); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u) {\n const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) =\n // map_to_curve_elligator2_curve25519(u)\n let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd\n xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1\n let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM\n let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd\n let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd\n let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0\n xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)\n xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)\n yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)\n yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)\n const inv = Fp.invertBatch([xd, yd]); // batch division\n return { x: Fp.mul(xn, inv[0]), y: Fp.mul(yn, inv[1]) }; // 13. return (xn, xd, yn, yd)\n}\nconst htf = /* @__PURE__ */ (() => createHasher(ed25519.ExtendedPoint, (scalars) => map_to_curve_elligator2_edwards25519(scalars[0]), {\n DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha512,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\nfunction assertRstPoint(other) {\n if (!(other instanceof RistPoint))\n throw new Error('RistrettoPoint expected');\n}\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// √(ad - 1)\nconst SQRT_AD_MINUS_ONE = /* @__PURE__ */ BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\n// 1 / √(a-d)\nconst INVSQRT_A_MINUS_D = /* @__PURE__ */ BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\n// 1-d²\nconst ONE_MINUS_D_SQ = /* @__PURE__ */ BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\n// (d-1)²\nconst D_MINUS_ONE_SQ = /* @__PURE__ */ BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\n// Calculates 1/√(number)\nconst invertSqrt = (number) => uvRatio(_1n, number);\nconst MAX_255B = /* @__PURE__ */ BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nconst bytes255ToNumberLE = (bytes) => ed25519.CURVE.Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n// Computes Elligator map for Ristretto\n// https://ristretto.group/formulas/elligator.html\nfunction calcElligatorRistrettoMap(r0) {\n const { d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const r = mod(SQRT_M1 * r0 * r0); // 1\n const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n let c = BigInt(-1); // 3\n const D = mod((c - d * r) * mod(r + d)); // 4\n let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n let s_ = mod(s * r0); // 6\n if (!isNegativeLE(s_, P))\n s_ = mod(-s_);\n if (!Ns_D_is_sq)\n s = s_; // 7\n if (!Ns_D_is_sq)\n c = r; // 8\n const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n const s2 = s * s;\n const W0 = mod((s + s) * D); // 10\n const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n const W2 = mod(_1n - s2); // 12\n const W3 = mod(_1n + s2); // 13\n return new ed25519.ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\n/**\n * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,\n * but it should work in its own namespace: do not combine those two.\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-ristretto255-decaf448\n */\nclass RistPoint {\n // Private property to discourage combining ExtendedPoint + RistrettoPoint\n // Always use Ristretto encoding/decoding instead.\n constructor(ep) {\n this.ep = ep;\n }\n static fromAffine(ap) {\n return new RistPoint(ed25519.ExtendedPoint.fromAffine(ap));\n }\n /**\n * Takes uniform output of 64-byte hash function like sha512 and converts it to `RistrettoPoint`.\n * The hash-to-group operation applies Elligator twice and adds the results.\n * **Note:** this is one-way map, there is no conversion from point to hash.\n * https://ristretto.group/formulas/elligator.html\n * @param hex 64-byte output of a hash function\n */\n static hashToCurve(hex) {\n hex = ensureBytes('ristrettoHash', hex, 64);\n const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n const R1 = calcElligatorRistrettoMap(r1);\n const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n const R2 = calcElligatorRistrettoMap(r2);\n return new RistPoint(R1.add(R2));\n }\n /**\n * Converts ristretto-encoded string to ristretto point.\n * https://ristretto.group/formulas/decoding.html\n * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n */\n static fromHex(hex) {\n hex = ensureBytes('ristrettoHex', hex, 32);\n const { a, d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n const s = bytes255ToNumberLE(hex);\n // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n // 3. Check that s is non-negative, or else abort\n if (!equalBytes(numberToBytesLE(s, 32), hex) || isNegativeLE(s, P))\n throw new Error(emsg);\n const s2 = mod(s * s);\n const u1 = mod(_1n + a * s2); // 4 (a is -1)\n const u2 = mod(_1n - a * s2); // 5\n const u1_2 = mod(u1 * u1);\n const u2_2 = mod(u2 * u2);\n const v = mod(a * d * u1_2 - u2_2); // 6\n const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n const Dx = mod(I * u2); // 8\n const Dy = mod(I * Dx * v); // 9\n let x = mod((s + s) * Dx); // 10\n if (isNegativeLE(x, P))\n x = mod(-x); // 10\n const y = mod(u1 * Dy); // 11\n const t = mod(x * y); // 12\n if (!isValid || isNegativeLE(t, P) || y === _0n)\n throw new Error(emsg);\n return new RistPoint(new ed25519.ExtendedPoint(x, y, _1n, t));\n }\n /**\n * Encodes ristretto point to Uint8Array.\n * https://ristretto.group/formulas/encoding.html\n */\n toRawBytes() {\n let { ex: x, ey: y, ez: z, et: t } = this.ep;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const u1 = mod(mod(z + y) * mod(z - y)); // 1\n const u2 = mod(x * y); // 2\n // Square root always exists\n const u2sq = mod(u2 * u2);\n const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n const D1 = mod(invsqrt * u1); // 4\n const D2 = mod(invsqrt * u2); // 5\n const zInv = mod(D1 * D2 * t); // 6\n let D; // 7\n if (isNegativeLE(t * zInv, P)) {\n let _x = mod(y * SQRT_M1);\n let _y = mod(x * SQRT_M1);\n x = _x;\n y = _y;\n D = mod(D1 * INVSQRT_A_MINUS_D);\n }\n else {\n D = D2; // 8\n }\n if (isNegativeLE(x * zInv, P))\n y = mod(-y); // 9\n let s = mod((z - y) * D); // 10 (check footer's note, no sqrt(-a))\n if (isNegativeLE(s, P))\n s = mod(-s);\n return numberToBytesLE(s, 32); // 11\n }\n toHex() {\n return bytesToHex(this.toRawBytes());\n }\n toString() {\n return this.toHex();\n }\n // Compare one point to another.\n equals(other) {\n assertRstPoint(other);\n const { ex: X1, ey: Y1 } = this.ep;\n const { ex: X2, ey: Y2 } = other.ep;\n const mod = ed25519.CURVE.Fp.create;\n // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n const one = mod(X1 * Y2) === mod(Y1 * X2);\n const two = mod(Y1 * Y2) === mod(X1 * X2);\n return one || two;\n }\n add(other) {\n assertRstPoint(other);\n return new RistPoint(this.ep.add(other.ep));\n }\n subtract(other) {\n assertRstPoint(other);\n return new RistPoint(this.ep.subtract(other.ep));\n }\n multiply(scalar) {\n return new RistPoint(this.ep.multiply(scalar));\n }\n multiplyUnsafe(scalar) {\n return new RistPoint(this.ep.multiplyUnsafe(scalar));\n }\n double() {\n return new RistPoint(this.ep.double());\n }\n negate() {\n return new RistPoint(this.ep.negate());\n }\n}\nexport const RistrettoPoint = /* @__PURE__ */ (() => {\n if (!RistPoint.BASE)\n RistPoint.BASE = new RistPoint(ed25519.ExtendedPoint.BASE);\n if (!RistPoint.ZERO)\n RistPoint.ZERO = new RistPoint(ed25519.ExtendedPoint.ZERO);\n return RistPoint;\n})();\n// Hashing to ristretto255. https://www.rfc-editor.org/rfc/rfc9380#appendix-B\nexport const hashToRistretto255 = (msg, options) => {\n const d = options.DST;\n const DST = typeof d === 'string' ? utf8ToBytes(d) : d;\n const uniform_bytes = expand_message_xmd(msg, DST, 64, sha512);\n const P = RistPoint.hashToCurve(uniform_bytes);\n return P;\n};\nexport const hash_to_ristretto255 = hashToRistretto255; // legacy\n//# sourceMappingURL=ed25519.js.map","import { ed25519 as ed } from '@noble/curves/ed25519';\nconst PUBLIC_KEY_BYTE_LENGTH = 32;\nconst PRIVATE_KEY_BYTE_LENGTH = 64; // private key is actually 32 bytes but for historical reasons we concat private and public keys\nconst KEYS_BYTE_LENGTH = 32;\nexport { PUBLIC_KEY_BYTE_LENGTH as publicKeyLength };\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n // the actual private key (32 bytes)\n const privateKeyRaw = ed.utils.randomPrivateKey();\n const publicKey = ed.getPublicKey(privateKeyRaw);\n // concatenated the public key to the private key\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\n/**\n * Generate keypair from a 32 byte uint8array\n */\nexport function generateKeyFromSeed(seed) {\n if (seed.length !== KEYS_BYTE_LENGTH) {\n throw new TypeError('\"seed\" must be 32 bytes in length.');\n }\n else if (!(seed instanceof Uint8Array)) {\n throw new TypeError('\"seed\" must be a node.js Buffer, or Uint8Array.');\n }\n // based on node forges algorithm, the seed is used directly as private key\n const privateKeyRaw = seed;\n const publicKey = ed.getPublicKey(privateKeyRaw);\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\nexport function hashAndSign(privateKey, msg) {\n const privateKeyRaw = privateKey.subarray(0, KEYS_BYTE_LENGTH);\n return ed.sign(msg instanceof Uint8Array ? msg : msg.subarray(), privateKeyRaw);\n}\nexport function hashAndVerify(publicKey, sig, msg) {\n return ed.verify(sig, msg instanceof Uint8Array ? msg : msg.subarray(), publicKey);\n}\nfunction concatKeys(privateKeyRaw, publicKey) {\n const privateKey = new Uint8Array(PRIVATE_KEY_BYTE_LENGTH);\n for (let i = 0; i < KEYS_BYTE_LENGTH; i++) {\n privateKey[i] = privateKeyRaw[i];\n privateKey[KEYS_BYTE_LENGTH + i] = publicKey[i];\n }\n return privateKey;\n}\n//# sourceMappingURL=ed25519-browser.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","import { concat } from 'uint8arrays/concat';\nimport { fromString } from 'uint8arrays/from-string';\nimport webcrypto from '../webcrypto.js';\n// WebKit on Linux does not support deriving a key from an empty PBKDF2 key.\n// So, as a workaround, we provide the generated key as a constant. We test that\n// this generated key is accurate in test/workaround.spec.ts\n// Generated via:\n// await crypto.subtle.exportKey('jwk',\n// await crypto.subtle.deriveKey(\n// { name: 'PBKDF2', salt: new Uint8Array(16), iterations: 32767, hash: { name: 'SHA-256' } },\n// await crypto.subtle.importKey('raw', new Uint8Array(0), { name: 'PBKDF2' }, false, ['deriveKey']),\n// { name: 'AES-GCM', length: 128 }, true, ['encrypt', 'decrypt'])\n// )\nexport const derivedEmptyPasswordKey = { alg: 'A128GCM', ext: true, k: 'scm9jmO_4BJAgdwWGVulLg', key_ops: ['encrypt', 'decrypt'], kty: 'oct' };\n// Based off of code from https://github.com/luke-park/SecureCompatibleEncryptionExamples\nexport function create(opts) {\n const algorithm = opts?.algorithm ?? 'AES-GCM';\n let keyLength = opts?.keyLength ?? 16;\n const nonceLength = opts?.nonceLength ?? 12;\n const digest = opts?.digest ?? 'SHA-256';\n const saltLength = opts?.saltLength ?? 16;\n const iterations = opts?.iterations ?? 32767;\n const crypto = webcrypto.get();\n keyLength *= 8; // Browser crypto uses bits instead of bytes\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to encrypt the data.\n */\n async function encrypt(data, password) {\n const salt = crypto.getRandomValues(new Uint8Array(saltLength));\n const nonce = crypto.getRandomValues(new Uint8Array(nonceLength));\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n }\n }\n else {\n // Derive a key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n // Encrypt the string.\n const ciphertext = await crypto.subtle.encrypt(aesGcm, cryptoKey, data);\n return concat([salt, aesGcm.iv, new Uint8Array(ciphertext)]);\n }\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to decrypt the data. The options used to create\n * this decryption cipher must be the same as those used to create\n * the encryption cipher.\n */\n async function decrypt(data, password) {\n const salt = data.subarray(0, saltLength);\n const nonce = data.subarray(saltLength, saltLength + nonceLength);\n const ciphertext = data.subarray(saltLength + nonceLength);\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['decrypt']);\n }\n }\n else {\n // Derive the key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n // Decrypt the string.\n const plaintext = await crypto.subtle.decrypt(aesGcm, cryptoKey, ciphertext);\n return new Uint8Array(plaintext);\n }\n const cipher = {\n encrypt,\n decrypt\n };\n return cipher;\n}\n//# sourceMappingURL=aes-gcm.browser.js.map","import { base64 } from 'multiformats/bases/base64';\nimport * as ciphers from '../ciphers/aes-gcm.js';\n/**\n * Exports the given PrivateKey as a base64 encoded string.\n * The PrivateKey is encrypted via a password derived PBKDF2 key\n * leveraging the aes-gcm cipher algorithm.\n */\nexport async function exporter(privateKey, password) {\n const cipher = ciphers.create();\n const encryptedKey = await cipher.encrypt(privateKey, password);\n return base64.encode(encryptedKey);\n}\n//# sourceMappingURL=exporter.js.map","/* eslint-disable no-fallthrough */\nimport { allocUnsafe } from 'uint8arrays/alloc';\nconst N1 = Math.pow(2, 7);\nconst N2 = Math.pow(2, 14);\nconst N3 = Math.pow(2, 21);\nconst N4 = Math.pow(2, 28);\nconst N5 = Math.pow(2, 35);\nconst N6 = Math.pow(2, 42);\nconst N7 = Math.pow(2, 49);\n/** Most significant bit of a byte */\nconst MSB = 0x80;\n/** Rest of the bits in a byte */\nconst REST = 0x7f;\nexport function encodingLength(value) {\n if (value < N1) {\n return 1;\n }\n if (value < N2) {\n return 2;\n }\n if (value < N3) {\n return 3;\n }\n if (value < N4) {\n return 4;\n }\n if (value < N5) {\n return 5;\n }\n if (value < N6) {\n return 6;\n }\n if (value < N7) {\n return 7;\n }\n if (Number.MAX_SAFE_INTEGER != null && value > Number.MAX_SAFE_INTEGER) {\n throw new RangeError('Could not encode varint');\n }\n return 8;\n}\nexport function encodeUint8Array(value, buf, offset = 0) {\n switch (encodingLength(value)) {\n case 8: {\n buf[offset++] = (value & 0xFF) | MSB;\n value /= 128;\n }\n case 7: {\n buf[offset++] = (value & 0xFF) | MSB;\n value /= 128;\n }\n case 6: {\n buf[offset++] = (value & 0xFF) | MSB;\n value /= 128;\n }\n case 5: {\n buf[offset++] = (value & 0xFF) | MSB;\n value /= 128;\n }\n case 4: {\n buf[offset++] = (value & 0xFF) | MSB;\n value >>>= 7;\n }\n case 3: {\n buf[offset++] = (value & 0xFF) | MSB;\n value >>>= 7;\n }\n case 2: {\n buf[offset++] = (value & 0xFF) | MSB;\n value >>>= 7;\n }\n case 1: {\n buf[offset++] = (value & 0xFF);\n value >>>= 7;\n break;\n }\n default: throw new Error('unreachable');\n }\n return buf;\n}\nexport function encodeUint8ArrayList(value, buf, offset = 0) {\n switch (encodingLength(value)) {\n case 8: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value /= 128;\n }\n case 7: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value /= 128;\n }\n case 6: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value /= 128;\n }\n case 5: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value /= 128;\n }\n case 4: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value >>>= 7;\n }\n case 3: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value >>>= 7;\n }\n case 2: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value >>>= 7;\n }\n case 1: {\n buf.set(offset++, (value & 0xFF));\n value >>>= 7;\n break;\n }\n default: throw new Error('unreachable');\n }\n return buf;\n}\nexport function decodeUint8Array(buf, offset) {\n let b = buf[offset];\n let res = 0;\n res += b & REST;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 1];\n res += (b & REST) << 7;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 2];\n res += (b & REST) << 14;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 3];\n res += (b & REST) << 21;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 4];\n res += (b & REST) * N4;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 5];\n res += (b & REST) * N5;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 6];\n res += (b & REST) * N6;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 7];\n res += (b & REST) * N7;\n if (b < MSB) {\n return res;\n }\n throw new RangeError('Could not decode varint');\n}\nexport function decodeUint8ArrayList(buf, offset) {\n let b = buf.get(offset);\n let res = 0;\n res += b & REST;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 1);\n res += (b & REST) << 7;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 2);\n res += (b & REST) << 14;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 3);\n res += (b & REST) << 21;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 4);\n res += (b & REST) * N4;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 5);\n res += (b & REST) * N5;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 6);\n res += (b & REST) * N6;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 7);\n res += (b & REST) * N7;\n if (b < MSB) {\n return res;\n }\n throw new RangeError('Could not decode varint');\n}\nexport function encode(value, buf, offset = 0) {\n if (buf == null) {\n buf = allocUnsafe(encodingLength(value));\n }\n if (buf instanceof Uint8Array) {\n return encodeUint8Array(value, buf, offset);\n }\n else {\n return encodeUint8ArrayList(value, buf, offset);\n }\n}\nexport function decode(buf, offset = 0) {\n if (buf instanceof Uint8Array) {\n return decodeUint8Array(buf, offset);\n }\n else {\n return decodeUint8ArrayList(buf, offset);\n }\n}\n//# sourceMappingURL=index.js.map","const f32 = new Float32Array([-0]);\nconst f8b = new Uint8Array(f32.buffer);\n/**\n * Writes a 32 bit float to a buffer using little endian byte order\n */\nexport function writeFloatLE(val, buf, pos) {\n f32[0] = val;\n buf[pos] = f8b[0];\n buf[pos + 1] = f8b[1];\n buf[pos + 2] = f8b[2];\n buf[pos + 3] = f8b[3];\n}\n/**\n * Writes a 32 bit float to a buffer using big endian byte order\n */\nexport function writeFloatBE(val, buf, pos) {\n f32[0] = val;\n buf[pos] = f8b[3];\n buf[pos + 1] = f8b[2];\n buf[pos + 2] = f8b[1];\n buf[pos + 3] = f8b[0];\n}\n/**\n * Reads a 32 bit float from a buffer using little endian byte order\n */\nexport function readFloatLE(buf, pos) {\n f8b[0] = buf[pos];\n f8b[1] = buf[pos + 1];\n f8b[2] = buf[pos + 2];\n f8b[3] = buf[pos + 3];\n return f32[0];\n}\n/**\n * Reads a 32 bit float from a buffer using big endian byte order\n */\nexport function readFloatBE(buf, pos) {\n f8b[3] = buf[pos];\n f8b[2] = buf[pos + 1];\n f8b[1] = buf[pos + 2];\n f8b[0] = buf[pos + 3];\n return f32[0];\n}\nconst f64 = new Float64Array([-0]);\nconst d8b = new Uint8Array(f64.buffer);\n/**\n * Writes a 64 bit double to a buffer using little endian byte order\n */\nexport function writeDoubleLE(val, buf, pos) {\n f64[0] = val;\n buf[pos] = d8b[0];\n buf[pos + 1] = d8b[1];\n buf[pos + 2] = d8b[2];\n buf[pos + 3] = d8b[3];\n buf[pos + 4] = d8b[4];\n buf[pos + 5] = d8b[5];\n buf[pos + 6] = d8b[6];\n buf[pos + 7] = d8b[7];\n}\n/**\n * Writes a 64 bit double to a buffer using big endian byte order\n */\nexport function writeDoubleBE(val, buf, pos) {\n f64[0] = val;\n buf[pos] = d8b[7];\n buf[pos + 1] = d8b[6];\n buf[pos + 2] = d8b[5];\n buf[pos + 3] = d8b[4];\n buf[pos + 4] = d8b[3];\n buf[pos + 5] = d8b[2];\n buf[pos + 6] = d8b[1];\n buf[pos + 7] = d8b[0];\n}\n/**\n * Reads a 64 bit double from a buffer using little endian byte order\n */\nexport function readDoubleLE(buf, pos) {\n d8b[0] = buf[pos];\n d8b[1] = buf[pos + 1];\n d8b[2] = buf[pos + 2];\n d8b[3] = buf[pos + 3];\n d8b[4] = buf[pos + 4];\n d8b[5] = buf[pos + 5];\n d8b[6] = buf[pos + 6];\n d8b[7] = buf[pos + 7];\n return f64[0];\n}\n/**\n * Reads a 64 bit double from a buffer using big endian byte order\n */\nexport function readDoubleBE(buf, pos) {\n d8b[7] = buf[pos];\n d8b[6] = buf[pos + 1];\n d8b[5] = buf[pos + 2];\n d8b[4] = buf[pos + 3];\n d8b[3] = buf[pos + 4];\n d8b[2] = buf[pos + 5];\n d8b[1] = buf[pos + 6];\n d8b[0] = buf[pos + 7];\n return f64[0];\n}\n//# sourceMappingURL=float.js.map","// the largest BigInt we can safely downcast to a Number\nconst MAX_SAFE_NUMBER_INTEGER = BigInt(Number.MAX_SAFE_INTEGER);\nconst MIN_SAFE_NUMBER_INTEGER = BigInt(Number.MIN_SAFE_INTEGER);\n/**\n * Constructs new long bits.\n *\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @function Object() { [native code] }\n * @param {number} lo - Low 32 bits, unsigned\n * @param {number} hi - High 32 bits, unsigned\n */\nexport class LongBits {\n lo;\n hi;\n constructor(lo, hi) {\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n /**\n * Low bits\n */\n this.lo = lo | 0;\n /**\n * High bits\n */\n this.hi = hi | 0;\n }\n /**\n * Converts this long bits to a possibly unsafe JavaScript number\n */\n toNumber(unsigned = false) {\n if (!unsigned && (this.hi >>> 31) > 0) {\n const lo = ~this.lo + 1 >>> 0;\n let hi = ~this.hi >>> 0;\n if (lo === 0) {\n hi = hi + 1 >>> 0;\n }\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n }\n /**\n * Converts this long bits to a bigint\n */\n toBigInt(unsigned = false) {\n if (unsigned) {\n return BigInt(this.lo >>> 0) + (BigInt(this.hi >>> 0) << 32n);\n }\n if ((this.hi >>> 31) !== 0) {\n const lo = ~this.lo + 1 >>> 0;\n let hi = ~this.hi >>> 0;\n if (lo === 0) {\n hi = hi + 1 >>> 0;\n }\n return -(BigInt(lo) + (BigInt(hi) << 32n));\n }\n return BigInt(this.lo >>> 0) + (BigInt(this.hi >>> 0) << 32n);\n }\n /**\n * Converts this long bits to a string\n */\n toString(unsigned = false) {\n return this.toBigInt(unsigned).toString();\n }\n /**\n * Zig-zag encodes this long bits\n */\n zzEncode() {\n const mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = (this.lo << 1 ^ mask) >>> 0;\n return this;\n }\n /**\n * Zig-zag decodes this long bits\n */\n zzDecode() {\n const mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = (this.hi >>> 1 ^ mask) >>> 0;\n return this;\n }\n /**\n * Calculates the length of this longbits when encoded as a varint.\n */\n length() {\n const part0 = this.lo;\n const part1 = (this.lo >>> 28 | this.hi << 4) >>> 0;\n const part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n }\n /**\n * Constructs new long bits from the specified number\n */\n static fromBigInt(value) {\n if (value === 0n) {\n return zero;\n }\n if (value < MAX_SAFE_NUMBER_INTEGER && value > MIN_SAFE_NUMBER_INTEGER) {\n return this.fromNumber(Number(value));\n }\n const negative = value < 0n;\n if (negative) {\n value = -value;\n }\n let hi = value >> 32n;\n let lo = value - (hi << 32n);\n if (negative) {\n hi = ~hi | 0n;\n lo = ~lo | 0n;\n if (++lo > TWO_32) {\n lo = 0n;\n if (++hi > TWO_32) {\n hi = 0n;\n }\n }\n }\n return new LongBits(Number(lo), Number(hi));\n }\n /**\n * Constructs new long bits from the specified number\n */\n static fromNumber(value) {\n if (value === 0) {\n return zero;\n }\n const sign = value < 0;\n if (sign) {\n value = -value;\n }\n let lo = value >>> 0;\n let hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295) {\n hi = 0;\n }\n }\n }\n return new LongBits(lo, hi);\n }\n /**\n * Constructs new long bits from a number, long or string\n */\n static from(value) {\n if (typeof value === 'number') {\n return LongBits.fromNumber(value);\n }\n if (typeof value === 'bigint') {\n return LongBits.fromBigInt(value);\n }\n if (typeof value === 'string') {\n return LongBits.fromBigInt(BigInt(value));\n }\n return value.low != null || value.high != null ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n }\n}\nconst zero = new LongBits(0, 0);\nzero.toBigInt = function () { return 0n; };\nzero.zzEncode = zero.zzDecode = function () { return this; };\nzero.length = function () { return 1; };\nconst TWO_32 = 4294967296n;\n//# sourceMappingURL=longbits.js.map","/**\n * Calculates the UTF8 byte length of a string\n */\nexport function length(string) {\n let len = 0;\n let c = 0;\n for (let i = 0; i < string.length; ++i) {\n c = string.charCodeAt(i);\n if (c < 128) {\n len += 1;\n }\n else if (c < 2048) {\n len += 2;\n }\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\n ++i;\n len += 4;\n }\n else {\n len += 3;\n }\n }\n return len;\n}\n/**\n * Reads UTF8 bytes as a string\n */\nexport function read(buffer, start, end) {\n const len = end - start;\n if (len < 1) {\n return '';\n }\n let parts;\n const chunk = [];\n let i = 0; // char offset\n let t; // temporary\n while (start < end) {\n t = buffer[start++];\n if (t < 128) {\n chunk[i++] = t;\n }\n else if (t > 191 && t < 224) {\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\n }\n else if (t > 239 && t < 365) {\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\n chunk[i++] = 0xD800 + (t >> 10);\n chunk[i++] = 0xDC00 + (t & 1023);\n }\n else {\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\n }\n if (i > 8191) {\n (parts ?? (parts = [])).push(String.fromCharCode.apply(String, chunk));\n i = 0;\n }\n }\n if (parts != null) {\n if (i > 0) {\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\n }\n return parts.join('');\n }\n return String.fromCharCode.apply(String, chunk.slice(0, i));\n}\n/**\n * Writes a string as UTF8 bytes\n */\nexport function write(string, buffer, offset) {\n const start = offset;\n let c1; // character 1\n let c2; // character 2\n for (let i = 0; i < string.length; ++i) {\n c1 = string.charCodeAt(i);\n if (c1 < 128) {\n buffer[offset++] = c1;\n }\n else if (c1 < 2048) {\n buffer[offset++] = c1 >> 6 | 192;\n buffer[offset++] = c1 & 63 | 128;\n }\n else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n ++i;\n buffer[offset++] = c1 >> 18 | 240;\n buffer[offset++] = c1 >> 12 & 63 | 128;\n buffer[offset++] = c1 >> 6 & 63 | 128;\n buffer[offset++] = c1 & 63 | 128;\n }\n else {\n buffer[offset++] = c1 >> 12 | 224;\n buffer[offset++] = c1 >> 6 & 63 | 128;\n buffer[offset++] = c1 & 63 | 128;\n }\n }\n return offset - start;\n}\n//# sourceMappingURL=utf8.js.map","import { decodeUint8Array, encodingLength } from 'uint8-varint';\nimport { readFloatLE, readDoubleLE } from './float.js';\nimport { LongBits } from './longbits.js';\nimport * as utf8 from './utf8.js';\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(`index out of range: ${reader.pos} + ${writeLength ?? 1} > ${reader.len}`);\n}\nfunction readFixed32End(buf, end) {\n return (buf[end - 4] |\n buf[end - 3] << 8 |\n buf[end - 2] << 16 |\n buf[end - 1] << 24) >>> 0;\n}\n/**\n * Constructs a new reader instance using the specified buffer.\n */\nexport class Uint8ArrayReader {\n buf;\n pos;\n len;\n _slice = Uint8Array.prototype.subarray;\n constructor(buffer) {\n /**\n * Read buffer\n */\n this.buf = buffer;\n /**\n * Read buffer position\n */\n this.pos = 0;\n /**\n * Read buffer length\n */\n this.len = buffer.length;\n }\n /**\n * Reads a varint as an unsigned 32 bit value\n */\n uint32() {\n let value = 4294967295;\n value = (this.buf[this.pos] & 127) >>> 0;\n if (this.buf[this.pos++] < 128)\n return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0;\n if (this.buf[this.pos++] < 128)\n return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0;\n if (this.buf[this.pos++] < 128)\n return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0;\n if (this.buf[this.pos++] < 128)\n return value;\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n }\n /**\n * Reads a varint as a signed 32 bit value\n */\n int32() {\n return this.uint32() | 0;\n }\n /**\n * Reads a zig-zag encoded varint as a signed 32 bit value\n */\n sint32() {\n const value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n }\n /**\n * Reads a varint as a boolean\n */\n bool() {\n return this.uint32() !== 0;\n }\n /**\n * Reads fixed 32 bits as an unsigned 32 bit integer\n */\n fixed32() {\n if (this.pos + 4 > this.len) {\n throw indexOutOfRange(this, 4);\n }\n const res = readFixed32End(this.buf, this.pos += 4);\n return res;\n }\n /**\n * Reads fixed 32 bits as a signed 32 bit integer\n */\n sfixed32() {\n if (this.pos + 4 > this.len) {\n throw indexOutOfRange(this, 4);\n }\n const res = readFixed32End(this.buf, this.pos += 4) | 0;\n return res;\n }\n /**\n * Reads a float (32 bit) as a number\n */\n float() {\n if (this.pos + 4 > this.len) {\n throw indexOutOfRange(this, 4);\n }\n const value = readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n }\n /**\n * Reads a double (64 bit float) as a number\n */\n double() {\n /* istanbul ignore if */\n if (this.pos + 8 > this.len) {\n throw indexOutOfRange(this, 4);\n }\n const value = readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n }\n /**\n * Reads a sequence of bytes preceded by its length as a varint\n */\n bytes() {\n const length = this.uint32();\n const start = this.pos;\n const end = this.pos + length;\n /* istanbul ignore if */\n if (end > this.len) {\n throw indexOutOfRange(this, length);\n }\n this.pos += length;\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\n ? new Uint8Array(0)\n : this.buf.subarray(start, end);\n }\n /**\n * Reads a string preceded by its byte length as a varint\n */\n string() {\n const bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n }\n /**\n * Skips the specified number of bytes if specified, otherwise skips a varint\n */\n skip(length) {\n if (typeof length === 'number') {\n /* istanbul ignore if */\n if (this.pos + length > this.len) {\n throw indexOutOfRange(this, length);\n }\n this.pos += length;\n }\n else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len) {\n throw indexOutOfRange(this);\n }\n } while ((this.buf[this.pos++] & 128) !== 0);\n }\n return this;\n }\n /**\n * Skips the next element of the specified wire type\n */\n skipType(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n /* istanbul ignore next */\n default:\n throw Error(`invalid wire type ${wireType} at offset ${this.pos}`);\n }\n return this;\n }\n readLongVarint() {\n // tends to deopt with local vars for octet etc.\n const bits = new LongBits(0, 0);\n let i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128) {\n return bits;\n }\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128) {\n return bits;\n }\n i = 0;\n }\n else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len) {\n throw indexOutOfRange(this);\n }\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128) {\n return bits;\n }\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128) {\n return bits;\n }\n }\n }\n else {\n for (; i < 5; ++i) {\n if (this.pos >= this.len) {\n throw indexOutOfRange(this);\n }\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128) {\n return bits;\n }\n }\n }\n throw Error('invalid varint encoding');\n }\n readFixed64() {\n if (this.pos + 8 > this.len) {\n throw indexOutOfRange(this, 8);\n }\n const lo = readFixed32End(this.buf, this.pos += 4);\n const hi = readFixed32End(this.buf, this.pos += 4);\n return new LongBits(lo, hi);\n }\n /**\n * Reads a varint as a signed 64 bit value\n */\n int64() {\n return this.readLongVarint().toBigInt();\n }\n /**\n * Reads a varint as a signed 64 bit value returned as a possibly unsafe\n * JavaScript number\n */\n int64Number() {\n return this.readLongVarint().toNumber();\n }\n /**\n * Reads a varint as a signed 64 bit value returned as a string\n */\n int64String() {\n return this.readLongVarint().toString();\n }\n /**\n * Reads a varint as an unsigned 64 bit value\n */\n uint64() {\n return this.readLongVarint().toBigInt(true);\n }\n /**\n * Reads a varint as an unsigned 64 bit value returned as a possibly unsafe\n * JavaScript number\n */\n uint64Number() {\n const value = decodeUint8Array(this.buf, this.pos);\n this.pos += encodingLength(value);\n return value;\n }\n /**\n * Reads a varint as an unsigned 64 bit value returned as a string\n */\n uint64String() {\n return this.readLongVarint().toString(true);\n }\n /**\n * Reads a zig-zag encoded varint as a signed 64 bit value\n */\n sint64() {\n return this.readLongVarint().zzDecode().toBigInt();\n }\n /**\n * Reads a zig-zag encoded varint as a signed 64 bit value returned as a\n * possibly unsafe JavaScript number\n */\n sint64Number() {\n return this.readLongVarint().zzDecode().toNumber();\n }\n /**\n * Reads a zig-zag encoded varint as a signed 64 bit value returned as a\n * string\n */\n sint64String() {\n return this.readLongVarint().zzDecode().toString();\n }\n /**\n * Reads fixed 64 bits\n */\n fixed64() {\n return this.readFixed64().toBigInt();\n }\n /**\n * Reads fixed 64 bits returned as a possibly unsafe JavaScript number\n */\n fixed64Number() {\n return this.readFixed64().toNumber();\n }\n /**\n * Reads fixed 64 bits returned as a string\n */\n fixed64String() {\n return this.readFixed64().toString();\n }\n /**\n * Reads zig-zag encoded fixed 64 bits\n */\n sfixed64() {\n return this.readFixed64().toBigInt();\n }\n /**\n * Reads zig-zag encoded fixed 64 bits returned as a possibly unsafe\n * JavaScript number\n */\n sfixed64Number() {\n return this.readFixed64().toNumber();\n }\n /**\n * Reads zig-zag encoded fixed 64 bits returned as a string\n */\n sfixed64String() {\n return this.readFixed64().toString();\n }\n}\nexport function createReader(buf) {\n return new Uint8ArrayReader(buf instanceof Uint8Array ? buf : buf.subarray());\n}\n//# sourceMappingURL=reader.js.map","import { createReader } from './utils/reader.js';\nexport function decodeMessage(buf, codec, opts) {\n const reader = createReader(buf);\n return codec.decode(reader, undefined, opts);\n}\n//# sourceMappingURL=decode.js.map","import { allocUnsafe } from 'uint8arrays/alloc';\n/**\n * A general purpose buffer pool\n */\nexport default function pool(size) {\n const SIZE = size ?? 8192;\n const MAX = SIZE >>> 1;\n let slab;\n let offset = SIZE;\n return function poolAlloc(size) {\n if (size < 1 || size > MAX) {\n return allocUnsafe(size);\n }\n if (offset + size > SIZE) {\n slab = allocUnsafe(SIZE);\n offset = 0;\n }\n const buf = slab.subarray(offset, offset += size);\n if ((offset & 7) !== 0) {\n // align to 32 bit\n offset = (offset | 7) + 1;\n }\n return buf;\n };\n}\n//# sourceMappingURL=pool.js.map","import { encodeUint8Array, encodingLength } from 'uint8-varint';\nimport { allocUnsafe } from 'uint8arrays/alloc';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { writeFloatLE, writeDoubleLE } from './float.js';\nimport { LongBits } from './longbits.js';\nimport pool from './pool.js';\nimport * as utf8 from './utf8.js';\n/**\n * Constructs a new writer operation instance.\n *\n * @classdesc Scheduled writer operation\n */\nclass Op {\n /**\n * Function to call\n */\n fn;\n /**\n * Value byte length\n */\n len;\n /**\n * Next operation\n */\n next;\n /**\n * Value to write\n */\n val;\n constructor(fn, len, val) {\n this.fn = fn;\n this.len = len;\n this.next = undefined;\n this.val = val; // type varies\n }\n}\n/* istanbul ignore next */\nfunction noop() { } // eslint-disable-line no-empty-function\n/**\n * Constructs a new writer state instance\n */\nclass State {\n /**\n * Current head\n */\n head;\n /**\n * Current tail\n */\n tail;\n /**\n * Current buffer length\n */\n len;\n /**\n * Next state\n */\n next;\n constructor(writer) {\n this.head = writer.head;\n this.tail = writer.tail;\n this.len = writer.len;\n this.next = writer.states;\n }\n}\nconst bufferPool = pool();\n/**\n * Allocates a buffer of the specified size\n */\nfunction alloc(size) {\n if (globalThis.Buffer != null) {\n return allocUnsafe(size);\n }\n return bufferPool(size);\n}\n/**\n * When a value is written, the writer calculates its byte length and puts it into a linked\n * list of operations to perform when finish() is called. This both allows us to allocate\n * buffers of the exact required size and reduces the amount of work we have to do compared\n * to first calculating over objects and then encoding over objects. In our case, the encoding\n * part is just a linked list walk calling operations with already prepared values.\n */\nclass Uint8ArrayWriter {\n /**\n * Current length\n */\n len;\n /**\n * Operations head\n */\n head;\n /**\n * Operations tail\n */\n tail;\n /**\n * Linked forked states\n */\n states;\n constructor() {\n this.len = 0;\n this.head = new Op(noop, 0, 0);\n this.tail = this.head;\n this.states = null;\n }\n /**\n * Pushes a new operation to the queue\n */\n _push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n }\n /**\n * Writes an unsigned 32 bit value as a varint\n */\n uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp((value = value >>> 0) <\n 128\n ? 1\n : value < 16384\n ? 2\n : value < 2097152\n ? 3\n : value < 268435456\n ? 4\n : 5, value)).len;\n return this;\n }\n /**\n * Writes a signed 32 bit value as a varint`\n */\n int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n }\n /**\n * Writes a 32 bit value as a varint, zig-zag encoded\n */\n sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n }\n /**\n * Writes an unsigned 64 bit value as a varint\n */\n uint64(value) {\n const bits = LongBits.fromBigInt(value);\n return this._push(writeVarint64, bits.length(), bits);\n }\n /**\n * Writes an unsigned 64 bit value as a varint\n */\n uint64Number(value) {\n return this._push(encodeUint8Array, encodingLength(value), value);\n }\n /**\n * Writes an unsigned 64 bit value as a varint\n */\n uint64String(value) {\n return this.uint64(BigInt(value));\n }\n /**\n * Writes a signed 64 bit value as a varint\n */\n int64(value) {\n return this.uint64(value);\n }\n /**\n * Writes a signed 64 bit value as a varint\n */\n int64Number(value) {\n return this.uint64Number(value);\n }\n /**\n * Writes a signed 64 bit value as a varint\n */\n int64String(value) {\n return this.uint64String(value);\n }\n /**\n * Writes a signed 64 bit value as a varint, zig-zag encoded\n */\n sint64(value) {\n const bits = LongBits.fromBigInt(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n }\n /**\n * Writes a signed 64 bit value as a varint, zig-zag encoded\n */\n sint64Number(value) {\n const bits = LongBits.fromNumber(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n }\n /**\n * Writes a signed 64 bit value as a varint, zig-zag encoded\n */\n sint64String(value) {\n return this.sint64(BigInt(value));\n }\n /**\n * Writes a boolish value as a varint\n */\n bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n }\n /**\n * Writes an unsigned 32 bit value as fixed 32 bits\n */\n fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n }\n /**\n * Writes a signed 32 bit value as fixed 32 bits\n */\n sfixed32(value) {\n return this.fixed32(value);\n }\n /**\n * Writes an unsigned 64 bit value as fixed 64 bits\n */\n fixed64(value) {\n const bits = LongBits.fromBigInt(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n }\n /**\n * Writes an unsigned 64 bit value as fixed 64 bits\n */\n fixed64Number(value) {\n const bits = LongBits.fromNumber(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n }\n /**\n * Writes an unsigned 64 bit value as fixed 64 bits\n */\n fixed64String(value) {\n return this.fixed64(BigInt(value));\n }\n /**\n * Writes a signed 64 bit value as fixed 64 bits\n */\n sfixed64(value) {\n return this.fixed64(value);\n }\n /**\n * Writes a signed 64 bit value as fixed 64 bits\n */\n sfixed64Number(value) {\n return this.fixed64Number(value);\n }\n /**\n * Writes a signed 64 bit value as fixed 64 bits\n */\n sfixed64String(value) {\n return this.fixed64String(value);\n }\n /**\n * Writes a float (32 bit)\n */\n float(value) {\n return this._push(writeFloatLE, 4, value);\n }\n /**\n * Writes a double (64 bit float).\n *\n * @function\n * @param {number} value - Value to write\n * @returns {Writer} `this`\n */\n double(value) {\n return this._push(writeDoubleLE, 8, value);\n }\n /**\n * Writes a sequence of bytes\n */\n bytes(value) {\n const len = value.length >>> 0;\n if (len === 0) {\n return this._push(writeByte, 1, 0);\n }\n return this.uint32(len)._push(writeBytes, len, value);\n }\n /**\n * Writes a string\n */\n string(value) {\n const len = utf8.length(value);\n return len !== 0\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n }\n /**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n */\n fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n }\n /**\n * Resets this instance to the last state\n */\n reset() {\n if (this.states != null) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n }\n else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n }\n /**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n */\n ldelim() {\n const head = this.head;\n const tail = this.tail;\n const len = this.len;\n this.reset().uint32(len);\n if (len !== 0) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n }\n /**\n * Finishes the write operation\n */\n finish() {\n let head = this.head.next; // skip noop\n const buf = alloc(this.len);\n let pos = 0;\n while (head != null) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n }\n}\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n/**\n * Constructs a new varint writer operation instance.\n *\n * @classdesc Scheduled varint writer operation\n */\nclass VarintOp extends Op {\n next;\n constructor(len, val) {\n super(writeVarint32, len, val);\n this.next = undefined;\n }\n}\nfunction writeVarint64(val, buf, pos) {\n while (val.hi !== 0) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\nfunction writeFixed32(val, buf, pos) {\n buf[pos] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\nfunction writeBytes(val, buf, pos) {\n buf.set(val, pos);\n}\nif (globalThis.Buffer != null) {\n Uint8ArrayWriter.prototype.bytes = function (value) {\n const len = value.length >>> 0;\n this.uint32(len);\n if (len > 0) {\n this._push(writeBytesBuffer, len, value);\n }\n return this;\n };\n Uint8ArrayWriter.prototype.string = function (value) {\n const len = globalThis.Buffer.byteLength(value);\n this.uint32(len);\n if (len > 0) {\n this._push(writeStringBuffer, len, value);\n }\n return this;\n };\n}\nfunction writeBytesBuffer(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n}\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) {\n // plain js is faster for short strings (probably due to redundant assertions)\n utf8.write(val, buf, pos);\n // @ts-expect-error buf isn't a Uint8Array?\n }\n else if (buf.utf8Write != null) {\n // @ts-expect-error buf isn't a Uint8Array?\n buf.utf8Write(val, pos);\n }\n else {\n buf.set(uint8ArrayFromString(val), pos);\n }\n}\n/**\n * Creates a new writer\n */\nexport function createWriter() {\n return new Uint8ArrayWriter();\n}\n//# sourceMappingURL=writer.js.map","import { createWriter } from './utils/writer.js';\nexport function encodeMessage(message, codec) {\n const w = createWriter();\n codec.encode(message, w, {\n lengthDelimited: false\n });\n return w.finish();\n}\n//# sourceMappingURL=encode.js.map","// https://developers.google.com/protocol-buffers/docs/encoding#structure\nexport var CODEC_TYPES;\n(function (CODEC_TYPES) {\n CODEC_TYPES[CODEC_TYPES[\"VARINT\"] = 0] = \"VARINT\";\n CODEC_TYPES[CODEC_TYPES[\"BIT64\"] = 1] = \"BIT64\";\n CODEC_TYPES[CODEC_TYPES[\"LENGTH_DELIMITED\"] = 2] = \"LENGTH_DELIMITED\";\n CODEC_TYPES[CODEC_TYPES[\"START_GROUP\"] = 3] = \"START_GROUP\";\n CODEC_TYPES[CODEC_TYPES[\"END_GROUP\"] = 4] = \"END_GROUP\";\n CODEC_TYPES[CODEC_TYPES[\"BIT32\"] = 5] = \"BIT32\";\n})(CODEC_TYPES || (CODEC_TYPES = {}));\nexport function createCodec(name, type, encode, decode) {\n return {\n name,\n type,\n encode,\n decode\n };\n}\n//# sourceMappingURL=codec.js.map","import { createCodec, CODEC_TYPES } from '../codec.js';\nexport function enumeration(v) {\n function findValue(val) {\n // Use the reverse mapping to look up the enum key for the stored value\n // https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings\n if (v[val.toString()] == null) {\n throw new Error('Invalid enum value');\n }\n return v[val];\n }\n const encode = function enumEncode(val, writer) {\n const enumValue = findValue(val);\n writer.int32(enumValue);\n };\n const decode = function enumDecode(reader) {\n const val = reader.int32();\n return findValue(val);\n };\n // @ts-expect-error yeah yeah\n return createCodec('enum', CODEC_TYPES.VARINT, encode, decode);\n}\n//# sourceMappingURL=enum.js.map","import { createCodec, CODEC_TYPES } from '../codec.js';\nexport function message(encode, decode) {\n return createCodec('message', CODEC_TYPES.LENGTH_DELIMITED, encode, decode);\n}\n//# sourceMappingURL=message.js.map","/**\n * @packageDocumentation\n *\n * This module contains serialization/deserialization code used when encoding/decoding protobufs.\n *\n * It should be declared as a dependency of your project:\n *\n * ```console\n * npm i protons-runtime\n * ```\n */\nexport { decodeMessage } from './decode.js';\nexport { encodeMessage } from './encode.js';\nexport { enumeration } from './codecs/enum.js';\nexport { message } from './codecs/message.js';\nexport { createReader as reader } from './utils/reader.js';\nexport { createWriter as writer } from './utils/writer.js';\n/**\n * This will be removed in a future release\n *\n * @deprecated\n */\nexport class CodeError extends Error {\n code;\n constructor(message, code) {\n super(message);\n this.code = code;\n }\n}\n/**\n * Thrown when a repeated field has too many elements\n */\nexport class MaxLengthError extends Error {\n /**\n * This will be removed in a future release\n *\n * @deprecated use the `.name` property instead\n */\n code = 'ERR_MAX_LENGTH';\n name = 'MaxLengthError';\n}\n/**\n * Thrown when a map has too many elements\n */\nexport class MaxSizeError extends Error {\n /**\n * This will be removed in a future release\n *\n * @deprecated use the `.name` property instead\n */\n code = 'ERR_MAX_SIZE';\n name = 'MaxSizeError';\n}\nexport class ParseError extends Error {\n /**\n * This will be removed in a future release\n *\n * @deprecated use the `.name` property instead\n */\n code = 'ERR_PARSE_ERROR';\n name = 'ParseError';\n}\nexport class NoMessagesFoundError extends Error {\n /**\n * This will be removed in a future release\n *\n * @deprecated use the `.name` property instead\n */\n code = 'ERR_NO_MESSAGES_FOUND';\n name = 'NoMessagesFoundError';\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var KeyType;\n(function (KeyType) {\n KeyType[\"RSA\"] = \"RSA\";\n KeyType[\"Ed25519\"] = \"Ed25519\";\n KeyType[\"Secp256k1\"] = \"Secp256k1\";\n})(KeyType || (KeyType = {}));\nvar __KeyTypeValues;\n(function (__KeyTypeValues) {\n __KeyTypeValues[__KeyTypeValues[\"RSA\"] = 0] = \"RSA\";\n __KeyTypeValues[__KeyTypeValues[\"Ed25519\"] = 1] = \"Ed25519\";\n __KeyTypeValues[__KeyTypeValues[\"Secp256k1\"] = 2] = \"Secp256k1\";\n})(__KeyTypeValues || (__KeyTypeValues = {}));\n(function (KeyType) {\n KeyType.codec = () => {\n return enumeration(__KeyTypeValues);\n };\n})(KeyType || (KeyType = {}));\nexport var PublicKey;\n(function (PublicKey) {\n let _codec;\n PublicKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PublicKey.encode = (obj) => {\n return encodeMessage(obj, PublicKey.codec());\n };\n PublicKey.decode = (buf) => {\n return decodeMessage(buf, PublicKey.codec());\n };\n})(PublicKey || (PublicKey = {}));\nexport var PrivateKey;\n(function (PrivateKey) {\n let _codec;\n PrivateKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PrivateKey.encode = (obj) => {\n return encodeMessage(obj, PrivateKey.codec());\n };\n PrivateKey.decode = (buf) => {\n return decodeMessage(buf, PrivateKey.codec());\n };\n})(PrivateKey || (PrivateKey = {}));\n//# sourceMappingURL=keys.js.map","import { CodeError } from '@libp2p/interface';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { isPromise } from '../util.js';\nimport * as crypto from './ed25519.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nexport class Ed25519PublicKey {\n _key;\n constructor(key) {\n this._key = ensureKey(key, crypto.publicKeyLength);\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class Ed25519PrivateKey {\n _key;\n _publicKey;\n // key - 64 byte Uint8Array containing private key\n // publicKey - 32 byte Uint8Array containing public key\n constructor(key, publicKey) {\n this._key = ensureKey(key, crypto.privateKeyLength);\n this._publicKey = ensureKey(publicKey, crypto.publicKeyLength);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Ed25519PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the identity multihash containing its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n *\n * @returns {Promise}\n */\n async id() {\n const encoding = identity.digest(this.public.bytes);\n return base58btc.encode(encoding.bytes).substring(1);\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalEd25519PrivateKey(bytes) {\n // Try the old, redundant public key version\n if (bytes.length > crypto.privateKeyLength) {\n bytes = ensureKey(bytes, crypto.privateKeyLength + crypto.publicKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.privateKeyLength, bytes.length);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n }\n bytes = ensureKey(bytes, crypto.privateKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.publicKeyLength);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n}\nexport function unmarshalEd25519PublicKey(bytes) {\n bytes = ensureKey(bytes, crypto.publicKeyLength);\n return new Ed25519PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const { privateKey, publicKey } = crypto.generateKey();\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nexport async function generateKeyPairFromSeed(seed) {\n const { privateKey, publicKey } = crypto.generateKeyFromSeed(seed);\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nfunction ensureKey(key, length) {\n key = Uint8Array.from(key ?? []);\n if (key.length !== length) {\n throw new CodeError(`Key must be a Uint8Array of length ${length}, got ${key.length}`, 'ERR_INVALID_KEY_TYPE');\n }\n return key;\n}\n//# sourceMappingURL=ed25519-class.js.map","import { CodeError } from '@libp2p/interface';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { base64urlToBuffer } from '../util.js';\nimport webcrypto from '../webcrypto.js';\nconst bits = {\n 'P-256': 256,\n 'P-384': 384,\n 'P-521': 521\n};\nconst curveTypes = Object.keys(bits);\nconst names = curveTypes.join(' / ');\nexport async function generateEphmeralKeyPair(curve) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'ECDH',\n namedCurve: curve\n }, true, ['deriveBits']);\n // forcePrivate is used for testing only\n const genSharedKey = async (theirPub, forcePrivate) => {\n let privateKey;\n if (forcePrivate != null) {\n privateKey = await webcrypto.get().subtle.importKey('jwk', unmarshalPrivateKey(curve, forcePrivate), {\n name: 'ECDH',\n namedCurve: curve\n }, false, ['deriveBits']);\n }\n else {\n privateKey = pair.privateKey;\n }\n const key = await webcrypto.get().subtle.importKey('jwk', unmarshalPublicKey(curve, theirPub), {\n name: 'ECDH',\n namedCurve: curve\n }, false, []);\n const buffer = await webcrypto.get().subtle.deriveBits({\n name: 'ECDH',\n // @ts-expect-error namedCurve is missing from the types\n namedCurve: curve,\n public: key\n }, privateKey, bits[curve]);\n return new Uint8Array(buffer, 0, buffer.byteLength);\n };\n const publicKey = await webcrypto.get().subtle.exportKey('jwk', pair.publicKey);\n const ecdhKey = {\n key: marshalPublicKey(publicKey),\n genSharedKey\n };\n return ecdhKey;\n}\nconst curveLengths = {\n 'P-256': 32,\n 'P-384': 48,\n 'P-521': 66\n};\n// Marshal converts a jwk encoded ECDH public key into the\n// form specified in section 4.3.6 of ANSI X9.62. (This is the format\n// go-ipfs uses)\nfunction marshalPublicKey(jwk) {\n if (jwk.crv == null || jwk.x == null || jwk.y == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n if (jwk.crv !== 'P-256' && jwk.crv !== 'P-384' && jwk.crv !== 'P-521') {\n throw new CodeError(`Unknown curve: ${jwk.crv}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[jwk.crv];\n return uint8ArrayConcat([\n Uint8Array.from([4]), // uncompressed point\n base64urlToBuffer(jwk.x, byteLen),\n base64urlToBuffer(jwk.y, byteLen)\n ], 1 + byteLen * 2);\n}\n// Unmarshal converts a point, serialized by Marshal, into an jwk encoded key\nfunction unmarshalPublicKey(curve, key) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[curve];\n if (!uint8ArrayEquals(key.subarray(0, 1), Uint8Array.from([4]))) {\n throw new CodeError('Cannot unmarshal public key - invalid key format', 'ERR_INVALID_KEY_FORMAT');\n }\n return {\n kty: 'EC',\n crv: curve,\n x: uint8ArrayToString(key.subarray(1, byteLen + 1), 'base64url'),\n y: uint8ArrayToString(key.subarray(1 + byteLen), 'base64url'),\n ext: true\n };\n}\nconst unmarshalPrivateKey = (curve, key) => ({\n ...unmarshalPublicKey(curve, key.public),\n d: uint8ArrayToString(key.private, 'base64url')\n});\n//# sourceMappingURL=ecdh-browser.js.map","/**\n * Secure Hash Algorithm with a 1024-bit block size implementation.\n *\n * This includes: SHA-512, SHA-384, SHA-512/224, and SHA-512/256. For\n * SHA-256 (block size 512 bits), see sha256.js.\n *\n * See FIPS 180-4 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha512 = module.exports = forge.sha512 = forge.sha512 || {};\n\n// SHA-512\nforge.md.sha512 = forge.md.algorithms.sha512 = sha512;\n\n// SHA-384\nvar sha384 = forge.sha384 = forge.sha512.sha384 = forge.sha512.sha384 || {};\nsha384.create = function() {\n return sha512.create('SHA-384');\n};\nforge.md.sha384 = forge.md.algorithms.sha384 = sha384;\n\n// SHA-512/256\nforge.sha512.sha256 = forge.sha512.sha256 || {\n create: function() {\n return sha512.create('SHA-512/256');\n }\n};\nforge.md['sha512/256'] = forge.md.algorithms['sha512/256'] =\n forge.sha512.sha256;\n\n// SHA-512/224\nforge.sha512.sha224 = forge.sha512.sha224 || {\n create: function() {\n return sha512.create('SHA-512/224');\n }\n};\nforge.md['sha512/224'] = forge.md.algorithms['sha512/224'] =\n forge.sha512.sha224;\n\n/**\n * Creates a SHA-2 message digest object.\n *\n * @param algorithm the algorithm to use (SHA-512, SHA-384, SHA-512/224,\n * SHA-512/256).\n *\n * @return a message digest object.\n */\nsha512.create = function(algorithm) {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n if(typeof algorithm === 'undefined') {\n algorithm = 'SHA-512';\n }\n\n if(!(algorithm in _states)) {\n throw new Error('Invalid SHA-512 algorithm: ' + algorithm);\n }\n\n // SHA-512 state contains eight 64-bit integers (each as two 32-bit ints)\n var _state = _states[algorithm];\n var _h = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for 64-bit word storage\n var _w = new Array(80);\n for(var wi = 0; wi < 80; ++wi) {\n _w[wi] = new Array(2);\n }\n\n // determine digest length by algorithm name (default)\n var digestLength = 64;\n switch(algorithm) {\n case 'SHA-384':\n digestLength = 48;\n break;\n case 'SHA-512/256':\n digestLength = 32;\n break;\n case 'SHA-512/224':\n digestLength = 28;\n break;\n }\n\n // message digest object\n var md = {\n // SHA-512 => sha512\n algorithm: algorithm.replace('-', '').toLowerCase(),\n blockLength: 128,\n digestLength: digestLength,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 16\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength128 for backwards-compatibility)\n md.fullMessageLength = md.messageLength128 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _h = new Array(_state.length);\n for(var i = 0; i < _state.length; ++i) {\n _h[i] = _state[i].slice(0);\n }\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_h, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-512 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 896 mod 1024. In other words,\n the data to be digested must be a multiple of 1024 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 16 bytes (128\n bits), that means that the last segment of the data must have 112 bytes\n (896 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 896 mod 1024 because\n 1024 - 128 = 896.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 896 mod 1024, then 1024 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var h = new Array(_h.length);\n for(var i = 0; i < _h.length; ++i) {\n h[i] = _h[i].slice(0);\n }\n _update(h, _w, finalBlock);\n var rval = forge.util.createBuffer();\n var hlen;\n if(algorithm === 'SHA-512') {\n hlen = h.length;\n } else if(algorithm === 'SHA-384') {\n hlen = h.length - 2;\n } else {\n hlen = h.length - 4;\n }\n for(var i = 0; i < hlen; ++i) {\n rval.putInt32(h[i][0]);\n if(i !== hlen - 1 || algorithm !== 'SHA-512/224') {\n rval.putInt32(h[i][1]);\n }\n }\n return rval;\n };\n\n return md;\n};\n\n// sha-512 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n// table of constants\nvar _k = null;\n\n// initial hash states\nvar _states = null;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 128);\n\n // create K table for SHA-512\n _k = [\n [0x428a2f98, 0xd728ae22], [0x71374491, 0x23ef65cd],\n [0xb5c0fbcf, 0xec4d3b2f], [0xe9b5dba5, 0x8189dbbc],\n [0x3956c25b, 0xf348b538], [0x59f111f1, 0xb605d019],\n [0x923f82a4, 0xaf194f9b], [0xab1c5ed5, 0xda6d8118],\n [0xd807aa98, 0xa3030242], [0x12835b01, 0x45706fbe],\n [0x243185be, 0x4ee4b28c], [0x550c7dc3, 0xd5ffb4e2],\n [0x72be5d74, 0xf27b896f], [0x80deb1fe, 0x3b1696b1],\n [0x9bdc06a7, 0x25c71235], [0xc19bf174, 0xcf692694],\n [0xe49b69c1, 0x9ef14ad2], [0xefbe4786, 0x384f25e3],\n [0x0fc19dc6, 0x8b8cd5b5], [0x240ca1cc, 0x77ac9c65],\n [0x2de92c6f, 0x592b0275], [0x4a7484aa, 0x6ea6e483],\n [0x5cb0a9dc, 0xbd41fbd4], [0x76f988da, 0x831153b5],\n [0x983e5152, 0xee66dfab], [0xa831c66d, 0x2db43210],\n [0xb00327c8, 0x98fb213f], [0xbf597fc7, 0xbeef0ee4],\n [0xc6e00bf3, 0x3da88fc2], [0xd5a79147, 0x930aa725],\n [0x06ca6351, 0xe003826f], [0x14292967, 0x0a0e6e70],\n [0x27b70a85, 0x46d22ffc], [0x2e1b2138, 0x5c26c926],\n [0x4d2c6dfc, 0x5ac42aed], [0x53380d13, 0x9d95b3df],\n [0x650a7354, 0x8baf63de], [0x766a0abb, 0x3c77b2a8],\n [0x81c2c92e, 0x47edaee6], [0x92722c85, 0x1482353b],\n [0xa2bfe8a1, 0x4cf10364], [0xa81a664b, 0xbc423001],\n [0xc24b8b70, 0xd0f89791], [0xc76c51a3, 0x0654be30],\n [0xd192e819, 0xd6ef5218], [0xd6990624, 0x5565a910],\n [0xf40e3585, 0x5771202a], [0x106aa070, 0x32bbd1b8],\n [0x19a4c116, 0xb8d2d0c8], [0x1e376c08, 0x5141ab53],\n [0x2748774c, 0xdf8eeb99], [0x34b0bcb5, 0xe19b48a8],\n [0x391c0cb3, 0xc5c95a63], [0x4ed8aa4a, 0xe3418acb],\n [0x5b9cca4f, 0x7763e373], [0x682e6ff3, 0xd6b2b8a3],\n [0x748f82ee, 0x5defb2fc], [0x78a5636f, 0x43172f60],\n [0x84c87814, 0xa1f0ab72], [0x8cc70208, 0x1a6439ec],\n [0x90befffa, 0x23631e28], [0xa4506ceb, 0xde82bde9],\n [0xbef9a3f7, 0xb2c67915], [0xc67178f2, 0xe372532b],\n [0xca273ece, 0xea26619c], [0xd186b8c7, 0x21c0c207],\n [0xeada7dd6, 0xcde0eb1e], [0xf57d4f7f, 0xee6ed178],\n [0x06f067aa, 0x72176fba], [0x0a637dc5, 0xa2c898a6],\n [0x113f9804, 0xbef90dae], [0x1b710b35, 0x131c471b],\n [0x28db77f5, 0x23047d84], [0x32caab7b, 0x40c72493],\n [0x3c9ebe0a, 0x15c9bebc], [0x431d67c4, 0x9c100d4c],\n [0x4cc5d4be, 0xcb3e42b6], [0x597f299c, 0xfc657e2a],\n [0x5fcb6fab, 0x3ad6faec], [0x6c44198c, 0x4a475817]\n ];\n\n // initial hash states\n _states = {};\n _states['SHA-512'] = [\n [0x6a09e667, 0xf3bcc908],\n [0xbb67ae85, 0x84caa73b],\n [0x3c6ef372, 0xfe94f82b],\n [0xa54ff53a, 0x5f1d36f1],\n [0x510e527f, 0xade682d1],\n [0x9b05688c, 0x2b3e6c1f],\n [0x1f83d9ab, 0xfb41bd6b],\n [0x5be0cd19, 0x137e2179]\n ];\n _states['SHA-384'] = [\n [0xcbbb9d5d, 0xc1059ed8],\n [0x629a292a, 0x367cd507],\n [0x9159015a, 0x3070dd17],\n [0x152fecd8, 0xf70e5939],\n [0x67332667, 0xffc00b31],\n [0x8eb44a87, 0x68581511],\n [0xdb0c2e0d, 0x64f98fa7],\n [0x47b5481d, 0xbefa4fa4]\n ];\n _states['SHA-512/256'] = [\n [0x22312194, 0xFC2BF72C],\n [0x9F555FA3, 0xC84C64C2],\n [0x2393B86B, 0x6F53B151],\n [0x96387719, 0x5940EABD],\n [0x96283EE2, 0xA88EFFE3],\n [0xBE5E1E25, 0x53863992],\n [0x2B0199FC, 0x2C85B8AA],\n [0x0EB72DDC, 0x81C52CA2]\n ];\n _states['SHA-512/224'] = [\n [0x8C3D37C8, 0x19544DA2],\n [0x73E19966, 0x89DCD4D6],\n [0x1DFAB7AE, 0x32FF9C82],\n [0x679DD514, 0x582F9FCF],\n [0x0F6D2B69, 0x7BD44DA8],\n [0x77E36F73, 0x04C48942],\n [0x3F9D85A8, 0x6A1D36C8],\n [0x1112E6AD, 0x91D692A1]\n ];\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-512 state with the given byte buffer.\n *\n * @param s the SHA-512 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (128 byte) chunks\n var t1_hi, t1_lo;\n var t2_hi, t2_lo;\n var s0_hi, s0_lo;\n var s1_hi, s1_lo;\n var ch_hi, ch_lo;\n var maj_hi, maj_lo;\n var a_hi, a_lo;\n var b_hi, b_lo;\n var c_hi, c_lo;\n var d_hi, d_lo;\n var e_hi, e_lo;\n var f_hi, f_lo;\n var g_hi, g_lo;\n var h_hi, h_lo;\n var i, hi, lo, w2, w7, w15, w16;\n var len = bytes.length();\n while(len >= 128) {\n // the w array will be populated with sixteen 64-bit big-endian words\n // and then extended into 64 64-bit words according to SHA-512\n for(i = 0; i < 16; ++i) {\n w[i][0] = bytes.getInt32() >>> 0;\n w[i][1] = bytes.getInt32() >>> 0;\n }\n for(; i < 80; ++i) {\n // for word 2 words ago: ROTR 19(x) ^ ROTR 61(x) ^ SHR 6(x)\n w2 = w[i - 2];\n hi = w2[0];\n lo = w2[1];\n\n // high bits\n t1_hi = (\n ((hi >>> 19) | (lo << 13)) ^ // ROTR 19\n ((lo >>> 29) | (hi << 3)) ^ // ROTR 61/(swap + ROTR 29)\n (hi >>> 6)) >>> 0; // SHR 6\n // low bits\n t1_lo = (\n ((hi << 13) | (lo >>> 19)) ^ // ROTR 19\n ((lo << 3) | (hi >>> 29)) ^ // ROTR 61/(swap + ROTR 29)\n ((hi << 26) | (lo >>> 6))) >>> 0; // SHR 6\n\n // for word 15 words ago: ROTR 1(x) ^ ROTR 8(x) ^ SHR 7(x)\n w15 = w[i - 15];\n hi = w15[0];\n lo = w15[1];\n\n // high bits\n t2_hi = (\n ((hi >>> 1) | (lo << 31)) ^ // ROTR 1\n ((hi >>> 8) | (lo << 24)) ^ // ROTR 8\n (hi >>> 7)) >>> 0; // SHR 7\n // low bits\n t2_lo = (\n ((hi << 31) | (lo >>> 1)) ^ // ROTR 1\n ((hi << 24) | (lo >>> 8)) ^ // ROTR 8\n ((hi << 25) | (lo >>> 7))) >>> 0; // SHR 7\n\n // sum(t1, word 7 ago, t2, word 16 ago) modulo 2^64 (carry lo overflow)\n w7 = w[i - 7];\n w16 = w[i - 16];\n lo = (t1_lo + w7[1] + t2_lo + w16[1]);\n w[i][0] = (t1_hi + w7[0] + t2_hi + w16[0] +\n ((lo / 0x100000000) >>> 0)) >>> 0;\n w[i][1] = lo >>> 0;\n }\n\n // initialize hash value for this chunk\n a_hi = s[0][0];\n a_lo = s[0][1];\n b_hi = s[1][0];\n b_lo = s[1][1];\n c_hi = s[2][0];\n c_lo = s[2][1];\n d_hi = s[3][0];\n d_lo = s[3][1];\n e_hi = s[4][0];\n e_lo = s[4][1];\n f_hi = s[5][0];\n f_lo = s[5][1];\n g_hi = s[6][0];\n g_lo = s[6][1];\n h_hi = s[7][0];\n h_lo = s[7][1];\n\n // round function\n for(i = 0; i < 80; ++i) {\n // Sum1(e) = ROTR 14(e) ^ ROTR 18(e) ^ ROTR 41(e)\n s1_hi = (\n ((e_hi >>> 14) | (e_lo << 18)) ^ // ROTR 14\n ((e_hi >>> 18) | (e_lo << 14)) ^ // ROTR 18\n ((e_lo >>> 9) | (e_hi << 23))) >>> 0; // ROTR 41/(swap + ROTR 9)\n s1_lo = (\n ((e_hi << 18) | (e_lo >>> 14)) ^ // ROTR 14\n ((e_hi << 14) | (e_lo >>> 18)) ^ // ROTR 18\n ((e_lo << 23) | (e_hi >>> 9))) >>> 0; // ROTR 41/(swap + ROTR 9)\n\n // Ch(e, f, g) (optimized the same way as SHA-1)\n ch_hi = (g_hi ^ (e_hi & (f_hi ^ g_hi))) >>> 0;\n ch_lo = (g_lo ^ (e_lo & (f_lo ^ g_lo))) >>> 0;\n\n // Sum0(a) = ROTR 28(a) ^ ROTR 34(a) ^ ROTR 39(a)\n s0_hi = (\n ((a_hi >>> 28) | (a_lo << 4)) ^ // ROTR 28\n ((a_lo >>> 2) | (a_hi << 30)) ^ // ROTR 34/(swap + ROTR 2)\n ((a_lo >>> 7) | (a_hi << 25))) >>> 0; // ROTR 39/(swap + ROTR 7)\n s0_lo = (\n ((a_hi << 4) | (a_lo >>> 28)) ^ // ROTR 28\n ((a_lo << 30) | (a_hi >>> 2)) ^ // ROTR 34/(swap + ROTR 2)\n ((a_lo << 25) | (a_hi >>> 7))) >>> 0; // ROTR 39/(swap + ROTR 7)\n\n // Maj(a, b, c) (optimized the same way as SHA-1)\n maj_hi = ((a_hi & b_hi) | (c_hi & (a_hi ^ b_hi))) >>> 0;\n maj_lo = ((a_lo & b_lo) | (c_lo & (a_lo ^ b_lo))) >>> 0;\n\n // main algorithm\n // t1 = (h + s1 + ch + _k[i] + _w[i]) modulo 2^64 (carry lo overflow)\n lo = (h_lo + s1_lo + ch_lo + _k[i][1] + w[i][1]);\n t1_hi = (h_hi + s1_hi + ch_hi + _k[i][0] + w[i][0] +\n ((lo / 0x100000000) >>> 0)) >>> 0;\n t1_lo = lo >>> 0;\n\n // t2 = s0 + maj modulo 2^64 (carry lo overflow)\n lo = s0_lo + maj_lo;\n t2_hi = (s0_hi + maj_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n t2_lo = lo >>> 0;\n\n h_hi = g_hi;\n h_lo = g_lo;\n\n g_hi = f_hi;\n g_lo = f_lo;\n\n f_hi = e_hi;\n f_lo = e_lo;\n\n // e = (d + t1) modulo 2^64 (carry lo overflow)\n lo = d_lo + t1_lo;\n e_hi = (d_hi + t1_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n e_lo = lo >>> 0;\n\n d_hi = c_hi;\n d_lo = c_lo;\n\n c_hi = b_hi;\n c_lo = b_lo;\n\n b_hi = a_hi;\n b_lo = a_lo;\n\n // a = (t1 + t2) modulo 2^64 (carry lo overflow)\n lo = t1_lo + t2_lo;\n a_hi = (t1_hi + t2_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n a_lo = lo >>> 0;\n }\n\n // update hash state (additional modulo 2^64)\n lo = s[0][1] + a_lo;\n s[0][0] = (s[0][0] + a_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[0][1] = lo >>> 0;\n\n lo = s[1][1] + b_lo;\n s[1][0] = (s[1][0] + b_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[1][1] = lo >>> 0;\n\n lo = s[2][1] + c_lo;\n s[2][0] = (s[2][0] + c_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[2][1] = lo >>> 0;\n\n lo = s[3][1] + d_lo;\n s[3][0] = (s[3][0] + d_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[3][1] = lo >>> 0;\n\n lo = s[4][1] + e_lo;\n s[4][0] = (s[4][0] + e_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[4][1] = lo >>> 0;\n\n lo = s[5][1] + f_lo;\n s[5][0] = (s[5][0] + f_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[5][1] = lo >>> 0;\n\n lo = s[6][1] + g_lo;\n s[6][0] = (s[6][0] + g_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[6][1] = lo >>> 0;\n\n lo = s[7][1] + h_lo;\n s[7][0] = (s[7][0] + h_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[7][1] = lo >>> 0;\n\n len -= 128;\n }\n}\n","import { CodeError } from '@libp2p/interface';\nimport { randomBytes as randB } from '@noble/hashes/utils';\n/**\n * Generates a Uint8Array with length `number` populated by random bytes\n */\nexport default function randomBytes(length) {\n if (isNaN(length) || length <= 0) {\n throw new CodeError('random bytes length must be a Number bigger than 0', 'ERR_INVALID_LENGTH');\n }\n return randB(length);\n}\n//# sourceMappingURL=random-bytes.js.map","import 'node-forge/lib/rsa.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { base64urlToBigInteger } from '../util.js';\nfunction convert(key, types) {\n return types.map(t => base64urlToBigInteger(key[t]));\n}\nexport function jwk2priv(key) {\n return forge.pki.setRsaPrivateKey(...convert(key, ['n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi']));\n}\nexport function jwk2pub(key) {\n return forge.pki.setRsaPublicKey(...convert(key, ['n', 'e']));\n}\n//# sourceMappingURL=jwk2pem.js.map","import 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/rsa.js';\nimport { CodeError } from '@libp2p/interface';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { bigIntegerToUintBase64url, base64urlToBigInteger } from './../util.js';\n// Convert a PKCS#1 in ASN1 DER format to a JWK key\nexport function pkcs1ToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n // https://tools.ietf.org/html/rfc7518#section-6.3.1\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(privateKey.n),\n e: bigIntegerToUintBase64url(privateKey.e),\n d: bigIntegerToUintBase64url(privateKey.d),\n p: bigIntegerToUintBase64url(privateKey.p),\n q: bigIntegerToUintBase64url(privateKey.q),\n dp: bigIntegerToUintBase64url(privateKey.dP),\n dq: bigIntegerToUintBase64url(privateKey.dQ),\n qi: bigIntegerToUintBase64url(privateKey.qInv),\n alg: 'RS256'\n };\n}\n// Convert a JWK key into PKCS#1 in ASN1 DER format\nexport function jwkToPkcs1(jwk) {\n if (jwk.n == null || jwk.e == null || jwk.d == null || jwk.p == null || jwk.q == null || jwk.dp == null || jwk.dq == null || jwk.qi == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.privateKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e),\n d: base64urlToBigInteger(jwk.d),\n p: base64urlToBigInteger(jwk.p),\n q: base64urlToBigInteger(jwk.q),\n dP: base64urlToBigInteger(jwk.dp),\n dQ: base64urlToBigInteger(jwk.dq),\n qInv: base64urlToBigInteger(jwk.qi)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n// Convert a PKCIX in ASN1 DER format to a JWK key\nexport function pkixToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const publicKey = forge.pki.publicKeyFromAsn1(asn1);\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(publicKey.n),\n e: bigIntegerToUintBase64url(publicKey.e)\n };\n}\n// Convert a JWK key to PKCIX in ASN1 DER format\nexport function jwkToPkix(jwk) {\n if (jwk.n == null || jwk.e == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.publicKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n//# sourceMappingURL=rsa-utils.js.map","import { CodeError } from '@libp2p/interface';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport randomBytes from '../random-bytes.js';\nimport webcrypto from '../webcrypto.js';\nimport { jwk2pub, jwk2priv } from './jwk2pem.js';\nimport * as utils from './rsa-utils.js';\nexport { utils };\nexport async function generateKey(bits) {\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: 'SHA-256' }\n }, true, ['sign', 'verify']);\n const keys = await exportKey(pair);\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\n// Takes a jwk key\nexport async function unmarshalPrivateKey(key) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['sign']);\n const pair = [\n privateKey,\n await derivePublicFromPrivate(key)\n ];\n const keys = await exportKey({\n privateKey: pair[0],\n publicKey: pair[1]\n });\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\nexport { randomBytes as getRandomValues };\nexport async function hashAndSign(key, msg) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['sign']);\n const sig = await webcrypto.get().subtle.sign({ name: 'RSASSA-PKCS1-v1_5' }, privateKey, msg instanceof Uint8Array ? msg : msg.subarray());\n return new Uint8Array(sig, 0, sig.byteLength);\n}\nexport async function hashAndVerify(key, sig, msg) {\n const publicKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['verify']);\n return webcrypto.get().subtle.verify({ name: 'RSASSA-PKCS1-v1_5' }, publicKey, sig, msg instanceof Uint8Array ? msg : msg.subarray());\n}\nasync function exportKey(pair) {\n if (pair.privateKey == null || pair.publicKey == null) {\n throw new CodeError('Private and public key are required', 'ERR_INVALID_PARAMETERS');\n }\n return Promise.all([\n webcrypto.get().subtle.exportKey('jwk', pair.privateKey),\n webcrypto.get().subtle.exportKey('jwk', pair.publicKey)\n ]);\n}\nasync function derivePublicFromPrivate(jwKey) {\n return webcrypto.get().subtle.importKey('jwk', {\n kty: jwKey.kty,\n n: jwKey.n,\n e: jwKey.e\n }, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['verify']);\n}\n/*\n\nRSA encryption/decryption for the browser with webcrypto workaround\n\"bloody dark magic. webcrypto's why.\"\n\nExplanation:\n - Convert JWK to nodeForge\n - Convert msg Uint8Array to nodeForge buffer: ByteBuffer is a \"binary-string backed buffer\", so let's make our Uint8Array a binary string\n - Convert resulting nodeForge buffer to Uint8Array: it returns a binary string, turn that into a Uint8Array\n\n*/\nfunction convertKey(key, pub, msg, handle) {\n const fkey = pub ? jwk2pub(key) : jwk2priv(key);\n const fmsg = uint8ArrayToString(msg instanceof Uint8Array ? msg : msg.subarray(), 'ascii');\n const fomsg = handle(fmsg, fkey);\n return uint8ArrayFromString(fomsg, 'ascii');\n}\nexport function encrypt(key, msg) {\n return convertKey(key, true, msg, (msg, key) => key.encrypt(msg));\n}\nexport function decrypt(key, msg) {\n return convertKey(key, false, msg, (msg, key) => key.decrypt(msg));\n}\nexport function keySize(jwk) {\n if (jwk.kty !== 'RSA') {\n throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE');\n }\n else if (jwk.n == null) {\n throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS');\n }\n const bytes = uint8ArrayFromString(jwk.n, 'base64url');\n return bytes.length * 8;\n}\n//# sourceMappingURL=rsa-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport 'node-forge/lib/sha512.js';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nimport * as crypto from './rsa.js';\nexport const MAX_KEY_SIZE = 8192;\nexport class RsaPublicKey {\n _key;\n constructor(key) {\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.utils.jwkToPkix(this._key);\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n encrypt(bytes) {\n return crypto.encrypt(this._key, bytes);\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class RsaPrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey;\n }\n genSecret() {\n return crypto.getRandomValues(16);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n if (this._publicKey == null) {\n throw new CodeError('public key not provided', 'ERR_PUBKEY_NOT_PROVIDED');\n }\n return new RsaPublicKey(this._publicKey);\n }\n decrypt(bytes) {\n return crypto.decrypt(this._key, bytes);\n }\n marshal() {\n return crypto.utils.jwkToPkcs1(this._key);\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected PEM format\n */\n async export(password, format = 'pkcs-8') {\n if (format === 'pkcs-8') {\n const buffer = new forge.util.ByteBuffer(this.marshal());\n const asn1 = forge.asn1.fromDer(buffer);\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n const options = {\n algorithm: 'aes256',\n count: 10000,\n saltSize: 128 / 8,\n prfAlgorithm: 'sha512'\n };\n return forge.pki.encryptRsaPrivateKey(privateKey, password, options);\n }\n else if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport async function unmarshalRsaPrivateKey(bytes) {\n const jwk = crypto.utils.pkcs1ToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport function unmarshalRsaPublicKey(bytes) {\n const jwk = crypto.utils.pkixToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n return new RsaPublicKey(jwk);\n}\nexport async function fromJwk(jwk) {\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport async function generateKeyPair(bits) {\n if (bits > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.generateKey(bits);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\n//# sourceMappingURL=rsa-class.js.map","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state:\n// first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19\n// prettier-ignore\nconst SHA256_IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\n/**\n * SHA2-224 hash function\n */\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","import { hash as assertHash, bytes as assertBytes, exists as assertExists } from './_assert.js';\nimport { Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nexport class HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n assertExists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n assertExists(this);\n assertBytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Short Weierstrass curve. The formula is: y² = x³ + ax + b\nimport { validateBasic, wNAF, pippenger, } from './curve.js';\nimport * as mod from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes, memoized, abool } from './utils.js';\nfunction validateSigVerOpts(opts) {\n if (opts.lowS !== undefined)\n abool('lowS', opts.lowS);\n if (opts.prehash !== undefined)\n abool('prehash', opts.prehash);\n}\nfunction validatePointOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n a: 'field',\n b: 'field',\n }, {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n });\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('Endomorphism can only be defined for Koblitz curves that have a=0');\n }\n if (typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function') {\n throw new Error('Expected endomorphism with beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts });\n}\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n * [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER = {\n // asn.1 DER encoding utils\n Err: class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n },\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag, data) => {\n const { Err: E } = DER;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length & 1)\n throw new E('tlv.encode: unpadded data');\n const dataLen = data.length / 2;\n const len = ut.numberToHexUnpadded(dataLen);\n if ((len.length / 2) & 128)\n throw new E('tlv.encode: long form length too big');\n // length of length with long form flag\n const lenLen = dataLen > 127 ? ut.numberToHexUnpadded((len.length / 2) | 128) : '';\n return `${ut.numberToHexUnpadded(tag)}${lenLen}${len}${data}`;\n },\n // v - value, l - left bytes (unparsed)\n decode(tag, data) {\n const { Err: E } = DER;\n let pos = 0;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length < 2 || data[pos++] !== tag)\n throw new E('tlv.decode: wrong tlv');\n const first = data[pos++];\n const isLong = !!(first & 128); // First bit of first length byte is flag for short/long form\n let length = 0;\n if (!isLong)\n length = first;\n else {\n // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n const lenLen = first & 127;\n if (!lenLen)\n throw new E('tlv.decode(long): indefinite length not supported');\n if (lenLen > 4)\n throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n const lengthBytes = data.subarray(pos, pos + lenLen);\n if (lengthBytes.length !== lenLen)\n throw new E('tlv.decode: length bytes not complete');\n if (lengthBytes[0] === 0)\n throw new E('tlv.decode(long): zero leftmost byte');\n for (const b of lengthBytes)\n length = (length << 8) | b;\n pos += lenLen;\n if (length < 128)\n throw new E('tlv.decode(long): not minimal encoding');\n }\n const v = data.subarray(pos, pos + length);\n if (v.length !== length)\n throw new E('tlv.decode: wrong value length');\n return { v, l: data.subarray(pos + length) };\n },\n },\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n _int: {\n encode(num) {\n const { Err: E } = DER;\n if (num < _0n)\n throw new E('integer: negative integers are not allowed');\n let hex = ut.numberToHexUnpadded(num);\n // Pad with zero byte if negative flag is present\n if (Number.parseInt(hex[0], 16) & 0b1000)\n hex = '00' + hex;\n if (hex.length & 1)\n throw new E('unexpected assertion');\n return hex;\n },\n decode(data) {\n const { Err: E } = DER;\n if (data[0] & 128)\n throw new E('Invalid signature integer: negative');\n if (data[0] === 0x00 && !(data[1] & 128))\n throw new E('Invalid signature integer: unnecessary leading zero');\n return b2n(data);\n },\n },\n toSig(hex) {\n // parse DER signature\n const { Err: E, _int: int, _tlv: tlv } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n ut.abytes(data);\n const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n if (seqLeftBytes.length)\n throw new E('Invalid signature: left bytes after parsing');\n const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n if (sLeftBytes.length)\n throw new E('Invalid signature: left bytes after parsing');\n return { r: int.decode(rBytes), s: int.decode(sBytes) };\n },\n hexFromSig(sig) {\n const { _tlv: tlv, _int: int } = DER;\n const seq = `${tlv.encode(0x02, int.encode(sig.r))}${tlv.encode(0x02, int.encode(sig.s))}`;\n return tlv.encode(0x30, seq);\n },\n};\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\nexport function weierstrassPoints(opts) {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n const Fn = mod.Field(CURVE.n, CURVE.nBitLength);\n const toBytes = CURVE.toBytes ||\n ((_c, point, _isCompressed) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes = CURVE.fromBytes ||\n ((bytes) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x) {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num) {\n return ut.inRange(num, _1n, CURVE.n);\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key) {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n: N } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (ut.isBytes(key))\n key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length))\n throw new Error('Invalid key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n }\n catch (error) {\n throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);\n }\n if (wrapPrivateKey)\n num = mod.mod(num, N); // disabled by default, enabled for BLS\n ut.aInRange('private key', num, _1n, N); // num in range [1..N-1]\n return num;\n }\n function assertPrjPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ProjectivePoint expected');\n }\n // Memoized toAffine / validity check. They are heavy. Points are immutable.\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n const toAffineMemo = memoized((p, iz) => {\n const { px: x, py: y, pz: z } = p;\n // Fast-path for normalized points\n if (Fp.eql(z, Fp.ONE))\n return { x, y };\n const is0 = p.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null)\n iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0)\n return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE))\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n });\n // NOTE: on exception this will crash 'cached' and no value will be set.\n // Otherwise true will be return\n const assertValidMemo = memoized((p) => {\n if (p.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is wrong representation of ZERO and is always invalid.\n if (CURVE.allowInfinityPoint && !Fp.is0(p.py))\n return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = p.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right))\n throw new Error('bad point: equation left != right');\n if (!p.isTorsionFree())\n throw new Error('bad point: not in prime-order subgroup');\n return true;\n });\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point {\n constructor(px, py, pz) {\n this.px = px;\n this.py = py;\n this.pz = pz;\n if (px == null || !Fp.isValid(px))\n throw new Error('x required');\n if (py == null || !Fp.isValid(py))\n throw new Error('y required');\n if (pz == null || !Fp.isValid(pz))\n throw new Error('z required');\n Object.freeze(this);\n }\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p) {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('invalid affine point');\n if (p instanceof Point)\n throw new Error('projective point not allowed');\n const is0 = (i) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y))\n return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex) {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n // Multiscalar Multiplication\n static msm(points, scalars) {\n return pippenger(Point, Fn, points, scalars);\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n wnaf.setWindowSize(this, windowSize);\n }\n // A point on curve is valid if it conforms to equation.\n assertValidity() {\n assertValidMemo(this);\n }\n hasEvenY() {\n const { y } = this.toAffine();\n if (Fp.isOdd)\n return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n /**\n * Compare one point to another.\n */\n equals(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate() {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, n, Point.normalizeZ);\n }\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(sc) {\n ut.aInRange('scalar', sc, _0n, CURVE.n);\n const I = Point.ZERO;\n if (sc === _0n)\n return I;\n if (sc === _1n)\n return this;\n const { endo } = CURVE;\n if (!endo)\n return wnaf.unsafeLadder(this, sc);\n // Apply endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(sc);\n let k1p = I;\n let k2p = I;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar) {\n const { endo, n: N } = CURVE;\n ut.aInRange('scalar', scalar, _1n, N);\n let point, fake; // Fake point is used to const-time mult\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(scalar);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(scalar);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q, a, b) {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (P, a // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz) {\n return toAffineMemo(this, iz);\n }\n isTorsionFree() {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n)\n return true; // No subgroups, always torsion-free\n if (isTorsionFree)\n return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor() {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n)\n return this; // Fast-path\n if (clearCofactor)\n return clearCofactor(Point, this);\n return this.multiplyUnsafe(CURVE.h);\n }\n toRawBytes(isCompressed = true) {\n abool('isCompressed', isCompressed);\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n toHex(isCompressed = true) {\n abool('isCompressed', isCompressed);\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n }, {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n });\n return Object.freeze({ lowS: true, ...opts });\n}\n/**\n * Creates short weierstrass curve and ECDSA signature methods for it.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, b, p, n, Gx, Gy\n * const curve = weierstrass({ a, b, Fp: Field(p), n, Gx, Gy, h: 1n })\n */\nexport function weierstrass(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n function modN(a) {\n return mod.mod(a, CURVE_ORDER);\n }\n function invN(a) {\n return mod.invert(a, CURVE_ORDER);\n }\n const { ProjectivePoint: Point, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder, } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed) {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n abool('isCompressed', isCompressed);\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n }\n else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!ut.inRange(x, _1n, Fp.ORDER))\n throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y;\n try {\n y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n }\n catch (sqrtError) {\n const suffix = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('Point is not on curve' + suffix);\n }\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd)\n y = Fp.neg(y);\n return { x, y };\n }\n else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n }\n else {\n throw new Error(`Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`);\n }\n },\n });\n const numToNByteStr = (num) => ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n function isBiggerThanHalfOrder(number) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function normalizeS(s) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b, from, to) => ut.bytesToNumberBE(b.slice(from, to));\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature {\n constructor(r, s, recovery) {\n this.r = r;\n this.s = s;\n this.recovery = recovery;\n this.assertValidity();\n }\n // pair (bytes of r, bytes of s)\n static fromCompact(hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n assertValidity() {\n ut.aInRange('r', this.r, _1n, CURVE_ORDER); // r in [1..N]\n ut.aInRange('s', this.s, _1n, CURVE_ORDER); // s in [1..N]\n }\n addRecoveryBit(recovery) {\n return new Signature(this.r, this.s, recovery);\n }\n recoverPublicKey(msgHash) {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec))\n throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER)\n throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q)\n throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n // Signatures should be low-s, to prevent malleability.\n hasHighS() {\n return isBiggerThanHalfOrder(this.s);\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: () => {\n const length = mod.getMinHashLength(CURVE.n);\n return mod.mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey, isCompressed = true) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item) {\n const arr = ut.isBytes(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === compressedLen || len === uncompressedLen;\n if (str)\n return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point)\n return true;\n return false;\n }\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA, publicB, isCompressed = true) {\n if (isProbPub(privateA))\n throw new Error('first arg must be private key');\n if (!isProbPub(publicB))\n throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int = CURVE.bits2int ||\n function (bytes) {\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN = CURVE.bits2int_modN ||\n function (bytes) {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num) {\n ut.aInRange(`num < 2^${CURVE.nBitLength}`, num, _0n, ORDER_MASK);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order, this will be wrong at least for P521.\n // Also it can be bigger for P224 + SHA256\n function prepSig(msgHash, privateKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null)\n lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n validateSigVerOpts(opts);\n if (prehash)\n msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null && ent !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes) {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k))\n return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n)\n return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n)\n return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery); // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts = { lowS: CURVE.lowS, prehash: false };\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash, privKey, opts = defaultSigOpts) {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = ut.createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n if ('strict' in opts)\n throw new Error('options.strict was renamed to lowS');\n validateSigVerOpts(opts);\n const { lowS, prehash } = opts;\n let _sig = undefined;\n let P;\n try {\n if (typeof sg === 'string' || ut.isBytes(sg)) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n _sig = Signature.fromDER(sg);\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n _sig = Signature.fromCompact(sg);\n }\n }\n else if (typeof sg === 'object' && typeof sg.r === 'bigint' && typeof sg.s === 'bigint') {\n const { r, s } = sg;\n _sig = new Signature(r, s);\n }\n else {\n throw new Error('PARSE');\n }\n P = Point.fromHex(publicKey);\n }\n catch (error) {\n if (error.message === 'PARSE')\n throw new Error(`signature must be Signature instance, Uint8Array or hex string`);\n return false;\n }\n if (lowS && _sig.hasHighS())\n return false;\n if (prehash)\n msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R)\n return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u, v) => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u, v) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n mod.validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd)\n throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u) => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n//# sourceMappingURL=weierstrass.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { weierstrass } from './abstract/weierstrass.js';\n// connects noble-curves to noble-hashes\nexport function getHash(hash) {\n return {\n hash,\n hmac: (key, ...msgs) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\nexport function createCurve(curveDef, defHash) {\n const create = (hash) => weierstrass({ ...curveDef, ...getHash(hash) });\n return Object.freeze({ ...create(defHash), create });\n}\n//# sourceMappingURL=_shortw_utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { createCurve } from './_shortw_utils.js';\nimport { createHasher, isogenyMap } from './abstract/hash-to-curve.js';\nimport { Field, mod, pow2 } from './abstract/modular.js';\nimport { inRange, aInRange, bytesToNumberBE, concatBytes, ensureBytes, numberToBytesBE, } from './abstract/utils.js';\nimport { mapToCurveSimpleSWU } from './abstract/weierstrass.js';\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a, b) => (a + b / _2n) / b;\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n const P = secp256k1P;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fp.eql(Fp.sqr(root), y))\n throw new Error('Cannot find square root');\n return root;\n}\nconst Fp = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\n/**\n * secp256k1 short weierstrass curve and ECDSA signatures over it.\n */\nexport const secp256k1 = createCurve({\n a: BigInt(0), // equation params: a, b\n b: BigInt(7), // Seem to be rigid: bitcointalk.org/index.php?topic=289795.msg3183975#msg3183975\n Fp, // Field's prime: 2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n\n n: secp256k1N, // Curve order, total count of valid points in the field\n // Base point (x, y) aka generator point\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n h: BigInt(1), // Cofactor\n lowS: true, // Allow only low-S signatures by default in sign() and verify()\n /**\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * Explanation: https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066\n */\n endo: {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar: (k) => {\n const n = secp256k1N;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalar: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n },\n}, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\nconst _0n = BigInt(0);\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n) => numberToBytesBE(n, 32);\nconst modP = (x) => mod(x, secp256k1P);\nconst modN = (x) => mod(x, secp256k1N);\nconst Point = secp256k1.ProjectivePoint;\nconst GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = p.hasEvenY() ? d_ : modN(-d_);\n return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n aInRange('x', x, _1n, secp256k1P); // Fail if x ≥ p.\n const xx = modP(x * x);\n const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n if (y % _2n !== _0n)\n y = modP(-y); // Return the unique point P such that x(P) = x and\n const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n p.assertValidity();\n return p;\n}\nconst num = bytesToNumberBE;\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n return modN(num(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey) {\n return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, privateKey, auxRand = randomBytes(32)) {\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = numTo32b(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n const k_ = modN(num(rand)); // Let k' = int(rand) mod n\n if (k_ === _0n)\n throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(numTo32b(modN(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px))\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!inRange(r, _1n, secp256k1P))\n return false;\n const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!inRange(s, _1n, secp256k1N))\n return false;\n const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P\n if (!R || !R.hasEvenY() || R.toAffine().x !== r)\n return false; // -eP == (n-e)P\n return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n }\n catch (error) {\n return false;\n }\n}\n/**\n * Schnorr signatures over secp256k1.\n */\nexport const schnorr = /* @__PURE__ */ (() => ({\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n utils: {\n randomPrivateKey: secp256k1.utils.randomPrivateKey,\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n taggedHash,\n mod,\n },\n}))();\nconst isoMap = /* @__PURE__ */ (() => isogenyMap(Fp, [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n].map((i) => i.map((j) => BigInt(j)))))();\nconst mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fp, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fp.create(BigInt('-11')),\n}))();\nconst htf = /* @__PURE__ */ (() => createHasher(secp256k1.ProjectivePoint, (scalars) => {\n const { x, y } = mapSWU(Fp.create(scalars[0]));\n return isoMap(x, y);\n}, {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\n//# sourceMappingURL=secp256k1.js.map","import { CodeError } from '@libp2p/interface';\nimport { secp256k1 as secp } from '@noble/curves/secp256k1';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { isPromise } from '../util.js';\nconst PRIVATE_KEY_BYTE_LENGTH = 32;\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n return secp.utils.randomPrivateKey();\n}\n/**\n * Hash and sign message with private key\n */\nexport function hashAndSign(key, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.sign(digest, key).toDERRawBytes())\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.sign(p.digest, key).toDERRawBytes();\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\n/**\n * Hash message and verify signature with public key\n */\nexport function hashAndVerify(key, sig, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.verify(sig, digest, key))\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.verify(sig, p.digest, key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\nexport function compressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(true);\n return point;\n}\nexport function decompressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(false);\n return point;\n}\nexport function validatePrivateKey(key) {\n try {\n secp.getPublicKey(key, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\nexport function validatePublicKey(key) {\n try {\n secp.ProjectivePoint.fromHex(key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PUBLIC_KEY');\n }\n}\nexport function computePublicKey(privateKey) {\n try {\n return secp.getPublicKey(privateKey, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\n//# sourceMappingURL=secp256k1-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as keysProtobuf from './keys.js';\nimport * as crypto from './secp256k1.js';\nexport class Secp256k1PublicKey {\n _key;\n constructor(key) {\n crypto.validatePublicKey(key);\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.compressPublicKey(this._key);\n }\n get bytes() {\n return keysProtobuf.PublicKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n}\nexport class Secp256k1PrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey ?? crypto.computePublicKey(key);\n crypto.validatePrivateKey(this._key);\n crypto.validatePublicKey(this._publicKey);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Secp256k1PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return keysProtobuf.PrivateKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalSecp256k1PrivateKey(bytes) {\n return new Secp256k1PrivateKey(bytes);\n}\nexport function unmarshalSecp256k1PublicKey(bytes) {\n return new Secp256k1PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const privateKeyBytes = crypto.generateKey();\n return new Secp256k1PrivateKey(privateKeyBytes);\n}\n//# sourceMappingURL=secp256k1-class.js.map","/**\n * @packageDocumentation\n *\n * **Supported Key Types**\n *\n * The {@link generateKeyPair}, {@link marshalPublicKey}, and {@link marshalPrivateKey} functions accept a string `type` argument.\n *\n * Currently the `'RSA'`, `'ed25519'`, and `secp256k1` types are supported, although ed25519 and secp256k1 keys support only signing and verification of messages.\n *\n * For encryption / decryption support, RSA keys should be used.\n */\nimport 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/pbe.js';\nimport { CodeError } from '@libp2p/interface';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport * as Ed25519 from './ed25519-class.js';\nimport generateEphemeralKeyPair from './ephemeral-keys.js';\nimport { importer } from './importer.js';\nimport { keyStretcher } from './key-stretcher.js';\nimport * as keysPBM from './keys.js';\nimport * as RSA from './rsa-class.js';\nimport * as Secp256k1 from './secp256k1-class.js';\nexport { keyStretcher };\nexport { generateEphemeralKeyPair };\nexport { keysPBM };\nexport const supportedKeys = {\n rsa: RSA,\n ed25519: Ed25519,\n secp256k1: Secp256k1\n};\nfunction unsupportedKey(type) {\n const supported = Object.keys(supportedKeys).join(' / ');\n return new CodeError(`invalid or unsupported key type ${type}. Must be ${supported}`, 'ERR_UNSUPPORTED_KEY_TYPE');\n}\nfunction typeToKey(type) {\n type = type.toLowerCase();\n if (type === 'rsa' || type === 'ed25519' || type === 'secp256k1') {\n return supportedKeys[type];\n }\n throw unsupportedKey(type);\n}\n/**\n * Generates a keypair of the given type and bitsize\n *\n * @param type\n * @param bits - Minimum of 1024\n */\nexport async function generateKeyPair(type, bits) {\n return typeToKey(type).generateKeyPair(bits ?? 2048);\n}\n/**\n * Generates a keypair of the given type and bitsize.\n *\n * Seed is a 32 byte uint8array\n */\nexport async function generateKeyPairFromSeed(type, seed, bits) {\n if (type.toLowerCase() !== 'ed25519') {\n throw new CodeError('Seed key derivation is unimplemented for RSA or secp256k1', 'ERR_UNSUPPORTED_KEY_DERIVATION_TYPE');\n }\n return Ed25519.generateKeyPairFromSeed(seed);\n}\n/**\n * Converts a protobuf serialized public key into its representative object\n */\nexport function unmarshalPublicKey(buf) {\n const decoded = keysPBM.PublicKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPublicKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PublicKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PublicKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'unknown');\n }\n}\n/**\n * Converts a public key object into a protobuf serialized public key\n */\nexport function marshalPublicKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts a protobuf serialized private key into its representative object\n */\nexport async function unmarshalPrivateKey(buf) {\n const decoded = keysPBM.PrivateKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPrivateKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PrivateKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'RSA');\n }\n}\n/**\n * Converts a private key object into a protobuf serialized private key\n */\nexport function marshalPrivateKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts an exported private key into its representative object.\n *\n * Supported formats are 'pem' (RSA only) and 'libp2p-key'.\n */\nexport async function importKey(encryptedKey, password) {\n try {\n const key = await importer(encryptedKey, password);\n return await unmarshalPrivateKey(key);\n }\n catch (_) {\n // Ignore and try the old pem decrypt\n }\n // Only rsa supports pem right now\n const key = forge.pki.decryptRsaPrivateKey(encryptedKey, password);\n if (key === null) {\n throw new CodeError('Cannot read the key, most likely the password is wrong or not a RSA key', 'ERR_CANNOT_DECRYPT_PEM');\n }\n let der = forge.asn1.toDer(forge.pki.privateKeyToAsn1(key));\n der = uint8ArrayFromString(der.getBytes(), 'ascii');\n return supportedKeys.rsa.unmarshalRsaPrivateKey(der);\n}\n//# sourceMappingURL=index.js.map","/**\n * Can be used with Array.sort to sort and array with Uint8Array entries\n */\nexport function compare(a, b) {\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] < b[i]) {\n return -1;\n }\n if (a[i] > b[i]) {\n return 1;\n }\n }\n if (a.byteLength > b.byteLength) {\n return 1;\n }\n if (a.byteLength < b.byteLength) {\n return -1;\n }\n return 0;\n}\n//# sourceMappingURL=compare.js.map","/**\n* @module KeyStore\n* @description\n* Provides a local key manager for OrbitDB.\n* @example Create a keystore with defaults.\n* const keystore = await KeyStore()\n* @example Create a keystore with custom storage.\n* const storage = await MemoryStorage()\n* const keystore = await KeyStore({ storage })\n*/\nimport * as crypto from '@libp2p/crypto'\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string'\nimport { compare as uint8ArrayCompare } from 'uint8arrays/compare'\nimport ComposedStorage from './storage/composed.js'\nimport LevelStorage from './storage/level.js'\nimport LRUStorage from './storage/lru.js'\n\nconst unmarshal = crypto.keys.supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey\nconst unmarshalPubKey = crypto.keys.supportedKeys.secp256k1.unmarshalSecp256k1PublicKey\n\nconst verifySignature = async (signature, publicKey, data) => {\n if (!signature) {\n throw new Error('No signature given')\n }\n if (!publicKey) {\n throw new Error('Given publicKey was undefined')\n }\n if (!data) {\n throw new Error('Given input data was undefined')\n }\n\n if (!(data instanceof Uint8Array)) {\n data = typeof data === 'string' ? uint8ArrayFromString(data) : new Uint8Array(data)\n }\n\n const isValid = (key, msg, sig) => key.verify(msg, sig)\n\n let res = false\n try {\n const pubKey = unmarshalPubKey(uint8ArrayFromString(publicKey, 'base16'))\n res = await isValid(pubKey, data, uint8ArrayFromString(signature, 'base16'))\n } catch (e) {\n // Catch error: sig length wrong\n }\n\n return Promise.resolve(res)\n}\n\n/**\n * Signs data using a key pair.\n * @param {Secp256k1PrivateKey} key The key to use for signing data.\n * @param {string|Uint8Array} data The data to sign.\n * @return {string} A signature.\n * @throws No signing key given if no key is provided.\n * @throws Given input data was undefined if no data is provided.\n * @static\n * @private\n */\nconst signMessage = async (key, data) => {\n if (!key) {\n throw new Error('No signing key given')\n }\n\n if (!data) {\n throw new Error('Given input data was undefined')\n }\n\n if (!(data instanceof Uint8Array)) {\n data = typeof data === 'string' ? uint8ArrayFromString(data) : new Uint8Array(data)\n }\n\n return uint8ArrayToString(await key.sign(data), 'base16')\n}\n\nconst verifiedCachePromise = LRUStorage({ size: 1000 })\n\n/**\n * Verifies input data against a cached version of the signed message.\n * @param {string} signature The generated signature.\n * @param {string} publicKey The derived public key of the key pair.\n * @param {string} data The data to be verified.\n * @return {boolean} True if the the data and cache match, false otherwise.\n * @static\n * @private\n */\nconst verifyMessage = async (signature, publicKey, data) => {\n const verifiedCache = await verifiedCachePromise\n const cached = await verifiedCache.get(signature)\n\n let res = false\n\n if (!cached) {\n const verified = await verifySignature(signature, publicKey, data)\n res = verified\n if (verified) {\n await verifiedCache.put(signature, { publicKey, data })\n }\n } else {\n const compare = (cached, data) => {\n const match = data instanceof Uint8Array ? uint8ArrayCompare(cached, data) === 0 : cached.toString() === data.toString()\n return match\n }\n res = cached.publicKey === publicKey && compare(cached.data, data)\n }\n return res\n}\n\nconst defaultPath = './keystore'\n\n/**\n * Creates an instance of KeyStore.\n * @param {Object} params One or more parameters for configuring KeyStore.\n * @param {Object} [params.storage] An instance of a storage class. Can be one\n * of ComposedStorage, IPFSBlockStorage, LevelStorage, etc. Defaults to\n * ComposedStorage.\n * @param {string} [params.path=./keystore] The path to a valid storage.\n * @return {module:KeyStore~KeyStore} An instance of KeyStore.\n * @instance\n */\nconst KeyStore = async ({ storage, path } = {}) => {\n /**\n * @namespace module:KeyStore~KeyStore\n * @description The instance returned by {@link module:KeyStore}.\n */\n storage = storage || await ComposedStorage(await LRUStorage({ size: 1000 }), await LevelStorage({ path: path || defaultPath }))\n\n /**\n * Closes the KeyStore's underlying storage.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const close = async () => {\n await storage.close()\n }\n\n /**\n * Clears the KeyStore's underlying storage.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const clear = async () => {\n await storage.clear()\n }\n\n /**\n * Checks if a key exists in the key store .\n * @param {string} id The id of an [Identity]{@link module:Identities~Identity} to check the key for.\n * @return {boolean} True if the key exists, false otherwise.\n * @throws id needed to check a key if no id is specified.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const hasKey = async (id) => {\n if (!id) {\n throw new Error('id needed to check a key')\n }\n\n let hasKey = false\n try {\n const storedKey = await storage.get('private_' + id)\n hasKey = storedKey !== undefined && storedKey !== null\n } catch (e) {\n // Catches 'Error: ENOENT: no such file or directory, open '\n console.error('Error: ENOENT: no such file or directory')\n }\n\n return hasKey\n }\n\n /**\n * Adds a private key to the keystore.\n * @param {string} id An id of the [Identity]{@link module:Identities~Identity} to whom the key belongs to.\n * @param {Uint8Array} key The private key to store.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const addKey = async (id, key) => {\n await storage.put('private_' + id, key.privateKey)\n }\n\n /**\n * Creates a key pair and stores it to the keystore.\n * @param {string} id An id of the [Identity]{@link module:Identities~Identity} to generate the key pair for.\n * @throws id needed to create a key if no id is specified.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const createKey = async (id) => {\n if (!id) {\n throw new Error('id needed to create a key')\n }\n\n // Generate a private key\n const pair = await crypto.keys.generateKeyPair('secp256k1')\n const keys = await crypto.keys.unmarshalPrivateKey(pair.bytes)\n const pubKey = keys.public.marshal()\n\n const key = {\n publicKey: pubKey,\n privateKey: keys.marshal()\n }\n\n await addKey(id, key)\n\n return keys\n }\n\n /**\n * Gets a key from keystore.\n * @param {string} id An id of the [Identity]{@link module:Identities~Identity} whose key to retrieve.\n * @return {Uint8Array} The key specified by id.\n * @throws id needed to get a key if no id is specified.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const getKey = async (id) => {\n if (!id) {\n throw new Error('id needed to get a key')\n }\n\n let storedKey\n try {\n storedKey = await storage.get('private_' + id)\n } catch (e) {\n // ignore ENOENT error\n }\n\n if (!storedKey) {\n return\n }\n\n return unmarshal(storedKey)\n }\n\n /**\n * Gets the serialized public key from a key pair.\n * @param {*} keys A key pair.\n * @param {Object} options One or more options.\n * @param {Object} [options.format=hex] The format the public key should be\n * returned in.\n * @return {Uint8Array|String} The public key.\n * @throws Supported formats are `hex` and `buffer` if an invalid format is\n * passed in options.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const getPublic = (keys, options = {}) => {\n const formats = ['hex', 'buffer']\n const format = options.format || 'hex'\n if (formats.indexOf(format) === -1) {\n throw new Error('Supported formats are `hex` and `buffer`')\n }\n\n const pubKey = keys.public.marshal()\n\n return format === 'buffer' ? pubKey : uint8ArrayToString(pubKey, 'base16')\n }\n\n return {\n clear,\n close,\n hasKey,\n addKey,\n createKey,\n getKey,\n getPublic\n }\n}\n\nexport {\n KeyStore as default,\n verifyMessage,\n signMessage\n}\n","import * as Block from 'multiformats/block'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport { base58btc } from 'multiformats/bases/base58'\n\nconst codec = dagCbor\nconst hasher = sha256\nconst hashStringEncoding = base58btc\n\n/**\n * @typedef {Object} module:Identities~Identity\n * @property {string} id A unique identifer for the identity.\n * @property {object} publicKey A public key.\n * @property {object} signatures A signed identity id and public key.\n * @property {string} type The type of identity provider.\n * @property {function} sign A sign function to sign data using this identity.\n * @property {function} verify A verify function to verify data signed by this identity.\n */\nconst Identity = async ({ id, publicKey, signatures, type, sign, verify } = {}) => {\n /**\n * @description The Identity instance. Returned by\n * [Identities.createIdentity()]{@link module:Identities~Identities#createIdentity}.\n */\n if (!id) throw new Error('Identity id is required')\n if (!publicKey) throw new Error('Invalid public key')\n if (!signatures) throw new Error('Signatures object is required')\n if (!signatures.id) throw new Error('Signature of id is required')\n if (!signatures.publicKey) throw new Error('Signature of publicKey+id is required')\n if (!type) throw new Error('Identity type is required')\n\n signatures = Object.assign({}, signatures)\n\n const identity = {\n id,\n publicKey,\n signatures,\n type,\n sign,\n verify\n }\n\n const { hash, bytes } = await _encodeIdentity(identity)\n identity.hash = hash\n identity.bytes = bytes\n\n return identity\n}\n\nconst _encodeIdentity = async (identity) => {\n const { id, publicKey, signatures, type } = identity\n const value = { id, publicKey, signatures, type }\n const { cid, bytes } = await Block.encode({ value, codec, hasher })\n const hash = cid.toString(hashStringEncoding)\n return { hash, bytes: Uint8Array.from(bytes) }\n}\n\nconst decodeIdentity = async (bytes) => {\n const { value } = await Block.decode({ bytes, codec, hasher })\n return Identity({ ...value })\n}\n\n/**\n * Verifies whether an identity is valid.\n * @param {Identity} identity The identity to verify.\n * @return {boolean} True if the identity is valid, false otherwise.\n * @static\n * @private\n */\nconst isIdentity = (identity) => {\n return Boolean(identity.id &&\n identity.hash &&\n identity.bytes &&\n identity.publicKey &&\n identity.signatures &&\n identity.signatures.id &&\n identity.signatures.publicKey &&\n identity.type)\n}\n\n/**\n * Evaluates whether two identities are equal.\n * @param {Identity} a First identity.\n * @param {Identity} b Second identity.\n * @return {boolean} True if identity a and b are equal, false otherwise.\n * @static\n * @private\n */\nconst isEqual = (a, b) => {\n return a.id === b.id &&\n a.hash === b.hash &&\n a.type === b.type &&\n a.publicKey === b.publicKey &&\n a.signatures.id === b.signatures.id &&\n a.signatures.publicKey === b.signatures.publicKey\n}\n\nexport { Identity as default, isEqual, isIdentity, decodeIdentity }\n","/**\n * @memberof module:IdentityProviders\n * @description\n * The PublicKey Identity Provider signs and verifies an identity using the\n * public key of a private/public key pair.\n */\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string'\nimport { signMessage, verifyMessage } from '../../key-store.js'\n\nconst type = 'publickey'\n\n/**\n * Verifies an identity using the identity's id.\n * @param {module:Identity} identity\n * @return {boolean} True if the identity is valid, false otherwise.\n * @static\n * @private\n */\nconst verifyIdentity = async identity => {\n const { id, publicKey, signatures } = identity\n return verifyMessage(signatures.publicKey, id, publicKey + signatures.id)\n}\n\n/**\n * Instantiates the publickey identity provider.\n * @return {module:IdentityProviders.IdentityProvider-PublicKey} A public key\n * identity provider function.\n * @private\n */\nconst PublicKeyIdentityProvider = ({ keystore }) => async () => {\n /**\n * @namespace module:IdentityProviders.IdentityProvider-PublicKey\n * @memberof module:IdentityProviders\n * @description The instance returned by {@link module:IdentityProviders.IdentityProvider-PublicKey}.\n * @private\n */\n\n if (!keystore) {\n throw new Error('PublicKeyIdentityProvider requires a keystore parameter')\n }\n\n /**\n * Gets the id.\n * @memberof module:IdentityProviders.IdentityProvider-PublicKey\n * @param {string} id The id to retrieve.\n * @return {string} The identity's id.\n * @instance\n */\n const getId = async ({ id } = {}) => {\n if (!id) {\n throw new Error('id is required')\n }\n\n const key = await keystore.getKey(id) || await keystore.createKey(id)\n return uint8ArrayToString(key.public.marshal(), 'base16')\n }\n\n /**\n * Signs an identity using the identity's id.\n * @memberof module:IdentityProviders.IdentityProvider-PublicKey\n * @param {*} data The identity data to sign.\n * @param {Object} params One or more parameters for configuring Database.\n * @param {string} [params.id] The identity's id.\n * @return {string} A signature.\n * @instance\n */\n const signIdentity = async (data, { id } = {}) => {\n if (!id) {\n throw new Error('id is required')\n }\n\n const key = await keystore.getKey(id)\n if (!key) {\n throw new Error(`Signing key for '${id}' not found`)\n }\n\n return signMessage(key, data)\n }\n\n return {\n type,\n getId,\n signIdentity\n }\n}\n\nPublicKeyIdentityProvider.verifyIdentity = verifyIdentity\nPublicKeyIdentityProvider.type = type\n\nexport default PublicKeyIdentityProvider\n","import PublicKeyIdentityProvider from './publickey.js'\n\nconst identityProviders = {}\n\nconst isProviderSupported = (type) => {\n return Object.keys(identityProviders).includes(type)\n}\n\nconst getIdentityProvider = (type) => {\n if (!isProviderSupported(type)) {\n throw new Error(`IdentityProvider type '${type}' is not supported`)\n }\n\n return identityProviders[type]\n}\n\n/**\n * Adds an identity provider.\n * @param {IdentityProvider} identityProvider The identity provider to add.\n * @throws Given IdentityProvider doesn\\'t have a field \\'type\\'.\n * @throws Given IdentityProvider doesn\\'t have a function \\'verifyIdentity\\'.\n * @throws IdentityProvider ${IdentityProvider.type} already added.\n * @static\n * @memberof module:Identities\n */\nconst useIdentityProvider = (identityProvider) => {\n if (!identityProvider.type ||\n typeof identityProvider.type !== 'string') {\n throw new Error('Given IdentityProvider doesn\\'t have a field \\'type\\'.')\n }\n\n if (!identityProvider.verifyIdentity) {\n throw new Error('Given IdentityProvider doesn\\'t have a function \\'verifyIdentity\\'.')\n }\n\n identityProviders[identityProvider.type] = identityProvider\n}\n\nuseIdentityProvider(PublicKeyIdentityProvider)\n\nexport { useIdentityProvider, getIdentityProvider, PublicKeyIdentityProvider }\n","/**\n * @module Identities\n * @description\n * Identities provides a framework for generating and managing identity\n * details and providers.\n */\nimport Identity, { isIdentity, isEqual, decodeIdentity } from './identity.js'\nimport { getIdentityProvider } from './providers/index.js'\n// import DIDIdentityProvider from './identity-providers/did.js'\n// import EthIdentityProvider from './identity-providers/ethereum.js'\nimport KeyStore, { signMessage, verifyMessage } from '../key-store.js'\nimport { LRUStorage, IPFSBlockStorage, MemoryStorage, ComposedStorage } from '../storage/index.js'\nimport pathJoin from '../utils/path-join.js'\n\nconst DefaultIdentityKeysPath = pathJoin('./orbitdb', 'identities')\n\n/**\n * Creates an instance of Identities.\n * @function\n * @param {Object} params One or more parameters for configuring Identities.\n * @param {module:KeyStore} [params.keystore] A preconfigured KeyStore.\n * A KeyStore will be created in the path defined by the path param. If neither\n * Keystore nor path are defined, a new KeyStore is stored in ./orbitdb\n * identities.\n * @param {string} [params.path] The path to a KeyStore. If no path is\n * provided, the default is ./orbitdb/identities.\n * @param {module:Storage} [params.storage] An instance of a compatible storage\n * module.\n * @param {IPFS} [params.ipfs] An instance of IPFS. This param is not required\n * if storage is provided.\n * @return {module:Identities~Identities} An instance of Identities.\n * @instance\n */\nconst Identities = async ({ keystore, path, storage, ipfs } = {}) => {\n /**\n * @namespace module:Identities~Identities\n * @description The instance returned by {@link module:Identities}.\n */\n\n keystore = keystore || await KeyStore({ path: path || DefaultIdentityKeysPath })\n\n if (!storage) {\n storage = ipfs\n ? await ComposedStorage(await LRUStorage({ size: 1000 }), await IPFSBlockStorage({ ipfs, pin: true }))\n : await MemoryStorage()\n }\n\n const verifiedIdentitiesCache = await LRUStorage({ size: 1000 })\n\n /**\n * Gets an identity by hash.\n * @param {string} hash An identity hash.\n * @return {module:Identities~Identity} An instance of identity.\n * @memberof module:Identities~Identities\n * @instance\n */\n const getIdentity = async (hash) => {\n const bytes = await storage.get(hash)\n if (bytes) {\n return decodeIdentity(bytes)\n }\n }\n\n /**\n * Creates an identity, adding it to storage.\n * @param {Object} options Various options for configuring a new identity.\n * @param {Function} [options.provider=PublicKeyIdentityProvider()] An instance of the Provider to use for generating an identity, e.g. PublicKeyIdentityProvider({ keystore })\n * @return {module:Identities~Identity} An instance of identity.\n * @memberof module:Identities~Identities\n * @instance\n */\n const createIdentity = async (options = {}) => {\n options.keystore = keystore\n const DefaultIdentityProvider = getIdentityProvider('publickey')\n const identityProviderInit = options.provider || DefaultIdentityProvider({ keystore })\n\n const identityProvider = await identityProviderInit()\n\n if (!getIdentityProvider(identityProvider.type)) {\n throw new Error('Identity provider is unknown. Use useIdentityProvider(provider) to register the identity provider')\n }\n\n const id = await identityProvider.getId(options)\n const privateKey = await keystore.getKey(id) || await keystore.createKey(id)\n const publicKey = keystore.getPublic(privateKey)\n const idSignature = await signMessage(privateKey, id)\n const publicKeyAndIdSignature = await identityProvider.signIdentity(publicKey + idSignature, options)\n const signatures = {\n id: idSignature,\n publicKey: publicKeyAndIdSignature\n }\n\n const identity = await Identity({ id, publicKey, signatures, type: identityProvider.type, sign, verify })\n\n await storage.put(identity.hash, identity.bytes)\n\n return identity\n }\n\n /**\n * Verifies an identity using the identity's provider.\n * @param {module:Identities~Identity} identity The identity to verify.\n * @return {boolean} True the identity is valid, false otherwise.\n * @memberof module:Identities~Identities\n */\n const verifyIdentity = async (identity) => {\n if (!isIdentity(identity)) {\n return false\n }\n\n const { id, publicKey, signatures } = identity\n\n const idSignatureVerified = await verify(signatures.id, publicKey, id)\n if (!idSignatureVerified) {\n return false\n }\n\n const verifiedIdentity = await verifiedIdentitiesCache.get(signatures.id)\n if (verifiedIdentity) {\n return isEqual(identity, verifiedIdentity)\n }\n\n const Provider = getIdentityProvider(identity.type)\n\n const identityVerified = await Provider.verifyIdentity(identity)\n if (identityVerified) {\n await verifiedIdentitiesCache.put(signatures.id, identity)\n }\n\n return identityVerified\n }\n\n /**\n * Signs data using an identity.\n * @param {module:Identities~Identity} identity The identity to use for\n * signing.\n * @param {string} data The data to sign.\n * @return {string} The signed data.\n * @throws Private signing key not found from KeyStore when no signing key can\n * be retrieved.\n * @memberof module:Identities~Identities\n * @instance\n * @private\n */\n const sign = async (identity, data) => {\n const signingKey = await keystore.getKey(identity.id)\n\n if (!signingKey) {\n throw new Error('Private signing key not found from KeyStore')\n }\n\n return await signMessage(signingKey, data)\n }\n\n /**\n * Verifies data using a valid signature and publicKey.\n * @param {string} signature A signature.\n * @param {string} publicKey A public key.\n * @param {string} data The data to be verified.\n * @return {boolean} True if the the data is signed by the publicKey, false\n * otherwise.\n * @memberof module:Identities~Identities\n * @instance\n * @private\n */\n const verify = async (signature, publicKey, data) => {\n return await verifyMessage(signature, publicKey, data)\n }\n\n return {\n createIdentity,\n verifyIdentity,\n getIdentity,\n sign,\n verify,\n keystore\n }\n}\n\nexport {\n Identities as default\n}\n","/**\n * @module Address\n * @description OrbitDB database address verification.\n */\nimport { CID } from 'multiformats/cid'\nimport { base58btc } from 'multiformats/bases/base58'\nimport { posixJoin } from './utils/path-join.js'\n\n/**\n * Validates an OrbitDB database address.\n * @function\n * @param {module:Address~OrbitDBAddress|string} address An OrbitDB database address.\n * @return {boolean} True if the address is a valid OrbitDB database address,\n * false otherwise.\n * @static\n */\nconst isValidAddress = (address) => {\n address = address.toString()\n\n if (!address.startsWith('/orbitdb') && !address.startsWith('\\\\orbitdb')) {\n return false\n }\n\n address = address.replaceAll('/orbitdb/', '')\n address = address.replaceAll('\\\\orbitdb\\\\', '')\n address = address.replaceAll('/', '')\n address = address.replaceAll('\\\\', '')\n\n let cid\n try {\n cid = CID.parse(address, base58btc)\n } catch (e) {\n return false\n }\n\n return cid !== undefined\n}\n\n/**\n * Parses an OrbitDB database address.\n * @function\n * @param {module:Address~OrbitDBAddress|string} address A valid OrbitDB database address.\n * @return {module:Address~OrbitDBAddress} An instance of OrbitDBAddress.\n * @throws Not a valid OrbitDB address if no address if provided.\n * @throws Not a valid OrbitDB address if address is invalid.\n * @static\n */\nconst parseAddress = (address) => {\n if (!address) {\n throw new Error(`Not a valid OrbitDB address: ${address}`)\n }\n\n if (!isValidAddress(address)) {\n throw new Error(`Not a valid OrbitDB address: ${address}`)\n }\n\n return OrbitDBAddress(address)\n}\n\n/**\n * @typedef {Object} OrbitDBAddress\n * @property {string} protocol Protocol prefix \"/orbitdb/\".\n * @property {string} hash The hash of the database manifest.\n * @property {string} address The full database address.\n */\nconst OrbitDBAddress = (address) => {\n if (address && address.protocol === 'orbitdb' && address.hash) {\n return address\n }\n\n const protocol = 'orbitdb'\n\n const hash = address.replace('/orbitdb/', '').replace('\\\\orbitdb\\\\', '')\n\n /**\n * Returns address as a string.\n * @typedef {Function} toString\n * @returns {string} Address as a string.\n */\n const toString = () => {\n return posixJoin('/', protocol, hash)\n }\n\n return {\n protocol,\n hash,\n address,\n toString\n }\n}\n\nexport { OrbitDBAddress as default, isValidAddress, parseAddress }\n","import * as Block from 'multiformats/block'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport { base58btc } from 'multiformats/bases/base58'\nimport { ComposedStorage, IPFSBlockStorage, LRUStorage } from './storage/index.js'\n\nconst codec = dagCbor\nconst hasher = sha256\nconst hashStringEncoding = base58btc\n\nconst ManifestStore = async ({ ipfs, storage } = {}) => {\n /**\n * @namespace module:Manifest~Manifest\n * @description The instance returned by {@link module:Manifest~Manifest}.\n * @private\n */\n\n storage = storage || await ComposedStorage(\n await LRUStorage({ size: 1000 }),\n await IPFSBlockStorage({ ipfs, pin: true })\n )\n\n const get = async (address) => {\n const bytes = await storage.get(address)\n const { value } = await Block.decode({ bytes, codec, hasher })\n return value\n }\n\n const create = async ({ name, type, accessController, meta }) => {\n if (!name) throw new Error('name is required')\n if (!type) throw new Error('type is required')\n if (!accessController) throw new Error('accessController is required')\n\n const manifest = Object.assign(\n {\n name,\n type,\n accessController\n },\n // meta field is only added to manifest if meta parameter is defined\n meta !== undefined ? { meta } : {}\n )\n\n const { cid, bytes } = await Block.encode({ value: manifest, codec, hasher })\n const hash = cid.toString(hashStringEncoding)\n await storage.put(hash, bytes)\n\n return {\n hash,\n manifest\n }\n }\n\n const close = async () => {\n await storage.close()\n }\n\n return {\n get,\n create,\n close\n }\n}\n\nexport default ManifestStore\n","const createId = async (length = 32) => {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n let result = ''\n let counter = 0\n while (counter < length) {\n result += characters.charAt(Math.floor(Math.random() * characters.length))\n counter += 1\n }\n return result\n}\n\nexport default createId\n","/**\n * @namespace AccessControllers-IPFS\n * @memberof module:AccessControllers\n */\nimport { IPFSBlockStorage, LRUStorage, ComposedStorage } from '../storage/index.js'\nimport * as Block from 'multiformats/block'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport { base58btc } from 'multiformats/bases/base58'\nimport pathJoin from '../utils/path-join.js'\n\nconst codec = dagCbor\nconst hasher = sha256\nconst hashStringEncoding = base58btc\n\nconst AccessControlList = async ({ storage, type, params }) => {\n const manifest = {\n type,\n ...params\n }\n const { cid, bytes } = await Block.encode({ value: manifest, codec, hasher })\n const hash = cid.toString(hashStringEncoding)\n await storage.put(hash, bytes)\n return hash\n}\n\nconst type = 'ipfs'\n\n/**\n * Creates an instance of IPFSAccessController.\n * @callback IPFSAccessController\n * @param {Object} params Various parameters for configuring the access\n * controller.\n * @param {module:OrbitDB} params.orbitdb An OrbitDB instance.\n * @param {module:Identities} params.identities An Identities instance.\n * @param {string} [params.address] The address of the database.\n * @function\n * @instance\n * @async\n * @memberof module:AccessControllers.AccessControllers-IPFS\n * @private\n */\n\n/**\n * Defines an IPFS access controller.\n * @param {Object} options Various options for configuring the\n * IPFSAccessController.\n * @param {Array} [params.write] An array of identity ids who can write to the\n * database.\n * @param {module:Storage} [params.storage] An instance of a compatible storage.\n * @return {module:AccessControllers.AccessControllers-IPFS} An\n * IPFSAccessController function.\n * @memberof module:AccessControllers\n */\nconst IPFSAccessController = ({ write, storage } = {}) => async ({ orbitdb, identities, address }) => {\n storage = storage || await ComposedStorage(\n await LRUStorage({ size: 1000 }),\n await IPFSBlockStorage({ ipfs: orbitdb.ipfs, pin: true })\n )\n write = write || [orbitdb.identity.id]\n\n if (address) {\n const manifestBytes = await storage.get(address.replaceAll('/ipfs/', ''))\n const { value } = await Block.decode({ bytes: manifestBytes, codec, hasher })\n write = value.write\n } else {\n address = await AccessControlList({ storage, type, params: { write } })\n address = pathJoin('/', type, address)\n }\n\n /**\n * Verifies the write permission of an entry.\n * @param {module:Log~Entry} entry An entry to verify.\n * @return {boolean} True if the entry's identity has write permission,\n * false otherwise.\n * @memberof module:AccessControllers.AccessControllers-IPFS\n */\n const canAppend = async (entry) => {\n const writerIdentity = await identities.getIdentity(entry.identity)\n if (!writerIdentity) {\n return false\n }\n const { id } = writerIdentity\n // Allow if the write access list contain the writer's id or is '*'\n if (write.includes(id) || write.includes('*')) {\n // Check that the identity is valid\n return identities.verifyIdentity(writerIdentity)\n }\n return false\n }\n\n return {\n type,\n address,\n write,\n canAppend\n }\n}\n\nIPFSAccessController.type = type\n\nexport default IPFSAccessController\n","/**\n * @namespace AccessControllers-OrbitDB\n * @memberof module:AccessControllers\n */\nimport IPFSAccessController from './ipfs.js'\nimport { createId } from '../utils/index.js'\n\nconst type = 'orbitdb'\n\n/**\n * Creates an instance of OrbitDBAccessController.\n * @callback OrbitDBAccessController\n * @param {Object} params Various parameters for configuring the access\n * controller.\n * @param {module:OrbitDB} params.orbitdb An OrbitDB instance.\n * @param {module:Identities} params.identities An Identities instance.\n * @param {string} [params.address] The address of the database.\n * @function\n * @instance\n * @async\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @private\n */\n\n/**\n * Defines an OrbitDB access controller.\n * @param {Object} options Various options for configuring the\n * IPFSAccessController.\n * @param {Array} [params.write] An array of ids of identities who can write to the\n * database.\n * @return {module:AccessControllers.AccessControllers-OrbitDB} An\n * IPFSAccessController function.\n * @memberof module:AccessControllers\n */\nconst OrbitDBAccessController = ({ write } = {}) => async ({ orbitdb, identities, address, name }) => {\n address = address || name || await createId(64)\n write = write || [orbitdb.identity.id]\n\n // Open the database used for access information\n const db = await orbitdb.open(address, { type: 'keyvalue', AccessController: IPFSAccessController({ write }) })\n address = db.address\n\n /**\n * Verifies the write permission of an entry.\n * @param {module:Log~Entry} entry An entry to verify.\n * @return {boolean} True if the entry's identity has write permission,\n * false otherwise.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const canAppend = async (entry) => {\n const writerIdentity = await identities.getIdentity(entry.identity)\n if (!writerIdentity) {\n return false\n }\n\n const { id } = writerIdentity\n // If the ACL contains the writer's public key or it contains '*'\n const hasWriteAccess = await hasCapability('write', id) || await hasCapability('admin', id)\n if (hasWriteAccess) {\n return identities.verifyIdentity(writerIdentity)\n }\n\n return false\n }\n\n /**\n * Gets the access capabilities of the OrbitDB access controller.\n *\n * The returned capabilities will be a mixture of admin and write access\n * addresses.\n * @return {Array} A list of ids of identities with admin and write access.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const capabilities = async () => {\n const _capabilities = []\n for await (const entry of db.iterator()) {\n _capabilities[entry.key] = entry.value\n }\n\n const toSet = (e) => {\n const key = e[0]\n _capabilities[key] = new Set([...(_capabilities[key] || []), ...e[1]])\n }\n\n // Merge with the access controller of the database\n // and make sure all values are Sets\n Object.entries({\n ..._capabilities,\n // Add the root access controller's 'write' access list\n // as admins on this controller\n ...{ admin: new Set([...(_capabilities.admin || []), ...db.access.write]) }\n }).forEach(toSet)\n\n return _capabilities\n }\n\n /**\n * Gets a list of identities with the specified capability.\n * @param {string} capability A capability (e.g. write).\n * @return {Array} One or more addresses with the spcified capability.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const get = async (capability) => {\n const _capabilities = await capabilities()\n return _capabilities[capability] || new Set([])\n }\n\n /**\n * Close the underlying access control database.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const close = async () => {\n await db.close()\n }\n\n /**\n * Drop the underlying access control database.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const drop = async () => {\n await db.drop()\n }\n\n /**\n * Checks whether an identity has a capability.\n * @param {string} capability A capability (e.g. write).\n * @param {string} key An id of an identity.\n * @return {boolean} True if the identity has the capability, false\n * otherwise.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const hasCapability = async (capability, key) => {\n // Write keys and admins keys are allowed\n const access = new Set(await get(capability))\n return access.has(key) || access.has('*')\n }\n\n /**\n * Grants a capability to an identity, storing it to the access control\n * database.\n * @param {string} capability A capability (e.g. write).\n * @param {string} key An id of an identity.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const grant = async (capability, key) => {\n // Merge current keys with the new key\n const capabilities = new Set([...(await db.get(capability) || []), ...[key]])\n await db.put(capability, Array.from(capabilities.values()))\n }\n\n /**\n * Revokes a capability from an identity, removing it from the access control\n * database.\n * @param {string} capability A capability (e.g. write).\n * @param {string} key An id of an identity.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const revoke = async (capability, key) => {\n const capabilities = new Set(await db.get(capability) || [])\n capabilities.delete(key)\n if (capabilities.size > 0) {\n await db.put(capability, Array.from(capabilities.values()))\n } else {\n await db.del(capability)\n }\n }\n\n return {\n type,\n address,\n write,\n canAppend,\n capabilities,\n get,\n grant,\n revoke,\n close,\n drop,\n events: db.events\n }\n}\n\nOrbitDBAccessController.type = type\n\nexport default OrbitDBAccessController\n","/**\n * @module AccessControllers\n * @description\n * Provides a system for managing access controllers. Supported access\n * controllers can be added and removed from the access controller list, and\n * can load the associated module if they are supported.\n */\nimport IPFSAccessController from './ipfs.js'\nimport OrbitDBAccessController from './orbitdb.js'\n\nconst accessControllers = {}\n\n/**\n * Gets an access controller module specified by type.\n * @param {string} type A valid access controller type.\n * @return {AccessController} The access controller module.\n * @private\n */\nconst getAccessController = (type) => {\n if (!accessControllers[type]) {\n throw new Error(`AccessController type '${type}' is not supported`)\n }\n return accessControllers[type]\n}\n\n/**\n * Adds an access controller module to the list of supported access controller.\n * @param {AccessController} accessController A compatible access controller\n * module.\n * @throws AccessController does not contain required field \\'type\\'.\n * @throws AccessController '${accessController.type}' already added.\n * @static\n */\nconst useAccessController = (accessController) => {\n if (!accessController.type) {\n throw new Error('AccessController does not contain required field \\'type\\'.')\n }\n\n accessControllers[accessController.type] = accessController\n}\n\nuseAccessController(IPFSAccessController)\nuseAccessController(OrbitDBAccessController)\n\nexport {\n getAccessController,\n useAccessController,\n IPFSAccessController,\n OrbitDBAccessController\n}\n","/**\n* @module OrbitDB\n* @description Provides an interface for users to interact with OrbitDB.\n*/\nimport { getDatabaseType } from './databases/index.js'\nimport KeyStore from './key-store.js'\nimport { Identities } from './identities/index.js'\nimport OrbitDBAddress, { isValidAddress } from './address.js'\nimport ManifestStore from './manifest-store.js'\nimport { createId } from './utils/index.js'\nimport pathJoin from './utils/path-join.js'\nimport { getAccessController } from './access-controllers/index.js'\nimport IPFSAccessController from './access-controllers/ipfs.js'\n\nconst DefaultDatabaseType = 'events'\n\nconst DefaultAccessController = IPFSAccessController\n\n/**\n * Creates an instance of OrbitDB.\n * @function createOrbitDB\n * @param {Object} params One or more parameters for configuring OrbitDB.\n * @param {IPFS} params.ipfs An IPFS instance.\n * @param {string} [params.id] The id of the identity to use for this OrbitDB instance.\n * @param {module:Identity|Object} [params.identity] An identity instance or an object containing an Identity Provider instance and any additional params required to create the identity using the specified provider.\n * @param {Function} [params.identity.provider] An initialized identity provider.\n * @param {module:Identities} [params.identities] An Identities system instance.\n * @param {string} [params.directory] A location for storing OrbitDB data.\n * @return {module:OrbitDB~OrbitDB} An instance of OrbitDB.\n * @throws \"IPFS instance is required argument\" if no IPFS instance is provided.\n * @instance\n */\nconst OrbitDB = async ({ ipfs, id, identity, identities, directory } = {}) => {\n /**\n * @namespace module:OrbitDB~OrbitDB\n * @description The instance returned by {@link module:OrbitDB}.\n */\n\n if (ipfs == null) {\n throw new Error('IPFS instance is a required argument.')\n }\n\n id = id || await createId()\n const peerId = ipfs.libp2p.peerId\n directory = directory || './orbitdb'\n\n let keystore\n\n if (identities) {\n keystore = identities.keystore\n } else {\n keystore = await KeyStore({ path: pathJoin(directory, './keystore') })\n identities = await Identities({ ipfs, keystore })\n }\n\n if (identity) {\n if (identity.provider) {\n identity = await identities.createIdentity({ ...identity })\n }\n } else {\n identity = await identities.createIdentity({ id })\n }\n\n const manifestStore = await ManifestStore({ ipfs })\n\n let databases = {}\n\n /**\n * Open a database or create one if it does not already exist.\n *\n * By default, OrbitDB will create a database of type [DefaultDatabaseType]{@link module:OrbitDB~DefaultDatabaseType}:\n * ```\n * const mydb = await orbitdb.open('mydb')\n * ```\n * To create a database of a different type, specify the type param:\n * ```\n * const mydb = await orbitdb.open('mydb', {type: 'documents'})\n * ```\n * The type must be listed in [databaseTypes]{@link module:OrbitDB.databaseTypes} or an error is thrown.\n * To open an existing database, pass its address to the `open` function:\n * ```\n * const existingDB = await orbitdb.open(dbAddress)\n * ```\n * The address of a newly created database can be retrieved using\n * `db.address`.\n * @function\n * @param {string} address The address of an existing database to open, or\n * the name of a new database.\n * @param {Object} params One or more database configuration parameters.\n * @param {string} [params.type=events] The database's type.\n * @param {*} [params.meta={}] The database's metadata. Only applies when\n * creating a database and is not used when opening an existing database.\n * @param {boolean} [params.sync=true] If true, sync databases automatically.\n * Otherwise, false.\n * @param {module:Database} [params.Database=[Events]{@link module:Database.Database-Events}] A Database-compatible\n * module.\n * @param {module:AccessControllers}\n * [params.AccessController=[IPFSAccessController]{@link module:AccessControllers.AccessControllers-IPFS}]\n * An AccessController-compatible module.\n * @param {module:Storage} [params.headsStorage=[ComposedStorage]{@link module:Storage.Storage-Composed}] A compatible storage instance for storing\n * log heads. Defaults to ComposedStorage(LRUStorage, LevelStorage).\n * @param {module:Storage} [params.entryStorage=[ComposedStorage]{@link module:Storage.Storage-Composed}] A compatible storage instance for storing\n * log entries. Defaults to ComposedStorage(LRUStorage, IPFSBlockStorage).\n * @param {module:Storage} [params.indexStorage=[ComposedStorage]{@link module:Storage.Storage-Composed}] A compatible storage instance for storing an \" index of log entries. Defaults to ComposedStorage(LRUStorage, LevelStorage).\n * @param {number} [params.referencesCount] The number of references to\n * use for [Log]{@link module:Log} entries.\n * @memberof module:OrbitDB\n * @return {module:Database} A database instance.\n * @throws \"Unsupported database type\" if the type specified is not in the list\n * of known databaseTypes.\n * @memberof module:OrbitDB~OrbitDB\n * @instance\n * @async\n */\n const open = async (address, { type, meta, sync, Database, AccessController, headsStorage, entryStorage, indexStorage, referencesCount } = {}) => {\n let name, manifest, accessController\n\n if (databases[address]) {\n return databases[address]\n }\n\n if (isValidAddress(address)) {\n // If the address given was a valid OrbitDB address, eg. '/orbitdb/zdpuAuK3BHpS7NvMBivynypqciYCuy2UW77XYBPUYRnLjnw13'\n const addr = OrbitDBAddress(address)\n manifest = await manifestStore.get(addr.hash)\n const acType = manifest.accessController.split('/', 2).pop()\n AccessController = getAccessController(acType)()\n accessController = await AccessController({ orbitdb: { open, identity, ipfs }, identities, address: manifest.accessController })\n name = manifest.name\n type = type || manifest.type\n meta = manifest.meta\n } else {\n // If the address given was not valid, eg. just the name of the database\n type = type || DefaultDatabaseType\n AccessController = AccessController || DefaultAccessController()\n accessController = await AccessController({ orbitdb: { open, identity, ipfs }, identities, name: address })\n const m = await manifestStore.create({ name: address, type, accessController: accessController.address, meta })\n manifest = m.manifest\n address = OrbitDBAddress(m.hash)\n name = manifest.name\n meta = manifest.meta\n // Check if we already have the database open and return if it is\n if (databases[address]) {\n return databases[address]\n }\n }\n\n Database = Database || getDatabaseType(type)()\n\n if (!Database) {\n throw new Error(`Unsupported database type: '${type}'`)\n }\n\n address = address.toString()\n\n const db = await Database({ ipfs, identity, address, name, access: accessController, directory, meta, syncAutomatically: sync, headsStorage, entryStorage, indexStorage, referencesCount })\n\n db.events.on('close', onDatabaseClosed(address))\n\n databases[address] = db\n\n return db\n }\n\n const onDatabaseClosed = (address) => () => {\n delete databases[address]\n }\n\n /**\n * Stops OrbitDB, closing the underlying keystore and manifest store.\n * @function stop\n * @memberof module:OrbitDB~OrbitDB\n * @instance\n * @async\n */\n const stop = async () => {\n for (const db of Object.values(databases)) {\n await db.close()\n }\n if (keystore) {\n await keystore.close()\n }\n if (manifestStore) {\n await manifestStore.close()\n }\n databases = {}\n }\n\n return {\n id,\n open,\n stop,\n ipfs,\n directory,\n keystore,\n identity,\n peerId\n }\n}\n\nexport { OrbitDB as default, OrbitDBAddress }\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","import { bytes as binary, CID } from './index.js';\nfunction readonly({ enumerable = true, configurable = false } = {}) {\n return { enumerable, configurable, writable: false };\n}\nfunction* linksWithin(path, value) {\n if (value != null && typeof value === 'object') {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index];\n const cid = CID.asCID(element);\n if (cid != null) {\n yield [elementPath.join('/'), cid];\n }\n else if (typeof element === 'object') {\n yield* links(element, elementPath);\n }\n }\n }\n else {\n const cid = CID.asCID(value);\n if (cid != null) {\n yield [path.join('/'), cid];\n }\n else {\n yield* links(value, path);\n }\n }\n }\n}\nfunction* links(source, base) {\n if (source == null || source instanceof Uint8Array) {\n return;\n }\n const cid = CID.asCID(source);\n if (cid != null) {\n yield [base.join('/'), cid];\n }\n for (const [key, value] of Object.entries(source)) {\n const path = [...base, key];\n yield* linksWithin(path, value);\n }\n}\nfunction* treeWithin(path, value) {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index];\n yield elementPath.join('/');\n if (typeof element === 'object' && (CID.asCID(element) == null)) {\n yield* tree(element, elementPath);\n }\n }\n }\n else {\n yield* tree(value, path);\n }\n}\nfunction* tree(source, base) {\n if (source == null || typeof source !== 'object') {\n return;\n }\n for (const [key, value] of Object.entries(source)) {\n const path = [...base, key];\n yield path.join('/');\n if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && (CID.asCID(value) == null)) {\n yield* treeWithin(path, value);\n }\n }\n}\nfunction get(source, path) {\n let node = source;\n for (const [index, key] of path.entries()) {\n node = node[key];\n if (node == null) {\n throw new Error(`Object has no property at ${path.slice(0, index + 1).map(part => `[${JSON.stringify(part)}]`).join('')}`);\n }\n const cid = CID.asCID(node);\n if (cid != null) {\n return { value: cid, remaining: path.slice(index + 1).join('/') };\n }\n }\n return { value: node };\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template C - multicodec code corresponding to codec used to encode the block\n * @template A - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template V - CID version\n */\nexport class Block {\n cid;\n bytes;\n value;\n asBlock;\n constructor({ cid, bytes, value }) {\n if (cid == null || bytes == null || typeof value === 'undefined') {\n throw new Error('Missing required argument');\n }\n this.cid = cid;\n this.bytes = bytes;\n this.value = value;\n this.asBlock = this;\n // Mark all the properties immutable\n Object.defineProperties(this, {\n cid: readonly(),\n bytes: readonly(),\n value: readonly(),\n asBlock: readonly()\n });\n }\n links() {\n return links(this.value, []);\n }\n tree() {\n return tree(this.value, []);\n }\n get(path = '/') {\n return get(this.value, path.split('/').filter(Boolean));\n }\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n */\nexport async function encode({ value, codec, hasher }) {\n if (typeof value === 'undefined')\n throw new Error('Missing required argument \"value\"');\n if (codec == null || hasher == null)\n throw new Error('Missing required argument: codec or hasher');\n const bytes = codec.encode(value);\n const hash = await hasher.digest(bytes);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const cid = CID.create(1, codec.code, hash);\n return new Block({ value, bytes, cid });\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n */\nexport async function decode({ bytes, codec, hasher }) {\n if (bytes == null)\n throw new Error('Missing required argument \"bytes\"');\n if (codec == null || hasher == null)\n throw new Error('Missing required argument: codec or hasher');\n const value = codec.decode(bytes);\n const hash = await hasher.digest(bytes);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const cid = CID.create(1, codec.code, hash);\n return new Block({ value, bytes, cid });\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template V - CID version\n */\nexport function createUnsafe({ bytes, cid, value: maybeValue, codec }) {\n const value = maybeValue !== undefined\n ? maybeValue\n : (codec?.decode(bytes));\n if (value === undefined)\n throw new Error('Missing required argument, must either provide \"value\" or \"codec\"');\n return new Block({\n cid: cid,\n bytes,\n value\n });\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template V - CID version\n */\nexport async function create({ bytes, cid, hasher, codec }) {\n if (bytes == null)\n throw new Error('Missing required argument \"bytes\"');\n if (hasher == null)\n throw new Error('Missing required argument \"hasher\"');\n const value = codec.decode(bytes);\n const hash = await hasher.digest(bytes);\n if (!binary.equals(cid.multihash.bytes, hash.bytes)) {\n throw new Error('CID hash does not match bytes');\n }\n return createUnsafe({\n bytes,\n cid,\n value,\n codec\n });\n}\n//# sourceMappingURL=block.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","export const MODÉRATEUR = \"MODÉRATEUR\";\nexport const MEMBRE = \"MEMBRE\";\nexport const rôles = [MODÉRATEUR, MEMBRE];\n//# sourceMappingURL=consts.js.map","import { Database, } from \"@orbitdb/core\";\nconst type = \"feed\";\nconst Feed = () => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate, }) => {\n const database = await Database({\n ipfs,\n identity,\n address,\n name,\n access,\n directory,\n meta,\n headsStorage,\n entryStorage,\n indexStorage,\n referencesCount,\n syncAutomatically,\n onUpdate,\n });\n const { addOperation, log } = database;\n const add = async (value) => {\n return addOperation({ op: \"ADD\", key: null, value });\n };\n const remove = async (hash) => {\n return addOperation({ op: \"DEL\", key: null, value: hash });\n };\n const iterator = async function* ({ amount, } = {}) {\n const vals = {};\n let count = 0;\n for await (const entry of log.traverse()) {\n const { op, value } = entry.payload;\n const { hash } = entry;\n if (op === \"ADD\" && !vals[hash]) {\n count++;\n const hash = entry.hash;\n vals[hash] = true;\n yield { value, hash };\n }\n else if (op === \"DEL\" && !vals[value]) {\n vals[value] = true;\n }\n if (amount !== undefined && count >= amount) {\n break;\n }\n }\n };\n const all = async () => {\n const values = [];\n for await (const entry of iterator()) {\n values.unshift(entry);\n }\n return values;\n };\n return {\n ...database,\n type,\n add,\n remove,\n iterator,\n all,\n };\n};\nFeed.type = type;\nexport default Feed;\n//# sourceMappingURL=feed.js.map","import { useDatabaseType } from \"@orbitdb/core\";\nimport Feed from \"./feed.js\";\nexport const registerFeed = () => useDatabaseType(Feed);\n//# sourceMappingURL=utils.js.map","import { Database, } from \"@orbitdb/core\";\nconst type = \"set\";\nconst Set = () => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate, }) => {\n const database = await Database({\n ipfs,\n identity,\n address,\n name,\n access,\n directory,\n meta,\n headsStorage,\n entryStorage,\n indexStorage,\n referencesCount,\n syncAutomatically,\n onUpdate,\n });\n const { addOperation, log } = database;\n const add = async (value) => {\n return addOperation({ op: \"ADD\", key: null, value });\n };\n const del = async (value) => {\n return addOperation({ op: \"DEL\", key: null, value });\n };\n const iterator = async function* ({ amount, } = {}) {\n const vals = {};\n let count = 0;\n for await (const entry of log.traverse()) {\n const { op, value } = entry.payload;\n const key = JSON.stringify(value);\n if (op === \"ADD\" && !vals[key]) {\n vals[key] = true;\n count++;\n const hash = entry.hash;\n yield { value, hash };\n }\n else if (op === \"DEL\" && !vals[key]) {\n vals[key] = true;\n }\n if (amount !== undefined && count >= amount) {\n break;\n }\n }\n };\n const all = async () => {\n const values = [];\n for await (const entry of iterator()) {\n values.unshift(entry);\n }\n return values;\n };\n return {\n ...database,\n type,\n add,\n del,\n iterator,\n all,\n };\n};\nSet.type = type;\nexport default Set;\n//# sourceMappingURL=set.js.map","import { useDatabaseType } from \"@orbitdb/core\";\nimport Set from \"./set.js\";\nexport const registerSet = () => useDatabaseType(Set);\n//# sourceMappingURL=utils.js.map","import { Database, } from \"@orbitdb/core\";\nconst type = \"ordered-keyvalue\";\nconst OrderedKeyValue = () => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate, }) => {\n const database = await Database({\n ipfs,\n identity,\n address,\n name,\n access,\n directory,\n meta,\n headsStorage,\n entryStorage,\n indexStorage,\n referencesCount,\n syncAutomatically,\n onUpdate,\n });\n const { addOperation, log } = database;\n const put = async (key, value, position) => {\n const entryValue = { value };\n if (position !== undefined) {\n entryValue.position = position;\n }\n return addOperation({ op: \"PUT\", key, value: entryValue });\n };\n const move = async (key, position) => {\n return addOperation({ op: \"MOVE\", key, value: position });\n };\n const del = async (key) => {\n return addOperation({ op: \"DEL\", key, value: null });\n };\n const get = async (key) => {\n for await (const entry of log.traverse()) {\n const { op, key: k, value } = entry.payload;\n if (op === \"PUT\" && k === key) {\n return value;\n }\n else if (op === \"DEL\" && k === key) {\n return undefined;\n }\n }\n return undefined;\n };\n const iterator = async function* ({ amount, } = {}) {\n const keys = {};\n const positions = {};\n let count = 0;\n for await (const entry of log.traverse()) {\n const { op, key, value } = entry.payload;\n if (!key)\n return;\n if (op === \"PUT\" && !keys[key]) {\n keys[key] = true;\n const putValue = value;\n const hash = entry.hash;\n const position = positions[key] !== undefined\n ? positions[key]\n : putValue.position !== undefined\n ? putValue.position\n : 0;\n positions[key] = position;\n count++;\n yield { key, value: putValue.value, position, hash };\n }\n else if (op === \"MOVE\" && !keys[key]) {\n positions[key] = value;\n }\n else if (op === \"DEL\" && !keys[key]) {\n keys[key] = true;\n }\n if (amount !== undefined && count >= amount) {\n break;\n }\n }\n };\n const all = async () => {\n const values = [];\n for await (const entry of iterator()) {\n values.unshift(entry);\n }\n return values\n .sort((a, b) => a.position > b.position ? 1 : a.position === b.position ? 0 : -1)\n .map((x) => ({\n key: x.key,\n value: x.value,\n hash: x.hash,\n }));\n };\n return {\n ...database,\n type,\n put,\n set: put, // Alias for put()\n del,\n move,\n get,\n iterator,\n all,\n };\n};\nOrderedKeyValue.type = type;\nexport default OrderedKeyValue;\n//# sourceMappingURL=ordered-keyvalue.js.map","import { useDatabaseType } from \"@orbitdb/core\";\nimport OrderedKeyValue from \"./ordered-keyvalue.js\";\nexport const registerOrderedKeyValue = () => useDatabaseType(OrderedKeyValue);\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nclass _CodeOrName {\n}\nexports._CodeOrName = _CodeOrName;\nexports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nclass Name extends _CodeOrName {\n constructor(s) {\n super();\n if (!exports.IDENTIFIER.test(s))\n throw new Error(\"CodeGen: name must be a valid identifier\");\n this.str = s;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n return false;\n }\n get names() {\n return { [this.str]: 1 };\n }\n}\nexports.Name = Name;\nclass _Code extends _CodeOrName {\n constructor(code) {\n super();\n this._items = typeof code === \"string\" ? [code] : code;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n if (this._items.length > 1)\n return false;\n const item = this._items[0];\n return item === \"\" || item === '\"\"';\n }\n get str() {\n var _a;\n return ((_a = this._str) !== null && _a !== void 0 ? _a : (this._str = this._items.reduce((s, c) => `${s}${c}`, \"\")));\n }\n get names() {\n var _a;\n return ((_a = this._names) !== null && _a !== void 0 ? _a : (this._names = this._items.reduce((names, c) => {\n if (c instanceof Name)\n names[c.str] = (names[c.str] || 0) + 1;\n return names;\n }, {})));\n }\n}\nexports._Code = _Code;\nexports.nil = new _Code(\"\");\nfunction _(strs, ...args) {\n const code = [strs[0]];\n let i = 0;\n while (i < args.length) {\n addCodeArg(code, args[i]);\n code.push(strs[++i]);\n }\n return new _Code(code);\n}\nexports._ = _;\nconst plus = new _Code(\"+\");\nfunction str(strs, ...args) {\n const expr = [safeStringify(strs[0])];\n let i = 0;\n while (i < args.length) {\n expr.push(plus);\n addCodeArg(expr, args[i]);\n expr.push(plus, safeStringify(strs[++i]));\n }\n optimize(expr);\n return new _Code(expr);\n}\nexports.str = str;\nfunction addCodeArg(code, arg) {\n if (arg instanceof _Code)\n code.push(...arg._items);\n else if (arg instanceof Name)\n code.push(arg);\n else\n code.push(interpolate(arg));\n}\nexports.addCodeArg = addCodeArg;\nfunction optimize(expr) {\n let i = 1;\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1]);\n if (res !== undefined) {\n expr.splice(i - 1, 3, res);\n continue;\n }\n expr[i++] = \"+\";\n }\n i++;\n }\n}\nfunction mergeExprItems(a, b) {\n if (b === '\"\"')\n return a;\n if (a === '\"\"')\n return b;\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"')\n return;\n if (typeof b != \"string\")\n return `${a.slice(0, -1)}${b}\"`;\n if (b[0] === '\"')\n return a.slice(0, -1) + b.slice(1);\n return;\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name))\n return `\"${a}${b.slice(1)}`;\n return;\n}\nfunction strConcat(c1, c2) {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str `${c1}${c2}`;\n}\nexports.strConcat = strConcat;\n// TODO do not allow arrays here\nfunction interpolate(x) {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x);\n}\nfunction stringify(x) {\n return new _Code(safeStringify(x));\n}\nexports.stringify = stringify;\nfunction safeStringify(x) {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\nexports.safeStringify = safeStringify;\nfunction getProperty(key) {\n return typeof key == \"string\" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _ `[${key}]`;\n}\nexports.getProperty = getProperty;\n//Does best effort to format the name properly\nfunction getEsmExportName(key) {\n if (typeof key == \"string\" && exports.IDENTIFIER.test(key)) {\n return new _Code(`${key}`);\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`);\n}\nexports.getEsmExportName = getEsmExportName;\nfunction regexpCode(rx) {\n return new _Code(rx.toString());\n}\nexports.regexpCode = regexpCode;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0;\nconst code_1 = require(\"./code\");\nclass ValueError extends Error {\n constructor(name) {\n super(`CodeGen: \"code\" for ${name} not defined`);\n this.value = name.value;\n }\n}\nvar UsedValueState;\n(function (UsedValueState) {\n UsedValueState[UsedValueState[\"Started\"] = 0] = \"Started\";\n UsedValueState[UsedValueState[\"Completed\"] = 1] = \"Completed\";\n})(UsedValueState || (exports.UsedValueState = UsedValueState = {}));\nexports.varKinds = {\n const: new code_1.Name(\"const\"),\n let: new code_1.Name(\"let\"),\n var: new code_1.Name(\"var\"),\n};\nclass Scope {\n constructor({ prefixes, parent } = {}) {\n this._names = {};\n this._prefixes = prefixes;\n this._parent = parent;\n }\n toName(nameOrPrefix) {\n return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix);\n }\n name(prefix) {\n return new code_1.Name(this._newName(prefix));\n }\n _newName(prefix) {\n const ng = this._names[prefix] || this._nameGroup(prefix);\n return `${prefix}${ng.index++}`;\n }\n _nameGroup(prefix) {\n var _a, _b;\n if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`);\n }\n return (this._names[prefix] = { prefix, index: 0 });\n }\n}\nexports.Scope = Scope;\nclass ValueScopeName extends code_1.Name {\n constructor(prefix, nameStr) {\n super(nameStr);\n this.prefix = prefix;\n }\n setValue(value, { property, itemIndex }) {\n this.value = value;\n this.scopePath = (0, code_1._) `.${new code_1.Name(property)}[${itemIndex}]`;\n }\n}\nexports.ValueScopeName = ValueScopeName;\nconst line = (0, code_1._) `\\n`;\nclass ValueScope extends Scope {\n constructor(opts) {\n super(opts);\n this._values = {};\n this._scope = opts.scope;\n this.opts = { ...opts, _n: opts.lines ? line : code_1.nil };\n }\n get() {\n return this._scope;\n }\n name(prefix) {\n return new ValueScopeName(prefix, this._newName(prefix));\n }\n value(nameOrPrefix, value) {\n var _a;\n if (value.ref === undefined)\n throw new Error(\"CodeGen: ref must be passed in value\");\n const name = this.toName(nameOrPrefix);\n const { prefix } = name;\n const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref;\n let vs = this._values[prefix];\n if (vs) {\n const _name = vs.get(valueKey);\n if (_name)\n return _name;\n }\n else {\n vs = this._values[prefix] = new Map();\n }\n vs.set(valueKey, name);\n const s = this._scope[prefix] || (this._scope[prefix] = []);\n const itemIndex = s.length;\n s[itemIndex] = value.ref;\n name.setValue(value, { property: prefix, itemIndex });\n return name;\n }\n getValue(prefix, keyOrRef) {\n const vs = this._values[prefix];\n if (!vs)\n return;\n return vs.get(keyOrRef);\n }\n scopeRefs(scopeName, values = this._values) {\n return this._reduceValues(values, (name) => {\n if (name.scopePath === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return (0, code_1._) `${scopeName}${name.scopePath}`;\n });\n }\n scopeCode(values = this._values, usedValues, getCode) {\n return this._reduceValues(values, (name) => {\n if (name.value === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return name.value.code;\n }, usedValues, getCode);\n }\n _reduceValues(values, valueCode, usedValues = {}, getCode) {\n let code = code_1.nil;\n for (const prefix in values) {\n const vs = values[prefix];\n if (!vs)\n continue;\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map());\n vs.forEach((name) => {\n if (nameSet.has(name))\n return;\n nameSet.set(name, UsedValueState.Started);\n let c = valueCode(name);\n if (c) {\n const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const;\n code = (0, code_1._) `${code}${def} ${name} = ${c};${this.opts._n}`;\n }\n else if ((c = getCode === null || getCode === void 0 ? void 0 : getCode(name))) {\n code = (0, code_1._) `${code}${c}${this.opts._n}`;\n }\n else {\n throw new ValueError(name);\n }\n nameSet.set(name, UsedValueState.Completed);\n });\n }\n return code;\n }\n}\nexports.ValueScope = ValueScope;\n//# sourceMappingURL=scope.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;\nconst code_1 = require(\"./code\");\nconst scope_1 = require(\"./scope\");\nvar code_2 = require(\"./code\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return code_2._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return code_2.str; } });\nObject.defineProperty(exports, \"strConcat\", { enumerable: true, get: function () { return code_2.strConcat; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return code_2.nil; } });\nObject.defineProperty(exports, \"getProperty\", { enumerable: true, get: function () { return code_2.getProperty; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return code_2.stringify; } });\nObject.defineProperty(exports, \"regexpCode\", { enumerable: true, get: function () { return code_2.regexpCode; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return code_2.Name; } });\nvar scope_2 = require(\"./scope\");\nObject.defineProperty(exports, \"Scope\", { enumerable: true, get: function () { return scope_2.Scope; } });\nObject.defineProperty(exports, \"ValueScope\", { enumerable: true, get: function () { return scope_2.ValueScope; } });\nObject.defineProperty(exports, \"ValueScopeName\", { enumerable: true, get: function () { return scope_2.ValueScopeName; } });\nObject.defineProperty(exports, \"varKinds\", { enumerable: true, get: function () { return scope_2.varKinds; } });\nexports.operators = {\n GT: new code_1._Code(\">\"),\n GTE: new code_1._Code(\">=\"),\n LT: new code_1._Code(\"<\"),\n LTE: new code_1._Code(\"<=\"),\n EQ: new code_1._Code(\"===\"),\n NEQ: new code_1._Code(\"!==\"),\n NOT: new code_1._Code(\"!\"),\n OR: new code_1._Code(\"||\"),\n AND: new code_1._Code(\"&&\"),\n ADD: new code_1._Code(\"+\"),\n};\nclass Node {\n optimizeNodes() {\n return this;\n }\n optimizeNames(_names, _constants) {\n return this;\n }\n}\nclass Def extends Node {\n constructor(varKind, name, rhs) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.rhs = rhs;\n }\n render({ es5, _n }) {\n const varKind = es5 ? scope_1.varKinds.var : this.varKind;\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`;\n return `${varKind} ${this.name}${rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (!names[this.name.str])\n return;\n if (this.rhs)\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {};\n }\n}\nclass Assign extends Node {\n constructor(lhs, rhs, sideEffects) {\n super();\n this.lhs = lhs;\n this.rhs = rhs;\n this.sideEffects = sideEffects;\n }\n render({ _n }) {\n return `${this.lhs} = ${this.rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)\n return;\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names };\n return addExprNames(names, this.rhs);\n }\n}\nclass AssignOp extends Assign {\n constructor(lhs, op, rhs, sideEffects) {\n super(lhs, rhs, sideEffects);\n this.op = op;\n }\n render({ _n }) {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n;\n }\n}\nclass Label extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n return `${this.label}:` + _n;\n }\n}\nclass Break extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n const label = this.label ? ` ${this.label}` : \"\";\n return `break${label};` + _n;\n }\n}\nclass Throw extends Node {\n constructor(error) {\n super();\n this.error = error;\n }\n render({ _n }) {\n return `throw ${this.error};` + _n;\n }\n get names() {\n return this.error.names;\n }\n}\nclass AnyCode extends Node {\n constructor(code) {\n super();\n this.code = code;\n }\n render({ _n }) {\n return `${this.code};` + _n;\n }\n optimizeNodes() {\n return `${this.code}` ? this : undefined;\n }\n optimizeNames(names, constants) {\n this.code = optimizeExpr(this.code, names, constants);\n return this;\n }\n get names() {\n return this.code instanceof code_1._CodeOrName ? this.code.names : {};\n }\n}\nclass ParentNode extends Node {\n constructor(nodes = []) {\n super();\n this.nodes = nodes;\n }\n render(opts) {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\");\n }\n optimizeNodes() {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n const n = nodes[i].optimizeNodes();\n if (Array.isArray(n))\n nodes.splice(i, 1, ...n);\n else if (n)\n nodes[i] = n;\n else\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n optimizeNames(names, constants) {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i];\n if (n.optimizeNames(names, constants))\n continue;\n subtractNames(names, n.names);\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n get names() {\n return this.nodes.reduce((names, n) => addNames(names, n.names), {});\n }\n}\nclass BlockNode extends ParentNode {\n render(opts) {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n;\n }\n}\nclass Root extends ParentNode {\n}\nclass Else extends BlockNode {\n}\nElse.kind = \"else\";\nclass If extends BlockNode {\n constructor(condition, nodes) {\n super(nodes);\n this.condition = condition;\n }\n render(opts) {\n let code = `if(${this.condition})` + super.render(opts);\n if (this.else)\n code += \"else \" + this.else.render(opts);\n return code;\n }\n optimizeNodes() {\n super.optimizeNodes();\n const cond = this.condition;\n if (cond === true)\n return this.nodes; // else is ignored here\n let e = this.else;\n if (e) {\n const ns = e.optimizeNodes();\n e = this.else = Array.isArray(ns) ? new Else(ns) : ns;\n }\n if (e) {\n if (cond === false)\n return e instanceof If ? e : e.nodes;\n if (this.nodes.length)\n return this;\n return new If(not(cond), e instanceof If ? [e] : e.nodes);\n }\n if (cond === false || !this.nodes.length)\n return undefined;\n return this;\n }\n optimizeNames(names, constants) {\n var _a;\n this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n if (!(super.optimizeNames(names, constants) || this.else))\n return;\n this.condition = optimizeExpr(this.condition, names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n addExprNames(names, this.condition);\n if (this.else)\n addNames(names, this.else.names);\n return names;\n }\n}\nIf.kind = \"if\";\nclass For extends BlockNode {\n}\nFor.kind = \"for\";\nclass ForLoop extends For {\n constructor(iteration) {\n super();\n this.iteration = iteration;\n }\n render(opts) {\n return `for(${this.iteration})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iteration = optimizeExpr(this.iteration, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iteration.names);\n }\n}\nclass ForRange extends For {\n constructor(varKind, name, from, to) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.from = from;\n this.to = to;\n }\n render(opts) {\n const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind;\n const { name, from, to } = this;\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts);\n }\n get names() {\n const names = addExprNames(super.names, this.from);\n return addExprNames(names, this.to);\n }\n}\nclass ForIter extends For {\n constructor(loop, varKind, name, iterable) {\n super();\n this.loop = loop;\n this.varKind = varKind;\n this.name = name;\n this.iterable = iterable;\n }\n render(opts) {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iterable = optimizeExpr(this.iterable, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iterable.names);\n }\n}\nclass Func extends BlockNode {\n constructor(name, args, async) {\n super();\n this.name = name;\n this.args = args;\n this.async = async;\n }\n render(opts) {\n const _async = this.async ? \"async \" : \"\";\n return `${_async}function ${this.name}(${this.args})` + super.render(opts);\n }\n}\nFunc.kind = \"func\";\nclass Return extends ParentNode {\n render(opts) {\n return \"return \" + super.render(opts);\n }\n}\nReturn.kind = \"return\";\nclass Try extends BlockNode {\n render(opts) {\n let code = \"try\" + super.render(opts);\n if (this.catch)\n code += this.catch.render(opts);\n if (this.finally)\n code += this.finally.render(opts);\n return code;\n }\n optimizeNodes() {\n var _a, _b;\n super.optimizeNodes();\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes();\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes();\n return this;\n }\n optimizeNames(names, constants) {\n var _a, _b;\n super.optimizeNames(names, constants);\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n if (this.catch)\n addNames(names, this.catch.names);\n if (this.finally)\n addNames(names, this.finally.names);\n return names;\n }\n}\nclass Catch extends BlockNode {\n constructor(error) {\n super();\n this.error = error;\n }\n render(opts) {\n return `catch(${this.error})` + super.render(opts);\n }\n}\nCatch.kind = \"catch\";\nclass Finally extends BlockNode {\n render(opts) {\n return \"finally\" + super.render(opts);\n }\n}\nFinally.kind = \"finally\";\nclass CodeGen {\n constructor(extScope, opts = {}) {\n this._values = {};\n this._blockStarts = [];\n this._constants = {};\n this.opts = { ...opts, _n: opts.lines ? \"\\n\" : \"\" };\n this._extScope = extScope;\n this._scope = new scope_1.Scope({ parent: extScope });\n this._nodes = [new Root()];\n }\n toString() {\n return this._root.render(this.opts);\n }\n // returns unique name in the internal scope\n name(prefix) {\n return this._scope.name(prefix);\n }\n // reserves unique name in the external scope\n scopeName(prefix) {\n return this._extScope.name(prefix);\n }\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName, value) {\n const name = this._extScope.value(prefixOrName, value);\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set());\n vs.add(name);\n return name;\n }\n getScopeValue(prefix, keyOrRef) {\n return this._extScope.getValue(prefix, keyOrRef);\n }\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName) {\n return this._extScope.scopeRefs(scopeName, this._values);\n }\n scopeCode() {\n return this._extScope.scopeCode(this._values);\n }\n _def(varKind, nameOrPrefix, rhs, constant) {\n const name = this._scope.toName(nameOrPrefix);\n if (rhs !== undefined && constant)\n this._constants[name.str] = rhs;\n this._leafNode(new Def(varKind, name, rhs));\n return name;\n }\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant);\n }\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant);\n }\n // `var` declaration with optional assignment\n var(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant);\n }\n // assignment code\n assign(lhs, rhs, sideEffects) {\n return this._leafNode(new Assign(lhs, rhs, sideEffects));\n }\n // `+=` code\n add(lhs, rhs) {\n return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs));\n }\n // appends passed SafeExpr to code or executes Block\n code(c) {\n if (typeof c == \"function\")\n c();\n else if (c !== code_1.nil)\n this._leafNode(new AnyCode(c));\n return this;\n }\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues) {\n const code = [\"{\"];\n for (const [key, value] of keyValues) {\n if (code.length > 1)\n code.push(\",\");\n code.push(key);\n if (key !== value || this.opts.es5) {\n code.push(\":\");\n (0, code_1.addCodeArg)(code, value);\n }\n }\n code.push(\"}\");\n return new code_1._Code(code);\n }\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition, thenBody, elseBody) {\n this._blockNode(new If(condition));\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf();\n }\n else if (thenBody) {\n this.code(thenBody).endIf();\n }\n else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body');\n }\n return this;\n }\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition) {\n return this._elseNode(new If(condition));\n }\n // `else` clause - only valid after `if` or `else if` clauses\n else() {\n return this._elseNode(new Else());\n }\n // end `if` statement (needed if gen.if was used only with condition)\n endIf() {\n return this._endBlockNode(If, Else);\n }\n _for(node, forBody) {\n this._blockNode(node);\n if (forBody)\n this.code(forBody).endFor();\n return this;\n }\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration, forBody) {\n return this._for(new ForLoop(iteration), forBody);\n }\n // `for` statement for a range of values\n forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) {\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name));\n }\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) {\n const name = this._scope.toName(nameOrPrefix);\n if (this.opts.es5) {\n const arr = iterable instanceof code_1.Name ? iterable : this.var(\"_arr\", iterable);\n return this.forRange(\"_i\", 0, (0, code_1._) `${arr}.length`, (i) => {\n this.var(name, (0, code_1._) `${arr}[${i}]`);\n forBody(name);\n });\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name));\n }\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, (0, code_1._) `Object.keys(${obj})`, forBody);\n }\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name));\n }\n // end `for` loop\n endFor() {\n return this._endBlockNode(For);\n }\n // `label` statement\n label(label) {\n return this._leafNode(new Label(label));\n }\n // `break` statement\n break(label) {\n return this._leafNode(new Break(label));\n }\n // `return` statement\n return(value) {\n const node = new Return();\n this._blockNode(node);\n this.code(value);\n if (node.nodes.length !== 1)\n throw new Error('CodeGen: \"return\" should have one node');\n return this._endBlockNode(Return);\n }\n // `try` statement\n try(tryBody, catchCode, finallyCode) {\n if (!catchCode && !finallyCode)\n throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"');\n const node = new Try();\n this._blockNode(node);\n this.code(tryBody);\n if (catchCode) {\n const error = this.name(\"e\");\n this._currNode = node.catch = new Catch(error);\n catchCode(error);\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally();\n this.code(finallyCode);\n }\n return this._endBlockNode(Catch, Finally);\n }\n // `throw` statement\n throw(error) {\n return this._leafNode(new Throw(error));\n }\n // start self-balancing block\n block(body, nodeCount) {\n this._blockStarts.push(this._nodes.length);\n if (body)\n this.code(body).endBlock(nodeCount);\n return this;\n }\n // end the current self-balancing block\n endBlock(nodeCount) {\n const len = this._blockStarts.pop();\n if (len === undefined)\n throw new Error(\"CodeGen: not in self-balancing block\");\n const toClose = this._nodes.length - len;\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);\n }\n this._nodes.length = len;\n return this;\n }\n // `function` heading (or definition if funcBody is passed)\n func(name, args = code_1.nil, async, funcBody) {\n this._blockNode(new Func(name, args, async));\n if (funcBody)\n this.code(funcBody).endFunc();\n return this;\n }\n // end function definition\n endFunc() {\n return this._endBlockNode(Func);\n }\n optimize(n = 1) {\n while (n-- > 0) {\n this._root.optimizeNodes();\n this._root.optimizeNames(this._root.names, this._constants);\n }\n }\n _leafNode(node) {\n this._currNode.nodes.push(node);\n return this;\n }\n _blockNode(node) {\n this._currNode.nodes.push(node);\n this._nodes.push(node);\n }\n _endBlockNode(N1, N2) {\n const n = this._currNode;\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop();\n return this;\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`);\n }\n _elseNode(node) {\n const n = this._currNode;\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"');\n }\n this._currNode = n.else = node;\n return this;\n }\n get _root() {\n return this._nodes[0];\n }\n get _currNode() {\n const ns = this._nodes;\n return ns[ns.length - 1];\n }\n set _currNode(node) {\n const ns = this._nodes;\n ns[ns.length - 1] = node;\n }\n}\nexports.CodeGen = CodeGen;\nfunction addNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) + (from[n] || 0);\n return names;\n}\nfunction addExprNames(names, from) {\n return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;\n}\nfunction optimizeExpr(expr, names, constants) {\n if (expr instanceof code_1.Name)\n return replaceName(expr);\n if (!canOptimize(expr))\n return expr;\n return new code_1._Code(expr._items.reduce((items, c) => {\n if (c instanceof code_1.Name)\n c = replaceName(c);\n if (c instanceof code_1._Code)\n items.push(...c._items);\n else\n items.push(c);\n return items;\n }, []));\n function replaceName(n) {\n const c = constants[n.str];\n if (c === undefined || names[n.str] !== 1)\n return n;\n delete names[n.str];\n return c;\n }\n function canOptimize(e) {\n return (e instanceof code_1._Code &&\n e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== undefined));\n }\n}\nfunction subtractNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) - (from[n] || 0);\n}\nfunction not(x) {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : (0, code_1._) `!${par(x)}`;\n}\nexports.not = not;\nconst andCode = mappend(exports.operators.AND);\n// boolean AND (&&) expression with the passed arguments\nfunction and(...args) {\n return args.reduce(andCode);\n}\nexports.and = and;\nconst orCode = mappend(exports.operators.OR);\n// boolean OR (||) expression with the passed arguments\nfunction or(...args) {\n return args.reduce(orCode);\n}\nexports.or = or;\nfunction mappend(op) {\n return (x, y) => (x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._) `${par(x)} ${op} ${par(y)}`);\n}\nfunction par(x) {\n return x instanceof code_1.Name ? x : (0, code_1._) `(${x})`;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst code_1 = require(\"./codegen/code\");\n// TODO refactor to use Set\nfunction toHash(arr) {\n const hash = {};\n for (const item of arr)\n hash[item] = true;\n return hash;\n}\nexports.toHash = toHash;\nfunction alwaysValidSchema(it, schema) {\n if (typeof schema == \"boolean\")\n return schema;\n if (Object.keys(schema).length === 0)\n return true;\n checkUnknownRules(it, schema);\n return !schemaHasRules(schema, it.self.RULES.all);\n}\nexports.alwaysValidSchema = alwaysValidSchema;\nfunction checkUnknownRules(it, schema = it.schema) {\n const { opts, self } = it;\n if (!opts.strictSchema)\n return;\n if (typeof schema === \"boolean\")\n return;\n const rules = self.RULES.keywords;\n for (const key in schema) {\n if (!rules[key])\n checkStrictMode(it, `unknown keyword: \"${key}\"`);\n }\n}\nexports.checkUnknownRules = checkUnknownRules;\nfunction schemaHasRules(schema, rules) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (rules[key])\n return true;\n return false;\n}\nexports.schemaHasRules = schemaHasRules;\nfunction schemaHasRulesButRef(schema, RULES) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (key !== \"$ref\" && RULES.all[key])\n return true;\n return false;\n}\nexports.schemaHasRulesButRef = schemaHasRulesButRef;\nfunction schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\")\n return schema;\n if (typeof schema == \"string\")\n return (0, codegen_1._) `${schema}`;\n }\n return (0, codegen_1._) `${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`;\n}\nexports.schemaRefOrVal = schemaRefOrVal;\nfunction unescapeFragment(str) {\n return unescapeJsonPointer(decodeURIComponent(str));\n}\nexports.unescapeFragment = unescapeFragment;\nfunction escapeFragment(str) {\n return encodeURIComponent(escapeJsonPointer(str));\n}\nexports.escapeFragment = escapeFragment;\nfunction escapeJsonPointer(str) {\n if (typeof str == \"number\")\n return `${str}`;\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nexports.escapeJsonPointer = escapeJsonPointer;\nfunction unescapeJsonPointer(str) {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\nexports.unescapeJsonPointer = unescapeJsonPointer;\nfunction eachItem(xs, f) {\n if (Array.isArray(xs)) {\n for (const x of xs)\n f(x);\n }\n else {\n f(xs);\n }\n}\nexports.eachItem = eachItem;\nfunction makeMergeEvaluated({ mergeNames, mergeToName, mergeValues, resultToName, }) {\n return (gen, from, to, toName) => {\n const res = to === undefined\n ? from\n : to instanceof codegen_1.Name\n ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof codegen_1.Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to);\n return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res;\n };\n}\nexports.mergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => {\n gen.if((0, codegen_1._) `${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._) `${to} || {}`).code((0, codegen_1._) `Object.assign(${to}, ${from})`));\n }),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true);\n }\n else {\n gen.assign(to, (0, codegen_1._) `${to} || {}`);\n setEvaluated(gen, to, from);\n }\n }),\n mergeValues: (from, to) => (from === true ? true : { ...from, ...to }),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._) `${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._) `${to} > ${from} ? ${to} : ${from}`)),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n};\nfunction evaluatedPropsToName(gen, ps) {\n if (ps === true)\n return gen.var(\"props\", true);\n const props = gen.var(\"props\", (0, codegen_1._) `{}`);\n if (ps !== undefined)\n setEvaluated(gen, props, ps);\n return props;\n}\nexports.evaluatedPropsToName = evaluatedPropsToName;\nfunction setEvaluated(gen, props, ps) {\n Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._) `${props}${(0, codegen_1.getProperty)(p)}`, true));\n}\nexports.setEvaluated = setEvaluated;\nconst snippets = {};\nfunction useFunc(gen, f) {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)),\n });\n}\nexports.useFunc = useFunc;\nvar Type;\n(function (Type) {\n Type[Type[\"Num\"] = 0] = \"Num\";\n Type[Type[\"Str\"] = 1] = \"Str\";\n})(Type || (exports.Type = Type = {}));\nfunction getErrorPath(dataProp, dataPropType, jsPropertySyntax) {\n // let path\n if (dataProp instanceof codegen_1.Name) {\n const isNumber = dataPropType === Type.Num;\n return jsPropertySyntax\n ? isNumber\n ? (0, codegen_1._) `\"[\" + ${dataProp} + \"]\"`\n : (0, codegen_1._) `\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? (0, codegen_1._) `\"/\" + ${dataProp}`\n : (0, codegen_1._) `\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")`; // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp);\n}\nexports.getErrorPath = getErrorPath;\nfunction checkStrictMode(it, msg, mode = it.opts.strictSchema) {\n if (!mode)\n return;\n msg = `strict mode: ${msg}`;\n if (mode === true)\n throw new Error(msg);\n it.self.logger.warn(msg);\n}\nexports.checkStrictMode = checkStrictMode;\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"./codegen\");\nconst names = {\n // validation function arguments\n data: new codegen_1.Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new codegen_1.Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new codegen_1.Name(\"instancePath\"),\n parentData: new codegen_1.Name(\"parentData\"),\n parentDataProperty: new codegen_1.Name(\"parentDataProperty\"),\n rootData: new codegen_1.Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new codegen_1.Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new codegen_1.Name(\"vErrors\"), // null or array of validation errors\n errors: new codegen_1.Name(\"errors\"), // counter of validation errors\n this: new codegen_1.Name(\"this\"),\n // \"globals\"\n self: new codegen_1.Name(\"self\"),\n scope: new codegen_1.Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new codegen_1.Name(\"json\"),\n jsonPos: new codegen_1.Name(\"jsonPos\"),\n jsonLen: new codegen_1.Name(\"jsonLen\"),\n jsonPart: new codegen_1.Name(\"jsonPart\"),\n};\nexports.default = names;\n//# sourceMappingURL=names.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst util_1 = require(\"./util\");\nconst names_1 = require(\"./names\");\nexports.keywordError = {\n message: ({ keyword }) => (0, codegen_1.str) `must pass \"${keyword}\" keyword validation`,\n};\nexports.keyword$DataError = {\n message: ({ keyword, schemaType }) => schemaType\n ? (0, codegen_1.str) `\"${keyword}\" keyword must be ${schemaType} ($data)`\n : (0, codegen_1.str) `\"${keyword}\" keyword is invalid ($data)`,\n};\nfunction reportError(cxt, error = exports.keywordError, errorPaths, overrideAllErrors) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : (compositeRule || allErrors)) {\n addError(gen, errObj);\n }\n else {\n returnErrors(it, (0, codegen_1._) `[${errObj}]`);\n }\n}\nexports.reportError = reportError;\nfunction reportExtraError(cxt, error = exports.keywordError, errorPaths) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n addError(gen, errObj);\n if (!(compositeRule || allErrors)) {\n returnErrors(it, names_1.default.vErrors);\n }\n}\nexports.reportExtraError = reportExtraError;\nfunction resetErrorsCount(gen, errsCount) {\n gen.assign(names_1.default.errors, errsCount);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._) `${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null)));\n}\nexports.resetErrorsCount = resetErrorsCount;\nfunction extendErrors({ gen, keyword, schemaValue, data, errsCount, it, }) {\n /* istanbul ignore if */\n if (errsCount === undefined)\n throw new Error(\"ajv implementation error\");\n const err = gen.name(\"err\");\n gen.forRange(\"i\", errsCount, names_1.default.errors, (i) => {\n gen.const(err, (0, codegen_1._) `${names_1.default.vErrors}[${i}]`);\n gen.if((0, codegen_1._) `${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._) `${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath)));\n gen.assign((0, codegen_1._) `${err}.schemaPath`, (0, codegen_1.str) `${it.errSchemaPath}/${keyword}`);\n if (it.opts.verbose) {\n gen.assign((0, codegen_1._) `${err}.schema`, schemaValue);\n gen.assign((0, codegen_1._) `${err}.data`, data);\n }\n });\n}\nexports.extendErrors = extendErrors;\nfunction addError(gen, errObj) {\n const err = gen.const(\"err\", errObj);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._) `[${err}]`), (0, codegen_1._) `${names_1.default.vErrors}.push(${err})`);\n gen.code((0, codegen_1._) `${names_1.default.errors}++`);\n}\nfunction returnErrors(it, errs) {\n const { gen, validateName, schemaEnv } = it;\n if (schemaEnv.$async) {\n gen.throw((0, codegen_1._) `new ${it.ValidationError}(${errs})`);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, errs);\n gen.return(false);\n }\n}\nconst E = {\n keyword: new codegen_1.Name(\"keyword\"),\n schemaPath: new codegen_1.Name(\"schemaPath\"), // also used in JTD errors\n params: new codegen_1.Name(\"params\"),\n propertyName: new codegen_1.Name(\"propertyName\"),\n message: new codegen_1.Name(\"message\"),\n schema: new codegen_1.Name(\"schema\"),\n parentSchema: new codegen_1.Name(\"parentSchema\"),\n};\nfunction errorObjectCode(cxt, error, errorPaths) {\n const { createErrors } = cxt.it;\n if (createErrors === false)\n return (0, codegen_1._) `{}`;\n return errorObject(cxt, error, errorPaths);\n}\nfunction errorObject(cxt, error, errorPaths = {}) {\n const { gen, it } = cxt;\n const keyValues = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ];\n extraErrorProps(cxt, error, keyValues);\n return gen.object(...keyValues);\n}\nfunction errorInstancePath({ errorPath }, { instancePath }) {\n const instPath = instancePath\n ? (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}`\n : errorPath;\n return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)];\n}\nfunction errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) {\n let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str) `${errSchemaPath}/${keyword}`;\n if (schemaPath) {\n schPath = (0, codegen_1.str) `${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`;\n }\n return [E.schemaPath, schPath];\n}\nfunction extraErrorProps(cxt, { params, message }, keyValues) {\n const { keyword, data, schemaValue, it } = cxt;\n const { opts, propertyName, topSchemaRef, schemaPath } = it;\n keyValues.push([E.keyword, keyword], [E.params, typeof params == \"function\" ? params(cxt) : params || (0, codegen_1._) `{}`]);\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message]);\n }\n if (opts.verbose) {\n keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._) `${topSchemaRef}${schemaPath}`], [names_1.default.data, data]);\n }\n if (propertyName)\n keyValues.push([E.propertyName, propertyName]);\n}\n//# sourceMappingURL=errors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0;\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst boolError = {\n message: \"boolean schema is false\",\n};\nfunction topBoolOrEmptySchema(it) {\n const { gen, schema, validateName } = it;\n if (schema === false) {\n falseSchemaError(it, false);\n }\n else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(names_1.default.data);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, null);\n gen.return(true);\n }\n}\nexports.topBoolOrEmptySchema = topBoolOrEmptySchema;\nfunction boolOrEmptySchema(it, valid) {\n const { gen, schema } = it;\n if (schema === false) {\n gen.var(valid, false); // TODO var\n falseSchemaError(it);\n }\n else {\n gen.var(valid, true); // TODO var\n }\n}\nexports.boolOrEmptySchema = boolOrEmptySchema;\nfunction falseSchemaError(it, overrideAllErrors) {\n const { gen, data } = it;\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n };\n (0, errors_1.reportError)(cxt, boolError, undefined, overrideAllErrors);\n}\n//# sourceMappingURL=boolSchema.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRules = exports.isJSONType = void 0;\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"];\nconst jsonTypes = new Set(_jsonTypes);\nfunction isJSONType(x) {\n return typeof x == \"string\" && jsonTypes.has(x);\n}\nexports.isJSONType = isJSONType;\nfunction getRules() {\n const groups = {\n number: { type: \"number\", rules: [] },\n string: { type: \"string\", rules: [] },\n array: { type: \"array\", rules: [] },\n object: { type: \"object\", rules: [] },\n };\n return {\n types: { ...groups, integer: true, boolean: true, null: true },\n rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object],\n post: { rules: [] },\n all: {},\n keywords: {},\n };\n}\nexports.getRules = getRules;\n//# sourceMappingURL=rules.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0;\nfunction schemaHasRulesForType({ schema, self }, type) {\n const group = self.RULES.types[type];\n return group && group !== true && shouldUseGroup(schema, group);\n}\nexports.schemaHasRulesForType = schemaHasRulesForType;\nfunction shouldUseGroup(schema, group) {\n return group.rules.some((rule) => shouldUseRule(schema, rule));\n}\nexports.shouldUseGroup = shouldUseGroup;\nfunction shouldUseRule(schema, rule) {\n var _a;\n return (schema[rule.keyword] !== undefined ||\n ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== undefined)));\n}\nexports.shouldUseRule = shouldUseRule;\n//# sourceMappingURL=applicability.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0;\nconst rules_1 = require(\"../rules\");\nconst applicability_1 = require(\"./applicability\");\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nvar DataType;\n(function (DataType) {\n DataType[DataType[\"Correct\"] = 0] = \"Correct\";\n DataType[DataType[\"Wrong\"] = 1] = \"Wrong\";\n})(DataType || (exports.DataType = DataType = {}));\nfunction getSchemaTypes(schema) {\n const types = getJSONTypes(schema.type);\n const hasNull = types.includes(\"null\");\n if (hasNull) {\n if (schema.nullable === false)\n throw new Error(\"type: null contradicts nullable: false\");\n }\n else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"');\n }\n if (schema.nullable === true)\n types.push(\"null\");\n }\n return types;\n}\nexports.getSchemaTypes = getSchemaTypes;\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nfunction getJSONTypes(ts) {\n const types = Array.isArray(ts) ? ts : ts ? [ts] : [];\n if (types.every(rules_1.isJSONType))\n return types;\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"));\n}\nexports.getJSONTypes = getJSONTypes;\nfunction coerceAndCheckDataType(it, types) {\n const { gen, data, opts } = it;\n const coerceTo = coerceToTypes(types, opts.coerceTypes);\n const checkTypes = types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0]));\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong);\n gen.if(wrongType, () => {\n if (coerceTo.length)\n coerceData(it, types, coerceTo);\n else\n reportTypeError(it);\n });\n }\n return checkTypes;\n}\nexports.coerceAndCheckDataType = coerceAndCheckDataType;\nconst COERCIBLE = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"]);\nfunction coerceToTypes(types, coerceTypes) {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : [];\n}\nfunction coerceData(it, types, coerceTo) {\n const { gen, data, opts } = it;\n const dataType = gen.let(\"dataType\", (0, codegen_1._) `typeof ${data}`);\n const coerced = gen.let(\"coerced\", (0, codegen_1._) `undefined`);\n if (opts.coerceTypes === \"array\") {\n gen.if((0, codegen_1._) `${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen\n .assign(data, (0, codegen_1._) `${data}[0]`)\n .assign(dataType, (0, codegen_1._) `typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data)));\n }\n gen.if((0, codegen_1._) `${coerced} !== undefined`);\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t);\n }\n }\n gen.else();\n reportTypeError(it);\n gen.endIf();\n gen.if((0, codegen_1._) `${coerced} !== undefined`, () => {\n gen.assign(data, coerced);\n assignParentData(it, coerced);\n });\n function coerceSpecificType(t) {\n switch (t) {\n case \"string\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, (0, codegen_1._) `\"\" + ${data}`)\n .elseIf((0, codegen_1._) `${data} === null`)\n .assign(coerced, (0, codegen_1._) `\"\"`);\n return;\n case \"number\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"integer\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"boolean\":\n gen\n .elseIf((0, codegen_1._) `${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf((0, codegen_1._) `${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true);\n return;\n case \"null\":\n gen.elseIf((0, codegen_1._) `${data} === \"\" || ${data} === 0 || ${data} === false`);\n gen.assign(coerced, null);\n return;\n case \"array\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`)\n .assign(coerced, (0, codegen_1._) `[${data}]`);\n }\n }\n}\nfunction assignParentData({ gen, parentData, parentDataProperty }, expr) {\n // TODO use gen.property\n gen.if((0, codegen_1._) `${parentData} !== undefined`, () => gen.assign((0, codegen_1._) `${parentData}[${parentDataProperty}]`, expr));\n}\nfunction checkDataType(dataType, data, strictNums, correct = DataType.Correct) {\n const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ;\n let cond;\n switch (dataType) {\n case \"null\":\n return (0, codegen_1._) `${data} ${EQ} null`;\n case \"array\":\n cond = (0, codegen_1._) `Array.isArray(${data})`;\n break;\n case \"object\":\n cond = (0, codegen_1._) `${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`;\n break;\n case \"integer\":\n cond = numCond((0, codegen_1._) `!(${data} % 1) && !isNaN(${data})`);\n break;\n case \"number\":\n cond = numCond();\n break;\n default:\n return (0, codegen_1._) `typeof ${data} ${EQ} ${dataType}`;\n }\n return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond);\n function numCond(_cond = codegen_1.nil) {\n return (0, codegen_1.and)((0, codegen_1._) `typeof ${data} == \"number\"`, _cond, strictNums ? (0, codegen_1._) `isFinite(${data})` : codegen_1.nil);\n }\n}\nexports.checkDataType = checkDataType;\nfunction checkDataTypes(dataTypes, data, strictNums, correct) {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct);\n }\n let cond;\n const types = (0, util_1.toHash)(dataTypes);\n if (types.array && types.object) {\n const notObj = (0, codegen_1._) `typeof ${data} != \"object\"`;\n cond = types.null ? notObj : (0, codegen_1._) `!${data} || ${notObj}`;\n delete types.null;\n delete types.array;\n delete types.object;\n }\n else {\n cond = codegen_1.nil;\n }\n if (types.number)\n delete types.integer;\n for (const t in types)\n cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct));\n return cond;\n}\nexports.checkDataTypes = checkDataTypes;\nconst typeError = {\n message: ({ schema }) => `must be ${schema}`,\n params: ({ schema, schemaValue }) => typeof schema == \"string\" ? (0, codegen_1._) `{type: ${schema}}` : (0, codegen_1._) `{type: ${schemaValue}}`,\n};\nfunction reportTypeError(it) {\n const cxt = getTypeErrorContext(it);\n (0, errors_1.reportError)(cxt, typeError);\n}\nexports.reportTypeError = reportTypeError;\nfunction getTypeErrorContext(it) {\n const { gen, data, schema } = it;\n const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, \"type\");\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n };\n}\n//# sourceMappingURL=dataType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assignDefaults = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction assignDefaults(it, ty) {\n const { properties, items } = it.schema;\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default);\n }\n }\n else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i) => assignDefault(it, i, sch.default));\n }\n}\nexports.assignDefaults = assignDefaults;\nfunction assignDefault(it, prop, defaultValue) {\n const { gen, compositeRule, data, opts } = it;\n if (defaultValue === undefined)\n return;\n const childData = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(prop)}`;\n if (compositeRule) {\n (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`);\n return;\n }\n let condition = (0, codegen_1._) `${childData} === undefined`;\n if (opts.useDefaults === \"empty\") {\n condition = (0, codegen_1._) `${condition} || ${childData} === null || ${childData} === \"\"`;\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, (0, codegen_1._) `${childData} = ${(0, codegen_1.stringify)(defaultValue)}`);\n}\n//# sourceMappingURL=defaults.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0;\nconst codegen_1 = require(\"../compile/codegen\");\nconst util_1 = require(\"../compile/util\");\nconst names_1 = require(\"../compile/names\");\nconst util_2 = require(\"../compile/util\");\nfunction checkReportMissingProp(cxt, prop) {\n const { gen, data, it } = cxt;\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({ missingProperty: (0, codegen_1._) `${prop}` }, true);\n cxt.error();\n });\n}\nexports.checkReportMissingProp = checkReportMissingProp;\nfunction checkMissingProp({ gen, data, it: { opts } }, properties, missing) {\n return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._) `${missing} = ${prop}`)));\n}\nexports.checkMissingProp = checkMissingProp;\nfunction reportMissingProp(cxt, missing) {\n cxt.setParams({ missingProperty: missing }, true);\n cxt.error();\n}\nexports.reportMissingProp = reportMissingProp;\nfunction hasPropFunc(gen) {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: (0, codegen_1._) `Object.prototype.hasOwnProperty`,\n });\n}\nexports.hasPropFunc = hasPropFunc;\nfunction isOwnProperty(gen, data, property) {\n return (0, codegen_1._) `${hasPropFunc(gen)}.call(${data}, ${property})`;\n}\nexports.isOwnProperty = isOwnProperty;\nfunction propertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} !== undefined`;\n return ownProperties ? (0, codegen_1._) `${cond} && ${isOwnProperty(gen, data, property)}` : cond;\n}\nexports.propertyInData = propertyInData;\nfunction noPropertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} === undefined`;\n return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond;\n}\nexports.noPropertyInData = noPropertyInData;\nfunction allSchemaProperties(schemaMap) {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : [];\n}\nexports.allSchemaProperties = allSchemaProperties;\nfunction schemaProperties(it, schemaMap) {\n return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p]));\n}\nexports.schemaProperties = schemaProperties;\nfunction callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) {\n const dataAndSchema = passSchema ? (0, codegen_1._) `${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data;\n const valCxt = [\n [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)],\n [names_1.default.parentData, it.parentData],\n [names_1.default.parentDataProperty, it.parentDataProperty],\n [names_1.default.rootData, names_1.default.rootData],\n ];\n if (it.opts.dynamicRef)\n valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]);\n const args = (0, codegen_1._) `${dataAndSchema}, ${gen.object(...valCxt)}`;\n return context !== codegen_1.nil ? (0, codegen_1._) `${func}.call(${context}, ${args})` : (0, codegen_1._) `${func}(${args})`;\n}\nexports.callValidateCode = callValidateCode;\nconst newRegExp = (0, codegen_1._) `new RegExp`;\nfunction usePattern({ gen, it: { opts } }, pattern) {\n const u = opts.unicodeRegExp ? \"u\" : \"\";\n const { regExp } = opts.code;\n const rx = regExp(pattern, u);\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: (0, codegen_1._) `${regExp.code === \"new RegExp\" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})`,\n });\n}\nexports.usePattern = usePattern;\nfunction validateArray(cxt) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true);\n validateItems(() => gen.assign(validArr, false));\n return validArr;\n }\n gen.var(valid, true);\n validateItems(() => gen.break());\n return valid;\n function validateItems(notValid) {\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword,\n dataProp: i,\n dataPropType: util_1.Type.Num,\n }, valid);\n gen.if((0, codegen_1.not)(valid), notValid);\n });\n }\n}\nexports.validateArray = validateArray;\nfunction validateUnion(cxt) {\n const { gen, schema, keyword, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch));\n if (alwaysValid && !it.opts.unevaluated)\n return;\n const valid = gen.let(\"valid\", false);\n const schValid = gen.name(\"_valid\");\n gen.block(() => schema.forEach((_sch, i) => {\n const schCxt = cxt.subschema({\n keyword,\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n gen.assign(valid, (0, codegen_1._) `${valid} || ${schValid}`);\n const merged = cxt.mergeValidEvaluated(schCxt, schValid);\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged)\n gen.if((0, codegen_1.not)(valid));\n }));\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n}\nexports.validateUnion = validateUnion;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst code_1 = require(\"../../vocabularies/code\");\nconst errors_1 = require(\"../errors\");\nfunction macroKeywordCode(cxt, def) {\n const { gen, keyword, schema, parentSchema, it } = cxt;\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it);\n const schemaRef = useKeyword(gen, keyword, macroSchema);\n if (it.opts.validateSchema !== false)\n it.self.validateSchema(macroSchema, true);\n const valid = gen.name(\"valid\");\n cxt.subschema({\n schema: macroSchema,\n schemaPath: codegen_1.nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n }, valid);\n cxt.pass(valid, () => cxt.error(true));\n}\nexports.macroKeywordCode = macroKeywordCode;\nfunction funcKeywordCode(cxt, def) {\n var _a;\n const { gen, keyword, schema, parentSchema, $data, it } = cxt;\n checkAsyncKeyword(it, def);\n const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate;\n const validateRef = useKeyword(gen, keyword, validate);\n const valid = gen.let(\"valid\");\n cxt.block$data(valid, validateKeyword);\n cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid);\n function validateKeyword() {\n if (def.errors === false) {\n assignValid();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => cxt.error());\n }\n else {\n const ruleErrs = def.async ? validateAsync() : validateSync();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => addErrs(cxt, ruleErrs));\n }\n }\n function validateAsync() {\n const ruleErrs = gen.let(\"ruleErrs\", null);\n gen.try(() => assignValid((0, codegen_1._) `await `), (e) => gen.assign(valid, false).if((0, codegen_1._) `${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._) `${e}.errors`), () => gen.throw(e)));\n return ruleErrs;\n }\n function validateSync() {\n const validateErrs = (0, codegen_1._) `${validateRef}.errors`;\n gen.assign(validateErrs, null);\n assignValid(codegen_1.nil);\n return validateErrs;\n }\n function assignValid(_await = def.async ? (0, codegen_1._) `await ` : codegen_1.nil) {\n const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self;\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false);\n gen.assign(valid, (0, codegen_1._) `${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying);\n }\n function reportErrs(errors) {\n var _a;\n gen.if((0, codegen_1.not)((_a = def.valid) !== null && _a !== void 0 ? _a : valid), errors);\n }\n}\nexports.funcKeywordCode = funcKeywordCode;\nfunction modifyData(cxt) {\n const { gen, data, it } = cxt;\n gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._) `${it.parentData}[${it.parentDataProperty}]`));\n}\nfunction addErrs(cxt, errs) {\n const { gen } = cxt;\n gen.if((0, codegen_1._) `Array.isArray(${errs})`, () => {\n gen\n .assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`)\n .assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n (0, errors_1.extendErrors)(cxt);\n }, () => cxt.error());\n}\nfunction checkAsyncKeyword({ schemaEnv }, def) {\n if (def.async && !schemaEnv.$async)\n throw new Error(\"async keyword in sync schema\");\n}\nfunction useKeyword(gen, keyword, result) {\n if (result === undefined)\n throw new Error(`keyword \"${keyword}\" failed to compile`);\n return gen.scopeValue(\"keyword\", typeof result == \"function\" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) });\n}\nfunction validSchemaType(schema, schemaType, allowUndefined = false) {\n // TODO add tests\n return (!schemaType.length ||\n schemaType.some((st) => st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")));\n}\nexports.validSchemaType = validSchemaType;\nfunction validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\");\n }\n const deps = def.dependencies;\n if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`);\n }\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword]);\n if (!valid) {\n const msg = `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors);\n if (opts.validateSchema === \"log\")\n self.logger.error(msg);\n else\n throw new Error(msg);\n }\n }\n}\nexports.validateKeywordUsage = validateKeywordUsage;\n//# sourceMappingURL=keyword.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed');\n }\n if (keyword !== undefined) {\n const sch = it.schema[keyword];\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}`,\n };\n }\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"');\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n };\n }\n throw new Error('either \"keyword\" or \"schema\" must be passed');\n}\nexports.getSubschema = getSubschema;\nfunction extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed');\n }\n const { gen } = it;\n if (dataProp !== undefined) {\n const { errorPath, dataPathArr, opts } = it;\n const nextData = gen.let(\"data\", (0, codegen_1._) `${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true);\n dataContextProps(nextData);\n subschema.errorPath = (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`;\n subschema.parentDataProperty = (0, codegen_1._) `${dataProp}`;\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty];\n }\n if (data !== undefined) {\n const nextData = data instanceof codegen_1.Name ? data : gen.let(\"data\", data, true); // replaceable if used once?\n dataContextProps(nextData);\n if (propertyName !== undefined)\n subschema.propertyName = propertyName;\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n if (dataTypes)\n subschema.dataTypes = dataTypes;\n function dataContextProps(_nextData) {\n subschema.data = _nextData;\n subschema.dataLevel = it.dataLevel + 1;\n subschema.dataTypes = [];\n it.definedProperties = new Set();\n subschema.parentData = it.data;\n subschema.dataNames = [...it.dataNames, _nextData];\n }\n}\nexports.extendSubschemaData = extendSubschemaData;\nfunction extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) {\n if (compositeRule !== undefined)\n subschema.compositeRule = compositeRule;\n if (createErrors !== undefined)\n subschema.createErrors = createErrors;\n if (allErrors !== undefined)\n subschema.allErrors = allErrors;\n subschema.jtdDiscriminator = jtdDiscriminator; // not inherited\n subschema.jtdMetadata = jtdMetadata; // not inherited\n}\nexports.extendSubschemaMode = extendSubschemaMode;\n//# sourceMappingURL=subschema.js.map","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i (count += countKeys(sch)));\n }\n if (count === Infinity)\n return Infinity;\n }\n return count;\n}\nfunction getFullPath(resolver, id = \"\", normalize) {\n if (normalize !== false)\n id = normalizeId(id);\n const p = resolver.parse(id);\n return _getFullPath(resolver, p);\n}\nexports.getFullPath = getFullPath;\nfunction _getFullPath(resolver, p) {\n const serialized = resolver.serialize(p);\n return serialized.split(\"#\")[0] + \"#\";\n}\nexports._getFullPath = _getFullPath;\nconst TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\";\n}\nexports.normalizeId = normalizeId;\nfunction resolveUrl(resolver, baseId, id) {\n id = normalizeId(id);\n return resolver.resolve(baseId, id);\n}\nexports.resolveUrl = resolveUrl;\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i;\nfunction getSchemaRefs(schema, baseId) {\n if (typeof schema == \"boolean\")\n return {};\n const { schemaId, uriResolver } = this.opts;\n const schId = normalizeId(schema[schemaId] || baseId);\n const baseIds = { \"\": schId };\n const pathPrefix = getFullPath(uriResolver, schId, false);\n const localRefs = {};\n const schemaRefs = new Set();\n traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined)\n return;\n const fullPath = pathPrefix + jsonPtr;\n let innerBaseId = baseIds[parentJsonPtr];\n if (typeof sch[schemaId] == \"string\")\n innerBaseId = addRef.call(this, sch[schemaId]);\n addAnchor.call(this, sch.$anchor);\n addAnchor.call(this, sch.$dynamicAnchor);\n baseIds[jsonPtr] = innerBaseId;\n function addRef(ref) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve;\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref);\n if (schemaRefs.has(ref))\n throw ambiguos(ref);\n schemaRefs.add(ref);\n let schOrRef = this.refs[ref];\n if (typeof schOrRef == \"string\")\n schOrRef = this.refs[schOrRef];\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref);\n }\n else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref);\n localRefs[ref] = sch;\n }\n else {\n this.refs[ref] = fullPath;\n }\n }\n return ref;\n }\n function addAnchor(anchor) {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor))\n throw new Error(`invalid anchor \"${anchor}\"`);\n addRef.call(this, `#${anchor}`);\n }\n }\n });\n return localRefs;\n function checkAmbiguosRef(sch1, sch2, ref) {\n if (sch2 !== undefined && !equal(sch1, sch2))\n throw ambiguos(ref);\n }\n function ambiguos(ref) {\n return new Error(`reference \"${ref}\" resolves to more than one schema`);\n }\n}\nexports.getSchemaRefs = getSchemaRefs;\n//# sourceMappingURL=resolve.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0;\nconst boolSchema_1 = require(\"./boolSchema\");\nconst dataType_1 = require(\"./dataType\");\nconst applicability_1 = require(\"./applicability\");\nconst dataType_2 = require(\"./dataType\");\nconst defaults_1 = require(\"./defaults\");\nconst keyword_1 = require(\"./keyword\");\nconst subschema_1 = require(\"./subschema\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst resolve_1 = require(\"../resolve\");\nconst util_1 = require(\"../util\");\nconst errors_1 = require(\"../errors\");\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nfunction validateFunctionCode(it) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it);\n return;\n }\n }\n validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it));\n}\nexports.validateFunctionCode = validateFunctionCode;\nfunction validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) {\n if (opts.code.es5) {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => {\n gen.code((0, codegen_1._) `\"use strict\"; ${funcSourceUrl(schema, opts)}`);\n destructureValCxtES5(gen, opts);\n gen.code(body);\n });\n }\n else {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body));\n }\n}\nfunction destructureValCxt(opts) {\n return (0, codegen_1._) `{${names_1.default.instancePath}=\"\", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._) `, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`;\n}\nfunction destructureValCxtES5(gen, opts) {\n gen.if(names_1.default.valCxt, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.instancePath}`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentData}`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentDataProperty}`);\n gen.var(names_1.default.rootData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.rootData}`);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`);\n }, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `\"\"`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.rootData, names_1.default.data);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `{}`);\n });\n}\nfunction topSchemaObjCode(it) {\n const { schema, opts, gen } = it;\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n checkNoDefault(it);\n gen.let(names_1.default.vErrors, null);\n gen.let(names_1.default.errors, 0);\n if (opts.unevaluated)\n resetEvaluated(it);\n typeAndKeywords(it);\n returnResults(it);\n });\n return;\n}\nfunction resetEvaluated(it) {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const { gen, validateName } = it;\n it.evaluated = gen.const(\"evaluated\", (0, codegen_1._) `${validateName}.evaluated`);\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._) `${it.evaluated}.props`, (0, codegen_1._) `undefined`));\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._) `${it.evaluated}.items`, (0, codegen_1._) `undefined`));\n}\nfunction funcSourceUrl(schema, opts) {\n const schId = typeof schema == \"object\" && schema[opts.schemaId];\n return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._) `/*# sourceURL=${schId} */` : codegen_1.nil;\n}\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it, valid) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid);\n return;\n }\n }\n (0, boolSchema_1.boolOrEmptySchema)(it, valid);\n}\nfunction schemaCxtHasRules({ schema, self }) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (self.RULES.all[key])\n return true;\n return false;\n}\nfunction isSchemaObj(it) {\n return typeof it.schema != \"boolean\";\n}\nfunction subSchemaObjCode(it, valid) {\n const { schema, gen, opts } = it;\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n updateContext(it);\n checkAsyncSchema(it);\n const errsCount = gen.const(\"_errs\", names_1.default.errors);\n typeAndKeywords(it, errsCount);\n // TODO var\n gen.var(valid, (0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n}\nfunction checkKeywords(it) {\n (0, util_1.checkUnknownRules)(it);\n checkRefsAndKeywords(it);\n}\nfunction typeAndKeywords(it, errsCount) {\n if (it.opts.jtd)\n return schemaKeywords(it, [], false, errsCount);\n const types = (0, dataType_1.getSchemaTypes)(it.schema);\n const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types);\n schemaKeywords(it, types, !checkedTypes, errsCount);\n}\nfunction checkRefsAndKeywords(it) {\n const { schema, errSchemaPath, opts, self } = it;\n if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`);\n }\n}\nfunction checkNoDefault(it) {\n const { schema, opts } = it;\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n (0, util_1.checkStrictMode)(it, \"default is ignored in the schema root\");\n }\n}\nfunction updateContext(it) {\n const schId = it.schema[it.opts.schemaId];\n if (schId)\n it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId);\n}\nfunction checkAsyncSchema(it) {\n if (it.schema.$async && !it.schemaEnv.$async)\n throw new Error(\"async schema in sync schema\");\n}\nfunction commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) {\n const msg = schema.$comment;\n if (opts.$comment === true) {\n gen.code((0, codegen_1._) `${names_1.default.self}.logger.log(${msg})`);\n }\n else if (typeof opts.$comment == \"function\") {\n const schemaPath = (0, codegen_1.str) `${errSchemaPath}/$comment`;\n const rootName = gen.scopeValue(\"root\", { ref: schemaEnv.root });\n gen.code((0, codegen_1._) `${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`);\n }\n}\nfunction returnResults(it) {\n const { gen, schemaEnv, validateName, ValidationError, opts } = it;\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if((0, codegen_1._) `${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._) `new ${ValidationError}(${names_1.default.vErrors})`));\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, names_1.default.vErrors);\n if (opts.unevaluated)\n assignEvaluated(it);\n gen.return((0, codegen_1._) `${names_1.default.errors} === 0`);\n }\n}\nfunction assignEvaluated({ gen, evaluated, props, items }) {\n if (props instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.props`, props);\n if (items instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.items`, items);\n}\nfunction schemaKeywords(it, types, typeErrors, errsCount) {\n const { gen, schema, data, allErrors, opts, self } = it;\n const { RULES } = self;\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", RULES.all.$ref.definition)); // TODO typecast\n return;\n }\n if (!opts.jtd)\n checkStrictTypes(it, types);\n gen.block(() => {\n for (const group of RULES.rules)\n groupKeywords(group);\n groupKeywords(RULES.post);\n });\n function groupKeywords(group) {\n if (!(0, applicability_1.shouldUseGroup)(schema, group))\n return;\n if (group.type) {\n gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers));\n iterateKeywords(it, group);\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else();\n (0, dataType_2.reportTypeError)(it);\n }\n gen.endIf();\n }\n else {\n iterateKeywords(it, group);\n }\n // TODO make it \"ok\" call?\n if (!allErrors)\n gen.if((0, codegen_1._) `${names_1.default.errors} === ${errsCount || 0}`);\n }\n}\nfunction iterateKeywords(it, group) {\n const { gen, schema, opts: { useDefaults }, } = it;\n if (useDefaults)\n (0, defaults_1.assignDefaults)(it, group.type);\n gen.block(() => {\n for (const rule of group.rules) {\n if ((0, applicability_1.shouldUseRule)(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type);\n }\n }\n });\n}\nfunction checkStrictTypes(it, types) {\n if (it.schemaEnv.meta || !it.opts.strictTypes)\n return;\n checkContextTypes(it, types);\n if (!it.opts.allowUnionTypes)\n checkMultipleTypes(it, types);\n checkKeywordTypes(it, it.dataTypes);\n}\nfunction checkContextTypes(it, types) {\n if (!types.length)\n return;\n if (!it.dataTypes.length) {\n it.dataTypes = types;\n return;\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`);\n }\n });\n narrowSchemaTypes(it, types);\n}\nfunction checkMultipleTypes(it, ts) {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\");\n }\n}\nfunction checkKeywordTypes(it, ts) {\n const rules = it.self.RULES.all;\n for (const keyword in rules) {\n const rule = rules[keyword];\n if (typeof rule == \"object\" && (0, applicability_1.shouldUseRule)(it.schema, rule)) {\n const { type } = rule.definition;\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`);\n }\n }\n }\n}\nfunction hasApplicableType(schTs, kwdT) {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"));\n}\nfunction includesType(ts, t) {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"));\n}\nfunction narrowSchemaTypes(it, withTypes) {\n const ts = [];\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t))\n ts.push(t);\n else if (withTypes.includes(\"integer\") && t === \"number\")\n ts.push(\"integer\");\n }\n it.dataTypes = ts;\n}\nfunction strictTypesError(it, msg) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n msg += ` at \"${schemaPath}\" (strictTypes)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes);\n}\nclass KeywordCxt {\n constructor(it, def, keyword) {\n (0, keyword_1.validateKeywordUsage)(it, def, keyword);\n this.gen = it.gen;\n this.allErrors = it.allErrors;\n this.keyword = keyword;\n this.data = it.data;\n this.schema = it.schema[keyword];\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data;\n this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data);\n this.schemaType = def.schemaType;\n this.parentSchema = it.schema;\n this.params = {};\n this.it = it;\n this.def = def;\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it));\n }\n else {\n this.schemaCode = this.schemaValue;\n if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);\n }\n }\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", names_1.default.errors);\n }\n }\n result(condition, successAction, failAction) {\n this.failResult((0, codegen_1.not)(condition), successAction, failAction);\n }\n failResult(condition, successAction, failAction) {\n this.gen.if(condition);\n if (failAction)\n failAction();\n else\n this.error();\n if (successAction) {\n this.gen.else();\n successAction();\n if (this.allErrors)\n this.gen.endIf();\n }\n else {\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n }\n pass(condition, failAction) {\n this.failResult((0, codegen_1.not)(condition), undefined, failAction);\n }\n fail(condition) {\n if (condition === undefined) {\n this.error();\n if (!this.allErrors)\n this.gen.if(false); // this branch will be removed by gen.optimize\n return;\n }\n this.gen.if(condition);\n this.error();\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n fail$data(condition) {\n if (!this.$data)\n return this.fail(condition);\n const { schemaCode } = this;\n this.fail((0, codegen_1._) `${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`);\n }\n error(append, errorParams, errorPaths) {\n if (errorParams) {\n this.setParams(errorParams);\n this._error(append, errorPaths);\n this.setParams({});\n return;\n }\n this._error(append, errorPaths);\n }\n _error(append, errorPaths) {\n ;\n (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths);\n }\n $dataError() {\n (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError);\n }\n reset() {\n if (this.errsCount === undefined)\n throw new Error('add \"trackErrors\" to keyword definition');\n (0, errors_1.resetErrorsCount)(this.gen, this.errsCount);\n }\n ok(cond) {\n if (!this.allErrors)\n this.gen.if(cond);\n }\n setParams(obj, assign) {\n if (assign)\n Object.assign(this.params, obj);\n else\n this.params = obj;\n }\n block$data(valid, codeBlock, $dataValid = codegen_1.nil) {\n this.gen.block(() => {\n this.check$data(valid, $dataValid);\n codeBlock();\n });\n }\n check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {\n if (!this.$data)\n return;\n const { gen, schemaCode, schemaType, def } = this;\n gen.if((0, codegen_1.or)((0, codegen_1._) `${schemaCode} === undefined`, $dataValid));\n if (valid !== codegen_1.nil)\n gen.assign(valid, true);\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data());\n this.$dataError();\n if (valid !== codegen_1.nil)\n gen.assign(valid, false);\n }\n gen.else();\n }\n invalid$data() {\n const { gen, schemaCode, schemaType, def, it } = this;\n return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema());\n function wrong$DataType() {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof codegen_1.Name))\n throw new Error(\"ajv implementation error\");\n const st = Array.isArray(schemaType) ? schemaType : [schemaType];\n return (0, codegen_1._) `${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`;\n }\n return codegen_1.nil;\n }\n function invalid$DataSchema() {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", { ref: def.validateSchema }); // TODO value.code for standalone\n return (0, codegen_1._) `!${validateSchemaRef}(${schemaCode})`;\n }\n return codegen_1.nil;\n }\n }\n subschema(appl, valid) {\n const subschema = (0, subschema_1.getSubschema)(this.it, appl);\n (0, subschema_1.extendSubschemaData)(subschema, this.it, appl);\n (0, subschema_1.extendSubschemaMode)(subschema, appl);\n const nextContext = { ...this.it, ...subschema, items: undefined, props: undefined };\n subschemaCode(nextContext, valid);\n return nextContext;\n }\n mergeEvaluated(schemaCxt, toName) {\n const { it, gen } = this;\n if (!it.opts.unevaluated)\n return;\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName);\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName);\n }\n }\n mergeValidEvaluated(schemaCxt, valid) {\n const { it, gen } = this;\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name));\n return true;\n }\n }\n}\nexports.KeywordCxt = KeywordCxt;\nfunction keywordCode(it, keyword, def, ruleType) {\n const cxt = new KeywordCxt(it, def, keyword);\n if (\"code\" in def) {\n def.code(cxt, ruleType);\n }\n else if (cxt.$data && def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n else if (\"macro\" in def) {\n (0, keyword_1.macroKeywordCode)(cxt, def);\n }\n else if (def.compile || def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n}\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, { dataLevel, dataNames, dataPathArr }) {\n let jsonPointer;\n let data;\n if ($data === \"\")\n return names_1.default.rootData;\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data))\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n jsonPointer = $data;\n data = names_1.default.rootData;\n }\n else {\n const matches = RELATIVE_JSON_POINTER.exec($data);\n if (!matches)\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n const up = +matches[1];\n jsonPointer = matches[2];\n if (jsonPointer === \"#\") {\n if (up >= dataLevel)\n throw new Error(errorMsg(\"property/index\", up));\n return dataPathArr[dataLevel - up];\n }\n if (up > dataLevel)\n throw new Error(errorMsg(\"data\", up));\n data = dataNames[dataLevel - up];\n if (!jsonPointer)\n return data;\n }\n let expr = data;\n const segments = jsonPointer.split(\"/\");\n for (const segment of segments) {\n if (segment) {\n data = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`;\n expr = (0, codegen_1._) `${expr} && ${data}`;\n }\n }\n return expr;\n function errorMsg(pointerType, up) {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`;\n }\n}\nexports.getData = getData;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass ValidationError extends Error {\n constructor(errors) {\n super(\"validation failed\");\n this.errors = errors;\n this.ajv = this.validation = true;\n }\n}\nexports.default = ValidationError;\n//# sourceMappingURL=validation_error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst resolve_1 = require(\"./resolve\");\nclass MissingRefError extends Error {\n constructor(resolver, baseId, ref, msg) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`);\n this.missingRef = (0, resolve_1.resolveUrl)(resolver, baseId, ref);\n this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(resolver, this.missingRef));\n }\n}\nexports.default = MissingRefError;\n//# sourceMappingURL=ref_error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst validation_error_1 = require(\"../runtime/validation_error\");\nconst names_1 = require(\"./names\");\nconst resolve_1 = require(\"./resolve\");\nconst util_1 = require(\"./util\");\nconst validate_1 = require(\"./validate\");\nclass SchemaEnv {\n constructor(env) {\n var _a;\n this.refs = {};\n this.dynamicAnchors = {};\n let schema;\n if (typeof env.schema == \"object\")\n schema = env.schema;\n this.schema = env.schema;\n this.schemaId = env.schemaId;\n this.root = env.root || this;\n this.baseId = (_a = env.baseId) !== null && _a !== void 0 ? _a : (0, resolve_1.normalizeId)(schema === null || schema === void 0 ? void 0 : schema[env.schemaId || \"$id\"]);\n this.schemaPath = env.schemaPath;\n this.localRefs = env.localRefs;\n this.meta = env.meta;\n this.$async = schema === null || schema === void 0 ? void 0 : schema.$async;\n this.refs = {};\n }\n}\nexports.SchemaEnv = SchemaEnv;\n// let codeSize = 0\n// let nodeCount = 0\n// Compiles schema in SchemaEnv\nfunction compileSchema(sch) {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch);\n if (_sch)\n return _sch;\n const rootId = (0, resolve_1.getFullPath)(this.opts.uriResolver, sch.root.baseId); // TODO if getFullPath removed 1 tests fails\n const { es5, lines } = this.opts.code;\n const { ownProperties } = this.opts;\n const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties });\n let _ValidationError;\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: validation_error_1.default,\n code: (0, codegen_1._) `require(\"ajv/dist/runtime/validation_error\").default`,\n });\n }\n const validateName = gen.scopeName(\"validate\");\n sch.validateName = validateName;\n const schemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: names_1.default.data,\n parentData: names_1.default.parentData,\n parentDataProperty: names_1.default.parentDataProperty,\n dataNames: [names_1.default.data],\n dataPathArr: [codegen_1.nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set(),\n topSchemaRef: gen.scopeValue(\"schema\", this.opts.code.source === true\n ? { ref: sch.schema, code: (0, codegen_1.stringify)(sch.schema) }\n : { ref: sch.schema }),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: codegen_1.nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: (0, codegen_1._) `\"\"`,\n opts: this.opts,\n self: this,\n };\n let sourceCode;\n try {\n this._compilations.add(sch);\n (0, validate_1.validateFunctionCode)(schemaCxt);\n gen.optimize(this.opts.code.optimize);\n // gen.optimize(1)\n const validateCode = gen.toString();\n sourceCode = `${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`;\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process)\n sourceCode = this.opts.code.process(sourceCode, sch);\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode);\n const validate = makeValidate(this, this.scope.get());\n this.scope.value(validateName, { ref: validate });\n validate.errors = null;\n validate.schema = sch.schema;\n validate.schemaEnv = sch;\n if (sch.$async)\n validate.$async = true;\n if (this.opts.code.source === true) {\n validate.source = { validateName, validateCode, scopeValues: gen._values };\n }\n if (this.opts.unevaluated) {\n const { props, items } = schemaCxt;\n validate.evaluated = {\n props: props instanceof codegen_1.Name ? undefined : props,\n items: items instanceof codegen_1.Name ? undefined : items,\n dynamicProps: props instanceof codegen_1.Name,\n dynamicItems: items instanceof codegen_1.Name,\n };\n if (validate.source)\n validate.source.evaluated = (0, codegen_1.stringify)(validate.evaluated);\n }\n sch.validate = validate;\n return sch;\n }\n catch (e) {\n delete sch.validate;\n delete sch.validateName;\n if (sourceCode)\n this.logger.error(\"Error compiling schema, function code:\", sourceCode);\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e;\n }\n finally {\n this._compilations.delete(sch);\n }\n}\nexports.compileSchema = compileSchema;\nfunction resolveRef(root, baseId, ref) {\n var _a;\n ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, ref);\n const schOrFunc = root.refs[ref];\n if (schOrFunc)\n return schOrFunc;\n let _sch = resolve.call(this, root, ref);\n if (_sch === undefined) {\n const schema = (_a = root.localRefs) === null || _a === void 0 ? void 0 : _a[ref]; // TODO maybe localRefs should hold SchemaEnv\n const { schemaId } = this.opts;\n if (schema)\n _sch = new SchemaEnv({ schema, schemaId, root, baseId });\n }\n if (_sch === undefined)\n return;\n return (root.refs[ref] = inlineOrCompile.call(this, _sch));\n}\nexports.resolveRef = resolveRef;\nfunction inlineOrCompile(sch) {\n if ((0, resolve_1.inlineRef)(sch.schema, this.opts.inlineRefs))\n return sch.schema;\n return sch.validate ? sch : compileSchema.call(this, sch);\n}\n// Index of schema compilation in the currently compiled list\nfunction getCompilingSchema(schEnv) {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv))\n return sch;\n }\n}\nexports.getCompilingSchema = getCompilingSchema;\nfunction sameSchemaEnv(s1, s2) {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;\n}\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(root, // information about the root schema for the current schema\nref // reference to resolve\n) {\n let sch;\n while (typeof (sch = this.refs[ref]) == \"string\")\n ref = sch;\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref);\n}\n// Resolve schema, its root and baseId\nfunction resolveSchema(root, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\nref // reference to resolve\n) {\n const p = this.opts.uriResolver.parse(ref);\n const refPath = (0, resolve_1._getFullPath)(this.opts.uriResolver, p);\n let baseId = (0, resolve_1.getFullPath)(this.opts.uriResolver, root.baseId, undefined);\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root);\n }\n const id = (0, resolve_1.normalizeId)(refPath);\n const schOrRef = this.refs[id] || this.schemas[id];\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef);\n if (typeof (sch === null || sch === void 0 ? void 0 : sch.schema) !== \"object\")\n return;\n return getJsonPointer.call(this, p, sch);\n }\n if (typeof (schOrRef === null || schOrRef === void 0 ? void 0 : schOrRef.schema) !== \"object\")\n return;\n if (!schOrRef.validate)\n compileSchema.call(this, schOrRef);\n if (id === (0, resolve_1.normalizeId)(ref)) {\n const { schema } = schOrRef;\n const { schemaId } = this.opts;\n const schId = schema[schemaId];\n if (schId)\n baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);\n return new SchemaEnv({ schema, schemaId, root, baseId });\n }\n return getJsonPointer.call(this, p, schOrRef);\n}\nexports.resolveSchema = resolveSchema;\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n]);\nfunction getJsonPointer(parsedRef, { baseId, schema, root }) {\n var _a;\n if (((_a = parsedRef.fragment) === null || _a === void 0 ? void 0 : _a[0]) !== \"/\")\n return;\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\")\n return;\n const partSchema = schema[(0, util_1.unescapeFragment)(part)];\n if (partSchema === undefined)\n return;\n schema = partSchema;\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId];\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);\n }\n }\n let env;\n if (typeof schema != \"boolean\" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) {\n const $ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schema.$ref);\n env = resolveSchema.call(this, root, $ref);\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const { schemaId } = this.opts;\n env = env || new SchemaEnv({ schema, schemaId, root, baseId });\n if (env.schema !== env.root.schema)\n return env;\n return undefined;\n}\n//# sourceMappingURL=index.js.map","'use strict'\n\nconst HEX = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n a: 10,\n A: 10,\n b: 11,\n B: 11,\n c: 12,\n C: 12,\n d: 13,\n D: 13,\n e: 14,\n E: 14,\n f: 15,\n F: 15\n}\n\nmodule.exports = {\n HEX\n}\n","'use strict'\n\nconst { HEX } = require('./scopedChars')\n\nfunction normalizeIPv4 (host) {\n if (findToken(host, '.') < 3) { return { host, isIPV4: false } }\n const matches = host.match(/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/u) || []\n const [address] = matches\n if (address) {\n return { host: stripLeadingZeros(address, '.'), isIPV4: true }\n } else {\n return { host, isIPV4: false }\n }\n}\n\n/**\n * @param {string[]} input\n * @param {boolean} [keepZero=false]\n * @returns {string|undefined}\n */\nfunction stringArrayToHexStripped (input, keepZero = false) {\n let acc = ''\n let strip = true\n for (const c of input) {\n if (HEX[c] === undefined) return undefined\n if (c !== '0' && strip === true) strip = false\n if (!strip) acc += c\n }\n if (keepZero && acc.length === 0) acc = '0'\n return acc\n}\n\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n const address = []\n const buffer = []\n let isZone = false\n let endipv6Encountered = false\n let endIpv6 = false\n\n function consume () {\n if (buffer.length) {\n if (isZone === false) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== undefined) {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n }\n buffer.length = 0\n }\n return true\n }\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume()) { break }\n tokenCount++\n address.push(':')\n if (tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i - 1 >= 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n continue\n } else if (cursor === '%') {\n if (!consume()) { break }\n // switch to zone detection\n isZone = true\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (isZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\nfunction normalizeIPv6 (host, opts = {}) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, escapedHost, isIPV6: true }\n } else {\n return { host, isIPV6: false }\n }\n}\n\nfunction stripLeadingZeros (str, token) {\n let out = ''\n let skip = true\n const l = str.length\n for (let i = 0; i < l; i++) {\n const c = str[i]\n if (c === '0' && skip) {\n if ((i + 1 <= l && str[i + 1] === token) || i + 1 === l) {\n out += c\n skip = false\n }\n } else {\n if (c === token) {\n skip = true\n } else {\n skip = false\n }\n out += c\n }\n }\n return out\n}\n\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\nconst RDS1 = /^\\.\\.?\\//u\nconst RDS2 = /^\\/\\.(?:\\/|$)/u\nconst RDS3 = /^\\/\\.\\.(?:\\/|$)/u\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/u\n\nfunction removeDotSegments (input) {\n const output = []\n\n while (input.length) {\n if (input.match(RDS1)) {\n input = input.replace(RDS1, '')\n } else if (input.match(RDS2)) {\n input = input.replace(RDS2, '/')\n } else if (input.match(RDS3)) {\n input = input.replace(RDS3, '/')\n output.pop()\n } else if (input === '.' || input === '..') {\n input = ''\n } else {\n const im = input.match(RDS5)\n if (im) {\n const s = im[0]\n input = input.slice(s.length)\n output.push(s)\n } else {\n throw new Error('Unexpected dot segment condition')\n }\n }\n }\n return output.join('')\n}\n\nfunction normalizeComponentEncoding (components, esc) {\n const func = esc !== true ? escape : unescape\n if (components.scheme !== undefined) {\n components.scheme = func(components.scheme)\n }\n if (components.userinfo !== undefined) {\n components.userinfo = func(components.userinfo)\n }\n if (components.host !== undefined) {\n components.host = func(components.host)\n }\n if (components.path !== undefined) {\n components.path = func(components.path)\n }\n if (components.query !== undefined) {\n components.query = func(components.query)\n }\n if (components.fragment !== undefined) {\n components.fragment = func(components.fragment)\n }\n return components\n}\n\nfunction recomposeAuthority (components, options) {\n const uriTokens = []\n\n if (components.userinfo !== undefined) {\n uriTokens.push(components.userinfo)\n uriTokens.push('@')\n }\n\n if (components.host !== undefined) {\n let host = unescape(components.host)\n const ipV4res = normalizeIPv4(host)\n\n if (ipV4res.isIPV4) {\n host = ipV4res.host\n } else {\n const ipV6res = normalizeIPv6(ipV4res.host, { isIPV4: false })\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = components.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof components.port === 'number' || typeof components.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(components.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n normalizeIPv4,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst UUID_REG = /^[\\da-f]{8}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{12}$/iu\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nfunction isSecure (wsComponents) {\n return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === 'wss'\n}\n\nfunction httpParse (components) {\n if (!components.host) {\n components.error = components.error || 'HTTP URIs must have a host.'\n }\n\n return components\n}\n\nfunction httpSerialize (components) {\n const secure = String(components.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (components.port === (secure ? 443 : 80) || components.port === '') {\n components.port = undefined\n }\n\n // normalize the empty path\n if (!components.path) {\n components.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return components\n}\n\nfunction wsParse (wsComponents) {\n// indicate if the secure flag is set\n wsComponents.secure = isSecure(wsComponents)\n\n // construct resouce name\n wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '')\n wsComponents.path = undefined\n wsComponents.query = undefined\n\n return wsComponents\n}\n\nfunction wsSerialize (wsComponents) {\n// normalize the default port\n if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === '') {\n wsComponents.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponents.secure === 'boolean') {\n wsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws')\n wsComponents.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponents.resourceName) {\n const [path, query] = wsComponents.resourceName.split('?')\n wsComponents.path = (path && path !== '/' ? path : undefined)\n wsComponents.query = query\n wsComponents.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponents.fragment = undefined\n\n return wsComponents\n}\n\nfunction urnParse (urnComponents, options) {\n if (!urnComponents.path) {\n urnComponents.error = 'URN can not be parsed'\n return urnComponents\n }\n const matches = urnComponents.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponents.scheme || 'urn'\n urnComponents.nid = matches[1].toLowerCase()\n urnComponents.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponents.nid}`\n const schemeHandler = SCHEMES[urnScheme]\n urnComponents.path = undefined\n\n if (schemeHandler) {\n urnComponents = schemeHandler.parse(urnComponents, options)\n }\n } else {\n urnComponents.error = urnComponents.error || 'URN can not be parsed.'\n }\n\n return urnComponents\n}\n\nfunction urnSerialize (urnComponents, options) {\n const scheme = options.scheme || urnComponents.scheme || 'urn'\n const nid = urnComponents.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = SCHEMES[urnScheme]\n\n if (schemeHandler) {\n urnComponents = schemeHandler.serialize(urnComponents, options)\n }\n\n const uriComponents = urnComponents\n const nss = urnComponents.nss\n uriComponents.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponents\n}\n\nfunction urnuuidParse (urnComponents, options) {\n const uuidComponents = urnComponents\n uuidComponents.uuid = uuidComponents.nss\n uuidComponents.nss = undefined\n\n if (!options.tolerant && (!uuidComponents.uuid || !UUID_REG.test(uuidComponents.uuid))) {\n uuidComponents.error = uuidComponents.error || 'UUID is not valid.'\n }\n\n return uuidComponents\n}\n\nfunction urnuuidSerialize (uuidComponents) {\n const urnComponents = uuidComponents\n // normalize UUID\n urnComponents.nss = (uuidComponents.uuid || '').toLowerCase()\n return urnComponents\n}\n\nconst http = {\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n}\n\nconst https = {\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n}\n\nconst ws = {\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n}\n\nconst wss = {\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n}\n\nconst urn = {\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n}\n\nconst urnuuid = {\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n}\n\nconst SCHEMES = {\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n}\n\nmodule.exports = SCHEMES\n","'use strict'\n\nconst { normalizeIPv6, normalizeIPv4, removeDotSegments, recomposeAuthority, normalizeComponentEncoding } = require('./lib/utils')\nconst SCHEMES = require('./lib/schemes')\n\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = serialize(parse(uri, options), options)\n } else if (typeof uri === 'object') {\n uri = parse(serialize(uri, options), options)\n }\n return uri\n}\n\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = Object.assign({ scheme: 'null' }, options)\n const resolved = resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n return serialize(resolved, { ...schemelessOptions, skipEscape: true })\n}\n\nfunction resolveComponents (base, relative, options, skipNormalization) {\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base components\n relative = parse(serialize(relative, options), options) // normalize relative components\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path.charAt(0) === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\nfunction serialize (cmpts, opts) {\n const components = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = SCHEMES[(options.scheme || components.scheme || '').toLowerCase()]\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options)\n\n if (components.path !== undefined) {\n if (!options.skipEscape) {\n components.path = escape(components.path)\n\n if (components.scheme !== undefined) {\n components.path = components.path.split('%3A').join(':')\n }\n } else {\n components.path = unescape(components.path)\n }\n }\n\n if (options.reference !== 'suffix' && components.scheme) {\n uriTokens.push(components.scheme, ':')\n }\n\n const authority = recomposeAuthority(components, options)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (components.path && components.path.charAt(0) !== '/') {\n uriTokens.push('/')\n }\n }\n if (components.path !== undefined) {\n let s = components.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (authority === undefined) {\n s = s.replace(/^\\/\\//u, '/%2F') // don't allow the path to start with \"//\"\n }\n\n uriTokens.push(s)\n }\n\n if (components.query !== undefined) {\n uriTokens.push('?', components.query)\n }\n\n if (components.fragment !== undefined) {\n uriTokens.push('#', components.fragment)\n }\n return uriTokens.join('')\n}\n\nconst hexLookUp = Array.from({ length: 127 }, (v, k) => /[^!\"$&'()*+,\\-.;=_`a-z{}~]/u.test(String.fromCharCode(k)))\n\nfunction nonSimpleDomain (value) {\n let code = 0\n for (let i = 0, len = value.length; i < len; ++i) {\n code = value.charCodeAt(i)\n if (code > 126 || hexLookUp[code]) {\n return true\n }\n }\n return false\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n const gotEncoding = uri.indexOf('%') !== -1\n let isIP = false\n if (options.reference === 'suffix') uri = (options.scheme ? options.scheme + ':' : '') + '//' + uri\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = normalizeIPv4(parsed.host)\n if (ipv4result.isIPV4 === false) {\n const ipv6result = normalizeIPv6(ipv4result.host, { isIPV4: false })\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n parsed.host = ipv4result.host\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && !parsed.path && parsed.query === undefined) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = SCHEMES[(options.scheme || parsed.scheme || '').toLowerCase()]\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (gotEncoding && parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (gotEncoding && parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n if (parsed.path !== undefined && parsed.path.length) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment !== undefined && parsed.fragment.length) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponents,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst uri = require(\"fast-uri\");\nuri.code = 'require(\"ajv/dist/runtime/uri\").default';\nexports.default = uri;\n//# sourceMappingURL=uri.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;\nvar validate_1 = require(\"./compile/validate\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });\nvar codegen_1 = require(\"./compile/codegen\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return codegen_1._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return codegen_1.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return codegen_1.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return codegen_1.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return codegen_1.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return codegen_1.CodeGen; } });\nconst validation_error_1 = require(\"./runtime/validation_error\");\nconst ref_error_1 = require(\"./compile/ref_error\");\nconst rules_1 = require(\"./compile/rules\");\nconst compile_1 = require(\"./compile\");\nconst codegen_2 = require(\"./compile/codegen\");\nconst resolve_1 = require(\"./compile/resolve\");\nconst dataType_1 = require(\"./compile/validate/dataType\");\nconst util_1 = require(\"./compile/util\");\nconst $dataRefSchema = require(\"./refs/data.json\");\nconst uri_1 = require(\"./runtime/uri\");\nconst defaultRegExp = (str, flags) => new RegExp(str, flags);\ndefaultRegExp.code = \"new RegExp\";\nconst META_IGNORE_OPTIONS = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"];\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n]);\nconst removedOptions = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n};\nconst deprecatedOptions = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n};\nconst MAX_EXPRESSION = 200;\n// eslint-disable-next-line complexity\nfunction requiredOptions(o) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;\n const s = o.strict;\n const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize;\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0;\n const regExp = (_c = (_b = o.code) === null || _b === void 0 ? void 0 : _b.regExp) !== null && _c !== void 0 ? _c : defaultRegExp;\n const uriResolver = (_d = o.uriResolver) !== null && _d !== void 0 ? _d : uri_1.default;\n return {\n strictSchema: (_f = (_e = o.strictSchema) !== null && _e !== void 0 ? _e : s) !== null && _f !== void 0 ? _f : true,\n strictNumbers: (_h = (_g = o.strictNumbers) !== null && _g !== void 0 ? _g : s) !== null && _h !== void 0 ? _h : true,\n strictTypes: (_k = (_j = o.strictTypes) !== null && _j !== void 0 ? _j : s) !== null && _k !== void 0 ? _k : \"log\",\n strictTuples: (_m = (_l = o.strictTuples) !== null && _l !== void 0 ? _l : s) !== null && _m !== void 0 ? _m : \"log\",\n strictRequired: (_p = (_o = o.strictRequired) !== null && _o !== void 0 ? _o : s) !== null && _p !== void 0 ? _p : false,\n code: o.code ? { ...o.code, optimize, regExp } : { optimize, regExp },\n loopRequired: (_q = o.loopRequired) !== null && _q !== void 0 ? _q : MAX_EXPRESSION,\n loopEnum: (_r = o.loopEnum) !== null && _r !== void 0 ? _r : MAX_EXPRESSION,\n meta: (_s = o.meta) !== null && _s !== void 0 ? _s : true,\n messages: (_t = o.messages) !== null && _t !== void 0 ? _t : true,\n inlineRefs: (_u = o.inlineRefs) !== null && _u !== void 0 ? _u : true,\n schemaId: (_v = o.schemaId) !== null && _v !== void 0 ? _v : \"$id\",\n addUsedSchema: (_w = o.addUsedSchema) !== null && _w !== void 0 ? _w : true,\n validateSchema: (_x = o.validateSchema) !== null && _x !== void 0 ? _x : true,\n validateFormats: (_y = o.validateFormats) !== null && _y !== void 0 ? _y : true,\n unicodeRegExp: (_z = o.unicodeRegExp) !== null && _z !== void 0 ? _z : true,\n int32range: (_0 = o.int32range) !== null && _0 !== void 0 ? _0 : true,\n uriResolver: uriResolver,\n };\n}\nclass Ajv {\n constructor(opts = {}) {\n this.schemas = {};\n this.refs = {};\n this.formats = {};\n this._compilations = new Set();\n this._loading = {};\n this._cache = new Map();\n opts = this.opts = { ...opts, ...requiredOptions(opts) };\n const { es5, lines } = this.opts.code;\n this.scope = new codegen_2.ValueScope({ scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines });\n this.logger = getLogger(opts.logger);\n const formatOpt = opts.validateFormats;\n opts.validateFormats = false;\n this.RULES = (0, rules_1.getRules)();\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\");\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\");\n this._metaOpts = getMetaSchemaOptions.call(this);\n if (opts.formats)\n addInitialFormats.call(this);\n this._addVocabularies();\n this._addDefaultMetaSchema();\n if (opts.keywords)\n addInitialKeywords.call(this, opts.keywords);\n if (typeof opts.meta == \"object\")\n this.addMetaSchema(opts.meta);\n addInitialSchemas.call(this);\n opts.validateFormats = formatOpt;\n }\n _addVocabularies() {\n this.addKeyword(\"$async\");\n }\n _addDefaultMetaSchema() {\n const { $data, meta, schemaId } = this.opts;\n let _dataRefSchema = $dataRefSchema;\n if (schemaId === \"id\") {\n _dataRefSchema = { ...$dataRefSchema };\n _dataRefSchema.id = _dataRefSchema.$id;\n delete _dataRefSchema.$id;\n }\n if (meta && $data)\n this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false);\n }\n defaultMeta() {\n const { meta, schemaId } = this.opts;\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined);\n }\n validate(schemaKeyRef, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data // to be validated\n ) {\n let v;\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema(schemaKeyRef);\n if (!v)\n throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`);\n }\n else {\n v = this.compile(schemaKeyRef);\n }\n const valid = v(data);\n if (!(\"$async\" in v))\n this.errors = v.errors;\n return valid;\n }\n compile(schema, _meta) {\n const sch = this._addSchema(schema, _meta);\n return (sch.validate || this._compileSchemaEnv(sch));\n }\n compileAsync(schema, meta) {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\");\n }\n const { loadSchema } = this.opts;\n return runCompileAsync.call(this, schema, meta);\n async function runCompileAsync(_schema, _meta) {\n await loadMetaSchema.call(this, _schema.$schema);\n const sch = this._addSchema(_schema, _meta);\n return sch.validate || _compileAsync.call(this, sch);\n }\n async function loadMetaSchema($ref) {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, { $ref }, true);\n }\n }\n async function _compileAsync(sch) {\n try {\n return this._compileSchemaEnv(sch);\n }\n catch (e) {\n if (!(e instanceof ref_error_1.default))\n throw e;\n checkLoaded.call(this, e);\n await loadMissingSchema.call(this, e.missingSchema);\n return _compileAsync.call(this, sch);\n }\n }\n function checkLoaded({ missingSchema: ref, missingRef }) {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`);\n }\n }\n async function loadMissingSchema(ref) {\n const _schema = await _loadSchema.call(this, ref);\n if (!this.refs[ref])\n await loadMetaSchema.call(this, _schema.$schema);\n if (!this.refs[ref])\n this.addSchema(_schema, ref, meta);\n }\n async function _loadSchema(ref) {\n const p = this._loading[ref];\n if (p)\n return p;\n try {\n return await (this._loading[ref] = loadSchema(ref));\n }\n finally {\n delete this._loading[ref];\n }\n }\n }\n // Adds schema to the instance\n addSchema(schema, // If array is passed, `key` will be ignored\n key, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ) {\n if (Array.isArray(schema)) {\n for (const sch of schema)\n this.addSchema(sch, undefined, _meta, _validateSchema);\n return this;\n }\n let id;\n if (typeof schema === \"object\") {\n const { schemaId } = this.opts;\n id = schema[schemaId];\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`);\n }\n }\n key = (0, resolve_1.normalizeId)(key || id);\n this._checkUnique(key);\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true);\n return this;\n }\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(schema, key, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ) {\n this.addSchema(schema, key, true, _validateSchema);\n return this;\n }\n // Validate schema against its meta-schema\n validateSchema(schema, throwOrLogError) {\n if (typeof schema == \"boolean\")\n return true;\n let $schema;\n $schema = schema.$schema;\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\");\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta();\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\");\n this.errors = null;\n return true;\n }\n const valid = this.validate($schema, schema);\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText();\n if (this.opts.validateSchema === \"log\")\n this.logger.error(message);\n else\n throw new Error(message);\n }\n return valid;\n }\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema(keyRef) {\n let sch;\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\")\n keyRef = sch;\n if (sch === undefined) {\n const { schemaId } = this.opts;\n const root = new compile_1.SchemaEnv({ schema: {}, schemaId });\n sch = compile_1.resolveSchema.call(this, root, keyRef);\n if (!sch)\n return;\n this.refs[keyRef] = sch;\n }\n return (sch.validate || this._compileSchemaEnv(sch));\n }\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef) {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef);\n this._removeAllSchemas(this.refs, schemaKeyRef);\n return this;\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas);\n this._removeAllSchemas(this.refs);\n this._cache.clear();\n return this;\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef);\n if (typeof sch == \"object\")\n this._cache.delete(sch.schema);\n delete this.schemas[schemaKeyRef];\n delete this.refs[schemaKeyRef];\n return this;\n }\n case \"object\": {\n const cacheKey = schemaKeyRef;\n this._cache.delete(cacheKey);\n let id = schemaKeyRef[this.opts.schemaId];\n if (id) {\n id = (0, resolve_1.normalizeId)(id);\n delete this.schemas[id];\n delete this.refs[id];\n }\n return this;\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\");\n }\n }\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions) {\n for (const def of definitions)\n this.addKeyword(def);\n return this;\n }\n addKeyword(kwdOrDef, def // deprecated\n ) {\n let keyword;\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef;\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\");\n def.keyword = keyword;\n }\n }\n else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef;\n keyword = def.keyword;\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\");\n }\n }\n else {\n throw new Error(\"invalid addKeywords parameters\");\n }\n checkKeyword.call(this, keyword, def);\n if (!def) {\n (0, util_1.eachItem)(keyword, (kwd) => addRule.call(this, kwd));\n return this;\n }\n keywordMetaschema.call(this, def);\n const definition = {\n ...def,\n type: (0, dataType_1.getJSONTypes)(def.type),\n schemaType: (0, dataType_1.getJSONTypes)(def.schemaType),\n };\n (0, util_1.eachItem)(keyword, definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t)));\n return this;\n }\n getKeyword(keyword) {\n const rule = this.RULES.all[keyword];\n return typeof rule == \"object\" ? rule.definition : !!rule;\n }\n // Remove keyword\n removeKeyword(keyword) {\n // TODO return type should be Ajv\n const { RULES } = this;\n delete RULES.keywords[keyword];\n delete RULES.all[keyword];\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword);\n if (i >= 0)\n group.rules.splice(i, 1);\n }\n return this;\n }\n // Add format\n addFormat(name, format) {\n if (typeof format == \"string\")\n format = new RegExp(format);\n this.formats[name] = format;\n return this;\n }\n errorsText(errors = this.errors, // optional array of validation errors\n { separator = \", \", dataVar = \"data\" } = {} // optional options with properties `separator` and `dataVar`\n ) {\n if (!errors || errors.length === 0)\n return \"No errors\";\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg);\n }\n $dataMetaSchema(metaSchema, keywordsJsonPointers) {\n const rules = this.RULES.all;\n metaSchema = JSON.parse(JSON.stringify(metaSchema));\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1); // first segment is an empty string\n let keywords = metaSchema;\n for (const seg of segments)\n keywords = keywords[seg];\n for (const key in rules) {\n const rule = rules[key];\n if (typeof rule != \"object\")\n continue;\n const { $data } = rule.definition;\n const schema = keywords[key];\n if ($data && schema)\n keywords[key] = schemaOrData(schema);\n }\n }\n return metaSchema;\n }\n _removeAllSchemas(schemas, regex) {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef];\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef];\n }\n else if (sch && !sch.meta) {\n this._cache.delete(sch.schema);\n delete schemas[keyRef];\n }\n }\n }\n }\n _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) {\n let id;\n const { schemaId } = this.opts;\n if (typeof schema == \"object\") {\n id = schema[schemaId];\n }\n else {\n if (this.opts.jtd)\n throw new Error(\"schema must be object\");\n else if (typeof schema != \"boolean\")\n throw new Error(\"schema must be object or boolean\");\n }\n let sch = this._cache.get(schema);\n if (sch !== undefined)\n return sch;\n baseId = (0, resolve_1.normalizeId)(id || baseId);\n const localRefs = resolve_1.getSchemaRefs.call(this, schema, baseId);\n sch = new compile_1.SchemaEnv({ schema, schemaId, meta, baseId, localRefs });\n this._cache.set(sch.schema, sch);\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId)\n this._checkUnique(baseId);\n this.refs[baseId] = sch;\n }\n if (validateSchema)\n this.validateSchema(schema, true);\n return sch;\n }\n _checkUnique(id) {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`);\n }\n }\n _compileSchemaEnv(sch) {\n if (sch.meta)\n this._compileMetaSchema(sch);\n else\n compile_1.compileSchema.call(this, sch);\n /* istanbul ignore if */\n if (!sch.validate)\n throw new Error(\"ajv implementation error\");\n return sch.validate;\n }\n _compileMetaSchema(sch) {\n const currentOpts = this.opts;\n this.opts = this._metaOpts;\n try {\n compile_1.compileSchema.call(this, sch);\n }\n finally {\n this.opts = currentOpts;\n }\n }\n}\nAjv.ValidationError = validation_error_1.default;\nAjv.MissingRefError = ref_error_1.default;\nexports.default = Ajv;\nfunction checkOptions(checkOpts, options, msg, log = \"error\") {\n for (const key in checkOpts) {\n const opt = key;\n if (opt in options)\n this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`);\n }\n}\nfunction getSchEnv(keyRef) {\n keyRef = (0, resolve_1.normalizeId)(keyRef); // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef];\n}\nfunction addInitialSchemas() {\n const optsSchemas = this.opts.schemas;\n if (!optsSchemas)\n return;\n if (Array.isArray(optsSchemas))\n this.addSchema(optsSchemas);\n else\n for (const key in optsSchemas)\n this.addSchema(optsSchemas[key], key);\n}\nfunction addInitialFormats() {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name];\n if (format)\n this.addFormat(name, format);\n }\n}\nfunction addInitialKeywords(defs) {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs);\n return;\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\");\n for (const keyword in defs) {\n const def = defs[keyword];\n if (!def.keyword)\n def.keyword = keyword;\n this.addKeyword(def);\n }\n}\nfunction getMetaSchemaOptions() {\n const metaOpts = { ...this.opts };\n for (const opt of META_IGNORE_OPTIONS)\n delete metaOpts[opt];\n return metaOpts;\n}\nconst noLogs = { log() { }, warn() { }, error() { } };\nfunction getLogger(logger) {\n if (logger === false)\n return noLogs;\n if (logger === undefined)\n return console;\n if (logger.log && logger.warn && logger.error)\n return logger;\n throw new Error(\"logger must implement log, warn and error methods\");\n}\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i;\nfunction checkKeyword(keyword, def) {\n const { RULES } = this;\n (0, util_1.eachItem)(keyword, (kwd) => {\n if (RULES.keywords[kwd])\n throw new Error(`Keyword ${kwd} is already defined`);\n if (!KEYWORD_NAME.test(kwd))\n throw new Error(`Keyword ${kwd} has invalid name`);\n });\n if (!def)\n return;\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function');\n }\n}\nfunction addRule(keyword, definition, dataType) {\n var _a;\n const post = definition === null || definition === void 0 ? void 0 : definition.post;\n if (dataType && post)\n throw new Error('keyword with \"post\" flag cannot have \"type\"');\n const { RULES } = this;\n let ruleGroup = post ? RULES.post : RULES.rules.find(({ type: t }) => t === dataType);\n if (!ruleGroup) {\n ruleGroup = { type: dataType, rules: [] };\n RULES.rules.push(ruleGroup);\n }\n RULES.keywords[keyword] = true;\n if (!definition)\n return;\n const rule = {\n keyword,\n definition: {\n ...definition,\n type: (0, dataType_1.getJSONTypes)(definition.type),\n schemaType: (0, dataType_1.getJSONTypes)(definition.schemaType),\n },\n };\n if (definition.before)\n addBeforeRule.call(this, ruleGroup, rule, definition.before);\n else\n ruleGroup.rules.push(rule);\n RULES.all[keyword] = rule;\n (_a = definition.implements) === null || _a === void 0 ? void 0 : _a.forEach((kwd) => this.addKeyword(kwd));\n}\nfunction addBeforeRule(ruleGroup, rule, before) {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before);\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule);\n }\n else {\n ruleGroup.rules.push(rule);\n this.logger.warn(`rule ${before} is not defined`);\n }\n}\nfunction keywordMetaschema(def) {\n let { metaSchema } = def;\n if (metaSchema === undefined)\n return;\n if (def.$data && this.opts.$data)\n metaSchema = schemaOrData(metaSchema);\n def.validateSchema = this.compile(metaSchema, true);\n}\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n};\nfunction schemaOrData(schema) {\n return { anyOf: [schema, $dataRef] };\n}\n//# sourceMappingURL=core.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst def = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID');\n },\n};\nexports.default = def;\n//# sourceMappingURL=id.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callRef = exports.getValidate = void 0;\nconst ref_error_1 = require(\"../../compile/ref_error\");\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst compile_1 = require(\"../../compile\");\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt) {\n const { gen, schema: $ref, it } = cxt;\n const { baseId, schemaEnv: env, validateName, opts, self } = it;\n const { root } = env;\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId)\n return callRootRef();\n const schOrEnv = compile_1.resolveRef.call(self, root, baseId, $ref);\n if (schOrEnv === undefined)\n throw new ref_error_1.default(it.opts.uriResolver, baseId, $ref);\n if (schOrEnv instanceof compile_1.SchemaEnv)\n return callValidate(schOrEnv);\n return inlineRefSchema(schOrEnv);\n function callRootRef() {\n if (env === root)\n return callRef(cxt, validateName, env, env.$async);\n const rootName = gen.scopeValue(\"root\", { ref: root });\n return callRef(cxt, (0, codegen_1._) `${rootName}.validate`, root, root.$async);\n }\n function callValidate(sch) {\n const v = getValidate(cxt, sch);\n callRef(cxt, v, sch, sch.$async);\n }\n function inlineRefSchema(sch) {\n const schName = gen.scopeValue(\"schema\", opts.code.source === true ? { ref: sch, code: (0, codegen_1.stringify)(sch) } : { ref: sch });\n const valid = gen.name(\"valid\");\n const schCxt = cxt.subschema({\n schema: sch,\n dataTypes: [],\n schemaPath: codegen_1.nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n }, valid);\n cxt.mergeEvaluated(schCxt);\n cxt.ok(valid);\n }\n },\n};\nfunction getValidate(cxt, sch) {\n const { gen } = cxt;\n return sch.validate\n ? gen.scopeValue(\"validate\", { ref: sch.validate })\n : (0, codegen_1._) `${gen.scopeValue(\"wrapper\", { ref: sch })}.validate`;\n}\nexports.getValidate = getValidate;\nfunction callRef(cxt, v, sch, $async) {\n const { gen, it } = cxt;\n const { allErrors, schemaEnv: env, opts } = it;\n const passCxt = opts.passContext ? names_1.default.this : codegen_1.nil;\n if ($async)\n callAsyncRef();\n else\n callSyncRef();\n function callAsyncRef() {\n if (!env.$async)\n throw new Error(\"async schema referenced by sync schema\");\n const valid = gen.let(\"valid\");\n gen.try(() => {\n gen.code((0, codegen_1._) `await ${(0, code_1.callValidateCode)(cxt, v, passCxt)}`);\n addEvaluatedFrom(v); // TODO will not work with async, it has to be returned with the result\n if (!allErrors)\n gen.assign(valid, true);\n }, (e) => {\n gen.if((0, codegen_1._) `!(${e} instanceof ${it.ValidationError})`, () => gen.throw(e));\n addErrorsFrom(e);\n if (!allErrors)\n gen.assign(valid, false);\n });\n cxt.ok(valid);\n }\n function callSyncRef() {\n cxt.result((0, code_1.callValidateCode)(cxt, v, passCxt), () => addEvaluatedFrom(v), () => addErrorsFrom(v));\n }\n function addErrorsFrom(source) {\n const errs = (0, codegen_1._) `${source}.errors`;\n gen.assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`); // TODO tagged\n gen.assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n }\n function addEvaluatedFrom(source) {\n var _a;\n if (!it.opts.unevaluated)\n return;\n const schEvaluated = (_a = sch === null || sch === void 0 ? void 0 : sch.validate) === null || _a === void 0 ? void 0 : _a.evaluated;\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schEvaluated.props, it.props);\n }\n }\n else {\n const props = gen.var(\"props\", (0, codegen_1._) `${source}.evaluated.props`);\n it.props = util_1.mergeEvaluated.props(gen, props, it.props, codegen_1.Name);\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schEvaluated.items, it.items);\n }\n }\n else {\n const items = gen.var(\"items\", (0, codegen_1._) `${source}.evaluated.items`);\n it.items = util_1.mergeEvaluated.items(gen, items, it.items, codegen_1.Name);\n }\n }\n }\n}\nexports.callRef = callRef;\nexports.default = def;\n//# sourceMappingURL=ref.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst id_1 = require(\"./id\");\nconst ref_1 = require(\"./ref\");\nconst core = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n { keyword: \"$comment\" },\n \"definitions\",\n id_1.default,\n ref_1.default,\n];\nexports.default = core;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst ops = codegen_1.operators;\nconst KWDs = {\n maximum: { okStr: \"<=\", ok: ops.LTE, fail: ops.GT },\n minimum: { okStr: \">=\", ok: ops.GTE, fail: ops.LT },\n exclusiveMaximum: { okStr: \"<\", ok: ops.LT, fail: ops.GTE },\n exclusiveMinimum: { okStr: \">\", ok: ops.GT, fail: ops.LTE },\n};\nconst error = {\n message: ({ keyword, schemaCode }) => (0, codegen_1.str) `must be ${KWDs[keyword].okStr} ${schemaCode}`,\n params: ({ keyword, schemaCode }) => (0, codegen_1._) `{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n cxt.fail$data((0, codegen_1._) `${data} ${KWDs[keyword].fail} ${schemaCode} || isNaN(${data})`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitNumber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must be multiple of ${schemaCode}`,\n params: ({ schemaCode }) => (0, codegen_1._) `{multipleOf: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, schemaCode, it } = cxt;\n // const bdt = bad$DataType(schemaCode, def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision;\n const res = gen.let(\"res\");\n const invalid = prec\n ? (0, codegen_1._) `Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : (0, codegen_1._) `${res} !== parseInt(${res})`;\n cxt.fail$data((0, codegen_1._) `(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=multipleOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nfunction ucs2length(str) {\n const len = str.length;\n let length = 0;\n let pos = 0;\n let value;\n while (pos < len) {\n length++;\n value = str.charCodeAt(pos++);\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xfc00) === 0xdc00)\n pos++; // low surrogate\n }\n }\n return length;\n}\nexports.default = ucs2length;\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default';\n//# sourceMappingURL=ucs2length.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst ucs2length_1 = require(\"../../runtime/ucs2length\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} characters`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode, it } = cxt;\n const op = keyword === \"maxLength\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n const len = it.opts.unicode === false ? (0, codegen_1._) `${data}.length` : (0, codegen_1._) `${(0, util_1.useFunc)(cxt.gen, ucs2length_1.default)}(${data})`;\n cxt.fail$data((0, codegen_1._) `${len} ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitLength.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must match pattern \"${schemaCode}\"`,\n params: ({ schemaCode }) => (0, codegen_1._) `{pattern: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const { data, $data, schema, schemaCode, it } = cxt;\n // TODO regexp should be wrapped in try/catchs\n const u = it.opts.unicodeRegExp ? \"u\" : \"\";\n const regExp = $data ? (0, codegen_1._) `(new RegExp(${schemaCode}, ${u}))` : (0, code_1.usePattern)(cxt, schema);\n cxt.fail$data((0, codegen_1._) `!${regExp}.test(${data})`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=pattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} properties`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n const op = keyword === \"maxProperties\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n cxt.fail$data((0, codegen_1._) `Object.keys(${data}).length ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { missingProperty } }) => (0, codegen_1.str) `must have required property '${missingProperty}'`,\n params: ({ params: { missingProperty } }) => (0, codegen_1._) `{missingProperty: ${missingProperty}}`,\n};\nconst def = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt) {\n const { gen, schema, schemaCode, data, $data, it } = cxt;\n const { opts } = it;\n if (!$data && schema.length === 0)\n return;\n const useLoop = schema.length >= opts.loopRequired;\n if (it.allErrors)\n allErrorsMode();\n else\n exitOnErrorMode();\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties;\n const { definedProperties } = cxt.it;\n for (const requiredKey of schema) {\n if ((props === null || props === void 0 ? void 0 : props[requiredKey]) === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictRequired);\n }\n }\n }\n function allErrorsMode() {\n if (useLoop || $data) {\n cxt.block$data(codegen_1.nil, loopAllRequired);\n }\n else {\n for (const prop of schema) {\n (0, code_1.checkReportMissingProp)(cxt, prop);\n }\n }\n }\n function exitOnErrorMode() {\n const missing = gen.let(\"missing\");\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true);\n cxt.block$data(valid, () => loopUntilMissing(missing, valid));\n cxt.ok(valid);\n }\n else {\n gen.if((0, code_1.checkMissingProp)(cxt, schema, missing));\n (0, code_1.reportMissingProp)(cxt, missing);\n gen.else();\n }\n }\n function loopAllRequired() {\n gen.forOf(\"prop\", schemaCode, (prop) => {\n cxt.setParams({ missingProperty: prop });\n gen.if((0, code_1.noPropertyInData)(gen, data, prop, opts.ownProperties), () => cxt.error());\n });\n }\n function loopUntilMissing(missing, valid) {\n cxt.setParams({ missingProperty: missing });\n gen.forOf(missing, schemaCode, () => {\n gen.assign(valid, (0, code_1.propertyInData)(gen, data, missing, opts.ownProperties));\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.error();\n gen.break();\n });\n }, codegen_1.nil);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=required.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} items`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n const op = keyword === \"maxItems\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n cxt.fail$data((0, codegen_1._) `${data}.length ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://github.com/ajv-validator/ajv/issues/889\nconst equal = require(\"fast-deep-equal\");\nequal.code = 'require(\"ajv/dist/runtime/equal\").default';\nexports.default = equal;\n//# sourceMappingURL=equal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dataType_1 = require(\"../../compile/validate/dataType\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: ({ params: { i, j } }) => (0, codegen_1.str) `must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({ params: { i, j } }) => (0, codegen_1._) `{i: ${i}, j: ${j}}`,\n};\nconst def = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, parentSchema, schemaCode, it } = cxt;\n if (!$data && !schema)\n return;\n const valid = gen.let(\"valid\");\n const itemTypes = parentSchema.items ? (0, dataType_1.getSchemaTypes)(parentSchema.items) : [];\n cxt.block$data(valid, validateUniqueItems, (0, codegen_1._) `${schemaCode} === false`);\n cxt.ok(valid);\n function validateUniqueItems() {\n const i = gen.let(\"i\", (0, codegen_1._) `${data}.length`);\n const j = gen.let(\"j\");\n cxt.setParams({ i, j });\n gen.assign(valid, true);\n gen.if((0, codegen_1._) `${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j));\n }\n function canOptimize() {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\");\n }\n function loopN(i, j) {\n const item = gen.name(\"item\");\n const wrongType = (0, dataType_1.checkDataTypes)(itemTypes, item, it.opts.strictNumbers, dataType_1.DataType.Wrong);\n const indices = gen.const(\"indices\", (0, codegen_1._) `{}`);\n gen.for((0, codegen_1._) `;${i}--;`, () => {\n gen.let(item, (0, codegen_1._) `${data}[${i}]`);\n gen.if(wrongType, (0, codegen_1._) `continue`);\n if (itemTypes.length > 1)\n gen.if((0, codegen_1._) `typeof ${item} == \"string\"`, (0, codegen_1._) `${item} += \"_\"`);\n gen\n .if((0, codegen_1._) `typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, (0, codegen_1._) `${indices}[${item}]`);\n cxt.error();\n gen.assign(valid, false).break();\n })\n .code((0, codegen_1._) `${indices}[${item}] = ${i}`);\n });\n }\n function loopN2(i, j) {\n const eql = (0, util_1.useFunc)(gen, equal_1.default);\n const outer = gen.name(\"outer\");\n gen.label(outer).for((0, codegen_1._) `;${i}--;`, () => gen.for((0, codegen_1._) `${j} = ${i}; ${j}--;`, () => gen.if((0, codegen_1._) `${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error();\n gen.assign(valid, false).break(outer);\n })));\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=uniqueItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: \"must be equal to constant\",\n params: ({ schemaCode }) => (0, codegen_1._) `{allowedValue: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schemaCode, schema } = cxt;\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data((0, codegen_1._) `!${(0, util_1.useFunc)(gen, equal_1.default)}(${data}, ${schemaCode})`);\n }\n else {\n cxt.fail((0, codegen_1._) `${schema} !== ${data}`);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=const.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: \"must be equal to one of the allowed values\",\n params: ({ schemaCode }) => (0, codegen_1._) `{allowedValues: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n if (!$data && schema.length === 0)\n throw new Error(\"enum must have non-empty array\");\n const useLoop = schema.length >= it.opts.loopEnum;\n let eql;\n const getEql = () => (eql !== null && eql !== void 0 ? eql : (eql = (0, util_1.useFunc)(gen, equal_1.default)));\n let valid;\n if (useLoop || $data) {\n valid = gen.let(\"valid\");\n cxt.block$data(valid, loopEnum);\n }\n else {\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const vSchema = gen.const(\"vSchema\", schemaCode);\n valid = (0, codegen_1.or)(...schema.map((_x, i) => equalCode(vSchema, i)));\n }\n cxt.pass(valid);\n function loopEnum() {\n gen.assign(valid, false);\n gen.forOf(\"v\", schemaCode, (v) => gen.if((0, codegen_1._) `${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break()));\n }\n function equalCode(vSchema, i) {\n const sch = schema[i];\n return typeof sch === \"object\" && sch !== null\n ? (0, codegen_1._) `${getEql()}(${data}, ${vSchema}[${i}])`\n : (0, codegen_1._) `${data} === ${sch}`;\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=enum.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst limitNumber_1 = require(\"./limitNumber\");\nconst multipleOf_1 = require(\"./multipleOf\");\nconst limitLength_1 = require(\"./limitLength\");\nconst pattern_1 = require(\"./pattern\");\nconst limitProperties_1 = require(\"./limitProperties\");\nconst required_1 = require(\"./required\");\nconst limitItems_1 = require(\"./limitItems\");\nconst uniqueItems_1 = require(\"./uniqueItems\");\nconst const_1 = require(\"./const\");\nconst enum_1 = require(\"./enum\");\nconst validation = [\n // number\n limitNumber_1.default,\n multipleOf_1.default,\n // string\n limitLength_1.default,\n pattern_1.default,\n // object\n limitProperties_1.default,\n required_1.default,\n // array\n limitItems_1.default,\n uniqueItems_1.default,\n // any\n { keyword: \"type\", schemaType: [\"string\", \"array\"] },\n { keyword: \"nullable\", schemaType: \"boolean\" },\n const_1.default,\n enum_1.default,\n];\nexports.default = validation;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateAdditionalItems = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`,\n params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`,\n};\nconst def = {\n keyword: \"additionalItems\",\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt) {\n const { parentSchema, it } = cxt;\n const { items } = parentSchema;\n if (!Array.isArray(items)) {\n (0, util_1.checkStrictMode)(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas');\n return;\n }\n validateAdditionalItems(cxt, items);\n },\n};\nfunction validateAdditionalItems(cxt, items) {\n const { gen, schema, data, keyword, it } = cxt;\n it.items = true;\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n if (schema === false) {\n cxt.setParams({ len: items.length });\n cxt.pass((0, codegen_1._) `${len} <= ${items.length}`);\n }\n else if (typeof schema == \"object\" && !(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.var(\"valid\", (0, codegen_1._) `${len} <= ${items.length}`); // TODO var\n gen.if((0, codegen_1.not)(valid), () => validateItems(valid));\n cxt.ok(valid);\n }\n function validateItems(valid) {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({ keyword, dataProp: i, dataPropType: util_1.Type.Num }, valid);\n if (!it.allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n });\n }\n}\nexports.validateAdditionalItems = validateAdditionalItems;\nexports.default = def;\n//# sourceMappingURL=additionalItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateTuple = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nconst def = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt) {\n const { schema, it } = cxt;\n if (Array.isArray(schema))\n return validateTuple(cxt, \"additionalItems\", schema);\n it.items = true;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n cxt.ok((0, code_1.validateArray)(cxt));\n },\n};\nfunction validateTuple(cxt, extraItems, schArr = cxt.schema) {\n const { gen, parentSchema, data, keyword, it } = cxt;\n checkStrictTuple(parentSchema);\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = util_1.mergeEvaluated.items(gen, schArr.length, it.items);\n }\n const valid = gen.name(\"valid\");\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n schArr.forEach((sch, i) => {\n if ((0, util_1.alwaysValidSchema)(it, sch))\n return;\n gen.if((0, codegen_1._) `${len} > ${i}`, () => cxt.subschema({\n keyword,\n schemaProp: i,\n dataProp: i,\n }, valid));\n cxt.ok(valid);\n });\n function checkStrictTuple(sch) {\n const { opts, errSchemaPath } = it;\n const l = schArr.length;\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false);\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`;\n (0, util_1.checkStrictMode)(it, msg, opts.strictTuples);\n }\n }\n}\nexports.validateTuple = validateTuple;\nexports.default = def;\n//# sourceMappingURL=items.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst items_1 = require(\"./items\");\nconst def = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => (0, items_1.validateTuple)(cxt, \"items\"),\n};\nexports.default = def;\n//# sourceMappingURL=prefixItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nconst additionalItems_1 = require(\"./additionalItems\");\nconst error = {\n message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`,\n params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`,\n};\nconst def = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt) {\n const { schema, parentSchema, it } = cxt;\n const { prefixItems } = parentSchema;\n it.items = true;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n if (prefixItems)\n (0, additionalItems_1.validateAdditionalItems)(cxt, prefixItems);\n else\n cxt.ok((0, code_1.validateArray)(cxt));\n },\n};\nexports.default = def;\n//# sourceMappingURL=items2020.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { min, max } }) => max === undefined\n ? (0, codegen_1.str) `must contain at least ${min} valid item(s)`\n : (0, codegen_1.str) `must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({ params: { min, max } }) => max === undefined ? (0, codegen_1._) `{minContains: ${min}}` : (0, codegen_1._) `{minContains: ${min}, maxContains: ${max}}`,\n};\nconst def = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, data, it } = cxt;\n let min;\n let max;\n const { minContains, maxContains } = parentSchema;\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains;\n max = maxContains;\n }\n else {\n min = 1;\n }\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n cxt.setParams({ min, max });\n if (max === undefined && min === 0) {\n (0, util_1.checkStrictMode)(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`);\n return;\n }\n if (max !== undefined && min > max) {\n (0, util_1.checkStrictMode)(it, `\"minContains\" > \"maxContains\" is always invalid`);\n cxt.fail();\n return;\n }\n if ((0, util_1.alwaysValidSchema)(it, schema)) {\n let cond = (0, codegen_1._) `${len} >= ${min}`;\n if (max !== undefined)\n cond = (0, codegen_1._) `${cond} && ${len} <= ${max}`;\n cxt.pass(cond);\n return;\n }\n it.items = true;\n const valid = gen.name(\"valid\");\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()));\n }\n else if (min === 0) {\n gen.let(valid, true);\n if (max !== undefined)\n gen.if((0, codegen_1._) `${data}.length > 0`, validateItemsWithCount);\n }\n else {\n gen.let(valid, false);\n validateItemsWithCount();\n }\n cxt.result(valid, () => cxt.reset());\n function validateItemsWithCount() {\n const schValid = gen.name(\"_valid\");\n const count = gen.let(\"count\", 0);\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)));\n }\n function validateItems(_valid, block) {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword: \"contains\",\n dataProp: i,\n dataPropType: util_1.Type.Num,\n compositeRule: true,\n }, _valid);\n block();\n });\n }\n function checkLimits(count) {\n gen.code((0, codegen_1._) `${count}++`);\n if (max === undefined) {\n gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true).break());\n }\n else {\n gen.if((0, codegen_1._) `${count} > ${max}`, () => gen.assign(valid, false).break());\n if (min === 1)\n gen.assign(valid, true);\n else\n gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true));\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=contains.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateSchemaDeps = exports.validatePropertyDeps = exports.error = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nexports.error = {\n message: ({ params: { property, depsCount, deps } }) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\";\n return (0, codegen_1.str) `must have ${property_ies} ${deps} when property ${property} is present`;\n },\n params: ({ params: { property, depsCount, deps, missingProperty } }) => (0, codegen_1._) `{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n};\nconst def = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error: exports.error,\n code(cxt) {\n const [propDeps, schDeps] = splitDependencies(cxt);\n validatePropertyDeps(cxt, propDeps);\n validateSchemaDeps(cxt, schDeps);\n },\n};\nfunction splitDependencies({ schema }) {\n const propertyDeps = {};\n const schemaDeps = {};\n for (const key in schema) {\n if (key === \"__proto__\")\n continue;\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps;\n deps[key] = schema[key];\n }\n return [propertyDeps, schemaDeps];\n}\nfunction validatePropertyDeps(cxt, propertyDeps = cxt.schema) {\n const { gen, data, it } = cxt;\n if (Object.keys(propertyDeps).length === 0)\n return;\n const missing = gen.let(\"missing\");\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop];\n if (deps.length === 0)\n continue;\n const hasProperty = (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties);\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n });\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n (0, code_1.checkReportMissingProp)(cxt, depProp);\n }\n });\n }\n else {\n gen.if((0, codegen_1._) `${hasProperty} && (${(0, code_1.checkMissingProp)(cxt, deps, missing)})`);\n (0, code_1.reportMissingProp)(cxt, missing);\n gen.else();\n }\n }\n}\nexports.validatePropertyDeps = validatePropertyDeps;\nfunction validateSchemaDeps(cxt, schemaDeps = cxt.schema) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n for (const prop in schemaDeps) {\n if ((0, util_1.alwaysValidSchema)(it, schemaDeps[prop]))\n continue;\n gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties), () => {\n const schCxt = cxt.subschema({ keyword, schemaProp: prop }, valid);\n cxt.mergeValidEvaluated(schCxt, valid);\n }, () => gen.var(valid, true) // TODO var\n );\n cxt.ok(valid);\n }\n}\nexports.validateSchemaDeps = validateSchemaDeps;\nexports.default = def;\n//# sourceMappingURL=dependencies.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"property name must be valid\",\n params: ({ params }) => (0, codegen_1._) `{propertyName: ${params.propertyName}}`,\n};\nconst def = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt) {\n const { gen, schema, data, it } = cxt;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n const valid = gen.name(\"valid\");\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({ propertyName: key });\n cxt.subschema({\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n }, valid);\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.error(true);\n if (!it.allErrors)\n gen.break();\n });\n });\n cxt.ok(valid);\n },\n};\nexports.default = def;\n//# sourceMappingURL=propertyNames.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"must NOT have additional properties\",\n params: ({ params }) => (0, codegen_1._) `{additionalProperty: ${params.additionalProperty}}`,\n};\nconst def = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, data, errsCount, it } = cxt;\n /* istanbul ignore if */\n if (!errsCount)\n throw new Error(\"ajv implementation error\");\n const { allErrors, opts } = it;\n it.props = true;\n if (opts.removeAdditional !== \"all\" && (0, util_1.alwaysValidSchema)(it, schema))\n return;\n const props = (0, code_1.allSchemaProperties)(parentSchema.properties);\n const patProps = (0, code_1.allSchemaProperties)(parentSchema.patternProperties);\n checkAdditionalProperties();\n cxt.ok((0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n function checkAdditionalProperties() {\n gen.forIn(\"key\", data, (key) => {\n if (!props.length && !patProps.length)\n additionalPropertyCode(key);\n else\n gen.if(isAdditional(key), () => additionalPropertyCode(key));\n });\n }\n function isAdditional(key) {\n let definedProp;\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = (0, util_1.schemaRefOrVal)(it, parentSchema.properties, \"properties\");\n definedProp = (0, code_1.isOwnProperty)(gen, propsSchema, key);\n }\n else if (props.length) {\n definedProp = (0, codegen_1.or)(...props.map((p) => (0, codegen_1._) `${key} === ${p}`));\n }\n else {\n definedProp = codegen_1.nil;\n }\n if (patProps.length) {\n definedProp = (0, codegen_1.or)(definedProp, ...patProps.map((p) => (0, codegen_1._) `${(0, code_1.usePattern)(cxt, p)}.test(${key})`));\n }\n return (0, codegen_1.not)(definedProp);\n }\n function deleteAdditional(key) {\n gen.code((0, codegen_1._) `delete ${data}[${key}]`);\n }\n function additionalPropertyCode(key) {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key);\n return;\n }\n if (schema === false) {\n cxt.setParams({ additionalProperty: key });\n cxt.error();\n if (!allErrors)\n gen.break();\n return;\n }\n if (typeof schema == \"object\" && !(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.name(\"valid\");\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false);\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.reset();\n deleteAdditional(key);\n });\n }\n else {\n applyAdditionalSchema(key, valid);\n if (!allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n }\n }\n }\n function applyAdditionalSchema(key, valid, errors) {\n const subschema = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: util_1.Type.Str,\n };\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n });\n }\n cxt.subschema(subschema, valid);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=additionalProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validate_1 = require(\"../../compile/validate\");\nconst code_1 = require(\"../code\");\nconst util_1 = require(\"../../compile/util\");\nconst additionalProperties_1 = require(\"./additionalProperties\");\nconst def = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt) {\n const { gen, schema, parentSchema, data, it } = cxt;\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n additionalProperties_1.default.code(new validate_1.KeywordCxt(it, additionalProperties_1.default, \"additionalProperties\"));\n }\n const allProps = (0, code_1.allSchemaProperties)(schema);\n for (const prop of allProps) {\n it.definedProperties.add(prop);\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = util_1.mergeEvaluated.props(gen, (0, util_1.toHash)(allProps), it.props);\n }\n const properties = allProps.filter((p) => !(0, util_1.alwaysValidSchema)(it, schema[p]));\n if (properties.length === 0)\n return;\n const valid = gen.name(\"valid\");\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop);\n }\n else {\n gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties));\n applyPropertySchema(prop);\n if (!it.allErrors)\n gen.else().var(valid, true);\n gen.endIf();\n }\n cxt.it.definedProperties.add(prop);\n cxt.ok(valid);\n }\n function hasDefault(prop) {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined;\n }\n function applyPropertySchema(prop) {\n cxt.subschema({\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n }, valid);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=properties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst util_2 = require(\"../../compile/util\");\nconst def = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt) {\n const { gen, schema, data, parentSchema, it } = cxt;\n const { opts } = it;\n const patterns = (0, code_1.allSchemaProperties)(schema);\n const alwaysValidPatterns = patterns.filter((p) => (0, util_1.alwaysValidSchema)(it, schema[p]));\n if (patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))) {\n return;\n }\n const checkProperties = opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties;\n const valid = gen.name(\"valid\");\n if (it.props !== true && !(it.props instanceof codegen_1.Name)) {\n it.props = (0, util_2.evaluatedPropsToName)(gen, it.props);\n }\n const { props } = it;\n validatePatternProperties();\n function validatePatternProperties() {\n for (const pat of patterns) {\n if (checkProperties)\n checkMatchingProperties(pat);\n if (it.allErrors) {\n validateProperties(pat);\n }\n else {\n gen.var(valid, true); // TODO var\n validateProperties(pat);\n gen.if(valid);\n }\n }\n }\n function checkMatchingProperties(pat) {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n (0, util_1.checkStrictMode)(it, `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`);\n }\n }\n }\n function validateProperties(pat) {\n gen.forIn(\"key\", data, (key) => {\n gen.if((0, codegen_1._) `${(0, code_1.usePattern)(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat);\n if (!alwaysValid) {\n cxt.subschema({\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: util_2.Type.Str,\n }, valid);\n }\n if (it.opts.unevaluated && props !== true) {\n gen.assign((0, codegen_1._) `${props}[${key}]`, true);\n }\n else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n }\n });\n });\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=patternProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt) {\n const { gen, schema, it } = cxt;\n if ((0, util_1.alwaysValidSchema)(it, schema)) {\n cxt.fail();\n return;\n }\n const valid = gen.name(\"valid\");\n cxt.subschema({\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n }, valid);\n cxt.failResult(valid, () => cxt.reset(), () => cxt.error());\n },\n error: { message: \"must NOT be valid\" },\n};\nexports.default = def;\n//# sourceMappingURL=not.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst def = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: code_1.validateUnion,\n error: { message: \"must match a schema in anyOf\" },\n};\nexports.default = def;\n//# sourceMappingURL=anyOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"must match exactly one schema in oneOf\",\n params: ({ params }) => (0, codegen_1._) `{passingSchemas: ${params.passing}}`,\n};\nconst def = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n if (it.opts.discriminator && parentSchema.discriminator)\n return;\n const schArr = schema;\n const valid = gen.let(\"valid\", false);\n const passing = gen.let(\"passing\", null);\n const schValid = gen.name(\"_valid\");\n cxt.setParams({ passing });\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n gen.block(validateOneOf);\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n function validateOneOf() {\n schArr.forEach((sch, i) => {\n let schCxt;\n if ((0, util_1.alwaysValidSchema)(it, sch)) {\n gen.var(schValid, true);\n }\n else {\n schCxt = cxt.subschema({\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n }\n if (i > 0) {\n gen\n .if((0, codegen_1._) `${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, (0, codegen_1._) `[${passing}, ${i}]`)\n .else();\n }\n gen.if(schValid, () => {\n gen.assign(valid, true);\n gen.assign(passing, i);\n if (schCxt)\n cxt.mergeEvaluated(schCxt, codegen_1.Name);\n });\n });\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=oneOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt) {\n const { gen, schema, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const valid = gen.name(\"valid\");\n schema.forEach((sch, i) => {\n if ((0, util_1.alwaysValidSchema)(it, sch))\n return;\n const schCxt = cxt.subschema({ keyword: \"allOf\", schemaProp: i }, valid);\n cxt.ok(valid);\n cxt.mergeEvaluated(schCxt);\n });\n },\n};\nexports.default = def;\n//# sourceMappingURL=allOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params }) => (0, codegen_1.str) `must match \"${params.ifClause}\" schema`,\n params: ({ params }) => (0, codegen_1._) `{failingKeyword: ${params.ifClause}}`,\n};\nconst def = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, parentSchema, it } = cxt;\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n (0, util_1.checkStrictMode)(it, '\"if\" without \"then\" and \"else\" is ignored');\n }\n const hasThen = hasSchema(it, \"then\");\n const hasElse = hasSchema(it, \"else\");\n if (!hasThen && !hasElse)\n return;\n const valid = gen.let(\"valid\", true);\n const schValid = gen.name(\"_valid\");\n validateIf();\n cxt.reset();\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\");\n cxt.setParams({ ifClause });\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause));\n }\n else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"));\n }\n else {\n gen.if((0, codegen_1.not)(schValid), validateClause(\"else\"));\n }\n cxt.pass(valid, () => cxt.error(true));\n function validateIf() {\n const schCxt = cxt.subschema({\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n }, schValid);\n cxt.mergeEvaluated(schCxt);\n }\n function validateClause(keyword, ifClause) {\n return () => {\n const schCxt = cxt.subschema({ keyword }, schValid);\n gen.assign(valid, schValid);\n cxt.mergeValidEvaluated(schCxt, valid);\n if (ifClause)\n gen.assign(ifClause, (0, codegen_1._) `${keyword}`);\n else\n cxt.setParams({ ifClause: keyword });\n };\n }\n },\n};\nfunction hasSchema(it, keyword) {\n const schema = it.schema[keyword];\n return schema !== undefined && !(0, util_1.alwaysValidSchema)(it, schema);\n}\nexports.default = def;\n//# sourceMappingURL=if.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({ keyword, parentSchema, it }) {\n if (parentSchema.if === undefined)\n (0, util_1.checkStrictMode)(it, `\"${keyword}\" without \"if\" is ignored`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=thenElse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst additionalItems_1 = require(\"./additionalItems\");\nconst prefixItems_1 = require(\"./prefixItems\");\nconst items_1 = require(\"./items\");\nconst items2020_1 = require(\"./items2020\");\nconst contains_1 = require(\"./contains\");\nconst dependencies_1 = require(\"./dependencies\");\nconst propertyNames_1 = require(\"./propertyNames\");\nconst additionalProperties_1 = require(\"./additionalProperties\");\nconst properties_1 = require(\"./properties\");\nconst patternProperties_1 = require(\"./patternProperties\");\nconst not_1 = require(\"./not\");\nconst anyOf_1 = require(\"./anyOf\");\nconst oneOf_1 = require(\"./oneOf\");\nconst allOf_1 = require(\"./allOf\");\nconst if_1 = require(\"./if\");\nconst thenElse_1 = require(\"./thenElse\");\nfunction getApplicator(draft2020 = false) {\n const applicator = [\n // any\n not_1.default,\n anyOf_1.default,\n oneOf_1.default,\n allOf_1.default,\n if_1.default,\n thenElse_1.default,\n // object\n propertyNames_1.default,\n additionalProperties_1.default,\n dependencies_1.default,\n properties_1.default,\n patternProperties_1.default,\n ];\n // array\n if (draft2020)\n applicator.push(prefixItems_1.default, items2020_1.default);\n else\n applicator.push(additionalItems_1.default, items_1.default);\n applicator.push(contains_1.default);\n return applicator;\n}\nexports.default = getApplicator;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must match format \"${schemaCode}\"`,\n params: ({ schemaCode }) => (0, codegen_1._) `{format: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt, ruleType) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n const { opts, errSchemaPath, schemaEnv, self } = it;\n if (!opts.validateFormats)\n return;\n if ($data)\n validate$DataFormat();\n else\n validateFormat();\n function validate$DataFormat() {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n });\n const fDef = gen.const(\"fDef\", (0, codegen_1._) `${fmts}[${schemaCode}]`);\n const fType = gen.let(\"fType\");\n const format = gen.let(\"format\");\n // TODO simplify\n gen.if((0, codegen_1._) `typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1._) `${fDef}.type || \"string\"`).assign(format, (0, codegen_1._) `${fDef}.validate`), () => gen.assign(fType, (0, codegen_1._) `\"string\"`).assign(format, fDef));\n cxt.fail$data((0, codegen_1.or)(unknownFmt(), invalidFmt()));\n function unknownFmt() {\n if (opts.strictSchema === false)\n return codegen_1.nil;\n return (0, codegen_1._) `${schemaCode} && !${format}`;\n }\n function invalidFmt() {\n const callFormat = schemaEnv.$async\n ? (0, codegen_1._) `(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : (0, codegen_1._) `${format}(${data})`;\n const validData = (0, codegen_1._) `(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`;\n return (0, codegen_1._) `${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`;\n }\n }\n function validateFormat() {\n const formatDef = self.formats[schema];\n if (!formatDef) {\n unknownFormat();\n return;\n }\n if (formatDef === true)\n return;\n const [fmtType, format, fmtRef] = getFormat(formatDef);\n if (fmtType === ruleType)\n cxt.pass(validCondition());\n function unknownFormat() {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg());\n return;\n }\n throw new Error(unknownMsg());\n function unknownMsg() {\n return `unknown format \"${schema}\" ignored in schema at path \"${errSchemaPath}\"`;\n }\n }\n function getFormat(fmtDef) {\n const code = fmtDef instanceof RegExp\n ? (0, codegen_1.regexpCode)(fmtDef)\n : opts.code.formats\n ? (0, codegen_1._) `${opts.code.formats}${(0, codegen_1.getProperty)(schema)}`\n : undefined;\n const fmt = gen.scopeValue(\"formats\", { key: schema, ref: fmtDef, code });\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, (0, codegen_1._) `${fmt}.validate`];\n }\n return [\"string\", fmtDef, fmt];\n }\n function validCondition() {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async)\n throw new Error(\"async format in sync schema\");\n return (0, codegen_1._) `await ${fmtRef}(${data})`;\n }\n return typeof format == \"function\" ? (0, codegen_1._) `${fmtRef}(${data})` : (0, codegen_1._) `${fmtRef}.test(${data})`;\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=format.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst format_1 = require(\"./format\");\nconst format = [format_1.default];\nexports.default = format;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.contentVocabulary = exports.metadataVocabulary = void 0;\nexports.metadataVocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n];\nexports.contentVocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n];\n//# sourceMappingURL=metadata.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core_1 = require(\"./core\");\nconst validation_1 = require(\"./validation\");\nconst applicator_1 = require(\"./applicator\");\nconst format_1 = require(\"./format\");\nconst metadata_1 = require(\"./metadata\");\nconst draft7Vocabularies = [\n core_1.default,\n validation_1.default,\n (0, applicator_1.default)(),\n format_1.default,\n metadata_1.metadataVocabulary,\n metadata_1.contentVocabulary,\n];\nexports.default = draft7Vocabularies;\n//# sourceMappingURL=draft7.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiscrError = void 0;\nvar DiscrError;\n(function (DiscrError) {\n DiscrError[\"Tag\"] = \"tag\";\n DiscrError[\"Mapping\"] = \"mapping\";\n})(DiscrError || (exports.DiscrError = DiscrError = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst types_1 = require(\"../discriminator/types\");\nconst compile_1 = require(\"../../compile\");\nconst ref_error_1 = require(\"../../compile/ref_error\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({ params: { discrError, tag, tagName } }) => (0, codegen_1._) `{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n};\nconst def = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt) {\n const { gen, data, schema, parentSchema, it } = cxt;\n const { oneOf } = parentSchema;\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\");\n }\n const tagName = schema.propertyName;\n if (typeof tagName != \"string\")\n throw new Error(\"discriminator: requires propertyName\");\n if (schema.mapping)\n throw new Error(\"discriminator: mapping is not supported\");\n if (!oneOf)\n throw new Error(\"discriminator: requires oneOf keyword\");\n const valid = gen.let(\"valid\", false);\n const tag = gen.const(\"tag\", (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(tagName)}`);\n gen.if((0, codegen_1._) `typeof ${tag} == \"string\"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName }));\n cxt.ok(valid);\n function validateMapping() {\n const mapping = getMapping();\n gen.if(false);\n for (const tagValue in mapping) {\n gen.elseIf((0, codegen_1._) `${tag} === ${tagValue}`);\n gen.assign(valid, applyTagSchema(mapping[tagValue]));\n }\n gen.else();\n cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName });\n gen.endIf();\n }\n function applyTagSchema(schemaProp) {\n const _valid = gen.name(\"valid\");\n const schCxt = cxt.subschema({ keyword: \"oneOf\", schemaProp }, _valid);\n cxt.mergeEvaluated(schCxt, codegen_1.Name);\n return _valid;\n }\n function getMapping() {\n var _a;\n const oneOfMapping = {};\n const topRequired = hasRequired(parentSchema);\n let tagRequired = true;\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i];\n if ((sch === null || sch === void 0 ? void 0 : sch.$ref) && !(0, util_1.schemaHasRulesButRef)(sch, it.self.RULES)) {\n const ref = sch.$ref;\n sch = compile_1.resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref);\n if (sch instanceof compile_1.SchemaEnv)\n sch = sch.schema;\n if (sch === undefined)\n throw new ref_error_1.default(it.opts.uriResolver, it.baseId, ref);\n }\n const propSch = (_a = sch === null || sch === void 0 ? void 0 : sch.properties) === null || _a === void 0 ? void 0 : _a[tagName];\n if (typeof propSch != \"object\") {\n throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`);\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch));\n addMappings(propSch, i);\n }\n if (!tagRequired)\n throw new Error(`discriminator: \"${tagName}\" must be required`);\n return oneOfMapping;\n function hasRequired({ required }) {\n return Array.isArray(required) && required.includes(tagName);\n }\n function addMappings(sch, i) {\n if (sch.const) {\n addMapping(sch.const, i);\n }\n else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i);\n }\n }\n else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`);\n }\n }\n function addMapping(tagValue, i) {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`);\n }\n oneOfMapping[tagValue] = i;\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv = void 0;\nconst core_1 = require(\"./core\");\nconst draft7_1 = require(\"./vocabularies/draft7\");\nconst discriminator_1 = require(\"./vocabularies/discriminator\");\nconst draft7MetaSchema = require(\"./refs/json-schema-draft-07.json\");\nconst META_SUPPORT_DATA = [\"/properties\"];\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\";\nclass Ajv extends core_1.default {\n _addVocabularies() {\n super._addVocabularies();\n draft7_1.default.forEach((v) => this.addVocabulary(v));\n if (this.opts.discriminator)\n this.addKeyword(discriminator_1.default);\n }\n _addDefaultMetaSchema() {\n super._addDefaultMetaSchema();\n if (!this.opts.meta)\n return;\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema;\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false);\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID;\n }\n defaultMeta() {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined));\n }\n}\nexports.Ajv = Ajv;\nmodule.exports = exports = Ajv;\nmodule.exports.Ajv = Ajv;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Ajv;\nvar validate_1 = require(\"./compile/validate\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });\nvar codegen_1 = require(\"./compile/codegen\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return codegen_1._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return codegen_1.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return codegen_1.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return codegen_1.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return codegen_1.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return codegen_1.CodeGen; } });\nvar validation_error_1 = require(\"./runtime/validation_error\");\nObject.defineProperty(exports, \"ValidationError\", { enumerable: true, get: function () { return validation_error_1.default; } });\nvar ref_error_1 = require(\"./compile/ref_error\");\nObject.defineProperty(exports, \"MissingRefError\", { enumerable: true, get: function () { return ref_error_1.default; } });\n//# sourceMappingURL=ajv.js.map","import Ajv from \"ajv\";\nconst ajv = new Ajv({ allowUnionTypes: true });\nexport const generateListValidator = (schema) => {\n const validate = ajv.compile(schema);\n return {\n validate,\n };\n};\nexport const generateDictValidator = (schema) => {\n const validateRoot = ajv.compile(schema);\n const compileKeySchema = (s) => {\n // Apparently necessary to avoid AJV error if `nullable: true` and value is `undefined`\n if (s === true) {\n return () => true;\n }\n return ajv.compile(s);\n };\n const validators = Object.fromEntries(Object.entries(schema.properties || {}).map(([c, p]) => [c, compileKeySchema(p)]));\n const validateAdditionalProperties = schema.additionalProperties\n ? compileKeySchema(schema.additionalProperties)\n : () => false;\n const validateKey = (v, key) => {\n const vld = getKeyValidator(key);\n return vld(v);\n };\n const getKeyValidator = (key) => {\n return validators[key] || validateAdditionalProperties;\n };\n const supportedKey = (key) => {\n return !!validators[key] || !!schema.additionalProperties;\n };\n return {\n validateRoot,\n validateKey,\n getKeyValidator,\n supportedKey,\n };\n};\n//# sourceMappingURL=utils.js.map","import { generateListValidator } from \"./utils.js\";\nexport const typedFeed = ({ db, schema, }) => {\n const { validate } = generateListValidator(schema);\n return new Proxy(db, {\n get(target, prop) {\n if (prop === \"all\") {\n return async () => {\n const all = await target[prop]();\n const valid = all.filter((x) => validate(x.value));\n return valid;\n };\n }\n else if (prop === \"add\") {\n return async (data) => {\n const valid = validate(data);\n if (valid) {\n return await target.add(data);\n }\n throw new Error(data.toString() + JSON.stringify(validate.errors, undefined, 2));\n };\n }\n else {\n return target[prop];\n }\n },\n });\n};\n//# sourceMappingURL=feed.js.map","import { generateDictValidator } from \"./utils.js\";\nexport const typedKeyValue = ({ db, schema, }) => {\n const { validateRoot, validateKey, getKeyValidator, supportedKey } = generateDictValidator(schema);\n return new Proxy(db, {\n get(target, prop) {\n if (prop === \"get\") {\n return async (key) => {\n if (!supportedKey(key))\n throw new Error(`Unsupported key ${key}.`);\n const val = await target.get(key);\n if (val === undefined)\n return val;\n const valide = validateKey(val, key);\n return valide ? val : undefined;\n };\n }\n else if (prop === \"put\" || prop === \"set\") {\n return async (key, value) => {\n if (!supportedKey(key))\n throw new Error(`Unsupported key ${key}.`);\n const valid = validateKey(value, key);\n if (valid)\n return await target.put(key, value);\n else\n throw new Error(JSON.stringify(getKeyValidator(key).errors, undefined, 2));\n };\n }\n else if (prop === \"all\") {\n return async () => {\n const all = await target.all();\n return all.filter((x) => validateKey(x.value, x.key));\n };\n }\n else if (prop === \"allAsJSON\") {\n return async () => {\n const all = await target.all();\n const data = Object.fromEntries(all.map((x) => [x.key, x.value]));\n const valid = validateRoot(data);\n if (valid) {\n return data;\n }\n else {\n throw new Error(JSON.stringify(validateRoot.errors, undefined, 2));\n }\n };\n }\n else {\n return target[prop];\n }\n },\n });\n};\n//# sourceMappingURL=keyvalue.js.map","import { generateDictValidator } from \"./utils.js\";\nexport const typedOrderedKeyValue = ({ db, schema, }) => {\n const { validateKey, getKeyValidator, supportedKey } = generateDictValidator(schema);\n return new Proxy(db, {\n get(target, prop) {\n if (prop === \"get\") {\n return async (key) => {\n if (!supportedKey(key))\n throw new Error(`Unsupported key ${key}.`);\n const val = await target.get(key);\n if (val === undefined)\n return val;\n const { value, position } = val;\n const valid = validateKey(value, key);\n return valid ? { value: value, position } : undefined;\n };\n }\n else if (prop === \"move\") {\n return async (key, position) => {\n if (!supportedKey(key))\n throw new Error(`Unsupported key ${key}.`);\n return await target.move(key, position);\n };\n }\n else if (prop === \"put\" || prop === \"set\") {\n return async (key, value, position) => {\n if (!supportedKey(key))\n throw new Error(`Unsupported key ${key}.`);\n const valid = validateKey(value, key);\n if (valid)\n return await target.put(key, value, position);\n else\n throw new Error(JSON.stringify(getKeyValidator(key).errors, undefined, 2));\n };\n }\n else if (prop === \"all\") {\n return async () => {\n const all = await target.all();\n return all.filter((x) => validateKey(x.value, x.key));\n };\n }\n else {\n return target[prop];\n }\n },\n });\n};\n//# sourceMappingURL=ordered-keyvalue.js.map","import { generateListValidator } from \"./utils.js\";\nexport const typedSet = ({ db, schema, }) => {\n const { validate } = generateListValidator(schema);\n return new Proxy(db, {\n get(target, prop) {\n if (prop === \"all\") {\n return async () => {\n const tous = await target[prop]();\n const valides = tous.filter((x) => validate(x.value));\n return valides;\n };\n }\n else if (prop === \"add\") {\n return async (data) => {\n const valid = validate(data);\n if (valid) {\n return await target.add(data);\n }\n throw new Error(data.toString() + JSON.stringify(validate.errors, undefined, 2));\n };\n }\n else {\n return target[prop];\n }\n },\n });\n};\n//# sourceMappingURL=set.js.map","class e{constructor(e){this.queue=void 0,this.maxConcurrent=void 0,this.count=void 0,this.queue=[],this.maxConcurrent=e,this.count=0}get canAcquire(){return this.countthis.queue.push(e))}release(){const e=this.queue.shift();e?setTimeout(e,0):this.count--}}const t=\"_default\";class s{constructor(e=1){this.semaphoreInstances=void 0,this.maxConcurrent=void 0,this.semaphoreInstances={},this.maxConcurrent=e}hasSemaphoreInstance(e=t){return Boolean(this.semaphoreInstances[e])}getSemaphoreInstance(s=t){return this.hasSemaphoreInstance(s)||(this.semaphoreInstances[s]=new e(this.maxConcurrent)),this.semaphoreInstances[s]}tidy(e=t){this.hasSemaphoreInstance(e)&&0===this.getSemaphoreInstance(e).count&&delete this.semaphoreInstances[e]}canAcquire(e=t){return this.getSemaphoreInstance(e).canAcquire}acquire(e=t){return this.getSemaphoreInstance(e).acquire()}release(e=t){this.getSemaphoreInstance(e).release(),this.tidy(e)}count(e=t){return this.hasSemaphoreInstance(e)?this.getSemaphoreInstance(e).count:0}hasTasks(e=t){return this.count(e)>0}async request(e,s=t){try{return await this.acquire(s),await e()}finally{this.release(s)}}async requestIfAvailable(e,s=t){return this.canAcquire(s)?this.request(e,s):null}}export{s as default};\n//# sourceMappingURL=promise-semaphore.modern.js.map\n","import { v4 as uuidv4 } from \"uuid\";\nimport { createOrbitDB, } from \"@orbitdb/core\";\nimport { registerFeed } from \"@orbitdb/feed-db\";\nimport { registerSet } from \"@orbitdb/set-db\";\nimport { registerOrderedKeyValue, } from \"@orbitdb/ordered-keyvalue-db\";\nimport { enregistrerContrôleurs } from \"./acc\\u00E8s/index.js\";\nimport { typedFeed, typedKeyValue, typedOrderedKeyValue, typedSet, } from \"@constl/bohr-db\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nexport const préparerOrbite = () => {\n registerFeed();\n registerSet();\n registerOrderedKeyValue();\n enregistrerContrôleurs();\n};\nexport async function initOrbite({ sfip, dossierOrbite, }) {\n préparerOrbite();\n const orbite = await createOrbitDB({\n ipfs: sfip,\n id: \"constellation\",\n directory: dossierOrbite,\n });\n return orbite;\n}\nconst typerBd = ({ bd, schéma, }) => {\n switch (bd.type) {\n case \"feed\":\n return typedFeed({\n db: bd,\n schema: schéma,\n });\n case \"set\":\n return typedSet({\n db: bd,\n schema: schéma,\n });\n case \"keyvalue\":\n return typedKeyValue({\n db: bd,\n // @ts-expect-error Je ne sais pas pourquoi\n schema: schéma,\n });\n case \"ordered-keyvalue\":\n return typedOrderedKeyValue({\n db: bd,\n // @ts-expect-error Je ne sais pas pourquoi\n schema: schéma,\n });\n default:\n throw new Error(\"Type de bd non reconnu.\");\n }\n};\nexport class GestionnaireOrbite {\n orbite;\n _bdsOrbite;\n verrouOuvertureBd;\n _oublierNettoyageBdsOuvertes;\n constructor(orbite) {\n this.orbite = orbite;\n this._bdsOrbite = {};\n this.verrouOuvertureBd = new Semaphore();\n this._oublierNettoyageBdsOuvertes = this.lancerNettoyageBdsOuvertes();\n }\n get identity() {\n return this.orbite.identity;\n }\n async ouvrirBd({ id, type, options, }) {\n // Nous avons besoin d'un verrou afin d'éviter la concurrence\n await this.verrouOuvertureBd.acquire(id);\n const existante = this._bdsOrbite[id];\n const idRequête = uuidv4();\n const fOublier = async () => {\n // Si la BD a été effacée entre-temps par `client.effacerBd`,\n // elle ne sera plus disponible ici\n if (!this._bdsOrbite[id])\n return;\n this._bdsOrbite[id].idsRequêtes.delete(idRequête);\n };\n // Fonction utilitaire pour vérifier le type de la bd\n const vérifierTypeBd = (bd) => {\n const { type: typeBd } = bd;\n if (type === undefined)\n return true;\n return typeBd === type;\n };\n if (existante) {\n this._bdsOrbite[id].idsRequêtes.add(idRequête);\n this.verrouOuvertureBd.release(id);\n if (!vérifierTypeBd(existante.bd))\n throw new Error(`La bd est de type ${existante.bd.type}, et non ${type}.`);\n return {\n bd: existante.bd,\n fOublier,\n };\n }\n try {\n const bd = (await this.orbite.open(id, { type, ...options }));\n this._bdsOrbite[id] = { bd, idsRequêtes: new Set([idRequête]) };\n // Maintenant que la BD a été créée, on peut relâcher le verrou\n this.verrouOuvertureBd.release(id);\n return {\n bd,\n fOublier,\n };\n }\n catch (e) {\n console.error(e.toString());\n throw e;\n }\n }\n async ouvrirBdTypée({ id, type, schéma, options, }) {\n const { bd, fOublier } = await this.ouvrirBd({\n id,\n type,\n options,\n });\n return {\n bd: typerBd({ bd, schéma }),\n fOublier,\n };\n }\n async créerBdIndépendante({ type, options, nom, }) {\n const bd = (await this.orbite.open(nom || uuidv4(), {\n type,\n ...options,\n }));\n const { address } = bd;\n this._bdsOrbite[address] = { bd, idsRequêtes: new Set() };\n return address;\n }\n async effacerBd({ id }) {\n const { bd } = await this.ouvrirBd({ id });\n await bd.drop();\n delete this._bdsOrbite[id];\n }\n lancerNettoyageBdsOuvertes() {\n const fNettoyer = async () => {\n await Promise.all(Object.keys(this._bdsOrbite).map(async (id) => {\n const { bd, idsRequêtes } = this._bdsOrbite[id];\n if (!idsRequêtes.size) {\n delete this._bdsOrbite[id];\n await bd.close();\n }\n }));\n };\n const i = setInterval(fNettoyer, 1000 * 60 * 5);\n return async () => clearInterval(i);\n }\n async appliquerFonctionBdOrbite({ idBd, fonction, args, }) {\n const { bd, fOublier } = await this.ouvrirBd({ id: idBd });\n // @ts-expect-error L'inférence de types marche mal ici\n const résultat = await bd[fonction](...args);\n await fOublier();\n return résultat;\n }\n async fermer({ arrêterOrbite }) {\n if (this._oublierNettoyageBdsOuvertes)\n this._oublierNettoyageBdsOuvertes();\n if (arrêterOrbite) {\n await this.orbite.stop();\n }\n }\n}\nexport class GestionnaireOrbiteGénéral {\n gestionnaires;\n constructor() {\n this.gestionnaires = {};\n }\n obtGestionnaireOrbite({ orbite }) {\n if (!this.gestionnaires[orbite.identity.id]) {\n this.gestionnaires[orbite.identity.id] = new GestionnaireOrbite(orbite);\n }\n return this.gestionnaires[orbite.identity.id];\n }\n async fermer({ orbite, arrêterOrbite, }) {\n const gestionnaireOrbite = this.obtGestionnaireOrbite({ orbite });\n await gestionnaireOrbite.fermer({ arrêterOrbite });\n delete this.gestionnaires[orbite.identity.id];\n }\n}\nexport const gestionnaireOrbiteGénéral = new GestionnaireOrbiteGénéral();\n//# sourceMappingURL=orbite.js.map","import { isValidAddress } from \"@orbitdb/core\";\nimport { EventEmitter, once } from \"events\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { MODÉRATEUR, MEMBRE } from \"./consts.js\";\nimport { gestionnaireOrbiteGénéral } from \"../orbite.js\";\nexport const suivreBdAccès = async (bd, f) => {\n const fFinale = async () => {\n const éléments = await bd.all();\n await f(éléments.map((é) => é.value));\n };\n bd.events.setMaxListeners(100);\n bd.events.on(\"update\", fFinale);\n await fFinale();\n const oublier = async () => {\n bd.events.off(\"update\", fFinale);\n };\n return oublier;\n};\nclass AccèsUtilisateur extends EventEmitter {\n orbite;\n idBd;\n idBdAccès;\n bdAccès;\n fOublierBd;\n oublierSuivi;\n autorisés;\n accès;\n idRequête;\n prêt;\n constructor(orbite, idBd) {\n super();\n this.orbite = gestionnaireOrbiteGénéral.obtGestionnaireOrbite({ orbite });\n this.idBd = idBd;\n this.autorisés = [];\n this.idRequête = uuidv4();\n this.prêt = false;\n }\n async initialiser() {\n const { bd, fOublier } = await this.orbite.ouvrirBd({ id: this.idBd });\n this.fOublierBd = fOublier;\n this.accès = bd.access;\n this.bdAccès = this.accès.bd;\n this.idBdAccès = this.bdAccès?.address;\n await this._miseÀJour([]);\n this.oublierSuivi = await suivreBdAccès(this.bdAccès, async (éléments) => {\n await this._miseÀJour(éléments);\n });\n this.prêt = true;\n }\n async _miseÀJour(éléments) {\n const autorisés = [];\n éléments = [\n {\n id: this.accès.write,\n rôle: MODÉRATEUR,\n },\n ...éléments,\n ];\n éléments.forEach((é) => {\n autorisés.push(é.id);\n });\n this.autorisés = autorisés;\n this.emit(\"misÀJour\");\n }\n async fermer() {\n if (this.oublierSuivi)\n await this.oublierSuivi();\n await this.fOublierBd?.();\n }\n}\nexport class GestionnaireAccès extends EventEmitter {\n _rôles;\n _rôlesIdOrbite;\n _rôlesUtilisateurs;\n _miseÀJourEnCours;\n orbite;\n constructor(orbite) {\n super();\n this._rôles = { [MODÉRATEUR]: [], [MEMBRE]: [] };\n this._rôlesIdOrbite = { [MODÉRATEUR]: [], [MEMBRE]: [] };\n this._rôlesUtilisateurs = { [MODÉRATEUR]: {}, [MEMBRE]: {} };\n this._miseÀJourEnCours = false;\n this.orbite = orbite;\n }\n async estUnMembre(id) {\n if (this._miseÀJourEnCours)\n await once(this, \"misÀJour\");\n return this._rôles[MEMBRE].includes(id);\n }\n async estUnModérateur(id) {\n if (this._miseÀJourEnCours)\n await once(this, \"misÀJour\");\n return this._rôles[MODÉRATEUR].includes(id);\n }\n async estAutorisé(id) {\n return (await this.estUnModérateur(id)) || (await this.estUnMembre(id));\n }\n async ajouterÉléments(éléments) {\n this._miseÀJourEnCours = true;\n await Promise.all(éléments.map(async (élément) => {\n const { rôle, id } = élément;\n if (isValidAddress(id)) {\n if (!this._rôlesUtilisateurs[rôle][id]) {\n const objAccèsUtilisateur = new AccèsUtilisateur(this.orbite, id);\n objAccèsUtilisateur.on(\"misÀJour\", () => this._mettreRôlesÀJour());\n this._rôlesUtilisateurs[rôle][id] = objAccèsUtilisateur;\n await objAccèsUtilisateur.initialiser();\n }\n }\n else {\n if (!this._rôlesIdOrbite[rôle].includes(id)) {\n this._rôlesIdOrbite[rôle].push(id);\n this._mettreRôlesÀJour();\n }\n }\n }));\n this._miseÀJourEnCours = false;\n this._mettreRôlesÀJour();\n this.emit(\"misÀJour\");\n }\n _mettreRôlesÀJour() {\n const _rôles = { MODÉRATEUR: [], MEMBRE: [] };\n for (const [rôle, ids] of Object.entries(this._rôlesIdOrbite)) {\n const listeRôle = _rôles[rôle];\n ids.forEach((id) => {\n if (!listeRôle.includes(id))\n listeRôle.push(id);\n });\n }\n for (const [rôle, utl] of Object.entries(this._rôlesUtilisateurs)) {\n const listeRôle = _rôles[rôle];\n Object.values(utl).forEach((u) => {\n u.autorisés.forEach((id) => {\n if (!listeRôle.includes(id))\n listeRôle.push(id);\n });\n });\n }\n this._rôles = _rôles;\n }\n async fermer() {\n const utilisateurs = Object.values(this._rôlesUtilisateurs)\n .map((l) => Object.values(l))\n .flat();\n await Promise.all(utilisateurs.map((u) => u.fermer()));\n }\n}\n//# sourceMappingURL=gestionnaireUtilisateurs.js.map","import { nomType } from \"./cntrlConstellation.js\";\nexport const pathJoin = (...paths) => paths.join(\"/\").replace(/((?<=\\/)\\/+)|(^\\.\\/)|((?<=\\/)\\.\\/)/g, \"\") || \".\";\nexport const estUnContrôleurConstellation = (x) => {\n return x.type === nomType;\n};\n//# sourceMappingURL=utils.js.map","import { IPFSBlockStorage, ComposedStorage, LRUStorage, Entry, } from \"@orbitdb/core\";\nimport * as Block from \"multiformats/block\";\nimport * as dagCbor from \"@ipld/dag-cbor\";\nimport { sha256 } from \"multiformats/hashes/sha2\";\nimport { base58btc } from \"multiformats/bases/base58\";\nimport { GestionnaireAccès } from \"./gestionnaireUtilisateurs.js\";\nimport { MODÉRATEUR, rôles } from \"./consts.js\";\nimport { pathJoin } from \"./utils.js\";\nconst type = \"contrôleur-accès-constellation\";\nconst codec = dagCbor;\nconst hasher = sha256;\nconst hashStringEncoding = base58btc;\nconst PremierModérateur = async ({ storage, type, params, }) => {\n const manifest = {\n type,\n ...params,\n };\n const { cid, bytes } = await Block.encode({ value: manifest, codec, hasher });\n const hash = cid.toString(hashStringEncoding);\n await storage.put(hash, bytes);\n return hash;\n};\nconst ContrôleurAccès = ({ write, storage } = {}) => async ({ orbitdb, identities, address, }) => {\n storage =\n storage ||\n (await ComposedStorage(await LRUStorage({ size: 1000 }), await IPFSBlockStorage({ ipfs: orbitdb.ipfs, pin: true })));\n write = write || orbitdb.identity.id;\n const gestAccès = new GestionnaireAccès(orbitdb);\n if (address) {\n const manifestBytes = await storage.get(address.replaceAll(\"/contrôleur-accès-constellation/\", \"\"));\n const { value } = await Block.decode({\n bytes: manifestBytes,\n codec,\n hasher,\n });\n ({ write } = value);\n }\n else {\n address = await PremierModérateur({\n storage,\n type,\n params: { write: write },\n });\n address = pathJoin(\"/\", type, address);\n }\n // Ajouter le premier modérateur\n await gestAccès.ajouterÉléments([{ id: write, rôle: MODÉRATEUR }]);\n const canAppend = async (entry) => {\n // Pour l'instant, on ne peut qu'ajouter des membres\n if (entry.payload.op !== \"ADD\" || !entry.payload.value)\n return false;\n const { rôle, id: idAjout } = entry.payload.value;\n const rôleValide = rôles.includes(rôle);\n const writerIdentity = await identities.getIdentity(entry.identity);\n if (!writerIdentity) {\n return false;\n }\n const { id } = writerIdentity;\n if (rôleValide &&\n (await seraÉventuellementUnModérateur(id, entry)) &&\n identities.verifyIdentity(writerIdentity)) {\n if (rôle === MODÉRATEUR) {\n await gestAccès.ajouterÉléments([{ id: idAjout, rôle: MODÉRATEUR }]);\n }\n return true;\n }\n return false;\n };\n const seraÉventuellementUnModérateur = async (id, entry) => {\n if (await gestAccès.estUnModérateur(id))\n return true;\n const prochains = entry.next;\n for (const prochain of prochains) {\n const octets = await storage?.get(prochain);\n const prochaineEntrée = await Entry.decode(octets);\n const prochaineValide = await canAppend(prochaineEntrée);\n if (prochaineValide) {\n if (await gestAccès.estUnModérateur(id))\n return true;\n }\n }\n return false;\n };\n return {\n type,\n address,\n write,\n canAppend,\n };\n};\nContrôleurAccès.type = type;\nexport { ContrôleurAccès };\n//# sourceMappingURL=cntrlMod.js.map","import { IPFSBlockStorage, LRUStorage, ComposedStorage, } from \"@orbitdb/core\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport * as Block from \"multiformats/block\";\nimport * as dagCbor from \"@ipld/dag-cbor\";\nimport { sha256 } from \"multiformats/hashes/sha2\";\nimport { base58btc } from \"multiformats/bases/base58\";\nimport { GestionnaireAccès, suivreBdAccès, } from \"./gestionnaireUtilisateurs.js\";\nimport { MODÉRATEUR, MEMBRE, rôles } from \"./consts.js\";\nimport { gestionnaireOrbiteGénéral } from \"../orbite.js\";\nimport { EventEmitter } from \"events\";\nimport { ContrôleurAccès } from \"./cntrlMod.js\";\nimport { pathJoin } from \"./utils.js\";\n/* Fortement inspirée du contrôleur Orbit-DB de 3Box\nMIT License\n\nCopyright (c) 2019 3Box Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\nexport const nomType = \"contrôleur-constellation\";\nconst codec = dagCbor;\nconst hasher = sha256;\nconst hashStringEncoding = base58btc;\nconst schémaBdAccès = {\n type: \"object\",\n properties: {\n rôle: {\n type: \"string\",\n },\n id: {\n type: \"string\",\n },\n },\n required: [\"rôle\", \"id\"],\n};\nconst ManifestContrôleurConstellation = async ({ storage, type, params, }) => {\n const manifest = {\n type,\n ...params,\n };\n const { cid, bytes } = await Block.encode({ value: manifest, codec, hasher });\n const hash = cid.toString(hashStringEncoding);\n await storage.put(hash, bytes);\n return hash;\n};\nconst ContrôleurConstellation = ({ write, nom, storage, } = {}) => async ({ orbitdb, identities, address, }) => {\n write = write || orbitdb.identity.id;\n nom = nom || uuidv4();\n storage =\n storage ||\n (await ComposedStorage(await LRUStorage({ size: 1000 }), await IPFSBlockStorage({ ipfs: orbitdb.ipfs, pin: true })));\n // À faire : vérifier si toujours nécessaire avec bd-orbite 1,0\n const gestionnaireOrbite = gestionnaireOrbiteGénéral.obtGestionnaireOrbite({\n orbite: orbitdb,\n });\n let adresseBdAccès;\n let bd;\n let fOublierBd;\n if (address) {\n const manifestBytes = await storage.get(address.replaceAll(`/${nomType}/`, \"\"));\n const { value } = await Block.decode({\n bytes: manifestBytes,\n codec,\n hasher,\n });\n ({ write, nom, adresseBdAccès } = value);\n ({ bd, fOublier: fOublierBd } = await gestionnaireOrbite.ouvrirBdTypée({\n id: adresseBdAccès,\n type: \"set\",\n schéma: schémaBdAccès,\n options: {\n syncAutomatically: true,\n },\n }));\n }\n else {\n ({ bd, fOublier: fOublierBd } = await gestionnaireOrbite.ouvrirBdTypée({\n id: nom, // Je pense qu'on peut faire ça, tant que le nom reste unique...\n type: \"set\",\n schéma: schémaBdAccès,\n options: {\n AccessController: ContrôleurAccès({ write, storage }),\n syncAutomatically: true,\n },\n }));\n adresseBdAccès = bd.address;\n address = await ManifestContrôleurConstellation({\n storage,\n type: nomType,\n params: { write: write, nom, adresseBdAccès },\n });\n address = pathJoin(\"/\", nomType, address);\n }\n const événements = new EventEmitter();\n const gestRôles = new GestionnaireAccès(orbitdb);\n gestRôles.on(\"misÀJour\", () => événements.emit(\"misÀJour\"));\n const miseÀJourBdAccès = async (éléments) => {\n éléments = [{ rôle: MODÉRATEUR, id: write }, ...éléments];\n await gestRôles.ajouterÉléments(éléments);\n };\n const fOublierSuiviBdAccès = await suivreBdAccès(bd, miseÀJourBdAccès);\n const estAutorisé = async (id) => {\n return await gestRôles.estAutorisé(id);\n };\n const estUnModérateur = async (id) => {\n return await gestRôles.estUnModérateur(id);\n };\n const estUnMembre = async (id) => {\n return await gestRôles.estUnMembre(id);\n };\n const canAppend = async (entry) => {\n const writerIdentity = await identities.getIdentity(entry.identity);\n if (!writerIdentity) {\n return false;\n }\n const { id } = writerIdentity;\n // Pour implémenter la révocation des permissions, garder compte ici\n // des entrées approuvées par utilisatrice\n return (identities.verifyIdentity(writerIdentity) && (await estAutorisé(id)));\n };\n const grant = async (rôle, id) => {\n if (!rôles.includes(rôle)) {\n throw new Error(`Erreur: Le rôle ${rôle} n'existe pas.`);\n }\n if (gestRôles._rôles[rôle].includes(id)) {\n return;\n }\n try {\n const entry = { rôle, id };\n await bd.add(entry);\n }\n catch (_e) {\n const e = _e;\n if (e.toString().includes(\"not append entry\")) {\n throw new Error(`Erreur : Le rôle ${rôle} ne peut pas être octroyé à ${id}.`);\n }\n throw e;\n }\n };\n const revoke = async (_rôle, _id) => {\n throw new Error(\"C'est très difficile à implémenter...avez-vous des idées ?\");\n };\n const close = async () => {\n await fOublierSuiviBdAccès();\n await fOublierBd();\n await gestRôles.fermer();\n };\n const drop = async () => {\n // Désactivé pour l'instant. Si nous avons plus qu'une bd qui partage le même contrôleur,\n // la destruction de la bd du contrôleur pourrait causer des ennuis.\n // await bd.drop();\n };\n const suivreUtilisateursAutorisés = async (f) => {\n const fFinale = async () => {\n const mods = Object.keys(gestRôles._rôlesUtilisateurs[MODÉRATEUR]).map((m) => {\n return {\n idCompte: m,\n rôle: MODÉRATEUR,\n };\n });\n const idsMods = mods.map((m) => m.idCompte);\n const membres = Object.keys(gestRôles._rôlesUtilisateurs[MEMBRE])\n .map((m) => {\n return {\n idCompte: m,\n rôle: MEMBRE,\n };\n })\n .filter((m) => !idsMods.includes(m.idCompte));\n const utilisateurs = [...mods, ...membres];\n await f(utilisateurs);\n };\n gestRôles.on(\"misÀJour\", fFinale);\n await fFinale();\n const fOublier = async () => {\n gestRôles.off(\"misÀJour\", fFinale);\n };\n return fOublier;\n };\n const suivreIdsOrbiteAutoriséesÉcriture = async (f) => {\n const fFinale = async () => {\n await f([...gestRôles._rôles.MEMBRE, ...gestRôles._rôles.MODÉRATEUR]);\n };\n gestRôles.on(\"misÀJour\", fFinale);\n await fFinale();\n const fOublier = async () => {\n gestRôles.off(\"misÀJour\", fFinale);\n };\n return fOublier;\n };\n return {\n type: nomType,\n address,\n adresseBdAccès,\n write,\n grant,\n revoke,\n canAppend,\n close,\n drop,\n suivreUtilisateursAutorisés,\n suivreIdsOrbiteAutoriséesÉcriture,\n gestRôles,\n estAutorisé,\n estUnMembre,\n estUnModérateur,\n bd,\n };\n};\nContrôleurConstellation.type = nomType;\nexport { ContrôleurConstellation };\n//# sourceMappingURL=cntrlConstellation.js.map","import { useAccessController } from \"@orbitdb/core\";\nimport { ContrôleurConstellation } from \"./cntrlConstellation.js\";\nimport { ContrôleurAccès } from \"./cntrlMod.js\";\nimport { registerSet } from \"@orbitdb/set-db\";\nexport const enregistrerContrôleurs = () => {\n registerSet();\n useAccessController(ContrôleurConstellation);\n useAccessController(ContrôleurAccès);\n};\nexport * as cntrlConstellation from \"./cntrlConstellation.js\";\nexport * as cntrlMod from \"./cntrlMod.js\";\nexport * from \"./consts.js\";\n//# sourceMappingURL=index.js.map","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.19.1';\nvar current_codepage = 1200, current_ansi = 1252;\n/*:: declare var cptable:any; */\n/*global cptable:true, window */\nvar $cptable;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/: 1252, /* ANSI */\n\t/*::[*/1/*::]*/: 65001, /* DEFAULT */\n\t/*::[*/2/*::]*/: 65001, /* SYMBOL */\n\t/*::[*/77/*::]*/: 10000, /* MAC */\n\t/*::[*/128/*::]*/: 932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/: 949, /* HANGUL */\n\t/*::[*/130/*::]*/: 1361, /* JOHAB */\n\t/*::[*/134/*::]*/: 936, /* GB2312 */\n\t/*::[*/136/*::]*/: 950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/: 1253, /* GREEK */\n\t/*::[*/162/*::]*/: 1254, /* TURKISH */\n\t/*::[*/163/*::]*/: 1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/: 1255, /* HEBREW */\n\t/*::[*/178/*::]*/: 1256, /* ARABIC */\n\t/*::[*/186/*::]*/: 1257, /* BALTIC */\n\t/*::[*/204/*::]*/: 1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/: 874, /* THAI */\n\t/*::[*/238/*::]*/: 1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/: 1252, /* OEM */\n\t/*::[*/69/*::]*/: 6969 /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array*/ { var o/*:Array*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_encode_pass(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n if (c1 > 255)\n c1 = 95;\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n if (c2 > 255)\n c2 = 95;\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n if (c3 > 255)\n c3 = 95;\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_decode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n input = input.replace(/^data:([^\\/]+\\/[^\\/]+)?;base64\\,/, \"\").replace(/[^\\w\\+\\/\\=]/g, \"\");\n for (var i = 0; i < input.length; ) {\n e1 = Base64_map.indexOf(input.charAt(i++));\n e2 = Base64_map.indexOf(input.charAt(i++));\n c1 = e1 << 2 | e2 >> 4;\n o += String.fromCharCode(c1);\n e3 = Base64_map.indexOf(input.charAt(i++));\n c2 = (e2 & 15) << 4 | e3 >> 2;\n if (e3 !== 64) {\n o += String.fromCharCode(c2);\n }\n e4 = Base64_map.indexOf(input.charAt(i++));\n c3 = (e3 & 3) << 6 | e4;\n if (e4 !== 64) {\n o += String.fromCharCode(c3);\n }\n }\n return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\nvar buf_utf16le = /*#__PURE__*/(function() {\n\tif(typeof Buffer === 'undefined') return false;\n\tvar x = Buffer_from([65,0]);\n\tif(!x) return false;\n\tvar o = x.toString(\"utf16le\");\n\treturn o.length == 1;\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") o.set(new Uint8Array(s2a(bufs[i])), maxlen);\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]= 'General';\n\tt[1]= '0';\n\tt[2]= '0.00';\n\tt[3]= '#,##0';\n\tt[4]= '#,##0.00';\n\tt[9]= '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0: 'General',\n\t1: '0',\n\t2: '0.00',\n\t3: '#,##0',\n\t4: '#,##0.00',\n\t9: '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40\n\n\t23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4\n\n\t67: 9, 68: 10, // 67 -> 9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47\n\t82: 0 // 82 -> 0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t// 5 -- Currency, 0 decimal, black negative\n\t5: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t// 6 -- Currency, 0 decimal, red negative\n\t6: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t// 7 -- Currency, 2 decimal, black negative\n\t7: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 8 -- Currency, 2 decimal, red negative\n\t8: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $ Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $ Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n /* TODO: properly adjust y/m/d and */\n o[0] -= 581;\n var dow = date.getDay();\n if(date < 60) dow = (dow + 6) % 7;\n return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri*/ {\n\tvar out/*:Array*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? fmt.charAt(i+2) : c; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\": if(v == thresh) return true; break;\n\t\tcase \">\": if(v > thresh) return true; break;\n\t\tcase \"<\": if(v < thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/* table of bad formats written by third-party tools */\nvar bad_formats = {\n\t\"d.m\": \"d\\\\.m\" // Issue #2571 Google Sheets writes invalid format 'd.m', correct format is 'd\".\"m' or 'd\\\\.m'\n};\n\nfunction SSF__load(fmt, idx) {\n\treturn SSF_load(bad_formats[fmt] || fmt, idx);\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports/*:CFBModule*/ = /*::(*/{}/*:: :any)*/;\nexports.version = '1.2.2';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n add 1980 to stored year\n stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t} break;\n\t\t\t/* ZIP64 Extended Information Field */\n\t\t\tcase 0x0001: {\n\t\t\t\tvar sz1 = blob.read_shift(4), sz2 = blob.read_shift(4);\n\t\t\t\tp.usz = (sz2 * Math.pow(2,32) + sz1);\n\t\t\t\tsz1 = blob.read_shift(4); sz2 = blob.read_shift(4);\n\t\t\t\tp.csz = (sz2 * Math.pow(2,32) + sz1);\n\t\t\t\t// NOTE: volume fields are skipped\n\t\t\t} break;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = _fs); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nif(dir_start < sector_list.length) sector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Array*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array*/ = [], q/*:Array*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tif(cnt >= 1) sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array*/, start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/, chkd/*:?Array*/)/*:SectorEntry*/ {\n\tvar buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array*/, dir_start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array*/ = [], buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array*/, Paths/*:Array*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname: name,\n\t\t\ttype: blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL: blob.read_shift(4, 'i'),\n\t\t\tR: blob.read_shift(4, 'i'),\n\t\t\tC: blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\twhile(!s) {\n\t\t\twhile(dirname(dad) && !fullPaths[dirname(dad)]) dad = dirname(dad);\n\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\n\t\t\tdad = dirname(data[i][0]);\n\t\t\ts = fullPaths[dad];\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name = filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tif(_nm.length > 32) {\n\t\t\tconsole.error(\"Name \" + _nm + \" will be truncated to \" + _nm.slice(0,32));\n\t\t\t_nm = _nm.slice(0, 32);\n\t\t}\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ];\n\n/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */\nvar DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\t/* ZIP64 lengths */\n\t\tif(EF && EF[0x0001]) {\n\t\t\tif((EF[0x0001]||{}).usz) usz = EF[0x0001].usz;\n\t\t\tif((EF[0x0001]||{}).csz) csz = EF[0x0001].csz;\n\t\t}\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif((ef[0x0001]||{}).usz) _usz = ef[0x0001].usz;\n\t\tif((ef[0x0001]||{}).csz) _csz = ef[0x0001].csz;\n\t\tif(EF) {\n\t\t\tif((EF[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t\t\tif((EF[0x0001]||{}).usz) _usz = ef[0x0001].usz;\n\t\t\tif((EF[0x0001]||{}).csz) _csz = ef[0x0001].csz;\n\t\t}\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = typeof fi.content == \"string\" ? CRC32.bstr(fi.content, 0) : CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = typeof fi.content == \"string\" ? s2a(fi.content) : fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4, (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nvar _fs;\nfunction set_fs(fs) { _fs = fs; }\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit && buf_utf16le) {\n\t\t\t// TODO: temporary patch\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\n\n/* NOTE: Chrome rejects bare times like 1:23 PM */\nvar FDRE1 = /^(0?\\d|1[0-2])(?:|:([0-5]?\\d)(?:|(\\.\\d+)(?:|:([0-5]?\\d))|:([0-5]?\\d)(|\\.\\d+)))\\s+([ap])m?$/;\n\nfunction fuzzytime1(M) /*:Date*/ {\n /* TODO: 1904 adjustment, keep in sync with base date */\n if(!M[2]) return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), 0, 0, 0);\n if(M[3]) {\n if(M[4]) return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], +M[4], parseFloat(M[3])*1000);\n else return new Date(1899,11,30,(M[7] == \"p\" ? 12 : 0), +M[1], +M[2], parseFloat(M[3])*1000);\n }\n else if(M[5]) return new Date(1899,11,30, (+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], +M[5], M[6] ? parseFloat(M[6]) * 1000 : 0);\n else return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], 0, 0);\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar lower = s.toLowerCase();\n\tvar lnos = lower.replace(/\\s+/g, \" \").trim();\n\tvar M = lnos.match(FDRE1);\n\tif(M) return fuzzytime1(M);\n\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.replace(/[ap]m?/, \"\").match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099 || s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'"': '\"',\n\t''': \"'\",\n\t'>': '>',\n\t'<': '<',\n\t'&': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\tfunction raw_unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn raw_unescapexml(s.slice(0, i)) + s.slice(i+9,j) + raw_unescapexml(s.slice(j+3));\n\t}\n\treturn function unescapexml(text/*:string*/, xlsx/*:boolean*/) {\n\t\tvar out = raw_unescapexml(text);\n\t\treturn xlsx ? out.replace(/\\r\\n/g, \"\\n\") : out;\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f\\uFFFE-\\uFFFF]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"
\").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); }\n\n/* note: xsd:boolean valid values: true / 1 / false / 0 */\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': return true;\n\t\tcase 0: case false: case '0': case 'false': return false;\n\t\t//default: throw new Error(\"Invalid xsd:boolean \" + value);\n\t}\n\treturn false;\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches ... extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+ tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + ''; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/"/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?>:\\/]+)(?:[\\s?:\\/](?:[^>=]|=\"[^\"]*?\")*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o': 'urn:schemas-microsoft-com:office:office',\n\t'x': 'urn:schemas-microsoft-com:office:excel',\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv': 'http://macVmlSchemaUri',\n\t'v': 'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array*/=[]; for(var i=s; i*/=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/ || !buf_utf16le) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/ || !buf_utf16le) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this) && buf_utf16le) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs' || f == 'cpstr') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cpp = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cpp[0];\n\t\t\t}\n\t\t\tsize = val.length;\n\t\t} else if(typeof $cptable !== 'undefined' && f == 'cpstr') {\n\t\t\tcpp = $cptable.utils.encode(current_codepage, val);\n\t\t\t/* replace null bytes with _ when relevant */\n if(cpp.length == val.length) for(i = 0; i < val.length; ++i) if(cpp[i] == 0 && val.charCodeAt(i) != 0) cpp[i] = 0x5F;\n if(cpp.length == 2 * val.length) for(i = 0; i < val.length; ++i) if(cpp[2*i] == 0 && cpp[2*i+1] == 0 && val.charCodeAt(i) != 0) cpp[2*i] = 0x5F;\n\t\t\tfor(i = 0; i < cpp.length; ++i) this[this.l + i] = cpp[i];\n\t\t\tsize = cpp.length;\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t\tsize = val.length;\n\t\t}\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\t// workaround for new Buffer(3).slice(0,0) bug in bun 0.1.3\n\t\tif(curbuf.l) {\n\t\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\t}\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range. If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\nfunction fix_range(a1/*:string*/)/*:string*/ {\n\tvar s = decode_range(a1);\n\treturn \"$\" + encode_col(s.s.c) + \"$\" + encode_row(s.s.r) + \":$\" + encode_col(s.e.c) + \"$\" + encode_row(s.e.r);\n}\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname.replace(/'/g, \"''\") + \"'\";\n\treturn sname;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? (_ws[\"!data\"] != null) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tif(dense && !ws[\"!data\"]) ws[\"!data\"] = [];\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tvar row = [];\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tvar __R = _R + R, __Rstr = \"\" + (__R + 1);\n\t\tif(dense) {\n\t\t\tif(!ws[\"!data\"][__R]) ws[\"!data\"][__R] = [];\n\t\t\trow = ws[\"!data\"][__R];\n\t\t}\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v, o.date1904)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v, o.date1904); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(row[__C] && row[__C].z) cell.z = row[__C].z;\n\t\t\t\trow[__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_col(__C) + __Rstr/*:any*/;\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY = 0x0000;\n//var VT_NULL = 0x0001;\nvar VT_I2 = 0x0002;\nvar VT_I4 = 0x0003;\n//var VT_R4 = 0x0004;\n//var VT_R8 = 0x0005;\n//var VT_CY = 0x0006;\n//var VT_DATE = 0x0007;\n//var VT_BSTR = 0x0008;\n//var VT_ERROR = 0x000A;\nvar VT_BOOL = 0x000B;\nvar VT_VARIANT = 0x000C;\n//var VT_DECIMAL = 0x000E;\n//var VT_I1 = 0x0010;\n//var VT_UI1 = 0x0011;\n//var VT_UI2 = 0x0012;\nvar VT_UI4 = 0x0013;\n//var VT_I8 = 0x0014;\n//var VT_UI8 = 0x0015;\n//var VT_INT = 0x0016;\n//var VT_UINT = 0x0017;\n//var VT_LPSTR = 0x001E;\n//var VT_LPWSTR = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB = 0x0041;\n//var VT_STREAM = 0x0042;\n//var VT_STORAGE = 0x0043;\n//var VT_STREAMED_Object = 0x0044;\n//var VT_STORED_Object = 0x0045;\n//var VT_BLOB_Object = 0x0046;\nvar VT_CF = 0x0047;\n//var VT_CLSID = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\n//var VT_VECTOR = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR = 0x101E;\n//var VT_ARRAY = 0x2000;\n\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\" // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0x000000, /* 0x40 icvForeground ?? */\n\t0xFFFFFF, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\": 0x00,\n\t\"#DIV/0!\": 0x07,\n\t\"#VALUE!\": 0x0F,\n\t\"#REF!\": 0x17,\n\t\"#NAME?\": 0x1D,\n\t\"#NUM!\": 0x24,\n\t\"#N/A\": 0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\": 0xFF\n};\n\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary */\n/* 14.2 Part Summary */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\tworkbooks: {\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t},\n\tstrs: { /* Shared Strings */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t},\n\tcomments: { /* Comments */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t},\n\tsheets: { /* Worksheet */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t},\n\tcharts: { /* Chartsheet */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t},\n\tdialogs: { /* Dialogsheet */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t},\n\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t},\n\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t},\n\tstyles: { /* Styles */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts, raw)/*:string*/ {\n\tvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array*/ = [], v;\n\n\tif(!raw) {\n\t\to[o.length] = (XML_HEADER);\n\t\to[o.length] = writextag('Types', null, {\n\t\t\t'xmlns': XMLNS.CT,\n\t\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t\t'xmlns:xsi': XMLNS.xsi\n\t\t});\n\t\to = o.concat([\n\t\t\t['xml', 'application/xml'],\n\t\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t\t/* from test files */\n\t\t\t['bmp', 'image/bmp'],\n\t\t\t['png', 'image/png'],\n\t\t\t['gif', 'image/gif'],\n\t\t\t['emf', 'image/x-emf'],\n\t\t\t['wmf', 'image/x-wmf'],\n\t\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t\t['pdf', 'application/pdf'],\n\t\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t\t].map(function(x) {\n\t\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t\t}));\n\t}\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(!raw && o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tCONN: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/connections\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 \n\t\tcase 'file-entry': // 4.3 \n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 \n\t\tcase 'algorithm': // 4.5 \n\t\tcase 'start-key-generation': // 4.6 \n\t\tcase 'key-derivation': // 4.7 \n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\to.push(' \\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' \\n');\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn 'Sheet' + 'JS ' + XLSX.version + '';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\", \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': name = null; break;\n\t\t\tdefault: if (x.indexOf('');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tif(Props[i][0] == 0 && Props.length > i+1 && Props[i][1] == Props[i+1][1]) continue; // R9\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ];\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip, /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip, /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip, /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip, /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf, /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip, /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip, /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip, /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip, /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip, /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts, /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip, /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip, /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip, /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip, /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip, /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip, /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip, /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array*/ {\n\tvar merges/*:Array*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865,\n\t/*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850,\n\t/*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437,\n\t/*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437,\n\t/*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437,\n\t/*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932,\n\t/*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437,\n\t/*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865,\n\t/*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437,\n\t/*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437,\n\t/*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850,\n\t/*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852,\n\t/*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860,\n\t/*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866,\n\t/*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852,\n\t/*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949,\n\t/*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874,\n\t/*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252,\n\t/*::[*/0x59/*::]*/: 1252, /*::[*/0x6C/*::]*/: 863,\n\t/*::[*/0x86/*::]*/: 737, /*::[*/0x87/*::]*/: 852,\n\t/*::[*/0x88/*::]*/: 857, /*::[*/0xCC/*::]*/: 1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = (typeof $cptable !== \"undefined\" ? $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)) : a2s(d.slice(d.l, d.l + ww))).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = typeof $cptable !== \"undefined\" ? $cptable.utils.decode(current_cp, dd) : a2s(dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write ' / / ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \" . \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry {\n\t\tvar o = sheet_to_workbook(dbf_to_sheet(buf, opts), opts);\n\t\to.bookType = \"dbf\";\n\t\treturn o;\n\t} catch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar old_cp = current_codepage;\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array*/ = [];\n\tvar colwidths/*:Array*/ = [];\n\tvar coldecimals/*:Array*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\t/* TODO: cache the values instead of encoding twice */\n\t\t\tmaxlen = Math.max(maxlen, (typeof $cptable !== \"undefined\" && typeof col[j] == \"string\" ? $cptable.utils.encode(current_ansi, col[j]): String(col[j])).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\tvar cp = +dbf_reverse_map[/*::String(*/current_codepage/*::)*/] || 0x03;\n\th.write_shift(4, 0x00000000 | (cp<<8));\n\tif(dbf_codepage_map[cp] != +o.codepage) {\n\t\tif(o.codepage) console.error(\"DBF Unsupported codepage \" + current_codepage + \", using 1252\");\n\t\tcurrent_codepage = 1252;\n\t}\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\t/* TODO: test how applications handle non-ASCII field names */\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j colwidths[j]) _n = _n.slice(0, colwidths[j]); // addresses decimal > width\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_n.length; ++hcnt) rout.write_shift(1, 0x20);\n\t\t\t\t\trout.write_shift(1, _n, \"sbcs\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(!data[i][j]) rout.write_shift(8, \"00000000\", \"sbcs\");\n\t\t\t\t\telse {\n\t\t\t\t\t\trout.write_shift(4, (\"0000\"+data[i][j].getFullYear()).slice(-4), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+(data[i][j].getMonth()+1)).slice(-2), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+data[i][j].getDate()).slice(-2), \"sbcs\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C':\n\t\t\t\t\tvar _l = rout.l;\n\t\t\t\t\tvar _s = String(data[i][j] != null ? data[i][j] : \"\").slice(0, colwidths[j]);\n\t\t\t\t\trout.write_shift(1, _s, \"cpstr\");\n\t\t\t\t\t_l += colwidths[j] - rout.l;\n\t\t\t\t\tfor(hcnt=0; hcnt < _l; ++hcnt) rout.write_shift(1, 0x20); break;\n\t\t\t}\n\t\t}\n\t\t// data\n\t}\n\tcurrent_codepage = old_cp;\n\tba.next(1).write_shift(1, 0x1A);\n\treturn ba.end();\n}\n\treturn {\n\t\tto_workbook: dbf_to_workbook,\n\t\tto_sheet: dbf_to_sheet,\n\t\tfrom_sheet: sheet_to_dbf\n\t};\n})();\n\nvar SYLK = /*#__PURE__*/(function() {\n\t/* TODO: stress test sequences */\n\tvar sylk_escapes = ({\n\t\tAA:'À', BA:'Á', CA:'Â', DA:195, HA:'Ä', JA:197,\n\t\tAE:'È', BE:'É', CE:'Ê', HE:'Ë',\n\t\tAI:'Ì', BI:'Í', CI:'Î', HI:'Ï',\n\t\tAO:'Ò', BO:'Ó', CO:'Ô', DO:213, HO:'Ö',\n\t\tAU:'Ù', BU:'Ú', CU:'Û', HU:'Ü',\n\t\tAa:'à', Ba:'á', Ca:'â', Da:227, Ha:'ä', Ja:229,\n\t\tAe:'è', Be:'é', Ce:'ê', He:'ë',\n\t\tAi:'ì', Bi:'í', Ci:'î', Hi:'ï',\n\t\tAo:'ò', Bo:'ó', Co:'ô', Do:245, Ho:'ö',\n\t\tAu:'ù', Bu:'ú', Cu:'û', Hu:'ü',\n\t\tKC:'Ç', Kc:'ç', q:'æ', z:'œ', a:'Æ', j:'Œ',\n\t\tDN:209, Dn:241, Hy:255,\n\t\tS:169, c:170, R:174, \"B \":180,\n\t\t/*::[*/0/*::]*/:176, /*::[*/1/*::]*/:177, /*::[*/2/*::]*/:178,\n\t\t/*::[*/3/*::]*/:179, /*::[*/5/*::]*/:181, /*::[*/6/*::]*/:182,\n\t\t/*::[*/7/*::]*/:183, Q:185, k:186, b:208, i:216, l:222, s:240, y:248,\n\t\t\"!\":161, '\"':162, \"#\":163, \"(\":164, \"%\":165, \"'\":167, \"H \":168,\n\t\t\"+\":171, \";\":187, \"<\":188, \"=\":189, \">\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* https://oss.sheetjs.com/notes/sylk/ for more details */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array*/ = [], colinfo/*:Array*/ = [], cw/*:Array*/ = [];\n\t\tvar Mval = 0, j;\n\t\tvar wb = { Workbook: { WBProps: {}, Names: [] } };\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': /* workbook options */\n\t\t\tfor(rj=1; rj= 5 or < 0\n\t\t\t\t\tif(d1904 >= 1 && d1904 <= 4) wb.Workbook.WBProps.date1904 = true;\n\t\t\t\t} break;\n\t\t\t} break;\n\t\t\tcase 'W': break; /* window */\n\t\t\tcase 'P':\n\t\t\t\tswitch(record[1].charAt(0)){\n\t\t\t\t\tcase 'P': formats.push(rstr.slice(3).replace(/;;/g, \";\")); break;\n\t\t\t\t} break;\n\t\t\tcase 'NN': { /* defined name */\n\t\t\t\tvar nn = {Sheet: 0};\n\t\t\t\tfor(rj=1; rj -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tformula = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tif(formula) {\n\t\t\t\tif(!arr[R][C]) arr[R][C] = { t: 'n', f: formula };\n\t\t\t\telse arr[R][C].f = formula;\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F': /* Format */\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\t// case 'K': // ??\n\t\t\t\t// case 'E': // ??\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tcolinfo.forEach(function(col) { process_col(col); });\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht, wb];\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1], wb = aoasht[2];\n\t\tvar _opts = dup(opts); _opts.date1904 = (((wb||{}).Workbook || {}).WBProps || {}).date1904;\n\t\tvar o = aoa_to_sheet(aoa, _opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\tvar outwb = sheet_to_workbook(o, opts);\n\t\tkeys(wb).forEach(function(k) { outwb[k] = wb[k]; });\n\t\toutwb.bookType = \"sylk\";\n\t\treturn outwb;\n\t}\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + (cell.v == null ? \"\" : String(cell.v)).replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array*/, rows/*:Array*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/, wb/*:?WorkBook*/)/*:string*/ {\n\t\t/* TODO: codepage */\n\t\tvar preamble/*:Array*/ = [\"ID;PSheetJS;N;E\"], o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tvar RS = \"\\r\\n\";\n\t\tvar d1904 = (((wb||{}).Workbook||{}).WBProps||{}).date1904;\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tpreamble.push(\"O;L;D;B\" + (d1904 ? \";V4\" : \"\") + \";K47;G100 0.001\");\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tif(dense && !ws[\"!data\"][R]) continue;\n\t\t\tvar p = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcell = dense ? ws[\"!data\"][R][C] : ws[encode_col(C) + encode_row(R)];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\tp.push(write_ws_cell_sylk(cell, ws, R, C, opts)); // TODO: pass date1904 info\n\t\t\t}\n\t\t\to.push(p.join(RS));\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\t\tvar o = sheet_to_workbook(dif_to_sheet(str, opts), opts);\n\t\to.bookType = \"dif\";\n\t\treturn o;\n\t}\n\n\tfunction make_value(v/*:number*/, s/*:string*/)/*:string*/ { return \"0,\" + String(v) + \"\\r\\n\" + s; }\n\tfunction make_value_str(s/*:string*/)/*:string*/ { return \"1,0\\r\\n\\\"\" + s.replace(/\"/g,'\"\"') + '\"'; }\n\tfunction sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar _DIF_XL = DIF_XL;\n\t\tvar r = safe_decode_range(ws['!ref']);\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tvar o/*:Array*/ = [\n\t\t\t\"TABLE\\r\\n0,1\\r\\n\\\"sheetjs\\\"\\r\\n\",\n\t\t\t\"VECTORS\\r\\n0,\" + (r.e.r - r.s.r + 1) + \"\\r\\n\\\"\\\"\\r\\n\",\n\t\t\t\"TUPLES\\r\\n0,\" + (r.e.c - r.s.c + 1) + \"\\r\\n\\\"\\\"\\r\\n\",\n\t\t\t\"DATA\\r\\n0,0\\r\\n\\\"\\\"\\r\\n\"\n\t\t];\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar row = dense ? ws[\"!data\"][R] : [];\n\t\t\tvar p = \"-1,0\\r\\nBOT\\r\\n\";\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar cell/*:Cell*/ = dense ? (row && row[C]) : ws[encode_cell({r:R,c:C})];\n\t\t\t\tif(cell == null) { p +=(\"1,0\\r\\n\\\"\\\"\\r\\n\"); continue;}\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(_DIF_XL) {\n\t\t\t\t\t\t\tif(cell.w != null) p +=(\"0,\" + cell.w + \"\\r\\nV\");\n\t\t\t\t\t\t\telse if(cell.v != null) p +=(make_value(cell.v, \"V\")); // TODO: should this call SSF_format?\n\t\t\t\t\t\t\telse if(cell.f != null && !cell.F) p +=(make_value_str(\"=\" + cell.f));\n\t\t\t\t\t\t\telse p +=(\"1,0\\r\\n\\\"\\\"\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif(cell.v == null) p +=(\"1,0\\r\\n\\\"\\\"\");\n\t\t\t\t\t\t\telse p +=(make_value(cell.v, \"V\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\tp +=(cell.v ? make_value(1, \"TRUE\") : make_value(0, \"FALSE\"));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's':\n\t\t\t\t\t\tp +=(make_value_str((!_DIF_XL || isNaN(+cell.v)) ? cell.v : '=\"' + cell.v + '\"'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\tif(_DIF_XL) p +=(make_value(cell.w, \"V\"));\n\t\t\t\t\t\telse p +=(make_value_str(cell.w));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: p +=(\"1,0\\r\\n\\\"\\\"\");\n\t\t\t\t}\n\t\t\t\tp += \"\\r\\n\";\n\t\t\t}\n\t\t\to.push(p);\n\t\t}\n\t\treturn o.join(\"\") + \"-1,0\\r\\nEOD\";\n\t}\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array*/ = [], oo/*:Array*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[\"!data\"][R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = ({}/*:any*/);\n\t\tif(o.dense) ws[\"!data\"] = [];\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end); if(s.slice(-1) == \"\\r\") s = s.slice(0, -1);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN((v = fuzzydate(s)).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; v = parseDate(s, k); }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = v; }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(v); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[\"!data\"][R]) ws[\"!data\"][R] = []; ws[\"!data\"][R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase 0x0d:\n\t\t\t\tif(instr) break;\n\t\t\t\tif(str.charCodeAt(end+1) == 0x0a) ++end;\n\t\t\t\t/* falls through */\n\t\t\tcase sepcc: case 0x0a: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[\"!data\"][R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ({}/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [], sdata = [];\n\t\tif(o.dense) sdata = s[\"!data\"] = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[4] == 0x51 && d[5] == 0x50 && d[6] == 0x57) return qpw_to_workbook_buf(d, opts);\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0xFF: /* BOF (works 3+) */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\to.works = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif((!o.qpro && !o.works || RT == 0x33) && val[1].v.charCodeAt(0) < 0x30) val[1].v = val[1].v.slice(1);\n\t\t\t\t\tif(o.works || o.works2) val[1].v = val[1].v.replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = ({}/*:any*/); if(o.dense) sdata = s[\"!data\"] = [];\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (sdata[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!sdata[val[0].r]) sdata[val[0].r] = [];\n\t\t\t\t\t\tsdata[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x5405: o.works2 = true; break;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tif(val[1].v.charCodeAt(0) < 0x30) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t// TODO: R9 appears to encode control codes this way -- verify against other versions\n\t\t\t\t\tval[1].v = val[1].v.replace(/\\x0F./g, function($$) { return String.fromCharCode($$.charCodeAt(1) - 0x20); }).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = ({}/*:any*/); if(o.dense) sdata = s[\"!data\"] = [];\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!sdata[val[0].r]) sdata[val[0].r] = [];\n\t\t\t\t\t\tsdata[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[cols[C] + rr];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = ws[\"!data\"] != null;\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else if(opts.works) { // TODO: verify with more complex works3-4 examples\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t\to[2] = blob.read_shift(2);\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\tfunction parse_STRING(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x1F: [\"NA\", 0],\n\t\t// 0x20: [\"ERR\", 0],\n\t\t0x21: [\"ABS\", 1],\n\t\t0x22: [\"TRUNC\", 1],\n\t\t0x23: [\"SQRT\", 1],\n\t\t0x24: [\"LOG\", 1],\n\t\t0x25: [\"LN\", 1],\n\t\t0x26: [\"PI\", 0],\n\t\t0x27: [\"SIN\", 1],\n\t\t0x28: [\"COS\", 1],\n\t\t0x29: [\"TAN\", 1],\n\t\t0x2A: [\"ATAN2\", 2],\n\t\t0x2B: [\"ATAN\", 1],\n\t\t0x2C: [\"ASIN\", 1],\n\t\t0x2D: [\"ACOS\", 1],\n\t\t0x2E: [\"EXP\", 1],\n\t\t0x2F: [\"MOD\", 2],\n\t\t// 0x30\n\t\t0x31: [\"ISNA\", 1],\n\t\t0x32: [\"ISERR\", 1],\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x35: [\"RAND\", 0],\n\t\t// 0x36 DATE\n\t\t// 0x37 NOW\n\t\t// 0x38 PMT\n\t\t// 0x39 PV\n\t\t// 0x3A FV\n\t\t// 0x3B IF\n\t\t// 0x3C DAY\n\t\t// 0x3D MONTH\n\t\t// 0x3E YEAR\n\t\t0x3F: [\"ROUND\", 2],\n\t\t// 0x40 TIME\n\t\t// 0x41 HOUR\n\t\t// 0x42 MINUTE\n\t\t// 0x43 SECOND\n\t\t0x44: [\"ISNUMBER\", 1],\n\t\t0x45: [\"ISTEXT\", 1],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x47: [\"VALUE\", 1],\n\t\t// 0x48: [\"FIXED\", ?? 1],\n\t\t0x49: [\"MID\", 3],\n\t\t0x4A: [\"CHAR\", 1],\n\t\t// 0x4B\n\t\t// 0x4C FIND\n\t\t// 0x4D DATEVALUE\n\t\t// 0x4E TIMEVALUE\n\t\t// 0x4F CELL\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t// 0x55 VLOOKUP\n\t\t// 0x56 NPV\n\t\t// 0x57 VAR\n\t\t// 0x58 STD\n\t\t// 0x59 IRR\n\t\t// 0x5A HLOOKUP\n\t\t// 0x5B DSUM\n\t\t// 0x5C DAVERAGE\n\t\t// 0x5D DCOUNTA\n\t\t// 0x5E DMIN\n\t\t// 0x5F DMAX\n\t\t// 0x60 DVARP\n\t\t// 0x61 DSTDEVP\n\t\t// 0x62 INDEX\n\t\t// 0x63 COLS\n\t\t// 0x64 ROWS\n\t\t// 0x65 REPEAT\n\t\t0x66: [\"UPPER\", 1],\n\t\t0x67: [\"LOWER\", 1],\n\t\t// 0x68 LEFT\n\t\t// 0x69 RIGHT\n\t\t// 0x6A REPLACE\n\t\t0x6B: [\"PROPER\", 1],\n\t\t// 0x6C CELL\n\t\t0x6D: [\"TRIM\", 1],\n\t\t// 0x6E CLEAN\n\t\t0x6F: [\"T\", 1]\n\t\t// 0x70 V\n\t};\n\tvar BinOpTab = [\n\t\t \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"\", \"+\", \"-\", \"*\", \"/\", \"^\", \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\", \"<\", \">\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\", \"\", \"\", \"\", \"\", \"\", \"\", \"\" // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 12);\n\t\tblob.l += length - 12; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_STRING },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0x00FF/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\t/* QPW uses a different set of record types */\n\tfunction qpw_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tprep_blob(d, 0);\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ({}/*:any*/); if(o.dense) s[\"!data\"] = [];\n\t\tvar SST = [], sname = \"\", formulae = [];\n\t\tvar range = {s:{r:-1,c:-1}, e:{r:-1,c:-1}};\n\t\tvar cnt = 0, type = 0, C = 0, R = 0;\n\t\tvar wb = { SheetNames: [], Sheets: {} };\n\t\touter: while(d.l < d.length) {\n\t\t\tvar RT = d.read_shift(2), length = d.read_shift(2);\n\t\t\tvar p = d.slice(d.l, d.l + length);\n\t\t\tprep_blob(p, 0);\n\t\t\tswitch(RT) {\n\t\t\t\tcase 0x01: /* BOF */\n\t\t\t\t\tif(p.read_shift(4) != 0x39575051) throw \"Bad QPW9 BOF!\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x02: /* EOF */ break outer;\n\n\t\t\t\t/* TODO: The behavior here should be consistent with Numbers: QP Notebook ~ .TN.SheetArchive, QP Sheet ~ .TST.TableModelArchive */\n\t\t\t\tcase 0x0401: /* BON */ break;\n\t\t\t\tcase 0x0402: /* EON */ /* TODO: backfill missing sheets based on BON cnt */ break;\n\n\t\t\t\tcase 0x0407: { /* SST */\n\t\t\t\t\tp.l += 12;\n\t\t\t\t\twhile(p.l < p.length) {\n\t\t\t\t\t\tcnt = p.read_shift(2);\n\t\t\t\t\t\ttype = p.read_shift(1);\n\t\t\t\t\t\tSST.push(p.read_shift(cnt, 'cstr'));\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0408: { /* FORMULAE */\n\t\t\t\t\t//p.l += 12;\n\t\t\t\t\t//while(p.l < p.length) {\n\t\t\t\t\t//\tcnt = p.read_shift(2);\n\t\t\t\t\t//\tformulae.push(p.slice(p.l, p.l + cnt + 1)); p.l += cnt + 1;\n\t\t\t\t\t//}\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x0601: { /* BOS */\n\t\t\t\t\tvar sidx = p.read_shift(2);\n\t\t\t\t\ts = ({}/*:any*/); if(o.dense) s[\"!data\"] = [];\n\t\t\t\t\trange.s.c = p.read_shift(2);\n\t\t\t\t\trange.e.c = p.read_shift(2);\n\t\t\t\t\trange.s.r = p.read_shift(4);\n\t\t\t\t\trange.e.r = p.read_shift(4);\n\t\t\t\t\tp.l += 4;\n\t\t\t\t\tif(p.l + 2 < p.length) {\n\t\t\t\t\t\tcnt = p.read_shift(2);\n\t\t\t\t\t\ttype = p.read_shift(1);\n\t\t\t\t\t\tsname = cnt == 0 ? \"\" : p.read_shift(cnt, 'cstr');\n\t\t\t\t\t}\n\t\t\t\t\tif(!sname) sname = encode_col(sidx);\n\t\t\t\t\t/* TODO: backfill empty sheets */\n\t\t\t\t} break;\n\t\t\t\tcase 0x0602: { /* EOS */\n\t\t\t\t\t/* NOTE: QP valid range A1:IV1000000 */\n\t\t\t\t\tif(range.s.c > 0xFF || range.s.r > 999999) break;\n\t\t\t\t\tif(range.e.c < range.s.c) range.e.c = range.s.c;\n\t\t\t\t\tif(range.e.r < range.s.r) range.e.r = range.s.r;\n\t\t\t\t\ts[\"!ref\"] = encode_range(range);\n\t\t\t\t\tbook_append_sheet(wb, s, sname); // TODO: a barrel roll\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x0A01: { /* COL (like XLS Row, modulo the layout transposition) */\n\t\t\t\t\tC = p.read_shift(2);\n\t\t\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\t\t\tif(range.s.c > C) range.s.c = C;\n\t\t\t\t\tR = p.read_shift(4);\n\t\t\t\t\tif(range.s.r > R) range.s.r = R;\n\t\t\t\t\tR = p.read_shift(4);\n\t\t\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x0C01: { /* MulCells (like XLS MulRK, but takes advantage of common column data patterns) */\n\t\t\t\t\tR = p.read_shift(4), cnt = p.read_shift(4);\n\t\t\t\t\tif(range.s.r > R) range.s.r = R;\n\t\t\t\t\tif(range.e.r < R + cnt - 1) range.e.r = R + cnt - 1;\n\t\t\t\t\tvar CC = encode_col(C);\n\t\t\t\t\twhile(p.l < p.length) {\n\t\t\t\t\t\tvar cell = { t: \"z\" };\n\t\t\t\t\t\tvar flags = p.read_shift(1);\n\t\t\t\t\t\tif(flags & 0x80) p.l += 2;\n\t\t\t\t\t\tvar mul = (flags & 0x40) ? p.read_shift(2) - 1: 0;\n\t\t\t\t\t\tswitch(flags & 0x1F) {\n\t\t\t\t\t\t\tcase 1: break;\n\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: p.read_shift(2) }; break;\n\t\t\t\t\t\t\tcase 3: cell = { t: \"n\", v: p.read_shift(2, 'i') }; break;\n\t\t\t\t\t\t\tcase 5: cell = { t: \"n\", v: p.read_shift(8, 'f') }; break;\n\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = p.read_shift(4) - 1] }; break;\n\t\t\t\t\t\t\tcase 8: cell = { t: \"n\", v: p.read_shift(8, 'f') }; p.l += 2; /* cell.f = formulae[p.read_shift(4)]; */ p.l += 4; break;\n\t\t\t\t\t\t\tdefault: throw \"Unrecognized QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar delta = 0;\n\t\t\t\t\t\tif(flags & 0x20) switch(flags & 0x1F) {\n\t\t\t\t\t\t\tcase 2: delta = p.read_shift(2); break;\n\t\t\t\t\t\t\tcase 3: delta = p.read_shift(2, 'i'); break;\n\t\t\t\t\t\t\tcase 7: delta = p.read_shift(2); break;\n\t\t\t\t\t\t\tdefault: throw \"Unsupported delta for QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(!(!o.sheetStubs && cell.t == \"z\")) {\n\t\t\t\t\t\t\tif(s[\"!data\"] != null) {\n\t\t\t\t\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\t\t\t\t\ts[\"!data\"][R][C] = cell;\n\t\t\t\t\t\t\t} else s[CC + encode_row(R)] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t++R; --cnt;\n\t\t\t\t\t\twhile(mul-- > 0 && cnt >= 0) {\n\t\t\t\t\t\t\tif(flags & 0x20) switch(flags & 0x1F) {\n\t\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: (cell.v + delta) & 0xFFFF }; break;\n\t\t\t\t\t\t\t\tcase 3: cell = { t: \"n\", v: (cell.v + delta) & 0xFFFF }; if(cell.v > 0x7FFF) cell.v -= 0x10000; break;\n\t\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = (type + delta) >>> 0] }; break;\n\t\t\t\t\t\t\t\tdefault: throw \"Cannot apply delta for QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t\t} else switch(flags & 0x1F) {\n\t\t\t\t\t\t\t\tcase 1: cell = { t: \"z\" }; break;\n\t\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: p.read_shift(2) }; break;\n\t\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = p.read_shift(4) - 1] }; break;\n\t\t\t\t\t\t\t\tdefault: throw \"Cannot apply repeat for QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!(!o.sheetStubs && cell.t == \"z\")) {\n\t\t\t\t\t\t\t\tif(s[\"!data\"] != null) {\n\t\t\t\t\t\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\t\t\t\t\t\ts[\"!data\"][R][C] = cell;\n\t\t\t\t\t\t\t\t} else s[CC + encode_row(R)] = cell;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t++R; --cnt;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\tdefault: break;\n\t\t\t}\n\t\t\td.l += length;\n\t\t}\n\t\treturn wb;\n\t}\n\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '':\n\t\t\tcase '': font.shadow = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '':\n\t\t\tcase '': font.outline = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '':\n\t\t\tcase '': font.strike = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '':\n\t\t\tcase '': font.u = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '':\n\t\t\tcase '': font.b = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '':\n\t\t\tcase '': font.i = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('');\n\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\n\n\t\toutro.push(\"\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array, string, Array]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"), true);\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")), true);\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\n\t\t}\n\t\tsitag += \"\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array*/ {\n\tvar o/*:Array*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\tcase '': break;\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nfunction rtf_to_sheet(d, opts) {\n switch (opts.type) {\n case \"base64\":\n return rtf_to_sheet_str(Base64_decode(d), opts);\n case \"binary\":\n return rtf_to_sheet_str(d, opts);\n case \"buffer\":\n return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString(\"binary\") : a2s(d), opts);\n case \"array\":\n return rtf_to_sheet_str(cc2str(d), opts);\n }\n throw new Error(\"Unrecognized type \" + opts.type);\n}\nfunction rtf_to_sheet_str(str, opts) {\n var o = opts || {};\n var ws = {};\n var dense = o.dense;\n if (dense)\n ws[\"!data\"] = [];\n var rows = str.match(/\\\\trowd[\\s\\S]*?\\\\row\\b/g);\n if (!rows)\n throw new Error(\"RTF missing table\");\n var range = { s: { c: 0, r: 0 }, e: { c: 0, r: rows.length - 1 } };\n var row = [];\n rows.forEach(function(rowtf, R) {\n if (dense)\n row = ws[\"!data\"][R] = [];\n var rtfre = /\\\\[\\w\\-]+\\b/g;\n var last_index = 0;\n var res;\n var C = -1;\n var payload = [];\n while ((res = rtfre.exec(rowtf)) != null) {\n var data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n if (data.charCodeAt(0) == 32)\n data = data.slice(1);\n if (data.length)\n payload.push(data);\n switch (res[0]) {\n case \"\\\\cell\":\n ++C;\n if (payload.length) {\n var cell = { v: payload.join(\"\"), t: \"s\" };\n if (cell.v == \"TRUE\" || cell.v == \"FALSE\") {\n cell.v = cell.v == \"TRUE\";\n cell.t = \"b\";\n } else if (!isNaN(fuzzynum(cell.v))) {\n cell.t = \"n\";\n if (o.cellText !== false)\n cell.w = cell.v;\n cell.v = fuzzynum(cell.v);\n }\n if (dense)\n row[C] = cell;\n else\n ws[encode_cell({ r: R, c: C })] = cell;\n }\n payload = [];\n break;\n case \"\\\\par\":\n payload.push(\"\\n\");\n break;\n }\n last_index = rtfre.lastIndex;\n }\n if (C > range.e.c)\n range.e.c = C;\n });\n ws[\"!ref\"] = encode_range(range);\n return ws;\n}\nfunction rtf_to_workbook(d, opts) {\n var wb = sheet_to_workbook(rtf_to_sheet(d, opts), opts);\n wb.bookType = \"rtf\";\n return wb;\n}\nfunction sheet_to_rtf(ws, opts) {\n var o = [\"{\\\\rtf1\\\\ansi\"];\n if (!ws[\"!ref\"])\n return o[0] + \"}\";\n var r = safe_decode_range(ws[\"!ref\"]), cell;\n var dense = ws[\"!data\"] != null, row = [];\n for (var R = r.s.r; R <= r.e.r; ++R) {\n o.push(\"\\\\trowd\\\\trautofit1\");\n for (var C = r.s.c; C <= r.e.c; ++C)\n o.push(\"\\\\cellx\" + (C + 1));\n o.push(\"\\\\pard\\\\intbl\");\n if (dense)\n row = ws[\"!data\"][R] || [];\n for (C = r.s.c; C <= r.e.c; ++C) {\n var coord = encode_cell({ r: R, c: C });\n cell = dense ? row[C] : ws[coord];\n if (!cell || cell.v == null && (!cell.f || cell.F)) {\n o.push(\" \\\\cell\");\n continue;\n }\n o.push(\" \" + (cell.w || (format_cell(cell), cell.w) || \"\").replace(/[\\r\\n]/g, \"\\\\par \"));\n o.push(\"\\\\cell\");\n }\n o.push(\"\\\\pard\\\\intbl\\\\row\");\n }\n return o.join(\"\") + \"}\";\n}\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '': case '':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '':\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '': case '':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '': break;\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '': break;\n\t\t\tcase '': case '':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\t\t\tcase '0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF__load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5 borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF__load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId: 0,\n\t\tfillId: 0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'', '', '', '',\n\t'', '', '',\n\t'', '', '',\n\t'', ''\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n return {\n flags: data.read_shift(4),\n version: data.read_shift(4),\n name: parse_XLWideString(data, length - 8)\n };\n}\nfunction write_BrtMdtinfo(data) {\n var o = new_buf(12 + 2 * data.name.length);\n o.write_shift(4, data.flags);\n o.write_shift(4, data.version);\n write_XLWideString(data.name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n var out = [];\n var cnt = data.read_shift(4);\n while (cnt-- > 0)\n out.push([data.read_shift(4), data.read_shift(4)]);\n return out;\n}\nfunction write_BrtMdb(mdb) {\n var o = new_buf(4 + 8 * mdb.length);\n o.write_shift(4, mdb.length);\n for (var i = 0; i < mdb.length; ++i) {\n o.write_shift(4, mdb[i][0]);\n o.write_shift(4, mdb[i][1]);\n }\n return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n var o = new_buf(8 + 2 * name.length);\n o.write_shift(4, cnt);\n write_XLWideString(name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n data.l += 4;\n return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n var o = new_buf(8);\n o.write_shift(4, cnt);\n o.write_shift(4, cm ? 1 : 0);\n return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n var out = { Types: [], Cell: [], Value: [] };\n var opts = _opts || {};\n var state = [];\n var pass = false;\n var metatype = 2;\n recordhopper(data, function(val, R, RT) {\n switch (RT) {\n case 335:\n out.Types.push({ name: val.name });\n break;\n case 51:\n val.forEach(function(r) {\n if (metatype == 1)\n out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n else if (metatype == 0)\n out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n });\n break;\n case 337:\n metatype = val ? 1 : 0;\n break;\n case 338:\n metatype = 2;\n break;\n case 35:\n state.push(RT);\n pass = true;\n break;\n case 36:\n state.pop();\n pass = false;\n break;\n default:\n if (R.T) {\n } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n }\n });\n return out;\n}\nfunction write_xlmeta_bin() {\n var ba = buf_array();\n write_record(ba, 332);\n write_record(ba, 334, write_UInt32LE(1));\n write_record(ba, 335, write_BrtMdtinfo({\n name: \"XLDAPR\",\n version: 12e4,\n flags: 3496657072\n }));\n write_record(ba, 336);\n write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n write_record(ba, 52);\n write_record(ba, 35, write_UInt32LE(514));\n write_record(ba, 4096, write_UInt32LE(0));\n write_record(ba, 4097, writeuint16(1));\n write_record(ba, 36);\n write_record(ba, 53);\n write_record(ba, 340);\n write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n write_record(ba, 51, write_BrtMdb([[1, 0]]));\n write_record(ba, 338);\n write_record(ba, 333);\n return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n var out = { Types: [], Cell: [], Value: [] };\n if (!data)\n return out;\n var pass = false;\n var metatype = 2;\n var lastmeta;\n data.replace(tagregex, function(x) {\n var y = parsexmltag(x);\n switch (strip_ns(y[0])) {\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n case \"\":\n case \"\":\n break;\n case \"\":\n pass = false;\n break;\n case \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n');\n return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase ']*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nfunction write_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"})\n\t];\n\n\tvar _shapeid = 65536 * rId;\n\n\tvar _comments = comments || [];\n\tif(_comments.length > 0) o.push(writextag(\"v:shapetype\", [\n\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t].join(\"\"), {id:\"_x0000_t202\", coordsize:csize.join(\",\"), 'o:spt':202, path:bbox}));\n\n\t_comments.forEach(function(x) { ++_shapeid; o.push(write_vml_comment(x, _shapeid)); });\n\to.push('');\n\treturn o.join(\"\");\n}\n\nfunction write_vml_comment(x, _shapeid)/*:string*/ {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\n\treturn [\n\t'',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'
',\n\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '',\n\t\t'',\n\t''\n\t].join(\"\");\n}\nfunction sheet_insert_comments(sheet/*:WorkSheet*/, comments/*:Array*/, threaded/*:boolean*/, people/*:?Array*/) {\n\tvar dense = sheet[\"!data\"] != null;\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[\"!data\"][r.r]) sheet[\"!data\"][r.r] = [];\n\t\t\tcell = sheet[\"!data\"][r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[\"!data\"][r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tsheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array*/ = [];\n\tvar commentList/*:Array*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array*/ = [];\n\to.push(\"\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"\" + a + \"\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"\" + \"tc=\" + w.ID + \"\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"SheetJ5\"); }\n\to.push(\"\");\n\to.push(\"\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [], tcnt = 0;\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\td[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tif(c.T) ++tcnt;\n\t\t\tts.push(c.t == null ? \"\" : escapexml(c.t));\n\t\t});\n\t\tif(tcnt === 0) {\n\t\t\td[1].forEach(function(c) {\n\t\t\t\to.push('');\n\t\t\t\to.push(writetag(\"t\", c.t == null ? \"\" : escapexml(c.t)));\n\t\t\t\to.push('');\n\t\t\t});\n\t\t} else {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\to.push('');\n\t\t\tvar t = \"Comment:\\n \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t\to.push('');\n\t\t}\n\t});\n\to.push(\"\");\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '': case '': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '': pass = true; break;\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '
': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array*/ {\n\tvar out/*:Array*/ = [];\n\tvar authors/*:Array*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n cfb.FullPaths.forEach(function(p, i) {\n if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n return;\n var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n });\n return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n vba.FullPaths.forEach(function(p, i) {\n if (i == 0)\n return;\n var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n if (newpath.slice(-1) !== \"/\")\n CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = $4 == \"$\" ? (r+1) : (r == 0 ? \"\" : \"[\" + r + \"]\");\n\t\t\tvar C = $2 == \"$\" ? (c+1) : (c == 0 ? \"\" : \"[\" + c + \"]\");\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array>*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// TODO: explore space\nfunction make_3d_range(start, end) {\n\tvar s = start.lastIndexOf(\"!\"), e = end.lastIndexOf(\"!\");\n\tif(s == -1 && e == -1) return start + \":\" + end;\n\tif(s > 0 && e > 0 && start.slice(0, s).toLowerCase() == end.slice(0, e).toLowerCase()) return start + \":\" + end.slice(e+1);\n\tconsole.error(\"Cannot hydrate range\", start, end);\n\treturn start + \":\" + end;\n}\n\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(make_3d_range(e2,e1));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\tif(stack[0] == \"TRUE\") return true; if(stack[0] == \"FALSE\") return false;\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\n\n/* Writes a PtgNum or PtgInt */\nfunction write_XLSBFormulaNum(val/*:number*/) {\n\tif((val | 0) == val && val < Math.pow(2,16) && val >= 0) {\n\t\tvar oint = new_buf(11);\n\t\toint.write_shift(4, 3);\n\t\toint.write_shift(1, 0x1e);\n\t\toint.write_shift(2, val);\n\t\toint.write_shift(4, 0);\n\t\treturn oint;\n\t}\n\n\tvar num = new_buf(17);\n\tnum.write_shift(4, 11);\n\tnum.write_shift(1, 0x1f);\n\tnum.write_shift(8, val);\n\tnum.write_shift(4, 0);\n\treturn num;\n}\n/* Writes a PtgErr */\nfunction write_XLSBFormulaErr(val/*:number*/) {\n\tvar oint = new_buf(10);\n\toint.write_shift(4, 2);\n\toint.write_shift(1, 0x1C);\n\toint.write_shift(1, val);\n\toint.write_shift(4, 0);\n\treturn oint;\n}\n/* Writes a PtgBool */\nfunction write_XLSBFormulaBool(val/*:boolean*/) {\n\tvar oint = new_buf(10);\n\toint.write_shift(4, 2);\n\toint.write_shift(1, 0x1D);\n\toint.write_shift(1, val?1:0);\n\toint.write_shift(4, 0);\n\treturn oint;\n}\n\n/* Writes a PtgStr */\nfunction write_XLSBFormulaStr(val/*:string*/) {\n\tvar preamble = new_buf(7);\n\tpreamble.write_shift(4, 3 + 2 * val.length);\n\tpreamble.write_shift(1, 0x17);\n\tpreamble.write_shift(2, val.length);\n\n\tvar body = new_buf(2 * val.length);\n\tbody.write_shift(2 * val.length, val, \"utf16le\");\n\n\tvar postamble = new_buf(4);\n\tpostamble.write_shift(4, 0);\n\n\treturn bconcat([preamble, body, postamble]);\n}\n\n/* Writes a PtgRef */\nfunction write_XLSBFormulaRef(str) {\n\tvar cell = decode_cell(str);\n\tvar out = new_buf(15);\n\tout.write_shift(4, 7);\n\tout.write_shift(1, 0x04 | ((1)<<5));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a PtgRef3d */\nfunction write_XLSBFormulaRef3D(str, wb) {\n\tvar lastbang = str.lastIndexOf(\"!\");\n\tvar sname = str.slice(0, lastbang);\n\tstr = str.slice(lastbang+1);\n\tvar cell = decode_cell(str);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\n\tvar out = new_buf(17);\n\tout.write_shift(4, 9);\n\tout.write_shift(1, 0x1A | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a PtgRefErr3d */\nfunction write_XLSBFormulaRefErr3D(str, wb) {\n\tvar lastbang = str.lastIndexOf(\"!\");\n\tvar sname = str.slice(0, lastbang);\n\tstr = str.slice(lastbang+1);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\n\tvar out = new_buf(17);\n\tout.write_shift(4, 9);\n\tout.write_shift(1, 0x1C | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, 0);\n\tout.write_shift(2, 0); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a single sheet range [PtgRef PtgRef PtgRange] */\nfunction write_XLSBFormulaRange(_str) {\n\tvar parts = _str.split(\":\"), str = parts[0];\n\n\tvar out = new_buf(23);\n\tout.write_shift(4, 15);\n\n\t/* start cell */\n\tstr = parts[0]; var cell = decode_cell(str);\n\tout.write_shift(1, 0x04 | ((1)<<5));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\t/* end cell */\n\tstr = parts[1]; cell = decode_cell(str);\n\tout.write_shift(1, 0x04 | ((1)<<5));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\t/* PtgRange */\n\tout.write_shift(1, 0x11);\n\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a range with explicit sheet name [PtgRef3D PtgRef3D PtgRange] */\nfunction write_XLSBFormulaRangeWS(_str, wb) {\n\tvar lastbang = _str.lastIndexOf(\"!\");\n\tvar sname = _str.slice(0, lastbang);\n\t_str = _str.slice(lastbang+1);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\tvar parts = _str.split(\":\"); str = parts[0];\n\n\tvar out = new_buf(27);\n\tout.write_shift(4, 19);\n\n\t/* start cell */\n\tvar str = parts[0], cell = decode_cell(str);\n\tout.write_shift(1, 0x1A | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\n\t/* end cell */\n\tstr = parts[1]; cell = decode_cell(str);\n\tout.write_shift(1, 0x1A | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\n\t/* PtgRange */\n\tout.write_shift(1, 0x11);\n\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a range with explicit sheet name [PtgArea3d] */\nfunction write_XLSBFormulaArea3D(_str, wb) {\n\tvar lastbang = _str.lastIndexOf(\"!\");\n\tvar sname = _str.slice(0, lastbang);\n\t_str = _str.slice(lastbang+1);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\tvar range = decode_range(_str);\n\n\tvar out = new_buf(23);\n\tout.write_shift(4, 15);\n\n\tout.write_shift(1, 0x1B | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, range.s.r);\n\tout.write_shift(4, range.e.r);\n\tout.write_shift(2, range.s.c);\n\tout.write_shift(2, range.e.c);\n\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n\n/* General Formula */\nfunction write_XLSBFormula(val/*:string|number*/, wb) {\n\tif(typeof val == \"number\") return write_XLSBFormulaNum(val);\n\tif(typeof val == \"boolean\") return write_XLSBFormulaBool(val);\n\tif(/^#(DIV\\/0!|GETTING_DATA|N\\/A|NAME\\?|NULL!|NUM!|REF!|VALUE!)$/.test(val)) return write_XLSBFormulaErr(+RBErr[val]);\n\tif(val.match(/^\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRef(val);\n\tif(val.match(/^\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRange(val);\n\tif(val.match(/^#REF!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaArea3D(val, wb);\n\tif(val.match(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRef3D(val, wb);\n\tif(val.match(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRangeWS(val, wb);\n\tif(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!#REF!$/.test(val)) return write_XLSBFormulaRefErr3D(val, wb);\n\tif(/^\".*\"$/.test(val)) return write_XLSBFormulaStr(val);\n\tif(/^[+-]\\d+$/.test(val)) return write_XLSBFormulaNum(parseInt(val, 10));\n\tthrow \"Formula |\" + val + \"| not supported for XLSB\";\n}\nvar write_XLSBNameParsedFormula = write_XLSBFormula;\nvar Cetab = {\n 0: \"BEEP\",\n 1: \"OPEN\",\n 2: \"OPEN.LINKS\",\n 3: \"CLOSE.ALL\",\n 4: \"SAVE\",\n 5: \"SAVE.AS\",\n 6: \"FILE.DELETE\",\n 7: \"PAGE.SETUP\",\n 8: \"PRINT\",\n 9: \"PRINTER.SETUP\",\n 10: \"QUIT\",\n 11: \"NEW.WINDOW\",\n 12: \"ARRANGE.ALL\",\n 13: \"WINDOW.SIZE\",\n 14: \"WINDOW.MOVE\",\n 15: \"FULL\",\n 16: \"CLOSE\",\n 17: \"RUN\",\n 22: \"SET.PRINT.AREA\",\n 23: \"SET.PRINT.TITLES\",\n 24: \"SET.PAGE.BREAK\",\n 25: \"REMOVE.PAGE.BREAK\",\n 26: \"FONT\",\n 27: \"DISPLAY\",\n 28: \"PROTECT.DOCUMENT\",\n 29: \"PRECISION\",\n 30: \"A1.R1C1\",\n 31: \"CALCULATE.NOW\",\n 32: \"CALCULATION\",\n 34: \"DATA.FIND\",\n 35: \"EXTRACT\",\n 36: \"DATA.DELETE\",\n 37: \"SET.DATABASE\",\n 38: \"SET.CRITERIA\",\n 39: \"SORT\",\n 40: \"DATA.SERIES\",\n 41: \"TABLE\",\n 42: \"FORMAT.NUMBER\",\n 43: \"ALIGNMENT\",\n 44: \"STYLE\",\n 45: \"BORDER\",\n 46: \"CELL.PROTECTION\",\n 47: \"COLUMN.WIDTH\",\n 48: \"UNDO\",\n 49: \"CUT\",\n 50: \"COPY\",\n 51: \"PASTE\",\n 52: \"CLEAR\",\n 53: \"PASTE.SPECIAL\",\n 54: \"EDIT.DELETE\",\n 55: \"INSERT\",\n 56: \"FILL.RIGHT\",\n 57: \"FILL.DOWN\",\n 61: \"DEFINE.NAME\",\n 62: \"CREATE.NAMES\",\n 63: \"FORMULA.GOTO\",\n 64: \"FORMULA.FIND\",\n 65: \"SELECT.LAST.CELL\",\n 66: \"SHOW.ACTIVE.CELL\",\n 67: \"GALLERY.AREA\",\n 68: \"GALLERY.BAR\",\n 69: \"GALLERY.COLUMN\",\n 70: \"GALLERY.LINE\",\n 71: \"GALLERY.PIE\",\n 72: \"GALLERY.SCATTER\",\n 73: \"COMBINATION\",\n 74: \"PREFERRED\",\n 75: \"ADD.OVERLAY\",\n 76: \"GRIDLINES\",\n 77: \"SET.PREFERRED\",\n 78: \"AXES\",\n 79: \"LEGEND\",\n 80: \"ATTACH.TEXT\",\n 81: \"ADD.ARROW\",\n 82: \"SELECT.CHART\",\n 83: \"SELECT.PLOT.AREA\",\n 84: \"PATTERNS\",\n 85: \"MAIN.CHART\",\n 86: \"OVERLAY\",\n 87: \"SCALE\",\n 88: \"FORMAT.LEGEND\",\n 89: \"FORMAT.TEXT\",\n 90: \"EDIT.REPEAT\",\n 91: \"PARSE\",\n 92: \"JUSTIFY\",\n 93: \"HIDE\",\n 94: \"UNHIDE\",\n 95: \"WORKSPACE\",\n 96: \"FORMULA\",\n 97: \"FORMULA.FILL\",\n 98: \"FORMULA.ARRAY\",\n 99: \"DATA.FIND.NEXT\",\n 100: \"DATA.FIND.PREV\",\n 101: \"FORMULA.FIND.NEXT\",\n 102: \"FORMULA.FIND.PREV\",\n 103: \"ACTIVATE\",\n 104: \"ACTIVATE.NEXT\",\n 105: \"ACTIVATE.PREV\",\n 106: \"UNLOCKED.NEXT\",\n 107: \"UNLOCKED.PREV\",\n 108: \"COPY.PICTURE\",\n 109: \"SELECT\",\n 110: \"DELETE.NAME\",\n 111: \"DELETE.FORMAT\",\n 112: \"VLINE\",\n 113: \"HLINE\",\n 114: \"VPAGE\",\n 115: \"HPAGE\",\n 116: \"VSCROLL\",\n 117: \"HSCROLL\",\n 118: \"ALERT\",\n 119: \"NEW\",\n 120: \"CANCEL.COPY\",\n 121: \"SHOW.CLIPBOARD\",\n 122: \"MESSAGE\",\n 124: \"PASTE.LINK\",\n 125: \"APP.ACTIVATE\",\n 126: \"DELETE.ARROW\",\n 127: \"ROW.HEIGHT\",\n 128: \"FORMAT.MOVE\",\n 129: \"FORMAT.SIZE\",\n 130: \"FORMULA.REPLACE\",\n 131: \"SEND.KEYS\",\n 132: \"SELECT.SPECIAL\",\n 133: \"APPLY.NAMES\",\n 134: \"REPLACE.FONT\",\n 135: \"FREEZE.PANES\",\n 136: \"SHOW.INFO\",\n 137: \"SPLIT\",\n 138: \"ON.WINDOW\",\n 139: \"ON.DATA\",\n 140: \"DISABLE.INPUT\",\n 142: \"OUTLINE\",\n 143: \"LIST.NAMES\",\n 144: \"FILE.CLOSE\",\n 145: \"SAVE.WORKBOOK\",\n 146: \"DATA.FORM\",\n 147: \"COPY.CHART\",\n 148: \"ON.TIME\",\n 149: \"WAIT\",\n 150: \"FORMAT.FONT\",\n 151: \"FILL.UP\",\n 152: \"FILL.LEFT\",\n 153: \"DELETE.OVERLAY\",\n 155: \"SHORT.MENUS\",\n 159: \"SET.UPDATE.STATUS\",\n 161: \"COLOR.PALETTE\",\n 162: \"DELETE.STYLE\",\n 163: \"WINDOW.RESTORE\",\n 164: \"WINDOW.MAXIMIZE\",\n 166: \"CHANGE.LINK\",\n 167: \"CALCULATE.DOCUMENT\",\n 168: \"ON.KEY\",\n 169: \"APP.RESTORE\",\n 170: \"APP.MOVE\",\n 171: \"APP.SIZE\",\n 172: \"APP.MINIMIZE\",\n 173: \"APP.MAXIMIZE\",\n 174: \"BRING.TO.FRONT\",\n 175: \"SEND.TO.BACK\",\n 185: \"MAIN.CHART.TYPE\",\n 186: \"OVERLAY.CHART.TYPE\",\n 187: \"SELECT.END\",\n 188: \"OPEN.MAIL\",\n 189: \"SEND.MAIL\",\n 190: \"STANDARD.FONT\",\n 191: \"CONSOLIDATE\",\n 192: \"SORT.SPECIAL\",\n 193: \"GALLERY.3D.AREA\",\n 194: \"GALLERY.3D.COLUMN\",\n 195: \"GALLERY.3D.LINE\",\n 196: \"GALLERY.3D.PIE\",\n 197: \"VIEW.3D\",\n 198: \"GOAL.SEEK\",\n 199: \"WORKGROUP\",\n 200: \"FILL.GROUP\",\n 201: \"UPDATE.LINK\",\n 202: \"PROMOTE\",\n 203: \"DEMOTE\",\n 204: \"SHOW.DETAIL\",\n 206: \"UNGROUP\",\n 207: \"OBJECT.PROPERTIES\",\n 208: \"SAVE.NEW.OBJECT\",\n 209: \"SHARE\",\n 210: \"SHARE.NAME\",\n 211: \"DUPLICATE\",\n 212: \"APPLY.STYLE\",\n 213: \"ASSIGN.TO.OBJECT\",\n 214: \"OBJECT.PROTECTION\",\n 215: \"HIDE.OBJECT\",\n 216: \"SET.EXTRACT\",\n 217: \"CREATE.PUBLISHER\",\n 218: \"SUBSCRIBE.TO\",\n 219: \"ATTRIBUTES\",\n 220: \"SHOW.TOOLBAR\",\n 222: \"PRINT.PREVIEW\",\n 223: \"EDIT.COLOR\",\n 224: \"SHOW.LEVELS\",\n 225: \"FORMAT.MAIN\",\n 226: \"FORMAT.OVERLAY\",\n 227: \"ON.RECALC\",\n 228: \"EDIT.SERIES\",\n 229: \"DEFINE.STYLE\",\n 240: \"LINE.PRINT\",\n 243: \"ENTER.DATA\",\n 249: \"GALLERY.RADAR\",\n 250: \"MERGE.STYLES\",\n 251: \"EDITION.OPTIONS\",\n 252: \"PASTE.PICTURE\",\n 253: \"PASTE.PICTURE.LINK\",\n 254: \"SPELLING\",\n 256: \"ZOOM\",\n 259: \"INSERT.OBJECT\",\n 260: \"WINDOW.MINIMIZE\",\n 265: \"SOUND.NOTE\",\n 266: \"SOUND.PLAY\",\n 267: \"FORMAT.SHAPE\",\n 268: \"EXTEND.POLYGON\",\n 269: \"FORMAT.AUTO\",\n 272: \"GALLERY.3D.BAR\",\n 273: \"GALLERY.3D.SURFACE\",\n 274: \"FILL.AUTO\",\n 276: \"CUSTOMIZE.TOOLBAR\",\n 277: \"ADD.TOOL\",\n 278: \"EDIT.OBJECT\",\n 279: \"ON.DOUBLECLICK\",\n 280: \"ON.ENTRY\",\n 281: \"WORKBOOK.ADD\",\n 282: \"WORKBOOK.MOVE\",\n 283: \"WORKBOOK.COPY\",\n 284: \"WORKBOOK.OPTIONS\",\n 285: \"SAVE.WORKSPACE\",\n 288: \"CHART.WIZARD\",\n 289: \"DELETE.TOOL\",\n 290: \"MOVE.TOOL\",\n 291: \"WORKBOOK.SELECT\",\n 292: \"WORKBOOK.ACTIVATE\",\n 293: \"ASSIGN.TO.TOOL\",\n 295: \"COPY.TOOL\",\n 296: \"RESET.TOOL\",\n 297: \"CONSTRAIN.NUMERIC\",\n 298: \"PASTE.TOOL\",\n 302: \"WORKBOOK.NEW\",\n 305: \"SCENARIO.CELLS\",\n 306: \"SCENARIO.DELETE\",\n 307: \"SCENARIO.ADD\",\n 308: \"SCENARIO.EDIT\",\n 309: \"SCENARIO.SHOW\",\n 310: \"SCENARIO.SHOW.NEXT\",\n 311: \"SCENARIO.SUMMARY\",\n 312: \"PIVOT.TABLE.WIZARD\",\n 313: \"PIVOT.FIELD.PROPERTIES\",\n 314: \"PIVOT.FIELD\",\n 315: \"PIVOT.ITEM\",\n 316: \"PIVOT.ADD.FIELDS\",\n 318: \"OPTIONS.CALCULATION\",\n 319: \"OPTIONS.EDIT\",\n 320: \"OPTIONS.VIEW\",\n 321: \"ADDIN.MANAGER\",\n 322: \"MENU.EDITOR\",\n 323: \"ATTACH.TOOLBARS\",\n 324: \"VBAActivate\",\n 325: \"OPTIONS.CHART\",\n 328: \"VBA.INSERT.FILE\",\n 330: \"VBA.PROCEDURE.DEFINITION\",\n 336: \"ROUTING.SLIP\",\n 338: \"ROUTE.DOCUMENT\",\n 339: \"MAIL.LOGON\",\n 342: \"INSERT.PICTURE\",\n 343: \"EDIT.TOOL\",\n 344: \"GALLERY.DOUGHNUT\",\n 350: \"CHART.TREND\",\n 352: \"PIVOT.ITEM.PROPERTIES\",\n 354: \"WORKBOOK.INSERT\",\n 355: \"OPTIONS.TRANSITION\",\n 356: \"OPTIONS.GENERAL\",\n 370: \"FILTER.ADVANCED\",\n 373: \"MAIL.ADD.MAILER\",\n 374: \"MAIL.DELETE.MAILER\",\n 375: \"MAIL.REPLY\",\n 376: \"MAIL.REPLY.ALL\",\n 377: \"MAIL.FORWARD\",\n 378: \"MAIL.NEXT.LETTER\",\n 379: \"DATA.LABEL\",\n 380: \"INSERT.TITLE\",\n 381: \"FONT.PROPERTIES\",\n 382: \"MACRO.OPTIONS\",\n 383: \"WORKBOOK.HIDE\",\n 384: \"WORKBOOK.UNHIDE\",\n 385: \"WORKBOOK.DELETE\",\n 386: \"WORKBOOK.NAME\",\n 388: \"GALLERY.CUSTOM\",\n 390: \"ADD.CHART.AUTOFORMAT\",\n 391: \"DELETE.CHART.AUTOFORMAT\",\n 392: \"CHART.ADD.DATA\",\n 393: \"AUTO.OUTLINE\",\n 394: \"TAB.ORDER\",\n 395: \"SHOW.DIALOG\",\n 396: \"SELECT.ALL\",\n 397: \"UNGROUP.SHEETS\",\n 398: \"SUBTOTAL.CREATE\",\n 399: \"SUBTOTAL.REMOVE\",\n 400: \"RENAME.OBJECT\",\n 412: \"WORKBOOK.SCROLL\",\n 413: \"WORKBOOK.NEXT\",\n 414: \"WORKBOOK.PREV\",\n 415: \"WORKBOOK.TAB.SPLIT\",\n 416: \"FULL.SCREEN\",\n 417: \"WORKBOOK.PROTECT\",\n 420: \"SCROLLBAR.PROPERTIES\",\n 421: \"PIVOT.SHOW.PAGES\",\n 422: \"TEXT.TO.COLUMNS\",\n 423: \"FORMAT.CHARTTYPE\",\n 424: \"LINK.FORMAT\",\n 425: \"TRACER.DISPLAY\",\n 430: \"TRACER.NAVIGATE\",\n 431: \"TRACER.CLEAR\",\n 432: \"TRACER.ERROR\",\n 433: \"PIVOT.FIELD.GROUP\",\n 434: \"PIVOT.FIELD.UNGROUP\",\n 435: \"CHECKBOX.PROPERTIES\",\n 436: \"LABEL.PROPERTIES\",\n 437: \"LISTBOX.PROPERTIES\",\n 438: \"EDITBOX.PROPERTIES\",\n 439: \"PIVOT.REFRESH\",\n 440: \"LINK.COMBO\",\n 441: \"OPEN.TEXT\",\n 442: \"HIDE.DIALOG\",\n 443: \"SET.DIALOG.FOCUS\",\n 444: \"ENABLE.OBJECT\",\n 445: \"PUSHBUTTON.PROPERTIES\",\n 446: \"SET.DIALOG.DEFAULT\",\n 447: \"FILTER\",\n 448: \"FILTER.SHOW.ALL\",\n 449: \"CLEAR.OUTLINE\",\n 450: \"FUNCTION.WIZARD\",\n 451: \"ADD.LIST.ITEM\",\n 452: \"SET.LIST.ITEM\",\n 453: \"REMOVE.LIST.ITEM\",\n 454: \"SELECT.LIST.ITEM\",\n 455: \"SET.CONTROL.VALUE\",\n 456: \"SAVE.COPY.AS\",\n 458: \"OPTIONS.LISTS.ADD\",\n 459: \"OPTIONS.LISTS.DELETE\",\n 460: \"SERIES.AXES\",\n 461: \"SERIES.X\",\n 462: \"SERIES.Y\",\n 463: \"ERRORBAR.X\",\n 464: \"ERRORBAR.Y\",\n 465: \"FORMAT.CHART\",\n 466: \"SERIES.ORDER\",\n 467: \"MAIL.LOGOFF\",\n 468: \"CLEAR.ROUTING.SLIP\",\n 469: \"APP.ACTIVATE.MICROSOFT\",\n 470: \"MAIL.EDIT.MAILER\",\n 471: \"ON.SHEET\",\n 472: \"STANDARD.WIDTH\",\n 473: \"SCENARIO.MERGE\",\n 474: \"SUMMARY.INFO\",\n 475: \"FIND.FILE\",\n 476: \"ACTIVE.CELL.FONT\",\n 477: \"ENABLE.TIPWIZARD\",\n 478: \"VBA.MAKE.ADDIN\",\n 480: \"INSERTDATATABLE\",\n 481: \"WORKGROUP.OPTIONS\",\n 482: \"MAIL.SEND.MAILER\",\n 485: \"AUTOCORRECT\",\n 489: \"POST.DOCUMENT\",\n 491: \"PICKLIST\",\n 493: \"VIEW.SHOW\",\n 494: \"VIEW.DEFINE\",\n 495: \"VIEW.DELETE\",\n 509: \"SHEET.BACKGROUND\",\n 510: \"INSERT.MAP.OBJECT\",\n 511: \"OPTIONS.MENONO\",\n 517: \"MSOCHECKS\",\n 518: \"NORMAL\",\n 519: \"LAYOUT\",\n 520: \"RM.PRINT.AREA\",\n 521: \"CLEAR.PRINT.AREA\",\n 522: \"ADD.PRINT.AREA\",\n 523: \"MOVE.BRK\",\n 545: \"HIDECURR.NOTE\",\n 546: \"HIDEALL.NOTES\",\n 547: \"DELETE.NOTE\",\n 548: \"TRAVERSE.NOTES\",\n 549: \"ACTIVATE.NOTES\",\n 620: \"PROTECT.REVISIONS\",\n 621: \"UNPROTECT.REVISIONS\",\n 647: \"OPTIONS.ME\",\n 653: \"WEB.PUBLISH\",\n 667: \"NEWWEBQUERY\",\n 673: \"PIVOT.TABLE.CHART\",\n 753: \"OPTIONS.SAVE\",\n 755: \"OPTIONS.SPELL\",\n 808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n 0: \"COUNT\",\n 1: \"IF\",\n 2: \"ISNA\",\n 3: \"ISERROR\",\n 4: \"SUM\",\n 5: \"AVERAGE\",\n 6: \"MIN\",\n 7: \"MAX\",\n 8: \"ROW\",\n 9: \"COLUMN\",\n 10: \"NA\",\n 11: \"NPV\",\n 12: \"STDEV\",\n 13: \"DOLLAR\",\n 14: \"FIXED\",\n 15: \"SIN\",\n 16: \"COS\",\n 17: \"TAN\",\n 18: \"ATAN\",\n 19: \"PI\",\n 20: \"SQRT\",\n 21: \"EXP\",\n 22: \"LN\",\n 23: \"LOG10\",\n 24: \"ABS\",\n 25: \"INT\",\n 26: \"SIGN\",\n 27: \"ROUND\",\n 28: \"LOOKUP\",\n 29: \"INDEX\",\n 30: \"REPT\",\n 31: \"MID\",\n 32: \"LEN\",\n 33: \"VALUE\",\n 34: \"TRUE\",\n 35: \"FALSE\",\n 36: \"AND\",\n 37: \"OR\",\n 38: \"NOT\",\n 39: \"MOD\",\n 40: \"DCOUNT\",\n 41: \"DSUM\",\n 42: \"DAVERAGE\",\n 43: \"DMIN\",\n 44: \"DMAX\",\n 45: \"DSTDEV\",\n 46: \"VAR\",\n 47: \"DVAR\",\n 48: \"TEXT\",\n 49: \"LINEST\",\n 50: \"TREND\",\n 51: \"LOGEST\",\n 52: \"GROWTH\",\n 53: \"GOTO\",\n 54: \"HALT\",\n 55: \"RETURN\",\n 56: \"PV\",\n 57: \"FV\",\n 58: \"NPER\",\n 59: \"PMT\",\n 60: \"RATE\",\n 61: \"MIRR\",\n 62: \"IRR\",\n 63: \"RAND\",\n 64: \"MATCH\",\n 65: \"DATE\",\n 66: \"TIME\",\n 67: \"DAY\",\n 68: \"MONTH\",\n 69: \"YEAR\",\n 70: \"WEEKDAY\",\n 71: \"HOUR\",\n 72: \"MINUTE\",\n 73: \"SECOND\",\n 74: \"NOW\",\n 75: \"AREAS\",\n 76: \"ROWS\",\n 77: \"COLUMNS\",\n 78: \"OFFSET\",\n 79: \"ABSREF\",\n 80: \"RELREF\",\n 81: \"ARGUMENT\",\n 82: \"SEARCH\",\n 83: \"TRANSPOSE\",\n 84: \"ERROR\",\n 85: \"STEP\",\n 86: \"TYPE\",\n 87: \"ECHO\",\n 88: \"SET.NAME\",\n 89: \"CALLER\",\n 90: \"DEREF\",\n 91: \"WINDOWS\",\n 92: \"SERIES\",\n 93: \"DOCUMENTS\",\n 94: \"ACTIVE.CELL\",\n 95: \"SELECTION\",\n 96: \"RESULT\",\n 97: \"ATAN2\",\n 98: \"ASIN\",\n 99: \"ACOS\",\n 100: \"CHOOSE\",\n 101: \"HLOOKUP\",\n 102: \"VLOOKUP\",\n 103: \"LINKS\",\n 104: \"INPUT\",\n 105: \"ISREF\",\n 106: \"GET.FORMULA\",\n 107: \"GET.NAME\",\n 108: \"SET.VALUE\",\n 109: \"LOG\",\n 110: \"EXEC\",\n 111: \"CHAR\",\n 112: \"LOWER\",\n 113: \"UPPER\",\n 114: \"PROPER\",\n 115: \"LEFT\",\n 116: \"RIGHT\",\n 117: \"EXACT\",\n 118: \"TRIM\",\n 119: \"REPLACE\",\n 120: \"SUBSTITUTE\",\n 121: \"CODE\",\n 122: \"NAMES\",\n 123: \"DIRECTORY\",\n 124: \"FIND\",\n 125: \"CELL\",\n 126: \"ISERR\",\n 127: \"ISTEXT\",\n 128: \"ISNUMBER\",\n 129: \"ISBLANK\",\n 130: \"T\",\n 131: \"N\",\n 132: \"FOPEN\",\n 133: \"FCLOSE\",\n 134: \"FSIZE\",\n 135: \"FREADLN\",\n 136: \"FREAD\",\n 137: \"FWRITELN\",\n 138: \"FWRITE\",\n 139: \"FPOS\",\n 140: \"DATEVALUE\",\n 141: \"TIMEVALUE\",\n 142: \"SLN\",\n 143: \"SYD\",\n 144: \"DDB\",\n 145: \"GET.DEF\",\n 146: \"REFTEXT\",\n 147: \"TEXTREF\",\n 148: \"INDIRECT\",\n 149: \"REGISTER\",\n 150: \"CALL\",\n 151: \"ADD.BAR\",\n 152: \"ADD.MENU\",\n 153: \"ADD.COMMAND\",\n 154: \"ENABLE.COMMAND\",\n 155: \"CHECK.COMMAND\",\n 156: \"RENAME.COMMAND\",\n 157: \"SHOW.BAR\",\n 158: \"DELETE.MENU\",\n 159: \"DELETE.COMMAND\",\n 160: \"GET.CHART.ITEM\",\n 161: \"DIALOG.BOX\",\n 162: \"CLEAN\",\n 163: \"MDETERM\",\n 164: \"MINVERSE\",\n 165: \"MMULT\",\n 166: \"FILES\",\n 167: \"IPMT\",\n 168: \"PPMT\",\n 169: \"COUNTA\",\n 170: \"CANCEL.KEY\",\n 171: \"FOR\",\n 172: \"WHILE\",\n 173: \"BREAK\",\n 174: \"NEXT\",\n 175: \"INITIATE\",\n 176: \"REQUEST\",\n 177: \"POKE\",\n 178: \"EXECUTE\",\n 179: \"TERMINATE\",\n 180: \"RESTART\",\n 181: \"HELP\",\n 182: \"GET.BAR\",\n 183: \"PRODUCT\",\n 184: \"FACT\",\n 185: \"GET.CELL\",\n 186: \"GET.WORKSPACE\",\n 187: \"GET.WINDOW\",\n 188: \"GET.DOCUMENT\",\n 189: \"DPRODUCT\",\n 190: \"ISNONTEXT\",\n 191: \"GET.NOTE\",\n 192: \"NOTE\",\n 193: \"STDEVP\",\n 194: \"VARP\",\n 195: \"DSTDEVP\",\n 196: \"DVARP\",\n 197: \"TRUNC\",\n 198: \"ISLOGICAL\",\n 199: \"DCOUNTA\",\n 200: \"DELETE.BAR\",\n 201: \"UNREGISTER\",\n 204: \"USDOLLAR\",\n 205: \"FINDB\",\n 206: \"SEARCHB\",\n 207: \"REPLACEB\",\n 208: \"LEFTB\",\n 209: \"RIGHTB\",\n 210: \"MIDB\",\n 211: \"LENB\",\n 212: \"ROUNDUP\",\n 213: \"ROUNDDOWN\",\n 214: \"ASC\",\n 215: \"DBCS\",\n 216: \"RANK\",\n 219: \"ADDRESS\",\n 220: \"DAYS360\",\n 221: \"TODAY\",\n 222: \"VDB\",\n 223: \"ELSE\",\n 224: \"ELSE.IF\",\n 225: \"END.IF\",\n 226: \"FOR.CELL\",\n 227: \"MEDIAN\",\n 228: \"SUMPRODUCT\",\n 229: \"SINH\",\n 230: \"COSH\",\n 231: \"TANH\",\n 232: \"ASINH\",\n 233: \"ACOSH\",\n 234: \"ATANH\",\n 235: \"DGET\",\n 236: \"CREATE.OBJECT\",\n 237: \"VOLATILE\",\n 238: \"LAST.ERROR\",\n 239: \"CUSTOM.UNDO\",\n 240: \"CUSTOM.REPEAT\",\n 241: \"FORMULA.CONVERT\",\n 242: \"GET.LINK.INFO\",\n 243: \"TEXT.BOX\",\n 244: \"INFO\",\n 245: \"GROUP\",\n 246: \"GET.OBJECT\",\n 247: \"DB\",\n 248: \"PAUSE\",\n 251: \"RESUME\",\n 252: \"FREQUENCY\",\n 253: \"ADD.TOOLBAR\",\n 254: \"DELETE.TOOLBAR\",\n 255: \"User\",\n 256: \"RESET.TOOLBAR\",\n 257: \"EVALUATE\",\n 258: \"GET.TOOLBAR\",\n 259: \"GET.TOOL\",\n 260: \"SPELLING.CHECK\",\n 261: \"ERROR.TYPE\",\n 262: \"APP.TITLE\",\n 263: \"WINDOW.TITLE\",\n 264: \"SAVE.TOOLBAR\",\n 265: \"ENABLE.TOOL\",\n 266: \"PRESS.TOOL\",\n 267: \"REGISTER.ID\",\n 268: \"GET.WORKBOOK\",\n 269: \"AVEDEV\",\n 270: \"BETADIST\",\n 271: \"GAMMALN\",\n 272: \"BETAINV\",\n 273: \"BINOMDIST\",\n 274: \"CHIDIST\",\n 275: \"CHIINV\",\n 276: \"COMBIN\",\n 277: \"CONFIDENCE\",\n 278: \"CRITBINOM\",\n 279: \"EVEN\",\n 280: \"EXPONDIST\",\n 281: \"FDIST\",\n 282: \"FINV\",\n 283: \"FISHER\",\n 284: \"FISHERINV\",\n 285: \"FLOOR\",\n 286: \"GAMMADIST\",\n 287: \"GAMMAINV\",\n 288: \"CEILING\",\n 289: \"HYPGEOMDIST\",\n 290: \"LOGNORMDIST\",\n 291: \"LOGINV\",\n 292: \"NEGBINOMDIST\",\n 293: \"NORMDIST\",\n 294: \"NORMSDIST\",\n 295: \"NORMINV\",\n 296: \"NORMSINV\",\n 297: \"STANDARDIZE\",\n 298: \"ODD\",\n 299: \"PERMUT\",\n 300: \"POISSON\",\n 301: \"TDIST\",\n 302: \"WEIBULL\",\n 303: \"SUMXMY2\",\n 304: \"SUMX2MY2\",\n 305: \"SUMX2PY2\",\n 306: \"CHITEST\",\n 307: \"CORREL\",\n 308: \"COVAR\",\n 309: \"FORECAST\",\n 310: \"FTEST\",\n 311: \"INTERCEPT\",\n 312: \"PEARSON\",\n 313: \"RSQ\",\n 314: \"STEYX\",\n 315: \"SLOPE\",\n 316: \"TTEST\",\n 317: \"PROB\",\n 318: \"DEVSQ\",\n 319: \"GEOMEAN\",\n 320: \"HARMEAN\",\n 321: \"SUMSQ\",\n 322: \"KURT\",\n 323: \"SKEW\",\n 324: \"ZTEST\",\n 325: \"LARGE\",\n 326: \"SMALL\",\n 327: \"QUARTILE\",\n 328: \"PERCENTILE\",\n 329: \"PERCENTRANK\",\n 330: \"MODE\",\n 331: \"TRIMMEAN\",\n 332: \"TINV\",\n 334: \"MOVIE.COMMAND\",\n 335: \"GET.MOVIE\",\n 336: \"CONCATENATE\",\n 337: \"POWER\",\n 338: \"PIVOT.ADD.DATA\",\n 339: \"GET.PIVOT.TABLE\",\n 340: \"GET.PIVOT.FIELD\",\n 341: \"GET.PIVOT.ITEM\",\n 342: \"RADIANS\",\n 343: \"DEGREES\",\n 344: \"SUBTOTAL\",\n 345: \"SUMIF\",\n 346: \"COUNTIF\",\n 347: \"COUNTBLANK\",\n 348: \"SCENARIO.GET\",\n 349: \"OPTIONS.LISTS.GET\",\n 350: \"ISPMT\",\n 351: \"DATEDIF\",\n 352: \"DATESTRING\",\n 353: \"NUMBERSTRING\",\n 354: \"ROMAN\",\n 355: \"OPEN.DIALOG\",\n 356: \"SAVE.DIALOG\",\n 357: \"VIEW.GET\",\n 358: \"GETPIVOTDATA\",\n 359: \"HYPERLINK\",\n 360: \"PHONETIC\",\n 361: \"AVERAGEA\",\n 362: \"MAXA\",\n 363: \"MINA\",\n 364: \"STDEVPA\",\n 365: \"VARPA\",\n 366: \"STDEVA\",\n 367: \"VARA\",\n 368: \"BAHTTEXT\",\n 369: \"THAIDAYOFWEEK\",\n 370: \"THAIDIGIT\",\n 371: \"THAIMONTHOFYEAR\",\n 372: \"THAINUMSOUND\",\n 373: \"THAINUMSTRING\",\n 374: \"THAISTRINGLENGTH\",\n 375: \"ISTHAIDIGIT\",\n 376: \"ROUNDBAHTDOWN\",\n 377: \"ROUNDBAHTUP\",\n 378: \"THAIYEAR\",\n 379: \"RTD\",\n 380: \"CUBEVALUE\",\n 381: \"CUBEMEMBER\",\n 382: \"CUBEMEMBERPROPERTY\",\n 383: \"CUBERANKEDMEMBER\",\n 384: \"HEX2BIN\",\n 385: \"HEX2DEC\",\n 386: \"HEX2OCT\",\n 387: \"DEC2BIN\",\n 388: \"DEC2HEX\",\n 389: \"DEC2OCT\",\n 390: \"OCT2BIN\",\n 391: \"OCT2HEX\",\n 392: \"OCT2DEC\",\n 393: \"BIN2DEC\",\n 394: \"BIN2OCT\",\n 395: \"BIN2HEX\",\n 396: \"IMSUB\",\n 397: \"IMDIV\",\n 398: \"IMPOWER\",\n 399: \"IMABS\",\n 400: \"IMSQRT\",\n 401: \"IMLN\",\n 402: \"IMLOG2\",\n 403: \"IMLOG10\",\n 404: \"IMSIN\",\n 405: \"IMCOS\",\n 406: \"IMEXP\",\n 407: \"IMARGUMENT\",\n 408: \"IMCONJUGATE\",\n 409: \"IMAGINARY\",\n 410: \"IMREAL\",\n 411: \"COMPLEX\",\n 412: \"IMSUM\",\n 413: \"IMPRODUCT\",\n 414: \"SERIESSUM\",\n 415: \"FACTDOUBLE\",\n 416: \"SQRTPI\",\n 417: \"QUOTIENT\",\n 418: \"DELTA\",\n 419: \"GESTEP\",\n 420: \"ISEVEN\",\n 421: \"ISODD\",\n 422: \"MROUND\",\n 423: \"ERF\",\n 424: \"ERFC\",\n 425: \"BESSELJ\",\n 426: \"BESSELK\",\n 427: \"BESSELY\",\n 428: \"BESSELI\",\n 429: \"XIRR\",\n 430: \"XNPV\",\n 431: \"PRICEMAT\",\n 432: \"YIELDMAT\",\n 433: \"INTRATE\",\n 434: \"RECEIVED\",\n 435: \"DISC\",\n 436: \"PRICEDISC\",\n 437: \"YIELDDISC\",\n 438: \"TBILLEQ\",\n 439: \"TBILLPRICE\",\n 440: \"TBILLYIELD\",\n 441: \"PRICE\",\n 442: \"YIELD\",\n 443: \"DOLLARDE\",\n 444: \"DOLLARFR\",\n 445: \"NOMINAL\",\n 446: \"EFFECT\",\n 447: \"CUMPRINC\",\n 448: \"CUMIPMT\",\n 449: \"EDATE\",\n 450: \"EOMONTH\",\n 451: \"YEARFRAC\",\n 452: \"COUPDAYBS\",\n 453: \"COUPDAYS\",\n 454: \"COUPDAYSNC\",\n 455: \"COUPNCD\",\n 456: \"COUPNUM\",\n 457: \"COUPPCD\",\n 458: \"DURATION\",\n 459: \"MDURATION\",\n 460: \"ODDLPRICE\",\n 461: \"ODDLYIELD\",\n 462: \"ODDFPRICE\",\n 463: \"ODDFYIELD\",\n 464: \"RANDBETWEEN\",\n 465: \"WEEKNUM\",\n 466: \"AMORDEGRC\",\n 467: \"AMORLINC\",\n 468: \"CONVERT\",\n 724: \"SHEETJS\",\n 469: \"ACCRINT\",\n 470: \"ACCRINTM\",\n 471: \"WORKDAY\",\n 472: \"NETWORKDAYS\",\n 473: \"GCD\",\n 474: \"MULTINOMIAL\",\n 475: \"LCM\",\n 476: \"FVSCHEDULE\",\n 477: \"CUBEKPIMEMBER\",\n 478: \"CUBESET\",\n 479: \"CUBESETCOUNT\",\n 480: \"IFERROR\",\n 481: \"COUNTIFS\",\n 482: \"SUMIFS\",\n 483: \"AVERAGEIF\",\n 484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n 2: 1,\n 3: 1,\n 10: 0,\n 15: 1,\n 16: 1,\n 17: 1,\n 18: 1,\n 19: 0,\n 20: 1,\n 21: 1,\n 22: 1,\n 23: 1,\n 24: 1,\n 25: 1,\n 26: 1,\n 27: 2,\n 30: 2,\n 31: 3,\n 32: 1,\n 33: 1,\n 34: 0,\n 35: 0,\n 38: 1,\n 39: 2,\n 40: 3,\n 41: 3,\n 42: 3,\n 43: 3,\n 44: 3,\n 45: 3,\n 47: 3,\n 48: 2,\n 53: 1,\n 61: 3,\n 63: 0,\n 65: 3,\n 66: 3,\n 67: 1,\n 68: 1,\n 69: 1,\n 70: 1,\n 71: 1,\n 72: 1,\n 73: 1,\n 74: 0,\n 75: 1,\n 76: 1,\n 77: 1,\n 79: 2,\n 80: 2,\n 83: 1,\n 85: 0,\n 86: 1,\n 89: 0,\n 90: 1,\n 94: 0,\n 95: 0,\n 97: 2,\n 98: 1,\n 99: 1,\n 101: 3,\n 102: 3,\n 105: 1,\n 106: 1,\n 108: 2,\n 111: 1,\n 112: 1,\n 113: 1,\n 114: 1,\n 117: 2,\n 118: 1,\n 119: 4,\n 121: 1,\n 126: 1,\n 127: 1,\n 128: 1,\n 129: 1,\n 130: 1,\n 131: 1,\n 133: 1,\n 134: 1,\n 135: 1,\n 136: 2,\n 137: 2,\n 138: 2,\n 140: 1,\n 141: 1,\n 142: 3,\n 143: 4,\n 144: 4,\n 161: 1,\n 162: 1,\n 163: 1,\n 164: 1,\n 165: 2,\n 172: 1,\n 175: 2,\n 176: 2,\n 177: 3,\n 178: 2,\n 179: 1,\n 184: 1,\n 186: 1,\n 189: 3,\n 190: 1,\n 195: 3,\n 196: 3,\n 197: 1,\n 198: 1,\n 199: 3,\n 201: 1,\n 207: 4,\n 210: 3,\n 211: 1,\n 212: 2,\n 213: 2,\n 214: 1,\n 215: 1,\n 225: 0,\n 229: 1,\n 230: 1,\n 231: 1,\n 232: 1,\n 233: 1,\n 234: 1,\n 235: 3,\n 244: 1,\n 247: 4,\n 252: 2,\n 257: 1,\n 261: 1,\n 271: 1,\n 273: 4,\n 274: 2,\n 275: 2,\n 276: 2,\n 277: 3,\n 278: 3,\n 279: 1,\n 280: 3,\n 281: 3,\n 282: 3,\n 283: 1,\n 284: 1,\n 285: 2,\n 286: 4,\n 287: 3,\n 288: 2,\n 289: 4,\n 290: 3,\n 291: 3,\n 292: 3,\n 293: 4,\n 294: 1,\n 295: 3,\n 296: 1,\n 297: 3,\n 298: 1,\n 299: 2,\n 300: 3,\n 301: 3,\n 302: 4,\n 303: 2,\n 304: 2,\n 305: 2,\n 306: 2,\n 307: 2,\n 308: 2,\n 309: 3,\n 310: 2,\n 311: 2,\n 312: 2,\n 313: 2,\n 314: 2,\n 315: 2,\n 316: 4,\n 325: 2,\n 326: 2,\n 327: 2,\n 328: 2,\n 331: 2,\n 332: 2,\n 337: 2,\n 342: 1,\n 343: 1,\n 346: 2,\n 347: 1,\n 350: 4,\n 351: 3,\n 352: 1,\n 353: 2,\n 360: 1,\n 368: 1,\n 369: 1,\n 370: 1,\n 371: 1,\n 372: 1,\n 373: 1,\n 374: 1,\n 375: 1,\n 376: 1,\n 377: 1,\n 378: 1,\n 382: 3,\n 385: 1,\n 392: 1,\n 393: 1,\n 396: 2,\n 397: 2,\n 398: 2,\n 399: 1,\n 400: 1,\n 401: 1,\n 402: 1,\n 403: 1,\n 404: 1,\n 405: 1,\n 406: 1,\n 407: 1,\n 408: 1,\n 409: 1,\n 410: 1,\n 414: 4,\n 415: 1,\n 416: 1,\n 417: 2,\n 420: 1,\n 421: 1,\n 422: 2,\n 424: 1,\n 425: 2,\n 426: 2,\n 427: 2,\n 428: 2,\n 430: 3,\n 438: 3,\n 439: 3,\n 440: 3,\n 443: 2,\n 444: 2,\n 445: 2,\n 446: 2,\n 447: 6,\n 448: 6,\n 449: 2,\n 450: 2,\n 464: 2,\n 468: 3,\n 476: 2,\n 479: 1,\n 480: 2,\n 65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\tf = f.replace(/\\$'([^']|'')+'/g, function($$) { return $$.slice(1); });\n\tf = f.replace(/\\$([^\\]\\. #$]+)/g, function($$, $1) { return ($1).match(/^([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])?(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})?$/) ? $$ : $1; });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tr = r.replace(/\\$'([^']|'')+'/g, function($$) { return $$.slice(1); });\n\tr = r.replace(/\\$([^\\]\\. #$]+)/g, function($$, $1) { return ($1).match(/^([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])?(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})?$/) ? $$ : $1; });\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/!/,\".\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left == null) margins.left = defs[0];\n\tif(margins.right == null) margins.right = defs[1];\n\tif(margins.top == null) margins.top = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF__load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF__load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = ({}/*:any*/); if(opts.dense) s[\"!data\"] = [];\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref && !(opts && opts.nodim)) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(opts && opts.nodim) refguess.s.c = refguess.s.r = 0;\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '';\n\tfor(var i = 0; i != merges.length; ++i) o += '';\n\treturn o + '';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array*/, rels) {\n\tvar dense = s[\"!data\"] != null;\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_col(C) + encode_row(R);\n\t\t\tif(dense) {\n\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\tif(!s[\"!data\"][R][C]) s[\"!data\"][R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[\"!data\"][R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref); break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/g;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(tag.rightToLeft && parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif((cell.v === undefined || cell.t === \"z\" && !(opts||{}).sheetStubs) && typeof cell.f !== \"string\" && typeof cell.z == \"undefined\") return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = (cell.t == \"z\" || cell.v == null)? \"\" : writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\telse o.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) {\n\t\tcell.l.display = escapexml(vv);\n\t\tws['!links'].push([ref, cell.l]);\n\t}\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array*/ = [], cref/*:?Array*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = s[\"!data\"] != null;\n\tvar rows/*:Array*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden && parsexmlbool(tag.hidden)) { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(!opts.nodim) {\n\t\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\t\t}\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden && parsexmlbool(tag.hidden)) { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1]), true);\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? unescapexml(utf8read(p.v), true) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tvar _r;\n\t\t\tif(opts.nodim) {\n\t\t\t\t_r = decode_cell(tag.r);\n\t\t\t\tif(guess.s.r > _r.r) guess.s.r = _r.r;\n\t\t\t\tif(guess.e.r < _r.r) guess.e.r = _r.r;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\t_r = decode_cell(tag.r);\n\t\t\t\tif(!s[\"!data\"][_r.r]) s[\"!data\"][_r.r] = [];\n\t\t\t\ts[\"!data\"][_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array*/ = [], r/*:Array*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = ws[\"!data\"] != null;\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[\"!data\"][R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\trel.display = l[1].display;\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tvar dense = ws[\"!data\"] != null;\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = dense ? (ws[\"!data\"][caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left) f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tvar data = cell.v == null ? \"\" : String(cell.v);\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(data, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tvar data = cell.v == null ? \"\" : String(cell.v);\n\tif(o == null) o = new_buf(8 + 4 * data.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(data, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\", false], // fObjects\n\t\t[\"scenarios\", false], // fScenarios\n\t\t[\"formatCells\", true], // fFormatCells\n\t\t[\"formatColumns\", true], // fFormatColumns\n\t\t[\"formatRows\", true], // fFormatRows\n\t\t[\"insertColumns\", true], // fInsertColumns\n\t\t[\"insertRows\", true], // fInsertRows\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\n\t\t[\"deleteColumns\", true], // fDeleteColumns\n\t\t[\"deleteRows\", true], // fDeleteRows\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\n\t\t[\"sort\", true], // fSort\n\t\t[\"autoFilter\", true], // fAutoFilter\n\t\t[\"pivotTables\", true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = ({}); if(opts.dense) s[\"!data\"] = [];\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[\"!data\"][R]) s[\"!data\"][R] = []; s[\"!data\"][R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[\"!data\"][R]) s[\"!data\"][R] = []; s[\"!data\"][R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\t\t\tif(!s[\"!data\"][R][C]) s[\"!data\"][R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[\"!data\"][R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_col(C) + encode_row(R);\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[\"!data\"][R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[\"!data\"][R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v == null ? \"\" : String(cell.v)/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = ws[\"!data\"] != null;\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref); break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref) });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array, string, ?string]*/ {\n\tvar col/*:Array*/ = [];\n\tvar num = data.match(/^/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tif(cs[\"!data\"]) {\n\t\t\t\tif(!cs[\"!data\"][i]) cs[\"!data\"][i] = [];\n\t\t\t\tcs[\"!data\"][i][C] = {t:'n', v:n, z:cache[1] };\n\t\t\t} else cs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\n//function write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n//\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n//\t\t'xmlns': XMLNS_main[0],\n//\t\t'xmlns:r': XMLNS.r\n//\t})];\n//\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n//\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n//\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n//\treturn o.join(\"\");\n//}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\n//function write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n//\tvar ba = buf_array();\n//\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n//\t/* [BrtCsProp] */\n//\t/* CSVIEWS */\n//\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n//\t/* [USERCSVIEWS] */\n//\t/* [BrtMargins] */\n//\t/* [BrtCsPageSetup] */\n//\t/* [HEADERFOOTER] */\n//\t/* BrtDrawing */\n//\t/* [BrtLegacyDrawing] */\n//\t/* [BrtLegacyDrawingHF] */\n//\t/* [BrtBkHim] */\n//\t/* [WEBPUBITEMS] */\n//\t/* FRTCHARTSHEET */\n//\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n//\treturn ba.end();\n//}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery', false, \"bool\"],\n\t['autoCompressPictures', true, \"bool\"],\n\t['backupFile', false, \"bool\"],\n\t['checkCompatibility', false, \"bool\"],\n\t['CodeName', ''],\n\t['date1904', false, \"bool\"],\n\t['defaultThemeVersion', 0, \"int\"],\n\t['filterPrivacy', false, \"bool\"],\n\t['hidePivotFieldList', false, \"bool\"],\n\t['promptedSolutions', false, \"bool\"],\n\t['publishItems', false, \"bool\"],\n\t['refreshAllConnections', false, \"bool\"],\n\t['saveExternalLinkValues', true, \"bool\"],\n\t['showBorderUnselectedTables', true, \"bool\"],\n\t['showInkAnnotation', true, \"bool\"],\n\t['showObjects', 'all'],\n\t['showPivotChartFilter', false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab', 0, \"int\"],\n\t['autoFilterDateGrouping', true, \"bool\"],\n\t['firstSheet', 0, \"int\"],\n\t['minimized', false, \"bool\"],\n\t['showHorizontalScroll', true, \"bool\"],\n\t['showSheetTabs', true, \"bool\"],\n\t['showVerticalScroll', true, \"bool\"],\n\t['tabRatio', 600, \"int\"],\n\t['visibility', 'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2 (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\":][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\twb.SheetNames.forEach(function(n, i) {\n\t\tvar ws = wb.Sheets[n];\n\t\tif(!ws || !ws[\"!autofilter\"]) return;\n\t\tvar DN;\n\t\tif(!wb.Workbook) wb.Workbook = {};\n\t\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\t\twb.Workbook.Names.forEach(function(dn) { if(dn.Name == \"_xlnm._FilterDatabase\" && dn.Sheet == i) DN = dn; });\n\t\tvar nn = formula_quote_sheet_name(n) + \"!\" + fix_range(ws[\"!autofilter\"].ref);\n\t\tif(DN) DN.Ref = nn;\n\t\telse wb.Workbook.Names.push({Name: \"_xlnm._FilterDatabase\", Sheet: i, Ref: nn});\n\t});\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '': case '': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '': pass=true; break;\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase ' 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '';\n\t\to[o.length] = \"\";\n\t}\n\n\to[o.length] = \"\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.date1904) flags |= 0x01;\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tvar flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\tif(flags & 0x20) name = \"_xlnm.\" + name;\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula, Flags: flags}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\nfunction write_BrtName(name, wb) {\n\tvar o = new_buf(9);\n\tvar flags = 0;\n\tvar dname = name.Name;\n\tif(XLSLblBuiltIn.indexOf(dname) > -1) { flags |= 0x20; dname = dname.slice(6); }\n\to.write_shift(4, flags); // flags\n\to.write_shift(1, 0); // chKey\n\to.write_shift(4, name.Sheet == null ? 0xFFFFFFFF : name.Sheet);\n\n\tvar arr = [\n\t\to,\n\t\twrite_XLWideString(dname),\n\t\twrite_XLSBNameParsedFormula(name.Ref, wb)\n\t];\n\tif(name.Comment) arr.push(write_XLNullableWideString(name.Comment));\n\telse {\n\t\tvar x = new_buf(4);\n\t\tx.write_shift(4, 0xFFFFFFFF);\n\t\tarr.push(x);\n\t}\n\n\t// if macro (flags & 0x0F):\n\t// write_shift(4, 0xFFFFFFFF);\n\t// write_XLNullableWideString(description)\n\t// write_XLNullableWideString(helpTopic)\n\t// write_shift(4, 0xFFFFFFFF);\n\n\treturn bconcat(arr);\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4, 28800);\n\to.write_shift(4, 17600);\n\to.write_shift(4, 500);\n\to.write_shift(4, idx);\n\to.write_shift(4, idx);\n\tvar flags = 0x78;\n\to.write_shift(1, flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\nfunction write_BRTNAMES(ba, wb) {\n\tif(!wb.Workbook || !wb.Workbook.Names) return;\n\twb.Workbook.Names.forEach(function(name) { try {\n\t\tif(name.Flags & 0x0e) return; // TODO: macro name write\n\t\twrite_record(ba, 0x0027 /* BrtName */, write_BrtName(name, wb));\n\t} catch(e) {\n\t\tconsole.error(\"Could not serialize defined name \" + JSON.stringify(name));\n\t} });\n}\n\nfunction write_SELF_EXTERNS_xlsb(wb) {\n\tvar L = wb.SheetNames.length;\n\tvar o = new_buf(12 * L + 28);\n\to.write_shift(4, L + 2);\n\to.write_shift(4, 0); o.write_shift(4, -2); o.write_shift(4, -2); // workbook-level reference\n\to.write_shift(4, 0); o.write_shift(4, -1); o.write_shift(4, -1); // #REF!...\n\tfor(var i = 0; i < L; ++i) {\n\t\to.write_shift(4, 0); o.write_shift(4, i); o.write_shift(4, i);\n\t}\n\treturn o;\n}\nfunction write_EXTERNALS_xlsb(ba, wb) {\n\twrite_record(ba, 0x0161 /* BrtBeginExternals */);\n\twrite_record(ba, 0x0165 /* BrtSupSelf */);\n\twrite_record(ba, 0x016A /* BrtExternSheet */, write_SELF_EXTERNS_xlsb(wb, 0));\n\twrite_record(ba, 0x0162 /* BrtEndExternals */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\twrite_EXTERNALS_xlsb(ba, wb);\n\tif((wb.Workbook||{}).Names) write_BRTNAMES(ba, wb);\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_prefix_dname(dname) {\n\treturn XLSLblBuiltIn.indexOf(\"_xlnm.\" + dname) > -1 ? \"_xlnm.\" + dname : dname;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array*/ = [], cursheet/*:Worksheet*/ = ({}), sheetname = \"\"; if(opts.dense) cursheet[\"!data\"] = [];\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== void 0) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[\"!data\"][r]) cursheet[\"!data\"][r] = [];\n\t\t\t\t\t\tcursheet[\"!data\"][r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tif(cc > c || rr > r) merges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[\"!data\"][cmd]) cursheet[\"!data\"][cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[\"!data\"][cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = ({}); if(opts.dense) cursheet[\"!data\"] = [];\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF__load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: xlml_prefix_dname(_NamedRange.Name),\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\tout.bookType = \"xlml\";\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(wb/*::, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\tif((((wb||{}).Workbook||{}).WBProps||{}).date1904) return '';\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array*/ = [''];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name.slice(0,6) == \"_xlnm.\" ? n.Name.slice(6) : n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('' + _v + '');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = ws[\"!data\"] != null;\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_col(C) + encode_row(R), cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"
\" + t + \"
\");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\tif(ws[\"!autofilter\"]) o.push('');\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns': XLMLNS.ss,\n\t\t'xmlns:o': XLMLNS.o,\n\t\t'xmlns:x': XLMLNS.x,\n\t\t'xmlns:ss': XLMLNS.ss,\n\t\t'xmlns:dt': XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue 0x003c\n\t- 2.4.59 ContinueBigName 0x043c\n\t- 2.4.60 ContinueFrt 0x0812\n\t- 2.4.61 ContinueFrt11 0x0875\n\t- 2.4.62 ContinueFrt12 0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002F /* FilePass */: case 0x0195 /* FileLock */: case 0x00E1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ({}/*:any*/); if(options.dense) out[\"!data\"] = [];\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[\"!data\"][cell.r]) out[\"!data\"][cell.r] = [];\n\t\t\t\tout[\"!data\"][cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(RecordType) == -1 /* BOF */) break;\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* BOF */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval = 1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ({}/*:any*/); if(options.dense) out[\"!data\"] = [];\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ({}/*:any*/); if(options.dense) out[\"!data\"] = [];\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[\"!data\"][val.r]||[])[val.c]: out[encode_col(val.c) + encode_row(val.r)]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[\"!data\"][_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[\"!data\"][val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[\"!data\"][last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF__load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF__load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF__load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[\"!data\"][rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[\"!data\"][rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[\"!data\"][val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[\"!data\"][val[0].r]) out[\"!data\"][val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[\"!data\"][val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/* --- multiplan 4 records --- */\n\t/*::[*/0x0065/*::]*/: { /* n:\"\", */ }, // one per window\n\t/*::[*/0x0066/*::]*/: { /* n:\"\", */ }, // calc settings\n\t/*::[*/0x0069/*::]*/: { /* n:\"\", */ }, // print header\n\t/*::[*/0x006a/*::]*/: { /* n:\"\", */ }, // print footer\n\t/*::[*/0x006b/*::]*/: { /* n:\"\", */ }, // print settings\n\t/*::[*/0x006d/*::]*/: { /* n:\"\", */ }, // one per window\n\t/*::[*/0x0070/*::]*/: { /* n:\"\", */ }, // includes default col width\n\t/*::[*/0x0072/*::]*/: { /* n:\"\", */ }, // includes selected cell\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, cell.v == null ? \"\" : String(cell.v).slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = ws[\"!data\"] != null;\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t}\n\tvar row = [];\n\tfor(var C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tif(dense) row = ws[\"!data\"][R] || [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar cell = dense ? row[C] : ws[cols[C] + rr];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x0200 /* Dimensions */, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tvar comments = [];\n\tvar row = [];\n\tfor(var C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tif(dense) row = ws[\"!data\"][R] || [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? row[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t\tif(b8 && cell.c) comments.push([ref, cell.c]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\t// if(b8) comments.forEach(function(comment) { write_biff_rec(ba, 0x001c /* Note */, write_NoteSh(comment)); });\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C /* Country */, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC /* SST */, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255). Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar dense = (opts.dense != null) ? opts.dense : DENSE;\n\tvar ws/*:Worksheet*/ = ({}/*:any*/); if(dense) ws[\"!data\"] = [];\n\tstr = str.replace(//g, \"\");\n\tvar mtch/*:any*/ = str.match(/\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(dense) { if(!ws[\"!data\"][R]) ws[\"!data\"][R] = []; ws[\"!data\"][R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array*/ = [];\n\tvar sp = ({}/*:any*/);\n\tvar dense = ws[\"!data\"] != null;\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_col(C) + encode_row(R);\n\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tsp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '' + w + '';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '' + w + '';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"\";\n\treturn preamble + oo.join(\"\") + \"\";\n}\n\nvar HTML_BEGIN = 'SheetJS Table Export';\nvar HTML_END = '';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find
\");\n\tif(mtch.length == 1) {\n\t\tvar w = sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\t\tw.bookType = \"html\";\n\t\treturn w;\n\t}\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\twb.bookType = \"html\";\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\treturn out.join(\"\") + '';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"
\" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar rows/*:HTMLCollection*/ = table.rows;\n\tif(!rows) {\n\t\t/* not an HTML TABLE */\n\t\tthrow \"Unsupported origin when \" + table.tagName + \" is not a TABLE\";\n\t}\n\n\tvar opts = _opts || {};\n\tvar dense = ws[\"!data\"] != null;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array*/ = [], midx = 0;\n\tvar rowinfo/*:Array*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection*/ = (row.cells);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used. Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\" &&\tl.slice(0, 11).toLowerCase() != 'javascript:') o.l = ({ Target: l });\n\t\t\tif(dense) { if(!ws[\"!data\"][R + or_R]) ws[\"!data\"][R + or_R] = []; ws[\"!data\"][R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = ({}/*:any*/); if(opts.dense) ws[\"!data\"] = [];\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\tvar o = sheet_to_workbook(parse_dom_table(table, opts), opts);\n\t//o.bookType = \"dom\"; // TODO: define a type for this\n\treturn o;\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(//g,\" \")\n\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/]*\\/>/g,\"\\t\")\n\t\t.replace(//g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\n/* Note: ODS can stick styles in content.xml or styles.xml, FODS blurs lines */\nfunction parse_ods_styles(d/*:string*/, _opts, _nfm) {\n\tvar number_format_map = _nfm || {};\n\tvar str = xlml_normalize(d);\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\tvar Rn, NFtag, NF = \"\", tNF = \"\", y, etpos = 0, tidx = -1, infmt = false, payload = \"\";\n\twhile((Rn = xlmlregex.exec(str))) {\n\t\tswitch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\t\t/* Number Format Definitions */\n\t\tcase 'number-style': // 16.29.2\n\t\tcase 'currency-style': // 16.29.8\n\t\tcase 'percentage-style': // 16.29.10\n\t\tcase 'date-style': // 16.29.11\n\t\tcase 'time-style': // 16.29.19\n\t\tcase 'text-style': // 16.29.26\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tinfmt = false;\n\t\t\t\tif(NFtag['truncate-on-overflow'] == \"false\") {\n\t\t\t\t\tif(NF.match(/h/)) NF = NF.replace(/h+/, \"[$&]\");\n\t\t\t\t\telse if(NF.match(/m/)) NF = NF.replace(/m+/, \"[$&]\");\n\t\t\t\t\telse if(NF.match(/s/)) NF = NF.replace(/s+/, \"[$&]\");\n\t\t\t\t}\n\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\tNF = \"\";\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tinfmt = true;\n\t\t\t\tNF = \"\";\n\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t} break;\n\n\t\t// LibreOffice bug https://bugs.documentfoundation.org/show_bug.cgi?id=149484\n\t\tcase 'boolean-style': // 16.29.24\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tinfmt = false;\n\t\t\t\tnumber_format_map[NFtag.name] = \"General\";\n\t\t\t\tNF = \"\";\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tinfmt = true;\n\t\t\t\tNF = \"\";\n\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t} break;\n\n\t\t/* Number Format Elements */\n\t\tcase 'boolean': // 16.29.25\n\t\t\tNF += \"General\"; // ODF spec is unfortunately underspecified here\n\t\t\tbreak;\n\n\t\tcase 'text': // 16.29.27\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tpayload = str.slice(tidx, xlmlregex.lastIndex - Rn[0].length);\n\t\t\t\t// NOTE: Excel has a different interpretation of \"%%\" and friends\n\t\t\t\tif(payload == \"%\" && NFtag[0] == ' 16.29.12\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"d\"; break;\n\t\t\t\tcase \"long\": NF += \"dd\"; break;\n\t\t\t\tdefault: NF += \"dd\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'day-of-week': { // 16.29.16\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"ddd\"; break;\n\t\t\t\tcase \"long\": NF += \"dddd\"; break;\n\t\t\t\tdefault: NF += \"ddd\"; break;\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'era': { // 16.29.15 TODO: proper mapping\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"ee\"; break;\n\t\t\t\tcase \"long\": NF += \"eeee\"; break;\n\t\t\t\tdefault: NF += \"eeee\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'hours': { // 16.29.20\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"h\"; break;\n\t\t\t\tcase \"long\": NF += \"hh\"; break;\n\t\t\t\tdefault: NF += \"hh\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'minutes': { // 16.29.21\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"m\"; break;\n\t\t\t\tcase \"long\": NF += \"mm\"; break;\n\t\t\t\tdefault: NF += \"mm\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'month': { // 16.29.13\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tif(y[\"textual\"]) NF += \"mm\";\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"m\"; break;\n\t\t\t\tcase \"long\": NF += \"mm\"; break;\n\t\t\t\tdefault: NF += \"m\"; break;\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'seconds': { // 16.29.22\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"s\"; break;\n\t\t\t\tcase \"long\": NF += \"ss\"; break;\n\t\t\t\tdefault: NF += \"ss\"; break; // TODO: error condition\n\t\t\t}\n\t\t\tif(y[\"decimal-places\"]) NF += \".\" + fill(\"0\", +y[\"decimal-places\"]);\n\t\t} break;\n\n\t\tcase 'year': { // 16.29.14\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"yy\"; break;\n\t\t\t\tcase \"long\": NF += \"yyyy\"; break;\n\t\t\t\tdefault: NF += \"yy\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'am-pm': // 16.29.23\n\t\t\tNF += \"AM/PM\"; // LO autocorrects A/P -> AM/PM\n\t\t\tbreak;\n\n\t\tcase 'week-of-year': // 16.29.17\n\t\tcase 'quarter': // 16.29.18\n\t\t\tconsole.error(\"Excel does not support ODS format token \" + Rn[3]);\n\t\t\tbreak;\n\n\t\tcase 'fill-character': // 16.29.5\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tpayload = str.slice(tidx, xlmlregex.lastIndex - Rn[0].length);\n\t\t\t\t// NOTE: Excel has a different interpretation of \"%%\" and friends\n\t\t\t\tNF += '\"' + payload.replace(/\"/g, '\"\"') + '\"*';\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\ttidx = xlmlregex.lastIndex;\n\t\t\t} break;\n\n\t\tcase 'scientific-number': // 16.29.6\n\t\t\t// TODO: find a mapping for all parameters\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tNF += \"0.\" + fill(\"0\", +y[\"min-decimal-places\"] || +y[\"decimal-places\"] || 2) + fill(\"?\", +y[\"decimal-places\"] - +y[\"min-decimal-places\"] || 0) + \"E\" + (parsexmlbool(y[\"forced-exponent-sign\"]) ? \"+\" : \"\") + fill(\"0\", +y[\"min-exponent-digits\"] || 2);\n\t\t\tbreak;\n\n\t\tcase 'fraction': // 16.29.7\n\t\t\t// TODO: find a mapping for all parameters\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tif(!+y[\"min-integer-digits\"]) NF += \"#\";\n\t\t\telse NF += fill(\"0\", +y[\"min-integer-digits\"]);\n\t\t\tNF += \" \";\n\t\t\tNF += fill(\"?\", +y[\"min-numerator-digits\"] || 1);\n\t\t\tNF += \"/\";\n\t\t\tif(+y[\"denominator-value\"]) NF += y[\"denominator-value\"];\n\t\t\telse NF += fill(\"?\", +y[\"min-denominator-digits\"] || 1);\n\t\t\tbreak;\n\n\t\tcase 'currency-symbol': // 16.29.9\n\t\t\t// TODO: localization with [$-...]\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tNF += '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"';\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\ttidx = xlmlregex.lastIndex;\n\t\t\t} else NF += \"$\";\n\t\t\tbreak;\n\n\t\tcase 'text-properties': // 16.29.29\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch((y[\"color\"]||\"\").toLowerCase().replace(\"#\", \"\")) {\n\t\t\t\tcase \"ff0000\": case \"red\": NF = \"[Red]\" + NF; break;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'text-content': // 16.29.28\n\t\t\tNF += \"@\";\n\t\t\tbreak;\n\n\t\tcase 'map': // 16.3\n\t\t\t// TODO: handle more complex maps\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tif(unescapexml(y[\"condition\"]) == \"value()>=0\") NF = number_format_map[y[\"apply-style-name\"]] + \";\" + NF;\n\t\t\telse console.error(\"ODS number format may be incorrect: \" + y[\"condition\"]);\n\t\t\tbreak;\n\n\t\tcase 'number': // 16.29.3\n\t\t\t// TODO: handle all the attributes\n\t\t\tif(Rn[1]==='/') break;\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\ttNF = \"\";\n\t\t\ttNF += fill(\"0\", +y[\"min-integer-digits\"] || 1);\n\t\t\tif(parsexmlbool(y[\"grouping\"])) tNF = commaify(fill(\"#\", Math.max(0, 4 - tNF.length)) + tNF);\n\t\t\tif(+y[\"min-decimal-places\"] || +y[\"decimal-places\"]) tNF += \".\";\n\t\t\tif(+y[\"min-decimal-places\"]) tNF += fill(\"0\", +y[\"min-decimal-places\"] || 1);\n\t\t\tif(+y[\"decimal-places\"] - (+y[\"min-decimal-places\"]||0)) tNF += fill(\"0\", +y[\"decimal-places\"] - (+y[\"min-decimal-places\"]||0)); // TODO: should this be \"#\" ?\n\t\t\tNF += tNF;\n\t\t\tbreak;\n\n\t\tcase 'embedded-text': // 16.29.4\n\t\t\t// TODO: verify interplay with grouping et al\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tif(etpos == 0) NF += '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"';\n\t\t\t\telse NF = NF.slice(0, etpos) + '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"' + NF.slice(etpos);\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\ttidx = xlmlregex.lastIndex;\n\t\t\t\tetpos = -+parsexmltag(Rn[0], false)[\"position\"] || 0;\n\t\t\t} break;\n\n\t}}\n\treturn number_format_map;\n}\n\nfunction parse_content_xml(d/*:string*/, _opts, _nfm)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar nfidx, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array*/ = [];\n\t\tvar ws = ({}/*:any*/); if(opts.dense) ws[\"!data\"] = [];\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = _nfm || {}, styles = {};\n\t\tvar merges/*:Array*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[], WBProps:{}};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\tvar baddate = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 \n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = ({}/*:any*/); if(opts.dense) ws[\"!data\"] = []; merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 \n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 \n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 \n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[\"!data\"][R]) ws[\"!data\"][R] = []; ws[\"!data\"][R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif(ctag[\"style-name\"] && styles[ctag[\"style-name\"]]) q.z = styles[ctag[\"style-name\"]];\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[\"!data\"][R]) ws[\"!data\"][R] = [];\n\t\t\t\t\t\t\tws[\"!data\"][R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_col(C) + encode_row(R)] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag[\"style-name\"] && styles[ctag[\"style-name\"]]) q.z = styles[ctag[\"style-name\"]];\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']) || (+ctag['boolean-value'] >= 1); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v, WB.WBProps.date1904) - baddate; }\n\t\t\t\t\t\t\tif(!q.z) q.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tif(!q.z) q.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[\"!data\"][R + rpt]) ws[\"!data\"][R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[\"!data\"][R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[\"!data\"][R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 \n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \n\t\t\tcase 'scripts': // 3.12 \n\t\t\tcase 'styles': // TODO \n\t\t\tcase 'font-face-decls': // 3.14 \n\t\t\tcase 'master-styles': // 3.15.4 -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 \n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\n\t\t\tcase 'settings': // TODO: \n\t\t\tcase 'config-item-set': // TODO: \n\t\t\tcase 'config-item-map-indexed': // TODO: \n\t\t\tcase 'config-item-map-entry': // TODO: \n\t\t\tcase 'config-item-map-named': // TODO: \n\t\t\tcase 'shapes': // 9.2.8 \n\t\t\tcase 'frame': // 10.4.2 \n\t\t\tcase 'text-box': // 10.4.3 \n\t\t\tcase 'image': // 10.4.4 \n\t\t\tcase 'data-pilot-tables': // 9.6.2 \n\t\t\tcase 'list-style': // 16.30 \n\t\t\tcase 'form': // 13.13 \n\t\t\tcase 'dde-links': // 9.8 \n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // \n\t\t\tcase 'currency-symbol': // \n\t\t\tcase 'fill-character': // 16.29.5 \n\t\t\t\tbreak;\n\n\t\t\tcase 'text-style': // 16.27.25 \n\t\t\tcase 'boolean-style': // 16.27.23 \n\t\t\tcase 'number-style': // 16.27.2 \n\t\t\tcase 'currency-style': // 16.29.8 \n\t\t\tcase 'percentage-style': // 16.27.9 \n\t\t\tcase 'date-style': // 16.27.10 \n\t\t\tcase 'time-style': // 16.27.18 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tvar xlmlidx = xlmlregex.lastIndex;\n\t\t\t\t\tparse_ods_styles(str.slice(nfidx, xlmlregex.lastIndex), _opts, number_format_map);\n\t\t\t\t\txlmlregex.lastIndex = xlmlidx;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tnfidx = xlmlregex.lastIndex - Rn[0].length;\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 \n\t\t\tcase 'libraries': break; // TODO: \n\t\t\tcase 'automatic-styles': break; // 3.15.3 \n\n\t\t\tcase 'default-style': // TODO: \n\t\t\tcase 'page-layout': break; // TODO: \n\t\t\tcase 'style': { // 16.2 \n\t\t\t\tvar styletag = parsexmltag(Rn[0], false);\n\t\t\t\tif(styletag[\"family\"] == \"table-cell\" && number_format_map[styletag[\"data-style-name\"]]) styles[styletag[\"name\"]] = number_format_map[styletag[\"data-style-name\"]];\n\t\t\t} break;\n\t\t\tcase 'map': break; // 16.3 \n\t\t\tcase 'font-face': break; // 16.21 \n\n\t\t\tcase 'paragraph-properties': break; // 17.6 \n\t\t\tcase 'table-properties': break; // 17.15 \n\t\t\tcase 'table-column-properties': break; // 17.16 \n\t\t\tcase 'table-row-properties': break; // 17.17 \n\t\t\tcase 'table-cell-properties': break; // 17.18 \n\n\t\t\tcase 'number': // 16.27.3 \n\t\t\t\tbreak;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \n\n\t\t\tcase 'day': // 16.27.11 \n\t\t\tcase 'month': // 16.27.12 \n\t\t\tcase 'year': // 16.27.13 \n\t\t\tcase 'era': // 16.27.14 \n\t\t\tcase 'day-of-week': // 16.27.15 \n\t\t\tcase 'week-of-year': // 16.27.16 \n\t\t\tcase 'quarter': // 16.27.17 \n\t\t\tcase 'hours': // 16.27.19 \n\t\t\tcase 'minutes': // 16.27.20 \n\t\t\tcase 'seconds': // 16.27.21 \n\t\t\tcase 'am-pm': // 16.27.22 \n\t\t\t\tbreak;\n\n\t\t\tcase 'boolean': break; // 16.27.24 \n\t\t\tcase 'text': // 16.27.26 \n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 \n\t\t\tcase 'text-properties': break; // 16.27.27 \n\t\t\tcase 'embedded-text': break; // 16.27.4 \n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 \n\t\t\tcase 'table-header-rows': break; // 9.1.7 \n\t\t\tcase 'table-rows': break; // 9.1.12 \n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 \n\t\t\tcase 'table-header-columns': break; // 9.1.11 \n\t\t\tcase 'table-columns': break; // 9.1.12 \n\n\t\t\tcase 'null-date': // 9.4.2 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\tswitch(tag[\"date-value\"]) {\n\t\t\t\t\tcase \"1904-01-01\": WB.WBProps.date1904 = true;\n\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase \"1900-01-01\": baddate = 0;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'graphic-properties': break; // 17.21 \n\t\t\tcase 'calculation-settings': break; // 9.4.1 \n\t\t\tcase 'named-expressions': break; // 9.4.11 \n\t\t\tcase 'label-range': break; // 9.4.9 \n\t\t\tcase 'label-ranges': break; // 9.4.10 \n\t\t\tcase 'named-expression': break; // 9.4.13 \n\t\t\tcase 'sort': break; // 9.4.19 \n\t\t\tcase 'sort-by': break; // 9.4.20 \n\t\t\tcase 'sort-groups': break; // 9.4.22 \n\n\t\t\tcase 'tab': break; // 6.1.4 \n\t\t\tcase 'line-break': break; // 6.1.5 \n\t\t\tcase 'span': break; // 6.1.7 \n\t\t\tcase 'p': case '文本串': // 5.1.3 \n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // \n\t\t\tcase 's': break; // \n\n\t\t\tcase 'database-range': // 9.4.15 \n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 \n\t\t\tcase 'title': case '标题': break; // <*:title> OR \n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 \n\t\t\tcase 'content-validations': break; // 9.4.4 \n\t\t\tcase 'filter': break; // 9.5.2 \n\t\t\tcase 'filter-and': break; // 9.5.3 \n\t\t\tcase 'filter-or': break; // 9.5.4 \n\t\t\tcase 'filter-condition': break; // 9.5.5 \n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \n\t\t\tcase 'page-count': break; // TODO \n\t\t\tcase 'time': break; // TODO \n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \n\t\t\tcase 'property': break; // 13.8 \n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // ',\n\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t'',\n\t\t''\n\t].join(\"\");\n\n\tvar payload = '' + master_styles + '';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\n\n// TODO: find out if anyone actually read the spec. LO has some wild errors\nfunction write_number_format_ods(nf/*:string*/, nfidx/*:string*/)/*:string*/ {\n\tvar type = \"number\", payload = \"\", nopts = { \"style:name\": nfidx }, c = \"\", i = 0;\n\tnf = nf.replace(/\"[$]\"/g, \"$\");\n\t/* TODO: replace with an actual parser based on a real grammar */\n\tj: {\n\t\t// TODO: support style maps\n\t\tif(nf.indexOf(\";\") > -1) {\n\t\t\tconsole.error(\"Unsupported ODS Style Map exported. Using first branch of \" + nf);\n\t\t\tnf = nf.slice(0, nf.indexOf(\";\"));\n\t\t}\n\n\t\tif(nf == \"@\") { type = \"text\"; payload = \"\"; break j; }\n\n\t\t/* currency flag */\n\t\tif(nf.indexOf(/\\$/) > -1) { type = \"currency\"; }\n\n\t\t/* opening string literal */\n\t\tif(nf[i] == '\"') {\n\t\t\tc = \"\";\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\tif(nf[i+1] == \"*\") {\n\t\t\t\ti++;\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t} else {\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t}\n\t\t\tnf = nf.slice(i+1); i = 0;\n\t\t}\n\n\t\t/* fractions */\n\t\tvar t = nf.match(/# (\\?+)\\/(\\?+)/);\n\t\tif(t) { payload += writextag(\"number:fraction\", null, {\"number:min-integer-digits\":0, \"number:min-numerator-digits\": t[1].length, \"number:max-denominator-value\": Math.max(+(t[1].replace(/./g, \"9\")), +(t[2].replace(/./g, \"9\"))) }); break j; }\n\t\tif((t=nf.match(/# (\\?+)\\/(\\d+)/))) { payload += writextag(\"number:fraction\", null, {\"number:min-integer-digits\":0, \"number:min-numerator-digits\": t[1].length, \"number:denominator-value\": +t[2]}); break j; }\n\n\t\t/* percentages */\n\t\tif((t=nf.match(/(\\d+)(|\\.\\d+)%/))) { type = \"percentage\"; payload += writextag(\"number:number\", null, {\"number:decimal-places\": t[2] && t.length - 1 || 0, \"number:min-decimal-places\": t[2] && t.length - 1 || 0, \"number:min-integer-digits\": t[1].length }) + \"%\"; break j; }\n\n\t\t/* datetime */\n\t\tvar has_time = false;\n\t\tif([\"y\",\"m\",\"d\"].indexOf(nf[0]) > -1) {\n\t\t\ttype = \"date\";\n\t\t\tk: for(; i < nf.length; ++i) switch((c = nf[i].toLowerCase())) {\n\t\t\t\tcase \"h\": case \"s\": has_time = true; --i; break k;\n\t\t\t\tcase \"m\":\n\t\t\t\t\tl: for(var h = i+1; h < nf.length; ++h) switch(nf[h]) {\n\t\t\t\t\t\tcase \"y\": case \"d\": break l;\n\t\t\t\t\t\tcase \"h\": case \"s\": has_time = true; --i; break k;\n\t\t\t\t\t}\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"y\": case \"d\":\n\t\t\t\t\twhile((nf[++i]||\"\").toLowerCase() == c[0]) c += c[0]; --i;\n\t\t\t\t\tswitch(c) {\n\t\t\t\t\t\tcase \"y\": case \"yy\": payload += \"\"; break;\n\t\t\t\t\t\tcase \"yyy\": case \"yyyy\": payload += ''; break;\n\t\t\t\t\t\tcase \"mmmmm\": console.error(\"ODS has no equivalent of format |mmmmm|\");\n\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\tcase \"m\": case \"mm\": case \"mmm\": case \"mmmm\":\n\t\t\t\t\t\t\tpayload += '= 3 ? \"true\" : \"false\") + '\"/>';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"d\": case \"dd\": payload += ''; break;\n\t\t\t\t\t\tcase \"ddd\": case \"dddd\": payload += ''; break;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase '\"':\n\t\t\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\t\t\tpayload += '' + escapexml(c.slice(1).replace(/\"\"/g, '\"')) + '';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '/': payload += '' + escapexml(c) + ''; break;\n\t\t\t\tdefault: console.error(\"unrecognized character \" + c + \" in ODF format \" + nf);\n\t\t\t}\n\t\t\tif(!has_time) break j;\n\t\t\tnf = nf.slice(i+1); i = 0;\n\t\t}\n\t\tif(nf.match(/^\\[?[hms]/)) {\n\t\t\tif(type == \"number\") type = \"time\";\n\t\t\tif(nf.match(/\\[/)) {\n\t\t\t\tnf = nf.replace(/[\\[\\]]/g, \"\");\n\t\t\t\tnopts['number:truncate-on-overflow'] = \"false\";\n\t\t\t}\n\t\t\tfor(; i < nf.length; ++i) switch((c = nf[i].toLowerCase())) {\n\t\t\t\tcase \"h\": case \"m\": case \"s\":\n\t\t\t\t\twhile((nf[++i]||\"\").toLowerCase() == c[0]) c += c[0]; --i;\n\t\t\t\t\tswitch(c) {\n\t\t\t\t\t\tcase \"h\": case \"hh\": payload += ''; break;\n\t\t\t\t\t\tcase \"m\": case \"mm\": payload += ''; break;\n\t\t\t\t\t\tcase \"s\": case \"ss\":\n\t\t\t\t\t\t\tif(nf[i+1] == \".\") do { c += nf[i+1]; ++i; } while(nf[i+1] == \"0\");\n\t\t\t\t\t\t\tpayload += ''; break;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase '\"':\n\t\t\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\t\t\tpayload += '' + escapexml(c.slice(1).replace(/\"\"/g, '\"')) + '';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '/': payload += '' + escapexml(c) + ''; break;\n\t\t\t\tcase \"a\":\n\t\t\t\t\tif(nf.slice(i, i+3).toLowerCase() == \"a/p\") { payload += ''; i += 2; break; } // Note: ODF does not support A/P\n\t\t\t\t\tif(nf.slice(i, i+5).toLowerCase() == \"am/pm\") { payload += ''; i += 4; break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: console.error(\"unrecognized character \" + c + \" in ODF format \" + nf);\n\t\t\t}\n\t\t\tbreak j;\n\t\t}\n\n\t\t/* currency flag */\n\t\tif(nf.indexOf(/\\$/) > -1) { type = \"currency\"; }\n\n\t\t/* should be in a char loop */\n\t\tif(nf[0] == \"$\") { payload += '$'; nf = nf.slice(1); i = 0; }\n\t\ti = 0; if(nf[i] == '\"') {\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\tif(nf[i+1] == \"*\") {\n\t\t\t\ti++;\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t} else {\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t}\n\t\t\tnf = nf.slice(i+1); i = 0;\n\t\t}\n\n\t\t/* number TODO: interstitial text e.g. 000)000-0000 */\n\t\tvar np = nf.match(/([#0][0#,]*)(\\.[0#]*|)(E[+]?0*|)/i);\n\t\tif(!np || !np[0]) console.error(\"Could not find numeric part of \" + nf);\n\t\telse {\n\t\t\tvar base = np[1].replace(/,/g, \"\");\n\t\t\tpayload += ' -1 ? ' number:grouping=\"true\"' : \"\") +\n\t\t\t\t(np[2] && ' number:decimal-places=\"' + (np[2].length - 1) + '\"' || ' number:decimal-places=\"0\"') +\n\t\t\t\t(np[3] && np[3].indexOf(\"+\") > -1 ? ' number:forced-exponent-sign=\"true\"' : \"\" ) +\n\t\t\t\t(np[3] ? ' number:min-exponent-digits=\"' + np[3].match(/0+/)[0].length + '\"' : \"\" ) +\n\t\t\t\t'>' +\n\t\t\t\t/* TODO: interstitial text placeholders */\n\t\t\t\t'';\n\t\t\ti = np.index + np[0].length;\n\t\t}\n\n\t\t/* residual text */\n\t\tif(nf[i] == '\"') {\n\t\t\tc = \"\";\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t}\n\t}\n\n\tif(!payload) { console.error(\"Could not generate ODS number format for |\" + nf + \"|\"); return \"\"; }\n\treturn writextag(\"number:\" + type + \"-style\", payload, nopts);\n}\n\nfunction write_names_ods(Names, SheetNames, idx) {\n\tvar scoped = Names.filter(function(name) { return name.Sheet == (idx == -1 ? null : idx); });\n\tif(!scoped.length) return \"\";\n\treturn \" \\n\" + scoped.map(function(name) {\n\t\tvar odsref = csf_to_ods_3D(name.Ref);\n\t\treturn \" \" + writextag(\"table:named-range\", null, {\n\t\t\t\"table:name\": name.Name,\n\t\t\t\"table:cell-range-address\": odsref,\n\t\t\t\"table:base-cell-address\": odsref.replace(/[\\.]?[^\\.]*$/, \".$A$1\")\n\t\t});\n\t}).join(\"\\n\") + \"\\n \\n\";\n}\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/ +/g, function($$){return '';})\n\t\t\t.replace(/\\t/g, \"\")\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\n\t};\n\n\tvar null_cell_xml = ' \\n';\n\tvar covered_cell_xml = ' \\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*/, opts, nfs)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array*/ = [];\n\t\to.push(' \\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push(' \\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[\"!data\"][R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&\")});\n\t\t\t\t}\n\t\t\t\tif(nfs[cell.z]) ct[\"table:style-name\"] = \"ce\" + nfs[cell.z].slice(1);\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push(' \\n');\n\t\t}\n\t\tif((wb.Workbook||{}).Names) o.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, i));\n\t\to.push(' \\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array*/, wb) {\n\t\to.push(' \\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* number formats, table cells, text */\n\t\tvar nfs = {};\n\t\tvar nfi = 69;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tvar dense = (ws[\"!data\"] != null);\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tfor(var R = 0; R <= range.e.r; ++R) for(var C = 0; C <= range.e.c; ++C) {\n\t\t\t\tvar c = dense ? (ws[\"!data\"][R]||[])[C] : ws[encode_cell({r:R,c:C})];\n\t\t\t\tif(!c || !c.z || c.z.toLowerCase() == \"general\") continue;\n\t\t\t\tif(!nfs[c.z]) {\n\t\t\t\t\tvar out = write_number_format_ods(c.z, \"N\" + nfi);\n\t\t\t\t\tif(out) { nfs[c.z] = \"N\" + nfi; ++nfi; o.push(out + \"\\n\"); }\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\to.push(' \\n');\n\t\tkeys(nfs).forEach(function(nf) {\n\t\t\to.push('\\n');\n\t\t});\n\n\t\t/* page-layout */\n\n\t\to.push(' \\n');\n\t\treturn nfs;\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version': \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('\\n');\n\t\t\to.push(write_meta_ods().replace(//, \"\").replace(/<\\/office:document-meta>/, \"\") + \"\\n\");\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('\\n');\n\t\t// o.push(' \\n');\n\t\tvar nfs = write_automatic_styles_ods(o, wb);\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(((wb.Workbook||{}).WBProps||{}).date1904) o.push(' \\n \\n \\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts, nfs));\n\t\tif((wb.Workbook||{}).Names) o.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, -1));\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(opts.bookType == \"fods\") o.push('');\n\t\telse o.push('');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nvar subarray = function() {\n try {\n if (typeof Uint8Array == \"undefined\")\n return \"slice\";\n if (typeof Uint8Array.prototype.subarray == \"undefined\")\n return \"slice\";\n if (typeof Buffer !== \"undefined\") {\n if (typeof Buffer.prototype.subarray == \"undefined\")\n return \"slice\";\n if ((typeof Buffer.from == \"function\" ? Buffer.from([72, 62]) : new Buffer([72, 62])) instanceof Uint8Array)\n return \"subarray\";\n return \"slice\";\n }\n return \"subarray\";\n } catch (e) {\n return \"slice\";\n }\n}();\nfunction u8_to_dataview(array) {\n return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8concat(u8a) {\n var len = 0;\n for (var i = 0; i < u8a.length; ++i)\n len += u8a[i].length;\n var out = new Uint8Array(len);\n var off = 0;\n for (i = 0; i < u8a.length; ++i) {\n var u8 = u8a[i], L = u8.length;\n if (L < 250) {\n for (var j = 0; j < L; ++j)\n out[off++] = u8[j];\n } else {\n out.set(u8, off);\n off += L;\n }\n }\n return out;\n}\nfunction popcnt(x) {\n x -= x >> 1 & 1431655765;\n x = (x & 858993459) + (x >> 2 & 858993459);\n return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n var mantissa = buf[offset + 14] & 1;\n for (var j = offset + 13; j >= offset; --j)\n mantissa = mantissa * 256 + buf[j];\n return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 16;\n var mantissa = value / Math.pow(10, exp - 6176);\n buf[offset + 15] |= exp >> 7;\n buf[offset + 14] |= (exp & 127) << 1;\n for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n buf[offset + i] = mantissa & 255;\n buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n var l = ptr.l;\n var usz = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n usz |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 28);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 35);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 42);\n ++l;\n if (buf[l++] < 128)\n break varint;\n }\n ptr.l = l;\n return usz;\n}\nfunction write_varint49(v) {\n var usz = new Uint8Array(7);\n usz[0] = v & 127;\n var L = 1;\n sz:\n if (v > 127) {\n usz[L - 1] |= 128;\n usz[L] = v >> 7 & 127;\n ++L;\n if (v <= 16383)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 14 & 127;\n ++L;\n if (v <= 2097151)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 21 & 127;\n ++L;\n if (v <= 268435455)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 256 >>> 21 & 127;\n ++L;\n if (v <= 34359738367)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 65536 >>> 21 & 127;\n ++L;\n if (v <= 4398046511103)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 16777216 >>> 21 & 127;\n ++L;\n }\n return usz[subarray](0, L);\n}\nfunction parse_packed_varints(buf) {\n var ptr = { l: 0 };\n var out = [];\n while (ptr.l < buf.length)\n out.push(parse_varint49(buf, ptr));\n return out;\n}\nfunction write_packed_varints(nums) {\n return u8concat(nums.map(function(x) {\n return write_varint49(x);\n }));\n}\nfunction varint_to_i32(buf) {\n var l = 0, i32 = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n i32 |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 28;\n }\n return i32;\n}\nfunction varint_to_u64(buf) {\n var l = 0, lo = buf[l] & 127, hi = 0;\n varint:\n if (buf[l++] >= 128) {\n lo |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n lo |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n lo |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n lo |= (buf[l] & 127) << 28;\n hi = buf[l] >> 4 & 7;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 3;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 10;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 17;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 24;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 31;\n }\n return [lo >>> 0, hi >>> 0];\n}\nfunction parse_shallow(buf) {\n var out = [], ptr = { l: 0 };\n while (ptr.l < buf.length) {\n var off = ptr.l;\n var num = parse_varint49(buf, ptr);\n var type = num & 7;\n num = num / 8 | 0;\n var data;\n var l = ptr.l;\n switch (type) {\n case 0:\n {\n while (buf[l++] >= 128)\n ;\n data = buf[subarray](ptr.l, l);\n ptr.l = l;\n }\n break;\n case 1:\n {\n data = buf[subarray](l, l + 8);\n ptr.l = l + 8;\n }\n break;\n case 2:\n {\n var len = parse_varint49(buf, ptr);\n data = buf[subarray](ptr.l, ptr.l + len);\n ptr.l += len;\n }\n break;\n case 5:\n {\n data = buf[subarray](l, l + 4);\n ptr.l = l + 4;\n }\n break;\n default:\n throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n }\n var v = { data: data, type: type };\n if (out[num] == null)\n out[num] = [];\n out[num].push(v);\n }\n return out;\n}\nfunction write_shallow(proto) {\n var out = [];\n proto.forEach(function(field, idx) {\n if (idx == 0)\n return;\n field.forEach(function(item) {\n if (!item.data)\n return;\n out.push(write_varint49(idx * 8 + item.type));\n if (item.type == 2)\n out.push(write_varint49(item.data.length));\n out.push(item.data);\n });\n });\n return u8concat(out);\n}\nfunction mappa(data, cb) {\n return (data == null ? void 0 : data.map(function(d) {\n return cb(d.data);\n })) || [];\n}\nfunction parse_iwa_file(buf) {\n var _a;\n var out = [], ptr = { l: 0 };\n while (ptr.l < buf.length) {\n var len = parse_varint49(buf, ptr);\n var ai = parse_shallow(buf[subarray](ptr.l, ptr.l + len));\n ptr.l += len;\n var res = {\n id: varint_to_i32(ai[1][0].data),\n messages: []\n };\n ai[2].forEach(function(b) {\n var mi = parse_shallow(b.data);\n var fl = varint_to_i32(mi[3][0].data);\n res.messages.push({\n meta: mi,\n data: buf[subarray](ptr.l, ptr.l + fl)\n });\n ptr.l += fl;\n });\n if ((_a = ai[3]) == null ? void 0 : _a[0])\n res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n out.push(res);\n }\n return out;\n}\nfunction write_iwa_file(ias) {\n var bufs = [];\n ias.forEach(function(ia) {\n var ai = [\n [],\n [{ data: write_varint49(ia.id), type: 0 }],\n []\n ];\n if (ia.merge != null)\n ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n var midata = [];\n ia.messages.forEach(function(mi) {\n midata.push(mi.data);\n mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n });\n var aipayload = write_shallow(ai);\n bufs.push(write_varint49(aipayload.length));\n bufs.push(aipayload);\n midata.forEach(function(mid) {\n return bufs.push(mid);\n });\n });\n return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n if (type != 0)\n throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n var ptr = { l: 0 };\n var usz = parse_varint49(buf, ptr);\n var chunks = [];\n var l = ptr.l;\n while (l < buf.length) {\n var tag = buf[l] & 3;\n if (tag == 0) {\n var len = buf[l++] >> 2;\n if (len < 60)\n ++len;\n else {\n var c = len - 59;\n len = buf[l];\n if (c > 1)\n len |= buf[l + 1] << 8;\n if (c > 2)\n len |= buf[l + 2] << 16;\n if (c > 3)\n len |= buf[l + 3] << 24;\n len >>>= 0;\n len++;\n l += c;\n }\n chunks.push(buf[subarray](l, l + len));\n l += len;\n continue;\n } else {\n var offset = 0, length = 0;\n if (tag == 1) {\n length = (buf[l] >> 2 & 7) + 4;\n offset = (buf[l++] & 224) << 3;\n offset |= buf[l++];\n } else {\n length = (buf[l++] >> 2) + 1;\n if (tag == 2) {\n offset = buf[l] | buf[l + 1] << 8;\n l += 2;\n } else {\n offset = (buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16 | buf[l + 3] << 24) >>> 0;\n l += 4;\n }\n }\n if (offset == 0)\n throw new Error(\"Invalid offset 0\");\n var j = chunks.length - 1, off = offset;\n while (j >= 0 && off >= chunks[j].length) {\n off -= chunks[j].length;\n --j;\n }\n if (j < 0) {\n if (off == 0)\n off = chunks[j = 0].length;\n else\n throw new Error(\"Invalid offset beyond length\");\n }\n if (length < off)\n chunks.push(chunks[j][subarray](chunks[j].length - off, chunks[j].length - off + length));\n else {\n if (off > 0) {\n chunks.push(chunks[j][subarray](chunks[j].length - off));\n length -= off;\n }\n ++j;\n while (length >= chunks[j].length) {\n chunks.push(chunks[j]);\n length -= chunks[j].length;\n ++j;\n }\n if (length)\n chunks.push(chunks[j][subarray](0, length));\n }\n if (chunks.length > 25)\n chunks = [u8concat(chunks)];\n }\n }\n var clen = 0;\n for (var u8i = 0; u8i < chunks.length; ++u8i)\n clen += chunks[u8i].length;\n if (clen != usz)\n throw new Error(\"Unexpected length: \".concat(clen, \" != \").concat(usz));\n return chunks;\n}\nfunction decompress_iwa_file(buf) {\n if (Array.isArray(buf))\n buf = new Uint8Array(buf);\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var t = buf[l++];\n var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n l += 3;\n out.push.apply(out, parse_snappy_chunk(t, buf[subarray](l, l + len)));\n l += len;\n }\n if (l !== buf.length)\n throw new Error(\"data is not a valid framed stream!\");\n return out.length == 1 ? out[0] : u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var c = Math.min(buf.length - l, 268435455);\n var frame = new Uint8Array(4);\n out.push(frame);\n var usz = write_varint49(c);\n var L = usz.length;\n out.push(usz);\n if (c <= 60) {\n L++;\n out.push(new Uint8Array([c - 1 << 2]));\n } else if (c <= 256) {\n L += 2;\n out.push(new Uint8Array([240, c - 1 & 255]));\n } else if (c <= 65536) {\n L += 3;\n out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n } else if (c <= 16777216) {\n L += 4;\n out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n } else if (c <= 4294967296) {\n L += 5;\n out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n }\n out.push(buf[subarray](l, l + c));\n L += c;\n frame[0] = 0;\n frame[1] = L & 255;\n frame[2] = L >> 8 & 255;\n frame[3] = L >> 16 & 255;\n l += c;\n }\n return u8concat(out);\n}\nvar numbers_lut_new = function() {\n return { sst: [], rsst: [], ofmt: [], nfmt: [] };\n};\nfunction numbers_format_cell(cell, t, flags, ofmt, nfmt) {\n var _a, _b, _c, _d;\n var ctype = t & 255, ver = t >> 8;\n var fmt = ver >= 5 ? nfmt : ofmt;\n dur:\n if (flags & (ver > 4 ? 8 : 4) && cell.t == \"n\" && ctype == 7) {\n var dstyle = ((_a = fmt[7]) == null ? void 0 : _a[0]) ? varint_to_i32(fmt[7][0].data) : -1;\n if (dstyle == -1)\n break dur;\n var dmin = ((_b = fmt[15]) == null ? void 0 : _b[0]) ? varint_to_i32(fmt[15][0].data) : -1;\n var dmax = ((_c = fmt[16]) == null ? void 0 : _c[0]) ? varint_to_i32(fmt[16][0].data) : -1;\n var auto = ((_d = fmt[40]) == null ? void 0 : _d[0]) ? varint_to_i32(fmt[40][0].data) : -1;\n var d = cell.v, dd = d;\n autodur:\n if (auto) {\n if (d == 0) {\n dmin = dmax = 2;\n break autodur;\n }\n if (d >= 604800)\n dmin = 1;\n else if (d >= 86400)\n dmin = 2;\n else if (d >= 3600)\n dmin = 4;\n else if (d >= 60)\n dmin = 8;\n else if (d >= 1)\n dmin = 16;\n else\n dmin = 32;\n if (Math.floor(d) != d)\n dmax = 32;\n else if (d % 60)\n dmax = 16;\n else if (d % 3600)\n dmax = 8;\n else if (d % 86400)\n dmax = 4;\n else if (d % 604800)\n dmax = 2;\n if (dmax < dmin)\n dmax = dmin;\n }\n if (dmin == -1 || dmax == -1)\n break dur;\n var dstr = [], zstr = [];\n if (dmin == 1) {\n dd = d / 604800;\n if (dmax == 1) {\n zstr.push('d\"d\"');\n } else {\n dd |= 0;\n d -= 604800 * dd;\n }\n dstr.push(dd + (dstyle == 2 ? \" week\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"w\" : \"\"));\n }\n if (dmin <= 2 && dmax >= 2) {\n dd = d / 86400;\n if (dmax > 2) {\n dd |= 0;\n d -= 86400 * dd;\n }\n zstr.push('d\"d\"');\n dstr.push(dd + (dstyle == 2 ? \" day\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"d\" : \"\"));\n }\n if (dmin <= 4 && dmax >= 4) {\n dd = d / 3600;\n if (dmax > 4) {\n dd |= 0;\n d -= 3600 * dd;\n }\n zstr.push((dmin >= 4 ? \"[h]\" : \"h\") + '\"h\"');\n dstr.push(dd + (dstyle == 2 ? \" hour\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"h\" : \"\"));\n }\n if (dmin <= 8 && dmax >= 8) {\n dd = d / 60;\n if (dmax > 8) {\n dd |= 0;\n d -= 60 * dd;\n }\n zstr.push((dmin >= 8 ? \"[m]\" : \"m\") + '\"m\"');\n if (dstyle == 0)\n dstr.push((dmin == 8 && dmax == 8 || dd >= 10 ? \"\" : \"0\") + dd);\n else\n dstr.push(dd + (dstyle == 2 ? \" minute\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"m\" : \"\"));\n }\n if (dmin <= 16 && dmax >= 16) {\n dd = d;\n if (dmax > 16) {\n dd |= 0;\n d -= dd;\n }\n zstr.push((dmin >= 16 ? \"[s]\" : \"s\") + '\"s\"');\n if (dstyle == 0)\n dstr.push((dmax == 16 && dmin == 16 || dd >= 10 ? \"\" : \"0\") + dd);\n else\n dstr.push(dd + (dstyle == 2 ? \" second\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"s\" : \"\"));\n }\n if (dmax >= 32) {\n dd = Math.round(1e3 * d);\n if (dmin < 32)\n zstr.push('.000\"ms\"');\n if (dstyle == 0)\n dstr.push((dd >= 100 ? \"\" : dd >= 10 ? \"0\" : \"00\") + dd);\n else\n dstr.push(dd + (dstyle == 2 ? \" millisecond\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"ms\" : \"\"));\n }\n cell.w = dstr.join(dstyle == 0 ? \":\" : \" \");\n cell.z = zstr.join(dstyle == 0 ? '\":\"' : \" \");\n if (dstyle == 0)\n cell.w = cell.w.replace(/:(\\d\\d\\d)$/, \".$1\");\n }\n}\nfunction parse_old_storage(buf, lut, v) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var ridx = -1, sidx = -1, zidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n var doff = v > 1 ? 12 : 8;\n if (flags & 2) {\n zidx = dv.getUint32(doff, true);\n doff += 4;\n }\n doff += popcnt(flags & (v > 1 ? 3468 : 396)) * 4;\n if (flags & 512) {\n ridx = dv.getUint32(doff, true);\n doff += 4;\n }\n doff += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n if (flags & 16) {\n sidx = dv.getUint32(doff, true);\n doff += 4;\n }\n if (flags & 32) {\n ieee = dv.getFloat64(doff, true);\n doff += 8;\n }\n if (flags & 64) {\n dt.setTime(dt.getTime() + dv.getFloat64(doff, true) * 1e3);\n doff += 8;\n }\n if (v > 1) {\n flags = dv.getUint32(8, true) >>> 16;\n if (flags & 255) {\n if (zidx == -1)\n zidx = dv.getUint32(doff, true);\n doff += 4;\n }\n }\n var ret;\n var t = buf[v >= 4 ? 1 : 2];\n switch (t) {\n case 0:\n return void 0;\n case 2:\n ret = { t: \"n\", v: ieee };\n break;\n case 3:\n ret = { t: \"s\", v: lut.sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: lut.rsst[ridx] };\n else\n throw new Error(\"Unsupported cell type \".concat(buf[subarray](0, 4)));\n }\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[subarray](0, 4)));\n }\n if (zidx > -1)\n numbers_format_cell(ret, t | v << 8, flags, lut.ofmt[zidx], lut.nfmt[zidx]);\n if (t == 7)\n ret.v /= 86400;\n return ret;\n}\nfunction parse_new_storage(buf, lut) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var fields = dv.getUint32(8, true);\n var doff = 12;\n var ridx = -1, sidx = -1, zidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n if (fields & 1) {\n d128 = readDecimal128LE(buf, doff);\n doff += 16;\n }\n if (fields & 2) {\n ieee = dv.getFloat64(doff, true);\n doff += 8;\n }\n if (fields & 4) {\n dt.setTime(dt.getTime() + dv.getFloat64(doff, true) * 1e3);\n doff += 8;\n }\n if (fields & 8) {\n sidx = dv.getUint32(doff, true);\n doff += 4;\n }\n if (fields & 16) {\n ridx = dv.getUint32(doff, true);\n doff += 4;\n }\n var ret;\n var t = buf[1];\n switch (t) {\n case 0:\n return void 0;\n case 2:\n ret = { t: \"n\", v: d128 };\n break;\n case 3:\n ret = { t: \"s\", v: lut.sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n ret = { t: \"s\", v: lut.rsst[ridx] };\n break;\n case 10:\n ret = { t: \"n\", v: d128 };\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(fields & 31, \" : \").concat(buf[subarray](0, 4)));\n }\n doff += popcnt(fields & 8160) * 4;\n if (fields & 516096) {\n if (zidx == -1)\n zidx = dv.getUint32(doff, true);\n doff += 4;\n }\n if (zidx > -1)\n numbers_format_cell(ret, t | 5 << 8, fields >> 13, lut.ofmt[zidx], lut.nfmt[zidx]);\n if (t == 7)\n ret.v /= 86400;\n return ret;\n}\nfunction write_new_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 5;\n switch (cell.t) {\n case \"n\":\n out[1] = 2;\n writeDecimal128LE(out, l, cell.v);\n flags |= 1;\n l += 16;\n break;\n case \"b\":\n out[1] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 2;\n l += 8;\n break;\n case \"s\":\n var s = cell.v == null ? \"\" : String(cell.v);\n var isst = sst.indexOf(s);\n if (isst == -1)\n sst[isst = sst.length] = s;\n out[1] = 3;\n dv.setUint32(l, isst, true);\n flags |= 8;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out[subarray](0, l);\n}\nfunction write_old_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 4;\n switch (cell.t) {\n case \"n\":\n out[2] = 2;\n dv.setFloat64(l, cell.v, true);\n flags |= 32;\n l += 8;\n break;\n case \"b\":\n out[2] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 32;\n l += 8;\n break;\n case \"s\":\n var s = cell.v == null ? \"\" : String(cell.v);\n var isst = sst.indexOf(s);\n if (isst == -1)\n sst[isst = sst.length] = s;\n out[2] = 3;\n dv.setUint32(l, isst, true);\n flags |= 16;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out[subarray](0, l);\n}\nfunction parse_cell_storage(buf, lut) {\n switch (buf[0]) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n return parse_old_storage(buf, lut, buf[0]);\n case 5:\n return parse_new_storage(buf, lut);\n default:\n throw new Error(\"Unsupported payload version \".concat(buf[0]));\n }\n}\nfunction parse_TSP_Reference(buf) {\n var pb = parse_shallow(buf);\n return varint_to_i32(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n return write_shallow([\n [],\n [{ type: 0, data: write_varint49(idx) }]\n ]);\n}\nfunction numbers_add_oref(iwa, ref) {\n var _a;\n var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];\n var orefidx = orefs.indexOf(ref);\n if (orefidx == -1) {\n orefs.push(ref);\n iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];\n }\n}\nfunction numbers_del_oref(iwa, ref) {\n var _a;\n var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];\n iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs.filter(function(r) {\n return r != ref;\n })) }];\n}\nfunction parse_TST_TableDataList(M, root) {\n var pb = parse_shallow(root.data);\n var type = varint_to_i32(pb[1][0].data);\n var entries = pb[3];\n var data = [];\n (entries || []).forEach(function(entry) {\n var le = parse_shallow(entry.data);\n if (!le[1])\n return;\n var key = varint_to_i32(le[1][0].data) >>> 0;\n switch (type) {\n case 1:\n data[key] = u8str(le[3][0].data);\n break;\n case 8:\n {\n var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n var rtp = parse_shallow(rt.data);\n var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n var mtype = varint_to_i32(rtpref.meta[1][0].data);\n if (mtype != 2001)\n throw new Error(\"2000 unexpected reference to \".concat(mtype));\n var tswpsa = parse_shallow(rtpref.data);\n data[key] = tswpsa[3].map(function(x) {\n return u8str(x.data);\n }).join(\"\");\n }\n break;\n case 2:\n data[key] = parse_shallow(le[6][0].data);\n break;\n default:\n throw type;\n }\n });\n return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n var pb = parse_shallow(u8);\n var R = varint_to_i32(pb[1][0].data) >>> 0;\n var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n var used_storage_u8, used_storage;\n if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n } else\n throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n var width = wide_offsets ? 4 : 1;\n var used_storage_offsets = u8_to_dataview(used_storage_u8);\n var offsets = [];\n for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n var off = used_storage_offsets.getUint16(C * 2, true);\n if (off < 65535)\n offsets.push([C, off]);\n }\n if (offsets.length != cnt)\n throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n var cells = [];\n for (C = 0; C < offsets.length - 1; ++C)\n cells[offsets[C][0]] = used_storage[subarray](offsets[C][1] * width, offsets[C + 1][1] * width);\n if (offsets.length >= 1)\n cells[offsets[offsets.length - 1][0]] = used_storage[subarray](offsets[offsets.length - 1][1] * width);\n return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var storage = -1;\n if ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) {\n if (varint_to_i32(pb[7][0].data) >>> 0)\n storage = 1;\n else\n storage = 0;\n }\n var ri = mappa(pb[5], function(u8) {\n return parse_TST_TileRowInfo(u8, storage);\n });\n return {\n nrows: varint_to_i32(pb[4][0].data) >>> 0,\n data: ri.reduce(function(acc, x) {\n if (!acc[x.R])\n acc[x.R] = [];\n x.cells.forEach(function(cell, C) {\n if (acc[x.R][C])\n throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n acc[x.R][C] = cell;\n });\n return acc;\n }, [])\n };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n var _a, _b, _c, _d, _e, _f;\n var pb = parse_shallow(root.data);\n var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n if (range.e.r < 0)\n throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n if (range.e.c < 0)\n throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n ws[\"!ref\"] = encode_range(range);\n var dense = ws[\"!data\"] != null, dws = ws;\n var store = parse_shallow(pb[4][0].data);\n var lut = numbers_lut_new();\n if ((_a = store[4]) == null ? void 0 : _a[0])\n lut.sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n if ((_b = store[11]) == null ? void 0 : _b[0])\n lut.ofmt = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[11][0].data)][0]);\n if ((_c = store[17]) == null ? void 0 : _c[0])\n lut.rsst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]);\n if ((_d = store[22]) == null ? void 0 : _d[0])\n lut.nfmt = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[22][0].data)][0]);\n var tile = parse_shallow(store[3][0].data);\n var _R = 0;\n tile[1].forEach(function(t) {\n var tl = parse_shallow(t.data);\n var ref2 = M[parse_TSP_Reference(tl[2][0].data)][0];\n var mtype2 = varint_to_i32(ref2.meta[1][0].data);\n if (mtype2 != 6002)\n throw new Error(\"6001 unexpected reference to \".concat(mtype2));\n var _tile = parse_TST_Tile(M, ref2);\n _tile.data.forEach(function(row, R) {\n row.forEach(function(buf, C) {\n var res = parse_cell_storage(buf, lut);\n if (res) {\n if (dense) {\n if (!dws[\"!data\"][_R + R])\n dws[\"!data\"][_R + R] = [];\n dws[\"!data\"][_R + R][C] = res;\n } else {\n ws[encode_col(C) + encode_row(_R + R)] = res;\n }\n }\n });\n });\n _R += _tile.nrows;\n });\n if ((_e = store[13]) == null ? void 0 : _e[0]) {\n var ref = M[parse_TSP_Reference(store[13][0].data)][0];\n var mtype = varint_to_i32(ref.meta[1][0].data);\n if (mtype != 6144)\n throw new Error(\"Expected merge type 6144, found \".concat(mtype));\n ws[\"!merges\"] = (_f = parse_shallow(ref.data)) == null ? void 0 : _f[1].map(function(pi) {\n var merge = parse_shallow(pi.data);\n var origin = u8_to_dataview(parse_shallow(merge[1][0].data)[1][0].data), size = u8_to_dataview(parse_shallow(merge[2][0].data)[1][0].data);\n return {\n s: { r: origin.getUint16(0, true), c: origin.getUint16(2, true) },\n e: {\n r: origin.getUint16(0, true) + size.getUint16(0, true) - 1,\n c: origin.getUint16(2, true) + size.getUint16(2, true) - 1\n }\n };\n });\n }\n}\nfunction parse_TST_TableInfoArchive(M, root, opts) {\n var pb = parse_shallow(root.data);\n var out = { \"!ref\": \"A1\" };\n if (opts == null ? void 0 : opts.dense)\n out[\"!data\"] = [];\n var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n if (mtype != 6001)\n throw new Error(\"6000 unexpected reference to \".concat(mtype));\n parse_TST_TableModelArchive(M, tableref[0], out);\n return out;\n}\nfunction parse_TN_SheetArchive(M, root, opts) {\n var _a;\n var pb = parse_shallow(root.data);\n var out = {\n name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n sheets: []\n };\n var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n shapeoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 6e3)\n out.sheets.push(parse_TST_TableInfoArchive(M, m, opts));\n });\n });\n return out;\n}\nfunction parse_TN_DocumentArchive(M, root, opts) {\n var _a;\n var out = book_new();\n var pb = parse_shallow(root.data);\n if ((_a = pb[2]) == null ? void 0 : _a[0])\n throw new Error(\"Keynote presentations are not supported\");\n var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n sheetoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 2) {\n var root2 = parse_TN_SheetArchive(M, m, opts);\n root2.sheets.forEach(function(sheet, idx) {\n book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n });\n }\n });\n });\n if (out.SheetNames.length == 0)\n throw new Error(\"Empty NUMBERS file\");\n out.bookType = \"numbers\";\n return out;\n}\nfunction parse_numbers_iwa(cfb, opts) {\n var _a, _b, _c, _d, _e, _f, _g;\n var M = {}, indices = [];\n cfb.FullPaths.forEach(function(p) {\n if (p.match(/\\.iwpv2/))\n throw new Error(\"Unsupported password protection\");\n });\n cfb.FileIndex.forEach(function(s) {\n if (!s.name.match(/\\.iwa$/))\n return;\n if (s.content[0] != 0)\n return;\n var o;\n try {\n o = decompress_iwa_file(s.content);\n } catch (e) {\n return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n }\n var packets;\n try {\n packets = parse_iwa_file(o);\n } catch (e) {\n return console.log(\"## \" + (e.message || e));\n }\n packets.forEach(function(packet) {\n M[packet.id] = packet.messages;\n indices.push(packet.id);\n });\n });\n if (!indices.length)\n throw new Error(\"File has no messages\");\n if (((_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0].meta) == null ? void 0 : _b[1]) == null ? void 0 : _c[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)\n throw new Error(\"Pages documents are not supported\");\n var docroot = ((_g = (_f = (_e = (_d = M == null ? void 0 : M[1]) == null ? void 0 : _d[0]) == null ? void 0 : _e.meta) == null ? void 0 : _f[1]) == null ? void 0 : _g[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n if (!docroot)\n indices.forEach(function(idx) {\n M[idx].forEach(function(iwam) {\n var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n if (mtype == 1) {\n if (!docroot)\n docroot = iwam;\n else\n throw new Error(\"Document has multiple roots\");\n }\n });\n });\n if (!docroot)\n throw new Error(\"Cannot find Document root\");\n return parse_TN_DocumentArchive(M, docroot, opts);\n}\nfunction write_TST_TileRowInfo(data, SST, wide) {\n var _a, _b;\n var tri = [\n [],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 2, data: new Uint8Array([]) }],\n [{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {\n return 255;\n })) }],\n [{ type: 0, data: write_varint49(5) }],\n [{ type: 2, data: new Uint8Array([]) }],\n [{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {\n return 255;\n })) }],\n [{ type: 0, data: write_varint49(1) }]\n ];\n if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n throw \"Mutation only works on post-BNC storages!\";\n var cnt = 0;\n if (tri[7][0].data.length < 2 * data.length) {\n var new_7 = new Uint8Array(2 * data.length);\n new_7.set(tri[7][0].data);\n tri[7][0].data = new_7;\n }\n if (tri[4][0].data.length < 2 * data.length) {\n var new_4 = new Uint8Array(2 * data.length);\n new_4.set(tri[4][0].data);\n tri[4][0].data = new_4;\n }\n var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n var width = wide ? 4 : 1;\n for (var C = 0; C < data.length; ++C) {\n if (data[C] == null) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535);\n continue;\n }\n dv.setUint16(C * 2, last_offset / width, true);\n _dv.setUint16(C * 2, _last_offset / width, true);\n var celload, _celload;\n switch (typeof data[C]) {\n case \"string\":\n celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n break;\n case \"number\":\n celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n break;\n case \"boolean\":\n celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n break;\n default:\n if (data[C] instanceof Date) {\n celload = write_new_storage({ t: \"s\", v: data[C].toISOString() }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C].toISOString() }, SST);\n break;\n }\n throw new Error(\"Unsupported value \" + data[C]);\n }\n cell_storage.push(celload);\n last_offset += celload.length;\n {\n _cell_storage.push(_celload);\n _last_offset += _celload.length;\n }\n ++cnt;\n }\n tri[2][0].data = write_varint49(cnt);\n tri[5][0].data = write_varint49(5);\n for (; C < tri[7][0].data.length / 2; ++C) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535, true);\n }\n tri[6][0].data = u8concat(cell_storage);\n tri[3][0].data = u8concat(_cell_storage);\n tri[8] = [{ type: 0, data: write_varint49(wide ? 1 : 0) }];\n return tri;\n}\nfunction write_iwam(type, payload) {\n return {\n meta: [\n [],\n [{ type: 0, data: write_varint49(type) }]\n ],\n data: payload\n };\n}\nfunction get_unique_msgid(dep, dependents) {\n if (!dependents.last)\n dependents.last = 927262;\n for (var i = dependents.last; i < 2e6; ++i)\n if (!dependents[i]) {\n dependents[dependents.last = i] = dep;\n return i;\n }\n throw new Error(\"Too many messages\");\n}\nfunction build_numbers_deps(cfb) {\n var dependents = {};\n var indices = [];\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (fi.type != 2)\n return;\n if (!fi.name.match(/\\.iwa/))\n return;\n if (fi.content[0] != 0)\n return;\n parse_iwa_file(decompress_iwa_file(fi.content)).forEach(function(packet) {\n indices.push(packet.id);\n dependents[packet.id] = { deps: [], location: fp, type: varint_to_i32(packet.messages[0].meta[1][0].data) };\n });\n });\n cfb.FileIndex.forEach(function(fi) {\n if (!fi.name.match(/\\.iwa/))\n return;\n if (fi.content[0] != 0)\n return;\n parse_iwa_file(decompress_iwa_file(fi.content)).forEach(function(ia) {\n ia.messages.forEach(function(mess) {\n [5, 6].forEach(function(f) {\n if (!mess.meta[f])\n return;\n mess.meta[f].forEach(function(x) {\n dependents[ia.id].deps.push(varint_to_i32(x.data));\n });\n });\n });\n });\n });\n return dependents;\n}\nfunction write_numbers_iwa(wb, opts) {\n if (!opts || !opts.numbers)\n throw new Error(\"Must pass a `numbers` option -- check the README\");\n var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n var deps = build_numbers_deps(cfb);\n var docroot = numbers_iwa_find(cfb, deps, 1);\n if (docroot == null)\n throw \"Could not find message \".concat(1, \" in Numbers template\");\n var sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);\n if (sheetrefs.length > 1)\n throw new Error(\"Template NUMBERS file must have exactly one sheet\");\n wb.SheetNames.forEach(function(name, idx) {\n if (idx >= 1) {\n numbers_add_ws(cfb, deps, idx + 1);\n docroot = numbers_iwa_find(cfb, deps, 1);\n sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);\n }\n write_numbers_ws(cfb, deps, wb.Sheets[name], name, idx, sheetrefs[idx]);\n });\n return cfb;\n}\nfunction numbers_iwa_doit(cfb, deps, id, cb) {\n var entry = CFB.find(cfb, deps[id].location);\n if (!entry)\n throw \"Could not find \".concat(deps[id].location, \" in Numbers template\");\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var ainfo = x.find(function(packet) {\n return packet.id == id;\n });\n cb(ainfo, x);\n entry.content = compress_iwa_file(write_iwa_file(x));\n entry.size = entry.content.length;\n}\nfunction numbers_iwa_find(cfb, deps, id) {\n var entry = CFB.find(cfb, deps[id].location);\n if (!entry)\n throw \"Could not find \".concat(deps[id].location, \" in Numbers template\");\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var ainfo = x.find(function(packet) {\n return packet.id == id;\n });\n return ainfo;\n}\nfunction numbers_add_ws(cfb, deps, wsidx) {\n var sheetref = -1, newsheetref = -1;\n var remap = {};\n numbers_iwa_doit(cfb, deps, 1, function(docroot, arch) {\n var doc = parse_shallow(docroot.messages[0].data);\n sheetref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n newsheetref = get_unique_msgid({ deps: [1], location: deps[sheetref].location, type: 2 }, deps);\n remap[sheetref] = newsheetref;\n numbers_add_oref(docroot, newsheetref);\n doc[1].push({ type: 2, data: write_TSP_Reference(newsheetref) });\n var sheet = numbers_iwa_find(cfb, deps, sheetref);\n sheet.id = newsheetref;\n if (deps[1].location == deps[newsheetref].location)\n arch.push(sheet);\n else\n numbers_iwa_doit(cfb, deps, newsheetref, function(_, x) {\n return x.push(sheet);\n });\n docroot.messages[0].data = write_shallow(doc);\n });\n var tiaref = -1;\n numbers_iwa_doit(cfb, deps, newsheetref, function(sheetroot, arch) {\n var sa = parse_shallow(sheetroot.messages[0].data);\n for (var i = 3; i <= 69; ++i)\n delete sa[i];\n var drawables = mappa(sa[2], parse_TSP_Reference);\n drawables.forEach(function(n) {\n return numbers_del_oref(sheetroot, n);\n });\n tiaref = get_unique_msgid({ deps: [newsheetref], location: deps[drawables[0]].location, type: deps[drawables[0]].type }, deps);\n numbers_add_oref(sheetroot, tiaref);\n remap[drawables[0]] = tiaref;\n sa[2] = [{ type: 2, data: write_TSP_Reference(tiaref) }];\n var tia = numbers_iwa_find(cfb, deps, drawables[0]);\n tia.id = tiaref;\n if (deps[drawables[0]].location == deps[newsheetref].location)\n arch.push(tia);\n else {\n var loc2 = deps[newsheetref].location;\n loc2 = loc2.replace(/^Root Entry\\//, \"\");\n loc2 = loc2.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc2;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc2)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(tiaref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_iwa_doit(cfb, deps, tiaref, function(_, x) {\n return x.push(tia);\n });\n }\n sheetroot.messages[0].data = write_shallow(sa);\n });\n var tmaref = -1;\n numbers_iwa_doit(cfb, deps, tiaref, function(tiaroot, arch) {\n var tia = parse_shallow(tiaroot.messages[0].data);\n var da = parse_shallow(tia[1][0].data);\n for (var i = 3; i <= 69; ++i)\n delete da[i];\n var dap = parse_TSP_Reference(da[2][0].data);\n da[2][0].data = write_TSP_Reference(remap[dap]);\n tia[1][0].data = write_shallow(da);\n var oldtmaref = parse_TSP_Reference(tia[2][0].data);\n numbers_del_oref(tiaroot, oldtmaref);\n tmaref = get_unique_msgid({ deps: [tiaref], location: deps[oldtmaref].location, type: deps[oldtmaref].type }, deps);\n numbers_add_oref(tiaroot, tmaref);\n remap[oldtmaref] = tmaref;\n tia[2][0].data = write_TSP_Reference(tmaref);\n var tma = numbers_iwa_find(cfb, deps, oldtmaref);\n tma.id = tmaref;\n if (deps[tiaref].location == deps[tmaref].location)\n arch.push(tma);\n else\n numbers_iwa_doit(cfb, deps, tmaref, function(_, x) {\n return x.push(tma);\n });\n tiaroot.messages[0].data = write_shallow(tia);\n });\n var loc = deps[tmaref].location;\n loc = loc.replace(/^Root Entry\\//, \"\");\n loc = loc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, tmaref, function(tmaroot, arch) {\n var _a, _b;\n var tma = parse_shallow(tmaroot.messages[0].data);\n var uuid = u8str(tma[1][0].data), new_uuid = uuid.replace(/-[A-Z0-9]*/, \"-\".concat(wsidx.toString(16).padStart(4, \"0\")));\n tma[1][0].data = stru8(new_uuid);\n [12, 13, 29, 31, 32, 33, 39, 44, 47, 81, 82, 84].forEach(function(n) {\n return delete tma[n];\n });\n if (tma[45]) {\n var srrta = parse_shallow(tma[45][0].data);\n var ref = parse_TSP_Reference(srrta[1][0].data);\n numbers_del_oref(tmaroot, ref);\n delete tma[45];\n }\n if (tma[70]) {\n var hsoa = parse_shallow(tma[70][0].data);\n (_a = hsoa[2]) == null ? void 0 : _a.forEach(function(item) {\n var hsa = parse_shallow(item.data);\n [2, 3].map(function(n) {\n return hsa[n][0];\n }).forEach(function(hseadata) {\n var hsea = parse_shallow(hseadata.data);\n if (!hsea[8])\n return;\n var ref2 = parse_TSP_Reference(hsea[8][0].data);\n numbers_del_oref(tmaroot, ref2);\n });\n });\n delete tma[70];\n }\n [\n 46,\n 30,\n 34,\n 35,\n 36,\n 38,\n 48,\n 49,\n 60,\n 61,\n 62,\n 63,\n 64,\n 71,\n 72,\n 73,\n 74,\n 75,\n 85,\n 86,\n 87,\n 88,\n 89\n ].forEach(function(n) {\n if (!tma[n])\n return;\n var ref2 = parse_TSP_Reference(tma[n][0].data);\n delete tma[n];\n numbers_del_oref(tmaroot, ref2);\n });\n var store = parse_shallow(tma[4][0].data);\n {\n [2, 4, 5, 6, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22].forEach(function(n) {\n var _a2;\n if (!((_a2 = store[n]) == null ? void 0 : _a2[0]))\n return;\n var oldref = parse_TSP_Reference(store[n][0].data);\n var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);\n numbers_del_oref(tmaroot, oldref);\n numbers_add_oref(tmaroot, newref);\n remap[oldref] = newref;\n var msg = numbers_iwa_find(cfb, deps, oldref);\n msg.id = newref;\n if (deps[oldref].location == deps[tmaref].location)\n arch.push(msg);\n else {\n deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());\n if (deps[newref].location == deps[oldref].location)\n deps[newref].location = deps[newref].location.replace(/\\.iwa/, \"-\".concat(newref, \".iwa\"));\n CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));\n var newloc = deps[newref].location;\n newloc = newloc.replace(/^Root Entry\\//, \"\");\n newloc = newloc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }],\n [{ type: 2, data: stru8(newloc.replace(/-.*$/, \"\")) }],\n [{ type: 2, data: stru8(newloc) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(0) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a3, _b2;\n var mm = parse_shallow(m.data);\n if ((_a3 = mm[3]) == null ? void 0 : _a3[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n }\n store[n][0].data = write_TSP_Reference(newref);\n });\n var row_headers = parse_shallow(store[1][0].data);\n {\n (_b = row_headers[2]) == null ? void 0 : _b.forEach(function(tspref) {\n var oldref = parse_TSP_Reference(tspref.data);\n var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);\n numbers_del_oref(tmaroot, oldref);\n numbers_add_oref(tmaroot, newref);\n remap[oldref] = newref;\n var msg = numbers_iwa_find(cfb, deps, oldref);\n msg.id = newref;\n if (deps[oldref].location == deps[tmaref].location) {\n arch.push(msg);\n } else {\n deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());\n if (deps[newref].location == deps[oldref].location)\n deps[newref].location = deps[newref].location.replace(/\\.iwa/, \"-\".concat(newref, \".iwa\"));\n CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));\n var newloc = deps[newref].location;\n newloc = newloc.replace(/^Root Entry\\//, \"\");\n newloc = newloc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }],\n [{ type: 2, data: stru8(newloc.replace(/-.*$/, \"\")) }],\n [{ type: 2, data: stru8(newloc) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(0) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a2, _b2;\n var mm = parse_shallow(m.data);\n if ((_a2 = mm[3]) == null ? void 0 : _a2[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n }\n tspref.data = write_TSP_Reference(newref);\n });\n }\n store[1][0].data = write_shallow(row_headers);\n var tiles = parse_shallow(store[3][0].data);\n {\n tiles[1].forEach(function(t) {\n var tst = parse_shallow(t.data);\n var oldtileref = parse_TSP_Reference(tst[2][0].data);\n var newtileref = remap[oldtileref];\n if (!remap[oldtileref]) {\n newtileref = get_unique_msgid({ deps: [tmaref], location: \"\", type: deps[oldtileref].type }, deps);\n deps[newtileref].location = \"Root Entry/Index/Tables/Tile-\".concat(newtileref, \".iwa\");\n remap[oldtileref] = newtileref;\n var oldtile = numbers_iwa_find(cfb, deps, oldtileref);\n oldtile.id = newtileref;\n numbers_del_oref(tmaroot, oldtileref);\n numbers_add_oref(tmaroot, newtileref);\n CFB.utils.cfb_add(cfb, \"/Index/Tables/Tile-\".concat(newtileref, \".iwa\"), compress_iwa_file(write_iwa_file([oldtile])));\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileref) }],\n [{ type: 2, data: stru8(\"Tables/Tile\") }],\n [{ type: 2, data: stru8(\"Tables/Tile-\".concat(newtileref)) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(0) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileref + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a2, _b2;\n var mm = parse_shallow(m.data);\n if ((_a2 = mm[3]) == null ? void 0 : _a2[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n }\n tst[2][0].data = write_TSP_Reference(newtileref);\n t.data = write_shallow(tst);\n });\n }\n store[3][0].data = write_shallow(tiles);\n }\n tma[4][0].data = write_shallow(store);\n tmaroot.messages[0].data = write_shallow(tma);\n });\n}\nfunction write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {\n var drawables = [];\n numbers_iwa_doit(cfb, deps, rootref, function(docroot) {\n var sheetref = parse_shallow(docroot.messages[0].data);\n {\n sheetref[1] = [{ type: 2, data: stru8(wsname) }];\n drawables = mappa(sheetref[2], parse_TSP_Reference);\n }\n docroot.messages[0].data = write_shallow(sheetref);\n });\n var tia = numbers_iwa_find(cfb, deps, drawables[0]);\n var tmaref = parse_TSP_Reference(parse_shallow(tia.messages[0].data)[2][0].data);\n numbers_iwa_doit(cfb, deps, tmaref, function(docroot, x) {\n return write_numbers_tma(cfb, deps, ws, docroot, x, tmaref);\n });\n}\nvar USE_WIDE_ROWS = true;\nfunction write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {\n var range = decode_range(ws[\"!ref\"]);\n range.s.r = range.s.c = 0;\n var trunc = false;\n if (range.e.c > 999) {\n trunc = true;\n range.e.c = 999;\n }\n if (range.e.r > 999999) {\n trunc = true;\n range.e.r = 999999;\n }\n if (trunc)\n console.error(\"Truncating to \".concat(encode_range(range)));\n var data = sheet_to_json(ws, { range: range, header: 1 });\n var SST = [\"~Sh33tJ5~\"];\n var loc = deps[tmaref].location;\n loc = loc.replace(/^Root Entry\\//, \"\");\n loc = loc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n var pb = parse_shallow(tmaroot.messages[0].data);\n {\n pb[6][0].data = write_varint49(range.e.r + 1);\n pb[7][0].data = write_varint49(range.e.c + 1);\n delete pb[46];\n var store = parse_shallow(pb[4][0].data);\n {\n var row_header_ref = parse_TSP_Reference(parse_shallow(store[1][0].data)[2][0].data);\n numbers_iwa_doit(cfb, deps, row_header_ref, function(rowhead, _x) {\n var _a;\n var base_bucket = parse_shallow(rowhead.messages[0].data);\n if ((_a = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a[0])\n for (var R2 = 0; R2 < data.length; ++R2) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(R2);\n _bucket[4][0].data = write_varint49(data[R2].length);\n base_bucket[2][R2] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n rowhead.messages[0].data = write_shallow(base_bucket);\n });\n var col_header_ref = parse_TSP_Reference(store[2][0].data);\n numbers_iwa_doit(cfb, deps, col_header_ref, function(colhead, _x) {\n var base_bucket = parse_shallow(colhead.messages[0].data);\n for (var C = 0; C <= range.e.c; ++C) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(C);\n _bucket[4][0].data = write_varint49(range.e.r + 1);\n base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n colhead.messages[0].data = write_shallow(base_bucket);\n });\n var rbtree = parse_shallow(store[9][0].data);\n rbtree[1] = [];\n var tilestore = parse_shallow(store[3][0].data);\n {\n var tstride = 256;\n tilestore[2] = [{ type: 0, data: write_varint49(tstride) }];\n var tileref = parse_TSP_Reference(parse_shallow(tilestore[1][0].data)[2][0].data);\n var save_token = function() {\n var metadata = numbers_iwa_find(cfb, deps, 2);\n var mlist = parse_shallow(metadata.messages[0].data);\n var mlst = mlist[3].filter(function(m) {\n return varint_to_i32(parse_shallow(m.data)[1][0].data) == tileref;\n });\n return (mlst == null ? void 0 : mlst.length) ? varint_to_i32(parse_shallow(mlst[0].data)[12][0].data) : 0;\n }();\n {\n CFB.utils.cfb_del(cfb, deps[tileref].location);\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3] = mlist[3].filter(function(m) {\n return varint_to_i32(parse_shallow(m.data)[1][0].data) != tileref;\n });\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6] = parent[6].filter(function(m) {\n return varint_to_i32(parse_shallow(m.data)[1][0].data) != tileref;\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_del_oref(tmaroot, tileref);\n }\n tilestore[1] = [];\n var ntiles = Math.ceil((range.e.r + 1) / tstride);\n for (var tidx = 0; tidx < ntiles; ++tidx) {\n var newtileid = get_unique_msgid({\n deps: [],\n location: \"\",\n type: 6002\n }, deps);\n deps[newtileid].location = \"Root Entry/Index/Tables/Tile-\".concat(newtileid, \".iwa\");\n var tiledata = [\n [],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 0, data: write_varint49(Math.min(range.e.r + 1, (tidx + 1) * tstride)) }],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 0, data: write_varint49(Math.min((tidx + 1) * tstride, range.e.r + 1) - tidx * tstride) }],\n [],\n [{ type: 0, data: write_varint49(5) }],\n [{ type: 0, data: write_varint49(1) }],\n [{ type: 0, data: write_varint49(USE_WIDE_ROWS ? 1 : 0) }]\n ];\n for (var R = tidx * tstride; R <= Math.min(range.e.r, (tidx + 1) * tstride - 1); ++R) {\n var tilerow = write_TST_TileRowInfo(data[R], SST, USE_WIDE_ROWS);\n tilerow[1][0].data = write_varint49(R - tidx * tstride);\n tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n }\n tilestore[1].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(tidx) }],\n [{ type: 2, data: write_TSP_Reference(newtileid) }]\n ]) });\n var newtile = {\n id: newtileid,\n messages: [write_iwam(6002, write_shallow(tiledata))]\n };\n var tilecontent = compress_iwa_file(write_iwa_file([newtile]));\n CFB.utils.cfb_add(cfb, \"/Index/Tables/Tile-\".concat(newtileid, \".iwa\"), tilecontent);\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileid) }],\n [{ type: 2, data: stru8(\"Tables/Tile\") }],\n [{ type: 2, data: stru8(\"Tables/Tile-\".concat(newtileid)) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(save_token) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileid + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileid) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_add_oref(tmaroot, newtileid);\n rbtree[1].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(tidx * tstride) }],\n [{ type: 0, data: write_varint49(tidx) }]\n ]) });\n }\n }\n store[3][0].data = write_shallow(tilestore);\n store[9][0].data = write_shallow(rbtree);\n store[10] = [{ type: 2, data: new Uint8Array([]) }];\n if (ws[\"!merges\"]) {\n var mergeid = get_unique_msgid({\n type: 6144,\n deps: [tmaref],\n location: deps[tmaref].location\n }, deps);\n tmafile.push({\n id: mergeid,\n messages: [write_iwam(6144, write_shallow([\n [],\n ws[\"!merges\"].map(function(m) {\n return { type: 2, data: write_shallow([\n [],\n [{ type: 2, data: write_shallow([\n [],\n [{ type: 5, data: new Uint8Array(new Uint16Array([m.s.r, m.s.c]).buffer) }]\n ]) }],\n [{ type: 2, data: write_shallow([\n [],\n [{ type: 5, data: new Uint8Array(new Uint16Array([m.e.r - m.s.r + 1, m.e.c - m.s.c + 1]).buffer) }]\n ]) }]\n ]) };\n })\n ]))]\n });\n store[13] = [{ type: 2, data: write_TSP_Reference(mergeid) }];\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(mergeid) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_add_oref(tmaroot, mergeid);\n } else\n delete store[13];\n var sstref = parse_TSP_Reference(store[4][0].data);\n numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {\n var sstdata = parse_shallow(sstroot.messages[0].data);\n {\n sstdata[3] = [];\n SST.forEach(function(str, i) {\n if (i == 0)\n return;\n sstdata[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(i) }],\n [{ type: 0, data: write_varint49(1) }],\n [{ type: 2, data: stru8(str) }]\n ]) });\n });\n }\n sstroot.messages[0].data = write_shallow(sstdata);\n });\n }\n pb[4][0].data = write_shallow(store);\n }\n tmaroot.messages[0].data = write_shallow(pb);\n}\nfunction fix_opts_func(defaults/*:Array >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar comments = [], tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tcomments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip, opts);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip, opts);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tvar index_zip = CFB.find(zip, 'Index.zip');\n\t\tif(index_zip) {\n\t\t\topts = dup(opts);\n\t\t\tdelete opts.type;\n\t\t\tif(typeof index_zip.content == \"string\") opts.type = \"binary\";\n\t\t\t// TODO: Bun buffer bug\n\t\t\tif(typeof Bun !== \"undefined\" && Buffer.isBuffer(index_zip.content)) return readSync(new Uint8Array(index_zip.content), opts);\n\t\t\treturn readSync(index_zip.content, opts);\n\t\t}\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme_xml(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\", opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\t// TODO: pass back content types metdata for xlsm/xlsx resolution\n\tout.bookType = xlsb ? \"xlsb\" : \"xlsx\";\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip_xlsb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"bin\";\n\tvar vbafmt = true;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_bin(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_bin(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_bin(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_bin(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tvar ww = write_theme(wb.Themes, opts);\n\tzip_add_file(zip, f, ww);\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_bin(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_bin());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".xml\";\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".xml\", RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = typeof $cptable !== \"undefined\" ? $cptable.utils.decode(1200, d.slice(2), 'str') : utf16leread(d.slice(2));\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(o.codepage && typeof $cptable === \"undefined\") console.error(\"Codepage tables are not loaded. Non-ASCII characters may not give expected results\");\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return rtf_to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t\tcase 0x08: if(n[1] === 0xE7) throw new Error(\"Unsupported Multiplan 1.x file!\"); break;\n\t\tcase 0x0C:\n\t\t\tif(n[1] === 0xEC) throw new Error(\"Unsupported Multiplan 2.x file!\");\n\t\t\tif(n[1] === 0xED) throw new Error(\"Unsupported Multiplan 3.x file!\");\n\t\t\tbreak;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tswitch(opts.bookType) {\n\t\tcase \"ods\": return write_ods(wb, opts);\n\t\tcase \"numbers\": return write_numbers_iwa(wb, opts);\n\t\tcase \"xlsb\": return write_zip_xlsb(wb, opts);\n\t\tdefault: return write_zip_xlsx(wb, opts);\n\t}\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode_pass(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o, wb), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(sheet_to_rtf(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, header/*:number*/, hdr/*:Array*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true, dense = (sheet[\"!data\"] != null);\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[\"!data\"][R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? (sheet[\"!data\"][R]||[])[C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar out/*:Array*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = sheet[\"!data\"] != null;\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[\"!data\"][R]) sheet[\"!data\"][R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[\"!data\"][R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array*/ = [], txt = \"\", rr = encode_row(R);\n\tvar dense = sheet[\"!data\"] != null;\n\tvar datarow = dense && sheet[\"!data\"][R] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = dense ? datarow[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array*/ = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array*/ = [], C;\n\tvar cmds/*:Array*/ = [];\n\tvar dense = sheet[\"!data\"] != null;\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[\"!data\"][R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? (_ws[\"!data\"] != null) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({});\n\tif(!_ws && dense) ws[\"!data\"] = [];\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array*/ = o.header || [], C = 0;\n\tvar ROW = [];\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tif(dense && !ws[\"!data\"][_R + R + offset]) ws[\"!data\"][_R + R + offset] = [];\n\t\tif(dense) ROW = ws[\"!data\"][_R + R + offset];\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = dense ? \"\" : (encode_col(_C + C) + encode_row(_R + R + offset));\n\t\t\tvar cell/*:Cell*/ = dense ? ROW[_C + C] : ws[ref];\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tif(dense) ROW[_C + C] = v;\n\t\t\t\telse ws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (cell != null && cell.z && fmt_is_date(cell.z)) ? cell.z : (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) {\n\t\t\t\t\tif(!dense) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\t\telse ROW[_C + C] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\t} else {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(dense && !ws[\"!data\"][_R]) ws[\"!data\"][_R] = [];\n\tif(offset) for(C = 0; C < hdr.length; ++C) {\n\t\tif(dense) ws[\"!data\"][_R][C + _C] = {t:'s', v:hdr[C]};\n\t\telse ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\t}\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\tif(ws[\"!data\"] != null) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[\"!data\"][RC.r]) ws[\"!data\"][RC.r] = [];\n\t\t\treturn ws[\"!data\"][RC.r][RC.c] || (ws[\"!data\"][RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_col(C||0) + encode_row(R));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\tvar wsr = decode_range(ws[\"!ref\"]);\n\tif(wsr.s.r > rng.s.r) wsr.s.r = rng.s.r;\n\tif(wsr.s.c > rng.s.c) wsr.s.c = rng.s.c;\n\tif(wsr.e.r < rng.e.r) wsr.e.r = rng.e.r;\n\tif(wsr.e.c < rng.e.c) wsr.e.c = rng.e.c;\n\tws[\"!ref\"] = encode_range(wsr);\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array*/ = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar counter = 0;\n\tvar dense = sheet[\"!data\"] != null;\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[\"!data\"][R]) sheet[\"!data\"][R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[\"!data\"][R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n\tset_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\tset_fs,\n\tset_cptable,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\nexport default {\n\tparse_xlscfb,\n\tparse_zip,\n\tread: readSync,\n\treadFile: readFileSync,\n\treadFileSync,\n\twrite: writeSync,\n\twriteFile: writeFileSync,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteXLSX: writeSyncXLSX,\n\twriteFileXLSX: writeFileSyncXLSX,\n\tutils,\n\tset_fs,\n\tset_cptable,\n\tstream: __stream,\n\tSSF,\n\tCFB\n}\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import { read as readXLSX } from \"xlsx\";\nimport axios from \"axios\";\nexport async function importerJSONdURL(url) {\n const réponse = await axios.get(url);\n const données = await réponse.data;\n return données;\n}\nexport async function importerFeuilleCalculDURL(url, options) {\n const réponse = await axios.get(url, { responseType: \"arraybuffer\" });\n const données = réponse.data;\n const optionsParDéfault = {\n type: \"buffer\",\n cellDates: true,\n };\n const optsXLSX = Object.assign(optionsParDéfault, options || {});\n return readXLSX(données, optsXLSX);\n}\n//# sourceMappingURL=index.js.map","import validate from './validate.js';\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n var uuid = unsafeStringify(arr, offset);\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n return getRandomValues(rnds8);\n}","var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;","export const ERREUR_MESSAGE_INCONNU = \"messageInconnu\";\nexport const ERREUR_FORMAT_ARGUMENTS = \"formatArguments\";\nexport const ERREUR_FONCTION_MANQUANTE = \"nomFonctionManquant\";\nexport const ERREUR_MULTIPLES_FONCTIONS = \"multiplesFonctions\";\nexport const ERREUR_PAS_UNE_FONCTION = \"pasUneFonction\";\nexport const ERREUR_EXÉCUTION_IPA = \"exécutionIpa\";\nexport const ERREUR_INIT_IPA = \"initIpa\";\nexport const ERREUR_INIT_IPA_DÉJÀ_LANCÉ = \"initIpaDéjàLancé\";\n//# sourceMappingURL=codes.js.map","export const lorsque = async (émetteur, clef) => {\n return new Promise((résoudre) => {\n return émetteur.once(clef, résoudre);\n });\n};\n//# sourceMappingURL=utils.js.map","import { v4 as uuidv4 } from \"uuid\";\nimport { EventEmitter } from \"events\";\nimport { ERREUR_EXÉCUTION_IPA, ERREUR_FONCTION_MANQUANTE, ERREUR_FORMAT_ARGUMENTS, ERREUR_INIT_IPA, ERREUR_INIT_IPA_DÉJÀ_LANCÉ, ERREUR_MESSAGE_INCONNU, ERREUR_MULTIPLES_FONCTIONS, ERREUR_PAS_UNE_FONCTION, } from \"./codes.js\";\nimport { lorsque } from \"./utils.js\";\nclass Callable extends Function {\n // Code obtenu de https://hackernoon.com/creating-callable-objects-in-javascript-d21l3te1\n //@ts-expect-error On ne peut pas appeller super() d'une fonction dans un contexte navigateur sécuritaire\n constructor() {\n const closure = function () {\n // Rien faire. Je ne comprends pas tout ça mais ça fonctionne.\n };\n return Object.setPrototypeOf(closure, new.target.prototype);\n }\n}\nexport class Mandatairifiable extends Callable {\n dernièreErreur;\n événements;\n événementsInternes;\n tâches;\n constructor() {\n super();\n this.événements = new EventEmitter();\n this.événementsInternes = new EventEmitter();\n this.tâches = {};\n }\n __call__(fonction, args = {}) {\n if (typeof args !== \"object\")\n this.erreur({\n code: ERREUR_FORMAT_ARGUMENTS,\n erreur: `La fonction ${fonction.join(\".\")} fut appelée avec arguments ${args}. \n Toute fonction mandataire Constellation doit être appelée avec un seul argument en format d'objet (dictionnaire).`,\n });\n const id = uuidv4();\n const nomArgFonction = Object.entries(args).find((x) => typeof x[1] === \"function\")?.[0];\n if (nomArgFonction) {\n return this.appelerFonctionSuivre(id, fonction, args, nomArgFonction);\n }\n else {\n return this.appelerFonctionAction(id, fonction, args);\n }\n }\n async appelerFonctionSuivre(id, fonction, args, nomArgFonction) {\n const f = args[nomArgFonction];\n const argsSansF = Object.fromEntries(Object.entries(args).filter((x) => typeof x[1] !== \"function\"));\n // Vérifier format paramètres\n if (f === undefined) {\n this.erreur({\n code: ERREUR_FONCTION_MANQUANTE,\n erreur: \"Aucun argument de nom \" +\n nomArgFonction +\n \" n'a été donnée pour \" +\n fonction.join(\".\"),\n id,\n });\n }\n if (Object.keys(args).length > Object.keys(argsSansF).length + 1) {\n this.erreur({\n code: ERREUR_MULTIPLES_FONCTIONS,\n erreur: \"Plus d'un argument pour \" +\n fonction.join(\".\") +\n \" est une fonction : \" +\n JSON.stringify(args),\n id,\n });\n }\n else if (typeof f !== \"function\") {\n this.erreur({\n code: ERREUR_PAS_UNE_FONCTION,\n erreur: \"Argument \" + nomArgFonction + \"n'est pas une fonction : \",\n id,\n });\n }\n const message = {\n type: \"suivre\",\n id,\n fonction,\n args: argsSansF,\n nomArgFonction,\n };\n const fRetour = async (fonction, args) => {\n const messageRetour = {\n type: \"retour\",\n id,\n fonction,\n args,\n };\n this.envoyerMessageÀIpa(messageRetour);\n };\n const tâche = {\n id,\n fSuivre: f,\n fRetour,\n };\n this.tâches[id] = tâche;\n const fOublierTâche = async () => {\n await this.oublierTâche(id);\n };\n const lorsqueRetour = lorsque(this.événementsInternes, id);\n this.envoyerMessageÀIpa(message);\n const retour = await lorsqueRetour;\n if (retour.type === \"erreur\") {\n this.erreur({\n erreur: retour.erreur,\n id,\n code: retour.codeErreur || ERREUR_EXÉCUTION_IPA,\n });\n }\n if (retour.type === \"suivrePrêt\") {\n const { fonctions } = retour;\n if (fonctions && fonctions[0]) {\n const retour = {\n fOublier: fOublierTâche,\n };\n for (const f of fonctions) {\n retour[f] = async (...args) => {\n await this.tâches[id]?.fRetour(f, args);\n };\n }\n return retour;\n }\n }\n return fOublierTâche;\n }\n async appelerFonctionAction(id, fonction, args) {\n const message = {\n type: \"action\",\n id,\n fonction,\n args: args,\n };\n const lorsqueRetour = lorsque(this.événementsInternes, id);\n this.envoyerMessageÀIpa(message);\n const retour = await lorsqueRetour;\n if (retour.type === \"action\") {\n return retour.résultat;\n }\n else if (retour.type === \"erreur\") {\n this.erreur({\n erreur: retour.erreur,\n id,\n code: retour.codeErreur || ERREUR_EXÉCUTION_IPA,\n });\n }\n else {\n this.erreur({\n erreur: `Type de retour ${retour} non reconnu.`,\n id,\n code: ERREUR_EXÉCUTION_IPA,\n });\n }\n throw new Error(\"On ne devrait jamais arriver ici.\");\n }\n erreur({ erreur, code, id, }) {\n // Si l'IPA n'a pas bien été initialisée, toutes les autres erreurs sont pas très importantes\n if (this.dernièreErreur?.code !== ERREUR_INIT_IPA &&\n this.dernièreErreur?.code !== ERREUR_INIT_IPA_DÉJÀ_LANCÉ) {\n this.dernièreErreur = { erreur, id, code };\n }\n this.événements.emit(\"erreur\", this.dernièreErreur);\n throw new Error(JSON.stringify(this.dernièreErreur));\n }\n async oublierTâche(id) {\n const tâche = this.tâches[id];\n if (tâche)\n await tâche.fRetour(\"fOublier\");\n delete this.tâches[id];\n }\n async recevoirMessageDIpa(message) {\n const { type } = message;\n switch (type) {\n case \"suivre\": {\n const { id, données } = message;\n if (!this.tâches[id])\n return;\n const { fSuivre } = this.tâches[id];\n fSuivre(données);\n break;\n }\n case \"action\":\n case \"suivrePrêt\":\n case \"erreur\": {\n if (message.type === \"erreur\" && !message.id) {\n this.erreur({\n erreur: message.erreur,\n code: message.erreur || ERREUR_EXÉCUTION_IPA,\n });\n break;\n }\n this.événementsInternes.emit(message.id, message);\n break;\n }\n default: {\n this.erreur({\n code: ERREUR_MESSAGE_INCONNU,\n erreur: `Type inconnu ${type} du message ${message}.`,\n id: message.id,\n });\n }\n }\n }\n // Fonctions publiques\n suivreErreurs({ f }) {\n this.événements.on(\"erreur\", f);\n f(this.dernièreErreur);\n return () => this.événements.off(\"erreur\", f);\n }\n}\nclass Handler {\n listeAtributs;\n constructor(listeAtributs) {\n this.listeAtributs = listeAtributs || [];\n }\n get(obj, prop) {\n // Inscrire ici les fonctions publiques du mandataire qui ne\n // doivent pas être envoyées à Constellation\n const directes = [\"suivreErreurs\"];\n if (directes.includes(prop)) {\n return obj[prop].bind(obj);\n }\n else {\n const listeAtributs = [...this.listeAtributs, prop];\n const h = new Handler(listeAtributs);\n return new Proxy(obj, h);\n }\n }\n apply(target, _thisArg, args) {\n return target.__call__(this.listeAtributs, args[0]);\n }\n}\nexport const générerMandataire = (mandataireClient) => {\n const handler = new Handler();\n return new Proxy(mandataireClient, handler);\n};\n//# sourceMappingURL=mandataire.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = toObject(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = toObject(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind.apply(getPolyfill());\n// eslint-disable-next-line no-unused-vars\nvar bound = function assign(target, source1) {\n\treturn polyfill(Object, arguments);\n};\n\ndefineProperties(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar setFunctionName = require('set-function-name');\nvar $TypeError = require('es-errors/type');\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","export default {}","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (\n (typeof globalThis !== 'undefined' && obj === globalThis)\n || (typeof global !== 'undefined' && obj === global)\n ) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap} */ var $wm;\n\t/** @type {Map} */ var $m;\n\t/** @type {import('.').RootNode} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar hasOwn = require('hasown');\nvar channel = require('side-channel')();\n\nvar $TypeError = require('es-errors/type');\n\nvar SLOT = {\n\tassert: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tchannel.assert(O);\n\t\tif (!SLOT.has(O, slot)) {\n\t\t\tthrow new $TypeError('`' + slot + '` is not present on `O`');\n\t\t}\n\t},\n\tget: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn slots && slots['$' + slot];\n\t},\n\thas: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn !!slots && hasOwn(slots, '$' + slot);\n\t},\n\tset: function (O, slot, V) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\tif (!slots) {\n\t\t\tslots = {};\n\t\t\tchannel.set(O, slots);\n\t\t}\n\t\tslots['$' + slot] = V;\n\t}\n};\n\nif (Object.freeze) {\n\tObject.freeze(SLOT);\n}\n\nmodule.exports = SLOT;\n","'use strict';\n\nvar SLOT = require('internal-slot');\n\nvar $SyntaxError = SyntaxError;\nvar $StopIteration = typeof StopIteration === 'object' ? StopIteration : null;\n\nmodule.exports = function getStopIterationIterator(origIterator) {\n\tif (!$StopIteration) {\n\t\tthrow new $SyntaxError('this environment lacks StopIteration');\n\t}\n\n\tSLOT.set(origIterator, '[[Done]]', false);\n\n\tvar siIterator = {\n\t\tnext: function next() {\n\t\t\tvar iterator = SLOT.get(this, '[[Iterator]]');\n\t\t\tvar done = SLOT.get(iterator, '[[Done]]');\n\t\t\ttry {\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: done ? void undefined : iterator.next()\n\t\t\t\t};\n\t\t\t} catch (e) {\n\t\t\t\tSLOT.set(iterator, '[[Done]]', true);\n\t\t\t\tif (e !== $StopIteration) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\tSLOT.set(siIterator, '[[Iterator]]', origIterator);\n\n\treturn siIterator;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n","'use strict';\n\n/** @const */\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Map is always truthy here\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Set is always truthy here\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\n/* eslint global-require: 0 */\n// the code is structured this way so that bundlers can\n// alias out `has-symbols` to `() => true` or `() => false` if your target\n// environments' Symbol capabilities are known, and then use\n// dead code elimination on the rest of this module.\n//\n// Similarly, `isarray` can be aliased to `Array.isArray` if\n// available in all target environments.\n\nvar isArguments = require('is-arguments');\nvar getStopIterationIterator = require('stop-iteration-iterator');\n\nif (require('has-symbols')() || require('has-symbols/shams')()) {\n\tvar $iterator = Symbol.iterator;\n\t// Symbol is available natively or shammed\n\t// natively:\n\t// - Chrome >= 38\n\t// - Edge 12-14?, Edge >= 15 for sure\n\t// - FF >= 36\n\t// - Safari >= 9\n\t// - node >= 0.12\n\tmodule.exports = function getIterator(iterable) {\n\t\t// alternatively, `iterable[$iterator]?.()`\n\t\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\t\treturn iterable[$iterator]();\n\t\t}\n\t\tif (isArguments(iterable)) {\n\t\t\t// arguments objects lack Symbol.iterator\n\t\t\t// - node 0.12\n\t\t\treturn Array.prototype[$iterator].call(iterable);\n\t\t}\n\t};\n} else {\n\t// Symbol is not available, native or shammed\n\tvar isArray = require('isarray');\n\tvar isString = require('is-string');\n\tvar GetIntrinsic = require('get-intrinsic');\n\tvar $Map = GetIntrinsic('%Map%', true);\n\tvar $Set = GetIntrinsic('%Set%', true);\n\tvar callBound = require('call-bind/callBound');\n\tvar $arrayPush = callBound('Array.prototype.push');\n\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\tvar $stringSlice = callBound('String.prototype.slice');\n\n\tvar advanceStringIndex = function advanceStringIndex(S, index) {\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t};\n\n\tvar getArrayIterator = function getArrayIterator(arraylike) {\n\t\tvar i = 0;\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tvar done = i >= arraylike.length;\n\t\t\t\tvar value;\n\t\t\t\tif (!done) {\n\t\t\t\t\tvalue = arraylike[i];\n\t\t\t\t\ti += 1;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable, noPrimordialCollections) {\n\t\tif (isArray(iterable) || isArguments(iterable)) {\n\t\t\treturn getArrayIterator(iterable);\n\t\t}\n\t\tif (isString(iterable)) {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function next() {\n\t\t\t\t\tvar nextIndex = advanceStringIndex(iterable, i);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// es6-shim and es-shims' es-map use a string \"_es6-shim iterator_\" property on different iterables, such as MapIterator.\n\t\tif (noPrimordialCollections && typeof iterable['_es6-shim iterator_'] !== 'undefined') {\n\t\t\treturn iterable['_es6-shim iterator_']();\n\t\t}\n\t};\n\n\tif (!$Map && !$Set) {\n\t\t// the only language iterables are Array, String, arguments\n\t\t// - Safari <= 6.0\n\t\t// - Chrome < 38\n\t\t// - node < 0.12\n\t\t// - FF < 13\n\t\t// - IE < 11\n\t\t// - Edge < 11\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\tif (iterable != null) {\n\t\t\t\treturn getNonCollectionIterator(iterable, true);\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// either Map or Set are available, but Symbol is not\n\t\t// - es6-shim on an ES5 browser\n\t\t// - Safari 6.2 (maybe 6.1?)\n\t\t// - FF v[13, 36)\n\t\t// - IE 11\n\t\t// - Edge 11\n\t\t// - Safari v[6, 9)\n\n\t\tvar isMap = require('is-map');\n\t\tvar isSet = require('is-set');\n\n\t\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\n\t\tvar $mapForEach = callBound('Map.prototype.forEach', true);\n\t\tvar $setForEach = callBound('Set.prototype.forEach', true);\n\t\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \"if is not node\"\n\n\t\t\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\n\t\t\t// returns a value, or throws a StopIteration object. These browsers\n\t\t\t// do not have any other mechanism for iteration.\n\t\t\tvar $mapIterator = callBound('Map.prototype.iterator', true);\n\t\t\tvar $setIterator = callBound('Set.prototype.iterator', true);\n\t\t}\n\t\t// Firefox 27-35, and some older es6-shim versions, use a string \"@@iterator\" property\n\t\t// this returns a proper iterator object, so we should use it instead of forEach.\n\t\t// newer es6-shim versions use a string \"_es6-shim iterator_\" property.\n\t\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\n\t\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\n\n\t\tvar getCollectionIterator = function getCollectionIterator(iterable) {\n\t\t\tif (isMap(iterable)) {\n\t\t\t\tif ($mapIterator) {\n\t\t\t\t\treturn getStopIterationIterator($mapIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($mapAtAtIterator) {\n\t\t\t\t\treturn $mapAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($mapForEach) {\n\t\t\t\t\tvar entries = [];\n\t\t\t\t\t$mapForEach(iterable, function (v, k) {\n\t\t\t\t\t\t$arrayPush(entries, [k, v]);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(entries);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isSet(iterable)) {\n\t\t\t\tif ($setIterator) {\n\t\t\t\t\treturn getStopIterationIterator($setIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($setAtAtIterator) {\n\t\t\t\t\treturn $setAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($setForEach) {\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$setForEach(iterable, function (v) {\n\t\t\t\t\t\t$arrayPush(values, v);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(values);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\n\t\t};\n\t}\n}\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $ArrayBuffer = GetIntrinsic('%ArrayBuffer%', true);\n/** @type {undefined | ((receiver: ArrayBuffer) => number) | ((receiver: unknown) => never)} */\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\nvar $toString = callBound('Object.prototype.toString');\n\n// in node 0.10, ArrayBuffers have no prototype methods, but have an own slot-checking `slice` method\nvar abSlice = !!$ArrayBuffer && !$byteLength && new $ArrayBuffer(0).slice;\nvar $abSlice = !!abSlice && callBind(abSlice);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength || $abSlice\n\t? function isArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tif ($byteLength) {\n\t\t\t\t// @ts-expect-error no idea why TS can't handle the overload\n\t\t\t\t$byteLength(obj);\n\t\t\t} else {\n\t\t\t\t// @ts-expect-error TS chooses not to type-narrow inside a closure\n\t\t\t\t$abSlice(obj, 0);\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: $ArrayBuffer\n\t\t// in node 0.8, ArrayBuffers have no prototype or own methods, but also no Symbol.toStringTag\n\t\t? function isArrayBuffer(obj) {\n\t\t\treturn $toString(obj) === '[object ArrayBuffer]';\n\t\t}\n\t\t: function isArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\t\treturn false;\n\t\t};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\n\nvar $byteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength\n\t? function isSharedArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$byteLength(obj);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: function isSharedArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\treturn false;\n\t};\n","'use strict';\n\nvar numToStr = Number.prototype.toString;\nvar tryNumberObject = function tryNumberObject(value) {\n\ttry {\n\t\tnumToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar numClass = '[object Number]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isNumberObject(value) {\n\tif (typeof value === 'number') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $boolToStr = callBound('Boolean.prototype.toString');\nvar $toString = callBound('Object.prototype.toString');\n\nvar tryBooleanObject = function booleanBrandCheck(value) {\n\ttry {\n\t\t$boolToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar boolClass = '[object Boolean]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isBoolean(value) {\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : $toString(value) === boolClass;\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = require('has-symbols')();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar $BigInt = typeof BigInt !== 'undefined' && BigInt;\n\nmodule.exports = function hasNativeBigInts() {\n\treturn typeof $BigInt === 'function'\n\t\t&& typeof BigInt === 'function'\n\t\t&& typeof $BigInt(42) === 'bigint' // eslint-disable-line no-magic-numbers\n\t\t&& typeof BigInt(42) === 'bigint'; // eslint-disable-line no-magic-numbers\n};\n","'use strict';\n\nvar hasBigInts = require('has-bigints')();\n\nif (hasBigInts) {\n\tvar bigIntValueOf = BigInt.prototype.valueOf;\n\tvar tryBigInt = function tryBigIntObject(value) {\n\t\ttry {\n\t\t\tbigIntValueOf.call(value);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t}\n\t\treturn false;\n\t};\n\n\tmodule.exports = function isBigInt(value) {\n\t\tif (\n\t\t\tvalue === null\n\t\t\t|| typeof value === 'undefined'\n\t\t\t|| typeof value === 'boolean'\n\t\t\t|| typeof value === 'string'\n\t\t\t|| typeof value === 'number'\n\t\t\t|| typeof value === 'symbol'\n\t\t\t|| typeof value === 'function'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof value === 'bigint') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn tryBigInt(value);\n\t};\n} else {\n\tmodule.exports = function isBigInt(value) {\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar isString = require('is-string');\nvar isNumber = require('is-number-object');\nvar isBoolean = require('is-boolean-object');\nvar isSymbol = require('is-symbol');\nvar isBigInt = require('is-bigint');\n\n// eslint-disable-next-line consistent-return\nmodule.exports = function whichBoxedPrimitive(value) {\n\t// eslint-disable-next-line eqeqeq\n\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\treturn null;\n\t}\n\tif (isString(value)) {\n\t\treturn 'String';\n\t}\n\tif (isNumber(value)) {\n\t\treturn 'Number';\n\t}\n\tif (isBoolean(value)) {\n\t\treturn 'Boolean';\n\t}\n\tif (isSymbol(value)) {\n\t\treturn 'Symbol';\n\t}\n\tif (isBigInt(value)) {\n\t\treturn 'BigInt';\n\t}\n};\n","'use strict';\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isWeakMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x, $mapHas);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x, $setHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $WeakMap is always truthy here\n\t\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\n\nvar $WeakSet = GetIntrinsic('%WeakSet%', true);\n\nvar $setHas = callBound('WeakSet.prototype.has', true);\n\nif ($setHas) {\n\tvar $mapHas = callBound('WeakMap.prototype.has', true);\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isWeakSet(x) {\n\t\tif (!x || typeof x !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$setHas(x, $setHas);\n\t\t\tif ($mapHas) {\n\t\t\t\ttry {\n\t\t\t\t\t$mapHas(x, $mapHas);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't figure out that $WeakSet is always truthy here\n\t\t\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\n\t\t} catch (e) {}\n\t\treturn false;\n\t};\n} else {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\tmodule.exports = function isWeakSet(x) {\n\t\t// `WeakSet` does not exist, or does not have a `has` method\n\t\treturn false;\n\t};\n}\n","'use strict';\n\nvar isMap = require('is-map');\nvar isSet = require('is-set');\nvar isWeakMap = require('is-weakmap');\nvar isWeakSet = require('is-weakset');\n\n/** @type {import('.')} */\nmodule.exports = function whichCollection(/** @type {unknown} */ value) {\n\tif (value && typeof value === 'object') {\n\t\tif (isMap(value)) {\n\t\t\treturn 'Map';\n\t\t}\n\t\tif (isSet(value)) {\n\t\t\treturn 'Set';\n\t\t}\n\t\tif (isWeakMap(value)) {\n\t\t\treturn 'WeakMap';\n\t\t}\n\t\tif (isWeakSet(value)) {\n\t\t\treturn 'WeakSet';\n\t\t}\n\t}\n\treturn false;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\n\nvar isArrayBuffer = require('is-array-buffer');\n\n/** @type {import('.')} */\nmodule.exports = function byteLength(ab) {\n\tif (!isArrayBuffer(ab)) {\n\t\treturn NaN;\n\t}\n\treturn $byteLength ? $byteLength(ab) : ab.byteLength;\n}; // in node < 0.11, byteLength is an own nonconfigurable property\n","'use strict';\n\nvar assign = require('object.assign');\nvar callBound = require('call-bind/callBound');\nvar flags = require('regexp.prototype.flags');\nvar GetIntrinsic = require('get-intrinsic');\nvar getIterator = require('es-get-iterator');\nvar getSideChannel = require('side-channel');\nvar is = require('object-is');\nvar isArguments = require('is-arguments');\nvar isArray = require('isarray');\nvar isArrayBuffer = require('is-array-buffer');\nvar isDate = require('is-date-object');\nvar isRegex = require('is-regex');\nvar isSharedArrayBuffer = require('is-shared-array-buffer');\nvar objectKeys = require('object-keys');\nvar whichBoxedPrimitive = require('which-boxed-primitive');\nvar whichCollection = require('which-collection');\nvar whichTypedArray = require('which-typed-array');\nvar byteLength = require('array-buffer-byte-length');\n\nvar sabByteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\nvar $getTime = callBound('Date.prototype.getTime');\nvar gPO = Object.getPrototypeOf;\nvar $objToString = callBound('Object.prototype.toString');\n\nvar $Set = GetIntrinsic('%Set%', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSize = callBound('Map.prototype.size', true);\nvar $setAdd = callBound('Set.prototype.add', true);\nvar $setDelete = callBound('Set.prototype.delete', true);\nvar $setHas = callBound('Set.prototype.has', true);\nvar $setSize = callBound('Set.prototype.size', true);\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\nfunction setHasEqualElement(set, val1, opts, channel) {\n var i = getIterator(set);\n var result;\n while ((result = i.next()) && !result.done) {\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\n // Remove the matching element to make sure we do not check that again.\n $setDelete(set, result.value);\n return true;\n }\n }\n\n return false;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\nfunction findLooseMatchingPrimitives(prim) {\n if (typeof prim === 'undefined') {\n return null;\n }\n if (typeof prim === 'object') { // Only pass in null as object!\n return void 0;\n }\n if (typeof prim === 'symbol') {\n return false;\n }\n if (typeof prim === 'string' || typeof prim === 'number') {\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\n }\n return true;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = $mapGet(b, altValue);\n var looseOpts = assign({}, opts, { strict: false });\n if (\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\n // eslint-disable-next-line no-use-before-define\n || !internalDeepEqual(item, curB, looseOpts, channel)\n ) {\n return false;\n }\n // eslint-disable-next-line no-use-before-define\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n\n return $setHas(b, altValue) && !$setHas(a, altValue);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\n var i = getIterator(set);\n var result;\n var key2;\n while ((result = i.next()) && !result.done) {\n key2 = result.value;\n if (\n // eslint-disable-next-line no-use-before-define\n internalDeepEqual(key1, key2, opts, channel)\n // eslint-disable-next-line no-use-before-define\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\n ) {\n $setDelete(set, key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction internalDeepEqual(actual, expected, options, channel) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n var actualBoxed = whichBoxedPrimitive(actual);\n var expectedBoxed = whichBoxedPrimitive(expected);\n if (actualBoxed !== expectedBoxed) {\n return false;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\n\n var hasActual = channel.has(actual);\n var hasExpected = channel.has(expected);\n var sentinel;\n if (hasActual && hasExpected) {\n if (channel.get(actual) === channel.get(expected)) {\n return true;\n }\n } else {\n sentinel = {};\n }\n if (!hasActual) { channel.set(actual, sentinel); }\n if (!hasExpected) { channel.set(expected, sentinel); }\n\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts, channel);\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\n}\n\nfunction setEquiv(a, b, opts, channel) {\n if ($setSize(a) !== $setSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n while ((resultA = iA.next()) && !resultA.done) {\n if (resultA.value && typeof resultA.value === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n } else if (!$setHas(b, resultA.value)) {\n if (opts.strict) { return false; }\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n }\n }\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\n if (resultB.value && typeof resultB.value === 'object') {\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && !$setHas(a, resultB.value)\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction mapEquiv(a, b, opts, channel) {\n if ($mapSize(a) !== $mapSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n var key;\n var item1;\n var item2;\n while ((resultA = iA.next()) && !resultA.done) {\n key = resultA.value[0];\n item1 = resultA.value[1];\n if (key && typeof key === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n } else {\n item2 = $mapGet(b, key);\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\n if (opts.strict) {\n return false;\n }\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n }\n }\n }\n\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n key = resultB.value[0];\n item2 = resultB.value[1];\n if (key && typeof key === 'object') {\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts, channel) {\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5], max-lines: [2, 400] */\n var i, key;\n\n if (typeof a !== typeof b) { return false; }\n if (a == null || b == null) { return false; }\n\n if ($objToString(a) !== $objToString(b)) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsArray = isArray(a);\n var bIsArray = isArray(b);\n if (aIsArray !== bIsArray) { return false; }\n\n // TODO: replace when a cross-realm brand check is available\n var aIsError = a instanceof Error;\n var bIsError = b instanceof Error;\n if (aIsError !== bIsError) { return false; }\n if (aIsError || bIsError) {\n if (a.name !== b.name || a.message !== b.message) { return false; }\n }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\n return false;\n }\n\n var aIsDate = isDate(a);\n var bIsDate = isDate(b);\n if (aIsDate !== bIsDate) { return false; }\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\n if ($getTime(a) !== $getTime(b)) { return false; }\n }\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\n\n var aWhich = whichTypedArray(a);\n var bWhich = whichTypedArray(b);\n if (aWhich !== bWhich) {\n return false;\n }\n if (aWhich || bWhich) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsArrayBuffer = isArrayBuffer(a);\n var bIsArrayBuffer = isArrayBuffer(b);\n if (aIsArrayBuffer !== bIsArrayBuffer) { return false; }\n if (aIsArrayBuffer || bIsArrayBuffer) { // && would work too, because both are true or both false here\n if (byteLength(a) !== byteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n var aIsSAB = isSharedArrayBuffer(a);\n var bIsSAB = isSharedArrayBuffer(b);\n if (aIsSAB !== bIsSAB) { return false; }\n if (aIsSAB || bIsSAB) { // && would work too, because both are true or both false here\n if (sabByteLength(a) !== sabByteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n if (typeof a !== typeof b) { return false; }\n\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; } // eslint-disable-line eqeqeq\n }\n\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\n }\n\n var aCollection = whichCollection(a);\n var bCollection = whichCollection(b);\n if (aCollection !== bCollection) {\n return false;\n }\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\n return setEquiv(a, b, opts, channel);\n }\n if (aCollection === 'Map') { // aCollection === bCollection\n return mapEquiv(a, b, opts, channel);\n }\n\n return true;\n}\n\nmodule.exports = function deepEqual(a, b, opts) {\n return internalDeepEqual(a, b, opts, getSideChannel());\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.typeDetect = factory());\n})(this, (function () { 'use strict';\n\n var promiseExists = typeof Promise === 'function';\n var globalObject = (function (Obj) {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Obj, 'typeDetectGlobalObject', {\n get: function get() {\n return this;\n },\n configurable: true,\n });\n var global = typeDetectGlobalObject;\n delete Obj.typeDetectGlobalObject;\n return global;\n })(Object.prototype);\n var symbolExists = typeof Symbol !== 'undefined';\n var mapExists = typeof Map !== 'undefined';\n var setExists = typeof Set !== 'undefined';\n var weakMapExists = typeof WeakMap !== 'undefined';\n var weakSetExists = typeof WeakSet !== 'undefined';\n var dataViewExists = typeof DataView !== 'undefined';\n var symbolIteratorExists = symbolExists && typeof Symbol.iterator !== 'undefined';\n var symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== 'undefined';\n var setEntriesExists = setExists && typeof Set.prototype.entries === 'function';\n var mapEntriesExists = mapExists && typeof Map.prototype.entries === 'function';\n var setIteratorPrototype = setEntriesExists && Object.getPrototypeOf(new Set().entries());\n var mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf(new Map().entries());\n var arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === 'function';\n var arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]());\n var stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === 'function';\n var stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(''[Symbol.iterator]());\n var toStringLeftSliceLength = 8;\n var toStringRightSliceLength = -1;\n function typeDetect(obj) {\n var typeofObj = typeof obj;\n if (typeofObj !== 'object') {\n return typeofObj;\n }\n if (obj === null) {\n return 'null';\n }\n if (obj === globalObject) {\n return 'global';\n }\n if (Array.isArray(obj) &&\n (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))) {\n return 'Array';\n }\n if (typeof window === 'object' && window !== null) {\n if (typeof window.location === 'object' && obj === window.location) {\n return 'Location';\n }\n if (typeof window.document === 'object' && obj === window.document) {\n return 'Document';\n }\n if (typeof window.navigator === 'object') {\n if (typeof window.navigator.mimeTypes === 'object' &&\n obj === window.navigator.mimeTypes) {\n return 'MimeTypeArray';\n }\n if (typeof window.navigator.plugins === 'object' &&\n obj === window.navigator.plugins) {\n return 'PluginArray';\n }\n }\n if ((typeof window.HTMLElement === 'function' ||\n typeof window.HTMLElement === 'object') &&\n obj instanceof window.HTMLElement) {\n if (obj.tagName === 'BLOCKQUOTE') {\n return 'HTMLQuoteElement';\n }\n if (obj.tagName === 'TD') {\n return 'HTMLTableDataCellElement';\n }\n if (obj.tagName === 'TH') {\n return 'HTMLTableHeaderCellElement';\n }\n }\n }\n var stringTag = (symbolToStringTagExists && obj[Symbol.toStringTag]);\n if (typeof stringTag === 'string') {\n return stringTag;\n }\n var objPrototype = Object.getPrototypeOf(obj);\n if (objPrototype === RegExp.prototype) {\n return 'RegExp';\n }\n if (objPrototype === Date.prototype) {\n return 'Date';\n }\n if (promiseExists && objPrototype === Promise.prototype) {\n return 'Promise';\n }\n if (setExists && objPrototype === Set.prototype) {\n return 'Set';\n }\n if (mapExists && objPrototype === Map.prototype) {\n return 'Map';\n }\n if (weakSetExists && objPrototype === WeakSet.prototype) {\n return 'WeakSet';\n }\n if (weakMapExists && objPrototype === WeakMap.prototype) {\n return 'WeakMap';\n }\n if (dataViewExists && objPrototype === DataView.prototype) {\n return 'DataView';\n }\n if (mapExists && objPrototype === mapIteratorPrototype) {\n return 'Map Iterator';\n }\n if (setExists && objPrototype === setIteratorPrototype) {\n return 'Set Iterator';\n }\n if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) {\n return 'Array Iterator';\n }\n if (stringIteratorExists && objPrototype === stringIteratorPrototype) {\n return 'String Iterator';\n }\n if (objPrototype === null) {\n return 'Object';\n }\n return Object\n .prototype\n .toString\n .call(obj)\n .slice(toStringLeftSliceLength, toStringRightSliceLength);\n }\n\n return typeDetect;\n\n}));\n","const isBufferExists = typeof Buffer !== 'undefined';\nconst isBufferFromExists = isBufferExists && typeof Buffer.from !== 'undefined';\n\nexport const isBuffer = isBufferExists\n ? /**\n * is value is Buffer?\n *\n * @param {*} value\n * @return {boolean}\n */\n function isBuffer(value) {\n return Buffer.isBuffer(value);\n }\n : /**\n * return false\n *\n * NOTE: for Buffer unsupported\n *\n * @return {boolean}\n */\n function isBuffer() {\n return false;\n };\n\nexport const copy = isBufferFromExists\n ? /**\n * copy Buffer\n *\n * @param {Buffer} value\n * @return {Buffer}\n */\n function copy(value) {\n return Buffer.from(value);\n }\n : isBufferExists\n ? /**\n * copy Buffer\n *\n * NOTE: for old node.js\n *\n * @param {Buffer} value\n * @return {Buffer}\n */\n function copy(value) {\n return new Buffer(value);\n }\n : /**\n * shallow copy\n *\n * NOTE: for Buffer unsupported\n *\n * @param {*}\n * @return {*}\n */\n function copy(value) {\n return value;\n };\n","import typeDetect from 'type-detect';\n\nimport { isBuffer } from './buffer.mjs';\n\n/**\n * detect type of value\n *\n * @param {*} value\n * @return {string}\n */\nexport function detectType(value) {\n // NOTE: isBuffer must execute before type-detect,\n // because type-detect returns 'Uint8Array'.\n if (isBuffer(value)) {\n return 'Buffer';\n }\n\n return typeDetect(value);\n}\n","import { detectType } from './detector.mjs';\n\n/**\n * collection types\n */\nconst collectionTypeSet = new Set([\n 'Arguments',\n 'Array',\n 'Map',\n 'Object',\n 'Set'\n]);\n\n/**\n * get value from collection\n *\n * @param {Array|Object|Map|Set} collection\n * @param {string|number|symbol} key\n * @param {string} [type=null]\n * @return {*}\n */\nexport function get(collection, key, type = null) {\n const valueType = type || detectType(collection);\n\n switch (valueType) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n return collection[key];\n case 'Map':\n return collection.get(key);\n case 'Set':\n // NOTE: Set.prototype.keys is alias of Set.prototype.values\n // it means key is equals value\n return key;\n default:\n }\n}\n\n/**\n * check to type string is collection\n *\n * @param {string} type\n */\nexport function isCollection(type) {\n return collectionTypeSet.has(type);\n}\n\n/**\n * set value to collection\n *\n * @param {Array|Object|Map|Set} collection\n * @param {string|number|symbol} key\n * @param {*} value\n * @param {string} [type=null]\n * @return {Array|Object|Map|Set}\n */\nexport function set(collection, key, value, type = null) {\n const valueType = type || detectType(collection);\n\n switch (valueType) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n collection[key] = value;\n break;\n case 'Map':\n collection.set(key, value);\n break;\n case 'Set':\n collection.add(value);\n break;\n default:\n }\n\n return collection;\n}\n","const freeGlobalThis =\n typeof globalThis !== 'undefined' &&\n globalThis !== null &&\n globalThis.Object === Object &&\n globalThis;\n\nconst freeGlobal =\n typeof global !== 'undefined' &&\n global !== null &&\n global.Object === Object &&\n global;\n\nconst freeSelf =\n typeof self !== 'undefined' &&\n self !== null &&\n self.Object === Object &&\n self;\n\nexport const globalObject =\n freeGlobalThis || freeGlobal || freeSelf || Function('return this')();\n","import { copy as cloneBuffer } from './buffer.mjs';\nimport { globalObject } from './global.mjs';\n\n/**\n * copy ArrayBuffer\n *\n * @param {ArrayBuffer} value\n * @return {ArrayBuffer}\n */\nfunction copyArrayBuffer(value) {\n return value.slice(0);\n}\n\n/**\n * copy Boolean\n *\n * @param {Boolean} value\n * @return {Boolean}\n */\nfunction copyBoolean(value) {\n return new Boolean(value.valueOf());\n}\n\n/**\n * copy DataView\n *\n * @param {DataView} value\n * @return {DataView}\n */\nfunction copyDataView(value) {\n // TODO: copy ArrayBuffer?\n return new DataView(value.buffer);\n}\n\n/**\n * copy Buffer\n *\n * @param {Buffer} value\n * @return {Buffer}\n */\nfunction copyBuffer(value) {\n return cloneBuffer(value);\n}\n\n/**\n * copy Date\n *\n * @param {Date} value\n * @return {Date}\n */\nfunction copyDate(value) {\n return new Date(value.getTime());\n}\n\n/**\n * copy Number\n *\n * @param {Number} value\n * @return {Number}\n */\nfunction copyNumber(value) {\n return new Number(value);\n}\n\n/**\n * copy RegExp\n *\n * @param {RegExp} value\n * @return {RegExp}\n */\nfunction copyRegExp(value) {\n return new RegExp(value.source, value.flags);\n}\n\n/**\n * copy String\n *\n * @param {String} value\n * @return {String}\n */\nfunction copyString(value) {\n return new String(value);\n}\n\n/**\n * copy TypedArray\n *\n * @param {*} value\n * @return {*}\n */\nfunction copyTypedArray(value, type) {\n const typedArray = globalObject[type];\n\n if (typedArray.from) {\n return globalObject[type].from(value);\n }\n\n return new globalObject[type](value);\n}\n\n/**\n * shallow copy\n *\n * @param {*} value\n * @return {*}\n */\nfunction shallowCopy(value) {\n return value;\n}\n\n/**\n * get empty Array\n *\n * @return {Array}\n */\nfunction getEmptyArray() {\n return [];\n}\n\n/**\n * get empty Map\n *\n * @return {Map}\n */\nfunction getEmptyMap() {\n return new Map();\n}\n\n/**\n * get empty Object\n *\n * @return {Object}\n */\nfunction getEmptyObject() {\n return {};\n}\n\n/**\n * get empty Set\n *\n * @return {Set}\n */\nfunction getEmptySet() {\n return new Set();\n}\n\nexport default new Map([\n // deep copy\n ['ArrayBuffer', copyArrayBuffer],\n ['Boolean', copyBoolean],\n ['Buffer', copyBuffer],\n ['DataView', copyDataView],\n ['Date', copyDate],\n ['Number', copyNumber],\n ['RegExp', copyRegExp],\n ['String', copyString],\n\n // typed arrays\n // TODO: pass bound function\n ['Float32Array', copyTypedArray],\n ['Float64Array', copyTypedArray],\n ['Int16Array', copyTypedArray],\n ['Int32Array', copyTypedArray],\n ['Int8Array', copyTypedArray],\n ['Uint16Array', copyTypedArray],\n ['Uint32Array', copyTypedArray],\n ['Uint8Array', copyTypedArray],\n ['Uint8ClampedArray', copyTypedArray],\n\n // shallow copy\n ['Array Iterator', shallowCopy],\n ['Map Iterator', shallowCopy],\n ['Promise', shallowCopy],\n ['Set Iterator', shallowCopy],\n ['String Iterator', shallowCopy],\n ['function', shallowCopy],\n ['global', shallowCopy],\n // NOTE: WeakMap and WeakSet cannot get entries\n ['WeakMap', shallowCopy],\n ['WeakSet', shallowCopy],\n\n // primitives\n ['boolean', shallowCopy],\n ['null', shallowCopy],\n ['number', shallowCopy],\n ['string', shallowCopy],\n ['symbol', shallowCopy],\n ['undefined', shallowCopy],\n\n // collections\n // NOTE: return empty value, because recursively copy later.\n ['Arguments', getEmptyArray],\n ['Array', getEmptyArray],\n ['Map', getEmptyMap],\n ['Object', getEmptyObject],\n ['Set', getEmptySet]\n\n // NOTE: type-detect returns following types\n // 'Location'\n // 'Document'\n // 'MimeTypeArray'\n // 'PluginArray'\n // 'HTMLQuoteElement'\n // 'HTMLTableDataCellElement'\n // 'HTMLTableHeaderCellElement'\n\n // TODO: is type-detect never return 'object'?\n // 'object'\n]);\n","import copyMap from './copy_map.mjs';\nimport { detectType } from './detector.mjs';\n\n/**\n * no operation\n */\nfunction noop() {}\n\n/**\n * copy value\n *\n * @param {*} value\n * @param {string} [type=null]\n * @param {Function} [customizer=noop]\n * @return {*}\n */\nexport function copy(value, type = null, customizer = noop) {\n if (arguments.length === 2 && typeof type === 'function') {\n customizer = type;\n type = null;\n }\n\n const valueType = type || detectType(value);\n const copyFunction = copyMap.get(valueType);\n\n if (valueType === 'Object') {\n const result = customizer(value, valueType);\n\n if (result !== undefined) {\n return result;\n }\n }\n\n // NOTE: TypedArray needs pass type to argument\n return copyFunction ? copyFunction(value, valueType) : value;\n}\n","import { detectType } from './detector.mjs';\nimport { get, isCollection, set } from './collection.mjs';\nimport { copy } from './copier.mjs';\n\n/**\n * deepcopy function\n *\n * @param {*} value\n * @param {Object|Function} [options]\n * @return {*}\n */\nexport default function deepcopy(value, options = {}) {\n if (typeof options === 'function') {\n options = {\n customizer: options\n };\n }\n\n const {\n // TODO: before/after customizer\n customizer\n // TODO: max depth\n // depth = Infinity,\n } = options;\n\n const valueType = detectType(value);\n\n if (!isCollection(valueType)) {\n return recursiveCopy(value, null, null, null, customizer);\n }\n\n const copiedValue = copy(value, valueType, customizer);\n\n const references = new WeakMap([[value, copiedValue]]);\n const visited = new WeakSet([value]);\n\n return recursiveCopy(value, copiedValue, references, visited, customizer);\n}\n\n/**\n * recursively copy\n *\n * @param {*} value target value\n * @param {*} clone clone of value\n * @param {WeakMap} references visited references of clone\n * @param {WeakSet} visited visited references of value\n * @param {Function} customizer user customize function\n * @return {*}\n */\nfunction recursiveCopy(value, clone, references, visited, customizer) {\n const type = detectType(value);\n const copiedValue = copy(value, type);\n\n // return if not a collection value\n if (!isCollection(type)) {\n return copiedValue;\n }\n\n let keys;\n\n switch (type) {\n case 'Arguments':\n case 'Array':\n keys = Object.keys(value);\n break;\n case 'Object':\n keys = Object.keys(value);\n keys.push(...Object.getOwnPropertySymbols(value));\n break;\n case 'Map':\n case 'Set':\n keys = value.keys();\n break;\n default:\n }\n\n // walk within collection with iterator\n for (let collectionKey of keys) {\n const collectionValue = get(value, collectionKey, type);\n\n if (visited.has(collectionValue)) {\n // for [Circular]\n set(clone, collectionKey, references.get(collectionValue), type);\n } else {\n const collectionValueType = detectType(collectionValue);\n const copiedCollectionValue = copy(collectionValue, collectionValueType);\n\n // save reference if value is collection\n if (isCollection(collectionValueType)) {\n references.set(collectionValue, copiedCollectionValue);\n visited.add(collectionValue);\n }\n\n set(\n clone,\n collectionKey,\n recursiveCopy(\n collectionValue,\n copiedCollectionValue,\n references,\n visited,\n customizer\n ),\n type\n );\n }\n }\n\n // TODO: isSealed/isFrozen/isExtensible\n\n return clone;\n}\n","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r{if(\"undefined\"==typeof self)return!1;if(\"top\"in self&&self!==top)try{top.window.document._=0}catch(e){return!1}return\"showOpenFilePicker\"in self})(),t=e?Promise.resolve().then(function(){return l}):Promise.resolve().then(function(){return v});async function n(...e){return(await t).default(...e)}const r=e?Promise.resolve().then(function(){return y}):Promise.resolve().then(function(){return b});async function i(...e){return(await r).default(...e)}const a=e?Promise.resolve().then(function(){return m}):Promise.resolve().then(function(){return k});async function o(...e){return(await a).default(...e)}const s=async e=>{const t=await e.getFile();return t.handle=e,t};var c=async(e=[{}])=>{Array.isArray(e)||(e=[e]);const t=[];e.forEach((e,n)=>{t[n]={description:e.description||\"Files\",accept:{}},e.mimeTypes?e.mimeTypes.map(r=>{t[n].accept[r]=e.extensions||[]}):t[n].accept[\"*/*\"]=e.extensions||[]});const n=await window.showOpenFilePicker({id:e[0].id,startIn:e[0].startIn,types:t,multiple:e[0].multiple||!1,excludeAcceptAllOption:e[0].excludeAcceptAllOption||!1}),r=await Promise.all(n.map(s));return e[0].multiple?r:r[0]},l={__proto__:null,default:c};function u(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+\" is not an object.\"));var t=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:t}})}return u=function(e){this.s=e,this.n=e.next},u.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new u(e)}const p=async(e,t,n=e.name,r)=>{const i=[],a=[];var o,s=!1,c=!1;try{for(var l,d=function(e){var t,n,r,i=2;for(\"undefined\"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);i--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new u(t.call(e));n=\"@@asyncIterator\",r=\"@@iterator\"}throw new TypeError(\"Object is not async iterable\")}(e.values());s=!(l=await d.next()).done;s=!1){const o=l.value,s=`${n}/${o.name}`;\"file\"===o.kind?a.push(o.getFile().then(t=>(t.directoryHandle=e,t.handle=o,Object.defineProperty(t,\"webkitRelativePath\",{configurable:!0,enumerable:!0,get:()=>s})))):\"directory\"!==o.kind||!t||r&&r(o)||i.push(p(o,t,s,r))}}catch(e){c=!0,o=e}finally{try{s&&null!=d.return&&await d.return()}finally{if(c)throw o}}return[...(await Promise.all(i)).flat(),...await Promise.all(a)]};var d=async(e={})=>{e.recursive=e.recursive||!1,e.mode=e.mode||\"read\";const t=await window.showDirectoryPicker({id:e.id,startIn:e.startIn,mode:e.mode});return(await(await t.values()).next()).done?[t]:p(t,e.recursive,void 0,e.skipDirectory)},y={__proto__:null,default:d},f=async(e,t=[{}],n=null,r=!1,i=null)=>{Array.isArray(t)||(t=[t]),t[0].fileName=t[0].fileName||\"Untitled\";const a=[];let o=null;if(e instanceof Blob&&e.type?o=e.type:e.headers&&e.headers.get(\"content-type\")&&(o=e.headers.get(\"content-type\")),t.forEach((e,t)=>{a[t]={description:e.description||\"Files\",accept:{}},e.mimeTypes?(0===t&&o&&e.mimeTypes.push(o),e.mimeTypes.map(n=>{a[t].accept[n]=e.extensions||[]})):o?a[t].accept[o]=e.extensions||[]:a[t].accept[\"*/*\"]=e.extensions||[]}),n)try{await n.getFile()}catch(e){if(n=null,r)throw e}const s=n||await window.showSaveFilePicker({suggestedName:t[0].fileName,id:t[0].id,startIn:t[0].startIn,types:a,excludeAcceptAllOption:t[0].excludeAcceptAllOption||!1});!n&&i&&i(s);const c=await s.createWritable();if(\"stream\"in e){const t=e.stream();return await t.pipeTo(c),s}return\"body\"in e?(await e.body.pipeTo(c),s):(await c.write(await e),await c.close(),s)},m={__proto__:null,default:f},w=async(e=[{}])=>(Array.isArray(e)||(e=[e]),new Promise((t,n)=>{const r=document.createElement(\"input\");r.type=\"file\";const i=[...e.map(e=>e.mimeTypes||[]),...e.map(e=>e.extensions||[])].join();r.multiple=e[0].multiple||!1,r.accept=i||\"\",r.style.display=\"none\",document.body.append(r);const a=e=>{\"function\"==typeof o&&o(),t(e)},o=e[0].legacySetup&&e[0].legacySetup(a,()=>o(n),r),s=()=>{window.removeEventListener(\"focus\",s),r.remove()};r.addEventListener(\"click\",()=>{window.addEventListener(\"focus\",s)}),r.addEventListener(\"change\",()=>{window.removeEventListener(\"focus\",s),r.remove(),a(r.multiple?Array.from(r.files):r.files[0])}),\"showPicker\"in HTMLInputElement.prototype?r.showPicker():r.click()})),v={__proto__:null,default:w},h=async(e=[{}])=>(Array.isArray(e)||(e=[e]),e[0].recursive=e[0].recursive||!1,new Promise((t,n)=>{const r=document.createElement(\"input\");r.type=\"file\",r.webkitdirectory=!0;const i=e=>{\"function\"==typeof a&&a(),t(e)},a=e[0].legacySetup&&e[0].legacySetup(i,()=>a(n),r);r.addEventListener(\"change\",()=>{let t=Array.from(r.files);e[0].recursive?e[0].recursive&&e[0].skipDirectory&&(t=t.filter(t=>t.webkitRelativePath.split(\"/\").every(t=>!e[0].skipDirectory({name:t,kind:\"directory\"})))):t=t.filter(e=>2===e.webkitRelativePath.split(\"/\").length),i(t)}),\"showPicker\"in HTMLInputElement.prototype?r.showPicker():r.click()})),b={__proto__:null,default:h},P=async(e,t={})=>{Array.isArray(t)&&(t=t[0]);const n=document.createElement(\"a\");let r=e;\"body\"in e&&(r=await async function(e,t){const n=e.getReader(),r=new ReadableStream({start:e=>async function t(){return n.read().then(({done:n,value:r})=>{if(!n)return e.enqueue(r),t();e.close()})}()}),i=new Response(r),a=await i.blob();return n.releaseLock(),new Blob([a],{type:t})}(e.body,e.headers.get(\"content-type\"))),n.download=t.fileName||\"Untitled\",n.href=URL.createObjectURL(await r);const i=()=>{\"function\"==typeof a&&a()},a=t.legacySetup&&t.legacySetup(i,()=>a(),n);return n.addEventListener(\"click\",()=>{setTimeout(()=>URL.revokeObjectURL(n.href),3e4),i()}),n.click(),null},k={__proto__:null,default:P};export{i as directoryOpen,h as directoryOpenLegacy,d as directoryOpenModern,n as fileOpen,w as fileOpenLegacy,c as fileOpenModern,o as fileSave,P as fileSaveLegacy,f as fileSaveModern,e as supported};\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","// https://github.com/electron/electron/issues/2288\nfunction isElectron() {\n // Renderer process\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\n return true;\n }\n\n // Main process\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) {\n return true;\n }\n\n // Detect the user agent when the `nodeIntegration` option is set to false\n if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isElectron;\n","import detectElectron from 'is-electron'\n\nexport const isEnvWithDom = typeof window === 'object' && typeof document === 'object' && document.nodeType === 9\nexport const isElectron = detectElectron()\n\n/**\n * Detects browser main thread **NOT** web worker or service worker\n */\nexport const isBrowser = isEnvWithDom && !isElectron\nexport const isElectronMain = isElectron && !isEnvWithDom\nexport const isElectronRenderer = isElectron && isEnvWithDom\nexport const isNode = typeof globalThis.process !== 'undefined' && typeof globalThis.process.release !== 'undefined' && globalThis.process.release.name === 'node' && !isElectron\n// @ts-ignore\n// eslint-disable-next-line no-undef\nexport const isWebWorker = typeof importScripts === 'function' && typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope\n\n// defeat bundlers replacing process.env.NODE_ENV with \"development\" or whatever\nexport const isTest = typeof globalThis.process !== 'undefined' && typeof globalThis.process.env !== 'undefined' && globalThis.process.env['NODE' + (() => '_')() + 'ENV'] === 'test'\nexport const isReactNative = typeof navigator !== 'undefined' && navigator.product === 'ReactNative'\n","import JSZip from \"jszip\";\nimport { fileSave } from \"browser-fs-access\";\nimport path from \"path\";\nimport { isNode, isElectronMain } from \"wherearewe\";\nexport function traduire(trads, langues) {\n const langueTrouvée = langues.find((l) => trads[l] !== undefined);\n const nImporteLaquelle = Object.values(trads)[0];\n const trad = langueTrouvée ? trads[langueTrouvée] : nImporteLaquelle;\n return trad;\n}\nexport async function zipper(fichiersDocs, fichiersSFIP, nomFichier) {\n if (!nomFichier.endsWith(\".zip\"))\n nomFichier = `${nomFichier}.zip`;\n const fichierZip = new JSZip();\n for (const doc of fichiersDocs) {\n fichierZip.file(doc.nom, doc.octets);\n }\n const dossierFichiersSFIP = fichierZip.folder(\"sfip\");\n for (const fichier of fichiersSFIP) {\n dossierFichiersSFIP.file(fichier.nom, fichier.octets);\n }\n await sauvegarderFichierZip({ fichierZip, nomFichier });\n}\nexport async function sauvegarderFichierZip({ fichierZip, nomFichier, }) {\n if (isNode || isElectronMain) {\n const fs = await import(\"fs\");\n const contenu = fichierZip.generateNodeStream();\n fs.mkdirSync(path.dirname(nomFichier), { recursive: true });\n const fluxÉcriture = fs.createWriteStream(nomFichier);\n const flux = contenu.pipe(fluxÉcriture);\n return new Promise((résoudre) => flux.on(\"finish\", résoudre));\n }\n else {\n const contenu = await fichierZip.generateAsync({ type: \"blob\" });\n await fileSave(contenu, { fileName: nomFichier });\n }\n}\n//# sourceMappingURL=donn%C3%A9es.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import { CID } from \"multiformats/cid\";\nimport { concat } from \"uint8arrays/concat\";\nexport function idcValide(idc) {\n if (typeof idc === \"string\") {\n try {\n CID.parse(idc);\n return true;\n }\n catch {\n return false;\n }\n }\n return false;\n}\n// Identique à it-to-buffer, mais avec option de maximum de taille\nexport async function toBuffer(stream, max) {\n let buffer = new Uint8Array(0);\n for await (const buf of stream) {\n buffer = concat([buffer, buf], buffer.length + buf.length);\n if (max !== undefined && buffer.length > max)\n return null;\n }\n return buffer;\n}\n//# sourceMappingURL=sfip.js.map","import { EventEmitter, once } from \"events\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nimport deepEqual from \"deep-equal\";\nclass ÉmetteurUneFois extends EventEmitter {\n condition;\n résultatPrêt;\n fOublier;\n résultat;\n f;\n constructor(f, condition) {\n super();\n this.condition = condition || (() => true);\n this.résultatPrêt = false;\n this.f = f;\n this.initialiser();\n }\n async initialiser() {\n const fSuivre = async (résultat) => {\n if (await this.condition(résultat)) {\n this.résultat = résultat;\n this.résultatPrêt = true;\n if (this.fOublier)\n this.lorsquePrêt();\n }\n };\n this.fOublier = await this.f(fSuivre);\n this.lorsquePrêt();\n }\n lorsquePrêt() {\n if (this.résultatPrêt) {\n if (!this.fOublier)\n throw new Error(\"Fuite !!\");\n if (this.fOublier)\n this.fOublier();\n this.emit(\"fini\", this.résultat);\n }\n }\n}\nexport const suivreBdDeFonction = async ({ fRacine, f, fSuivre, }) => {\n let oublierFSuivre;\n let idBdCible;\n let premièreFois = true;\n const oublierRacine = await fRacine({\n fSuivreRacine: async (nouvelIdBdCible) => {\n if (nouvelIdBdCible === undefined && premièreFois) {\n premièreFois = false;\n await f(undefined);\n }\n if (nouvelIdBdCible !== idBdCible) {\n idBdCible = nouvelIdBdCible;\n if (oublierFSuivre)\n await oublierFSuivre();\n if (idBdCible) {\n oublierFSuivre = await fSuivre({ id: idBdCible, fSuivreBd: f });\n }\n else {\n await f(undefined);\n oublierFSuivre = undefined;\n }\n }\n },\n });\n return async () => {\n await oublierRacine();\n if (oublierFSuivre)\n await oublierFSuivre();\n };\n};\nexport const uneFois = async function (f, condition) {\n const émetteur = new ÉmetteurUneFois(f, condition);\n const résultat = (await once(émetteur, \"fini\"));\n return résultat[0];\n};\nexport const faisRien = async () => {\n // Rien à faire\n};\nexport const ignorerNonDéfinis = (f) => {\n return async (x) => {\n if (x !== undefined) {\n return await f(x);\n }\n };\n};\nexport const attendreStabilité = (n) => {\n let déjàAppellé = false;\n let val = undefined;\n let annulerRebours = faisRien;\n return (v) => new Promise((résoudre) => {\n if (déjàAppellé && JSON.stringify(v) === val)\n return;\n déjàAppellé = true;\n annulerRebours();\n val = JSON.stringify(v);\n const crono = setTimeout(() => résoudre(true), n);\n annulerRebours = () => {\n clearTimeout(crono);\n résoudre(false);\n };\n });\n};\nexport const suivreBdsDeFonctionListe = async ({ fListe, f, fBranche, fIdBdDeBranche = (b) => b, fRéduction = (branches) => [...new Set(branches.flat())], fCode = (é) => é, }) => {\n const arbre = {};\n const dictBranches = {};\n let prêt = false; // Afin d'éviter d'appeler fFinale() avant que toutes les branches aient été évaluées 1 fois\n const fFinale = async () => {\n if (!prêt)\n return;\n // Arrêter si aucune des branches n'a encore donnée son premier résultat\n if (Object.values(arbre).length &&\n Object.values(arbre).every((x) => !x.déjàÉvaluée))\n return;\n const listeDonnées = Object.values(arbre)\n .map((x) => x.données)\n .filter((d) => d !== undefined);\n const réduits = fRéduction(listeDonnées);\n await f(réduits);\n };\n const verrou = new Semaphore();\n const fSuivreRacine = async (éléments) => {\n await verrou.acquire(\"racine\");\n if (éléments.some((x) => typeof fCode(x) !== \"string\")) {\n console.error(\"Définir fCode si les éléments ne sont pas en format texte (chaînes).\");\n throw new Error(\"Définir fCode si les éléments ne sont pas en format texte (chaînes).\");\n }\n const dictÉléments = Object.fromEntries(éléments.map((é) => [fCode(é), é]));\n const existants = Object.keys(arbre);\n let nouveaux = Object.keys(dictÉléments).filter((é) => !existants.includes(é));\n const disparus = existants.filter((é) => !Object.keys(dictÉléments).includes(é));\n const changés = Object.entries(dictÉléments)\n .filter((é) => {\n return !deepEqual(dictBranches[é[0]], é[1]);\n })\n .map((é) => é[0]);\n nouveaux.push(...changés);\n nouveaux = [...new Set(nouveaux)];\n await Promise.all(changés.map(async (c) => {\n if (arbre[c]) {\n const fOublier = arbre[c].fOublier;\n if (fOublier)\n await fOublier();\n delete arbre[c];\n }\n }));\n await Promise.all(disparus.map(async (d) => {\n const fOublier = arbre[d].fOublier;\n if (fOublier)\n await fOublier();\n delete arbre[d];\n }));\n await Promise.all(nouveaux.map(async (n) => {\n arbre[n] = {\n déjàÉvaluée: false,\n };\n const élément = dictÉléments[n];\n dictBranches[n] = élément;\n const idBdBranche = fIdBdDeBranche(élément);\n const fSuivreBranche = async (données) => {\n arbre[n].données = données;\n arbre[n].déjàÉvaluée = true;\n await fFinale();\n };\n const fOublier = await fBranche(idBdBranche, fSuivreBranche, élément);\n arbre[n].fOublier = fOublier;\n }));\n prêt = true;\n await fFinale();\n verrou.release(\"racine\");\n };\n const retourRacine = await fListe(fSuivreRacine);\n let oublierBdRacine;\n const fOublier = async () => {\n await oublierBdRacine();\n await Promise.all(Object.values(arbre).map((x) => x.fOublier && x.fOublier()));\n };\n if (typeof retourRacine === \"function\") {\n oublierBdRacine = retourRacine;\n return fOublier;\n }\n else {\n oublierBdRacine = retourRacine.fOublier;\n return Object.assign({}, retourRacine, { fOublier });\n }\n};\n//# sourceMappingURL=fonctions.js.map","/**\n * geoJSON validation according to the GeoJSON spefication Version 1\n * @module geoJSONValidation\n * @class Main\n * @exports {GJV}\n */\n\nconst definitions = {}\n\n/**\n * Test an object to see if it is a function\n * @method isFunction\n * @param object {Object}\n * @return {Boolean}\n */\nfunction isFunction (object) {\n return typeof (object) === 'function'\n}\n\n/**\n * A truthy test for objects\n * @method isObject\n * @param {Object}\n * @return {Boolean}\n */\nfunction isObject (object) {\n return object === Object(object)\n}\n\n/**\n * Formats error messages, calls the callback\n * @method done\n * @private\n * @param trace {Boolean} Whether or not to return the trace\n * @param [message]\n * @return {Boolean} is the object valid or not?\n */\nfunction _done (trace, message) {\n let valid = false\n\n if (typeof message === 'string') {\n message = [message]\n } else if (Object.prototype.toString.call(message) === '[object Array]') {\n if (message.length === 0) {\n valid = true\n }\n } else {\n valid = true\n }\n\n if (trace) {\n return message\n } else {\n return valid\n }\n}\n\n/**\n * calls a custom definition if one is avalible for the given type\n * @method _customDefinitions\n * @private\n * @param type {'String'} a GeoJSON object type\n * @param object {Object} the Object being tested\n * @return {Array} an array of errors\n */\nfunction _customDefinitions (type, object) {\n let errors\n\n if (isFunction(definitions[type])) {\n try {\n errors = definitions[type](object)\n } catch (e) {\n errors = ['Problem with custom definition for '+type+': '+e]\n }\n if (typeof result === 'string') {\n errors = [errors]\n }\n if (Object.prototype.toString.call(errors) === '[object Array]') {\n return errors\n }\n }\n return []\n}\n\n/**\n * Define a custom validation function for one of GeoJSON objects\n * @method define\n * @param type {GeoJSON Type} the type\n * @param definition {Function} A validation function\n * @return {Boolean} Return true if the function was loaded corectly else false\n */\nexports.define = (type, definition) => {\n if ((type in allTypes) && isFunction(definition)) {\n // TODO: check to see if the type is valid\n definitions[type] = definition\n return true\n } else {\n return false\n }\n}\n\n/**\n * Determines if an object is a position or not\n * @method isPosition\n * @param position {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isPosition = (position, trace = false) => {\n let errors = []\n\n // It must be an array\n if (Array.isArray(position)) {\n // and the array must have more than one element\n if (position.length <= 1) {\n errors.push('Position must be at least two elements')\n }\n\n position.forEach((pos, index) => {\n if (typeof pos !== 'number') {\n errors.push('Position must only contain numbers. Item '+pos+' at index '+index+' is invalid.')\n }\n })\n } else {\n errors.push('Position must be an array')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('Position', position))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a GeoJSON Object or not\n * @method isGeoJSONObject|valid\n * @param geoJSONObject {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isGeoJSONObject = exports.valid = (geoJSONObject, trace = false) => {\n if (!isObject(geoJSONObject)) {\n return _done(trace, ['must be a JSON Object'])\n } else {\n let errors = []\n if ('type' in geoJSONObject) {\n if (nonGeoTypes[geoJSONObject.type]) {\n return nonGeoTypes[geoJSONObject.type](geoJSONObject, trace)\n } else if (geoTypes[geoJSONObject.type]) {\n return geoTypes[geoJSONObject.type](geoJSONObject, trace)\n } else {\n errors.push('type must be one of: \"Point\", \"MultiPoint\", \"LineString\", \"MultiLineString\", \"Polygon\", \"MultiPolygon\", \"GeometryCollection\", \"Feature\", or \"FeatureCollection\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('GeoJSONObject', geoJSONObject))\n return _done(trace, errors)\n }\n}\n\n/**\n * Determines if an object is a Geometry Object or not\n * @method isGeometryObject\n * @param geometryObject {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isGeometryObject = (geometryObject, trace = false) => {\n if (!isObject(geometryObject)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('type' in geometryObject) {\n if (geoTypes[geometryObject.type]) {\n return geoTypes[geometryObject.type](geometryObject, trace)\n } else {\n errors.push('type must be one of: \"Point\", \"MultiPoint\", \"LineString\", \"MultiLineString\", \"Polygon\", \"MultiPolygon\" or \"GeometryCollection\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('GeometryObject', geometryObject))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a Point or not\n * @method isPoint\n * @param point {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isPoint = (point, trace = false) => {\n if (!isObject(point)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in point) {\n const t = exports.isBbox(point.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in point) {\n if (point.type !== 'Point') {\n errors.push('type must be \"Point\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in point) {\n const t = exports.isPosition(point.coordinates, true)\n if (t.length) {\n\terrors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('Point', point))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array can be interperted as coordinates for a MultiPoint\n * @method isMultiPointCoor\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiPointCoor = (coordinates, trace = false) => {\n let errors = []\n\n if (Array.isArray(coordinates)) {\n coordinates.forEach((val, index) => {\n const t = exports.isPosition(val, true)\n if (t.length) {\n // modify the err msg from \"isPosition\" to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalide positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('coordinates must be an array')\n }\n return _done(trace, errors)\n}\n/**\n * Determines if an object is a MultiPoint or not\n * @method isMultiPoint\n * @param position {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiPoint = (multiPoint, trace = false) => {\n if (!isObject(multiPoint)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in multiPoint) {\n const t = exports.isBbox(multiPoint.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in multiPoint) {\n if (multiPoint.type !== 'MultiPoint') {\n errors.push('type must be \"MultiPoint\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in multiPoint) {\n const t = exports.isMultiPointCoor(multiPoint.coordinates, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('MultiPoint', multiPoint))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array can be interperted as coordinates for a lineString\n * @method isLineStringCoor\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isLineStringCoor = (coordinates, trace = false) => {\n let errors = []\n if (Array.isArray(coordinates)) {\n if (coordinates.length > 1) {\n coordinates.forEach((val, index) => {\n const t = exports.isPosition(val, true)\n if (t.length) {\n // modify the err msg from 'isPosition' to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalide positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('coordinates must have at least two elements')\n }\n } else {\n errors.push('coordinates must be an array')\n }\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a lineString or not\n * @method isLineString\n * @param lineString {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isLineString = (lineString, trace = false) => {\n if (!isObject(lineString)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in lineString) {\n const t = exports.isBbox(lineString.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in lineString) {\n if (lineString.type !== 'LineString') {\n errors.push('type must be \"LineString\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in lineString) {\n const t = exports.isLineStringCoor(lineString.coordinates, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('LineString', lineString))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array can be interperted as coordinates for a MultiLineString\n * @method isMultiLineStringCoor\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiLineStringCoor = (coordinates, trace = false) => {\n let errors = []\n if (Array.isArray(coordinates)) {\n\tcoordinates.forEach((val, index) => {\n\t const t = exports.isLineStringCoor(val, true)\n\t if (t.length) {\n\t\t// modify the err msg from 'isPosition' to note the element number\n\t\tt[0] = 'at ' + index + ': '.concat(t[0])\n\t\t// build a list of invalide positions\n\t\terrors = errors.concat(t)\n\t }\n\t})\n } else {\n\terrors.push('coordinates must be an array')\n }\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a MultiLine String or not\n * @method isMultiLineString\n * @param multilineString {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiLineString = (multilineString, trace = false) => {\n if (!isObject(multilineString)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in multilineString) {\n const t = exports.isBbox(multilineString.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in multilineString) {\n if (multilineString.type !== 'MultiLineString') {\n errors.push('type must be \"MultiLineString\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in multilineString) {\n const t = exports.isMultiLineStringCoor(multilineString.coordinates, true)\n\n if (t.length) {\n errors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('MultiPoint', multilineString))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array is a linear Ring String or not\n * @method isMultiLineString\n * @private\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nfunction _linearRingCoor (coordinates, trace) {\n let errors = []\n if (Array.isArray(coordinates)) {\n // 4 or more positions\n coordinates.forEach((val, index) => {\n const t = exports.isPosition(val, true)\n if (t.length) {\n\t// modify the err msg from 'isPosition' to note the element number\n\tt[0] = 'at ' + index + ': '.concat(t[0])\n\t// build a list of invalide positions\n\terrors = errors.concat(t)\n }\n })\n\n // check the first and last positions to see if they are equivalent\n // TODO: maybe better checking?\n if (coordinates[0].toString() !== coordinates[coordinates.length - 1].toString()) {\n errors.push('The first and last positions must be equivalent')\n }\n\n if (coordinates.length < 4) {\n errors.push('coordinates must have at least four positions')\n }\n } else {\n errors.push('coordinates must be an array')\n }\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array is valid Polygon Coordinates or not\n * @method _polygonCoor\n * @private\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isPolygonCoor = (coordinates, trace = false) => {\n let errors = []\n if (Array.isArray(coordinates)) {\n coordinates.forEach((val, index) => {\n const t = _linearRingCoor(val, true)\n\n if (t.length) {\n // modify the err msg from 'isPosition' to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalid positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('coordinates must be an array')\n }\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid Polygon\n * @method isPolygon\n * @param polygon {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isPolygon = (polygon, trace = false) => {\n if (!isObject(polygon)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n\n if ('bbox' in polygon) {\n const t = exports.isBbox(polygon.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in polygon) {\n if (polygon.type !== 'Polygon') {\n errors.push('type must be \"Polygon\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in polygon) {\n const t = exports.isPolygonCoor(polygon.coordinates, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('Polygon', polygon))\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array can be interperted as coordinates for a MultiPolygon\n * @method isMultiPolygonCoor\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiPolygonCoor = (coordinates, trace = false) => {\n let errors = []\n if (Array.isArray(coordinates)) {\n coordinates.forEach((val, index) => {\n const t = exports.isPolygonCoor(val, true)\n if (t.length) {\n // modify the err msg from 'isPosition' to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalide positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('coordinates must be an array')\n }\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid MultiPolygon\n * @method isMultiPolygon\n * @param multiPolygon {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiPolygon = (multiPolygon, trace = false) => {\n if (!isObject(multiPolygon)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in multiPolygon) {\n const t = exports.isBbox(multiPolygon.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in multiPolygon) {\n if (multiPolygon.type !== 'MultiPolygon') {\n errors.push('type must be \"MultiPolygon\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in multiPolygon) {\n const t = exports.isMultiPolygonCoor(multiPolygon.coordinates, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('MultiPolygon', multiPolygon))\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid Geometry Collection\n * @method isGeometryCollection\n * @param geometryCollection {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isGeometryCollection = (geometryCollection, trace = false) => {\n if (!isObject(geometryCollection)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in geometryCollection) {\n const t = exports.isBbox(geometryCollection.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in geometryCollection) {\n if (geometryCollection.type !== 'GeometryCollection') {\n errors.push('type must be \"GeometryCollection\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('geometries' in geometryCollection) {\n if (Array.isArray(geometryCollection.geometries)) {\n geometryCollection.geometries.forEach((val, index) => {\n const t = exports.isGeometryObject(val, true)\n if (t.length) {\n // modify the err msg from 'isPosition' to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalide positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('\"geometries\" must be an array')\n }\n } else {\n errors.push('must have a member with the name \"geometries\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('GeometryCollection', geometryCollection))\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid Feature\n * @method isFeature\n * @param feature {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isFeature = (feature, trace = false) => {\n if (!isObject(feature)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in feature) {\n const t = exports.isBbox(feature.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in feature) {\n if (feature.type !== 'Feature') {\n errors.push('type must be \"Feature\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if (!('properties' in feature)) {\n errors.push('must have a member with the name \"properties\"')\n }\n\n if ('geometry' in feature) {\n if (feature.geometry !== null) {\n const t = exports.isGeometryObject(feature.geometry, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n } else {\n errors.push('must have a member with the name \"geometry\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('Feature', feature))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid Feature Collection\n * @method isFeatureCollection\n * @param featureCollection {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isFeatureCollection = (featureCollection, trace = false) => {\n if (!isObject(featureCollection)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in featureCollection) {\n const t = exports.isBbox(featureCollection.bbox, true)\n if (t.length) {\n errors = t\n }\n }\n\n if ('type' in featureCollection) {\n if (featureCollection.type !== 'FeatureCollection') {\n errors.push('type must be \"FeatureCollection\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('features' in featureCollection) {\n if (Array.isArray(featureCollection.features)) {\n featureCollection.features.forEach((val, index) => {\n const t = exports.isFeature(val, true)\n if (t.length) {\n\n // modify the err msg from 'isPosition' to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalide positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('\"Features\" must be an array')\n }\n } else {\n errors.push('must have a member with the name \"Features\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('FeatureCollection', featureCollection))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid Bounding Box\n * @method isBbox\n * @param bbox {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isBbox = (bbox, trace = false) => {\n let errors = []\n if (Array.isArray(bbox)) {\n if (bbox.length % 2 !== 0) {\n errors.push('bbox, must be a 2*n array')\n }\n } else {\n errors.push('bbox must be an array')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('Bbox', bbox))\n return _done(trace, errors)\n}\n\nconst nonGeoTypes = {\n 'Feature': exports.isFeature,\n 'FeatureCollection': exports.isFeatureCollection\n}\n\nconst geoTypes = {\n 'Point': exports.isPoint,\n 'MultiPoint': exports.isMultiPoint,\n 'LineString': exports.isLineString,\n 'MultiLineString': exports.isMultiLineString,\n 'Polygon': exports.isPolygon,\n 'MultiPolygon': exports.isMultiPolygon,\n 'GeometryCollection': exports.isGeometryCollection\n}\n\nconst allTypes = {\n 'Feature': exports.isFeature,\n 'FeatureCollection': exports.isFeatureCollection,\n 'Point': exports.isPoint,\n 'MultiPoint': exports.isMultiPoint,\n 'LineString': exports.isLineString,\n 'MultiLineString': exports.isMultiLineString,\n 'Polygon': exports.isPolygon,\n 'MultiPolygon': exports.isMultiPolygon,\n 'GeometryCollection': exports.isGeometryCollection,\n 'Bbox': exports.isBbox,\n 'Position': exports.isPosition,\n 'GeoJSON': exports.isGeoJSONObject,\n 'GeometryObject': exports.isGeometryObject\n}\n\nexports.allTypes = allTypes\n","export const estSpécificationHoroDatage = (val) => {\n return (!!val &&\n typeof val.système === \"string\" &&\n typeof val.val === \"string\");\n};\nexport class Cholqij {\n lireDate(date) {\n const { système, val } = date;\n switch (système) {\n case \"dateJS\":\n case \"grégorien\": {\n const date_ = new Date(val);\n if (isNaN(date_.valueOf()))\n throw new Error(val);\n return date_;\n }\n default:\n throw new Error(système);\n }\n }\n dateValide(val) {\n if (!estSpécificationHoroDatage(val))\n return false;\n try {\n this.lireDate(val);\n return true;\n }\n catch {\n return false;\n }\n }\n}\nexport const cholqij = new Cholqij();\n//# sourceMappingURL=cholqij.js.map","import { CID } from 'multiformats/cid';\nimport { base58btc } from 'multiformats/bases/base58';\nimport gjv from 'geojson-validation';\nimport { idcValide } from './sfip.js';\nimport { cholqij } from \"./cholqij.js\";\nexport const adresseOrbiteValide = (address) => {\n // Code de @orbitdb/core\n address = address.toString();\n if (!address.startsWith('/orbitdb') && !address.startsWith('\\\\orbitdb')) {\n return false;\n }\n address = address.replaceAll('/orbitdb/', '');\n address = address.replaceAll('\\\\orbitdb\\\\', '');\n address = address.replaceAll('/', '');\n address = address.replaceAll('\\\\', '');\n let idc;\n try {\n idc = CID.parse(address, base58btc);\n }\n catch (e) {\n return false;\n }\n return idc !== undefined;\n};\nexport const formatsFichiers = {\n images: [\n 'webp',\n 'svg',\n 'png',\n 'jpg',\n 'jpeg',\n 'jfif',\n 'pjpeg',\n 'pjp',\n 'gif',\n 'avif',\n 'apng',\n ],\n vidéo: ['mp4'],\n audio: ['mp3', 'ogg', 'm4a'],\n};\nexport const idcEtExt = (val) => {\n try {\n const [id, fichier] = val.split('/');\n if (idcValide(id)) {\n const ext = fichier.split('.').pop();\n if (ext) {\n return {\n ext,\n fichier,\n id,\n };\n }\n }\n }\n catch {\n // Rien à faire\n }\n return undefined;\n};\nexport const devinerCatégorie = (val) => {\n if (typeof val === 'boolean')\n return 'booléen';\n else if (typeof val === 'string') {\n try {\n const [id, fichier] = val.split('/');\n if (idcValide(id)) {\n const ext = fichier.split('.').pop();\n if (ext && formatsFichiers.images.includes(ext))\n return 'image';\n else if (ext && formatsFichiers.vidéo.includes(ext))\n return 'vidéo';\n else if (ext && formatsFichiers.audio.includes(ext))\n return 'audio';\n else if (ext)\n return 'fichier';\n }\n }\n catch {\n // Rien à faire\n }\n return adresseOrbiteValide(val) ? 'chaîne' : 'chaîneNonTraductible';\n }\n else if (typeof val === 'number') {\n if (val > 100000000000) {\n return 'horoDatage';\n }\n else {\n return 'numérique';\n }\n }\n else if (Array.isArray(val)) {\n if (val.length === 2 && val.every(x => typeof x === 'number' && x > 100000000000)) {\n return 'intervaleTemps';\n }\n else {\n return undefined;\n }\n }\n else if (gjv.valid(val)) {\n return 'géojson';\n }\n return undefined;\n};\nexport const estUnHoroDatage = (val) => {\n if ([\"number\", \"string\"].includes(typeof val)) {\n const date = new Date(val);\n return !isNaN(date.valueOf());\n }\n else {\n return cholqij.dateValide(val);\n }\n};\nexport const validFichier = (val, exts) => {\n if (typeof val !== \"string\")\n return false;\n let id;\n let fichier;\n try {\n [id, fichier] = val.split(\"/\");\n }\n catch {\n return false;\n }\n if (!fichier)\n return false;\n if (!idcValide(id))\n return false;\n if (exts) {\n const ext = fichier.split(\".\").pop();\n return !!ext && exts.includes(ext);\n }\n return true;\n};\nexport const validerCatégorieBase = ({ catégorie, val, }) => {\n switch (catégorie) {\n case \"numérique\":\n return typeof val === \"number\";\n case \"horoDatage\": {\n return estUnHoroDatage(val);\n }\n case \"intervaleTemps\":\n if (!Array.isArray(val))\n return false;\n if (val.length !== 2)\n return false;\n return val.every((d) => estUnHoroDatage(d));\n case \"chaîne\":\n return typeof val === \"string\" && adresseOrbiteValide(val);\n case \"chaîneNonTraductible\":\n return typeof val === \"string\";\n case \"booléen\":\n return typeof val === \"boolean\";\n case \"géojson\":\n if (!(typeof val === \"object\"))\n return false;\n return gjv.valid(val);\n case \"vidéo\":\n return validFichier(val, formatsFichiers.vidéo);\n case \"audio\":\n return validFichier(val, formatsFichiers.audio);\n case \"image\":\n return validFichier(val, formatsFichiers.images);\n case \"fichier\":\n return validFichier(val);\n default:\n return false;\n }\n};\nexport function validerCatégorieVal({ val, catégorie, }) {\n if (val === undefined)\n return true; // Permettre les valeurs manquantes\n if (catégorie.type === \"simple\") {\n return validerCatégorieBase({ catégorie: catégorie.catégorie, val });\n }\n else {\n if (Array.isArray(val)) {\n return val.every((v) => validerCatégorieBase({ catégorie: catégorie.catégorie, val: v }));\n }\n else {\n return false;\n }\n }\n}\n//# sourceMappingURL=valide.js.map","export const அங்கீகார_தத_மீதரவு_சாபி = \"அங்கீகறிக்கப்பட்ட தரவுகள்\";\nexport const பங்கேற்பாளர்_நெடுவரிசை_அடையாளம் = \"பங்கேற்பாளர்\";\nexport const பங்கேற்பாளர்_மாறி_அடையாளம் = \"/orbitdb/zdpuAunUaEc6CRX8wAjNixNioB6hF5SYvwJytx4ynm5wQx1vH\";\nexport const தேதி_நெடுவரிசை_அடையாளம் = \"தேதி\";\nexport const தேதி_மாறி_அடையாளம் = \"/orbitdb/zdpuAkz4jAZW5EM3rK7huQoZAE6L26dtpoVd4UYGGyaQkDmTx\";\nexport const மாறிலிகள் = {\n அங்கீகார_தத_மீதரவு_சாபி,\n பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்,\n பங்கேற்பாளர்_மாறி_அடையாளம்,\n தேதி_நெடுவரிசை_அடையாளம்,\n தேதி_மாறி_அடையாளம்,\n};\n//# sourceMappingURL=%E0%AE%AE%E0%AE%BE%E0%AE%B1%E0%AE%BF%E0%AE%B2%E0%AE%BF%E0%AE%95%E0%AE%B3%E0%AF%8D.js.map","import deepcopy from \"deepcopy\";\nimport { ignorerNonDéfinis, suivreBdDeFonction, uneFois, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { மாறிலிகள் as முன்னிருப்பாக_மாறிலிகள், தேதி_நெடுவரிசை_அடையாளம், தேதி_மாறி_அடையாளம், பங்கேற்பாளர்_நெடுவரிசை_அடையாளம், பங்கேற்பாளர்_மாறி_அடையாளம், அங்கீகார_தத_மீதரவு_சாபி, } from \"./\\u0BAE\\u0BBE\\u0BB1\\u0BBF\\u0BB2\\u0BBF\\u0B95\\u0BB3\\u0BCD.js\";\nconst குறியீட்டு_இல்லாமல்_வார்ப்புரு = (வார்ப்புரு) => {\n வார்ப்புரு = deepcopy(வார்ப்புரு);\n வார்ப்புரு.tableaux = வார்ப்புரு.tableaux.map((tableau) => ({\n clef: tableau.clef,\n cols: tableau.cols.map((col) => ({\n idColonne: col.idColonne,\n idVariable: col.idVariable,\n optionnelle: col.optionnelle,\n })),\n }));\n return வார்ப்புரு;\n};\nexport class கிளி {\n விண்மீன்;\n அட்டவணை_சாபி;\n குழு_அடையாளம்;\n வார்ப்புரு;\n மாறிலிகள்;\n constructor({ விண்மீன், அட்டவணை_சாபி, குழு_அடையாளம், வார்ப்புரு, மாறிலிகள், }) {\n this.விண்மீன் = விண்மீன்;\n this.அட்டவணை_சாபி = அட்டவணை_சாபி;\n this.குழு_அடையாளம் = குழு_அடையாளம்;\n வார்ப்புரு = கிளி.வார்ப்புரு_தயாரிப்பு({\n வார்ப்புரு,\n அட்டவணை_சாபி,\n குழு_அடையாளம்,\n மாறிலிகள்,\n });\n this.வார்ப்புரு = குறியீட்டு_இல்லாமல்_வார்ப்புரு(வார்ப்புரு);\n this.மாறிலிகள் = Object.assign({}, முன்னிருப்பாக_மாறிலிகள், மாறிலிகள்);\n }\n static வார்ப்புரு_தயாரிப்பு({ வார்ப்புரு, அட்டவணை_சாபி, குழு_அடையாளம், மாறிலிகள், }) {\n const நகல் = deepcopy(வார்ப்புரு);\n const வேண்டிய_அட்டவணை = நகல்.tableaux.find((அட்டவணை) => அட்டவணை.clef === அட்டவணை_சாபி);\n if (!வேண்டிய_அட்டவணை)\n throw new Error(\"அட்டவணை சாபி அட்டவணை வார்ப்புரில் கிடைத்ததில்லை.\");\n const தேதி_நெடுவரிசை_உள்ளதா = வேண்டிய_அட்டவணை.cols.find((நெடுவரிசை) => நெடுவரிசை.idColonne ===\n (மாறிலிகள்?.தேதி_நெடுவரிசை_அடையாளம் || தேதி_நெடுவரிசை_அடையாளம்));\n if (!தேதி_நெடுவரிசை_உள்ளதா) {\n வேண்டிய_அட்டவணை.cols.push({\n idVariable: மாறிலிகள்?.தேதி_மாறி_அடையாளம் || தேதி_மாறி_அடையாளம்,\n idColonne: மாறிலிகள்?.தேதி_நெடுவரிசை_அடையாளம் || தேதி_நெடுவரிசை_அடையாளம்,\n });\n நகல்.tableaux = நகல்.tableaux.map((அ) => {\n if (அ.clef === அட்டவணை_சாபி) {\n return வேண்டிய_அட்டவணை;\n }\n else {\n return அ;\n }\n });\n }\n if (!நகல்.nuées) {\n நகல்.nuées = [];\n }\n if (!நகல்.nuées.includes(குழு_அடையாளம்)) {\n நகல்.nuées.push(குழு_அடையாளம்);\n }\n return நகல்;\n }\n static async உருவாக்கு({ விண்மீன், வார்ப்புரு, அட்டவணை_சாபி, பேற்றோர், மாறிலிகள், }) {\n if (!விண்மீன்.nuées || !விண்மீன்.bds)\n throw new Error(\"விண்மீன் தயராரானதில்லை\");\n const குழு_அடையாளம் = await விண்மீன்.nuées.créerNuée({\n nuéeParent: பேற்றோர்,\n });\n வார்ப்புரு = this.வார்ப்புரு_தயாரிப்பு({\n வார்ப்புரு,\n அட்டவணை_சாபி,\n குழு_அடையாளம்,\n மாறிலிகள்,\n });\n for (const அட்டவணை of வார்ப்புரு.tableaux) {\n const அட்டவணை_அடையாளம் = await விண்மீன்.nuées.ajouterTableauNuée({\n idNuée: குழு_அடையாளம்,\n clefTableau: அட்டவணை.clef,\n });\n for (const நெடுவரிசை of அட்டவணை.cols) {\n await விண்மீன்.nuées.ajouterColonneTableauNuée({\n idTableau: அட்டவணை_அடையாளம்,\n idVariable: நெடுவரிசை.idVariable,\n idColonne: நெடுவரிசை.idColonne,\n });\n if (நெடுவரிசை.index) {\n /*await விண்மீன்.nuées.changerColIndexTableauNuée({\n idTableau: அட்டவணை_அடையாளம்,\n idColonne: நெடுவரிசை.idColonne,\n val: true,\n });*/\n }\n }\n if (வார்ப்புரு.motsClefs) {\n await விண்மீன்.nuées.ajouterMotsClefsNuée({\n idNuée: குழு_அடையாளம்,\n idsMotsClefs: வார்ப்புரு.motsClefs,\n });\n }\n }\n const அங்கீகரிக்கப்பட்ட_தரவுத்தளம்_வார்ப்புரு = {\n licence: வார்ப்புரு.licence,\n motsClefs: வார்ப்புரு.motsClefs,\n tableaux: வார்ப்புரு.tableaux.map((அட்டவணை) => {\n if (அட்டவணை.clef === அட்டவணை_சாபி) {\n return {\n clef: அட்டவணை.clef,\n cols: [\n ...அட்டவணை.cols,\n {\n idColonne: மாறிலிகள்?.பங்கேற்பாளர்_நெடுவரிசை_அடையாளம் ||\n பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்,\n idVariable: மாறிலிகள்?.பங்கேற்பாளர்_மாறி_அடையாளம் ||\n பங்கேற்பாளர்_மாறி_அடையாளம்,\n },\n ],\n };\n }\n else {\n return அட்டவணை;\n }\n }),\n };\n const தரவுத்தளம் = await விண்மீன்.bds.créerBdDeSchéma({\n schéma: அங்கீகரிக்கப்பட்ட_தரவுத்தளம்_வார்ப்புரு,\n });\n await விண்மீன்.nuées.sauvegarderMétadonnéeNuée({\n idNuée: குழு_அடையாளம்,\n clef: அங்கீகார_தத_மீதரவு_சாபி,\n valeur: தரவுத்தளம்,\n });\n return குழு_அடையாளம்;\n }\n async அங்கீகரிக்கப்பட்ட_உறுப்படிகளை_கேள்ளு({ செ, }) {\n return await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.விண்மீன்.nuées.suivreNuéesParents({\n idNuée: this.குழு_அடையாளம்,\n f: (பேற்றோர்கள்) => fSuivreRacine([this.குழு_அடையாளம், ...பேற்றோர்கள்].reverse()),\n });\n },\n f: async (உறுப்படிகள்) => {\n return await செ(உறுப்படிகள்);\n },\n fBranche: async (அடையாளம், fSuivreBranche) => {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine, }) => {\n return await this.அங்கீகார_தரவுத்தள்ளத்தைப்_கேள்ளு({\n செ: fSuivreRacine,\n அடையாளம்,\n });\n },\n f: ignorerNonDéfinis(fSuivreBranche),\n fSuivre: async ({ id, fSuivreBd, }) => {\n return await this.விண்மீன்.bds.suivreDonnéesDeTableauParClef({\n idBd: id,\n clefTableau: this.அட்டவணை_சாபி,\n f: fSuivreBd,\n });\n },\n });\n },\n });\n }\n async பரிந்துரைகளை_கேள்ளு({ செ, சந்ததி = true, }) {\n return await this.விண்மீன்.nuées.suivreDonnéesTableauNuée({\n idNuée: this.குழு_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n héritage: சந்ததி ? [\"descendance\", \"ascendance\"] : [\"ascendance\"],\n f: async (த) => {\n await செ(த.map((இ) => {\n return {\n பங்கேற்பாளர்: இ.idCompte,\n அடையாளம்: இ.élément.id,\n பரிந்துரை: இ.élément.données,\n };\n }));\n },\n nRésultatsDésirés: 1000,\n });\n }\n async என்_பரிந்துரைகளை_கேள்ளு({ செ, }) {\n return await this.விண்மீன்.bds.suivreDonnéesDeTableauUnique({\n schémaBd: this.வார்ப்புரு,\n idNuéeUnique: this.குழு_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n f: async (பரிந்துரைகள்) => {\n const பங்கேற்பாளர் = await this.விண்மீன்.obtIdCompte();\n await செ(பரிந்துரைகள்.map((ப) => {\n return {\n பங்கேற்பாளர்,\n அடையாளம்: ப.id,\n பரிந்துரை: ப.données,\n };\n }));\n },\n });\n }\n async பரிந்துரையு({ பரிந்துரை }) {\n const தேதியை_சேரு = (உறுப்படி) => {\n if (!உறுப்படி[this.மாறிலிகள்.தேதி_நெடுவரிசை_அடையாளம்]) {\n return {\n ...உறுப்படி,\n [this.மாறிலிகள்.தேதி_நெடுவரிசை_அடையாளம்]: Date.now(),\n };\n }\n return உறுப்படி;\n };\n const அடையாளம் = await this.விண்மீன்.bds.ajouterÉlémentÀTableauUnique({\n schémaBd: this.வார்ப்புரு,\n idNuéeUnique: this.குழு_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n vals: தேதியை_சேரு(பரிந்துரை),\n });\n return அடையாளம்[0];\n }\n async பரிந்துரையை_நீக்கு({ அடையாளம் }) {\n return await this.விண்மீன்.bds.effacerÉlémentDeTableauUnique({\n schémaBd: this.வார்ப்புரு,\n idNuéeUnique: this.குழு_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n idÉlément: அடையாளம்,\n });\n }\n async பரிந்துரையை_திருத்து({ பரிந்துரை, அடையாளம், }) {\n await this.விண்மீன்.bds.modifierÉlémentDeTableauUnique({\n schémaBd: this.வார்ப்புரு,\n idNuéeUnique: this.குழு_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n vals: பரிந்துரை,\n idÉlément: அடையாளம்,\n });\n }\n async அங்கீகார_தரவுத்தள்ளத்தைப்_கேள்ளு({ செ, அடையாளம், }) {\n const இறுதியான_செயலி = async (மீத்தரவு) => {\n const தரவுத்தள_அடையாளம் = மீத்தரவு[this.மாறிலிகள்.அங்கீகார_தத_மீதரவு_சாபி];\n if (typeof தரவுத்தள_அடையாளம் === \"string\")\n return await செ(தரவுத்தள_அடையாளம்);\n };\n return await this.விண்மீன்.nuées.suivreMétadonnéesNuée({\n idNuée: அடையாளம் || this.குழு_அடையாளம்,\n f: இறுதியான_செயலி,\n hériter: false,\n });\n }\n async அங்கீகார_தரவுத்தள்ளத்தைப்_பெறு() {\n const தரவுத்தள_அடையாளம் = await uneFois(async (செ) => {\n return await this.அங்கீகார_தரவுத்தள்ளத்தைப்_கேள்ளு({ செ });\n });\n return தரவுத்தள_அடையாளம்;\n }\n async அங்கீகரி({ பரிந்துரை, }) {\n const தரவுத்தள_அடையாளம் = await this.அங்கீகார_தரவுத்தள்ளத்தைப்_பெறு();\n const பரிந்துரை_உறுப்படி = Object.assign({}, பரிந்துரை.பரிந்துரை, {\n [this.மாறிலிகள்.பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்]: பரிந்துரை.பங்கேற்பாளர்,\n });\n const ஏற்கனவே_அங்கீகரிக்கப்பட்டவை = await uneFois(async (செ) => {\n return await this.அங்கீகரிக்கப்பட்ட_உறுப்படிகளை_கேள்ளு({ செ });\n });\n const இருக்கும்_உறுப்படி = ஏற்கனவே_அங்கீகரிக்கப்பட்டவை.find((அங்கீ) => this.குறியீட்டு_நெடுவரிசைகள்_சமம்(அங்கீ.données, பரிந்துரை_உறுப்படி));\n if (இருக்கும்_உறுப்படி) {\n // இந்த குறியீட்டு நெடுவரிசைகளின் மதிப்புகளுடன் இன்னொரு அங்கீகரிக்கப்பட்ட பரிந்துரை ஏற்கனவே இருந்தால், அதை திருத்தவும்.\n // விண்மீனின் bds.ajouterÉlément என்று செயலிக்கு சமீபத்தில் வரும் மாற்றங்களுடன் ஒரு வேளை இது இனிமேல் தேவைப்படாது.\n await this.அங்கீகரிக்கப்பட்ட_உறுப்படியை_திருத்து({\n பரிந்துரை,\n அடையாளம்: இருக்கும்_உறுப்படி.id,\n });\n return இருக்கும்_உறுப்படி.id;\n }\n else {\n return (await this.விண்மீன்.bds.ajouterÉlémentÀTableauParClef({\n idBd: தரவுத்தள_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n vals: பரிந்துரை_உறுப்படி,\n }))[0];\n }\n }\n async அங்கீகரிக்கப்பட்ட_உறுப்படியை_நீக்கு({ அடையாளம், }) {\n const தரவுத்தள_அடையாளம் = await this.அங்கீகார_தரவுத்தள்ளத்தைப்_பெறு();\n await this.விண்மீன்.bds.effacerÉlémentDeTableauParClef({\n idBd: தரவுத்தள_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n idÉlément: அடையாளம்,\n });\n }\n async அங்கீகரிக்கப்பட்ட_உறுப்படியை_திருத்து({ பரிந்துரை, அடையாளம், }) {\n const தரவுத்தள_அடையாளம் = await this.அங்கீகார_தரவுத்தள்ளத்தைப்_பெறு();\n await this.விண்மீன்.bds.modifierÉlémentDeTableauParClef({\n idBd: தரவுத்தள_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n idÉlément: அடையாளம்,\n vals: {\n ...பரிந்துரை.பரிந்துரை,\n [this.மாறிலிகள்.பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்]: பரிந்துரை.பங்கேற்பாளர்,\n },\n });\n }\n குறியீட்டு_நெடுவரிசைகள்_சமம்(இ, ஈ) {\n const குறியீட்டு_நெடுவரிசைகள் = this.வார்ப்புரு.tableaux\n .find((அட்டவணை) => அட்டவணை.clef === this.அட்டவணை_சாபி)\n ?.cols.filter((நெடுவரிசை) => நெடுவரிசை.index)\n .map((நெடுவரிசை) => நெடுவரிசை.idColonne) || [];\n return குறியீட்டு_நெடுவரிசைகள்.every((நெடுவரிசை) => இ[நெடுவரிசை] === ஈ[நெடுவரிசை]);\n }\n async உறுப்படிகளை_கேள்ளு({ செ, பரிந்துரைகள் = \"எனது\", }) {\n const தகவல்கள் = {\n அங்கீகரிக்கப்பட்டவை: [],\n பந்திருரைக்கப்பட்டவை: [],\n };\n const செ_கடைசி = async () => {\n const உறுப்படிகள் = [];\n for (const ப of தகவல்கள்.பந்திருரைக்கப்பட்டவை) {\n const முந்தையானது = உறுப்படிகள்.find((இ) => this.குறியீட்டு_நெடுவரிசைகள்_சமம்(இ, ப));\n if (முந்தையானது) {\n // எல்லோரை விட புதுமையான பரிந்துரையை மட்டும் உள்ளிடவும்\n const தேதி_முந்தையானது = முந்தையானது[this.மாறிலிகள்.தேதி_நெடுவரிசை_அடையாளம்];\n const தேதி_புதுசு = ப[this.மாறிலிகள்.தேதி_நெடுவரிசை_அடையாளம்];\n if (தேதி_முந்தையானது &&\n தேதி_புதுசு &&\n தேதி_புதுசு > தேதி_முந்தையானது) {\n உறுப்படிகள்.splice(உறுப்படிகள்.indexOf(முந்தையானது), 1);\n உறுப்படிகள்.push(ப);\n }\n }\n else {\n உறுப்படிகள்.push(ப);\n }\n }\n for (const ப of தகவல்கள்.அங்கீகரிக்கப்பட்டவை) {\n const முந்தையானது = உறுப்படிகள்.find((இ) => this.குறியீட்டு_நெடுவரிசைகள்_சமம்(இ, ப));\n if (முந்தையானது) {\n உறுப்படிகள்.splice(உறுப்படிகள்.indexOf(முந்தையானது), 1);\n }\n உறுப்படிகள்.push(ப);\n }\n return await செ(உறுப்படிகள்);\n };\n const அங்கீகரிக்கப்பட்டவையை_மறந்துவிடு = await this.அங்கீகரிக்கப்பட்ட_உறுப்படிகளை_கேள்ளு({\n செ: async (இ) => {\n தகவல்கள்.அங்கீகரிக்கப்பட்டவை = இ.map((ஈ) => ஈ.données);\n await செ_கடைசி();\n },\n });\n const செ_மறந்துவிடு = [அங்கீகரிக்கப்பட்டவையை_மறந்துவிடு];\n if (பரிந்துரைகள் === \"அனைத்தும்\") {\n const பரிந்துரைக்கப்பட்டவையை_மறந்துவிடு = await this.பரிந்துரைகளை_கேள்ளு({\n செ: async (இ) => {\n தகவல்கள்.பந்திருரைக்கப்பட்டவை = இ.map((ஈ) => {\n return {\n [this.மாறிலிகள்.பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்]: ஈ.பங்கேற்பாளர்,\n ...ஈ.பரிந்துரை,\n };\n });\n await செ_கடைசி();\n },\n });\n செ_மறந்துவிடு.push(பரிந்துரைக்கப்பட்டவையை_மறந்துவிடு.fOublier);\n }\n else if (பரிந்துரைகள் === \"எனது\") {\n const பரிந்துரைக்கப்பட்டவையை_மறந்துவிடு = await this.என்_பரிந்துரைகளை_கேள்ளு({\n செ: async (இ) => {\n தகவல்கள்.பந்திருரைக்கப்பட்டவை = இ.map((ஈ) => {\n return {\n [this.மாறிலிகள்.பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்]: ஈ.பங்கேற்பாளர்,\n ...ஈ.பரிந்துரை,\n };\n });\n await செ_கடைசி();\n },\n });\n செ_மறந்துவிடு.push(பரிந்துரைக்கப்பட்டவையை_மறந்துவிடு);\n }\n return async () => {\n await Promise.all(செ_மறந்துவிடு.map((செ) => செ()));\n };\n }\n}\n//# sourceMappingURL=%E0%AE%95%E0%AE%BF%E0%AE%B3%E0%AE%BF.js.map","export const அட்டவணை_சாபி = \"முறைமைகள்\";\n// சுற்றுப்பாதை அடையாளங்களை அனைத்தையும் மாற்றவும்\nexport const கிளி_குழு_அடையாளம் = \"/orbitdb/zdpuB2ZNKMRPnn8kwwL9UDY6VNdXxqxTUiEanjJ4Z6HuxEgWU\";\nexport const எண்ணிக்கை_சிறப்பு_சொல் = \"/orbitdb/zdpuAwiHHcXVqXtC5d2zTBC3kP8LkpMxHyp1BjjxVCboH6nPb\";\n// நெடுவரிசைகள்\nexport const முறைமை_குறியீடு_நெடுவரிசை_குறியீடு = \"குறியீடு\";\nexport const முறைமை_வகை_நெடுவரிசை_குறியீடு = \"வகை\";\nexport const முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு = \"ஒருங்குறி\";\nexport const முறைமை_குறிகள்_நெடுவரிசை_குறியீடு = \"குறிகள்\";\nexport const முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு = \"அடுக்குக்குறி\";\nexport const முறைமை_அடிமானங்கள்_நெடுவரிசை_குறியீடு = \"அடிமானங்கள்\";\nexport const முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு = \"பிரிப்பு\";\nexport const முறைமை_குறியீடு_மாறி_குறியீடு = \"/orbitdb/zdpuAx2asNr8YFLvEy8nP5u16SshcbMAhyHkZQm3hqEX2CEP6\";\nexport const முறைமை_வகை_மாறி_குறியீடு = \"/orbitdb/zdpuAmMYvS8f9WH95y3tyxDPgLsWjXu2zoB2bAy78JNsMkCWn\";\nexport const முறைமை_ஒருங்குறி_குறியீடு_மாறி_குறியீடு = \"/orbitdb/zdpuApW3gaGcGNtppzQQyzuzygfKiQ1WVtVpjQa21ALjqRUNo\";\nexport const முறைமை_குறிகள்_மாறி_குறியீடு = \"/orbitdb/zdpuAzeaU4DA5WCaKBr1B23UA9gtvMoRiUtPgA1PsuRJvtA6k\";\nexport const முறைமை_அடுக்குக்குறி_மாறி_குறியீடு = \"/orbitdb/zdpuB2xXUJ3kcsmzqhqbvUDNRrRH63dLoj6jw238Xu85oSVJp\";\nexport const முறைமை_அடிமானங்கள்_மாறி_குறியீடு = \"/orbitdb/zdpuAq1CqRxiFvcy7sUuB9wLPJ5Ex9Vrp6uFiyP7YB8G3T74s\";\nexport const முறைமை_பிரிப்பு_மாறி_குறியீடு = \"/orbitdb/zdpuAwi62CTtS6Tpu8Zf2pBFKEUGo3F27QZXCib4CVGXyBPVa\";\n//# sourceMappingURL=%E0%AE%AE%E0%AE%BE%E0%AE%B1%E0%AE%BF%E0%AE%B2%E0%AE%BF%E0%AE%95%E0%AE%B3%E0%AF%8D.js.map","import { கிளி } from \"@lassi-js/kili\";\nimport { எண்ணிக்கை_சிறப்பு_சொல், அட்டவணை_சாபி, முறைமை_குறியீடு_நெடுவரிசை_குறியீடு, முறைமை_வகை_நெடுவரிசை_குறியீடு, முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு, முறைமை_குறிகள்_நெடுவரிசை_குறியீடு, முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு, முறைமை_அடிமானங்கள்_நெடுவரிசை_குறியீடு, முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு, முறைமை_குறியீடு_மாறி_குறியீடு, முறைமை_வகை_மாறி_குறியீடு, முறைமை_ஒருங்குறி_குறியீடு_மாறி_குறியீடு, முறைமை_குறிகள்_மாறி_குறியீடு, முறைமை_அடுக்குக்குறி_மாறி_குறியீடு, முறைமை_அடிமானங்கள்_மாறி_குறியீடு, முறைமை_பிரிப்பு_மாறி_குறியீடு, கிளி_குழு_அடையாளம், } from \"./\\u0BAE\\u0BBE\\u0BB1\\u0BBF\\u0BB2\\u0BBF\\u0B95\\u0BB3\\u0BCD.js\";\nconst தரவுத்தள_வார்ப்புரு = {\n licence: \"ODbl-1_0\",\n motsClefs: [எண்ணிக்கை_சிறப்பு_சொல்],\n tableaux: [\n {\n cols: [\n {\n idColonne: முறைமை_குறியீடு_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_குறியீடு_மாறி_குறியீடு,\n index: true,\n },\n {\n idColonne: முறைமை_வகை_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_வகை_மாறி_குறியீடு,\n },\n {\n idColonne: முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_ஒருங்குறி_குறியீடு_மாறி_குறியீடு,\n },\n {\n idColonne: முறைமை_குறிகள்_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_குறிகள்_மாறி_குறியீடு,\n },\n {\n idColonne: முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_அடுக்குக்குறி_மாறி_குறியீடு,\n },\n {\n idColonne: முறைமை_அடிமானங்கள்_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_அடிமானங்கள்_மாறி_குறியீடு,\n },\n {\n idColonne: முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_பிரிப்பு_மாறி_குறியீடு,\n },\n ],\n clef: அட்டவணை_சாபி,\n },\n ],\n};\nexport const கிளி_தயாரிப்பு = ({ விண்மீன், }) => {\n return new கிளி({\n விண்மீன்: விண்மீன்,\n அட்டவணை_சாபி,\n வார்ப்புரு: தரவுத்தள_வார்ப்புரு,\n குழு_அடையாளம்: கிளி_குழு_அடையாளம்,\n });\n};\n//# sourceMappingURL=%E0%AE%95%E0%AE%BF%E0%AE%B3%E0%AE%BF.js.map","import merge from \"deepmerge\";\nimport { EventEmitter } from \"events\";\nimport _தகவல்கள் from \"./\\u0BA4\\u0B95\\u0BB5\\u0BB2\\u0BCD\\u0B95\\u0BB3\\u0BCD.json\" with { type: \"json\" };\nimport { கிளி_தயாரிப்பு } from \"./\\u0B95\\u0BBF\\u0BB3\\u0BBF.js\";\nimport { முறைமை_அடிமானங்கள்_நெடுவரிசை_குறியீடு, முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு, முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு, முறைமை_குறிகள்_நெடுவரிசை_குறியீடு, முறைமை_குறியீடு_நெடுவரிசை_குறியீடு, முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு, முறைமை_வகை_நெடுவரிசை_குறியீடு, } from \"./\\u0BAE\\u0BBE\\u0BB1\\u0BBF\\u0BB2\\u0BBF\\u0B95\\u0BB3\\u0BCD.js\";\nexport class எண்ணிக்கை {\n விண்மீன்_தகவல்கள்;\n விண்மீன்;\n கிளி;\n நடவடிக்கைகள்;\n கிளியை_மறந்துவிடு;\n constructor({ விண்மீன் }) {\n this.விண்மீன் = விண்மீன்;\n this.விண்மீன்_தகவல்கள் = {};\n this.நடவடிக்கைகள் =\n new EventEmitter();\n this._கிளி_தயாரிப்பு();\n }\n async கிளியைப்_பெறு() {\n return (this.கிளி ||\n (await new Promise((தீர்வு) => this.நடவடிக்கைகள்.once(\"கிளி தயார்\", தீர்வு))));\n }\n async _கிளி_தயாரிப்பு() {\n if (this.விண்மீன்) {\n this.கிளி = கிளி_தயாரிப்பு({\n விண்மீன்: this.விண்மீன்,\n });\n this.கிளியை_மறந்துவிடு =\n await this.கிளி.அங்கீகரிக்கப்பட்ட_உறுப்படிகளை_கேள்ளு({\n செ: (தகவல்கள்) => {\n this.விண்மீன்_தகவல்கள் =\n எண்ணிக்கை_தகவல்கள்_வடிவூட்டத்துக்கு_மாறு(தகவல்கள்);\n this.மாற்றம்_வந்துவிட்டது();\n },\n });\n this.நடவடிக்கைகள்.emit(\"கிளி தயார்\", this.கிளி);\n }\n }\n மாற்றம்_வந்துவிட்டது() {\n this.நடவடிக்கைகள்.emit(\"மாற்றம்\");\n }\n get தகவல்கள்() {\n return merge(_தகவல்கள், this.விண்மீன்_தகவல்கள்);\n }\n get முறைமைகள்() {\n return Object.keys(this.தகவல்கள்);\n }\n தகவல்களை_பெறு({ மொழி }) {\n const தகவல்_மொழி = this.தகவல்கள்[மொழி];\n if (!தகவல்_மொழி) {\n throw Error(`தெரியாத எண்ணுரு முறைமை ${மொழி}`);\n }\n return தகவல்_மொழி;\n }\n உரைக்கு_அடிமானம்({ எண், தகவல்_மொழி, }) {\n const { குறிகள், அடிமானங்கள் } = தகவல்_மொழி;\n const பிரிப்பு = தகவல்_மொழி.பிரிப்பு || \".\";\n const குறிகள்_ = [...குறிகள்];\n const எதிர் = எண் < 0;\n எண் = Math.abs(எண்);\n const தசம = எண்.toString().split(\".\")[1];\n let உரை = this._அடிமானம்_எழுதல்(எண், குறிகள்_, அடிமானங்கள்);\n if (உரை.length === 0) {\n உரை = குறிகள்_[0];\n }\n if (எதிர்) {\n உரை = \"-\" + உரை;\n }\n if (தசம) {\n உரை += பிரிப்பு[0] + [...தசம].map((த) => குறிகள்[parseInt(த)]).join(\"\");\n }\n return உரை;\n }\n எண்ணுக்கு_அடிமானம்({ உரை, தகவல்_மொழி, }) {\n if (RegExp(`[${தகவல்_மொழி.குறிகள்}${தகவல்_மொழி.பிரிப்பு || '\\.'}]+`, 'g').exec(உரை)?.[0] === உரை) {\n this.எண்ணுக்கு_அடிமானம்({ உரை, தகவல்_மொழி });\n }\n const அடிமானங்கள் = தகவல்_மொழி.அடிமானங்கள்;\n const குறிகள் = [...தகவல்_மொழி.குறிகள்];\n const பிரிப்பு = தகவல்_மொழி.பிரிப்பு || \".\";\n const எதிர் = உரை[0] === \"-\";\n if (எதிர்) {\n உரை = உரை.slice(1);\n }\n else {\n உரை = உரை.replace(/^\\++/, \"\");\n }\n const [முழு, தசம] = உரை.split(பிரிப்பு[0]);\n let எண் = 0;\n if (முழு) {\n const பெட்டியல் = [...முழு]\n .map((இ) => அடிமானங்கள்[இ] || குறிகள்.indexOf(இ))\n .reverse();\n if (பெட்டியல்.some(இ => இ < 0))\n throw new Error();\n const படித்தல் = (பெ) => {\n const ஆ = பெ[0];\n const ஐ = பெ.slice(1).find((ஈ) => ஈ > ஆ);\n const ஊ = (ஐ ? பெ.slice(1).indexOf(ஐ) : பெ.slice(1).length) + 1;\n const கீழ்_ = பெ.slice(1, ஊ);\n const கீழ் = கீழ்_.length ? படித்தல்(கீழ்_) : 1;\n const மேல் = பெ.slice(ஊ);\n const மேல்_ = மேல்.length ? படித்தல்(மேல்) : 0;\n return ஆ * கீழ் + மேல்_;\n };\n எண் = படித்தல்(பெட்டியல்);\n }\n if (தசம !== undefined) {\n if (தசம.length) {\n எண் += parseFloat(\".\" + [...தசம].map((இ) => குறிகள்.indexOf(இ).toString()).join(\"\"));\n }\n }\n if (எதிர்) {\n எண் *= -1;\n }\n return எண்;\n }\n உரைக்கு_இடஞ்சார்({ எண், தகவல்_மொழி, }) {\n const குறிகள் = [...தகவல்_மொழி[\"குறிகள்\"]];\n const அடி = குறிகள்.length;\n const பிரிப்பு = (தகவல்_மொழி[\"பிரிப்பு\"] || \".\")[0];\n if (அடி === 10) {\n let உரை = எண்.toString();\n if (உரை.includes(\".\")) {\n உரை = உரை.replace(\".\", பிரிப்பு);\n }\n return Array.prototype.map\n .call(உரை, (x) => (x === பிரிப்பு ? x : குறிகள்[parseInt(x)]))\n .join(\"\");\n }\n if (எண் === 0) {\n return குறிகள்[0];\n }\n const எதிர் = எண் < 0;\n let தசம = எண் % 1;\n தசம = parseFloat(தசம.toFixed(எ_சுற்று(எண்)));\n எண் = Math.abs(எண்);\n let உரை = \"\";\n while (எண்) {\n உரை = குறிகள்[Math.floor(எண் % அடி)] + உரை;\n எண் = Math.floor(எண் / அடி);\n }\n if (தசம) {\n உரை += பிரிப்பு;\n }\n let சுற்று;\n while (தசம !== 0) {\n சுற்று = எ_சுற்று(தசம);\n தசம *= அடி;\n உரை += குறிகள்[Math.floor(தசம)];\n தசம -= Math.floor(தசம);\n தசம = parseFloat(தசம.toFixed(சுற்று));\n }\n if (எதிர்) {\n உரை = \"-\" + உரை;\n }\n return உரை;\n }\n எண்ணுக்கு_இடஞ்சார்({ உரை, மொழி, தகவல்_மொழி, }) {\n const குறிகள் = [...தகவல்_மொழி[\"குறிகள்\"]];\n const அடுக்குக்குறி = தகவல்_மொழி[\"அடுக்குக்குறி\"] || \"eE\";\n const அடிமானம் = குறிகள்.length;\n const பிரிப்பு = தகவல்_மொழி[\"பிரிப்பு\"] || \".\";\n உரை = உரை.replace(/^\\++/, \"\");\n if (அடுக்குக்குறி.split(\"\").some((அடு) => உரை.includes(அடு))) {\n const [எண், அடு] = உரை.split(RegExp(அடுக்குக்குறி));\n return (this.எண்ணுக்கு_இடஞ்சார்({ உரை: எண், மொழி, தகவல்_மொழி }) *\n அடிமானம் ** this.எண்ணுக்கு({ உரை: அடு, மொழி }));\n }\n if (அடிமானம் === 10) {\n for (const [எ, குறி] of குறிகள்.entries()) {\n உரை = உரை.replace(குறி, எ.toString());\n }\n for (const பி of பிரிப்பு.split(\"\")) {\n உரை = உரை.replace(பி, \".\");\n }\n return parseFloat(உரை);\n }\n else {\n let எண் = 0;\n const பிரிவு = உரை.split(/\\./);\n let முழு = பிரிவு[0];\n const தசம = பிரிவு[1];\n const எதிர் = முழு[0] === \"-\";\n முழு = முழு.replace(/^-+/, \"\");\n if (முழு) {\n for (const அ of முழு) {\n எண் *= அடிமானம்;\n const இடம் = குறிகள்.indexOf(அ);\n if (இடம் === -1)\n throw new Error();\n எண் += குறிகள்.indexOf(அ);\n }\n }\n if (தசம) {\n let த = அடிமானம்;\n for (const அ of தசம) {\n எண் += குறிகள்.indexOf(அ) / த;\n எண் = parseFloat(எண்.toFixed(எ_சுற்று(1 / த)));\n த *= அடிமானம்;\n }\n }\n எண் = எதிர் ? -எண் : எண்;\n return எண்;\n }\n }\n உரைக்கு({ எண், மொழி }) {\n const தகவல்_மொழி = this.தகவல்களை_பெறு({ மொழி });\n if (தகவல்_மொழி.வகை === \"இடஞ்சார்\") {\n return this.உரைக்கு_இடஞ்சார்({ எண், தகவல்_மொழி });\n }\n else {\n return this.உரைக்கு_அடிமானம்({\n எண்,\n தகவல்_மொழி,\n });\n }\n }\n எண்ணுக்கு({ உரை, மொழி }) {\n const மொழிகள் = மொழி ? [மொழி] : this.முறைமைகள்;\n for (const மொ of மொழிகள்) {\n try {\n const தகவல்_மொழி = this.தகவல்களை_பெறு({ மொழி: மொ });\n const எண் = this.தகவல்களுடன்_எண்ணுக்கு({ உரை, மொழி: மொ, தகவல்_மொழி });\n if (!isNaN(எண்))\n return எண்;\n }\n catch {\n continue;\n }\n }\n throw new Error(`${உரை} என்று எண்ணை படிக்க முடியவில்லை.`);\n }\n தகவல்களுடன்_எண்ணுக்கு({ உரை, மொழி, தகவல்_மொழி, }) {\n const வகை = தகவல்_மொழி[\"வகை\"];\n if (வகை === \"இடஞ்சார்\") {\n return this.எண்ணுக்கு_இடஞ்சார்({ உரை, மொழி, தகவல்_மொழி });\n }\n else if (வகை === \"அடிமானம்\") {\n return this.எண்ணுக்கு_அடிமானம்({ உரை, தகவல்_மொழி });\n }\n else {\n throw Error(`தெரியாத எண்ணுரு முறைமை வகை ${வகை}`);\n }\n }\n _அடிமானம்_எழுதல்(எண், குறிகள், அடிமானங்கள்) {\n let மீதி = எண்;\n let உரை = \"\";\n for (const [அடி, மதிப்பு] of Object.entries(அடிமானங்கள்).sort((a, b) => b[1] - a[1])) {\n const ம = Math.floor(மீதி / மதிப்பு);\n if (ம) {\n மீதி -= ம * மதிப்பு;\n if (ம !== 1) {\n உரை += this._அடிமானம்_எழுதல்(ம, குறிகள், அடிமானங்கள்);\n }\n உரை += அடி;\n }\n }\n if (மீதி) {\n உரை = உரை + குறிகள்[Math.floor(மீதி)];\n }\n return உரை;\n }\n // ஒத்திசைவற்ற செயல்பாடுகள்\n பின்பற்று(செ) {\n this.நடவடிக்கைகள்.on(\"மாற்றம்\", செ);\n செ();\n return () => {\n this.நடவடிக்கைகள்.off(\"மாற்றம்\", செ);\n };\n }\n முறைமைகளை_பின்பற்று({ செ, }) {\n return this.பின்பற்று(() => செ(this.முறைமைகள்));\n }\n உரைக்கு_பின்பற்று({ எண், மொழி, செ, }) {\n return this.பின்பற்று(() => செ(this.உரைக்கு({ எண், மொழி })));\n }\n எணுக்கு_பின்பற்று({ உரை, மொழி, செ, }) {\n return this.பின்பற்று(() => செ(this.எண்ணுக்கு({ உரை, மொழி })));\n }\n async பரிந்துரையு(பரிந்துரை) {\n return (await this.கிளியைப்_பெறு()).பரிந்துரையு({ பரிந்துரை });\n }\n async அங்கீகரி(பரிந்துரை) {\n return (await this.கிளியைப்_பெறு()).அங்கீகரி({ பரிந்துரை });\n }\n async முடி() {\n if (this.கிளியை_மறந்துவிடு)\n await this.கிளியை_மறந்துவிடு();\n }\n}\nfunction எ_சுற்று(எண்) {\n const உ = எண்.toString();\n if (உ.includes(\"e\")) {\n const [ச, த] = உ.split(\"e-\");\n return parseInt(த) + ச.length;\n }\n else {\n return உ.length;\n }\n}\nfunction எண்ணிக்கை_தகவல்கள்_வடிவூட்டத்துக்கு_மாறு(வரிசைகள்) {\n const தகவல்கள் = {};\n for (const வ of வரிசைகள்) {\n const வகை = வ.données[முறைமை_வகை_நெடுவரிசை_குறியீடு];\n const குறியீடு = வ.données[முறைமை_குறியீடு_நெடுவரிசை_குறியீடு];\n if (வகை === \"இடஞ்சார்\") {\n const தகவல் = {\n வகை,\n குறிகள்: வ.données[முறைமை_குறிகள்_நெடுவரிசை_குறியீடு],\n ஒருங்குறி: வ.données[முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு],\n அடுக்குக்குறி: வ.données[முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு],\n பிரிப்பு: வ.données[முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு],\n };\n தகவல்கள்[குறியீடு] = தகவல்;\n }\n else if (வகை === \"அடிமானம்\") {\n const அடிமானங்கள் = வ.données[முறைமை_அடிமானங்கள்_நெடுவரிசை_குறியீடு];\n if (!அடிமானங்கள்)\n throw new Error(`${குறியீடு} என்று எண்ணுரு முறைமைக்காக அடிமானங்கள் தேவை.`);\n const தகவல் = {\n வகை,\n குறிகள்: வ.données[முறைமை_குறிகள்_நெடுவரிசை_குறியீடு],\n ஒருங்குறி: வ.données[முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு],\n அடுக்குக்குறி: வ.données[முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு],\n அடிமானங்கள்: JSON.parse(அடிமானங்கள்),\n பிரிப்பு: வ.données[முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு],\n };\n தகவல்கள்[குறியீடு] = தகவல்;\n }\n }\n return தகவல்கள்;\n}\n//# sourceMappingURL=%E0%AE%8E%E0%AE%A3%E0%AF%8D%E0%AE%A3%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%88.js.map","/**\n * @packageDocumentation\n *\n * Return the first value in an (async)iterable\n *\n * @example\n *\n * ```javascript\n * import first from 'it-first'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const res = first(values)\n *\n * console.info(res) // 0\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import first from 'it-first'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const res = await first(values())\n *\n * console.info(res) // 0\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction first(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n for await (const entry of source) { // eslint-disable-line no-unreachable-loop\n return entry;\n }\n return undefined;\n })();\n }\n for (const entry of source) { // eslint-disable-line no-unreachable-loop\n return entry;\n }\n return undefined;\n}\nexport default first;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * The final batch may be smaller than the max.\n *\n * @example\n *\n * ```javascript\n * import batch from 'it-batch'\n * import all from 'it-all'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n * const batchSize = 2\n *\n * const result = all(batch(values, batchSize))\n *\n * console.info(result) // [0, 1], [2, 3], [4]\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import batch from 'it-batch'\n * import all from 'it-all'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const batchSize = 2\n * const result = await all(batch(values(), batchSize))\n *\n * console.info(result) // [0, 1], [2, 3], [4]\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction batch(source, size = 1) {\n size = Number(size);\n if (isAsyncIterable(source)) {\n return (async function* () {\n let things = [];\n if (size < 1) {\n size = 1;\n }\n if (size !== Math.round(size)) {\n throw new Error('Batch size must be an integer');\n }\n for await (const thing of source) {\n things.push(thing);\n while (things.length >= size) {\n yield things.slice(0, size);\n things = things.slice(size);\n }\n }\n while (things.length > 0) {\n yield things.slice(0, size);\n things = things.slice(size);\n }\n }());\n }\n return (function* () {\n let things = [];\n if (size < 1) {\n size = 1;\n }\n if (size !== Math.round(size)) {\n throw new Error('Batch size must be an integer');\n }\n for (const thing of source) {\n things.push(thing);\n while (things.length >= size) {\n yield things.slice(0, size);\n things = things.slice(size);\n }\n }\n while (things.length > 0) {\n yield things.slice(0, size);\n things = things.slice(size);\n }\n }());\n}\nexport default batch;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Takes an async iterator that emits promise-returning functions, invokes them in parallel and emits the results in the same order as the input.\n *\n * The final batch may be smaller than the batch size.\n *\n * @example\n *\n * ```javascript\n * import parallelBatch from 'it-parallel-batch'\n * import all from 'it-all'\n * import delay from 'delay'\n *\n * // This can also be an iterator, async iterator, generator, etc\n * const input = [\n * async () => {\n * await delay(500)\n *\n * return 1\n * },\n * async () => {\n * await delay(200)\n *\n * return 2\n * },\n * async () => {\n * await delay(100)\n *\n * return 3\n * }\n * ]\n *\n * const batchSize = 2\n *\n * const result = await all(parallelBatch(input, batchSize))\n *\n * console.info(result) // [1, 2, 3]\n * ```\n */\nimport batch from 'it-batch';\n/**\n * Takes an (async) iterator that emits promise-returning functions,\n * invokes them in parallel and emits the results as they become available but\n * in the same order as the input\n */\nexport default async function* parallelBatch(source, size = 1) {\n for await (const tasks of batch(source, size)) {\n const things = tasks.map(async (p) => {\n return p().then(value => ({ ok: true, value }), err => ({ ok: false, err }));\n });\n for (let i = 0; i < things.length; i++) {\n const result = await things[i];\n if (result.ok) {\n yield result.value;\n }\n else {\n throw result.err;\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * A class that lets you do operations over a list of Uint8Arrays without\n * copying them.\n *\n * ```js\n * import { Uint8ArrayList } from 'uint8arraylist'\n *\n * const list = new Uint8ArrayList()\n * list.append(Uint8Array.from([0, 1, 2]))\n * list.append(Uint8Array.from([3, 4, 5]))\n *\n * list.subarray()\n * // -> Uint8Array([0, 1, 2, 3, 4, 5])\n *\n * list.consume(3)\n * list.subarray()\n * // -> Uint8Array([3, 4, 5])\n *\n * // you can also iterate over the list\n * for (const buf of list) {\n * // ..do something with `buf`\n * }\n *\n * list.subarray(0, 1)\n * // -> Uint8Array([0])\n * ```\n *\n * ## Converting Uint8ArrayLists to Uint8Arrays\n *\n * There are two ways to turn a `Uint8ArrayList` into a `Uint8Array` - `.slice` and `.subarray` and one way to turn a `Uint8ArrayList` into a `Uint8ArrayList` with different contents - `.sublist`.\n *\n * ### slice\n *\n * Slice follows the same semantics as [Uint8Array.slice](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/slice) in that it creates a new `Uint8Array` and copies bytes into it using an optional offset & length.\n *\n * ```js\n * const list = new Uint8ArrayList()\n * list.append(Uint8Array.from([0, 1, 2]))\n * list.append(Uint8Array.from([3, 4, 5]))\n *\n * list.slice(0, 1)\n * // -> Uint8Array([0])\n * ```\n *\n * ### subarray\n *\n * Subarray attempts to follow the same semantics as [Uint8Array.subarray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/subarray) with one important different - this is a no-copy operation, unless the requested bytes span two internal buffers in which case it is a copy operation.\n *\n * ```js\n * const list = new Uint8ArrayList()\n * list.append(Uint8Array.from([0, 1, 2]))\n * list.append(Uint8Array.from([3, 4, 5]))\n *\n * list.subarray(0, 1)\n * // -> Uint8Array([0]) - no-copy\n *\n * list.subarray(2, 5)\n * // -> Uint8Array([2, 3, 4]) - copy\n * ```\n *\n * ### sublist\n *\n * Sublist creates and returns a new `Uint8ArrayList` that shares the underlying buffers with the original so is always a no-copy operation.\n *\n * ```js\n * const list = new Uint8ArrayList()\n * list.append(Uint8Array.from([0, 1, 2]))\n * list.append(Uint8Array.from([3, 4, 5]))\n *\n * list.sublist(0, 1)\n * // -> Uint8ArrayList([0]) - no-copy\n *\n * list.sublist(2, 5)\n * // -> Uint8ArrayList([2], [3, 4]) - no-copy\n * ```\n *\n * ## Inspiration\n *\n * Borrows liberally from [bl](https://www.npmjs.com/package/bl) but only uses native JS types.\n */\nimport { allocUnsafe, alloc } from 'uint8arrays/alloc';\nimport { concat } from 'uint8arrays/concat';\nimport { equals } from 'uint8arrays/equals';\nconst symbol = Symbol.for('@achingbrain/uint8arraylist');\nfunction findBufAndOffset(bufs, index) {\n if (index == null || index < 0) {\n throw new RangeError('index is out of bounds');\n }\n let offset = 0;\n for (const buf of bufs) {\n const bufEnd = offset + buf.byteLength;\n if (index < bufEnd) {\n return {\n buf,\n index: index - offset\n };\n }\n offset = bufEnd;\n }\n throw new RangeError('index is out of bounds');\n}\n/**\n * Check if object is a CID instance\n *\n * @example\n *\n * ```js\n * import { isUint8ArrayList, Uint8ArrayList } from 'uint8arraylist'\n *\n * isUint8ArrayList(true) // false\n * isUint8ArrayList([]) // false\n * isUint8ArrayList(new Uint8ArrayList()) // true\n * ```\n */\nexport function isUint8ArrayList(value) {\n return Boolean(value?.[symbol]);\n}\nexport class Uint8ArrayList {\n bufs;\n length;\n [symbol] = true;\n constructor(...data) {\n this.bufs = [];\n this.length = 0;\n if (data.length > 0) {\n this.appendAll(data);\n }\n }\n *[Symbol.iterator]() {\n yield* this.bufs;\n }\n get byteLength() {\n return this.length;\n }\n /**\n * Add one or more `bufs` to the end of this Uint8ArrayList\n */\n append(...bufs) {\n this.appendAll(bufs);\n }\n /**\n * Add all `bufs` to the end of this Uint8ArrayList\n */\n appendAll(bufs) {\n let length = 0;\n for (const buf of bufs) {\n if (buf instanceof Uint8Array) {\n length += buf.byteLength;\n this.bufs.push(buf);\n }\n else if (isUint8ArrayList(buf)) {\n length += buf.byteLength;\n this.bufs.push(...buf.bufs);\n }\n else {\n throw new Error('Could not append value, must be an Uint8Array or a Uint8ArrayList');\n }\n }\n this.length += length;\n }\n /**\n * Add one or more `bufs` to the start of this Uint8ArrayList\n */\n prepend(...bufs) {\n this.prependAll(bufs);\n }\n /**\n * Add all `bufs` to the start of this Uint8ArrayList\n */\n prependAll(bufs) {\n let length = 0;\n for (const buf of bufs.reverse()) {\n if (buf instanceof Uint8Array) {\n length += buf.byteLength;\n this.bufs.unshift(buf);\n }\n else if (isUint8ArrayList(buf)) {\n length += buf.byteLength;\n this.bufs.unshift(...buf.bufs);\n }\n else {\n throw new Error('Could not prepend value, must be an Uint8Array or a Uint8ArrayList');\n }\n }\n this.length += length;\n }\n /**\n * Read the value at `index`\n */\n get(index) {\n const res = findBufAndOffset(this.bufs, index);\n return res.buf[res.index];\n }\n /**\n * Set the value at `index` to `value`\n */\n set(index, value) {\n const res = findBufAndOffset(this.bufs, index);\n res.buf[res.index] = value;\n }\n /**\n * Copy bytes from `buf` to the index specified by `offset`\n */\n write(buf, offset = 0) {\n if (buf instanceof Uint8Array) {\n for (let i = 0; i < buf.length; i++) {\n this.set(offset + i, buf[i]);\n }\n }\n else if (isUint8ArrayList(buf)) {\n for (let i = 0; i < buf.length; i++) {\n this.set(offset + i, buf.get(i));\n }\n }\n else {\n throw new Error('Could not write value, must be an Uint8Array or a Uint8ArrayList');\n }\n }\n /**\n * Remove bytes from the front of the pool\n */\n consume(bytes) {\n // first, normalize the argument, in accordance with how Buffer does it\n bytes = Math.trunc(bytes);\n // do nothing if not a positive number\n if (Number.isNaN(bytes) || bytes <= 0) {\n return;\n }\n // if consuming all bytes, skip iterating\n if (bytes === this.byteLength) {\n this.bufs = [];\n this.length = 0;\n return;\n }\n while (this.bufs.length > 0) {\n if (bytes >= this.bufs[0].byteLength) {\n bytes -= this.bufs[0].byteLength;\n this.length -= this.bufs[0].byteLength;\n this.bufs.shift();\n }\n else {\n this.bufs[0] = this.bufs[0].subarray(bytes);\n this.length -= bytes;\n break;\n }\n }\n }\n /**\n * Extracts a section of an array and returns a new array.\n *\n * This is a copy operation as it is with Uint8Arrays and Arrays\n * - note this is different to the behaviour of Node Buffers.\n */\n slice(beginInclusive, endExclusive) {\n const { bufs, length } = this._subList(beginInclusive, endExclusive);\n return concat(bufs, length);\n }\n /**\n * Returns a alloc from the given start and end element index.\n *\n * In the best case where the data extracted comes from a single Uint8Array\n * internally this is a no-copy operation otherwise it is a copy operation.\n */\n subarray(beginInclusive, endExclusive) {\n const { bufs, length } = this._subList(beginInclusive, endExclusive);\n if (bufs.length === 1) {\n return bufs[0];\n }\n return concat(bufs, length);\n }\n /**\n * Returns a allocList from the given start and end element index.\n *\n * This is a no-copy operation.\n */\n sublist(beginInclusive, endExclusive) {\n const { bufs, length } = this._subList(beginInclusive, endExclusive);\n const list = new Uint8ArrayList();\n list.length = length;\n // don't loop, just set the bufs\n list.bufs = [...bufs];\n return list;\n }\n _subList(beginInclusive, endExclusive) {\n beginInclusive = beginInclusive ?? 0;\n endExclusive = endExclusive ?? this.length;\n if (beginInclusive < 0) {\n beginInclusive = this.length + beginInclusive;\n }\n if (endExclusive < 0) {\n endExclusive = this.length + endExclusive;\n }\n if (beginInclusive < 0 || endExclusive > this.length) {\n throw new RangeError('index is out of bounds');\n }\n if (beginInclusive === endExclusive) {\n return { bufs: [], length: 0 };\n }\n if (beginInclusive === 0 && endExclusive === this.length) {\n return { bufs: this.bufs, length: this.length };\n }\n const bufs = [];\n let offset = 0;\n for (let i = 0; i < this.bufs.length; i++) {\n const buf = this.bufs[i];\n const bufStart = offset;\n const bufEnd = bufStart + buf.byteLength;\n // for next loop\n offset = bufEnd;\n if (beginInclusive >= bufEnd) {\n // start after this buf\n continue;\n }\n const sliceStartInBuf = beginInclusive >= bufStart && beginInclusive < bufEnd;\n const sliceEndsInBuf = endExclusive > bufStart && endExclusive <= bufEnd;\n if (sliceStartInBuf && sliceEndsInBuf) {\n // slice is wholly contained within this buffer\n if (beginInclusive === bufStart && endExclusive === bufEnd) {\n // requested whole buffer\n bufs.push(buf);\n break;\n }\n // requested part of buffer\n const start = beginInclusive - bufStart;\n bufs.push(buf.subarray(start, start + (endExclusive - beginInclusive)));\n break;\n }\n if (sliceStartInBuf) {\n // slice starts in this buffer\n if (beginInclusive === 0) {\n // requested whole buffer\n bufs.push(buf);\n continue;\n }\n // requested part of buffer\n bufs.push(buf.subarray(beginInclusive - bufStart));\n continue;\n }\n if (sliceEndsInBuf) {\n if (endExclusive === bufEnd) {\n // requested whole buffer\n bufs.push(buf);\n break;\n }\n // requested part of buffer\n bufs.push(buf.subarray(0, endExclusive - bufStart));\n break;\n }\n // slice started before this buffer and ends after it\n bufs.push(buf);\n }\n return { bufs, length: endExclusive - beginInclusive };\n }\n indexOf(search, offset = 0) {\n if (!isUint8ArrayList(search) && !(search instanceof Uint8Array)) {\n throw new TypeError('The \"value\" argument must be a Uint8ArrayList or Uint8Array');\n }\n const needle = search instanceof Uint8Array ? search : search.subarray();\n offset = Number(offset ?? 0);\n if (isNaN(offset)) {\n offset = 0;\n }\n if (offset < 0) {\n offset = this.length + offset;\n }\n if (offset < 0) {\n offset = 0;\n }\n if (search.length === 0) {\n return offset > this.length ? this.length : offset;\n }\n // https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string-search_algorithm\n const M = needle.byteLength;\n if (M === 0) {\n throw new TypeError('search must be at least 1 byte long');\n }\n // radix\n const radix = 256;\n const rightmostPositions = new Int32Array(radix);\n // position of the rightmost occurrence of the byte c in the pattern\n for (let c = 0; c < radix; c++) {\n // -1 for bytes not in pattern\n rightmostPositions[c] = -1;\n }\n for (let j = 0; j < M; j++) {\n // rightmost position for bytes in pattern\n rightmostPositions[needle[j]] = j;\n }\n // Return offset of first match, -1 if no match\n const right = rightmostPositions;\n const lastIndex = this.byteLength - needle.byteLength;\n const lastPatIndex = needle.byteLength - 1;\n let skip;\n for (let i = offset; i <= lastIndex; i += skip) {\n skip = 0;\n for (let j = lastPatIndex; j >= 0; j--) {\n const char = this.get(i + j);\n if (needle[j] !== char) {\n skip = Math.max(1, j - right[char]);\n break;\n }\n }\n if (skip === 0) {\n return i;\n }\n }\n return -1;\n }\n getInt8(byteOffset) {\n const buf = this.subarray(byteOffset, byteOffset + 1);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getInt8(0);\n }\n setInt8(byteOffset, value) {\n const buf = allocUnsafe(1);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setInt8(0, value);\n this.write(buf, byteOffset);\n }\n getInt16(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 2);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getInt16(0, littleEndian);\n }\n setInt16(byteOffset, value, littleEndian) {\n const buf = alloc(2);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setInt16(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getInt32(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getInt32(0, littleEndian);\n }\n setInt32(byteOffset, value, littleEndian) {\n const buf = alloc(4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setInt32(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getBigInt64(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getBigInt64(0, littleEndian);\n }\n setBigInt64(byteOffset, value, littleEndian) {\n const buf = alloc(8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setBigInt64(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getUint8(byteOffset) {\n const buf = this.subarray(byteOffset, byteOffset + 1);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getUint8(0);\n }\n setUint8(byteOffset, value) {\n const buf = allocUnsafe(1);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setUint8(0, value);\n this.write(buf, byteOffset);\n }\n getUint16(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 2);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getUint16(0, littleEndian);\n }\n setUint16(byteOffset, value, littleEndian) {\n const buf = alloc(2);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setUint16(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getUint32(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getUint32(0, littleEndian);\n }\n setUint32(byteOffset, value, littleEndian) {\n const buf = alloc(4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setUint32(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getBigUint64(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getBigUint64(0, littleEndian);\n }\n setBigUint64(byteOffset, value, littleEndian) {\n const buf = alloc(8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setBigUint64(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getFloat32(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getFloat32(0, littleEndian);\n }\n setFloat32(byteOffset, value, littleEndian) {\n const buf = alloc(4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setFloat32(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getFloat64(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getFloat64(0, littleEndian);\n }\n setFloat64(byteOffset, value, littleEndian) {\n const buf = alloc(8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setFloat64(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n equals(other) {\n if (other == null) {\n return false;\n }\n if (!(other instanceof Uint8ArrayList)) {\n return false;\n }\n if (other.bufs.length !== this.bufs.length) {\n return false;\n }\n for (let i = 0; i < this.bufs.length; i++) {\n if (!equals(this.bufs[i], other.bufs[i])) {\n return false;\n }\n }\n return true;\n }\n /**\n * Create a Uint8ArrayList from a pre-existing list of Uint8Arrays. Use this\n * method if you know the total size of all the Uint8Arrays ahead of time.\n */\n static fromUint8Arrays(bufs, length) {\n const list = new Uint8ArrayList();\n list.bufs = bufs;\n if (length == null) {\n length = bufs.reduce((acc, curr) => acc + curr.byteLength, 0);\n }\n list.length = length;\n return list;\n }\n}\n/*\nfunction indexOf (needle: Uint8Array, haystack: Uint8Array, offset = 0) {\n for (let i = offset; i < haystack.byteLength; i++) {\n for (let j = 0; j < needle.length; j++) {\n if (haystack[i + j] !== needle[j]) {\n break\n }\n\n if (j === needle.byteLength -1) {\n return i\n }\n }\n\n if (haystack.byteLength - i < needle.byteLength) {\n break\n }\n }\n\n return -1\n}\n*/\n//# sourceMappingURL=index.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nconst DEFAULT_CHUNK_SIZE = 262144;\nexport const fixedSize = (options = {}) => {\n const chunkSize = options.chunkSize ?? DEFAULT_CHUNK_SIZE;\n return async function* fixedSizeChunker(source) {\n let list = new Uint8ArrayList();\n let currentLength = 0;\n let emitted = false;\n for await (const buffer of source) {\n list.append(buffer);\n currentLength += buffer.length;\n while (currentLength >= chunkSize) {\n yield list.slice(0, chunkSize);\n emitted = true;\n // throw away consumed bytes\n if (chunkSize === list.length) {\n list = new Uint8ArrayList();\n currentLength = 0;\n }\n else {\n const newBl = new Uint8ArrayList();\n newBl.append(list.sublist(chunkSize));\n list = newBl;\n // update our offset\n currentLength -= chunkSize;\n }\n }\n }\n if (!emitted || currentLength > 0) {\n // return any remaining bytes\n yield list.subarray(0, currentLength);\n }\n };\n};\n//# sourceMappingURL=fixed-size.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","const textDecoder = new TextDecoder()\n\n/**\n * @typedef {import('./interface.js').RawPBLink} RawPBLink\n */\n\n/**\n * @typedef {import('./interface.js').RawPBNode} RawPBNode\n */\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @returns {[number, number]}\n */\nfunction decodeVarint (bytes, offset) {\n let v = 0\n\n for (let shift = 0; ; shift += 7) {\n /* c8 ignore next 3 */\n if (shift >= 64) {\n throw new Error('protobuf: varint overflow')\n }\n /* c8 ignore next 3 */\n if (offset >= bytes.length) {\n throw new Error('protobuf: unexpected end of data')\n }\n\n const b = bytes[offset++]\n v += shift < 28 ? (b & 0x7f) << shift : (b & 0x7f) * (2 ** shift)\n if (b < 0x80) {\n break\n }\n }\n return [v, offset]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @returns {[Uint8Array, number]}\n */\nfunction decodeBytes (bytes, offset) {\n let byteLen\n ;[byteLen, offset] = decodeVarint(bytes, offset)\n const postOffset = offset + byteLen\n\n /* c8 ignore next 3 */\n if (byteLen < 0 || postOffset < 0) {\n throw new Error('protobuf: invalid length')\n }\n /* c8 ignore next 3 */\n if (postOffset > bytes.length) {\n throw new Error('protobuf: unexpected end of data')\n }\n\n return [bytes.subarray(offset, postOffset), postOffset]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} index\n * @returns {[number, number, number]}\n */\nfunction decodeKey (bytes, index) {\n let wire\n ;[wire, index] = decodeVarint(bytes, index)\n // [wireType, fieldNum, newIndex]\n return [wire & 0x7, wire >> 3, index]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {RawPBLink}\n */\nfunction decodeLink (bytes) {\n /** @type {RawPBLink} */\n const link = {}\n const l = bytes.length\n let index = 0\n\n while (index < l) {\n let wireType, fieldNum\n ;[wireType, fieldNum, index] = decodeKey(bytes, index)\n\n if (fieldNum === 1) {\n if (link.Hash) {\n throw new Error('protobuf: (PBLink) duplicate Hash section')\n }\n if (wireType !== 2) {\n throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Hash`)\n }\n if (link.Name !== undefined) {\n throw new Error('protobuf: (PBLink) invalid order, found Name before Hash')\n }\n if (link.Tsize !== undefined) {\n throw new Error('protobuf: (PBLink) invalid order, found Tsize before Hash')\n }\n\n [link.Hash, index] = decodeBytes(bytes, index)\n } else if (fieldNum === 2) {\n if (link.Name !== undefined) {\n throw new Error('protobuf: (PBLink) duplicate Name section')\n }\n if (wireType !== 2) {\n throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Name`)\n }\n if (link.Tsize !== undefined) {\n throw new Error('protobuf: (PBLink) invalid order, found Tsize before Name')\n }\n\n let byts\n ;[byts, index] = decodeBytes(bytes, index)\n link.Name = textDecoder.decode(byts)\n } else if (fieldNum === 3) {\n if (link.Tsize !== undefined) {\n throw new Error('protobuf: (PBLink) duplicate Tsize section')\n }\n if (wireType !== 0) {\n throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Tsize`)\n }\n\n [link.Tsize, index] = decodeVarint(bytes, index)\n } else {\n throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${fieldNum}`)\n }\n }\n\n /* c8 ignore next 3 */\n if (index > l) {\n throw new Error('protobuf: (PBLink) unexpected end of data')\n }\n\n return link\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {RawPBNode}\n */\nexport function decodeNode (bytes) {\n const l = bytes.length\n let index = 0\n /** @type {RawPBLink[]|void} */\n let links = undefined // eslint-disable-line no-undef-init\n let linksBeforeData = false\n /** @type {Uint8Array|void} */\n let data = undefined // eslint-disable-line no-undef-init\n\n while (index < l) {\n let wireType, fieldNum\n ;[wireType, fieldNum, index] = decodeKey(bytes, index)\n\n if (wireType !== 2) {\n throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${wireType}`)\n }\n\n if (fieldNum === 1) {\n if (data) {\n throw new Error('protobuf: (PBNode) duplicate Data section')\n }\n\n [data, index] = decodeBytes(bytes, index)\n if (links) {\n linksBeforeData = true\n }\n } else if (fieldNum === 2) {\n if (linksBeforeData) { // interleaved Links/Data/Links\n throw new Error('protobuf: (PBNode) duplicate Links section')\n } else if (!links) {\n links = []\n }\n let byts\n ;[byts, index] = decodeBytes(bytes, index)\n links.push(decodeLink(byts))\n } else {\n throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${fieldNum}`)\n }\n }\n\n /* c8 ignore next 3 */\n if (index > l) {\n throw new Error('protobuf: (PBNode) unexpected end of data')\n }\n\n /** @type {RawPBNode} */\n const node = {}\n if (data) {\n node.Data = data\n }\n node.Links = links || []\n return node\n}\n","const textEncoder = new TextEncoder()\nconst maxInt32 = 2 ** 32\nconst maxUInt32 = 2 ** 31\n\n/**\n * @typedef {import('./interface.js').RawPBLink} RawPBLink\n */\n\n/**\n * @typedef {import('./interface.js').RawPBNode} RawPBNode\n */\n\n// the encoders work backward from the end of the bytes array\n\n/**\n * encodeLink() is passed a slice of the parent byte array that ends where this\n * link needs to end, so it packs to the right-most part of the passed `bytes`\n *\n * @param {RawPBLink} link\n * @param {Uint8Array} bytes\n * @returns {number}\n */\nfunction encodeLink (link, bytes) {\n let i = bytes.length\n\n if (typeof link.Tsize === 'number') {\n if (link.Tsize < 0) {\n throw new Error('Tsize cannot be negative')\n }\n if (!Number.isSafeInteger(link.Tsize)) {\n throw new Error('Tsize too large for encoding')\n }\n i = encodeVarint(bytes, i, link.Tsize) - 1\n bytes[i] = 0x18\n }\n\n if (typeof link.Name === 'string') {\n const nameBytes = textEncoder.encode(link.Name)\n i -= nameBytes.length\n bytes.set(nameBytes, i)\n i = encodeVarint(bytes, i, nameBytes.length) - 1\n bytes[i] = 0x12\n }\n\n if (link.Hash) {\n i -= link.Hash.length\n bytes.set(link.Hash, i)\n i = encodeVarint(bytes, i, link.Hash.length) - 1\n bytes[i] = 0xa\n }\n\n return bytes.length - i\n}\n\n/**\n * Encodes a PBNode into a new byte array of precisely the correct size\n *\n * @param {RawPBNode} node\n * @returns {Uint8Array}\n */\nexport function encodeNode (node) {\n const size = sizeNode(node)\n const bytes = new Uint8Array(size)\n let i = size\n\n if (node.Data) {\n i -= node.Data.length\n bytes.set(node.Data, i)\n i = encodeVarint(bytes, i, node.Data.length) - 1\n bytes[i] = 0xa\n }\n\n if (node.Links) {\n for (let index = node.Links.length - 1; index >= 0; index--) {\n const size = encodeLink(node.Links[index], bytes.subarray(0, i))\n i -= size\n i = encodeVarint(bytes, i, size) - 1\n bytes[i] = 0x12\n }\n }\n\n return bytes\n}\n\n/**\n * work out exactly how many bytes this link takes up\n *\n * @param {RawPBLink} link\n * @returns\n */\nfunction sizeLink (link) {\n let n = 0\n\n if (link.Hash) {\n const l = link.Hash.length\n n += 1 + l + sov(l)\n }\n\n if (typeof link.Name === 'string') {\n const l = textEncoder.encode(link.Name).length\n n += 1 + l + sov(l)\n }\n\n if (typeof link.Tsize === 'number') {\n n += 1 + sov(link.Tsize)\n }\n\n return n\n}\n\n/**\n * Work out exactly how many bytes this node takes up\n *\n * @param {RawPBNode} node\n * @returns {number}\n */\nfunction sizeNode (node) {\n let n = 0\n\n if (node.Data) {\n const l = node.Data.length\n n += 1 + l + sov(l)\n }\n\n if (node.Links) {\n for (const link of node.Links) {\n const l = sizeLink(link)\n n += 1 + l + sov(l)\n }\n }\n\n return n\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @param {number} v\n * @returns {number}\n */\nfunction encodeVarint (bytes, offset, v) {\n offset -= sov(v)\n const base = offset\n\n while (v >= maxUInt32) {\n bytes[offset++] = (v & 0x7f) | 0x80\n v /= 128\n }\n\n while (v >= 128) {\n bytes[offset++] = (v & 0x7f) | 0x80\n v >>>= 7\n }\n\n bytes[offset] = v\n\n return base\n}\n\n/**\n * size of varint\n *\n * @param {number} x\n * @returns {number}\n */\nfunction sov (x) {\n if (x % 2 === 0) {\n x++\n }\n return Math.floor((len64(x) + 6) / 7)\n}\n\n/**\n * golang math/bits, how many bits does it take to represent this integer?\n *\n * @param {number} x\n * @returns {number}\n */\nfunction len64 (x) {\n let n = 0\n if (x >= maxInt32) {\n x = Math.floor(x / maxInt32)\n n = 32\n }\n if (x >= (1 << 16)) {\n x >>>= 16\n n += 16\n }\n if (x >= (1 << 8)) {\n x >>>= 8\n n += 8\n }\n return n + len8tab[x]\n}\n\n// golang math/bits\nconst len8tab = [\n 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8\n]\n","import { CID } from 'multiformats/cid'\n\n/**\n * @typedef {import('./interface.js').PBLink} PBLink\n * @typedef {import('./interface.js').PBNode} PBNode\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView} ByteView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView} ArrayBufferView\n */\n\nconst pbNodeProperties = ['Data', 'Links']\nconst pbLinkProperties = ['Hash', 'Name', 'Tsize']\n\nconst textEncoder = new TextEncoder()\n\n/**\n * @param {PBLink} a\n * @param {PBLink} b\n * @returns {number}\n */\nfunction linkComparator (a, b) {\n if (a === b) {\n return 0\n }\n\n const abuf = a.Name ? textEncoder.encode(a.Name) : []\n const bbuf = b.Name ? textEncoder.encode(b.Name) : []\n\n let x = abuf.length\n let y = bbuf.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (abuf[i] !== bbuf[i]) {\n x = abuf[i]\n y = bbuf[i]\n break\n }\n }\n\n return x < y ? -1 : y < x ? 1 : 0\n}\n\n/**\n * @param {any} node\n * @param {string[]} properties\n * @returns {boolean}\n */\nfunction hasOnlyProperties (node, properties) {\n return !Object.keys(node).some((p) => !properties.includes(p))\n}\n\n/**\n * Converts a CID, or a PBLink-like object to a PBLink\n *\n * @param {any} link\n * @returns {PBLink}\n */\nfunction asLink (link) {\n if (typeof link.asCID === 'object') {\n const Hash = CID.asCID(link)\n if (!Hash) {\n throw new TypeError('Invalid DAG-PB form')\n }\n return { Hash }\n }\n\n if (typeof link !== 'object' || Array.isArray(link)) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n const pbl = {}\n\n if (link.Hash) {\n let cid = CID.asCID(link.Hash)\n try {\n if (!cid) {\n if (typeof link.Hash === 'string') {\n cid = CID.parse(link.Hash)\n } else if (link.Hash instanceof Uint8Array) {\n cid = CID.decode(link.Hash)\n }\n }\n } catch (/** @type {any} */ e) {\n throw new TypeError(`Invalid DAG-PB form: ${e.message}`)\n }\n\n if (cid) {\n pbl.Hash = cid\n }\n }\n\n if (!pbl.Hash) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n if (typeof link.Name === 'string') {\n pbl.Name = link.Name\n }\n\n if (typeof link.Tsize === 'number') {\n pbl.Tsize = link.Tsize\n }\n\n return pbl\n}\n\n/**\n * @param {any} node\n * @returns {PBNode}\n */\nexport function prepare (node) {\n if (node instanceof Uint8Array || typeof node === 'string') {\n node = { Data: node }\n }\n\n if (typeof node !== 'object' || Array.isArray(node)) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n /** @type {PBNode} */\n const pbn = {}\n\n if (node.Data !== undefined) {\n if (typeof node.Data === 'string') {\n pbn.Data = textEncoder.encode(node.Data)\n } else if (node.Data instanceof Uint8Array) {\n pbn.Data = node.Data\n } else {\n throw new TypeError('Invalid DAG-PB form')\n }\n }\n\n if (node.Links !== undefined) {\n if (Array.isArray(node.Links)) {\n pbn.Links = node.Links.map(asLink)\n pbn.Links.sort(linkComparator)\n } else {\n throw new TypeError('Invalid DAG-PB form')\n }\n } else {\n pbn.Links = []\n }\n\n return pbn\n}\n\n/**\n * @param {PBNode} node\n */\nexport function validate (node) {\n /*\n type PBLink struct {\n Hash optional Link\n Name optional String\n Tsize optional Int\n }\n\n type PBNode struct {\n Links [PBLink]\n Data optional Bytes\n }\n */\n // @ts-ignore private property for TS\n if (!node || typeof node !== 'object' || Array.isArray(node) || node instanceof Uint8Array || (node['/'] && node['/'] === node.bytes)) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n if (!hasOnlyProperties(node, pbNodeProperties)) {\n throw new TypeError('Invalid DAG-PB form (extraneous properties)')\n }\n\n if (node.Data !== undefined && !(node.Data instanceof Uint8Array)) {\n throw new TypeError('Invalid DAG-PB form (Data must be bytes)')\n }\n\n if (!Array.isArray(node.Links)) {\n throw new TypeError('Invalid DAG-PB form (Links must be a list)')\n }\n\n for (let i = 0; i < node.Links.length; i++) {\n const link = node.Links[i]\n // @ts-ignore private property for TS\n if (!link || typeof link !== 'object' || Array.isArray(link) || link instanceof Uint8Array || (link['/'] && link['/'] === link.bytes)) {\n throw new TypeError('Invalid DAG-PB form (bad link)')\n }\n\n if (!hasOnlyProperties(link, pbLinkProperties)) {\n throw new TypeError('Invalid DAG-PB form (extraneous properties on link)')\n }\n\n if (link.Hash === undefined) {\n throw new TypeError('Invalid DAG-PB form (link must have a Hash)')\n }\n\n // @ts-ignore private property for TS\n if (link.Hash == null || !link.Hash['/'] || link.Hash['/'] !== link.Hash.bytes) {\n throw new TypeError('Invalid DAG-PB form (link Hash must be a CID)')\n }\n\n if (link.Name !== undefined && typeof link.Name !== 'string') {\n throw new TypeError('Invalid DAG-PB form (link Name must be a string)')\n }\n\n if (link.Tsize !== undefined) {\n if (typeof link.Tsize !== 'number' || link.Tsize % 1 !== 0) {\n throw new TypeError('Invalid DAG-PB form (link Tsize must be an integer)')\n }\n if (link.Tsize < 0) {\n throw new TypeError('Invalid DAG-PB form (link Tsize cannot be negative)')\n }\n }\n\n if (i > 0 && linkComparator(link, node.Links[i - 1]) === -1) {\n throw new TypeError('Invalid DAG-PB form (links must be sorted by Name bytes)')\n }\n }\n}\n\n/**\n * @param {Uint8Array} data\n * @param {PBLink[]} [links=[]]\n * @returns {PBNode}\n */\nexport function createNode (data, links = []) {\n return prepare({ Data: data, Links: links })\n}\n\n/**\n * @param {string} name\n * @param {number} size\n * @param {CID} cid\n * @returns {PBLink}\n */\nexport function createLink (name, size, cid) {\n return asLink({ Hash: cid, Name: name, Tsize: size })\n}\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} buf\n * @returns {ByteView}\n */\nexport function toByteView (buf) {\n if (buf instanceof ArrayBuffer) {\n return new Uint8Array(buf, 0, buf.byteLength)\n }\n\n return buf\n}\n","import { CID } from 'multiformats/cid'\nimport { decodeNode } from './pb-decode.js'\nimport { encodeNode } from './pb-encode.js'\nimport { prepare, validate, createNode, createLink, toByteView } from './util.js'\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView} ByteView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView} ArrayBufferView\n */\n\n/**\n * @typedef {import('./interface.js').PBLink} PBLink\n * @typedef {import('./interface.js').PBNode} PBNode\n */\n\nexport const name = 'dag-pb'\nexport const code = 0x70\n\n/**\n * @param {PBNode} node\n * @returns {ByteView}\n */\nexport function encode (node) {\n validate(node)\n\n const pbn = {}\n if (node.Links) {\n pbn.Links = node.Links.map((l) => {\n const link = {}\n if (l.Hash) {\n link.Hash = l.Hash.bytes // cid -> bytes\n }\n if (l.Name !== undefined) {\n link.Name = l.Name\n }\n if (l.Tsize !== undefined) {\n link.Tsize = l.Tsize\n }\n return link\n })\n }\n if (node.Data) {\n pbn.Data = node.Data\n }\n\n return encodeNode(pbn)\n}\n\n/**\n * @param {ByteView | ArrayBufferView} bytes\n * @returns {PBNode}\n */\nexport function decode (bytes) {\n const buf = toByteView(bytes)\n const pbn = decodeNode(buf)\n\n const node = {}\n\n if (pbn.Data) {\n node.Data = pbn.Data\n }\n\n if (pbn.Links) {\n node.Links = pbn.Links.map((l) => {\n const link = {}\n try {\n link.Hash = CID.decode(l.Hash)\n } catch (e) {}\n if (!link.Hash) {\n throw new Error('Invalid Hash field found in link, expected CID')\n }\n if (l.Name !== undefined) {\n link.Name = l.Name\n }\n if (l.Tsize !== undefined) {\n link.Tsize = l.Tsize\n }\n return link\n })\n }\n\n return node\n}\n\nexport { prepare, validate, createNode, createLink }\n","export class InvalidTypeError extends Error {\n static name = 'InvalidTypeError';\n static code = 'ERR_INVALID_TYPE';\n name = InvalidTypeError.name;\n code = InvalidTypeError.code;\n constructor(message = 'Invalid type') {\n super(message);\n }\n}\n//# sourceMappingURL=errors.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Data;\n(function (Data) {\n let DataType;\n (function (DataType) {\n DataType[\"Raw\"] = \"Raw\";\n DataType[\"Directory\"] = \"Directory\";\n DataType[\"File\"] = \"File\";\n DataType[\"Metadata\"] = \"Metadata\";\n DataType[\"Symlink\"] = \"Symlink\";\n DataType[\"HAMTShard\"] = \"HAMTShard\";\n })(DataType = Data.DataType || (Data.DataType = {}));\n let __DataTypeValues;\n (function (__DataTypeValues) {\n __DataTypeValues[__DataTypeValues[\"Raw\"] = 0] = \"Raw\";\n __DataTypeValues[__DataTypeValues[\"Directory\"] = 1] = \"Directory\";\n __DataTypeValues[__DataTypeValues[\"File\"] = 2] = \"File\";\n __DataTypeValues[__DataTypeValues[\"Metadata\"] = 3] = \"Metadata\";\n __DataTypeValues[__DataTypeValues[\"Symlink\"] = 4] = \"Symlink\";\n __DataTypeValues[__DataTypeValues[\"HAMTShard\"] = 5] = \"HAMTShard\";\n })(__DataTypeValues || (__DataTypeValues = {}));\n (function (DataType) {\n DataType.codec = () => {\n return enumeration(__DataTypeValues);\n };\n })(DataType = Data.DataType || (Data.DataType = {}));\n let _codec;\n Data.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n Data.DataType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (obj.filesize != null) {\n w.uint32(24);\n w.uint64(obj.filesize);\n }\n if (obj.blocksizes != null) {\n for (const value of obj.blocksizes) {\n w.uint32(32);\n w.uint64(value);\n }\n }\n if (obj.hashType != null) {\n w.uint32(40);\n w.uint64(obj.hashType);\n }\n if (obj.fanout != null) {\n w.uint32(48);\n w.uint64(obj.fanout);\n }\n if (obj.mode != null) {\n w.uint32(56);\n w.uint32(obj.mode);\n }\n if (obj.mtime != null) {\n w.uint32(66);\n UnixTime.codec().encode(obj.mtime, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n blocksizes: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = Data.DataType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n case 3:\n obj.filesize = reader.uint64();\n break;\n case 4:\n obj.blocksizes.push(reader.uint64());\n break;\n case 5:\n obj.hashType = reader.uint64();\n break;\n case 6:\n obj.fanout = reader.uint64();\n break;\n case 7:\n obj.mode = reader.uint32();\n break;\n case 8:\n obj.mtime = UnixTime.codec().decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Data.encode = (obj) => {\n return encodeMessage(obj, Data.codec());\n };\n Data.decode = (buf) => {\n return decodeMessage(buf, Data.codec());\n };\n})(Data || (Data = {}));\nexport var UnixTime;\n(function (UnixTime) {\n let _codec;\n UnixTime.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Seconds != null) {\n w.uint32(8);\n w.int64(obj.Seconds);\n }\n if (obj.FractionalNanoseconds != null) {\n w.uint32(21);\n w.fixed32(obj.FractionalNanoseconds);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Seconds = reader.int64();\n break;\n case 2:\n obj.FractionalNanoseconds = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n UnixTime.encode = (obj) => {\n return encodeMessage(obj, UnixTime.codec());\n };\n UnixTime.decode = (buf) => {\n return decodeMessage(buf, UnixTime.codec());\n };\n})(UnixTime || (UnixTime = {}));\nexport var Metadata;\n(function (Metadata) {\n let _codec;\n Metadata.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.MimeType != null) {\n w.uint32(10);\n w.string(obj.MimeType);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.MimeType = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Metadata.encode = (obj) => {\n return encodeMessage(obj, Metadata.codec());\n };\n Metadata.decode = (buf) => {\n return decodeMessage(buf, Metadata.codec());\n };\n})(Metadata || (Metadata = {}));\n//# sourceMappingURL=unixfs.js.map","/**\n * @packageDocumentation\n *\n * This module contains the protobuf definition of the UnixFS data structure found at the root of all UnixFS DAGs.\n *\n * The UnixFS spec can be found in the [ipfs/specs repository](http://github.com/ipfs/specs)\n *\n * @example Create a file composed of several blocks\n *\n * ```JavaScript\n * const data = new UnixFS({ type: 'file' })\n * data.addBlockSize(256) // add the size of each block\n * data.addBlockSize(256)\n * // ...\n * ```\n *\n * @example Create a directory that contains several files\n *\n * Creating a directory that contains several files is achieve by creating a unixfs element that identifies a MerkleDAG node as a directory. The links of that MerkleDAG node are the files that are contained in this directory.\n *\n * ```JavaScript\n * const data = new UnixFS({ type: 'directory' })\n * ```\n *\n * @example Create an unixfs Data element\n *\n * ```JavaScript\n * const data = new UnixFS([options])\n * ```\n *\n * `options` is an optional object argument that might include the following keys:\n *\n * - type (string, default `file`): The type of UnixFS entry. Can be:\n * - `raw`\n * - `directory`\n * - `file`\n * - `metadata`\n * - `symlink`\n * - `hamt-sharded-directory`\n * - data (Uint8Array): The optional data field for this node\n * - blockSizes (Array, default: `[]`): If this is a `file` node that is made up of multiple blocks, `blockSizes` is a list numbers that represent the size of the file chunks stored in each child node. It is used to calculate the total file size.\n * - mode (Number, default `0644` for files, `0755` for directories/hamt-sharded-directories) file mode\n * - mtime (`Date`, `{ secs, nsecs }`, `{ Seconds, FractionalNanoseconds }`, `[ secs, nsecs ]`): The modification time of this node\n *\n * @example Add and remove a block size to the block size list\n *\n * ```JavaScript\n * data.addBlockSize()\n * ```\n *\n * ```JavaScript\n * data.removeBlockSize()\n * ```\n *\n * @example Get total fileSize\n *\n * ```JavaScript\n * data.fileSize() // => size in bytes\n * ```\n *\n * @example Marshal and unmarshal\n *\n * ```javascript\n * const marshaled = data.marshal()\n * const unmarshaled = Unixfs.unmarshal(marshaled)\n * ```\n *\n * @example Is this UnixFS entry a directory?\n *\n * ```JavaScript\n * const dir = new Data({ type: 'directory' })\n * dir.isDirectory() // true\n *\n * const file = new Data({ type: 'file' })\n * file.isDirectory() // false\n * ```\n *\n * @example Has an mtime been set?\n *\n * If no modification time has been set, no `mtime` property will be present on the `Data` instance:\n *\n * ```JavaScript\n * const file = new Data({ type: 'file' })\n * file.mtime // undefined\n *\n * Object.prototype.hasOwnProperty.call(file, 'mtime') // false\n *\n * const dir = new Data({ type: 'dir', mtime: new Date() })\n * dir.mtime // { secs: Number, nsecs: Number }\n * ```\n */\nimport { InvalidTypeError } from './errors.js';\nimport { Data as PBData } from './unixfs.js';\nconst types = {\n Raw: 'raw',\n Directory: 'directory',\n File: 'file',\n Metadata: 'metadata',\n Symlink: 'symlink',\n HAMTShard: 'hamt-sharded-directory'\n};\nconst dirTypes = [\n 'directory',\n 'hamt-sharded-directory'\n];\nconst DEFAULT_FILE_MODE = parseInt('0644', 8);\nconst DEFAULT_DIRECTORY_MODE = parseInt('0755', 8);\nclass UnixFS {\n /**\n * Decode from protobuf https://github.com/ipfs/specs/blob/master/UNIXFS.md\n */\n static unmarshal(marshaled) {\n const message = PBData.decode(marshaled);\n const data = new UnixFS({\n type: types[message.Type != null ? message.Type.toString() : 'File'],\n data: message.Data,\n blockSizes: message.blocksizes,\n mode: message.mode,\n mtime: message.mtime != null\n ? {\n secs: message.mtime.Seconds ?? 0n,\n nsecs: message.mtime.FractionalNanoseconds\n }\n : undefined,\n fanout: message.fanout\n });\n // make sure we honour the original mode\n data._originalMode = message.mode ?? 0;\n return data;\n }\n type;\n data;\n blockSizes;\n hashType;\n fanout;\n mtime;\n _mode;\n _originalMode;\n constructor(options = {\n type: 'file'\n }) {\n const { type, data, blockSizes, hashType, fanout, mtime, mode } = options;\n if (type != null && !Object.values(types).includes(type)) {\n throw new InvalidTypeError('Type: ' + type + ' is not valid');\n }\n this.type = type ?? 'file';\n this.data = data;\n this.hashType = hashType;\n this.fanout = fanout;\n this.blockSizes = blockSizes ?? [];\n this._originalMode = 0;\n this.mode = mode;\n this.mtime = mtime;\n }\n set mode(mode) {\n if (mode == null) {\n this._mode = this.isDirectory() ? DEFAULT_DIRECTORY_MODE : DEFAULT_FILE_MODE;\n }\n else {\n this._mode = (mode & 0xFFF);\n }\n }\n get mode() {\n return this._mode;\n }\n isDirectory() {\n return dirTypes.includes(this.type);\n }\n addBlockSize(size) {\n this.blockSizes.push(size);\n }\n removeBlockSize(index) {\n this.blockSizes.splice(index, 1);\n }\n /**\n * Returns `0n` for directories or `data.length + sum(blockSizes)` for everything else\n */\n fileSize() {\n if (this.isDirectory()) {\n // dirs don't have file size\n return 0n;\n }\n let sum = 0n;\n this.blockSizes.forEach((size) => {\n sum += size;\n });\n if (this.data != null) {\n sum += BigInt(this.data.length);\n }\n return sum;\n }\n /**\n * encode to protobuf Uint8Array\n */\n marshal() {\n let type;\n switch (this.type) {\n case 'raw':\n type = PBData.DataType.Raw;\n break;\n case 'directory':\n type = PBData.DataType.Directory;\n break;\n case 'file':\n type = PBData.DataType.File;\n break;\n case 'metadata':\n type = PBData.DataType.Metadata;\n break;\n case 'symlink':\n type = PBData.DataType.Symlink;\n break;\n case 'hamt-sharded-directory':\n type = PBData.DataType.HAMTShard;\n break;\n default:\n throw new InvalidTypeError(`Type: ${type} is not valid`);\n }\n let data = this.data;\n if (this.data == null || this.data.length === 0) {\n data = undefined;\n }\n let mode;\n if (this.mode != null) {\n mode = (this._originalMode & 0xFFFFF000) | (this.mode ?? 0);\n if (mode === DEFAULT_FILE_MODE && !this.isDirectory()) {\n mode = undefined;\n }\n if (mode === DEFAULT_DIRECTORY_MODE && this.isDirectory()) {\n mode = undefined;\n }\n }\n let mtime;\n if (this.mtime != null) {\n mtime = {\n Seconds: this.mtime.secs,\n FractionalNanoseconds: this.mtime.nsecs\n };\n }\n return PBData.encode({\n Type: type,\n Data: data,\n filesize: this.isDirectory() ? undefined : this.fileSize(),\n blocksizes: this.blockSizes,\n hashType: this.hashType,\n fanout: this.fanout,\n mode,\n mtime\n });\n }\n}\nexport { UnixFS };\nexport * from './errors.js';\n//# sourceMappingURL=index.js.map","/**\n * An implementation of the ProgressEvent interface, this is essentially\n * a typed `CustomEvent` with a `type` property that lets us disambiguate\n * events passed to `progress` callbacks.\n */\nexport class CustomProgressEvent extends Event {\n type;\n detail;\n constructor(type, detail) {\n super(type);\n this.type = type;\n // @ts-expect-error detail may be undefined\n this.detail = detail;\n }\n}\n//# sourceMappingURL=index.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\nexport const persist = async (buffer, blockstore, options) => {\n if (options.codec == null) {\n options.codec = dagPb;\n }\n const multihash = await sha256.digest(buffer);\n const cid = CID.create(options.cidVersion, options.codec.code, multihash);\n await blockstore.put(cid, buffer, options);\n return cid;\n};\n//# sourceMappingURL=persist.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport * as raw from 'multiformats/codecs/raw';\nimport { CustomProgressEvent } from 'progress-events';\nimport { persist } from '../utils/persist.js';\nexport function defaultBufferImporter(options) {\n return async function* bufferImporter(file, blockstore) {\n let bytesWritten = 0n;\n for await (let block of file.content) {\n yield async () => {\n let unixfs;\n const opts = {\n codec: dagPb,\n cidVersion: options.cidVersion,\n onProgress: options.onProgress\n };\n if (options.rawLeaves) {\n opts.codec = raw;\n opts.cidVersion = 1;\n }\n else {\n unixfs = new UnixFS({\n type: options.leafType,\n data: block\n });\n block = dagPb.encode({\n Data: unixfs.marshal(),\n Links: []\n });\n }\n const cid = await persist(block, blockstore, opts);\n bytesWritten += BigInt(block.byteLength);\n options.onProgress?.(new CustomProgressEvent('unixfs:importer:progress:file:write', {\n bytesWritten,\n cid,\n path: file.path\n }));\n return {\n cid,\n unixfs,\n size: BigInt(block.length),\n block\n };\n };\n }\n };\n}\n//# sourceMappingURL=buffer-importer.js.map","export class InvalidParametersError extends Error {\n static name = 'InvalidParametersError';\n static code = 'ERR_INVALID_PARAMS';\n name = InvalidParametersError.name;\n code = InvalidParametersError.code;\n constructor(message = 'Invalid parameters') {\n super(message);\n }\n}\nexport class InvalidAvgChunkSizeError extends Error {\n static name = 'InvalidAvgChunkSizeError';\n static code = 'ERR_INVALID_AVG_CHUNK_SIZE';\n name = InvalidAvgChunkSizeError.name;\n code = InvalidAvgChunkSizeError.code;\n constructor(message = 'Invalid avg chunk size') {\n super(message);\n }\n}\nexport class InvalidChunkSizeError extends Error {\n static name = 'InvalidChunkSizeError';\n static code = 'ERR_INVALID_CHUNK_SIZE';\n name = InvalidChunkSizeError.name;\n code = InvalidChunkSizeError.code;\n constructor(message = 'Invalid chunk size') {\n super(message);\n }\n}\nexport class InvalidMinChunkSizeError extends Error {\n static name = 'InvalidMinChunkSizeError';\n static code = 'ERR_INVALID_MIN_CHUNK_SIZE';\n name = InvalidMinChunkSizeError.name;\n code = InvalidMinChunkSizeError.code;\n constructor(message = 'Invalid min chunk size') {\n super(message);\n }\n}\nexport class InvalidContentError extends Error {\n static name = 'InvalidContentError';\n static code = 'ERR_INVALID_CONTENT';\n name = InvalidContentError.name;\n code = InvalidContentError.code;\n constructor(message = 'Invalid content') {\n super(message);\n }\n}\n//# sourceMappingURL=errors.js.map","import { encode, prepare } from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { persist } from '../utils/persist.js';\nexport const dirBuilder = async (dir, blockstore, options) => {\n const unixfs = new UnixFS({\n type: 'directory',\n mtime: dir.mtime,\n mode: dir.mode\n });\n const block = encode(prepare({ Data: unixfs.marshal() }));\n const cid = await persist(block, blockstore, options);\n const path = dir.path;\n return {\n cid,\n path,\n unixfs,\n size: BigInt(block.length),\n originalPath: dir.originalPath,\n block\n };\n};\n//# sourceMappingURL=dir.js.map","import { encode, prepare } from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport parallelBatch from 'it-parallel-batch';\nimport * as rawCodec from 'multiformats/codecs/raw';\nimport { CustomProgressEvent } from 'progress-events';\nimport { persist } from '../utils/persist.js';\nasync function* buildFileBatch(file, blockstore, options) {\n let count = -1;\n let previous;\n for await (const entry of parallelBatch(options.bufferImporter(file, blockstore), options.blockWriteConcurrency)) {\n count++;\n if (count === 0) {\n // cache the first entry if case there aren't any more\n previous = {\n ...entry,\n single: true\n };\n continue;\n }\n else if (count === 1 && (previous != null)) {\n // we have the second block of a multiple block import so yield the first\n yield {\n ...previous,\n block: undefined,\n single: undefined\n };\n previous = undefined;\n }\n // yield the second or later block of a multiple block import\n yield {\n ...entry,\n block: undefined\n };\n }\n if (previous != null) {\n yield previous;\n }\n}\nfunction isSingleBlockImport(result) {\n return result.single === true;\n}\nconst reduce = (file, blockstore, options) => {\n const reducer = async function (leaves) {\n if (leaves.length === 1 && isSingleBlockImport(leaves[0]) && options.reduceSingleLeafToSelf) {\n const leaf = leaves[0];\n let node = leaf.block;\n if (isSingleBlockImport(leaf) && (file.mtime !== undefined || file.mode !== undefined)) {\n // only one leaf node which is a raw leaf - we have metadata so convert it into a\n // UnixFS entry otherwise we'll have nowhere to store the metadata\n leaf.unixfs = new UnixFS({\n type: 'file',\n mtime: file.mtime,\n mode: file.mode,\n data: leaf.block\n });\n node = { Data: leaf.unixfs.marshal(), Links: [] };\n leaf.block = encode(prepare(node));\n leaf.cid = await persist(leaf.block, blockstore, {\n ...options,\n cidVersion: options.cidVersion\n });\n leaf.size = BigInt(leaf.block.length);\n }\n options.onProgress?.(new CustomProgressEvent('unixfs:importer:progress:file:layout', {\n cid: leaf.cid,\n path: leaf.originalPath\n }));\n return {\n cid: leaf.cid,\n path: file.path,\n unixfs: leaf.unixfs,\n size: leaf.size,\n originalPath: leaf.originalPath\n };\n }\n // create a parent node and add all the leaves\n const f = new UnixFS({\n type: 'file',\n mtime: file.mtime,\n mode: file.mode\n });\n const links = leaves\n .filter(leaf => {\n if (leaf.cid.code === rawCodec.code && leaf.size > 0) {\n return true;\n }\n if ((leaf.unixfs != null) && (leaf.unixfs.data == null) && leaf.unixfs.fileSize() > 0n) {\n return true;\n }\n return Boolean(leaf.unixfs?.data?.length);\n })\n .map((leaf) => {\n if (leaf.cid.code === rawCodec.code) {\n // node is a leaf buffer\n f.addBlockSize(leaf.size);\n return {\n Name: '',\n Tsize: Number(leaf.size),\n Hash: leaf.cid\n };\n }\n if ((leaf.unixfs?.data == null)) {\n // node is an intermediate node\n f.addBlockSize(leaf.unixfs?.fileSize() ?? 0n);\n }\n else {\n // node is a unixfs 'file' leaf node\n f.addBlockSize(BigInt(leaf.unixfs.data.length));\n }\n return {\n Name: '',\n Tsize: Number(leaf.size),\n Hash: leaf.cid\n };\n });\n const node = {\n Data: f.marshal(),\n Links: links\n };\n const block = encode(prepare(node));\n const cid = await persist(block, blockstore, options);\n options.onProgress?.(new CustomProgressEvent('unixfs:importer:progress:file:layout', {\n cid,\n path: file.originalPath\n }));\n return {\n cid,\n path: file.path,\n unixfs: f,\n size: BigInt(block.length + node.Links.reduce((acc, curr) => acc + (curr.Tsize ?? 0), 0)),\n originalPath: file.originalPath,\n block\n };\n };\n return reducer;\n};\nexport const fileBuilder = async (file, block, options) => {\n return options.layout(buildFileBatch(file, block, options), reduce(file, block, options));\n};\n//# sourceMappingURL=file.js.map","import { CustomProgressEvent } from 'progress-events';\nimport { InvalidContentError } from '../errors.js';\nimport { dirBuilder } from './dir.js';\nimport { fileBuilder } from './file.js';\nfunction isIterable(thing) {\n return Symbol.iterator in thing;\n}\nfunction isAsyncIterable(thing) {\n return Symbol.asyncIterator in thing;\n}\nfunction contentAsAsyncIterable(content) {\n try {\n if (content instanceof Uint8Array) {\n return (async function* () {\n yield content;\n }());\n }\n else if (isIterable(content)) {\n return (async function* () {\n yield* content;\n }());\n }\n else if (isAsyncIterable(content)) {\n return content;\n }\n }\n catch {\n throw new InvalidContentError('Content was invalid');\n }\n throw new InvalidContentError('Content was invalid');\n}\nexport function defaultDagBuilder(options) {\n return async function* dagBuilder(source, blockstore) {\n for await (const entry of source) {\n let originalPath;\n if (entry.path != null) {\n originalPath = entry.path;\n entry.path = entry.path\n .split('/')\n .filter(path => path != null && path !== '.')\n .join('/');\n }\n if (isFileCandidate(entry)) {\n const file = {\n path: entry.path,\n mtime: entry.mtime,\n mode: entry.mode,\n content: (async function* () {\n let bytesRead = 0n;\n for await (const chunk of options.chunker(options.chunkValidator(contentAsAsyncIterable(entry.content)))) {\n const currentChunkSize = BigInt(chunk.byteLength);\n bytesRead += currentChunkSize;\n options.onProgress?.(new CustomProgressEvent('unixfs:importer:progress:file:read', {\n bytesRead,\n chunkSize: currentChunkSize,\n path: entry.path\n }));\n yield chunk;\n }\n })(),\n originalPath\n };\n yield async () => fileBuilder(file, blockstore, options);\n }\n else if (entry.path != null) {\n const dir = {\n path: entry.path,\n mtime: entry.mtime,\n mode: entry.mode,\n originalPath\n };\n yield async () => dirBuilder(dir, blockstore, options);\n }\n else {\n throw new Error('Import candidate must have content or path or both');\n }\n }\n };\n}\nfunction isFileCandidate(entry) {\n return entry.content != null;\n}\n//# sourceMappingURL=index.js.map","import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { InvalidContentError } from '../errors.js';\nexport const defaultChunkValidator = () => {\n return async function* validateChunks(source) {\n for await (const content of source) {\n if (content.length === undefined) {\n throw new InvalidContentError('Content was invalid');\n }\n if (typeof content === 'string' || content instanceof String) {\n yield uint8ArrayFromString(content.toString());\n }\n else if (Array.isArray(content)) {\n yield Uint8Array.from(content);\n }\n else if (content instanceof Uint8Array) {\n yield content;\n }\n else {\n throw new InvalidContentError('Content was invalid');\n }\n }\n };\n};\n//# sourceMappingURL=validate-chunks.js.map","import batch from 'it-batch';\nconst DEFAULT_MAX_CHILDREN_PER_NODE = 174;\nexport function balanced(options) {\n const maxChildrenPerNode = options?.maxChildrenPerNode ?? DEFAULT_MAX_CHILDREN_PER_NODE;\n return async function balancedLayout(source, reduce) {\n const roots = [];\n for await (const chunked of batch(source, maxChildrenPerNode)) {\n roots.push(await reduce(chunked));\n }\n if (roots.length > 1) {\n return balancedLayout(roots, reduce);\n }\n return roots[0];\n };\n}\n//# sourceMappingURL=balanced.js.map","/**\n * @packageDocumentation\n *\n * For when you need a one-liner to collect iterable values.\n *\n * @example\n *\n * ```javascript\n * import all from 'it-all'\n *\n * // This can also be an iterator, etc\n * const values = function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const arr = all(values)\n *\n * console.info(arr) // 0, 1, 2, 3, 4\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const arr = await all(values())\n *\n * console.info(arr) // 0, 1, 2, 3, 4\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction all(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n const arr = [];\n for await (const entry of source) {\n arr.push(entry);\n }\n return arr;\n })();\n }\n const arr = [];\n for (const entry of source) {\n arr.push(entry);\n }\n return arr;\n}\nexport default all;\n//# sourceMappingURL=index.js.map","import { CID } from 'multiformats/cid';\nexport class Dir {\n options;\n root;\n dir;\n path;\n dirty;\n flat;\n parent;\n parentKey;\n unixfs;\n mode;\n mtime;\n cid;\n size;\n nodeSize;\n constructor(props, options) {\n this.options = options ?? {};\n this.root = props.root;\n this.dir = props.dir;\n this.path = props.path;\n this.dirty = props.dirty;\n this.flat = props.flat;\n this.parent = props.parent;\n this.parentKey = props.parentKey;\n this.unixfs = props.unixfs;\n this.mode = props.mode;\n this.mtime = props.mtime;\n }\n}\n// we use these to calculate the node size to use as a check for whether a directory\n// should be sharded or not. Since CIDs have a constant length and We're only\n// interested in the data length and not the actual content identifier we can use\n// any old CID instead of having to hash the data which is expensive.\nexport const CID_V0 = CID.parse('QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn');\nexport const CID_V1 = CID.parse('zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi');\n//# sourceMappingURL=dir.js.map","import { encode, prepare } from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { Dir, CID_V0, CID_V1 } from './dir.js';\nimport { persist } from './utils/persist.js';\nexport class DirFlat extends Dir {\n _children;\n constructor(props, options) {\n super(props, options);\n this._children = new Map();\n }\n async put(name, value) {\n this.cid = undefined;\n this.size = undefined;\n this.nodeSize = undefined;\n this._children.set(name, value);\n }\n async get(name) {\n return Promise.resolve(this._children.get(name));\n }\n childCount() {\n return this._children.size;\n }\n directChildrenCount() {\n return this.childCount();\n }\n onlyChild() {\n return this._children.values().next().value;\n }\n async *eachChildSeries() {\n for (const [key, child] of this._children.entries()) {\n yield {\n key,\n child\n };\n }\n }\n estimateNodeSize() {\n if (this.nodeSize !== undefined) {\n return this.nodeSize;\n }\n this.nodeSize = 0;\n // estimate size only based on DAGLink name and CID byte lengths\n // https://github.com/ipfs/go-unixfsnode/blob/37b47f1f917f1b2f54c207682f38886e49896ef9/data/builder/directory.go#L81-L96\n for (const [name, child] of this._children.entries()) {\n if (child.size != null && (child.cid != null)) {\n this.nodeSize += name.length + (this.options.cidVersion === 1 ? CID_V1.bytes.byteLength : CID_V0.bytes.byteLength);\n }\n }\n return this.nodeSize;\n }\n async *flush(block) {\n const links = [];\n for (const [name, child] of this._children.entries()) {\n let result = child;\n if (child instanceof Dir) {\n for await (const entry of child.flush(block)) {\n result = entry;\n yield entry;\n }\n }\n if (result.size != null && (result.cid != null)) {\n links.push({\n Name: name,\n Tsize: Number(result.size),\n Hash: result.cid\n });\n }\n }\n const unixfs = new UnixFS({\n type: 'directory',\n mtime: this.mtime,\n mode: this.mode\n });\n const node = { Data: unixfs.marshal(), Links: links };\n const buffer = encode(prepare(node));\n const cid = await persist(buffer, block, this.options);\n const size = buffer.length + node.Links.reduce(\n /**\n * @param {number} acc\n * @param {PBLink} curr\n */\n (acc, curr) => acc + (curr.Tsize ?? 0), 0);\n this.cid = cid;\n this.size = size;\n yield {\n cid,\n unixfs,\n path: this.path,\n size: BigInt(size)\n };\n }\n}\n//# sourceMappingURL=dir-flat.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* jshint -W086: true */\n// +----------------------------------------------------------------------+\n// | murmurHash3js.js v3.0.1 // https://github.com/pid/murmurHash3js\n// | A javascript implementation of MurmurHash3's x86 hashing algorithms. |\n// |----------------------------------------------------------------------|\n// | Copyright (c) 2012-2015 Karan Lyons |\n// | https://github.com/karanlyons/murmurHash3.js/blob/c1778f75792abef7bdd74bc85d2d4e1a3d25cfe9/murmurHash3.js |\n// | Freely distributable under the MIT license. |\n// +----------------------------------------------------------------------+\n\n;(function (root, undefined) {\n 'use strict';\n\n // Create a local object that'll be exported or referenced globally.\n var library = {\n 'version': '3.0.0',\n 'x86': {},\n 'x64': {},\n 'inputValidation': true\n };\n\n // PRIVATE FUNCTIONS\n // -----------------\n\n function _validBytes(bytes) {\n // check the input is an array or a typed array\n if (!Array.isArray(bytes) && !ArrayBuffer.isView(bytes)) {\n return false;\n }\n\n // check all bytes are actually bytes\n for (var i = 0; i < bytes.length; i++) {\n if (!Number.isInteger(bytes[i]) || bytes[i] < 0 || bytes[i] > 255) {\n return false;\n }\n }\n return true;\n }\n\n function _x86Multiply(m, n) {\n //\n // Given two 32bit ints, returns the two multiplied together as a\n // 32bit int.\n //\n\n return ((m & 0xffff) * n) + ((((m >>> 16) * n) & 0xffff) << 16);\n }\n\n function _x86Rotl(m, n) {\n //\n // Given a 32bit int and an int representing a number of bit positions,\n // returns the 32bit int rotated left by that number of positions.\n //\n\n return (m << n) | (m >>> (32 - n));\n }\n\n function _x86Fmix(h) {\n //\n // Given a block, returns murmurHash3's final x86 mix of that block.\n //\n\n h ^= h >>> 16;\n h = _x86Multiply(h, 0x85ebca6b);\n h ^= h >>> 13;\n h = _x86Multiply(h, 0xc2b2ae35);\n h ^= h >>> 16;\n\n return h;\n }\n\n function _x64Add(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // added together as a 64bit int (as an array of two 32bit ints).\n //\n\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n var o = [0, 0, 0, 0];\n\n o[3] += m[3] + n[3];\n o[2] += o[3] >>> 16;\n o[3] &= 0xffff;\n\n o[2] += m[2] + n[2];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[1] += m[1] + n[1];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[0] += m[0] + n[0];\n o[0] &= 0xffff;\n\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n }\n\n function _x64Multiply(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // multiplied together as a 64bit int (as an array of two 32bit ints).\n //\n\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n var o = [0, 0, 0, 0];\n\n o[3] += m[3] * n[3];\n o[2] += o[3] >>> 16;\n o[3] &= 0xffff;\n\n o[2] += m[2] * n[3];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[2] += m[3] * n[2];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[1] += m[1] * n[3];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[1] += m[2] * n[2];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[1] += m[3] * n[1];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0]);\n o[0] &= 0xffff;\n\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n }\n\n function _x64Rotl(m, n) {\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) rotated left by that number of positions.\n //\n\n n %= 64;\n\n if (n === 32) {\n return [m[1], m[0]];\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))];\n } else {\n n -= 32;\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))];\n }\n }\n\n function _x64LeftShift(m, n) {\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) shifted left by that number of positions.\n //\n\n n %= 64;\n\n if (n === 0) {\n return m;\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n];\n } else {\n return [m[1] << (n - 32), 0];\n }\n }\n\n function _x64Xor(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // xored together as a 64bit int (as an array of two 32bit ints).\n //\n\n return [m[0] ^ n[0], m[1] ^ n[1]];\n }\n\n function _x64Fmix(h) {\n //\n // Given a block, returns murmurHash3's final x64 mix of that block.\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n // only place where we need to right shift 64bit ints.)\n //\n\n h = _x64Xor(h, [0, h[0] >>> 1]);\n h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]);\n h = _x64Xor(h, [0, h[0] >>> 1]);\n h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]);\n h = _x64Xor(h, [0, h[0] >>> 1]);\n\n return h;\n }\n\n // PUBLIC FUNCTIONS\n // ----------------\n\n library.x86.hash32 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 32 bit hash\n // using the x86 flavor of MurmurHash3, as an unsigned int.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n seed = seed || 0;\n\n var remainder = bytes.length % 4;\n var blocks = bytes.length - remainder;\n\n var h1 = seed;\n\n var k1 = 0;\n\n var c1 = 0xcc9e2d51;\n var c2 = 0x1b873593;\n\n for (var i = 0; i < blocks; i = i + 4) {\n k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n\n h1 ^= k1;\n h1 = _x86Rotl(h1, 13);\n h1 = _x86Multiply(h1, 5) + 0xe6546b64;\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3:\n k1 ^= bytes[i + 2] << 16;\n\n case 2:\n k1 ^= bytes[i + 1] << 8;\n\n case 1:\n k1 ^= bytes[i];\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n }\n\n h1 ^= bytes.length;\n h1 = _x86Fmix(h1);\n\n return h1 >>> 0;\n };\n\n library.x86.hash128 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x86 flavor of MurmurHash3, as an unsigned hex.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n\n seed = seed || 0;\n var remainder = bytes.length % 16;\n var blocks = bytes.length - remainder;\n\n var h1 = seed;\n var h2 = seed;\n var h3 = seed;\n var h4 = seed;\n\n var k1 = 0;\n var k2 = 0;\n var k3 = 0;\n var k4 = 0;\n\n var c1 = 0x239b961b;\n var c2 = 0xab0e9789;\n var c3 = 0x38b34ae5;\n var c4 = 0xa1e38b93;\n\n for (var i = 0; i < blocks; i = i + 16) {\n k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n k2 = (bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24);\n k3 = (bytes[i + 8]) | (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24);\n k4 = (bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24);\n\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n\n h1 = _x86Rotl(h1, 19);\n h1 += h2;\n h1 = _x86Multiply(h1, 5) + 0x561ccd1b;\n\n k2 = _x86Multiply(k2, c2);\n k2 = _x86Rotl(k2, 16);\n k2 = _x86Multiply(k2, c3);\n h2 ^= k2;\n\n h2 = _x86Rotl(h2, 17);\n h2 += h3;\n h2 = _x86Multiply(h2, 5) + 0x0bcaa747;\n\n k3 = _x86Multiply(k3, c3);\n k3 = _x86Rotl(k3, 17);\n k3 = _x86Multiply(k3, c4);\n h3 ^= k3;\n\n h3 = _x86Rotl(h3, 15);\n h3 += h4;\n h3 = _x86Multiply(h3, 5) + 0x96cd1c35;\n\n k4 = _x86Multiply(k4, c4);\n k4 = _x86Rotl(k4, 18);\n k4 = _x86Multiply(k4, c1);\n h4 ^= k4;\n\n h4 = _x86Rotl(h4, 13);\n h4 += h1;\n h4 = _x86Multiply(h4, 5) + 0x32ac3b17;\n }\n\n k1 = 0;\n k2 = 0;\n k3 = 0;\n k4 = 0;\n\n switch (remainder) {\n case 15:\n k4 ^= bytes[i + 14] << 16;\n\n case 14:\n k4 ^= bytes[i + 13] << 8;\n\n case 13:\n k4 ^= bytes[i + 12];\n k4 = _x86Multiply(k4, c4);\n k4 = _x86Rotl(k4, 18);\n k4 = _x86Multiply(k4, c1);\n h4 ^= k4;\n\n case 12:\n k3 ^= bytes[i + 11] << 24;\n\n case 11:\n k3 ^= bytes[i + 10] << 16;\n\n case 10:\n k3 ^= bytes[i + 9] << 8;\n\n case 9:\n k3 ^= bytes[i + 8];\n k3 = _x86Multiply(k3, c3);\n k3 = _x86Rotl(k3, 17);\n k3 = _x86Multiply(k3, c4);\n h3 ^= k3;\n\n case 8:\n k2 ^= bytes[i + 7] << 24;\n\n case 7:\n k2 ^= bytes[i + 6] << 16;\n\n case 6:\n k2 ^= bytes[i + 5] << 8;\n\n case 5:\n k2 ^= bytes[i + 4];\n k2 = _x86Multiply(k2, c2);\n k2 = _x86Rotl(k2, 16);\n k2 = _x86Multiply(k2, c3);\n h2 ^= k2;\n\n case 4:\n k1 ^= bytes[i + 3] << 24;\n\n case 3:\n k1 ^= bytes[i + 2] << 16;\n\n case 2:\n k1 ^= bytes[i + 1] << 8;\n\n case 1:\n k1 ^= bytes[i];\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n }\n\n h1 ^= bytes.length;\n h2 ^= bytes.length;\n h3 ^= bytes.length;\n h4 ^= bytes.length;\n\n h1 += h2;\n h1 += h3;\n h1 += h4;\n h2 += h1;\n h3 += h1;\n h4 += h1;\n\n h1 = _x86Fmix(h1);\n h2 = _x86Fmix(h2);\n h3 = _x86Fmix(h3);\n h4 = _x86Fmix(h4);\n\n h1 += h2;\n h1 += h3;\n h1 += h4;\n h2 += h1;\n h3 += h1;\n h4 += h1;\n\n return (\"00000000\" + (h1 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h3 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h4 >>> 0).toString(16)).slice(-8);\n };\n\n library.x64.hash128 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n seed = seed || 0;\n\n var remainder = bytes.length % 16;\n var blocks = bytes.length - remainder;\n\n var h1 = [0, seed];\n var h2 = [0, seed];\n\n var k1 = [0, 0];\n var k2 = [0, 0];\n\n var c1 = [0x87c37b91, 0x114253d5];\n var c2 = [0x4cf5ad43, 0x2745937f];\n\n for (var i = 0; i < blocks; i = i + 16) {\n k1 = [(bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24), (bytes[i]) |\n (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24)];\n k2 = [(bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24), (bytes[i + 8]) |\n (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24)];\n\n k1 = _x64Multiply(k1, c1);\n k1 = _x64Rotl(k1, 31);\n k1 = _x64Multiply(k1, c2);\n h1 = _x64Xor(h1, k1);\n\n h1 = _x64Rotl(h1, 27);\n h1 = _x64Add(h1, h2);\n h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]);\n\n k2 = _x64Multiply(k2, c2);\n k2 = _x64Rotl(k2, 33);\n k2 = _x64Multiply(k2, c1);\n h2 = _x64Xor(h2, k2);\n\n h2 = _x64Rotl(h2, 31);\n h2 = _x64Add(h2, h1);\n h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]);\n }\n\n k1 = [0, 0];\n k2 = [0, 0];\n\n switch (remainder) {\n case 15:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 14]], 48));\n\n case 14:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 13]], 40));\n\n case 13:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 12]], 32));\n\n case 12:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 11]], 24));\n\n case 11:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 10]], 16));\n\n case 10:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 9]], 8));\n\n case 9:\n k2 = _x64Xor(k2, [0, bytes[i + 8]]);\n k2 = _x64Multiply(k2, c2);\n k2 = _x64Rotl(k2, 33);\n k2 = _x64Multiply(k2, c1);\n h2 = _x64Xor(h2, k2);\n\n case 8:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 7]], 56));\n\n case 7:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 6]], 48));\n\n case 6:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 5]], 40));\n\n case 5:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 4]], 32));\n\n case 4:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 3]], 24));\n\n case 3:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 2]], 16));\n\n case 2:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 1]], 8));\n\n case 1:\n k1 = _x64Xor(k1, [0, bytes[i]]);\n k1 = _x64Multiply(k1, c1);\n k1 = _x64Rotl(k1, 31);\n k1 = _x64Multiply(k1, c2);\n h1 = _x64Xor(h1, k1);\n }\n\n h1 = _x64Xor(h1, [0, bytes.length]);\n h2 = _x64Xor(h2, [0, bytes.length]);\n\n h1 = _x64Add(h1, h2);\n h2 = _x64Add(h2, h1);\n\n h1 = _x64Fmix(h1);\n h2 = _x64Fmix(h2);\n\n h1 = _x64Add(h1, h2);\n h2 = _x64Add(h2, h1);\n\n return (\"00000000\" + (h1[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h1[1] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[1] >>> 0).toString(16)).slice(-8);\n };\n\n // INITIALIZATION\n // --------------\n\n // Export murmurHash3 for CommonJS, either as an AMD module or just as part\n // of the global object.\n if (typeof exports !== 'undefined') {\n\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = library;\n }\n\n exports.murmurHash3 = library;\n\n } else if (typeof define === 'function' && define.amd) {\n\n define([], function () {\n return library;\n });\n } else {\n\n // Use murmurHash3.noConflict to restore `murmurHash3` back to its\n // original value. Returns a reference to the library object, to allow\n // it to be used under a different name.\n library._murmurHash3 = root.murmurHash3;\n\n library.noConflict = function () {\n root.murmurHash3 = library._murmurHash3;\n library._murmurHash3 = undefined;\n library.noConflict = undefined;\n\n return library;\n };\n\n root.murmurHash3 = library;\n }\n})(this);\n","module.exports = require('./lib/murmurHash3js');\n","import { bytes } from 'multiformats'\nimport { from } from 'multiformats/hashes/hasher'\n// @ts-expect-error no types\nimport mur from 'murmurhash3js-revisited'\n\n/**\n * @param {number} number\n * @returns {Uint8Array}\n */\nfunction fromNumberTo32BitBuf (number) {\n const bytes = new Array(4)\n for (let i = 0; i < 4; i++) {\n bytes[i] = number & 0xff\n number = number >> 8\n }\n return new Uint8Array(bytes)\n}\n\nexport const murmur332 = from({\n name: 'murmur3-32',\n code: 0x23,\n encode: (input) => fromNumberTo32BitBuf(mur.x86.hash32(input))\n})\n\nexport const murmur3128 = from({\n name: 'murmur3-128',\n code: 0x22,\n encode: (input) => bytes.fromHex(mur.x64.hash128(input))\n})\n\n// A special-use 0x22 that truncates 64 bits, specifically for use in the UnixFS HAMT\nexport const murmur364 = from({\n name: 'murmur3-x64-64',\n code: 0x22,\n encode: (input) => bytes.fromHex(mur.x64.hash128(input)).subarray(0, 8)\n})\n","'use strict'\n\n// JS treats subjects of bitwise operators as SIGNED 32 bit numbers,\n// which means the maximum amount of bits we can store inside each byte\n// is 7..\nconst BITS_PER_BYTE = 7\n\nmodule.exports = class SparseArray {\n constructor () {\n this._bitArrays = []\n this._data = []\n this._length = 0\n this._changedLength = false\n this._changedData = false\n }\n\n set (index, value) {\n let pos = this._internalPositionFor(index, false)\n if (value === undefined) {\n // unsetting\n if (pos !== -1) {\n // remove item from bit array and array itself\n this._unsetInternalPos(pos)\n this._unsetBit(index)\n this._changedLength = true\n this._changedData = true\n }\n } else {\n let needsSort = false\n if (pos === -1) {\n pos = this._data.length\n this._setBit(index)\n this._changedData = true\n } else {\n needsSort = true\n }\n this._setInternalPos(pos, index, value, needsSort)\n this._changedLength = true\n }\n }\n\n unset (index) {\n this.set(index, undefined)\n }\n\n get (index) {\n this._sortData()\n const pos = this._internalPositionFor(index, true)\n if (pos === -1) {\n return undefined\n }\n return this._data[pos][1]\n }\n\n push (value) {\n this.set(this.length, value)\n return this.length\n }\n\n get length () {\n this._sortData()\n if (this._changedLength) {\n const last = this._data[this._data.length - 1]\n this._length = last ? last[0] + 1 : 0\n this._changedLength = false\n }\n return this._length\n }\n\n forEach (iterator) {\n let i = 0\n while(i < this.length) {\n iterator(this.get(i), i, this)\n i++\n }\n }\n\n map (iterator) {\n let i = 0\n let mapped = new Array(this.length)\n while(i < this.length) {\n mapped[i] = iterator(this.get(i), i, this)\n i++\n }\n return mapped\n }\n\n reduce (reducer, initialValue) {\n let i = 0\n let acc = initialValue\n while(i < this.length) {\n const value = this.get(i)\n acc = reducer(acc, value, i)\n i++\n }\n return acc\n }\n\n find (finder) {\n let i = 0, found, last\n while ((i < this.length) && !found) {\n last = this.get(i)\n found = finder(last)\n i++\n }\n return found ? last : undefined\n }\n\n _internalPositionFor (index, noCreate) {\n const bytePos = this._bytePosFor(index, noCreate)\n if (bytePos >= this._bitArrays.length) {\n return -1\n }\n const byte = this._bitArrays[bytePos]\n const bitPos = index - bytePos * BITS_PER_BYTE\n const exists = (byte & (1 << bitPos)) > 0\n if (!exists) {\n return -1\n }\n const previousPopCount = this._bitArrays.slice(0, bytePos).reduce(popCountReduce, 0)\n\n const mask = ~(0xffffffff << (bitPos + 1))\n const bytePopCount = popCount(byte & mask)\n const arrayPos = previousPopCount + bytePopCount - 1\n return arrayPos\n }\n\n _bytePosFor (index, noCreate) {\n const bytePos = Math.floor(index / BITS_PER_BYTE)\n const targetLength = bytePos + 1\n while (!noCreate && this._bitArrays.length < targetLength) {\n this._bitArrays.push(0)\n }\n return bytePos\n }\n\n _setBit (index) {\n const bytePos = this._bytePosFor(index, false)\n this._bitArrays[bytePos] |= (1 << (index - (bytePos * BITS_PER_BYTE)))\n }\n\n _unsetBit(index) {\n const bytePos = this._bytePosFor(index, false)\n this._bitArrays[bytePos] &= ~(1 << (index - (bytePos * BITS_PER_BYTE)))\n }\n\n _setInternalPos(pos, index, value, needsSort) {\n const data =this._data\n const elem = [index, value]\n if (needsSort) {\n this._sortData()\n data[pos] = elem\n } else {\n // new element. just shove it into the array\n // but be nice about where we shove it\n // in order to make sorting it later easier\n if (data.length) {\n if (data[data.length - 1][0] >= index) {\n data.push(elem)\n } else if (data[0][0] <= index) {\n data.unshift(elem)\n } else {\n const randomIndex = Math.round(data.length / 2)\n this._data = data.slice(0, randomIndex).concat(elem).concat(data.slice(randomIndex))\n }\n } else {\n this._data.push(elem)\n }\n this._changedData = true\n this._changedLength = true\n }\n }\n\n _unsetInternalPos (pos) {\n this._data.splice(pos, 1)\n }\n\n _sortData () {\n if (this._changedData) {\n this._data.sort(sortInternal)\n }\n\n this._changedData = false\n }\n\n bitField () {\n const bytes = []\n let pendingBitsForResultingByte = 8\n let pendingBitsForNewByte = 0\n let resultingByte = 0\n let newByte\n const pending = this._bitArrays.slice()\n while (pending.length || pendingBitsForNewByte) {\n if (pendingBitsForNewByte === 0) {\n newByte = pending.shift()\n pendingBitsForNewByte = 7\n }\n\n const usingBits = Math.min(pendingBitsForNewByte, pendingBitsForResultingByte)\n const mask = ~(0b11111111 << usingBits)\n const masked = newByte & mask\n resultingByte |= masked << (8 - pendingBitsForResultingByte)\n newByte = newByte >>> usingBits\n pendingBitsForNewByte -= usingBits\n pendingBitsForResultingByte -= usingBits\n\n if (!pendingBitsForResultingByte || (!pendingBitsForNewByte && !pending.length)) {\n bytes.push(resultingByte)\n resultingByte = 0\n pendingBitsForResultingByte = 8\n }\n }\n\n // remove trailing zeroes\n for(var i = bytes.length - 1; i > 0; i--) {\n const value = bytes[i]\n if (value === 0) {\n bytes.pop()\n } else {\n break\n }\n }\n\n return bytes\n }\n\n compactArray () {\n this._sortData()\n return this._data.map(valueOnly)\n }\n}\n\nfunction popCountReduce (count, byte) {\n return count + popCount(byte)\n}\n\nfunction popCount(_v) {\n let v = _v\n v = v - ((v >> 1) & 0x55555555) // reuse input as temporary\n v = (v & 0x33333333) + ((v >> 2) & 0x33333333) // temp\n return ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24\n}\n\nfunction sortInternal (a, b) {\n return a[0] - b[0]\n}\n\nfunction valueOnly (elem) {\n return elem[1]\n}","// @ts-expect-error no types\nimport SparseArray from 'sparse-array';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nexport class Bucket {\n _options;\n _popCount;\n _parent;\n _posAtParent;\n _children;\n key;\n constructor(options, parent, posAtParent = 0) {\n this._options = options;\n this._popCount = 0;\n this._parent = parent;\n this._posAtParent = posAtParent;\n this._children = new SparseArray();\n this.key = null;\n }\n async put(key, value) {\n const place = await this._findNewBucketAndPos(key);\n place.bucket._putAt(place, key, value);\n }\n async get(key) {\n const child = await this._findChild(key);\n if (child != null) {\n return child.value;\n }\n }\n async del(key) {\n const place = await this._findPlace(key);\n const child = place.bucket._at(place.pos);\n if (child != null && child.key === key) {\n place.bucket._delAt(place.pos);\n }\n }\n leafCount() {\n const children = this._children.compactArray();\n return children.reduce((acc, child) => {\n if (child instanceof Bucket) {\n return acc + child.leafCount();\n }\n return acc + 1;\n }, 0);\n }\n childrenCount() {\n return this._children.length;\n }\n onlyChild() {\n return this._children.get(0);\n }\n *eachLeafSeries() {\n const children = this._children.compactArray();\n for (const child of children) {\n if (child instanceof Bucket) {\n yield* child.eachLeafSeries();\n }\n else {\n yield child;\n }\n }\n }\n serialize(map, reduce) {\n const acc = [];\n // serialize to a custom non-sparse representation\n return reduce(this._children.reduce((acc, child, index) => {\n if (child != null) {\n if (child instanceof Bucket) {\n acc.push(child.serialize(map, reduce));\n }\n else {\n acc.push(map(child, index));\n }\n }\n return acc;\n }, acc));\n }\n async asyncTransform(asyncMap, asyncReduce) {\n return asyncTransformBucket(this, asyncMap, asyncReduce);\n }\n toJSON() {\n return this.serialize(mapNode, reduceNodes);\n }\n prettyPrint() {\n return JSON.stringify(this.toJSON(), null, ' ');\n }\n tableSize() {\n return Math.pow(2, this._options.bits);\n }\n async _findChild(key) {\n const result = await this._findPlace(key);\n const child = result.bucket._at(result.pos);\n if (child instanceof Bucket) {\n // should not be possible, this._findPlace should always\n // return a location for a child, not a bucket\n return undefined;\n }\n if (child != null && child.key === key) {\n return child;\n }\n }\n async _findPlace(key) {\n const hashValue = this._options.hash(typeof key === 'string' ? uint8ArrayFromString(key) : key);\n const index = await hashValue.take(this._options.bits);\n const child = this._children.get(index);\n if (child instanceof Bucket) {\n return child._findPlace(hashValue);\n }\n return {\n bucket: this,\n pos: index,\n hash: hashValue,\n existingChild: child\n };\n }\n async _findNewBucketAndPos(key) {\n const place = await this._findPlace(key);\n if ((place.existingChild != null) && place.existingChild.key !== key) {\n // conflict\n const bucket = new Bucket(this._options, place.bucket, place.pos);\n place.bucket._putObjectAt(place.pos, bucket);\n // put the previous value\n const newPlace = await bucket._findPlace(place.existingChild.hash);\n newPlace.bucket._putAt(newPlace, place.existingChild.key, place.existingChild.value);\n return bucket._findNewBucketAndPos(place.hash);\n }\n // no conflict, we found the place\n return place;\n }\n _putAt(place, key, value) {\n this._putObjectAt(place.pos, {\n key,\n value,\n hash: place.hash\n });\n }\n _putObjectAt(pos, object) {\n if (this._children.get(pos) == null) {\n this._popCount++;\n }\n this._children.set(pos, object);\n }\n _delAt(pos) {\n if (pos === -1) {\n throw new Error('Invalid position');\n }\n if (this._children.get(pos) != null) {\n this._popCount--;\n }\n this._children.unset(pos);\n this._level();\n }\n _level() {\n if (this._parent != null && this._popCount <= 1) {\n if (this._popCount === 1) {\n // remove myself from parent, replacing me with my only child\n const onlyChild = this._children.find(exists);\n if ((onlyChild != null) && !(onlyChild instanceof Bucket)) {\n const hash = onlyChild.hash;\n hash.untake(this._options.bits);\n const place = {\n pos: this._posAtParent,\n hash,\n bucket: this._parent\n };\n this._parent._putAt(place, onlyChild.key, onlyChild.value);\n }\n }\n else {\n this._parent._delAt(this._posAtParent);\n }\n }\n }\n _at(index) {\n return this._children.get(index);\n }\n}\nfunction exists(o) {\n return Boolean(o);\n}\nfunction mapNode(node, _) {\n return node.key;\n}\nfunction reduceNodes(nodes) {\n return nodes;\n}\nasync function asyncTransformBucket(bucket, asyncMap, asyncReduce) {\n const output = [];\n for (const child of bucket._children.compactArray()) {\n if (child instanceof Bucket) {\n await asyncTransformBucket(child, asyncMap, asyncReduce);\n }\n else {\n const mappedChildren = await asyncMap(child);\n output.push({\n bitField: bucket._children.bitField(),\n children: mappedChildren\n });\n }\n }\n return asyncReduce(output);\n}\n//# sourceMappingURL=bucket.js.map","const START_MASKS = [\n 0b11111111,\n 0b11111110,\n 0b11111100,\n 0b11111000,\n 0b11110000,\n 0b11100000,\n 0b11000000,\n 0b10000000\n];\nconst STOP_MASKS = [\n 0b00000001,\n 0b00000011,\n 0b00000111,\n 0b00001111,\n 0b00011111,\n 0b00111111,\n 0b01111111,\n 0b11111111\n];\nexport class ConsumableBuffer {\n _value;\n _currentBytePos;\n _currentBitPos;\n constructor(value) {\n this._value = value;\n this._currentBytePos = value.length - 1;\n this._currentBitPos = 7;\n }\n availableBits() {\n return this._currentBitPos + 1 + this._currentBytePos * 8;\n }\n totalBits() {\n return this._value.length * 8;\n }\n take(bits) {\n let pendingBits = bits;\n let result = 0;\n while (pendingBits > 0 && this._haveBits()) {\n const byte = this._value[this._currentBytePos];\n const availableBits = this._currentBitPos + 1;\n const taking = Math.min(availableBits, pendingBits);\n const value = byteBitsToInt(byte, availableBits - taking, taking);\n result = (result << taking) + value;\n pendingBits -= taking;\n this._currentBitPos -= taking;\n if (this._currentBitPos < 0) {\n this._currentBitPos = 7;\n this._currentBytePos--;\n }\n }\n return result;\n }\n untake(bits) {\n this._currentBitPos += bits;\n while (this._currentBitPos > 7) {\n this._currentBitPos -= 8;\n this._currentBytePos += 1;\n }\n }\n _haveBits() {\n return this._currentBytePos >= 0;\n }\n}\nfunction byteBitsToInt(byte, start, length) {\n const mask = maskFor(start, length);\n return (byte & mask) >>> start;\n}\nfunction maskFor(start, length) {\n return START_MASKS[start] & STOP_MASKS[Math.min(length + start - 1, 7)];\n}\n//# sourceMappingURL=consumable-buffer.js.map","import { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { ConsumableBuffer } from './consumable-buffer.js';\nexport function wrapHash(hashFn) {\n function hashing(value) {\n if (value instanceof InfiniteHash) {\n // already a hash. return it\n return value;\n }\n else {\n return new InfiniteHash(value, hashFn);\n }\n }\n return hashing;\n}\nexport class InfiniteHash {\n _value;\n _hashFn;\n _depth;\n _availableBits;\n _currentBufferIndex;\n _buffers;\n constructor(value, hashFn) {\n if (!(value instanceof Uint8Array)) {\n throw new Error('can only hash Uint8Arrays');\n }\n this._value = value;\n this._hashFn = hashFn;\n this._depth = -1;\n this._availableBits = 0;\n this._currentBufferIndex = 0;\n this._buffers = [];\n }\n async take(bits) {\n let pendingBits = bits;\n while (this._availableBits < pendingBits) {\n await this._produceMoreBits();\n }\n let result = 0;\n while (pendingBits > 0) {\n const hash = this._buffers[this._currentBufferIndex];\n const available = Math.min(hash.availableBits(), pendingBits);\n const took = hash.take(available);\n result = (result << available) + took;\n pendingBits -= available;\n this._availableBits -= available;\n if (hash.availableBits() === 0) {\n this._currentBufferIndex++;\n }\n }\n return result;\n }\n untake(bits) {\n let pendingBits = bits;\n while (pendingBits > 0) {\n const hash = this._buffers[this._currentBufferIndex];\n const availableForUntake = Math.min(hash.totalBits() - hash.availableBits(), pendingBits);\n hash.untake(availableForUntake);\n pendingBits -= availableForUntake;\n this._availableBits += availableForUntake;\n if (this._currentBufferIndex > 0 && hash.totalBits() === hash.availableBits()) {\n this._depth--;\n this._currentBufferIndex--;\n }\n }\n }\n async _produceMoreBits() {\n this._depth++;\n const value = this._depth > 0 ? uint8ArrayConcat([this._value, Uint8Array.from([this._depth])]) : this._value;\n const hashValue = await this._hashFn(value);\n const buffer = new ConsumableBuffer(hashValue);\n this._buffers.push(buffer);\n this._availableBits += buffer.availableBits();\n }\n}\n//# sourceMappingURL=consumable-hash.js.map","/**\n * @packageDocumentation\n *\n * A [Hash Mapped Trie](https://en.wikipedia.org/wiki/Hash_array_mapped_trie) implementation for JavaScript.\n *\n * This is used by [@helia/unixfs](https://www.npmjs.com/package/@helia/unixfs) for it's HAMT-sharded directory implementation.\n *\n * @example\n *\n * ```TypeScript\n * import { createHAMT } from 'hamt-sharding'\n * import crypto from 'crypto-promise'\n *\n * // decide how to hash buffers made from keys, can return a Promise\n * const hashFn = async (buf) => {\n * return crypto\n * .createHash('sha256')\n * .update(buf)\n * .digest()\n * }\n *\n * const bucket = createHAMT({\n * hashFn: hashFn\n * })\n *\n * await bucket.put('key', 'value')\n *\n * const output = await bucket.get('key')\n * // output === 'value'\n * ```\n */\nimport { Bucket } from './bucket.js';\nimport { wrapHash } from './consumable-hash.js';\nexport function createHAMT(options) {\n if (options == null || options.hashFn == null) {\n throw new Error('please define an options.hashFn');\n }\n const bucketOptions = {\n bits: options.bits ?? 8,\n hash: wrapHash(options.hashFn)\n };\n return new Bucket(bucketOptions);\n}\nexport { Bucket };\n//# sourceMappingURL=index.js.map","import { encode, prepare } from '@ipld/dag-pb';\nimport { murmur3128 } from '@multiformats/murmur3';\nimport { createHAMT, Bucket } from 'hamt-sharding';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { Dir, CID_V0, CID_V1 } from './dir.js';\nimport { persist } from './utils/persist.js';\nasync function hamtHashFn(buf) {\n return (await murmur3128.encode(buf))\n // Murmur3 outputs 128 bit but, accidentally, IPFS Go's\n // implementation only uses the first 64, so we must do the same\n // for parity..\n .slice(0, 8)\n // Invert buffer because that's how Go impl does it\n .reverse();\n}\nconst HAMT_HASH_CODE = BigInt(0x22);\nconst DEFAULT_FANOUT_BITS = 8;\nclass DirSharded extends Dir {\n _bucket;\n constructor(props, options) {\n super(props, options);\n this._bucket = createHAMT({\n hashFn: hamtHashFn,\n bits: options.shardFanoutBits ?? DEFAULT_FANOUT_BITS\n });\n }\n async put(name, value) {\n this.cid = undefined;\n this.size = undefined;\n this.nodeSize = undefined;\n await this._bucket.put(name, value);\n }\n async get(name) {\n return this._bucket.get(name);\n }\n childCount() {\n return this._bucket.leafCount();\n }\n directChildrenCount() {\n return this._bucket.childrenCount();\n }\n onlyChild() {\n return this._bucket.onlyChild();\n }\n async *eachChildSeries() {\n for await (const { key, value } of this._bucket.eachLeafSeries()) {\n yield {\n key,\n child: value\n };\n }\n }\n estimateNodeSize() {\n if (this.nodeSize !== undefined) {\n return this.nodeSize;\n }\n this.nodeSize = calculateSize(this._bucket, this, this.options);\n return this.nodeSize;\n }\n async *flush(blockstore) {\n for await (const entry of flush(this._bucket, blockstore, this, this.options)) {\n yield {\n ...entry,\n path: this.path\n };\n }\n }\n}\nexport default DirSharded;\nasync function* flush(bucket, blockstore, shardRoot, options) {\n const children = bucket._children;\n const padLength = (bucket.tableSize() - 1).toString(16).length;\n const links = [];\n let childrenSize = 0n;\n for (let i = 0; i < children.length; i++) {\n const child = children.get(i);\n if (child == null) {\n continue;\n }\n const labelPrefix = i.toString(16).toUpperCase().padStart(padLength, '0');\n if (child instanceof Bucket) {\n let shard;\n for await (const subShard of flush(child, blockstore, null, options)) {\n shard = subShard;\n }\n if (shard == null) {\n throw new Error('Could not flush sharded directory, no subshard found');\n }\n links.push({\n Name: labelPrefix,\n Tsize: Number(shard.size),\n Hash: shard.cid\n });\n childrenSize += shard.size;\n }\n else if (isDir(child.value)) {\n const dir = child.value;\n let flushedDir;\n for await (const entry of dir.flush(blockstore)) {\n flushedDir = entry;\n yield flushedDir;\n }\n if (flushedDir == null) {\n throw new Error('Did not flush dir');\n }\n const label = labelPrefix + child.key;\n links.push({\n Name: label,\n Tsize: Number(flushedDir.size),\n Hash: flushedDir.cid\n });\n childrenSize += flushedDir.size;\n }\n else {\n const value = child.value;\n if (value.cid == null) {\n continue;\n }\n const label = labelPrefix + child.key;\n const size = value.size;\n links.push({\n Name: label,\n Tsize: Number(size),\n Hash: value.cid\n });\n childrenSize += BigInt(size ?? 0);\n }\n }\n // go-ipfs uses little endian, that's why we have to\n // reverse the bit field before storing it\n const data = Uint8Array.from(children.bitField().reverse());\n const dir = new UnixFS({\n type: 'hamt-sharded-directory',\n data,\n fanout: BigInt(bucket.tableSize()),\n hashType: HAMT_HASH_CODE,\n mtime: shardRoot?.mtime,\n mode: shardRoot?.mode\n });\n const node = {\n Data: dir.marshal(),\n Links: links\n };\n const buffer = encode(prepare(node));\n const cid = await persist(buffer, blockstore, options);\n const size = BigInt(buffer.byteLength) + childrenSize;\n yield {\n cid,\n unixfs: dir,\n size\n };\n}\nfunction isDir(obj) {\n return typeof obj.flush === 'function';\n}\nfunction calculateSize(bucket, shardRoot, options) {\n const children = bucket._children;\n const padLength = (bucket.tableSize() - 1).toString(16).length;\n const links = [];\n for (let i = 0; i < children.length; i++) {\n const child = children.get(i);\n if (child == null) {\n continue;\n }\n const labelPrefix = i.toString(16).toUpperCase().padStart(padLength, '0');\n if (child instanceof Bucket) {\n const size = calculateSize(child, null, options);\n links.push({\n Name: labelPrefix,\n Tsize: Number(size),\n Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n });\n }\n else if (typeof child.value.flush === 'function') {\n const dir = child.value;\n const size = dir.nodeSize();\n links.push({\n Name: labelPrefix + child.key,\n Tsize: Number(size),\n Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n });\n }\n else {\n const value = child.value;\n if (value.cid == null) {\n continue;\n }\n const label = labelPrefix + child.key;\n const size = value.size;\n links.push({\n Name: label,\n Tsize: Number(size),\n Hash: value.cid\n });\n }\n }\n // go-ipfs uses little endian, that's why we have to\n // reverse the bit field before storing it\n const data = Uint8Array.from(children.bitField().reverse());\n const dir = new UnixFS({\n type: 'hamt-sharded-directory',\n data,\n fanout: BigInt(bucket.tableSize()),\n hashType: HAMT_HASH_CODE,\n mtime: shardRoot?.mtime,\n mode: shardRoot?.mode\n });\n const buffer = encode(prepare({\n Data: dir.marshal(),\n Links: links\n }));\n return buffer.length;\n}\n//# sourceMappingURL=dir-sharded.js.map","import { DirFlat } from './dir-flat.js';\nimport DirSharded, {} from './dir-sharded.js';\nexport async function flatToShard(child, dir, threshold, options) {\n let newDir = dir;\n if (dir instanceof DirFlat && dir.estimateNodeSize() > threshold) {\n newDir = await convertToShard(dir, options);\n }\n const parent = newDir.parent;\n if (parent != null) {\n if (newDir !== dir) {\n if (child != null) {\n child.parent = newDir;\n }\n if (newDir.parentKey == null) {\n throw new Error('No parent key found');\n }\n await parent.put(newDir.parentKey, newDir);\n }\n return flatToShard(newDir, parent, threshold, options);\n }\n return newDir;\n}\nasync function convertToShard(oldDir, options) {\n const newDir = new DirSharded({\n root: oldDir.root,\n dir: true,\n parent: oldDir.parent,\n parentKey: oldDir.parentKey,\n path: oldDir.path,\n dirty: oldDir.dirty,\n flat: false,\n mtime: oldDir.mtime,\n mode: oldDir.mode\n }, options);\n for await (const { key, child } of oldDir.eachChildSeries()) {\n await newDir.put(key, child);\n }\n return newDir;\n}\n//# sourceMappingURL=flat-to-shard.js.map","export const toPathComponents = (path = '') => {\n // split on / unless escaped with \\\n return path.split(/(? 1)) {\n yield* flushAndYield(tree, block);\n }\n else {\n for await (const unwrapped of tree.eachChildSeries()) {\n if (unwrapped == null) {\n continue;\n }\n yield* flushAndYield(unwrapped.child, block);\n }\n }\n };\n}\n//# sourceMappingURL=tree-builder.js.map","/**\n * @packageDocumentation\n *\n * @example\n *\n * Let's create a little directory to import:\n *\n * ```console\n * > cd /tmp\n * > mkdir foo\n * > echo 'hello' > foo/bar\n * > echo 'world' > foo/quux\n * ```\n *\n * And write the importing logic:\n *\n * ```js\n * import { importer } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core/memory'\n * import * as fs from 'node:fs'\n *\n * // Where the blocks will be stored\n * const blockstore = new MemoryBlockstore()\n *\n * // Import path /tmp/foo/\n * const source = [{\n * path: '/tmp/foo/bar',\n * content: fs.createReadStream('/tmp/foo/bar')\n * }, {\n * path: '/tmp/foo/quxx',\n * content: fs.createReadStream('/tmp/foo/quux')\n * }]\n *\n * for await (const entry of importer(source, blockstore)) {\n * console.info(entry)\n * }\n * ```\n *\n * When run, metadata about DAGNodes in the created tree is printed until the root:\n *\n * ```js\n * {\n * cid: CID, // see https://github.com/multiformats/js-cid\n * path: 'tmp/foo/bar',\n * unixfs: UnixFS // see https://github.com/ipfs/js-ipfs-unixfs\n * }\n * {\n * cid: CID, // see https://github.com/multiformats/js-cid\n * path: 'tmp/foo/quxx',\n * unixfs: UnixFS // see https://github.com/ipfs/js-ipfs-unixfs\n * }\n * {\n * cid: CID, // see https://github.com/multiformats/js-cid\n * path: 'tmp/foo',\n * unixfs: UnixFS // see https://github.com/ipfs/js-ipfs-unixfs\n * }\n * {\n * cid: CID, // see https://github.com/multiformats/js-cid\n * path: 'tmp',\n * unixfs: UnixFS // see https://github.com/ipfs/js-ipfs-unixfs\n * }\n * ```\n */\nimport first from 'it-first';\nimport parallelBatch from 'it-parallel-batch';\nimport { fixedSize } from './chunker/fixed-size.js';\nimport { defaultBufferImporter } from './dag-builder/buffer-importer.js';\nimport { defaultDagBuilder } from './dag-builder/index.js';\nimport { defaultChunkValidator } from './dag-builder/validate-chunks.js';\nimport { InvalidParametersError } from './errors.js';\nimport { balanced } from './layout/index.js';\nimport { defaultTreeBuilder } from './tree-builder.js';\nexport * from './errors.js';\n/**\n * The importer creates UnixFS DAGs and stores the blocks that make\n * them up in the passed blockstore.\n *\n * @example\n *\n * ```typescript\n * import { importer } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = [{\n * path: './foo.txt',\n * content: Uint8Array.from([0, 1, 2, 3, 4])\n * }, {\n * path: './bar.txt',\n * content: Uint8Array.from([0, 1, 2, 3, 4])\n * }]\n *\n * for await (const entry of importer(input, blockstore)) {\n * console.info(entry)\n * // { cid: CID(), ... }\n * }\n * ```\n */\nexport async function* importer(source, blockstore, options = {}) {\n let candidates;\n if (Symbol.asyncIterator in source || Symbol.iterator in source) {\n candidates = source;\n }\n else {\n candidates = [source];\n }\n const wrapWithDirectory = options.wrapWithDirectory ?? false;\n const shardSplitThresholdBytes = options.shardSplitThresholdBytes ?? 262144;\n const shardFanoutBits = options.shardFanoutBits ?? 8;\n const cidVersion = options.cidVersion ?? 1;\n const rawLeaves = options.rawLeaves ?? true;\n const leafType = options.leafType ?? 'file';\n const fileImportConcurrency = options.fileImportConcurrency ?? 50;\n const blockWriteConcurrency = options.blockWriteConcurrency ?? 10;\n const reduceSingleLeafToSelf = options.reduceSingleLeafToSelf ?? true;\n const chunker = options.chunker ?? fixedSize();\n const chunkValidator = options.chunkValidator ?? defaultChunkValidator();\n const buildDag = options.dagBuilder ?? defaultDagBuilder({\n chunker,\n chunkValidator,\n wrapWithDirectory,\n layout: options.layout ?? balanced(),\n bufferImporter: options.bufferImporter ?? defaultBufferImporter({\n cidVersion,\n rawLeaves,\n leafType,\n onProgress: options.onProgress\n }),\n blockWriteConcurrency,\n reduceSingleLeafToSelf,\n cidVersion,\n onProgress: options.onProgress\n });\n const buildTree = options.treeBuilder ?? defaultTreeBuilder({\n wrapWithDirectory,\n shardSplitThresholdBytes,\n shardFanoutBits,\n cidVersion,\n onProgress: options.onProgress\n });\n for await (const entry of buildTree(parallelBatch(buildDag(candidates, blockstore), fileImportConcurrency), blockstore)) {\n yield {\n cid: entry.cid,\n path: entry.path,\n unixfs: entry.unixfs,\n size: entry.size\n };\n }\n}\n/**\n * `importFile` is similar to `importer` except it accepts a single\n * `FileCandidate` and returns a promise of a single `ImportResult`\n * instead of a stream of results.\n *\n * @example\n *\n * ```typescript\n * import { importFile } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input: FileCandidate = {\n * path: './foo.txt',\n * content: Uint8Array.from([0, 1, 2, 3, 4])\n * }\n *\n * const entry = await importFile(input, blockstore)\n * ```\n */\nexport async function importFile(content, blockstore, options = {}) {\n const result = await first(importer([content], blockstore, options));\n if (result == null) {\n throw new InvalidParametersError('Nothing imported');\n }\n return result;\n}\n/**\n * `importDir` is similar to `importer` except it accepts a single\n * `DirectoryCandidate` and returns a promise of a single `ImportResult`\n * instead of a stream of results.\n *\n * @example\n *\n * ```typescript\n * import { importDirectory } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input: DirectoryCandidate = {\n * path: './foo.txt'\n * }\n *\n * const entry = await importDirectory(input, blockstore)\n * ```\n */\nexport async function importDirectory(content, blockstore, options = {}) {\n const result = await first(importer([content], blockstore, options));\n if (result == null) {\n throw new InvalidParametersError('Nothing imported');\n }\n return result;\n}\n/**\n * `importBytes` accepts a single Uint8Array and returns a promise\n * of a single `ImportResult`.\n *\n * @example\n *\n * ```typescript\n * import { importBytes } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = Uint8Array.from([0, 1, 2, 3, 4])\n *\n * const entry = await importBytes(input, blockstore)\n * ```\n */\nexport async function importBytes(buf, blockstore, options = {}) {\n return importFile({\n content: buf\n }, blockstore, options);\n}\n/**\n * `importByteStream` accepts a single stream of Uint8Arrays and\n * returns a promise of a single `ImportResult`.\n *\n * @example\n *\n * ```typescript\n * import { importByteStream } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = [\n * Uint8Array.from([0, 1, 2, 3, 4]),\n * Uint8Array.from([5, 6, 7, 8, 9])\n * ]\n *\n * const entry = await importByteStream(input, blockstore)\n * ```\n */\nexport async function importByteStream(bufs, blockstore, options = {}) {\n return importFile({\n content: bufs\n }, blockstore, options);\n}\n//# sourceMappingURL=index.js.map","import { importBytes, importByteStream, importDirectory, importer, importFile } from 'ipfs-unixfs-importer';\nimport { fixedSize } from 'ipfs-unixfs-importer/chunker';\nimport { balanced } from 'ipfs-unixfs-importer/layout';\n/**\n * Default importer settings match Filecoin\n */\nconst defaultImporterSettings = {\n cidVersion: 1,\n rawLeaves: true,\n layout: balanced({\n maxChildrenPerNode: 1024\n }),\n chunker: fixedSize({\n chunkSize: 1048576\n })\n};\nexport async function* addAll(source, blockstore, options = {}) {\n yield* importer(source, blockstore, {\n ...defaultImporterSettings,\n ...options\n });\n}\nexport async function addBytes(bytes, blockstore, options = {}) {\n const { cid } = await importBytes(bytes, blockstore, {\n ...defaultImporterSettings,\n ...options\n });\n return cid;\n}\nexport async function addByteStream(bytes, blockstore, options = {}) {\n const { cid } = await importByteStream(bytes, blockstore, {\n ...defaultImporterSettings,\n ...options\n });\n return cid;\n}\nexport async function addFile(file, blockstore, options = {}) {\n const { cid } = await importFile(file, blockstore, {\n ...defaultImporterSettings,\n ...options\n });\n return cid;\n}\nexport async function addDirectory(dir, blockstore, options = {}) {\n const { cid } = await importDirectory({\n ...dir,\n path: dir.path ?? '-'\n }, blockstore, {\n ...defaultImporterSettings,\n ...options\n });\n return cid;\n}\n//# sourceMappingURL=add.js.map","/**\n * @packageDocumentation\n *\n * Return the last value from an (async)iterable.\n *\n * @example\n *\n * ```javascript\n * import last from 'it-last'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const res = last(values)\n *\n * console.info(res) // 4\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import last from 'it-last'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const res = await last(values())\n *\n * console.info(res) // 4\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction last(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n let res;\n for await (const entry of source) {\n res = entry;\n }\n return res;\n })();\n }\n let res;\n for (const entry of source) {\n res = entry;\n }\n return res;\n}\nexport default last;\n//# sourceMappingURL=index.js.map","export class BadPathError extends Error {\n static name = 'BadPathError';\n static code = 'ERR_BAD_PATH';\n name = BadPathError.name;\n code = BadPathError.code;\n constructor(message = 'Bad path') {\n super(message);\n }\n}\nexport class NotFoundError extends Error {\n static name = 'NotFoundError';\n static code = 'ERR_NOT_FOUND';\n name = NotFoundError.name;\n code = NotFoundError.code;\n constructor(message = 'Not found') {\n super(message);\n }\n}\nexport class NoResolverError extends Error {\n static name = 'NoResolverError';\n static code = 'ERR_NO_RESOLVER';\n name = NoResolverError.name;\n code = NoResolverError.code;\n constructor(message = 'No resolver') {\n super(message);\n }\n}\nexport class NotUnixFSError extends Error {\n static name = 'NotUnixFSError';\n static code = 'ERR_NOT_UNIXFS';\n name = NotUnixFSError.name;\n code = NotUnixFSError.code;\n constructor(message = 'Not UnixFS') {\n super(message);\n }\n}\nexport class OverReadError extends Error {\n static name = 'OverReadError';\n static code = 'ERR_OVER_READ';\n name = OverReadError.name;\n code = OverReadError.code;\n constructor(message = 'Over read') {\n super(message);\n }\n}\nexport class UnderReadError extends Error {\n static name = 'UnderReadError';\n static code = 'ERR_UNDER_READ';\n name = UnderReadError.name;\n code = UnderReadError.code;\n constructor(message = 'Under read') {\n super(message);\n }\n}\nexport class NoPropError extends Error {\n static name = 'NoPropError';\n static code = 'ERR_NO_PROP';\n name = NoPropError.name;\n code = NoPropError.code;\n constructor(message = 'No Property found') {\n super(message);\n }\n}\nexport class InvalidParametersError extends Error {\n static name = 'InvalidParametersError';\n static code = 'ERR_INVALID_PARAMS';\n name = InvalidParametersError.name;\n code = InvalidParametersError.code;\n constructor(message = 'Invalid parameters') {\n super(message);\n }\n}\n//# sourceMappingURL=errors.js.map","import { Type } from '../token.js'\nimport { encodeCustom } from '../encode.js'\nimport { encodeErrPrefix } from '../common.js'\nimport { asU8A, fromString } from '../byte-utils.js'\n\n/**\n * @typedef {import('../../interface').EncodeOptions} EncodeOptions\n * @typedef {import('../token').Token} Token\n * @typedef {import('../bl').Bl} Bl\n */\n\nclass JSONEncoder extends Array {\n constructor () {\n super()\n /** @type {{type:Type,elements:number}[]} */\n this.inRecursive = []\n }\n\n /**\n * @param {Bl} buf\n */\n prefix (buf) {\n const recurs = this.inRecursive[this.inRecursive.length - 1]\n if (recurs) {\n if (recurs.type === Type.array) {\n recurs.elements++\n if (recurs.elements !== 1) { // >first\n buf.push([44]) // ','\n }\n }\n if (recurs.type === Type.map) {\n recurs.elements++\n if (recurs.elements !== 1) { // >first\n if (recurs.elements % 2 === 1) { // key\n buf.push([44]) // ','\n } else {\n buf.push([58]) // ':'\n }\n }\n }\n }\n }\n\n /**\n * @param {Bl} buf\n * @param {Token} token\n */\n [Type.uint.major] (buf, token) {\n this.prefix(buf)\n const is = String(token.value)\n const isa = []\n for (let i = 0; i < is.length; i++) {\n isa[i] = is.charCodeAt(i)\n }\n buf.push(isa)\n }\n\n /**\n * @param {Bl} buf\n * @param {Token} token\n */\n [Type.negint.major] (buf, token) {\n // @ts-ignore hack\n this[Type.uint.major](buf, token)\n }\n\n /**\n * @param {Bl} _buf\n * @param {Token} _token\n */\n [Type.bytes.major] (_buf, _token) {\n throw new Error(`${encodeErrPrefix} unsupported type: Uint8Array`)\n }\n\n /**\n * @param {Bl} buf\n * @param {Token} token\n */\n [Type.string.major] (buf, token) {\n this.prefix(buf)\n // buf.push(34) // '\"'\n // encodeUtf8(token.value, byts)\n // buf.push(34) // '\"'\n const byts = fromString(JSON.stringify(token.value))\n buf.push(byts.length > 32 ? asU8A(byts) : byts)\n }\n\n /**\n * @param {Bl} buf\n * @param {Token} _token\n */\n [Type.array.major] (buf, _token) {\n this.prefix(buf)\n this.inRecursive.push({ type: Type.array, elements: 0 })\n buf.push([91]) // '['\n }\n\n /**\n * @param {Bl} buf\n * @param {Token} _token\n */\n [Type.map.major] (buf, _token) {\n this.prefix(buf)\n this.inRecursive.push({ type: Type.map, elements: 0 })\n buf.push([123]) // '{'\n }\n\n /**\n * @param {Bl} _buf\n * @param {Token} _token\n */\n [Type.tag.major] (_buf, _token) {}\n\n /**\n * @param {Bl} buf\n * @param {Token} token\n */\n [Type.float.major] (buf, token) {\n if (token.type.name === 'break') {\n const recurs = this.inRecursive.pop()\n if (recurs) {\n if (recurs.type === Type.array) {\n buf.push([93]) // ']'\n } else if (recurs.type === Type.map) {\n buf.push([125]) // '}'\n /* c8 ignore next 3 */\n } else {\n throw new Error('Unexpected recursive type; this should not happen!')\n }\n return\n }\n /* c8 ignore next 2 */\n throw new Error('Unexpected break; this should not happen!')\n }\n if (token.value === undefined) {\n throw new Error(`${encodeErrPrefix} unsupported type: undefined`)\n }\n\n this.prefix(buf)\n if (token.type.name === 'true') {\n buf.push([116, 114, 117, 101]) // 'true'\n return\n } else if (token.type.name === 'false') {\n buf.push([102, 97, 108, 115, 101]) // 'false'\n return\n } else if (token.type.name === 'null') {\n buf.push([110, 117, 108, 108]) // 'null'\n return\n }\n\n // number\n const is = String(token.value)\n const isa = []\n let dp = false\n for (let i = 0; i < is.length; i++) {\n isa[i] = is.charCodeAt(i)\n if (!dp && (isa[i] === 46 || isa[i] === 101 || isa[i] === 69)) { // '[.eE]'\n dp = true\n }\n }\n if (!dp) { // need a decimal point for floats\n isa.push(46) // '.'\n isa.push(48) // '0'\n }\n buf.push(isa)\n }\n}\n\n// The below code is mostly taken and modified from https://github.com/feross/buffer\n// Licensed MIT. Copyright (c) Feross Aboukhadijeh\n// function encodeUtf8 (string, byts) {\n// let codePoint\n// const length = string.length\n// let leadSurrogate = null\n\n// for (let i = 0; i < length; ++i) {\n// codePoint = string.charCodeAt(i)\n\n// // is surrogate component\n// if (codePoint > 0xd7ff && codePoint < 0xe000) {\n// // last char was a lead\n// if (!leadSurrogate) {\n// // no lead yet\n// /* c8 ignore next 9 */\n// if (codePoint > 0xdbff) {\n// // unexpected trail\n// byts.push(0xef, 0xbf, 0xbd)\n// continue\n// } else if (i + 1 === length) {\n// // unpaired lead\n// byts.push(0xef, 0xbf, 0xbd)\n// continue\n// }\n\n// // valid lead\n// leadSurrogate = codePoint\n\n// continue\n// }\n\n// // 2 leads in a row\n// /* c8 ignore next 5 */\n// if (codePoint < 0xdc00) {\n// byts.push(0xef, 0xbf, 0xbd)\n// leadSurrogate = codePoint\n// continue\n// }\n\n// // valid surrogate pair\n// codePoint = (leadSurrogate - 0xd800 << 10 | codePoint - 0xdc00) + 0x10000\n// /* c8 ignore next 4 */\n// } else if (leadSurrogate) {\n// // valid bmp char, but last char was a lead\n// byts.push(0xef, 0xbf, 0xbd)\n// }\n\n// leadSurrogate = null\n\n// // encode utf8\n// if (codePoint < 0x80) {\n// // special JSON escapes\n// switch (codePoint) {\n// case 8: // '\\b'\n// byts.push(92, 98) // '\\\\b'\n// continue\n// case 9: // '\\t'\n// byts.push(92, 116) // '\\\\t'\n// continue\n// case 10: // '\\n'\n// byts.push(92, 110) // '\\\\n'\n// continue\n// case 12: // '\\f'\n// byts.push(92, 102) // '\\\\f'\n// continue\n// case 13: // '\\r'\n// byts.push(92, 114) // '\\\\r'\n// continue\n// case 34: // '\"'\n// byts.push(92, 34) // '\\\\\"'\n// continue\n// case 92: // '\\\\'\n// byts.push(92, 92) // '\\\\\\\\'\n// continue\n// }\n\n// byts.push(codePoint)\n// } else if (codePoint < 0x800) {\n// /* c8 ignore next 1 */\n// byts.push(\n// codePoint >> 0x6 | 0xc0,\n// codePoint & 0x3f | 0x80\n// )\n// } else if (codePoint < 0x10000) {\n// /* c8 ignore next 1 */\n// byts.push(\n// codePoint >> 0xc | 0xe0,\n// codePoint >> 0x6 & 0x3f | 0x80,\n// codePoint & 0x3f | 0x80\n// )\n// /* c8 ignore next 9 */\n// } else if (codePoint < 0x110000) {\n// byts.push(\n// codePoint >> 0x12 | 0xf0,\n// codePoint >> 0xc & 0x3f | 0x80,\n// codePoint >> 0x6 & 0x3f | 0x80,\n// codePoint & 0x3f | 0x80\n// )\n// } else {\n// /* c8 ignore next 2 */\n// throw new Error('Invalid code point')\n// }\n// }\n// }\n\n/**\n * @param {(Token|Token[])[]} e1\n * @param {(Token|Token[])[]} e2\n * @returns {number}\n */\nfunction mapSorter (e1, e2) {\n if (Array.isArray(e1[0]) || Array.isArray(e2[0])) {\n throw new Error(`${encodeErrPrefix} complex map keys are not supported`)\n }\n const keyToken1 = e1[0]\n const keyToken2 = e2[0]\n if (keyToken1.type !== Type.string || keyToken2.type !== Type.string) {\n throw new Error(`${encodeErrPrefix} non-string map keys are not supported`)\n }\n if (keyToken1 < keyToken2) {\n return -1\n }\n if (keyToken1 > keyToken2) {\n return 1\n }\n /* c8 ignore next 1 */\n throw new Error(`${encodeErrPrefix} unexpected duplicate map keys, this is not supported`)\n}\n\nconst defaultEncodeOptions = { addBreakTokens: true, mapSorter }\n\n/**\n * @param {any} data\n * @param {EncodeOptions} [options]\n * @returns {Uint8Array}\n */\nfunction encode (data, options) {\n options = Object.assign({}, defaultEncodeOptions, options)\n return encodeCustom(data, new JSONEncoder(), options)\n}\n\nexport { encode }\n","import { decode as _decode, decodeFirst as _decodeFirst } from '../decode.js'\nimport { Token, Type } from '../token.js'\nimport { decodeCodePointsArray } from '../byte-utils.js'\nimport { decodeErrPrefix } from '../common.js'\n\n/**\n * @typedef {import('../../interface').DecodeOptions} DecodeOptions\n * @typedef {import('../../interface').DecodeTokenizer} DecodeTokenizer\n */\n\n/**\n * @implements {DecodeTokenizer}\n */\nclass Tokenizer {\n /**\n * @param {Uint8Array} data\n * @param {DecodeOptions} options\n */\n constructor (data, options = {}) {\n this._pos = 0\n this.data = data\n this.options = options\n /** @type {string[]} */\n this.modeStack = ['value']\n this.lastToken = ''\n }\n\n pos () {\n return this._pos\n }\n\n /**\n * @returns {boolean}\n */\n done () {\n return this._pos >= this.data.length\n }\n\n /**\n * @returns {number}\n */\n ch () {\n return this.data[this._pos]\n }\n\n /**\n * @returns {string}\n */\n currentMode () {\n return this.modeStack[this.modeStack.length - 1]\n }\n\n skipWhitespace () {\n let c = this.ch()\n // @ts-ignore\n while (c === 32 /* ' ' */ || c === 9 /* '\\t' */ || c === 13 /* '\\r' */ || c === 10 /* '\\n' */) {\n c = this.data[++this._pos]\n }\n }\n\n /**\n * @param {number[]} str\n */\n expect (str) {\n if (this.data.length - this._pos < str.length) {\n throw new Error(`${decodeErrPrefix} unexpected end of input at position ${this._pos}`)\n }\n for (let i = 0; i < str.length; i++) {\n if (this.data[this._pos++] !== str[i]) {\n throw new Error(`${decodeErrPrefix} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...str)}'`)\n }\n }\n }\n\n parseNumber () {\n const startPos = this._pos\n let negative = false\n let float = false\n\n /**\n * @param {number[]} chars\n */\n const swallow = (chars) => {\n while (!this.done()) {\n const ch = this.ch()\n if (chars.includes(ch)) {\n this._pos++\n } else {\n break\n }\n }\n }\n\n // lead\n if (this.ch() === 45) { // '-'\n negative = true\n this._pos++\n }\n if (this.ch() === 48) { // '0'\n this._pos++\n if (this.ch() === 46) { // '.'\n this._pos++\n float = true\n } else {\n return new Token(Type.uint, 0, this._pos - startPos)\n }\n }\n swallow([48, 49, 50, 51, 52, 53, 54, 55, 56, 57]) // DIGIT\n if (negative && this._pos === startPos + 1) {\n throw new Error(`${decodeErrPrefix} unexpected token at position ${this._pos}`)\n }\n if (!this.done() && this.ch() === 46) { // '.'\n if (float) {\n throw new Error(`${decodeErrPrefix} unexpected token at position ${this._pos}`)\n }\n float = true\n this._pos++\n swallow([48, 49, 50, 51, 52, 53, 54, 55, 56, 57]) // DIGIT\n }\n if (!this.done() && (this.ch() === 101 || this.ch() === 69)) { // '[eE]'\n float = true\n this._pos++\n if (!this.done() && (this.ch() === 43 || this.ch() === 45)) { // '+', '-'\n this._pos++\n }\n swallow([48, 49, 50, 51, 52, 53, 54, 55, 56, 57]) // DIGIT\n }\n // @ts-ignore\n const numStr = String.fromCharCode.apply(null, this.data.subarray(startPos, this._pos))\n const num = parseFloat(numStr)\n if (float) {\n return new Token(Type.float, num, this._pos - startPos)\n }\n if (this.options.allowBigInt !== true || Number.isSafeInteger(num)) {\n return new Token(num >= 0 ? Type.uint : Type.negint, num, this._pos - startPos)\n }\n return new Token(num >= 0 ? Type.uint : Type.negint, BigInt(numStr), this._pos - startPos)\n }\n\n /**\n * @returns {Token}\n */\n parseString () {\n /* c8 ignore next 4 */\n if (this.ch() !== 34) { // '\"'\n // this would be a programming error\n throw new Error(`${decodeErrPrefix} unexpected character at position ${this._pos}; this shouldn't happen`)\n }\n this._pos++\n\n // check for simple fast-path, all printable ascii, no escapes\n // >0x10000 elements may fail fn.apply() (http://stackoverflow.com/a/22747272/680742)\n for (let i = this._pos, l = 0; i < this.data.length && l < 0x10000; i++, l++) {\n const ch = this.data[i]\n if (ch === 92 || ch < 32 || ch >= 128) { // '\\', ' ', control-chars or non-trivial\n break\n }\n if (ch === 34) { // '\"'\n // @ts-ignore\n const str = String.fromCharCode.apply(null, this.data.subarray(this._pos, i))\n this._pos = i + 1\n return new Token(Type.string, str, l)\n }\n }\n\n const startPos = this._pos\n const chars = []\n\n const readu4 = () => {\n if (this._pos + 4 >= this.data.length) {\n throw new Error(`${decodeErrPrefix} unexpected end of unicode escape sequence at position ${this._pos}`)\n }\n let u4 = 0\n for (let i = 0; i < 4; i++) {\n let ch = this.ch()\n if (ch >= 48 && ch <= 57) { // '0' && '9'\n ch -= 48\n } else if (ch >= 97 && ch <= 102) { // 'a' && 'f'\n ch = ch - 97 + 10\n } else if (ch >= 65 && ch <= 70) { // 'A' && 'F'\n ch = ch - 65 + 10\n } else {\n throw new Error(`${decodeErrPrefix} unexpected unicode escape character at position ${this._pos}`)\n }\n u4 = u4 * 16 + ch\n this._pos++\n }\n return u4\n }\n\n // mostly taken from feross/buffer and adjusted to fit\n const readUtf8Char = () => {\n const firstByte = this.ch()\n let codePoint = null\n /* c8 ignore next 1 */\n let bytesPerSequence = (firstByte > 0xef) ? 4 : (firstByte > 0xdf) ? 3 : (firstByte > 0xbf) ? 2 : 1\n\n if (this._pos + bytesPerSequence > this.data.length) {\n throw new Error(`${decodeErrPrefix} unexpected unicode sequence at position ${this._pos}`)\n }\n\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n /* c8 ignore next 6 */\n // this case is dealt with by the caller function\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = this.data[this._pos + 1]\n if ((secondByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0x1f) << 0x6 | (secondByte & 0x3f)\n if (tempCodePoint > 0x7f) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = this.data[this._pos + 1]\n thirdByte = this.data[this._pos + 2]\n if ((secondByte & 0xc0) === 0x80 && (thirdByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0xf) << 0xc | (secondByte & 0x3f) << 0x6 | (thirdByte & 0x3f)\n /* c8 ignore next 3 */\n if (tempCodePoint > 0x7ff && (tempCodePoint < 0xd800 || tempCodePoint > 0xdfff)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = this.data[this._pos + 1]\n thirdByte = this.data[this._pos + 2]\n fourthByte = this.data[this._pos + 3]\n if ((secondByte & 0xc0) === 0x80 && (thirdByte & 0xc0) === 0x80 && (fourthByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0xf) << 0x12 | (secondByte & 0x3f) << 0xc | (thirdByte & 0x3f) << 0x6 | (fourthByte & 0x3f)\n if (tempCodePoint > 0xffff && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n\n /* c8 ignore next 5 */\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xfffd\n bytesPerSequence = 1\n } else if (codePoint > 0xffff) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n chars.push(codePoint >>> 10 & 0x3ff | 0xd800)\n codePoint = 0xdc00 | codePoint & 0x3ff\n }\n\n chars.push(codePoint)\n this._pos += bytesPerSequence\n }\n\n // TODO: could take the approach of a quick first scan for special chars like encoding/json/decode.go#unquoteBytes\n // and converting all of the ascii chars from the base array in bulk\n while (!this.done()) {\n const ch = this.ch()\n let ch1\n switch (ch) {\n case 92: // '\\'\n this._pos++\n if (this.done()) {\n throw new Error(`${decodeErrPrefix} unexpected string termination at position ${this._pos}`)\n }\n ch1 = this.ch()\n this._pos++\n switch (ch1) {\n case 34: // '\"'\n case 39: // '\\''\n case 92: // '\\'\n case 47: // '/'\n chars.push(ch1)\n break\n case 98: // 'b'\n chars.push(8)\n break\n case 116: // 't'\n chars.push(9)\n break\n case 110: // 'n'\n chars.push(10)\n break\n case 102: // 'f'\n chars.push(12)\n break\n case 114: // 'r'\n chars.push(13)\n break\n case 117: // 'u'\n chars.push(readu4())\n break\n default:\n throw new Error(`${decodeErrPrefix} unexpected string escape character at position ${this._pos}`)\n }\n break\n case 34: // '\"'\n this._pos++\n return new Token(Type.string, decodeCodePointsArray(chars), this._pos - startPos)\n default:\n if (ch < 32) { // ' '\n throw new Error(`${decodeErrPrefix} invalid control character at position ${this._pos}`)\n } else if (ch < 0x80) {\n chars.push(ch)\n this._pos++\n } else {\n readUtf8Char()\n }\n }\n }\n\n throw new Error(`${decodeErrPrefix} unexpected end of string at position ${this._pos}`)\n }\n\n /**\n * @returns {Token}\n */\n parseValue () {\n switch (this.ch()) {\n case 123: // '{'\n this.modeStack.push('obj-start')\n this._pos++\n return new Token(Type.map, Infinity, 1)\n case 91: // '['\n this.modeStack.push('array-start')\n this._pos++\n return new Token(Type.array, Infinity, 1)\n case 34: { // '\"'\n return this.parseString()\n }\n case 110: // 'n' / null\n this.expect([110, 117, 108, 108]) // 'null'\n return new Token(Type.null, null, 4)\n case 102: // 'f' / // false\n this.expect([102, 97, 108, 115, 101]) // 'false'\n return new Token(Type.false, false, 5)\n case 116: // 't' / // true\n this.expect([116, 114, 117, 101]) // 'true'\n return new Token(Type.true, true, 4)\n case 45: // '-'\n case 48: // '0'\n case 49: // '1'\n case 50: // '2'\n case 51: // '3'\n case 52: // '4'\n case 53: // '5'\n case 54: // '6'\n case 55: // '7'\n case 56: // '8'\n case 57: // '9'\n return this.parseNumber()\n default:\n throw new Error(`${decodeErrPrefix} unexpected character at position ${this._pos}`)\n }\n }\n\n /**\n * @returns {Token}\n */\n next () {\n this.skipWhitespace()\n switch (this.currentMode()) {\n case 'value':\n this.modeStack.pop()\n return this.parseValue()\n case 'array-value': {\n this.modeStack.pop()\n if (this.ch() === 93) { // ']'\n this._pos++\n this.skipWhitespace()\n return new Token(Type.break, undefined, 1)\n }\n if (this.ch() !== 44) { // ','\n throw new Error(`${decodeErrPrefix} unexpected character at position ${this._pos}, was expecting array delimiter but found '${String.fromCharCode(this.ch())}'`)\n }\n this._pos++\n this.modeStack.push('array-value')\n this.skipWhitespace()\n return this.parseValue()\n }\n case 'array-start': {\n this.modeStack.pop()\n if (this.ch() === 93) { // ']'\n this._pos++\n this.skipWhitespace()\n return new Token(Type.break, undefined, 1)\n }\n this.modeStack.push('array-value')\n this.skipWhitespace()\n return this.parseValue()\n }\n // @ts-ignore\n case 'obj-key':\n if (this.ch() === 125) { // '}'\n this.modeStack.pop()\n this._pos++\n this.skipWhitespace()\n return new Token(Type.break, undefined, 1)\n }\n if (this.ch() !== 44) { // ','\n throw new Error(`${decodeErrPrefix} unexpected character at position ${this._pos}, was expecting object delimiter but found '${String.fromCharCode(this.ch())}'`)\n }\n this._pos++\n this.skipWhitespace()\n case 'obj-start': { // eslint-disable-line no-fallthrough\n this.modeStack.pop()\n if (this.ch() === 125) { // '}'\n this._pos++\n this.skipWhitespace()\n return new Token(Type.break, undefined, 1)\n }\n const token = this.parseString()\n this.skipWhitespace()\n if (this.ch() !== 58) { // ':'\n throw new Error(`${decodeErrPrefix} unexpected character at position ${this._pos}, was expecting key/value delimiter ':' but found '${String.fromCharCode(this.ch())}'`)\n }\n this._pos++\n this.modeStack.push('obj-value')\n return token\n }\n case 'obj-value': {\n this.modeStack.pop()\n this.modeStack.push('obj-key')\n this.skipWhitespace()\n return this.parseValue()\n }\n /* c8 ignore next 2 */\n default:\n throw new Error(`${decodeErrPrefix} unexpected parse state at position ${this._pos}; this shouldn't happen`)\n }\n }\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {any}\n */\nfunction decode (data, options) {\n options = Object.assign({ tokenizer: new Tokenizer(data, options) }, options)\n return _decode(data, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {[any, Uint8Array]}\n */\nfunction decodeFirst (data, options) {\n options = Object.assign({ tokenizer: new Tokenizer(data, options) }, options)\n return _decodeFirst(data, options)\n}\n\nexport { decode, decodeFirst, Tokenizer }\n","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","/* eslint max-depth: [\"error\", 7] */\nimport { Token, Type } from 'cborg'\nimport * as cborgJson from 'cborg/json'\nimport { CID } from 'multiformats'\nimport { base64 } from 'multiformats/bases/base64'\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView} ByteView\n */\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView} ArrayBufferView\n */\n/**\n * @template T\n * @typedef {import('multiformats').ToString} ToString\n */\n/**\n * @typedef {import('cborg/interface').DecodeTokenizer} DecodeTokenizer\n */\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} buf\n * @returns {ByteView}\n */\nfunction toByteView (buf) {\n if (buf instanceof ArrayBuffer) {\n return new Uint8Array(buf, 0, buf.byteLength)\n }\n\n return buf\n}\n\n/**\n * cidEncoder will receive all Objects during encode, it needs to filter out\n * anything that's not a CID and return `null` for that so it's encoded as\n * normal. Encoding a CID means replacing it with a `{\"/\":\"}`\n * object as per the DAG-JSON spec.\n *\n * @param {any} obj\n * @returns {Token[]|null}\n */\nfunction cidEncoder (obj) {\n if (obj.asCID !== obj && obj['/'] !== obj.bytes) {\n return null // any other kind of object\n }\n const cid = CID.asCID(obj)\n /* c8 ignore next 4 */\n // very unlikely case, and it'll probably throw a recursion error in cborg\n if (!cid) {\n return null\n }\n const cidString = cid.toString()\n\n return [\n new Token(Type.map, Infinity, 1),\n new Token(Type.string, '/', 1), // key\n new Token(Type.string, cidString, cidString.length), // value\n new Token(Type.break, undefined, 1)\n ]\n}\n\n/**\n * bytesEncoder will receive all Uint8Arrays (and friends) during encode, it\n * needs to replace it with a `{\"/\":{\"bytes\":\"Base64ByteString\"}}` object as\n * per the DAG-JSON spec.\n *\n * @param {Uint8Array} bytes\n * @returns {Token[]|null}\n */\nfunction bytesEncoder (bytes) {\n const bytesString = base64.encode(bytes).slice(1) // no mbase prefix\n return [\n new Token(Type.map, Infinity, 1),\n new Token(Type.string, '/', 1), // key\n new Token(Type.map, Infinity, 1), // value\n new Token(Type.string, 'bytes', 5), // inner key\n new Token(Type.string, bytesString, bytesString.length), // inner value\n new Token(Type.break, undefined, 1),\n new Token(Type.break, undefined, 1)\n ]\n}\n\n/**\n * taBytesEncoder wraps bytesEncoder() but for the more exotic typed arrays so\n * that we access the underlying ArrayBuffer data\n *\n * @param {Int8Array|Uint16Array|Int16Array|Uint32Array|Int32Array|Float32Array|Float64Array|Uint8ClampedArray|BigInt64Array|BigUint64Array} obj\n * @returns {Token[]|null}\n */\nfunction taBytesEncoder (obj) {\n return bytesEncoder(new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength))\n}\n\n/**\n * abBytesEncoder wraps bytesEncoder() but for plain ArrayBuffers\n *\n * @param {ArrayBuffer} ab\n * @returns {Token[]|null}\n */\nfunction abBytesEncoder (ab) {\n return bytesEncoder(new Uint8Array(ab))\n}\n\n// eslint-disable-next-line jsdoc/require-returns-check\n/**\n * Intercept all `undefined` values from an object walk and reject the entire\n * object if we find one.\n *\n * @returns {null}\n */\nfunction undefinedEncoder () {\n throw new Error('`undefined` is not supported by the IPLD Data Model and cannot be encoded')\n}\n\n/**\n * Intercept all `number` values from an object walk and reject the entire\n * object if we find something that doesn't fit the IPLD data model (NaN &\n * Infinity).\n *\n * @param {number} num\n * @returns {null}\n */\nfunction numberEncoder (num) {\n if (Number.isNaN(num)) {\n throw new Error('`NaN` is not supported by the IPLD Data Model and cannot be encoded')\n }\n if (num === Infinity || num === -Infinity) {\n throw new Error('`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded')\n }\n return null // process with standard number encoder\n}\n\nconst encodeOptions = {\n typeEncoders: {\n Object: cidEncoder,\n Buffer: bytesEncoder,\n Uint8Array: bytesEncoder,\n Int8Array: taBytesEncoder,\n Uint16Array: taBytesEncoder,\n Int16Array: taBytesEncoder,\n Uint32Array: taBytesEncoder,\n Int32Array: taBytesEncoder,\n Float32Array: taBytesEncoder,\n Float64Array: taBytesEncoder,\n Uint8ClampedArray: taBytesEncoder,\n BigInt64Array: taBytesEncoder,\n BigUint64Array: taBytesEncoder,\n DataView: taBytesEncoder,\n ArrayBuffer: abBytesEncoder,\n undefined: undefinedEncoder,\n number: numberEncoder\n }\n}\n\n/**\n * @implements {DecodeTokenizer}\n */\nclass DagJsonTokenizer extends cborgJson.Tokenizer {\n /**\n * @param {Uint8Array} data\n * @param {object} [options]\n */\n constructor (data, options) {\n super(data, options)\n /** @type {Token[]} */\n this.tokenBuffer = []\n }\n\n /**\n * @returns {boolean}\n */\n done () {\n return this.tokenBuffer.length === 0 && super.done()\n }\n\n /**\n * @returns {Token}\n */\n _next () {\n if (this.tokenBuffer.length > 0) {\n // @ts-ignore https://github.com/Microsoft/TypeScript/issues/30406\n return this.tokenBuffer.pop()\n }\n return super.next()\n }\n\n /**\n * Implements rules outlined in https://github.com/ipld/specs/pull/356\n *\n * @returns {Token}\n */\n next () {\n const token = this._next()\n\n if (token.type === Type.map) {\n const keyToken = this._next()\n if (keyToken.type === Type.string && keyToken.value === '/') {\n const valueToken = this._next()\n if (valueToken.type === Type.string) { // *must* be a CID\n const breakToken = this._next() // swallow the end-of-map token\n if (breakToken.type !== Type.break) {\n throw new Error('Invalid encoded CID form')\n }\n this.tokenBuffer.push(valueToken) // CID.parse will pick this up after our tag token\n return new Token(Type.tag, 42, 0)\n }\n if (valueToken.type === Type.map) {\n const innerKeyToken = this._next()\n if (innerKeyToken.type === Type.string && innerKeyToken.value === 'bytes') {\n const innerValueToken = this._next()\n if (innerValueToken.type === Type.string) { // *must* be Bytes\n for (let i = 0; i < 2; i++) {\n const breakToken = this._next() // swallow two end-of-map tokens\n if (breakToken.type !== Type.break) {\n throw new Error('Invalid encoded Bytes form')\n }\n }\n const bytes = base64.decode(`m${innerValueToken.value}`)\n return new Token(Type.bytes, bytes, innerValueToken.value.length)\n }\n this.tokenBuffer.push(innerValueToken) // bail\n }\n this.tokenBuffer.push(innerKeyToken) // bail\n }\n this.tokenBuffer.push(valueToken) // bail\n }\n this.tokenBuffer.push(keyToken) // bail\n }\n return token\n }\n}\n\nconst decodeOptions = {\n allowIndefinite: false,\n allowUndefined: false,\n allowNaN: false,\n allowInfinity: false,\n allowBigInt: true, // this will lead to BigInt for ints outside of\n // safe-integer range, which may surprise users\n strict: true,\n useMaps: false,\n rejectDuplicateMapKeys: true,\n /** @type {import('cborg').TagDecoder[]} */\n tags: []\n}\n\n// we're going to get TAG(42)STRING(\"bafy...\") from the tokenizer so we only need\n// to deal with the STRING(\"bafy...\") at this point\ndecodeOptions.tags[42] = CID.parse\n\nexport const name = 'dag-json'\nexport const code = 0x0129\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView}\n */\nexport const encode = (node) => cborgJson.encode(node, encodeOptions)\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} data\n * @returns {T}\n */\nexport const decode = (data) => {\n const buf = toByteView(data)\n // the tokenizer is stateful so we need a single instance of it\n const options = Object.assign(decodeOptions, { tokenizer: new DagJsonTokenizer(buf, decodeOptions) })\n return cborgJson.decode(buf, options)\n}\n\n/**\n * @template T\n * @param {T} node\n * @returns {ToString}\n */\nexport const format = (node) => utf8Decoder.decode(encode(node))\nexport { format as stringify }\nconst utf8Decoder = new TextDecoder()\n\n/**\n * @template T\n * @param {ToString} data\n * @returns {T}\n */\nexport const parse = (data) => decode(utf8Encoder.encode(data))\nconst utf8Encoder = new TextEncoder()\n","import { CID } from 'multiformats/cid';\nimport { NoPropError } from '../errors.js';\nexport function resolveObjectPath(object, block, cid, name, path, toResolve, depth) {\n let subObject = object;\n let subPath = path;\n while (toResolve.length > 0) {\n const prop = toResolve[0];\n if (prop in subObject) {\n // remove the bit of the path we have resolved\n toResolve.shift();\n subPath = `${subPath}/${prop}`;\n const subObjectCid = CID.asCID(subObject[prop]);\n if (subObjectCid != null) {\n return {\n entry: {\n type: 'object',\n name,\n path,\n cid,\n node: block,\n depth,\n size: BigInt(block.length),\n content: async function* () {\n yield object;\n }\n },\n next: {\n cid: subObjectCid,\n name: prop,\n path: subPath,\n toResolve\n }\n };\n }\n subObject = subObject[prop];\n }\n else {\n // cannot resolve further\n throw new NoPropError(`No property named ${prop} found in node ${cid}`);\n }\n }\n return {\n entry: {\n type: 'object',\n name,\n path,\n cid,\n node: block,\n depth,\n size: BigInt(block.length),\n content: async function* () {\n yield object;\n }\n }\n };\n}\n//# sourceMappingURL=resolve-object-path.js.map","import * as dagCbor from '@ipld/dag-cbor';\nimport { resolveObjectPath } from '../utils/resolve-object-path.js';\nconst resolve = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n const block = await blockstore.get(cid, options);\n const object = dagCbor.decode(block);\n return resolveObjectPath(object, block, cid, name, path, toResolve, depth);\n};\nexport default resolve;\n//# sourceMappingURL=dag-cbor.js.map","import * as dagJson from '@ipld/dag-json';\nimport { resolveObjectPath } from '../utils/resolve-object-path.js';\nconst resolve = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n const block = await blockstore.get(cid, options);\n const object = dagJson.decode(block);\n return resolveObjectPath(object, block, cid, name, path, toResolve, depth);\n};\nexport default resolve;\n//# sourceMappingURL=dag-json.js.map","function extractDataFromBlock(block, blockStart, requestedStart, requestedEnd) {\n const blockLength = BigInt(block.length);\n const blockEnd = BigInt(blockStart + blockLength);\n if (requestedStart >= blockEnd || requestedEnd < blockStart) {\n // If we are looking for a byte range that is starts after the start of the block,\n // return an empty block. This can happen when internal nodes contain data\n return new Uint8Array(0);\n }\n if (requestedEnd >= blockStart && requestedEnd < blockEnd) {\n // If the end byte is in the current block, truncate the block to the end byte\n block = block.subarray(0, Number(requestedEnd - blockStart));\n }\n if (requestedStart >= blockStart && requestedStart < blockEnd) {\n // If the start byte is in the current block, skip to the start byte\n block = block.subarray(Number(requestedStart - blockStart));\n }\n return block;\n}\nexport default extractDataFromBlock;\n//# sourceMappingURL=extract-data-from-block.js.map","import { InvalidParametersError } from '../errors.js';\nconst validateOffsetAndLength = (size, offset = 0, length = size) => {\n const fileSize = BigInt(size);\n const start = BigInt(offset ?? 0);\n let end = BigInt(length);\n if (end !== fileSize) {\n end = start + end;\n }\n if (end > fileSize) {\n end = fileSize;\n }\n if (start < 0n) {\n throw new InvalidParametersError('Offset must be greater than or equal to 0');\n }\n if (start > fileSize) {\n throw new InvalidParametersError('Offset must be less than the file size');\n }\n if (end < 0n) {\n throw new InvalidParametersError('Length must be greater than or equal to 0');\n }\n if (end > fileSize) {\n throw new InvalidParametersError('Length must be less than the file size');\n }\n return {\n start,\n end\n };\n};\nexport default validateOffsetAndLength;\n//# sourceMappingURL=validate-offset-and-length.js.map","import * as mh from 'multiformats/hashes/digest';\nimport { CustomProgressEvent } from 'progress-events';\nimport { NotFoundError } from '../errors.js';\nimport extractDataFromBlock from '../utils/extract-data-from-block.js';\nimport validateOffsetAndLength from '../utils/validate-offset-and-length.js';\nconst rawContent = (node) => {\n async function* contentGenerator(options = {}) {\n const { start, end } = validateOffsetAndLength(node.length, options.offset, options.length);\n const buf = extractDataFromBlock(node, 0n, start, end);\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:progress:identity', {\n bytesRead: BigInt(buf.byteLength),\n totalBytes: end - start,\n fileSize: BigInt(node.byteLength)\n }));\n yield buf;\n }\n return contentGenerator;\n};\nconst resolve = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n if (toResolve.length > 0) {\n throw new NotFoundError(`No link named ${path} found in raw node ${cid}`);\n }\n const buf = mh.decode(cid.multihash.bytes);\n return {\n entry: {\n type: 'identity',\n name,\n path,\n cid,\n content: rawContent(buf.digest),\n depth,\n size: BigInt(buf.digest.length),\n node: buf.digest\n }\n };\n};\nexport default resolve;\n//# sourceMappingURL=identity.js.map","import * as json from 'multiformats/codecs/json';\nimport { resolveObjectPath } from '../utils/resolve-object-path.js';\nconst resolve = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n const block = await blockstore.get(cid, options);\n const object = json.decode(block);\n return resolveObjectPath(object, block, cid, name, path, toResolve, depth);\n};\nexport default resolve;\n//# sourceMappingURL=json.js.map","import { CustomProgressEvent } from 'progress-events';\nimport { NotFoundError } from '../errors.js';\nimport extractDataFromBlock from '../utils/extract-data-from-block.js';\nimport validateOffsetAndLength from '../utils/validate-offset-and-length.js';\nconst rawContent = (node) => {\n async function* contentGenerator(options = {}) {\n const { start, end } = validateOffsetAndLength(node.length, options.offset, options.length);\n const buf = extractDataFromBlock(node, 0n, start, end);\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:progress:raw', {\n bytesRead: BigInt(buf.byteLength),\n totalBytes: end - start,\n fileSize: BigInt(node.byteLength)\n }));\n yield buf;\n }\n return contentGenerator;\n};\nconst resolve = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n if (toResolve.length > 0) {\n throw new NotFoundError(`No link named ${path} found in raw node ${cid}`);\n }\n const block = await blockstore.get(cid, options);\n return {\n entry: {\n type: 'raw',\n name,\n path,\n cid,\n content: rawContent(block),\n depth,\n size: BigInt(block.length),\n node: block\n }\n };\n};\nexport default resolve;\n//# sourceMappingURL=raw.js.map","import { decode } from '@ipld/dag-pb';\nimport { murmur3128 } from '@multiformats/murmur3';\nimport { Bucket, createHAMT } from 'hamt-sharding';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { NotUnixFSError } from '../errors.js';\n// FIXME: this is copy/pasted from ipfs-unixfs-importer/src/options.js\nconst hashFn = async function (buf) {\n return (await murmur3128.encode(buf))\n // Murmur3 outputs 128 bit but, accidentally, IPFS Go's\n // implementation only uses the first 64, so we must do the same\n // for parity..\n .slice(0, 8)\n // Invert buffer because that's how Go impl does it\n .reverse();\n};\nconst addLinksToHamtBucket = async (links, bucket, rootBucket) => {\n const padLength = (bucket.tableSize() - 1).toString(16).length;\n await Promise.all(links.map(async (link) => {\n if (link.Name == null) {\n // TODO(@rvagg): what do? this is technically possible\n throw new Error('Unexpected Link without a Name');\n }\n if (link.Name.length === padLength) {\n const pos = parseInt(link.Name, 16);\n bucket._putObjectAt(pos, new Bucket({\n hash: rootBucket._options.hash,\n bits: rootBucket._options.bits\n }, bucket, pos));\n return;\n }\n await rootBucket.put(link.Name.substring(2), true);\n }));\n};\nconst toPrefix = (position, padLength) => {\n return position\n .toString(16)\n .toUpperCase()\n .padStart(padLength, '0')\n .substring(0, padLength);\n};\nconst toBucketPath = (position) => {\n let bucket = position.bucket;\n const path = [];\n while (bucket._parent != null) {\n path.push(bucket);\n bucket = bucket._parent;\n }\n path.push(bucket);\n return path.reverse();\n};\nconst findShardCid = async (node, name, blockstore, context, options) => {\n if (context == null) {\n if (node.Data == null) {\n throw new NotUnixFSError('no data in PBNode');\n }\n let dir;\n try {\n dir = UnixFS.unmarshal(node.Data);\n }\n catch (err) {\n throw new NotUnixFSError(err.message);\n }\n if (dir.type !== 'hamt-sharded-directory') {\n throw new NotUnixFSError('not a HAMT');\n }\n if (dir.fanout == null) {\n throw new NotUnixFSError('missing fanout');\n }\n const rootBucket = createHAMT({\n hashFn,\n bits: Math.log2(Number(dir.fanout))\n });\n context = {\n rootBucket,\n hamtDepth: 1,\n lastBucket: rootBucket\n };\n }\n const padLength = (context.lastBucket.tableSize() - 1).toString(16).length;\n await addLinksToHamtBucket(node.Links, context.lastBucket, context.rootBucket);\n const position = await context.rootBucket._findNewBucketAndPos(name);\n let prefix = toPrefix(position.pos, padLength);\n const bucketPath = toBucketPath(position);\n if (bucketPath.length > context.hamtDepth) {\n context.lastBucket = bucketPath[context.hamtDepth];\n prefix = toPrefix(context.lastBucket._posAtParent, padLength);\n }\n const link = node.Links.find(link => {\n if (link.Name == null) {\n return false;\n }\n const entryPrefix = link.Name.substring(0, padLength);\n const entryName = link.Name.substring(padLength);\n if (entryPrefix !== prefix) {\n // not the entry or subshard we're looking for\n return false;\n }\n if (entryName !== '' && entryName !== name) {\n // not the entry we're looking for\n return false;\n }\n return true;\n });\n if (link == null) {\n return;\n }\n if (link.Name != null && link.Name.substring(padLength) === name) {\n return link.Hash;\n }\n context.hamtDepth++;\n const block = await blockstore.get(link.Hash, options);\n node = decode(block);\n return findShardCid(node, name, blockstore, context, options);\n};\nexport default findShardCid;\n//# sourceMappingURL=find-cid-in-shard.js.map","/**\n * @packageDocumentation\n *\n * Lets you look at the contents of an async iterator and decide what to do\n *\n * @example\n *\n * ```javascript\n * import peekable from 'it-peekable'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const it = peekable(value)\n *\n * const first = it.peek()\n *\n * console.info(first) // 0\n *\n * it.push(first)\n *\n * console.info([...it])\n * // [ 0, 1, 2, 3, 4 ]\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import peekable from 'it-peekable'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const it = peekable(values())\n *\n * const first = await it.peek()\n *\n * console.info(first) // 0\n *\n * it.push(first)\n *\n * console.info(await all(it))\n * // [ 0, 1, 2, 3, 4 ]\n * ```\n */\nfunction peekable(iterable) {\n // @ts-expect-error can't use Symbol.asyncIterator to index iterable since it might be Iterable\n const [iterator, symbol] = iterable[Symbol.asyncIterator] != null\n // @ts-expect-error can't use Symbol.asyncIterator to index iterable since it might be Iterable\n ? [iterable[Symbol.asyncIterator](), Symbol.asyncIterator]\n // @ts-expect-error can't use Symbol.iterator to index iterable since it might be AsyncIterable\n : [iterable[Symbol.iterator](), Symbol.iterator];\n const queue = [];\n // @ts-expect-error can't use symbol to index peekable\n return {\n peek: () => {\n return iterator.next();\n },\n push: (value) => {\n queue.push(value);\n },\n next: () => {\n if (queue.length > 0) {\n return {\n done: false,\n value: queue.shift()\n };\n }\n return iterator.next();\n },\n [symbol]() {\n return this;\n }\n };\n}\nexport default peekable;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Filter values out of an (async)iterable\n *\n * @example\n *\n * ```javascript\n * import all from 'it-all'\n * import filter from 'it-filter'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const fn = (val, index) => val > 2 // Return boolean to keep item\n *\n * const arr = all(filter(values, fn))\n *\n * console.info(arr) // 3, 4\n * ```\n *\n * Async sources and filter functions must be awaited:\n *\n * ```javascript\n * import all from 'it-all'\n * import filter from 'it-filter'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const fn = async val => (val, index) > 2 // Return boolean or promise of boolean to keep item\n *\n * const arr = await all(filter(values, fn))\n *\n * console.info(arr) // 3, 4\n * ```\n */\nimport peek from 'it-peekable';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction filter(source, fn) {\n let index = 0;\n if (isAsyncIterable(source)) {\n return (async function* () {\n for await (const entry of source) {\n if (await fn(entry, index++)) {\n yield entry;\n }\n }\n })();\n }\n // if mapping function returns a promise we have to return an async generator\n const peekable = peek(source);\n const { value, done } = peekable.next();\n if (done === true) {\n return (function* () { }());\n }\n const res = fn(value, index++);\n // @ts-expect-error .then is not present on O\n if (typeof res.then === 'function') {\n return (async function* () {\n if (await res) {\n yield value;\n }\n for await (const entry of peekable) {\n if (await fn(entry, index++)) {\n yield entry;\n }\n }\n })();\n }\n const func = fn;\n return (function* () {\n if (res === true) {\n yield value;\n }\n for (const entry of peekable) {\n if (func(entry, index++)) {\n yield entry;\n }\n }\n })();\n}\nexport default filter;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Convert one value from an (async)iterator into another.\n *\n * @example\n *\n * ```javascript\n * import map from 'it-map'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const result = map(values, (val, index) => val++)\n *\n * console.info(result) // [1, 2, 3, 4, 5]\n * ```\n *\n * Async sources and transforms must be awaited:\n *\n * ```javascript\n * import map from 'it-map'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const result = await map(values(), async (val, index) => val++)\n *\n * console.info(result) // [1, 2, 3, 4, 5]\n * ```\n */\nimport peek from 'it-peekable';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction map(source, func) {\n let index = 0;\n if (isAsyncIterable(source)) {\n return (async function* () {\n for await (const val of source) {\n yield func(val, index++);\n }\n })();\n }\n // if mapping function returns a promise we have to return an async generator\n const peekable = peek(source);\n const { value, done } = peekable.next();\n if (done === true) {\n return (function* () { }());\n }\n const res = func(value, index++);\n // @ts-expect-error .then is not present on O\n if (typeof res.then === 'function') {\n return (async function* () {\n yield await res;\n for await (const val of peekable) {\n yield func(val, index++);\n }\n })();\n }\n const fn = func;\n return (function* () {\n yield res;\n for (const val of peekable) {\n yield fn(val, index++);\n }\n })();\n}\nexport default map;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Takes an (async) iterable that emits promise-returning functions, invokes them in parallel up to the concurrency limit and emits the results as they become available, optionally in the same order as the input\n *\n * @example\n *\n * ```javascript\n * import parallel from 'it-parallel'\n * import all from 'it-all'\n * import delay from 'delay'\n *\n * // This can also be an iterator, async iterator, generator, etc\n * const input = [\n * async () => {\n * console.info('start 1')\n * await delay(500)\n *\n * console.info('end 1')\n * return 1\n * },\n * async () => {\n * console.info('start 2')\n * await delay(200)\n *\n * console.info('end 2')\n * return 2\n * },\n * async () => {\n * console.info('start 3')\n * await delay(100)\n *\n * console.info('end 3')\n * return 3\n * }\n * ]\n *\n * const result = await all(parallel(input, {\n * concurrency: 2\n * }))\n *\n * // output:\n * // start 1\n * // start 2\n * // end 2\n * // start 3\n * // end 3\n * // end 1\n *\n * console.info(result) // [2, 3, 1]\n * ```\n *\n * If order is important, pass `ordered: true` as an option:\n *\n * ```javascript\n * const result = await all(parallel(input, {\n * concurrency: 2,\n * ordered: true\n * }))\n *\n * // output:\n * // start 1\n * // start 2\n * // end 2\n * // start 3\n * // end 3\n * // end 1\n *\n * console.info(result) // [1, 2, 3]\n * ```\n */\nimport defer from 'p-defer';\nconst CustomEvent = globalThis.CustomEvent ?? Event;\n/**\n * Takes an (async) iterator that emits promise-returning functions,\n * invokes them in parallel and emits the results as they become available but\n * in the same order as the input\n */\nexport default async function* parallel(source, options = {}) {\n let concurrency = options.concurrency ?? Infinity;\n if (concurrency < 1) {\n concurrency = Infinity;\n }\n const ordered = options.ordered == null ? false : options.ordered;\n const emitter = new EventTarget();\n const ops = [];\n let slotAvailable = defer();\n let resultAvailable = defer();\n let sourceFinished = false;\n let sourceErr;\n let opErred = false;\n emitter.addEventListener('task-complete', () => {\n resultAvailable.resolve();\n });\n void Promise.resolve().then(async () => {\n try {\n for await (const task of source) {\n if (ops.length === concurrency) {\n slotAvailable = defer();\n await slotAvailable.promise;\n }\n if (opErred) {\n break;\n }\n const op = {\n done: false\n };\n ops.push(op);\n task()\n .then(result => {\n op.done = true;\n op.ok = true;\n op.value = result;\n emitter.dispatchEvent(new CustomEvent('task-complete'));\n }, err => {\n op.done = true;\n op.err = err;\n emitter.dispatchEvent(new CustomEvent('task-complete'));\n });\n }\n sourceFinished = true;\n emitter.dispatchEvent(new CustomEvent('task-complete'));\n }\n catch (err) {\n sourceErr = err;\n emitter.dispatchEvent(new CustomEvent('task-complete'));\n }\n });\n function valuesAvailable() {\n if (ordered) {\n return ops[0]?.done;\n }\n return Boolean(ops.find(op => op.done));\n }\n function* yieldOrderedValues() {\n while ((ops.length > 0) && ops[0].done) {\n const op = ops[0];\n ops.shift();\n if (op.ok) {\n yield op.value;\n }\n else {\n // allow the source to exit\n opErred = true;\n slotAvailable.resolve();\n throw op.err;\n }\n slotAvailable.resolve();\n }\n }\n function* yieldUnOrderedValues() {\n // more values can become available while we wait for `yield`\n // to return control to this function\n while (valuesAvailable()) {\n for (let i = 0; i < ops.length; i++) {\n if (ops[i].done) {\n const op = ops[i];\n ops.splice(i, 1);\n i--;\n if (op.ok) {\n yield op.value;\n }\n else {\n opErred = true;\n slotAvailable.resolve();\n throw op.err;\n }\n slotAvailable.resolve();\n }\n }\n }\n }\n while (true) {\n if (!valuesAvailable()) {\n resultAvailable = defer();\n await resultAvailable.promise;\n }\n if (sourceErr != null) {\n // the source threw an error, propagate it\n throw sourceErr;\n }\n if (ordered) {\n yield* yieldOrderedValues();\n }\n else {\n yield* yieldUnOrderedValues();\n }\n if (sourceFinished && ops.length === 0) {\n // not waiting for any results and no more tasks so we are done\n break;\n }\n }\n}\n//# sourceMappingURL=index.js.map","import filter from 'it-filter';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { CustomProgressEvent } from 'progress-events';\nconst directoryContent = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n async function* yieldDirectoryContent(options = {}) {\n const offset = options.offset ?? 0;\n const length = options.length ?? node.Links.length;\n const links = node.Links.slice(offset, length);\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:walk:directory', {\n cid\n }));\n yield* pipe(links, source => map(source, link => {\n return async () => {\n const linkName = link.Name ?? '';\n const linkPath = `${path}/${linkName}`;\n const result = await resolve(link.Hash, linkName, linkPath, [], depth + 1, blockstore, options);\n return result.entry;\n };\n }), source => parallel(source, {\n ordered: true,\n concurrency: options.blockReadConcurrency\n }), source => filter(source, entry => entry != null));\n }\n return yieldDirectoryContent;\n};\nexport default directoryContent;\n//# sourceMappingURL=directory.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { pushable } from 'it-pushable';\nimport * as raw from 'multiformats/codecs/raw';\nimport PQueue from 'p-queue';\nimport { CustomProgressEvent } from 'progress-events';\nimport { NotUnixFSError, OverReadError, UnderReadError } from '../../../errors.js';\nimport extractDataFromBlock from '../../../utils/extract-data-from-block.js';\nimport validateOffsetAndLength from '../../../utils/validate-offset-and-length.js';\nasync function walkDAG(blockstore, node, queue, streamPosition, start, end, options) {\n // a `raw` node\n if (node instanceof Uint8Array) {\n const buf = extractDataFromBlock(node, streamPosition, start, end);\n queue.push(buf);\n return;\n }\n if (node.Data == null) {\n throw new NotUnixFSError('no data in PBNode');\n }\n let file;\n try {\n file = UnixFS.unmarshal(node.Data);\n }\n catch (err) {\n throw new NotUnixFSError(err.message);\n }\n // might be a unixfs `raw` node or have data on intermediate nodes\n if (file.data != null) {\n const data = file.data;\n const buf = extractDataFromBlock(data, streamPosition, start, end);\n queue.push(buf);\n streamPosition += BigInt(buf.byteLength);\n }\n const childOps = [];\n if (node.Links.length !== file.blockSizes.length) {\n throw new NotUnixFSError('Inconsistent block sizes and dag links');\n }\n for (let i = 0; i < node.Links.length; i++) {\n const childLink = node.Links[i];\n const childStart = streamPosition; // inclusive\n const childEnd = childStart + file.blockSizes[i]; // exclusive\n if ((start >= childStart && start < childEnd) || // child has offset byte\n (end >= childStart && end <= childEnd) || // child has end byte\n (start < childStart && end > childEnd)) { // child is between offset and end bytes\n childOps.push({\n link: childLink,\n blockStart: streamPosition\n });\n }\n streamPosition = childEnd;\n if (streamPosition > end) {\n break;\n }\n }\n await pipe(childOps, (source) => map(source, (op) => {\n return async () => {\n const block = await blockstore.get(op.link.Hash, options);\n return {\n ...op,\n block\n };\n };\n }), (source) => parallel(source, {\n ordered: true,\n concurrency: options.blockReadConcurrency\n }), async (source) => {\n for await (const { link, block, blockStart } of source) {\n let child;\n switch (link.Hash.code) {\n case dagPb.code:\n child = dagPb.decode(block);\n break;\n case raw.code:\n child = block;\n break;\n default:\n queue.end(new NotUnixFSError(`Unsupported codec: ${link.Hash.code}`));\n return;\n }\n // create a queue for this child - we use a queue instead of recursion\n // to avoid overflowing the stack\n const childQueue = new PQueue({\n concurrency: 1\n });\n // if any of the child jobs error, end the read queue with the error\n childQueue.on('error', error => {\n queue.end(error);\n });\n // if the job rejects the 'error' event will be emitted on the child queue\n void childQueue.add(async () => {\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:walk:file', {\n cid: link.Hash\n }));\n await walkDAG(blockstore, child, queue, blockStart, start, end, options);\n });\n // wait for this child to complete before moving on to the next\n await childQueue.onIdle();\n }\n });\n if (streamPosition >= end) {\n queue.end();\n }\n}\nconst fileContent = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n async function* yieldFileContent(options = {}) {\n const fileSize = unixfs.fileSize();\n if (fileSize === undefined) {\n throw new Error('File was a directory');\n }\n const { start, end } = validateOffsetAndLength(fileSize, options.offset, options.length);\n if (end === 0n) {\n return;\n }\n let read = 0n;\n const wanted = end - start;\n const queue = pushable();\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:walk:file', {\n cid\n }));\n void walkDAG(blockstore, node, queue, 0n, start, end, options)\n .catch(err => {\n queue.end(err);\n });\n for await (const buf of queue) {\n if (buf == null) {\n continue;\n }\n read += BigInt(buf.byteLength);\n if (read > wanted) {\n queue.end();\n throw new OverReadError('Read too many bytes - the file size reported by the UnixFS data in the root node may be incorrect');\n }\n if (read === wanted) {\n queue.end();\n }\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:progress:unixfs:file', {\n bytesRead: read,\n totalBytes: wanted,\n fileSize\n }));\n yield buf;\n }\n if (read < wanted) {\n throw new UnderReadError('Traversed entire DAG but did not read enough bytes');\n }\n }\n return yieldFileContent;\n};\nexport default fileContent;\n//# sourceMappingURL=file.js.map","import { decode } from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { CustomProgressEvent } from 'progress-events';\nimport { NotUnixFSError } from '../../../errors.js';\nconst hamtShardedDirectoryContent = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n function yieldHamtDirectoryContent(options = {}) {\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:walk:hamt-sharded-directory', {\n cid\n }));\n return listDirectory(node, path, resolve, depth, blockstore, options);\n }\n return yieldHamtDirectoryContent;\n};\nasync function* listDirectory(node, path, resolve, depth, blockstore, options) {\n const links = node.Links;\n if (node.Data == null) {\n throw new NotUnixFSError('no data in PBNode');\n }\n let dir;\n try {\n dir = UnixFS.unmarshal(node.Data);\n }\n catch (err) {\n throw new NotUnixFSError(err.message);\n }\n if (dir.fanout == null) {\n throw new NotUnixFSError('missing fanout');\n }\n const padLength = (dir.fanout - 1n).toString(16).length;\n const results = pipe(links, source => map(source, link => {\n return async () => {\n const name = link.Name != null ? link.Name.substring(padLength) : null;\n if (name != null && name !== '') {\n const result = await resolve(link.Hash, name, `${path}/${name}`, [], depth + 1, blockstore, options);\n return { entries: result.entry == null ? [] : [result.entry] };\n }\n else {\n // descend into subshard\n const block = await blockstore.get(link.Hash, options);\n node = decode(block);\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:walk:hamt-sharded-directory', {\n cid: link.Hash\n }));\n return { entries: listDirectory(node, path, resolve, depth, blockstore, options) };\n }\n };\n }), source => parallel(source, {\n ordered: true,\n concurrency: options.blockReadConcurrency\n }));\n for await (const { entries } of results) {\n yield* entries;\n }\n}\nexport default hamtShardedDirectoryContent;\n//# sourceMappingURL=hamt-sharded-directory.js.map","import { decode } from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { NotFoundError, NotUnixFSError } from '../../errors.js';\nimport findShardCid from '../../utils/find-cid-in-shard.js';\nimport contentDirectory from './content/directory.js';\nimport contentFile from './content/file.js';\nimport contentHamtShardedDirectory from './content/hamt-sharded-directory.js';\nconst findLinkCid = (node, name) => {\n const link = node.Links.find(link => link.Name === name);\n return link?.Hash;\n};\nconst contentExporters = {\n raw: contentFile,\n file: contentFile,\n directory: contentDirectory,\n 'hamt-sharded-directory': contentHamtShardedDirectory,\n metadata: (cid, node, unixfs, path, resolve, depth, blockstore) => {\n return () => [];\n },\n symlink: (cid, node, unixfs, path, resolve, depth, blockstore) => {\n return () => [];\n }\n};\n// @ts-expect-error types are wrong\nconst unixFsResolver = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n const block = await blockstore.get(cid, options);\n const node = decode(block);\n let unixfs;\n let next;\n if (name == null) {\n name = cid.toString();\n }\n if (node.Data == null) {\n throw new NotUnixFSError('no data in PBNode');\n }\n try {\n unixfs = UnixFS.unmarshal(node.Data);\n }\n catch (err) {\n // non-UnixFS dag-pb node? It could happen.\n throw new NotUnixFSError(err.message);\n }\n if (path == null) {\n path = name;\n }\n if (toResolve.length > 0) {\n let linkCid;\n if (unixfs?.type === 'hamt-sharded-directory') {\n // special case - unixfs v1 hamt shards\n linkCid = await findShardCid(node, toResolve[0], blockstore);\n }\n else {\n linkCid = findLinkCid(node, toResolve[0]);\n }\n if (linkCid == null) {\n throw new NotFoundError('file does not exist');\n }\n // remove the path component we have resolved\n const nextName = toResolve.shift();\n const nextPath = `${path}/${nextName}`;\n next = {\n cid: linkCid,\n toResolve,\n name: nextName ?? '',\n path: nextPath\n };\n }\n const content = contentExporters[unixfs.type](cid, node, unixfs, path, resolve, depth, blockstore);\n if (content == null) {\n throw new NotFoundError('could not find content exporter');\n }\n if (unixfs.isDirectory()) {\n return {\n entry: {\n type: 'directory',\n name,\n path,\n cid,\n content,\n unixfs,\n depth,\n node,\n size: unixfs.fileSize()\n },\n next\n };\n }\n return {\n entry: {\n type: 'file',\n name,\n path,\n cid,\n content,\n unixfs,\n depth,\n node,\n size: unixfs.fileSize()\n },\n next\n };\n};\nexport default unixFsResolver;\n//# sourceMappingURL=index.js.map","import * as dagCbor from '@ipld/dag-cbor';\nimport * as dagJson from '@ipld/dag-json';\nimport * as dagPb from '@ipld/dag-pb';\nimport * as json from 'multiformats/codecs/json';\nimport * as raw from 'multiformats/codecs/raw';\nimport { identity } from 'multiformats/hashes/identity';\nimport { NoResolverError } from '../errors.js';\nimport dagCborResolver from './dag-cbor.js';\nimport dagJsonResolver from './dag-json.js';\nimport identifyResolver from './identity.js';\nimport jsonResolver from './json.js';\nimport rawResolver from './raw.js';\nimport dagPbResolver from './unixfs-v1/index.js';\nconst resolvers = {\n [dagPb.code]: dagPbResolver,\n [raw.code]: rawResolver,\n [dagCbor.code]: dagCborResolver,\n [dagJson.code]: dagJsonResolver,\n [identity.code]: identifyResolver,\n [json.code]: jsonResolver\n};\nconst resolve = async (cid, name, path, toResolve, depth, blockstore, options) => {\n const resolver = resolvers[cid.code];\n if (resolver == null) {\n throw new NoResolverError(`No resolver for code ${cid.code}`);\n }\n return resolver(cid, name, path, toResolve, resolve, depth, blockstore, options);\n};\nexport default resolve;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * The UnixFS Exporter provides a means to read DAGs from a blockstore given a CID.\n *\n * @example\n *\n * ```js\n * // import a file and export it again\n * import { importer } from 'ipfs-unixfs-importer'\n * import { exporter } from 'ipfs-unixfs-exporter'\n * import { MemoryBlockstore } from 'blockstore-core/memory'\n *\n * // Should contain the blocks we are trying to export\n * const blockstore = new MemoryBlockstore()\n * const files = []\n *\n * for await (const file of importer([{\n * path: '/foo/bar.txt',\n * content: new Uint8Array([0, 1, 2, 3])\n * }], blockstore)) {\n * files.push(file)\n * }\n *\n * console.info(files[0].cid) // Qmbaz\n *\n * const entry = await exporter(files[0].cid, blockstore)\n *\n * console.info(entry.cid) // Qmqux\n * console.info(entry.path) // Qmbaz/foo/bar.txt\n * console.info(entry.name) // bar.txt\n * console.info(entry.unixfs.fileSize()) // 4\n *\n * // stream content from unixfs node\n * const size = entry.unixfs.fileSize()\n * const bytes = new Uint8Array(size)\n * let offset = 0\n *\n * for await (const buf of entry.content()) {\n * bytes.set(buf, offset)\n * offset += chunk.length\n * }\n *\n * console.info(bytes) // 0, 1, 2, 3\n * ```\n */\nimport last from 'it-last';\nimport { CID } from 'multiformats/cid';\nimport { BadPathError, NotFoundError } from './errors.js';\nimport resolve from './resolvers/index.js';\nexport * from './errors.js';\nconst toPathComponents = (path = '') => {\n // split on / unless escaped with \\\n return (path\n .trim()\n .match(/([^\\\\^/]|\\\\\\/)+/g) ?? [])\n .filter(Boolean);\n};\nconst cidAndRest = (path) => {\n if (path instanceof Uint8Array) {\n return {\n cid: CID.decode(path),\n toResolve: []\n };\n }\n const cid = CID.asCID(path);\n if (cid != null) {\n return {\n cid,\n toResolve: []\n };\n }\n if (typeof path === 'string') {\n if (path.indexOf('/ipfs/') === 0) {\n path = path.substring(6);\n }\n const output = toPathComponents(path);\n return {\n cid: CID.parse(output[0]),\n toResolve: output.slice(1)\n };\n }\n throw new BadPathError(`Unknown path type ${path}`);\n};\n/**\n * Returns an async iterator that yields entries for all segments in a path\n *\n * @example\n *\n * ```javascript\n * import { walkPath } from 'ipfs-unixfs-exporter'\n *\n * const entries = []\n *\n * for await (const entry of walkPath('Qmfoo/foo/bar/baz.txt', blockstore)) {\n * entries.push(entry)\n * }\n *\n * // entries contains 4x `entry` objects\n * ```\n */\nexport async function* walkPath(path, blockstore, options = {}) {\n let { cid, toResolve } = cidAndRest(path);\n let name = cid.toString();\n let entryPath = name;\n const startingDepth = toResolve.length;\n while (true) {\n const result = await resolve(cid, name, entryPath, toResolve, startingDepth, blockstore, options);\n if (result.entry == null && result.next == null) {\n throw new NotFoundError(`Could not resolve ${path}`);\n }\n if (result.entry != null) {\n yield result.entry;\n }\n if (result.next == null) {\n return;\n }\n // resolve further parts\n toResolve = result.next.toResolve;\n cid = result.next.cid;\n name = result.next.name;\n entryPath = result.next.path;\n }\n}\n/**\n * Uses the given blockstore instance to fetch an IPFS node by a CID or path.\n *\n * Returns a {@link Promise} which resolves to a {@link UnixFSEntry}.\n *\n * @example\n *\n * ```typescript\n * import { exporter } from 'ipfs-unixfs-exporter'\n * import { CID } from 'multiformats/cid'\n *\n * const cid = CID.parse('QmFoo')\n *\n * const entry = await exporter(cid, blockstore, {\n * signal: AbortSignal.timeout(50000)\n * })\n *\n * if (entry.type === 'file') {\n * for await (const chunk of entry.content()) {\n * // chunk is a Uint8Array\n * }\n * }\n * ```\n */\nexport async function exporter(path, blockstore, options = {}) {\n const result = await last(walkPath(path, blockstore, options));\n if (result == null) {\n throw new NotFoundError(`Could not resolve ${path}`);\n }\n return result;\n}\n/**\n * Returns an async iterator that yields all entries beneath a given CID or IPFS\n * path, as well as the containing directory.\n *\n * @example\n *\n * ```typescript\n * import { recursive } from 'ipfs-unixfs-exporter'\n *\n * const entries = []\n *\n * for await (const child of recursive('Qmfoo/foo/bar', blockstore)) {\n * entries.push(entry)\n * }\n *\n * // entries contains all children of the `Qmfoo/foo/bar` directory and it's children\n * ```\n */\nexport async function* recursive(path, blockstore, options = {}) {\n const node = await exporter(path, blockstore, options);\n if (node == null) {\n return;\n }\n yield node;\n if (node.type === 'directory') {\n for await (const child of recurse(node, options)) {\n yield child;\n }\n }\n async function* recurse(node, options) {\n for await (const file of node.content(options)) {\n yield file;\n if (file instanceof Uint8Array) {\n continue;\n }\n if (file.type === 'directory') {\n yield* recurse(file, options);\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","'use strict';\n\nmodule.exports = value => {\n\tif (Object.prototype.toString.call(value) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || prototype === Object.prototype;\n};\n","'use strict';\nconst isOptionObject = require('is-plain-obj');\n\nconst {hasOwnProperty} = Object.prototype;\nconst {propertyIsEnumerable} = Object;\nconst defineProperty = (object, name, value) => Object.defineProperty(object, name, {\n\tvalue,\n\twritable: true,\n\tenumerable: true,\n\tconfigurable: true\n});\n\nconst globalThis = this;\nconst defaultMergeOptions = {\n\tconcatArrays: false,\n\tignoreUndefined: false\n};\n\nconst getEnumerableOwnPropertyKeys = value => {\n\tconst keys = [];\n\n\tfor (const key in value) {\n\t\tif (hasOwnProperty.call(value, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\n\t/* istanbul ignore else */\n\tif (Object.getOwnPropertySymbols) {\n\t\tconst symbols = Object.getOwnPropertySymbols(value);\n\n\t\tfor (const symbol of symbols) {\n\t\t\tif (propertyIsEnumerable.call(value, symbol)) {\n\t\t\t\tkeys.push(symbol);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn keys;\n};\n\nfunction clone(value) {\n\tif (Array.isArray(value)) {\n\t\treturn cloneArray(value);\n\t}\n\n\tif (isOptionObject(value)) {\n\t\treturn cloneOptionObject(value);\n\t}\n\n\treturn value;\n}\n\nfunction cloneArray(array) {\n\tconst result = array.slice(0, 0);\n\n\tgetEnumerableOwnPropertyKeys(array).forEach(key => {\n\t\tdefineProperty(result, key, clone(array[key]));\n\t});\n\n\treturn result;\n}\n\nfunction cloneOptionObject(object) {\n\tconst result = Object.getPrototypeOf(object) === null ? Object.create(null) : {};\n\n\tgetEnumerableOwnPropertyKeys(object).forEach(key => {\n\t\tdefineProperty(result, key, clone(object[key]));\n\t});\n\n\treturn result;\n}\n\n/**\n * @param {*} merged already cloned\n * @param {*} source something to merge\n * @param {string[]} keys keys to merge\n * @param {Object} config Config Object\n * @returns {*} cloned Object\n */\nconst mergeKeys = (merged, source, keys, config) => {\n\tkeys.forEach(key => {\n\t\tif (typeof source[key] === 'undefined' && config.ignoreUndefined) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do not recurse into prototype chain of merged\n\t\tif (key in merged && merged[key] !== Object.getPrototypeOf(merged)) {\n\t\t\tdefineProperty(merged, key, merge(merged[key], source[key], config));\n\t\t} else {\n\t\t\tdefineProperty(merged, key, clone(source[key]));\n\t\t}\n\t});\n\n\treturn merged;\n};\n\n/**\n * @param {*} merged already cloned\n * @param {*} source something to merge\n * @param {Object} config Config Object\n * @returns {*} cloned Object\n *\n * see [Array.prototype.concat ( ...arguments )](http://www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.concat)\n */\nconst concatArrays = (merged, source, config) => {\n\tlet result = merged.slice(0, 0);\n\tlet resultIndex = 0;\n\n\t[merged, source].forEach(array => {\n\t\tconst indices = [];\n\n\t\t// `result.concat(array)` with cloning\n\t\tfor (let k = 0; k < array.length; k++) {\n\t\t\tif (!hasOwnProperty.call(array, k)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tindices.push(String(k));\n\n\t\t\tif (array === merged) {\n\t\t\t\t// Already cloned\n\t\t\t\tdefineProperty(result, resultIndex++, array[k]);\n\t\t\t} else {\n\t\t\t\tdefineProperty(result, resultIndex++, clone(array[k]));\n\t\t\t}\n\t\t}\n\n\t\t// Merge non-index keys\n\t\tresult = mergeKeys(result, array, getEnumerableOwnPropertyKeys(array).filter(key => !indices.includes(key)), config);\n\t});\n\n\treturn result;\n};\n\n/**\n * @param {*} merged already cloned\n * @param {*} source something to merge\n * @param {Object} config Config Object\n * @returns {*} cloned Object\n */\nfunction merge(merged, source, config) {\n\tif (config.concatArrays && Array.isArray(merged) && Array.isArray(source)) {\n\t\treturn concatArrays(merged, source, config);\n\t}\n\n\tif (!isOptionObject(source) || !isOptionObject(merged)) {\n\t\treturn clone(source);\n\t}\n\n\treturn mergeKeys(merged, source, getEnumerableOwnPropertyKeys(source), config);\n}\n\nmodule.exports = function (...options) {\n\tconst config = merge(clone(defaultMergeOptions), (this !== globalThis && this) || {}, defaultMergeOptions);\n\tlet merged = {_: {}};\n\n\tfor (const option of options) {\n\t\tif (option === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!isOptionObject(option)) {\n\t\t\tthrow new TypeError('`' + option + '` is not an Option Object');\n\t\t}\n\n\t\tmerged = merge(merged, {_: option}, config);\n\t}\n\n\treturn merged._;\n};\n","export class UnixFSError extends Error {\n name;\n code;\n constructor(message, name, code) {\n super(message);\n this.name = name;\n this.code = code;\n }\n}\nexport class NotUnixFSError extends UnixFSError {\n constructor(message = 'not a Unixfs node') {\n super(message, 'NotUnixFSError', 'ERR_NOT_UNIXFS');\n }\n}\nexport class InvalidPBNodeError extends UnixFSError {\n constructor(message = 'invalid PBNode') {\n super(message, 'InvalidPBNodeError', 'ERR_INVALID_PBNODE');\n }\n}\nexport class UnknownError extends UnixFSError {\n constructor(message = 'unknown error') {\n super(message, 'InvalidPBNodeError', 'ERR_UNKNOWN_ERROR');\n }\n}\nexport class AlreadyExistsError extends UnixFSError {\n constructor(message = 'path already exists') {\n super(message, 'AlreadyExistsError', 'ERR_ALREADY_EXISTS');\n }\n}\nexport class DoesNotExistError extends UnixFSError {\n constructor(message = 'path does not exist') {\n super(message, 'DoesNotExistError', 'ERR_DOES_NOT_EXIST');\n }\n}\nexport class NoContentError extends UnixFSError {\n constructor(message = 'no content') {\n super(message, 'NoContentError', 'ERR_NO_CONTENT');\n }\n}\nexport class NotAFileError extends UnixFSError {\n constructor(message = 'not a file') {\n super(message, 'NotAFileError', 'ERR_NOT_A_FILE');\n }\n}\nexport class NotADirectoryError extends UnixFSError {\n constructor(message = 'not a directory') {\n super(message, 'NotADirectoryError', 'ERR_NOT_A_DIRECTORY');\n }\n}\nexport class InvalidParametersError extends UnixFSError {\n constructor(message = 'invalid parameters') {\n super(message, 'InvalidParametersError', 'ERR_INVALID_PARAMETERS');\n }\n}\n//# sourceMappingURL=errors.js.map","// Helpers.\nconst s = 1000;\nconst m = s * 60;\nconst h = m * 60;\nconst d = h * 24;\nconst w = d * 7;\nconst y = d * 365.25;\nfunction ms(value, options) {\n try {\n if (typeof value === 'string' && value.length > 0) {\n return parse(value);\n }\n else if (typeof value === 'number' && isFinite(value)) {\n return options?.long ? fmtLong(value) : fmtShort(value);\n }\n throw new Error('Value is not a string or number.');\n }\n catch (error) {\n const message = isError(error)\n ? `${error.message}. value=${JSON.stringify(value)}`\n : 'An unknown error has occured.';\n throw new Error(message);\n }\n}\n/**\n * Parse the given `str` and return milliseconds.\n */\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n throw new Error('Value exceeds the maximum length of 100 characters.');\n }\n const match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);\n if (!match) {\n return NaN;\n }\n const n = parseFloat(match[1]);\n const type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n // This should never occur.\n throw new Error(`The unit ${type} was matched, but no matching case exists.`);\n }\n}\nexport default ms;\n/**\n * Short format for `ms`.\n */\nfunction fmtShort(ms) {\n const msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return `${Math.round(ms / d)}d`;\n }\n if (msAbs >= h) {\n return `${Math.round(ms / h)}h`;\n }\n if (msAbs >= m) {\n return `${Math.round(ms / m)}m`;\n }\n if (msAbs >= s) {\n return `${Math.round(ms / s)}s`;\n }\n return `${ms}ms`;\n}\n/**\n * Long format for `ms`.\n */\nfunction fmtLong(ms) {\n const msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return `${ms} ms`;\n}\n/**\n * Pluralization helper.\n */\nfunction plural(ms, msAbs, n, name) {\n const isPlural = msAbs >= n * 1.5;\n return `${Math.round(ms / n)} ${name}${isPlural ? 's' : ''}`;\n}\n/**\n * A type guard for errors.\n */\nfunction isError(error) {\n return typeof error === 'object' && error !== null && 'message' in error;\n}\n","/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nimport humanize from 'ms';\nexport default function setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = humanize;\n createDebug.destroy = destroy;\n Object.keys(env).forEach(key => {\n // @ts-expect-error cannot use string to index type\n createDebug[key] = env[key];\n });\n /**\n * The currently active debug mode names, and names to skip.\n */\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n *\n * @param {string} namespace - The namespace string for the debug instance to be colored\n * @returns {number | string} An ANSI color code for the given namespace\n */\n function selectColor(namespace) {\n let hash = 0;\n for (let i = 0; i < namespace.length; i++) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n // @ts-expect-error colors is not in the types\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {string} namespace\n * @returns {Function}\n */\n function createDebug(namespace) {\n let prevTime;\n let enableOverride = null;\n let namespacesCache;\n let enabledCache;\n function debug(...args) {\n // Disabled?\n // @ts-expect-error enabled is not in the types\n if (!debug.enabled) {\n return;\n }\n const self = debug;\n // Set `diff` timestamp\n const curr = Number(new Date());\n const ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n }\n // Apply any `formatters` transformations\n let index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return '%';\n }\n index++;\n // @ts-expect-error formatters is not in the types\n const formatter = createDebug.formatters[format];\n if (typeof formatter === 'function') {\n const val = args[index];\n match = formatter.call(self, val);\n // Now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n // Apply env-specific formatting (colors, etc.)\n // @ts-expect-error formatArgs is not in the types\n createDebug.formatArgs.call(self, args);\n // @ts-expect-error log is not in the types\n const logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n debug.namespace = namespace;\n // @ts-expect-error useColors is not in the types\n debug.useColors = createDebug.useColors();\n debug.color = createDebug.selectColor(namespace);\n debug.extend = extend;\n debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n Object.defineProperty(debug, 'enabled', {\n enumerable: true,\n configurable: false,\n get: () => {\n if (enableOverride !== null) {\n return enableOverride;\n }\n // @ts-expect-error namespaces is not in the types\n if (namespacesCache !== createDebug.namespaces) {\n // @ts-expect-error namespaces is not in the types\n namespacesCache = createDebug.namespaces;\n enabledCache = createDebug.enabled(namespace);\n }\n return enabledCache;\n },\n set: v => {\n enableOverride = v;\n }\n });\n // Env-specific initialization logic for debug instances\n // @ts-expect-error init is not in the types\n if (typeof createDebug.init === 'function') {\n // @ts-expect-error init is not in the types\n createDebug.init(debug);\n }\n // @ts-expect-error some properties are added dynamically\n return debug;\n }\n function extend(namespace, delimiter) {\n const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n newDebug.log = this.log;\n return newDebug;\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {string} namespaces\n */\n function enable(namespaces) {\n // @ts-expect-error save is not in the types\n createDebug.save(namespaces);\n // @ts-expect-error namespaces is not in the types\n createDebug.namespaces = namespaces;\n createDebug.names = [];\n createDebug.skips = [];\n let i;\n const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n const len = split.length;\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n }\n else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n }\n /**\n * Disable debug output.\n *\n * @returns {string} namespaces\n */\n function disable() {\n const namespaces = [\n ...createDebug.names.map(toNamespace),\n ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n ].join(',');\n createDebug.enable('');\n return namespaces;\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {string} name\n * @returns {boolean}\n */\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n let i;\n let len;\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Convert regexp to namespace\n */\n function toNamespace(regexp) {\n return regexp.toString()\n .substring(2, regexp.toString().length - 2)\n .replace(/\\.\\*\\?$/, '*');\n }\n /**\n * Coerce `val`.\n */\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack ?? val.message;\n }\n return val;\n }\n /**\n * XXX DO NOT USE. This is a temporary stub function.\n * XXX It WILL be removed in the next major release.\n */\n function destroy() {\n console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n }\n // @ts-expect-error setupFormatters is not in the types\n createDebug.setupFormatters(createDebug.formatters);\n // @ts-expect-error load is not in the types\n createDebug.enable(createDebug.load());\n // @ts-expect-error some properties are added dynamically\n return createDebug;\n}\n//# sourceMappingURL=common.js.map","/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/restrict-plus-operands */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\n/* eslint-env browser */\n/**\n * This is the web browser implementation of `debug()`.\n */\nimport humanize from 'ms';\nimport setup from './common.js';\nconst storage = localstorage();\n/**\n * Colors.\n */\nconst colors = [\n '#0000CC',\n '#0000FF',\n '#0033CC',\n '#0033FF',\n '#0066CC',\n '#0066FF',\n '#0099CC',\n '#0099FF',\n '#00CC00',\n '#00CC33',\n '#00CC66',\n '#00CC99',\n '#00CCCC',\n '#00CCFF',\n '#3300CC',\n '#3300FF',\n '#3333CC',\n '#3333FF',\n '#3366CC',\n '#3366FF',\n '#3399CC',\n '#3399FF',\n '#33CC00',\n '#33CC33',\n '#33CC66',\n '#33CC99',\n '#33CCCC',\n '#33CCFF',\n '#6600CC',\n '#6600FF',\n '#6633CC',\n '#6633FF',\n '#66CC00',\n '#66CC33',\n '#9900CC',\n '#9900FF',\n '#9933CC',\n '#9933FF',\n '#99CC00',\n '#99CC33',\n '#CC0000',\n '#CC0033',\n '#CC0066',\n '#CC0099',\n '#CC00CC',\n '#CC00FF',\n '#CC3300',\n '#CC3333',\n '#CC3366',\n '#CC3399',\n '#CC33CC',\n '#CC33FF',\n '#CC6600',\n '#CC6633',\n '#CC9900',\n '#CC9933',\n '#CCCC00',\n '#CCCC33',\n '#FF0000',\n '#FF0033',\n '#FF0066',\n '#FF0099',\n '#FF00CC',\n '#FF00FF',\n '#FF3300',\n '#FF3333',\n '#FF3366',\n '#FF3399',\n '#FF33CC',\n '#FF33FF',\n '#FF6600',\n '#FF6633',\n '#FF9900',\n '#FF9933',\n '#FFCC00',\n '#FFCC33'\n];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n // @ts-expect-error window.process.type and window.process.__nwjs are not in the types\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n }\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && (navigator.userAgent?.toLowerCase().match(/(edge|trident)\\/(\\d+)/) != null)) {\n return false;\n }\n // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n // @ts-expect-error document.documentElement.style.WebkitAppearance is not in the types\n return (typeof document !== 'undefined' && document.documentElement?.style?.WebkitAppearance) ||\n // Is firebug? http://stackoverflow.com/a/398120/376773\n // @ts-expect-error window.console.firebug and window.console.exception are not in the types\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && (navigator.userAgent?.toLowerCase().match(/firefox\\/(\\d+)/) != null) && parseInt(RegExp.$1, 10) >= 31) ||\n // Double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent?.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n/**\n * Colorize log arguments if enabled.\n */\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') +\n this.namespace +\n (this.useColors ? ' %c' : ' ') +\n args[0] +\n (this.useColors ? '%c ' : ' ') +\n '+' + humanize(this.diff);\n if (!this.useColors) {\n return;\n }\n const c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit');\n // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n let index = 0;\n let lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, (match) => {\n if (match === '%%') {\n return;\n }\n index++;\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n */\nconst log = console.debug ?? console.log ?? (() => { });\n/**\n * Save `namespaces`.\n *\n * @param {string} namespaces\n */\nfunction save(namespaces) {\n try {\n if (namespaces) {\n storage?.setItem('debug', namespaces);\n }\n else {\n storage?.removeItem('debug');\n }\n }\n catch (error) {\n // Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @returns {string} returns the previously persisted debug modes\n */\nfunction load() {\n let r;\n try {\n r = storage?.getItem('debug');\n }\n catch (error) {\n // Swallow\n // XXX (@Qix-) should we be logging these?\n }\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n */\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n }\n catch (error) {\n // Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\nfunction setupFormatters(formatters) {\n /**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n formatters.j = function (v) {\n try {\n return JSON.stringify(v);\n }\n catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n };\n}\nexport default setup({ formatArgs, save, load, useColors, setupFormatters, colors, storage, log });\n//# sourceMappingURL=browser.js.map","/**\n * @packageDocumentation\n *\n * A logger for libp2p based on the venerable [debug](https://www.npmjs.com/package/debug) module.\n *\n * @example\n *\n * ```TypeScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('libp2p:my:component:name')\n *\n * try {\n * // an operation\n * log('something happened: %s', 'it was ok')\n * } catch (err) {\n * log.error('something bad happened: %o', err)\n * }\n *\n * log('with this peer: %p', {})\n * log('and this base58btc: %b', Uint8Array.from([0, 1, 2, 3]))\n * log('and this base32: %t', Uint8Array.from([4, 5, 6, 7]))\n * ```\n *\n * ```console\n * $ DEBUG=libp2p:* node index.js\n * something happened: it was ok\n * something bad happened: \n * with this peer: 12D3Foo\n * with this base58btc: Qmfoo\n * with this base32: bafyfoo\n * ```\n */\nimport { base32 } from 'multiformats/bases/base32';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { base64 } from 'multiformats/bases/base64';\nimport debug from 'weald';\nimport { truncatePeerId } from './utils.js';\n// Add a formatter for converting to a base58 string\ndebug.formatters.b = (v) => {\n return v == null ? 'undefined' : base58btc.baseEncode(v);\n};\n// Add a formatter for converting to a base32 string\ndebug.formatters.t = (v) => {\n return v == null ? 'undefined' : base32.baseEncode(v);\n};\n// Add a formatter for converting to a base64 string\ndebug.formatters.m = (v) => {\n return v == null ? 'undefined' : base64.baseEncode(v);\n};\n// Add a formatter for stringifying peer ids\ndebug.formatters.p = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying CIDs\ndebug.formatters.c = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Datastore keys\ndebug.formatters.k = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Multiaddrs\ndebug.formatters.a = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\nfunction createDisabledLogger(namespace) {\n const logger = () => { };\n logger.enabled = false;\n logger.color = '';\n logger.diff = 0;\n logger.log = () => { };\n logger.namespace = namespace;\n logger.destroy = () => true;\n logger.extend = () => logger;\n return logger;\n}\n/**\n * Create a component logger that will prefix any log messages with a truncated\n * peer id.\n *\n * @example\n *\n * ```TypeScript\n * import { peerLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const peerId = peerIdFromString('12D3FooBar')\n * const logger = peerLogger(peerId)\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"12…oBar:my-component hello world\"\n * ```\n */\nexport function peerLogger(peerId, options = {}) {\n return prefixLogger(truncatePeerId(peerId, options));\n}\n/**\n * Create a component logger that will prefix any log messages with the passed\n * string.\n *\n * @example\n *\n * ```TypeScript\n * import { prefixLogger } from '@libp2p/logger'\n *\n * const logger = prefixLogger('my-node')\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-node:my-component hello world\"\n * ```\n */\nexport function prefixLogger(prefix) {\n return {\n forComponent(name) {\n return logger(`${prefix}:${name}`);\n }\n };\n}\n/**\n * Create a component logger\n *\n * @example\n *\n * ```TypeScript\n * import { defaultLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const logger = defaultLogger()\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function defaultLogger() {\n return {\n forComponent(name) {\n return logger(name);\n }\n };\n}\n/**\n * Creates a logger for the passed component name.\n *\n * @example\n *\n * ```TypeScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function logger(name) {\n // trace logging is a no-op by default\n let trace = createDisabledLogger(`${name}:trace`);\n // look at all the debug names and see if trace logging has explicitly been enabled\n if (debug.enabled(`${name}:trace`) && debug.names.map((r) => r.toString()).find((n) => n.includes(':trace')) != null) {\n trace = debug(`${name}:trace`);\n }\n return Object.assign(debug(name), {\n error: debug(`${name}:error`),\n trace\n });\n}\nexport function disable() {\n debug.disable();\n}\nexport function enable(namespaces) {\n debug.enable(namespaces);\n}\nexport function enabled(namespaces) {\n return debug.enabled(namespaces);\n}\n//# sourceMappingURL=index.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","import { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nexport function wrapHash(hashFn) {\n function hashing(value) {\n if (value instanceof InfiniteHash) {\n // already a hash. return it\n return value;\n }\n else {\n return new InfiniteHash(value, hashFn);\n }\n }\n return hashing;\n}\nexport class InfiniteHash {\n _value;\n _hashFn;\n _depth;\n _availableBits;\n _currentBufferIndex;\n _buffers;\n constructor(value, hashFn) {\n if (!(value instanceof Uint8Array)) {\n throw new Error('can only hash Uint8Arrays');\n }\n this._value = value;\n this._hashFn = hashFn;\n this._depth = -1;\n this._availableBits = 0;\n this._currentBufferIndex = 0;\n this._buffers = [];\n }\n async take(bits) {\n let pendingBits = bits;\n while (this._availableBits < pendingBits) {\n await this._produceMoreBits();\n }\n let result = 0;\n while (pendingBits > 0) {\n const hash = this._buffers[this._currentBufferIndex];\n const available = Math.min(hash.availableBits(), pendingBits);\n const took = hash.take(available);\n result = (result << available) + took;\n pendingBits -= available;\n this._availableBits -= available;\n if (hash.availableBits() === 0) {\n this._currentBufferIndex++;\n }\n }\n return result;\n }\n untake(bits) {\n let pendingBits = bits;\n while (pendingBits > 0) {\n const hash = this._buffers[this._currentBufferIndex];\n const availableForUntake = Math.min(hash.totalBits() - hash.availableBits(), pendingBits);\n hash.untake(availableForUntake);\n pendingBits -= availableForUntake;\n this._availableBits += availableForUntake;\n if (this._currentBufferIndex > 0 && hash.totalBits() === hash.availableBits()) {\n this._depth--;\n this._currentBufferIndex--;\n }\n }\n }\n async _produceMoreBits() {\n this._depth++;\n const value = this._depth > 0 ? uint8ArrayConcat([this._value, Uint8Array.from([this._depth])]) : this._value;\n const hashValue = await this._hashFn(value);\n const buffer = new ConsumableBuffer(hashValue);\n this._buffers.push(buffer);\n this._availableBits += buffer.availableBits();\n }\n}\nconst START_MASKS = [\n 0b11111111,\n 0b11111110,\n 0b11111100,\n 0b11111000,\n 0b11110000,\n 0b11100000,\n 0b11000000,\n 0b10000000\n];\nconst STOP_MASKS = [\n 0b00000001,\n 0b00000011,\n 0b00000111,\n 0b00001111,\n 0b00011111,\n 0b00111111,\n 0b01111111,\n 0b11111111\n];\nexport class ConsumableBuffer {\n _value;\n _currentBytePos;\n _currentBitPos;\n constructor(value) {\n this._value = value;\n this._currentBytePos = value.length - 1;\n this._currentBitPos = 7;\n }\n availableBits() {\n return this._currentBitPos + 1 + this._currentBytePos * 8;\n }\n totalBits() {\n return this._value.length * 8;\n }\n take(bits) {\n let pendingBits = bits;\n let result = 0;\n while (pendingBits > 0 && this._haveBits()) {\n const byte = this._value[this._currentBytePos];\n const availableBits = this._currentBitPos + 1;\n const taking = Math.min(availableBits, pendingBits);\n const value = byteBitsToInt(byte, availableBits - taking, taking);\n result = (result << taking) + value;\n pendingBits -= taking;\n this._currentBitPos -= taking;\n if (this._currentBitPos < 0) {\n this._currentBitPos = 7;\n this._currentBytePos--;\n }\n }\n return result;\n }\n untake(bits) {\n this._currentBitPos += bits;\n while (this._currentBitPos > 7) {\n this._currentBitPos -= 8;\n this._currentBytePos += 1;\n }\n }\n _haveBits() {\n return this._currentBytePos >= 0;\n }\n}\nfunction byteBitsToInt(byte, start, length) {\n const mask = maskFor(start, length);\n return (byte & mask) >>> start;\n}\nfunction maskFor(start, length) {\n return START_MASKS[start] & STOP_MASKS[Math.min(length + start - 1, 7)];\n}\n//# sourceMappingURL=consumable-hash.js.map","import { murmur3128 } from '@multiformats/murmur3';\nexport const hamtHashCode = BigInt(murmur3128.code);\nexport const hamtBucketBits = 8;\nexport async function hamtHashFn(buf) {\n return (await murmur3128.encode(buf))\n // Murmur3 outputs 128 bit but, accidentally, IPFS Go's\n // implementation only uses the first 64, so we must do the same\n // for parity..\n .subarray(0, 8)\n // Invert buffer because that's how Go impl does it\n .reverse();\n}\n//# sourceMappingURL=hamt-constants.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\nexport const persist = async (buffer, blockstore, options) => {\n if (options.codec == null) {\n options.codec = dagPb;\n }\n const multihash = await sha256.digest(buffer);\n const cid = CID.create(options.cidVersion, options.codec.code, multihash);\n await blockstore.put(cid, buffer, {\n ...options,\n signal: options.signal\n });\n return cid;\n};\n//# sourceMappingURL=persist.js.map","import { encode, prepare } from '@ipld/dag-pb';\nimport { createHAMT, Bucket } from 'hamt-sharding';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { CID } from 'multiformats/cid';\nimport { hamtHashCode, hamtHashFn } from './hamt-constants.js';\nimport { persist } from './persist.js';\nclass Dir {\n options;\n root;\n dir;\n path;\n dirty;\n flat;\n parent;\n parentKey;\n unixfs;\n mode;\n mtime;\n cid;\n size;\n nodeSize;\n constructor(props, options) {\n this.options = options ?? {};\n this.root = props.root;\n this.dir = props.dir;\n this.path = props.path;\n this.dirty = props.dirty;\n this.flat = props.flat;\n this.parent = props.parent;\n this.parentKey = props.parentKey;\n this.unixfs = props.unixfs;\n this.mode = props.mode;\n this.mtime = props.mtime;\n }\n}\nexport class DirSharded extends Dir {\n _bucket;\n constructor(props, options) {\n super(props, options);\n this._bucket = createHAMT({\n hashFn: hamtHashFn,\n bits: 8\n });\n }\n async put(name, value) {\n this.cid = undefined;\n this.size = undefined;\n this.nodeSize = undefined;\n await this._bucket.put(name, value);\n }\n async get(name) {\n return this._bucket.get(name);\n }\n childCount() {\n return this._bucket.leafCount();\n }\n directChildrenCount() {\n return this._bucket.childrenCount();\n }\n onlyChild() {\n return this._bucket.onlyChild();\n }\n async *eachChildSeries() {\n for await (const { key, value } of this._bucket.eachLeafSeries()) {\n yield {\n key,\n child: value\n };\n }\n }\n estimateNodeSize() {\n if (this.nodeSize !== undefined) {\n return this.nodeSize;\n }\n this.nodeSize = calculateSize(this._bucket, this, this.options);\n return this.nodeSize;\n }\n async *flush(blockstore) {\n for await (const entry of flush(this._bucket, blockstore, this, this.options)) {\n yield {\n ...entry,\n path: this.path\n };\n }\n }\n}\nasync function* flush(bucket, blockstore, shardRoot, options) {\n const children = bucket._children;\n const links = [];\n let childrenSize = 0n;\n for (let i = 0; i < children.length; i++) {\n const child = children.get(i);\n if (child == null) {\n continue;\n }\n const labelPrefix = i.toString(16).toUpperCase().padStart(2, '0');\n if (child instanceof Bucket) {\n let shard;\n for await (const subShard of flush(child, blockstore, null, options)) {\n shard = subShard;\n }\n if (shard == null) {\n throw new Error('Could not flush sharded directory, no subshard found');\n }\n links.push({\n Name: labelPrefix,\n Tsize: Number(shard.size),\n Hash: shard.cid\n });\n childrenSize += shard.size;\n }\n else if (isDir(child.value)) {\n const dir = child.value;\n let flushedDir;\n for await (const entry of dir.flush(blockstore)) {\n flushedDir = entry;\n yield flushedDir;\n }\n if (flushedDir == null) {\n throw new Error('Did not flush dir');\n }\n const label = labelPrefix + child.key;\n links.push({\n Name: label,\n Tsize: Number(flushedDir.size),\n Hash: flushedDir.cid\n });\n childrenSize += flushedDir.size;\n }\n else {\n const value = child.value;\n if (value.cid == null) {\n continue;\n }\n const label = labelPrefix + child.key;\n const size = value.size;\n links.push({\n Name: label,\n Tsize: Number(size),\n Hash: value.cid\n });\n childrenSize += BigInt(size ?? 0);\n }\n }\n // go-ipfs uses little endian, that's why we have to\n // reverse the bit field before storing it\n const data = Uint8Array.from(children.bitField().reverse());\n const dir = new UnixFS({\n type: 'hamt-sharded-directory',\n data,\n fanout: BigInt(bucket.tableSize()),\n hashType: hamtHashCode,\n mtime: shardRoot?.mtime,\n mode: shardRoot?.mode\n });\n const node = {\n Data: dir.marshal(),\n Links: links\n };\n const buffer = encode(prepare(node));\n const cid = await persist(buffer, blockstore, options);\n const size = BigInt(buffer.byteLength) + childrenSize;\n yield {\n cid,\n unixfs: dir,\n size\n };\n}\nfunction isDir(obj) {\n return typeof obj.flush === 'function';\n}\nfunction calculateSize(bucket, shardRoot, options) {\n const children = bucket._children;\n const links = [];\n for (let i = 0; i < children.length; i++) {\n const child = children.get(i);\n if (child == null) {\n continue;\n }\n const labelPrefix = i.toString(16).toUpperCase().padStart(2, '0');\n if (child instanceof Bucket) {\n const size = calculateSize(child, null, options);\n links.push({\n Name: labelPrefix,\n Tsize: Number(size),\n Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n });\n }\n else if (typeof child.value.flush === 'function') {\n const dir = child.value;\n const size = dir.nodeSize();\n links.push({\n Name: labelPrefix + child.key,\n Tsize: Number(size),\n Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n });\n }\n else {\n const value = child.value;\n if (value.cid == null) {\n continue;\n }\n const label = labelPrefix + child.key;\n const size = value.size;\n links.push({\n Name: label,\n Tsize: Number(size),\n Hash: value.cid\n });\n }\n }\n // go-ipfs uses little endian, that's why we have to\n // reverse the bit field before storing it\n const data = Uint8Array.from(children.bitField().reverse());\n const dir = new UnixFS({\n type: 'hamt-sharded-directory',\n data,\n fanout: BigInt(bucket.tableSize()),\n hashType: hamtHashCode,\n mtime: shardRoot?.mtime,\n mode: shardRoot?.mode\n });\n const buffer = encode(prepare({\n Data: dir.marshal(),\n Links: links\n }));\n return buffer.length;\n}\n// we use these to calculate the node size to use as a check for whether a directory\n// should be sharded or not. Since CIDs have a constant length and We're only\n// interested in the data length and not the actual content identifier we can use\n// any old CID instead of having to hash the data which is expensive.\nexport const CID_V0 = CID.parse('QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn');\nexport const CID_V1 = CID.parse('zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi');\n//# sourceMappingURL=dir-sharded.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport last from 'it-last';\n// @ts-expect-error no types\nimport SparseArray from 'sparse-array';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { wrapHash } from './consumable-hash.js';\nimport { DirSharded } from './dir-sharded.js';\nimport { hamtHashCode, hamtHashFn, hamtBucketBits } from './hamt-constants.js';\nimport { persist } from './persist.js';\nconst log = logger('helia:unixfs:commands:utils:hamt-utils');\nexport const toPrefix = (position) => {\n return position\n .toString(16)\n .toUpperCase()\n .padStart(2, '0')\n .substring(0, 2);\n};\nexport const createShard = async (blockstore, contents, options) => {\n const shard = new DirSharded({\n root: true,\n dir: true,\n parent: undefined,\n parentKey: undefined,\n path: '',\n dirty: true,\n flat: false,\n mtime: options.mtime,\n mode: options.mode\n }, options);\n for (let i = 0; i < contents.length; i++) {\n await shard._bucket.put(contents[i].name, {\n size: contents[i].size,\n cid: contents[i].cid\n });\n }\n const res = await last(shard.flush(blockstore));\n if (res == null) {\n throw new Error('Flushing shard yielded no result');\n }\n return res;\n};\nexport const updateShardedDirectory = async (path, blockstore, options) => {\n // persist any metadata on the shard root\n const shardRoot = UnixFS.unmarshal(path[0].node.Data ?? new Uint8Array(0));\n // this is always the same\n const fanout = BigInt(Math.pow(2, hamtBucketBits));\n // start from the leaf and ascend to the root\n path.reverse();\n let cid;\n let node;\n for (let i = 0; i < path.length; i++) {\n const isRoot = i === path.length - 1;\n const segment = path[i];\n // go-ipfs uses little endian, that's why we have to\n // reverse the bit field before storing it\n const data = Uint8Array.from(segment.children.bitField().reverse());\n const dir = new UnixFS({\n type: 'hamt-sharded-directory',\n data,\n fanout,\n hashType: hamtHashCode\n });\n if (isRoot) {\n dir.mtime = shardRoot.mtime;\n dir.mode = shardRoot.mode;\n }\n node = {\n Data: dir.marshal(),\n Links: segment.node.Links\n };\n const block = dagPB.encode(dagPB.prepare(node));\n cid = await persist(block, blockstore, options);\n if (!isRoot) {\n // update link in parent sub-shard\n const nextSegment = path[i + 1];\n if (nextSegment == null) {\n throw new Error('Was not operating on shard root but also had no parent?');\n }\n log('updating link in parent sub-shard with prefix %s', nextSegment.prefix);\n nextSegment.node.Links = nextSegment.node.Links.filter(l => l.Name !== nextSegment.prefix);\n nextSegment.node.Links.push({\n Name: nextSegment.prefix,\n Hash: cid,\n Tsize: segment.node.Links.reduce((acc, curr) => acc + (curr.Tsize ?? 0), block.byteLength)\n });\n }\n }\n if (cid == null || node == null) {\n throw new Error('Noting persisted');\n }\n return { cid, node };\n};\nexport const recreateShardedDirectory = async (cid, fileName, blockstore, options) => {\n const wrapped = wrapHash(hamtHashFn);\n const hash = wrapped(uint8ArrayFromString(fileName));\n const path = [];\n // descend the HAMT, loading each layer as we head towards the target child\n while (true) {\n const block = await blockstore.get(cid, options);\n const node = dagPB.decode(block);\n const children = new SparseArray();\n const index = await hash.take(hamtBucketBits);\n const prefix = toPrefix(index);\n path.push({\n prefix,\n children,\n node\n });\n let childLink;\n // update sparsearray child layout - the bitfield is used as the data field for the\n // intermediate DAG node so this is required to generate consistent hashes\n for (const link of node.Links) {\n const linkName = link.Name ?? '';\n if (linkName.length < 2) {\n throw new Error('Invalid HAMT - link name was too short');\n }\n const position = parseInt(linkName.substring(0, 2), 16);\n children.set(position, true);\n // we found the child we are looking for\n if (linkName.startsWith(prefix)) {\n childLink = link;\n }\n }\n if (childLink == null) {\n log('no link found with prefix %s for %s', prefix, fileName);\n // hash.untake(hamtBucketBits)\n break;\n }\n const linkName = childLink.Name ?? '';\n if (linkName.length < 2) {\n throw new Error('Invalid HAMT - link name was too short');\n }\n if (linkName.length === 2) {\n // found sub-shard\n cid = childLink.Hash;\n log('descend into sub-shard with prefix %s', linkName);\n continue;\n }\n break;\n }\n return { path, hash };\n};\n//# sourceMappingURL=hamt-utils.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { CID_V0, CID_V1 } from './dir-sharded.js';\n/**\n * Estimate node size only based on DAGLink name and CID byte lengths\n * https://github.com/ipfs/go-unixfsnode/blob/37b47f1f917f1b2f54c207682f38886e49896ef9/data/builder/directory.go#L81-L96\n *\n * If the node is a hamt sharded directory the calculation is based on if it was a regular directory.\n */\nexport async function isOverShardThreshold(node, blockstore, threshold, options) {\n if (node.Data == null) {\n throw new Error('DagPB node had no data');\n }\n const unixfs = UnixFS.unmarshal(node.Data);\n let size;\n if (unixfs.type === 'directory') {\n size = estimateNodeSize(node);\n }\n else if (unixfs.type === 'hamt-sharded-directory') {\n size = await estimateShardSize(node, 0, threshold, blockstore, options);\n }\n else {\n throw new Error('Can only estimate the size of directories or shards');\n }\n return size > threshold;\n}\nfunction estimateNodeSize(node) {\n let size = 0;\n // estimate size only based on DAGLink name and CID byte lengths\n // https://github.com/ipfs/go-unixfsnode/blob/37b47f1f917f1b2f54c207682f38886e49896ef9/data/builder/directory.go#L81-L96\n for (const link of node.Links) {\n size += (link.Name ?? '').length;\n size += link.Hash.version === 1 ? CID_V1.bytes.byteLength : CID_V0.bytes.byteLength;\n }\n return size;\n}\nasync function estimateShardSize(node, current, max, blockstore, options) {\n if (current > max) {\n return max;\n }\n if (node.Data == null) {\n return current;\n }\n const unixfs = UnixFS.unmarshal(node.Data);\n if (!unixfs.isDirectory()) {\n return current;\n }\n for (const link of node.Links) {\n let name = link.Name ?? '';\n // remove hamt hash prefix from name\n name = name.substring(2);\n current += name.length;\n current += link.Hash.bytes.byteLength;\n if (link.Hash.code === dagPb.code) {\n const block = await blockstore.get(link.Hash, options);\n const node = dagPb.decode(block);\n current += await estimateShardSize(node, current, max, blockstore, options);\n }\n }\n return current;\n}\n//# sourceMappingURL=is-over-shard-threshold.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\n// @ts-expect-error no types\nimport SparseArray from 'sparse-array';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { AlreadyExistsError, InvalidParametersError, InvalidPBNodeError } from '../../errors.js';\nimport { wrapHash } from './consumable-hash.js';\nimport { hamtBucketBits, hamtHashFn } from './hamt-constants.js';\nimport { createShard, recreateShardedDirectory, toPrefix, updateShardedDirectory } from './hamt-utils.js';\nimport { isOverShardThreshold } from './is-over-shard-threshold.js';\nconst log = logger('helia:unixfs:components:utils:add-link');\nexport async function addLink(parent, child, blockstore, options) {\n if (parent.node.Data == null) {\n throw new InvalidParametersError('Invalid parent passed to addLink');\n }\n const meta = UnixFS.unmarshal(parent.node.Data);\n if (meta.type === 'hamt-sharded-directory') {\n log('adding link to sharded directory');\n return addToShardedDirectory(parent, child, blockstore, options);\n }\n log(`adding ${child.Name} (${child.Hash}) to regular directory`);\n const result = await addToDirectory(parent, child, blockstore, options);\n if (await isOverShardThreshold(result.node, blockstore, options.shardSplitThresholdBytes, options)) {\n log('converting directory to sharded directory');\n const converted = await convertToShardedDirectory(result, blockstore);\n result.cid = converted.cid;\n result.node = dagPB.decode(await blockstore.get(converted.cid, options));\n }\n return result;\n}\nconst convertToShardedDirectory = async (parent, blockstore) => {\n if (parent.node.Data == null) {\n throw new InvalidParametersError('Invalid parent passed to convertToShardedDirectory');\n }\n const unixfs = UnixFS.unmarshal(parent.node.Data);\n const result = await createShard(blockstore, parent.node.Links.map(link => ({\n name: (link.Name ?? ''),\n size: BigInt(link.Tsize ?? 0),\n cid: link.Hash\n })), {\n mode: unixfs.mode,\n mtime: unixfs.mtime,\n cidVersion: parent.cid.version\n });\n log(`converted directory to sharded directory ${result.cid}`);\n return result;\n};\nconst addToDirectory = async (parent, child, blockstore, options) => {\n // Remove existing link if it exists\n const parentLinks = parent.node.Links.filter((link) => {\n const matches = link.Name === child.Name;\n if (matches && !options.allowOverwriting) {\n throw new AlreadyExistsError();\n }\n return !matches;\n });\n parentLinks.push(child);\n if (parent.node.Data == null) {\n throw new InvalidPBNodeError('Parent node with no data passed to addToDirectory');\n }\n const node = UnixFS.unmarshal(parent.node.Data);\n let data;\n if (node.mtime != null) {\n // Update mtime if previously set\n const ms = Date.now();\n const secs = Math.floor(ms / 1000);\n node.mtime = {\n secs: BigInt(secs),\n nsecs: (ms - (secs * 1000)) * 1000\n };\n data = node.marshal();\n }\n else {\n data = parent.node.Data;\n }\n parent.node = dagPB.prepare({\n Data: data,\n Links: parentLinks\n });\n // Persist the new parent PbNode\n const buf = dagPB.encode(parent.node);\n const hash = await sha256.digest(buf);\n const cid = CID.create(parent.cid.version, dagPB.code, hash);\n await blockstore.put(cid, buf);\n return {\n node: parent.node,\n cid\n };\n};\nconst addToShardedDirectory = async (parent, child, blockstore, options) => {\n const { path, hash } = await recreateShardedDirectory(parent.cid, child.Name, blockstore, options);\n const finalSegment = path[path.length - 1];\n if (finalSegment == null) {\n throw new Error('Invalid HAMT, could not generate path');\n }\n // find the next prefix\n // const index = await hash.take(hamtBucketBits)\n const prefix = finalSegment.prefix;\n const index = parseInt(prefix, 16);\n log('next prefix for %s is %s', child.Name, prefix);\n const linkName = `${prefix}${child.Name}`;\n const existingLink = finalSegment.node.Links.find(l => (l.Name ?? '').startsWith(prefix));\n if (existingLink != null) {\n log('link %s was present in shard', linkName);\n // link is already present in shard\n if (existingLink.Name === linkName) {\n // file with same name is already present in shard\n if (!options.allowOverwriting) {\n throw new AlreadyExistsError();\n }\n log('overwriting %s in subshard', child.Name);\n finalSegment.node.Links = finalSegment.node.Links.filter(l => l.Name !== linkName);\n finalSegment.node.Links.push({\n Name: linkName,\n Hash: child.Hash,\n Tsize: child.Tsize\n });\n }\n else if (existingLink.Name?.length === 2) {\n throw new Error('Existing link was subshard?!');\n }\n else {\n // conflict, add a new HAMT segment\n log('prefix %s already exists, creating new subshard', prefix);\n // find the sibling we are going to replace\n const index = finalSegment.node.Links.findIndex(l => l.Name?.startsWith(prefix));\n const sibling = finalSegment.node.Links.splice(index, 1)[0];\n // give the sibling a new HAMT prefix\n const siblingName = (sibling.Name ?? '').substring(2);\n const wrapped = wrapHash(hamtHashFn);\n const siblingHash = wrapped(uint8ArrayFromString(siblingName));\n // discard hash bits until we reach the subshard depth\n for (let i = 0; i < path.length; i++) {\n await siblingHash.take(hamtBucketBits);\n }\n while (true) {\n const siblingIndex = await siblingHash.take(hamtBucketBits);\n const siblingPrefix = toPrefix(siblingIndex);\n sibling.Name = `${siblingPrefix}${siblingName}`;\n // calculate the target file's HAMT prefix in the new sub-shard\n const newIndex = await hash.take(hamtBucketBits);\n const newPrefix = toPrefix(newIndex);\n if (siblingPrefix === newPrefix) {\n // the two sibling names have caused another conflict - add an intermediate node to\n // the HAMT and try again\n // create the child locations\n const children = new SparseArray();\n children.set(newIndex, true);\n path.push({\n prefix: newPrefix,\n children,\n node: {\n Links: []\n }\n });\n continue;\n }\n // create the child locations\n const children = new SparseArray();\n children.set(newIndex, true);\n children.set(siblingIndex, true);\n // add our new segment\n path.push({\n prefix,\n children,\n node: {\n Links: [\n sibling, {\n Name: `${newPrefix}${child.Name}`,\n Hash: child.Hash,\n Tsize: child.Tsize\n }\n ]\n }\n });\n break;\n }\n }\n }\n else {\n log('link %s was not present in sub-shard', linkName);\n // add new link to shard\n child.Name = linkName;\n finalSegment.node.Links.push(child);\n finalSegment.children.set(index, true);\n log('adding %s to existing sub-shard', linkName);\n }\n return updateShardedDirectory(path, blockstore, options);\n};\n//# sourceMappingURL=add-link.js.map","import { exporter } from 'ipfs-unixfs-exporter';\nimport { NotADirectoryError } from '../../errors.js';\nexport async function cidToDirectory(cid, blockstore, options = {}) {\n const entry = await exporter(cid, blockstore, options);\n if (entry.type !== 'directory') {\n throw new NotADirectoryError(`${cid.toString()} was not a UnixFS directory`);\n }\n return {\n cid,\n node: entry.node\n };\n}\n//# sourceMappingURL=cid-to-directory.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { exporter } from 'ipfs-unixfs-exporter';\nimport { NotUnixFSError } from '../../errors.js';\nexport async function cidToPBLink(cid, name, blockstore, options) {\n const sourceEntry = await exporter(cid, blockstore, options);\n if (sourceEntry.type !== 'directory' && sourceEntry.type !== 'file' && sourceEntry.type !== 'raw') {\n throw new NotUnixFSError(`${cid.toString()} was not a UnixFS node`);\n }\n return {\n Name: name,\n Tsize: sourceEntry.node instanceof Uint8Array ? sourceEntry.node.byteLength : dagNodeTsize(sourceEntry.node),\n Hash: cid\n };\n}\nfunction dagNodeTsize(node) {\n const linkSizes = node.Links.reduce((acc, curr) => acc + (curr.Tsize ?? 0), 0);\n return dagPb.encode(node).byteLength + linkSizes;\n}\n//# sourceMappingURL=cid-to-pblink.js.map","import { logger } from '@libp2p/logger';\nimport { walkPath } from 'ipfs-unixfs-exporter';\nimport all from 'it-all';\nimport { DoesNotExistError } from '../../errors.js';\nimport { addLink } from './add-link.js';\nimport { cidToDirectory } from './cid-to-directory.js';\nimport { cidToPBLink } from './cid-to-pblink.js';\nconst log = logger('helia:unixfs:components:utils:resolve');\nexport async function resolve(cid, path, blockstore, options) {\n if (path == null || path === '') {\n return { cid };\n }\n const p = `/ipfs/${cid}${path == null ? '' : `/${path}`}`;\n const segments = await all(walkPath(p, blockstore, options));\n if (segments.length === 0) {\n throw new DoesNotExistError('Could not find path in directory');\n }\n log('resolved %s to %c', path, cid);\n return {\n cid: segments[segments.length - 1].cid,\n path,\n segments\n };\n}\n/**\n * Where we have descended into a DAG to update a child node, ascend up the DAG creating\n * new hashes and blocks for the changed content\n */\nexport async function updatePathCids(cid, result, blockstore, options) {\n if (result.segments == null || result.segments.length === 0) {\n return cid;\n }\n let child = result.segments.pop();\n if (child == null) {\n throw new Error('Insufficient segments');\n }\n child.cid = cid;\n result.segments.reverse();\n for (const parent of result.segments) {\n const [directory, pblink] = await Promise.all([\n cidToDirectory(parent.cid, blockstore, options),\n cidToPBLink(child.cid, child.name, blockstore, options)\n ]);\n const result = await addLink(directory, pblink, blockstore, {\n ...options,\n allowOverwriting: true,\n cidVersion: cid.version\n });\n cid = result.cid;\n parent.cid = cid;\n child = parent;\n }\n return cid;\n}\n//# sourceMappingURL=resolve.js.map","import { exporter } from 'ipfs-unixfs-exporter';\nimport mergeOpts from 'merge-options';\nimport { NoContentError, NotAFileError } from '../errors.js';\nimport { resolve } from './utils/resolve.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst defaultOptions = {};\nexport async function* cat(cid, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n const resolved = await resolve(cid, opts.path, blockstore, opts);\n const result = await exporter(resolved.cid, blockstore, opts);\n if (result.type !== 'file' && result.type !== 'raw') {\n throw new NotAFileError();\n }\n if (result.content == null) {\n throw new NoContentError();\n }\n yield* result.content(opts);\n}\n//# sourceMappingURL=cat.js.map","import { coerce } from '../bytes.js';\nexport const name = 'raw';\nexport const code = 0x55;\nexport function encode(node) {\n return coerce(node);\n}\nexport function decode(data) {\n return coerce(data);\n}\n//# sourceMappingURL=raw.js.map","export const SHARD_SPLIT_THRESHOLD_BYTES = 262144;\n//# sourceMappingURL=constants.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { recursive } from 'ipfs-unixfs-exporter';\nimport { importer } from 'ipfs-unixfs-importer';\nimport last from 'it-last';\nimport { pipe } from 'it-pipe';\nimport mergeOpts from 'merge-options';\nimport { CID } from 'multiformats/cid';\nimport * as raw from 'multiformats/codecs/raw';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { InvalidPBNodeError, NotUnixFSError, UnknownError } from '../errors.js';\nimport { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js';\nimport { persist } from './utils/persist.js';\nimport { resolve, updatePathCids } from './utils/resolve.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:chmod');\nconst defaultOptions = {\n recursive: false,\n shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES\n};\nexport async function chmod(cid, mode, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n const resolved = await resolve(cid, opts.path, blockstore, options);\n log('chmod %c %d', resolved.cid, mode);\n if (opts.recursive) {\n // recursively export from root CID, change perms of each entry then reimport\n // but do not reimport files, only manipulate dag-pb nodes\n const root = await pipe(async function* () {\n for await (const entry of recursive(resolved.cid, blockstore, options)) {\n let metadata;\n let links = [];\n if (entry.type === 'raw') {\n // convert to UnixFS\n metadata = new UnixFS({ type: 'file', data: entry.node });\n }\n else if (entry.type === 'file' || entry.type === 'directory') {\n metadata = entry.unixfs;\n links = entry.node.Links;\n }\n else {\n throw new NotUnixFSError();\n }\n metadata.mode = mode;\n const node = {\n Data: metadata.marshal(),\n Links: links\n };\n yield {\n path: entry.path,\n content: node\n };\n }\n }, \n // @ts-expect-error cannot combine progress types\n (source) => importer(source, blockstore, {\n ...opts,\n dagBuilder: async function* (source, block) {\n for await (const entry of source) {\n yield async function () {\n // @ts-expect-error cannot derive type\n const node = entry.content;\n const buf = dagPB.encode(node);\n const updatedCid = await persist(buf, block, {\n ...opts,\n cidVersion: cid.version\n });\n if (node.Data == null) {\n throw new InvalidPBNodeError(`${updatedCid} had no data`);\n }\n const unixfs = UnixFS.unmarshal(node.Data);\n return {\n cid: updatedCid,\n size: BigInt(buf.length),\n path: entry.path,\n unixfs\n };\n };\n }\n }\n }), async (nodes) => last(nodes));\n if (root == null) {\n throw new UnknownError(`Could not chmod ${resolved.cid.toString()}`);\n }\n return updatePathCids(root.cid, resolved, blockstore, opts);\n }\n const block = await blockstore.get(resolved.cid, options);\n let metadata;\n let links = [];\n if (resolved.cid.code === raw.code) {\n // convert to UnixFS\n metadata = new UnixFS({ type: 'file', data: block });\n }\n else {\n const node = dagPB.decode(block);\n if (node.Data == null) {\n throw new InvalidPBNodeError(`${resolved.cid.toString()} had no data`);\n }\n links = node.Links;\n metadata = UnixFS.unmarshal(node.Data);\n }\n metadata.mode = mode;\n const updatedBlock = dagPB.encode({\n Data: metadata.marshal(),\n Links: links\n });\n const hash = await sha256.digest(updatedBlock);\n const updatedCid = CID.create(resolved.cid.version, dagPB.code, hash);\n await blockstore.put(updatedCid, updatedBlock);\n return updatePathCids(updatedCid, resolved, blockstore, opts);\n}\n//# sourceMappingURL=chmod.js.map","import { logger } from '@libp2p/logger';\nimport mergeOpts from 'merge-options';\nimport { InvalidParametersError } from '../errors.js';\nimport { addLink } from './utils/add-link.js';\nimport { cidToDirectory } from './utils/cid-to-directory.js';\nimport { cidToPBLink } from './utils/cid-to-pblink.js';\nimport { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:cp');\nconst defaultOptions = {\n force: false,\n shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES\n};\nexport async function cp(source, target, name, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n if (name.includes('/')) {\n throw new InvalidParametersError('Name must not have slashes');\n }\n const [directory, pblink] = await Promise.all([\n cidToDirectory(target, blockstore, opts),\n cidToPBLink(source, name, blockstore, opts)\n ]);\n log('Adding %c as \"%s\" to %c', source, name, target);\n const result = await addLink(directory, pblink, blockstore, {\n allowOverwriting: opts.force,\n cidVersion: target.version,\n ...opts\n });\n return result.cid;\n}\n//# sourceMappingURL=cp.js.map","import { exporter } from 'ipfs-unixfs-exporter';\nimport mergeOpts from 'merge-options';\nimport { NoContentError, NotADirectoryError } from '../errors.js';\nimport { resolve } from './utils/resolve.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst defaultOptions = {};\nexport async function* ls(cid, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n const resolved = await resolve(cid, opts.path, blockstore, opts);\n const result = await exporter(resolved.cid, blockstore);\n if (result.type === 'file' || result.type === 'raw') {\n yield result;\n return;\n }\n if (result.content == null) {\n throw new NoContentError();\n }\n if (result.type !== 'directory') {\n throw new NotADirectoryError();\n }\n yield* result.content({\n offset: options.offset,\n length: options.length\n });\n}\n//# sourceMappingURL=ls.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { exporter } from 'ipfs-unixfs-exporter';\nimport mergeOpts from 'merge-options';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { InvalidParametersError, NotADirectoryError } from '../errors.js';\nimport { addLink } from './utils/add-link.js';\nimport { cidToDirectory } from './utils/cid-to-directory.js';\nimport { cidToPBLink } from './utils/cid-to-pblink.js';\nimport { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:mkdir');\nconst defaultOptions = {\n cidVersion: 1,\n force: false,\n shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES\n};\nexport async function mkdir(parentCid, dirname, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n if (dirname.includes('/')) {\n throw new InvalidParametersError('Path must not have slashes');\n }\n const entry = await exporter(parentCid, blockstore, options);\n if (entry.type !== 'directory') {\n throw new NotADirectoryError(`${parentCid.toString()} was not a UnixFS directory`);\n }\n log('creating %s', dirname);\n const metadata = new UnixFS({\n type: 'directory',\n mode: opts.mode,\n mtime: opts.mtime\n });\n // Persist the new parent PBNode\n const node = {\n Data: metadata.marshal(),\n Links: []\n };\n const buf = dagPB.encode(node);\n const hash = await sha256.digest(buf);\n const emptyDirCid = CID.create(opts.cidVersion, dagPB.code, hash);\n await blockstore.put(emptyDirCid, buf);\n const [directory, pblink] = await Promise.all([\n cidToDirectory(parentCid, blockstore, opts),\n cidToPBLink(emptyDirCid, dirname, blockstore, opts)\n ]);\n log('adding empty dir called %s to %c', dirname, parentCid);\n const result = await addLink(directory, pblink, blockstore, {\n ...opts,\n allowOverwriting: opts.force\n });\n return result.cid;\n}\n//# sourceMappingURL=mkdir.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { exporter } from 'ipfs-unixfs-exporter';\nimport { InvalidParametersError, InvalidPBNodeError } from '../../errors.js';\nimport { recreateShardedDirectory, updateShardedDirectory } from './hamt-utils.js';\nimport { isOverShardThreshold } from './is-over-shard-threshold.js';\nimport { persist } from './persist.js';\nconst log = logger('helia:unixfs:utils:remove-link');\nexport async function removeLink(parent, name, blockstore, options) {\n if (parent.node.Data == null) {\n throw new InvalidPBNodeError('Parent node had no data');\n }\n const meta = UnixFS.unmarshal(parent.node.Data);\n if (meta.type === 'hamt-sharded-directory') {\n log(`removing ${name} from sharded directory`);\n const result = await removeFromShardedDirectory(parent, name, blockstore, options);\n if (!(await isOverShardThreshold(result.node, blockstore, options.shardSplitThresholdBytes, options))) {\n log('converting shard to flat directory %c', parent.cid);\n return convertToFlatDirectory(result, blockstore, options);\n }\n return result;\n }\n log(`removing link ${name} regular directory`);\n return removeFromDirectory(parent, name, blockstore, options);\n}\nconst removeFromDirectory = async (parent, name, blockstore, options) => {\n // Remove existing link if it exists\n parent.node.Links = parent.node.Links.filter((link) => {\n return link.Name !== name;\n });\n const parentBlock = dagPB.encode(parent.node);\n const parentCid = await persist(parentBlock, blockstore, {\n ...options,\n cidVersion: parent.cid.version\n });\n log(`Updated regular directory ${parentCid}`);\n return {\n node: parent.node,\n cid: parentCid\n };\n};\nconst removeFromShardedDirectory = async (parent, name, blockstore, options) => {\n const { path } = await recreateShardedDirectory(parent.cid, name, blockstore, options);\n const finalSegment = path[path.length - 1];\n if (finalSegment == null) {\n throw new Error('Invalid HAMT, could not generate path');\n }\n const linkName = finalSegment.node.Links.filter(l => (l.Name ?? '').substring(2) === name).map(l => l.Name).pop();\n if (linkName == null) {\n throw new Error('File not found');\n }\n const prefix = linkName.substring(0, 2);\n const index = parseInt(prefix, 16);\n // remove the file from the shard\n finalSegment.node.Links = finalSegment.node.Links.filter(link => link.Name !== linkName);\n finalSegment.children.unset(index);\n if (finalSegment.node.Links.length === 1) {\n // replace the subshard with the last remaining file in the parent\n while (true) {\n if (path.length === 1) {\n break;\n }\n const segment = path[path.length - 1];\n if (segment == null || segment.node.Links.length > 1) {\n break;\n }\n // remove final segment\n path.pop();\n const nextSegment = path[path.length - 1];\n if (nextSegment == null) {\n break;\n }\n const link = segment.node.Links[0];\n nextSegment.node.Links = nextSegment.node.Links.filter(l => !(l.Name ?? '').startsWith(nextSegment.prefix));\n nextSegment.node.Links.push({\n Hash: link.Hash,\n Name: `${nextSegment.prefix}${(link.Name ?? '').substring(2)}`,\n Tsize: link.Tsize\n });\n }\n }\n return updateShardedDirectory(path, blockstore, options);\n};\nconst convertToFlatDirectory = async (parent, blockstore, options) => {\n if (parent.node.Data == null) {\n throw new InvalidParametersError('Invalid parent passed to convertToFlatDirectory');\n }\n const rootNode = {\n Links: []\n };\n const dir = await exporter(parent.cid, blockstore);\n if (dir.type !== 'directory') {\n throw new Error('Unexpected node type');\n }\n for await (const entry of dir.content()) {\n let tsize = 0;\n if (entry.node instanceof Uint8Array) {\n tsize = entry.node.byteLength;\n }\n else {\n tsize = dagPB.encode(entry.node).length;\n }\n rootNode.Links.push({\n Hash: entry.cid,\n Name: entry.name,\n Tsize: tsize\n });\n }\n // copy mode/mtime over if set\n const oldUnixfs = UnixFS.unmarshal(parent.node.Data);\n rootNode.Data = new UnixFS({ type: 'directory', mode: oldUnixfs.mode, mtime: oldUnixfs.mtime }).marshal();\n const block = dagPB.encode(dagPB.prepare(rootNode));\n const cid = await persist(block, blockstore, {\n codec: dagPB,\n cidVersion: parent.cid.version,\n signal: options.signal\n });\n return {\n cid,\n node: rootNode\n };\n};\n//# sourceMappingURL=remove-link.js.map","import { logger } from '@libp2p/logger';\nimport mergeOpts from 'merge-options';\nimport { InvalidParametersError } from '../errors.js';\nimport { cidToDirectory } from './utils/cid-to-directory.js';\nimport { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js';\nimport { removeLink } from './utils/remove-link.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:rm');\nconst defaultOptions = {\n shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES\n};\nexport async function rm(target, name, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n if (name.includes('/')) {\n throw new InvalidParametersError('Name must not have slashes');\n }\n const directory = await cidToDirectory(target, blockstore, opts);\n log('Removing %s from %c', name, target);\n const result = await removeLink(directory, name, blockstore, {\n ...opts,\n cidVersion: target.version\n });\n return result.cid;\n}\n//# sourceMappingURL=rm.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { exporter } from 'ipfs-unixfs-exporter';\nimport mergeOpts from 'merge-options';\nimport * as raw from 'multiformats/codecs/raw';\nimport { InvalidPBNodeError, NotUnixFSError, UnknownError } from '../errors.js';\nimport { resolve } from './utils/resolve.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:stat');\nconst defaultOptions = {};\nexport async function stat(cid, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n const resolved = await resolve(cid, options.path, blockstore, opts);\n log('stat %c', resolved.cid);\n const result = await exporter(resolved.cid, blockstore, opts);\n if (result.type !== 'file' && result.type !== 'directory' && result.type !== 'raw') {\n throw new NotUnixFSError();\n }\n let fileSize = 0n;\n let dagSize = 0n;\n let localFileSize = 0n;\n let localDagSize = 0n;\n let blocks = 0;\n let mode;\n let mtime;\n const type = result.type;\n let unixfs;\n if (result.type === 'raw') {\n fileSize = BigInt(result.node.byteLength);\n dagSize = BigInt(result.node.byteLength);\n localFileSize = BigInt(result.node.byteLength);\n localDagSize = BigInt(result.node.byteLength);\n blocks = 1;\n }\n if (result.type === 'directory') {\n fileSize = 0n;\n dagSize = BigInt(result.unixfs.marshal().byteLength);\n localFileSize = 0n;\n localDagSize = dagSize;\n blocks = 1;\n mode = result.unixfs.mode;\n mtime = result.unixfs.mtime;\n unixfs = result.unixfs;\n }\n if (result.type === 'file') {\n const results = await inspectDag(resolved.cid, blockstore, opts);\n fileSize = result.unixfs.fileSize();\n dagSize = BigInt((result.node.Data?.byteLength ?? 0) + result.node.Links.reduce((acc, curr) => acc + (curr.Tsize ?? 0), 0));\n localFileSize = BigInt(results.localFileSize);\n localDagSize = BigInt(results.localDagSize);\n blocks = results.blocks;\n mode = result.unixfs.mode;\n mtime = result.unixfs.mtime;\n unixfs = result.unixfs;\n }\n return {\n cid: resolved.cid,\n mode,\n mtime,\n fileSize,\n dagSize,\n localFileSize,\n localDagSize,\n blocks,\n type,\n unixfs\n };\n}\nasync function inspectDag(cid, blockstore, options) {\n const results = {\n localFileSize: 0,\n localDagSize: 0,\n blocks: 0\n };\n if (await blockstore.has(cid, options)) {\n const block = await blockstore.get(cid, options);\n results.blocks++;\n results.localDagSize += block.byteLength;\n if (cid.code === raw.code) {\n results.localFileSize += block.byteLength;\n }\n else if (cid.code === dagPb.code) {\n const pbNode = dagPb.decode(block);\n if (pbNode.Links.length > 0) {\n // intermediate node\n for (const link of pbNode.Links) {\n const linkResult = await inspectDag(link.Hash, blockstore, options);\n results.localFileSize += linkResult.localFileSize;\n results.localDagSize += linkResult.localDagSize;\n results.blocks += linkResult.blocks;\n }\n }\n else {\n // leaf node\n if (pbNode.Data == null) {\n throw new InvalidPBNodeError(`PBNode ${cid.toString()} had no data`);\n }\n const unixfs = UnixFS.unmarshal(pbNode.Data);\n if (unixfs.data == null) {\n throw new InvalidPBNodeError(`UnixFS node ${cid.toString()} had no data`);\n }\n results.localFileSize += unixfs.data.byteLength ?? 0;\n }\n }\n else {\n throw new UnknownError(`${cid.toString()} was neither DAG_PB nor RAW`);\n }\n }\n return results;\n}\n//# sourceMappingURL=stat.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { recursive } from 'ipfs-unixfs-exporter';\nimport { importer } from 'ipfs-unixfs-importer';\nimport last from 'it-last';\nimport { pipe } from 'it-pipe';\nimport mergeOpts from 'merge-options';\nimport { CID } from 'multiformats/cid';\nimport * as raw from 'multiformats/codecs/raw';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { InvalidPBNodeError, NotUnixFSError, UnknownError } from '../errors.js';\nimport { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js';\nimport { persist } from './utils/persist.js';\nimport { resolve, updatePathCids } from './utils/resolve.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:touch');\nconst defaultOptions = {\n recursive: false,\n shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES\n};\nexport async function touch(cid, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n const resolved = await resolve(cid, opts.path, blockstore, opts);\n const mtime = opts.mtime ?? {\n secs: BigInt(Math.round(Date.now() / 1000)),\n nsecs: 0\n };\n log('touch %c %o', resolved.cid, mtime);\n if (opts.recursive) {\n // recursively export from root CID, change perms of each entry then reimport\n // but do not reimport files, only manipulate dag-pb nodes\n const root = await pipe(async function* () {\n for await (const entry of recursive(resolved.cid, blockstore)) {\n let metadata;\n let links;\n if (entry.type === 'raw') {\n metadata = new UnixFS({ data: entry.node });\n links = [];\n }\n else if (entry.type === 'file' || entry.type === 'directory') {\n metadata = entry.unixfs;\n links = entry.node.Links;\n }\n else {\n throw new NotUnixFSError();\n }\n metadata.mtime = mtime;\n const node = {\n Data: metadata.marshal(),\n Links: links\n };\n yield {\n path: entry.path,\n content: node\n };\n }\n }, \n // @ts-expect-error blockstore types are incompatible\n (source) => importer(source, blockstore, {\n ...opts,\n dagBuilder: async function* (source, block) {\n for await (const entry of source) {\n yield async function () {\n // @ts-expect-error cannot derive type\n const node = entry.content;\n const buf = dagPB.encode(node);\n const updatedCid = await persist(buf, block, {\n ...opts,\n cidVersion: cid.version\n });\n if (node.Data == null) {\n throw new InvalidPBNodeError(`${updatedCid} had no data`);\n }\n const unixfs = UnixFS.unmarshal(node.Data);\n return {\n cid: updatedCid,\n size: BigInt(buf.length),\n path: entry.path,\n unixfs\n };\n };\n }\n }\n }), async (nodes) => last(nodes));\n if (root == null) {\n throw new UnknownError(`Could not chmod ${resolved.cid.toString()}`);\n }\n return updatePathCids(root.cid, resolved, blockstore, opts);\n }\n const block = await blockstore.get(resolved.cid, options);\n let metadata;\n let links = [];\n if (resolved.cid.code === raw.code) {\n metadata = new UnixFS({ data: block });\n }\n else {\n const node = dagPB.decode(block);\n links = node.Links;\n if (node.Data == null) {\n throw new InvalidPBNodeError(`${resolved.cid.toString()} had no data`);\n }\n metadata = UnixFS.unmarshal(node.Data);\n }\n metadata.mtime = mtime;\n const updatedBlock = dagPB.encode({\n Data: metadata.marshal(),\n Links: links\n });\n const hash = await sha256.digest(updatedBlock);\n const updatedCid = CID.create(resolved.cid.version, dagPB.code, hash);\n await blockstore.put(updatedCid, updatedBlock);\n return updatePathCids(updatedCid, resolved, blockstore, opts);\n}\n//# sourceMappingURL=touch.js.map","import { addAll, addBytes, addByteStream, addDirectory, addFile } from './commands/add.js';\nimport { cat } from './commands/cat.js';\nimport { chmod } from './commands/chmod.js';\nimport { cp } from './commands/cp.js';\nimport { ls } from './commands/ls.js';\nimport { mkdir } from './commands/mkdir.js';\nimport { rm } from './commands/rm.js';\nimport { stat } from './commands/stat.js';\nimport { touch } from './commands/touch.js';\nexport class UnixFS {\n components;\n constructor(components) {\n this.components = components;\n }\n async *addAll(source, options = {}) {\n yield* addAll(source, this.components.blockstore, options);\n }\n async addBytes(bytes, options = {}) {\n return addBytes(bytes, this.components.blockstore, options);\n }\n async addByteStream(bytes, options = {}) {\n return addByteStream(bytes, this.components.blockstore, options);\n }\n async addFile(file, options = {}) {\n return addFile(file, this.components.blockstore, options);\n }\n async addDirectory(dir = {}, options = {}) {\n return addDirectory(dir, this.components.blockstore, options);\n }\n async *cat(cid, options = {}) {\n yield* cat(cid, this.components.blockstore, options);\n }\n async chmod(cid, mode, options = {}) {\n return chmod(cid, mode, this.components.blockstore, options);\n }\n async cp(source, target, name, options = {}) {\n return cp(source, target, name, this.components.blockstore, options);\n }\n async *ls(cid, options = {}) {\n yield* ls(cid, this.components.blockstore, options);\n }\n async mkdir(cid, dirname, options = {}) {\n return mkdir(cid, dirname, this.components.blockstore, options);\n }\n async rm(cid, path, options = {}) {\n return rm(cid, path, this.components.blockstore, options);\n }\n async stat(cid, options = {}) {\n return stat(cid, this.components.blockstore, options);\n }\n async touch(cid, options = {}) {\n return touch(cid, this.components.blockstore, options);\n }\n}\n//# sourceMappingURL=unixfs.js.map","/**\n * @packageDocumentation\n *\n * `@helia/unixfs` is an implementation of a {@link https://github.com/ipfs/specs/blob/main/UNIXFS.md UnixFS filesystem} compatible with {@link https://github.com/ipfs/helia Helia}.\n *\n * See the [API docs](https://ipfs.github.io/helia/modules/_helia_unixfs.html) for all available operations.\n *\n * @example Creating files and directories\n *\n * ```typescript\n * import { createHelia } from 'helia'\n * import { unixfs } from '@helia/unixfs'\n *\n * const helia = createHelia({\n * // ... helia config\n * })\n * const fs = unixfs(helia)\n *\n * // create an empty dir and a file, then add the file to the dir\n * const emptyDirCid = await fs.addDirectory()\n * const fileCid = await fs.addBytes(Uint8Array.from([0, 1, 2, 3]))\n * const updateDirCid = await fs.cp(fileCid, emptyDirCid, 'foo.txt')\n *\n * // or doing the same thing as a stream\n * for await (const entry of fs.addAll([{\n * path: 'foo.txt',\n * content: Uint8Array.from([0, 1, 2, 3])\n * }])) {\n * console.info(entry)\n * }\n * ```\n *\n * @example Recursively adding a directory\n *\n * Node.js-compatibly environments only:\n *\n * ```typescript\n * import { globSource } from '@helia/unixfs'\n *\n * for await (const entry of fs.addAll(globSource('path/to/containing/dir', 'glob-pattern'))) {\n * console.info(entry)\n * }\n * ```\n */\nimport { UnixFS as UnixFSClass } from './unixfs.js';\n/**\n * Create a {@link UnixFS} instance for use with {@link https://github.com/ipfs/helia Helia}\n */\nexport function unixfs(helia) {\n return new UnixFSClass(helia);\n}\nexport { globSource } from './utils/glob-source.js';\nexport { urlSource } from './utils/url-source.js';\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar stream_1 = require(\"stream\");\n/**\n * Readable IndexedDB stream\n */\nvar IndexedDbReadStream = (function (_super) {\n __extends(IndexedDbReadStream, _super);\n function IndexedDbReadStream(options) {\n var _this = _super.call(this, { objectMode: true }) || this;\n var dbRequest = indexedDB.open(options.databaseName, options.databaseVersion);\n dbRequest.addEventListener(\"success\", function (dbEvent) {\n var tx;\n try {\n var store = dbEvent.target.result.transaction([options.objectStoreName])\n .objectStore(options.objectStoreName);\n if (options.indexName) {\n store = store.index(options.indexName);\n }\n tx = store.openCursor(options.range, options.cursorDirection);\n }\n catch (err) {\n return _this.emit(\"error\", err);\n }\n tx.addEventListener(\"success\", function (event) {\n if (event.target.result) {\n _this.push(event.target.result.value);\n return event.target.result.continue();\n }\n _this.push(null);\n });\n tx.addEventListener(\"error\", function (event) {\n _this.emit(\"error\", event.target.result);\n });\n });\n dbRequest.addEventListener(\"error\", function (event) {\n _this.emit(\"error\", event.target.result);\n });\n return _this;\n }\n IndexedDbReadStream.prototype._read = function () {\n return;\n };\n return IndexedDbReadStream;\n}(stream_1.Readable));\nexports.IndexedDbReadStream = IndexedDbReadStream;\n//# sourceMappingURL=indexed-db-read-stream.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar stream_1 = require(\"stream\");\n/* tslint:enable */\n/**\n * writable IndexedDB stream\n */\nvar IndexedDbWriteStream = (function (_super) {\n __extends(IndexedDbWriteStream, _super);\n function IndexedDbWriteStream(options) {\n var _this = _super.call(this, { objectMode: true }) || this;\n _this.options = options;\n return _this;\n }\n IndexedDbWriteStream.prototype._write = function (chunk, encoding, next) {\n var _this = this;\n var dbRequest = indexedDB.open(this.options.databaseName, this.options.databaseVersion);\n dbRequest.addEventListener(\"success\", function (dbEvent) {\n var tx;\n try {\n tx = dbEvent.target.result.transaction([_this.options.objectStoreName], \"readwrite\")\n .objectStore(_this.options.objectStoreName)\n .add(chunk);\n }\n catch (err) {\n _this.emit(\"error\", err);\n return;\n }\n tx.addEventListener(\"success\", function () {\n next();\n });\n tx.addEventListener(\"error\", function (event) {\n _this.emit(\"error\", event.target.error);\n });\n });\n dbRequest.addEventListener(\"error\", function (event) {\n // This can not tested well, but can be fired in browsers incognito mode!\n _this.emit(\"error\", event.target.error);\n });\n };\n return IndexedDbWriteStream;\n}(stream_1.Writable));\nexports.IndexedDbWriteStream = IndexedDbWriteStream;\n//# sourceMappingURL=indexed-db-write-stream.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./indexed-db-read-stream\"));\n__export(require(\"./indexed-db-write-stream\"));\n//# sourceMappingURL=index.js.map","/*!\n * Platform.js v1.3.6\n * Copyright 2014-2020 Benjamin Tan\n * Copyright 2011-2013 John-David Dalton\n * Available under MIT license\n */\n;(function() {\n 'use strict';\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Used as a reference to the global object. */\n var root = (objectTypes[typeof window] && window) || this;\n\n /** Backup possible global object. */\n var oldRoot = root;\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n root = freeGlobal;\n }\n\n /**\n * Used as the maximum length of an array-like object.\n * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n * for more details.\n */\n var maxSafeInteger = Math.pow(2, 53) - 1;\n\n /** Regular expression to detect Opera. */\n var reOpera = /\\bOpera/;\n\n /** Possible global object. */\n var thisBinding = this;\n\n /** Used for native method references. */\n var objectProto = Object.prototype;\n\n /** Used to check for own properties of an object. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to resolve the internal `[[Class]]` of values. */\n var toString = objectProto.toString;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Capitalizes a string value.\n *\n * @private\n * @param {string} string The string to capitalize.\n * @returns {string} The capitalized string.\n */\n function capitalize(string) {\n string = String(string);\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n /**\n * A utility function to clean up the OS name.\n *\n * @private\n * @param {string} os The OS name to clean up.\n * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n * @param {string} [label] A label for the OS.\n */\n function cleanupOS(os, pattern, label) {\n // Platform tokens are defined at:\n // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n var data = {\n '10.0': '10',\n '6.4': '10 Technical Preview',\n '6.3': '8.1',\n '6.2': '8',\n '6.1': 'Server 2008 R2 / 7',\n '6.0': 'Server 2008 / Vista',\n '5.2': 'Server 2003 / XP 64-bit',\n '5.1': 'XP',\n '5.01': '2000 SP1',\n '5.0': '2000',\n '4.0': 'NT',\n '4.90': 'ME'\n };\n // Detect Windows version from platform tokens.\n if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n (data = data[/[\\d.]+$/.exec(os)])) {\n os = 'Windows ' + data;\n }\n // Correct character case and cleanup string.\n os = String(os);\n\n if (pattern && label) {\n os = os.replace(RegExp(pattern, 'i'), label);\n }\n\n os = format(\n os.replace(/ ce$/i, ' CE')\n .replace(/\\bhpw/i, 'web')\n .replace(/\\bMacintosh\\b/, 'Mac OS')\n .replace(/_PowerPC\\b/i, ' OS')\n .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n .replace(/\\bMac (OS X)\\b/, '$1')\n .replace(/\\/(\\d)/, ' $1')\n .replace(/_/g, '.')\n .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n .replace(/\\b(Windows Phone) OS\\b/, '$1')\n .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n .split(' on ')[0]\n );\n\n return os;\n }\n\n /**\n * An iteration utility for arrays and objects.\n *\n * @private\n * @param {Array|Object} object The object to iterate over.\n * @param {Function} callback The function called per iteration.\n */\n function each(object, callback) {\n var index = -1,\n length = object ? object.length : 0;\n\n if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n while (++index < length) {\n callback(object[index], index, object);\n }\n } else {\n forOwn(object, callback);\n }\n }\n\n /**\n * Trim and conditionally capitalize string values.\n *\n * @private\n * @param {string} string The string to format.\n * @returns {string} The formatted string.\n */\n function format(string) {\n string = trim(string);\n return /^(?:webOS|i(?:OS|P))/.test(string)\n ? string\n : capitalize(string);\n }\n\n /**\n * Iterates over an object's own properties, executing the `callback` for each.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} callback The function executed per own property.\n */\n function forOwn(object, callback) {\n for (var key in object) {\n if (hasOwnProperty.call(object, key)) {\n callback(object[key], key, object);\n }\n }\n }\n\n /**\n * Gets the internal `[[Class]]` of a value.\n *\n * @private\n * @param {*} value The value.\n * @returns {string} The `[[Class]]`.\n */\n function getClassOf(value) {\n return value == null\n ? capitalize(value)\n : toString.call(value).slice(8, -1);\n }\n\n /**\n * Host objects can return type values that are different from their actual\n * data type. The objects we are concerned with usually return non-primitive\n * types of \"object\", \"function\", or \"unknown\".\n *\n * @private\n * @param {*} object The owner of the property.\n * @param {string} property The property to check.\n * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n */\n function isHostType(object, property) {\n var type = object != null ? typeof object[property] : 'number';\n return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n (type == 'object' ? !!object[property] : true);\n }\n\n /**\n * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n *\n * @private\n * @param {string} string The string to qualify.\n * @returns {string} The qualified string.\n */\n function qualify(string) {\n return String(string).replace(/([ -])(?!$)/g, '$1?');\n }\n\n /**\n * A bare-bones `Array#reduce` like utility function.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function called per iteration.\n * @returns {*} The accumulated result.\n */\n function reduce(array, callback) {\n var accumulator = null;\n each(array, function(value, index) {\n accumulator = callback(accumulator, value, index, array);\n });\n return accumulator;\n }\n\n /**\n * Removes leading and trailing whitespace from a string.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} The trimmed string.\n */\n function trim(string) {\n return String(string).replace(/^ +| +$/g, '');\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a new platform object.\n *\n * @memberOf platform\n * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n * context object.\n * @returns {Object} A platform object.\n */\n function parse(ua) {\n\n /** The environment context object. */\n var context = root;\n\n /** Used to flag when a custom context is provided. */\n var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n // Juggle arguments.\n if (isCustomContext) {\n context = ua;\n ua = null;\n }\n\n /** Browser navigator object. */\n var nav = context.navigator || {};\n\n /** Browser user agent string. */\n var userAgent = nav.userAgent || '';\n\n ua || (ua = userAgent);\n\n /** Used to flag when `thisBinding` is the [ModuleScope]. */\n var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n /** Used to detect if browser is like Chrome. */\n var likeChrome = isCustomContext\n ? !!nav.likeChrome\n : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n /** Internal `[[Class]]` value shortcuts. */\n var objectClass = 'Object',\n airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n enviroClass = isCustomContext ? objectClass : 'Environment',\n javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n /** Detect Java environments. */\n var java = /\\bJava/.test(javaClass) && context.java;\n\n /** Detect Rhino. */\n var rhino = java && getClassOf(context.environment) == enviroClass;\n\n /** A character to represent alpha. */\n var alpha = java ? 'a' : '\\u03b1';\n\n /** A character to represent beta. */\n var beta = java ? 'b' : '\\u03b2';\n\n /** Browser document object. */\n var doc = context.document || {};\n\n /**\n * Detect Opera browser (Presto-based).\n * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n */\n var opera = context.operamini || context.opera;\n\n /** Opera `[[Class]]`. */\n var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n ? operaClass\n : (opera = null);\n\n /*------------------------------------------------------------------------*/\n\n /** Temporary variable used over the script's lifetime. */\n var data;\n\n /** The CPU architecture. */\n var arch = ua;\n\n /** Platform description array. */\n var description = [];\n\n /** Platform alpha/beta indicator. */\n var prerelease = null;\n\n /** A flag to indicate that environment features should be used to resolve the platform. */\n var useFeatures = ua == userAgent;\n\n /** The browser/environment version. */\n var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n /** A flag to indicate if the OS ends with \"/ Version\" */\n var isSpecialCasedOS;\n\n /* Detectable layout engines (order is important). */\n var layout = getLayout([\n { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n 'Trident',\n { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n 'iCab',\n 'Presto',\n 'NetFront',\n 'Tasman',\n 'KHTML',\n 'Gecko'\n ]);\n\n /* Detectable browser names (order is important). */\n var name = getName([\n 'Adobe AIR',\n 'Arora',\n 'Avant Browser',\n 'Breach',\n 'Camino',\n 'Electron',\n 'Epiphany',\n 'Fennec',\n 'Flock',\n 'Galeon',\n 'GreenBrowser',\n 'iCab',\n 'Iceweasel',\n 'K-Meleon',\n 'Konqueror',\n 'Lunascape',\n 'Maxthon',\n { 'label': 'Microsoft Edge', 'pattern': '(?:Edge|Edg|EdgA|EdgiOS)' },\n 'Midori',\n 'Nook Browser',\n 'PaleMoon',\n 'PhantomJS',\n 'Raven',\n 'Rekonq',\n 'RockMelt',\n { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n 'SeaMonkey',\n { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Sleipnir',\n 'SlimBrowser',\n { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n 'Sunrise',\n 'Swiftfox',\n 'Vivaldi',\n 'Waterfox',\n 'WebPositive',\n { 'label': 'Yandex Browser', 'pattern': 'YaBrowser' },\n { 'label': 'UC Browser', 'pattern': 'UCBrowser' },\n 'Opera Mini',\n { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n 'Opera',\n { 'label': 'Opera', 'pattern': 'OPR' },\n 'Chromium',\n 'Chrome',\n { 'label': 'Chrome', 'pattern': '(?:HeadlessChrome)' },\n { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n { 'label': 'IE', 'pattern': 'IEMobile' },\n { 'label': 'IE', 'pattern': 'MSIE' },\n 'Safari'\n ]);\n\n /* Detectable products (order is important). */\n var product = getProduct([\n { 'label': 'BlackBerry', 'pattern': 'BB10' },\n 'BlackBerry',\n { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n 'Google TV',\n 'Lumia',\n 'iPad',\n 'iPod',\n 'iPhone',\n 'Kindle',\n { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Nexus',\n 'Nook',\n 'PlayBook',\n 'PlayStation Vita',\n 'PlayStation',\n 'TouchPad',\n 'Transformer',\n { 'label': 'Wii U', 'pattern': 'WiiU' },\n 'Wii',\n 'Xbox One',\n { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n 'Xoom'\n ]);\n\n /* Detectable manufacturers. */\n var manufacturer = getManufacturer({\n 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n 'Alcatel': {},\n 'Archos': {},\n 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n 'Asus': { 'Transformer': 1 },\n 'Barnes & Noble': { 'Nook': 1 },\n 'BlackBerry': { 'PlayBook': 1 },\n 'Google': { 'Google TV': 1, 'Nexus': 1 },\n 'HP': { 'TouchPad': 1 },\n 'HTC': {},\n 'Huawei': {},\n 'Lenovo': {},\n 'LG': {},\n 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n 'Motorola': { 'Xoom': 1 },\n 'Nintendo': { 'Wii U': 1, 'Wii': 1 },\n 'Nokia': { 'Lumia': 1 },\n 'Oppo': {},\n 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n 'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 },\n 'Xiaomi': { 'Mi': 1, 'Redmi': 1 }\n });\n\n /* Detectable operating systems (order is important). */\n var os = getOS([\n 'Windows Phone',\n 'KaiOS',\n 'Android',\n 'CentOS',\n { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n 'Debian',\n { 'label': 'DragonFly BSD', 'pattern': 'DragonFly' },\n 'Fedora',\n 'FreeBSD',\n 'Gentoo',\n 'Haiku',\n 'Kubuntu',\n 'Linux Mint',\n 'OpenBSD',\n 'Red Hat',\n 'SuSE',\n 'Ubuntu',\n 'Xubuntu',\n 'Cygwin',\n 'Symbian OS',\n 'hpwOS',\n 'webOS ',\n 'webOS',\n 'Tablet OS',\n 'Tizen',\n 'Linux',\n 'Mac OS X',\n 'Macintosh',\n 'Mac',\n 'Windows 98;',\n 'Windows '\n ]);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Picks the layout engine from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected layout engine.\n */\n function getLayout(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the manufacturer from an array of guesses.\n *\n * @private\n * @param {Array} guesses An object of guesses.\n * @returns {null|string} The detected manufacturer.\n */\n function getManufacturer(guesses) {\n return reduce(guesses, function(result, value, key) {\n // Lookup the manufacturer by product or scan the UA for the manufacturer.\n return result || (\n value[product] ||\n value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n ) && key;\n });\n }\n\n /**\n * Picks the browser name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected browser name.\n */\n function getName(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the OS name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected OS name.\n */\n function getOS(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n )) {\n result = cleanupOS(result, pattern, guess.label || guess);\n }\n return result;\n });\n }\n\n /**\n * Picks the product name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected product name.\n */\n function getProduct(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n )) {\n // Split by forward slash and append product version if needed.\n if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n result[0] += ' ' + result[1];\n }\n // Correct character case and cleanup string.\n guess = guess.label || guess;\n result = format(result[0]\n .replace(RegExp(pattern, 'i'), guess)\n .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n }\n return result;\n });\n }\n\n /**\n * Resolves the version using an array of UA patterns.\n *\n * @private\n * @param {Array} patterns An array of UA patterns.\n * @returns {null|string} The detected version.\n */\n function getVersion(patterns) {\n return reduce(patterns, function(result, pattern) {\n return result || (RegExp(pattern +\n '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n });\n }\n\n /**\n * Returns `platform.description` when the platform object is coerced to a string.\n *\n * @name toString\n * @memberOf platform\n * @returns {string} Returns `platform.description` if available, else an empty string.\n */\n function toStringPlatform() {\n return this.description || '';\n }\n\n /*------------------------------------------------------------------------*/\n\n // Convert layout to an array so we can add extra details.\n layout && (layout = [layout]);\n\n // Detect Android products.\n // Browsers on Android devices typically provide their product IDS after \"Android;\"\n // up to \"Build\" or \") AppleWebKit\".\n // Example:\n // \"Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36\n // (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36\"\n if (/\\bAndroid\\b/.test(os) && !product &&\n (data = /\\bAndroid[^;]*;(.*?)(?:Build|\\) AppleWebKit)\\b/i.exec(ua))) {\n product = trim(data[1])\n // Replace any language codes (eg. \"en-US\").\n .replace(/^[a-z]{2}-[a-z]{2};\\s*/i, '')\n || null;\n }\n // Detect product names that contain their manufacturer's name.\n if (manufacturer && !product) {\n product = getProduct([manufacturer]);\n } else if (manufacturer && product) {\n product = product\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.\\\\s]', 'i'), manufacturer + ' ')\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.]?(\\\\w)', 'i'), manufacturer + ' $2');\n }\n // Clean up Google TV.\n if ((data = /\\bGoogle TV\\b/.exec(product))) {\n product = data[0];\n }\n // Detect simulators.\n if (/\\bSimulator\\b/i.test(ua)) {\n product = (product ? product + ' ' : '') + 'Simulator';\n }\n // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n description.push('running in Turbo/Uncompressed mode');\n }\n // Detect IE Mobile 11.\n if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n data = parse(ua.replace(/like iPhone OS/, ''));\n manufacturer = data.manufacturer;\n product = data.product;\n }\n // Detect iOS.\n else if (/^iP/.test(product)) {\n name || (name = 'Safari');\n os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n ? ' ' + data[1].replace(/_/g, '.')\n : '');\n }\n // Detect Kubuntu.\n else if (name == 'Konqueror' && /^Linux\\b/i.test(os)) {\n os = 'Kubuntu';\n }\n // Detect Android browsers.\n else if ((manufacturer && manufacturer != 'Google' &&\n ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n name = 'Android Browser';\n os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n }\n // Detect Silk desktop/accelerated modes.\n else if (name == 'Silk') {\n if (!/\\bMobi/i.test(ua)) {\n os = 'Android';\n description.unshift('desktop mode');\n }\n if (/Accelerated *= *true/i.test(ua)) {\n description.unshift('accelerated');\n }\n }\n // Detect UC Browser speed mode.\n else if (name == 'UC Browser' && /\\bUCWEB\\b/.test(ua)) {\n description.push('speed mode');\n }\n // Detect PaleMoon identifying as Firefox.\n else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n description.push('identifying as Firefox ' + data[1]);\n }\n // Detect Firefox OS and products running Firefox.\n else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n os || (os = 'Firefox OS');\n product || (product = data[1]);\n }\n // Detect false positives for Firefox/Safari.\n else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n // Escape the `/` for Firefox 1.\n if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n // Clear name of false positives.\n name = null;\n }\n // Reassign a generic name.\n if ((data = product || manufacturer || os) &&\n (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n }\n }\n // Add Chrome version to description for Electron.\n else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n description.push('Chromium ' + data);\n }\n // Detect non-Opera (Presto-based) versions (order is important).\n if (!version) {\n version = getVersion([\n '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$)|UCBrowser|YaBrowser)',\n 'Version',\n qualify(name),\n '(?:Firefox|Minefield|NetFront)'\n ]);\n }\n // Detect stubborn layout engines.\n if ((data =\n layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n )) {\n layout = [data];\n }\n // Detect Windows Phone 7 desktop mode.\n if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n name += ' Mobile';\n os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n description.unshift('desktop mode');\n }\n // Detect Windows Phone 8.x desktop mode.\n else if (/\\bWPDesktop\\b/i.test(ua)) {\n name = 'IE Mobile';\n os = 'Windows Phone 8.x';\n description.unshift('desktop mode');\n version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n }\n // Detect IE 11 identifying as other browsers.\n else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n if (name) {\n description.push('identifying as ' + name + (version ? ' ' + version : ''));\n }\n name = 'IE';\n version = data[1];\n }\n // Leverage environment features.\n if (useFeatures) {\n // Detect server-side environments.\n // Rhino has a global function while others have a global object.\n if (isHostType(context, 'global')) {\n if (java) {\n data = java.lang.System;\n arch = data.getProperty('os.arch');\n os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n }\n if (rhino) {\n try {\n version = context.require('ringo/engine').version.join('.');\n name = 'RingoJS';\n } catch(e) {\n if ((data = context.system) && data.global.system == context.system) {\n name = 'Narwhal';\n os || (os = data[0].os || null);\n }\n }\n if (!name) {\n name = 'Rhino';\n }\n }\n else if (\n typeof context.process == 'object' && !context.process.browser &&\n (data = context.process)\n ) {\n if (typeof data.versions == 'object') {\n if (typeof data.versions.electron == 'string') {\n description.push('Node ' + data.versions.node);\n name = 'Electron';\n version = data.versions.electron;\n } else if (typeof data.versions.nw == 'string') {\n description.push('Chromium ' + version, 'Node ' + data.versions.node);\n name = 'NW.js';\n version = data.versions.nw;\n }\n }\n if (!name) {\n name = 'Node.js';\n arch = data.arch;\n os = data.platform;\n version = /[\\d.]+/.exec(data.version);\n version = version ? version[0] : null;\n }\n }\n }\n // Detect Adobe AIR.\n else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n name = 'Adobe AIR';\n os = data.flash.system.Capabilities.os;\n }\n // Detect PhantomJS.\n else if (getClassOf((data = context.phantom)) == phantomClass) {\n name = 'PhantomJS';\n version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n }\n // Detect IE compatibility modes.\n else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n // We're in compatibility mode when the Trident version + 4 doesn't\n // equal the document mode.\n version = [version, doc.documentMode];\n if ((data = +data[1] + 4) != version[1]) {\n description.push('IE ' + version[1] + ' mode');\n layout && (layout[1] = '');\n version[1] = data;\n }\n version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n }\n // Detect IE 11 masking as other browsers.\n else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n description.push('masking as ' + name + ' ' + version);\n name = 'IE';\n version = '11.0';\n layout = ['Trident'];\n os = 'Windows';\n }\n os = os && format(os);\n }\n // Detect prerelease phases.\n if (version && (data =\n /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n /\\bMinefield\\b/i.test(ua) && 'a'\n )) {\n prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n version = version.replace(RegExp(data + '\\\\+?$'), '') +\n (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n }\n // Detect Firefox Mobile.\n if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS|KaiOS)\\b/.test(os)) {\n name = 'Firefox Mobile';\n }\n // Obscure Maxthon's unreliable version.\n else if (name == 'Maxthon' && version) {\n version = version.replace(/\\.[\\d.]+/, '.x');\n }\n // Detect Xbox 360 and Xbox One.\n else if (/\\bXbox\\b/i.test(product)) {\n if (product == 'Xbox 360') {\n os = null;\n }\n if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n description.unshift('mobile mode');\n }\n }\n // Add mobile postfix.\n else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n (os == 'Windows CE' || /Mobi/i.test(ua))) {\n name += ' Mobile';\n }\n // Detect IE platform preview.\n else if (name == 'IE' && useFeatures) {\n try {\n if (context.external === null) {\n description.unshift('platform preview');\n }\n } catch(e) {\n description.unshift('embedded');\n }\n }\n // Detect BlackBerry OS version.\n // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n version\n )) {\n data = [data, /BB10/.test(ua)];\n os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n version = null;\n }\n // Detect Opera identifying/masking itself as another browser.\n // http://www.opera.com/support/kb/view/843/\n else if (this != forOwn && product != 'Wii' && (\n (useFeatures && opera) ||\n (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n (name == 'IE' && (\n (os && !/^Win/.test(os) && version > 5.5) ||\n /\\bWindows XP\\b/.test(os) && version > 8 ||\n version == 8 && !/\\bTrident\\b/.test(ua)\n ))\n ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n // When \"identifying\", the UA contains both Opera and the other browser's name.\n data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n if (reOpera.test(name)) {\n if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n os = null;\n }\n data = 'identify' + data;\n }\n // When \"masking\", the UA contains only the other browser's name.\n else {\n data = 'mask' + data;\n if (operaClass) {\n name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n } else {\n name = 'Opera';\n }\n if (/\\bIE\\b/.test(data)) {\n os = null;\n }\n if (!useFeatures) {\n version = null;\n }\n }\n layout = ['Presto'];\n description.push(data);\n }\n // Detect WebKit Nightly and approximate Chrome/Safari versions.\n if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n // Correct build number for numeric comparison.\n // (e.g. \"532.5\" becomes \"532.05\")\n data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n // Nightly builds are postfixed with a \"+\".\n if (name == 'Safari' && data[1].slice(-1) == '+') {\n name = 'WebKit Nightly';\n prerelease = 'alpha';\n version = data[1].slice(0, -1);\n }\n // Clear incorrect browser versions.\n else if (version == data[1] ||\n version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n version = null;\n }\n // Use the full Chrome version when available.\n data[1] = (/\\b(?:Headless)?Chrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n // Detect Blink layout engine.\n if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n layout = ['Blink'];\n }\n // Detect JavaScriptCore.\n // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n if (!useFeatures || (!likeChrome && !data[1])) {\n layout && (layout[1] = 'like Safari');\n data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : data < 602 ? 9 : data < 604 ? 10 : data < 606 ? 11 : data < 608 ? 12 : '12');\n } else {\n layout && (layout[1] = 'like Chrome');\n data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n }\n // Add the postfix of \".x\" or \"+\" for approximate versions.\n layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n // Obscure version for some Safari 1-2 releases.\n if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n version = data;\n } else if (name == 'Chrome' && /\\bHeadlessChrome/i.test(ua)) {\n description.unshift('headless');\n }\n }\n // Detect Opera desktop modes.\n if (name == 'Opera' && (data = /\\bzbov|zvav$/.exec(os))) {\n name += ' ';\n description.unshift('desktop mode');\n if (data == 'zvav') {\n name += 'Mini';\n version = null;\n } else {\n name += 'Mobile';\n }\n os = os.replace(RegExp(' *' + data + '$'), '');\n }\n // Detect Chrome desktop mode.\n else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n description.unshift('desktop mode');\n name = 'Chrome Mobile';\n version = null;\n\n if (/\\bOS X\\b/.test(os)) {\n manufacturer = 'Apple';\n os = 'iOS 4.3+';\n } else {\n os = null;\n }\n }\n // Newer versions of SRWare Iron uses the Chrome tag to indicate its version number.\n else if (/\\bSRWare Iron\\b/.test(name) && !version) {\n version = getVersion('Chrome');\n }\n // Strip incorrect OS versions.\n if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n ua.indexOf('/' + data + '-') > -1) {\n os = trim(os.replace(data, ''));\n }\n // Ensure OS does not include the browser name.\n if (os && os.indexOf(name) != -1 && !RegExp(name + ' OS').test(os)) {\n os = os.replace(RegExp(' *' + qualify(name) + ' *'), '');\n }\n // Add layout engine.\n if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n /Browser|Lunascape|Maxthon/.test(name) ||\n name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name) && layout[1])) {\n // Don't add layout details to description if they are falsey.\n (data = layout[layout.length - 1]) && description.push(data);\n }\n // Combine contextual information.\n if (description.length) {\n description = ['(' + description.join('; ') + ')'];\n }\n // Append manufacturer to description.\n if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n description.push('on ' + manufacturer);\n }\n // Append product to description.\n if (product) {\n description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n }\n // Parse the OS into an object.\n if (os) {\n data = / ([\\d.+]+)$/.exec(os);\n isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n os = {\n 'architecture': 32,\n 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n 'version': data ? data[1] : null,\n 'toString': function() {\n var version = this.version;\n return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n }\n };\n }\n // Add browser/OS architecture.\n if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n if (os) {\n os.architecture = 64;\n os.family = os.family.replace(RegExp(' *' + data), '');\n }\n if (\n name && (/\\bWOW64\\b/i.test(ua) ||\n (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n ) {\n description.unshift('32-bit');\n }\n }\n // Chrome 39 and above on OS X is always 64-bit.\n else if (\n os && /^OS X/.test(os.family) &&\n name == 'Chrome' && parseFloat(version) >= 39\n ) {\n os.architecture = 64;\n }\n\n ua || (ua = null);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The platform object.\n *\n * @name platform\n * @type Object\n */\n var platform = {};\n\n /**\n * The platform description.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.description = ua;\n\n /**\n * The name of the browser's layout engine.\n *\n * The list of common layout engines include:\n * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.layout = layout && layout[0];\n\n /**\n * The name of the product's manufacturer.\n *\n * The list of manufacturers include:\n * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n * \"Nokia\", \"Samsung\" and \"Sony\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.manufacturer = manufacturer;\n\n /**\n * The name of the browser/environment.\n *\n * The list of common browser names include:\n * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n * \"Opera Mini\" and \"Opera\"\n *\n * Mobile versions of some browsers have \"Mobile\" appended to their name:\n * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.name = name;\n\n /**\n * The alpha/beta release indicator.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.prerelease = prerelease;\n\n /**\n * The name of the product hosting the browser.\n *\n * The list of common products include:\n *\n * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.product = product;\n\n /**\n * The browser's user agent string.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.ua = ua;\n\n /**\n * The browser/environment version.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.version = name && version;\n\n /**\n * The name of the operating system.\n *\n * @memberOf platform\n * @type Object\n */\n platform.os = os || {\n\n /**\n * The CPU architecture the OS is built for.\n *\n * @memberOf platform.os\n * @type number|null\n */\n 'architecture': null,\n\n /**\n * The family of the OS.\n *\n * Common values include:\n * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n * \"Windows XP\", \"OS X\", \"Linux\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\",\n * \"SuSE\", \"Android\", \"iOS\" and \"Windows Phone\"\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'family': null,\n\n /**\n * The version of the OS.\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'version': null,\n\n /**\n * Returns the OS string.\n *\n * @memberOf platform.os\n * @returns {string} The OS string.\n */\n 'toString': function() { return 'null'; }\n };\n\n platform.parse = parse;\n platform.toString = toStringPlatform;\n\n if (platform.version) {\n description.unshift(version);\n }\n if (platform.name) {\n description.unshift(name);\n }\n if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n description.push(product ? '(' + os + ')' : 'on ' + os);\n }\n if (description.length) {\n platform.description = description.join(' ');\n }\n return platform;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Export platform.\n var platform = parse();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose platform on the global object to prevent errors when platform is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n root.platform = platform;\n\n // Define as an anonymous module so platform can be aliased through path mapping.\n define(function() {\n return platform;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n else if (freeExports && freeModule) {\n // Export for CommonJS support.\n forOwn(platform, function(value, key) {\n freeExports[key] = value;\n });\n }\n else {\n // Export to the global object.\n root.platform = platform;\n }\n}.call(this));\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));","import Semaphore from \"@chriscdn/promise-semaphore\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport md5 from \"crypto-js/md5.js\";\nimport Base64 from \"crypto-js/enc-base64.js\";\nimport deepEqual from \"deep-equal\";\nexport class CacheSuivi {\n verrou;\n _cacheSuivi;\n _cacheRecherche;\n constructor() {\n this.verrou = new Semaphore();\n this._cacheSuivi = {};\n this._cacheRecherche = {};\n }\n async suivre({ adresseFonction, idClient, fOriginale, args, ceciOriginal, }) {\n // Extraire la fonction de suivi\n const nomArgFonction = Object.entries(args).find((x) => typeof x[1] === \"function\")?.[0];\n if (!nomArgFonction)\n throw new Error(`Aucun argument n'est une fonction.`);\n const f = args[nomArgFonction];\n const argsSansF = Object.fromEntries(Object.entries(args).filter((x) => typeof x[1] !== \"function\"));\n if (Object.keys(args).length !== Object.keys(argsSansF).length + 1) {\n throw new Error(\"Plus d'un argument pour \" +\n adresseFonction +\n \" est une fonction : \" +\n JSON.stringify(args));\n }\n const codeCache = this.générerCodeCache({\n adresseFonction,\n idClient,\n argsClefs: argsSansF,\n });\n const idRequête = uuidv4();\n await this.verrou.acquire(codeCache);\n // Vérifier si déjà en cache\n if (!this._cacheSuivi[codeCache]) {\n // Si pas en cache, générer\n this._cacheSuivi[codeCache] = {\n requêtes: { [idRequête]: f },\n };\n const fFinale = async (x) => {\n if (!this._cacheSuivi[codeCache])\n return; // Si on a déjà annulé la requête\n if (Object.keys(this._cacheSuivi[codeCache]).includes(\"val\") &&\n deepEqual(this._cacheSuivi[codeCache].val, x, { strict: true }))\n return; // Ignorer si c'est la même valeur qu'avant\n this._cacheSuivi[codeCache].val = x;\n const fsSuivis = Object.values(this._cacheSuivi[codeCache].requêtes);\n await Promise.all(fsSuivis.map((f_) => f_(x)));\n };\n const argsAvecF = { ...argsSansF, [nomArgFonction]: fFinale };\n const fOublier = await fOriginale.apply(ceciOriginal, [argsAvecF]);\n this._cacheSuivi[codeCache].fOublier = fOublier;\n this.verrou.release(codeCache);\n }\n else {\n this.verrou.release(codeCache);\n // Sinon, ajouter f à la liste de fonctions de rappel\n this._cacheSuivi[codeCache].requêtes[idRequête] = f;\n if (Object.keys(this._cacheSuivi[codeCache]).includes(\"val\"))\n await f(this._cacheSuivi[codeCache].val);\n }\n const fOublierRequête = async () => {\n await this.oublierSuivi({ codeCache, idRequête });\n };\n return fOublierRequête;\n }\n async suivreRecherche({ adresseFonction, nomArgTaille, idClient, fOriginale, args, ceciOriginal, par, }) {\n // Extraire la fonction de suivi\n const nomArgFonction = Object.entries(args).find((x) => typeof x[1] === \"function\")?.[0];\n if (!nomArgFonction)\n throw new Error(`Aucun argument n'est une fonction.`);\n const f = args[nomArgFonction];\n const argsSansF = Object.fromEntries(Object.entries(args).filter((x) => typeof x[1] !== \"function\"));\n if (Object.keys(args).length !== Object.keys(argsSansF).length + 1) {\n throw new Error(\"Plus d'un argument pour \" +\n adresseFonction +\n \" est une fonction : \" +\n JSON.stringify(args));\n }\n const argsSansFOuTaille = Object.fromEntries(Object.entries(args).filter((x) => x[0] !== nomArgTaille));\n let taille = args[nomArgTaille];\n if (taille === undefined)\n taille = Infinity;\n if (typeof taille !== \"number\")\n throw new Error(`Argument ${nomArgTaille} n'est pas un nombre dans la fonction ${adresseFonction}.`);\n const codeCache = this.générerCodeCache({\n adresseFonction,\n idClient,\n argsClefs: argsSansFOuTaille,\n });\n const idRequête = uuidv4();\n await this.verrou.acquire(codeCache);\n const fFinale = (val) => {\n if (!this._cacheRecherche[codeCache])\n return; // Si on a déjà annulé la requête\n this._cacheRecherche[codeCache].val = val;\n const infoRequêtes = Object.values(this._cacheRecherche[codeCache].requêtes);\n if (par === \"profondeur\") {\n infoRequêtes.forEach((info) => info.f(val.filter((x) => x.profondeur <= info.taille)));\n }\n else {\n infoRequêtes.forEach((info) => info.f(val.slice(0, info.taille)));\n }\n };\n // Vérifier si déjà en cache\n if (!this._cacheRecherche[codeCache]) {\n // Si pas en cache, générer\n this._cacheRecherche[codeCache] = {\n requêtes: { [idRequête]: { f, taille } },\n taillePrésente: taille,\n };\n const argsComplets = {\n ...argsSansFOuTaille,\n [nomArgFonction]: fFinale,\n [nomArgTaille]: taille,\n };\n if (par === \"profondeur\") {\n const { fOublier, fChangerProfondeur } = (await fOriginale.apply(ceciOriginal, [argsComplets]));\n this._cacheRecherche[codeCache].fs = {\n fOublier,\n fChangerTaille: fChangerProfondeur,\n };\n }\n else {\n const { fOublier, fChangerN } = (await fOriginale.apply(ceciOriginal, [\n argsComplets,\n ]));\n this._cacheRecherche[codeCache].fs = {\n fOublier,\n fChangerTaille: fChangerN,\n };\n }\n }\n else {\n // Sinon, ajouter f à la liste de fonctions de rappel\n this._cacheRecherche[codeCache].requêtes[idRequête] = { f, taille };\n if (Object.keys(this._cacheRecherche[codeCache]).includes(\"val\")) {\n const { val } = this._cacheRecherche[codeCache];\n if (val)\n fFinale(val);\n }\n }\n const fOublierRequête = async () => {\n await this.oublierRecherche({ codeCache, idRequête });\n };\n const fChangerTailleRequête = (taille) => {\n const tailleAvant = this._cacheRecherche[codeCache].requêtes[idRequête].taille;\n if (taille === tailleAvant)\n return;\n this._cacheRecherche[codeCache].requêtes[idRequête].taille = taille;\n const { val } = this._cacheRecherche[codeCache];\n if (val)\n fFinale(val);\n const maxTaille = Math.max(...Object.values(this._cacheRecherche[codeCache].requêtes).map((r) => r.taille));\n const { taillePrésente } = this._cacheRecherche[codeCache];\n const { fChangerTaille } = this._cacheRecherche[codeCache].fs;\n if (maxTaille !== taillePrésente) {\n this._cacheRecherche[codeCache].taillePrésente = maxTaille;\n fChangerTaille(maxTaille);\n }\n };\n this.verrou.release(codeCache);\n return {\n fOublier: fOublierRequête,\n [par === \"profondeur\" ? \"fChangerProfondeur\" : \"fChangerN\"]: fChangerTailleRequête,\n };\n }\n async oublierSuivi({ codeCache, idRequête, }) {\n await this.verrou.acquire(codeCache);\n if (this._cacheSuivi[codeCache] === undefined)\n return;\n const { requêtes, fOublier } = this._cacheSuivi[codeCache];\n delete requêtes[idRequête];\n if (!Object.keys(requêtes).length) {\n fOublier && (await fOublier());\n delete this._cacheSuivi[codeCache];\n }\n this.verrou.release(codeCache);\n }\n async oublierRecherche({ codeCache, idRequête, }) {\n await this.verrou.acquire(codeCache);\n if (this._cacheRecherche[codeCache] === undefined)\n return;\n const { requêtes, fs } = this._cacheRecherche[codeCache];\n delete requêtes[idRequête];\n if (!Object.keys(requêtes).length) {\n fs && (await fs.fOublier());\n delete this._cacheRecherche[codeCache];\n }\n this.verrou.release(codeCache);\n }\n générerCodeCache({ adresseFonction, idClient, argsClefs, }) {\n const texte = adresseFonction + \"-\" + idClient + \"-\" + JSON.stringify(argsClefs);\n return Base64.stringify(md5(texte));\n }\n}\nexport const cacheSuivi = (_cible, nom, descripteur) => {\n return envelopper({ nom, descripteur });\n};\nexport const cacheRechercheParNRésultats = (_cible, nom, descripteur) => {\n return envelopper({ nom, descripteur, recherche: \"nRésultats\" });\n};\nexport const cacheRechercheParProfondeur = (_cible, nom, descripteur) => {\n return envelopper({ nom, descripteur, recherche: \"profondeur\" });\n};\nexport const envelopper = ({ nom, descripteur, recherche, nomArgTaille, }) => {\n const original = descripteur.value;\n if (typeof original === \"function\") {\n descripteur.value = function (...args) {\n if (args.length > 1)\n throw new Error(\"Args trop longs\");\n const client = this.client ? this.client : this;\n try {\n if (recherche) {\n nomArgTaille = nomArgTaille\n ? nomArgTaille\n : recherche === \"profondeur\"\n ? \"profondeur\"\n : \"nRésultatsDésirés\";\n return cache.suivreRecherche({\n adresseFonction: this.constructor.name + \".\" + nom,\n idClient: client.idCompte,\n fOriginale: original,\n args: args[0],\n ceciOriginal: this,\n par: recherche,\n nomArgTaille,\n });\n }\n else {\n return cache.suivre({\n adresseFonction: this.constructor.name + \".\" + nom,\n idClient: client.idCompte,\n fOriginale: original,\n args: args[0],\n ceciOriginal: this,\n });\n }\n }\n catch (e) {\n console.error(`Erreur: ${e}`);\n throw e;\n }\n };\n }\n else {\n throw new Error(\"L'objet décoré n'est pas une fonction\");\n }\n return descripteur;\n};\nexport const cache = new CacheSuivi();\n//# sourceMappingURL=d%C3%A9corateursCache.js.map","import { __decorate } from \"tslib\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { faisRien } from \"@constl/utils-ipa\";\nimport { CLEF_TABLEAU_LICENCES_APPROUVÉES, ID_NUÉE_LICENCES, SCHÉMA_BD_LICENCES, } from \"./const.js\";\nimport { கிளி, } from \"@lassi-js/kili\";\nimport EventEmitter from \"events\";\nimport { mandatairifier } from \"./mandataire/index.js\";\n// https://github.com/github/choosealicense.com\nexport const conditions = {\n ATTR: \"attribution\",\n ÉGAL: \"partageÉgal\",\n INCL: \"inclureDroitDauteur\",\n CHNG: \"indiquerChangements\",\n SRCE: \"partagerCodeSource\",\n USGR: \"usagereseau\",\n};\nexport const droits = {\n PRTG: \"partager\",\n ADPT: \"adapter\",\n CMRC: \"usageComercial\",\n PRV: \"usagePrivé\",\n BREV: \"usageBrevets\",\n};\nexport const limitations = {\n RSP: \"aucuneResponsabilité\",\n GRNT: \"aucuneGarantie\",\n MRCM: \"marqueCommerce\",\n BREV: \"brevetExclu\",\n SOUS: \"sousLicence\",\n};\nexport const catégories = {\n BD: \"basesDeDonnées\",\n ART: \"artistique\",\n CODE: \"codeInformatique\",\n AUTRE: \"autre\",\n};\nexport const infoLicences = {\n // Licences pour BD\n \"ODbl-1_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.PRV, droits.ADPT],\n conditions: [conditions.ATTR, conditions.ÉGAL, conditions.INCL],\n limitations: [\n limitations.RSP,\n limitations.BREV,\n limitations.MRCM,\n limitations.GRNT,\n ],\n catégorie: catégories.BD,\n },\n \"ODC-BY-1_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.PRV, droits.ADPT],\n conditions: [conditions.ATTR, conditions.INCL],\n limitations: [\n limitations.RSP,\n limitations.GRNT,\n limitations.MRCM,\n limitations.BREV,\n ],\n catégorie: catégories.BD,\n },\n PDDL: {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.PRV],\n conditions: [],\n limitations: [\n limitations.RSP,\n limitations.GRNT,\n limitations.MRCM,\n limitations.BREV,\n ],\n catégorie: catégories.BD,\n },\n \"rvca-open\": {\n droits: [droits.PRV, droits.CMRC, droits.ADPT, droits.PRTG],\n conditions: [conditions.INCL, conditions.ATTR],\n limitations: [limitations.SOUS, limitations.RSP],\n catégorie: catégories.BD,\n spécialisée: true,\n },\n // Licences créatives\n \"CC-BY-SA-4_0\": {\n droits: [droits.PRTG, droits.ADPT, droits.CMRC, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG, conditions.ÉGAL],\n limitations: [\n limitations.RSP,\n limitations.MRCM,\n limitations.BREV,\n limitations.GRNT,\n ],\n catégorie: catégories.ART,\n },\n \"CC-BY-4_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.PRV],\n conditions: [conditions.ATTR, conditions.CHNG],\n limitations: [\n limitations.RSP,\n limitations.MRCM,\n limitations.BREV,\n limitations.GRNT,\n ],\n catégorie: catégories.ART,\n },\n \"CC-0-1_0\": {\n droits: [droits.PRTG, droits.ADPT, droits.CMRC, droits.PRV],\n conditions: [],\n limitations: [\n limitations.RSP,\n limitations.MRCM,\n limitations.BREV,\n limitations.GRNT,\n ],\n catégorie: catégories.ART,\n },\n // Licences code informatique\n \"0bsd\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.PRV],\n conditions: [],\n limitations: [],\n catégorie: catégories.CODE,\n },\n \"afl-3_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.PRV, droits.BREV],\n conditions: [conditions.INCL, conditions.CHNG],\n limitations: [limitations.MRCM, limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"agpl-3_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.CHNG,\n conditions.SRCE,\n conditions.USGR,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"apache-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG],\n limitations: [limitations.MRCM, limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"artistic-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG],\n limitations: [limitations.RSP, limitations.MRCM, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"bsd-2-clause\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"bsd-3-clause-clear\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.BREV, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"bsd-3-clause\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"bsd-4-clause\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"bsl-1_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"cecill-2_1\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV, droits.BREV],\n conditions: [conditions.INCL, conditions.SRCE, conditions.ÉGAL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"ecl-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG],\n limitations: [limitations.BREV, limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"epl-1_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.BREV, droits.PRV],\n conditions: [conditions.SRCE, conditions.INCL, conditions.ÉGAL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"epl-2_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.BREV, droits.PRV],\n conditions: [conditions.SRCE, conditions.INCL, conditions.ÉGAL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"eupl-1_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.SRCE,\n conditions.CHNG,\n conditions.USGR,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.MRCM, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"eupl-1_2\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.SRCE,\n conditions.CHNG,\n conditions.USGR,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.MRCM, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"gpl-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.CHNG,\n conditions.SRCE,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"gpl-3_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRV, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.CHNG,\n conditions.SRCE,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n isc: {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"lgpl-2_1\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.SRCE,\n conditions.CHNG,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"lgpl-3_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.SRCE,\n conditions.CHNG,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"lppl-1_3c\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG, conditions.SRCE],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"mit-0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n mit: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"mpl-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.SRCE, conditions.INCL, conditions.ÉGAL],\n limitations: [limitations.RSP, limitations.MRCM, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"ms-pl\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.GRNT, limitations.MRCM],\n catégorie: catégories.CODE,\n },\n \"ms-rl\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.SRCE, conditions.INCL, conditions.ÉGAL],\n limitations: [limitations.GRNT, limitations.MRCM],\n catégorie: catégories.CODE,\n },\n \"mulanpsl-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.MRCM, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n ncsa: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"osl-3_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.SRCE,\n conditions.CHNG,\n conditions.USGR,\n conditions.ÉGAL,\n ],\n limitations: [limitations.MRCM, limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n postgresql: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n unlicence: {\n droits: [droits.PRV, droits.CMRC, droits.ADPT, droits.PRTG],\n conditions: [],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"upl-1_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n vim: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.CHNG,\n conditions.SRCE,\n conditions.ÉGAL,\n ],\n limitations: [],\n catégorie: catégories.CODE,\n },\n wtfpl: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [],\n limitations: [],\n catégorie: catégories.CODE,\n },\n zlib: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n // Autres\n \"ofl-1_1\": {\n droits: [droits.PRV, droits.CMRC, droits.ADPT, droits.PRTG],\n conditions: [conditions.INCL, conditions.ÉGAL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.AUTRE,\n },\n};\nexport const licences = Object.keys(infoLicences);\nexport class Licences {\n client;\n événements;\n prêt;\n perroquet;\n constructor({ client }) {\n this.client = client;\n this.prêt = false;\n this.événements = new EventEmitter();\n this.initialiser();\n }\n async initialiser() {\n if (SCHÉMA_BD_LICENCES &&\n CLEF_TABLEAU_LICENCES_APPROUVÉES &&\n ID_NUÉE_LICENCES) {\n this.perroquet = new கிளி({\n // À faire: arranger types\n விண்மீன்: mandatairifier(this.client),\n அட்டவணை_சாபி: CLEF_TABLEAU_LICENCES_APPROUVÉES,\n குழு_அடையாளம்: ID_NUÉE_LICENCES,\n வார்ப்புரு: SCHÉMA_BD_LICENCES,\n });\n }\n this.prêt = true;\n this.événements.emit(\"prêt\");\n }\n async attendrePrêt() {\n if (this.prêt)\n return;\n return new Promise((résoudre) => {\n const fFinale = () => {\n résoudre();\n this.événements.off(\"prêt\", fFinale);\n };\n this.événements.on(\"prêt\", fFinale);\n });\n }\n async suivreLicences({ f, }) {\n await f(infoLicences);\n await this.attendrePrêt();\n if (this.perroquet) {\n const fFinale = async (licences) => {\n return await f(Object.fromEntries(licences.map((l) => [l.code, l])));\n };\n return await this.perroquet.உறுப்படிகளை_கேள்ளு({\n செ: fFinale,\n பரிந்துரைகள்: \"எனது\",\n });\n }\n // Pour l'instant. Plus tard, on pourra le connecter avec une nuée Kili\n return faisRien;\n }\n async suggérerLicence({ code, infoLicence, }) {\n await this.attendrePrêt();\n if (this.perroquet) {\n await this.perroquet.பரிந்துரையு({\n பரிந்துரை: {\n code,\n ...infoLicence,\n },\n });\n }\n }\n async effacerSuggestionLicence({ idÉlément, }) {\n await this.attendrePrêt();\n if (this.perroquet) {\n await this.perroquet.பரிந்துரையை_நீக்கு({ அடையாளம்: idÉlément });\n }\n }\n async suivreSuggestionsLicences({ f, }) {\n await this.attendrePrêt();\n if (this.perroquet) {\n return await this.perroquet.பரிந்துரைகளை_கேள்ளு({ செ: f });\n }\n return { fOublier: faisRien, fChangerProfondeur: faisRien };\n }\n async approuverLicence({ suggestion, }) {\n await this.attendrePrêt();\n if (this.perroquet) {\n await this.perroquet.அங்கீகரி({ பரிந்துரை: suggestion });\n }\n }\n}\n__decorate([\n cacheSuivi\n], Licences.prototype, \"suivreLicences\", null);\n//# sourceMappingURL=licences.js.map","import { idcValide } from \"@constl/utils-ipa\";\nimport { isValidAddress } from \"@orbitdb/core\";\nimport { EventEmitter } from \"events\";\nimport { CID } from \"multiformats\";\nexport const cidEtFichierValide = (val) => {\n let cid;\n let fichier;\n try {\n [cid, fichier] = val.split(\"/\");\n }\n catch {\n return false;\n }\n if (!fichier)\n return false;\n if (!idcValide(cid))\n return false;\n return { cid, fichier };\n};\nexport class Épingles {\n client;\n requêtes;\n fsOublier;\n événements;\n constructor({ client }) {\n this.client = client;\n this.requêtes = [];\n this.fsOublier = {};\n this.événements = new EventEmitter();\n }\n async épinglerBd({ id, récursif = false, fichiers = true, }) {\n if (await this.directementÉpinglée({ id }))\n return;\n await this._épingler({ id, récursif, fichiers });\n }\n async désépinglerBd({ id }) {\n await Promise.all(this.requêtes\n .filter((r) => r.id === id)\n .map(async (r) => await r.fOublier()));\n const dépendants = this.requêtes.filter((r) => r.parent === id);\n this.requêtes = this.requêtes.filter((r) => r.id !== id);\n this.requêtes = this.requêtes.filter((r) => r.parent !== id);\n await Promise.all(dépendants.map(async (d) => {\n if (!this.requêtes.filter((r) => r.id === d.id && r.parent !== id).length) {\n await this.désépinglerBd({ id: d.id });\n }\n }));\n this.événements.emit(\"changement épingles\");\n }\n async épinglée({ id }) {\n return this.requêtes.some((r) => r.id === id);\n }\n async épingléeParParent({ id, parent, }) {\n return this.requêtes.some((r) => r.id === id && r.parent === parent);\n }\n async directementÉpinglée({ id }) {\n return await this.épingléeParParent({ id });\n }\n async épingles() {\n return new Set(this.requêtes.map((r) => r.id));\n }\n async suivreÉpingles({ f, }) {\n const fFinale = async () => {\n const épingles = await this.épingles();\n return await f(épingles);\n };\n this.événements.on(\"changement épingles\", fFinale);\n return async () => {\n this.événements.off(\"changement épingles\", fFinale);\n };\n }\n async _épingler({ id, récursif, fichiers, parent, }) {\n if (await this.épingléeParParent({ id, parent }))\n return;\n const { bd, fOublier } = await this.client.ouvrirBd({ id });\n this.requêtes.push({ id, parent, fOublier });\n this.événements.emit(\"changement épingles\");\n if (récursif) {\n const fSuivre = async (vals) => {\n // Cette fonction détectera les éléments d'une liste ou d'un dictionnaire\n // (à un niveau de profondeur) qui représentent une adresse de BD Orbit.\n let l_vals = [];\n if (typeof vals === \"object\") {\n l_vals = Object.values(vals).filter((v) => typeof v === \"string\");\n l_vals.push(...Object.keys(vals).filter((v) => typeof v === \"string\"));\n }\n else if (Array.isArray(vals)) {\n l_vals = vals;\n }\n else if (typeof vals === \"string\") {\n l_vals = [vals];\n }\n const idsOrbite = l_vals.filter((v) => isValidAddress(v));\n if (fichiers) {\n // Épingler les fichiers si nécessaire\n const cids = l_vals.filter((v) => cidEtFichierValide(v) && !idsOrbite.includes(v));\n const { sfip } = await this.client.attendreSfipEtOrbite();\n cids.forEach(async (id_) => {\n for await (const _ of sfip.pins.add(CID.parse(id_.split(\"/\")[0]))) {\n // rien à faire... assurer que ceci ne bloque pas tout le programme en attendant de trouver le contenu sur le réseau SFIP !\n }\n const fOublier_ = async () => {\n // rm par contre peut être async\n try {\n await sfip.pins.rm(CID.parse(id_));\n }\n catch {\n // Ignorer erreur si id_ n'était pas épinglé sur SFIP\n }\n };\n this.requêtes.push({ id: id_, parent: id, fOublier: fOublier_ });\n this.événements.emit(\"changement épingles\");\n });\n }\n await Promise.all(idsOrbite.map(async (id_) => await this._épingler({ id: id_, récursif, fichiers, parent: id })));\n };\n if (bd.type === \"keyvalue\") {\n const fOublierBd = await this.client.suivreBdDic({\n id,\n f: fSuivre,\n });\n this.fsOublier[id] = fOublierBd;\n }\n else if (bd.type === \"ordered-keyvalue\") {\n const fOublierBd = await this.client.suivreBdDicOrdonnée({\n id,\n f: fSuivre,\n });\n this.fsOublier[id] = fOublierBd;\n }\n else if (bd.type === \"set\") {\n const fOublierBd = await this.client.suivreBdListe({ id, f: fSuivre });\n this.fsOublier[id] = fOublierBd;\n }\n }\n }\n async toutDésépingler() {\n const épingles = await this.épingles();\n await Promise.all([...épingles].map(async (id) => {\n await this.désépinglerBd({ id });\n }));\n }\n async fermer() {\n await Promise.all(Object.values(this.fsOublier).map((f) => f()));\n }\n}\n//# sourceMappingURL=epingles.js.map","export const schémaStructureBdNoms = {\n type: \"object\",\n additionalProperties: {\n type: \"string\",\n },\n required: [],\n};\nexport const schémaStructureBdMétadonnées = {\n type: \"object\",\n additionalProperties: true,\n required: [],\n};\n//# sourceMappingURL=types.js.map","import { __decorate } from \"tslib\";\nimport { schémaStructureBdCompte, } from \"./client.js\";\nimport { suivreBdDeFonction } from \"@constl/utils-ipa\";\nimport { cacheSuivi } from \"./décorateursCache.js\";\nimport { faisRien, ignorerNonDéfinis } from \"@constl/utils-ipa\";\nexport class ComposanteClient {\n client;\n clef;\n typeBd;\n constructor({ client, clef, typeBd, }) {\n this.client = client;\n this.clef = clef;\n this.typeBd = typeBd;\n }\n async obtIdBd() {\n const { idCompte } = await this.client.attendreInitialisée();\n const idBd = await this.client.obtIdBd({\n nom: this.clef,\n racine: idCompte,\n type: this.typeBd,\n });\n if (!idBd)\n throw new Error(\"Mal initialisé\");\n return idBd;\n }\n}\nexport class ComposanteClientDic extends ComposanteClient {\n schémaBdPrincipale;\n constructor({ client, clef, schémaBdPrincipale, }) {\n super({\n client,\n clef,\n typeBd: \"keyvalue\",\n });\n this.schémaBdPrincipale = schémaBdPrincipale;\n }\n async obtBd() {\n const id = await this.obtIdBd();\n return await this.client.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: this.schémaBdPrincipale,\n });\n }\n async suivreBdPrincipale({ idCompte, f, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.suivreIdBd({ f: fSuivreRacine, idCompte });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBdDic({\n id,\n schéma: this.schémaBdPrincipale,\n f: fSuivreBd,\n });\n },\n });\n }\n async suivreSousBdDic({ idCompte, clef, schéma, f, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.suivreIdBd({ f: fSuivreRacine, idCompte });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBdDicDeClef({\n id,\n clef,\n schéma,\n f: fSuivreBd,\n });\n },\n });\n }\n async suivreSousBdListe({ idCompte, clef, schéma, f, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.suivreIdBd({ f: fSuivreRacine, idCompte });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBdListeDeClef({\n id,\n clef: clef,\n f: fSuivreBd,\n schéma,\n renvoyerValeur: true,\n });\n },\n });\n }\n async suivreIdBd({ f, idCompte, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n if (idCompte) {\n await fSuivreRacine(idCompte);\n return faisRien;\n }\n else {\n return await this.client.suivreIdCompte({ f: fSuivreRacine });\n }\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBd({\n id,\n type: \"keyvalue\",\n f: async (bd) => {\n const idBd = await this.client.obtIdBd({\n nom: this.clef,\n racine: bd,\n type: \"keyvalue\",\n });\n return await fSuivreBd(idBd);\n },\n });\n },\n });\n }\n}\n__decorate([\n cacheSuivi\n], ComposanteClientDic.prototype, \"suivreBdPrincipale\", null);\n__decorate([\n cacheSuivi\n], ComposanteClientDic.prototype, \"suivreSousBdDic\", null);\n__decorate([\n cacheSuivi\n], ComposanteClientDic.prototype, \"suivreSousBdListe\", null);\n__decorate([\n cacheSuivi\n], ComposanteClientDic.prototype, \"suivreIdBd\", null);\nexport class ComposanteClientListe extends ComposanteClient {\n schémaBdPrincipale;\n constructor({ client, clef, schémaBdPrincipale, }) {\n super({\n client,\n clef,\n typeBd: \"set\",\n });\n this.schémaBdPrincipale = schémaBdPrincipale;\n }\n async obtBd() {\n const id = await this.obtIdBd();\n return await this.client.ouvrirBdTypée({\n id,\n type: \"set\",\n schéma: this.schémaBdPrincipale,\n });\n }\n async suivreBdPrincipale({ idCompte, f, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.suivreIdBd({ f: fSuivreRacine, idCompte });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBdListe({\n id,\n f: fSuivreBd,\n schéma: this.schémaBdPrincipale,\n renvoyerValeur: true,\n });\n },\n });\n }\n async suivreIdBd({ f, idCompte, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n if (idCompte) {\n await fSuivreRacine(idCompte);\n return faisRien;\n }\n else {\n return await this.client.suivreIdCompte({ f: fSuivreRacine });\n }\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBd({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdCompte,\n f: async () => {\n const idBd = await this.client.obtIdBd({\n nom: this.clef,\n racine: id,\n type: \"set\",\n });\n return await fSuivreBd(idBd);\n },\n });\n },\n });\n }\n}\n__decorate([\n cacheSuivi\n], ComposanteClientListe.prototype, \"suivreBdPrincipale\", null);\n__decorate([\n cacheSuivi\n], ComposanteClientListe.prototype, \"suivreIdBd\", null);\n//# sourceMappingURL=composanteClient.js.map","import { __decorate } from \"tslib\";\nimport { schémaStructureBdNoms, } from \"./types.js\";\nimport { ignorerNonDéfinis } from \"@constl/utils-ipa\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { ComposanteClientDic } from \"./composanteClient.js\";\nimport { suivreBdDeFonction } from \"@constl/utils-ipa\";\nexport const MAX_TAILLE_IMAGE = 500 * 1000; // 500 kilooctets\nexport const MAX_TAILLE_IMAGE_VIS = 1500 * 1000; // 1,5 megaoctets\nconst schémaStructureBdProfil = {\n type: \"object\",\n properties: {\n initialisé: {\n type: \"boolean\",\n nullable: true,\n },\n image: {\n type: \"string\",\n nullable: true,\n },\n contacts: {\n type: \"string\",\n nullable: true,\n },\n noms: {\n type: \"string\",\n nullable: true,\n },\n },\n required: [],\n};\nconst schémaContactProfil = {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n contact: { type: \"string\" },\n },\n required: [\"contact\", \"type\"],\n};\nexport class Profil extends ComposanteClientDic {\n constructor({ client }) {\n super({\n client,\n clef: \"profil\",\n schémaBdPrincipale: schémaStructureBdProfil,\n });\n }\n async épingler() {\n const idBdProfil = await this.obtIdBd();\n await this.client.épingles.épinglerBd({\n id: idBdProfil,\n récursif: true,\n fichiers: true,\n });\n }\n async initialiser() {\n const idBdProfil = await this.obtIdBd();\n const { bd: bdProfil, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdProfil,\n type: \"keyvalue\",\n schéma: schémaStructureBdProfil,\n });\n await bdProfil.set(\"initialisé\", true);\n await fOublier();\n }\n async suivreInitialisé({ f, idCompte, }) {\n return await this.suivreBdPrincipale({\n idCompte,\n f: async (profil) => await f(!!profil.initialisé),\n });\n }\n async suivreCourriel({ f, idCompte, }) {\n return await this.suivreContacts({\n idCompte,\n f: async (contacts) => await f(contacts.find((c) => c.type == \"courriel\")?.contact || null),\n });\n }\n async sauvegarderCourriel({ courriel }) {\n await this.sauvegarderContact({ type: \"courriel\", contact: courriel });\n }\n async effacerCourriel() {\n await this.effacerContact({ type: \"courriel\" });\n }\n async suivreContacts({ f, idCompte, }) {\n return await this.suivreSousBdListe({\n idCompte,\n clef: \"contacts\",\n schéma: schémaContactProfil,\n f,\n });\n }\n async sauvegarderContact({ type, contact, }) {\n const idBdProfil = await this.obtIdBd();\n const idBdContacts = await this.client.obtIdBd({\n nom: \"contacts\",\n racine: idBdProfil,\n type: \"set\",\n });\n if (!idBdContacts) {\n throw new Error(`Permission de modification refusée pour BD ${idBdProfil}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdContacts,\n type: \"set\",\n schéma: schémaContactProfil,\n });\n await bd.add({ type, contact });\n await fOublier();\n }\n async effacerContact({ type, contact, }) {\n const idBdProfil = await this.obtIdBd();\n const idBdContacts = await this.client.obtIdBd({\n nom: \"contacts\",\n racine: idBdProfil,\n type: \"set\",\n });\n if (!idBdContacts) {\n throw new Error(`Permission de modification refusée pour BD ${idBdProfil}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdContacts,\n type: \"set\",\n schéma: schémaContactProfil,\n });\n const tous = await bd.all();\n const àEffacer = tous.filter((x) => x.value.type === type &&\n (contact === undefined || x.value.contact === contact));\n await Promise.all(àEffacer.map(async (c) => await bd.del(c.value)));\n await fOublier();\n }\n async suivreNoms({ f, idCompte, }) {\n return await this.suivreSousBdDic({\n idCompte,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async sauvegarderNom({ langue, nom, }) {\n return await this.sauvegarderNoms({ noms: { [langue]: nom } });\n }\n async sauvegarderNoms({ noms, }) {\n const idBdProfil = await this.obtIdBd();\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idBdProfil,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour BD ${idBdProfil}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const [langue, nom] of Object.entries(noms)) {\n await bd.set(langue, nom);\n }\n await fOublier();\n }\n async effacerNom({ langue }) {\n const idBdProfil = await this.obtIdBd();\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idBdProfil,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour BD ${idBdProfil}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bd.del(langue);\n await fOublier();\n }\n async sauvegarderImage({ image, }) {\n if (image.contenu.byteLength > MAX_TAILLE_IMAGE) {\n throw new Error(\"Taille maximale excédée\");\n }\n const idImage = await this.client.ajouterÀSFIP(image);\n const { bd, fOublier } = await this.obtBd();\n await bd.set(\"image\", idImage);\n await fOublier();\n }\n async effacerImage() {\n const { bd, fOublier } = await this.obtBd();\n await bd.del(\"image\");\n await fOublier();\n }\n async suivreImage({ f, idCompte, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.suivreIdBd({ f: fSuivreRacine, idCompte });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBd({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdProfil,\n f: async (bd) => {\n const idImage = await bd.get(\"image\");\n if (!idImage) {\n return await fSuivreBd(null);\n }\n else {\n const image = await this.client.obtFichierSFIP({\n id: idImage,\n max: MAX_TAILLE_IMAGE_VIS,\n });\n return await fSuivreBd(image);\n }\n },\n });\n },\n });\n }\n}\n__decorate([\n cacheSuivi\n], Profil.prototype, \"suivreCourriel\", null);\n__decorate([\n cacheSuivi\n], Profil.prototype, \"suivreContacts\", null);\n__decorate([\n cacheSuivi\n], Profil.prototype, \"suivreNoms\", null);\n__decorate([\n cacheSuivi\n], Profil.prototype, \"suivreImage\", null);\n//# sourceMappingURL=profil.js.map","/**\n * @packageDocumentation\n *\n * Collects all `Uint8Array` values from an (async)iterable and returns them as a single `Uint8Array`.\n *\n * @example\n *\n * ```javascript\n * import toBuffer from 'it-to-buffer'\n *\n * // This can also be an iterator, generator, etc\n * const values = [Buffer.from([0, 1]), Buffer.from([2, 3])]\n *\n * const result = toBuffer(values)\n *\n * console.info(result) // Buffer[0, 1, 2, 3]\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import toBuffer from 'it-to-buffer'\n *\n * const values = async function * () {\n * yield Buffer.from([0, 1])\n * yield Buffer.from([2, 3])\n * }\n *\n * const result = await toBuffer(values())\n *\n * console.info(result) // Buffer[0, 1, 2, 3]\n * ```\n */\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction toBuffer(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n let buffer = new Uint8Array(0);\n for await (const buf of source) {\n buffer = uint8ArrayConcat([buffer, buf], buffer.length + buf.length);\n }\n return buffer;\n })();\n }\n const bufs = [];\n let length = 0;\n for (const buf of source) {\n bufs.push(buf);\n length += buf.byteLength;\n }\n return uint8ArrayConcat(bufs, length);\n}\nexport default toBuffer;\n//# sourceMappingURL=index.js.map","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { __decorate } from \"tslib\";\nimport { utils, writeFile, write as writeXLSX } from \"xlsx\";\nimport toBuffer from \"it-to-buffer\";\nimport path from \"path\";\nimport { isBrowser, isElectronMain, isNode, isWebWorker } from \"wherearewe\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { attendreStabilité, suivreBdDeFonction, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { schémaStructureBdMétadonnées, schémaStructureBdNoms, } from \"./types.js\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nimport { traduire, zipper, uneFois, faisRien, ignorerNonDéfinis, } from \"@constl/utils-ipa\";\nimport { ComposanteClientListe } from \"./composanteClient.js\";\nimport pkg from \"file-saver\";\nconst { saveAs } = pkg;\nconst schémaStructureBdBd = {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n métadonnées: { type: \"string\", nullable: true },\n licence: { type: \"string\" },\n licenceContenu: { type: \"string\", nullable: true },\n image: { type: \"string\", nullable: true },\n noms: { type: \"string\" },\n descriptions: { type: \"string\" },\n tableaux: { type: \"string\" },\n motsClefs: { type: \"string\" },\n nuées: { type: \"string\" },\n statut: {\n type: \"object\",\n properties: {\n statut: { type: \"string\" },\n idNouvelle: { type: \"string\", nullable: true },\n },\n required: [\"statut\"],\n },\n copiéDe: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n },\n required: [\"id\"],\n },\n },\n required: [\n \"type\",\n \"licence\",\n \"noms\",\n \"descriptions\",\n \"tableaux\",\n \"motsClefs\",\n \"nuées\",\n \"statut\",\n \"copiéDe\",\n ],\n};\nexport const schémaInfoTableau = {\n type: \"object\",\n properties: {\n clef: { type: \"string\" },\n },\n required: [\"clef\"],\n};\nexport const schémaBdTableauxDeBd = {\n type: \"object\",\n additionalProperties: schémaInfoTableau,\n required: [],\n};\nconst schémaBdPrincipale = { type: \"string\" };\nconst schémaStructureBdMotsClefs = { type: \"string\" };\nconst schémaStructureBdNuées = { type: \"string\" };\nexport const MAX_TAILLE_IMAGE = 500 * 1000; // 500 kilooctets\nexport const MAX_TAILLE_IMAGE_VIS = 1500 * 1000; // 1,5 megaoctets\nexport class BDs extends ComposanteClientListe {\n verrouBdUnique;\n constructor({ client }) {\n super({ client, clef: \"bds\", schémaBdPrincipale });\n this.verrouBdUnique = new Semaphore();\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async suivreBds({ f, idCompte, }) {\n return await this.suivreBdPrincipale({ idCompte, f });\n }\n async créerBd({ licence, licenceContenu, ajouter = true, }) {\n const idBdBd = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n address: undefined,\n write: await this.client.obtIdCompte(),\n },\n });\n const { bd: bdBD, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n await bdBD.set(\"type\", \"bd\");\n await bdBD.set(\"licence\", licence);\n if (licenceContenu)\n await bdBD.set(\"licenceContenu\", licenceContenu);\n const accès = bdBD.access;\n const optionsAccès = { address: accès.address };\n const idBdMétadonnées = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdBD.set(\"métadonnées\", idBdMétadonnées);\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdBD.set(\"noms\", idBdNoms);\n const idBdDescr = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdBD.set(\"descriptions\", idBdDescr);\n const idBdTableaux = await this.client.créerBdIndépendante({\n type: \"ordered-keyvalue\",\n optionsAccès,\n });\n await bdBD.set(\"tableaux\", idBdTableaux);\n const idBdMotsClefs = await this.client.créerBdIndépendante({\n type: \"set\",\n optionsAccès,\n });\n await bdBD.set(\"motsClefs\", idBdMotsClefs);\n const idBdNuées = await this.client.créerBdIndépendante({\n type: \"set\",\n optionsAccès,\n });\n await bdBD.set(\"nuées\", idBdNuées);\n await bdBD.set(\"statut\", { statut: \"active\" });\n if (ajouter) {\n const { bd: bdRacine, fOublier: fOublierRacine } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bdRacine.add(idBdBd);\n fOublierRacine();\n }\n await fOublier();\n return idBdBd;\n }\n async ajouterÀMesBds({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bd.add(idBd);\n await fOublier();\n }\n async enleverDeMesBds({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bd.del(idBd);\n await fOublier();\n }\n async copierBd({ idBd, ajouterÀMesBds = true, copierDonnées = true, }) {\n const { bd: bdBase, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n const licence = await bdBase.get(\"licence\");\n const licenceContenu = await bdBase.get(\"licenceContenu\");\n if (!licence)\n throw new Error(`Aucune licence trouvée sur la BD source ${idBd}.`);\n const idNouvelleBd = await this.créerBd({\n licence,\n licenceContenu,\n ajouter: ajouterÀMesBds,\n });\n const { bd: nouvelleBd, fOublier: fOublierNouvelle } = await this.client.ouvrirBdTypée({\n id: idNouvelleBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n const idBdMétadonnées = await bdBase.get(\"métadonnées\");\n if (idBdMétadonnées) {\n const { bd: bdMétadonnées, fOublier: fOublierBdNoms } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n const métadonnées = await bdMétadonnées.allAsJSON();\n await fOublierBdNoms();\n await this.sauvegarderMétadonnéesBd({ idBd: idNouvelleBd, métadonnées });\n }\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierBdNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await fOublierBdNoms();\n await this.sauvegarderNomsBd({ idBd: idNouvelleBd, noms });\n }\n const idBdDescr = await bdBase.get(\"descriptions\");\n if (idBdDescr) {\n const { bd: bdDescr, fOublier: fOublierBdDescr } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const descriptions = await bdDescr.allAsJSON();\n await fOublierBdDescr();\n await this.sauvegarderDescriptionsBd({\n idBd: idNouvelleBd,\n descriptions,\n });\n }\n const idBdMotsClefs = await bdBase.get(\"motsClefs\");\n if (idBdMotsClefs) {\n const { bd: bdMotsClefs, fOublier: fOublierBdMotsClefs } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaStructureBdMotsClefs,\n });\n const motsClefs = (await bdMotsClefs.all()).map((x) => x.value);\n await fOublierBdMotsClefs();\n await this.ajouterMotsClefsBd({\n idBd: idNouvelleBd,\n idsMotsClefs: motsClefs,\n });\n }\n const idBdNuées = await bdBase.get(\"nuées\");\n if (idBdNuées) {\n const { bd: bdNuées, fOublier: fOublierBdNuées } = await this.client.ouvrirBdTypée({\n id: idBdNuées,\n type: \"set\",\n schéma: schémaStructureBdNuées,\n });\n const nuées = (await bdNuées.all()).map((x) => x.value);\n await fOublierBdNuées();\n await this.rejoindreNuées({\n idBd: idNouvelleBd,\n idsNuées: nuées,\n });\n }\n const idBdTableaux = await bdBase.get(\"tableaux\");\n const idNouvelleBdTableaux = await nouvelleBd.get(\"tableaux\");\n if (!idNouvelleBdTableaux)\n throw new Error(\"Erreur d'initialisation.\");\n const { bd: nouvelleBdTableaux, fOublier: fOublierNouvelleTableaux } = await this.client.ouvrirBdTypée({\n id: idNouvelleBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n if (idBdTableaux) {\n const { bd: bdTableaux, fOublier: fOublierBdTableaux } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const tableaux = await bdTableaux.all();\n await fOublierBdTableaux();\n for (const { key: idTableau, value: tableau } of tableaux) {\n const idNouveauTableau = await this.client.tableaux.copierTableau({\n id: idTableau,\n idBd: idNouvelleBd,\n copierDonnées,\n });\n await nouvelleBdTableaux.set(idNouveauTableau, tableau);\n }\n }\n const statut = (await bdBase.get(\"statut\")) || {\n statut: \"active\",\n };\n await nouvelleBd.set(\"statut\", statut);\n const image = await bdBase.get(\"image\");\n if (image)\n await nouvelleBd.set(\"image\", image);\n await nouvelleBd.set(\"copiéDe\", { id: idBd });\n await Promise.all([\n fOublier(),\n fOublierNouvelleTableaux(),\n fOublierNouvelle(),\n ]);\n return idNouvelleBd;\n }\n async créerBdDeSchéma({ schéma, }) {\n const { tableaux, motsClefs, nuées, licence, licenceContenu, statut } = schéma;\n // On n'ajoutera la BD que lorsqu'elle sera prête\n const idBd = await this.créerBd({\n licence,\n licenceContenu,\n ajouter: false,\n });\n if (motsClefs) {\n await this.ajouterMotsClefsBd({ idBd, idsMotsClefs: motsClefs });\n }\n if (nuées) {\n await this.rejoindreNuées({ idBd, idsNuées: nuées });\n }\n if (statut) {\n await this.changerStatutBd({ idBd, statut });\n }\n for (const tb of tableaux) {\n const { cols, clef: clefTableau } = tb;\n const idTableau = await this.ajouterTableauBd({ idBd, clefTableau });\n for (const c of cols) {\n const { idColonne, idVariable, index, optionnelle } = c;\n await this.client.tableaux.ajouterColonneTableau({\n idTableau,\n idVariable,\n idColonne,\n });\n if (index) {\n await this.client.tableaux.changerColIndex({\n idTableau,\n idColonne,\n val: true,\n });\n }\n if (!optionnelle) {\n const règle = {\n typeRègle: \"existe\",\n détails: {},\n };\n await this.client.tableaux.ajouterRègleTableau({\n idTableau,\n idColonne,\n règle,\n });\n }\n }\n }\n // Maintenant on peut l'annoncer !\n await this.ajouterÀMesBds({ idBd });\n return idBd;\n }\n async suivreParent({ idBd, f, }) {\n return await this.client.suivreBd({\n id: idBd,\n f: async (bd) => {\n const copiéDe = await bd.get(\"copiéDe\");\n await f(copiéDe);\n },\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n }\n async suivreNuéesBd({ idBd, f, }) {\n return await this.client.suivreBdListeDeClef({\n id: idBd,\n clef: \"nuées\",\n schéma: { type: \"string\" },\n f,\n });\n }\n async rechercherBdsParMotsClefs({ motsClefs, f, idCompte, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBds({ f: fSuivreRacine, idCompte });\n };\n const fCondition = async (id, fSuivreCondition) => {\n const fFinaleSuivreCondition = (motsClefsBd) => {\n const état = motsClefs.every((m) => motsClefsBd.includes(m));\n fSuivreCondition(état);\n };\n return await this.suivreMotsClefsBd({\n idBd: id,\n f: fFinaleSuivreCondition,\n });\n };\n return await this.client.suivreBdsSelonCondition({ fListe, fCondition, f });\n }\n async rechercherBdsParNuée({ idNuée, f, idCompte, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBds({ f: fSuivreRacine, idCompte });\n };\n const fCondition = async (id, fSuivreCondition) => {\n const fFinaleSuivreCondition = async (nuéesBd) => {\n fSuivreCondition(!!nuéesBd && nuéesBd.includes(idNuée));\n };\n return await this.suivreNuéesBd({\n idBd: id,\n f: fFinaleSuivreCondition,\n });\n };\n return await this.client.suivreBdsSelonCondition({ fListe, fCondition, f });\n }\n async combinerBds({ idBdBase, idBd2, }) {\n const obtTableaux = async (idBd) => {\n return await uneFois(async (fSuivi) => {\n return await this.suivreTableauxBd({ idBd, f: fSuivi });\n });\n };\n const tableauxBase = await obtTableaux(idBdBase);\n const tableauxBd2 = await obtTableaux(idBd2);\n for (const info of tableauxBd2) {\n const { id: idTableau, clef } = info;\n if (clef) {\n const idTableauBaseCorresp = tableauxBase.find((t) => t.clef === clef)?.id;\n if (idTableauBaseCorresp) {\n await this.client.tableaux.combinerDonnées({\n idTableauBase: idTableauBaseCorresp,\n idTableau2: idTableau,\n });\n }\n }\n }\n }\n async suivreIdTableauParClef({ idBd, clef, f, }) {\n const fFinale = async (tableaux) => {\n const infoTableau = tableaux.find((t) => t.clef === clef);\n await f(infoTableau?.id);\n };\n return await this.suivreTableauxBd({ idBd, f: fFinale });\n }\n async suivreBdUnique({ schéma, idNuéeUnique, f, }) {\n const clefStockageLocal = \"bdUnique: \" + idNuéeUnique;\n const déjàCombinées = new Set();\n const fFinale = async (bds) => {\n let idBd;\n await this.verrouBdUnique.acquire(idNuéeUnique);\n const idBdLocale = await this.client.obtDeStockageLocal({\n clef: clefStockageLocal,\n });\n switch (bds.length) {\n case 0: {\n if (idBdLocale) {\n idBd = idBdLocale;\n }\n else {\n idBd = await this.créerBdDeSchéma({ schéma });\n await this.client.sauvegarderAuStockageLocal({\n clef: clefStockageLocal,\n val: idBd,\n });\n }\n break;\n }\n case 1: {\n idBd = bds[0];\n await this.client.sauvegarderAuStockageLocal({\n clef: clefStockageLocal,\n val: idBd,\n });\n if (idBdLocale && idBd !== idBdLocale) {\n await this.combinerBds({ idBdBase: idBd, idBd2: idBdLocale });\n await this.effacerBd({ idBd: idBdLocale });\n }\n break;\n }\n default: {\n if (idBdLocale)\n bds = [...new Set([...bds, idBdLocale])];\n idBd = bds.sort()[0];\n await this.client.sauvegarderAuStockageLocal({\n clef: clefStockageLocal,\n val: idBd,\n });\n for (const bd of bds.slice(1)) {\n if (déjàCombinées.has(bd))\n continue;\n déjàCombinées.add(bd);\n await this.combinerBds({ idBdBase: idBd, idBd2: bd });\n await this.effacerBd({ idBd: bd });\n }\n break;\n }\n }\n this.verrouBdUnique.release(idNuéeUnique);\n await f(idBd);\n };\n const fOublier = await this.rechercherBdsParNuée({\n idNuée: idNuéeUnique,\n f: fFinale,\n });\n return fOublier;\n }\n async suivreIdTableauParClefDeBdUnique({ schémaBd, idNuéeUnique, clefTableau, f, }) {\n const fRacine = async ({ fSuivreRacine, }) => {\n return await this.suivreBdUnique({\n schéma: schémaBd,\n idNuéeUnique,\n f: fSuivreRacine,\n });\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreIdTableauParClef({\n idBd: id,\n clef: clefTableau,\n f: fSuivreBd,\n });\n };\n return await suivreBdDeFonction({\n fRacine,\n f,\n fSuivre,\n });\n }\n async suivreDonnéesDeTableauUnique({ schémaBd, idNuéeUnique, clefTableau, f, }) {\n const fFinale = async (données) => {\n return await f(données || []);\n };\n const fSuivreDonnéesDeTableau = async ({ id, fSuivreBd, }) => {\n return await this.client.tableaux.suivreDonnées({\n idTableau: id,\n f: fSuivreBd,\n });\n };\n const fSuivreTableau = async ({ fSuivreRacine, }) => {\n return await this.suivreIdTableauParClefDeBdUnique({\n schémaBd,\n idNuéeUnique,\n clefTableau,\n f: async (idTableau) => {\n if (idTableau)\n await fSuivreRacine(idTableau);\n },\n });\n };\n return await suivreBdDeFonction({\n fRacine: fSuivreTableau,\n f: fFinale,\n fSuivre: fSuivreDonnéesDeTableau,\n });\n }\n async ajouterÉlémentÀTableauUnique({ schémaBd, idNuéeUnique, clefTableau, vals, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClefDeBdUnique({\n schémaBd,\n idNuéeUnique,\n clefTableau,\n f: ignorerNonDéfinis(fSuivi),\n });\n });\n return await this.client.tableaux.ajouterÉlément({\n idTableau: idTableau,\n vals,\n });\n }\n async modifierÉlémentDeTableauUnique({ vals, schémaBd, idNuéeUnique, clefTableau, idÉlément, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClefDeBdUnique({\n schémaBd,\n idNuéeUnique,\n clefTableau,\n f: (id) => {\n if (id)\n fSuivi(id);\n },\n });\n }, (x) => !!x);\n return await this.client.tableaux.modifierÉlément({\n idTableau: idTableau,\n vals,\n idÉlément,\n });\n }\n async effacerÉlémentDeTableauUnique({ schémaBd, idNuéeUnique, clefTableau, idÉlément, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClefDeBdUnique({\n schémaBd,\n idNuéeUnique,\n clefTableau,\n f: (id) => {\n if (id)\n fSuivi(id);\n },\n });\n }, (x) => !!x);\n return await this.client.tableaux.effacerÉlément({\n idTableau: idTableau,\n idÉlément,\n });\n }\n async suivreDonnéesDeTableauParClef({ idBd, clefTableau, f, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClef({\n idBd,\n clef: clefTableau,\n f: ignorerNonDéfinis(fSuivi),\n });\n }, (x) => !!x);\n return await this.client.tableaux.suivreDonnées({\n idTableau,\n f,\n });\n }\n async ajouterÉlémentÀTableauParClef({ idBd, clefTableau, vals, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClef({\n idBd,\n clef: clefTableau,\n f: ignorerNonDéfinis(fSuivi),\n });\n });\n return await this.client.tableaux.ajouterÉlément({\n idTableau,\n vals,\n });\n }\n async modifierÉlémentDeTableauParClef({ idBd, clefTableau, idÉlément, vals, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClef({\n idBd,\n clef: clefTableau,\n f: ignorerNonDéfinis(fSuivi),\n });\n });\n return await this.client.tableaux.modifierÉlément({\n idTableau,\n vals,\n idÉlément,\n });\n }\n async effacerÉlémentDeTableauParClef({ idBd, clefTableau, idÉlément, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClef({\n idBd,\n clef: clefTableau,\n f: ignorerNonDéfinis(fSuivi),\n });\n });\n this.client.tableaux.effacerÉlément({\n idTableau,\n idÉlément,\n });\n }\n async sauvegarderMétadonnéesBd({ idBd, métadonnées, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n for (const clef in métadonnées) {\n await bdMétadonnées.set(clef, métadonnées[clef]);\n }\n await fOublier();\n }\n async sauvegarderMétadonnéeBd({ idBd, clef, métadonnée, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n await bdMétadonnées.set(clef, métadonnée);\n await fOublier();\n }\n async effacerMétadonnéeBd({ idBd, clef, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n await bdMétadonnées.del(clef);\n await fOublier();\n }\n async suivreMétadonnéesBd({ idBd, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idBd,\n clef: \"métadonnées\",\n schéma: schémaStructureBdMétadonnées,\n f,\n });\n }\n async sauvegarderNomsBd({ idBd, noms, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async sauvegarderNomBd({ idBd, langue, nom, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async effacerNomBd({ idBd, langue, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.del(langue);\n await fOublier();\n }\n async sauvegarderDescriptionsBd({ idBd, descriptions, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in descriptions) {\n await bdDescr.set(lng, descriptions[lng]);\n }\n await fOublier();\n }\n async sauvegarderDescriptionBd({ idBd, langue, description, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.set(langue, description);\n await fOublier();\n }\n async effacerDescriptionBd({ idBd, langue, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.del(langue);\n await fOublier();\n }\n async changerLicenceBd({ idBd, licence, }) {\n const { bd: bdBd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n await bdBd.set(\"licence\", licence);\n await fOublier();\n }\n async changerLicenceContenuBd({ idBd, licenceContenu, }) {\n const { bd: bdBd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n if (licenceContenu) {\n await bdBd.set(\"licenceContenu\", licenceContenu);\n }\n else {\n await bdBd.del(\"licenceContenu\");\n }\n await fOublier();\n }\n async ajouterMotsClefsBd({ idBd, idsMotsClefs, }) {\n if (!Array.isArray(idsMotsClefs))\n idsMotsClefs = [idsMotsClefs];\n const idBdMotsClefs = await this.client.obtIdBd({\n nom: \"motsClefs\",\n racine: idBd,\n type: \"set\",\n });\n if (!idBdMotsClefs) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdMotsClefs, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaStructureBdMotsClefs,\n });\n for (const id of idsMotsClefs) {\n const motsClefsExistants = (await bdMotsClefs.all()).map((x) => x.value);\n if (!motsClefsExistants.includes(id))\n await bdMotsClefs.add(id);\n }\n await fOublier();\n }\n async effacerMotClefBd({ idBd, idMotClef, }) {\n const idBdMotsClefs = await this.client.obtIdBd({\n nom: \"motsClefs\",\n racine: idBd,\n type: \"set\",\n });\n if (!idBdMotsClefs) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdMotsClefs, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaStructureBdMotsClefs,\n });\n await bdMotsClefs.del(idMotClef);\n await fOublier();\n }\n async rejoindreNuées({ idBd, idsNuées, }) {\n if (!Array.isArray(idsNuées))\n idsNuées = [idsNuées];\n const idBdNuées = await this.client.obtIdBd({\n nom: \"nuées\",\n racine: idBd,\n type: \"set\",\n });\n if (!idBdNuées) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdNuées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNuées,\n type: \"set\",\n schéma: schémaStructureBdNuées,\n });\n for (const id of idsNuées) {\n const nuéesExistantes = (await bdNuées.all()).map((x) => x.value);\n if (!nuéesExistantes.includes(id))\n await bdNuées.add(id);\n }\n await fOublier();\n }\n async quitterNuée({ idBd, idNuée, }) {\n const idBdNuées = await this.client.obtIdBd({\n nom: \"nuée\",\n racine: idBd,\n type: \"set\",\n });\n if (!idBdNuées) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdNuées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNuées,\n type: \"set\",\n schéma: schémaStructureBdNuées,\n });\n await bdNuées.del(idNuée);\n await fOublier();\n }\n async ajouterTableauBd({ idBd, clefTableau, }) {\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idBd,\n type: \"ordered-keyvalue\",\n });\n if (!idBdTableaux) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdTableaux, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n clefTableau = clefTableau || uuidv4();\n const idTableau = await this.client.tableaux.créerTableau({ idBd });\n await bdTableaux.set(idTableau, {\n clef: clefTableau,\n });\n await fOublier();\n return idTableau;\n }\n async effacerTableauBd({ idBd, idTableau, }) {\n // D'abord effacer l'entrée dans notre liste de tableaux\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idBd,\n type: \"ordered-keyvalue\",\n });\n if (!idBdTableaux) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdTableaux, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n await bdTableaux.del(idTableau);\n await fOublier();\n // Enfin, effacer les données et le tableau lui-même\n await this.client.tableaux.effacerTableau({ idTableau });\n }\n async spécifierClefTableau({ idBd, idTableau, clef, }) {\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idBd,\n type: \"ordered-keyvalue\",\n });\n if (!idBdTableaux)\n throw new Error(\"Id Bd Tableau non obtenable.\");\n const { bd: bdTableaux, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const infoExistante = await bdTableaux.get(idTableau);\n if (infoExistante) {\n infoExistante.value.clef = clef;\n bdTableaux.set(idTableau, infoExistante.value);\n }\n await fOublier();\n }\n async changerStatutBd({ idBd, statut, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n bd.set(\"statut\", statut);\n await fOublier();\n }\n async suivreStatutBd({ idBd, f, }) {\n return await this.client.suivreBdDic({\n id: idBd,\n schéma: schémaStructureBdBd,\n f: async (x) => {\n if (x[\"statut\"])\n return await f(x[\"statut\"]);\n },\n });\n }\n async marquerObsolète({ idBd, idNouvelle, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n bd.set(\"statut\", { statut: \"obsolète\", idNouvelle });\n await fOublier();\n }\n async marquerActive({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n bd.set(\"statut\", { statut: \"active\" });\n await fOublier();\n }\n async marquerJouet({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n bd.set(\"statut\", { statut: \"jouet\" });\n await fOublier();\n }\n async marquerInterne({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n bd.set(\"statut\", { statut: \"interne\" });\n await fOublier();\n }\n async suivreLicenceBd({ idBd, f, }) {\n return await this.client.suivreBd({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n f: async (bd) => {\n const licence = await bd.get(\"licence\");\n if (licence)\n await f(licence);\n },\n });\n }\n async suivreLicenceContenuBd({ idBd, f, }) {\n return await this.client.suivreBd({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n f: async (bd) => {\n const licenceContenu = await bd.get(\"licenceContenu\");\n await f(licenceContenu);\n },\n });\n }\n async inviterAuteur({ idBd, idCompteAuteur, rôle, }) {\n await this.client.donnerAccès({ idBd, identité: idCompteAuteur, rôle });\n }\n async sauvegarderImage({ idBd, image, }) {\n if (image.contenu.byteLength > MAX_TAILLE_IMAGE) {\n throw new Error(\"Taille maximale excédée\");\n }\n const idImage = await this.client.ajouterÀSFIP(image);\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n await bd.set(\"image\", idImage);\n await fOublier();\n }\n async effacerImage({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n await bd.del(\"image\");\n await fOublier();\n }\n async suivreImage({ idBd, f, }) {\n return await this.client.suivreBd({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n f: async (bd) => {\n const idImage = await bd.get(\"image\");\n if (!idImage) {\n await f(null);\n }\n else {\n const image = await this.client.obtFichierSFIP({\n id: idImage,\n max: MAX_TAILLE_IMAGE_VIS,\n });\n await f(image);\n }\n },\n });\n }\n async suivreNomsBd({ idBd, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idBd,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreDescriptionsBd({ idBd, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idBd,\n clef: \"descriptions\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreMotsClefsBd({ idBd, f, }) {\n return await this.client.suivreBdListeDeClef({\n id: idBd,\n clef: \"motsClefs\",\n schéma: { type: \"string\" },\n f,\n });\n }\n async suivreTableauxBd({ idBd, f, }) {\n const fFinale = async (infos) => {\n const tableaux = infos.map((info) => {\n return {\n id: info.key,\n ...info.value,\n };\n });\n await f(tableaux);\n };\n return await this.client.suivreBdDicOrdonnéeDeClef({\n id: idBd,\n clef: \"tableaux\",\n schéma: schémaBdTableauxDeBd,\n f: fFinale,\n });\n }\n async suivreScoreAccèsBd({ idBd, f, }) {\n // À faire\n f(Number.parseInt(idBd));\n return faisRien;\n }\n async suivreScoreCouvertureBd({ idBd, f, }) {\n const fFinale = async (branches) => {\n const numérateur = branches.reduce((a, b) => a + b.numérateur, 0);\n const dénominateur = branches.reduce((a, b) => a + b.dénominateur, 0);\n await f(dénominateur === 0 ? undefined : numérateur / dénominateur);\n };\n const fBranche = async (idTableau, f) => {\n const info = {};\n const fFinaleBranche = async () => {\n const { cols, règles } = info;\n if (cols !== undefined && règles !== undefined) {\n const colsÉligibles = cols.filter((c) => c.catégorie &&\n [\"numérique\", \"catégorique\"].includes(c.catégorie.catégorie));\n const dénominateur = colsÉligibles.length;\n const numérateur = colsÉligibles.filter((c) => règles.some((r) => r.règle.règle.typeRègle !== \"catégorie\" && r.colonne === c.id)).length;\n await f({ numérateur, dénominateur });\n }\n };\n const fOublierCols = await this.client.tableaux.suivreColonnesTableau({\n idTableau,\n f: async (cols) => {\n info.cols = cols;\n await fFinaleBranche();\n },\n catégories: true,\n });\n const fOublierRègles = await this.client.tableaux.suivreRègles({\n idTableau,\n f: async (règles) => {\n info.règles = règles;\n await fFinaleBranche();\n },\n });\n return async () => {\n await fOublierCols();\n await fOublierRègles();\n };\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreTableauxBd({\n idBd,\n f: (tableaux) => fSuivreRacine(tableaux.map((x) => x.id)),\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreScoreValideBd({ idBd, f, }) {\n const fFinale = async (branches) => {\n const numérateur = branches.reduce((a, b) => a + b.numérateur, 0);\n const dénominateur = branches.reduce((a, b) => a + b.dénominateur, 0);\n await f(dénominateur === 0 ? undefined : numérateur / dénominateur);\n };\n const fBranche = async (idTableau, f) => {\n const info = {};\n const fFinaleBranche = () => {\n const { données, erreurs, cols } = info;\n if (données !== undefined &&\n erreurs !== undefined &&\n cols !== undefined) {\n const colsÉligibles = cols.filter((c) => c.catégorie &&\n [\"numérique\", \"catégorique\"].includes(c.catégorie.catégorie));\n const déjàVus = [];\n const nCellulesÉrronnées = erreurs\n .map((e) => {\n return {\n id: e.id,\n idColonne: e.erreur.règle.colonne,\n };\n })\n .filter((x) => {\n const déjàVu = déjàVus.find((y) => y.id === x.id && y.idColonne === x.idColonne);\n if (déjàVu) {\n return false;\n }\n else {\n déjàVus.push(x);\n return true;\n }\n }).length;\n const dénominateur = données\n .map((d) => colsÉligibles.filter((c) => d.données[c.id] !== undefined)\n .length)\n .reduce((a, b) => a + b, 0);\n const numérateur = dénominateur - nCellulesÉrronnées;\n f({ numérateur, dénominateur });\n }\n };\n const fOublierDonnées = await this.client.tableaux.suivreDonnées({\n idTableau,\n f: (données) => {\n info.données = données;\n fFinaleBranche();\n },\n });\n const fOublierErreurs = await this.client.tableaux.suivreValidDonnées({\n idTableau,\n f: (erreurs) => {\n info.erreurs = erreurs;\n fFinaleBranche();\n },\n });\n const fOublierColonnes = await this.client.tableaux.suivreColonnesTableau({\n idTableau,\n f: (cols) => {\n info.cols = cols;\n fFinaleBranche();\n },\n catégories: true,\n });\n return async () => {\n await fOublierDonnées();\n await fOublierErreurs();\n await fOublierColonnes();\n };\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreTableauxBd({\n idBd,\n f: (tableaux) => fSuivreRacine(tableaux.map((t) => t.id)),\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreQualitéBd({ idBd, f, }) {\n const info = {};\n const fFinale = async () => {\n const { accès, couverture, valide, licence } = info;\n const score = {\n // Score impitoyable de 0 pour BDs sans licence\n total: licence\n ? ((accès || 0) + (couverture || 0) + (valide || 0)) / 3\n : 0,\n accès,\n couverture,\n valide,\n licence,\n };\n await f(score);\n };\n const oublierAccès = await this.suivreScoreAccèsBd({\n idBd,\n f: async (accès) => {\n info.accès = accès;\n await fFinale();\n },\n });\n const oublierCouverture = await this.suivreScoreCouvertureBd({\n idBd,\n f: async (couverture) => {\n info.couverture = couverture;\n await fFinale();\n },\n });\n const oublierValide = await this.suivreScoreValideBd({\n idBd,\n f: async (valide) => {\n info.valide = valide;\n await fFinale();\n },\n });\n const oublierLicence = await this.suivreLicenceBd({\n idBd,\n f: async (licence) => {\n info.licence = licence ? 1 : 0;\n await fFinale();\n },\n });\n return async () => {\n await Promise.all([\n oublierAccès,\n oublierCouverture,\n oublierValide,\n oublierLicence,\n ]);\n };\n }\n async suivreVariablesBd({ idBd, f, }) {\n const fFinale = async (variables) => {\n return await f(variables || []);\n };\n const fBranche = async (id, f) => {\n return await this.client.tableaux.suivreVariables({ idTableau: id, f });\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreTableauxBd({\n idBd,\n f: (x) => fSuivreRacine(x.map((x) => x.id)),\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreDonnéesExportation({ idBd, langues, f, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n const { nomsBd, données } = info;\n if (!données)\n return;\n const idCourt = idBd.split(\"/\").pop();\n const nomBd = nomsBd && langues ? traduire(nomsBd, langues) || idCourt : idCourt;\n await f({\n nomBd,\n tableaux: données,\n });\n };\n const fOublierDonnées = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.suivreTableauxBd({ idBd, f: fSuivreRacine });\n },\n f: async (données) => {\n info.données = données;\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.client.tableaux.suivreDonnéesExportation({\n idTableau: id,\n langues,\n f: async (données) => {\n return await fSuivreBranche(données);\n },\n });\n },\n fIdBdDeBranche: (x) => x.id,\n fCode: (x) => x.id,\n });\n fsOublier.push(fOublierDonnées);\n if (langues) {\n const fOublierNomsBd = await this.suivreNomsBd({\n idBd,\n f: async (noms) => {\n info.nomsBd = noms;\n await fFinale();\n },\n });\n fsOublier.push(fOublierNomsBd);\n }\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n }\n async exporterDonnées({ idBd, langues, nomFichier, patience = 500, }) {\n const doc = utils.book_new();\n const données = await uneFois(async (fSuivi) => {\n return await this.suivreDonnéesExportation({\n idBd,\n langues,\n f: fSuivi,\n });\n }, attendreStabilité(patience));\n nomFichier = nomFichier || données.nomBd;\n const fichiersSFIP = new Set();\n for (const tableau of données.tableaux) {\n tableau.fichiersSFIP.forEach((x) => fichiersSFIP.add(x));\n /* Créer le tableau */\n const tableauXLSX = utils.json_to_sheet(tableau.données);\n /* Ajouter la feuille au document. XLSX n'accepte pas les noms de colonne > 31 caractères */\n utils.book_append_sheet(doc, tableauXLSX, tableau.nomTableau.slice(0, 30));\n }\n return { doc, fichiersSFIP, nomFichier };\n }\n async exporterDocumentDonnées({ données, formatDoc, dossier = \"\", inclureFichiersSFIP = true, }) {\n const { doc, fichiersSFIP, nomFichier } = données;\n const conversionsTypes = {\n xls: \"biff8\",\n };\n const bookType = conversionsTypes[formatDoc] || formatDoc;\n // Créer le dossier si nécessaire. Sinon, xlsx n'écrit rien, et ce, sans se plaindre.\n if (!(isBrowser || isWebWorker)) {\n const fs = await import(\"fs\");\n if (!fs.existsSync(dossier)) {\n // Mais juste si on n'est pas dans le navigateur ! Dans le navigateur, ça télécharge sans problème.\n fs.mkdirSync(dossier, { recursive: true });\n }\n }\n if (inclureFichiersSFIP) {\n const fichierDoc = {\n octets: writeXLSX(doc, { bookType, type: \"buffer\" }),\n nom: `${nomFichier}.${formatDoc}`,\n };\n const fichiersDeSFIP = await Promise.all([...fichiersSFIP].map(async (fichier) => {\n return {\n nom: fichier.replace(\"/\", \"-\"),\n octets: await toBuffer(await this.client.obtItérableAsyncSFIP({ id: fichier })),\n };\n }));\n await zipper([fichierDoc], fichiersDeSFIP, path.join(dossier, nomFichier));\n return path.join(dossier, `${nomFichier}.zip`);\n }\n else {\n if (isNode || isElectronMain) {\n writeFile(doc, path.join(dossier, `${nomFichier}.${formatDoc}`), {\n bookType,\n });\n }\n else {\n const document = writeXLSX(doc, {\n bookType,\n type: \"buffer\",\n });\n saveAs(new Blob([new Uint8Array(document)]), `${nomFichier}.${formatDoc}`);\n }\n return path.join(dossier, `${nomFichier}.${formatDoc}`);\n }\n }\n async effacerBd({ idBd }) {\n // D'abord effacer l'entrée dans notre liste de BDs\n const { bd: bdRacine, fOublier } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bdRacine.del(idBd);\n await fOublier();\n // Et puis maintenant aussi effacer les données et la BD elle-même\n for (const clef of [\"noms\", \"descriptions\", \"motsClefs\"]) {\n const idSousBd = await this.client.obtIdBd({\n nom: clef,\n racine: idBd,\n });\n if (idSousBd)\n await this.client.effacerBd({ id: idSousBd });\n }\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idBd,\n type: \"ordered-keyvalue\",\n });\n if (idBdTableaux) {\n const { bd: bdTableaux, fOublier: fOublierTableaux } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const tableaux = Object.keys(bdTableaux.all);\n for (const t of tableaux) {\n await this.client.tableaux.effacerTableau({ idTableau: t });\n }\n fOublierTableaux();\n await this.client.effacerBd({ id: idBdTableaux });\n }\n await this.enleverDeMesBds({ idBd });\n await this.client.effacerBd({ id: idBd });\n }\n}\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreBds\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreParent\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreNu\\u00E9esBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"rechercherBdsParMotsClefs\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"rechercherBdsParNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreIdTableauParClef\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreBdUnique\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreIdTableauParClefDeBdUnique\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreDonn\\u00E9esDeTableauUnique\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreDonn\\u00E9esDeTableauParClef\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreM\\u00E9tadonn\\u00E9esBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreLicenceBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreLicenceContenuBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreImage\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreNomsBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreDescriptionsBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreMotsClefsBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreTableauxBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreScoreAcc\\u00E8sBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreScoreCouvertureBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreScoreValideBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreQualit\\u00E9Bd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreVariablesBd\", null);\n//# sourceMappingURL=bds.js.map","import { validerCatégorieVal } from \"@constl/utils-ipa\";\nexport function générerFonctionRègle({ règle, varsÀColonnes, donnéesCatégorie, }) {\n const règleDeLaVariable = règle.règle;\n const { colonne } = règle;\n const { typeRègle } = règleDeLaVariable.règle;\n switch (typeRègle) {\n case \"existe\": {\n return (vals) => {\n const nonValides = vals.filter((v) => v.données[colonne] === undefined);\n return nonValides.map((v) => {\n const { id } = v;\n const erreur = {\n id,\n erreur: { règle },\n };\n return erreur;\n });\n };\n }\n case \"catégorie\": {\n return (vals) => {\n const catégorie = règleDeLaVariable.règle.détails\n .catégorie;\n const nonValides = vals.filter((v) => !validerCatégorieVal({ val: v.données[colonne], catégorie }));\n return nonValides.map((v) => {\n const { id } = v;\n const erreur = {\n id,\n erreur: { règle },\n };\n return erreur;\n });\n };\n }\n case \"bornes\": {\n const règleTypeBornes = règleDeLaVariable;\n let fComp;\n let fOp;\n const { val, op, type: typeBornes } = règleTypeBornes.règle.détails;\n const manquantes = (v1, v2) => {\n return v1 === undefined || v2 === undefined;\n };\n switch (op) {\n case \">\":\n fOp = (v1, v2) => manquantes(v1, v2) || v1 > v2;\n break;\n case \"<\":\n fOp = (v1, v2) => manquantes(v1, v2) || v1 < v2;\n break;\n case \"≥\":\n case \">=\":\n fOp = (v1, v2) => manquantes(v1, v2) || v1 >= v2;\n break;\n case \"≤\":\n case \"<=\":\n fOp = (v1, v2) => manquantes(v1, v2) || v1 <= v2;\n break;\n }\n if (typeBornes === \"fixe\") {\n fComp = (v) => {\n const donnéesCol = v.données[colonne];\n return Array.isArray(donnéesCol)\n ? donnéesCol.every((x) => fOp(x, val))\n : fOp(donnéesCol, val);\n };\n }\n else {\n fComp = (v) => {\n const donnéesCol = v.données[colonne];\n // Vérifier s'il s'agit d'une variable ou d'une colonne et s'ajuster en fonction\n const borne = (typeBornes === \"dynamiqueVariable\"\n ? v.données[varsÀColonnes[val]]\n : v.données[val]);\n return Array.isArray(donnéesCol)\n ? donnéesCol.every((x) => fOp(x, borne))\n : fOp(donnéesCol, borne);\n };\n }\n return (vals) => {\n const nonValides = vals.filter((v) => !validerBorneVal({ val: v, fComp }));\n return nonValides.map((v) => {\n const { id } = v;\n const erreur = {\n id,\n erreur: { règle },\n };\n return erreur;\n });\n };\n }\n case \"valeurCatégorique\": {\n const règleTypeCatégorique = règleDeLaVariable.règle;\n const options = règleTypeCatégorique.détails.type === \"fixe\"\n ? règleTypeCatégorique.détails.options\n : donnéesCatégorie;\n if (!options)\n throw new Error(\"Options non spécifiées\");\n return (vals) => {\n const nonValides = vals.filter((v) => v.données[colonne] !== undefined &&\n !options.includes(v.données[colonne]));\n return nonValides.map((v) => {\n const { id } = v;\n return {\n id,\n colonne,\n erreur: { règle },\n };\n });\n };\n }\n default:\n throw Error(`Catégorie ${typeRègle} inconnue.`);\n }\n}\nconst validerBorneVal = ({ val, fComp, }) => {\n if (Array.isArray(val)) {\n return val.every((v) => fComp(v));\n }\n else {\n return fComp(val);\n }\n};\n//# sourceMappingURL=valid.js.map","export const estSpécificationHoroDatage = (val) => {\n return (!!val &&\n typeof val.système === \"string\" &&\n typeof val.val === \"string\");\n};\nexport class Cholqij {\n lireDate(date) {\n const { système, val } = date;\n switch (système) {\n case \"dateJS\":\n case \"grégorien\": {\n const date_ = new Date(val);\n if (isNaN(date_.valueOf()))\n throw new Error(val);\n return date_;\n }\n default:\n throw new Error(système);\n }\n }\n dateValide(val) {\n if (!estSpécificationHoroDatage(val))\n return false;\n try {\n this.lireDate(val);\n return true;\n }\n catch {\n return false;\n }\n }\n}\nexport const cholqij = new Cholqij();\n//# sourceMappingURL=dates.js.map","import { __decorate } from \"tslib\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { utils } from \"xlsx\";\nimport { schémaStructureBdNoms, } from \"./types.js\";\nimport { uneFois, faisRien, traduire, attendreStabilité, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { générerFonctionRègle, } from \"./valid.js\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { cholqij } from \"./dates.js\";\nimport { isElectronMain, isNode } from \"wherearewe\";\nimport { isValidAddress } from \"@orbitdb/core\";\nimport { cidEtFichierValide } from \"./epingles.js\";\nimport axios from \"axios\";\nimport md5 from \"crypto-js/md5.js\";\nimport Base64 from \"crypto-js/enc-base64.js\";\nconst schémaBdInfoColAvecCatégorie = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n properties: {\n catégorie: {\n type: \"object\",\n nullable: true,\n properties: {\n catégorie: { type: \"string\" },\n type: { type: \"string\" },\n },\n required: [\"catégorie\", \"type\"],\n },\n id: { type: \"string\" },\n variable: {\n type: \"string\",\n },\n index: {\n type: \"boolean\",\n nullable: true,\n },\n },\n required: [\"id\", \"variable\"],\n },\n required: [],\n};\nconst schémaBdDonnéesTableau = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n additionalProperties: true,\n required: [],\n },\n required: [],\n};\nexport const schémaBdRègles = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n properties: {\n colonne: { type: \"string\" },\n source: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n type: { type: \"string\" },\n },\n required: [\"id\", \"type\"],\n },\n règle: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n règle: {\n type: \"object\",\n properties: {\n détails: {\n type: \"object\",\n required: [],\n },\n typeRègle: { type: \"string\" },\n },\n required: [\"détails\", \"typeRègle\"],\n },\n },\n required: [\"id\", \"règle\"],\n },\n },\n required: [\"colonne\", \"règle\", \"source\"],\n },\n required: [],\n};\nexport function élémentsÉgaux(élément1, élément2) {\n const clefs1 = Object.keys(élément1).filter((x) => x !== \"id\");\n const clefs2 = Object.keys(élément2).filter((x) => x !== \"id\");\n if (!clefs1.every((x) => élément1[x] === élément2[x]))\n return false;\n if (!clefs2.every((x) => élément1[x] === élément2[x]))\n return false;\n return true;\n}\nexport function indexÉlémentsÉgaux(élément1, élément2, index) {\n if (!index.every((x) => élément1[x] === élément2[x]))\n return false;\n return true;\n}\nconst schémaStructureBdTableau = {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n noms: { type: \"string\" },\n données: { type: \"string\" },\n colonnes: { type: \"string\" },\n règles: { type: \"string\" },\n },\n required: [\"données\", \"colonnes\", \"noms\", \"règles\", \"type\"],\n};\nexport class Tableaux {\n client;\n constructor({ client }) {\n this.client = client;\n }\n async créerTableau({ idBd }) {\n const optionsAccès = await this.client.obtOpsAccès({ idBd });\n const idBdTableau = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n const { bd: bdTableau, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableau,\n type: \"keyvalue\",\n schéma: schémaStructureBdTableau,\n });\n await bdTableau.set(\"type\", \"tableau\");\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdTableau.set(\"noms\", idBdNoms);\n const idBdDonnées = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdTableau.set(\"données\", idBdDonnées);\n const idBdColonnes = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdTableau.set(\"colonnes\", idBdColonnes);\n const idBdRègles = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdTableau.set(\"règles\", idBdRègles);\n await fOublier();\n return idBdTableau;\n }\n async copierTableau({ id, idBd, copierDonnées = true, }) {\n const { bd: bdBase, fOublier } = await this.client.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdTableau,\n });\n const idNouveauTableau = await this.créerTableau({ idBd });\n const { bd: nouvelleBd, fOublier: fOublierNouvelle } = await this.client.ouvrirBdTypée({\n id: idNouveauTableau,\n type: \"keyvalue\",\n schéma: schémaStructureBdTableau,\n });\n // Copier les noms\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await fOublierNoms();\n await this.sauvegarderNomsTableau({ idTableau: idNouveauTableau, noms });\n }\n // Copier les colonnes\n await this.client.copierContenuBdDic({\n bdBase,\n nouvelleBd,\n clef: \"colonnes\",\n schéma: schémaBdInfoColAvecCatégorie,\n });\n // Copier les règles\n await this.client.copierContenuBdDic({\n bdBase,\n nouvelleBd,\n clef: \"règles\",\n schéma: schémaBdRègles,\n });\n if (copierDonnées) {\n // Copier les données\n await this.client.copierContenuBdDic({\n bdBase,\n nouvelleBd,\n clef: \"données\",\n schéma: schémaBdDonnéesTableau,\n });\n }\n await Promise.all([fOublier(), fOublierNouvelle()]);\n return idNouveauTableau;\n }\n async suivreDifférencesAvecTableau({ idTableau, idTableauRéf, f, }) {\n const info = {};\n const fFinale = async () => {\n if (!info.colonnesTableau || !info.colonnesTableauRéf)\n return;\n const différences = [];\n for (const cRéf of info.colonnesTableauRéf) {\n const cCorresp = info.colonnesTableau.find((c) => c.id === cRéf.id);\n if (cCorresp) {\n if (cCorresp.variable !== cRéf.variable) {\n const dif = {\n type: \"variableColonne\",\n sévère: true,\n idCol: cCorresp.id,\n varColTableau: cCorresp.variable,\n varColTableauLiée: cRéf.variable,\n };\n différences.push(dif);\n }\n if (cCorresp.index !== cRéf.index) {\n const dif = {\n type: \"indexColonne\",\n sévère: true,\n idCol: cCorresp.id,\n colTableauIndexée: !!cCorresp.index,\n };\n différences.push(dif);\n }\n }\n else {\n const dif = {\n type: \"colonneManquante\",\n sévère: true,\n idManquante: cRéf.id,\n };\n différences.push(dif);\n }\n }\n for (const cTableau of info.colonnesTableau) {\n const cLiée = info.colonnesTableauRéf.find((c) => c.id === cTableau.id);\n if (!cLiée) {\n const dif = {\n type: \"colonneSupplémentaire\",\n sévère: false,\n idExtra: cTableau.id,\n };\n différences.push(dif);\n }\n }\n await f(différences);\n };\n const fOublierColonnesTableau = await this.suivreColonnesTableau({\n idTableau,\n f: async (x) => {\n info.colonnesTableau = x;\n await fFinale();\n },\n catégories: false,\n });\n const fOublierColonnesRéf = await this.suivreColonnesTableau({\n idTableau: idTableauRéf,\n f: async (x) => {\n info.colonnesTableauRéf = x;\n await fFinale();\n },\n catégories: false,\n });\n return async () => {\n await Promise.all([fOublierColonnesTableau, fOublierColonnesRéf]);\n };\n }\n async changerColIndex({ idTableau, idColonne, val, }) {\n const idBdColonnes = await this.client.obtIdBd({\n nom: \"colonnes\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdColonnes) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdColonnes, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdColonnes,\n type: \"keyvalue\",\n schéma: schémaBdInfoColAvecCatégorie,\n });\n const éléments = await bdColonnes.all();\n const élémentCol = éléments.find((x) => x.value.id === idColonne);\n // Changer uniquement si la colonne existe et n'était pas déjà sous le même statut que `val`\n if (élémentCol && Boolean(élémentCol.value.index) !== val) {\n const { value } = élémentCol;\n const nouvelÉlément = Object.assign(value, { index: val });\n await bdColonnes.put(idColonne, nouvelÉlément);\n }\n await fOublier();\n }\n async suivreIndex({ idTableau, f, }) {\n const fFinale = async (cols) => {\n const indexes = cols.filter((c) => c.index).map((c) => c.id);\n await f(indexes);\n };\n return await this.suivreColonnesTableau({\n idTableau,\n f: fFinale,\n catégories: false,\n });\n }\n async suivreDonnées({ idTableau, f, clefsSelonVariables = false, }) {\n const info = {};\n const fFinale = async () => {\n const { données, colonnes } = info;\n if (données && colonnes) {\n const donnéesFinales = Object.entries(données).map(([id, élément]) => {\n const données = clefsSelonVariables\n ? Object.keys(élément).reduce((acc, elem) => {\n // Convertir au nom de la variable si souhaité\n const idVar = elem === \"id\" ? \"id\" : colonnes[elem];\n acc[idVar] = élément[elem];\n return acc;\n }, {})\n : élément;\n return { données, id };\n });\n await f(donnéesFinales);\n }\n };\n const fSuivreColonnes = async (colonnes) => {\n info.colonnes = Object.fromEntries(colonnes.map((c) => [c.id, c.variable]));\n await fFinale();\n };\n const oublierColonnes = await this.suivreColonnesTableau({\n idTableau,\n f: fSuivreColonnes,\n catégories: false,\n });\n const fSuivreDonnées = async (données) => {\n info.données = données;\n await fFinale();\n };\n const oublierDonnées = await this.client.suivreBdDicDeClef({\n id: idTableau,\n clef: \"données\",\n f: fSuivreDonnées,\n // @ts-expect-error Il faudrait implémenter un schéma dynamique selon T\n schéma: schémaBdDonnéesTableau,\n });\n return async () => {\n await oublierDonnées();\n await oublierColonnes();\n };\n }\n async formaterÉlément({ é, colonnes, fichiersSFIP, langues, }) {\n const extraireTraduction = async ({ adresseBdTrads, langues, }) => {\n const trads = await uneFois((f) => this.client.suivreBdDic({ id: adresseBdTrads, f }));\n return traduire(trads, langues || []) || adresseBdTrads;\n };\n const élémentFinal = {};\n const formaterValeur = async (v, catégorie) => {\n switch (typeof v) {\n case \"object\": {\n return JSON.stringify(v);\n }\n case \"boolean\":\n return v.toString();\n case \"number\":\n return v;\n case \"string\":\n if ([\"audio\", \"image\", \"vidéo\", \"fichier\"].includes(catégorie)) {\n fichiersSFIP.add(v);\n return v;\n }\n else if (catégorie === \"chaîne\" && isValidAddress(v)) {\n return await extraireTraduction({ adresseBdTrads: v, langues });\n }\n return v;\n default:\n return;\n }\n };\n for (const col of Object.keys(é)) {\n const colonne = colonnes.find((c) => c.id === col);\n if (!colonne)\n continue;\n const { catégorie } = colonne;\n let val = undefined;\n const élément = é[col];\n if (catégorie?.type === \"simple\") {\n val = await formaterValeur(élément, catégorie.catégorie);\n }\n else if (catégorie?.type === \"liste\") {\n if (Array.isArray(élément)) {\n val = JSON.stringify(await Promise.all(élément.map((x) => formaterValeur(x, catégorie.catégorie))));\n }\n }\n if (val !== undefined)\n élémentFinal[col] = val;\n }\n return élémentFinal;\n }\n async suivreDonnéesExportation({ idTableau, langues, f, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n const { colonnes, données, nomsTableau, nomsVariables } = info;\n if (colonnes && données && (!langues || (nomsTableau && nomsVariables))) {\n const fichiersSFIP = new Set();\n let donnéesFormattées = await Promise.all(données.map((d) => this.formaterÉlément({\n é: d.données,\n fichiersSFIP,\n colonnes,\n langues,\n })));\n donnéesFormattées = donnéesFormattées.map((d) => Object.keys(d).reduce((acc, idCol) => {\n const idVar = colonnes.find((c) => c.id === idCol)?.variable;\n if (!idVar)\n throw new Error(`Colonnne avec id ${idCol} non trouvée parmis les colonnnes :\\n${JSON.stringify(colonnes, undefined, 2)}.`);\n const nomVar = langues && nomsVariables?.[idVar]\n ? traduire(nomsVariables[idVar], langues) || idCol\n : idCol;\n acc[nomVar] = d[idCol];\n return acc;\n }, {}));\n const idCourtTableau = idTableau.split(\"/\").pop();\n const nomTableau = langues && nomsTableau\n ? traduire(nomsTableau, langues) || idCourtTableau\n : idCourtTableau;\n return await f({\n nomTableau,\n données: donnéesFormattées,\n fichiersSFIP,\n });\n }\n };\n if (langues) {\n const fOublierNomsTableaux = await this.suivreNomsTableau({\n idTableau,\n f: async (noms) => {\n info.nomsTableau = noms;\n await fFinale();\n },\n });\n fsOublier.push(fOublierNomsTableaux);\n const fOublierNomsVariables = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => this.suivreVariables({ idTableau, f: fSuivreRacine }),\n f: async (noms) => {\n info.nomsVariables = Object.fromEntries(noms.map((n) => [n.idVar, n.noms]));\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.client.variables.suivreNomsVariable({\n idVariable: id,\n f: async (noms) => await fSuivreBranche({ idVar: id, noms }),\n });\n },\n });\n fsOublier.push(fOublierNomsVariables);\n }\n const fOublierColonnes = await this.suivreColonnesTableau({\n idTableau,\n f: async (cols) => {\n info.colonnes = cols;\n await fFinale();\n },\n catégories: true,\n });\n fsOublier.push(fOublierColonnes);\n const fOublierDonnées = await this.suivreDonnées({\n idTableau,\n f: async (données) => {\n info.données = données;\n await fFinale();\n },\n });\n fsOublier.push(fOublierDonnées);\n return async () => {\n Promise.all(fsOublier.map((f) => f()));\n };\n }\n async exporterDonnées({ idTableau, langues, doc, nomFichier, patience = 500, }) {\n /* Créer le document si nécessaire */\n doc = doc || utils.book_new();\n const données = await uneFois(async (fSuivi) => {\n return await this.suivreDonnéesExportation({\n idTableau,\n langues,\n f: fSuivi,\n });\n }, attendreStabilité(patience));\n /* Créer le tableau */\n const tableau = utils.json_to_sheet(données.données);\n /* Ajouter la feuille au document. XLSX n'accepte pas les noms de colonne > 31 caractères */\n utils.book_append_sheet(doc, tableau, données.nomTableau.slice(0, 30));\n nomFichier = nomFichier || données.nomTableau;\n return { doc, fichiersSFIP: données.fichiersSFIP, nomFichier };\n }\n async ajouterÉlément({ idTableau, vals, }) {\n if (!Array.isArray(vals)) {\n vals = [vals];\n }\n const idBdDonnées = await this.client.obtIdBd({\n nom: \"données\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdDonnées) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdDonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDonnées,\n type: \"keyvalue\",\n schéma: schémaBdDonnéesTableau,\n });\n // Éviter, autant que possible, de dédoubler des colonnes indexes\n const colsIndexe = (await uneFois((f) => this.suivreColonnesTableau({ idTableau, f, catégories: false })))\n .filter((c) => c.index)\n .map((c) => c.id);\n const obtIdIndex = (v) => {\n const valsIndex = Object.fromEntries(Object.entries(v).filter((x) => colsIndexe.includes(x[0])));\n return Base64.stringify(md5(JSON.stringify(valsIndex)));\n };\n const ids = [];\n for (const val of vals) {\n const id = colsIndexe.length ? obtIdIndex(val) : uuidv4();\n await bdDonnées.put(id, val);\n ids.push(id);\n }\n await fOublier();\n return ids;\n }\n async modifierÉlément({ idTableau, vals, idÉlément, }) {\n const idBdDonnées = await this.client.obtIdBd({\n nom: \"données\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdDonnées) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdDonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDonnées,\n type: \"keyvalue\",\n schéma: schémaBdDonnéesTableau,\n });\n const précédent = await bdDonnées.get(idÉlément);\n if (!précédent)\n throw new Error(`Id élément ${idÉlément} n'existe pas.`);\n const élément = Object.assign({}, précédent, vals);\n Object.keys(vals).map((c) => {\n if (vals[c] === undefined)\n delete élément[c];\n });\n if (!élémentsÉgaux(élément, précédent)) {\n await bdDonnées.put(idÉlément, élément);\n }\n await fOublier();\n }\n async vérifierClefsÉlément({ idTableau, élément, }) {\n const idBdColonnes = await this.client.obtIdBd({\n nom: \"colonnes\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdColonnes) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdColonnes, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdColonnes,\n type: \"keyvalue\",\n schéma: schémaBdInfoColAvecCatégorie,\n });\n const idsColonnes = (await bdColonnes.all()).map((e) => e.value.id);\n const clefsPermises = [...idsColonnes, \"id\"];\n const clefsFinales = Object.keys(élément).filter((x) => clefsPermises.includes(x));\n await fOublier();\n return Object.fromEntries(clefsFinales.map((x) => [x, élément[x]]));\n }\n async effacerÉlément({ idTableau, idÉlément, }) {\n const idBdDonnées = await this.client.obtIdBd({\n nom: \"données\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdDonnées) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdDonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDonnées,\n type: \"keyvalue\",\n schéma: schémaBdDonnéesTableau,\n });\n await bdDonnées.del(idÉlément);\n await fOublier();\n }\n async combinerDonnées({ idTableauBase, idTableau2, }) {\n const donnéesTableauBase = await uneFois(async (fSuivi) => {\n return await this.suivreDonnées({\n idTableau: idTableauBase,\n f: fSuivi,\n });\n });\n const colsTableauBase = await uneFois(async (fSuivi) => {\n return await this.suivreColonnesTableau({\n idTableau: idTableauBase,\n f: fSuivi,\n catégories: false,\n });\n }, \n // Il faut attendre que toutes les colonnes soient présentes\n (colonnes) => colonnes !== undefined &&\n [\n ...new Set(donnéesTableauBase\n .map((d) => Object.keys(d.données).filter((c) => c !== \"id\"))\n .flat()),\n ].length <= colonnes.length);\n const donnéesTableau2 = await uneFois(async (fSuivi) => {\n return await this.suivreDonnées({ idTableau: idTableau2, f: fSuivi });\n });\n const indexes = colsTableauBase.filter((c) => c.index).map((c) => c.id);\n for (const nouvelÉlément of donnéesTableau2) {\n const existant = donnéesTableauBase.find((d) => indexÉlémentsÉgaux(d.données, nouvelÉlément.données, indexes));\n if (existant) {\n const àAjouter = {};\n for (const col of colsTableauBase) {\n if (existant.données[col.id] === undefined &&\n nouvelÉlément.données[col.id] !== undefined) {\n àAjouter[col.id] = nouvelÉlément.données[col.id];\n }\n }\n if (Object.keys(àAjouter).length) {\n await this.effacerÉlément({\n idTableau: idTableauBase,\n idÉlément: existant.id,\n });\n await this.ajouterÉlément({\n idTableau: idTableauBase,\n vals: Object.assign({}, existant.données, àAjouter),\n });\n }\n }\n else {\n await this.ajouterÉlément({\n idTableau: idTableauBase,\n vals: nouvelÉlément.données,\n });\n }\n }\n }\n async convertirDonnées({ idTableau, données, conversions = {}, importerFichiers, cheminBaseFichiers, donnéesExistantes, }) {\n const colonnes = await uneFois(async (fSuivi) => {\n return await this.suivreColonnesTableau({\n idTableau,\n f: fSuivi,\n catégories: true,\n });\n });\n const idsOrbiteColsChaîne = new Set(donnéesExistantes\n ?.map((d) => {\n return colonnes\n .filter((c) => c.catégorie?.catégorie === \"chaîne\")\n .map((c) => (c.catégorie?.type === \"simple\" ? [d[c.id]] : d[c.id]))\n .flat()\n .filter((x) => typeof x === \"string\");\n })\n .flat() || []);\n const fichiersDéjàAjoutés = {};\n const ajouterFichierÀSFIP = async ({ chemin, }) => {\n try {\n new URL(chemin);\n if (fichiersDéjàAjoutés[chemin])\n return fichiersDéjàAjoutés[chemin];\n const contenuFichier = (await axios.get(chemin)).data;\n const composantesUrl = chemin.split(\"/\");\n const nomFichier = composantesUrl.pop() || composantesUrl.pop();\n if (!nomFichier)\n throw new Error(\"Nom de fichier manquant.\");\n const cid = await this.client.ajouterÀSFIP({\n nomFichier,\n contenu: contenuFichier,\n });\n fichiersDéjàAjoutés[chemin] = cid;\n }\n catch {\n // Rien à faire;\n }\n if (isNode || isElectronMain) {\n const fs = await import(\"fs\");\n const path = await import(\"path\");\n const cheminAbsolut = cheminBaseFichiers\n ? path.resolve(cheminBaseFichiers, chemin)\n : chemin;\n if (!fs.existsSync(cheminAbsolut))\n return;\n if (fichiersDéjàAjoutés[cheminAbsolut])\n return fichiersDéjàAjoutés[cheminAbsolut];\n const contenuFichier = fs.readFileSync(cheminAbsolut);\n const cid = await this.client.ajouterÀSFIP({\n nomFichier: path.basename(cheminAbsolut),\n contenu: contenuFichier,\n });\n fichiersDéjàAjoutés[chemin] = cid;\n return cid;\n }\n return undefined;\n };\n const cacheRechercheIdOrbite = {};\n const rechercherIdOrbiteChaîne = async ({ val, langue, }) => {\n if (cacheRechercheIdOrbite[langue]?.[val])\n return cacheRechercheIdOrbite[langue][val];\n for (const id of idsOrbiteColsChaîne) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const valLangue = await bd.get(langue);\n await fOublier();\n if (valLangue === val) {\n if (!cacheRechercheIdOrbite[langue])\n cacheRechercheIdOrbite[langue] = {};\n cacheRechercheIdOrbite[langue][val] = id;\n return id;\n }\n }\n return undefined;\n };\n const créerIdOrbiteChaîne = async ({ val, langue, }) => {\n const { bd: bdNuée, fOublier: fOublierBdTableau } = await this.client.ouvrirBdTypée({\n id: idTableau,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const accès = bdNuée.access;\n const optionsAccès = { address: accès.address };\n await fOublierBdTableau();\n const idOrbite = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idOrbite,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bd.set(langue, val);\n await fOublier();\n idsOrbiteColsChaîne.add(idOrbite);\n return idOrbite;\n };\n const convertir = async ({ val, catégorie, conversion, }) => {\n switch (catégorie) {\n case \"audio\":\n case \"image\":\n case \"vidéo\":\n case \"fichier\": {\n if (typeof val === \"string\" && importerFichiers) {\n if (cidEtFichierValide(val))\n return val;\n const infoFichier = await ajouterFichierÀSFIP({ chemin: val });\n return infoFichier || val;\n }\n return val;\n }\n case \"booléen\":\n return typeof val === \"string\" ? val.toLowerCase() === \"true\" : val;\n case \"numérique\": {\n let opération = undefined;\n let systèmeNumération = undefined;\n if (conversion?.type === \"numérique\") {\n ({ opération, systèmeNumération } = conversion);\n }\n const convertirValNumérique = ({ val, ops, }) => {\n if (!ops)\n return val;\n let valFinale = val;\n for (const op of ops) {\n switch (op.op) {\n case \"+\":\n valFinale = val + op.val;\n break;\n case \"-\":\n valFinale = val - op.val;\n break;\n case \"*\":\n valFinale = val * op.val;\n break;\n case \"/\":\n valFinale = val / op.val;\n break;\n case \"^\":\n valFinale = val ** op.val;\n break;\n default:\n throw new Error(op.op);\n }\n }\n return valFinale;\n };\n let valNumérique = undefined;\n if (typeof val === \"string\") {\n try {\n valNumérique = this.client.ennikkai.எண்ணுக்கு({\n உரை: val,\n மொழி: systèmeNumération,\n });\n }\n catch {\n // Rien à faire...\n }\n }\n else if (typeof val === \"number\") {\n valNumérique = val;\n }\n return valNumérique !== undefined\n ? convertirValNumérique({\n val: valNumérique,\n ops: Array.isArray(opération) || typeof opération === \"undefined\"\n ? opération\n : [opération],\n })\n : val;\n }\n case \"horoDatage\": {\n if (conversion?.type === \"horoDatage\" && typeof val === \"string\") {\n const { système, format } = conversion;\n const date = cholqij.lireDate({ système, val, format });\n return {\n système: \"dateJS\",\n val: date.valueOf(),\n };\n }\n else {\n if ([\"number\", \"string\"].includes(typeof val)) {\n const date = new Date(val);\n return isNaN(date.valueOf())\n ? val\n : {\n système: \"dateJS\",\n val: date.valueOf(),\n };\n }\n return val;\n }\n }\n case \"intervaleTemps\": {\n const valObjet = typeof val === \"string\" ? JSON.parse(val) : val;\n if (Array.isArray(valObjet)) {\n return await Promise.all(valObjet.map(async (v) => await convertir({\n val: v,\n catégorie: \"horoDatage\",\n conversion,\n })));\n }\n return valObjet;\n }\n case \"chaîneNonTraductible\":\n return val;\n case \"chaîne\": {\n if (typeof val !== \"string\")\n return val;\n if (isValidAddress(val))\n return val;\n else {\n if (conversion?.type === \"chaîne\") {\n const { langue } = conversion;\n const idOrbiteExistante = await rechercherIdOrbiteChaîne({\n val,\n langue,\n });\n return (idOrbiteExistante ||\n (await créerIdOrbiteChaîne({ val, langue })));\n }\n return val;\n }\n }\n case \"géojson\":\n return typeof val === \"string\" ? JSON.parse(val) : val;\n default:\n return val;\n }\n };\n for (const élément of données) {\n for (const c of colonnes) {\n if (c.catégorie) {\n const { type, catégorie } = c.catégorie;\n const val = élément[c.id];\n if (val === undefined)\n continue;\n const conversion = conversions[c.id];\n if (type === \"simple\") {\n élément[c.id] = await convertir({ val, catégorie, conversion });\n }\n else {\n const valListe = typeof val === \"string\" ? JSON.parse(val) : val;\n élément[c.id] = Array.isArray(valListe)\n ? await Promise.all(valListe.map(async (v) => await convertir({ val: v, catégorie, conversion })))\n : [await convertir({ val: valListe, catégorie, conversion })];\n }\n }\n }\n }\n return données;\n }\n async importerDonnées({ idTableau, données, conversions = {}, cheminBaseFichiers, }) {\n const donnéesTableau = await uneFois(async (fSuivi) => {\n return await this.suivreDonnées({ idTableau, f: fSuivi });\n });\n const donnéesConverties = await this.convertirDonnées({\n idTableau,\n données,\n conversions,\n importerFichiers: true,\n cheminBaseFichiers,\n donnéesExistantes: donnéesTableau.map((x) => x.données),\n });\n const nouveaux = [];\n for (const élément of donnéesConverties) {\n if (!donnéesTableau.some((x) => élémentsÉgaux(x.données, élément))) {\n nouveaux.push(élément);\n }\n }\n const àEffacer = [];\n for (const élément of donnéesTableau) {\n if (!donnéesConverties.some((x) => élémentsÉgaux(x, élément.données))) {\n àEffacer.push(élément.id);\n }\n }\n for (const id of àEffacer) {\n await this.effacerÉlément({ idTableau, idÉlément: id });\n }\n for (const n of nouveaux) {\n await this.ajouterÉlément({ idTableau, vals: n });\n }\n }\n async sauvegarderNomsTableau({ idTableau, noms, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async sauvegarderNomTableau({ idTableau, langue, nom, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async effacerNomTableau({ idTableau, langue, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.del(langue);\n await fOublier();\n }\n async suivreNomsTableau({ idTableau, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idTableau,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async ajouterColonneTableau({ idTableau, idVariable, idColonne, }) {\n const idBdColonnes = await this.client.obtIdBd({\n nom: \"colonnes\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdColonnes) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdColonnes, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdColonnes,\n type: \"keyvalue\",\n schéma: schémaBdInfoColAvecCatégorie,\n });\n idColonne = idColonne || uuidv4();\n const élément = {\n id: idColonne,\n variable: idVariable,\n };\n await bdColonnes.put(idColonne, élément);\n await fOublier();\n return idColonne;\n }\n async effacerColonneTableau({ idTableau, idColonne, }) {\n const idBdColonnes = await this.client.obtIdBd({\n nom: \"colonnes\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdColonnes) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdColonnes, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdColonnes,\n type: \"keyvalue\",\n schéma: schémaBdInfoColAvecCatégorie,\n });\n await bdColonnes.del(idColonne);\n await fOublier();\n }\n async suivreColonnesTableau({ idTableau, f, catégories = false, }) {\n const fFinale = async (colonnes) => {\n if (colonnes)\n return await f(colonnes);\n };\n const fBranche = async (id, fSuivi, branche) => {\n if (!id)\n return faisRien;\n return await this.client.variables.suivreCatégorieVariable({\n idVariable: id,\n f: async (catégorie) => {\n const col = Object.assign({ catégorie }, branche);\n await fSuivi(col);\n },\n });\n };\n const fIdBdDeBranche = (x) => x.variable;\n const fCode = (x) => x.id;\n const fSuivreBdColonnes = async ({ id, fSuivreBd, }) => {\n return await this.client.suivreBdsDeBdDic({\n id,\n f: fSuivreBd,\n fBranche,\n fIdBdDeBranche,\n fCode,\n });\n };\n if (catégories) {\n return await this.client.suivreBdDeClef({\n id: idTableau,\n clef: \"colonnes\",\n f: fFinale,\n fSuivre: fSuivreBdColonnes,\n });\n }\n else {\n return await this.client.suivreBdDicDeClef({\n id: idTableau,\n clef: \"colonnes\",\n schéma: schémaBdInfoColAvecCatégorie,\n f: async (cols) => fFinale(Object.values(cols)),\n });\n }\n }\n async suivreVariables({ idTableau, f, }) {\n const fFinale = async (variables) => {\n await f((variables || []).filter((v) => v && isValidAddress(v)));\n };\n const fSuivreBdColonnes = async ({ id, fSuivreBd, }) => {\n return await this.client.suivreBdListe({\n id,\n f: (cols) => fSuivreBd(cols.map((c) => c.variable)),\n });\n };\n return await this.client.suivreBdDeClef({\n id: idTableau,\n clef: \"colonnes\",\n f: fFinale,\n fSuivre: fSuivreBdColonnes,\n });\n }\n async ajouterRègleTableau({ idTableau, idColonne, règle, }) {\n const idBdRègles = await this.client.obtIdBd({\n nom: \"règles\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdRègles) {\n throw new Error(`Permission de modification refusée pour tableau ${idTableau}.`);\n }\n const { bd: bdRègles, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdRègles,\n type: \"keyvalue\",\n schéma: schémaBdRègles,\n });\n const id = uuidv4();\n const règleAvecId = {\n id,\n règle,\n };\n const élément = {\n règle: règleAvecId,\n source: { type: \"tableau\", id: idTableau },\n colonne: idColonne,\n };\n await bdRègles.put(id, élément);\n await fOublier();\n return id;\n }\n async effacerRègleTableau({ idTableau, idRègle, }) {\n const idBdRègles = await this.client.obtIdBd({\n nom: \"règles\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdRègles) {\n throw new Error(`Permission de modification refusée pour tableau ${idTableau}.`);\n }\n const { bd: bdRègles, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdRègles,\n type: \"keyvalue\",\n schéma: schémaBdRègles,\n });\n await bdRègles.del(idRègle);\n await fOublier();\n }\n async suivreRègles({ idTableau, f, }) {\n const dicRègles = {};\n const fFinale = async () => {\n if (!dicRègles.tableau || !dicRègles.variable)\n return;\n return await f([...dicRègles.tableau, ...dicRègles.variable]);\n };\n // Suivre les règles spécifiées dans le tableau\n const fFinaleRèglesTableau = async (règles) => {\n dicRègles.tableau = Object.values(règles);\n return await fFinale();\n };\n const oublierRèglesTableau = await this.client.suivreBdDicDeClef({\n id: idTableau,\n clef: \"règles\",\n schéma: schémaBdRègles,\n f: fFinaleRèglesTableau,\n });\n // Suivre les règles spécifiées dans les variables\n const fListe = async (fSuivreRacine) => {\n return await this.suivreColonnesTableau({\n idTableau,\n f: fSuivreRacine,\n catégories: false,\n });\n };\n const fFinaleRèglesVariables = async (règles) => {\n dicRègles.variable = règles;\n return await fFinale();\n };\n const fBranche = async (idVariable, fSuivreBranche, branche) => {\n const fFinaleSuivreBranche = (règles) => {\n const règlesColonnes = règles.map((r) => {\n return {\n règle: r,\n source: { type: \"variable\", id: idVariable },\n colonne: branche.id,\n };\n });\n return fSuivreBranche(règlesColonnes);\n };\n return await this.client.variables.suivreRèglesVariable({\n idVariable,\n f: fFinaleSuivreBranche,\n });\n };\n const fIdBdDeBranche = (b) => b.variable;\n const fCode = (b) => b.id;\n const oublierRèglesVariable = await suivreBdsDeFonctionListe({\n fListe,\n f: fFinaleRèglesVariables,\n fBranche,\n fIdBdDeBranche,\n fCode,\n });\n // Tout oublier\n const fOublier = async () => {\n await oublierRèglesTableau();\n await oublierRèglesVariable();\n };\n return fOublier;\n }\n async suivreValidDonnées({ idTableau, f, }) {\n const info = {};\n const fFinale = async () => {\n if (!info.données || !info.règles)\n return;\n let erreurs = [];\n for (const r of info.règles) {\n const nouvellesErreurs = r(info.données);\n erreurs = [...erreurs, ...nouvellesErreurs.flat()];\n }\n await f(erreurs);\n };\n const fFinaleRègles = async (règles) => {\n if (info.varsÀColonnes) {\n info.règles = règles.map((r) => générerFonctionRègle({\n règle: r.règle,\n varsÀColonnes: info.varsÀColonnes,\n donnéesCatégorie: r.donnéesCatégorie,\n }));\n await fFinale();\n }\n };\n const fFinaleDonnées = async (données) => {\n info.données = données;\n await fFinale();\n };\n const fOublierVarsÀColonnes = await this.suivreColonnesTableau({\n idTableau,\n f: async (cols) => {\n const varsÀColonnes = cols.reduce((o, c) => ({ ...o, [c.variable]: c.id }), {});\n info.varsÀColonnes = varsÀColonnes;\n await fFinale();\n },\n catégories: false,\n });\n const fListeRègles = async (fSuivreRacine) => {\n return await this.suivreRègles({ idTableau, f: fSuivreRacine });\n };\n const fBrancheRègles = async (_id, fSuivreBranche, règle) => {\n if (règle.règle.règle.typeRègle === \"valeurCatégorique\" &&\n règle.règle.règle.détails.type === \"dynamique\") {\n const { tableau, colonne } = règle.règle.règle.détails;\n return await this.suivreDonnées({\n idTableau: tableau,\n f: async (données) => await fSuivreBranche({\n règle,\n donnéesCatégorie: données.map((d) => d.données[colonne]),\n }),\n });\n }\n else {\n await fSuivreBranche({ règle });\n return faisRien;\n }\n };\n const fIdDeBranche = (b) => b.règle.id;\n const fCode = (b) => b.règle.id;\n const fOublierRègles = await suivreBdsDeFonctionListe({\n fListe: fListeRègles,\n f: fFinaleRègles,\n fBranche: fBrancheRègles,\n fIdBdDeBranche: fIdDeBranche,\n fCode,\n });\n const fOublierDonnées = await this.suivreDonnées({\n idTableau,\n f: fFinaleDonnées,\n });\n const fOublier = async () => {\n await fOublierRègles();\n await fOublierDonnées();\n await fOublierVarsÀColonnes();\n };\n return fOublier;\n }\n async suivreValidRègles({ idTableau, f, }) {\n const info = {};\n const fFinale = async () => {\n if (!info.colonnes || !info.règles)\n return;\n const erreurs = [];\n const règlesTypeBornes = info.règles\n .map((r) => r.règle)\n .filter((r) => r.règle.règle.typeRègle === \"bornes\");\n const règlesBornesColonnes = règlesTypeBornes.filter((r) => r.règle.règle.détails.type === \"dynamiqueColonne\");\n const règlesBornesVariables = règlesTypeBornes.filter((r) => r.règle.règle.détails.type === \"dynamiqueVariable\");\n const règlesCatégoriquesDynamiques = info.règles.filter((r) => r.règle.règle.règle.typeRègle === \"valeurCatégorique\" &&\n r.règle.règle.règle.détails.type === \"dynamique\");\n for (const r of règlesBornesColonnes) {\n const colRéfRègle = info.colonnes.find((c) => c.id === r.règle.règle.détails.val);\n if (!colRéfRègle) {\n const erreur = {\n règle: r,\n détails: \"colonneBornesInexistante\",\n };\n erreurs.push(erreur);\n }\n }\n for (const r of règlesBornesVariables) {\n const varRéfRègle = info.colonnes.find((c) => c.variable === r.règle.règle.détails.val);\n if (!varRéfRègle) {\n const erreur = {\n règle: r,\n détails: \"variableBornesNonPrésente\",\n };\n erreurs.push(erreur);\n }\n }\n for (const r of règlesCatégoriquesDynamiques) {\n const colRéfRègle = r.colsTableauRéf?.find((c) => c.id === r.règle.règle.règle.détails.colonne);\n if (!colRéfRègle) {\n const erreur = {\n règle: r.règle,\n détails: \"colonneCatégInexistante\",\n };\n erreurs.push(erreur);\n }\n }\n await f(erreurs);\n };\n const fFinaleRègles = async (règles) => {\n info.règles = règles;\n return await fFinale();\n };\n const fOublierColonnes = await this.suivreColonnesTableau({\n idTableau,\n f: async (cols) => {\n info.colonnes = cols;\n return await fFinale();\n },\n catégories: false,\n });\n const fListeRègles = async (fSuivreRacine) => {\n return await this.suivreRègles({ idTableau, f: fSuivreRacine });\n };\n const fBrancheRègles = async (_id, fSuivreBranche, règle) => {\n if (règle.règle.règle.typeRègle === \"valeurCatégorique\" &&\n règle.règle.règle.détails.type === \"dynamique\") {\n const { tableau } = règle.règle.règle.détails;\n return await this.suivreColonnesTableau({\n idTableau: tableau,\n f: (cols) => fSuivreBranche({\n règle,\n colsTableauRéf: cols,\n }),\n catégories: false,\n });\n }\n else {\n await fSuivreBranche({ règle });\n return faisRien;\n }\n };\n const fIdDeBranche = (b) => b.règle.id;\n const fCode = (b) => b.règle.id;\n const fOublierRègles = await suivreBdsDeFonctionListe({\n fListe: fListeRègles,\n f: fFinaleRègles,\n fBranche: fBrancheRègles,\n fIdBdDeBranche: fIdDeBranche,\n fCode,\n });\n const fOublier = async () => {\n await fOublierRègles();\n await fOublierColonnes();\n };\n return fOublier;\n }\n async effacerTableau({ idTableau }) {\n // Effacer toutes les composantes du tableau\n for (const clef of [\"noms\", \"données\", \"colonnes\", \"règles\"]) {\n const idBd = await this.client.obtIdBd({\n nom: clef,\n racine: idTableau,\n });\n if (idBd)\n await this.client.effacerBd({ id: idBd });\n }\n // Effacer le tableau lui-même\n await this.client.effacerBd({ id: idTableau });\n }\n}\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreDiff\\u00E9rencesAvecTableau\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreIndex\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreDonn\\u00E9es\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreNomsTableau\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreColonnesTableau\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreVariables\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreR\\u00E8gles\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreValidDonn\\u00E9es\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreValidR\\u00E8gles\", null);\n//# sourceMappingURL=tableaux.js.map","import { __decorate } from \"tslib\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { schémaStructureBdNoms, } from \"./types.js\";\nimport { ComposanteClientListe } from \"./composanteClient.js\";\nimport { estUnContrôleurConstellation } from \"./accès/utils.js\";\nconst schémaBdPrincipale = {\n type: \"string\",\n};\nconst schémaStructureBdVariable = {\n type: \"object\",\n properties: {\n type: { type: \"string\", nullable: true },\n catégorie: {\n type: \"object\",\n properties: {\n catégorie: { type: \"string\", nullable: true },\n type: { type: \"string\", nullable: true },\n },\n required: [],\n nullable: true,\n },\n noms: { type: \"string\", nullable: true },\n descriptions: { type: \"string\", nullable: true },\n unités: { type: \"string\", nullable: true },\n règles: { type: \"string\", nullable: true },\n statut: {\n type: \"object\",\n properties: {\n idNouvelle: { type: \"string\", nullable: true },\n statut: { type: \"string\", nullable: true },\n },\n required: [],\n nullable: true,\n },\n },\n required: [],\n};\nexport const schémaBdRèglesVariable = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n properties: {\n typeRègle: { type: \"string\" },\n détails: {\n type: \"object\",\n required: [],\n additionalProperties: true,\n },\n },\n required: [\"détails\", \"typeRègle\"],\n },\n required: [],\n};\nexport class Variables extends ComposanteClientListe {\n constructor({ client }) {\n super({ client, clef: \"variables\", schémaBdPrincipale });\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async suivreVariables({ f, idCompte, }) {\n return await this.suivreBdPrincipale({ idCompte, f });\n }\n async créerVariable({ catégorie, }) {\n const idBdVariable = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n address: undefined,\n write: await this.client.obtIdCompte(),\n },\n });\n await this.ajouterÀMesVariables({ idVariable: idBdVariable });\n const { bd: bdVariable, fOublier: fOublierVariable } = await this.client.ouvrirBdTypée({\n id: idBdVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n const accès = bdVariable.access;\n if (!estUnContrôleurConstellation(accès))\n throw Error(\"Contrôleur de type non reconnu.\");\n const optionsAccès = { address: accès.address };\n await bdVariable.set(\"type\", \"variable\");\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdVariable.set(\"noms\", idBdNoms);\n const idBdDescr = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdVariable.set(\"descriptions\", idBdDescr);\n const idBdRègles = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdVariable.set(\"règles\", idBdRègles);\n await bdVariable.set(\"catégorie\", this.standardiserCatégorieVariable(catégorie));\n await this.établirStatut({\n id: idBdVariable,\n statut: { statut: \"active\" },\n });\n fOublierVariable();\n return idBdVariable;\n }\n async ajouterÀMesVariables({ idVariable, }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.add(idVariable);\n await fOublier();\n }\n async enleverDeMesVariables({ idVariable, }) {\n const { bd: bdRacine, fOublier } = await this.obtBd();\n await bdRacine.del(idVariable);\n await fOublier();\n }\n async copierVariable({ idVariable, }) {\n const { bd: bdBase, fOublier: fOublierBase } = await this.client.ouvrirBdTypée({\n id: idVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n const catégorie = (await bdBase.get(\"catégorie\"));\n const idNouvelleBd = await this.créerVariable({ catégorie });\n const { bd: bdNouvelle, fOublier: fOublierNouvelle } = await this.client.ouvrirBdTypée({\n id: idNouvelleBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierBdNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await fOublierBdNoms();\n await this.sauvegarderNomsVariable({ idVariable: idNouvelleBd, noms });\n }\n const idBdDescr = await bdBase.get(\"descriptions\");\n if (idBdDescr) {\n const { bd: bdDescr, fOublier: fOublierBdDescr } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const descriptions = await bdDescr.allAsJSON();\n await fOublierBdDescr();\n await this.sauvegarderDescriptionsVariable({\n idVariable: idNouvelleBd,\n descriptions,\n });\n }\n const unités = await bdBase.get(\"unités\");\n if (unités)\n await bdNouvelle.put(\"unités\", unités);\n const idBdRègles = await bdBase.get(\"règles\");\n if (idBdRègles) {\n const { bd: bdRègles, fOublier: fOublierBdRègles } = await this.client.ouvrirBdTypée({\n id: idBdRègles,\n type: \"keyvalue\",\n schéma: schémaBdRèglesVariable,\n });\n const règles = await bdRègles.allAsJSON();\n await fOublierBdRègles();\n await Promise.all(Object.entries(règles).map(async ([id, r]) => {\n await this.ajouterRègleVariable({\n idVariable: idNouvelleBd,\n règle: r,\n idRègle: id,\n });\n }));\n }\n const statut = (await bdBase.get(\"statut\")) || {\n statut: \"active\",\n };\n await this.établirStatut({ id: idNouvelleBd, statut });\n await Promise.all([fOublierBase(), fOublierNouvelle()]);\n return idNouvelleBd;\n }\n async inviterAuteur({ idVariable, idCompteAuteur, rôle, }) {\n await this.client.donnerAccès({\n idBd: idVariable,\n identité: idCompteAuteur,\n rôle,\n });\n }\n async sauvegarderNomsVariable({ idVariable, noms, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour Variable ${idVariable}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async sauvegarderNomVariable({ idVariable, langue, nom, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour variable ${idVariable}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async effacerNomVariable({ idVariable, langue, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour Variable ${idVariable}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.del(langue);\n await fOublier();\n }\n async sauvegarderDescriptionsVariable({ idVariable, descriptions, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour Variable ${idVariable}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in descriptions) {\n await bdDescr.set(lng, descriptions[lng]);\n }\n await fOublier();\n }\n async sauvegarderDescriptionVariable({ idVariable, langue, description, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour Variable ${idVariable}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.set(langue, description);\n await fOublier();\n }\n async effacerDescriptionVariable({ idVariable, langue, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour Variable ${idVariable}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.del(langue);\n await fOublier();\n }\n async sauvegarderCatégorieVariable({ idVariable, catégorie, }) {\n const { bd: bdVariable, fOublier } = await this.client.ouvrirBdTypée({\n id: idVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n await bdVariable.set(\"catégorie\", this.standardiserCatégorieVariable(catégorie));\n await fOublier();\n }\n standardiserCatégorieVariable(catégorie) {\n return typeof catégorie === \"string\"\n ? { type: \"simple\", catégorie }\n : catégorie;\n }\n async sauvegarderUnitésVariable({ idVariable, idUnité, }) {\n const { bd: bdVariable, fOublier } = await this.client.ouvrirBdTypée({\n id: idVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n await bdVariable.set(\"unités\", idUnité);\n await fOublier();\n }\n async ajouterRègleVariable({ idVariable, règle, idRègle, }) {\n const idBdRègles = await this.client.obtIdBd({\n nom: \"règles\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdRègles) {\n throw new Error(`Permission de modification refusée pour variable ${idVariable}.`);\n }\n idRègle = idRègle || uuidv4();\n const { bd: bdRègles, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdRègles,\n type: \"keyvalue\",\n schéma: schémaBdRèglesVariable,\n });\n await bdRègles.put(idRègle, règle);\n await fOublier();\n return idRègle;\n }\n async effacerRègleVariable({ idVariable, idRègle, }) {\n const idBdRègles = await this.client.obtIdBd({\n nom: \"règles\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdRègles) {\n throw new Error(`Permission de modification refusée pour variable ${idVariable}.`);\n }\n const { bd: bdRègles, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdRègles,\n type: \"keyvalue\",\n schéma: schémaBdRèglesVariable,\n });\n await bdRègles.del(idRègle);\n await fOublier();\n }\n async modifierRègleVariable({ idVariable, règleModifiée, idRègle, }) {\n await this.effacerRègleVariable({ idVariable, idRègle });\n await this.ajouterRègleVariable({\n idVariable,\n règle: règleModifiée,\n idRègle,\n });\n }\n async suivreNomsVariable({ idVariable, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idVariable,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreDescriptionsVariable({ idVariable, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idVariable,\n clef: \"descriptions\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreCatégorieVariable({ idVariable, f, }) {\n return await this.client.suivreBd({\n id: idVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n f: async (bd) => {\n const catégorie = await bd.get(\"catégorie\");\n if (catégorie && catégorie.catégorie && catégorie.type)\n await f(this.standardiserCatégorieVariable(catégorie));\n },\n });\n }\n async suivreUnitésVariable({ idVariable, f, }) {\n return await this.client.suivreBd({\n id: idVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n f: async (bd) => {\n const unités = await bd.get(\"unités\");\n await f(unités || null);\n },\n });\n }\n async suivreRèglesVariable({ idVariable, f, }) {\n const règles = {\n catégorie: {},\n propres: {},\n };\n const fFinale = async () => {\n await f(Object.entries(Object.assign({}, règles.catégorie, règles.propres)).map(([id, r]) => ({ id, règle: r })));\n };\n const fSuivreCatégorie = async (catégorie) => {\n const règleCat = {\n [uuidv4()]: {\n typeRègle: \"catégorie\",\n détails: { catégorie },\n },\n };\n règles.catégorie = règleCat;\n await fFinale();\n };\n const fOublierCatégorie = await this.suivreCatégorieVariable({\n idVariable,\n f: fSuivreCatégorie,\n });\n const fSuivreRèglesPropres = async (rgls) => {\n règles.propres = rgls;\n await fFinale();\n };\n const fOublierRèglesPropres = await this.client.suivreBdDicDeClef({\n id: idVariable,\n clef: \"règles\",\n schéma: schémaBdRèglesVariable,\n f: fSuivreRèglesPropres,\n });\n const fOublier = async () => {\n await fOublierCatégorie();\n await fOublierRèglesPropres();\n };\n return fOublier;\n }\n async suivreQualitéVariable({ idVariable, f, }) {\n const rés = {\n noms: {},\n descr: {},\n règles: [],\n };\n const fFinale = async () => {\n const scores = [\n Object.keys(rés.noms).length ? 1 : 0,\n Object.keys(rés.descr).length ? 1 : 0,\n ];\n if (rés.catégorie?.catégorie === \"numérique\") {\n scores.push(rés.unités ? 1 : 0);\n }\n if (rés.catégorie?.catégorie === \"numérique\") {\n scores.push(rés.règles.length >= 1 ? 1 : 0);\n }\n const qualité = scores.reduce((a, b) => a + b, 0) / scores.length;\n await f(qualité);\n };\n const oublierNoms = await this.suivreNomsVariable({\n idVariable,\n f: async (noms) => {\n rés.noms = noms;\n await fFinale();\n },\n });\n const oublierDescr = await this.suivreDescriptionsVariable({\n idVariable,\n f: async (descr) => {\n rés.descr = descr;\n await fFinale();\n },\n });\n const oublierUnités = await this.suivreUnitésVariable({\n idVariable,\n f: async (unités) => {\n rés.unités = unités;\n await fFinale();\n },\n });\n const oublierCatégorie = await this.suivreCatégorieVariable({\n idVariable,\n f: async (catégorie) => {\n rés.catégorie = catégorie;\n await fFinale();\n },\n });\n const oublierRègles = await this.suivreRèglesVariable({\n idVariable,\n f: async (règles) => {\n rés.règles = règles;\n await fFinale();\n },\n });\n const fOublier = async () => {\n await Promise.all([\n oublierNoms(),\n oublierDescr(),\n oublierUnités(),\n oublierCatégorie(),\n oublierRègles(),\n ]);\n };\n return fOublier;\n }\n async établirStatut({ id, statut, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n await bd.set(\"statut\", statut);\n await fOublier();\n }\n async marquerObsolète({ id, idNouvelle, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n bd.set(\"statut\", { statut: \"obsolète\", idNouvelle });\n await fOublier();\n }\n async effacerVariable({ idVariable }) {\n // Effacer l'entrée dans notre liste de variables\n await this.enleverDeMesVariables({ idVariable });\n // Effacer la variable elle-même\n for (const clef of [\"noms\", \"descriptions\", \"règles\"]) {\n const idBd = await this.client.obtIdBd({\n nom: clef,\n racine: idVariable,\n });\n if (idBd)\n await this.client.effacerBd({ id: idBd });\n }\n await this.client.effacerBd({ id: idVariable });\n }\n}\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreVariables\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreNomsVariable\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreDescriptionsVariable\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreCat\\u00E9gorieVariable\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreUnit\\u00E9sVariable\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreR\\u00E8glesVariable\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreQualit\\u00E9Variable\", null);\n//# sourceMappingURL=variables.js.map","/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n}\n\nmodule.exports = baseSum;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseSum = require('./_baseSum'),\n identity = require('./identity');\n\n/**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\nfunction sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n}\n\nmodule.exports = sum;\n","module.exports = function average(values) {\n 'use strict';\n \n return values.reduce(sum, 0) / values.length;\n};\n\nfunction sum(a, b) {\n return a + b;\n}","var average = require('average');\n\nmodule.exports = function variance(values) {\n 'use strict';\n \n var mean = average(values);\n \n function sum(a, b) {\n var diff = b - mean;\n return a + (diff * diff);\n }\n\n return values.reduce(sum, 0) / values.length;\n};","var average = require('average');\n\nmodule.exports = function covariance(a, b) {\n 'use strict';\n\n var length = a.length;\n var i = 0;\n\n var mean_a = average(a);\n var mean_b = average(b);\n var values = [];\n\n for ( ; i < length; i += 1) {\n var diff_a = a[i] - mean_a;\n var diff_b = b[i] - mean_b;\n values.push(diff_a * diff_b);\n }\n\n return average(values);\n};","var average = require('average');\nvar variance = require('variance');\nvar covariance = require('covariance');\n\n// http://en.wikipedia.org/wiki/Structural_similarity\nmodule.exports = function ssim(x, y, options) {\n options = options || {};\n\n var K1 = 'K1' in options ? options.K1 : 0.01;\n var K2 = 'K2' in options ? options.K2 : 0.03;\n var L = 'L' in options ? options.L : 255;\n var alpha = 'alpha' in options ? options.alpha : 1;\n var beta = 'beta' in options ? options.beta : 1;\n var gamma = 'gamma' in options ? options.gamma : 1;\n\n var C1 = (K1 * L) * (K1 * L);\n var C2 = (K2 * L) * (K2 * L);\n var C3 = C2 / 2;\n\n function luminance(x, y) {\n var ux = average(x);\n var uy = average(y);\n\n return (2 * ux * uy + C1) / ((ux * ux) + (uy * uy) + C1);\n }\n\n function contrast(x, y) {\n var sx2 = variance(x);\n var sy2 = variance(y);\n var sx = Math.sqrt(sx2);\n var sy = Math.sqrt(sy2);\n\n return (2 * sx * sy + C2) / (sx2 + sy2 + C2);\n }\n\n function structure(x, y) {\n var sx = Math.sqrt(variance(x));\n var sy = Math.sqrt(variance(y));\n var sxy = covariance(x, y);\n\n return (sxy + C3) / (sx * sy + C3); \n }\n\n var l = Math.pow(luminance(x, y), alpha);\n var c = Math.pow(contrast(x, y), beta);\n var s = Math.pow(structure(x, y), gamma);\n\n return l * c * s;\n};","/**\n * Implementation of Myers' online approximate string matching algorithm [1],\n * with additional optimizations suggested by [2].\n *\n * This has O((k/w) * n) expected-time where `n` is the length of the\n * text, `k` is the maximum number of errors allowed (always <= the pattern\n * length) and `w` is the word size. Because JS only supports bitwise operations\n * on 32 bit integers, `w` is 32.\n *\n * As far as I am aware, there aren't any online algorithms which are\n * significantly better for a wide range of input parameters. The problem can be\n * solved faster using \"filter then verify\" approaches which first filter out\n * regions of the text that cannot match using a \"cheap\" check and then verify\n * the remaining potential matches. The verify step requires an algorithm such\n * as this one however.\n *\n * The algorithm's approach is essentially to optimize the classic dynamic\n * programming solution to the problem by computing columns of the matrix in\n * word-sized chunks (ie. dealing with 32 chars of the pattern at a time) and\n * avoiding calculating regions of the matrix where the minimum error count is\n * guaranteed to exceed the input threshold.\n *\n * The paper consists of two parts, the first describes the core algorithm for\n * matching patterns <= the size of a word (implemented by `advanceBlock` here).\n * The second uses the core algorithm as part of a larger block-based algorithm\n * to handle longer patterns.\n *\n * [1] G. Myers, “A Fast Bit-Vector Algorithm for Approximate String Matching\n * Based on Dynamic Programming,” vol. 46, no. 3, pp. 395–415, 1999.\n *\n * [2] Šošić, M. (2014). An simd dynamic programming c/c++ library (Doctoral\n * dissertation, Fakultet Elektrotehnike i računarstva, Sveučilište u Zagrebu).\n */\nfunction reverse(s) {\n return s.split(\"\").reverse().join(\"\");\n}\n/**\n * Given the ends of approximate matches for `pattern` in `text`, find\n * the start of the matches.\n *\n * @param findEndFn - Function for finding the end of matches in\n * text.\n * @return Matches with the `start` property set.\n */\nfunction findMatchStarts(text, pattern, matches) {\n const patRev = reverse(pattern);\n return matches.map((m) => {\n // Find start of each match by reversing the pattern and matching segment\n // of text and searching for an approx match with the same number of\n // errors.\n const minStart = Math.max(0, m.end - pattern.length - m.errors);\n const textRev = reverse(text.slice(minStart, m.end));\n // If there are multiple possible start points, choose the one that\n // maximizes the length of the match.\n const start = findMatchEnds(textRev, patRev, m.errors).reduce((min, rm) => {\n if (m.end - rm.end < min) {\n return m.end - rm.end;\n }\n return min;\n }, m.end);\n return {\n start,\n end: m.end,\n errors: m.errors,\n };\n });\n}\n/**\n * Return 1 if a number is non-zero or zero otherwise, without using\n * conditional operators.\n *\n * This should get inlined into `advanceBlock` below by the JIT.\n *\n * Adapted from https://stackoverflow.com/a/3912218/434243\n */\nfunction oneIfNotZero(n) {\n return ((n | -n) >> 31) & 1;\n}\n/**\n * Block calculation step of the algorithm.\n *\n * From Fig 8. on p. 408 of [1], additionally optimized to replace conditional\n * checks with bitwise operations as per Section 4.2.3 of [2].\n *\n * @param ctx - The pattern context object\n * @param peq - The `peq` array for the current character (`ctx.peq.get(ch)`)\n * @param b - The block level\n * @param hIn - Horizontal input delta ∈ {1,0,-1}\n * @return Horizontal output delta ∈ {1,0,-1}\n */\nfunction advanceBlock(ctx, peq, b, hIn) {\n let pV = ctx.P[b];\n let mV = ctx.M[b];\n const hInIsNegative = hIn >>> 31; // 1 if hIn < 0 or 0 otherwise.\n const eq = peq[b] | hInIsNegative;\n // Step 1: Compute horizontal deltas.\n const xV = eq | mV;\n const xH = (((eq & pV) + pV) ^ pV) | eq;\n let pH = mV | ~(xH | pV);\n let mH = pV & xH;\n // Step 2: Update score (value of last row of this block).\n const hOut = oneIfNotZero(pH & ctx.lastRowMask[b]) -\n oneIfNotZero(mH & ctx.lastRowMask[b]);\n // Step 3: Update vertical deltas for use when processing next char.\n pH <<= 1;\n mH <<= 1;\n mH |= hInIsNegative;\n pH |= oneIfNotZero(hIn) - hInIsNegative; // set pH[0] if hIn > 0\n pV = mH | ~(xV | pH);\n mV = pH & xV;\n ctx.P[b] = pV;\n ctx.M[b] = mV;\n return hOut;\n}\n/**\n * Find the ends and error counts for matches of `pattern` in `text`.\n *\n * Only the matches with the lowest error count are reported. Other matches\n * with error counts <= maxErrors are discarded.\n *\n * This is the block-based search algorithm from Fig. 9 on p.410 of [1].\n */\nfunction findMatchEnds(text, pattern, maxErrors) {\n if (pattern.length === 0) {\n return [];\n }\n // Clamp error count so we can rely on the `maxErrors` and `pattern.length`\n // rows being in the same block below.\n maxErrors = Math.min(maxErrors, pattern.length);\n const matches = [];\n // Word size.\n const w = 32;\n // Index of maximum block level.\n const bMax = Math.ceil(pattern.length / w) - 1;\n // Context used across block calculations.\n const ctx = {\n P: new Uint32Array(bMax + 1),\n M: new Uint32Array(bMax + 1),\n lastRowMask: new Uint32Array(bMax + 1),\n };\n ctx.lastRowMask.fill(1 << 31);\n ctx.lastRowMask[bMax] = 1 << (pattern.length - 1) % w;\n // Dummy \"peq\" array for chars in the text which do not occur in the pattern.\n const emptyPeq = new Uint32Array(bMax + 1);\n // Map of UTF-16 character code to bit vector indicating positions in the\n // pattern that equal that character.\n const peq = new Map();\n // Version of `peq` that only stores mappings for small characters. This\n // allows faster lookups when iterating through the text because a simple\n // array lookup can be done instead of a hash table lookup.\n const asciiPeq = [];\n for (let i = 0; i < 256; i++) {\n asciiPeq.push(emptyPeq);\n }\n // Calculate `ctx.peq` - a map of character values to bitmasks indicating\n // positions of that character within the pattern, where each bit represents\n // a position in the pattern.\n for (let c = 0; c < pattern.length; c += 1) {\n const val = pattern.charCodeAt(c);\n if (peq.has(val)) {\n // Duplicate char in pattern.\n continue;\n }\n const charPeq = new Uint32Array(bMax + 1);\n peq.set(val, charPeq);\n if (val < asciiPeq.length) {\n asciiPeq[val] = charPeq;\n }\n for (let b = 0; b <= bMax; b += 1) {\n charPeq[b] = 0;\n // Set all the bits where the pattern matches the current char (ch).\n // For indexes beyond the end of the pattern, always set the bit as if the\n // pattern contained a wildcard char in that position.\n for (let r = 0; r < w; r += 1) {\n const idx = b * w + r;\n if (idx >= pattern.length) {\n continue;\n }\n const match = pattern.charCodeAt(idx) === val;\n if (match) {\n charPeq[b] |= 1 << r;\n }\n }\n }\n }\n // Index of last-active block level in the column.\n let y = Math.max(0, Math.ceil(maxErrors / w) - 1);\n // Initialize maximum error count at bottom of each block.\n const score = new Uint32Array(bMax + 1);\n for (let b = 0; b <= y; b += 1) {\n score[b] = (b + 1) * w;\n }\n score[bMax] = pattern.length;\n // Initialize vertical deltas for each block.\n for (let b = 0; b <= y; b += 1) {\n ctx.P[b] = ~0;\n ctx.M[b] = 0;\n }\n // Process each char of the text, computing the error count for `w` chars of\n // the pattern at a time.\n for (let j = 0; j < text.length; j += 1) {\n // Lookup the bitmask representing the positions of the current char from\n // the text within the pattern.\n const charCode = text.charCodeAt(j);\n let charPeq;\n if (charCode < asciiPeq.length) {\n // Fast array lookup.\n charPeq = asciiPeq[charCode];\n }\n else {\n // Slower hash table lookup.\n charPeq = peq.get(charCode);\n if (typeof charPeq === \"undefined\") {\n charPeq = emptyPeq;\n }\n }\n // Calculate error count for blocks that we definitely have to process for\n // this column.\n let carry = 0;\n for (let b = 0; b <= y; b += 1) {\n carry = advanceBlock(ctx, charPeq, b, carry);\n score[b] += carry;\n }\n // Check if we also need to compute an additional block, or if we can reduce\n // the number of blocks processed for the next column.\n if (score[y] - carry <= maxErrors &&\n y < bMax &&\n (charPeq[y + 1] & 1 || carry < 0)) {\n // Error count for bottom block is under threshold, increase the number of\n // blocks processed for this column & next by 1.\n y += 1;\n ctx.P[y] = ~0;\n ctx.M[y] = 0;\n let maxBlockScore;\n if (y === bMax) {\n const remainder = pattern.length % w;\n maxBlockScore = remainder === 0 ? w : remainder;\n }\n else {\n maxBlockScore = w;\n }\n score[y] =\n score[y - 1] +\n maxBlockScore -\n carry +\n advanceBlock(ctx, charPeq, y, carry);\n }\n else {\n // Error count for bottom block exceeds threshold, reduce the number of\n // blocks processed for the next column.\n while (y > 0 && score[y] >= maxErrors + w) {\n y -= 1;\n }\n }\n // If error count is under threshold, report a match.\n if (y === bMax && score[y] <= maxErrors) {\n if (score[y] < maxErrors) {\n // Discard any earlier, worse matches.\n matches.splice(0, matches.length);\n }\n matches.push({\n start: -1,\n end: j + 1,\n errors: score[y],\n });\n // Because `search` only reports the matches with the lowest error count,\n // we can \"ratchet down\" the max error threshold whenever a match is\n // encountered and thereby save a small amount of work for the remainder\n // of the text.\n maxErrors = score[y];\n }\n }\n return matches;\n}\n/**\n * Search for matches for `pattern` in `text` allowing up to `maxErrors` errors.\n *\n * Returns the start, and end positions and error counts for each lowest-cost\n * match. Only the \"best\" matches are returned.\n */\nexport default function search(text, pattern, maxErrors) {\n const matches = findMatchEnds(text, pattern, maxErrors);\n return findMatchStarts(text, pattern, matches);\n}\n","import ssim from \"ssim\";\nimport correspTexte from \"approx-string-match\";\nimport { faisRien, suivreBdsDeFonctionListe } from \"@constl/utils-ipa\";\nexport const rechercherDansTexte = (schéma, texte) => {\n // Une alternative - https://www.npmjs.com/package/js-levenshtein\n const correspondances = correspTexte(texte, schéma, Math.ceil(schéma.length / 4));\n const meilleure = correspondances.sort((a, b) => a.errors > b.errors ? 1 : -1)[0];\n if (meilleure) {\n const score = 1 / (meilleure.errors + 1);\n return { type: \"texte\", score, début: meilleure.start, fin: meilleure.end };\n }\n return undefined;\n};\nexport const similTexte = (texte, possibilités) => {\n if (Array.isArray(possibilités)) {\n possibilités = Object.fromEntries(possibilités.map((x) => [x, x]));\n }\n const similairités = Object.entries(possibilités).map(([clef, val]) => {\n const corresp = rechercherDansTexte(texte, val);\n if (corresp) {\n const { score, début, fin } = corresp;\n return {\n type: \"résultat\",\n score,\n clef,\n info: { type: \"texte\", texte: val, début, fin },\n };\n }\n return undefined;\n });\n const meilleure = similairités\n .filter((x) => x)\n .sort((a, b) => (a.score > b.score ? -1 : 1))[0];\n return meilleure;\n};\nexport const similImages = (image, imageRef) => {\n if (!imageRef) {\n return 0;\n }\n const { mssim } = ssim(image, imageRef);\n return mssim;\n};\nexport const combinerRecherches = async (fsRecherche, client, id, fSuivreRecherche) => {\n const fsOublier = [];\n const résultats = Object.fromEntries(Object.keys(fsRecherche).map((x) => [x, undefined]));\n const fSuivreFinale = () => {\n const résultat = Object.values(résultats)\n .filter((x) => x)\n .sort((a, b) => (aMieuxQueB(a, b) ? -1 : 1))[0];\n fSuivreRecherche(résultat);\n };\n await Promise.all(Object.entries(fsRecherche).map(async ([clef, fRecherche]) => {\n const fSuivre = async (résultat) => {\n résultats[clef] = résultat;\n fSuivreFinale();\n };\n fsOublier.push(await fRecherche(client, id, fSuivre));\n }));\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n};\nexport const sousRecherche = async (de, fListe, fRechercher, client, fSuivreRecherche) => {\n const fBranche = async (idBd, f) => {\n return await fRechercher(client, idBd, async (résultat) => {\n if (résultat)\n f({ id: idBd, résultat });\n });\n };\n const fFinale = async (résultats) => {\n const meilleur = meilleurRésultat(résultats);\n if (meilleur) {\n const résultat = {\n type: \"résultat\",\n de,\n clef: meilleur.id,\n score: meilleur.résultat.score,\n info: {\n type: \"résultat\",\n de: meilleur.résultat.de,\n info: meilleur.résultat.info,\n },\n };\n if (meilleur.résultat.clef) {\n résultat.info.clef = meilleur.résultat.clef;\n }\n await fSuivreRecherche(résultat);\n }\n };\n const fOublier = await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n return fOublier;\n};\nconst aMieuxQueB = (a, b) => {\n const xPlusImportantQueY = (x, y) => {\n while (x.type === \"résultat\")\n x = x.info;\n while (y.type === \"résultat\")\n y = y.info;\n const ordreImportanceCroissante = [\"vide\", \"texte\"];\n const iX = ordreImportanceCroissante.indexOf(x.type);\n const iY = ordreImportanceCroissante.indexOf(y.type);\n return iX > iY;\n };\n const xPlusLongQueY = (x, y) => {\n while (x.type === \"résultat\")\n x = x.info;\n while (y.type === \"résultat\")\n y = y.info;\n switch (x.type) {\n case \"texte\":\n if (y.type === \"texte\") {\n return x.fin - x.début > y.fin - y.début;\n }\n else {\n return false;\n }\n default:\n return false;\n }\n };\n return a.score > b.score\n ? true\n : a.score < b.score\n ? false\n : xPlusLongQueY(a.info, b.info)\n ? true\n : xPlusImportantQueY(a.info, b.info);\n};\nconst meilleurRésultat = (résultats) => {\n const meilleur = Object.values(résultats)\n .filter((x) => x)\n .sort((a, b) => (aMieuxQueB(a.résultat, b.résultat) ? -1 : 1))[0];\n return meilleur;\n};\nexport const rechercherSelonId = (idRecherché) => {\n return async (_client, id, fSuivreRecherche) => {\n const résultat = rechercherDansTexte(idRecherché, id);\n if (résultat) {\n const { score, début, fin } = résultat;\n await fSuivreRecherche({\n score,\n type: \"résultat\",\n de: \"id\",\n info: {\n type: \"texte\",\n début,\n fin,\n texte: id,\n },\n });\n }\n else {\n await fSuivreRecherche();\n }\n return faisRien;\n };\n};\nexport const rechercherTous = () => {\n return async (_client, _id, fSuivreRecherche) => {\n await fSuivreRecherche({\n type: \"résultat\",\n score: 1,\n de: \"*\",\n info: { type: \"vide\" },\n });\n return faisRien;\n };\n};\nexport const rechercherTousSiVide = (texte) => {\n return async (_client, _id, fSuivreRecherche) => {\n if (texte === \"\")\n await fSuivreRecherche({\n type: \"résultat\",\n score: 1,\n de: \"*\",\n info: { type: \"vide\" },\n });\n return faisRien;\n };\n};\n//# sourceMappingURL=utils.js.map","import { similImages, similTexte, rechercherDansTexte, combinerRecherches, rechercherSelonId, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherProfilsSelonActivité = () => {\n return async (client, idCompte, fSuivreRecherche) => {\n const infosCompte = {\n noms: undefined,\n image: undefined,\n courriel: undefined,\n };\n const calculerScore = () => {\n const score = [\n Object.keys(infosCompte.noms || {}).length > 0,\n infosCompte.image,\n infosCompte.courriel,\n ].filter(Boolean).length / 3;\n return {\n type: \"résultat\",\n score,\n de: \"activité\",\n info: { type: \"vide\" },\n };\n };\n const fSuivreNoms = (noms) => {\n infosCompte.noms = noms;\n fSuivreRecherche(calculerScore());\n };\n const fSuivreImage = (image) => {\n infosCompte.image = image;\n fSuivreRecherche(calculerScore());\n };\n const fSuivreCourriel = (courriel) => {\n infosCompte.courriel = courriel;\n fSuivreRecherche(calculerScore());\n };\n const fOublierNoms = await client.profil.suivreNoms({\n idCompte,\n f: fSuivreNoms,\n });\n const fOublierImage = await client.profil.suivreImage({\n idCompte,\n f: fSuivreImage,\n });\n const fOublierCourriel = await client.profil.suivreCourriel({\n idCompte,\n f: fSuivreCourriel,\n });\n const fOublier = async () => {\n await Promise.all([\n fOublierNoms(),\n fOublierImage(),\n fOublierCourriel(),\n ]);\n };\n return fOublier;\n };\n};\nexport const rechercherProfilsSelonNom = (nom) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fSuivre = (noms) => {\n const corresp = similTexte(nom, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"nom\",\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.profil.suivreNoms({\n idCompte,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherProfilsSelonCourriel = (courriel) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fSuivre = (courrielProfil) => {\n const corresp = courrielProfil\n ? rechercherDansTexte(courriel, courrielProfil)\n : undefined;\n if (corresp && courrielProfil) {\n const { score, début, fin } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n de: \"courriel\",\n info: { type: \"texte\", début, fin, texte: courrielProfil },\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.profil.suivreCourriel({\n idCompte,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherProfilsSelonTexte = (texte) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fRechercherNoms = rechercherProfilsSelonNom(texte);\n const fRechercherCourriel = rechercherProfilsSelonCourriel(texte);\n const fRechercherId = rechercherSelonId(texte);\n const fRechercherTous = rechercherTousSiVide(texte);\n return await combinerRecherches({\n noms: fRechercherNoms,\n courriel: fRechercherCourriel,\n id: fRechercherId,\n vide: fRechercherTous,\n }, client, idCompte, fSuivreRecherche);\n };\n};\nexport const rechercherProfilsSelonImage = (image) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fSuivre = (imageCompte) => {\n const score = similImages(image, imageCompte);\n fSuivreRecherche({\n type: \"résultat\",\n score,\n de: \"image\",\n info: { type: \"vide\" },\n });\n };\n const fOublier = await client.profil.suivreImage({\n idCompte,\n f: fSuivre,\n });\n return fOublier;\n };\n};\n//# sourceMappingURL=profil.js.map","import { __decorate } from \"tslib\";\nimport { isValidAddress } from \"@orbitdb/core\";\nimport { EventEmitter } from \"events\";\nimport sum from \"lodash/sum.js\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nimport { schémaStructureBdCompte, } from \"./client.js\";\nimport { faisRien, suivreBdsDeFonctionListe } from \"@constl/utils-ipa\";\nimport { rechercherProfilsSelonActivité } from \"./recherche/profil.js\";\nimport { rechercherTous } from \"./recherche/utils.js\";\nimport { cacheRechercheParNRésultats, cacheRechercheParProfondeur, cacheSuivi, } from \"./d\\u00E9corateursCache.js\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { ComposanteClientDic } from \"./composanteClient.js\";\nimport { suivreBdDeFonction } from \"@constl/utils-ipa\";\nimport { estUnContrôleurConstellation } from \"./accès/utils.js\";\nconst schémaBdPrincipaleRéseau = {\n type: \"object\",\n additionalProperties: {\n type: \"string\",\n },\n required: [],\n};\nconst INTERVALE_SALUT = 1000 * 10;\nconst FACTEUR_ATÉNUATION_CONFIANCE = 0.8;\nconst FACTEUR_ATÉNUATION_BLOQUÉS = 0.9;\nconst CONFIANCE_DE_COAUTEUR = 0.9;\nconst CONFIANCE_DE_FAVORIS = 0.7;\nconst DÉLAI_SESOUVENIR_MEMBRES_EN_LIGNE = 1000 * 60 * 60 * 24 * 30;\nconst N_DÉSIRÉ_SOUVENIR_MEMBRES_EN_LIGNE = 50;\nexport class Réseau extends ComposanteClientDic {\n client;\n bloquésPrivés;\n _fermé;\n dispositifsEnLigne;\n fsOublier;\n événements;\n constructor({ client }) {\n super({\n client,\n clef: \"réseau\",\n schémaBdPrincipale: schémaBdPrincipaleRéseau,\n });\n this.client = client;\n this.bloquésPrivés = new Set();\n this.dispositifsEnLigne = {};\n this.fsOublier = [];\n this._fermé = false;\n this.événements = new EventEmitter();\n }\n async initialiser() {\n const { sfip } = await this.client.attendreSfipEtOrbite();\n const promesses = {};\n const pubsub = sfip.libp2p.services.pubsub;\n pubsub.subscribe(this.client.sujet_réseau);\n const fÉcoutePubSub = (évé) => {\n const messageGs = évé.detail.msg;\n const id = uuidv4();\n if (messageGs.topic === this.client.sujet_réseau) {\n try {\n const promesse = this.messageReçu({\n msg: JSON.parse(new TextDecoder().decode(messageGs.data)),\n });\n promesses[id] = promesse;\n promesse.then(() => {\n delete promesses[id];\n });\n }\n catch (e) {\n console.error(e.toString());\n console.error(e.stack.toString());\n }\n }\n };\n pubsub.addEventListener(\"gossipsub:message\", fÉcoutePubSub);\n this.fsOublier.push(async () => {\n pubsub.unsubscribe(this.client.sujet_réseau);\n pubsub.removeEventListener(\"gossipsub:message\", fÉcoutePubSub);\n await Promise.all(Object.values(promesses));\n });\n const libp2p = sfip.libp2p;\n const fSuivreConnexions = () => {\n this.événements.emit(\"changementConnexions\");\n };\n const événements = [\n \"peer:discovery\",\n \"peer:connect\",\n \"peer:disconnect\",\n ];\n for (const é of événements) {\n libp2p.addEventListener(é, fSuivreConnexions);\n }\n this.fsOublier.push(...événements.map((é) => {\n return async () => libp2p.removeEventListener(é, fSuivreConnexions);\n }));\n const intervale = setInterval(() => {\n this.direSalut({});\n }, INTERVALE_SALUT);\n this.fsOublier.unshift(async () => clearInterval(intervale));\n await this.direSalut({});\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async envoyerMessageAuDispositif({ msg, idSFIP, }) {\n if (idSFIP) {\n msg.destinataire = idSFIP;\n }\n const sujet = this.client.sujet_réseau;\n const { sfip } = await this.client.attendreSfipEtOrbite();\n const pubsub = sfip.libp2p.services.pubsub;\n const msgBinaire = Buffer.from(JSON.stringify(msg));\n await pubsub.publish(sujet, msgBinaire);\n }\n async envoyerMessageAuMembre({ msg, idCompte, encrypté = true, }) {\n const signature = await this.client.signer({\n message: JSON.stringify(msg),\n });\n const msgSigné = {\n signature,\n valeur: msg,\n };\n const maintenant = Date.now();\n const dispositifsMembre = Object.values(this.dispositifsEnLigne)\n .filter((d) => d.infoDispositif.idCompte === idCompte)\n .filter((d) => d.vuÀ && maintenant - d.vuÀ < INTERVALE_SALUT + 1000 * 30);\n if (!dispositifsMembre.length)\n throw new Error(`Aucun dispositif présentement en ligne pour membre ${idCompte}`);\n await Promise.all(dispositifsMembre.map(async (d) => {\n const { idSFIP, encryption } = d.infoDispositif;\n if (encrypté) {\n // Arrêter si le dispositif n'a pas la même encryption que nous\n if (encryption?.type !== this.client.encryption.nom)\n return;\n const msgEncrypté = await this.client.encryption.encrypter({\n message: JSON.stringify(msgSigné),\n clefPubliqueDestinataire: encryption.clefPublique,\n });\n const { publique: clefPubliqueExpéditeur } = await this.client.encryption.obtClefs();\n const msgPourDispositif = {\n encrypté: true,\n clefPubliqueExpéditeur,\n données: msgEncrypté,\n };\n await this.envoyerMessageAuDispositif({\n msg: msgPourDispositif,\n idSFIP,\n });\n }\n else {\n const msgPourDispositif = {\n encrypté: false,\n données: msgSigné,\n };\n await this.envoyerMessageAuDispositif({\n msg: msgPourDispositif,\n idSFIP,\n });\n }\n }));\n }\n async direSalut({ à }) {\n const valeur = {\n type: \"Salut !\",\n contenu: {\n idSFIP: (await this.client.obtIdSFIP()).toString(),\n idDispositif: this.client.orbite.identity.id,\n clefPublique: this.client.orbite.identity.publicKey,\n signatures: this.client.orbite.identity.signatures,\n idCompte: await this.client.obtIdCompte(),\n },\n };\n const { publique: clefPublique } = await this.client.encryption.obtClefs();\n if (this.client.encryption) {\n valeur.contenu.encryption = {\n type: this.client.encryption.nom,\n clefPublique,\n };\n }\n const signature = await this.client.signer({\n message: JSON.stringify(valeur),\n });\n const message = {\n encrypté: false,\n données: {\n signature,\n valeur,\n },\n };\n try {\n await this.envoyerMessageAuDispositif({ msg: message, idSFIP: à });\n }\n catch (e) {\n // On peut avoir cette erreur si l'autre poste s'est déconnecté entre-temps\n if (!e.toString().includes(\"PublishError.InsufficientPeers\")) {\n throw e;\n }\n }\n }\n async envoyerDemandeRejoindreCompte({ idCompte, codeSecret, }) {\n const idDispositif = await this.client.obtIdDispositif();\n const msg = {\n type: \"Je veux rejoindre ce compte\",\n contenu: {\n idDispositif,\n empreinteVérification: this.client.empreinteInvitation({\n idDispositif,\n codeSecret,\n }),\n },\n };\n await this.envoyerMessageAuMembre({ msg, idCompte });\n }\n async messageReçu({ msg }) {\n if (this._fermé)\n return;\n const { encrypté, destinataire } = msg;\n if (destinataire &&\n destinataire !== (await this.client.obtIdSFIP()).toString())\n return;\n const données = encrypté\n ? JSON.parse(await this.client.encryption.décrypter({\n message: msg.données,\n clefPubliqueExpéditeur: msg\n .clefPubliqueExpéditeur,\n }))\n : msg.données;\n const { valeur, signature } = données;\n // Ignorer la plupart des messages de nous-mêmes\n if (signature.clefPublique === this.client.orbite.identity.publicKey &&\n valeur.type !== \"Salut !\") {\n return;\n }\n // Assurer que la signature est valide (message envoyé par détenteur de idDispositif)\n const signatureValide = await this.client.vérifierSignature({\n signature,\n message: JSON.stringify(valeur),\n });\n if (!signatureValide)\n return;\n const contenu = valeur.contenu;\n switch (valeur.type) {\n case \"Salut !\": {\n const contenuSalut = contenu;\n const { clefPublique } = contenuSalut;\n // S'assurer que idDispositif est la même que celle sur la signature\n if (clefPublique !== signature.clefPublique)\n return;\n await this.recevoirSalut({ message: contenuSalut });\n if (!destinataire)\n await this.direSalut({ à: contenuSalut.idSFIP }); // Renvoyer le message, si ce n'était pas déjà fait\n break;\n }\n case \"Je veux rejoindre ce compte\": {\n const contenuMessage = contenu;\n await this.client.considérerRequêteRejoindreCompte({\n requête: contenuMessage,\n });\n break;\n }\n }\n // this.écouteursMessages[valeur.type]?.(contenu);\n }\n async recevoirSalut({ message, }) {\n const dispositifValid = await this._validerInfoMembre({ info: message });\n if (!dispositifValid)\n return;\n // Peut-être possible de convertir à une méthode peer.onDisconnect pour détecter vuÀ ?\n this.dispositifsEnLigne[message.idDispositif] = {\n infoDispositif: message,\n vuÀ: message.idDispositif === (await this.client.obtIdDispositif())\n ? undefined\n : new Date().getTime(),\n };\n this.événements.emit(\"membreVu\");\n await this._sauvegarderDispositifsEnLigne();\n }\n _nettoyerDispositifsEnLigne() {\n const maintenant = new Date().getTime();\n const effaçables = Object.values(this.dispositifsEnLigne)\n .filter((d) => maintenant - (d.vuÀ || 0) > DÉLAI_SESOUVENIR_MEMBRES_EN_LIGNE)\n .sort((a, b) => ((a.vuÀ || 0) < (b.vuÀ || 0) ? -1 : 1))\n .map((d) => d.infoDispositif.idDispositif);\n const nEffacer = Object.keys(this.dispositifsEnLigne).length -\n N_DÉSIRÉ_SOUVENIR_MEMBRES_EN_LIGNE;\n const àEffacer = effaçables.slice(effaçables.length - nEffacer);\n àEffacer.forEach((m) => delete this.dispositifsEnLigne[m]);\n }\n async _sauvegarderDispositifsEnLigne() {\n this._nettoyerDispositifsEnLigne();\n await this.client.sauvegarderAuStockageLocal({\n clef: \"dispositifsEnLigne\",\n val: JSON.stringify(this.dispositifsEnLigne),\n });\n }\n async _validerInfoMembre({ info, }) {\n const { idCompte, signatures, clefPublique, idDispositif } = info;\n if (!(idCompte && signatures && clefPublique && idDispositif))\n return false;\n const sigIdValide = await this.client.vérifierSignature({\n signature: {\n signature: signatures.id,\n clefPublique: clefPublique,\n },\n message: idDispositif,\n });\n const sigClefPubliqueValide = await this.client.vérifierSignature({\n signature: {\n signature: signatures.publicKey,\n clefPublique: idDispositif,\n },\n message: clefPublique + signatures.id,\n });\n if (!isValidAddress(idCompte))\n return false;\n const { bd: bdCompte, fOublier } = await this.client.orbite.ouvrirBd({\n id: idCompte,\n });\n if (!estUnContrôleurConstellation(bdCompte.access))\n return false;\n const bdCompteValide = bdCompte.access.estAutorisé(idDispositif);\n await fOublier();\n return sigIdValide && sigClefPubliqueValide && bdCompteValide;\n }\n async faireConfianceAuMembre({ idCompte, }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.set(idCompte, \"FIABLE\");\n await fOublier();\n }\n async nePlusFaireConfianceAuMembre({ idCompte, }) {\n const { bd, fOublier } = await this.obtBd();\n if (Object.keys(await bd.allAsJSON()).includes(idCompte) &&\n (await bd.get(idCompte)) === \"FIABLE\") {\n await bd.del(idCompte);\n }\n await fOublier();\n }\n async suivreFiables({ f, idCompte, }) {\n const fFinale = async (membres) => {\n const fiables = Object.keys(membres).filter((m) => membres[m] === \"FIABLE\");\n return await f(fiables);\n };\n return await this.suivreBdPrincipale({\n idCompte,\n f: fFinale,\n });\n }\n async _initaliserBloquésPrivés() {\n const bloquésPrivésChaîne = await this.client.obtDeStockageLocal({\n clef: \"membresBloqués\",\n });\n if (bloquésPrivésChaîne) {\n JSON.parse(bloquésPrivésChaîne).forEach((b) => this.bloquésPrivés.add(b));\n this.événements.emit(\"changementMembresBloqués\");\n }\n }\n async _sauvegarderBloquésPrivés() {\n const bloqués = [...this.bloquésPrivés];\n this.client.sauvegarderAuStockageLocal({\n clef: \"membresBloqués\",\n val: JSON.stringify(bloqués),\n });\n }\n async bloquerMembre({ idCompte, privé = false, }) {\n if (privé) {\n await this.débloquerMembre({ idCompte }); // Enlever du régistre publique s'il y est déjà\n this.bloquésPrivés.add(idCompte);\n await this._sauvegarderBloquésPrivés();\n }\n else {\n const { bd, fOublier } = await this.obtBd();\n // Enlever du régistre privé s'il y existe\n await this.débloquerMembre({ idCompte });\n await bd.set(idCompte, \"BLOQUÉ\");\n await fOublier();\n }\n this.événements.emit(\"changementMembresBloqués\");\n }\n async débloquerMembre({ idCompte }) {\n const { bd, fOublier } = await this.obtBd();\n if (Object.keys(await bd.allAsJSON()).includes(idCompte) &&\n (await bd.get(idCompte)) === \"BLOQUÉ\") {\n await bd.del(idCompte);\n }\n await fOublier();\n if (this.bloquésPrivés.has(idCompte)) {\n this.bloquésPrivés.delete(idCompte);\n await this._sauvegarderBloquésPrivés();\n }\n this.événements.emit(\"changementMembresBloqués\");\n }\n async suivreBloquésPubliques({ f, idCompte, }) {\n const fFinale = async (membres) => {\n const bloqués = Object.keys(membres).filter((m) => membres[m] === \"BLOQUÉ\");\n return await f(bloqués);\n };\n return await this.suivreBdPrincipale({\n idCompte,\n f: fFinale,\n });\n }\n async suivreBloqués({ f, idCompte, }) {\n const fsOublier = [];\n let bloquésPubliques = [];\n const fFinale = async () => {\n const listeBloqués = [\n ...new Set([\n ...[...this.bloquésPrivés].map((m) => {\n return { idCompte: m, privé: true };\n }),\n ...bloquésPubliques.map((m) => {\n return { idCompte: m, privé: false };\n }),\n ]),\n ];\n return await f(listeBloqués);\n };\n fsOublier.push(await this.suivreBloquésPubliques({\n f: async (blqs) => {\n bloquésPubliques = blqs;\n return await fFinale();\n },\n idCompte,\n }));\n if (idCompte === undefined || idCompte === this.client.idCompte) {\n await this._initaliserBloquésPrivés();\n this.événements.on(\"changementMembresBloqués\", fFinale);\n fsOublier.push(async () => {\n this.événements.off(\"changementMembresBloqués\", fFinale);\n });\n await fFinale();\n }\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n }\n async suivreRelationsImmédiates({ f, idCompte, }) {\n idCompte = idCompte ? idCompte : this.client.idCompte;\n const fsOublier = [];\n const comptes = {\n suivis: [],\n favoris: [],\n coauteursBds: [],\n coauteursProjets: [],\n coauteursVariables: [],\n coauteursMotsClefs: [],\n };\n let bloqués = [];\n const fFinale = async () => {\n const tous = [\n ...comptes.suivis,\n ...comptes.favoris,\n ...comptes.coauteursBds,\n ...comptes.coauteursProjets,\n ...comptes.coauteursVariables,\n ...comptes.coauteursMotsClefs,\n ...bloqués.map((b) => {\n return { idCompte: b, confiance: -1 };\n }),\n ];\n const membresUniques = [...new Set(tous)];\n const relations = membresUniques.map((m) => {\n const { idCompte } = m;\n if (bloqués.includes(idCompte)) {\n return { idCompte, confiance: -1 };\n }\n const points = tous\n .filter((x) => x.idCompte === idCompte)\n .map((x) => x.confiance);\n const confiance = 1 - points.map((p) => 1 - p).reduce((total, c) => c * total, 1);\n return { idCompte, confiance };\n });\n return await f(relations);\n };\n fsOublier.push(await this.suivreBloqués({\n f: async (blqs) => {\n bloqués = blqs.map((b) => b.idCompte);\n await fFinale();\n },\n idCompte: idCompte,\n }));\n fsOublier.push(await this.client.suivreBdDicDeClef({\n id: idCompte,\n clef: \"réseau\",\n schéma: schémaBdPrincipaleRéseau,\n f: async (membres) => {\n comptes.suivis = Object.entries(membres)\n .filter(([_, statut]) => statut === \"FIABLE\")\n .map(([id, _]) => {\n return { idCompte: id, confiance: 1 };\n });\n return await fFinale();\n },\n }));\n const inscrireSuiviAuteurs = async (fListe, clef, confiance) => {\n fsOublier.push(await suivreBdsDeFonctionListe({\n fListe,\n f: async (membres) => {\n comptes[clef] = membres.map((idCompte) => {\n return { idCompte, confiance };\n });\n return await fFinale();\n },\n fBranche: async (id, fSuivi) => {\n return await this.client.suivreAccèsBd({\n id,\n // Enlever nous-même de la liste des coauteurs\n f: (accès) => fSuivi(accès.map((a) => a.idCompte).filter((id) => id !== idCompte)),\n });\n },\n }));\n };\n const fSuivreFavoris = async (fSuivreRacine) => {\n return await this.suivreFavorisMembre({\n idCompte: idCompte,\n f: (favoris) => {\n return fSuivreRacine((favoris || []).map((f) => f.idObjet));\n },\n });\n };\n await inscrireSuiviAuteurs(fSuivreFavoris, \"favoris\", CONFIANCE_DE_FAVORIS);\n const fSuivreBds = async (fSuivreRacine) => {\n return await this.suivreBdsMembre({\n idCompte: idCompte,\n f: (bds) => fSuivreRacine(bds || []),\n });\n };\n await inscrireSuiviAuteurs(fSuivreBds, \"coauteursBds\", CONFIANCE_DE_COAUTEUR);\n const fSuivreProjets = async (fSuivreRacine) => {\n return await this.suivreProjetsMembre({\n idCompte: idCompte,\n f: (projets) => fSuivreRacine(projets || []),\n });\n };\n await inscrireSuiviAuteurs(fSuivreProjets, \"coauteursProjets\", CONFIANCE_DE_COAUTEUR);\n const fSuivreVariables = async (fSuivreRacine) => {\n return await this.suivreVariablesMembre({\n idCompte: idCompte,\n f: (variables) => fSuivreRacine(variables || []),\n });\n };\n await inscrireSuiviAuteurs(fSuivreVariables, \"coauteursVariables\", CONFIANCE_DE_COAUTEUR);\n const fSuivreMotsClefs = async (fSuivreRacine) => {\n return await this.suivreMotsClefsMembre({\n idCompte: idCompte,\n f: (motsClefs) => fSuivreRacine(motsClefs || []),\n });\n };\n await inscrireSuiviAuteurs(fSuivreMotsClefs, \"coauteursMotsClefs\", CONFIANCE_DE_COAUTEUR);\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n }\n async suivreRelationsConfiance({ f, profondeur = Infinity, idCompteDébut, }) {\n const idCompteDébutFinal = idCompteDébut || (await this.client.obtIdCompte());\n const dicRelations = {};\n const dicOublierRelations = {};\n const verrou = new Semaphore();\n let fermer = false;\n const connectéPar = (id) => {\n return Object.entries(dicRelations)\n .filter(([_, info]) => info.relations.map((r) => r.idCompte).includes(id))\n .map(([de, _]) => de);\n };\n const calcProfondeurCompte = (id) => {\n if (id === idCompteDébutFinal)\n return 0;\n const rechercherP = ({ ids, p = 1, déjàVues = new Set(), }) => {\n const connexions = ids\n .map((id_) => connectéPar(id_).filter((x) => !déjàVues.has(x)))\n .flat();\n if (connexions.includes(idCompteDébutFinal)) {\n return p;\n }\n else if (connexions.length) {\n déjàVues = new Set(...déjàVues, ...connexions);\n return rechercherP({\n ids: connexions,\n p: p + 1,\n déjàVues,\n });\n }\n else {\n return Infinity; // Indique compte qui n'est plus connecté à `idCompteDébutFinal`\n }\n };\n return rechercherP({ ids: [id] });\n };\n const fFinale = async () => {\n const relationsFinales = [];\n for (const [de, info] of Object.entries(dicRelations)) {\n for (const r of info.relations) {\n const p = calcProfondeurCompte(de) + 1;\n relationsFinales.push({\n de,\n pour: r.idCompte,\n confiance: r.confiance,\n profondeur: p,\n });\n }\n }\n return await f(relationsFinales);\n };\n const suivreRelationsImmédiates = async (idCompte) => {\n dicRelations[idCompte] = { relations: [] };\n const fOublierRelationsImmédiates = await this.suivreRelationsImmédiates({\n f: (relations) => {\n if (dicRelations[idCompte]) {\n dicRelations[idCompte].relations = relations;\n fMiseÀJour();\n }\n },\n idCompte: idCompte,\n });\n dicOublierRelations[idCompte] = fOublierRelationsImmédiates;\n };\n const oublierRelationsImmédiates = async (idCompte) => {\n await dicOublierRelations[idCompte]();\n delete dicOublierRelations[idCompte];\n delete dicRelations[idCompte];\n };\n const fMiseÀJour = async () => {\n if (fermer)\n return;\n await verrou.acquire(\"modification\");\n const àOublier = Object.keys(dicRelations).filter((r) => calcProfondeurCompte(r) >= profondeur);\n const àSuivre = [\n ...new Set(Object.entries(dicRelations)\n .filter(([de, _]) => calcProfondeurCompte(de) + 1 < profondeur)\n .map(([_, info]) => info.relations.map((r) => r.idCompte))\n .flat()),\n ].filter((id) => !Object.keys(dicRelations).includes(id));\n await Promise.all(àOublier.map((id) => oublierRelationsImmédiates(id)));\n await Promise.all(àSuivre.map((id) => suivreRelationsImmédiates(id)));\n await fFinale();\n verrou.release(\"modification\");\n };\n await suivreRelationsImmédiates(idCompteDébutFinal);\n const fChangerProfondeur = async (p) => {\n profondeur = p;\n await fMiseÀJour();\n };\n const fOublier = async () => {\n fermer = true;\n await Promise.all(Object.values(dicOublierRelations).map((f) => f()));\n };\n return { fOublier, fChangerProfondeur };\n }\n async suivreComptesRéseau({ f, profondeur, idCompteDébut, }) {\n const fSuivi = async (relations) => {\n // S'ajouter soi-même\n relations.push({\n de: this.client.idCompte,\n pour: this.client.idCompte,\n confiance: 1,\n profondeur: 0,\n });\n const dicRelations = {};\n relations.forEach((r) => {\n if (!Object.keys(dicRelations).includes(r.pour)) {\n dicRelations[r.pour] = [];\n }\n dicRelations[r.pour].push(r);\n });\n const comptes = Object.entries(dicRelations).map(([idCompte, rs]) => {\n const maRelation = rs.find((r) => r.de === this.client.idCompte);\n if (maRelation?.confiance === 1 || maRelation?.confiance === -1) {\n return {\n idCompte,\n profondeur: maRelation.pour === this.client.idCompte ? 0 : 1,\n confiance: maRelation.confiance,\n };\n }\n const profondeurCompte = Math.min(...rs.map((r) => r.profondeur));\n const rsPositives = rs.filter((r) => r.confiance >= 0);\n const rsNégatives = rs.filter((r) => r.confiance < 0);\n const coûtNégatif = 1 -\n rsNégatives\n .map((r) => 1 +\n r.confiance *\n Math.pow(FACTEUR_ATÉNUATION_BLOQUÉS, r.profondeur - 1))\n .reduce((total, c) => c * total, 1);\n const confiance = 1 -\n rsPositives\n .map((r) => 1 -\n r.confiance *\n Math.pow(FACTEUR_ATÉNUATION_CONFIANCE, r.profondeur - 1))\n .reduce((total, c) => c * total, 1) -\n coûtNégatif;\n return {\n idCompte,\n profondeur: profondeurCompte,\n confiance,\n };\n });\n return await f(comptes);\n };\n return await this.suivreRelationsConfiance({\n f: fSuivi,\n profondeur,\n idCompteDébut,\n });\n }\n async suivreComptesRéseauEtEnLigne({ f, profondeur, idCompteDébut, }) {\n // Ne PAS mettre cette fonction en cache ! Ça ne fonctionne pas avec les\n // tailles=Infinity de suivreConnexionsMembres\n const dicComptes = {\n réseau: [],\n enLigne: [],\n };\n const fFinale = async () => {\n const membres = [...dicComptes.réseau];\n dicComptes.enLigne.forEach((c) => {\n if (!membres.find((m) => m.idCompte === c.idCompte)) {\n membres.push(c);\n }\n });\n return await f(membres);\n };\n const fOublierComptesEnLigne = await this.suivreConnexionsMembres({\n f: async (membres) => {\n const infoMembresEnLigne = membres\n .filter((m) => m.infoMembre.idCompte !== this.client.idCompte)\n .map((m) => {\n return {\n idCompte: m.infoMembre.idCompte,\n profondeur: Infinity,\n confiance: 0,\n };\n });\n dicComptes.enLigne = infoMembresEnLigne;\n return await fFinale();\n },\n });\n const fSuivreComptesRéseau = async (comptes) => {\n dicComptes.réseau = comptes;\n return await fFinale();\n };\n const { fOublier: fOublierComptesRéseau, fChangerProfondeur } = await this.suivreComptesRéseau({\n f: fSuivreComptesRéseau,\n profondeur,\n idCompteDébut,\n });\n const fOublier = async () => {\n await fOublierComptesEnLigne();\n await fOublierComptesRéseau();\n };\n return { fOublier, fChangerProfondeur };\n }\n async suivreConfianceMonRéseauPourMembre({ idCompte, f, profondeur, idCompteRéférence, }) {\n /*\n Note : Ne PAS envelopper cette fonction avec un `@cacheRechercheParProfondeur` !\n Elle retourne un nombre, pas une liste de résultat, et ça va bien sûr planter\n si on essaie de l'envelopper.\n */\n const idCompteRéférenceFinal = idCompteRéférence || (await this.client.obtIdCompte());\n const fFinale = async (membres) => {\n const infoRecherchée = membres.find((m) => m.idCompte === idCompte);\n return await f(infoRecherchée?.confiance || 0);\n };\n return await this.suivreComptesRéseau({\n f: fFinale,\n profondeur,\n idCompteDébut: idCompteRéférenceFinal,\n });\n }\n async suivreConnexionsPostesSFIP({ f, }) {\n const fFinale = async () => {\n const { sfip } = await this.client.attendreSfipEtOrbite();\n const pairs = sfip.libp2p.getPeers();\n const connexions = sfip.libp2p.getConnections();\n return await f(pairs.map((p) => {\n const pair = p.toString();\n const adresses = connexions\n .filter((c) => c.remotePeer.toString() === pair)\n .map((a) => a.remoteAddr.toString());\n return { pair, adresses };\n }));\n };\n this.événements.on(\"changementConnexions\", fFinale);\n await fFinale();\n const oublier = async () => {\n this.événements.off(\"changementConnexions\", fFinale);\n };\n return oublier;\n }\n async suivreConnexionsDispositifs({ f, }) {\n const moi = {\n infoDispositif: {\n idSFIP: (await this.client.obtIdSFIP()).toString(),\n idDispositif: await this.client.obtIdDispositif(),\n idCompte: await this.client.obtIdCompte(),\n clefPublique: (await this.client.obtIdentitéOrbite()).publicKey,\n encryption: {\n type: await this.client.encryption.obtNom(),\n clefPublique: (await this.client.encryption.obtClefs()).publique,\n },\n signatures: (await this.client.obtIdentitéOrbite()).signatures,\n },\n };\n const fFinale = async () => {\n return await f([...Object.values(this.dispositifsEnLigne), moi]);\n };\n this.événements.on(\"membreVu\", fFinale);\n await fFinale();\n const oublier = async () => {\n this.événements.off(\"membreVu\", fFinale);\n };\n return oublier;\n }\n async suivreConnexionsMembres({ f, }) {\n const fListe = async (fSuivreRacine) => {\n const fFinaleDispositifs = async (dispositifs) => {\n const membres = {};\n for (const d of dispositifs) {\n const { idCompte } = d.infoDispositif;\n if (!membres[idCompte]) {\n membres[idCompte] = {\n infoMembre: {\n idCompte: idCompte,\n dispositifs: [],\n },\n };\n }\n const { infoMembre, vuÀ } = membres[idCompte];\n infoMembre.dispositifs.push(d.infoDispositif);\n membres[idCompte].vuÀ = vuÀ\n ? d.vuÀ\n ? Math.max(vuÀ, d.vuÀ)\n : vuÀ\n : d.vuÀ;\n }\n return await fSuivreRacine(Object.values(membres));\n };\n return await this.suivreConnexionsDispositifs({ f: fFinaleDispositifs });\n };\n const fBranche = async (id, fSuivreBranche, branche) => {\n return await this.suivreProtocolesMembre({\n idCompte: id,\n f: (protocoles) => {\n fSuivreBranche({\n infoMembre: {\n ...branche.infoMembre,\n protocoles: Object.values(protocoles).flat(),\n },\n vuÀ: branche.vuÀ,\n });\n },\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f,\n fBranche,\n fIdBdDeBranche: (x) => x.infoMembre.idCompte,\n fCode: (x) => x.infoMembre.idCompte,\n });\n }\n async suivreProtocolesMembre({ f, idCompte, }) {\n return await this.client.suivreBdDicDeClef({\n id: idCompte || (await this.client.obtIdCompte()),\n clef: \"protocoles\",\n // @ts-expect-error Je ne sais pas pourquoi\n schéma: schémaStructureBdCompte,\n f,\n });\n }\n async suivreProtocolesDispositif({ idDispositif, f, }) {\n const idDispositifFinal = idDispositif || (await this.client.obtIdDispositif());\n const fRacine = async ({ fSuivreRacine, }) => {\n return await this.suivreConnexionsDispositifs({\n f: async (dispositifs) => {\n const dispositif = dispositifs.find((d) => d.infoDispositif.idDispositif === idDispositifFinal);\n if (dispositif) {\n const { idCompte } = dispositif.infoDispositif;\n return await fSuivreRacine(idCompte);\n }\n else {\n return await fSuivreRacine(undefined);\n }\n },\n });\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreProtocolesMembre({\n f: fSuivreBd,\n idCompte: id,\n });\n };\n const fFinale = async (protocoles) => {\n if (protocoles)\n return await f(protocoles[idDispositifFinal]);\n };\n return await suivreBdDeFonction({\n fRacine,\n f: fFinale,\n fSuivre,\n });\n }\n async rechercher({ f, nRésultatsDésirés = Infinity, fRecherche, fConfiance, fQualité, fObjectif, fScore, }) {\n if (!fScore) {\n fScore = (x) => {\n return (x.confiance + x.qualité + x.objectif.score) / 3;\n };\n }\n // Il y a probablement une meilleure façon de faire ça, mais pour l'instant ça passe\n fObjectif =\n fObjectif ||\n rechercherTous();\n const résultatsParMembre = {};\n const fsOublierRechercheMembres = {};\n const DÉLAI_REBOURS = 3000;\n let annulerRebours;\n let profondeur = 3;\n let annuler = false;\n const ajusterProfondeur = async (p) => {\n profondeur = p;\n if (fChangerProfondeur)\n await fChangerProfondeur(p);\n if (annulerRebours)\n clearTimeout(annulerRebours);\n };\n const débuterReboursAjusterProfondeur = (délai = DÉLAI_REBOURS) => {\n if (annuler)\n return;\n if (annulerRebours)\n clearTimeout(annulerRebours);\n const scores = Object.values(résultatsParMembre)\n .map((r) => r.résultats)\n .flat()\n .map((r) => r.résultatObjectif.score);\n const pireScoreInclus = scores.length >= nRésultatsDésirés\n ? Math.min(...scores.slice(0, nRésultatsDésirés))\n : 0;\n const parProfondeur = Object.values(résultatsParMembre).reduce(function (r, a) {\n r[String(a.membre.profondeur)] = r[String(a.membre.profondeur)] || [];\n r[String(a.membre.profondeur)].push(...a.résultats);\n return r;\n }, {});\n const lParProfondeur = Object.entries(parProfondeur)\n .sort((a, b) => (Number(a[0]) < Number(b[0]) ? -1 : 1))\n .map((p) => p[1]);\n const nScoresInclusParProfondeur = lParProfondeur.map((rs) => rs.filter((r) => r.résultatObjectif.score >= pireScoreInclus).length);\n const dernierTrois = nScoresInclusParProfondeur.slice(nScoresInclusParProfondeur.length - 3);\n const dernierQuatre = nScoresInclusParProfondeur.slice(nScoresInclusParProfondeur.length - 4);\n const nouvelleProfondeur = Math.max(3, sum(dernierTrois)\n ? profondeur + 1\n : sum(dernierQuatre)\n ? profondeur\n : profondeur - 1);\n if (nouvelleProfondeur > profondeur) {\n annulerRebours = setTimeout(() => ajusterProfondeur(nouvelleProfondeur), délai);\n }\n else if (nouvelleProfondeur < profondeur) {\n ajusterProfondeur(nouvelleProfondeur);\n }\n };\n const fFinale = async () => {\n const résultats = Object.values(résultatsParMembre)\n .map((listeRésultats) => listeRésultats.résultats)\n .flat();\n const résultatsOrdonnés = résultats.sort((a, b) => a.résultatObjectif.score < b.résultatObjectif.score ? 1 : -1);\n await f(résultatsOrdonnés.slice(0, nRésultatsDésirés));\n débuterReboursAjusterProfondeur();\n };\n const suivreRésultatsMembre = async (membre) => {\n const { idCompte } = membre;\n const fListe = async (fSuivreRacine) => {\n return await fRecherche({\n idCompte: membre.idCompte,\n fSuivi: async (résultats) => await fSuivreRacine(résultats || []),\n });\n };\n const fSuivi = async (résultats) => {\n résultatsParMembre[idCompte].résultats = résultats;\n return await fFinale();\n };\n const fBranche = async (id, fSuivreBranche) => {\n const rés = {\n id,\n };\n const fFinaleSuivreBranche = async () => {\n const { objectif, confiance, qualité } = rés;\n if (objectif && confiance !== undefined && qualité !== undefined) {\n const résultatFinalBranche = {\n id,\n résultatObjectif: {\n ...objectif,\n score: fScore(rés),\n },\n };\n return await fSuivreBranche(résultatFinalBranche);\n }\n else {\n return await fSuivreBranche(undefined);\n }\n };\n const fSuivreObjectif = async (objectif) => {\n rés.objectif = objectif;\n return await fFinaleSuivreBranche();\n };\n const fOublierObjectif = await fObjectif(this.client, id, fSuivreObjectif);\n const fSuivreConfiance = async (confiance) => {\n rés.confiance = confiance;\n return await fFinaleSuivreBranche();\n };\n const fOublierConfiance = await fConfiance(id, fSuivreConfiance);\n const fSuivreQualité = async (qualité) => {\n rés.qualité = qualité;\n return await fFinaleSuivreBranche();\n };\n const fOublierQualité = await fQualité(id, fSuivreQualité);\n const fOublierBranche = async () => {\n await Promise.all([\n fOublierObjectif(),\n fOublierConfiance(),\n fOublierQualité(),\n ]);\n };\n return fOublierBranche;\n };\n résultatsParMembre[idCompte] = {\n résultats: [],\n membre,\n mettreÀJour: fFinale,\n };\n const fOublierRechercheMembre = await suivreBdsDeFonctionListe({\n fListe,\n f: fSuivi,\n fBranche,\n });\n fsOublierRechercheMembres[idCompte] = fOublierRechercheMembre;\n };\n const oublierRésultatsMembre = async (compte) => {\n await fsOublierRechercheMembres[compte]();\n delete résultatsParMembre[compte];\n delete fsOublierRechercheMembres[compte];\n await fFinale();\n };\n const verrou = new Semaphore();\n const fSuivreComptes = async (comptes) => {\n await verrou.acquire(\"rechercher\");\n comptes = comptes.filter((c) => c.confiance >= 0); // Enlever les membres bloqués\n const nouveaux = comptes.filter((c) => !résultatsParMembre[c.idCompte]);\n const clefsObsolètes = Object.keys(résultatsParMembre).filter((m) => !comptes.find((c) => c.idCompte === m));\n const changés = comptes.filter((c) => {\n const avant = résultatsParMembre[c.idCompte];\n return (avant &&\n (c.confiance !== avant.membre.confiance ||\n c.profondeur !== avant.membre.profondeur));\n });\n await Promise.all(nouveaux.map(suivreRésultatsMembre));\n await Promise.all(changés.map(async (c) => await résultatsParMembre[c.idCompte].mettreÀJour(c)));\n await Promise.all(clefsObsolètes.map((o) => oublierRésultatsMembre(o)));\n verrou.release(\"rechercher\");\n };\n const { fChangerProfondeur, fOublier: fOublierSuivreComptes } = await this.suivreComptesRéseauEtEnLigne({\n f: fSuivreComptes,\n profondeur,\n });\n const fChangerN = async (nouveauN = Infinity) => {\n const nDésirésAvant = nRésultatsDésirés;\n nRésultatsDésirés = nouveauN;\n if (nouveauN !== nDésirésAvant) {\n await fFinale();\n débuterReboursAjusterProfondeur(0);\n }\n };\n const fOublier = async () => {\n annuler = true;\n if (annulerRebours)\n clearTimeout(annulerRebours);\n await fOublierSuivreComptes();\n await Promise.all(Object.values(fsOublierRechercheMembres).map((f) => f()));\n };\n return { fChangerN, fOublier };\n }\n async rechercherMembres({ f, nRésultatsDésirés, fObjectif, }) {\n const fConfiance = async (idCompte, fSuivi) => {\n const { fOublier } = await this.suivreConfianceMonRéseauPourMembre({\n idCompte: idCompte,\n f: fSuivi,\n profondeur: 4,\n });\n return fOublier;\n };\n const fRecherche = async ({ idCompte, fSuivi, }) => {\n await fSuivi([idCompte]); // Rien à faire parce que nous ne recherchons que le compte\n return faisRien;\n };\n const fQualité = async (idCompte, fSuivi) => {\n const fRechercherSelonActivité = rechercherProfilsSelonActivité();\n return await fRechercherSelonActivité(this.client, idCompte, async (résultat) => {\n await fSuivi(résultat?.score || 0);\n });\n };\n return await this.rechercher({\n f,\n nRésultatsDésirés,\n fRecherche,\n fConfiance,\n fQualité,\n fObjectif,\n });\n }\n async suivreConfianceAuteurs({ idItem, clef, f, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.suivreAuteursObjet({\n idObjet: idItem,\n clef,\n f: async (auteurs) => {\n const idsAuteurs = auteurs\n .filter((a) => a.accepté)\n .map((a) => a.idCompte);\n return await fSuivreRacine(idsAuteurs);\n },\n });\n };\n const fBranche = async (idAuteur, fSuivreBranche) => {\n const { fOublier } = await this.suivreConfianceMonRéseauPourMembre({\n idCompte: idAuteur,\n f: fSuivreBranche,\n profondeur: 4,\n });\n return fOublier;\n };\n const fFinale = async (confiances) => {\n const confiance = confiances.reduce((a, b) => a + b, 0);\n await f(confiance);\n };\n const fRéduction = (branches) => branches.flat();\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n fRéduction,\n });\n }\n async rechercherObjets({ f, clef, nRésultatsDésirés, fRecherche, fRechercheLesMiens, fQualité, fObjectif, toutLeRéseau = true, }) {\n if (!toutLeRéseau) {\n // Il y a probablement une meilleure façon de faire ça, mais pour l'instant ça passe\n const fObjectifFinal = fObjectif ||\n rechercherTous();\n return await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return {\n fOublier: await fRechercheLesMiens(fSuivreRacine),\n fChangerN: () => Promise.resolve(),\n }; // À faire : implémenter fChangerN ?\n },\n f,\n fBranche: async (id, fSuivreBranche) => await fObjectifFinal(this.client, id, async (résultat) => {\n if (résultat)\n return await fSuivreBranche({\n id,\n résultatObjectif: résultat,\n });\n }),\n });\n }\n const fRechercheFinale = async ({ idCompte, fSuivi, }) => {\n const résultats = {\n propres: [],\n favoris: [],\n };\n const fFinale = async () => {\n const tous = [...new Set([...résultats.propres, ...résultats.favoris])];\n await fSuivi(tous);\n };\n const fOublierPropres = await fRecherche({\n idCompte,\n f: async (propres) => {\n résultats.propres = propres || [];\n await fFinale();\n },\n });\n const fOublierFavoris = await this.suivreFavorisMembre({\n idCompte,\n f: async (favoris) => {\n résultats.favoris = favoris ? favoris.map((f) => f.idObjet) : [];\n await fFinale();\n },\n });\n return async () => {\n await fOublierPropres();\n await fOublierFavoris();\n };\n };\n const fConfiance = async (id, f) => {\n return await this.suivreConfianceAuteurs({ idItem: id, clef, f });\n };\n return await this.rechercher({\n f,\n nRésultatsDésirés,\n fRecherche: fRechercheFinale,\n fConfiance,\n fQualité,\n fObjectif,\n });\n }\n async rechercherNuées({ f, nRésultatsDésirés, fObjectif, toutLeRéseau = true, }) {\n const fRecherche = this.suivreNuéesMembre.bind(this);\n const fQualité = async (id, fSuivreQualité) => {\n return await this.client.nuées.suivreQualitéNuée({\n idNuée: id,\n f: fSuivreQualité,\n });\n };\n const fRechercheLesMiens = async (fSuivreRacine) => await this.client.nuées.suivreNuées({ f: fSuivreRacine });\n return await this.rechercherObjets({\n f,\n clef: \"nuées\",\n nRésultatsDésirés,\n fRecherche,\n fRechercheLesMiens,\n fQualité,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBds({ f, nRésultatsDésirés, fObjectif, toutLeRéseau = true, }) {\n const fRecherche = this.suivreBdsMembre.bind(this);\n const fQualité = async (id, fSuivreQualité) => {\n const fFinaleSuivreQualité = async (score) => {\n return await fSuivreQualité(score.total);\n };\n return await this.client.bds.suivreQualitéBd({\n idBd: id,\n f: fFinaleSuivreQualité,\n });\n };\n const fRechercheLesMiens = async (fSuivreRacine) => await this.client.bds.suivreBds({ f: fSuivreRacine });\n return await this.rechercherObjets({\n f,\n clef: \"bds\",\n nRésultatsDésirés,\n fRecherche,\n fRechercheLesMiens,\n fQualité,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherVariables({ f, nRésultatsDésirés, fObjectif, toutLeRéseau = true, }) {\n const fRecherche = this.suivreVariablesMembre.bind(this);\n const fQualité = async (id, fSuivreQualité) => {\n return await this.client.variables.suivreQualitéVariable({\n idVariable: id,\n f: fSuivreQualité,\n });\n };\n const fRechercheLesMiens = async (fSuivreRacine) => await this.client.variables.suivreVariables({\n f: fSuivreRacine,\n });\n return await this.rechercherObjets({\n f,\n clef: \"variables\",\n nRésultatsDésirés,\n fRecherche,\n fRechercheLesMiens,\n fQualité,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefs({ f, nRésultatsDésirés, fObjectif, toutLeRéseau = true, }) {\n const fRecherche = this.suivreMotsClefsMembre.bind(this);\n const fQualité = async (id, fSuivreQualité) => {\n return await this.client.motsClefs.suivreQualitéMotClef({\n idMotClef: id,\n f: fSuivreQualité,\n });\n };\n const fRechercheLesMiens = async (fSuivreRacine) => await this.client.motsClefs.suivreMotsClefs({\n f: fSuivreRacine,\n });\n return await this.rechercherObjets({\n f,\n clef: \"motsClefs\",\n nRésultatsDésirés,\n fRecherche,\n fRechercheLesMiens,\n fQualité,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjets({ f, nRésultatsDésirés, fObjectif, toutLeRéseau = true, }) {\n const fRecherche = this.suivreProjetsMembre.bind(this);\n const fQualité = async (id, fSuivreQualité) => {\n return await this.client.projets.suivreQualitéProjet({\n idProjet: id,\n f: fSuivreQualité,\n });\n };\n const fRechercheLesMiens = async (fSuivreRacine) => await this.client.projets.suivreProjets({ f: fSuivreRacine });\n return await this.rechercherObjets({\n f,\n clef: \"projets\",\n nRésultatsDésirés,\n fRecherche,\n fRechercheLesMiens,\n fQualité,\n fObjectif,\n toutLeRéseau,\n });\n }\n async suivreAuteursObjet({ idObjet, clef, f, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.client.suivreAccèsBd({ id: idObjet, f: fSuivreRacine });\n };\n const fBranche = async (idCompte, fSuivreBranche, branche) => {\n const fFinaleSuivreBranche = async (objetsMembre) => {\n objetsMembre = objetsMembre || [];\n return fSuivreBranche([\n {\n idCompte: branche.idCompte,\n rôle: branche.rôle,\n accepté: objetsMembre.includes(idObjet),\n },\n ]);\n };\n let fOublierBranche = undefined;\n switch (clef) {\n case \"motsClefs\":\n fOublierBranche = await this.client.motsClefs.suivreMotsClefs({\n f: fFinaleSuivreBranche,\n idCompte,\n });\n break;\n case \"variables\":\n fOublierBranche = await this.client.variables.suivreVariables({\n f: fFinaleSuivreBranche,\n idCompte,\n });\n break;\n case \"bds\":\n fOublierBranche = await this.client.bds.suivreBds({\n f: fFinaleSuivreBranche,\n idCompte,\n });\n break;\n case \"nuées\":\n fOublierBranche = await this.client.nuées.suivreNuées({\n f: fFinaleSuivreBranche,\n idCompte,\n });\n break;\n case \"projets\":\n fOublierBranche = await this.client.projets.suivreProjets({\n f: fFinaleSuivreBranche,\n idCompte,\n });\n break;\n default:\n throw new Error(clef);\n }\n return fOublierBranche;\n };\n const fIdBdDeBranche = (x) => x.idCompte;\n const fCode = (x) => x.idCompte;\n const fOublier = await suivreBdsDeFonctionListe({\n fListe,\n f,\n fBranche,\n fIdBdDeBranche,\n fCode,\n });\n return fOublier;\n }\n async suivreAuteursMotClef({ idMotClef, f, }) {\n return await this.suivreAuteursObjet({\n idObjet: idMotClef,\n clef: \"motsClefs\",\n f,\n });\n }\n async suivreAuteursVariable({ idVariable, f, }) {\n return await this.suivreAuteursObjet({\n idObjet: idVariable,\n clef: \"variables\",\n f,\n });\n }\n async suivreAuteursBd({ idBd, f, }) {\n return await this.suivreAuteursObjet({ idObjet: idBd, clef: \"bds\", f });\n }\n async suivreAuteursProjet({ idProjet, f, }) {\n return await this.suivreAuteursObjet({\n idObjet: idProjet,\n clef: \"projets\",\n f,\n });\n }\n async suivreAuteursNuée({ idNuée, f, }) {\n return await this.suivreAuteursObjet({\n idObjet: idNuée,\n clef: \"nuées\",\n f,\n });\n }\n async suivreObjetsMembre({ idCompte, fListeObjets, fSuivi, }) {\n return await this.client.suivreBdsSelonCondition({\n fListe: fListeObjets,\n fCondition: async (id, fSuivreCondition) => {\n return await this.client.suivreAccèsBd({\n id,\n f: (autorisés) => fSuivreCondition(autorisés.map((a) => a.idCompte).includes(idCompte)),\n });\n },\n f: fSuivi,\n });\n }\n async suivreBdsMembre({ idCompte, f, }) {\n return await this.suivreObjetsMembre({\n idCompte,\n fListeObjets: async (fSuivre) => await this.client.bds.suivreBds({ f: fSuivre, idCompte }),\n fSuivi: f,\n });\n }\n async suivreProjetsMembre({ idCompte, f, }) {\n return await this.suivreObjetsMembre({\n idCompte,\n fListeObjets: async (fSuivi) => await this.client.projets.suivreProjets({\n f: fSuivi,\n idCompte,\n }),\n fSuivi: f,\n });\n }\n async suivreFavorisMembre({ idCompte, f, }) {\n // suivreFavoris est différent parce qu'on n'a pas besoin de vérifier l'autorisation du membre\n return await this.client.favoris.suivreFavoris({\n f,\n idCompte,\n });\n }\n async suivreVariablesMembre({ idCompte, f, }) {\n return await this.suivreObjetsMembre({\n idCompte,\n fListeObjets: async (fSuivi) => await this.client.variables.suivreVariables({\n f: fSuivi,\n idCompte,\n }),\n fSuivi: f,\n });\n }\n async suivreMotsClefsMembre({ idCompte, f, }) {\n return await this.suivreObjetsMembre({\n idCompte,\n fListeObjets: async (fSuivi) => await this.client.motsClefs.suivreMotsClefs({\n f: fSuivi,\n idCompte,\n }),\n fSuivi: f,\n });\n }\n async suivreNuéesMembre({ idCompte, f, }) {\n return await this.suivreObjetsMembre({\n idCompte,\n fListeObjets: async (fSuivi) => await this.client.nuées.suivreNuées({\n f: fSuivi,\n idCompte,\n }),\n fSuivi: f,\n });\n }\n async suivreFavorisObjet({ idObjet, f, profondeur, }) {\n const fFinale = async (favoris) => {\n const favorisDIntérêt = favoris.filter((f) => f.idObjet === idObjet);\n await f(favorisDIntérêt);\n };\n const fListe = async (fSuivreRacine) => {\n const fSuivreComptes = async (infosMembres) => {\n // On s'ajoute à la liste des favoris\n return await fSuivreRacine([\n this.client.idCompte,\n ...infosMembres.map((i) => i.idCompte),\n ]);\n };\n return await this.suivreComptesRéseauEtEnLigne({\n f: fSuivreComptes,\n profondeur,\n idCompteDébut: this.client.idCompte,\n });\n };\n const fBranche = async (idCompte, fSuivreBranche) => {\n return await this.suivreFavorisMembre({\n idCompte: idCompte,\n f: (favoris) => fSuivreBranche(favoris\n ? favoris.map((fav) => {\n return { idCompte, ...fav };\n })\n : undefined),\n });\n };\n return await this.client.suivreBdsDeFonctionRecherche({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreRéplications({ idObjet, f, profondeur, }) {\n const résultats = { connexionsMembres: [], connexionsDispositifs: [], favoris: [] };\n const fFinale = async () => {\n const { connexionsMembres, favoris } = résultats;\n const idsMembres = favoris.map((fav) => fav.favoris.idCompte);\n const membres = connexionsMembres.filter((c) => idsMembres.includes(c.infoMembre.idCompte));\n const dispositifs = (await Promise.all(favoris.map(async (fav) => {\n const { favoris, dispositifs } = fav;\n return await Promise.all(dispositifs.map(async (d) => {\n const vuÀ = résultats.connexionsDispositifs.find((c) => c.infoDispositif.idDispositif === d)?.vuÀ;\n const idCompte = résultats.connexionsDispositifs.find((c) => c.infoDispositif.idDispositif === d)?.infoDispositif.idCompte;\n const dispositifsRéplication = {\n idObjet,\n idDispositif: d,\n idCompte,\n bd: await this.client.favoris.estÉpingléSurDispositif({\n dispositifs: favoris.dispositifs,\n idDispositif: d,\n }),\n fichiers: await this.client.favoris.estÉpingléSurDispositif({\n dispositifs: favoris.dispositifsFichiers,\n idDispositif: d,\n }),\n récursif: favoris.récursif,\n vuÀ,\n };\n return dispositifsRéplication;\n }));\n }))).flat();\n const réplications = {\n membres,\n dispositifs,\n };\n return await f(réplications);\n };\n const fOublierConnexionsMembres = await this.suivreConnexionsMembres({\n f: async (connexions) => {\n résultats.connexionsMembres = connexions;\n return await fFinale();\n },\n });\n const fOublierConnexionsDispositifs = await this.suivreConnexionsDispositifs({\n f: async (connexions) => {\n résultats.connexionsDispositifs = connexions;\n return await fFinale();\n },\n });\n const fSuivreFavoris = async (favoris) => {\n résultats.favoris = favoris;\n return await fFinale();\n };\n const fListeFavoris = async (fSuivreRacine) => {\n return await this.suivreFavorisObjet({\n idObjet,\n f: fSuivreRacine,\n profondeur,\n });\n };\n const fBrancheFavoris = async (id, fSuivreBranche, branche) => {\n const fSuivreDispositifsMembre = async (dispositifs) => {\n return await fSuivreBranche({ favoris: branche, dispositifs });\n };\n const fOublierDispositifsMembre = await this.client.suivreDispositifs({\n f: fSuivreDispositifsMembre,\n idCompte: id,\n });\n return async () => {\n await fOublierDispositifsMembre();\n };\n };\n const fIdBdDeBranche = (x) => x.idCompte;\n const fCode = (x) => x.idCompte;\n const { fOublier: fOublierFavoris, fChangerProfondeur } = await this.client.suivreBdsDeFonctionRecherche({\n fListe: fListeFavoris,\n f: fSuivreFavoris,\n fBranche: fBrancheFavoris,\n fIdBdDeBranche,\n fCode,\n });\n const fOublier = async () => {\n await fOublierFavoris();\n await fOublierConnexionsMembres();\n await fOublierConnexionsDispositifs();\n };\n return { fOublier, fChangerProfondeur };\n }\n async suivreBdsDeNuée({ idNuée, f, nRésultatsDésirés, }) {\n const fBranche = async (idCompte, f) => {\n return await this.client.bds.rechercherBdsParNuée({\n idNuée,\n f,\n idCompte,\n });\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreComptesRéseauEtEnLigne({\n f: async (résultats) => await fSuivreRacine(résultats.map((r) => r.idCompte)),\n profondeur: nRésultatsDésirés,\n });\n };\n return await this.client.suivreBdsDeFonctionRecherche({\n fListe,\n f,\n fBranche,\n });\n }\n async suivreÉlémentsDeTableauxUniques({ idNuéeUnique, clef, f, nBds = 100, }) {\n const fListe = async (fSuivreRacine) => {\n const fListeListe = async (fSuivreRacineListe) => {\n return await this.suivreBdsDeNuée({\n idNuée: idNuéeUnique,\n f: fSuivreRacineListe,\n nRésultatsDésirés: nBds,\n });\n };\n const fBrancheListe = async (idBd, f) => {\n return await this.suivreAuteursBd({\n idBd,\n f: async (auteurs) => {\n const idCompte = auteurs.find((a) => a.accepté)?.idCompte;\n const infoBdDeMembre = idCompte\n ? {\n bd: idBd,\n idCompte,\n }\n : undefined;\n return await f(infoBdDeMembre);\n },\n });\n };\n return await this.client.suivreBdsDeFonctionRecherche({\n fListe: fListeListe,\n f: fSuivreRacine,\n fBranche: fBrancheListe,\n });\n };\n const fBranche = async (idBd, f, branche) => {\n const { idCompte } = branche;\n const fSuivreTableaux = async ({ fSuivreRacine, }) => {\n return await this.client.bds.suivreIdTableauParClef({\n idBd,\n clef,\n f: (idTableau) => {\n if (idTableau)\n fSuivreRacine(idTableau);\n },\n });\n };\n const fSuivreDonnéesDeTableau = async ({ id, fSuivreBd, }) => {\n const fSuivreDonnéesTableauFinale = async (données) => {\n const donnéesMembre = données.map((d) => {\n return {\n idCompte,\n élément: d,\n };\n });\n return await fSuivreBd(donnéesMembre);\n };\n return await this.client.tableaux.suivreDonnées({\n idTableau: id,\n f: fSuivreDonnéesTableauFinale,\n });\n };\n const fFinale = async (données) => {\n return await f(données || []);\n };\n return await suivreBdDeFonction({\n fRacine: fSuivreTableaux,\n f: fFinale,\n fSuivre: fSuivreDonnéesDeTableau,\n });\n };\n const fIdBdDeBranche = (b) => b.bd;\n const fCode = (b) => b.bd;\n return await this.client.suivreBdsDeFonctionRecherche({\n fListe,\n f,\n fBranche,\n fIdBdDeBranche,\n fCode,\n });\n }\n async fermer() {\n this._fermé = true;\n await Promise.all(this.fsOublier.map((f) => f()));\n }\n}\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreFiables\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreBloqu\\u00E9sPubliques\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreBloqu\\u00E9s\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreRelationsImm\\u00E9diates\", null);\n__decorate([\n cacheRechercheParProfondeur\n], Réseau.prototype, \"suivreRelationsConfiance\", null);\n__decorate([\n cacheRechercheParProfondeur\n], Réseau.prototype, \"suivreComptesR\\u00E9seau\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreConnexionsPostesSFIP\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreConnexionsDispositifs\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreConnexionsMembres\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreProtocolesMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreProtocolesDispositif\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreAuteursObjet\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreBdsMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreProjetsMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreFavorisMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreVariablesMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreMotsClefsMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreNu\\u00E9esMembre\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Réseau.prototype, \"suivreBdsDeNu\\u00E9e\", null);\n//# sourceMappingURL=reseau.js.map","import Semaphore from \"@chriscdn/promise-semaphore\";\nimport EventEmitter from \"events\";\nconst importationAuth = import(\"@localfirst/auth\");\nconst importationCrypto = import(\"@localfirst/crypto\");\nconst verrouImportation = new Semaphore();\nlet auth;\nconst obtAuth = async () => {\n await verrouImportation.acquire(\"auth\");\n if (!auth)\n auth = await importationAuth;\n verrouImportation.release(\"auth\");\n return auth;\n};\nlet crypto;\nconst obtCrypto = async () => {\n await verrouImportation.acquire(\"crypto\");\n if (!crypto)\n crypto = await importationCrypto;\n verrouImportation.release(\"crypto\");\n return crypto;\n};\nexport class EncryptionLocalFirst {\n événements;\n clefs;\n nom = \"local-first-auth\";\n constructor() {\n this.événements =\n new EventEmitter();\n obtAuth().then(({ asymmetric }) => {\n const { publicKey, secretKey } = asymmetric.keyPair();\n this.clefs = { secrète: secretKey, publique: publicKey };\n this.événements.emit(\"clefs\", this.clefs);\n });\n }\n async obtClefs() {\n const clefs = this.clefs ||\n (await new Promise((résoudre) => {\n this.événements.once(\"clefs\", résoudre);\n }));\n return clefs;\n }\n async encrypter({ message, clefPubliqueDestinataire, }) {\n const { asymmetric } = await obtAuth();\n const clefs = await this.obtClefs();\n return asymmetric\n .encrypt({\n secret: message,\n recipientPublicKey: clefPubliqueDestinataire,\n senderSecretKey: clefs.secrète,\n })\n .toString();\n }\n async décrypter({ message, clefPubliqueExpéditeur, }) {\n const { asymmetric } = await obtAuth();\n const clefs = await this.obtClefs();\n return asymmetric.decrypt({\n cipher: message,\n recipientSecretKey: clefs.secrète,\n senderPublicKey: clefPubliqueExpéditeur,\n });\n }\n async clefAléatoire(n = 6) {\n const { randomKey } = await obtCrypto();\n return randomKey(n);\n }\n async obtNom() {\n return this.nom;\n }\n}\n//# sourceMappingURL=encryption.js.map","import { __decorate } from \"tslib\";\nimport { isNode, isElectronMain } from \"wherearewe\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { ComposanteClientDic } from \"./composanteClient.js\";\nconst schémaBdPrincipale = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n properties: {\n dispositifs: {\n anyOf: [\n {\n type: \"array\",\n items: { type: \"string\" },\n },\n { type: \"string\" },\n ],\n },\n dispositifsFichiers: {\n type: [\"array\", \"string\"],\n anyOf: [\n {\n type: \"array\",\n items: { type: \"string\" },\n nullable: true,\n },\n {\n type: \"string\",\n nullable: true,\n },\n ],\n nullable: true,\n },\n récursif: { type: \"boolean\" },\n },\n required: [\"dispositifs\", \"récursif\"],\n },\n required: [],\n};\nexport class Favoris extends ComposanteClientDic {\n _promesseInit;\n oublierÉpingler;\n constructor({ client }) {\n super({ client, clef: \"favoris\", schémaBdPrincipale });\n this._promesseInit = this._épinglerFavoris();\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async _épinglerFavoris() {\n let précédentes = [];\n const fFinale = async (favoris) => {\n const nouvelles = [];\n await Promise.all(Object.entries(favoris).map(async ([id, fav]) => {\n const épinglerBd = await this.estÉpingléSurDispositif({\n dispositifs: fav.dispositifs,\n });\n const épinglerFichiers = await this.estÉpingléSurDispositif({\n dispositifs: fav.dispositifsFichiers,\n });\n if (épinglerBd)\n await this.client.épingles.épinglerBd({\n id,\n récursif: fav.récursif,\n fichiers: épinglerFichiers,\n });\n nouvelles.push(id);\n }));\n const àOublier = précédentes.filter((id) => !nouvelles.includes(id));\n await Promise.all(àOublier.map(async (id) => await this.client.épingles.désépinglerBd({ id })));\n précédentes = nouvelles;\n };\n const fOublier = await this.suivreBdPrincipale({\n f: fFinale,\n });\n this.oublierÉpingler = fOublier;\n }\n async suivreFavoris({ f, idCompte, }) {\n const fFinale = async (favoris) => {\n const favorisFinaux = Object.entries(favoris).map(([idObjet, élément]) => {\n return {\n idObjet,\n ...élément,\n };\n });\n await f(favorisFinaux);\n };\n return await this.suivreBdPrincipale({\n idCompte,\n f: fFinale,\n });\n }\n async épinglerFavori({ idObjet, dispositifs = \"TOUS\", dispositifsFichiers = \"INSTALLÉ\", récursif = true, }) {\n const { bd, fOublier } = await this.obtBd();\n const élément = {\n récursif,\n dispositifs,\n };\n if (dispositifsFichiers)\n élément.dispositifsFichiers = dispositifsFichiers;\n await bd.put(idObjet, élément);\n await fOublier();\n }\n async désépinglerFavori({ idObjet }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.del(idObjet);\n await fOublier();\n }\n async suivreÉtatFavori({ idObjet, f, }) {\n return await this.suivreBdPrincipale({\n f: (favoris) => f(favoris[idObjet]),\n });\n }\n async suivreEstÉpingléSurDispositif({ idObjet, f, idDispositif, }) {\n const fFinale = async (élément) => {\n const bdEstÉpinglée = await this.estÉpingléSurDispositif({\n dispositifs: élément?.dispositifs,\n idDispositif,\n });\n const fichiersSontÉpinglés = await this.estÉpingléSurDispositif({\n dispositifs: élément?.dispositifsFichiers,\n idDispositif,\n });\n return await f({\n idObjet,\n bd: bdEstÉpinglée,\n fichiers: fichiersSontÉpinglés,\n récursif: élément?.récursif || false,\n });\n };\n return await this.suivreÉtatFavori({ idObjet, f: fFinale });\n }\n async estÉpingléSurDispositif({ dispositifs, idDispositif, }) {\n idDispositif = idDispositif || (await this.client.obtIdDispositif());\n if (dispositifs === undefined) {\n return false;\n }\n else if (dispositifs === \"TOUS\") {\n return true;\n }\n else if (dispositifs === \"INSTALLÉ\") {\n if (idDispositif === (await this.client.obtIdDispositif())) {\n return isNode || isElectronMain;\n }\n else {\n return false; // En réalité, inconnu. Mais on ne peut pas magiquement deviner la plateforme d'un autre paire.\n }\n }\n else if (typeof dispositifs === \"string\") {\n return dispositifs === idDispositif;\n }\n else {\n return dispositifs.includes(idDispositif);\n }\n }\n async fermer() {\n await this._promesseInit;\n if (this.oublierÉpingler)\n await this.oublierÉpingler();\n }\n}\n__decorate([\n cacheSuivi\n], Favoris.prototype, \"suivreFavoris\", null);\n__decorate([\n cacheSuivi\n], Favoris.prototype, \"suivre\\u00C9tatFavori\", null);\n__decorate([\n cacheSuivi\n], Favoris.prototype, \"suivreEst\\u00C9pingl\\u00E9SurDispositif\", null);\n//# sourceMappingURL=favoris.js.map","import { __decorate } from \"tslib\";\nimport { write as writeXLSX, utils } from \"xlsx\";\nimport toBuffer from \"it-to-buffer\";\nimport path from \"path\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { schémaStructureBdNoms, } from \"./types.js\";\nimport { traduire, zipper, uneFois, attendreStabilité, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { ComposanteClientListe } from \"./composanteClient.js\";\nimport { estUnContrôleurConstellation } from \"./accès/utils.js\";\nconst schémaStructureBdMotsClefsdeProjet = {\n type: \"string\",\n};\nconst schémaStuctureBdsDeProjet = { type: \"string\" };\nexport const MAX_TAILLE_IMAGE = 500 * 1000; // 500 kilooctets\nexport const MAX_TAILLE_IMAGE_VIS = 1500 * 1000; // 1,5 megaoctets\nconst schémaBdPrincipale = { type: \"string\" };\nconst schémaStructureBdProjet = {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n noms: { type: \"string\" },\n descriptions: { type: \"string\" },\n bds: { type: \"string\" },\n image: { type: \"string\", nullable: true },\n motsClefs: { type: \"string\" },\n statut: {\n type: \"object\",\n properties: {\n statut: { type: \"string\" },\n idNouvelle: { type: \"string\", nullable: true },\n },\n required: [\"statut\"],\n },\n copiéDe: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n },\n required: [\"id\"],\n },\n },\n required: [\"noms\", \"descriptions\", \"statut\", \"type\", \"bds\", \"copiéDe\"],\n};\nexport class Projets extends ComposanteClientListe {\n constructor({ client }) {\n super({ client, clef: \"projets\", schémaBdPrincipale: schémaBdPrincipale });\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async suivreProjets({ f, idCompte, }) {\n return await this.suivreBdPrincipale({\n idCompte,\n f,\n });\n }\n async créerProjet() {\n const { bd: bdRacine, fOublier: fOublierRacine } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n const idBdProjet = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n address: undefined,\n write: await this.client.obtIdCompte(),\n },\n });\n const { bd: bdProjet, fOublier: fOublierProjet } = await this.client.ouvrirBdTypée({\n id: idBdProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n const accès = bdProjet.access;\n if (!estUnContrôleurConstellation(accès))\n throw Error(\"Contrôleur de type non reconnu.\");\n const optionsAccès = { address: accès.address };\n await bdProjet.set(\"type\", \"projet\");\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdProjet.set(\"noms\", idBdNoms);\n const idBdDescr = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdProjet.set(\"descriptions\", idBdDescr);\n const idBdBds = await this.client.créerBdIndépendante({\n type: \"set\",\n optionsAccès,\n });\n await bdProjet.set(\"bds\", idBdBds);\n const idBdMotsClefs = await this.client.créerBdIndépendante({\n type: \"set\",\n optionsAccès,\n });\n await bdProjet.set(\"motsClefs\", idBdMotsClefs);\n await bdProjet.set(\"statut\", { statut: \"active\" });\n await bdRacine.add(idBdProjet);\n await Promise.all([fOublierRacine(), fOublierProjet()]);\n return idBdProjet;\n }\n async copierProjet({ idProjet }) {\n const { bd: bdBase, fOublier: fOublierBase } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n const idNouveauProjet = await this.créerProjet();\n const { bd: nouvelleBd, fOublier: fOublierNouvelle } = await this.client.ouvrirBdTypée({\n id: idNouveauProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await fOublierNoms();\n await this.sauvegarderNomsProjet({ idProjet: idNouveauProjet, noms });\n }\n const idBdDescr = await bdBase.get(\"descriptions\");\n if (idBdDescr) {\n const { bd: bdDescr, fOublier: fOublierDescr } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const descriptions = await bdDescr.allAsJSON();\n await fOublierDescr();\n await this.sauvegarderDescriptionsProjet({\n idProjet: idNouveauProjet,\n descriptions,\n });\n }\n const idBdMotsClefs = await bdBase.get(\"motsClefs\");\n if (idBdMotsClefs) {\n const { bd: bdMotsClefs, fOublier: fOublierMotsClefs } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaStructureBdMotsClefsdeProjet,\n });\n const idsMotsClefs = (await bdMotsClefs.all()).map((x) => x.value);\n await fOublierMotsClefs();\n await this.ajouterMotsClefsProjet({\n idProjet: idNouveauProjet,\n idsMotsClefs,\n });\n }\n const idBdBds = await bdBase.get(\"bds\");\n if (idBdBds) {\n const { bd: bdBds, fOublier: fOublierBds } = await this.client.ouvrirBdTypée({\n id: idBdBds,\n type: \"set\",\n schéma: schémaStuctureBdsDeProjet,\n });\n const bds = (await bdBds.all()).map((x) => x.value);\n await fOublierBds();\n await Promise.all(bds.map(async (idBd) => {\n await this.ajouterBdProjet({ idProjet: idNouveauProjet, idBd });\n }));\n }\n const statut = (await bdBase.get(\"statut\")) || {\n statut: \"active\",\n };\n await nouvelleBd.set(\"statut\", statut);\n const image = await bdBase.get(\"image\");\n if (image)\n await nouvelleBd.set(\"image\", image);\n await nouvelleBd.set(\"copiéDe\", { id: idProjet });\n await Promise.all([fOublierBase(), fOublierNouvelle()]);\n return idNouveauProjet;\n }\n async ajouterÀMesProjets({ idProjet }) {\n const { bd: bdRacine, fOublier } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bdRacine.add(idProjet);\n await fOublier();\n }\n async enleverDeMesProjets({ idProjet }) {\n const { bd: bdRacine, fOublier } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bdRacine.del(idProjet);\n await fOublier();\n }\n async inviterAuteur({ idProjet, idCompteAuteur, rôle, }) {\n await this.client.donnerAccès({\n idBd: idProjet,\n identité: idCompteAuteur,\n rôle,\n });\n }\n async _obtBdNoms({ idProjet }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idProjet,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour Projet ${idProjet}.`);\n }\n return await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n }\n async sauvegarderNomsProjet({ idProjet, noms, }) {\n const { bd: bdNoms, fOublier } = await this._obtBdNoms({ idProjet });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async sauvegarderNomProjet({ idProjet, langue, nom, }) {\n const { bd: bdNoms, fOublier } = await this._obtBdNoms({ idProjet });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async effacerNomProjet({ idProjet, langue, }) {\n const { bd: bdNoms, fOublier } = await this._obtBdNoms({ idProjet });\n await bdNoms.del(langue);\n await fOublier();\n }\n async _obtBdDescr({ idProjet }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idProjet,\n type: \"keyvalue\",\n });\n if (!idBdDescr) {\n throw new Error(`Permission de modification refusée pour Projet ${idProjet}.`);\n }\n return await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n }\n async sauvegarderDescriptionsProjet({ idProjet, descriptions, }) {\n const { bd: bdDescr, fOublier } = await this._obtBdDescr({ idProjet });\n for (const lng in descriptions) {\n await bdDescr.set(lng, descriptions[lng]);\n }\n await fOublier();\n }\n async sauvegarderDescriptionProjet({ idProjet, langue, description, }) {\n const { bd: bdDescr, fOublier } = await this._obtBdDescr({ idProjet });\n await bdDescr.set(langue, description);\n await fOublier();\n }\n async effacerDescriptionProjet({ idProjet, langue, }) {\n const { bd: bdDescr, fOublier } = await this._obtBdDescr({ idProjet });\n await bdDescr.del(langue);\n await fOublier();\n }\n async _obtBdMotsClefs({ idProjet, }) {\n const idBdMotsClefs = await this.client.obtIdBd({\n nom: \"motsClefs\",\n racine: idProjet,\n type: \"set\",\n });\n if (!idBdMotsClefs) {\n throw new Error(`Permission de modification refusée pour projet ${idProjet}.`);\n }\n return await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaStructureBdMotsClefsdeProjet,\n });\n }\n async ajouterMotsClefsProjet({ idProjet, idsMotsClefs, }) {\n if (!Array.isArray(idsMotsClefs))\n idsMotsClefs = [idsMotsClefs];\n const { bd: bdMotsClefs, fOublier } = await this._obtBdMotsClefs({\n idProjet,\n });\n await Promise.all(idsMotsClefs.map(async (id) => {\n const motsClefsExistants = (await bdMotsClefs.all()).map((x) => x.value);\n if (!motsClefsExistants.includes(id))\n await bdMotsClefs.add(id);\n }));\n await fOublier();\n }\n async effacerMotClefProjet({ idProjet, idMotClef, }) {\n const { bd: bdMotsClefs, fOublier } = await this._obtBdMotsClefs({\n idProjet,\n });\n await bdMotsClefs.del(idMotClef);\n await fOublier();\n }\n async _obtBdBds({ idProjet, }) {\n const idBdBds = await this.client.obtIdBd({\n nom: \"bds\",\n racine: idProjet,\n type: \"set\",\n });\n if (!idBdBds)\n throw new Error(`Permission de modification refusée pour Projet ${idProjet}.`);\n return await this.client.ouvrirBdTypée({\n id: idBdBds,\n type: \"set\",\n schéma: schémaStructureBdMotsClefsdeProjet,\n });\n }\n async ajouterBdProjet({ idProjet, idBd, }) {\n const { bd: bdBds, fOublier } = await this._obtBdBds({ idProjet });\n await bdBds.add(idBd);\n await fOublier();\n }\n async effacerBdProjet({ idProjet, idBd, }) {\n const { bd: bdBds, fOublier } = await this._obtBdBds({ idProjet });\n // Effacer l'entrée dans notre liste de bds (n'efface pas la BD elle-même)\n await bdBds.del(idBd);\n await fOublier();\n }\n async marquerObsolète({ idProjet, idNouvelle, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n bd.set(\"statut\", { statut: \"obsolète\", idNouvelle });\n await fOublier();\n }\n async changerStatutProjet({ idProjet, statut, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n bd.set(\"statut\", statut);\n await fOublier();\n }\n async marquerActif({ idProjet }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n bd.set(\"statut\", { statut: \"active\" });\n await fOublier();\n }\n async marquerJouet({ idProjet }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n bd.set(\"statut\", { statut: \"jouet\" });\n await fOublier();\n }\n async marquerInterne({ idProjet }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n bd.set(\"statut\", { statut: \"interne\" });\n await fOublier();\n }\n async sauvegarderImage({ idProjet, image, }) {\n if (image.contenu.byteLength > MAX_TAILLE_IMAGE) {\n throw new Error(\"Taille maximale excédée\");\n }\n const idImage = await this.client.ajouterÀSFIP(image);\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n await bd.set(\"image\", idImage);\n await fOublier();\n }\n async effacerImage({ idProjet }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n await bd.del(\"image\");\n await fOublier();\n }\n async suivreImage({ idProjet, f, }) {\n return await this.client.suivreBd({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n f: async (bd) => {\n const idImage = await bd.get(\"image\");\n if (!idImage) {\n return await f(null);\n }\n else {\n const image = await this.client.obtFichierSFIP({\n id: idImage,\n max: MAX_TAILLE_IMAGE_VIS,\n });\n return await f(image);\n }\n },\n });\n }\n async suivreNomsProjet({ idProjet, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idProjet,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreDescriptionsProjet({ idProjet, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idProjet,\n clef: \"descriptions\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreMotsClefsProjet({ idProjet, f, }) {\n const motsClefs = {};\n const fFinale = async () => {\n if (motsClefs.propres && motsClefs.bds) {\n const motsClefsFinaux = [\n ...motsClefs.propres.map((idMotClef) => ({\n idMotClef,\n source: \"projet\",\n })),\n ...motsClefs.bds.map((idMotClef) => ({ idMotClef, source: \"bds\" })),\n ];\n return await f(motsClefsFinaux);\n }\n };\n const fFinalePropres = async (mots) => {\n motsClefs.propres = mots;\n return await fFinale();\n };\n const fOublierMotsClefsPropres = await this.client.suivreBdListeDeClef({\n id: idProjet,\n clef: \"motsClefs\",\n schéma: { type: \"string\" },\n f: fFinalePropres,\n });\n const fFinaleBds = async (mots) => {\n motsClefs.bds = mots;\n return await fFinale();\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBdsProjet({ idProjet, f: fSuivreRacine });\n };\n const fBranche = async (idBd, fSuivi) => {\n return await this.client.bds.suivreMotsClefsBd({ idBd, f: fSuivi });\n };\n const fOublierMotsClefsBds = await suivreBdsDeFonctionListe({\n fListe,\n f: fFinaleBds,\n fBranche,\n });\n return async () => {\n await fOublierMotsClefsPropres();\n await fOublierMotsClefsBds();\n };\n }\n async suivreBdsProjet({ idProjet, f, }) {\n return await this.client.suivreBdListeDeClef({\n id: idProjet,\n clef: \"bds\",\n schéma: { type: \"string\" },\n f,\n });\n }\n async suivreVariablesProjet({ idProjet, f, }) {\n const fFinale = async (variables) => {\n return await f(variables || []);\n };\n const fBranche = async (idBd, f) => {\n return await this.client.bds.suivreVariablesBd({ idBd, f });\n };\n const fSuivreBds = async ({ id, fSuivreBd, }) => {\n return await this.client.suivreBdsDeBdListe({\n id,\n f: fSuivreBd,\n fBranche,\n });\n };\n return await this.client.suivreBdDeClef({\n id: idProjet,\n clef: \"bds\",\n f: fFinale,\n fSuivre: fSuivreBds,\n });\n }\n async suivreQualitéProjet({ idProjet, f, }) {\n const fFinale = async (scoresBds) => {\n return await f(scoresBds.length\n ? scoresBds.reduce((a, b) => a + b, 0) / scoresBds.length\n : 0);\n };\n const fListe = async (fSuiviListe) => {\n return await this.suivreBdsProjet({ idProjet, f: fSuiviListe });\n };\n const fBranche = async (idBd, fSuiviBranche) => {\n return await this.client.bds.suivreQualitéBd({\n idBd,\n f: (score) => fSuiviBranche(score.total),\n });\n };\n const fRéduction = (scores) => {\n return scores.flat();\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n fRéduction,\n });\n }\n async suivreDonnéesExportation({ idProjet, langues, f, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n const { nomsProjet, données } = info;\n if (!données)\n return;\n const idCourt = idProjet.split(\"/\").pop();\n const nomProjet = nomsProjet && langues\n ? traduire(nomsProjet, langues) || idCourt\n : idCourt;\n return await f({\n nomProjet,\n bds: données,\n });\n };\n const fOublierDonnées = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.suivreBdsProjet({ idProjet, f: fSuivreRacine });\n },\n f: async (données) => {\n info.données = données;\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.client.bds.suivreDonnéesExportation({\n idBd: id,\n langues,\n f: fSuivreBranche,\n });\n },\n });\n fsOublier.push(fOublierDonnées);\n if (langues) {\n const fOublierNomsProjet = await this.suivreNomsProjet({\n idProjet,\n f: async (noms) => {\n info.nomsProjet = noms;\n await fFinale();\n },\n });\n fsOublier.push(fOublierNomsProjet);\n }\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n }\n async exporterDonnées({ idProjet, langues, nomFichier, patience = 500, }) {\n const données = await uneFois(async (fSuivi) => {\n return await this.suivreDonnéesExportation({\n idProjet,\n langues,\n f: fSuivi,\n });\n }, attendreStabilité(patience));\n nomFichier = nomFichier || données.nomProjet;\n const fichiersSFIP = new Set();\n données.bds.forEach((bd) => {\n bd.tableaux.forEach((t) => t.fichiersSFIP.forEach((x) => fichiersSFIP.add(x)));\n });\n return {\n docs: données.bds.map((donnéesBd) => {\n const doc = utils.book_new();\n for (const tableau of donnéesBd.tableaux) {\n /* Créer le tableau */\n const tableauXLSX = utils.json_to_sheet(tableau.données);\n /* Ajouter la feuille au document. XLSX n'accepte pas les noms de colonne > 31 caractères */\n utils.book_append_sheet(doc, tableauXLSX, tableau.nomTableau.slice(0, 30));\n }\n return { doc, nom: donnéesBd.nomBd };\n }),\n fichiersSFIP,\n nomFichier,\n };\n }\n async exporterDocumentDonnées({ données, formatDoc, dossier = \"\", inclureFichiersSFIP = true, }) {\n const { docs, fichiersSFIP, nomFichier } = données;\n const conversionsTypes = {\n xls: \"biff8\",\n };\n const bookType = conversionsTypes[formatDoc] || formatDoc;\n const fichiersDocs = docs.map((d) => {\n return {\n nom: `${d.nom}.${formatDoc}`,\n octets: writeXLSX(d.doc, { bookType, type: \"buffer\" }),\n };\n });\n const fichiersDeSFIP = inclureFichiersSFIP\n ? await Promise.all([...fichiersSFIP].map(async (fichier) => {\n return {\n nom: fichier.replace(\"/\", \"-\"),\n octets: await toBuffer(await this.client.obtItérableAsyncSFIP({ id: fichier })),\n };\n }))\n : [];\n await zipper(fichiersDocs, fichiersDeSFIP, path.join(dossier, nomFichier));\n }\n async effacerProjet({ idProjet }) {\n // D'abord effacer l'entrée dans notre liste de projets\n await this.enleverDeMesProjets({ idProjet });\n // Et puis maintenant aussi effacer les données et le projet lui-même\n for (const clef of [\"noms\", \"descriptions\", \"motsClefs\", \"bds\"]) {\n const idBd = await this.client.obtIdBd({\n nom: clef,\n racine: idProjet,\n });\n if (idBd)\n await this.client.effacerBd({ id: idBd });\n }\n await this.client.effacerBd({ id: idProjet });\n }\n}\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreProjets\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreImage\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreNomsProjet\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreDescriptionsProjet\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreMotsClefsProjet\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreBdsProjet\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreVariablesProjet\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreQualit\\u00E9Projet\", null);\n//# sourceMappingURL=projets.js.map","import { __decorate } from \"tslib\";\nimport { schémaStructureBdNoms, } from \"./types.js\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { ComposanteClientListe } from \"./composanteClient.js\";\nconst schémaBdPrincipale = { type: \"string\" };\nconst schémaBdMotClef = {\n type: \"object\",\n properties: {\n type: { type: \"string\", nullable: true },\n noms: { type: \"string\", nullable: true },\n descriptions: { type: \"string\", nullable: true },\n },\n required: [],\n};\nexport class MotsClefs extends ComposanteClientListe {\n constructor({ client }) {\n super({ client, clef: \"motsClefs\", schémaBdPrincipale });\n }\n async épingler() {\n const idBd = await this.obtIdBd();\n await this.client.épingles.épinglerBd({\n id: idBd,\n récursif: false,\n fichiers: false,\n });\n }\n async suivreMotsClefs({ f, idCompte, }) {\n return await this.suivreBdPrincipale({ idCompte, f });\n }\n async créerMotClef() {\n const idMotClef = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n address: undefined,\n write: await this.client.obtIdCompte(),\n },\n });\n await this.ajouterÀMesMotsClefs({ idMotClef });\n const { bd: bdMotClef, fOublier: fOublierMotClef } = await this.client.ouvrirBdTypée({\n id: idMotClef,\n type: \"keyvalue\",\n schéma: schémaBdMotClef,\n });\n const accès = bdMotClef.access;\n const optionsAccès = { address: accès.address };\n await bdMotClef.set(\"type\", \"motClef\");\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdMotClef.set(\"noms\", idBdNoms);\n const idBdDescriptions = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdMotClef.set(\"descriptions\", idBdDescriptions);\n await fOublierMotClef();\n return idMotClef;\n }\n async ajouterÀMesMotsClefs({ idMotClef, }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.add(idMotClef);\n await fOublier();\n }\n async enleverDeMesMotsClefs({ idMotClef, }) {\n const { bd: bdRacine, fOublier } = await this.obtBd();\n await bdRacine.del(idMotClef);\n await fOublier();\n }\n async copierMotClef({ idMotClef }) {\n const { bd: bdBase, fOublier: fOublierBase } = await this.client.ouvrirBdTypée({\n id: idMotClef,\n type: \"keyvalue\",\n schéma: schémaBdMotClef,\n });\n const idNouveauMotClef = await this.créerMotClef();\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await this.sauvegarderNomsMotClef({ idMotClef: idNouveauMotClef, noms });\n await fOublierNoms();\n }\n const idBdDescriptions = await bdBase.get(\"descriptions\");\n if (idBdDescriptions) {\n const { bd: bdDescriptions, fOublier: fOublierDescriptions } = await this.client.ouvrirBdTypée({\n id: idBdDescriptions,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const descriptions = await bdDescriptions.allAsJSON();\n await this.sauvegarderDescriptionsMotClef({\n idMotClef: idNouveauMotClef,\n descriptions,\n });\n await fOublierDescriptions();\n }\n await fOublierBase();\n return idNouveauMotClef;\n }\n async inviterAuteur({ idMotClef, idCompteAuteur, rôle, }) {\n await this.client.donnerAccès({\n idBd: idMotClef,\n identité: idCompteAuteur,\n rôle,\n });\n }\n async sauvegarderNomsMotClef({ idMotClef, noms, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idMotClef,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour mot clef ${idMotClef}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async sauvegarderNomMotClef({ idMotClef, langue, nom, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idMotClef,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour mot clef ${idMotClef}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async effacerNomMotClef({ idMotClef, langue, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idMotClef,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour mot clef ${idMotClef}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.del(langue);\n await fOublier();\n }\n async suivreNomsMotClef({ idMotClef, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idMotClef,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async sauvegarderDescriptionsMotClef({ idMotClef, descriptions, }) {\n const idBdDescriptions = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idMotClef,\n type: \"keyvalue\",\n });\n if (!idBdDescriptions) {\n throw new Error(`Permission de modification refusée pour mot clef ${idMotClef}.`);\n }\n const { bd: bdDescriptions, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescriptions,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in descriptions) {\n await bdDescriptions.set(lng, descriptions[lng]);\n }\n await fOublier();\n }\n async sauvegarderDescriptionMotClef({ idMotClef, langue, description, }) {\n const idBdDescriptions = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idMotClef,\n type: \"keyvalue\",\n });\n if (!idBdDescriptions) {\n throw new Error(`Permission de modification refusée pour mot clef ${idMotClef}.`);\n }\n const { bd: bdDescriptions, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescriptions,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescriptions.set(langue, description);\n await fOublier();\n }\n async effacerDescriptionMotClef({ id, langue, }) {\n const idBdDescriptions = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: id,\n type: \"keyvalue\",\n });\n if (!idBdDescriptions) {\n throw new Error(`Permission de modification refusée pour mot clef ${id}.`);\n }\n const { bd: bdDescriptions, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescriptions,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescriptions.del(langue);\n await fOublier();\n }\n async suivreDescriptionsMotClef({ idMotClef, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idMotClef,\n clef: \"descriptions\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async effacerMotClef({ idMotClef }) {\n // Effacer l'entrée dans notre liste de mots clefs\n await this.enleverDeMesMotsClefs({ idMotClef });\n // Effacer le mot-clef lui-même\n for (const clef of [\"noms\"]) {\n const idBd = await this.client.obtIdBd({\n nom: clef,\n racine: idMotClef,\n });\n if (idBd)\n await this.client.effacerBd({ id: idBd });\n }\n await this.client.effacerBd({ id: idMotClef });\n }\n async suivreQualitéMotClef({ idMotClef, f, }) {\n return await this.suivreNomsMotClef({\n idMotClef,\n f: (noms) => f(Object.keys(noms).length ? 1 : 0),\n });\n }\n}\n__decorate([\n cacheSuivi\n], MotsClefs.prototype, \"suivreMotsClefs\", null);\n__decorate([\n cacheSuivi\n], MotsClefs.prototype, \"suivreNomsMotClef\", null);\n__decorate([\n cacheSuivi\n], MotsClefs.prototype, \"suivreDescriptionsMotClef\", null);\n__decorate([\n cacheSuivi\n], MotsClefs.prototype, \"suivreQualit\\u00E9MotClef\", null);\n//# sourceMappingURL=motsClefs.js.map","import { __decorate } from \"tslib\";\nimport { schémaStructureBdNoms, schémaStructureBdMétadonnées, } from \"./types.js\";\nimport { faisRien, uneFois, ignorerNonDéfinis, traduire, attendreStabilité, suivreBdDeFonction, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { cacheRechercheParNRésultats, cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { schémaBdTableauxDeBd, } from \"./bds.js\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { ComposanteClientListe } from \"./composanteClient.js\";\nimport Base64 from \"crypto-js/enc-base64.js\";\nimport md5 from \"crypto-js/md5.js\";\nimport { utils } from \"xlsx\";\nimport { isValidAddress } from \"@orbitdb/core\";\nexport const MAX_TAILLE_IMAGE = 500 * 1000; // 500 kilooctets\nexport const MAX_TAILLE_IMAGE_VIS = 1500 * 1000; // 1,5 megaoctets\nconst schémaBdAutorisations = {\n type: \"object\",\n additionalProperties: {\n type: \"string\",\n },\n required: [],\n};\nconst schémaStructureBdNuée = {\n type: \"object\",\n properties: {\n type: { type: \"string\", nullable: true },\n métadonnées: { type: \"string\", nullable: true },\n noms: { type: \"string\", nullable: true },\n descriptions: { type: \"string\", nullable: true },\n motsClefs: { type: \"string\", nullable: true },\n image: { type: \"string\", nullable: true },\n tableaux: { type: \"string\", nullable: true },\n autorisation: { type: \"string\", nullable: true },\n statut: {\n type: \"object\",\n properties: {\n idNouvelle: { type: \"string\", nullable: true },\n statut: { type: \"string\", nullable: true },\n },\n required: [],\n nullable: true,\n },\n parent: { type: \"string\", nullable: true },\n copiéDe: { type: \"string\", nullable: true },\n },\n required: [],\n};\nconst schémaStructureBdAuthorisation = {\n type: \"object\",\n properties: {\n philosophie: { type: \"string\", nullable: true },\n membres: { type: \"string\", nullable: true },\n },\n required: [],\n};\nconst schémaBdMotsClefsNuée = {\n type: \"string\",\n};\nexport class Nuées extends ComposanteClientListe {\n constructor({ client }) {\n super({ client, clef: \"nuées\", schémaBdPrincipale: { type: \"string\" } });\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async créerNuée({ nuéeParent, autorisation = \"IJPC\", ajouter = true, } = {}) {\n const idBdNuée = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n address: undefined,\n write: await this.client.obtIdCompte(),\n },\n });\n if (ajouter)\n await this.ajouterÀMesNuées({ idNuée: idBdNuée });\n const { bd: bdNuée, fOublier: fOublierNuée } = await this.client.ouvrirBdTypée({\n id: idBdNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n const accès = bdNuée.access;\n const optionsAccès = { address: accès.address };\n await bdNuée.set(\"type\", \"nuée\");\n let autorisationFinale;\n if (isValidAddress(autorisation)) {\n autorisationFinale = autorisation;\n }\n else if (autorisation === \"CJPI\" || autorisation === \"IJPC\") {\n autorisationFinale = await this.générerGestionnaireAutorisations({\n philosophie: autorisation,\n });\n }\n else {\n throw new Error(`Autorisation non valide : ${autorisation}`);\n }\n await bdNuée.set(\"autorisation\", autorisationFinale);\n if (autorisation === \"CJPI\") {\n await this.accepterMembreNuée({\n idNuée: idBdNuée,\n idCompte: await this.client.obtIdCompte(),\n });\n }\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdNuée.set(\"noms\", idBdNoms);\n const idBdDescr = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdNuée.set(\"descriptions\", idBdDescr);\n const idBdTableaux = await this.client.créerBdIndépendante({\n type: \"ordered-keyvalue\",\n optionsAccès,\n });\n await bdNuée.set(\"tableaux\", idBdTableaux);\n const idBdMétadonnées = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdNuée.set(\"métadonnées\", idBdMétadonnées);\n const idBdMotsClefs = await this.client.créerBdIndépendante({\n type: \"set\",\n optionsAccès,\n });\n await bdNuée.set(\"motsClefs\", idBdMotsClefs);\n await bdNuée.set(\"statut\", { statut: \"active\" });\n if (nuéeParent) {\n await bdNuée.set(\"parent\", nuéeParent);\n }\n fOublierNuée();\n return idBdNuée;\n }\n async ajouterÀMesNuées({ idNuée }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.add(idNuée);\n await fOublier();\n }\n async enleverDeMesNuées({ idNuée }) {\n const { bd: bdRacine, fOublier } = await this.obtBd();\n await bdRacine.del(idNuée);\n await fOublier();\n }\n async copierNuée({ idNuée, ajouterÀMesNuées = true, }) {\n const { bd: bdBase, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n const nuéeParent = await bdBase.get(\"parent\");\n const idNouvelleNuée = await this.créerNuée({\n nuéeParent,\n ajouter: ajouterÀMesNuées,\n });\n const { bd: nouvelleBd, fOublier: fOublierNouvelle } = await this.client.ouvrirBdTypée({\n id: idNouvelleNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n const idBdMétadonnées = await bdBase.get(\"métadonnées\");\n if (idBdMétadonnées) {\n const { bd: bdMétadonnées, fOublier: fOublierBdMétadonnées } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const métadonnées = await bdMétadonnées.allAsJSON();\n await fOublierBdMétadonnées();\n await this.sauvegarderMétadonnéesNuée({\n idNuée: idNouvelleNuée,\n métadonnées,\n });\n }\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierBdNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await fOublierBdNoms();\n await this.sauvegarderNomsNuée({ idNuée: idNouvelleNuée, noms });\n }\n const idBdDescr = await bdBase.get(\"descriptions\");\n if (idBdDescr) {\n const { bd: bdDescr, fOublier: fOublierBdDescr } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const descriptions = await bdDescr.allAsJSON();\n await fOublierBdDescr();\n await this.sauvegarderDescriptionsNuée({\n idNuée: idNouvelleNuée,\n descriptions,\n });\n }\n const idBdMotsClefs = await bdBase.get(\"motsClefs\");\n if (idBdMotsClefs) {\n const { bd: bdMotsClefs, fOublier: fOublierBdMotsClefs } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaBdMotsClefsNuée,\n });\n const motsClefs = (await bdMotsClefs.all()).map((x) => x.value);\n await fOublierBdMotsClefs();\n await this.ajouterMotsClefsNuée({\n idNuée: idNouvelleNuée,\n idsMotsClefs: motsClefs,\n });\n }\n const idBdTableaux = await bdBase.get(\"tableaux\");\n const idNouvelleBdTableaux = await nouvelleBd.get(\"tableaux\");\n if (!idNouvelleBdTableaux)\n throw new Error(\"Erreur initialisation.\");\n if (idBdTableaux) {\n const { bd: nouvelleBdTableaux, fOublier: fOublierNouvelleTableaux } = await this.client.ouvrirBdTypée({\n id: idNouvelleBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const { bd: bdTableaux, fOublier: fOublierBdTableaux } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const tableaux = await bdTableaux.all();\n await fOublierBdTableaux();\n for (const tableau of tableaux) {\n const idNouveauTableau = await this.client.tableaux.copierTableau({\n id: tableau.key,\n idBd: idNouvelleNuée,\n copierDonnées: false,\n });\n await nouvelleBdTableaux.set(idNouveauTableau, tableau.value);\n }\n await fOublierNouvelleTableaux();\n }\n const statut = (await bdBase.get(\"statut\")) || {\n statut: \"active\",\n };\n await nouvelleBd.set(\"statut\", statut);\n const image = await bdBase.get(\"image\");\n if (image)\n await nouvelleBd.set(\"image\", image);\n await nouvelleBd.set(\"copiéDe\", idNuée);\n await Promise.all([fOublier(), fOublierNouvelle()]);\n return idNouvelleNuée;\n }\n async suivreNuées({ f, idCompte, }) {\n return await this.suivreBdPrincipale({\n f,\n idCompte,\n });\n }\n async suivreDeParents({ idNuée, f, fParents, }) {\n return await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.suivreNuéesParents({\n idNuée,\n f: (parents) => fSuivreRacine([idNuée, ...parents].reverse()),\n });\n },\n f,\n fBranche: fParents,\n fRéduction: (x) => x,\n });\n }\n async sauvegarderMétadonnéeNuée({ idNuée, clef, valeur, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n await bdMétadonnées.set(clef, valeur);\n await fOublier();\n }\n async sauvegarderMétadonnéesNuée({ idNuée, métadonnées, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n for (const clef in métadonnées) {\n await bdMétadonnées.set(clef, métadonnées[clef]);\n }\n await fOublier();\n }\n async effacerMétadonnéeNuée({ idNuée, clef, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n await bdMétadonnées.del(clef);\n await fOublier();\n }\n async suivreMétadonnéesNuée({ idNuée, f, hériter = true, }) {\n if (hériter) {\n const fFinale = async (métadonnées) => {\n await f(Object.assign({}, ...métadonnées));\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents: async (id, fSuivreBranche) => {\n return await this.client.suivreBdDicDeClef({\n id,\n clef: \"métadonnées\",\n schéma: schémaStructureBdMétadonnées,\n f: fSuivreBranche,\n });\n },\n });\n }\n else {\n return await this.client.suivreBdDicDeClef({\n id: idNuée,\n clef: \"métadonnées\",\n schéma: schémaStructureBdMétadonnées,\n f,\n });\n }\n }\n async sauvegarderNomNuée({ idNuée, langue, nom, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async sauvegarderNomsNuée({ idNuée, noms, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async effacerNomNuée({ idNuée, langue, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.del(langue);\n await fOublier();\n }\n async suivreNomsNuée({ idNuée, f, }) {\n const fFinale = async (noms) => {\n await f(Object.assign({}, ...noms));\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents: async (id, fSuivreBranche) => {\n return await this.client.suivreBdDicDeClef({\n id,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f: fSuivreBranche,\n });\n },\n });\n }\n async sauvegarderDescriptionNuée({ idNuée, langue, description, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.set(langue, description);\n await fOublier();\n }\n async sauvegarderDescriptionsNuée({ idNuée, descriptions, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour BD ${idNuée}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in descriptions) {\n await bdDescr.set(lng, descriptions[lng]);\n }\n await fOublier();\n }\n async effacerDescriptionNuée({ idNuée, langue, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour BD ${idNuée}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.del(langue);\n await fOublier();\n }\n async suivreDescriptionsNuée({ idNuée, f, }) {\n const fFinale = async (noms) => {\n await f(Object.assign({}, ...noms));\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents: async (id, fSuivreBranche) => {\n return await this.client.suivreBdDicDeClef({\n id,\n clef: \"descriptions\",\n schéma: schémaStructureBdNoms,\n f: fSuivreBranche,\n });\n },\n });\n }\n async sauvegarderImage({ idNuée, image, }) {\n if (image.contenu.byteLength > MAX_TAILLE_IMAGE) {\n throw new Error(\"Taille maximale excédée\");\n }\n const idImage = await this.client.ajouterÀSFIP(image);\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n await bd.set(\"image\", idImage);\n await fOublier();\n }\n async effacerImage({ idNuée }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n await bd.del(\"image\");\n await fOublier();\n }\n async suivreImage({ idNuée, f, }) {\n return await this.client.suivreBd({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n f: async (bd) => {\n const idImage = await bd.get(\"image\");\n if (!idImage) {\n await f(null);\n }\n else {\n const image = await this.client.obtFichierSFIP({\n id: idImage,\n max: MAX_TAILLE_IMAGE_VIS,\n });\n await f(image);\n }\n },\n });\n }\n async ajouterMotsClefsNuée({ idNuée, idsMotsClefs, }) {\n if (!Array.isArray(idsMotsClefs))\n idsMotsClefs = [idsMotsClefs];\n const idBdMotsClefs = await this.client.obtIdBd({\n nom: \"motsClefs\",\n racine: idNuée,\n type: \"set\",\n });\n if (!idBdMotsClefs) {\n throw new Error(`Permission de modification refusée pour BD ${idNuée}.`);\n }\n const { bd: bdMotsClefs, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaBdMotsClefsNuée,\n });\n for (const id of idsMotsClefs) {\n const motsClefsExistants = (await bdMotsClefs.all()).map((x) => x.value);\n if (!motsClefsExistants.includes(id))\n await bdMotsClefs.add(id);\n }\n await fOublier();\n }\n async effacerMotClefNuée({ idNuée, idMotClef, }) {\n const idBdMotsClefs = await this.client.obtIdBd({\n nom: \"motsClefs\",\n racine: idNuée,\n type: \"set\",\n });\n if (!idBdMotsClefs) {\n throw new Error(`Permission de modification refusée pour BD ${idNuée}.`);\n }\n const { bd: bdMotsClefs, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaBdMotsClefsNuée,\n });\n await bdMotsClefs.del(idMotClef);\n await fOublier();\n }\n async suivreMotsClefsNuée({ idNuée, f, }) {\n const fFinale = async (motsClefs) => {\n await f([...new Set(motsClefs.flat())]);\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents: async (id, fSuivreBranche) => {\n return await this.client.suivreBdListeDeClef({\n id,\n clef: \"motsClefs\",\n schéma: { type: \"string\" },\n f: fSuivreBranche,\n });\n },\n });\n }\n async changerStatutNuée({ idNuée, statut, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"statut\", statut);\n await fOublier();\n }\n async suivreStatutNuée({ idNuée, f, }) {\n return await this.client.suivreBdDic({\n id: idNuée,\n f: async (x) => {\n if (x[\"statut\"])\n return await f(x[\"statut\"]);\n },\n schéma: schémaStructureBdNuée,\n });\n }\n async marquerObsolète({ idNuée, idNouvelle, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"statut\", { statut: \"obsolète\", idNouvelle });\n await fOublier();\n }\n async marquerActive({ idNuée }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"statut\", { statut: \"active\" });\n await fOublier();\n }\n async marquerJouet({ idNuée }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"statut\", { statut: \"jouet\" });\n await fOublier();\n }\n async marquerInterne({ idNuée }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"statut\", { statut: \"interne\" });\n await fOublier();\n }\n async inviterAuteur({ idNuée, idCompteAuteur, rôle, }) {\n await this.client.donnerAccès({\n idBd: idNuée,\n identité: idCompteAuteur,\n rôle,\n });\n }\n async générerGestionnaireAutorisations({ philosophie = \"IJPC\", }) {\n const idBdAutorisation = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n write: await this.client.obtIdCompte(),\n },\n });\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdAutorisation,\n type: \"keyvalue\",\n schéma: schémaStructureBdAuthorisation,\n });\n await bd.set(\"philosophie\", philosophie);\n const accès = bd.access;\n const optionsAccès = { address: accès.address };\n const idBdMembres = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bd.set(\"membres\", idBdMembres);\n fOublier();\n return idBdAutorisation;\n }\n async changerPhisolophieAutorisation({ idAutorisation, philosophie, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idAutorisation,\n type: \"keyvalue\",\n schéma: schémaStructureBdAuthorisation,\n });\n await bd.set(\"philosophie\", philosophie);\n fOublier();\n }\n async suivrePhilosophieAutorisation({ idNuée, f, }) {\n const fFinale = async (bd) => {\n if (!bd)\n return;\n const philosophie = await bd.get(\"philosophie\");\n if (philosophie && [\"IJPC\", \"CJPI\"].includes(philosophie)) {\n await f(philosophie);\n }\n };\n const fRacine = async ({ fSuivreRacine, }) => {\n return await this.suivreGestionnaireAutorisations({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.client.suivreBd({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdAuthorisation,\n f: fSuivreBd,\n });\n };\n return await suivreBdDeFonction({\n fRacine,\n f: fFinale,\n fSuivre,\n });\n }\n async accepterMembreAutorisation({ idAutorisation, idCompte, }) {\n const idBdMembres = await this.client.obtIdBd({\n nom: \"membres\",\n racine: idAutorisation,\n type: \"keyvalue\",\n });\n if (!idBdMembres) {\n throw new Error(`Permission de modification refusée pour groupe d'autorisation ${idAutorisation}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMembres,\n type: \"keyvalue\",\n schéma: schémaBdAutorisations,\n });\n await bd.set(idCompte, \"accepté\");\n fOublier();\n }\n async accepterMembreNuée({ idNuée, idCompte, }) {\n const idAutorisation = await this.obtGestionnaireAutorisationsDeNuée({\n idNuée,\n });\n return await this.accepterMembreAutorisation({\n idAutorisation,\n idCompte,\n });\n }\n async exclureMembreAutorisation({ idAutorisation, idCompte, }) {\n const idBdMembres = await this.client.obtIdBd({\n nom: \"membres\",\n racine: idAutorisation,\n type: \"keyvalue\",\n });\n if (!idBdMembres) {\n throw new Error(`Permission de modification refusée pour groupe d'autorisation ${idAutorisation}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMembres,\n type: \"keyvalue\",\n schéma: schémaBdAutorisations,\n });\n await bd.set(idCompte, \"exclus\");\n fOublier();\n }\n async exclureMembreDeNuée({ idNuée, idCompte, }) {\n const idAutorisation = await this.obtGestionnaireAutorisationsDeNuée({\n idNuée,\n });\n return await this.exclureMembreAutorisation({\n idAutorisation,\n idCompte,\n });\n }\n async suivreGestionnaireAutorisations({ idNuée, f, }) {\n return await this.client.suivreBd({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n f: async (bd) => {\n const idAutorisation = await bd.get(\"autorisation\");\n await f(idAutorisation);\n },\n });\n }\n async changerGestionnaireAutorisations({ idNuée, idAutorisation, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n await bd.set(\"autorisation\", idAutorisation);\n fOublier();\n }\n async obtGestionnaireAutorisationsDeNuée({ idNuée, }) {\n return await uneFois(async (fSuivi) => {\n return await this.suivreGestionnaireAutorisations({\n idNuée,\n f: ignorerNonDéfinis(fSuivi),\n });\n });\n }\n async suivreAutorisationsMembresDeGestionnaire({ idAutorisation, f, }) {\n const fFinale = async (dicMembres) => {\n const membres = Object.entries(dicMembres).map(([idCompte, statut]) => {\n return {\n idCompte,\n statut,\n };\n });\n await f(membres);\n };\n return await this.client.suivreBdDicDeClef({\n id: idAutorisation,\n clef: \"membres\",\n schéma: schémaBdAutorisations,\n f: fFinale,\n });\n }\n async suivreAutorisationsMembresDeNuée({ idNuée, f, }) {\n const fRacine = async ({ fSuivreRacine, }) => {\n return await this.suivreGestionnaireAutorisations({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreAutorisationsMembresDeGestionnaire({\n idAutorisation: id,\n f: fSuivreBd,\n });\n };\n return await suivreBdDeFonction({\n fRacine,\n f: ignorerNonDéfinis(f),\n fSuivre,\n });\n }\n async ajouterTableauNuée({ idNuée, clefTableau, }) {\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idNuée,\n type: \"ordered-keyvalue\",\n });\n if (!idBdTableaux) {\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n }\n const { bd: bdTableaux, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n clefTableau = clefTableau || uuidv4();\n const idTableau = await this.client.tableaux.créerTableau({\n idBd: idNuée,\n });\n await bdTableaux.set(idTableau, {\n clef: clefTableau,\n });\n await fOublier();\n return idTableau;\n }\n async effacerTableauNuée({ idNuée, idTableau, }) {\n // D'abord effacer l'entrée dans notre liste de tableaux\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idNuée,\n type: \"ordered-keyvalue\",\n });\n if (!idBdTableaux) {\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n }\n const { bd: bdTableaux, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n await bdTableaux.del(idTableau);\n await fOublier();\n // Enfin, effacer les données et le tableau lui-même\n await this.client.tableaux.effacerTableau({ idTableau });\n }\n async suivreTableauxNuée({ idNuée, f, }) {\n const fFinale = async (tableaux) => {\n await f(tableaux.flat());\n };\n const fParents = async (id, fSuivreBranche) => {\n const fFinaleTableaux = (infos) => {\n const tableaux = infos.map((info) => {\n return {\n id: info.key,\n ...info.value,\n };\n });\n fSuivreBranche(tableaux);\n };\n return await this.client.suivreBdDicOrdonnéeDeClef({\n id,\n clef: \"tableaux\",\n schéma: schémaBdTableauxDeBd,\n f: fFinaleTableaux,\n });\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents,\n });\n }\n async ajouterNomsTableauNuée({ idTableau, noms, }) {\n return await this.client.tableaux.sauvegarderNomsTableau({\n idTableau,\n noms,\n });\n }\n async effacerNomsTableauNuée({ idTableau, langue, }) {\n return await this.client.tableaux.effacerNomTableau({ idTableau, langue });\n }\n async suivreNomsTableauNuée({ idNuée, clefTableau, f, }) {\n const fFinale = async (lNoms) => {\n await f(Object.assign({}, ...lNoms));\n };\n const fParents = async (idNuéeParent, fSuivreBranche) => {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine, }) => {\n return await this.client.bds.suivreIdTableauParClef({\n idBd: idNuéeParent,\n clef: clefTableau,\n f: fSuivreRacine,\n });\n },\n f: ignorerNonDéfinis(fSuivreBranche),\n fSuivre: async ({ id: idTableau, fSuivreBd, }) => {\n return await this.client.tableaux.suivreNomsTableau({\n idTableau,\n f: fSuivreBd,\n });\n },\n });\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents,\n });\n }\n async ajouterColonneTableauNuée({ idTableau, idVariable, idColonne, index, }) {\n const idColonneFinale = await this.client.tableaux.ajouterColonneTableau({\n idTableau,\n idVariable,\n idColonne,\n });\n if (index) {\n await this.changerColIndexTableauNuée({\n idTableau,\n idColonne: idColonneFinale,\n val: true,\n });\n }\n return idColonneFinale;\n }\n async effacerColonneTableauNuée({ idTableau, idColonne, }) {\n return await this.client.tableaux.effacerColonneTableau({\n idTableau,\n idColonne,\n });\n }\n async changerColIndexTableauNuée({ idTableau, idColonne, val, }) {\n return await this.client.tableaux.changerColIndex({\n idTableau,\n idColonne,\n val,\n });\n }\n async suivreColonnesTableauNuée({ idNuée, clefTableau, f, catégories = true, }) {\n const fFinale = async (colonnes) => {\n await f(colonnes.flat());\n };\n const fParents = async (idNuéeParent, fSuivreBranche) => {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine, }) => {\n return await this.client.bds.suivreIdTableauParClef({\n idBd: idNuéeParent,\n clef: clefTableau,\n f: fSuivreRacine,\n });\n },\n f: ignorerNonDéfinis(fSuivreBranche),\n fSuivre: async ({ id: idTableau, fSuivreBd, }) => {\n return await this.client.tableaux.suivreColonnesTableau({\n idTableau,\n f: fSuivreBd,\n catégories,\n });\n },\n });\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents,\n });\n }\n async ajouterRègleTableauNuée({ idTableau, idColonne, règle, }) {\n return await this.client.tableaux.ajouterRègleTableau({\n idTableau,\n idColonne,\n règle,\n });\n }\n async effacerRègleTableauNuée({ idTableau, idRègle, }) {\n return await this.client.tableaux.effacerRègleTableau({\n idTableau,\n idRègle,\n });\n }\n async suivreRèglesTableauNuée({ idNuée, clefTableau, f, }) {\n const fFinale = async (règles) => {\n await f(règles.flat());\n };\n const fParents = async (idNuéeParent, fSuivreBranche) => {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine, }) => {\n return await this.client.bds.suivreIdTableauParClef({\n idBd: idNuéeParent,\n clef: clefTableau,\n f: fSuivreRacine,\n });\n },\n f: ignorerNonDéfinis(fSuivreBranche),\n fSuivre: async ({ id: idTableau, fSuivreBd, }) => {\n return await this.client.tableaux.suivreRègles({\n idTableau,\n f: fSuivreBd,\n });\n },\n });\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents,\n });\n }\n async suivreVariablesNuée({ idNuée, f, }) {\n const fFinale = async (variables) => {\n return await f(variables || []);\n };\n const fBranche = async (id, f) => {\n return await this.client.tableaux.suivreVariables({ idTableau: id, f });\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreTableauxNuée({\n idNuée,\n f: (x) => fSuivreRacine(x.map((x) => x.id)),\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreQualitéNuée({ idNuée, f, }) {\n const rés = {\n noms: {},\n descr: {},\n };\n const fFinale = async () => {\n const scores = [\n Object.keys(rés.noms).length ? 1 : 0,\n Object.keys(rés.descr).length ? 1 : 0,\n ];\n const qualité = scores.reduce((a, b) => a + b, 0) / scores.length;\n await f(qualité);\n };\n const oublierNoms = await this.suivreNomsNuée({\n idNuée,\n f: (noms) => {\n rés.noms = noms;\n fFinale();\n },\n });\n const oublierDescr = await this.suivreDescriptionsNuée({\n idNuée,\n f: (descr) => {\n rés.descr = descr;\n fFinale();\n },\n });\n const fOublier = async () => {\n await oublierNoms();\n await oublierDescr();\n };\n return fOublier;\n }\n async suivreDifférencesNuéeEtTableau({ idNuée, clefTableau, idTableau, f, stricte = true, }) {\n const fFinale = async (différences) => {\n const différencesFinales = différences.filter((d) => stricte || d.sévère);\n await f(différencesFinales);\n };\n const fRacine = async ({ fSuivreRacine, }) => {\n // On peut traiter la nuée comme une BD\n return await this.client.bds.suivreIdTableauParClef({\n idBd: idNuée,\n clef: clefTableau,\n f: fSuivreRacine,\n });\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.client.tableaux.suivreDifférencesAvecTableau({\n idTableau,\n idTableauRéf: id,\n f: fSuivreBd,\n });\n };\n return await suivreBdDeFonction({\n fRacine,\n f: ignorerNonDéfinis(fFinale),\n fSuivre,\n });\n }\n async suivreDifférencesNuéeEtBd({ idNuée, idBd, f, }) {\n const info = {};\n const fFinale = async () => {\n const différences = [];\n if (info.tableauxNuée && info.tableauxBd) {\n for (const tableauNuée of info.tableauxNuée) {\n const tableau = info.tableauxNuée.find((t) => t.clef === tableauNuée.clef);\n if (!tableau) {\n const dif = {\n type: \"tableauManquant\",\n sévère: true,\n clefManquante: tableauNuée.clef,\n };\n différences.push(dif);\n }\n }\n for (const tableau of info.tableauxBd) {\n const tableauLié = info.tableauxNuée.find((t) => t.clef === tableau.clef);\n if (!tableauLié) {\n const dif = {\n type: \"tableauSupplémentaire\",\n sévère: false,\n clefExtra: tableau.clef,\n };\n différences.push(dif);\n }\n }\n }\n await f(différences);\n };\n const fOublierTableauxBd = await this.client.bds.suivreTableauxBd({\n idBd,\n f: (tableaux) => {\n info.tableauxBd = tableaux;\n fFinale();\n },\n });\n const fOublierTableauxNuée = await this.suivreTableauxNuée({\n idNuée,\n f: (tableaux) => {\n info.tableauxNuée = tableaux;\n fFinale();\n },\n });\n return async () => {\n await fOublierTableauxBd();\n await fOublierTableauxNuée();\n };\n }\n async suivreCorrespondanceBd({ idBd, f, }) {\n const fSuivreNuéesDeBd = async (fSuivreRacine) => {\n return await this.client.bds.suivreNuéesBd({\n idBd,\n f: fSuivreRacine,\n });\n };\n const fSuivreNuée = async (idNuée, fSuivreBd) => {\n const info = {\n différencesBds: [],\n différencesTableaux: [],\n };\n const fFinaleNuée = async () => {\n fSuivreBd([...info.différencesBds, ...info.différencesTableaux]);\n };\n const fOublierDifférencesBd = await this.suivreDifférencesNuéeEtBd({\n idNuée,\n idBd,\n f: async (différences) => {\n info.différencesBds = différences;\n await fFinaleNuée();\n },\n });\n const fBranche = async (id, fSuivreBranche, branche) => {\n return await this.suivreDifférencesNuéeEtTableau({\n idNuée,\n clefTableau: branche.clef,\n idTableau: id,\n f: async (diffs) => {\n await fSuivreBranche(diffs.map((d) => {\n return {\n type: \"tableau\",\n sévère: d.sévère,\n idTableau: id,\n différence: d,\n };\n }));\n },\n });\n };\n const fOublierDifférencesTableaux = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.client.bds.suivreTableauxBd({\n idBd,\n f: fSuivreRacine,\n });\n },\n f: async (diffs) => {\n info.différencesTableaux = diffs;\n await fFinaleNuée();\n },\n fBranche,\n fCode: (t) => t.id,\n fIdBdDeBranche: (t) => t.id,\n });\n return async () => {\n await Promise.all([fOublierDifférencesBd, fOublierDifférencesTableaux]);\n };\n };\n return await suivreBdsDeFonctionListe({\n fListe: fSuivreNuéesDeBd,\n f,\n fBranche: fSuivreNuée,\n });\n }\n async rechercherNuéesDéscendantes({ idNuée, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fFinale = async (résultats) => {\n f(résultats.map((r) => r.id));\n };\n return await this.client.réseau.rechercherNuées({\n f: fFinale,\n fObjectif: async (client, id, fSuiviRésultats) => {\n return await client.nuées.suivreNuéesParents({\n idNuée: id,\n f: (parents) => {\n if (parents.includes(idNuée))\n fSuiviRésultats({\n type: \"résultat\",\n score: 1,\n de: \"*\",\n info: {\n type: \"vide\",\n },\n });\n },\n });\n },\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async préciserParent({ idNuée, idNuéeParent, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"parent\", idNuéeParent);\n await fOublier();\n }\n async enleverParent({ idNuée }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.del(\"parent\");\n await fOublier();\n }\n async suivreNuéesParents({ idNuée, f, }) {\n let annulé = false;\n const ascendance = {};\n const fFinale = async () => {\n await f(Object.values(Object.values(ascendance).map((a) => a.parent)));\n };\n const suivreParent = async ({ id, }) => {\n return await this.client.suivreBd({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n f: async (bd) => {\n if (annulé)\n return;\n const parent = await bd.get(\"parent\");\n if (ascendance[id]?.parent === parent) {\n if (!parent)\n await fFinale();\n return;\n }\n await ascendance[id]?.fOublier();\n if (parent) {\n const fOublierParent = await suivreParent({ id: parent });\n ascendance[id] = {\n parent,\n fOublier: async () => {\n await fOublierParent();\n await ascendance[parent]?.fOublier();\n delete ascendance[id];\n await fFinale();\n },\n };\n }\n else {\n delete ascendance[id];\n }\n await fFinale();\n },\n });\n };\n const fOublier = await suivreParent({ id: idNuée });\n return async () => {\n annulé = true;\n await fOublier();\n await Promise.all(Object.values(ascendance).map((a) => a.fOublier()));\n };\n }\n async suivreBdsCorrespondantesDUneNuée({ idNuée, f, nRésultatsDésirés, vérifierAutorisation = true, toujoursInclureLesMiennes = true, }) {\n if (vérifierAutorisation) {\n const info = {};\n const fFinale = async () => {\n const { philoAutorisation, membres, bds } = info;\n if (!bds)\n return;\n if (!philoAutorisation) {\n if (toujoursInclureLesMiennes) {\n return await f(bds\n .filter((bd) => bd.auteurs.some((c) => c === this.client.idCompte))\n .map((x) => x.idBd));\n }\n return;\n }\n if (!membres)\n return;\n const idMonCompte = await this.client.obtIdCompte();\n const filtrerAutorisation = (bds_) => {\n if (philoAutorisation === \"CJPI\") {\n const invités = membres\n .filter((m) => m.statut === \"accepté\")\n .map((m) => m.idCompte);\n return bds_\n .filter((x) => x.auteurs.some((c) => invités.includes(c)) ||\n (toujoursInclureLesMiennes &&\n x.auteurs.includes(idMonCompte)))\n .map((x) => x.idBd);\n }\n else if (philoAutorisation === \"IJPC\") {\n const exclus = membres\n .filter((m) => m.statut === \"exclus\")\n .map((m) => m.idCompte);\n return bds_\n .filter((x) => !x.auteurs.some((c) => exclus.includes(c)))\n .map((x) => x.idBd);\n }\n else {\n throw new Error(philoAutorisation);\n }\n };\n return await f(filtrerAutorisation(bds));\n };\n const fOublierSuivrePhilo = await this.suivrePhilosophieAutorisation({\n idNuée,\n f: async (philo) => {\n info.philoAutorisation = philo;\n await fFinale();\n },\n });\n const fOublierSuivreMembres = await this.suivreAutorisationsMembresDeNuée({\n idNuée,\n f: async (membres) => {\n info.membres = membres;\n await fFinale();\n },\n });\n const fSuivreBds = async (bds) => {\n info.bds = bds;\n await fFinale();\n };\n const fListe = async (fSuivreRacine) => {\n return await this.client.réseau.suivreBdsDeNuée({\n idNuée,\n f: fSuivreRacine,\n nRésultatsDésirés,\n });\n };\n const fBranche = async (idBd, fSuivreBranche) => {\n const fFinaleSuivreBranche = async (auteurs) => {\n return await fSuivreBranche({\n idBd,\n auteurs: auteurs\n .filter((x) => x.accepté) // Uniquement considérer les auteurs qui ont accepté l'invitation.\n .map((x) => x.idCompte),\n });\n };\n return await this.client.réseau.suivreAuteursBd({\n idBd,\n f: fFinaleSuivreBranche,\n });\n };\n const { fOublier: fOublierBds, fChangerProfondeur } = await suivreBdsDeFonctionListe({\n fListe,\n f: fSuivreBds,\n fBranche,\n });\n const fOublier = async () => {\n await Promise.all([fOublierBds, fOublierSuivreMembres, fOublierSuivrePhilo].map((f) => f()));\n };\n return {\n fOublier,\n fChangerProfondeur,\n };\n }\n else {\n return await this.client.réseau.suivreBdsDeNuée({\n idNuée,\n f,\n nRésultatsDésirés,\n });\n }\n }\n async suivreBdsCorrespondantes({ idNuée, f, nRésultatsDésirés, héritage, vérifierAutorisation = true, toujoursInclureLesMiennes = true, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n if (!info.directes)\n return;\n const finaux = [\n ...new Set([\n ...(info.ascendance || []),\n ...(info.descendance || []),\n ...info.directes,\n ]),\n ];\n return await f(finaux);\n };\n if (héritage && héritage.includes(\"ascendance\")) {\n const fOublierAscendance = await this.suivreDeParents({\n idNuée,\n f: async (bds) => {\n const finales = [];\n bds.forEach((l) => l.forEach((bd) => {\n !finales.includes(bd) && finales.push(bd);\n }));\n info.ascendance = finales;\n await fFinale();\n },\n fParents: async (id, fSuivreBranche) => {\n return (await this.suivreBdsCorrespondantesDUneNuée({\n idNuée: id,\n f: fSuivreBranche,\n nRésultatsDésirés,\n vérifierAutorisation,\n toujoursInclureLesMiennes,\n })).fOublier;\n },\n });\n fsOublier.push(fOublierAscendance);\n }\n if (héritage && héritage.includes(\"descendance\")) {\n const { fOublier: fOublierDescendance } = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.rechercherNuéesDéscendantes({\n idNuée,\n f: (parents) => fSuivreRacine([idNuée, ...parents].reverse()),\n });\n },\n f: async (bds) => {\n info.descendance = bds;\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return (await this.suivreBdsCorrespondantesDUneNuée({\n idNuée: id,\n f: fSuivreBranche,\n nRésultatsDésirés,\n vérifierAutorisation,\n toujoursInclureLesMiennes,\n })).fOublier;\n },\n });\n fsOublier.push(fOublierDescendance);\n }\n const { fOublier: fOublierDirectes, fChangerProfondeur } = await this.suivreBdsCorrespondantesDUneNuée({\n idNuée,\n f: async (bds) => {\n info.directes = bds;\n await fFinale();\n },\n nRésultatsDésirés,\n vérifierAutorisation,\n toujoursInclureLesMiennes,\n });\n fsOublier.push(fOublierDirectes);\n return {\n fOublier: async () => {\n await Promise.all(fsOublier.map((f) => f()));\n },\n fChangerProfondeur,\n };\n }\n async suivreEmpreinteTêtesBdsNuée({ idNuée, f, héritage, }) {\n return await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n const { fOublier } = await this.suivreBdsCorrespondantes({\n idNuée,\n f: async (bds) => fSuivreRacine([idNuée, ...bds]),\n héritage,\n });\n return fOublier;\n },\n f: async (empreintes) => {\n const empreinte = Base64.stringify(md5(empreintes.join(\":\")));\n return await f(empreinte);\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.client.suivreEmpreinteTêtesBdRécursive({\n idBd: id,\n f: fSuivreBranche,\n });\n },\n });\n }\n async suivreDonnéesTableauNuée({ idNuée, clefTableau, f, nRésultatsDésirés, héritage, ignorerErreursFormatBd = true, ignorerErreursFormatTableau = false, ignorerErreursDonnéesTableau = true, licencesPermises = undefined, toujoursInclureLesMiennes = true, clefsSelonVariables = false, }) {\n const fFinale = async (donnéesTableaux) => {\n const éléments = donnéesTableaux.flat();\n await f(éléments);\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBdsCorrespondantes({\n idNuée,\n f: async (bds) => {\n return await fSuivreRacine(bds);\n },\n nRésultatsDésirés,\n héritage,\n toujoursInclureLesMiennes,\n });\n };\n const fSuivreBdsConformes = async (fSuivreRacine) => {\n const fCondition = async (idBd, fSuivreCondition) => {\n const conformes = {\n licence: false,\n formatBd: true, // Ça doit être vrai par défaut, en attendant de rejoindre la nuée distante\n };\n const fsOublier = [];\n const fFinaleBdConforme = async () => {\n const conforme = Object.values(conformes).every((x) => x);\n await fSuivreCondition(conforme);\n };\n if (licencesPermises) {\n const fOublierLicence = await this.client.bds.suivreLicenceBd({\n idBd,\n f: async (licence) => {\n conformes.licence = licencesPermises.includes(licence);\n return await fFinaleBdConforme();\n },\n });\n fsOublier.push(fOublierLicence);\n }\n else {\n conformes.licence = true;\n }\n if (ignorerErreursFormatBd) {\n conformes.formatBd = true;\n }\n else {\n const fOublierErreursFormatBd = await this.suivreDifférencesNuéeEtBd({\n idBd,\n idNuée,\n f: async (différences) => {\n conformes.formatBd = !différences.length;\n return await fFinaleBdConforme();\n },\n });\n fsOublier.push(fOublierErreursFormatBd);\n }\n await fFinaleBdConforme();\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n };\n return await this.client.suivreBdsSelonCondition({\n fListe,\n fCondition,\n f: fSuivreRacine,\n });\n };\n const fBranche = async (idBd, fSuivreBranche) => {\n const info = {};\n const fFinaleBranche = async () => {\n const { données, erreursÉléments, auteurs } = info;\n if (données && erreursÉléments && auteurs && auteurs.length) {\n const auteur = auteurs.find((a) => a.accepté)?.idCompte;\n if (!auteur)\n return;\n const donnéesMembres = données\n .map((d) => {\n return {\n idCompte: auteur,\n élément: d,\n valid: erreursÉléments.filter((e) => e.id == d.id),\n };\n })\n .filter((d) => ignorerErreursDonnéesTableau || !d.valid.length);\n await fSuivreBranche(donnéesMembres);\n }\n };\n const fSuivreTableau = async ({ id, fSuivreBd, }) => {\n const infoTableau = {};\n const fsOublier = [];\n const fFinaleTableau = async () => {\n const { données, erreurs } = infoTableau;\n if (données) {\n await fSuivreBd({ données, erreurs: erreurs || [] });\n }\n };\n const fOublierDonnnées = await this.client.tableaux.suivreDonnées({\n idTableau: id,\n f: async (données) => {\n infoTableau.données = données;\n await fFinaleTableau();\n },\n clefsSelonVariables,\n });\n fsOublier.push(fOublierDonnnées);\n const fOublierErreurs = await this.client.tableaux.suivreValidDonnées({\n idTableau: id,\n f: async (erreurs) => {\n infoTableau.erreurs = erreurs;\n await fFinaleTableau();\n },\n });\n fsOublier.push(fOublierErreurs);\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n };\n const fOublierSuivreTableau = await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.client.suivreBdSelonCondition({\n fRacine: async (fSuivreRacineListe) => {\n return await this.client.bds.suivreIdTableauParClef({\n idBd,\n clef: clefTableau,\n f: ignorerNonDéfinis(fSuivreRacineListe),\n });\n },\n fCondition: async (idTableau, fSuivreCondition) => {\n if (ignorerErreursFormatTableau) {\n await fSuivreCondition(true);\n return faisRien;\n }\n else {\n // Il faut envoyer une condition vraie par défaut au début au cas où la nuée ne serait pas rejoignable\n await fSuivreCondition(true);\n return await this.suivreDifférencesNuéeEtTableau({\n idNuée,\n clefTableau,\n idTableau,\n f: async (différences) => await fSuivreCondition(!différences.length),\n stricte: false,\n });\n }\n },\n f: fSuivreRacine,\n });\n },\n f: async (x) => {\n info.données = x?.données;\n info.erreursÉléments = x?.erreurs;\n await fFinaleBranche();\n },\n fSuivre: fSuivreTableau,\n });\n const fOublierAuteursBd = await this.client.réseau.suivreAuteursBd({\n idBd,\n f: async (auteurs) => {\n info.auteurs = auteurs;\n await fFinaleBranche();\n },\n });\n return async () => {\n await Promise.all([fOublierSuivreTableau, fOublierAuteursBd]);\n };\n };\n return await suivreBdsDeFonctionListe({\n fListe: fSuivreBdsConformes,\n f: fFinale,\n fBranche,\n });\n }\n async suivreDonnéesExportationTableau({ clefTableau, idNuée, langues, f, nRésultatsDésirés, héritage, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n const { colonnes, données, nomsTableau, nomsVariables } = info;\n if (colonnes && données && (!langues || (nomsTableau && nomsVariables))) {\n const fichiersSFIP = new Set();\n let donnéesFormattées = await Promise.all(données.map(async (d) => {\n const élémentFormatté = await this.client.tableaux.formaterÉlément({\n é: d.élément.données,\n colonnes,\n fichiersSFIP,\n langues,\n });\n return { ...élémentFormatté, auteur: d.idCompte };\n }));\n donnéesFormattées = donnéesFormattées.map((d) => Object.keys(d).reduce((acc, idCol) => {\n if (idCol === \"auteur\") {\n acc[idCol] = d[idCol];\n }\n else {\n const idVar = colonnes.find((c) => c.id === idCol)?.variable;\n if (!idVar)\n throw new Error(`Colonnne avec id ${idCol} non trouvée parmis les colonnnes :\\n${JSON.stringify(colonnes, undefined, 2)}.`);\n const nomVar = langues && nomsVariables?.[idVar]\n ? traduire(nomsVariables[idVar], langues) || idCol\n : idCol;\n acc[nomVar] = d[idCol];\n }\n return acc;\n }, {}));\n const idCourtTableau = clefTableau.split(\"/\").pop();\n const nomTableau = langues && nomsTableau\n ? traduire(nomsTableau, langues) || idCourtTableau\n : idCourtTableau;\n return await f({\n nomTableau,\n données: donnéesFormattées,\n fichiersSFIP,\n });\n }\n };\n if (langues) {\n const fOublierNomsTableaux = await this.suivreNomsTableauNuée({\n idNuée,\n clefTableau,\n f: async (noms) => {\n info.nomsTableau = noms;\n await fFinale();\n },\n });\n fsOublier.push(fOublierNomsTableaux);\n const fOublierNomsVariables = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => this.suivreVariablesNuée({ idNuée, f: fSuivreRacine }),\n f: async (noms) => {\n info.nomsVariables = Object.fromEntries(noms.map((n) => [n.idVar, n.noms]));\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.client.variables.suivreNomsVariable({\n idVariable: id,\n f: async (noms) => await fSuivreBranche({\n idVar: id,\n noms,\n }),\n });\n },\n });\n fsOublier.push(fOublierNomsVariables);\n }\n const fOublierColonnes = await this.suivreColonnesTableauNuée({\n idNuée,\n clefTableau,\n f: async (cols) => {\n info.colonnes = cols;\n await fFinale();\n },\n catégories: true,\n });\n fsOublier.push(fOublierColonnes);\n const { fOublier: fOublierDonnées } = await this.suivreDonnéesTableauNuée({\n idNuée,\n clefTableau,\n nRésultatsDésirés,\n héritage,\n f: async (données) => {\n info.données = données;\n await fFinale();\n },\n });\n fsOublier.push(fOublierDonnées);\n return async () => {\n Promise.all(fsOublier.map((f) => f()));\n };\n }\n async suivreDonnéesExportation({ idNuée, langues, f, nRésultatsDésirés, héritage, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n const { nomsNuée, données } = info;\n if (!données)\n return;\n const idCourt = idNuée.split(\"/\").pop();\n const nomNuée = nomsNuée && langues ? traduire(nomsNuée, langues) || idCourt : idCourt;\n await f({\n nomNuée,\n tableaux: données,\n });\n };\n const fOublierTableaux = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.suivreTableauxNuée({ idNuée, f: fSuivreRacine });\n },\n f: async (données) => {\n info.données = données;\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.suivreDonnéesExportationTableau({\n idNuée,\n clefTableau: id,\n langues,\n nRésultatsDésirés,\n héritage,\n f: async (données) => {\n return await fSuivreBranche(données);\n },\n });\n },\n fIdBdDeBranche: (x) => x.clef,\n fCode: (x) => x.clef,\n });\n fsOublier.push(fOublierTableaux);\n if (langues) {\n const fOublierNomsNuée = await this.suivreNomsNuée({\n idNuée,\n f: async (noms) => {\n info.nomsNuée = noms;\n await fFinale();\n },\n });\n fsOublier.push(fOublierNomsNuée);\n }\n const fOublier = async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n return fOublier;\n }\n async exporterDonnéesNuée({ idNuée, langues, nomFichier, nRésultatsDésirés, héritage, patience = 500, }) {\n const doc = utils.book_new();\n const fichiersSFIP = new Set();\n const données = await uneFois(async (fSuivi) => {\n return await this.suivreDonnéesExportation({\n idNuée,\n langues,\n f: fSuivi,\n héritage,\n nRésultatsDésirés,\n });\n }, attendreStabilité(patience));\n nomFichier = nomFichier || données.nomNuée;\n for (const tableau of données.tableaux) {\n tableau.fichiersSFIP.forEach((x) => fichiersSFIP.add(x));\n /* Créer le tableau */\n const tableauXLSX = utils.json_to_sheet(tableau.données);\n /* Ajouter la feuille au document. XLSX n'accepte pas les noms de colonne > 31 caractères */\n utils.book_append_sheet(doc, tableauXLSX, tableau.nomTableau.slice(0, 30));\n }\n return { doc, fichiersSFIP, nomFichier };\n }\n async générerDeBd({ idBd, patience = 500, }) {\n const idNuée = await this.créerNuée({});\n const [noms, descriptions, idsMotsClefs, tableaux] = await Promise.all([\n // Noms\n uneFois(async (fSuivi) => {\n return await this.client.bds.suivreNomsBd({ idBd, f: fSuivi });\n }, attendreStabilité(patience)),\n // Descriptions\n uneFois(async (fSuivi) => {\n return await this.client.bds.suivreDescriptionsBd({\n idBd,\n f: fSuivi,\n });\n }, attendreStabilité(patience)),\n // Mots-clefs\n uneFois(async (fSuivi) => {\n return await this.client.bds.suivreMotsClefsBd({\n idBd,\n f: fSuivi,\n });\n }, attendreStabilité(patience)),\n // Tableaux\n uneFois(async (fSuivi) => {\n return await this.client.bds.suivreTableauxBd({ idBd, f: fSuivi });\n }, attendreStabilité(patience)),\n ]);\n await Promise.all([\n this.sauvegarderNomsNuée({\n idNuée,\n noms,\n }),\n await this.sauvegarderDescriptionsNuée({\n idNuée,\n descriptions,\n }),\n await this.ajouterMotsClefsNuée({\n idNuée,\n idsMotsClefs,\n }),\n ]);\n await Promise.all(tableaux.map(async (tableau) => {\n const idTableau = tableau.id;\n const idTableauNuée = await this.ajouterTableauNuée({\n idNuée,\n clefTableau: tableau.clef,\n });\n // Colonnes\n const colonnes = await uneFois(async (fSuivi) => {\n return await this.client.tableaux.suivreColonnesTableau({\n idTableau,\n f: fSuivi,\n catégories: false,\n });\n }, attendreStabilité(patience));\n for (const col of colonnes) {\n await this.ajouterColonneTableauNuée({\n idTableau: idTableauNuée,\n idVariable: col.variable,\n idColonne: col.id,\n index: col.index,\n });\n // Indexes\n await this.changerColIndexTableauNuée({\n idTableau: idTableauNuée,\n idColonne: col.id,\n val: !!col.index,\n });\n // Règles\n const règles = await uneFois(async (fSuivi) => {\n return await this.client.tableaux.suivreRègles({\n idTableau,\n f: fSuivi,\n });\n }, attendreStabilité(patience));\n for (const règle of règles) {\n if (règle.source.type === \"tableau\") {\n await this.ajouterRègleTableauNuée({\n idTableau: idTableauNuée,\n idColonne: col.id,\n règle: règle.règle.règle,\n });\n }\n }\n }\n }));\n return idNuée;\n }\n async générerSchémaBdNuée({ idNuée, licence, patience = 500, }) {\n const [idsMotsClefs, tableaux] = await Promise.all([\n uneFois(async (fSuivi) => {\n return await this.suivreMotsClefsNuée({\n idNuée,\n f: fSuivi,\n });\n }, attendreStabilité(patience)),\n uneFois(async (fSuivi) => {\n return await this.suivreTableauxNuée({\n idNuée,\n f: fSuivi,\n });\n }, attendreStabilité(patience)),\n ]);\n const obtRèglesTableau = async (clefTableau) => {\n return await uneFois(async (fSuivi) => {\n return await this.suivreRèglesTableauNuée({\n idNuée,\n clefTableau,\n f: fSuivi,\n });\n }, attendreStabilité(patience));\n };\n const générerCols = async (clefTableau) => {\n return await uneFois(async (fSuivi) => {\n return await this.suivreColonnesTableauNuée({\n idNuée,\n clefTableau,\n f: fSuivi,\n catégories: false,\n });\n }, attendreStabilité(patience));\n };\n const schéma = {\n licence,\n nuées: [idNuée],\n motsClefs: idsMotsClefs,\n tableaux: await Promise.all(tableaux.map(async (t) => {\n const [cols, règles] = await Promise.all([\n générerCols(t.clef),\n obtRèglesTableau(t.clef),\n ]);\n return {\n cols: cols.map((c) => {\n const obligatoire = règles.some((r) => r.colonne === c.id && r.règle.règle.typeRègle === \"existe\");\n return {\n idColonne: c.id,\n idVariable: c.variable,\n index: !!c.index,\n optionnelle: !obligatoire,\n };\n }),\n clef: t.clef,\n };\n })),\n };\n return schéma;\n }\n async effacerNuée({ idNuée }) {\n // D'abord effacer l'entrée dans notre liste de BDs\n const { bd: bdRacine, fOublier } = await this.obtBd();\n await bdRacine.del(idNuée);\n await fOublier();\n // Et puis maintenant aussi effacer les tableaux et la Nuée elle-même\n for (const clef of [\"noms\", \"descriptions\", \"motsClefs\"]) {\n const idBd = await this.client.obtIdBd({\n nom: clef,\n racine: idNuée,\n });\n if (idBd)\n await this.client.effacerBd({ id: idBd });\n }\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idNuée,\n type: \"ordered-keyvalue\",\n });\n if (idBdTableaux) {\n const { bd: bdTableaux, fOublier: fOublierTableaux } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const tableaux = Object.keys(bdTableaux.all);\n for (const t of tableaux) {\n await this.client.tableaux.effacerTableau({ idTableau: t });\n }\n fOublierTableaux();\n await this.client.effacerBd({ id: idBdTableaux });\n }\n await this.enleverDeMesNuées({ idNuée });\n await this.client.effacerBd({ id: idNuée });\n }\n}\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreDescriptionsNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreImage\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreMotsClefsNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreNomsTableauNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreColonnesTableauNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreR\\u00E8glesTableauNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreQualit\\u00E9Nu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreDiff\\u00E9rencesNu\\u00E9eEtTableau\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreDiff\\u00E9rencesNu\\u00E9eEtBd\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreCorrespondanceBd\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Nuées.prototype, \"rechercherNu\\u00E9esD\\u00E9scendantes\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreNu\\u00E9esParents\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Nuées.prototype, \"suivreBdsCorrespondantesDUneNu\\u00E9e\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Nuées.prototype, \"suivreBdsCorrespondantes\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreEmpreinteT\\u00EAtesBdsNu\\u00E9e\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Nuées.prototype, \"suivreDonn\\u00E9esTableauNu\\u00E9e\", null);\n//# sourceMappingURL=nu%C3%A9es.js.map","import { similTexte, combinerRecherches, rechercherSelonId, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherVariablesSelonNom = (nom) => {\n return async (client, idVariable, fSuivreRecherche) => {\n const fSuivre = async (nomsVariable) => {\n const résultat = similTexte(nom, nomsVariable);\n if (résultat) {\n const { score, clef, info } = résultat;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n de: \"nom\",\n clef,\n info,\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.variables.suivreNomsVariable({\n idVariable,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherVariablesSelonDescr = (descr) => {\n return async (client, idVariable, fSuivreRecherche) => {\n const fSuivre = async (nomsVariable) => {\n const résultat = similTexte(descr, nomsVariable);\n if (résultat) {\n const { score, clef, info } = résultat;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n de: \"descr\",\n clef,\n info,\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.variables.suivreDescriptionsVariable({\n idVariable,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherVariablesSelonTexte = (texte) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fRechercherNoms = rechercherVariablesSelonNom(texte);\n const fRechercherDescr = rechercherVariablesSelonDescr(texte);\n const fRechercherId = rechercherSelonId(texte);\n const fRechercherTous = rechercherTousSiVide(texte);\n return await combinerRecherches({\n noms: fRechercherNoms,\n descr: fRechercherDescr,\n id: fRechercherId,\n vide: fRechercherTous,\n }, client, idCompte, fSuivreRecherche);\n };\n};\n//# sourceMappingURL=variable.js.map","import { similTexte, combinerRecherches, rechercherSelonId, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherMotsClefsSelonNom = (nomMotClef) => {\n return async (client, idMotClef, fSuivreRecherche) => {\n const fSuivre = async (noms) => {\n const corresp = similTexte(nomMotClef, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"nom\",\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.motsClefs.suivreNomsMotClef({\n idMotClef,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherMotsClefsSelonDescr = (desrcMotClef) => {\n return async (client, idMotClef, fSuivreRecherche) => {\n const fSuivre = async (noms) => {\n const corresp = similTexte(desrcMotClef, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"descr\",\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.motsClefs.suivreDescriptionsMotClef({\n idMotClef,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherMotsClefsSelonTexte = (texte) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fRechercherNoms = rechercherMotsClefsSelonNom(texte);\n const fRechercherDescr = rechercherMotsClefsSelonDescr(texte);\n const fRechercherId = rechercherSelonId(texte);\n const fRechercherTous = rechercherTousSiVide(texte);\n return await combinerRecherches({\n noms: fRechercherNoms,\n id: fRechercherId,\n descr: fRechercherDescr,\n vide: fRechercherTous,\n }, client, idCompte, fSuivreRecherche);\n };\n};\n//# sourceMappingURL=motClef.js.map","import { rechercherVariablesSelonNom } from \"./variable.js\";\nimport { rechercherMotsClefsSelonNom } from \"./motClef.js\";\nimport { combinerRecherches, sousRecherche, rechercherSelonId, similTexte, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherBdsSelonNom = (nomBd) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fSuivre = async (noms) => {\n const corresp = similTexte(nomBd, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"nom\",\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.bds.suivreNomsBd({ idBd, f: fSuivre });\n return fOublier;\n };\n};\nexport const rechercherBdsSelonDescr = (descrBd) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fSuivre = async (descrs) => {\n const corresp = similTexte(descrBd, descrs);\n if (corresp) {\n const { score, clef, info } = corresp;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"descr\",\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.bds.suivreDescriptionsBd({\n idBd,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherBdsSelonIdVariable = (idVariable) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.bds.suivreVariablesBd({\n idBd,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonNomVariable = (nomVariable) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.bds.suivreVariablesBd({\n idBd,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherVariablesSelonNom(nomVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonVariable = (texte) => {\n return async (client, idBd, fSuivreRecherche) => {\n return await combinerRecherches({\n id: rechercherBdsSelonIdVariable(texte),\n nom: rechercherBdsSelonNomVariable(texte),\n }, client, idBd, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonIdMotClef = (idMotClef) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.bds.suivreMotsClefsBd({\n idBd,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonNomMotClef = (nomMotClef) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.bds.suivreMotsClefsBd({\n idBd,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherMotsClefsSelonNom(nomMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonMotClef = (texte) => {\n return async (client, idBd, fSuivreRecherche) => {\n return await combinerRecherches({\n id: rechercherBdsSelonIdMotClef(texte),\n nom: rechercherBdsSelonNomMotClef(texte),\n }, client, idBd, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonTexte = (texte) => {\n return async (client, idBd, fSuivreRecherche) => {\n return await combinerRecherches({\n nom: rechercherBdsSelonNom(texte),\n descr: rechercherBdsSelonDescr(texte),\n variables: rechercherBdsSelonVariable(texte),\n motsClefs: rechercherBdsSelonMotClef(texte),\n id: rechercherSelonId(texte),\n vide: rechercherTousSiVide(texte),\n }, client, idBd, fSuivreRecherche);\n };\n};\n//# sourceMappingURL=bd.js.map","import { rechercherBdsSelonTexte } from \"./bd.js\";\nimport { rechercherVariablesSelonTexte, rechercherVariablesSelonNom, } from \"./variable.js\";\nimport { rechercherMotsClefsSelonTexte, rechercherMotsClefsSelonNom, } from \"./motClef.js\";\nimport { similTexte, combinerRecherches, sousRecherche, rechercherSelonId, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherProjetsSelonNom = (nomProjet) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fSuivre = (noms) => {\n const corresp = similTexte(nomProjet, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"nom\",\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.projets.suivreNomsProjet({\n idProjet,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherProjetsSelonDescr = (descProjet) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fSuivre = (descrs) => {\n const corresp = similTexte(descProjet, descrs);\n if (corresp) {\n const { score, clef, info } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"descr\",\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.projets.suivreDescriptionsProjet({\n idProjet,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherProjetsSelonIdBd = (idBd) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreBdsProjet({\n idProjet,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idBd);\n return await sousRecherche(\"bd\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonBd = (texte) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreBdsProjet({\n idProjet,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherBdsSelonTexte(texte);\n return await sousRecherche(\"bd\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonIdVariable = (idVariable) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreVariablesProjet({\n idProjet,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonNomVariable = (nomVariable) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreVariablesProjet({\n idProjet,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherVariablesSelonNom(nomVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonVariable = (texte) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreVariablesProjet({\n idProjet,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherVariablesSelonTexte(texte);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonIdMotClef = (idMotClef) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreMotsClefsProjet({\n idProjet,\n f: (motsClefs) => fSuivreRacine(motsClefs.map((m) => m.idMotClef)),\n });\n };\n const fRechercher = rechercherSelonId(idMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonNomMotClef = (nomMotClef) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreMotsClefsProjet({\n idProjet,\n f: (motsClefs) => fSuivreRacine(motsClefs.map((m) => m.idMotClef)),\n });\n };\n const fRechercher = rechercherMotsClefsSelonNom(nomMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonMotClef = (texte) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreMotsClefsProjet({\n idProjet,\n f: (motsClefs) => fSuivreRacine(motsClefs.map((m) => m.idMotClef)),\n });\n };\n const fRechercher = rechercherMotsClefsSelonTexte(texte);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonTexte = (texte) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fRechercherNoms = rechercherProjetsSelonNom(texte);\n const fRechercherDescr = rechercherProjetsSelonDescr(texte);\n const fRechercherBd = rechercherProjetsSelonBd(texte);\n const fRechercherVariable = rechercherProjetsSelonVariable(texte);\n const fRechercherMotClef = rechercherProjetsSelonMotClef(texte);\n const fRechercherId = rechercherSelonId(texte);\n const fRechercherTous = rechercherTousSiVide(texte);\n return await combinerRecherches({\n noms: fRechercherNoms,\n descr: fRechercherDescr,\n bd: fRechercherBd,\n variable: fRechercherVariable,\n motClef: fRechercherMotClef,\n id: fRechercherId,\n tous: fRechercherTous,\n }, client, idCompte, fSuivreRecherche);\n };\n};\n//# sourceMappingURL=projet.js.map","import { rechercherVariablesSelonNom } from \"./variable.js\";\nimport { rechercherMotsClefsSelonNom } from \"./motClef.js\";\nimport { combinerRecherches, sousRecherche, rechercherSelonId, similTexte, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherNuéesSelonNom = (nomNuée) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fSuivre = (noms) => {\n const corresp = similTexte(nomNuée, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"nom\",\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.nuées.suivreNomsNuée({ idNuée, f: fSuivre });\n return fOublier;\n };\n};\nexport const rechercherNuéesSelonDescr = (descrNuée) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fSuivre = (descrs) => {\n const corresp = similTexte(descrNuée, descrs);\n if (corresp) {\n const { score, clef, info } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"descr\",\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.nuées.suivreDescriptionsNuée({\n idNuée,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherNuéesSelonIdVariable = (idVariable) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.nuées.suivreVariablesNuée({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonNomVariable = (nomVariable) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.nuées.suivreVariablesNuée({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherVariablesSelonNom(nomVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonVariable = (texte) => {\n return async (client, idNuée, fSuivreRecherche) => {\n return await combinerRecherches({\n id: rechercherNuéesSelonIdVariable(texte),\n nom: rechercherNuéesSelonNomVariable(texte),\n }, client, idNuée, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonIdMotClef = (idMotClef) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.nuées.suivreMotsClefsNuée({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonNomMotClef = (nomMotClef) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.nuées.suivreMotsClefsNuée({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherMotsClefsSelonNom(nomMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonMotClef = (texte) => {\n return async (client, idNuée, fSuivreRecherche) => {\n return await combinerRecherches({\n id: rechercherNuéesSelonIdMotClef(texte),\n nom: rechercherNuéesSelonNomMotClef(texte),\n }, client, idNuée, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonTexte = (texte) => {\n return async (client, idNuée, fSuivreRecherche) => {\n return await combinerRecherches({\n nom: rechercherNuéesSelonNom(texte),\n descr: rechercherNuéesSelonDescr(texte),\n variables: rechercherNuéesSelonVariable(texte),\n motsClefs: rechercherNuéesSelonMotClef(texte),\n id: rechercherSelonId(texte),\n tous: rechercherTousSiVide(texte),\n }, client, idNuée, fSuivreRecherche);\n };\n};\n//# sourceMappingURL=nu%C3%A9e.js.map","import { __decorate } from \"tslib\";\nimport * as bd from \"./bd.js\";\nimport * as motClef from \"./motClef.js\";\nimport * as profil from \"./profil.js\";\nimport * as projet from \"./projet.js\";\nimport * as variable from \"./variable.js\";\nimport * as nuée from \"./nu\\u00E9e.js\";\nimport * as utils from \"./utils.js\";\nimport { cacheRechercheParNRésultats } from \"../d\\u00E9corateursCache.js\";\nexport class Recherche {\n client;\n constructor({ client }) {\n this.client = client;\n }\n async rechercherVariables({ f, nRésultatsDésirés, toutLeRéseau = true, }) {\n return await this.client.réseau.rechercherVariables({\n f,\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async rechercherVariablesSelonId({ idVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = utils.rechercherSelonId(idVariable);\n return await this.client.réseau.rechercherVariables({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherVariablesSelonNom({ nomVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = variable.rechercherVariablesSelonNom(nomVariable);\n return await this.client.réseau.rechercherVariables({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherVariablesSelonDescr({ descrVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = variable.rechercherVariablesSelonDescr(descrVariable);\n return await this.client.réseau.rechercherVariables({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherVariablesSelonTexte({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = variable.rechercherVariablesSelonTexte(texte);\n return await this.client.réseau.rechercherVariables({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefs({ f, nRésultatsDésirés, toutLeRéseau = true, }) {\n return await this.client.réseau.rechercherMotsClefs({\n f,\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefsSelonId({ idMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = utils.rechercherSelonId(idMotClef);\n return await this.client.réseau.rechercherMotsClefs({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefsSelonNom({ nomMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = motClef.rechercherMotsClefsSelonNom(nomMotClef);\n return await this.client.réseau.rechercherMotsClefs({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefsSelonDescr({ descrMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = motClef.rechercherMotsClefsSelonDescr(descrMotClef);\n return await this.client.réseau.rechercherMotsClefs({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefsSelonTexte({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = motClef.rechercherMotsClefsSelonTexte(texte);\n return await this.client.réseau.rechercherMotsClefs({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBds({ f, nRésultatsDésirés, toutLeRéseau = true, }) {\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonId({ idBd, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = utils.rechercherSelonId(idBd);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonNom({ nomBd, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonNom(nomBd);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonDescr({ descrBd, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonDescr(descrBd);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonIdMotClef({ idMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonIdMotClef(idMotClef);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonIdVariable({ idVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonIdVariable(idVariable);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonNomMotClef({ nomMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonNomMotClef(nomMotClef);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonNomVariable({ nomVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonNomVariable(nomVariable);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonMotClef({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonMotClef(texte);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonVariable({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonVariable(texte);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonTexte({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonTexte(texte);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProfilsSelonId({ idCompte, f, nRésultatsDésirés, }) {\n const fObjectif = utils.rechercherSelonId(idCompte);\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProfilsSelonNom({ nom, f, nRésultatsDésirés, }) {\n const fObjectif = profil.rechercherProfilsSelonNom(nom);\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProfilsSelonImage({ image, f, nRésultatsDésirés, }) {\n const fObjectif = profil.rechercherProfilsSelonImage(image);\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProfilsSelonActivité({ f, nRésultatsDésirés, }) {\n const fObjectif = profil.rechercherProfilsSelonActivité();\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProfilsSelonCourriel({ courriel, f, nRésultatsDésirés, }) {\n const fObjectif = profil.rechercherProfilsSelonCourriel(courriel);\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProfilsSelonTexte({ texte, f, nRésultatsDésirés, }) {\n const fObjectif = profil.rechercherProfilsSelonTexte(texte);\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProjets({ f, nRésultatsDésirés, toutLeRéseau = true, }) {\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonId({ idProjet, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = utils.rechercherSelonId(idProjet);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonNom({ nomProjet, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonNom(nomProjet);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonDescr({ descrProjet, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonDescr(descrProjet);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonIdVariable({ idVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonIdVariable(idVariable);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonNomVariable({ nomVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonNomVariable(nomVariable);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonVariable({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonVariable(texte);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonIdMotClef({ idMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonIdMotClef(idMotClef);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonNomMotClef({ nomMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonNomMotClef(nomMotClef);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonMotClef({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonMotClef(texte);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonIdBd({ idBd, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonIdBd(idBd);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonBd({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonBd(texte);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonTexte({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonTexte(texte);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuées({ f, nRésultatsDésirés, toutLeRéseau = true, }) {\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonId({ idNuée, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = utils.rechercherSelonId(idNuée);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonNom({ nomNuée, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonNom(nomNuée);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonDescr({ descrNuée, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonDescr(descrNuée);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonIdMotClef({ idMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonIdMotClef(idMotClef);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonIdVariable({ idVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonIdVariable(idVariable);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonNomMotClef({ nomMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonNomMotClef(nomMotClef);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonNomVariable({ nomVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonNomVariable(nomVariable);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonMotClef({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonMotClef(texte);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonVariable({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonVariable(texte);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonTexte({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonTexte(texte);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n}\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherVariables\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherVariablesSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherVariablesSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherVariablesSelonDescr\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherVariablesSelonTexte\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherMotsClefs\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherMotsClefsSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherMotsClefsSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherMotsClefsSelonDescr\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherMotsClefsSelonTexte\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBds\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonDescr\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonIdMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonIdVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonNomMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonNomVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonTexte\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonImage\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonActivit\\u00E9\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonCourriel\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonTexte\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjets\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonDescr\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonIdVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonNomVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonIdMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonNomMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonIdBd\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonBd\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonTexte\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9es\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonDescr\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonIdMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonIdVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonNomMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonNomVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonTexte\", null);\n//# sourceMappingURL=recherche.js.map","import { utils } from \"xlsx\";\nexport class ImportateurFeuilleCalcul {\n doc;\n constructor(données) {\n this.doc = données;\n }\n obtNomsTableaux() {\n return this.doc.SheetNames;\n }\n obtColsTableau(nomTableau) {\n const feuille = this.doc.Sheets[nomTableau];\n const données = utils.sheet_to_json(feuille, { header: 1 });\n return (données[0] || []).map((c) => c.toString());\n }\n obtDonnées(nomTableau, cols) {\n const feuille = this.doc.Sheets[nomTableau];\n const données = utils.sheet_to_json(feuille);\n if (Array.isArray(cols)) {\n return données.map((d) => Object.fromEntries(Object.keys(d)\n .filter((c) => cols.includes(c))\n .map((c) => [c, d[c]])));\n }\n else {\n const colsInversées = Object.fromEntries(Object.entries(cols).map(([c, v]) => [v, c]));\n return données.map((d) => Object.fromEntries(Object.keys(d)\n .filter((c) => Object.keys(colsInversées).includes(c))\n .map((c) => [colsInversées[c], d[c]])));\n }\n }\n}\n//# sourceMappingURL=xlsx.js.map","const copieProfonde = (données) => {\n return JSON.parse(JSON.stringify(données));\n};\nconst estUnDic = (x) => typeof x === \"object\" && !Array.isArray(x);\nconst estUneListe = (x) => Array.isArray(x);\nconst extraireBranches = (données, clefs) => {\n let branches;\n if (!clefs.length) {\n branches = estUnDic(données)\n ? Object.values(données)\n : données;\n return { base: {}, branches };\n }\n const avantDernière = extraireDonnées(données, clefs.slice(0, clefs.length - 1));\n const dernièreClef = clefs[clefs.length - 1];\n let conteneurBranches;\n if (typeof dernièreClef === \"number\") {\n if (estUneListe(avantDernière)) {\n const x = avantDernière[dernièreClef];\n if (typeof x !== \"object\")\n throw new Error(x.toString());\n conteneurBranches = x;\n delete avantDernière[dernièreClef];\n }\n else {\n throw new Error(`${dernièreClef} ne peut pas indexer une liste.`);\n }\n }\n else if (typeof dernièreClef === \"string\") {\n if (estUnDic(avantDernière)) {\n const x = avantDernière[dernièreClef];\n if (typeof x !== \"object\")\n throw new Error(x.toString());\n conteneurBranches = x;\n delete avantDernière[dernièreClef];\n }\n else {\n throw new Error(`${dernièreClef} ne peut pas indexer un objet.`);\n }\n }\n else {\n throw new Error(`${dernièreClef} n'est pas une clef valide.`);\n }\n if (estUnDic(conteneurBranches)) {\n branches = Object.values(conteneurBranches);\n }\n else if (estUneListe(conteneurBranches)) {\n branches = conteneurBranches;\n }\n else {\n throw Error(JSON.stringify(conteneurBranches));\n }\n return { base: données, branches };\n};\nconst injecterBranche = (base, clefs, branche) => {\n if (!clefs.length) {\n Object.assign(base, branche);\n }\n else {\n const clefsSaufLaDernière = clefs.slice(1, clefs.length);\n const avantDernière = extraireDonnées(base, clefsSaufLaDernière);\n const dernièreClef = clefs[clefs.length - 1];\n if (typeof dernièreClef === \"number\") {\n if (estUneListe(avantDernière)) {\n avantDernière[dernièreClef] = branche;\n }\n else {\n throw new Error(`${dernièreClef} ne peut pas indexer une liste.`);\n }\n }\n else if (typeof dernièreClef === \"string\") {\n if (estUnDic(avantDernière)) {\n avantDernière[dernièreClef] = branche;\n }\n else {\n throw new Error(`${dernièreClef} ne peut pas indexer un objet.`);\n }\n }\n else {\n throw new Error(`${dernièreClef} n'est pas une clef valide.`);\n }\n }\n};\nexport const aplatirDonnées = (données, clefs = [], _base, _élémentsFinaux = []) => {\n if (clefs[clefs.length - 1] !== -1)\n clefs.push(-1);\n const iNull = clefs.indexOf(-1);\n const clefsAvant = clefs.slice(0, iNull);\n const clefsAprès = clefs.slice(iNull + 1, clefs.length);\n const { base, branches } = extraireBranches(données, clefsAvant);\n for (const branche of branches) {\n if (typeof branche !== \"object\")\n throw new Error(branche.toString());\n const copieBase = copieProfonde(base);\n injecterBranche(copieBase, clefsAvant, branche);\n if (clefsAprès.length) {\n aplatirDonnées(branche, clefsAprès, copieBase, _élémentsFinaux);\n }\n else {\n _élémentsFinaux.push(copieBase);\n }\n }\n return _élémentsFinaux;\n};\nexport const extraireDonnées = (données, clefs) => {\n let donnéesFinales = données;\n for (const c of clefs) {\n if (typeof c === \"number\") {\n if (estUneListe(donnéesFinales)) {\n donnéesFinales = donnéesFinales[c];\n }\n else {\n throw new Error(`${c} ne peut pas indexer une liste.`);\n }\n }\n else if (typeof c === \"string\") {\n if (estUnDic(donnéesFinales)) {\n donnéesFinales = donnéesFinales[c];\n }\n else {\n throw new Error(`${c} ne peut pas indexer un objet.`);\n }\n }\n else {\n throw new Error(`Clef de type non indexable : ${c}`); // eslint-disable-line no-irregular-whitespace\n }\n }\n return donnéesFinales;\n};\nexport class ImportateurDonnéesJSON {\n // Exemple: https://coordinates.native-land.ca/indigenousLanguageson\n donnéesJSON;\n constructor(données) {\n this.donnéesJSON = données;\n }\n obtDonnées(clefsRacine, clefsÉléments, cols) {\n let données = [];\n let racineDonnéesJSON = extraireDonnées(this.donnéesJSON, clefsRacine);\n if (typeof racineDonnéesJSON !== \"object\") {\n throw new Error(`Type de données erroné : ${racineDonnéesJSON.toString()}`);\n }\n racineDonnéesJSON = aplatirDonnées(racineDonnéesJSON, clefsÉléments);\n for (const élémentJSON of racineDonnéesJSON) {\n if (typeof élémentJSON !== \"object\")\n throw new Error(`Élément de type non supporté : ${élémentJSON}`); // eslint-disable-line no-irregular-whitespace\n const élément = Object.fromEntries(Object.keys(cols)\n .map((c) => {\n const clefs = cols[c];\n let val;\n try {\n val = extraireDonnées(élémentJSON, clefs);\n }\n catch (e) {\n val = undefined;\n }\n return [c, val];\n })\n .filter((x) => x[1] !== undefined));\n données = [élément, ...données];\n }\n return données;\n }\n}\n//# sourceMappingURL=json.js.map","import { EventEmitter } from \"events\";\nimport * as XLSX from \"xlsx\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nimport { isNode, isElectronMain } from \"wherearewe\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport deepcopy from \"deepcopy\";\nimport { faisRien } from \"@constl/utils-ipa\";\nimport { importerFeuilleCalculDURL, importerJSONdURL, } from \"./importateur/index.js\";\nimport { ImportateurFeuilleCalcul } from \"./importateur/xlsx.js\";\nimport { ImportateurDonnéesJSON } from \"./importateur/json.js\";\nimport { ComposanteClientDic } from \"./composanteClient.js\";\nif (isElectronMain || isNode) {\n import(\"fs\").then((fs) => XLSX.set_fs(fs));\n import(\"stream\").then((stream) => XLSX.stream.set_readable(stream.Readable));\n}\nconst MESSAGE_NON_DISPO_NAVIGATEUR = \"L'automatisation de l'importation des fichiers locaux n'est pas disponible sur la version apli internet de Constellation.\";\nconst schémaBdAutomatisations = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n anyOf: [\n {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n id: { type: \"string\" },\n fréquence: {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n détails: {\n type: \"object\",\n properties: {\n n: { type: \"number\" },\n unités: { type: \"string\" },\n },\n nullable: true,\n },\n },\n },\n idObjet: { type: \"string\" },\n typeObjet: { type: \"string\" },\n formatDoc: { type: \"string\" },\n dossier: { type: \"string\", nullable: true },\n langues: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n nullable: true,\n },\n dispositifs: {\n type: \"array\",\n items: { type: \"string\" },\n },\n inclureFichiersSFIP: {\n type: \"boolean\",\n },\n nRésultatsDésirésNuée: {\n type: \"integer\",\n nullable: true,\n },\n },\n required: [\n \"type\",\n \"idObjet\",\n \"typeObjet\",\n \"formatDoc\",\n \"dispositifs\",\n \"fréquence\",\n \"inclureFichiersSFIP\",\n ],\n },\n {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n fréquence: {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n détails: {\n type: \"object\",\n properties: {\n n: { type: \"number\" },\n unités: { type: \"string\" },\n },\n nullable: true,\n },\n },\n },\n idTableau: { type: \"string\" },\n dispositif: { type: \"string\" },\n source: {\n type: \"object\",\n properties: {\n typeSource: { type: \"string\" },\n adresseFichier: { type: \"string\", nullable: true },\n info: {\n type: \"object\",\n additionalProperties: true,\n required: [],\n },\n },\n required: [\"info\", \"typeSource\"],\n },\n conversions: {\n type: \"object\",\n nullable: true,\n additionalProperties: true,\n required: [],\n },\n },\n required: [\"id\", \"idTableau\", \"dispositif\", \"source\"],\n },\n ],\n required: [\"id\", \"type\"],\n },\n required: [],\n};\nconst obtTempsInterval = (fréq) => {\n const { n, unités } = fréq.détails;\n switch (unités) {\n case \"années\":\n return n * 365.25 * 24 * 60 * 60 * 1000;\n case \"mois\":\n return n * 30 * 24 * 60 * 60 * 1000;\n case \"semaines\":\n return n * 7 * 24 * 60 * 60 * 1000;\n case \"jours\":\n return n * 24 * 60 * 60 * 1000;\n case \"heures\":\n return n * 60 * 60 * 1000;\n case \"minutes\":\n return n * 60 * 1000;\n case \"secondes\":\n return n * 1000;\n case \"millisecondes\":\n return n;\n default:\n throw new Error(unités);\n }\n};\nconst générerFExportation = (spéc, client) => {\n return async () => {\n const os = await import(\"os\");\n const path = await import(\"path\");\n const fs = await import(\"fs\");\n const dossier = spéc.dossier\n ? await client.automatisations.résoudreAdressePrivéeFichier({\n clef: spéc.dossier,\n })\n : path.join(os.homedir(), \"constellation\");\n if (!dossier)\n throw new Error(\"Dossier introuvable\");\n let nomFichier;\n const ajouterÉtiquetteÀNomFichier = (nom) => {\n const composantes = nom.split(\".\");\n return `${composantes[0]}-${Date.now()}.${composantes[1]}`;\n };\n switch (spéc.typeObjet) {\n case \"tableau\": {\n const donnéesExp = await client.tableaux.exporterDonnées({\n idTableau: spéc.idObjet,\n langues: spéc.langues,\n });\n nomFichier = donnéesExp.nomFichier;\n if (spéc.copies)\n nomFichier = ajouterÉtiquetteÀNomFichier(nomFichier);\n await client.bds.exporterDocumentDonnées({\n données: donnéesExp,\n formatDoc: spéc.formatDoc,\n dossier,\n inclureFichiersSFIP: spéc.inclureFichiersSFIP,\n });\n break;\n }\n case \"bd\": {\n const donnéesExp = await client.bds.exporterDonnées({\n idBd: spéc.idObjet,\n langues: spéc.langues,\n });\n nomFichier = donnéesExp.nomFichier;\n if (spéc.copies)\n nomFichier = ajouterÉtiquetteÀNomFichier(nomFichier);\n await client.bds.exporterDocumentDonnées({\n données: donnéesExp,\n formatDoc: spéc.formatDoc,\n dossier,\n inclureFichiersSFIP: spéc.inclureFichiersSFIP,\n });\n break;\n }\n case \"projet\": {\n const donnéesExp = await client.projets.exporterDonnées({\n idProjet: spéc.idObjet,\n langues: spéc.langues,\n });\n nomFichier = donnéesExp.nomFichier;\n if (spéc.copies)\n nomFichier = ajouterÉtiquetteÀNomFichier(nomFichier);\n await client.projets.exporterDocumentDonnées({\n données: donnéesExp,\n formatDoc: spéc.formatDoc,\n dossier,\n inclureFichiersSFIP: spéc.inclureFichiersSFIP,\n });\n break;\n }\n case \"nuée\": {\n const donnéesNuée = await client.nuées.exporterDonnéesNuée({\n idNuée: spéc.idObjet,\n langues: spéc.langues,\n nRésultatsDésirés: spéc.nRésultatsDésirésNuée || 1000,\n héritage: spéc.héritage,\n });\n nomFichier = donnéesNuée.nomFichier;\n if (spéc.copies)\n nomFichier = ajouterÉtiquetteÀNomFichier(nomFichier);\n await client.bds.exporterDocumentDonnées({\n données: donnéesNuée,\n formatDoc: spéc.formatDoc,\n dossier,\n inclureFichiersSFIP: spéc.inclureFichiersSFIP,\n });\n break;\n }\n default:\n throw new Error(spéc.typeObjet);\n }\n // Effacer les sauvegardes plus vieilles si nécessaire\n const correspondants = fs.readdirSync(dossier).filter((x) => {\n try {\n return (fs.statSync(x).isFile() &&\n nomsCorrespondent(path.basename(x), nomFichier));\n }\n catch {\n return false;\n }\n });\n const nomsCorrespondent = (nom, réf) => {\n const ext = nom.split(\".\").pop() || \"\";\n const nomBase = nom\n .slice(0, -(ext?.length + 1))\n .split(\"-\")\n .slice(0, -1)\n .join(\"\");\n return `${nomBase}.${ext}` === réf;\n };\n if (spéc.copies) {\n if (spéc.copies.type === \"n\") {\n const enTrop = spéc.copies.n - correspondants.length;\n if (enTrop > 0) {\n const fichiersAvecTempsModif = correspondants.map((fichier) => ({\n temps: new Date(fs.statSync(fichier).mtime).valueOf(),\n fichier,\n }));\n const fichiersOrdreModif = fichiersAvecTempsModif.sort((a, b) => a.temps > b.temps ? 1 : -1);\n const àEffacer = fichiersOrdreModif\n .slice(enTrop)\n .map((x) => x.fichier);\n àEffacer.forEach((fichier) => fs.rmSync(fichier));\n }\n }\n else if (spéc.copies.type === \"temps\") {\n const maintenant = Date.now();\n const { temps } = spéc.copies;\n const àEffacer = correspondants.filter((fichier) => {\n const dateModifFichier = new Date(fs.statSync(fichier).mtime).valueOf();\n return maintenant - dateModifFichier < obtTempsInterval(temps);\n });\n àEffacer.forEach((fichier) => fs.rmSync(fichier));\n }\n }\n };\n};\nconst générerFAuto = (spéc, client) => {\n switch (spéc.type) {\n case \"importation\": {\n return async () => {\n const résoudreAdresse = async (adresse) => {\n return ((await client.automatisations.résoudreAdressePrivéeFichier({\n clef: adresse,\n })) || undefined);\n };\n const données = await client.automatisations.obtDonnéesImportation(spéc, résoudreAdresse);\n // Adresse base des fichiers pour résoudre les entrées fichiers, si applicable. Fonctionne uniquement\n // sur Node et le processus principal d'Électron.\n const path = await import(\"path\");\n let cheminBaseFichiers = undefined;\n if (spéc.source.typeSource === \"fichier\" &&\n spéc.source.adresseFichier) {\n const fichierRésolu = await résoudreAdresse(spéc.source.adresseFichier);\n if (fichierRésolu)\n cheminBaseFichiers = path.dirname(fichierRésolu);\n }\n await client.tableaux.importerDonnées({\n idTableau: spéc.idTableau,\n données,\n conversions: spéc.conversions,\n cheminBaseFichiers,\n });\n };\n }\n case \"exportation\": {\n return générerFExportation(spéc, client);\n }\n default:\n throw new Error(spéc);\n }\n};\nconst lancerAutomatisation = async ({ spéc, idSpéc, client, fÉtat, }) => {\n const fAuto = générerFAuto(spéc, client);\n const clefStockageDernièreFois = `auto: ${idSpéc}`;\n const tempsInterval = spéc.fréquence?.type === \"fixe\"\n ? obtTempsInterval(spéc.fréquence)\n : undefined;\n const verrou = new Semaphore();\n let idDernièreRequêteOpération = \"\";\n const requêteDernièreModifImportée = await client.obtDeStockageLocal({\n clef: clefStockageDernièreFois,\n });\n const requêtesDéjàExécutées = new Set([requêteDernièreModifImportée]);\n const fAutoAvecÉtats = async (requête) => {\n if (requêtesDéjàExécutées.has(requête))\n return;\n idDernièreRequêteOpération = requête;\n await verrou.acquire(\"opération\");\n if (requête !== idDernièreRequêteOpération ||\n requêtesDéjàExécutées.has(requête)) {\n verrou.release(\"opération\");\n return;\n }\n await client.sauvegarderAuStockageLocal({\n clef: clefStockageDernièreFois,\n val: requête,\n });\n requêtesDéjàExécutées.add(requête);\n const nouvelÉtat = {\n type: \"sync\",\n depuis: new Date().getTime(),\n };\n fÉtat(nouvelÉtat);\n try {\n await fAuto();\n if (tempsInterval) {\n const nouvelÉtat = {\n type: \"programmée\",\n à: Date.now() + tempsInterval,\n };\n fÉtat(nouvelÉtat);\n }\n else {\n const nouvelÉtat = {\n type: \"écoute\",\n };\n fÉtat(nouvelÉtat);\n }\n }\n catch (e) {\n const nouvelÉtat = {\n type: \"erreur\",\n erreur: JSON.stringify({\n nom: e.name,\n message: e.message,\n pile: e.stack,\n cause: e.cause,\n }, undefined, 2),\n prochaineProgramméeÀ: tempsInterval\n ? Date.now() + tempsInterval\n : undefined,\n };\n fÉtat(nouvelÉtat);\n }\n verrou.release(\"opération\");\n };\n const fLancer = async () => await fAutoAvecÉtats(uuidv4());\n if (spéc.fréquence.type === \"fixe\") {\n const nouvelÉtat = {\n type: \"programmée\",\n à: tempsInterval,\n };\n fÉtat(nouvelÉtat);\n const dicFOublierIntervale = {};\n const fAutoAvecÉtatsRécursif = async () => {\n const maintenant = new Date().getTime();\n await fAutoAvecÉtats(maintenant.toString());\n const crono = setTimeout(fAutoAvecÉtatsRécursif, tempsInterval);\n dicFOublierIntervale.f = async () => clearTimeout(crono);\n };\n const maintenant = new Date().getTime();\n const dernièreFoisChaîne = await client.obtDeStockageLocal({\n clef: clefStockageDernièreFois,\n });\n const dernièreFois = dernièreFoisChaîne\n ? parseInt(dernièreFoisChaîne)\n : -Infinity;\n const tempsDepuisDernièreFois = maintenant - dernièreFois;\n const crono = setTimeout(fAutoAvecÉtatsRécursif, Math.max(tempsInterval - tempsDepuisDernièreFois, 0));\n dicFOublierIntervale.f = async () => clearTimeout(crono);\n const fOublier = async () => {\n if (dicFOublierIntervale.f)\n await dicFOublierIntervale.f();\n };\n return { fOublier, fLancer };\n }\n else if (spéc.fréquence.type === \"dynamique\") {\n const nouvelÉtat = {\n type: \"écoute\",\n };\n fÉtat(nouvelÉtat);\n switch (spéc.type) {\n case \"exportation\": {\n if (spéc.typeObjet === \"nuée\") {\n const fOublier = await client.nuées.suivreEmpreinteTêtesBdsNuée({\n idNuée: spéc.idObjet,\n f: fAutoAvecÉtats,\n });\n return { fOublier, fLancer };\n }\n else {\n const fOublier = await client.suivreEmpreinteTêtesBdRécursive({\n idBd: spéc.idObjet,\n f: fAutoAvecÉtats,\n });\n return { fOublier, fLancer };\n }\n }\n case \"importation\": {\n switch (spéc.source.typeSource) {\n case \"fichier\": {\n if (!isNode && !isElectronMain) {\n throw new Error(MESSAGE_NON_DISPO_NAVIGATEUR);\n }\n const chokidar = await import(\"chokidar\");\n const fs = await import(\"fs\");\n const { adresseFichier } = spéc.source;\n const adresseFichierRésolue = await client.automatisations.résoudreAdressePrivéeFichier({\n clef: adresseFichier,\n });\n if (!adresseFichierRésolue || !fs.existsSync(adresseFichierRésolue))\n throw new Error(`Fichier ${adresseFichier} introuvable.`);\n const écouteur = chokidar.watch(adresseFichierRésolue);\n écouteur.on(\"change\", async () => {\n const maintenant = new Date().getTime().toString();\n fAutoAvecÉtats(maintenant);\n });\n const dernièreModif = fs\n .statSync(adresseFichierRésolue)\n .mtime.getTime();\n const dernièreImportation = await client.obtDeStockageLocal({\n clef: clefStockageDernièreFois,\n });\n const fichierModifié = dernièreImportation\n ? dernièreModif > parseInt(dernièreImportation)\n : true;\n if (fichierModifié) {\n const maintenant = new Date().getTime().toString();\n fAutoAvecÉtats(maintenant);\n }\n const fOublier = async () => await écouteur.close();\n return { fOublier, fLancer };\n }\n case \"url\": {\n const étatErreur = {\n type: \"erreur\",\n erreur: \"La fréquence d'une automatisation d'importation d'URL doit être spécifiée.\",\n prochaineProgramméeÀ: undefined,\n };\n fÉtat(étatErreur);\n return { fOublier: faisRien, fLancer: faisRien };\n }\n default:\n throw new Error(spéc.source);\n }\n }\n default:\n throw new Error(spéc);\n }\n }\n else if (spéc.fréquence.type === \"manuelle\") {\n return {\n fOublier: faisRien,\n fLancer,\n };\n }\n else {\n throw new Error(spéc.fréquence);\n }\n};\nclass AutomatisationActive extends EventEmitter {\n client;\n état;\n fOublier;\n fLancer;\n constructor(spéc, idSpéc, client) {\n super();\n this.client = client;\n lancerAutomatisation({\n spéc,\n idSpéc,\n client: this.client,\n fÉtat: (état) => {\n this.état = état;\n this.emit(\"misÀJour\");\n },\n }).then(({ fOublier, fLancer }) => {\n this.fOublier = fOublier;\n this.fLancer = fLancer;\n this.emit(\"prêt\");\n });\n }\n async relancer() {\n if (!this.fOublier) {\n await new Promise((résoudre) => {\n this.once(\"prêt\", () => {\n résoudre();\n });\n });\n }\n await this.fLancer?.();\n }\n async fermer() {\n if (!this.fOublier) {\n await new Promise((résoudre) => {\n this.once(\"prêt\", () => {\n résoudre();\n });\n });\n }\n await this.fOublier?.();\n }\n}\nconst activePourCeDispositif = (spéc, monIdDispositif) => {\n switch (spéc.type) {\n case \"importation\": {\n return spéc.dispositif === monIdDispositif;\n }\n case \"exportation\": {\n return spéc.dispositifs.includes(monIdDispositif);\n }\n default:\n throw new Error(spéc);\n }\n};\nconst verrou = new Semaphore();\nexport class Automatisations extends ComposanteClientDic {\n automatisations;\n événements;\n fOublier;\n constructor({ client }) {\n super({\n client,\n clef: \"automatisations\",\n schémaBdPrincipale: schémaBdAutomatisations,\n });\n this.automatisations = {};\n this.événements = new EventEmitter();\n this.initialiser();\n }\n async initialiser() {\n this.fOublier = await this.suivreBdPrincipale({\n f: (autos) => this.mettreAutosÀJour(Object.values(autos)),\n });\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async mettreAutosÀJour(autos) {\n await verrou.acquire(\"miseÀJour\");\n const automatisationsDavant = Object.keys(this.automatisations);\n for (const id of automatisationsDavant) {\n if (!autos.find((a) => a.id === id))\n await this.fermerAuto(id);\n }\n const ceDispositif = await this.client.obtIdDispositif();\n for (const a of autos) {\n if (activePourCeDispositif(a, ceDispositif)) {\n if (!Object.keys(this.automatisations).includes(a.id)) {\n const auto = new AutomatisationActive(a, a.id, this.client);\n auto.on(\"misÀJour\", () => this.événements.emit(\"misÀJour\"));\n this.automatisations[a.id] = auto;\n }\n }\n else {\n const autoActif = this.automatisations[a.id];\n if (autoActif) {\n await this.fermerAuto(a.id);\n }\n }\n }\n verrou.release(\"miseÀJour\");\n }\n async obtDonnéesImportation(spéc, résoudreAdresse = async (x) => x) {\n const { typeSource } = spéc.source;\n const { formatDonnées } = spéc.source.info;\n switch (typeSource) {\n case \"url\": {\n const { url } = spéc.source;\n switch (formatDonnées) {\n case \"json\": {\n const { clefsRacine, clefsÉléments, cols } = spéc.source.info;\n // À faire : inclure code pour importations \"spéciales\" comme epicollect, etc.\n const donnéesJson = await importerJSONdURL(url);\n const importateur = new ImportateurDonnéesJSON(donnéesJson);\n return importateur.obtDonnées(clefsRacine, clefsÉléments, cols);\n }\n case \"feuilleCalcul\": {\n const { nomTableau, cols, optionsXLSX } = spéc.source.info;\n const docXLSX = await importerFeuilleCalculDURL(url, optionsXLSX);\n const importateur = new ImportateurFeuilleCalcul(docXLSX);\n return importateur.obtDonnées(nomTableau, cols);\n }\n default:\n throw new Error(formatDonnées);\n }\n }\n case \"fichier\": {\n if (!isElectronMain && !isNode)\n throw new Error(MESSAGE_NON_DISPO_NAVIGATEUR);\n const fs = await import(\"fs\");\n const { adresseFichier } = spéc.source;\n const adresseFichierRésolue = await résoudreAdresse(adresseFichier);\n if (!adresseFichierRésolue || !fs.existsSync(adresseFichierRésolue))\n throw new Error(`Fichier ${adresseFichierRésolue} introuvable.`);\n switch (formatDonnées) {\n case \"json\": {\n const { clefsRacine, clefsÉléments, cols } = spéc.source.info;\n const contenuFichier = await fs.promises.readFile(adresseFichierRésolue);\n const donnéesJson = JSON.parse(contenuFichier.toString());\n const importateur = new ImportateurDonnéesJSON(donnéesJson);\n return importateur.obtDonnées(clefsRacine, clefsÉléments, cols);\n }\n case \"feuilleCalcul\": {\n const { nomTableau, cols } = spéc.source.info;\n const docXLSX = XLSX.readFile(adresseFichierRésolue);\n const importateur = new ImportateurFeuilleCalcul(docXLSX);\n return importateur.obtDonnées(nomTableau, cols);\n }\n default:\n throw new Error(formatDonnées);\n }\n }\n default:\n throw new Error(typeSource);\n }\n }\n async ajouterAutomatisationExporter({ id, typeObjet, formatDoc, inclureFichiersSFIP, dossier, langues, fréquence, dispositifs, nRésultatsDésirésNuée, héritage, copies, }) {\n const { orbite } = await this.client.attendreSfipEtOrbite();\n dispositifs = dispositifs || [orbite.identity.id];\n const idAuto = uuidv4();\n const idDossier = await this.sauvegarderAdressePrivéeFichier({\n fichier: dossier,\n });\n const élément = {\n type: \"exportation\",\n id: idAuto,\n idObjet: id,\n typeObjet,\n dispositifs,\n fréquence,\n formatDoc,\n langues,\n inclureFichiersSFIP,\n dossier: idDossier, // Pour des raisons de sécurité, on ne sauvegarde pas le nom du dossier directement\n nRésultatsDésirésNuée,\n héritage,\n copies,\n };\n // Enlever les options qui n'existent pas. (DLIP n'aime pas `undefined`.)\n Object.keys(élément).forEach((clef) => {\n if (élément[clef] === undefined) {\n delete élément[clef];\n }\n });\n const { bd, fOublier } = await this.obtBd();\n await bd.put(idAuto, élément);\n await fOublier();\n return idAuto;\n }\n async ajouterAutomatisationImporter({ idTableau, source, fréquence, dispositif, }) {\n const { bd, fOublier } = await this.obtBd();\n const { orbite } = await this.client.attendreSfipEtOrbite();\n dispositif = dispositif || orbite.identity.id;\n const id = uuidv4();\n if (source.typeSource === \"fichier\") {\n source.adresseFichier = await this.sauvegarderAdressePrivéeFichier({\n fichier: source.adresseFichier,\n });\n }\n const élément = {\n type: \"importation\",\n id,\n idTableau,\n dispositif,\n fréquence,\n source,\n };\n // Enlever les options qui n'existent pas. (DLIP n'aime pas `undefined`.)\n Object.keys(élément).forEach((clef) => {\n if (élément[clef] === undefined) {\n delete élément[clef];\n }\n });\n await bd.put(id, élément);\n await fOublier();\n return id;\n }\n async annulerAutomatisation({ id }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.del(id);\n await fOublier();\n }\n async résoudreAdressePrivéeFichier({ clef, }) {\n return clef ? await this.client.obtDeStockageLocal({ clef }) : null;\n }\n async sauvegarderAdressePrivéeFichier({ fichier, }) {\n const clef = \"dossier.\" + uuidv4();\n await this.client.sauvegarderAuStockageLocal({ clef, val: fichier });\n return clef;\n }\n async suivreAutomatisations({ f, idCompte, }) {\n const fFinale = async (autos) => {\n const autosFinales = await Promise.all(Object.values(autos).map(async (a) => {\n const autoFinale = deepcopy(a);\n if (autoFinale.type === \"importation\" &&\n autoFinale.source.typeSource === \"fichier\") {\n const { adresseFichier } = autoFinale.source;\n if (adresseFichier) {\n const adresseRésolue = await this.résoudreAdressePrivéeFichier({\n clef: adresseFichier,\n });\n if (adresseRésolue) {\n autoFinale.source.adresseFichier = adresseRésolue;\n }\n else {\n delete autoFinale.source.adresseFichier;\n }\n }\n }\n else if (autoFinale.type === \"exportation\") {\n const { dossier } = autoFinale;\n if (dossier) {\n const dossierRésolu = await this.résoudreAdressePrivéeFichier({\n clef: dossier,\n });\n if (dossierRésolu) {\n autoFinale.dossier = dossierRésolu;\n }\n else {\n delete autoFinale.dossier;\n }\n }\n }\n return autoFinale;\n }));\n await f(autosFinales);\n };\n return await this.suivreBdPrincipale({\n idCompte,\n f: fFinale,\n });\n }\n async suivreÉtatAutomatisations({ f, }) {\n const fFinale = async () => {\n const étatsAuto = Object.fromEntries(Object.keys(this.automatisations)\n .map((a) => [a, this.automatisations[a].état])\n .filter((x) => x[1]));\n await f(étatsAuto);\n };\n this.événements.on(\"misÀJour\", fFinale);\n return async () => {\n this.événements.off(\"misÀJour\", fFinale);\n };\n }\n async lancerManuellement({ id }) {\n await this.automatisations[id]?.relancer();\n }\n async fermerAuto(id) {\n await this.automatisations[id].fermer();\n delete this.automatisations[id];\n }\n async fermer() {\n await Promise.all(Object.keys(this.automatisations).map((a) => {\n this.fermerAuto(a);\n }));\n await this.fOublier?.();\n }\n}\n//# sourceMappingURL=automatisation.js.map","var empty = null;\n\nexport { empty as default };\n//# sourceMappingURL=empty.js.map\n","import { v4 as uuidv4 } from \"uuid\";\nimport { EventEmitter } from \"events\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nconst stockagesLocaux = {};\nclass LocalStorage {\n fichier;\n _données;\n _événements;\n _idRequêteSauvegarde;\n verrou;\n fOublier;\n constructor(dossier) {\n this.fichier = path.join(dossier, \"données.json\");\n this._événements = new EventEmitter();\n this.verrou = new Semaphore();\n if (!fs.existsSync(dossier)) {\n fs.mkdirSync(dossier, { recursive: true });\n }\n try {\n this._données = JSON.parse(fs.readFileSync(this.fichier).toString());\n }\n catch {\n this._données = {};\n }\n const fSuivre = () => {\n const id = uuidv4();\n this._idRequêteSauvegarde = id;\n this.sauvegarder(id);\n };\n this._événements.on(\"sauvegarder\", fSuivre);\n this.fOublier = () => this._événements.off(\"sauvegarder\", fSuivre);\n }\n getItem(clef) {\n return this._données[clef];\n }\n setItem(clef, val) {\n this._données[clef] = val;\n this.demanderSauvegarde();\n }\n demanderSauvegarde() {\n this._événements.emit(\"sauvegarder\");\n }\n removeItem(clef) {\n delete this._données[clef];\n this.demanderSauvegarde();\n }\n clear() {\n this._données = {};\n fs.rmSync(this.fichier);\n }\n async sauvegarder(id) {\n await this.verrou.acquire(\"sauvegarder\");\n if (this._idRequêteSauvegarde !== id) {\n this.verrou.release(\"sauvegarder\");\n return;\n }\n await fs.promises.writeFile(this.fichier, JSON.stringify(this._données));\n this.verrou.release(\"sauvegarder\");\n }\n async fermer() {\n await this.verrou.acquire(\"sauvegarder\");\n this.fOublier && this.fOublier();\n this.verrou.release(\"sauvegarder\");\n }\n}\nexport const obtStockageLocal = async (dossierConstellation) => {\n if (typeof localStorage === \"undefined\" || localStorage === null) {\n const dossierStockageLocal = path.join(dossierConstellation, \"stockageLocal\");\n if (!stockagesLocaux[dossierStockageLocal]) {\n stockagesLocaux[dossierStockageLocal] = new LocalStorage(dossierStockageLocal);\n }\n return stockagesLocaux[dossierStockageLocal];\n }\n else {\n return localStorage;\n }\n};\nexport default obtStockageLocal;\nexport const exporterStockageLocal = async (dossierConstellation) => {\n const stockageLocal = await obtStockageLocal(dossierConstellation);\n if (stockageLocal instanceof LocalStorage) {\n return JSON.stringify(stockageLocal._données);\n }\n else {\n return JSON.stringify(stockageLocal);\n }\n};\n//# sourceMappingURL=stockageLocal.js.map",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","import { __decorate } from \"tslib\";\nimport { ComposanteClientDic } from \"./composanteClient.js\";\nimport { cacheSuivi } from \"./décorateursCache.js\";\nexport const schémaStructureBdProtocoles = {\n type: \"object\",\n additionalProperties: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n required: [],\n};\nexport class Protocoles extends ComposanteClientDic {\n constructor({ client }) {\n super({\n client,\n clef: \"protocoles\",\n schémaBdPrincipale: schémaStructureBdProtocoles,\n });\n }\n async établirProtocoles({ protocoles, idDispositif, }) {\n idDispositif = idDispositif || (await this.client.obtIdDispositif());\n const { bd, fOublier } = await this.obtBd();\n const existants = (await bd.allAsJSON())[idDispositif] || [];\n if (protocoles) {\n if (protocoles.some((p) => !existants.includes(p)) ||\n existants.some((p) => !protocoles.includes(p))) {\n await bd.put(idDispositif, protocoles);\n }\n }\n else if (existants.length) {\n await bd.del(idDispositif);\n }\n await fOublier();\n }\n async suivreProtocoles({ f, idCompte, }) {\n return await this.suivreBdPrincipale({\n idCompte,\n f,\n });\n }\n}\n__decorate([\n cacheSuivi\n], Protocoles.prototype, \"suivreProtocoles\", null);\n//# sourceMappingURL=protocoles.js.map","'use strict';\n\n/**\n * @typedef {{ [key: string]: any }} Extensions\n * @typedef {Error} Err\n * @property {string} message\n */\n\n/**\n *\n * @param {Error} obj\n * @param {Extensions} props\n * @returns {Error & Extensions}\n */\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\n/**\n *\n * @param {any} err - An Error\n * @param {string|Extensions} code - A string code or props to set on the error\n * @param {Extensions} [props] - Props to set on the error\n * @returns {Error & Extensions}\n */\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = '';\n }\n\n if (code) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n // @ts-ignore\n const output = assign(new ErrClass(), props);\n\n return output;\n }\n}\n\nmodule.exports = createError;\n","import errCode from 'err-code';\nexport function openFailedError(err) {\n err = err ?? new Error('Open failed');\n return errCode(err, 'ERR_OPEN_FAILED');\n}\nexport function closeFailedError(err) {\n err = err ?? new Error('Close failed');\n return errCode(err, 'ERR_CLOSE_FAILED');\n}\nexport function putFailedError(err) {\n err = err ?? new Error('Put failed');\n return errCode(err, 'ERR_PUT_FAILED');\n}\nexport function getFailedError(err) {\n err = err ?? new Error('Get failed');\n return errCode(err, 'ERR_GET_FAILED');\n}\nexport function deleteFailedError(err) {\n err = err ?? new Error('Delete failed');\n return errCode(err, 'ERR_DELETE_FAILED');\n}\nexport function hasFailedError(err) {\n err = err ?? new Error('Has failed');\n return errCode(err, 'ERR_HAS_FAILED');\n}\nexport function notFoundError(err) {\n err = err ?? new Error('Not Found');\n return errCode(err, 'ERR_NOT_FOUND');\n}\nexport function abortedError(err) {\n err = err ?? new Error('Aborted');\n return errCode(err, 'ERR_ABORTED');\n}\n//# sourceMappingURL=errors.js.map","export class BaseBlockstore {\n has(key, options) {\n return Promise.reject(new Error('.has is not implemented'));\n }\n put(key, val, options) {\n return Promise.reject(new Error('.put is not implemented'));\n }\n async *putMany(source, options) {\n for await (const { cid, block } of source) {\n await this.put(cid, block, options);\n yield cid;\n }\n }\n get(key, options) {\n return Promise.reject(new Error('.get is not implemented'));\n }\n async *getMany(source, options) {\n for await (const key of source) {\n yield {\n cid: key,\n block: await this.get(key, options)\n };\n }\n }\n delete(key, options) {\n return Promise.reject(new Error('.delete is not implemented'));\n }\n async *deleteMany(source, options) {\n for await (const key of source) {\n await this.delete(key, options);\n yield key;\n }\n }\n /**\n * Extending classes should override `query` or implement this method\n */\n async *getAll(options) {\n throw new Error('.getAll is not implemented');\n }\n}\n//# sourceMappingURL=base.js.map","import { base32 } from 'multiformats/bases/base32';\nimport { CID } from 'multiformats/cid';\nimport * as raw from 'multiformats/codecs/raw';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { BaseBlockstore } from './base.js';\nimport * as Errors from './errors.js';\nexport class MemoryBlockstore extends BaseBlockstore {\n data;\n constructor() {\n super();\n this.data = new Map();\n }\n put(key, val) {\n this.data.set(base32.encode(key.multihash.bytes), val);\n return key;\n }\n get(key) {\n const buf = this.data.get(base32.encode(key.multihash.bytes));\n if (buf == null) {\n throw Errors.notFoundError();\n }\n return buf;\n }\n has(key) {\n return this.data.has(base32.encode(key.multihash.bytes));\n }\n async delete(key) {\n this.data.delete(base32.encode(key.multihash.bytes));\n }\n async *getAll() {\n for (const [key, value] of this.data.entries()) {\n yield {\n cid: CID.createV1(raw.code, Digest.decode(base32.decode(key))),\n block: value\n };\n }\n }\n}\n//# sourceMappingURL=memory.js.map","import { logger } from '@libp2p/logger';\nimport drain from 'it-drain';\nimport filter from 'it-filter';\nimport merge from 'it-merge';\nimport { pushable } from 'it-pushable';\nimport { BaseBlockstore } from './base.js';\nimport * as Errors from './errors.js';\nconst log = logger('blockstore:core:tiered');\n/**\n * A blockstore that can combine multiple stores. Puts and deletes\n * will write through to all blockstores. Has and get will\n * try each store sequentially. getAll will use every store but also\n * deduplicate any yielded pairs.\n */\nexport class TieredBlockstore extends BaseBlockstore {\n stores;\n constructor(stores) {\n super();\n this.stores = stores.slice();\n }\n async put(key, value, options) {\n try {\n await Promise.all(this.stores.map(async (store) => { await store.put(key, value, options); }));\n return key;\n }\n catch (err) {\n throw Errors.putFailedError(err);\n }\n }\n async get(key, options) {\n for (const store of this.stores) {\n try {\n const res = await store.get(key, options);\n if (res != null)\n return res;\n }\n catch (err) {\n log.error(err);\n }\n }\n throw Errors.notFoundError();\n }\n async has(key, options) {\n for (const s of this.stores) {\n if (await s.has(key, options)) {\n return true;\n }\n }\n return false;\n }\n async delete(key, options) {\n try {\n await Promise.all(this.stores.map(async (store) => { await store.delete(key, options); }));\n }\n catch (err) {\n throw Errors.deleteFailedError(err);\n }\n }\n async *putMany(source, options = {}) {\n let error;\n const pushables = this.stores.map(store => {\n const source = pushable({\n objectMode: true\n });\n drain(store.putMany(source, options))\n .catch(err => {\n // store threw while putting, make sure we bubble the error up\n error = err;\n });\n return source;\n });\n try {\n for await (const pair of source) {\n if (error != null) {\n throw error;\n }\n pushables.forEach(p => p.push(pair));\n yield pair.cid;\n }\n }\n finally {\n pushables.forEach(p => p.end());\n }\n }\n async *deleteMany(source, options = {}) {\n let error;\n const pushables = this.stores.map(store => {\n const source = pushable({\n objectMode: true\n });\n drain(store.deleteMany(source, options))\n .catch(err => {\n // store threw while deleting, make sure we bubble the error up\n error = err;\n });\n return source;\n });\n try {\n for await (const key of source) {\n if (error != null) {\n throw error;\n }\n pushables.forEach(p => p.push(key));\n yield key;\n }\n }\n finally {\n pushables.forEach(p => p.end());\n }\n }\n async *getAll(options) {\n // deduplicate yielded pairs\n const seen = new Set();\n yield* filter(merge(...this.stores.map(s => s.getAll(options))), (pair) => {\n const cidStr = pair.cid.toString();\n if (seen.has(cidStr)) {\n return false;\n }\n seen.add(cidStr);\n return true;\n });\n }\n}\n//# sourceMappingURL=tiered.js.map","/**\n * @packageDocumentation\n *\n * Various Blockstore implementations are available.\n *\n * ## Implementations\n *\n * - Base: [`src/base`](src/base.ts)\n * - Memory: [`src/memory`](src/memory.ts)\n * - BlackHole: ['src/black-hole](src/black-hole.ts)\n * - Tiered: ['src/tiered](src/tiered.ts)\n *\n * @example BaseBlockstore\n *\n * Provides a complete implementation of the Blockstore interface. You must implement `.get`, `.put`, etc.\n *\n * ```js\n * import { BaseBlockstore } from 'blockstore-core/base'\n *\n * class MyCustomBlockstore extends BaseBlockstore {\n * put (key, val, options) {\n * // store a block\n * }\n *\n * get (key, options) {\n * // retrieve a block\n * }\n *\n * // ...etc\n * }\n * ```\n *\n * @example MemoryBlockstore\n *\n * A simple Blockstore that stores blocks in memory.\n *\n * ```js\n * import { MemoryBlockstore } from 'blockstore-core/memory'\n *\n * const store = new MemoryBlockstore()\n * ```\n *\n * @example BlackHoleBlockstore\n *\n * A Blockstore that does not store any blocks.\n *\n * ```js\n * import { BlackHoleBlockstore } from 'blockstore-core/black-hole'\n *\n * const store = new BlackHoleBlockstore()\n * ```\n *\n * @example TieredBlockstore\n *\n * A tiered blockstore wraps one or more blockstores and will query each in parallel to retrieve a block - the operation will succeed if any wrapped store has the block.\n *\n * Writes are invoked on all wrapped blockstores.\n *\n * ```js\n * import { TieredBlockstore } from 'blockstore-core/tiered'\n *\n * const store = new TieredBlockstore([\n * store1,\n * store2,\n * // ...etc\n * ])\n * ```\n *\n * @example IdentityBlockstore\n *\n * An identity blockstore is one that deals exclusively in Identity CIDs - this is a special CID with the codec [0x00](https://github.com/multiformats/multicodec/blob/d06fc6194710e8909bac64273c43f16b56ca4c34/table.csv#L2) where the multihash digest is the data that makes up the block.\n *\n * ```TypeScript\n * import { IdentityBlockstore } from 'blockstore-core/identity'\n * import { CID } from 'multiformats/cid'\n *\n * const blockstore = new IdentityBlockstore()\n *\n * blockstore.has(CID.parse('QmFoo')) // false\n *\n * blockstore.has(CID.parse('bafkqac3imvwgy3zao5xxe3de')) // true\n * ```\n */\nimport * as ErrorsImport from './errors.js';\nexport { BaseBlockstore } from './base.js';\nexport { MemoryBlockstore } from './memory.js';\nexport { BlackHoleBlockstore } from './black-hole.js';\nexport { TieredBlockstore } from './tiered.js';\nexport const Errors = {\n ...ErrorsImport\n};\n//# sourceMappingURL=index.js.map","import errCode from 'err-code';\nexport function dbOpenFailedError(err) {\n err = err ?? new Error('Cannot open database');\n return errCode(err, 'ERR_DB_OPEN_FAILED');\n}\nexport function dbDeleteFailedError(err) {\n err = err ?? new Error('Delete failed');\n return errCode(err, 'ERR_DB_DELETE_FAILED');\n}\nexport function dbWriteFailedError(err) {\n err = err ?? new Error('Write failed');\n return errCode(err, 'ERR_DB_WRITE_FAILED');\n}\nexport function dbReadFailedError(err) {\n err = err ?? new Error('Read failed');\n return errCode(err, 'ERR_DB_READ_FAILED');\n}\nexport function notFoundError(err) {\n err = err ?? new Error('Not Found');\n return errCode(err, 'ERR_NOT_FOUND');\n}\nexport function abortedError(err) {\n err = err ?? new Error('Aborted');\n return errCode(err, 'ERR_ABORTED');\n}\n//# sourceMappingURL=errors.js.map","import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nconst pathSepS = '/';\nconst pathSepB = new TextEncoder().encode(pathSepS);\nconst pathSep = pathSepB[0];\n/**\n * A Key represents the unique identifier of an object.\n * Our Key scheme is inspired by file systems and Google App Engine key model.\n * Keys are meant to be unique across a system. Keys are hierarchical,\n * incorporating more and more specific namespaces. Thus keys can be deemed\n * 'children' or 'ancestors' of other keys:\n * - `new Key('/Comedy')`\n * - `new Key('/Comedy/MontyPython')`\n * Also, every namespace can be parametrized to embed relevant object\n * information. For example, the Key `name` (most specific namespace) could\n * include the object type:\n * - `new Key('/Comedy/MontyPython/Actor:JohnCleese')`\n * - `new Key('/Comedy/MontyPython/Sketch:CheeseShop')`\n * - `new Key('/Comedy/MontyPython/Sketch:CheeseShop/Character:Mousebender')`\n *\n */\nexport class Key {\n _buf;\n /**\n * @param {string | Uint8Array} s\n * @param {boolean} [clean]\n */\n constructor(s, clean) {\n if (typeof s === 'string') {\n this._buf = uint8ArrayFromString(s);\n }\n else if (s instanceof Uint8Array) {\n this._buf = s;\n }\n else {\n throw new Error('Invalid key, should be String of Uint8Array');\n }\n if (clean == null) {\n clean = true;\n }\n if (clean) {\n this.clean();\n }\n if (this._buf.byteLength === 0 || this._buf[0] !== pathSep) {\n throw new Error('Invalid key');\n }\n }\n /**\n * Convert to the string representation\n *\n * @param {import('uint8arrays/to-string').SupportedEncodings} [encoding='utf8'] - The encoding to use.\n * @returns {string}\n */\n toString(encoding = 'utf8') {\n return uint8ArrayToString(this._buf, encoding);\n }\n /**\n * Return the Uint8Array representation of the key\n *\n * @returns {Uint8Array}\n */\n uint8Array() {\n return this._buf;\n }\n /**\n * Return string representation of the key\n *\n * @returns {string}\n */\n get [Symbol.toStringTag]() {\n return `Key(${this.toString()})`;\n }\n /**\n * Constructs a key out of a namespace array.\n *\n * @param {Array} list - The array of namespaces\n * @returns {Key}\n *\n * @example\n * ```js\n * Key.withNamespaces(['one', 'two'])\n * // => Key('/one/two')\n * ```\n */\n static withNamespaces(list) {\n return new Key(list.join(pathSepS));\n }\n /**\n * Returns a randomly (uuid) generated key.\n *\n * @returns {Key}\n *\n * @example\n * ```js\n * Key.random()\n * // => Key('/344502982398')\n * ```\n */\n static random() {\n return new Key(Math.random().toString().substring(2));\n }\n /**\n * @param {*} other\n */\n static asKey(other) {\n if (other instanceof Uint8Array || typeof other === 'string') {\n // we can create a key from this\n return new Key(other);\n }\n if (typeof other.uint8Array === 'function') {\n // this is an older version or may have crossed the esm/cjs boundary\n return new Key(other.uint8Array());\n }\n return null;\n }\n /**\n * Cleanup the current key\n *\n * @returns {void}\n */\n clean() {\n if (this._buf == null || this._buf.byteLength === 0) {\n this._buf = pathSepB;\n }\n if (this._buf[0] !== pathSep) {\n const bytes = new Uint8Array(this._buf.byteLength + 1);\n bytes.fill(pathSep, 0, 1);\n bytes.set(this._buf, 1);\n this._buf = bytes;\n }\n // normalize does not remove trailing slashes\n while (this._buf.byteLength > 1 && this._buf[this._buf.byteLength - 1] === pathSep) {\n this._buf = this._buf.subarray(0, -1);\n }\n }\n /**\n * Check if the given key is sorted lower than ourself.\n *\n * @param {Key} key - The other Key to check against\n * @returns {boolean}\n */\n less(key) {\n const list1 = this.list();\n const list2 = key.list();\n for (let i = 0; i < list1.length; i++) {\n if (list2.length < i + 1) {\n return false;\n }\n const c1 = list1[i];\n const c2 = list2[i];\n if (c1 < c2) {\n return true;\n }\n else if (c1 > c2) {\n return false;\n }\n }\n return list1.length < list2.length;\n }\n /**\n * Returns the key with all parts in reversed order.\n *\n * @returns {Key}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').reverse()\n * // => Key('/Actor:JohnCleese/MontyPython/Comedy')\n * ```\n */\n reverse() {\n return Key.withNamespaces(this.list().slice().reverse());\n }\n /**\n * Returns the `namespaces` making up this Key.\n *\n * @returns {Array}\n */\n namespaces() {\n return this.list();\n }\n /** Returns the \"base\" namespace of this key.\n *\n * @returns {string}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').baseNamespace()\n * // => 'Actor:JohnCleese'\n * ```\n */\n baseNamespace() {\n const ns = this.namespaces();\n return ns[ns.length - 1];\n }\n /**\n * Returns the `list` representation of this key.\n *\n * @returns {Array}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').list()\n * // => ['Comedy', 'MontyPythong', 'Actor:JohnCleese']\n * ```\n */\n list() {\n return this.toString().split(pathSepS).slice(1);\n }\n /**\n * Returns the \"type\" of this key (value of last namespace).\n *\n * @returns {string}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').type()\n * // => 'Actor'\n * ```\n */\n type() {\n return namespaceType(this.baseNamespace());\n }\n /**\n * Returns the \"name\" of this key (field of last namespace).\n *\n * @returns {string}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').name()\n * // => 'JohnCleese'\n * ```\n */\n name() {\n return namespaceValue(this.baseNamespace());\n }\n /**\n * Returns an \"instance\" of this type key (appends value to namespace).\n *\n * @param {string} s - The string to append.\n * @returns {Key}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor').instance('JohnClesse')\n * // => Key('/Comedy/MontyPython/Actor:JohnCleese')\n * ```\n */\n instance(s) {\n return new Key(this.toString() + ':' + s);\n }\n /**\n * Returns the \"path\" of this key (parent + type).\n *\n * @returns {Key}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').path()\n * // => Key('/Comedy/MontyPython/Actor')\n * ```\n */\n path() {\n let p = this.parent().toString();\n if (!p.endsWith(pathSepS)) {\n p += pathSepS;\n }\n p += this.type();\n return new Key(p);\n }\n /**\n * Returns the `parent` Key of this Key.\n *\n * @returns {Key}\n *\n * @example\n * ```js\n * new Key(\"/Comedy/MontyPython/Actor:JohnCleese\").parent()\n * // => Key(\"/Comedy/MontyPython\")\n * ```\n */\n parent() {\n const list = this.list();\n if (list.length === 1) {\n return new Key(pathSepS);\n }\n return new Key(list.slice(0, -1).join(pathSepS));\n }\n /**\n * Returns the `child` Key of this Key.\n *\n * @param {Key} key - The child Key to add\n * @returns {Key}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython').child(new Key('Actor:JohnCleese'))\n * // => Key('/Comedy/MontyPython/Actor:JohnCleese')\n * ```\n */\n child(key) {\n if (this.toString() === pathSepS) {\n return key;\n }\n else if (key.toString() === pathSepS) {\n return this;\n }\n return new Key(this.toString() + key.toString(), false);\n }\n /**\n * Returns whether this key is a prefix of `other`\n *\n * @param {Key} other - The other key to test against\n * @returns {boolean}\n *\n * @example\n * ```js\n * new Key('/Comedy').isAncestorOf('/Comedy/MontyPython')\n * // => true\n * ```\n */\n isAncestorOf(other) {\n if (other.toString() === this.toString()) {\n return false;\n }\n return other.toString().startsWith(this.toString());\n }\n /**\n * Returns whether this key is a contains another as prefix.\n *\n * @param {Key} other - The other Key to test against\n * @returns {boolean}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython').isDecendantOf('/Comedy')\n * // => true\n * ```\n */\n isDecendantOf(other) {\n if (other.toString() === this.toString()) {\n return false;\n }\n return this.toString().startsWith(other.toString());\n }\n /**\n * Checks if this key has only one namespace.\n *\n * @returns {boolean}\n */\n isTopLevel() {\n return this.list().length === 1;\n }\n /**\n * Concats one or more Keys into one new Key.\n *\n * @param {Array} keys - The array of keys to concatenate\n * @returns {Key}\n */\n concat(...keys) {\n return Key.withNamespaces([...this.namespaces(), ...flatten(keys.map(key => key.namespaces()))]);\n }\n}\n/**\n * The first component of a namespace. `foo` in `foo:bar`\n *\n * @param {string} ns\n * @returns {string}\n */\nfunction namespaceType(ns) {\n const parts = ns.split(':');\n if (parts.length < 2) {\n return '';\n }\n return parts.slice(0, -1).join(':');\n}\n/**\n * The last component of a namespace, `baz` in `foo:bar:baz`.\n *\n * @param {string} ns\n * @returns {string}\n */\nfunction namespaceValue(ns) {\n const parts = ns.split(':');\n return parts[parts.length - 1];\n}\n/**\n * Flatten array of arrays (only one level)\n *\n * @template T\n * @param {Array} arr\n * @returns {T[]}\n */\nfunction flatten(arr) {\n return ([]).concat(...arr);\n}\n//# sourceMappingURL=key.js.map","import { Key } from 'interface-datastore/key';\nexport const PREFIX = '/repo/flatfs/shard/';\nexport const SHARDING_FN = 'SHARDING';\nexport class ShardBase {\n param;\n name;\n _padding;\n constructor(param) {\n this.param = param;\n this.name = 'base';\n this._padding = '';\n }\n fun(s) {\n return 'implement me';\n }\n toString() {\n return `${PREFIX}v1/${this.name}/${this.param}`;\n }\n}\nexport class Prefix extends ShardBase {\n constructor(prefixLen) {\n super(prefixLen);\n this._padding = ''.padStart(prefixLen, '_');\n this.name = 'prefix';\n }\n fun(noslash) {\n return (noslash + this._padding).slice(0, this.param);\n }\n}\nexport class Suffix extends ShardBase {\n constructor(suffixLen) {\n super(suffixLen);\n this._padding = ''.padStart(suffixLen, '_');\n this.name = 'suffix';\n }\n fun(noslash) {\n const s = this._padding + noslash;\n return s.slice(s.length - this.param);\n }\n}\nexport class NextToLast extends ShardBase {\n constructor(suffixLen) {\n super(suffixLen);\n this._padding = ''.padStart(suffixLen + 1, '_');\n this.name = 'next-to-last';\n }\n fun(noslash) {\n const s = this._padding + noslash;\n const offset = s.length - this.param - 1;\n return s.slice(offset, offset + this.param);\n }\n}\n/**\n * Convert a given string to the matching sharding function\n */\nexport function parseShardFun(str) {\n str = str.trim();\n if (str.length === 0) {\n throw new Error('empty shard string');\n }\n if (!str.startsWith(PREFIX)) {\n throw new Error(`invalid or no path prefix: ${str}`);\n }\n const parts = str.slice(PREFIX.length).split('/');\n const version = parts[0];\n if (version !== 'v1') {\n throw new Error(`expect 'v1' version, got '${version}'`);\n }\n const name = parts[1];\n if (parts[2] == null || parts[2] === '') {\n throw new Error('missing param');\n }\n const param = parseInt(parts[2], 10);\n switch (name) {\n case 'prefix':\n return new Prefix(param);\n case 'suffix':\n return new Suffix(param);\n case 'next-to-last':\n return new NextToLast(param);\n default:\n throw new Error(`unkown sharding function: ${name}`);\n }\n}\nexport const readShardFun = async (path, store) => {\n const key = new Key(path).child(new Key(SHARDING_FN));\n // @ts-expect-error not all stores have this\n const get = typeof store.getRaw === 'function' ? store.getRaw.bind(store) : store.get.bind(store);\n const res = await get(key);\n return parseShardFun(new TextDecoder().decode(res ?? '').trim());\n};\n//# sourceMappingURL=shard.js.map","/**\n * @packageDocumentation\n *\n * Consumes all values from an (async)iterable and returns them sorted by the passed sort function.\n *\n * @example\n *\n * ```javascript\n * import sort from 'it-sort'\n * import all from 'it-all'\n *\n * const sorter = (a, b) => {\n * return a.localeCompare(b)\n * }\n *\n * // This can also be an iterator, generator, etc\n * const values = ['foo', 'bar']\n *\n * const arr = all(sort(values, sorter))\n *\n * console.info(arr) // 'bar', 'foo'\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import sort from 'it-sort'\n * import all from 'it-all'\n *\n * const sorter = (a, b) => {\n * return a.localeCompare(b)\n * }\n *\n * const values = async function * () {\n * yield * ['foo', 'bar']\n * }\n *\n * const arr = await all(sort(values, sorter))\n *\n * console.info(arr) // 'bar', 'foo'\n * ```\n */\nimport all from 'it-all';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction sort(source, sorter) {\n if (isAsyncIterable(source)) {\n return (async function* () {\n const arr = await all(source);\n yield* arr.sort(sorter);\n })();\n }\n return (function* () {\n const arr = all(source);\n yield* arr.sort(sorter);\n })();\n}\nexport default sort;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * For when you only want a few values out of an (async)iterable.\n *\n * @example\n *\n * ```javascript\n * import take from 'it-take'\n * import all from 'it-all'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const arr = all(take(values, 2))\n *\n * console.info(arr) // 0, 1\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import take from 'it-take'\n * import all from 'it-all'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const arr = await all(take(values(), 2))\n *\n * console.info(arr) // 0, 1\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction take(source, limit) {\n if (isAsyncIterable(source)) {\n return (async function* () {\n let items = 0;\n if (limit < 1) {\n return;\n }\n for await (const entry of source) {\n yield entry;\n items++;\n if (items === limit) {\n return;\n }\n }\n })();\n }\n return (function* () {\n let items = 0;\n if (limit < 1) {\n return;\n }\n for (const entry of source) {\n yield entry;\n items++;\n if (items === limit) {\n return;\n }\n }\n })();\n}\nexport default take;\n//# sourceMappingURL=index.js.map","import drain from 'it-drain';\nimport filter from 'it-filter';\nimport sort from 'it-sort';\nimport take from 'it-take';\nexport class BaseDatastore {\n put(key, val, options) {\n return Promise.reject(new Error('.put is not implemented'));\n }\n get(key, options) {\n return Promise.reject(new Error('.get is not implemented'));\n }\n has(key, options) {\n return Promise.reject(new Error('.has is not implemented'));\n }\n delete(key, options) {\n return Promise.reject(new Error('.delete is not implemented'));\n }\n async *putMany(source, options = {}) {\n for await (const { key, value } of source) {\n await this.put(key, value, options);\n yield key;\n }\n }\n async *getMany(source, options = {}) {\n for await (const key of source) {\n yield {\n key,\n value: await this.get(key, options)\n };\n }\n }\n async *deleteMany(source, options = {}) {\n for await (const key of source) {\n await this.delete(key, options);\n yield key;\n }\n }\n batch() {\n let puts = [];\n let dels = [];\n return {\n put(key, value) {\n puts.push({ key, value });\n },\n delete(key) {\n dels.push(key);\n },\n commit: async (options) => {\n await drain(this.putMany(puts, options));\n puts = [];\n await drain(this.deleteMany(dels, options));\n dels = [];\n }\n };\n }\n /**\n * Extending classes should override `query` or implement this method\n */\n // eslint-disable-next-line require-yield\n async *_all(q, options) {\n throw new Error('._all is not implemented');\n }\n /**\n * Extending classes should override `queryKeys` or implement this method\n */\n // eslint-disable-next-line require-yield\n async *_allKeys(q, options) {\n throw new Error('._allKeys is not implemented');\n }\n query(q, options) {\n let it = this._all(q, options);\n if (q.prefix != null) {\n const prefix = q.prefix;\n it = filter(it, (e) => e.key.toString().startsWith(prefix));\n }\n if (Array.isArray(q.filters)) {\n it = q.filters.reduce((it, f) => filter(it, f), it);\n }\n if (Array.isArray(q.orders)) {\n it = q.orders.reduce((it, f) => sort(it, f), it);\n }\n if (q.offset != null) {\n let i = 0;\n const offset = q.offset;\n it = filter(it, () => i++ >= offset);\n }\n if (q.limit != null) {\n it = take(it, q.limit);\n }\n return it;\n }\n queryKeys(q, options) {\n let it = this._allKeys(q, options);\n if (q.prefix != null) {\n const prefix = q.prefix;\n it = filter(it, (key) => key.toString().startsWith(prefix));\n }\n if (Array.isArray(q.filters)) {\n it = q.filters.reduce((it, f) => filter(it, f), it);\n }\n if (Array.isArray(q.orders)) {\n it = q.orders.reduce((it, f) => sort(it, f), it);\n }\n if (q.offset != null) {\n const offset = q.offset;\n let i = 0;\n it = filter(it, () => i++ >= offset);\n }\n if (q.limit != null) {\n it = take(it, q.limit);\n }\n return it;\n }\n}\n//# sourceMappingURL=base.js.map","import { Key } from 'interface-datastore/key';\nimport { BaseDatastore } from './base.js';\nimport * as Errors from './errors.js';\nexport class MemoryDatastore extends BaseDatastore {\n data;\n constructor() {\n super();\n this.data = new Map();\n }\n put(key, val) {\n this.data.set(key.toString(), val);\n return key;\n }\n get(key) {\n const result = this.data.get(key.toString());\n if (result == null) {\n throw Errors.notFoundError();\n }\n return result;\n }\n has(key) {\n return this.data.has(key.toString());\n }\n delete(key) {\n this.data.delete(key.toString());\n }\n *_all() {\n for (const [key, value] of this.data.entries()) {\n yield { key: new Key(key), value };\n }\n }\n *_allKeys() {\n for (const key of this.data.keys()) {\n yield new Key(key);\n }\n }\n}\n//# sourceMappingURL=memory.js.map","import { Key } from 'interface-datastore';\nimport { BaseDatastore } from './base.js';\nimport * as Errors from './errors.js';\nimport { KeyTransformDatastore } from './keytransform.js';\nimport { readShardFun, SHARDING_FN } from './shard.js';\nconst shardKey = new Key(SHARDING_FN);\n/**\n * Backend independent abstraction of go-ds-flatfs.\n *\n * Wraps another datastore such that all values are stored\n * sharded according to the given sharding function.\n */\nexport class ShardingDatastore extends BaseDatastore {\n child;\n shard;\n constructor(store, shard) {\n super();\n this.child = new KeyTransformDatastore(store, {\n convert: this._convertKey.bind(this),\n invert: this._invertKey.bind(this)\n });\n this.shard = shard;\n }\n async open() {\n this.shard = await ShardingDatastore.create(this.child, this.shard);\n }\n _convertKey(key) {\n const s = key.toString();\n if (s === shardKey.toString()) {\n return key;\n }\n const parent = new Key(this.shard.fun(s));\n return parent.child(key);\n }\n _invertKey(key) {\n const s = key.toString();\n if (s === shardKey.toString()) {\n return key;\n }\n return Key.withNamespaces(key.list().slice(1));\n }\n static async create(store, shard) {\n const hasShard = await store.has(shardKey);\n if (!hasShard) {\n if (shard == null) {\n throw Errors.dbOpenFailedError(Error('Shard is required when datastore doesn\\'t have a shard key already.'));\n }\n await store.put(shardKey, new TextEncoder().encode(shard.toString() + '\\n'));\n }\n if (shard == null) {\n shard = await readShardFun('/', store);\n }\n // test shards\n const diskShard = await readShardFun('/', store);\n const a = diskShard.toString();\n const b = shard.toString();\n if (a !== b) {\n throw new Error(`specified fun ${b} does not match repo shard fun ${a}`);\n }\n return diskShard;\n }\n async put(key, val, options) {\n await this.child.put(key, val, options);\n return key;\n }\n async get(key, options) {\n return this.child.get(key, options);\n }\n async has(key, options) {\n return this.child.has(key, options);\n }\n async delete(key, options) {\n await this.child.delete(key, options);\n }\n async *putMany(source, options = {}) {\n yield* this.child.putMany(source, options);\n }\n async *getMany(source, options = {}) {\n yield* this.child.getMany(source, options);\n }\n async *deleteMany(source, options = {}) {\n yield* this.child.deleteMany(source, options);\n }\n batch() {\n return this.child.batch();\n }\n query(q, options) {\n const omitShard = ({ key }) => key.toString() !== shardKey.toString();\n const tq = {\n ...q,\n filters: [\n omitShard\n ].concat(q.filters ?? [])\n };\n return this.child.query(tq, options);\n }\n queryKeys(q, options) {\n const omitShard = (key) => key.toString() !== shardKey.toString();\n const tq = {\n ...q,\n filters: [\n omitShard\n ].concat(q.filters ?? [])\n };\n return this.child.queryKeys(tq, options);\n }\n}\n//# sourceMappingURL=sharding.js.map","import { logger } from '@libp2p/logger';\nimport drain from 'it-drain';\nimport { pushable } from 'it-pushable';\nimport { BaseDatastore } from './base.js';\nimport * as Errors from './errors.js';\nconst log = logger('datastore:core:tiered');\n/**\n * A datastore that can combine multiple stores. Puts and deletes\n * will write through to all datastores. Has and get will\n * try each store sequentially. Query will always try the\n * last one first.\n *\n */\nexport class TieredDatastore extends BaseDatastore {\n stores;\n constructor(stores) {\n super();\n this.stores = stores.slice();\n }\n async put(key, value, options) {\n try {\n await Promise.all(this.stores.map(async (store) => { await store.put(key, value, options); }));\n return key;\n }\n catch (err) {\n throw Errors.dbWriteFailedError(err);\n }\n }\n async get(key, options) {\n for (const store of this.stores) {\n try {\n const res = await store.get(key, options);\n if (res != null)\n return res;\n }\n catch (err) {\n log.error(err);\n }\n }\n throw Errors.notFoundError();\n }\n async has(key, options) {\n for (const s of this.stores) {\n if (await s.has(key, options)) {\n return true;\n }\n }\n return false;\n }\n async delete(key, options) {\n try {\n await Promise.all(this.stores.map(async (store) => { await store.delete(key, options); }));\n }\n catch (err) {\n throw Errors.dbDeleteFailedError(err);\n }\n }\n async *putMany(source, options = {}) {\n let error;\n const pushables = this.stores.map(store => {\n const source = pushable({\n objectMode: true\n });\n drain(store.putMany(source, options))\n .catch(err => {\n // store threw while putting, make sure we bubble the error up\n error = err;\n });\n return source;\n });\n try {\n for await (const pair of source) {\n if (error != null) {\n throw error;\n }\n pushables.forEach(p => p.push(pair));\n yield pair.key;\n }\n }\n finally {\n pushables.forEach(p => p.end());\n }\n }\n async *deleteMany(source, options = {}) {\n let error;\n const pushables = this.stores.map(store => {\n const source = pushable({\n objectMode: true\n });\n drain(store.deleteMany(source, options))\n .catch(err => {\n // store threw while deleting, make sure we bubble the error up\n error = err;\n });\n return source;\n });\n try {\n for await (const key of source) {\n if (error != null) {\n throw error;\n }\n pushables.forEach(p => p.push(key));\n yield key;\n }\n }\n finally {\n pushables.forEach(p => p.end());\n }\n }\n batch() {\n const batches = this.stores.map(store => store.batch());\n return {\n put: (key, value) => {\n batches.forEach(b => { b.put(key, value); });\n },\n delete: (key) => {\n batches.forEach(b => { b.delete(key); });\n },\n commit: async (options) => {\n for (const batch of batches) {\n await batch.commit(options);\n }\n }\n };\n }\n query(q, options) {\n return this.stores[this.stores.length - 1].query(q, options);\n }\n queryKeys(q, options) {\n return this.stores[this.stores.length - 1].queryKeys(q, options);\n }\n}\n//# sourceMappingURL=tiered.js.map","/**\n * Takes an array of AbortSignals and returns a single signal.\n * If any signals are aborted, the returned signal will be aborted.\n */\nexport function anySignal(signals) {\n const controller = new globalThis.AbortController();\n function onAbort() {\n controller.abort();\n for (const signal of signals) {\n if (signal?.removeEventListener != null) {\n signal.removeEventListener('abort', onAbort);\n }\n }\n }\n for (const signal of signals) {\n if (signal?.aborted === true) {\n onAbort();\n break;\n }\n if (signal?.addEventListener != null) {\n signal.addEventListener('abort', onAbort);\n }\n }\n function clear() {\n for (const signal of signals) {\n if (signal?.removeEventListener != null) {\n signal.removeEventListener('abort', onAbort);\n }\n }\n }\n const signal = controller.signal;\n signal.clear = clear;\n return signal;\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Calls a function for each value in an (async)iterable.\n *\n * The function can be sync or async.\n *\n * Async functions can be awaited on so may slow down processing of the (async)iterable.\n *\n * @example\n *\n * ```javascript\n * import each from 'it-foreach'\n * import drain from 'it-drain'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * // prints [0, 0], [1, 1], [2, 2], [3, 3], [4, 4]\n * const arr = drain(\n * each(values, console.info)\n * )\n * ```\n *\n * Async sources and callbacks must be awaited:\n *\n * ```javascript\n * import each from 'it-foreach'\n * import drain from 'it-drain'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * // prints [0, 0], [1, 1], [2, 2], [3, 3], [4, 4]\n * const arr = await drain(\n * each(values(), console.info)\n * )\n * ```\n */\nimport peek from 'it-peekable';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction isPromise(thing) {\n return thing?.then != null;\n}\nfunction forEach(source, fn) {\n let index = 0;\n if (isAsyncIterable(source)) {\n return (async function* () {\n for await (const val of source) {\n const res = fn(val, index++);\n if (isPromise(res)) {\n await res;\n }\n yield val;\n }\n })();\n }\n // if fn function returns a promise we have to return an async generator\n const peekable = peek(source);\n const { value, done } = peekable.next();\n if (done === true) {\n return (function* () { }());\n }\n const res = fn(value, index++);\n if (typeof res?.then === 'function') {\n return (async function* () {\n yield value;\n for await (const val of peekable) {\n const res = fn(val, index++);\n if (isPromise(res)) {\n await res;\n }\n yield val;\n }\n })();\n }\n const func = fn;\n return (function* () {\n yield value;\n for (const val of peekable) {\n func(val, index++);\n yield val;\n }\n })();\n}\nexport default forEach;\n//# sourceMappingURL=index.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","class TrackedMap extends Map {\n metric;\n constructor(init) {\n super();\n const { name, metrics } = init;\n this.metric = metrics.registerMetric(name);\n this.updateComponentMetric();\n }\n set(key, value) {\n super.set(key, value);\n this.updateComponentMetric();\n return this;\n }\n delete(key) {\n const deleted = super.delete(key);\n this.updateComponentMetric();\n return deleted;\n }\n clear() {\n super.clear();\n this.updateComponentMetric();\n }\n updateComponentMetric() {\n this.metric.update(this.size);\n }\n}\nexport function trackedMap(config) {\n const { name, metrics } = config;\n let map;\n if (metrics != null) {\n map = new TrackedMap({ name, metrics });\n }\n else {\n map = new Map();\n }\n return map;\n}\n//# sourceMappingURL=tracked-map.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n","module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n","\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n","module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n","'use strict'\n\nconst varint = require('varint')\n\nmodule.exports = (buf) => {\n if (!(buf instanceof Uint8Array)) {\n throw new Error('arg needs to be a Uint8Array')\n }\n\n const result = []\n\n while (buf.length > 0) {\n const num = varint.decode(buf)\n result.push(num)\n buf = buf.slice(varint.decode.bytes)\n }\n\n return result\n}\n","import { base58btc } from 'multiformats/bases/base58';\nexport class WantListEntry {\n _refCounter;\n cid;\n priority;\n wantType;\n constructor(cid, priority, wantType) {\n // Keep track of how many requests we have for this key\n this._refCounter = 1;\n this.cid = cid;\n this.priority = priority ?? 1;\n this.wantType = wantType;\n }\n inc() {\n this._refCounter += 1;\n }\n dec() {\n this._refCounter = Math.max(0, this._refCounter - 1);\n }\n hasRefs() {\n return this._refCounter > 0;\n }\n // So that console.log prints a nice description of this object\n get [Symbol.toStringTag]() {\n const cidStr = this.cid.toString(base58btc);\n return `WantlistEntry `;\n }\n equals(other) {\n return (this._refCounter === other._refCounter) &&\n this.cid.equals(other.cid) &&\n this.priority === other.priority &&\n this.wantType === other.wantType;\n }\n}\n//# sourceMappingURL=entry.js.map","import { base58btc } from 'multiformats/bases/base58';\nimport { WantListEntry } from '../wantlist/entry.js';\nexport class BitswapMessageEntry {\n entry;\n cancel;\n sendDontHave;\n constructor(cid, priority, wantType, cancel, sendDontHave) {\n this.entry = new WantListEntry(cid, priority, wantType);\n this.cancel = Boolean(cancel);\n this.sendDontHave = Boolean(sendDontHave);\n }\n get cid() {\n return this.entry.cid;\n }\n set cid(cid) {\n this.entry.cid = cid;\n }\n get priority() {\n return this.entry.priority;\n }\n set priority(val) {\n this.entry.priority = val;\n }\n get wantType() {\n return this.entry.wantType;\n }\n set wantType(val) {\n this.entry.wantType = val;\n }\n get [Symbol.toStringTag]() {\n const cidStr = this.cid.toString(base58btc);\n return `BitswapMessageEntry ${cidStr} `;\n }\n equals(other) {\n return (this.cancel === other.cancel) &&\n (this.sendDontHave === other.sendDontHave) &&\n (this.wantType === other.wantType) &&\n this.entry.equals(other.entry);\n }\n}\n//# sourceMappingURL=entry.js.map","import { logger as createLogger } from '@libp2p/logger';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { BitswapMessageEntry } from '../message/entry.js';\n/**\n * Creates a logger for the given subsystem\n */\nexport const logger = (id, subsystem) => {\n const name = ['bitswap'];\n if (subsystem != null) {\n name.push(subsystem);\n }\n if (id != null) {\n name.push(`${id.toString().slice(0, 8)}`);\n }\n return createLogger(name.join(':'));\n};\nexport const includesWith = (pred, x, list) => {\n let idx = 0;\n const len = list.length;\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n idx += 1;\n }\n return false;\n};\nexport const uniqWith = (pred, list) => {\n let idx = 0;\n const len = list.length;\n const result = [];\n let item;\n while (idx < len) {\n item = list[idx];\n if (!includesWith(pred, item, result)) {\n result[result.length] = item;\n }\n idx += 1;\n }\n return result;\n};\nexport const groupBy = (pred, list) => {\n // @ts-expect-error cannot use {} as record with these key types?\n const output = {};\n return list.reduce((acc, v) => {\n const k = pred(v);\n if (acc[k] != null) {\n acc[k].push(v);\n }\n else {\n acc[k] = [v];\n }\n return acc;\n }, output);\n};\nexport const pullAllWith = (pred, list, values) => {\n return list.filter(i => {\n return !includesWith(pred, i, values);\n });\n};\nexport const sortBy = (fn, list) => {\n return Array.prototype.slice.call(list, 0).sort((a, b) => {\n const aa = fn(a);\n const bb = fn(b);\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n });\n};\n/**\n * Is equal for Maps of BitswapMessageEntry or Uint8Arrays\n */\nexport const isMapEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, valueA] of a) {\n const valueB = b.get(key);\n if (valueB === undefined) {\n return false;\n }\n // TODO: revisit this\n // Support Blocks\n if (valueA instanceof Uint8Array && valueB instanceof Uint8Array && !uint8ArrayEquals(valueA, valueB)) {\n return false;\n }\n // Support BitswapMessageEntry\n if (valueA instanceof BitswapMessageEntry && valueB instanceof BitswapMessageEntry && !valueA.equals(valueB)) {\n return false;\n }\n }\n return true;\n};\n//# sourceMappingURL=index.js.map","module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {\n encode.bytes = 0\n throw new RangeError('Could not encode varint')\n }\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n","module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l || shift > 49) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n","\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n","module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n","import * as varint from 'varint';\nfunction varintEncoder(buf) {\n let out = new Uint8Array(buf.reduce((acc, curr) => {\n // @ts-expect-error types are wrong\n return acc + varint.default.encodingLength(curr); // eslint-disable-line @typescript-eslint/restrict-plus-operands\n }, 0));\n let offset = 0;\n for (const num of buf) {\n out = varint.encode(num, out, offset);\n // @ts-expect-error types are wrong\n offset += varint.default.encodingLength(num); // eslint-disable-line @typescript-eslint/restrict-plus-operands\n }\n return out;\n}\nexport default varintEncoder;\n//# sourceMappingURL=varint-encoder.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Message;\n(function (Message) {\n let Wantlist;\n (function (Wantlist) {\n let WantType;\n (function (WantType) {\n WantType[\"Block\"] = \"Block\";\n WantType[\"Have\"] = \"Have\";\n })(WantType = Wantlist.WantType || (Wantlist.WantType = {}));\n let __WantTypeValues;\n (function (__WantTypeValues) {\n __WantTypeValues[__WantTypeValues[\"Block\"] = 0] = \"Block\";\n __WantTypeValues[__WantTypeValues[\"Have\"] = 1] = \"Have\";\n })(__WantTypeValues || (__WantTypeValues = {}));\n (function (WantType) {\n WantType.codec = () => {\n return enumeration(__WantTypeValues);\n };\n })(WantType = Wantlist.WantType || (Wantlist.WantType = {}));\n let Entry;\n (function (Entry) {\n let _codec;\n Entry.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.block != null && obj.block.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.block);\n }\n if ((obj.priority != null && obj.priority !== 0)) {\n w.uint32(16);\n w.int32(obj.priority);\n }\n if ((obj.cancel != null && obj.cancel !== false)) {\n w.uint32(24);\n w.bool(obj.cancel);\n }\n if (obj.wantType != null && __WantTypeValues[obj.wantType] !== 0) {\n w.uint32(32);\n Message.Wantlist.WantType.codec().encode(obj.wantType, w);\n }\n if ((obj.sendDontHave != null && obj.sendDontHave !== false)) {\n w.uint32(40);\n w.bool(obj.sendDontHave);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n block: new Uint8Array(0),\n priority: 0,\n cancel: false,\n wantType: WantType.Block,\n sendDontHave: false\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.block = reader.bytes();\n break;\n case 2:\n obj.priority = reader.int32();\n break;\n case 3:\n obj.cancel = reader.bool();\n break;\n case 4:\n obj.wantType = Message.Wantlist.WantType.codec().decode(reader);\n break;\n case 5:\n obj.sendDontHave = reader.bool();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Entry.encode = (obj) => {\n return encodeMessage(obj, Entry.codec());\n };\n Entry.decode = (buf) => {\n return decodeMessage(buf, Entry.codec());\n };\n })(Entry = Wantlist.Entry || (Wantlist.Entry = {}));\n let _codec;\n Wantlist.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.entries != null) {\n for (const value of obj.entries) {\n w.uint32(10);\n Message.Wantlist.Entry.codec().encode(value, w);\n }\n }\n if ((obj.full != null && obj.full !== false)) {\n w.uint32(16);\n w.bool(obj.full);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n entries: [],\n full: false\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.entries.push(Message.Wantlist.Entry.codec().decode(reader, reader.uint32()));\n break;\n case 2:\n obj.full = reader.bool();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Wantlist.encode = (obj) => {\n return encodeMessage(obj, Wantlist.codec());\n };\n Wantlist.decode = (buf) => {\n return decodeMessage(buf, Wantlist.codec());\n };\n })(Wantlist = Message.Wantlist || (Message.Wantlist = {}));\n let Block;\n (function (Block) {\n let _codec;\n Block.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.prefix != null && obj.prefix.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.prefix);\n }\n if ((obj.data != null && obj.data.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n prefix: new Uint8Array(0),\n data: new Uint8Array(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.prefix = reader.bytes();\n break;\n case 2:\n obj.data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Block.encode = (obj) => {\n return encodeMessage(obj, Block.codec());\n };\n Block.decode = (buf) => {\n return decodeMessage(buf, Block.codec());\n };\n })(Block = Message.Block || (Message.Block = {}));\n let BlockPresenceType;\n (function (BlockPresenceType) {\n BlockPresenceType[\"Have\"] = \"Have\";\n BlockPresenceType[\"DontHave\"] = \"DontHave\";\n })(BlockPresenceType = Message.BlockPresenceType || (Message.BlockPresenceType = {}));\n let __BlockPresenceTypeValues;\n (function (__BlockPresenceTypeValues) {\n __BlockPresenceTypeValues[__BlockPresenceTypeValues[\"Have\"] = 0] = \"Have\";\n __BlockPresenceTypeValues[__BlockPresenceTypeValues[\"DontHave\"] = 1] = \"DontHave\";\n })(__BlockPresenceTypeValues || (__BlockPresenceTypeValues = {}));\n (function (BlockPresenceType) {\n BlockPresenceType.codec = () => {\n return enumeration(__BlockPresenceTypeValues);\n };\n })(BlockPresenceType = Message.BlockPresenceType || (Message.BlockPresenceType = {}));\n let BlockPresence;\n (function (BlockPresence) {\n let _codec;\n BlockPresence.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.cid != null && obj.cid.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.cid);\n }\n if (obj.type != null && __BlockPresenceTypeValues[obj.type] !== 0) {\n w.uint32(16);\n Message.BlockPresenceType.codec().encode(obj.type, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n cid: new Uint8Array(0),\n type: BlockPresenceType.Have\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.cid = reader.bytes();\n break;\n case 2:\n obj.type = Message.BlockPresenceType.codec().decode(reader);\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n BlockPresence.encode = (obj) => {\n return encodeMessage(obj, BlockPresence.codec());\n };\n BlockPresence.decode = (buf) => {\n return decodeMessage(buf, BlockPresence.codec());\n };\n })(BlockPresence = Message.BlockPresence || (Message.BlockPresence = {}));\n let _codec;\n Message.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.wantlist != null) {\n w.uint32(10);\n Message.Wantlist.codec().encode(obj.wantlist, w);\n }\n if (obj.blocks != null) {\n for (const value of obj.blocks) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (obj.payload != null) {\n for (const value of obj.payload) {\n w.uint32(26);\n Message.Block.codec().encode(value, w);\n }\n }\n if (obj.blockPresences != null) {\n for (const value of obj.blockPresences) {\n w.uint32(34);\n Message.BlockPresence.codec().encode(value, w);\n }\n }\n if ((obj.pendingBytes != null && obj.pendingBytes !== 0)) {\n w.uint32(40);\n w.int32(obj.pendingBytes);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n blocks: [],\n payload: [],\n blockPresences: [],\n pendingBytes: 0\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.wantlist = Message.Wantlist.codec().decode(reader, reader.uint32());\n break;\n case 2:\n obj.blocks.push(reader.bytes());\n break;\n case 3:\n obj.payload.push(Message.Block.codec().decode(reader, reader.uint32()));\n break;\n case 4:\n obj.blockPresences.push(Message.BlockPresence.codec().decode(reader, reader.uint32()));\n break;\n case 5:\n obj.pendingBytes = reader.int32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Message.encode = (obj) => {\n return encodeMessage(obj, Message.codec());\n };\n Message.decode = (buf) => {\n return decodeMessage(buf, Message.codec());\n };\n})(Message || (Message = {}));\n//# sourceMappingURL=message.js.map","import { CodeError } from '@libp2p/interface';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\n// @ts-expect-error no types\nimport vd from 'varint-decoder';\nimport { isMapEqual } from '../utils/index.js';\nimport ve from '../utils/varint-encoder.js';\nimport { BitswapMessageEntry as Entry } from './entry.js';\nimport { Message } from './message.js';\nexport class BitswapMessage {\n static Entry = Entry;\n static WantType = {\n Block: Message.Wantlist.WantType.Block,\n Have: Message.Wantlist.WantType.Have\n };\n static BlockPresenceType = {\n Have: Message.BlockPresenceType.Have,\n DontHave: Message.BlockPresenceType.DontHave\n };\n static deserialize = async (raw, hashLoader) => {\n const decoded = Message.decode(raw);\n const isFull = decoded.wantlist?.full === true;\n const msg = new BitswapMessage(isFull);\n decoded.wantlist?.entries.forEach((entry) => {\n if (entry.block == null) {\n return;\n }\n // note: entry.block is the CID here\n const cid = CID.decode(entry.block);\n msg.addEntry(cid, entry.priority ?? 0, entry.wantType, Boolean(entry.cancel), Boolean(entry.sendDontHave));\n });\n decoded.blockPresences.forEach((blockPresence) => {\n if (blockPresence.cid == null) {\n return;\n }\n const cid = CID.decode(blockPresence.cid);\n if (blockPresence.type === BitswapMessage.BlockPresenceType.Have) {\n msg.addHave(cid);\n }\n else {\n msg.addDontHave(cid);\n }\n });\n // Bitswap 1.0.0\n // decoded.blocks are just the byte arrays\n if (decoded.blocks.length > 0) {\n await Promise.all(decoded.blocks.map(async (b) => {\n const hash = await sha256.digest(b);\n const cid = CID.createV0(hash);\n msg.addBlock(cid, b);\n }));\n return msg;\n }\n // Bitswap 1.1.0\n if (decoded.payload.length > 0) {\n await Promise.all(decoded.payload.map(async (p) => {\n if (p.prefix == null || p.data == null) {\n return;\n }\n const values = vd(p.prefix);\n const cidVersion = values[0];\n const multicodec = values[1];\n const hashAlg = values[2];\n const hasher = hashAlg === sha256.code ? sha256 : await hashLoader?.getHasher(hashAlg);\n if (hasher == null) {\n throw new CodeError('Unknown hash algorithm', 'ERR_UNKNOWN_HASH_ALG');\n }\n // const hashLen = values[3] // We haven't need to use this so far\n const hash = await hasher.digest(p.data);\n const cid = CID.create(cidVersion, multicodec, hash);\n msg.addBlock(cid, p.data);\n }));\n msg.setPendingBytes(decoded.pendingBytes);\n return msg;\n }\n return msg;\n };\n static blockPresenceSize = (cid) => {\n // It's ok if this is not exactly right: it's used to estimate the size of\n // the HAVE / DONT_HAVE on the wire, but when doing that calculation we leave\n // plenty of padding under the maximum message size.\n // (It's more important for this to be fast).\n return cid.bytes.length + 1;\n };\n full;\n wantlist;\n blocks;\n blockPresences;\n pendingBytes;\n constructor(full) {\n this.full = full;\n this.wantlist = new Map();\n this.blocks = new Map();\n this.blockPresences = new Map();\n this.pendingBytes = 0;\n }\n get empty() {\n return this.blocks.size === 0 &&\n this.wantlist.size === 0 &&\n this.blockPresences.size === 0;\n }\n addEntry(cid, priority, wantType, cancel, sendDontHave) {\n if (wantType == null) {\n wantType = BitswapMessage.WantType.Block;\n }\n const cidStr = cid.toString(base58btc);\n const entry = this.wantlist.get(cidStr);\n if (entry != null) {\n // Only change priority if want is of the same type\n if (entry.wantType === wantType) {\n entry.priority = priority;\n }\n // Only change from \"dont cancel\" to \"do cancel\"\n if (cancel === true) {\n entry.cancel = Boolean(cancel);\n }\n // Only change from \"dont send\" to \"do send\" DONT_HAVE\n if (sendDontHave === true) {\n entry.sendDontHave = Boolean(sendDontHave);\n }\n // want-block overrides existing want-have\n if (wantType === BitswapMessage.WantType.Block && entry.wantType === BitswapMessage.WantType.Have) {\n entry.wantType = wantType;\n }\n }\n else {\n this.wantlist.set(cidStr, new Entry(cid, priority, wantType, cancel, sendDontHave));\n }\n }\n addBlock(cid, block) {\n const cidStr = cid.toString(base58btc);\n this.blocks.set(cidStr, block);\n }\n addHave(cid) {\n const cidStr = cid.toString(base58btc);\n if (!this.blockPresences.has(cidStr)) {\n this.blockPresences.set(cidStr, BitswapMessage.BlockPresenceType.Have);\n }\n }\n addDontHave(cid) {\n const cidStr = cid.toString(base58btc);\n if (!this.blockPresences.has(cidStr)) {\n this.blockPresences.set(cidStr, BitswapMessage.BlockPresenceType.DontHave);\n }\n }\n cancel(cid) {\n const cidStr = cid.toString(base58btc);\n this.wantlist.delete(cidStr);\n this.addEntry(cid, 0, BitswapMessage.WantType.Block, true, false);\n }\n setPendingBytes(size) {\n this.pendingBytes = size;\n }\n /**\n * Serializes to Bitswap Message protobuf of\n * version 1.0.0\n */\n serializeToBitswap100() {\n return Message.encode({\n wantlist: {\n entries: Array.from(this.wantlist.values()).map((entry) => {\n return {\n block: entry.cid.bytes, // cid\n priority: Number(entry.priority),\n cancel: Boolean(entry.cancel),\n wantType: Message.Wantlist.WantType.Block,\n sendDontHave: false\n };\n }),\n full: Boolean(this.full)\n },\n blocks: Array.from(this.blocks.values())\n });\n }\n /**\n * Serializes to Bitswap Message protobuf of\n * version 1.1.0\n */\n serializeToBitswap110() {\n const msg = {\n wantlist: {\n entries: Array.from(this.wantlist.values()).map((entry) => {\n return {\n block: entry.cid.bytes, // cid\n priority: Number(entry.priority),\n wantType: entry.wantType,\n cancel: Boolean(entry.cancel),\n sendDontHave: Boolean(entry.sendDontHave)\n };\n }),\n full: Boolean(this.full)\n },\n blockPresences: [],\n payload: [],\n pendingBytes: this.pendingBytes,\n blocks: []\n };\n for (const [cidStr, data] of this.blocks.entries()) {\n const cid = CID.parse(cidStr);\n const version = cid.version;\n const codec = cid.code;\n const multihash = cid.multihash.code;\n const digestLength = cid.multihash.digest.length;\n const prefix = ve([\n version, codec, multihash, digestLength\n ]);\n msg.payload.push({\n prefix,\n data\n });\n }\n for (const [cidStr, bpType] of this.blockPresences) {\n msg.blockPresences.push({\n cid: CID.parse(cidStr).bytes,\n type: bpType\n });\n }\n if (this.pendingBytes > 0) {\n msg.pendingBytes = this.pendingBytes;\n }\n return Message.encode(msg);\n }\n equals(other) {\n if (this.full !== other.full ||\n this.pendingBytes !== other.pendingBytes ||\n !isMapEqual(this.wantlist, other.wantlist) ||\n !isMapEqual(this.blocks, other.blocks) ||\n // @TODO - Is this a bug ?\n // @ts-expect-error - isMap equals map values to be objects not numbers\n !isMapEqual(this.blockPresences, other.blockPresences)) {\n return false;\n }\n return true;\n }\n get [Symbol.toStringTag]() {\n const list = Array.from(this.wantlist.keys());\n const blocks = Array.from(this.blocks.keys());\n return `BitswapMessage `;\n }\n}\n//# sourceMappingURL=index.js.map","import { trackedMap } from '@libp2p/utils/tracked-map';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { Message } from '../message/message.js';\nimport { WantListEntry as Entry } from './entry.js';\nconst WantType = {\n Block: Message.Wantlist.WantType.Block,\n Have: Message.Wantlist.WantType.Have\n};\nconst sortBy = (fn, list) => {\n return Array.prototype.slice.call(list, 0).sort((a, b) => {\n const aa = fn(a);\n const bb = fn(b);\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n });\n};\nexport class Wantlist {\n static Entry = Entry;\n set;\n _stats;\n constructor(stats, libp2p) {\n this.set = (libp2p != null)\n ? trackedMap({\n name: 'ipfs_bitswap_wantlist',\n metrics: libp2p.metrics\n })\n : new Map();\n this._stats = stats;\n }\n get length() {\n return this.set.size;\n }\n add(cid, priority, wantType) {\n const cidStr = cid.toString(base58btc);\n const entry = this.set.get(cidStr);\n if (entry != null) {\n entry.inc();\n entry.priority = priority;\n // We can only overwrite want-have with want-block\n if (entry.wantType === WantType.Have && wantType === WantType.Block) {\n entry.wantType = wantType;\n }\n }\n else {\n this.set.set(cidStr, new Entry(cid, priority, wantType));\n if (this._stats != null) {\n this._stats.push(undefined, 'wantListSize', 1);\n }\n }\n }\n remove(cid) {\n const cidStr = cid.toString(base58btc);\n const entry = this.set.get(cidStr);\n if (entry == null) {\n return;\n }\n entry.dec();\n // only delete when no refs are held\n if (entry.hasRefs()) {\n return;\n }\n this.set.delete(cidStr);\n if (this._stats != null) {\n this._stats.push(undefined, 'wantListSize', -1);\n }\n }\n removeForce(cidStr) {\n if (this.set.has(cidStr)) {\n this.set.delete(cidStr);\n }\n }\n forEach(fn) {\n this.set.forEach(fn);\n }\n entries() {\n return this.set.entries();\n }\n sortedEntries() {\n // TODO: Figure out if this is an actual bug.\n // @ts-expect-error - Property 'key' does not exist on type 'WantListEntry'\n return new Map(sortBy(o => o[1].key, Array.from(this.set.entries())));\n }\n contains(cid) {\n const cidStr = cid.toString(base58btc);\n return this.set.has(cidStr);\n }\n get(cid) {\n const cidStr = cid.toString(base58btc);\n return this.set.get(cidStr);\n }\n}\n//# sourceMappingURL=index.js.map","import { Wantlist } from '../wantlist/index.js';\nexport class Ledger {\n partner;\n wantlist;\n exchangeCount;\n accounting;\n lastExchange;\n constructor(peerId) {\n this.partner = peerId;\n this.wantlist = new Wantlist();\n this.exchangeCount = 0;\n this.accounting = {\n bytesSent: 0,\n bytesRecv: 0\n };\n }\n sentBytes(n) {\n this.exchangeCount++;\n this.lastExchange = (new Date()).getTime();\n this.accounting.bytesSent += n;\n }\n receivedBytes(n) {\n this.exchangeCount++;\n this.lastExchange = (new Date()).getTime();\n this.accounting.bytesRecv += n;\n }\n wants(cid, priority, wantType) {\n this.wantlist.add(cid, priority, wantType);\n }\n /**\n * @param {CID} cid\n * @returns {void}\n */\n cancelWant(cid) {\n this.wantlist.remove(cid);\n }\n wantlistContains(cid) {\n return this.wantlist.get(cid);\n }\n debtRatio() {\n return (this.accounting.bytesSent / (this.accounting.bytesRecv + 1)); // +1 is to prevent division by zero\n }\n}\n//# sourceMappingURL=ledger.js.map","/**\n * SortedMap is a Map whose iterator order can be defined by the user\n */\nexport class SortedMap extends Map {\n _cmp;\n _keys;\n constructor(entries, cmp) {\n super();\n this._cmp = cmp ?? this._defaultSort;\n this._keys = [];\n for (const [k, v] of entries ?? []) {\n this.set(k, v);\n }\n }\n /**\n * Call update to update the position of the key when it should change.\n * For example if the compare function sorts by the priority field, and the\n * priority changes, call update.\n * Call indexOf() to get the index _before_ the change happens.\n */\n update(i) {\n if (i < 0 || i >= this._keys.length) {\n return;\n }\n const k = this._keys[i];\n this._keys.splice(i, 1);\n const newIdx = this._find(k);\n this._keys.splice(newIdx, 0, k);\n }\n set(k, v) {\n // If the key is already in the map, remove it from the ordering and\n // re-insert it below\n if (this.has(k)) {\n const i = this.indexOf(k);\n this._keys.splice(i, 1);\n }\n // Update / insert the k/v into the map\n super.set(k, v);\n // Find the correct position of the newly inserted k/v in the order\n const i = this._find(k);\n this._keys.splice(i, 0, k);\n return this;\n }\n clear() {\n super.clear();\n this._keys = [];\n }\n delete(k) {\n if (!this.has(k)) {\n return false;\n }\n const i = this.indexOf(k);\n this._keys.splice(i, 1);\n return super.delete(k);\n }\n indexOf(k) {\n if (!this.has(k)) {\n return -1;\n }\n const i = this._find(k);\n if (this._keys[i] === k) {\n return i;\n }\n // There may be more than one key with the same ordering\n // eg { k1: , k2: }\n // so scan outwards until the key matches\n for (let j = 1; j < this._keys.length; j++) {\n if (this._keys[i + j] === k)\n return i + j;\n if (this._keys[i - j] === k)\n return i - j;\n }\n return -1; // should never happen for existing key\n }\n _find(k) {\n let lower = 0;\n let upper = this._keys.length;\n while (lower < upper) {\n const pivot = (lower + upper) >>> 1; // lower + (upper - lower) / 2\n const cmp = this._kCmp(this._keys[pivot], k);\n // console.log(` _find ${lower}:${upper}[${pivot}] ${cmp}`)\n if (cmp < 0) { // pivot < k\n lower = pivot + 1;\n }\n else if (cmp > 0) { // pivot > k\n upper = pivot;\n }\n else { // pivot == k\n return pivot;\n }\n }\n return lower;\n }\n *keys() {\n for (const k of this._keys) {\n yield k;\n }\n return undefined;\n }\n *values() {\n for (const k of this._keys) {\n // @ts-expect-error - return of `this.get(k)` is `Value|undefined` which is\n // incompatible with `Value`. Typechecker can't that this contains values\n // for all the `_keys`. ts(2322)\n yield this.get(k);\n }\n return undefined;\n }\n *entries() {\n for (const k of this._keys) {\n // @ts-expect-error - return of `this.get(k)` is `Value|undefined` which is\n // incompatible with `Value`. Typechecker can't that this contains values\n // for all the `_keys`. ts(2322)\n yield [k, this.get(k)];\n }\n return undefined;\n }\n *[Symbol.iterator]() {\n yield* this.entries();\n }\n // @ts-expect-error - Callback in Map forEach is (V, K, Map) => void\n forEach(cb, thisArg = this) {\n if (cb == null) {\n return;\n }\n for (const k of this._keys) {\n const val = this.get(k);\n if (val == null) {\n throw new Error('Value cannot be undefined');\n }\n cb.apply(thisArg, [[k, val]]);\n }\n }\n _defaultSort(a, b) {\n if (a[0] < b[0])\n return -1;\n if (b[0] < a[0])\n return 1;\n return 0;\n }\n _kCmp(a, b) {\n return this._cmp(\n // @ts-expect-error - get may return undefined\n [a, this.get(a)], [b, this.get(b)]);\n }\n}\n//# sourceMappingURL=sorted-map.js.map","import { SortedMap } from '../utils/sorted-map.js';\n/**\n * The task merger that is used by default.\n * Assumes that new tasks do not add any information over existing tasks,\n * and doesn't try to merge.\n */\nconst DefaultTaskMerger = {\n hasNewInfo() {\n return false;\n },\n merge() { }\n};\n/**\n * Queue of requests to be processed by the engine.\n * The requests from each peer are added to the peer's queue, sorted by\n * priority.\n * Tasks are popped in priority order from the best peer - see popTasks()\n * for more details.\n */\nexport class RequestQueue {\n _taskMerger;\n _byPeer;\n constructor(taskMerger = DefaultTaskMerger) {\n this._taskMerger = taskMerger;\n this._byPeer = new SortedMap([], PeerTasks.compare);\n }\n /**\n * Push tasks onto the queue for the given peer\n */\n pushTasks(peerId, tasks) {\n let peerTasks = this._byPeer.get(peerId.toString());\n if (peerTasks == null) {\n peerTasks = new PeerTasks(peerId, this._taskMerger);\n }\n peerTasks.pushTasks(tasks);\n this._byPeer.set(peerId.toString(), peerTasks);\n }\n /**\n * Choose the peer with the least active work (or if all have the same active\n * work, the most pending tasks) and pop off the highest priority tasks until\n * the total size is at least targetMinBytes.\n * This puts the popped tasks into the \"active\" state, meaning they are\n * actively being processed (and cannot be modified).\n */\n popTasks(targetMinBytes) {\n // Get the queue of tasks for the best peer and pop off tasks up to\n // targetMinBytes\n const peerTasks = this._head();\n if (peerTasks === undefined) {\n return { tasks: [], pendingSize: 0 };\n }\n const { tasks, pendingSize } = peerTasks.popTasks(targetMinBytes);\n if (tasks.length === 0) {\n return { tasks, pendingSize };\n }\n const peerId = peerTasks.peerId;\n if (peerTasks.isIdle()) {\n // If there are no more tasks for the peer, free up its memory\n this._byPeer.delete(peerId.toString());\n }\n else {\n // If there are still tasks remaining, update the sort order of peerTasks\n // (because it depends on the number of pending tasks)\n this._byPeer.update(0);\n }\n return {\n peerId, tasks, pendingSize\n };\n }\n _head() {\n // Shortcut\n if (this._byPeer.size === 0) {\n return undefined;\n }\n // eslint-disable-next-line no-unreachable-loop\n for (const [, v] of this._byPeer) {\n return v;\n }\n return undefined;\n }\n /**\n * Remove the task with the given topic for the given peer.\n */\n remove(topic, peerId) {\n const peerTasks = this._byPeer.get(peerId.toString());\n peerTasks?.remove(topic);\n }\n /**\n * Called when the tasks for the given peer complete.\n */\n tasksDone(peerId, tasks) {\n const peerTasks = this._byPeer.get(peerId.toString());\n if (peerTasks == null) {\n return;\n }\n const i = this._byPeer.indexOf(peerId.toString());\n for (const task of tasks) {\n peerTasks.taskDone(task);\n }\n // Marking the tasks as done takes them out of the \"active\" state, and the\n // sort order depends on the size of the active tasks, so we need to update\n // the order.\n this._byPeer.update(i);\n }\n}\n/**\n * Queue of tasks for a particular peer, sorted by priority.\n */\nclass PeerTasks {\n peerId;\n _taskMerger;\n _activeTotalSize;\n _pending;\n _active;\n constructor(peerId, taskMerger) {\n this.peerId = peerId;\n this._taskMerger = taskMerger;\n this._activeTotalSize = 0;\n this._pending = new PendingTasks();\n this._active = new Set();\n }\n /**\n * Push tasks onto the queue\n */\n pushTasks(tasks) {\n for (const t of tasks) {\n this._pushTask(t);\n }\n }\n _pushTask(task) {\n // If the new task doesn't add any more information over what we\n // already have in the active queue, then we can skip the new task\n if (!this._taskHasMoreInfoThanActiveTasks(task)) {\n return;\n }\n // If there is already a non-active (pending) task with this topic\n const existingTask = this._pending.get(task.topic);\n if (existingTask != null) {\n // If the new task has a higher priority than the old task,\n if (task.priority > existingTask.priority) {\n // Update the priority and the task's position in the queue\n this._pending.updatePriority(task.topic, task.priority);\n }\n // Merge the information from the new task into the existing task\n this._taskMerger.merge(task, existingTask);\n // A task with the topic exists, so we don't need to add\n // the new task to the queue\n return;\n }\n // Push the new task onto the queue\n this._pending.add(task);\n }\n /**\n * Indicates whether the new task adds any more information over tasks that are\n * already in the active task queue\n */\n _taskHasMoreInfoThanActiveTasks(task) {\n const tasksWithTopic = [];\n for (const activeTask of this._active) {\n if (activeTask.topic === task.topic) {\n tasksWithTopic.push(activeTask);\n }\n }\n // No tasks with that topic, so the new task adds information\n if (tasksWithTopic.length === 0) {\n return true;\n }\n return this._taskMerger.hasNewInfo(task, tasksWithTopic);\n }\n /**\n * Pop tasks off the queue such that the total size is at least targetMinBytes\n */\n popTasks(targetMinBytes) {\n let size = 0;\n const tasks = [];\n // Keep popping tasks until we get up to targetMinBytes (or one item over\n // targetMinBytes)\n const pendingTasks = this._pending.tasks();\n for (let i = 0; i < pendingTasks.length && size < targetMinBytes; i++) {\n const task = pendingTasks[i];\n tasks.push(task);\n size += task.size;\n // Move tasks from pending to active\n this._pending.delete(task.topic);\n this._activeTotalSize += task.size;\n this._active.add(task);\n }\n return {\n tasks, pendingSize: this._pending.totalSize\n };\n }\n /**\n * Called when a task completes.\n * Note: must be the same reference as returned from popTasks.\n */\n taskDone(task) {\n if (this._active.has(task)) {\n this._activeTotalSize -= task.size;\n this._active.delete(task);\n }\n }\n /**\n * Remove pending tasks with the given topic\n */\n remove(topic) {\n this._pending.delete(topic);\n }\n /**\n * No work to be done, this PeerTasks object can be freed.\n */\n isIdle() {\n return this._pending.length === 0 && this._active.size === 0;\n }\n /**\n * Compare PeerTasks\n */\n static compare(a, b) {\n // Move peers with no pending tasks to the back of the queue\n if (a[1]._pending.length === 0) {\n return 1;\n }\n if (b[1]._pending.length === 0) {\n return -1;\n }\n // If the amount of active work is the same\n if (a[1]._activeTotalSize === b[1]._activeTotalSize) {\n // Choose the peer with the most pending work\n return b[1]._pending.length - a[1]._pending.length;\n }\n // Choose the peer with the least amount of active work (\"keep peers busy\")\n return a[1]._activeTotalSize - b[1]._activeTotalSize;\n }\n}\n/**\n * Queue of pending tasks for a particular peer, sorted by priority.\n */\nclass PendingTasks {\n _tasks;\n constructor() {\n this._tasks = new SortedMap([], this._compare);\n }\n get length() {\n return this._tasks.size;\n }\n /**\n * Sum of the size of all pending tasks\n **/\n get totalSize() {\n return [...this._tasks.values()].reduce((a, t) => a + t.task.size, 0);\n }\n get(topic) {\n return this._tasks?.get(topic)?.task;\n }\n add(task) {\n this._tasks.set(task.topic, {\n created: Date.now(),\n task\n });\n }\n delete(topic) {\n this._tasks.delete(topic);\n }\n // All pending tasks, in priority order\n tasks() {\n return [...this._tasks.values()].map(i => i.task);\n }\n /**\n * Update the priority of the task with the given topic, and update the order\n **/\n updatePriority(topic, priority) {\n const obj = this._tasks.get(topic);\n if (obj == null) {\n return;\n }\n const i = this._tasks.indexOf(topic);\n obj.task.priority = priority;\n this._tasks.update(i);\n }\n /**\n * Sort by priority desc then FIFO\n */\n _compare(a, b) {\n if (a[1].task.priority === b[1].task.priority) {\n // FIFO\n return a[1].created - b[1].created;\n }\n // Priority high -> low\n return b[1].task.priority - a[1].task.priority;\n }\n}\n//# sourceMappingURL=req-queue.js.map","export const DefaultTaskMerger = {\n /**\n * Indicates whether the given task has newer information than the active\n * tasks with the same topic.\n *\n * @param {Task} task\n * @param {Task[]} tasksWithTopic\n * @returns {boolean}\n */\n hasNewInfo(task, tasksWithTopic) {\n let haveBlock = false;\n let isWantBlock = false;\n for (const existing of tasksWithTopic) {\n if (existing.data.haveBlock) {\n haveBlock = true;\n }\n if (existing.data.isWantBlock) {\n isWantBlock = true;\n }\n }\n // If there is no active want-block and the new task is a want-block,\n // the new task is better\n if (!isWantBlock && task.data.isWantBlock) {\n return true;\n }\n // If we didn't have the block, and the new task indicates that we now\n // do have the block, then we must also have size information for the\n // block, so the new task has new information.\n if (!haveBlock && task.data.haveBlock) {\n return true;\n }\n return false;\n },\n /**\n * Merge the information from the given task into the existing task (with the\n * same topic)\n */\n merge(newTask, existingTask) {\n // The merge function ignores the topic and priority as these don't change.\n //\n // We may receive new information about a want before the want has been\n // popped from the queue in the following scenarios:\n //\n // - Replace want type:\n // 1. Client sends want-have CID1\n // 2. Client sends want-block CID1\n // In this case we should replace want-have with want-block, including\n // updating the task size to be the block size.\n //\n // - Replace DONT_HAVE with want:\n // 1. Client sends want-have CID1 or want-block CID1\n // 2. Local node doesn't have block for CID1\n // 3. Local node receives block for CID1 from peer\n // In this case we should replace DONT_HAVE with the want, including\n // updating the task size and block size.\n const taskData = newTask.data;\n const existingData = existingTask.data;\n // If we didn't have block size information (because we didn't have the\n // block) and we receive the block from a peer, update the task with the\n // new block size\n if (!existingData.haveBlock && taskData.haveBlock) {\n existingData.haveBlock = taskData.haveBlock;\n existingData.blockSize = taskData.blockSize;\n }\n // If replacing a want-have with a want-block\n if (!existingData.isWantBlock && taskData.isWantBlock) {\n // Change the type from want-have to want-block\n existingData.isWantBlock = true;\n // If the want-have was a DONT_HAVE, or the want-block has a size\n if (!existingData.haveBlock || taskData.haveBlock) {\n // Update the entry size\n existingData.haveBlock = taskData.haveBlock;\n existingTask.size = newTask.size;\n }\n }\n // If the task is a want-block, make sure the entry size is equal\n // to the block size (because we will send the whole block)\n if (existingData.isWantBlock && existingData.haveBlock) {\n existingTask.size = existingData.blockSize;\n }\n }\n};\n//# sourceMappingURL=task-merger.js.map","import { trackedMap } from '@libp2p/utils/tracked-map';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { CID } from 'multiformats/cid';\nimport { BitswapMessage as Message } from '../message/index.js';\nimport { logger } from '../utils/index.js';\nimport { Wantlist } from '../wantlist/index.js';\nimport { Ledger } from './ledger.js';\nimport { RequestQueue } from './req-queue.js';\nimport { DefaultTaskMerger } from './task-merger.js';\nconst WantType = Message.WantType;\n// The ideal size of the batched payload. We try to pop this much data off the\n// request queue, but\n// - if there isn't any more data in the queue we send whatever we have\n// - if there are several small items in the queue (eg HAVE response) followed\n// by one big item (eg a block) that would exceed this target size, we\n// include the big item in the message\nconst TARGET_MESSAGE_SIZE = 16 * 1024;\n// If the client sends a want-have, and the engine has the corresponding block,\n// we check the size of the block and if it's small enough we send the block\n// itself, rather than sending a HAVE.\n// This constant defines the maximum size up to which we replace a HAVE with\n// a block.\nconst MAX_SIZE_REPLACE_HAS_WITH_BLOCK = 1024;\nexport class DecisionEngine {\n _log;\n blockstore;\n network;\n _stats;\n _opts;\n ledgerMap;\n _running;\n _requestQueue;\n constructor(peerId, blockstore, network, stats, libp2p, opts = {}) {\n this._log = logger(peerId, 'engine');\n this.blockstore = blockstore;\n this.network = network;\n this._stats = stats;\n this._opts = this._processOpts(opts);\n // A list of of ledgers by their partner id\n this.ledgerMap = trackedMap({\n name: 'ipfs_bitswap_ledger_map',\n metrics: libp2p.metrics\n });\n this._running = false;\n // Queue of want-have / want-block per peer\n this._requestQueue = new RequestQueue(DefaultTaskMerger);\n }\n _processOpts(opts) {\n return {\n maxSizeReplaceHasWithBlock: MAX_SIZE_REPLACE_HAS_WITH_BLOCK,\n targetMessageSize: TARGET_MESSAGE_SIZE,\n ...opts\n };\n }\n _scheduleProcessTasks() {\n setTimeout(() => {\n this._processTasks().catch(err => {\n this._log.error('error processing stats', err);\n });\n });\n }\n /**\n * Pull tasks off the request queue and send a message to the corresponding\n * peer\n */\n async _processTasks() {\n if (!this._running) {\n return;\n }\n const { peerId, tasks, pendingSize } = this._requestQueue.popTasks(this._opts.targetMessageSize);\n if (tasks.length === 0) {\n return;\n }\n // Create a new message\n const msg = new Message(false);\n // Amount of data in the request queue still waiting to be popped\n msg.setPendingBytes(pendingSize);\n // Split out want-blocks, want-haves and DONT_HAVEs\n const blockCids = [];\n const blockTasks = new Map();\n for (const task of tasks) {\n const cid = CID.parse(task.topic);\n if (task.data.haveBlock) {\n if (task.data.isWantBlock) {\n blockCids.push(cid);\n blockTasks.set(task.topic, task.data);\n }\n else {\n // Add HAVES to the message\n msg.addHave(cid);\n }\n }\n else {\n // Add DONT_HAVEs to the message\n msg.addDontHave(cid);\n }\n }\n const blocks = await this._getBlocks(blockCids);\n for (const [topic, taskData] of blockTasks) {\n const cid = CID.parse(topic);\n const blk = blocks.get(topic);\n // If the block was found (it has not been removed)\n if (blk != null) {\n // Add the block to the message\n msg.addBlock(cid, blk);\n }\n else {\n // The block was not found. If the client requested DONT_HAVE,\n // add DONT_HAVE to the message.\n if (taskData.sendDontHave) {\n msg.addDontHave(cid);\n }\n }\n }\n // If there's nothing in the message, bail out\n if (msg.empty) {\n (peerId != null) && this._requestQueue.tasksDone(peerId, tasks);\n // Trigger the next round of task processing\n this._scheduleProcessTasks();\n return;\n }\n try {\n // Send the message\n (peerId != null) && await this.network.sendMessage(peerId, msg);\n // Peform sent message accounting\n for (const [cidStr, block] of blocks.entries()) {\n (peerId != null) && this.messageSent(peerId, CID.parse(cidStr), block);\n }\n }\n catch (err) {\n this._log.error(err);\n }\n // Free the tasks up from the request queue\n (peerId != null) && this._requestQueue.tasksDone(peerId, tasks);\n // Trigger the next round of task processing\n this._scheduleProcessTasks();\n }\n wantlistForPeer(peerId) {\n const peerIdStr = peerId.toString();\n const ledger = this.ledgerMap.get(peerIdStr);\n return (ledger != null) ? ledger.wantlist.sortedEntries() : new Map();\n }\n ledgerForPeer(peerId) {\n const peerIdStr = peerId.toString();\n const ledger = this.ledgerMap.get(peerIdStr);\n if (ledger == null) {\n return undefined;\n }\n return {\n peer: ledger.partner,\n value: ledger.debtRatio(),\n sent: ledger.accounting.bytesSent,\n recv: ledger.accounting.bytesRecv,\n exchanged: ledger.exchangeCount\n };\n }\n peers() {\n return Array.from(this.ledgerMap.values()).map((l) => l.partner);\n }\n /**\n * Receive blocks either from an incoming message from the network, or from\n * blocks being added by the client on the localhost (eg IPFS add)\n */\n receivedBlocks(blocks) {\n if (blocks.length === 0) {\n return;\n }\n // For each connected peer, check if it wants the block we received\n for (const ledger of this.ledgerMap.values()) {\n for (const { cid, block } of blocks) {\n // Filter out blocks that we don't want\n const want = ledger.wantlistContains(cid);\n if (want == null) {\n continue;\n }\n // If the block is small enough, just send the block, even if the\n // client asked for a HAVE\n const blockSize = block.length;\n const isWantBlock = this._sendAsBlock(want.wantType, blockSize);\n let entrySize = blockSize;\n if (!isWantBlock) {\n entrySize = Message.blockPresenceSize(want.cid);\n }\n this._requestQueue.pushTasks(ledger.partner, [{\n topic: want.cid.toString(base58btc),\n priority: want.priority,\n size: entrySize,\n data: {\n blockSize,\n isWantBlock,\n haveBlock: true,\n sendDontHave: false\n }\n }]);\n }\n }\n this._scheduleProcessTasks();\n }\n /**\n * Handle incoming messages\n */\n async messageReceived(peerId, msg) {\n const ledger = this._findOrCreate(peerId);\n if (msg.empty) {\n return;\n }\n // If the message has a full wantlist, clear the current wantlist\n if (msg.full) {\n ledger.wantlist = new Wantlist();\n }\n // Record the amount of block data received\n this._updateBlockAccounting(msg.blocks, ledger);\n if (msg.wantlist.size === 0) {\n this._scheduleProcessTasks();\n return;\n }\n // Clear cancelled wants and add new wants to the ledger\n const cancels = [];\n const wants = [];\n msg.wantlist.forEach((entry) => {\n if (entry.cancel) {\n ledger.cancelWant(entry.cid);\n cancels.push(entry.cid);\n }\n else {\n ledger.wants(entry.cid, entry.priority, entry.wantType);\n wants.push(entry);\n }\n });\n this._cancelWants(peerId, cancels);\n await this._addWants(peerId, wants);\n this._scheduleProcessTasks();\n }\n _cancelWants(peerId, cids) {\n for (const c of cids) {\n this._requestQueue.remove(c.toString(base58btc), peerId);\n }\n }\n async _addWants(peerId, wants) {\n // Get the size of each wanted block\n const blockSizes = await this._getBlockSizes(wants.map(w => w.cid));\n const tasks = [];\n for (const want of wants) {\n const id = want.cid.toString(base58btc);\n const blockSize = blockSizes.get(id);\n // If the block was not found\n if (blockSize == null) {\n // Only add the task to the queue if the requester wants a DONT_HAVE\n if (want.sendDontHave) {\n tasks.push({\n topic: id,\n priority: want.priority,\n size: Message.blockPresenceSize(want.cid),\n data: {\n isWantBlock: want.wantType === WantType.Block,\n blockSize: 0,\n haveBlock: false,\n sendDontHave: want.sendDontHave\n }\n });\n }\n }\n else {\n // The block was found, add it to the queue\n // If the block is small enough, just send the block, even if the\n // client asked for a HAVE\n const isWantBlock = this._sendAsBlock(want.wantType, blockSize);\n // entrySize is the amount of space the entry takes up in the\n // message we send to the recipient. If we're sending a block, the\n // entrySize is the size of the block. Otherwise it's the size of\n // a block presence entry.\n let entrySize = blockSize;\n if (!isWantBlock) {\n entrySize = Message.blockPresenceSize(want.cid);\n }\n tasks.push({\n topic: id,\n priority: want.priority,\n size: entrySize,\n data: {\n isWantBlock,\n blockSize,\n haveBlock: true,\n sendDontHave: want.sendDontHave\n }\n });\n }\n this._requestQueue.pushTasks(peerId, tasks);\n }\n }\n _sendAsBlock(wantType, blockSize) {\n return wantType === WantType.Block ||\n blockSize <= this._opts.maxSizeReplaceHasWithBlock;\n }\n async _getBlockSizes(cids) {\n const blocks = await this._getBlocks(cids);\n return new Map([...blocks].map(([k, v]) => [k, v.length]));\n }\n async _getBlocks(cids) {\n const res = new Map();\n await Promise.all(cids.map(async (cid) => {\n try {\n const block = await this.blockstore.get(cid);\n res.set(cid.toString(base58btc), block);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n this._log.error('failed to query blockstore for %s: %s', cid, err);\n }\n }\n }));\n return res;\n }\n _updateBlockAccounting(blocksMap, ledger) {\n for (const block of blocksMap.values()) {\n this._log('got block (%s bytes)', block.length);\n ledger.receivedBytes(block.length);\n }\n }\n /**\n * Clear up all accounting things after message was sent\n */\n messageSent(peerId, cid, block) {\n const ledger = this._findOrCreate(peerId);\n ledger.sentBytes(block.length);\n ledger.wantlist.remove(cid);\n }\n numBytesSentTo(peerId) {\n return this._findOrCreate(peerId).accounting.bytesSent;\n }\n numBytesReceivedFrom(peerId) {\n return this._findOrCreate(peerId).accounting.bytesRecv;\n }\n peerDisconnected(peerId) {\n this.ledgerMap.delete(peerId.toString());\n }\n _findOrCreate(peerId) {\n const peerIdStr = peerId.toString();\n const ledger = this.ledgerMap.get(peerIdStr);\n if (ledger != null) {\n return ledger;\n }\n const l = new Ledger(peerId);\n this.ledgerMap.set(peerIdStr, l);\n if (this._stats != null) {\n this._stats.push(peerIdStr, 'peerCount', 1);\n }\n return l;\n }\n start() {\n this._running = true;\n }\n stop() {\n this._running = false;\n }\n}\n//# sourceMappingURL=index.js.map","export function isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\n//# sourceMappingURL=utils.js.map","import * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { allocUnsafe } from 'uint8arrays/alloc';\nimport { isAsyncIterable } from './utils.js';\nconst defaultEncoder = (length) => {\n const lengthLength = varint.encodingLength(length);\n const lengthBuf = allocUnsafe(lengthLength);\n varint.encode(length, lengthBuf);\n defaultEncoder.bytes = lengthLength;\n return lengthBuf;\n};\ndefaultEncoder.bytes = 0;\nexport function encode(source, options) {\n options = options ?? {};\n const encodeLength = options.lengthEncoder ?? defaultEncoder;\n function* maybeYield(chunk) {\n // length + data\n const length = encodeLength(chunk.byteLength);\n // yield only Uint8Arrays\n if (length instanceof Uint8Array) {\n yield length;\n }\n else {\n yield* length;\n }\n // yield only Uint8Arrays\n if (chunk instanceof Uint8Array) {\n yield chunk;\n }\n else {\n yield* chunk;\n }\n }\n if (isAsyncIterable(source)) {\n return (async function* () {\n for await (const chunk of source) {\n yield* maybeYield(chunk);\n }\n })();\n }\n return (function* () {\n for (const chunk of source) {\n yield* maybeYield(chunk);\n }\n })();\n}\nencode.single = (chunk, options) => {\n options = options ?? {};\n const encodeLength = options.lengthEncoder ?? defaultEncoder;\n return new Uint8ArrayList(encodeLength(chunk.byteLength), chunk);\n};\n//# sourceMappingURL=encode.js.map","/**\n * The reported length of the next data message was not a positive integer\n */\nexport class InvalidMessageLengthError extends Error {\n name = 'InvalidMessageLengthError';\n code = 'ERR_INVALID_MSG_LENGTH';\n}\n/**\n * The reported length of the next data message was larger than the configured\n * max allowable value\n */\nexport class InvalidDataLengthError extends Error {\n name = 'InvalidDataLengthError';\n code = 'ERR_MSG_DATA_TOO_LONG';\n}\n/**\n * The varint used to specify the length of the next data message contained more\n * bytes than the configured max allowable value\n */\nexport class InvalidDataLengthLengthError extends Error {\n name = 'InvalidDataLengthLengthError';\n code = 'ERR_MSG_LENGTH_TOO_LONG';\n}\n/**\n * The incoming stream ended before the expected number of bytes were read\n */\nexport class UnexpectedEOFError extends Error {\n name = 'UnexpectedEOFError';\n code = 'ERR_UNEXPECTED_EOF';\n}\n//# sourceMappingURL=errors.js.map","/* eslint max-depth: [\"error\", 6] */\nimport * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { InvalidDataLengthError, InvalidDataLengthLengthError, InvalidMessageLengthError, UnexpectedEOFError } from './errors.js';\nimport { isAsyncIterable } from './utils.js';\n// Maximum length of the length section of the message\nexport const MAX_LENGTH_LENGTH = 8; // Varint.encode(Number.MAX_SAFE_INTEGER).length\n// Maximum length of the data section of the message\nexport const MAX_DATA_LENGTH = 1024 * 1024 * 4;\nvar ReadMode;\n(function (ReadMode) {\n ReadMode[ReadMode[\"LENGTH\"] = 0] = \"LENGTH\";\n ReadMode[ReadMode[\"DATA\"] = 1] = \"DATA\";\n})(ReadMode || (ReadMode = {}));\nconst defaultDecoder = (buf) => {\n const length = varint.decode(buf);\n defaultDecoder.bytes = varint.encodingLength(length);\n return length;\n};\ndefaultDecoder.bytes = 0;\nexport function decode(source, options) {\n const buffer = new Uint8ArrayList();\n let mode = ReadMode.LENGTH;\n let dataLength = -1;\n const lengthDecoder = options?.lengthDecoder ?? defaultDecoder;\n const maxLengthLength = options?.maxLengthLength ?? MAX_LENGTH_LENGTH;\n const maxDataLength = options?.maxDataLength ?? MAX_DATA_LENGTH;\n function* maybeYield() {\n while (buffer.byteLength > 0) {\n if (mode === ReadMode.LENGTH) {\n // read length, ignore errors for short reads\n try {\n dataLength = lengthDecoder(buffer);\n if (dataLength < 0) {\n throw new InvalidMessageLengthError('Invalid message length');\n }\n if (dataLength > maxDataLength) {\n throw new InvalidDataLengthError('Message length too long');\n }\n const dataLengthLength = lengthDecoder.bytes;\n buffer.consume(dataLengthLength);\n if (options?.onLength != null) {\n options.onLength(dataLength);\n }\n mode = ReadMode.DATA;\n }\n catch (err) {\n if (err instanceof RangeError) {\n if (buffer.byteLength > maxLengthLength) {\n throw new InvalidDataLengthLengthError('Message length length too long');\n }\n break;\n }\n throw err;\n }\n }\n if (mode === ReadMode.DATA) {\n if (buffer.byteLength < dataLength) {\n // not enough data, wait for more\n break;\n }\n const data = buffer.sublist(0, dataLength);\n buffer.consume(dataLength);\n if (options?.onData != null) {\n options.onData(data);\n }\n yield data;\n mode = ReadMode.LENGTH;\n }\n }\n }\n if (isAsyncIterable(source)) {\n return (async function* () {\n for await (const buf of source) {\n buffer.append(buf);\n yield* maybeYield();\n }\n if (buffer.byteLength > 0) {\n throw new UnexpectedEOFError('Unexpected end of input');\n }\n })();\n }\n return (function* () {\n for (const buf of source) {\n buffer.append(buf);\n yield* maybeYield();\n }\n if (buffer.byteLength > 0) {\n throw new UnexpectedEOFError('Unexpected end of input');\n }\n })();\n}\ndecode.fromReader = (reader, options) => {\n let byteLength = 1; // Read single byte chunks until the length is known\n const varByteSource = (async function* () {\n while (true) {\n try {\n const { done, value } = await reader.next(byteLength);\n if (done === true) {\n return;\n }\n if (value != null) {\n yield value;\n }\n }\n catch (err) {\n if (err.code === 'ERR_UNDER_READ') {\n return { done: true, value: null };\n }\n throw err;\n }\n finally {\n // Reset the byteLength so we continue to check for varints\n byteLength = 1;\n }\n }\n }());\n /**\n * Once the length has been parsed, read chunk for that length\n */\n const onLength = (l) => { byteLength = l; };\n return decode(varByteSource, {\n ...(options ?? {}),\n onLength\n });\n};\n//# sourceMappingURL=decode.js.map","const SECOND = 1000;\nexport const maxProvidersPerRequest = 3;\nexport const providerRequestTimeout = 10 * SECOND;\nexport const hasBlockTimeout = 15 * SECOND;\nexport const provideTimeout = 15 * SECOND;\nexport const kMaxPriority = Math.pow(2, 31) - 1;\nexport const maxListeners = 1000;\nexport const wantlistSendDebounceMs = 1;\n//# sourceMappingURL=constants.js.map","import { CodeError } from '@libp2p/interface';\nimport drain from 'it-drain';\nimport * as lp from 'it-length-prefixed';\nimport map from 'it-map';\nimport { pipe } from 'it-pipe';\nimport take from 'it-take';\nimport { CustomProgressEvent } from 'progress-events';\nimport { TimeoutController } from 'timeout-abort-controller';\nimport * as CONSTANTS from './constants.js';\nimport { BitswapMessage as Message } from './message/index.js';\nimport { logger } from './utils/index.js';\nconst BITSWAP100 = '/ipfs/bitswap/1.0.0';\nconst BITSWAP110 = '/ipfs/bitswap/1.1.0';\nconst BITSWAP120 = '/ipfs/bitswap/1.2.0';\nconst DEFAULT_MAX_INBOUND_STREAMS = 1024;\nconst DEFAULT_MAX_OUTBOUND_STREAMS = 1024;\nconst DEFAULT_INCOMING_STREAM_TIMEOUT = 30000;\nexport class Network {\n _log;\n _libp2p;\n _bitswap;\n _protocols;\n _stats;\n _running;\n _hashLoader;\n _maxInboundStreams;\n _maxOutboundStreams;\n _incomingStreamTimeout;\n _registrarIds;\n constructor(libp2p, bitswap, stats, options = {}) {\n this._log = logger(libp2p.peerId, 'network');\n this._libp2p = libp2p;\n this._bitswap = bitswap;\n this._protocols = [BITSWAP100];\n if (options.b100Only !== true) {\n // Latest bitswap first\n this._protocols.unshift(BITSWAP110);\n this._protocols.unshift(BITSWAP120);\n }\n this._stats = stats;\n this._running = false;\n // bind event listeners\n this._onPeerConnect = this._onPeerConnect.bind(this);\n this._onPeerDisconnect = this._onPeerDisconnect.bind(this);\n this._onConnection = this._onConnection.bind(this);\n this._hashLoader = options.hashLoader ?? {\n async getHasher() {\n throw new Error('Not implemented');\n }\n };\n this._maxInboundStreams = options.maxInboundStreams ?? DEFAULT_MAX_INBOUND_STREAMS;\n this._maxOutboundStreams = options.maxOutboundStreams ?? DEFAULT_MAX_OUTBOUND_STREAMS;\n this._incomingStreamTimeout = options.incomingStreamTimeout ?? DEFAULT_INCOMING_STREAM_TIMEOUT;\n }\n async start() {\n this._running = true;\n await this._libp2p.handle(this._protocols, this._onConnection, {\n maxInboundStreams: this._maxInboundStreams,\n maxOutboundStreams: this._maxOutboundStreams\n });\n // register protocol with topology\n const topology = {\n onConnect: this._onPeerConnect,\n onDisconnect: this._onPeerDisconnect\n };\n /** @type {string[]} */\n this._registrarIds = [];\n for (const protocol of this._protocols) {\n this._registrarIds.push(await this._libp2p.register(protocol, topology));\n }\n // All existing connections are like new ones for us\n this._libp2p.getConnections().forEach(conn => {\n this._onPeerConnect(conn.remotePeer);\n });\n }\n async stop() {\n this._running = false;\n // Unhandle both, libp2p doesn't care if it's not already handled\n await this._libp2p.unhandle(this._protocols);\n // unregister protocol and handlers\n if (this._registrarIds != null) {\n for (const id of this._registrarIds) {\n this._libp2p.unregister(id);\n }\n this._registrarIds = [];\n }\n }\n /**\n * Handles both types of incoming bitswap messages\n */\n _onConnection(info) {\n if (!this._running) {\n return;\n }\n const { stream, connection } = info;\n const controller = new TimeoutController(this._incomingStreamTimeout);\n Promise.resolve().then(async () => {\n this._log('incoming new bitswap %s connection from %p', stream.protocol, connection.remotePeer);\n const abortListener = () => {\n stream.abort(new CodeError('Incoming Bitswap stream timed out', 'ERR_TIMEOUT'));\n };\n let signal = AbortSignal.timeout(this._incomingStreamTimeout);\n signal.addEventListener('abort', abortListener);\n await pipe(stream, (source) => lp.decode(source), async (source) => {\n for await (const data of source) {\n try {\n const message = await Message.deserialize(data.subarray(), this._hashLoader);\n await this._bitswap._receiveMessage(connection.remotePeer, message);\n }\n catch (err) {\n this._bitswap._receiveError(err);\n break;\n }\n // we have received some data so reset the timeout controller\n signal.removeEventListener('abort', abortListener);\n signal = AbortSignal.timeout(this._incomingStreamTimeout);\n signal.addEventListener('abort', abortListener);\n }\n });\n await stream.close({\n signal\n });\n })\n .catch(err => {\n this._log(err);\n stream.abort(err);\n })\n .finally(() => {\n controller.clear();\n });\n }\n _onPeerConnect(peerId) {\n this._bitswap._onPeerConnected(peerId);\n }\n _onPeerDisconnect(peerId) {\n this._bitswap._onPeerDisconnected(peerId);\n }\n /**\n * Find providers given a `cid`.\n */\n findProviders(cid, options = {}) {\n options.onProgress?.(new CustomProgressEvent('bitswap:network:find-providers', cid));\n return this._libp2p.contentRouting.findProviders(cid, options);\n }\n /**\n * Find the providers of a given `cid` and connect to them.\n */\n async findAndConnect(cid, options) {\n await drain(take(map(this.findProviders(cid, options), async (provider) => this.connectTo(provider.id, options)\n .catch(err => {\n // Prevent unhandled promise rejection\n this._log.error(err);\n })), CONSTANTS.maxProvidersPerRequest))\n .catch(err => {\n this._log.error(err);\n });\n }\n /**\n * Tell the network we can provide content for the passed CID\n */\n async provide(cid, options = {}) {\n options.onProgress?.(new CustomProgressEvent('bitswap:network:provide', cid));\n await this._libp2p.contentRouting.provide(cid, options);\n }\n /**\n * Connect to the given peer\n * Send the given msg (instance of Message) to the given peer\n */\n async sendMessage(peer, msg, options = {}) {\n if (!this._running)\n throw new Error('network isn\\'t running');\n const stringId = peer.toString();\n this._log('sendMessage to %s', stringId, msg);\n options.onProgress?.(new CustomProgressEvent('bitswap:network:send-wantlist', peer));\n await this._writeMessage(peer, msg, options);\n this._updateSentStats(peer, msg.blocks);\n }\n /**\n * Connects to another peer\n */\n async connectTo(peer, options = {}) {\n if (!this._running) {\n throw new Error('network isn\\'t running');\n }\n options.onProgress?.(new CustomProgressEvent('bitswap:network:dial', peer));\n return this._libp2p.dial(peer, options);\n }\n _updateSentStats(peer, blocks) {\n const peerId = peer.toString();\n if (this._stats != null) {\n for (const block of blocks.values()) {\n this._stats.push(peerId, 'dataSent', block.length);\n }\n this._stats.push(peerId, 'blocksSent', blocks.size);\n }\n }\n async _writeMessage(peerId, msg, options = {}) {\n const stream = await this._libp2p.dialProtocol(peerId, [BITSWAP120, BITSWAP110, BITSWAP100]);\n try {\n /** @type {Uint8Array} */\n let serialized;\n switch (stream.protocol) {\n case BITSWAP100:\n serialized = msg.serializeToBitswap100();\n break;\n case BITSWAP110:\n case BITSWAP120:\n serialized = msg.serializeToBitswap110();\n break;\n default:\n throw new Error(`Unknown protocol: ${stream.protocol}`);\n }\n await pipe([serialized], (source) => lp.encode(source), stream);\n await stream.close();\n }\n catch (err) {\n options.onProgress?.(new CustomProgressEvent('bitswap:network:send-wantlist:error', { peer: peerId, error: err }));\n this._log(err);\n stream.abort(err);\n }\n }\n}\n//# sourceMappingURL=network.js.map","import { EventEmitter } from 'events';\nimport { CustomProgressEvent } from 'progress-events';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport * as CONSTANTS from './constants.js';\nimport { logger } from './utils/index.js';\nconst unwantEvent = (cid) => `unwant:${uint8ArrayToString(cid.multihash.bytes, 'base64')}`;\nconst blockEvent = (cid) => `block:${uint8ArrayToString(cid.multihash.bytes, 'base64')}`;\nexport class Notifications extends EventEmitter {\n _log;\n /**\n * Internal module used to track events about incoming blocks,\n * wants and unwants.\n */\n constructor(peerId) {\n super();\n this.setMaxListeners(CONSTANTS.maxListeners);\n this._log = logger(peerId, 'notif');\n }\n /**\n * Signal the system that we received `block`.\n */\n hasBlock(cid, block) {\n const event = blockEvent(cid);\n this._log(event);\n this.emit(event, block);\n }\n /**\n * Signal the system that we are waiting to receive the\n * block associated with the given `cid`.\n * Returns a Promise that resolves to the block when it is received,\n * or undefined when the block is unwanted.\n */\n async wantBlock(cid, options = {}) {\n if (cid == null) {\n throw new Error('Not a valid cid');\n }\n const blockEvt = blockEvent(cid);\n const unwantEvt = unwantEvent(cid);\n this._log(`wantBlock:${cid}`);\n return new Promise((resolve, reject) => {\n const onUnwant = () => {\n this.removeListener(blockEvt, onBlock);\n options.onProgress?.(new CustomProgressEvent('bitswap:want-block:unwant', cid));\n reject(new Error(`Block for ${cid} unwanted`));\n };\n const onBlock = (data) => {\n this.removeListener(unwantEvt, onUnwant);\n options.onProgress?.(new CustomProgressEvent('bitswap:want-block:block', cid));\n resolve(data);\n };\n this.once(unwantEvt, onUnwant);\n this.once(blockEvt, onBlock);\n options.signal?.addEventListener('abort', () => {\n this.removeListener(blockEvt, onBlock);\n this.removeListener(unwantEvt, onUnwant);\n reject(new Error(`Want for ${cid} aborted`));\n });\n });\n }\n /**\n * Signal that the block is not wanted anymore\n */\n unwantBlock(cid) {\n const event = unwantEvent(cid);\n this._log(event);\n this.emit(event);\n }\n}\n//# sourceMappingURL=notifications.js.map","'use strict'\n\nconst exp = Math.exp\n\nexports =\nmodule.exports =\nfunction MovingAverage (timespan) {\n if (typeof timespan !== 'number') { throw new Error('must provide a timespan to the moving average constructor') }\n\n if (timespan <= 0) { throw new Error('must provide a timespan > 0 to the moving average constructor') }\n\n let ma // moving average\n let v = 0 // variance\n let d = 0 // deviation\n let f = 0 // forecast\n\n let previousTime\n\n let ret = {}\n\n function alpha (t, pt) {\n return 1 - (exp(-(t - pt) / timespan))\n }\n\n ret.push =\n function push (time, value) {\n if (previousTime) {\n // calculate moving average\n const a = alpha(time, previousTime)\n const diff = value - ma\n const incr = a * diff\n ma = a * value + (1 - a) * ma\n // calculate variance & deviation\n v = (1 - a) * (v + diff * incr)\n d = Math.sqrt(v)\n // calculate forecast\n f = ma + a * diff\n } else {\n ma = value\n }\n previousTime = time\n }\n\n // Exponential Moving Average\n\n ret.movingAverage =\n function movingAverage () {\n return ma\n }\n\n // Variance\n ret.variance =\n function variance () {\n return v\n }\n\n ret.deviation =\n function deviation () {\n return d\n }\n\n ret.forecast =\n function forecast () {\n return f\n }\n\n return ret\n}\n","import { EventEmitter } from 'events';\nimport MovingAverage, {} from '@vascosantos/moving-average';\nexport class Stat extends EventEmitter {\n _options;\n _queue;\n _stats;\n _frequencyLastTime;\n _frequencyAccumulators;\n _movingAverages;\n _enabled;\n _timeout;\n constructor(initialCounters, options) {\n super();\n this._options = options;\n this._queue = [];\n this._stats = {};\n this._frequencyLastTime = Date.now();\n this._frequencyAccumulators = {};\n this._movingAverages = {};\n this._update = this._update.bind(this);\n initialCounters.forEach((key) => {\n this._stats[key] = BigInt(0);\n this._movingAverages[key] = {};\n this._options.movingAverageIntervals.forEach((interval) => {\n const ma = this._movingAverages[key][interval] = MovingAverage(interval);\n ma.push(this._frequencyLastTime, 0);\n });\n });\n this._enabled = this._options.enabled;\n }\n enable() {\n this._enabled = true;\n }\n disable() {\n this._enabled = false;\n }\n stop() {\n if (this._timeout != null) {\n clearTimeout(this._timeout);\n }\n }\n get snapshot() {\n return Object.assign({}, this._stats);\n }\n get movingAverages() {\n return Object.assign({}, this._movingAverages);\n }\n push(counter, inc) {\n if (this._enabled) {\n this._queue.push([counter, inc, Date.now()]);\n this._resetComputeTimeout();\n }\n }\n _resetComputeTimeout() {\n if (this._timeout != null) {\n clearTimeout(this._timeout);\n }\n this._timeout = setTimeout(this._update, this._nextTimeout());\n }\n _nextTimeout() {\n // calculate the need for an update, depending on the queue length\n const urgency = this._queue.length / this._options.computeThrottleMaxQueueSize;\n return Math.max(this._options.computeThrottleTimeout * (1 - urgency), 0);\n }\n _update() {\n this._timeout = undefined;\n if (this._queue.length > 0) {\n let last;\n while (this._queue.length > 0) {\n const op = last = this._queue.shift();\n (op != null) && this._applyOp(op);\n }\n (last != null) && this._updateFrequency(last[2]); // contains timestamp of last op\n this.emit('update', this._stats);\n }\n }\n _updateFrequency(latestTime) {\n const timeDiff = latestTime - this._frequencyLastTime;\n if (timeDiff > 0) {\n Object.keys(this._stats).forEach((key) => {\n this._updateFrequencyFor(key, timeDiff, latestTime);\n });\n }\n this._frequencyLastTime = latestTime;\n }\n _updateFrequencyFor(key, timeDiffMS, latestTime) {\n const count = this._frequencyAccumulators[key] ?? 0;\n this._frequencyAccumulators[key] = 0;\n const hz = (count / timeDiffMS) * 1000;\n let movingAverages = this._movingAverages[key];\n if (movingAverages == null) {\n movingAverages = this._movingAverages[key] = {};\n }\n this._options.movingAverageIntervals.forEach((movingAverageInterval) => {\n let movingAverage = movingAverages[movingAverageInterval];\n if (movingAverage == null) {\n movingAverage = movingAverages[movingAverageInterval] = MovingAverage(movingAverageInterval);\n }\n movingAverage.push(latestTime, hz);\n });\n }\n _applyOp(op) {\n const key = op[0];\n const inc = op[1];\n if (typeof inc !== 'number') {\n throw new Error(`invalid increment number: ${inc}`);\n }\n if (!Object.prototype.hasOwnProperty.call(this._stats, key)) {\n this._stats[key] = BigInt(0);\n }\n this._stats[key] = BigInt(this._stats[key]) + BigInt(inc);\n if (this._frequencyAccumulators[key] == null) {\n this._frequencyAccumulators[key] = 0;\n }\n this._frequencyAccumulators[key] += inc;\n }\n}\n//# sourceMappingURL=stat.js.map","import { EventEmitter } from 'events';\nimport { trackedMap } from '@libp2p/utils/tracked-map';\nimport { Stat } from './stat.js';\nconst defaultOptions = {\n enabled: false,\n computeThrottleTimeout: 1000,\n computeThrottleMaxQueueSize: 1000,\n movingAverageIntervals: [\n 60 * 1000, // 1 minute\n 5 * 60 * 1000, // 5 minutes\n 15 * 60 * 1000 // 15 minutes\n ]\n};\nexport class Stats extends EventEmitter {\n _initialCounters;\n _options;\n _enabled;\n _global;\n _peers;\n constructor(libp2p, initialCounters = [], _options = defaultOptions) {\n super();\n const options = Object.assign({}, defaultOptions, _options);\n if (typeof options.computeThrottleTimeout !== 'number') {\n throw new Error('need computeThrottleTimeout');\n }\n if (typeof options.computeThrottleMaxQueueSize !== 'number') {\n throw new Error('need computeThrottleMaxQueueSize');\n }\n this._initialCounters = initialCounters;\n this._options = options;\n this._enabled = this._options.enabled;\n this._global = new Stat(initialCounters, options);\n this._global.on('update', (stats) => this.emit('update', stats));\n this._peers = trackedMap({\n name: 'ipfs_bitswap_stats_peers',\n metrics: libp2p.metrics\n });\n }\n enable() {\n this._enabled = true;\n this._options.enabled = true;\n this._global.enable();\n }\n disable() {\n this._enabled = false;\n this._options.enabled = false;\n this._global.disable();\n }\n stop() {\n this._enabled = false;\n this._global.stop();\n for (const peerStat of this._peers) {\n peerStat[1].stop();\n }\n }\n get snapshot() {\n return this._global.snapshot;\n }\n get movingAverages() {\n return this._global.movingAverages;\n }\n forPeer(peerId) {\n const peerIdStr = peerId.toString();\n return this._peers.get(peerIdStr);\n }\n push(peer, counter, inc) {\n if (this._enabled) {\n this._global.push(counter, inc);\n if (peer != null) {\n let peerStats = this._peers.get(peer);\n if (peerStats == null) {\n peerStats = new Stat(this._initialCounters, this._options);\n this._peers.set(peer, peerStats);\n }\n peerStats.push(counter, inc);\n }\n }\n }\n disconnected(peer) {\n const peerId = peer.toString();\n const peerStats = this._peers.get(peerId);\n if (peerStats != null) {\n peerStats.stop();\n this._peers.delete(peerId);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var functionDebounce = debounce;\n\nfunction debounce(fn, wait, callFirst) {\n var timeout = null;\n var debouncedFn = null;\n\n var clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n\n debouncedFn = null;\n timeout = null;\n }\n };\n\n var flush = function() {\n var call = debouncedFn;\n clear();\n\n if (call) {\n call();\n }\n };\n\n var debounceWrapper = function() {\n if (!wait) {\n return fn.apply(this, arguments);\n }\n\n var context = this;\n var args = arguments;\n var callNow = callFirst && !timeout;\n clear();\n\n debouncedFn = function() {\n fn.apply(context, args);\n };\n\n timeout = setTimeout(function() {\n timeout = null;\n\n if (!callNow) {\n var call = debouncedFn;\n debouncedFn = null;\n\n return call();\n }\n }, wait);\n\n if (callNow) {\n return debouncedFn();\n }\n };\n\n debounceWrapper.cancel = clear;\n debounceWrapper.flush = flush;\n\n return debounceWrapper;\n}\n\nexport {functionDebounce as default};\n","import debounce from 'just-debounce-it';\nimport { wantlistSendDebounceMs } from '../constants.js';\nimport { BitswapMessage as Message } from '../message/index.js';\nimport { logger } from '../utils/index.js';\nexport class MsgQueue {\n peerId;\n refcnt;\n network;\n _entries;\n _log;\n constructor(selfPeerId, otherPeerId, network) {\n this.peerId = otherPeerId;\n this.network = network;\n this.refcnt = 1;\n this._entries = [];\n this._log = logger(selfPeerId, 'msgqueue');\n this.sendEntries = debounce(this.sendEntries.bind(this), wantlistSendDebounceMs);\n }\n addMessage(msg, options = {}) {\n if (msg.empty) {\n return;\n }\n void this.send(msg, options);\n }\n addEntries(entries, options = {}) {\n this._entries = this._entries.concat(entries);\n this.sendEntries(options);\n }\n sendEntries(options = {}) {\n if (this._entries.length === 0) {\n return;\n }\n const msg = new Message(false);\n this._entries.forEach((entry) => {\n if (entry.cancel === true) {\n msg.cancel(entry.cid);\n }\n else {\n msg.addEntry(entry.cid, entry.priority);\n }\n });\n this._entries = [];\n this.addMessage(msg, options);\n }\n async send(msg, options = {}) {\n try {\n await this.network.connectTo(this.peerId, options);\n }\n catch (err) {\n this._log.error('cant connect to peer %p: %s', this.peerId, err.message);\n return;\n }\n this._log('sending message to peer %p', this.peerId);\n // Note: Don't wait for sendMessage() to complete\n this.network.sendMessage(this.peerId, msg, options).catch((err) => {\n this._log.error('send error', err);\n });\n }\n}\n//# sourceMappingURL=msg-queue.js.map","import { trackedMap } from '@libp2p/utils/tracked-map';\nimport { base58btc } from 'multiformats/bases/base58';\nimport * as CONSTANTS from '../constants.js';\nimport { BitswapMessage as Message } from '../message/index.js';\nimport { logger } from '../utils/index.js';\nimport { Wantlist } from '../wantlist/index.js';\nimport { MsgQueue } from './msg-queue.js';\nexport class WantManager {\n peers;\n wantlist;\n network;\n _peerId;\n _log;\n constructor(peerId, network, stats, libp2p) {\n this.peers = trackedMap({\n name: 'ipfs_bitswap_want_manager_peers',\n metrics: libp2p.metrics\n });\n this.wantlist = new Wantlist(stats, libp2p);\n this.network = network;\n this._peerId = peerId;\n this._log = logger(peerId, 'want');\n }\n _addEntries(cids, cancel, force, options = {}) {\n const entries = cids.map((cid, i) => {\n return new Message.Entry(cid, CONSTANTS.kMaxPriority - i, Message.WantType.Block, cancel);\n });\n entries.forEach((e) => {\n // add changes to our wantlist\n if (e.cancel) {\n if (force === true) {\n this.wantlist.removeForce(e.cid.toString(base58btc));\n }\n else {\n this.wantlist.remove(e.cid);\n }\n }\n else {\n this._log('adding to wantlist');\n // TODO: Figure out the wantType\n // @ts-expect-error - requires wantType\n this.wantlist.add(e.cid, e.priority);\n }\n });\n // broadcast changes\n for (const p of this.peers.values()) {\n p.addEntries(entries, options);\n }\n }\n _startPeerHandler(peerId) {\n let mq = this.peers.get(peerId.toString());\n if (mq != null) {\n mq.refcnt++;\n return;\n }\n mq = new MsgQueue(this._peerId, peerId, this.network);\n // new peer, give them the full wantlist\n const fullwantlist = new Message(true);\n for (const entry of this.wantlist.entries()) {\n fullwantlist.addEntry(entry[1].cid, entry[1].priority);\n }\n mq.addMessage(fullwantlist);\n this.peers.set(peerId.toString(), mq);\n return mq;\n }\n _stopPeerHandler(peerId) {\n const mq = this.peers.get(peerId.toString());\n if (mq == null) {\n return;\n }\n mq.refcnt--;\n if (mq.refcnt > 0) {\n return;\n }\n this.peers.delete(peerId.toString());\n }\n /**\n * add all the cids to the wantlist\n */\n wantBlocks(cids, options = {}) {\n this._addEntries(cids, false, false, options);\n options.signal?.addEventListener('abort', () => {\n this.cancelWants(cids);\n });\n }\n /**\n * Remove blocks of all the given keys without respecting refcounts\n */\n unwantBlocks(cids) {\n this._log('unwant blocks: %s', cids.length);\n this._addEntries(cids, true, true);\n }\n /**\n * Cancel wanting all of the given keys\n */\n cancelWants(cids) {\n this._log('cancel wants: %s', cids.length);\n this._addEntries(cids, true);\n }\n /**\n * Returns a list of all currently connected peers\n */\n connectedPeers() {\n return Array.from(this.peers.keys());\n }\n connected(peerId) {\n this._startPeerHandler(peerId);\n }\n disconnected(peerId) {\n this._stopPeerHandler(peerId);\n }\n start() {\n }\n stop() {\n this.peers.forEach((mq) => { this.disconnected(mq.peerId); });\n }\n}\n//# sourceMappingURL=index.js.map","import { anySignal } from 'any-signal';\nimport forEach from 'it-foreach';\nimport { CID } from 'multiformats/cid';\nimport { DecisionEngine } from './decision-engine/index.js';\nimport { Network } from './network.js';\nimport { Notifications } from './notifications.js';\nimport { Stats } from './stats/index.js';\nimport { logger } from './utils/index.js';\nimport { WantManager } from './want-manager/index.js';\nconst hashLoader = {\n async getHasher() {\n throw new Error('Not implemented');\n }\n};\nconst defaultOptions = {\n maxInboundStreams: 1024,\n maxOutboundStreams: 1024,\n incomingStreamTimeout: 30000,\n hashLoader,\n statsEnabled: false,\n statsComputeThrottleTimeout: 1000,\n statsComputeThrottleMaxQueueSize: 1000\n};\nconst statsKeys = [\n 'blocksReceived',\n 'dataReceived',\n 'dupBlksReceived',\n 'dupDataReceived',\n 'blocksSent',\n 'dataSent',\n 'providesBufferLength',\n 'wantListLength',\n 'peerCount'\n];\n/**\n * JavaScript implementation of the Bitswap 'data exchange' protocol\n * used by IPFS.\n */\nexport class DefaultBitswap {\n _libp2p;\n _log;\n stats;\n network;\n blockstore;\n engine;\n wm;\n notifications;\n started;\n constructor(libp2p, blockstore, options = {}) {\n this._libp2p = libp2p;\n this._log = logger(this.peerId);\n options = Object.assign({}, defaultOptions, options);\n // stats\n this.stats = new Stats(libp2p, statsKeys, {\n enabled: options.statsEnabled,\n computeThrottleTimeout: options.statsComputeThrottleTimeout,\n computeThrottleMaxQueueSize: options.statsComputeThrottleMaxQueueSize\n });\n // the network delivers messages\n this.network = new Network(libp2p, this, this.stats, {\n hashLoader: options.hashLoader,\n maxInboundStreams: options.maxInboundStreams,\n maxOutboundStreams: options.maxOutboundStreams,\n incomingStreamTimeout: options.incomingStreamTimeout\n });\n // local database\n this.blockstore = blockstore;\n this.engine = new DecisionEngine(this.peerId, blockstore, this.network, this.stats, libp2p);\n // handle message sending\n this.wm = new WantManager(this.peerId, this.network, this.stats, libp2p);\n this.notifications = new Notifications(this.peerId);\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n get peerId() {\n return this._libp2p.peerId;\n }\n /**\n * handle messages received through the network\n */\n async _receiveMessage(peerId, incoming) {\n try {\n // Note: this allows the engine to respond to any wants in the message.\n // Processing of the blocks in the message happens below, after the\n // blocks have been added to the blockstore.\n await this.engine.messageReceived(peerId, incoming);\n }\n catch (err) {\n // Log instead of throwing an error so as to process as much as\n // possible of the message. Currently `messageReceived` does not\n // throw any errors, but this could change in the future.\n this._log('failed to receive message', incoming);\n }\n if (incoming.blocks.size === 0) {\n return;\n }\n /** @type { { cid: CID, wasWanted: boolean, data: Uint8Array }[] } */\n const received = [];\n for (const [cidStr, data] of incoming.blocks.entries()) {\n const cid = CID.parse(cidStr);\n received.push({\n wasWanted: this.wm.wantlist.contains(cid),\n cid,\n data\n });\n }\n // quickly send out cancels, reduces chances of duplicate block receives\n this.wm.cancelWants(received\n .filter(({ wasWanted }) => wasWanted)\n .map(({ cid }) => cid));\n await Promise.all(received.map(async ({ cid, wasWanted, data }) => { await this._handleReceivedBlock(peerId, cid, data, wasWanted); }));\n }\n async _handleReceivedBlock(peerId, cid, data, wasWanted) {\n this._log('received block');\n const has = await this.blockstore.has(cid);\n this._updateReceiveCounters(peerId.toString(), cid, data, has);\n if (!wasWanted) {\n return;\n }\n await this.put(cid, data);\n }\n _updateReceiveCounters(peerIdStr, cid, data, exists) {\n this.stats.push(peerIdStr, 'blocksReceived', 1);\n this.stats.push(peerIdStr, 'dataReceived', data.length);\n if (exists) {\n this.stats.push(peerIdStr, 'dupBlksReceived', 1);\n this.stats.push(peerIdStr, 'dupDataReceived', data.length);\n }\n }\n /**\n * handle errors on the receiving channel\n */\n _receiveError(err) {\n this._log.error('ReceiveError', err);\n }\n /**\n * handle new peers\n */\n _onPeerConnected(peerId) {\n this.wm.connected(peerId);\n }\n /**\n * handle peers being disconnected\n */\n _onPeerDisconnected(peerId) {\n this.wm.disconnected(peerId);\n this.engine.peerDisconnected(peerId);\n this.stats.disconnected(peerId);\n }\n enableStats() {\n this.stats.enable();\n }\n disableStats() {\n this.stats.disable();\n }\n /**\n * Return the current wantlist for a given `peerId`\n */\n wantlistForPeer(peerId, _options) {\n return this.engine.wantlistForPeer(peerId);\n }\n /**\n * Return ledger information for a given `peerId`\n */\n ledgerForPeer(peerId) {\n return this.engine.ledgerForPeer(peerId);\n }\n /**\n * Fetch a given block by cid. If the block is in the local\n * blockstore it is returned, otherwise the block is added to the wantlist and returned once another node sends it to us.\n */\n async want(cid, options = {}) {\n const fetchFromNetwork = async (cid, options) => {\n // add it to the want list - n.b. later we will abort the AbortSignal\n // so no need to remove the blocks from the wantlist after we have it\n this.wm.wantBlocks([cid], options);\n return this.notifications.wantBlock(cid, options);\n };\n let promptedNetwork = false;\n const loadOrFetchFromNetwork = async (cid, options) => {\n try {\n // have to await here as we want to handle ERR_NOT_FOUND\n const block = await this.blockstore.get(cid, options);\n return block;\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n if (!promptedNetwork) {\n promptedNetwork = true;\n this.network.findAndConnect(cid, options)\n .catch((err) => { this._log.error(err); });\n }\n // we don't have the block locally so fetch it from the network\n return await fetchFromNetwork(cid, options);\n }\n };\n // depending on implementation it's possible for blocks to come in while\n // we do the async operations to get them from the blockstore leading to\n // a race condition, so register for incoming block notifications as well\n // as trying to get it from the datastore\n const controller = new AbortController();\n const signal = anySignal([controller.signal, options.signal]);\n try {\n const block = await Promise.race([\n this.notifications.wantBlock(cid, {\n ...options,\n signal\n }),\n loadOrFetchFromNetwork(cid, {\n ...options,\n signal\n })\n ]);\n return block;\n }\n finally {\n // since we have the block we can now abort any outstanding attempts to\n // fetch it\n controller.abort();\n signal.clear();\n }\n }\n /**\n * Removes the given CIDs from the wantlist independent of any ref counts.\n *\n * This will cause all outstanding promises for a given block to reject.\n *\n * If you want to cancel the want for a block without doing that, pass an\n * AbortSignal in to `.get` or `.getMany` and abort it.\n */\n unwant(cids) {\n const cidsArray = Array.isArray(cids) ? cids : [cids];\n this.wm.unwantBlocks(cidsArray);\n cidsArray.forEach((cid) => { this.notifications.unwantBlock(cid); });\n }\n /**\n * Removes the given keys from the want list. This may cause pending promises\n * for blocks to never resolve. If you wish these promises to abort instead\n * call `unwant(cids)` instead.\n */\n cancelWants(cids) {\n this.wm.cancelWants(Array.isArray(cids) ? cids : [cids]);\n }\n /**\n * Put the given block to the underlying blockstore and\n * send it to nodes that have it in their wantlist.\n */\n async put(cid, block, _options) {\n await this.blockstore.put(cid, block);\n this.notify(cid, block);\n }\n /**\n * Put the given blocks to the underlying blockstore and\n * send it to nodes that have it them their wantlist.\n */\n async *putMany(source, options) {\n yield* this.blockstore.putMany(forEach(source, ({ cid, block }) => {\n this.notify(cid, block);\n }), options);\n }\n /**\n * Sends notifications about the arrival of a block\n */\n notify(cid, block, options = {}) {\n this.notifications.hasBlock(cid, block);\n this.engine.receivedBlocks([{ cid, block }]);\n // Note: Don't wait for provide to finish before returning\n this.network.provide(cid, options).catch((err) => {\n this._log.error('Failed to provide: %s', err.message);\n });\n }\n /**\n * Get the current list of wants\n */\n getWantlist() {\n return this.wm.wantlist.entries();\n }\n /**\n * Get the current list of partners\n */\n get peers() {\n return this.engine.peers();\n }\n /**\n * Start the bitswap node\n */\n async start() {\n this.wm.start();\n await this.network.start();\n this.engine.start();\n this.started = true;\n }\n /**\n * Stop the bitswap node\n */\n async stop() {\n this.stats.stop();\n this.wm.stop();\n await this.network.stop();\n this.engine.stop();\n this.started = false;\n }\n}\n//# sourceMappingURL=bitswap.js.map","/**\n * @packageDocumentation\n *\n * This module implements the [Bitswap protocol](https://docs.ipfs.tech/concepts/bitswap/) in TypeScript.\n */\nimport { DefaultBitswap } from './bitswap.js';\nexport const createBitswap = (libp2p, blockstore, options = {}) => {\n return new DefaultBitswap(libp2p, blockstore, options);\n};\n//# sourceMappingURL=index.js.map","import { createBitswap } from 'ipfs-bitswap';\nclass BitswapBlockBroker {\n bitswap;\n started;\n constructor(components, init = {}) {\n const { libp2p, blockstore, hashers } = components;\n this.bitswap = createBitswap(libp2p, blockstore, {\n hashLoader: {\n getHasher: async (codecOrName) => {\n const hasher = hashers.find(hasher => {\n return hasher.code === codecOrName || hasher.name === codecOrName;\n });\n if (hasher != null) {\n return hasher;\n }\n throw new Error(`Could not load hasher for code/name \"${codecOrName}\"`);\n }\n },\n ...init\n });\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n async start() {\n await this.bitswap.start();\n this.started = true;\n }\n async stop() {\n await this.bitswap.stop();\n this.started = false;\n }\n announce(cid, block, options) {\n this.bitswap.notify(cid, block, options);\n }\n async retrieve(cid, { validateFn, ...options } = {}) {\n return this.bitswap.want(cid, options);\n }\n}\n/**\n * A helper factory for users who want to override Helia `blockBrokers` but\n * still want to use the default `BitswapBlockBroker`.\n */\nexport function bitswap(init = {}) {\n return (components) => new BitswapBlockBroker(components, init);\n}\n//# sourceMappingURL=bitswap.js.map","/**\n * A `TrustlessGateway` keeps track of the number of attempts, errors, and\n * successes for a given gateway url so that we can prioritize gateways that\n * have been more reliable in the past, and ensure that requests are distributed\n * across all gateways within a given `TrustlessGatewayBlockBroker` instance.\n */\nexport class TrustlessGateway {\n url;\n /**\n * The number of times this gateway has been attempted to be used to fetch a\n * block. This includes successful, errored, and aborted attempts. By counting\n * even aborted attempts, slow gateways that are out-raced by others will be\n * considered less reliable.\n */\n #attempts = 0;\n /**\n * The number of times this gateway has errored while attempting to fetch a\n * block. This includes `response.ok === false` and any other errors that\n * throw while attempting to fetch a block. This does not include aborted\n * attempts.\n */\n #errors = 0;\n /**\n * The number of times this gateway has returned an invalid block. A gateway\n * that returns the wrong blocks for a CID should be considered for removal\n * from the list of gateways to fetch blocks from.\n */\n #invalidBlocks = 0;\n /**\n * The number of times this gateway has successfully fetched a block.\n */\n #successes = 0;\n constructor(url) {\n this.url = url instanceof URL ? url : new URL(url);\n }\n /**\n * Fetch a raw block from `this.url` following the specification defined at\n * https://specs.ipfs.tech/http-gateways/trustless-gateway/\n */\n async getRawBlock(cid, signal) {\n const gwUrl = this.url;\n gwUrl.pathname = `/ipfs/${cid.toString()}`;\n // necessary as not every gateway supports dag-cbor, but every should support\n // sending raw block as-is\n gwUrl.search = '?format=raw';\n if (signal?.aborted === true) {\n throw new Error(`Signal to fetch raw block for CID ${cid} from gateway ${this.url} was aborted prior to fetch`);\n }\n try {\n this.#attempts++;\n const res = await fetch(gwUrl.toString(), {\n signal,\n headers: {\n // also set header, just in case ?format= is filtered out by some\n // reverse proxy\n Accept: 'application/vnd.ipld.raw'\n },\n cache: 'force-cache'\n });\n if (!res.ok) {\n this.#errors++;\n throw new Error(`unable to fetch raw block for CID ${cid} from gateway ${this.url}`);\n }\n this.#successes++;\n return new Uint8Array(await res.arrayBuffer());\n }\n catch (cause) {\n // @ts-expect-error - TS thinks signal?.aborted can only be false now\n // because it was checked for true above.\n if (signal?.aborted === true) {\n throw new Error(`fetching raw block for CID ${cid} from gateway ${this.url} was aborted`);\n }\n this.#errors++;\n throw new Error(`unable to fetch raw block for CID ${cid}`);\n }\n }\n /**\n * Encapsulate the logic for determining whether a gateway is considered\n * reliable, for prioritization. This is based on the number of successful attempts made\n * and the number of errors encountered.\n *\n * Unused gateways have 100% reliability; They will be prioritized over\n * gateways with a 100% success rate to ensure that we attempt all gateways.\n */\n reliability() {\n /**\n * if we have never tried to use this gateway, it is considered the most\n * reliable until we determine otherwise (prioritize unused gateways)\n */\n if (this.#attempts === 0) {\n return 1;\n }\n if (this.#invalidBlocks > 0) {\n // this gateway may not be trustworthy..\n return -Infinity;\n }\n /**\n * We have attempted the gateway, so we need to calculate the reliability\n * based on the number of attempts, errors, and successes. Gateways that\n * return a single error should drop their reliability score more than a\n * single success increases it.\n *\n * Play around with the below reliability function at https://www.desmos.com/calculator/d6hfhf5ukm\n */\n return this.#successes / (this.#attempts + (this.#errors * 3));\n }\n /**\n * Increment the number of invalid blocks returned by this gateway.\n */\n incrementInvalidBlocks() {\n this.#invalidBlocks++;\n }\n}\n//# sourceMappingURL=trustless-gateway.js.map","import { TrustlessGateway } from './trustless-gateway.js';\nimport { DEFAULT_TRUSTLESS_GATEWAYS } from './index.js';\n/**\n * A class that accepts a list of trustless gateways that are queried\n * for blocks.\n */\nexport class TrustlessGatewayBlockBroker {\n gateways;\n log;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('helia:trustless-gateway-block-broker');\n this.gateways = (init.gateways ?? DEFAULT_TRUSTLESS_GATEWAYS)\n .map((gatewayOrUrl) => {\n return new TrustlessGateway(gatewayOrUrl);\n });\n }\n async retrieve(cid, options = {}) {\n // Loop through the gateways until we get a block or run out of gateways\n // TODO: switch to toSorted when support is better\n const sortedGateways = this.gateways.sort((a, b) => b.reliability() - a.reliability());\n const aggregateErrors = [];\n for (const gateway of sortedGateways) {\n this.log('getting block for %c from %s', cid, gateway.url);\n try {\n const block = await gateway.getRawBlock(cid, options.signal);\n this.log.trace('got block for %c from %s', cid, gateway.url);\n try {\n await options.validateFn?.(block);\n }\n catch (err) {\n this.log.error('failed to validate block for %c from %s', cid, gateway.url, err);\n gateway.incrementInvalidBlocks();\n throw new Error(`unable to validate block for CID ${cid} from gateway ${gateway.url}`);\n }\n return block;\n }\n catch (err) {\n this.log.error('failed to get block for %c from %s', cid, gateway.url, err);\n if (err instanceof Error) {\n aggregateErrors.push(err);\n }\n else {\n aggregateErrors.push(new Error(`unable to fetch raw block for CID ${cid} from gateway ${gateway.url}`));\n }\n // if signal was aborted, exit the loop\n if (options.signal?.aborted === true) {\n this.log.trace('request aborted while fetching raw block for CID %c from gateway %s', cid, gateway.url);\n break;\n }\n }\n }\n throw new AggregateError(aggregateErrors, `unable to fetch raw block for CID ${cid} from any gateway`);\n }\n}\n//# sourceMappingURL=broker.js.map","import { TrustlessGatewayBlockBroker } from './broker.js';\nexport const DEFAULT_TRUSTLESS_GATEWAYS = [\n // 2023-10-03: IPNS, Origin, and Block/CAR support from https://ipfs-public-gateway-checker.on.fleek.co/\n 'https://dweb.link',\n // 2023-10-03: IPNS, Origin, and Block/CAR support from https://ipfs-public-gateway-checker.on.fleek.co/\n 'https://cf-ipfs.com',\n // 2023-10-03: IPNS, Origin, and Block/CAR support from https://ipfs-public-gateway-checker.on.fleek.co/\n 'https://4everland.io'\n];\nexport function trustlessGateway(init = {}) {\n return (components) => new TrustlessGatewayBlockBroker(components, init);\n}\n//# sourceMappingURL=index.js.map","import { CodeError, start, stop } from '@libp2p/interface';\nimport { anySignal } from 'any-signal';\nimport filter from 'it-filter';\nimport forEach from 'it-foreach';\nimport { CustomProgressEvent } from 'progress-events';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nfunction isBlockRetriever(b) {\n return typeof b.retrieve === 'function';\n}\nfunction isBlockAnnouncer(b) {\n return typeof b.announce === 'function';\n}\n/**\n * Networked storage wraps a regular blockstore - when getting blocks if the\n * blocks are not present Bitswap will be used to fetch them from network peers.\n */\nexport class NetworkedStorage {\n child;\n blockRetrievers;\n blockAnnouncers;\n hashers;\n started;\n log;\n /**\n * Create a new BlockStorage\n */\n constructor(components, init) {\n this.log = components.logger.forComponent('helia:networked-storage');\n this.child = components.blockstore;\n this.blockRetrievers = (init.blockBrokers ?? []).filter(isBlockRetriever);\n this.blockAnnouncers = (init.blockBrokers ?? []).filter(isBlockAnnouncer);\n this.hashers = init.hashers ?? [];\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n async start() {\n await start(this.child, ...new Set([...this.blockRetrievers, ...this.blockAnnouncers]));\n this.started = true;\n }\n async stop() {\n await stop(this.child, ...new Set([...this.blockRetrievers, ...this.blockAnnouncers]));\n this.started = false;\n }\n unwrap() {\n return this.child;\n }\n /**\n * Put a block to the underlying datastore\n */\n async put(cid, block, options = {}) {\n if (await this.child.has(cid)) {\n options.onProgress?.(new CustomProgressEvent('blocks:put:duplicate', cid));\n return cid;\n }\n options.onProgress?.(new CustomProgressEvent('blocks:put:providers:notify', cid));\n this.blockAnnouncers.forEach(provider => {\n provider.announce(cid, block, options);\n });\n options.onProgress?.(new CustomProgressEvent('blocks:put:blockstore:put', cid));\n return this.child.put(cid, block, options);\n }\n /**\n * Put a multiple blocks to the underlying datastore\n */\n async *putMany(blocks, options = {}) {\n const missingBlocks = filter(blocks, async ({ cid }) => {\n const has = await this.child.has(cid);\n if (has) {\n options.onProgress?.(new CustomProgressEvent('blocks:put-many:duplicate', cid));\n }\n return !has;\n });\n const notifyEach = forEach(missingBlocks, ({ cid, block }) => {\n options.onProgress?.(new CustomProgressEvent('blocks:put-many:providers:notify', cid));\n this.blockAnnouncers.forEach(provider => {\n provider.announce(cid, block, options);\n });\n });\n options.onProgress?.(new CustomProgressEvent('blocks:put-many:blockstore:put-many'));\n yield* this.child.putMany(notifyEach, options);\n }\n /**\n * Get a block by cid\n */\n async get(cid, options = {}) {\n if (options.offline !== true && !(await this.child.has(cid))) {\n // we do not have the block locally, get it from a block provider\n options.onProgress?.(new CustomProgressEvent('blocks:get:providers:get', cid));\n const block = await raceBlockRetrievers(cid, this.blockRetrievers, this.hashers, {\n ...options,\n log: this.log\n });\n options.onProgress?.(new CustomProgressEvent('blocks:get:blockstore:put', cid));\n await this.child.put(cid, block, options);\n // notify other block providers of the new block\n options.onProgress?.(new CustomProgressEvent('blocks:get:providers:notify', cid));\n this.blockAnnouncers.forEach(provider => {\n provider.announce(cid, block, options);\n });\n return block;\n }\n options.onProgress?.(new CustomProgressEvent('blocks:get:blockstore:get', cid));\n return this.child.get(cid, options);\n }\n /**\n * Get multiple blocks back from an (async) iterable of cids\n */\n async *getMany(cids, options = {}) {\n options.onProgress?.(new CustomProgressEvent('blocks:get-many:blockstore:get-many'));\n yield* this.child.getMany(forEach(cids, async (cid) => {\n if (options.offline !== true && !(await this.child.has(cid))) {\n // we do not have the block locally, get it from a block provider\n options.onProgress?.(new CustomProgressEvent('blocks:get-many:providers:get', cid));\n const block = await raceBlockRetrievers(cid, this.blockRetrievers, this.hashers, {\n ...options,\n log: this.log\n });\n options.onProgress?.(new CustomProgressEvent('blocks:get-many:blockstore:put', cid));\n await this.child.put(cid, block, options);\n // notify other block providers of the new block\n options.onProgress?.(new CustomProgressEvent('blocks:get-many:providers:notify', cid));\n this.blockAnnouncers.forEach(provider => {\n provider.announce(cid, block, options);\n });\n }\n }));\n }\n /**\n * Delete a block from the blockstore\n */\n async delete(cid, options = {}) {\n options.onProgress?.(new CustomProgressEvent('blocks:delete:blockstore:delete', cid));\n await this.child.delete(cid, options);\n }\n /**\n * Delete multiple blocks from the blockstore\n */\n async *deleteMany(cids, options = {}) {\n options.onProgress?.(new CustomProgressEvent('blocks:delete-many:blockstore:delete-many'));\n yield* this.child.deleteMany((async function* () {\n for await (const cid of cids) {\n yield cid;\n }\n }()), options);\n }\n async has(cid, options = {}) {\n return this.child.has(cid, options);\n }\n async *getAll(options = {}) {\n options.onProgress?.(new CustomProgressEvent('blocks:get-all:blockstore:get-many'));\n yield* this.child.getAll(options);\n }\n}\nexport const getCidBlockVerifierFunction = (cid, hashers) => {\n const hasher = hashers.find(hasher => hasher.code === cid.multihash.code);\n if (hasher == null) {\n throw new CodeError(`No hasher configured for multihash code 0x${cid.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`, 'ERR_UNKNOWN_HASH_ALG');\n }\n return async (block) => {\n // verify block\n const hash = await hasher.digest(block);\n if (!uint8ArrayEquals(hash.digest, cid.multihash.digest)) {\n // if a hash mismatch occurs for a TrustlessGatewayBlockBroker, we should try another gateway\n throw new CodeError('Hash of downloaded block did not match multihash from passed CID', 'ERR_HASH_MISMATCH');\n }\n };\n};\n/**\n * Race block providers cancelling any pending requests once the block has been\n * found.\n */\nasync function raceBlockRetrievers(cid, providers, hashers, options) {\n const validateFn = getCidBlockVerifierFunction(cid, hashers);\n const controller = new AbortController();\n const signal = anySignal([controller.signal, options.signal]);\n try {\n return await Promise.any(providers.map(async (provider) => {\n try {\n let blocksWereValidated = false;\n const block = await provider.retrieve(cid, {\n ...options,\n signal,\n validateFn: async (block) => {\n await validateFn(block);\n blocksWereValidated = true;\n }\n });\n if (!blocksWereValidated) {\n // the blockBroker either did not throw an error when attempting to validate the block\n // or did not call the validateFn at all. We should validate the block ourselves\n await validateFn(block);\n }\n return block;\n }\n catch (err) {\n options.log.error('could not retrieve verified block for %c', cid, err);\n throw err;\n }\n }));\n }\n finally {\n signal.clear();\n }\n}\n//# sourceMappingURL=networked-storage.js.map","/**\n * @packageDocumentation\n *\n * Race an event against an AbortSignal, taking care to remove any event\n * listeners that were added.\n *\n * @example Getting started\n *\n * ```TypeScript\n * import { raceEvent } from 'race-event'\n *\n * const controller = new AbortController()\n * const emitter = new EventTarget()\n *\n * setTimeout(() => {\n * controller.abort()\n * }, 500)\n *\n * setTimeout(() => {\n * // too late\n * emitter.dispatchEvent(new CustomEvent('event'))\n * }, 1000)\n *\n * // throws an AbortError\n * const resolve = await raceEvent(emitter, 'event', controller.signal)\n * ```\n *\n * @example Aborting the promise with an error event\n *\n * ```TypeScript\n * import { raceEvent } from 'race-event'\n *\n * const emitter = new EventTarget()\n *\n * setTimeout(() => {\n * emitter.dispatchEvent(new CustomEvent('failure', {\n * detail: new Error('Oh no!')\n * }))\n * }, 1000)\n *\n * // throws 'Oh no!' error\n * const resolve = await raceEvent(emitter, 'success', AbortSignal.timeout(5000), {\n * errorEvent: 'failure'\n * })\n * ```\n *\n * @example Customising the thrown AbortError\n *\n * The error message and `.code` property of the thrown `AbortError` can be\n * specified by passing options:\n *\n * ```TypeScript\n * import { raceEvent } from 'race-event'\n *\n * const controller = new AbortController()\n * const emitter = new EventTarget()\n *\n * setTimeout(() => {\n * controller.abort()\n * }, 500)\n *\n * // throws a Error: Oh no!\n * const resolve = await raceEvent(emitter, 'event', controller.signal, {\n * errorMessage: 'Oh no!',\n * errorCode: 'ERR_OH_NO'\n * })\n * ```\n *\n * @example Only resolving on specific events\n *\n * Where multiple events with the same type are emitted, a `filter` function can\n * be passed to only resolve on one of them:\n *\n * ```TypeScript\n * import { raceEvent } from 'race-event'\n *\n * const controller = new AbortController()\n * const emitter = new EventTarget()\n *\n * // throws a Error: Oh no!\n * const resolve = await raceEvent(emitter, 'event', controller.signal, {\n * filter: (evt: Event) => {\n * return evt.detail.foo === 'bar'\n * }\n * })\n * ```\n *\n * @example Terminating early by throwing from the filter\n *\n * You can cause listening for the event to cease and all event listeners to be\n * removed by throwing from the filter:\n *\n * ```TypeScript\n * import { raceEvent } from 'race-event'\n *\n * const controller = new AbortController()\n * const emitter = new EventTarget()\n *\n * // throws Error: Cannot continue\n * const resolve = await raceEvent(emitter, 'event', controller.signal, {\n * filter: (evt) => {\n * if (...reasons) {\n * throw new Error('Cannot continue')\n * }\n *\n * return true\n * }\n * })\n * ```\n */\n/**\n * An abort error class that extends error\n */\nexport class AbortError extends Error {\n type;\n code;\n constructor(message, code) {\n super(message ?? 'The operation was aborted');\n this.type = 'aborted';\n this.name = 'AbortError';\n this.code = code ?? 'ABORT_ERR';\n }\n}\n/**\n * Race a promise against an abort signal\n */\nexport async function raceEvent(emitter, eventName, signal, opts) {\n // create the error here so we have more context in the stack trace\n const error = new AbortError(opts?.errorMessage, opts?.errorCode);\n if (signal?.aborted === true) {\n return Promise.reject(error);\n }\n return new Promise((resolve, reject) => {\n function removeListeners() {\n signal?.removeEventListener('abort', abortListener);\n emitter.removeEventListener(eventName, eventListener);\n if (opts?.errorEvent != null) {\n emitter.removeEventListener(opts.errorEvent, errorEventListener);\n }\n }\n const eventListener = (evt) => {\n try {\n if (opts?.filter?.(evt) === false) {\n return;\n }\n }\n catch (err) {\n removeListeners();\n reject(err);\n return;\n }\n removeListeners();\n resolve(evt);\n };\n const errorEventListener = (evt) => {\n removeListeners();\n reject(evt.detail);\n };\n const abortListener = () => {\n removeListeners();\n reject(error);\n };\n signal?.addEventListener('abort', abortListener);\n emitter.addEventListener(eventName, eventListener);\n if (opts?.errorEvent != null) {\n emitter.addEventListener(opts.errorEvent, errorEventListener);\n }\n });\n}\n//# sourceMappingURL=index.js.map","/**\n * An abort error class that extends error\n */\nexport class AbortError extends Error {\n type;\n code;\n constructor(message, code, name) {\n super(message ?? 'The operation was aborted');\n this.type = 'aborted';\n this.name = name ?? 'AbortError';\n this.code = code ?? 'ABORT_ERR';\n }\n}\n/**\n * Race a promise against an abort signal\n */\nexport async function raceSignal(promise, signal, opts) {\n if (signal == null) {\n return promise;\n }\n if (signal.aborted) {\n return Promise.reject(new AbortError(opts?.errorMessage, opts?.errorCode, opts?.errorName));\n }\n let listener;\n // create the error here so we have more context in the stack trace\n const error = new AbortError(opts?.errorMessage, opts?.errorCode, opts?.errorName);\n try {\n return await Promise.race([\n promise,\n new Promise((resolve, reject) => {\n listener = () => {\n reject(error);\n };\n signal.addEventListener('abort', listener);\n })\n ]);\n }\n finally {\n if (listener != null) {\n signal.removeEventListener('abort', listener);\n }\n }\n}\n//# sourceMappingURL=index.js.map","import { AbortError } from '@libp2p/interface';\nimport pDefer from 'p-defer';\nexport class JobRecipient {\n deferred;\n signal;\n constructor(signal) {\n this.signal = signal;\n this.deferred = pDefer();\n this.onAbort = this.onAbort.bind(this);\n this.signal?.addEventListener('abort', this.onAbort);\n }\n onAbort() {\n this.deferred.reject(this.signal?.reason ?? new AbortError());\n }\n cleanup() {\n this.signal?.removeEventListener('abort', this.onAbort);\n }\n}\n//# sourceMappingURL=recipient.js.map","import { AbortError, setMaxListeners } from '@libp2p/interface';\nimport { raceSignal } from 'race-signal';\nimport { JobRecipient } from './recipient.js';\n/**\n * Returns a random string\n */\nfunction randomId() {\n return `${(parseInt(String(Math.random() * 1e9), 10)).toString()}${Date.now()}`;\n}\nexport class Job {\n id;\n fn;\n options;\n recipients;\n status;\n timeline;\n controller;\n constructor(fn, options) {\n this.id = randomId();\n this.status = 'queued';\n this.fn = fn;\n this.options = options;\n this.recipients = [];\n this.timeline = {\n created: Date.now()\n };\n this.controller = new AbortController();\n setMaxListeners(Infinity, this.controller.signal);\n this.onAbort = this.onAbort.bind(this);\n }\n abort(err) {\n this.controller.abort(err);\n }\n onAbort() {\n const allAborted = this.recipients.reduce((acc, curr) => {\n return acc && (curr.signal?.aborted === true);\n }, true);\n // if all recipients have aborted the job, actually abort the job\n if (allAborted) {\n this.controller.abort(new AbortError());\n this.cleanup();\n }\n }\n async join(options = {}) {\n const recipient = new JobRecipient(options.signal);\n this.recipients.push(recipient);\n options.signal?.addEventListener('abort', this.onAbort);\n return recipient.deferred.promise;\n }\n async run() {\n this.status = 'running';\n this.timeline.started = Date.now();\n try {\n this.controller.signal.throwIfAborted();\n const result = await raceSignal(this.fn({\n ...(this.options ?? {}),\n signal: this.controller.signal\n }), this.controller.signal);\n this.recipients.forEach(recipient => {\n recipient.deferred.resolve(result);\n });\n this.status = 'complete';\n }\n catch (err) {\n this.recipients.forEach(recipient => {\n recipient.deferred.reject(err);\n });\n this.status = 'errored';\n }\n finally {\n this.timeline.finished = Date.now();\n this.cleanup();\n }\n }\n cleanup() {\n this.recipients.forEach(recipient => {\n recipient.cleanup();\n recipient.signal?.removeEventListener('abort', this.onAbort);\n });\n }\n}\n//# sourceMappingURL=job.js.map","import { AbortError, CodeError, TypedEventEmitter } from '@libp2p/interface';\nimport { pushable } from 'it-pushable';\nimport { raceEvent } from 'race-event';\nimport { Job } from './job.js';\n/**\n * Heavily influence by `p-queue` with the following differences:\n *\n * 1. Items remain at the head of the queue while they are running so `queue.size` includes `queue.pending` items - this is so interested parties can join the results of a queue item while it is running\n * 2. The options for a job are stored separately to the job in order for them to be modified while they are still in the queue\n */\nexport class Queue extends TypedEventEmitter {\n concurrency;\n queue;\n pending;\n sort;\n constructor(init = {}) {\n super();\n this.concurrency = init.concurrency ?? Number.POSITIVE_INFINITY;\n this.pending = 0;\n if (init.metricName != null) {\n init.metrics?.registerMetricGroup(init.metricName, {\n calculate: () => {\n return {\n size: this.queue.length,\n running: this.pending,\n queued: this.queue.length - this.pending\n };\n }\n });\n }\n this.sort = init.sort;\n this.queue = [];\n }\n tryToStartAnother() {\n if (this.size === 0) {\n // do this in the microtask queue so all job recipients receive the\n // result before the \"empty\" event fires\n queueMicrotask(() => {\n this.safeDispatchEvent('empty');\n });\n if (this.running === 0) {\n // do this in the microtask queue so all job recipients receive the\n // result before the \"idle\" event fires\n queueMicrotask(() => {\n this.safeDispatchEvent('idle');\n });\n }\n return false;\n }\n if (this.pending < this.concurrency) {\n let job;\n for (const j of this.queue) {\n if (j.status === 'queued') {\n job = j;\n break;\n }\n }\n if (job == null) {\n return false;\n }\n this.safeDispatchEvent('active');\n this.pending++;\n void job.run()\n .finally(() => {\n // remove the job from the queue\n for (let i = 0; i < this.queue.length; i++) {\n if (this.queue[i] === job) {\n this.queue.splice(i, 1);\n break;\n }\n }\n this.pending--;\n this.tryToStartAnother();\n this.safeDispatchEvent('next');\n });\n return true;\n }\n return false;\n }\n enqueue(job) {\n this.queue.push(job);\n if (this.sort != null) {\n this.queue.sort(this.sort);\n }\n }\n /**\n * Adds a sync or async task to the queue. Always returns a promise.\n */\n async add(fn, options) {\n options?.signal?.throwIfAborted();\n const job = new Job(fn, options);\n this.enqueue(job);\n this.safeDispatchEvent('add');\n this.tryToStartAnother();\n return job.join(options)\n .then(result => {\n this.safeDispatchEvent('completed', { detail: result });\n this.safeDispatchEvent('success', { detail: { job, result } });\n return result;\n })\n .catch(err => {\n if (job.status === 'queued') {\n // job was aborted before it started - remove the job from the queue\n for (let i = 0; i < this.queue.length; i++) {\n if (this.queue[i] === job) {\n this.queue.splice(i, 1);\n break;\n }\n }\n }\n this.safeDispatchEvent('error', { detail: err });\n this.safeDispatchEvent('failure', { detail: { job, error: err } });\n throw err;\n });\n }\n /**\n * Clear the queue\n */\n clear() {\n this.queue.splice(0, this.queue.length);\n }\n /**\n * Abort all jobs in the queue and clear it\n */\n abort() {\n this.queue.forEach(job => {\n job.abort(new AbortError());\n });\n this.clear();\n }\n /**\n * Can be called multiple times. Useful if you for example add additional items at a later time.\n *\n * @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty(options) {\n // Instantly resolve if the queue is empty\n if (this.size === 0) {\n return;\n }\n await raceEvent(this, 'empty', options?.signal);\n }\n /**\n * @returns A promise that settles when the queue size is less than the given\n * limit: `queue.size < limit`.\n *\n * If you want to avoid having the queue grow beyond a certain size you can\n * `await queue.onSizeLessThan()` before adding a new item.\n *\n * Note that this only limits the number of items waiting to start. There\n * could still be up to `concurrency` jobs already running that this call does\n * not include in its calculation.\n */\n async onSizeLessThan(limit, options) {\n // Instantly resolve if the queue is empty.\n if (this.size < limit) {\n return;\n }\n await raceEvent(this, 'next', options?.signal, {\n filter: () => this.size < limit\n });\n }\n /**\n * The difference with `.onEmpty` is that `.onIdle` guarantees that all work\n * from the queue has finished. `.onEmpty` merely signals that the queue is\n * empty, but it could mean that some promises haven't completed yet.\n *\n * @returns A promise that settles when the queue becomes empty, and all\n * promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle(options) {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.pending === 0 && this.size === 0) {\n return;\n }\n await raceEvent(this, 'idle', options?.signal);\n }\n /**\n * Size of the queue including running items\n */\n get size() {\n return this.queue.length;\n }\n /**\n * The number of queued items waiting to run.\n */\n get queued() {\n return this.queue.length - this.pending;\n }\n /**\n * The number of items currently running.\n */\n get running() {\n return this.pending;\n }\n /**\n * Returns an async generator that makes it easy to iterate over the results\n * of jobs added to the queue.\n *\n * The generator will end when the queue becomes idle, that is there are no\n * jobs running and no jobs that have yet to run.\n *\n * If you need to keep the queue open indefinitely, consider using it-pushable\n * instead.\n */\n async *toGenerator(options) {\n options?.signal?.throwIfAborted();\n const stream = pushable({\n objectMode: true\n });\n const cleanup = (err) => {\n if (err != null) {\n this.abort();\n }\n else {\n this.clear();\n }\n stream.end(err);\n };\n const onQueueJobComplete = (evt) => {\n if (evt.detail != null) {\n stream.push(evt.detail);\n }\n };\n const onQueueError = (evt) => {\n cleanup(evt.detail);\n };\n const onQueueIdle = () => {\n cleanup();\n };\n // clear the queue and throw if the query is aborted\n const onSignalAbort = () => {\n cleanup(new CodeError('Queue aborted', 'ERR_QUEUE_ABORTED'));\n };\n // add listeners\n this.addEventListener('completed', onQueueJobComplete);\n this.addEventListener('error', onQueueError);\n this.addEventListener('idle', onQueueIdle);\n options?.signal?.addEventListener('abort', onSignalAbort);\n try {\n yield* stream;\n }\n finally {\n // remove listeners\n this.removeEventListener('completed', onQueueJobComplete);\n this.removeEventListener('error', onQueueError);\n this.removeEventListener('idle', onQueueIdle);\n options?.signal?.removeEventListener('abort', onSignalAbort);\n // empty the queue for when the user has broken out of a loop early\n cleanup();\n }\n }\n}\n//# sourceMappingURL=index.js.map","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base36.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 0x0200;\nexport function encode(node) {\n return textEncoder.encode(JSON.stringify(node));\n}\nexport function decode(data) {\n return JSON.parse(textDecoder.decode(data));\n}\n//# sourceMappingURL=json.js.map","import { coerce } from '../bytes.js';\nexport const name = 'raw';\nexport const code = 0x55;\nexport function encode(node) {\n return coerce(node);\n}\nexport function decode(data) {\n return coerce(data);\n}\n//# sourceMappingURL=raw.js.map","/* eslint max-depth: [\"error\", 7] */\nimport * as dagCbor from '@ipld/dag-cbor';\nimport * as dagJson from '@ipld/dag-json';\nimport * as dagPb from '@ipld/dag-pb';\nimport * as cborg from 'cborg';\nimport { Type, Token } from 'cborg';\nimport * as cborgJson from 'cborg/json';\nimport { CID } from 'multiformats';\nimport { base64 } from 'multiformats/bases/base64';\nimport * as json from 'multiformats/codecs/json';\nimport * as raw from 'multiformats/codecs/raw';\n/**\n * Dag walker for dag-pb CIDs\n */\nexport const dagPbWalker = {\n codec: dagPb.code,\n *walk(block) {\n const node = dagPb.decode(block);\n yield* node.Links.map(l => l.Hash);\n }\n};\n/**\n * Dag walker for raw CIDs\n */\nexport const rawWalker = {\n codec: raw.code,\n *walk() {\n // no embedded CIDs in a raw block\n }\n};\n// https://github.com/ipfs/go-ipfs/issues/3570#issuecomment-273931692\nconst CID_TAG = 42;\n/**\n * Dag walker for dag-cbor CIDs. Does not actually use dag-cbor since\n * all we are interested in is extracting the the CIDs from the block\n * so we can just use cborg for that.\n */\nexport const dagCborWalker = {\n codec: dagCbor.code,\n *walk(block) {\n const cids = [];\n const tags = [];\n tags[CID_TAG] = (bytes) => {\n if (bytes[0] !== 0) {\n throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00');\n }\n const cid = CID.decode(bytes.subarray(1)); // ignore leading 0x00\n cids.push(cid);\n return cid;\n };\n cborg.decode(block, {\n tags\n });\n yield* cids;\n }\n};\n/**\n * Borrowed from @ipld/dag-json\n */\nclass DagJsonTokenizer extends cborgJson.Tokenizer {\n tokenBuffer;\n constructor(data, options) {\n super(data, options);\n this.tokenBuffer = [];\n }\n done() {\n return this.tokenBuffer.length === 0 && super.done();\n }\n _next() {\n if (this.tokenBuffer.length > 0) {\n // @ts-expect-error https://github.com/Microsoft/TypeScript/issues/30406\n return this.tokenBuffer.pop();\n }\n return super.next();\n }\n /**\n * Implements rules outlined in https://github.com/ipld/specs/pull/356\n */\n next() {\n const token = this._next();\n if (token.type === Type.map) {\n const keyToken = this._next();\n if (keyToken.type === Type.string && keyToken.value === '/') {\n const valueToken = this._next();\n if (valueToken.type === Type.string) { // *must* be a CID\n const breakToken = this._next(); // swallow the end-of-map token\n if (breakToken.type !== Type.break) {\n throw new Error('Invalid encoded CID form');\n }\n this.tokenBuffer.push(valueToken); // CID.parse will pick this up after our tag token\n return new Token(Type.tag, 42, 0);\n }\n if (valueToken.type === Type.map) {\n const innerKeyToken = this._next();\n if (innerKeyToken.type === Type.string && innerKeyToken.value === 'bytes') {\n const innerValueToken = this._next();\n if (innerValueToken.type === Type.string) { // *must* be Bytes\n for (let i = 0; i < 2; i++) {\n const breakToken = this._next(); // swallow two end-of-map tokens\n if (breakToken.type !== Type.break) {\n throw new Error('Invalid encoded Bytes form');\n }\n }\n const bytes = base64.decode(`m${innerValueToken.value}`);\n return new Token(Type.bytes, bytes, innerValueToken.value.length);\n }\n this.tokenBuffer.push(innerValueToken); // bail\n }\n this.tokenBuffer.push(innerKeyToken); // bail\n }\n this.tokenBuffer.push(valueToken); // bail\n }\n this.tokenBuffer.push(keyToken); // bail\n }\n return token;\n }\n}\n/**\n * Dag walker for dag-json CIDs. Does not actually use dag-json since\n * all we are interested in is extracting the the CIDs from the block\n * so we can just use cborg/json for that.\n */\nexport const dagJsonWalker = {\n codec: dagJson.code,\n *walk(block) {\n const cids = [];\n const tags = [];\n tags[CID_TAG] = (string) => {\n const cid = CID.parse(string);\n cids.push(cid);\n return cid;\n };\n cborgJson.decode(block, {\n tags,\n tokenizer: new DagJsonTokenizer(block, {\n tags,\n allowIndefinite: true,\n allowUndefined: true,\n allowNaN: true,\n allowInfinity: true,\n allowBigInt: true,\n strict: false,\n rejectDuplicateMapKeys: false\n })\n });\n yield* cids;\n }\n};\n/**\n * Dag walker for json CIDs. JSON has no facility for linking to\n * external blocks so the walker is a no-op.\n */\nexport const jsonWalker = {\n codec: json.code,\n *walk() { }\n};\n//# sourceMappingURL=dag-walkers.js.map","import { Queue } from '@libp2p/utils/queue';\nimport * as cborg from 'cborg';\nimport { Key } from 'interface-datastore';\nimport { base36 } from 'multiformats/bases/base36';\nimport { CID } from 'multiformats/cid';\nimport { CustomProgressEvent } from 'progress-events';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { dagCborWalker, dagJsonWalker, dagPbWalker, jsonWalker, rawWalker } from './utils/dag-walkers.js';\nconst DEFAULT_DAG_WALKERS = [\n rawWalker,\n dagPbWalker,\n dagCborWalker,\n dagJsonWalker,\n jsonWalker\n];\nconst DATASTORE_PIN_PREFIX = '/pin/';\nconst DATASTORE_BLOCK_PREFIX = '/pinned-block/';\nconst DATASTORE_ENCODING = base36;\nconst DAG_WALK_QUEUE_CONCURRENCY = 1;\nfunction toDSKey(cid) {\n if (cid.version === 0) {\n cid = cid.toV1();\n }\n return new Key(`${DATASTORE_PIN_PREFIX}${cid.toString(DATASTORE_ENCODING)}`);\n}\nexport class PinsImpl {\n datastore;\n blockstore;\n dagWalkers;\n constructor(datastore, blockstore, dagWalkers) {\n this.datastore = datastore;\n this.blockstore = blockstore;\n this.dagWalkers = {};\n [...DEFAULT_DAG_WALKERS, ...dagWalkers].forEach(dagWalker => {\n this.dagWalkers[dagWalker.codec] = dagWalker;\n });\n }\n async *add(cid, options = {}) {\n const pinKey = toDSKey(cid);\n if (await this.datastore.has(pinKey)) {\n throw new Error('Already pinned');\n }\n const depth = Math.round(options.depth ?? Infinity);\n if (depth < 0) {\n throw new Error('Depth must be greater than or equal to 0');\n }\n // use a queue to walk the DAG instead of recursion so we can traverse very large DAGs\n const queue = new Queue({\n concurrency: DAG_WALK_QUEUE_CONCURRENCY\n });\n for await (const childCid of this.#walkDag(cid, queue, {\n ...options,\n depth\n })) {\n await this.#updatePinnedBlock(childCid, (pinnedBlock) => {\n // do not update pinned block if this block is already pinned by this CID\n if (pinnedBlock.pinnedBy.find(c => uint8ArrayEquals(c, cid.bytes)) != null) {\n return false;\n }\n pinnedBlock.pinCount++;\n pinnedBlock.pinnedBy.push(cid.bytes);\n return true;\n }, options);\n yield childCid;\n }\n const pin = {\n depth,\n metadata: options.metadata ?? {}\n };\n await this.datastore.put(pinKey, cborg.encode(pin), options);\n }\n /**\n * Walk a DAG in an iterable fashion\n */\n async *#walkDag(cid, queue, options) {\n if (options.depth === -1) {\n return;\n }\n const dagWalker = this.dagWalkers[cid.code];\n if (dagWalker == null) {\n throw new Error(`No dag walker found for cid codec ${cid.code}`);\n }\n const block = await this.blockstore.get(cid, options);\n yield cid;\n // walk dag, ensure all blocks are present\n for await (const cid of dagWalker.walk(block)) {\n yield* await queue.add(async () => {\n return this.#walkDag(cid, queue, {\n ...options,\n depth: options.depth - 1\n });\n });\n }\n }\n /**\n * Update the pin count for the CID\n */\n async #updatePinnedBlock(cid, withPinnedBlock, options) {\n const blockKey = new Key(`${DATASTORE_BLOCK_PREFIX}${DATASTORE_ENCODING.encode(cid.multihash.bytes)}`);\n let pinnedBlock = {\n pinCount: 0,\n pinnedBy: []\n };\n try {\n pinnedBlock = cborg.decode(await this.datastore.get(blockKey, options));\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n const shouldContinue = withPinnedBlock(pinnedBlock);\n if (!shouldContinue) {\n return;\n }\n if (pinnedBlock.pinCount === 0) {\n if (await this.datastore.has(blockKey)) {\n await this.datastore.delete(blockKey);\n return;\n }\n }\n await this.datastore.put(blockKey, cborg.encode(pinnedBlock), options);\n options.onProgress?.(new CustomProgressEvent('helia:pin:add', cid));\n }\n async *rm(cid, options = {}) {\n const pinKey = toDSKey(cid);\n const buf = await this.datastore.get(pinKey, options);\n const pin = cborg.decode(buf);\n await this.datastore.delete(pinKey, options);\n // use a queue to walk the DAG instead of recursion so we can traverse very large DAGs\n const queue = new Queue({\n concurrency: DAG_WALK_QUEUE_CONCURRENCY\n });\n for await (const childCid of this.#walkDag(cid, queue, {\n ...options,\n depth: pin.depth\n })) {\n await this.#updatePinnedBlock(childCid, (pinnedBlock) => {\n pinnedBlock.pinCount--;\n pinnedBlock.pinnedBy = pinnedBlock.pinnedBy.filter(c => uint8ArrayEquals(c, cid.bytes));\n return true;\n }, {\n ...options,\n depth: pin.depth\n });\n yield childCid;\n }\n }\n async *ls(options = {}) {\n for await (const { key, value } of this.datastore.query({\n prefix: DATASTORE_PIN_PREFIX + (options.cid != null ? `${options.cid.toString(base36)}` : '')\n }, options)) {\n const cid = CID.parse(key.toString().substring(5), base36);\n const pin = cborg.decode(value);\n yield {\n cid,\n ...pin\n };\n }\n }\n async isPinned(cid, options = {}) {\n const blockKey = new Key(`${DATASTORE_BLOCK_PREFIX}${DATASTORE_ENCODING.encode(cid.multihash.bytes)}`);\n return this.datastore.has(blockKey, options);\n }\n}\n//# sourceMappingURL=pins.js.map","const events = {};\nconst observable = (worker) => {\n worker.addEventListener('message', (event) => {\n observable.dispatchEvent('message', worker, event);\n });\n if (worker.port != null) {\n worker.port.addEventListener('message', (event) => {\n observable.dispatchEvent('message', worker, event);\n });\n }\n};\nobservable.addEventListener = (type, fn) => {\n if (events[type] == null) {\n events[type] = [];\n }\n events[type].push(fn);\n};\nobservable.removeEventListener = (type, fn) => {\n if (events[type] == null) {\n return;\n }\n events[type] = events[type]\n .filter(listener => listener === fn);\n};\nobservable.dispatchEvent = function (type, worker, event) {\n if (events[type] == null) {\n return;\n }\n events[type].forEach(fn => fn(worker, event));\n};\nexport default observable;\n//# sourceMappingURL=index.js.map","export const WORKER_REQUEST_READ_LOCK = 'lock:worker:request-read';\nexport const WORKER_RELEASE_READ_LOCK = 'lock:worker:release-read';\nexport const MASTER_GRANT_READ_LOCK = 'lock:master:grant-read';\nexport const WORKER_REQUEST_WRITE_LOCK = 'lock:worker:request-write';\nexport const WORKER_RELEASE_WRITE_LOCK = 'lock:worker:release-write';\nexport const MASTER_GRANT_WRITE_LOCK = 'lock:master:grant-write';\n//# sourceMappingURL=constants.js.map","export const nanoid = (size = 21) => {\n return Math.random().toString().substring(2);\n};\n//# sourceMappingURL=utils.js.map","import observer from 'observable-webworkers';\nimport { WORKER_REQUEST_READ_LOCK, WORKER_RELEASE_READ_LOCK, MASTER_GRANT_READ_LOCK, WORKER_REQUEST_WRITE_LOCK, WORKER_RELEASE_WRITE_LOCK, MASTER_GRANT_WRITE_LOCK } from './constants.js';\nimport { nanoid } from './utils.js';\nconst handleWorkerLockRequest = (emitter, masterEvent, requestType, releaseType, grantType) => {\n return (worker, event) => {\n if (event.data.type !== requestType) {\n return;\n }\n const requestEvent = {\n type: event.data.type,\n name: event.data.name,\n identifier: event.data.identifier\n };\n emitter.dispatchEvent(new MessageEvent(masterEvent, {\n data: {\n name: requestEvent.name,\n handler: async () => {\n // grant lock to worker\n worker.postMessage({\n type: grantType,\n name: requestEvent.name,\n identifier: requestEvent.identifier\n });\n // wait for worker to finish\n await new Promise((resolve) => {\n const releaseEventListener = (event) => {\n if (event == null || event.data == null) {\n return;\n }\n const releaseEvent = {\n type: event.data.type,\n name: event.data.name,\n identifier: event.data.identifier\n };\n if (releaseEvent.type === releaseType && releaseEvent.identifier === requestEvent.identifier) {\n worker.removeEventListener('message', releaseEventListener);\n resolve();\n }\n };\n worker.addEventListener('message', releaseEventListener);\n });\n }\n }\n }));\n };\n};\nconst makeWorkerLockRequest = (name, requestType, grantType, releaseType) => {\n return async () => {\n const id = nanoid();\n globalThis.postMessage({\n type: requestType,\n identifier: id,\n name\n });\n return new Promise((resolve) => {\n const listener = (event) => {\n if (event == null || event.data == null) {\n return;\n }\n const responseEvent = {\n type: event.data.type,\n identifier: event.data.identifier\n };\n if (responseEvent.type === grantType && responseEvent.identifier === id) {\n globalThis.removeEventListener('message', listener);\n // grant lock\n resolve(() => {\n // release lock\n globalThis.postMessage({\n type: releaseType,\n identifier: id,\n name\n });\n });\n }\n };\n globalThis.addEventListener('message', listener);\n });\n };\n};\nconst defaultOptions = {\n singleProcess: false\n};\nexport default (options) => {\n options = Object.assign({}, defaultOptions, options);\n const isPrimary = Boolean(globalThis.document) || options.singleProcess;\n if (isPrimary) {\n const emitter = new EventTarget();\n observer.addEventListener('message', handleWorkerLockRequest(emitter, 'requestReadLock', WORKER_REQUEST_READ_LOCK, WORKER_RELEASE_READ_LOCK, MASTER_GRANT_READ_LOCK));\n observer.addEventListener('message', handleWorkerLockRequest(emitter, 'requestWriteLock', WORKER_REQUEST_WRITE_LOCK, WORKER_RELEASE_WRITE_LOCK, MASTER_GRANT_WRITE_LOCK));\n return emitter;\n }\n return {\n isWorker: true,\n readLock: (name) => makeWorkerLockRequest(name, WORKER_REQUEST_READ_LOCK, MASTER_GRANT_READ_LOCK, WORKER_RELEASE_READ_LOCK),\n writeLock: (name) => makeWorkerLockRequest(name, WORKER_REQUEST_WRITE_LOCK, MASTER_GRANT_WRITE_LOCK, WORKER_RELEASE_WRITE_LOCK)\n };\n};\n//# sourceMappingURL=browser.js.map","/**\n * @packageDocumentation\n *\n * - Reads occur concurrently\n * - Writes occur one at a time\n * - No reads occur while a write operation is in progress\n * - Locks can be created with different names\n * - Reads/writes can time out\n *\n * ## Usage\n *\n * ```javascript\n * import mortice from 'mortice'\n * import delay from 'delay'\n *\n * // the lock name & options objects are both optional\n * const mutex = mortice('my-lock', {\n *\n * // how long before write locks time out (default: 24 hours)\n * timeout: 30000,\n *\n * // control how many read operations are executed concurrently (default: Infinity)\n * concurrency: 5,\n *\n * // by default the the lock will be held on the main thread, set this to true if the\n * // a lock should reside on each worker (default: false)\n * singleProcess: false\n * })\n *\n * Promise.all([\n * (async () => {\n * const release = await mutex.readLock()\n *\n * try {\n * console.info('read 1')\n * } finally {\n * release()\n * }\n * })(),\n * (async () => {\n * const release = await mutex.readLock()\n *\n * try {\n * console.info('read 2')\n * } finally {\n * release()\n * }\n * })(),\n * (async () => {\n * const release = await mutex.writeLock()\n *\n * try {\n * await delay(1000)\n *\n * console.info('write 1')\n * } finally {\n * release()\n * }\n * })(),\n * (async () => {\n * const release = await mutex.readLock()\n *\n * try {\n * console.info('read 3')\n * } finally {\n * release()\n * }\n * })()\n * ])\n * ```\n *\n * read 1\n * read 2\n * \n * write 1\n * read 3\n *\n * ## Browser\n *\n * Because there's no global way to evesdrop on messages sent by Web Workers, please pass all created Web Workers to the [`observable-webworkers`](https://npmjs.org/package/observable-webworkers) module:\n *\n * ```javascript\n * // main.js\n * import mortice from 'mortice'\n * import observe from 'observable-webworkers'\n *\n * // create our lock on the main thread, it will be held here\n * const mutex = mortice()\n *\n * const worker = new Worker('worker.js')\n *\n * observe(worker)\n * ```\n *\n * ```javascript\n * // worker.js\n * import mortice from 'mortice'\n * import delay from 'delay'\n *\n * const mutex = mortice()\n *\n * let release = await mutex.readLock()\n * // read something\n * release()\n *\n * release = await mutex.writeLock()\n * // write something\n * release()\n * ```\n */\nimport PQueue from 'p-queue';\nimport pTimeout from 'p-timeout';\nimport impl from './node.js';\nconst mutexes = {};\nlet implementation;\nasync function createReleaseable(queue, options) {\n let res;\n const p = new Promise((resolve) => {\n res = resolve;\n });\n void queue.add(async () => pTimeout((async () => {\n await new Promise((resolve) => {\n res(() => {\n resolve();\n });\n });\n })(), {\n milliseconds: options.timeout\n }));\n return p;\n}\nconst createMutex = (name, options) => {\n if (implementation.isWorker === true) {\n return {\n readLock: implementation.readLock(name, options),\n writeLock: implementation.writeLock(name, options)\n };\n }\n const masterQueue = new PQueue({ concurrency: 1 });\n let readQueue;\n return {\n async readLock() {\n // If there's already a read queue, just add the task to it\n if (readQueue != null) {\n return createReleaseable(readQueue, options);\n }\n // Create a new read queue\n readQueue = new PQueue({\n concurrency: options.concurrency,\n autoStart: false\n });\n const localReadQueue = readQueue;\n // Add the task to the read queue\n const readPromise = createReleaseable(readQueue, options);\n void masterQueue.add(async () => {\n // Start the task only once the master queue has completed processing\n // any previous tasks\n localReadQueue.start();\n // Once all the tasks in the read queue have completed, remove it so\n // that the next read lock will occur after any write locks that were\n // started in the interim\n await localReadQueue.onIdle()\n .then(() => {\n if (readQueue === localReadQueue) {\n readQueue = null;\n }\n });\n });\n return readPromise;\n },\n async writeLock() {\n // Remove the read queue reference, so that any later read locks will be\n // added to a new queue that starts after this write lock has been\n // released\n readQueue = null;\n return createReleaseable(masterQueue, options);\n }\n };\n};\nconst defaultOptions = {\n name: 'lock',\n concurrency: Infinity,\n timeout: 84600000,\n singleProcess: false\n};\nexport default function createMortice(options) {\n const opts = Object.assign({}, defaultOptions, options);\n if (implementation == null) {\n implementation = impl(opts);\n if (implementation.isWorker !== true) {\n // we are master, set up worker requests\n implementation.addEventListener('requestReadLock', (event) => {\n if (mutexes[event.data.name] == null) {\n return;\n }\n void mutexes[event.data.name].readLock()\n .then(async (release) => event.data.handler().finally(() => { release(); }));\n });\n implementation.addEventListener('requestWriteLock', async (event) => {\n if (mutexes[event.data.name] == null) {\n return;\n }\n void mutexes[event.data.name].writeLock()\n .then(async (release) => event.data.handler().finally(() => { release(); }));\n });\n }\n }\n if (mutexes[opts.name] == null) {\n mutexes[opts.name] = createMutex(opts.name, opts);\n }\n return mutexes[opts.name];\n}\n//# sourceMappingURL=index.js.map","import { start, stop } from '@libp2p/interface';\nimport createMortice from 'mortice';\n/**\n * BlockStorage is a hybrid blockstore that puts/gets blocks from a configured\n * blockstore (that may be on disk, s3, or something else). If the blocks are\n * not present Bitswap will be used to fetch them from network peers.\n */\nexport class BlockStorage {\n lock;\n child;\n pins;\n started;\n /**\n * Create a new BlockStorage\n */\n constructor(blockstore, pins, options = {}) {\n this.child = blockstore;\n this.pins = pins;\n this.lock = createMortice({\n singleProcess: options.holdGcLock\n });\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n async start() {\n await start(this.child);\n this.started = true;\n }\n async stop() {\n await stop(this.child);\n this.started = false;\n }\n unwrap() {\n return this.child;\n }\n /**\n * Put a block to the underlying datastore\n */\n async put(cid, block, options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n return await this.child.put(cid, block, options);\n }\n finally {\n releaseLock();\n }\n }\n /**\n * Put a multiple blocks to the underlying datastore\n */\n async *putMany(blocks, options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n yield* this.child.putMany(blocks, options);\n }\n finally {\n releaseLock();\n }\n }\n /**\n * Get a block by cid\n */\n async get(cid, options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n return await this.child.get(cid, options);\n }\n finally {\n releaseLock();\n }\n }\n /**\n * Get multiple blocks back from an (async) iterable of cids\n */\n async *getMany(cids, options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n yield* this.child.getMany(cids, options);\n }\n finally {\n releaseLock();\n }\n }\n /**\n * Delete a block from the blockstore\n */\n async delete(cid, options = {}) {\n const releaseLock = await this.lock.writeLock();\n try {\n if (await this.pins.isPinned(cid)) {\n throw new Error('CID was pinned');\n }\n await this.child.delete(cid, options);\n }\n finally {\n releaseLock();\n }\n }\n /**\n * Delete multiple blocks from the blockstore\n */\n async *deleteMany(cids, options = {}) {\n const releaseLock = await this.lock.writeLock();\n try {\n const storage = this;\n yield* this.child.deleteMany((async function* () {\n for await (const cid of cids) {\n if (await storage.pins.isPinned(cid)) {\n throw new Error('CID was pinned');\n }\n yield cid;\n }\n }()), options);\n }\n finally {\n releaseLock();\n }\n }\n async has(cid, options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n return await this.child.has(cid, options);\n }\n finally {\n releaseLock();\n }\n }\n async *getAll(options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n yield* this.child.getAll(options);\n }\n finally {\n releaseLock();\n }\n }\n}\n//# sourceMappingURL=storage.js.map","import { Key } from 'interface-datastore';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nconst DS_VERSION_KEY = new Key('/version');\nconst CURRENT_VERSION = 1;\nexport async function assertDatastoreVersionIsCurrent(datastore) {\n if (!(await datastore.has(DS_VERSION_KEY))) {\n await datastore.put(DS_VERSION_KEY, uint8ArrayFromString(`${CURRENT_VERSION}`));\n return;\n }\n const buf = await datastore.get(DS_VERSION_KEY);\n const str = uint8ArrayToString(buf);\n const version = parseInt(str, 10);\n if (version !== CURRENT_VERSION) {\n // TODO: write migrations when we break compatibility - for an example, see https://github.com/ipfs/js-ipfs-repo/tree/master/packages/ipfs-repo-migrations\n throw new Error('Unknown datastore version, a datastore migration may be required');\n }\n}\n//# sourceMappingURL=datastore-version.js.map","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0x0;\nconst name = 'identity';\nconst encode = coerce;\nfunction digest(input) {\n return Digest.create(code, encode(input));\n}\nexport const identity = { code, name, encode, digest };\n//# sourceMappingURL=identity.js.map","import { identity } from 'multiformats/hashes/identity';\nimport { sha256, sha512 } from 'multiformats/hashes/sha2';\nexport function defaultHashers(hashers = []) {\n return [\n sha256,\n sha512,\n identity,\n ...hashers\n ];\n}\n//# sourceMappingURL=default-hashers.js.map","import { bitswap, trustlessGateway, NetworkedStorage } from '@helia/block-brokers';\nimport { start, stop } from '@libp2p/interface';\nimport drain from 'it-drain';\nimport { CustomProgressEvent } from 'progress-events';\nimport { PinsImpl } from './pins.js';\nimport { BlockStorage } from './storage.js';\nimport { assertDatastoreVersionIsCurrent } from './utils/datastore-version.js';\nimport { defaultHashers } from './utils/default-hashers.js';\nexport class HeliaImpl {\n libp2p;\n blockstore;\n datastore;\n pins;\n logger;\n log;\n constructor(init) {\n this.logger = init.libp2p.logger;\n this.log = this.logger.forComponent('helia');\n const hashers = defaultHashers(init.hashers);\n const components = {\n blockstore: init.blockstore,\n datastore: init.datastore,\n libp2p: init.libp2p,\n hashers,\n logger: init.libp2p.logger\n };\n const blockBrokers = init.blockBrokers?.map((fn) => {\n return fn(components);\n }) ?? [\n bitswap()(components),\n trustlessGateway()(components)\n ];\n const networkedStorage = new NetworkedStorage(components, {\n blockBrokers,\n hashers\n });\n this.pins = new PinsImpl(init.datastore, networkedStorage, init.dagWalkers ?? []);\n this.libp2p = init.libp2p;\n this.blockstore = new BlockStorage(networkedStorage, this.pins, {\n holdGcLock: init.holdGcLock\n });\n this.datastore = init.datastore;\n }\n async start() {\n await assertDatastoreVersionIsCurrent(this.datastore);\n await start(this.blockstore);\n await this.libp2p.start();\n }\n async stop() {\n await this.libp2p.stop();\n await stop(this.blockstore);\n }\n async gc(options = {}) {\n const releaseLock = await this.blockstore.lock.writeLock();\n try {\n const helia = this;\n const blockstore = this.blockstore.unwrap();\n this.log('gc start');\n await drain(blockstore.deleteMany((async function* () {\n for await (const { cid } of blockstore.getAll()) {\n try {\n if (await helia.pins.isPinned(cid, options)) {\n continue;\n }\n yield cid;\n options.onProgress?.(new CustomProgressEvent('helia:gc:deleted', cid));\n }\n catch (err) {\n helia.log.error('Error during gc', err);\n options.onProgress?.(new CustomProgressEvent('helia:gc:error', err));\n }\n }\n }())));\n }\n finally {\n releaseLock();\n }\n this.log('gc finished');\n }\n}\n//# sourceMappingURL=helia.js.map","/**\n * @packageDocumentation\n *\n * An implementation of a peer id\n *\n * @example\n *\n * ```TypeScript\n * import { peerIdFromString } from '@libp2p/peer-id'\n * const peer = peerIdFromString('k51qzi5uqu5dkwkqm42v9j9kqcam2jiuvloi16g72i4i4amoo2m8u3ol3mqu6s')\n *\n * console.log(peer.toCID()) // CID(bafzaa...)\n * console.log(peer.toString()) // \"12D3K...\"\n * ```\n */\nimport { CodeError } from '@libp2p/interface';\nimport { peerIdSymbol } from '@libp2p/interface';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { bases } from 'multiformats/basics';\nimport { CID } from 'multiformats/cid';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nconst inspect = Symbol.for('nodejs.util.inspect.custom');\nconst baseDecoder = Object\n .values(bases)\n .map(codec => codec.decoder)\n // @ts-expect-error https://github.com/multiformats/js-multiformats/issues/141\n .reduce((acc, curr) => acc.or(curr), bases.identity.decoder);\n// these values are from https://github.com/multiformats/multicodec/blob/master/table.csv\nconst LIBP2P_KEY_CODE = 0x72;\nconst MARSHALLED_ED225519_PUBLIC_KEY_LENGTH = 36;\nconst MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH = 37;\nclass PeerIdImpl {\n type;\n multihash;\n privateKey;\n publicKey;\n string;\n constructor(init) {\n this.type = init.type;\n this.multihash = init.multihash;\n this.privateKey = init.privateKey;\n // mark string cache as non-enumerable\n Object.defineProperty(this, 'string', {\n enumerable: false,\n writable: true\n });\n }\n get [Symbol.toStringTag]() {\n return `PeerId(${this.toString()})`;\n }\n [peerIdSymbol] = true;\n toString() {\n if (this.string == null) {\n this.string = base58btc.encode(this.multihash.bytes).slice(1);\n }\n return this.string;\n }\n // return self-describing String representation\n // in default format from RFC 0001: https://github.com/libp2p/specs/pull/209\n toCID() {\n return CID.createV1(LIBP2P_KEY_CODE, this.multihash);\n }\n toBytes() {\n return this.multihash.bytes;\n }\n /**\n * Returns Multiaddr as a JSON string\n */\n toJSON() {\n return this.toString();\n }\n /**\n * Checks the equality of `this` peer against a given PeerId\n */\n equals(id) {\n if (id == null) {\n return false;\n }\n if (id instanceof Uint8Array) {\n return uint8ArrayEquals(this.multihash.bytes, id);\n }\n else if (typeof id === 'string') {\n return peerIdFromString(id).equals(this);\n }\n else if (id?.multihash?.bytes != null) {\n return uint8ArrayEquals(this.multihash.bytes, id.multihash.bytes);\n }\n else {\n throw new Error('not valid Id');\n }\n }\n /**\n * Returns PeerId as a human-readable string\n * https://nodejs.org/api/util.html#utilinspectcustom\n *\n * @example\n * ```TypeScript\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * console.info(peerIdFromString('QmFoo'))\n * // 'PeerId(QmFoo)'\n * ```\n */\n [inspect]() {\n return `PeerId(${this.toString()})`;\n }\n}\nclass RSAPeerIdImpl extends PeerIdImpl {\n type = 'RSA';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'RSA' });\n this.publicKey = init.publicKey;\n }\n}\nclass Ed25519PeerIdImpl extends PeerIdImpl {\n type = 'Ed25519';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'Ed25519' });\n this.publicKey = init.multihash.digest;\n }\n}\nclass Secp256k1PeerIdImpl extends PeerIdImpl {\n type = 'secp256k1';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'secp256k1' });\n this.publicKey = init.multihash.digest;\n }\n}\n// these values are from https://github.com/multiformats/multicodec/blob/master/table.csv\nconst TRANSPORT_IPFS_GATEWAY_HTTP_CODE = 0x0920;\nclass URLPeerIdImpl {\n type = 'url';\n multihash;\n privateKey;\n publicKey;\n url;\n constructor(url) {\n this.url = url.toString();\n this.multihash = identity.digest(uint8ArrayFromString(this.url));\n }\n [inspect]() {\n return `PeerId(${this.url})`;\n }\n [peerIdSymbol] = true;\n toString() {\n return this.toCID().toString();\n }\n toCID() {\n return CID.createV1(TRANSPORT_IPFS_GATEWAY_HTTP_CODE, this.multihash);\n }\n toBytes() {\n return this.toCID().bytes;\n }\n equals(other) {\n if (other == null) {\n return false;\n }\n if (other instanceof Uint8Array) {\n other = uint8ArrayToString(other);\n }\n return other.toString() === this.toString();\n }\n}\nexport function createPeerId(init) {\n if (init.type === 'RSA') {\n return new RSAPeerIdImpl(init);\n }\n if (init.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(init);\n }\n if (init.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(init);\n }\n throw new CodeError('Type must be \"RSA\", \"Ed25519\" or \"secp256k1\"', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromPeerId(other) {\n if (other.type === 'RSA') {\n return new RSAPeerIdImpl(other);\n }\n if (other.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(other);\n }\n if (other.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(other);\n }\n throw new CodeError('Not a PeerId', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromString(str, decoder) {\n decoder = decoder ?? baseDecoder;\n if (str.charAt(0) === '1' || str.charAt(0) === 'Q') {\n // identity hash ed25519/secp256k1 key or sha2-256 hash of\n // rsa public key - base58btc encoded either way\n const multihash = Digest.decode(base58btc.decode(`z${str}`));\n if (str.startsWith('12D')) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (str.startsWith('16U')) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n else {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n return peerIdFromBytes(baseDecoder.decode(str));\n}\nexport function peerIdFromBytes(buf) {\n try {\n const multihash = Digest.decode(buf);\n if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n }\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n catch {\n return peerIdFromCID(CID.decode(buf));\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\nexport function peerIdFromCID(cid) {\n if (cid?.multihash == null || cid.version == null || (cid.version === 1 && (cid.code !== LIBP2P_KEY_CODE) && cid.code !== TRANSPORT_IPFS_GATEWAY_HTTP_CODE)) {\n throw new Error('Supplied PeerID CID is invalid');\n }\n if (cid.code === TRANSPORT_IPFS_GATEWAY_HTTP_CODE) {\n const url = uint8ArrayToString(cid.multihash.digest);\n return new URLPeerIdImpl(new URL(url));\n }\n const multihash = cid.multihash;\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: cid.multihash });\n }\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\n/**\n * @param publicKey - A marshalled public key\n * @param privateKey - A marshalled private key\n */\nexport async function peerIdFromKeys(publicKey, privateKey) {\n if (publicKey.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n if (publicKey.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n return new RSAPeerIdImpl({ multihash: await sha256.digest(publicKey), publicKey, privateKey });\n}\n//# sourceMappingURL=index.js.map","export const second = 1000;\nexport const minute = 60 * second;\n// Protocol identifiers\nexport const FloodsubID = '/floodsub/1.0.0';\n/**\n * The protocol ID for version 1.0.0 of the Gossipsub protocol\n * It is advertised along with GossipsubIDv11 for backwards compatability\n */\nexport const GossipsubIDv10 = '/meshsub/1.0.0';\n/**\n * The protocol ID for version 1.1.0 of the Gossipsub protocol\n * See the spec for details about how v1.1.0 compares to v1.0.0:\n * https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md\n */\nexport const GossipsubIDv11 = '/meshsub/1.1.0';\n// Overlay parameters\n/**\n * GossipsubD sets the optimal degree for a Gossipsub topic mesh. For example, if GossipsubD == 6,\n * each peer will want to have about six peers in their mesh for each topic they're subscribed to.\n * GossipsubD should be set somewhere between GossipsubDlo and GossipsubDhi.\n */\nexport const GossipsubD = 6;\n/**\n * GossipsubDlo sets the lower bound on the number of peers we keep in a Gossipsub topic mesh.\n * If we have fewer than GossipsubDlo peers, we will attempt to graft some more into the mesh at\n * the next heartbeat.\n */\nexport const GossipsubDlo = 4;\n/**\n * GossipsubDhi sets the upper bound on the number of peers we keep in a Gossipsub topic mesh.\n * If we have more than GossipsubDhi peers, we will select some to prune from the mesh at the next heartbeat.\n */\nexport const GossipsubDhi = 12;\n/**\n * GossipsubDscore affects how peers are selected when pruning a mesh due to over subscription.\n * At least GossipsubDscore of the retained peers will be high-scoring, while the remainder are\n * chosen randomly.\n */\nexport const GossipsubDscore = 4;\n/**\n * GossipsubDout sets the quota for the number of outbound connections to maintain in a topic mesh.\n * When the mesh is pruned due to over subscription, we make sure that we have outbound connections\n * to at least GossipsubDout of the survivor peers. This prevents sybil attackers from overwhelming\n * our mesh with incoming connections.\n *\n * GossipsubDout must be set below GossipsubDlo, and must not exceed GossipsubD / 2.\n */\nexport const GossipsubDout = 2;\n// Gossip parameters\n/**\n * GossipsubHistoryLength controls the size of the message cache used for gossip.\n * The message cache will remember messages for GossipsubHistoryLength heartbeats.\n */\nexport const GossipsubHistoryLength = 5;\n/**\n * GossipsubHistoryGossip controls how many cached message ids we will advertise in\n * IHAVE gossip messages. When asked for our seen message IDs, we will return\n * only those from the most recent GossipsubHistoryGossip heartbeats. The slack between\n * GossipsubHistoryGossip and GossipsubHistoryLength allows us to avoid advertising messages\n * that will be expired by the time they're requested.\n *\n * GossipsubHistoryGossip must be less than or equal to GossipsubHistoryLength to\n * avoid a runtime panic.\n */\nexport const GossipsubHistoryGossip = 3;\n/**\n * GossipsubDlazy affects how many peers we will emit gossip to at each heartbeat.\n * We will send gossip to at least GossipsubDlazy peers outside our mesh. The actual\n * number may be more, depending on GossipsubGossipFactor and how many peers we're\n * connected to.\n */\nexport const GossipsubDlazy = 6;\n/**\n * GossipsubGossipFactor affects how many peers we will emit gossip to at each heartbeat.\n * We will send gossip to GossipsubGossipFactor * (total number of non-mesh peers), or\n * GossipsubDlazy, whichever is greater.\n */\nexport const GossipsubGossipFactor = 0.25;\n/**\n * GossipsubGossipRetransmission controls how many times we will allow a peer to request\n * the same message id through IWANT gossip before we start ignoring them. This is designed\n * to prevent peers from spamming us with requests and wasting our resources.\n */\nexport const GossipsubGossipRetransmission = 3;\n// Heartbeat interval\n/**\n * GossipsubHeartbeatInitialDelay is the short delay before the heartbeat timer begins\n * after the router is initialized.\n */\nexport const GossipsubHeartbeatInitialDelay = 100;\n/**\n * GossipsubHeartbeatInterval controls the time between heartbeats.\n */\nexport const GossipsubHeartbeatInterval = second;\n/**\n * GossipsubFanoutTTL controls how long we keep track of the fanout state. If it's been\n * GossipsubFanoutTTL since we've published to a topic that we're not subscribed to,\n * we'll delete the fanout map for that topic.\n */\nexport const GossipsubFanoutTTL = minute;\n/**\n * GossipsubPrunePeers controls the number of peers to include in prune Peer eXchange.\n * When we prune a peer that's eligible for PX (has a good score, etc), we will try to\n * send them signed peer records for up to GossipsubPrunePeers other peers that we\n * know of.\n */\nexport const GossipsubPrunePeers = 16;\n/**\n * GossipsubPruneBackoff controls the backoff time for pruned peers. This is how long\n * a peer must wait before attempting to graft into our mesh again after being pruned.\n * When pruning a peer, we send them our value of GossipsubPruneBackoff so they know\n * the minimum time to wait. Peers running older versions may not send a backoff time,\n * so if we receive a prune message without one, we will wait at least GossipsubPruneBackoff\n * before attempting to re-graft.\n */\nexport const GossipsubPruneBackoff = minute;\n/**\n * Backoff to use when unsuscribing from a topic. Should not resubscribe to this topic before it expired.\n */\nexport const GossipsubUnsubscribeBackoff = 10 * second;\n/**\n * GossipsubPruneBackoffTicks is the number of heartbeat ticks for attempting to prune expired\n * backoff timers.\n */\nexport const GossipsubPruneBackoffTicks = 15;\n/**\n * GossipsubConnectors controls the number of active connection attempts for peers obtained through PX.\n */\nexport const GossipsubConnectors = 8;\n/**\n * GossipsubMaxPendingConnections sets the maximum number of pending connections for peers attempted through px.\n */\nexport const GossipsubMaxPendingConnections = 128;\n/**\n * GossipsubConnectionTimeout controls the timeout for connection attempts.\n */\nexport const GossipsubConnectionTimeout = 30 * second;\n/**\n * GossipsubDirectConnectTicks is the number of heartbeat ticks for attempting to reconnect direct peers\n * that are not currently connected.\n */\nexport const GossipsubDirectConnectTicks = 300;\n/**\n * GossipsubDirectConnectInitialDelay is the initial delay before opening connections to direct peers\n */\nexport const GossipsubDirectConnectInitialDelay = second;\n/**\n * GossipsubOpportunisticGraftTicks is the number of heartbeat ticks for attempting to improve the mesh\n * with opportunistic grafting. Every GossipsubOpportunisticGraftTicks we will attempt to select some\n * high-scoring mesh peers to replace lower-scoring ones, if the median score of our mesh peers falls\n * below a threshold\n */\nexport const GossipsubOpportunisticGraftTicks = 60;\n/**\n * GossipsubOpportunisticGraftPeers is the number of peers to opportunistically graft.\n */\nexport const GossipsubOpportunisticGraftPeers = 2;\n/**\n * If a GRAFT comes before GossipsubGraftFloodThreshold has elapsed since the last PRUNE,\n * then there is an extra score penalty applied to the peer through P7.\n */\nexport const GossipsubGraftFloodThreshold = 10 * second;\n/**\n * GossipsubMaxIHaveLength is the maximum number of messages to include in an IHAVE message.\n * Also controls the maximum number of IHAVE ids we will accept and request with IWANT from a\n * peer within a heartbeat, to protect from IHAVE floods. You should adjust this value from the\n * default if your system is pushing more than 5000 messages in GossipsubHistoryGossip heartbeats;\n * with the defaults this is 1666 messages/s.\n */\nexport const GossipsubMaxIHaveLength = 5000;\n/**\n * GossipsubMaxIHaveMessages is the maximum number of IHAVE messages to accept from a peer within a heartbeat.\n */\nexport const GossipsubMaxIHaveMessages = 10;\n/**\n * Time to wait for a message requested through IWANT following an IHAVE advertisement.\n * If the message is not received within this window, a broken promise is declared and\n * the router may apply bahavioural penalties.\n */\nexport const GossipsubIWantFollowupTime = 3 * second;\n/**\n * Time in milliseconds to keep message ids in the seen cache\n */\nexport const GossipsubSeenTTL = 2 * minute;\nexport const TimeCacheDuration = 120 * 1000;\nexport const ERR_TOPIC_VALIDATOR_REJECT = 'ERR_TOPIC_VALIDATOR_REJECT';\nexport const ERR_TOPIC_VALIDATOR_IGNORE = 'ERR_TOPIC_VALIDATOR_IGNORE';\n/**\n * If peer score is better than this, we accept messages from this peer\n * within ACCEPT_FROM_WHITELIST_DURATION_MS from the last time computing score.\n **/\nexport const ACCEPT_FROM_WHITELIST_THRESHOLD_SCORE = 0;\n/**\n * If peer score >= ACCEPT_FROM_WHITELIST_THRESHOLD_SCORE, accept up to this\n * number of messages from that peer.\n */\nexport const ACCEPT_FROM_WHITELIST_MAX_MESSAGES = 128;\n/**\n * If peer score >= ACCEPT_FROM_WHITELIST_THRESHOLD_SCORE, accept messages from\n * this peer up to this time duration.\n */\nexport const ACCEPT_FROM_WHITELIST_DURATION_MS = 1000;\n/**\n * The default MeshMessageDeliveriesWindow to be used in metrics.\n */\nexport const DEFAULT_METRIC_MESH_MESSAGE_DELIVERIES_WINDOWS = 1000;\n/** Wait for 1 more heartbeats before clearing a backoff */\nexport const BACKOFF_SLACK = 1;\n//# sourceMappingURL=constants.js.map","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n","\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.} dst Destination object\n * @param {Object.} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n CustomError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n enumerable: false,\n configurable: true,\n },\n name: {\n get: function get() { return name; },\n set: undefined,\n enumerable: false,\n // configurable: false would accurately preserve the behavior of\n // the original, but I'm guessing that was not intentional.\n // For an actual error subclass, this property would\n // be configurable.\n configurable: true,\n },\n toString: {\n value: function value() { return this.name + \": \" + this.message; },\n writable: true,\n enumerable: false,\n configurable: true,\n },\n });\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message\n * @constructor\n * @param {string} message Error message\n * @param {Object.} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n","\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n","\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n","\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n var nativeBuffer = util.Buffer;\n return nativeBuffer\n ? nativeBuffer.alloc(0)\n : new this.buf.constructor(0);\n }\n return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n","\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n","\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message\n * @template TRes extends Message\n * @type {function}\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\n * @param {Constructor} requestCtor Request constructor\n * @param {Constructor} responseCtor Response constructor\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message\n * @template TRes extends Message\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n","\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n","\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n","\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n","// minimal library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-minimal\");\n","import protobuf from 'protobufjs/minimal.js';\nexport const defaultDecodeRpcLimits = {\n maxSubscriptions: Infinity,\n maxMessages: Infinity,\n maxIhaveMessageIDs: Infinity,\n maxIwantMessageIDs: Infinity,\n maxControlMessages: Infinity,\n maxPeerInfos: Infinity\n};\n/**\n * Copied code from src/message/rpc.cjs but with decode limits to prevent OOM attacks\n */\nexport function decodeRpc(bytes, opts) {\n // Mutate to use the option as stateful counter. Must limit the total count of messageIDs across all IWANT, IHAVE\n // else one count put 100 messageIDs into each 100 IWANT and \"get around\" the limit\n opts = { ...opts };\n const r = protobuf.Reader.create(bytes);\n const l = bytes.length;\n const c = l === undefined ? r.len : r.pos + l;\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!((m.subscriptions != null) && (m.subscriptions.length > 0)))\n m.subscriptions = [];\n if (m.subscriptions.length < opts.maxSubscriptions)\n m.subscriptions.push(decodeSubOpts(r, r.uint32()));\n else\n r.skipType(t & 7);\n break;\n case 2:\n if (!((m.messages != null) && (m.messages.length > 0)))\n m.messages = [];\n if (m.messages.length < opts.maxMessages)\n m.messages.push(decodeMessage(r, r.uint32()));\n else\n r.skipType(t & 7);\n break;\n case 3:\n m.control = decodeControlMessage(r, r.uint32(), opts);\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeSubOpts(r, l) {\n const c = l === undefined ? r.len : r.pos + l;\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.subscribe = r.bool();\n break;\n case 2:\n m.topic = r.string();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeMessage(r, l) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.from = r.bytes();\n break;\n case 2:\n m.data = r.bytes();\n break;\n case 3:\n m.seqno = r.bytes();\n break;\n case 4:\n m.topic = r.string();\n break;\n case 5:\n m.signature = r.bytes();\n break;\n case 6:\n m.key = r.bytes();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!m.topic)\n throw Error(\"missing required 'topic'\");\n return m;\n}\nfunction decodeControlMessage(r, l, opts) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!((m.ihave != null) && (m.ihave.length > 0)))\n m.ihave = [];\n if (m.ihave.length < opts.maxControlMessages)\n m.ihave.push(decodeControlIHave(r, r.uint32(), opts));\n else\n r.skipType(t & 7);\n break;\n case 2:\n if (!((m.iwant != null) && (m.iwant.length > 0)))\n m.iwant = [];\n if (m.iwant.length < opts.maxControlMessages)\n m.iwant.push(decodeControlIWant(r, r.uint32(), opts));\n else\n r.skipType(t & 7);\n break;\n case 3:\n if (!((m.graft != null) && (m.graft.length > 0)))\n m.graft = [];\n if (m.graft.length < opts.maxControlMessages)\n m.graft.push(decodeControlGraft(r, r.uint32()));\n else\n r.skipType(t & 7);\n break;\n case 4:\n if (!((m.prune != null) && (m.prune.length > 0)))\n m.prune = [];\n if (m.prune.length < opts.maxControlMessages)\n m.prune.push(decodeControlPrune(r, r.uint32(), opts));\n else\n r.skipType(t & 7);\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeControlIHave(r, l, opts) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n case 2:\n if (!((m.messageIDs != null) && (m.messageIDs.length > 0)))\n m.messageIDs = [];\n if (opts.maxIhaveMessageIDs-- > 0)\n m.messageIDs.push(r.bytes());\n else\n r.skipType(t & 7);\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeControlIWant(r, l, opts) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!((m.messageIDs != null) && (m.messageIDs.length > 0)))\n m.messageIDs = [];\n if (opts.maxIwantMessageIDs-- > 0)\n m.messageIDs.push(r.bytes());\n else\n r.skipType(t & 7);\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeControlGraft(r, l) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeControlPrune(r, l, opts) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n case 2:\n if (!((m.peers != null) && (m.peers.length > 0)))\n m.peers = [];\n if (opts.maxPeerInfos-- > 0)\n m.peers.push(decodePeerInfo(r, r.uint32()));\n else\n r.skipType(t & 7);\n break;\n case 3:\n m.backoff = r.uint64();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodePeerInfo(r, l) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.peerID = r.bytes();\n break;\n case 2:\n m.signedPeerRecord = r.bytes();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\n//# sourceMappingURL=decodeRpc.js.map","// @ts-nocheck\n/*eslint-disable*/\n(function(global, factory) { /* global define, require, module */\n\n /* AMD */ if (typeof define === 'function' && define.amd)\n define([\"protobufjs/minimal\"], factory);\n\n /* CommonJS */ else if (typeof require === 'function' && typeof module === 'object' && module && module.exports)\n module.exports = factory(require(\"protobufjs/minimal\"));\n\n})(this, function($protobuf) {\n \"use strict\";\n\n // Common aliases\n var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n // Exported root namespace\n var $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\n $root.RPC = (function() {\n\n /**\n * Properties of a RPC.\n * @exports IRPC\n * @interface IRPC\n * @property {Array.|null} [subscriptions] RPC subscriptions\n * @property {Array.|null} [messages] RPC messages\n * @property {RPC.IControlMessage|null} [control] RPC control\n */\n\n /**\n * Constructs a new RPC.\n * @exports RPC\n * @classdesc Represents a RPC.\n * @implements IRPC\n * @constructor\n * @param {IRPC=} [p] Properties to set\n */\n function RPC(p) {\n this.subscriptions = [];\n this.messages = [];\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * RPC subscriptions.\n * @member {Array.} subscriptions\n * @memberof RPC\n * @instance\n */\n RPC.prototype.subscriptions = $util.emptyArray;\n\n /**\n * RPC messages.\n * @member {Array.} messages\n * @memberof RPC\n * @instance\n */\n RPC.prototype.messages = $util.emptyArray;\n\n /**\n * RPC control.\n * @member {RPC.IControlMessage|null|undefined} control\n * @memberof RPC\n * @instance\n */\n RPC.prototype.control = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * RPC _control.\n * @member {\"control\"|undefined} _control\n * @memberof RPC\n * @instance\n */\n Object.defineProperty(RPC.prototype, \"_control\", {\n get: $util.oneOfGetter($oneOfFields = [\"control\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified RPC message. Does not implicitly {@link RPC.verify|verify} messages.\n * @function encode\n * @memberof RPC\n * @static\n * @param {IRPC} m RPC message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n RPC.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.subscriptions != null && m.subscriptions.length) {\n for (var i = 0; i < m.subscriptions.length; ++i)\n $root.RPC.SubOpts.encode(m.subscriptions[i], w.uint32(10).fork()).ldelim();\n }\n if (m.messages != null && m.messages.length) {\n for (var i = 0; i < m.messages.length; ++i)\n $root.RPC.Message.encode(m.messages[i], w.uint32(18).fork()).ldelim();\n }\n if (m.control != null && Object.hasOwnProperty.call(m, \"control\"))\n $root.RPC.ControlMessage.encode(m.control, w.uint32(26).fork()).ldelim();\n return w;\n };\n\n /**\n * Decodes a RPC message from the specified reader or buffer.\n * @function decode\n * @memberof RPC\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC} RPC\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n RPC.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!(m.subscriptions && m.subscriptions.length))\n m.subscriptions = [];\n m.subscriptions.push($root.RPC.SubOpts.decode(r, r.uint32()));\n break;\n case 2:\n if (!(m.messages && m.messages.length))\n m.messages = [];\n m.messages.push($root.RPC.Message.decode(r, r.uint32()));\n break;\n case 3:\n m.control = $root.RPC.ControlMessage.decode(r, r.uint32());\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a RPC message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC} RPC\n */\n RPC.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC)\n return d;\n var m = new $root.RPC();\n if (d.subscriptions) {\n if (!Array.isArray(d.subscriptions))\n throw TypeError(\".RPC.subscriptions: array expected\");\n m.subscriptions = [];\n for (var i = 0; i < d.subscriptions.length; ++i) {\n if (typeof d.subscriptions[i] !== \"object\")\n throw TypeError(\".RPC.subscriptions: object expected\");\n m.subscriptions[i] = $root.RPC.SubOpts.fromObject(d.subscriptions[i]);\n }\n }\n if (d.messages) {\n if (!Array.isArray(d.messages))\n throw TypeError(\".RPC.messages: array expected\");\n m.messages = [];\n for (var i = 0; i < d.messages.length; ++i) {\n if (typeof d.messages[i] !== \"object\")\n throw TypeError(\".RPC.messages: object expected\");\n m.messages[i] = $root.RPC.Message.fromObject(d.messages[i]);\n }\n }\n if (d.control != null) {\n if (typeof d.control !== \"object\")\n throw TypeError(\".RPC.control: object expected\");\n m.control = $root.RPC.ControlMessage.fromObject(d.control);\n }\n return m;\n };\n\n /**\n * Creates a plain object from a RPC message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC\n * @static\n * @param {RPC} m RPC\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n RPC.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.arrays || o.defaults) {\n d.subscriptions = [];\n d.messages = [];\n }\n if (m.subscriptions && m.subscriptions.length) {\n d.subscriptions = [];\n for (var j = 0; j < m.subscriptions.length; ++j) {\n d.subscriptions[j] = $root.RPC.SubOpts.toObject(m.subscriptions[j], o);\n }\n }\n if (m.messages && m.messages.length) {\n d.messages = [];\n for (var j = 0; j < m.messages.length; ++j) {\n d.messages[j] = $root.RPC.Message.toObject(m.messages[j], o);\n }\n }\n if (m.control != null && m.hasOwnProperty(\"control\")) {\n d.control = $root.RPC.ControlMessage.toObject(m.control, o);\n if (o.oneofs)\n d._control = \"control\";\n }\n return d;\n };\n\n /**\n * Converts this RPC to JSON.\n * @function toJSON\n * @memberof RPC\n * @instance\n * @returns {Object.} JSON object\n */\n RPC.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n RPC.SubOpts = (function() {\n\n /**\n * Properties of a SubOpts.\n * @memberof RPC\n * @interface ISubOpts\n * @property {boolean|null} [subscribe] SubOpts subscribe\n * @property {string|null} [topic] SubOpts topic\n */\n\n /**\n * Constructs a new SubOpts.\n * @memberof RPC\n * @classdesc Represents a SubOpts.\n * @implements ISubOpts\n * @constructor\n * @param {RPC.ISubOpts=} [p] Properties to set\n */\n function SubOpts(p) {\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * SubOpts subscribe.\n * @member {boolean|null|undefined} subscribe\n * @memberof RPC.SubOpts\n * @instance\n */\n SubOpts.prototype.subscribe = null;\n\n /**\n * SubOpts topic.\n * @member {string|null|undefined} topic\n * @memberof RPC.SubOpts\n * @instance\n */\n SubOpts.prototype.topic = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * SubOpts _subscribe.\n * @member {\"subscribe\"|undefined} _subscribe\n * @memberof RPC.SubOpts\n * @instance\n */\n Object.defineProperty(SubOpts.prototype, \"_subscribe\", {\n get: $util.oneOfGetter($oneOfFields = [\"subscribe\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * SubOpts _topic.\n * @member {\"topic\"|undefined} _topic\n * @memberof RPC.SubOpts\n * @instance\n */\n Object.defineProperty(SubOpts.prototype, \"_topic\", {\n get: $util.oneOfGetter($oneOfFields = [\"topic\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified SubOpts message. Does not implicitly {@link RPC.SubOpts.verify|verify} messages.\n * @function encode\n * @memberof RPC.SubOpts\n * @static\n * @param {RPC.ISubOpts} m SubOpts message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SubOpts.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.subscribe != null && Object.hasOwnProperty.call(m, \"subscribe\"))\n w.uint32(8).bool(m.subscribe);\n if (m.topic != null && Object.hasOwnProperty.call(m, \"topic\"))\n w.uint32(18).string(m.topic);\n return w;\n };\n\n /**\n * Decodes a SubOpts message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.SubOpts\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.SubOpts} SubOpts\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SubOpts.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.SubOpts();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.subscribe = r.bool();\n break;\n case 2:\n m.topic = r.string();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a SubOpts message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.SubOpts\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.SubOpts} SubOpts\n */\n SubOpts.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.SubOpts)\n return d;\n var m = new $root.RPC.SubOpts();\n if (d.subscribe != null) {\n m.subscribe = Boolean(d.subscribe);\n }\n if (d.topic != null) {\n m.topic = String(d.topic);\n }\n return m;\n };\n\n /**\n * Creates a plain object from a SubOpts message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.SubOpts\n * @static\n * @param {RPC.SubOpts} m SubOpts\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n SubOpts.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (m.subscribe != null && m.hasOwnProperty(\"subscribe\")) {\n d.subscribe = m.subscribe;\n if (o.oneofs)\n d._subscribe = \"subscribe\";\n }\n if (m.topic != null && m.hasOwnProperty(\"topic\")) {\n d.topic = m.topic;\n if (o.oneofs)\n d._topic = \"topic\";\n }\n return d;\n };\n\n /**\n * Converts this SubOpts to JSON.\n * @function toJSON\n * @memberof RPC.SubOpts\n * @instance\n * @returns {Object.} JSON object\n */\n SubOpts.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return SubOpts;\n })();\n\n RPC.Message = (function() {\n\n /**\n * Properties of a Message.\n * @memberof RPC\n * @interface IMessage\n * @property {Uint8Array|null} [from] Message from\n * @property {Uint8Array|null} [data] Message data\n * @property {Uint8Array|null} [seqno] Message seqno\n * @property {string} topic Message topic\n * @property {Uint8Array|null} [signature] Message signature\n * @property {Uint8Array|null} [key] Message key\n */\n\n /**\n * Constructs a new Message.\n * @memberof RPC\n * @classdesc Represents a Message.\n * @implements IMessage\n * @constructor\n * @param {RPC.IMessage=} [p] Properties to set\n */\n function Message(p) {\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * Message from.\n * @member {Uint8Array|null|undefined} from\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.from = null;\n\n /**\n * Message data.\n * @member {Uint8Array|null|undefined} data\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.data = null;\n\n /**\n * Message seqno.\n * @member {Uint8Array|null|undefined} seqno\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.seqno = null;\n\n /**\n * Message topic.\n * @member {string} topic\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.topic = \"\";\n\n /**\n * Message signature.\n * @member {Uint8Array|null|undefined} signature\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.signature = null;\n\n /**\n * Message key.\n * @member {Uint8Array|null|undefined} key\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.key = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * Message _from.\n * @member {\"from\"|undefined} _from\n * @memberof RPC.Message\n * @instance\n */\n Object.defineProperty(Message.prototype, \"_from\", {\n get: $util.oneOfGetter($oneOfFields = [\"from\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Message _data.\n * @member {\"data\"|undefined} _data\n * @memberof RPC.Message\n * @instance\n */\n Object.defineProperty(Message.prototype, \"_data\", {\n get: $util.oneOfGetter($oneOfFields = [\"data\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Message _seqno.\n * @member {\"seqno\"|undefined} _seqno\n * @memberof RPC.Message\n * @instance\n */\n Object.defineProperty(Message.prototype, \"_seqno\", {\n get: $util.oneOfGetter($oneOfFields = [\"seqno\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Message _signature.\n * @member {\"signature\"|undefined} _signature\n * @memberof RPC.Message\n * @instance\n */\n Object.defineProperty(Message.prototype, \"_signature\", {\n get: $util.oneOfGetter($oneOfFields = [\"signature\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Message _key.\n * @member {\"key\"|undefined} _key\n * @memberof RPC.Message\n * @instance\n */\n Object.defineProperty(Message.prototype, \"_key\", {\n get: $util.oneOfGetter($oneOfFields = [\"key\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified Message message. Does not implicitly {@link RPC.Message.verify|verify} messages.\n * @function encode\n * @memberof RPC.Message\n * @static\n * @param {RPC.IMessage} m Message message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Message.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.from != null && Object.hasOwnProperty.call(m, \"from\"))\n w.uint32(10).bytes(m.from);\n if (m.data != null && Object.hasOwnProperty.call(m, \"data\"))\n w.uint32(18).bytes(m.data);\n if (m.seqno != null && Object.hasOwnProperty.call(m, \"seqno\"))\n w.uint32(26).bytes(m.seqno);\n w.uint32(34).string(m.topic);\n if (m.signature != null && Object.hasOwnProperty.call(m, \"signature\"))\n w.uint32(42).bytes(m.signature);\n if (m.key != null && Object.hasOwnProperty.call(m, \"key\"))\n w.uint32(50).bytes(m.key);\n return w;\n };\n\n /**\n * Decodes a Message message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.Message\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.Message} Message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Message.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.Message();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.from = r.bytes();\n break;\n case 2:\n m.data = r.bytes();\n break;\n case 3:\n m.seqno = r.bytes();\n break;\n case 4:\n m.topic = r.string();\n break;\n case 5:\n m.signature = r.bytes();\n break;\n case 6:\n m.key = r.bytes();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n if (!m.hasOwnProperty(\"topic\"))\n throw $util.ProtocolError(\"missing required 'topic'\", { instance: m });\n return m;\n };\n\n /**\n * Creates a Message message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.Message\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.Message} Message\n */\n Message.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.Message)\n return d;\n var m = new $root.RPC.Message();\n if (d.from != null) {\n if (typeof d.from === \"string\")\n $util.base64.decode(d.from, m.from = $util.newBuffer($util.base64.length(d.from)), 0);\n else if (d.from.length)\n m.from = d.from;\n }\n if (d.data != null) {\n if (typeof d.data === \"string\")\n $util.base64.decode(d.data, m.data = $util.newBuffer($util.base64.length(d.data)), 0);\n else if (d.data.length)\n m.data = d.data;\n }\n if (d.seqno != null) {\n if (typeof d.seqno === \"string\")\n $util.base64.decode(d.seqno, m.seqno = $util.newBuffer($util.base64.length(d.seqno)), 0);\n else if (d.seqno.length)\n m.seqno = d.seqno;\n }\n if (d.topic != null) {\n m.topic = String(d.topic);\n }\n if (d.signature != null) {\n if (typeof d.signature === \"string\")\n $util.base64.decode(d.signature, m.signature = $util.newBuffer($util.base64.length(d.signature)), 0);\n else if (d.signature.length)\n m.signature = d.signature;\n }\n if (d.key != null) {\n if (typeof d.key === \"string\")\n $util.base64.decode(d.key, m.key = $util.newBuffer($util.base64.length(d.key)), 0);\n else if (d.key.length)\n m.key = d.key;\n }\n return m;\n };\n\n /**\n * Creates a plain object from a Message message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.Message\n * @static\n * @param {RPC.Message} m Message\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n Message.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.defaults) {\n d.topic = \"\";\n }\n if (m.from != null && m.hasOwnProperty(\"from\")) {\n d.from = o.bytes === String ? $util.base64.encode(m.from, 0, m.from.length) : o.bytes === Array ? Array.prototype.slice.call(m.from) : m.from;\n if (o.oneofs)\n d._from = \"from\";\n }\n if (m.data != null && m.hasOwnProperty(\"data\")) {\n d.data = o.bytes === String ? $util.base64.encode(m.data, 0, m.data.length) : o.bytes === Array ? Array.prototype.slice.call(m.data) : m.data;\n if (o.oneofs)\n d._data = \"data\";\n }\n if (m.seqno != null && m.hasOwnProperty(\"seqno\")) {\n d.seqno = o.bytes === String ? $util.base64.encode(m.seqno, 0, m.seqno.length) : o.bytes === Array ? Array.prototype.slice.call(m.seqno) : m.seqno;\n if (o.oneofs)\n d._seqno = \"seqno\";\n }\n if (m.topic != null && m.hasOwnProperty(\"topic\")) {\n d.topic = m.topic;\n }\n if (m.signature != null && m.hasOwnProperty(\"signature\")) {\n d.signature = o.bytes === String ? $util.base64.encode(m.signature, 0, m.signature.length) : o.bytes === Array ? Array.prototype.slice.call(m.signature) : m.signature;\n if (o.oneofs)\n d._signature = \"signature\";\n }\n if (m.key != null && m.hasOwnProperty(\"key\")) {\n d.key = o.bytes === String ? $util.base64.encode(m.key, 0, m.key.length) : o.bytes === Array ? Array.prototype.slice.call(m.key) : m.key;\n if (o.oneofs)\n d._key = \"key\";\n }\n return d;\n };\n\n /**\n * Converts this Message to JSON.\n * @function toJSON\n * @memberof RPC.Message\n * @instance\n * @returns {Object.} JSON object\n */\n Message.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Message;\n })();\n\n RPC.ControlMessage = (function() {\n\n /**\n * Properties of a ControlMessage.\n * @memberof RPC\n * @interface IControlMessage\n * @property {Array.|null} [ihave] ControlMessage ihave\n * @property {Array.|null} [iwant] ControlMessage iwant\n * @property {Array.|null} [graft] ControlMessage graft\n * @property {Array.|null} [prune] ControlMessage prune\n */\n\n /**\n * Constructs a new ControlMessage.\n * @memberof RPC\n * @classdesc Represents a ControlMessage.\n * @implements IControlMessage\n * @constructor\n * @param {RPC.IControlMessage=} [p] Properties to set\n */\n function ControlMessage(p) {\n this.ihave = [];\n this.iwant = [];\n this.graft = [];\n this.prune = [];\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * ControlMessage ihave.\n * @member {Array.} ihave\n * @memberof RPC.ControlMessage\n * @instance\n */\n ControlMessage.prototype.ihave = $util.emptyArray;\n\n /**\n * ControlMessage iwant.\n * @member {Array.} iwant\n * @memberof RPC.ControlMessage\n * @instance\n */\n ControlMessage.prototype.iwant = $util.emptyArray;\n\n /**\n * ControlMessage graft.\n * @member {Array.} graft\n * @memberof RPC.ControlMessage\n * @instance\n */\n ControlMessage.prototype.graft = $util.emptyArray;\n\n /**\n * ControlMessage prune.\n * @member {Array.} prune\n * @memberof RPC.ControlMessage\n * @instance\n */\n ControlMessage.prototype.prune = $util.emptyArray;\n\n /**\n * Encodes the specified ControlMessage message. Does not implicitly {@link RPC.ControlMessage.verify|verify} messages.\n * @function encode\n * @memberof RPC.ControlMessage\n * @static\n * @param {RPC.IControlMessage} m ControlMessage message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ControlMessage.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.ihave != null && m.ihave.length) {\n for (var i = 0; i < m.ihave.length; ++i)\n $root.RPC.ControlIHave.encode(m.ihave[i], w.uint32(10).fork()).ldelim();\n }\n if (m.iwant != null && m.iwant.length) {\n for (var i = 0; i < m.iwant.length; ++i)\n $root.RPC.ControlIWant.encode(m.iwant[i], w.uint32(18).fork()).ldelim();\n }\n if (m.graft != null && m.graft.length) {\n for (var i = 0; i < m.graft.length; ++i)\n $root.RPC.ControlGraft.encode(m.graft[i], w.uint32(26).fork()).ldelim();\n }\n if (m.prune != null && m.prune.length) {\n for (var i = 0; i < m.prune.length; ++i)\n $root.RPC.ControlPrune.encode(m.prune[i], w.uint32(34).fork()).ldelim();\n }\n return w;\n };\n\n /**\n * Decodes a ControlMessage message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.ControlMessage\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.ControlMessage} ControlMessage\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ControlMessage.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.ControlMessage();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!(m.ihave && m.ihave.length))\n m.ihave = [];\n m.ihave.push($root.RPC.ControlIHave.decode(r, r.uint32()));\n break;\n case 2:\n if (!(m.iwant && m.iwant.length))\n m.iwant = [];\n m.iwant.push($root.RPC.ControlIWant.decode(r, r.uint32()));\n break;\n case 3:\n if (!(m.graft && m.graft.length))\n m.graft = [];\n m.graft.push($root.RPC.ControlGraft.decode(r, r.uint32()));\n break;\n case 4:\n if (!(m.prune && m.prune.length))\n m.prune = [];\n m.prune.push($root.RPC.ControlPrune.decode(r, r.uint32()));\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a ControlMessage message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.ControlMessage\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.ControlMessage} ControlMessage\n */\n ControlMessage.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.ControlMessage)\n return d;\n var m = new $root.RPC.ControlMessage();\n if (d.ihave) {\n if (!Array.isArray(d.ihave))\n throw TypeError(\".RPC.ControlMessage.ihave: array expected\");\n m.ihave = [];\n for (var i = 0; i < d.ihave.length; ++i) {\n if (typeof d.ihave[i] !== \"object\")\n throw TypeError(\".RPC.ControlMessage.ihave: object expected\");\n m.ihave[i] = $root.RPC.ControlIHave.fromObject(d.ihave[i]);\n }\n }\n if (d.iwant) {\n if (!Array.isArray(d.iwant))\n throw TypeError(\".RPC.ControlMessage.iwant: array expected\");\n m.iwant = [];\n for (var i = 0; i < d.iwant.length; ++i) {\n if (typeof d.iwant[i] !== \"object\")\n throw TypeError(\".RPC.ControlMessage.iwant: object expected\");\n m.iwant[i] = $root.RPC.ControlIWant.fromObject(d.iwant[i]);\n }\n }\n if (d.graft) {\n if (!Array.isArray(d.graft))\n throw TypeError(\".RPC.ControlMessage.graft: array expected\");\n m.graft = [];\n for (var i = 0; i < d.graft.length; ++i) {\n if (typeof d.graft[i] !== \"object\")\n throw TypeError(\".RPC.ControlMessage.graft: object expected\");\n m.graft[i] = $root.RPC.ControlGraft.fromObject(d.graft[i]);\n }\n }\n if (d.prune) {\n if (!Array.isArray(d.prune))\n throw TypeError(\".RPC.ControlMessage.prune: array expected\");\n m.prune = [];\n for (var i = 0; i < d.prune.length; ++i) {\n if (typeof d.prune[i] !== \"object\")\n throw TypeError(\".RPC.ControlMessage.prune: object expected\");\n m.prune[i] = $root.RPC.ControlPrune.fromObject(d.prune[i]);\n }\n }\n return m;\n };\n\n /**\n * Creates a plain object from a ControlMessage message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.ControlMessage\n * @static\n * @param {RPC.ControlMessage} m ControlMessage\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n ControlMessage.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.arrays || o.defaults) {\n d.ihave = [];\n d.iwant = [];\n d.graft = [];\n d.prune = [];\n }\n if (m.ihave && m.ihave.length) {\n d.ihave = [];\n for (var j = 0; j < m.ihave.length; ++j) {\n d.ihave[j] = $root.RPC.ControlIHave.toObject(m.ihave[j], o);\n }\n }\n if (m.iwant && m.iwant.length) {\n d.iwant = [];\n for (var j = 0; j < m.iwant.length; ++j) {\n d.iwant[j] = $root.RPC.ControlIWant.toObject(m.iwant[j], o);\n }\n }\n if (m.graft && m.graft.length) {\n d.graft = [];\n for (var j = 0; j < m.graft.length; ++j) {\n d.graft[j] = $root.RPC.ControlGraft.toObject(m.graft[j], o);\n }\n }\n if (m.prune && m.prune.length) {\n d.prune = [];\n for (var j = 0; j < m.prune.length; ++j) {\n d.prune[j] = $root.RPC.ControlPrune.toObject(m.prune[j], o);\n }\n }\n return d;\n };\n\n /**\n * Converts this ControlMessage to JSON.\n * @function toJSON\n * @memberof RPC.ControlMessage\n * @instance\n * @returns {Object.} JSON object\n */\n ControlMessage.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ControlMessage;\n })();\n\n RPC.ControlIHave = (function() {\n\n /**\n * Properties of a ControlIHave.\n * @memberof RPC\n * @interface IControlIHave\n * @property {string|null} [topicID] ControlIHave topicID\n * @property {Array.|null} [messageIDs] ControlIHave messageIDs\n */\n\n /**\n * Constructs a new ControlIHave.\n * @memberof RPC\n * @classdesc Represents a ControlIHave.\n * @implements IControlIHave\n * @constructor\n * @param {RPC.IControlIHave=} [p] Properties to set\n */\n function ControlIHave(p) {\n this.messageIDs = [];\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * ControlIHave topicID.\n * @member {string|null|undefined} topicID\n * @memberof RPC.ControlIHave\n * @instance\n */\n ControlIHave.prototype.topicID = null;\n\n /**\n * ControlIHave messageIDs.\n * @member {Array.} messageIDs\n * @memberof RPC.ControlIHave\n * @instance\n */\n ControlIHave.prototype.messageIDs = $util.emptyArray;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * ControlIHave _topicID.\n * @member {\"topicID\"|undefined} _topicID\n * @memberof RPC.ControlIHave\n * @instance\n */\n Object.defineProperty(ControlIHave.prototype, \"_topicID\", {\n get: $util.oneOfGetter($oneOfFields = [\"topicID\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified ControlIHave message. Does not implicitly {@link RPC.ControlIHave.verify|verify} messages.\n * @function encode\n * @memberof RPC.ControlIHave\n * @static\n * @param {RPC.IControlIHave} m ControlIHave message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ControlIHave.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.topicID != null && Object.hasOwnProperty.call(m, \"topicID\"))\n w.uint32(10).string(m.topicID);\n if (m.messageIDs != null && m.messageIDs.length) {\n for (var i = 0; i < m.messageIDs.length; ++i)\n w.uint32(18).bytes(m.messageIDs[i]);\n }\n return w;\n };\n\n /**\n * Decodes a ControlIHave message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.ControlIHave\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.ControlIHave} ControlIHave\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ControlIHave.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.ControlIHave();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n case 2:\n if (!(m.messageIDs && m.messageIDs.length))\n m.messageIDs = [];\n m.messageIDs.push(r.bytes());\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a ControlIHave message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.ControlIHave\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.ControlIHave} ControlIHave\n */\n ControlIHave.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.ControlIHave)\n return d;\n var m = new $root.RPC.ControlIHave();\n if (d.topicID != null) {\n m.topicID = String(d.topicID);\n }\n if (d.messageIDs) {\n if (!Array.isArray(d.messageIDs))\n throw TypeError(\".RPC.ControlIHave.messageIDs: array expected\");\n m.messageIDs = [];\n for (var i = 0; i < d.messageIDs.length; ++i) {\n if (typeof d.messageIDs[i] === \"string\")\n $util.base64.decode(d.messageIDs[i], m.messageIDs[i] = $util.newBuffer($util.base64.length(d.messageIDs[i])), 0);\n else if (d.messageIDs[i].length)\n m.messageIDs[i] = d.messageIDs[i];\n }\n }\n return m;\n };\n\n /**\n * Creates a plain object from a ControlIHave message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.ControlIHave\n * @static\n * @param {RPC.ControlIHave} m ControlIHave\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n ControlIHave.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.arrays || o.defaults) {\n d.messageIDs = [];\n }\n if (m.topicID != null && m.hasOwnProperty(\"topicID\")) {\n d.topicID = m.topicID;\n if (o.oneofs)\n d._topicID = \"topicID\";\n }\n if (m.messageIDs && m.messageIDs.length) {\n d.messageIDs = [];\n for (var j = 0; j < m.messageIDs.length; ++j) {\n d.messageIDs[j] = o.bytes === String ? $util.base64.encode(m.messageIDs[j], 0, m.messageIDs[j].length) : o.bytes === Array ? Array.prototype.slice.call(m.messageIDs[j]) : m.messageIDs[j];\n }\n }\n return d;\n };\n\n /**\n * Converts this ControlIHave to JSON.\n * @function toJSON\n * @memberof RPC.ControlIHave\n * @instance\n * @returns {Object.} JSON object\n */\n ControlIHave.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ControlIHave;\n })();\n\n RPC.ControlIWant = (function() {\n\n /**\n * Properties of a ControlIWant.\n * @memberof RPC\n * @interface IControlIWant\n * @property {Array.|null} [messageIDs] ControlIWant messageIDs\n */\n\n /**\n * Constructs a new ControlIWant.\n * @memberof RPC\n * @classdesc Represents a ControlIWant.\n * @implements IControlIWant\n * @constructor\n * @param {RPC.IControlIWant=} [p] Properties to set\n */\n function ControlIWant(p) {\n this.messageIDs = [];\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * ControlIWant messageIDs.\n * @member {Array.} messageIDs\n * @memberof RPC.ControlIWant\n * @instance\n */\n ControlIWant.prototype.messageIDs = $util.emptyArray;\n\n /**\n * Encodes the specified ControlIWant message. Does not implicitly {@link RPC.ControlIWant.verify|verify} messages.\n * @function encode\n * @memberof RPC.ControlIWant\n * @static\n * @param {RPC.IControlIWant} m ControlIWant message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ControlIWant.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.messageIDs != null && m.messageIDs.length) {\n for (var i = 0; i < m.messageIDs.length; ++i)\n w.uint32(10).bytes(m.messageIDs[i]);\n }\n return w;\n };\n\n /**\n * Decodes a ControlIWant message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.ControlIWant\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.ControlIWant} ControlIWant\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ControlIWant.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.ControlIWant();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!(m.messageIDs && m.messageIDs.length))\n m.messageIDs = [];\n m.messageIDs.push(r.bytes());\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a ControlIWant message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.ControlIWant\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.ControlIWant} ControlIWant\n */\n ControlIWant.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.ControlIWant)\n return d;\n var m = new $root.RPC.ControlIWant();\n if (d.messageIDs) {\n if (!Array.isArray(d.messageIDs))\n throw TypeError(\".RPC.ControlIWant.messageIDs: array expected\");\n m.messageIDs = [];\n for (var i = 0; i < d.messageIDs.length; ++i) {\n if (typeof d.messageIDs[i] === \"string\")\n $util.base64.decode(d.messageIDs[i], m.messageIDs[i] = $util.newBuffer($util.base64.length(d.messageIDs[i])), 0);\n else if (d.messageIDs[i].length)\n m.messageIDs[i] = d.messageIDs[i];\n }\n }\n return m;\n };\n\n /**\n * Creates a plain object from a ControlIWant message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.ControlIWant\n * @static\n * @param {RPC.ControlIWant} m ControlIWant\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n ControlIWant.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.arrays || o.defaults) {\n d.messageIDs = [];\n }\n if (m.messageIDs && m.messageIDs.length) {\n d.messageIDs = [];\n for (var j = 0; j < m.messageIDs.length; ++j) {\n d.messageIDs[j] = o.bytes === String ? $util.base64.encode(m.messageIDs[j], 0, m.messageIDs[j].length) : o.bytes === Array ? Array.prototype.slice.call(m.messageIDs[j]) : m.messageIDs[j];\n }\n }\n return d;\n };\n\n /**\n * Converts this ControlIWant to JSON.\n * @function toJSON\n * @memberof RPC.ControlIWant\n * @instance\n * @returns {Object.} JSON object\n */\n ControlIWant.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ControlIWant;\n })();\n\n RPC.ControlGraft = (function() {\n\n /**\n * Properties of a ControlGraft.\n * @memberof RPC\n * @interface IControlGraft\n * @property {string|null} [topicID] ControlGraft topicID\n */\n\n /**\n * Constructs a new ControlGraft.\n * @memberof RPC\n * @classdesc Represents a ControlGraft.\n * @implements IControlGraft\n * @constructor\n * @param {RPC.IControlGraft=} [p] Properties to set\n */\n function ControlGraft(p) {\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * ControlGraft topicID.\n * @member {string|null|undefined} topicID\n * @memberof RPC.ControlGraft\n * @instance\n */\n ControlGraft.prototype.topicID = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * ControlGraft _topicID.\n * @member {\"topicID\"|undefined} _topicID\n * @memberof RPC.ControlGraft\n * @instance\n */\n Object.defineProperty(ControlGraft.prototype, \"_topicID\", {\n get: $util.oneOfGetter($oneOfFields = [\"topicID\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified ControlGraft message. Does not implicitly {@link RPC.ControlGraft.verify|verify} messages.\n * @function encode\n * @memberof RPC.ControlGraft\n * @static\n * @param {RPC.IControlGraft} m ControlGraft message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ControlGraft.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.topicID != null && Object.hasOwnProperty.call(m, \"topicID\"))\n w.uint32(10).string(m.topicID);\n return w;\n };\n\n /**\n * Decodes a ControlGraft message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.ControlGraft\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.ControlGraft} ControlGraft\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ControlGraft.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.ControlGraft();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a ControlGraft message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.ControlGraft\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.ControlGraft} ControlGraft\n */\n ControlGraft.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.ControlGraft)\n return d;\n var m = new $root.RPC.ControlGraft();\n if (d.topicID != null) {\n m.topicID = String(d.topicID);\n }\n return m;\n };\n\n /**\n * Creates a plain object from a ControlGraft message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.ControlGraft\n * @static\n * @param {RPC.ControlGraft} m ControlGraft\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n ControlGraft.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (m.topicID != null && m.hasOwnProperty(\"topicID\")) {\n d.topicID = m.topicID;\n if (o.oneofs)\n d._topicID = \"topicID\";\n }\n return d;\n };\n\n /**\n * Converts this ControlGraft to JSON.\n * @function toJSON\n * @memberof RPC.ControlGraft\n * @instance\n * @returns {Object.} JSON object\n */\n ControlGraft.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ControlGraft;\n })();\n\n RPC.ControlPrune = (function() {\n\n /**\n * Properties of a ControlPrune.\n * @memberof RPC\n * @interface IControlPrune\n * @property {string|null} [topicID] ControlPrune topicID\n * @property {Array.|null} [peers] ControlPrune peers\n * @property {number|null} [backoff] ControlPrune backoff\n */\n\n /**\n * Constructs a new ControlPrune.\n * @memberof RPC\n * @classdesc Represents a ControlPrune.\n * @implements IControlPrune\n * @constructor\n * @param {RPC.IControlPrune=} [p] Properties to set\n */\n function ControlPrune(p) {\n this.peers = [];\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * ControlPrune topicID.\n * @member {string|null|undefined} topicID\n * @memberof RPC.ControlPrune\n * @instance\n */\n ControlPrune.prototype.topicID = null;\n\n /**\n * ControlPrune peers.\n * @member {Array.} peers\n * @memberof RPC.ControlPrune\n * @instance\n */\n ControlPrune.prototype.peers = $util.emptyArray;\n\n /**\n * ControlPrune backoff.\n * @member {number|null|undefined} backoff\n * @memberof RPC.ControlPrune\n * @instance\n */\n ControlPrune.prototype.backoff = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * ControlPrune _topicID.\n * @member {\"topicID\"|undefined} _topicID\n * @memberof RPC.ControlPrune\n * @instance\n */\n Object.defineProperty(ControlPrune.prototype, \"_topicID\", {\n get: $util.oneOfGetter($oneOfFields = [\"topicID\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * ControlPrune _backoff.\n * @member {\"backoff\"|undefined} _backoff\n * @memberof RPC.ControlPrune\n * @instance\n */\n Object.defineProperty(ControlPrune.prototype, \"_backoff\", {\n get: $util.oneOfGetter($oneOfFields = [\"backoff\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified ControlPrune message. Does not implicitly {@link RPC.ControlPrune.verify|verify} messages.\n * @function encode\n * @memberof RPC.ControlPrune\n * @static\n * @param {RPC.IControlPrune} m ControlPrune message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ControlPrune.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.topicID != null && Object.hasOwnProperty.call(m, \"topicID\"))\n w.uint32(10).string(m.topicID);\n if (m.peers != null && m.peers.length) {\n for (var i = 0; i < m.peers.length; ++i)\n $root.RPC.PeerInfo.encode(m.peers[i], w.uint32(18).fork()).ldelim();\n }\n if (m.backoff != null && Object.hasOwnProperty.call(m, \"backoff\"))\n w.uint32(24).uint64(m.backoff);\n return w;\n };\n\n /**\n * Decodes a ControlPrune message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.ControlPrune\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.ControlPrune} ControlPrune\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ControlPrune.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.ControlPrune();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n case 2:\n if (!(m.peers && m.peers.length))\n m.peers = [];\n m.peers.push($root.RPC.PeerInfo.decode(r, r.uint32()));\n break;\n case 3:\n m.backoff = r.uint64();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a ControlPrune message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.ControlPrune\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.ControlPrune} ControlPrune\n */\n ControlPrune.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.ControlPrune)\n return d;\n var m = new $root.RPC.ControlPrune();\n if (d.topicID != null) {\n m.topicID = String(d.topicID);\n }\n if (d.peers) {\n if (!Array.isArray(d.peers))\n throw TypeError(\".RPC.ControlPrune.peers: array expected\");\n m.peers = [];\n for (var i = 0; i < d.peers.length; ++i) {\n if (typeof d.peers[i] !== \"object\")\n throw TypeError(\".RPC.ControlPrune.peers: object expected\");\n m.peers[i] = $root.RPC.PeerInfo.fromObject(d.peers[i]);\n }\n }\n if (d.backoff != null) {\n if ($util.Long)\n (m.backoff = $util.Long.fromValue(d.backoff)).unsigned = true;\n else if (typeof d.backoff === \"string\")\n m.backoff = parseInt(d.backoff, 10);\n else if (typeof d.backoff === \"number\")\n m.backoff = d.backoff;\n else if (typeof d.backoff === \"object\")\n m.backoff = new $util.LongBits(d.backoff.low >>> 0, d.backoff.high >>> 0).toNumber(true);\n }\n return m;\n };\n\n /**\n * Creates a plain object from a ControlPrune message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.ControlPrune\n * @static\n * @param {RPC.ControlPrune} m ControlPrune\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n ControlPrune.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.arrays || o.defaults) {\n d.peers = [];\n }\n if (m.topicID != null && m.hasOwnProperty(\"topicID\")) {\n d.topicID = m.topicID;\n if (o.oneofs)\n d._topicID = \"topicID\";\n }\n if (m.peers && m.peers.length) {\n d.peers = [];\n for (var j = 0; j < m.peers.length; ++j) {\n d.peers[j] = $root.RPC.PeerInfo.toObject(m.peers[j], o);\n }\n }\n if (m.backoff != null && m.hasOwnProperty(\"backoff\")) {\n if (typeof m.backoff === \"number\")\n d.backoff = o.longs === String ? String(m.backoff) : m.backoff;\n else\n d.backoff = o.longs === String ? $util.Long.prototype.toString.call(m.backoff) : o.longs === Number ? new $util.LongBits(m.backoff.low >>> 0, m.backoff.high >>> 0).toNumber(true) : m.backoff;\n if (o.oneofs)\n d._backoff = \"backoff\";\n }\n return d;\n };\n\n /**\n * Converts this ControlPrune to JSON.\n * @function toJSON\n * @memberof RPC.ControlPrune\n * @instance\n * @returns {Object.} JSON object\n */\n ControlPrune.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ControlPrune;\n })();\n\n RPC.PeerInfo = (function() {\n\n /**\n * Properties of a PeerInfo.\n * @memberof RPC\n * @interface IPeerInfo\n * @property {Uint8Array|null} [peerID] PeerInfo peerID\n * @property {Uint8Array|null} [signedPeerRecord] PeerInfo signedPeerRecord\n */\n\n /**\n * Constructs a new PeerInfo.\n * @memberof RPC\n * @classdesc Represents a PeerInfo.\n * @implements IPeerInfo\n * @constructor\n * @param {RPC.IPeerInfo=} [p] Properties to set\n */\n function PeerInfo(p) {\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * PeerInfo peerID.\n * @member {Uint8Array|null|undefined} peerID\n * @memberof RPC.PeerInfo\n * @instance\n */\n PeerInfo.prototype.peerID = null;\n\n /**\n * PeerInfo signedPeerRecord.\n * @member {Uint8Array|null|undefined} signedPeerRecord\n * @memberof RPC.PeerInfo\n * @instance\n */\n PeerInfo.prototype.signedPeerRecord = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * PeerInfo _peerID.\n * @member {\"peerID\"|undefined} _peerID\n * @memberof RPC.PeerInfo\n * @instance\n */\n Object.defineProperty(PeerInfo.prototype, \"_peerID\", {\n get: $util.oneOfGetter($oneOfFields = [\"peerID\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * PeerInfo _signedPeerRecord.\n * @member {\"signedPeerRecord\"|undefined} _signedPeerRecord\n * @memberof RPC.PeerInfo\n * @instance\n */\n Object.defineProperty(PeerInfo.prototype, \"_signedPeerRecord\", {\n get: $util.oneOfGetter($oneOfFields = [\"signedPeerRecord\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified PeerInfo message. Does not implicitly {@link RPC.PeerInfo.verify|verify} messages.\n * @function encode\n * @memberof RPC.PeerInfo\n * @static\n * @param {RPC.IPeerInfo} m PeerInfo message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PeerInfo.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.peerID != null && Object.hasOwnProperty.call(m, \"peerID\"))\n w.uint32(10).bytes(m.peerID);\n if (m.signedPeerRecord != null && Object.hasOwnProperty.call(m, \"signedPeerRecord\"))\n w.uint32(18).bytes(m.signedPeerRecord);\n return w;\n };\n\n /**\n * Decodes a PeerInfo message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.PeerInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.PeerInfo} PeerInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PeerInfo.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.PeerInfo();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.peerID = r.bytes();\n break;\n case 2:\n m.signedPeerRecord = r.bytes();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a PeerInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.PeerInfo\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.PeerInfo} PeerInfo\n */\n PeerInfo.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.PeerInfo)\n return d;\n var m = new $root.RPC.PeerInfo();\n if (d.peerID != null) {\n if (typeof d.peerID === \"string\")\n $util.base64.decode(d.peerID, m.peerID = $util.newBuffer($util.base64.length(d.peerID)), 0);\n else if (d.peerID.length)\n m.peerID = d.peerID;\n }\n if (d.signedPeerRecord != null) {\n if (typeof d.signedPeerRecord === \"string\")\n $util.base64.decode(d.signedPeerRecord, m.signedPeerRecord = $util.newBuffer($util.base64.length(d.signedPeerRecord)), 0);\n else if (d.signedPeerRecord.length)\n m.signedPeerRecord = d.signedPeerRecord;\n }\n return m;\n };\n\n /**\n * Creates a plain object from a PeerInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.PeerInfo\n * @static\n * @param {RPC.PeerInfo} m PeerInfo\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n PeerInfo.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (m.peerID != null && m.hasOwnProperty(\"peerID\")) {\n d.peerID = o.bytes === String ? $util.base64.encode(m.peerID, 0, m.peerID.length) : o.bytes === Array ? Array.prototype.slice.call(m.peerID) : m.peerID;\n if (o.oneofs)\n d._peerID = \"peerID\";\n }\n if (m.signedPeerRecord != null && m.hasOwnProperty(\"signedPeerRecord\")) {\n d.signedPeerRecord = o.bytes === String ? $util.base64.encode(m.signedPeerRecord, 0, m.signedPeerRecord.length) : o.bytes === Array ? Array.prototype.slice.call(m.signedPeerRecord) : m.signedPeerRecord;\n if (o.oneofs)\n d._signedPeerRecord = \"signedPeerRecord\";\n }\n return d;\n };\n\n /**\n * Converts this PeerInfo to JSON.\n * @function toJSON\n * @memberof RPC.PeerInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PeerInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PeerInfo;\n })();\n\n return RPC;\n })();\n\n return $root;\n});\n","import cjs from \"./rpc.cjs\"\n\nexport const {RPC} = cjs\n","export class MessageCache {\n gossip;\n msgs = new Map();\n msgIdToStrFn;\n history = [];\n /** Track with accounting of messages in the mcache that are not yet validated */\n notValidatedCount = 0;\n /**\n * Holds history of messages in timebounded history arrays\n */\n constructor(\n /**\n * The number of indices in the cache history used for gossiping. That means that a message\n * won't get gossiped anymore when shift got called `gossip` many times after inserting the\n * message in the cache.\n */\n gossip, historyCapacity, msgIdToStrFn) {\n this.gossip = gossip;\n this.msgIdToStrFn = msgIdToStrFn;\n for (let i = 0; i < historyCapacity; i++) {\n this.history[i] = [];\n }\n }\n get size() {\n return this.msgs.size;\n }\n /**\n * Adds a message to the current window and the cache\n * Returns true if the message is not known and is inserted in the cache\n */\n put(messageId, msg, validated = false) {\n const { msgIdStr } = messageId;\n // Don't add duplicate entries to the cache.\n if (this.msgs.has(msgIdStr)) {\n return false;\n }\n this.msgs.set(msgIdStr, {\n message: msg,\n validated,\n originatingPeers: new Set(),\n iwantCounts: new Map()\n });\n this.history[0].push({ ...messageId, topic: msg.topic });\n if (!validated) {\n this.notValidatedCount++;\n }\n return true;\n }\n observeDuplicate(msgId, fromPeerIdStr) {\n const entry = this.msgs.get(msgId);\n if ((entry != null) &&\n // if the message is already validated, we don't need to store extra peers sending us\n // duplicates as the message has already been forwarded\n !entry.validated) {\n entry.originatingPeers.add(fromPeerIdStr);\n }\n }\n /**\n * Retrieves a message from the cache by its ID, if it is still present\n */\n get(msgId) {\n return this.msgs.get(this.msgIdToStrFn(msgId))?.message;\n }\n /**\n * Increases the iwant count for the given message by one and returns the message together\n * with the iwant if the message exists.\n */\n getWithIWantCount(msgIdStr, p) {\n const msg = this.msgs.get(msgIdStr);\n if (msg == null) {\n return null;\n }\n const count = (msg.iwantCounts.get(p) ?? 0) + 1;\n msg.iwantCounts.set(p, count);\n return { msg: msg.message, count };\n }\n /**\n * Retrieves a list of message IDs for a set of topics\n */\n getGossipIDs(topics) {\n const msgIdsByTopic = new Map();\n for (let i = 0; i < this.gossip; i++) {\n this.history[i].forEach((entry) => {\n const msg = this.msgs.get(entry.msgIdStr);\n if ((msg?.validated ?? false) && topics.has(entry.topic)) {\n let msgIds = msgIdsByTopic.get(entry.topic);\n if (msgIds == null) {\n msgIds = [];\n msgIdsByTopic.set(entry.topic, msgIds);\n }\n msgIds.push(entry.msgId);\n }\n });\n }\n return msgIdsByTopic;\n }\n /**\n * Gets a message with msgId and tags it as validated.\n * This function also returns the known peers that have sent us this message. This is used to\n * prevent us sending redundant messages to peers who have already propagated it.\n */\n validate(msgId) {\n const entry = this.msgs.get(msgId);\n if (entry == null) {\n return null;\n }\n if (!entry.validated) {\n this.notValidatedCount--;\n }\n const { message, originatingPeers } = entry;\n entry.validated = true;\n // Clear the known peers list (after a message is validated, it is forwarded and we no\n // longer need to store the originating peers).\n entry.originatingPeers = new Set();\n return { message, originatingPeers };\n }\n /**\n * Shifts the current window, discarding messages older than this.history.length of the cache\n */\n shift() {\n const lastCacheEntries = this.history[this.history.length - 1];\n lastCacheEntries.forEach((cacheEntry) => {\n const entry = this.msgs.get(cacheEntry.msgIdStr);\n if (entry != null) {\n this.msgs.delete(cacheEntry.msgIdStr);\n if (!entry.validated) {\n this.notValidatedCount--;\n }\n }\n });\n this.history.pop();\n this.history.unshift([]);\n }\n remove(msgId) {\n const entry = this.msgs.get(msgId);\n if (entry == null) {\n return null;\n }\n // Keep the message on the history vector, it will be dropped on a shift()\n this.msgs.delete(msgId);\n return entry;\n }\n}\n//# sourceMappingURL=message-cache.js.map","import { TopicValidatorResult } from '@libp2p/interface';\nexport var SignaturePolicy;\n(function (SignaturePolicy) {\n /**\n * On the producing side:\n * - Build messages with the signature, key (from may be enough for certain inlineable public key types), from and seqno fields.\n *\n * On the consuming side:\n * - Enforce the fields to be present, reject otherwise.\n * - Propagate only if the fields are valid and signature can be verified, reject otherwise.\n */\n SignaturePolicy[\"StrictSign\"] = \"StrictSign\";\n /**\n * On the producing side:\n * - Build messages without the signature, key, from and seqno fields.\n * - The corresponding protobuf key-value pairs are absent from the marshalled message, not just empty.\n *\n * On the consuming side:\n * - Enforce the fields to be absent, reject otherwise.\n * - Propagate only if the fields are absent, reject otherwise.\n * - A message_id function will not be able to use the above fields, and should instead rely on the data field. A commonplace strategy is to calculate a hash.\n */\n SignaturePolicy[\"StrictNoSign\"] = \"StrictNoSign\";\n})(SignaturePolicy || (SignaturePolicy = {}));\nexport var PublishConfigType;\n(function (PublishConfigType) {\n PublishConfigType[PublishConfigType[\"Signing\"] = 0] = \"Signing\";\n PublishConfigType[PublishConfigType[\"Anonymous\"] = 1] = \"Anonymous\";\n})(PublishConfigType || (PublishConfigType = {}));\nexport var RejectReason;\n(function (RejectReason) {\n /**\n * The message failed the configured validation during decoding.\n * SelfOrigin is considered a ValidationError\n */\n RejectReason[\"Error\"] = \"error\";\n /**\n * Custom validator fn reported status IGNORE.\n */\n RejectReason[\"Ignore\"] = \"ignore\";\n /**\n * Custom validator fn reported status REJECT.\n */\n RejectReason[\"Reject\"] = \"reject\";\n /**\n * The peer that sent the message OR the source from field is blacklisted.\n * Causes messages to be ignored, not penalized, neither do score record creation.\n */\n RejectReason[\"Blacklisted\"] = \"blacklisted\";\n})(RejectReason || (RejectReason = {}));\nexport var ValidateError;\n(function (ValidateError) {\n /// The message has an invalid signature,\n ValidateError[\"InvalidSignature\"] = \"invalid_signature\";\n /// The sequence number was the incorrect size\n ValidateError[\"InvalidSeqno\"] = \"invalid_seqno\";\n /// The PeerId was invalid\n ValidateError[\"InvalidPeerId\"] = \"invalid_peerid\";\n /// Signature existed when validation has been sent to\n /// [`crate::behaviour::MessageAuthenticity::Anonymous`].\n ValidateError[\"SignaturePresent\"] = \"signature_present\";\n /// Sequence number existed when validation has been sent to\n /// [`crate::behaviour::MessageAuthenticity::Anonymous`].\n ValidateError[\"SeqnoPresent\"] = \"seqno_present\";\n /// Message source existed when validation has been sent to\n /// [`crate::behaviour::MessageAuthenticity::Anonymous`].\n ValidateError[\"FromPresent\"] = \"from_present\";\n /// The data transformation failed.\n ValidateError[\"TransformFailed\"] = \"transform_failed\";\n})(ValidateError || (ValidateError = {}));\nexport var MessageStatus;\n(function (MessageStatus) {\n MessageStatus[\"duplicate\"] = \"duplicate\";\n MessageStatus[\"invalid\"] = \"invalid\";\n MessageStatus[\"valid\"] = \"valid\";\n})(MessageStatus || (MessageStatus = {}));\n/**\n * Typesafe conversion of MessageAcceptance -> RejectReason. TS ensures all values covered\n */\nexport function rejectReasonFromAcceptance(acceptance) {\n switch (acceptance) {\n case TopicValidatorResult.Ignore:\n return RejectReason.Ignore;\n case TopicValidatorResult.Reject:\n return RejectReason.Reject;\n default:\n throw new Error('Unreachable');\n }\n}\n//# sourceMappingURL=types.js.map","import { TopicValidatorResult } from '@libp2p/interface';\nimport { MessageStatus, RejectReason } from './types.js';\nexport var MessageSource;\n(function (MessageSource) {\n MessageSource[\"forward\"] = \"forward\";\n MessageSource[\"publish\"] = \"publish\";\n})(MessageSource || (MessageSource = {}));\nexport var InclusionReason;\n(function (InclusionReason) {\n /** Peer was a fanaout peer. */\n InclusionReason[\"Fanout\"] = \"fanout\";\n /** Included from random selection. */\n InclusionReason[\"Random\"] = \"random\";\n /** Peer subscribed. */\n InclusionReason[\"Subscribed\"] = \"subscribed\";\n /** On heartbeat, peer was included to fill the outbound quota. */\n InclusionReason[\"Outbound\"] = \"outbound\";\n /** On heartbeat, not enough peers in mesh */\n InclusionReason[\"NotEnough\"] = \"not_enough\";\n /** On heartbeat opportunistic grafting due to low mesh score */\n InclusionReason[\"Opportunistic\"] = \"opportunistic\";\n})(InclusionReason || (InclusionReason = {}));\n/// Reasons why a peer was removed from the mesh.\nexport var ChurnReason;\n(function (ChurnReason) {\n /// Peer disconnected.\n ChurnReason[\"Dc\"] = \"disconnected\";\n /// Peer had a bad score.\n ChurnReason[\"BadScore\"] = \"bad_score\";\n /// Peer sent a PRUNE.\n ChurnReason[\"Prune\"] = \"prune\";\n /// Too many peers.\n ChurnReason[\"Excess\"] = \"excess\";\n})(ChurnReason || (ChurnReason = {}));\n/// Kinds of reasons a peer's score has been penalized\nexport var ScorePenalty;\n(function (ScorePenalty) {\n /// A peer grafted before waiting the back-off time.\n ScorePenalty[\"GraftBackoff\"] = \"graft_backoff\";\n /// A Peer did not respond to an IWANT request in time.\n ScorePenalty[\"BrokenPromise\"] = \"broken_promise\";\n /// A Peer did not send enough messages as expected.\n ScorePenalty[\"MessageDeficit\"] = \"message_deficit\";\n /// Too many peers under one IP address.\n ScorePenalty[\"IPColocation\"] = \"IP_colocation\";\n})(ScorePenalty || (ScorePenalty = {}));\nexport var IHaveIgnoreReason;\n(function (IHaveIgnoreReason) {\n IHaveIgnoreReason[\"LowScore\"] = \"low_score\";\n IHaveIgnoreReason[\"MaxIhave\"] = \"max_ihave\";\n IHaveIgnoreReason[\"MaxIasked\"] = \"max_iasked\";\n})(IHaveIgnoreReason || (IHaveIgnoreReason = {}));\nexport var ScoreThreshold;\n(function (ScoreThreshold) {\n ScoreThreshold[\"graylist\"] = \"graylist\";\n ScoreThreshold[\"publish\"] = \"publish\";\n ScoreThreshold[\"gossip\"] = \"gossip\";\n ScoreThreshold[\"mesh\"] = \"mesh\";\n})(ScoreThreshold || (ScoreThreshold = {}));\n/**\n * A collection of metrics used throughout the Gossipsub behaviour.\n * NOTE: except for special reasons, do not add more than 1 label for frequent metrics,\n * there's a performance penalty as of June 2023.\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type\nexport function getMetrics(register, topicStrToLabel, opts) {\n // Using function style instead of class to prevent having to re-declare all MetricsPrometheus types.\n return {\n /* Metrics for static config */\n protocolsEnabled: register.gauge({\n name: 'gossipsub_protocol',\n help: 'Status of enabled protocols',\n labelNames: ['protocol']\n }),\n /* Metrics per known topic */\n /**\n * Status of our subscription to this topic. This metric allows analyzing other topic metrics\n * filtered by our current subscription status.\n * = rust-libp2p `topic_subscription_status` */\n topicSubscriptionStatus: register.gauge({\n name: 'gossipsub_topic_subscription_status',\n help: 'Status of our subscription to this topic',\n labelNames: ['topicStr']\n }),\n /** Number of peers subscribed to each topic. This allows us to analyze a topic's behaviour\n * regardless of our subscription status. */\n topicPeersCount: register.gauge({\n name: 'gossipsub_topic_peer_count',\n help: 'Number of peers subscribed to each topic',\n labelNames: ['topicStr']\n }),\n /* Metrics regarding mesh state */\n /**\n * Number of peers in our mesh. This metric should be updated with the count of peers for a\n * topic in the mesh regardless of inclusion and churn events.\n * = rust-libp2p `mesh_peer_counts` */\n meshPeerCounts: register.gauge({\n name: 'gossipsub_mesh_peer_count',\n help: 'Number of peers in our mesh',\n labelNames: ['topicStr']\n }),\n /**\n * Number of times we include peers in a topic mesh for different reasons.\n * = rust-libp2p `mesh_peer_inclusion_events` */\n meshPeerInclusionEventsFanout: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_fanout_total',\n help: 'Number of times we include peers in a topic mesh for fanout reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsRandom: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_random_total',\n help: 'Number of times we include peers in a topic mesh for random reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsSubscribed: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_subscribed_total',\n help: 'Number of times we include peers in a topic mesh for subscribed reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsOutbound: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_outbound_total',\n help: 'Number of times we include peers in a topic mesh for outbound reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsNotEnough: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_not_enough_total',\n help: 'Number of times we include peers in a topic mesh for not_enough reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsOpportunistic: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_opportunistic_total',\n help: 'Number of times we include peers in a topic mesh for opportunistic reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsUnknown: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_unknown_total',\n help: 'Number of times we include peers in a topic mesh for unknown reasons',\n labelNames: ['topic']\n }),\n /**\n * Number of times we remove peers in a topic mesh for different reasons.\n * = rust-libp2p `mesh_peer_churn_events` */\n meshPeerChurnEventsDisconnected: register.gauge({\n name: 'gossipsub_peer_churn_events_disconnected_total',\n help: 'Number of times we remove peers in a topic mesh for disconnected reasons',\n labelNames: ['topic']\n }),\n meshPeerChurnEventsBadScore: register.gauge({\n name: 'gossipsub_peer_churn_events_bad_score_total',\n help: 'Number of times we remove peers in a topic mesh for bad_score reasons',\n labelNames: ['topic']\n }),\n meshPeerChurnEventsPrune: register.gauge({\n name: 'gossipsub_peer_churn_events_prune_total',\n help: 'Number of times we remove peers in a topic mesh for prune reasons',\n labelNames: ['topic']\n }),\n meshPeerChurnEventsExcess: register.gauge({\n name: 'gossipsub_peer_churn_events_excess_total',\n help: 'Number of times we remove peers in a topic mesh for excess reasons',\n labelNames: ['topic']\n }),\n meshPeerChurnEventsUnknown: register.gauge({\n name: 'gossipsub_peer_churn_events_unknown_total',\n help: 'Number of times we remove peers in a topic mesh for unknown reasons',\n labelNames: ['topic']\n }),\n /* General Metrics */\n /**\n * Gossipsub supports floodsub, gossipsub v1.0 and gossipsub v1.1. Peers are classified based\n * on which protocol they support. This metric keeps track of the number of peers that are\n * connected of each type. */\n peersPerProtocol: register.gauge({\n name: 'gossipsub_peers_per_protocol_count',\n help: 'Peers connected for each topic',\n labelNames: ['protocol']\n }),\n /** The time it takes to complete one iteration of the heartbeat. */\n heartbeatDuration: register.histogram({\n name: 'gossipsub_heartbeat_duration_seconds',\n help: 'The time it takes to complete one iteration of the heartbeat',\n // Should take <10ms, over 1s it's a huge issue that needs debugging, since a heartbeat will be cancelled\n buckets: [0.01, 0.1, 1]\n }),\n /** Heartbeat run took longer than heartbeat interval so next is skipped */\n heartbeatSkipped: register.gauge({\n name: 'gossipsub_heartbeat_skipped',\n help: 'Heartbeat run took longer than heartbeat interval so next is skipped'\n }),\n /**\n * Message validation results for each topic.\n * Invalid == Reject?\n * = rust-libp2p `invalid_messages`, `accepted_messages`, `ignored_messages`, `rejected_messages` */\n acceptedMessagesTotal: register.gauge({\n name: 'gossipsub_accepted_messages_total',\n help: 'Total accepted messages for each topic',\n labelNames: ['topic']\n }),\n ignoredMessagesTotal: register.gauge({\n name: 'gossipsub_ignored_messages_total',\n help: 'Total ignored messages for each topic',\n labelNames: ['topic']\n }),\n rejectedMessagesTotal: register.gauge({\n name: 'gossipsub_rejected_messages_total',\n help: 'Total rejected messages for each topic',\n labelNames: ['topic']\n }),\n unknownValidationResultsTotal: register.gauge({\n name: 'gossipsub_unknown_validation_results_total',\n help: 'Total unknown validation results for each topic',\n labelNames: ['topic']\n }),\n /**\n * When the user validates a message, it tries to re propagate it to its mesh peers. If the\n * message expires from the memcache before it can be validated, we count this a cache miss\n * and it is an indicator that the memcache size should be increased.\n * = rust-libp2p `mcache_misses` */\n asyncValidationMcacheHit: register.gauge({\n name: 'gossipsub_async_validation_mcache_hit_total',\n help: 'Async validation result reported by the user layer',\n labelNames: ['hit']\n }),\n asyncValidationDelayFromFirstSeenSec: register.histogram({\n name: 'gossipsub_async_validation_delay_from_first_seen',\n help: 'Async validation report delay from first seen in second',\n buckets: [0.01, 0.03, 0.1, 0.3, 1, 3, 10]\n }),\n asyncValidationUnknownFirstSeen: register.gauge({\n name: 'gossipsub_async_validation_unknown_first_seen_count_total',\n help: 'Async validation report unknown first seen value for message'\n }),\n // peer stream\n peerReadStreamError: register.gauge({\n name: 'gossipsub_peer_read_stream_err_count_total',\n help: 'Peer read stream error'\n }),\n // RPC outgoing. Track byte length + data structure sizes\n rpcRecvBytes: register.gauge({ name: 'gossipsub_rpc_recv_bytes_total', help: 'RPC recv' }),\n rpcRecvCount: register.gauge({ name: 'gossipsub_rpc_recv_count_total', help: 'RPC recv' }),\n rpcRecvSubscription: register.gauge({ name: 'gossipsub_rpc_recv_subscription_total', help: 'RPC recv' }),\n rpcRecvMessage: register.gauge({ name: 'gossipsub_rpc_recv_message_total', help: 'RPC recv' }),\n rpcRecvControl: register.gauge({ name: 'gossipsub_rpc_recv_control_total', help: 'RPC recv' }),\n rpcRecvIHave: register.gauge({ name: 'gossipsub_rpc_recv_ihave_total', help: 'RPC recv' }),\n rpcRecvIWant: register.gauge({ name: 'gossipsub_rpc_recv_iwant_total', help: 'RPC recv' }),\n rpcRecvGraft: register.gauge({ name: 'gossipsub_rpc_recv_graft_total', help: 'RPC recv' }),\n rpcRecvPrune: register.gauge({ name: 'gossipsub_rpc_recv_prune_total', help: 'RPC recv' }),\n rpcDataError: register.gauge({ name: 'gossipsub_rpc_data_err_count_total', help: 'RPC data error' }),\n rpcRecvError: register.gauge({ name: 'gossipsub_rpc_recv_err_count_total', help: 'RPC recv error' }),\n /** Total count of RPC dropped because acceptFrom() == false */\n rpcRecvNotAccepted: register.gauge({\n name: 'gossipsub_rpc_rcv_not_accepted_total',\n help: 'Total count of RPC dropped because acceptFrom() == false'\n }),\n // RPC incoming. Track byte length + data structure sizes\n rpcSentBytes: register.gauge({ name: 'gossipsub_rpc_sent_bytes_total', help: 'RPC sent' }),\n rpcSentCount: register.gauge({ name: 'gossipsub_rpc_sent_count_total', help: 'RPC sent' }),\n rpcSentSubscription: register.gauge({ name: 'gossipsub_rpc_sent_subscription_total', help: 'RPC sent' }),\n rpcSentMessage: register.gauge({ name: 'gossipsub_rpc_sent_message_total', help: 'RPC sent' }),\n rpcSentControl: register.gauge({ name: 'gossipsub_rpc_sent_control_total', help: 'RPC sent' }),\n rpcSentIHave: register.gauge({ name: 'gossipsub_rpc_sent_ihave_total', help: 'RPC sent' }),\n rpcSentIWant: register.gauge({ name: 'gossipsub_rpc_sent_iwant_total', help: 'RPC sent' }),\n rpcSentGraft: register.gauge({ name: 'gossipsub_rpc_sent_graft_total', help: 'RPC sent' }),\n rpcSentPrune: register.gauge({ name: 'gossipsub_rpc_sent_prune_total', help: 'RPC sent' }),\n // publish message. Track peers sent to and bytes\n /** Total count of msg published by topic */\n msgPublishCount: register.gauge({\n name: 'gossipsub_msg_publish_count_total',\n help: 'Total count of msg published by topic',\n labelNames: ['topic']\n }),\n /** Total count of peers that we publish a msg to */\n msgPublishPeersByTopic: register.gauge({\n name: 'gossipsub_msg_publish_peers_total',\n help: 'Total count of peers that we publish a msg to',\n labelNames: ['topic']\n }),\n /** Total count of peers (by group) that we publish a msg to */\n directPeersPublishedTotal: register.gauge({\n name: 'gossipsub_direct_peers_published_total',\n help: 'Total direct peers that we publish a msg to',\n labelNames: ['topic']\n }),\n floodsubPeersPublishedTotal: register.gauge({\n name: 'gossipsub_floodsub_peers_published_total',\n help: 'Total floodsub peers that we publish a msg to',\n labelNames: ['topic']\n }),\n meshPeersPublishedTotal: register.gauge({\n name: 'gossipsub_mesh_peers_published_total',\n help: 'Total mesh peers that we publish a msg to',\n labelNames: ['topic']\n }),\n fanoutPeersPublishedTotal: register.gauge({\n name: 'gossipsub_fanout_peers_published_total',\n help: 'Total fanout peers that we publish a msg to',\n labelNames: ['topic']\n }),\n /** Total count of msg publish data.length bytes */\n msgPublishBytes: register.gauge({\n name: 'gossipsub_msg_publish_bytes_total',\n help: 'Total count of msg publish data.length bytes',\n labelNames: ['topic']\n }),\n /** Total time in seconds to publish a message */\n msgPublishTime: register.histogram({\n name: 'gossipsub_msg_publish_seconds',\n help: 'Total time in seconds to publish a message',\n buckets: [0.001, 0.002, 0.005, 0.01, 0.1, 0.5, 1],\n labelNames: ['topic']\n }),\n /** Total count of msg forwarded by topic */\n msgForwardCount: register.gauge({\n name: 'gossipsub_msg_forward_count_total',\n help: 'Total count of msg forwarded by topic',\n labelNames: ['topic']\n }),\n /** Total count of peers that we forward a msg to */\n msgForwardPeers: register.gauge({\n name: 'gossipsub_msg_forward_peers_total',\n help: 'Total count of peers that we forward a msg to',\n labelNames: ['topic']\n }),\n /** Total count of recv msgs before any validation */\n msgReceivedPreValidation: register.gauge({\n name: 'gossipsub_msg_received_prevalidation_total',\n help: 'Total count of recv msgs before any validation',\n labelNames: ['topic']\n }),\n /** Total count of recv msgs error */\n msgReceivedError: register.gauge({\n name: 'gossipsub_msg_received_error_total',\n help: 'Total count of recv msgs error',\n labelNames: ['topic']\n }),\n /** Tracks distribution of recv msgs by duplicate, invalid, valid */\n prevalidationInvalidTotal: register.gauge({\n name: 'gossipsub_pre_validation_invalid_total',\n help: 'Total count of invalid messages received',\n labelNames: ['topic']\n }),\n prevalidationValidTotal: register.gauge({\n name: 'gossipsub_pre_validation_valid_total',\n help: 'Total count of valid messages received',\n labelNames: ['topic']\n }),\n prevalidationDuplicateTotal: register.gauge({\n name: 'gossipsub_pre_validation_duplicate_total',\n help: 'Total count of duplicate messages received',\n labelNames: ['topic']\n }),\n prevalidationUnknownTotal: register.gauge({\n name: 'gossipsub_pre_validation_unknown_status_total',\n help: 'Total count of unknown_status messages received',\n labelNames: ['topic']\n }),\n /** Tracks specific reason of invalid */\n msgReceivedInvalid: register.gauge({\n name: 'gossipsub_msg_received_invalid_total',\n help: 'Tracks specific reason of invalid',\n labelNames: ['error']\n }),\n msgReceivedInvalidByTopic: register.gauge({\n name: 'gossipsub_msg_received_invalid_by_topic_total',\n help: 'Tracks specific invalid message by topic',\n labelNames: ['topic']\n }),\n /** Track duplicate message delivery time */\n duplicateMsgDeliveryDelay: register.histogram({\n name: 'gossisub_duplicate_msg_delivery_delay_seconds',\n help: 'Time since the 1st duplicated message validated',\n labelNames: ['topic'],\n buckets: [\n 0.25 * opts.maxMeshMessageDeliveriesWindowSec,\n 0.5 * opts.maxMeshMessageDeliveriesWindowSec,\n Number(opts.maxMeshMessageDeliveriesWindowSec),\n 2 * opts.maxMeshMessageDeliveriesWindowSec,\n 4 * opts.maxMeshMessageDeliveriesWindowSec\n ]\n }),\n /** Total count of late msg delivery total by topic */\n duplicateMsgLateDelivery: register.gauge({\n name: 'gossisub_duplicate_msg_late_delivery_total',\n help: 'Total count of late duplicate message delivery by topic, which triggers P3 penalty',\n labelNames: ['topic']\n }),\n duplicateMsgIgnored: register.gauge({\n name: 'gossisub_ignored_published_duplicate_msgs_total',\n help: 'Total count of published duplicate message ignored by topic',\n labelNames: ['topic']\n }),\n /* Metrics related to scoring */\n /** Total times score() is called */\n scoreFnCalls: register.gauge({\n name: 'gossipsub_score_fn_calls_total',\n help: 'Total times score() is called'\n }),\n /** Total times score() call actually computed computeScore(), no cache */\n scoreFnRuns: register.gauge({\n name: 'gossipsub_score_fn_runs_total',\n help: 'Total times score() call actually computed computeScore(), no cache'\n }),\n scoreCachedDelta: register.histogram({\n name: 'gossipsub_score_cache_delta',\n help: 'Delta of score between cached values that expired',\n buckets: [10, 100, 1000]\n }),\n /** Current count of peers by score threshold */\n peersByScoreThreshold: register.gauge({\n name: 'gossipsub_peers_by_score_threshold_count',\n help: 'Current count of peers by score threshold',\n labelNames: ['threshold']\n }),\n score: register.avgMinMax({\n name: 'gossipsub_score',\n help: 'Avg min max of gossip scores'\n }),\n /**\n * Separate score weights\n * Need to use 2-label metrics in this case to debug the score weights\n **/\n scoreWeights: register.avgMinMax({\n name: 'gossipsub_score_weights',\n help: 'Separate score weights',\n labelNames: ['topic', 'p']\n }),\n /** Histogram of the scores for each mesh topic. */\n // TODO: Not implemented\n scorePerMesh: register.avgMinMax({\n name: 'gossipsub_score_per_mesh',\n help: 'Histogram of the scores for each mesh topic',\n labelNames: ['topic']\n }),\n /** A counter of the kind of penalties being applied to peers. */\n // TODO: Not fully implemented\n scoringPenalties: register.gauge({\n name: 'gossipsub_scoring_penalties_total',\n help: 'A counter of the kind of penalties being applied to peers',\n labelNames: ['penalty']\n }),\n behaviourPenalty: register.histogram({\n name: 'gossipsub_peer_stat_behaviour_penalty',\n help: 'Current peer stat behaviour_penalty at each scrape',\n buckets: [\n 0.25 * opts.behaviourPenaltyThreshold,\n 0.5 * opts.behaviourPenaltyThreshold,\n Number(opts.behaviourPenaltyThreshold),\n 2 * opts.behaviourPenaltyThreshold,\n 4 * opts.behaviourPenaltyThreshold\n ]\n }),\n // TODO:\n // - iasked per peer (on heartbeat)\n // - when promise is resolved, track messages from promises\n /** Total received IHAVE messages that we ignore for some reason */\n ihaveRcvIgnored: register.gauge({\n name: 'gossipsub_ihave_rcv_ignored_total',\n help: 'Total received IHAVE messages that we ignore for some reason',\n labelNames: ['reason']\n }),\n /** Total received IHAVE messages by topic */\n ihaveRcvMsgids: register.gauge({\n name: 'gossipsub_ihave_rcv_msgids_total',\n help: 'Total received IHAVE messages by topic',\n labelNames: ['topic']\n }),\n /**\n * Total messages per topic we don't have. Not actual requests.\n * The number of times we have decided that an IWANT control message is required for this\n * topic. A very high metric might indicate an underperforming network.\n * = rust-libp2p `topic_iwant_msgs` */\n ihaveRcvNotSeenMsgids: register.gauge({\n name: 'gossipsub_ihave_rcv_not_seen_msgids_total',\n help: 'Total messages per topic we do not have, not actual requests',\n labelNames: ['topic']\n }),\n /** Total received IWANT messages by topic */\n iwantRcvMsgids: register.gauge({\n name: 'gossipsub_iwant_rcv_msgids_total',\n help: 'Total received IWANT messages by topic',\n labelNames: ['topic']\n }),\n /** Total requested messageIDs that we don't have */\n iwantRcvDonthaveMsgids: register.gauge({\n name: 'gossipsub_iwant_rcv_dont_have_msgids_total',\n help: 'Total requested messageIDs that we do not have'\n }),\n iwantPromiseStarted: register.gauge({\n name: 'gossipsub_iwant_promise_sent_total',\n help: 'Total count of started IWANT promises'\n }),\n /** Total count of resolved IWANT promises */\n iwantPromiseResolved: register.gauge({\n name: 'gossipsub_iwant_promise_resolved_total',\n help: 'Total count of resolved IWANT promises'\n }),\n /** Total count of resolved IWANT promises from duplicate messages */\n iwantPromiseResolvedFromDuplicate: register.gauge({\n name: 'gossipsub_iwant_promise_resolved_from_duplicate_total',\n help: 'Total count of resolved IWANT promises from duplicate messages'\n }),\n /** Total count of peers we have asked IWANT promises that are resolved */\n iwantPromiseResolvedPeers: register.gauge({\n name: 'gossipsub_iwant_promise_resolved_peers',\n help: 'Total count of peers we have asked IWANT promises that are resolved'\n }),\n iwantPromiseBroken: register.gauge({\n name: 'gossipsub_iwant_promise_broken',\n help: 'Total count of broken IWANT promises'\n }),\n iwantMessagePruned: register.gauge({\n name: 'gossipsub_iwant_message_pruned',\n help: 'Total count of pruned IWANT messages'\n }),\n /** Histogram of delivery time of resolved IWANT promises */\n iwantPromiseDeliveryTime: register.histogram({\n name: 'gossipsub_iwant_promise_delivery_seconds',\n help: 'Histogram of delivery time of resolved IWANT promises',\n buckets: [\n 0.5 * opts.gossipPromiseExpireSec,\n Number(opts.gossipPromiseExpireSec),\n 2 * opts.gossipPromiseExpireSec,\n 4 * opts.gossipPromiseExpireSec\n ]\n }),\n iwantPromiseUntracked: register.gauge({\n name: 'gossip_iwant_promise_untracked',\n help: 'Total count of untracked IWANT promise'\n }),\n /** Backoff time */\n connectedPeersBackoffSec: register.histogram({\n name: 'gossipsub_connected_peers_backoff_seconds',\n help: 'Backoff time in seconds',\n // Using 1 seconds as minimum as that's close to the heartbeat duration, no need for more resolution.\n // As per spec, backoff times are 10 seconds for UnsubscribeBackoff and 60 seconds for PruneBackoff.\n // Higher values of 60 seconds should not occur, but we add 120 seconds just in case\n // https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md#overview-of-new-parameters\n buckets: [1, 2, 4, 10, 20, 60, 120]\n }),\n /* Data structure sizes */\n /** Unbounded cache sizes */\n cacheSize: register.gauge({\n name: 'gossipsub_cache_size',\n help: 'Unbounded cache sizes',\n labelNames: ['cache']\n }),\n /** Current mcache msg count */\n mcacheSize: register.gauge({\n name: 'gossipsub_mcache_size',\n help: 'Current mcache msg count'\n }),\n mcacheNotValidatedCount: register.gauge({\n name: 'gossipsub_mcache_not_validated_count',\n help: 'Current mcache msg count not validated'\n }),\n fastMsgIdCacheCollision: register.gauge({\n name: 'gossipsub_fastmsgid_cache_collision_total',\n help: 'Total count of key collisions on fastmsgid cache put'\n }),\n newConnectionCount: register.gauge({\n name: 'gossipsub_new_connection_total',\n help: 'Total new connection by status',\n labelNames: ['status']\n }),\n topicStrToLabel,\n toTopic(topicStr) {\n return this.topicStrToLabel.get(topicStr) ?? topicStr;\n },\n /** We joined a topic */\n onJoin(topicStr) {\n this.topicSubscriptionStatus.set({ topicStr }, 1);\n this.meshPeerCounts.set({ topicStr }, 0); // Reset count\n },\n /** We left a topic */\n onLeave(topicStr) {\n this.topicSubscriptionStatus.set({ topicStr }, 0);\n this.meshPeerCounts.set({ topicStr }, 0); // Reset count\n },\n /** Register the inclusion of peers in our mesh due to some reason. */\n onAddToMesh(topicStr, reason, count) {\n const topic = this.toTopic(topicStr);\n switch (reason) {\n case InclusionReason.Fanout:\n this.meshPeerInclusionEventsFanout.inc({ topic }, count);\n break;\n case InclusionReason.Random:\n this.meshPeerInclusionEventsRandom.inc({ topic }, count);\n break;\n case InclusionReason.Subscribed:\n this.meshPeerInclusionEventsSubscribed.inc({ topic }, count);\n break;\n case InclusionReason.Outbound:\n this.meshPeerInclusionEventsOutbound.inc({ topic }, count);\n break;\n case InclusionReason.NotEnough:\n this.meshPeerInclusionEventsNotEnough.inc({ topic }, count);\n break;\n case InclusionReason.Opportunistic:\n this.meshPeerInclusionEventsOpportunistic.inc({ topic }, count);\n break;\n default:\n this.meshPeerInclusionEventsUnknown.inc({ topic }, count);\n break;\n }\n },\n /** Register the removal of peers in our mesh due to some reason */\n // - remove_peer_from_mesh()\n // - heartbeat() Churn::BadScore\n // - heartbeat() Churn::Excess\n // - on_disconnect() Churn::Ds\n onRemoveFromMesh(topicStr, reason, count) {\n const topic = this.toTopic(topicStr);\n switch (reason) {\n case ChurnReason.Dc:\n this.meshPeerChurnEventsDisconnected.inc({ topic }, count);\n break;\n case ChurnReason.BadScore:\n this.meshPeerChurnEventsBadScore.inc({ topic }, count);\n break;\n case ChurnReason.Prune:\n this.meshPeerChurnEventsPrune.inc({ topic }, count);\n break;\n case ChurnReason.Excess:\n this.meshPeerChurnEventsExcess.inc({ topic }, count);\n break;\n default:\n this.meshPeerChurnEventsUnknown.inc({ topic }, count);\n break;\n }\n },\n /**\n * Update validation result to metrics\n *\n * @param messageRecord - null means the message's mcache record was not known at the time of acceptance report\n */\n onReportValidation(messageRecord, acceptance, firstSeenTimestampMs) {\n this.asyncValidationMcacheHit.inc({ hit: messageRecord != null ? 'hit' : 'miss' });\n if (messageRecord != null) {\n const topic = this.toTopic(messageRecord.message.topic);\n switch (acceptance) {\n case TopicValidatorResult.Accept:\n this.acceptedMessagesTotal.inc({ topic });\n break;\n case TopicValidatorResult.Ignore:\n this.ignoredMessagesTotal.inc({ topic });\n break;\n case TopicValidatorResult.Reject:\n this.rejectedMessagesTotal.inc({ topic });\n break;\n default:\n this.unknownValidationResultsTotal.inc({ topic });\n break;\n }\n }\n if (firstSeenTimestampMs != null) {\n this.asyncValidationDelayFromFirstSeenSec.observe((Date.now() - firstSeenTimestampMs) / 1000);\n }\n else {\n this.asyncValidationUnknownFirstSeen.inc();\n }\n },\n /**\n * - in handle_graft() Penalty::GraftBackoff\n * - in apply_iwant_penalties() Penalty::BrokenPromise\n * - in metric_score() P3 Penalty::MessageDeficit\n * - in metric_score() P6 Penalty::IPColocation\n */\n onScorePenalty(penalty) {\n // Can this be labeled by topic too?\n this.scoringPenalties.inc({ penalty }, 1);\n },\n onIhaveRcv(topicStr, ihave, idonthave) {\n const topic = this.toTopic(topicStr);\n this.ihaveRcvMsgids.inc({ topic }, ihave);\n this.ihaveRcvNotSeenMsgids.inc({ topic }, idonthave);\n },\n onIwantRcv(iwantByTopic, iwantDonthave) {\n for (const [topicStr, iwant] of iwantByTopic) {\n const topic = this.toTopic(topicStr);\n this.iwantRcvMsgids.inc({ topic }, iwant);\n }\n this.iwantRcvDonthaveMsgids.inc(iwantDonthave);\n },\n onForwardMsg(topicStr, tosendCount) {\n const topic = this.toTopic(topicStr);\n this.msgForwardCount.inc({ topic }, 1);\n this.msgForwardPeers.inc({ topic }, tosendCount);\n },\n onPublishMsg(topicStr, tosendGroupCount, tosendCount, dataLen, ms) {\n const topic = this.toTopic(topicStr);\n this.msgPublishCount.inc({ topic }, 1);\n this.msgPublishBytes.inc({ topic }, tosendCount * dataLen);\n this.msgPublishPeersByTopic.inc({ topic }, tosendCount);\n this.directPeersPublishedTotal.inc({ topic }, tosendGroupCount.direct);\n this.floodsubPeersPublishedTotal.inc({ topic }, tosendGroupCount.floodsub);\n this.meshPeersPublishedTotal.inc({ topic }, tosendGroupCount.mesh);\n this.fanoutPeersPublishedTotal.inc({ topic }, tosendGroupCount.fanout);\n this.msgPublishTime.observe({ topic }, ms / 1000);\n },\n onMsgRecvPreValidation(topicStr) {\n const topic = this.toTopic(topicStr);\n this.msgReceivedPreValidation.inc({ topic }, 1);\n },\n onMsgRecvError(topicStr) {\n const topic = this.toTopic(topicStr);\n this.msgReceivedError.inc({ topic }, 1);\n },\n onPrevalidationResult(topicStr, status) {\n const topic = this.toTopic(topicStr);\n switch (status) {\n case MessageStatus.duplicate:\n this.prevalidationDuplicateTotal.inc({ topic });\n break;\n case MessageStatus.invalid:\n this.prevalidationInvalidTotal.inc({ topic });\n break;\n case MessageStatus.valid:\n this.prevalidationValidTotal.inc({ topic });\n break;\n default:\n this.prevalidationUnknownTotal.inc({ topic });\n break;\n }\n },\n onMsgRecvInvalid(topicStr, reason) {\n const topic = this.toTopic(topicStr);\n const error = reason.reason === RejectReason.Error ? reason.error : reason.reason;\n this.msgReceivedInvalid.inc({ error }, 1);\n this.msgReceivedInvalidByTopic.inc({ topic }, 1);\n },\n onDuplicateMsgDelivery(topicStr, deliveryDelayMs, isLateDelivery) {\n const topic = this.toTopic(topicStr);\n this.duplicateMsgDeliveryDelay.observe({ topic }, deliveryDelayMs / 1000);\n if (isLateDelivery) {\n this.duplicateMsgLateDelivery.inc({ topic }, 1);\n }\n },\n onPublishDuplicateMsg(topicStr) {\n const topic = this.toTopic(topicStr);\n this.duplicateMsgIgnored.inc({ topic }, 1);\n },\n onPeerReadStreamError() {\n this.peerReadStreamError.inc(1);\n },\n onRpcRecvError() {\n this.rpcRecvError.inc(1);\n },\n onRpcDataError() {\n this.rpcDataError.inc(1);\n },\n onRpcRecv(rpc, rpcBytes) {\n this.rpcRecvBytes.inc(rpcBytes);\n this.rpcRecvCount.inc(1);\n if (rpc.subscriptions != null)\n this.rpcRecvSubscription.inc(rpc.subscriptions.length);\n if (rpc.messages != null)\n this.rpcRecvMessage.inc(rpc.messages.length);\n if (rpc.control != null) {\n this.rpcRecvControl.inc(1);\n if (rpc.control.ihave != null)\n this.rpcRecvIHave.inc(rpc.control.ihave.length);\n if (rpc.control.iwant != null)\n this.rpcRecvIWant.inc(rpc.control.iwant.length);\n if (rpc.control.graft != null)\n this.rpcRecvGraft.inc(rpc.control.graft.length);\n if (rpc.control.prune != null)\n this.rpcRecvPrune.inc(rpc.control.prune.length);\n }\n },\n onRpcSent(rpc, rpcBytes) {\n this.rpcSentBytes.inc(rpcBytes);\n this.rpcSentCount.inc(1);\n if (rpc.subscriptions != null)\n this.rpcSentSubscription.inc(rpc.subscriptions.length);\n if (rpc.messages != null)\n this.rpcSentMessage.inc(rpc.messages.length);\n if (rpc.control != null) {\n const ihave = rpc.control.ihave?.length ?? 0;\n const iwant = rpc.control.iwant?.length ?? 0;\n const graft = rpc.control.graft?.length ?? 0;\n const prune = rpc.control.prune?.length ?? 0;\n if (ihave > 0)\n this.rpcSentIHave.inc(ihave);\n if (iwant > 0)\n this.rpcSentIWant.inc(iwant);\n if (graft > 0)\n this.rpcSentGraft.inc(graft);\n if (prune > 0)\n this.rpcSentPrune.inc(prune);\n if (ihave > 0 || iwant > 0 || graft > 0 || prune > 0)\n this.rpcSentControl.inc(1);\n }\n },\n registerScores(scores, scoreThresholds) {\n let graylist = 0;\n let publish = 0;\n let gossip = 0;\n let mesh = 0;\n for (const score of scores) {\n if (score >= scoreThresholds.graylistThreshold)\n graylist++;\n if (score >= scoreThresholds.publishThreshold)\n publish++;\n if (score >= scoreThresholds.gossipThreshold)\n gossip++;\n if (score >= 0)\n mesh++;\n }\n this.peersByScoreThreshold.set({ threshold: ScoreThreshold.graylist }, graylist);\n this.peersByScoreThreshold.set({ threshold: ScoreThreshold.publish }, publish);\n this.peersByScoreThreshold.set({ threshold: ScoreThreshold.gossip }, gossip);\n this.peersByScoreThreshold.set({ threshold: ScoreThreshold.mesh }, mesh);\n // Register full score too\n this.score.set(scores);\n },\n registerScoreWeights(sw) {\n for (const [topic, wsTopic] of sw.byTopic) {\n this.scoreWeights.set({ topic, p: 'p1' }, wsTopic.p1w);\n this.scoreWeights.set({ topic, p: 'p2' }, wsTopic.p2w);\n this.scoreWeights.set({ topic, p: 'p3' }, wsTopic.p3w);\n this.scoreWeights.set({ topic, p: 'p3b' }, wsTopic.p3bw);\n this.scoreWeights.set({ topic, p: 'p4' }, wsTopic.p4w);\n }\n this.scoreWeights.set({ p: 'p5' }, sw.p5w);\n this.scoreWeights.set({ p: 'p6' }, sw.p6w);\n this.scoreWeights.set({ p: 'p7' }, sw.p7w);\n },\n registerScorePerMesh(mesh, scoreByPeer) {\n const peersPerTopicLabel = new Map();\n mesh.forEach((peers, topicStr) => {\n // Aggregate by known topicLabel or throw to 'unknown'. This prevent too high cardinality\n const topicLabel = this.topicStrToLabel.get(topicStr) ?? 'unknown';\n let peersInMesh = peersPerTopicLabel.get(topicLabel);\n if (peersInMesh == null) {\n peersInMesh = new Set();\n peersPerTopicLabel.set(topicLabel, peersInMesh);\n }\n peers.forEach((p) => peersInMesh?.add(p));\n });\n for (const [topic, peers] of peersPerTopicLabel) {\n const meshScores = [];\n peers.forEach((peer) => {\n meshScores.push(scoreByPeer.get(peer) ?? 0);\n });\n this.scorePerMesh.set({ topic }, meshScores);\n }\n }\n };\n}\n//# sourceMappingURL=metrics.js.map","export const ERR_INVALID_PEER_SCORE_PARAMS = 'ERR_INVALID_PEER_SCORE_PARAMS';\nexport const ERR_INVALID_PEER_SCORE_THRESHOLDS = 'ERR_INVALID_PEER_SCORE_THRESHOLDS';\n//# sourceMappingURL=constants.js.map","import { CodeError } from '@libp2p/interface';\nimport { ERR_INVALID_PEER_SCORE_PARAMS } from './constants.js';\nexport const defaultPeerScoreParams = {\n topics: {},\n topicScoreCap: 10.0,\n appSpecificScore: () => 0.0,\n appSpecificWeight: 10.0,\n IPColocationFactorWeight: -5.0,\n IPColocationFactorThreshold: 10.0,\n IPColocationFactorWhitelist: new Set(),\n behaviourPenaltyWeight: -10.0,\n behaviourPenaltyThreshold: 0.0,\n behaviourPenaltyDecay: 0.2,\n decayInterval: 1000.0,\n decayToZero: 0.1,\n retainScore: 3600 * 1000\n};\nexport const defaultTopicScoreParams = {\n topicWeight: 0.5,\n timeInMeshWeight: 1,\n timeInMeshQuantum: 1,\n timeInMeshCap: 3600,\n firstMessageDeliveriesWeight: 1,\n firstMessageDeliveriesDecay: 0.5,\n firstMessageDeliveriesCap: 2000,\n meshMessageDeliveriesWeight: -1,\n meshMessageDeliveriesDecay: 0.5,\n meshMessageDeliveriesCap: 100,\n meshMessageDeliveriesThreshold: 20,\n meshMessageDeliveriesWindow: 10,\n meshMessageDeliveriesActivation: 5000,\n meshFailurePenaltyWeight: -1,\n meshFailurePenaltyDecay: 0.5,\n invalidMessageDeliveriesWeight: -1,\n invalidMessageDeliveriesDecay: 0.3\n};\nexport function createPeerScoreParams(p = {}) {\n return {\n ...defaultPeerScoreParams,\n ...p,\n topics: (p.topics != null)\n ? Object.entries(p.topics).reduce((topics, [topic, topicScoreParams]) => {\n topics[topic] = createTopicScoreParams(topicScoreParams);\n return topics;\n }, {})\n : {}\n };\n}\nexport function createTopicScoreParams(p = {}) {\n return {\n ...defaultTopicScoreParams,\n ...p\n };\n}\n// peer score parameter validation\nexport function validatePeerScoreParams(p) {\n for (const [topic, params] of Object.entries(p.topics)) {\n try {\n validateTopicScoreParams(params);\n }\n catch (e) {\n throw new CodeError(`invalid score parameters for topic ${topic}: ${e.message}`, ERR_INVALID_PEER_SCORE_PARAMS);\n }\n }\n // check that the topic score is 0 or something positive\n if (p.topicScoreCap < 0) {\n throw new CodeError('invalid topic score cap; must be positive (or 0 for no cap)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check that we have an app specific score; the weight can be anything (but expected positive)\n if (p.appSpecificScore === null || p.appSpecificScore === undefined) {\n throw new CodeError('missing application specific score function', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check the IP colocation factor\n if (p.IPColocationFactorWeight > 0) {\n throw new CodeError('invalid IPColocationFactorWeight; must be negative (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.IPColocationFactorWeight !== 0 && p.IPColocationFactorThreshold < 1) {\n throw new CodeError('invalid IPColocationFactorThreshold; must be at least 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check the behaviour penalty\n if (p.behaviourPenaltyWeight > 0) {\n throw new CodeError('invalid BehaviourPenaltyWeight; must be negative (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.behaviourPenaltyWeight !== 0 && (p.behaviourPenaltyDecay <= 0 || p.behaviourPenaltyDecay >= 1)) {\n throw new CodeError('invalid BehaviourPenaltyDecay; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check the decay parameters\n if (p.decayInterval < 1000) {\n throw new CodeError('invalid DecayInterval; must be at least 1s', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.decayToZero <= 0 || p.decayToZero >= 1) {\n throw new CodeError('invalid DecayToZero; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // no need to check the score retention; a value of 0 means that we don't retain scores\n}\n// eslint-disable-next-line complexity\nexport function validateTopicScoreParams(p) {\n // make sure we have a sane topic weight\n if (p.topicWeight < 0) {\n throw new CodeError('invalid topic weight; must be >= 0', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check P1\n if (p.timeInMeshQuantum === 0) {\n throw new CodeError('invalid TimeInMeshQuantum; must be non zero', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.timeInMeshWeight < 0) {\n throw new CodeError('invalid TimeInMeshWeight; must be positive (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.timeInMeshWeight !== 0 && p.timeInMeshQuantum <= 0) {\n throw new CodeError('invalid TimeInMeshQuantum; must be positive', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.timeInMeshWeight !== 0 && p.timeInMeshCap <= 0) {\n throw new CodeError('invalid TimeInMeshCap; must be positive', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check P2\n if (p.firstMessageDeliveriesWeight < 0) {\n throw new CodeError('invallid FirstMessageDeliveriesWeight; must be positive (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.firstMessageDeliveriesWeight !== 0 &&\n (p.firstMessageDeliveriesDecay <= 0 || p.firstMessageDeliveriesDecay >= 1)) {\n throw new CodeError('invalid FirstMessageDeliveriesDecay; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.firstMessageDeliveriesWeight !== 0 && p.firstMessageDeliveriesCap <= 0) {\n throw new CodeError('invalid FirstMessageDeliveriesCap; must be positive', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check P3\n if (p.meshMessageDeliveriesWeight > 0) {\n throw new CodeError('invalid MeshMessageDeliveriesWeight; must be negative (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshMessageDeliveriesWeight !== 0 && (p.meshMessageDeliveriesDecay <= 0 || p.meshMessageDeliveriesDecay >= 1)) {\n throw new CodeError('invalid MeshMessageDeliveriesDecay; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshMessageDeliveriesWeight !== 0 && p.meshMessageDeliveriesCap <= 0) {\n throw new CodeError('invalid MeshMessageDeliveriesCap; must be positive', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshMessageDeliveriesWeight !== 0 && p.meshMessageDeliveriesThreshold <= 0) {\n throw new CodeError('invalid MeshMessageDeliveriesThreshold; must be positive', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshMessageDeliveriesWindow < 0) {\n throw new CodeError('invalid MeshMessageDeliveriesWindow; must be non-negative', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshMessageDeliveriesWeight !== 0 && p.meshMessageDeliveriesActivation < 1000) {\n throw new CodeError('invalid MeshMessageDeliveriesActivation; must be at least 1s', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check P3b\n if (p.meshFailurePenaltyWeight > 0) {\n throw new CodeError('invalid MeshFailurePenaltyWeight; must be negative (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshFailurePenaltyWeight !== 0 && (p.meshFailurePenaltyDecay <= 0 || p.meshFailurePenaltyDecay >= 1)) {\n throw new CodeError('invalid MeshFailurePenaltyDecay; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check P4\n if (p.invalidMessageDeliveriesWeight > 0) {\n throw new CodeError('invalid InvalidMessageDeliveriesWeight; must be negative (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.invalidMessageDeliveriesDecay <= 0 || p.invalidMessageDeliveriesDecay >= 1) {\n throw new CodeError('invalid InvalidMessageDeliveriesDecay; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n}\n//# sourceMappingURL=peer-score-params.js.map","import { CodeError } from '@libp2p/interface';\nimport { ERR_INVALID_PEER_SCORE_THRESHOLDS } from './constants.js';\nexport const defaultPeerScoreThresholds = {\n gossipThreshold: -10,\n publishThreshold: -50,\n graylistThreshold: -80,\n acceptPXThreshold: 10,\n opportunisticGraftThreshold: 20\n};\nexport function createPeerScoreThresholds(p = {}) {\n return {\n ...defaultPeerScoreThresholds,\n ...p\n };\n}\nexport function validatePeerScoreThresholds(p) {\n if (p.gossipThreshold > 0) {\n throw new CodeError('invalid gossip threshold; it must be <= 0', ERR_INVALID_PEER_SCORE_THRESHOLDS);\n }\n if (p.publishThreshold > 0 || p.publishThreshold > p.gossipThreshold) {\n throw new CodeError('invalid publish threshold; it must be <= 0 and <= gossip threshold', ERR_INVALID_PEER_SCORE_THRESHOLDS);\n }\n if (p.graylistThreshold > 0 || p.graylistThreshold > p.publishThreshold) {\n throw new CodeError('invalid graylist threshold; it must be <= 0 and <= publish threshold', ERR_INVALID_PEER_SCORE_THRESHOLDS);\n }\n if (p.acceptPXThreshold < 0) {\n throw new CodeError('invalid accept PX threshold; it must be >= 0', ERR_INVALID_PEER_SCORE_THRESHOLDS);\n }\n if (p.opportunisticGraftThreshold < 0) {\n throw new CodeError('invalid opportunistic grafting threshold; it must be >= 0', ERR_INVALID_PEER_SCORE_THRESHOLDS);\n }\n}\n//# sourceMappingURL=peer-score-thresholds.js.map","/**\n * Exclude up to `ineed` items from a set if item meets condition `cond`\n */\nexport function removeItemsFromSet(superSet, ineed, cond = () => true) {\n const subset = new Set();\n if (ineed <= 0)\n return subset;\n for (const id of superSet) {\n if (subset.size >= ineed)\n break;\n if (cond(id)) {\n subset.add(id);\n superSet.delete(id);\n }\n }\n return subset;\n}\n/**\n * Exclude up to `ineed` items from a set\n */\nexport function removeFirstNItemsFromSet(superSet, ineed) {\n return removeItemsFromSet(superSet, ineed, () => true);\n}\nexport class MapDef extends Map {\n getDefault;\n constructor(getDefault) {\n super();\n this.getDefault = getDefault;\n }\n getOrDefault(key) {\n let value = super.get(key);\n if (value === undefined) {\n value = this.getDefault();\n this.set(key, value);\n }\n return value;\n }\n}\n//# sourceMappingURL=set.js.map","export function computeScore(peer, pstats, params, peerIPs) {\n let score = 0;\n // topic stores\n Object.entries(pstats.topics).forEach(([topic, tstats]) => {\n // the topic parameters\n const topicParams = params.topics[topic];\n if (topicParams === undefined) {\n // we are not scoring this topic\n return;\n }\n let topicScore = 0;\n // P1: time in Mesh\n if (tstats.inMesh) {\n let p1 = tstats.meshTime / topicParams.timeInMeshQuantum;\n if (p1 > topicParams.timeInMeshCap) {\n p1 = topicParams.timeInMeshCap;\n }\n topicScore += p1 * topicParams.timeInMeshWeight;\n }\n // P2: first message deliveries\n let p2 = tstats.firstMessageDeliveries;\n if (p2 > topicParams.firstMessageDeliveriesCap) {\n p2 = topicParams.firstMessageDeliveriesCap;\n }\n topicScore += p2 * topicParams.firstMessageDeliveriesWeight;\n // P3: mesh message deliveries\n if (tstats.meshMessageDeliveriesActive &&\n tstats.meshMessageDeliveries < topicParams.meshMessageDeliveriesThreshold) {\n const deficit = topicParams.meshMessageDeliveriesThreshold - tstats.meshMessageDeliveries;\n const p3 = deficit * deficit;\n topicScore += p3 * topicParams.meshMessageDeliveriesWeight;\n }\n // P3b:\n // NOTE: the weight of P3b is negative (validated in validateTopicScoreParams) so this detracts\n const p3b = tstats.meshFailurePenalty;\n topicScore += p3b * topicParams.meshFailurePenaltyWeight;\n // P4: invalid messages\n // NOTE: the weight of P4 is negative (validated in validateTopicScoreParams) so this detracts\n const p4 = tstats.invalidMessageDeliveries * tstats.invalidMessageDeliveries;\n topicScore += p4 * topicParams.invalidMessageDeliveriesWeight;\n // update score, mixing with topic weight\n score += topicScore * topicParams.topicWeight;\n });\n // apply the topic score cap, if any\n if (params.topicScoreCap > 0 && score > params.topicScoreCap) {\n score = params.topicScoreCap;\n }\n // P5: application-specific score\n const p5 = params.appSpecificScore(peer);\n score += p5 * params.appSpecificWeight;\n // P6: IP colocation factor\n pstats.knownIPs.forEach((ip) => {\n if (params.IPColocationFactorWhitelist.has(ip)) {\n return;\n }\n // P6 has a cliff (IPColocationFactorThreshold)\n // It's only applied if at least that many peers are connected to us from that source IP addr.\n // It is quadratic, and the weight is negative (validated in validatePeerScoreParams)\n const peersInIP = peerIPs.get(ip);\n const numPeersInIP = (peersInIP != null) ? peersInIP.size : 0;\n if (numPeersInIP > params.IPColocationFactorThreshold) {\n const surplus = numPeersInIP - params.IPColocationFactorThreshold;\n const p6 = surplus * surplus;\n score += p6 * params.IPColocationFactorWeight;\n }\n });\n // P7: behavioural pattern penalty\n if (pstats.behaviourPenalty > params.behaviourPenaltyThreshold) {\n const excess = pstats.behaviourPenalty - params.behaviourPenaltyThreshold;\n const p7 = excess * excess;\n score += p7 * params.behaviourPenaltyWeight;\n }\n return score;\n}\n//# sourceMappingURL=compute-score.js.map","'use strict';\n\n/**\n * Custom implementation of a double ended queue.\n */\nfunction Denque(array, options) {\n var options = options || {};\n this._capacity = options.capacity;\n\n this._head = 0;\n this._tail = 0;\n\n if (Array.isArray(array)) {\n this._fromArray(array);\n } else {\n this._capacityMask = 0x3;\n this._list = new Array(4);\n }\n}\n\n/**\n * --------------\n * PUBLIC API\n * -------------\n */\n\n/**\n * Returns the item at the specified index from the list.\n * 0 is the first element, 1 is the second, and so on...\n * Elements at negative values are that many from the end: -1 is one before the end\n * (the last element), -2 is two before the end (one before last), etc.\n * @param index\n * @returns {*}\n */\nDenque.prototype.peekAt = function peekAt(index) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n var len = this.size();\n if (i >= len || i < -len) return undefined;\n if (i < 0) i += len;\n i = (this._head + i) & this._capacityMask;\n return this._list[i];\n};\n\n/**\n * Alias for peekAt()\n * @param i\n * @returns {*}\n */\nDenque.prototype.get = function get(i) {\n return this.peekAt(i);\n};\n\n/**\n * Returns the first item in the list without removing it.\n * @returns {*}\n */\nDenque.prototype.peek = function peek() {\n if (this._head === this._tail) return undefined;\n return this._list[this._head];\n};\n\n/**\n * Alias for peek()\n * @returns {*}\n */\nDenque.prototype.peekFront = function peekFront() {\n return this.peek();\n};\n\n/**\n * Returns the item that is at the back of the queue without removing it.\n * Uses peekAt(-1)\n */\nDenque.prototype.peekBack = function peekBack() {\n return this.peekAt(-1);\n};\n\n/**\n * Returns the current length of the queue\n * @return {Number}\n */\nObject.defineProperty(Denque.prototype, 'length', {\n get: function length() {\n return this.size();\n }\n});\n\n/**\n * Return the number of items on the list, or 0 if empty.\n * @returns {number}\n */\nDenque.prototype.size = function size() {\n if (this._head === this._tail) return 0;\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Add an item at the beginning of the list.\n * @param item\n */\nDenque.prototype.unshift = function unshift(item) {\n if (arguments.length === 0) return this.size();\n var len = this._list.length;\n this._head = (this._head - 1 + len) & this._capacityMask;\n this._list[this._head] = item;\n if (this._tail === this._head) this._growArray();\n if (this._capacity && this.size() > this._capacity) this.pop();\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Remove and return the first item on the list,\n * Returns undefined if the list is empty.\n * @returns {*}\n */\nDenque.prototype.shift = function shift() {\n var head = this._head;\n if (head === this._tail) return undefined;\n var item = this._list[head];\n this._list[head] = undefined;\n this._head = (head + 1) & this._capacityMask;\n if (head < 2 && this._tail > 10000 && this._tail <= this._list.length >>> 2) this._shrinkArray();\n return item;\n};\n\n/**\n * Add an item to the bottom of the list.\n * @param item\n */\nDenque.prototype.push = function push(item) {\n if (arguments.length === 0) return this.size();\n var tail = this._tail;\n this._list[tail] = item;\n this._tail = (tail + 1) & this._capacityMask;\n if (this._tail === this._head) {\n this._growArray();\n }\n if (this._capacity && this.size() > this._capacity) {\n this.shift();\n }\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Remove and return the last item on the list.\n * Returns undefined if the list is empty.\n * @returns {*}\n */\nDenque.prototype.pop = function pop() {\n var tail = this._tail;\n if (tail === this._head) return undefined;\n var len = this._list.length;\n this._tail = (tail - 1 + len) & this._capacityMask;\n var item = this._list[this._tail];\n this._list[this._tail] = undefined;\n if (this._head < 2 && tail > 10000 && tail <= len >>> 2) this._shrinkArray();\n return item;\n};\n\n/**\n * Remove and return the item at the specified index from the list.\n * Returns undefined if the list is empty.\n * @param index\n * @returns {*}\n */\nDenque.prototype.removeOne = function removeOne(index) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n if (this._head === this._tail) return void 0;\n var size = this.size();\n var len = this._list.length;\n if (i >= size || i < -size) return void 0;\n if (i < 0) i += size;\n i = (this._head + i) & this._capacityMask;\n var item = this._list[i];\n var k;\n if (index < size / 2) {\n for (k = index; k > 0; k--) {\n this._list[i] = this._list[i = (i - 1 + len) & this._capacityMask];\n }\n this._list[i] = void 0;\n this._head = (this._head + 1 + len) & this._capacityMask;\n } else {\n for (k = size - 1 - index; k > 0; k--) {\n this._list[i] = this._list[i = (i + 1 + len) & this._capacityMask];\n }\n this._list[i] = void 0;\n this._tail = (this._tail - 1 + len) & this._capacityMask;\n }\n return item;\n};\n\n/**\n * Remove number of items from the specified index from the list.\n * Returns array of removed items.\n * Returns undefined if the list is empty.\n * @param index\n * @param count\n * @returns {array}\n */\nDenque.prototype.remove = function remove(index, count) {\n var i = index;\n var removed;\n var del_count = count;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n if (this._head === this._tail) return void 0;\n var size = this.size();\n var len = this._list.length;\n if (i >= size || i < -size || count < 1) return void 0;\n if (i < 0) i += size;\n if (count === 1 || !count) {\n removed = new Array(1);\n removed[0] = this.removeOne(i);\n return removed;\n }\n if (i === 0 && i + count >= size) {\n removed = this.toArray();\n this.clear();\n return removed;\n }\n if (i + count > size) count = size - i;\n var k;\n removed = new Array(count);\n for (k = 0; k < count; k++) {\n removed[k] = this._list[(this._head + i + k) & this._capacityMask];\n }\n i = (this._head + i) & this._capacityMask;\n if (index + count === size) {\n this._tail = (this._tail - count + len) & this._capacityMask;\n for (k = count; k > 0; k--) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n }\n return removed;\n }\n if (index === 0) {\n this._head = (this._head + count + len) & this._capacityMask;\n for (k = count - 1; k > 0; k--) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n }\n return removed;\n }\n if (i < size / 2) {\n this._head = (this._head + index + count + len) & this._capacityMask;\n for (k = index; k > 0; k--) {\n this.unshift(this._list[i = (i - 1 + len) & this._capacityMask]);\n }\n i = (this._head - 1 + len) & this._capacityMask;\n while (del_count > 0) {\n this._list[i = (i - 1 + len) & this._capacityMask] = void 0;\n del_count--;\n }\n if (index < 0) this._tail = i;\n } else {\n this._tail = i;\n i = (i + count + len) & this._capacityMask;\n for (k = size - (count + index); k > 0; k--) {\n this.push(this._list[i++]);\n }\n i = this._tail;\n while (del_count > 0) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n del_count--;\n }\n }\n if (this._head < 2 && this._tail > 10000 && this._tail <= len >>> 2) this._shrinkArray();\n return removed;\n};\n\n/**\n * Native splice implementation.\n * Remove number of items from the specified index from the list and/or add new elements.\n * Returns array of removed items or empty array if count == 0.\n * Returns undefined if the list is empty.\n *\n * @param index\n * @param count\n * @param {...*} [elements]\n * @returns {array}\n */\nDenque.prototype.splice = function splice(index, count) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n var size = this.size();\n if (i < 0) i += size;\n if (i > size) return void 0;\n if (arguments.length > 2) {\n var k;\n var temp;\n var removed;\n var arg_len = arguments.length;\n var len = this._list.length;\n var arguments_index = 2;\n if (!size || i < size / 2) {\n temp = new Array(i);\n for (k = 0; k < i; k++) {\n temp[k] = this._list[(this._head + k) & this._capacityMask];\n }\n if (count === 0) {\n removed = [];\n if (i > 0) {\n this._head = (this._head + i + len) & this._capacityMask;\n }\n } else {\n removed = this.remove(i, count);\n this._head = (this._head + i + len) & this._capacityMask;\n }\n while (arg_len > arguments_index) {\n this.unshift(arguments[--arg_len]);\n }\n for (k = i; k > 0; k--) {\n this.unshift(temp[k - 1]);\n }\n } else {\n temp = new Array(size - (i + count));\n var leng = temp.length;\n for (k = 0; k < leng; k++) {\n temp[k] = this._list[(this._head + i + count + k) & this._capacityMask];\n }\n if (count === 0) {\n removed = [];\n if (i != size) {\n this._tail = (this._head + i + len) & this._capacityMask;\n }\n } else {\n removed = this.remove(i, count);\n this._tail = (this._tail - leng + len) & this._capacityMask;\n }\n while (arguments_index < arg_len) {\n this.push(arguments[arguments_index++]);\n }\n for (k = 0; k < leng; k++) {\n this.push(temp[k]);\n }\n }\n return removed;\n } else {\n return this.remove(i, count);\n }\n};\n\n/**\n * Soft clear - does not reset capacity.\n */\nDenque.prototype.clear = function clear() {\n this._list = new Array(this._list.length);\n this._head = 0;\n this._tail = 0;\n};\n\n/**\n * Returns true or false whether the list is empty.\n * @returns {boolean}\n */\nDenque.prototype.isEmpty = function isEmpty() {\n return this._head === this._tail;\n};\n\n/**\n * Returns an array of all queue items.\n * @returns {Array}\n */\nDenque.prototype.toArray = function toArray() {\n return this._copyArray(false);\n};\n\n/**\n * -------------\n * INTERNALS\n * -------------\n */\n\n/**\n * Fills the queue with items from an array\n * For use in the constructor\n * @param array\n * @private\n */\nDenque.prototype._fromArray = function _fromArray(array) {\n var length = array.length;\n var capacity = this._nextPowerOf2(length);\n\n this._list = new Array(capacity);\n this._capacityMask = capacity - 1;\n this._tail = length;\n\n for (var i = 0; i < length; i++) this._list[i] = array[i];\n};\n\n/**\n *\n * @param fullCopy\n * @param size Initialize the array with a specific size. Will default to the current list size\n * @returns {Array}\n * @private\n */\nDenque.prototype._copyArray = function _copyArray(fullCopy, size) {\n var src = this._list;\n var capacity = src.length;\n var length = this.length;\n size = size | length;\n\n // No prealloc requested and the buffer is contiguous\n if (size == length && this._head < this._tail) {\n // Simply do a fast slice copy\n return this._list.slice(this._head, this._tail);\n }\n\n var dest = new Array(size);\n\n var k = 0;\n var i;\n if (fullCopy || this._head > this._tail) {\n for (i = this._head; i < capacity; i++) dest[k++] = src[i];\n for (i = 0; i < this._tail; i++) dest[k++] = src[i];\n } else {\n for (i = this._head; i < this._tail; i++) dest[k++] = src[i];\n }\n\n return dest;\n}\n\n/**\n * Grows the internal list array.\n * @private\n */\nDenque.prototype._growArray = function _growArray() {\n if (this._head != 0) {\n // double array size and copy existing data, head to end, then beginning to tail.\n var newList = this._copyArray(true, this._list.length << 1);\n\n this._tail = this._list.length;\n this._head = 0;\n\n this._list = newList;\n } else {\n this._tail = this._list.length;\n this._list.length <<= 1;\n }\n\n this._capacityMask = (this._capacityMask << 1) | 1;\n};\n\n/**\n * Shrinks the internal list array.\n * @private\n */\nDenque.prototype._shrinkArray = function _shrinkArray() {\n this._list.length >>>= 1;\n this._capacityMask >>>= 1;\n};\n\n/**\n * Find the next power of 2, at least 4\n * @private\n * @param {number} num \n * @returns {number}\n */\nDenque.prototype._nextPowerOf2 = function _nextPowerOf2(num) {\n var log2 = Math.log(num) / Math.log(2);\n var nextPow2 = 1 << (log2 + 1);\n\n return Math.max(nextPow2, 4);\n}\n\nmodule.exports = Denque;\n","import Denque from 'denque';\nimport { TimeCacheDuration } from '../constants.js';\nexport var DeliveryRecordStatus;\n(function (DeliveryRecordStatus) {\n /**\n * we don't know (yet) if the message is valid\n */\n DeliveryRecordStatus[DeliveryRecordStatus[\"unknown\"] = 0] = \"unknown\";\n /**\n * we know the message is valid\n */\n DeliveryRecordStatus[DeliveryRecordStatus[\"valid\"] = 1] = \"valid\";\n /**\n * we know the message is invalid\n */\n DeliveryRecordStatus[DeliveryRecordStatus[\"invalid\"] = 2] = \"invalid\";\n /**\n * we were instructed by the validator to ignore the message\n */\n DeliveryRecordStatus[DeliveryRecordStatus[\"ignored\"] = 3] = \"ignored\";\n})(DeliveryRecordStatus || (DeliveryRecordStatus = {}));\n/**\n * Map of canonical message ID to DeliveryRecord\n *\n * Maintains an internal queue for efficient gc of old messages\n */\nexport class MessageDeliveries {\n records;\n queue;\n constructor() {\n this.records = new Map();\n this.queue = new Denque();\n }\n getRecord(msgIdStr) {\n return this.records.get(msgIdStr);\n }\n ensureRecord(msgIdStr) {\n let drec = this.records.get(msgIdStr);\n if (drec != null) {\n return drec;\n }\n // record doesn't exist yet\n // create record\n drec = {\n status: DeliveryRecordStatus.unknown,\n firstSeenTsMs: Date.now(),\n validated: 0,\n peers: new Set()\n };\n this.records.set(msgIdStr, drec);\n // and add msgId to the queue\n const entry = {\n msgId: msgIdStr,\n expire: Date.now() + TimeCacheDuration\n };\n this.queue.push(entry);\n return drec;\n }\n gc() {\n const now = Date.now();\n // queue is sorted by expiry time\n // remove expired messages, remove from queue until first un-expired message found\n let head = this.queue.peekFront();\n while ((head != null) && head.expire < now) {\n this.records.delete(head.msgId);\n this.queue.shift();\n head = this.queue.peekFront();\n }\n }\n clear() {\n this.records.clear();\n this.queue.clear();\n }\n}\n//# sourceMappingURL=message-deliveries.js.map","import { RejectReason } from '../types.js';\nimport { MapDef } from '../utils/set.js';\nimport { computeScore } from './compute-score.js';\nimport { MessageDeliveries, DeliveryRecordStatus } from './message-deliveries.js';\nimport { validatePeerScoreParams } from './peer-score-params.js';\nexport class PeerScore {\n params;\n metrics;\n /**\n * Per-peer stats for score calculation\n */\n peerStats = new Map();\n /**\n * IP colocation tracking; maps IP => set of peers.\n */\n peerIPs = new MapDef(() => new Set());\n /**\n * Cache score up to decayInterval if topic stats are unchanged.\n */\n scoreCache = new Map();\n /**\n * Recent message delivery timing/participants\n */\n deliveryRecords = new MessageDeliveries();\n _backgroundInterval;\n scoreCacheValidityMs;\n computeScore;\n log;\n constructor(params, metrics, componentLogger, opts) {\n this.params = params;\n this.metrics = metrics;\n validatePeerScoreParams(params);\n this.scoreCacheValidityMs = opts.scoreCacheValidityMs;\n this.computeScore = opts.computeScore ?? computeScore;\n this.log = componentLogger.forComponent('libp2p:gossipsub:score');\n }\n get size() {\n return this.peerStats.size;\n }\n /**\n * Start PeerScore instance\n */\n start() {\n if (this._backgroundInterval != null) {\n this.log('Peer score already running');\n return;\n }\n this._backgroundInterval = setInterval(() => { this.background(); }, this.params.decayInterval);\n this.log('started');\n }\n /**\n * Stop PeerScore instance\n */\n stop() {\n if (this._backgroundInterval == null) {\n this.log('Peer score already stopped');\n return;\n }\n clearInterval(this._backgroundInterval);\n delete this._backgroundInterval;\n this.peerIPs.clear();\n this.peerStats.clear();\n this.deliveryRecords.clear();\n this.log('stopped');\n }\n /**\n * Periodic maintenance\n */\n background() {\n this.refreshScores();\n this.deliveryRecords.gc();\n }\n dumpPeerScoreStats() {\n return Object.fromEntries(Array.from(this.peerStats.entries()).map(([peer, stats]) => [peer, stats]));\n }\n messageFirstSeenTimestampMs(msgIdStr) {\n const drec = this.deliveryRecords.getRecord(msgIdStr);\n return (drec != null) ? drec.firstSeenTsMs : null;\n }\n /**\n * Decays scores, and purges score records for disconnected peers once their expiry has elapsed.\n */\n refreshScores() {\n const now = Date.now();\n const decayToZero = this.params.decayToZero;\n this.peerStats.forEach((pstats, id) => {\n if (!pstats.connected) {\n // has the retention period expired?\n if (now > pstats.expire) {\n // yes, throw it away (but clean up the IP tracking first)\n this.removeIPsForPeer(id, pstats.knownIPs);\n this.peerStats.delete(id);\n this.scoreCache.delete(id);\n }\n // we don't decay retained scores, as the peer is not active.\n // this way the peer cannot reset a negative score by simply disconnecting and reconnecting,\n // unless the retention period has elapsed.\n // similarly, a well behaved peer does not lose its score by getting disconnected.\n return;\n }\n Object.entries(pstats.topics).forEach(([topic, tstats]) => {\n const tparams = this.params.topics[topic];\n if (tparams === undefined) {\n // we are not scoring this topic\n // should be unreachable, we only add scored topics to pstats\n return;\n }\n // decay counters\n tstats.firstMessageDeliveries *= tparams.firstMessageDeliveriesDecay;\n if (tstats.firstMessageDeliveries < decayToZero) {\n tstats.firstMessageDeliveries = 0;\n }\n tstats.meshMessageDeliveries *= tparams.meshMessageDeliveriesDecay;\n if (tstats.meshMessageDeliveries < decayToZero) {\n tstats.meshMessageDeliveries = 0;\n }\n tstats.meshFailurePenalty *= tparams.meshFailurePenaltyDecay;\n if (tstats.meshFailurePenalty < decayToZero) {\n tstats.meshFailurePenalty = 0;\n }\n tstats.invalidMessageDeliveries *= tparams.invalidMessageDeliveriesDecay;\n if (tstats.invalidMessageDeliveries < decayToZero) {\n tstats.invalidMessageDeliveries = 0;\n }\n // update mesh time and activate mesh message delivery parameter if need be\n if (tstats.inMesh) {\n tstats.meshTime = now - tstats.graftTime;\n if (tstats.meshTime > tparams.meshMessageDeliveriesActivation) {\n tstats.meshMessageDeliveriesActive = true;\n }\n }\n });\n // decay P7 counter\n pstats.behaviourPenalty *= this.params.behaviourPenaltyDecay;\n if (pstats.behaviourPenalty < decayToZero) {\n pstats.behaviourPenalty = 0;\n }\n });\n }\n /**\n * Return the score for a peer\n */\n score(id) {\n this.metrics?.scoreFnCalls.inc();\n const pstats = this.peerStats.get(id);\n if (pstats == null) {\n return 0;\n }\n const now = Date.now();\n const cacheEntry = this.scoreCache.get(id);\n // Found cached score within validity period\n if ((cacheEntry != null) && cacheEntry.cacheUntil > now) {\n return cacheEntry.score;\n }\n this.metrics?.scoreFnRuns.inc();\n const score = this.computeScore(id, pstats, this.params, this.peerIPs);\n const cacheUntil = now + this.scoreCacheValidityMs;\n if (cacheEntry != null) {\n this.metrics?.scoreCachedDelta.observe(Math.abs(score - cacheEntry.score));\n cacheEntry.score = score;\n cacheEntry.cacheUntil = cacheUntil;\n }\n else {\n this.scoreCache.set(id, { score, cacheUntil });\n }\n return score;\n }\n /**\n * Apply a behavioural penalty to a peer\n */\n addPenalty(id, penalty, penaltyLabel) {\n const pstats = this.peerStats.get(id);\n if (pstats != null) {\n pstats.behaviourPenalty += penalty;\n this.metrics?.onScorePenalty(penaltyLabel);\n }\n }\n addPeer(id) {\n // create peer stats (not including topic stats for each topic to be scored)\n // topic stats will be added as needed\n const pstats = {\n connected: true,\n expire: 0,\n topics: {},\n knownIPs: new Set(),\n behaviourPenalty: 0\n };\n this.peerStats.set(id, pstats);\n }\n /** Adds a new IP to a peer, if the peer is not known the update is ignored */\n addIP(id, ip) {\n const pstats = this.peerStats.get(id);\n if (pstats != null) {\n pstats.knownIPs.add(ip);\n }\n this.peerIPs.getOrDefault(ip).add(id);\n }\n /** Remove peer association with IP */\n removeIP(id, ip) {\n const pstats = this.peerStats.get(id);\n if (pstats != null) {\n pstats.knownIPs.delete(ip);\n }\n const peersWithIP = this.peerIPs.get(ip);\n if (peersWithIP != null) {\n peersWithIP.delete(id);\n if (peersWithIP.size === 0) {\n this.peerIPs.delete(ip);\n }\n }\n }\n removePeer(id) {\n const pstats = this.peerStats.get(id);\n if (pstats == null) {\n return;\n }\n // decide whether to retain the score; this currently only retains non-positive scores\n // to dissuade attacks on the score function.\n if (this.score(id) > 0) {\n this.removeIPsForPeer(id, pstats.knownIPs);\n this.peerStats.delete(id);\n return;\n }\n // furthermore, when we decide to retain the score, the firstMessageDelivery counters are\n // reset to 0 and mesh delivery penalties applied.\n Object.entries(pstats.topics).forEach(([topic, tstats]) => {\n tstats.firstMessageDeliveries = 0;\n const threshold = this.params.topics[topic].meshMessageDeliveriesThreshold;\n if (tstats.inMesh && tstats.meshMessageDeliveriesActive && tstats.meshMessageDeliveries < threshold) {\n const deficit = threshold - tstats.meshMessageDeliveries;\n tstats.meshFailurePenalty += deficit * deficit;\n }\n tstats.inMesh = false;\n tstats.meshMessageDeliveriesActive = false;\n });\n pstats.connected = false;\n pstats.expire = Date.now() + this.params.retainScore;\n }\n /** Handles scoring functionality as a peer GRAFTs to a topic. */\n graft(id, topic) {\n const pstats = this.peerStats.get(id);\n if (pstats != null) {\n const tstats = this.getPtopicStats(pstats, topic);\n if (tstats != null) {\n // if we are scoring the topic, update the mesh status.\n tstats.inMesh = true;\n tstats.graftTime = Date.now();\n tstats.meshTime = 0;\n tstats.meshMessageDeliveriesActive = false;\n }\n }\n }\n /** Handles scoring functionality as a peer PRUNEs from a topic. */\n prune(id, topic) {\n const pstats = this.peerStats.get(id);\n if (pstats != null) {\n const tstats = this.getPtopicStats(pstats, topic);\n if (tstats != null) {\n // sticky mesh delivery rate failure penalty\n const threshold = this.params.topics[topic].meshMessageDeliveriesThreshold;\n if (tstats.meshMessageDeliveriesActive && tstats.meshMessageDeliveries < threshold) {\n const deficit = threshold - tstats.meshMessageDeliveries;\n tstats.meshFailurePenalty += deficit * deficit;\n }\n tstats.meshMessageDeliveriesActive = false;\n tstats.inMesh = false;\n // TODO: Consider clearing score cache on important penalties\n // this.scoreCache.delete(id)\n }\n }\n }\n validateMessage(msgIdStr) {\n this.deliveryRecords.ensureRecord(msgIdStr);\n }\n deliverMessage(from, msgIdStr, topic) {\n this.markFirstMessageDelivery(from, topic);\n const drec = this.deliveryRecords.ensureRecord(msgIdStr);\n const now = Date.now();\n // defensive check that this is the first delivery trace -- delivery status should be unknown\n if (drec.status !== DeliveryRecordStatus.unknown) {\n this.log('unexpected delivery: message from %s was first seen %s ago and has delivery status %s', from, now - drec.firstSeenTsMs, DeliveryRecordStatus[drec.status]);\n return;\n }\n // mark the message as valid and reward mesh peers that have already forwarded it to us\n drec.status = DeliveryRecordStatus.valid;\n drec.validated = now;\n drec.peers.forEach((p) => {\n // this check is to make sure a peer can't send us a message twice and get a double count\n // if it is a first delivery.\n if (p !== from.toString()) {\n this.markDuplicateMessageDelivery(p, topic);\n }\n });\n }\n /**\n * Similar to `rejectMessage` except does not require the message id or reason for an invalid message.\n */\n rejectInvalidMessage(from, topic) {\n this.markInvalidMessageDelivery(from, topic);\n }\n rejectMessage(from, msgIdStr, topic, reason) {\n // eslint-disable-next-line default-case\n switch (reason) {\n // these messages are not tracked, but the peer is penalized as they are invalid\n case RejectReason.Error:\n this.markInvalidMessageDelivery(from, topic);\n return;\n // we ignore those messages, so do nothing.\n case RejectReason.Blacklisted:\n return;\n // the rest are handled after record creation\n }\n const drec = this.deliveryRecords.ensureRecord(msgIdStr);\n // defensive check that this is the first rejection -- delivery status should be unknown\n if (drec.status !== DeliveryRecordStatus.unknown) {\n this.log('unexpected rejection: message from %s was first seen %s ago and has delivery status %d', from, Date.now() - drec.firstSeenTsMs, DeliveryRecordStatus[drec.status]);\n return;\n }\n if (reason === RejectReason.Ignore) {\n // we were explicitly instructed by the validator to ignore the message but not penalize the peer\n drec.status = DeliveryRecordStatus.ignored;\n drec.peers.clear();\n return;\n }\n // mark the message as invalid and penalize peers that have already forwarded it.\n drec.status = DeliveryRecordStatus.invalid;\n this.markInvalidMessageDelivery(from, topic);\n drec.peers.forEach((p) => {\n this.markInvalidMessageDelivery(p, topic);\n });\n // release the delivery time tracking map to free some memory early\n drec.peers.clear();\n }\n duplicateMessage(from, msgIdStr, topic) {\n const drec = this.deliveryRecords.ensureRecord(msgIdStr);\n if (drec.peers.has(from)) {\n // we have already seen this duplicate\n return;\n }\n // eslint-disable-next-line default-case\n switch (drec.status) {\n case DeliveryRecordStatus.unknown:\n // the message is being validated; track the peer delivery and wait for\n // the Deliver/Reject/Ignore notification.\n drec.peers.add(from);\n break;\n case DeliveryRecordStatus.valid:\n // mark the peer delivery time to only count a duplicate delivery once.\n drec.peers.add(from);\n this.markDuplicateMessageDelivery(from, topic, drec.validated);\n break;\n case DeliveryRecordStatus.invalid:\n // we no longer track delivery time\n this.markInvalidMessageDelivery(from, topic);\n break;\n case DeliveryRecordStatus.ignored:\n // the message was ignored; do nothing (we don't know if it was valid)\n break;\n }\n }\n /**\n * Increments the \"invalid message deliveries\" counter for all scored topics the message is published in.\n */\n markInvalidMessageDelivery(from, topic) {\n const pstats = this.peerStats.get(from);\n if (pstats != null) {\n const tstats = this.getPtopicStats(pstats, topic);\n if (tstats != null) {\n tstats.invalidMessageDeliveries += 1;\n }\n }\n }\n /**\n * Increments the \"first message deliveries\" counter for all scored topics the message is published in,\n * as well as the \"mesh message deliveries\" counter, if the peer is in the mesh for the topic.\n * Messages already known (with the seenCache) are counted with markDuplicateMessageDelivery()\n */\n markFirstMessageDelivery(from, topic) {\n const pstats = this.peerStats.get(from);\n if (pstats != null) {\n const tstats = this.getPtopicStats(pstats, topic);\n if (tstats != null) {\n let cap = this.params.topics[topic].firstMessageDeliveriesCap;\n tstats.firstMessageDeliveries = Math.min(cap, tstats.firstMessageDeliveries + 1);\n if (tstats.inMesh) {\n cap = this.params.topics[topic].meshMessageDeliveriesCap;\n tstats.meshMessageDeliveries = Math.min(cap, tstats.meshMessageDeliveries + 1);\n }\n }\n }\n }\n /**\n * Increments the \"mesh message deliveries\" counter for messages we've seen before,\n * as long the message was received within the P3 window.\n */\n markDuplicateMessageDelivery(from, topic, validatedTime) {\n const pstats = this.peerStats.get(from);\n if (pstats != null) {\n const now = validatedTime !== undefined ? Date.now() : 0;\n const tstats = this.getPtopicStats(pstats, topic);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (tstats != null && tstats.inMesh) {\n const tparams = this.params.topics[topic];\n // check against the mesh delivery window -- if the validated time is passed as 0, then\n // the message was received before we finished validation and thus falls within the mesh\n // delivery window.\n if (validatedTime !== undefined) {\n const deliveryDelayMs = now - validatedTime;\n const isLateDelivery = deliveryDelayMs > tparams.meshMessageDeliveriesWindow;\n this.metrics?.onDuplicateMsgDelivery(topic, deliveryDelayMs, isLateDelivery);\n if (isLateDelivery) {\n return;\n }\n }\n const cap = tparams.meshMessageDeliveriesCap;\n tstats.meshMessageDeliveries = Math.min(cap, tstats.meshMessageDeliveries + 1);\n }\n }\n }\n /**\n * Removes an IP list from the tracking list for a peer.\n */\n removeIPsForPeer(id, ipsToRemove) {\n for (const ipToRemove of ipsToRemove) {\n const peerSet = this.peerIPs.get(ipToRemove);\n if (peerSet != null) {\n peerSet.delete(id);\n if (peerSet.size === 0) {\n this.peerIPs.delete(ipToRemove);\n }\n }\n }\n }\n /**\n * Returns topic stats if they exist, otherwise if the supplied parameters score the\n * topic, inserts the default stats and returns a reference to those. If neither apply, returns None.\n */\n getPtopicStats(pstats, topic) {\n let topicStats = pstats.topics[topic];\n if (topicStats !== undefined) {\n return topicStats;\n }\n if (this.params.topics[topic] !== undefined) {\n topicStats = {\n inMesh: false,\n graftTime: 0,\n meshTime: 0,\n firstMessageDeliveries: 0,\n meshMessageDeliveries: 0,\n meshMessageDeliveriesActive: false,\n meshFailurePenalty: 0,\n invalidMessageDeliveries: 0\n };\n pstats.topics[topic] = topicStats;\n return topicStats;\n }\n return null;\n }\n}\n//# sourceMappingURL=peer-score.js.map","export function computeScoreWeights(peer, pstats, params, peerIPs, topicStrToLabel) {\n let score = 0;\n const byTopic = new Map();\n // topic stores\n Object.entries(pstats.topics).forEach(([topic, tstats]) => {\n // the topic parameters\n // Aggregate by known topicLabel or throw to 'unknown'. This prevent too high cardinality\n const topicLabel = topicStrToLabel.get(topic) ?? 'unknown';\n const topicParams = params.topics[topic];\n if (topicParams === undefined) {\n // we are not scoring this topic\n return;\n }\n let topicScores = byTopic.get(topicLabel);\n if (topicScores == null) {\n topicScores = {\n p1w: 0,\n p2w: 0,\n p3w: 0,\n p3bw: 0,\n p4w: 0\n };\n byTopic.set(topicLabel, topicScores);\n }\n let p1w = 0;\n let p2w = 0;\n let p3w = 0;\n let p3bw = 0;\n let p4w = 0;\n // P1: time in Mesh\n if (tstats.inMesh) {\n const p1 = Math.max(tstats.meshTime / topicParams.timeInMeshQuantum, topicParams.timeInMeshCap);\n p1w += p1 * topicParams.timeInMeshWeight;\n }\n // P2: first message deliveries\n let p2 = tstats.firstMessageDeliveries;\n if (p2 > topicParams.firstMessageDeliveriesCap) {\n p2 = topicParams.firstMessageDeliveriesCap;\n }\n p2w += p2 * topicParams.firstMessageDeliveriesWeight;\n // P3: mesh message deliveries\n if (tstats.meshMessageDeliveriesActive &&\n tstats.meshMessageDeliveries < topicParams.meshMessageDeliveriesThreshold) {\n const deficit = topicParams.meshMessageDeliveriesThreshold - tstats.meshMessageDeliveries;\n const p3 = deficit * deficit;\n p3w += p3 * topicParams.meshMessageDeliveriesWeight;\n }\n // P3b:\n // NOTE: the weight of P3b is negative (validated in validateTopicScoreParams) so this detracts\n const p3b = tstats.meshFailurePenalty;\n p3bw += p3b * topicParams.meshFailurePenaltyWeight;\n // P4: invalid messages\n // NOTE: the weight of P4 is negative (validated in validateTopicScoreParams) so this detracts\n const p4 = tstats.invalidMessageDeliveries * tstats.invalidMessageDeliveries;\n p4w += p4 * topicParams.invalidMessageDeliveriesWeight;\n // update score, mixing with topic weight\n score += (p1w + p2w + p3w + p3bw + p4w) * topicParams.topicWeight;\n topicScores.p1w += p1w;\n topicScores.p2w += p2w;\n topicScores.p3w += p3w;\n topicScores.p3bw += p3bw;\n topicScores.p4w += p4w;\n });\n // apply the topic score cap, if any\n if (params.topicScoreCap > 0 && score > params.topicScoreCap) {\n score = params.topicScoreCap;\n // Proportionally apply cap to all individual contributions\n const capF = params.topicScoreCap / score;\n for (const ws of byTopic.values()) {\n ws.p1w *= capF;\n ws.p2w *= capF;\n ws.p3w *= capF;\n ws.p3bw *= capF;\n ws.p4w *= capF;\n }\n }\n let p5w = 0;\n let p6w = 0;\n let p7w = 0;\n // P5: application-specific score\n const p5 = params.appSpecificScore(peer);\n p5w += p5 * params.appSpecificWeight;\n // P6: IP colocation factor\n pstats.knownIPs.forEach((ip) => {\n if (params.IPColocationFactorWhitelist.has(ip)) {\n return;\n }\n // P6 has a cliff (IPColocationFactorThreshold)\n // It's only applied if at least that many peers are connected to us from that source IP addr.\n // It is quadratic, and the weight is negative (validated in validatePeerScoreParams)\n const peersInIP = peerIPs.get(ip);\n const numPeersInIP = (peersInIP != null) ? peersInIP.size : 0;\n if (numPeersInIP > params.IPColocationFactorThreshold) {\n const surplus = numPeersInIP - params.IPColocationFactorThreshold;\n const p6 = surplus * surplus;\n p6w += p6 * params.IPColocationFactorWeight;\n }\n });\n // P7: behavioural pattern penalty\n const p7 = pstats.behaviourPenalty * pstats.behaviourPenalty;\n p7w += p7 * params.behaviourPenaltyWeight;\n score += p5w + p6w + p7w;\n return {\n byTopic,\n p5w,\n p6w,\n p7w,\n score\n };\n}\nexport function computeAllPeersScoreWeights(peerIdStrs, peerStats, params, peerIPs, topicStrToLabel) {\n const sw = {\n byTopic: new Map(),\n p5w: [],\n p6w: [],\n p7w: [],\n score: []\n };\n for (const peerIdStr of peerIdStrs) {\n const pstats = peerStats.get(peerIdStr);\n if (pstats != null) {\n const swPeer = computeScoreWeights(peerIdStr, pstats, params, peerIPs, topicStrToLabel);\n for (const [topic, swPeerTopic] of swPeer.byTopic) {\n let swTopic = sw.byTopic.get(topic);\n if (swTopic == null) {\n swTopic = {\n p1w: [],\n p2w: [],\n p3w: [],\n p3bw: [],\n p4w: []\n };\n sw.byTopic.set(topic, swTopic);\n }\n swTopic.p1w.push(swPeerTopic.p1w);\n swTopic.p2w.push(swPeerTopic.p2w);\n swTopic.p3w.push(swPeerTopic.p3w);\n swTopic.p3bw.push(swPeerTopic.p3bw);\n swTopic.p4w.push(swPeerTopic.p4w);\n }\n sw.p5w.push(swPeer.p5w);\n sw.p6w.push(swPeer.p6w);\n sw.p7w.push(swPeer.p7w);\n sw.score.push(swPeer.score);\n }\n else {\n sw.p5w.push(0);\n sw.p6w.push(0);\n sw.p7w.push(0);\n sw.score.push(0);\n }\n }\n return sw;\n}\n//# sourceMappingURL=scoreMetrics.js.map","import { encode, decode } from 'it-length-prefixed';\nimport { pipe } from 'it-pipe';\nimport { pushable } from 'it-pushable';\nexport class OutboundStream {\n rawStream;\n pushable;\n closeController;\n maxBufferSize;\n constructor(rawStream, errCallback, opts) {\n this.rawStream = rawStream;\n this.pushable = pushable();\n this.closeController = new AbortController();\n this.maxBufferSize = opts.maxBufferSize ?? Infinity;\n this.closeController.signal.addEventListener('abort', () => {\n rawStream.close()\n .catch(err => {\n rawStream.abort(err);\n });\n });\n pipe(this.pushable, this.rawStream).catch(errCallback);\n }\n get protocol() {\n // TODO remove this non-nullish assertion after https://github.com/libp2p/js-libp2p-interfaces/pull/265 is incorporated\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.rawStream.protocol;\n }\n push(data) {\n if (this.pushable.readableLength > this.maxBufferSize) {\n throw Error(`OutboundStream buffer full, size > ${this.maxBufferSize}`);\n }\n this.pushable.push(encode.single(data));\n }\n /**\n * Same to push() but this is prefixed data so no need to encode length prefixed again\n */\n pushPrefixed(data) {\n if (this.pushable.readableLength > this.maxBufferSize) {\n throw Error(`OutboundStream buffer full, size > ${this.maxBufferSize}`);\n }\n this.pushable.push(data);\n }\n async close() {\n this.closeController.abort();\n // similar to pushable.end() but clear the internal buffer\n await this.pushable.return();\n }\n}\nexport class InboundStream {\n source;\n rawStream;\n closeController;\n constructor(rawStream, opts = {}) {\n this.rawStream = rawStream;\n this.closeController = new AbortController();\n this.closeController.signal.addEventListener('abort', () => {\n rawStream.close()\n .catch(err => {\n rawStream.abort(err);\n });\n });\n this.source = pipe(this.rawStream, (source) => decode(source, opts));\n }\n async close() {\n this.closeController.abort();\n }\n}\n//# sourceMappingURL=stream.js.map","import { RejectReason } from './types.js';\n/**\n * IWantTracer is an internal tracer that tracks IWANT requests in order to penalize\n * peers who don't follow up on IWANT requests after an IHAVE advertisement.\n * The tracking of promises is probabilistic to avoid using too much memory.\n *\n * Note: Do not confuse these 'promises' with JS Promise objects.\n * These 'promises' are merely expectations of a peer's behavior.\n */\nexport class IWantTracer {\n gossipsubIWantFollowupMs;\n msgIdToStrFn;\n metrics;\n /**\n * Promises to deliver a message\n * Map per message id, per peer, promise expiration time\n */\n promises = new Map();\n /**\n * First request time by msgId. Used for metrics to track expire times.\n * Necessary to know if peers are actually breaking promises or simply sending them a bit later\n */\n requestMsByMsg = new Map();\n requestMsByMsgExpire;\n constructor(gossipsubIWantFollowupMs, msgIdToStrFn, metrics) {\n this.gossipsubIWantFollowupMs = gossipsubIWantFollowupMs;\n this.msgIdToStrFn = msgIdToStrFn;\n this.metrics = metrics;\n this.requestMsByMsgExpire = 10 * gossipsubIWantFollowupMs;\n }\n get size() {\n return this.promises.size;\n }\n get requestMsByMsgSize() {\n return this.requestMsByMsg.size;\n }\n /**\n * Track a promise to deliver a message from a list of msgIds we are requesting\n */\n addPromise(from, msgIds) {\n // pick msgId randomly from the list\n const ix = Math.floor(Math.random() * msgIds.length);\n const msgId = msgIds[ix];\n const msgIdStr = this.msgIdToStrFn(msgId);\n let expireByPeer = this.promises.get(msgIdStr);\n if (expireByPeer == null) {\n expireByPeer = new Map();\n this.promises.set(msgIdStr, expireByPeer);\n }\n const now = Date.now();\n // If a promise for this message id and peer already exists we don't update the expiry\n if (!expireByPeer.has(from)) {\n expireByPeer.set(from, now + this.gossipsubIWantFollowupMs);\n if (this.metrics != null) {\n this.metrics.iwantPromiseStarted.inc(1);\n if (!this.requestMsByMsg.has(msgIdStr)) {\n this.requestMsByMsg.set(msgIdStr, now);\n }\n }\n }\n }\n /**\n * Returns the number of broken promises for each peer who didn't follow up on an IWANT request.\n *\n * This should be called not too often relative to the expire times, since it iterates over the whole data.\n */\n getBrokenPromises() {\n const now = Date.now();\n const result = new Map();\n let brokenPromises = 0;\n this.promises.forEach((expireByPeer, msgId) => {\n expireByPeer.forEach((expire, p) => {\n // the promise has been broken\n if (expire < now) {\n // add 1 to result\n result.set(p, (result.get(p) ?? 0) + 1);\n // delete from tracked promises\n expireByPeer.delete(p);\n // for metrics\n brokenPromises++;\n }\n });\n // clean up empty promises for a msgId\n if (expireByPeer.size === 0) {\n this.promises.delete(msgId);\n }\n });\n this.metrics?.iwantPromiseBroken.inc(brokenPromises);\n return result;\n }\n /**\n * Someone delivered a message, stop tracking promises for it\n */\n deliverMessage(msgIdStr, isDuplicate = false) {\n this.trackMessage(msgIdStr);\n const expireByPeer = this.promises.get(msgIdStr);\n // Expired promise, check requestMsByMsg\n if (expireByPeer != null) {\n this.promises.delete(msgIdStr);\n if (this.metrics != null) {\n this.metrics.iwantPromiseResolved.inc(1);\n if (isDuplicate)\n this.metrics.iwantPromiseResolvedFromDuplicate.inc(1);\n this.metrics.iwantPromiseResolvedPeers.inc(expireByPeer.size);\n }\n }\n }\n /**\n * A message got rejected, so we can stop tracking promises and let the score penalty apply from invalid message delivery,\n * unless its an obviously invalid message.\n */\n rejectMessage(msgIdStr, reason) {\n this.trackMessage(msgIdStr);\n // A message got rejected, so we can stop tracking promises and let the score penalty apply.\n // With the expection of obvious invalid messages\n switch (reason) {\n case RejectReason.Error:\n return;\n default:\n break;\n }\n this.promises.delete(msgIdStr);\n }\n clear() {\n this.promises.clear();\n }\n prune() {\n const maxMs = Date.now() - this.requestMsByMsgExpire;\n let count = 0;\n for (const [k, v] of this.requestMsByMsg.entries()) {\n if (v < maxMs) {\n // messages that stay too long in the requestMsByMsg map, delete\n this.requestMsByMsg.delete(k);\n count++;\n }\n else {\n // recent messages, keep them\n // sort by insertion order\n break;\n }\n }\n this.metrics?.iwantMessagePruned.inc(count);\n }\n trackMessage(msgIdStr) {\n if (this.metrics != null) {\n const requestMs = this.requestMsByMsg.get(msgIdStr);\n if (requestMs !== undefined) {\n this.metrics.iwantPromiseDeliveryTime.observe((Date.now() - requestMs) / 1000);\n this.requestMsByMsg.delete(msgIdStr);\n }\n }\n }\n}\n//# sourceMappingURL=tracer.js.map","/* eslint-env browser */\n// Check native crypto exists and is enabled (In insecure context `self.crypto`\n// exists but `self.crypto.subtle` does not).\nexport default {\n get(win = globalThis) {\n const nativeCrypto = win.crypto;\n if (nativeCrypto?.subtle == null) {\n throw Object.assign(new Error('Missing Web Crypto API. ' +\n 'The most likely cause of this error is that this page is being accessed ' +\n 'from an insecure context (i.e. not HTTPS). For more information and ' +\n 'possible resolutions see ' +\n 'https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api'), { code: 'ERR_MISSING_WEB_CRYPTO' });\n }\n return nativeCrypto;\n }\n};\n//# sourceMappingURL=webcrypto-browser.js.map","import { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nexport function base64urlToBuffer(str, len) {\n let buf = uint8ArrayFromString(str, 'base64urlpad');\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return buf;\n}\nexport function isPromise(thing) {\n if (thing == null) {\n return false;\n }\n return typeof thing.then === 'function' &&\n typeof thing.catch === 'function' &&\n typeof thing.finally === 'function';\n}\n//# sourceMappingURL=util.js.map","import { ed25519 as ed } from '@noble/curves/ed25519';\nconst PUBLIC_KEY_BYTE_LENGTH = 32;\nconst PRIVATE_KEY_BYTE_LENGTH = 64; // private key is actually 32 bytes but for historical reasons we concat private and public keys\nconst KEYS_BYTE_LENGTH = 32;\nexport { PUBLIC_KEY_BYTE_LENGTH as publicKeyLength };\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n // the actual private key (32 bytes)\n const privateKeyRaw = ed.utils.randomPrivateKey();\n const publicKey = ed.getPublicKey(privateKeyRaw);\n // concatenated the public key to the private key\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\n/**\n * Generate keypair from a 32 byte uint8array\n */\nexport function generateKeyFromSeed(seed) {\n if (seed.length !== KEYS_BYTE_LENGTH) {\n throw new TypeError('\"seed\" must be 32 bytes in length.');\n }\n else if (!(seed instanceof Uint8Array)) {\n throw new TypeError('\"seed\" must be a node.js Buffer, or Uint8Array.');\n }\n // based on node forges algorithm, the seed is used directly as private key\n const privateKeyRaw = seed;\n const publicKey = ed.getPublicKey(privateKeyRaw);\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\nexport function hashAndSign(privateKey, msg) {\n const privateKeyRaw = privateKey.subarray(0, KEYS_BYTE_LENGTH);\n return ed.sign(msg instanceof Uint8Array ? msg : msg.subarray(), privateKeyRaw);\n}\nexport function hashAndVerify(publicKey, sig, msg) {\n return ed.verify(sig, msg instanceof Uint8Array ? msg : msg.subarray(), publicKey);\n}\nfunction concatKeys(privateKeyRaw, publicKey) {\n const privateKey = new Uint8Array(PRIVATE_KEY_BYTE_LENGTH);\n for (let i = 0; i < KEYS_BYTE_LENGTH; i++) {\n privateKey[i] = privateKeyRaw[i];\n privateKey[KEYS_BYTE_LENGTH + i] = publicKey[i];\n }\n return privateKey;\n}\n//# sourceMappingURL=ed25519-browser.js.map","import { concat } from 'uint8arrays/concat';\nimport { fromString } from 'uint8arrays/from-string';\nimport webcrypto from '../webcrypto.js';\n// WebKit on Linux does not support deriving a key from an empty PBKDF2 key.\n// So, as a workaround, we provide the generated key as a constant. We test that\n// this generated key is accurate in test/workaround.spec.ts\n// Generated via:\n// await crypto.subtle.exportKey('jwk',\n// await crypto.subtle.deriveKey(\n// { name: 'PBKDF2', salt: new Uint8Array(16), iterations: 32767, hash: { name: 'SHA-256' } },\n// await crypto.subtle.importKey('raw', new Uint8Array(0), { name: 'PBKDF2' }, false, ['deriveKey']),\n// { name: 'AES-GCM', length: 128 }, true, ['encrypt', 'decrypt'])\n// )\nexport const derivedEmptyPasswordKey = { alg: 'A128GCM', ext: true, k: 'scm9jmO_4BJAgdwWGVulLg', key_ops: ['encrypt', 'decrypt'], kty: 'oct' };\n// Based off of code from https://github.com/luke-park/SecureCompatibleEncryptionExamples\nexport function create(opts) {\n const algorithm = opts?.algorithm ?? 'AES-GCM';\n let keyLength = opts?.keyLength ?? 16;\n const nonceLength = opts?.nonceLength ?? 12;\n const digest = opts?.digest ?? 'SHA-256';\n const saltLength = opts?.saltLength ?? 16;\n const iterations = opts?.iterations ?? 32767;\n const crypto = webcrypto.get();\n keyLength *= 8; // Browser crypto uses bits instead of bytes\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to encrypt the data.\n */\n async function encrypt(data, password) {\n const salt = crypto.getRandomValues(new Uint8Array(saltLength));\n const nonce = crypto.getRandomValues(new Uint8Array(nonceLength));\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n }\n }\n else {\n // Derive a key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n // Encrypt the string.\n const ciphertext = await crypto.subtle.encrypt(aesGcm, cryptoKey, data);\n return concat([salt, aesGcm.iv, new Uint8Array(ciphertext)]);\n }\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to decrypt the data. The options used to create\n * this decryption cipher must be the same as those used to create\n * the encryption cipher.\n */\n async function decrypt(data, password) {\n const salt = data.subarray(0, saltLength);\n const nonce = data.subarray(saltLength, saltLength + nonceLength);\n const ciphertext = data.subarray(saltLength + nonceLength);\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['decrypt']);\n }\n }\n else {\n // Derive the key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n // Decrypt the string.\n const plaintext = await crypto.subtle.decrypt(aesGcm, cryptoKey, ciphertext);\n return new Uint8Array(plaintext);\n }\n const cipher = {\n encrypt,\n decrypt\n };\n return cipher;\n}\n//# sourceMappingURL=aes-gcm.browser.js.map","import { base64 } from 'multiformats/bases/base64';\nimport * as ciphers from '../ciphers/aes-gcm.js';\n/**\n * Exports the given PrivateKey as a base64 encoded string.\n * The PrivateKey is encrypted via a password derived PBKDF2 key\n * leveraging the aes-gcm cipher algorithm.\n */\nexport async function exporter(privateKey, password) {\n const cipher = ciphers.create();\n const encryptedKey = await cipher.encrypt(privateKey, password);\n return base64.encode(encryptedKey);\n}\n//# sourceMappingURL=exporter.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var KeyType;\n(function (KeyType) {\n KeyType[\"RSA\"] = \"RSA\";\n KeyType[\"Ed25519\"] = \"Ed25519\";\n KeyType[\"Secp256k1\"] = \"Secp256k1\";\n})(KeyType || (KeyType = {}));\nvar __KeyTypeValues;\n(function (__KeyTypeValues) {\n __KeyTypeValues[__KeyTypeValues[\"RSA\"] = 0] = \"RSA\";\n __KeyTypeValues[__KeyTypeValues[\"Ed25519\"] = 1] = \"Ed25519\";\n __KeyTypeValues[__KeyTypeValues[\"Secp256k1\"] = 2] = \"Secp256k1\";\n})(__KeyTypeValues || (__KeyTypeValues = {}));\n(function (KeyType) {\n KeyType.codec = () => {\n return enumeration(__KeyTypeValues);\n };\n})(KeyType || (KeyType = {}));\nexport var PublicKey;\n(function (PublicKey) {\n let _codec;\n PublicKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PublicKey.encode = (obj) => {\n return encodeMessage(obj, PublicKey.codec());\n };\n PublicKey.decode = (buf) => {\n return decodeMessage(buf, PublicKey.codec());\n };\n})(PublicKey || (PublicKey = {}));\nexport var PrivateKey;\n(function (PrivateKey) {\n let _codec;\n PrivateKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PrivateKey.encode = (obj) => {\n return encodeMessage(obj, PrivateKey.codec());\n };\n PrivateKey.decode = (buf) => {\n return decodeMessage(buf, PrivateKey.codec());\n };\n})(PrivateKey || (PrivateKey = {}));\n//# sourceMappingURL=keys.js.map","import { CodeError } from '@libp2p/interface';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { isPromise } from '../util.js';\nimport * as crypto from './ed25519.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nexport class Ed25519PublicKey {\n _key;\n constructor(key) {\n this._key = ensureKey(key, crypto.publicKeyLength);\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class Ed25519PrivateKey {\n _key;\n _publicKey;\n // key - 64 byte Uint8Array containing private key\n // publicKey - 32 byte Uint8Array containing public key\n constructor(key, publicKey) {\n this._key = ensureKey(key, crypto.privateKeyLength);\n this._publicKey = ensureKey(publicKey, crypto.publicKeyLength);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Ed25519PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the identity multihash containing its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n *\n * @returns {Promise}\n */\n async id() {\n const encoding = identity.digest(this.public.bytes);\n return base58btc.encode(encoding.bytes).substring(1);\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalEd25519PrivateKey(bytes) {\n // Try the old, redundant public key version\n if (bytes.length > crypto.privateKeyLength) {\n bytes = ensureKey(bytes, crypto.privateKeyLength + crypto.publicKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.privateKeyLength, bytes.length);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n }\n bytes = ensureKey(bytes, crypto.privateKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.publicKeyLength);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n}\nexport function unmarshalEd25519PublicKey(bytes) {\n bytes = ensureKey(bytes, crypto.publicKeyLength);\n return new Ed25519PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const { privateKey, publicKey } = crypto.generateKey();\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nexport async function generateKeyPairFromSeed(seed) {\n const { privateKey, publicKey } = crypto.generateKeyFromSeed(seed);\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nfunction ensureKey(key, length) {\n key = Uint8Array.from(key ?? []);\n if (key.length !== length) {\n throw new CodeError(`Key must be a Uint8Array of length ${length}, got ${key.length}`, 'ERR_INVALID_KEY_TYPE');\n }\n return key;\n}\n//# sourceMappingURL=ed25519-class.js.map","import { base64 } from 'multiformats/bases/base64';\nimport * as ciphers from '../ciphers/aes-gcm.js';\n/**\n * Attempts to decrypt a base64 encoded PrivateKey string\n * with the given password. The privateKey must have been exported\n * using the same password and underlying cipher (aes-gcm)\n */\nexport async function importer(privateKey, password) {\n const encryptedKey = base64.decode(privateKey);\n const cipher = ciphers.create();\n return cipher.decrypt(encryptedKey, password);\n}\n//# sourceMappingURL=importer.js.map","import { CodeError } from '@libp2p/interface';\nimport { randomBytes as randB } from '@noble/hashes/utils';\n/**\n * Generates a Uint8Array with length `number` populated by random bytes\n */\nexport default function randomBytes(length) {\n if (isNaN(length) || length <= 0) {\n throw new CodeError('random bytes length must be a Number bigger than 0', 'ERR_INVALID_LENGTH');\n }\n return randB(length);\n}\n//# sourceMappingURL=random-bytes.js.map","import { hash as assertHash, number as assertNumber } from './_assert.js';\nimport { hmac } from './hmac.js';\nimport { createView, toBytes, checkOpts, asyncLoop } from './utils.js';\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n assertHash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n assertNumber(c);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = toBytes(_password);\n const salt = toBytes(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nexport function pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexport async function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, () => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n//# sourceMappingURL=pbkdf2.js.map","/*!\n * MIT License\n * \n * Copyright (c) 2017-2022 Peculiar Ventures, LLC\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n */\n\nconst ARRAY_BUFFER_NAME = \"[object ArrayBuffer]\";\nclass BufferSourceConverter {\n static isArrayBuffer(data) {\n return Object.prototype.toString.call(data) === ARRAY_BUFFER_NAME;\n }\n static toArrayBuffer(data) {\n if (this.isArrayBuffer(data)) {\n return data;\n }\n if (data.byteLength === data.buffer.byteLength) {\n return data.buffer;\n }\n if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {\n return data.buffer;\n }\n return this.toUint8Array(data.buffer)\n .slice(data.byteOffset, data.byteOffset + data.byteLength)\n .buffer;\n }\n static toUint8Array(data) {\n return this.toView(data, Uint8Array);\n }\n static toView(data, type) {\n if (data.constructor === type) {\n return data;\n }\n if (this.isArrayBuffer(data)) {\n return new type(data);\n }\n if (this.isArrayBufferView(data)) {\n return new type(data.buffer, data.byteOffset, data.byteLength);\n }\n throw new TypeError(\"The provided value is not of type '(ArrayBuffer or ArrayBufferView)'\");\n }\n static isBufferSource(data) {\n return this.isArrayBufferView(data)\n || this.isArrayBuffer(data);\n }\n static isArrayBufferView(data) {\n return ArrayBuffer.isView(data)\n || (data && this.isArrayBuffer(data.buffer));\n }\n static isEqual(a, b) {\n const aView = BufferSourceConverter.toUint8Array(a);\n const bView = BufferSourceConverter.toUint8Array(b);\n if (aView.length !== bView.byteLength) {\n return false;\n }\n for (let i = 0; i < aView.length; i++) {\n if (aView[i] !== bView[i]) {\n return false;\n }\n }\n return true;\n }\n static concat(...args) {\n let buffers;\n if (Array.isArray(args[0]) && !(args[1] instanceof Function)) {\n buffers = args[0];\n }\n else if (Array.isArray(args[0]) && args[1] instanceof Function) {\n buffers = args[0];\n }\n else {\n if (args[args.length - 1] instanceof Function) {\n buffers = args.slice(0, args.length - 1);\n }\n else {\n buffers = args;\n }\n }\n let size = 0;\n for (const buffer of buffers) {\n size += buffer.byteLength;\n }\n const res = new Uint8Array(size);\n let offset = 0;\n for (const buffer of buffers) {\n const view = this.toUint8Array(buffer);\n res.set(view, offset);\n offset += view.length;\n }\n if (args[args.length - 1] instanceof Function) {\n return this.toView(res, args[args.length - 1]);\n }\n return res.buffer;\n }\n}\n\nconst STRING_TYPE = \"string\";\nconst HEX_REGEX = /^[0-9a-f]+$/i;\nconst BASE64_REGEX = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\nconst BASE64URL_REGEX = /^[a-zA-Z0-9-_]+$/;\nclass Utf8Converter {\n static fromString(text) {\n const s = unescape(encodeURIComponent(text));\n const uintArray = new Uint8Array(s.length);\n for (let i = 0; i < s.length; i++) {\n uintArray[i] = s.charCodeAt(i);\n }\n return uintArray.buffer;\n }\n static toString(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n let encodedString = \"\";\n for (let i = 0; i < buf.length; i++) {\n encodedString += String.fromCharCode(buf[i]);\n }\n const decodedString = decodeURIComponent(escape(encodedString));\n return decodedString;\n }\n}\nclass Utf16Converter {\n static toString(buffer, littleEndian = false) {\n const arrayBuffer = BufferSourceConverter.toArrayBuffer(buffer);\n const dataView = new DataView(arrayBuffer);\n let res = \"\";\n for (let i = 0; i < arrayBuffer.byteLength; i += 2) {\n const code = dataView.getUint16(i, littleEndian);\n res += String.fromCharCode(code);\n }\n return res;\n }\n static fromString(text, littleEndian = false) {\n const res = new ArrayBuffer(text.length * 2);\n const dataView = new DataView(res);\n for (let i = 0; i < text.length; i++) {\n dataView.setUint16(i * 2, text.charCodeAt(i), littleEndian);\n }\n return res;\n }\n}\nclass Convert {\n static isHex(data) {\n return typeof data === STRING_TYPE\n && HEX_REGEX.test(data);\n }\n static isBase64(data) {\n return typeof data === STRING_TYPE\n && BASE64_REGEX.test(data);\n }\n static isBase64Url(data) {\n return typeof data === STRING_TYPE\n && BASE64URL_REGEX.test(data);\n }\n static ToString(buffer, enc = \"utf8\") {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n switch (enc.toLowerCase()) {\n case \"utf8\":\n return this.ToUtf8String(buf);\n case \"binary\":\n return this.ToBinary(buf);\n case \"hex\":\n return this.ToHex(buf);\n case \"base64\":\n return this.ToBase64(buf);\n case \"base64url\":\n return this.ToBase64Url(buf);\n case \"utf16le\":\n return Utf16Converter.toString(buf, true);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.toString(buf);\n default:\n throw new Error(`Unknown type of encoding '${enc}'`);\n }\n }\n static FromString(str, enc = \"utf8\") {\n if (!str) {\n return new ArrayBuffer(0);\n }\n switch (enc.toLowerCase()) {\n case \"utf8\":\n return this.FromUtf8String(str);\n case \"binary\":\n return this.FromBinary(str);\n case \"hex\":\n return this.FromHex(str);\n case \"base64\":\n return this.FromBase64(str);\n case \"base64url\":\n return this.FromBase64Url(str);\n case \"utf16le\":\n return Utf16Converter.fromString(str, true);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.fromString(str);\n default:\n throw new Error(`Unknown type of encoding '${enc}'`);\n }\n }\n static ToBase64(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n if (typeof btoa !== \"undefined\") {\n const binary = this.ToString(buf, \"binary\");\n return btoa(binary);\n }\n else {\n return Buffer.from(buf).toString(\"base64\");\n }\n }\n static FromBase64(base64) {\n const formatted = this.formatString(base64);\n if (!formatted) {\n return new ArrayBuffer(0);\n }\n if (!Convert.isBase64(formatted)) {\n throw new TypeError(\"Argument 'base64Text' is not Base64 encoded\");\n }\n if (typeof atob !== \"undefined\") {\n return this.FromBinary(atob(formatted));\n }\n else {\n return new Uint8Array(Buffer.from(formatted, \"base64\")).buffer;\n }\n }\n static FromBase64Url(base64url) {\n const formatted = this.formatString(base64url);\n if (!formatted) {\n return new ArrayBuffer(0);\n }\n if (!Convert.isBase64Url(formatted)) {\n throw new TypeError(\"Argument 'base64url' is not Base64Url encoded\");\n }\n return this.FromBase64(this.Base64Padding(formatted.replace(/\\-/g, \"+\").replace(/\\_/g, \"/\")));\n }\n static ToBase64Url(data) {\n return this.ToBase64(data).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/\\=/g, \"\");\n }\n static FromUtf8String(text, encoding = Convert.DEFAULT_UTF8_ENCODING) {\n switch (encoding) {\n case \"ascii\":\n return this.FromBinary(text);\n case \"utf8\":\n return Utf8Converter.fromString(text);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.fromString(text);\n case \"utf16le\":\n case \"usc2\":\n return Utf16Converter.fromString(text, true);\n default:\n throw new Error(`Unknown type of encoding '${encoding}'`);\n }\n }\n static ToUtf8String(buffer, encoding = Convert.DEFAULT_UTF8_ENCODING) {\n switch (encoding) {\n case \"ascii\":\n return this.ToBinary(buffer);\n case \"utf8\":\n return Utf8Converter.toString(buffer);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.toString(buffer);\n case \"utf16le\":\n case \"usc2\":\n return Utf16Converter.toString(buffer, true);\n default:\n throw new Error(`Unknown type of encoding '${encoding}'`);\n }\n }\n static FromBinary(text) {\n const stringLength = text.length;\n const resultView = new Uint8Array(stringLength);\n for (let i = 0; i < stringLength; i++) {\n resultView[i] = text.charCodeAt(i);\n }\n return resultView.buffer;\n }\n static ToBinary(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n let res = \"\";\n for (let i = 0; i < buf.length; i++) {\n res += String.fromCharCode(buf[i]);\n }\n return res;\n }\n static ToHex(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n let result = \"\";\n const len = buf.length;\n for (let i = 0; i < len; i++) {\n const byte = buf[i];\n if (byte < 16) {\n result += \"0\";\n }\n result += byte.toString(16);\n }\n return result;\n }\n static FromHex(hexString) {\n let formatted = this.formatString(hexString);\n if (!formatted) {\n return new ArrayBuffer(0);\n }\n if (!Convert.isHex(formatted)) {\n throw new TypeError(\"Argument 'hexString' is not HEX encoded\");\n }\n if (formatted.length % 2) {\n formatted = `0${formatted}`;\n }\n const res = new Uint8Array(formatted.length / 2);\n for (let i = 0; i < formatted.length; i = i + 2) {\n const c = formatted.slice(i, i + 2);\n res[i / 2] = parseInt(c, 16);\n }\n return res.buffer;\n }\n static ToUtf16String(buffer, littleEndian = false) {\n return Utf16Converter.toString(buffer, littleEndian);\n }\n static FromUtf16String(text, littleEndian = false) {\n return Utf16Converter.fromString(text, littleEndian);\n }\n static Base64Padding(base64) {\n const padCount = 4 - (base64.length % 4);\n if (padCount < 4) {\n for (let i = 0; i < padCount; i++) {\n base64 += \"=\";\n }\n }\n return base64;\n }\n static formatString(data) {\n return (data === null || data === void 0 ? void 0 : data.replace(/[\\n\\r\\t ]/g, \"\")) || \"\";\n }\n}\nConvert.DEFAULT_UTF8_ENCODING = \"utf8\";\n\nfunction assign(target, ...sources) {\n const res = arguments[0];\n for (let i = 1; i < arguments.length; i++) {\n const obj = arguments[i];\n for (const prop in obj) {\n res[prop] = obj[prop];\n }\n }\n return res;\n}\nfunction combine(...buf) {\n const totalByteLength = buf.map((item) => item.byteLength).reduce((prev, cur) => prev + cur);\n const res = new Uint8Array(totalByteLength);\n let currentPos = 0;\n buf.map((item) => new Uint8Array(item)).forEach((arr) => {\n for (const item2 of arr) {\n res[currentPos++] = item2;\n }\n });\n return res.buffer;\n}\nfunction isEqual(bytes1, bytes2) {\n if (!(bytes1 && bytes2)) {\n return false;\n }\n if (bytes1.byteLength !== bytes2.byteLength) {\n return false;\n }\n const b1 = new Uint8Array(bytes1);\n const b2 = new Uint8Array(bytes2);\n for (let i = 0; i < bytes1.byteLength; i++) {\n if (b1[i] !== b2[i]) {\n return false;\n }\n }\n return true;\n}\n\nexport { BufferSourceConverter, Convert, assign, combine, isEqual };\n","/*!\n Copyright (c) Peculiar Ventures, LLC\n*/\n\nfunction getUTCDate(date) {\r\n return new Date(date.getTime() + (date.getTimezoneOffset() * 60000));\r\n}\r\nfunction getParametersValue(parameters, name, defaultValue) {\r\n var _a;\r\n if ((parameters instanceof Object) === false) {\r\n return defaultValue;\r\n }\r\n return (_a = parameters[name]) !== null && _a !== void 0 ? _a : defaultValue;\r\n}\r\nfunction bufferToHexCodes(inputBuffer, inputOffset = 0, inputLength = (inputBuffer.byteLength - inputOffset), insertSpace = false) {\r\n let result = \"\";\r\n for (const item of (new Uint8Array(inputBuffer, inputOffset, inputLength))) {\r\n const str = item.toString(16).toUpperCase();\r\n if (str.length === 1) {\r\n result += \"0\";\r\n }\r\n result += str;\r\n if (insertSpace) {\r\n result += \" \";\r\n }\r\n }\r\n return result.trim();\r\n}\r\nfunction checkBufferParams(baseBlock, inputBuffer, inputOffset, inputLength) {\r\n if (!(inputBuffer instanceof ArrayBuffer)) {\r\n baseBlock.error = \"Wrong parameter: inputBuffer must be \\\"ArrayBuffer\\\"\";\r\n return false;\r\n }\r\n if (!inputBuffer.byteLength) {\r\n baseBlock.error = \"Wrong parameter: inputBuffer has zero length\";\r\n return false;\r\n }\r\n if (inputOffset < 0) {\r\n baseBlock.error = \"Wrong parameter: inputOffset less than zero\";\r\n return false;\r\n }\r\n if (inputLength < 0) {\r\n baseBlock.error = \"Wrong parameter: inputLength less than zero\";\r\n return false;\r\n }\r\n if ((inputBuffer.byteLength - inputOffset - inputLength) < 0) {\r\n baseBlock.error = \"End of input reached before message was fully decoded (inconsistent offset and length values)\";\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction utilFromBase(inputBuffer, inputBase) {\r\n let result = 0;\r\n if (inputBuffer.length === 1) {\r\n return inputBuffer[0];\r\n }\r\n for (let i = (inputBuffer.length - 1); i >= 0; i--) {\r\n result += inputBuffer[(inputBuffer.length - 1) - i] * Math.pow(2, inputBase * i);\r\n }\r\n return result;\r\n}\r\nfunction utilToBase(value, base, reserved = (-1)) {\r\n const internalReserved = reserved;\r\n let internalValue = value;\r\n let result = 0;\r\n let biggest = Math.pow(2, base);\r\n for (let i = 1; i < 8; i++) {\r\n if (value < biggest) {\r\n let retBuf;\r\n if (internalReserved < 0) {\r\n retBuf = new ArrayBuffer(i);\r\n result = i;\r\n }\r\n else {\r\n if (internalReserved < i) {\r\n return (new ArrayBuffer(0));\r\n }\r\n retBuf = new ArrayBuffer(internalReserved);\r\n result = internalReserved;\r\n }\r\n const retView = new Uint8Array(retBuf);\r\n for (let j = (i - 1); j >= 0; j--) {\r\n const basis = Math.pow(2, j * base);\r\n retView[result - j - 1] = Math.floor(internalValue / basis);\r\n internalValue -= (retView[result - j - 1]) * basis;\r\n }\r\n return retBuf;\r\n }\r\n biggest *= Math.pow(2, base);\r\n }\r\n return new ArrayBuffer(0);\r\n}\r\nfunction utilConcatBuf(...buffers) {\r\n let outputLength = 0;\r\n let prevLength = 0;\r\n for (const buffer of buffers) {\r\n outputLength += buffer.byteLength;\r\n }\r\n const retBuf = new ArrayBuffer(outputLength);\r\n const retView = new Uint8Array(retBuf);\r\n for (const buffer of buffers) {\r\n retView.set(new Uint8Array(buffer), prevLength);\r\n prevLength += buffer.byteLength;\r\n }\r\n return retBuf;\r\n}\r\nfunction utilConcatView(...views) {\r\n let outputLength = 0;\r\n let prevLength = 0;\r\n for (const view of views) {\r\n outputLength += view.length;\r\n }\r\n const retBuf = new ArrayBuffer(outputLength);\r\n const retView = new Uint8Array(retBuf);\r\n for (const view of views) {\r\n retView.set(view, prevLength);\r\n prevLength += view.length;\r\n }\r\n return retView;\r\n}\r\nfunction utilDecodeTC() {\r\n const buf = new Uint8Array(this.valueHex);\r\n if (this.valueHex.byteLength >= 2) {\r\n const condition1 = (buf[0] === 0xFF) && (buf[1] & 0x80);\r\n const condition2 = (buf[0] === 0x00) && ((buf[1] & 0x80) === 0x00);\r\n if (condition1 || condition2) {\r\n this.warnings.push(\"Needlessly long format\");\r\n }\r\n }\r\n const bigIntBuffer = new ArrayBuffer(this.valueHex.byteLength);\r\n const bigIntView = new Uint8Array(bigIntBuffer);\r\n for (let i = 0; i < this.valueHex.byteLength; i++) {\r\n bigIntView[i] = 0;\r\n }\r\n bigIntView[0] = (buf[0] & 0x80);\r\n const bigInt = utilFromBase(bigIntView, 8);\r\n const smallIntBuffer = new ArrayBuffer(this.valueHex.byteLength);\r\n const smallIntView = new Uint8Array(smallIntBuffer);\r\n for (let j = 0; j < this.valueHex.byteLength; j++) {\r\n smallIntView[j] = buf[j];\r\n }\r\n smallIntView[0] &= 0x7F;\r\n const smallInt = utilFromBase(smallIntView, 8);\r\n return (smallInt - bigInt);\r\n}\r\nfunction utilEncodeTC(value) {\r\n const modValue = (value < 0) ? (value * (-1)) : value;\r\n let bigInt = 128;\r\n for (let i = 1; i < 8; i++) {\r\n if (modValue <= bigInt) {\r\n if (value < 0) {\r\n const smallInt = bigInt - modValue;\r\n const retBuf = utilToBase(smallInt, 8, i);\r\n const retView = new Uint8Array(retBuf);\r\n retView[0] |= 0x80;\r\n return retBuf;\r\n }\r\n let retBuf = utilToBase(modValue, 8, i);\r\n let retView = new Uint8Array(retBuf);\r\n if (retView[0] & 0x80) {\r\n const tempBuf = retBuf.slice(0);\r\n const tempView = new Uint8Array(tempBuf);\r\n retBuf = new ArrayBuffer(retBuf.byteLength + 1);\r\n retView = new Uint8Array(retBuf);\r\n for (let k = 0; k < tempBuf.byteLength; k++) {\r\n retView[k + 1] = tempView[k];\r\n }\r\n retView[0] = 0x00;\r\n }\r\n return retBuf;\r\n }\r\n bigInt *= Math.pow(2, 8);\r\n }\r\n return (new ArrayBuffer(0));\r\n}\r\nfunction isEqualBuffer(inputBuffer1, inputBuffer2) {\r\n if (inputBuffer1.byteLength !== inputBuffer2.byteLength) {\r\n return false;\r\n }\r\n const view1 = new Uint8Array(inputBuffer1);\r\n const view2 = new Uint8Array(inputBuffer2);\r\n for (let i = 0; i < view1.length; i++) {\r\n if (view1[i] !== view2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction padNumber(inputNumber, fullLength) {\r\n const str = inputNumber.toString(10);\r\n if (fullLength < str.length) {\r\n return \"\";\r\n }\r\n const dif = fullLength - str.length;\r\n const padding = new Array(dif);\r\n for (let i = 0; i < dif; i++) {\r\n padding[i] = \"0\";\r\n }\r\n const paddingString = padding.join(\"\");\r\n return paddingString.concat(str);\r\n}\r\nconst base64Template = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\nconst base64UrlTemplate = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=\";\r\nfunction toBase64(input, useUrlTemplate = false, skipPadding = false, skipLeadingZeros = false) {\r\n let i = 0;\r\n let flag1 = 0;\r\n let flag2 = 0;\r\n let output = \"\";\r\n const template = (useUrlTemplate) ? base64UrlTemplate : base64Template;\r\n if (skipLeadingZeros) {\r\n let nonZeroPosition = 0;\r\n for (let i = 0; i < input.length; i++) {\r\n if (input.charCodeAt(i) !== 0) {\r\n nonZeroPosition = i;\r\n break;\r\n }\r\n }\r\n input = input.slice(nonZeroPosition);\r\n }\r\n while (i < input.length) {\r\n const chr1 = input.charCodeAt(i++);\r\n if (i >= input.length) {\r\n flag1 = 1;\r\n }\r\n const chr2 = input.charCodeAt(i++);\r\n if (i >= input.length) {\r\n flag2 = 1;\r\n }\r\n const chr3 = input.charCodeAt(i++);\r\n const enc1 = chr1 >> 2;\r\n const enc2 = ((chr1 & 0x03) << 4) | (chr2 >> 4);\r\n let enc3 = ((chr2 & 0x0F) << 2) | (chr3 >> 6);\r\n let enc4 = chr3 & 0x3F;\r\n if (flag1 === 1) {\r\n enc3 = enc4 = 64;\r\n }\r\n else {\r\n if (flag2 === 1) {\r\n enc4 = 64;\r\n }\r\n }\r\n if (skipPadding) {\r\n if (enc3 === 64) {\r\n output += `${template.charAt(enc1)}${template.charAt(enc2)}`;\r\n }\r\n else {\r\n if (enc4 === 64) {\r\n output += `${template.charAt(enc1)}${template.charAt(enc2)}${template.charAt(enc3)}`;\r\n }\r\n else {\r\n output += `${template.charAt(enc1)}${template.charAt(enc2)}${template.charAt(enc3)}${template.charAt(enc4)}`;\r\n }\r\n }\r\n }\r\n else {\r\n output += `${template.charAt(enc1)}${template.charAt(enc2)}${template.charAt(enc3)}${template.charAt(enc4)}`;\r\n }\r\n }\r\n return output;\r\n}\r\nfunction fromBase64(input, useUrlTemplate = false, cutTailZeros = false) {\r\n const template = (useUrlTemplate) ? base64UrlTemplate : base64Template;\r\n function indexOf(toSearch) {\r\n for (let i = 0; i < 64; i++) {\r\n if (template.charAt(i) === toSearch)\r\n return i;\r\n }\r\n return 64;\r\n }\r\n function test(incoming) {\r\n return ((incoming === 64) ? 0x00 : incoming);\r\n }\r\n let i = 0;\r\n let output = \"\";\r\n while (i < input.length) {\r\n const enc1 = indexOf(input.charAt(i++));\r\n const enc2 = (i >= input.length) ? 0x00 : indexOf(input.charAt(i++));\r\n const enc3 = (i >= input.length) ? 0x00 : indexOf(input.charAt(i++));\r\n const enc4 = (i >= input.length) ? 0x00 : indexOf(input.charAt(i++));\r\n const chr1 = (test(enc1) << 2) | (test(enc2) >> 4);\r\n const chr2 = ((test(enc2) & 0x0F) << 4) | (test(enc3) >> 2);\r\n const chr3 = ((test(enc3) & 0x03) << 6) | test(enc4);\r\n output += String.fromCharCode(chr1);\r\n if (enc3 !== 64) {\r\n output += String.fromCharCode(chr2);\r\n }\r\n if (enc4 !== 64) {\r\n output += String.fromCharCode(chr3);\r\n }\r\n }\r\n if (cutTailZeros) {\r\n const outputLength = output.length;\r\n let nonZeroStart = (-1);\r\n for (let i = (outputLength - 1); i >= 0; i--) {\r\n if (output.charCodeAt(i) !== 0) {\r\n nonZeroStart = i;\r\n break;\r\n }\r\n }\r\n if (nonZeroStart !== (-1)) {\r\n output = output.slice(0, nonZeroStart + 1);\r\n }\r\n else {\r\n output = \"\";\r\n }\r\n }\r\n return output;\r\n}\r\nfunction arrayBufferToString(buffer) {\r\n let resultString = \"\";\r\n const view = new Uint8Array(buffer);\r\n for (const element of view) {\r\n resultString += String.fromCharCode(element);\r\n }\r\n return resultString;\r\n}\r\nfunction stringToArrayBuffer(str) {\r\n const stringLength = str.length;\r\n const resultBuffer = new ArrayBuffer(stringLength);\r\n const resultView = new Uint8Array(resultBuffer);\r\n for (let i = 0; i < stringLength; i++) {\r\n resultView[i] = str.charCodeAt(i);\r\n }\r\n return resultBuffer;\r\n}\r\nconst log2 = Math.log(2);\r\nfunction nearestPowerOf2(length) {\r\n const base = (Math.log(length) / log2);\r\n const floor = Math.floor(base);\r\n const round = Math.round(base);\r\n return ((floor === round) ? floor : round);\r\n}\r\nfunction clearProps(object, propsArray) {\r\n for (const prop of propsArray) {\r\n delete object[prop];\r\n }\r\n}\n\nexport { arrayBufferToString, bufferToHexCodes, checkBufferParams, clearProps, fromBase64, getParametersValue, getUTCDate, isEqualBuffer, nearestPowerOf2, padNumber, stringToArrayBuffer, toBase64, utilConcatBuf, utilConcatView, utilDecodeTC, utilEncodeTC, utilFromBase, utilToBase };\n","/*!\n * Copyright (c) 2014, GMO GlobalSign\n * Copyright (c) 2015-2022, Peculiar Ventures\n * All rights reserved.\n * \n * Author 2014-2019, Yury Strozhevsky\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * * Redistributions in binary form must reproduce the above copyright notice, this\n * list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * \n * * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\n * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n */\n\nimport * as pvtsutils from 'pvtsutils';\nimport * as pvutils from 'pvutils';\n\nfunction assertBigInt() {\r\n if (typeof BigInt === \"undefined\") {\r\n throw new Error(\"BigInt is not defined. Your environment doesn't implement BigInt.\");\r\n }\r\n}\r\nfunction concat(buffers) {\r\n let outputLength = 0;\r\n let prevLength = 0;\r\n for (let i = 0; i < buffers.length; i++) {\r\n const buffer = buffers[i];\r\n outputLength += buffer.byteLength;\r\n }\r\n const retView = new Uint8Array(outputLength);\r\n for (let i = 0; i < buffers.length; i++) {\r\n const buffer = buffers[i];\r\n retView.set(new Uint8Array(buffer), prevLength);\r\n prevLength += buffer.byteLength;\r\n }\r\n return retView.buffer;\r\n}\r\nfunction checkBufferParams(baseBlock, inputBuffer, inputOffset, inputLength) {\r\n if (!(inputBuffer instanceof Uint8Array)) {\r\n baseBlock.error = \"Wrong parameter: inputBuffer must be 'Uint8Array'\";\r\n return false;\r\n }\r\n if (!inputBuffer.byteLength) {\r\n baseBlock.error = \"Wrong parameter: inputBuffer has zero length\";\r\n return false;\r\n }\r\n if (inputOffset < 0) {\r\n baseBlock.error = \"Wrong parameter: inputOffset less than zero\";\r\n return false;\r\n }\r\n if (inputLength < 0) {\r\n baseBlock.error = \"Wrong parameter: inputLength less than zero\";\r\n return false;\r\n }\r\n if ((inputBuffer.byteLength - inputOffset - inputLength) < 0) {\r\n baseBlock.error = \"End of input reached before message was fully decoded (inconsistent offset and length values)\";\r\n return false;\r\n }\r\n return true;\r\n}\n\nclass ViewWriter {\r\n constructor() {\r\n this.items = [];\r\n }\r\n write(buf) {\r\n this.items.push(buf);\r\n }\r\n final() {\r\n return concat(this.items);\r\n }\r\n}\n\nconst powers2 = [new Uint8Array([1])];\r\nconst digitsString = \"0123456789\";\r\nconst NAME = \"name\";\r\nconst VALUE_HEX_VIEW = \"valueHexView\";\r\nconst IS_HEX_ONLY = \"isHexOnly\";\r\nconst ID_BLOCK = \"idBlock\";\r\nconst TAG_CLASS = \"tagClass\";\r\nconst TAG_NUMBER = \"tagNumber\";\r\nconst IS_CONSTRUCTED = \"isConstructed\";\r\nconst FROM_BER = \"fromBER\";\r\nconst TO_BER = \"toBER\";\r\nconst LOCAL = \"local\";\r\nconst EMPTY_STRING = \"\";\r\nconst EMPTY_BUFFER = new ArrayBuffer(0);\r\nconst EMPTY_VIEW = new Uint8Array(0);\r\nconst END_OF_CONTENT_NAME = \"EndOfContent\";\r\nconst OCTET_STRING_NAME = \"OCTET STRING\";\r\nconst BIT_STRING_NAME = \"BIT STRING\";\n\nfunction HexBlock(BaseClass) {\r\n var _a;\r\n return _a = class Some extends BaseClass {\r\n constructor(...args) {\r\n var _a;\r\n super(...args);\r\n const params = args[0] || {};\r\n this.isHexOnly = (_a = params.isHexOnly) !== null && _a !== void 0 ? _a : false;\r\n this.valueHexView = params.valueHex ? pvtsutils.BufferSourceConverter.toUint8Array(params.valueHex) : EMPTY_VIEW;\r\n }\r\n get valueHex() {\r\n return this.valueHexView.slice().buffer;\r\n }\r\n set valueHex(value) {\r\n this.valueHexView = new Uint8Array(value);\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const view = inputBuffer instanceof ArrayBuffer ? new Uint8Array(inputBuffer) : inputBuffer;\r\n if (!checkBufferParams(this, view, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n const endLength = inputOffset + inputLength;\r\n this.valueHexView = view.subarray(inputOffset, endLength);\r\n if (!this.valueHexView.length) {\r\n this.warnings.push(\"Zero buffer length\");\r\n return inputOffset;\r\n }\r\n this.blockLength = inputLength;\r\n return endLength;\r\n }\r\n toBER(sizeOnly = false) {\r\n if (!this.isHexOnly) {\r\n this.error = \"Flag 'isHexOnly' is not set, abort\";\r\n return EMPTY_BUFFER;\r\n }\r\n if (sizeOnly) {\r\n return new ArrayBuffer(this.valueHexView.byteLength);\r\n }\r\n return (this.valueHexView.byteLength === this.valueHexView.buffer.byteLength)\r\n ? this.valueHexView.buffer\r\n : this.valueHexView.slice().buffer;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n isHexOnly: this.isHexOnly,\r\n valueHex: pvtsutils.Convert.ToHex(this.valueHexView),\r\n };\r\n }\r\n },\r\n _a.NAME = \"hexBlock\",\r\n _a;\r\n}\n\nclass LocalBaseBlock {\r\n constructor({ blockLength = 0, error = EMPTY_STRING, warnings = [], valueBeforeDecode = EMPTY_VIEW, } = {}) {\r\n this.blockLength = blockLength;\r\n this.error = error;\r\n this.warnings = warnings;\r\n this.valueBeforeDecodeView = pvtsutils.BufferSourceConverter.toUint8Array(valueBeforeDecode);\r\n }\r\n static blockName() {\r\n return this.NAME;\r\n }\r\n get valueBeforeDecode() {\r\n return this.valueBeforeDecodeView.slice().buffer;\r\n }\r\n set valueBeforeDecode(value) {\r\n this.valueBeforeDecodeView = new Uint8Array(value);\r\n }\r\n toJSON() {\r\n return {\r\n blockName: this.constructor.NAME,\r\n blockLength: this.blockLength,\r\n error: this.error,\r\n warnings: this.warnings,\r\n valueBeforeDecode: pvtsutils.Convert.ToHex(this.valueBeforeDecodeView),\r\n };\r\n }\r\n}\r\nLocalBaseBlock.NAME = \"baseBlock\";\n\nclass ValueBlock extends LocalBaseBlock {\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n throw TypeError(\"User need to make a specific function in a class which extends 'ValueBlock'\");\r\n }\r\n toBER(sizeOnly, writer) {\r\n throw TypeError(\"User need to make a specific function in a class which extends 'ValueBlock'\");\r\n }\r\n}\r\nValueBlock.NAME = \"valueBlock\";\n\nclass LocalIdentificationBlock extends HexBlock(LocalBaseBlock) {\r\n constructor({ idBlock = {}, } = {}) {\r\n var _a, _b, _c, _d;\r\n super();\r\n if (idBlock) {\r\n this.isHexOnly = (_a = idBlock.isHexOnly) !== null && _a !== void 0 ? _a : false;\r\n this.valueHexView = idBlock.valueHex ? pvtsutils.BufferSourceConverter.toUint8Array(idBlock.valueHex) : EMPTY_VIEW;\r\n this.tagClass = (_b = idBlock.tagClass) !== null && _b !== void 0 ? _b : -1;\r\n this.tagNumber = (_c = idBlock.tagNumber) !== null && _c !== void 0 ? _c : -1;\r\n this.isConstructed = (_d = idBlock.isConstructed) !== null && _d !== void 0 ? _d : false;\r\n }\r\n else {\r\n this.tagClass = -1;\r\n this.tagNumber = -1;\r\n this.isConstructed = false;\r\n }\r\n }\r\n toBER(sizeOnly = false) {\r\n let firstOctet = 0;\r\n switch (this.tagClass) {\r\n case 1:\r\n firstOctet |= 0x00;\r\n break;\r\n case 2:\r\n firstOctet |= 0x40;\r\n break;\r\n case 3:\r\n firstOctet |= 0x80;\r\n break;\r\n case 4:\r\n firstOctet |= 0xC0;\r\n break;\r\n default:\r\n this.error = \"Unknown tag class\";\r\n return EMPTY_BUFFER;\r\n }\r\n if (this.isConstructed)\r\n firstOctet |= 0x20;\r\n if (this.tagNumber < 31 && !this.isHexOnly) {\r\n const retView = new Uint8Array(1);\r\n if (!sizeOnly) {\r\n let number = this.tagNumber;\r\n number &= 0x1F;\r\n firstOctet |= number;\r\n retView[0] = firstOctet;\r\n }\r\n return retView.buffer;\r\n }\r\n if (!this.isHexOnly) {\r\n const encodedBuf = pvutils.utilToBase(this.tagNumber, 7);\r\n const encodedView = new Uint8Array(encodedBuf);\r\n const size = encodedBuf.byteLength;\r\n const retView = new Uint8Array(size + 1);\r\n retView[0] = (firstOctet | 0x1F);\r\n if (!sizeOnly) {\r\n for (let i = 0; i < (size - 1); i++)\r\n retView[i + 1] = encodedView[i] | 0x80;\r\n retView[size] = encodedView[size - 1];\r\n }\r\n return retView.buffer;\r\n }\r\n const retView = new Uint8Array(this.valueHexView.byteLength + 1);\r\n retView[0] = (firstOctet | 0x1F);\r\n if (!sizeOnly) {\r\n const curView = this.valueHexView;\r\n for (let i = 0; i < (curView.length - 1); i++)\r\n retView[i + 1] = curView[i] | 0x80;\r\n retView[this.valueHexView.byteLength] = curView[curView.length - 1];\r\n }\r\n return retView.buffer;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const inputView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, inputView, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength);\r\n if (intBuffer.length === 0) {\r\n this.error = \"Zero buffer length\";\r\n return -1;\r\n }\r\n const tagClassMask = intBuffer[0] & 0xC0;\r\n switch (tagClassMask) {\r\n case 0x00:\r\n this.tagClass = (1);\r\n break;\r\n case 0x40:\r\n this.tagClass = (2);\r\n break;\r\n case 0x80:\r\n this.tagClass = (3);\r\n break;\r\n case 0xC0:\r\n this.tagClass = (4);\r\n break;\r\n default:\r\n this.error = \"Unknown tag class\";\r\n return -1;\r\n }\r\n this.isConstructed = (intBuffer[0] & 0x20) === 0x20;\r\n this.isHexOnly = false;\r\n const tagNumberMask = intBuffer[0] & 0x1F;\r\n if (tagNumberMask !== 0x1F) {\r\n this.tagNumber = (tagNumberMask);\r\n this.blockLength = 1;\r\n }\r\n else {\r\n let count = 1;\r\n let intTagNumberBuffer = this.valueHexView = new Uint8Array(255);\r\n let tagNumberBufferMaxLength = 255;\r\n while (intBuffer[count] & 0x80) {\r\n intTagNumberBuffer[count - 1] = intBuffer[count] & 0x7F;\r\n count++;\r\n if (count >= intBuffer.length) {\r\n this.error = \"End of input reached before message was fully decoded\";\r\n return -1;\r\n }\r\n if (count === tagNumberBufferMaxLength) {\r\n tagNumberBufferMaxLength += 255;\r\n const tempBufferView = new Uint8Array(tagNumberBufferMaxLength);\r\n for (let i = 0; i < intTagNumberBuffer.length; i++)\r\n tempBufferView[i] = intTagNumberBuffer[i];\r\n intTagNumberBuffer = this.valueHexView = new Uint8Array(tagNumberBufferMaxLength);\r\n }\r\n }\r\n this.blockLength = (count + 1);\r\n intTagNumberBuffer[count - 1] = intBuffer[count] & 0x7F;\r\n const tempBufferView = new Uint8Array(count);\r\n for (let i = 0; i < count; i++)\r\n tempBufferView[i] = intTagNumberBuffer[i];\r\n intTagNumberBuffer = this.valueHexView = new Uint8Array(count);\r\n intTagNumberBuffer.set(tempBufferView);\r\n if (this.blockLength <= 9)\r\n this.tagNumber = pvutils.utilFromBase(intTagNumberBuffer, 7);\r\n else {\r\n this.isHexOnly = true;\r\n this.warnings.push(\"Tag too long, represented as hex-coded\");\r\n }\r\n }\r\n if (((this.tagClass === 1)) &&\r\n (this.isConstructed)) {\r\n switch (this.tagNumber) {\r\n case 1:\r\n case 2:\r\n case 5:\r\n case 6:\r\n case 9:\r\n case 13:\r\n case 14:\r\n case 23:\r\n case 24:\r\n case 31:\r\n case 32:\r\n case 33:\r\n case 34:\r\n this.error = \"Constructed encoding used for primitive type\";\r\n return -1;\r\n }\r\n }\r\n return (inputOffset + this.blockLength);\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n tagClass: this.tagClass,\r\n tagNumber: this.tagNumber,\r\n isConstructed: this.isConstructed,\r\n };\r\n }\r\n}\r\nLocalIdentificationBlock.NAME = \"identificationBlock\";\n\nclass LocalLengthBlock extends LocalBaseBlock {\r\n constructor({ lenBlock = {}, } = {}) {\r\n var _a, _b, _c;\r\n super();\r\n this.isIndefiniteForm = (_a = lenBlock.isIndefiniteForm) !== null && _a !== void 0 ? _a : false;\r\n this.longFormUsed = (_b = lenBlock.longFormUsed) !== null && _b !== void 0 ? _b : false;\r\n this.length = (_c = lenBlock.length) !== null && _c !== void 0 ? _c : 0;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const view = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, view, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n const intBuffer = view.subarray(inputOffset, inputOffset + inputLength);\r\n if (intBuffer.length === 0) {\r\n this.error = \"Zero buffer length\";\r\n return -1;\r\n }\r\n if (intBuffer[0] === 0xFF) {\r\n this.error = \"Length block 0xFF is reserved by standard\";\r\n return -1;\r\n }\r\n this.isIndefiniteForm = intBuffer[0] === 0x80;\r\n if (this.isIndefiniteForm) {\r\n this.blockLength = 1;\r\n return (inputOffset + this.blockLength);\r\n }\r\n this.longFormUsed = !!(intBuffer[0] & 0x80);\r\n if (this.longFormUsed === false) {\r\n this.length = (intBuffer[0]);\r\n this.blockLength = 1;\r\n return (inputOffset + this.blockLength);\r\n }\r\n const count = intBuffer[0] & 0x7F;\r\n if (count > 8) {\r\n this.error = \"Too big integer\";\r\n return -1;\r\n }\r\n if ((count + 1) > intBuffer.length) {\r\n this.error = \"End of input reached before message was fully decoded\";\r\n return -1;\r\n }\r\n const lenOffset = inputOffset + 1;\r\n const lengthBufferView = view.subarray(lenOffset, lenOffset + count);\r\n if (lengthBufferView[count - 1] === 0x00)\r\n this.warnings.push(\"Needlessly long encoded length\");\r\n this.length = pvutils.utilFromBase(lengthBufferView, 8);\r\n if (this.longFormUsed && (this.length <= 127))\r\n this.warnings.push(\"Unnecessary usage of long length form\");\r\n this.blockLength = count + 1;\r\n return (inputOffset + this.blockLength);\r\n }\r\n toBER(sizeOnly = false) {\r\n let retBuf;\r\n let retView;\r\n if (this.length > 127)\r\n this.longFormUsed = true;\r\n if (this.isIndefiniteForm) {\r\n retBuf = new ArrayBuffer(1);\r\n if (sizeOnly === false) {\r\n retView = new Uint8Array(retBuf);\r\n retView[0] = 0x80;\r\n }\r\n return retBuf;\r\n }\r\n if (this.longFormUsed) {\r\n const encodedBuf = pvutils.utilToBase(this.length, 8);\r\n if (encodedBuf.byteLength > 127) {\r\n this.error = \"Too big length\";\r\n return (EMPTY_BUFFER);\r\n }\r\n retBuf = new ArrayBuffer(encodedBuf.byteLength + 1);\r\n if (sizeOnly)\r\n return retBuf;\r\n const encodedView = new Uint8Array(encodedBuf);\r\n retView = new Uint8Array(retBuf);\r\n retView[0] = encodedBuf.byteLength | 0x80;\r\n for (let i = 0; i < encodedBuf.byteLength; i++)\r\n retView[i + 1] = encodedView[i];\r\n return retBuf;\r\n }\r\n retBuf = new ArrayBuffer(1);\r\n if (sizeOnly === false) {\r\n retView = new Uint8Array(retBuf);\r\n retView[0] = this.length;\r\n }\r\n return retBuf;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n isIndefiniteForm: this.isIndefiniteForm,\r\n longFormUsed: this.longFormUsed,\r\n length: this.length,\r\n };\r\n }\r\n}\r\nLocalLengthBlock.NAME = \"lengthBlock\";\n\nconst typeStore = {};\n\nclass BaseBlock extends LocalBaseBlock {\r\n constructor({ name = EMPTY_STRING, optional = false, primitiveSchema, ...parameters } = {}, valueBlockType) {\r\n super(parameters);\r\n this.name = name;\r\n this.optional = optional;\r\n if (primitiveSchema) {\r\n this.primitiveSchema = primitiveSchema;\r\n }\r\n this.idBlock = new LocalIdentificationBlock(parameters);\r\n this.lenBlock = new LocalLengthBlock(parameters);\r\n this.valueBlock = valueBlockType ? new valueBlockType(parameters) : new ValueBlock(parameters);\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const resultOffset = this.valueBlock.fromBER(inputBuffer, inputOffset, (this.lenBlock.isIndefiniteForm) ? inputLength : this.lenBlock.length);\r\n if (resultOffset === -1) {\r\n this.error = this.valueBlock.error;\r\n return resultOffset;\r\n }\r\n if (!this.idBlock.error.length)\r\n this.blockLength += this.idBlock.blockLength;\r\n if (!this.lenBlock.error.length)\r\n this.blockLength += this.lenBlock.blockLength;\r\n if (!this.valueBlock.error.length)\r\n this.blockLength += this.valueBlock.blockLength;\r\n return resultOffset;\r\n }\r\n toBER(sizeOnly, writer) {\r\n const _writer = writer || new ViewWriter();\r\n if (!writer) {\r\n prepareIndefiniteForm(this);\r\n }\r\n const idBlockBuf = this.idBlock.toBER(sizeOnly);\r\n _writer.write(idBlockBuf);\r\n if (this.lenBlock.isIndefiniteForm) {\r\n _writer.write(new Uint8Array([0x80]).buffer);\r\n this.valueBlock.toBER(sizeOnly, _writer);\r\n _writer.write(new ArrayBuffer(2));\r\n }\r\n else {\r\n const valueBlockBuf = this.valueBlock.toBER(sizeOnly);\r\n this.lenBlock.length = valueBlockBuf.byteLength;\r\n const lenBlockBuf = this.lenBlock.toBER(sizeOnly);\r\n _writer.write(lenBlockBuf);\r\n _writer.write(valueBlockBuf);\r\n }\r\n if (!writer) {\r\n return _writer.final();\r\n }\r\n return EMPTY_BUFFER;\r\n }\r\n toJSON() {\r\n const object = {\r\n ...super.toJSON(),\r\n idBlock: this.idBlock.toJSON(),\r\n lenBlock: this.lenBlock.toJSON(),\r\n valueBlock: this.valueBlock.toJSON(),\r\n name: this.name,\r\n optional: this.optional,\r\n };\r\n if (this.primitiveSchema)\r\n object.primitiveSchema = this.primitiveSchema.toJSON();\r\n return object;\r\n }\r\n toString(encoding = \"ascii\") {\r\n if (encoding === \"ascii\") {\r\n return this.onAsciiEncoding();\r\n }\r\n return pvtsutils.Convert.ToHex(this.toBER());\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${pvtsutils.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`;\r\n }\r\n isEqual(other) {\r\n if (this === other) {\r\n return true;\r\n }\r\n if (!(other instanceof this.constructor)) {\r\n return false;\r\n }\r\n const thisRaw = this.toBER();\r\n const otherRaw = other.toBER();\r\n return pvutils.isEqualBuffer(thisRaw, otherRaw);\r\n }\r\n}\r\nBaseBlock.NAME = \"BaseBlock\";\r\nfunction prepareIndefiniteForm(baseBlock) {\r\n if (baseBlock instanceof typeStore.Constructed) {\r\n for (const value of baseBlock.valueBlock.value) {\r\n if (prepareIndefiniteForm(value)) {\r\n baseBlock.lenBlock.isIndefiniteForm = true;\r\n }\r\n }\r\n }\r\n return !!baseBlock.lenBlock.isIndefiniteForm;\r\n}\n\nclass BaseStringBlock extends BaseBlock {\r\n constructor({ value = EMPTY_STRING, ...parameters } = {}, stringValueBlockType) {\r\n super(parameters, stringValueBlockType);\r\n if (value) {\r\n this.fromString(value);\r\n }\r\n }\r\n getValue() {\r\n return this.valueBlock.value;\r\n }\r\n setValue(value) {\r\n this.valueBlock.value = value;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const resultOffset = this.valueBlock.fromBER(inputBuffer, inputOffset, (this.lenBlock.isIndefiniteForm) ? inputLength : this.lenBlock.length);\r\n if (resultOffset === -1) {\r\n this.error = this.valueBlock.error;\r\n return resultOffset;\r\n }\r\n this.fromBuffer(this.valueBlock.valueHexView);\r\n if (!this.idBlock.error.length)\r\n this.blockLength += this.idBlock.blockLength;\r\n if (!this.lenBlock.error.length)\r\n this.blockLength += this.lenBlock.blockLength;\r\n if (!this.valueBlock.error.length)\r\n this.blockLength += this.valueBlock.blockLength;\r\n return resultOffset;\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : '${this.valueBlock.value}'`;\r\n }\r\n}\r\nBaseStringBlock.NAME = \"BaseStringBlock\";\n\nclass LocalPrimitiveValueBlock extends HexBlock(ValueBlock) {\r\n constructor({ isHexOnly = true, ...parameters } = {}) {\r\n super(parameters);\r\n this.isHexOnly = isHexOnly;\r\n }\r\n}\r\nLocalPrimitiveValueBlock.NAME = \"PrimitiveValueBlock\";\n\nvar _a$w;\r\nclass Primitive extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalPrimitiveValueBlock);\r\n this.idBlock.isConstructed = false;\r\n }\r\n}\r\n_a$w = Primitive;\r\n(() => {\r\n typeStore.Primitive = _a$w;\r\n})();\r\nPrimitive.NAME = \"PRIMITIVE\";\n\nfunction localChangeType(inputObject, newType) {\r\n if (inputObject instanceof newType) {\r\n return inputObject;\r\n }\r\n const newObject = new newType();\r\n newObject.idBlock = inputObject.idBlock;\r\n newObject.lenBlock = inputObject.lenBlock;\r\n newObject.warnings = inputObject.warnings;\r\n newObject.valueBeforeDecodeView = inputObject.valueBeforeDecodeView;\r\n return newObject;\r\n}\r\nfunction localFromBER(inputBuffer, inputOffset = 0, inputLength = inputBuffer.length) {\r\n const incomingOffset = inputOffset;\r\n let returnObject = new BaseBlock({}, ValueBlock);\r\n const baseBlock = new LocalBaseBlock();\r\n if (!checkBufferParams(baseBlock, inputBuffer, inputOffset, inputLength)) {\r\n returnObject.error = baseBlock.error;\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n const intBuffer = inputBuffer.subarray(inputOffset, inputOffset + inputLength);\r\n if (!intBuffer.length) {\r\n returnObject.error = \"Zero buffer length\";\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n let resultOffset = returnObject.idBlock.fromBER(inputBuffer, inputOffset, inputLength);\r\n if (returnObject.idBlock.warnings.length) {\r\n returnObject.warnings.concat(returnObject.idBlock.warnings);\r\n }\r\n if (resultOffset === -1) {\r\n returnObject.error = returnObject.idBlock.error;\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n inputOffset = resultOffset;\r\n inputLength -= returnObject.idBlock.blockLength;\r\n resultOffset = returnObject.lenBlock.fromBER(inputBuffer, inputOffset, inputLength);\r\n if (returnObject.lenBlock.warnings.length) {\r\n returnObject.warnings.concat(returnObject.lenBlock.warnings);\r\n }\r\n if (resultOffset === -1) {\r\n returnObject.error = returnObject.lenBlock.error;\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n inputOffset = resultOffset;\r\n inputLength -= returnObject.lenBlock.blockLength;\r\n if (!returnObject.idBlock.isConstructed &&\r\n returnObject.lenBlock.isIndefiniteForm) {\r\n returnObject.error = \"Indefinite length form used for primitive encoding form\";\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n let newASN1Type = BaseBlock;\r\n switch (returnObject.idBlock.tagClass) {\r\n case 1:\r\n if ((returnObject.idBlock.tagNumber >= 37) &&\r\n (returnObject.idBlock.isHexOnly === false)) {\r\n returnObject.error = \"UNIVERSAL 37 and upper tags are reserved by ASN.1 standard\";\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n switch (returnObject.idBlock.tagNumber) {\r\n case 0:\r\n if ((returnObject.idBlock.isConstructed) &&\r\n (returnObject.lenBlock.length > 0)) {\r\n returnObject.error = \"Type [UNIVERSAL 0] is reserved\";\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n newASN1Type = typeStore.EndOfContent;\r\n break;\r\n case 1:\r\n newASN1Type = typeStore.Boolean;\r\n break;\r\n case 2:\r\n newASN1Type = typeStore.Integer;\r\n break;\r\n case 3:\r\n newASN1Type = typeStore.BitString;\r\n break;\r\n case 4:\r\n newASN1Type = typeStore.OctetString;\r\n break;\r\n case 5:\r\n newASN1Type = typeStore.Null;\r\n break;\r\n case 6:\r\n newASN1Type = typeStore.ObjectIdentifier;\r\n break;\r\n case 10:\r\n newASN1Type = typeStore.Enumerated;\r\n break;\r\n case 12:\r\n newASN1Type = typeStore.Utf8String;\r\n break;\r\n case 13:\r\n newASN1Type = typeStore.RelativeObjectIdentifier;\r\n break;\r\n case 14:\r\n newASN1Type = typeStore.TIME;\r\n break;\r\n case 15:\r\n returnObject.error = \"[UNIVERSAL 15] is reserved by ASN.1 standard\";\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n case 16:\r\n newASN1Type = typeStore.Sequence;\r\n break;\r\n case 17:\r\n newASN1Type = typeStore.Set;\r\n break;\r\n case 18:\r\n newASN1Type = typeStore.NumericString;\r\n break;\r\n case 19:\r\n newASN1Type = typeStore.PrintableString;\r\n break;\r\n case 20:\r\n newASN1Type = typeStore.TeletexString;\r\n break;\r\n case 21:\r\n newASN1Type = typeStore.VideotexString;\r\n break;\r\n case 22:\r\n newASN1Type = typeStore.IA5String;\r\n break;\r\n case 23:\r\n newASN1Type = typeStore.UTCTime;\r\n break;\r\n case 24:\r\n newASN1Type = typeStore.GeneralizedTime;\r\n break;\r\n case 25:\r\n newASN1Type = typeStore.GraphicString;\r\n break;\r\n case 26:\r\n newASN1Type = typeStore.VisibleString;\r\n break;\r\n case 27:\r\n newASN1Type = typeStore.GeneralString;\r\n break;\r\n case 28:\r\n newASN1Type = typeStore.UniversalString;\r\n break;\r\n case 29:\r\n newASN1Type = typeStore.CharacterString;\r\n break;\r\n case 30:\r\n newASN1Type = typeStore.BmpString;\r\n break;\r\n case 31:\r\n newASN1Type = typeStore.DATE;\r\n break;\r\n case 32:\r\n newASN1Type = typeStore.TimeOfDay;\r\n break;\r\n case 33:\r\n newASN1Type = typeStore.DateTime;\r\n break;\r\n case 34:\r\n newASN1Type = typeStore.Duration;\r\n break;\r\n default: {\r\n const newObject = returnObject.idBlock.isConstructed\r\n ? new typeStore.Constructed()\r\n : new typeStore.Primitive();\r\n newObject.idBlock = returnObject.idBlock;\r\n newObject.lenBlock = returnObject.lenBlock;\r\n newObject.warnings = returnObject.warnings;\r\n returnObject = newObject;\r\n }\r\n }\r\n break;\r\n case 2:\r\n case 3:\r\n case 4:\r\n default: {\r\n newASN1Type = returnObject.idBlock.isConstructed\r\n ? typeStore.Constructed\r\n : typeStore.Primitive;\r\n }\r\n }\r\n returnObject = localChangeType(returnObject, newASN1Type);\r\n resultOffset = returnObject.fromBER(inputBuffer, inputOffset, returnObject.lenBlock.isIndefiniteForm ? inputLength : returnObject.lenBlock.length);\r\n returnObject.valueBeforeDecodeView = inputBuffer.subarray(incomingOffset, incomingOffset + returnObject.blockLength);\r\n return {\r\n offset: resultOffset,\r\n result: returnObject\r\n };\r\n}\r\nfunction fromBER(inputBuffer) {\r\n if (!inputBuffer.byteLength) {\r\n const result = new BaseBlock({}, ValueBlock);\r\n result.error = \"Input buffer has zero length\";\r\n return {\r\n offset: -1,\r\n result\r\n };\r\n }\r\n return localFromBER(pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer).slice(), 0, inputBuffer.byteLength);\r\n}\n\nfunction checkLen(indefiniteLength, length) {\r\n if (indefiniteLength) {\r\n return 1;\r\n }\r\n return length;\r\n}\r\nclass LocalConstructedValueBlock extends ValueBlock {\r\n constructor({ value = [], isIndefiniteForm = false, ...parameters } = {}) {\r\n super(parameters);\r\n this.value = value;\r\n this.isIndefiniteForm = isIndefiniteForm;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const view = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, view, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n this.valueBeforeDecodeView = view.subarray(inputOffset, inputOffset + inputLength);\r\n if (this.valueBeforeDecodeView.length === 0) {\r\n this.warnings.push(\"Zero buffer length\");\r\n return inputOffset;\r\n }\r\n let currentOffset = inputOffset;\r\n while (checkLen(this.isIndefiniteForm, inputLength) > 0) {\r\n const returnObject = localFromBER(view, currentOffset, inputLength);\r\n if (returnObject.offset === -1) {\r\n this.error = returnObject.result.error;\r\n this.warnings.concat(returnObject.result.warnings);\r\n return -1;\r\n }\r\n currentOffset = returnObject.offset;\r\n this.blockLength += returnObject.result.blockLength;\r\n inputLength -= returnObject.result.blockLength;\r\n this.value.push(returnObject.result);\r\n if (this.isIndefiniteForm && returnObject.result.constructor.NAME === END_OF_CONTENT_NAME) {\r\n break;\r\n }\r\n }\r\n if (this.isIndefiniteForm) {\r\n if (this.value[this.value.length - 1].constructor.NAME === END_OF_CONTENT_NAME) {\r\n this.value.pop();\r\n }\r\n else {\r\n this.warnings.push(\"No EndOfContent block encoded\");\r\n }\r\n }\r\n return currentOffset;\r\n }\r\n toBER(sizeOnly, writer) {\r\n const _writer = writer || new ViewWriter();\r\n for (let i = 0; i < this.value.length; i++) {\r\n this.value[i].toBER(sizeOnly, _writer);\r\n }\r\n if (!writer) {\r\n return _writer.final();\r\n }\r\n return EMPTY_BUFFER;\r\n }\r\n toJSON() {\r\n const object = {\r\n ...super.toJSON(),\r\n isIndefiniteForm: this.isIndefiniteForm,\r\n value: [],\r\n };\r\n for (const value of this.value) {\r\n object.value.push(value.toJSON());\r\n }\r\n return object;\r\n }\r\n}\r\nLocalConstructedValueBlock.NAME = \"ConstructedValueBlock\";\n\nvar _a$v;\r\nclass Constructed extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalConstructedValueBlock);\r\n this.idBlock.isConstructed = true;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm;\r\n const resultOffset = this.valueBlock.fromBER(inputBuffer, inputOffset, (this.lenBlock.isIndefiniteForm) ? inputLength : this.lenBlock.length);\r\n if (resultOffset === -1) {\r\n this.error = this.valueBlock.error;\r\n return resultOffset;\r\n }\r\n if (!this.idBlock.error.length)\r\n this.blockLength += this.idBlock.blockLength;\r\n if (!this.lenBlock.error.length)\r\n this.blockLength += this.lenBlock.blockLength;\r\n if (!this.valueBlock.error.length)\r\n this.blockLength += this.valueBlock.blockLength;\r\n return resultOffset;\r\n }\r\n onAsciiEncoding() {\r\n const values = [];\r\n for (const value of this.valueBlock.value) {\r\n values.push(value.toString(\"ascii\").split(\"\\n\").map(o => ` ${o}`).join(\"\\n\"));\r\n }\r\n const blockName = this.idBlock.tagClass === 3\r\n ? `[${this.idBlock.tagNumber}]`\r\n : this.constructor.NAME;\r\n return values.length\r\n ? `${blockName} :\\n${values.join(\"\\n\")}`\r\n : `${blockName} :`;\r\n }\r\n}\r\n_a$v = Constructed;\r\n(() => {\r\n typeStore.Constructed = _a$v;\r\n})();\r\nConstructed.NAME = \"CONSTRUCTED\";\n\nclass LocalEndOfContentValueBlock extends ValueBlock {\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n return inputOffset;\r\n }\r\n toBER(sizeOnly) {\r\n return EMPTY_BUFFER;\r\n }\r\n}\r\nLocalEndOfContentValueBlock.override = \"EndOfContentValueBlock\";\n\nvar _a$u;\r\nclass EndOfContent extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalEndOfContentValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 0;\r\n }\r\n}\r\n_a$u = EndOfContent;\r\n(() => {\r\n typeStore.EndOfContent = _a$u;\r\n})();\r\nEndOfContent.NAME = END_OF_CONTENT_NAME;\n\nvar _a$t;\r\nclass Null extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, ValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 5;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n if (this.lenBlock.length > 0)\r\n this.warnings.push(\"Non-zero length of value block for Null type\");\r\n if (!this.idBlock.error.length)\r\n this.blockLength += this.idBlock.blockLength;\r\n if (!this.lenBlock.error.length)\r\n this.blockLength += this.lenBlock.blockLength;\r\n this.blockLength += inputLength;\r\n if ((inputOffset + inputLength) > inputBuffer.byteLength) {\r\n this.error = \"End of input reached before message was fully decoded (inconsistent offset and length values)\";\r\n return -1;\r\n }\r\n return (inputOffset + inputLength);\r\n }\r\n toBER(sizeOnly, writer) {\r\n const retBuf = new ArrayBuffer(2);\r\n if (!sizeOnly) {\r\n const retView = new Uint8Array(retBuf);\r\n retView[0] = 0x05;\r\n retView[1] = 0x00;\r\n }\r\n if (writer) {\r\n writer.write(retBuf);\r\n }\r\n return retBuf;\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME}`;\r\n }\r\n}\r\n_a$t = Null;\r\n(() => {\r\n typeStore.Null = _a$t;\r\n})();\r\nNull.NAME = \"NULL\";\n\nclass LocalBooleanValueBlock extends HexBlock(ValueBlock) {\r\n constructor({ value, ...parameters } = {}) {\r\n super(parameters);\r\n if (parameters.valueHex) {\r\n this.valueHexView = pvtsutils.BufferSourceConverter.toUint8Array(parameters.valueHex);\r\n }\r\n else {\r\n this.valueHexView = new Uint8Array(1);\r\n }\r\n if (value) {\r\n this.value = value;\r\n }\r\n }\r\n get value() {\r\n for (const octet of this.valueHexView) {\r\n if (octet > 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n set value(value) {\r\n this.valueHexView[0] = value ? 0xFF : 0x00;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const inputView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, inputView, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n this.valueHexView = inputView.subarray(inputOffset, inputOffset + inputLength);\r\n if (inputLength > 1)\r\n this.warnings.push(\"Boolean value encoded in more then 1 octet\");\r\n this.isHexOnly = true;\r\n pvutils.utilDecodeTC.call(this);\r\n this.blockLength = inputLength;\r\n return (inputOffset + inputLength);\r\n }\r\n toBER() {\r\n return this.valueHexView.slice();\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n value: this.value,\r\n };\r\n }\r\n}\r\nLocalBooleanValueBlock.NAME = \"BooleanValueBlock\";\n\nvar _a$s;\r\nclass Boolean extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalBooleanValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 1;\r\n }\r\n getValue() {\r\n return this.valueBlock.value;\r\n }\r\n setValue(value) {\r\n this.valueBlock.value = value;\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${this.getValue}`;\r\n }\r\n}\r\n_a$s = Boolean;\r\n(() => {\r\n typeStore.Boolean = _a$s;\r\n})();\r\nBoolean.NAME = \"BOOLEAN\";\n\nclass LocalOctetStringValueBlock extends HexBlock(LocalConstructedValueBlock) {\r\n constructor({ isConstructed = false, ...parameters } = {}) {\r\n super(parameters);\r\n this.isConstructed = isConstructed;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n let resultOffset = 0;\r\n if (this.isConstructed) {\r\n this.isHexOnly = false;\r\n resultOffset = LocalConstructedValueBlock.prototype.fromBER.call(this, inputBuffer, inputOffset, inputLength);\r\n if (resultOffset === -1)\r\n return resultOffset;\r\n for (let i = 0; i < this.value.length; i++) {\r\n const currentBlockName = this.value[i].constructor.NAME;\r\n if (currentBlockName === END_OF_CONTENT_NAME) {\r\n if (this.isIndefiniteForm)\r\n break;\r\n else {\r\n this.error = \"EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only\";\r\n return -1;\r\n }\r\n }\r\n if (currentBlockName !== OCTET_STRING_NAME) {\r\n this.error = \"OCTET STRING may consists of OCTET STRINGs only\";\r\n return -1;\r\n }\r\n }\r\n }\r\n else {\r\n this.isHexOnly = true;\r\n resultOffset = super.fromBER(inputBuffer, inputOffset, inputLength);\r\n this.blockLength = inputLength;\r\n }\r\n return resultOffset;\r\n }\r\n toBER(sizeOnly, writer) {\r\n if (this.isConstructed)\r\n return LocalConstructedValueBlock.prototype.toBER.call(this, sizeOnly, writer);\r\n return sizeOnly\r\n ? new ArrayBuffer(this.valueHexView.byteLength)\r\n : this.valueHexView.slice().buffer;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n isConstructed: this.isConstructed,\r\n };\r\n }\r\n}\r\nLocalOctetStringValueBlock.NAME = \"OctetStringValueBlock\";\n\nvar _a$r;\r\nclass OctetString extends BaseBlock {\r\n constructor({ idBlock = {}, lenBlock = {}, ...parameters } = {}) {\r\n var _b, _c;\r\n (_b = parameters.isConstructed) !== null && _b !== void 0 ? _b : (parameters.isConstructed = !!((_c = parameters.value) === null || _c === void 0 ? void 0 : _c.length));\r\n super({\r\n idBlock: {\r\n isConstructed: parameters.isConstructed,\r\n ...idBlock,\r\n },\r\n lenBlock: {\r\n ...lenBlock,\r\n isIndefiniteForm: !!parameters.isIndefiniteForm,\r\n },\r\n ...parameters,\r\n }, LocalOctetStringValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 4;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n this.valueBlock.isConstructed = this.idBlock.isConstructed;\r\n this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm;\r\n if (inputLength === 0) {\r\n if (this.idBlock.error.length === 0)\r\n this.blockLength += this.idBlock.blockLength;\r\n if (this.lenBlock.error.length === 0)\r\n this.blockLength += this.lenBlock.blockLength;\r\n return inputOffset;\r\n }\r\n if (!this.valueBlock.isConstructed) {\r\n const view = inputBuffer instanceof ArrayBuffer ? new Uint8Array(inputBuffer) : inputBuffer;\r\n const buf = view.subarray(inputOffset, inputOffset + inputLength);\r\n try {\r\n if (buf.byteLength) {\r\n const asn = localFromBER(buf, 0, buf.byteLength);\r\n if (asn.offset !== -1 && asn.offset === inputLength) {\r\n this.valueBlock.value = [asn.result];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return super.fromBER(inputBuffer, inputOffset, inputLength);\r\n }\r\n onAsciiEncoding() {\r\n if (this.valueBlock.isConstructed || (this.valueBlock.value && this.valueBlock.value.length)) {\r\n return Constructed.prototype.onAsciiEncoding.call(this);\r\n }\r\n return `${this.constructor.NAME} : ${pvtsutils.Convert.ToHex(this.valueBlock.valueHexView)}`;\r\n }\r\n getValue() {\r\n if (!this.idBlock.isConstructed) {\r\n return this.valueBlock.valueHexView.slice().buffer;\r\n }\r\n const array = [];\r\n for (const content of this.valueBlock.value) {\r\n if (content instanceof OctetString) {\r\n array.push(content.valueBlock.valueHexView);\r\n }\r\n }\r\n return pvtsutils.BufferSourceConverter.concat(array);\r\n }\r\n}\r\n_a$r = OctetString;\r\n(() => {\r\n typeStore.OctetString = _a$r;\r\n})();\r\nOctetString.NAME = OCTET_STRING_NAME;\n\nclass LocalBitStringValueBlock extends HexBlock(LocalConstructedValueBlock) {\r\n constructor({ unusedBits = 0, isConstructed = false, ...parameters } = {}) {\r\n super(parameters);\r\n this.unusedBits = unusedBits;\r\n this.isConstructed = isConstructed;\r\n this.blockLength = this.valueHexView.byteLength;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n if (!inputLength) {\r\n return inputOffset;\r\n }\r\n let resultOffset = -1;\r\n if (this.isConstructed) {\r\n resultOffset = LocalConstructedValueBlock.prototype.fromBER.call(this, inputBuffer, inputOffset, inputLength);\r\n if (resultOffset === -1)\r\n return resultOffset;\r\n for (const value of this.value) {\r\n const currentBlockName = value.constructor.NAME;\r\n if (currentBlockName === END_OF_CONTENT_NAME) {\r\n if (this.isIndefiniteForm)\r\n break;\r\n else {\r\n this.error = \"EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only\";\r\n return -1;\r\n }\r\n }\r\n if (currentBlockName !== BIT_STRING_NAME) {\r\n this.error = \"BIT STRING may consists of BIT STRINGs only\";\r\n return -1;\r\n }\r\n const valueBlock = value.valueBlock;\r\n if ((this.unusedBits > 0) && (valueBlock.unusedBits > 0)) {\r\n this.error = \"Using of \\\"unused bits\\\" inside constructive BIT STRING allowed for least one only\";\r\n return -1;\r\n }\r\n this.unusedBits = valueBlock.unusedBits;\r\n }\r\n return resultOffset;\r\n }\r\n const inputView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, inputView, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength);\r\n this.unusedBits = intBuffer[0];\r\n if (this.unusedBits > 7) {\r\n this.error = \"Unused bits for BitString must be in range 0-7\";\r\n return -1;\r\n }\r\n if (!this.unusedBits) {\r\n const buf = intBuffer.subarray(1);\r\n try {\r\n if (buf.byteLength) {\r\n const asn = localFromBER(buf, 0, buf.byteLength);\r\n if (asn.offset !== -1 && asn.offset === (inputLength - 1)) {\r\n this.value = [asn.result];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n }\r\n }\r\n this.valueHexView = intBuffer.subarray(1);\r\n this.blockLength = intBuffer.length;\r\n return (inputOffset + inputLength);\r\n }\r\n toBER(sizeOnly, writer) {\r\n if (this.isConstructed) {\r\n return LocalConstructedValueBlock.prototype.toBER.call(this, sizeOnly, writer);\r\n }\r\n if (sizeOnly) {\r\n return new ArrayBuffer(this.valueHexView.byteLength + 1);\r\n }\r\n if (!this.valueHexView.byteLength) {\r\n return EMPTY_BUFFER;\r\n }\r\n const retView = new Uint8Array(this.valueHexView.length + 1);\r\n retView[0] = this.unusedBits;\r\n retView.set(this.valueHexView, 1);\r\n return retView.buffer;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n unusedBits: this.unusedBits,\r\n isConstructed: this.isConstructed,\r\n };\r\n }\r\n}\r\nLocalBitStringValueBlock.NAME = \"BitStringValueBlock\";\n\nvar _a$q;\r\nclass BitString extends BaseBlock {\r\n constructor({ idBlock = {}, lenBlock = {}, ...parameters } = {}) {\r\n var _b, _c;\r\n (_b = parameters.isConstructed) !== null && _b !== void 0 ? _b : (parameters.isConstructed = !!((_c = parameters.value) === null || _c === void 0 ? void 0 : _c.length));\r\n super({\r\n idBlock: {\r\n isConstructed: parameters.isConstructed,\r\n ...idBlock,\r\n },\r\n lenBlock: {\r\n ...lenBlock,\r\n isIndefiniteForm: !!parameters.isIndefiniteForm,\r\n },\r\n ...parameters,\r\n }, LocalBitStringValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 3;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n this.valueBlock.isConstructed = this.idBlock.isConstructed;\r\n this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm;\r\n return super.fromBER(inputBuffer, inputOffset, inputLength);\r\n }\r\n onAsciiEncoding() {\r\n if (this.valueBlock.isConstructed || (this.valueBlock.value && this.valueBlock.value.length)) {\r\n return Constructed.prototype.onAsciiEncoding.call(this);\r\n }\r\n else {\r\n const bits = [];\r\n const valueHex = this.valueBlock.valueHexView;\r\n for (const byte of valueHex) {\r\n bits.push(byte.toString(2).padStart(8, \"0\"));\r\n }\r\n const bitsStr = bits.join(\"\");\r\n return `${this.constructor.NAME} : ${bitsStr.substring(0, bitsStr.length - this.valueBlock.unusedBits)}`;\r\n }\r\n }\r\n}\r\n_a$q = BitString;\r\n(() => {\r\n typeStore.BitString = _a$q;\r\n})();\r\nBitString.NAME = BIT_STRING_NAME;\n\nvar _a$p;\r\nfunction viewAdd(first, second) {\r\n const c = new Uint8Array([0]);\r\n const firstView = new Uint8Array(first);\r\n const secondView = new Uint8Array(second);\r\n let firstViewCopy = firstView.slice(0);\r\n const firstViewCopyLength = firstViewCopy.length - 1;\r\n const secondViewCopy = secondView.slice(0);\r\n const secondViewCopyLength = secondViewCopy.length - 1;\r\n let value = 0;\r\n const max = (secondViewCopyLength < firstViewCopyLength) ? firstViewCopyLength : secondViewCopyLength;\r\n let counter = 0;\r\n for (let i = max; i >= 0; i--, counter++) {\r\n switch (true) {\r\n case (counter < secondViewCopy.length):\r\n value = firstViewCopy[firstViewCopyLength - counter] + secondViewCopy[secondViewCopyLength - counter] + c[0];\r\n break;\r\n default:\r\n value = firstViewCopy[firstViewCopyLength - counter] + c[0];\r\n }\r\n c[0] = value / 10;\r\n switch (true) {\r\n case (counter >= firstViewCopy.length):\r\n firstViewCopy = pvutils.utilConcatView(new Uint8Array([value % 10]), firstViewCopy);\r\n break;\r\n default:\r\n firstViewCopy[firstViewCopyLength - counter] = value % 10;\r\n }\r\n }\r\n if (c[0] > 0)\r\n firstViewCopy = pvutils.utilConcatView(c, firstViewCopy);\r\n return firstViewCopy;\r\n}\r\nfunction power2(n) {\r\n if (n >= powers2.length) {\r\n for (let p = powers2.length; p <= n; p++) {\r\n const c = new Uint8Array([0]);\r\n let digits = (powers2[p - 1]).slice(0);\r\n for (let i = (digits.length - 1); i >= 0; i--) {\r\n const newValue = new Uint8Array([(digits[i] << 1) + c[0]]);\r\n c[0] = newValue[0] / 10;\r\n digits[i] = newValue[0] % 10;\r\n }\r\n if (c[0] > 0)\r\n digits = pvutils.utilConcatView(c, digits);\r\n powers2.push(digits);\r\n }\r\n }\r\n return powers2[n];\r\n}\r\nfunction viewSub(first, second) {\r\n let b = 0;\r\n const firstView = new Uint8Array(first);\r\n const secondView = new Uint8Array(second);\r\n const firstViewCopy = firstView.slice(0);\r\n const firstViewCopyLength = firstViewCopy.length - 1;\r\n const secondViewCopy = secondView.slice(0);\r\n const secondViewCopyLength = secondViewCopy.length - 1;\r\n let value;\r\n let counter = 0;\r\n for (let i = secondViewCopyLength; i >= 0; i--, counter++) {\r\n value = firstViewCopy[firstViewCopyLength - counter] - secondViewCopy[secondViewCopyLength - counter] - b;\r\n switch (true) {\r\n case (value < 0):\r\n b = 1;\r\n firstViewCopy[firstViewCopyLength - counter] = value + 10;\r\n break;\r\n default:\r\n b = 0;\r\n firstViewCopy[firstViewCopyLength - counter] = value;\r\n }\r\n }\r\n if (b > 0) {\r\n for (let i = (firstViewCopyLength - secondViewCopyLength + 1); i >= 0; i--, counter++) {\r\n value = firstViewCopy[firstViewCopyLength - counter] - b;\r\n if (value < 0) {\r\n b = 1;\r\n firstViewCopy[firstViewCopyLength - counter] = value + 10;\r\n }\r\n else {\r\n b = 0;\r\n firstViewCopy[firstViewCopyLength - counter] = value;\r\n break;\r\n }\r\n }\r\n }\r\n return firstViewCopy.slice();\r\n}\r\nclass LocalIntegerValueBlock extends HexBlock(ValueBlock) {\r\n constructor({ value, ...parameters } = {}) {\r\n super(parameters);\r\n this._valueDec = 0;\r\n if (parameters.valueHex) {\r\n this.setValueHex();\r\n }\r\n if (value !== undefined) {\r\n this.valueDec = value;\r\n }\r\n }\r\n setValueHex() {\r\n if (this.valueHexView.length >= 4) {\r\n this.warnings.push(\"Too big Integer for decoding, hex only\");\r\n this.isHexOnly = true;\r\n this._valueDec = 0;\r\n }\r\n else {\r\n this.isHexOnly = false;\r\n if (this.valueHexView.length > 0) {\r\n this._valueDec = pvutils.utilDecodeTC.call(this);\r\n }\r\n }\r\n }\r\n set valueDec(v) {\r\n this._valueDec = v;\r\n this.isHexOnly = false;\r\n this.valueHexView = new Uint8Array(pvutils.utilEncodeTC(v));\r\n }\r\n get valueDec() {\r\n return this._valueDec;\r\n }\r\n fromDER(inputBuffer, inputOffset, inputLength, expectedLength = 0) {\r\n const offset = this.fromBER(inputBuffer, inputOffset, inputLength);\r\n if (offset === -1)\r\n return offset;\r\n const view = this.valueHexView;\r\n if ((view[0] === 0x00) && ((view[1] & 0x80) !== 0)) {\r\n this.valueHexView = view.subarray(1);\r\n }\r\n else {\r\n if (expectedLength !== 0) {\r\n if (view.length < expectedLength) {\r\n if ((expectedLength - view.length) > 1)\r\n expectedLength = view.length + 1;\r\n this.valueHexView = view.subarray(expectedLength - view.length);\r\n }\r\n }\r\n }\r\n return offset;\r\n }\r\n toDER(sizeOnly = false) {\r\n const view = this.valueHexView;\r\n switch (true) {\r\n case ((view[0] & 0x80) !== 0):\r\n {\r\n const updatedView = new Uint8Array(this.valueHexView.length + 1);\r\n updatedView[0] = 0x00;\r\n updatedView.set(view, 1);\r\n this.valueHexView = updatedView;\r\n }\r\n break;\r\n case ((view[0] === 0x00) && ((view[1] & 0x80) === 0)):\r\n {\r\n this.valueHexView = this.valueHexView.subarray(1);\r\n }\r\n break;\r\n }\r\n return this.toBER(sizeOnly);\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const resultOffset = super.fromBER(inputBuffer, inputOffset, inputLength);\r\n if (resultOffset === -1) {\r\n return resultOffset;\r\n }\r\n this.setValueHex();\r\n return resultOffset;\r\n }\r\n toBER(sizeOnly) {\r\n return sizeOnly\r\n ? new ArrayBuffer(this.valueHexView.length)\r\n : this.valueHexView.slice().buffer;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n valueDec: this.valueDec,\r\n };\r\n }\r\n toString() {\r\n const firstBit = (this.valueHexView.length * 8) - 1;\r\n let digits = new Uint8Array((this.valueHexView.length * 8) / 3);\r\n let bitNumber = 0;\r\n let currentByte;\r\n const asn1View = this.valueHexView;\r\n let result = \"\";\r\n let flag = false;\r\n for (let byteNumber = (asn1View.byteLength - 1); byteNumber >= 0; byteNumber--) {\r\n currentByte = asn1View[byteNumber];\r\n for (let i = 0; i < 8; i++) {\r\n if ((currentByte & 1) === 1) {\r\n switch (bitNumber) {\r\n case firstBit:\r\n digits = viewSub(power2(bitNumber), digits);\r\n result = \"-\";\r\n break;\r\n default:\r\n digits = viewAdd(digits, power2(bitNumber));\r\n }\r\n }\r\n bitNumber++;\r\n currentByte >>= 1;\r\n }\r\n }\r\n for (let i = 0; i < digits.length; i++) {\r\n if (digits[i])\r\n flag = true;\r\n if (flag)\r\n result += digitsString.charAt(digits[i]);\r\n }\r\n if (flag === false)\r\n result += digitsString.charAt(0);\r\n return result;\r\n }\r\n}\r\n_a$p = LocalIntegerValueBlock;\r\nLocalIntegerValueBlock.NAME = \"IntegerValueBlock\";\r\n(() => {\r\n Object.defineProperty(_a$p.prototype, \"valueHex\", {\r\n set: function (v) {\r\n this.valueHexView = new Uint8Array(v);\r\n this.setValueHex();\r\n },\r\n get: function () {\r\n return this.valueHexView.slice().buffer;\r\n },\r\n });\r\n})();\n\nvar _a$o;\r\nclass Integer extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalIntegerValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 2;\r\n }\r\n toBigInt() {\r\n assertBigInt();\r\n return BigInt(this.valueBlock.toString());\r\n }\r\n static fromBigInt(value) {\r\n assertBigInt();\r\n const bigIntValue = BigInt(value);\r\n const writer = new ViewWriter();\r\n const hex = bigIntValue.toString(16).replace(/^-/, \"\");\r\n const view = new Uint8Array(pvtsutils.Convert.FromHex(hex));\r\n if (bigIntValue < 0) {\r\n const first = new Uint8Array(view.length + (view[0] & 0x80 ? 1 : 0));\r\n first[0] |= 0x80;\r\n const firstInt = BigInt(`0x${pvtsutils.Convert.ToHex(first)}`);\r\n const secondInt = firstInt + bigIntValue;\r\n const second = pvtsutils.BufferSourceConverter.toUint8Array(pvtsutils.Convert.FromHex(secondInt.toString(16)));\r\n second[0] |= 0x80;\r\n writer.write(second);\r\n }\r\n else {\r\n if (view[0] & 0x80) {\r\n writer.write(new Uint8Array([0]));\r\n }\r\n writer.write(view);\r\n }\r\n const res = new Integer({\r\n valueHex: writer.final(),\r\n });\r\n return res;\r\n }\r\n convertToDER() {\r\n const integer = new Integer({ valueHex: this.valueBlock.valueHexView });\r\n integer.valueBlock.toDER();\r\n return integer;\r\n }\r\n convertFromDER() {\r\n return new Integer({\r\n valueHex: this.valueBlock.valueHexView[0] === 0\r\n ? this.valueBlock.valueHexView.subarray(1)\r\n : this.valueBlock.valueHexView,\r\n });\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${this.valueBlock.toString()}`;\r\n }\r\n}\r\n_a$o = Integer;\r\n(() => {\r\n typeStore.Integer = _a$o;\r\n})();\r\nInteger.NAME = \"INTEGER\";\n\nvar _a$n;\r\nclass Enumerated extends Integer {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 10;\r\n }\r\n}\r\n_a$n = Enumerated;\r\n(() => {\r\n typeStore.Enumerated = _a$n;\r\n})();\r\nEnumerated.NAME = \"ENUMERATED\";\n\nclass LocalSidValueBlock extends HexBlock(ValueBlock) {\r\n constructor({ valueDec = -1, isFirstSid = false, ...parameters } = {}) {\r\n super(parameters);\r\n this.valueDec = valueDec;\r\n this.isFirstSid = isFirstSid;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n if (!inputLength) {\r\n return inputOffset;\r\n }\r\n const inputView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, inputView, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength);\r\n this.valueHexView = new Uint8Array(inputLength);\r\n for (let i = 0; i < inputLength; i++) {\r\n this.valueHexView[i] = intBuffer[i] & 0x7F;\r\n this.blockLength++;\r\n if ((intBuffer[i] & 0x80) === 0x00)\r\n break;\r\n }\r\n const tempView = new Uint8Array(this.blockLength);\r\n for (let i = 0; i < this.blockLength; i++) {\r\n tempView[i] = this.valueHexView[i];\r\n }\r\n this.valueHexView = tempView;\r\n if ((intBuffer[this.blockLength - 1] & 0x80) !== 0x00) {\r\n this.error = \"End of input reached before message was fully decoded\";\r\n return -1;\r\n }\r\n if (this.valueHexView[0] === 0x00)\r\n this.warnings.push(\"Needlessly long format of SID encoding\");\r\n if (this.blockLength <= 8)\r\n this.valueDec = pvutils.utilFromBase(this.valueHexView, 7);\r\n else {\r\n this.isHexOnly = true;\r\n this.warnings.push(\"Too big SID for decoding, hex only\");\r\n }\r\n return (inputOffset + this.blockLength);\r\n }\r\n set valueBigInt(value) {\r\n assertBigInt();\r\n let bits = BigInt(value).toString(2);\r\n while (bits.length % 7) {\r\n bits = \"0\" + bits;\r\n }\r\n const bytes = new Uint8Array(bits.length / 7);\r\n for (let i = 0; i < bytes.length; i++) {\r\n bytes[i] = parseInt(bits.slice(i * 7, i * 7 + 7), 2) + (i + 1 < bytes.length ? 0x80 : 0);\r\n }\r\n this.fromBER(bytes.buffer, 0, bytes.length);\r\n }\r\n toBER(sizeOnly) {\r\n if (this.isHexOnly) {\r\n if (sizeOnly)\r\n return (new ArrayBuffer(this.valueHexView.byteLength));\r\n const curView = this.valueHexView;\r\n const retView = new Uint8Array(this.blockLength);\r\n for (let i = 0; i < (this.blockLength - 1); i++)\r\n retView[i] = curView[i] | 0x80;\r\n retView[this.blockLength - 1] = curView[this.blockLength - 1];\r\n return retView.buffer;\r\n }\r\n const encodedBuf = pvutils.utilToBase(this.valueDec, 7);\r\n if (encodedBuf.byteLength === 0) {\r\n this.error = \"Error during encoding SID value\";\r\n return EMPTY_BUFFER;\r\n }\r\n const retView = new Uint8Array(encodedBuf.byteLength);\r\n if (!sizeOnly) {\r\n const encodedView = new Uint8Array(encodedBuf);\r\n const len = encodedBuf.byteLength - 1;\r\n for (let i = 0; i < len; i++)\r\n retView[i] = encodedView[i] | 0x80;\r\n retView[len] = encodedView[len];\r\n }\r\n return retView;\r\n }\r\n toString() {\r\n let result = \"\";\r\n if (this.isHexOnly)\r\n result = pvtsutils.Convert.ToHex(this.valueHexView);\r\n else {\r\n if (this.isFirstSid) {\r\n let sidValue = this.valueDec;\r\n if (this.valueDec <= 39)\r\n result = \"0.\";\r\n else {\r\n if (this.valueDec <= 79) {\r\n result = \"1.\";\r\n sidValue -= 40;\r\n }\r\n else {\r\n result = \"2.\";\r\n sidValue -= 80;\r\n }\r\n }\r\n result += sidValue.toString();\r\n }\r\n else\r\n result = this.valueDec.toString();\r\n }\r\n return result;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n valueDec: this.valueDec,\r\n isFirstSid: this.isFirstSid,\r\n };\r\n }\r\n}\r\nLocalSidValueBlock.NAME = \"sidBlock\";\n\nclass LocalObjectIdentifierValueBlock extends ValueBlock {\r\n constructor({ value = EMPTY_STRING, ...parameters } = {}) {\r\n super(parameters);\r\n this.value = [];\r\n if (value) {\r\n this.fromString(value);\r\n }\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n let resultOffset = inputOffset;\r\n while (inputLength > 0) {\r\n const sidBlock = new LocalSidValueBlock();\r\n resultOffset = sidBlock.fromBER(inputBuffer, resultOffset, inputLength);\r\n if (resultOffset === -1) {\r\n this.blockLength = 0;\r\n this.error = sidBlock.error;\r\n return resultOffset;\r\n }\r\n if (this.value.length === 0)\r\n sidBlock.isFirstSid = true;\r\n this.blockLength += sidBlock.blockLength;\r\n inputLength -= sidBlock.blockLength;\r\n this.value.push(sidBlock);\r\n }\r\n return resultOffset;\r\n }\r\n toBER(sizeOnly) {\r\n const retBuffers = [];\r\n for (let i = 0; i < this.value.length; i++) {\r\n const valueBuf = this.value[i].toBER(sizeOnly);\r\n if (valueBuf.byteLength === 0) {\r\n this.error = this.value[i].error;\r\n return EMPTY_BUFFER;\r\n }\r\n retBuffers.push(valueBuf);\r\n }\r\n return concat(retBuffers);\r\n }\r\n fromString(string) {\r\n this.value = [];\r\n let pos1 = 0;\r\n let pos2 = 0;\r\n let sid = \"\";\r\n let flag = false;\r\n do {\r\n pos2 = string.indexOf(\".\", pos1);\r\n if (pos2 === -1)\r\n sid = string.substring(pos1);\r\n else\r\n sid = string.substring(pos1, pos2);\r\n pos1 = pos2 + 1;\r\n if (flag) {\r\n const sidBlock = this.value[0];\r\n let plus = 0;\r\n switch (sidBlock.valueDec) {\r\n case 0:\r\n break;\r\n case 1:\r\n plus = 40;\r\n break;\r\n case 2:\r\n plus = 80;\r\n break;\r\n default:\r\n this.value = [];\r\n return;\r\n }\r\n const parsedSID = parseInt(sid, 10);\r\n if (isNaN(parsedSID))\r\n return;\r\n sidBlock.valueDec = parsedSID + plus;\r\n flag = false;\r\n }\r\n else {\r\n const sidBlock = new LocalSidValueBlock();\r\n if (sid > Number.MAX_SAFE_INTEGER) {\r\n assertBigInt();\r\n const sidValue = BigInt(sid);\r\n sidBlock.valueBigInt = sidValue;\r\n }\r\n else {\r\n sidBlock.valueDec = parseInt(sid, 10);\r\n if (isNaN(sidBlock.valueDec))\r\n return;\r\n }\r\n if (!this.value.length) {\r\n sidBlock.isFirstSid = true;\r\n flag = true;\r\n }\r\n this.value.push(sidBlock);\r\n }\r\n } while (pos2 !== -1);\r\n }\r\n toString() {\r\n let result = \"\";\r\n let isHexOnly = false;\r\n for (let i = 0; i < this.value.length; i++) {\r\n isHexOnly = this.value[i].isHexOnly;\r\n let sidStr = this.value[i].toString();\r\n if (i !== 0)\r\n result = `${result}.`;\r\n if (isHexOnly) {\r\n sidStr = `{${sidStr}}`;\r\n if (this.value[i].isFirstSid)\r\n result = `2.{${sidStr} - 80}`;\r\n else\r\n result += sidStr;\r\n }\r\n else\r\n result += sidStr;\r\n }\r\n return result;\r\n }\r\n toJSON() {\r\n const object = {\r\n ...super.toJSON(),\r\n value: this.toString(),\r\n sidArray: [],\r\n };\r\n for (let i = 0; i < this.value.length; i++) {\r\n object.sidArray.push(this.value[i].toJSON());\r\n }\r\n return object;\r\n }\r\n}\r\nLocalObjectIdentifierValueBlock.NAME = \"ObjectIdentifierValueBlock\";\n\nvar _a$m;\r\nclass ObjectIdentifier extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalObjectIdentifierValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 6;\r\n }\r\n getValue() {\r\n return this.valueBlock.toString();\r\n }\r\n setValue(value) {\r\n this.valueBlock.fromString(value);\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${this.valueBlock.toString() || \"empty\"}`;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n value: this.getValue(),\r\n };\r\n }\r\n}\r\n_a$m = ObjectIdentifier;\r\n(() => {\r\n typeStore.ObjectIdentifier = _a$m;\r\n})();\r\nObjectIdentifier.NAME = \"OBJECT IDENTIFIER\";\n\nclass LocalRelativeSidValueBlock extends HexBlock(LocalBaseBlock) {\r\n constructor({ valueDec = 0, ...parameters } = {}) {\r\n super(parameters);\r\n this.valueDec = valueDec;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n if (inputLength === 0)\r\n return inputOffset;\r\n const inputView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, inputView, inputOffset, inputLength))\r\n return -1;\r\n const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength);\r\n this.valueHexView = new Uint8Array(inputLength);\r\n for (let i = 0; i < inputLength; i++) {\r\n this.valueHexView[i] = intBuffer[i] & 0x7F;\r\n this.blockLength++;\r\n if ((intBuffer[i] & 0x80) === 0x00)\r\n break;\r\n }\r\n const tempView = new Uint8Array(this.blockLength);\r\n for (let i = 0; i < this.blockLength; i++)\r\n tempView[i] = this.valueHexView[i];\r\n this.valueHexView = tempView;\r\n if ((intBuffer[this.blockLength - 1] & 0x80) !== 0x00) {\r\n this.error = \"End of input reached before message was fully decoded\";\r\n return -1;\r\n }\r\n if (this.valueHexView[0] === 0x00)\r\n this.warnings.push(\"Needlessly long format of SID encoding\");\r\n if (this.blockLength <= 8)\r\n this.valueDec = pvutils.utilFromBase(this.valueHexView, 7);\r\n else {\r\n this.isHexOnly = true;\r\n this.warnings.push(\"Too big SID for decoding, hex only\");\r\n }\r\n return (inputOffset + this.blockLength);\r\n }\r\n toBER(sizeOnly) {\r\n if (this.isHexOnly) {\r\n if (sizeOnly)\r\n return (new ArrayBuffer(this.valueHexView.byteLength));\r\n const curView = this.valueHexView;\r\n const retView = new Uint8Array(this.blockLength);\r\n for (let i = 0; i < (this.blockLength - 1); i++)\r\n retView[i] = curView[i] | 0x80;\r\n retView[this.blockLength - 1] = curView[this.blockLength - 1];\r\n return retView.buffer;\r\n }\r\n const encodedBuf = pvutils.utilToBase(this.valueDec, 7);\r\n if (encodedBuf.byteLength === 0) {\r\n this.error = \"Error during encoding SID value\";\r\n return EMPTY_BUFFER;\r\n }\r\n const retView = new Uint8Array(encodedBuf.byteLength);\r\n if (!sizeOnly) {\r\n const encodedView = new Uint8Array(encodedBuf);\r\n const len = encodedBuf.byteLength - 1;\r\n for (let i = 0; i < len; i++)\r\n retView[i] = encodedView[i] | 0x80;\r\n retView[len] = encodedView[len];\r\n }\r\n return retView.buffer;\r\n }\r\n toString() {\r\n let result = \"\";\r\n if (this.isHexOnly)\r\n result = pvtsutils.Convert.ToHex(this.valueHexView);\r\n else {\r\n result = this.valueDec.toString();\r\n }\r\n return result;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n valueDec: this.valueDec,\r\n };\r\n }\r\n}\r\nLocalRelativeSidValueBlock.NAME = \"relativeSidBlock\";\n\nclass LocalRelativeObjectIdentifierValueBlock extends ValueBlock {\r\n constructor({ value = EMPTY_STRING, ...parameters } = {}) {\r\n super(parameters);\r\n this.value = [];\r\n if (value) {\r\n this.fromString(value);\r\n }\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n let resultOffset = inputOffset;\r\n while (inputLength > 0) {\r\n const sidBlock = new LocalRelativeSidValueBlock();\r\n resultOffset = sidBlock.fromBER(inputBuffer, resultOffset, inputLength);\r\n if (resultOffset === -1) {\r\n this.blockLength = 0;\r\n this.error = sidBlock.error;\r\n return resultOffset;\r\n }\r\n this.blockLength += sidBlock.blockLength;\r\n inputLength -= sidBlock.blockLength;\r\n this.value.push(sidBlock);\r\n }\r\n return resultOffset;\r\n }\r\n toBER(sizeOnly, writer) {\r\n const retBuffers = [];\r\n for (let i = 0; i < this.value.length; i++) {\r\n const valueBuf = this.value[i].toBER(sizeOnly);\r\n if (valueBuf.byteLength === 0) {\r\n this.error = this.value[i].error;\r\n return EMPTY_BUFFER;\r\n }\r\n retBuffers.push(valueBuf);\r\n }\r\n return concat(retBuffers);\r\n }\r\n fromString(string) {\r\n this.value = [];\r\n let pos1 = 0;\r\n let pos2 = 0;\r\n let sid = \"\";\r\n do {\r\n pos2 = string.indexOf(\".\", pos1);\r\n if (pos2 === -1)\r\n sid = string.substring(pos1);\r\n else\r\n sid = string.substring(pos1, pos2);\r\n pos1 = pos2 + 1;\r\n const sidBlock = new LocalRelativeSidValueBlock();\r\n sidBlock.valueDec = parseInt(sid, 10);\r\n if (isNaN(sidBlock.valueDec))\r\n return true;\r\n this.value.push(sidBlock);\r\n } while (pos2 !== -1);\r\n return true;\r\n }\r\n toString() {\r\n let result = \"\";\r\n let isHexOnly = false;\r\n for (let i = 0; i < this.value.length; i++) {\r\n isHexOnly = this.value[i].isHexOnly;\r\n let sidStr = this.value[i].toString();\r\n if (i !== 0)\r\n result = `${result}.`;\r\n if (isHexOnly) {\r\n sidStr = `{${sidStr}}`;\r\n result += sidStr;\r\n }\r\n else\r\n result += sidStr;\r\n }\r\n return result;\r\n }\r\n toJSON() {\r\n const object = {\r\n ...super.toJSON(),\r\n value: this.toString(),\r\n sidArray: [],\r\n };\r\n for (let i = 0; i < this.value.length; i++)\r\n object.sidArray.push(this.value[i].toJSON());\r\n return object;\r\n }\r\n}\r\nLocalRelativeObjectIdentifierValueBlock.NAME = \"RelativeObjectIdentifierValueBlock\";\n\nvar _a$l;\r\nclass RelativeObjectIdentifier extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalRelativeObjectIdentifierValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 13;\r\n }\r\n getValue() {\r\n return this.valueBlock.toString();\r\n }\r\n setValue(value) {\r\n this.valueBlock.fromString(value);\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${this.valueBlock.toString() || \"empty\"}`;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n value: this.getValue(),\r\n };\r\n }\r\n}\r\n_a$l = RelativeObjectIdentifier;\r\n(() => {\r\n typeStore.RelativeObjectIdentifier = _a$l;\r\n})();\r\nRelativeObjectIdentifier.NAME = \"RelativeObjectIdentifier\";\n\nvar _a$k;\r\nclass Sequence extends Constructed {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 16;\r\n }\r\n}\r\n_a$k = Sequence;\r\n(() => {\r\n typeStore.Sequence = _a$k;\r\n})();\r\nSequence.NAME = \"SEQUENCE\";\n\nvar _a$j;\r\nclass Set extends Constructed {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 17;\r\n }\r\n}\r\n_a$j = Set;\r\n(() => {\r\n typeStore.Set = _a$j;\r\n})();\r\nSet.NAME = \"SET\";\n\nclass LocalStringValueBlock extends HexBlock(ValueBlock) {\r\n constructor({ ...parameters } = {}) {\r\n super(parameters);\r\n this.isHexOnly = true;\r\n this.value = EMPTY_STRING;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n value: this.value,\r\n };\r\n }\r\n}\r\nLocalStringValueBlock.NAME = \"StringValueBlock\";\n\nclass LocalSimpleStringValueBlock extends LocalStringValueBlock {\r\n}\r\nLocalSimpleStringValueBlock.NAME = \"SimpleStringValueBlock\";\n\nclass LocalSimpleStringBlock extends BaseStringBlock {\r\n constructor({ ...parameters } = {}) {\r\n super(parameters, LocalSimpleStringValueBlock);\r\n }\r\n fromBuffer(inputBuffer) {\r\n this.valueBlock.value = String.fromCharCode.apply(null, pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer));\r\n }\r\n fromString(inputString) {\r\n const strLen = inputString.length;\r\n const view = this.valueBlock.valueHexView = new Uint8Array(strLen);\r\n for (let i = 0; i < strLen; i++)\r\n view[i] = inputString.charCodeAt(i);\r\n this.valueBlock.value = inputString;\r\n }\r\n}\r\nLocalSimpleStringBlock.NAME = \"SIMPLE STRING\";\n\nclass LocalUtf8StringValueBlock extends LocalSimpleStringBlock {\r\n fromBuffer(inputBuffer) {\r\n this.valueBlock.valueHexView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n try {\r\n this.valueBlock.value = pvtsutils.Convert.ToUtf8String(inputBuffer);\r\n }\r\n catch (ex) {\r\n this.warnings.push(`Error during \"decodeURIComponent\": ${ex}, using raw string`);\r\n this.valueBlock.value = pvtsutils.Convert.ToBinary(inputBuffer);\r\n }\r\n }\r\n fromString(inputString) {\r\n this.valueBlock.valueHexView = new Uint8Array(pvtsutils.Convert.FromUtf8String(inputString));\r\n this.valueBlock.value = inputString;\r\n }\r\n}\r\nLocalUtf8StringValueBlock.NAME = \"Utf8StringValueBlock\";\n\nvar _a$i;\r\nclass Utf8String extends LocalUtf8StringValueBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 12;\r\n }\r\n}\r\n_a$i = Utf8String;\r\n(() => {\r\n typeStore.Utf8String = _a$i;\r\n})();\r\nUtf8String.NAME = \"UTF8String\";\n\nclass LocalBmpStringValueBlock extends LocalSimpleStringBlock {\r\n fromBuffer(inputBuffer) {\r\n this.valueBlock.value = pvtsutils.Convert.ToUtf16String(inputBuffer);\r\n this.valueBlock.valueHexView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n }\r\n fromString(inputString) {\r\n this.valueBlock.value = inputString;\r\n this.valueBlock.valueHexView = new Uint8Array(pvtsutils.Convert.FromUtf16String(inputString));\r\n }\r\n}\r\nLocalBmpStringValueBlock.NAME = \"BmpStringValueBlock\";\n\nvar _a$h;\r\nclass BmpString extends LocalBmpStringValueBlock {\r\n constructor({ ...parameters } = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 30;\r\n }\r\n}\r\n_a$h = BmpString;\r\n(() => {\r\n typeStore.BmpString = _a$h;\r\n})();\r\nBmpString.NAME = \"BMPString\";\n\nclass LocalUniversalStringValueBlock extends LocalSimpleStringBlock {\r\n fromBuffer(inputBuffer) {\r\n const copyBuffer = ArrayBuffer.isView(inputBuffer) ? inputBuffer.slice().buffer : inputBuffer.slice(0);\r\n const valueView = new Uint8Array(copyBuffer);\r\n for (let i = 0; i < valueView.length; i += 4) {\r\n valueView[i] = valueView[i + 3];\r\n valueView[i + 1] = valueView[i + 2];\r\n valueView[i + 2] = 0x00;\r\n valueView[i + 3] = 0x00;\r\n }\r\n this.valueBlock.value = String.fromCharCode.apply(null, new Uint32Array(copyBuffer));\r\n }\r\n fromString(inputString) {\r\n const strLength = inputString.length;\r\n const valueHexView = this.valueBlock.valueHexView = new Uint8Array(strLength * 4);\r\n for (let i = 0; i < strLength; i++) {\r\n const codeBuf = pvutils.utilToBase(inputString.charCodeAt(i), 8);\r\n const codeView = new Uint8Array(codeBuf);\r\n if (codeView.length > 4)\r\n continue;\r\n const dif = 4 - codeView.length;\r\n for (let j = (codeView.length - 1); j >= 0; j--)\r\n valueHexView[i * 4 + j + dif] = codeView[j];\r\n }\r\n this.valueBlock.value = inputString;\r\n }\r\n}\r\nLocalUniversalStringValueBlock.NAME = \"UniversalStringValueBlock\";\n\nvar _a$g;\r\nclass UniversalString extends LocalUniversalStringValueBlock {\r\n constructor({ ...parameters } = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 28;\r\n }\r\n}\r\n_a$g = UniversalString;\r\n(() => {\r\n typeStore.UniversalString = _a$g;\r\n})();\r\nUniversalString.NAME = \"UniversalString\";\n\nvar _a$f;\r\nclass NumericString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 18;\r\n }\r\n}\r\n_a$f = NumericString;\r\n(() => {\r\n typeStore.NumericString = _a$f;\r\n})();\r\nNumericString.NAME = \"NumericString\";\n\nvar _a$e;\r\nclass PrintableString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 19;\r\n }\r\n}\r\n_a$e = PrintableString;\r\n(() => {\r\n typeStore.PrintableString = _a$e;\r\n})();\r\nPrintableString.NAME = \"PrintableString\";\n\nvar _a$d;\r\nclass TeletexString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 20;\r\n }\r\n}\r\n_a$d = TeletexString;\r\n(() => {\r\n typeStore.TeletexString = _a$d;\r\n})();\r\nTeletexString.NAME = \"TeletexString\";\n\nvar _a$c;\r\nclass VideotexString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 21;\r\n }\r\n}\r\n_a$c = VideotexString;\r\n(() => {\r\n typeStore.VideotexString = _a$c;\r\n})();\r\nVideotexString.NAME = \"VideotexString\";\n\nvar _a$b;\r\nclass IA5String extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 22;\r\n }\r\n}\r\n_a$b = IA5String;\r\n(() => {\r\n typeStore.IA5String = _a$b;\r\n})();\r\nIA5String.NAME = \"IA5String\";\n\nvar _a$a;\r\nclass GraphicString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 25;\r\n }\r\n}\r\n_a$a = GraphicString;\r\n(() => {\r\n typeStore.GraphicString = _a$a;\r\n})();\r\nGraphicString.NAME = \"GraphicString\";\n\nvar _a$9;\r\nclass VisibleString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 26;\r\n }\r\n}\r\n_a$9 = VisibleString;\r\n(() => {\r\n typeStore.VisibleString = _a$9;\r\n})();\r\nVisibleString.NAME = \"VisibleString\";\n\nvar _a$8;\r\nclass GeneralString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 27;\r\n }\r\n}\r\n_a$8 = GeneralString;\r\n(() => {\r\n typeStore.GeneralString = _a$8;\r\n})();\r\nGeneralString.NAME = \"GeneralString\";\n\nvar _a$7;\r\nclass CharacterString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 29;\r\n }\r\n}\r\n_a$7 = CharacterString;\r\n(() => {\r\n typeStore.CharacterString = _a$7;\r\n})();\r\nCharacterString.NAME = \"CharacterString\";\n\nvar _a$6;\r\nclass UTCTime extends VisibleString {\r\n constructor({ value, valueDate, ...parameters } = {}) {\r\n super(parameters);\r\n this.year = 0;\r\n this.month = 0;\r\n this.day = 0;\r\n this.hour = 0;\r\n this.minute = 0;\r\n this.second = 0;\r\n if (value) {\r\n this.fromString(value);\r\n this.valueBlock.valueHexView = new Uint8Array(value.length);\r\n for (let i = 0; i < value.length; i++)\r\n this.valueBlock.valueHexView[i] = value.charCodeAt(i);\r\n }\r\n if (valueDate) {\r\n this.fromDate(valueDate);\r\n this.valueBlock.valueHexView = new Uint8Array(this.toBuffer());\r\n }\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 23;\r\n }\r\n fromBuffer(inputBuffer) {\r\n this.fromString(String.fromCharCode.apply(null, pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer)));\r\n }\r\n toBuffer() {\r\n const str = this.toString();\r\n const buffer = new ArrayBuffer(str.length);\r\n const view = new Uint8Array(buffer);\r\n for (let i = 0; i < str.length; i++)\r\n view[i] = str.charCodeAt(i);\r\n return buffer;\r\n }\r\n fromDate(inputDate) {\r\n this.year = inputDate.getUTCFullYear();\r\n this.month = inputDate.getUTCMonth() + 1;\r\n this.day = inputDate.getUTCDate();\r\n this.hour = inputDate.getUTCHours();\r\n this.minute = inputDate.getUTCMinutes();\r\n this.second = inputDate.getUTCSeconds();\r\n }\r\n toDate() {\r\n return (new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second)));\r\n }\r\n fromString(inputString) {\r\n const parser = /(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})Z/ig;\r\n const parserArray = parser.exec(inputString);\r\n if (parserArray === null) {\r\n this.error = \"Wrong input string for conversion\";\r\n return;\r\n }\r\n const year = parseInt(parserArray[1], 10);\r\n if (year >= 50)\r\n this.year = 1900 + year;\r\n else\r\n this.year = 2000 + year;\r\n this.month = parseInt(parserArray[2], 10);\r\n this.day = parseInt(parserArray[3], 10);\r\n this.hour = parseInt(parserArray[4], 10);\r\n this.minute = parseInt(parserArray[5], 10);\r\n this.second = parseInt(parserArray[6], 10);\r\n }\r\n toString(encoding = \"iso\") {\r\n if (encoding === \"iso\") {\r\n const outputArray = new Array(7);\r\n outputArray[0] = pvutils.padNumber(((this.year < 2000) ? (this.year - 1900) : (this.year - 2000)), 2);\r\n outputArray[1] = pvutils.padNumber(this.month, 2);\r\n outputArray[2] = pvutils.padNumber(this.day, 2);\r\n outputArray[3] = pvutils.padNumber(this.hour, 2);\r\n outputArray[4] = pvutils.padNumber(this.minute, 2);\r\n outputArray[5] = pvutils.padNumber(this.second, 2);\r\n outputArray[6] = \"Z\";\r\n return outputArray.join(\"\");\r\n }\r\n return super.toString(encoding);\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${this.toDate().toISOString()}`;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n year: this.year,\r\n month: this.month,\r\n day: this.day,\r\n hour: this.hour,\r\n minute: this.minute,\r\n second: this.second,\r\n };\r\n }\r\n}\r\n_a$6 = UTCTime;\r\n(() => {\r\n typeStore.UTCTime = _a$6;\r\n})();\r\nUTCTime.NAME = \"UTCTime\";\n\nvar _a$5;\r\nclass GeneralizedTime extends UTCTime {\r\n constructor(parameters = {}) {\r\n var _b;\r\n super(parameters);\r\n (_b = this.millisecond) !== null && _b !== void 0 ? _b : (this.millisecond = 0);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 24;\r\n }\r\n fromDate(inputDate) {\r\n super.fromDate(inputDate);\r\n this.millisecond = inputDate.getUTCMilliseconds();\r\n }\r\n toDate() {\r\n return (new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)));\r\n }\r\n fromString(inputString) {\r\n let isUTC = false;\r\n let timeString = \"\";\r\n let dateTimeString = \"\";\r\n let fractionPart = 0;\r\n let parser;\r\n let hourDifference = 0;\r\n let minuteDifference = 0;\r\n if (inputString[inputString.length - 1] === \"Z\") {\r\n timeString = inputString.substring(0, inputString.length - 1);\r\n isUTC = true;\r\n }\r\n else {\r\n const number = new Number(inputString[inputString.length - 1]);\r\n if (isNaN(number.valueOf()))\r\n throw new Error(\"Wrong input string for conversion\");\r\n timeString = inputString;\r\n }\r\n if (isUTC) {\r\n if (timeString.indexOf(\"+\") !== -1)\r\n throw new Error(\"Wrong input string for conversion\");\r\n if (timeString.indexOf(\"-\") !== -1)\r\n throw new Error(\"Wrong input string for conversion\");\r\n }\r\n else {\r\n let multiplier = 1;\r\n let differencePosition = timeString.indexOf(\"+\");\r\n let differenceString = \"\";\r\n if (differencePosition === -1) {\r\n differencePosition = timeString.indexOf(\"-\");\r\n multiplier = -1;\r\n }\r\n if (differencePosition !== -1) {\r\n differenceString = timeString.substring(differencePosition + 1);\r\n timeString = timeString.substring(0, differencePosition);\r\n if ((differenceString.length !== 2) && (differenceString.length !== 4))\r\n throw new Error(\"Wrong input string for conversion\");\r\n let number = parseInt(differenceString.substring(0, 2), 10);\r\n if (isNaN(number.valueOf()))\r\n throw new Error(\"Wrong input string for conversion\");\r\n hourDifference = multiplier * number;\r\n if (differenceString.length === 4) {\r\n number = parseInt(differenceString.substring(2, 4), 10);\r\n if (isNaN(number.valueOf()))\r\n throw new Error(\"Wrong input string for conversion\");\r\n minuteDifference = multiplier * number;\r\n }\r\n }\r\n }\r\n let fractionPointPosition = timeString.indexOf(\".\");\r\n if (fractionPointPosition === -1)\r\n fractionPointPosition = timeString.indexOf(\",\");\r\n if (fractionPointPosition !== -1) {\r\n const fractionPartCheck = new Number(`0${timeString.substring(fractionPointPosition)}`);\r\n if (isNaN(fractionPartCheck.valueOf()))\r\n throw new Error(\"Wrong input string for conversion\");\r\n fractionPart = fractionPartCheck.valueOf();\r\n dateTimeString = timeString.substring(0, fractionPointPosition);\r\n }\r\n else\r\n dateTimeString = timeString;\r\n switch (true) {\r\n case (dateTimeString.length === 8):\r\n parser = /(\\d{4})(\\d{2})(\\d{2})/ig;\r\n if (fractionPointPosition !== -1)\r\n throw new Error(\"Wrong input string for conversion\");\r\n break;\r\n case (dateTimeString.length === 10):\r\n parser = /(\\d{4})(\\d{2})(\\d{2})(\\d{2})/ig;\r\n if (fractionPointPosition !== -1) {\r\n let fractionResult = 60 * fractionPart;\r\n this.minute = Math.floor(fractionResult);\r\n fractionResult = 60 * (fractionResult - this.minute);\r\n this.second = Math.floor(fractionResult);\r\n fractionResult = 1000 * (fractionResult - this.second);\r\n this.millisecond = Math.floor(fractionResult);\r\n }\r\n break;\r\n case (dateTimeString.length === 12):\r\n parser = /(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})/ig;\r\n if (fractionPointPosition !== -1) {\r\n let fractionResult = 60 * fractionPart;\r\n this.second = Math.floor(fractionResult);\r\n fractionResult = 1000 * (fractionResult - this.second);\r\n this.millisecond = Math.floor(fractionResult);\r\n }\r\n break;\r\n case (dateTimeString.length === 14):\r\n parser = /(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})/ig;\r\n if (fractionPointPosition !== -1) {\r\n const fractionResult = 1000 * fractionPart;\r\n this.millisecond = Math.floor(fractionResult);\r\n }\r\n break;\r\n default:\r\n throw new Error(\"Wrong input string for conversion\");\r\n }\r\n const parserArray = parser.exec(dateTimeString);\r\n if (parserArray === null)\r\n throw new Error(\"Wrong input string for conversion\");\r\n for (let j = 1; j < parserArray.length; j++) {\r\n switch (j) {\r\n case 1:\r\n this.year = parseInt(parserArray[j], 10);\r\n break;\r\n case 2:\r\n this.month = parseInt(parserArray[j], 10);\r\n break;\r\n case 3:\r\n this.day = parseInt(parserArray[j], 10);\r\n break;\r\n case 4:\r\n this.hour = parseInt(parserArray[j], 10) + hourDifference;\r\n break;\r\n case 5:\r\n this.minute = parseInt(parserArray[j], 10) + minuteDifference;\r\n break;\r\n case 6:\r\n this.second = parseInt(parserArray[j], 10);\r\n break;\r\n default:\r\n throw new Error(\"Wrong input string for conversion\");\r\n }\r\n }\r\n if (isUTC === false) {\r\n const tempDate = new Date(this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\r\n this.year = tempDate.getUTCFullYear();\r\n this.month = tempDate.getUTCMonth();\r\n this.day = tempDate.getUTCDay();\r\n this.hour = tempDate.getUTCHours();\r\n this.minute = tempDate.getUTCMinutes();\r\n this.second = tempDate.getUTCSeconds();\r\n this.millisecond = tempDate.getUTCMilliseconds();\r\n }\r\n }\r\n toString(encoding = \"iso\") {\r\n if (encoding === \"iso\") {\r\n const outputArray = [];\r\n outputArray.push(pvutils.padNumber(this.year, 4));\r\n outputArray.push(pvutils.padNumber(this.month, 2));\r\n outputArray.push(pvutils.padNumber(this.day, 2));\r\n outputArray.push(pvutils.padNumber(this.hour, 2));\r\n outputArray.push(pvutils.padNumber(this.minute, 2));\r\n outputArray.push(pvutils.padNumber(this.second, 2));\r\n if (this.millisecond !== 0) {\r\n outputArray.push(\".\");\r\n outputArray.push(pvutils.padNumber(this.millisecond, 3));\r\n }\r\n outputArray.push(\"Z\");\r\n return outputArray.join(\"\");\r\n }\r\n return super.toString(encoding);\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n millisecond: this.millisecond,\r\n };\r\n }\r\n}\r\n_a$5 = GeneralizedTime;\r\n(() => {\r\n typeStore.GeneralizedTime = _a$5;\r\n})();\r\nGeneralizedTime.NAME = \"GeneralizedTime\";\n\nvar _a$4;\r\nclass DATE extends Utf8String {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 31;\r\n }\r\n}\r\n_a$4 = DATE;\r\n(() => {\r\n typeStore.DATE = _a$4;\r\n})();\r\nDATE.NAME = \"DATE\";\n\nvar _a$3;\r\nclass TimeOfDay extends Utf8String {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 32;\r\n }\r\n}\r\n_a$3 = TimeOfDay;\r\n(() => {\r\n typeStore.TimeOfDay = _a$3;\r\n})();\r\nTimeOfDay.NAME = \"TimeOfDay\";\n\nvar _a$2;\r\nclass DateTime extends Utf8String {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 33;\r\n }\r\n}\r\n_a$2 = DateTime;\r\n(() => {\r\n typeStore.DateTime = _a$2;\r\n})();\r\nDateTime.NAME = \"DateTime\";\n\nvar _a$1;\r\nclass Duration extends Utf8String {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 34;\r\n }\r\n}\r\n_a$1 = Duration;\r\n(() => {\r\n typeStore.Duration = _a$1;\r\n})();\r\nDuration.NAME = \"Duration\";\n\nvar _a;\r\nclass TIME extends Utf8String {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 14;\r\n }\r\n}\r\n_a = TIME;\r\n(() => {\r\n typeStore.TIME = _a;\r\n})();\r\nTIME.NAME = \"TIME\";\n\nclass Any {\r\n constructor({ name = EMPTY_STRING, optional = false, } = {}) {\r\n this.name = name;\r\n this.optional = optional;\r\n }\r\n}\n\nclass Choice extends Any {\r\n constructor({ value = [], ...parameters } = {}) {\r\n super(parameters);\r\n this.value = value;\r\n }\r\n}\n\nclass Repeated extends Any {\r\n constructor({ value = new Any(), local = false, ...parameters } = {}) {\r\n super(parameters);\r\n this.value = value;\r\n this.local = local;\r\n }\r\n}\n\nclass RawData {\r\n constructor({ data = EMPTY_VIEW } = {}) {\r\n this.dataView = pvtsutils.BufferSourceConverter.toUint8Array(data);\r\n }\r\n get data() {\r\n return this.dataView.slice().buffer;\r\n }\r\n set data(value) {\r\n this.dataView = pvtsutils.BufferSourceConverter.toUint8Array(value);\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const endLength = inputOffset + inputLength;\r\n this.dataView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer).subarray(inputOffset, endLength);\r\n return endLength;\r\n }\r\n toBER(sizeOnly) {\r\n return this.dataView.slice().buffer;\r\n }\r\n}\n\nfunction compareSchema(root, inputData, inputSchema) {\r\n if (inputSchema instanceof Choice) {\r\n for (let j = 0; j < inputSchema.value.length; j++) {\r\n const result = compareSchema(root, inputData, inputSchema.value[j]);\r\n if (result.verified) {\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n }\r\n }\r\n {\r\n const _result = {\r\n verified: false,\r\n result: {\r\n error: \"Wrong values for Choice type\"\r\n },\r\n };\r\n if (inputSchema.hasOwnProperty(NAME))\r\n _result.name = inputSchema.name;\r\n return _result;\r\n }\r\n }\r\n if (inputSchema instanceof Any) {\r\n if (inputSchema.hasOwnProperty(NAME))\r\n root[inputSchema.name] = inputData;\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n }\r\n if ((root instanceof Object) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong root object\" }\r\n };\r\n }\r\n if ((inputData instanceof Object) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 data\" }\r\n };\r\n }\r\n if ((inputSchema instanceof Object) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if ((ID_BLOCK in inputSchema) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if ((FROM_BER in inputSchema.idBlock) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if ((TO_BER in inputSchema.idBlock) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n const encodedId = inputSchema.idBlock.toBER(false);\r\n if (encodedId.byteLength === 0) {\r\n return {\r\n verified: false,\r\n result: { error: \"Error encoding idBlock for ASN.1 schema\" }\r\n };\r\n }\r\n const decodedOffset = inputSchema.idBlock.fromBER(encodedId, 0, encodedId.byteLength);\r\n if (decodedOffset === -1) {\r\n return {\r\n verified: false,\r\n result: { error: \"Error decoding idBlock for ASN.1 schema\" }\r\n };\r\n }\r\n if (inputSchema.idBlock.hasOwnProperty(TAG_CLASS) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if (inputSchema.idBlock.tagClass !== inputData.idBlock.tagClass) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n if (inputSchema.idBlock.hasOwnProperty(TAG_NUMBER) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if (inputSchema.idBlock.tagNumber !== inputData.idBlock.tagNumber) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n if (inputSchema.idBlock.hasOwnProperty(IS_CONSTRUCTED) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if (inputSchema.idBlock.isConstructed !== inputData.idBlock.isConstructed) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n if (!(IS_HEX_ONLY in inputSchema.idBlock)) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if (inputSchema.idBlock.isHexOnly !== inputData.idBlock.isHexOnly) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n if (inputSchema.idBlock.isHexOnly) {\r\n if ((VALUE_HEX_VIEW in inputSchema.idBlock) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n const schemaView = inputSchema.idBlock.valueHexView;\r\n const asn1View = inputData.idBlock.valueHexView;\r\n if (schemaView.length !== asn1View.length) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n for (let i = 0; i < schemaView.length; i++) {\r\n if (schemaView[i] !== asn1View[1]) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n }\r\n }\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name)\r\n root[inputSchema.name] = inputData;\r\n }\r\n if (inputSchema instanceof typeStore.Constructed) {\r\n let admission = 0;\r\n let result = {\r\n verified: false,\r\n result: {\r\n error: \"Unknown error\",\r\n }\r\n };\r\n let maxLength = inputSchema.valueBlock.value.length;\r\n if (maxLength > 0) {\r\n if (inputSchema.valueBlock.value[0] instanceof Repeated) {\r\n maxLength = inputData.valueBlock.value.length;\r\n }\r\n }\r\n if (maxLength === 0) {\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n }\r\n if ((inputData.valueBlock.value.length === 0) &&\r\n (inputSchema.valueBlock.value.length !== 0)) {\r\n let _optional = true;\r\n for (let i = 0; i < inputSchema.valueBlock.value.length; i++)\r\n _optional = _optional && (inputSchema.valueBlock.value[i].optional || false);\r\n if (_optional) {\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n }\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name)\r\n delete root[inputSchema.name];\r\n }\r\n root.error = \"Inconsistent object length\";\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n for (let i = 0; i < maxLength; i++) {\r\n if ((i - admission) >= inputData.valueBlock.value.length) {\r\n if (inputSchema.valueBlock.value[i].optional === false) {\r\n const _result = {\r\n verified: false,\r\n result: root\r\n };\r\n root.error = \"Inconsistent length between ASN.1 data and schema\";\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name) {\r\n delete root[inputSchema.name];\r\n _result.name = inputSchema.name;\r\n }\r\n }\r\n return _result;\r\n }\r\n }\r\n else {\r\n if (inputSchema.valueBlock.value[0] instanceof Repeated) {\r\n result = compareSchema(root, inputData.valueBlock.value[i], inputSchema.valueBlock.value[0].value);\r\n if (result.verified === false) {\r\n if (inputSchema.valueBlock.value[0].optional)\r\n admission++;\r\n else {\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name)\r\n delete root[inputSchema.name];\r\n }\r\n return result;\r\n }\r\n }\r\n if ((NAME in inputSchema.valueBlock.value[0]) && (inputSchema.valueBlock.value[0].name.length > 0)) {\r\n let arrayRoot = {};\r\n if ((LOCAL in inputSchema.valueBlock.value[0]) && (inputSchema.valueBlock.value[0].local))\r\n arrayRoot = inputData;\r\n else\r\n arrayRoot = root;\r\n if (typeof arrayRoot[inputSchema.valueBlock.value[0].name] === \"undefined\")\r\n arrayRoot[inputSchema.valueBlock.value[0].name] = [];\r\n arrayRoot[inputSchema.valueBlock.value[0].name].push(inputData.valueBlock.value[i]);\r\n }\r\n }\r\n else {\r\n result = compareSchema(root, inputData.valueBlock.value[i - admission], inputSchema.valueBlock.value[i]);\r\n if (result.verified === false) {\r\n if (inputSchema.valueBlock.value[i].optional)\r\n admission++;\r\n else {\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name)\r\n delete root[inputSchema.name];\r\n }\r\n return result;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (result.verified === false) {\r\n const _result = {\r\n verified: false,\r\n result: root\r\n };\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name) {\r\n delete root[inputSchema.name];\r\n _result.name = inputSchema.name;\r\n }\r\n }\r\n return _result;\r\n }\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n }\r\n if (inputSchema.primitiveSchema &&\r\n (VALUE_HEX_VIEW in inputData.valueBlock)) {\r\n const asn1 = localFromBER(inputData.valueBlock.valueHexView);\r\n if (asn1.offset === -1) {\r\n const _result = {\r\n verified: false,\r\n result: asn1.result\r\n };\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name) {\r\n delete root[inputSchema.name];\r\n _result.name = inputSchema.name;\r\n }\r\n }\r\n return _result;\r\n }\r\n return compareSchema(root, asn1.result, inputSchema.primitiveSchema);\r\n }\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n}\r\nfunction verifySchema(inputBuffer, inputSchema) {\r\n if ((inputSchema instanceof Object) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema type\" }\r\n };\r\n }\r\n const asn1 = localFromBER(pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer));\r\n if (asn1.offset === -1) {\r\n return {\r\n verified: false,\r\n result: asn1.result\r\n };\r\n }\r\n return compareSchema(asn1.result, asn1.result, inputSchema);\r\n}\n\nexport { Any, BaseBlock, BaseStringBlock, BitString, BmpString, Boolean, CharacterString, Choice, Constructed, DATE, DateTime, Duration, EndOfContent, Enumerated, GeneralString, GeneralizedTime, GraphicString, HexBlock, IA5String, Integer, Null, NumericString, ObjectIdentifier, OctetString, Primitive, PrintableString, RawData, RelativeObjectIdentifier, Repeated, Sequence, Set, TIME, TeletexString, TimeOfDay, UTCTime, UniversalString, Utf8String, ValueBlock, VideotexString, ViewWriter, VisibleString, compareSchema, fromBER, verifySchema };\n","import { CodeError } from '@libp2p/interface';\nimport { pbkdf2Async } from '@noble/hashes/pbkdf2';\nimport { sha512 } from '@noble/hashes/sha512';\nimport * as asn1js from 'asn1js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport randomBytes from '../random-bytes.js';\nimport webcrypto from '../webcrypto.js';\nimport { unmarshalRsaPrivateKey } from './rsa-class.js';\n/**\n * Convert a PKCS#1 in ASN1 DER format to a JWK key\n */\nexport function pkcs1ToJwk(bytes) {\n const { result } = asn1js.fromBER(bytes);\n // @ts-expect-error this looks fragile but DER is a canonical format so we are\n // safe to have deeply property chains like this\n const values = result.valueBlock.value;\n const key = {\n n: uint8ArrayToString(bnToBuf(values[1].toBigInt()), 'base64url'),\n e: uint8ArrayToString(bnToBuf(values[2].toBigInt()), 'base64url'),\n d: uint8ArrayToString(bnToBuf(values[3].toBigInt()), 'base64url'),\n p: uint8ArrayToString(bnToBuf(values[4].toBigInt()), 'base64url'),\n q: uint8ArrayToString(bnToBuf(values[5].toBigInt()), 'base64url'),\n dp: uint8ArrayToString(bnToBuf(values[6].toBigInt()), 'base64url'),\n dq: uint8ArrayToString(bnToBuf(values[7].toBigInt()), 'base64url'),\n qi: uint8ArrayToString(bnToBuf(values[8].toBigInt()), 'base64url'),\n kty: 'RSA',\n alg: 'RS256'\n };\n return key;\n}\n/**\n * Convert a JWK key into PKCS#1 in ASN1 DER format\n */\nexport function jwkToPkcs1(jwk) {\n if (jwk.n == null || jwk.e == null || jwk.d == null || jwk.p == null || jwk.q == null || jwk.dp == null || jwk.dq == null || jwk.qi == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const root = new asn1js.Sequence({\n value: [\n new asn1js.Integer({ value: 0 }),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.n, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.e, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.d, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.p, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.q, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.dp, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.dq, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.qi, 'base64url')))\n ]\n });\n const der = root.toBER();\n return new Uint8Array(der, 0, der.byteLength);\n}\n/**\n * Convert a PKCIX in ASN1 DER format to a JWK key\n */\nexport function pkixToJwk(bytes) {\n const { result } = asn1js.fromBER(bytes);\n // @ts-expect-error this looks fragile but DER is a canonical format so we are\n // safe to have deeply property chains like this\n const values = result.valueBlock.value[1].valueBlock.value[0].valueBlock.value;\n return {\n kty: 'RSA',\n n: uint8ArrayToString(bnToBuf(values[0].toBigInt()), 'base64url'),\n e: uint8ArrayToString(bnToBuf(values[1].toBigInt()), 'base64url')\n };\n}\n/**\n * Convert a JWK key to PKCIX in ASN1 DER format\n */\nexport function jwkToPkix(jwk) {\n if (jwk.n == null || jwk.e == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const root = new asn1js.Sequence({\n value: [\n new asn1js.Sequence({\n value: [\n // rsaEncryption\n new asn1js.ObjectIdentifier({\n value: '1.2.840.113549.1.1.1'\n }),\n new asn1js.Null()\n ]\n }),\n // this appears to be a bug in asn1js.js - this should really be a Sequence\n // and not a BitString but it generates the same bytes as node-forge so 🤷‍♂️\n new asn1js.BitString({\n valueHex: new asn1js.Sequence({\n value: [\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.n, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.e, 'base64url')))\n ]\n }).toBER()\n })\n ]\n });\n const der = root.toBER();\n return new Uint8Array(der, 0, der.byteLength);\n}\nfunction bnToBuf(bn) {\n let hex = bn.toString(16);\n if (hex.length % 2 > 0) {\n hex = `0${hex}`;\n }\n const len = hex.length / 2;\n const u8 = new Uint8Array(len);\n let i = 0;\n let j = 0;\n while (i < len) {\n u8[i] = parseInt(hex.slice(j, j + 2), 16);\n i += 1;\n j += 2;\n }\n return u8;\n}\nfunction bufToBn(u8) {\n const hex = [];\n u8.forEach(function (i) {\n let h = i.toString(16);\n if (h.length % 2 > 0) {\n h = `0${h}`;\n }\n hex.push(h);\n });\n return BigInt('0x' + hex.join(''));\n}\nconst SALT_LENGTH = 16;\nconst KEY_SIZE = 32;\nconst ITERATIONS = 10000;\nexport async function exportToPem(privateKey, password) {\n const crypto = webcrypto.get();\n // PrivateKeyInfo\n const keyWrapper = new asn1js.Sequence({\n value: [\n // version (0)\n new asn1js.Integer({ value: 0 }),\n // privateKeyAlgorithm\n new asn1js.Sequence({\n value: [\n // rsaEncryption OID\n new asn1js.ObjectIdentifier({\n value: '1.2.840.113549.1.1.1'\n }),\n new asn1js.Null()\n ]\n }),\n // PrivateKey\n new asn1js.OctetString({\n valueHex: privateKey.marshal()\n })\n ]\n });\n const keyBuf = keyWrapper.toBER();\n const keyArr = new Uint8Array(keyBuf, 0, keyBuf.byteLength);\n const salt = randomBytes(SALT_LENGTH);\n const encryptionKey = await pbkdf2Async(sha512, password, salt, {\n c: ITERATIONS,\n dkLen: KEY_SIZE\n });\n const iv = randomBytes(16);\n const cryptoKey = await crypto.subtle.importKey('raw', encryptionKey, 'AES-CBC', false, ['encrypt']);\n const encrypted = await crypto.subtle.encrypt({\n name: 'AES-CBC',\n iv\n }, cryptoKey, keyArr);\n const pbkdf2Params = new asn1js.Sequence({\n value: [\n // salt\n new asn1js.OctetString({ valueHex: salt }),\n // iteration count\n new asn1js.Integer({ value: ITERATIONS }),\n // key length\n new asn1js.Integer({ value: KEY_SIZE }),\n // AlgorithmIdentifier\n new asn1js.Sequence({\n value: [\n // hmacWithSHA512\n new asn1js.ObjectIdentifier({ value: '1.2.840.113549.2.11' }),\n new asn1js.Null()\n ]\n })\n ]\n });\n const encryptionAlgorithm = new asn1js.Sequence({\n value: [\n // pkcs5PBES2\n new asn1js.ObjectIdentifier({\n value: '1.2.840.113549.1.5.13'\n }),\n new asn1js.Sequence({\n value: [\n // keyDerivationFunc\n new asn1js.Sequence({\n value: [\n // pkcs5PBKDF2\n new asn1js.ObjectIdentifier({\n value: '1.2.840.113549.1.5.12'\n }),\n // PBKDF2-params\n pbkdf2Params\n ]\n }),\n // encryptionScheme\n new asn1js.Sequence({\n value: [\n // aes256-CBC\n new asn1js.ObjectIdentifier({\n value: '2.16.840.1.101.3.4.1.42'\n }),\n // iv\n new asn1js.OctetString({\n valueHex: iv\n })\n ]\n })\n ]\n })\n ]\n });\n const finalWrapper = new asn1js.Sequence({\n value: [\n encryptionAlgorithm,\n new asn1js.OctetString({ valueHex: encrypted })\n ]\n });\n const finalWrapperBuf = finalWrapper.toBER();\n const finalWrapperArr = new Uint8Array(finalWrapperBuf, 0, finalWrapperBuf.byteLength);\n return [\n '-----BEGIN ENCRYPTED PRIVATE KEY-----',\n ...uint8ArrayToString(finalWrapperArr, 'base64pad').split(/(.{64})/).filter(Boolean),\n '-----END ENCRYPTED PRIVATE KEY-----'\n ].join('\\n');\n}\nexport async function importFromPem(pem, password) {\n const crypto = webcrypto.get();\n let plaintext;\n if (pem.includes('-----BEGIN ENCRYPTED PRIVATE KEY-----')) {\n const key = uint8ArrayFromString(pem\n .replace('-----BEGIN ENCRYPTED PRIVATE KEY-----', '')\n .replace('-----END ENCRYPTED PRIVATE KEY-----', '')\n .replace(/\\n/g, '')\n .trim(), 'base64pad');\n const { result } = asn1js.fromBER(key);\n const { iv, salt, iterations, keySize, cipherText } = findEncryptedPEMData(result);\n const encryptionKey = await pbkdf2Async(sha512, password, salt, {\n c: iterations,\n dkLen: keySize\n });\n const cryptoKey = await crypto.subtle.importKey('raw', encryptionKey, 'AES-CBC', false, ['decrypt']);\n const decrypted = toUint8Array(await crypto.subtle.decrypt({\n name: 'AES-CBC',\n iv\n }, cryptoKey, cipherText));\n const { result: decryptedResult } = asn1js.fromBER(decrypted);\n plaintext = findPEMData(decryptedResult);\n }\n else if (pem.includes('-----BEGIN PRIVATE KEY-----')) {\n const key = uint8ArrayFromString(pem\n .replace('-----BEGIN PRIVATE KEY-----', '')\n .replace('-----END PRIVATE KEY-----', '')\n .replace(/\\n/g, '')\n .trim(), 'base64pad');\n const { result } = asn1js.fromBER(key);\n plaintext = findPEMData(result);\n }\n else {\n throw new CodeError('Could not parse private key from PEM data', 'ERR_INVALID_PARAMETERS');\n }\n return unmarshalRsaPrivateKey(plaintext);\n}\nfunction findEncryptedPEMData(root) {\n const encryptionAlgorithm = root.valueBlock.value[0];\n const scheme = encryptionAlgorithm.valueBlock.value[0].toString();\n if (scheme !== 'OBJECT IDENTIFIER : 1.2.840.113549.1.5.13') {\n throw new CodeError('Only pkcs5PBES2 encrypted private keys are supported', 'ERR_INVALID_PARAMS');\n }\n const keyDerivationFunc = encryptionAlgorithm.valueBlock.value[1].valueBlock.value[0];\n const keyDerivationFuncName = keyDerivationFunc.valueBlock.value[0].toString();\n if (keyDerivationFuncName !== 'OBJECT IDENTIFIER : 1.2.840.113549.1.5.12') {\n throw new CodeError('Only pkcs5PBKDF2 key derivation functions are supported', 'ERR_INVALID_PARAMS');\n }\n const pbkdf2Params = keyDerivationFunc.valueBlock.value[1];\n const salt = toUint8Array(pbkdf2Params.valueBlock.value[0].getValue());\n let iterations = ITERATIONS;\n let keySize = KEY_SIZE;\n if (pbkdf2Params.valueBlock.value.length === 3) {\n iterations = Number(pbkdf2Params.valueBlock.value[1].toBigInt());\n keySize = Number((pbkdf2Params.valueBlock.value[2]).toBigInt());\n }\n else if (pbkdf2Params.valueBlock.value.length === 2) {\n throw new CodeError('Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key', 'ERR_INVALID_PARAMS');\n }\n const encryptionScheme = encryptionAlgorithm.valueBlock.value[1].valueBlock.value[1];\n const encryptionSchemeName = encryptionScheme.valueBlock.value[0].toString();\n if (encryptionSchemeName === 'OBJECT IDENTIFIER : 1.2.840.113549.3.7') {\n // des-EDE3-CBC\n }\n else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 1.3.14.3.2.7') {\n // des-CBC\n }\n else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2') {\n // aes128-CBC\n }\n else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22') {\n // aes192-CBC\n }\n else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42') {\n // aes256-CBC\n }\n else {\n throw new CodeError('Only AES-CBC encryption schemes are supported', 'ERR_INVALID_PARAMS');\n }\n const iv = toUint8Array(encryptionScheme.valueBlock.value[1].getValue());\n return {\n cipherText: toUint8Array(root.valueBlock.value[1].getValue()),\n salt,\n iterations,\n keySize,\n iv\n };\n}\nfunction findPEMData(seq) {\n return toUint8Array(seq.valueBlock.value[2].getValue());\n}\nfunction toUint8Array(buf) {\n return new Uint8Array(buf, 0, buf.byteLength);\n}\n//# sourceMappingURL=rsa-utils.js.map","import { CodeError } from '@libp2p/interface';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport randomBytes from '../random-bytes.js';\nimport webcrypto from '../webcrypto.js';\nimport * as utils from './rsa-utils.js';\nexport { utils };\nexport async function generateKey(bits) {\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: 'SHA-256' }\n }, true, ['sign', 'verify']);\n const keys = await exportKey(pair);\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\n// Takes a jwk key\nexport async function unmarshalPrivateKey(key) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['sign']);\n const pair = [\n privateKey,\n await derivePublicFromPrivate(key)\n ];\n const keys = await exportKey({\n privateKey: pair[0],\n publicKey: pair[1]\n });\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\nexport { randomBytes as getRandomValues };\nexport async function hashAndSign(key, msg) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['sign']);\n const sig = await webcrypto.get().subtle.sign({ name: 'RSASSA-PKCS1-v1_5' }, privateKey, msg instanceof Uint8Array ? msg : msg.subarray());\n return new Uint8Array(sig, 0, sig.byteLength);\n}\nexport async function hashAndVerify(key, sig, msg) {\n const publicKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['verify']);\n return webcrypto.get().subtle.verify({ name: 'RSASSA-PKCS1-v1_5' }, publicKey, sig, msg instanceof Uint8Array ? msg : msg.subarray());\n}\nasync function exportKey(pair) {\n if (pair.privateKey == null || pair.publicKey == null) {\n throw new CodeError('Private and public key are required', 'ERR_INVALID_PARAMETERS');\n }\n return Promise.all([\n webcrypto.get().subtle.exportKey('jwk', pair.privateKey),\n webcrypto.get().subtle.exportKey('jwk', pair.publicKey)\n ]);\n}\nasync function derivePublicFromPrivate(jwKey) {\n return webcrypto.get().subtle.importKey('jwk', {\n kty: jwKey.kty,\n n: jwKey.n,\n e: jwKey.e\n }, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['verify']);\n}\nexport function keySize(jwk) {\n if (jwk.kty !== 'RSA') {\n throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE');\n }\n else if (jwk.n == null) {\n throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS');\n }\n const bytes = uint8ArrayFromString(jwk.n, 'base64url');\n return bytes.length * 8;\n}\n//# sourceMappingURL=rsa-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nimport * as crypto from './rsa.js';\nexport const MAX_RSA_KEY_SIZE = 8192;\nexport class RsaPublicKey {\n _key;\n constructor(key) {\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.utils.jwkToPkix(this._key);\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class RsaPrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey;\n }\n genSecret() {\n return crypto.getRandomValues(16);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n if (this._publicKey == null) {\n throw new CodeError('public key not provided', 'ERR_PUBKEY_NOT_PROVIDED');\n }\n return new RsaPublicKey(this._publicKey);\n }\n marshal() {\n return crypto.utils.jwkToPkcs1(this._key);\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key as libp2p-key - a aes-gcm encrypted value with the key\n * derived from the password.\n *\n * To export it as a password protected PEM file, please use the `exportPEM`\n * function from `@libp2p/rsa`.\n */\n async export(password, format = 'pkcs-8') {\n if (format === 'pkcs-8') {\n return crypto.utils.exportToPem(this, password);\n }\n else if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport async function unmarshalRsaPrivateKey(bytes) {\n const jwk = crypto.utils.pkcs1ToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_RSA_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport function unmarshalRsaPublicKey(bytes) {\n const jwk = crypto.utils.pkixToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_RSA_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n return new RsaPublicKey(jwk);\n}\nexport async function fromJwk(jwk) {\n if (crypto.keySize(jwk) > MAX_RSA_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport async function generateKeyPair(bits) {\n if (bits > MAX_RSA_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.generateKey(bits);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\n//# sourceMappingURL=rsa-class.js.map","import { CodeError } from '@libp2p/interface';\nimport { secp256k1 as secp } from '@noble/curves/secp256k1';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { isPromise } from '../util.js';\nconst PRIVATE_KEY_BYTE_LENGTH = 32;\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n return secp.utils.randomPrivateKey();\n}\n/**\n * Hash and sign message with private key\n */\nexport function hashAndSign(key, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.sign(digest, key).toDERRawBytes())\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.sign(p.digest, key).toDERRawBytes();\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\n/**\n * Hash message and verify signature with public key\n */\nexport function hashAndVerify(key, sig, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.verify(sig, digest, key))\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.verify(sig, p.digest, key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\nexport function compressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(true);\n return point;\n}\nexport function decompressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(false);\n return point;\n}\nexport function validatePrivateKey(key) {\n try {\n secp.getPublicKey(key, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\nexport function validatePublicKey(key) {\n try {\n secp.ProjectivePoint.fromHex(key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PUBLIC_KEY');\n }\n}\nexport function computePublicKey(privateKey) {\n try {\n return secp.getPublicKey(privateKey, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\n//# sourceMappingURL=secp256k1-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as keysProtobuf from './keys.js';\nimport * as crypto from './secp256k1.js';\nexport class Secp256k1PublicKey {\n _key;\n constructor(key) {\n crypto.validatePublicKey(key);\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.compressPublicKey(this._key);\n }\n get bytes() {\n return keysProtobuf.PublicKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n}\nexport class Secp256k1PrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey ?? crypto.computePublicKey(key);\n crypto.validatePrivateKey(this._key);\n crypto.validatePublicKey(this._publicKey);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Secp256k1PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return keysProtobuf.PrivateKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalSecp256k1PrivateKey(bytes) {\n return new Secp256k1PrivateKey(bytes);\n}\nexport function unmarshalSecp256k1PublicKey(bytes) {\n return new Secp256k1PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const privateKeyBytes = crypto.generateKey();\n return new Secp256k1PrivateKey(privateKeyBytes);\n}\n//# sourceMappingURL=secp256k1-class.js.map","/**\n * @packageDocumentation\n *\n * **Supported Key Types**\n *\n * The {@link generateKeyPair}, {@link marshalPublicKey}, and {@link marshalPrivateKey} functions accept a string `type` argument.\n *\n * Currently the `'RSA'`, `'ed25519'`, and `secp256k1` types are supported, although ed25519 and secp256k1 keys support only signing and verification of messages.\n *\n * For encryption / decryption support, RSA keys should be used.\n */\nimport { CodeError } from '@libp2p/interface';\nimport * as Ed25519 from './ed25519-class.js';\nimport generateEphemeralKeyPair from './ephemeral-keys.js';\nimport { importer } from './importer.js';\nimport { keyStretcher } from './key-stretcher.js';\nimport * as keysPBM from './keys.js';\nimport * as RSA from './rsa-class.js';\nimport { importFromPem } from './rsa-utils.js';\nimport * as Secp256k1 from './secp256k1-class.js';\nexport { keyStretcher };\nexport { generateEphemeralKeyPair };\nexport { keysPBM };\nexport { RsaPrivateKey, RsaPublicKey, MAX_RSA_KEY_SIZE } from './rsa-class.js';\nexport { Ed25519PrivateKey, Ed25519PublicKey } from './ed25519-class.js';\nexport { Secp256k1PrivateKey, Secp256k1PublicKey } from './secp256k1-class.js';\nexport const supportedKeys = {\n rsa: RSA,\n ed25519: Ed25519,\n secp256k1: Secp256k1\n};\nfunction unsupportedKey(type) {\n const supported = Object.keys(supportedKeys).join(' / ');\n return new CodeError(`invalid or unsupported key type ${type}. Must be ${supported}`, 'ERR_UNSUPPORTED_KEY_TYPE');\n}\nfunction typeToKey(type) {\n type = type.toLowerCase();\n if (type === 'rsa' || type === 'ed25519' || type === 'secp256k1') {\n return supportedKeys[type];\n }\n throw unsupportedKey(type);\n}\n/**\n * Generates a keypair of the given type and bitsize\n */\nexport async function generateKeyPair(type, bits) {\n return typeToKey(type).generateKeyPair(bits ?? 2048);\n}\n/**\n * Generates a keypair of the given type and bitsize.\n *\n * Seed is a 32 byte uint8array\n */\nexport async function generateKeyPairFromSeed(type, seed, bits) {\n if (type.toLowerCase() !== 'ed25519') {\n throw new CodeError('Seed key derivation is unimplemented for RSA or secp256k1', 'ERR_UNSUPPORTED_KEY_DERIVATION_TYPE');\n }\n return Ed25519.generateKeyPairFromSeed(seed);\n}\n/**\n * Converts a protobuf serialized public key into its representative object\n */\nexport function unmarshalPublicKey(buf) {\n const decoded = keysPBM.PublicKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPublicKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PublicKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PublicKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'unknown');\n }\n}\n/**\n * Converts a public key object into a protobuf serialized public key\n */\nexport function marshalPublicKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts a protobuf serialized private key into its representative object\n */\nexport async function unmarshalPrivateKey(buf) {\n const decoded = keysPBM.PrivateKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPrivateKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PrivateKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'RSA');\n }\n}\n/**\n * Converts a private key object into a protobuf serialized private key\n */\nexport function marshalPrivateKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts an exported private key into its representative object.\n *\n * Supported formats are 'pem' (RSA only) and 'libp2p-key'.\n */\nexport async function importKey(encryptedKey, password) {\n try {\n const key = await importer(encryptedKey, password);\n return await unmarshalPrivateKey(key);\n }\n catch (_) {\n // Ignore and try the old pem decrypt\n }\n if (!encryptedKey.includes('BEGIN')) {\n throw new CodeError('Encrypted key was not a libp2p-key or a PEM file', 'ERR_INVALID_IMPORT_FORMAT');\n }\n return importFromPem(encryptedKey, password);\n}\n//# sourceMappingURL=index.js.map","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotl, wrapConstructor } from './utils.js';\n// SHA1 (RFC 3174). It was cryptographically broken: prefer newer algorithms.\n// Initial state\nconst SHA1_IV = /* @__PURE__ */ new Uint32Array([\n 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA1_W = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA1 extends HashMD {\n constructor() {\n super(64, 20, 8, false);\n this.A = SHA1_IV[0] | 0;\n this.B = SHA1_IV[1] | 0;\n this.C = SHA1_IV[2] | 0;\n this.D = SHA1_IV[3] | 0;\n this.E = SHA1_IV[4] | 0;\n }\n get() {\n const { A, B, C, D, E } = this;\n return [A, B, C, D, E];\n }\n set(A, B, C, D, E) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n SHA1_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 80; i++)\n SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);\n // Compression function main loop, 80 rounds\n let { A, B, C, D, E } = this;\n for (let i = 0; i < 80; i++) {\n let F, K;\n if (i < 20) {\n F = Chi(B, C, D);\n K = 0x5a827999;\n }\n else if (i < 40) {\n F = B ^ C ^ D;\n K = 0x6ed9eba1;\n }\n else if (i < 60) {\n F = Maj(B, C, D);\n K = 0x8f1bbcdc;\n }\n else {\n F = B ^ C ^ D;\n K = 0xca62c1d6;\n }\n const T = (rotl(A, 5) + F + E + K + SHA1_W[i]) | 0;\n E = D;\n D = C;\n C = rotl(B, 30);\n B = A;\n A = T;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n this.set(A, B, C, D, E);\n }\n roundClean() {\n SHA1_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * SHA1 (RFC 3174) hash function.\n * It was cryptographically broken: prefer newer algorithms.\n * @param message - data that would be hashed\n */\nexport const sha1 = /* @__PURE__ */ wrapConstructor(() => new SHA1());\n//# sourceMappingURL=sha1.js.map","import { CodeError } from '@libp2p/interface';\nimport { pbkdf2 as pbkdf2Sync } from '@noble/hashes/pbkdf2';\nimport { sha1 } from '@noble/hashes/sha1';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { sha512 } from '@noble/hashes/sha512';\nimport { base64 } from 'multiformats/bases/base64';\n/**\n * Maps an IPFS hash name to its @noble/hashes equivalent.\n *\n * See https://github.com/multiformats/multihash/blob/master/hashtable.csv\n *\n * @private\n */\nconst hashName = {\n sha1,\n 'sha2-256': sha256,\n 'sha2-512': sha512\n};\n/**\n * Computes the Password-Based Key Derivation Function 2.\n */\nexport default function pbkdf2(password, salt, iterations, keySize, hash) {\n if (hash !== 'sha1' && hash !== 'sha2-256' && hash !== 'sha2-512') {\n const types = Object.keys(hashName).join(' / ');\n throw new CodeError(`Hash '${hash}' is unknown or not supported. Must be ${types}`, 'ERR_UNSUPPORTED_HASH_TYPE');\n }\n const hasher = hashName[hash];\n const dek = pbkdf2Sync(hasher, password, salt, {\n c: iterations,\n dkLen: keySize\n });\n return base64.encode(dek).substring(1);\n}\n//# sourceMappingURL=pbkdf2.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { marshalPublicKey, unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { StrictSign, StrictNoSign } from '@libp2p/interface';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { RPC } from '../message/rpc.js';\nimport { PublishConfigType, ValidateError } from '../types.js';\nexport const SignPrefix = uint8ArrayFromString('libp2p-pubsub:');\nexport async function buildRawMessage(publishConfig, topic, originalData, transformedData) {\n switch (publishConfig.type) {\n case PublishConfigType.Signing: {\n const rpcMsg = {\n from: publishConfig.author.toBytes(),\n data: transformedData,\n seqno: randomBytes(8),\n topic,\n signature: undefined, // Exclude signature field for signing\n key: undefined // Exclude key field for signing\n };\n // Get the message in bytes, and prepend with the pubsub prefix\n // the signature is over the bytes \"libp2p-pubsub:\"\n const bytes = uint8ArrayConcat([SignPrefix, RPC.Message.encode(rpcMsg).finish()]);\n rpcMsg.signature = await publishConfig.privateKey.sign(bytes);\n rpcMsg.key = publishConfig.key;\n const msg = {\n type: 'signed',\n from: publishConfig.author,\n data: originalData,\n sequenceNumber: BigInt(`0x${uint8ArrayToString(rpcMsg.seqno, 'base16')}`),\n topic,\n signature: rpcMsg.signature,\n key: rpcMsg.key\n };\n return {\n raw: rpcMsg,\n msg\n };\n }\n case PublishConfigType.Anonymous: {\n return {\n raw: {\n from: undefined,\n data: transformedData,\n seqno: undefined,\n topic,\n signature: undefined,\n key: undefined\n },\n msg: {\n type: 'unsigned',\n data: originalData,\n topic\n }\n };\n }\n default:\n throw new Error('Unreachable');\n }\n}\nexport async function validateToRawMessage(signaturePolicy, msg) {\n // If strict-sign, verify all\n // If anonymous (no-sign), ensure no preven\n switch (signaturePolicy) {\n case StrictNoSign:\n if (msg.signature != null)\n return { valid: false, error: ValidateError.SignaturePresent };\n if (msg.seqno != null)\n return { valid: false, error: ValidateError.SeqnoPresent };\n if (msg.key != null)\n return { valid: false, error: ValidateError.FromPresent };\n return { valid: true, message: { type: 'unsigned', topic: msg.topic, data: msg.data ?? new Uint8Array(0) } };\n case StrictSign: {\n // Verify seqno\n if (msg.seqno == null)\n return { valid: false, error: ValidateError.InvalidSeqno };\n if (msg.seqno.length !== 8) {\n return { valid: false, error: ValidateError.InvalidSeqno };\n }\n if (msg.signature == null)\n return { valid: false, error: ValidateError.InvalidSignature };\n if (msg.from == null)\n return { valid: false, error: ValidateError.InvalidPeerId };\n let fromPeerId;\n try {\n // TODO: Fix PeerId types\n fromPeerId = peerIdFromBytes(msg.from);\n }\n catch (e) {\n return { valid: false, error: ValidateError.InvalidPeerId };\n }\n // - check from defined\n // - transform source to PeerId\n // - parse signature\n // - get .key, else from source\n // - check key == source if present\n // - verify sig\n let publicKey;\n if (msg.key != null) {\n publicKey = unmarshalPublicKey(msg.key);\n // TODO: Should `fromPeerId.pubKey` be optional?\n if (fromPeerId.publicKey !== undefined && !uint8ArrayEquals(publicKey.bytes, fromPeerId.publicKey)) {\n return { valid: false, error: ValidateError.InvalidPeerId };\n }\n }\n else {\n if (fromPeerId.publicKey == null) {\n return { valid: false, error: ValidateError.InvalidPeerId };\n }\n publicKey = unmarshalPublicKey(fromPeerId.publicKey);\n }\n const rpcMsgPreSign = {\n from: msg.from,\n data: msg.data,\n seqno: msg.seqno,\n topic: msg.topic,\n signature: undefined, // Exclude signature field for signing\n key: undefined // Exclude key field for signing\n };\n // Get the message in bytes, and prepend with the pubsub prefix\n // the signature is over the bytes \"libp2p-pubsub:\"\n const bytes = uint8ArrayConcat([SignPrefix, RPC.Message.encode(rpcMsgPreSign).finish()]);\n if (!(await publicKey.verify(bytes, msg.signature))) {\n return { valid: false, error: ValidateError.InvalidSignature };\n }\n return {\n valid: true,\n message: {\n type: 'signed',\n from: fromPeerId,\n data: msg.data ?? new Uint8Array(0),\n sequenceNumber: BigInt(`0x${uint8ArrayToString(msg.seqno, 'base16')}`),\n topic: msg.topic,\n signature: msg.signature,\n key: msg.key ?? marshalPublicKey(publicKey)\n }\n };\n }\n default:\n throw new Error('Unreachable');\n }\n}\n//# sourceMappingURL=buildRawMessage.js.map","/**\n * Pseudo-randomly shuffles an array\n *\n * Mutates the input array\n */\nexport function shuffle(arr) {\n if (arr.length <= 1) {\n return arr;\n }\n const randInt = () => {\n return Math.floor(Math.random() * Math.floor(arr.length));\n };\n for (let i = 0; i < arr.length; i++) {\n const j = randInt();\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n }\n return arr;\n}\n//# sourceMappingURL=shuffle.js.map","import { toString } from 'uint8arrays/to-string';\n/**\n * Browser friendly function to convert Uint8Array message id to base64 string.\n */\nexport function messageIdToString(msgId) {\n return toString(msgId, 'base64');\n}\n//# sourceMappingURL=messageIdToString.js.map","import { unmarshalPrivateKey } from '@libp2p/crypto/keys';\nimport { StrictSign, StrictNoSign } from '@libp2p/interface';\nimport { PublishConfigType } from '../types.js';\n/**\n * Prepare a PublishConfig object from a PeerId.\n */\nexport async function getPublishConfigFromPeerId(signaturePolicy, peerId) {\n switch (signaturePolicy) {\n case StrictSign: {\n if (peerId == null) {\n throw Error('Must provide PeerId');\n }\n if (peerId.privateKey == null) {\n throw Error('Cannot sign message, no private key present');\n }\n if (peerId.publicKey == null) {\n throw Error('Cannot sign message, no public key present');\n }\n // Transform privateKey once at initialization time instead of once per message\n const privateKey = await unmarshalPrivateKey(peerId.privateKey);\n return {\n type: PublishConfigType.Signing,\n author: peerId,\n key: peerId.publicKey,\n privateKey\n };\n }\n case StrictNoSign:\n return {\n type: PublishConfigType.Anonymous\n };\n default:\n throw new Error(`Unknown signature policy \"${signaturePolicy}\"`);\n }\n}\n//# sourceMappingURL=publishConfig.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { CodeError } from '@libp2p/interface';\nimport { peerIdFromBytes, peerIdFromKeys } from '@libp2p/peer-id';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { codes } from './errors.js';\n/**\n * Generate a random sequence number\n */\nexport function randomSeqno() {\n return BigInt(`0x${uint8ArrayToString(randomBytes(8), 'base16')}`);\n}\n/**\n * Generate a message id, based on the `key` and `seqno`\n */\nexport const msgId = (key, seqno) => {\n const seqnoBytes = uint8ArrayFromString(seqno.toString(16).padStart(16, '0'), 'base16');\n const msgId = new Uint8Array(key.length + seqnoBytes.length);\n msgId.set(key, 0);\n msgId.set(seqnoBytes, key.length);\n return msgId;\n};\n/**\n * Generate a message id, based on message `data`\n */\nexport const noSignMsgId = (data) => {\n return sha256.encode(data);\n};\n/**\n * Check if any member of the first set is also a member\n * of the second set\n */\nexport const anyMatch = (a, b) => {\n let bHas;\n if (Array.isArray(b)) {\n bHas = (val) => b.includes(val);\n }\n else {\n bHas = (val) => b.has(val);\n }\n for (const val of a) {\n if (bHas(val)) {\n return true;\n }\n }\n return false;\n};\n/**\n * Make everything an array\n */\nexport const ensureArray = function (maybeArray) {\n if (!Array.isArray(maybeArray)) {\n return [maybeArray];\n }\n return maybeArray;\n};\nconst isSigned = async (message) => {\n if ((message.sequenceNumber == null) || (message.from == null) || (message.signature == null)) {\n return false;\n }\n // if a public key is present in the `from` field, the message should be signed\n const fromID = peerIdFromBytes(message.from);\n if (fromID.publicKey != null) {\n return true;\n }\n if (message.key != null) {\n const signingID = await peerIdFromKeys(message.key);\n return signingID.equals(fromID);\n }\n return false;\n};\nexport const toMessage = async (message) => {\n if (message.from == null) {\n throw new CodeError('RPC message was missing from', codes.ERR_MISSING_FROM);\n }\n if (!await isSigned(message)) {\n return {\n type: 'unsigned',\n topic: message.topic ?? '',\n data: message.data ?? new Uint8Array(0)\n };\n }\n const from = peerIdFromBytes(message.from);\n const msg = {\n type: 'signed',\n from: peerIdFromBytes(message.from),\n topic: message.topic ?? '',\n sequenceNumber: bigIntFromBytes(message.sequenceNumber ?? new Uint8Array(0)),\n data: message.data ?? new Uint8Array(0),\n signature: message.signature ?? new Uint8Array(0),\n key: message.key ?? from.publicKey ?? new Uint8Array(0)\n };\n if (msg.key.length === 0) {\n throw new CodeError('Signed RPC message was missing key', codes.ERR_MISSING_KEY);\n }\n return msg;\n};\nexport const toRpcMessage = (message) => {\n if (message.type === 'signed') {\n return {\n from: message.from.multihash.bytes,\n data: message.data,\n sequenceNumber: bigIntToBytes(message.sequenceNumber),\n topic: message.topic,\n signature: message.signature,\n key: message.key\n };\n }\n return {\n data: message.data,\n topic: message.topic\n };\n};\nexport const bigIntToBytes = (num) => {\n let str = num.toString(16);\n if (str.length % 2 !== 0) {\n str = `0${str}`;\n }\n return uint8ArrayFromString(str, 'base16');\n};\nexport const bigIntFromBytes = (num) => {\n return BigInt(`0x${uint8ArrayToString(num, 'base16')}`);\n};\n//# sourceMappingURL=utils.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","import { msgId } from '@libp2p/pubsub/utils';\nimport { sha256 } from 'multiformats/hashes/sha2';\n/**\n * Generate a message id, based on the `key` and `seqno`\n */\nexport function msgIdFnStrictSign(msg) {\n if (msg.type !== 'signed') {\n throw new Error('expected signed message type');\n }\n // Should never happen\n if (msg.sequenceNumber == null)\n throw Error('missing seqno field');\n // TODO: Should use .from here or key?\n return msgId(msg.from.toBytes(), msg.sequenceNumber);\n}\n/**\n * Generate a message id, based on message `data`\n */\nexport async function msgIdFnStrictNoSign(msg) {\n return sha256.encode(msg.data);\n}\n//# sourceMappingURL=msgIdFn.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\nexport class Parser {\n index = 0;\n input = \"\";\n new(input) {\n this.index = 0;\n this.input = input;\n return this;\n }\n /** Run a parser, and restore the pre-parse state if it fails. */\n readAtomically(fn) {\n const index = this.index;\n const result = fn();\n if (result === undefined) {\n this.index = index;\n }\n return result;\n }\n /** Run a parser, but fail if the entire input wasn't consumed. Doesn't run atomically. */\n parseWith(fn) {\n const result = fn();\n if (this.index !== this.input.length) {\n return undefined;\n }\n return result;\n }\n /** Peek the next character from the input */\n peekChar() {\n if (this.index >= this.input.length) {\n return undefined;\n }\n return this.input[this.index];\n }\n /** Read the next character from the input */\n readChar() {\n if (this.index >= this.input.length) {\n return undefined;\n }\n return this.input[this.index++];\n }\n /** Read the next character from the input if it matches the target. */\n readGivenChar(target) {\n return this.readAtomically(() => {\n const char = this.readChar();\n if (char !== target) {\n return undefined;\n }\n return char;\n });\n }\n /**\n * Helper for reading separators in an indexed loop. Reads the separator\n * character iff index > 0, then runs the parser. When used in a loop,\n * the separator character will only be read on index > 0 (see\n * readIPv4Addr for an example)\n */\n readSeparator(sep, index, inner) {\n return this.readAtomically(() => {\n if (index > 0) {\n if (this.readGivenChar(sep) === undefined) {\n return undefined;\n }\n }\n return inner();\n });\n }\n /**\n * Read a number off the front of the input in the given radix, stopping\n * at the first non-digit character or eof. Fails if the number has more\n * digits than max_digits or if there is no number.\n */\n readNumber(radix, maxDigits, allowZeroPrefix, maxBytes) {\n return this.readAtomically(() => {\n let result = 0;\n let digitCount = 0;\n const leadingChar = this.peekChar();\n if (leadingChar === undefined) {\n return undefined;\n }\n const hasLeadingZero = leadingChar === \"0\";\n const maxValue = 2 ** (8 * maxBytes) - 1;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const digit = this.readAtomically(() => {\n const char = this.readChar();\n if (char === undefined) {\n return undefined;\n }\n const num = Number.parseInt(char, radix);\n if (Number.isNaN(num)) {\n return undefined;\n }\n return num;\n });\n if (digit === undefined) {\n break;\n }\n result *= radix;\n result += digit;\n if (result > maxValue) {\n return undefined;\n }\n digitCount += 1;\n if (maxDigits !== undefined) {\n if (digitCount > maxDigits) {\n return undefined;\n }\n }\n }\n if (digitCount === 0) {\n return undefined;\n }\n else if (!allowZeroPrefix && hasLeadingZero && digitCount > 1) {\n return undefined;\n }\n else {\n return result;\n }\n });\n }\n /** Read an IPv4 address. */\n readIPv4Addr() {\n return this.readAtomically(() => {\n const out = new Uint8Array(4);\n for (let i = 0; i < out.length; i++) {\n const ix = this.readSeparator(\".\", i, () => this.readNumber(10, 3, false, 1));\n if (ix === undefined) {\n return undefined;\n }\n out[i] = ix;\n }\n return out;\n });\n }\n /** Read an IPv6 Address. */\n readIPv6Addr() {\n /**\n * Read a chunk of an IPv6 address into `groups`. Returns the number\n * of groups read, along with a bool indicating if an embedded\n * trailing IPv4 address was read. Specifically, read a series of\n * colon-separated IPv6 groups (0x0000 - 0xFFFF), with an optional\n * trailing embedded IPv4 address.\n */\n const readGroups = (groups) => {\n for (let i = 0; i < groups.length / 2; i++) {\n const ix = i * 2;\n // Try to read a trailing embedded IPv4 address. There must be at least 4 groups left.\n if (i < groups.length - 3) {\n const ipv4 = this.readSeparator(\":\", i, () => this.readIPv4Addr());\n if (ipv4 !== undefined) {\n groups[ix] = ipv4[0];\n groups[ix + 1] = ipv4[1];\n groups[ix + 2] = ipv4[2];\n groups[ix + 3] = ipv4[3];\n return [ix + 4, true];\n }\n }\n const group = this.readSeparator(\":\", i, () => this.readNumber(16, 4, true, 2));\n if (group === undefined) {\n return [ix, false];\n }\n groups[ix] = group >> 8;\n groups[ix + 1] = group & 255;\n }\n return [groups.length, false];\n };\n return this.readAtomically(() => {\n // Read the front part of the address; either the whole thing, or up to the first ::\n const head = new Uint8Array(16);\n const [headSize, headIp4] = readGroups(head);\n if (headSize === 16) {\n return head;\n }\n // IPv4 part is not allowed before `::`\n if (headIp4) {\n return undefined;\n }\n // Read `::` if previous code parsed less than 8 groups.\n // `::` indicates one or more groups of 16 bits of zeros.\n if (this.readGivenChar(\":\") === undefined) {\n return undefined;\n }\n if (this.readGivenChar(\":\") === undefined) {\n return undefined;\n }\n // Read the back part of the address. The :: must contain at least one\n // set of zeroes, so our max length is 7.\n const tail = new Uint8Array(14);\n const limit = 16 - (headSize + 2);\n const [tailSize] = readGroups(tail.subarray(0, limit));\n // Concat the head and tail of the IP address\n head.set(tail.subarray(0, tailSize), 16 - tailSize);\n return head;\n });\n }\n /** Read an IP Address, either IPv4 or IPv6. */\n readIPAddr() {\n return this.readIPv4Addr() ?? this.readIPv6Addr();\n }\n}\n//# sourceMappingURL=parser.js.map","import { Parser } from \"./parser.js\";\n// See https://stackoverflow.com/questions/166132/maximum-length-of-the-textual-representation-of-an-ipv6-address\nconst MAX_IPV6_LENGTH = 45;\nconst MAX_IPV4_LENGTH = 15;\nconst parser = new Parser();\n/** Parse `input` into IPv4 bytes. */\nexport function parseIPv4(input) {\n if (input.length > MAX_IPV4_LENGTH) {\n return undefined;\n }\n return parser.new(input).parseWith(() => parser.readIPv4Addr());\n}\n/** Parse `input` into IPv6 bytes. */\nexport function parseIPv6(input) {\n // strip zone index if it is present\n if (input.includes(\"%\")) {\n input = input.split(\"%\")[0];\n }\n if (input.length > MAX_IPV6_LENGTH) {\n return undefined;\n }\n return parser.new(input).parseWith(() => parser.readIPv6Addr());\n}\n/** Parse `input` into IPv4 or IPv6 bytes. */\nexport function parseIP(input) {\n // strip zone index if it is present\n if (input.includes(\"%\")) {\n input = input.split(\"%\")[0];\n }\n if (input.length > MAX_IPV6_LENGTH) {\n return undefined;\n }\n return parser.new(input).parseWith(() => parser.readIPAddr());\n}\n//# sourceMappingURL=parse.js.map","import { parseIP, parseIPv4, parseIPv6 } from \"./parse.js\";\n/** Check if `input` is IPv4. */\nexport function isIPv4(input) {\n return Boolean(parseIPv4(input));\n}\n/** Check if `input` is IPv6. */\nexport function isIPv6(input) {\n return Boolean(parseIPv6(input));\n}\n/** Check if `input` is IPv4 or IPv6. */\nexport function isIP(input) {\n return Boolean(parseIP(input));\n}\n/**\n * @returns `6` if `input` is IPv6, `4` if `input` is IPv4, or `undefined` if `input` is neither.\n */\nexport function ipVersion(input) {\n if (isIPv4(input)) {\n return 4;\n }\n else if (isIPv6(input)) {\n return 6;\n }\n else {\n return undefined;\n }\n}\n//# sourceMappingURL=is-ip.js.map","import { isIPv4, isIPv6 } from '@chainsafe/is-ip';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nexport { isIP } from '@chainsafe/is-ip';\nexport const isV4 = isIPv4;\nexport const isV6 = isIPv6;\n// Copied from https://github.com/indutny/node-ip/blob/master/lib/ip.js#L7\n// but with buf/offset args removed because we don't use them\nexport const toBytes = function (ip) {\n let offset = 0;\n ip = ip.toString().trim();\n if (isV4(ip)) {\n const bytes = new Uint8Array(offset + 4);\n ip.split(/\\./g).forEach((byte) => {\n bytes[offset++] = parseInt(byte, 10) & 0xff;\n });\n return bytes;\n }\n if (isV6(ip)) {\n const sections = ip.split(':', 8);\n let i;\n for (i = 0; i < sections.length; i++) {\n const isv4 = isV4(sections[i]);\n let v4Buffer;\n if (isv4) {\n v4Buffer = toBytes(sections[i]);\n sections[i] = uint8ArrayToString(v4Buffer.slice(0, 2), 'base16');\n }\n if (v4Buffer != null && ++i < 8) {\n sections.splice(i, 0, uint8ArrayToString(v4Buffer.slice(2, 4), 'base16'));\n }\n }\n if (sections[0] === '') {\n while (sections.length < 8)\n sections.unshift('0');\n }\n else if (sections[sections.length - 1] === '') {\n while (sections.length < 8)\n sections.push('0');\n }\n else if (sections.length < 8) {\n for (i = 0; i < sections.length && sections[i] !== ''; i++)\n ;\n const argv = [i, 1];\n for (i = 9 - sections.length; i > 0; i--) {\n argv.push('0');\n }\n sections.splice.apply(sections, argv);\n }\n const bytes = new Uint8Array(offset + 16);\n for (i = 0; i < sections.length; i++) {\n const word = parseInt(sections[i], 16);\n bytes[offset++] = (word >> 8) & 0xff;\n bytes[offset++] = word & 0xff;\n }\n return bytes;\n }\n throw new Error('invalid ip address');\n};\n// Copied from https://github.com/indutny/node-ip/blob/master/lib/ip.js#L63\nexport const toString = function (buf, offset = 0, length) {\n offset = ~~offset;\n length = length ?? (buf.length - offset);\n const view = new DataView(buf.buffer);\n if (length === 4) {\n const result = [];\n // IPv4\n for (let i = 0; i < length; i++) {\n result.push(buf[offset + i]);\n }\n return result.join('.');\n }\n if (length === 16) {\n const result = [];\n // IPv6\n for (let i = 0; i < length; i += 2) {\n result.push(view.getUint16(offset + i).toString(16));\n }\n return result.join(':')\n .replace(/(^|:)0(:0)*:0(:|$)/, '$1::$3')\n .replace(/:{3,4}/, '::');\n }\n return '';\n};\n//# sourceMappingURL=ip.js.map","const V = -1;\nexport const names = {};\nexport const codes = {};\nexport const table = [\n [4, 32, 'ip4'],\n [6, 16, 'tcp'],\n [33, 16, 'dccp'],\n [41, 128, 'ip6'],\n [42, V, 'ip6zone'],\n [43, 8, 'ipcidr'],\n [53, V, 'dns', true],\n [54, V, 'dns4', true],\n [55, V, 'dns6', true],\n [56, V, 'dnsaddr', true],\n [132, 16, 'sctp'],\n [273, 16, 'udp'],\n [275, 0, 'p2p-webrtc-star'],\n [276, 0, 'p2p-webrtc-direct'],\n [277, 0, 'p2p-stardust'],\n [280, 0, 'webrtc-direct'],\n [281, 0, 'webrtc'],\n [290, 0, 'p2p-circuit'],\n [301, 0, 'udt'],\n [302, 0, 'utp'],\n [400, V, 'unix', false, true],\n // `ipfs` is added before `p2p` for legacy support.\n // All text representations will default to `p2p`, but `ipfs` will\n // still be supported\n [421, V, 'ipfs'],\n // `p2p` is the preferred name for 421, and is now the default\n [421, V, 'p2p'],\n [443, 0, 'https'],\n [444, 96, 'onion'],\n [445, 296, 'onion3'],\n [446, V, 'garlic64'],\n [448, 0, 'tls'],\n [449, V, 'sni'],\n [460, 0, 'quic'],\n [461, 0, 'quic-v1'],\n [465, 0, 'webtransport'],\n [466, V, 'certhash'],\n [477, 0, 'ws'],\n [478, 0, 'wss'],\n [479, 0, 'p2p-websocket-star'],\n [480, 0, 'http'],\n [481, V, 'http-path'],\n [777, V, 'memory']\n];\n// populate tables\ntable.forEach(row => {\n const proto = createProtocol(...row);\n codes[proto.code] = proto;\n names[proto.name] = proto;\n});\nexport function createProtocol(code, size, name, resolvable, path) {\n return {\n code,\n size,\n name,\n resolvable: Boolean(resolvable),\n path: Boolean(path)\n };\n}\n/**\n * For the passed proto string or number, return a {@link Protocol}\n *\n * @example\n *\n * ```js\n * import { protocol } from '@multiformats/multiaddr'\n *\n * console.info(protocol(4))\n * // { code: 4, size: 32, name: 'ip4', resolvable: false, path: false }\n * ```\n */\nexport function getProtocol(proto) {\n if (typeof proto === 'number') {\n if (codes[proto] != null) {\n return codes[proto];\n }\n throw new Error(`no protocol with code: ${proto}`);\n }\n else if (typeof proto === 'string') {\n if (names[proto] != null) {\n return names[proto];\n }\n throw new Error(`no protocol with name: ${proto}`);\n }\n throw new Error(`invalid protocol id type: ${typeof proto}`);\n}\n//# sourceMappingURL=protocols-table.js.map","/**\n * @packageDocumentation\n *\n * Provides methods for converting\n */\nimport { IpNet } from '@chainsafe/netmask';\nimport { base32 } from 'multiformats/bases/base32';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { bases } from 'multiformats/basics';\nimport { CID } from 'multiformats/cid';\nimport * as Digest from 'multiformats/hashes/digest';\nimport * as varint from 'uint8-varint';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport * as ip from './ip.js';\nimport { getProtocol } from './protocols-table.js';\nconst ip4Protocol = getProtocol('ip4');\nconst ip6Protocol = getProtocol('ip6');\nconst ipcidrProtocol = getProtocol('ipcidr');\nexport function convert(proto, a) {\n if (a instanceof Uint8Array) {\n return convertToString(proto, a);\n }\n else {\n return convertToBytes(proto, a);\n }\n}\n/**\n * Convert [code,Uint8Array] to string\n */\nexport function convertToString(proto, buf) {\n const protocol = getProtocol(proto);\n switch (protocol.code) {\n case 4: // ipv4\n case 41: // ipv6\n return bytes2ip(buf);\n case 42: // ipv6zone\n return bytes2str(buf);\n case 6: // tcp\n case 273: // udp\n case 33: // dccp\n case 132: // sctp\n return bytes2port(buf).toString();\n case 53: // dns\n case 54: // dns4\n case 55: // dns6\n case 56: // dnsaddr\n case 400: // unix\n case 449: // sni\n case 777: // memory\n return bytes2str(buf);\n case 421: // ipfs\n return bytes2mh(buf);\n case 444: // onion\n return bytes2onion(buf);\n case 445: // onion3\n return bytes2onion(buf);\n case 466: // certhash\n return bytes2mb(buf);\n case 481: // http-path\n return globalThis.encodeURIComponent(bytes2str(buf));\n default:\n return uint8ArrayToString(buf, 'base16'); // no clue. convert to hex\n }\n}\nexport function convertToBytes(proto, str) {\n const protocol = getProtocol(proto);\n switch (protocol.code) {\n case 4: // ipv4\n return ip2bytes(str);\n case 41: // ipv6\n return ip2bytes(str);\n case 42: // ipv6zone\n return str2bytes(str);\n case 6: // tcp\n case 273: // udp\n case 33: // dccp\n case 132: // sctp\n return port2bytes(parseInt(str, 10));\n case 53: // dns\n case 54: // dns4\n case 55: // dns6\n case 56: // dnsaddr\n case 400: // unix\n case 449: // sni\n case 777: // memory\n return str2bytes(str);\n case 421: // ipfs\n return mh2bytes(str);\n case 444: // onion\n return onion2bytes(str);\n case 445: // onion3\n return onion32bytes(str);\n case 466: // certhash\n return mb2bytes(str);\n case 481: // http-path\n return str2bytes(globalThis.decodeURIComponent(str));\n default:\n return uint8ArrayFromString(str, 'base16'); // no clue. convert from hex\n }\n}\nexport function convertToIpNet(multiaddr) {\n let mask;\n let addr;\n multiaddr.stringTuples().forEach(([code, value]) => {\n if (code === ip4Protocol.code || code === ip6Protocol.code) {\n addr = value;\n }\n if (code === ipcidrProtocol.code) {\n mask = value;\n }\n });\n if (mask == null || addr == null) {\n throw new Error('Invalid multiaddr');\n }\n return new IpNet(addr, mask);\n}\nconst decoders = Object.values(bases).map((c) => c.decoder);\nconst anybaseDecoder = (function () {\n let acc = decoders[0].or(decoders[1]);\n decoders.slice(2).forEach((d) => (acc = acc.or(d)));\n return acc;\n})();\nfunction ip2bytes(ipString) {\n if (!ip.isIP(ipString)) {\n throw new Error('invalid ip address');\n }\n return ip.toBytes(ipString);\n}\nfunction bytes2ip(ipBuff) {\n const ipString = ip.toString(ipBuff, 0, ipBuff.length);\n if (ipString == null) {\n throw new Error('ipBuff is required');\n }\n if (!ip.isIP(ipString)) {\n throw new Error('invalid ip address');\n }\n return ipString;\n}\nfunction port2bytes(port) {\n const buf = new ArrayBuffer(2);\n const view = new DataView(buf);\n view.setUint16(0, port);\n return new Uint8Array(buf);\n}\nfunction bytes2port(buf) {\n const view = new DataView(buf.buffer);\n return view.getUint16(buf.byteOffset);\n}\nfunction str2bytes(str) {\n const buf = uint8ArrayFromString(str);\n const size = Uint8Array.from(varint.encode(buf.length));\n return uint8ArrayConcat([size, buf], size.length + buf.length);\n}\nfunction bytes2str(buf) {\n const size = varint.decode(buf);\n buf = buf.slice(varint.encodingLength(size));\n if (buf.length !== size) {\n throw new Error('inconsistent lengths');\n }\n return uint8ArrayToString(buf);\n}\nfunction mh2bytes(hash) {\n let mh;\n if (hash[0] === 'Q' || hash[0] === '1') {\n mh = Digest.decode(base58btc.decode(`z${hash}`)).bytes;\n }\n else {\n mh = CID.parse(hash).multihash.bytes;\n }\n // the address is a varint prefixed multihash string representation\n const size = Uint8Array.from(varint.encode(mh.length));\n return uint8ArrayConcat([size, mh], size.length + mh.length);\n}\nfunction mb2bytes(mbstr) {\n const mb = anybaseDecoder.decode(mbstr);\n const size = Uint8Array.from(varint.encode(mb.length));\n return uint8ArrayConcat([size, mb], size.length + mb.length);\n}\nfunction bytes2mb(buf) {\n const size = varint.decode(buf);\n const hash = buf.slice(varint.encodingLength(size));\n if (hash.length !== size) {\n throw new Error('inconsistent lengths');\n }\n return 'u' + uint8ArrayToString(hash, 'base64url');\n}\n/**\n * Converts bytes to bas58btc string\n */\nfunction bytes2mh(buf) {\n const size = varint.decode(buf);\n const address = buf.slice(varint.encodingLength(size));\n if (address.length !== size) {\n throw new Error('inconsistent lengths');\n }\n return uint8ArrayToString(address, 'base58btc');\n}\nfunction onion2bytes(str) {\n const addr = str.split(':');\n if (addr.length !== 2) {\n throw new Error(`failed to parse onion addr: [\"'${addr.join('\", \"')}'\"]' does not contain a port number`);\n }\n if (addr[0].length !== 16) {\n throw new Error(`failed to parse onion addr: ${addr[0]} not a Tor onion address.`);\n }\n // onion addresses do not include the multibase prefix, add it before decoding\n const buf = base32.decode('b' + addr[0]);\n // onion port number\n const port = parseInt(addr[1], 10);\n if (port < 1 || port > 65536) {\n throw new Error('Port number is not in range(1, 65536)');\n }\n const portBuf = port2bytes(port);\n return uint8ArrayConcat([buf, portBuf], buf.length + portBuf.length);\n}\nfunction onion32bytes(str) {\n const addr = str.split(':');\n if (addr.length !== 2) {\n throw new Error(`failed to parse onion addr: [\"'${addr.join('\", \"')}'\"]' does not contain a port number`);\n }\n if (addr[0].length !== 56) {\n throw new Error(`failed to parse onion addr: ${addr[0]} not a Tor onion3 address.`);\n }\n // onion addresses do not include the multibase prefix, add it before decoding\n const buf = base32.decode(`b${addr[0]}`);\n // onion port number\n const port = parseInt(addr[1], 10);\n if (port < 1 || port > 65536) {\n throw new Error('Port number is not in range(1, 65536)');\n }\n const portBuf = port2bytes(port);\n return uint8ArrayConcat([buf, portBuf], buf.length + portBuf.length);\n}\nfunction bytes2onion(buf) {\n const addrBytes = buf.slice(0, buf.length - 2);\n const portBytes = buf.slice(buf.length - 2);\n const addr = uint8ArrayToString(addrBytes, 'base32');\n const port = bytes2port(portBytes);\n return `${addr}:${port}`;\n}\n//# sourceMappingURL=convert.js.map","import { convertToString } from '@multiformats/multiaddr/convert';\n// Protocols https://github.com/multiformats/multiaddr/blob/master/protocols.csv\n// code size name\n// 4 32 ip4\n// 41 128 ip6\nvar Protocol;\n(function (Protocol) {\n Protocol[Protocol[\"ip4\"] = 4] = \"ip4\";\n Protocol[Protocol[\"ip6\"] = 41] = \"ip6\";\n})(Protocol || (Protocol = {}));\nexport function multiaddrToIPStr(multiaddr) {\n for (const tuple of multiaddr.tuples()) {\n switch (tuple[0]) {\n case Protocol.ip4:\n case Protocol.ip6:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return convertToString(tuple[0], tuple[1]);\n default:\n break;\n }\n }\n return null;\n}\n//# sourceMappingURL=multiaddr.js.map","/**\n * This is similar to https://github.com/daviddias/time-cache/blob/master/src/index.js\n * for our own need, we don't use lodash throttle to improve performance.\n * This gives 4x - 5x performance gain compared to npm TimeCache\n */\nexport class SimpleTimeCache {\n entries = new Map();\n validityMs;\n constructor(opts) {\n this.validityMs = opts.validityMs;\n // allow negative validityMs so that this does not cache anything, spec test compliance.spec.js\n // sends duplicate messages and expect peer to receive all. Application likely uses positive validityMs\n }\n get size() {\n return this.entries.size;\n }\n /** Returns true if there was a key collision and the entry is dropped */\n put(key, value) {\n if (this.entries.has(key)) {\n // Key collisions break insertion order in the entries cache, which break prune logic.\n // prune relies on each iterated entry to have strictly ascending validUntilMs, else it\n // won't prune expired entries and SimpleTimeCache will grow unexpectedly.\n // As of Oct 2022 NodeJS v16, inserting the same key twice with different value does not\n // change the key position in the iterator stream. A unit test asserts this behaviour.\n return true;\n }\n this.entries.set(key, { value, validUntilMs: Date.now() + this.validityMs });\n return false;\n }\n prune() {\n const now = Date.now();\n for (const [k, v] of this.entries.entries()) {\n if (v.validUntilMs < now) {\n this.entries.delete(k);\n }\n else {\n // Entries are inserted with strictly ascending validUntilMs.\n // Stop early to save iterations\n break;\n }\n }\n }\n has(key) {\n return this.entries.has(key);\n }\n get(key) {\n const value = this.entries.get(key);\n return (value != null) && value.validUntilMs >= Date.now() ? value.value : undefined;\n }\n clear() {\n this.entries.clear();\n }\n}\n//# sourceMappingURL=time-cache.js.map","import { CustomEvent, TypedEventEmitter, StrictSign, StrictNoSign, TopicValidatorResult } from '@libp2p/interface';\nimport { peerIdFromBytes, peerIdFromString } from '@libp2p/peer-id';\nimport { encode } from 'it-length-prefixed';\nimport { pipe } from 'it-pipe';\nimport { pushable } from 'it-pushable';\nimport * as constants from './constants.js';\nimport { ACCEPT_FROM_WHITELIST_DURATION_MS, ACCEPT_FROM_WHITELIST_MAX_MESSAGES, ACCEPT_FROM_WHITELIST_THRESHOLD_SCORE, BACKOFF_SLACK } from './constants.js';\nimport { decodeRpc, defaultDecodeRpcLimits } from './message/decodeRpc.js';\nimport { RPC } from './message/rpc.js';\nimport { MessageCache } from './message-cache.js';\nimport { ChurnReason, getMetrics, IHaveIgnoreReason, InclusionReason, ScorePenalty } from './metrics.js';\nimport { PeerScore, createPeerScoreParams, createPeerScoreThresholds } from './score/index.js';\nimport { computeAllPeersScoreWeights } from './score/scoreMetrics.js';\nimport { InboundStream, OutboundStream } from './stream.js';\nimport { IWantTracer } from './tracer.js';\nimport { ValidateError, MessageStatus, RejectReason, rejectReasonFromAcceptance } from './types.js';\nimport { buildRawMessage, validateToRawMessage } from './utils/buildRawMessage.js';\nimport { shuffle, messageIdToString } from './utils/index.js';\nimport { msgIdFnStrictNoSign, msgIdFnStrictSign } from './utils/msgIdFn.js';\nimport { multiaddrToIPStr } from './utils/multiaddr.js';\nimport { getPublishConfigFromPeerId } from './utils/publishConfig.js';\nimport { removeFirstNItemsFromSet, removeItemsFromSet } from './utils/set.js';\nimport { SimpleTimeCache } from './utils/time-cache.js';\nexport const multicodec = constants.GossipsubIDv11;\nvar GossipStatusCode;\n(function (GossipStatusCode) {\n GossipStatusCode[GossipStatusCode[\"started\"] = 0] = \"started\";\n GossipStatusCode[GossipStatusCode[\"stopped\"] = 1] = \"stopped\";\n})(GossipStatusCode || (GossipStatusCode = {}));\nexport class GossipSub extends TypedEventEmitter {\n /**\n * The signature policy to follow by default\n */\n globalSignaturePolicy;\n multicodecs = [constants.GossipsubIDv11, constants.GossipsubIDv10];\n publishConfig;\n dataTransform;\n // State\n peers = new Set();\n streamsInbound = new Map();\n streamsOutbound = new Map();\n /** Ensures outbound streams are created sequentially */\n outboundInflightQueue = pushable({ objectMode: true });\n /** Direct peers */\n direct = new Set();\n /** Floodsub peers */\n floodsubPeers = new Set();\n /** Cache of seen messages */\n seenCache;\n /**\n * Map of peer id and AcceptRequestWhileListEntry\n */\n acceptFromWhitelist = new Map();\n /**\n * Map of topics to which peers are subscribed to\n */\n topics = new Map();\n /**\n * List of our subscriptions\n */\n subscriptions = new Set();\n /**\n * Map of topic meshes\n * topic => peer id set\n */\n mesh = new Map();\n /**\n * Map of topics to set of peers. These mesh peers are the ones to which we are publishing without a topic membership\n * topic => peer id set\n */\n fanout = new Map();\n /**\n * Map of last publish time for fanout topics\n * topic => last publish time\n */\n fanoutLastpub = new Map();\n /**\n * Map of pending messages to gossip\n * peer id => control messages\n */\n gossip = new Map();\n /**\n * Map of control messages\n * peer id => control message\n */\n control = new Map();\n /**\n * Number of IHAVEs received from peer in the last heartbeat\n */\n peerhave = new Map();\n /** Number of messages we have asked from peer in the last heartbeat */\n iasked = new Map();\n /** Prune backoff map */\n backoff = new Map();\n /**\n * Connection direction cache, marks peers with outbound connections\n * peer id => direction\n */\n outbound = new Map();\n msgIdFn;\n /**\n * A fast message id function used for internal message de-duplication\n */\n fastMsgIdFn;\n msgIdToStrFn;\n /** Maps fast message-id to canonical message-id */\n fastMsgIdCache;\n /**\n * Short term cache for published message ids. This is used for penalizing peers sending\n * our own messages back if the messages are anonymous or use a random author.\n */\n publishedMessageIds;\n /**\n * A message cache that contains the messages for last few heartbeat ticks\n */\n mcache;\n /** Peer score tracking */\n score;\n /**\n * Custom validator function per topic.\n * Must return or resolve quickly (< 100ms) to prevent causing penalties for late messages.\n * If you need to apply validation that may require longer times use `asyncValidation` option and callback the\n * validation result through `Gossipsub.reportValidationResult`\n */\n topicValidators = new Map();\n /**\n * Make this protected so child class may want to redirect to its own log.\n */\n log;\n /**\n * Number of heartbeats since the beginning of time\n * This allows us to amortize some resource cleanup -- eg: backoff cleanup\n */\n heartbeatTicks = 0;\n /**\n * Tracks IHAVE/IWANT promises broken by peers\n */\n gossipTracer;\n components;\n directPeerInitial = null;\n static multicodec = constants.GossipsubIDv11;\n // Options\n opts;\n decodeRpcLimits;\n metrics;\n status = { code: GossipStatusCode.stopped };\n maxInboundStreams;\n maxOutboundStreams;\n runOnTransientConnection;\n allowedTopics;\n heartbeatTimer = null;\n constructor(components, options = {}) {\n super();\n const opts = {\n fallbackToFloodsub: true,\n floodPublish: true,\n batchPublish: false,\n doPX: false,\n directPeers: [],\n D: constants.GossipsubD,\n Dlo: constants.GossipsubDlo,\n Dhi: constants.GossipsubDhi,\n Dscore: constants.GossipsubDscore,\n Dout: constants.GossipsubDout,\n Dlazy: constants.GossipsubDlazy,\n heartbeatInterval: constants.GossipsubHeartbeatInterval,\n fanoutTTL: constants.GossipsubFanoutTTL,\n mcacheLength: constants.GossipsubHistoryLength,\n mcacheGossip: constants.GossipsubHistoryGossip,\n seenTTL: constants.GossipsubSeenTTL,\n gossipsubIWantFollowupMs: constants.GossipsubIWantFollowupTime,\n prunePeers: constants.GossipsubPrunePeers,\n pruneBackoff: constants.GossipsubPruneBackoff,\n unsubcribeBackoff: constants.GossipsubUnsubscribeBackoff,\n graftFloodThreshold: constants.GossipsubGraftFloodThreshold,\n opportunisticGraftPeers: constants.GossipsubOpportunisticGraftPeers,\n opportunisticGraftTicks: constants.GossipsubOpportunisticGraftTicks,\n directConnectTicks: constants.GossipsubDirectConnectTicks,\n ...options,\n scoreParams: createPeerScoreParams(options.scoreParams),\n scoreThresholds: createPeerScoreThresholds(options.scoreThresholds)\n };\n this.components = components;\n this.decodeRpcLimits = opts.decodeRpcLimits ?? defaultDecodeRpcLimits;\n this.globalSignaturePolicy = opts.globalSignaturePolicy ?? StrictSign;\n // Also wants to get notified of peers connected using floodsub\n if (opts.fallbackToFloodsub) {\n this.multicodecs.push(constants.FloodsubID);\n }\n // From pubsub\n this.log = components.logger.forComponent(opts.debugName ?? 'libp2p:gossipsub');\n // Gossipsub\n this.opts = opts;\n this.direct = new Set(opts.directPeers.map((p) => p.id.toString()));\n this.seenCache = new SimpleTimeCache({ validityMs: opts.seenTTL });\n this.publishedMessageIds = new SimpleTimeCache({ validityMs: opts.seenTTL });\n if (options.msgIdFn != null) {\n // Use custom function\n this.msgIdFn = options.msgIdFn;\n }\n else {\n switch (this.globalSignaturePolicy) {\n case StrictSign:\n this.msgIdFn = msgIdFnStrictSign;\n break;\n case StrictNoSign:\n this.msgIdFn = msgIdFnStrictNoSign;\n break;\n default:\n throw new Error(`Invalid globalSignaturePolicy: ${this.globalSignaturePolicy}`);\n }\n }\n if (options.fastMsgIdFn != null) {\n this.fastMsgIdFn = options.fastMsgIdFn;\n this.fastMsgIdCache = new SimpleTimeCache({ validityMs: opts.seenTTL });\n }\n // By default, gossipsub only provide a browser friendly function to convert Uint8Array message id to string.\n this.msgIdToStrFn = options.msgIdToStrFn ?? messageIdToString;\n this.mcache = options.messageCache ?? new MessageCache(opts.mcacheGossip, opts.mcacheLength, this.msgIdToStrFn);\n if (options.dataTransform != null) {\n this.dataTransform = options.dataTransform;\n }\n if (options.metricsRegister != null) {\n if (options.metricsTopicStrToLabel == null) {\n throw Error('Must set metricsTopicStrToLabel with metrics');\n }\n // in theory, each topic has its own meshMessageDeliveriesWindow param\n // however in lodestar, we configure it mostly the same so just pick the max of positive ones\n // (some topics have meshMessageDeliveriesWindow as 0)\n const maxMeshMessageDeliveriesWindowMs = Math.max(...Object.values(opts.scoreParams.topics).map((topicParam) => topicParam.meshMessageDeliveriesWindow), constants.DEFAULT_METRIC_MESH_MESSAGE_DELIVERIES_WINDOWS);\n const metrics = getMetrics(options.metricsRegister, options.metricsTopicStrToLabel, {\n gossipPromiseExpireSec: this.opts.gossipsubIWantFollowupMs / 1000,\n behaviourPenaltyThreshold: opts.scoreParams.behaviourPenaltyThreshold,\n maxMeshMessageDeliveriesWindowSec: maxMeshMessageDeliveriesWindowMs / 1000\n });\n metrics.mcacheSize.addCollect(() => { this.onScrapeMetrics(metrics); });\n for (const protocol of this.multicodecs) {\n metrics.protocolsEnabled.set({ protocol }, 1);\n }\n this.metrics = metrics;\n }\n else {\n this.metrics = null;\n }\n this.gossipTracer = new IWantTracer(this.opts.gossipsubIWantFollowupMs, this.msgIdToStrFn, this.metrics);\n /**\n * libp2p\n */\n this.score = new PeerScore(this.opts.scoreParams, this.metrics, this.components.logger, {\n scoreCacheValidityMs: opts.heartbeatInterval\n });\n this.maxInboundStreams = options.maxInboundStreams;\n this.maxOutboundStreams = options.maxOutboundStreams;\n this.runOnTransientConnection = options.runOnTransientConnection;\n this.allowedTopics = (opts.allowedTopics != null) ? new Set(opts.allowedTopics) : null;\n }\n getPeers() {\n return [...this.peers.keys()].map((str) => peerIdFromString(str));\n }\n isStarted() {\n return this.status.code === GossipStatusCode.started;\n }\n // LIFECYCLE METHODS\n /**\n * Mounts the gossipsub protocol onto the libp2p node and sends our\n * our subscriptions to every peer connected\n */\n async start() {\n // From pubsub\n if (this.isStarted()) {\n return;\n }\n this.log('starting');\n this.publishConfig = await getPublishConfigFromPeerId(this.globalSignaturePolicy, this.components.peerId);\n // Create the outbound inflight queue\n // This ensures that outbound stream creation happens sequentially\n this.outboundInflightQueue = pushable({ objectMode: true });\n pipe(this.outboundInflightQueue, async (source) => {\n for await (const { peerId, connection } of source) {\n await this.createOutboundStream(peerId, connection);\n }\n }).catch((e) => { this.log.error('outbound inflight queue error', e); });\n // set direct peer addresses in the address book\n await Promise.all(this.opts.directPeers.map(async (p) => {\n await this.components.peerStore.merge(p.id, {\n multiaddrs: p.addrs\n });\n }));\n const registrar = this.components.registrar;\n // Incoming streams\n // Called after a peer dials us\n await Promise.all(this.multicodecs.map(async (multicodec) => registrar.handle(multicodec, this.onIncomingStream.bind(this), {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams,\n runOnTransientConnection: this.runOnTransientConnection\n })));\n // # How does Gossipsub interact with libp2p? Rough guide from Mar 2022\n //\n // ## Setup:\n // Gossipsub requests libp2p to callback, TBD\n //\n // `this.libp2p.handle()` registers a handler for `/meshsub/1.1.0` and other Gossipsub protocols\n // The handler callback is registered in libp2p Upgrader.protocols map.\n //\n // Upgrader receives an inbound connection from some transport and (`Upgrader.upgradeInbound`):\n // - Adds encryption (NOISE in our case)\n // - Multiplex stream\n // - Create a muxer and register that for each new stream call Upgrader.protocols handler\n //\n // ## Topology\n // - new instance of Topology (unlinked to libp2p) with handlers\n // - registar.register(topology)\n // register protocol with topology\n // Topology callbacks called on connection manager changes\n const topology = {\n onConnect: this.onPeerConnected.bind(this),\n onDisconnect: this.onPeerDisconnected.bind(this),\n notifyOnTransient: this.runOnTransientConnection\n };\n const registrarTopologyIds = await Promise.all(this.multicodecs.map(async (multicodec) => registrar.register(multicodec, topology)));\n // Schedule to start heartbeat after `GossipsubHeartbeatInitialDelay`\n const heartbeatTimeout = setTimeout(this.runHeartbeat, constants.GossipsubHeartbeatInitialDelay);\n // Then, run heartbeat every `heartbeatInterval` offset by `GossipsubHeartbeatInitialDelay`\n this.status = {\n code: GossipStatusCode.started,\n registrarTopologyIds,\n heartbeatTimeout,\n hearbeatStartMs: Date.now() + constants.GossipsubHeartbeatInitialDelay\n };\n this.score.start();\n // connect to direct peers\n this.directPeerInitial = setTimeout(() => {\n Promise.resolve()\n .then(async () => {\n await Promise.all(Array.from(this.direct).map(async (id) => this.connect(id)));\n })\n .catch((err) => {\n this.log(err);\n });\n }, constants.GossipsubDirectConnectInitialDelay);\n this.log('started');\n }\n /**\n * Unmounts the gossipsub protocol and shuts down every connection\n */\n async stop() {\n this.log('stopping');\n // From pubsub\n if (this.status.code !== GossipStatusCode.started) {\n return;\n }\n const { registrarTopologyIds } = this.status;\n this.status = { code: GossipStatusCode.stopped };\n // unregister protocol and handlers\n const registrar = this.components.registrar;\n await Promise.all(this.multicodecs.map(async (multicodec) => registrar.unhandle(multicodec)));\n registrarTopologyIds.forEach((id) => { registrar.unregister(id); });\n this.outboundInflightQueue.end();\n const closePromises = [];\n for (const outboundStream of this.streamsOutbound.values()) {\n closePromises.push(outboundStream.close());\n }\n this.streamsOutbound.clear();\n for (const inboundStream of this.streamsInbound.values()) {\n closePromises.push(inboundStream.close());\n }\n this.streamsInbound.clear();\n await Promise.all(closePromises);\n this.peers.clear();\n this.subscriptions.clear();\n // Gossipsub\n if (this.heartbeatTimer != null) {\n this.heartbeatTimer.cancel();\n this.heartbeatTimer = null;\n }\n this.score.stop();\n this.mesh.clear();\n this.fanout.clear();\n this.fanoutLastpub.clear();\n this.gossip.clear();\n this.control.clear();\n this.peerhave.clear();\n this.iasked.clear();\n this.backoff.clear();\n this.outbound.clear();\n this.gossipTracer.clear();\n this.seenCache.clear();\n if (this.fastMsgIdCache != null)\n this.fastMsgIdCache.clear();\n if (this.directPeerInitial != null)\n clearTimeout(this.directPeerInitial);\n this.log('stopped');\n }\n /** FOR DEBUG ONLY - Dump peer stats for all peers. Data is cloned, safe to mutate */\n dumpPeerScoreStats() {\n return this.score.dumpPeerScoreStats();\n }\n /**\n * On an inbound stream opened\n */\n onIncomingStream({ stream, connection }) {\n if (!this.isStarted()) {\n return;\n }\n const peerId = connection.remotePeer;\n // add peer to router\n this.addPeer(peerId, connection.direction, connection.remoteAddr);\n // create inbound stream\n this.createInboundStream(peerId, stream);\n // attempt to create outbound stream\n this.outboundInflightQueue.push({ peerId, connection });\n }\n /**\n * Registrar notifies an established connection with pubsub protocol\n */\n onPeerConnected(peerId, connection) {\n this.metrics?.newConnectionCount.inc({ status: connection.status });\n // libp2p may emit a closed connection and never issue peer:disconnect event\n // see https://github.com/ChainSafe/js-libp2p-gossipsub/issues/398\n if (!this.isStarted() || connection.status !== 'open') {\n return;\n }\n this.addPeer(peerId, connection.direction, connection.remoteAddr);\n this.outboundInflightQueue.push({ peerId, connection });\n }\n /**\n * Registrar notifies a closing connection with pubsub protocol\n */\n onPeerDisconnected(peerId) {\n this.log('connection ended %p', peerId);\n this.removePeer(peerId);\n }\n async createOutboundStream(peerId, connection) {\n if (!this.isStarted()) {\n return;\n }\n const id = peerId.toString();\n if (!this.peers.has(id)) {\n return;\n }\n // TODO make this behavior more robust\n // This behavior is different than for inbound streams\n // If an outbound stream already exists, don't create a new stream\n if (this.streamsOutbound.has(id)) {\n return;\n }\n try {\n const stream = new OutboundStream(await connection.newStream(this.multicodecs, {\n runOnTransientConnection: this.runOnTransientConnection\n }), (e) => { this.log.error('outbound pipe error', e); }, { maxBufferSize: this.opts.maxOutboundBufferSize });\n this.log('create outbound stream %p', peerId);\n this.streamsOutbound.set(id, stream);\n const protocol = stream.protocol;\n if (protocol === constants.FloodsubID) {\n this.floodsubPeers.add(id);\n }\n this.metrics?.peersPerProtocol.inc({ protocol }, 1);\n // Immediately send own subscriptions via the newly attached stream\n if (this.subscriptions.size > 0) {\n this.log('send subscriptions to', id);\n this.sendSubscriptions(id, Array.from(this.subscriptions), true);\n }\n }\n catch (e) {\n this.log.error('createOutboundStream error', e);\n }\n }\n createInboundStream(peerId, stream) {\n if (!this.isStarted()) {\n return;\n }\n const id = peerId.toString();\n if (!this.peers.has(id)) {\n return;\n }\n // TODO make this behavior more robust\n // This behavior is different than for outbound streams\n // If a peer initiates a new inbound connection\n // we assume that one is the new canonical inbound stream\n const priorInboundStream = this.streamsInbound.get(id);\n if (priorInboundStream !== undefined) {\n this.log('replacing existing inbound steam %s', id);\n priorInboundStream.close().catch((err) => { this.log.error(err); });\n }\n this.log('create inbound stream %s', id);\n const inboundStream = new InboundStream(stream, { maxDataLength: this.opts.maxInboundDataLength });\n this.streamsInbound.set(id, inboundStream);\n this.pipePeerReadStream(peerId, inboundStream.source).catch((err) => { this.log(err); });\n }\n /**\n * Add a peer to the router\n */\n addPeer(peerId, direction, addr) {\n const id = peerId.toString();\n if (!this.peers.has(id)) {\n this.log('new peer %p', peerId);\n this.peers.add(id);\n // Add to peer scoring\n this.score.addPeer(id);\n const currentIP = multiaddrToIPStr(addr);\n if (currentIP !== null) {\n this.score.addIP(id, currentIP);\n }\n else {\n this.log('Added peer has no IP in current address %s %s', id, addr.toString());\n }\n // track the connection direction. Don't allow to unset outbound\n if (!this.outbound.has(id)) {\n this.outbound.set(id, direction === 'outbound');\n }\n }\n }\n /**\n * Removes a peer from the router\n */\n removePeer(peerId) {\n const id = peerId.toString();\n if (!this.peers.has(id)) {\n return;\n }\n // delete peer\n this.log('delete peer %p', peerId);\n this.peers.delete(id);\n const outboundStream = this.streamsOutbound.get(id);\n const inboundStream = this.streamsInbound.get(id);\n if (outboundStream != null) {\n this.metrics?.peersPerProtocol.inc({ protocol: outboundStream.protocol }, -1);\n }\n // close streams\n outboundStream?.close().catch((err) => { this.log.error(err); });\n inboundStream?.close().catch((err) => { this.log.error(err); });\n // remove streams\n this.streamsOutbound.delete(id);\n this.streamsInbound.delete(id);\n // remove peer from topics map\n for (const peers of this.topics.values()) {\n peers.delete(id);\n }\n // Remove this peer from the mesh\n for (const [topicStr, peers] of this.mesh) {\n if (peers.delete(id)) {\n this.metrics?.onRemoveFromMesh(topicStr, ChurnReason.Dc, 1);\n }\n }\n // Remove this peer from the fanout\n for (const peers of this.fanout.values()) {\n peers.delete(id);\n }\n // Remove from floodsubPeers\n this.floodsubPeers.delete(id);\n // Remove from gossip mapping\n this.gossip.delete(id);\n // Remove from control mapping\n this.control.delete(id);\n // Remove from backoff mapping\n this.outbound.delete(id);\n // Remove from peer scoring\n this.score.removePeer(id);\n this.acceptFromWhitelist.delete(id);\n }\n // API METHODS\n get started() {\n return this.status.code === GossipStatusCode.started;\n }\n /**\n * Get a the peer-ids in a topic mesh\n */\n getMeshPeers(topic) {\n const peersInTopic = this.mesh.get(topic);\n return (peersInTopic != null) ? Array.from(peersInTopic) : [];\n }\n /**\n * Get a list of the peer-ids that are subscribed to one topic.\n */\n getSubscribers(topic) {\n const peersInTopic = this.topics.get(topic);\n return ((peersInTopic != null) ? Array.from(peersInTopic) : []).map((str) => peerIdFromString(str));\n }\n /**\n * Get the list of topics which the peer is subscribed to.\n */\n getTopics() {\n return Array.from(this.subscriptions);\n }\n // TODO: Reviewing Pubsub API\n // MESSAGE METHODS\n /**\n * Responsible for processing each RPC message received by other peers.\n */\n async pipePeerReadStream(peerId, stream) {\n try {\n await pipe(stream, async (source) => {\n for await (const data of source) {\n try {\n // TODO: Check max gossip message size, before decodeRpc()\n const rpcBytes = data.subarray();\n // Note: This function may throw, it must be wrapped in a try {} catch {} to prevent closing the stream.\n // TODO: What should we do if the entire RPC is invalid?\n const rpc = decodeRpc(rpcBytes, this.decodeRpcLimits);\n this.metrics?.onRpcRecv(rpc, rpcBytes.length);\n // Since processRpc may be overridden entirely in unsafe ways,\n // the simplest/safest option here is to wrap in a function and capture all errors\n // to prevent a top-level unhandled exception\n // This processing of rpc messages should happen without awaiting full validation/execution of prior messages\n if (this.opts.awaitRpcHandler) {\n try {\n await this.handleReceivedRpc(peerId, rpc);\n }\n catch (err) {\n this.metrics?.onRpcRecvError();\n this.log(err);\n }\n }\n else {\n this.handleReceivedRpc(peerId, rpc).catch((err) => {\n this.metrics?.onRpcRecvError();\n this.log(err);\n });\n }\n }\n catch (e) {\n this.metrics?.onRpcDataError();\n this.log(e);\n }\n }\n });\n }\n catch (err) {\n this.metrics?.onPeerReadStreamError();\n this.handlePeerReadStreamError(err, peerId);\n }\n }\n /**\n * Handle error when read stream pipe throws, less of the functional use but more\n * to for testing purposes to spy on the error handling\n * */\n handlePeerReadStreamError(err, peerId) {\n this.log.error(err);\n this.onPeerDisconnected(peerId);\n }\n /**\n * Handles an rpc request from a peer\n */\n async handleReceivedRpc(from, rpc) {\n // Check if peer is graylisted in which case we ignore the event\n if (!this.acceptFrom(from.toString())) {\n this.log('received message from unacceptable peer %p', from);\n this.metrics?.rpcRecvNotAccepted.inc();\n return;\n }\n const subscriptions = (rpc.subscriptions != null) ? rpc.subscriptions.length : 0;\n const messages = (rpc.messages != null) ? rpc.messages.length : 0;\n let ihave = 0;\n let iwant = 0;\n let graft = 0;\n let prune = 0;\n if (rpc.control != null) {\n if (rpc.control.ihave != null)\n ihave = rpc.control.ihave.length;\n if (rpc.control.iwant != null)\n iwant = rpc.control.iwant.length;\n if (rpc.control.graft != null)\n graft = rpc.control.graft.length;\n if (rpc.control.prune != null)\n prune = rpc.control.prune.length;\n }\n this.log(`rpc.from ${from.toString()} subscriptions ${subscriptions} messages ${messages} ihave ${ihave} iwant ${iwant} graft ${graft} prune ${prune}`);\n // Handle received subscriptions\n if ((rpc.subscriptions != null) && rpc.subscriptions.length > 0) {\n // update peer subscriptions\n const subscriptions = [];\n rpc.subscriptions.forEach((subOpt) => {\n const topic = subOpt.topic;\n const subscribe = subOpt.subscribe === true;\n if (topic != null) {\n if ((this.allowedTopics != null) && !this.allowedTopics.has(topic)) {\n // Not allowed: subscription data-structures are not bounded by topic count\n // TODO: Should apply behaviour penalties?\n return;\n }\n this.handleReceivedSubscription(from, topic, subscribe);\n subscriptions.push({ topic, subscribe });\n }\n });\n this.safeDispatchEvent('subscription-change', {\n detail: { peerId: from, subscriptions }\n });\n }\n // Handle messages\n // TODO: (up to limit)\n if (rpc.messages != null) {\n for (const message of rpc.messages) {\n if ((this.allowedTopics != null) && !this.allowedTopics.has(message.topic)) {\n // Not allowed: message cache data-structures are not bounded by topic count\n // TODO: Should apply behaviour penalties?\n continue;\n }\n const handleReceivedMessagePromise = this.handleReceivedMessage(from, message)\n // Should never throw, but handle just in case\n .catch((err) => {\n this.metrics?.onMsgRecvError(message.topic);\n this.log(err);\n });\n if (this.opts.awaitRpcMessageHandler) {\n await handleReceivedMessagePromise;\n }\n }\n }\n // Handle control messages\n if (rpc.control != null) {\n await this.handleControlMessage(from.toString(), rpc.control);\n }\n }\n /**\n * Handles a subscription change from a peer\n */\n handleReceivedSubscription(from, topic, subscribe) {\n this.log('subscription update from %p topic %s', from, topic);\n let topicSet = this.topics.get(topic);\n if (topicSet == null) {\n topicSet = new Set();\n this.topics.set(topic, topicSet);\n }\n if (subscribe) {\n // subscribe peer to new topic\n topicSet.add(from.toString());\n }\n else {\n // unsubscribe from existing topic\n topicSet.delete(from.toString());\n }\n // TODO: rust-libp2p has A LOT more logic here\n }\n /**\n * Handles a newly received message from an RPC.\n * May forward to all peers in the mesh.\n */\n async handleReceivedMessage(from, rpcMsg) {\n this.metrics?.onMsgRecvPreValidation(rpcMsg.topic);\n const validationResult = await this.validateReceivedMessage(from, rpcMsg);\n this.metrics?.onPrevalidationResult(rpcMsg.topic, validationResult.code);\n const validationCode = validationResult.code;\n switch (validationCode) {\n case MessageStatus.duplicate:\n // Report the duplicate\n this.score.duplicateMessage(from.toString(), validationResult.msgIdStr, rpcMsg.topic);\n // due to the collision of fastMsgIdFn, 2 different messages may end up the same fastMsgId\n // so we need to also mark the duplicate message as delivered or the promise is not resolved\n // and peer gets penalized. See https://github.com/ChainSafe/js-libp2p-gossipsub/pull/385\n this.gossipTracer.deliverMessage(validationResult.msgIdStr, true);\n this.mcache.observeDuplicate(validationResult.msgIdStr, from.toString());\n return;\n case MessageStatus.invalid:\n // invalid messages received\n // metrics.register_invalid_message(&raw_message.topic)\n // Tell peer_score about reject\n // Reject the original source, and any duplicates we've seen from other peers.\n if (validationResult.msgIdStr != null) {\n const msgIdStr = validationResult.msgIdStr;\n this.score.rejectMessage(from.toString(), msgIdStr, rpcMsg.topic, validationResult.reason);\n this.gossipTracer.rejectMessage(msgIdStr, validationResult.reason);\n }\n else {\n this.score.rejectInvalidMessage(from.toString(), rpcMsg.topic);\n }\n this.metrics?.onMsgRecvInvalid(rpcMsg.topic, validationResult);\n return;\n case MessageStatus.valid:\n // Tells score that message arrived (but is maybe not fully validated yet).\n // Consider the message as delivered for gossip promises.\n this.score.validateMessage(validationResult.messageId.msgIdStr);\n this.gossipTracer.deliverMessage(validationResult.messageId.msgIdStr);\n // Add the message to our memcache\n // if no validation is required, mark the message as validated\n this.mcache.put(validationResult.messageId, rpcMsg, !this.opts.asyncValidation);\n // Dispatch the message to the user if we are subscribed to the topic\n if (this.subscriptions.has(rpcMsg.topic)) {\n const isFromSelf = this.components.peerId.equals(from);\n if (!isFromSelf || this.opts.emitSelf) {\n super.dispatchEvent(new CustomEvent('gossipsub:message', {\n detail: {\n propagationSource: from,\n msgId: validationResult.messageId.msgIdStr,\n msg: validationResult.msg\n }\n }));\n // TODO: Add option to switch between emit per topic or all messages in one\n super.dispatchEvent(new CustomEvent('message', { detail: validationResult.msg }));\n }\n }\n // Forward the message to mesh peers, if no validation is required\n // If asyncValidation is ON, expect the app layer to call reportMessageValidationResult(), then forward\n if (!this.opts.asyncValidation) {\n // TODO: in rust-libp2p\n // .forward_msg(&msg_id, raw_message, Some(propagation_source))\n this.forwardMessage(validationResult.messageId.msgIdStr, rpcMsg, from.toString());\n }\n break;\n default:\n throw new Error(`Invalid validation result: ${validationCode}`);\n }\n }\n /**\n * Handles a newly received message from an RPC.\n * May forward to all peers in the mesh.\n */\n async validateReceivedMessage(propagationSource, rpcMsg) {\n // Fast message ID stuff\n const fastMsgIdStr = this.fastMsgIdFn?.(rpcMsg);\n const msgIdCached = fastMsgIdStr !== undefined ? this.fastMsgIdCache?.get(fastMsgIdStr) : undefined;\n if (msgIdCached != null) {\n // This message has been seen previously. Ignore it\n return { code: MessageStatus.duplicate, msgIdStr: msgIdCached };\n }\n // Perform basic validation on message and convert to RawGossipsubMessage for fastMsgIdFn()\n const validationResult = await validateToRawMessage(this.globalSignaturePolicy, rpcMsg);\n if (!validationResult.valid) {\n return { code: MessageStatus.invalid, reason: RejectReason.Error, error: validationResult.error };\n }\n const msg = validationResult.message;\n // Try and perform the data transform to the message. If it fails, consider it invalid.\n try {\n if (this.dataTransform != null) {\n msg.data = this.dataTransform.inboundTransform(rpcMsg.topic, msg.data);\n }\n }\n catch (e) {\n this.log('Invalid message, transform failed', e);\n return { code: MessageStatus.invalid, reason: RejectReason.Error, error: ValidateError.TransformFailed };\n }\n // TODO: Check if message is from a blacklisted source or propagation origin\n // - Reject any message from a blacklisted peer\n // - Also reject any message that originated from a blacklisted peer\n // - reject messages claiming to be from ourselves but not locally published\n // Calculate the message id on the transformed data.\n const msgId = await this.msgIdFn(msg);\n const msgIdStr = this.msgIdToStrFn(msgId);\n const messageId = { msgId, msgIdStr };\n // Add the message to the duplicate caches\n if (fastMsgIdStr !== undefined && (this.fastMsgIdCache != null)) {\n const collision = this.fastMsgIdCache.put(fastMsgIdStr, msgIdStr);\n if (collision) {\n this.metrics?.fastMsgIdCacheCollision.inc();\n }\n }\n if (this.seenCache.has(msgIdStr)) {\n return { code: MessageStatus.duplicate, msgIdStr };\n }\n else {\n this.seenCache.put(msgIdStr);\n }\n // (Optional) Provide custom validation here with dynamic validators per topic\n // NOTE: This custom topicValidator() must resolve fast (< 100ms) to allow scores\n // to not penalize peers for long validation times.\n const topicValidator = this.topicValidators.get(rpcMsg.topic);\n if (topicValidator != null) {\n let acceptance;\n // Use try {} catch {} in case topicValidator() is synchronous\n try {\n acceptance = await topicValidator(propagationSource, msg);\n }\n catch (e) {\n const errCode = e.code;\n if (errCode === constants.ERR_TOPIC_VALIDATOR_IGNORE)\n acceptance = TopicValidatorResult.Ignore;\n if (errCode === constants.ERR_TOPIC_VALIDATOR_REJECT)\n acceptance = TopicValidatorResult.Reject;\n else\n acceptance = TopicValidatorResult.Ignore;\n }\n if (acceptance !== TopicValidatorResult.Accept) {\n return { code: MessageStatus.invalid, reason: rejectReasonFromAcceptance(acceptance), msgIdStr };\n }\n }\n return { code: MessageStatus.valid, messageId, msg };\n }\n /**\n * Return score of a peer.\n */\n getScore(peerId) {\n return this.score.score(peerId);\n }\n /**\n * Send an rpc object to a peer with subscriptions\n */\n sendSubscriptions(toPeer, topics, subscribe) {\n this.sendRpc(toPeer, {\n subscriptions: topics.map((topic) => ({ topic, subscribe }))\n });\n }\n /**\n * Handles an rpc control message from a peer\n */\n async handleControlMessage(id, controlMsg) {\n if (controlMsg === undefined) {\n return;\n }\n const iwant = (controlMsg.ihave != null) ? this.handleIHave(id, controlMsg.ihave) : [];\n const ihave = (controlMsg.iwant != null) ? this.handleIWant(id, controlMsg.iwant) : [];\n const prune = (controlMsg.graft != null) ? await this.handleGraft(id, controlMsg.graft) : [];\n (controlMsg.prune != null) && (await this.handlePrune(id, controlMsg.prune));\n if ((iwant.length === 0) && (ihave.length === 0) && (prune.length === 0)) {\n return;\n }\n const sent = this.sendRpc(id, { messages: ihave, control: { iwant, prune } });\n const iwantMessageIds = iwant[0]?.messageIDs;\n if (iwantMessageIds != null) {\n if (sent) {\n this.gossipTracer.addPromise(id, iwantMessageIds);\n }\n else {\n this.metrics?.iwantPromiseUntracked.inc(1);\n }\n }\n }\n /**\n * Whether to accept a message from a peer\n */\n acceptFrom(id) {\n if (this.direct.has(id)) {\n return true;\n }\n const now = Date.now();\n const entry = this.acceptFromWhitelist.get(id);\n if ((entry != null) && entry.messagesAccepted < ACCEPT_FROM_WHITELIST_MAX_MESSAGES && entry.acceptUntil >= now) {\n entry.messagesAccepted += 1;\n return true;\n }\n const score = this.score.score(id);\n if (score >= ACCEPT_FROM_WHITELIST_THRESHOLD_SCORE) {\n // peer is unlikely to be able to drop its score to `graylistThreshold`\n // after 128 messages or 1s\n this.acceptFromWhitelist.set(id, {\n messagesAccepted: 0,\n acceptUntil: now + ACCEPT_FROM_WHITELIST_DURATION_MS\n });\n }\n else {\n this.acceptFromWhitelist.delete(id);\n }\n return score >= this.opts.scoreThresholds.graylistThreshold;\n }\n /**\n * Handles IHAVE messages\n */\n handleIHave(id, ihave) {\n if (ihave.length === 0) {\n return [];\n }\n // we ignore IHAVE gossip from any peer whose score is below the gossips threshold\n const score = this.score.score(id);\n if (score < this.opts.scoreThresholds.gossipThreshold) {\n this.log('IHAVE: ignoring peer %s with score below threshold [ score = %d ]', id, score);\n this.metrics?.ihaveRcvIgnored.inc({ reason: IHaveIgnoreReason.LowScore });\n return [];\n }\n // IHAVE flood protection\n const peerhave = (this.peerhave.get(id) ?? 0) + 1;\n this.peerhave.set(id, peerhave);\n if (peerhave > constants.GossipsubMaxIHaveMessages) {\n this.log('IHAVE: peer %s has advertised too many times (%d) within this heartbeat interval; ignoring', id, peerhave);\n this.metrics?.ihaveRcvIgnored.inc({ reason: IHaveIgnoreReason.MaxIhave });\n return [];\n }\n const iasked = this.iasked.get(id) ?? 0;\n if (iasked >= constants.GossipsubMaxIHaveLength) {\n this.log('IHAVE: peer %s has already advertised too many messages (%d); ignoring', id, iasked);\n this.metrics?.ihaveRcvIgnored.inc({ reason: IHaveIgnoreReason.MaxIasked });\n return [];\n }\n // string msgId => msgId\n const iwant = new Map();\n ihave.forEach(({ topicID, messageIDs }) => {\n if (topicID == null || (messageIDs == null) || !this.mesh.has(topicID)) {\n return;\n }\n let idonthave = 0;\n messageIDs.forEach((msgId) => {\n const msgIdStr = this.msgIdToStrFn(msgId);\n if (!this.seenCache.has(msgIdStr)) {\n iwant.set(msgIdStr, msgId);\n idonthave++;\n }\n });\n this.metrics?.onIhaveRcv(topicID, messageIDs.length, idonthave);\n });\n if (iwant.size === 0) {\n return [];\n }\n let iask = iwant.size;\n if (iask + iasked > constants.GossipsubMaxIHaveLength) {\n iask = constants.GossipsubMaxIHaveLength - iasked;\n }\n this.log('IHAVE: Asking for %d out of %d messages from %s', iask, iwant.size, id);\n let iwantList = Array.from(iwant.values());\n // ask in random order\n shuffle(iwantList);\n // truncate to the messages we are actually asking for and update the iasked counter\n iwantList = iwantList.slice(0, iask);\n this.iasked.set(id, iasked + iask);\n // do not add gossipTracer promise here until a successful sendRpc()\n return [\n {\n messageIDs: iwantList\n }\n ];\n }\n /**\n * Handles IWANT messages\n * Returns messages to send back to peer\n */\n handleIWant(id, iwant) {\n if (iwant.length === 0) {\n return [];\n }\n // we don't respond to IWANT requests from any per whose score is below the gossip threshold\n const score = this.score.score(id);\n if (score < this.opts.scoreThresholds.gossipThreshold) {\n this.log('IWANT: ignoring peer %s with score below threshold [score = %d]', id, score);\n return [];\n }\n const ihave = new Map();\n const iwantByTopic = new Map();\n let iwantDonthave = 0;\n iwant.forEach(({ messageIDs }) => {\n messageIDs?.forEach((msgId) => {\n const msgIdStr = this.msgIdToStrFn(msgId);\n const entry = this.mcache.getWithIWantCount(msgIdStr, id);\n if (entry == null) {\n iwantDonthave++;\n return;\n }\n iwantByTopic.set(entry.msg.topic, 1 + (iwantByTopic.get(entry.msg.topic) ?? 0));\n if (entry.count > constants.GossipsubGossipRetransmission) {\n this.log('IWANT: Peer %s has asked for message %s too many times: ignoring request', id, msgId);\n return;\n }\n ihave.set(msgIdStr, entry.msg);\n });\n });\n this.metrics?.onIwantRcv(iwantByTopic, iwantDonthave);\n if (ihave.size === 0) {\n this.log('IWANT: Could not provide any wanted messages to %s', id);\n return [];\n }\n this.log('IWANT: Sending %d messages to %s', ihave.size, id);\n return Array.from(ihave.values());\n }\n /**\n * Handles Graft messages\n */\n async handleGraft(id, graft) {\n const prune = [];\n const score = this.score.score(id);\n const now = Date.now();\n let doPX = this.opts.doPX;\n graft.forEach(({ topicID }) => {\n if (topicID == null) {\n return;\n }\n const peersInMesh = this.mesh.get(topicID);\n if (peersInMesh == null) {\n // don't do PX when there is an unknown topic to avoid leaking our peers\n doPX = false;\n // spam hardening: ignore GRAFTs for unknown topics\n return;\n }\n // check if peer is already in the mesh; if so do nothing\n if (peersInMesh.has(id)) {\n return;\n }\n // we don't GRAFT to/from direct peers; complain loudly if this happens\n if (this.direct.has(id)) {\n this.log('GRAFT: ignoring request from direct peer %s', id);\n // this is possibly a bug from a non-reciprical configuration; send a PRUNE\n prune.push(topicID);\n // but don't px\n doPX = false;\n return;\n }\n // make sure we are not backing off that peer\n const expire = this.backoff.get(topicID)?.get(id);\n if (typeof expire === 'number' && now < expire) {\n this.log('GRAFT: ignoring backed off peer %s', id);\n // add behavioral penalty\n this.score.addPenalty(id, 1, ScorePenalty.GraftBackoff);\n // no PX\n doPX = false;\n // check the flood cutoff -- is the GRAFT coming too fast?\n const floodCutoff = expire + this.opts.graftFloodThreshold - this.opts.pruneBackoff;\n if (now < floodCutoff) {\n // extra penalty\n this.score.addPenalty(id, 1, ScorePenalty.GraftBackoff);\n }\n // refresh the backoff\n this.addBackoff(id, topicID);\n prune.push(topicID);\n return;\n }\n // check the score\n if (score < 0) {\n // we don't GRAFT peers with negative score\n this.log('GRAFT: ignoring peer %s with negative score: score=%d, topic=%s', id, score, topicID);\n // we do send them PRUNE however, because it's a matter of protocol correctness\n prune.push(topicID);\n // but we won't PX to them\n doPX = false;\n // add/refresh backoff so that we don't reGRAFT too early even if the score decays\n this.addBackoff(id, topicID);\n return;\n }\n // check the number of mesh peers; if it is at (or over) Dhi, we only accept grafts\n // from peers with outbound connections; this is a defensive check to restrict potential\n // mesh takeover attacks combined with love bombing\n if (peersInMesh.size >= this.opts.Dhi && !(this.outbound.get(id) ?? false)) {\n prune.push(topicID);\n this.addBackoff(id, topicID);\n return;\n }\n this.log('GRAFT: Add mesh link from %s in %s', id, topicID);\n this.score.graft(id, topicID);\n peersInMesh.add(id);\n this.metrics?.onAddToMesh(topicID, InclusionReason.Subscribed, 1);\n });\n if (prune.length === 0) {\n return [];\n }\n const onUnsubscribe = false;\n return Promise.all(prune.map(async (topic) => this.makePrune(id, topic, doPX, onUnsubscribe)));\n }\n /**\n * Handles Prune messages\n */\n async handlePrune(id, prune) {\n const score = this.score.score(id);\n for (const { topicID, backoff, peers } of prune) {\n if (topicID == null) {\n continue;\n }\n const peersInMesh = this.mesh.get(topicID);\n if (peersInMesh == null) {\n return;\n }\n this.log('PRUNE: Remove mesh link to %s in %s', id, topicID);\n this.score.prune(id, topicID);\n if (peersInMesh.has(id)) {\n peersInMesh.delete(id);\n this.metrics?.onRemoveFromMesh(topicID, ChurnReason.Prune, 1);\n }\n // is there a backoff specified by the peer? if so obey it\n if (typeof backoff === 'number' && backoff > 0) {\n this.doAddBackoff(id, topicID, backoff * 1000);\n }\n else {\n this.addBackoff(id, topicID);\n }\n // PX\n if ((peers != null) && (peers.length > 0)) {\n // we ignore PX from peers with insufficient scores\n if (score < this.opts.scoreThresholds.acceptPXThreshold) {\n this.log('PRUNE: ignoring PX from peer %s with insufficient score [score = %d, topic = %s]', id, score, topicID);\n continue;\n }\n await this.pxConnect(peers);\n }\n }\n }\n /**\n * Add standard backoff log for a peer in a topic\n */\n addBackoff(id, topic) {\n this.doAddBackoff(id, topic, this.opts.pruneBackoff);\n }\n /**\n * Add backoff expiry interval for a peer in a topic\n *\n * @param id\n * @param topic\n * @param intervalMs - backoff duration in milliseconds\n */\n doAddBackoff(id, topic, intervalMs) {\n let backoff = this.backoff.get(topic);\n if (backoff == null) {\n backoff = new Map();\n this.backoff.set(topic, backoff);\n }\n const expire = Date.now() + intervalMs;\n const existingExpire = backoff.get(id) ?? 0;\n if (existingExpire < expire) {\n backoff.set(id, expire);\n }\n }\n /**\n * Apply penalties from broken IHAVE/IWANT promises\n */\n applyIwantPenalties() {\n this.gossipTracer.getBrokenPromises().forEach((count, p) => {\n this.log(\"peer %s didn't follow up in %d IWANT requests; adding penalty\", p, count);\n this.score.addPenalty(p, count, ScorePenalty.BrokenPromise);\n });\n }\n /**\n * Clear expired backoff expiries\n */\n clearBackoff() {\n // we only clear once every GossipsubPruneBackoffTicks ticks to avoid iterating over the maps too much\n if (this.heartbeatTicks % constants.GossipsubPruneBackoffTicks !== 0) {\n return;\n }\n const now = Date.now();\n this.backoff.forEach((backoff, topic) => {\n backoff.forEach((expire, id) => {\n // add some slack time to the expiration, see https://github.com/libp2p/specs/pull/289\n if (expire + BACKOFF_SLACK * this.opts.heartbeatInterval < now) {\n backoff.delete(id);\n }\n });\n if (backoff.size === 0) {\n this.backoff.delete(topic);\n }\n });\n }\n /**\n * Maybe reconnect to direct peers\n */\n async directConnect() {\n const toconnect = [];\n this.direct.forEach((id) => {\n if (!this.streamsOutbound.has(id)) {\n toconnect.push(id);\n }\n });\n await Promise.all(toconnect.map(async (id) => this.connect(id)));\n }\n /**\n * Maybe attempt connection given signed peer records\n */\n async pxConnect(peers) {\n if (peers.length > this.opts.prunePeers) {\n shuffle(peers);\n peers = peers.slice(0, this.opts.prunePeers);\n }\n const toconnect = [];\n await Promise.all(peers.map(async (pi) => {\n if (pi.peerID == null) {\n return;\n }\n const peer = peerIdFromBytes(pi.peerID);\n const p = peer.toString();\n if (this.peers.has(p)) {\n return;\n }\n if (pi.signedPeerRecord == null) {\n toconnect.push(p);\n return;\n }\n // The peer sent us a signed record\n // This is not a record from the peer who sent the record, but another peer who is connected with it\n // Ensure that it is valid\n try {\n if (!(await this.components.peerStore.consumePeerRecord(pi.signedPeerRecord, peer))) {\n this.log('bogus peer record obtained through px: could not add peer record to address book');\n return;\n }\n toconnect.push(p);\n }\n catch (e) {\n this.log('bogus peer record obtained through px: invalid signature or not a peer record');\n }\n }));\n if (toconnect.length === 0) {\n return;\n }\n await Promise.all(toconnect.map(async (id) => this.connect(id)));\n }\n /**\n * Connect to a peer using the gossipsub protocol\n */\n async connect(id) {\n this.log('Initiating connection with %s', id);\n const peerId = peerIdFromString(id);\n const connection = await this.components.connectionManager.openConnection(peerId);\n for (const multicodec of this.multicodecs) {\n for (const topology of this.components.registrar.getTopologies(multicodec)) {\n topology.onConnect?.(peerId, connection);\n }\n }\n }\n /**\n * Subscribes to a topic\n */\n subscribe(topic) {\n if (this.status.code !== GossipStatusCode.started) {\n throw new Error('Pubsub has not started');\n }\n if (!this.subscriptions.has(topic)) {\n this.subscriptions.add(topic);\n for (const peerId of this.peers.keys()) {\n this.sendSubscriptions(peerId, [topic], true);\n }\n }\n this.join(topic);\n }\n /**\n * Unsubscribe to a topic\n */\n unsubscribe(topic) {\n if (this.status.code !== GossipStatusCode.started) {\n throw new Error('Pubsub is not started');\n }\n const wasSubscribed = this.subscriptions.delete(topic);\n this.log('unsubscribe from %s - am subscribed %s', topic, wasSubscribed);\n if (wasSubscribed) {\n for (const peerId of this.peers.keys()) {\n this.sendSubscriptions(peerId, [topic], false);\n }\n }\n this.leave(topic);\n }\n /**\n * Join topic\n */\n join(topic) {\n if (this.status.code !== GossipStatusCode.started) {\n throw new Error('Gossipsub has not started');\n }\n // if we are already in the mesh, return\n if (this.mesh.has(topic)) {\n return;\n }\n this.log('JOIN %s', topic);\n this.metrics?.onJoin(topic);\n const toAdd = new Set();\n const backoff = this.backoff.get(topic);\n // check if we have mesh_n peers in fanout[topic] and add them to the mesh if we do,\n // removing the fanout entry.\n const fanoutPeers = this.fanout.get(topic);\n if (fanoutPeers != null) {\n // Remove fanout entry and the last published time\n this.fanout.delete(topic);\n this.fanoutLastpub.delete(topic);\n // remove explicit peers, peers with negative scores, and backoffed peers\n fanoutPeers.forEach((id) => {\n if (!this.direct.has(id) && this.score.score(id) >= 0 && ((backoff == null) || !backoff.has(id))) {\n toAdd.add(id);\n }\n });\n this.metrics?.onAddToMesh(topic, InclusionReason.Fanout, toAdd.size);\n }\n // check if we need to get more peers, which we randomly select\n if (toAdd.size < this.opts.D) {\n const fanoutCount = toAdd.size;\n const newPeers = this.getRandomGossipPeers(topic, this.opts.D, (id) => \n // filter direct peers and peers with negative score\n !toAdd.has(id) && !this.direct.has(id) && this.score.score(id) >= 0 && ((backoff == null) || !backoff.has(id)));\n newPeers.forEach((peer) => {\n toAdd.add(peer);\n });\n this.metrics?.onAddToMesh(topic, InclusionReason.Random, toAdd.size - fanoutCount);\n }\n this.mesh.set(topic, toAdd);\n toAdd.forEach((id) => {\n this.log('JOIN: Add mesh link to %s in %s', id, topic);\n this.sendGraft(id, topic);\n // rust-libp2p\n // - peer_score.graft()\n // - Self::control_pool_add()\n // - peer_added_to_mesh()\n });\n }\n /**\n * Leave topic\n */\n leave(topic) {\n if (this.status.code !== GossipStatusCode.started) {\n throw new Error('Gossipsub has not started');\n }\n this.log('LEAVE %s', topic);\n this.metrics?.onLeave(topic);\n // Send PRUNE to mesh peers\n const meshPeers = this.mesh.get(topic);\n if (meshPeers != null) {\n Promise.all(Array.from(meshPeers).map(async (id) => {\n this.log('LEAVE: Remove mesh link to %s in %s', id, topic);\n await this.sendPrune(id, topic);\n })).catch((err) => {\n this.log('Error sending prunes to mesh peers', err);\n });\n this.mesh.delete(topic);\n }\n }\n selectPeersToForward(topic, propagationSource, excludePeers) {\n const tosend = new Set();\n // Add explicit peers\n const peersInTopic = this.topics.get(topic);\n if (peersInTopic != null) {\n this.direct.forEach((peer) => {\n if (peersInTopic.has(peer) && propagationSource !== peer && !(excludePeers?.has(peer) ?? false)) {\n tosend.add(peer);\n }\n });\n // As of Mar 2022, spec + golang-libp2p include this while rust-libp2p does not\n // rust-libp2p: https://github.com/libp2p/rust-libp2p/blob/6cc3b4ec52c922bfcf562a29b5805c3150e37c75/protocols/gossipsub/src/behaviour.rs#L2693\n // spec: https://github.com/libp2p/specs/blob/10712c55ab309086a52eec7d25f294df4fa96528/pubsub/gossipsub/gossipsub-v1.0.md?plain=1#L361\n this.floodsubPeers.forEach((peer) => {\n if (peersInTopic.has(peer) &&\n propagationSource !== peer &&\n !(excludePeers?.has(peer) ?? false) &&\n this.score.score(peer) >= this.opts.scoreThresholds.publishThreshold) {\n tosend.add(peer);\n }\n });\n }\n // add mesh peers\n const meshPeers = this.mesh.get(topic);\n if ((meshPeers != null) && meshPeers.size > 0) {\n meshPeers.forEach((peer) => {\n if (propagationSource !== peer && !(excludePeers?.has(peer) ?? false)) {\n tosend.add(peer);\n }\n });\n }\n return tosend;\n }\n selectPeersToPublish(topic) {\n const tosend = new Set();\n const tosendCount = {\n direct: 0,\n floodsub: 0,\n mesh: 0,\n fanout: 0\n };\n const peersInTopic = this.topics.get(topic);\n if (peersInTopic != null) {\n // flood-publish behavior\n // send to direct peers and _all_ peers meeting the publishThreshold\n if (this.opts.floodPublish) {\n peersInTopic.forEach((id) => {\n if (this.direct.has(id)) {\n tosend.add(id);\n tosendCount.direct++;\n }\n else if (this.score.score(id) >= this.opts.scoreThresholds.publishThreshold) {\n tosend.add(id);\n tosendCount.floodsub++;\n }\n });\n }\n else {\n // non-flood-publish behavior\n // send to direct peers, subscribed floodsub peers\n // and some mesh peers above publishThreshold\n // direct peers (if subscribed)\n this.direct.forEach((id) => {\n if (peersInTopic.has(id)) {\n tosend.add(id);\n tosendCount.direct++;\n }\n });\n // floodsub peers\n // Note: if there are no floodsub peers, we save a loop through peersInTopic Map\n this.floodsubPeers.forEach((id) => {\n if (peersInTopic.has(id) && this.score.score(id) >= this.opts.scoreThresholds.publishThreshold) {\n tosend.add(id);\n tosendCount.floodsub++;\n }\n });\n // Gossipsub peers handling\n const meshPeers = this.mesh.get(topic);\n if ((meshPeers != null) && meshPeers.size > 0) {\n meshPeers.forEach((peer) => {\n tosend.add(peer);\n tosendCount.mesh++;\n });\n // eslint-disable-next-line @typescript-eslint/brace-style\n }\n // We are not in the mesh for topic, use fanout peers\n else {\n const fanoutPeers = this.fanout.get(topic);\n if ((fanoutPeers != null) && fanoutPeers.size > 0) {\n fanoutPeers.forEach((peer) => {\n tosend.add(peer);\n tosendCount.fanout++;\n });\n // eslint-disable-next-line @typescript-eslint/brace-style\n }\n // We have no fanout peers, select mesh_n of them and add them to the fanout\n else {\n // If we are not in the fanout, then pick peers in topic above the publishThreshold\n const newFanoutPeers = this.getRandomGossipPeers(topic, this.opts.D, (id) => {\n return this.score.score(id) >= this.opts.scoreThresholds.publishThreshold;\n });\n // eslint-disable-next-line max-depth\n if (newFanoutPeers.size > 0) {\n this.fanout.set(topic, newFanoutPeers);\n newFanoutPeers.forEach((peer) => {\n tosend.add(peer);\n tosendCount.fanout++;\n });\n }\n }\n // We are publishing to fanout peers - update the time we published\n this.fanoutLastpub.set(topic, Date.now());\n }\n }\n }\n return { tosend, tosendCount };\n }\n /**\n * Forwards a message from our peers.\n *\n * For messages published by us (the app layer), this class uses `publish`\n */\n forwardMessage(msgIdStr, rawMsg, propagationSource, excludePeers) {\n // message is fully validated inform peer_score\n if (propagationSource != null) {\n this.score.deliverMessage(propagationSource, msgIdStr, rawMsg.topic);\n }\n const tosend = this.selectPeersToForward(rawMsg.topic, propagationSource, excludePeers);\n // Note: Don't throw if tosend is empty, we can have a mesh with a single peer\n // forward the message to peers\n tosend.forEach((id) => {\n // sendRpc may mutate RPC message on piggyback, create a new message for each peer\n this.sendRpc(id, { messages: [rawMsg] });\n });\n this.metrics?.onForwardMsg(rawMsg.topic, tosend.size);\n }\n /**\n * App layer publishes a message to peers, return number of peers this message is published to\n * Note: `async` due to crypto only if `StrictSign`, otherwise it's a sync fn.\n *\n * For messages not from us, this class uses `forwardMessage`.\n */\n async publish(topic, data, opts) {\n const startMs = Date.now();\n const transformedData = (this.dataTransform != null) ? this.dataTransform.outboundTransform(topic, data) : data;\n if (this.publishConfig == null) {\n throw Error('PublishError.Uninitialized');\n }\n // Prepare raw message with user's publishConfig\n const { raw: rawMsg, msg } = await buildRawMessage(this.publishConfig, topic, data, transformedData);\n // calculate the message id from the un-transformed data\n const msgId = await this.msgIdFn(msg);\n const msgIdStr = this.msgIdToStrFn(msgId);\n // Current publish opt takes precedence global opts, while preserving false value\n const ignoreDuplicatePublishError = opts?.ignoreDuplicatePublishError ?? this.opts.ignoreDuplicatePublishError;\n if (this.seenCache.has(msgIdStr)) {\n // This message has already been seen. We don't re-publish messages that have already\n // been published on the network.\n if (ignoreDuplicatePublishError) {\n this.metrics?.onPublishDuplicateMsg(topic);\n return { recipients: [] };\n }\n throw Error('PublishError.Duplicate');\n }\n const { tosend, tosendCount } = this.selectPeersToPublish(topic);\n const willSendToSelf = this.opts.emitSelf && this.subscriptions.has(topic);\n // Current publish opt takes precedence global opts, while preserving false value\n const allowPublishToZeroPeers = opts?.allowPublishToZeroPeers ?? this.opts.allowPublishToZeroPeers;\n if (tosend.size === 0 && !allowPublishToZeroPeers && !willSendToSelf) {\n throw Error('PublishError.InsufficientPeers');\n }\n // If the message isn't a duplicate and we have sent it to some peers add it to the\n // duplicate cache and memcache.\n this.seenCache.put(msgIdStr);\n // all published messages are valid\n this.mcache.put({ msgId, msgIdStr }, rawMsg, true);\n // If the message is anonymous or has a random author add it to the published message ids cache.\n this.publishedMessageIds.put(msgIdStr);\n const batchPublish = opts?.batchPublish ?? this.opts.batchPublish;\n const rpc = { messages: [rawMsg] };\n if (batchPublish) {\n this.sendRpcInBatch(tosend, rpc);\n }\n else {\n // Send to set of peers aggregated from direct, mesh, fanout\n for (const id of tosend) {\n // sendRpc may mutate RPC message on piggyback, create a new message for each peer\n const sent = this.sendRpc(id, rpc);\n // did not actually send the message\n if (!sent) {\n tosend.delete(id);\n }\n }\n }\n const durationMs = Date.now() - startMs;\n this.metrics?.onPublishMsg(topic, tosendCount, tosend.size, rawMsg.data != null ? rawMsg.data.length : 0, durationMs);\n // Dispatch the message to the user if we are subscribed to the topic\n if (willSendToSelf) {\n tosend.add(this.components.peerId.toString());\n super.dispatchEvent(new CustomEvent('gossipsub:message', {\n detail: {\n propagationSource: this.components.peerId,\n msgId: msgIdStr,\n msg\n }\n }));\n // TODO: Add option to switch between emit per topic or all messages in one\n super.dispatchEvent(new CustomEvent('message', { detail: msg }));\n }\n return {\n recipients: Array.from(tosend.values()).map((str) => peerIdFromString(str))\n };\n }\n /**\n * Send the same data in batch to tosend list without considering cached control messages\n * This is not only faster but also avoid allocating memory for each peer\n * see https://github.com/ChainSafe/js-libp2p-gossipsub/issues/344\n */\n sendRpcInBatch(tosend, rpc) {\n const rpcBytes = RPC.encode(rpc).finish();\n const prefixedData = encode.single(rpcBytes);\n for (const id of tosend) {\n const outboundStream = this.streamsOutbound.get(id);\n if (outboundStream == null) {\n this.log(`Cannot send RPC to ${id} as there is no open stream to it available`);\n tosend.delete(id);\n continue;\n }\n try {\n outboundStream.pushPrefixed(prefixedData);\n }\n catch (e) {\n tosend.delete(id);\n this.log.error(`Cannot send rpc to ${id}`, e);\n }\n this.metrics?.onRpcSent(rpc, rpcBytes.length);\n }\n }\n /**\n * This function should be called when `asyncValidation` is `true` after\n * the message got validated by the caller. Messages are stored in the `mcache` and\n * validation is expected to be fast enough that the messages should still exist in the cache.\n * There are three possible validation outcomes and the outcome is given in acceptance.\n *\n * If acceptance = `MessageAcceptance.Accept` the message will get propagated to the\n * network. The `propagation_source` parameter indicates who the message was received by and\n * will not be forwarded back to that peer.\n *\n * If acceptance = `MessageAcceptance.Reject` the message will be deleted from the memcache\n * and the P₄ penalty will be applied to the `propagationSource`.\n *\n * If acceptance = `MessageAcceptance.Ignore` the message will be deleted from the memcache\n * but no P₄ penalty will be applied.\n *\n * This function will return true if the message was found in the cache and false if was not\n * in the cache anymore.\n *\n * This should only be called once per message.\n */\n reportMessageValidationResult(msgId, propagationSource, acceptance) {\n let cacheEntry;\n if (acceptance === TopicValidatorResult.Accept) {\n cacheEntry = this.mcache.validate(msgId);\n if (cacheEntry != null) {\n const { message: rawMsg, originatingPeers } = cacheEntry;\n // message is fully validated inform peer_score\n this.score.deliverMessage(propagationSource, msgId, rawMsg.topic);\n this.forwardMessage(msgId, cacheEntry.message, propagationSource, originatingPeers);\n }\n // else, Message not in cache. Ignoring forwarding\n // eslint-disable-next-line @typescript-eslint/brace-style\n }\n // Not valid\n else {\n cacheEntry = this.mcache.remove(msgId);\n if (cacheEntry != null) {\n const rejectReason = rejectReasonFromAcceptance(acceptance);\n const { message: rawMsg, originatingPeers } = cacheEntry;\n // Tell peer_score about reject\n // Reject the original source, and any duplicates we've seen from other peers.\n this.score.rejectMessage(propagationSource, msgId, rawMsg.topic, rejectReason);\n for (const peer of originatingPeers) {\n this.score.rejectMessage(peer, msgId, rawMsg.topic, rejectReason);\n }\n }\n // else, Message not in cache. Ignoring forwarding\n }\n const firstSeenTimestampMs = this.score.messageFirstSeenTimestampMs(msgId);\n this.metrics?.onReportValidation(cacheEntry, acceptance, firstSeenTimestampMs);\n }\n /**\n * Sends a GRAFT message to a peer\n */\n sendGraft(id, topic) {\n const graft = [\n {\n topicID: topic\n }\n ];\n this.sendRpc(id, { control: { graft } });\n }\n /**\n * Sends a PRUNE message to a peer\n */\n async sendPrune(id, topic) {\n // this is only called from leave() function\n const onUnsubscribe = true;\n const prune = [await this.makePrune(id, topic, this.opts.doPX, onUnsubscribe)];\n this.sendRpc(id, { control: { prune } });\n }\n /**\n * Send an rpc object to a peer\n */\n sendRpc(id, rpc) {\n const outboundStream = this.streamsOutbound.get(id);\n if (outboundStream == null) {\n this.log(`Cannot send RPC to ${id} as there is no open stream to it available`);\n return false;\n }\n // piggyback control message retries\n const ctrl = this.control.get(id);\n if (ctrl != null) {\n this.piggybackControl(id, rpc, ctrl);\n this.control.delete(id);\n }\n // piggyback gossip\n const ihave = this.gossip.get(id);\n if (ihave != null) {\n this.piggybackGossip(id, rpc, ihave);\n this.gossip.delete(id);\n }\n const rpcBytes = RPC.encode(rpc).finish();\n try {\n outboundStream.push(rpcBytes);\n }\n catch (e) {\n this.log.error(`Cannot send rpc to ${id}`, e);\n // if the peer had control messages or gossip, re-attach\n if (ctrl != null) {\n this.control.set(id, ctrl);\n }\n if (ihave != null) {\n this.gossip.set(id, ihave);\n }\n return false;\n }\n this.metrics?.onRpcSent(rpc, rpcBytes.length);\n return true;\n }\n /** Mutates `outRpc` adding graft and prune control messages */\n piggybackControl(id, outRpc, ctrl) {\n if (ctrl.graft != null) {\n if (outRpc.control == null)\n outRpc.control = {};\n if (outRpc.control.graft == null)\n outRpc.control.graft = [];\n for (const graft of ctrl.graft) {\n if (graft.topicID != null && (this.mesh.get(graft.topicID)?.has(id) ?? false)) {\n outRpc.control.graft.push(graft);\n }\n }\n }\n if (ctrl.prune != null) {\n if (outRpc.control == null)\n outRpc.control = {};\n if (outRpc.control.prune == null)\n outRpc.control.prune = [];\n for (const prune of ctrl.prune) {\n if (prune.topicID != null && !(this.mesh.get(prune.topicID)?.has(id) ?? false)) {\n outRpc.control.prune.push(prune);\n }\n }\n }\n }\n /** Mutates `outRpc` adding ihave control messages */\n piggybackGossip(id, outRpc, ihave) {\n if (outRpc.control == null)\n outRpc.control = {};\n outRpc.control.ihave = ihave;\n }\n /**\n * Send graft and prune messages\n *\n * @param tograft - peer id => topic[]\n * @param toprune - peer id => topic[]\n */\n async sendGraftPrune(tograft, toprune, noPX) {\n const doPX = this.opts.doPX;\n const onUnsubscribe = false;\n for (const [id, topics] of tograft) {\n const graft = topics.map((topicID) => ({ topicID }));\n let prune = [];\n // If a peer also has prunes, process them now\n const pruning = toprune.get(id);\n if (pruning != null) {\n prune = await Promise.all(pruning.map(async (topicID) => this.makePrune(id, topicID, doPX && !(noPX.get(id) ?? false), onUnsubscribe)));\n toprune.delete(id);\n }\n this.sendRpc(id, { control: { graft, prune } });\n }\n for (const [id, topics] of toprune) {\n const prune = await Promise.all(topics.map(async (topicID) => this.makePrune(id, topicID, doPX && !(noPX.get(id) ?? false), onUnsubscribe)));\n this.sendRpc(id, { control: { prune } });\n }\n }\n /**\n * Emits gossip - Send IHAVE messages to a random set of gossip peers\n */\n emitGossip(peersToGossipByTopic) {\n const gossipIDsByTopic = this.mcache.getGossipIDs(new Set(peersToGossipByTopic.keys()));\n for (const [topic, peersToGossip] of peersToGossipByTopic) {\n this.doEmitGossip(topic, peersToGossip, gossipIDsByTopic.get(topic) ?? []);\n }\n }\n /**\n * Send gossip messages to GossipFactor peers above threshold with a minimum of D_lazy\n * Peers are randomly selected from the heartbeat which exclude mesh + fanout peers\n * We also exclude direct peers, as there is no reason to emit gossip to them\n *\n * @param topic\n * @param candidateToGossip - peers to gossip\n * @param messageIDs - message ids to gossip\n */\n doEmitGossip(topic, candidateToGossip, messageIDs) {\n if (messageIDs.length === 0) {\n return;\n }\n // shuffle to emit in random order\n shuffle(messageIDs);\n // if we are emitting more than GossipsubMaxIHaveLength ids, truncate the list\n if (messageIDs.length > constants.GossipsubMaxIHaveLength) {\n // we do the truncation (with shuffling) per peer below\n this.log('too many messages for gossip; will truncate IHAVE list (%d messages)', messageIDs.length);\n }\n if (candidateToGossip.size === 0)\n return;\n let target = this.opts.Dlazy;\n const factor = constants.GossipsubGossipFactor * candidateToGossip.size;\n let peersToGossip = candidateToGossip;\n if (factor > target) {\n target = factor;\n }\n if (target > peersToGossip.size) {\n target = peersToGossip.size;\n }\n else {\n // only shuffle if needed\n peersToGossip = shuffle(Array.from(peersToGossip)).slice(0, target);\n }\n // Emit the IHAVE gossip to the selected peers up to the target\n peersToGossip.forEach((id) => {\n let peerMessageIDs = messageIDs;\n if (messageIDs.length > constants.GossipsubMaxIHaveLength) {\n // shuffle and slice message IDs per peer so that we emit a different set for each peer\n // we have enough reduncancy in the system that this will significantly increase the message\n // coverage when we do truncate\n peerMessageIDs = shuffle(peerMessageIDs.slice()).slice(0, constants.GossipsubMaxIHaveLength);\n }\n this.pushGossip(id, {\n topicID: topic,\n messageIDs: peerMessageIDs\n });\n });\n }\n /**\n * Flush gossip and control messages\n */\n flush() {\n // send gossip first, which will also piggyback control\n for (const [peer, ihave] of this.gossip.entries()) {\n this.gossip.delete(peer);\n this.sendRpc(peer, { control: { ihave } });\n }\n // send the remaining control messages\n for (const [peer, control] of this.control.entries()) {\n this.control.delete(peer);\n this.sendRpc(peer, { control: { graft: control.graft, prune: control.prune } });\n }\n }\n /**\n * Adds new IHAVE messages to pending gossip\n */\n pushGossip(id, controlIHaveMsgs) {\n this.log('Add gossip to %s', id);\n const gossip = this.gossip.get(id) ?? [];\n this.gossip.set(id, gossip.concat(controlIHaveMsgs));\n }\n /**\n * Make a PRUNE control message for a peer in a topic\n */\n async makePrune(id, topic, doPX, onUnsubscribe) {\n this.score.prune(id, topic);\n if (this.streamsOutbound.get(id)?.protocol === constants.GossipsubIDv10) {\n // Gossipsub v1.0 -- no backoff, the peer won't be able to parse it anyway\n return {\n topicID: topic,\n peers: []\n };\n }\n // backoff is measured in seconds\n // GossipsubPruneBackoff and GossipsubUnsubscribeBackoff are measured in milliseconds\n // The protobuf has it as a uint64\n const backoffMs = onUnsubscribe ? this.opts.unsubcribeBackoff : this.opts.pruneBackoff;\n const backoff = backoffMs / 1000;\n this.doAddBackoff(id, topic, backoffMs);\n if (!doPX) {\n return {\n topicID: topic,\n peers: [],\n backoff\n };\n }\n // select peers for Peer eXchange\n const peers = this.getRandomGossipPeers(topic, this.opts.prunePeers, (xid) => {\n return xid !== id && this.score.score(xid) >= 0;\n });\n const px = await Promise.all(Array.from(peers).map(async (peerId) => {\n // see if we have a signed record to send back; if we don't, just send\n // the peer ID and let the pruned peer find them in the DHT -- we can't trust\n // unsigned address records through PX anyways\n // Finding signed records in the DHT is not supported at the time of writing in js-libp2p\n const id = peerIdFromString(peerId);\n let peerInfo;\n try {\n peerInfo = await this.components.peerStore.get(id);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n return {\n peerID: id.toBytes(),\n signedPeerRecord: peerInfo?.peerRecordEnvelope\n };\n }));\n return {\n topicID: topic,\n peers: px,\n backoff\n };\n }\n runHeartbeat = () => {\n const timer = this.metrics?.heartbeatDuration.startTimer();\n this.heartbeat()\n .catch((err) => {\n this.log('Error running heartbeat', err);\n })\n .finally(() => {\n if (timer != null) {\n timer();\n }\n // Schedule the next run if still in started status\n if (this.status.code === GossipStatusCode.started) {\n // Clear previous timeout before overwriting `status.heartbeatTimeout`, it should be completed tho.\n clearTimeout(this.status.heartbeatTimeout);\n // NodeJS setInterval function is innexact, calls drift by a few miliseconds on each call.\n // To run the heartbeat precisely setTimeout() must be used recomputing the delay on every loop.\n let msToNextHeartbeat = this.opts.heartbeatInterval - ((Date.now() - this.status.hearbeatStartMs) % this.opts.heartbeatInterval);\n // If too close to next heartbeat, skip one\n if (msToNextHeartbeat < this.opts.heartbeatInterval * 0.25) {\n msToNextHeartbeat += this.opts.heartbeatInterval;\n this.metrics?.heartbeatSkipped.inc();\n }\n this.status.heartbeatTimeout = setTimeout(this.runHeartbeat, msToNextHeartbeat);\n }\n });\n };\n /**\n * Maintains the mesh and fanout maps in gossipsub.\n */\n async heartbeat() {\n const { D, Dlo, Dhi, Dscore, Dout, fanoutTTL } = this.opts;\n this.heartbeatTicks++;\n // cache scores throught the heartbeat\n const scores = new Map();\n const getScore = (id) => {\n let s = scores.get(id);\n if (s === undefined) {\n s = this.score.score(id);\n scores.set(id, s);\n }\n return s;\n };\n // peer id => topic[]\n const tograft = new Map();\n // peer id => topic[]\n const toprune = new Map();\n // peer id => don't px\n const noPX = new Map();\n // clean up expired backoffs\n this.clearBackoff();\n // clean up peerhave/iasked counters\n this.peerhave.clear();\n this.metrics?.cacheSize.set({ cache: 'iasked' }, this.iasked.size);\n this.iasked.clear();\n // apply IWANT request penalties\n this.applyIwantPenalties();\n // ensure direct peers are connected\n if (this.heartbeatTicks % this.opts.directConnectTicks === 0) {\n // we only do this every few ticks to allow pending connections to complete and account for restarts/downtime\n await this.directConnect();\n }\n // EXTRA: Prune caches\n this.fastMsgIdCache?.prune();\n this.seenCache.prune();\n this.gossipTracer.prune();\n this.publishedMessageIds.prune();\n /**\n * Instead of calling getRandomGossipPeers multiple times to:\n * + get more mesh peers\n * + more outbound peers\n * + oppportunistic grafting\n * + emitGossip\n *\n * We want to loop through the topic peers only a single time and prepare gossip peers for all topics to improve the performance\n */\n const peersToGossipByTopic = new Map();\n // maintain the mesh for topics we have joined\n // eslint-disable-next-line complexity\n this.mesh.forEach((peers, topic) => {\n const peersInTopic = this.topics.get(topic);\n const candidateMeshPeers = new Set();\n const peersToGossip = new Set();\n peersToGossipByTopic.set(topic, peersToGossip);\n if (peersInTopic != null) {\n const shuffledPeers = shuffle(Array.from(peersInTopic));\n const backoff = this.backoff.get(topic);\n for (const id of shuffledPeers) {\n const peerStreams = this.streamsOutbound.get(id);\n if ((peerStreams != null) &&\n this.multicodecs.includes(peerStreams.protocol) &&\n !peers.has(id) &&\n !this.direct.has(id)) {\n const score = getScore(id);\n if (((backoff == null) || !backoff.has(id)) && score >= 0)\n candidateMeshPeers.add(id);\n // instead of having to find gossip peers after heartbeat which require another loop\n // we prepare peers to gossip in a topic within heartbeat to improve performance\n if (score >= this.opts.scoreThresholds.gossipThreshold)\n peersToGossip.add(id);\n }\n }\n }\n // prune/graft helper functions (defined per topic)\n const prunePeer = (id, reason) => {\n this.log('HEARTBEAT: Remove mesh link to %s in %s', id, topic);\n // no need to update peer score here as we do it in makePrune\n // add prune backoff record\n this.addBackoff(id, topic);\n // remove peer from mesh\n peers.delete(id);\n // after pruning a peer from mesh, we want to gossip topic to it if its score meet the gossip threshold\n if (getScore(id) >= this.opts.scoreThresholds.gossipThreshold)\n peersToGossip.add(id);\n this.metrics?.onRemoveFromMesh(topic, reason, 1);\n // add to toprune\n const topics = toprune.get(id);\n if (topics == null) {\n toprune.set(id, [topic]);\n }\n else {\n topics.push(topic);\n }\n };\n const graftPeer = (id, reason) => {\n this.log('HEARTBEAT: Add mesh link to %s in %s', id, topic);\n // update peer score\n this.score.graft(id, topic);\n // add peer to mesh\n peers.add(id);\n // when we add a new mesh peer, we don't want to gossip messages to it\n peersToGossip.delete(id);\n this.metrics?.onAddToMesh(topic, reason, 1);\n // add to tograft\n const topics = tograft.get(id);\n if (topics == null) {\n tograft.set(id, [topic]);\n }\n else {\n topics.push(topic);\n }\n };\n // drop all peers with negative score, without PX\n peers.forEach((id) => {\n const score = getScore(id);\n // Record the score\n if (score < 0) {\n this.log('HEARTBEAT: Prune peer %s with negative score: score=%d, topic=%s', id, score, topic);\n prunePeer(id, ChurnReason.BadScore);\n noPX.set(id, true);\n }\n });\n // do we have enough peers?\n if (peers.size < Dlo) {\n const ineed = D - peers.size;\n // slice up to first `ineed` items and remove them from candidateMeshPeers\n // same to `const newMeshPeers = candidateMeshPeers.slice(0, ineed)`\n const newMeshPeers = removeFirstNItemsFromSet(candidateMeshPeers, ineed);\n newMeshPeers.forEach((p) => {\n graftPeer(p, InclusionReason.NotEnough);\n });\n }\n // do we have to many peers?\n if (peers.size > Dhi) {\n let peersArray = Array.from(peers);\n // sort by score\n peersArray.sort((a, b) => getScore(b) - getScore(a));\n // We keep the first D_score peers by score and the remaining up to D randomly\n // under the constraint that we keep D_out peers in the mesh (if we have that many)\n peersArray = peersArray.slice(0, Dscore).concat(shuffle(peersArray.slice(Dscore)));\n // count the outbound peers we are keeping\n let outbound = 0;\n peersArray.slice(0, D).forEach((p) => {\n if (this.outbound.get(p) ?? false) {\n outbound++;\n }\n });\n // if it's less than D_out, bubble up some outbound peers from the random selection\n if (outbound < Dout) {\n const rotate = (i) => {\n // rotate the peersArray to the right and put the ith peer in the front\n const p = peersArray[i];\n for (let j = i; j > 0; j--) {\n peersArray[j] = peersArray[j - 1];\n }\n peersArray[0] = p;\n };\n // first bubble up all outbound peers already in the selection to the front\n if (outbound > 0) {\n let ihave = outbound;\n for (let i = 1; i < D && ihave > 0; i++) {\n // eslint-disable-next-line max-depth\n if (this.outbound.get(peersArray[i]) ?? false) {\n rotate(i);\n ihave--;\n }\n }\n }\n // now bubble up enough outbound peers outside the selection to the front\n let ineed = D - outbound;\n for (let i = D; i < peersArray.length && ineed > 0; i++) {\n if (this.outbound.get(peersArray[i]) ?? false) {\n rotate(i);\n ineed--;\n }\n }\n }\n // prune the excess peers\n peersArray.slice(D).forEach((p) => {\n prunePeer(p, ChurnReason.Excess);\n });\n }\n // do we have enough outbound peers?\n if (peers.size >= Dlo) {\n // count the outbound peers we have\n let outbound = 0;\n peers.forEach((p) => {\n if (this.outbound.get(p) ?? false) {\n outbound++;\n }\n });\n // if it's less than D_out, select some peers with outbound connections and graft them\n if (outbound < Dout) {\n const ineed = Dout - outbound;\n const newMeshPeers = removeItemsFromSet(candidateMeshPeers, ineed, (id) => this.outbound.get(id) === true);\n newMeshPeers.forEach((p) => {\n graftPeer(p, InclusionReason.Outbound);\n });\n }\n }\n // should we try to improve the mesh with opportunistic grafting?\n if (this.heartbeatTicks % this.opts.opportunisticGraftTicks === 0 && peers.size > 1) {\n // Opportunistic grafting works as follows: we check the median score of peers in the\n // mesh; if this score is below the opportunisticGraftThreshold, we select a few peers at\n // random with score over the median.\n // The intention is to (slowly) improve an underperforming mesh by introducing good\n // scoring peers that may have been gossiping at us. This allows us to get out of sticky\n // situations where we are stuck with poor peers and also recover from churn of good peers.\n // now compute the median peer score in the mesh\n const peersList = Array.from(peers).sort((a, b) => getScore(a) - getScore(b));\n const medianIndex = Math.floor(peers.size / 2);\n const medianScore = getScore(peersList[medianIndex]);\n // if the median score is below the threshold, select a better peer (if any) and GRAFT\n if (medianScore < this.opts.scoreThresholds.opportunisticGraftThreshold) {\n const ineed = this.opts.opportunisticGraftPeers;\n const newMeshPeers = removeItemsFromSet(candidateMeshPeers, ineed, (id) => getScore(id) > medianScore);\n for (const id of newMeshPeers) {\n this.log('HEARTBEAT: Opportunistically graft peer %s on topic %s', id, topic);\n graftPeer(id, InclusionReason.Opportunistic);\n }\n }\n }\n });\n // expire fanout for topics we haven't published to in a while\n const now = Date.now();\n this.fanoutLastpub.forEach((lastpb, topic) => {\n if (lastpb + fanoutTTL < now) {\n this.fanout.delete(topic);\n this.fanoutLastpub.delete(topic);\n }\n });\n // maintain our fanout for topics we are publishing but we have not joined\n this.fanout.forEach((fanoutPeers, topic) => {\n // checks whether our peers are still in the topic and have a score above the publish threshold\n const topicPeers = this.topics.get(topic);\n fanoutPeers.forEach((id) => {\n if (!(topicPeers?.has(id) ?? false) || getScore(id) < this.opts.scoreThresholds.publishThreshold) {\n fanoutPeers.delete(id);\n }\n });\n const peersInTopic = this.topics.get(topic);\n const candidateFanoutPeers = [];\n // the fanout map contains topics to which we are not subscribed.\n const peersToGossip = new Set();\n peersToGossipByTopic.set(topic, peersToGossip);\n if (peersInTopic != null) {\n const shuffledPeers = shuffle(Array.from(peersInTopic));\n for (const id of shuffledPeers) {\n const peerStreams = this.streamsOutbound.get(id);\n if ((peerStreams != null) &&\n this.multicodecs.includes(peerStreams.protocol) &&\n !fanoutPeers.has(id) &&\n !this.direct.has(id)) {\n const score = getScore(id);\n if (score >= this.opts.scoreThresholds.publishThreshold)\n candidateFanoutPeers.push(id);\n // instead of having to find gossip peers after heartbeat which require another loop\n // we prepare peers to gossip in a topic within heartbeat to improve performance\n if (score >= this.opts.scoreThresholds.gossipThreshold)\n peersToGossip.add(id);\n }\n }\n }\n // do we need more peers?\n if (fanoutPeers.size < D) {\n const ineed = D - fanoutPeers.size;\n candidateFanoutPeers.slice(0, ineed).forEach((id) => {\n fanoutPeers.add(id);\n peersToGossip?.delete(id);\n });\n }\n });\n this.emitGossip(peersToGossipByTopic);\n // send coalesced GRAFT/PRUNE messages (will piggyback gossip)\n await this.sendGraftPrune(tograft, toprune, noPX);\n // flush pending gossip that wasn't piggybacked above\n this.flush();\n // advance the message history window\n this.mcache.shift();\n this.dispatchEvent(new CustomEvent('gossipsub:heartbeat'));\n }\n /**\n * Given a topic, returns up to count peers subscribed to that topic\n * that pass an optional filter function\n *\n * @param topic\n * @param count\n * @param filter - a function to filter acceptable peers\n */\n getRandomGossipPeers(topic, count, filter = () => true) {\n const peersInTopic = this.topics.get(topic);\n if (peersInTopic == null) {\n return new Set();\n }\n // Adds all peers using our protocol\n // that also pass the filter function\n let peers = [];\n peersInTopic.forEach((id) => {\n const peerStreams = this.streamsOutbound.get(id);\n if (peerStreams == null) {\n return;\n }\n if (this.multicodecs.includes(peerStreams.protocol) && filter(id)) {\n peers.push(id);\n }\n });\n // Pseudo-randomly shuffles peers\n peers = shuffle(peers);\n if (count > 0 && peers.length > count) {\n peers = peers.slice(0, count);\n }\n return new Set(peers);\n }\n onScrapeMetrics(metrics) {\n /* Data structure sizes */\n metrics.mcacheSize.set(this.mcache.size);\n metrics.mcacheNotValidatedCount.set(this.mcache.notValidatedCount);\n // Arbitrary size\n metrics.cacheSize.set({ cache: 'direct' }, this.direct.size);\n metrics.cacheSize.set({ cache: 'seenCache' }, this.seenCache.size);\n metrics.cacheSize.set({ cache: 'fastMsgIdCache' }, this.fastMsgIdCache?.size ?? 0);\n metrics.cacheSize.set({ cache: 'publishedMessageIds' }, this.publishedMessageIds.size);\n metrics.cacheSize.set({ cache: 'mcache' }, this.mcache.size);\n metrics.cacheSize.set({ cache: 'score' }, this.score.size);\n metrics.cacheSize.set({ cache: 'gossipTracer.promises' }, this.gossipTracer.size);\n metrics.cacheSize.set({ cache: 'gossipTracer.requests' }, this.gossipTracer.requestMsByMsgSize);\n // Bounded by topic\n metrics.cacheSize.set({ cache: 'topics' }, this.topics.size);\n metrics.cacheSize.set({ cache: 'subscriptions' }, this.subscriptions.size);\n metrics.cacheSize.set({ cache: 'mesh' }, this.mesh.size);\n metrics.cacheSize.set({ cache: 'fanout' }, this.fanout.size);\n // Bounded by peer\n metrics.cacheSize.set({ cache: 'peers' }, this.peers.size);\n metrics.cacheSize.set({ cache: 'streamsOutbound' }, this.streamsOutbound.size);\n metrics.cacheSize.set({ cache: 'streamsInbound' }, this.streamsInbound.size);\n metrics.cacheSize.set({ cache: 'acceptFromWhitelist' }, this.acceptFromWhitelist.size);\n metrics.cacheSize.set({ cache: 'gossip' }, this.gossip.size);\n metrics.cacheSize.set({ cache: 'control' }, this.control.size);\n metrics.cacheSize.set({ cache: 'peerhave' }, this.peerhave.size);\n metrics.cacheSize.set({ cache: 'outbound' }, this.outbound.size);\n // 2D nested data structure\n let backoffSize = 0;\n const now = Date.now();\n metrics.connectedPeersBackoffSec.reset();\n for (const backoff of this.backoff.values()) {\n backoffSize += backoff.size;\n for (const [peer, expiredMs] of backoff.entries()) {\n if (this.peers.has(peer)) {\n metrics.connectedPeersBackoffSec.observe(Math.max(0, expiredMs - now) / 1000);\n }\n }\n }\n metrics.cacheSize.set({ cache: 'backoff' }, backoffSize);\n // Peer counts\n for (const [topicStr, peers] of this.topics) {\n metrics.topicPeersCount.set({ topicStr }, peers.size);\n }\n for (const [topicStr, peers] of this.mesh) {\n metrics.meshPeerCounts.set({ topicStr }, peers.size);\n }\n // Peer scores\n const scores = [];\n const scoreByPeer = new Map();\n metrics.behaviourPenalty.reset();\n for (const peerIdStr of this.peers.keys()) {\n const score = this.score.score(peerIdStr);\n scores.push(score);\n scoreByPeer.set(peerIdStr, score);\n metrics.behaviourPenalty.observe(this.score.peerStats.get(peerIdStr)?.behaviourPenalty ?? 0);\n }\n metrics.registerScores(scores, this.opts.scoreThresholds);\n // Breakdown score per mesh topicLabel\n metrics.registerScorePerMesh(this.mesh, scoreByPeer);\n // Breakdown on each score weight\n const sw = computeAllPeersScoreWeights(this.peers.keys(), this.score.peerStats, this.score.params, this.score.peerIPs, metrics.topicStrToLabel);\n metrics.registerScoreWeights(sw);\n }\n}\nexport function gossipsub(init = {}) {\n return (components) => new GossipSub(components, init);\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * A pushable async generator that waits until the current value is consumed\n * before allowing a new value to be pushed.\n *\n * Useful for when you don't want to keep memory usage under control and/or\n * allow a downstream consumer to dictate how fast data flows through a pipe,\n * but you want to be able to apply a transform to that data.\n *\n * @example\n *\n * ```typescript\n * import { queuelessPushable } from 'it-queueless-pushable'\n *\n * const pushable = queuelessPushable()\n *\n * // run asynchronously\n * Promise.resolve().then(async () => {\n * // push a value - the returned promise will not resolve until the value is\n * // read from the pushable\n * await pushable.push('hello')\n * })\n *\n * // read a value\n * const result = await pushable.next()\n * console.info(result) // { done: false, value: 'hello' }\n * ```\n */\nimport deferred, {} from 'p-defer';\nimport { raceSignal } from 'race-signal';\nclass QueuelessPushable {\n readNext;\n haveNext;\n ended;\n nextResult;\n constructor() {\n this.ended = false;\n this.readNext = deferred();\n this.haveNext = deferred();\n }\n [Symbol.asyncIterator]() {\n return this;\n }\n async next() {\n if (this.nextResult == null) {\n // wait for the supplier to push a value\n await this.haveNext.promise;\n }\n if (this.nextResult == null) {\n throw new Error('HaveNext promise resolved but nextResult was undefined');\n }\n const nextResult = this.nextResult;\n this.nextResult = undefined;\n // signal to the supplier that we read the value\n this.readNext.resolve();\n this.readNext = deferred();\n return nextResult;\n }\n async throw(err) {\n this.ended = true;\n if (err != null) {\n // this can cause unhandled promise rejections if nothing is awaiting the\n // next value so attach a dummy catch listener to the promise\n this.haveNext.promise.catch(() => { });\n this.haveNext.reject(err);\n }\n const result = {\n done: true,\n value: undefined\n };\n return result;\n }\n async return() {\n const result = {\n done: true,\n value: undefined\n };\n await this._push(undefined);\n return result;\n }\n async push(value, options) {\n await this._push(value, options);\n }\n async end(err, options) {\n if (err != null) {\n await this.throw(err);\n }\n else {\n // abortable return\n await this._push(undefined, options);\n }\n }\n async _push(value, options) {\n if (value != null && this.ended) {\n throw new Error('Cannot push value onto an ended pushable');\n }\n // wait for all values to be read\n while (this.nextResult != null) {\n await this.readNext.promise;\n }\n if (value != null) {\n this.nextResult = { done: false, value };\n }\n else {\n this.ended = true;\n this.nextResult = { done: true, value: undefined };\n }\n // let the consumer know we have a new value\n this.haveNext.resolve();\n this.haveNext = deferred();\n // wait for the consumer to have finished processing the value and requested\n // the next one or for the passed signal to abort the waiting\n await raceSignal(this.readNext.promise, options?.signal, options);\n }\n}\nexport function queuelessPushable() {\n return new QueuelessPushable();\n}\n//# sourceMappingURL=index.js.map","/**\n * The incoming stream ended before the expected number of bytes were read\n */\nexport class UnexpectedEOFError extends Error {\n name = 'UnexpectedEOFError';\n code = 'ERR_UNEXPECTED_EOF';\n}\n//# sourceMappingURL=errors.js.map","/**\n * @packageDocumentation\n *\n * This module makes it easy to send and receive bytes over streams.\n *\n * @example\n *\n * ```typescript\n * import { byteStream } from 'it-byte-stream'\n *\n * const stream = byteStream(duplex)\n *\n * // read the next chunk\n * const bytes = await stream.read()\n *\n * // read the next five bytes\n * const fiveBytes = await stream.read(5)\n *\n * // write bytes into the stream\n * await stream.write(Uint8Array.from([0, 1, 2, 3, 4]))\n * ```\n */\nimport { queuelessPushable } from 'it-queueless-pushable';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { UnexpectedEOFError } from './errors.js';\n/**\n * @deprecated This will not be exported in a future release\n */\nexport class CodeError extends Error {\n code;\n constructor(message, code) {\n super(message);\n this.code = code;\n }\n}\n/**\n * @deprecated This will not be exported in a future release\n */\nexport class AbortError extends CodeError {\n type;\n constructor(message) {\n super(message, 'ABORT_ERR');\n this.type = 'aborted';\n this.name = 'AbortError';\n }\n}\nexport function byteStream(duplex, opts) {\n const write = queuelessPushable();\n duplex.sink(write).catch(async (err) => {\n await write.end(err);\n });\n duplex.sink = async (source) => {\n for await (const buf of source) {\n await write.push(buf);\n }\n await write.end();\n };\n let source = duplex.source;\n if (duplex.source[Symbol.iterator] != null) {\n source = duplex.source[Symbol.iterator]();\n }\n else if (duplex.source[Symbol.asyncIterator] != null) {\n source = duplex.source[Symbol.asyncIterator]();\n }\n const readBuffer = new Uint8ArrayList();\n const W = {\n read: async (bytes, options) => {\n options?.signal?.throwIfAborted();\n let listener;\n const abortPromise = new Promise((resolve, reject) => {\n listener = () => {\n reject(new AbortError('Read aborted'));\n };\n options?.signal?.addEventListener('abort', listener);\n });\n try {\n if (bytes == null) {\n // just read whatever arrives\n const { done, value } = await Promise.race([\n source.next(),\n abortPromise\n ]);\n if (done === true) {\n return new Uint8ArrayList();\n }\n return value;\n }\n while (readBuffer.byteLength < bytes) {\n const { value, done } = await Promise.race([\n source.next(),\n abortPromise\n ]);\n if (done === true) {\n throw new UnexpectedEOFError('unexpected end of input');\n }\n readBuffer.append(value);\n }\n const buf = readBuffer.sublist(0, bytes);\n readBuffer.consume(bytes);\n return buf;\n }\n finally {\n if (listener != null) {\n options?.signal?.removeEventListener('abort', listener);\n }\n }\n },\n write: async (data, options) => {\n options?.signal?.throwIfAborted();\n // just write\n if (data instanceof Uint8Array) {\n await write.push(data, options);\n }\n else {\n await write.push(data.subarray(), options);\n }\n },\n unwrap: () => {\n if (readBuffer.byteLength > 0) {\n const originalStream = duplex.source;\n duplex.source = (async function* () {\n if (opts?.yieldBytes === false) {\n yield readBuffer;\n }\n else {\n yield* readBuffer;\n }\n yield* originalStream;\n }());\n }\n return duplex;\n }\n };\n return W;\n}\n//# sourceMappingURL=index.js.map","/**\n * The reported length of the next data message was not a positive integer\n */\nexport class InvalidMessageLengthError extends Error {\n name = 'InvalidMessageLengthError';\n code = 'ERR_INVALID_MSG_LENGTH';\n}\n/**\n * The reported length of the next data message was larger than the configured\n * max allowable value\n */\nexport class InvalidDataLengthError extends Error {\n name = 'InvalidDataLengthError';\n code = 'ERR_MSG_DATA_TOO_LONG';\n}\n/**\n * The varint used to specify the length of the next data message contained more\n * bytes than the configured max allowable value\n */\nexport class InvalidDataLengthLengthError extends Error {\n name = 'InvalidDataLengthLengthError';\n code = 'ERR_MSG_LENGTH_TOO_LONG';\n}\n//# sourceMappingURL=errors.js.map","/**\n * @packageDocumentation\n *\n * This module makes it easy to send and receive length-prefixed byte arrays over streams.\n *\n * @example\n *\n * ```typescript\n * import { lpStream } from 'it-length-prefixed-stream'\n *\n * const stream = lpStream(duplex)\n *\n * // read the next length-prefixed chunk\n * const bytes = await stream.read()\n *\n * // write a length-prefixed chunk\n * await stream.write(Uint8Array.from([0, 1, 2, 3, 4]))\n *\n * // write several chunks, all individually length-prefixed\n * await stream.writeV([\n * Uint8Array.from([0, 1, 2, 3, 4]),\n * Uint8Array.from([5, 6, 7, 8, 9])\n * ])\n * ```\n */\nimport { byteStream } from 'it-byte-stream';\nimport * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { InvalidDataLengthError, InvalidDataLengthLengthError, InvalidMessageLengthError } from './errors.js';\nexport function lpStream(duplex, opts = {}) {\n const bytes = byteStream(duplex, opts);\n if (opts.maxDataLength != null && opts.maxLengthLength == null) {\n // if max data length is set but max length length is not, calculate the\n // max length length needed to encode max data length\n opts.maxLengthLength = varint.encodingLength(opts.maxDataLength);\n }\n const decodeLength = opts?.lengthDecoder ?? varint.decode;\n const encodeLength = opts?.lengthEncoder ?? varint.encode;\n const W = {\n read: async (options) => {\n let dataLength = -1;\n const lengthBuffer = new Uint8ArrayList();\n while (true) {\n // read one byte at a time until we can decode a varint\n lengthBuffer.append(await bytes.read(1, options));\n try {\n dataLength = decodeLength(lengthBuffer);\n }\n catch (err) {\n if (err instanceof RangeError) {\n continue;\n }\n throw err;\n }\n if (dataLength < 0) {\n throw new InvalidMessageLengthError('Invalid message length');\n }\n if (opts?.maxLengthLength != null && lengthBuffer.byteLength > opts.maxLengthLength) {\n throw new InvalidDataLengthLengthError('message length length too long');\n }\n if (dataLength > -1) {\n break;\n }\n }\n if (opts?.maxDataLength != null && dataLength > opts.maxDataLength) {\n throw new InvalidDataLengthError('message length too long');\n }\n return bytes.read(dataLength, options);\n },\n write: async (data, options) => {\n // encode, write\n await bytes.write(new Uint8ArrayList(encodeLength(data.byteLength), data), options);\n },\n writeV: async (data, options) => {\n const list = new Uint8ArrayList(...data.flatMap(buf => ([encodeLength(buf.byteLength), buf])));\n // encode, write\n await bytes.write(list, options);\n },\n unwrap: () => {\n return bytes.unwrap();\n }\n };\n return W;\n}\n//# sourceMappingURL=index.js.map","import defer from 'p-defer';\n/**\n * A pair of streams where one drains from the other\n */\nexport function pair() {\n const deferred = defer();\n let piped = false;\n return {\n sink: async (source) => {\n if (piped) {\n throw new Error('already piped');\n }\n piped = true;\n deferred.resolve(source);\n },\n source: (async function* () {\n const source = await deferred.promise;\n yield* source;\n }())\n };\n}\n//# sourceMappingURL=index.js.map","import { pair } from './index.js';\n/**\n * Two duplex streams that are attached to each other\n */\nexport function duplexPair() {\n const a = pair();\n const b = pair();\n return [\n {\n source: a.source,\n sink: b.sink\n },\n {\n source: b.source,\n sink: a.sink\n }\n ];\n}\n//# sourceMappingURL=duplex.js.map","export const NOISE_MSG_MAX_LENGTH_BYTES = 65535;\nexport const NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG = NOISE_MSG_MAX_LENGTH_BYTES - 16;\nexport const DUMP_SESSION_KEYS = Boolean(globalThis.process?.env?.DUMP_SESSION_KEYS);\n//# sourceMappingURL=constants.js.map","/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u16 = (arr) => new Uint16Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 2));\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// big-endian hardware is rare. Just in case someone still decides to run ciphers:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!isBytes(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\nexport function bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n else if (isBytes(data))\n data = data.slice();\n else\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n if (!isBytes(a))\n throw new Error('Uint8Array expected');\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n throw new Error('options must be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function ensureBytes(b, len) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (typeof len === 'number')\n if (b.length !== len)\n throw new Error(`Uint8Array length ${len} expected`);\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n// For runtime check if class implements interface\nexport class Hash {\n}\nexport const wrapCipher = (params, c) => {\n Object.assign(c, params);\n return c;\n};\n// Polyfill for Safari 14\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\nexport function u64Lengths(ciphertext, AAD) {\n const num = new Uint8Array(16);\n const view = createView(num);\n setBigUint64(view, 0, BigInt(AAD ? AAD.length : 0), true);\n setBigUint64(view, 8, BigInt(ciphertext.length), true);\n return num;\n}\n//# sourceMappingURL=utils.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`boolean expected, not ${b}`);\n}\n// TODO: merge with utils\nfunction isBytes(a) {\n return (a != null &&\n typeof a === 'object' &&\n (a instanceof Uint8Array || a.constructor.name === 'Uint8Array'));\n}\nfunction bytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('hash must be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","import { exists as aexists, output as aoutput } from './_assert.js';\nimport { ensureBytes, toBytes } from './utils.js';\n// Poly1305 is a fast and parallel secret-key message-authentication code.\n// https://cr.yp.to/mac.html, https://cr.yp.to/mac/poly1305-20050329.pdf\n// https://datatracker.ietf.org/doc/html/rfc8439\n// Based on Public Domain poly1305-donna https://github.com/floodyberry/poly1305-donna\nconst u8to16 = (a, i) => (a[i++] & 0xff) | ((a[i++] & 0xff) << 8);\nclass Poly1305 {\n constructor(key) {\n this.blockLen = 16;\n this.outputLen = 16;\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.pos = 0;\n this.finished = false;\n key = toBytes(key);\n ensureBytes(key, 32);\n const t0 = u8to16(key, 0);\n const t1 = u8to16(key, 2);\n const t2 = u8to16(key, 4);\n const t3 = u8to16(key, 6);\n const t4 = u8to16(key, 8);\n const t5 = u8to16(key, 10);\n const t6 = u8to16(key, 12);\n const t7 = u8to16(key, 14);\n // https://github.com/floodyberry/poly1305-donna/blob/e6ad6e091d30d7f4ec2d4f978be1fcfcbce72781/poly1305-donna-16.h#L47\n this.r[0] = t0 & 0x1fff;\n this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = (t4 >>> 1) & 0x1ffe;\n this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = (t7 >>> 5) & 0x007f;\n for (let i = 0; i < 8; i++)\n this.pad[i] = u8to16(key, 16 + 2 * i);\n }\n process(data, offset, isLast = false) {\n const hibit = isLast ? 0 : 1 << 11;\n const { h, r } = this;\n const r0 = r[0];\n const r1 = r[1];\n const r2 = r[2];\n const r3 = r[3];\n const r4 = r[4];\n const r5 = r[5];\n const r6 = r[6];\n const r7 = r[7];\n const r8 = r[8];\n const r9 = r[9];\n const t0 = u8to16(data, offset + 0);\n const t1 = u8to16(data, offset + 2);\n const t2 = u8to16(data, offset + 4);\n const t3 = u8to16(data, offset + 6);\n const t4 = u8to16(data, offset + 8);\n const t5 = u8to16(data, offset + 10);\n const t6 = u8to16(data, offset + 12);\n const t7 = u8to16(data, offset + 14);\n let h0 = h[0] + (t0 & 0x1fff);\n let h1 = h[1] + (((t0 >>> 13) | (t1 << 3)) & 0x1fff);\n let h2 = h[2] + (((t1 >>> 10) | (t2 << 6)) & 0x1fff);\n let h3 = h[3] + (((t2 >>> 7) | (t3 << 9)) & 0x1fff);\n let h4 = h[4] + (((t3 >>> 4) | (t4 << 12)) & 0x1fff);\n let h5 = h[5] + ((t4 >>> 1) & 0x1fff);\n let h6 = h[6] + (((t4 >>> 14) | (t5 << 2)) & 0x1fff);\n let h7 = h[7] + (((t5 >>> 11) | (t6 << 5)) & 0x1fff);\n let h8 = h[8] + (((t6 >>> 8) | (t7 << 8)) & 0x1fff);\n let h9 = h[9] + ((t7 >>> 5) | hibit);\n let c = 0;\n let d0 = c + h0 * r0 + h1 * (5 * r9) + h2 * (5 * r8) + h3 * (5 * r7) + h4 * (5 * r6);\n c = d0 >>> 13;\n d0 &= 0x1fff;\n d0 += h5 * (5 * r5) + h6 * (5 * r4) + h7 * (5 * r3) + h8 * (5 * r2) + h9 * (5 * r1);\n c += d0 >>> 13;\n d0 &= 0x1fff;\n let d1 = c + h0 * r1 + h1 * r0 + h2 * (5 * r9) + h3 * (5 * r8) + h4 * (5 * r7);\n c = d1 >>> 13;\n d1 &= 0x1fff;\n d1 += h5 * (5 * r6) + h6 * (5 * r5) + h7 * (5 * r4) + h8 * (5 * r3) + h9 * (5 * r2);\n c += d1 >>> 13;\n d1 &= 0x1fff;\n let d2 = c + h0 * r2 + h1 * r1 + h2 * r0 + h3 * (5 * r9) + h4 * (5 * r8);\n c = d2 >>> 13;\n d2 &= 0x1fff;\n d2 += h5 * (5 * r7) + h6 * (5 * r6) + h7 * (5 * r5) + h8 * (5 * r4) + h9 * (5 * r3);\n c += d2 >>> 13;\n d2 &= 0x1fff;\n let d3 = c + h0 * r3 + h1 * r2 + h2 * r1 + h3 * r0 + h4 * (5 * r9);\n c = d3 >>> 13;\n d3 &= 0x1fff;\n d3 += h5 * (5 * r8) + h6 * (5 * r7) + h7 * (5 * r6) + h8 * (5 * r5) + h9 * (5 * r4);\n c += d3 >>> 13;\n d3 &= 0x1fff;\n let d4 = c + h0 * r4 + h1 * r3 + h2 * r2 + h3 * r1 + h4 * r0;\n c = d4 >>> 13;\n d4 &= 0x1fff;\n d4 += h5 * (5 * r9) + h6 * (5 * r8) + h7 * (5 * r7) + h8 * (5 * r6) + h9 * (5 * r5);\n c += d4 >>> 13;\n d4 &= 0x1fff;\n let d5 = c + h0 * r5 + h1 * r4 + h2 * r3 + h3 * r2 + h4 * r1;\n c = d5 >>> 13;\n d5 &= 0x1fff;\n d5 += h5 * r0 + h6 * (5 * r9) + h7 * (5 * r8) + h8 * (5 * r7) + h9 * (5 * r6);\n c += d5 >>> 13;\n d5 &= 0x1fff;\n let d6 = c + h0 * r6 + h1 * r5 + h2 * r4 + h3 * r3 + h4 * r2;\n c = d6 >>> 13;\n d6 &= 0x1fff;\n d6 += h5 * r1 + h6 * r0 + h7 * (5 * r9) + h8 * (5 * r8) + h9 * (5 * r7);\n c += d6 >>> 13;\n d6 &= 0x1fff;\n let d7 = c + h0 * r7 + h1 * r6 + h2 * r5 + h3 * r4 + h4 * r3;\n c = d7 >>> 13;\n d7 &= 0x1fff;\n d7 += h5 * r2 + h6 * r1 + h7 * r0 + h8 * (5 * r9) + h9 * (5 * r8);\n c += d7 >>> 13;\n d7 &= 0x1fff;\n let d8 = c + h0 * r8 + h1 * r7 + h2 * r6 + h3 * r5 + h4 * r4;\n c = d8 >>> 13;\n d8 &= 0x1fff;\n d8 += h5 * r3 + h6 * r2 + h7 * r1 + h8 * r0 + h9 * (5 * r9);\n c += d8 >>> 13;\n d8 &= 0x1fff;\n let d9 = c + h0 * r9 + h1 * r8 + h2 * r7 + h3 * r6 + h4 * r5;\n c = d9 >>> 13;\n d9 &= 0x1fff;\n d9 += h5 * r4 + h6 * r3 + h7 * r2 + h8 * r1 + h9 * r0;\n c += d9 >>> 13;\n d9 &= 0x1fff;\n c = ((c << 2) + c) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = c >>> 13;\n d1 += c;\n h[0] = d0;\n h[1] = d1;\n h[2] = d2;\n h[3] = d3;\n h[4] = d4;\n h[5] = d5;\n h[6] = d6;\n h[7] = d7;\n h[8] = d8;\n h[9] = d9;\n }\n finalize() {\n const { h, pad } = this;\n const g = new Uint16Array(10);\n let c = h[1] >>> 13;\n h[1] &= 0x1fff;\n for (let i = 2; i < 10; i++) {\n h[i] += c;\n c = h[i] >>> 13;\n h[i] &= 0x1fff;\n }\n h[0] += c * 5;\n c = h[0] >>> 13;\n h[0] &= 0x1fff;\n h[1] += c;\n c = h[1] >>> 13;\n h[1] &= 0x1fff;\n h[2] += c;\n g[0] = h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (let i = 1; i < 10; i++) {\n g[i] = h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= 1 << 13;\n let mask = (c ^ 1) - 1;\n for (let i = 0; i < 10; i++)\n g[i] &= mask;\n mask = ~mask;\n for (let i = 0; i < 10; i++)\n h[i] = (h[i] & mask) | g[i];\n h[0] = (h[0] | (h[1] << 13)) & 0xffff;\n h[1] = ((h[1] >>> 3) | (h[2] << 10)) & 0xffff;\n h[2] = ((h[2] >>> 6) | (h[3] << 7)) & 0xffff;\n h[3] = ((h[3] >>> 9) | (h[4] << 4)) & 0xffff;\n h[4] = ((h[4] >>> 12) | (h[5] << 1) | (h[6] << 14)) & 0xffff;\n h[5] = ((h[6] >>> 2) | (h[7] << 11)) & 0xffff;\n h[6] = ((h[7] >>> 5) | (h[8] << 8)) & 0xffff;\n h[7] = ((h[8] >>> 8) | (h[9] << 5)) & 0xffff;\n let f = h[0] + pad[0];\n h[0] = f & 0xffff;\n for (let i = 1; i < 8; i++) {\n f = (((h[i] + pad[i]) | 0) + (f >>> 16)) | 0;\n h[i] = f & 0xffff;\n }\n }\n update(data) {\n aexists(this);\n const { buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input\n if (take === blockLen) {\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(data, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(buffer, 0, false);\n this.pos = 0;\n }\n }\n return this;\n }\n destroy() {\n this.h.fill(0);\n this.r.fill(0);\n this.buffer.fill(0);\n this.pad.fill(0);\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n const { buffer, h } = this;\n let { pos } = this;\n if (pos) {\n buffer[pos++] = 1;\n // buffer.subarray(pos).fill(0);\n for (; pos < 16; pos++)\n buffer[pos] = 0;\n this.process(buffer, 0, true);\n }\n this.finalize();\n let opos = 0;\n for (let i = 0; i < 8; i++) {\n out[opos++] = h[i] >>> 0;\n out[opos++] = h[i] >>> 8;\n }\n return out;\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n}\nexport function wrapConstructorWithKey(hashCons) {\n const hashC = (msg, key) => hashCons(key).update(toBytes(msg)).digest();\n const tmp = hashCons(new Uint8Array(32));\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (key) => hashCons(key);\n return hashC;\n}\nexport const poly1305 = wrapConstructorWithKey((key) => new Poly1305(key));\n//# sourceMappingURL=_poly1305.js.map","// Basic utils for ARX (add-rotate-xor) salsa and chacha ciphers.\nimport { number as anumber, bytes as abytes, bool as abool } from './_assert.js';\nimport { checkOpts, u32, utf8ToBytes } from './utils.js';\n/*\nRFC8439 requires multi-step cipher stream, where\nauthKey starts with counter: 0, actual msg with counter: 1.\n\nFor this, we need a way to re-use nonce / counter:\n\n const counter = new Uint8Array(4);\n chacha(..., counter, ...); // counter is now 1\n chacha(..., counter, ...); // counter is now 2\n\nThis is complicated:\n\n- 32-bit counters are enough, no need for 64-bit: max ArrayBuffer size in JS is 4GB\n- Original papers don't allow mutating counters\n- Counter overflow is undefined [^1]\n- Idea A: allow providing (nonce | counter) instead of just nonce, re-use it\n- Caveat: Cannot be re-used through all cases:\n- * chacha has (counter | nonce)\n- * xchacha has (nonce16 | counter | nonce16)\n- Idea B: separate nonce / counter and provide separate API for counter re-use\n- Caveat: there are different counter sizes depending on an algorithm.\n- salsa & chacha also differ in structures of key & sigma:\n salsa20: s[0] | k(4) | s[1] | nonce(2) | ctr(2) | s[2] | k(4) | s[3]\n chacha: s(4) | k(8) | ctr(1) | nonce(3)\n chacha20orig: s(4) | k(8) | ctr(2) | nonce(2)\n- Idea C: helper method such as `setSalsaState(key, nonce, sigma, data)`\n- Caveat: we can't re-use counter array\n\nxchacha [^2] uses the subkey and remaining 8 byte nonce with ChaCha20 as normal\n(prefixed by 4 NUL bytes, since [RFC8439] specifies a 12-byte nonce).\n\n[^1]: https://mailarchive.ietf.org/arch/msg/cfrg/gsOnTJzcbgG6OqD8Sc0GO5aR_tU/\n[^2]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha#appendix-A.2\n*/\nconst sigma16 = utf8ToBytes('expand 16-byte k');\nconst sigma32 = utf8ToBytes('expand 32-byte k');\nconst sigma16_32 = u32(sigma16);\nconst sigma32_32 = u32(sigma32);\nexport function rotl(a, b) {\n return (a << b) | (a >>> (32 - b));\n}\n// Is byte array aligned to 4 byte offset (u32)?\nfunction isAligned32(b) {\n return b.byteOffset % 4 === 0;\n}\n// Salsa and Chacha block length is always 512-bit\nconst BLOCK_LEN = 64;\nconst BLOCK_LEN32 = 16;\n// new Uint32Array([2**32]) // => Uint32Array(1) [ 0 ]\n// new Uint32Array([2**32-1]) // => Uint32Array(1) [ 4294967295 ]\nconst MAX_COUNTER = 2 ** 32 - 1;\nconst U32_EMPTY = new Uint32Array();\nfunction runCipher(core, sigma, key, nonce, data, output, counter, rounds) {\n const len = data.length;\n const block = new Uint8Array(BLOCK_LEN);\n const b32 = u32(block);\n // Make sure that buffers aligned to 4 bytes\n const isAligned = isAligned32(data) && isAligned32(output);\n const d32 = isAligned ? u32(data) : U32_EMPTY;\n const o32 = isAligned ? u32(output) : U32_EMPTY;\n for (let pos = 0; pos < len; counter++) {\n core(sigma, key, nonce, b32, counter, rounds);\n if (counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n const take = Math.min(BLOCK_LEN, len - pos);\n // aligned to 4 bytes\n if (isAligned && take === BLOCK_LEN) {\n const pos32 = pos / 4;\n if (pos % 4 !== 0)\n throw new Error('arx: invalid block position');\n for (let j = 0, posj; j < BLOCK_LEN32; j++) {\n posj = pos32 + j;\n o32[posj] = d32[posj] ^ b32[j];\n }\n pos += BLOCK_LEN;\n continue;\n }\n for (let j = 0, posj; j < take; j++) {\n posj = pos + j;\n output[posj] = data[posj] ^ block[j];\n }\n pos += take;\n }\n}\nexport function createCipher(core, opts) {\n const { allowShortKeys, extendNonceFn, counterLength, counterRight, rounds } = checkOpts({ allowShortKeys: false, counterLength: 8, counterRight: false, rounds: 20 }, opts);\n if (typeof core !== 'function')\n throw new Error('core must be a function');\n anumber(counterLength);\n anumber(rounds);\n abool(counterRight);\n abool(allowShortKeys);\n return (key, nonce, data, output, counter = 0) => {\n abytes(key);\n abytes(nonce);\n abytes(data);\n const len = data.length;\n if (!output)\n output = new Uint8Array(len);\n abytes(output);\n anumber(counter);\n if (counter < 0 || counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n if (output.length < len)\n throw new Error(`arx: output (${output.length}) is shorter than data (${len})`);\n const toClean = [];\n // Key & sigma\n // key=16 -> sigma16, k=key|key\n // key=32 -> sigma32, k=key\n let l = key.length, k, sigma;\n if (l === 32) {\n k = key.slice();\n toClean.push(k);\n sigma = sigma32_32;\n }\n else if (l === 16 && allowShortKeys) {\n k = new Uint8Array(32);\n k.set(key);\n k.set(key, 16);\n sigma = sigma16_32;\n toClean.push(k);\n }\n else {\n throw new Error(`arx: invalid 32-byte key, got length=${l}`);\n }\n // Nonce\n // salsa20: 8 (8-byte counter)\n // chacha20orig: 8 (8-byte counter)\n // chacha20: 12 (4-byte counter)\n // xsalsa20: 24 (16 -> hsalsa, 8 -> old nonce)\n // xchacha20: 24 (16 -> hchacha, 8 -> old nonce)\n // Align nonce to 4 bytes\n if (!isAligned32(nonce)) {\n nonce = nonce.slice();\n toClean.push(nonce);\n }\n const k32 = u32(k);\n // hsalsa & hchacha: handle extended nonce\n if (extendNonceFn) {\n if (nonce.length !== 24)\n throw new Error(`arx: extended nonce must be 24 bytes`);\n extendNonceFn(sigma, k32, u32(nonce.subarray(0, 16)), k32);\n nonce = nonce.subarray(16);\n }\n // Handle nonce counter\n const nonceNcLen = 16 - counterLength;\n if (nonceNcLen !== nonce.length)\n throw new Error(`arx: nonce must be ${nonceNcLen} or 16 bytes`);\n // Pad counter when nonce is 64 bit\n if (nonceNcLen !== 12) {\n const nc = new Uint8Array(12);\n nc.set(nonce, counterRight ? 0 : 12 - nonce.length);\n nonce = nc;\n toClean.push(nonce);\n }\n const n32 = u32(nonce);\n runCipher(core, sigma, k32, n32, data, output, counter, rounds);\n while (toClean.length > 0)\n toClean.pop().fill(0);\n return output;\n };\n}\n//# sourceMappingURL=_arx.js.map","import { wrapCipher, createView, ensureBytes, equalBytes, setBigUint64, } from './utils.js';\nimport { poly1305 } from './_poly1305.js';\nimport { createCipher, rotl } from './_arx.js';\n// ChaCha20 stream cipher was released in 2008. ChaCha aims to increase\n// the diffusion per round, but had slightly less cryptanalysis.\n// https://cr.yp.to/chacha.html, http://cr.yp.to/chacha/chacha-20080128.pdf\n/**\n * ChaCha core function.\n */\n// prettier-ignore\nfunction chachaCore(s, k, n, out, cnt, rounds = 20) {\n let y00 = s[0], y01 = s[1], y02 = s[2], y03 = s[3], // \"expa\" \"nd 3\" \"2-by\" \"te k\"\n y04 = k[0], y05 = k[1], y06 = k[2], y07 = k[3], // Key Key Key Key\n y08 = k[4], y09 = k[5], y10 = k[6], y11 = k[7], // Key Key Key Key\n y12 = cnt, y13 = n[0], y14 = n[1], y15 = n[2]; // Counter Counter\tNonce Nonce\n // Save state to temporary variables\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n for (let r = 0; r < rounds; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n // Write output\n let oi = 0;\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\n/**\n * hchacha helper method, used primarily in xchacha, to hash\n * key and nonce into key' and nonce'.\n * Same as chachaCore, but there doesn't seem to be a way to move the block\n * out without 25% performance hit.\n */\n// prettier-ignore\nexport function hchacha(s, k, i, o32) {\n let x00 = s[0], x01 = s[1], x02 = s[2], x03 = s[3], x04 = k[0], x05 = k[1], x06 = k[2], x07 = k[3], x08 = k[4], x09 = k[5], x10 = k[6], x11 = k[7], x12 = i[0], x13 = i[1], x14 = i[2], x15 = i[3];\n for (let r = 0; r < 20; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n let oi = 0;\n o32[oi++] = x00;\n o32[oi++] = x01;\n o32[oi++] = x02;\n o32[oi++] = x03;\n o32[oi++] = x12;\n o32[oi++] = x13;\n o32[oi++] = x14;\n o32[oi++] = x15;\n}\n/**\n * Original, non-RFC chacha20 from DJB. 8-byte nonce, 8-byte counter.\n */\nexport const chacha20orig = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n allowShortKeys: true,\n});\n/**\n * ChaCha stream cipher. Conforms to RFC 8439 (IETF, TLS). 12-byte nonce, 4-byte counter.\n * With 12-byte nonce, it's not safe to use fill it with random (CSPRNG), due to collision chance.\n */\nexport const chacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n allowShortKeys: false,\n});\n/**\n * XChaCha eXtended-nonce ChaCha. 24-byte nonce.\n * With 24-byte nonce, it's safe to use fill it with random (CSPRNG).\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha\n */\nexport const xchacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n extendNonceFn: hchacha,\n allowShortKeys: false,\n});\n/**\n * Reduced 8-round chacha, described in original paper.\n */\nexport const chacha8 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 8,\n});\n/**\n * Reduced 12-round chacha, described in original paper.\n */\nexport const chacha12 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 12,\n});\nconst ZEROS16 = /* @__PURE__ */ new Uint8Array(16);\n// Pad to digest size with zeros\nconst updatePadded = (h, msg) => {\n h.update(msg);\n const left = msg.length % 16;\n if (left)\n h.update(ZEROS16.subarray(left));\n};\nconst ZEROS32 = /* @__PURE__ */ new Uint8Array(32);\nfunction computeTag(fn, key, nonce, data, AAD) {\n const authKey = fn(key, nonce, ZEROS32);\n const h = poly1305.create(authKey);\n if (AAD)\n updatePadded(h, AAD);\n updatePadded(h, data);\n const num = new Uint8Array(16);\n const view = createView(num);\n setBigUint64(view, 0, BigInt(AAD ? AAD.length : 0), true);\n setBigUint64(view, 8, BigInt(data.length), true);\n h.update(num);\n const res = h.digest();\n authKey.fill(0);\n return res;\n}\n/**\n * AEAD algorithm from RFC 8439.\n * Salsa20 and chacha (RFC 8439) use poly1305 differently.\n * We could have composed them similar to:\n * https://github.com/paulmillr/scure-base/blob/b266c73dde977b1dd7ef40ef7a23cc15aab526b3/index.ts#L250\n * But it's hard because of authKey:\n * In salsa20, authKey changes position in salsa stream.\n * In chacha, authKey can't be computed inside computeTag, it modifies the counter.\n */\nexport const _poly1305_aead = (xorStream) => (key, nonce, AAD) => {\n const tagLength = 16;\n ensureBytes(key, 32);\n ensureBytes(nonce);\n return {\n encrypt: (plaintext, output) => {\n const plength = plaintext.length;\n const clength = plength + tagLength;\n if (output) {\n ensureBytes(output, clength);\n }\n else {\n output = new Uint8Array(clength);\n }\n xorStream(key, nonce, plaintext, output, 1);\n const tag = computeTag(xorStream, key, nonce, output.subarray(0, -tagLength), AAD);\n output.set(tag, plength); // append tag\n return output;\n },\n decrypt: (ciphertext, output) => {\n const clength = ciphertext.length;\n const plength = clength - tagLength;\n if (clength < tagLength)\n throw new Error(`encrypted data must be at least ${tagLength} bytes`);\n if (output) {\n ensureBytes(output, plength);\n }\n else {\n output = new Uint8Array(plength);\n }\n const data = ciphertext.subarray(0, -tagLength);\n const passedTag = ciphertext.subarray(-tagLength);\n const tag = computeTag(xorStream, key, nonce, data, AAD);\n if (!equalBytes(passedTag, tag))\n throw new Error('invalid tag');\n xorStream(key, nonce, data, output, 1);\n return output;\n },\n };\n};\n/**\n * ChaCha20-Poly1305 from RFC 8439.\n * With 12-byte nonce, it's not safe to use fill it with random (CSPRNG), due to collision chance.\n */\nexport const chacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 12, tagLength: 16 }, _poly1305_aead(chacha20));\n/**\n * XChaCha20-Poly1305 extended-nonce chacha.\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha\n * With 24-byte nonce, it's safe to use fill it with random (CSPRNG).\n */\nexport const xchacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 24, tagLength: 16 }, _poly1305_aead(xchacha20));\n//# sourceMappingURL=chacha.js.map","import { hash as assertHash, number as assertNumber } from './_assert.js';\nimport { toBytes } from './utils.js';\nimport { hmac } from './hmac.js';\n// HKDF (RFC 5869)\n// https://soatok.blog/2021/11/17/understanding-hkdf/\n/**\n * HKDF-Extract(IKM, salt) -> PRK\n * Arguments position differs from spec (IKM is first one, since it is not optional)\n * @param hash\n * @param ikm\n * @param salt\n * @returns\n */\nexport function extract(hash, ikm, salt) {\n assertHash(hash);\n // NOTE: some libraries treat zero-length array as 'not provided';\n // we don't, since we have undefined as 'not provided'\n // https://github.com/RustCrypto/KDFs/issues/15\n if (salt === undefined)\n salt = new Uint8Array(hash.outputLen); // if not provided, it is set to a string of HashLen zeros\n return hmac(hash, toBytes(salt), toBytes(ikm));\n}\n// HKDF-Expand(PRK, info, L) -> OKM\nconst HKDF_COUNTER = /* @__PURE__ */ new Uint8Array([0]);\nconst EMPTY_BUFFER = /* @__PURE__ */ new Uint8Array();\n/**\n * HKDF-expand from the spec.\n * @param prk - a pseudorandom key of at least HashLen octets (usually, the output from the extract step)\n * @param info - optional context and application specific information (can be a zero-length string)\n * @param length - length of output keying material in octets\n */\nexport function expand(hash, prk, info, length = 32) {\n assertHash(hash);\n assertNumber(length);\n if (length > 255 * hash.outputLen)\n throw new Error('Length should be <= 255*HashLen');\n const blocks = Math.ceil(length / hash.outputLen);\n if (info === undefined)\n info = EMPTY_BUFFER;\n // first L(ength) octets of T\n const okm = new Uint8Array(blocks * hash.outputLen);\n // Re-use HMAC instance between blocks\n const HMAC = hmac.create(hash, prk);\n const HMACTmp = HMAC._cloneInto();\n const T = new Uint8Array(HMAC.outputLen);\n for (let counter = 0; counter < blocks; counter++) {\n HKDF_COUNTER[0] = counter + 1;\n // T(0) = empty string (zero length)\n // T(N) = HMAC-Hash(PRK, T(N-1) | info | N)\n HMACTmp.update(counter === 0 ? EMPTY_BUFFER : T)\n .update(info)\n .update(HKDF_COUNTER)\n .digestInto(T);\n okm.set(T, hash.outputLen * counter);\n HMAC._cloneInto(HMACTmp);\n }\n HMAC.destroy();\n HMACTmp.destroy();\n T.fill(0);\n HKDF_COUNTER.fill(0);\n return okm.slice(0, length);\n}\n/**\n * HKDF (RFC 5869): extract + expand in one step.\n * @param hash - hash function that would be used (e.g. sha256)\n * @param ikm - input keying material, the initial key\n * @param salt - optional salt value (a non-secret random value)\n * @param info - optional context and application specific information\n * @param length - length of output keying material in octets\n */\nexport const hkdf = (hash, ikm, salt, info, length) => expand(hash, extract(hash, ikm, salt), info, length);\n//# sourceMappingURL=hkdf.js.map","import { chacha20poly1305 } from '@noble/ciphers/chacha';\nimport { x25519 } from '@noble/curves/ed25519';\nimport { extract, expand } from '@noble/hashes/hkdf';\nimport { sha256 } from '@noble/hashes/sha256';\nexport const pureJsCrypto = {\n hashSHA256(data) {\n return sha256(data.subarray());\n },\n getHKDF(ck, ikm) {\n const prk = extract(sha256, ikm, ck);\n const okmU8Array = expand(sha256, prk, undefined, 96);\n const okm = okmU8Array;\n const k1 = okm.subarray(0, 32);\n const k2 = okm.subarray(32, 64);\n const k3 = okm.subarray(64, 96);\n return [k1, k2, k3];\n },\n generateX25519KeyPair() {\n const secretKey = x25519.utils.randomPrivateKey();\n const publicKey = x25519.getPublicKey(secretKey);\n return {\n publicKey,\n privateKey: secretKey\n };\n },\n generateX25519KeyPairFromSeed(seed) {\n const publicKey = x25519.getPublicKey(seed);\n return {\n publicKey,\n privateKey: seed\n };\n },\n generateX25519SharedKey(privateKey, publicKey) {\n return x25519.getSharedSecret(privateKey.subarray(), publicKey.subarray());\n },\n chaCha20Poly1305Encrypt(plaintext, nonce, ad, k) {\n return chacha20poly1305(k, nonce, ad).encrypt(plaintext.subarray());\n },\n chaCha20Poly1305Decrypt(ciphertext, nonce, ad, k, dst) {\n return chacha20poly1305(k, nonce, ad).decrypt(ciphertext.subarray(), dst);\n }\n};\n//# sourceMappingURL=js.js.map","import { pureJsCrypto } from './js.js';\nexport const defaultCrypto = pureJsCrypto;\n//# sourceMappingURL=index.browser.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { alloc as uint8ArrayAlloc, allocUnsafe as uint8ArrayAllocUnsafe } from 'uint8arrays/alloc';\nexport const uint16BEEncode = (value) => {\n const target = uint8ArrayAllocUnsafe(2);\n new DataView(target.buffer, target.byteOffset, target.byteLength).setUint16(0, value, false);\n return target;\n};\nuint16BEEncode.bytes = 2;\nexport const uint16BEDecode = (data) => {\n if (data.length < 2)\n throw RangeError('Could not decode int16BE');\n if (data instanceof Uint8Array) {\n return new DataView(data.buffer, data.byteOffset, data.byteLength).getUint16(0, false);\n }\n return data.getUint16(0);\n};\nuint16BEDecode.bytes = 2;\n// Note: IK and XX encoder usage is opposite (XX uses in stages encode0 where IK uses encode1)\nexport function encode0(message) {\n return new Uint8ArrayList(message.ne, message.ciphertext);\n}\nexport function encode1(message) {\n return new Uint8ArrayList(message.ne, message.ns, message.ciphertext);\n}\nexport function encode2(message) {\n return new Uint8ArrayList(message.ns, message.ciphertext);\n}\nexport function decode0(input) {\n if (input.length < 32) {\n throw new Error('Cannot decode stage 0 MessageBuffer: length less than 32 bytes.');\n }\n return {\n ne: input.subarray(0, 32),\n ciphertext: input.subarray(32, input.length),\n ns: uint8ArrayAlloc(0)\n };\n}\nexport function decode1(input) {\n if (input.length < 80) {\n throw new Error('Cannot decode stage 1 MessageBuffer: length less than 80 bytes.');\n }\n return {\n ne: input.subarray(0, 32),\n ns: input.subarray(32, 80),\n ciphertext: input.subarray(80, input.length)\n };\n}\nexport function decode2(input) {\n if (input.length < 48) {\n throw new Error('Cannot decode stage 2 MessageBuffer: length less than 48 bytes.');\n }\n return {\n ne: uint8ArrayAlloc(0),\n ns: input.subarray(0, 48),\n ciphertext: input.subarray(48, input.length)\n };\n}\n//# sourceMappingURL=encoder.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { NOISE_MSG_MAX_LENGTH_BYTES, NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG } from '../constants.js';\nimport { uint16BEEncode } from '../encoder.js';\nconst CHACHA_TAG_LENGTH = 16;\n// Returns generator that encrypts payload from the user\nexport function encryptStream(handshake, metrics) {\n return async function* (source) {\n for await (const chunk of source) {\n for (let i = 0; i < chunk.length; i += NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG) {\n let end = i + NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG;\n if (end > chunk.length) {\n end = chunk.length;\n }\n let data;\n if (chunk instanceof Uint8Array) {\n data = handshake.encrypt(chunk.subarray(i, end), handshake.session);\n }\n else {\n data = handshake.encrypt(chunk.sublist(i, end), handshake.session);\n }\n metrics?.encryptedPackets.increment();\n yield new Uint8ArrayList(uint16BEEncode(data.byteLength), data);\n }\n }\n };\n}\n// Decrypt received payload to the user\nexport function decryptStream(handshake, metrics) {\n return async function* (source) {\n for await (const chunk of source) {\n for (let i = 0; i < chunk.length; i += NOISE_MSG_MAX_LENGTH_BYTES) {\n let end = i + NOISE_MSG_MAX_LENGTH_BYTES;\n if (end > chunk.length) {\n end = chunk.length;\n }\n if (end - CHACHA_TAG_LENGTH < i) {\n throw new Error('Invalid chunk');\n }\n const encrypted = chunk.sublist(i, end);\n // memory allocation is not cheap so reuse the encrypted Uint8Array\n // see https://github.com/ChainSafe/js-libp2p-noise/pull/242#issue-1422126164\n // this is ok because chacha20 reads bytes one by one and don't reread after that\n // it's also tested in https://github.com/ChainSafe/as-chacha20poly1305/pull/1/files#diff-25252846b58979dcaf4e41d47b3eadd7e4f335e7fb98da6c049b1f9cd011f381R48\n const dst = chunk.subarray(i, end - CHACHA_TAG_LENGTH);\n const { plaintext: decrypted, valid } = handshake.decrypt(encrypted, handshake.session, dst);\n if (!valid) {\n metrics?.decryptErrors.increment();\n throw new Error('Failed to validate decrypted chunk');\n }\n metrics?.decryptedPackets.increment();\n yield decrypted;\n }\n }\n };\n}\n//# sourceMappingURL=streaming.js.map","export class UnexpectedPeerError extends Error {\n code;\n constructor(message = 'Unexpected Peer') {\n super(message);\n this.code = UnexpectedPeerError.code;\n }\n static code = 'ERR_UNEXPECTED_PEER';\n}\nexport class InvalidCryptoExchangeError extends Error {\n code;\n constructor(message = 'Invalid crypto exchange') {\n super(message);\n this.code = InvalidCryptoExchangeError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_EXCHANGE';\n}\n//# sourceMappingURL=errors.js.map","import 'node-forge/lib/util.js';\nimport 'node-forge/lib/jsbn.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nexport function bigIntegerToUintBase64url(num, len) {\n // Call `.abs()` to convert to unsigned\n let buf = Uint8Array.from(num.abs().toByteArray()); // toByteArray converts to big endian\n // toByteArray() gives us back a signed array, which will include a leading 0\n // byte if the most significant bit of the number is 1:\n // https://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-integer\n // Our number will always be positive so we should remove the leading padding.\n buf = buf[0] === 0 ? buf.subarray(1) : buf;\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return uint8ArrayToString(buf, 'base64url');\n}\n// Convert a base64url encoded string to a BigInteger\nexport function base64urlToBigInteger(str) {\n const buf = base64urlToBuffer(str);\n return new forge.jsbn.BigInteger(uint8ArrayToString(buf, 'base16'), 16);\n}\nexport function base64urlToBuffer(str, len) {\n let buf = uint8ArrayFromString(str, 'base64urlpad');\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return buf;\n}\nexport function isPromise(thing) {\n if (thing == null) {\n return false;\n }\n return typeof thing.then === 'function' &&\n typeof thing.catch === 'function' &&\n typeof thing.finally === 'function';\n}\n//# sourceMappingURL=util.js.map","import { ed25519 as ed } from '@noble/curves/ed25519';\nconst PUBLIC_KEY_BYTE_LENGTH = 32;\nconst PRIVATE_KEY_BYTE_LENGTH = 64; // private key is actually 32 bytes but for historical reasons we concat private and public keys\nconst KEYS_BYTE_LENGTH = 32;\nexport { PUBLIC_KEY_BYTE_LENGTH as publicKeyLength };\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n // the actual private key (32 bytes)\n const privateKeyRaw = ed.utils.randomPrivateKey();\n const publicKey = ed.getPublicKey(privateKeyRaw);\n // concatenated the public key to the private key\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\n/**\n * Generate keypair from a 32 byte uint8array\n */\nexport function generateKeyFromSeed(seed) {\n if (seed.length !== KEYS_BYTE_LENGTH) {\n throw new TypeError('\"seed\" must be 32 bytes in length.');\n }\n else if (!(seed instanceof Uint8Array)) {\n throw new TypeError('\"seed\" must be a node.js Buffer, or Uint8Array.');\n }\n // based on node forges algorithm, the seed is used directly as private key\n const privateKeyRaw = seed;\n const publicKey = ed.getPublicKey(privateKeyRaw);\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\nexport function hashAndSign(privateKey, msg) {\n const privateKeyRaw = privateKey.subarray(0, KEYS_BYTE_LENGTH);\n return ed.sign(msg instanceof Uint8Array ? msg : msg.subarray(), privateKeyRaw);\n}\nexport function hashAndVerify(publicKey, sig, msg) {\n return ed.verify(sig, msg instanceof Uint8Array ? msg : msg.subarray(), publicKey);\n}\nfunction concatKeys(privateKeyRaw, publicKey) {\n const privateKey = new Uint8Array(PRIVATE_KEY_BYTE_LENGTH);\n for (let i = 0; i < KEYS_BYTE_LENGTH; i++) {\n privateKey[i] = privateKeyRaw[i];\n privateKey[KEYS_BYTE_LENGTH + i] = publicKey[i];\n }\n return privateKey;\n}\n//# sourceMappingURL=ed25519-browser.js.map","/* eslint-env browser */\n// Check native crypto exists and is enabled (In insecure context `self.crypto`\n// exists but `self.crypto.subtle` does not).\nexport default {\n get(win = globalThis) {\n const nativeCrypto = win.crypto;\n if (nativeCrypto == null || nativeCrypto.subtle == null) {\n throw Object.assign(new Error('Missing Web Crypto API. ' +\n 'The most likely cause of this error is that this page is being accessed ' +\n 'from an insecure context (i.e. not HTTPS). For more information and ' +\n 'possible resolutions see ' +\n 'https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api'), { code: 'ERR_MISSING_WEB_CRYPTO' });\n }\n return nativeCrypto;\n }\n};\n//# sourceMappingURL=webcrypto.js.map","import { concat } from 'uint8arrays/concat';\nimport { fromString } from 'uint8arrays/from-string';\nimport webcrypto from '../webcrypto.js';\n// WebKit on Linux does not support deriving a key from an empty PBKDF2 key.\n// So, as a workaround, we provide the generated key as a constant. We test that\n// this generated key is accurate in test/workaround.spec.ts\n// Generated via:\n// await crypto.subtle.exportKey('jwk',\n// await crypto.subtle.deriveKey(\n// { name: 'PBKDF2', salt: new Uint8Array(16), iterations: 32767, hash: { name: 'SHA-256' } },\n// await crypto.subtle.importKey('raw', new Uint8Array(0), { name: 'PBKDF2' }, false, ['deriveKey']),\n// { name: 'AES-GCM', length: 128 }, true, ['encrypt', 'decrypt'])\n// )\nexport const derivedEmptyPasswordKey = { alg: 'A128GCM', ext: true, k: 'scm9jmO_4BJAgdwWGVulLg', key_ops: ['encrypt', 'decrypt'], kty: 'oct' };\n// Based off of code from https://github.com/luke-park/SecureCompatibleEncryptionExamples\nexport function create(opts) {\n const algorithm = opts?.algorithm ?? 'AES-GCM';\n let keyLength = opts?.keyLength ?? 16;\n const nonceLength = opts?.nonceLength ?? 12;\n const digest = opts?.digest ?? 'SHA-256';\n const saltLength = opts?.saltLength ?? 16;\n const iterations = opts?.iterations ?? 32767;\n const crypto = webcrypto.get();\n keyLength *= 8; // Browser crypto uses bits instead of bytes\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to encrypt the data.\n */\n async function encrypt(data, password) {\n const salt = crypto.getRandomValues(new Uint8Array(saltLength));\n const nonce = crypto.getRandomValues(new Uint8Array(nonceLength));\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n }\n }\n else {\n // Derive a key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n // Encrypt the string.\n const ciphertext = await crypto.subtle.encrypt(aesGcm, cryptoKey, data);\n return concat([salt, aesGcm.iv, new Uint8Array(ciphertext)]);\n }\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to decrypt the data. The options used to create\n * this decryption cipher must be the same as those used to create\n * the encryption cipher.\n */\n async function decrypt(data, password) {\n const salt = data.subarray(0, saltLength);\n const nonce = data.subarray(saltLength, saltLength + nonceLength);\n const ciphertext = data.subarray(saltLength + nonceLength);\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['decrypt']);\n }\n }\n else {\n // Derive the key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n // Decrypt the string.\n const plaintext = await crypto.subtle.decrypt(aesGcm, cryptoKey, ciphertext);\n return new Uint8Array(plaintext);\n }\n const cipher = {\n encrypt,\n decrypt\n };\n return cipher;\n}\n//# sourceMappingURL=aes-gcm.browser.js.map","import { base64 } from 'multiformats/bases/base64';\nimport * as ciphers from '../ciphers/aes-gcm.js';\n/**\n * Exports the given PrivateKey as a base64 encoded string.\n * The PrivateKey is encrypted via a password derived PBKDF2 key\n * leveraging the aes-gcm cipher algorithm.\n */\nexport async function exporter(privateKey, password) {\n const cipher = ciphers.create();\n const encryptedKey = await cipher.encrypt(privateKey, password);\n return base64.encode(encryptedKey);\n}\n//# sourceMappingURL=exporter.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var KeyType;\n(function (KeyType) {\n KeyType[\"RSA\"] = \"RSA\";\n KeyType[\"Ed25519\"] = \"Ed25519\";\n KeyType[\"Secp256k1\"] = \"Secp256k1\";\n})(KeyType || (KeyType = {}));\nvar __KeyTypeValues;\n(function (__KeyTypeValues) {\n __KeyTypeValues[__KeyTypeValues[\"RSA\"] = 0] = \"RSA\";\n __KeyTypeValues[__KeyTypeValues[\"Ed25519\"] = 1] = \"Ed25519\";\n __KeyTypeValues[__KeyTypeValues[\"Secp256k1\"] = 2] = \"Secp256k1\";\n})(__KeyTypeValues || (__KeyTypeValues = {}));\n(function (KeyType) {\n KeyType.codec = () => {\n return enumeration(__KeyTypeValues);\n };\n})(KeyType || (KeyType = {}));\nexport var PublicKey;\n(function (PublicKey) {\n let _codec;\n PublicKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PublicKey.encode = (obj) => {\n return encodeMessage(obj, PublicKey.codec());\n };\n PublicKey.decode = (buf) => {\n return decodeMessage(buf, PublicKey.codec());\n };\n})(PublicKey || (PublicKey = {}));\nexport var PrivateKey;\n(function (PrivateKey) {\n let _codec;\n PrivateKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PrivateKey.encode = (obj) => {\n return encodeMessage(obj, PrivateKey.codec());\n };\n PrivateKey.decode = (buf) => {\n return decodeMessage(buf, PrivateKey.codec());\n };\n})(PrivateKey || (PrivateKey = {}));\n//# sourceMappingURL=keys.js.map","import { CodeError } from '@libp2p/interface';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { isPromise } from '../util.js';\nimport * as crypto from './ed25519.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nexport class Ed25519PublicKey {\n _key;\n constructor(key) {\n this._key = ensureKey(key, crypto.publicKeyLength);\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class Ed25519PrivateKey {\n _key;\n _publicKey;\n // key - 64 byte Uint8Array containing private key\n // publicKey - 32 byte Uint8Array containing public key\n constructor(key, publicKey) {\n this._key = ensureKey(key, crypto.privateKeyLength);\n this._publicKey = ensureKey(publicKey, crypto.publicKeyLength);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Ed25519PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the identity multihash containing its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n *\n * @returns {Promise}\n */\n async id() {\n const encoding = identity.digest(this.public.bytes);\n return base58btc.encode(encoding.bytes).substring(1);\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalEd25519PrivateKey(bytes) {\n // Try the old, redundant public key version\n if (bytes.length > crypto.privateKeyLength) {\n bytes = ensureKey(bytes, crypto.privateKeyLength + crypto.publicKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.privateKeyLength, bytes.length);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n }\n bytes = ensureKey(bytes, crypto.privateKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.publicKeyLength);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n}\nexport function unmarshalEd25519PublicKey(bytes) {\n bytes = ensureKey(bytes, crypto.publicKeyLength);\n return new Ed25519PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const { privateKey, publicKey } = crypto.generateKey();\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nexport async function generateKeyPairFromSeed(seed) {\n const { privateKey, publicKey } = crypto.generateKeyFromSeed(seed);\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nfunction ensureKey(key, length) {\n key = Uint8Array.from(key ?? []);\n if (key.length !== length) {\n throw new CodeError(`Key must be a Uint8Array of length ${length}, got ${key.length}`, 'ERR_INVALID_KEY_TYPE');\n }\n return key;\n}\n//# sourceMappingURL=ed25519-class.js.map","import { CodeError } from '@libp2p/interface';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { base64urlToBuffer } from '../util.js';\nimport webcrypto from '../webcrypto.js';\nconst bits = {\n 'P-256': 256,\n 'P-384': 384,\n 'P-521': 521\n};\nconst curveTypes = Object.keys(bits);\nconst names = curveTypes.join(' / ');\nexport async function generateEphmeralKeyPair(curve) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'ECDH',\n namedCurve: curve\n }, true, ['deriveBits']);\n // forcePrivate is used for testing only\n const genSharedKey = async (theirPub, forcePrivate) => {\n let privateKey;\n if (forcePrivate != null) {\n privateKey = await webcrypto.get().subtle.importKey('jwk', unmarshalPrivateKey(curve, forcePrivate), {\n name: 'ECDH',\n namedCurve: curve\n }, false, ['deriveBits']);\n }\n else {\n privateKey = pair.privateKey;\n }\n const key = await webcrypto.get().subtle.importKey('jwk', unmarshalPublicKey(curve, theirPub), {\n name: 'ECDH',\n namedCurve: curve\n }, false, []);\n const buffer = await webcrypto.get().subtle.deriveBits({\n name: 'ECDH',\n // @ts-expect-error namedCurve is missing from the types\n namedCurve: curve,\n public: key\n }, privateKey, bits[curve]);\n return new Uint8Array(buffer, 0, buffer.byteLength);\n };\n const publicKey = await webcrypto.get().subtle.exportKey('jwk', pair.publicKey);\n const ecdhKey = {\n key: marshalPublicKey(publicKey),\n genSharedKey\n };\n return ecdhKey;\n}\nconst curveLengths = {\n 'P-256': 32,\n 'P-384': 48,\n 'P-521': 66\n};\n// Marshal converts a jwk encoded ECDH public key into the\n// form specified in section 4.3.6 of ANSI X9.62. (This is the format\n// go-ipfs uses)\nfunction marshalPublicKey(jwk) {\n if (jwk.crv == null || jwk.x == null || jwk.y == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n if (jwk.crv !== 'P-256' && jwk.crv !== 'P-384' && jwk.crv !== 'P-521') {\n throw new CodeError(`Unknown curve: ${jwk.crv}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[jwk.crv];\n return uint8ArrayConcat([\n Uint8Array.from([4]), // uncompressed point\n base64urlToBuffer(jwk.x, byteLen),\n base64urlToBuffer(jwk.y, byteLen)\n ], 1 + byteLen * 2);\n}\n// Unmarshal converts a point, serialized by Marshal, into an jwk encoded key\nfunction unmarshalPublicKey(curve, key) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[curve];\n if (!uint8ArrayEquals(key.subarray(0, 1), Uint8Array.from([4]))) {\n throw new CodeError('Cannot unmarshal public key - invalid key format', 'ERR_INVALID_KEY_FORMAT');\n }\n return {\n kty: 'EC',\n crv: curve,\n x: uint8ArrayToString(key.subarray(1, byteLen + 1), 'base64url'),\n y: uint8ArrayToString(key.subarray(1 + byteLen), 'base64url'),\n ext: true\n };\n}\nconst unmarshalPrivateKey = (curve, key) => ({\n ...unmarshalPublicKey(curve, key.public),\n d: uint8ArrayToString(key.private, 'base64url')\n});\n//# sourceMappingURL=ecdh-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { randomBytes as randB } from '@noble/hashes/utils';\n/**\n * Generates a Uint8Array with length `number` populated by random bytes\n */\nexport default function randomBytes(length) {\n if (isNaN(length) || length <= 0) {\n throw new CodeError('random bytes length must be a Number bigger than 0', 'ERR_INVALID_LENGTH');\n }\n return randB(length);\n}\n//# sourceMappingURL=random-bytes.js.map","import 'node-forge/lib/rsa.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { base64urlToBigInteger } from '../util.js';\nfunction convert(key, types) {\n return types.map(t => base64urlToBigInteger(key[t]));\n}\nexport function jwk2priv(key) {\n return forge.pki.setRsaPrivateKey(...convert(key, ['n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi']));\n}\nexport function jwk2pub(key) {\n return forge.pki.setRsaPublicKey(...convert(key, ['n', 'e']));\n}\n//# sourceMappingURL=jwk2pem.js.map","import 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/rsa.js';\nimport { CodeError } from '@libp2p/interface';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { bigIntegerToUintBase64url, base64urlToBigInteger } from './../util.js';\n// Convert a PKCS#1 in ASN1 DER format to a JWK key\nexport function pkcs1ToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n // https://tools.ietf.org/html/rfc7518#section-6.3.1\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(privateKey.n),\n e: bigIntegerToUintBase64url(privateKey.e),\n d: bigIntegerToUintBase64url(privateKey.d),\n p: bigIntegerToUintBase64url(privateKey.p),\n q: bigIntegerToUintBase64url(privateKey.q),\n dp: bigIntegerToUintBase64url(privateKey.dP),\n dq: bigIntegerToUintBase64url(privateKey.dQ),\n qi: bigIntegerToUintBase64url(privateKey.qInv),\n alg: 'RS256'\n };\n}\n// Convert a JWK key into PKCS#1 in ASN1 DER format\nexport function jwkToPkcs1(jwk) {\n if (jwk.n == null || jwk.e == null || jwk.d == null || jwk.p == null || jwk.q == null || jwk.dp == null || jwk.dq == null || jwk.qi == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.privateKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e),\n d: base64urlToBigInteger(jwk.d),\n p: base64urlToBigInteger(jwk.p),\n q: base64urlToBigInteger(jwk.q),\n dP: base64urlToBigInteger(jwk.dp),\n dQ: base64urlToBigInteger(jwk.dq),\n qInv: base64urlToBigInteger(jwk.qi)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n// Convert a PKCIX in ASN1 DER format to a JWK key\nexport function pkixToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const publicKey = forge.pki.publicKeyFromAsn1(asn1);\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(publicKey.n),\n e: bigIntegerToUintBase64url(publicKey.e)\n };\n}\n// Convert a JWK key to PKCIX in ASN1 DER format\nexport function jwkToPkix(jwk) {\n if (jwk.n == null || jwk.e == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.publicKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n//# sourceMappingURL=rsa-utils.js.map","import { CodeError } from '@libp2p/interface';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport randomBytes from '../random-bytes.js';\nimport webcrypto from '../webcrypto.js';\nimport { jwk2pub, jwk2priv } from './jwk2pem.js';\nimport * as utils from './rsa-utils.js';\nexport { utils };\nexport async function generateKey(bits) {\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: 'SHA-256' }\n }, true, ['sign', 'verify']);\n const keys = await exportKey(pair);\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\n// Takes a jwk key\nexport async function unmarshalPrivateKey(key) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['sign']);\n const pair = [\n privateKey,\n await derivePublicFromPrivate(key)\n ];\n const keys = await exportKey({\n privateKey: pair[0],\n publicKey: pair[1]\n });\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\nexport { randomBytes as getRandomValues };\nexport async function hashAndSign(key, msg) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['sign']);\n const sig = await webcrypto.get().subtle.sign({ name: 'RSASSA-PKCS1-v1_5' }, privateKey, msg instanceof Uint8Array ? msg : msg.subarray());\n return new Uint8Array(sig, 0, sig.byteLength);\n}\nexport async function hashAndVerify(key, sig, msg) {\n const publicKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['verify']);\n return webcrypto.get().subtle.verify({ name: 'RSASSA-PKCS1-v1_5' }, publicKey, sig, msg instanceof Uint8Array ? msg : msg.subarray());\n}\nasync function exportKey(pair) {\n if (pair.privateKey == null || pair.publicKey == null) {\n throw new CodeError('Private and public key are required', 'ERR_INVALID_PARAMETERS');\n }\n return Promise.all([\n webcrypto.get().subtle.exportKey('jwk', pair.privateKey),\n webcrypto.get().subtle.exportKey('jwk', pair.publicKey)\n ]);\n}\nasync function derivePublicFromPrivate(jwKey) {\n return webcrypto.get().subtle.importKey('jwk', {\n kty: jwKey.kty,\n n: jwKey.n,\n e: jwKey.e\n }, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['verify']);\n}\n/*\n\nRSA encryption/decryption for the browser with webcrypto workaround\n\"bloody dark magic. webcrypto's why.\"\n\nExplanation:\n - Convert JWK to nodeForge\n - Convert msg Uint8Array to nodeForge buffer: ByteBuffer is a \"binary-string backed buffer\", so let's make our Uint8Array a binary string\n - Convert resulting nodeForge buffer to Uint8Array: it returns a binary string, turn that into a Uint8Array\n\n*/\nfunction convertKey(key, pub, msg, handle) {\n const fkey = pub ? jwk2pub(key) : jwk2priv(key);\n const fmsg = uint8ArrayToString(msg instanceof Uint8Array ? msg : msg.subarray(), 'ascii');\n const fomsg = handle(fmsg, fkey);\n return uint8ArrayFromString(fomsg, 'ascii');\n}\nexport function encrypt(key, msg) {\n return convertKey(key, true, msg, (msg, key) => key.encrypt(msg));\n}\nexport function decrypt(key, msg) {\n return convertKey(key, false, msg, (msg, key) => key.decrypt(msg));\n}\nexport function keySize(jwk) {\n if (jwk.kty !== 'RSA') {\n throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE');\n }\n else if (jwk.n == null) {\n throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS');\n }\n const bytes = uint8ArrayFromString(jwk.n, 'base64url');\n return bytes.length * 8;\n}\n//# sourceMappingURL=rsa-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport 'node-forge/lib/sha512.js';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nimport * as crypto from './rsa.js';\nexport const MAX_KEY_SIZE = 8192;\nexport class RsaPublicKey {\n _key;\n constructor(key) {\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.utils.jwkToPkix(this._key);\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n encrypt(bytes) {\n return crypto.encrypt(this._key, bytes);\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class RsaPrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey;\n }\n genSecret() {\n return crypto.getRandomValues(16);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n if (this._publicKey == null) {\n throw new CodeError('public key not provided', 'ERR_PUBKEY_NOT_PROVIDED');\n }\n return new RsaPublicKey(this._publicKey);\n }\n decrypt(bytes) {\n return crypto.decrypt(this._key, bytes);\n }\n marshal() {\n return crypto.utils.jwkToPkcs1(this._key);\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected PEM format\n */\n async export(password, format = 'pkcs-8') {\n if (format === 'pkcs-8') {\n const buffer = new forge.util.ByteBuffer(this.marshal());\n const asn1 = forge.asn1.fromDer(buffer);\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n const options = {\n algorithm: 'aes256',\n count: 10000,\n saltSize: 128 / 8,\n prfAlgorithm: 'sha512'\n };\n return forge.pki.encryptRsaPrivateKey(privateKey, password, options);\n }\n else if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport async function unmarshalRsaPrivateKey(bytes) {\n const jwk = crypto.utils.pkcs1ToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport function unmarshalRsaPublicKey(bytes) {\n const jwk = crypto.utils.pkixToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n return new RsaPublicKey(jwk);\n}\nexport async function fromJwk(jwk) {\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport async function generateKeyPair(bits) {\n if (bits > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.generateKey(bits);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\n//# sourceMappingURL=rsa-class.js.map","import { CodeError } from '@libp2p/interface';\nimport { secp256k1 as secp } from '@noble/curves/secp256k1';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { isPromise } from '../util.js';\nconst PRIVATE_KEY_BYTE_LENGTH = 32;\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n return secp.utils.randomPrivateKey();\n}\n/**\n * Hash and sign message with private key\n */\nexport function hashAndSign(key, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.sign(digest, key).toDERRawBytes())\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.sign(p.digest, key).toDERRawBytes();\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\n/**\n * Hash message and verify signature with public key\n */\nexport function hashAndVerify(key, sig, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.verify(sig, digest, key))\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.verify(sig, p.digest, key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\nexport function compressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(true);\n return point;\n}\nexport function decompressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(false);\n return point;\n}\nexport function validatePrivateKey(key) {\n try {\n secp.getPublicKey(key, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\nexport function validatePublicKey(key) {\n try {\n secp.ProjectivePoint.fromHex(key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PUBLIC_KEY');\n }\n}\nexport function computePublicKey(privateKey) {\n try {\n return secp.getPublicKey(privateKey, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\n//# sourceMappingURL=secp256k1-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as keysProtobuf from './keys.js';\nimport * as crypto from './secp256k1.js';\nexport class Secp256k1PublicKey {\n _key;\n constructor(key) {\n crypto.validatePublicKey(key);\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.compressPublicKey(this._key);\n }\n get bytes() {\n return keysProtobuf.PublicKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n}\nexport class Secp256k1PrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey ?? crypto.computePublicKey(key);\n crypto.validatePrivateKey(this._key);\n crypto.validatePublicKey(this._publicKey);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Secp256k1PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return keysProtobuf.PrivateKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalSecp256k1PrivateKey(bytes) {\n return new Secp256k1PrivateKey(bytes);\n}\nexport function unmarshalSecp256k1PublicKey(bytes) {\n return new Secp256k1PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const privateKeyBytes = crypto.generateKey();\n return new Secp256k1PrivateKey(privateKeyBytes);\n}\n//# sourceMappingURL=secp256k1-class.js.map","/**\n * @packageDocumentation\n *\n * **Supported Key Types**\n *\n * The {@link generateKeyPair}, {@link marshalPublicKey}, and {@link marshalPrivateKey} functions accept a string `type` argument.\n *\n * Currently the `'RSA'`, `'ed25519'`, and `secp256k1` types are supported, although ed25519 and secp256k1 keys support only signing and verification of messages.\n *\n * For encryption / decryption support, RSA keys should be used.\n */\nimport 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/pbe.js';\nimport { CodeError } from '@libp2p/interface';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport * as Ed25519 from './ed25519-class.js';\nimport generateEphemeralKeyPair from './ephemeral-keys.js';\nimport { importer } from './importer.js';\nimport { keyStretcher } from './key-stretcher.js';\nimport * as keysPBM from './keys.js';\nimport * as RSA from './rsa-class.js';\nimport * as Secp256k1 from './secp256k1-class.js';\nexport { keyStretcher };\nexport { generateEphemeralKeyPair };\nexport { keysPBM };\nexport const supportedKeys = {\n rsa: RSA,\n ed25519: Ed25519,\n secp256k1: Secp256k1\n};\nfunction unsupportedKey(type) {\n const supported = Object.keys(supportedKeys).join(' / ');\n return new CodeError(`invalid or unsupported key type ${type}. Must be ${supported}`, 'ERR_UNSUPPORTED_KEY_TYPE');\n}\nfunction typeToKey(type) {\n type = type.toLowerCase();\n if (type === 'rsa' || type === 'ed25519' || type === 'secp256k1') {\n return supportedKeys[type];\n }\n throw unsupportedKey(type);\n}\n/**\n * Generates a keypair of the given type and bitsize\n *\n * @param type\n * @param bits - Minimum of 1024\n */\nexport async function generateKeyPair(type, bits) {\n return typeToKey(type).generateKeyPair(bits ?? 2048);\n}\n/**\n * Generates a keypair of the given type and bitsize.\n *\n * Seed is a 32 byte uint8array\n */\nexport async function generateKeyPairFromSeed(type, seed, bits) {\n if (type.toLowerCase() !== 'ed25519') {\n throw new CodeError('Seed key derivation is unimplemented for RSA or secp256k1', 'ERR_UNSUPPORTED_KEY_DERIVATION_TYPE');\n }\n return Ed25519.generateKeyPairFromSeed(seed);\n}\n/**\n * Converts a protobuf serialized public key into its representative object\n */\nexport function unmarshalPublicKey(buf) {\n const decoded = keysPBM.PublicKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPublicKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PublicKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PublicKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'unknown');\n }\n}\n/**\n * Converts a public key object into a protobuf serialized public key\n */\nexport function marshalPublicKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts a protobuf serialized private key into its representative object\n */\nexport async function unmarshalPrivateKey(buf) {\n const decoded = keysPBM.PrivateKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPrivateKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PrivateKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'RSA');\n }\n}\n/**\n * Converts a private key object into a protobuf serialized private key\n */\nexport function marshalPrivateKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts an exported private key into its representative object.\n *\n * Supported formats are 'pem' (RSA only) and 'libp2p-key'.\n */\nexport async function importKey(encryptedKey, password) {\n try {\n const key = await importer(encryptedKey, password);\n return await unmarshalPrivateKey(key);\n }\n catch (_) {\n // Ignore and try the old pem decrypt\n }\n // Only rsa supports pem right now\n const key = forge.pki.decryptRsaPrivateKey(encryptedKey, password);\n if (key === null) {\n throw new CodeError('Cannot read the key, most likely the password is wrong or not a RSA key', 'ERR_CANNOT_DECRYPT_PEM');\n }\n let der = forge.asn1.toDer(forge.pki.privateKeyToAsn1(key));\n der = uint8ArrayFromString(der.getBytes(), 'ascii');\n return supportedKeys.rsa.unmarshalRsaPrivateKey(der);\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { decodeMessage, encodeMessage, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var NoiseExtensions;\n(function (NoiseExtensions) {\n let _codec;\n NoiseExtensions.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.webtransportCerthashes != null) {\n for (const value of obj.webtransportCerthashes) {\n w.uint32(10);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n webtransportCerthashes: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.webtransportCerthashes.push(reader.bytes());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n NoiseExtensions.encode = (obj) => {\n return encodeMessage(obj, NoiseExtensions.codec());\n };\n NoiseExtensions.decode = (buf) => {\n return decodeMessage(buf, NoiseExtensions.codec());\n };\n})(NoiseExtensions || (NoiseExtensions = {}));\nexport var NoiseHandshakePayload;\n(function (NoiseHandshakePayload) {\n let _codec;\n NoiseHandshakePayload.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.identityKey != null && obj.identityKey.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.identityKey);\n }\n if ((obj.identitySig != null && obj.identitySig.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.identitySig);\n }\n if (obj.extensions != null) {\n w.uint32(34);\n NoiseExtensions.codec().encode(obj.extensions, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n identityKey: uint8ArrayAlloc(0),\n identitySig: uint8ArrayAlloc(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.identityKey = reader.bytes();\n break;\n }\n case 2: {\n obj.identitySig = reader.bytes();\n break;\n }\n case 4: {\n obj.extensions = NoiseExtensions.codec().decode(reader, reader.uint32());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n NoiseHandshakePayload.encode = (obj) => {\n return encodeMessage(obj, NoiseHandshakePayload.codec());\n };\n NoiseHandshakePayload.decode = (buf) => {\n return decodeMessage(buf, NoiseHandshakePayload.codec());\n };\n})(NoiseHandshakePayload || (NoiseHandshakePayload = {}));\n//# sourceMappingURL=payload.js.map","import { unmarshalPublicKey, unmarshalPrivateKey } from '@libp2p/crypto/keys';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { isUint8ArrayList } from 'uint8arraylist';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { NoiseHandshakePayload } from './proto/payload.js';\nexport async function getPayload(localPeer, staticPublicKey, extensions) {\n const signedPayload = await signPayload(localPeer, getHandshakePayload(staticPublicKey));\n if (localPeer.publicKey == null) {\n throw new Error('PublicKey was missing from local PeerId');\n }\n return createHandshakePayload(localPeer.publicKey, signedPayload, extensions);\n}\nexport function createHandshakePayload(libp2pPublicKey, signedPayload, extensions) {\n return NoiseHandshakePayload.encode({\n identityKey: libp2pPublicKey,\n identitySig: signedPayload,\n extensions: extensions ?? { webtransportCerthashes: [] }\n }).subarray();\n}\nexport async function signPayload(peerId, payload) {\n if (peerId.privateKey == null) {\n throw new Error('PrivateKey was missing from PeerId');\n }\n const privateKey = await unmarshalPrivateKey(peerId.privateKey);\n return privateKey.sign(payload);\n}\nexport async function getPeerIdFromPayload(payload) {\n return peerIdFromKeys(payload.identityKey);\n}\nexport function decodePayload(payload) {\n return NoiseHandshakePayload.decode(payload);\n}\nexport function getHandshakePayload(publicKey) {\n const prefix = uint8ArrayFromString('noise-libp2p-static-key:');\n if (publicKey instanceof Uint8Array) {\n return uint8ArrayConcat([prefix, publicKey], prefix.length + publicKey.length);\n }\n publicKey.prepend(prefix);\n return publicKey;\n}\n/**\n * Verifies signed payload, throws on any irregularities.\n *\n * @param {bytes} noiseStaticKey - owner's noise static key\n * @param {bytes} payload - decoded payload\n * @param {PeerId} remotePeer - owner's libp2p peer ID\n * @returns {Promise} - peer ID of payload owner\n */\nexport async function verifySignedPayload(noiseStaticKey, payload, remotePeer) {\n // Unmarshaling from PublicKey protobuf\n const payloadPeerId = await peerIdFromKeys(payload.identityKey);\n if (!payloadPeerId.equals(remotePeer)) {\n throw new Error(`Payload identity key ${payloadPeerId.toString()} does not match expected remote peer ${remotePeer.toString()}`);\n }\n const generatedPayload = getHandshakePayload(noiseStaticKey);\n if (payloadPeerId.publicKey == null) {\n throw new Error('PublicKey was missing from PeerId');\n }\n if (payload.identitySig == null) {\n throw new Error('Signature was missing from message');\n }\n const publicKey = unmarshalPublicKey(payloadPeerId.publicKey);\n const valid = await publicKey.verify(generatedPayload, payload.identitySig);\n if (!valid) {\n throw new Error(\"Static key doesn't match to peer that signed payload!\");\n }\n return payloadPeerId;\n}\nexport function isValidPublicKey(pk) {\n if (!(pk instanceof Uint8Array) && !(isUint8ArrayList(pk))) {\n return false;\n }\n if (pk.byteLength !== 32) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=utils.js.map","import { allocUnsafe } from '#alloc';\nimport { asUint8Array } from '#util/as-uint8array';\n/**\n * Returns the xor distance between two Uint8Arrays\n */\nexport function xor(a, b) {\n if (a.length !== b.length) {\n throw new Error('Inputs should have the same length');\n }\n const result = allocUnsafe(a.length);\n for (let i = 0; i < a.length; i++) {\n result[i] = a[i] ^ b[i];\n }\n return asUint8Array(result);\n}\n//# sourceMappingURL=xor.js.map","import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport const MIN_NONCE = 0;\n// For performance reasons, the nonce is represented as a JS `number`\n// Although JS `number` can safely represent integers up to 2 ** 53 - 1, we choose to only use\n// 4 bytes to store the data for performance reason.\n// This is a slight deviation from the noise spec, which describes the max nonce as 2 ** 64 - 2\n// The effect is that this implementation will need a new handshake to be performed after fewer messages are exchanged than other implementations with full uint64 nonces.\n// this MAX_NONCE is still a large number of messages, so the practical effect of this is negligible.\nexport const MAX_NONCE = 0xffffffff;\nconst ERR_MAX_NONCE = 'Cipherstate has reached maximum n, a new handshake must be performed';\n/**\n * The nonce is an uint that's increased over time.\n * Maintaining different representations help improve performance.\n */\nexport class Nonce {\n n;\n bytes;\n view;\n constructor(n = MIN_NONCE) {\n this.n = n;\n this.bytes = uint8ArrayAlloc(12);\n this.view = new DataView(this.bytes.buffer, this.bytes.byteOffset, this.bytes.byteLength);\n this.view.setUint32(4, n, true);\n }\n increment() {\n this.n++;\n // Even though we're treating the nonce as 8 bytes, RFC7539 specifies 12 bytes for a nonce.\n this.view.setUint32(4, this.n, true);\n }\n getBytes() {\n return this.bytes;\n }\n getUint64() {\n return this.n;\n }\n assertValue() {\n if (this.n > MAX_NONCE) {\n throw new Error(ERR_MAX_NONCE);\n }\n }\n}\n//# sourceMappingURL=nonce.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { Nonce } from '../nonce.js';\nexport class AbstractHandshake {\n crypto;\n log;\n constructor(components, crypto) {\n this.log = components.logger.forComponent('libp2p:noise:abstract-handshake');\n this.crypto = crypto;\n }\n encryptWithAd(cs, ad, plaintext) {\n const e = this.encrypt(cs.k, cs.n, ad, plaintext);\n cs.n.increment();\n return e;\n }\n decryptWithAd(cs, ad, ciphertext, dst) {\n const { plaintext, valid } = this.decrypt(cs.k, cs.n, ad, ciphertext, dst);\n if (valid)\n cs.n.increment();\n return { plaintext, valid };\n }\n // Cipher state related\n hasKey(cs) {\n return !this.isEmptyKey(cs.k);\n }\n createEmptyKey() {\n return uint8ArrayAlloc(32);\n }\n isEmptyKey(k) {\n const emptyKey = this.createEmptyKey();\n return uint8ArrayEquals(emptyKey, k);\n }\n encrypt(k, n, ad, plaintext) {\n n.assertValue();\n return this.crypto.chaCha20Poly1305Encrypt(plaintext, n.getBytes(), ad, k);\n }\n encryptAndHash(ss, plaintext) {\n let ciphertext;\n if (this.hasKey(ss.cs)) {\n ciphertext = this.encryptWithAd(ss.cs, ss.h, plaintext);\n }\n else {\n ciphertext = plaintext;\n }\n this.mixHash(ss, ciphertext);\n return ciphertext;\n }\n decrypt(k, n, ad, ciphertext, dst) {\n n.assertValue();\n const encryptedMessage = this.crypto.chaCha20Poly1305Decrypt(ciphertext, n.getBytes(), ad, k, dst);\n if (encryptedMessage) {\n return {\n plaintext: encryptedMessage,\n valid: true\n };\n }\n else {\n return {\n plaintext: uint8ArrayAlloc(0),\n valid: false\n };\n }\n }\n decryptAndHash(ss, ciphertext) {\n let plaintext;\n let valid = true;\n if (this.hasKey(ss.cs)) {\n ({ plaintext, valid } = this.decryptWithAd(ss.cs, ss.h, ciphertext));\n }\n else {\n plaintext = ciphertext;\n }\n this.mixHash(ss, ciphertext);\n return { plaintext, valid };\n }\n dh(privateKey, publicKey) {\n try {\n const derivedU8 = this.crypto.generateX25519SharedKey(privateKey, publicKey);\n if (derivedU8.length === 32) {\n return derivedU8;\n }\n return derivedU8.subarray(0, 32);\n }\n catch (e) {\n const err = e;\n this.log.error('error deriving shared key', err);\n return uint8ArrayAlloc(32);\n }\n }\n mixHash(ss, data) {\n ss.h = this.getHash(ss.h, data);\n }\n getHash(a, b) {\n const u = this.crypto.hashSHA256(new Uint8ArrayList(a, b));\n return u;\n }\n mixKey(ss, ikm) {\n const [ck, tempK] = this.crypto.getHKDF(ss.ck, ikm);\n ss.cs = this.initializeKey(tempK);\n ss.ck = ck;\n }\n initializeKey(k) {\n return { k, n: new Nonce() };\n }\n // Symmetric state related\n initializeSymmetric(protocolName) {\n const protocolNameBytes = uint8ArrayFromString(protocolName, 'utf-8');\n const h = this.hashProtocolName(protocolNameBytes);\n const ck = h;\n const key = this.createEmptyKey();\n const cs = this.initializeKey(key);\n return { cs, ck, h };\n }\n hashProtocolName(protocolName) {\n if (protocolName.length <= 32) {\n const h = uint8ArrayAlloc(32);\n h.set(protocolName);\n return h;\n }\n else {\n return this.getHash(protocolName, uint8ArrayAlloc(0));\n }\n }\n split(ss) {\n const [tempk1, tempk2] = this.crypto.getHKDF(ss.ck, uint8ArrayAlloc(0));\n const cs1 = this.initializeKey(tempk1);\n const cs2 = this.initializeKey(tempk2);\n return { cs1, cs2 };\n }\n writeMessageRegular(cs, payload) {\n const ciphertext = this.encryptWithAd(cs, uint8ArrayAlloc(0), payload);\n const ne = this.createEmptyKey();\n const ns = uint8ArrayAlloc(0);\n return { ne, ns, ciphertext };\n }\n readMessageRegular(cs, message) {\n return this.decryptWithAd(cs, uint8ArrayAlloc(0), message.ciphertext);\n }\n}\n//# sourceMappingURL=abstract-handshake.js.map","import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { isValidPublicKey } from '../utils.js';\nimport { AbstractHandshake } from './abstract-handshake.js';\nexport class XX extends AbstractHandshake {\n initializeInitiator(prologue, s, rs, psk) {\n const name = 'Noise_XX_25519_ChaChaPoly_SHA256';\n const ss = this.initializeSymmetric(name);\n this.mixHash(ss, prologue);\n const re = uint8ArrayAlloc(32);\n return { ss, s, rs, psk, re };\n }\n initializeResponder(prologue, s, rs, psk) {\n const name = 'Noise_XX_25519_ChaChaPoly_SHA256';\n const ss = this.initializeSymmetric(name);\n this.mixHash(ss, prologue);\n const re = uint8ArrayAlloc(32);\n return { ss, s, rs, psk, re };\n }\n writeMessageA(hs, payload, e) {\n const ns = uint8ArrayAlloc(0);\n if (e !== undefined) {\n hs.e = e;\n }\n else {\n hs.e = this.crypto.generateX25519KeyPair();\n }\n const ne = hs.e.publicKey;\n this.mixHash(hs.ss, ne);\n const ciphertext = this.encryptAndHash(hs.ss, payload);\n return { ne, ns, ciphertext };\n }\n writeMessageB(hs, payload) {\n hs.e = this.crypto.generateX25519KeyPair();\n const ne = hs.e.publicKey;\n this.mixHash(hs.ss, ne);\n this.mixKey(hs.ss, this.dh(hs.e.privateKey, hs.re));\n const spk = hs.s.publicKey;\n const ns = this.encryptAndHash(hs.ss, spk);\n this.mixKey(hs.ss, this.dh(hs.s.privateKey, hs.re));\n const ciphertext = this.encryptAndHash(hs.ss, payload);\n return { ne, ns, ciphertext };\n }\n writeMessageC(hs, payload) {\n const spk = hs.s.publicKey;\n const ns = this.encryptAndHash(hs.ss, spk);\n this.mixKey(hs.ss, this.dh(hs.s.privateKey, hs.re));\n const ciphertext = this.encryptAndHash(hs.ss, payload);\n const ne = this.createEmptyKey();\n const messageBuffer = { ne, ns, ciphertext };\n const { cs1, cs2 } = this.split(hs.ss);\n return { h: hs.ss.h, messageBuffer, cs1, cs2 };\n }\n readMessageA(hs, message) {\n if (isValidPublicKey(message.ne)) {\n hs.re = message.ne;\n }\n this.mixHash(hs.ss, hs.re);\n return this.decryptAndHash(hs.ss, message.ciphertext);\n }\n readMessageB(hs, message) {\n if (isValidPublicKey(message.ne)) {\n hs.re = message.ne;\n }\n this.mixHash(hs.ss, hs.re);\n if (!hs.e) {\n throw new Error('Handshake state `e` param is missing.');\n }\n this.mixKey(hs.ss, this.dh(hs.e.privateKey, hs.re));\n const { plaintext: ns, valid: valid1 } = this.decryptAndHash(hs.ss, message.ns);\n if (valid1 && isValidPublicKey(ns)) {\n hs.rs = ns;\n }\n this.mixKey(hs.ss, this.dh(hs.e.privateKey, hs.rs));\n const { plaintext, valid: valid2 } = this.decryptAndHash(hs.ss, message.ciphertext);\n return { plaintext, valid: (valid1 && valid2) };\n }\n readMessageC(hs, message) {\n const { plaintext: ns, valid: valid1 } = this.decryptAndHash(hs.ss, message.ns);\n if (valid1 && isValidPublicKey(ns)) {\n hs.rs = ns;\n }\n if (!hs.e) {\n throw new Error('Handshake state `e` param is missing.');\n }\n this.mixKey(hs.ss, this.dh(hs.e.privateKey, hs.rs));\n const { plaintext, valid: valid2 } = this.decryptAndHash(hs.ss, message.ciphertext);\n const { cs1, cs2 } = this.split(hs.ss);\n return { h: hs.ss.h, plaintext, valid: (valid1 && valid2), cs1, cs2 };\n }\n initSession(initiator, prologue, s) {\n const psk = this.createEmptyKey();\n const rs = uint8ArrayAlloc(32); // no static key yet\n let hs;\n if (initiator) {\n hs = this.initializeInitiator(prologue, s, rs, psk);\n }\n else {\n hs = this.initializeResponder(prologue, s, rs, psk);\n }\n return {\n hs,\n i: initiator,\n mc: 0\n };\n }\n sendMessage(session, message, ephemeral) {\n let messageBuffer;\n if (session.mc === 0) {\n messageBuffer = this.writeMessageA(session.hs, message, ephemeral);\n }\n else if (session.mc === 1) {\n messageBuffer = this.writeMessageB(session.hs, message);\n }\n else if (session.mc === 2) {\n const { h, messageBuffer: resultingBuffer, cs1, cs2 } = this.writeMessageC(session.hs, message);\n messageBuffer = resultingBuffer;\n session.h = h;\n session.cs1 = cs1;\n session.cs2 = cs2;\n }\n else if (session.mc > 2) {\n if (session.i) {\n if (!session.cs1) {\n throw new Error('CS1 (cipher state) is not defined');\n }\n messageBuffer = this.writeMessageRegular(session.cs1, message);\n }\n else {\n if (!session.cs2) {\n throw new Error('CS2 (cipher state) is not defined');\n }\n messageBuffer = this.writeMessageRegular(session.cs2, message);\n }\n }\n else {\n throw new Error('Session invalid.');\n }\n session.mc++;\n return messageBuffer;\n }\n recvMessage(session, message) {\n let plaintext = uint8ArrayAlloc(0);\n let valid = false;\n if (session.mc === 0) {\n ({ plaintext, valid } = this.readMessageA(session.hs, message));\n }\n else if (session.mc === 1) {\n ({ plaintext, valid } = this.readMessageB(session.hs, message));\n }\n else if (session.mc === 2) {\n const { h, plaintext: resultingPlaintext, valid: resultingValid, cs1, cs2 } = this.readMessageC(session.hs, message);\n plaintext = resultingPlaintext;\n valid = resultingValid;\n session.h = h;\n session.cs1 = cs1;\n session.cs2 = cs2;\n }\n session.mc++;\n return { plaintext, valid };\n }\n}\n//# sourceMappingURL=xx.js.map","import { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { DUMP_SESSION_KEYS } from './constants.js';\nexport function logLocalStaticKeys(s, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n keyLogger(`LOCAL_STATIC_PUBLIC_KEY ${uint8ArrayToString(s.publicKey, 'hex')}`);\n keyLogger(`LOCAL_STATIC_PRIVATE_KEY ${uint8ArrayToString(s.privateKey, 'hex')}`);\n}\nexport function logLocalEphemeralKeys(e, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (e) {\n keyLogger(`LOCAL_PUBLIC_EPHEMERAL_KEY ${uint8ArrayToString(e.publicKey, 'hex')}`);\n keyLogger(`LOCAL_PRIVATE_EPHEMERAL_KEY ${uint8ArrayToString(e.privateKey, 'hex')}`);\n }\n else {\n keyLogger('Missing local ephemeral keys.');\n }\n}\nexport function logRemoteStaticKey(rs, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n keyLogger(`REMOTE_STATIC_PUBLIC_KEY ${uint8ArrayToString(rs.subarray(), 'hex')}`);\n}\nexport function logRemoteEphemeralKey(re, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n keyLogger(`REMOTE_EPHEMERAL_PUBLIC_KEY ${uint8ArrayToString(re.subarray(), 'hex')}`);\n}\nexport function logCipherState(session, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (session.cs1 && session.cs2) {\n keyLogger(`CIPHER_STATE_1 ${session.cs1.n.getUint64()} ${uint8ArrayToString(session.cs1.k, 'hex')}`);\n keyLogger(`CIPHER_STATE_2 ${session.cs2.n.getUint64()} ${uint8ArrayToString(session.cs2.k, 'hex')}`);\n }\n else {\n keyLogger('Missing cipher state.');\n }\n}\n//# sourceMappingURL=logger.js.map","import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { decode0, decode1, decode2, encode0, encode1, encode2 } from './encoder.js';\nimport { InvalidCryptoExchangeError, UnexpectedPeerError } from './errors.js';\nimport { XX } from './handshakes/xx.js';\nimport { logLocalStaticKeys, logLocalEphemeralKeys, logRemoteEphemeralKey, logRemoteStaticKey, logCipherState } from './logger.js';\nimport { decodePayload, getPeerIdFromPayload, verifySignedPayload } from './utils.js';\nexport class XXHandshake {\n isInitiator;\n session;\n remotePeer;\n remoteExtensions = { webtransportCerthashes: [] };\n payload;\n connection;\n xx;\n staticKeypair;\n prologue;\n log;\n constructor(components, isInitiator, payload, prologue, crypto, staticKeypair, connection, remotePeer, handshake) {\n this.log = components.logger.forComponent('libp2p:noise:xxhandshake');\n this.isInitiator = isInitiator;\n this.payload = payload;\n this.prologue = prologue;\n this.staticKeypair = staticKeypair;\n this.connection = connection;\n if (remotePeer) {\n this.remotePeer = remotePeer;\n }\n this.xx = handshake ?? new XX(components, crypto);\n this.session = this.xx.initSession(this.isInitiator, this.prologue, this.staticKeypair);\n }\n // stage 0\n async propose() {\n logLocalStaticKeys(this.session.hs.s, this.log);\n if (this.isInitiator) {\n this.log.trace('Stage 0 - Initiator starting to send first message.');\n const messageBuffer = this.xx.sendMessage(this.session, uint8ArrayAlloc(0));\n await this.connection.write(encode0(messageBuffer));\n this.log.trace('Stage 0 - Initiator finished sending first message.');\n logLocalEphemeralKeys(this.session.hs.e, this.log);\n }\n else {\n this.log.trace('Stage 0 - Responder waiting to receive first message...');\n const receivedMessageBuffer = decode0((await this.connection.read()).subarray());\n const { valid } = this.xx.recvMessage(this.session, receivedMessageBuffer);\n if (!valid) {\n throw new InvalidCryptoExchangeError('xx handshake stage 0 validation fail');\n }\n this.log.trace('Stage 0 - Responder received first message.');\n logRemoteEphemeralKey(this.session.hs.re, this.log);\n }\n }\n // stage 1\n async exchange() {\n if (this.isInitiator) {\n this.log.trace('Stage 1 - Initiator waiting to receive first message from responder...');\n const receivedMessageBuffer = decode1((await this.connection.read()).subarray());\n const { plaintext, valid } = this.xx.recvMessage(this.session, receivedMessageBuffer);\n if (!valid) {\n throw new InvalidCryptoExchangeError('xx handshake stage 1 validation fail');\n }\n this.log.trace('Stage 1 - Initiator received the message.');\n logRemoteEphemeralKey(this.session.hs.re, this.log);\n logRemoteStaticKey(this.session.hs.rs, this.log);\n this.log.trace(\"Initiator going to check remote's signature...\");\n try {\n const decodedPayload = decodePayload(plaintext);\n this.remotePeer = this.remotePeer || await getPeerIdFromPayload(decodedPayload);\n await verifySignedPayload(this.session.hs.rs, decodedPayload, this.remotePeer);\n this.setRemoteNoiseExtension(decodedPayload.extensions);\n }\n catch (e) {\n const err = e;\n throw new UnexpectedPeerError(`Error occurred while verifying signed payload: ${err.message}`);\n }\n this.log.trace('All good with the signature!');\n }\n else {\n this.log.trace('Stage 1 - Responder sending out first message with signed payload and static key.');\n const messageBuffer = this.xx.sendMessage(this.session, this.payload);\n await this.connection.write(encode1(messageBuffer));\n this.log.trace('Stage 1 - Responder sent the second handshake message with signed payload.');\n logLocalEphemeralKeys(this.session.hs.e, this.log);\n }\n }\n // stage 2\n async finish() {\n if (this.isInitiator) {\n this.log.trace('Stage 2 - Initiator sending third handshake message.');\n const messageBuffer = this.xx.sendMessage(this.session, this.payload);\n await this.connection.write(encode2(messageBuffer));\n this.log.trace('Stage 2 - Initiator sent message with signed payload.');\n }\n else {\n this.log.trace('Stage 2 - Responder waiting for third handshake message...');\n const receivedMessageBuffer = decode2((await this.connection.read()).subarray());\n const { plaintext, valid } = this.xx.recvMessage(this.session, receivedMessageBuffer);\n if (!valid) {\n throw new InvalidCryptoExchangeError('xx handshake stage 2 validation fail');\n }\n this.log.trace('Stage 2 - Responder received the message, finished handshake.');\n try {\n const decodedPayload = decodePayload(plaintext);\n this.remotePeer = this.remotePeer || await getPeerIdFromPayload(decodedPayload);\n await verifySignedPayload(this.session.hs.rs, decodedPayload, this.remotePeer);\n this.setRemoteNoiseExtension(decodedPayload.extensions);\n }\n catch (e) {\n const err = e;\n throw new UnexpectedPeerError(`Error occurred while verifying signed payload: ${err.message}`);\n }\n }\n logCipherState(this.session, this.log);\n }\n encrypt(plaintext, session) {\n const cs = this.getCS(session);\n return this.xx.encryptWithAd(cs, uint8ArrayAlloc(0), plaintext);\n }\n decrypt(ciphertext, session, dst) {\n const cs = this.getCS(session, false);\n return this.xx.decryptWithAd(cs, uint8ArrayAlloc(0), ciphertext, dst);\n }\n getRemoteStaticKey() {\n return this.session.hs.rs;\n }\n getCS(session, encryption = true) {\n if (!session.cs1 || !session.cs2) {\n throw new InvalidCryptoExchangeError('Handshake not completed properly, cipher state does not exist.');\n }\n if (this.isInitiator) {\n return encryption ? session.cs1 : session.cs2;\n }\n else {\n return encryption ? session.cs2 : session.cs1;\n }\n }\n setRemoteNoiseExtension(e) {\n if (e) {\n this.remoteExtensions = e;\n }\n }\n}\n//# sourceMappingURL=handshake-xx.js.map","export function registerMetrics(metrics) {\n return {\n xxHandshakeSuccesses: metrics.registerCounter('libp2p_noise_xxhandshake_successes_total', {\n help: 'Total count of noise xxHandshakes successes_'\n }),\n xxHandshakeErrors: metrics.registerCounter('libp2p_noise_xxhandshake_error_total', {\n help: 'Total count of noise xxHandshakes errors'\n }),\n encryptedPackets: metrics.registerCounter('libp2p_noise_encrypted_packets_total', {\n help: 'Total count of noise encrypted packets successfully'\n }),\n decryptedPackets: metrics.registerCounter('libp2p_noise_decrypted_packets_total', {\n help: 'Total count of noise decrypted packets'\n }),\n decryptErrors: metrics.registerCounter('libp2p_noise_decrypt_errors_total', {\n help: 'Total count of noise decrypt errors'\n })\n };\n}\n//# sourceMappingURL=metrics.js.map","import { decode } from 'it-length-prefixed';\nimport { lpStream } from 'it-length-prefixed-stream';\nimport { duplexPair } from 'it-pair/duplex';\nimport { pipe } from 'it-pipe';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { NOISE_MSG_MAX_LENGTH_BYTES } from './constants.js';\nimport { defaultCrypto } from './crypto/index.js';\nimport { decryptStream, encryptStream } from './crypto/streaming.js';\nimport { uint16BEDecode, uint16BEEncode } from './encoder.js';\nimport { XXHandshake } from './handshake-xx.js';\nimport { registerMetrics } from './metrics.js';\nimport { getPayload } from './utils.js';\nexport class Noise {\n protocol = '/noise';\n crypto;\n prologue;\n staticKeys;\n extensions;\n metrics;\n components;\n constructor(components, init = {}) {\n const { staticNoiseKey, extensions, crypto, prologueBytes } = init;\n const { metrics } = components;\n this.components = components;\n this.crypto = crypto ?? defaultCrypto;\n this.extensions = extensions;\n this.metrics = metrics ? registerMetrics(metrics) : undefined;\n if (staticNoiseKey) {\n // accepts x25519 private key of length 32\n this.staticKeys = this.crypto.generateX25519KeyPairFromSeed(staticNoiseKey);\n }\n else {\n this.staticKeys = this.crypto.generateX25519KeyPair();\n }\n this.prologue = prologueBytes ?? uint8ArrayAlloc(0);\n }\n /**\n * Encrypt outgoing data to the remote party (handshake as initiator)\n *\n * @param {PeerId} localPeer - PeerId of the receiving peer\n * @param {Stream} connection - streaming iterable duplex that will be encrypted\n * @param {PeerId} remotePeer - PeerId of the remote peer. Used to validate the integrity of the remote peer.\n * @returns {Promise>}\n */\n async secureOutbound(localPeer, connection, remotePeer) {\n const wrappedConnection = lpStream(connection, {\n lengthEncoder: uint16BEEncode,\n lengthDecoder: uint16BEDecode,\n maxDataLength: NOISE_MSG_MAX_LENGTH_BYTES\n });\n const handshake = await this.performHandshake({\n connection: wrappedConnection,\n isInitiator: true,\n localPeer,\n remotePeer\n });\n const conn = await this.createSecureConnection(wrappedConnection, handshake);\n connection.source = conn.source;\n connection.sink = conn.sink;\n return {\n conn: connection,\n remoteExtensions: handshake.remoteExtensions,\n remotePeer: handshake.remotePeer\n };\n }\n /**\n * Decrypt incoming data (handshake as responder).\n *\n * @param {PeerId} localPeer - PeerId of the receiving peer.\n * @param {Stream} connection - streaming iterable duplex that will be encrypted.\n * @param {PeerId} remotePeer - optional PeerId of the initiating peer, if known. This may only exist during transport upgrades.\n * @returns {Promise>}\n */\n async secureInbound(localPeer, connection, remotePeer) {\n const wrappedConnection = lpStream(connection, {\n lengthEncoder: uint16BEEncode,\n lengthDecoder: uint16BEDecode,\n maxDataLength: NOISE_MSG_MAX_LENGTH_BYTES\n });\n const handshake = await this.performHandshake({\n connection: wrappedConnection,\n isInitiator: false,\n localPeer,\n remotePeer\n });\n const conn = await this.createSecureConnection(wrappedConnection, handshake);\n connection.source = conn.source;\n connection.sink = conn.sink;\n return {\n conn: connection,\n remotePeer: handshake.remotePeer,\n remoteExtensions: handshake.remoteExtensions\n };\n }\n /**\n * If Noise pipes supported, tries IK handshake first with XX as fallback if it fails.\n * If noise pipes disabled or remote peer static key is unknown, use XX.\n *\n * @param {HandshakeParams} params\n */\n async performHandshake(params) {\n const payload = await getPayload(params.localPeer, this.staticKeys.publicKey, this.extensions);\n // run XX handshake\n return this.performXXHandshake(params, payload);\n }\n async performXXHandshake(params, payload) {\n const { isInitiator, remotePeer, connection } = params;\n const handshake = new XXHandshake(this.components, isInitiator, payload, this.prologue, this.crypto, this.staticKeys, connection, remotePeer);\n try {\n await handshake.propose();\n await handshake.exchange();\n await handshake.finish();\n this.metrics?.xxHandshakeSuccesses.increment();\n }\n catch (e) {\n this.metrics?.xxHandshakeErrors.increment();\n if (e instanceof Error) {\n e.message = `Error occurred during XX handshake: ${e.message}`;\n throw e;\n }\n }\n return handshake;\n }\n async createSecureConnection(connection, handshake) {\n // Create encryption box/unbox wrapper\n const [secure, user] = duplexPair();\n const network = connection.unwrap();\n await pipe(secure, // write to wrapper\n encryptStream(handshake, this.metrics), // encrypt data + prefix with message length\n network, // send to the remote peer\n (source) => decode(source, { lengthDecoder: uint16BEDecode }), // read message length prefix\n decryptStream(handshake, this.metrics), // decrypt the incoming data\n secure // pipe to the wrapper\n );\n return user;\n }\n}\n//# sourceMappingURL=noise.js.map","import { Noise } from './noise.js';\nexport { pureJsCrypto } from './crypto/js.js';\nexport function noise(init = {}) {\n return (components) => new Noise(components, init);\n}\n//# sourceMappingURL=index.js.map","export function getIterator(obj) {\n if (obj != null) {\n if (typeof obj[Symbol.iterator] === 'function') {\n return obj[Symbol.iterator]();\n }\n if (typeof obj[Symbol.asyncIterator] === 'function') {\n return obj[Symbol.asyncIterator]();\n }\n if (typeof obj.next === 'function') {\n return obj; // probably an iterator\n }\n }\n throw new Error('argument is not an iterator or iterable');\n}\n//# sourceMappingURL=index.js.map","// Protocol violation errors\nexport const ERR_INVALID_FRAME = 'ERR_INVALID_FRAME';\nexport const ERR_UNREQUESTED_PING = 'ERR_UNREQUESTED_PING';\nexport const ERR_NOT_MATCHING_PING = 'ERR_NOT_MATCHING_PING';\nexport const ERR_STREAM_ALREADY_EXISTS = 'ERR_STREAM_ALREADY_EXISTS';\nexport const ERR_DECODE_INVALID_VERSION = 'ERR_DECODE_INVALID_VERSION';\nexport const ERR_BOTH_CLIENTS = 'ERR_BOTH_CLIENTS';\nexport const ERR_RECV_WINDOW_EXCEEDED = 'ERR_RECV_WINDOW_EXCEEDED';\nexport const PROTOCOL_ERRORS = new Set([\n ERR_INVALID_FRAME,\n ERR_UNREQUESTED_PING,\n ERR_NOT_MATCHING_PING,\n ERR_STREAM_ALREADY_EXISTS,\n ERR_DECODE_INVALID_VERSION,\n ERR_BOTH_CLIENTS,\n ERR_RECV_WINDOW_EXCEEDED\n]);\n// local errors\nexport const ERR_INVALID_CONFIG = 'ERR_INVALID_CONFIG';\nexport const ERR_MUXER_LOCAL_CLOSED = 'ERR_MUXER_LOCAL_CLOSED';\nexport const ERR_MUXER_REMOTE_CLOSED = 'ERR_MUXER_REMOTE_CLOSED';\nexport const ERR_STREAM_RESET = 'ERR_STREAM_RESET';\nexport const ERR_STREAM_ABORT = 'ERR_STREAM_ABORT';\nexport const ERR_MAX_OUTBOUND_STREAMS_EXCEEDED = 'ERROR_MAX_OUTBOUND_STREAMS_EXCEEDED';\nexport const ERR_DECODE_IN_PROGRESS = 'ERR_DECODE_IN_PROGRESS';\n/**\n * INITIAL_STREAM_WINDOW is the initial stream window size.\n *\n * Not an implementation choice, this is defined in the specification\n */\nexport const INITIAL_STREAM_WINDOW = 256 * 1024;\n/**\n * Default max stream window\n */\nexport const MAX_STREAM_WINDOW = 16 * 1024 * 1024;\n//# sourceMappingURL=constants.js.map","import { CodeError } from '@libp2p/interface';\nimport { ERR_INVALID_CONFIG, INITIAL_STREAM_WINDOW, MAX_STREAM_WINDOW } from './constants.js';\nexport const defaultConfig = {\n enableKeepAlive: true,\n keepAliveInterval: 30000,\n maxInboundStreams: 1000,\n maxOutboundStreams: 1000,\n initialStreamWindowSize: INITIAL_STREAM_WINDOW,\n maxStreamWindowSize: MAX_STREAM_WINDOW,\n maxMessageSize: 64 * 1024\n};\nexport function verifyConfig(config) {\n if (config.keepAliveInterval <= 0) {\n throw new CodeError('keep-alive interval must be positive', ERR_INVALID_CONFIG);\n }\n if (config.maxInboundStreams < 0) {\n throw new CodeError('max inbound streams must be larger or equal 0', ERR_INVALID_CONFIG);\n }\n if (config.maxOutboundStreams < 0) {\n throw new CodeError('max outbound streams must be larger or equal 0', ERR_INVALID_CONFIG);\n }\n if (config.initialStreamWindowSize < INITIAL_STREAM_WINDOW) {\n throw new CodeError('InitialStreamWindowSize must be larger or equal 256 kB', ERR_INVALID_CONFIG);\n }\n if (config.maxStreamWindowSize < config.initialStreamWindowSize) {\n throw new CodeError('MaxStreamWindowSize must be larger than the InitialStreamWindowSize', ERR_INVALID_CONFIG);\n }\n if (config.maxStreamWindowSize > 2 ** 32 - 1) {\n throw new CodeError('MaxStreamWindowSize must be less than equal MAX_UINT32', ERR_INVALID_CONFIG);\n }\n if (config.maxMessageSize < 1024) {\n throw new CodeError('MaxMessageSize must be greater than a kilobyte', ERR_INVALID_CONFIG);\n }\n}\n//# sourceMappingURL=config.js.map","export var FrameType;\n(function (FrameType) {\n /** Used to transmit data. May transmit zero length payloads depending on the flags. */\n FrameType[FrameType[\"Data\"] = 0] = \"Data\";\n /** Used to updated the senders receive window size. This is used to implement per-session flow control. */\n FrameType[FrameType[\"WindowUpdate\"] = 1] = \"WindowUpdate\";\n /** Used to measure RTT. It can also be used to heart-beat and do keep-alives over TCP. */\n FrameType[FrameType[\"Ping\"] = 2] = \"Ping\";\n /** Used to close a session. */\n FrameType[FrameType[\"GoAway\"] = 3] = \"GoAway\";\n})(FrameType || (FrameType = {}));\nexport var Flag;\n(function (Flag) {\n /** Signals the start of a new stream. May be sent with a data or window update message. Also sent with a ping to indicate outbound. */\n Flag[Flag[\"SYN\"] = 1] = \"SYN\";\n /** Acknowledges the start of a new stream. May be sent with a data or window update message. Also sent with a ping to indicate response. */\n Flag[Flag[\"ACK\"] = 2] = \"ACK\";\n /** Performs a half-close of a stream. May be sent with a data message or window update. */\n Flag[Flag[\"FIN\"] = 4] = \"FIN\";\n /** Reset a stream immediately. May be sent with a data or window update message. */\n Flag[Flag[\"RST\"] = 8] = \"RST\";\n})(Flag || (Flag = {}));\nconst flagCodes = Object.values(Flag).filter((x) => typeof x !== 'string');\nexport const YAMUX_VERSION = 0;\nexport var GoAwayCode;\n(function (GoAwayCode) {\n GoAwayCode[GoAwayCode[\"NormalTermination\"] = 0] = \"NormalTermination\";\n GoAwayCode[GoAwayCode[\"ProtocolError\"] = 1] = \"ProtocolError\";\n GoAwayCode[GoAwayCode[\"InternalError\"] = 2] = \"InternalError\";\n})(GoAwayCode || (GoAwayCode = {}));\nexport const HEADER_LENGTH = 12;\nexport function stringifyHeader(header) {\n const flags = flagCodes.filter(f => (header.flag & f) === f).map(f => Flag[f]).join('|');\n return `streamID=${header.streamID} type=${FrameType[header.type]} flag=${flags} length=${header.length}`;\n}\n//# sourceMappingURL=frame.js.map","import { CodeError } from '@libp2p/interface';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { ERR_DECODE_INVALID_VERSION, ERR_DECODE_IN_PROGRESS } from './constants.js';\nimport { FrameType, HEADER_LENGTH, YAMUX_VERSION } from './frame.js';\n// used to bitshift in decoding\n// native bitshift can overflow into a negative number, so we bitshift by multiplying by a power of 2\nconst twoPow24 = 2 ** 24;\n/**\n * Decode a header from the front of a buffer\n *\n * @param data - Assumed to have enough bytes for a header\n */\nexport function decodeHeader(data) {\n if (data[0] !== YAMUX_VERSION) {\n throw new CodeError('Invalid frame version', ERR_DECODE_INVALID_VERSION);\n }\n return {\n type: data[1],\n flag: (data[2] << 8) + data[3],\n streamID: (data[4] * twoPow24) + (data[5] << 16) + (data[6] << 8) + data[7],\n length: (data[8] * twoPow24) + (data[9] << 16) + (data[10] << 8) + data[11]\n };\n}\n/**\n * Decodes yamux frames from a source\n */\nexport class Decoder {\n source;\n /** Buffer for in-progress frames */\n buffer;\n /** Used to sanity check against decoding while in an inconsistent state */\n frameInProgress;\n constructor(source) {\n // Normally, when entering a for-await loop with an iterable/async iterable, the only ways to exit the loop are:\n // 1. exhaust the iterable\n // 2. throw an error - slow, undesirable if there's not actually an error\n // 3. break or return - calls the iterable's `return` method, finalizing the iterable, no more iteration possible\n //\n // In this case, we want to enter (and exit) a for-await loop per chunked data frame and continue processing the iterable.\n // To do this, we strip the `return` method from the iterator and can now `break` early and continue iterating.\n // Exiting the main for-await is still possible via 1. and 2.\n this.source = returnlessSource(source);\n this.buffer = new Uint8ArrayList();\n this.frameInProgress = false;\n }\n /**\n * Emits frames from the decoder source.\n *\n * Note: If `readData` is emitted, it _must_ be called before the next iteration\n * Otherwise an error is thrown\n */\n async *emitFrames() {\n for await (const chunk of this.source) {\n this.buffer.append(chunk);\n // Loop to consume as many bytes from the buffer as possible\n // Eg: when a single chunk contains several frames\n while (true) {\n const header = this.readHeader();\n if (header === undefined) {\n break;\n }\n const { type, length } = header;\n if (type === FrameType.Data) {\n // This is a data frame, the frame body must still be read\n // `readData` must be called before the next iteration here\n this.frameInProgress = true;\n yield {\n header,\n readData: this.readBytes.bind(this, length)\n };\n }\n else {\n yield { header };\n }\n }\n }\n }\n readHeader() {\n // Sanity check to ensure a header isn't read when another frame is partially decoded\n // In practice this shouldn't happen\n if (this.frameInProgress) {\n throw new CodeError('decoding frame already in progress', ERR_DECODE_IN_PROGRESS);\n }\n if (this.buffer.length < HEADER_LENGTH) {\n // not enough data yet\n return;\n }\n const header = decodeHeader(this.buffer.subarray(0, HEADER_LENGTH));\n this.buffer.consume(HEADER_LENGTH);\n return header;\n }\n async readBytes(length) {\n if (this.buffer.length < length) {\n for await (const chunk of this.source) {\n this.buffer.append(chunk);\n if (this.buffer.length >= length) {\n // see note above, the iterator is not `return`ed here\n break;\n }\n }\n }\n const out = this.buffer.sublist(0, length);\n this.buffer.consume(length);\n // The next frame can now be decoded\n this.frameInProgress = false;\n return out;\n }\n}\n/**\n * Strip the `return` method from a `Source`\n */\nexport function returnlessSource(source) {\n if (source[Symbol.iterator] !== undefined) {\n const iterator = source[Symbol.iterator]();\n iterator.return = undefined;\n return {\n [Symbol.iterator]() { return iterator; }\n };\n }\n else if (source[Symbol.asyncIterator] !== undefined) {\n const iterator = source[Symbol.asyncIterator]();\n iterator.return = undefined;\n return {\n [Symbol.asyncIterator]() { return iterator; }\n };\n }\n else {\n throw new Error('a source must be either an iterable or an async iterable');\n }\n}\n//# sourceMappingURL=decode.js.map","import { HEADER_LENGTH } from './frame.js';\nexport function encodeHeader(header) {\n const frame = new Uint8Array(HEADER_LENGTH);\n // always assume version 0\n // frameView.setUint8(0, header.version)\n frame[1] = header.type;\n frame[2] = header.flag >>> 8;\n frame[3] = header.flag;\n frame[4] = header.streamID >>> 24;\n frame[5] = header.streamID >>> 16;\n frame[6] = header.streamID >>> 8;\n frame[7] = header.streamID;\n frame[8] = header.length >>> 24;\n frame[9] = header.length >>> 16;\n frame[10] = header.length >>> 8;\n frame[11] = header.length;\n return frame;\n}\n//# sourceMappingURL=encode.js.map","export function isPromise(thing) {\n if (thing == null) {\n return false;\n }\n return typeof thing.then === 'function' &&\n typeof thing.catch === 'function' &&\n typeof thing.finally === 'function';\n}\n//# sourceMappingURL=is-promise.js.map","import { getIterator } from 'get-iterator';\nimport { isPromise } from './is-promise.js';\nexport function closeSource(source, log) {\n const res = getIterator(source).return?.();\n if (isPromise(res)) {\n res.catch(err => {\n log.error('could not cause iterator to return', err);\n });\n }\n}\n//# sourceMappingURL=close-source.js.map","import { CodeError } from '@libp2p/interface';\nimport { pushable } from 'it-pushable';\nimport defer, {} from 'p-defer';\nimport pDefer from 'p-defer';\nimport { raceSignal } from 'race-signal';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { closeSource } from './close-source.js';\nconst ERR_STREAM_RESET = 'ERR_STREAM_RESET';\nconst ERR_SINK_INVALID_STATE = 'ERR_SINK_INVALID_STATE';\nconst DEFAULT_SEND_CLOSE_WRITE_TIMEOUT = 5000;\nfunction isPromise(thing) {\n if (thing == null) {\n return false;\n }\n return typeof thing.then === 'function' &&\n typeof thing.catch === 'function' &&\n typeof thing.finally === 'function';\n}\nexport class AbstractStream {\n id;\n direction;\n timeline;\n protocol;\n metadata;\n source;\n status;\n readStatus;\n writeStatus;\n log;\n sinkController;\n sinkEnd;\n closed;\n endErr;\n streamSource;\n onEnd;\n onCloseRead;\n onCloseWrite;\n onReset;\n onAbort;\n sendCloseWriteTimeout;\n sendingData;\n constructor(init) {\n this.sinkController = new AbortController();\n this.sinkEnd = defer();\n this.closed = defer();\n this.log = init.log;\n // stream status\n this.status = 'open';\n this.readStatus = 'ready';\n this.writeStatus = 'ready';\n this.id = init.id;\n this.metadata = init.metadata ?? {};\n this.direction = init.direction;\n this.timeline = {\n open: Date.now()\n };\n this.sendCloseWriteTimeout = init.sendCloseWriteTimeout ?? DEFAULT_SEND_CLOSE_WRITE_TIMEOUT;\n this.onEnd = init.onEnd;\n this.onCloseRead = init?.onCloseRead;\n this.onCloseWrite = init?.onCloseWrite;\n this.onReset = init?.onReset;\n this.onAbort = init?.onAbort;\n this.source = this.streamSource = pushable({\n onEnd: (err) => {\n if (err != null) {\n this.log.trace('source ended with error', err);\n }\n else {\n this.log.trace('source ended');\n }\n this.onSourceEnd(err);\n }\n });\n // necessary because the libp2p upgrader wraps the sink function\n this.sink = this.sink.bind(this);\n }\n async sink(source) {\n if (this.writeStatus !== 'ready') {\n throw new CodeError(`writable end state is \"${this.writeStatus}\" not \"ready\"`, ERR_SINK_INVALID_STATE);\n }\n try {\n this.writeStatus = 'writing';\n const options = {\n signal: this.sinkController.signal\n };\n if (this.direction === 'outbound') { // If initiator, open a new stream\n const res = this.sendNewStream(options);\n if (isPromise(res)) {\n await res;\n }\n }\n const abortListener = () => {\n closeSource(source, this.log);\n };\n try {\n this.sinkController.signal.addEventListener('abort', abortListener);\n this.log.trace('sink reading from source');\n for await (let data of source) {\n data = data instanceof Uint8Array ? new Uint8ArrayList(data) : data;\n const res = this.sendData(data, options);\n if (isPromise(res)) {\n this.sendingData = pDefer();\n await res;\n this.sendingData.resolve();\n this.sendingData = undefined;\n }\n }\n }\n finally {\n this.sinkController.signal.removeEventListener('abort', abortListener);\n }\n this.log.trace('sink finished reading from source, write status is \"%s\"', this.writeStatus);\n if (this.writeStatus === 'writing') {\n this.writeStatus = 'closing';\n this.log.trace('send close write to remote');\n await this.sendCloseWrite({\n signal: AbortSignal.timeout(this.sendCloseWriteTimeout)\n });\n this.writeStatus = 'closed';\n }\n this.onSinkEnd();\n }\n catch (err) {\n this.log.trace('sink ended with error, calling abort with error', err);\n this.abort(err);\n throw err;\n }\n finally {\n this.log.trace('resolve sink end');\n this.sinkEnd.resolve();\n }\n }\n onSourceEnd(err) {\n if (this.timeline.closeRead != null) {\n return;\n }\n this.timeline.closeRead = Date.now();\n this.readStatus = 'closed';\n if (err != null && this.endErr == null) {\n this.endErr = err;\n }\n this.onCloseRead?.();\n if (this.timeline.closeWrite != null) {\n this.log.trace('source and sink ended');\n this.timeline.close = Date.now();\n if (this.status !== 'aborted' && this.status !== 'reset') {\n this.status = 'closed';\n }\n if (this.onEnd != null) {\n this.onEnd(this.endErr);\n }\n this.closed.resolve();\n }\n else {\n this.log.trace('source ended, waiting for sink to end');\n }\n }\n onSinkEnd(err) {\n if (this.timeline.closeWrite != null) {\n return;\n }\n this.timeline.closeWrite = Date.now();\n this.writeStatus = 'closed';\n if (err != null && this.endErr == null) {\n this.endErr = err;\n }\n this.onCloseWrite?.();\n if (this.timeline.closeRead != null) {\n this.log.trace('sink and source ended');\n this.timeline.close = Date.now();\n if (this.status !== 'aborted' && this.status !== 'reset') {\n this.status = 'closed';\n }\n if (this.onEnd != null) {\n this.onEnd(this.endErr);\n }\n this.closed.resolve();\n }\n else {\n this.log.trace('sink ended, waiting for source to end');\n }\n }\n // Close for both Reading and Writing\n async close(options) {\n this.log.trace('closing gracefully');\n this.status = 'closing';\n // wait for read and write ends to close\n await raceSignal(Promise.all([\n this.closeWrite(options),\n this.closeRead(options),\n this.closed.promise\n ]), options?.signal);\n this.status = 'closed';\n this.log.trace('closed gracefully');\n }\n async closeRead(options = {}) {\n if (this.readStatus === 'closing' || this.readStatus === 'closed') {\n return;\n }\n this.log.trace('closing readable end of stream with starting read status \"%s\"', this.readStatus);\n const readStatus = this.readStatus;\n this.readStatus = 'closing';\n if (this.status !== 'reset' && this.status !== 'aborted' && this.timeline.closeRead == null) {\n this.log.trace('send close read to remote');\n await this.sendCloseRead(options);\n }\n if (readStatus === 'ready') {\n this.log.trace('ending internal source queue with %d queued bytes', this.streamSource.readableLength);\n this.streamSource.end();\n }\n this.log.trace('closed readable end of stream');\n }\n async closeWrite(options = {}) {\n if (this.writeStatus === 'closing' || this.writeStatus === 'closed') {\n return;\n }\n this.log.trace('closing writable end of stream with starting write status \"%s\"', this.writeStatus);\n if (this.writeStatus === 'ready') {\n this.log.trace('sink was never sunk, sink an empty array');\n await raceSignal(this.sink([]), options.signal);\n }\n if (this.writeStatus === 'writing') {\n // try to let sending outgoing data succeed\n if (this.sendingData != null) {\n await raceSignal(this.sendingData.promise, options.signal);\n }\n // stop reading from the source passed to `.sink`\n this.log.trace('aborting source passed to .sink');\n this.sinkController.abort();\n await raceSignal(this.sinkEnd.promise, options.signal);\n }\n this.writeStatus = 'closed';\n this.log.trace('closed writable end of stream');\n }\n /**\n * Close immediately for reading and writing and send a reset message (local\n * error)\n */\n abort(err) {\n if (this.status === 'closed' || this.status === 'aborted' || this.status === 'reset') {\n return;\n }\n this.log('abort with error', err);\n // try to send a reset message\n this.log('try to send reset to remote');\n const res = this.sendReset();\n if (isPromise(res)) {\n res.catch((err) => {\n this.log.error('error sending reset message', err);\n });\n }\n this.status = 'aborted';\n this.timeline.abort = Date.now();\n this._closeSinkAndSource(err);\n this.onAbort?.(err);\n }\n /**\n * Receive a reset message - close immediately for reading and writing (remote\n * error)\n */\n reset() {\n if (this.status === 'closed' || this.status === 'aborted' || this.status === 'reset') {\n return;\n }\n const err = new CodeError('stream reset', ERR_STREAM_RESET);\n this.status = 'reset';\n this.timeline.reset = Date.now();\n this._closeSinkAndSource(err);\n this.onReset?.();\n }\n _closeSinkAndSource(err) {\n this._closeSink(err);\n this._closeSource(err);\n }\n _closeSink(err) {\n // if the sink function is running, cause it to end\n if (this.writeStatus === 'writing') {\n this.log.trace('end sink source');\n this.sinkController.abort();\n }\n this.onSinkEnd(err);\n }\n _closeSource(err) {\n // if the source is not ending, end it\n if (this.readStatus !== 'closing' && this.readStatus !== 'closed') {\n this.log.trace('ending source with %d bytes to be read by consumer', this.streamSource.readableLength);\n this.readStatus = 'closing';\n this.streamSource.end(err);\n }\n }\n /**\n * The remote closed for writing so we should expect to receive no more\n * messages\n */\n remoteCloseWrite() {\n if (this.readStatus === 'closing' || this.readStatus === 'closed') {\n this.log('received remote close write but local source is already closed');\n return;\n }\n this.log.trace('remote close write');\n this._closeSource();\n }\n /**\n * The remote closed for reading so we should not send any more\n * messages\n */\n remoteCloseRead() {\n if (this.writeStatus === 'closing' || this.writeStatus === 'closed') {\n this.log('received remote close read but local sink is already closed');\n return;\n }\n this.log.trace('remote close read');\n this._closeSink();\n }\n /**\n * The underlying muxer has closed, no more messages can be sent or will\n * be received, close immediately to free up resources\n */\n destroy() {\n if (this.status === 'closed' || this.status === 'aborted' || this.status === 'reset') {\n this.log('received destroy but we are already closed');\n return;\n }\n this.log.trace('stream destroyed');\n this._closeSinkAndSource();\n }\n /**\n * When an extending class reads data from it's implementation-specific source,\n * call this method to allow the stream consumer to read the data.\n */\n sourcePush(data) {\n this.streamSource.push(data);\n }\n /**\n * Returns the amount of unread data - can be used to prevent large amounts of\n * data building up when the stream consumer is too slow.\n */\n sourceReadableLength() {\n return this.streamSource.readableLength;\n }\n}\n//# sourceMappingURL=abstract-stream.js.map","import { CodeError } from '@libp2p/interface';\nimport { AbstractStream } from '@libp2p/utils/abstract-stream';\nimport each from 'it-foreach';\nimport { ERR_RECV_WINDOW_EXCEEDED, ERR_STREAM_ABORT, INITIAL_STREAM_WINDOW } from './constants.js';\nimport { Flag, FrameType, HEADER_LENGTH } from './frame.js';\nexport var StreamState;\n(function (StreamState) {\n StreamState[StreamState[\"Init\"] = 0] = \"Init\";\n StreamState[StreamState[\"SYNSent\"] = 1] = \"SYNSent\";\n StreamState[StreamState[\"SYNReceived\"] = 2] = \"SYNReceived\";\n StreamState[StreamState[\"Established\"] = 3] = \"Established\";\n StreamState[StreamState[\"Finished\"] = 4] = \"Finished\";\n})(StreamState || (StreamState = {}));\n/** YamuxStream is used to represent a logical stream within a session */\nexport class YamuxStream extends AbstractStream {\n name;\n state;\n config;\n _id;\n /** The number of available bytes to send */\n sendWindowCapacity;\n /** Callback to notify that the sendWindowCapacity has been updated */\n sendWindowCapacityUpdate;\n /** The number of bytes available to receive in a full window */\n recvWindow;\n /** The number of available bytes to receive */\n recvWindowCapacity;\n /**\n * An 'epoch' is the time it takes to process and read data\n *\n * Used in conjunction with RTT to determine whether to increase the recvWindow\n */\n epochStart;\n getRTT;\n sendFrame;\n constructor(init) {\n super({\n ...init,\n onEnd: (err) => {\n this.state = StreamState.Finished;\n init.onEnd?.(err);\n }\n });\n this.config = init.config;\n this._id = parseInt(init.id, 10);\n this.name = init.name;\n this.state = init.state;\n this.sendWindowCapacity = INITIAL_STREAM_WINDOW;\n this.recvWindow = this.config.initialStreamWindowSize;\n this.recvWindowCapacity = this.recvWindow;\n this.epochStart = Date.now();\n this.getRTT = init.getRTT;\n this.sendFrame = init.sendFrame;\n this.source = each(this.source, () => {\n this.sendWindowUpdate();\n });\n }\n /**\n * Send a message to the remote muxer informing them a new stream is being\n * opened.\n *\n * This is a noop for Yamux because the first window update is sent when\n * .newStream is called on the muxer which opens the stream on the remote.\n */\n async sendNewStream() {\n }\n /**\n * Send a data message to the remote muxer\n */\n async sendData(buf, options = {}) {\n buf = buf.sublist();\n // send in chunks, waiting for window updates\n while (buf.byteLength !== 0) {\n // wait for the send window to refill\n if (this.sendWindowCapacity === 0) {\n this.log?.trace('wait for send window capacity, status %s', this.status);\n await this.waitForSendWindowCapacity(options);\n // check we didn't close while waiting for send window capacity\n if (this.status === 'closed' || this.status === 'aborted' || this.status === 'reset') {\n this.log?.trace('%s while waiting for send window capacity', this.status);\n return;\n }\n }\n // send as much as we can\n const toSend = Math.min(this.sendWindowCapacity, this.config.maxMessageSize - HEADER_LENGTH, buf.length);\n const flags = this.getSendFlags();\n this.sendFrame({\n type: FrameType.Data,\n flag: flags,\n streamID: this._id,\n length: toSend\n }, buf.sublist(0, toSend));\n this.sendWindowCapacity -= toSend;\n buf.consume(toSend);\n }\n }\n /**\n * Send a reset message to the remote muxer\n */\n async sendReset() {\n this.sendFrame({\n type: FrameType.WindowUpdate,\n flag: Flag.RST,\n streamID: this._id,\n length: 0\n });\n }\n /**\n * Send a message to the remote muxer, informing them no more data messages\n * will be sent by this end of the stream\n */\n async sendCloseWrite() {\n const flags = this.getSendFlags() | Flag.FIN;\n this.sendFrame({\n type: FrameType.WindowUpdate,\n flag: flags,\n streamID: this._id,\n length: 0\n });\n }\n /**\n * Send a message to the remote muxer, informing them no more data messages\n * will be read by this end of the stream\n */\n async sendCloseRead() {\n }\n /**\n * Wait for the send window to be non-zero\n *\n * Will throw with ERR_STREAM_ABORT if the stream gets aborted\n */\n async waitForSendWindowCapacity(options = {}) {\n if (this.sendWindowCapacity > 0) {\n return;\n }\n let resolve;\n let reject;\n const abort = () => {\n if (this.status === 'open' || this.status === 'closing') {\n reject(new CodeError('stream aborted', ERR_STREAM_ABORT));\n }\n else {\n // the stream was closed already, ignore the failure to send\n resolve();\n }\n };\n options.signal?.addEventListener('abort', abort);\n try {\n await new Promise((_resolve, _reject) => {\n this.sendWindowCapacityUpdate = () => {\n _resolve();\n };\n reject = _reject;\n resolve = _resolve;\n });\n }\n finally {\n options.signal?.removeEventListener('abort', abort);\n }\n }\n /**\n * handleWindowUpdate is called when the stream receives a window update frame\n */\n handleWindowUpdate(header) {\n this.log?.trace('stream received window update id=%s', this._id);\n this.processFlags(header.flag);\n // increase send window\n const available = this.sendWindowCapacity;\n this.sendWindowCapacity += header.length;\n // if the update increments a 0 availability, notify the stream that sending can resume\n if (available === 0 && header.length > 0) {\n this.sendWindowCapacityUpdate?.();\n }\n }\n /**\n * handleData is called when the stream receives a data frame\n */\n async handleData(header, readData) {\n this.log?.trace('stream received data id=%s', this._id);\n this.processFlags(header.flag);\n // check that our recv window is not exceeded\n if (this.recvWindowCapacity < header.length) {\n throw new CodeError('receive window exceeded', ERR_RECV_WINDOW_EXCEEDED, { available: this.recvWindowCapacity, recv: header.length });\n }\n const data = await readData();\n this.recvWindowCapacity -= header.length;\n this.sourcePush(data);\n }\n /**\n * processFlags is used to update the state of the stream based on set flags, if any.\n */\n processFlags(flags) {\n if ((flags & Flag.ACK) === Flag.ACK) {\n if (this.state === StreamState.SYNSent) {\n this.state = StreamState.Established;\n }\n }\n if ((flags & Flag.FIN) === Flag.FIN) {\n this.remoteCloseWrite();\n }\n if ((flags & Flag.RST) === Flag.RST) {\n this.reset();\n }\n }\n /**\n * getSendFlags determines any flags that are appropriate\n * based on the current stream state.\n *\n * The state is updated as a side-effect.\n */\n getSendFlags() {\n switch (this.state) {\n case StreamState.Init:\n this.state = StreamState.SYNSent;\n return Flag.SYN;\n case StreamState.SYNReceived:\n this.state = StreamState.Established;\n return Flag.ACK;\n default:\n return 0;\n }\n }\n /**\n * potentially sends a window update enabling further writes to take place.\n */\n sendWindowUpdate() {\n // determine the flags if any\n const flags = this.getSendFlags();\n // If the stream has already been established\n // and we've processed data within the time it takes for 4 round trips\n // then we (up to) double the recvWindow\n const now = Date.now();\n const rtt = this.getRTT();\n if (flags === 0 && rtt > -1 && now - this.epochStart < rtt * 4) {\n // we've already validated that maxStreamWindowSize can't be more than MAX_UINT32\n this.recvWindow = Math.min(this.recvWindow * 2, this.config.maxStreamWindowSize);\n }\n if (this.recvWindowCapacity >= this.recvWindow && flags === 0) {\n // a window update isn't needed\n return;\n }\n // update the receive window\n const delta = this.recvWindow - this.recvWindowCapacity;\n this.recvWindowCapacity = this.recvWindow;\n // update the epoch start\n this.epochStart = now;\n // send window update\n this.sendFrame({\n type: FrameType.WindowUpdate,\n flag: flags,\n streamID: this._id,\n length: delta\n });\n }\n}\n//# sourceMappingURL=stream.js.map","import { CodeError, setMaxListeners } from '@libp2p/interface';\nimport { getIterator } from 'get-iterator';\nimport { pushable } from 'it-pushable';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { defaultConfig, verifyConfig } from './config.js';\nimport { ERR_BOTH_CLIENTS, ERR_INVALID_FRAME, ERR_MAX_OUTBOUND_STREAMS_EXCEEDED, ERR_MUXER_LOCAL_CLOSED, ERR_MUXER_REMOTE_CLOSED, ERR_NOT_MATCHING_PING, ERR_STREAM_ALREADY_EXISTS, ERR_UNREQUESTED_PING, PROTOCOL_ERRORS } from './constants.js';\nimport { Decoder } from './decode.js';\nimport { encodeHeader } from './encode.js';\nimport { Flag, FrameType, GoAwayCode } from './frame.js';\nimport { StreamState, YamuxStream } from './stream.js';\nconst YAMUX_PROTOCOL_ID = '/yamux/1.0.0';\nconst CLOSE_TIMEOUT = 500;\nexport class Yamux {\n protocol = YAMUX_PROTOCOL_ID;\n _components;\n _init;\n constructor(components, init = {}) {\n this._components = components;\n this._init = init;\n }\n createStreamMuxer(init) {\n return new YamuxMuxer(this._components, {\n ...this._init,\n ...init\n });\n }\n}\nexport class YamuxMuxer {\n protocol = YAMUX_PROTOCOL_ID;\n source;\n sink;\n config;\n log;\n logger;\n /** Used to close the muxer from either the sink or source */\n closeController;\n /** The next stream id to be used when initiating a new stream */\n nextStreamID;\n /** Primary stream mapping, streamID => stream */\n _streams;\n /** The next ping id to be used when pinging */\n nextPingID;\n /** Tracking info for the currently active ping */\n activePing;\n /** Round trip time */\n rtt;\n /** True if client, false if server */\n client;\n localGoAway;\n remoteGoAway;\n /** Number of tracked inbound streams */\n numInboundStreams;\n /** Number of tracked outbound streams */\n numOutboundStreams;\n onIncomingStream;\n onStreamEnd;\n constructor(components, init) {\n this.client = init.direction === 'outbound';\n this.config = { ...defaultConfig, ...init };\n this.logger = components.logger;\n this.log = this.logger.forComponent('libp2p:yamux');\n verifyConfig(this.config);\n this.closeController = new AbortController();\n setMaxListeners(Infinity, this.closeController.signal);\n this.onIncomingStream = init.onIncomingStream;\n this.onStreamEnd = init.onStreamEnd;\n this._streams = new Map();\n this.source = pushable({\n onEnd: () => {\n this.log?.trace('muxer source ended');\n this._streams.forEach(stream => {\n stream.destroy();\n });\n }\n });\n this.sink = async (source) => {\n const shutDownListener = () => {\n const iterator = getIterator(source);\n if (iterator.return != null) {\n const res = iterator.return();\n if (isPromise(res)) {\n res.catch(err => {\n this.log?.('could not cause sink source to return', err);\n });\n }\n }\n };\n let reason, error;\n try {\n const decoder = new Decoder(source);\n try {\n this.closeController.signal.addEventListener('abort', shutDownListener);\n for await (const frame of decoder.emitFrames()) {\n await this.handleFrame(frame.header, frame.readData);\n }\n }\n finally {\n this.closeController.signal.removeEventListener('abort', shutDownListener);\n }\n reason = GoAwayCode.NormalTermination;\n }\n catch (err) {\n // either a protocol or internal error\n const errCode = err.code;\n if (PROTOCOL_ERRORS.has(errCode)) {\n this.log?.error('protocol error in sink', err);\n reason = GoAwayCode.ProtocolError;\n }\n else {\n this.log?.error('internal error in sink', err);\n reason = GoAwayCode.InternalError;\n }\n error = err;\n }\n this.log?.trace('muxer sink ended');\n if (error != null) {\n this.abort(error, reason);\n }\n else {\n await this.close({ reason });\n }\n };\n this.numInboundStreams = 0;\n this.numOutboundStreams = 0;\n // client uses odd streamIDs, server uses even streamIDs\n this.nextStreamID = this.client ? 1 : 2;\n this.nextPingID = 0;\n this.rtt = -1;\n this.log?.trace('muxer created');\n if (this.config.enableKeepAlive) {\n this.keepAliveLoop().catch(e => this.log?.error('keepalive error: %s', e));\n }\n // send an initial ping to establish RTT\n this.ping().catch(e => this.log?.error('ping error: %s', e));\n }\n get streams() {\n return Array.from(this._streams.values());\n }\n newStream(name) {\n if (this.remoteGoAway !== undefined) {\n throw new CodeError('muxer closed remotely', ERR_MUXER_REMOTE_CLOSED);\n }\n if (this.localGoAway !== undefined) {\n throw new CodeError('muxer closed locally', ERR_MUXER_LOCAL_CLOSED);\n }\n const id = this.nextStreamID;\n this.nextStreamID += 2;\n // check against our configured maximum number of outbound streams\n if (this.numOutboundStreams >= this.config.maxOutboundStreams) {\n throw new CodeError('max outbound streams exceeded', ERR_MAX_OUTBOUND_STREAMS_EXCEEDED);\n }\n this.log?.trace('new outgoing stream id=%s', id);\n const stream = this._newStream(id, name, StreamState.Init, 'outbound');\n this._streams.set(id, stream);\n this.numOutboundStreams++;\n // send a window update to open the stream on the receiver end\n stream.sendWindowUpdate();\n return stream;\n }\n /**\n * Initiate a ping and wait for a response\n *\n * Note: only a single ping will be initiated at a time.\n * If a ping is already in progress, a new ping will not be initiated.\n *\n * @returns the round-trip-time in milliseconds\n */\n async ping() {\n if (this.remoteGoAway !== undefined) {\n throw new CodeError('muxer closed remotely', ERR_MUXER_REMOTE_CLOSED);\n }\n if (this.localGoAway !== undefined) {\n throw new CodeError('muxer closed locally', ERR_MUXER_LOCAL_CLOSED);\n }\n // An active ping does not yet exist, handle the process here\n if (this.activePing === undefined) {\n // create active ping\n let _resolve = () => { };\n this.activePing = {\n id: this.nextPingID++,\n // this promise awaits resolution or the close controller aborting\n promise: new Promise((resolve, reject) => {\n const closed = () => {\n reject(new CodeError('muxer closed locally', ERR_MUXER_LOCAL_CLOSED));\n };\n this.closeController.signal.addEventListener('abort', closed, { once: true });\n _resolve = () => {\n this.closeController.signal.removeEventListener('abort', closed);\n resolve();\n };\n }),\n resolve: _resolve\n };\n // send ping\n const start = Date.now();\n this.sendPing(this.activePing.id);\n // await pong\n try {\n await this.activePing.promise;\n }\n finally {\n // clean-up active ping\n delete this.activePing;\n }\n // update rtt\n const end = Date.now();\n this.rtt = end - start;\n }\n else {\n // an active ping is already in progress, piggyback off that\n await this.activePing.promise;\n }\n return this.rtt;\n }\n /**\n * Get the ping round trip time\n *\n * Note: Will return 0 if no successful ping has yet been completed\n *\n * @returns the round-trip-time in milliseconds\n */\n getRTT() {\n return this.rtt;\n }\n /**\n * Close the muxer\n */\n async close(options = {}) {\n if (this.closeController.signal.aborted) {\n // already closed\n return;\n }\n const reason = options?.reason ?? GoAwayCode.NormalTermination;\n this.log?.trace('muxer close reason=%s', reason);\n if (options.signal == null) {\n const signal = AbortSignal.timeout(CLOSE_TIMEOUT);\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n try {\n await Promise.all([...this._streams.values()].map(async (s) => s.close(options)));\n // send reason to the other side, allow the other side to close gracefully\n this.sendGoAway(reason);\n this._closeMuxer();\n }\n catch (err) {\n this.abort(err);\n }\n }\n abort(err, reason) {\n if (this.closeController.signal.aborted) {\n // already closed\n return;\n }\n reason = reason ?? GoAwayCode.InternalError;\n // If reason was provided, use that, otherwise use the presence of `err` to determine the reason\n this.log?.error('muxer abort reason=%s error=%s', reason, err);\n // Abort all underlying streams\n for (const stream of this._streams.values()) {\n stream.abort(err);\n }\n // send reason to the other side, allow the other side to close gracefully\n this.sendGoAway(reason);\n this._closeMuxer();\n }\n isClosed() {\n return this.closeController.signal.aborted;\n }\n /**\n * Called when either the local or remote shuts down the muxer\n */\n _closeMuxer() {\n // stop the sink and any other processes\n this.closeController.abort();\n // stop the source\n this.source.end();\n }\n /** Create a new stream */\n _newStream(id, name, state, direction) {\n if (this._streams.get(id) != null) {\n throw new CodeError('Stream already exists', ERR_STREAM_ALREADY_EXISTS, { id });\n }\n const stream = new YamuxStream({\n id: id.toString(),\n name,\n state,\n direction,\n sendFrame: this.sendFrame.bind(this),\n onEnd: () => {\n this.closeStream(id);\n this.onStreamEnd?.(stream);\n },\n log: this.logger.forComponent(`libp2p:yamux:${direction}:${id}`),\n config: this.config,\n getRTT: this.getRTT.bind(this)\n });\n return stream;\n }\n /**\n * closeStream is used to close a stream once both sides have\n * issued a close.\n */\n closeStream(id) {\n if (this.client === (id % 2 === 0)) {\n this.numInboundStreams--;\n }\n else {\n this.numOutboundStreams--;\n }\n this._streams.delete(id);\n }\n async keepAliveLoop() {\n const abortPromise = new Promise((_resolve, reject) => { this.closeController.signal.addEventListener('abort', reject, { once: true }); });\n this.log?.trace('muxer keepalive enabled interval=%s', this.config.keepAliveInterval);\n while (true) {\n let timeoutId;\n try {\n await Promise.race([\n abortPromise,\n new Promise((resolve) => {\n timeoutId = setTimeout(resolve, this.config.keepAliveInterval);\n })\n ]);\n this.ping().catch(e => this.log?.error('ping error: %s', e));\n }\n catch (e) {\n // closed\n clearInterval(timeoutId);\n return;\n }\n }\n }\n async handleFrame(header, readData) {\n const { streamID, type, length } = header;\n this.log?.trace('received frame %o', header);\n if (streamID === 0) {\n switch (type) {\n case FrameType.Ping:\n {\n this.handlePing(header);\n return;\n }\n case FrameType.GoAway:\n {\n this.handleGoAway(length);\n return;\n }\n default:\n // Invalid state\n throw new CodeError('Invalid frame type', ERR_INVALID_FRAME, { header });\n }\n }\n else {\n switch (header.type) {\n case FrameType.Data:\n case FrameType.WindowUpdate:\n {\n await this.handleStreamMessage(header, readData);\n return;\n }\n default:\n // Invalid state\n throw new CodeError('Invalid frame type', ERR_INVALID_FRAME, { header });\n }\n }\n }\n handlePing(header) {\n // If the ping is initiated by the sender, send a response\n if (header.flag === Flag.SYN) {\n this.log?.trace('received ping request pingId=%s', header.length);\n this.sendPing(header.length, Flag.ACK);\n }\n else if (header.flag === Flag.ACK) {\n this.log?.trace('received ping response pingId=%s', header.length);\n this.handlePingResponse(header.length);\n }\n else {\n // Invalid state\n throw new CodeError('Invalid frame flag', ERR_INVALID_FRAME, { header });\n }\n }\n handlePingResponse(pingId) {\n if (this.activePing === undefined) {\n // this ping was not requested\n throw new CodeError('ping not requested', ERR_UNREQUESTED_PING);\n }\n if (this.activePing.id !== pingId) {\n // this ping doesn't match our active ping request\n throw new CodeError('ping doesn\\'t match our id', ERR_NOT_MATCHING_PING);\n }\n // valid ping response\n this.activePing.resolve();\n }\n handleGoAway(reason) {\n this.log?.trace('received GoAway reason=%s', GoAwayCode[reason] ?? 'unknown');\n this.remoteGoAway = reason;\n // If the other side is friendly, they would have already closed all streams before sending a GoAway\n // In case they weren't, reset all streams\n for (const stream of this._streams.values()) {\n stream.reset();\n }\n this._closeMuxer();\n }\n async handleStreamMessage(header, readData) {\n const { streamID, flag, type } = header;\n if ((flag & Flag.SYN) === Flag.SYN) {\n this.incomingStream(streamID);\n }\n const stream = this._streams.get(streamID);\n if (stream === undefined) {\n if (type === FrameType.Data) {\n this.log?.('discarding data for stream id=%s', streamID);\n if (readData === undefined) {\n throw new Error('unreachable');\n }\n await readData();\n }\n else {\n this.log?.('frame for missing stream id=%s', streamID);\n }\n return;\n }\n switch (type) {\n case FrameType.WindowUpdate: {\n stream.handleWindowUpdate(header);\n return;\n }\n case FrameType.Data: {\n if (readData === undefined) {\n throw new Error('unreachable');\n }\n await stream.handleData(header, readData);\n return;\n }\n default:\n throw new Error('unreachable');\n }\n }\n incomingStream(id) {\n if (this.client !== (id % 2 === 0)) {\n throw new CodeError('both endpoints are clients', ERR_BOTH_CLIENTS);\n }\n if (this._streams.has(id)) {\n return;\n }\n this.log?.trace('new incoming stream id=%s', id);\n if (this.localGoAway !== undefined) {\n // reject (reset) immediately if we are doing a go away\n this.sendFrame({\n type: FrameType.WindowUpdate,\n flag: Flag.RST,\n streamID: id,\n length: 0\n });\n return;\n }\n // check against our configured maximum number of inbound streams\n if (this.numInboundStreams >= this.config.maxInboundStreams) {\n this.log?.('maxIncomingStreams exceeded, forcing stream reset');\n this.sendFrame({\n type: FrameType.WindowUpdate,\n flag: Flag.RST,\n streamID: id,\n length: 0\n });\n return;\n }\n // allocate a new stream\n const stream = this._newStream(id, undefined, StreamState.SYNReceived, 'inbound');\n this.numInboundStreams++;\n // the stream should now be tracked\n this._streams.set(id, stream);\n this.onIncomingStream?.(stream);\n }\n sendFrame(header, data) {\n this.log?.trace('sending frame %o', header);\n if (header.type === FrameType.Data) {\n if (data === undefined) {\n throw new CodeError('invalid frame', ERR_INVALID_FRAME);\n }\n this.source.push(new Uint8ArrayList(encodeHeader(header), data));\n }\n else {\n this.source.push(encodeHeader(header));\n }\n }\n sendPing(pingId, flag = Flag.SYN) {\n if (flag === Flag.SYN) {\n this.log?.trace('sending ping request pingId=%s', pingId);\n }\n else {\n this.log?.trace('sending ping response pingId=%s', pingId);\n }\n this.sendFrame({\n type: FrameType.Ping,\n flag,\n streamID: 0,\n length: pingId\n });\n }\n sendGoAway(reason = GoAwayCode.NormalTermination) {\n this.log?.('sending GoAway reason=%s', GoAwayCode[reason]);\n this.localGoAway = reason;\n this.sendFrame({\n type: FrameType.GoAway,\n flag: 0,\n streamID: 0,\n length: reason\n });\n }\n}\nfunction isPromise(thing) {\n return thing != null && typeof thing.then === 'function';\n}\n//# sourceMappingURL=muxer.js.map","/**\n * @packageDocumentation\n *\n * This module is a JavaScript implementation of [Yamux from Hashicorp](https://github.com/hashicorp/yamux/blob/master/spec.md) designed to be used with [js-libp2p](https://github.com/libp2p/js-libp2p).\n *\n * @example Configure libp2p with Yamux\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { yamux } from '@chainsafe/libp2p-yamux'\n *\n * const node = await createLibp2p({\n * // ... other options\n * streamMuxers: [\n * yamux()\n * ]\n * })\n * ```\n *\n * @example Using the low-level API\n *\n * ```js\n * import { yamux } from '@chainsafe/libp2p-yamux'\n * import { pipe } from 'it-pipe'\n * import { duplexPair } from 'it-pair/duplex'\n * import all from 'it-all'\n *\n * // Connect two yamux muxers to demo basic stream multiplexing functionality\n *\n * const clientMuxer = yamux({\n * client: true,\n * onIncomingStream: stream => {\n * // echo data on incoming streams\n * pipe(stream, stream)\n * },\n * onStreamEnd: stream => {\n * // do nothing\n * }\n * })()\n *\n * const serverMuxer = yamux({\n * client: false,\n * onIncomingStream: stream => {\n * // echo data on incoming streams\n * pipe(stream, stream)\n * },\n * onStreamEnd: stream => {\n * // do nothing\n * }\n * })()\n *\n * // `p` is our \"connections\", what we use to connect the two sides\n * // In a real application, a connection is usually to a remote computer\n * const p = duplexPair()\n *\n * // connect the muxers together\n * pipe(p[0], clientMuxer, p[0])\n * pipe(p[1], serverMuxer, p[1])\n *\n * // now either side can open streams\n * const stream0 = clientMuxer.newStream()\n * const stream1 = serverMuxer.newStream()\n *\n * // Send some data to the other side\n * const encoder = new TextEncoder()\n * const data = [encoder.encode('hello'), encoder.encode('world')]\n * pipe(data, stream0)\n *\n * // Receive data back\n * const result = await pipe(stream0, all)\n *\n * // close a stream\n * stream1.close()\n *\n * // close the muxer\n * clientMuxer.close()\n * ```\n */\nimport { Yamux } from './muxer.js';\nexport { GoAwayCode } from './frame.js';\nexport function yamux(init = {}) {\n return (components) => new Yamux(components, init);\n}\n//# sourceMappingURL=index.js.map","/**\n * Any object that implements this Symbol as a property should return a\n * ContentRouting instance as the property value, similar to how\n * `Symbol.Iterable` can be used to return an `Iterable` from an `Iterator`.\n *\n * @example\n *\n * ```js\n * import { contentRouting, ContentRouting } from '@libp2p/content-routing'\n *\n * class MyContentRouter implements ContentRouting {\n * get [contentRouting] () {\n * return this\n * }\n *\n * // ...other methods\n * }\n * ```\n */\nexport const contentRouting = Symbol.for('@libp2p/content-routing');\n//# sourceMappingURL=index.js.map","/**\n * When this error is thrown it means an operation was aborted,\n * usually in response to the `abort` event being emitted by an\n * AbortSignal.\n */\nexport class AbortError extends Error {\n code;\n type;\n constructor(message = 'The operation was aborted') {\n super(message);\n this.code = AbortError.code;\n this.type = AbortError.type;\n }\n static code = 'ABORT_ERR';\n static type = 'aborted';\n}\nexport class CodeError extends Error {\n code;\n props;\n constructor(message, code, props) {\n super(message);\n this.code = code;\n this.name = props?.name ?? 'CodeError';\n this.props = props ?? {}; // eslint-disable-line @typescript-eslint/consistent-type-assertions\n }\n}\nexport class UnexpectedPeerError extends Error {\n code;\n constructor(message = 'Unexpected Peer') {\n super(message);\n this.code = UnexpectedPeerError.code;\n }\n static code = 'ERR_UNEXPECTED_PEER';\n}\nexport class InvalidCryptoExchangeError extends Error {\n code;\n constructor(message = 'Invalid crypto exchange') {\n super(message);\n this.code = InvalidCryptoExchangeError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_EXCHANGE';\n}\nexport class InvalidCryptoTransmissionError extends Error {\n code;\n constructor(message = 'Invalid crypto transmission') {\n super(message);\n this.code = InvalidCryptoTransmissionError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_TRANSMISSION';\n}\n//# sourceMappingURL=errors.js.map","import { setMaxListeners as nodeSetMaxListeners } from 'events';\n/**\n * An implementation of a typed event target\n * etc\n */\nexport class TypedEventEmitter extends EventTarget {\n #listeners = new Map();\n listenerCount(type) {\n const listeners = this.#listeners.get(type);\n if (listeners == null) {\n return 0;\n }\n return listeners.length;\n }\n addEventListener(type, listener, options) {\n super.addEventListener(type, listener, options);\n let list = this.#listeners.get(type);\n if (list == null) {\n list = [];\n this.#listeners.set(type, list);\n }\n list.push({\n callback: listener,\n once: (options !== true && options !== false && options?.once) ?? false\n });\n }\n removeEventListener(type, listener, options) {\n super.removeEventListener(type.toString(), listener ?? null, options);\n let list = this.#listeners.get(type);\n if (list == null) {\n return;\n }\n list = list.filter(({ callback }) => callback !== listener);\n this.#listeners.set(type, list);\n }\n dispatchEvent(event) {\n const result = super.dispatchEvent(event);\n let list = this.#listeners.get(event.type);\n if (list == null) {\n return result;\n }\n list = list.filter(({ once }) => !once);\n this.#listeners.set(event.type, list);\n return result;\n }\n safeDispatchEvent(type, detail) {\n return this.dispatchEvent(new CustomEvent(type, detail));\n }\n}\n/**\n * CustomEvent is a standard event but it's not supported by node.\n *\n * Remove this when https://github.com/nodejs/node/issues/40678 is closed.\n *\n * Ref: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent\n */\nclass CustomEventPolyfill extends Event {\n /** Returns any custom data event was created with. Typically used for synthetic events. */\n detail;\n constructor(message, data) {\n super(message, data);\n // @ts-expect-error could be undefined\n this.detail = data?.detail;\n }\n}\nexport const CustomEvent = globalThis.CustomEvent ?? CustomEventPolyfill;\n// TODO: remove this in v1\nexport { TypedEventEmitter as EventEmitter };\n// create a setMaxListeners that doesn't break browser usage\nexport const setMaxListeners = (n, ...eventTargets) => {\n try {\n nodeSetMaxListeners(n, ...eventTargets);\n }\n catch {\n // swallow error, gulp\n }\n};\n//# sourceMappingURL=events.js.map","/**\n * Any object that implements this Symbol as a property should return a\n * PeerRouting instance as the property value, similar to how\n * `Symbol.Iterable` can be used to return an `Iterable` from an `Iterator`.\n *\n * @example\n *\n * ```js\n * import { peerRouting, PeerRouting } from '@libp2p/peer-routing'\n *\n * class MyPeerRouter implements PeerRouting {\n * get [peerRouting] () {\n * return this\n * }\n *\n * // ...other methods\n * }\n * ```\n */\nexport const peerRouting = Symbol.for('@libp2p/peer-routing');\n//# sourceMappingURL=index.js.map","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n","const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) return new Uint8Array(o)\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n","import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase}\n */\n encode (bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.UnibaseDecoder}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\n */\n decode (text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.CombobaseDecoder}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {Prefix} */ (input[0])\n const decoder = this.decoders[prefix]\n if (decoder) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} left\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} right\n * @returns {ComposedDecoder}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec}\n * @implements {API.MultibaseEncoder}\n * @implements {API.MultibaseDecoder}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseEncode, baseDecode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n return from({\n prefix,\n name,\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input) {\n return decode(input, alphabet, bitsPerChar, name)\n }\n })\n}\n","import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n","import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n})\n\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n})\n\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n})\n\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n})\n","/**\n * @packageDocumentation\n *\n * A logger for libp2p based on the venerable [debug](https://www.npmjs.com/package/debug)\n * module.\n *\n * @example\n *\n * ```JavaScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('libp2p:my:component:name')\n *\n * log('something happened: %s', 'it was ok')\n * log.error('something bad happened: %o', err)\n *\n * log('with this peer: %p', aPeerId)\n * log('and this base58btc: %b', aUint8Array)\n * log('and this base32: %t', aUint8Array)\n * ```\n * ```console\n * $ DEBUG=libp2p:* node index.js\n * something happened: it was ok\n * something bad happened: \n * with this peer: 12D3Foo\n * with this base58btc: Qmfoo\n * with this base32: bafyfoo\n * ```\n */\nimport debug from 'debug';\nimport { base32 } from 'multiformats/bases/base32';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { base64 } from 'multiformats/bases/base64';\nimport { truncatePeerId } from './utils.js';\n// Add a formatter for converting to a base58 string\ndebug.formatters.b = (v) => {\n return v == null ? 'undefined' : base58btc.baseEncode(v);\n};\n// Add a formatter for converting to a base32 string\ndebug.formatters.t = (v) => {\n return v == null ? 'undefined' : base32.baseEncode(v);\n};\n// Add a formatter for converting to a base64 string\ndebug.formatters.m = (v) => {\n return v == null ? 'undefined' : base64.baseEncode(v);\n};\n// Add a formatter for stringifying peer ids\ndebug.formatters.p = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying CIDs\ndebug.formatters.c = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Datastore keys\ndebug.formatters.k = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Multiaddrs\ndebug.formatters.a = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\nfunction createDisabledLogger(namespace) {\n const logger = () => { };\n logger.enabled = false;\n logger.color = '';\n logger.diff = 0;\n logger.log = () => { };\n logger.namespace = namespace;\n logger.destroy = () => true;\n logger.extend = () => logger;\n return logger;\n}\n/**\n * Create a component logger that will prefix any log messages with a truncated\n * peer id.\n *\n * @example\n *\n * ```TypeScript\n * import { peerLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const peerId = peerIdFromString('12D3FooBar')\n * const logger = peerLogger(peerId)\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"12…oBar:my-component hello world\"\n * ```\n */\nexport function peerLogger(peerId, options = {}) {\n return prefixLogger(truncatePeerId(peerId, options));\n}\n/**\n * Create a component logger that will prefix any log messages with the passed\n * string.\n *\n * @example\n *\n * ```TypeScript\n * import { prefixLogger } from '@libp2p/logger'\n *\n * const logger = prefixLogger('my-node')\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-node:my-component hello world\"\n * ```\n */\nexport function prefixLogger(prefix) {\n return {\n forComponent(name) {\n return logger(`${prefix}:${name}`);\n }\n };\n}\n/**\n * Create a component logger\n *\n * @example\n *\n * ```TypeScript\n * import { defaultLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const logger = defaultLogger()\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function defaultLogger() {\n return {\n forComponent(name) {\n return logger(name);\n }\n };\n}\n/**\n * Creates a logger for the passed component name.\n *\n * @example\n *\n * ```TypeScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function logger(name) {\n // trace logging is a no-op by default\n let trace = createDisabledLogger(`${name}:trace`);\n // look at all the debug names and see if trace logging has explicitly been enabled\n if (debug.enabled(`${name}:trace`) && debug.names.map(r => r.toString()).find(n => n.includes(':trace')) != null) {\n trace = debug(`${name}:trace`);\n }\n return Object.assign(debug(name), {\n error: debug(`${name}:error`),\n trace\n });\n}\nexport function disable() {\n debug.disable();\n}\nexport function enable(namespaces) {\n debug.enable(namespaces);\n}\nexport function enabled(namespaces) {\n return debug.enabled(namespaces);\n}\n//# sourceMappingURL=index.js.map","export const symbol = Symbol.for('@libp2p/peer-id');\nexport function isPeerId(other) {\n return other != null && Boolean(other[symbol]);\n}\n//# sourceMappingURL=index.js.map","import { baseX } from './base.js'\n\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n})\n\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n})\n","import { from } from './base.js'\n\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂')\nconst alphabetBytesToChars = /** @type {string[]} */ (alphabet.reduce((p, c, i) => { p[i] = c; return p }, /** @type {string[]} */([])))\nconst alphabetCharsToBytes = /** @type {number[]} */ (alphabet.reduce((p, c, i) => { p[/** @type {number} */ (c.codePointAt(0))] = i; return p }, /** @type {number[]} */([])))\n\n/**\n * @param {Uint8Array} data\n * @returns {string}\n */\nfunction encode (data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c]\n return p\n }, '')\n}\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nfunction decode (str) {\n const byts = []\n for (const char of str) {\n const byt = alphabetCharsToBytes[/** @type {number} */ (char.codePointAt(0))]\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${char}`)\n }\n byts.push(byt)\n }\n return new Uint8Array(byts)\n}\n\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n})\n","import { baseX } from './base.js'\n\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n})\n\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n})\n","// @ts-check\n\nimport { fromString, toString } from '../bytes.js'\nimport { from } from './base.js'\n\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n})\n","// @ts-check\n\n/**\n * @template T\n * @typedef {import('./interface.js').ByteView} ByteView\n */\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nexport const name = 'json'\nexport const code = 0x0200\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView}\n */\nexport const encode = (node) => textEncoder.encode(JSON.stringify(node))\n\n/**\n * @template T\n * @param {ByteView} data\n * @returns {T}\n */\nexport const decode = (data) => JSON.parse(textDecoder.decode(data))\n","var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n \n encode.bytes = offset - oldOffset + 1;\n \n return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length;\n\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\n\n read.bytes = counter - offset;\n\n return res\n}\n\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n};\n\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n","import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n","import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\n const bytes = new Uint8Array(digestOffset + size)\n varint.encodeTo(code, bytes, 0)\n varint.encodeTo(size, bytes, sizeOffset)\n bytes.set(digest, digestOffset)\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n const bytes = coerce(multihash)\n const [code, sizeOffset] = varint.decode(bytes)\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n const digest = bytes.subarray(sizeOffset + digestOffset)\n\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n","import { coerce } from '../bytes.js'\nimport * as Digest from './digest.js'\n\nconst code = 0x0\nconst name = 'identity'\n\n/** @type {(input:Uint8Array) => Uint8Array} */\nconst encode = coerce\n\n/**\n * @param {Uint8Array} input\n * @returns {Digest.Digest}\n */\nconst digest = (input) => Digest.create(code, encode(input))\n\nexport const identity = { code, name, encode, digest }\n","import * as Digest from './digest.js'\n\n/**\n * @template {string} Name\n * @template {number} Code\n * @param {object} options\n * @param {Name} options.name\n * @param {Code} options.code\n * @param {(input: Uint8Array) => Await} options.encode\n */\nexport const from = ({ name, code, encode }) => new Hasher(name, code, encode)\n\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n *\n * @template {string} Name\n * @template {number} Code\n * @class\n * @implements {MultihashHasher}\n */\nexport class Hasher {\n /**\n *\n * @param {Name} name\n * @param {Code} code\n * @param {(input: Uint8Array) => Await} encode\n */\n constructor (name, code, encode) {\n this.name = name\n this.code = code\n this.encode = encode\n }\n\n /**\n * @param {Uint8Array} input\n * @returns {Await>}\n */\n digest (input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input)\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest))\n } else {\n throw Error('Unknown type, must be binary type')\n /* c8 ignore next 1 */\n }\n }\n}\n\n/**\n * @template {number} Alg\n * @typedef {import('./interface.js').MultihashHasher} MultihashHasher\n */\n\n/**\n * @template T\n * @typedef {Promise|T} Await\n */\n","/* global crypto */\n\nimport { from } from './hasher.js'\n\n/**\n * @param {AlgorithmIdentifier} name\n */\nconst sha = name =>\n /**\n * @param {Uint8Array} data\n */\n async data => new Uint8Array(await crypto.subtle.digest(name, data))\n\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n})\n","import { base32 } from './bases/base32.js'\nimport { base58btc } from './bases/base58.js'\nimport { coerce } from './bytes.js'\nimport * as Digest from './hashes/digest.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\nimport * as varint from './varint.js'\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder} [base]\n * @returns {API.ToString}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID} */ (\n CID.createV0(\n /** @type {API.MultihashDigest} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID}\n */\n toV1 () {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash\n const multihash = Digest.create(code, digest)\n return /** @type {CID} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n /**\n * @returns {API.LinkJSON}\n */\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link|U} input\n * @returns {CID|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} digest - (Multi)hash of the of the content.\n * @returns {CID}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\n } else {\n return new CID(version, code, digest, digest.bytes)\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes)\n return new CID(version, code, digest, bytes)\n }\n default: {\n throw new Error('Invalid version')\n }\n }\n }\n\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest} digest - Multihash.\n * @returns {CID}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest} digest - Miltihash of the content.\n * @returns {CID}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView>} bytes\n * @returns {CID}\n */\n static decode (bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes)\n if (remainder.length) {\n throw new Error('Incorrect length')\n }\n return cid\n }\n\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} bytes\n * @returns {[CID, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n */\n static inspectBytes (initialBytes) {\n let offset = 0\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset))\n offset += length\n return i\n }\n\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {CID}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {[Prefix, API.ByteView>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n const { prefix } = base\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n }\n\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes).slice(1)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n const { prefix } = base\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version)\n const hashOffset = codeOffset + varint.encodingLength(code)\n const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n varint.encodeTo(version, bytes, 0)\n varint.encodeTo(code, bytes, codeOffset)\n bytes.set(multihash, hashOffset)\n return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n","// @ts-check\n\nimport * as base10 from './bases/base10.js'\nimport * as base16 from './bases/base16.js'\nimport * as base2 from './bases/base2.js'\nimport * as base256emoji from './bases/base256emoji.js'\nimport * as base32 from './bases/base32.js'\nimport * as base36 from './bases/base36.js'\nimport * as base58 from './bases/base58.js'\nimport * as base64 from './bases/base64.js'\nimport * as base8 from './bases/base8.js'\nimport * as identityBase from './bases/identity.js'\nimport * as json from './codecs/json.js'\nimport * as raw from './codecs/raw.js'\nimport * as identity from './hashes/identity.js'\nimport * as sha2 from './hashes/sha2.js'\nimport { CID, hasher, digest, varint, bytes } from './index.js'\n\nconst bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji }\nconst hashes = { ...sha2, ...identity }\nconst codecs = { raw, json }\n\nexport { CID, hasher, digest, varint, bytes, hashes, bases, codecs }\n","/**\n * Returns true if the two passed Uint8Arrays have the same content\n */\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=equals.js.map","/**\n * @packageDocumentation\n *\n * An implementation of a peer id\n *\n * @example\n *\n * ```JavaScript\n * import { peerIdFromString } from '@libp2p/peer-id'\n * const peer = peerIdFromString('k51qzi5uqu5dkwkqm42v9j9kqcam2jiuvloi16g72i4i4amoo2m8u3ol3mqu6s')\n *\n * console.log(peer.toCid()) // CID(bafzaa...)\n * console.log(peer.toString()) // \"12D3K...\"\n * ```\n */\nimport { CodeError } from '@libp2p/interface/errors';\nimport { symbol } from '@libp2p/interface/peer-id';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { bases } from 'multiformats/basics';\nimport { CID } from 'multiformats/cid';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nconst inspect = Symbol.for('nodejs.util.inspect.custom');\nconst baseDecoder = Object\n .values(bases)\n .map(codec => codec.decoder)\n // @ts-expect-error https://github.com/multiformats/js-multiformats/issues/141\n .reduce((acc, curr) => acc.or(curr), bases.identity.decoder);\n// these values are from https://github.com/multiformats/multicodec/blob/master/table.csv\nconst LIBP2P_KEY_CODE = 0x72;\nconst MARSHALLED_ED225519_PUBLIC_KEY_LENGTH = 36;\nconst MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH = 37;\nclass PeerIdImpl {\n type;\n multihash;\n privateKey;\n publicKey;\n string;\n constructor(init) {\n this.type = init.type;\n this.multihash = init.multihash;\n this.privateKey = init.privateKey;\n // mark string cache as non-enumerable\n Object.defineProperty(this, 'string', {\n enumerable: false,\n writable: true\n });\n }\n get [Symbol.toStringTag]() {\n return `PeerId(${this.toString()})`;\n }\n [symbol] = true;\n toString() {\n if (this.string == null) {\n this.string = base58btc.encode(this.multihash.bytes).slice(1);\n }\n return this.string;\n }\n // return self-describing String representation\n // in default format from RFC 0001: https://github.com/libp2p/specs/pull/209\n toCID() {\n return CID.createV1(LIBP2P_KEY_CODE, this.multihash);\n }\n toBytes() {\n return this.multihash.bytes;\n }\n /**\n * Returns Multiaddr as a JSON string\n */\n toJSON() {\n return this.toString();\n }\n /**\n * Checks the equality of `this` peer against a given PeerId\n */\n equals(id) {\n if (id instanceof Uint8Array) {\n return uint8ArrayEquals(this.multihash.bytes, id);\n }\n else if (typeof id === 'string') {\n return peerIdFromString(id).equals(this);\n }\n else if (id?.multihash?.bytes != null) {\n return uint8ArrayEquals(this.multihash.bytes, id.multihash.bytes);\n }\n else {\n throw new Error('not valid Id');\n }\n }\n /**\n * Returns PeerId as a human-readable string\n * https://nodejs.org/api/util.html#utilinspectcustom\n *\n * @example\n * ```js\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * console.info(peerIdFromString('QmFoo'))\n * // 'PeerId(QmFoo)'\n * ```\n */\n [inspect]() {\n return `PeerId(${this.toString()})`;\n }\n}\nclass RSAPeerIdImpl extends PeerIdImpl {\n type = 'RSA';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'RSA' });\n this.publicKey = init.publicKey;\n }\n}\nclass Ed25519PeerIdImpl extends PeerIdImpl {\n type = 'Ed25519';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'Ed25519' });\n this.publicKey = init.multihash.digest;\n }\n}\nclass Secp256k1PeerIdImpl extends PeerIdImpl {\n type = 'secp256k1';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'secp256k1' });\n this.publicKey = init.multihash.digest;\n }\n}\nexport function createPeerId(init) {\n if (init.type === 'RSA') {\n return new RSAPeerIdImpl(init);\n }\n if (init.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(init);\n }\n if (init.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(init);\n }\n throw new CodeError('Type must be \"RSA\", \"Ed25519\" or \"secp256k1\"', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromPeerId(other) {\n if (other.type === 'RSA') {\n return new RSAPeerIdImpl(other);\n }\n if (other.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(other);\n }\n if (other.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(other);\n }\n throw new CodeError('Not a PeerId', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromString(str, decoder) {\n decoder = decoder ?? baseDecoder;\n if (str.charAt(0) === '1' || str.charAt(0) === 'Q') {\n // identity hash ed25519/secp256k1 key or sha2-256 hash of\n // rsa public key - base58btc encoded either way\n const multihash = Digest.decode(base58btc.decode(`z${str}`));\n if (str.startsWith('12D')) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (str.startsWith('16U')) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n else {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n return peerIdFromBytes(baseDecoder.decode(str));\n}\nexport function peerIdFromBytes(buf) {\n try {\n const multihash = Digest.decode(buf);\n if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n }\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n catch {\n return peerIdFromCID(CID.decode(buf));\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\nexport function peerIdFromCID(cid) {\n if (cid == null || cid.multihash == null || cid.version == null || (cid.version === 1 && cid.code !== LIBP2P_KEY_CODE)) {\n throw new Error('Supplied PeerID CID is invalid');\n }\n const multihash = cid.multihash;\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: cid.multihash });\n }\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\n/**\n * @param publicKey - A marshalled public key\n * @param privateKey - A marshalled private key\n */\nexport async function peerIdFromKeys(publicKey, privateKey) {\n if (publicKey.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n if (publicKey.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n return new RSAPeerIdImpl({ multihash: await sha256.digest(publicKey), publicKey, privateKey });\n}\n//# sourceMappingURL=index.js.map","import * as varint from 'uint8-varint';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { convertToBytes, convertToString } from './convert.js';\nimport { getProtocol } from './protocols-table.js';\nexport function stringToMultiaddrParts(str) {\n str = cleanPath(str);\n const tuples = [];\n const stringTuples = [];\n let path = null;\n const parts = str.split('/').slice(1);\n if (parts.length === 1 && parts[0] === '') {\n return {\n bytes: new Uint8Array(),\n string: '/',\n tuples: [],\n stringTuples: [],\n path: null\n };\n }\n for (let p = 0; p < parts.length; p++) {\n const part = parts[p];\n const proto = getProtocol(part);\n if (proto.size === 0) {\n tuples.push([proto.code]);\n stringTuples.push([proto.code]);\n // eslint-disable-next-line no-continue\n continue;\n }\n p++; // advance addr part\n if (p >= parts.length) {\n throw ParseError('invalid address: ' + str);\n }\n // if it's a path proto, take the rest\n if (proto.path === true) {\n // should we need to check each path part to see if it's a proto?\n // This would allow for other protocols to be added after a unix path,\n // however it would have issues if the path had a protocol name in the path\n path = cleanPath(parts.slice(p).join('/'));\n tuples.push([proto.code, convertToBytes(proto.code, path)]);\n stringTuples.push([proto.code, path]);\n break;\n }\n const bytes = convertToBytes(proto.code, parts[p]);\n tuples.push([proto.code, bytes]);\n stringTuples.push([proto.code, convertToString(proto.code, bytes)]);\n }\n return {\n string: stringTuplesToString(stringTuples),\n bytes: tuplesToBytes(tuples),\n tuples,\n stringTuples,\n path\n };\n}\nexport function bytesToMultiaddrParts(bytes) {\n const tuples = [];\n const stringTuples = [];\n let path = null;\n let i = 0;\n while (i < bytes.length) {\n const code = varint.decode(bytes, i);\n const n = varint.encodingLength(code);\n const p = getProtocol(code);\n const size = sizeForAddr(p, bytes.slice(i + n));\n if (size === 0) {\n tuples.push([code]);\n stringTuples.push([code]);\n i += n;\n // eslint-disable-next-line no-continue\n continue;\n }\n const addr = bytes.slice(i + n, i + n + size);\n i += (size + n);\n if (i > bytes.length) { // did not end _exactly_ at buffer.length\n throw ParseError('Invalid address Uint8Array: ' + uint8ArrayToString(bytes, 'base16'));\n }\n // ok, tuple seems good.\n tuples.push([code, addr]);\n const stringAddr = convertToString(code, addr);\n stringTuples.push([code, stringAddr]);\n if (p.path === true) {\n // should we need to check each path part to see if it's a proto?\n // This would allow for other protocols to be added after a unix path,\n // however it would have issues if the path had a protocol name in the path\n path = stringAddr;\n break;\n }\n }\n return {\n bytes: Uint8Array.from(bytes),\n string: stringTuplesToString(stringTuples),\n tuples,\n stringTuples,\n path\n };\n}\n/**\n * [[str name, str addr]... ] -> string\n */\nfunction stringTuplesToString(tuples) {\n const parts = [];\n tuples.map((tup) => {\n const proto = getProtocol(tup[0]);\n parts.push(proto.name);\n if (tup.length > 1 && tup[1] != null) {\n parts.push(tup[1]);\n }\n return null;\n });\n return cleanPath(parts.join('/'));\n}\n/**\n * [[int code, Uint8Array ]... ] -> Uint8Array\n */\nexport function tuplesToBytes(tuples) {\n return uint8ArrayConcat(tuples.map((tup) => {\n const proto = getProtocol(tup[0]);\n let buf = Uint8Array.from(varint.encode(proto.code));\n if (tup.length > 1 && tup[1] != null) {\n buf = uint8ArrayConcat([buf, tup[1]]); // add address buffer\n }\n return buf;\n }));\n}\n/**\n * For the passed address, return the serialized size\n */\nfunction sizeForAddr(p, addr) {\n if (p.size > 0) {\n return p.size / 8;\n }\n else if (p.size === 0) {\n return 0;\n }\n else {\n const size = varint.decode(addr instanceof Uint8Array ? addr : Uint8Array.from(addr));\n return size + varint.encodingLength(size);\n }\n}\nexport function bytesToTuples(buf) {\n const tuples = [];\n let i = 0;\n while (i < buf.length) {\n const code = varint.decode(buf, i);\n const n = varint.encodingLength(code);\n const p = getProtocol(code);\n const size = sizeForAddr(p, buf.slice(i + n));\n if (size === 0) {\n tuples.push([code]);\n i += n;\n // eslint-disable-next-line no-continue\n continue;\n }\n const addr = buf.slice(i + n, i + n + size);\n i += (size + n);\n if (i > buf.length) { // did not end _exactly_ at buffer.length\n throw ParseError('Invalid address Uint8Array: ' + uint8ArrayToString(buf, 'base16'));\n }\n // ok, tuple seems good.\n tuples.push([code, addr]);\n }\n return tuples;\n}\nexport function cleanPath(str) {\n return '/' + str.trim().split('/').filter((a) => a).join('/');\n}\nexport function ParseError(str) {\n return new Error('Error parsing address: ' + str);\n}\n//# sourceMappingURL=codec.js.map","/**\n * @packageDocumentation\n *\n * An implementation of a Multiaddr in JavaScript\n *\n * @example\n *\n * ```js\n * import { multiaddr } from '@multiformats/multiaddr'\n *\n * const ma = multiaddr('/ip4/127.0.0.1/tcp/1234')\n * ```\n */\nimport { base58btc } from 'multiformats/bases/base58';\nimport { CID } from 'multiformats/cid';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { bytesToMultiaddrParts, stringToMultiaddrParts, tuplesToBytes } from './codec.js';\nimport { getProtocol, names } from './protocols-table.js';\nimport { isMultiaddr, multiaddr, resolvers } from './index.js';\nconst inspect = Symbol.for('nodejs.util.inspect.custom');\nexport const symbol = Symbol.for('@multiformats/js-multiaddr/multiaddr');\nconst DNS_CODES = [\n getProtocol('dns').code,\n getProtocol('dns4').code,\n getProtocol('dns6').code,\n getProtocol('dnsaddr').code\n];\nclass NoAvailableResolverError extends Error {\n constructor(message = 'No available resolver') {\n super(message);\n this.name = 'NoAvailableResolverError';\n }\n}\n/**\n * Creates a {@link Multiaddr} from a {@link MultiaddrInput}\n */\nexport class Multiaddr {\n bytes;\n #string;\n #tuples;\n #stringTuples;\n #path;\n [symbol] = true;\n constructor(addr) {\n // default\n if (addr == null) {\n addr = '';\n }\n let parts;\n if (addr instanceof Uint8Array) {\n parts = bytesToMultiaddrParts(addr);\n }\n else if (typeof addr === 'string') {\n if (addr.length > 0 && addr.charAt(0) !== '/') {\n throw new Error(`multiaddr \"${addr}\" must start with a \"/\"`);\n }\n parts = stringToMultiaddrParts(addr);\n }\n else if (isMultiaddr(addr)) { // Multiaddr\n parts = bytesToMultiaddrParts(addr.bytes);\n }\n else {\n throw new Error('addr must be a string, Buffer, or another Multiaddr');\n }\n this.bytes = parts.bytes;\n this.#string = parts.string;\n this.#tuples = parts.tuples;\n this.#stringTuples = parts.stringTuples;\n this.#path = parts.path;\n }\n toString() {\n return this.#string;\n }\n toJSON() {\n return this.toString();\n }\n toOptions() {\n let family;\n let transport;\n let host;\n let port;\n let zone = '';\n const tcp = getProtocol('tcp');\n const udp = getProtocol('udp');\n const ip4 = getProtocol('ip4');\n const ip6 = getProtocol('ip6');\n const dns6 = getProtocol('dns6');\n const ip6zone = getProtocol('ip6zone');\n for (const [code, value] of this.stringTuples()) {\n if (code === ip6zone.code) {\n zone = `%${value ?? ''}`;\n }\n // default to https when protocol & port are omitted from DNS addrs\n if (DNS_CODES.includes(code)) {\n transport = tcp.name;\n port = 443;\n host = `${value ?? ''}${zone}`;\n family = code === dns6.code ? 6 : 4;\n }\n if (code === tcp.code || code === udp.code) {\n transport = getProtocol(code).name;\n port = parseInt(value ?? '');\n }\n if (code === ip4.code || code === ip6.code) {\n transport = getProtocol(code).name;\n host = `${value ?? ''}${zone}`;\n family = code === ip6.code ? 6 : 4;\n }\n }\n if (family == null || transport == null || host == null || port == null) {\n throw new Error('multiaddr must have a valid format: \"/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}\".');\n }\n const opts = {\n family,\n host,\n transport,\n port\n };\n return opts;\n }\n protos() {\n return this.#tuples.map(([code]) => Object.assign({}, getProtocol(code)));\n }\n protoCodes() {\n return this.#tuples.map(([code]) => code);\n }\n protoNames() {\n return this.#tuples.map(([code]) => getProtocol(code).name);\n }\n tuples() {\n return this.#tuples;\n }\n stringTuples() {\n return this.#stringTuples;\n }\n encapsulate(addr) {\n addr = new Multiaddr(addr);\n return new Multiaddr(this.toString() + addr.toString());\n }\n decapsulate(addr) {\n const addrString = addr.toString();\n const s = this.toString();\n const i = s.lastIndexOf(addrString);\n if (i < 0) {\n throw new Error(`Address ${this.toString()} does not contain subaddress: ${addr.toString()}`);\n }\n return new Multiaddr(s.slice(0, i));\n }\n decapsulateCode(code) {\n const tuples = this.tuples();\n for (let i = tuples.length - 1; i >= 0; i--) {\n if (tuples[i][0] === code) {\n return new Multiaddr(tuplesToBytes(tuples.slice(0, i)));\n }\n }\n return this;\n }\n getPeerId() {\n try {\n let tuples = [];\n this.stringTuples().forEach(([code, name]) => {\n if (code === names.p2p.code) {\n tuples.push([code, name]);\n }\n // if this is a p2p-circuit address, return the target peer id if present\n // not the peer id of the relay\n if (code === names['p2p-circuit'].code) {\n tuples = [];\n }\n });\n // Get the last ipfs tuple ['p2p', 'peerid string']\n const tuple = tuples.pop();\n if (tuple?.[1] != null) {\n const peerIdStr = tuple[1];\n // peer id is base58btc encoded string but not multibase encoded so add the `z`\n // prefix so we can validate that it is correctly encoded\n if (peerIdStr[0] === 'Q' || peerIdStr[0] === '1') {\n return uint8ArrayToString(base58btc.decode(`z${peerIdStr}`), 'base58btc');\n }\n // try to parse peer id as CID\n return uint8ArrayToString(CID.parse(peerIdStr).multihash.bytes, 'base58btc');\n }\n return null;\n }\n catch (e) {\n return null;\n }\n }\n getPath() {\n return this.#path;\n }\n equals(addr) {\n return uint8ArrayEquals(this.bytes, addr.bytes);\n }\n async resolve(options) {\n const resolvableProto = this.protos().find((p) => p.resolvable);\n // Multiaddr is not resolvable?\n if (resolvableProto == null) {\n return [this];\n }\n const resolver = resolvers.get(resolvableProto.name);\n if (resolver == null) {\n throw new NoAvailableResolverError(`no available resolver for ${resolvableProto.name}`);\n }\n const result = await resolver(this, options);\n return result.map(str => multiaddr(str));\n }\n nodeAddress() {\n const options = this.toOptions();\n if (options.transport !== 'tcp' && options.transport !== 'udp') {\n throw new Error(`multiaddr must have a valid format - no protocol with name: \"${options.transport}\". Must have a valid transport protocol: \"{tcp, udp}\"`);\n }\n return {\n family: options.family,\n address: options.host,\n port: options.port\n };\n }\n isThinWaistAddress(addr) {\n const protos = (addr ?? this).protos();\n if (protos.length !== 2) {\n return false;\n }\n if (protos[0].code !== 4 && protos[0].code !== 41) {\n return false;\n }\n if (protos[1].code !== 6 && protos[1].code !== 273) {\n return false;\n }\n return true;\n }\n /**\n * Returns Multiaddr as a human-readable string\n * https://nodejs.org/api/util.html#utilinspectcustom\n *\n * @example\n * ```js\n * import { multiaddr } from '@multiformats/multiaddr'\n *\n * console.info(multiaddr('/ip4/127.0.0.1/tcp/4001'))\n * // 'Multiaddr(/ip4/127.0.0.1/tcp/4001)'\n * ```\n */\n [inspect]() {\n return `Multiaddr(${this.#string})`;\n }\n}\n//# sourceMappingURL=multiaddr.js.map","/**\n * @packageDocumentation\n *\n * A standard way to represent addresses that\n *\n * - support any standard network protocol\n * - are self-describing\n * - have a binary packed format\n * - have a nice string representation\n * - encapsulate well\n *\n * @example\n *\n * ```TypeScript\n * import { multiaddr } from '@multiformats/multiaddr'\n * const addr = multiaddr(\"/ip4/127.0.0.1/udp/1234\")\n * // Multiaddr(/ip4/127.0.0.1/udp/1234)\n *\n * const addr = multiaddr(\"/ip4/127.0.0.1/udp/1234\")\n * // Multiaddr(/ip4/127.0.0.1/udp/1234)\n *\n * addr.bytes\n * // \n *\n * addr.toString()\n * // '/ip4/127.0.0.1/udp/1234'\n *\n * addr.protos()\n * // [\n * // {code: 4, name: 'ip4', size: 32},\n * // {code: 273, name: 'udp', size: 16}\n * // ]\n *\n * // gives you an object that is friendly with what Node.js core modules expect for addresses\n * addr.nodeAddress()\n * // {\n * // family: 4,\n * // port: 1234,\n * // address: \"127.0.0.1\"\n * // }\n *\n * addr.encapsulate('/sctp/5678')\n * // Multiaddr(/ip4/127.0.0.1/udp/1234/sctp/5678)\n * ```\n *\n * ## Resolving DNSADDR addresses\n *\n * [DNSADDR](https://github.com/multiformats/multiaddr/blob/master/protocols/DNSADDR.md) is a spec that allows storing a TXT DNS record that contains a Multiaddr.\n *\n * To resolve DNSADDR addresses, call the `.resolve()` function the multiaddr, optionally passing a `DNS` resolver.\n *\n * DNSADDR addresses can resolve to multiple multiaddrs, since there is no limit to the number of TXT records that can be stored.\n *\n * @example Resolving DNSADDR Multiaddrs\n *\n * ```TypeScript\n * import { multiaddr, resolvers } from '@multiformats/multiaddr'\n * import { dnsaddr } from '@multiformats/multiaddr/resolvers'\n *\n * resolvers.set('dnsaddr', dnsaddr)\n *\n * const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io')\n *\n * // resolve with a 5s timeout\n * const resolved = await ma.resolve({\n * signal: AbortSignal.timeout(5000)\n * })\n *\n * console.info(await ma.resolve(resolved)\n * // [Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...')...]\n * ```\n *\n * @example Using a custom DNS resolver to resolve DNSADDR Multiaddrs\n *\n * See the docs for [@multiformats/dns](https://www.npmjs.com/package/@multiformats/dns) for a full breakdown of how to specify multiple resolvers or resolvers that can be used for specific TLDs.\n *\n * ```TypeScript\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { dns } from '@multiformats/dns'\n * import { dnsJsonOverHttps } from '@multiformats/dns/resolvers'\n *\n * const resolver = dns({\n * '.': dnsJsonOverHttps('https://cloudflare-dns.com/dns-query')\n * })\n *\n * const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io')\n * const resolved = await ma.resolve({\n * dns: resolver\n * })\n *\n * console.info(resolved)\n * // [Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...')...]\n * ```\n */\nimport { Multiaddr as MultiaddrClass, symbol } from './multiaddr.js';\nimport { getProtocol } from './protocols-table.js';\n/**\n * All configured {@link Resolver}s\n */\nexport const resolvers = new Map();\nexport { MultiaddrFilter } from './filter/multiaddr-filter.js';\n/**\n * Creates a Multiaddr from a node-friendly address object\n *\n * @example\n * ```js\n * import { fromNodeAddress } from '@multiformats/multiaddr'\n *\n * fromNodeAddress({address: '127.0.0.1', port: '4001'}, 'tcp')\n * // Multiaddr(/ip4/127.0.0.1/tcp/4001)\n * ```\n */\nexport function fromNodeAddress(addr, transport) {\n if (addr == null) {\n throw new Error('requires node address object');\n }\n if (transport == null) {\n throw new Error('requires transport protocol');\n }\n let ip;\n let host = addr.address;\n switch (addr.family) {\n case 4:\n ip = 'ip4';\n break;\n case 6:\n ip = 'ip6';\n if (host.includes('%')) {\n const parts = host.split('%');\n if (parts.length !== 2) {\n throw Error('Multiple ip6 zones in multiaddr');\n }\n host = parts[0];\n const zone = parts[1];\n ip = `/ip6zone/${zone}/ip6`;\n }\n break;\n default:\n throw Error('Invalid addr family, should be 4 or 6.');\n }\n return new MultiaddrClass('/' + [ip, host, transport, addr.port].join('/'));\n}\n/**\n * Returns if something is a {@link Multiaddr} that is a resolvable name\n *\n * @example\n *\n * ```js\n * import { isName, multiaddr } from '@multiformats/multiaddr'\n *\n * isName(multiaddr('/ip4/127.0.0.1'))\n * // false\n * isName(multiaddr('/dns/ipfs.io'))\n * // true\n * ```\n */\nexport function isName(addr) {\n if (!isMultiaddr(addr)) {\n return false;\n }\n // if a part of the multiaddr is resolvable, then return true\n return addr.protos().some((proto) => proto.resolvable);\n}\n/**\n * Check if object is a {@link Multiaddr} instance\n *\n * @example\n *\n * ```js\n * import { isMultiaddr, multiaddr } from '@multiformats/multiaddr'\n *\n * isMultiaddr(5)\n * // false\n * isMultiaddr(multiaddr('/ip4/127.0.0.1'))\n * // true\n * ```\n */\nexport function isMultiaddr(value) {\n return Boolean(value?.[symbol]);\n}\n/**\n * A function that takes a {@link MultiaddrInput} and returns a {@link Multiaddr}\n *\n * @example\n * ```js\n * import { multiaddr } from '@libp2p/multiaddr'\n *\n * multiaddr('/ip4/127.0.0.1/tcp/4001')\n * // Multiaddr(/ip4/127.0.0.1/tcp/4001)\n * ```\n *\n * @param {MultiaddrInput} [addr] - If String or Uint8Array, needs to adhere to the address format of a [multiaddr](https://github.com/multiformats/multiaddr#string-format)\n */\nexport function multiaddr(addr) {\n return new MultiaddrClass(addr);\n}\nexport { getProtocol as protocols };\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Allows treating a browser readable stream as an async iterator.\n *\n * @example\n *\n * ```javascript\n * import toIt from 'browser-readablestream-to-it'\n * import all from 'it-all'\n *\n * const content = [0, 1, 2, 3, 4]\n *\n * const stream = new ReadableStream({\n * start(controller) {\n * for (let i = 0; i < content.length; i++) {\n * controller.enqueue(content[i])\n * }\n *\n * controller.close()\n * }\n * })\n *\n * const arr = await all(toIt(stream))\n *\n * console.info(arr) // 0, 1, 2, 3, 4\n * ```\n *\n * ## preventCancel\n *\n * By default a readable stream will have [.cancel](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/cancel) called on it once it has ended or\n * reading has stopped prematurely.\n *\n * To prevent this behaviour, pass `preventCancel: true` as an option:\n *\n * ```javascript\n * const arr = await all(toIt(stream, { preventCancel: true }))\n *\n * console.info(arr) // 0, 1, 2, 3, 4\n * ```\n */\n/**\n * Turns a browser readable stream into an async iterable. Async iteration over\n * returned iterable will lock give stream, preventing any other consumer from\n * acquiring a reader. The lock will be released if iteration loop is broken. To\n * prevent stream cancelling optional `{ preventCancel: true }` could be passed\n * as a second argument.\n */\nexport default async function* browserReadableStreamToIt(stream, options = {}) {\n const reader = stream.getReader();\n try {\n while (true) {\n const result = await reader.read();\n if (result.done) {\n return;\n }\n yield result.value;\n }\n }\n finally {\n if (options.preventCancel !== true) {\n await reader.cancel();\n }\n reader.releaseLock();\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * When this error is thrown it means an operation was aborted,\n * usually in response to the `abort` event being emitted by an\n * AbortSignal.\n */\nexport class AbortError extends Error {\n code;\n type;\n constructor(message = 'The operation was aborted') {\n super(message);\n this.code = AbortError.code;\n this.type = AbortError.type;\n }\n static code = 'ABORT_ERR';\n static type = 'aborted';\n}\nexport class CodeError extends Error {\n code;\n props;\n constructor(message, code, props) {\n super(message);\n this.code = code;\n this.name = props?.name ?? 'CodeError';\n this.props = props ?? {}; // eslint-disable-line @typescript-eslint/consistent-type-assertions\n }\n}\nexport class UnexpectedPeerError extends Error {\n code;\n constructor(message = 'Unexpected Peer') {\n super(message);\n this.code = UnexpectedPeerError.code;\n }\n static code = 'ERR_UNEXPECTED_PEER';\n}\nexport class InvalidCryptoExchangeError extends Error {\n code;\n constructor(message = 'Invalid crypto exchange') {\n super(message);\n this.code = InvalidCryptoExchangeError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_EXCHANGE';\n}\nexport class InvalidCryptoTransmissionError extends Error {\n code;\n constructor(message = 'Invalid crypto transmission') {\n super(message);\n this.code = InvalidCryptoTransmissionError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_TRANSMISSION';\n}\n//# sourceMappingURL=errors.js.map","/**\n * To guarantee Uint8Array semantics, convert nodejs Buffers\n * into vanilla Uint8Arrays\n */\nexport function asUint8Array(buf) {\n if (globalThis.Buffer != null) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n return buf;\n}\n//# sourceMappingURL=as-uint8array.js.map","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n","const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) return new Uint8Array(o)\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n","import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase}\n */\n encode (bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.UnibaseDecoder}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\n */\n decode (text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.CombobaseDecoder}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {Prefix} */ (input[0])\n const decoder = this.decoders[prefix]\n if (decoder) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} left\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} right\n * @returns {ComposedDecoder}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec}\n * @implements {API.MultibaseEncoder}\n * @implements {API.MultibaseDecoder}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseEncode, baseDecode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n return from({\n prefix,\n name,\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input) {\n return decode(input, alphabet, bitsPerChar, name)\n }\n })\n}\n","import { baseX } from './base.js'\n\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n})\n\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n})\n","import { from } from './base.js'\n\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂')\nconst alphabetBytesToChars = /** @type {string[]} */ (alphabet.reduce((p, c, i) => { p[i] = c; return p }, /** @type {string[]} */([])))\nconst alphabetCharsToBytes = /** @type {number[]} */ (alphabet.reduce((p, c, i) => { p[/** @type {number} */ (c.codePointAt(0))] = i; return p }, /** @type {number[]} */([])))\n\n/**\n * @param {Uint8Array} data\n * @returns {string}\n */\nfunction encode (data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c]\n return p\n }, '')\n}\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nfunction decode (str) {\n const byts = []\n for (const char of str) {\n const byt = alphabetCharsToBytes[/** @type {number} */ (char.codePointAt(0))]\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${char}`)\n }\n byts.push(byt)\n }\n return new Uint8Array(byts)\n}\n\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n})\n","import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n","import { baseX } from './base.js'\n\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n})\n\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n})\n","import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n})\n\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n})\n\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n})\n\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n})\n","// @ts-check\n\nimport { fromString, toString } from '../bytes.js'\nimport { from } from './base.js'\n\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n})\n","// @ts-check\n\n/**\n * @template T\n * @typedef {import('./interface.js').ByteView} ByteView\n */\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nexport const name = 'json'\nexport const code = 0x0200\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView}\n */\nexport const encode = (node) => textEncoder.encode(JSON.stringify(node))\n\n/**\n * @template T\n * @param {ByteView} data\n * @returns {T}\n */\nexport const decode = (data) => JSON.parse(textDecoder.decode(data))\n","var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n \n encode.bytes = offset - oldOffset + 1;\n \n return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length;\n\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\n\n read.bytes = counter - offset;\n\n return res\n}\n\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n};\n\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n","import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n","import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\n const bytes = new Uint8Array(digestOffset + size)\n varint.encodeTo(code, bytes, 0)\n varint.encodeTo(size, bytes, sizeOffset)\n bytes.set(digest, digestOffset)\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n const bytes = coerce(multihash)\n const [code, sizeOffset] = varint.decode(bytes)\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n const digest = bytes.subarray(sizeOffset + digestOffset)\n\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n","import { coerce } from '../bytes.js'\nimport * as Digest from './digest.js'\n\nconst code = 0x0\nconst name = 'identity'\n\n/** @type {(input:Uint8Array) => Uint8Array} */\nconst encode = coerce\n\n/**\n * @param {Uint8Array} input\n * @returns {Digest.Digest}\n */\nconst digest = (input) => Digest.create(code, encode(input))\n\nexport const identity = { code, name, encode, digest }\n","import * as Digest from './digest.js'\n\n/**\n * @template {string} Name\n * @template {number} Code\n * @param {object} options\n * @param {Name} options.name\n * @param {Code} options.code\n * @param {(input: Uint8Array) => Await} options.encode\n */\nexport const from = ({ name, code, encode }) => new Hasher(name, code, encode)\n\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n *\n * @template {string} Name\n * @template {number} Code\n * @class\n * @implements {MultihashHasher}\n */\nexport class Hasher {\n /**\n *\n * @param {Name} name\n * @param {Code} code\n * @param {(input: Uint8Array) => Await} encode\n */\n constructor (name, code, encode) {\n this.name = name\n this.code = code\n this.encode = encode\n }\n\n /**\n * @param {Uint8Array} input\n * @returns {Await>}\n */\n digest (input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input)\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest))\n } else {\n throw Error('Unknown type, must be binary type')\n /* c8 ignore next 1 */\n }\n }\n}\n\n/**\n * @template {number} Alg\n * @typedef {import('./interface.js').MultihashHasher} MultihashHasher\n */\n\n/**\n * @template T\n * @typedef {Promise|T} Await\n */\n","/* global crypto */\n\nimport { from } from './hasher.js'\n\n/**\n * @param {AlgorithmIdentifier} name\n */\nconst sha = name =>\n /**\n * @param {Uint8Array} data\n */\n async data => new Uint8Array(await crypto.subtle.digest(name, data))\n\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n})\n","import { base32 } from './bases/base32.js'\nimport { base58btc } from './bases/base58.js'\nimport { coerce } from './bytes.js'\nimport * as Digest from './hashes/digest.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\nimport * as varint from './varint.js'\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder} [base]\n * @returns {API.ToString}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID} */ (\n CID.createV0(\n /** @type {API.MultihashDigest} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID}\n */\n toV1 () {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash\n const multihash = Digest.create(code, digest)\n return /** @type {CID} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n /**\n * @returns {API.LinkJSON}\n */\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link|U} input\n * @returns {CID|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} digest - (Multi)hash of the of the content.\n * @returns {CID}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\n } else {\n return new CID(version, code, digest, digest.bytes)\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes)\n return new CID(version, code, digest, bytes)\n }\n default: {\n throw new Error('Invalid version')\n }\n }\n }\n\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest} digest - Multihash.\n * @returns {CID}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest} digest - Miltihash of the content.\n * @returns {CID}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView>} bytes\n * @returns {CID}\n */\n static decode (bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes)\n if (remainder.length) {\n throw new Error('Incorrect length')\n }\n return cid\n }\n\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} bytes\n * @returns {[CID, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n */\n static inspectBytes (initialBytes) {\n let offset = 0\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset))\n offset += length\n return i\n }\n\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {CID}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {[Prefix, API.ByteView>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n const { prefix } = base\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n }\n\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes).slice(1)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n const { prefix } = base\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version)\n const hashOffset = codeOffset + varint.encodingLength(code)\n const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n varint.encodeTo(version, bytes, 0)\n varint.encodeTo(code, bytes, codeOffset)\n bytes.set(multihash, hashOffset)\n return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n","// @ts-check\n\nimport * as base10 from './bases/base10.js'\nimport * as base16 from './bases/base16.js'\nimport * as base2 from './bases/base2.js'\nimport * as base256emoji from './bases/base256emoji.js'\nimport * as base32 from './bases/base32.js'\nimport * as base36 from './bases/base36.js'\nimport * as base58 from './bases/base58.js'\nimport * as base64 from './bases/base64.js'\nimport * as base8 from './bases/base8.js'\nimport * as identityBase from './bases/identity.js'\nimport * as json from './codecs/json.js'\nimport * as raw from './codecs/raw.js'\nimport * as identity from './hashes/identity.js'\nimport * as sha2 from './hashes/sha2.js'\nimport { CID, hasher, digest, varint, bytes } from './index.js'\n\nconst bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji }\nconst hashes = { ...sha2, ...identity }\nconst codecs = { raw, json }\n\nexport { CID, hasher, digest, varint, bytes, hashes, bases, codecs }\n","import { asUint8Array } from './util/as-uint8array.js';\n/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc(size = 0) {\n if (globalThis.Buffer?.alloc != null) {\n return asUint8Array(globalThis.Buffer.alloc(size));\n }\n return new Uint8Array(size);\n}\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer?.allocUnsafe != null) {\n return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n }\n return new Uint8Array(size);\n}\n//# sourceMappingURL=alloc.js.map","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: {\n decode\n }\n };\n}\nconst string = createCodec('utf8', 'u', (buf) => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, (str) => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', (buf) => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, (str) => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;\n//# sourceMappingURL=bases.js.map","import { asUint8Array } from './util/as-uint8array.js';\nimport bases, {} from './util/bases.js';\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n }\n // add multibase prefix\n return base.decoder.decode(`${base.prefix}${string}`); // eslint-disable-line @typescript-eslint/restrict-template-expressions\n}\n//# sourceMappingURL=from-string.js.map","/**\n * Returns true if the two passed Uint8Arrays have the same content\n */\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=equals.js.map","import { ed25519 as ed } from '@noble/curves/ed25519';\nconst PUBLIC_KEY_BYTE_LENGTH = 32;\nconst PRIVATE_KEY_BYTE_LENGTH = 64; // private key is actually 32 bytes but for historical reasons we concat private and public keys\nconst KEYS_BYTE_LENGTH = 32;\nexport { PUBLIC_KEY_BYTE_LENGTH as publicKeyLength };\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport async function generateKey() {\n // the actual private key (32 bytes)\n const privateKeyRaw = ed.utils.randomPrivateKey();\n const publicKey = ed.getPublicKey(privateKeyRaw);\n // concatenated the public key to the private key\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\n/**\n * Generate keypair from a 32 byte uint8array\n */\nexport async function generateKeyFromSeed(seed) {\n if (seed.length !== KEYS_BYTE_LENGTH) {\n throw new TypeError('\"seed\" must be 32 bytes in length.');\n }\n else if (!(seed instanceof Uint8Array)) {\n throw new TypeError('\"seed\" must be a node.js Buffer, or Uint8Array.');\n }\n // based on node forges algorithm, the seed is used directly as private key\n const privateKeyRaw = seed;\n const publicKey = ed.getPublicKey(privateKeyRaw);\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\nexport async function hashAndSign(privateKey, msg) {\n const privateKeyRaw = privateKey.subarray(0, KEYS_BYTE_LENGTH);\n return ed.sign(msg, privateKeyRaw);\n}\nexport async function hashAndVerify(publicKey, sig, msg) {\n return ed.verify(sig, msg, publicKey);\n}\nfunction concatKeys(privateKeyRaw, publicKey) {\n const privateKey = new Uint8Array(PRIVATE_KEY_BYTE_LENGTH);\n for (let i = 0; i < KEYS_BYTE_LENGTH; i++) {\n privateKey[i] = privateKeyRaw[i];\n privateKey[KEYS_BYTE_LENGTH + i] = publicKey[i];\n }\n return privateKey;\n}\n//# sourceMappingURL=ed25519-browser.js.map","import { allocUnsafe } from './alloc.js';\nimport { asUint8Array } from './util/as-uint8array.js';\n/**\n * Returns a new Uint8Array created by concatenating the passed ArrayLikes\n */\nexport function concat(arrays, length) {\n if (length == null) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return asUint8Array(output);\n}\n//# sourceMappingURL=concat.js.map","/* eslint-env browser */\n// Check native crypto exists and is enabled (In insecure context `self.crypto`\n// exists but `self.crypto.subtle` does not).\nexport default {\n get(win = globalThis) {\n const nativeCrypto = win.crypto;\n if (nativeCrypto == null || nativeCrypto.subtle == null) {\n throw Object.assign(new Error('Missing Web Crypto API. ' +\n 'The most likely cause of this error is that this page is being accessed ' +\n 'from an insecure context (i.e. not HTTPS). For more information and ' +\n 'possible resolutions see ' +\n 'https://github.com/libp2p/js-libp2p-crypto/blob/master/README.md#web-crypto-api'), { code: 'ERR_MISSING_WEB_CRYPTO' });\n }\n return nativeCrypto;\n }\n};\n//# sourceMappingURL=webcrypto.js.map","import { concat } from 'uint8arrays/concat';\nimport { fromString } from 'uint8arrays/from-string';\nimport webcrypto from '../webcrypto.js';\n// WebKit on Linux does not support deriving a key from an empty PBKDF2 key.\n// So, as a workaround, we provide the generated key as a constant. We test that\n// this generated key is accurate in test/workaround.spec.ts\n// Generated via:\n// await crypto.subtle.exportKey('jwk',\n// await crypto.subtle.deriveKey(\n// { name: 'PBKDF2', salt: new Uint8Array(16), iterations: 32767, hash: { name: 'SHA-256' } },\n// await crypto.subtle.importKey('raw', new Uint8Array(0), { name: 'PBKDF2' }, false, ['deriveKey']),\n// { name: 'AES-GCM', length: 128 }, true, ['encrypt', 'decrypt'])\n// )\nexport const derivedEmptyPasswordKey = { alg: 'A128GCM', ext: true, k: 'scm9jmO_4BJAgdwWGVulLg', key_ops: ['encrypt', 'decrypt'], kty: 'oct' };\n// Based off of code from https://github.com/luke-park/SecureCompatibleEncryptionExamples\nexport function create(opts) {\n const algorithm = opts?.algorithm ?? 'AES-GCM';\n let keyLength = opts?.keyLength ?? 16;\n const nonceLength = opts?.nonceLength ?? 12;\n const digest = opts?.digest ?? 'SHA-256';\n const saltLength = opts?.saltLength ?? 16;\n const iterations = opts?.iterations ?? 32767;\n const crypto = webcrypto.get();\n keyLength *= 8; // Browser crypto uses bits instead of bytes\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to encrypt the data.\n */\n async function encrypt(data, password) {\n const salt = crypto.getRandomValues(new Uint8Array(saltLength));\n const nonce = crypto.getRandomValues(new Uint8Array(nonceLength));\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n }\n }\n else {\n // Derive a key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n // Encrypt the string.\n const ciphertext = await crypto.subtle.encrypt(aesGcm, cryptoKey, data);\n return concat([salt, aesGcm.iv, new Uint8Array(ciphertext)]);\n }\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to decrypt the data. The options used to create\n * this decryption cipher must be the same as those used to create\n * the encryption cipher.\n */\n async function decrypt(data, password) {\n const salt = data.subarray(0, saltLength);\n const nonce = data.subarray(saltLength, saltLength + nonceLength);\n const ciphertext = data.subarray(saltLength + nonceLength);\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['decrypt']);\n }\n }\n else {\n // Derive the key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n // Decrypt the string.\n const plaintext = await crypto.subtle.decrypt(aesGcm, cryptoKey, ciphertext);\n return new Uint8Array(plaintext);\n }\n const cipher = {\n encrypt,\n decrypt\n };\n return cipher;\n}\n//# sourceMappingURL=aes-gcm.browser.js.map","import { base64 } from 'multiformats/bases/base64';\nimport * as ciphers from '../ciphers/aes-gcm.js';\n/**\n * Exports the given PrivateKey as a base64 encoded string.\n * The PrivateKey is encrypted via a password derived PBKDF2 key\n * leveraging the aes-gcm cipher algorithm.\n */\nexport async function exporter(privateKey, password) {\n const cipher = ciphers.create();\n const encryptedKey = await cipher.encrypt(privateKey, password);\n return base64.encode(encryptedKey);\n}\n//# sourceMappingURL=exporter.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var KeyType;\n(function (KeyType) {\n KeyType[\"RSA\"] = \"RSA\";\n KeyType[\"Ed25519\"] = \"Ed25519\";\n KeyType[\"Secp256k1\"] = \"Secp256k1\";\n})(KeyType || (KeyType = {}));\nvar __KeyTypeValues;\n(function (__KeyTypeValues) {\n __KeyTypeValues[__KeyTypeValues[\"RSA\"] = 0] = \"RSA\";\n __KeyTypeValues[__KeyTypeValues[\"Ed25519\"] = 1] = \"Ed25519\";\n __KeyTypeValues[__KeyTypeValues[\"Secp256k1\"] = 2] = \"Secp256k1\";\n})(__KeyTypeValues || (__KeyTypeValues = {}));\n(function (KeyType) {\n KeyType.codec = () => {\n return enumeration(__KeyTypeValues);\n };\n})(KeyType || (KeyType = {}));\nexport var PublicKey;\n(function (PublicKey) {\n let _codec;\n PublicKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PublicKey.encode = (obj) => {\n return encodeMessage(obj, PublicKey.codec());\n };\n PublicKey.decode = (buf) => {\n return decodeMessage(buf, PublicKey.codec());\n };\n})(PublicKey || (PublicKey = {}));\nexport var PrivateKey;\n(function (PrivateKey) {\n let _codec;\n PrivateKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PrivateKey.encode = (obj) => {\n return encodeMessage(obj, PrivateKey.codec());\n };\n PrivateKey.decode = (buf) => {\n return decodeMessage(buf, PrivateKey.codec());\n };\n})(PrivateKey || (PrivateKey = {}));\n//# sourceMappingURL=keys.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport * as crypto from './ed25519.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nexport class Ed25519PublicKey {\n _key;\n constructor(key) {\n this._key = ensureKey(key, crypto.publicKeyLength);\n }\n async verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n}\nexport class Ed25519PrivateKey {\n _key;\n _publicKey;\n // key - 64 byte Uint8Array containing private key\n // publicKey - 32 byte Uint8Array containing public key\n constructor(key, publicKey) {\n this._key = ensureKey(key, crypto.privateKeyLength);\n this._publicKey = ensureKey(publicKey, crypto.publicKeyLength);\n }\n async sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Ed25519PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the identity multihash containing its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n *\n * @returns {Promise}\n */\n async id() {\n const encoding = identity.digest(this.public.bytes);\n return base58btc.encode(encoding.bytes).substring(1);\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalEd25519PrivateKey(bytes) {\n // Try the old, redundant public key version\n if (bytes.length > crypto.privateKeyLength) {\n bytes = ensureKey(bytes, crypto.privateKeyLength + crypto.publicKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.privateKeyLength, bytes.length);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n }\n bytes = ensureKey(bytes, crypto.privateKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.publicKeyLength);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n}\nexport function unmarshalEd25519PublicKey(bytes) {\n bytes = ensureKey(bytes, crypto.publicKeyLength);\n return new Ed25519PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const { privateKey, publicKey } = await crypto.generateKey();\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nexport async function generateKeyPairFromSeed(seed) {\n const { privateKey, publicKey } = await crypto.generateKeyFromSeed(seed);\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nfunction ensureKey(key, length) {\n key = Uint8Array.from(key ?? []);\n if (key.length !== length) {\n throw new CodeError(`Key must be a Uint8Array of length ${length}, got ${key.length}`, 'ERR_INVALID_KEY_TYPE');\n }\n return key;\n}\n//# sourceMappingURL=ed25519-class.js.map","import bases, {} from './util/bases.js';\n/**\n * Turns a `Uint8Array` into a string.\n *\n * Supports `utf8`, `utf-8` and any encoding supported by the multibase module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n // strip multibase prefix\n return base.encoder.encode(array).substring(1);\n}\n//# sourceMappingURL=to-string.js.map","import 'node-forge/lib/util.js';\nimport 'node-forge/lib/jsbn.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nexport function bigIntegerToUintBase64url(num, len) {\n // Call `.abs()` to convert to unsigned\n let buf = Uint8Array.from(num.abs().toByteArray()); // toByteArray converts to big endian\n // toByteArray() gives us back a signed array, which will include a leading 0\n // byte if the most significant bit of the number is 1:\n // https://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-integer\n // Our number will always be positive so we should remove the leading padding.\n buf = buf[0] === 0 ? buf.subarray(1) : buf;\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return uint8ArrayToString(buf, 'base64url');\n}\n// Convert a base64url encoded string to a BigInteger\nexport function base64urlToBigInteger(str) {\n const buf = base64urlToBuffer(str);\n return new forge.jsbn.BigInteger(uint8ArrayToString(buf, 'base16'), 16);\n}\nexport function base64urlToBuffer(str, len) {\n let buf = uint8ArrayFromString(str, 'base64urlpad');\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return buf;\n}\n//# sourceMappingURL=util.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { base64urlToBuffer } from '../util.js';\nimport webcrypto from '../webcrypto.js';\nconst bits = {\n 'P-256': 256,\n 'P-384': 384,\n 'P-521': 521\n};\nconst curveTypes = Object.keys(bits);\nconst names = curveTypes.join(' / ');\nexport async function generateEphmeralKeyPair(curve) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'ECDH',\n namedCurve: curve\n }, true, ['deriveBits']);\n // forcePrivate is used for testing only\n const genSharedKey = async (theirPub, forcePrivate) => {\n let privateKey;\n if (forcePrivate != null) {\n privateKey = await webcrypto.get().subtle.importKey('jwk', unmarshalPrivateKey(curve, forcePrivate), {\n name: 'ECDH',\n namedCurve: curve\n }, false, ['deriveBits']);\n }\n else {\n privateKey = pair.privateKey;\n }\n const key = await webcrypto.get().subtle.importKey('jwk', unmarshalPublicKey(curve, theirPub), {\n name: 'ECDH',\n namedCurve: curve\n }, false, []);\n const buffer = await webcrypto.get().subtle.deriveBits({\n name: 'ECDH',\n // @ts-expect-error namedCurve is missing from the types\n namedCurve: curve,\n public: key\n }, privateKey, bits[curve]);\n return new Uint8Array(buffer, 0, buffer.byteLength);\n };\n const publicKey = await webcrypto.get().subtle.exportKey('jwk', pair.publicKey);\n const ecdhKey = {\n key: marshalPublicKey(publicKey),\n genSharedKey\n };\n return ecdhKey;\n}\nconst curveLengths = {\n 'P-256': 32,\n 'P-384': 48,\n 'P-521': 66\n};\n// Marshal converts a jwk encoded ECDH public key into the\n// form specified in section 4.3.6 of ANSI X9.62. (This is the format\n// go-ipfs uses)\nfunction marshalPublicKey(jwk) {\n if (jwk.crv == null || jwk.x == null || jwk.y == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n if (jwk.crv !== 'P-256' && jwk.crv !== 'P-384' && jwk.crv !== 'P-521') {\n throw new CodeError(`Unknown curve: ${jwk.crv}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[jwk.crv];\n return uint8ArrayConcat([\n Uint8Array.from([4]),\n base64urlToBuffer(jwk.x, byteLen),\n base64urlToBuffer(jwk.y, byteLen)\n ], 1 + byteLen * 2);\n}\n// Unmarshal converts a point, serialized by Marshal, into an jwk encoded key\nfunction unmarshalPublicKey(curve, key) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[curve];\n if (!uint8ArrayEquals(key.subarray(0, 1), Uint8Array.from([4]))) {\n throw new CodeError('Cannot unmarshal public key - invalid key format', 'ERR_INVALID_KEY_FORMAT');\n }\n return {\n kty: 'EC',\n crv: curve,\n x: uint8ArrayToString(key.subarray(1, byteLen + 1), 'base64url'),\n y: uint8ArrayToString(key.subarray(1 + byteLen), 'base64url'),\n ext: true\n };\n}\nconst unmarshalPrivateKey = (curve, key) => ({\n ...unmarshalPublicKey(curve, key.public),\n d: uint8ArrayToString(key.private, 'base64url')\n});\n//# sourceMappingURL=ecdh-browser.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { randomBytes as randB } from '@noble/hashes/utils';\n/**\n * Generates a Uint8Array with length `number` populated by random bytes\n */\nexport default function randomBytes(length) {\n if (isNaN(length) || length <= 0) {\n throw new CodeError('random bytes length must be a Number bigger than 0', 'ERR_INVALID_LENGTH');\n }\n return randB(length);\n}\n//# sourceMappingURL=random-bytes.js.map","import 'node-forge/lib/rsa.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { base64urlToBigInteger } from '../util.js';\nfunction convert(key, types) {\n return types.map(t => base64urlToBigInteger(key[t]));\n}\nexport function jwk2priv(key) {\n return forge.pki.setRsaPrivateKey(...convert(key, ['n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi']));\n}\nexport function jwk2pub(key) {\n return forge.pki.setRsaPublicKey(...convert(key, ['n', 'e']));\n}\n//# sourceMappingURL=jwk2pem.js.map","import 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/rsa.js';\nimport { CodeError } from '@libp2p/interface/errors';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { bigIntegerToUintBase64url, base64urlToBigInteger } from './../util.js';\n// Convert a PKCS#1 in ASN1 DER format to a JWK key\nexport function pkcs1ToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n // https://tools.ietf.org/html/rfc7518#section-6.3.1\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(privateKey.n),\n e: bigIntegerToUintBase64url(privateKey.e),\n d: bigIntegerToUintBase64url(privateKey.d),\n p: bigIntegerToUintBase64url(privateKey.p),\n q: bigIntegerToUintBase64url(privateKey.q),\n dp: bigIntegerToUintBase64url(privateKey.dP),\n dq: bigIntegerToUintBase64url(privateKey.dQ),\n qi: bigIntegerToUintBase64url(privateKey.qInv),\n alg: 'RS256'\n };\n}\n// Convert a JWK key into PKCS#1 in ASN1 DER format\nexport function jwkToPkcs1(jwk) {\n if (jwk.n == null || jwk.e == null || jwk.d == null || jwk.p == null || jwk.q == null || jwk.dp == null || jwk.dq == null || jwk.qi == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.privateKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e),\n d: base64urlToBigInteger(jwk.d),\n p: base64urlToBigInteger(jwk.p),\n q: base64urlToBigInteger(jwk.q),\n dP: base64urlToBigInteger(jwk.dp),\n dQ: base64urlToBigInteger(jwk.dq),\n qInv: base64urlToBigInteger(jwk.qi)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n// Convert a PKCIX in ASN1 DER format to a JWK key\nexport function pkixToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const publicKey = forge.pki.publicKeyFromAsn1(asn1);\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(publicKey.n),\n e: bigIntegerToUintBase64url(publicKey.e)\n };\n}\n// Convert a JWK key to PKCIX in ASN1 DER format\nexport function jwkToPkix(jwk) {\n if (jwk.n == null || jwk.e == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.publicKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n//# sourceMappingURL=rsa-utils.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport randomBytes from '../random-bytes.js';\nimport webcrypto from '../webcrypto.js';\nimport { jwk2pub, jwk2priv } from './jwk2pem.js';\nimport * as utils from './rsa-utils.js';\nexport { utils };\nexport async function generateKey(bits) {\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: 'SHA-256' }\n }, true, ['sign', 'verify']);\n const keys = await exportKey(pair);\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\n// Takes a jwk key\nexport async function unmarshalPrivateKey(key) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['sign']);\n const pair = [\n privateKey,\n await derivePublicFromPrivate(key)\n ];\n const keys = await exportKey({\n privateKey: pair[0],\n publicKey: pair[1]\n });\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\nexport { randomBytes as getRandomValues };\nexport async function hashAndSign(key, msg) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['sign']);\n const sig = await webcrypto.get().subtle.sign({ name: 'RSASSA-PKCS1-v1_5' }, privateKey, Uint8Array.from(msg));\n return new Uint8Array(sig, 0, sig.byteLength);\n}\nexport async function hashAndVerify(key, sig, msg) {\n const publicKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['verify']);\n return webcrypto.get().subtle.verify({ name: 'RSASSA-PKCS1-v1_5' }, publicKey, sig, msg);\n}\nasync function exportKey(pair) {\n if (pair.privateKey == null || pair.publicKey == null) {\n throw new CodeError('Private and public key are required', 'ERR_INVALID_PARAMETERS');\n }\n return Promise.all([\n webcrypto.get().subtle.exportKey('jwk', pair.privateKey),\n webcrypto.get().subtle.exportKey('jwk', pair.publicKey)\n ]);\n}\nasync function derivePublicFromPrivate(jwKey) {\n return webcrypto.get().subtle.importKey('jwk', {\n kty: jwKey.kty,\n n: jwKey.n,\n e: jwKey.e\n }, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['verify']);\n}\n/*\n\nRSA encryption/decryption for the browser with webcrypto workaround\n\"bloody dark magic. webcrypto's why.\"\n\nExplanation:\n - Convert JWK to nodeForge\n - Convert msg Uint8Array to nodeForge buffer: ByteBuffer is a \"binary-string backed buffer\", so let's make our Uint8Array a binary string\n - Convert resulting nodeForge buffer to Uint8Array: it returns a binary string, turn that into a Uint8Array\n\n*/\nfunction convertKey(key, pub, msg, handle) {\n const fkey = pub ? jwk2pub(key) : jwk2priv(key);\n const fmsg = uint8ArrayToString(Uint8Array.from(msg), 'ascii');\n const fomsg = handle(fmsg, fkey);\n return uint8ArrayFromString(fomsg, 'ascii');\n}\nexport function encrypt(key, msg) {\n return convertKey(key, true, msg, (msg, key) => key.encrypt(msg));\n}\nexport function decrypt(key, msg) {\n return convertKey(key, false, msg, (msg, key) => key.decrypt(msg));\n}\nexport function keySize(jwk) {\n if (jwk.kty !== 'RSA') {\n throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE');\n }\n else if (jwk.n == null) {\n throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS');\n }\n const bytes = uint8ArrayFromString(jwk.n, 'base64url');\n return bytes.length * 8;\n}\n//# sourceMappingURL=rsa-browser.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { sha256 } from 'multiformats/hashes/sha2';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport 'node-forge/lib/sha512.js';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nimport * as crypto from './rsa.js';\nexport const MAX_KEY_SIZE = 8192;\nexport class RsaPublicKey {\n _key;\n constructor(key) {\n this._key = key;\n }\n async verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.utils.jwkToPkix(this._key);\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n encrypt(bytes) {\n return crypto.encrypt(this._key, bytes);\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n}\nexport class RsaPrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey;\n }\n genSecret() {\n return crypto.getRandomValues(16);\n }\n async sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n if (this._publicKey == null) {\n throw new CodeError('public key not provided', 'ERR_PUBKEY_NOT_PROVIDED');\n }\n return new RsaPublicKey(this._publicKey);\n }\n decrypt(bytes) {\n return crypto.decrypt(this._key, bytes);\n }\n marshal() {\n return crypto.utils.jwkToPkcs1(this._key);\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected PEM format\n */\n async export(password, format = 'pkcs-8') {\n if (format === 'pkcs-8') {\n const buffer = new forge.util.ByteBuffer(this.marshal());\n const asn1 = forge.asn1.fromDer(buffer);\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n const options = {\n algorithm: 'aes256',\n count: 10000,\n saltSize: 128 / 8,\n prfAlgorithm: 'sha512'\n };\n return forge.pki.encryptRsaPrivateKey(privateKey, password, options);\n }\n else if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport async function unmarshalRsaPrivateKey(bytes) {\n const jwk = crypto.utils.pkcs1ToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport function unmarshalRsaPublicKey(bytes) {\n const jwk = crypto.utils.pkixToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n return new RsaPublicKey(jwk);\n}\nexport async function fromJwk(jwk) {\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport async function generateKeyPair(bits) {\n if (bits > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.generateKey(bits);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\n//# sourceMappingURL=rsa-class.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { secp256k1 as secp } from '@noble/curves/secp256k1';\nimport { sha256 } from 'multiformats/hashes/sha2';\nconst PRIVATE_KEY_BYTE_LENGTH = 32;\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n return secp.utils.randomPrivateKey();\n}\n/**\n * Hash and sign message with private key\n */\nexport async function hashAndSign(key, msg) {\n const { digest } = await sha256.digest(msg);\n try {\n const signature = secp.sign(digest, key);\n return signature.toDERRawBytes();\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\n/**\n * Hash message and verify signature with public key\n */\nexport async function hashAndVerify(key, sig, msg) {\n try {\n const { digest } = await sha256.digest(msg);\n return secp.verify(sig, digest, key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\nexport function compressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(true);\n return point;\n}\nexport function decompressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(false);\n return point;\n}\nexport function validatePrivateKey(key) {\n try {\n secp.getPublicKey(key, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\nexport function validatePublicKey(key) {\n try {\n secp.ProjectivePoint.fromHex(key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PUBLIC_KEY');\n }\n}\nexport function computePublicKey(privateKey) {\n try {\n return secp.getPublicKey(privateKey, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\n//# sourceMappingURL=secp256k1.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { exporter } from './exporter.js';\nimport * as keysProtobuf from './keys.js';\nimport * as crypto from './secp256k1.js';\nexport class Secp256k1PublicKey {\n _key;\n constructor(key) {\n crypto.validatePublicKey(key);\n this._key = key;\n }\n async verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.compressPublicKey(this._key);\n }\n get bytes() {\n return keysProtobuf.PublicKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n}\nexport class Secp256k1PrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey ?? crypto.computePublicKey(key);\n crypto.validatePrivateKey(this._key);\n crypto.validatePublicKey(this._publicKey);\n }\n async sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Secp256k1PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return keysProtobuf.PrivateKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalSecp256k1PrivateKey(bytes) {\n return new Secp256k1PrivateKey(bytes);\n}\nexport function unmarshalSecp256k1PublicKey(bytes) {\n return new Secp256k1PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const privateKeyBytes = crypto.generateKey();\n return new Secp256k1PrivateKey(privateKeyBytes);\n}\n//# sourceMappingURL=secp256k1-class.js.map","/**\n * @packageDocumentation\n *\n * **Supported Key Types**\n *\n * The {@link generateKeyPair}, {@link marshalPublicKey}, and {@link marshalPrivateKey} functions accept a string `type` argument.\n *\n * Currently the `'RSA'`, `'ed25519'`, and `secp256k1` types are supported, although ed25519 and secp256k1 keys support only signing and verification of messages.\n *\n * For encryption / decryption support, RSA keys should be used.\n */\nimport 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/pbe.js';\nimport { CodeError } from '@libp2p/interface/errors';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport * as Ed25519 from './ed25519-class.js';\nimport generateEphemeralKeyPair from './ephemeral-keys.js';\nimport { importer } from './importer.js';\nimport { keyStretcher } from './key-stretcher.js';\nimport * as keysPBM from './keys.js';\nimport * as RSA from './rsa-class.js';\nimport * as Secp256k1 from './secp256k1-class.js';\nexport { keyStretcher };\nexport { generateEphemeralKeyPair };\nexport { keysPBM };\nexport const supportedKeys = {\n rsa: RSA,\n ed25519: Ed25519,\n secp256k1: Secp256k1\n};\nfunction unsupportedKey(type) {\n const supported = Object.keys(supportedKeys).join(' / ');\n return new CodeError(`invalid or unsupported key type ${type}. Must be ${supported}`, 'ERR_UNSUPPORTED_KEY_TYPE');\n}\nfunction typeToKey(type) {\n type = type.toLowerCase();\n if (type === 'rsa' || type === 'ed25519' || type === 'secp256k1') {\n return supportedKeys[type];\n }\n throw unsupportedKey(type);\n}\n/**\n * Generates a keypair of the given type and bitsize\n *\n * @param type\n * @param bits - Minimum of 1024\n */\nexport async function generateKeyPair(type, bits) {\n return typeToKey(type).generateKeyPair(bits ?? 2048);\n}\n/**\n * Generates a keypair of the given type and bitsize.\n *\n * Seed is a 32 byte uint8array\n */\nexport async function generateKeyPairFromSeed(type, seed, bits) {\n if (type.toLowerCase() !== 'ed25519') {\n throw new CodeError('Seed key derivation is unimplemented for RSA or secp256k1', 'ERR_UNSUPPORTED_KEY_DERIVATION_TYPE');\n }\n return Ed25519.generateKeyPairFromSeed(seed);\n}\n/**\n * Converts a protobuf serialized public key into its representative object\n */\nexport function unmarshalPublicKey(buf) {\n const decoded = keysPBM.PublicKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPublicKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PublicKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PublicKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'unknown');\n }\n}\n/**\n * Converts a public key object into a protobuf serialized public key\n */\nexport function marshalPublicKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts a protobuf serialized private key into its representative object\n */\nexport async function unmarshalPrivateKey(buf) {\n const decoded = keysPBM.PrivateKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPrivateKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PrivateKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'RSA');\n }\n}\n/**\n * Converts a private key object into a protobuf serialized private key\n */\nexport function marshalPrivateKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts an exported private key into its representative object.\n *\n * Supported formats are 'pem' (RSA only) and 'libp2p-key'.\n */\nexport async function importKey(encryptedKey, password) {\n try {\n const key = await importer(encryptedKey, password);\n return await unmarshalPrivateKey(key);\n }\n catch (_) {\n // Ignore and try the old pem decrypt\n }\n // Only rsa supports pem right now\n const key = forge.pki.decryptRsaPrivateKey(encryptedKey, password);\n if (key === null) {\n throw new CodeError('Cannot read the key, most likely the password is wrong or not a RSA key', 'ERR_CANNOT_DECRYPT_PEM');\n }\n let der = forge.asn1.toDer(forge.pki.privateKeyToAsn1(key));\n der = uint8ArrayFromString(der.getBytes(), 'ascii');\n return supportedKeys.rsa.unmarshalRsaPrivateKey(der);\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * A logger for libp2p based on the venerable [debug](https://www.npmjs.com/package/debug)\n * module.\n *\n * @example\n *\n * ```JavaScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('libp2p:my:component:name')\n *\n * log('something happened: %s', 'it was ok')\n * log.error('something bad happened: %o', err)\n *\n * log('with this peer: %p', aPeerId)\n * log('and this base58btc: %b', aUint8Array)\n * log('and this base32: %t', aUint8Array)\n * ```\n * ```console\n * $ DEBUG=libp2p:* node index.js\n * something happened: it was ok\n * something bad happened: \n * with this peer: 12D3Foo\n * with this base58btc: Qmfoo\n * with this base32: bafyfoo\n * ```\n */\nimport debug from 'debug';\nimport { base32 } from 'multiformats/bases/base32';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { base64 } from 'multiformats/bases/base64';\nimport { truncatePeerId } from './utils.js';\n// Add a formatter for converting to a base58 string\ndebug.formatters.b = (v) => {\n return v == null ? 'undefined' : base58btc.baseEncode(v);\n};\n// Add a formatter for converting to a base32 string\ndebug.formatters.t = (v) => {\n return v == null ? 'undefined' : base32.baseEncode(v);\n};\n// Add a formatter for converting to a base64 string\ndebug.formatters.m = (v) => {\n return v == null ? 'undefined' : base64.baseEncode(v);\n};\n// Add a formatter for stringifying peer ids\ndebug.formatters.p = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying CIDs\ndebug.formatters.c = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Datastore keys\ndebug.formatters.k = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Multiaddrs\ndebug.formatters.a = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\nfunction createDisabledLogger(namespace) {\n const logger = () => { };\n logger.enabled = false;\n logger.color = '';\n logger.diff = 0;\n logger.log = () => { };\n logger.namespace = namespace;\n logger.destroy = () => true;\n logger.extend = () => logger;\n return logger;\n}\n/**\n * Create a component logger that will prefix any log messages with a truncated\n * peer id.\n *\n * @example\n *\n * ```TypeScript\n * import { peerLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const peerId = peerIdFromString('12D3FooBar')\n * const logger = peerLogger(peerId)\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"12…oBar:my-component hello world\"\n * ```\n */\nexport function peerLogger(peerId, options = {}) {\n return prefixLogger(truncatePeerId(peerId, options));\n}\n/**\n * Create a component logger that will prefix any log messages with the passed\n * string.\n *\n * @example\n *\n * ```TypeScript\n * import { prefixLogger } from '@libp2p/logger'\n *\n * const logger = prefixLogger('my-node')\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-node:my-component hello world\"\n * ```\n */\nexport function prefixLogger(prefix) {\n return {\n forComponent(name) {\n return logger(`${prefix}:${name}`);\n }\n };\n}\n/**\n * Create a component logger\n *\n * @example\n *\n * ```TypeScript\n * import { defaultLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const logger = defaultLogger()\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function defaultLogger() {\n return {\n forComponent(name) {\n return logger(name);\n }\n };\n}\n/**\n * Creates a logger for the passed component name.\n *\n * @example\n *\n * ```TypeScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function logger(name) {\n // trace logging is a no-op by default\n let trace = createDisabledLogger(`${name}:trace`);\n // look at all the debug names and see if trace logging has explicitly been enabled\n if (debug.enabled(`${name}:trace`) && debug.names.map(r => r.toString()).find(n => n.includes(':trace')) != null) {\n trace = debug(`${name}:trace`);\n }\n return Object.assign(debug(name), {\n error: debug(`${name}:error`),\n trace\n });\n}\nexport function disable() {\n debug.disable();\n}\nexport function enable(namespaces) {\n debug.enable(namespaces);\n}\nexport function enabled(namespaces) {\n return debug.enabled(namespaces);\n}\n//# sourceMappingURL=index.js.map","var Timestamp=function(){\"undefined\"!=typeof module&&(module.exports=d);var l=86400,s=3200,T=146097*s/400,e=l*T,f=1e3*e,c=864e13,g=4294967296,h=1e6,u=\"000000000\",m=Math.trunc||function(n){var t=n-n%1;return 0==t&&(n<0||0===n&&1/n!=1/0)?-0:t},n=d.prototype,o=(d.fromDate=function(n){return new d(+n)},d.fromInt64BE=r(0,1,2,3,0,4),d.fromInt64LE=r(3,2,1,0,4,0),d.fromString=function(n){var e,r=new d,n=(n+=\"\").replace(/^\\s*[+\\-]?\\d+/,function(n){var n=+n,t=1970+(n-1970)%400;return r.year=n-t,t}).replace(/(?:Z|([+\\-]\\d{2}):?(\\d{2}))$/,function(n,t,r){return t<0&&(r*=-1),e=6e4*(60*+t+ +r),\"\"}).replace(/\\.\\d+$/,function(n){return r.nano=+(n+u).substr(1,9),\"\"}).split(/\\D+/);1>24&255,n[t+u]=r>>16&255,n[t+o]=r>>8&255,n[t+i]=255&r}}function r(r,e,u,o,i,a){return function(n,t){w(n,t|=0);var r=f(n,t+i);return y(f(n,t+a),r)};function f(n,t){return 16777216*n[t+r]+(n[t+e]<<16|n[t+u]<<8|n[t+o])}}function w(n,t){n=n&&n.length;if(null==n)throw new TypeError(\"Invalid Buffer\");if(n {\n return enumeration(__ValidityTypeValues);\n };\n })(ValidityType = IpnsEntry.ValidityType || (IpnsEntry.ValidityType = {}));\n let _codec;\n IpnsEntry.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.value != null) {\n w.uint32(10);\n w.bytes(obj.value);\n }\n if (obj.signatureV1 != null) {\n w.uint32(18);\n w.bytes(obj.signatureV1);\n }\n if (obj.validityType != null) {\n w.uint32(24);\n IpnsEntry.ValidityType.codec().encode(obj.validityType, w);\n }\n if (obj.validity != null) {\n w.uint32(34);\n w.bytes(obj.validity);\n }\n if (obj.sequence != null) {\n w.uint32(40);\n w.uint64(obj.sequence);\n }\n if (obj.ttl != null) {\n w.uint32(48);\n w.uint64(obj.ttl);\n }\n if (obj.pubKey != null) {\n w.uint32(58);\n w.bytes(obj.pubKey);\n }\n if (obj.signatureV2 != null) {\n w.uint32(66);\n w.bytes(obj.signatureV2);\n }\n if (obj.data != null) {\n w.uint32(74);\n w.bytes(obj.data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.value = reader.bytes();\n break;\n case 2:\n obj.signatureV1 = reader.bytes();\n break;\n case 3:\n obj.validityType = IpnsEntry.ValidityType.codec().decode(reader);\n break;\n case 4:\n obj.validity = reader.bytes();\n break;\n case 5:\n obj.sequence = reader.uint64();\n break;\n case 6:\n obj.ttl = reader.uint64();\n break;\n case 7:\n obj.pubKey = reader.bytes();\n break;\n case 8:\n obj.signatureV2 = reader.bytes();\n break;\n case 9:\n obj.data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n IpnsEntry.encode = (obj) => {\n return encodeMessage(obj, IpnsEntry.codec());\n };\n IpnsEntry.decode = (buf) => {\n return decodeMessage(buf, IpnsEntry.codec());\n };\n})(IpnsEntry || (IpnsEntry = {}));\n//# sourceMappingURL=ipns.js.map","export const symbol = Symbol.for('@libp2p/peer-id');\nexport function isPeerId(other) {\n return other != null && Boolean(other[symbol]);\n}\n//# sourceMappingURL=index.js.map","/**\n * Returns true if the two passed Uint8Arrays have the same content\n */\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=equals.js.map","/**\n * @packageDocumentation\n *\n * An implementation of a peer id\n *\n * @example\n *\n * ```JavaScript\n * import { peerIdFromString } from '@libp2p/peer-id'\n * const peer = peerIdFromString('k51qzi5uqu5dkwkqm42v9j9kqcam2jiuvloi16g72i4i4amoo2m8u3ol3mqu6s')\n *\n * console.log(peer.toCid()) // CID(bafzaa...)\n * console.log(peer.toString()) // \"12D3K...\"\n * ```\n */\nimport { CodeError } from '@libp2p/interface/errors';\nimport { symbol } from '@libp2p/interface/peer-id';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { bases } from 'multiformats/basics';\nimport { CID } from 'multiformats/cid';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nconst inspect = Symbol.for('nodejs.util.inspect.custom');\nconst baseDecoder = Object\n .values(bases)\n .map(codec => codec.decoder)\n // @ts-expect-error https://github.com/multiformats/js-multiformats/issues/141\n .reduce((acc, curr) => acc.or(curr), bases.identity.decoder);\n// these values are from https://github.com/multiformats/multicodec/blob/master/table.csv\nconst LIBP2P_KEY_CODE = 0x72;\nconst MARSHALLED_ED225519_PUBLIC_KEY_LENGTH = 36;\nconst MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH = 37;\nclass PeerIdImpl {\n type;\n multihash;\n privateKey;\n publicKey;\n string;\n constructor(init) {\n this.type = init.type;\n this.multihash = init.multihash;\n this.privateKey = init.privateKey;\n // mark string cache as non-enumerable\n Object.defineProperty(this, 'string', {\n enumerable: false,\n writable: true\n });\n }\n get [Symbol.toStringTag]() {\n return `PeerId(${this.toString()})`;\n }\n [symbol] = true;\n toString() {\n if (this.string == null) {\n this.string = base58btc.encode(this.multihash.bytes).slice(1);\n }\n return this.string;\n }\n // return self-describing String representation\n // in default format from RFC 0001: https://github.com/libp2p/specs/pull/209\n toCID() {\n return CID.createV1(LIBP2P_KEY_CODE, this.multihash);\n }\n toBytes() {\n return this.multihash.bytes;\n }\n /**\n * Returns Multiaddr as a JSON string\n */\n toJSON() {\n return this.toString();\n }\n /**\n * Checks the equality of `this` peer against a given PeerId\n */\n equals(id) {\n if (id instanceof Uint8Array) {\n return uint8ArrayEquals(this.multihash.bytes, id);\n }\n else if (typeof id === 'string') {\n return peerIdFromString(id).equals(this);\n }\n else if (id?.multihash?.bytes != null) {\n return uint8ArrayEquals(this.multihash.bytes, id.multihash.bytes);\n }\n else {\n throw new Error('not valid Id');\n }\n }\n /**\n * Returns PeerId as a human-readable string\n * https://nodejs.org/api/util.html#utilinspectcustom\n *\n * @example\n * ```js\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * console.info(peerIdFromString('QmFoo'))\n * // 'PeerId(QmFoo)'\n * ```\n */\n [inspect]() {\n return `PeerId(${this.toString()})`;\n }\n}\nclass RSAPeerIdImpl extends PeerIdImpl {\n type = 'RSA';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'RSA' });\n this.publicKey = init.publicKey;\n }\n}\nclass Ed25519PeerIdImpl extends PeerIdImpl {\n type = 'Ed25519';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'Ed25519' });\n this.publicKey = init.multihash.digest;\n }\n}\nclass Secp256k1PeerIdImpl extends PeerIdImpl {\n type = 'secp256k1';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'secp256k1' });\n this.publicKey = init.multihash.digest;\n }\n}\nexport function createPeerId(init) {\n if (init.type === 'RSA') {\n return new RSAPeerIdImpl(init);\n }\n if (init.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(init);\n }\n if (init.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(init);\n }\n throw new CodeError('Type must be \"RSA\", \"Ed25519\" or \"secp256k1\"', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromPeerId(other) {\n if (other.type === 'RSA') {\n return new RSAPeerIdImpl(other);\n }\n if (other.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(other);\n }\n if (other.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(other);\n }\n throw new CodeError('Not a PeerId', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromString(str, decoder) {\n decoder = decoder ?? baseDecoder;\n if (str.charAt(0) === '1' || str.charAt(0) === 'Q') {\n // identity hash ed25519/secp256k1 key or sha2-256 hash of\n // rsa public key - base58btc encoded either way\n const multihash = Digest.decode(base58btc.decode(`z${str}`));\n if (str.startsWith('12D')) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (str.startsWith('16U')) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n else {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n return peerIdFromBytes(baseDecoder.decode(str));\n}\nexport function peerIdFromBytes(buf) {\n try {\n const multihash = Digest.decode(buf);\n if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n }\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n catch {\n return peerIdFromCID(CID.decode(buf));\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\nexport function peerIdFromCID(cid) {\n if (cid == null || cid.multihash == null || cid.version == null || (cid.version === 1 && cid.code !== LIBP2P_KEY_CODE)) {\n throw new Error('Supplied PeerID CID is invalid');\n }\n const multihash = cid.multihash;\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: cid.multihash });\n }\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\n/**\n * @param publicKey - A marshalled public key\n * @param privateKey - A marshalled private key\n */\nexport async function peerIdFromKeys(publicKey, privateKey) {\n if (publicKey.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n if (publicKey.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n return new RSAPeerIdImpl({ multihash: await sha256.digest(publicKey), publicKey, privateKey });\n}\n//# sourceMappingURL=index.js.map","import { unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { isPeerId } from '@libp2p/interface/peer-id';\nimport { logger } from '@libp2p/logger';\nimport { peerIdFromBytes, peerIdFromKeys } from '@libp2p/peer-id';\nimport * as cborg from 'cborg';\nimport errCode from 'err-code';\nimport { base36 } from 'multiformats/bases/base36';\nimport { CID } from 'multiformats/cid';\nimport NanoDate from 'timestamp-nano';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport * as ERRORS from './errors.js';\nimport { IpnsEntry } from './pb/ipns.js';\nconst log = logger('ipns:utils');\nconst IPNS_PREFIX = uint8ArrayFromString('/ipns/');\nconst LIBP2P_CID_CODEC = 114;\n/**\n * Convert a JavaScript date into an `RFC3339Nano` formatted\n * string\n */\nexport function toRFC3339(time) {\n const year = time.getUTCFullYear();\n const month = String(time.getUTCMonth() + 1).padStart(2, '0');\n const day = String(time.getUTCDate()).padStart(2, '0');\n const hour = String(time.getUTCHours()).padStart(2, '0');\n const minute = String(time.getUTCMinutes()).padStart(2, '0');\n const seconds = String(time.getUTCSeconds()).padStart(2, '0');\n const milliseconds = time.getUTCMilliseconds();\n const nanoseconds = milliseconds * 1000 * 1000;\n return `${year}-${month}-${day}T${hour}:${minute}:${seconds}.${nanoseconds}Z`;\n}\n/**\n * Parses a date string formatted as `RFC3339Nano` into a\n * JavaScript Date object\n */\nexport function parseRFC3339(time) {\n const rfc3339Matcher = new RegExp(\n // 2006-01-02T\n '(\\\\d{4})-(\\\\d{2})-(\\\\d{2})T' +\n // 15:04:05\n '(\\\\d{2}):(\\\\d{2}):(\\\\d{2})' +\n // .999999999Z\n '\\\\.(\\\\d+)Z');\n const m = String(time).trim().match(rfc3339Matcher);\n if (m == null) {\n throw new Error('Invalid format');\n }\n const year = parseInt(m[1], 10);\n const month = parseInt(m[2], 10) - 1;\n const date = parseInt(m[3], 10);\n const hour = parseInt(m[4], 10);\n const minute = parseInt(m[5], 10);\n const second = parseInt(m[6], 10);\n const millisecond = parseInt(m[7].padEnd(6, '0').slice(0, 3), 10);\n return new Date(Date.UTC(year, month, date, hour, minute, second, millisecond));\n}\n/**\n * Extracts a public key from the passed PeerId, falling\n * back to the pubKey embedded in the ipns record\n */\nexport const extractPublicKey = async (peerId, record) => {\n if (record == null || peerId == null) {\n const error = new Error('one or more of the provided parameters are not defined');\n log.error(error);\n throw errCode(error, ERRORS.ERR_UNDEFINED_PARAMETER);\n }\n let pubKey;\n if (record.pubKey != null) {\n try {\n pubKey = unmarshalPublicKey(record.pubKey);\n }\n catch (err) {\n log.error(err);\n throw err;\n }\n const otherId = await peerIdFromKeys(record.pubKey);\n if (!otherId.equals(peerId)) {\n throw errCode(new Error('Embedded public key did not match PeerID'), ERRORS.ERR_INVALID_EMBEDDED_KEY);\n }\n }\n else if (peerId.publicKey != null) {\n pubKey = unmarshalPublicKey(peerId.publicKey);\n }\n if (pubKey != null) {\n return pubKey;\n }\n throw errCode(new Error('no public key is available'), ERRORS.ERR_UNDEFINED_PARAMETER);\n};\n/**\n * Utility for creating the record data for being signed\n */\nexport const ipnsRecordDataForV1Sig = (value, validityType, validity) => {\n const validityTypeBuffer = uint8ArrayFromString(validityType);\n return uint8ArrayConcat([value, validity, validityTypeBuffer]);\n};\n/**\n * Utility for creating the record data for being signed\n */\nexport const ipnsRecordDataForV2Sig = (data) => {\n const entryData = uint8ArrayFromString('ipns-signature:');\n return uint8ArrayConcat([entryData, data]);\n};\nexport const marshal = (obj) => {\n if ('signatureV1' in obj) {\n return IpnsEntry.encode({\n value: uint8ArrayFromString(obj.value),\n signatureV1: obj.signatureV1,\n validityType: obj.validityType,\n validity: uint8ArrayFromString(obj.validity.toString()),\n sequence: obj.sequence,\n ttl: obj.ttl,\n pubKey: obj.pubKey,\n signatureV2: obj.signatureV2,\n data: obj.data\n });\n }\n else {\n return IpnsEntry.encode({\n pubKey: obj.pubKey,\n signatureV2: obj.signatureV2,\n data: obj.data\n });\n }\n};\nexport function unmarshal(buf) {\n const message = IpnsEntry.decode(buf);\n // protobufjs returns bigints as numbers\n if (message.sequence != null) {\n message.sequence = BigInt(message.sequence);\n }\n // protobufjs returns bigints as numbers\n if (message.ttl != null) {\n message.ttl = BigInt(message.ttl);\n }\n // Check if we have the data field. If we don't, we fail. We've been producing\n // V1+V2 records for quite a while and we don't support V1-only records during\n // validation any more\n if (message.signatureV2 == null || message.data == null) {\n throw errCode(new Error('missing data or signatureV2'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n const data = parseCborData(message.data);\n const value = normalizeValue(data.Value);\n let validity;\n try {\n validity = NanoDate.fromDate(parseRFC3339(uint8ArrayToString(data.Validity)));\n }\n catch (e) {\n log.error('unrecognized validity format (not an rfc3339 format)');\n throw errCode(new Error('unrecognized validity format (not an rfc3339 format)'), ERRORS.ERR_UNRECOGNIZED_FORMAT);\n }\n if (message.value != null && message.signatureV1 != null) {\n // V1+V2\n validateCborDataMatchesPbData(message);\n return {\n value,\n validityType: IpnsEntry.ValidityType.EOL,\n validity,\n sequence: data.Sequence,\n ttl: data.TTL,\n pubKey: message.pubKey,\n signatureV1: message.signatureV1,\n signatureV2: message.signatureV2,\n data: message.data\n };\n }\n else if (message.signatureV2 != null) {\n // V2-only\n return {\n value,\n validityType: IpnsEntry.ValidityType.EOL,\n validity,\n sequence: data.Sequence,\n ttl: data.TTL,\n pubKey: message.pubKey,\n signatureV2: message.signatureV2,\n data: message.data\n };\n }\n else {\n throw new Error('invalid record: does not include signatureV1 or signatureV2');\n }\n}\nexport const peerIdToRoutingKey = (peerId) => {\n return uint8ArrayConcat([\n IPNS_PREFIX,\n peerId.toBytes()\n ]);\n};\nexport const peerIdFromRoutingKey = (key) => {\n return peerIdFromBytes(key.slice(IPNS_PREFIX.length));\n};\nexport const createCborData = (value, validity, validityType, sequence, ttl) => {\n let ValidityType;\n if (validityType === IpnsEntry.ValidityType.EOL) {\n ValidityType = 0;\n }\n else {\n throw errCode(new Error('Unknown validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n const data = {\n Value: value,\n Validity: validity,\n ValidityType,\n Sequence: sequence,\n TTL: ttl\n };\n return cborg.encode(data);\n};\nexport const parseCborData = (buf) => {\n const data = cborg.decode(buf);\n if (data.ValidityType === 0) {\n data.ValidityType = IpnsEntry.ValidityType.EOL;\n }\n else {\n throw errCode(new Error('Unknown validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n if (Number.isInteger(data.Sequence)) {\n // sequence must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range\n data.Sequence = BigInt(data.Sequence);\n }\n if (Number.isInteger(data.TTL)) {\n // ttl must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range\n data.TTL = BigInt(data.TTL);\n }\n return data;\n};\n/**\n * Normalizes the given record value. It ensures it is a PeerID, a CID or a\n * string starting with '/'. PeerIDs become `/ipns/${cidV1Libp2pKey}`,\n * CIDs become `/ipfs/${cidAsV1}`.\n */\nexport const normalizeValue = (value) => {\n if (value != null) {\n // if we have a PeerId, turn it into an ipns path\n if (isPeerId(value)) {\n return `/ipns/${value.toCID().toString(base36)}`;\n }\n // if the value is bytes, stringify it and see if we have a path\n if (value instanceof Uint8Array) {\n const string = uint8ArrayToString(value);\n if (string.startsWith('/')) {\n value = string;\n }\n }\n // if we have a path, check it is a valid path\n const string = value.toString().trim();\n if (string.startsWith('/') && string.length > 1) {\n return string;\n }\n // if we have a CID, turn it into an ipfs path\n const cid = CID.asCID(value);\n if (cid != null) {\n // PeerID encoded as a CID\n if (cid.code === LIBP2P_CID_CODEC) {\n return `/ipns/${cid.toString(base36)}`;\n }\n return `/ipfs/${cid.toV1().toString()}`;\n }\n // try parsing what we have as CID bytes or a CID string\n try {\n if (value instanceof Uint8Array) {\n return `/ipfs/${CID.decode(value).toV1().toString()}`;\n }\n return `/ipfs/${CID.parse(string).toV1().toString()}`;\n }\n catch {\n // fall through\n }\n }\n throw errCode(new Error('Value must be a valid content path starting with /'), ERRORS.ERR_INVALID_VALUE);\n};\nconst validateCborDataMatchesPbData = (entry) => {\n if (entry.data == null) {\n throw errCode(new Error('Record data is missing'), ERRORS.ERR_INVALID_RECORD_DATA);\n }\n const data = parseCborData(entry.data);\n if (!uint8ArrayEquals(data.Value, entry.value ?? new Uint8Array(0))) {\n throw errCode(new Error('Field \"value\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (!uint8ArrayEquals(data.Validity, entry.validity ?? new Uint8Array(0))) {\n throw errCode(new Error('Field \"validity\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.ValidityType !== entry.validityType) {\n throw errCode(new Error('Field \"validityType\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.Sequence !== entry.sequence) {\n throw errCode(new Error('Field \"sequence\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.TTL !== entry.ttl) {\n throw errCode(new Error('Field \"ttl\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n};\n//# sourceMappingURL=utils.js.map","import { unmarshalPrivateKey } from '@libp2p/crypto/keys';\nimport { logger } from '@libp2p/logger';\nimport errCode from 'err-code';\nimport { Key } from 'interface-datastore/key';\nimport { base32upper } from 'multiformats/bases/base32';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { identity } from 'multiformats/hashes/identity';\nimport NanoDate from 'timestamp-nano';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport * as ERRORS from './errors.js';\nimport { IpnsEntry } from './pb/ipns.js';\nimport { createCborData, ipnsRecordDataForV1Sig, ipnsRecordDataForV2Sig, normalizeValue } from './utils.js';\nconst log = logger('ipns');\nconst ID_MULTIHASH_CODE = identity.code;\nexport const namespace = '/ipns/';\nexport const namespaceLength = namespace.length;\nconst defaultCreateOptions = {\n v1Compatible: true\n};\nexport async function create(peerId, value, seq, lifetime, options = defaultCreateOptions) {\n // Validity in ISOString with nanoseconds precision and validity type EOL\n const expirationDate = new NanoDate(Date.now() + Number(lifetime));\n const validityType = IpnsEntry.ValidityType.EOL;\n const [ms, ns] = lifetime.toString().split('.');\n const lifetimeNs = (BigInt(ms) * BigInt(100000)) + BigInt(ns ?? '0');\n return _create(peerId, value, seq, validityType, expirationDate, lifetimeNs, options);\n}\nexport async function createWithExpiration(peerId, value, seq, expiration, options = defaultCreateOptions) {\n const expirationDate = NanoDate.fromString(expiration);\n const validityType = IpnsEntry.ValidityType.EOL;\n const ttlMs = expirationDate.toDate().getTime() - Date.now();\n const ttlNs = (BigInt(ttlMs) * BigInt(100000)) + BigInt(expirationDate.getNano());\n return _create(peerId, value, seq, validityType, expirationDate, ttlNs, options);\n}\nconst _create = async (peerId, value, seq, validityType, expirationDate, ttl, options = defaultCreateOptions) => {\n seq = BigInt(seq);\n const isoValidity = uint8ArrayFromString(expirationDate.toString());\n const normalizedValue = normalizeValue(value);\n const encodedValue = uint8ArrayFromString(normalizedValue);\n if (peerId.privateKey == null) {\n throw errCode(new Error('Missing private key'), ERRORS.ERR_MISSING_PRIVATE_KEY);\n }\n const privateKey = await unmarshalPrivateKey(peerId.privateKey);\n const data = createCborData(encodedValue, isoValidity, validityType, seq, ttl);\n const sigData = ipnsRecordDataForV2Sig(data);\n const signatureV2 = await privateKey.sign(sigData);\n let pubKey;\n // if we cannot derive the public key from the PeerId (e.g. RSA PeerIDs),\n // we have to embed it in the IPNS record\n if (peerId.publicKey != null) {\n const digest = Digest.decode(peerId.toBytes());\n if (digest.code !== ID_MULTIHASH_CODE || !uint8ArrayEquals(peerId.publicKey, digest.digest)) {\n pubKey = peerId.publicKey;\n }\n }\n if (options.v1Compatible === true) {\n const signatureV1 = await signLegacyV1(privateKey, encodedValue, validityType, isoValidity);\n const record = {\n value: normalizedValue,\n signatureV1,\n validity: expirationDate,\n validityType,\n sequence: seq,\n ttl,\n signatureV2,\n data\n };\n if (pubKey != null) {\n record.pubKey = pubKey;\n }\n return record;\n }\n else {\n const record = {\n value: normalizedValue,\n validity: expirationDate,\n validityType,\n sequence: seq,\n ttl,\n signatureV2,\n data\n };\n if (pubKey != null) {\n record.pubKey = pubKey;\n }\n return record;\n }\n};\n/**\n * rawStdEncoding with RFC4648\n */\nconst rawStdEncoding = (key) => base32upper.encode(key).slice(1);\n/**\n * Get key for storing the record locally.\n * Format: /ipns/${base32()}\n *\n * @param {Uint8Array} key - peer identifier object.\n */\nexport const getLocalKey = (key) => new Key(`/ipns/${rawStdEncoding(key)}`);\nexport { unmarshal } from './utils.js';\nexport { marshal } from './utils.js';\nexport { peerIdToRoutingKey } from './utils.js';\nexport { peerIdFromRoutingKey } from './utils.js';\nexport { extractPublicKey } from './utils.js';\n/**\n * Sign ipns record data using the legacy V1 signature scheme\n */\nconst signLegacyV1 = async (privateKey, value, validityType, validity) => {\n try {\n const dataForSignature = ipnsRecordDataForV1Sig(value, validityType, validity);\n return await privateKey.sign(dataForSignature);\n }\n catch (error) {\n log.error('record signature creation failed', error);\n throw errCode(new Error('record signature creation failed'), ERRORS.ERR_SIGNATURE_CREATION);\n }\n};\n//# sourceMappingURL=index.js.map","import { logger } from '@libp2p/logger';\nimport errCode from 'err-code';\nimport * as ERRORS from './errors.js';\nimport { IpnsEntry } from './pb/ipns.js';\nimport { extractPublicKey, ipnsRecordDataForV2Sig, unmarshal, peerIdFromRoutingKey } from './utils.js';\nconst log = logger('ipns:validator');\n/**\n * Limit valid IPNS record sizes to 10kb\n */\nconst MAX_RECORD_SIZE = 1024 * 10;\n/**\n * Validates the given IPNS Record against the given public key. We need a \"raw\"\n * record in order to be able to access to all of its fields.\n */\nexport const validate = async (publicKey, buf) => {\n // unmarshal ensures that (1) SignatureV2 and Data are present, (2) that ValidityType\n // and Validity are of valid types and have a value, (3) that CBOR data matches protobuf\n // if it's a V1+V2 record.\n const record = unmarshal(buf);\n // Validate Signature V2\n let isValid;\n try {\n const dataForSignature = ipnsRecordDataForV2Sig(record.data);\n isValid = await publicKey.verify(dataForSignature, record.signatureV2);\n }\n catch (err) {\n isValid = false;\n }\n if (!isValid) {\n log.error('record signature verification failed');\n throw errCode(new Error('record signature verification failed'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n // Validate according to the validity type\n if (record.validityType === IpnsEntry.ValidityType.EOL) {\n if (record.validity.toDate().getTime() < Date.now()) {\n log.error('record has expired');\n throw errCode(new Error('record has expired'), ERRORS.ERR_IPNS_EXPIRED_RECORD);\n }\n }\n else if (record.validityType != null) {\n log.error('unrecognized validity type');\n throw errCode(new Error('unrecognized validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n log('ipns record for %b is valid', record.value);\n};\nexport async function ipnsValidator(key, marshalledData) {\n if (marshalledData.byteLength > MAX_RECORD_SIZE) {\n throw errCode(new Error('record too large'), ERRORS.ERR_RECORD_TOO_LARGE);\n }\n const peerId = peerIdFromRoutingKey(key);\n const receivedRecord = unmarshal(marshalledData);\n // extract public key\n const pubKey = await extractPublicKey(peerId, receivedRecord);\n // Record validation\n await validate(pubKey, marshalledData);\n}\n//# sourceMappingURL=validator.js.map","export default async function* parse(source) {\n const matcher = /\\r?\\n/;\n const decoder = new TextDecoder('utf8');\n let buffer = '';\n for await (let chunk of source) {\n if (typeof chunk === 'string') {\n chunk = new TextEncoder().encode(chunk);\n }\n buffer += decoder.decode(chunk, { stream: true });\n const parts = buffer.split(matcher);\n buffer = parts.pop() ?? '';\n for (let i = 0; i < parts.length; i++) {\n yield JSON.parse(parts[i]);\n }\n }\n buffer += decoder.decode();\n if (buffer !== '') {\n yield JSON.parse(buffer);\n }\n}\n//# sourceMappingURL=parse.js.map","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined ?\n\tnew AbortError(errorMessage) :\n\tnew DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined ?\n\t\tgetDOMException('This operation was aborted.') :\n\t\tsignal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, milliseconds, fallback, options) {\n\tlet timer;\n\n\tconst cancelablePromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tresolve(promise);\n\t\t\treturn;\n\t\t}\n\n\t\toptions = {\n\t\t\tcustomTimers: {setTimeout, clearTimeout},\n\t\t\t...options\n\t\t};\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t});\n\t\t}\n\n\t\ttimer = options.customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (typeof fallback === 'function') {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst message = typeof fallback === 'string' ? fallback : `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\tconst timeoutError = fallback instanceof Error ? fallback : new TimeoutError(message);\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\treject(timeoutError);\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t} finally {\n\t\t\t\toptions.customTimers.clearTimeout.call(undefined, timer);\n\t\t\t}\n\t\t})();\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tclearTimeout(timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PriorityQueue_queue;\nimport lowerBound from './lower-bound.js';\nclass PriorityQueue {\n constructor() {\n _PriorityQueue_queue.set(this, []);\n }\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n run,\n };\n if (this.size && __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\")[this.size - 1].priority >= options.priority) {\n __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").push(element);\n return;\n }\n const index = lowerBound(__classPrivateFieldGet(this, _PriorityQueue_queue, \"f\"), element, (a, b) => b.priority - a.priority);\n __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").splice(index, 0, element);\n }\n dequeue() {\n const item = __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").shift();\n return item === null || item === void 0 ? void 0 : item.run;\n }\n filter(options) {\n return __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").length;\n }\n}\n_PriorityQueue_queue = new WeakMap();\nexport default PriorityQueue;\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PQueue_instances, _PQueue_carryoverConcurrencyCount, _PQueue_isIntervalIgnored, _PQueue_intervalCount, _PQueue_intervalCap, _PQueue_interval, _PQueue_intervalEnd, _PQueue_intervalId, _PQueue_timeoutId, _PQueue_queue, _PQueue_queueClass, _PQueue_pending, _PQueue_concurrency, _PQueue_isPaused, _PQueue_throwOnTimeout, _PQueue_doesIntervalAllowAnother_get, _PQueue_doesConcurrentAllowAnother_get, _PQueue_next, _PQueue_onResumeInterval, _PQueue_isIntervalPaused_get, _PQueue_tryToStartAnother, _PQueue_initializeIntervalIfNeeded, _PQueue_onInterval, _PQueue_processQueue, _PQueue_throwOnAbort, _PQueue_onEvent;\nimport { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nThe error thrown by `queue.add()` when a job is aborted before it is run. See `signal`.\n*/\nexport class AbortError extends Error {\n}\n/**\nPromise queue with concurrency control.\n*/\nclass PQueue extends EventEmitter {\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n var _a, _b, _c, _d;\n super();\n _PQueue_instances.add(this);\n _PQueue_carryoverConcurrencyCount.set(this, void 0);\n _PQueue_isIntervalIgnored.set(this, void 0);\n _PQueue_intervalCount.set(this, 0);\n _PQueue_intervalCap.set(this, void 0);\n _PQueue_interval.set(this, void 0);\n _PQueue_intervalEnd.set(this, 0);\n _PQueue_intervalId.set(this, void 0);\n _PQueue_timeoutId.set(this, void 0);\n _PQueue_queue.set(this, void 0);\n _PQueue_queueClass.set(this, void 0);\n _PQueue_pending.set(this, 0);\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n _PQueue_concurrency.set(this, void 0);\n _PQueue_isPaused.set(this, void 0);\n _PQueue_throwOnTimeout.set(this, void 0);\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n \n Applies to each future operation.\n */\n Object.defineProperty(this, \"timeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${(_b = (_a = options.intervalCap) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${(_d = (_c = options.interval) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : ''}\\` (${typeof options.interval})`);\n }\n __classPrivateFieldSet(this, _PQueue_carryoverConcurrencyCount, options.carryoverConcurrencyCount, \"f\");\n __classPrivateFieldSet(this, _PQueue_isIntervalIgnored, options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0, \"f\");\n __classPrivateFieldSet(this, _PQueue_intervalCap, options.intervalCap, \"f\");\n __classPrivateFieldSet(this, _PQueue_interval, options.interval, \"f\");\n __classPrivateFieldSet(this, _PQueue_queue, new options.queueClass(), \"f\");\n __classPrivateFieldSet(this, _PQueue_queueClass, options.queueClass, \"f\");\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n __classPrivateFieldSet(this, _PQueue_throwOnTimeout, options.throwOnTimeout === true, \"f\");\n __classPrivateFieldSet(this, _PQueue_isPaused, options.autoStart === false, \"f\");\n }\n get concurrency() {\n return __classPrivateFieldGet(this, _PQueue_concurrency, \"f\");\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n __classPrivateFieldSet(this, _PQueue_concurrency, newConcurrency, \"f\");\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n }\n async add(function_, options = {}) {\n options = {\n timeout: this.timeout,\n throwOnTimeout: __classPrivateFieldGet(this, _PQueue_throwOnTimeout, \"f\"),\n ...options,\n };\n return new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _PQueue_queue, \"f\").enqueue(async () => {\n var _a;\n var _b, _c;\n __classPrivateFieldSet(this, _PQueue_pending, (_b = __classPrivateFieldGet(this, _PQueue_pending, \"f\"), _b++, _b), \"f\");\n __classPrivateFieldSet(this, _PQueue_intervalCount, (_c = __classPrivateFieldGet(this, _PQueue_intervalCount, \"f\"), _c++, _c), \"f\");\n try {\n // TODO: Use options.signal?.throwIfAborted() when targeting Node.js 18\n if ((_a = options.signal) === null || _a === void 0 ? void 0 : _a.aborted) {\n // TODO: Use ABORT_ERR code when targeting Node.js 16 (https://nodejs.org/docs/latest-v16.x/api/errors.html#abort_err)\n throw new AbortError('The task was aborted.');\n }\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), options.timeout);\n }\n if (options.signal) {\n operation = Promise.race([operation, __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_throwOnAbort).call(this, options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_next).call(this);\n }\n }, options);\n this.emit('add');\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this);\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!__classPrivateFieldGet(this, _PQueue_isPaused, \"f\")) {\n return this;\n }\n __classPrivateFieldSet(this, _PQueue_isPaused, false, \"f\");\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n __classPrivateFieldSet(this, _PQueue_isPaused, true, \"f\");\n }\n /**\n Clear the queue.\n */\n clear() {\n __classPrivateFieldSet(this, _PQueue_queue, new (__classPrivateFieldGet(this, _PQueue_queueClass, \"f\"))(), \"f\");\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n return;\n }\n await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size < limit) {\n return;\n }\n await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'next', () => __classPrivateFieldGet(this, _PQueue_queue, \"f\").size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (__classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n return;\n }\n await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'idle');\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return __classPrivateFieldGet(this, _PQueue_queue, \"f\").size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return __classPrivateFieldGet(this, _PQueue_queue, \"f\").filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return __classPrivateFieldGet(this, _PQueue_pending, \"f\");\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return __classPrivateFieldGet(this, _PQueue_isPaused, \"f\");\n }\n}\n_PQueue_carryoverConcurrencyCount = new WeakMap(), _PQueue_isIntervalIgnored = new WeakMap(), _PQueue_intervalCount = new WeakMap(), _PQueue_intervalCap = new WeakMap(), _PQueue_interval = new WeakMap(), _PQueue_intervalEnd = new WeakMap(), _PQueue_intervalId = new WeakMap(), _PQueue_timeoutId = new WeakMap(), _PQueue_queue = new WeakMap(), _PQueue_queueClass = new WeakMap(), _PQueue_pending = new WeakMap(), _PQueue_concurrency = new WeakMap(), _PQueue_isPaused = new WeakMap(), _PQueue_throwOnTimeout = new WeakMap(), _PQueue_instances = new WeakSet(), _PQueue_doesIntervalAllowAnother_get = function _PQueue_doesIntervalAllowAnother_get() {\n return __classPrivateFieldGet(this, _PQueue_isIntervalIgnored, \"f\") || __classPrivateFieldGet(this, _PQueue_intervalCount, \"f\") < __classPrivateFieldGet(this, _PQueue_intervalCap, \"f\");\n}, _PQueue_doesConcurrentAllowAnother_get = function _PQueue_doesConcurrentAllowAnother_get() {\n return __classPrivateFieldGet(this, _PQueue_pending, \"f\") < __classPrivateFieldGet(this, _PQueue_concurrency, \"f\");\n}, _PQueue_next = function _PQueue_next() {\n var _a;\n __classPrivateFieldSet(this, _PQueue_pending, (_a = __classPrivateFieldGet(this, _PQueue_pending, \"f\"), _a--, _a), \"f\");\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this);\n this.emit('next');\n}, _PQueue_onResumeInterval = function _PQueue_onResumeInterval() {\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onInterval).call(this);\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_initializeIntervalIfNeeded).call(this);\n __classPrivateFieldSet(this, _PQueue_timeoutId, undefined, \"f\");\n}, _PQueue_isIntervalPaused_get = function _PQueue_isIntervalPaused_get() {\n const now = Date.now();\n if (__classPrivateFieldGet(this, _PQueue_intervalId, \"f\") === undefined) {\n const delay = __classPrivateFieldGet(this, _PQueue_intervalEnd, \"f\") - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n __classPrivateFieldSet(this, _PQueue_intervalCount, (__classPrivateFieldGet(this, _PQueue_carryoverConcurrencyCount, \"f\")) ? __classPrivateFieldGet(this, _PQueue_pending, \"f\") : 0, \"f\");\n }\n else {\n // Act as the interval is pending\n if (__classPrivateFieldGet(this, _PQueue_timeoutId, \"f\") === undefined) {\n __classPrivateFieldSet(this, _PQueue_timeoutId, setTimeout(() => {\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onResumeInterval).call(this);\n }, delay), \"f\");\n }\n return true;\n }\n }\n return false;\n}, _PQueue_tryToStartAnother = function _PQueue_tryToStartAnother() {\n if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (__classPrivateFieldGet(this, _PQueue_intervalId, \"f\")) {\n clearInterval(__classPrivateFieldGet(this, _PQueue_intervalId, \"f\"));\n }\n __classPrivateFieldSet(this, _PQueue_intervalId, undefined, \"f\");\n this.emit('empty');\n if (__classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!__classPrivateFieldGet(this, _PQueue_isPaused, \"f\")) {\n const canInitializeInterval = !__classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_isIntervalPaused_get);\n if (__classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_doesIntervalAllowAnother_get) && __classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_doesConcurrentAllowAnother_get)) {\n const job = __classPrivateFieldGet(this, _PQueue_queue, \"f\").dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_initializeIntervalIfNeeded).call(this);\n }\n return true;\n }\n }\n return false;\n}, _PQueue_initializeIntervalIfNeeded = function _PQueue_initializeIntervalIfNeeded() {\n if (__classPrivateFieldGet(this, _PQueue_isIntervalIgnored, \"f\") || __classPrivateFieldGet(this, _PQueue_intervalId, \"f\") !== undefined) {\n return;\n }\n __classPrivateFieldSet(this, _PQueue_intervalId, setInterval(() => {\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onInterval).call(this);\n }, __classPrivateFieldGet(this, _PQueue_interval, \"f\")), \"f\");\n __classPrivateFieldSet(this, _PQueue_intervalEnd, Date.now() + __classPrivateFieldGet(this, _PQueue_interval, \"f\"), \"f\");\n}, _PQueue_onInterval = function _PQueue_onInterval() {\n if (__classPrivateFieldGet(this, _PQueue_intervalCount, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_intervalId, \"f\")) {\n clearInterval(__classPrivateFieldGet(this, _PQueue_intervalId, \"f\"));\n __classPrivateFieldSet(this, _PQueue_intervalId, undefined, \"f\");\n }\n __classPrivateFieldSet(this, _PQueue_intervalCount, __classPrivateFieldGet(this, _PQueue_carryoverConcurrencyCount, \"f\") ? __classPrivateFieldGet(this, _PQueue_pending, \"f\") : 0, \"f\");\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n}, _PQueue_processQueue = function _PQueue_processQueue() {\n // eslint-disable-next-line no-empty\n while (__classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this)) { }\n}, _PQueue_throwOnAbort = async function _PQueue_throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n // TODO: Reject with signal.throwIfAborted() when targeting Node.js 18\n // TODO: Use ABORT_ERR code when targeting Node.js 16 (https://nodejs.org/docs/latest-v16.x/api/errors.html#abort_err)\n reject(new AbortError('The task was aborted.'));\n }, { once: true });\n });\n}, _PQueue_onEvent = async function _PQueue_onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n};\nexport default PQueue;\n","/**\n * To guarantee Uint8Array semantics, convert nodejs Buffers\n * into vanilla Uint8Arrays\n */\nexport function asUint8Array(buf) {\n if (globalThis.Buffer != null) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n return buf;\n}\n//# sourceMappingURL=as-uint8array.js.map","import { asUint8Array } from './util/as-uint8array.js';\n/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc(size = 0) {\n if (globalThis.Buffer?.alloc != null) {\n return asUint8Array(globalThis.Buffer.alloc(size));\n }\n return new Uint8Array(size);\n}\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer?.allocUnsafe != null) {\n return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n }\n return new Uint8Array(size);\n}\n//# sourceMappingURL=alloc.js.map","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: {\n decode\n }\n };\n}\nconst string = createCodec('utf8', 'u', (buf) => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, (str) => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', (buf) => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, (str) => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;\n//# sourceMappingURL=bases.js.map","import { asUint8Array } from './util/as-uint8array.js';\nimport bases, {} from './util/bases.js';\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n }\n // add multibase prefix\n return base.decoder.decode(`${base.prefix}${string}`); // eslint-disable-line @typescript-eslint/restrict-template-expressions\n}\n//# sourceMappingURL=from-string.js.map","import {} from '@libp2p/interface/content-routing';\nimport { CodeError } from '@libp2p/interface/errors';\nimport {} from '@libp2p/interface/peer-routing';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport { marshal, unmarshal } from 'ipns';\nimport first from 'it-first';\nimport map from 'it-map';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nconst IPNS_PREFIX = uint8ArrayFromString('/ipns/');\nfunction isIPNSKey(key) {\n return uint8ArrayEquals(key.subarray(0, IPNS_PREFIX.byteLength), IPNS_PREFIX);\n}\nconst peerIdFromRoutingKey = (key) => {\n return peerIdFromBytes(key.slice(IPNS_PREFIX.length));\n};\n/**\n * Wrapper class to convert [http-routing-v1 content events](https://specs.ipfs.tech/routing/http-routing-v1/#response-body) into returned values\n */\nexport class DelegatedRoutingV1HttpApiClientContentRouting {\n client;\n constructor(client) {\n this.client = client;\n }\n async *findProviders(cid, options = {}) {\n yield* map(this.client.getProviders(cid, options), (record) => {\n return {\n id: record.ID,\n multiaddrs: record.Addrs ?? [],\n protocols: []\n };\n });\n }\n async provide() {\n // noop\n }\n async put(key, value, options) {\n if (!isIPNSKey(key)) {\n return;\n }\n const peerId = peerIdFromRoutingKey(key);\n const record = unmarshal(value);\n await this.client.putIPNS(peerId, record, options);\n }\n async get(key, options) {\n if (!isIPNSKey(key)) {\n throw new CodeError('Not found', 'ERR_NOT_FOUND');\n }\n const peerId = peerIdFromRoutingKey(key);\n try {\n const record = await this.client.getIPNS(peerId, options);\n return marshal(record);\n }\n catch (err) {\n // ERR_BAD_RESPONSE is thrown when the response had no body, which means\n // the record couldn't be found\n if (err.code === 'ERR_BAD_RESPONSE') {\n throw new CodeError('Not found', 'ERR_NOT_FOUND');\n }\n throw err;\n }\n }\n}\n/**\n * Wrapper class to convert [http-routing-v1](https://specs.ipfs.tech/routing/http-routing-v1/#response-body-0) events into expected libp2p values\n */\nexport class DelegatedRoutingV1HttpApiClientPeerRouting {\n client;\n constructor(client) {\n this.client = client;\n }\n async findPeer(peerId, options = {}) {\n const peer = await first(this.client.getPeers(peerId, options));\n if (peer != null) {\n return {\n id: peer.ID,\n multiaddrs: peer.Addrs,\n protocols: []\n };\n }\n throw new CodeError('Not found', 'ERR_NOT_FOUND');\n }\n async *getClosestPeers(key, options = {}) {\n // noop\n }\n}\n//# sourceMappingURL=routings.js.map","import { contentRouting } from '@libp2p/interface/content-routing';\nimport { CodeError } from '@libp2p/interface/errors';\nimport { setMaxListeners } from '@libp2p/interface/events';\nimport { peerRouting } from '@libp2p/interface/peer-routing';\nimport { logger } from '@libp2p/logger';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { anySignal } from 'any-signal';\nimport toIt from 'browser-readablestream-to-it';\nimport { unmarshal, marshal, peerIdToRoutingKey } from 'ipns';\nimport { ipnsValidator } from 'ipns/validator';\nimport { parse as ndjson } from 'it-ndjson';\nimport defer from 'p-defer';\nimport PQueue from 'p-queue';\nimport { DelegatedRoutingV1HttpApiClientContentRouting, DelegatedRoutingV1HttpApiClientPeerRouting } from './routings.js';\nconst log = logger('delegated-routing-v1-http-api-client');\nconst defaultValues = {\n concurrentRequests: 4,\n timeout: 30e3\n};\nexport class DefaultDelegatedRoutingV1HttpApiClient {\n started;\n httpQueue;\n shutDownController;\n clientUrl;\n timeout;\n contentRouting;\n peerRouting;\n /**\n * Create a new DelegatedContentRouting instance\n */\n constructor(url, init = {}) {\n this.started = false;\n this.shutDownController = new AbortController();\n setMaxListeners(Infinity, this.shutDownController.signal);\n this.httpQueue = new PQueue({\n concurrency: init.concurrentRequests ?? defaultValues.concurrentRequests\n });\n this.clientUrl = url instanceof URL ? url : new URL(url);\n this.timeout = init.timeout ?? defaultValues.timeout;\n this.contentRouting = new DelegatedRoutingV1HttpApiClientContentRouting(this);\n this.peerRouting = new DelegatedRoutingV1HttpApiClientPeerRouting(this);\n }\n get [contentRouting]() {\n return this.contentRouting;\n }\n get [peerRouting]() {\n return this.peerRouting;\n }\n isStarted() {\n return this.started;\n }\n start() {\n this.started = true;\n }\n stop() {\n this.httpQueue.clear();\n this.shutDownController.abort();\n this.started = false;\n }\n async *getProviders(cid, options = {}) {\n log('getProviders starts: %c', cid);\n const signal = anySignal([this.shutDownController.signal, options.signal, AbortSignal.timeout(this.timeout)]);\n const onStart = defer();\n const onFinish = defer();\n void this.httpQueue.add(async () => {\n onStart.resolve();\n return onFinish.promise;\n });\n try {\n await onStart.promise;\n // https://specs.ipfs.tech/routing/http-routing-v1/\n const resource = `${this.clientUrl}routing/v1/providers/${cid.toString()}`;\n const getOptions = { headers: { Accept: 'application/x-ndjson' }, signal };\n const res = await fetch(resource, getOptions);\n if (res.body == null) {\n throw new CodeError('Routing response had no body', 'ERR_BAD_RESPONSE');\n }\n const contentType = res.headers.get('Content-Type');\n if (contentType === 'application/json') {\n const body = await res.json();\n for (const provider of body.Providers) {\n const record = this.#handleProviderRecords(provider);\n if (record != null) {\n yield record;\n }\n }\n }\n else {\n for await (const provider of ndjson(toIt(res.body))) {\n const record = this.#handleProviderRecords(provider);\n if (record != null) {\n yield record;\n }\n }\n }\n }\n catch (err) {\n log.error('getProviders errored:', err);\n }\n finally {\n signal.clear();\n onFinish.resolve();\n log('getProviders finished: %c', cid);\n }\n }\n async *getPeers(peerId, options = {}) {\n log('getPeers starts: %c', peerId);\n const signal = anySignal([this.shutDownController.signal, options.signal, AbortSignal.timeout(this.timeout)]);\n const onStart = defer();\n const onFinish = defer();\n void this.httpQueue.add(async () => {\n onStart.resolve();\n return onFinish.promise;\n });\n try {\n await onStart.promise;\n // https://specs.ipfs.tech/routing/http-routing-v1/\n const resource = `${this.clientUrl}routing/v1/peers/${peerId.toCID().toString()}`;\n const getOptions = { headers: { Accept: 'application/x-ndjson' }, signal };\n const res = await fetch(resource, getOptions);\n if (res.body == null) {\n throw new CodeError('Routing response had no body', 'ERR_BAD_RESPONSE');\n }\n const contentType = res.headers.get('Content-Type');\n if (contentType === 'application/json') {\n const body = await res.json();\n for (const peer of body.Peers) {\n const record = this.#handlePeerRecords(peerId, peer);\n if (record != null) {\n yield record;\n }\n }\n }\n else {\n for await (const peer of ndjson(toIt(res.body))) {\n const record = this.#handlePeerRecords(peerId, peer);\n if (record != null) {\n yield record;\n }\n }\n }\n }\n catch (err) {\n log.error('getPeers errored:', err);\n }\n finally {\n signal.clear();\n onFinish.resolve();\n log('getPeers finished: %c', peerId);\n }\n }\n async getIPNS(peerId, options = {}) {\n log('getIPNS starts: %c', peerId);\n const signal = anySignal([this.shutDownController.signal, options.signal, AbortSignal.timeout(this.timeout)]);\n const onStart = defer();\n const onFinish = defer();\n void this.httpQueue.add(async () => {\n onStart.resolve();\n return onFinish.promise;\n });\n try {\n await onStart.promise;\n // https://specs.ipfs.tech/routing/http-routing-v1/\n const resource = `${this.clientUrl}routing/v1/ipns/${peerId.toCID().toString()}`;\n const getOptions = { headers: { Accept: 'application/vnd.ipfs.ipns-record' }, signal };\n const res = await fetch(resource, getOptions);\n if (res.body == null) {\n throw new CodeError('GET ipns response had no body', 'ERR_BAD_RESPONSE');\n }\n const body = new Uint8Array(await res.arrayBuffer());\n await ipnsValidator(peerIdToRoutingKey(peerId), body);\n return unmarshal(body);\n }\n finally {\n signal.clear();\n onFinish.resolve();\n log('getIPNS finished: %c', peerId);\n }\n }\n async putIPNS(peerId, record, options = {}) {\n log('getIPNS starts: %c', peerId);\n const signal = anySignal([this.shutDownController.signal, options.signal, AbortSignal.timeout(this.timeout)]);\n const onStart = defer();\n const onFinish = defer();\n void this.httpQueue.add(async () => {\n onStart.resolve();\n return onFinish.promise;\n });\n try {\n await onStart.promise;\n const body = marshal(record);\n // https://specs.ipfs.tech/routing/http-routing-v1/\n const resource = `${this.clientUrl}routing/v1/ipns/${peerId.toCID().toString()}`;\n const getOptions = { method: 'PUT', headers: { 'Content-Type': 'application/vnd.ipfs.ipns-record' }, body, signal };\n const res = await fetch(resource, getOptions);\n if (res.status !== 200) {\n throw new CodeError('PUT ipns response had status other than 200', 'ERR_BAD_RESPONSE');\n }\n }\n finally {\n signal.clear();\n onFinish.resolve();\n log('getIPNS finished: %c', peerId);\n }\n }\n #handleProviderRecords(record) {\n if (record.Schema === 'peer') {\n // Peer schema can have additional, user-defined, fields.\n record.ID = peerIdFromString(record.ID);\n record.Addrs = record.Addrs.map(multiaddr);\n record.Protocols = record.Protocols ?? [];\n return record;\n }\n if (record.Schema === 'bitswap') {\n // Bitswap schema is deprecated, was incorrectly used when server had no\n // information about actual protocols, so we convert it to peer result\n // without protocol information\n return {\n Schema: 'peer',\n ID: peerIdFromString(record.ID),\n Addrs: record.Addrs.map(multiaddr),\n Protocols: record.Protocol != null ? [record.Protocol] : []\n };\n }\n if (record.ID != null && Array.isArray(record.Addrs)) {\n return {\n Schema: 'peer',\n ID: peerIdFromString(record.ID),\n Addrs: record.Addrs.map(multiaddr),\n Protocols: Array.isArray(record.Protocols) ? record.Protocols : []\n };\n }\n }\n #handlePeerRecords(peerId, record) {\n if (record.Schema === 'peer') {\n // Peer schema can have additional, user-defined, fields.\n record.ID = peerIdFromString(record.ID);\n record.Addrs = record.Addrs.map(multiaddr);\n if (peerId.equals(record.ID)) {\n return record;\n }\n }\n }\n}\n//# sourceMappingURL=client.js.map","/**\n * @packageDocumentation\n *\n * A client implementation of the IPFS [Delegated Routing V1 HTTP API](https://specs.ipfs.tech/routing/http-routing-v1/) that can be used to interact with any compliant server implementation.\n *\n * @example\n *\n * ```typescript\n * import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client'\n * import { CID } from 'multiformats/cid'\n *\n * const client = createDelegatedRoutingV1HttpApiClient('https://example.org')\n *\n * for await (const prov of getProviders(CID.parse('QmFoo'))) {\n * // ...\n * }\n * ```\n *\n * ### How to use with libp2p\n *\n * The client can be configured as a libp2p service, this will enable it as both a {@link https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.content_routing.ContentRouting.html | ContentRouting} and a {@link https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_routing.PeerRouting.html | PeerRouting} implementation\n *\n * @example\n *\n * ```typescript\n * import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client'\n * import { createLibp2p } from 'libp2p'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const client = createDelegatedRoutingV1HttpApiClient('https://example.org')\n * const libp2p = await createLibp2p({\n * // other config here\n * services: {\n * delegatedRouting: client\n * }\n * })\n *\n * // later this will use the configured HTTP gateway\n * await libp2p.peerRouting.findPeer(peerIdFromString('QmFoo'))\n * ```\n */\nimport { DefaultDelegatedRoutingV1HttpApiClient } from './client.js';\n/**\n * Create and return a client to use with a Routing V1 HTTP API server\n */\nexport function createDelegatedRoutingV1HttpApiClient(url, init = {}) {\n return new DefaultDelegatedRoutingV1HttpApiClient(new URL(url), init);\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Generate, import, and export PeerIDs.\n *\n * A Peer ID is the SHA-256 [multihash](https://github.com/multiformats/multihash) of a public key.\n *\n * The public key is a base64 encoded string of a protobuf containing an RSA DER buffer. This uses a node buffer to pass the base64 encoded public key protobuf to the multihash for ID generation.\n *\n * @example\n *\n * ```TypeScript\n * import { createEd25519PeerId } from '@libp2p/peer-id-factory'\n *\n * const peerId = await createEd25519PeerId()\n * console.log(peerId.toString())\n * ```\n *\n * ```bash\n * 12D3KooWRm8J3iL796zPFi2EtGGtUJn58AG67gcqzMFHZnnsTzqD\n * ```\n */\nimport { generateKeyPair, marshalPrivateKey, unmarshalPrivateKey, marshalPublicKey, unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { peerIdFromKeys, peerIdFromBytes } from '@libp2p/peer-id';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { PeerIdProto } from './proto.js';\nexport const createEd25519PeerId = async () => {\n const key = await generateKeyPair('Ed25519');\n const id = await createFromPrivKey(key);\n if (id.type === 'Ed25519') {\n return id;\n }\n throw new Error(`Generated unexpected PeerId type \"${id.type}\"`);\n};\nexport const createSecp256k1PeerId = async () => {\n const key = await generateKeyPair('secp256k1');\n const id = await createFromPrivKey(key);\n if (id.type === 'secp256k1') {\n return id;\n }\n throw new Error(`Generated unexpected PeerId type \"${id.type}\"`);\n};\nexport const createRSAPeerId = async (opts) => {\n const key = await generateKeyPair('RSA', opts?.bits ?? 2048);\n const id = await createFromPrivKey(key);\n if (id.type === 'RSA') {\n return id;\n }\n throw new Error(`Generated unexpected PeerId type \"${id.type}\"`);\n};\nexport async function createFromPubKey(publicKey) {\n return peerIdFromKeys(marshalPublicKey(publicKey));\n}\nexport async function createFromPrivKey(privateKey) {\n return peerIdFromKeys(marshalPublicKey(privateKey.public), marshalPrivateKey(privateKey));\n}\nexport function exportToProtobuf(peerId, excludePrivateKey) {\n return PeerIdProto.encode({\n id: peerId.multihash.bytes,\n pubKey: peerId.publicKey,\n privKey: excludePrivateKey === true || peerId.privateKey == null ? undefined : peerId.privateKey\n });\n}\nexport async function createFromProtobuf(buf) {\n const { id, privKey, pubKey } = PeerIdProto.decode(buf);\n return createFromParts(id ?? new Uint8Array(0), privKey, pubKey);\n}\nexport async function createFromJSON(obj) {\n return createFromParts(uint8ArrayFromString(obj.id, 'base58btc'), obj.privKey != null ? uint8ArrayFromString(obj.privKey, 'base64pad') : undefined, obj.pubKey != null ? uint8ArrayFromString(obj.pubKey, 'base64pad') : undefined);\n}\nasync function createFromParts(multihash, privKey, pubKey) {\n if (privKey != null) {\n const key = await unmarshalPrivateKey(privKey);\n return createFromPrivKey(key);\n }\n else if (pubKey != null) {\n const key = unmarshalPublicKey(pubKey);\n return createFromPubKey(key);\n }\n const peerId = peerIdFromBytes(multihash);\n if (peerId.type !== 'Ed25519' && peerId.type !== 'secp256k1' && peerId.type !== 'RSA') {\n // should not be possible since `multihash` is derived from keys and these\n // are the cryptographic peer id types\n throw new Error('Supplied PeerID is invalid');\n }\n return peerId;\n}\n//# sourceMappingURL=index.js.map","// Generated by CoffeeScript 1.12.7\n(function() {\n var Netmask, atob, chr, chr0, chrA, chra, ip2long, long2ip;\n\n long2ip = function(long) {\n var a, b, c, d;\n a = (long & (0xff << 24)) >>> 24;\n b = (long & (0xff << 16)) >>> 16;\n c = (long & (0xff << 8)) >>> 8;\n d = long & 0xff;\n return [a, b, c, d].join('.');\n };\n\n ip2long = function(ip) {\n var b, c, i, j, n, ref;\n b = [];\n for (i = j = 0; j <= 3; i = ++j) {\n if (ip.length === 0) {\n break;\n }\n if (i > 0) {\n if (ip[0] !== '.') {\n throw new Error('Invalid IP');\n }\n ip = ip.substring(1);\n }\n ref = atob(ip), n = ref[0], c = ref[1];\n ip = ip.substring(c);\n b.push(n);\n }\n if (ip.length !== 0) {\n throw new Error('Invalid IP');\n }\n switch (b.length) {\n case 1:\n if (b[0] > 0xFFFFFFFF) {\n throw new Error('Invalid IP');\n }\n return b[0] >>> 0;\n case 2:\n if (b[0] > 0xFF || b[1] > 0xFFFFFF) {\n throw new Error('Invalid IP');\n }\n return (b[0] << 24 | b[1]) >>> 0;\n case 3:\n if (b[0] > 0xFF || b[1] > 0xFF || b[2] > 0xFFFF) {\n throw new Error('Invalid IP');\n }\n return (b[0] << 24 | b[1] << 16 | b[2]) >>> 0;\n case 4:\n if (b[0] > 0xFF || b[1] > 0xFF || b[2] > 0xFF || b[3] > 0xFF) {\n throw new Error('Invalid IP');\n }\n return (b[0] << 24 | b[1] << 16 | b[2] << 8 | b[3]) >>> 0;\n default:\n throw new Error('Invalid IP');\n }\n };\n\n chr = function(b) {\n return b.charCodeAt(0);\n };\n\n chr0 = chr('0');\n\n chra = chr('a');\n\n chrA = chr('A');\n\n atob = function(s) {\n var base, dmax, i, n, start;\n n = 0;\n base = 10;\n dmax = '9';\n i = 0;\n if (s.length > 1 && s[i] === '0') {\n if (s[i + 1] === 'x' || s[i + 1] === 'X') {\n i += 2;\n base = 16;\n } else if ('0' <= s[i + 1] && s[i + 1] <= '9') {\n i++;\n base = 8;\n dmax = '7';\n }\n }\n start = i;\n while (i < s.length) {\n if ('0' <= s[i] && s[i] <= dmax) {\n n = (n * base + (chr(s[i]) - chr0)) >>> 0;\n } else if (base === 16) {\n if ('a' <= s[i] && s[i] <= 'f') {\n n = (n * base + (10 + chr(s[i]) - chra)) >>> 0;\n } else if ('A' <= s[i] && s[i] <= 'F') {\n n = (n * base + (10 + chr(s[i]) - chrA)) >>> 0;\n } else {\n break;\n }\n } else {\n break;\n }\n if (n > 0xFFFFFFFF) {\n throw new Error('too large');\n }\n i++;\n }\n if (i === start) {\n throw new Error('empty octet');\n }\n return [n, i];\n };\n\n Netmask = (function() {\n function Netmask(net, mask) {\n var error, i, j, ref;\n if (typeof net !== 'string') {\n throw new Error(\"Missing `net' parameter\");\n }\n if (!mask) {\n ref = net.split('/', 2), net = ref[0], mask = ref[1];\n }\n if (!mask) {\n mask = 32;\n }\n if (typeof mask === 'string' && mask.indexOf('.') > -1) {\n try {\n this.maskLong = ip2long(mask);\n } catch (error1) {\n error = error1;\n throw new Error(\"Invalid mask: \" + mask);\n }\n for (i = j = 32; j >= 0; i = --j) {\n if (this.maskLong === (0xffffffff << (32 - i)) >>> 0) {\n this.bitmask = i;\n break;\n }\n }\n } else if (mask || mask === 0) {\n this.bitmask = parseInt(mask, 10);\n this.maskLong = 0;\n if (this.bitmask > 0) {\n this.maskLong = (0xffffffff << (32 - this.bitmask)) >>> 0;\n }\n } else {\n throw new Error(\"Invalid mask: empty\");\n }\n try {\n this.netLong = (ip2long(net) & this.maskLong) >>> 0;\n } catch (error1) {\n error = error1;\n throw new Error(\"Invalid net address: \" + net);\n }\n if (!(this.bitmask <= 32)) {\n throw new Error(\"Invalid mask for ip4: \" + mask);\n }\n this.size = Math.pow(2, 32 - this.bitmask);\n this.base = long2ip(this.netLong);\n this.mask = long2ip(this.maskLong);\n this.hostmask = long2ip(~this.maskLong);\n this.first = this.bitmask <= 30 ? long2ip(this.netLong + 1) : this.base;\n this.last = this.bitmask <= 30 ? long2ip(this.netLong + this.size - 2) : long2ip(this.netLong + this.size - 1);\n this.broadcast = this.bitmask <= 30 ? long2ip(this.netLong + this.size - 1) : void 0;\n }\n\n Netmask.prototype.contains = function(ip) {\n if (typeof ip === 'string' && (ip.indexOf('/') > 0 || ip.split('.').length !== 4)) {\n ip = new Netmask(ip);\n }\n if (ip instanceof Netmask) {\n return this.contains(ip.base) && this.contains(ip.broadcast || ip.last);\n } else {\n return (ip2long(ip) & this.maskLong) >>> 0 === (this.netLong & this.maskLong) >>> 0;\n }\n };\n\n Netmask.prototype.next = function(count) {\n if (count == null) {\n count = 1;\n }\n return new Netmask(long2ip(this.netLong + (this.size * count)), this.mask);\n };\n\n Netmask.prototype.forEach = function(fn) {\n var index, lastLong, long;\n long = ip2long(this.first);\n lastLong = ip2long(this.last);\n index = 0;\n while (long <= lastLong) {\n fn(long2ip(long), long, index);\n index++;\n long++;\n }\n };\n\n Netmask.prototype.toString = function() {\n return this.base + \"/\" + this.bitmask;\n };\n\n return Netmask;\n\n })();\n\n exports.ip2long = ip2long;\n\n exports.long2ip = long2ip;\n\n exports.Netmask = Netmask;\n\n}).call(this);\n","import { isIPv4, isIPv6 } from '@chainsafe/is-ip';\nimport { Netmask } from 'netmask';\nconst PRIVATE_IP_RANGES = [\n '0.0.0.0/8',\n '10.0.0.0/8',\n '100.64.0.0/10',\n '127.0.0.0/8',\n '169.254.0.0/16',\n '172.16.0.0/12',\n '192.0.0.0/24',\n '192.0.0.0/29',\n '192.0.0.8/32',\n '192.0.0.9/32',\n '192.0.0.10/32',\n '192.0.0.170/32',\n '192.0.0.171/32',\n '192.0.2.0/24',\n '192.31.196.0/24',\n '192.52.193.0/24',\n '192.88.99.0/24',\n '192.168.0.0/16',\n '192.175.48.0/24',\n '198.18.0.0/15',\n '198.51.100.0/24',\n '203.0.113.0/24',\n '240.0.0.0/4',\n '255.255.255.255/32'\n];\nconst NETMASK_RANGES = PRIVATE_IP_RANGES.map(ipRange => new Netmask(ipRange));\nfunction ipv4Check(ipAddr) {\n for (const r of NETMASK_RANGES) {\n if (r.contains(ipAddr))\n return true;\n }\n return false;\n}\nfunction isIpv4MappedIpv6(ipAddr) {\n return /^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(ipAddr);\n}\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc4291#section-2.5.5.2\n */\nfunction ipv4MappedIpv6Check(ipAddr) {\n const parts = ipAddr.split(':');\n if (parts.length < 2) {\n return false;\n }\n const octet34 = parts[parts.length - 1].padStart(4, '0');\n const octet12 = parts[parts.length - 2].padStart(4, '0');\n const ip4 = `${parseInt(octet12.substring(0, 2), 16)}.${parseInt(octet12.substring(2), 16)}.${parseInt(octet34.substring(0, 2), 16)}.${parseInt(octet34.substring(2), 16)}`;\n return ipv4Check(ip4);\n}\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc4291#section-2.2 example 3\n */\nfunction isIpv4EmbeddedIpv6(ipAddr) {\n return /^::ffff:([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$/.test(ipAddr);\n}\nfunction ipv4EmbeddedIpv6Check(ipAddr) {\n const parts = ipAddr.split(':');\n const ip4 = parts[parts.length - 1];\n return ipv4Check(ip4);\n}\nfunction ipv6Check(ipAddr) {\n return /^::$/.test(ipAddr) ||\n /^::1$/.test(ipAddr) ||\n /^64:ff9b::([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$/.test(ipAddr) ||\n /^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(ipAddr) ||\n /^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(ipAddr) ||\n /^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(ipAddr) ||\n /^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(ipAddr) ||\n /^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(ipAddr) ||\n /^f[c-d]([0-9a-fA-F]{2,2}):/i.test(ipAddr) ||\n /^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(ipAddr) ||\n /^ff([0-9a-fA-F]{2,2}):/i.test(ipAddr);\n}\nexport function isPrivateIp(ip) {\n if (isIPv4(ip))\n return ipv4Check(ip);\n else if (isIpv4MappedIpv6(ip))\n return ipv4MappedIpv6Check(ip);\n else if (isIpv4EmbeddedIpv6(ip))\n return ipv4EmbeddedIpv6Check(ip);\n else if (isIPv6(ip))\n return ipv6Check(ip);\n else\n return undefined;\n}\n//# sourceMappingURL=private-ip.js.map","/**\n * The prefix to use in the protocol\n */\nexport const PROTOCOL_PREFIX = 'libp2p';\n/**\n * The name to use in the protocol\n */\nexport const PROTOCOL_NAME = 'autonat';\n/**\n * The version to use in the protocol\n */\nexport const PROTOCOL_VERSION = '1.0.0';\nexport const TIMEOUT = 30000;\nexport const STARTUP_DELAY = 5000;\nexport const REFRESH_INTERVAL = 60000;\nexport const MAX_INBOUND_STREAMS = 1;\nexport const MAX_OUTBOUND_STREAMS = 1;\n//# sourceMappingURL=constants.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Message;\n(function (Message) {\n let MessageType;\n (function (MessageType) {\n MessageType[\"DIAL\"] = \"DIAL\";\n MessageType[\"DIAL_RESPONSE\"] = \"DIAL_RESPONSE\";\n })(MessageType = Message.MessageType || (Message.MessageType = {}));\n let __MessageTypeValues;\n (function (__MessageTypeValues) {\n __MessageTypeValues[__MessageTypeValues[\"DIAL\"] = 0] = \"DIAL\";\n __MessageTypeValues[__MessageTypeValues[\"DIAL_RESPONSE\"] = 1] = \"DIAL_RESPONSE\";\n })(__MessageTypeValues || (__MessageTypeValues = {}));\n (function (MessageType) {\n MessageType.codec = () => {\n return enumeration(__MessageTypeValues);\n };\n })(MessageType = Message.MessageType || (Message.MessageType = {}));\n let ResponseStatus;\n (function (ResponseStatus) {\n ResponseStatus[\"OK\"] = \"OK\";\n ResponseStatus[\"E_DIAL_ERROR\"] = \"E_DIAL_ERROR\";\n ResponseStatus[\"E_DIAL_REFUSED\"] = \"E_DIAL_REFUSED\";\n ResponseStatus[\"E_BAD_REQUEST\"] = \"E_BAD_REQUEST\";\n ResponseStatus[\"E_INTERNAL_ERROR\"] = \"E_INTERNAL_ERROR\";\n })(ResponseStatus = Message.ResponseStatus || (Message.ResponseStatus = {}));\n let __ResponseStatusValues;\n (function (__ResponseStatusValues) {\n __ResponseStatusValues[__ResponseStatusValues[\"OK\"] = 0] = \"OK\";\n __ResponseStatusValues[__ResponseStatusValues[\"E_DIAL_ERROR\"] = 100] = \"E_DIAL_ERROR\";\n __ResponseStatusValues[__ResponseStatusValues[\"E_DIAL_REFUSED\"] = 101] = \"E_DIAL_REFUSED\";\n __ResponseStatusValues[__ResponseStatusValues[\"E_BAD_REQUEST\"] = 200] = \"E_BAD_REQUEST\";\n __ResponseStatusValues[__ResponseStatusValues[\"E_INTERNAL_ERROR\"] = 300] = \"E_INTERNAL_ERROR\";\n })(__ResponseStatusValues || (__ResponseStatusValues = {}));\n (function (ResponseStatus) {\n ResponseStatus.codec = () => {\n return enumeration(__ResponseStatusValues);\n };\n })(ResponseStatus = Message.ResponseStatus || (Message.ResponseStatus = {}));\n let PeerInfo;\n (function (PeerInfo) {\n let _codec;\n PeerInfo.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.id != null) {\n w.uint32(10);\n w.bytes(obj.id);\n }\n if (obj.addrs != null) {\n for (const value of obj.addrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n addrs: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.id = reader.bytes();\n break;\n case 2:\n obj.addrs.push(reader.bytes());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PeerInfo.encode = (obj) => {\n return encodeMessage(obj, PeerInfo.codec());\n };\n PeerInfo.decode = (buf) => {\n return decodeMessage(buf, PeerInfo.codec());\n };\n })(PeerInfo = Message.PeerInfo || (Message.PeerInfo = {}));\n let Dial;\n (function (Dial) {\n let _codec;\n Dial.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.peer != null) {\n w.uint32(10);\n Message.PeerInfo.codec().encode(obj.peer, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.peer = Message.PeerInfo.codec().decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Dial.encode = (obj) => {\n return encodeMessage(obj, Dial.codec());\n };\n Dial.decode = (buf) => {\n return decodeMessage(buf, Dial.codec());\n };\n })(Dial = Message.Dial || (Message.Dial = {}));\n let DialResponse;\n (function (DialResponse) {\n let _codec;\n DialResponse.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.status != null) {\n w.uint32(8);\n Message.ResponseStatus.codec().encode(obj.status, w);\n }\n if (obj.statusText != null) {\n w.uint32(18);\n w.string(obj.statusText);\n }\n if (obj.addr != null) {\n w.uint32(26);\n w.bytes(obj.addr);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.status = Message.ResponseStatus.codec().decode(reader);\n break;\n case 2:\n obj.statusText = reader.string();\n break;\n case 3:\n obj.addr = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n DialResponse.encode = (obj) => {\n return encodeMessage(obj, DialResponse.codec());\n };\n DialResponse.decode = (buf) => {\n return decodeMessage(buf, DialResponse.codec());\n };\n })(DialResponse = Message.DialResponse || (Message.DialResponse = {}));\n let _codec;\n Message.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null) {\n w.uint32(8);\n Message.MessageType.codec().encode(obj.type, w);\n }\n if (obj.dial != null) {\n w.uint32(18);\n Message.Dial.codec().encode(obj.dial, w);\n }\n if (obj.dialResponse != null) {\n w.uint32(26);\n Message.DialResponse.codec().encode(obj.dialResponse, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.type = Message.MessageType.codec().decode(reader);\n break;\n case 2:\n obj.dial = Message.Dial.codec().decode(reader, reader.uint32());\n break;\n case 3:\n obj.dialResponse = Message.DialResponse.codec().decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Message.encode = (obj) => {\n return encodeMessage(obj, Message.codec());\n };\n Message.decode = (buf) => {\n return decodeMessage(buf, Message.codec());\n };\n})(Message || (Message = {}));\n//# sourceMappingURL=index.js.map","import { CodeError, ERR_TIMEOUT, setMaxListeners } from '@libp2p/interface';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport { createEd25519PeerId } from '@libp2p/peer-id-factory';\nimport { isPrivateIp } from '@libp2p/utils/private-ip';\nimport { multiaddr, protocols } from '@multiformats/multiaddr';\nimport first from 'it-first';\nimport * as lp from 'it-length-prefixed';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { MAX_INBOUND_STREAMS, MAX_OUTBOUND_STREAMS, PROTOCOL_NAME, PROTOCOL_PREFIX, PROTOCOL_VERSION, REFRESH_INTERVAL, STARTUP_DELAY, TIMEOUT } from './constants.js';\nimport { Message } from './pb/index.js';\n// if more than 3 peers manage to dial us on what we believe to be our external\n// IP then we are convinced that it is, in fact, our external IP\n// https://github.com/libp2p/specs/blob/master/autonat/README.md#autonat-protocol\nconst REQUIRED_SUCCESSFUL_DIALS = 4;\nexport class AutoNATService {\n components;\n startupDelay;\n refreshInterval;\n protocol;\n timeout;\n maxInboundStreams;\n maxOutboundStreams;\n verifyAddressTimeout;\n started;\n log;\n constructor(components, init) {\n this.components = components;\n this.log = components.logger.forComponent('libp2p:autonat');\n this.started = false;\n this.protocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;\n this.timeout = init.timeout ?? TIMEOUT;\n this.maxInboundStreams = init.maxInboundStreams ?? MAX_INBOUND_STREAMS;\n this.maxOutboundStreams = init.maxOutboundStreams ?? MAX_OUTBOUND_STREAMS;\n this.startupDelay = init.startupDelay ?? STARTUP_DELAY;\n this.refreshInterval = init.refreshInterval ?? REFRESH_INTERVAL;\n this._verifyExternalAddresses = this._verifyExternalAddresses.bind(this);\n }\n isStarted() {\n return this.started;\n }\n async start() {\n if (this.started) {\n return;\n }\n await this.components.registrar.handle(this.protocol, (data) => {\n void this.handleIncomingAutonatStream(data)\n .catch(err => {\n this.log.error('error handling incoming autonat stream', err);\n });\n }, {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams\n });\n this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.startupDelay);\n this.started = true;\n }\n async stop() {\n await this.components.registrar.unhandle(this.protocol);\n clearTimeout(this.verifyAddressTimeout);\n this.started = false;\n }\n /**\n * Handle an incoming AutoNAT request\n */\n async handleIncomingAutonatStream(data) {\n const signal = AbortSignal.timeout(this.timeout);\n const onAbort = () => {\n data.stream.abort(new CodeError('handleIncomingAutonatStream timeout', ERR_TIMEOUT));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n // this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning\n // appearing in the console\n setMaxListeners(Infinity, signal);\n const ourHosts = this.components.addressManager.getAddresses()\n .map(ma => ma.toOptions().host);\n try {\n const self = this;\n await pipe(data.stream, (source) => lp.decode(source), async function* (stream) {\n const buf = await first(stream);\n if (buf == null) {\n self.log('no message received');\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'No message was sent'\n }\n });\n return;\n }\n let request;\n try {\n request = Message.decode(buf);\n }\n catch (err) {\n self.log.error('could not decode message', err);\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'Could not decode message'\n }\n });\n return;\n }\n const dialRequest = request.dial;\n if (dialRequest == null) {\n self.log.error('dial was missing from message');\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'No Dial message found in message'\n }\n });\n return;\n }\n let peerId;\n const peer = dialRequest.peer;\n if (peer == null || peer.id == null) {\n self.log.error('PeerId missing from message');\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'missing peer info'\n }\n });\n return;\n }\n try {\n peerId = peerIdFromBytes(peer.id);\n }\n catch (err) {\n self.log.error('invalid PeerId', err);\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'bad peer id'\n }\n });\n return;\n }\n self.log('incoming request from %p', peerId);\n // reject any dial requests that arrive via relays\n if (!data.connection.remotePeer.equals(peerId)) {\n self.log('target peer %p did not equal sending peer %p', peerId, data.connection.remotePeer);\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'peer id mismatch'\n }\n });\n return;\n }\n // get a list of multiaddrs to dial\n const multiaddrs = peer.addrs\n .map(buf => multiaddr(buf))\n .filter(ma => {\n const isFromSameHost = ma.toOptions().host === data.connection.remoteAddr.toOptions().host;\n self.log.trace('request to dial %a was sent from %a is same host %s', ma, data.connection.remoteAddr, isFromSameHost);\n // skip any Multiaddrs where the target node's IP does not match the sending node's IP\n return isFromSameHost;\n })\n .filter(ma => {\n const host = ma.toOptions().host;\n const isPublicIp = !(isPrivateIp(host) ?? false);\n self.log.trace('host %s was public %s', host, isPublicIp);\n // don't try to dial private addresses\n return isPublicIp;\n })\n .filter(ma => {\n const host = ma.toOptions().host;\n const isNotOurHost = !ourHosts.includes(host);\n self.log.trace('host %s was not our host %s', host, isNotOurHost);\n // don't try to dial nodes on the same host as us\n return isNotOurHost;\n })\n .filter(ma => {\n const isSupportedTransport = Boolean(self.components.transportManager.dialTransportForMultiaddr(ma));\n self.log.trace('transport for %a is supported %s', ma, isSupportedTransport);\n // skip any Multiaddrs that have transports we do not support\n return isSupportedTransport;\n })\n .map(ma => {\n if (ma.getPeerId() == null) {\n // make sure we have the PeerId as part of the Multiaddr\n ma = ma.encapsulate(`/p2p/${peerId.toString()}`);\n }\n return ma;\n });\n // make sure we have something to dial\n if (multiaddrs.length === 0) {\n self.log('no valid multiaddrs for %p in message', peerId);\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_DIAL_REFUSED,\n statusText: 'no dialable addresses'\n }\n });\n return;\n }\n self.log('dial multiaddrs %s for peer %p', multiaddrs.map(ma => ma.toString()).join(', '), peerId);\n let errorMessage = '';\n let lastMultiaddr = multiaddrs[0];\n for await (const multiaddr of multiaddrs) {\n let connection;\n lastMultiaddr = multiaddr;\n try {\n connection = await self.components.connectionManager.openConnection(multiaddr, {\n signal\n });\n if (!connection.remoteAddr.equals(multiaddr)) {\n self.log.error('tried to dial %a but dialed %a', multiaddr, connection.remoteAddr);\n throw new Error('Unexpected remote address');\n }\n self.log('Success %p', peerId);\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.OK,\n addr: connection.remoteAddr.decapsulateCode(protocols('p2p').code).bytes\n }\n });\n return;\n }\n catch (err) {\n self.log('could not dial %p', peerId, err);\n errorMessage = err.message;\n }\n finally {\n if (connection != null) {\n await connection.close();\n }\n }\n }\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_DIAL_ERROR,\n statusText: errorMessage,\n addr: lastMultiaddr.bytes\n }\n });\n }, (source) => lp.encode(source), data.stream);\n }\n catch (err) {\n this.log.error('error handling incoming autonat stream', err);\n }\n finally {\n signal.removeEventListener('abort', onAbort);\n }\n }\n _verifyExternalAddresses() {\n void this.verifyExternalAddresses()\n .catch(err => {\n this.log.error('error verifying external address', err);\n });\n }\n /**\n * Our multicodec topology noticed a new peer that supports autonat\n */\n async verifyExternalAddresses() {\n clearTimeout(this.verifyAddressTimeout);\n // Do not try to push if we are not running\n if (!this.isStarted()) {\n return;\n }\n const addressManager = this.components.addressManager;\n const multiaddrs = addressManager.getObservedAddrs()\n .filter(ma => {\n const options = ma.toOptions();\n return !(isPrivateIp(options.host) ?? false);\n });\n if (multiaddrs.length === 0) {\n this.log('no public addresses found, not requesting verification');\n this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.refreshInterval);\n return;\n }\n const signal = AbortSignal.timeout(this.timeout);\n // this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning\n // appearing in the console\n setMaxListeners(Infinity, signal);\n const self = this;\n try {\n this.log('verify multiaddrs %s', multiaddrs.map(ma => ma.toString()).join(', '));\n const request = Message.encode({\n type: Message.MessageType.DIAL,\n dial: {\n peer: {\n id: this.components.peerId.toBytes(),\n addrs: multiaddrs.map(map => map.bytes)\n }\n }\n });\n // find some random peers\n const randomPeer = await createEd25519PeerId();\n const randomCid = randomPeer.toBytes();\n const results = {};\n const networkSegments = [];\n const verifyAddress = async (peer) => {\n let onAbort = () => { };\n try {\n this.log('asking %p to verify multiaddr', peer.id);\n const connection = await self.components.connectionManager.openConnection(peer.id, {\n signal\n });\n const stream = await connection.newStream(this.protocol, {\n signal\n });\n onAbort = () => { stream.abort(new CodeError('verifyAddress timeout', ERR_TIMEOUT)); };\n signal.addEventListener('abort', onAbort, { once: true });\n const buf = await pipe([request], (source) => lp.encode(source), stream, (source) => lp.decode(source), async (stream) => first(stream));\n if (buf == null) {\n this.log('no response received from %p', connection.remotePeer);\n return undefined;\n }\n const response = Message.decode(buf);\n if (response.type !== Message.MessageType.DIAL_RESPONSE || response.dialResponse == null) {\n this.log('invalid autonat response from %p', connection.remotePeer);\n return undefined;\n }\n if (response.dialResponse.status === Message.ResponseStatus.OK) {\n // make sure we use different network segments\n const options = connection.remoteAddr.toOptions();\n let segment;\n if (options.family === 4) {\n const octets = options.host.split('.');\n segment = octets[0];\n }\n else if (options.family === 6) {\n const octets = options.host.split(':');\n segment = octets[0];\n }\n else {\n this.log('remote address \"%s\" was not IP4 or IP6?', options.host);\n return undefined;\n }\n if (networkSegments.includes(segment)) {\n this.log('already have response from network segment %d - %s', segment, options.host);\n return undefined;\n }\n networkSegments.push(segment);\n }\n return response.dialResponse;\n }\n catch (err) {\n this.log.error('error asking remote to verify multiaddr', err);\n }\n finally {\n signal.removeEventListener('abort', onAbort);\n }\n };\n for await (const dialResponse of parallel(map(this.components.peerRouting.getClosestPeers(randomCid, {\n signal\n }), (peer) => async () => verifyAddress(peer)), {\n concurrency: REQUIRED_SUCCESSFUL_DIALS\n })) {\n try {\n if (dialResponse == null) {\n continue;\n }\n // they either told us which address worked/didn't work, or we only sent them one address\n const addr = dialResponse.addr == null ? multiaddrs[0] : multiaddr(dialResponse.addr);\n this.log('autonat response for %a is %s', addr, dialResponse.status);\n if (dialResponse.status === Message.ResponseStatus.E_BAD_REQUEST) {\n // the remote could not parse our request\n continue;\n }\n if (dialResponse.status === Message.ResponseStatus.E_DIAL_REFUSED) {\n // the remote could not honour our request\n continue;\n }\n if (dialResponse.addr == null && multiaddrs.length > 1) {\n // we sent the remote multiple addrs but they didn't tell us which ones worked/didn't work\n continue;\n }\n if (!multiaddrs.some(ma => ma.equals(addr))) {\n this.log('peer reported %a as %s but it was not in our observed address list', addr, dialResponse.status);\n continue;\n }\n const addrStr = addr.toString();\n if (results[addrStr] == null) {\n results[addrStr] = { success: 0, failure: 0 };\n }\n if (dialResponse.status === Message.ResponseStatus.OK) {\n results[addrStr].success++;\n }\n else if (dialResponse.status === Message.ResponseStatus.E_DIAL_ERROR) {\n results[addrStr].failure++;\n }\n if (results[addrStr].success === REQUIRED_SUCCESSFUL_DIALS) {\n // we are now convinced\n this.log('%a is externally dialable', addr);\n addressManager.confirmObservedAddr(addr);\n return;\n }\n if (results[addrStr].failure === REQUIRED_SUCCESSFUL_DIALS) {\n // we are now unconvinced\n this.log('%a is not externally dialable', addr);\n addressManager.removeObservedAddr(addr);\n return;\n }\n }\n catch (err) {\n this.log.error('could not verify external address', err);\n }\n }\n }\n finally {\n this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.refreshInterval);\n }\n }\n}\n//# sourceMappingURL=autonat.js.map","/**\n * @packageDocumentation\n *\n * The AutoNAT service uses the [AutoNAT protocol](https://docs.libp2p.io/concepts/nat/autonat/).\n * The service confirms addresses are dialable by remote peers, and updates the list it advertises.\n *\n * The service dials randomly selected peers with a request to verify it's external addresses.\n * The request includes a list of public multiaddrs (addressManager.getObservedAddrs()).\n * The remote peers dial that list and respond with the results.\n *\n * The AutoNAT service uses those responses to either:\n * - addressManager.confirmObservedAddr(addr)\n * - addressManager.removeObservedAddr(addr)\n *\n * The result list of candidates and confirmed addresses can be found\n * at addressManager.getObservedAddrs()\n *\n * @example\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { autoNAT } from '@libp2p/autonat'\n *\n * const node = await createLibp2p({\n * // ...other options\n * services: {\n * autoNAT: autoNAT()\n * }\n * })\n * ```\n */\nimport { AutoNATService } from './autonat.js';\nexport function autoNAT(init = {}) {\n return (components) => {\n return new AutoNATService(components, init);\n };\n}\n//# sourceMappingURL=index.js.map","import { multiaddr } from '@multiformats/multiaddr';\n/*\n * Valid combinations\n */\nexport const DNS4 = base('dns4');\nexport const DNS6 = base('dns6');\nexport const DNSADDR = base('dnsaddr');\nexport const DNS = or(base('dns'), DNSADDR, DNS4, DNS6);\nexport const IP = or(base('ip4'), base('ip6'));\nexport const TCP = or(and(IP, base('tcp')), and(DNS, base('tcp')));\nexport const UDP = and(IP, base('udp'));\nexport const UTP = and(UDP, base('utp'));\nexport const QUIC = and(UDP, base('quic'));\nexport const QUICV1 = and(UDP, base('quic-v1'));\nconst _WebSockets = or(and(TCP, base('ws')), and(DNS, base('ws')));\nexport const WebSockets = or(and(_WebSockets, base('p2p')), _WebSockets);\nconst _WebSocketsSecure = or(and(TCP, base('wss')), and(DNS, base('wss')), and(TCP, base('tls'), base('ws')), and(DNS, base('tls'), base('ws')));\nexport const WebSocketsSecure = or(and(_WebSocketsSecure, base('p2p')), _WebSocketsSecure);\nexport const HTTP = or(and(TCP, base('http')), and(IP, base('http')), and(DNS, base('http')));\nexport const HTTPS = or(and(TCP, base('https')), and(IP, base('https')), and(DNS, base('https')));\nconst _WebRTCDirect = and(UDP, base('webrtc-direct'), base('certhash'));\nexport const WebRTCDirect = or(and(_WebRTCDirect, base('p2p')), _WebRTCDirect);\nconst _WebTransport = and(QUICV1, base('webtransport'), base('certhash'), base('certhash'));\nexport const WebTransport = or(and(_WebTransport, base('p2p')), _WebTransport);\n/**\n * @deprecated\n */\nexport const P2PWebRTCStar = or(and(WebSockets, base('p2p-webrtc-star'), base('p2p')), and(WebSocketsSecure, base('p2p-webrtc-star'), base('p2p')), and(WebSockets, base('p2p-webrtc-star')), and(WebSocketsSecure, base('p2p-webrtc-star')));\nexport const WebSocketStar = or(and(WebSockets, base('p2p-websocket-star'), base('p2p')), and(WebSocketsSecure, base('p2p-websocket-star'), base('p2p')), and(WebSockets, base('p2p-websocket-star')), and(WebSocketsSecure, base('p2p-websocket-star')));\n/**\n * @deprecated\n */\nexport const P2PWebRTCDirect = or(and(HTTP, base('p2p-webrtc-direct'), base('p2p')), and(HTTPS, base('p2p-webrtc-direct'), base('p2p')), and(HTTP, base('p2p-webrtc-direct')), and(HTTPS, base('p2p-webrtc-direct')));\nexport const Reliable = or(_WebSockets, _WebSocketsSecure, HTTP, HTTPS, P2PWebRTCStar, P2PWebRTCDirect, TCP, UTP, QUIC, DNS, WebRTCDirect, WebTransport);\n// Unlike ws-star, stardust can run over any transport thus removing the requirement for websockets (but don't even think about running a stardust server over webrtc-star ;) )\nexport const Stardust = or(and(Reliable, base('p2p-stardust'), base('p2p')), and(Reliable, base('p2p-stardust')));\nconst _P2P = or(and(Reliable, base('p2p')), P2PWebRTCStar, P2PWebRTCDirect, WebRTCDirect, WebTransport, base('p2p'));\nconst _Circuit = or(and(_P2P, base('p2p-circuit'), _P2P), and(_P2P, base('p2p-circuit')), and(base('p2p-circuit'), _P2P), and(Reliable, base('p2p-circuit')), and(base('p2p-circuit'), Reliable), base('p2p-circuit'));\nconst CircuitRecursive = () => or(and(_Circuit, CircuitRecursive), _Circuit);\nexport const Circuit = CircuitRecursive();\nexport const P2P = or(and(Circuit, _P2P, Circuit), and(_P2P, Circuit), and(Circuit, _P2P), Circuit, _P2P);\nexport const IPFS = P2P;\nexport const WebRTC = or(and(Circuit, base('webrtc'), base('p2p')), and(Circuit, base('webrtc')), and(Reliable, base('webrtc'), base('p2p')), and(Reliable, base('webrtc')), base('webrtc'));\n/*\n * Validation funcs\n */\nfunction makeMatchesFunction(partialMatch) {\n function matches(a) {\n let ma;\n try {\n ma = multiaddr(a);\n }\n catch (err) { // catch error\n return false; // also if it's invalid it's probably not matching as well so return false\n }\n const out = partialMatch(ma.protoNames());\n if (out === null) {\n return false;\n }\n if (out === true || out === false) {\n return out;\n }\n return out.length === 0;\n }\n return matches;\n}\nfunction and(...args) {\n function partialMatch(a) {\n if (a.length < args.length) {\n return null;\n }\n let out = a;\n args.some((arg) => {\n out = typeof arg === 'function'\n ? arg().partialMatch(a)\n : arg.partialMatch(a);\n if (Array.isArray(out)) {\n a = out;\n }\n if (out === null) {\n return true;\n }\n return false;\n });\n return out;\n }\n return {\n toString: function () { return '{ ' + args.join(' ') + ' }'; },\n input: args,\n matches: makeMatchesFunction(partialMatch),\n partialMatch\n };\n}\nfunction or(...args) {\n function partialMatch(a) {\n let out = null;\n args.some((arg) => {\n const res = typeof arg === 'function'\n ? arg().partialMatch(a)\n : arg.partialMatch(a);\n if (res != null) {\n out = res;\n return true;\n }\n return false;\n });\n return out;\n }\n const result = {\n toString: function () { return '{ ' + args.join(' ') + ' }'; },\n input: args,\n matches: makeMatchesFunction(partialMatch),\n partialMatch\n };\n return result;\n}\nfunction base(n) {\n const name = n;\n function matches(a) {\n let ma;\n try {\n ma = multiaddr(a);\n }\n catch (err) { // catch error\n return false; // also if it's invalid it's probably not matching as well so return false\n }\n const pnames = ma.protoNames();\n if (pnames.length === 1 && pnames[0] === name) {\n return true;\n }\n return false;\n }\n function partialMatch(protos) {\n if (protos.length === 0) {\n return null;\n }\n if (protos[0] === name) {\n return protos.slice(1);\n }\n return null;\n }\n return {\n toString: function () { return name; },\n matches,\n partialMatch\n };\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * The configured bootstrap peers will be discovered after the configured timeout. This will ensure there are some peers in the peer store for the node to use to discover other peers.\n *\n * They will be tagged with a tag with the name `'bootstrap'` tag, the value `50` and it will expire after two minutes which means the nodes connections may be closed if the maximum number of connections is reached.\n *\n * Clients that need constant connections to bootstrap nodes (e.g. browsers) can set the TTL to `Infinity`.\n *\n * @example Configuring a list of bootstrap nodes\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { bootstrap } from '@libp2p/bootstrap'\n *\n * const libp2p = await createLibp2p({\n * peerDiscovery: [\n * bootstrap({\n * list: [\n * // a list of bootstrap peer multiaddrs to connect to on node startup\n * '/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ',\n * '/dnsaddr/bootstrap.libp2p.io/ipfs/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN',\n * '/dnsaddr/bootstrap.libp2p.io/ipfs/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa'\n * ]\n * })\n * ]\n * })\n *\n * libp2p.addEventListener('peer:discovery', (evt) => {\n * console.log('found peer: ', evt.detail.toString())\n * })\n * ```\n */\nimport { TypedEventEmitter, peerDiscoverySymbol, serviceCapabilities } from '@libp2p/interface';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { P2P } from '@multiformats/mafmt';\nimport { multiaddr } from '@multiformats/multiaddr';\nconst DEFAULT_BOOTSTRAP_TAG_NAME = 'bootstrap';\nconst DEFAULT_BOOTSTRAP_TAG_VALUE = 50;\nconst DEFAULT_BOOTSTRAP_TAG_TTL = 120000;\nconst DEFAULT_BOOTSTRAP_DISCOVERY_TIMEOUT = 1000;\n/**\n * Emits 'peer' events on a regular interval for each peer in the provided list.\n */\nclass Bootstrap extends TypedEventEmitter {\n static tag = 'bootstrap';\n log;\n timer;\n list;\n timeout;\n components;\n _init;\n constructor(components, options = { list: [] }) {\n if (options.list == null || options.list.length === 0) {\n throw new Error('Bootstrap requires a list of peer addresses');\n }\n super();\n this.components = components;\n this.log = components.logger.forComponent('libp2p:bootstrap');\n this.timeout = options.timeout ?? DEFAULT_BOOTSTRAP_DISCOVERY_TIMEOUT;\n this.list = [];\n for (const candidate of options.list) {\n if (!P2P.matches(candidate)) {\n this.log.error('Invalid multiaddr');\n continue;\n }\n const ma = multiaddr(candidate);\n const peerIdStr = ma.getPeerId();\n if (peerIdStr == null) {\n this.log.error('Invalid bootstrap multiaddr without peer id');\n continue;\n }\n const peerData = {\n id: peerIdFromString(peerIdStr),\n multiaddrs: [ma]\n };\n this.list.push(peerData);\n }\n this._init = options;\n }\n [peerDiscoverySymbol] = this;\n [Symbol.toStringTag] = '@libp2p/bootstrap';\n [serviceCapabilities] = [\n '@libp2p/peer-discovery'\n ];\n isStarted() {\n return Boolean(this.timer);\n }\n /**\n * Start emitting events\n */\n start() {\n if (this.isStarted()) {\n return;\n }\n this.log('Starting bootstrap node discovery, discovering peers after %s ms', this.timeout);\n this.timer = setTimeout(() => {\n void this._discoverBootstrapPeers()\n .catch(err => {\n this.log.error(err);\n });\n }, this.timeout);\n }\n /**\n * Emit each address in the list as a PeerInfo\n */\n async _discoverBootstrapPeers() {\n if (this.timer == null) {\n return;\n }\n for (const peerData of this.list) {\n await this.components.peerStore.merge(peerData.id, {\n tags: {\n [this._init.tagName ?? DEFAULT_BOOTSTRAP_TAG_NAME]: {\n value: this._init.tagValue ?? DEFAULT_BOOTSTRAP_TAG_VALUE,\n ttl: this._init.tagTTL ?? DEFAULT_BOOTSTRAP_TAG_TTL\n }\n }\n });\n // check we are still running\n if (this.timer == null) {\n return;\n }\n this.safeDispatchEvent('peer', { detail: peerData });\n }\n }\n /**\n * Stop emitting events\n */\n stop() {\n if (this.timer != null) {\n clearTimeout(this.timer);\n }\n this.timer = undefined;\n }\n}\nexport function bootstrap(init) {\n return (components) => new Bootstrap(components, init);\n}\n//# sourceMappingURL=index.js.map","export const codes = {\n ERR_SIGNATURE_NOT_VALID: 'ERR_SIGNATURE_NOT_VALID'\n};\n//# sourceMappingURL=errors.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Envelope;\n(function (Envelope) {\n let _codec;\n Envelope.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.publicKey != null && obj.publicKey.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.publicKey);\n }\n if ((obj.payloadType != null && obj.payloadType.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.payloadType);\n }\n if ((obj.payload != null && obj.payload.byteLength > 0)) {\n w.uint32(26);\n w.bytes(obj.payload);\n }\n if ((obj.signature != null && obj.signature.byteLength > 0)) {\n w.uint32(42);\n w.bytes(obj.signature);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n publicKey: new Uint8Array(0),\n payloadType: new Uint8Array(0),\n payload: new Uint8Array(0),\n signature: new Uint8Array(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.publicKey = reader.bytes();\n break;\n case 2:\n obj.payloadType = reader.bytes();\n break;\n case 3:\n obj.payload = reader.bytes();\n break;\n case 5:\n obj.signature = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Envelope.encode = (obj) => {\n return encodeMessage(obj, Envelope.codec());\n };\n Envelope.decode = (buf) => {\n return decodeMessage(buf, Envelope.codec());\n };\n})(Envelope || (Envelope = {}));\n//# sourceMappingURL=envelope.js.map","import { unmarshalPrivateKey, unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { CodeError } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8arraysFromString } from 'uint8arrays/from-string';\nimport { codes } from '../errors.js';\nimport { Envelope as Protobuf } from './envelope.js';\nexport class RecordEnvelope {\n /**\n * Unmarshal a serialized Envelope protobuf message\n */\n static createFromProtobuf = async (data) => {\n const envelopeData = Protobuf.decode(data);\n const peerId = await peerIdFromKeys(envelopeData.publicKey);\n return new RecordEnvelope({\n peerId,\n payloadType: envelopeData.payloadType,\n payload: envelopeData.payload,\n signature: envelopeData.signature\n });\n };\n /**\n * Seal marshals the given Record, places the marshaled bytes inside an Envelope\n * and signs it with the given peerId's private key\n */\n static seal = async (record, peerId) => {\n if (peerId.privateKey == null) {\n throw new Error('Missing private key');\n }\n const domain = record.domain;\n const payloadType = record.codec;\n const payload = record.marshal();\n const signData = formatSignaturePayload(domain, payloadType, payload);\n const key = await unmarshalPrivateKey(peerId.privateKey);\n const signature = await key.sign(signData.subarray());\n return new RecordEnvelope({\n peerId,\n payloadType,\n payload,\n signature\n });\n };\n /**\n * Open and certify a given marshalled envelope.\n * Data is unmarshalled and the signature validated for the given domain.\n */\n static openAndCertify = async (data, domain) => {\n const envelope = await RecordEnvelope.createFromProtobuf(data);\n const valid = await envelope.validate(domain);\n if (!valid) {\n throw new CodeError('envelope signature is not valid for the given domain', codes.ERR_SIGNATURE_NOT_VALID);\n }\n return envelope;\n };\n peerId;\n payloadType;\n payload;\n signature;\n marshaled;\n /**\n * The Envelope is responsible for keeping an arbitrary signed record\n * by a libp2p peer.\n */\n constructor(init) {\n const { peerId, payloadType, payload, signature } = init;\n this.peerId = peerId;\n this.payloadType = payloadType;\n this.payload = payload;\n this.signature = signature;\n }\n /**\n * Marshal the envelope content\n */\n marshal() {\n if (this.peerId.publicKey == null) {\n throw new Error('Missing public key');\n }\n if (this.marshaled == null) {\n this.marshaled = Protobuf.encode({\n publicKey: this.peerId.publicKey,\n payloadType: this.payloadType,\n payload: this.payload.subarray(),\n signature: this.signature\n });\n }\n return this.marshaled;\n }\n /**\n * Verifies if the other Envelope is identical to this one\n */\n equals(other) {\n return uint8ArrayEquals(this.marshal(), other.marshal());\n }\n /**\n * Validate envelope data signature for the given domain\n */\n async validate(domain) {\n const signData = formatSignaturePayload(domain, this.payloadType, this.payload);\n if (this.peerId.publicKey == null) {\n throw new Error('Missing public key');\n }\n const key = unmarshalPublicKey(this.peerId.publicKey);\n return key.verify(signData.subarray(), this.signature);\n }\n}\n/**\n * Helper function that prepares a Uint8Array to sign or verify a signature\n */\nconst formatSignaturePayload = (domain, payloadType, payload) => {\n // When signing, a peer will prepare a Uint8Array by concatenating the following:\n // - The length of the domain separation string string in bytes\n // - The domain separation string, encoded as UTF-8\n // - The length of the payload_type field in bytes\n // - The value of the payload_type field\n // - The length of the payload field in bytes\n // - The value of the payload field\n const domainUint8Array = uint8arraysFromString(domain);\n const domainLength = varint.encode(domainUint8Array.byteLength);\n const payloadTypeLength = varint.encode(payloadType.length);\n const payloadLength = varint.encode(payload.length);\n return new Uint8ArrayList(domainLength, domainUint8Array, payloadTypeLength, payloadType, payloadLength, payload);\n};\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Provides strategies ensure arrays are equivalent.\n *\n * @example\n *\n * ```typescript\n * import { arrayEquals } from '@libp2p/utils/array-equals'\n * import { multiaddr } from '@multformats/multiaddr'\n *\n * const ma1 = multiaddr('/ip4/127.0.0.1/tcp/9000'),\n * const ma2 = multiaddr('/ip4/82.41.53.1/tcp/9000')\n *\n * console.info(arrayEquals([ma1], [ma1])) // true\n * console.info(arrayEquals([ma1], [ma2])) // false\n * ```\n */\n/**\n * Verify if two arrays of non primitive types with the \"equals\" function are equal.\n * Compatible with multiaddr, peer-id and others.\n */\nexport function arrayEquals(a, b) {\n const sort = (a, b) => a.toString().localeCompare(b.toString());\n if (a.length !== b.length) {\n return false;\n }\n b.sort(sort);\n return a.sort(sort).every((item, index) => b[index].equals(item));\n}\n//# sourceMappingURL=array-equals.js.map","// The domain string used for peer records contained in a Envelope.\nexport const ENVELOPE_DOMAIN_PEER_RECORD = 'libp2p-peer-record';\n// The type hint used to identify peer records in a Envelope.\n// Defined in https://github.com/multiformats/multicodec/blob/master/table.csv\n// with name \"libp2p-peer-record\"\nexport const ENVELOPE_PAYLOAD_TYPE_PEER_RECORD = Uint8Array.from([3, 1]);\n//# sourceMappingURL=consts.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var PeerRecord;\n(function (PeerRecord) {\n let AddressInfo;\n (function (AddressInfo) {\n let _codec;\n AddressInfo.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.multiaddr != null && obj.multiaddr.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.multiaddr);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n multiaddr: new Uint8Array(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.multiaddr = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n AddressInfo.encode = (obj) => {\n return encodeMessage(obj, AddressInfo.codec());\n };\n AddressInfo.decode = (buf) => {\n return decodeMessage(buf, AddressInfo.codec());\n };\n })(AddressInfo = PeerRecord.AddressInfo || (PeerRecord.AddressInfo = {}));\n let _codec;\n PeerRecord.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.peerId != null && obj.peerId.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.peerId);\n }\n if ((obj.seq != null && obj.seq !== 0n)) {\n w.uint32(16);\n w.uint64(obj.seq);\n }\n if (obj.addresses != null) {\n for (const value of obj.addresses) {\n w.uint32(26);\n PeerRecord.AddressInfo.codec().encode(value, w);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n peerId: new Uint8Array(0),\n seq: 0n,\n addresses: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.peerId = reader.bytes();\n break;\n case 2:\n obj.seq = reader.uint64();\n break;\n case 3:\n obj.addresses.push(PeerRecord.AddressInfo.codec().decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PeerRecord.encode = (obj) => {\n return encodeMessage(obj, PeerRecord.codec());\n };\n PeerRecord.decode = (buf) => {\n return decodeMessage(buf, PeerRecord.codec());\n };\n})(PeerRecord || (PeerRecord = {}));\n//# sourceMappingURL=peer-record.js.map","import { peerIdFromBytes } from '@libp2p/peer-id';\nimport { arrayEquals } from '@libp2p/utils/array-equals';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { ENVELOPE_DOMAIN_PEER_RECORD, ENVELOPE_PAYLOAD_TYPE_PEER_RECORD } from './consts.js';\nimport { PeerRecord as Protobuf } from './peer-record.js';\n/**\n * The PeerRecord is used for distributing peer routing records across the network.\n * It contains the peer's reachable listen addresses.\n */\nexport class PeerRecord {\n /**\n * Unmarshal Peer Record Protobuf\n */\n static createFromProtobuf = (buf) => {\n const peerRecord = Protobuf.decode(buf);\n const peerId = peerIdFromBytes(peerRecord.peerId);\n const multiaddrs = (peerRecord.addresses ?? []).map((a) => multiaddr(a.multiaddr));\n const seqNumber = peerRecord.seq;\n return new PeerRecord({ peerId, multiaddrs, seqNumber });\n };\n static DOMAIN = ENVELOPE_DOMAIN_PEER_RECORD;\n static CODEC = ENVELOPE_PAYLOAD_TYPE_PEER_RECORD;\n peerId;\n multiaddrs;\n seqNumber;\n domain = PeerRecord.DOMAIN;\n codec = PeerRecord.CODEC;\n marshaled;\n constructor(init) {\n const { peerId, multiaddrs, seqNumber } = init;\n this.peerId = peerId;\n this.multiaddrs = multiaddrs ?? [];\n this.seqNumber = seqNumber ?? BigInt(Date.now());\n }\n /**\n * Marshal a record to be used in an envelope\n */\n marshal() {\n if (this.marshaled == null) {\n this.marshaled = Protobuf.encode({\n peerId: this.peerId.toBytes(),\n seq: BigInt(this.seqNumber),\n addresses: this.multiaddrs.map((m) => ({\n multiaddr: m.bytes\n }))\n });\n }\n return this.marshaled;\n }\n /**\n * Returns true if `this` record equals the `other`\n */\n equals(other) {\n if (!(other instanceof PeerRecord)) {\n return false;\n }\n // Validate PeerId\n if (!this.peerId.equals(other.peerId)) {\n return false;\n }\n // Validate seqNumber\n if (this.seqNumber !== other.seqNumber) {\n return false;\n }\n // Validate multiaddrs\n if (!arrayEquals(this.multiaddrs, other.multiaddrs)) {\n return false;\n }\n return true;\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * This module makes it easy to send and receive length-prefixed Protobuf encoded\n * messages over streams.\n *\n * @example\n *\n * ```typescript\n * import { pbStream } from 'it-protobuf-stream'\n * import { MessageType } from './src/my-message-type.js'\n *\n * // RequestType and ResponseType have been generate from `.proto` files and have\n * // `.encode` and `.decode` methods for serialization/deserialization\n *\n * const stream = pbStream(duplex)\n *\n * // write a message to the stream\n * stream.write({\n * foo: 'bar'\n * }, MessageType)\n *\n * // read a message from the stream\n * const res = await stream.read(MessageType)\n * ```\n */\nimport { lpStream } from 'it-length-prefixed-stream';\nexport function pbStream(duplex, opts) {\n const lp = lpStream(duplex, opts);\n const W = {\n read: async (proto, options) => {\n // readLP, decode\n const value = await lp.read(options);\n return proto.decode(value);\n },\n write: async (message, proto, options) => {\n // encode, writeLP\n await lp.write(proto.encode(message), options);\n },\n writeV: async (messages, proto, options) => {\n // encode, writeLP\n await lp.writeV(messages.map(message => proto.encode(message)), options);\n },\n pb: (proto) => {\n return {\n read: async (options) => W.read(proto, options),\n write: async (d, options) => W.write(d, proto, options),\n writeV: async (d, options) => W.writeV(d, proto, options),\n unwrap: () => W\n };\n },\n unwrap: () => {\n return lp.unwrap();\n }\n };\n return W;\n}\n//# sourceMappingURL=index.js.map","const second = 1000;\nconst minute = 60 * second;\n/**\n * Multicodec code\n */\nexport const CIRCUIT_PROTO_CODE = 290;\n/**\n * The maximum number of relay reservations the relay server will accept\n */\nexport const DEFAULT_MAX_RESERVATION_STORE_SIZE = 15;\n/**\n * How often to check for reservation expiry\n */\nexport const DEFAULT_MAX_RESERVATION_CLEAR_INTERVAL = 300 * second;\n/**\n * How often to check for reservation expiry\n */\nexport const DEFAULT_MAX_RESERVATION_TTL = 2 * 60 * minute;\n/**\n * How many reservation attempts to make in parallel\n */\nexport const DEFAULT_RESERVATION_CONCURRENCY = 1;\n/**\n * How long to wait for a reservation attempt to finsih\n */\nexport const DEFAULT_RESERVATION_COMPLETION_TIMEOUT = 1000;\n/**\n * How long to let the reservation attempt queue to grow\n */\nexport const DEFAULT_MAX_RESERVATION_QUEUE_LENGTH = 100;\nexport const RELAY_SOURCE_TAG = 'circuit-relay-source';\nexport const RELAY_TAG = 'circuit-relay-relay';\n// circuit v2 connection limits\n// https://github.com/libp2p/go-libp2p/blob/master/p2p/protocol/circuitv2/relay/resources.go#L61-L66\n// 2 min is the default connection duration\nexport const DEFAULT_DURATION_LIMIT = 2 * minute;\n// 128k is the default data limit\nexport const DEFAULT_DATA_LIMIT = BigInt(1 << 17);\n/**\n * The hop protocol\n */\nexport const RELAY_V2_HOP_CODEC = '/libp2p/circuit/relay/0.2.0/hop';\n/**\n * the stop protocol\n */\nexport const RELAY_V2_STOP_CODEC = '/libp2p/circuit/relay/0.2.0/stop';\n/**\n * Hop messages must be exchanged inside this timeout\n */\nexport const DEFAULT_HOP_TIMEOUT = 30 * second;\n/**\n * How long to wait before starting to advertise the relay service\n */\nexport const DEFAULT_ADVERT_BOOT_DELAY = 30 * second;\nexport const MAX_CONNECTIONS = 300;\nexport const ERR_NO_ROUTERS_AVAILABLE = 'ERR_NO_ROUTERS_AVAILABLE';\nexport const ERR_RELAYED_DIAL = 'ERR_RELAYED_DIAL';\nexport const ERR_HOP_REQUEST_FAILED = 'ERR_HOP_REQUEST_FAILED';\nexport const ERR_TRANSFER_LIMIT_EXCEEDED = 'ERR_TRANSFER_LIMIT_EXCEEDED';\nexport const DEFAULT_DISCOVERY_FILTER_SIZE = 4096;\nexport const DEFAULT_DISCOVERY_FILTER_ERROR_RATE = 0.001;\n//# sourceMappingURL=constants.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { CodeError, decodeMessage, encodeMessage, enumeration, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var HopMessage;\n(function (HopMessage) {\n let Type;\n (function (Type) {\n Type[\"RESERVE\"] = \"RESERVE\";\n Type[\"CONNECT\"] = \"CONNECT\";\n Type[\"STATUS\"] = \"STATUS\";\n })(Type = HopMessage.Type || (HopMessage.Type = {}));\n let __TypeValues;\n (function (__TypeValues) {\n __TypeValues[__TypeValues[\"RESERVE\"] = 0] = \"RESERVE\";\n __TypeValues[__TypeValues[\"CONNECT\"] = 1] = \"CONNECT\";\n __TypeValues[__TypeValues[\"STATUS\"] = 2] = \"STATUS\";\n })(__TypeValues || (__TypeValues = {}));\n (function (Type) {\n Type.codec = () => {\n return enumeration(__TypeValues);\n };\n })(Type = HopMessage.Type || (HopMessage.Type = {}));\n let _codec;\n HopMessage.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null) {\n w.uint32(8);\n HopMessage.Type.codec().encode(obj.type, w);\n }\n if (obj.peer != null) {\n w.uint32(18);\n Peer.codec().encode(obj.peer, w);\n }\n if (obj.reservation != null) {\n w.uint32(26);\n Reservation.codec().encode(obj.reservation, w);\n }\n if (obj.limit != null) {\n w.uint32(34);\n Limit.codec().encode(obj.limit, w);\n }\n if (obj.status != null) {\n w.uint32(40);\n Status.codec().encode(obj.status, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.type = HopMessage.Type.codec().decode(reader);\n break;\n }\n case 2: {\n obj.peer = Peer.codec().decode(reader, reader.uint32(), {\n limits: opts.limits?.peer\n });\n break;\n }\n case 3: {\n obj.reservation = Reservation.codec().decode(reader, reader.uint32(), {\n limits: opts.limits?.reservation\n });\n break;\n }\n case 4: {\n obj.limit = Limit.codec().decode(reader, reader.uint32(), {\n limits: opts.limits?.limit\n });\n break;\n }\n case 5: {\n obj.status = Status.codec().decode(reader);\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n HopMessage.encode = (obj) => {\n return encodeMessage(obj, HopMessage.codec());\n };\n HopMessage.decode = (buf, opts) => {\n return decodeMessage(buf, HopMessage.codec(), opts);\n };\n})(HopMessage || (HopMessage = {}));\nexport var StopMessage;\n(function (StopMessage) {\n let Type;\n (function (Type) {\n Type[\"CONNECT\"] = \"CONNECT\";\n Type[\"STATUS\"] = \"STATUS\";\n })(Type = StopMessage.Type || (StopMessage.Type = {}));\n let __TypeValues;\n (function (__TypeValues) {\n __TypeValues[__TypeValues[\"CONNECT\"] = 0] = \"CONNECT\";\n __TypeValues[__TypeValues[\"STATUS\"] = 1] = \"STATUS\";\n })(__TypeValues || (__TypeValues = {}));\n (function (Type) {\n Type.codec = () => {\n return enumeration(__TypeValues);\n };\n })(Type = StopMessage.Type || (StopMessage.Type = {}));\n let _codec;\n StopMessage.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null) {\n w.uint32(8);\n StopMessage.Type.codec().encode(obj.type, w);\n }\n if (obj.peer != null) {\n w.uint32(18);\n Peer.codec().encode(obj.peer, w);\n }\n if (obj.limit != null) {\n w.uint32(26);\n Limit.codec().encode(obj.limit, w);\n }\n if (obj.status != null) {\n w.uint32(32);\n Status.codec().encode(obj.status, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.type = StopMessage.Type.codec().decode(reader);\n break;\n }\n case 2: {\n obj.peer = Peer.codec().decode(reader, reader.uint32(), {\n limits: opts.limits?.peer\n });\n break;\n }\n case 3: {\n obj.limit = Limit.codec().decode(reader, reader.uint32(), {\n limits: opts.limits?.limit\n });\n break;\n }\n case 4: {\n obj.status = Status.codec().decode(reader);\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n StopMessage.encode = (obj) => {\n return encodeMessage(obj, StopMessage.codec());\n };\n StopMessage.decode = (buf, opts) => {\n return decodeMessage(buf, StopMessage.codec(), opts);\n };\n})(StopMessage || (StopMessage = {}));\nexport var Peer;\n(function (Peer) {\n let _codec;\n Peer.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.id != null && obj.id.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.id);\n }\n if (obj.addrs != null) {\n for (const value of obj.addrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {\n id: uint8ArrayAlloc(0),\n addrs: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.id = reader.bytes();\n break;\n }\n case 2: {\n if (opts.limits?.addrs != null && obj.addrs.length === opts.limits.addrs) {\n throw new CodeError('decode error - map field \"addrs\" had too many elements', 'ERR_MAX_LENGTH');\n }\n obj.addrs.push(reader.bytes());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Peer.encode = (obj) => {\n return encodeMessage(obj, Peer.codec());\n };\n Peer.decode = (buf, opts) => {\n return decodeMessage(buf, Peer.codec(), opts);\n };\n})(Peer || (Peer = {}));\nexport var Reservation;\n(function (Reservation) {\n let _codec;\n Reservation.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.expire != null && obj.expire !== 0n)) {\n w.uint32(8);\n w.uint64(obj.expire);\n }\n if (obj.addrs != null) {\n for (const value of obj.addrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (obj.voucher != null) {\n w.uint32(26);\n w.bytes(obj.voucher);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {\n expire: 0n,\n addrs: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.expire = reader.uint64();\n break;\n }\n case 2: {\n if (opts.limits?.addrs != null && obj.addrs.length === opts.limits.addrs) {\n throw new CodeError('decode error - map field \"addrs\" had too many elements', 'ERR_MAX_LENGTH');\n }\n obj.addrs.push(reader.bytes());\n break;\n }\n case 3: {\n obj.voucher = reader.bytes();\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Reservation.encode = (obj) => {\n return encodeMessage(obj, Reservation.codec());\n };\n Reservation.decode = (buf, opts) => {\n return decodeMessage(buf, Reservation.codec(), opts);\n };\n})(Reservation || (Reservation = {}));\nexport var Limit;\n(function (Limit) {\n let _codec;\n Limit.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.duration != null) {\n w.uint32(8);\n w.uint32(obj.duration);\n }\n if (obj.data != null) {\n w.uint32(16);\n w.uint64(obj.data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.duration = reader.uint32();\n break;\n }\n case 2: {\n obj.data = reader.uint64();\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Limit.encode = (obj) => {\n return encodeMessage(obj, Limit.codec());\n };\n Limit.decode = (buf, opts) => {\n return decodeMessage(buf, Limit.codec(), opts);\n };\n})(Limit || (Limit = {}));\nexport var Status;\n(function (Status) {\n Status[\"UNUSED\"] = \"UNUSED\";\n Status[\"OK\"] = \"OK\";\n Status[\"RESERVATION_REFUSED\"] = \"RESERVATION_REFUSED\";\n Status[\"RESOURCE_LIMIT_EXCEEDED\"] = \"RESOURCE_LIMIT_EXCEEDED\";\n Status[\"PERMISSION_DENIED\"] = \"PERMISSION_DENIED\";\n Status[\"CONNECTION_FAILED\"] = \"CONNECTION_FAILED\";\n Status[\"NO_RESERVATION\"] = \"NO_RESERVATION\";\n Status[\"MALFORMED_MESSAGE\"] = \"MALFORMED_MESSAGE\";\n Status[\"UNEXPECTED_MESSAGE\"] = \"UNEXPECTED_MESSAGE\";\n})(Status || (Status = {}));\nvar __StatusValues;\n(function (__StatusValues) {\n __StatusValues[__StatusValues[\"UNUSED\"] = 0] = \"UNUSED\";\n __StatusValues[__StatusValues[\"OK\"] = 100] = \"OK\";\n __StatusValues[__StatusValues[\"RESERVATION_REFUSED\"] = 200] = \"RESERVATION_REFUSED\";\n __StatusValues[__StatusValues[\"RESOURCE_LIMIT_EXCEEDED\"] = 201] = \"RESOURCE_LIMIT_EXCEEDED\";\n __StatusValues[__StatusValues[\"PERMISSION_DENIED\"] = 202] = \"PERMISSION_DENIED\";\n __StatusValues[__StatusValues[\"CONNECTION_FAILED\"] = 203] = \"CONNECTION_FAILED\";\n __StatusValues[__StatusValues[\"NO_RESERVATION\"] = 204] = \"NO_RESERVATION\";\n __StatusValues[__StatusValues[\"MALFORMED_MESSAGE\"] = 400] = \"MALFORMED_MESSAGE\";\n __StatusValues[__StatusValues[\"UNEXPECTED_MESSAGE\"] = 401] = \"UNEXPECTED_MESSAGE\";\n})(__StatusValues || (__StatusValues = {}));\n(function (Status) {\n Status.codec = () => {\n return enumeration(__StatusValues);\n };\n})(Status || (Status = {}));\nexport var ReservationVoucher;\n(function (ReservationVoucher) {\n let _codec;\n ReservationVoucher.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.relay != null && obj.relay.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.relay);\n }\n if ((obj.peer != null && obj.peer.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.peer);\n }\n if ((obj.expiration != null && obj.expiration !== 0n)) {\n w.uint32(24);\n w.uint64(obj.expiration);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {\n relay: uint8ArrayAlloc(0),\n peer: uint8ArrayAlloc(0),\n expiration: 0n\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.relay = reader.bytes();\n break;\n }\n case 2: {\n obj.peer = reader.bytes();\n break;\n }\n case 3: {\n obj.expiration = reader.uint64();\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n ReservationVoucher.encode = (obj) => {\n return encodeMessage(obj, ReservationVoucher.codec());\n };\n ReservationVoucher.decode = (buf, opts) => {\n return decodeMessage(buf, ReservationVoucher.codec(), opts);\n };\n})(ReservationVoucher || (ReservationVoucher = {}));\n//# sourceMappingURL=index.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { CodeError } from '@libp2p/interface';\nimport { anySignal } from 'any-signal';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { ERR_TRANSFER_LIMIT_EXCEEDED } from './constants.js';\nasync function* countStreamBytes(source, limit, options) {\n const limitBytes = limit.remaining;\n for await (const buf of source) {\n const len = BigInt(buf.byteLength);\n if ((limit.remaining - len) < 0) {\n // this is a safe downcast since len is guarantee to be in the range for a number\n const remaining = Number(limit.remaining);\n limit.remaining = 0n;\n try {\n if (remaining !== 0) {\n yield buf.subarray(0, remaining);\n }\n }\n catch (err) {\n options.log.error(err);\n }\n throw new CodeError(`data limit of ${limitBytes} bytes exceeded`, ERR_TRANSFER_LIMIT_EXCEEDED);\n }\n limit.remaining -= len;\n yield buf;\n }\n}\nexport function createLimitedRelay(src, dst, abortSignal, limit, options) {\n function abortStreams(err) {\n src.abort(err);\n dst.abort(err);\n }\n const signals = [abortSignal];\n if (limit?.duration != null) {\n signals.push(AbortSignal.timeout(limit.duration));\n }\n const signal = anySignal(signals);\n let srcDstFinished = false;\n let dstSrcFinished = false;\n let dataLimit;\n if (limit?.data != null) {\n dataLimit = {\n remaining: limit.data\n };\n }\n queueMicrotask(() => {\n const onAbort = () => {\n dst.abort(new CodeError(`duration limit of ${limit?.duration} ms exceeded`, ERR_TRANSFER_LIMIT_EXCEEDED));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n void dst.sink(dataLimit == null ? src.source : countStreamBytes(src.source, dataLimit, options))\n .catch(err => {\n options.log.error('error while relaying streams src -> dst', err);\n abortStreams(err);\n })\n .finally(() => {\n srcDstFinished = true;\n if (dstSrcFinished) {\n signal.removeEventListener('abort', onAbort);\n signal.clear();\n }\n });\n });\n queueMicrotask(() => {\n const onAbort = () => {\n src.abort(new CodeError(`duration limit of ${limit?.duration} ms exceeded`, ERR_TRANSFER_LIMIT_EXCEEDED));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n void src.sink(dataLimit == null ? dst.source : countStreamBytes(dst.source, dataLimit, options))\n .catch(err => {\n options.log.error('error while relaying streams dst -> src', err);\n abortStreams(err);\n })\n .finally(() => {\n dstSrcFinished = true;\n if (srcDstFinished) {\n signal.removeEventListener('abort', onAbort);\n signal.clear();\n }\n });\n });\n}\n/**\n * Convert a namespace string into a cid\n */\nexport async function namespaceToCid(namespace) {\n const bytes = new TextEncoder().encode(namespace);\n const hash = await sha256.digest(bytes);\n return CID.createV0(hash);\n}\n/**\n * returns number of ms between now and expiration time\n */\nexport function getExpirationMilliseconds(expireTimeSeconds) {\n const expireTimeMillis = expireTimeSeconds * BigInt(1000);\n const currentTime = new Date().getTime();\n // downcast to number to use with setTimeout\n return Number(expireTimeMillis - BigInt(currentTime));\n}\n//# sourceMappingURL=utils.js.map","/**\n * Calls the passed map function on every entry of the passed iterable iterator\n */\nexport function mapIterable(iter, map) {\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n const next = iter.next();\n const val = next.value;\n if (next.done === true || val == null) {\n const result = {\n done: true,\n value: undefined\n };\n return result;\n }\n return {\n done: false,\n value: map(val)\n };\n }\n };\n return iterator;\n}\n//# sourceMappingURL=util.js.map","import { peerIdFromString } from '@libp2p/peer-id';\nimport { mapIterable } from './util.js';\n/**\n * We can't use PeerIds as map keys because map keys are\n * compared using same-value-zero equality, so this is just\n * a map that stringifies the PeerIds before storing them.\n *\n * PeerIds cache stringified versions of themselves so this\n * should be a cheap operation.\n *\n * @example\n *\n * ```TypeScript\n * import { peerMap } from '@libp2p/peer-collections'\n *\n * const map = peerMap()\n * map.set(peerId, 'value')\n * ```\n */\nexport class PeerMap {\n map;\n constructor(map) {\n this.map = new Map();\n if (map != null) {\n for (const [key, value] of map.entries()) {\n this.map.set(key.toString(), value);\n }\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n clear() {\n this.map.clear();\n }\n delete(peer) {\n return this.map.delete(peer.toString());\n }\n entries() {\n return mapIterable(this.map.entries(), (val) => {\n return [peerIdFromString(val[0]), val[1]];\n });\n }\n forEach(fn) {\n this.map.forEach((value, key) => {\n fn(value, peerIdFromString(key), this);\n });\n }\n get(peer) {\n return this.map.get(peer.toString());\n }\n has(peer) {\n return this.map.has(peer.toString());\n }\n set(peer, value) {\n this.map.set(peer.toString(), value);\n }\n keys() {\n return mapIterable(this.map.keys(), (val) => {\n return peerIdFromString(val);\n });\n }\n values() {\n return this.map.values();\n }\n get size() {\n return this.map.size;\n }\n}\nexport function peerMap() {\n return new PeerMap();\n}\n//# sourceMappingURL=map.js.map","import { peerIdFromString } from '@libp2p/peer-id';\nimport { mapIterable } from './util.js';\n/**\n * We can't use PeerIds as set entries because set entries are\n * compared using same-value-zero equality, so this is just\n * a map that stringifies the PeerIds before storing them.\n *\n * PeerIds cache stringified versions of themselves so this\n * should be a cheap operation.\n *\n * @example\n *\n * ```TypeScript\n * import { peerSet } from '@libp2p/peer-collections'\n *\n * const set = peerSet()\n * set.add(peerId)\n * ```\n */\nexport class PeerSet {\n set;\n constructor(set) {\n this.set = new Set();\n if (set != null) {\n for (const key of set) {\n this.set.add(key.toString());\n }\n }\n }\n get size() {\n return this.set.size;\n }\n [Symbol.iterator]() {\n return this.values();\n }\n add(peer) {\n this.set.add(peer.toString());\n }\n clear() {\n this.set.clear();\n }\n delete(peer) {\n this.set.delete(peer.toString());\n }\n entries() {\n return mapIterable(this.set.entries(), (val) => {\n const peerId = peerIdFromString(val[0]);\n return [peerId, peerId];\n });\n }\n forEach(predicate) {\n this.set.forEach((str) => {\n const id = peerIdFromString(str);\n predicate(id, id, this);\n });\n }\n has(peer) {\n return this.set.has(peer.toString());\n }\n values() {\n return mapIterable(this.set.values(), (val) => {\n return peerIdFromString(val);\n });\n }\n intersection(other) {\n const output = new PeerSet();\n for (const peerId of other) {\n if (this.has(peerId)) {\n output.add(peerId);\n }\n }\n return output;\n }\n difference(other) {\n const output = new PeerSet();\n for (const peerId of this) {\n if (!other.has(peerId)) {\n output.add(peerId);\n }\n }\n return output;\n }\n union(other) {\n const output = new PeerSet();\n for (const peerId of other) {\n output.add(peerId);\n }\n for (const peerId of this) {\n output.add(peerId);\n }\n return output;\n }\n}\nexport function peerSet() {\n return new PeerSet();\n}\n//# sourceMappingURL=set.js.map","// ported from xxbloom - https://github.com/ceejbot/xxbloom/blob/master/LICENSE\nimport { randomBytes } from '@libp2p/crypto';\nimport mur from 'murmurhash3js-revisited';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { alloc } from 'uint8arrays/alloc';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nconst LN2_SQUARED = Math.LN2 * Math.LN2;\nexport class BloomFilter {\n seeds;\n bits;\n buffer;\n constructor(options = {}) {\n if (options.seeds != null) {\n this.seeds = options.seeds;\n }\n else {\n this.seeds = generateSeeds(options.hashes ?? 8);\n }\n this.bits = options.bits ?? 1024;\n this.buffer = alloc(Math.ceil(this.bits / 8));\n }\n /**\n * Add an item to the filter\n */\n add(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n for (let i = 0; i < this.seeds.length; i++) {\n const hash = mur.x86.hash32(item, this.seeds[i]);\n const bit = hash % this.bits;\n this.setbit(bit);\n }\n }\n /**\n * Test if the filter has an item. If it returns false it definitely does not\n * have the item. If it returns true, it probably has the item but there's\n * an `errorRate` chance it doesn't.\n */\n has(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n for (let i = 0; i < this.seeds.length; i++) {\n const hash = mur.x86.hash32(item, this.seeds[i]);\n const bit = hash % this.bits;\n const isSet = this.getbit(bit);\n if (!isSet) {\n return false;\n }\n }\n return true;\n }\n /**\n * Reset the filter\n */\n clear() {\n this.buffer.fill(0);\n }\n setbit(bit) {\n let pos = 0;\n let shift = bit;\n while (shift > 7) {\n pos++;\n shift -= 8;\n }\n let bitfield = this.buffer[pos];\n bitfield |= (0x1 << shift);\n this.buffer[pos] = bitfield;\n }\n getbit(bit) {\n let pos = 0;\n let shift = bit;\n while (shift > 7) {\n pos++;\n shift -= 8;\n }\n const bitfield = this.buffer[pos];\n return (bitfield & (0x1 << shift)) !== 0;\n }\n}\n/**\n * Create a `BloomFilter` with the smallest `bits` and `hashes` value for the\n * specified item count and error rate.\n */\nexport function createBloomFilter(itemcount, errorRate = 0.005) {\n const opts = optimize(itemcount, errorRate);\n return new BloomFilter(opts);\n}\nfunction optimize(itemCount, errorRate = 0.005) {\n const bits = Math.round(-1 * itemCount * Math.log(errorRate) / LN2_SQUARED);\n const hashes = Math.round((bits / itemCount) * Math.LN2);\n return { bits, hashes };\n}\nfunction generateSeeds(count) {\n let buf;\n let j;\n const seeds = [];\n for (let i = 0; i < count; i++) {\n buf = new Uint8ArrayList(randomBytes(4));\n seeds[i] = buf.getUint32(0, true);\n // Make sure we don't end up with two identical seeds,\n // which is unlikely but possible.\n for (j = 0; j < i; j++) {\n if (seeds[i] === seeds[j]) {\n i--;\n break;\n }\n }\n }\n return seeds;\n}\n//# sourceMappingURL=bloom-filter.js.map","import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nexport const MAX_FINGERPRINT_SIZE = 64;\nexport class Fingerprint {\n fp;\n h;\n seed;\n constructor(buf, hash, seed, fingerprintSize = 2) {\n if (fingerprintSize > MAX_FINGERPRINT_SIZE) {\n throw new TypeError('Invalid Fingerprint Size');\n }\n const fnv = hash.hashV(buf, seed);\n const fp = uint8ArrayAlloc(fingerprintSize);\n for (let i = 0; i < fp.length; i++) {\n fp[i] = fnv[i];\n }\n if (fp.length === 0) {\n fp[0] = 7;\n }\n this.fp = fp;\n this.h = hash;\n this.seed = seed;\n }\n hash() {\n return this.h.hash(this.fp, this.seed);\n }\n equals(other) {\n if (!(other?.fp instanceof Uint8Array)) {\n return false;\n }\n return uint8ArrayEquals(this.fp, other.fp);\n }\n}\n//# sourceMappingURL=fingerprint.js.map","export function getRandomInt(min, max) {\n return Math.floor(Math.random() * (max - min)) + min;\n}\n//# sourceMappingURL=utils.js.map","import { Fingerprint } from './fingerprint.js';\nimport { getRandomInt } from './utils.js';\nexport class Bucket {\n contents;\n constructor(size) {\n this.contents = new Array(size).fill(null);\n }\n has(fingerprint) {\n if (!(fingerprint instanceof Fingerprint)) {\n throw new TypeError('Invalid Fingerprint');\n }\n return this.contents.some((fp) => {\n return fingerprint.equals(fp);\n });\n }\n add(fingerprint) {\n if (!(fingerprint instanceof Fingerprint)) {\n throw new TypeError('Invalid Fingerprint');\n }\n for (let i = 0; i < this.contents.length; i++) {\n if (this.contents[i] == null) {\n this.contents[i] = fingerprint;\n return true;\n }\n }\n return true;\n }\n swap(fingerprint) {\n if (!(fingerprint instanceof Fingerprint)) {\n throw new TypeError('Invalid Fingerprint');\n }\n const i = getRandomInt(0, this.contents.length - 1);\n const current = this.contents[i];\n this.contents[i] = fingerprint;\n return current;\n }\n remove(fingerprint) {\n if (!(fingerprint instanceof Fingerprint)) {\n throw new TypeError('Invalid Fingerprint');\n }\n const found = this.contents.findIndex((fp) => {\n return fingerprint.equals(fp);\n });\n if (found > -1) {\n this.contents[found] = null;\n return true;\n }\n else {\n return false;\n }\n }\n}\n//# sourceMappingURL=bucket.js.map","// FNV_PRIMES and FNV_OFFSETS from\n// http://www.isthe.com/chongo/tech/comp/fnv/index.html#FNV-param\n\nconst FNV_PRIMES = {\n\t32: 16_777_619n,\n\t64: 1_099_511_628_211n,\n\t128: 309_485_009_821_345_068_724_781_371n,\n\t256: 374_144_419_156_711_147_060_143_317_175_368_453_031_918_731_002_211n,\n\t512: 35_835_915_874_844_867_368_919_076_489_095_108_449_946_327_955_754_392_558_399_825_615_420_669_938_882_575_126_094_039_892_345_713_852_759n,\n\t1024: 5_016_456_510_113_118_655_434_598_811_035_278_955_030_765_345_404_790_744_303_017_523_831_112_055_108_147_451_509_157_692_220_295_382_716_162_651_878_526_895_249_385_292_291_816_524_375_083_746_691_371_804_094_271_873_160_484_737_966_720_260_389_217_684_476_157_468_082_573n,\n};\n\nconst FNV_OFFSETS = {\n\t32: 2_166_136_261n,\n\t64: 14_695_981_039_346_656_037n,\n\t128: 144_066_263_297_769_815_596_495_629_667_062_367_629n,\n\t256: 100_029_257_958_052_580_907_070_968_620_625_704_837_092_796_014_241_193_945_225_284_501_741_471_925_557n,\n\t512: 9_659_303_129_496_669_498_009_435_400_716_310_466_090_418_745_672_637_896_108_374_329_434_462_657_994_582_932_197_716_438_449_813_051_892_206_539_805_784_495_328_239_340_083_876_191_928_701_583_869_517_785n,\n\t1024: 14_197_795_064_947_621_068_722_070_641_403_218_320_880_622_795_441_933_960_878_474_914_617_582_723_252_296_732_303_717_722_150_864_096_521_202_355_549_365_628_174_669_108_571_814_760_471_015_076_148_029_755_969_804_077_320_157_692_458_563_003_215_304_957_150_157_403_644_460_363_550_505_412_711_285_966_361_610_267_868_082_893_823_963_790_439_336_411_086_884_584_107_735_010_676_915n,\n};\n\nconst cachedEncoder = new globalThis.TextEncoder();\n\nfunction fnv1aUint8Array(uint8Array, size) {\n\tconst fnvPrime = FNV_PRIMES[size];\n\tlet hash = FNV_OFFSETS[size];\n\n\t// eslint-disable-next-line unicorn/no-for-loop -- This is a performance-sensitive loop\n\tfor (let index = 0; index < uint8Array.length; index++) {\n\t\thash ^= BigInt(uint8Array[index]);\n\t\thash = BigInt.asUintN(size, hash * fnvPrime);\n\t}\n\n\treturn hash;\n}\n\nfunction fnv1aEncodeInto(string, size, utf8Buffer) {\n\tif (utf8Buffer.length === 0) {\n\t\tthrow new Error('The `utf8Buffer` option must have a length greater than zero');\n\t}\n\n\tconst fnvPrime = FNV_PRIMES[size];\n\tlet hash = FNV_OFFSETS[size];\n\tlet remaining = string;\n\n\twhile (remaining.length > 0) {\n\t\tconst result = cachedEncoder.encodeInto(remaining, utf8Buffer);\n\t\tremaining = remaining.slice(result.read);\n\t\tfor (let index = 0; index < result.written; index++) {\n\t\t\thash ^= BigInt(utf8Buffer[index]);\n\t\t\thash = BigInt.asUintN(size, hash * fnvPrime);\n\t\t}\n\t}\n\n\treturn hash;\n}\n\nexport default function fnv1a(value, {size = 32, utf8Buffer} = {}) {\n\tif (!FNV_PRIMES[size]) {\n\t\tthrow new Error('The `size` option must be one of 32, 64, 128, 256, 512, or 1024');\n\t}\n\n\tif (typeof value === 'string') {\n\t\tif (utf8Buffer) {\n\t\t\treturn fnv1aEncodeInto(value, size, utf8Buffer);\n\t\t}\n\n\t\tvalue = cachedEncoder.encode(value);\n\t}\n\n\treturn fnv1aUint8Array(value, size);\n}\n","import fnv1aHash from '@sindresorhus/fnv1a';\nimport mur from 'murmurhash3js-revisited';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nexport const murmur3 = {\n hash: (input, seed) => {\n return mur.x86.hash32(input, seed);\n },\n hashV: (input, seed) => {\n return numberToBuffer(murmur3.hash(input, seed));\n }\n};\nexport const fnv1a = {\n hash: (input) => {\n return Number(fnv1aHash(input, {\n size: 32\n }));\n },\n hashV: (input, seed) => {\n return numberToBuffer(fnv1a.hash(input, seed));\n }\n};\nexport function numberToBuffer(num) {\n let hex = num.toString(16);\n if (hex.length % 2 === 1) {\n hex = `0${hex}`;\n }\n return uint8ArrayFromString(hex, 'base16');\n}\n//# sourceMappingURL=hashes.js.map","import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { Bucket } from './bucket.js';\nimport { Fingerprint, MAX_FINGERPRINT_SIZE } from './fingerprint.js';\nimport { fnv1a } from './hashes.js';\nimport { getRandomInt } from './utils.js';\nconst maxCuckooCount = 500;\nexport class CuckooFilter {\n bucketSize;\n filterSize;\n fingerprintSize;\n buckets;\n count;\n hash;\n seed;\n constructor(init) {\n this.filterSize = init.filterSize;\n this.bucketSize = init.bucketSize ?? 4;\n this.fingerprintSize = init.fingerprintSize ?? 2;\n this.count = 0;\n this.buckets = [];\n this.hash = init.hash ?? fnv1a;\n this.seed = init.seed ?? getRandomInt(0, Math.pow(2, 10));\n }\n add(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n const fingerprint = new Fingerprint(item, this.hash, this.seed, this.fingerprintSize);\n const j = this.hash.hash(item, this.seed) % this.filterSize;\n const k = (j ^ fingerprint.hash()) % this.filterSize;\n if (this.buckets[j] == null) {\n this.buckets[j] = new Bucket(this.bucketSize);\n }\n if (this.buckets[k] == null) {\n this.buckets[k] = new Bucket(this.bucketSize);\n }\n if (this.buckets[j].add(fingerprint) || this.buckets[k].add(fingerprint)) {\n this.count++;\n return true;\n }\n const rand = [j, k];\n let i = rand[getRandomInt(0, rand.length - 1)];\n if (this.buckets[i] == null) {\n this.buckets[i] = new Bucket(this.bucketSize);\n }\n for (let n = 0; n < maxCuckooCount; n++) {\n const swapped = this.buckets[i].swap(fingerprint);\n if (swapped == null) {\n continue;\n }\n i = (i ^ swapped.hash()) % this.filterSize;\n if (this.buckets[i] == null) {\n this.buckets[i] = new Bucket(this.bucketSize);\n }\n if (this.buckets[i].add(swapped)) {\n this.count++;\n return true;\n }\n else {\n continue;\n }\n }\n return false;\n }\n has(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n const fingerprint = new Fingerprint(item, this.hash, this.seed, this.fingerprintSize);\n const j = this.hash.hash(item, this.seed) % this.filterSize;\n const inJ = this.buckets[j]?.has(fingerprint) ?? false;\n if (inJ) {\n return inJ;\n }\n const k = (j ^ fingerprint.hash()) % this.filterSize;\n return this.buckets[k]?.has(fingerprint) ?? false;\n }\n remove(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n const fingerprint = new Fingerprint(item, this.hash, this.seed, this.fingerprintSize);\n const j = this.hash.hash(item, this.seed) % this.filterSize;\n const inJ = this.buckets[j]?.remove(fingerprint) ?? false;\n if (inJ) {\n this.count--;\n return inJ;\n }\n const k = (j ^ fingerprint.hash()) % this.filterSize;\n const inK = this.buckets[k]?.remove(fingerprint) ?? false;\n if (inK) {\n this.count--;\n }\n return inK;\n }\n get reliable() {\n return Math.floor(100 * (this.count / this.filterSize)) <= 90;\n }\n}\n// max load constants, defined in the cuckoo paper\nconst MAX_LOAD = {\n 1: 0.5,\n 2: 0.84,\n 4: 0.95,\n 8: 0.98\n};\nfunction calculateBucketSize(errorRate = 0.001) {\n if (errorRate > 0.002) {\n return 2;\n }\n if (errorRate > 0.00001) {\n return 4;\n }\n return 8;\n}\nexport function optimize(maxItems, errorRate = 0.001) {\n // https://www.eecs.harvard.edu/~michaelm/postscripts/cuckoo-conext2014.pdf\n // Section 5.1 Optimal Bucket Size\n const bucketSize = calculateBucketSize(errorRate);\n const load = MAX_LOAD[bucketSize];\n // https://stackoverflow.com/questions/57555236/how-to-size-a-cuckoo-filter/57617208#57617208\n const filterSize = Math.round(maxItems / load);\n const fingerprintSize = Math.min(Math.ceil(Math.log2(1 / errorRate) + Math.log2(2 * bucketSize)), MAX_FINGERPRINT_SIZE);\n return {\n filterSize,\n bucketSize,\n fingerprintSize\n };\n}\nexport function createCuckooFilter(maxItems, errorRate = 0.005) {\n const opts = optimize(maxItems, errorRate);\n return new CuckooFilter(opts);\n}\n//# sourceMappingURL=cuckoo-filter.js.map","import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { CuckooFilter, optimize } from './cuckoo-filter.js';\nimport { fnv1a } from './hashes.js';\nimport { getRandomInt } from './utils.js';\nexport class ScalableCuckooFilter {\n filterSize;\n bucketSize;\n fingerprintSize;\n scale;\n filterSeries;\n hash;\n seed;\n constructor(init) {\n this.bucketSize = init.bucketSize ?? 4;\n this.filterSize = init.filterSize ?? (1 << 18) / this.bucketSize;\n this.fingerprintSize = init.fingerprintSize ?? 2;\n this.scale = init.scale ?? 2;\n this.hash = init.hash ?? fnv1a;\n this.seed = init.seed ?? getRandomInt(0, Math.pow(2, 10));\n this.filterSeries = [\n new CuckooFilter({\n filterSize: this.filterSize,\n bucketSize: this.bucketSize,\n fingerprintSize: this.fingerprintSize,\n hash: this.hash,\n seed: this.seed\n })\n ];\n }\n add(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n if (this.has(item)) {\n return true;\n }\n let current = this.filterSeries.find((cuckoo) => {\n return cuckoo.reliable;\n });\n if (current == null) {\n const curSize = this.filterSize * Math.pow(this.scale, this.filterSeries.length);\n current = new CuckooFilter({\n filterSize: curSize,\n bucketSize: this.bucketSize,\n fingerprintSize: this.fingerprintSize,\n hash: this.hash,\n seed: this.seed\n });\n this.filterSeries.push(current);\n }\n return current.add(item);\n }\n has(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n for (let i = 0; i < this.filterSeries.length; i++) {\n if (this.filterSeries[i].has(item)) {\n return true;\n }\n }\n return false;\n }\n remove(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n for (let i = 0; i < this.filterSeries.length; i++) {\n if (this.filterSeries[i].remove(item)) {\n return true;\n }\n }\n return false;\n }\n get count() {\n return this.filterSeries.reduce((acc, curr) => {\n return acc + curr.count;\n }, 0);\n }\n}\nexport function createScalableCuckooFilter(maxItems, errorRate = 0.001, options) {\n return new ScalableCuckooFilter({\n ...optimize(maxItems, errorRate),\n ...(options ?? {})\n });\n}\n//# sourceMappingURL=scalable-cuckoo-filter.js.map","import { createScalableCuckooFilter } from '@libp2p/utils/filters';\n/**\n * Uses a Cuckoo filter to implement a mechanism for deduplicating PeerIds in a\n * way that uses a smaller amount of memory than a PeerSet.\n */\nexport class PeerFilter {\n filter;\n constructor(size, errorRate) {\n this.filter = createScalableCuckooFilter(size, errorRate);\n }\n has(peerId) {\n return this.filter.has(peerId.toBytes());\n }\n add(peerId) {\n this.filter.add(peerId.toBytes());\n }\n remove(peerId) {\n this.filter.remove?.(peerId.toBytes());\n }\n}\n/**\n * Create and return a PeerFilter\n *\n * @param size - The maximum number of peers expected to be added to the filter\n * @param errorRate - The acceptable error rate\n */\nexport function peerFilter(size, errorRate = 0.001) {\n return new PeerFilter(size, errorRate);\n}\n//# sourceMappingURL=filter.js.map","/**\n * Convert a duplex iterable into a MultiaddrConnection.\n * https://github.com/libp2p/interface-transport#multiaddrconnection\n */\nexport function streamToMaConnection(props) {\n const { stream, remoteAddr, logger } = props;\n const log = logger.forComponent('libp2p:stream:converter');\n let closedRead = false;\n let closedWrite = false;\n // piggyback on `stream.close` invocations to close maconn\n const streamClose = stream.close.bind(stream);\n stream.close = async (options) => {\n await streamClose(options);\n close(true);\n };\n // piggyback on `stream.abort` invocations to close maconn\n const streamAbort = stream.abort.bind(stream);\n stream.abort = (err) => {\n streamAbort(err);\n close(true);\n };\n // piggyback on `stream.sink` invocations to close maconn\n const streamSink = stream.sink.bind(stream);\n stream.sink = async (source) => {\n try {\n await streamSink(source);\n }\n catch (err) {\n // If aborted we can safely ignore\n if (err.type !== 'aborted') {\n // If the source errored the socket will already have been destroyed by\n // toIterable.duplex(). If the socket errored it will already be\n // destroyed. There's nothing to do here except log the error & return.\n log.error('%s error in sink', remoteAddr, err);\n }\n }\n finally {\n closedWrite = true;\n close();\n }\n };\n const maConn = {\n log,\n sink: stream.sink,\n source: (async function* () {\n try {\n for await (const list of stream.source) {\n if (list instanceof Uint8Array) {\n yield list;\n }\n else {\n yield* list;\n }\n }\n }\n finally {\n closedRead = true;\n close();\n }\n }()),\n remoteAddr,\n timeline: { open: Date.now(), close: undefined },\n close: stream.close,\n abort: stream.abort\n };\n function close(force) {\n if (force === true) {\n closedRead = true;\n closedWrite = true;\n }\n if (closedRead && closedWrite && maConn.timeline.close == null) {\n maConn.timeline.close = Date.now();\n }\n }\n return maConn;\n}\n//# sourceMappingURL=stream-to-ma-conn.js.map","import { Queue } from './queue/index.js';\n/**\n * Extends Queue to add support for querying queued jobs by peer id\n */\nexport class PeerQueue extends Queue {\n has(peerId) {\n return this.find(peerId) != null;\n }\n find(peerId) {\n return this.queue.find(job => {\n return peerId.equals(job.options.peerId);\n });\n }\n}\n//# sourceMappingURL=peer-queue.js.map","import { TypedEventEmitter, setMaxListeners } from '@libp2p/interface';\nimport { PeerQueue } from '@libp2p/utils/peer-queue';\nimport { anySignal } from 'any-signal';\nimport { raceSignal } from 'race-signal';\nimport { RELAY_V2_HOP_CODEC } from '../constants.js';\n/**\n * ReservationManager automatically makes a circuit v2 reservation on any connected\n * peers that support the circuit v2 HOP protocol.\n */\nexport class RelayDiscovery extends TypedEventEmitter {\n peerStore;\n registrar;\n connectionManager;\n randomWalk;\n started;\n running;\n topologyId;\n log;\n discoveryController;\n filter;\n constructor(components, init = {}) {\n super();\n this.log = components.logger.forComponent('libp2p:circuit-relay:discover-relays');\n this.started = false;\n this.running = false;\n this.peerStore = components.peerStore;\n this.registrar = components.registrar;\n this.connectionManager = components.connectionManager;\n this.randomWalk = components.randomWalk;\n this.filter = init.filter;\n this.discoveryController = new AbortController();\n setMaxListeners(Infinity, this.discoveryController.signal);\n }\n isStarted() {\n return this.started;\n }\n async start() {\n // register a topology listener for when new peers are encountered\n // that support the hop protocol\n this.topologyId = await this.registrar.register(RELAY_V2_HOP_CODEC, {\n filter: this.filter,\n onConnect: (peerId) => {\n this.log('discovered relay %p', peerId);\n this.safeDispatchEvent('relay:discover', { detail: peerId });\n }\n });\n this.started = true;\n }\n stop() {\n if (this.topologyId != null) {\n this.registrar.unregister(this.topologyId);\n }\n this.discoveryController?.abort();\n this.started = false;\n }\n /**\n * Try to listen on available hop relay connections.\n * The following order will happen while we do not have enough relays:\n *\n * 1. Check the metadata store for known relays, try to listen on the ones we are already connected to\n * 2. Dial and try to listen on the peers we know that support hop but are not connected\n * 3. Search the network\n */\n startDiscovery() {\n if (this.running) {\n return;\n }\n this.log('start discovery');\n this.running = true;\n this.discoveryController = new AbortController();\n setMaxListeners(Infinity, this.discoveryController.signal);\n Promise.resolve()\n .then(async () => {\n this.log('searching peer store for relays');\n const peers = (await this.peerStore.all({\n filters: [\n // filter by a list of peers supporting RELAY_V2_HOP and ones we are not listening on\n (peer) => {\n return peer.protocols.includes(RELAY_V2_HOP_CODEC);\n }\n ],\n orders: [\n () => Math.random() < 0.5 ? 1 : -1\n ]\n }));\n for (const peer of peers) {\n this.log.trace('found relay peer %p in peer store', peer.id);\n this.safeDispatchEvent('relay:discover', { detail: peer.id });\n }\n this.log('found %d relay peers in peer store', peers.length);\n // perform random walk and dial peers - after identify has run, the network\n // topology will be notified of new relays\n const queue = new PeerQueue({\n concurrency: 5\n });\n this.log('start random walk');\n for await (const peer of this.randomWalk.walk({ signal: this.discoveryController.signal })) {\n this.log.trace('found random peer %p', peer.id);\n if (queue.has(peer.id)) {\n this.log.trace('random peer %p was already in queue', peer.id);\n // skip peers already in the queue\n continue;\n }\n if (this.connectionManager.getConnections(peer.id)?.length > 0) {\n this.log.trace('random peer %p was already connected', peer.id);\n // skip peers we are already connected to\n continue;\n }\n if (!(await this.connectionManager.isDialable(peer.multiaddrs))) {\n this.log.trace('random peer %p was not dialable', peer.id, peer.multiaddrs.map(ma => ma.toString()));\n // skip peers we can't dial\n continue;\n }\n this.log.trace('wait for space in queue for %p', peer.id);\n // pause the random walk until there is space in the queue\n await raceSignal(queue.onSizeLessThan(10), this.discoveryController.signal);\n this.log('adding random peer %p to dial queue (length: %d)', peer.id, queue.size);\n // dial the peer - this will cause identify to run and our topology to\n // be notified and we'll attempt to create reservations\n queue.add(async () => {\n const signal = anySignal([this.discoveryController.signal, AbortSignal.timeout(5000)]);\n setMaxListeners(Infinity, signal);\n try {\n await this.connectionManager.openConnection(peer.id, { signal });\n }\n finally {\n signal.clear();\n }\n }, {\n peerId: peer.id,\n signal: this.discoveryController.signal\n })\n .catch(err => {\n this.log.error('error opening connection to random peer %p', peer.id, err);\n });\n }\n await queue.onIdle();\n })\n .catch(err => {\n if (!this.discoveryController.signal.aborted) {\n this.log.error('failed when finding relays on the network', err);\n }\n });\n }\n stopDiscovery() {\n this.log('stop discovery');\n this.running = false;\n this.discoveryController?.abort();\n }\n}\n//# sourceMappingURL=discovery.js.map","import { CodeError, TypedEventEmitter } from '@libp2p/interface';\nimport { PeerMap } from '@libp2p/peer-collections';\nimport { multiaddr } from '@multiformats/multiaddr';\nclass CircuitRelayTransportListener extends TypedEventEmitter {\n connectionManager;\n relayStore;\n listeningAddrs;\n log;\n constructor(components) {\n super();\n this.log = components.logger.forComponent('libp2p:circuit-relay:transport:listener');\n this.connectionManager = components.connectionManager;\n this.relayStore = components.relayStore;\n this.listeningAddrs = new PeerMap();\n // remove listening addrs when a relay is removed\n this.relayStore.addEventListener('relay:removed', this._onRemoveRelayPeer);\n }\n _onRemoveRelayPeer = (evt) => {\n this.#removeRelayPeer(evt.detail);\n };\n async listen(addr) {\n this.log('listen on %a', addr);\n // remove the circuit part to get the peer id of the relay\n const relayAddr = addr.decapsulate('/p2p-circuit');\n const relayConn = await this.connectionManager.openConnection(relayAddr);\n if (!this.relayStore.hasReservation(relayConn.remotePeer)) {\n this.log('making reservation on peer %p', relayConn.remotePeer);\n // addRelay calls transportManager.listen which calls this listen method\n await this.relayStore.addRelay(relayConn.remotePeer, 'configured');\n return;\n }\n const reservation = this.relayStore.getReservation(relayConn.remotePeer);\n if (reservation == null) {\n throw new CodeError('Did not have reservation after making reservation', 'ERR_NO_RESERVATION');\n }\n if (this.listeningAddrs.has(relayConn.remotePeer)) {\n this.log('already listening on relay %p', relayConn.remotePeer);\n return;\n }\n // add all addresses from the relay reservation\n this.listeningAddrs.set(relayConn.remotePeer, reservation.addrs.map(buf => {\n return multiaddr(buf).encapsulate('/p2p-circuit');\n }));\n this.safeDispatchEvent('listening', {});\n }\n getAddrs() {\n return [...this.listeningAddrs.values()].flat();\n }\n async close() {\n }\n #removeRelayPeer(peerId) {\n const had = this.listeningAddrs.has(peerId);\n this.log('relay peer removed %p - had reservation', peerId, had);\n this.listeningAddrs.delete(peerId);\n if (had) {\n this.log.trace('removing relay event listener for peer %p', peerId);\n this.relayStore.removeEventListener('relay:removed', this._onRemoveRelayPeer);\n // Announce listen addresses change\n this.safeDispatchEvent('close', {});\n }\n }\n}\nexport function createListener(options) {\n return new CircuitRelayTransportListener(options);\n}\n//# sourceMappingURL=listener.js.map","import { TypedEventEmitter, setMaxListeners } from '@libp2p/interface';\nimport { PeerMap } from '@libp2p/peer-collections';\nimport { createBloomFilter } from '@libp2p/utils/filters';\nimport { PeerQueue } from '@libp2p/utils/peer-queue';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { pbStream } from 'it-protobuf-stream';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { DEFAULT_MAX_RESERVATION_QUEUE_LENGTH, DEFAULT_RESERVATION_COMPLETION_TIMEOUT, DEFAULT_RESERVATION_CONCURRENCY, RELAY_TAG, RELAY_V2_HOP_CODEC } from '../constants.js';\nimport { HopMessage, Status } from '../pb/index.js';\nimport { getExpirationMilliseconds } from '../utils.js';\n// allow refreshing a relay reservation if it will expire in the next 10 minutes\nconst REFRESH_WINDOW = (60 * 1000) * 10;\n// try to refresh relay reservations 5 minutes before expiry\nconst REFRESH_TIMEOUT = (60 * 1000) * 5;\n// minimum duration before which a reservation must not be refreshed\nconst REFRESH_TIMEOUT_MIN = 30 * 1000;\nexport class ReservationStore extends TypedEventEmitter {\n peerId;\n connectionManager;\n transportManager;\n peerStore;\n events;\n reserveQueue;\n reservations;\n maxDiscoveredRelays;\n maxReservationQueueLength;\n reservationCompletionTimeout;\n started;\n log;\n relayFilter;\n constructor(components, init) {\n super();\n this.log = components.logger.forComponent('libp2p:circuit-relay:transport:reservation-store');\n this.peerId = components.peerId;\n this.connectionManager = components.connectionManager;\n this.transportManager = components.transportManager;\n this.peerStore = components.peerStore;\n this.events = components.events;\n this.reservations = new PeerMap();\n this.maxDiscoveredRelays = init?.discoverRelays ?? 0;\n this.maxReservationQueueLength = init?.maxReservationQueueLength ?? DEFAULT_MAX_RESERVATION_QUEUE_LENGTH;\n this.reservationCompletionTimeout = init?.reservationCompletionTimeout ?? DEFAULT_RESERVATION_COMPLETION_TIMEOUT;\n this.started = false;\n this.relayFilter = createBloomFilter(100);\n // ensure we don't listen on multiple relays simultaneously\n this.reserveQueue = new PeerQueue({\n concurrency: init?.reservationConcurrency ?? DEFAULT_RESERVATION_CONCURRENCY,\n metricName: 'libp2p_relay_reservation_queue',\n metrics: components.metrics\n });\n // When a peer disconnects, if we had a reservation on that peer\n // remove the reservation and multiaddr and maybe trigger search\n // for new relays\n this.events.addEventListener('peer:disconnect', (evt) => {\n this.#removeRelay(evt.detail);\n });\n }\n isStarted() {\n return this.started;\n }\n start() {\n this.started = true;\n }\n afterStart() {\n if (this.reservations.size < this.maxDiscoveredRelays) {\n this.log('not enough relays %d/%d', this.reservations.size, this.maxDiscoveredRelays);\n this.safeDispatchEvent('relay:not-enough-relays', {});\n }\n }\n stop() {\n this.reserveQueue.clear();\n this.reservations.forEach(({ timeout }) => {\n clearTimeout(timeout);\n });\n this.reservations.clear();\n this.started = false;\n }\n /**\n * If the number of current relays is beneath the configured `maxReservations`\n * value, and the passed peer id is not our own, and we have a non-relayed\n * connection to the remote, and the remote peer speaks the hop protocol, try\n * to reserve a slot on the remote peer\n */\n async addRelay(peerId, type) {\n if (this.peerId.equals(peerId)) {\n this.log('not trying to use self as relay');\n return;\n }\n if (this.reserveQueue.size > this.maxReservationQueueLength) {\n this.log('not adding potential relay peer %p as the queue is full', peerId);\n return;\n }\n if (this.reserveQueue.has(peerId)) {\n this.log('potential relay peer %p is already in the reservation queue', peerId);\n return;\n }\n if (this.relayFilter.has(peerId.toBytes())) {\n this.log('potential relay peer %p has failed previously, not trying again', peerId);\n return;\n }\n this.log('try to reserve relay slot with %p', peerId);\n await this.reserveQueue.add(async () => {\n const start = Date.now();\n try {\n // allow refresh of an existing reservation if it is about to expire\n const existingReservation = this.reservations.get(peerId);\n if (existingReservation != null) {\n if (getExpirationMilliseconds(existingReservation.reservation.expire) > REFRESH_WINDOW) {\n this.log('already have reservation on relay peer %p and it expires in more than 10 minutes', peerId);\n return;\n }\n clearTimeout(existingReservation.timeout);\n this.reservations.delete(peerId);\n }\n if (type === 'discovered' && [...this.reservations.values()].reduce((acc, curr) => {\n if (curr.type === 'discovered') {\n acc++;\n }\n return acc;\n }, 0) >= this.maxDiscoveredRelays) {\n this.log('already have enough discovered relays');\n return;\n }\n const signal = AbortSignal.timeout(this.reservationCompletionTimeout);\n setMaxListeners(Infinity, signal);\n const connection = await this.connectionManager.openConnection(peerId, {\n signal\n });\n if (connection.remoteAddr.protoNames().includes('p2p-circuit')) {\n this.log('not creating reservation over relayed connection');\n return;\n }\n const reservation = await this.#createReservation(connection, {\n signal\n });\n this.log('created reservation on relay peer %p', peerId);\n const expiration = getExpirationMilliseconds(reservation.expire);\n // sets a lower bound on the timeout, and also don't let it go over\n // 2^31 - 1 (setTimeout will only accept signed 32 bit integers)\n const timeoutDuration = Math.min(Math.max(expiration - REFRESH_TIMEOUT, REFRESH_TIMEOUT_MIN), Math.pow(2, 31) - 1);\n const timeout = setTimeout(() => {\n this.addRelay(peerId, type).catch(err => {\n this.log.error('could not refresh reservation to relay %p', peerId, err);\n });\n }, timeoutDuration);\n // we've managed to create a reservation successfully\n this.reservations.set(peerId, {\n timeout,\n reservation,\n type\n });\n // ensure we don't close the connection to the relay\n await this.peerStore.merge(peerId, {\n tags: {\n [RELAY_TAG]: {\n value: 1,\n ttl: expiration\n }\n }\n });\n // listen on multiaddr that only the circuit transport is listening for\n await this.transportManager.listen([multiaddr(`/p2p/${peerId.toString()}/p2p-circuit`)]);\n this.safeDispatchEvent('relay:created-reservation', {\n detail: peerId\n });\n }\n catch (err) {\n this.log.error('could not reserve slot on %p after %dms', peerId, Date.now() - start, err);\n // cancel the renewal timeout if it's been set\n const reservation = this.reservations.get(peerId);\n if (reservation != null) {\n clearTimeout(reservation.timeout);\n }\n // if listening failed, remove the reservation\n this.reservations.delete(peerId);\n // don't try this peer again\n this.relayFilter.add(peerId.toBytes());\n }\n }, {\n peerId\n });\n }\n hasReservation(peerId) {\n return this.reservations.has(peerId);\n }\n getReservation(peerId) {\n return this.reservations.get(peerId)?.reservation;\n }\n reservationCount() {\n return this.reservations.size;\n }\n async #createReservation(connection, options) {\n options.signal?.throwIfAborted();\n this.log('requesting reservation from %p', connection.remotePeer);\n const stream = await connection.newStream(RELAY_V2_HOP_CODEC, options);\n const pbstr = pbStream(stream);\n const hopstr = pbstr.pb(HopMessage);\n await hopstr.write({ type: HopMessage.Type.RESERVE }, options);\n let response;\n try {\n response = await hopstr.read(options);\n }\n catch (err) {\n stream.abort(err);\n throw err;\n }\n finally {\n if (stream.status !== 'closed') {\n await stream.close(options);\n }\n }\n if (response.status === Status.OK && (response.reservation != null)) {\n // check that the returned relay has the relay address - this can be\n // omitted when requesting a reservation from a go-libp2p relay we\n // already have a reservation on\n let hasRelayAddress = false;\n const relayAddressBytes = connection.remoteAddr.bytes;\n for (const buf of response.reservation.addrs) {\n if (uint8ArrayEquals(relayAddressBytes, buf)) {\n hasRelayAddress = true;\n break;\n }\n }\n if (!hasRelayAddress) {\n response.reservation.addrs.push(relayAddressBytes);\n }\n return response.reservation;\n }\n const errMsg = `reservation failed with status ${response.status ?? 'undefined'}`;\n this.log.error(errMsg);\n throw new Error(errMsg);\n }\n /**\n * Remove listen relay\n */\n #removeRelay(peerId) {\n const existingReservation = this.reservations.get(peerId);\n if (existingReservation == null) {\n return;\n }\n this.log('connection to relay %p closed, removing reservation from local store', peerId);\n clearTimeout(existingReservation.timeout);\n this.reservations.delete(peerId);\n this.safeDispatchEvent('relay:removed', { detail: peerId });\n if (this.reservations.size < this.maxDiscoveredRelays) {\n this.log('not enough relays %d/%d', this.reservations.size, this.maxDiscoveredRelays);\n this.safeDispatchEvent('relay:not-enough-relays', {});\n }\n }\n}\n//# sourceMappingURL=reservation-store.js.map","import { CodeError, serviceCapabilities, serviceDependencies, start, stop, transportSymbol } from '@libp2p/interface';\nimport { peerFilter } from '@libp2p/peer-collections';\nimport { peerIdFromBytes, peerIdFromString } from '@libp2p/peer-id';\nimport { streamToMaConnection } from '@libp2p/utils/stream-to-ma-conn';\nimport * as mafmt from '@multiformats/mafmt';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { pbStream } from 'it-protobuf-stream';\nimport { CustomProgressEvent } from 'progress-events';\nimport { CIRCUIT_PROTO_CODE, DEFAULT_DISCOVERY_FILTER_ERROR_RATE, DEFAULT_DISCOVERY_FILTER_SIZE, ERR_HOP_REQUEST_FAILED, ERR_RELAYED_DIAL, MAX_CONNECTIONS, RELAY_V2_HOP_CODEC, RELAY_V2_STOP_CODEC } from '../constants.js';\nimport { StopMessage, HopMessage, Status } from '../pb/index.js';\nimport { RelayDiscovery } from './discovery.js';\nimport { createListener } from './listener.js';\nimport { ReservationStore } from './reservation-store.js';\nconst isValidStop = (request) => {\n if (request.peer == null) {\n return false;\n }\n try {\n request.peer.addrs.forEach(multiaddr);\n }\n catch {\n return false;\n }\n return true;\n};\nconst defaults = {\n maxInboundStopStreams: MAX_CONNECTIONS,\n maxOutboundStopStreams: MAX_CONNECTIONS,\n stopTimeout: 30000\n};\nexport class CircuitRelayTransport {\n discovery;\n registrar;\n peerStore;\n connectionManager;\n transportManager;\n peerId;\n upgrader;\n addressManager;\n connectionGater;\n reservationStore;\n logger;\n maxInboundStopStreams;\n maxOutboundStopStreams;\n stopTimeout;\n started;\n log;\n constructor(components, init) {\n this.log = components.logger.forComponent('libp2p:circuit-relay:transport');\n this.registrar = components.registrar;\n this.peerStore = components.peerStore;\n this.connectionManager = components.connectionManager;\n this.transportManager = components.transportManager;\n this.logger = components.logger;\n this.peerId = components.peerId;\n this.upgrader = components.upgrader;\n this.addressManager = components.addressManager;\n this.connectionGater = components.connectionGater;\n this.maxInboundStopStreams = init.maxInboundStopStreams ?? defaults.maxInboundStopStreams;\n this.maxOutboundStopStreams = init.maxOutboundStopStreams ?? defaults.maxOutboundStopStreams;\n this.stopTimeout = init.stopTimeout ?? defaults.stopTimeout;\n const discoverRelays = init.discoverRelays ?? 0;\n if (discoverRelays > 0) {\n this.discovery = new RelayDiscovery(components, {\n filter: init.discoveryFilter ?? peerFilter(DEFAULT_DISCOVERY_FILTER_SIZE, DEFAULT_DISCOVERY_FILTER_ERROR_RATE)\n });\n this.discovery.addEventListener('relay:discover', (evt) => {\n this.reservationStore.addRelay(evt.detail, 'discovered')\n .catch(err => {\n this.log.error('could not add discovered relay %p', evt.detail, err);\n });\n });\n }\n this.reservationStore = new ReservationStore(components, init);\n this.reservationStore.addEventListener('relay:not-enough-relays', () => {\n this.discovery?.startDiscovery();\n });\n this.reservationStore.addEventListener('relay:created-reservation', () => {\n if (this.reservationStore.reservationCount() >= discoverRelays) {\n this.discovery?.stopDiscovery();\n }\n });\n this.started = false;\n }\n [Symbol.toStringTag] = '@libp2p/circuit-relay-v2-transport';\n [serviceCapabilities] = [\n '@libp2p/transport',\n '@libp2p/circuit-relay-v2-transport'\n ];\n get [serviceDependencies]() {\n // we only need identify if discovery is enabled\n if (this.discovery != null) {\n return [\n '@libp2p/identify'\n ];\n }\n return [];\n }\n [transportSymbol] = true;\n isStarted() {\n return this.started;\n }\n async start() {\n await this.registrar.handle(RELAY_V2_STOP_CODEC, (data) => {\n void this.onStop(data).catch(err => {\n this.log.error('error while handling STOP protocol', err);\n data.stream.abort(err);\n });\n }, {\n maxInboundStreams: this.maxInboundStopStreams,\n maxOutboundStreams: this.maxOutboundStopStreams,\n runOnTransientConnection: true\n });\n await start(this.discovery, this.reservationStore);\n this.started = true;\n }\n async stop() {\n await stop(this.discovery, this.reservationStore);\n await this.registrar.unhandle(RELAY_V2_STOP_CODEC);\n this.started = false;\n }\n /**\n * Dial a peer over a relay\n */\n async dial(ma, options) {\n if (ma.protoCodes().filter(code => code === CIRCUIT_PROTO_CODE).length !== 1) {\n const errMsg = 'Invalid circuit relay address';\n this.log.error(errMsg, ma);\n throw new CodeError(errMsg, ERR_RELAYED_DIAL);\n }\n // Check the multiaddr to see if it contains a relay and a destination peer\n const addrs = ma.toString().split('/p2p-circuit');\n const relayAddr = multiaddr(addrs[0]);\n const destinationAddr = multiaddr(addrs[addrs.length - 1]);\n const relayId = relayAddr.getPeerId();\n const destinationId = destinationAddr.getPeerId();\n if (relayId == null || destinationId == null) {\n const errMsg = `Circuit relay dial to ${ma.toString()} failed as address did not have peer ids`;\n this.log.error(errMsg);\n throw new CodeError(errMsg, ERR_RELAYED_DIAL);\n }\n const relayPeer = peerIdFromString(relayId);\n const destinationPeer = peerIdFromString(destinationId);\n let disconnectOnFailure = false;\n const relayConnections = this.connectionManager.getConnections(relayPeer);\n let relayConnection = relayConnections[0];\n if (relayConnection == null) {\n await this.peerStore.merge(relayPeer, {\n multiaddrs: [relayAddr]\n });\n options.onProgress?.(new CustomProgressEvent('circuit-relay:open-connection'));\n relayConnection = await this.connectionManager.openConnection(relayPeer, options);\n disconnectOnFailure = true;\n }\n else {\n options.onProgress?.(new CustomProgressEvent('circuit-relay:reuse-connection'));\n }\n let stream;\n try {\n options.onProgress?.(new CustomProgressEvent('circuit-relay:open-hop-stream'));\n stream = await relayConnection.newStream(RELAY_V2_HOP_CODEC);\n return await this.connectV2({\n stream,\n connection: relayConnection,\n destinationPeer,\n destinationAddr,\n relayAddr,\n ma,\n disconnectOnFailure,\n onProgress: options.onProgress\n });\n }\n catch (err) {\n this.log.error('circuit relay dial to destination %p via relay %p failed', destinationPeer, relayPeer, err);\n if (stream != null) {\n stream.abort(err);\n }\n disconnectOnFailure && await relayConnection.close();\n throw err;\n }\n }\n async connectV2({ stream, connection, destinationPeer, destinationAddr, relayAddr, ma, disconnectOnFailure, onProgress }) {\n try {\n const pbstr = pbStream(stream);\n const hopstr = pbstr.pb(HopMessage);\n onProgress?.(new CustomProgressEvent('circuit-relay:write-connect-message'));\n await hopstr.write({\n type: HopMessage.Type.CONNECT,\n peer: {\n id: destinationPeer.toBytes(),\n addrs: [multiaddr(destinationAddr).bytes]\n }\n });\n onProgress?.(new CustomProgressEvent('circuit-relay:read-connect-response'));\n const status = await hopstr.read();\n if (status.status !== Status.OK) {\n throw new CodeError(`failed to connect via relay with status ${status?.status?.toString() ?? 'undefined'}`, ERR_HOP_REQUEST_FAILED);\n }\n const maConn = streamToMaConnection({\n stream: pbstr.unwrap(),\n remoteAddr: ma,\n localAddr: relayAddr.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),\n logger: this.logger\n });\n this.log('new outbound relayed connection %a', maConn.remoteAddr);\n return await this.upgrader.upgradeOutbound(maConn, {\n transient: status.limit != null,\n onProgress\n });\n }\n catch (err) {\n this.log.error(`Circuit relay dial to destination ${destinationPeer.toString()} via relay ${connection.remotePeer.toString()} failed`, err);\n disconnectOnFailure && await connection.close();\n throw err;\n }\n }\n /**\n * Create a listener\n */\n createListener(options) {\n return createListener({\n connectionManager: this.connectionManager,\n relayStore: this.reservationStore,\n logger: this.logger\n });\n }\n /**\n * Filter check for all Multiaddrs that this transport can listen on\n */\n listenFilter(multiaddrs) {\n multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs];\n return multiaddrs.filter((ma) => {\n return mafmt.Circuit.matches(ma);\n });\n }\n /**\n * Filter check for all Multiaddrs that this transport can dial\n */\n dialFilter(multiaddrs) {\n return this.listenFilter(multiaddrs);\n }\n /**\n * An incoming STOP request means a remote peer wants to dial us via a relay\n */\n async onStop({ connection, stream }) {\n if (!this.reservationStore.hasReservation(connection.remotePeer)) {\n try {\n this.log('dialed via relay we did not have a reservation on, start listening on that relay address');\n await this.transportManager.listen([connection.remoteAddr.encapsulate('/p2p-circuit')]);\n }\n catch (err) {\n // failed to refresh our hitherto unknown relay reservation but allow the connection attempt anyway\n this.log.error('failed to listen on a relay peer we were dialed via but did not have a reservation on', err);\n }\n }\n const signal = AbortSignal.timeout(this.stopTimeout);\n const pbstr = pbStream(stream).pb(StopMessage);\n const request = await pbstr.read({\n signal\n });\n this.log('new circuit relay v2 stop stream from %p with type %s', connection.remotePeer, request.type);\n if (request?.type === undefined) {\n this.log.error('type was missing from circuit v2 stop protocol request from %s', connection.remotePeer);\n await pbstr.write({ type: StopMessage.Type.STATUS, status: Status.MALFORMED_MESSAGE }, {\n signal\n });\n await stream.close();\n return;\n }\n // Validate the STOP request has the required input\n if (request.type !== StopMessage.Type.CONNECT) {\n this.log.error('invalid stop connect request via peer %p', connection.remotePeer);\n await pbstr.write({ type: StopMessage.Type.STATUS, status: Status.UNEXPECTED_MESSAGE }, {\n signal\n });\n await stream.close();\n return;\n }\n if (!isValidStop(request)) {\n this.log.error('invalid stop connect request via peer %p', connection.remotePeer);\n await pbstr.write({ type: StopMessage.Type.STATUS, status: Status.MALFORMED_MESSAGE }, {\n signal\n });\n await stream.close();\n return;\n }\n const remotePeerId = peerIdFromBytes(request.peer.id);\n if ((await this.connectionGater.denyInboundRelayedConnection?.(connection.remotePeer, remotePeerId)) === true) {\n this.log.error('connection gater denied inbound relayed connection from %p', connection.remotePeer);\n await pbstr.write({ type: StopMessage.Type.STATUS, status: Status.PERMISSION_DENIED }, {\n signal\n });\n await stream.close();\n return;\n }\n this.log.trace('sending success response to %p', connection.remotePeer);\n await pbstr.write({ type: StopMessage.Type.STATUS, status: Status.OK }, {\n signal\n });\n const remoteAddr = connection.remoteAddr.encapsulate(`/p2p-circuit/p2p/${remotePeerId.toString()}`);\n const localAddr = this.addressManager.getAddresses()[0];\n const maConn = streamToMaConnection({\n stream: pbstr.unwrap().unwrap(),\n remoteAddr,\n localAddr,\n logger: this.logger\n });\n this.log('new inbound relayed connection %a', maConn.remoteAddr);\n await this.upgrader.upgradeInbound(maConn, {\n transient: request.limit != null\n });\n this.log('%s connection %a upgraded', 'inbound', maConn.remoteAddr);\n }\n}\n//# sourceMappingURL=transport.js.map","import { CircuitRelayTransport } from './transport.js';\nexport function circuitRelayTransport(init = {}) {\n return (components) => {\n return new CircuitRelayTransport(components, init);\n };\n}\n//# sourceMappingURL=index.js.map","// From https://github.com/sindresorhus/random-int/blob/c37741b56f76b9160b0b63dae4e9c64875128146/index.js#L13-L15\nconst randomInteger = (minimum, maximum) => Math.floor((Math.random() * (maximum - minimum + 1)) + minimum);\n\nconst createAbortError = () => {\n\tconst error = new Error('Delay aborted');\n\terror.name = 'AbortError';\n\treturn error;\n};\n\nconst clearMethods = new WeakMap();\n\nexport function createDelay({clearTimeout: defaultClear, setTimeout: defaultSet} = {}) {\n\t// We cannot use `async` here as we need the promise identity.\n\treturn (milliseconds, {value, signal} = {}) => {\n\t\t// TODO: Use `signal?.throwIfAborted()` when targeting Node.js 18.\n\t\tif (signal?.aborted) {\n\t\t\treturn Promise.reject(createAbortError());\n\t\t}\n\n\t\tlet timeoutId;\n\t\tlet settle;\n\t\tlet rejectFunction;\n\t\tconst clear = defaultClear ?? clearTimeout;\n\n\t\tconst signalListener = () => {\n\t\t\tclear(timeoutId);\n\t\t\trejectFunction(createAbortError());\n\t\t};\n\n\t\tconst cleanup = () => {\n\t\t\tif (signal) {\n\t\t\t\tsignal.removeEventListener('abort', signalListener);\n\t\t\t}\n\t\t};\n\n\t\tconst delayPromise = new Promise((resolve, reject) => {\n\t\t\tsettle = () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(value);\n\t\t\t};\n\n\t\t\trejectFunction = reject;\n\t\t\ttimeoutId = (defaultSet ?? setTimeout)(settle, milliseconds);\n\t\t});\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', signalListener, {once: true});\n\t\t}\n\n\t\tclearMethods.set(delayPromise, () => {\n\t\t\tclear(timeoutId);\n\t\t\ttimeoutId = null;\n\t\t\tsettle();\n\t\t});\n\n\t\treturn delayPromise;\n\t};\n}\n\nconst delay = createDelay();\n\nexport default delay;\n\nexport async function rangeDelay(minimum, maximum, options = {}) {\n\treturn delay(randomInteger(minimum, maximum), options);\n}\n\nexport function clearDelay(promise) {\n\tclearMethods.get(promise)?.();\n}\n","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var HolePunch;\n(function (HolePunch) {\n let Type;\n (function (Type) {\n Type[\"UNUSED\"] = \"UNUSED\";\n Type[\"CONNECT\"] = \"CONNECT\";\n Type[\"SYNC\"] = \"SYNC\";\n })(Type = HolePunch.Type || (HolePunch.Type = {}));\n let __TypeValues;\n (function (__TypeValues) {\n __TypeValues[__TypeValues[\"UNUSED\"] = 0] = \"UNUSED\";\n __TypeValues[__TypeValues[\"CONNECT\"] = 100] = \"CONNECT\";\n __TypeValues[__TypeValues[\"SYNC\"] = 300] = \"SYNC\";\n })(__TypeValues || (__TypeValues = {}));\n (function (Type) {\n Type.codec = () => {\n return enumeration(__TypeValues);\n };\n })(Type = HolePunch.Type || (HolePunch.Type = {}));\n let _codec;\n HolePunch.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null) {\n w.uint32(8);\n HolePunch.Type.codec().encode(obj.type, w);\n }\n if (obj.observedAddresses != null) {\n for (const value of obj.observedAddresses) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n observedAddresses: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.type = HolePunch.Type.codec().decode(reader);\n break;\n case 2:\n obj.observedAddresses.push(reader.bytes());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n HolePunch.encode = (obj) => {\n return encodeMessage(obj, HolePunch.codec());\n };\n HolePunch.decode = (buf) => {\n return decodeMessage(buf, HolePunch.codec());\n };\n})(HolePunch || (HolePunch = {}));\n//# sourceMappingURL=message.js.map","/**\n * @packageDocumentation\n *\n * This module exports various matchers that can be used to infer the type of a\n * passed multiaddr.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNS } from '@multiformats/multiaddr-matcher'\n *\n * const ma = multiaddr('/dnsaddr/example.org')\n *\n * DNS.matches(ma) // true - this is a multiaddr with a DNS address at the start\n * ```\n *\n * @example\n *\n * The default matching behaviour ignores any subsequent tuples in the multiaddr.\n * If you want stricter matching you can use `.exactMatch`:\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNS, Circuit } from '@multiformats/multiaddr-matcher'\n *\n * const ma = multiaddr('/dnsaddr/example.org/p2p/QmFoo/p2p-circuit/p2p/QmBar')\n *\n * DNS.exactMatch(ma) // false - this address has extra tuples after the DNS component\n * Circuit.matches(ma) // true\n * Circuit.exactMatch(ma) // true - the extra tuples are circuit relay related\n * ```\n */\nimport { isIPv4, isIPv6 } from '@chainsafe/is-ip';\nimport {} from '@multiformats/multiaddr';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { base64url } from 'multiformats/bases/base64';\n/**\n * Split a multiaddr into path components\n */\nconst toParts = (ma) => {\n return ma.toString().split('/').slice(1);\n};\nconst func = (fn) => {\n return {\n match: (vals) => {\n if (vals.length < 1) {\n return false;\n }\n if (fn(vals[0])) {\n return vals.slice(1);\n }\n return false;\n },\n pattern: 'fn'\n };\n};\nconst literal = (str) => {\n return {\n match: (vals) => func((val) => val === str).match(vals),\n pattern: str\n };\n};\nconst string = () => {\n return {\n match: (vals) => func((val) => typeof val === 'string').match(vals),\n pattern: '{string}'\n };\n};\nconst number = () => {\n return {\n match: (vals) => func((val) => !isNaN(parseInt(val))).match(vals),\n pattern: '{number}'\n };\n};\nconst peerId = () => {\n return {\n match: (vals) => {\n if (vals.length < 2) {\n return false;\n }\n if (vals[0] !== 'p2p' && vals[0] !== 'ipfs') {\n return false;\n }\n // Q is RSA, 1 is Ed25519 or Secp256k1\n if (vals[1].startsWith('Q') || vals[1].startsWith('1')) {\n try {\n base58btc.decode(`z${vals[1]}`);\n }\n catch (err) {\n return false;\n }\n }\n else {\n return false;\n }\n return vals.slice(2);\n },\n pattern: '/p2p/{peerid}'\n };\n};\nconst certhash = () => {\n return {\n match: (vals) => {\n if (vals.length < 2) {\n return false;\n }\n if (vals[0] !== 'certhash') {\n return false;\n }\n try {\n base64url.decode(vals[1]);\n }\n catch {\n return false;\n }\n return vals.slice(2);\n },\n pattern: '/certhash/{certhash}'\n };\n};\nconst optional = (matcher) => {\n return {\n match: (vals) => {\n const result = matcher.match(vals);\n if (result === false) {\n return vals;\n }\n return result;\n },\n pattern: `optional(${matcher.pattern})`\n };\n};\nconst or = (...matchers) => {\n return {\n match: (vals) => {\n let matches;\n for (const matcher of matchers) {\n const result = matcher.match(vals);\n // no match\n if (result === false) {\n continue;\n }\n // choose greediest matcher\n if (matches == null || result.length < matches.length) {\n matches = result;\n }\n }\n if (matches == null) {\n return false;\n }\n return matches;\n },\n pattern: `or(${matchers.map(m => m.pattern).join(', ')})`\n };\n};\nconst and = (...matchers) => {\n return {\n match: (vals) => {\n for (const matcher of matchers) {\n // pass what's left of the array\n const result = matcher.match(vals);\n // no match\n if (result === false) {\n return false;\n }\n vals = result;\n }\n return vals;\n },\n pattern: `and(${matchers.map(m => m.pattern).join(', ')})`\n };\n};\nfunction fmt(...matchers) {\n function match(ma) {\n let parts = toParts(ma);\n for (const matcher of matchers) {\n const result = matcher.match(parts);\n if (result === false) {\n return false;\n }\n parts = result;\n }\n return parts;\n }\n function matches(ma) {\n const result = match(ma);\n return result !== false;\n }\n function exactMatch(ma) {\n const result = match(ma);\n if (result === false) {\n return false;\n }\n return result.length === 0;\n }\n return {\n matches,\n exactMatch\n };\n}\n/**\n * DNS matchers\n */\nconst _DNS4 = and(literal('dns4'), string());\nconst _DNS6 = and(literal('dns6'), string());\nconst _DNSADDR = and(literal('dnsaddr'), string());\nconst _DNS = and(literal('dns'), string());\n/**\n * Matches dns4 addresses.\n *\n * Use {@link DNS DNS} instead to match any type of DNS address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNS4 } from '@multiformats/multiaddr-matcher'\n *\n * DNS4.matches(multiaddr('/dns4/example.org')) // true\n * ```\n */\nexport const DNS4 = fmt(_DNS4, optional(peerId()));\n/**\n * Matches dns6 addresses.\n *\n * Use {@link DNS DNS} instead to match any type of DNS address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNS6 } from '@multiformats/multiaddr-matcher'\n *\n * DNS6.matches(multiaddr('/dns6/example.org')) // true\n * ```\n */\nexport const DNS6 = fmt(_DNS6, optional(peerId()));\n/**\n * Matches dnsaddr addresses.\n *\n * Use {@link DNS DNS} instead to match any type of DNS address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNSADDR } from '@multiformats/multiaddr-matcher'\n *\n * DNSADDR.matches(multiaddr('/dnsaddr/example.org')) // true\n * DNSADDR.matches(multiaddr('/dnsaddr/example.org/p2p/Qmfoo')) // true\n * ```\n */\nexport const DNSADDR = fmt(_DNSADDR, optional(peerId()));\n/**\n * Matches any dns address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNS } from '@multiformats/multiaddr-matcher'\n *\n * DNS.matches(multiaddr('/dnsaddr/example.org')) // true\n * DNS.matches(multiaddr('/dns4/example.org')) // true\n * DNS.matches(multiaddr('/dns6/example.org')) // true\n * DNS.matches(multiaddr('/dns6/example.org/p2p/Qmfoo')) // true\n * ```\n */\nexport const DNS = fmt(or(_DNS, _DNSADDR, _DNS4, _DNS6), optional(peerId()));\nconst _IP4 = and(literal('ip4'), func(isIPv4));\nconst _IP6 = and(literal('ip6'), func(isIPv6));\nconst _IP = or(_IP4, _IP6);\nconst _IP_OR_DOMAIN = or(_IP, _DNS, _DNS4, _DNS6, _DNSADDR);\n/**\n * A matcher for addresses that start with IP or DNS tuples.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { IP_OR_DOMAIN } from '@multiformats/multiaddr-matcher'\n *\n * IP_OR_DOMAIN.matches(multiaddr('/ip4/123.123.123.123')) // true\n * IP_OR_DOMAIN.matches(multiaddr('/ip4/123.123.123.123/p2p/QmFoo')) // true\n * IP_OR_DOMAIN.matches(multiaddr('/dns/example.com/p2p/QmFoo')) // true\n * IP_OR_DOMAIN.matches(multiaddr('/p2p/QmFoo')) // false\n * ```\n */\nexport const IP_OR_DOMAIN = fmt(or(_IP, and(or(_DNS, _DNSADDR, _DNS4, _DNS6), optional(peerId()))));\n/**\n * Matches ip4 addresses.\n *\n * Use {@link IP IP} instead to match any ip4/ip6 address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { IP4 } from '@multiformats/multiaddr-matcher'\n *\n * const ma = multiaddr('/ip4/123.123.123.123')\n *\n * IP4.matches(ma) // true\n * ```\n */\nexport const IP4 = fmt(_IP4);\n/**\n * Matches ip6 addresses.\n *\n * Use {@link IP IP} instead to match any ip4/ip6 address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { IP6 } from '@multiformats/multiaddr-matcher'\n *\n * const ma = multiaddr('/ip6/fe80::1cc1:a3b8:322f:cf22')\n *\n * IP6.matches(ma) // true\n * ```\n */\nexport const IP6 = fmt(_IP6);\n/**\n * Matches ip4 or ip6 addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { IP } from '@multiformats/multiaddr-matcher'\n *\n * IP.matches(multiaddr('/ip4/123.123.123.123')) // true\n * IP.matches(multiaddr('/ip6/fe80::1cc1:a3b8:322f:cf22')) // true\n * ```\n */\nexport const IP = fmt(_IP);\nconst _TCP = and(_IP_OR_DOMAIN, literal('tcp'), number());\nconst _UDP = and(_IP_OR_DOMAIN, literal('udp'), number());\n/**\n * Matches TCP addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { TCP } from '@multiformats/multiaddr-matcher'\n *\n * TCP.matches(multiaddr('/ip4/123.123.123.123/tcp/1234')) // true\n * ```\n */\nexport const TCP = fmt(and(_TCP, optional(peerId())));\n/**\n * Matches UDP addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { UDP } from '@multiformats/multiaddr-matcher'\n *\n * UDP.matches(multiaddr('/ip4/123.123.123.123/udp/1234')) // true\n * ```\n */\nexport const UDP = fmt(_UDP);\nconst _QUIC = and(_UDP, literal('quic'));\nconst _QUICV1 = and(_UDP, literal('quic-v1'));\nconst QUIC_V0_OR_V1 = or(_QUIC, _QUICV1);\n/**\n * Matches QUIC addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { QUIC } from '@multiformats/multiaddr-matcher'\n *\n * QUIC.matches(multiaddr('/ip4/123.123.123.123/udp/1234/quic')) // true\n * ```\n */\nexport const QUIC = fmt(_QUIC);\n/**\n * Matches QUICv1 addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { QUICV1 } from '@multiformats/multiaddr-matcher'\n *\n * QUICV1.matches(multiaddr('/ip4/123.123.123.123/udp/1234/quic-v1')) // true\n * ```\n */\nexport const QUICV1 = fmt(_QUICV1);\nconst _WEB = or(_IP_OR_DOMAIN, _TCP, _UDP, _QUIC, _QUICV1);\nconst _WebSockets = or(and(_WEB, literal('ws'), optional(peerId())));\n/**\n * Matches WebSocket addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { WebSockets } from '@multiformats/multiaddr-matcher'\n *\n * WebSockets.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/ws')) // true\n * ```\n */\nexport const WebSockets = fmt(_WebSockets);\nconst _WebSocketsSecure = or(and(_WEB, literal('wss'), optional(peerId())), and(_WEB, literal('tls'), literal('ws'), optional(peerId())));\n/**\n * Matches secure WebSocket addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { WebSocketsSecure } from '@multiformats/multiaddr-matcher'\n *\n * WebSocketsSecure.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/wss')) // true\n * ```\n */\nexport const WebSocketsSecure = fmt(_WebSocketsSecure);\nconst _WebRTCDirect = and(_UDP, literal('webrtc-direct'), optional(certhash()), optional(certhash()), optional(peerId()));\n/**\n * Matches WebRTC-direct addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { WebRTCDirect } from '@multiformats/multiaddr-matcher'\n *\n * WebRTCDirect.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmFoo/webrtc-direct/certhash/u....')) // true\n * ```\n */\nexport const WebRTCDirect = fmt(_WebRTCDirect);\nconst _WebTransport = and(_QUICV1, literal('webtransport'), optional(certhash()), optional(certhash()), optional(peerId()));\n/**\n * Matches WebTransport addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { WebRTCDirect } from '@multiformats/multiaddr-matcher'\n *\n * WebRTCDirect.matches(multiaddr('/ip4/123.123.123.123/udp/1234/quic-v1/webtransport/certhash/u..../certhash/u..../p2p/QmFoo')) // true\n * ```\n */\nexport const WebTransport = fmt(_WebTransport);\nconst _P2P = or(_WebSockets, _WebSocketsSecure, and(_TCP, optional(peerId())), and(QUIC_V0_OR_V1, optional(peerId())), and(_IP_OR_DOMAIN, optional(peerId())), _WebRTCDirect, _WebTransport, peerId());\n/**\n * Matches peer addresses\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { P2P } from '@multiformats/multiaddr-matcher'\n *\n * P2P.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmFoo')) // true\n * ```\n */\nexport const P2P = fmt(_P2P);\nconst _Circuit = and(_P2P, literal('p2p-circuit'), peerId());\n/**\n * Matches circuit relay addresses\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { Circuit } from '@multiformats/multiaddr-matcher'\n *\n * Circuit.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmRelay/p2p-circuit/p2p/QmTarget')) // true\n * ```\n */\nexport const Circuit = fmt(_Circuit);\nconst _WebRTC = or(and(_P2P, literal('p2p-circuit'), literal('webrtc'), optional(peerId())), and(_P2P, literal('webrtc'), optional(peerId())), literal('webrtc'));\n/**\n * Matches WebRTC addresses\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { WebRTC } from '@multiformats/multiaddr-matcher'\n *\n * WebRTC.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmRelay/p2p-circuit/webrtc/p2p/QmTarget')) // true\n * ```\n */\nexport const WebRTC = fmt(_WebRTC);\nconst _HTTP = or(and(_IP_OR_DOMAIN, literal('tcp'), number(), literal('http'), optional(peerId())), and(_IP_OR_DOMAIN, literal('http'), optional(peerId())));\n/**\n * Matches HTTP addresses\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { HTTP } from '@multiformats/multiaddr-matcher'\n *\n * HTTP.matches(multiaddr('/dns/example.org/http')) // true\n * ```\n */\nexport const HTTP = fmt(_HTTP);\nconst _HTTPS = or(and(_IP_OR_DOMAIN, literal('tcp'), or(and(literal('443'), literal('http')), and(number(), literal('https'))), optional(peerId())), and(_IP_OR_DOMAIN, literal('tls'), literal('http'), optional(peerId())), and(_IP_OR_DOMAIN, literal('https'), optional(peerId())));\n/**\n * Matches HTTPS addresses\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { HTTP } from '@multiformats/multiaddr-matcher'\n *\n * HTTP.matches(multiaddr('/dns/example.org/tls/http')) // true\n * ```\n */\nexport const HTTPS = fmt(_HTTPS);\n//# sourceMappingURL=index.js.map","import { isPrivateIp } from '@libp2p/utils/private-ip';\nimport {} from '@multiformats/multiaddr';\nimport { Circuit, IP, DNS } from '@multiformats/multiaddr-matcher';\n/**\n * Returns true if the passed multiaddr is public, not relayed and we have a\n * transport that can dial it\n */\nexport function isPublicAndDialable(ma, transportManager) {\n // ignore circuit relay\n if (Circuit.matches(ma)) {\n return false;\n }\n const transport = transportManager.dialTransportForMultiaddr(ma);\n if (transport == null) {\n return false;\n }\n // dns addresses are probably public?\n if (DNS.matches(ma)) {\n return true;\n }\n // ensure we have only IPv4/IPv6 addresses\n if (!IP.matches(ma)) {\n return false;\n }\n return isPrivateIp(ma.toOptions().host) === false;\n}\n//# sourceMappingURL=utils.js.map","import { CodeError, ERR_INVALID_MESSAGE, serviceDependencies } from '@libp2p/interface';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport delay from 'delay';\nimport { pbStream } from 'it-protobuf-stream';\nimport { HolePunch } from './pb/message.js';\nimport { isPublicAndDialable } from './utils.js';\nimport { multicodec } from './index.js';\n// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#rpc-messages\nconst MAX_DCUTR_MESSAGE_SIZE = 1024 * 4;\n// ensure the dial has a high priority to jump to the head of the dial queue\nconst DCUTR_DIAL_PRIORITY = 100;\nconst defaultValues = {\n // https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/holepunch/holepuncher.go#L27\n timeout: 5000,\n // https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/holepunch/holepuncher.go#L28\n retries: 3,\n maxInboundStreams: 1,\n maxOutboundStreams: 1\n};\nexport class DefaultDCUtRService {\n started;\n timeout;\n retries;\n maxInboundStreams;\n maxOutboundStreams;\n peerStore;\n registrar;\n connectionManager;\n addressManager;\n transportManager;\n topologyId;\n log;\n constructor(components, init) {\n this.log = components.logger.forComponent('libp2p:dcutr');\n this.started = false;\n this.peerStore = components.peerStore;\n this.registrar = components.registrar;\n this.addressManager = components.addressManager;\n this.connectionManager = components.connectionManager;\n this.transportManager = components.transportManager;\n this.timeout = init.timeout ?? defaultValues.timeout;\n this.retries = init.retries ?? defaultValues.retries;\n this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams;\n this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams;\n }\n [Symbol.toStringTag] = '@libp2p/dcutr';\n [serviceDependencies] = [\n '@libp2p/identify'\n ];\n isStarted() {\n return this.started;\n }\n async start() {\n if (this.started) {\n return;\n }\n // register for notifications of when peers that support DCUtR connect\n // nb. requires the identify service to be enabled\n this.topologyId = await this.registrar.register(multicodec, {\n notifyOnTransient: true,\n onConnect: (peerId, connection) => {\n if (!connection.transient) {\n // the connection is already direct, no upgrade is required\n return;\n }\n // the inbound peer starts the connection upgrade\n if (connection.direction !== 'inbound') {\n return;\n }\n this.upgradeInbound(connection)\n .catch(err => {\n this.log.error('error during outgoing DCUtR attempt', err);\n });\n }\n });\n await this.registrar.handle(multicodec, (data) => {\n void this.handleIncomingUpgrade(data.stream, data.connection).catch(err => {\n this.log.error('error during incoming DCUtR attempt', err);\n data.stream.abort(err);\n });\n }, {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams,\n runOnTransientConnection: true\n });\n this.started = true;\n }\n async stop() {\n await this.registrar.unhandle(multicodec);\n if (this.topologyId != null) {\n this.registrar.unregister(this.topologyId);\n }\n this.started = false;\n }\n /**\n * Perform the inbound connection upgrade as B\n *\n * @see https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol\n */\n async upgradeInbound(relayedConnection) {\n // Upon observing the new connection, the inbound peer (here B) checks the\n // addresses advertised by A via identify.\n //\n // If that set includes public addresses, then A may be reachable by a direct\n // connection, in which case B attempts a unilateral connection upgrade by\n // initiating a direct connection to A.\n if (await this.attemptUnilateralConnectionUpgrade(relayedConnection)) {\n return;\n }\n let stream;\n for (let i = 0; i < this.retries; i++) {\n const options = {\n signal: AbortSignal.timeout(this.timeout)\n };\n try {\n // 1. B opens a stream to A using the /libp2p/dcutr protocol.\n stream = await relayedConnection.newStream([multicodec], {\n signal: options.signal,\n runOnTransientConnection: true\n });\n const pb = pbStream(stream, {\n maxDataLength: MAX_DCUTR_MESSAGE_SIZE\n }).pb(HolePunch);\n // 2. B sends to A a Connect message containing its observed (and\n // possibly predicted) addresses from identify and starts a timer\n // to measure RTT of the relay connection.\n this.log('B sending connect to %p', relayedConnection.remotePeer);\n const connectTimer = Date.now();\n await pb.write({\n type: HolePunch.Type.CONNECT,\n observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)\n }, options);\n this.log('B receiving connect from %p', relayedConnection.remotePeer);\n // 4. Upon receiving the Connect, B sends a Sync message\n const connect = await pb.read(options);\n if (connect.type !== HolePunch.Type.CONNECT) {\n this.log('A sent wrong message type');\n throw new CodeError('DCUtR message type was incorrect', ERR_INVALID_MESSAGE);\n }\n const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses);\n if (multiaddrs.length === 0) {\n this.log('A did not have any dialable multiaddrs');\n throw new CodeError('DCUtR connect message had no multiaddrs', ERR_INVALID_MESSAGE);\n }\n const rtt = Date.now() - connectTimer;\n this.log('A sending sync, rtt %dms', rtt);\n await pb.write({\n type: HolePunch.Type.SYNC,\n observedAddresses: []\n }, options);\n this.log('A waiting for half RTT');\n // ..and starts a timer for half the RTT measured from the time between\n // sending the initial Connect and receiving the response\n await delay(rtt / 2);\n // TODO: when we have a QUIC transport, the dial step is different - for\n // now we only have tcp support\n // https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol\n this.log('B dialing', multiaddrs);\n // Upon expiry of the timer, B dials the address to A.\n const conn = await this.connectionManager.openConnection(multiaddrs, {\n signal: options.signal,\n priority: DCUTR_DIAL_PRIORITY\n });\n this.log('DCUtR to %p succeeded to address %a, closing relayed connection', relayedConnection.remotePeer, conn.remoteAddr);\n await relayedConnection.close(options);\n break;\n }\n catch (err) {\n this.log.error('error while attempting DCUtR on attempt %d of %d', i + 1, this.retries, err);\n stream?.abort(err);\n if (i === this.retries) {\n throw err;\n }\n }\n finally {\n if (stream != null) {\n await stream.close(options);\n }\n }\n }\n }\n /**\n * This is performed when A has dialed B via a relay but A also has a public\n * address that B can dial directly\n */\n async attemptUnilateralConnectionUpgrade(relayedConnection) {\n // Upon observing the new connection, the inbound peer (here B) checks the\n // addresses advertised by A via identify.\n const peerInfo = await this.peerStore.get(relayedConnection.remotePeer);\n // If that set includes public addresses, then A may be reachable by a direct\n // connection, in which case B attempts a unilateral connection upgrade by\n // initiating a direct connection to A.\n const publicAddresses = peerInfo.addresses\n .map(address => {\n const ma = address.multiaddr;\n // ensure all multiaddrs have the peer id\n if (ma.getPeerId() == null) {\n return ma.encapsulate(`/p2p/${relayedConnection.remotePeer}`);\n }\n return ma;\n })\n .filter(ma => {\n return isPublicAndDialable(ma, this.transportManager);\n });\n if (publicAddresses.length > 0) {\n const signal = AbortSignal.timeout(this.timeout);\n try {\n this.log('attempting unilateral connection upgrade to %a', publicAddresses);\n // force-dial the multiaddr(s), otherwise `connectionManager.openConnection`\n // will return the existing relayed connection\n const connection = await this.connectionManager.openConnection(publicAddresses, {\n signal,\n force: true\n });\n if (connection.transient) {\n throw new Error('Could not open a new, non-transient, connection');\n }\n this.log('unilateral connection upgrade to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);\n await relayedConnection.close({\n signal\n });\n return true;\n }\n catch (err) {\n this.log.error('unilateral connection upgrade to %p on addresses %a failed', relayedConnection.remotePeer, publicAddresses, err);\n }\n }\n else {\n this.log('peer %p has no public addresses, not attempting unilateral connection upgrade', relayedConnection.remotePeer);\n }\n // no public addresses or failed to dial public addresses\n return false;\n }\n /**\n * Perform the connection upgrade as A\n *\n * @see https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol\n */\n async handleIncomingUpgrade(stream, relayedConnection) {\n const options = {\n signal: AbortSignal.timeout(this.timeout)\n };\n try {\n const pb = pbStream(stream, {\n maxDataLength: MAX_DCUTR_MESSAGE_SIZE\n }).pb(HolePunch);\n this.log('A receiving connect');\n // 3. Upon receiving the Connect, A responds back with a Connect message\n // containing its observed (and possibly predicted) addresses.\n const connect = await pb.read(options);\n if (connect.type !== HolePunch.Type.CONNECT) {\n this.log('B sent wrong message type');\n throw new CodeError('DCUtR message type was incorrect', ERR_INVALID_MESSAGE);\n }\n if (connect.observedAddresses.length === 0) {\n this.log('B sent no multiaddrs');\n throw new CodeError('DCUtR connect message had no multiaddrs', ERR_INVALID_MESSAGE);\n }\n const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses);\n if (multiaddrs.length === 0) {\n this.log('B had no dialable multiaddrs');\n throw new CodeError('DCUtR connect message had no dialable multiaddrs', ERR_INVALID_MESSAGE);\n }\n this.log('A sending connect');\n await pb.write({\n type: HolePunch.Type.CONNECT,\n observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)\n });\n this.log('A receiving sync');\n const sync = await pb.read(options);\n if (sync.type !== HolePunch.Type.SYNC) {\n throw new CodeError('DCUtR message type was incorrect', ERR_INVALID_MESSAGE);\n }\n // TODO: when we have a QUIC transport, the dial step is different - for\n // now we only have tcp support\n // https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol\n // Upon receiving the Sync, A immediately dials the address to B\n this.log('A dialing', multiaddrs);\n const connection = await this.connectionManager.openConnection(multiaddrs, {\n signal: options.signal,\n priority: DCUTR_DIAL_PRIORITY,\n force: true\n });\n this.log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);\n await relayedConnection.close(options);\n }\n catch (err) {\n this.log.error('incoming DCUtR from %p failed', relayedConnection.remotePeer, err);\n stream.abort(err);\n }\n finally {\n await stream.close(options);\n }\n }\n /**\n * Takes the `addr` and converts it to a Multiaddr if possible\n */\n getDialableMultiaddrs(addrs) {\n const output = [];\n for (const addr of addrs) {\n if (addr == null || addr.length === 0) {\n continue;\n }\n try {\n const ma = multiaddr(addr);\n if (!isPublicAndDialable(ma, this.transportManager)) {\n continue;\n }\n output.push(ma);\n }\n catch { }\n }\n return output;\n }\n}\n//# sourceMappingURL=dcutr.js.map","/**\n * @packageDocumentation\n *\n * Direct Connection Upgrade through Relay (DCUtR) is a protocol that allows two\n * nodes to connect to each other who would otherwise be prevented doing so due\n * to being behind NATed connections or firewalls.\n *\n * The protocol involves making a relayed connection between the two peers and\n * using the relay to synchronise connection timings so that they dial each other\n * at precisely the same moment.\n *\n * @example\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { circuitRelayTransport } from '@libp2p/circuit-relay-v2'\n * import { tcp } from '@libp2p/tcp'\n * import { identify } from '@libp2p/identify'\n * import { dcutr } from '@libp2p/dcutr'\n * import { multiaddr } from '@multiformats/multiaddr'\n *\n * const node = await createLibp2p({\n * transports: [\n * circuitRelayTransport(),\n * tcp()\n * ],\n * services: {\n * identify: identify(),\n * dcutr: dcutr()\n * }\n * })\n *\n * // QmTarget is a peer that is behind a NAT, supports TCP and has a relay\n * // reservation\n * const ma = multiaddr('/ip4/.../p2p/QmRelay/p2p-circuit/p2p/QmTarget')\n * await node.dial(ma)\n *\n * // after a while the connection should automatically get upgraded to a\n * // direct connection (e.g. non-transient)\n * while (true) {\n * const connections = node.getConnections()\n *\n * if (connections.find(conn => conn.transient === false)) {\n * console.info('have direct connection')\n * break\n * } else {\n * console.info('have relayed connection')\n *\n * // wait a few seconds to see if it's succeeded yet\n * await new Promise((resolve) => {\n * setTimeout(() => resolve(), 5000)\n * })\n * }\n * }\n * ```\n */\nimport { DefaultDCUtRService } from './dcutr.js';\n/**\n * The DCUtR protocol\n */\nexport const multicodec = '/libp2p/dcutr';\nexport function dcutr(init = {}) {\n return (components) => new DefaultDCUtRService(components, init);\n}\n//# sourceMappingURL=index.js.map","export const PROTOCOL_VERSION = 'ipfs/0.1.0'; // deprecated\nexport const MULTICODEC_IDENTIFY = '/ipfs/id/1.0.0'; // deprecated\nexport const MULTICODEC_IDENTIFY_PUSH = '/ipfs/id/push/1.0.0'; // deprecated\nexport const IDENTIFY_PROTOCOL_VERSION = '0.1.0';\nexport const MULTICODEC_IDENTIFY_PROTOCOL_NAME = 'id';\nexport const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME = 'id/push';\nexport const MULTICODEC_IDENTIFY_PROTOCOL_VERSION = '1.0.0';\nexport const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION = '1.0.0';\n//# sourceMappingURL=consts.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Identify;\n(function (Identify) {\n let _codec;\n Identify.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.protocolVersion != null) {\n w.uint32(42);\n w.string(obj.protocolVersion);\n }\n if (obj.agentVersion != null) {\n w.uint32(50);\n w.string(obj.agentVersion);\n }\n if (obj.publicKey != null) {\n w.uint32(10);\n w.bytes(obj.publicKey);\n }\n if (obj.listenAddrs != null) {\n for (const value of obj.listenAddrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (obj.observedAddr != null) {\n w.uint32(34);\n w.bytes(obj.observedAddr);\n }\n if (obj.protocols != null) {\n for (const value of obj.protocols) {\n w.uint32(26);\n w.string(value);\n }\n }\n if (obj.signedPeerRecord != null) {\n w.uint32(66);\n w.bytes(obj.signedPeerRecord);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n listenAddrs: [],\n protocols: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 5:\n obj.protocolVersion = reader.string();\n break;\n case 6:\n obj.agentVersion = reader.string();\n break;\n case 1:\n obj.publicKey = reader.bytes();\n break;\n case 2:\n obj.listenAddrs.push(reader.bytes());\n break;\n case 4:\n obj.observedAddr = reader.bytes();\n break;\n case 3:\n obj.protocols.push(reader.string());\n break;\n case 8:\n obj.signedPeerRecord = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Identify.encode = (obj) => {\n return encodeMessage(obj, Identify.codec());\n };\n Identify.decode = (buf) => {\n return decodeMessage(buf, Identify.codec());\n };\n})(Identify || (Identify = {}));\n//# sourceMappingURL=message.js.map","/* eslint-disable complexity */\nimport { CodeError, ERR_NOT_FOUND, setMaxListeners } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';\nimport { multiaddr, protocols } from '@multiformats/multiaddr';\nimport { IP_OR_DOMAIN } from '@multiformats/multiaddr-matcher';\nimport { pbStream } from 'it-protobuf-stream';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isNode, isBrowser, isWebWorker, isElectronMain, isElectronRenderer, isReactNative } from 'wherearewe';\nimport { IDENTIFY_PROTOCOL_VERSION, MULTICODEC_IDENTIFY_PROTOCOL_NAME, MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME, MULTICODEC_IDENTIFY_PROTOCOL_VERSION, MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION } from './consts.js';\nimport { Identify as IdentifyMessage } from './pb/message.js';\n// https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/identify/id.go#L52\nconst MAX_IDENTIFY_MESSAGE_SIZE = 1024 * 8;\nconst defaultValues = {\n protocolPrefix: 'ipfs',\n // https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/identify/id.go#L48\n timeout: 60000,\n maxInboundStreams: 1,\n maxOutboundStreams: 1,\n maxPushIncomingStreams: 1,\n maxPushOutgoingStreams: 1,\n maxObservedAddresses: 10,\n maxIdentifyMessageSize: 8192,\n runOnConnectionOpen: true,\n runOnTransientConnection: true\n};\nexport class Identify {\n identifyProtocolStr;\n identifyPushProtocolStr;\n host;\n started;\n timeout;\n peerId;\n peerStore;\n registrar;\n connectionManager;\n addressManager;\n maxInboundStreams;\n maxOutboundStreams;\n maxPushIncomingStreams;\n maxPushOutgoingStreams;\n maxIdentifyMessageSize;\n maxObservedAddresses;\n events;\n runOnTransientConnection;\n log;\n constructor(components, init = {}) {\n this.started = false;\n this.peerId = components.peerId;\n this.peerStore = components.peerStore;\n this.registrar = components.registrar;\n this.addressManager = components.addressManager;\n this.connectionManager = components.connectionManager;\n this.events = components.events;\n this.log = components.logger.forComponent('libp2p:identify');\n this.identifyProtocolStr = `/${init.protocolPrefix ?? defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PROTOCOL_VERSION}`;\n this.identifyPushProtocolStr = `/${init.protocolPrefix ?? defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION}`;\n this.timeout = init.timeout ?? defaultValues.timeout;\n this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams;\n this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams;\n this.maxPushIncomingStreams = init.maxPushIncomingStreams ?? defaultValues.maxPushIncomingStreams;\n this.maxPushOutgoingStreams = init.maxPushOutgoingStreams ?? defaultValues.maxPushOutgoingStreams;\n this.maxIdentifyMessageSize = init.maxIdentifyMessageSize ?? defaultValues.maxIdentifyMessageSize;\n this.maxObservedAddresses = init.maxObservedAddresses ?? defaultValues.maxObservedAddresses;\n this.runOnTransientConnection = init.runOnTransientConnection ?? defaultValues.runOnTransientConnection;\n // Store self host metadata\n this.host = {\n protocolVersion: `${init.protocolPrefix ?? defaultValues.protocolPrefix}/${IDENTIFY_PROTOCOL_VERSION}`,\n agentVersion: init.agentVersion ?? `${components.nodeInfo.name}/${components.nodeInfo.version}`\n };\n if (init.runOnConnectionOpen ?? defaultValues.runOnConnectionOpen) {\n // When a new connection happens, trigger identify\n components.events.addEventListener('connection:open', (evt) => {\n const connection = evt.detail;\n this.identify(connection).catch(err => { this.log.error('error during identify trigged by connection:open', err); });\n });\n }\n // When self peer record changes, trigger identify-push\n components.events.addEventListener('self:peer:update', (evt) => {\n void this.push().catch(err => { this.log.error(err); });\n });\n // Append user agent version to default AGENT_VERSION depending on the environment\n if (this.host.agentVersion === `${components.nodeInfo.name}/${components.nodeInfo.version}`) {\n if (isNode || isElectronMain) {\n this.host.agentVersion += ` UserAgent=${globalThis.process.version}`;\n }\n else if (isBrowser || isWebWorker || isElectronRenderer || isReactNative) {\n this.host.agentVersion += ` UserAgent=${globalThis.navigator.userAgent}`;\n }\n }\n }\n isStarted() {\n return this.started;\n }\n async start() {\n if (this.started) {\n return;\n }\n await this.peerStore.merge(this.peerId, {\n metadata: {\n AgentVersion: uint8ArrayFromString(this.host.agentVersion),\n ProtocolVersion: uint8ArrayFromString(this.host.protocolVersion)\n }\n });\n await this.registrar.handle(this.identifyProtocolStr, (data) => {\n void this._handleIdentify(data).catch(err => {\n this.log.error(err);\n });\n }, {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams,\n runOnTransientConnection: this.runOnTransientConnection\n });\n await this.registrar.handle(this.identifyPushProtocolStr, (data) => {\n void this._handlePush(data).catch(err => {\n this.log.error(err);\n });\n }, {\n maxInboundStreams: this.maxPushIncomingStreams,\n maxOutboundStreams: this.maxPushOutgoingStreams,\n runOnTransientConnection: this.runOnTransientConnection\n });\n this.started = true;\n }\n async stop() {\n await this.registrar.unhandle(this.identifyProtocolStr);\n await this.registrar.unhandle(this.identifyPushProtocolStr);\n this.started = false;\n }\n /**\n * Send an Identify Push update to the list of connections\n */\n async pushToConnections(connections) {\n const listenAddresses = this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code));\n const peerRecord = new PeerRecord({\n peerId: this.peerId,\n multiaddrs: listenAddresses\n });\n const signedPeerRecord = await RecordEnvelope.seal(peerRecord, this.peerId);\n const supportedProtocols = this.registrar.getProtocols();\n const peer = await this.peerStore.get(this.peerId);\n const agentVersion = uint8ArrayToString(peer.metadata.get('AgentVersion') ?? uint8ArrayFromString(this.host.agentVersion));\n const protocolVersion = uint8ArrayToString(peer.metadata.get('ProtocolVersion') ?? uint8ArrayFromString(this.host.protocolVersion));\n const pushes = connections.map(async (connection) => {\n let stream;\n const signal = AbortSignal.timeout(this.timeout);\n setMaxListeners(Infinity, signal);\n try {\n stream = await connection.newStream(this.identifyPushProtocolStr, {\n signal,\n runOnTransientConnection: this.runOnTransientConnection\n });\n const pb = pbStream(stream, {\n maxDataLength: this.maxIdentifyMessageSize ?? MAX_IDENTIFY_MESSAGE_SIZE\n }).pb(IdentifyMessage);\n await pb.write({\n listenAddrs: listenAddresses.map(ma => ma.bytes),\n signedPeerRecord: signedPeerRecord.marshal(),\n protocols: supportedProtocols,\n agentVersion,\n protocolVersion\n }, {\n signal\n });\n await stream.close({\n signal\n });\n }\n catch (err) {\n // Just log errors\n this.log.error('could not push identify update to peer', err);\n stream?.abort(err);\n }\n });\n await Promise.all(pushes);\n }\n /**\n * Calls `push` on all peer connections\n */\n async push() {\n // Do not try to push if we are not running\n if (!this.isStarted()) {\n return;\n }\n const connections = [];\n await Promise.all(this.connectionManager.getConnections().map(async (conn) => {\n try {\n const peer = await this.peerStore.get(conn.remotePeer);\n if (!peer.protocols.includes(this.identifyPushProtocolStr)) {\n return;\n }\n connections.push(conn);\n }\n catch (err) {\n if (err.code !== ERR_NOT_FOUND) {\n throw err;\n }\n }\n }));\n await this.pushToConnections(connections);\n }\n async _identify(connection, options = {}) {\n let stream;\n if (options.signal == null) {\n const signal = AbortSignal.timeout(this.timeout);\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n try {\n stream = await connection.newStream(this.identifyProtocolStr, {\n ...options,\n runOnTransientConnection: this.runOnTransientConnection\n });\n const pb = pbStream(stream, {\n maxDataLength: this.maxIdentifyMessageSize ?? MAX_IDENTIFY_MESSAGE_SIZE\n }).pb(IdentifyMessage);\n const message = await pb.read(options);\n await stream.close(options);\n return message;\n }\n catch (err) {\n this.log.error('error while reading identify message', err);\n stream?.abort(err);\n throw err;\n }\n }\n async identify(connection, options = {}) {\n const message = await this._identify(connection, options);\n const { publicKey, protocols, observedAddr } = message;\n if (publicKey == null) {\n throw new CodeError('public key was missing from identify message', 'ERR_MISSING_PUBLIC_KEY');\n }\n const id = await peerIdFromKeys(publicKey);\n if (!connection.remotePeer.equals(id)) {\n throw new CodeError('identified peer does not match the expected peer', 'ERR_INVALID_PEER');\n }\n if (this.peerId.equals(id)) {\n throw new CodeError('identified peer is our own peer id?', 'ERR_INVALID_PEER');\n }\n // Get the observedAddr if there is one\n const cleanObservedAddr = getCleanMultiaddr(observedAddr);\n this.log('identify completed for peer %p and protocols %o', id, protocols);\n this.log('our observed address is %a', cleanObservedAddr);\n if (cleanObservedAddr != null &&\n this.addressManager.getObservedAddrs().length < (this.maxObservedAddresses ?? Infinity)) {\n this.log('storing our observed address %a', cleanObservedAddr);\n this.addressManager.addObservedAddr(cleanObservedAddr);\n }\n return this.#consumeIdentifyMessage(connection, message);\n }\n /**\n * Sends the `Identify` response with the Signed Peer Record\n * to the requesting peer over the given `connection`\n */\n async _handleIdentify(data) {\n const { connection, stream } = data;\n const signal = AbortSignal.timeout(this.timeout);\n setMaxListeners(Infinity, signal);\n try {\n const publicKey = this.peerId.publicKey ?? new Uint8Array(0);\n const peerData = await this.peerStore.get(this.peerId);\n const multiaddrs = this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code));\n let signedPeerRecord = peerData.peerRecordEnvelope;\n if (multiaddrs.length > 0 && signedPeerRecord == null) {\n const peerRecord = new PeerRecord({\n peerId: this.peerId,\n multiaddrs\n });\n const envelope = await RecordEnvelope.seal(peerRecord, this.peerId);\n signedPeerRecord = envelope.marshal().subarray();\n }\n let observedAddr = connection.remoteAddr.bytes;\n if (!IP_OR_DOMAIN.matches(connection.remoteAddr)) {\n observedAddr = undefined;\n }\n const pb = pbStream(stream).pb(IdentifyMessage);\n await pb.write({\n protocolVersion: this.host.protocolVersion,\n agentVersion: this.host.agentVersion,\n publicKey,\n listenAddrs: multiaddrs.map(addr => addr.bytes),\n signedPeerRecord,\n observedAddr,\n protocols: peerData.protocols\n }, {\n signal\n });\n await stream.close({\n signal\n });\n }\n catch (err) {\n this.log.error('could not respond to identify request', err);\n stream.abort(err);\n }\n }\n /**\n * Reads the Identify Push message from the given `connection`\n */\n async _handlePush(data) {\n const { connection, stream } = data;\n try {\n if (this.peerId.equals(connection.remotePeer)) {\n throw new Error('received push from ourselves?');\n }\n const options = {\n signal: AbortSignal.timeout(this.timeout)\n };\n const pb = pbStream(stream, {\n maxDataLength: this.maxIdentifyMessageSize ?? MAX_IDENTIFY_MESSAGE_SIZE\n }).pb(IdentifyMessage);\n const message = await pb.read(options);\n await stream.close(options);\n await this.#consumeIdentifyMessage(connection, message);\n }\n catch (err) {\n this.log.error('received invalid message', err);\n stream.abort(err);\n return;\n }\n this.log('handled push from %p', connection.remotePeer);\n }\n async #consumeIdentifyMessage(connection, message) {\n this.log('received identify from %p', connection.remotePeer);\n if (message == null) {\n throw new CodeError('message was null or undefined', 'ERR_INVALID_MESSAGE');\n }\n const peer = {};\n if (message.listenAddrs.length > 0) {\n peer.addresses = message.listenAddrs.map(buf => ({\n isCertified: false,\n multiaddr: multiaddr(buf)\n }));\n }\n if (message.protocols.length > 0) {\n peer.protocols = message.protocols;\n }\n if (message.publicKey != null) {\n peer.publicKey = message.publicKey;\n const peerId = await peerIdFromKeys(message.publicKey);\n if (!peerId.equals(connection.remotePeer)) {\n throw new CodeError('public key did not match remote PeerId', 'ERR_INVALID_PUBLIC_KEY');\n }\n }\n let output;\n // if the peer record has been sent, prefer the addresses in the record as they are signed by the remote peer\n if (message.signedPeerRecord != null) {\n this.log('received signedPeerRecord from %p', connection.remotePeer);\n let peerRecordEnvelope = message.signedPeerRecord;\n const envelope = await RecordEnvelope.openAndCertify(peerRecordEnvelope, PeerRecord.DOMAIN);\n let peerRecord = PeerRecord.createFromProtobuf(envelope.payload);\n // Verify peerId\n if (!peerRecord.peerId.equals(envelope.peerId)) {\n throw new CodeError('signing key does not match PeerId in the PeerRecord', 'ERR_INVALID_SIGNING_KEY');\n }\n // Make sure remote peer is the one sending the record\n if (!connection.remotePeer.equals(peerRecord.peerId)) {\n throw new CodeError('signing key does not match remote PeerId', 'ERR_INVALID_PEER_RECORD_KEY');\n }\n let existingPeer;\n try {\n existingPeer = await this.peerStore.get(peerRecord.peerId);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n if (existingPeer != null) {\n // don't lose any existing metadata\n peer.metadata = existingPeer.metadata;\n // if we have previously received a signed record for this peer, compare it to the incoming one\n if (existingPeer.peerRecordEnvelope != null) {\n const storedEnvelope = await RecordEnvelope.createFromProtobuf(existingPeer.peerRecordEnvelope);\n const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);\n // ensure seq is greater than, or equal to, the last received\n if (storedRecord.seqNumber >= peerRecord.seqNumber) {\n this.log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);\n peerRecord = storedRecord;\n peerRecordEnvelope = existingPeer.peerRecordEnvelope;\n }\n }\n }\n // store the signed record for next time\n peer.peerRecordEnvelope = peerRecordEnvelope;\n // override the stored addresses with the signed multiaddrs\n peer.addresses = peerRecord.multiaddrs.map(multiaddr => ({\n isCertified: true,\n multiaddr\n }));\n output = {\n seq: peerRecord.seqNumber,\n addresses: peerRecord.multiaddrs\n };\n }\n else {\n this.log('%p did not send a signed peer record', connection.remotePeer);\n }\n this.log('patching %p with', connection.remotePeer, peer);\n await this.peerStore.patch(connection.remotePeer, peer);\n if (message.agentVersion != null || message.protocolVersion != null) {\n const metadata = {};\n if (message.agentVersion != null) {\n metadata.AgentVersion = uint8ArrayFromString(message.agentVersion);\n }\n if (message.protocolVersion != null) {\n metadata.ProtocolVersion = uint8ArrayFromString(message.protocolVersion);\n }\n this.log('merging %p metadata', connection.remotePeer, metadata);\n await this.peerStore.merge(connection.remotePeer, {\n metadata\n });\n }\n const result = {\n peerId: connection.remotePeer,\n protocolVersion: message.protocolVersion,\n agentVersion: message.agentVersion,\n publicKey: message.publicKey,\n listenAddrs: message.listenAddrs.map(buf => multiaddr(buf)),\n observedAddr: message.observedAddr == null ? undefined : multiaddr(message.observedAddr),\n protocols: message.protocols,\n signedPeerRecord: output,\n connection\n };\n this.events.safeDispatchEvent('peer:identify', { detail: result });\n return result;\n }\n}\n/**\n * Takes the `addr` and converts it to a Multiaddr if possible\n */\nfunction getCleanMultiaddr(addr) {\n if (addr != null && addr.length > 0) {\n try {\n return multiaddr(addr);\n }\n catch {\n }\n }\n}\n//# sourceMappingURL=identify.js.map","/**\n * @packageDocumentation\n *\n * Use the `identify` function to add support for the [Identify protocol](https://github.com/libp2p/specs/blob/master/identify/README.md) to libp2p.\n *\n * @example\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { identify } from '@libp2p/identify'\n *\n * const node = await createLibp2p({\n * // ...other options\n * services: {\n * identify: identify()\n * }\n * })\n * ```\n */\nimport { MULTICODEC_IDENTIFY, MULTICODEC_IDENTIFY_PUSH } from './consts.js';\nimport { Identify as IdentifyClass } from './identify.js';\n/**\n * The protocols the Identify service supports\n */\nexport const multicodecs = {\n IDENTIFY: MULTICODEC_IDENTIFY,\n IDENTIFY_PUSH: MULTICODEC_IDENTIFY_PUSH\n};\nexport function identify(init = {}) {\n return (components) => new IdentifyClass(components, init);\n}\n//# sourceMappingURL=index.js.map","// MaxRecordAge specifies the maximum time that any node will hold onto a record\n// from the time its received. This does not apply to any other forms of validity that\n// the record may contain.\n// For example, a record may contain an ipns entry with an EOL saying its valid\n// until the year 2020 (a great time in the future). For that record to stick around\n// it must be rebroadcasted more frequently than once every 'MaxRecordAge'\nexport const second = 1000;\nexport const minute = 60 * second;\nexport const hour = 60 * minute;\nexport const MAX_RECORD_AGE = 36 * hour;\nexport const PROTOCOL = '/ipfs/kad/1.0.0';\nexport const RECORD_KEY_PREFIX = '/dht/record';\nexport const PROVIDER_KEY_PREFIX = '/dht/provider';\nexport const PROVIDERS_LRU_CACHE_SIZE = 256;\nexport const PROVIDERS_VALIDITY = 24 * hour;\nexport const PROVIDERS_CLEANUP_INTERVAL = hour;\nexport const READ_MESSAGE_TIMEOUT = 10 * second;\n// The number of records that will be retrieved on a call to getMany()\nexport const GET_MANY_RECORD_COUNT = 16;\n// K is the maximum number of requests to perform before returning failure\nexport const K = 20;\n// Alpha is the concurrency for asynchronous requests\nexport const ALPHA = 3;\n// How often we look for our closest DHT neighbours\nexport const QUERY_SELF_INTERVAL = 5 * minute;\n// How often we look for the first set of our closest DHT neighbours\nexport const QUERY_SELF_INITIAL_INTERVAL = second;\n// How long to look for our closest DHT neighbours for\nexport const QUERY_SELF_TIMEOUT = 5 * second;\n// How often we try to find new peers\nexport const TABLE_REFRESH_INTERVAL = 5 * minute;\n// How how long to look for new peers for\nexport const TABLE_REFRESH_QUERY_TIMEOUT = 30 * second;\n// When a timeout is not specified, run a query for this long\nexport const DEFAULT_QUERY_TIMEOUT = 180 * second;\n//# sourceMappingURL=constants.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { decodeMessage, encodeMessage, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var Record;\n(function (Record) {\n let _codec;\n Record.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.key != null && obj.key.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.key);\n }\n if ((obj.value != null && obj.value.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.value);\n }\n if ((obj.timeReceived != null && obj.timeReceived !== '')) {\n w.uint32(42);\n w.string(obj.timeReceived);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {\n key: uint8ArrayAlloc(0),\n value: uint8ArrayAlloc(0),\n timeReceived: ''\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.key = reader.bytes();\n break;\n }\n case 2: {\n obj.value = reader.bytes();\n break;\n }\n case 5: {\n obj.timeReceived = reader.string();\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Record.encode = (obj) => {\n return encodeMessage(obj, Record.codec());\n };\n Record.decode = (buf, opts) => {\n return decodeMessage(buf, Record.codec(), opts);\n };\n})(Record || (Record = {}));\n//# sourceMappingURL=record.js.map","/**\n * Convert a JavaScript date into an `RFC3339Nano` formatted\n * string\n */\nexport function toRFC3339(time) {\n const year = time.getUTCFullYear();\n const month = String(time.getUTCMonth() + 1).padStart(2, '0');\n const day = String(time.getUTCDate()).padStart(2, '0');\n const hour = String(time.getUTCHours()).padStart(2, '0');\n const minute = String(time.getUTCMinutes()).padStart(2, '0');\n const seconds = String(time.getUTCSeconds()).padStart(2, '0');\n const milliseconds = time.getUTCMilliseconds();\n const nanoseconds = String(milliseconds * 1000 * 1000).padStart(9, '0');\n return `${year}-${month}-${day}T${hour}:${minute}:${seconds}.${nanoseconds}Z`;\n}\n/**\n * Parses a date string formatted as `RFC3339Nano` into a\n * JavaScript Date object\n */\nexport function parseRFC3339(time) {\n const rfc3339Matcher = new RegExp(\n // 2006-01-02T\n '(\\\\d{4})-(\\\\d{2})-(\\\\d{2})T' +\n // 15:04:05\n '(\\\\d{2}):(\\\\d{2}):(\\\\d{2})' +\n // .999999999Z\n '\\\\.(\\\\d+)Z');\n const m = String(time).trim().match(rfc3339Matcher);\n if (m == null) {\n throw new Error('Invalid format');\n }\n const year = parseInt(m[1], 10);\n const month = parseInt(m[2], 10) - 1;\n const date = parseInt(m[3], 10);\n const hour = parseInt(m[4], 10);\n const minute = parseInt(m[5], 10);\n const second = parseInt(m[6], 10);\n const millisecond = parseInt(m[7].slice(0, -6), 10);\n return new Date(Date.UTC(year, month, date, hour, minute, second, millisecond));\n}\n//# sourceMappingURL=utils.js.map","/**\n * @packageDocumentation\n *\n * This is an implementation of the [routing record format](https://github.com/libp2p/specs/blob/b9efe152c29f93f7a87931c14d78ae11e7924d5a/kad-dht/README.md?plain=1#L408-L425) used by libp2p to store data in the datastore passed to the libp2p constructor.\n *\n * @example Deserialization\n *\n * ```TypeScript\n * import { Libp2pRecord } from '@libp2p/record'\n *\n * const buf = Uint8Array.from([0, 1, 2, 3])\n * const record = Libp2pRecord.deserialize(buf)\n * ```\n *\n * @example Serialization\n *\n * ```TypeScript\n * import { Libp2pRecord } from '@libp2p/record'\n *\n * const key = Uint8Array.from([0, 1, 2, 3])\n * const value = Uint8Array.from([0, 1, 2, 3])\n * const timeReceived = new Date()\n *\n * const record = new Libp2pRecord(key, value, timeReceived)\n * const buf = record.serialize()\n * ```\n */\nimport { Record } from './record.js';\nimport * as utils from './utils.js';\nexport class Libp2pRecord {\n key;\n value;\n timeReceived;\n constructor(key, value, timeReceived) {\n if (!(key instanceof Uint8Array)) {\n throw new Error('key must be a Uint8Array');\n }\n if (!(value instanceof Uint8Array)) {\n throw new Error('value must be a Uint8Array');\n }\n this.key = key;\n this.value = value;\n this.timeReceived = timeReceived;\n }\n serialize() {\n return Record.encode(this.prepareSerialize());\n }\n /**\n * Return the object format ready to be given to the protobuf library.\n */\n prepareSerialize() {\n return {\n key: this.key,\n value: this.value,\n timeReceived: utils.toRFC3339(this.timeReceived)\n };\n }\n /**\n * Decode a protobuf encoded record\n */\n static deserialize(raw) {\n const rec = Record.decode(raw);\n return new Libp2pRecord(rec.key, rec.value, new Date(rec.timeReceived));\n }\n /**\n * Create a record from the raw object returned from the protobuf library\n */\n static fromDeserialized(obj) {\n const recvtime = utils.parseRFC3339(obj.timeReceived);\n if (obj.key == null) {\n throw new Error('key missing from deserialized object');\n }\n if (obj.value == null) {\n throw new Error('value missing from deserialized object');\n }\n const rec = new Libp2pRecord(obj.key, obj.value, recvtime);\n return rec;\n }\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { decodeMessage, encodeMessage, enumeration, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var Record;\n(function (Record) {\n let _codec;\n Record.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.key != null) {\n w.uint32(10);\n w.bytes(obj.key);\n }\n if (obj.value != null) {\n w.uint32(18);\n w.bytes(obj.value);\n }\n if (obj.author != null) {\n w.uint32(26);\n w.bytes(obj.author);\n }\n if (obj.signature != null) {\n w.uint32(34);\n w.bytes(obj.signature);\n }\n if (obj.timeReceived != null) {\n w.uint32(42);\n w.string(obj.timeReceived);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.key = reader.bytes();\n break;\n }\n case 2: {\n obj.value = reader.bytes();\n break;\n }\n case 3: {\n obj.author = reader.bytes();\n break;\n }\n case 4: {\n obj.signature = reader.bytes();\n break;\n }\n case 5: {\n obj.timeReceived = reader.string();\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Record.encode = (obj) => {\n return encodeMessage(obj, Record.codec());\n };\n Record.decode = (buf) => {\n return decodeMessage(buf, Record.codec());\n };\n})(Record || (Record = {}));\nexport var MessageType;\n(function (MessageType) {\n MessageType[\"PUT_VALUE\"] = \"PUT_VALUE\";\n MessageType[\"GET_VALUE\"] = \"GET_VALUE\";\n MessageType[\"ADD_PROVIDER\"] = \"ADD_PROVIDER\";\n MessageType[\"GET_PROVIDERS\"] = \"GET_PROVIDERS\";\n MessageType[\"FIND_NODE\"] = \"FIND_NODE\";\n MessageType[\"PING\"] = \"PING\";\n})(MessageType || (MessageType = {}));\nvar __MessageTypeValues;\n(function (__MessageTypeValues) {\n __MessageTypeValues[__MessageTypeValues[\"PUT_VALUE\"] = 0] = \"PUT_VALUE\";\n __MessageTypeValues[__MessageTypeValues[\"GET_VALUE\"] = 1] = \"GET_VALUE\";\n __MessageTypeValues[__MessageTypeValues[\"ADD_PROVIDER\"] = 2] = \"ADD_PROVIDER\";\n __MessageTypeValues[__MessageTypeValues[\"GET_PROVIDERS\"] = 3] = \"GET_PROVIDERS\";\n __MessageTypeValues[__MessageTypeValues[\"FIND_NODE\"] = 4] = \"FIND_NODE\";\n __MessageTypeValues[__MessageTypeValues[\"PING\"] = 5] = \"PING\";\n})(__MessageTypeValues || (__MessageTypeValues = {}));\n(function (MessageType) {\n MessageType.codec = () => {\n return enumeration(__MessageTypeValues);\n };\n})(MessageType || (MessageType = {}));\nexport var ConnectionType;\n(function (ConnectionType) {\n ConnectionType[\"NOT_CONNECTED\"] = \"NOT_CONNECTED\";\n ConnectionType[\"CONNECTED\"] = \"CONNECTED\";\n ConnectionType[\"CAN_CONNECT\"] = \"CAN_CONNECT\";\n ConnectionType[\"CANNOT_CONNECT\"] = \"CANNOT_CONNECT\";\n})(ConnectionType || (ConnectionType = {}));\nvar __ConnectionTypeValues;\n(function (__ConnectionTypeValues) {\n __ConnectionTypeValues[__ConnectionTypeValues[\"NOT_CONNECTED\"] = 0] = \"NOT_CONNECTED\";\n __ConnectionTypeValues[__ConnectionTypeValues[\"CONNECTED\"] = 1] = \"CONNECTED\";\n __ConnectionTypeValues[__ConnectionTypeValues[\"CAN_CONNECT\"] = 2] = \"CAN_CONNECT\";\n __ConnectionTypeValues[__ConnectionTypeValues[\"CANNOT_CONNECT\"] = 3] = \"CANNOT_CONNECT\";\n})(__ConnectionTypeValues || (__ConnectionTypeValues = {}));\n(function (ConnectionType) {\n ConnectionType.codec = () => {\n return enumeration(__ConnectionTypeValues);\n };\n})(ConnectionType || (ConnectionType = {}));\nexport var PeerInfo;\n(function (PeerInfo) {\n let _codec;\n PeerInfo.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.id != null && obj.id.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.id);\n }\n if (obj.multiaddrs != null) {\n for (const value of obj.multiaddrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (obj.connection != null) {\n w.uint32(24);\n ConnectionType.codec().encode(obj.connection, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n id: uint8ArrayAlloc(0),\n multiaddrs: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.id = reader.bytes();\n break;\n }\n case 2: {\n obj.multiaddrs.push(reader.bytes());\n break;\n }\n case 3: {\n obj.connection = ConnectionType.codec().decode(reader);\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PeerInfo.encode = (obj) => {\n return encodeMessage(obj, PeerInfo.codec());\n };\n PeerInfo.decode = (buf) => {\n return decodeMessage(buf, PeerInfo.codec());\n };\n})(PeerInfo || (PeerInfo = {}));\nexport var Message;\n(function (Message) {\n let _codec;\n Message.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null && __MessageTypeValues[obj.type] !== 0) {\n w.uint32(8);\n MessageType.codec().encode(obj.type, w);\n }\n if (obj.clusterLevel != null) {\n w.uint32(80);\n w.int32(obj.clusterLevel);\n }\n if (obj.key != null) {\n w.uint32(18);\n w.bytes(obj.key);\n }\n if (obj.record != null) {\n w.uint32(26);\n w.bytes(obj.record);\n }\n if (obj.closer != null) {\n for (const value of obj.closer) {\n w.uint32(66);\n PeerInfo.codec().encode(value, w);\n }\n }\n if (obj.providers != null) {\n for (const value of obj.providers) {\n w.uint32(74);\n PeerInfo.codec().encode(value, w);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n type: MessageType.PUT_VALUE,\n closer: [],\n providers: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.type = MessageType.codec().decode(reader);\n break;\n }\n case 10: {\n obj.clusterLevel = reader.int32();\n break;\n }\n case 2: {\n obj.key = reader.bytes();\n break;\n }\n case 3: {\n obj.record = reader.bytes();\n break;\n }\n case 8: {\n obj.closer.push(PeerInfo.codec().decode(reader, reader.uint32()));\n break;\n }\n case 9: {\n obj.providers.push(PeerInfo.codec().decode(reader, reader.uint32()));\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Message.encode = (obj) => {\n return encodeMessage(obj, Message.codec());\n };\n Message.decode = (buf) => {\n return decodeMessage(buf, Message.codec());\n };\n})(Message || (Message = {}));\n//# sourceMappingURL=dht.js.map","import { CustomEvent } from '@libp2p/interface';\nexport function sendQueryEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'SEND_QUERY',\n type: 0,\n messageName: fields.type,\n messageType: fields.type\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:send-query', { detail: event }));\n return event;\n}\nexport function peerResponseEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'PEER_RESPONSE',\n type: 1,\n messageName: fields.messageType,\n closer: fields.closer ?? [],\n providers: fields.providers ?? []\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:peer-response', { detail: event }));\n return event;\n}\nexport function finalPeerEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'FINAL_PEER',\n type: 2\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:final-peer', { detail: event }));\n return event;\n}\nexport function queryErrorEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'QUERY_ERROR',\n type: 3\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:query-error', { detail: event }));\n return event;\n}\nexport function providerEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'PROVIDER',\n type: 4\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:provider', { detail: event }));\n return event;\n}\nexport function valueEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'VALUE',\n type: 5\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:value', { detail: event }));\n return event;\n}\nexport function addPeerEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'ADD_PEER',\n type: 6\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:add-peer', { detail: event }));\n return event;\n}\nexport function dialPeerEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'DIAL_PEER',\n type: 7\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:dial-peer', { detail: event }));\n return event;\n}\n//# sourceMappingURL=events.js.map","import { CodeError } from '@libp2p/interface';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\n/**\n * Select the best record out of the given records\n */\nexport function bestRecord(selectors, k, records) {\n if (records.length === 0) {\n const errMsg = 'No records given';\n throw new CodeError(errMsg, 'ERR_NO_RECORDS_RECEIVED');\n }\n const kStr = uint8ArrayToString(k);\n const parts = kStr.split('/');\n if (parts.length < 3) {\n const errMsg = 'Record key does not have a selector function';\n throw new CodeError(errMsg, 'ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY');\n }\n const selector = selectors[parts[1].toString()];\n if (selector == null) {\n const errMsg = `No selector function configured for key type \"${parts[1]}\"`;\n throw new CodeError(errMsg, 'ERR_UNRECOGNIZED_KEY_PREFIX');\n }\n if (records.length === 1) {\n return 0;\n }\n return selector(k, records);\n}\n/**\n * Best record selector, for public key records.\n * Simply returns the first record, as all valid public key\n * records are equal\n */\nfunction publickKey(k, records) {\n return 0;\n}\nexport const selectors = {\n pk: publickKey\n};\n//# sourceMappingURL=selectors.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\n/**\n * Checks a record and ensures it is still valid.\n * It runs the needed validators.\n * If verification fails the returned Promise will reject with the error.\n */\nexport async function verifyRecord(validators, record) {\n const key = record.key;\n const keyString = uint8ArrayToString(key);\n const parts = keyString.split('/');\n if (parts.length < 3) {\n // No validator available\n return;\n }\n const validator = validators[parts[1].toString()];\n if (validator == null) {\n const errMsg = `No validator available for key type \"${parts[1]}\"`;\n throw new CodeError(errMsg, 'ERR_INVALID_RECORD_KEY_TYPE');\n }\n await validator(key, record.value);\n}\n/**\n * Validator for public key records.\n * Verifies that the passed in record value is the PublicKey\n * that matches the passed in key.\n * If validation fails the returned Promise will reject with the error.\n *\n * @param {Uint8Array} key - A valid key is of the form `'/pk/'`\n * @param {Uint8Array} publicKey - The public key to validate against (protobuf encoded).\n */\nconst validatePublicKeyRecord = async (key, publicKey) => {\n if (!(key instanceof Uint8Array)) {\n throw new CodeError('\"key\" must be a Uint8Array', 'ERR_INVALID_RECORD_KEY_NOT_BUFFER');\n }\n if (key.byteLength < 5) {\n throw new CodeError('invalid public key record', 'ERR_INVALID_RECORD_KEY_TOO_SHORT');\n }\n const prefix = uint8ArrayToString(key.subarray(0, 4));\n if (prefix !== '/pk/') {\n throw new CodeError('key was not prefixed with /pk/', 'ERR_INVALID_RECORD_KEY_BAD_PREFIX');\n }\n const keyhash = key.slice(4);\n const publicKeyHash = await sha256.digest(publicKey);\n if (!uint8ArrayEquals(keyhash, publicKeyHash.bytes)) {\n throw new CodeError('public key does not match passed in key', 'ERR_INVALID_RECORD_HASH_MISMATCH');\n }\n};\nexport const validators = {\n pk: validatePublicKeyRecord\n};\n//# sourceMappingURL=validators.js.map","import { peerIdFromBytes } from '@libp2p/peer-id';\nimport { Libp2pRecord } from '@libp2p/record';\nimport { isPrivateIp } from '@libp2p/utils/private-ip';\nimport { Key } from 'interface-datastore/key';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { RECORD_KEY_PREFIX } from './constants.js';\n// const IPNS_PREFIX = uint8ArrayFromString('/ipns/')\nconst PK_PREFIX = uint8ArrayFromString('/pk/');\nexport function removePrivateAddressesMapper(peer) {\n return {\n ...peer,\n multiaddrs: peer.multiaddrs.filter(multiaddr => {\n const [[type, addr]] = multiaddr.stringTuples();\n // treat /dns, /dns4, and /dns6 addrs as public\n if (type === 53 || type === 54 || type === 55) {\n // localhost can be a dns address but it's private\n if (addr === 'localhost') {\n return false;\n }\n return true;\n }\n if (type !== 4 && type !== 6) {\n return false;\n }\n if (addr == null) {\n return false;\n }\n const isPrivate = isPrivateIp(addr);\n if (isPrivate == null) {\n // not an ip address\n return true;\n }\n return !isPrivate;\n })\n };\n}\nexport function removePublicAddressesMapper(peer) {\n return {\n ...peer,\n multiaddrs: peer.multiaddrs.filter(multiaddr => {\n const [[type, addr]] = multiaddr.stringTuples();\n if (addr === 'localhost') {\n return true;\n }\n if (type !== 4 && type !== 6) {\n return false;\n }\n if (addr == null) {\n return false;\n }\n const isPrivate = isPrivateIp(addr);\n if (isPrivate == null) {\n // not an ip address\n return false;\n }\n return isPrivate;\n })\n };\n}\nexport function passthroughMapper(info) {\n return info;\n}\n/**\n * Creates a DHT ID by hashing a given Uint8Array\n */\nexport async function convertBuffer(buf) {\n const multihash = await sha256.digest(buf);\n return multihash.digest;\n}\n/**\n * Creates a DHT ID by hashing a Peer ID\n */\nexport async function convertPeerId(peerId) {\n return convertBuffer(peerId.toBytes());\n}\n/**\n * Convert a Uint8Array to their SHA2-256 hash\n */\nexport function bufferToKey(buf) {\n return new Key('/' + uint8ArrayToString(buf, 'base32'), false);\n}\n/**\n * Convert a Uint8Array to their SHA2-256 hash\n */\nexport function bufferToRecordKey(buf) {\n return new Key(`${RECORD_KEY_PREFIX}/${uint8ArrayToString(buf, 'base32')}`, false);\n}\n/**\n * Generate the key for a public key.\n */\nexport function keyForPublicKey(peer) {\n return uint8ArrayConcat([\n PK_PREFIX,\n peer.toBytes()\n ]);\n}\nexport function isPublicKeyKey(key) {\n return uint8ArrayToString(key.subarray(0, 4)) === '/pk/';\n}\nexport function isIPNSKey(key) {\n return uint8ArrayToString(key.subarray(0, 4)) === '/ipns/';\n}\nexport function fromPublicKeyKey(key) {\n return peerIdFromBytes(key.subarray(4));\n}\n/**\n * Create a new put record, encodes and signs it if enabled\n */\nexport function createPutRecord(key, value) {\n const timeReceived = new Date();\n const rec = new Libp2pRecord(key, value, timeReceived);\n return rec.serialize();\n}\nexport function debounce(callback, wait = 100) {\n let timeout;\n return () => {\n clearTimeout(timeout);\n timeout = setTimeout(() => { callback(); }, wait);\n };\n}\n// see https://github.com/multiformats/multiaddr/blob/master/protocols.csv\nconst P2P_CIRCUIT_CODE = 290;\nconst DNS4_CODE = 54;\nconst DNS6_CODE = 55;\nconst DNSADDR_CODE = 56;\nconst IP4_CODE = 4;\nconst IP6_CODE = 41;\nexport function multiaddrIsPublic(multiaddr) {\n const tuples = multiaddr.stringTuples();\n // p2p-circuit should not enable server mode\n for (const tuple of tuples) {\n if (tuple[0] === P2P_CIRCUIT_CODE) {\n return false;\n }\n }\n // dns4 or dns6 or dnsaddr\n if (tuples[0][0] === DNS4_CODE || tuples[0][0] === DNS6_CODE || tuples[0][0] === DNSADDR_CODE) {\n return true;\n }\n // ip4 or ip6\n if (tuples[0][0] === IP4_CODE || tuples[0][0] === IP6_CODE) {\n const result = isPrivateIp(`${tuples[0][1]}`);\n const isPublic = result == null || !result;\n return isPublic;\n }\n return false;\n}\n//# sourceMappingURL=utils.js.map","import { CodeError } from '@libp2p/interface';\nimport { Libp2pRecord } from '@libp2p/record';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { ALPHA } from '../constants.js';\nimport { MessageType } from '../message/dht.js';\nimport { valueEvent, queryErrorEvent } from '../query/events.js';\nimport { bestRecord } from '../record/selectors.js';\nimport { verifyRecord } from '../record/validators.js';\nimport { createPutRecord, bufferToRecordKey } from '../utils.js';\nexport class ContentFetching {\n log;\n components;\n validators;\n selectors;\n peerRouting;\n queryManager;\n network;\n constructor(components, init) {\n const { validators, selectors, peerRouting, queryManager, network, logPrefix } = init;\n this.components = components;\n this.log = components.logger.forComponent(`${logPrefix}:content-fetching`);\n this.validators = validators;\n this.selectors = selectors;\n this.peerRouting = peerRouting;\n this.queryManager = queryManager;\n this.network = network;\n }\n /**\n * Attempt to retrieve the value for the given key from\n * the local datastore\n */\n async getLocal(key) {\n this.log('getLocal %b', key);\n const dsKey = bufferToRecordKey(key);\n this.log('fetching record for key %k', dsKey);\n const raw = await this.components.datastore.get(dsKey);\n this.log('found %k in local datastore', dsKey);\n const rec = Libp2pRecord.deserialize(raw);\n await verifyRecord(this.validators, rec);\n return rec;\n }\n /**\n * Send the best record found to any peers that have an out of date record\n */\n async *sendCorrectionRecord(key, vals, best, options = {}) {\n this.log('sendCorrection for %b', key);\n const fixupRec = createPutRecord(key, best);\n for (const { value, from } of vals) {\n // no need to do anything\n if (uint8ArrayEquals(value, best)) {\n this.log('record was ok');\n continue;\n }\n // correct ourself\n if (this.components.peerId.equals(from)) {\n try {\n const dsKey = bufferToRecordKey(key);\n this.log(`Storing corrected record for key ${dsKey.toString()}`);\n await this.components.datastore.put(dsKey, fixupRec.subarray());\n }\n catch (err) {\n this.log.error('Failed error correcting self', err);\n }\n continue;\n }\n // send correction\n let sentCorrection = false;\n const request = {\n type: MessageType.PUT_VALUE,\n key,\n record: fixupRec\n };\n for await (const event of this.network.sendRequest(from, request, options)) {\n if (event.name === 'PEER_RESPONSE' && (event.record != null) && uint8ArrayEquals(event.record.value, Libp2pRecord.deserialize(fixupRec).value)) {\n sentCorrection = true;\n }\n yield event;\n }\n if (!sentCorrection) {\n yield queryErrorEvent({ from, error: new CodeError('value not put correctly', 'ERR_PUT_VALUE_INVALID') }, options);\n }\n this.log.error('Failed error correcting entry');\n }\n }\n /**\n * Store the given key/value pair in the DHT\n */\n async *put(key, value, options = {}) {\n this.log('put key %b value %b', key, value);\n // create record in the dht format\n const record = createPutRecord(key, value);\n // store the record locally\n const dsKey = bufferToRecordKey(key);\n this.log(`storing record for key ${dsKey.toString()}`);\n await this.components.datastore.put(dsKey, record.subarray());\n // put record to the closest peers\n yield* pipe(this.peerRouting.getClosestPeers(key, { signal: options.signal }), (source) => map(source, (event) => {\n return async () => {\n if (event.name !== 'FINAL_PEER') {\n return [event];\n }\n const events = [];\n const msg = {\n type: MessageType.PUT_VALUE,\n key,\n record\n };\n this.log('send put to %p', event.peer.id);\n for await (const putEvent of this.network.sendRequest(event.peer.id, msg, options)) {\n events.push(putEvent);\n if (putEvent.name !== 'PEER_RESPONSE') {\n continue;\n }\n if (!(putEvent.record != null && uint8ArrayEquals(putEvent.record.value, Libp2pRecord.deserialize(record).value))) {\n events.push(queryErrorEvent({ from: event.peer.id, error: new CodeError('value not put correctly', 'ERR_PUT_VALUE_INVALID') }, options));\n }\n }\n return events;\n };\n }), (source) => parallel(source, {\n ordered: false,\n concurrency: ALPHA\n }), async function* (source) {\n for await (const events of source) {\n yield* events;\n }\n });\n }\n /**\n * Get the value to the given key\n */\n async *get(key, options = {}) {\n this.log('get %b', key);\n const vals = [];\n for await (const event of this.getMany(key, options)) {\n if (event.name === 'VALUE') {\n vals.push(event);\n }\n yield event;\n }\n if (vals.length === 0) {\n return;\n }\n const records = vals.map((v) => v.value);\n let i = 0;\n try {\n i = bestRecord(this.selectors, key, records);\n }\n catch (err) {\n // Assume the first record if no selector available\n if (err.code !== 'ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY') {\n throw err;\n }\n }\n const best = records[i];\n this.log('GetValue %b %b', key, best);\n if (best == null) {\n throw new CodeError('best value was not found', 'ERR_NOT_FOUND');\n }\n yield* this.sendCorrectionRecord(key, vals, best, options);\n yield vals[i];\n }\n /**\n * Get the `n` values to the given key without sorting\n */\n async *getMany(key, options = {}) {\n this.log('getMany values for %b', key);\n try {\n const localRec = await this.getLocal(key);\n yield valueEvent({\n value: localRec.value,\n from: this.components.peerId\n }, options);\n }\n catch (err) {\n this.log('error getting local value for %b', key, err);\n }\n const self = this; // eslint-disable-line @typescript-eslint/no-this-alias\n const getValueQuery = async function* ({ peer, signal }) {\n for await (const event of self.peerRouting.getValueOrPeers(peer, key, { signal })) {\n yield event;\n if (event.name === 'PEER_RESPONSE' && (event.record != null)) {\n yield valueEvent({ from: peer, value: event.record.value }, options);\n }\n }\n };\n // we have peers, lets send the actual query to them\n yield* this.queryManager.run(key, getValueQuery, options);\n }\n}\n//# sourceMappingURL=index.js.map","import { peerIdFromBytes } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nexport function toPbPeerInfo(peer, connection) {\n const output = {\n id: peer.id.toBytes(),\n multiaddrs: (peer.multiaddrs ?? []).map((m) => m.bytes),\n connection\n };\n return output;\n}\nexport function fromPbPeerInfo(peer) {\n if (peer.id == null) {\n throw new Error('Invalid peer in message');\n }\n return {\n id: peerIdFromBytes(peer.id),\n multiaddrs: (peer.multiaddrs ?? []).map((a) => multiaddr(a))\n };\n}\n//# sourceMappingURL=utils.js.map","import { PeerSet } from '@libp2p/peer-collections';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { ALPHA } from '../constants.js';\nimport { MessageType } from '../message/dht.js';\nimport { toPbPeerInfo } from '../message/utils.js';\nimport { queryErrorEvent, peerResponseEvent, providerEvent } from '../query/events.js';\nexport class ContentRouting {\n log;\n components;\n network;\n peerRouting;\n queryManager;\n routingTable;\n providers;\n constructor(components, init) {\n const { network, peerRouting, queryManager, routingTable, providers, logPrefix } = init;\n this.components = components;\n this.log = components.logger.forComponent(`${logPrefix}:content-routing`);\n this.network = network;\n this.peerRouting = peerRouting;\n this.queryManager = queryManager;\n this.routingTable = routingTable;\n this.providers = providers;\n }\n /**\n * Announce to the network that we can provide the value for a given key and\n * are contactable on the given multiaddrs\n */\n async *provide(key, multiaddrs, options = {}) {\n this.log('provide %s', key);\n const target = key.multihash.bytes;\n // Add peer as provider\n await this.providers.addProvider(key, this.components.peerId);\n const msg = {\n type: MessageType.ADD_PROVIDER,\n key: target,\n providers: [\n toPbPeerInfo({\n id: this.components.peerId,\n multiaddrs\n })\n ]\n };\n let sent = 0;\n const maybeNotifyPeer = (event) => {\n return async () => {\n if (event.name !== 'FINAL_PEER') {\n return [event];\n }\n const events = [];\n this.log('putProvider %s to %p', key, event.peer.id);\n try {\n this.log('sending provider record for %s to %p', key, event.peer.id);\n for await (const sendEvent of this.network.sendMessage(event.peer.id, msg, options)) {\n if (sendEvent.name === 'PEER_RESPONSE') {\n this.log('sent provider record for %s to %p', key, event.peer.id);\n sent++;\n }\n events.push(sendEvent);\n }\n }\n catch (err) {\n this.log.error('error sending provide record to peer %p', event.peer.id, err);\n events.push(queryErrorEvent({ from: event.peer.id, error: err }, options));\n }\n return events;\n };\n };\n // Notify closest peers\n yield* pipe(this.peerRouting.getClosestPeers(target, options), (source) => map(source, (event) => maybeNotifyPeer(event)), (source) => parallel(source, {\n ordered: false,\n concurrency: ALPHA\n }), async function* (source) {\n for await (const events of source) {\n yield* events;\n }\n });\n this.log('sent provider records to %d peers', sent);\n }\n /**\n * Search the dht for up to `K` providers of the given CID.\n */\n async *findProviders(key, options) {\n const toFind = this.routingTable.kBucketSize;\n let found = 0;\n const target = key.multihash.bytes;\n const self = this; // eslint-disable-line @typescript-eslint/no-this-alias\n this.log('findProviders %c', key);\n const provs = await this.providers.getProviders(key);\n // yield values if we have some, also slice because maybe we got lucky and already have too many?\n if (provs.length > 0) {\n const providers = [];\n for (const peerId of provs.slice(0, toFind)) {\n try {\n const peer = await this.components.peerStore.get(peerId);\n providers.push({\n id: peerId,\n multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)\n });\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n this.log('no peer store entry for %p', peerId);\n }\n }\n yield peerResponseEvent({ from: this.components.peerId, messageType: MessageType.GET_PROVIDERS, providers }, options);\n yield providerEvent({ from: this.components.peerId, providers }, options);\n found += providers.length;\n if (found >= toFind) {\n return;\n }\n }\n /**\n * The query function to use on this particular disjoint path\n */\n const findProvidersQuery = async function* ({ peer, signal }) {\n const request = {\n type: MessageType.GET_PROVIDERS,\n key: target\n };\n yield* self.network.sendRequest(peer, request, {\n ...options,\n signal\n });\n };\n const providers = new PeerSet(provs);\n for await (const event of this.queryManager.run(target, findProvidersQuery, options)) {\n yield event;\n if (event.name === 'PEER_RESPONSE') {\n this.log('Found %d provider entries for %c and %d closer peers', event.providers.length, key, event.closer.length);\n const newProviders = [];\n for (const peer of event.providers) {\n if (providers.has(peer.id)) {\n continue;\n }\n providers.add(peer.id);\n newProviders.push(peer);\n }\n if (newProviders.length > 0) {\n yield providerEvent({ from: event.from, providers: newProviders }, options);\n found += newProviders.length;\n if (found >= toFind) {\n return;\n }\n }\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * Implements exponential moving average. Ported from `moving-average`.\n *\n * @see https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average\n * @see https://www.npmjs.com/package/moving-average\n */\nexport class MovingAverage {\n movingAverage;\n variance;\n deviation;\n forecast;\n timespan;\n previousTime;\n constructor(timespan) {\n this.timespan = timespan;\n this.movingAverage = 0;\n this.variance = 0;\n this.deviation = 0;\n this.forecast = 0;\n }\n alpha(t, pt) {\n return 1 - (Math.exp(-(t - pt) / this.timespan));\n }\n push(value, time = Date.now()) {\n if (this.previousTime != null) {\n // calculate moving average\n const a = this.alpha(time, this.previousTime);\n const diff = value - this.movingAverage;\n const incr = a * diff;\n this.movingAverage = a * value + (1 - a) * this.movingAverage;\n // calculate variance & deviation\n this.variance = (1 - a) * (this.variance + diff * incr);\n this.deviation = Math.sqrt(this.variance);\n // calculate forecast\n this.forecast = this.movingAverage + a * diff;\n }\n else {\n this.movingAverage = value;\n }\n this.previousTime = time;\n }\n}\n//# sourceMappingURL=moving-average.js.map","import { setMaxListeners } from '@libp2p/interface';\nimport { anySignal } from 'any-signal';\nimport { MovingAverage } from './moving-average.js';\nexport const DEFAULT_TIMEOUT_MULTIPLIER = 1.2;\nexport const DEFAULT_FAILURE_MULTIPLIER = 2;\nexport const DEFAULT_MIN_TIMEOUT = 2000;\nexport class AdaptiveTimeout {\n success;\n failure;\n next;\n metric;\n timeoutMultiplier;\n failureMultiplier;\n minTimeout;\n constructor(init = {}) {\n this.success = new MovingAverage(init.interval ?? 5000);\n this.failure = new MovingAverage(init.interval ?? 5000);\n this.next = new MovingAverage(init.interval ?? 5000);\n this.failureMultiplier = init.failureMultiplier ?? DEFAULT_FAILURE_MULTIPLIER;\n this.timeoutMultiplier = init.timeoutMultiplier ?? DEFAULT_TIMEOUT_MULTIPLIER;\n this.minTimeout = init.minTimeout ?? DEFAULT_MIN_TIMEOUT;\n if (init.metricName != null) {\n this.metric = init.metrics?.registerMetricGroup(init.metricName);\n }\n }\n getTimeoutSignal(options = {}) {\n // calculate timeout for individual peers based on moving average of\n // previous successful requests\n const timeout = Math.max(Math.round(this.next.movingAverage * (options.timeoutFactor ?? this.timeoutMultiplier)), this.minTimeout);\n const sendTimeout = AbortSignal.timeout(timeout);\n const timeoutSignal = anySignal([options.signal, sendTimeout]);\n setMaxListeners(Infinity, timeoutSignal, sendTimeout);\n timeoutSignal.start = Date.now();\n timeoutSignal.timeout = timeout;\n return timeoutSignal;\n }\n cleanUp(signal) {\n const time = Date.now() - signal.start;\n if (signal.aborted) {\n this.failure.push(time);\n this.next.push(time * this.failureMultiplier);\n this.metric?.update({\n failureMovingAverage: this.failure.movingAverage,\n failureDeviation: this.failure.deviation,\n failureForecast: this.failure.forecast,\n failureVariance: this.failure.variance,\n failure: time\n });\n }\n else {\n this.success.push(time);\n this.next.push(time);\n this.metric?.update({\n successMovingAverage: this.success.movingAverage,\n successDeviation: this.success.deviation,\n successForecast: this.success.forecast,\n successVariance: this.success.variance,\n success: time\n });\n }\n }\n}\n//# sourceMappingURL=adaptive-timeout.js.map","import { TypedEventEmitter } from '@libp2p/interface';\nimport { Libp2pRecord } from '@libp2p/record';\nimport { AdaptiveTimeout } from '@libp2p/utils/adaptive-timeout';\nimport { pbStream } from 'it-protobuf-stream';\nimport { CodeError } from 'protons-runtime';\nimport { Message } from './message/dht.js';\nimport { fromPbPeerInfo } from './message/utils.js';\nimport { dialPeerEvent, sendQueryEvent, peerResponseEvent, queryErrorEvent } from './query/events.js';\n/**\n * Handle network operations for the dht\n */\nexport class Network extends TypedEventEmitter {\n log;\n protocol;\n running;\n components;\n timeout;\n /**\n * Create a new network\n */\n constructor(components, init) {\n super();\n const { protocol } = init;\n this.components = components;\n this.log = components.logger.forComponent(`${init.logPrefix}:network`);\n this.running = false;\n this.protocol = protocol;\n this.timeout = new AdaptiveTimeout({\n ...(init.timeout ?? {}),\n metrics: components.metrics,\n metricName: `${init.logPrefix.replaceAll(':', '_')}_network_message_send_times_milliseconds`\n });\n }\n /**\n * Start the network\n */\n async start() {\n if (this.running) {\n return;\n }\n this.running = true;\n }\n /**\n * Stop all network activity\n */\n async stop() {\n this.running = false;\n }\n /**\n * Is the network online?\n */\n isStarted() {\n return this.running;\n }\n /**\n * Send a request and record RTT for latency measurements\n */\n async *sendRequest(to, msg, options = {}) {\n if (!this.running) {\n return;\n }\n const type = msg.type;\n if (type == null) {\n throw new CodeError('Message type was missing', 'ERR_INVALID_PARAMETERS');\n }\n this.log('sending %s to %p', msg.type, to);\n yield dialPeerEvent({ peer: to }, options);\n yield sendQueryEvent({ to, type }, options);\n let stream;\n const signal = this.timeout.getTimeoutSignal(options);\n options = {\n ...options,\n signal\n };\n try {\n const connection = await this.components.connectionManager.openConnection(to, options);\n stream = await connection.newStream(this.protocol, options);\n const response = await this._writeReadMessage(stream, msg, options);\n stream.close(options)\n .catch(err => {\n this.log.error('error closing stream to %p', to, err);\n stream?.abort(err);\n });\n yield peerResponseEvent({\n from: to,\n messageType: response.type,\n closer: response.closer.map(fromPbPeerInfo),\n providers: response.providers.map(fromPbPeerInfo),\n record: response.record == null ? undefined : Libp2pRecord.deserialize(response.record)\n }, options);\n }\n catch (err) {\n stream?.abort(err);\n this.log.error('could not send %s to %p', msg.type, to, err);\n yield queryErrorEvent({ from: to, error: err }, options);\n }\n finally {\n this.timeout.cleanUp(signal);\n }\n }\n /**\n * Sends a message without expecting an answer\n */\n async *sendMessage(to, msg, options = {}) {\n if (!this.running) {\n return;\n }\n const type = msg.type;\n if (type == null) {\n throw new CodeError('Message type was missing', 'ERR_INVALID_PARAMETERS');\n }\n this.log('sending %s to %p', msg.type, to);\n yield dialPeerEvent({ peer: to }, options);\n yield sendQueryEvent({ to, type }, options);\n let stream;\n const signal = this.timeout.getTimeoutSignal(options);\n options = {\n ...options,\n signal\n };\n try {\n const connection = await this.components.connectionManager.openConnection(to, options);\n stream = await connection.newStream(this.protocol, options);\n await this._writeMessage(stream, msg, options);\n stream.close(options)\n .catch(err => {\n this.log.error('error closing stream to %p', to, err);\n stream?.abort(err);\n });\n yield peerResponseEvent({ from: to, messageType: type }, options);\n }\n catch (err) {\n stream?.abort(err);\n yield queryErrorEvent({ from: to, error: err }, options);\n }\n finally {\n this.timeout.cleanUp(signal);\n }\n }\n /**\n * Write a message to the given stream\n */\n async _writeMessage(stream, msg, options) {\n const pb = pbStream(stream);\n await pb.write(msg, Message, options);\n await pb.unwrap().close(options);\n }\n /**\n * Write a message and read its response.\n * If no response is received after the specified timeout\n * this will error out.\n */\n async _writeReadMessage(stream, msg, options) {\n const pb = pbStream(stream);\n await pb.write(msg, Message, options);\n const message = await pb.read(Message, options);\n await pb.unwrap().close(options);\n // tell any listeners about new peers we've seen\n message.closer.forEach(peerData => {\n this.safeDispatchEvent('peer', {\n detail: fromPbPeerInfo(peerData)\n });\n });\n message.providers.forEach(peerData => {\n this.safeDispatchEvent('peer', {\n detail: fromPbPeerInfo(peerData)\n });\n });\n return message;\n }\n}\n//# sourceMappingURL=network.js.map","/**\n * Compares two Uint8Arrays representing two xor distances. Returns `-1` if `a`\n * is a lower distance, `1` if `b` is a lower distance or `0` if the distances\n * are equal.\n */\nexport function xorCompare(a, b) {\n if (a.byteLength !== b.byteLength) {\n throw new Error('Inputs should have the same length');\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] === b[i]) {\n continue;\n }\n return a[i] < b[i] ? -1 : 1;\n }\n return 0;\n}\n//# sourceMappingURL=xor-compare.js.map","import { xor as uint8ArrayXor } from 'uint8arrays/xor';\nimport { xorCompare as uint8ArrayXorCompare } from 'uint8arrays/xor-compare';\nimport { convertPeerId } from '../utils.js';\n/**\n * Maintains a list of peerIds sorted by distance from a DHT key.\n */\nexport class PeerDistanceList {\n /**\n * The DHT key from which distance is calculated\n */\n originDhtKey;\n /**\n * The maximum size of the list\n */\n capacity;\n peerDistances;\n constructor(originDhtKey, capacity) {\n this.originDhtKey = originDhtKey;\n this.capacity = capacity;\n this.peerDistances = [];\n }\n /**\n * The length of the list\n */\n get length() {\n return this.peerDistances.length;\n }\n /**\n * The peers in the list, in order of distance from the origin key\n */\n get peers() {\n return this.peerDistances.map(pd => pd.peer);\n }\n /**\n * Add a peerId to the list.\n */\n async add(peer) {\n const dhtKey = await convertPeerId(peer.id);\n this.addWitKadId(peer, dhtKey);\n }\n /**\n * Add a peerId to the list.\n */\n addWitKadId(peer, kadId) {\n if (this.peerDistances.find(pd => pd.peer.id.equals(peer.id)) != null) {\n return;\n }\n const el = {\n peer,\n distance: uint8ArrayXor(this.originDhtKey, kadId)\n };\n this.peerDistances.push(el);\n this.peerDistances.sort((a, b) => uint8ArrayXorCompare(a.distance, b.distance));\n this.peerDistances = this.peerDistances.slice(0, this.capacity);\n }\n /**\n * Indicates whether any of the peerIds passed as a parameter are closer\n * to the origin key than the furthest peerId in the PeerDistanceList.\n */\n async isCloser(peerId) {\n if (this.length === 0) {\n return true;\n }\n const dhtKey = await convertPeerId(peerId);\n const dhtKeyXor = uint8ArrayXor(dhtKey, this.originDhtKey);\n const furthestDistance = this.peerDistances[this.peerDistances.length - 1].distance;\n return uint8ArrayXorCompare(dhtKeyXor, furthestDistance) === -1;\n }\n /**\n * Indicates whether any of the peerIds passed as a parameter are closer\n * to the origin key than the furthest peerId in the PeerDistanceList.\n */\n async anyCloser(peerIds) {\n if (peerIds.length === 0) {\n return false;\n }\n return Promise.any(peerIds.map(async (peerId) => this.isCloser(peerId)));\n }\n}\n//# sourceMappingURL=peer-distance-list.js.map","import { keys } from '@libp2p/crypto';\nimport { CodeError } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { Libp2pRecord } from '@libp2p/record';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { MessageType } from '../message/dht.js';\nimport { PeerDistanceList } from '../peer-list/peer-distance-list.js';\nimport { queryErrorEvent, finalPeerEvent, valueEvent } from '../query/events.js';\nimport { verifyRecord } from '../record/validators.js';\nimport * as utils from '../utils.js';\nexport class PeerRouting {\n log;\n routingTable;\n network;\n validators;\n queryManager;\n peerStore;\n peerId;\n constructor(components, init) {\n const { routingTable, network, validators, queryManager, logPrefix } = init;\n this.routingTable = routingTable;\n this.network = network;\n this.validators = validators;\n this.queryManager = queryManager;\n this.peerStore = components.peerStore;\n this.peerId = components.peerId;\n this.log = components.logger.forComponent(`${logPrefix}:peer-routing`);\n }\n /**\n * Look if we are connected to a peer with the given id.\n * Returns its id and addresses, if found, otherwise `undefined`.\n */\n async findPeerLocal(peer) {\n let peerData;\n const p = await this.routingTable.find(peer);\n if (p != null) {\n this.log('findPeerLocal found %p in routing table', peer);\n try {\n peerData = await this.peerStore.get(p);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n }\n if (peerData == null) {\n try {\n peerData = await this.peerStore.get(peer);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n }\n if (peerData != null) {\n this.log('findPeerLocal found %p in peer store', peer);\n return {\n id: peerData.id,\n multiaddrs: peerData.addresses.map((address) => address.multiaddr)\n };\n }\n return undefined;\n }\n /**\n * Get a value via rpc call for the given parameters\n */\n async *_getValueSingle(peer, key, options = {}) {\n const msg = {\n type: MessageType.GET_VALUE,\n key\n };\n yield* this.network.sendRequest(peer, msg, options);\n }\n /**\n * Get the public key directly from a node\n */\n async *getPublicKeyFromNode(peer, options = {}) {\n const pkKey = utils.keyForPublicKey(peer);\n for await (const event of this._getValueSingle(peer, pkKey, options)) {\n yield event;\n if (event.name === 'PEER_RESPONSE' && event.record != null) {\n const recPeer = await peerIdFromKeys(keys.marshalPublicKey({ bytes: event.record.value }));\n // compare hashes of the pub key\n if (!recPeer.equals(peer)) {\n throw new CodeError('public key does not match id', 'ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID');\n }\n if (recPeer.publicKey == null) {\n throw new CodeError('public key missing', 'ERR_PUBLIC_KEY_MISSING');\n }\n yield valueEvent({ from: peer, value: recPeer.publicKey }, options);\n }\n }\n throw new CodeError(`Node not responding with its public key: ${peer.toString()}`, 'ERR_INVALID_RECORD');\n }\n /**\n * Search for a peer with the given ID\n */\n async *findPeer(id, options = {}) {\n this.log('findPeer %p', id);\n if (options.useCache !== false) {\n // Try to find locally\n const pi = await this.findPeerLocal(id);\n // already got it\n if (pi != null) {\n this.log('found local');\n yield finalPeerEvent({\n from: this.peerId,\n peer: pi\n }, options);\n return;\n }\n }\n let foundPeer = false;\n if (options.useNetwork !== false) {\n const self = this; // eslint-disable-line @typescript-eslint/no-this-alias\n const findPeerQuery = async function* ({ peer, signal }) {\n const request = {\n type: MessageType.FIND_NODE,\n key: id.toBytes()\n };\n for await (const event of self.network.sendRequest(peer, request, {\n ...options,\n signal\n })) {\n yield event;\n if (event.name === 'PEER_RESPONSE') {\n const match = event.closer.find((p) => p.id.equals(id));\n // found the peer\n if (match != null) {\n yield finalPeerEvent({ from: event.from, peer: match }, options);\n }\n }\n }\n };\n for await (const event of this.queryManager.run(id.toBytes(), findPeerQuery, options)) {\n if (event.name === 'FINAL_PEER') {\n foundPeer = true;\n }\n yield event;\n }\n }\n if (!foundPeer) {\n yield queryErrorEvent({ from: this.peerId, error: new CodeError('Not found', 'ERR_NOT_FOUND') }, options);\n }\n }\n /**\n * Kademlia 'FIND_NODE' operation on a key, which could be the bytes from\n * a multihash or a peer ID\n */\n async *getClosestPeers(key, options = {}) {\n this.log('getClosestPeers to %b', key);\n const kadId = await utils.convertBuffer(key);\n const tablePeers = this.routingTable.closestPeers(kadId);\n const self = this; // eslint-disable-line @typescript-eslint/no-this-alias\n const peers = new PeerDistanceList(kadId, this.routingTable.kBucketSize);\n await Promise.all(tablePeers.map(async (peer) => { await peers.add({ id: peer, multiaddrs: [] }); }));\n const getCloserPeersQuery = async function* ({ peer, signal }) {\n self.log('closerPeersSingle %s from %p', uint8ArrayToString(key, 'base32'), peer);\n const request = {\n type: MessageType.FIND_NODE,\n key\n };\n yield* self.network.sendRequest(peer, request, {\n ...options,\n signal\n });\n };\n for await (const event of this.queryManager.run(key, getCloserPeersQuery, options)) {\n if (event.name === 'PEER_RESPONSE') {\n await Promise.all(event.closer.map(async (peerData) => {\n await peers.add(peerData);\n }));\n }\n yield event;\n }\n this.log('found %d peers close to %b', peers.length, key);\n for (const peer of peers.peers) {\n yield finalPeerEvent({\n from: this.peerId,\n peer\n }, options);\n }\n }\n /**\n * Query a particular peer for the value for the given key.\n * It will either return the value or a list of closer peers.\n *\n * Note: The peerStore is updated with new addresses found for the given peer.\n */\n async *getValueOrPeers(peer, key, options = {}) {\n for await (const event of this._getValueSingle(peer, key, options)) {\n if (event.name === 'PEER_RESPONSE') {\n if (event.record != null) {\n // We have a record\n try {\n await this._verifyRecordOnline(event.record);\n }\n catch (err) {\n const errMsg = 'invalid record received, discarded';\n this.log(errMsg);\n yield queryErrorEvent({ from: event.from, error: new CodeError(errMsg, 'ERR_INVALID_RECORD') }, options);\n continue;\n }\n }\n }\n yield event;\n }\n }\n /**\n * Verify a record, fetching missing public keys from the network.\n * Throws an error if the record is invalid.\n */\n async _verifyRecordOnline(record) {\n if (record.timeReceived == null) {\n throw new CodeError('invalid record received', 'ERR_INVALID_RECORD');\n }\n await verifyRecord(this.validators, new Libp2pRecord(record.key, record.value, record.timeReceived));\n }\n /**\n * Get the nearest peers to the given query, but if closer\n * than self\n */\n async getCloserPeersOffline(key, closerThan) {\n const id = await utils.convertBuffer(key);\n const ids = this.routingTable.closestPeers(id);\n const output = [];\n for (const peerId of ids) {\n if (peerId.equals(closerThan)) {\n continue;\n }\n try {\n const peer = await this.peerStore.get(peerId);\n output.push({\n id: peerId,\n multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)\n });\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n }\n if (output.length > 0) {\n this.log('getCloserPeersOffline found %d peer(s) closer to %b than %p', output.length, key, closerThan);\n }\n else {\n this.log('getCloserPeersOffline could not find peer closer to %b than %p with %d peers in the routing table', key, closerThan, this.routingTable.size);\n }\n return output;\n }\n}\n//# sourceMappingURL=index.js.map","module.exports = function (max) {\n\n if (!max) throw Error('hashlru must have a max value, of type number, greater than 0')\n\n var size = 0, cache = Object.create(null), _cache = Object.create(null)\n\n function update (key, value) {\n cache[key] = value\n size ++\n if(size >= max) {\n size = 0\n _cache = cache\n cache = Object.create(null)\n }\n }\n\n return {\n has: function (key) {\n return cache[key] !== undefined || _cache[key] !== undefined\n },\n remove: function (key) {\n if(cache[key] !== undefined)\n cache[key] = undefined\n if(_cache[key] !== undefined)\n _cache[key] = undefined\n },\n get: function (key) {\n var v = cache[key]\n if(v !== undefined) return v\n if((v = _cache[key]) !== undefined) {\n update(key, v)\n return v\n }\n },\n set: function (key, value) {\n if(cache[key] !== undefined) cache[key] = value\n else update(key, value)\n },\n clear: function () {\n cache = Object.create(null)\n _cache = Object.create(null)\n }\n }\n}\n\n\n\n\n\n\n\n","import { peerIdFromString } from '@libp2p/peer-id';\nimport cache from 'hashlru';\nimport { Key } from 'interface-datastore/key';\nimport Queue from 'p-queue';\nimport * as varint from 'uint8-varint';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { PROVIDERS_CLEANUP_INTERVAL, PROVIDERS_VALIDITY, PROVIDERS_LRU_CACHE_SIZE, PROVIDER_KEY_PREFIX } from './constants.js';\n/**\n * This class manages known providers.\n * A provider is a peer that we know to have the content for a given CID.\n *\n * Every `cleanupInterval` providers are checked if they\n * are still valid, i.e. younger than the `provideValidity`.\n * If they are not, they are deleted.\n *\n * To ensure the list survives restarts of the daemon,\n * providers are stored in the datastore, but to ensure\n * access is fast there is an LRU cache in front of that.\n */\nexport class Providers {\n log;\n datastore;\n cache;\n cleanupInterval;\n provideValidity;\n syncQueue;\n started;\n cleaner;\n constructor(components, init = {}) {\n const { cacheSize, cleanupInterval, provideValidity } = init;\n this.log = components.logger.forComponent('libp2p:kad-dht:providers');\n this.datastore = components.datastore;\n this.cleanupInterval = cleanupInterval ?? PROVIDERS_CLEANUP_INTERVAL;\n this.provideValidity = provideValidity ?? PROVIDERS_VALIDITY;\n this.cache = cache(cacheSize ?? PROVIDERS_LRU_CACHE_SIZE);\n this.syncQueue = new Queue({ concurrency: 1 });\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n /**\n * Start the provider cleanup service\n */\n async start() {\n if (this.started) {\n return;\n }\n this.started = true;\n this.cleaner = setInterval(() => {\n this._cleanup().catch(err => {\n this.log.error(err);\n });\n }, this.cleanupInterval);\n }\n /**\n * Release any resources.\n */\n async stop() {\n this.started = false;\n if (this.cleaner != null) {\n clearInterval(this.cleaner);\n this.cleaner = undefined;\n }\n }\n /**\n * Check all providers if they are still valid, and if not delete them\n */\n async _cleanup() {\n await this.syncQueue.add(async () => {\n const start = Date.now();\n let count = 0;\n let deleteCount = 0;\n const deleted = new Map();\n const batch = this.datastore.batch();\n // Get all provider entries from the datastore\n const query = this.datastore.query({ prefix: PROVIDER_KEY_PREFIX });\n for await (const entry of query) {\n try {\n // Add a delete to the batch for each expired entry\n const { cid, peerId } = parseProviderKey(entry.key);\n const time = readTime(entry.value).getTime();\n const now = Date.now();\n const delta = now - time;\n const expired = delta > this.provideValidity;\n this.log('comparing: %d - %d = %d > %d %s', now, time, delta, this.provideValidity, expired ? '(expired)' : '');\n if (expired) {\n deleteCount++;\n batch.delete(entry.key);\n const peers = deleted.get(cid) ?? new Set();\n peers.add(peerId);\n deleted.set(cid, peers);\n }\n count++;\n }\n catch (err) {\n this.log.error(err.message);\n }\n }\n // Commit the deletes to the datastore\n if (deleted.size > 0) {\n this.log('deleting %d / %d entries', deleteCount, count);\n await batch.commit();\n }\n else {\n this.log('nothing to delete');\n }\n // Clear expired entries from the cache\n for (const [cid, peers] of deleted) {\n const key = makeProviderKey(cid);\n const provs = this.cache.get(key);\n if (provs != null) {\n for (const peerId of peers) {\n provs.delete(peerId);\n }\n if (provs.size === 0) {\n this.cache.remove(key);\n }\n else {\n this.cache.set(key, provs);\n }\n }\n }\n this.log('Cleanup successful (%dms)', Date.now() - start);\n });\n }\n /**\n * Get the currently known provider peer ids for a given CID\n */\n async _getProvidersMap(cid) {\n const cacheKey = makeProviderKey(cid);\n let provs = this.cache.get(cacheKey);\n if (provs == null) {\n provs = await loadProviders(this.datastore, cid);\n this.cache.set(cacheKey, provs);\n }\n return provs;\n }\n /**\n * Add a new provider for the given CID\n */\n async addProvider(cid, provider) {\n await this.syncQueue.add(async () => {\n this.log('%p provides %s', provider, cid);\n const provs = await this._getProvidersMap(cid);\n this.log('loaded %s provs', provs.size);\n const now = new Date();\n provs.set(provider.toString(), now);\n const dsKey = makeProviderKey(cid);\n this.cache.set(dsKey, provs);\n await writeProviderEntry(this.datastore, cid, provider, now);\n });\n }\n /**\n * Get a list of providers for the given CID\n */\n async getProviders(cid) {\n return this.syncQueue.add(async () => {\n this.log('get providers for %s', cid);\n const provs = await this._getProvidersMap(cid);\n return [...provs.keys()].map(peerIdStr => {\n return peerIdFromString(peerIdStr);\n });\n }, {\n // no timeout is specified for this queue so it will not\n // throw, but this is required to get the right return\n // type since p-queue@7.3.4\n throwOnTimeout: true\n });\n }\n}\n/**\n * Encode the given key its matching datastore key\n */\nfunction makeProviderKey(cid) {\n const cidStr = typeof cid === 'string' ? cid : uint8ArrayToString(cid.multihash.bytes, 'base32');\n return `${PROVIDER_KEY_PREFIX}/${cidStr}`;\n}\n/**\n * Write a provider into the given store\n */\nasync function writeProviderEntry(store, cid, peer, time) {\n const dsKey = [\n makeProviderKey(cid),\n '/',\n peer.toString()\n ].join('');\n const key = new Key(dsKey);\n const buffer = varint.encode(time.getTime());\n await store.put(key, buffer);\n}\n/**\n * Parse the CID and provider peer id from the key\n */\nfunction parseProviderKey(key) {\n const parts = key.toString().split('/');\n if (parts.length !== 5) {\n throw new Error(`incorrectly formatted provider entry key in datastore: ${key.toString()}`);\n }\n return {\n cid: parts[3],\n peerId: parts[4]\n };\n}\n/**\n * Load providers for the given CID from the store\n */\nasync function loadProviders(store, cid) {\n const providers = new Map();\n const query = store.query({ prefix: makeProviderKey(cid) });\n for await (const entry of query) {\n const { peerId } = parseProviderKey(entry.key);\n providers.set(peerId, readTime(entry.value));\n }\n return providers;\n}\nfunction readTime(buf) {\n return new Date(varint.decode(buf));\n}\n//# sourceMappingURL=providers.js.map","import { CodeError, setMaxListeners } from '@libp2p/interface';\nimport { Queue } from '@libp2p/utils/queue';\nimport { anySignal } from 'any-signal';\nimport { xor as uint8ArrayXor } from 'uint8arrays/xor';\nimport { xorCompare as uint8ArrayXorCompare } from 'uint8arrays/xor-compare';\nimport { convertPeerId, convertBuffer } from '../utils.js';\nimport { queryErrorEvent } from './events.js';\n/**\n * Walks a path through the DHT, calling the passed query function for\n * every peer encountered that we have not seen before\n */\nexport async function* queryPath(options) {\n const { key, startingPeer, ourPeerId, signal, query, alpha, pathIndex, numPaths, queryFuncTimeout, log, peersSeen, connectionManager } = options;\n // Only ALPHA node/value lookups are allowed at any given time for each process\n // https://github.com/libp2p/specs/tree/master/kad-dht#alpha-concurrency-parameter-%CE%B1\n const queue = new Queue({\n concurrency: alpha,\n sort: (a, b) => uint8ArrayXorCompare(a.options.distance, b.options.distance)\n });\n // perform lookups on kadId, not the actual value\n const kadId = await convertBuffer(key);\n /**\n * Adds the passed peer to the query queue if it's not us and no\n * other path has passed through this peer\n */\n function queryPeer(peer, peerKadId) {\n if (peer == null) {\n return;\n }\n peersSeen.add(peer);\n const peerXor = uint8ArrayXor(peerKadId, kadId);\n queue.add(async () => {\n const signals = [signal];\n if (queryFuncTimeout != null) {\n signals.push(AbortSignal.timeout(queryFuncTimeout));\n }\n const compoundSignal = anySignal(signals);\n // this signal can get listened to a lot\n setMaxListeners(Infinity, compoundSignal);\n try {\n for await (const event of query({\n key,\n peer,\n signal: compoundSignal,\n pathIndex,\n numPaths\n })) {\n if (compoundSignal.aborted) {\n return;\n }\n // if there are closer peers and the query has not completed, continue the query\n if (event.name === 'PEER_RESPONSE') {\n for (const closerPeer of event.closer) {\n if (peersSeen.has(closerPeer.id)) { // eslint-disable-line max-depth\n log('already seen %p in query', closerPeer.id);\n continue;\n }\n if (ourPeerId.equals(closerPeer.id)) { // eslint-disable-line max-depth\n log('not querying ourselves');\n continue;\n }\n if (!(await connectionManager.isDialable(closerPeer.multiaddrs))) { // eslint-disable-line max-depth\n log('not querying undialable peer');\n continue;\n }\n const closerPeerKadId = await convertPeerId(closerPeer.id);\n const closerPeerXor = uint8ArrayXor(closerPeerKadId, kadId);\n // only continue query if closer peer is actually closer\n if (uint8ArrayXorCompare(closerPeerXor, peerXor) !== -1) { // eslint-disable-line max-depth\n log('skipping %p as they are not closer to %b than %p', closerPeer.id, key, peer);\n continue;\n }\n log('querying closer peer %p', closerPeer.id);\n queryPeer(closerPeer.id, closerPeerKadId);\n }\n }\n queue.safeDispatchEvent('completed', {\n detail: event\n });\n }\n }\n catch (err) {\n if (!signal.aborted) {\n return queryErrorEvent({\n from: peer,\n error: err\n }, options);\n }\n }\n finally {\n compoundSignal.clear();\n }\n }, {\n distance: peerXor\n }).catch(err => {\n log.error(err);\n });\n }\n // begin the query with the starting peer\n queryPeer(startingPeer, await convertPeerId(startingPeer));\n try {\n // yield results as they come in\n for await (const event of queue.toGenerator({ signal })) {\n if (event != null) {\n yield event;\n }\n }\n }\n catch (err) {\n if (signal.aborted) {\n throw new CodeError('Query aborted', 'ERR_QUERY_ABORTED');\n }\n throw err;\n }\n}\n//# sourceMappingURL=query-path.js.map","import { setMaxListeners } from '@libp2p/interface';\nimport { PeerSet } from '@libp2p/peer-collections';\nimport { anySignal } from 'any-signal';\nimport merge from 'it-merge';\nimport { raceSignal } from 'race-signal';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { ALPHA, K, DEFAULT_QUERY_TIMEOUT } from '../constants.js';\nimport { convertBuffer } from '../utils.js';\nimport { queryPath } from './query-path.js';\n/**\n * Keeps track of all running queries\n */\nexport class QueryManager {\n disjointPaths;\n alpha;\n shutDownController;\n running;\n queries;\n logger;\n peerId;\n connectionManager;\n routingTable;\n initialQuerySelfHasRun;\n logPrefix;\n metrics;\n constructor(components, init) {\n const { disjointPaths = K, alpha = ALPHA, logPrefix } = init;\n this.logPrefix = logPrefix;\n this.disjointPaths = disjointPaths ?? K;\n this.running = false;\n this.alpha = alpha ?? ALPHA;\n this.queries = 0;\n this.initialQuerySelfHasRun = init.initialQuerySelfHasRun;\n this.routingTable = init.routingTable;\n this.logger = components.logger;\n this.peerId = components.peerId;\n this.connectionManager = components.connectionManager;\n if (components.metrics != null) {\n this.metrics = {\n runningQueries: components.metrics.registerMetric(`${logPrefix.replaceAll(':', '_')}_running_queries`),\n queryTime: components.metrics.registerMetric(`${logPrefix.replaceAll(':', '_')}_query_time_seconds`)\n };\n }\n // allow us to stop queries on shut down\n this.shutDownController = new AbortController();\n // make sure we don't make a lot of noise in the logs\n setMaxListeners(Infinity, this.shutDownController.signal);\n }\n isStarted() {\n return this.running;\n }\n /**\n * Starts the query manager\n */\n async start() {\n this.running = true;\n // allow us to stop queries on shut down\n this.shutDownController = new AbortController();\n // make sure we don't make a lot of noise in the logs\n setMaxListeners(Infinity, this.shutDownController.signal);\n }\n /**\n * Stops all queries\n */\n async stop() {\n this.running = false;\n this.shutDownController.abort();\n }\n async *run(key, queryFunc, options = {}) {\n if (!this.running) {\n throw new Error('QueryManager not started');\n }\n const stopQueryTimer = this.metrics?.queryTime.timer();\n if (options.signal == null) {\n // don't let queries run forever\n const signal = AbortSignal.timeout(DEFAULT_QUERY_TIMEOUT);\n // this signal will get listened to for network requests, etc\n // so make sure we don't make a lot of noise in the logs\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n // if the user breaks out of a for..await of loop iterating over query\n // results we need to cancel any in-flight network requests\n const queryEarlyExitController = new AbortController();\n const signal = anySignal([\n this.shutDownController.signal,\n queryEarlyExitController.signal,\n options.signal\n ]);\n // this signal will get listened to for every invocation of queryFunc\n // so make sure we don't make a lot of noise in the logs\n setMaxListeners(Infinity, signal, queryEarlyExitController.signal);\n const log = this.logger.forComponent(`${this.logPrefix}:query:` + uint8ArrayToString(key, 'base58btc'));\n // query a subset of peers up to `kBucketSize / 2` in length\n const startTime = Date.now();\n let queryFinished = false;\n try {\n if (options.isSelfQuery !== true && this.initialQuerySelfHasRun != null) {\n log('waiting for initial query-self query before continuing');\n await raceSignal(this.initialQuerySelfHasRun.promise, signal);\n this.initialQuerySelfHasRun = undefined;\n }\n log('query:start');\n this.queries++;\n this.metrics?.runningQueries.update(this.queries);\n const id = await convertBuffer(key);\n const peers = this.routingTable.closestPeers(id);\n const peersToQuery = peers.slice(0, Math.min(this.disjointPaths, peers.length));\n if (peers.length === 0) {\n log.error('Running query with no peers');\n return;\n }\n // make sure we don't get trapped in a loop\n const peersSeen = new PeerSet();\n // Create query paths from the starting peers\n const paths = peersToQuery.map((peer, index) => {\n return queryPath({\n key,\n startingPeer: peer,\n ourPeerId: this.peerId,\n signal,\n query: queryFunc,\n pathIndex: index,\n numPaths: peersToQuery.length,\n alpha: this.alpha,\n queryFuncTimeout: options.queryFuncTimeout,\n log,\n peersSeen,\n onProgress: options.onProgress,\n connectionManager: this.connectionManager\n });\n });\n // Execute the query along each disjoint path and yield their results as they become available\n for await (const event of merge(...paths)) {\n if (event.name === 'QUERY_ERROR') {\n log.error('query error', event.error);\n }\n if (event.name === 'PEER_RESPONSE') {\n for (const peer of [...event.closer, ...event.providers]) {\n // eslint-disable-next-line max-depth\n if (!(await this.connectionManager.isDialable(peer.multiaddrs))) {\n continue;\n }\n await this.routingTable.add(peer.id);\n }\n }\n yield event;\n }\n queryFinished = true;\n }\n catch (err) {\n if (!this.running && err.code === 'ERR_QUERY_ABORTED') {\n // ignore query aborted errors that were thrown during query manager shutdown\n }\n else {\n throw err;\n }\n }\n finally {\n if (!queryFinished) {\n log('query exited early');\n queryEarlyExitController.abort();\n }\n signal.clear();\n this.queries--;\n this.metrics?.runningQueries.update(this.queries);\n if (stopQueryTimer != null) {\n stopQueryTimer();\n }\n log('query:done in %dms', Date.now() - startTime);\n }\n }\n}\n//# sourceMappingURL=manager.js.map","/**\n * @packageDocumentation\n *\n * Counts the number of items in an (async)iterable.\n *\n * N.b. will consume the iterable\n *\n * @example\n *\n * ```javascript\n * import length from 'it-length'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const res = length(values)\n *\n * console.info(res) // 5\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import length from 'it-length'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const res = await length(values())\n *\n * console.info(res) // 5\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction length(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n let count = 0;\n for await (const _ of source) { // eslint-disable-line no-unused-vars,@typescript-eslint/no-unused-vars\n count++;\n }\n return count;\n })();\n }\n else {\n let count = 0;\n for (const _ of source) { // eslint-disable-line no-unused-vars,@typescript-eslint/no-unused-vars\n count++;\n }\n return count;\n }\n}\nexport default length;\n//# sourceMappingURL=index.js.map","import pTimeout from 'p-timeout';\n\nconst normalizeEmitter = emitter => {\n\tconst addListener = emitter.addEventListener || emitter.on || emitter.addListener;\n\tconst removeListener = emitter.removeEventListener || emitter.off || emitter.removeListener;\n\n\tif (!addListener || !removeListener) {\n\t\tthrow new TypeError('Emitter is not compatible');\n\t}\n\n\treturn {\n\t\taddListener: addListener.bind(emitter),\n\t\tremoveListener: removeListener.bind(emitter),\n\t};\n};\n\nexport function pEventMultiple(emitter, event, options) {\n\tlet cancel;\n\tconst returnValue = new Promise((resolve, reject) => {\n\t\toptions = {\n\t\t\trejectionEvents: ['error'],\n\t\t\tmultiArgs: false,\n\t\t\tresolveImmediately: false,\n\t\t\t...options,\n\t\t};\n\n\t\tif (!(options.count >= 0 && (options.count === Number.POSITIVE_INFINITY || Number.isInteger(options.count)))) {\n\t\t\tthrow new TypeError('The `count` option should be at least 0 or more');\n\t\t}\n\n\t\toptions.signal?.throwIfAborted();\n\n\t\t// Allow multiple events\n\t\tconst events = [event].flat();\n\n\t\tconst items = [];\n\t\tconst {addListener, removeListener} = normalizeEmitter(emitter);\n\n\t\tconst onItem = (...arguments_) => {\n\t\t\tconst value = options.multiArgs ? arguments_ : arguments_[0];\n\n\t\t\t// eslint-disable-next-line unicorn/no-array-callback-reference\n\t\t\tif (options.filter && !options.filter(value)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titems.push(value);\n\n\t\t\tif (options.count === items.length) {\n\t\t\t\tcancel();\n\t\t\t\tresolve(items);\n\t\t\t}\n\t\t};\n\n\t\tconst rejectHandler = error => {\n\t\t\tcancel();\n\t\t\treject(error);\n\t\t};\n\n\t\tcancel = () => {\n\t\t\tfor (const event of events) {\n\t\t\t\tremoveListener(event, onItem);\n\t\t\t}\n\n\t\t\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\t\t\tremoveListener(rejectionEvent, rejectHandler);\n\t\t\t}\n\t\t};\n\n\t\tfor (const event of events) {\n\t\t\taddListener(event, onItem);\n\t\t}\n\n\t\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\t\taddListener(rejectionEvent, rejectHandler);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\toptions.signal.addEventListener('abort', () => {\n\t\t\t\trejectHandler(options.signal.reason);\n\t\t\t}, {once: true});\n\t\t}\n\n\t\tif (options.resolveImmediately) {\n\t\t\tresolve(items);\n\t\t}\n\t});\n\n\treturnValue.cancel = cancel;\n\n\tif (typeof options.timeout === 'number') {\n\t\tconst timeout = pTimeout(returnValue, {milliseconds: options.timeout});\n\t\ttimeout.cancel = cancel;\n\t\treturn timeout;\n\t}\n\n\treturn returnValue;\n}\n\nexport function pEvent(emitter, event, options) {\n\tif (typeof options === 'function') {\n\t\toptions = {filter: options};\n\t}\n\n\toptions = {\n\t\t...options,\n\t\tcount: 1,\n\t\tresolveImmediately: false,\n\t};\n\n\tconst arrayPromise = pEventMultiple(emitter, event, options);\n\tconst promise = arrayPromise.then(array => array[0]);\n\tpromise.cancel = arrayPromise.cancel;\n\n\treturn promise;\n}\n\nexport function pEventIterator(emitter, event, options) {\n\tif (typeof options === 'function') {\n\t\toptions = {filter: options};\n\t}\n\n\t// Allow multiple events\n\tconst events = [event].flat();\n\n\toptions = {\n\t\trejectionEvents: ['error'],\n\t\tresolutionEvents: [],\n\t\tlimit: Number.POSITIVE_INFINITY,\n\t\tmultiArgs: false,\n\t\t...options,\n\t};\n\n\tconst {limit} = options;\n\tconst isValidLimit = limit >= 0 && (limit === Number.POSITIVE_INFINITY || Number.isInteger(limit));\n\tif (!isValidLimit) {\n\t\tthrow new TypeError('The `limit` option should be a non-negative integer or Infinity');\n\t}\n\n\toptions.signal?.throwIfAborted();\n\n\tif (limit === 0) {\n\t\t// Return an empty async iterator to avoid any further cost\n\t\treturn {\n\t\t\t[Symbol.asyncIterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tasync next() {\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: undefined,\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t}\n\n\tconst {addListener, removeListener} = normalizeEmitter(emitter);\n\n\tlet isDone = false;\n\tlet error;\n\tlet hasPendingError = false;\n\tconst nextQueue = [];\n\tconst valueQueue = [];\n\tlet eventCount = 0;\n\tlet isLimitReached = false;\n\n\tconst valueHandler = (...arguments_) => {\n\t\teventCount++;\n\t\tisLimitReached = eventCount === limit;\n\n\t\tconst value = options.multiArgs ? arguments_ : arguments_[0];\n\n\t\tif (nextQueue.length > 0) {\n\t\t\tconst {resolve} = nextQueue.shift();\n\n\t\t\tresolve({done: false, value});\n\n\t\t\tif (isLimitReached) {\n\t\t\t\tcancel();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueQueue.push(value);\n\n\t\tif (isLimitReached) {\n\t\t\tcancel();\n\t\t}\n\t};\n\n\tconst cancel = () => {\n\t\tisDone = true;\n\n\t\tfor (const event of events) {\n\t\t\tremoveListener(event, valueHandler);\n\t\t}\n\n\t\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\t\tremoveListener(rejectionEvent, rejectHandler);\n\t\t}\n\n\t\tfor (const resolutionEvent of options.resolutionEvents) {\n\t\t\tremoveListener(resolutionEvent, resolveHandler);\n\t\t}\n\n\t\twhile (nextQueue.length > 0) {\n\t\t\tconst {resolve} = nextQueue.shift();\n\t\t\tresolve({done: true, value: undefined});\n\t\t}\n\t};\n\n\tconst rejectHandler = (...arguments_) => {\n\t\terror = options.multiArgs ? arguments_ : arguments_[0];\n\n\t\tif (nextQueue.length > 0) {\n\t\t\tconst {reject} = nextQueue.shift();\n\t\t\treject(error);\n\t\t} else {\n\t\t\thasPendingError = true;\n\t\t}\n\n\t\tcancel();\n\t};\n\n\tconst resolveHandler = (...arguments_) => {\n\t\tconst value = options.multiArgs ? arguments_ : arguments_[0];\n\n\t\t// eslint-disable-next-line unicorn/no-array-callback-reference\n\t\tif (options.filter && !options.filter(value)) {\n\t\t\tcancel();\n\t\t\treturn;\n\t\t}\n\n\t\tif (nextQueue.length > 0) {\n\t\t\tconst {resolve} = nextQueue.shift();\n\t\t\tresolve({done: true, value});\n\t\t} else {\n\t\t\tvalueQueue.push(value);\n\t\t}\n\n\t\tcancel();\n\t};\n\n\tfor (const event of events) {\n\t\taddListener(event, valueHandler);\n\t}\n\n\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\taddListener(rejectionEvent, rejectHandler);\n\t}\n\n\tfor (const resolutionEvent of options.resolutionEvents) {\n\t\taddListener(resolutionEvent, resolveHandler);\n\t}\n\n\tif (options.signal) {\n\t\toptions.signal.addEventListener('abort', () => {\n\t\t\trejectHandler(options.signal.reason);\n\t\t}, {once: true});\n\t}\n\n\treturn {\n\t\t[Symbol.asyncIterator]() {\n\t\t\treturn this;\n\t\t},\n\t\tasync next() {\n\t\t\tif (valueQueue.length > 0) {\n\t\t\t\tconst value = valueQueue.shift();\n\t\t\t\treturn {\n\t\t\t\t\tdone: isDone && valueQueue.length === 0 && !isLimitReached,\n\t\t\t\t\tvalue,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (hasPendingError) {\n\t\t\t\thasPendingError = false;\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (isDone) {\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: undefined,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tnextQueue.push({resolve, reject});\n\t\t\t});\n\t\t},\n\t\tasync return(value) {\n\t\t\tcancel();\n\t\t\treturn {\n\t\t\t\tdone: isDone,\n\t\t\t\tvalue,\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport {TimeoutError} from 'p-timeout';\n","import { setMaxListeners } from '@libp2p/interface';\nimport { anySignal } from 'any-signal';\nimport length from 'it-length';\nimport { pipe } from 'it-pipe';\nimport take from 'it-take';\nimport pDefer from 'p-defer';\nimport { pEvent } from 'p-event';\nimport { QUERY_SELF_INTERVAL, QUERY_SELF_TIMEOUT, K, QUERY_SELF_INITIAL_INTERVAL } from './constants.js';\n/**\n * Receives notifications of new peers joining the network that support the DHT protocol\n */\nexport class QuerySelf {\n log;\n peerId;\n peerRouting;\n routingTable;\n count;\n interval;\n initialInterval;\n queryTimeout;\n started;\n timeoutId;\n controller;\n initialQuerySelfHasRun;\n querySelfPromise;\n constructor(components, init) {\n const { peerRouting, logPrefix, count, interval, queryTimeout, routingTable } = init;\n this.peerId = components.peerId;\n this.log = components.logger.forComponent(`${logPrefix}:query-self`);\n this.started = false;\n this.peerRouting = peerRouting;\n this.routingTable = routingTable;\n this.count = count ?? K;\n this.interval = interval ?? QUERY_SELF_INTERVAL;\n this.initialInterval = init.initialInterval ?? QUERY_SELF_INITIAL_INTERVAL;\n this.queryTimeout = queryTimeout ?? QUERY_SELF_TIMEOUT;\n this.initialQuerySelfHasRun = init.initialQuerySelfHasRun;\n }\n isStarted() {\n return this.started;\n }\n start() {\n if (this.started) {\n return;\n }\n this.started = true;\n clearTimeout(this.timeoutId);\n this.timeoutId = setTimeout(() => {\n this.querySelf()\n .catch(err => {\n this.log.error('error running self-query', err);\n });\n }, this.initialInterval);\n }\n stop() {\n this.started = false;\n if (this.timeoutId != null) {\n clearTimeout(this.timeoutId);\n }\n if (this.controller != null) {\n this.controller.abort();\n }\n }\n async querySelf() {\n if (!this.started) {\n this.log('skip self-query because we are not started');\n return;\n }\n if (this.querySelfPromise != null) {\n this.log('joining existing self query');\n return this.querySelfPromise.promise;\n }\n this.querySelfPromise = pDefer();\n if (this.started) {\n this.controller = new AbortController();\n const timeoutSignal = AbortSignal.timeout(this.queryTimeout);\n const signal = anySignal([this.controller.signal, timeoutSignal]);\n // this controller will get used for lots of dial attempts so make sure we don't cause warnings to be logged\n setMaxListeners(Infinity, signal, this.controller.signal, timeoutSignal);\n try {\n if (this.routingTable.size === 0) {\n this.log('routing table was empty, waiting for some peers before running query');\n // wait to discover at least one DHT peer\n await pEvent(this.routingTable, 'peer:add', {\n signal\n });\n }\n this.log('run self-query, look for %d peers timing out after %dms', this.count, this.queryTimeout);\n const start = Date.now();\n const found = await pipe(this.peerRouting.getClosestPeers(this.peerId.toBytes(), {\n signal,\n isSelfQuery: true\n }), (source) => take(source, this.count), async (source) => length(source));\n this.log('self-query found %d peers in %dms', found, Date.now() - start);\n }\n catch (err) {\n this.log.error('self-query error', err);\n }\n finally {\n signal.clear();\n if (this.initialQuerySelfHasRun != null) {\n this.initialQuerySelfHasRun.resolve();\n this.initialQuerySelfHasRun = undefined;\n }\n }\n }\n this.querySelfPromise.resolve();\n this.querySelfPromise = undefined;\n if (!this.started) {\n return;\n }\n this.timeoutId = setTimeout(() => {\n this.querySelf()\n .catch(err => {\n this.log.error('error running self-query', err);\n });\n }, this.interval);\n }\n}\n//# sourceMappingURL=query-self.js.map","import { TypedEventEmitter } from '@libp2p/interface';\nimport map from 'it-map';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { xor as uint8ArrayXor } from 'uint8arrays/xor';\nimport { PeerDistanceList } from '../peer-list/peer-distance-list.js';\nimport { KBUCKET_SIZE } from './index.js';\nfunction arrayEquals(array1, array2) {\n if (array1 === array2) {\n return true;\n }\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0, length = array1.length; i < length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction ensureInt8(name, val) {\n if (!(val instanceof Uint8Array)) {\n throw new TypeError(name + ' is not a Uint8Array');\n }\n if (val.byteLength !== 32) {\n throw new TypeError(name + ' had incorrect length');\n }\n}\nexport function isLeafBucket(obj) {\n return Array.isArray(obj?.peers);\n}\n/**\n * Implementation of a Kademlia DHT routing table as a prefix binary trie with\n * configurable prefix length, bucket split threshold and size.\n */\nexport class KBucket extends TypedEventEmitter {\n root;\n localPeer;\n prefixLength;\n splitThreshold;\n kBucketSize;\n numberOfNodesToPing;\n constructor(options) {\n super();\n this.localPeer = options.localPeer;\n this.prefixLength = options.prefixLength;\n this.kBucketSize = options.kBucketSize ?? KBUCKET_SIZE;\n this.splitThreshold = options.splitThreshold ?? this.kBucketSize;\n this.numberOfNodesToPing = options.numberOfNodesToPing ?? 3;\n ensureInt8('options.localPeer.kadId', options.localPeer.kadId);\n this.root = {\n prefix: '',\n depth: 0,\n peers: []\n };\n }\n /**\n * Adds a contact to the k-bucket.\n *\n * @param {Peer} peer - the contact object to add\n */\n add(peer) {\n ensureInt8('peer.kadId', peer?.kadId);\n const bucket = this._determineBucket(peer.kadId);\n // check if the contact already exists\n if (this._indexOf(bucket, peer.kadId) > -1) {\n return;\n }\n // are there too many peers in the bucket and can we make the trie deeper?\n if (bucket.peers.length === this.splitThreshold && bucket.depth < this.prefixLength) {\n // split the bucket\n this._split(bucket);\n // try again\n this.add(peer);\n return;\n }\n // is there space in the bucket?\n if (bucket.peers.length < this.kBucketSize) {\n bucket.peers.push(peer);\n this.safeDispatchEvent('added', { detail: peer });\n return;\n }\n // we are at the bottom of the trie and the bucket is full so we can't add\n // any more peers.\n //\n // instead ping the first this.numberOfNodesToPing in order to determine\n // if they are still online.\n //\n // only add the new peer if one of the pinged nodes does not respond, this\n // prevents DoS flooding with new invalid contacts.\n this.safeDispatchEvent('ping', {\n detail: {\n oldContacts: bucket.peers.slice(0, this.numberOfNodesToPing),\n newContact: peer\n }\n });\n }\n /**\n * Get 0-n closest contacts to the provided node id. \"Closest\" here means:\n * closest according to the XOR metric of the contact node id.\n *\n * @param {Uint8Array} id - Contact node id\n * @returns {Generator} Array Maximum of n closest contacts to the node id\n */\n *closest(id, n = this.kBucketSize) {\n const list = new PeerDistanceList(id, n);\n for (const peer of this.toIterable()) {\n list.addWitKadId({ id: peer.peerId, multiaddrs: [] }, peer.kadId);\n }\n yield* map(list.peers, info => info.id);\n }\n /**\n * Counts the total number of contacts in the tree.\n *\n * @returns {number} The number of contacts held in the tree\n */\n count() {\n function countBucket(bucket) {\n if (isLeafBucket(bucket)) {\n return bucket.peers.length;\n }\n let count = 0;\n if (bucket.left != null) {\n count += countBucket(bucket.left);\n }\n if (bucket.right != null) {\n count += countBucket(bucket.right);\n }\n return count;\n }\n return countBucket(this.root);\n }\n /**\n * Get a contact by its exact ID.\n * If this is a leaf, loop through the bucket contents and return the correct\n * contact if we have it or null if not. If this is an inner node, determine\n * which branch of the tree to traverse and repeat.\n *\n * @param {Uint8Array} kadId - The ID of the contact to fetch.\n * @returns {object | undefined} The contact if available, otherwise null\n */\n get(kadId) {\n const bucket = this._determineBucket(kadId);\n const index = this._indexOf(bucket, kadId);\n return bucket.peers[index];\n }\n /**\n * Removes contact with the provided id.\n *\n * @param {Uint8Array} kadId - The ID of the contact to remove\n */\n remove(kadId) {\n const bucket = this._determineBucket(kadId);\n const index = this._indexOf(bucket, kadId);\n if (index > -1) {\n const peer = bucket.peers.splice(index, 1)[0];\n this.safeDispatchEvent('removed', {\n detail: peer\n });\n }\n }\n /**\n * Similar to `toArray()` but instead of buffering everything up into an\n * array before returning it, yields contacts as they are encountered while\n * walking the tree.\n *\n * @returns {Iterable} All of the contacts in the tree, as an iterable\n */\n *toIterable() {\n function* iterate(bucket) {\n if (isLeafBucket(bucket)) {\n yield* bucket.peers;\n return;\n }\n yield* iterate(bucket.left);\n yield* iterate(bucket.right);\n }\n yield* iterate(this.root);\n }\n /**\n * Default distance function. Finds the XOR distance between firstId and\n * secondId.\n *\n * @param {Uint8Array} firstId - Uint8Array containing first id.\n * @param {Uint8Array} secondId - Uint8Array containing second id.\n * @returns {number} Integer The XOR distance between firstId and secondId.\n */\n distance(firstId, secondId) {\n return BigInt('0x' + uint8ArrayToString(uint8ArrayXor(firstId, secondId), 'base16'));\n }\n /**\n * Determines whether the id at the bitIndex is 0 or 1\n * Return left leaf if `id` at `bitIndex` is 0, right leaf otherwise\n *\n * @param {Uint8Array} kadId - Id to compare localNodeId with\n * @returns {LeafBucket} left leaf if id at bitIndex is 0, right leaf otherwise.\n */\n _determineBucket(kadId) {\n const bitString = uint8ArrayToString(kadId, 'base2');\n const prefix = bitString.substring(0, this.prefixLength);\n function findBucket(bucket, bitIndex = 0) {\n if (isLeafBucket(bucket)) {\n return bucket;\n }\n const bit = prefix[bitIndex];\n if (bit === '0') {\n return findBucket(bucket.left, bitIndex + 1);\n }\n return findBucket(bucket.right, bitIndex + 1);\n }\n return findBucket(this.root);\n }\n /**\n * Returns the index of the contact with provided\n * id if it exists, returns -1 otherwise.\n *\n * @param {object} bucket - internal object that has 2 leafs: left and right\n * @param {Uint8Array} kadId - KadId of peer\n * @returns {number} Integer Index of contact with provided id if it exists, -1 otherwise.\n */\n _indexOf(bucket, kadId) {\n return bucket.peers.findIndex(peer => arrayEquals(peer.kadId, kadId));\n }\n /**\n * Modify the bucket, turn it from a leaf bucket to an internal bucket\n *\n * @param {any} bucket - bucket for splitting\n */\n _split(bucket) {\n const depth = bucket.depth + 1;\n // create child buckets\n const left = {\n prefix: '0',\n depth,\n peers: []\n };\n const right = {\n prefix: '1',\n depth,\n peers: []\n };\n // redistribute peers\n for (const peer of bucket.peers) {\n const bitString = uint8ArrayToString(peer.kadId, 'base2');\n if (bitString[depth] === '0') {\n left.peers.push(peer);\n }\n else {\n right.peers.push(peer);\n }\n }\n // convert leaf bucket to internal bucket\n // @ts-expect-error peers is not a property of LeafBucket\n delete bucket.peers;\n // @ts-expect-error left is not a property of LeafBucket\n bucket.left = left;\n // @ts-expect-error right is not a property of LeafBucket\n bucket.right = right;\n }\n}\n//# sourceMappingURL=k-bucket.js.map","import { CodeError, TypedEventEmitter } from '@libp2p/interface';\nimport { PeerSet } from '@libp2p/peer-collections';\nimport { PeerQueue } from '@libp2p/utils/peer-queue';\nimport { pbStream } from 'it-protobuf-stream';\nimport { Message, MessageType } from '../message/dht.js';\nimport * as utils from '../utils.js';\nimport { KBucket, isLeafBucket } from './k-bucket.js';\nexport const KAD_CLOSE_TAG_NAME = 'kad-close';\nexport const KAD_CLOSE_TAG_VALUE = 50;\nexport const KBUCKET_SIZE = 20;\nexport const PREFIX_LENGTH = 32;\nexport const PING_TIMEOUT = 10000;\nexport const PING_CONCURRENCY = 10;\n/**\n * A wrapper around `k-bucket`, to provide easy store and\n * retrieval for peers.\n */\nexport class RoutingTable extends TypedEventEmitter {\n kBucketSize;\n kb;\n pingQueue;\n log;\n components;\n prefixLength;\n splitThreshold;\n pingTimeout;\n pingConcurrency;\n running;\n protocol;\n tagName;\n tagValue;\n metrics;\n constructor(components, init) {\n super();\n this.components = components;\n this.log = components.logger.forComponent(`${init.logPrefix}:routing-table`);\n this.kBucketSize = init.kBucketSize ?? KBUCKET_SIZE;\n this.pingTimeout = init.pingTimeout ?? PING_TIMEOUT;\n this.pingConcurrency = init.pingConcurrency ?? PING_CONCURRENCY;\n this.running = false;\n this.protocol = init.protocol;\n this.tagName = init.tagName ?? KAD_CLOSE_TAG_NAME;\n this.tagValue = init.tagValue ?? KAD_CLOSE_TAG_VALUE;\n this.prefixLength = init.prefixLength ?? PREFIX_LENGTH;\n this.splitThreshold = init.splitThreshold ?? KBUCKET_SIZE;\n this.pingQueue = new PeerQueue({\n concurrency: this.pingConcurrency,\n metricName: `${init.logPrefix.replaceAll(':', '_')}_ping_queue`,\n metrics: this.components.metrics\n });\n this.pingQueue.addEventListener('error', evt => {\n this.log.error('error pinging peer', evt.detail);\n });\n if (this.components.metrics != null) {\n this.metrics = {\n routingTableSize: this.components.metrics.registerMetric(`${init.logPrefix.replaceAll(':', '_')}_routing_table_size`),\n routingTableKadBucketTotal: this.components.metrics.registerMetric(`${init.logPrefix.replaceAll(':', '_')}_routing_table_kad_bucket_total`),\n routingTableKadBucketAverageOccupancy: this.components.metrics.registerMetric(`${init.logPrefix.replaceAll(':', '_')}_routing_table_kad_bucket_average_occupancy`),\n routingTableKadBucketMaxDepth: this.components.metrics.registerMetric(`${init.logPrefix.replaceAll(':', '_')}_routing_table_kad_bucket_max_depth`)\n };\n }\n }\n isStarted() {\n return this.running;\n }\n async start() {\n this.running = true;\n const kBuck = new KBucket({\n localPeer: {\n kadId: await utils.convertPeerId(this.components.peerId),\n peerId: this.components.peerId\n },\n kBucketSize: this.kBucketSize,\n prefixLength: this.prefixLength,\n splitThreshold: this.splitThreshold,\n numberOfNodesToPing: 1\n });\n this.kb = kBuck;\n // test whether to evict peers\n kBuck.addEventListener('ping', (evt) => {\n this._onPing(evt).catch(err => {\n this.log.error('could not process k-bucket ping event', err);\n });\n });\n let peerStorePeers = 0;\n // add existing peers from the peer store to routing table\n for (const peer of await this.components.peerStore.all()) {\n if (peer.protocols.includes(this.protocol)) {\n const id = await utils.convertPeerId(peer.id);\n this.kb.add({ kadId: id, peerId: peer.id });\n peerStorePeers++;\n }\n }\n this.log('added %d peer store peers to the routing table', peerStorePeers);\n // tag kad-close peers\n this._tagPeers(kBuck);\n }\n async stop() {\n this.running = false;\n this.pingQueue.clear();\n this.kb = undefined;\n }\n /**\n * Keep track of our k-closest peers and tag them in the peer store as such\n * - this will lower the chances that connections to them get closed when\n * we reach connection limits\n */\n _tagPeers(kBuck) {\n let kClosest = new PeerSet();\n const updatePeerTags = utils.debounce(() => {\n const newClosest = new PeerSet(kBuck.closest(kBuck.localPeer.kadId, KBUCKET_SIZE));\n const addedPeers = newClosest.difference(kClosest);\n const removedPeers = kClosest.difference(newClosest);\n Promise.resolve()\n .then(async () => {\n for (const peer of addedPeers) {\n await this.components.peerStore.merge(peer, {\n tags: {\n [this.tagName]: {\n value: this.tagValue\n }\n }\n });\n }\n for (const peer of removedPeers) {\n await this.components.peerStore.merge(peer, {\n tags: {\n [this.tagName]: undefined\n }\n });\n }\n })\n .catch(err => {\n this.log.error('Could not update peer tags', err);\n });\n kClosest = newClosest;\n });\n kBuck.addEventListener('added', (evt) => {\n updatePeerTags();\n this.safeDispatchEvent('peer:add', { detail: evt.detail.peerId });\n });\n kBuck.addEventListener('removed', (evt) => {\n updatePeerTags();\n this.safeDispatchEvent('peer:remove', { detail: evt.detail.peerId });\n });\n }\n /**\n * Called on the `ping` event from `k-bucket` when a bucket is full\n * and cannot split.\n *\n * `oldContacts.length` is defined by the `numberOfNodesToPing` param\n * passed to the `k-bucket` constructor.\n *\n * `oldContacts` will not be empty and is the list of contacts that\n * have not been contacted for the longest.\n */\n async _onPing(evt) {\n if (!this.running) {\n return;\n }\n const { oldContacts, newContact } = evt.detail;\n const results = await Promise.all(oldContacts.map(async (oldContact) => {\n // if a previous ping wants us to ping this contact, re-use the result\n const pingJob = this.pingQueue.find(oldContact.peerId);\n if (pingJob != null) {\n return pingJob.join();\n }\n return this.pingQueue.add(async () => {\n let stream;\n try {\n const options = {\n signal: AbortSignal.timeout(this.pingTimeout)\n };\n this.log('pinging old contact %p', oldContact.peerId);\n const connection = await this.components.connectionManager.openConnection(oldContact.peerId, options);\n stream = await connection.newStream(this.protocol, options);\n const pb = pbStream(stream);\n await pb.write({\n type: MessageType.PING\n }, Message, options);\n const response = await pb.read(Message, options);\n await pb.unwrap().close();\n if (response.type !== MessageType.PING) {\n throw new CodeError(`Incorrect message type received, expected PING got ${response.type}`, 'ERR_BAD_PING_RESPONSE');\n }\n return true;\n }\n catch (err) {\n if (this.running && this.kb != null) {\n // only evict peers if we are still running, otherwise we evict\n // when dialing is cancelled due to shutdown in progress\n this.log.error('could not ping peer %p', oldContact.peerId, err);\n this.log('evicting old contact after ping failed %p', oldContact.peerId);\n this.kb.remove(oldContact.kadId);\n }\n stream?.abort(err);\n return false;\n }\n finally {\n this.metrics?.routingTableSize.update(this.size);\n }\n }, {\n peerId: oldContact.peerId\n });\n }));\n const responded = results\n .filter(res => res)\n .length;\n if (this.running && responded < oldContacts.length && this.kb != null) {\n this.log('adding new contact %p', newContact.peerId);\n this.kb.add(newContact);\n }\n }\n // -- Public Interface\n /**\n * Amount of currently stored peers\n */\n get size() {\n if (this.kb == null) {\n return 0;\n }\n return this.kb.count();\n }\n /**\n * Find a specific peer by id\n */\n async find(peer) {\n const key = await utils.convertPeerId(peer);\n return this.kb?.get(key)?.peerId;\n }\n /**\n * Retrieve the closest peers to the given kadId\n */\n closestPeer(kadId) {\n const res = this.closestPeers(kadId, 1);\n if (res.length > 0) {\n return res[0];\n }\n return undefined;\n }\n /**\n * Retrieve the `count`-closest peers to the given kadId\n */\n closestPeers(kadId, count = this.kBucketSize) {\n if (this.kb == null) {\n return [];\n }\n return [...this.kb.closest(kadId, count)];\n }\n /**\n * Add or update the routing table with the given peer\n */\n async add(peerId) {\n if (this.kb == null) {\n throw new Error('RoutingTable is not started');\n }\n const kadId = await utils.convertPeerId(peerId);\n this.kb.add({ kadId, peerId });\n this.log('added %p with kad id %b', peerId, kadId);\n this.updateMetrics();\n }\n /**\n * Remove a given peer from the table\n */\n async remove(peer) {\n if (this.kb == null) {\n throw new Error('RoutingTable is not started');\n }\n const id = await utils.convertPeerId(peer);\n this.kb.remove(id);\n this.updateMetrics();\n }\n updateMetrics() {\n if (this.metrics == null || this.kb == null) {\n return;\n }\n let size = 0;\n let buckets = 0;\n let maxDepth = 0;\n function count(bucket) {\n if (isLeafBucket(bucket)) {\n if (bucket.depth > maxDepth) {\n maxDepth = bucket.depth;\n }\n buckets++;\n size += bucket.peers.length;\n return;\n }\n count(bucket.left);\n count(bucket.right);\n }\n count(this.kb.root);\n this.metrics.routingTableSize.update(size);\n this.metrics.routingTableKadBucketTotal.update(buckets);\n this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(size / buckets));\n this.metrics.routingTableKadBucketMaxDepth.update(maxDepth);\n }\n}\n//# sourceMappingURL=index.js.map","export default [\n 77591, 22417, 43971, 28421, 740, 29829, 71467, 228973, 196661, 78537, 27689, 36431, 44415, 14362, 19456, 106025,\n 96308, 2882, 49509, 21149, 87173, 131409, 75844, 23676, 121838, 30291, 17492, 2953, 7564, 110620, 129477, 127283,\n 53113, 72417, 165166, 109690, 21200, 102125, 24049, 71504, 90342, 25307, 72039, 26812, 26715, 32264, 133800, 71161,\n 88956, 171987, 51779, 24425, 16671, 30251, 186294, 247761, 14202, 2121, 8465, 35024, 4876, 85917, 169730, 3638,\n 256836, 96184, 943, 18678, 6583, 52907, 35807, 112254, 214097, 18796, 11595, 9243, 23554, 887, 268203, 382004,\n 24590, 111335, 11625, 16619, 29039, 102425, 69006, 97976, 92362, 32552, 63717, 41433, 128974, 137630, 59943, 10019,\n 13986, 35430, 33665, 108037, 43799, 43280, 38195, 29078, 58629, 18265, 14425, 46832, 235538, 40830, 77881, 110717,\n 58937, 3463, 325358, 51300, 47623, 117252, 19007, 10170, 20540, 91237, 294813, 4951, 79841, 56232, 36270, 128547,\n 69209, 66275, 100156, 32063, 73531, 34439, 80937, 28892, 44466, 88595, 216307, 32583, 49620, 16605, 82127, 45807,\n 21630, 78726, 20235, 40163, 111007, 96926, 5567, 72083, 21665, 58844, 39419, 179767, 48328, 42662, 51550, 5251,\n 37811, 49608, 81056, 50854, 55513, 20922, 18891, 197409, 164656, 32593, 71449, 220474, 58919, 85682, 67854, 13758,\n 35066, 3565, 61905, 214793, 119572, 141419, 21504, 10302, 27354, 67003, 46131, 32668, 15165, 64871, 34450, 17821,\n 2757, 11452, 34189, 5160, 12257, 85523, 560, 53385, 65887, 119549, 135620, 312353, 115979, 122356, 10867, 193231,\n 124537, 54783, 90675, 120791, 4715, 142253, 50943, 17271, 43358, 25331, 4917, 120566, 34580, 12878, 33786, 160528,\n 32523, 4869, 301307, 104817, 81491, 23276, 8832, 97911, 31265, 52065, 7998, 49622, 9715, 43998, 34091, 84587,\n 20664, 69041, 29419, 53205, 10838, 58288, 116145, 6185, 5154, 141795, 35924, 21307, 144738, 43730, 12085, 8279,\n 10002, 119, 133779, 199668, 72938, 31768, 39176, 67875, 38453, 9700, 44144, 4121, 116048, 41733, 12868, 82669,\n 92308, 128, 34262, 11332, 7712, 90764, 36141, 13553, 71312, 77470, 117314, 96549, 49135, 23602, 54468, 28605,\n 6327, 62308, 17171, 67531, 21319, 14105, 894, 107722, 46157, 8503, 51069, 100472, 45138, 15246, 14577, 35609,\n 191464, 1757, 13364, 161349, 32067, 91705, 81144, 52339, 5408, 91066, 21983, 14157, 100545, 4372, 26630, 129112,\n 1423, 29676, 213626, 4397, 88436, 99190, 6877, 49958, 26122, 114348, 60661, 29818, 293118, 50042, 179738, 16400,\n 163423, 89627, 31040, 43973, 36638, 45952, 5153, 1894, 109322, 1898, 134021, 12402, 112077, 68309, 190269, 69866,\n 31938, 107383, 11522, 105232, 11248, 14868, 39852, 71707, 186525, 16530, 38162, 106212, 11700, 5130, 16608, 26998,\n 59586, 108399, 230033, 43683, 48135, 82179, 2073, 5015, 196684, 189293, 16378, 23452, 8301, 35640, 11632, 214551,\n 29240, 57644, 33137, 91949, 55157, 52384, 117313, 5090, 17717, 89668, 49363, 82238, 241035, 66216, 29066, 184088,\n 97206, 62820, 26595, 4241, 135635, 173672, 8202, 459, 71355, 146294, 29587, 3008, 135385, 141203, 14803, 6634,\n 45094, 69362, 50925, 546, 51884, 62011, 83296, 234584, 44515, 56050, 89476, 87751, 19373, 12691, 149923, 19794,\n 13833, 35846, 87557, 58339, 2884, 19145, 25647, 12224, 11024, 77338, 64608, 122297, 53025, 7205, 36189, 36294,\n 170779, 21750, 7739, 173883, 75192, 35664, 224240, 113121, 30181, 26267, 27036, 117827, 92015, 106516, 55628, 203549,\n 67949, 60462, 60844, 35911, 20457, 1820, 920, 19773, 8738, 73173, 181993, 38521, 98254, 76257, 46008, 92796,\n 5384, 26868, 151566, 22124, 2411, 15919, 186872, 180021, 28099, 152961, 78811, 80237, 62352, 102653, 74259, 184890,\n 16792, 123702, 224945, 29940, 19512, 75283, 14059, 112691, 92811, 233329, 20411, 138569, 53341, 109802, 50600, 134528,\n 66747, 5529, 166531, 31578, 64732, 67189, 1596, 126357, 967, 167999, 206598, 109752, 119431, 207825, 78791, 91938,\n 10301, 27311, 24233, 252343, 28831, 32812, 66002, 112267, 90895, 8786, 8095, 16824, 22866, 21813, 60507, 174833,\n 19549, 130985, 117051, 52110, 6938, 81923, 123864, 38061, 919, 18680, 53534, 46739, 112893, 161529, 85429, 26761,\n 11900, 81121, 91968, 15390, 217947, 56524, 1713, 6654, 37089, 85630, 138866, 61850, 16491, 75577, 16884, 98296,\n 73523, 6140, 44645, 6062, 36366, 29844, 57946, 37932, 42472, 5266, 20834, 19309, 33753, 127182, 134259, 35810,\n 41805, 45878, 312001, 14881, 47757, 49251, 120050, 44252, 3708, 25856, 107864, 120347, 1228, 36550, 41682, 34496,\n 47025, 8393, 173365, 246526, 12894, 161607, 35670, 90785, 126572, 2095, 124731, 157033, 58694, 554, 12786, 9642,\n 4817, 16136, 47864, 174698, 66992, 4639, 69284, 10625, 40710, 27763, 51738, 30404, 264105, 137904, 109882, 52487,\n 42824, 57514, 2740, 10479, 146799, 107390, 16586, 88038, 174951, 9410, 16185, 44158, 5568, 40658, 46108, 12763,\n 97385, 26175, 108859, 664, 230732, 67470, 46663, 14395, 50750, 141320, 93140, 15361, 47997, 55784, 6791, 307840,\n 118569, 107326, 18056, 58281, 260415, 54691, 8790, 73332, 45633, 7511, 45674, 143373, 14031, 11799, 94491, 35646,\n 96544, 14560, 26049, 32983, 25791, 83814, 42094, 231370, 63955, 139212, 2359, 169908, 3108, 183486, 105867, 28197,\n 32941, 124968, 26402, 88267, 149768, 23053, 3078, 19091, 52924, 25383, 19209, 111548, 97361, 3959, 24880, 235061,\n 9099, 24921, 161254, 151405, 20508, 7159, 34381, 20133, 11434, 74036, 19974, 34769, 36585, 1076, 22454, 17354,\n 38727, 235160, 111547, 96454, 117448, 156940, 91330, 37299, 7310, 26915, 117060, 51369, 22620, 61861, 322264, 106850,\n 111694, 15091, 2624, 40345, 300446, 177064, 1707, 27389, 54792, 327783, 132669, 183543, 59003, 17744, 20603, 151134,\n 106923, 53084, 71803, 279424, 319816, 11579, 21946, 16728, 38274, 72711, 5085, 83391, 88646, 40159, 25027, 34680,\n 10752, 12988, 54126, 30365, 18338, 100445, 230674, 44874, 84974, 143877, 123253, 139372, 28082, 91477, 144002, 13096,\n 219729, 46016, 50029, 42377, 14601, 6660, 58244, 58978, 23918, 88206, 113611, 64452, 17541, 41032, 10942, 12021,\n 49189, 10978, 40175, 37156, 10947, 71709, 106894, 112538, 57007, 137486, 150608, 152719, 40615, 7746, 279716, 13101,\n 19524, 28708, 40578, 72320, 1096, 182051, 94527, 51275, 22833, 45164, 81917, 77519, 48508, 5421, 140302, 37845,\n 149830, 5587, 27579, 5357, 428725, 248187, 6326, 206760, 39814, 32585, 89923, 44341, 288753, 284443, 96368, 31201,\n 94189, 119504, 20359, 52073, 103216, 179, 27934, 32801, 96035, 34111, 34309, 101326, 18198, 20704, 210266, 37643,\n 27880, 141873, 106000, 19414, 56614, 167714, 66483, 107885, 86602, 4379, 20796, 75467, 4987, 5017, 118857, 26003,\n 34308, 114428, 29198, 6686, 29697, 73632, 3739, 69795, 16798, 41504, 7207, 30722, 21436, 36735, 28067, 28545,\n 3239, 11221, 36031, 41889, 100010, 19247, 317673, 29495, 174554, 6424, 129725, 53845, 94986, 7955, 59676, 2604,\n 191497, 19735, 102214, 62954, 23844, 11872, 179525, 261436, 34492, 428, 78404, 142035, 16747, 17246, 27578, 37021,\n 33672, 57944, 26056, 135760, 2369, 61674, 122066, 31327, 19374, 157065, 40553, 130982, 69619, 71290, 38855, 72100,\n 92903, 95940, 51422, 165999, 65713, 57873, 50726, 7288, 20272, 2081, 42326, 22624, 81120, 57914, 79352, 19447,\n 1684, 72302, 11774, 302559, 161481, 96396, 13692, 414988, 3721, 79066, 56627, 46883, 21150, 11747, 12184, 5856,\n 113458, 176117, 84416, 52079, 27933, 3354, 59765, 141359, 2212, 216309, 2555, 23458, 196722, 142463, 45701, 44548,\n 28798, 19418, 215, 29916, 9396, 10574, 114226, 84475, 13520, 18694, 34056, 4524, 90302, 62930, 13539, 19407,\n 77209, 7728, 38088, 9535, 2263, 23875, 183945, 17750, 26274, 67172, 10585, 28042, 22199, 7478, 51331, 66030,\n 26774, 192929, 31434, 25850, 50197, 52926, 178158, 4679, 181256, 70184, 229600, 9959, 105594, 72158, 73974, 2726,\n 35085, 78087, 23284, 35568, 51713, 155676, 5401, 27254, 11966, 17569, 223253, 71993, 103357, 111477, 55722, 30504,\n 26034, 46774, 35392, 36285, 214814, 41143, 163465, 1051, 16094, 81044, 6636, 76489, 179102, 20712, 39178, 35683,\n 125177, 54219, 30617, 52994, 25324, 50123, 2543, 87529, 58995, 10688, 125199, 12388, 60158, 125481, 131646, 7642,\n 133350, 65874, 3438, 97277, 101450, 10075, 56344, 116821, 50778, 60547, 98016, 106135, 13859, 14255, 16300, 77373,\n 173521, 8285, 45932, 37426, 4054, 114295, 55947, 7703, 39114, 52, 51119, 128135, 19714, 60715, 9554, 50492,\n 88180, 2823, 118271, 52993, 122625, 97919, 23859, 37895, 25040, 33614, 32102, 20431, 3577, 9275, 15686, 43031,\n 157741, 110358, 1884, 40291, 125391, 13736, 5008, 64881, 87336, 77381, 70711, 43032, 49155, 118587, 70494, 4318,\n 10168, 30126, 12580, 10524, 280104, 104001, 145413, 2862, 84140, 6603, 106005, 13566, 12780, 11251, 42830, 571,\n 179910, 82443, 13146, 469, 42714, 32591, 265217, 424024, 92553, 54721, 134100, 6007, 15242, 114681, 59030, 16718,\n 85465, 200214, 85982, 55174, 165013, 23493, 56964, 82529, 109150, 32706, 27568, 82442, 5350, 14976, 13165, 44890,\n 60021, 21343, 33978, 17264, 4655, 22328, 27819, 75730, 16567, 55483, 14510, 17926, 45827, 150609, 3704, 7385,\n 272531, 161543, 76904, 122163, 52405, 2039, 19165, 41623, 14423, 228354, 3369, 176360, 85491, 7122, 35789, 303724,\n 4465, 13628, 2233, 55311, 118771, 20713, 10006, 221519, 45115, 71021, 35650, 29775, 7337, 10864, 20665, 21142,\n 1746, 15080, 1624, 32449, 10905, 105743, 229797, 7701, 3940, 22997, 178467, 57208, 389057, 39683, 59403, 63344,\n 63125, 54847, 69691, 18336, 56448, 3362, 37202, 18282, 29648, 138224, 35867, 10495, 5911, 28814, 26653, 31514,\n 176702, 26550, 45621, 11734, 4525, 40543, 73944, 121080, 27858, 155561, 14887, 44670, 30742, 8796, 107455, 113472,\n 56369, 75581, 183777, 240095, 133699, 153299, 8768, 160464, 26058, 49078, 103971, 21875, 71486, 44888, 17156, 9678,\n 89541, 123019, 102337, 3972, 83930, 21245, 87852, 109660, 287918, 183019, 686, 10100, 39177, 283941, 11274, 24736,\n 26793, 26214, 25995, 77011, 141580, 4070, 23742, 46285, 46632, 30700, 26669, 19056, 35951, 115575, 174034, 56097,\n 35463, 87425, 24575, 44245, 38701, 82317, 85922, 281616, 100333, 147697, 61503, 7730, 84330, 8530, 59917, 61597,\n 17173, 9092, 32658, 90288, 193136, 39023, 20381, 56654, 31132, 7779, 1919, 1375, 117128, 30819, 11169, 40938,\n 23935, 115201, 101155, 151034, 4835, 11231, 74550, 89388, 59951, 91704, 107312, 167882, 115062, 12732, 72738, 88703,\n 464019, 158267, 57995, 60496, 737, 14371, 123867, 4174, 243339, 159946, 7568, 16025, 134556, 110916, 38103, 191,\n 80226, 88794, 29688, 27230, 10454, 76308, 57647, 77409, 113483, 66864, 14745, 19808, 12023, 46583, 84805, 16015,\n 17102, 2231, 20611, 3547, 95740, 250131, 34559, 108894, 8498, 15853, 159169, 148920, 20942, 2813, 93160, 45188,\n 210613, 45531, 52587, 149062, 39782, 28194, 57849, 60965, 84954, 89766, 84453, 100927, 16501, 27658, 165311, 103841,\n 54192, 207341, 19558, 20084, 319622, 5672, 205467, 98462, 61849, 36279, 13609, 147177, 24726, 165015, 209489, 59591,\n 31157, 6551, 117580, 75060, 141146, 277310, 21072, 22023, 106474, 63041, 137443, 122965, 68371, 5383, 42146, 98961,\n 113467, 30863, 23794, 4843, 99630, 30392, 82679, 13699, 241612, 33601, 93146, 24319, 18643, 32155, 95669, 40440,\n 15333, 34089, 67799, 142144, 58245, 38633, 114531, 117400, 77861, 188726, 5507, 2568, 8853, 10987, 107222, 2663,\n 2421, 11530, 13345, 30075, 41785, 118661, 104786, 17459, 12490, 16281, 71936, 193555, 17431, 5944, 71758, 26485,\n 77317, 20803, 367167, 158, 7362, 93430, 11735, 172445, 46002, 11532, 54482, 930, 62911, 2235, 23004, 179236,\n 4764, 101859, 208113, 22477, 55163, 95579, 14098, 67320, 162556, 90709, 156949, 3826, 57492, 4025, 34092, 87442,\n 104565, 6718, 186015, 28214, 14209, 10039, 107186, 233912, 58877, 81637, 55265, 39828, 6194, 145813, 50831, 105849,\n 4974, 88319, 122296, 10272, 197216, 95714, 51540, 72418, 23324, 91555, 8743, 140452, 250249, 51666, 34124, 7229,\n 38592, 129641, 78169, 174242, 22464, 149964, 51450, 14034, 10026, 95376, 26190, 120062, 14401, 8700, 265, 31386,\n 143573, 7203, 229889, 61567, 4227, 140981, 2466, 72052, 10787, 10062, 30958, 6099, 38471, 30103, 23202, 208101,\n 70847, 467, 58934, 32271, 32984, 36637, 24107, 30771, 17109, 73353, 13650, 2098, 157040, 67366, 66904, 106018,\n 265380, 107238, 18535, 44025, 32681, 144983, 62505, 91295, 56120, 3082, 77508, 10322, 63023, 36700, 81885, 224127,\n 16721, 45023, 239261, 111272, 13852, 7866, 149243, 204199, 32309, 22084, 42029, 38316, 126644, 104973, 14406, 43454,\n 67322, 61310, 15789, 40285, 24026, 181047, 6301, 70927, 23319, 115823, 27248, 66693, 115875, 278566, 63007, 146844,\n 56841, 59007, 87368, 180001, 22370, 42114, 80605, 12022, 10374, 308, 25079, 14689, 12618, 63368, 7936, 264973,\n 212291, 136713, 95999, 105801, 18965, 32075, 48700, 52230, 35119, 96912, 32992, 8586, 16606, 101333, 101812, 14969,\n 39930, 759, 193090, 27387, 42914, 12937, 5058, 62646, 64528, 38624, 25743, 37502, 3716, 4435, 30352, 178687,\n 26461, 132611, 42002, 138442, 35833, 59582, 16345, 8048, 60319, 49349, 309, 47800, 49739, 90482, 26405, 34470,\n 63786, 32479, 85028, 39866, 47846, 11649, 23934, 29466, 2816, 42864, 31828, 7410, 74885, 49632, 47629, 111801,\n 90749, 19536, 18767, 105764, 59606, 21223, 10746, 76298, 22220, 39408, 7190, 79654, 64856, 11602, 82156, 272765,\n 17079, 70089, 245473, 51813, 184407, 384678, 1576, 122249, 5064, 27481, 6188, 25790, 74361, 27541, 318284, 45430,\n 31488, 620, 93579, 45723, 192118, 22670, 51913, 4162, 70244, 35966, 26397, 16199, 50899, 209613, 121702, 287507,\n 2993, 36101, 132229, 67345, 33062, 76295, 118628, 78705, 52316, 34375, 107083, 107454, 44863, 127561, 33964, 3073,\n 154010, 190914, 55967, 39074, 6272, 31047, 5550, 41123, 26154, 98638, 47110, 19998, 148091, 50229, 31329, 59900,\n 195442, 19106, 61347, 73497, 70015, 682, 45850, 25776, 38022, 148951, 6288, 37411, 232526, 109277, 27286, 32342,\n 9262, 5220, 16651, 23175, 46740, 129438, 78614, 121925, 66914, 88710, 127952, 5563, 21500, 34521, 10739, 14863,\n 191006, 62956, 17359, 16749, 67027, 56284, 69134, 43301, 35039, 58883, 54466, 60823, 404451, 75743, 59856, 86979,\n 7923, 34273, 83785, 32142, 7693, 268986, 197428, 282681, 17049, 22346, 22990, 92245, 107180, 3357, 37104, 96724,\n 49153, 7683, 31197, 43267, 82231, 164276, 23696, 20848, 188364, 22309, 24821, 158707, 1018, 22514, 70922, 27792,\n 45589, 59709, 10765, 736, 35218, 63479, 51987, 24275, 63588, 55361, 92929, 81964, 4658, 20122, 12330, 44058,\n 13065, 311456, 72224, 8337, 211229, 38979, 22590, 138478, 52757, 32595, 133600, 8838, 31549, 94412, 43391, 90056,\n 1585, 94802, 127271, 6223, 31889, 137038, 132910, 2165, 57616, 230152, 6080, 10748, 36737, 74579, 134062, 50525,\n 180532, 119270, 34556, 76155, 82394, 52595, 29258, 31435, 87820, 67996, 26943, 183878, 38007, 2410, 13526, 180297,\n 69856, 3503, 187396, 167700, 7838, 16701, 9199, 56267, 3661, 37407, 65994, 23767, 5708, 62508, 221700, 67088,\n 86978, 46776, 84434, 32088, 5612, 9149, 88244, 21685, 95151, 46750, 189612, 2979, 506311, 2594, 3628, 40074,\n 105039, 78243, 28523, 6651, 38058, 71999, 30992, 12764, 68261, 108991, 6165, 26450, 61961, 13400, 22426, 7490,\n 60890, 109623, 2070, 12958, 50355, 67979, 257096, 7213, 42578, 52121, 35716, 65461, 7516, 124758, 39268, 302,\n 64712, 14977, 1467, 219452, 2840, 34229, 11121, 21602, 19270, 63574, 8024, 1532, 17331, 79839, 78885, 52029,\n 180767, 57957, 6069, 91265, 61380, 55767, 8927, 32881, 287603, 22149, 35029, 68876, 6428, 199567, 46926, 13412,\n 104132, 21434, 366616, 45060, 110046, 81924, 128910, 45886, 52821, 130416, 29416, 77342, 21762, 67329, 121432, 79924,\n 11724, 38625, 81006, 102033, 28338, 13326, 3250, 82056, 82526, 38212, 21112, 12382, 111495, 3263, 7414, 86274,\n 93490, 40844, 30224, 45212, 24019, 48411, 71367, 24941, 76729, 57776, 3769, 38114, 202019, 197745, 31953, 237533,\n 33270, 201580, 255648, 100798, 44741, 32241, 98468, 106931, 10085, 15090, 170358, 33154, 66787, 18819, 69760, 25061,\n 234005, 82660, 6295, 131975, 16874, 9076, 4094, 25005, 17740, 40908, 19533, 220019, 44330, 99792, 50040, 19619,\n 13950, 55228, 24423, 31253, 95308, 103177, 184795, 28590, 82285, 5059, 3210, 75525, 49894, 70007, 56178, 10580,\n 36051, 139681, 21617, 98736, 3555, 106306, 164189, 37352, 63915, 47824, 24883, 145530, 61904, 28444, 11483, 19837,\n 145446, 30420, 112972, 85939, 11835, 191233, 2262, 20705, 58630, 1753, 148334, 1197, 144714, 6887, 11223, 107667,\n 60879, 77914, 4151, 57417, 81594, 96681, 169430, 1784, 20444, 95138, 254041, 27038, 596, 7117, 72808, 13759,\n 3353, 126776, 21074, 55322, 27081, 36942, 39547, 139830, 179275, 4453, 713, 8722, 71399, 19204, 25785, 22794,\n 23923, 104114, 11291, 25458, 102309, 88396, 75288, 230440, 206396, 104551, 58447, 130857, 37247, 94734, 31548, 176529,\n 226077, 65159, 20104, 10096, 66881, 94191, 237909, 27109, 37404, 1520, 27421, 25220, 113003, 23423, 24884, 50585,\n 6286, 231877, 150800, 11789, 3226, 90004, 60642, 5053, 202400, 61442, 132531, 175329, 57138, 30116, 103847, 9973,\n 75367, 16452, 32360, 59119, 21246, 10191, 164804, 23305, 61051, 37348, 154530, 13214, 5468, 50403, 66754, 130976,\n 50559, 80515, 14436, 155492, 84017, 5472, 43107, 41240, 2890, 90431, 70188, 382, 76234, 48040, 50211, 281038,\n 237007, 32115, 142178, 1536, 22761, 96429, 1811, 31243, 1679, 49143, 55209, 17402, 235054, 61494, 7462, 77030,\n 34925, 87609, 78002, 9499, 9027, 73289, 201078, 101379, 63544, 27666, 5469, 10642, 30029, 49816, 132979, 95620,\n 58086, 351930, 116300, 2110, 2043, 30845, 6154, 11279, 16727, 4122, 2277, 27281, 4971, 3650, 39060, 61970,\n 65951, 39674, 75686, 38151, 11370, 130809, 177895, 32665, 63725, 122267, 7857, 39618, 118483, 44792, 157755, 178624,\n 136994, 24260, 41308, 22471, 12404, 21707, 12486, 30473, 52781, 50246, 20247, 39065, 909, 56825, 103158, 128603,\n 31542, 1089, 41935, 32744, 12428, 37963, 84420, 33134, 72921, 208449, 42622, 168151, 127335, 147107, 46699, 38216,\n 12591, 94342, 85814, 31423, 24944, 2605, 87542, 67473, 192551, 4496, 56321, 91819, 17630, 6300, 256183, 114569,\n 202090, 33209, 35289, 34897, 24967, 40520, 43470, 5344, 10199, 34810, 14283, 10381, 10017, 62923, 49924, 23233,\n 64539, 13051, 35686, 19698, 11570, 135555, 120868, 44924, 87065, 52318, 52335, 47586, 140906, 245885, 109834, 78668,\n 9065, 46990, 25258, 72022, 61243, 40838, 4545, 146387, 10537, 11557, 17470, 36930, 68104, 46711, 24264, 79401,\n 81043, 18225, 120488, 24746, 84338, 81652, 28266, 13776, 21878, 46973, 1047, 230465, 73357, 95777, 24973, 210160,\n 62210, 58404, 110633, 169651, 6937, 41870, 9909, 26822, 191062, 76553, 27519, 96256, 239070, 2478, 205678, 67955,\n 58532, 20601, 50120, 19148, 78501, 195724, 110740, 8249, 109665, 27446, 30568, 57631, 31425, 49752, 32820, 65504,\n 50079, 3663, 102256, 219898, 23849, 211315, 14645, 4359, 91767, 9528, 12449, 49366, 7941, 49763, 107848, 8930,\n 27086, 50686, 9744, 10447, 81935, 39513, 46514, 1670, 29229, 6172, 22312, 137280, 97759, 9806, 14445, 22976,\n 56458, 73391, 34983, 93760, 174219, 52573, 33149, 59747, 2429, 136277, 75123, 165263, 91040, 7446, 57632, 48633,\n 97140, 246081, 84766, 151684, 79918, 93268, 120346, 54059, 54875, 77858, 32996, 103590, 45276, 11968, 19600, 25849,\n 17159, 132907, 42828, 16817, 4913, 99462, 103303, 27395, 5737, 74184, 20749, 21160, 14377, 77062, 131403, 158735,\n 10999, 27799, 77785, 9320, 34366, 51593, 61070, 33746, 47048, 29268, 36675, 30262, 53297, 9832, 82000, 20188,\n 122292, 39917, 7331, 18160, 68301, 185935, 134830, 15031, 4935, 10004, 165845, 185534, 46923, 30109, 44134, 122631,\n 18874, 22903, 112790, 26561, 18549, 348902, 82871, 140345, 255565, 135390, 63556, 103747, 145055, 179600, 145662, 296111,\n 61661, 211987, 23952, 52342, 126343, 48450, 32919, 44277, 82185, 9591, 62139, 205363, 376969, 394874, 108461, 18040,\n 120885, 14798, 39863, 16571, 16794, 58271, 81025, 55206, 14640, 118656, 6361, 44092, 85970, 6262, 153863, 108244,\n 180200, 72264, 79947, 38044, 10050, 5735, 61221, 80712, 5471, 115689, 11391, 11661, 184257, 20010, 60116, 30320,\n 19327, 134598, 45455, 27542, 18004, 125092, 452272, 1549, 91523, 46567, 180063, 156026, 2608, 11174, 58848, 37788,\n 65907, 80194, 30490, 5786, 40775, 119519, 106241, 11323, 156297, 8425, 61495, 2617, 29675, 2425, 59886, 112582,\n 49142, 59618, 4863, 50597, 86710, 50650, 168632, 27693, 85641, 83643, 18993, 25768, 84284, 28090, 93592, 36627,\n 312804, 43381, 9887, 9402, 100931, 97165, 3311, 173330, 66805, 28935, 4963, 184460, 3201, 78102, 19126, 21607,\n 37496, 24938, 22615, 16153, 32862, 134792, 153318, 61120, 6067, 2812, 12826, 12792, 23825, 37559, 64662, 202250,\n 102694, 155488, 85881, 149193, 46233, 65383, 15521, 106982, 11358, 176786, 25752, 39717, 34208, 24510, 32464, 77742,\n 39371, 72028, 138229, 60688, 71386, 102834, 132477, 2208, 11548, 63670, 271279, 28351, 30338, 38620, 32491, 99845,\n 143885, 152266, 13252, 2825, 178663, 108097, 1775, 78201, 14897, 113573, 163346, 62292, 171129, 22183, 96598, 38733,\n 64971, 166776, 117445, 9968, 146393, 44677, 74867, 20908, 97328, 12761, 25656, 26785, 9148, 112344, 26115, 99176,\n 110121, 22437, 49547, 6180, 79320, 5835, 31392, 43328, 33377, 75870, 119860, 69497, 80273, 7325, 155219, 43167,\n 111173, 28347, 20222, 3763, 71752, 55041, 47252, 14618, 28088, 15012, 97805, 194698, 54636, 2036, 41349, 6173,\n 96604, 61530, 51859, 43782, 13361, 24334, 22668, 24792, 7070, 23441, 16789, 3209, 36211, 208475, 26242, 32880,\n 122181, 182407, 21444, 31060, 88459, 29929, 77907, 12716, 10934, 97005, 20599, 31690, 8403, 58445, 30303, 22700,\n 10336, 86731, 103115, 337709, 72556, 46788, 112566, 47684, 67089, 53548, 36874, 56487, 41387, 125985, 26893, 40071,\n 106683, 73712, 18787, 40105, 72992, 67246, 137276, 50802, 36790, 70328, 138827, 22466, 39263, 183295, 29858, 50975,\n 9322, 57397, 10654, 24364, 30383, 55799, 41600, 23584, 127295, 296610, 129078, 143558, 244131, 86397, 36049, 1085,\n 80677, 3820, 108139, 5476, 34767, 24683, 7758, 13060, 7239, 131671, 250593, 59556, 103392, 29810, 4188, 252323,\n 39404, 116877, 7651, 43600, 40338, 13554, 157253, 39196, 25978, 144387, 61211, 234, 50104, 6129, 10449, 93777,\n 9240, 356378, 274148, 4439, 72970, 3724, 147770, 78680, 62570, 115877, 40027, 40547, 36817, 224392, 64609, 34795,\n 165027, 67440, 2477, 37206, 23431, 50754, 164797, 46018, 94995, 170982, 27051, 7957, 22767, 3674, 27900, 56419,\n 18930, 60701, 41302, 2692, 84749, 339721, 61996, 111094, 80221, 50129, 1045, 8153, 62945, 19202, 8250, 37208,\n 37418, 32560, 79477, 41106, 88569, 33963, 36693, 5892, 30570, 1581, 66471, 49647, 11922, 160717, 29442, 5643,\n 114865, 82962, 95982, 132098, 22633, 22838, 94726, 54556, 28566, 205039, 162340, 33216, 16849, 35847, 221339, 94851,\n 26533, 71469, 1805, 3804, 12935, 45483, 71020, 36310, 65381, 192960, 34240, 35165, 59773, 1248, 46954, 155332,\n 96864, 4246, 388800, 16129, 57133, 74592, 44807, 442014, 38203, 42574, 80818, 91592, 26377, 36424, 65760, 977,\n 77387, 22628, 147610, 28018, 30561, 98454, 6969, 119628, 63648, 18170, 36854, 26601, 64018, 22027, 37279, 51395,\n 152934, 21153, 9430, 58760, 194742, 5330, 55115, 34158, 28917, 174111, 13171, 122326, 1526, 43896, 66094, 25325,\n 4234, 148354, 11450, 275, 18999, 112191, 44365, 22723, 68409, 8733, 57746, 96565, 75007, 14196, 108844, 29475,\n 88599, 177563, 100792, 106156, 86323, 93726, 14248, 135341, 194131, 40126, 47099, 14779, 8272, 39597, 95983, 171398,\n 65882, 28052, 10393, 47213, 40689, 22120, 72212, 106829, 34964, 109146, 753, 648, 21660, 30047, 17527, 181025,\n 5619, 145357, 4085, 216883, 9359, 186951, 24779, 53931, 24545, 36197, 223296, 62628, 168101, 4243, 107313, 30321,\n 26642, 13049, 51059, 31027, 107912, 807, 73550, 26551, 84369, 122422, 165872, 49754, 74213, 234264, 33151, 52014,\n 33100, 87183, 22365, 52500, 40013, 23302, 5652, 72723, 21404, 26107, 48434, 587, 94049, 168493, 96418, 32871,\n 70860, 31709, 25128, 443, 71597, 166253, 15670, 70994, 26341, 133675, 28280, 75491, 54756, 47955, 56028, 26182,\n 11952, 113272, 472197, 64640, 110753, 17919, 337, 50642, 22576, 142, 87371, 53391, 93210, 126694, 15285, 19642,\n 85667, 14148, 1506, 42092, 52962, 33243, 11970, 20734, 135843, 57044, 58880, 13002, 219134, 22876, 64754, 232519,\n 4257, 43120, 321573, 24799, 64526, 124728, 52579, 81472, 70831, 276848, 17403, 74359, 23021, 182101, 74597, 23744,\n 148267, 12055, 7976, 5349, 11772, 67540, 167347, 65318, 18720, 127832, 108238, 22828, 90233, 9987, 259080, 118185,\n 73209, 79270, 13775, 90100, 137742, 90799, 70569, 15699, 19961, 9087, 67475, 57872, 39731, 8810, 134897, 131868,\n 146849, 19898, 3334, 2281, 167061, 91073, 60356, 467742, 74712, 188, 53179, 137679, 92769, 29241, 9537, 132595,\n 80119, 1041, 88962, 5976, 40171, 44911, 102859, 139059, 104558, 98987, 47761, 19272, 71472, 113864, 175377, 73338,\n 10857, 23402, 23758, 1591, 139864, 5644, 4076, 118760, 16427, 134198, 18853, 20291, 100849, 37423, 22038, 36677,\n 19071, 195521, 57445, 11069, 31869, 55718, 66882, 148490, 44, 41296, 75242, 49704, 166810, 9906, 20943, 122258,\n 49112, 105667, 15969, 10344, 6408, 187694, 21399, 72742, 58970, 14867, 14376, 81889, 41856, 23225, 15042, 56993,\n 16074, 131389, 74276, 72407, 53875, 383108, 53597, 37363, 68993, 44854, 122548, 430927, 198279, 38430, 80409, 12245,\n 2981, 628, 2818, 17760, 37437, 238229, 7968, 46892, 2200, 3730, 34190, 65983, 37959, 112291, 87850, 70827,\n 6522, 20750, 73913, 111621, 41652, 19587, 2780, 58668, 25916, 85259, 18200, 168962, 95781, 42445, 102050, 7776,\n 57662, 103313, 47742, 96358, 41964, 66174, 100396, 29069, 204735, 19679, 27978, 7479, 40264, 22534, 61183, 36081,\n 107436, 58223, 14680, 23002, 101311, 24716, 124108, 12908, 5646, 31750, 40380, 14215, 232799, 102772, 14122, 96775,\n 61398, 50917, 12096, 149880, 67833, 598749, 124194, 155871, 49216, 790, 14677, 65319, 56917, 7440, 145744, 95701,\n 12206, 49405, 129269, 76199, 45732, 9767, 11058, 9047, 210885, 11051, 7392, 26307, 2130, 8132, 147526, 20802,\n 232698, 115660, 50060, 59789, 57344, 107623, 80343, 112676, 23291, 9866, 160971, 34032, 118291, 15719, 59730, 164911,\n 28975, 2659, 58046, 78480, 21854, 66209, 53863, 109085, 116045, 29021, 46481, 107552, 22130, 18764, 70254, 31272,\n 11300, 52460, 43933, 84738, 20721, 53869, 190840, 79673, 105300, 7561, 321817, 66924, 13940, 33281, 101046, 183181,\n 32176, 71878, 5678, 62924, 79535, 56646, 40303, 19559, 27703, 93042, 73368, 42187, 3670, 37376, 46440, 7023,\n 36816, 109628, 20680, 5940, 276440, 275233, 170848, 112093, 136996, 14984, 20226, 111441, 77693, 112960, 48577, 39370,\n 55707, 50314, 123404, 26570, 54281, 61372, 123391, 4857, 35928, 246740, 132507, 106646, 44241, 7196, 92258, 9825,\n 37688, 51197, 303141, 5590, 15476, 132986, 10955, 85782, 34486, 26696, 7991, 28813, 18858, 39546, 11703, 11365,\n 38185, 5716, 93555, 11925, 40121, 60002, 6985, 10976, 171384, 3887, 43394, 13337, 56346, 6381, 252336, 39573,\n 75042, 53711, 1028, 31781, 44295, 95925, 131713, 7214, 68125, 43571, 70954, 213234, 1628, 8760, 13391, 65485,\n 17320, 56038, 1710, 25248, 60803, 57399, 19839, 3870, 326, 281556, 50945, 72400, 21460, 316244, 75619, 56246,\n 98775, 481, 13513, 55765, 50427, 7388, 123519, 32929, 57908, 27124, 61316, 101097, 57467, 30228, 48792, 10788,\n 20402, 37318, 50526, 155730, 34456, 158065, 145305, 17832, 43733, 64052, 4506, 35072, 205355, 177028, 184004, 187081,\n 68616, 35938, 83703, 10367, 36892, 93186, 260137, 51934, 89970, 4985, 23445, 26755, 21558, 7948, 78741, 23376,\n 124405, 85594, 68596, 57536, 49351, 12619, 56593, 132668, 99924, 109728, 71844, 71935, 196018, 65464, 17617, 14987,\n 89701, 143773, 33997, 8687, 22701, 33258, 2914, 4436, 72108, 85610, 9671, 49067, 2327, 82988, 1361, 1672,\n 44033, 35777, 30269, 24057, 10605, 82236, 616, 15793, 13919, 47249, 112086, 116698, 9484, 80207, 90574, 33304,\n 68624, 93127, 56101, 42210, 160929, 4827, 38995, 38095, 4701, 125119, 5027, 33680, 9236, 231236, 14135, 87837,\n 23318, 70261, 78893, 30151, 81482, 14332, 1084, 74256, 27532, 46644, 79185, 3148, 62615, 6981, 55672, 31668,\n 36825, 1849, 14536, 37446, 14738, 23779, 43058, 162749, 72199, 1168, 21346, 5592, 85932, 85302, 9668, 18351,\n 57135, 150360, 2080, 228015, 77953, 34670, 119302, 151751, 31009, 106725, 84265, 45214, 59289, 74178, 113071, 263206,\n 111009, 4021, 44449, 188119, 192629, 123592, 392506, 292847, 114487, 12831, 205858, 9852, 20780, 79648, 75767, 357014,\n 97721, 18166, 21005, 67950, 33226, 204009, 16536, 2987, 11335, 66717, 144910, 47950, 17262, 55060, 15063, 2934,\n 51038, 26775, 178497, 66008, 3427, 49433, 128592, 20036, 157553, 63861, 3089, 23015, 51210, 28696, 35933, 49942,\n 71135, 231518, 99620, 17248, 21835, 176536, 20676, 16944, 38700, 165831, 233253, 295625, 36723, 13023, 52745, 10907,\n 19423, 67972, 125868, 95473, 82875, 1183, 108455, 52685, 33417, 64095, 21433, 52438, 33191, 127809, 44505, 211823,\n 7810, 2752, 95548, 162031, 7185, 91196, 47563, 61721, 33359, 17897, 23682, 42806, 178101, 22874, 49707, 199897,\n 75419, 82456, 8618, 11171, 79712, 116847, 18783, 44190, 46564, 5346, 59046, 95032, 7893, 14916, 3214, 26800,\n 24172, 121453, 34362, 10250, 17408, 18888, 4840, 68696, 22831, 13162, 36005, 32512, 14800, 62357, 41723, 45046,\n 27247, 37486, 5372, 2564, 34261, 298500, 66509, 133920, 89138, 31305, 117697, 19097, 108304, 81386, 84106, 23802,\n 46411, 63304, 946, 51417, 41777, 41041, 19501, 115864, 60743, 294354, 37955, 94165, 18116, 1156, 17937, 20645,\n 57114, 90804, 58042, 48643, 92288, 9861, 2557, 88546, 61333, 101008, 12853, 5148, 87856, 4152, 144503, 73841,\n 18718, 9789, 147565, 10846, 42085, 12789, 30223, 8993, 56352, 67203, 2448, 28215, 6052, 23540, 126319, 75933,\n 36689, 80235, 23231, 23561, 21383, 38800, 77548, 102798, 21234, 31468, 158608, 46188, 63960, 191679, 8051, 67014,\n 11185, 170078, 42186, 28827, 34777, 41930, 212079, 12421, 34750, 24111, 110344, 73918, 45171, 70826, 141949, 40063,\n 23979, 24254, 37309, 26724, 27179, 24718, 83648, 54938, 14591, 17425, 29525, 102675, 48975, 48654, 12316, 8929,\n 60640, 41709, 50168, 63264, 89812, 50716, 48632, 38755, 138583, 160123, 55579, 71829, 24230, 233277, 46322, 39650,\n 166388, 34718, 24108, 98252, 7031, 106695, 62498, 18258, 35062, 217827, 78731, 34824, 33354, 19520, 60852, 2432,\n 60224, 8587, 2836, 62955, 702, 20227, 42285, 40560, 95592, 62486, 11094, 53035, 143291, 18842, 46177, 77994,\n 1770, 9657, 107422, 172915, 32655, 128716, 25886, 25164, 156740, 119928, 165875, 85817, 11007, 89110, 33956, 12652,\n 65156, 180266, 8494, 36889, 19958, 20955, 96, 1264, 118288, 135769, 44754, 86671, 5632, 19026, 168220, 289120,\n 33569, 93821, 66144, 70635, 7687, 5642, 2714, 55445, 56636, 71545, 184182, 93133, 7332, 37389, 12643, 52315,\n 22729, 11014, 158742, 17050, 152889, 50178, 34601, 41945, 52136, 9948, 26914, 63548, 95721, 115951, 40759, 8960,\n 158258, 38938, 49232, 48325, 42234, 81523, 253019, 66128, 40978, 20048, 238048, 38760, 62928, 122560, 118532, 43687,\n 137472, 163689, 26680, 9878, 17448, 51035, 16211, 60834, 36749, 29178, 14241, 59868, 150086, 2305, 26477, 42422,\n 34342, 165341, 83279, 33894, 14257, 29928, 12743, 13957, 125571, 89134, 66712, 10952, 16507, 147839, 30146, 7249,\n 16565, 45399, 39874, 114565, 215780, 31990, 230881, 171477, 102, 196546, 44538, 10880, 84948, 281705, 86651, 10617,\n 31395, 2342, 453658, 43569, 60561, 132901, 21845, 17727, 58556, 258242, 22262, 58728, 4008, 77997, 11806, 37431,\n 30599, 81375, 109137, 185787, 114085, 217292, 97453, 169085, 30593, 60212, 11544, 102056, 65580, 2384, 91655, 4855,\n 95725, 7295, 157994, 16228, 20669, 53276, 141590, 105246, 17334, 25440, 76067, 17967, 39321, 38911, 11362, 28559,\n 63807, 21627, 26468, 85816, 40120, 1025, 15234, 58319, 69516, 66512, 124548, 75845, 78873, 22137, 46681, 51242,\n 85683, 32909, 76747, 35555, 43396, 101465, 1765, 73094, 1077, 2962, 39028, 66777, 57831, 42048, 15828, 13962,\n 36041, 63657, 52412, 5242, 58846, 2141, 5506, 219012, 134451, 3936, 182230, 17558, 17153, 152237, 22621, 49377,\n 170216, 35257, 68233, 65374, 6510, 11126, 212151, 7184, 2480, 22517, 3437, 33073, 30156, 16557, 3768, 55067,\n 86829, 91000, 12350, 148650, 66017, 79424, 70885, 49066, 28250, 21369, 51213, 34533, 11510, 3258, 18176, 18465,\n 84413, 6315, 36411, 163765, 4346, 356, 107618, 598, 13727, 285026, 162695, 8749, 14583, 7132, 63521, 184253,\n 32378, 25991, 5604, 30961, 53675, 4874, 84693, 5086, 34811, 26978, 56564, 7904, 33519, 51221, 113942, 69253,\n 6664, 125563, 22055, 220680, 102008, 742, 51930, 19494, 176108, 44424, 35123, 13025, 75685, 11759, 74335, 22250,\n 181453, 131147, 16984, 132115, 154311, 11991, 76452, 52609, 85351, 196, 30969, 9198, 74919, 2529, 56838, 71779,\n 29187, 116304, 3504, 62330, 41190, 86153, 28393, 254926, 104228, 105189, 13264, 84359, 3574, 12415, 8534, 57147,\n 10175, 188174, 59504, 60932, 66318, 16407, 107921, 17638, 99103, 49278, 28403, 39786, 145865, 8462, 3558, 43406,\n 142271, 29139, 21989, 36552, 93955, 72365, 7176, 13556, 106185, 37957, 321774, 17782, 129017, 51154, 27938, 24952,\n 1935, 39366, 2791, 33489, 41582, 56078, 24558, 9311, 5449, 218786, 27808, 190429, 68013, 36020, 86003, 29735,\n 3404, 87348, 119357, 115714, 2324, 86796, 81973, 40992, 43376, 93621, 28784, 16808, 36367, 2517, 2909, 191926,\n 24978, 55303, 53308, 205724, 60068, 3098, 21375, 64784, 23949, 26579, 63121, 12319, 80145, 39967, 97861, 6757,\n 70143, 67642, 37082, 34698, 69140, 122883, 46151, 62187, 80934, 429, 19437, 135071, 137885, 222647, 13331, 154065,\n 327, 61778, 74257, 40116, 37493, 14855, 85079, 237641, 42342, 102164, 199965, 71204, 4662, 29368, 5042, 113914,\n 122214, 8955, 13149, 102503, 43173, 5659, 163787, 69003, 307084, 63392, 171080, 21390, 81918, 86666, 36622, 24126,\n 28887, 5736, 28054, 207170, 163428, 79891, 346467, 95363, 38980, 111806, 80828, 9200, 19288, 294896, 114468, 87405,\n 111715, 141705, 7015, 72754, 68463, 48738, 243147, 33397, 101210, 37051, 98801, 82847, 20397, 4940, 185559, 18716,\n 54718, 83491, 11725, 40803, 1128, 12128, 23060, 5174, 7745, 67007, 46701, 1571, 27807, 180186, 256996, 18975,\n 16837, 7877, 212758, 250379, 15440, 87954, 57755, 24719, 124057, 83461, 258, 50864, 8874, 29038, 71289, 31627,\n 15429, 9005, 4061, 113851, 107716, 82819, 13651, 79656, 117851, 17539, 111446, 12938, 39724, 190787, 4352, 15402,\n 21070, 62708, 8539, 23777, 73853, 13552, 38810, 86117, 16285, 56400, 1718, 75342, 142863, 29033, 378, 110113,\n 180321, 32586, 23606, 26393, 160984, 207987, 23783, 8406, 16904, 24596, 47274, 11693, 46539, 60524, 78595, 48423,\n 31718, 20170, 9009, 146268, 15183, 191060, 172765, 1349, 138436, 37365, 10970, 40509, 225817, 20021, 70394, 152138,\n 21541, 66559, 66544, 89352, 2725, 17258, 91345, 7313, 3815, 115868, 8660, 40362, 4071, 103524, 39388, 118275,\n 21950, 6549, 38226, 32754, 209574, 29201, 43495, 18028, 20296, 40597, 18370, 47520, 202450, 24134, 2219, 8195,\n 69545, 38041, 136934, 46374, 19041, 159811, 84865, 58620, 846, 98749, 13569, 30714, 97246, 32186, 4479, 27355,\n 92973, 35214, 151491, 75963, 37631, 1561, 27200, 238083, 23182, 60756, 12291, 25766, 39355, 102333, 87362, 65741,\n 59906, 19538, 201575, 48772, 102938, 24438, 292580, 39964, 66366, 9004, 61379, 50548, 37622, 38732, 28379, 68180,\n 76622, 17488, 69849, 5963, 7219, 48143, 43413, 55358, 540, 58691, 29506, 19245, 52193, 48621, 5518, 13048,\n 118625, 44755, 191081, 42061, 89197, 2259, 60665, 66994, 71210, 51232, 3585, 142096, 55024, 7892, 8345, 58653,\n 463307, 65658, 64319, 137941, 136323, 53499, 12746, 43492, 6978, 95163, 29925, 60175, 5128, 7352, 41463, 184756,\n 121146, 20473, 18426, 4598, 5309, 54580, 14277, 121151, 10691, 56711, 43880, 63409, 76682, 11830, 172218, 264898,\n 32632, 66536, 81062, 31649, 25788, 92774, 60222, 11100, 63159, 9432, 224657, 25240, 53613, 152, 138620, 163829,\n 2397, 85345, 12501, 37507, 64932, 38575, 43522, 65789, 80198, 78796, 35226, 3851, 108891, 73311, 3060, 28391,\n 93671, 39663, 46142, 30982, 66041, 37281, 68157, 26553, 71872, 81142, 211527, 39747, 118119, 22695, 2859, 11066,\n 20232, 168911, 7933, 197005, 17066, 111071, 44434, 133994, 120798, 12766, 227798, 45756, 132852, 29917, 36076, 55352,\n 65281, 129800, 41958, 18944, 84678, 18580, 168093, 132621, 39997, 54092, 27740, 32354, 3770, 114118, 103242, 43918,\n 15899, 18574, 145944, 3190, 123469, 219903, 24169, 100571, 62403, 16776, 92779, 14535, 17168, 16475, 14304, 37231,\n 1712, 28218, 242754, 61688, 28980, 1318, 51359, 222657, 99200, 67989, 31772, 23932, 35351, 201251, 49041, 27306,\n 19128, 40135, 3986, 77333, 19649, 120683, 151927, 21081, 7076, 78375, 77501, 101599, 8011, 89585, 96715, 58179,\n 5378, 102138, 106793, 26051, 217276, 4197, 16297, 27014, 46721, 13322, 22806, 5278, 29629, 70632, 9647, 71519,\n 58818, 40603, 128530, 8903, 36770, 56900, 31483, 26935, 43845, 34265, 34920, 87658, 6114, 84767, 64250, 47318,\n 50720, 19264, 162514, 33357, 13117, 6705, 46696, 75032, 71054, 87004, 42035, 69138, 11903, 99854, 102328, 19611,\n 34525, 69312, 6431, 49842, 101600, 133178, 108751, 41829, 89939, 225664, 48916, 99556, 9195, 130387, 5960, 36857,\n 116724, 53518, 94002, 39077, 53996, 6945, 22261, 64291, 8314, 152785, 57588, 16522, 9091, 5048, 87671, 35441,\n 39509, 1945, 12423, 158923, 178413, 37549, 14095, 1475, 73188, 62878, 4819, 24012, 68534, 42606, 4010, 120809,\n 57497, 59564, 101758, 103718, 32701, 80116, 12345, 95834, 46918, 21468, 53213, 15665, 31200, 3867, 5140, 96013,\n 250744, 21016, 10069, 13968, 35449, 180829, 27683, 39704, 59956, 22893, 3115, 26293, 32785, 75934, 62445, 141162,\n 62720, 2018, 83638, 19949, 114012, 95006, 3330, 99829, 130935, 309272, 9565, 55874, 121727, 37017, 23586, 319858,\n 40970, 27602, 8625, 112329, 61060, 100088, 118525, 25922, 16232, 1907, 60671, 51583, 44553, 80993, 5262, 94679,\n 8676, 940, 20736, 11823, 3020, 16476, 12340, 152600, 97416, 3703, 25744, 66826, 16245, 16876, 46446, 84798,\n 74227, 176020, 45192, 61955, 75496, 23946, 23626, 40372, 26036, 6149, 11822, 30582, 16541, 41914, 82385, 232823,\n 40921, 80773, 14930, 3631, 7517, 39619, 4348, 36180, 126106, 138939, 62611, 1477, 113512, 47321, 25052, 14546,\n 118881, 29060, 23589, 128322, 36795, 18401, 137921, 104699, 267929, 36194, 172791, 18113, 4766, 188215, 30083, 332586,\n 94089, 5805, 77909, 22194, 68234, 154976, 43220, 40660, 70001, 184893, 138095, 11128, 103010, 22663, 5108, 212615,\n 8485, 5565, 49222, 54614, 26530, 42639, 16319, 55062, 152662, 105595, 21114, 22216, 10294, 68158, 10436, 86950,\n 7206, 62115, 3977, 3657, 59874, 456, 118617, 18156, 106663, 112229, 80992, 17442, 8217, 55551, 5133, 34344,\n 251927, 51153, 39364, 201321, 7816, 66803, 23057, 156724, 145664, 14276, 95705, 979, 2796, 6875, 13429, 212525,\n 50602, 26276, 28284, 3424, 19465, 52397, 46963, 31420, 51399, 206476, 92317, 48851, 637, 100820, 83349, 10317,\n 60227, 21972, 6908, 282439, 32857, 224767, 95629, 83882, 42106, 87338, 69757, 29840, 68709, 37665, 45244, 114577,\n 49188, 175943, 54009, 186746, 106158, 70168, 3358, 234002, 50555, 9221, 129338, 9562, 20118, 32923, 78479, 118280,\n 65752, 4977, 10474, 102174, 60947, 129006, 10570, 83451, 8598, 8078, 159367, 123785, 80438, 16742, 5905, 5281,\n 181513, 42402, 6977, 163136, 93179, 42191, 14968, 50421, 112401, 105440, 33456, 57347, 121611, 4221, 94954, 36517,\n 24046, 27796, 6255, 33394, 72990, 135408, 116627, 1233, 57874, 25654, 95419, 68156, 401399, 313338, 55208, 45573,\n 93124, 119251, 47200, 38196, 11909, 130667, 45391, 73904, 64964, 167846, 4137, 115606, 52036, 62214, 7969, 160925,\n 7187, 1132, 134835, 40309, 73195, 64494, 80472, 444841, 61111, 26500, 45323, 40743, 53625, 52797, 22659, 15631,\n 29739, 36706, 28841, 39147, 102836, 26794, 10536, 14845, 87305, 45874, 12241, 127587, 83833, 57183, 79722, 30844,\n 41304, 84655, 20825, 92500, 3722, 25655, 27811, 10157, 81634, 31362, 34088, 92487, 70123, 22190, 185100, 72658,\n 139035, 192523, 88241, 2078, 230490, 44528, 85638, 100198, 22088, 29982, 291233, 241062, 13865, 4445, 137791, 37835,\n 107218, 31726, 19718, 38234, 72528, 23046, 19177, 66695, 5109, 17251, 28077, 5617, 21554, 47839, 72425, 133825,\n 1486, 73065, 181275, 141508, 21768, 62971, 63082, 2512, 34200, 9904, 120309, 6392, 91243, 68416, 268253, 41199,\n 116757, 138551, 185526, 41246, 28986, 4093, 19057, 17295, 4148, 245766, 122360, 35356, 112075, 20301, 75441, 10998,\n 7977, 19769, 62922, 937, 63547, 100196, 26427, 157820, 20983, 236696, 22935, 8140, 90315, 156004, 47204, 140973,\n 7726, 45097, 52725, 22636, 23436, 257282, 105247, 522, 88389, 216031, 202204, 46812, 211666, 19693, 68828, 81691,\n 45925, 11256, 30292, 372, 5236, 167826, 88328, 232776, 151611, 5360, 82104, 18841, 80393, 25465, 18285, 20320,\n 72377, 31730, 33160, 45803, 38715, 27705, 37379, 24163, 18360, 103586, 4015, 32305, 269494, 91252, 20080, 36567,\n 54650, 7797, 57073, 12650, 31164, 42209, 6375, 261663, 105528, 81661, 106002, 2800, 5375, 17247, 43151, 4442,\n 15727, 194619, 100855, 144898, 62320, 78465, 39929, 16454, 1967, 28311, 61363, 17219, 9395, 8745, 121445, 76939,\n 80385, 162380, 22009, 54191, 44248, 16299, 122830, 48151, 74429, 78291, 64755, 14238, 44966, 2511, 17712, 67954,\n 93583, 829, 105899, 49935, 84750, 11591, 33185, 85447, 42717, 27409, 208542, 28965, 62052, 52525, 5597, 25694,\n 65594, 16343, 63224, 276188, 12475, 9331, 127507, 38522, 57287, 24128, 133161, 79723, 105548, 133695, 48917, 27558,\n 43278, 46520, 13778, 141954, 110785, 83366, 17715, 46317, 105763, 66298, 147013, 41086, 94180, 16478, 220447, 44611,\n 730, 19722, 78975, 117889, 125643, 26254, 16574, 18480, 65006, 15806, 38549, 246418, 46052, 36056, 8440, 34984,\n 30170, 3163, 59800, 4458, 115442, 4283, 41970, 33507, 104078, 1653, 22, 121158, 276486, 3655, 6338, 24048,\n 133421, 23641, 2161, 24422, 36006, 8086, 10675, 181474, 12307, 29514, 59143, 14729, 52509, 87128, 122470, 19446,\n 80852, 33314, 24573, 119864, 14237, 9652, 57779, 6612, 51851, 15284, 98871, 90581, 124466, 156831, 21190, 22015,\n 71380, 161906, 87247, 69201, 18392, 17908, 108470, 72962, 40719, 14338, 17911, 95260, 43339, 20610, 78916, 20710,\n 72451, 11315, 31448, 17263, 58853, 178878, 48111, 116002, 45497, 80506, 82605, 85880, 36300, 121755, 25215, 36118,\n 301929, 88728, 405223, 276136, 553, 34704, 212438, 49970, 78329, 922, 20711, 25036, 257130, 38295, 145369, 18128,\n 15385, 30829, 55656, 48345, 8012, 3561, 28004, 122041, 192900, 58338, 112508, 41085, 29976, 87040, 47117, 23905,\n 4336, 92061, 138880, 97407, 42083, 172121, 6256, 25192, 172671, 5, 93568, 1420, 12677, 31605, 56743, 40620,\n 6015, 78415, 231077, 31298, 80026, 13902, 19048, 24924, 170586, 32955, 176119, 87859, 36731, 6773, 27711, 24658,\n 26475, 115216, 133207, 93250, 95820, 88522, 8317, 5714, 124047, 55219, 86860, 19677, 23961, 22928, 162209, 8904,\n 225992, 359835, 56084, 96201, 29392, 96558, 86071, 93643, 55114, 13347, 8183, 95129, 82012, 2017, 123336, 34219,\n 115554, 157159, 47747, 101684, 41008, 18735, 193781, 104151, 226906, 7552, 179874, 124113, 31159, 21162, 44010, 14771,\n 51268, 166128, 31382, 73124, 77438, 92830, 205709, 12113, 1292, 38937, 13114, 1334, 2118, 15597, 69581, 14449,\n 21934, 76618, 48728, 67038, 14967, 51495, 24243, 87736, 147249, 26720, 11119, 46063, 43749, 5843, 44147, 152629,\n 133428, 65703, 14269, 45604, 57982, 28672, 55616, 45957, 8438, 95433, 37698, 220862, 132034, 39456, 61870, 4161,\n 26501, 73560, 56418, 9845, 4654, 20916, 10456, 88920, 119358, 9015, 65931, 96507, 48029, 38534, 21676, 109081,\n 43078, 34943, 25089, 6131, 28766, 23665, 5477, 10255, 16695, 67, 45778, 42443, 42770, 29534, 23733, 100513,\n 62617, 42630, 48746, 14191, 43753, 50295, 26007, 8792, 57243, 43119, 54725, 164253, 58250, 112304, 131796, 25165,\n 4651, 3188, 24831, 47748, 3705, 19540, 13211, 102095, 5593, 18699, 23666, 32005, 117571, 33541, 60584, 74573,\n 86311, 99443, 25172, 27222, 168938, 7143, 11853, 53560, 18834, 19960, 86522, 28217, 53266, 117700, 72989, 34323,\n 18721, 66450, 34346, 74056, 47217, 202002, 46269, 9429, 68582, 75458, 37823, 82843, 96652, 32549, 145144, 27958,\n 19820, 158086, 31955, 201406, 135379, 31207, 192545, 12950, 51704, 9094, 248263, 76147, 64028, 110009, 79407, 89345,\n 99284, 223492, 47966, 26848, 15359, 201137, 2861, 110507, 71231, 72297, 31851, 118777, 71039, 151051, 240855, 16333,\n 50766, 14727, 7939, 4149, 80908, 418780, 88378, 59276, 1327, 7284, 38576, 79814, 65820, 42199, 84860, 49574,\n 62596, 12396, 70598, 40117, 8648, 7994, 16836, 7630, 14047, 359699, 106878, 525, 29037, 28064, 13380, 11675,\n 50669, 74216, 103539, 180314, 27449, 56299, 172344, 19274, 7301, 246099, 32043, 19422, 36506, 129317, 6806, 30140,\n 4614, 46639, 66926, 932, 86600, 6322, 27847, 233103, 10541, 39025, 34887, 3517, 12972, 26220, 2031, 66561,\n 115015, 48658, 47596, 12714, 33845, 3893, 16165, 35237, 89983, 14769, 11962, 147224, 47018, 29977, 27979, 5552,\n 82338, 86023, 131368, 1218, 24853, 237840, 132193, 15455, 40873, 3668, 65351, 53388, 15229, 59889, 272245, 47934,\n 11858, 34347, 18038, 90853, 86981, 300602, 19343, 114181, 29362, 84921, 6095, 106059, 79472, 38015, 1206, 48741,\n 6208, 80000, 21916, 17423, 6002, 108083, 24479, 34931, 56661, 9511, 26995, 100694, 163853, 35997, 81254, 58321,\n 18919, 171890, 86877, 91341, 74503, 70477, 53412, 7027, 59281, 39892, 131302, 5864, 15947, 61301, 67466, 162369,\n 47956, 27874, 35624, 282324, 21270, 111847, 102548, 41482, 30955, 116737, 28264, 8592, 55458, 22301, 75090, 29821,\n 30697, 51709, 3041, 19208, 8038, 24634, 30467, 87509, 126428, 19389, 18814, 152686, 20701, 83474, 45832, 80891,\n 105808, 11378, 153223, 120770, 98186, 150633, 49838, 9141, 12755, 30962, 5260, 74490, 21256, 31678, 65062, 33326,\n 289838, 187831, 20595, 89768, 2805, 58535, 10844, 70085, 12090, 2451, 138068, 98544, 24461, 4511, 6754, 41684,\n 28203, 3383, 65355, 82833, 30161, 83924, 234361, 128424, 28921, 222594, 33975, 125491, 34069, 11508, 67464, 144226,\n 41850, 98703, 34371, 7901, 21254, 38398, 65651, 23549, 53883, 213340, 123269, 12028, 71764, 177701, 28758, 2623,\n 68395, 11549, 15232, 68603, 9660, 63116, 36079, 57093, 31198, 20475, 48467, 89984, 35619, 186847, 107469, 31389,\n 43631, 73867, 41949, 68841, 114250, 1605, 30564, 63403, 17588, 27680, 99533, 12641, 70325, 50428, 73426, 78379,\n 11855, 91651, 72081, 91720, 60198, 15743, 12065, 83398, 140046, 6761, 46598, 45900, 5068, 886, 62448, 148968,\n 37347, 19405, 9680, 15819, 43496, 63370, 75667, 163700, 37639, 3633, 22774, 34341, 183131, 134335, 37200, 23915,\n 7054, 14194, 12970, 26438, 13350, 285521, 25594, 8219, 104410, 91039, 168804, 138480, 149734, 15907, 33818, 61132,\n 60082, 4622, 110187, 56736, 13551, 73571, 3945, 73463, 65498, 17758, 263266, 17593, 2710, 27585, 54469, 38200,\n 45367, 63754, 28881, 3473, 12791, 98287, 31895, 65787, 4463, 94536, 24951, 36332, 59901, 28803, 52130, 86403,\n 7668, 181822, 74831, 18977, 9850, 177206, 145485, 109798, 7292, 31421, 26280, 77211, 58511, 12507, 127004, 11113,\n 147, 8729, 56208, 43066, 79926, 129937, 31345, 83947, 39915, 46146, 98763, 42566, 1337, 13192, 18323, 105163,\n 80570, 117753, 16555, 72883, 11077, 159438, 40764, 70933, 83329, 26066, 12276, 72059, 21655, 173836, 126713, 69454,\n 153482, 91585, 70644, 102558, 110483, 6764, 127864, 190133, 3961, 101798, 20945, 71138, 82402, 90884, 69669, 44753,\n 923, 16939, 59700, 164258, 25969, 27082, 31399, 43846, 6306, 246093, 51342, 6153, 151581, 202801, 182731, 56475,\n 162188, 89426, 141356, 14355, 121815, 27536, 28023, 65257, 77523, 106668, 127314, 24947, 12790, 38796, 169698, 23555,\n 10725, 44573, 183083, 42088, 62716, 43265, 105958, 32050, 44067, 50118, 1668, 3874, 6243, 318411, 16599, 1691,\n 94999, 52378, 28671, 216728, 123258, 2059, 34969, 69225, 5913, 136280, 171443, 141515, 91662, 22175, 135282, 80020,\n 92270, 1663, 4808, 4482, 3495, 34691, 5226, 109830, 108512, 17342, 107488, 11606, 123190, 100247, 29666, 146527,\n 113014, 15794, 30894, 13224, 39585, 243192, 22351, 9903, 7836, 47699, 11078, 25468, 122291, 48821, 26780, 122679,\n 75521, 81450, 630, 4895, 92900, 55074, 74293, 17441, 3563, 111657, 103102, 51613, 12318, 52370, 36191, 68245,\n 34269, 40445, 41354, 122901, 168604, 182500, 62012, 42557, 11259, 24428, 115113, 86345, 12362, 3909, 78430, 86852,\n 134602, 20459, 47853, 93879, 22577, 7659, 3688, 38555, 13349, 17381, 56715, 91639, 12493, 10895, 92438, 3142,\n 37057, 28928, 2004, 36427, 32268, 34222, 209974, 10432, 67436, 41989, 173518, 107930, 27079, 62729, 30908, 55558,\n 5828, 45031, 14902, 53546, 8204, 144263, 60255, 14520, 88212, 86582, 109589, 69356, 8064, 47449, 8505, 66558,\n 16886, 4844, 52817, 111260, 215129, 12941, 91118, 650, 20770, 6273, 73089, 40618, 62790, 2873, 35002, 14023,\n 97208, 19386, 102646, 36993, 143736, 135457, 35385, 113601, 17893, 32627, 84439, 100619, 56016, 6581, 57264, 172160,\n 45452, 111710, 203627, 70131, 24100, 322787, 1996, 35665, 70078, 22358, 90922, 83658, 4097, 63200, 58499, 14542,\n 99153, 52159, 6615, 12414, 63415, 31986, 16823, 1579, 65405, 137809, 8841, 16898, 48082, 259, 33014, 42375,\n 12260, 179850, 73667, 91389, 98882, 29532, 17311, 326251, 41092, 5928, 20742, 44964, 48019, 43505, 9317, 49265,\n 6643, 192712, 48424, 163487, 19861, 20113, 70848, 31928, 105333, 23685, 78563, 14638, 54755, 7158, 24142, 44018,\n 20774, 125255, 20331, 24280, 10163, 1285, 2336, 39851, 4299, 117269, 46714, 63816, 87779, 159624, 11731, 9971,\n 990, 137317, 108831, 50994, 74554, 162680, 23640, 131597, 146962, 170620, 34829, 91205, 21184, 1913, 63616, 18427,\n 93136, 156592, 17519, 67565, 115882, 138220, 78622, 88535, 18115, 2711, 33554, 109492, 54298, 971, 24914, 25863,\n 36363, 45715, 27099, 194995, 14299, 178181, 111488, 72395, 322385, 157719, 130787, 11897, 81843, 83999, 11369, 49280,\n 118604, 40922, 61332, 110343, 53407, 75639, 40582, 300440, 54722, 25637, 13694, 48248, 48278, 194521, 56203, 52779,\n 48783, 72627, 10953, 376, 16733, 280238, 26351, 230789, 15132, 25168, 137270, 3588, 63704, 73376, 94031, 74284,\n 19443, 159557, 9697, 39901, 13351, 119050, 15406, 146455, 3460, 29556, 75195, 37673, 102524, 92329, 47289, 98413,\n 15311, 100684, 56345, 7116, 95480, 11590, 7200, 167, 23610, 58426, 17730, 136656, 27944, 53151, 2701, 8824,\n 103124, 3017, 90744, 113588, 53216, 79736, 65940, 26931, 498, 29568, 80540, 143543, 21292, 1740, 59268, 16561,\n 180816, 42323, 50174, 40890, 52866, 10703, 57169, 4700, 17191, 4424, 93511, 49698, 166650, 26972, 48631, 165169,\n 82879, 69326, 202970, 4007, 2376, 231325, 139592, 22119, 62851, 37504, 68816, 58345, 67398, 186643, 43331, 277416,\n 53749, 15746, 23102, 17432, 4793, 151138, 48822, 54265, 48203, 198688, 14305, 54287, 2291, 18018, 113378, 123260,\n 7180, 97549, 87027, 120085, 2920, 76080, 8190, 102005, 5641, 64580, 14955, 59802, 54028, 58884, 19367, 81779,\n 412567, 85957, 97053, 103637, 78871, 29364, 27637, 141728, 4767, 30686, 112738, 130146, 42745, 12730, 105040, 14844,\n 232, 210944, 36581, 152317, 135543, 29744, 3129, 55647, 58149, 46319, 27265, 17499, 28005, 59948, 7170, 34138,\n 5702, 293047, 110892, 408, 91760, 218674, 18469, 46095, 81403, 14389, 4610, 35672, 73060, 11006, 74848, 104820,\n 118143, 190357, 20043, 105358, 141735, 5115, 27093, 45924, 123073, 52599, 29433, 9616, 238350, 78610, 24851, 58858,\n 26769, 31969, 24613, 18294, 4982, 32735, 39639, 143563, 112073, 202205, 12567, 4873, 88601, 44897, 81503, 101648,\n 81362, 34662, 85277, 17574, 48173, 21435, 221188, 40215, 39576, 80786, 26544, 64668, 81841, 10731, 37733, 247986,\n 149188, 127703, 495, 18382, 54388, 72446, 43071, 30974, 198723, 89608, 41360, 190, 33045, 8386, 31658, 19992,\n 237838, 119015, 137622, 50890, 100913, 6460, 116233, 267230, 26621, 104129, 65114, 14190, 41542, 14888, 85962, 23342,\n 23041, 26453, 43725, 71809, 45186, 4770, 46452, 53894, 56616, 221286, 18973, 9038, 109299, 55365, 19366, 26863,\n 18808, 60909, 69353, 41738, 83463, 12100, 68561, 72860, 3980, 13796, 49340, 12332, 31311, 27418, 4255, 53430,\n 18976, 45523, 510, 14224, 30477, 26581, 4530, 3651, 101663, 139840, 22709, 150861, 31996, 63923, 120623, 262522,\n 3076, 10528, 2929, 14672, 130238, 18087, 9816, 121894, 100308, 25085, 55111, 14565, 18952, 53293, 2042, 369988,\n 23674, 61789, 133529, 28783, 108293, 35477, 47119, 36448, 71049, 40015, 33055, 78598, 198442, 1833, 159937, 40654,\n 77444, 189245, 113153, 8621, 18599, 38553, 35223, 166072, 2375, 11659, 21786, 89523, 6032, 12116, 63046, 159398,\n 18454, 3678, 32521, 47626, 11411, 103527, 38896, 42946, 15696, 26370, 10185, 8413, 37080, 165583, 4331, 63555,\n 14907, 72220, 50056, 6623, 62236, 36565, 49783, 10049, 17503, 100581, 55951, 146244, 24724, 9626, 17969, 25524,\n 109300, 173965, 99994, 101056, 46459, 43647, 53737, 277968, 8347, 123521, 74858, 33829, 44762, 77574, 877, 81377,\n 222525, 123532, 30602, 43881, 53145, 2973, 16284, 81940, 61281, 127044, 63620, 9875, 14756, 114829, 19032, 9202,\n 52759, 119141, 23928, 120551, 19607, 3599, 33401, 76821, 73233, 117430, 39968, 36539, 7071, 5446, 121735, 194059,\n 15206, 45283, 6706, 15603, 65615, 1207, 165723, 92275, 34773, 104447, 8396, 32353, 205240, 164323, 13600, 60555,\n 79205, 25532, 22907, 33410, 57480, 107111, 69630, 32137, 47832, 70913, 33161, 20321, 2371, 117348, 10714, 86246,\n 1625, 11763, 17900, 268, 78457, 99175, 97940, 101092, 86660, 32221, 14041, 128504, 125080, 53744, 124263, 31017,\n 13897, 403, 31859, 21964, 5633, 111630, 5547, 77329, 17961, 18241, 84995, 25984, 12983, 67491, 62168, 47262,\n 5241, 297, 51191, 7351, 8967, 147212, 82060, 16821, 782, 11033, 82431, 62957, 5026, 43459, 77963, 203477,\n 53528, 6247, 191852, 87774, 74164, 215654, 13467, 1522, 219964, 28589, 244104, 16242, 117821, 67725, 72570, 156792,\n 17186, 15979, 26990, 44128, 193014, 35276, 57125, 16212, 166451, 68017, 6905, 77608, 16364, 53777, 75921, 76426,\n 37975, 26203, 269296, 64099, 84122, 12077, 38533, 830, 4407, 20139, 963, 43028, 38902, 42911, 37503, 83343,\n 85045, 16979, 1165, 60835, 137387, 58380, 86990, 110066, 134540, 56331, 193845, 81238, 17922, 163093, 38744, 110641,\n 12502, 56404, 34862, 26865, 125964, 12965, 111648, 25547, 7771, 27196, 136980, 9555, 29551, 107158, 57885, 18831,\n 37705, 35505, 101742, 13970, 102109, 62548, 124657, 23328, 11124, 89592, 146376, 248050, 6241, 22033, 18337, 80685,\n 29898, 11908, 216623, 67721, 106162, 146610, 21377, 15085, 91552, 42041, 62560, 122532, 125336, 102365, 121537, 142559,\n 29693, 223919, 11515, 110495, 18776, 22494, 5895, 185059, 103592, 229351, 51220, 100102, 37027, 257855, 29359, 54123,\n 36066, 106493, 12244, 79258, 32002, 432, 56205, 94836, 90182, 6726, 14762, 29391, 48938, 26864, 38083, 60364,\n 3310, 60192, 14766, 205567, 57504, 110760, 22649, 24666, 46333, 21517, 3430, 13135, 28873, 27052, 158809, 11597,\n 20529, 6695, 23138, 22960, 37137, 45574, 6545, 305877, 43423, 26153, 24769, 59844, 14501, 10430, 134352, 56169,\n 13213, 103432, 49523, 35181, 13435, 12408, 129475, 64620, 230854, 77390, 51990, 15653, 83248, 33466, 44571, 117828,\n 51481, 2187, 10559, 68019, 18021, 54895, 48247, 18354, 33737, 4554, 108595, 37288, 39767, 116707, 9175, 3726,\n 108877, 21616, 83684, 49862, 1938, 8543, 276466, 20134, 108498, 48770, 102254, 31914, 131520, 185291, 100559, 51890,\n 209, 19526, 76471, 50544, 71814, 99351, 8172, 198526, 28816, 20419, 9109, 98389, 136777, 76479, 75596, 30635,\n 165417, 48216, 120220, 25955, 211071, 39314, 24308, 32164, 2559, 146280, 43403, 9233, 17947, 90585, 1786, 86920,\n 125662, 2457, 64741, 32152, 32918, 122882, 78538, 44001, 31723, 56426, 23375, 103172, 88177, 145697, 52506, 49319,\n 68016, 31664, 41488, 18486, 110400, 7030, 28241, 986, 109199, 19900, 42147, 56864, 65287, 49183, 7858, 24000,\n 30453, 840, 16673, 25907, 68916, 89927, 6309, 158335, 36407, 199737, 130464, 13137, 59603, 201778, 195292, 21015,\n 42466, 179062, 172561, 89492, 11075, 180407, 31868, 72493, 20998, 60217, 9865, 19530, 39274, 130266, 54539, 21623,\n 12535, 13505, 40641, 73375, 4087, 85633, 2153, 3117, 70680, 55788, 92096, 47509, 98493, 37490, 271936, 151475,\n 3032, 16171, 96642, 34106, 78425, 125761, 19591, 3366, 19316, 54508, 24183, 50786, 194248, 91528, 33253, 34622,\n 108355, 41741, 705, 3814, 3883, 108929, 13203, 67831, 10142, 59754, 68208, 29128, 84820, 56880, 38794, 24972,\n 48571, 40821, 40476, 18137, 164254, 24064, 236309, 79181, 11282, 395, 39169, 2013, 51587, 28551, 9645, 701,\n 109513, 115899, 113566, 12762, 62045, 58322, 103726, 41343, 40866, 244102, 143816, 2490, 70346, 40973, 52618, 15412,\n 30720, 104315, 38917, 42027, 93676, 17513, 107418, 20706, 123890, 13399, 97727, 24044, 87962, 65606, 44250, 98044,\n 65276, 74790, 101473, 19350, 91570, 1326, 87790, 172042, 7577, 100813, 86896, 85891, 41512, 108130, 27794, 14875,\n 71431, 12835, 156250, 58135, 3759, 22476, 42176, 115873, 34686, 56523, 73643, 108505, 51491, 20838, 12721, 32863,\n 45700, 29496, 13700, 34294, 55360, 29206, 155942, 123812, 7706, 163234, 203, 132720, 49358, 144431, 8130, 175788,\n 35818, 3270, 76832, 25710, 54095, 97274, 28779, 94621, 74396, 19092, 128242, 58067, 20885, 14670, 93255, 15107,\n 63291, 23654, 126900, 129421, 59294, 262659, 9798, 3251, 67344, 28600, 44629, 50672, 29072, 26999, 31526, 23183,\n 49175, 165843, 175455, 17282, 175411, 32022, 45989, 30298, 90690, 78118, 83156, 23749, 35636, 31317, 7069, 80381,\n 94561, 133756, 14960, 97404, 6138, 41065, 78041, 32843, 16601, 34123, 9559, 146529, 123377, 96395, 54441, 42012,\n 84257, 123541, 10745, 22139, 106459, 11720, 150883, 172651, 154996, 110538, 4728, 53447, 25704, 2009, 71152, 119354,\n 21166, 66604, 1429, 216162, 8637, 122250, 63520, 27180, 29172, 36124, 276428, 107787, 77184, 4680, 14952, 104903,\n 24418, 14793, 51561, 52931, 8371, 26342, 48526, 7118, 92066, 67280, 40653, 8847, 34597, 105438, 14198, 50163,\n 61188, 146286, 50315, 41205, 170829, 161496, 585, 197359, 95056, 1687, 365794, 91349, 48507, 5804, 49263, 5146,\n 104902, 96365, 117343, 132222, 46084, 96919, 16875, 8073, 262381, 79982, 52663, 13928, 16056, 153908, 15145, 109256,\n 132308, 18763, 24904, 167644, 13618, 40750, 18686, 147124, 114709, 150038, 52849, 2938, 12568, 48617, 8778, 5459,\n 44202, 44591, 74914, 17183, 248689, 13878, 7822, 80060, 23116, 194037, 18487, 2067, 7798, 43077, 33678, 244028,\n 31320, 74273, 2794, 19466, 8218, 36280, 183997, 48124, 19416, 29656, 19280, 98734, 7715, 18311, 30701, 133602,\n 150307, 126956, 7378, 2933, 79903, 13178, 12593, 86571, 26604, 92446, 13574, 44205, 65699, 427599, 21118, 8245,\n 14407, 27877, 47936, 33542, 7916, 26460, 117762, 21596, 37818, 2249, 127359, 209394, 60044, 47677, 308089, 36791,\n 154971, 31417, 6998, 150042, 174360, 12255, 43009, 29335, 48739, 3912, 101398, 53340, 2580, 146939, 151295, 45360,\n 125275, 15273, 45383, 27456, 48761, 23314, 8750, 60801, 85823, 104759, 27894, 123685, 66968, 39480, 26917, 55290,\n 83305, 2696, 98390, 57569, 145853, 340733, 4919, 20024, 52268, 30884, 7413, 203685, 70989, 112855, 4129, 50536,\n 349518, 68205, 332641, 159581, 135361, 236026, 37563, 176404, 64899, 6578, 122033, 63871, 1850, 85234, 82089, 66124,\n 74145, 121098, 107351, 12687, 36881, 117334, 13136, 14698, 85933, 93866, 18047, 32620, 310, 15094, 46000, 88451,\n 23632, 36645, 27940, 87618, 80520, 58892, 20976, 27702, 140090, 96075, 67841, 103292, 238964, 87778, 107338, 17019,\n 83427, 67522, 7302, 8261, 47570, 116787, 8730, 80484, 61772, 174422, 56005, 131193, 52875, 14588, 28471, 59817,\n 9586, 15720, 158155, 51307, 109734, 15196, 11025, 59331, 3884, 52626, 102602, 84797, 25158, 27314, 4437, 20488,\n 76214, 189248, 35023, 114952, 157376, 2827, 62439, 102878, 129749, 36405, 10329, 109339, 108633, 36662, 1254, 13267,\n 5470, 87105, 58004, 15397, 10434, 159667, 21864, 52022, 179464, 3013, 32147, 31496, 116832, 18494, 105502, 129227,\n 107267, 50033, 13481, 9954, 24267, 22141, 16257, 116154, 36185, 950, 115685, 11305, 176708, 2048, 178671, 112573,\n 287867, 162328, 497663, 95170, 50979, 193861, 50987, 30368, 136257, 31830, 46549, 15119, 169876, 23788, 17462, 249887,\n 57377, 1949, 35448, 14791, 43769, 210091, 3783, 34612, 282103, 88380, 245190, 5457, 20491, 98908, 11402, 86899,\n 117916, 16028, 162584, 60644, 320177, 156096, 31065, 55876, 22000, 77655, 9992, 23397, 13757, 317623, 63978, 215255,\n 2443, 17648, 93231, 27388, 104529, 93807, 55505, 140477, 12046, 112040, 70887, 40152, 94365, 112353, 25063, 114679,\n 266061, 71248, 119555, 15589, 2244, 617, 14129, 211431, 70110, 100652, 7777, 4383, 85911, 89221, 21010, 120615,\n 58357, 86405, 37554, 41647, 18, 15143, 69662, 60491, 14714, 186134, 148344, 42347, 5410, 168175, 44535, 42449,\n 343894, 129417, 99682, 20659, 27272, 140483, 63455, 222159, 17536, 13722, 42637, 62324, 11976, 114691, 148109, 2283,\n 32057, 182393, 4295, 147364, 33705, 2075, 44303, 30274, 28331, 63740, 69740, 29148, 10346, 44862, 33716, 73937,\n 153333, 12930, 38784, 247159, 2515, 41053, 20256, 83368, 256189, 54639, 115240, 5096, 24661, 175419, 153552, 26516,\n 141, 138176, 63885, 34115, 47222, 55709, 2765, 28479, 38875, 236608, 12229, 22921, 77291, 54426, 45388, 2860,\n 57787, 114579, 295139, 105782, 17826, 71066, 19119, 54364, 69385, 16568, 12323, 28057, 33346, 34919, 124763, 155533,\n 101386, 31644, 8627, 49001, 303600, 29868, 63213, 9103, 77280, 71333, 9696, 138789, 37059, 24823, 5057, 21352,\n 32368, 114208, 56803, 19424, 10445, 58514, 8661, 209508, 26187, 171838, 10460, 63454, 14016, 122504, 41328, 21329,\n 46618, 32493, 38225, 7855, 31763, 7945, 29876, 8734, 6438, 24205, 97490, 139977, 130740, 47323, 33195, 85390,\n 57194, 13813, 60600, 21313, 96251, 7699, 27584, 170521, 139271, 1363, 4402, 336738, 129223, 84983, 69150, 13147,\n 3590, 163929, 207225, 155260, 55916, 20288, 4503, 8398, 98490, 11773, 27512, 37113, 84976, 86558, 28365, 11756,\n 116005, 182148, 13733, 115313, 47644, 67208, 85069, 9347, 14995, 226141, 14704, 101835, 41159, 35314, 13113, 63526,\n 214039, 29978, 50446, 83339, 17440, 129441, 72522, 118641, 97816, 24907, 73844, 15717, 118884, 167255, 96509, 162793,\n 30847, 36849, 51297, 78974, 77793, 10427, 1873, 2972, 9999, 35074, 28190, 64297, 146836, 46298, 60038, 163007,\n 108919, 61219, 2403, 75022, 127339, 4233, 110389, 69022, 9833, 128097, 88016, 79390, 222936, 22570, 94657, 28462,\n 56956, 38803, 81536, 30474, 152794, 19566, 16481, 147408, 74574, 81895, 20731, 1918, 1366, 76367, 187321, 54494,\n 24366, 21690, 61696, 33283, 107477, 77499, 31112, 414383, 74362, 18463, 218441, 120929, 59848, 258629, 201924, 69269,\n 454, 19989, 13054, 59894, 3623, 58908, 20681, 35723, 78523, 102680, 38988, 184112, 108087, 50944, 132704, 52966,\n 21699, 18860, 96349, 201411, 82697, 85395, 95658, 5093, 6427, 177894, 44191, 32755, 26961, 155739, 6249, 31310,\n 81030, 26574, 84311, 120155, 86730, 113535, 7424, 48888, 13516, 45747, 98098, 20077, 183995, 81945, 43210, 26704,\n 40420, 75831, 45648, 11180, 6855, 57927, 65528, 124096, 34851, 2598, 156633, 107572, 127352, 38169, 123845, 60142,\n 62722, 105584, 232364, 23211, 68120, 1601, 22169, 89299, 747, 258039, 80572, 7258, 152249, 11862, 101204, 8834,\n 121434, 33761, 19175, 133142, 46343, 40178, 48723, 3589, 41977, 30210, 38868, 62257, 10087, 82658, 87827, 90646,\n 16415, 47552, 351723, 28298, 72225, 91146, 272760, 1701, 11295, 1652, 109651, 300747, 51863, 198800, 29446, 11794,\n 32345, 37538, 22356, 33102, 37590, 113544, 37970, 11478, 179743, 25454, 103417, 59905, 221970, 105196, 145604, 7817,\n 164809, 102360, 16974, 75840, 255333, 56902, 6659, 1954, 645, 59400, 67769, 7689, 18675, 5215, 13793, 20536,\n 27852, 3387, 29523, 259718, 16860, 94625, 43143, 29245, 15848, 233581, 22685, 63631, 78557, 22836, 133302, 84513,\n 1348, 51826, 47129, 98836, 58284, 1830, 1749, 94642, 10933, 6145, 12506, 10975, 13879, 103781, 144434, 10268,\n 28409, 32346, 52968, 121567, 107374, 77268, 23686, 35097, 10501, 155275, 15303, 47136, 21102, 168741, 55332, 90385,\n 15996, 84817, 681, 137803, 25054, 142275, 6163, 38175, 8056, 124296, 240642, 65621, 4934, 178205, 16101, 62803,\n 60964, 18230, 100622, 76465, 44689, 14545, 9543, 47514, 16852, 93380, 28048, 12047, 107106, 37575, 101485, 77047,\n 57326, 34819, 96137, 76916, 6469, 46264, 115983, 75768, 87668, 69942, 13027, 165, 8373, 114231, 26434, 52844,\n 42799, 182044, 23580, 146254, 38081, 43236, 33883, 146220, 382894, 14606, 46035, 36481, 166621, 35417, 95382, 2957,\n 59384, 60428, 36358, 66343, 75378, 22267, 22950, 83528, 17577, 56474, 25285, 4619, 179691, 75355, 95836, 53295,\n 34588, 171410, 4487, 14679, 84208, 44015, 18562, 109133, 54101, 11531, 86052, 174479, 303157, 28095, 9953, 35642,\n 14564, 39802, 16145, 77606, 117406, 53038, 121117, 53624, 22062, 1212, 7632, 127157, 237292, 189087, 10478, 127345,\n 102515, 181997, 86752, 87623, 10966, 121602, 68783, 68681, 83042, 114380, 138349, 191305, 67176, 50085, 39016, 1427,\n 42384, 1412, 67118, 122616, 72389, 25260, 2237, 13576, 137346, 19938, 20304, 2191, 68759, 5373, 61364, 238507,\n 75814, 23931, 69565, 38993, 131741, 38364, 12528, 87762, 5679, 129853, 5310, 186831, 32653, 90338, 260176, 389531,\n 108118, 26843, 43985, 50175, 30563, 25106, 56965, 18130, 140428, 4542, 165503, 117991, 24219, 229605, 1819, 129663,\n 1240, 3797, 76093, 18398, 71339, 51919, 93043, 27175, 47060, 216257, 6483, 35051, 1217, 16512, 80798, 129064,\n 13225, 69339, 8548, 237079, 72298, 2575, 34280, 51379, 117910, 55671, 53345, 247552, 29486, 39328, 140821, 34681,\n 57045, 60177, 5004, 90269, 78522, 2479, 322607, 48474, 61296, 13057, 31558, 4678, 59271, 6699, 27044, 31988,\n 35944, 12503, 83480, 4389, 136508, 3781, 114121, 70279, 4488, 155829, 42214, 2898, 68191, 75695, 305850, 45041,\n 74344, 106509, 30087, 17429, 93292, 12477, 290, 23080, 114802, 35714, 18751, 26554, 105424, 17775, 2144, 2412,\n 100610, 65192, 113975, 52975, 180272, 135050, 129815, 76238, 106483, 21440, 63186, 4260, 46189, 9711, 28249, 4169,\n 23429, 23390, 8324, 141585, 63809, 67668, 38457, 38063, 39226, 59972, 1189, 203916, 62368, 14403, 16949, 61767,\n 85801, 1739, 40147, 35049, 76757, 33124, 62102, 15780, 103593, 103009, 53484, 22952, 67973, 114645, 6566, 5245,\n 50462, 7601, 8288, 3513, 194571, 80276, 1908, 54592, 5124, 58571, 2513, 6800, 273997, 193904, 1119, 17991,\n 117245, 2508, 129156, 82366, 26278, 71465, 63341, 56943, 39662, 106116, 94966, 156875, 9736, 2204, 122308, 94418,\n 27134, 1280, 24539, 49022, 45314, 3764, 50904, 46424, 30699, 28087, 293839, 9400, 33646, 40165, 822, 147499,\n 50263, 116179, 29085, 11863, 31314, 5578, 17797, 5104, 12454, 1604, 15342, 219206, 10232, 67800, 94261, 25872,\n 13565, 90339, 78971, 75377, 26649, 41184, 47695, 11514, 35369, 20767, 14227, 41953, 309396, 148270, 147938, 33074,\n 14453, 27499, 109019, 39018, 25738, 240196, 158931, 52820, 8612, 95853, 21524, 137010, 84901, 70869, 70021, 116794,\n 48404, 38771, 6732, 1070, 70990, 187297, 49140, 5238, 576, 3564, 253975, 16027, 16483, 2811, 37775, 19034,\n 25259, 4053, 2000, 70083, 95774, 19713, 33431, 92703, 91314, 42381, 288770, 48194, 95985, 3991, 77418, 13406,\n 241328, 245086, 56533, 35275, 62725, 9246, 51924, 70181, 95331, 16163, 31410, 79016, 39312, 120878, 119371, 275987,\n 80124, 27712, 9186, 220, 23598, 146167, 85209, 68238, 282190, 57048, 31273, 30555, 80913, 17594, 75779, 59160,\n 135002, 101219, 189377, 29225, 96735, 60126, 62522, 104000, 27620, 86814, 17240, 147533, 11001, 5425, 43682, 410,\n 49460, 87270, 69480, 46315, 59448, 1816, 76201, 9431, 11788, 87960, 29063, 65539, 47347, 11678, 33846, 7008,\n 196704, 9895, 6753, 8633, 120892, 59970, 572824, 115934, 6646, 202559, 892, 48351, 37611, 251282, 57823, 67263,\n 57750, 26527, 34485, 90747, 7685, 88370, 6144, 64182, 1709, 41969, 21458, 62327, 181657, 49247, 225330, 122600,\n 114574, 107124, 85361, 111833, 63243, 71420, 15655, 191178, 72430, 18063, 51425, 54002, 12364, 53225, 86557, 18193,\n 97580, 41232, 138398, 67821, 128724, 8944, 233212, 101353, 52099, 42127, 14006, 120107, 32789, 32132, 3498, 18123,\n 33758, 56058, 5779, 128760, 59888, 98869, 18445, 84702, 51911, 13234, 218379, 20093, 39031, 8074, 70195, 20708,\n 23462, 24355, 131384, 60189, 26390, 10403, 41060, 7140, 10781, 49410, 42261, 87202, 82566, 41663, 43105, 60276,\n 2768, 5733, 74176, 28329, 2297, 145430, 131632, 83615, 122915, 105441, 655, 224102, 5284, 136426, 67763, 16294,\n 188511, 32538, 61049, 27893, 3394, 13951, 159099, 28542, 17930, 145360, 9492, 190122, 32285, 78855, 26440, 13570,\n 58648, 73908, 4239, 124561, 2444, 74172, 53131, 11468, 10794, 73566, 11623, 35343, 64710, 30481, 4163, 10328,\n 38309, 29901, 10538, 154377, 76132, 92405, 24839, 11679, 3465, 13449, 11637, 7824, 2337, 57754, 1260, 14458,\n 41118, 19878, 38661, 13416, 159180, 37074, 163164, 54137, 28627, 52134, 184900, 8520, 40385, 29546, 30502, 22386,\n 66527, 107458, 6850, 24022, 47983, 30603, 35083, 8934, 304066, 39500, 9, 28261, 33026, 77251, 9374, 44833,\n 116312, 34990, 29236, 63563, 125639, 135405, 165398, 159055, 55690, 88141, 69643, 236964, 31983, 25572, 20436, 36746,\n 60896, 31850, 16179, 11828, 5888, 3043, 66368, 9750, 31167, 7915, 53111, 36430, 1333, 64344, 93659, 20061,\n 60596, 180191, 51630, 6792, 30244, 43509, 101058, 22409, 420, 44210, 109783, 43223, 27030, 72477, 72831, 32679,\n 29235, 7675, 47556, 12258, 39907, 149412, 84926, 118247, 24692, 71717, 105038, 86009, 45941, 41189, 89453, 29856,\n 52543, 30627, 226798, 67303, 59230, 67415, 34408, 1367, 99685, 16867, 128419, 52147, 4111, 125381, 117881, 16173,\n 44093, 102224, 31575, 23234, 24870, 83790, 127407, 239098, 3200, 994, 1255, 100903, 242275, 117266, 55116, 38205,\n 16140, 29662, 11307, 40414, 208793, 123355, 56470, 4862, 75600, 30119, 58218, 70828, 24075, 26974, 7802, 192353,\n 4851, 5475, 78720, 66596, 3409, 28573, 64396, 30381, 30690, 59859, 88256, 5406, 99945, 103064, 34463, 37727,\n 24238, 86643, 60088, 4057, 23741, 5967, 162904, 38240, 28356, 93858, 25510, 122879, 6897, 3278, 7057, 11971,\n 4400, 35461, 211413, 21395, 59615, 39471, 87233, 55795, 128426, 3051, 22470, 41950, 14705, 3974, 180108, 80476,\n 78442, 204996, 91987, 15634, 67610, 139015, 142373, 35611, 51134, 10387, 4353, 153456, 57749, 181039, 14183, 68447,\n 151532, 21107, 36452, 20551, 3186, 46247, 46383, 129666, 88736, 140662, 146243, 2066, 8360, 7978, 64818, 106963,\n 17896, 47801, 10723, 114821, 223295, 74192, 3293, 3393, 16987, 74064, 11277, 91622, 4270, 29828, 27951, 387869,\n 103235, 1374, 61988, 120083, 477, 145892, 128378, 11779, 211263, 61354, 18221, 17869, 46530, 83061, 108538, 157981,\n 90608, 67199, 95080, 49064, 195814, 12302, 66307, 10348, 231346, 160732, 112859, 63633, 146558, 21271, 31037, 198802,\n 47622, 12862, 95710, 3910, 77850, 73961, 85585, 34752, 61000, 4082, 24595, 103679, 71107, 8208, 79568, 150019,\n 16615, 24961, 139857, 32664, 197366, 4559, 54735, 32696, 4126, 162019, 75698, 13916, 70108, 159638, 19834, 9349,\n 24675, 175560, 49643, 18206, 52459, 27992, 10809, 88865, 401975, 133172, 29000, 34558, 30915, 3658, 25834, 42430,\n 36562, 125265, 18182, 10155, 40149, 97082, 208980, 19575, 60853, 90529, 66545, 9600, 789, 46420, 2317, 88593,\n 55595, 98980, 115302, 5742, 169155, 1073, 177901, 3472, 11189, 63711, 78643, 65472, 50459, 127979, 93, 42202,\n 67053, 21720, 157650, 11145, 141378, 42033, 22824, 85705, 79114, 35584, 15974, 1510, 54172, 28562, 12451, 104226,\n 19190, 97151, 73024, 20948, 5151, 81741, 21499, 29006, 84183, 198074, 54003, 45120, 170125, 26240, 35177, 28389,\n 64863, 79974, 60778, 176915, 232183, 45342, 2038, 80253, 41564, 40703, 32689, 5430, 100689, 5366, 23007, 134279,\n 14266, 26712, 73993, 24934, 64242, 52113, 102887, 61801, 46415, 201049, 54251, 62133, 122757, 164883, 30815, 139966,\n 2319, 30842, 766, 13362, 10287, 134518, 86111, 81665, 82440, 28333, 43019, 18963, 8804, 161944, 23439, 102144,\n 101145, 80029, 39052, 248708, 30350, 117340, 11878, 128467, 974, 138625, 63961, 5237, 74778, 61834, 67040, 43814,\n 13690, 65947, 33809, 232476, 115258, 181745, 28824, 94013, 9510, 10246, 93722, 81976, 7217, 114383, 3493, 16014,\n 69045, 72692, 12145, 80981, 9507, 6692, 1620, 60820, 330444, 35474, 33962, 4797, 7053, 295463, 46445, 27026,\n 12491, 77988, 49524, 35675, 90947, 29114, 166705, 101385, 133782, 32704, 6186, 84595, 176031, 185623, 45966, 151302,\n 63069, 1699, 107491, 947, 15458, 74452, 196212, 6046, 10498, 12163, 10239, 35191, 243951, 9277, 9090, 29539,\n 54460, 22820, 26514, 112549, 60372, 51753, 48756, 21812, 70861, 260326, 41, 44222, 10441, 16961, 48148, 138771,\n 216194, 5914, 52153, 53400, 212036, 56519, 26245, 10117, 45888, 15294, 138019, 90913, 26368, 43842, 42111, 23348,\n 6082, 194845, 161089, 156206, 51546, 11647, 30759, 302912, 262094, 8635, 78876, 26535, 35283, 54183, 31183, 85484,\n 147873, 12989, 5197, 6356, 72894, 65347, 20150, 27370, 73787, 1493, 45918, 12366, 190217, 20724, 13858, 10981,\n 67449, 81213, 7553, 14115, 72242, 271517, 11842, 48310, 88743, 143726, 22177, 3290, 243231, 58452, 62937, 12592,\n 1654, 40066, 33477, 13751, 9921, 128442, 15868, 7106, 75236, 83773, 10775, 36938, 10482, 170465, 17368, 17469,\n 161508, 32752, 98340, 800, 19824, 264456, 3901, 87319, 2867, 26782, 9630, 113102, 185815, 24197, 44584, 86366,\n 40224, 3636, 140916, 31731, 267731, 9567, 53678, 72984, 29389, 27963, 17106, 50282, 284911, 60170, 8322, 12608,\n 23374, 89652, 5268, 39044, 229766, 8869, 151350, 31436, 177342, 12269, 183212, 120418, 116270, 2843, 78888, 69192,\n 7865, 184099, 1086, 129897, 18383, 70508, 20242, 18508, 229924, 124569, 35749, 50589, 55626, 9884, 83115, 40971,\n 30671, 18135, 14452, 38861, 17844, 201826, 5549, 26413, 17189, 13561, 38539, 10679, 143331, 3314, 36785, 171194,\n 49685, 187713, 67506, 4618, 104039, 17060, 195080, 50648, 33159, 19238, 67559, 134840, 28599, 157523, 17130, 38064,\n 117398, 94355, 31918, 13575, 34538, 40326, 13997, 3494, 348283, 62481, 26862, 3603, 104426, 244363, 153709, 112487,\n 304612, 199674, 41239, 35545, 54869, 293005, 28223, 26277, 26899, 4533, 18518, 15492, 38587, 80488, 70485, 160395,\n 263, 60162, 11382, 222152, 4696, 250751, 51921, 182609, 10707, 48463, 46243, 1227, 49111, 111564, 46502, 33342,\n 56846, 68541, 63559, 858, 139927, 16654, 229375, 76759, 26478, 33205, 95828, 23399, 92945, 2637, 35630, 28470,\n 143992, 50214, 14174, 21456, 166191, 65665, 1711, 21594, 78019, 97599, 111701, 36, 147151, 110246, 189022, 43021,\n 30397, 40757, 131935, 42065, 73335, 48039, 26596, 28984, 15102, 2361, 7421, 202167, 69744, 43766, 52826, 3642,\n 83304, 33873, 75140, 63169, 192389, 36551, 92748, 13039, 123959, 233220, 21738, 84447, 77230, 20228, 187852, 19095,\n 25799, 92136, 108774, 29237, 53947, 2299, 118106, 2687, 8830, 42331, 202924, 33667, 2023, 73763, 30704, 19363,\n 19779, 16737, 35629, 48081, 24068, 101013, 162338, 291912, 13749, 24745, 328289, 167679, 70086, 48299, 23306, 16732,\n 17801, 43322, 54589, 3586, 63653, 43624, 53474, 925, 109177, 251316, 43805, 13082, 19511, 86565, 142182, 92461,\n 17117, 101033, 103319, 64589, 4022, 4351, 235897, 5352, 82705, 107142, 46391, 156084, 5860, 61365, 10558, 13045,\n 7717, 18357, 33922, 12590, 33065, 6928, 46993, 783, 46937, 67846, 8952, 26295, 6107, 119656, 18799, 17458,\n 50747, 4229, 179559, 112727, 118080, 20683, 41464, 125468, 51560, 49749, 44231, 7359, 35339, 62988, 136487, 67015,\n 5208, 29150, 24956, 105186, 48858, 6143, 18097, 6972, 16404, 73489, 58742, 97196, 36357, 164616, 5834, 32267,\n 13746, 147733, 15113, 132091, 34127, 106298, 39729, 106426, 22294, 9780, 15602, 36213, 71502, 42808, 66802, 599,\n 60755, 5851, 39120, 67363, 108623, 126368, 72770, 91263, 32486, 30596, 151717, 7951, 52002, 43103, 11768, 68942,\n 40901, 39344, 24037, 127500, 116890, 48403, 16926, 86750, 17745, 48648, 159545, 34460, 58419, 5634, 114317, 67865,\n 31462, 23352, 24010, 98185, 125708, 69686, 68337, 13610, 26271, 70691, 2980, 4768, 27225, 102402, 75453, 28106,\n 8104, 6931, 1176, 6274, 6475, 112635, 22498, 6176, 238686, 26832, 28893, 90319, 14441, 15682, 15087, 39517,\n 45270, 109134, 104440, 45965, 47645, 81772, 7876, 52683, 87720, 12898, 4505, 185665, 2769, 113401, 15664, 57592,\n 105229, 137381, 97059, 119268, 6876, 43309, 33886, 128363, 35476, 144249, 67013, 143587, 83367, 25703, 91436, 59347,\n 53236, 2289, 16519, 19844, 46309, 58558, 99834, 23313, 218816, 231303, 36388, 51333, 183535, 109792, 139277, 54306,\n 90139, 18235, 8275, 32710, 37677, 82464, 86025, 92204, 88842, 117723, 37570, 128723, 234242, 76350, 73795, 34896,\n 148247, 58424, 11105, 11744, 45746, 63372, 17118, 49772, 199520, 81902, 38004, 22911, 33752, 3125, 1995, 53792,\n 4689, 26909, 108150, 146062, 69674, 41811, 161444, 84855, 8999, 28561, 16731, 93937, 3189, 21967, 24890, 22943,\n 1356, 145300, 51569, 28802, 517, 118679, 31703, 40607, 48098, 108854, 25003, 10233, 73969, 177495, 5248, 24516,\n 215347, 146192, 48712, 60626, 69188, 40735, 5866, 586, 101541, 6509, 47590, 52129, 5969, 222045, 110933, 25733,\n 24223, 65339, 62812, 2414, 155418, 35819, 16022, 78423, 43138, 20995, 128255, 240673, 46745, 236093, 72176, 57085,\n 97841, 61248, 107, 36068, 193177, 105427, 55726, 215229, 20446, 47228, 100420, 87091, 14429, 121708, 23605, 21157,\n 187721, 21880, 2997, 203976, 99166, 95068, 25877, 7724, 98925, 83401, 4829, 13182, 18229, 13718, 239662, 38653,\n 116505, 153497, 30589, 89029, 38962, 181302, 43853, 78872, 180301, 4786, 248240, 7401, 106136, 112590, 77745, 19731,\n 60880, 77789, 125748, 135487, 5975, 48627, 34084, 12419, 215770, 47557, 254582, 10364, 106495, 21856, 67539, 88981,\n 38805, 21428, 48732, 42316, 12149, 16078, 52808, 25327, 51322, 33850, 51147, 12253, 122354, 46077, 56483, 254553,\n 115417, 81834, 150991, 94662, 86668, 7381, 12841, 100650, 18218, 15741, 22372, 68294, 50705, 15535, 84660, 61887,\n 22553, 72299, 31361, 24824, 17743, 46820, 64288, 31582, 77006, 111674, 116384, 30760, 80920, 86149, 77192, 51979,\n 79691, 60342, 122805, 103800, 240873, 160744, 233114, 78962, 54920, 8608, 3484, 316104, 72548, 24337, 5088, 230040,\n 21926, 10172, 36838, 26, 86221, 83458, 102176, 12062, 17571, 41929, 41170, 28428, 68239, 41750, 103930, 2634,\n 18313, 53019, 34825, 97837, 63115, 24606, 73157, 152474, 14715, 91439, 37033, 109806, 140259, 30668, 174760, 380,\n 135597, 95673, 136073, 65073, 134249, 13829, 17279, 122305, 4420, 46444, 10237, 64848, 203623, 70728, 10349, 182885,\n 65075, 24519, 25783, 40318, 34139, 22222, 63394, 55266, 102764, 41422, 20126, 65100, 90408, 53640, 35128, 48932,\n 11192, 38935, 96839, 34782, 39492, 19396, 41332, 6250, 5511, 19492, 51304, 25936, 104466, 54099, 73771, 86115,\n 5080, 7669, 30891, 111700, 13931, 25276, 72289, 135447, 14820, 258641, 25265, 31005, 281179, 75286, 393, 95359,\n 14623, 13584, 6680, 101227, 80173, 44933, 76666, 54542, 13244, 39348, 458, 25379, 109451, 134348, 81143, 6959,\n 65554, 12027, 51311, 8716, 57589, 140731, 28467, 23316, 17272, 30458, 25980, 55229, 77197, 83798, 28302, 114784,\n 7428, 34548, 26241, 14712, 39336, 103304, 18928, 54080, 12870, 334, 87722, 15208, 16895, 142098, 114262, 39820,\n 83913, 57817, 28682, 7721, 14900, 108672, 11250, 62246, 42849, 415188, 1724, 26555, 24549, 25505, 26443, 107450,\n 145899, 61035, 43528, 6901, 60726, 65906, 267741, 21338, 147590, 42079, 18924, 73017, 135236, 15393, 5206, 4026,\n 84185, 1531, 5988, 113890, 82647, 303391, 7386, 69844, 71611, 189865, 76523, 31877, 13315, 19314, 198575, 32821,\n 1928, 67641, 25913, 104475, 103489, 3297, 70391, 18406, 15446, 113347, 19295, 93790, 27856, 1792, 167471, 116449,\n 8541, 4408, 41757, 63233, 25765, 86680, 64501, 27034, 24816, 34975, 6079, 4486, 49693, 36229, 16917, 21581,\n 62426, 27862, 11612, 54284, 35702, 194034, 355, 24277, 48262, 87411, 70504, 310164, 118018, 12516, 47559, 43502,\n 57433, 107139, 9290, 66533, 80863, 14634, 34312, 91725, 28606, 21342, 67241, 72355, 43244, 375789, 37402, 174015,\n 105070, 8342, 44167, 67494, 1890, 16365, 11723, 271002, 1865, 47918, 8350, 45564, 27742, 25110, 125803, 8553,\n 49504, 81925, 62211, 4534, 15491, 19011, 80373, 206920, 667, 102405, 128623, 245524, 5553, 113309, 192739, 65766,\n 19567, 22832, 261958, 29679, 21293, 71134, 20962, 105123, 24721, 860, 21752, 33448, 18372, 157167, 94822, 35770,\n 173224, 232737, 75729, 28937, 46828, 28062, 25453, 5207, 140366, 36665, 30652, 6169, 67920, 150458, 92040, 23186,\n 184604, 92330, 20891, 176492, 49427, 27828, 38305, 42495, 143982, 49560, 25503, 90043, 29747, 65328, 47830, 12932,\n 11068, 77721, 9003, 25213, 94205, 140426, 46090, 89945, 138173, 192691, 33329, 112232, 129905, 35709, 27514, 1841,\n 19957, 31411, 127476, 53572, 17497, 173549, 55063, 175135, 19841, 69314, 5192, 237921, 117660, 150697, 4060, 273045,\n 50414, 98940, 65348, 153665, 164423, 58804, 156695, 48994, 213928, 86036, 28608, 8355, 39574, 34540, 16927, 135680,\n 18374, 151587, 10830, 53805, 16878, 16623, 4282, 48030, 8537, 14986, 46102, 13062, 72897, 72, 33050, 108227,\n 39451, 45935, 651, 113320, 40535, 95176, 57450, 48843, 5003, 19019, 10407, 211163, 3848, 1068, 4988, 32091,\n 30095, 41692, 15099, 43602, 107434, 50744, 7627, 171349, 16313, 150832, 352665, 207750, 33937, 38256, 51091, 156000,\n 87889, 90663, 84175, 24908, 114900, 50365, 31494, 83829, 5398, 169342, 47521, 54818, 18935, 8356, 43094, 41212,\n 174536, 10082, 92550, 6678, 60614, 23355, 69721, 14796, 34149, 128830, 58187, 3179, 208, 40325, 28399, 225029,\n 401412, 51150, 31580, 207268, 6657, 10993, 69818, 64282, 289845, 23308, 12961, 38447, 6681, 52944, 31855, 2572,\n 47646, 120728, 179148, 37240, 45196, 218274, 4816, 3695, 21961, 50084, 35209, 18073, 51452, 27004, 6100, 33941,\n 1377, 84831, 171214, 85, 141510, 9078, 99227, 32610, 6417, 11718, 49868, 65579, 87902, 73018, 49062, 46280,\n 61742, 21512, 40862, 107733, 15941, 29168, 157765, 144919, 14487, 5767, 158014, 140070, 7241, 573, 71584, 16921,\n 223566, 40331, 179473, 35081, 47926, 140885, 41508, 52104, 59180, 42310, 32811, 29048, 123517, 102413, 80208, 10104,\n 14746, 12649, 153641, 126022, 37965, 113017, 4171, 83, 142592, 2809, 6362, 50416, 71323, 116894, 260776, 16204,\n 1524, 5760, 30351, 12658, 20703, 54403, 36083, 45408, 74772, 4946, 14485, 50759, 111222, 10890, 2195, 167147,\n 92962, 130534, 16283, 177256, 35016, 15472, 210156, 151187, 73922, 117691, 43250, 52051, 37392, 24811, 24358, 30830,\n 5775, 818, 21969, 1476, 127322, 151783, 58392, 31021, 106913, 65215, 89407, 90802, 28531, 11690, 20234, 95249,\n 44602, 37256, 18707, 11928, 5161, 4410, 26571, 51903, 49768, 22008, 25252, 65780, 209499, 68769, 203726, 13249,\n 137363, 48845, 86823, 6658, 5674, 31881, 1083, 1823, 108676, 34518, 166752, 13791, 14287, 91576, 91429, 8665,\n 11529, 26401, 16191, 91972, 30964, 5254, 28486, 54697, 79613, 66520, 18447, 22870, 45203, 194466, 22822, 51703,\n 12278, 76716, 44595, 73455, 33546, 12235, 144843, 36154, 51247, 11116, 33040, 3180, 225753, 60864, 1972, 28469,\n 12891, 28879, 10338, 144157, 56294, 353058, 38302, 41447, 87532, 110616, 27065, 168438, 6557, 1213, 50804, 144643,\n 24817, 2390, 136531, 38174, 247513, 16190, 4059, 122791, 131994, 137430, 39506, 57650, 16305, 5188, 54309, 106128,\n 20628, 88071, 67394, 395446, 250285, 66176, 91254, 1399, 114196, 43915, 60230, 44853, 27206, 106353, 43013, 18733,\n 345105, 226453, 51202, 16607, 57106, 117175, 35492, 10476, 89598, 127439, 15187, 39624, 13688, 61570, 10615, 31111,\n 59370, 6238, 175252, 32143, 224492, 41388, 95408, 34384, 148238, 78307, 38959, 9340, 160091, 61443, 15737, 11216,\n 41244, 170, 38299, 102443, 113097, 26382, 14027, 33707, 3957, 76300, 66160, 19431, 18900, 6952, 1717, 108656,\n 82206, 188021, 257335, 27295, 43999, 41210, 31777, 46956, 57457, 12657, 11489, 15697, 48060, 204748, 53583, 82422,\n 284790, 30503, 137341, 8120, 19615, 220311, 15991, 10217, 63424, 9808, 67431, 70976, 98221, 4491, 15177, 28535,\n 144789, 751, 13230, 2394, 1504, 33977, 132104, 30316, 22230, 931, 97193, 185240, 24826, 22687, 174322, 15307,\n 22988, 1390, 188745, 180325, 29580, 59068, 74903, 18994, 29195, 79, 15436, 7622, 38462, 11566, 138710, 44828,\n 45774, 37768, 99236, 68137, 84083, 19282, 22698, 17134, 74807, 126662, 173497, 46248, 16938, 119735, 3212, 28292,\n 213652, 49013, 9975, 32180, 45660, 86250, 4801, 68788, 95490, 77482, 113751, 11994, 44624, 94452, 46839, 128497,\n 100316, 5798, 58588, 73184, 202987, 65417, 37790, 88524, 1606, 43156, 97964, 105717, 34947, 11203, 100060, 37742,\n 130074, 93653, 107799, 94311, 196106, 41347, 8035, 10780, 16390, 27883, 118236, 167395, 1979, 25006, 19375, 31628,\n 18916, 144723, 78502, 114047, 103107, 86492, 107686, 5844, 20934, 206963, 23556, 22591, 16562, 146333, 20167, 10471,\n 117434, 33085, 2863, 9740, 36669, 41849, 37271, 22790, 18209, 28979, 8231, 12952, 54408, 21731, 25130, 45208,\n 55748, 138120, 75826, 414, 29593, 9925, 292865, 25999, 683, 123149, 7036, 92159, 86055, 61827, 103680, 23176,\n 54918, 58466, 57578, 13305, 5709, 86479, 16697, 31064, 17660, 200919, 10770, 49793, 33423, 32370, 52047, 16488,\n 62555, 6459, 8426, 83493, 7763, 59725, 82812, 18628, 67760, 79405, 68557, 9612, 7673, 28102, 56517, 69620,\n 171797, 32458, 29541, 15870, 81109, 32080, 207644, 71495, 21202, 11039, 91036, 61230, 2810, 130800, 32260, 4613,\n 60590, 37112, 75214, 33979, 126402, 155062, 30642, 63875, 12810, 194463, 82799, 47664, 16725, 36685, 43367, 61099,\n 449, 172150, 102867, 21691, 301838, 36745, 7130, 18671, 57316, 34852, 38034, 54182, 35578, 65900, 99486, 19771,\n 3456, 2658, 16914, 99866, 28390, 28109, 8262, 21147, 34353, 20006, 4228, 137085, 1675, 203023, 283196, 198286,\n 214375, 163329, 290603, 152574, 40471, 83506, 30068, 14730, 23177, 131539, 34759, 27668, 32178, 71896, 104799, 116305,\n 85430, 119262, 42860, 25160, 8911, 23428, 49437, 105322, 6519, 16203, 6349, 74711, 1230, 38045, 8540, 75165,\n 44736, 25909, 51026, 317034, 4984, 32281, 91312, 27060, 44431, 17817, 45363, 155937, 239085, 35697, 59784, 91993,\n 29531, 126740, 213757, 76560, 167776, 285273, 24262, 8237, 65030, 41160, 74437, 48804, 118916, 13159, 37842, 1031,\n 75349, 1478, 11655, 108777, 23435, 277425, 101734, 67469, 70231, 124711, 43532, 28514, 65526, 54956, 1000, 21882,\n 17728, 25302, 40952, 52214, 149632, 1999, 2111, 3259, 63362, 89961, 220561, 39777, 26335, 9063, 10572, 12416,\n 34551, 34623, 38604, 24723, 5947, 15588, 69927, 66252, 119177, 69173, 46629, 28714, 70715, 212408, 20521, 406913,\n 74380, 11716, 50659, 50862, 37009, 88460, 130101, 7210, 53853, 538, 65120, 151950, 55806, 163748, 52837, 13153,\n 21100, 16674, 64536, 6091, 138201, 44837, 58547, 3723, 163, 2177, 32288, 85454, 34033, 8497, 14282, 25742,\n 10535, 10741, 79559, 117493, 243787, 49337, 100718, 79495, 40139, 42956, 7551, 55433, 15421, 31509, 23034, 45081,\n 547, 61176, 53434, 328001, 8470, 36263, 30145, 4519, 74173, 53935, 11845, 73774, 60211, 78025, 3, 4102,\n 73782, 109293, 315332, 48412, 26683, 13714, 6865, 20128, 18490, 104141, 325, 39470, 171970, 115860, 15707, 7268,\n 73301, 74336, 31370, 2368, 111827, 107757, 136231, 142844, 97138, 96638, 84053, 38691, 23801, 1588, 10573, 122098,\n 77039, 240, 186135, 146101, 11996, 18143, 112963, 46171, 155836, 348769, 47795, 121213, 116266, 132515, 3344, 144804,\n 31286, 99187, 255838, 129694, 35894, 48779, 55235, 148582, 71967, 65282, 15174, 13920, 47080, 6147, 108242, 157593,\n 125025, 7136, 1286, 28957, 127956, 28402, 98813, 20805, 7532, 109417, 40610, 5041, 32958, 15142, 18408, 108596,\n 33543, 50517, 27748, 80114, 233434, 91447, 487, 37094, 100048, 30541, 43477, 10639, 89862, 155868, 37667, 8726,\n 60684, 237903, 73408, 99589, 12190, 38739, 97348, 3914, 13594, 2680, 149016, 13907, 30171, 28343, 23530, 115225,\n 61104, 35821, 147679, 14337, 4297, 244282, 24085, 326976, 56428, 7851, 21303, 131620, 71446, 83253, 68692, 111870,\n 5224, 15813, 38197, 49026, 45057, 13660, 3306, 76345, 40671, 27905, 91072, 996, 68527, 62085, 91351, 122634,\n 55109, 168209, 2024, 27560, 112707, 17352, 8306, 167115, 169921, 166958, 5031, 46020, 11844, 67284, 19130, 76185,\n 6920, 32849, 5450, 14610, 22451, 21002, 17392, 31872, 66682, 84796, 13709, 40210, 59898, 12029, 8719, 53564,\n 21462, 91884, 21647, 88379, 194428, 12754, 37797, 132826, 160016, 22567, 54383, 53186, 77611, 31107, 8339, 4694,\n 19185, 90355, 23597, 17222, 140675, 28442, 23668, 55977, 9128, 61555, 28774, 155229, 17658, 9390, 24379, 69357,\n 15752, 127381, 239631, 62460, 93181, 55913, 45133, 140155, 18676, 25249, 33164, 29581, 82837, 67223, 22362, 29975,\n 7317, 52813, 1943, 29613, 20012, 207130, 49617, 49651, 5636, 15334, 36313, 29226, 28084, 95247, 72072, 19000,\n 224932, 15811, 114, 32127, 38097, 37508, 88507, 37225, 27359, 91626, 12193, 69279, 20608, 11055, 88156, 92808,\n 2152, 57259, 55275, 72789, 24475, 104414, 1708, 9882, 3818, 48661, 66897, 1631, 34806, 227930, 85815, 87753,\n 18321, 250664, 72733, 25107, 206797, 50891, 8082, 196411, 92596, 96764, 152823, 65514, 22819, 387277, 62176, 51225,\n 40329, 15563, 189, 3659, 73670, 64357, 51793, 275136, 33482, 86653, 74615, 67058, 11318, 125720, 15388, 22388,\n 8267, 1730, 102663, 170910, 40784, 7144, 85373, 13040, 7088, 94309, 583, 44224, 140424, 77439, 18496, 164026,\n 36578, 4722, 9151, 5824, 63365, 26510, 35199, 40500, 79277, 32495, 44614, 35233, 9566, 203293, 152144, 7097,\n 2330, 183480, 98629, 13423, 330887, 44130, 68600, 30939, 97829, 31012, 345465, 56747, 94879, 4939, 160027, 149761,\n 99423, 46099, 32251, 15332, 8761, 96094, 128555, 5763, 235318, 222223, 55729, 30241, 55420, 201746, 3987, 81382,\n 8259, 49325, 23287, 7719, 24633, 251100, 92311, 18591, 110533, 64759, 170260, 393860, 7175, 21144, 132887, 3593,\n 75346, 101277, 91109, 16387, 259187, 11627, 57459, 173829, 44694, 55780, 49797, 89192, 120443, 62622, 3904, 14814,\n 23887, 1027, 112258, 64955, 99800, 11132, 66353, 36202, 48624, 18158, 88481, 96882, 43059, 11040, 2455, 7077,\n 21651, 181159, 99126, 100434, 61388, 68186, 19161, 110468, 120052, 8819, 55324, 41494, 7014, 37689, 3618, 87729,\n 92615, 207943, 9823, 128657, 12587, 15857, 6379, 67628, 51216, 71775, 157617, 63244, 1503, 3864, 218754, 110864,\n 5769, 21492, 7243, 1192, 87921, 85529, 31512, 18537, 42698, 35350, 73510, 84474, 34301, 8991, 21013, 35034,\n 566, 38832, 19838, 35586, 37216, 39413, 55006, 12178, 59742, 856, 84563, 6900, 25632, 17437, 49786, 30723,\n 13847, 70845, 4044, 7843, 23944, 235976, 55530, 48942, 6518, 20939, 73769, 192653, 52936, 95207, 23895, 132542,\n 142982, 22632, 87452, 48042, 54018, 178468, 10728, 26230, 23559, 363, 81269, 142012, 5718, 346258, 31456, 84333,\n 246476, 51018, 66692, 101804, 120570, 39962, 30373, 70593, 2864, 60541, 19425, 54209, 104092, 7201, 31545, 48018,\n 25865, 15442, 46257, 40443, 8328, 6451, 111782, 47527, 97754, 33046, 470, 245116, 31095, 39, 91934, 87208,\n 73470, 36708, 36521, 12801, 70624, 36272, 8892, 79768, 12427, 55454, 103756, 5908, 52390, 62962, 22720, 141138,\n 94634, 41689, 128402, 126390, 6628, 106394, 35527, 134394, 82727, 254651, 194502, 148064, 89549, 3202, 28359, 957,\n 21954, 27906, 49840, 142747, 8307, 24206, 48978, 1186, 71728, 133038, 71474, 91306, 6333, 110959, 74600, 70387,\n 18983, 62609, 56057, 22970, 1147, 135850, 1321, 28834, 3578, 59715, 102227, 32827, 81415, 99952, 55636, 257598,\n 390, 22702, 35701, 85872, 402916, 39216, 189795, 14929, 19467, 10112, 144422, 61514, 5279, 63421, 134686, 41436,\n 8424, 51925, 10598, 132295, 124416, 4604, 194739, 210929, 57866, 31829, 51626, 50007, 9976, 91878, 61906, 56168,\n 81906, 60918, 61859, 40017, 23059, 16887, 40927, 62064, 12785, 32893, 32913, 21782, 93965, 20169, 44387, 79084,\n 38463, 11457, 93950, 27127, 157050, 2697, 337088, 5116, 54128, 48255, 33279, 8821, 27352, 25515, 124022, 65710,\n 28906, 38557, 33390, 1722, 104435, 72215, 38551, 12094, 30978, 25113, 6671, 37355, 175109, 42862, 98024, 65406,\n 221276, 59624, 118012, 64637, 78760, 86697, 21426, 1639, 40350, 12584, 67193, 84144, 31396, 7863, 143011, 69629,\n 63112, 9454, 28666, 65798, 46372, 134721, 6314, 51402, 30837, 151922, 2847, 38676, 38008, 92823, 136245, 17540,\n 5504, 109295, 205242, 37606, 5211, 214892, 1586, 20670, 208711, 137743, 19328, 40652, 16995, 20023, 14657, 154919,\n 34422, 12996, 13918, 38221, 47690, 16398, 2959, 37680, 89122, 6721, 198469, 91876, 172043, 83898, 101992, 26084,\n 94570, 3635, 76958, 22853, 76497, 38266, 176590, 168403, 44464, 142840, 79180, 184594, 1984, 41806, 83147, 11985,\n 6546, 366068, 59732, 24533, 271505, 8736, 39084, 222992, 93429, 28962, 58985, 86665, 8432, 30028, 14548, 32439,\n 54424, 165029, 55175, 27458, 69046, 121277, 46168, 33732, 20661, 24581, 135574, 123110, 37556, 79260, 72611, 16957,\n 12939, 46162, 58238, 44907, 72936, 253758, 41324, 32518, 96480, 11949, 124438, 65280, 43256, 34107, 53533, 43531,\n 37037, 28366, 45970, 32741, 173438, 6121, 194202, 62969, 26355, 30314, 58370, 28455, 1848, 50519, 82830, 90393,\n 21761, 295490, 10936, 256940, 133568, 44050, 20269, 4089, 27457, 21610, 219460, 36743, 14821, 101388, 52005, 13124,\n 30979, 140816, 167362, 26054, 18458, 60789, 34917, 40447, 26606, 33422, 9066, 3452, 83614, 5761, 20263, 137238,\n 25038, 91310, 101, 52322, 74548, 42572, 38084, 214054, 186568, 31802, 17665, 30620, 141936, 37730, 14420, 4265,\n 187218, 49640, 188208, 51441, 55388, 96452, 66659, 40869, 42039, 60967, 221027, 19234, 178581, 29105, 96050, 9165,\n 196118, 157335, 3738, 40354, 117436, 2965, 34136, 59659, 15570, 50843, 230035, 31444, 71260, 43886, 18316, 5387,\n 38500, 168508, 17406, 32174, 8828, 103373, 143806, 90367, 3560, 18719, 122310, 16508, 26719, 2541, 105429, 6645,\n 37998, 73190, 10591, 235916, 49737, 87112, 233941, 53188, 32193, 79154, 4544, 52905, 126477, 7580, 63501, 57314,\n 3216, 31337, 6541, 103083, 60846, 49, 9756, 15481, 1355, 43840, 14319, 13743, 27486, 10222, 73114, 230718,\n 418644, 16706, 6674, 279748, 23058, 45273, 295831, 86306, 2743, 5535, 88773, 21829, 35253, 120938, 31153, 3169,\n 16839, 42847, 8751, 80974, 33942, 36867, 35514, 16485, 26474, 77775, 56877, 5391, 48346, 3882, 108713, 31403,\n 27804, 55248, 26235, 43821, 136104, 40118, 175507, 28034, 203908, 18732, 1788, 34030, 106427, 36958, 54359, 7251,\n 44936, 15356, 69139, 455, 157915, 22173, 140291, 50348, 43275, 82066, 49621, 54952, 15216, 36226, 96695, 66855,\n 6936, 1987, 8227, 196087, 4631, 68827, 99004, 47541, 110265, 17953, 147605, 110242, 58520, 31312, 38724, 329975,\n 642, 3155, 34497, 75937, 6207, 73843, 6120, 17249, 51429, 117746, 3218, 910, 68961, 319671, 14938, 29555,\n 34700, 1649, 66673, 72268, 9655, 76800, 153087, 6941, 210168, 27130, 35398, 1780, 73242, 3135, 56689, 19556,\n 165307, 8765, 35967, 121458, 13333, 70453, 17350, 117253, 22265, 13340, 44265, 39869, 441, 3742, 135025, 23581,\n 33309, 16543, 17731, 13291, 157637, 283005, 21408, 101360, 63887, 52312, 83873, 5338, 233779, 23759, 186949, 34531,\n 177320, 38069, 156465, 91004, 19353, 59852, 68160, 14891, 1338, 1072, 29823, 1950, 28901, 81407, 313445, 73038,\n 84807, 162348, 240257, 37162, 138934, 16111, 58013, 41253, 102951, 16457, 96056, 19541, 56402, 67217, 41638, 94381,\n 89674, 29481, 37456, 80815, 151579, 13937, 13683, 132537, 19699, 134545, 67020, 29816, 222341, 141235, 427578, 48868,\n 129557, 233342, 23077, 87871, 16213, 18728, 16184, 9469, 37913, 19680, 2798, 171356, 178328, 13216, 50049, 72690,\n 71904, 124644, 55455, 7504, 29052, 41036, 266546, 19899, 30391, 188755, 8659, 59469, 16, 104298, 112943, 53865,\n 76203, 138226, 68857, 139953, 14125, 107625, 119795, 173133, 4398, 50273, 48808, 54390, 16466, 122086, 31835, 67035,\n 50971, 48859, 7508, 46427, 66477, 73021, 84615, 39985, 83076, 46779, 201569, 53336, 36443, 60865, 168164, 143810,\n 51393, 25548, 169307, 32896, 24485, 38424, 21837, 29087, 275813, 51674, 6714, 64883, 46169, 187369, 55186, 76192,\n 12852, 12018, 62134, 31067, 118303, 16542, 12125, 10579, 4928, 26291, 43854, 7091, 10946, 253716, 109062, 39283,\n 17261, 113012, 258512, 47764, 125126, 32646, 55892, 80279, 201623, 149872, 3192, 385, 1208, 48750, 5376, 58738,\n 22335, 5427, 82416, 47811, 32435, 143086, 38930, 94128, 59975, 156037, 37977, 38224, 62485, 7698, 50405, 71027,\n 16462, 21559, 136153, 34131, 107506, 162069, 63703, 3101, 215029, 40407, 4178, 3774, 9187, 80019, 17880, 97926,\n 67579, 2600, 18405, 8351, 47924, 86638, 70820, 92206, 86453, 29610, 42241, 119200, 3198, 15466, 67813, 57863,\n 35454, 4779, 99518, 4649, 104641, 144269, 33730, 38073, 65864, 6838, 109456, 193298, 154007, 5623, 45741, 30846,\n 182578, 25573, 157224, 1543, 58575, 138703, 146140, 44971, 49356, 18275, 59064, 20300, 13122, 11848, 24453, 11973,\n 9797, 86843, 2919, 25530, 49210, 1130, 161220, 76788, 75373, 85604, 34926, 36014, 17777, 17255, 51533, 11676,\n 92226, 51845, 119859, 21525, 5936, 18507, 28050, 1140, 31418, 14857, 34207, 47859, 10750, 36382, 32079, 106909,\n 59426, 87757, 38393, 110042, 15965, 97104, 33757, 35344, 97993, 53979, 33651, 45407, 41884, 82515, 173089, 7177,\n 58371, 35365, 47543, 51927, 35587, 10670, 23544, 29306, 84233, 39976, 76076, 62097, 9007, 8668, 28119, 78281,\n 120790, 19835, 143020, 54968, 18670, 64959, 20649, 34469, 42570, 33001, 136570, 87796, 120044, 1106, 58700, 63951,\n 127623, 12805, 83057, 40212, 31773, 49850, 7361, 54336, 347524, 101314, 23751, 19569, 48791, 29174, 49369, 20467,\n 7465, 75842, 38281, 623, 112457, 60210, 28849, 51003, 94720, 6426, 90047, 85560, 43761, 3579, 85105, 34607,\n 90410, 118528, 7224, 42907, 111163, 18168, 6960, 161135, 191298, 5247, 100584, 127552, 171568, 20121, 91173, 12636,\n 54615, 20199, 63730, 98105, 2396, 40387, 14438, 125012, 4765, 33235, 12865, 45299, 37728, 82098, 77872, 114037,\n 59253, 19675, 24838, 398016, 102561, 11446, 17069, 57508, 178277, 65836, 99941, 26114, 2585, 271882, 136866, 50126,\n 11027, 155648, 118367, 14585, 8910, 123015, 335383, 40434, 41016, 53021, 14439, 87098, 176860, 201543, 121888, 2358,\n 9286, 5739, 22666, 54270, 37884, 169381, 33984, 93859, 16124, 89364, 72207, 51639, 76366, 99029, 65812, 2198,\n 12147, 174891, 194289, 6986, 30252, 88822, 21284, 11445, 288337, 160821, 33034, 100869, 43852, 25761, 52882, 1144,\n 103809, 1924, 84458, 86079, 43411, 13542, 139276, 18141, 34978, 41298, 7276, 26481, 173800, 33210, 17951, 142652,\n 33616, 33677, 2210, 19941, 98568, 2486, 192414, 80136, 12058, 235883, 50963, 249638, 29572, 27221, 47034, 6124,\n 72107, 63346, 97620, 158513, 299699, 40388, 23235, 37176, 224244, 198386, 121323, 67992, 23827, 63170, 17838, 106622,\n 158590, 26807, 5345, 23489, 91891, 55474, 74834, 37981, 13058, 5977, 72552, 34706, 26828, 145172, 19904, 21367,\n 34043, 960, 77092, 91381, 4733, 47446, 7680, 41697, 5170, 16960, 14741, 46101, 13656, 473, 51842, 37433,\n 11103, 11551, 121951, 13191, 97536, 165932, 50397, 51628, 129028, 9069, 44885, 6590, 59195, 47045, 32940, 225472,\n 90345, 21833, 13303, 29407, 96615, 141951, 5198, 6028, 18395, 7181, 3861, 14966, 156358, 167182, 36529, 55253,\n 25942, 173153, 30959, 27261, 50691, 150176, 162201, 38467, 48462, 80602, 42163, 118482, 168, 108756, 26011, 17166,\n 54149, 456538, 22512, 91374, 13816, 90358, 131615, 18132, 226707, 1824, 28139, 26860, 42253, 93877, 77351, 65575,\n 8980, 80574, 22020, 27948, 40422, 91324, 76376, 13528, 39281, 91685, 82215, 122541, 144066, 1983, 193851, 17283,\n 26320, 2739, 194978, 4790, 26845, 42627, 61300, 65815, 174612, 55133, 4200, 191130, 79771, 158321, 52280, 166796,\n 221620, 62461, 11278, 4067, 88152, 83409, 31717, 121367, 13522, 47325, 37945, 10406, 174348, 249321, 154101, 64912,\n 29938, 51775, 17220, 15776, 166138, 78890, 84425, 54121, 42861, 16368, 24572, 291647, 10197, 32073, 22651, 11677,\n 97509, 26952, 35787, 18424, 41910, 71614, 94977, 72318, 41594, 70024, 275419, 37702, 60199, 7335, 39107, 61315,\n 18271, 18394, 33768, 87884, 104277, 123724, 7277, 56288, 71981, 189803, 49320, 3352, 6798, 14240, 8954, 69220,\n 94433, 57372, 28620, 68863, 193727, 85575, 42309, 41667, 67689, 42081, 22543, 44824, 12719, 28540, 114236, 101553,\n 27638, 27296, 4300, 5353, 4663, 19379, 94098, 3758, 95888, 95144, 80344, 87320, 28447, 259518, 12718, 71391,\n 152731, 37063, 24132, 31911, 104896, 15672, 103782, 1521, 4945, 72541, 23717, 122632, 15619, 87175, 206120, 29428,\n 189780, 61416, 28350, 44457, 972, 1175, 47233, 198738, 95789, 41907, 21953, 97034, 59341, 22864, 53713, 16873,\n 32971, 20693, 20954, 31336, 21477, 16169, 38370, 16412, 9019, 3841, 24599, 21938, 17085, 6484, 81198, 76413,\n 5849, 72514, 12320, 65247, 276175, 37234, 59796, 52642, 16312, 57349, 198507, 94148, 46134, 18958, 125552, 1747,\n 18725, 151873, 14901, 5490, 68287, 29470, 3689, 64794, 40814, 26018, 25692, 54450, 2703, 88278, 124886, 173087,\n 174000, 24159, 179477, 24276, 46004, 201876, 209202, 445, 52876, 31948, 30206, 157610, 39180, 18439, 44124, 50469,\n 5774, 96278, 222758, 200216, 50290, 45486, 20435, 46986, 46276, 140133, 142326, 15569, 13363, 47522, 92583, 2182,\n 7135, 16853, 22998, 30272, 4952, 63263, 35623, 39096, 53789, 44864, 20053, 110392, 124213, 4630, 16087, 28221,\n 127787, 25839, 77481, 44693, 13464, 113146, 6983, 27069, 55717, 50102, 4760, 7107, 26186, 66507, 59145, 36032,\n 104182, 71328, 29425, 64317, 50781, 47465, 94298, 69706, 74899, 22754, 120756, 25108, 93077, 56834, 73286, 39928,\n 16218, 41699, 176763, 7555, 70819, 50083, 26895, 23315, 26014, 16773, 123079, 41712, 5719, 31516, 90427, 158540,\n 85051, 183128, 40864, 27505, 55392, 9058, 45224, 96857, 30901, 136622, 96557, 56304, 120061, 11501, 151448, 5773,\n 89743, 7769, 86069, 2935, 18471, 41628, 10114, 33660, 110170, 49479, 26745, 92846, 33221, 26731, 18795, 87076,\n 8550, 2100, 29972, 120289, 3077, 72490, 33784, 2630, 208722, 50861, 63483, 79029, 6419, 39467, 14302, 45286,\n 64207, 9686, 67513, 44170, 1050, 77246, 59266, 17055, 53801, 7150, 11111, 42432, 4278, 94579, 362117, 36175,\n 42902, 41933, 39002, 98489, 22913, 74161, 84773, 57036, 17556, 162288, 74485, 178760, 93867, 73635, 128860, 50362,\n 261, 67455, 80001, 46080, 35662, 4368, 25247, 19230, 74393, 22588, 1822, 27682, 235324, 13798, 85998, 13194,\n 235067, 23514, 71669, 147632, 23191, 134748, 214683, 105101, 1518, 25489, 247114, 7380, 54842, 26922, 3971, 26361,\n 20844, 68642, 170517, 77339, 123255, 8963, 77818, 150998, 48466, 36806, 2732, 23261, 11741, 236162, 18243, 126216,\n 28690, 50546, 16385, 92760, 197383, 246558, 201295, 88255, 67588, 71687, 176076, 172653, 169058, 33906, 63747, 24835,\n 157621, 43338, 30050, 46152, 132741, 2770, 51371, 94835, 6614, 15112, 11749, 56936, 1250, 19027, 399017, 58036,\n 100215, 23388, 55815, 308768, 124152, 94803, 9521, 64186, 8971, 28, 30427, 62163, 7616, 103838, 35079, 29203,\n 131235, 7743, 17389, 10882, 37420, 61460, 228512, 85363, 41581, 131077, 62822, 119647, 10130, 54445, 26925, 19968,\n 29016, 24446, 74028, 24176, 61448, 67185, 9254, 8563, 119129, 9771, 99184, 37716, 39514, 10532, 221512, 258753,\n 218630, 55980, 23394, 32141, 61924, 66749, 32411, 3741, 36475, 26678, 77010, 44946, 91203, 128749, 116953, 20476,\n 49625, 53116, 13735, 102335, 29376, 51946, 83407, 67892, 59212, 34685, 21083, 1546, 112982, 32972, 74397, 1078,\n 190545, 16082, 86140, 58591, 89611, 101531, 10061, 105104, 76319, 20035, 17551, 52611, 169061, 190842, 100780, 23907,\n 90413, 115619, 9675, 34710, 193435, 49443, 129734, 11183, 258877, 16318, 136182, 126808, 44635, 27304, 192375, 2599,\n 125648, 47051, 12091, 23814, 721, 58800, 40137, 66726, 97930, 60877, 74487, 7942, 54326, 9841, 41428, 13762,\n 8211, 85383, 6950, 99177, 79806, 201786, 296464, 124087, 13144, 29741, 41721, 47634, 55088, 254286, 106408, 17041,\n 99064, 12942, 64086, 45233, 14005, 2612, 55827, 255, 7984, 13980, 38574, 12776, 46654, 73499, 249951, 2101,\n 26676, 25996, 132326, 116415, 119062, 50449, 31033, 23038, 11589, 179252, 20007, 14860, 129270, 21143, 17796, 144715,\n 60106, 70758, 69842, 34674, 282133, 44014, 16774, 57268, 38528, 24053, 46373, 201667, 28327, 471023, 51889, 102667,\n 21193, 114909, 84132, 69317, 96723, 67969, 16134, 68145, 15058, 28765, 32035, 2524, 101089, 98664, 25045, 76571,\n 14957, 86040, 118506, 262428, 154764, 81573, 39681, 283900, 73287, 127825, 544, 80448, 52347, 38512, 175971, 15180,\n 45467, 33086, 46552, 48894, 81107, 43213, 36672, 54025, 76703, 8053, 7608, 13299, 56619, 20752, 238099, 54164,\n 105133, 1444, 32942, 953, 37564, 8000, 66316, 119463, 106817, 404, 13667, 149108, 128597, 31267, 10269, 49836,\n 106150, 1484, 52330, 76965, 160486, 171648, 38456, 31263, 22424, 37738, 66245, 67467, 143369, 60471, 75610, 20895,\n 115528, 86070, 60854, 40796, 49347, 18989, 15030, 11371, 37578, 15779, 79867, 10187, 86462, 46402, 155626, 93200,\n 40229, 7090, 57547, 108053, 99598, 11088, 47505, 41218, 206017, 2173, 20988, 30219, 22919, 80563, 57566, 42369,\n 93141, 41675, 2407, 182519, 120495, 27154, 16702, 29456, 14349, 7958, 16688, 117177, 140375, 42467, 261919, 74916,\n 153569, 10836, 34742, 49526, 7621, 105997, 12212, 2270, 392377, 7755, 17959, 25086, 232152, 138791, 33847, 13860,\n 35316, 5811, 1344, 71259, 50452, 207539, 92635, 50359, 5821, 33674, 30255, 2086, 2587, 96264, 17543, 42,\n 6029, 9580, 43007, 139248, 82831, 12917, 29607, 25786, 51467, 42137, 85161, 100698, 31561, 88989, 121990, 278500,\n 3602, 109344, 37982, 15279, 116442, 28936, 30880, 87894, 58079, 128661, 126731, 67392, 28051, 146885, 4861, 16216,\n 97344, 42827, 147561, 153948, 22684, 21335, 47685, 1853, 43349, 15185, 59642, 10229, 25520, 187921, 108972, 5579,\n 98037, 24945, 6697, 19193, 63734, 137934, 75056, 89740, 19767, 224268, 56138, 63643, 151661, 39313, 70618, 84031,\n 89723, 84074, 13703, 85626, 35460, 8867, 64845, 3439, 57906, 99776, 63968, 49270, 81130, 34356, 16210, 23547,\n 36446, 34090, 140028, 72439, 2221, 22163, 57058, 363492, 113754, 18913, 95451, 48663, 54464, 54037, 176097, 68425,\n 3023, 34906, 29482, 117389, 341780, 80431, 58330, 16753, 92616, 60907, 94846, 147486, 4498, 48646, 7773, 46801,\n 7778, 18946, 464978, 47558, 33223, 177444, 7328, 15626, 63337, 94700, 11743, 9351, 255024, 39098, 16447, 42647,\n 96230, 39769, 58840, 10068, 63439, 35800, 65843, 58823, 413844, 9156, 51258, 7434, 61791, 85018, 6872, 3692,\n 28096, 7121, 33024, 6009, 75532, 31997, 192535, 9661, 3304, 9547, 14753, 31987, 25314, 55689, 15896, 20430,\n 39472, 31340, 99744, 25398, 115569, 54883, 28719, 205423, 23071, 57855, 64638, 149867, 25671, 82403, 37616, 20668,\n 39989, 77996, 74948, 140555, 175248, 64810, 36515, 46595, 4958, 248773, 24045, 28728, 136673, 168704, 20804, 114833,\n 100325, 27135, 21205, 96151, 153134, 45992, 7093, 13992, 76047, 1980, 19432, 145001, 75159, 87462, 17710, 1013,\n 45556, 34297, 144882, 20648, 26061, 11319, 129567, 108555, 18872, 464580, 33386, 22717, 65948, 167189, 5603, 135042,\n 79542, 8801, 202632, 18114, 91882, 5973, 5239, 67315, 4431, 60916, 47819, 71693, 32597, 32606, 18183, 45072,\n 80329, 76385, 24749, 51305, 40314, 156514, 14693, 130345, 13168, 66214, 18029, 12858, 34801, 27628, 14544, 10823,\n 40522, 40185, 33739, 148694, 23548, 9923, 61012, 28859, 17933, 19442, 34364, 99849, 164107, 141167, 30629, 21054,\n 6744, 36491, 8096, 42474, 41706, 155060, 30650, 10600, 163442, 1143, 96655, 61390, 52359, 7559, 51568, 64256,\n 203854, 4467, 22453, 14504, 436398, 7878, 6980, 8293, 63610, 293747, 16167, 35763, 19627, 147603, 15419, 18032,\n 110744, 51346, 33681, 54571, 40472, 48615, 39073, 21604, 13754, 173027, 92560, 11083, 47299, 63062, 11813, 52007,\n 29883, 9734, 139722, 15953, 1550, 20651, 13616, 49306, 16113, 90089, 92326, 7584, 30712, 72424, 164858, 6831,\n 152871, 55746, 197721, 34167, 196442, 6022, 112107, 55215, 7538, 123381, 4920, 43539, 77165, 8939, 50392, 34192,\n 20225, 79762, 22505, 58667, 40770, 29788, 97180, 82835, 4568, 8579, 13273, 363569, 35898, 49983, 436, 36598,\n 3237, 131691, 62418, 35591, 8101, 4073, 379438, 65218, 76072, 33887, 2968, 27573, 212619, 288680, 68278, 72851,\n 150504, 217896, 6913, 121339, 22017, 35340, 51072, 43616, 75043, 31437, 10833, 81487, 4364, 22968, 41454, 106687,\n 85446, 19863, 109625, 149241, 524, 141850, 214404, 54376, 657, 237023, 9401, 108137, 53800, 32474, 49712, 53334,\n 126876, 27337, 45552, 177696, 8269, 15036, 12097, 42240, 2328, 125374, 119295, 99715, 2500, 19624, 39441, 27220,\n 102691, 60957, 94543, 39101, 18566, 67362, 13975, 78230, 25017, 34017, 239007, 90027, 39351, 41681, 35354, 43822,\n 1043, 916, 58587, 141983, 94818, 38799, 75459, 41114, 67432, 16195, 36606, 59568, 22272, 126769, 31424, 68659,\n 12287, 134302, 257977, 5756, 207285, 95637, 47248, 117689, 19583, 77451, 22373, 12200, 54993, 117118, 34244, 29386,\n 34562, 53819, 71267, 64172, 77665, 49368, 7716, 59301, 25749, 45426, 194789, 17297, 2650, 1766, 32501, 45198,\n 20403, 20984, 6600, 14171, 94604, 19037, 5402, 29896, 9938, 59935, 109708, 88081, 145182, 44844, 39167, 352626,\n 164173, 35374, 45982, 6122, 154, 73419, 220487, 53834, 53601, 17992, 8609, 229321, 5610, 68098, 66815, 71012,\n 95069, 140968, 27396, 8957, 134489, 24656, 86659, 56598, 134852, 17316, 123838, 255436, 6613, 41610, 138033, 81452,\n 32023, 32396, 123687, 63398, 8693, 29712, 30407, 19296, 121188, 3551, 36099, 20032, 111948, 56624, 16547, 27453,\n 35916, 15378, 52039, 56849, 13489, 22214, 73177, 53097, 277349, 2157, 14029, 187886, 10260, 141743, 246460, 91880,\n 50869, 3788, 49486, 133566, 54950, 33120, 129337, 53768, 18333, 9525, 26902, 312251, 10297, 9020, 70759, 16647,\n 112432, 59260, 84609, 9818, 82766, 73569, 468, 46001, 75780, 55028, 52106, 11498, 43645, 108069, 17150, 17753,\n 29417, 16705, 31799, 9606, 289, 122254, 115975, 8620, 6133, 255357, 56908, 14456, 133464, 43554, 79224, 11247,\n 29630, 160, 12756, 25464, 65960, 350428, 62521, 321796, 100359, 67358, 35169, 46172, 113128, 48988, 88868, 31094,\n 33266, 6847, 60887, 98188, 49659, 69117, 92977, 220228, 13947, 80181, 35103, 62170, 97351, 13475, 2440, 199768,\n 19498, 36597, 46971, 25234, 67806, 62881, 84717, 73648, 181966, 10488, 94149, 21550, 26655, 63436, 48375, 14405,\n 165650, 9621, 24439, 28043, 42735, 4490, 29963, 56674, 45373, 1934, 262446, 50855, 67098, 26898, 5261, 52696,\n 40644, 33900, 9440, 180286, 87162, 22940, 19704, 26936, 69769, 10254, 101759, 27406, 12243, 48000, 73926, 113215,\n 54935, 5726, 192787, 4312, 106216, 9366, 11550, 52949, 23457, 212271, 277152, 133895, 108374, 6191, 96477, 29980,\n 218916, 58024, 54696, 40853, 91124, 65894, 91170, 65908, 252552, 6793, 29212, 15389, 44516, 122515, 52617, 35058,\n 9017, 103536, 39510, 49136, 19242, 130652, 662077, 74699, 47024, 31422, 8517, 73351, 24399, 13867, 128360, 4810,\n 4434, 61779, 111983, 61036, 17798, 110240, 59722, 102960, 39688, 10001, 23803, 23039, 176498, 56659, 44814, 134295,\n 17188, 77577, 74466, 226175, 102472, 154333, 63900, 111747, 18062, 41171, 79669, 32773, 408933, 42562, 28931, 30907,\n 107388, 43487, 2946, 240310, 23938, 24354, 319, 184983, 7927, 6488, 1422, 10790, 68809, 68209, 64775, 4361,\n 202, 17123, 59634, 51200, 44391, 18188, 17843, 2619, 74278, 3230, 9540, 47187, 21702, 36274, 56894, 43907,\n 16310, 34790, 16866, 6150, 5561, 13587, 107545, 108873, 126867, 86986, 28640, 33427, 19017, 5762, 80637, 17430,\n 46903, 2047, 131055, 25958, 13558, 5444, 47152, 13900, 44563, 122857, 45348, 70863, 39593, 54332, 38068, 33637,\n 318, 40310, 143467, 18502, 24520, 11377, 62013, 28942, 27246, 28269, 83545, 17999, 59015, 90707, 30065, 15161,\n 34720, 1263, 37008, 2012, 6060, 98575, 92933, 5721, 299, 199555, 24578, 29223, 2985, 743, 115825, 109523,\n 136657, 47454, 26378, 53586, 3733, 174945, 93340, 244456, 5693, 37386, 28782, 89767, 27545, 23573, 18798, 136425,\n 34320, 84778, 20041, 48453, 38215, 7477, 71958, 40621, 8773, 5874, 187927, 105965, 51100, 43533, 18083, 8443,\n 10180, 43597, 2003, 183999, 69689, 12216, 129696, 146188, 62389, 34044, 68410, 12765, 43273, 26949, 266807, 3345,\n 34477, 79197, 5688, 47539, 213110, 21634, 22257, 50092, 32222, 42346, 39530, 63668, 98, 134978, 74022, 5152,\n 59088, 174145, 37220, 9934, 9545, 118937, 5724, 87240, 19875, 15784, 40143, 23263, 87513, 181654, 285152, 37881,\n 263241, 4966, 43934, 10433, 186657, 6470, 74416, 225854, 25908, 142677, 246262, 32280, 6192, 75890, 45546, 143264,\n 135305, 29742, 47013, 77787, 11732, 126658, 8763, 37950, 21806, 57557, 113464, 89465, 108995, 164574, 23894, 22996,\n 23169, 15369, 23117, 17642, 130607, 40503, 36239, 280990, 44666, 9981, 40427, 147487, 26869, 168452, 32886, 32991,\n 46798, 240839, 15111, 70502, 65697, 88548, 44145, 28701, 48767, 31139, 206777, 35659, 181164, 166262, 14554, 171445,\n 31786, 66523, 76607, 17956, 6507, 31279, 90476, 116611, 167918, 6560, 1243, 115324, 80128, 41867, 55897, 187323,\n 37069, 32596, 189444, 145931, 13390, 105530, 65709, 26805, 6999, 55714, 41300, 22915, 68951, 22138, 21120, 22264,\n 10058, 19945, 33635, 56123, 99085, 10032, 5818, 6016, 46649, 57476, 35264, 94413, 112522, 262288, 93686, 83038,\n 14341, 23204, 28807, 66084, 77987, 6101, 126673, 7133, 38126, 5923, 122091, 170240, 97772, 46874, 215746, 43948,\n 41622, 3272, 55596, 8332, 146411, 251315, 13533, 8561, 81521, 115449, 48616, 175175, 2063, 186556, 3036, 134537,\n 75772, 29728, 82360, 22973, 186559, 86348, 89100, 38388, 82297, 45610, 2613, 87082, 9986, 177812, 57884, 23591,\n 47485, 42543, 33582, 44713, 74439, 257444, 252451, 31825, 35631, 38540, 33066, 5147, 13973, 4343, 51830, 70378,\n 22827, 26448, 95560, 36896, 241741, 48067, 203953, 298860, 61620, 20450, 3220, 67272, 6586, 107662, 100160, 108684,\n 6929, 57226, 4762, 7457, 1320, 40404, 77204, 99309, 62750, 208653, 59977, 44000, 74315, 34332, 5819, 172217,\n 64904, 114077, 18147, 84012, 1791, 98456, 90930, 21446, 116669, 103938, 7422, 85140, 59713, 5768, 326211, 16239,\n 75411, 13229, 29398, 10758, 236107, 1539, 112472, 95979, 152154, 151294, 306, 21196, 38146, 10700, 6891, 84282,\n 109646, 56492, 40539, 6589, 119491, 51354, 30685, 140209, 136906, 29622, 73617, 49553, 70525, 51671, 166869, 139616,\n 74395, 37439, 49595, 45678, 11959, 33211, 86560, 52434, 9282, 62690, 112155, 130810, 5243, 108261, 99970, 265613,\n 72551, 80049, 6391, 33365, 90721, 66737, 69872, 87011, 1860, 9032, 112544, 60905, 37371, 89015, 140351, 19076,\n 850, 373531, 2802, 36725, 218795, 72062, 28990, 16550, 24614, 7815, 6187, 26336, 33373, 32162, 42791, 73555,\n 32062, 23386, 10244, 56392, 49442, 27076, 136262, 12412, 14883, 1134, 33675, 97153, 199281, 15608, 100152, 74072,\n 47942, 254301, 36451, 16026, 10687, 65067, 56708, 254030, 30290, 50490, 13864, 57941, 259331, 35588, 23485, 43486,\n 24869, 21620, 92971, 22072, 88645, 1048, 182050, 13343, 32452, 14825, 19509, 3325, 216938, 45740, 99716, 189082,\n 53740, 78245, 25609, 24311, 176777, 47340, 308354, 40669, 66085, 14102, 125339, 9225, 128709, 97207, 1271, 200933,\n 78439, 113451, 88975, 18324, 46521, 11819, 18570, 141756, 72512, 170020, 52754, 63550, 118515, 103073, 93330, 32736,\n 50499, 14722, 31600, 68452, 398867, 29316, 172786, 18417, 104924, 2606, 5670, 84818, 16288, 67106, 59580, 82929,\n 607401, 291, 85829, 359, 15897, 35830, 50696, 65630, 52672, 22115, 356968, 29895, 40837, 231192, 34024, 38957,\n 26722, 406, 23335, 124952, 72068, 68804, 13268, 147101, 164740, 276569, 162596, 66943, 11569, 26654, 66358, 4777,\n 23229, 102127, 5848, 978, 2921, 59666, 5371, 28212, 90108, 42938, 39320, 2499, 4271, 108792, 33510, 125072,\n 71653, 65239, 38250, 66357, 38577, 13964, 86251, 35708, 50755, 36010, 29448, 12209, 3844, 38222, 206337, 100876,\n 67827, 137088, 14167, 252225, 84163, 195270, 1306, 5703, 54198, 779, 46802, 22028, 51124, 86759, 70560, 113164,\n 35685, 162145, 45471, 34561, 422, 2611, 6464, 47486, 19223, 38246, 9191, 18331, 89942, 243642, 212364, 15893,\n 17518, 22617, 6409, 30046, 126182, 59716, 36560, 104428, 18846, 26592, 19458, 50793, 147333, 30826, 1388, 27647,\n 10922, 14495, 33545, 19269, 135828, 39727, 41601, 46931, 233379, 49169, 131130, 182112, 16276, 82381, 118209, 142445,\n 128310, 19672, 28740, 82907, 33436, 3118, 102206, 28723, 24819, 41937, 38854, 5157, 3881, 111491, 1142, 9776,\n 421673, 152241, 29309, 14961, 87854, 6054, 15424, 3796, 82656, 54996, 2108, 55367, 239450, 154525, 9643, 118103,\n 106041, 64601, 68549, 48707, 30266, 25772, 18740, 9462, 229669, 91798, 112152, 191327, 14493, 72828, 8175, 66636,\n 236474, 25817, 87351, 129027, 76653, 20422, 22983, 71240, 27846, 44661, 12399, 46158, 77704, 53101, 35032, 11072,\n 17300, 109294, 33638, 24408, 1895, 11241, 760, 17584, 82479, 125877, 63150, 141075, 34259, 23274, 81698, 15732,\n 43577, 48340, 91584, 14688, 16379, 24481, 150280, 96420, 262050, 48635, 43727, 61819, 56268, 72003, 88178, 17281,\n 79912, 13218, 122519, 125295, 166396, 11811, 2171, 118930, 67746, 17636, 178278, 174656, 95661, 173039, 83845, 79689,\n 17473, 98555, 127696, 203415, 54730, 22925, 232239, 9309, 12136, 175026, 20740, 180188, 10747, 39816, 314017, 266131,\n 10040, 175732, 112550, 220651, 31974, 37393, 888, 23008, 86799, 4303, 64905, 148467, 75337, 251, 3284, 370102,\n 50264, 9835, 5438, 23655, 4481, 29851, 329, 12855, 7162, 64931, 78141, 12804, 42372, 296771, 83547, 18624,\n 34874, 86271, 3360, 48665, 77735, 88767, 11463, 63527, 28889, 22258, 29140, 194315, 113924, 25499, 6406, 31334,\n 1845, 4802, 49184, 43455, 35469, 127594, 92970, 61038, 115005, 38840, 87761, 106838, 8811, 20572, 55637, 11162,\n 96721, 132425, 108925, 2948, 125457, 36356, 3502, 75270, 27622, 127192, 2561, 123095, 49394, 61155, 16897, 110064,\n 9699, 89448, 53356, 19628, 220310, 21622, 83036, 9885, 112214, 6087, 26713, 17901, 161912, 91492, 3440, 68594,\n 9266, 92238, 8087, 6866, 150194, 72175, 80701, 13459, 31836, 43243, 239700, 95846, 44749, 50647, 21945, 230538,\n 120612, 132371, 244604, 5193, 105637, 34661, 41341, 68775, 85393, 1874, 8771, 33718, 49672, 77403, 595452, 99507,\n 6490, 58895, 128742, 7704, 39239, 73217, 43816, 62824, 37804, 199976, 22361, 80005, 87514, 94832, 14089, 4574,\n 139975, 59142, 75523, 100268, 43906, 53442, 15152, 2547, 186002, 17011, 19513, 204282, 3343, 60568, 128318, 119250,\n 4298, 51871, 41336, 71759, 21921, 45074, 98169, 145889, 99427, 11350, 1237, 5520, 28799, 7803, 53702, 21026,\n 136352, 38293, 128690, 12158, 90132, 44600, 10184, 26957, 39459, 126025, 78904, 82999, 59373, 39301, 150198, 120529,\n 153042, 20177, 50089, 14764, 271571, 30530, 123161, 38975, 101562, 22941, 5648, 124654, 109243, 69817, 71675, 49162,\n 106884, 21241, 107795, 30258, 16572, 188262, 141456, 7688, 60718, 8271, 11044, 32440, 104608, 103419, 236109, 93156,\n 43293, 128929, 42107, 67180, 25201, 115254, 185488, 130954, 72813, 167547, 20537, 39969, 38432, 22582, 184022, 1139,\n 27199, 5655, 17767, 97412, 122606, 209377, 27070, 35871, 326617, 188954, 42680, 73512, 80911, 22629, 3011, 95021,\n 315242, 157737, 383, 41821, 41808, 19335, 27950, 15674, 25677, 110950, 35375, 76835, 59108, 57370, 35262, 16569,\n 160415, 37706, 78086, 32041, 49691, 137143, 9782, 172080, 50148, 77917, 6323, 10110, 69172, 17711, 21795, 59511,\n 76184, 135114, 31046, 132319, 59105, 157578, 20549, 80778, 57649, 158421, 65143, 4575, 72235, 21899, 10797, 92745,\n 34035, 106079, 80159, 4508, 78304, 25350, 75457, 46458, 32937, 25623, 47, 8531, 104751, 84953, 8138, 36508,\n 187199, 66310, 115274, 13253, 32461, 38536, 1916, 42007, 187160, 35055, 26325, 84394, 35963, 94216, 45590, 97782\n];\n//# sourceMappingURL=generated-prefix-list-browser.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { setMaxListeners } from '@libp2p/interface';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport length from 'it-length';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { xor as uint8ArrayXor } from 'uint8arrays/xor';\nimport { TABLE_REFRESH_INTERVAL, TABLE_REFRESH_QUERY_TIMEOUT } from '../constants.js';\nimport GENERATED_PREFIXES from './generated-prefix-list.js';\n/**\n * Cannot generate random KadIds longer than this + 1\n */\nconst MAX_COMMON_PREFIX_LENGTH = 15;\n/**\n * A wrapper around `k-bucket`, to provide easy store and\n * retrieval for peers.\n */\nexport class RoutingTableRefresh {\n log;\n peerRouting;\n routingTable;\n refreshInterval;\n refreshQueryTimeout;\n commonPrefixLengthRefreshedAt;\n refreshTimeoutId;\n constructor(components, init) {\n const { peerRouting, routingTable, refreshInterval, refreshQueryTimeout, logPrefix } = init;\n this.log = components.logger.forComponent(`${logPrefix}:routing-table:refresh`);\n this.peerRouting = peerRouting;\n this.routingTable = routingTable;\n this.refreshInterval = refreshInterval ?? TABLE_REFRESH_INTERVAL;\n this.refreshQueryTimeout = refreshQueryTimeout ?? TABLE_REFRESH_QUERY_TIMEOUT;\n this.commonPrefixLengthRefreshedAt = [];\n this.refreshTable = this.refreshTable.bind(this);\n }\n async afterStart() {\n this.log(`refreshing routing table every ${this.refreshInterval}ms`);\n this.refreshTable(true);\n }\n async stop() {\n if (this.refreshTimeoutId != null) {\n clearTimeout(this.refreshTimeoutId);\n }\n }\n /**\n * To speed lookups, we seed the table with random PeerIds. This means\n * when we are asked to locate a peer on the network, we can find a KadId\n * that is close to the requested peer ID and query that, then network\n * peers will tell us who they know who is close to the fake ID\n */\n refreshTable(force = false) {\n this.log('refreshing routing table');\n const prefixLength = this._maxCommonPrefix();\n const refreshCpls = this._getTrackedCommonPrefixLengthsForRefresh(prefixLength);\n this.log(`max common prefix length ${prefixLength}`);\n this.log(`tracked CPLs [ ${refreshCpls.map(date => date.toISOString()).join(', ')} ]`);\n /**\n * If we see a gap at a common prefix length in the Routing table, we ONLY refresh up until\n * the maximum cpl we have in the Routing Table OR (2 * (Cpl+ 1) with the gap), whichever\n * is smaller.\n *\n * This is to prevent refreshes for Cpls that have no peers in the network but happen to be\n * before a very high max Cpl for which we do have peers in the network.\n *\n * The number of 2 * (Cpl + 1) can be proved and a proof would have been written here if\n * the programmer had paid more attention in the Math classes at university.\n *\n * So, please be patient and a doc explaining it will be published soon.\n *\n * https://github.com/libp2p/go-libp2p-kad-dht/commit/2851c88acb0a3f86bcfe3cfd0f4604a03db801d8#diff-ad45f4ba97ffbc4083c2eb87a4420c1157057b233f048030d67c6b551855ccf6R219\n */\n Promise.all(refreshCpls.map(async (lastRefresh, index) => {\n try {\n await this._refreshCommonPrefixLength(index, lastRefresh, force);\n if (this._numPeersForCpl(prefixLength) === 0) {\n const lastCpl = Math.min(2 * (index + 1), refreshCpls.length - 1);\n for (let n = index + 1; n < lastCpl + 1; n++) {\n try {\n await this._refreshCommonPrefixLength(n, lastRefresh, force);\n }\n catch (err) {\n this.log.error(err);\n }\n }\n }\n }\n catch (err) {\n this.log.error(err);\n }\n })).catch(err => {\n this.log.error(err);\n }).then(() => {\n this.refreshTimeoutId = setTimeout(this.refreshTable, this.refreshInterval);\n if (this.refreshTimeoutId.unref != null) {\n this.refreshTimeoutId.unref();\n }\n }).catch(err => {\n this.log.error(err);\n });\n }\n async _refreshCommonPrefixLength(cpl, lastRefresh, force) {\n if (!force && lastRefresh.getTime() > (Date.now() - this.refreshInterval)) {\n this.log('not running refresh for cpl %s as time since last refresh not above interval', cpl);\n return;\n }\n // gen a key for the query to refresh the cpl\n const peerId = await this._generateRandomPeerId(cpl);\n this.log('starting refreshing cpl %s with key %p (routing table size was %s)', cpl, peerId, this.routingTable.size);\n const signal = AbortSignal.timeout(this.refreshQueryTimeout);\n setMaxListeners(Infinity, signal);\n const peers = await length(this.peerRouting.getClosestPeers(peerId.toBytes(), {\n signal\n }));\n this.log(`found ${peers} peers that were close to imaginary peer %p`, peerId);\n this.log('finished refreshing cpl %s with key %p (routing table size is now %s)', cpl, peerId, this.routingTable.size);\n }\n _getTrackedCommonPrefixLengthsForRefresh(maxCommonPrefix) {\n if (maxCommonPrefix > MAX_COMMON_PREFIX_LENGTH) {\n maxCommonPrefix = MAX_COMMON_PREFIX_LENGTH;\n }\n const dates = [];\n for (let i = 0; i <= maxCommonPrefix; i++) {\n // defaults to the zero value if we haven't refreshed it yet.\n dates[i] = this.commonPrefixLengthRefreshedAt[i] ?? new Date();\n }\n return dates;\n }\n async _generateRandomPeerId(targetCommonPrefixLength) {\n if (this.routingTable.kb == null) {\n throw new Error('Routing table not started');\n }\n const randomData = randomBytes(2);\n const randomUint16 = (randomData[1] << 8) + randomData[0];\n const key = await this._makePeerId(this.routingTable.kb.localPeer.kadId, randomUint16, targetCommonPrefixLength);\n return peerIdFromBytes(key);\n }\n async _makePeerId(localKadId, randomPrefix, targetCommonPrefixLength) {\n if (targetCommonPrefixLength > MAX_COMMON_PREFIX_LENGTH) {\n throw new Error(`Cannot generate peer ID for common prefix length greater than ${MAX_COMMON_PREFIX_LENGTH}`);\n }\n const view = new DataView(localKadId.buffer, localKadId.byteOffset, localKadId.byteLength);\n const localPrefix = view.getUint16(0, false);\n // For host with ID `L`, an ID `K` belongs to a bucket with ID `B` ONLY IF CommonPrefixLen(L,K) is EXACTLY B.\n // Hence, to achieve a targetPrefix `T`, we must toggle the (T+1)th bit in L & then copy (T+1) bits from L\n // to our randomly generated prefix.\n const toggledLocalPrefix = localPrefix ^ (0x8000 >> targetCommonPrefixLength);\n // Combine the toggled local prefix and the random bits at the correct offset\n // such that ONLY the first `targetCommonPrefixLength` bits match the local ID.\n const mask = 65535 << (16 - (targetCommonPrefixLength + 1));\n const targetPrefix = (toggledLocalPrefix & mask) | (randomPrefix & ~mask);\n // Convert to a known peer ID.\n const keyPrefix = GENERATED_PREFIXES[targetPrefix];\n const keyBuffer = new ArrayBuffer(34);\n const keyView = new DataView(keyBuffer, 0, keyBuffer.byteLength);\n keyView.setUint8(0, sha256.code);\n keyView.setUint8(1, 32);\n keyView.setUint32(2, keyPrefix, false);\n return new Uint8Array(keyView.buffer, keyView.byteOffset, keyView.byteLength);\n }\n /**\n * returns the maximum common prefix length between any peer in the table\n * and the current peer\n */\n _maxCommonPrefix() {\n // xor our KadId with every KadId in the k-bucket tree,\n // return the longest id prefix that is the same\n let prefixLength = 0;\n for (const length of this._prefixLengths()) {\n if (length > prefixLength) {\n prefixLength = length;\n }\n }\n return prefixLength;\n }\n /**\n * Returns the number of peers in the table with a given prefix length\n */\n _numPeersForCpl(prefixLength) {\n let count = 0;\n for (const length of this._prefixLengths()) {\n if (length === prefixLength) {\n count++;\n }\n }\n return count;\n }\n /**\n * Yields the common prefix length of every peer in the table\n */\n *_prefixLengths() {\n if (this.routingTable.kb == null) {\n return;\n }\n for (const { kadId } of this.routingTable.kb.toIterable()) {\n const distance = uint8ArrayXor(this.routingTable.kb.localPeer.kadId, kadId);\n let leadingZeros = 0;\n for (const byte of distance) {\n if (byte === 0) {\n leadingZeros++;\n }\n else {\n break;\n }\n }\n yield leadingZeros;\n }\n }\n}\n//# sourceMappingURL=refresh.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import { CodeError } from '@libp2p/interface';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { CID } from 'multiformats/cid';\nexport class AddProviderHandler {\n providers;\n log;\n constructor(components, init) {\n this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:add-provider`);\n this.providers = init.providers;\n }\n async handle(peerId, msg) {\n this.log('start');\n if (msg.key == null || msg.key.length === 0) {\n throw new CodeError('Missing key', 'ERR_MISSING_KEY');\n }\n let cid;\n try {\n // this is actually just the multihash, not the whole CID\n cid = CID.decode(msg.key);\n }\n catch (err) {\n throw new CodeError('Invalid CID', 'ERR_INVALID_CID');\n }\n if (msg.providers == null || msg.providers.length === 0) {\n this.log.error('no providers found in message');\n }\n await Promise.all(msg.providers.map(async (pi) => {\n // Ignore providers not from the originator\n if (!peerId.equals(pi.id)) {\n this.log('invalid provider peer %p from %p', pi.id, peerId);\n return;\n }\n if (pi.multiaddrs.length < 1) {\n this.log('no valid addresses for provider %p. Ignore', peerId);\n return;\n }\n this.log('received provider %p for %s (addrs %s)', peerId, cid, pi.multiaddrs.map((m) => multiaddr(m).toString()));\n await this.providers.addProvider(cid, peerIdFromBytes(pi.id));\n }));\n return undefined;\n }\n}\n//# sourceMappingURL=add-provider.js.map","import { CodeError } from '@libp2p/interface';\nimport { protocols } from '@multiformats/multiaddr';\nimport { equals as uint8ArrayEquals } from 'uint8arrays';\nimport { MessageType } from '../../message/dht.js';\nexport class FindNodeHandler {\n peerRouting;\n peerInfoMapper;\n peerId;\n addressManager;\n log;\n constructor(components, init) {\n const { peerRouting, logPrefix } = init;\n this.log = components.logger.forComponent(`${logPrefix}:rpc:handlers:find-node`);\n this.peerId = components.peerId;\n this.addressManager = components.addressManager;\n this.peerRouting = peerRouting;\n this.peerInfoMapper = init.peerInfoMapper;\n }\n /**\n * Process `FindNode` DHT messages\n */\n async handle(peerId, msg) {\n this.log('incoming request from %p for peers closer to %b', peerId, msg.key);\n if (msg.key == null) {\n throw new CodeError('Invalid FIND_NODE message received - key was missing', 'ERR_INVALID_MESSAGE');\n }\n const closer = await this.peerRouting.getCloserPeersOffline(msg.key, peerId);\n if (uint8ArrayEquals(this.peerId.toBytes(), msg.key)) {\n closer.push({\n id: this.peerId,\n multiaddrs: this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code))\n });\n }\n const response = {\n type: MessageType.FIND_NODE,\n clusterLevel: msg.clusterLevel,\n closer: closer\n .map(this.peerInfoMapper)\n .filter(({ multiaddrs }) => multiaddrs.length)\n .map(peerInfo => ({\n id: peerInfo.id.toBytes(),\n multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)\n })),\n providers: []\n };\n if (response.closer.length === 0) {\n this.log('could not find any peers closer to %b than %p', msg.key, peerId);\n }\n return response;\n }\n}\n//# sourceMappingURL=find-node.js.map","import { CodeError } from '@libp2p/interface';\nimport { CID } from 'multiformats/cid';\nimport { MessageType } from '../../message/dht.js';\nexport class GetProvidersHandler {\n peerRouting;\n providers;\n peerStore;\n peerInfoMapper;\n log;\n constructor(components, init) {\n const { peerRouting, providers, logPrefix } = init;\n this.log = components.logger.forComponent(`${logPrefix}:rpc:handlers:get-providers`);\n this.peerStore = components.peerStore;\n this.peerRouting = peerRouting;\n this.providers = providers;\n this.peerInfoMapper = init.peerInfoMapper;\n }\n async handle(peerId, msg) {\n if (msg.key == null) {\n throw new CodeError('Invalid GET_PROVIDERS message received - key was missing', 'ERR_INVALID_MESSAGE');\n }\n let cid;\n try {\n cid = CID.decode(msg.key);\n }\n catch (err) {\n throw new CodeError('Invalid CID', 'ERR_INVALID_CID');\n }\n this.log('%p asking for providers for %s', peerId, cid);\n const [peers, closer] = await Promise.all([\n this.providers.getProviders(cid),\n this.peerRouting.getCloserPeersOffline(msg.key, peerId)\n ]);\n const providerPeers = await this._getPeers(peers);\n const closerPeers = await this._getPeers(closer.map(({ id }) => id));\n const response = {\n type: MessageType.GET_PROVIDERS,\n key: msg.key,\n clusterLevel: msg.clusterLevel,\n closer: closerPeers\n .map(this.peerInfoMapper)\n .filter(({ multiaddrs }) => multiaddrs.length)\n .map(peerInfo => ({\n id: peerInfo.id.toBytes(),\n multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)\n })),\n providers: providerPeers\n .map(this.peerInfoMapper)\n .filter(({ multiaddrs }) => multiaddrs.length)\n .map(peerInfo => ({\n id: peerInfo.id.toBytes(),\n multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)\n }))\n };\n this.log('got %s providers %s closerPeers', response.providers.length, response.closer.length);\n return response;\n }\n async _getAddresses(peerId) {\n return [];\n }\n async _getPeers(peerIds) {\n const output = [];\n for (const peerId of peerIds) {\n try {\n const peer = await this.peerStore.get(peerId);\n const peerAfterFilter = this.peerInfoMapper({\n id: peerId,\n multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)\n });\n if (peerAfterFilter.multiaddrs.length > 0) {\n output.push(peerAfterFilter);\n }\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n }\n return output;\n }\n}\n//# sourceMappingURL=get-providers.js.map","import { CodeError } from '@libp2p/interface';\nimport { Libp2pRecord } from '@libp2p/record';\nimport { MAX_RECORD_AGE } from '../../constants.js';\nimport { MessageType } from '../../message/dht.js';\nimport { bufferToRecordKey, isPublicKeyKey, fromPublicKeyKey } from '../../utils.js';\nexport class GetValueHandler {\n peerStore;\n datastore;\n peerRouting;\n log;\n constructor(components, init) {\n this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:get-value`);\n this.peerStore = components.peerStore;\n this.datastore = components.datastore;\n this.peerRouting = init.peerRouting;\n }\n async handle(peerId, msg) {\n const key = msg.key;\n this.log('%p asked for key %b', peerId, key);\n if (key == null || key.length === 0) {\n throw new CodeError('Invalid key', 'ERR_INVALID_KEY');\n }\n const response = {\n type: MessageType.GET_VALUE,\n key,\n clusterLevel: msg.clusterLevel,\n closer: [],\n providers: []\n };\n if (isPublicKeyKey(key)) {\n this.log('is public key');\n const idFromKey = fromPublicKeyKey(key);\n let pubKey;\n try {\n const peer = await this.peerStore.get(idFromKey);\n if (peer.id.publicKey == null) {\n throw new CodeError('No public key found in key book', 'ERR_NOT_FOUND');\n }\n pubKey = peer.id.publicKey;\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n if (pubKey != null) {\n this.log('returning found public key');\n response.record = new Libp2pRecord(key, pubKey, new Date()).serialize();\n return response;\n }\n }\n const [record, closer] = await Promise.all([\n this._checkLocalDatastore(key),\n this.peerRouting.getCloserPeersOffline(key, peerId)\n ]);\n if (record != null) {\n this.log('had record for %b in local datastore', key);\n response.record = record.serialize();\n }\n if (closer.length > 0) {\n this.log('had %s closer peers in routing table', closer.length);\n response.closer = closer.map(peerInfo => ({\n id: peerInfo.id.toBytes(),\n multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)\n }));\n }\n return response;\n }\n /**\n * Try to fetch a given record by from the local datastore.\n * Returns the record if it is still valid, meaning\n * - it was either authored by this node, or\n * - it was received less than `MAX_RECORD_AGE` ago.\n */\n async _checkLocalDatastore(key) {\n this.log('checkLocalDatastore looking for %b', key);\n const dsKey = bufferToRecordKey(key);\n // Fetch value from ds\n let rawRecord;\n try {\n rawRecord = await this.datastore.get(dsKey);\n }\n catch (err) {\n if (err.code === 'ERR_NOT_FOUND') {\n return undefined;\n }\n throw err;\n }\n // Create record from the returned bytes\n const record = Libp2pRecord.deserialize(rawRecord);\n if (record == null) {\n throw new CodeError('Invalid record', 'ERR_INVALID_RECORD');\n }\n // Check validity: compare time received with max record age\n if (record.timeReceived == null ||\n Date.now() - record.timeReceived.getTime() > MAX_RECORD_AGE) {\n // If record is bad delete it and return\n await this.datastore.delete(dsKey);\n return undefined;\n }\n // Record is valid\n return record;\n }\n}\n//# sourceMappingURL=get-value.js.map","export class PingHandler {\n log;\n constructor(components, init) {\n this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:ping`);\n }\n async handle(peerId, msg) {\n this.log('ping from %p', peerId);\n return msg;\n }\n}\n//# sourceMappingURL=ping.js.map","import { CodeError } from '@libp2p/interface';\nimport { Libp2pRecord } from '@libp2p/record';\nimport { verifyRecord } from '../../record/validators.js';\nimport { bufferToRecordKey } from '../../utils.js';\nexport class PutValueHandler {\n components;\n validators;\n log;\n constructor(components, init) {\n const { validators } = init;\n this.components = components;\n this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:put-value`);\n this.validators = validators;\n }\n async handle(peerId, msg) {\n const key = msg.key;\n this.log('%p asked us to store value for key %b', peerId, key);\n if (msg.record == null) {\n const errMsg = `Empty record from: ${peerId.toString()}`;\n this.log.error(errMsg);\n throw new CodeError(errMsg, 'ERR_EMPTY_RECORD');\n }\n try {\n const deserializedRecord = Libp2pRecord.deserialize(msg.record);\n await verifyRecord(this.validators, deserializedRecord);\n deserializedRecord.timeReceived = new Date();\n const recordKey = bufferToRecordKey(deserializedRecord.key);\n await this.components.datastore.put(recordKey, deserializedRecord.serialize().subarray());\n this.log('put record for %b into datastore under key %k', key, recordKey);\n }\n catch (err) {\n this.log('did not put record for key %b into datastore %o', key, err);\n }\n return msg;\n }\n}\n//# sourceMappingURL=put-value.js.map","import * as lp from 'it-length-prefixed';\nimport { pipe } from 'it-pipe';\nimport { Message, MessageType } from '../message/dht.js';\nimport { AddProviderHandler } from './handlers/add-provider.js';\nimport { FindNodeHandler } from './handlers/find-node.js';\nimport { GetProvidersHandler } from './handlers/get-providers.js';\nimport { GetValueHandler } from './handlers/get-value.js';\nimport { PingHandler } from './handlers/ping.js';\nimport { PutValueHandler } from './handlers/put-value.js';\nexport class RPC {\n handlers;\n routingTable;\n log;\n constructor(components, init) {\n const { providers, peerRouting, validators, logPrefix, peerInfoMapper } = init;\n this.log = components.logger.forComponent(`${logPrefix}:rpc`);\n this.routingTable = init.routingTable;\n this.handlers = {\n [MessageType.GET_VALUE.toString()]: new GetValueHandler(components, { peerRouting, logPrefix }),\n [MessageType.PUT_VALUE.toString()]: new PutValueHandler(components, { validators, logPrefix }),\n [MessageType.FIND_NODE.toString()]: new FindNodeHandler(components, { peerRouting, logPrefix, peerInfoMapper }),\n [MessageType.ADD_PROVIDER.toString()]: new AddProviderHandler(components, { providers, logPrefix }),\n [MessageType.GET_PROVIDERS.toString()]: new GetProvidersHandler(components, { peerRouting, providers, logPrefix, peerInfoMapper }),\n [MessageType.PING.toString()]: new PingHandler(components, { logPrefix })\n };\n }\n /**\n * Process incoming DHT messages\n */\n async handleMessage(peerId, msg) {\n try {\n await this.routingTable.add(peerId);\n }\n catch (err) {\n this.log.error('Failed to update the kbucket store', err);\n }\n // get handler & execute it\n const handler = this.handlers[msg.type];\n if (handler == null) {\n this.log.error(`no handler found for message type: ${msg.type}`);\n return;\n }\n return handler.handle(peerId, msg);\n }\n /**\n * Handle incoming streams on the dht protocol\n */\n onIncomingStream(data) {\n Promise.resolve().then(async () => {\n const { stream, connection } = data;\n const peerId = connection.remotePeer;\n try {\n await this.routingTable.add(peerId);\n }\n catch (err) {\n this.log.error(err);\n }\n const self = this; // eslint-disable-line @typescript-eslint/no-this-alias\n await pipe(stream, (source) => lp.decode(source), async function* (source) {\n for await (const msg of source) {\n // handle the message\n const desMessage = Message.decode(msg);\n self.log('incoming %s from %p', desMessage.type, peerId);\n const res = await self.handleMessage(peerId, desMessage);\n // Not all handlers will return a response\n if (res != null) {\n yield Message.encode(res);\n }\n }\n }, (source) => lp.encode(source), stream);\n })\n .catch(err => {\n this.log.error(err);\n });\n }\n}\n//# sourceMappingURL=index.js.map","import { CustomEvent, TypedEventEmitter } from '@libp2p/interface';\n/**\n * Receives notifications of new peers joining the network that support the DHT protocol\n */\nexport class TopologyListener extends TypedEventEmitter {\n log;\n components;\n protocol;\n running;\n registrarId;\n constructor(components, init) {\n super();\n const { protocol, logPrefix } = init;\n this.components = components;\n this.log = components.logger.forComponent(`${logPrefix}:topology-listener`);\n this.running = false;\n this.protocol = protocol;\n }\n isStarted() {\n return this.running;\n }\n /**\n * Start the network\n */\n async start() {\n if (this.running) {\n return;\n }\n this.running = true;\n // register protocol with topology\n this.registrarId = await this.components.registrar.register(this.protocol, {\n onConnect: (peerId) => {\n this.log('observed peer %p with protocol %s', peerId, this.protocol);\n this.dispatchEvent(new CustomEvent('peer', {\n detail: peerId\n }));\n }\n });\n }\n /**\n * Stop all network activity\n */\n async stop() {\n this.running = false;\n // unregister protocol and handlers\n if (this.registrarId != null) {\n this.components.registrar.unregister(this.registrarId);\n this.registrarId = undefined;\n }\n }\n}\n//# sourceMappingURL=topology-listener.js.map","import { CodeError, CustomEvent, TypedEventEmitter, contentRoutingSymbol, peerDiscoverySymbol, peerRoutingSymbol, serviceCapabilities, serviceDependencies, start, stop } from '@libp2p/interface';\nimport drain from 'it-drain';\nimport pDefer from 'p-defer';\nimport { PROTOCOL } from './constants.js';\nimport { ContentFetching } from './content-fetching/index.js';\nimport { ContentRouting as KADDHTContentRouting } from './content-routing/index.js';\nimport { Network } from './network.js';\nimport { PeerRouting as KADDHTPeerRouting } from './peer-routing/index.js';\nimport { Providers } from './providers.js';\nimport { QueryManager } from './query/manager.js';\nimport { QuerySelf } from './query-self.js';\nimport { selectors as recordSelectors } from './record/selectors.js';\nimport { validators as recordValidators } from './record/validators.js';\nimport { RoutingTable } from './routing-table/index.js';\nimport { RoutingTableRefresh } from './routing-table/refresh.js';\nimport { RPC } from './rpc/index.js';\nimport { TopologyListener } from './topology-listener.js';\nimport { multiaddrIsPublic, removePrivateAddressesMapper } from './utils.js';\n/**\n * Wrapper class to convert events into returned values\n */\nclass DHTContentRouting {\n dht;\n constructor(dht) {\n this.dht = dht;\n }\n async provide(cid, options = {}) {\n await drain(this.dht.provide(cid, options));\n }\n async *findProviders(cid, options = {}) {\n for await (const event of this.dht.findProviders(cid, options)) {\n if (event.name === 'PROVIDER') {\n yield* event.providers;\n }\n }\n }\n async put(key, value, options) {\n await drain(this.dht.put(key, value, options));\n }\n async get(key, options) {\n for await (const event of this.dht.get(key, options)) {\n if (event.name === 'VALUE') {\n return event.value;\n }\n }\n throw new CodeError('Not found', 'ERR_NOT_FOUND');\n }\n}\n/**\n * Wrapper class to convert events into returned values\n */\nclass DHTPeerRouting {\n dht;\n constructor(dht) {\n this.dht = dht;\n }\n async findPeer(peerId, options = {}) {\n for await (const event of this.dht.findPeer(peerId, options)) {\n if (event.name === 'FINAL_PEER') {\n return event.peer;\n }\n }\n throw new CodeError('Not found', 'ERR_NOT_FOUND');\n }\n async *getClosestPeers(key, options = {}) {\n for await (const event of this.dht.getClosestPeers(key, options)) {\n if (event.name === 'FINAL_PEER') {\n yield event.peer;\n }\n }\n }\n}\nexport const DEFAULT_MAX_INBOUND_STREAMS = 32;\nexport const DEFAULT_MAX_OUTBOUND_STREAMS = 64;\n/**\n * A DHT implementation modelled after Kademlia with S/Kademlia modifications.\n * Original implementation in go: https://github.com/libp2p/go-libp2p-kad-dht.\n */\nexport class KadDHT extends TypedEventEmitter {\n protocol;\n routingTable;\n providers;\n network;\n peerRouting;\n components;\n log;\n running;\n kBucketSize;\n clientMode;\n validators;\n selectors;\n queryManager;\n contentFetching;\n contentRouting;\n routingTableRefresh;\n rpc;\n topologyListener;\n querySelf;\n maxInboundStreams;\n maxOutboundStreams;\n dhtContentRouting;\n dhtPeerRouting;\n peerInfoMapper;\n /**\n * Create a new KadDHT\n */\n constructor(components, init = {}) {\n super();\n const { kBucketSize, clientMode, validators, selectors, querySelfInterval, protocol, logPrefix, pingTimeout, pingConcurrency, maxInboundStreams, maxOutboundStreams, providers: providersInit } = init;\n const loggingPrefix = logPrefix ?? 'libp2p:kad-dht';\n this.running = false;\n this.components = components;\n this.log = components.logger.forComponent(loggingPrefix);\n this.protocol = protocol ?? PROTOCOL;\n this.kBucketSize = kBucketSize ?? 20;\n this.clientMode = clientMode ?? true;\n this.maxInboundStreams = maxInboundStreams ?? DEFAULT_MAX_INBOUND_STREAMS;\n this.maxOutboundStreams = maxOutboundStreams ?? DEFAULT_MAX_OUTBOUND_STREAMS;\n this.peerInfoMapper = init.peerInfoMapper ?? removePrivateAddressesMapper;\n this.routingTable = new RoutingTable(components, {\n kBucketSize,\n pingTimeout,\n pingConcurrency,\n protocol: this.protocol,\n logPrefix: loggingPrefix\n });\n this.providers = new Providers(components, providersInit ?? {});\n this.validators = {\n ...recordValidators,\n ...validators\n };\n this.selectors = {\n ...recordSelectors,\n ...selectors\n };\n this.network = new Network(components, {\n protocol: this.protocol,\n logPrefix: loggingPrefix\n });\n // all queries should wait for the initial query-self query to run so we have\n // some peers and don't force consumers to use arbitrary timeouts\n const initialQuerySelfHasRun = pDefer();\n // if the user doesn't want to wait for query peers, resolve the initial\n // self-query promise immediately\n if (init.allowQueryWithZeroPeers === true) {\n initialQuerySelfHasRun.resolve();\n }\n this.queryManager = new QueryManager(components, {\n // Number of disjoint query paths to use - This is set to `kBucketSize/2` per the S/Kademlia paper\n disjointPaths: Math.ceil(this.kBucketSize / 2),\n logPrefix: loggingPrefix,\n initialQuerySelfHasRun,\n routingTable: this.routingTable\n });\n // DHT components\n this.peerRouting = new KADDHTPeerRouting(components, {\n routingTable: this.routingTable,\n network: this.network,\n validators: this.validators,\n queryManager: this.queryManager,\n logPrefix: loggingPrefix\n });\n this.contentFetching = new ContentFetching(components, {\n validators: this.validators,\n selectors: this.selectors,\n peerRouting: this.peerRouting,\n queryManager: this.queryManager,\n network: this.network,\n logPrefix: loggingPrefix\n });\n this.contentRouting = new KADDHTContentRouting(components, {\n network: this.network,\n peerRouting: this.peerRouting,\n queryManager: this.queryManager,\n routingTable: this.routingTable,\n providers: this.providers,\n logPrefix: loggingPrefix\n });\n this.routingTableRefresh = new RoutingTableRefresh(components, {\n peerRouting: this.peerRouting,\n routingTable: this.routingTable,\n logPrefix: loggingPrefix\n });\n this.rpc = new RPC(components, {\n routingTable: this.routingTable,\n providers: this.providers,\n peerRouting: this.peerRouting,\n validators: this.validators,\n logPrefix: loggingPrefix,\n peerInfoMapper: this.peerInfoMapper\n });\n this.topologyListener = new TopologyListener(components, {\n protocol: this.protocol,\n logPrefix: loggingPrefix\n });\n this.querySelf = new QuerySelf(components, {\n peerRouting: this.peerRouting,\n interval: querySelfInterval,\n initialInterval: init.initialQuerySelfInterval,\n logPrefix: loggingPrefix,\n initialQuerySelfHasRun,\n routingTable: this.routingTable\n });\n // handle peers being discovered during processing of DHT messages\n this.network.addEventListener('peer', (evt) => {\n const peerData = evt.detail;\n this.onPeerConnect(peerData).catch(err => {\n this.log.error('could not add %p to routing table', peerData.id, err);\n });\n this.dispatchEvent(new CustomEvent('peer', {\n detail: peerData\n }));\n });\n // handle peers being discovered via other peer discovery mechanisms\n this.topologyListener.addEventListener('peer', (evt) => {\n const peerId = evt.detail;\n Promise.resolve().then(async () => {\n const peer = await this.components.peerStore.get(peerId);\n const peerData = {\n id: peerId,\n multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr),\n protocols: peer.protocols\n };\n await this.onPeerConnect(peerData);\n }).catch(err => {\n this.log.error('could not add %p to routing table', peerId, err);\n });\n });\n this.dhtPeerRouting = new DHTPeerRouting(this);\n this.dhtContentRouting = new DHTContentRouting(this);\n // if client mode has not been explicitly specified, auto-switch to server\n // mode when the node's peer data is updated with publicly dialable\n // addresses\n if (init.clientMode == null) {\n components.events.addEventListener('self:peer:update', (evt) => {\n this.log('received update of self-peer info');\n void Promise.resolve().then(async () => {\n const hasPublicAddress = evt.detail.peer.addresses\n .some(({ multiaddr }) => multiaddrIsPublic(multiaddr));\n const mode = this.getMode();\n if (hasPublicAddress && mode === 'client') {\n await this.setMode('server');\n }\n else if (mode === 'server' && !hasPublicAddress) {\n await this.setMode('client');\n }\n })\n .catch(err => {\n this.log.error('error setting dht server mode', err);\n });\n });\n }\n }\n [Symbol.toStringTag] = '@libp2p/kad-dht';\n [serviceCapabilities] = [\n '@libp2p/content-routing',\n '@libp2p/peer-routing',\n '@libp2p/peer-discovery'\n ];\n [serviceDependencies] = [\n '@libp2p/identify'\n ];\n get [contentRoutingSymbol]() {\n return this.dhtContentRouting;\n }\n get [peerRoutingSymbol]() {\n return this.dhtPeerRouting;\n }\n get [peerDiscoverySymbol]() {\n return this;\n }\n async onPeerConnect(peerData) {\n this.log('peer %p connected', peerData.id);\n peerData = this.peerInfoMapper(peerData);\n if (peerData.multiaddrs.length === 0) {\n this.log('ignoring %p as there were no valid addresses in %s after filtering', peerData.id, peerData.multiaddrs.map(addr => addr.toString()));\n return;\n }\n try {\n await this.routingTable.add(peerData.id);\n }\n catch (err) {\n this.log.error('could not add %p to routing table', peerData.id, err);\n }\n }\n /**\n * Is this DHT running.\n */\n isStarted() {\n return this.running;\n }\n /**\n * If 'server' this node will respond to DHT queries, if 'client' this node will not\n */\n getMode() {\n return this.clientMode ? 'client' : 'server';\n }\n /**\n * If 'server' this node will respond to DHT queries, if 'client' this node will not\n */\n async setMode(mode) {\n await this.components.registrar.unhandle(this.protocol);\n if (mode === 'client') {\n this.log('enabling client mode');\n this.clientMode = true;\n }\n else {\n this.log('enabling server mode');\n this.clientMode = false;\n await this.components.registrar.handle(this.protocol, this.rpc.onIncomingStream.bind(this.rpc), {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams\n });\n }\n }\n /**\n * Start listening to incoming connections.\n */\n async start() {\n this.running = true;\n // Only respond to queries when not in client mode\n await this.setMode(this.clientMode ? 'client' : 'server');\n await start(this.querySelf, this.providers, this.queryManager, this.network, this.routingTable, this.topologyListener, this.routingTableRefresh);\n }\n /**\n * Stop accepting incoming connections and sending outgoing\n * messages.\n */\n async stop() {\n this.running = false;\n await stop(this.querySelf, this.providers, this.queryManager, this.network, this.routingTable, this.routingTableRefresh, this.topologyListener);\n }\n /**\n * Store the given key/value pair in the DHT\n */\n async *put(key, value, options = {}) {\n yield* this.contentFetching.put(key, value, options);\n }\n /**\n * Get the value that corresponds to the passed key\n */\n async *get(key, options = {}) {\n yield* this.contentFetching.get(key, options);\n }\n // ----------- Content Routing\n /**\n * Announce to the network that we can provide given key's value\n */\n async *provide(key, options = {}) {\n yield* this.contentRouting.provide(key, this.components.addressManager.getAddresses(), options);\n }\n /**\n * Search the dht for providers of the given CID\n */\n async *findProviders(key, options = {}) {\n yield* this.contentRouting.findProviders(key, options);\n }\n // ----------- Peer Routing -----------\n /**\n * Search for a peer with the given ID\n */\n async *findPeer(id, options = {}) {\n yield* this.peerRouting.findPeer(id, options);\n }\n /**\n * Kademlia 'node lookup' operation\n */\n async *getClosestPeers(key, options = {}) {\n yield* this.peerRouting.getClosestPeers(key, options);\n }\n async refreshRoutingTable() {\n this.routingTableRefresh.refreshTable(true);\n }\n}\n//# sourceMappingURL=kad-dht.js.map","/**\n * @packageDocumentation\n *\n * This module implements the [libp2p Kademlia spec](https://github.com/libp2p/specs/blob/master/kad-dht/README.md) in TypeScript.\n *\n * The Kademlia DHT allow for several operations such as finding peers, searching for providers of DHT records, etc.\n *\n * @example Using with libp2p\n *\n * ```TypeScript\n * import { kadDHT } from '@libp2p/kad-dht'\n * import { createLibp2p } from 'libp2p'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const node = await createLibp2p({\n * services: {\n * dht: kadDHT({\n * // DHT options\n * })\n * }\n * })\n *\n * const peerId = peerIdFromString('QmFoo')\n * const peerInfo = await node.peerRouting.findPeer(peerId)\n *\n * console.info(peerInfo) // peer id, multiaddrs\n * ```\n *\n * @example Connecting to the IPFS Amino DHT\n *\n * The [Amino DHT](https://blog.ipfs.tech/2023-09-amino-refactoring/) is a public-good DHT used by IPFS to fetch content, find peers, etc.\n *\n * If you are trying to access content on the public internet, this is the implementation you want.\n *\n * ```TypeScript\n * import { kadDHT, removePrivateAddressesMapper } from '@libp2p/kad-dht'\n * import { createLibp2p } from 'libp2p'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const node = await createLibp2p({\n * services: {\n * aminoDHT: kadDHT({\n * protocol: '/ipfs/kad/1.0.0',\n * peerInfoMapper: removePrivateAddressesMapper\n * })\n * }\n * })\n *\n * const peerId = peerIdFromString('QmFoo')\n * const peerInfo = await node.peerRouting.findPeer(peerId)\n *\n * console.info(peerInfo) // peer id, multiaddrs\n * ```\n *\n * @example Connecting to a LAN-only DHT\n *\n * This DHT only works with privately dialable peers.\n *\n * This is for use when peers are on the local area network.\n *\n * ```TypeScript\n * import { kadDHT, removePublicAddressesMapper } from '@libp2p/kad-dht'\n * import { createLibp2p } from 'libp2p'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const node = await createLibp2p({\n * services: {\n * lanDHT: kadDHT({\n * protocol: '/ipfs/lan/kad/1.0.0',\n * peerInfoMapper: removePublicAddressesMapper,\n * clientMode: false\n * })\n * }\n * })\n *\n * const peerId = peerIdFromString('QmFoo')\n * const peerInfo = await node.peerRouting.findPeer(peerId)\n *\n * console.info(peerInfo) // peer id, multiaddrs\n * ```\n */\nimport { KadDHT as KadDHTClass } from './kad-dht.js';\nimport { MessageType } from './message/dht.js';\nimport { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper } from './utils.js';\nexport { Libp2pRecord as Record } from '@libp2p/record';\nexport { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper };\n/**\n * The types of events emitted during DHT queries\n */\nexport var EventTypes;\n(function (EventTypes) {\n EventTypes[EventTypes[\"SEND_QUERY\"] = 0] = \"SEND_QUERY\";\n EventTypes[EventTypes[\"PEER_RESPONSE\"] = 1] = \"PEER_RESPONSE\";\n EventTypes[EventTypes[\"FINAL_PEER\"] = 2] = \"FINAL_PEER\";\n EventTypes[EventTypes[\"QUERY_ERROR\"] = 3] = \"QUERY_ERROR\";\n EventTypes[EventTypes[\"PROVIDER\"] = 4] = \"PROVIDER\";\n EventTypes[EventTypes[\"VALUE\"] = 5] = \"VALUE\";\n EventTypes[EventTypes[\"ADD_PEER\"] = 6] = \"ADD_PEER\";\n EventTypes[EventTypes[\"DIAL_PEER\"] = 7] = \"DIAL_PEER\";\n})(EventTypes || (EventTypes = {}));\n/**\n * The types of messages sent to peers during DHT queries\n */\nexport { MessageType };\n/**\n * Creates a custom DHT implementation, please ensure you pass a `protocol`\n * string as an option.\n */\nexport function kadDHT(init = {}) {\n return (components) => new KadDHTClass(components, init);\n}\n//# sourceMappingURL=index.js.map","'use strict';\n\nfunction isHighSurrogate(codePoint) {\n return codePoint >= 0xd800 && codePoint <= 0xdbff;\n}\n\nfunction isLowSurrogate(codePoint) {\n return codePoint >= 0xdc00 && codePoint <= 0xdfff;\n}\n\n// Truncate string by size in bytes\nmodule.exports = function truncate(getLength, string, byteLength) {\n if (typeof string !== \"string\") {\n throw new Error(\"Input must be string\");\n }\n\n var charLength = string.length;\n var curByteLength = 0;\n var codePoint;\n var segment;\n\n for (var i = 0; i < charLength; i += 1) {\n codePoint = string.charCodeAt(i);\n segment = string[i];\n\n if (isHighSurrogate(codePoint) && isLowSurrogate(string.charCodeAt(i + 1))) {\n i += 1;\n segment += string[i];\n }\n\n curByteLength += getLength(segment);\n\n if (curByteLength === byteLength) {\n return string.slice(0, i + 1);\n }\n else if (curByteLength > byteLength) {\n return string.slice(0, i - segment.length + 1);\n }\n }\n\n return string;\n};\n\n","'use strict';\n\nfunction isHighSurrogate(codePoint) {\n return codePoint >= 0xd800 && codePoint <= 0xdbff;\n}\n\nfunction isLowSurrogate(codePoint) {\n return codePoint >= 0xdc00 && codePoint <= 0xdfff;\n}\n\n// Truncate string by size in bytes\nmodule.exports = function getByteLength(string) {\n if (typeof string !== \"string\") {\n throw new Error(\"Input must be string\");\n }\n\n var charLength = string.length;\n var byteLength = 0;\n var codePoint = null;\n var prevCodePoint = null;\n for (var i = 0; i < charLength; i++) {\n codePoint = string.charCodeAt(i);\n // handle 4-byte non-BMP chars\n // low surrogate\n if (isLowSurrogate(codePoint)) {\n // when parsing previous hi-surrogate, 3 is added to byteLength\n if (prevCodePoint != null && isHighSurrogate(prevCodePoint)) {\n byteLength += 1;\n }\n else {\n byteLength += 3;\n }\n }\n else if (codePoint <= 0x7f ) {\n byteLength += 1;\n }\n else if (codePoint >= 0x80 && codePoint <= 0x7ff) {\n byteLength += 2;\n }\n else if (codePoint >= 0x800 && codePoint <= 0xffff) {\n byteLength += 3;\n }\n prevCodePoint = codePoint;\n }\n\n return byteLength;\n};\n","'use strict';\n\nvar truncate = require(\"./lib/truncate\");\nvar getLength = require(\"utf8-byte-length/browser\");\nmodule.exports = truncate.bind(null, getLength);\n","/*jshint node:true*/\n'use strict';\n\n/**\n * Replaces characters in strings that are illegal/unsafe for filenames.\n * Unsafe characters are either removed or replaced by a substitute set\n * in the optional `options` object.\n *\n * Illegal Characters on Various Operating Systems\n * / ? < > \\ : * | \"\n * https://kb.acronis.com/content/39790\n *\n * Unicode Control codes\n * C0 0x00-0x1f & C1 (0x80-0x9f)\n * http://en.wikipedia.org/wiki/C0_and_C1_control_codes\n *\n * Reserved filenames on Unix-based systems (\".\", \"..\")\n * Reserved filenames in Windows (\"CON\", \"PRN\", \"AUX\", \"NUL\", \"COM1\",\n * \"COM2\", \"COM3\", \"COM4\", \"COM5\", \"COM6\", \"COM7\", \"COM8\", \"COM9\",\n * \"LPT1\", \"LPT2\", \"LPT3\", \"LPT4\", \"LPT5\", \"LPT6\", \"LPT7\", \"LPT8\", and\n * \"LPT9\") case-insesitively and with or without filename extensions.\n *\n * Capped at 255 characters in length.\n * http://unix.stackexchange.com/questions/32795/what-is-the-maximum-allowed-filename-and-folder-size-with-ecryptfs\n *\n * @param {String} input Original filename\n * @param {Object} options {replacement: String | Function }\n * @return {String} Sanitized filename\n */\n\nvar truncate = require(\"truncate-utf8-bytes\");\n\nvar illegalRe = /[\\/\\?<>\\\\:\\*\\|\"]/g;\nvar controlRe = /[\\x00-\\x1f\\x80-\\x9f]/g;\nvar reservedRe = /^\\.+$/;\nvar windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\\..*)?$/i;\nvar windowsTrailingRe = /[\\. ]+$/;\n\nfunction sanitize(input, replacement) {\n if (typeof input !== 'string') {\n throw new Error('Input must be string');\n }\n var sanitized = input\n .replace(illegalRe, replacement)\n .replace(controlRe, replacement)\n .replace(reservedRe, replacement)\n .replace(windowsReservedRe, replacement)\n .replace(windowsTrailingRe, replacement);\n return truncate(sanitized, 255);\n}\n\nmodule.exports = function (input, options) {\n var replacement = (options && options.replacement) || '';\n var output = sanitize(input, replacement);\n if (replacement === '') {\n return output;\n }\n return sanitize(output, '');\n};\n","export var codes;\n(function (codes) {\n codes[\"ERR_INVALID_PARAMETERS\"] = \"ERR_INVALID_PARAMETERS\";\n codes[\"ERR_INVALID_KEY_NAME\"] = \"ERR_INVALID_KEY_NAME\";\n codes[\"ERR_INVALID_KEY_TYPE\"] = \"ERR_INVALID_KEY_TYPE\";\n codes[\"ERR_KEY_ALREADY_EXISTS\"] = \"ERR_KEY_ALREADY_EXISTS\";\n codes[\"ERR_INVALID_KEY_SIZE\"] = \"ERR_INVALID_KEY_SIZE\";\n codes[\"ERR_KEY_NOT_FOUND\"] = \"ERR_KEY_NOT_FOUND\";\n codes[\"ERR_OLD_KEY_NAME_INVALID\"] = \"ERR_OLD_KEY_NAME_INVALID\";\n codes[\"ERR_NEW_KEY_NAME_INVALID\"] = \"ERR_NEW_KEY_NAME_INVALID\";\n codes[\"ERR_PASSWORD_REQUIRED\"] = \"ERR_PASSWORD_REQUIRED\";\n codes[\"ERR_PEM_REQUIRED\"] = \"ERR_PEM_REQUIRED\";\n codes[\"ERR_CANNOT_READ_KEY\"] = \"ERR_CANNOT_READ_KEY\";\n codes[\"ERR_MISSING_PRIVATE_KEY\"] = \"ERR_MISSING_PRIVATE_KEY\";\n codes[\"ERR_INVALID_OLD_PASS_TYPE\"] = \"ERR_INVALID_OLD_PASS_TYPE\";\n codes[\"ERR_INVALID_NEW_PASS_TYPE\"] = \"ERR_INVALID_NEW_PASS_TYPE\";\n codes[\"ERR_INVALID_PASS_LENGTH\"] = \"ERR_INVALID_PASS_LENGTH\";\n})(codes || (codes = {}));\n//# sourceMappingURL=errors.js.map","/* eslint max-nested-callbacks: [\"error\", 5] */\nimport { pbkdf2, randomBytes } from '@libp2p/crypto';\nimport { generateKeyPair, importKey, unmarshalPrivateKey } from '@libp2p/crypto/keys';\nimport { CodeError, serviceCapabilities } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { Key } from 'interface-datastore/key';\nimport mergeOptions from 'merge-options';\nimport sanitize from 'sanitize-filename';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { codes } from './errors.js';\nconst keyPrefix = '/pkcs8/';\nconst infoPrefix = '/info/';\nconst privates = new WeakMap();\n// NIST SP 800-132\nconst NIST = {\n minKeyLength: 112 / 8,\n minSaltLength: 128 / 8,\n minIterationCount: 1000\n};\nconst defaultOptions = {\n // See https://cryptosense.com/parametesr-choice-for-pbkdf2/\n dek: {\n keyLength: 512 / 8,\n iterationCount: 10000,\n salt: 'you should override this value with a crypto secure random number',\n hash: 'sha2-512'\n }\n};\nfunction validateKeyName(name) {\n if (name == null) {\n return false;\n }\n if (typeof name !== 'string') {\n return false;\n }\n return name === sanitize(name.trim()) && name.length > 0;\n}\n/**\n * Throws an error after a delay\n *\n * This assumes than an error indicates that the keychain is under attack. Delay returning an\n * error to make brute force attacks harder.\n */\nasync function randomDelay() {\n const min = 200;\n const max = 1000;\n const delay = Math.random() * (max - min) + min;\n await new Promise(resolve => setTimeout(resolve, delay));\n}\n/**\n * Converts a key name into a datastore name\n */\nfunction DsName(name) {\n return new Key(keyPrefix + name);\n}\n/**\n * Converts a key name into a datastore info name\n */\nfunction DsInfoName(name) {\n return new Key(infoPrefix + name);\n}\n/**\n * Manages the lifecycle of a key. Keys are encrypted at rest using PKCS #8.\n *\n * A key in the store has two entries\n * - '/info/*key-name*', contains the KeyInfo for the key\n * - '/pkcs8/*key-name*', contains the PKCS #8 for the key\n *\n */\nexport class DefaultKeychain {\n components;\n init;\n log;\n /**\n * Creates a new instance of a key chain\n */\n constructor(components, init) {\n this.components = components;\n this.log = components.logger.forComponent('libp2p:keychain');\n this.init = mergeOptions(defaultOptions, init);\n // Enforce NIST SP 800-132\n if (this.init.pass != null && this.init.pass?.length < 20) {\n throw new Error('pass must be least 20 characters');\n }\n if (this.init.dek?.keyLength != null && this.init.dek.keyLength < NIST.minKeyLength) {\n throw new Error(`dek.keyLength must be least ${NIST.minKeyLength} bytes`);\n }\n if (this.init.dek?.salt?.length != null && this.init.dek.salt.length < NIST.minSaltLength) {\n throw new Error(`dek.saltLength must be least ${NIST.minSaltLength} bytes`);\n }\n if (this.init.dek?.iterationCount != null && this.init.dek.iterationCount < NIST.minIterationCount) {\n throw new Error(`dek.iterationCount must be least ${NIST.minIterationCount}`);\n }\n const dek = this.init.pass != null && this.init.dek?.salt != null\n ? pbkdf2(this.init.pass, this.init.dek?.salt, this.init.dek?.iterationCount, this.init.dek?.keyLength, this.init.dek?.hash)\n : '';\n privates.set(this, { dek });\n }\n [Symbol.toStringTag] = '@libp2p/keychain';\n [serviceCapabilities] = [\n '@libp2p/keychain'\n ];\n /**\n * Generates the options for a keychain. A random salt is produced.\n *\n * @returns {object}\n */\n static generateOptions() {\n const options = Object.assign({}, defaultOptions);\n const saltLength = Math.ceil(NIST.minSaltLength / 3) * 3; // no base64 padding\n options.dek.salt = uint8ArrayToString(randomBytes(saltLength), 'base64');\n return options;\n }\n /**\n * Gets an object that can encrypt/decrypt protected data.\n * The default options for a keychain.\n *\n * @returns {object}\n */\n static get options() {\n return defaultOptions;\n }\n /**\n * Create a new key.\n *\n * @param {string} name - The local key name; cannot already exist.\n * @param {string} type - One of the key types; 'rsa'.\n * @param {number} [size = 2048] - The key size in bits. Used for rsa keys only\n */\n async createKey(name, type, size = 2048) {\n if (!validateKeyName(name) || name === 'self') {\n await randomDelay();\n throw new CodeError('Invalid key name', codes.ERR_INVALID_KEY_NAME);\n }\n if (typeof type !== 'string') {\n await randomDelay();\n throw new CodeError('Invalid key type', codes.ERR_INVALID_KEY_TYPE);\n }\n const dsname = DsName(name);\n const exists = await this.components.datastore.has(dsname);\n if (exists) {\n await randomDelay();\n throw new CodeError('Key name already exists', codes.ERR_KEY_ALREADY_EXISTS);\n }\n switch (type.toLowerCase()) {\n case 'rsa':\n if (!Number.isSafeInteger(size) || size < 2048) {\n await randomDelay();\n throw new CodeError('Invalid RSA key size', codes.ERR_INVALID_KEY_SIZE);\n }\n break;\n default:\n break;\n }\n let keyInfo;\n try {\n const keypair = await generateKeyPair(type, size);\n const kid = await keypair.id();\n const cached = privates.get(this);\n if (cached == null) {\n throw new CodeError('dek missing', codes.ERR_INVALID_PARAMETERS);\n }\n const dek = cached.dek;\n const pem = await keypair.export(dek);\n keyInfo = {\n name,\n id: kid\n };\n const batch = this.components.datastore.batch();\n batch.put(dsname, uint8ArrayFromString(pem));\n batch.put(DsInfoName(name), uint8ArrayFromString(JSON.stringify(keyInfo)));\n await batch.commit();\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n return keyInfo;\n }\n /**\n * List all the keys.\n *\n * @returns {Promise}\n */\n async listKeys() {\n const query = {\n prefix: infoPrefix\n };\n const info = [];\n for await (const value of this.components.datastore.query(query)) {\n info.push(JSON.parse(uint8ArrayToString(value.value)));\n }\n return info;\n }\n /**\n * Find a key by it's id\n */\n async findKeyById(id) {\n try {\n const keys = await this.listKeys();\n const key = keys.find((k) => k.id === id);\n if (key == null) {\n throw new CodeError(`Key with id '${id}' does not exist.`, codes.ERR_KEY_NOT_FOUND);\n }\n return key;\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n }\n /**\n * Find a key by it's name.\n *\n * @param {string} name - The local key name.\n * @returns {Promise}\n */\n async findKeyByName(name) {\n if (!validateKeyName(name)) {\n await randomDelay();\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n const dsname = DsInfoName(name);\n try {\n const res = await this.components.datastore.get(dsname);\n return JSON.parse(uint8ArrayToString(res));\n }\n catch (err) {\n await randomDelay();\n this.log.error(err);\n throw new CodeError(`Key '${name}' does not exist.`, codes.ERR_KEY_NOT_FOUND);\n }\n }\n /**\n * Remove an existing key.\n *\n * @param {string} name - The local key name; must already exist.\n * @returns {Promise}\n */\n async removeKey(name) {\n if (!validateKeyName(name) || name === 'self') {\n await randomDelay();\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n const dsname = DsName(name);\n const keyInfo = await this.findKeyByName(name);\n const batch = this.components.datastore.batch();\n batch.delete(dsname);\n batch.delete(DsInfoName(name));\n await batch.commit();\n return keyInfo;\n }\n /**\n * Rename a key\n *\n * @param {string} oldName - The old local key name; must already exist.\n * @param {string} newName - The new local key name; must not already exist.\n * @returns {Promise}\n */\n async renameKey(oldName, newName) {\n if (!validateKeyName(oldName) || oldName === 'self') {\n await randomDelay();\n throw new CodeError(`Invalid old key name '${oldName}'`, codes.ERR_OLD_KEY_NAME_INVALID);\n }\n if (!validateKeyName(newName) || newName === 'self') {\n await randomDelay();\n throw new CodeError(`Invalid new key name '${newName}'`, codes.ERR_NEW_KEY_NAME_INVALID);\n }\n const oldDsname = DsName(oldName);\n const newDsname = DsName(newName);\n const oldInfoName = DsInfoName(oldName);\n const newInfoName = DsInfoName(newName);\n const exists = await this.components.datastore.has(newDsname);\n if (exists) {\n await randomDelay();\n throw new CodeError(`Key '${newName}' already exists`, codes.ERR_KEY_ALREADY_EXISTS);\n }\n try {\n const pem = await this.components.datastore.get(oldDsname);\n const res = await this.components.datastore.get(oldInfoName);\n const keyInfo = JSON.parse(uint8ArrayToString(res));\n keyInfo.name = newName;\n const batch = this.components.datastore.batch();\n batch.put(newDsname, pem);\n batch.put(newInfoName, uint8ArrayFromString(JSON.stringify(keyInfo)));\n batch.delete(oldDsname);\n batch.delete(oldInfoName);\n await batch.commit();\n return keyInfo;\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n }\n /**\n * Export an existing key as a PEM encrypted PKCS #8 string\n */\n async exportKey(name, password) {\n if (!validateKeyName(name)) {\n await randomDelay();\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n if (password == null) {\n await randomDelay();\n throw new CodeError('Password is required', codes.ERR_PASSWORD_REQUIRED);\n }\n const dsname = DsName(name);\n try {\n const res = await this.components.datastore.get(dsname);\n const pem = uint8ArrayToString(res);\n const cached = privates.get(this);\n if (cached == null) {\n throw new CodeError('dek missing', codes.ERR_INVALID_PARAMETERS);\n }\n const dek = cached.dek;\n const privateKey = await importKey(pem, dek);\n const keyString = await privateKey.export(password);\n return keyString;\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n }\n /**\n * Export an existing key as a PeerId\n */\n async exportPeerId(name) {\n const password = 'temporary-password';\n const pem = await this.exportKey(name, password);\n const privateKey = await importKey(pem, password);\n return peerIdFromKeys(privateKey.public.bytes, privateKey.bytes);\n }\n /**\n * Import a new key from a PEM encoded PKCS #8 string\n *\n * @param {string} name - The local key name; must not already exist.\n * @param {string} pem - The PEM encoded PKCS #8 string\n * @param {string} password - The password.\n * @returns {Promise}\n */\n async importKey(name, pem, password) {\n if (!validateKeyName(name) || name === 'self') {\n await randomDelay();\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n if (pem == null) {\n await randomDelay();\n throw new CodeError('PEM encoded key is required', codes.ERR_PEM_REQUIRED);\n }\n const dsname = DsName(name);\n const exists = await this.components.datastore.has(dsname);\n if (exists) {\n await randomDelay();\n throw new CodeError(`Key '${name}' already exists`, codes.ERR_KEY_ALREADY_EXISTS);\n }\n let privateKey;\n try {\n privateKey = await importKey(pem, password);\n }\n catch (err) {\n await randomDelay();\n throw new CodeError('Cannot read the key, most likely the password is wrong', codes.ERR_CANNOT_READ_KEY);\n }\n let kid;\n try {\n kid = await privateKey.id();\n const cached = privates.get(this);\n if (cached == null) {\n throw new CodeError('dek missing', codes.ERR_INVALID_PARAMETERS);\n }\n const dek = cached.dek;\n pem = await privateKey.export(dek);\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n const keyInfo = {\n name,\n id: kid\n };\n const batch = this.components.datastore.batch();\n batch.put(dsname, uint8ArrayFromString(pem));\n batch.put(DsInfoName(name), uint8ArrayFromString(JSON.stringify(keyInfo)));\n await batch.commit();\n return keyInfo;\n }\n /**\n * Import a peer key\n */\n async importPeer(name, peer) {\n try {\n if (!validateKeyName(name)) {\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n if (peer == null) {\n throw new CodeError('PeerId is required', codes.ERR_MISSING_PRIVATE_KEY);\n }\n if (peer.privateKey == null) {\n throw new CodeError('PeerId.privKey is required', codes.ERR_MISSING_PRIVATE_KEY);\n }\n const privateKey = await unmarshalPrivateKey(peer.privateKey);\n const dsname = DsName(name);\n const exists = await this.components.datastore.has(dsname);\n if (exists) {\n await randomDelay();\n throw new CodeError(`Key '${name}' already exists`, codes.ERR_KEY_ALREADY_EXISTS);\n }\n const cached = privates.get(this);\n if (cached == null) {\n throw new CodeError('dek missing', codes.ERR_INVALID_PARAMETERS);\n }\n const dek = cached.dek;\n const pem = await privateKey.export(dek);\n const keyInfo = {\n name,\n id: peer.toString()\n };\n const batch = this.components.datastore.batch();\n batch.put(dsname, uint8ArrayFromString(pem));\n batch.put(DsInfoName(name), uint8ArrayFromString(JSON.stringify(keyInfo)));\n await batch.commit();\n return keyInfo;\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n }\n /**\n * Gets the private key as PEM encoded PKCS #8 string\n */\n async getPrivateKey(name) {\n if (!validateKeyName(name)) {\n await randomDelay();\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n try {\n const dsname = DsName(name);\n const res = await this.components.datastore.get(dsname);\n return uint8ArrayToString(res);\n }\n catch (err) {\n await randomDelay();\n this.log.error(err);\n throw new CodeError(`Key '${name}' does not exist.`, codes.ERR_KEY_NOT_FOUND);\n }\n }\n /**\n * Rotate keychain password and re-encrypt all associated keys\n */\n async rotateKeychainPass(oldPass, newPass) {\n if (typeof oldPass !== 'string') {\n await randomDelay();\n throw new CodeError(`Invalid old pass type '${typeof oldPass}'`, codes.ERR_INVALID_OLD_PASS_TYPE);\n }\n if (typeof newPass !== 'string') {\n await randomDelay();\n throw new CodeError(`Invalid new pass type '${typeof newPass}'`, codes.ERR_INVALID_NEW_PASS_TYPE);\n }\n if (newPass.length < 20) {\n await randomDelay();\n throw new CodeError(`Invalid pass length ${newPass.length}`, codes.ERR_INVALID_PASS_LENGTH);\n }\n this.log('recreating keychain');\n const cached = privates.get(this);\n if (cached == null) {\n throw new CodeError('dek missing', codes.ERR_INVALID_PARAMETERS);\n }\n const oldDek = cached.dek;\n this.init.pass = newPass;\n const newDek = newPass != null && this.init.dek?.salt != null\n ? pbkdf2(newPass, this.init.dek.salt, this.init.dek?.iterationCount, this.init.dek?.keyLength, this.init.dek?.hash)\n : '';\n privates.set(this, { dek: newDek });\n const keys = await this.listKeys();\n for (const key of keys) {\n const res = await this.components.datastore.get(DsName(key.name));\n const pem = uint8ArrayToString(res);\n const privateKey = await importKey(pem, oldDek);\n const password = newDek.toString();\n const keyAsPEM = await privateKey.export(password);\n // Update stored key\n const batch = this.components.datastore.batch();\n const keyInfo = {\n name: key.name,\n id: key.id\n };\n batch.put(DsName(key.name), uint8ArrayFromString(keyAsPEM));\n batch.put(DsInfoName(key.name), uint8ArrayFromString(JSON.stringify(keyInfo)));\n await batch.commit();\n }\n this.log('keychain reconstructed');\n }\n}\n//# sourceMappingURL=keychain.js.map","/**\n * @packageDocumentation\n *\n * - Manages the lifecycle of a key\n * - Keys are encrypted at rest\n * - Enforces the use of safe key names\n * - Uses encrypted PKCS 8 for key storage\n * - Uses PBKDF2 for a \"stetched\" key encryption key\n * - Enforces NIST SP 800-131A and NIST SP 800-132\n * - Delays reporting errors to slow down brute force attacks\n *\n * ## KeyInfo\n *\n * The key management and naming service API all return a `KeyInfo` object. The `id` is a universally unique identifier for the key. The `name` is local to the key chain.\n *\n * ```JSON\n * {\n * \"name\": \"rsa-key\",\n * \"id\": \"QmYWYSUZ4PV6MRFYpdtEDJBiGs4UrmE6g8wmAWSePekXVW\"\n * }\n * ```\n *\n * The **key id** is the SHA-256 [multihash](https://github.com/multiformats/multihash) of its public key.\n *\n * The *public key* is a [protobuf encoding](https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/src/keys/keys.proto.js) containing a type and the [DER encoding](https://en.wikipedia.org/wiki/X.690) of the PKCS [SubjectPublicKeyInfo](https://www.ietf.org/rfc/rfc3279.txt).\n *\n * ## Private key storage\n *\n * A private key is stored as an encrypted PKCS 8 structure in the PEM format. It is protected by a key generated from the key chain's *passPhrase* using **PBKDF2**.\n *\n * The default options for generating the derived encryption key are in the `dek` object. This, along with the passPhrase, is the input to a `PBKDF2` function.\n *\n * ```TypeScript\n * const defaultOptions = {\n * // See https://cryptosense.com/parameter-choice-for-pbkdf2/\n * dek: {\n * keyLength: 512 / 8,\n * iterationCount: 1000,\n * salt: 'at least 16 characters long',\n * hash: 'sha2-512'\n * }\n * }\n * ```\n *\n * ![key storage](https://github.com/libp2p/js-libp2p/blob/main/doc/private-key.png?raw=true)\n *\n * ## Physical storage\n *\n * The actual physical storage of an encrypted key is left to implementations of [interface-datastore](https://github.com/ipfs/interface-datastore/).\n *\n * A key benefit is that now the key chain can be used in browser with the [js-datastore-level](https://github.com/ipfs/js-datastore-level) implementation.\n */\nimport { DefaultKeychain } from './keychain.js';\nexport function keychain(init = {}) {\n return (components) => {\n return new DefaultKeychain(components, init);\n };\n}\n//# sourceMappingURL=index.js.map","import { CodeError } from '@libp2p/interface';\nimport delay from 'delay';\nexport class RateLimiter {\n memoryStorage;\n points;\n duration;\n blockDuration;\n execEvenly;\n execEvenlyMinDelayMs;\n keyPrefix;\n constructor(opts = {}) {\n this.points = opts.points ?? 4;\n this.duration = opts.duration ?? 1;\n this.blockDuration = opts.blockDuration ?? 0;\n this.execEvenly = opts.execEvenly ?? false;\n this.execEvenlyMinDelayMs = opts.execEvenlyMinDelayMs ?? (this.duration * 1000 / this.points);\n this.keyPrefix = opts.keyPrefix ?? 'rlflx';\n this.memoryStorage = new MemoryStorage();\n }\n async consume(key, pointsToConsume = 1, options = {}) {\n const rlKey = this.getKey(key);\n const secDuration = this._getKeySecDuration(options);\n let res = this.memoryStorage.incrby(rlKey, pointsToConsume, secDuration);\n res.remainingPoints = Math.max(this.points - res.consumedPoints, 0);\n if (res.consumedPoints > this.points) {\n // Block only first time when consumed more than points\n if (this.blockDuration > 0 && res.consumedPoints <= (this.points + pointsToConsume)) {\n // Block key\n res = this.memoryStorage.set(rlKey, res.consumedPoints, this.blockDuration);\n }\n throw new CodeError('Rate limit exceeded', 'ERR_RATE_LIMIT_EXCEEDED', res);\n }\n else if (this.execEvenly && res.msBeforeNext > 0 && !res.isFirstInDuration) {\n // Execute evenly\n let delayMs = Math.ceil(res.msBeforeNext / (res.remainingPoints + 2));\n if (delayMs < this.execEvenlyMinDelayMs) {\n delayMs = res.consumedPoints * this.execEvenlyMinDelayMs;\n }\n await delay(delayMs);\n }\n return res;\n }\n penalty(key, points = 1, options = {}) {\n const rlKey = this.getKey(key);\n const secDuration = this._getKeySecDuration(options);\n const res = this.memoryStorage.incrby(rlKey, points, secDuration);\n res.remainingPoints = Math.max(this.points - res.consumedPoints, 0);\n return res;\n }\n reward(key, points = 1, options = {}) {\n const rlKey = this.getKey(key);\n const secDuration = this._getKeySecDuration(options);\n const res = this.memoryStorage.incrby(rlKey, -points, secDuration);\n res.remainingPoints = Math.max(this.points - res.consumedPoints, 0);\n return res;\n }\n /**\n * Block any key for secDuration seconds\n *\n * @param key\n * @param secDuration\n */\n block(key, secDuration) {\n const msDuration = secDuration * 1000;\n const initPoints = this.points + 1;\n this.memoryStorage.set(this.getKey(key), initPoints, secDuration);\n return {\n remainingPoints: 0,\n msBeforeNext: msDuration === 0 ? -1 : msDuration,\n consumedPoints: initPoints,\n isFirstInDuration: false\n };\n }\n set(key, points, secDuration = 0) {\n const msDuration = (secDuration >= 0 ? secDuration : this.duration) * 1000;\n this.memoryStorage.set(this.getKey(key), points, secDuration);\n return {\n remainingPoints: 0,\n msBeforeNext: msDuration === 0 ? -1 : msDuration,\n consumedPoints: points,\n isFirstInDuration: false\n };\n }\n get(key) {\n const res = this.memoryStorage.get(this.getKey(key));\n if (res != null) {\n res.remainingPoints = Math.max(this.points - res.consumedPoints, 0);\n }\n return res;\n }\n delete(key) {\n this.memoryStorage.delete(this.getKey(key));\n }\n _getKeySecDuration(options) {\n if (options?.customDuration != null && options.customDuration >= 0) {\n return options.customDuration;\n }\n return this.duration;\n }\n getKey(key) {\n return this.keyPrefix.length > 0 ? `${this.keyPrefix}:${key}` : key;\n }\n parseKey(rlKey) {\n return rlKey.substring(this.keyPrefix.length);\n }\n}\nclass MemoryStorage {\n storage;\n constructor() {\n this.storage = new Map();\n }\n incrby(key, value, durationSec) {\n const existing = this.storage.get(key);\n if (existing != null) {\n const msBeforeExpires = existing.expiresAt != null\n ? existing.expiresAt.getTime() - new Date().getTime()\n : -1;\n if (existing.expiresAt == null || msBeforeExpires > 0) {\n // Change value\n existing.value += value;\n return {\n remainingPoints: 0,\n msBeforeNext: msBeforeExpires,\n consumedPoints: existing.value,\n isFirstInDuration: false\n };\n }\n return this.set(key, value, durationSec);\n }\n return this.set(key, value, durationSec);\n }\n set(key, value, durationSec) {\n const durationMs = durationSec * 1000;\n const existing = this.storage.get(key);\n if (existing != null) {\n clearTimeout(existing.timeoutId);\n }\n const record = {\n value,\n expiresAt: durationMs > 0 ? new Date(Date.now() + durationMs) : undefined\n };\n this.storage.set(key, record);\n if (durationMs > 0) {\n record.timeoutId = setTimeout(() => {\n this.storage.delete(key);\n }, durationMs);\n if (record.timeoutId.unref != null) {\n record.timeoutId.unref();\n }\n }\n return {\n remainingPoints: 0,\n msBeforeNext: durationMs === 0 ? -1 : durationMs,\n consumedPoints: record.value,\n isFirstInDuration: true\n };\n }\n get(key) {\n const existing = this.storage.get(key);\n if (existing != null) {\n const msBeforeExpires = existing.expiresAt != null\n ? existing.expiresAt.getTime() - new Date().getTime()\n : -1;\n return {\n remainingPoints: 0,\n msBeforeNext: msBeforeExpires,\n consumedPoints: existing.value,\n isFirstInDuration: false\n };\n }\n }\n delete(key) {\n const record = this.storage.get(key);\n if (record != null) {\n if (record.timeoutId != null) {\n clearTimeout(record.timeoutId);\n }\n this.storage.delete(key);\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=rate-limiter.js.map","export var MessageTypes;\n(function (MessageTypes) {\n MessageTypes[MessageTypes[\"NEW_STREAM\"] = 0] = \"NEW_STREAM\";\n MessageTypes[MessageTypes[\"MESSAGE_RECEIVER\"] = 1] = \"MESSAGE_RECEIVER\";\n MessageTypes[MessageTypes[\"MESSAGE_INITIATOR\"] = 2] = \"MESSAGE_INITIATOR\";\n MessageTypes[MessageTypes[\"CLOSE_RECEIVER\"] = 3] = \"CLOSE_RECEIVER\";\n MessageTypes[MessageTypes[\"CLOSE_INITIATOR\"] = 4] = \"CLOSE_INITIATOR\";\n MessageTypes[MessageTypes[\"RESET_RECEIVER\"] = 5] = \"RESET_RECEIVER\";\n MessageTypes[MessageTypes[\"RESET_INITIATOR\"] = 6] = \"RESET_INITIATOR\";\n})(MessageTypes || (MessageTypes = {}));\nexport const MessageTypeNames = Object.freeze({\n 0: 'NEW_STREAM',\n 1: 'MESSAGE_RECEIVER',\n 2: 'MESSAGE_INITIATOR',\n 3: 'CLOSE_RECEIVER',\n 4: 'CLOSE_INITIATOR',\n 5: 'RESET_RECEIVER',\n 6: 'RESET_INITIATOR'\n});\nexport const InitiatorMessageTypes = Object.freeze({\n NEW_STREAM: MessageTypes.NEW_STREAM,\n MESSAGE: MessageTypes.MESSAGE_INITIATOR,\n CLOSE: MessageTypes.CLOSE_INITIATOR,\n RESET: MessageTypes.RESET_INITIATOR\n});\nexport const ReceiverMessageTypes = Object.freeze({\n MESSAGE: MessageTypes.MESSAGE_RECEIVER,\n CLOSE: MessageTypes.CLOSE_RECEIVER,\n RESET: MessageTypes.RESET_RECEIVER\n});\n//# sourceMappingURL=message-types.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { MessageTypeNames, MessageTypes } from './message-types.js';\nexport const MAX_MSG_SIZE = 1 << 20; // 1MB\nexport const MAX_MSG_QUEUE_SIZE = 4 << 20; // 4MB\nexport class Decoder {\n _buffer;\n _headerInfo;\n _maxMessageSize;\n _maxUnprocessedMessageQueueSize;\n constructor(maxMessageSize = MAX_MSG_SIZE, maxUnprocessedMessageQueueSize = MAX_MSG_QUEUE_SIZE) {\n this._buffer = new Uint8ArrayList();\n this._headerInfo = null;\n this._maxMessageSize = maxMessageSize;\n this._maxUnprocessedMessageQueueSize = maxUnprocessedMessageQueueSize;\n }\n write(chunk) {\n if (chunk == null || chunk.length === 0) {\n return [];\n }\n this._buffer.append(chunk);\n if (this._buffer.byteLength > this._maxUnprocessedMessageQueueSize) {\n throw Object.assign(new Error('unprocessed message queue size too large!'), { code: 'ERR_MSG_QUEUE_TOO_BIG' });\n }\n const msgs = [];\n while (this._buffer.length !== 0) {\n if (this._headerInfo == null) {\n try {\n this._headerInfo = this._decodeHeader(this._buffer);\n }\n catch (err) {\n if (err.code === 'ERR_MSG_TOO_BIG') {\n throw err;\n }\n break; // We haven't received enough data yet\n }\n }\n const { id, type, length, offset } = this._headerInfo;\n const bufferedDataLength = this._buffer.length - offset;\n if (bufferedDataLength < length) {\n break; // not enough data yet\n }\n const msg = {\n id,\n type\n };\n if (type === MessageTypes.NEW_STREAM || type === MessageTypes.MESSAGE_INITIATOR || type === MessageTypes.MESSAGE_RECEIVER) {\n msg.data = this._buffer.sublist(offset, offset + length);\n }\n msgs.push(msg);\n this._buffer.consume(offset + length);\n this._headerInfo = null;\n }\n return msgs;\n }\n /**\n * Attempts to decode the message header from the buffer\n */\n _decodeHeader(data) {\n const { value: h, offset } = readVarInt(data);\n const { value: length, offset: end } = readVarInt(data, offset);\n const type = h & 7;\n // @ts-expect-error h is a number not a CODE\n if (MessageTypeNames[type] == null) {\n throw new Error(`Invalid type received: ${type}`);\n }\n // test message type varint + data length\n if (length > this._maxMessageSize) {\n throw Object.assign(new Error('message size too large!'), { code: 'ERR_MSG_TOO_BIG' });\n }\n // @ts-expect-error h is a number not a CODE\n return { id: h >> 3, type, offset: offset + end, length };\n }\n}\nconst MSB = 0x80;\nconst REST = 0x7F;\nfunction readVarInt(buf, offset = 0) {\n let res = 0;\n let shift = 0;\n let counter = offset;\n let b;\n const l = buf.length;\n do {\n if (counter >= l || shift > 49) {\n offset = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf.get(counter++);\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB);\n offset = counter - offset;\n return {\n value: res,\n offset\n };\n}\n//# sourceMappingURL=decode.js.map","import * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { allocUnsafe } from 'uint8arrays/alloc';\nimport { MessageTypes } from './message-types.js';\nconst POOL_SIZE = 10 * 1024;\nclass Encoder {\n _pool;\n _poolOffset;\n constructor() {\n this._pool = allocUnsafe(POOL_SIZE);\n this._poolOffset = 0;\n }\n /**\n * Encodes the given message and adds it to the passed list\n */\n write(msg, list) {\n const pool = this._pool;\n let offset = this._poolOffset;\n varint.encode(msg.id << 3 | msg.type, pool, offset);\n offset += varint.encodingLength(msg.id << 3 | msg.type);\n if ((msg.type === MessageTypes.NEW_STREAM || msg.type === MessageTypes.MESSAGE_INITIATOR || msg.type === MessageTypes.MESSAGE_RECEIVER) && msg.data != null) {\n varint.encode(msg.data.length, pool, offset);\n offset += varint.encodingLength(msg.data.length);\n }\n else {\n varint.encode(0, pool, offset);\n offset += varint.encodingLength(0);\n }\n const header = pool.subarray(this._poolOffset, offset);\n if (POOL_SIZE - offset < 100) {\n this._pool = allocUnsafe(POOL_SIZE);\n this._poolOffset = 0;\n }\n else {\n this._poolOffset = offset;\n }\n list.append(header);\n if ((msg.type === MessageTypes.NEW_STREAM || msg.type === MessageTypes.MESSAGE_INITIATOR || msg.type === MessageTypes.MESSAGE_RECEIVER) && msg.data != null) {\n list.append(msg.data);\n }\n }\n}\nconst encoder = new Encoder();\n/**\n * Encode and yield one or more messages\n */\nexport async function* encode(source) {\n for await (const message of source) {\n const list = new Uint8ArrayList();\n encoder.write(message, list);\n yield list;\n }\n}\n//# sourceMappingURL=encode.js.map","import { AbstractStream } from '@libp2p/utils/abstract-stream';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { MAX_MSG_SIZE } from './decode.js';\nimport { InitiatorMessageTypes, ReceiverMessageTypes } from './message-types.js';\nexport class MplexStream extends AbstractStream {\n name;\n streamId;\n send;\n types;\n maxDataSize;\n constructor(init) {\n super(init);\n this.types = init.direction === 'outbound' ? InitiatorMessageTypes : ReceiverMessageTypes;\n this.send = init.send;\n this.name = init.name;\n this.streamId = init.streamId;\n this.maxDataSize = init.maxDataSize;\n }\n async sendNewStream() {\n await this.send({ id: this.streamId, type: InitiatorMessageTypes.NEW_STREAM, data: new Uint8ArrayList(uint8ArrayFromString(this.name)) });\n }\n async sendData(data) {\n data = data.sublist();\n while (data.byteLength > 0) {\n const toSend = Math.min(data.byteLength, this.maxDataSize);\n await this.send({\n id: this.streamId,\n type: this.types.MESSAGE,\n data: data.sublist(0, toSend)\n });\n data.consume(toSend);\n }\n }\n async sendReset() {\n await this.send({ id: this.streamId, type: this.types.RESET });\n }\n async sendCloseWrite() {\n await this.send({ id: this.streamId, type: this.types.CLOSE });\n }\n async sendCloseRead() {\n // mplex does not support close read, only close write\n }\n}\nexport function createStream(options) {\n const { id, name, send, onEnd, type = 'initiator', maxMsgSize = MAX_MSG_SIZE } = options;\n return new MplexStream({\n id: type === 'initiator' ? (`i${id}`) : `r${id}`,\n streamId: id,\n name: `${name ?? id}`,\n direction: type === 'initiator' ? 'outbound' : 'inbound',\n maxDataSize: maxMsgSize,\n onEnd,\n send,\n log: options.logger.forComponent(`libp2p:mplex:stream:${type}:${id}`)\n });\n}\n//# sourceMappingURL=stream.js.map","import { CodeError } from '@libp2p/interface';\nimport { closeSource } from '@libp2p/utils/close-source';\nimport { RateLimiter } from '@libp2p/utils/rate-limiter';\nimport { pipe } from 'it-pipe';\nimport { pushable } from 'it-pushable';\nimport { toString as uint8ArrayToString } from 'uint8arrays';\nimport { Decoder } from './decode.js';\nimport { encode } from './encode.js';\nimport { MessageTypes, MessageTypeNames } from './message-types.js';\nimport { createStream } from './stream.js';\nconst MAX_STREAMS_INBOUND_STREAMS_PER_CONNECTION = 1024;\nconst MAX_STREAMS_OUTBOUND_STREAMS_PER_CONNECTION = 1024;\nconst MAX_STREAM_BUFFER_SIZE = 1024 * 1024 * 4; // 4MB\nconst DISCONNECT_THRESHOLD = 5;\nconst CLOSE_TIMEOUT = 500;\nfunction printMessage(msg) {\n const output = {\n ...msg,\n type: `${MessageTypeNames[msg.type]} (${msg.type})`\n };\n if (msg.type === MessageTypes.NEW_STREAM) {\n output.data = uint8ArrayToString(msg.data instanceof Uint8Array ? msg.data : msg.data.subarray());\n }\n if (msg.type === MessageTypes.MESSAGE_INITIATOR || msg.type === MessageTypes.MESSAGE_RECEIVER) {\n output.data = uint8ArrayToString(msg.data instanceof Uint8Array ? msg.data : msg.data.subarray(), 'base16');\n }\n return output;\n}\nexport class MplexStreamMuxer {\n protocol = '/mplex/6.7.0';\n sink;\n source;\n log;\n _streamId;\n _streams;\n _init;\n _source;\n closeController;\n rateLimiter;\n closeTimeout;\n logger;\n constructor(components, init) {\n init = init ?? {};\n this.log = components.logger.forComponent('libp2p:mplex');\n this.logger = components.logger;\n this._streamId = 0;\n this._streams = {\n /**\n * Stream to ids map\n */\n initiators: new Map(),\n /**\n * Stream to ids map\n */\n receivers: new Map()\n };\n this._init = init;\n this.closeTimeout = init.closeTimeout ?? CLOSE_TIMEOUT;\n /**\n * An iterable sink\n */\n this.sink = this._createSink();\n /**\n * An iterable source\n */\n this._source = pushable({\n objectMode: true,\n onEnd: () => {\n // the source has ended, we can't write any more messages to gracefully\n // close streams so all we can do is destroy them\n for (const stream of this._streams.initiators.values()) {\n stream.destroy();\n }\n for (const stream of this._streams.receivers.values()) {\n stream.destroy();\n }\n }\n });\n this.source = pipe(this._source, source => encode(source));\n /**\n * Close controller\n */\n this.closeController = new AbortController();\n this.rateLimiter = new RateLimiter({\n points: init.disconnectThreshold ?? DISCONNECT_THRESHOLD,\n duration: 1\n });\n }\n /**\n * Returns a Map of streams and their ids\n */\n get streams() {\n // Inbound and Outbound streams may have the same ids, so we need to make those unique\n const streams = [];\n for (const stream of this._streams.initiators.values()) {\n streams.push(stream);\n }\n for (const stream of this._streams.receivers.values()) {\n streams.push(stream);\n }\n return streams;\n }\n /**\n * Initiate a new stream with the given name. If no name is\n * provided, the id of the stream will be used.\n */\n newStream(name) {\n if (this.closeController.signal.aborted) {\n throw new Error('Muxer already closed');\n }\n const id = this._streamId++;\n name = name == null ? id.toString() : name.toString();\n const registry = this._streams.initiators;\n return this._newStream({ id, name, type: 'initiator', registry });\n }\n /**\n * Close or abort all tracked streams and stop the muxer\n */\n async close(options) {\n if (this.closeController.signal.aborted) {\n return;\n }\n const signal = options?.signal ?? AbortSignal.timeout(this.closeTimeout);\n try {\n // try to gracefully close all streams\n await Promise.all(this.streams.map(async (s) => s.close({\n signal\n })));\n this._source.end();\n // try to gracefully close the muxer\n await this._source.onEmpty({\n signal\n });\n this.closeController.abort();\n }\n catch (err) {\n this.abort(err);\n }\n }\n abort(err) {\n if (this.closeController.signal.aborted) {\n return;\n }\n this.streams.forEach(s => { s.abort(err); });\n this.closeController.abort(err);\n }\n /**\n * Called whenever an inbound stream is created\n */\n _newReceiverStream(options) {\n const { id, name } = options;\n const registry = this._streams.receivers;\n return this._newStream({ id, name, type: 'receiver', registry });\n }\n _newStream(options) {\n const { id, name, type, registry } = options;\n this.log('new %s stream %s', type, id);\n if (type === 'initiator' && this._streams.initiators.size === (this._init.maxOutboundStreams ?? MAX_STREAMS_OUTBOUND_STREAMS_PER_CONNECTION)) {\n throw new CodeError('Too many outbound streams open', 'ERR_TOO_MANY_OUTBOUND_STREAMS');\n }\n if (registry.has(id)) {\n throw new Error(`${type} stream ${id} already exists!`);\n }\n const send = async (msg) => {\n if (this.log.enabled) {\n this.log.trace('%s stream %s send', type, id, printMessage(msg));\n }\n this._source.push(msg);\n };\n const onEnd = () => {\n this.log('%s stream with id %s and protocol %s ended', type, id, stream.protocol);\n registry.delete(id);\n if (this._init.onStreamEnd != null) {\n this._init.onStreamEnd(stream);\n }\n };\n const stream = createStream({ id, name, send, type, onEnd, maxMsgSize: this._init.maxMsgSize, logger: this.logger });\n registry.set(id, stream);\n return stream;\n }\n /**\n * Creates a sink with an abortable source. Incoming messages will\n * also have their size restricted. All messages will be varint decoded.\n */\n _createSink() {\n const sink = async (source) => {\n const abortListener = () => {\n closeSource(source, this.log);\n };\n this.closeController.signal.addEventListener('abort', abortListener);\n try {\n const decoder = new Decoder(this._init.maxMsgSize, this._init.maxUnprocessedMessageQueueSize);\n for await (const chunk of source) {\n for (const msg of decoder.write(chunk)) {\n await this._handleIncoming(msg);\n }\n }\n this._source.end();\n }\n catch (err) {\n this.log('error in sink', err);\n this._source.end(err); // End the source with an error\n }\n finally {\n this.closeController.signal.removeEventListener('abort', abortListener);\n }\n };\n return sink;\n }\n async _handleIncoming(message) {\n const { id, type } = message;\n if (this.log.enabled) {\n this.log.trace('incoming message', printMessage(message));\n }\n // Create a new stream?\n if (message.type === MessageTypes.NEW_STREAM) {\n if (this._streams.receivers.size === (this._init.maxInboundStreams ?? MAX_STREAMS_INBOUND_STREAMS_PER_CONNECTION)) {\n this.log('too many inbound streams open');\n // not going to allow this stream, send the reset message manually\n // instead of setting it up just to tear it down\n this._source.push({\n id,\n type: MessageTypes.RESET_RECEIVER\n });\n // if we've hit our stream limit, and the remote keeps trying to open\n // more new streams, if they are doing this very quickly maybe they\n // are attacking us and we should close the connection\n try {\n await this.rateLimiter.consume('new-stream', 1);\n }\n catch {\n this.log('rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection');\n // since there's no backpressure in mplex, the only thing we can really do to protect ourselves is close the connection\n this.abort(new Error('Too many open streams'));\n return;\n }\n return;\n }\n const stream = this._newReceiverStream({ id, name: uint8ArrayToString(message.data instanceof Uint8Array ? message.data : message.data.subarray()) });\n if (this._init.onIncomingStream != null) {\n this._init.onIncomingStream(stream);\n }\n return;\n }\n const list = (type & 1) === 1 ? this._streams.initiators : this._streams.receivers;\n const stream = list.get(id);\n if (stream == null) {\n this.log('missing stream %s for message type %s', id, MessageTypeNames[type]);\n // if the remote keeps sending us messages for streams that have been\n // closed or were never opened they may be attacking us so if they do\n // this very quickly all we can do is close the connection\n try {\n await this.rateLimiter.consume('missing-stream', 1);\n }\n catch {\n this.log('rate limit hit when receiving messages for streams that do not exist - closing remote connection');\n // since there's no backpressure in mplex, the only thing we can really do to protect ourselves is close the connection\n this.abort(new Error('Too many messages for missing streams'));\n return;\n }\n return;\n }\n const maxBufferSize = this._init.maxStreamBufferSize ?? MAX_STREAM_BUFFER_SIZE;\n try {\n switch (type) {\n case MessageTypes.MESSAGE_INITIATOR:\n case MessageTypes.MESSAGE_RECEIVER:\n if (stream.sourceReadableLength() > maxBufferSize) {\n // Stream buffer has got too large, reset the stream\n this._source.push({\n id: message.id,\n type: type === MessageTypes.MESSAGE_INITIATOR ? MessageTypes.RESET_RECEIVER : MessageTypes.RESET_INITIATOR\n });\n // Inform the stream consumer they are not fast enough\n throw new CodeError('Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers', 'ERR_STREAM_INPUT_BUFFER_FULL');\n }\n // We got data from the remote, push it into our local stream\n stream.sourcePush(message.data);\n break;\n case MessageTypes.CLOSE_INITIATOR:\n case MessageTypes.CLOSE_RECEIVER:\n // The remote has stopped writing, so we can stop reading\n stream.remoteCloseWrite();\n break;\n case MessageTypes.RESET_INITIATOR:\n case MessageTypes.RESET_RECEIVER:\n // The remote has errored, stop reading and writing to the stream immediately\n stream.reset();\n break;\n default:\n this.log('unknown message type %s', type);\n }\n }\n catch (err) {\n this.log.error('error while processing message', err);\n stream.abort(err);\n }\n }\n}\n//# sourceMappingURL=mplex.js.map","/**\n * @packageDocumentation\n *\n * This is a [simple stream multiplexer(https://docs.libp2p.io/concepts/multiplex/mplex/) that has been deprecated.\n *\n * Please use [@chainsafe/libp2p-yamux](https://www.npmjs.com/package/@chainsafe/libp2p-yamux) instead.\n *\n * @example\n *\n * ```TypeScript\n * import { mplex } from '@libp2p/mplex'\n * import { pipe } from 'it-pipe'\n *\n * const factory = mplex()\n *\n * const muxer = factory.createStreamMuxer(components, {\n * onStream: stream => { // Receive a duplex stream from the remote\n * // ...receive data from the remote and optionally send data back\n * },\n * onStreamEnd: stream => {\n * // ...handle any tracking you may need of stream closures\n * }\n * })\n *\n * pipe(conn, muxer, conn) // conn is duplex connection to another peer\n *\n * const stream = muxer.newStream() // Create a new duplex stream to the remote\n *\n * // Use the duplex stream to send some data to the remote...\n * pipe([1, 2, 3], stream)\n * ```\n */\nimport { serviceCapabilities } from '@libp2p/interface';\nimport { MplexStreamMuxer } from './mplex.js';\nclass Mplex {\n protocol = '/mplex/6.7.0';\n _init;\n components;\n constructor(components, init = {}) {\n this.components = components;\n this._init = init;\n }\n [Symbol.toStringTag] = '@libp2p/mplex';\n [serviceCapabilities] = [\n '@libp2p/stream-multiplexing'\n ];\n createStreamMuxer(init = {}) {\n return new MplexStreamMuxer(this.components, {\n ...init,\n ...this._init\n });\n }\n}\nexport function mplex(init = {}) {\n return (components) => new Mplex(components, init);\n}\n//# sourceMappingURL=index.js.map","export const PING_PROTOCOL = '/ipfs/ping/1.0.0';\nexport const PING_LENGTH = 32;\nexport const PROTOCOL_VERSION = '1.0.0';\nexport const PROTOCOL_NAME = 'ping';\nexport const PROTOCOL_PREFIX = 'ipfs';\nexport const TIMEOUT = 10000;\n// See https://github.com/libp2p/specs/blob/d4b5fb0152a6bb86cfd9ea/ping/ping.md?plain=1#L38-L43\n// The dialing peer MUST NOT keep more than one outbound stream for the ping protocol per peer.\n// The listening peer SHOULD accept at most two streams per peer since cross-stream behavior is\n// non-linear and stream writes occur asynchronously. The listening peer may perceive the\n// dialing peer closing and opening the wrong streams (for instance, closing stream B and\n// opening stream A even though the dialing peer is opening stream B and closing stream A).\nexport const MAX_INBOUND_STREAMS = 2;\nexport const MAX_OUTBOUND_STREAMS = 1;\nexport const ERR_WRONG_PING_ACK = 'ERR_WRONG_PING_ACK';\n//# sourceMappingURL=constants.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { CodeError, ERR_INVALID_MESSAGE, ERR_TIMEOUT } from '@libp2p/interface';\nimport first from 'it-first';\nimport { pipe } from 'it-pipe';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { PROTOCOL_PREFIX, PROTOCOL_NAME, PING_LENGTH, PROTOCOL_VERSION, TIMEOUT, MAX_INBOUND_STREAMS, MAX_OUTBOUND_STREAMS, ERR_WRONG_PING_ACK } from './constants.js';\nexport class PingService {\n protocol;\n components;\n started;\n timeout;\n maxInboundStreams;\n maxOutboundStreams;\n runOnTransientConnection;\n log;\n constructor(components, init = {}) {\n this.components = components;\n this.log = components.logger.forComponent('libp2p:ping');\n this.started = false;\n this.protocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;\n this.timeout = init.timeout ?? TIMEOUT;\n this.maxInboundStreams = init.maxInboundStreams ?? MAX_INBOUND_STREAMS;\n this.maxOutboundStreams = init.maxOutboundStreams ?? MAX_OUTBOUND_STREAMS;\n this.runOnTransientConnection = init.runOnTransientConnection ?? true;\n this.handleMessage = this.handleMessage.bind(this);\n }\n [Symbol.toStringTag] = '@libp2p/ping';\n async start() {\n await this.components.registrar.handle(this.protocol, this.handleMessage, {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams,\n runOnTransientConnection: this.runOnTransientConnection\n });\n this.started = true;\n }\n async stop() {\n await this.components.registrar.unhandle(this.protocol);\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n /**\n * A handler to register with Libp2p to process ping messages\n */\n handleMessage(data) {\n this.log('incoming ping from %p', data.connection.remotePeer);\n const { stream } = data;\n const start = Date.now();\n const signal = AbortSignal.timeout(this.timeout);\n signal.addEventListener('abort', () => {\n stream?.abort(new CodeError('ping timeout', ERR_TIMEOUT));\n });\n void pipe(stream, async function* (source) {\n let received = 0;\n for await (const buf of source) {\n received += buf.byteLength;\n if (received > PING_LENGTH) {\n stream?.abort(new CodeError('Too much data received', ERR_INVALID_MESSAGE));\n return;\n }\n yield buf;\n }\n }, stream)\n .catch(err => {\n this.log.error('incoming ping from %p failed with error', data.connection.remotePeer, err);\n stream?.abort(err);\n })\n .finally(() => {\n const ms = Date.now() - start;\n this.log('incoming ping from %p complete in %dms', data.connection.remotePeer, ms);\n });\n }\n /**\n * Ping a given peer and wait for its response, getting the operation latency.\n */\n async ping(peer, options = {}) {\n this.log('pinging %p', peer);\n const start = Date.now();\n const data = randomBytes(PING_LENGTH);\n const connection = await this.components.connectionManager.openConnection(peer, options);\n let stream;\n let onAbort = () => { };\n if (options.signal == null) {\n const signal = AbortSignal.timeout(this.timeout);\n options = {\n ...options,\n signal\n };\n }\n try {\n stream = await connection.newStream(this.protocol, {\n ...options,\n runOnTransientConnection: this.runOnTransientConnection\n });\n onAbort = () => {\n stream?.abort(new CodeError('ping timeout', ERR_TIMEOUT));\n };\n // make stream abortable\n options.signal?.addEventListener('abort', onAbort, { once: true });\n const result = await pipe([data], stream, async (source) => first(source));\n const ms = Date.now() - start;\n if (result == null) {\n throw new CodeError(`Did not receive a ping ack after ${ms}ms`, ERR_WRONG_PING_ACK);\n }\n if (!uint8ArrayEquals(data, result.subarray())) {\n throw new CodeError(`Received wrong ping ack after ${ms}ms`, ERR_WRONG_PING_ACK);\n }\n this.log('ping %p complete in %dms', connection.remotePeer, ms);\n return ms;\n }\n catch (err) {\n this.log.error('error while pinging %p', connection.remotePeer, err);\n stream?.abort(err);\n throw err;\n }\n finally {\n options.signal?.removeEventListener('abort', onAbort);\n if (stream != null) {\n await stream.close();\n }\n }\n }\n}\n//# sourceMappingURL=ping.js.map","/**\n * @packageDocumentation\n *\n * The ping service implements the [libp2p ping spec](https://github.com/libp2p/specs/blob/master/ping/ping.md) allowing you to make a latency measurement to a remote peer.\n *\n * @example\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { ping } from '@libp2p/ping'\n * import { multiaddr } from '@multiformats/multiaddr'\n *\n * const node = await createLibp2p({\n * services: {\n * ping: ping()\n * }\n * })\n *\n * const rtt = await node.services.ping.ping(multiaddr('/ip4/...'))\n *\n * console.info(rtt)\n * ```\n */\nimport { PingService as PingServiceClass } from './ping.js';\nexport function ping(init = {}) {\n return (components) => new PingServiceClass(components, init);\n}\nexport { PING_PROTOCOL } from './constants.js';\n//# sourceMappingURL=index.js.map","import { CodeError } from '@libp2p/interface';\nexport var codes;\n(function (codes) {\n codes[\"ERR_ALREADY_ABORTED\"] = \"ERR_ALREADY_ABORTED\";\n codes[\"ERR_DATA_CHANNEL\"] = \"ERR_DATA_CHANNEL\";\n codes[\"ERR_CONNECTION_CLOSED\"] = \"ERR_CONNECTION_CLOSED\";\n codes[\"ERR_HASH_NOT_SUPPORTED\"] = \"ERR_HASH_NOT_SUPPORTED\";\n codes[\"ERR_INVALID_MULTIADDR\"] = \"ERR_INVALID_MULTIADDR\";\n codes[\"ERR_INVALID_FINGERPRINT\"] = \"ERR_INVALID_FINGERPRINT\";\n codes[\"ERR_INVALID_PARAMETERS\"] = \"ERR_INVALID_PARAMETERS\";\n codes[\"ERR_NOT_IMPLEMENTED\"] = \"ERR_NOT_IMPLEMENTED\";\n codes[\"ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS\"] = \"ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS\";\n codes[\"ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS\"] = \"ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS\";\n})(codes || (codes = {}));\nexport class WebRTCTransportError extends CodeError {\n constructor(msg, code) {\n super(`WebRTC transport error: ${msg}`, code ?? '');\n this.name = 'WebRTCTransportError';\n }\n}\nexport class ConnectionClosedError extends WebRTCTransportError {\n constructor(state, msg) {\n super(`peerconnection moved to state: ${state}: ${msg}`, codes.ERR_CONNECTION_CLOSED);\n this.name = 'WebRTC/ConnectionClosed';\n }\n}\nexport function connectionClosedError(state, msg) {\n return new ConnectionClosedError(state, msg);\n}\nexport class DataChannelError extends WebRTCTransportError {\n constructor(streamLabel, msg) {\n super(`[stream: ${streamLabel}] data channel error: ${msg}`, codes.ERR_DATA_CHANNEL);\n this.name = 'WebRTC/DataChannelError';\n }\n}\nexport function dataChannelError(streamLabel, msg) {\n return new DataChannelError(streamLabel, msg);\n}\nexport class InappropriateMultiaddrError extends WebRTCTransportError {\n constructor(msg) {\n super(`There was a problem with the Multiaddr which was passed in: ${msg}`, codes.ERR_INVALID_MULTIADDR);\n this.name = 'WebRTC/InappropriateMultiaddrError';\n }\n}\nexport function inappropriateMultiaddr(msg) {\n return new InappropriateMultiaddrError(msg);\n}\nexport class InvalidArgumentError extends WebRTCTransportError {\n constructor(msg) {\n super(`There was a problem with a provided argument: ${msg}`, codes.ERR_INVALID_PARAMETERS);\n this.name = 'WebRTC/InvalidArgumentError';\n }\n}\nexport function invalidArgument(msg) {\n return new InvalidArgumentError(msg);\n}\nexport class InvalidFingerprintError extends WebRTCTransportError {\n constructor(fingerprint, source) {\n super(`Invalid fingerprint \"${fingerprint}\" within ${source}`, codes.ERR_INVALID_FINGERPRINT);\n this.name = 'WebRTC/InvalidFingerprintError';\n }\n}\nexport function invalidFingerprint(fingerprint, source) {\n return new InvalidFingerprintError(fingerprint, source);\n}\nexport class OperationAbortedError extends WebRTCTransportError {\n constructor(context, abortReason) {\n super(`Signalled to abort because (${abortReason}}) ${context}`, codes.ERR_ALREADY_ABORTED);\n this.name = 'WebRTC/OperationAbortedError';\n }\n}\nexport function operationAborted(context, reason) {\n return new OperationAbortedError(context, reason);\n}\nexport class OverStreamLimitError extends WebRTCTransportError {\n constructor(msg) {\n const code = msg.startsWith('inbound') ? codes.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS : codes.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS;\n super(msg, code);\n this.name = 'WebRTC/OverStreamLimitError';\n }\n}\nexport function overStreamLimit(dir, proto) {\n return new OverStreamLimitError(`${dir} stream limit reached for protocol - ${proto}`);\n}\nexport class UnimplementedError extends WebRTCTransportError {\n constructor(methodName) {\n super(`A method (${methodName}) was called though it has been intentionally left unimplemented.`, codes.ERR_NOT_IMPLEMENTED);\n this.name = 'WebRTC/UnimplementedError';\n }\n}\nexport function unimplemented(methodName) {\n return new UnimplementedError(methodName);\n}\nexport class UnsupportedHashAlgorithmError extends WebRTCTransportError {\n constructor(algo) {\n super(`unsupported hash algorithm code: ${algo} please see the codes at https://github.com/multiformats/multicodec/blob/master/table.csv `, codes.ERR_HASH_NOT_SUPPORTED);\n this.name = 'WebRTC/UnsupportedHashAlgorithmError';\n }\n}\nexport function unsupportedHashAlgorithmCode(code) {\n return new UnsupportedHashAlgorithmError(code);\n}\n//# sourceMappingURL=error.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","/**\n * STUN servers help clients discover their own public IPs.\n *\n * Using five or more servers causes warnings to be printed so\n * ensure we limit it to max x4\n *\n * @see https://gist.github.com/mondain/b0ec1cf5f60ae726202e\n */\nexport const DEFAULT_ICE_SERVERS = [\n 'stun:stun.l.google.com:19302',\n 'stun:global.stun.twilio.com:3478',\n 'stun:stun.cloudflare.com:3478',\n 'stun:stun.services.mozilla.com:3478'\n];\n//# sourceMappingURL=constants.js.map","import { detect } from 'detect-browser';\nimport pDefer from 'p-defer';\nimport pTimeout from 'p-timeout';\nimport { DEFAULT_ICE_SERVERS } from './constants.js';\nconst browser = detect();\nexport const isFirefox = ((browser != null) && browser.name === 'firefox');\nexport const nopSource = async function* nop() { };\nexport const nopSink = async (_) => { };\nexport const DATA_CHANNEL_DRAIN_TIMEOUT = 30 * 1000;\nexport function drainAndClose(channel, direction, drainTimeout = DATA_CHANNEL_DRAIN_TIMEOUT, options) {\n if (channel.readyState !== 'open') {\n return;\n }\n void Promise.resolve()\n .then(async () => {\n // wait for bufferedAmount to become zero\n if (channel.bufferedAmount > 0) {\n options.log('%s drain channel with %d buffered bytes', direction, channel.bufferedAmount);\n const deferred = pDefer();\n let drained = false;\n channel.bufferedAmountLowThreshold = 0;\n const closeListener = () => {\n if (!drained) {\n options.log('%s drain channel closed before drain', direction);\n deferred.resolve();\n }\n };\n channel.addEventListener('close', closeListener, {\n once: true\n });\n channel.addEventListener('bufferedamountlow', () => {\n drained = true;\n channel.removeEventListener('close', closeListener);\n deferred.resolve();\n });\n await pTimeout(deferred.promise, {\n milliseconds: drainTimeout\n });\n }\n })\n .then(async () => {\n // only close if the channel is still open\n if (channel.readyState === 'open') {\n channel.close();\n }\n })\n .catch(err => {\n options.log.error('error closing outbound stream', err);\n });\n}\nexport async function getRtcConfiguration(config) {\n config = config ?? {};\n if (typeof config === 'function') {\n config = await config();\n }\n config.iceServers = config.iceServers ?? DEFAULT_ICE_SERVERS.map(url => ({\n urls: [\n url\n ]\n }));\n return config;\n}\n//# sourceMappingURL=util.js.map","import { nopSink, nopSource } from './util.js';\nexport class WebRTCMultiaddrConnection {\n log;\n /**\n * WebRTC Peer Connection\n */\n peerConnection;\n /**\n * The multiaddr address used to communicate with the remote peer\n */\n remoteAddr;\n /**\n * Holds the lifecycle times of the connection\n */\n timeline;\n /**\n * Optional metrics counter group for this connection\n */\n metrics;\n /**\n * The stream source, a no-op as the transport natively supports multiplexing\n */\n source = nopSource();\n /**\n * The stream destination, a no-op as the transport natively supports multiplexing\n */\n sink = nopSink;\n constructor(components, init) {\n this.log = components.logger.forComponent('libp2p:webrtc:maconn');\n this.remoteAddr = init.remoteAddr;\n this.timeline = init.timeline;\n this.peerConnection = init.peerConnection;\n const initialState = this.peerConnection.connectionState;\n this.peerConnection.onconnectionstatechange = () => {\n this.log.trace('peer connection state change', this.peerConnection.connectionState, 'initial state', initialState);\n if (this.peerConnection.connectionState === 'disconnected' || this.peerConnection.connectionState === 'failed' || this.peerConnection.connectionState === 'closed') {\n // nothing else to do but close the connection\n this.timeline.close = Date.now();\n }\n };\n }\n async close(options) {\n this.log.trace('closing connection');\n this.peerConnection.close();\n this.timeline.close = Date.now();\n this.metrics?.increment({ close: true });\n }\n abort(err) {\n this.log.error('closing connection due to error', err);\n this.peerConnection.close();\n this.timeline.close = Date.now();\n this.metrics?.increment({ abort: true });\n }\n}\n//# sourceMappingURL=maconn.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Message;\n(function (Message) {\n let Flag;\n (function (Flag) {\n Flag[\"FIN\"] = \"FIN\";\n Flag[\"STOP_SENDING\"] = \"STOP_SENDING\";\n Flag[\"RESET\"] = \"RESET\";\n Flag[\"FIN_ACK\"] = \"FIN_ACK\";\n })(Flag = Message.Flag || (Message.Flag = {}));\n let __FlagValues;\n (function (__FlagValues) {\n __FlagValues[__FlagValues[\"FIN\"] = 0] = \"FIN\";\n __FlagValues[__FlagValues[\"STOP_SENDING\"] = 1] = \"STOP_SENDING\";\n __FlagValues[__FlagValues[\"RESET\"] = 2] = \"RESET\";\n __FlagValues[__FlagValues[\"FIN_ACK\"] = 3] = \"FIN_ACK\";\n })(__FlagValues || (__FlagValues = {}));\n (function (Flag) {\n Flag.codec = () => {\n return enumeration(__FlagValues);\n };\n })(Flag = Message.Flag || (Message.Flag = {}));\n let _codec;\n Message.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.flag != null) {\n w.uint32(8);\n Message.Flag.codec().encode(obj.flag, w);\n }\n if (obj.message != null) {\n w.uint32(18);\n w.bytes(obj.message);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.flag = Message.Flag.codec().decode(reader);\n break;\n case 2:\n obj.message = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Message.encode = (obj) => {\n return encodeMessage(obj, Message.codec());\n };\n Message.decode = (buf) => {\n return decodeMessage(buf, Message.codec());\n };\n})(Message || (Message = {}));\n//# sourceMappingURL=message.js.map","import { CodeError } from '@libp2p/interface';\nimport { AbstractStream } from '@libp2p/utils/abstract-stream';\nimport * as lengthPrefixed from 'it-length-prefixed';\nimport { pushable } from 'it-pushable';\nimport pDefer from 'p-defer';\nimport { pEvent, TimeoutError } from 'p-event';\nimport pTimeout from 'p-timeout';\nimport { raceSignal } from 'race-signal';\nimport { encodingLength } from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { Message } from './pb/message.js';\n/**\n * How much can be buffered to the DataChannel at once\n */\nexport const MAX_BUFFERED_AMOUNT = 2 * 1024 * 1024;\n/**\n * How long time we wait for the 'bufferedamountlow' event to be emitted\n */\nexport const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000;\n/**\n * Max message size that can be sent to the DataChannel. In browsers this is\n * 256KiB but go-libp2p and rust-libp2p only support 16KiB at the time of\n * writing.\n *\n * @see https://blog.mozilla.org/webrtc/large-data-channel-messages/\n * @see https://issues.webrtc.org/issues/40644524\n */\nexport const MAX_MESSAGE_SIZE = 16 * 1024;\n/**\n * max protobuf overhead:\n *\n * ```\n * [message-length][flag-field-id+type][flag-field-length][flag-field][message-field-id+type][message-field-length][message-field]\n * ```\n */\nfunction calculateProtobufOverhead(maxMessageSize = MAX_MESSAGE_SIZE) {\n // these have a fixed size\n const messageLength = encodingLength(maxMessageSize - encodingLength(maxMessageSize));\n const flagField = 1 + encodingLength(Object.keys(Message.Flag).length - 1); // id+type/value\n const messageFieldIdType = 1; // id+type\n const available = maxMessageSize - messageLength - flagField - messageFieldIdType;\n // let message-length/message-data fill the rest of the message\n const messageFieldLengthLength = encodingLength(available);\n return messageLength + flagField + messageFieldIdType + messageFieldLengthLength;\n}\n/**\n * The protobuf message overhead includes the maximum amount of all bytes in the\n * protobuf that aren't message field bytes\n */\nexport const PROTOBUF_OVERHEAD = calculateProtobufOverhead();\n/**\n * When closing streams we send a FIN then wait for the remote to\n * reply with a FIN_ACK. If that does not happen within this timeout\n * we close the stream anyway.\n */\nexport const FIN_ACK_TIMEOUT = 5000;\n/**\n * When sending data messages, if the channel is not in the \"open\" state, wait\n * this long for the \"open\" event to fire.\n */\nexport const OPEN_TIMEOUT = 5000;\nexport class WebRTCStream extends AbstractStream {\n /**\n * The data channel used to send and receive data\n */\n channel;\n /**\n * push data from the underlying datachannel to the length prefix decoder\n * and then the protobuf decoder.\n */\n incomingData;\n maxBufferedAmount;\n bufferedAmountLowEventTimeout;\n /**\n * The maximum size of a message in bytes\n */\n maxMessageSize;\n /**\n * When this promise is resolved, the remote has sent us a FIN flag\n */\n receiveFinAck;\n finAckTimeout;\n openTimeout;\n constructor(init) {\n // override onEnd to send/receive FIN_ACK before closing the stream\n const originalOnEnd = init.onEnd;\n init.onEnd = (err) => {\n this.log.trace('readable and writeable ends closed', this.status);\n void Promise.resolve(async () => {\n if (this.timeline.abort != null || this.timeline.reset !== null) {\n return;\n }\n // wait for FIN_ACK if we haven't received it already\n try {\n await pTimeout(this.receiveFinAck.promise, {\n milliseconds: this.finAckTimeout\n });\n }\n catch (err) {\n this.log.error('error receiving FIN_ACK', err);\n }\n })\n .then(() => {\n // stop processing incoming messages\n this.incomingData.end();\n // final cleanup\n originalOnEnd?.(err);\n })\n .catch(err => {\n this.log.error('error ending stream', err);\n });\n };\n super(init);\n this.channel = init.channel;\n this.channel.binaryType = 'arraybuffer';\n this.incomingData = pushable();\n this.bufferedAmountLowEventTimeout = init.bufferedAmountLowEventTimeout ?? BUFFERED_AMOUNT_LOW_TIMEOUT;\n this.maxBufferedAmount = init.maxBufferedAmount ?? MAX_BUFFERED_AMOUNT;\n this.maxMessageSize = (init.maxMessageSize ?? MAX_MESSAGE_SIZE) - PROTOBUF_OVERHEAD;\n this.receiveFinAck = pDefer();\n this.finAckTimeout = init.closeTimeout ?? FIN_ACK_TIMEOUT;\n this.openTimeout = init.openTimeout ?? OPEN_TIMEOUT;\n // set up initial state\n switch (this.channel.readyState) {\n case 'open':\n this.timeline.open = new Date().getTime();\n break;\n case 'closed':\n case 'closing':\n if (this.timeline.close === undefined || this.timeline.close === 0) {\n this.timeline.close = Date.now();\n }\n break;\n case 'connecting':\n // noop\n break;\n default:\n this.log.error('unknown datachannel state %s', this.channel.readyState);\n throw new CodeError('Unknown datachannel state', 'ERR_INVALID_STATE');\n }\n // handle RTCDataChannel events\n this.channel.onopen = (_evt) => {\n this.timeline.open = new Date().getTime();\n };\n this.channel.onclose = (_evt) => {\n // if the channel has closed we'll never receive a FIN_ACK so resolve the\n // promise so we don't try to wait later\n this.receiveFinAck.resolve();\n void this.close().catch(err => {\n this.log.error('error closing stream after channel closed', err);\n });\n };\n this.channel.onerror = (evt) => {\n const err = evt.error;\n this.abort(err);\n };\n this.channel.onmessage = async (event) => {\n const { data } = event;\n if (data === null || data.byteLength === 0) {\n return;\n }\n this.incomingData.push(new Uint8Array(data, 0, data.byteLength));\n };\n const self = this;\n // pipe framed protobuf messages through a length prefixed decoder, and\n // surface data from the `Message.message` field through a source.\n Promise.resolve().then(async () => {\n for await (const buf of lengthPrefixed.decode(this.incomingData)) {\n const message = self.processIncomingProtobuf(buf);\n if (message != null) {\n self.sourcePush(new Uint8ArrayList(message));\n }\n }\n })\n .catch(err => {\n this.log.error('error processing incoming data channel messages', err);\n });\n }\n sendNewStream() {\n // opening new streams is handled by WebRTC so this is a noop\n }\n async _sendMessage(data, checkBuffer = true) {\n if (checkBuffer && this.channel.bufferedAmount > this.maxBufferedAmount) {\n try {\n this.log('channel buffer is %d, wait for \"bufferedamountlow\" event', this.channel.bufferedAmount);\n await pEvent(this.channel, 'bufferedamountlow', { timeout: this.bufferedAmountLowEventTimeout });\n }\n catch (err) {\n if (err instanceof TimeoutError) {\n throw new CodeError(`Timed out waiting for DataChannel buffer to clear after ${this.bufferedAmountLowEventTimeout}ms`, 'ERR_BUFFER_CLEAR_TIMEOUT');\n }\n throw err;\n }\n }\n if (this.channel.readyState === 'closed' || this.channel.readyState === 'closing') {\n throw new CodeError(`Invalid datachannel state - ${this.channel.readyState}`, 'ERR_INVALID_STATE');\n }\n if (this.channel.readyState !== 'open') {\n this.log('channel state is \"%s\" and not \"open\", waiting for \"open\" event before sending data', this.channel.readyState);\n await pEvent(this.channel, 'open', { timeout: this.openTimeout });\n this.log('channel state is now \"%s\", sending data', this.channel.readyState);\n }\n // send message without copying data\n this.channel.send(data.subarray());\n }\n async sendData(data) {\n // sending messages is an async operation so use a copy of the list as it\n // may be changed beneath us\n data = data.sublist();\n while (data.byteLength > 0) {\n const toSend = Math.min(data.byteLength, this.maxMessageSize);\n const buf = data.subarray(0, toSend);\n const msgbuf = Message.encode({ message: buf });\n const sendbuf = lengthPrefixed.encode.single(msgbuf);\n await this._sendMessage(sendbuf);\n data.consume(toSend);\n }\n }\n async sendReset() {\n await this._sendFlag(Message.Flag.RESET);\n }\n async sendCloseWrite(options) {\n const sent = await this._sendFlag(Message.Flag.FIN);\n if (sent) {\n this.log.trace('awaiting FIN_ACK');\n try {\n await raceSignal(this.receiveFinAck.promise, options?.signal, {\n errorMessage: 'sending close-write was aborted before FIN_ACK was received',\n errorCode: 'ERR_FIN_ACK_NOT_RECEIVED'\n });\n }\n catch (err) {\n this.log.error('failed to await FIN_ACK', err);\n }\n }\n else {\n this.log.trace('sending FIN failed, not awaiting FIN_ACK');\n }\n // if we've attempted to receive a FIN_ACK, do not try again\n this.receiveFinAck.resolve();\n }\n async sendCloseRead() {\n await this._sendFlag(Message.Flag.STOP_SENDING);\n }\n /**\n * Handle incoming\n */\n processIncomingProtobuf(buffer) {\n const message = Message.decode(buffer);\n if (message.flag !== undefined) {\n this.log.trace('incoming flag %s, write status \"%s\", read status \"%s\"', message.flag, this.writeStatus, this.readStatus);\n if (message.flag === Message.Flag.FIN) {\n // We should expect no more data from the remote, stop reading\n this.remoteCloseWrite();\n this.log.trace('sending FIN_ACK');\n void this._sendFlag(Message.Flag.FIN_ACK)\n .catch(err => {\n this.log.error('error sending FIN_ACK immediately', err);\n });\n }\n if (message.flag === Message.Flag.RESET) {\n // Stop reading and writing to the stream immediately\n this.reset();\n }\n if (message.flag === Message.Flag.STOP_SENDING) {\n // The remote has stopped reading\n this.remoteCloseRead();\n }\n if (message.flag === Message.Flag.FIN_ACK) {\n this.log.trace('received FIN_ACK');\n this.receiveFinAck.resolve();\n }\n }\n // ignore data messages if we've closed the readable end already\n if (this.readStatus === 'ready') {\n return message.message;\n }\n }\n async _sendFlag(flag) {\n if (this.channel.readyState !== 'open') {\n // flags can be sent while we or the remote are closing the datachannel so\n // if the channel isn't open, don't try to send it but return false to let\n // the caller know and act if they need to\n this.log.trace('not sending flag %s because channel is \"%s\" and not \"open\"', this.channel.readyState, flag.toString());\n return false;\n }\n this.log.trace('sending flag %s', flag.toString());\n const msgbuf = Message.encode({ flag });\n const prefixedBuf = lengthPrefixed.encode.single(msgbuf);\n try {\n await this._sendMessage(prefixedBuf, false);\n return true;\n }\n catch (err) {\n this.log.error('could not send flag %s', flag.toString(), err);\n }\n return false;\n }\n}\nexport function createStream(options) {\n const { channel, direction } = options;\n return new WebRTCStream({\n id: direction === 'inbound' ? (`i${channel.id}`) : `r${channel.id}`,\n log: options.logger.forComponent(`libp2p:webrtc:stream:${direction}:${channel.id}`),\n ...options\n });\n}\n//# sourceMappingURL=stream.js.map","import { createStream } from './stream.js';\nimport { drainAndClose, nopSink, nopSource } from './util.js';\nconst PROTOCOL = '/webrtc';\nexport class DataChannelMuxerFactory {\n protocol;\n /**\n * WebRTC Peer Connection\n */\n peerConnection;\n bufferedStreams = [];\n metrics;\n dataChannelOptions;\n components;\n log;\n constructor(components, init) {\n this.components = components;\n this.peerConnection = init.peerConnection;\n this.metrics = init.metrics;\n this.protocol = init.protocol ?? PROTOCOL;\n this.dataChannelOptions = init.dataChannelOptions ?? {};\n this.log = components.logger.forComponent('libp2p:webrtc:datachannelmuxerfactory');\n // store any datachannels opened before upgrade has been completed\n this.peerConnection.ondatachannel = ({ channel }) => {\n this.log.trace('incoming early datachannel with channel id %d and label \"%s\"', channel.id);\n // 'init' channel is only used during connection establishment\n if (channel.label === 'init') {\n this.log.trace('closing early init channel');\n channel.close();\n return;\n }\n // @ts-expect-error fields are set below\n const bufferedStream = {};\n const stream = createStream({\n channel,\n direction: 'inbound',\n onEnd: (err) => {\n bufferedStream.onEnd(err);\n },\n logger: components.logger,\n ...this.dataChannelOptions\n });\n bufferedStream.stream = stream;\n bufferedStream.channel = channel;\n bufferedStream.onEnd = () => {\n this.bufferedStreams = this.bufferedStreams.filter(s => s.stream.id !== stream.id);\n };\n this.bufferedStreams.push(bufferedStream);\n };\n }\n createStreamMuxer(init) {\n return new DataChannelMuxer(this.components, {\n ...init,\n peerConnection: this.peerConnection,\n dataChannelOptions: this.dataChannelOptions,\n metrics: this.metrics,\n streams: this.bufferedStreams,\n protocol: this.protocol\n });\n }\n}\n/**\n * A libp2p data channel stream muxer\n */\nexport class DataChannelMuxer {\n init;\n /**\n * Array of streams in the data channel\n */\n streams;\n protocol;\n log;\n peerConnection;\n dataChannelOptions;\n metrics;\n logger;\n constructor(components, init) {\n this.init = init;\n this.log = components.logger.forComponent('libp2p:webrtc:muxer');\n this.logger = components.logger;\n this.streams = init.streams.map(s => s.stream);\n this.peerConnection = init.peerConnection;\n this.protocol = init.protocol ?? PROTOCOL;\n this.metrics = init.metrics;\n this.dataChannelOptions = init.dataChannelOptions ?? {};\n /**\n * Fired when a data channel has been added to the connection has been\n * added by the remote peer.\n *\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/datachannel_event}\n */\n this.peerConnection.ondatachannel = ({ channel }) => {\n this.log.trace('incoming datachannel with channel id %d', channel.id);\n // 'init' channel is only used during connection establishment\n if (channel.label === 'init') {\n this.log.trace('closing init channel');\n channel.close();\n return;\n }\n const stream = createStream({\n channel,\n direction: 'inbound',\n onEnd: () => {\n this.log('incoming channel %s ended with state %s', channel.id, channel.readyState);\n this.#onStreamEnd(stream, channel);\n },\n logger: this.logger,\n ...this.dataChannelOptions\n });\n this.streams.push(stream);\n this.metrics?.increment({ incoming_stream: true });\n init?.onIncomingStream?.(stream);\n };\n // the DataChannelMuxer constructor is called during set up of the\n // connection by the upgrader.\n //\n // If we invoke `init.onIncomingStream` immediately, the connection object\n // will not be set up yet so add a tiny delay before letting the\n // connection know about early streams\n if (this.init.streams.length > 0) {\n queueMicrotask(() => {\n this.init.streams.forEach(bufferedStream => {\n bufferedStream.onEnd = () => {\n this.log('incoming early channel %s ended with state %s', bufferedStream.channel.id, bufferedStream.channel.readyState);\n this.#onStreamEnd(bufferedStream.stream, bufferedStream.channel);\n };\n this.metrics?.increment({ incoming_stream: true });\n this.init?.onIncomingStream?.(bufferedStream.stream);\n });\n });\n }\n }\n #onStreamEnd(stream, channel) {\n this.log.trace('stream %s %s %s onEnd', stream.direction, stream.id, stream.protocol);\n drainAndClose(channel, `${stream.direction} ${stream.id} ${stream.protocol}`, this.dataChannelOptions.drainTimeout, {\n log: this.log\n });\n this.streams = this.streams.filter(s => s.id !== stream.id);\n this.metrics?.increment({ stream_end: true });\n this.init?.onStreamEnd?.(stream);\n }\n /**\n * Gracefully close all tracked streams and stop the muxer\n */\n async close(options) {\n try {\n await Promise.all(this.streams.map(async (stream) => stream.close(options)));\n }\n catch (err) {\n this.abort(err);\n }\n }\n /**\n * Abort all tracked streams and stop the muxer\n */\n abort(err) {\n for (const stream of this.streams) {\n stream.abort(err);\n }\n }\n /**\n * The stream source, a no-op as the transport natively supports multiplexing\n */\n source = nopSource();\n /**\n * The stream destination, a no-op as the transport natively supports multiplexing\n */\n sink = nopSink;\n newStream() {\n // The spec says the label SHOULD be an empty string: https://github.com/libp2p/specs/blob/master/webrtc/README.md#rtcdatachannel-label\n const channel = this.peerConnection.createDataChannel('');\n this.log.trace('opened outgoing datachannel with channel id %s', channel.id);\n const stream = createStream({\n channel,\n direction: 'outbound',\n onEnd: () => {\n this.log('outgoing channel %s ended with state %s', channel.id, channel.readyState);\n this.#onStreamEnd(stream, channel);\n },\n logger: this.logger,\n ...this.dataChannelOptions\n });\n this.streams.push(stream);\n this.metrics?.increment({ outgoing_stream: true });\n return stream;\n }\n}\n//# sourceMappingURL=muxer.js.map","export const RTCPeerConnection = globalThis.RTCPeerConnection;\nexport const RTCSessionDescription = globalThis.RTCSessionDescription;\nexport const RTCIceCandidate = globalThis.RTCIceCandidate;\n//# sourceMappingURL=index.browser.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Message;\n(function (Message) {\n let Type;\n (function (Type) {\n Type[\"SDP_OFFER\"] = \"SDP_OFFER\";\n Type[\"SDP_ANSWER\"] = \"SDP_ANSWER\";\n Type[\"ICE_CANDIDATE\"] = \"ICE_CANDIDATE\";\n })(Type = Message.Type || (Message.Type = {}));\n let __TypeValues;\n (function (__TypeValues) {\n __TypeValues[__TypeValues[\"SDP_OFFER\"] = 0] = \"SDP_OFFER\";\n __TypeValues[__TypeValues[\"SDP_ANSWER\"] = 1] = \"SDP_ANSWER\";\n __TypeValues[__TypeValues[\"ICE_CANDIDATE\"] = 2] = \"ICE_CANDIDATE\";\n })(__TypeValues || (__TypeValues = {}));\n (function (Type) {\n Type.codec = () => {\n return enumeration(__TypeValues);\n };\n })(Type = Message.Type || (Message.Type = {}));\n let _codec;\n Message.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null) {\n w.uint32(8);\n Message.Type.codec().encode(obj.type, w);\n }\n if (obj.data != null) {\n w.uint32(18);\n w.string(obj.data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.type = Message.Type.codec().decode(reader);\n break;\n case 2:\n obj.data = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Message.encode = (obj) => {\n return encodeMessage(obj, Message.codec());\n };\n Message.decode = (buf) => {\n return decodeMessage(buf, Message.codec());\n };\n})(Message || (Message = {}));\n//# sourceMappingURL=message.js.map","import { CodeError } from '@libp2p/interface';\nimport pDefer from 'p-defer';\nimport { CustomProgressEvent } from 'progress-events';\nimport { isFirefox } from '../util.js';\nimport { RTCIceCandidate } from '../webrtc/index.js';\nimport { Message } from './pb/message.js';\nexport const readCandidatesUntilConnected = async (pc, stream, options) => {\n try {\n const connectedPromise = pDefer();\n resolveOnConnected(pc, connectedPromise);\n // read candidates until we are connected or we reach the end of the stream\n while (true) {\n // if we connect, stop trying to read from the stream\n const message = await Promise.race([\n connectedPromise.promise,\n stream.read({\n signal: options.signal\n }).catch(() => { })\n ]);\n // stream ended or we became connected\n if (message == null) {\n // throw if we timed out\n options.signal?.throwIfAborted();\n break;\n }\n if (message.type !== Message.Type.ICE_CANDIDATE) {\n throw new CodeError('ICE candidate message expected', 'ERR_NOT_ICE_CANDIDATE');\n }\n const candidateInit = JSON.parse(message.data ?? 'null');\n // an empty string means this generation of candidates is complete, a null\n // candidate means candidate gathering has finished\n // see - https://www.w3.org/TR/webrtc/#rtcpeerconnectioniceevent\n if (candidateInit === '' || candidateInit === null) {\n options.onProgress?.(new CustomProgressEvent('webrtc:end-of-ice-candidates'));\n options.log.trace('end-of-candidates received');\n continue;\n }\n const candidate = new RTCIceCandidate(candidateInit);\n options.log.trace('%s received new ICE candidate %o', options.direction, candidateInit);\n try {\n options.onProgress?.(new CustomProgressEvent('webrtc:add-ice-candidate', candidate.candidate));\n await pc.addIceCandidate(candidate);\n }\n catch (err) {\n options.log.error('%s bad candidate received', options.direction, candidateInit, err);\n }\n }\n }\n catch (err) {\n options.log.error('%s error parsing ICE candidate', options.direction, err);\n if (options.signal?.aborted === true) {\n throw err;\n }\n }\n};\nfunction getConnectionState(pc) {\n return isFirefox ? pc.iceConnectionState : pc.connectionState;\n}\nfunction resolveOnConnected(pc, promise) {\n pc[isFirefox ? 'oniceconnectionstatechange' : 'onconnectionstatechange'] = (_) => {\n switch (getConnectionState(pc)) {\n case 'connected':\n promise.resolve();\n break;\n case 'failed':\n case 'disconnected':\n case 'closed':\n promise.reject(new CodeError('RTCPeerConnection was closed', 'ERR_CONNECTION_CLOSED_BEFORE_CONNECTED'));\n break;\n default:\n break;\n }\n };\n}\n//# sourceMappingURL=util.js.map","import { CodeError } from '@libp2p/interface';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { pbStream } from 'it-protobuf-stream';\nimport { CustomProgressEvent } from 'progress-events';\nimport { DataChannelMuxerFactory } from '../muxer.js';\nimport { RTCPeerConnection, RTCSessionDescription } from '../webrtc/index.js';\nimport { Message } from './pb/message.js';\nimport { SIGNALING_PROTO_ID, splitAddr } from './transport.js';\nimport { readCandidatesUntilConnected } from './util.js';\nexport async function initiateConnection({ rtcConfiguration, dataChannel, signal, metrics, multiaddr: ma, connectionManager, transportManager, log, logger, onProgress }) {\n const { baseAddr } = splitAddr(ma);\n metrics?.dialerEvents.increment({ open: true });\n log.trace('dialing base address: %a', baseAddr);\n const relayPeer = baseAddr.getPeerId();\n if (relayPeer == null) {\n throw new CodeError('Relay peer was missing', 'ERR_INVALID_ADDRESS');\n }\n const connections = connectionManager.getConnections(peerIdFromString(relayPeer));\n let connection;\n let shouldCloseConnection = false;\n if (connections.length === 0) {\n onProgress?.(new CustomProgressEvent('webrtc:dial-relay'));\n // use the transport manager to open a connection. Initiating a WebRTC\n // connection takes place in the context of a dial - if we use the\n // connection manager instead we can end up joining our own dial context\n connection = await transportManager.dial(baseAddr, {\n signal,\n onProgress\n });\n // this connection is unmanaged by the connection manager so we should\n // close it when we are done\n shouldCloseConnection = true;\n }\n else {\n onProgress?.(new CustomProgressEvent('webrtc:reuse-relay-connection'));\n connection = connections[0];\n }\n try {\n onProgress?.(new CustomProgressEvent('webrtc:open-signaling-stream'));\n const stream = await connection.newStream(SIGNALING_PROTO_ID, {\n signal,\n runOnTransientConnection: true\n });\n const messageStream = pbStream(stream).pb(Message);\n const peerConnection = new RTCPeerConnection(rtcConfiguration);\n const muxerFactory = new DataChannelMuxerFactory({\n logger\n }, {\n peerConnection,\n dataChannelOptions: dataChannel\n });\n try {\n // we create the channel so that the RTCPeerConnection has a component for\n // which to collect candidates. The label is not relevant to connection\n // initiation but can be useful for debugging\n const channel = peerConnection.createDataChannel('init');\n // setup callback to write ICE candidates to the remote peer\n peerConnection.onicecandidate = ({ candidate }) => {\n // a null candidate means end-of-candidates, an empty string candidate\n // means end-of-candidates for this generation, otherwise this should\n // be a valid candidate object\n // see - https://www.w3.org/TR/webrtc/#rtcpeerconnectioniceevent\n const data = JSON.stringify(candidate?.toJSON() ?? null);\n log.trace('initiator sending ICE candidate %o', candidate);\n void messageStream.write({\n type: Message.Type.ICE_CANDIDATE,\n data\n }, {\n signal\n })\n .catch(err => {\n log.error('error sending ICE candidate', err);\n });\n };\n peerConnection.onicecandidateerror = (event) => {\n log.error('initiator ICE candidate error', event);\n };\n // create an offer\n const offerSdp = await peerConnection.createOffer().catch(err => {\n log.error('could not execute createOffer', err);\n throw new CodeError('Failed to set createOffer', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n log.trace('initiator send SDP offer %s', offerSdp.sdp);\n onProgress?.(new CustomProgressEvent('webrtc:send-sdp-offer'));\n // write the offer to the stream\n await messageStream.write({ type: Message.Type.SDP_OFFER, data: offerSdp.sdp }, {\n signal\n });\n // set offer as local description\n await peerConnection.setLocalDescription(offerSdp).catch(err => {\n log.error('could not execute setLocalDescription', err);\n throw new CodeError('Failed to set localDescription', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n onProgress?.(new CustomProgressEvent('webrtc:read-sdp-answer'));\n // read answer\n const answerMessage = await messageStream.read({\n signal\n });\n if (answerMessage.type !== Message.Type.SDP_ANSWER) {\n throw new CodeError('Remote should send an SDP answer', 'ERR_SDP_HANDSHAKE_FAILED');\n }\n log.trace('initiator receive SDP answer %s', answerMessage.data);\n const answerSdp = new RTCSessionDescription({ type: 'answer', sdp: answerMessage.data });\n await peerConnection.setRemoteDescription(answerSdp).catch(err => {\n log.error('could not execute setRemoteDescription', err);\n throw new CodeError('Failed to set remoteDescription', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n log.trace('initiator read candidates until connected');\n onProgress?.(new CustomProgressEvent('webrtc:read-ice-candidates'));\n await readCandidatesUntilConnected(peerConnection, messageStream, {\n direction: 'initiator',\n signal,\n log,\n onProgress\n });\n log.trace('initiator connected, closing init channel');\n channel.close();\n onProgress?.(new CustomProgressEvent('webrtc:close-signaling-stream'));\n log.trace('closing signaling channel');\n await stream.close({\n signal\n });\n log.trace('initiator connected to remote address %s', ma);\n return {\n remoteAddress: ma,\n peerConnection,\n muxerFactory\n };\n }\n catch (err) {\n log.error('outgoing signaling error', err);\n peerConnection.close();\n stream.abort(err);\n throw err;\n }\n finally {\n peerConnection.onicecandidate = null;\n peerConnection.onicecandidateerror = null;\n }\n }\n finally {\n // if we had to open a connection to perform the SDP handshake\n // close it because it's not tracked by the connection manager\n if (shouldCloseConnection) {\n try {\n await connection.close({\n signal\n });\n }\n catch (err) {\n connection.abort(err);\n }\n }\n }\n}\n//# sourceMappingURL=initiate-connection.js.map","import { TypedEventEmitter } from '@libp2p/interface';\nimport { Circuit } from '@multiformats/mafmt';\nexport class WebRTCPeerListener extends TypedEventEmitter {\n peerId;\n transportManager;\n shutdownController;\n constructor(components, init) {\n super();\n this.peerId = components.peerId;\n this.transportManager = components.transportManager;\n this.shutdownController = init.shutdownController;\n }\n async listen() {\n this.safeDispatchEvent('listening', {});\n }\n getAddrs() {\n return this.transportManager\n .getListeners()\n .filter(l => l !== this)\n .map(l => l.getAddrs()\n .filter(ma => Circuit.matches(ma))\n .map(ma => {\n return ma.encapsulate(`/webrtc/p2p/${this.peerId}`);\n }))\n .flat();\n }\n async close() {\n this.shutdownController.abort();\n this.safeDispatchEvent('close', {});\n }\n}\n//# sourceMappingURL=listener.js.map","import { CodeError } from '@libp2p/interface';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { pbStream } from 'it-protobuf-stream';\nimport { RTCSessionDescription } from '../webrtc/index.js';\nimport { Message } from './pb/message.js';\nimport { readCandidatesUntilConnected } from './util.js';\nexport async function handleIncomingStream({ peerConnection, stream, signal, connection, log }) {\n log.trace('new inbound signaling stream');\n const messageStream = pbStream(stream).pb(Message);\n try {\n // candidate callbacks\n peerConnection.onicecandidate = ({ candidate }) => {\n // a null candidate means end-of-candidates, an empty string candidate\n // means end-of-candidates for this generation, otherwise this should\n // be a valid candidate object\n // see - https://www.w3.org/TR/webrtc/#rtcpeerconnectioniceevent\n const data = JSON.stringify(candidate?.toJSON() ?? null);\n log.trace('recipient sending ICE candidate %s', data);\n messageStream.write({\n type: Message.Type.ICE_CANDIDATE,\n data\n }, {\n signal\n })\n .catch(err => {\n log.error('error sending ICE candidate', err);\n });\n };\n // read an SDP offer\n const pbOffer = await messageStream.read({\n signal\n });\n if (pbOffer.type !== Message.Type.SDP_OFFER) {\n throw new CodeError(`expected message type SDP_OFFER, received: ${pbOffer.type ?? 'undefined'} `, 'ERR_SDP_HANDSHAKE_FAILED');\n }\n log.trace('recipient receive SDP offer %s', pbOffer.data);\n const offer = new RTCSessionDescription({\n type: 'offer',\n sdp: pbOffer.data\n });\n await peerConnection.setRemoteDescription(offer).catch(err => {\n log.error('could not execute setRemoteDescription', err);\n throw new CodeError('Failed to set remoteDescription', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n // create and write an SDP answer\n const answer = await peerConnection.createAnswer().catch(err => {\n log.error('could not execute createAnswer', err);\n throw new CodeError('Failed to create answer', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n log.trace('recipient send SDP answer %s', answer.sdp);\n // write the answer to the remote\n await messageStream.write({ type: Message.Type.SDP_ANSWER, data: answer.sdp }, {\n signal\n });\n await peerConnection.setLocalDescription(answer).catch(err => {\n log.error('could not execute setLocalDescription', err);\n throw new CodeError('Failed to set localDescription', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n log.trace('recipient read candidates until connected');\n // wait until candidates are connected\n await readCandidatesUntilConnected(peerConnection, messageStream, {\n direction: 'recipient',\n signal,\n log\n });\n }\n catch (err) {\n if (peerConnection.connectionState !== 'connected') {\n log.error('error while handling signaling stream from peer %a', connection.remoteAddr, err);\n peerConnection.close();\n throw err;\n }\n else {\n log('error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected', connection.remoteAddr, err);\n }\n }\n const remoteAddress = multiaddr(`/webrtc/p2p/${connection.remoteAddr.getPeerId()}`);\n log.trace('recipient connected to remote address %s', remoteAddress);\n return { remoteAddress };\n}\n//# sourceMappingURL=signaling-stream-handler.js.map","import { CodeError, serviceCapabilities, serviceDependencies, setMaxListeners, transportSymbol } from '@libp2p/interface';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { WebRTC } from '@multiformats/multiaddr-matcher';\nimport { codes } from '../error.js';\nimport { WebRTCMultiaddrConnection } from '../maconn.js';\nimport { DataChannelMuxerFactory } from '../muxer.js';\nimport { getRtcConfiguration } from '../util.js';\nimport { RTCPeerConnection } from '../webrtc/index.js';\nimport { initiateConnection } from './initiate-connection.js';\nimport { WebRTCPeerListener } from './listener.js';\nimport { handleIncomingStream } from './signaling-stream-handler.js';\nconst WEBRTC_TRANSPORT = '/webrtc';\nconst CIRCUIT_RELAY_TRANSPORT = '/p2p-circuit';\nexport const SIGNALING_PROTO_ID = '/webrtc-signaling/0.0.1';\nconst INBOUND_CONNECTION_TIMEOUT = 30 * 1000;\nexport class WebRTCTransport {\n components;\n init;\n log;\n _started = false;\n metrics;\n shutdownController;\n constructor(components, init = {}) {\n this.components = components;\n this.init = init;\n this.log = components.logger.forComponent('libp2p:webrtc');\n this.shutdownController = new AbortController();\n setMaxListeners(Infinity, this.shutdownController.signal);\n if (components.metrics != null) {\n this.metrics = {\n dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_dialer_events_total', {\n label: 'event',\n help: 'Total count of WebRTC dialer events by type'\n }),\n listenerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_listener_events_total', {\n label: 'event',\n help: 'Total count of WebRTC listener events by type'\n })\n };\n }\n }\n [transportSymbol] = true;\n [Symbol.toStringTag] = '@libp2p/webrtc';\n [serviceCapabilities] = [\n '@libp2p/transport'\n ];\n [serviceDependencies] = [\n '@libp2p/identify',\n '@libp2p/circuit-relay-v2-transport'\n ];\n isStarted() {\n return this._started;\n }\n async start() {\n await this.components.registrar.handle(SIGNALING_PROTO_ID, (data) => {\n this._onProtocol(data).catch(err => { this.log.error('failed to handle incoming connect from %p', data.connection.remotePeer, err); });\n }, {\n runOnTransientConnection: true\n });\n this._started = true;\n }\n async stop() {\n await this.components.registrar.unhandle(SIGNALING_PROTO_ID);\n this._started = false;\n }\n createListener(options) {\n return new WebRTCPeerListener(this.components, {\n shutdownController: this.shutdownController\n });\n }\n /**\n * Filter check for all Multiaddrs that this transport can listen on\n */\n listenFilter(multiaddrs) {\n return multiaddrs.filter(WebRTC.exactMatch);\n }\n /**\n * Filter check for all Multiaddrs that this transport can dial\n */\n dialFilter(multiaddrs) {\n return this.listenFilter(multiaddrs);\n }\n /*\n * dial connects to a remote via the circuit relay or any other protocol\n * and proceeds to upgrade to a webrtc connection.\n * multiaddr of the form: /webrtc/p2p/\n * For a circuit relay, this will be of the form\n * /p2p//p2p-circuit/webrtc/p2p/\n */\n async dial(ma, options) {\n this.log.trace('dialing address: %a', ma);\n const { remoteAddress, peerConnection, muxerFactory } = await initiateConnection({\n rtcConfiguration: await getRtcConfiguration(this.init.rtcConfiguration),\n dataChannel: this.init.dataChannel,\n multiaddr: ma,\n dataChannelOptions: this.init.dataChannel,\n signal: options.signal,\n connectionManager: this.components.connectionManager,\n transportManager: this.components.transportManager,\n log: this.log,\n logger: this.components.logger,\n onProgress: options.onProgress\n });\n const webRTCConn = new WebRTCMultiaddrConnection(this.components, {\n peerConnection,\n timeline: { open: Date.now() },\n remoteAddr: remoteAddress,\n metrics: this.metrics?.dialerEvents\n });\n const connection = await options.upgrader.upgradeOutbound(webRTCConn, {\n skipProtection: true,\n skipEncryption: true,\n muxerFactory,\n onProgress: options.onProgress\n });\n // close the connection on shut down\n this._closeOnShutdown(peerConnection, webRTCConn);\n return connection;\n }\n async _onProtocol({ connection, stream }) {\n const signal = AbortSignal.timeout(this.init.inboundConnectionTimeout ?? INBOUND_CONNECTION_TIMEOUT);\n const peerConnection = new RTCPeerConnection(await getRtcConfiguration(this.init.rtcConfiguration));\n const muxerFactory = new DataChannelMuxerFactory(this.components, {\n peerConnection,\n dataChannelOptions: this.init.dataChannel\n });\n try {\n const { remoteAddress } = await handleIncomingStream({\n peerConnection,\n connection,\n stream,\n signal,\n log: this.log\n });\n // close the stream if SDP messages have been exchanged successfully\n await stream.close({\n signal\n });\n const webRTCConn = new WebRTCMultiaddrConnection(this.components, {\n peerConnection,\n timeline: { open: (new Date()).getTime() },\n remoteAddr: remoteAddress,\n metrics: this.metrics?.listenerEvents\n });\n await this.components.upgrader.upgradeInbound(webRTCConn, {\n skipEncryption: true,\n skipProtection: true,\n muxerFactory\n });\n // close the connection on shut down\n this._closeOnShutdown(peerConnection, webRTCConn);\n }\n catch (err) {\n this.log.error('incoming signaling error', err);\n peerConnection.close();\n stream.abort(err);\n throw err;\n }\n }\n _closeOnShutdown(pc, webRTCConn) {\n // close the connection on shut down\n const shutDownListener = () => {\n webRTCConn.close()\n .catch(err => {\n this.log.error('could not close WebRTCMultiaddrConnection', err);\n });\n };\n this.shutdownController.signal.addEventListener('abort', shutDownListener);\n pc.addEventListener('close', () => {\n this.shutdownController.signal.removeEventListener('abort', shutDownListener);\n });\n }\n}\nexport function splitAddr(ma) {\n const addrs = ma.toString().split(WEBRTC_TRANSPORT + '/');\n if (addrs.length !== 2) {\n throw new CodeError('webrtc protocol was not present in multiaddr', codes.ERR_INVALID_MULTIADDR);\n }\n if (!addrs[0].includes(CIRCUIT_RELAY_TRANSPORT)) {\n throw new CodeError('p2p-circuit protocol was not present in multiaddr', codes.ERR_INVALID_MULTIADDR);\n }\n // look for remote peerId\n let remoteAddr = multiaddr(addrs[0]);\n const destination = multiaddr('/' + addrs[1]);\n const destinationIdString = destination.getPeerId();\n if (destinationIdString == null) {\n throw new CodeError('destination peer id was missing', codes.ERR_INVALID_MULTIADDR);\n }\n const lastProtoInRemote = remoteAddr.protos().pop();\n if (lastProtoInRemote === undefined) {\n throw new CodeError('invalid multiaddr', codes.ERR_INVALID_MULTIADDR);\n }\n if (lastProtoInRemote.name !== 'p2p') {\n remoteAddr = remoteAddr.encapsulate(`/p2p/${destinationIdString}`);\n }\n return { baseAddr: remoteAddr, peerId: peerIdFromString(destinationIdString) };\n}\n//# sourceMappingURL=transport.js.map","export const NOISE_MSG_MAX_LENGTH_BYTES = 65535;\nexport const NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG = NOISE_MSG_MAX_LENGTH_BYTES - 16;\nexport const DUMP_SESSION_KEYS = Boolean(globalThis.process?.env?.DUMP_SESSION_KEYS);\n//# sourceMappingURL=constants.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`positive integer expected, not ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`boolean expected, not ${b}`);\n}\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nfunction bytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('hash must be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */\nimport { bytes as abytes, isBytes } from './_assert.js';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u16 = (arr) => new Uint16Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 2));\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// big-endian hardware is rare. Just in case someone still decides to run ciphers:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`string expected, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * @example bytesToUtf8(new Uint8Array([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n else if (isBytes(data))\n data = copyBytes(data);\n else\n throw new Error(`Uint8Array expected, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\nexport function checkOpts(defaults, opts) {\n if (opts == null || typeof opts !== 'object')\n throw new Error('options must be defined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n// For runtime check if class implements interface\nexport class Hash {\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nexport const wrapCipher = (params, c) => {\n Object.assign(c, params);\n return c;\n};\n// Polyfill for Safari 14\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\nexport function u64Lengths(ciphertext, AAD) {\n const num = new Uint8Array(16);\n const view = createView(num);\n setBigUint64(view, 0, BigInt(AAD ? AAD.length : 0), true);\n setBigUint64(view, 8, BigInt(ciphertext.length), true);\n return num;\n}\n// Is byte array aligned to 4 byte offset (u32)?\nexport function isAligned32(bytes) {\n return bytes.byteOffset % 4 === 0;\n}\n// copy bytes to new u8a (aligned). Because Buffer.slice is broken.\nexport function copyBytes(bytes) {\n return Uint8Array.from(bytes);\n}\nexport function clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n//# sourceMappingURL=utils.js.map","// Basic utils for ARX (add-rotate-xor) salsa and chacha ciphers.\nimport { bool as abool, bytes as abytes, number as anumber } from './_assert.js';\nimport { checkOpts, clean, copyBytes, u32 } from './utils.js';\n/*\nRFC8439 requires multi-step cipher stream, where\nauthKey starts with counter: 0, actual msg with counter: 1.\n\nFor this, we need a way to re-use nonce / counter:\n\n const counter = new Uint8Array(4);\n chacha(..., counter, ...); // counter is now 1\n chacha(..., counter, ...); // counter is now 2\n\nThis is complicated:\n\n- 32-bit counters are enough, no need for 64-bit: max ArrayBuffer size in JS is 4GB\n- Original papers don't allow mutating counters\n- Counter overflow is undefined [^1]\n- Idea A: allow providing (nonce | counter) instead of just nonce, re-use it\n- Caveat: Cannot be re-used through all cases:\n- * chacha has (counter | nonce)\n- * xchacha has (nonce16 | counter | nonce16)\n- Idea B: separate nonce / counter and provide separate API for counter re-use\n- Caveat: there are different counter sizes depending on an algorithm.\n- salsa & chacha also differ in structures of key & sigma:\n salsa20: s[0] | k(4) | s[1] | nonce(2) | ctr(2) | s[2] | k(4) | s[3]\n chacha: s(4) | k(8) | ctr(1) | nonce(3)\n chacha20orig: s(4) | k(8) | ctr(2) | nonce(2)\n- Idea C: helper method such as `setSalsaState(key, nonce, sigma, data)`\n- Caveat: we can't re-use counter array\n\nxchacha [^2] uses the subkey and remaining 8 byte nonce with ChaCha20 as normal\n(prefixed by 4 NUL bytes, since [RFC8439] specifies a 12-byte nonce).\n\n[^1]: https://mailarchive.ietf.org/arch/msg/cfrg/gsOnTJzcbgG6OqD8Sc0GO5aR_tU/\n[^2]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha#appendix-A.2\n*/\n// We can't make top-level var depend on utils.utf8ToBytes\n// because it's not present in all envs. Creating a similar fn here\nconst _utf8ToBytes = (str) => Uint8Array.from(str.split('').map((c) => c.charCodeAt(0)));\nconst sigma16 = _utf8ToBytes('expand 16-byte k');\nconst sigma32 = _utf8ToBytes('expand 32-byte k');\nconst sigma16_32 = u32(sigma16);\nconst sigma32_32 = u32(sigma32);\nexport const sigma = sigma32_32.slice();\nexport function rotl(a, b) {\n return (a << b) | (a >>> (32 - b));\n}\n// Is byte array aligned to 4 byte offset (u32)?\nfunction isAligned32(b) {\n return b.byteOffset % 4 === 0;\n}\n// Salsa and Chacha block length is always 512-bit\nconst BLOCK_LEN = 64;\nconst BLOCK_LEN32 = 16;\n// new Uint32Array([2**32]) // => Uint32Array(1) [ 0 ]\n// new Uint32Array([2**32-1]) // => Uint32Array(1) [ 4294967295 ]\nconst MAX_COUNTER = 2 ** 32 - 1;\nconst U32_EMPTY = new Uint32Array();\nfunction runCipher(core, sigma, key, nonce, data, output, counter, rounds) {\n const len = data.length;\n const block = new Uint8Array(BLOCK_LEN);\n const b32 = u32(block);\n // Make sure that buffers aligned to 4 bytes\n const isAligned = isAligned32(data) && isAligned32(output);\n const d32 = isAligned ? u32(data) : U32_EMPTY;\n const o32 = isAligned ? u32(output) : U32_EMPTY;\n for (let pos = 0; pos < len; counter++) {\n core(sigma, key, nonce, b32, counter, rounds);\n if (counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n const take = Math.min(BLOCK_LEN, len - pos);\n // aligned to 4 bytes\n if (isAligned && take === BLOCK_LEN) {\n const pos32 = pos / 4;\n if (pos % 4 !== 0)\n throw new Error('arx: invalid block position');\n for (let j = 0, posj; j < BLOCK_LEN32; j++) {\n posj = pos32 + j;\n o32[posj] = d32[posj] ^ b32[j];\n }\n pos += BLOCK_LEN;\n continue;\n }\n for (let j = 0, posj; j < take; j++) {\n posj = pos + j;\n output[posj] = data[posj] ^ block[j];\n }\n pos += take;\n }\n}\nexport function createCipher(core, opts) {\n const { allowShortKeys, extendNonceFn, counterLength, counterRight, rounds } = checkOpts({ allowShortKeys: false, counterLength: 8, counterRight: false, rounds: 20 }, opts);\n if (typeof core !== 'function')\n throw new Error('core must be a function');\n anumber(counterLength);\n anumber(rounds);\n abool(counterRight);\n abool(allowShortKeys);\n return (key, nonce, data, output, counter = 0) => {\n abytes(key);\n abytes(nonce);\n abytes(data);\n const len = data.length;\n if (output === undefined)\n output = new Uint8Array(len);\n abytes(output);\n anumber(counter);\n if (counter < 0 || counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n if (output.length < len)\n throw new Error(`arx: output (${output.length}) is shorter than data (${len})`);\n const toClean = [];\n // Key & sigma\n // key=16 -> sigma16, k=key|key\n // key=32 -> sigma32, k=key\n let l = key.length, k, sigma;\n if (l === 32) {\n toClean.push((k = copyBytes(key)));\n sigma = sigma32_32;\n }\n else if (l === 16 && allowShortKeys) {\n k = new Uint8Array(32);\n k.set(key);\n k.set(key, 16);\n sigma = sigma16_32;\n toClean.push(k);\n }\n else {\n throw new Error(`arx: invalid 32-byte key, got length=${l}`);\n }\n // Nonce\n // salsa20: 8 (8-byte counter)\n // chacha20orig: 8 (8-byte counter)\n // chacha20: 12 (4-byte counter)\n // xsalsa20: 24 (16 -> hsalsa, 8 -> old nonce)\n // xchacha20: 24 (16 -> hchacha, 8 -> old nonce)\n // Align nonce to 4 bytes\n if (!isAligned32(nonce))\n toClean.push((nonce = copyBytes(nonce)));\n const k32 = u32(k);\n // hsalsa & hchacha: handle extended nonce\n if (extendNonceFn) {\n if (nonce.length !== 24)\n throw new Error(`arx: extended nonce must be 24 bytes`);\n extendNonceFn(sigma, k32, u32(nonce.subarray(0, 16)), k32);\n nonce = nonce.subarray(16);\n }\n // Handle nonce counter\n const nonceNcLen = 16 - counterLength;\n if (nonceNcLen !== nonce.length)\n throw new Error(`arx: nonce must be ${nonceNcLen} or 16 bytes`);\n // Pad counter when nonce is 64 bit\n if (nonceNcLen !== 12) {\n const nc = new Uint8Array(12);\n nc.set(nonce, counterRight ? 0 : 12 - nonce.length);\n nonce = nc;\n toClean.push(nonce);\n }\n const n32 = u32(nonce);\n runCipher(core, sigma, k32, n32, data, output, counter, rounds);\n clean(...toClean);\n return output;\n };\n}\n//# sourceMappingURL=_arx.js.map","import { bytes as abytes, exists as aexists, output as aoutput } from './_assert.js';\nimport { clean, toBytes } from './utils.js';\n// Poly1305 is a fast and parallel secret-key message-authentication code.\n// https://cr.yp.to/mac.html, https://cr.yp.to/mac/poly1305-20050329.pdf\n// https://datatracker.ietf.org/doc/html/rfc8439\n// Based on Public Domain poly1305-donna https://github.com/floodyberry/poly1305-donna\nconst u8to16 = (a, i) => (a[i++] & 0xff) | ((a[i++] & 0xff) << 8);\nclass Poly1305 {\n constructor(key) {\n this.blockLen = 16;\n this.outputLen = 16;\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.pos = 0;\n this.finished = false;\n key = toBytes(key);\n abytes(key, 32);\n const t0 = u8to16(key, 0);\n const t1 = u8to16(key, 2);\n const t2 = u8to16(key, 4);\n const t3 = u8to16(key, 6);\n const t4 = u8to16(key, 8);\n const t5 = u8to16(key, 10);\n const t6 = u8to16(key, 12);\n const t7 = u8to16(key, 14);\n // https://github.com/floodyberry/poly1305-donna/blob/e6ad6e091d30d7f4ec2d4f978be1fcfcbce72781/poly1305-donna-16.h#L47\n this.r[0] = t0 & 0x1fff;\n this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = (t4 >>> 1) & 0x1ffe;\n this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = (t7 >>> 5) & 0x007f;\n for (let i = 0; i < 8; i++)\n this.pad[i] = u8to16(key, 16 + 2 * i);\n }\n process(data, offset, isLast = false) {\n const hibit = isLast ? 0 : 1 << 11;\n const { h, r } = this;\n const r0 = r[0];\n const r1 = r[1];\n const r2 = r[2];\n const r3 = r[3];\n const r4 = r[4];\n const r5 = r[5];\n const r6 = r[6];\n const r7 = r[7];\n const r8 = r[8];\n const r9 = r[9];\n const t0 = u8to16(data, offset + 0);\n const t1 = u8to16(data, offset + 2);\n const t2 = u8to16(data, offset + 4);\n const t3 = u8to16(data, offset + 6);\n const t4 = u8to16(data, offset + 8);\n const t5 = u8to16(data, offset + 10);\n const t6 = u8to16(data, offset + 12);\n const t7 = u8to16(data, offset + 14);\n let h0 = h[0] + (t0 & 0x1fff);\n let h1 = h[1] + (((t0 >>> 13) | (t1 << 3)) & 0x1fff);\n let h2 = h[2] + (((t1 >>> 10) | (t2 << 6)) & 0x1fff);\n let h3 = h[3] + (((t2 >>> 7) | (t3 << 9)) & 0x1fff);\n let h4 = h[4] + (((t3 >>> 4) | (t4 << 12)) & 0x1fff);\n let h5 = h[5] + ((t4 >>> 1) & 0x1fff);\n let h6 = h[6] + (((t4 >>> 14) | (t5 << 2)) & 0x1fff);\n let h7 = h[7] + (((t5 >>> 11) | (t6 << 5)) & 0x1fff);\n let h8 = h[8] + (((t6 >>> 8) | (t7 << 8)) & 0x1fff);\n let h9 = h[9] + ((t7 >>> 5) | hibit);\n let c = 0;\n let d0 = c + h0 * r0 + h1 * (5 * r9) + h2 * (5 * r8) + h3 * (5 * r7) + h4 * (5 * r6);\n c = d0 >>> 13;\n d0 &= 0x1fff;\n d0 += h5 * (5 * r5) + h6 * (5 * r4) + h7 * (5 * r3) + h8 * (5 * r2) + h9 * (5 * r1);\n c += d0 >>> 13;\n d0 &= 0x1fff;\n let d1 = c + h0 * r1 + h1 * r0 + h2 * (5 * r9) + h3 * (5 * r8) + h4 * (5 * r7);\n c = d1 >>> 13;\n d1 &= 0x1fff;\n d1 += h5 * (5 * r6) + h6 * (5 * r5) + h7 * (5 * r4) + h8 * (5 * r3) + h9 * (5 * r2);\n c += d1 >>> 13;\n d1 &= 0x1fff;\n let d2 = c + h0 * r2 + h1 * r1 + h2 * r0 + h3 * (5 * r9) + h4 * (5 * r8);\n c = d2 >>> 13;\n d2 &= 0x1fff;\n d2 += h5 * (5 * r7) + h6 * (5 * r6) + h7 * (5 * r5) + h8 * (5 * r4) + h9 * (5 * r3);\n c += d2 >>> 13;\n d2 &= 0x1fff;\n let d3 = c + h0 * r3 + h1 * r2 + h2 * r1 + h3 * r0 + h4 * (5 * r9);\n c = d3 >>> 13;\n d3 &= 0x1fff;\n d3 += h5 * (5 * r8) + h6 * (5 * r7) + h7 * (5 * r6) + h8 * (5 * r5) + h9 * (5 * r4);\n c += d3 >>> 13;\n d3 &= 0x1fff;\n let d4 = c + h0 * r4 + h1 * r3 + h2 * r2 + h3 * r1 + h4 * r0;\n c = d4 >>> 13;\n d4 &= 0x1fff;\n d4 += h5 * (5 * r9) + h6 * (5 * r8) + h7 * (5 * r7) + h8 * (5 * r6) + h9 * (5 * r5);\n c += d4 >>> 13;\n d4 &= 0x1fff;\n let d5 = c + h0 * r5 + h1 * r4 + h2 * r3 + h3 * r2 + h4 * r1;\n c = d5 >>> 13;\n d5 &= 0x1fff;\n d5 += h5 * r0 + h6 * (5 * r9) + h7 * (5 * r8) + h8 * (5 * r7) + h9 * (5 * r6);\n c += d5 >>> 13;\n d5 &= 0x1fff;\n let d6 = c + h0 * r6 + h1 * r5 + h2 * r4 + h3 * r3 + h4 * r2;\n c = d6 >>> 13;\n d6 &= 0x1fff;\n d6 += h5 * r1 + h6 * r0 + h7 * (5 * r9) + h8 * (5 * r8) + h9 * (5 * r7);\n c += d6 >>> 13;\n d6 &= 0x1fff;\n let d7 = c + h0 * r7 + h1 * r6 + h2 * r5 + h3 * r4 + h4 * r3;\n c = d7 >>> 13;\n d7 &= 0x1fff;\n d7 += h5 * r2 + h6 * r1 + h7 * r0 + h8 * (5 * r9) + h9 * (5 * r8);\n c += d7 >>> 13;\n d7 &= 0x1fff;\n let d8 = c + h0 * r8 + h1 * r7 + h2 * r6 + h3 * r5 + h4 * r4;\n c = d8 >>> 13;\n d8 &= 0x1fff;\n d8 += h5 * r3 + h6 * r2 + h7 * r1 + h8 * r0 + h9 * (5 * r9);\n c += d8 >>> 13;\n d8 &= 0x1fff;\n let d9 = c + h0 * r9 + h1 * r8 + h2 * r7 + h3 * r6 + h4 * r5;\n c = d9 >>> 13;\n d9 &= 0x1fff;\n d9 += h5 * r4 + h6 * r3 + h7 * r2 + h8 * r1 + h9 * r0;\n c += d9 >>> 13;\n d9 &= 0x1fff;\n c = ((c << 2) + c) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = c >>> 13;\n d1 += c;\n h[0] = d0;\n h[1] = d1;\n h[2] = d2;\n h[3] = d3;\n h[4] = d4;\n h[5] = d5;\n h[6] = d6;\n h[7] = d7;\n h[8] = d8;\n h[9] = d9;\n }\n finalize() {\n const { h, pad } = this;\n const g = new Uint16Array(10);\n let c = h[1] >>> 13;\n h[1] &= 0x1fff;\n for (let i = 2; i < 10; i++) {\n h[i] += c;\n c = h[i] >>> 13;\n h[i] &= 0x1fff;\n }\n h[0] += c * 5;\n c = h[0] >>> 13;\n h[0] &= 0x1fff;\n h[1] += c;\n c = h[1] >>> 13;\n h[1] &= 0x1fff;\n h[2] += c;\n g[0] = h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (let i = 1; i < 10; i++) {\n g[i] = h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= 1 << 13;\n let mask = (c ^ 1) - 1;\n for (let i = 0; i < 10; i++)\n g[i] &= mask;\n mask = ~mask;\n for (let i = 0; i < 10; i++)\n h[i] = (h[i] & mask) | g[i];\n h[0] = (h[0] | (h[1] << 13)) & 0xffff;\n h[1] = ((h[1] >>> 3) | (h[2] << 10)) & 0xffff;\n h[2] = ((h[2] >>> 6) | (h[3] << 7)) & 0xffff;\n h[3] = ((h[3] >>> 9) | (h[4] << 4)) & 0xffff;\n h[4] = ((h[4] >>> 12) | (h[5] << 1) | (h[6] << 14)) & 0xffff;\n h[5] = ((h[6] >>> 2) | (h[7] << 11)) & 0xffff;\n h[6] = ((h[7] >>> 5) | (h[8] << 8)) & 0xffff;\n h[7] = ((h[8] >>> 8) | (h[9] << 5)) & 0xffff;\n let f = h[0] + pad[0];\n h[0] = f & 0xffff;\n for (let i = 1; i < 8; i++) {\n f = (((h[i] + pad[i]) | 0) + (f >>> 16)) | 0;\n h[i] = f & 0xffff;\n }\n clean(g);\n }\n update(data) {\n aexists(this);\n const { buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input\n if (take === blockLen) {\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(data, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(buffer, 0, false);\n this.pos = 0;\n }\n }\n return this;\n }\n destroy() {\n clean(this.h, this.r, this.buffer, this.pad);\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n const { buffer, h } = this;\n let { pos } = this;\n if (pos) {\n buffer[pos++] = 1;\n for (; pos < 16; pos++)\n buffer[pos] = 0;\n this.process(buffer, 0, true);\n }\n this.finalize();\n let opos = 0;\n for (let i = 0; i < 8; i++) {\n out[opos++] = h[i] >>> 0;\n out[opos++] = h[i] >>> 8;\n }\n return out;\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n}\nexport function wrapConstructorWithKey(hashCons) {\n const hashC = (msg, key) => hashCons(key).update(toBytes(msg)).digest();\n const tmp = hashCons(new Uint8Array(32));\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (key) => hashCons(key);\n return hashC;\n}\nexport const poly1305 = wrapConstructorWithKey((key) => new Poly1305(key));\n//# sourceMappingURL=_poly1305.js.map","// prettier-ignore\nimport { createCipher, rotl } from './_arx.js';\nimport { bytes as abytes } from './_assert.js';\nimport { poly1305 } from './_poly1305.js';\nimport { clean, createView, equalBytes, setBigUint64, wrapCipher, } from './utils.js';\n// ChaCha20 stream cipher was released in 2008. ChaCha aims to increase\n// the diffusion per round, but had slightly less cryptanalysis.\n// https://cr.yp.to/chacha.html, http://cr.yp.to/chacha/chacha-20080128.pdf\n/**\n * ChaCha core function.\n */\n// prettier-ignore\nfunction chachaCore(s, k, n, out, cnt, rounds = 20) {\n let y00 = s[0], y01 = s[1], y02 = s[2], y03 = s[3], // \"expa\" \"nd 3\" \"2-by\" \"te k\"\n y04 = k[0], y05 = k[1], y06 = k[2], y07 = k[3], // Key Key Key Key\n y08 = k[4], y09 = k[5], y10 = k[6], y11 = k[7], // Key Key Key Key\n y12 = cnt, y13 = n[0], y14 = n[1], y15 = n[2]; // Counter Counter\tNonce Nonce\n // Save state to temporary variables\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n for (let r = 0; r < rounds; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n // Write output\n let oi = 0;\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\n/**\n * hchacha helper method, used primarily in xchacha, to hash\n * key and nonce into key' and nonce'.\n * Same as chachaCore, but there doesn't seem to be a way to move the block\n * out without 25% performance hit.\n */\n// prettier-ignore\nexport function hchacha(s, k, i, o32) {\n let x00 = s[0], x01 = s[1], x02 = s[2], x03 = s[3], x04 = k[0], x05 = k[1], x06 = k[2], x07 = k[3], x08 = k[4], x09 = k[5], x10 = k[6], x11 = k[7], x12 = i[0], x13 = i[1], x14 = i[2], x15 = i[3];\n for (let r = 0; r < 20; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n let oi = 0;\n o32[oi++] = x00;\n o32[oi++] = x01;\n o32[oi++] = x02;\n o32[oi++] = x03;\n o32[oi++] = x12;\n o32[oi++] = x13;\n o32[oi++] = x14;\n o32[oi++] = x15;\n}\n/**\n * Original, non-RFC chacha20 from DJB. 8-byte nonce, 8-byte counter.\n */\nexport const chacha20orig = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n allowShortKeys: true,\n});\n/**\n * ChaCha stream cipher. Conforms to RFC 8439 (IETF, TLS). 12-byte nonce, 4-byte counter.\n * With 12-byte nonce, it's not safe to use fill it with random (CSPRNG), due to collision chance.\n */\nexport const chacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n allowShortKeys: false,\n});\n/**\n * XChaCha eXtended-nonce ChaCha. 24-byte nonce.\n * With 24-byte nonce, it's safe to use fill it with random (CSPRNG).\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha\n */\nexport const xchacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n extendNonceFn: hchacha,\n allowShortKeys: false,\n});\n/**\n * Reduced 8-round chacha, described in original paper.\n */\nexport const chacha8 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 8,\n});\n/**\n * Reduced 12-round chacha, described in original paper.\n */\nexport const chacha12 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 12,\n});\nconst ZEROS16 = /* @__PURE__ */ new Uint8Array(16);\n// Pad to digest size with zeros\nconst updatePadded = (h, msg) => {\n h.update(msg);\n const left = msg.length % 16;\n if (left)\n h.update(ZEROS16.subarray(left));\n};\nconst ZEROS32 = /* @__PURE__ */ new Uint8Array(32);\nfunction computeTag(fn, key, nonce, data, AAD) {\n const authKey = fn(key, nonce, ZEROS32);\n const h = poly1305.create(authKey);\n if (AAD)\n updatePadded(h, AAD);\n updatePadded(h, data);\n const num = new Uint8Array(16);\n const view = createView(num);\n setBigUint64(view, 0, BigInt(AAD ? AAD.length : 0), true);\n setBigUint64(view, 8, BigInt(data.length), true);\n h.update(num);\n const res = h.digest();\n clean(authKey, num);\n return res;\n}\n/**\n * AEAD algorithm from RFC 8439.\n * Salsa20 and chacha (RFC 8439) use poly1305 differently.\n * We could have composed them similar to:\n * https://github.com/paulmillr/scure-base/blob/b266c73dde977b1dd7ef40ef7a23cc15aab526b3/index.ts#L250\n * But it's hard because of authKey:\n * In salsa20, authKey changes position in salsa stream.\n * In chacha, authKey can't be computed inside computeTag, it modifies the counter.\n */\nexport const _poly1305_aead = (xorStream) => (key, nonce, AAD) => {\n const tagLength = 16;\n abytes(key, 32);\n abytes(nonce);\n return {\n encrypt(plaintext, output) {\n const plength = plaintext.length;\n const clength = plength + tagLength;\n if (output) {\n abytes(output, clength);\n }\n else {\n output = new Uint8Array(clength);\n }\n xorStream(key, nonce, plaintext, output, 1);\n const tag = computeTag(xorStream, key, nonce, output.subarray(0, -tagLength), AAD);\n output.set(tag, plength); // append tag\n clean(tag);\n return output;\n },\n decrypt(ciphertext, output) {\n const clength = ciphertext.length;\n const plength = clength - tagLength;\n if (clength < tagLength)\n throw new Error(`encrypted data must be at least ${tagLength} bytes`);\n if (output) {\n abytes(output, plength);\n }\n else {\n output = new Uint8Array(plength);\n }\n const data = ciphertext.subarray(0, -tagLength);\n const passedTag = ciphertext.subarray(-tagLength);\n const tag = computeTag(xorStream, key, nonce, data, AAD);\n if (!equalBytes(passedTag, tag))\n throw new Error('invalid tag');\n xorStream(key, nonce, data, output, 1);\n clean(tag);\n return output;\n },\n };\n};\n/**\n * ChaCha20-Poly1305 from RFC 8439.\n * With 12-byte nonce, it's not safe to use fill it with random (CSPRNG), due to collision chance.\n */\nexport const chacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 12, tagLength: 16 }, _poly1305_aead(chacha20));\n/**\n * XChaCha20-Poly1305 extended-nonce chacha.\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha\n * With 24-byte nonce, it's safe to use fill it with random (CSPRNG).\n */\nexport const xchacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 24, tagLength: 16 }, _poly1305_aead(xchacha20));\n//# sourceMappingURL=chacha.js.map","import { chacha20poly1305 } from '@noble/ciphers/chacha';\nimport { x25519 } from '@noble/curves/ed25519';\nimport { extract, expand } from '@noble/hashes/hkdf';\nimport { sha256 } from '@noble/hashes/sha256';\nexport const pureJsCrypto = {\n hashSHA256(data) {\n return sha256(data.subarray());\n },\n getHKDF(ck, ikm) {\n const prk = extract(sha256, ikm, ck);\n const okmU8Array = expand(sha256, prk, undefined, 96);\n const okm = okmU8Array;\n const k1 = okm.subarray(0, 32);\n const k2 = okm.subarray(32, 64);\n const k3 = okm.subarray(64, 96);\n return [k1, k2, k3];\n },\n generateX25519KeyPair() {\n const secretKey = x25519.utils.randomPrivateKey();\n const publicKey = x25519.getPublicKey(secretKey);\n return {\n publicKey,\n privateKey: secretKey\n };\n },\n generateX25519KeyPairFromSeed(seed) {\n const publicKey = x25519.getPublicKey(seed);\n return {\n publicKey,\n privateKey: seed\n };\n },\n generateX25519SharedKey(privateKey, publicKey) {\n return x25519.getSharedSecret(privateKey.subarray(), publicKey.subarray());\n },\n chaCha20Poly1305Encrypt(plaintext, nonce, ad, k) {\n return chacha20poly1305(k, nonce, ad).encrypt(plaintext.subarray());\n },\n chaCha20Poly1305Decrypt(ciphertext, nonce, ad, k, dst) {\n return chacha20poly1305(k, nonce, ad).decrypt(ciphertext.subarray(), dst);\n }\n};\n//# sourceMappingURL=js.js.map","import { pureJsCrypto } from './js.js';\nexport const defaultCrypto = pureJsCrypto;\n//# sourceMappingURL=index.browser.js.map","export function wrapCrypto(crypto) {\n return {\n generateKeypair: crypto.generateX25519KeyPair,\n dh: (keypair, publicKey) => crypto.generateX25519SharedKey(keypair.privateKey, publicKey).subarray(0, 32),\n encrypt: crypto.chaCha20Poly1305Encrypt,\n decrypt: crypto.chaCha20Poly1305Decrypt,\n hash: crypto.hashSHA256,\n hkdf: crypto.getHKDF\n };\n}\n//# sourceMappingURL=crypto.js.map","import {} from 'uint8arraylist';\nimport { allocUnsafe as uint8ArrayAllocUnsafe } from 'uint8arrays/alloc';\nexport const uint16BEEncode = (value) => {\n const target = uint8ArrayAllocUnsafe(2);\n target[0] = value >> 8;\n target[1] = value;\n return target;\n};\nuint16BEEncode.bytes = 2;\nexport const uint16BEDecode = (data) => {\n if (data.length < 2)\n throw RangeError('Could not decode int16BE');\n if (data instanceof Uint8Array) {\n let value = 0;\n value += data[0] << 8;\n value += data[1];\n return value;\n }\n return data.getUint16(0);\n};\nuint16BEDecode.bytes = 2;\n//# sourceMappingURL=encoder.js.map","export function registerMetrics(metrics) {\n return {\n xxHandshakeSuccesses: metrics.registerCounter('libp2p_noise_xxhandshake_successes_total', {\n help: 'Total count of noise xxHandshakes successes_'\n }),\n xxHandshakeErrors: metrics.registerCounter('libp2p_noise_xxhandshake_error_total', {\n help: 'Total count of noise xxHandshakes errors'\n }),\n encryptedPackets: metrics.registerCounter('libp2p_noise_encrypted_packets_total', {\n help: 'Total count of noise encrypted packets successfully'\n }),\n decryptedPackets: metrics.registerCounter('libp2p_noise_decrypted_packets_total', {\n help: 'Total count of noise decrypted packets'\n }),\n decryptErrors: metrics.registerCounter('libp2p_noise_decrypt_errors_total', {\n help: 'Total count of noise decrypt errors'\n })\n };\n}\n//# sourceMappingURL=metrics.js.map","import { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { DUMP_SESSION_KEYS } from './constants.js';\nexport function logLocalStaticKeys(s, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (s) {\n keyLogger(`LOCAL_STATIC_PUBLIC_KEY ${uint8ArrayToString(s.publicKey, 'hex')}`);\n keyLogger(`LOCAL_STATIC_PRIVATE_KEY ${uint8ArrayToString(s.privateKey, 'hex')}`);\n }\n else {\n keyLogger('Missing local static keys.');\n }\n}\nexport function logLocalEphemeralKeys(e, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (e) {\n keyLogger(`LOCAL_PUBLIC_EPHEMERAL_KEY ${uint8ArrayToString(e.publicKey, 'hex')}`);\n keyLogger(`LOCAL_PRIVATE_EPHEMERAL_KEY ${uint8ArrayToString(e.privateKey, 'hex')}`);\n }\n else {\n keyLogger('Missing local ephemeral keys.');\n }\n}\nexport function logRemoteStaticKey(rs, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (rs) {\n keyLogger(`REMOTE_STATIC_PUBLIC_KEY ${uint8ArrayToString(rs.subarray(), 'hex')}`);\n }\n else {\n keyLogger('Missing remote static public key.');\n }\n}\nexport function logRemoteEphemeralKey(re, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (re) {\n keyLogger(`REMOTE_EPHEMERAL_PUBLIC_KEY ${uint8ArrayToString(re.subarray(), 'hex')}`);\n }\n else {\n keyLogger('Missing remote ephemeral keys.');\n }\n}\nexport function logCipherState(cs1, cs2, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n keyLogger(`CIPHER_STATE_1 ${cs1.n.getUint64()} ${cs1.k && uint8ArrayToString(cs1.k, 'hex')}`);\n keyLogger(`CIPHER_STATE_2 ${cs2.n.getUint64()} ${cs2.k && uint8ArrayToString(cs2.k, 'hex')}`);\n}\n//# sourceMappingURL=logger.js.map","export class UnexpectedPeerError extends Error {\n code;\n constructor(message = 'Unexpected Peer') {\n super(message);\n this.code = UnexpectedPeerError.code;\n }\n static code = 'ERR_UNEXPECTED_PEER';\n}\nexport class InvalidCryptoExchangeError extends Error {\n code;\n constructor(message = 'Invalid crypto exchange') {\n super(message);\n this.code = InvalidCryptoExchangeError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_EXCHANGE';\n}\n//# sourceMappingURL=errors.js.map","import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport const MIN_NONCE = 0;\n// For performance reasons, the nonce is represented as a JS `number`\n// Although JS `number` can safely represent integers up to 2 ** 53 - 1, we choose to only use\n// 4 bytes to store the data for performance reason.\n// This is a slight deviation from the noise spec, which describes the max nonce as 2 ** 64 - 2\n// The effect is that this implementation will need a new handshake to be performed after fewer messages are exchanged than other implementations with full uint64 nonces.\n// this MAX_NONCE is still a large number of messages, so the practical effect of this is negligible.\nexport const MAX_NONCE = 0xffffffff;\nconst ERR_MAX_NONCE = 'Cipherstate has reached maximum n, a new handshake must be performed';\n/**\n * The nonce is an uint that's increased over time.\n * Maintaining different representations help improve performance.\n */\nexport class Nonce {\n n;\n bytes;\n view;\n constructor(n = MIN_NONCE) {\n this.n = n;\n this.bytes = uint8ArrayAlloc(12);\n this.view = new DataView(this.bytes.buffer, this.bytes.byteOffset, this.bytes.byteLength);\n this.view.setUint32(4, n, true);\n }\n increment() {\n this.n++;\n // Even though we're treating the nonce as 8 bytes, RFC7539 specifies 12 bytes for a nonce.\n this.view.setUint32(4, this.n, true);\n }\n getBytes() {\n return this.bytes;\n }\n getUint64() {\n return this.n;\n }\n assertValue() {\n if (this.n > MAX_NONCE) {\n throw new Error(ERR_MAX_NONCE);\n }\n }\n}\n//# sourceMappingURL=nonce.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { InvalidCryptoExchangeError } from './errors.js';\nimport { Nonce } from './nonce.js';\n// Code in this file is a direct translation of a subset of the noise protocol https://noiseprotocol.org/noise.html,\n// agnostic to libp2p's usage of noise\nexport const ZEROLEN = uint8ArrayAlloc(0);\nexport class CipherState {\n k;\n n;\n crypto;\n constructor(crypto, k = undefined, n = 0) {\n this.crypto = crypto;\n this.k = k;\n this.n = new Nonce(n);\n }\n hasKey() {\n return Boolean(this.k);\n }\n encryptWithAd(ad, plaintext) {\n if (!this.hasKey()) {\n return plaintext;\n }\n this.n.assertValue();\n const e = this.crypto.encrypt(plaintext, this.n.getBytes(), ad, this.k);\n this.n.increment();\n return e;\n }\n decryptWithAd(ad, ciphertext, dst) {\n if (!this.hasKey()) {\n return ciphertext;\n }\n this.n.assertValue();\n const plaintext = this.crypto.decrypt(ciphertext, this.n.getBytes(), ad, this.k, dst);\n this.n.increment();\n return plaintext;\n }\n}\nexport class SymmetricState {\n cs;\n ck;\n h;\n crypto;\n constructor(crypto, protocolName) {\n this.crypto = crypto;\n const protocolNameBytes = uint8ArrayFromString(protocolName, 'utf-8');\n this.h = hashProtocolName(crypto, protocolNameBytes);\n this.ck = this.h;\n this.cs = new CipherState(crypto);\n }\n mixKey(ikm) {\n const [ck, tempK] = this.crypto.hkdf(this.ck, ikm);\n this.ck = ck;\n this.cs = new CipherState(this.crypto, tempK);\n }\n mixHash(data) {\n this.h = this.crypto.hash(new Uint8ArrayList(this.h, data));\n }\n encryptAndHash(plaintext) {\n const ciphertext = this.cs.encryptWithAd(this.h, plaintext);\n this.mixHash(ciphertext);\n return ciphertext;\n }\n decryptAndHash(ciphertext) {\n const plaintext = this.cs.decryptWithAd(this.h, ciphertext);\n this.mixHash(ciphertext);\n return plaintext;\n }\n split() {\n const [tempK1, tempK2] = this.crypto.hkdf(this.ck, ZEROLEN);\n return [new CipherState(this.crypto, tempK1), new CipherState(this.crypto, tempK2)];\n }\n}\nexport class AbstractHandshakeState {\n ss;\n s;\n e;\n rs;\n re;\n initiator;\n crypto;\n constructor(init) {\n const { crypto, protocolName, prologue, initiator, s, e, rs, re } = init;\n this.crypto = crypto;\n this.ss = new SymmetricState(crypto, protocolName);\n this.ss.mixHash(prologue);\n this.initiator = initiator;\n this.s = s;\n this.e = e;\n this.rs = rs;\n this.re = re;\n }\n writeE() {\n if (this.e) {\n throw new Error('ephemeral keypair is already set');\n }\n const e = this.crypto.generateKeypair();\n this.ss.mixHash(e.publicKey);\n this.e = e;\n return e.publicKey;\n }\n writeS() {\n if (!this.s) {\n throw new Error('static keypair is not set');\n }\n return this.ss.encryptAndHash(this.s.publicKey);\n }\n writeEE() {\n if (!this.e) {\n throw new Error('ephemeral keypair is not set');\n }\n if (!this.re) {\n throw new Error('remote ephemeral public key is not set');\n }\n this.ss.mixKey(this.crypto.dh(this.e, this.re));\n }\n writeES() {\n if (this.initiator) {\n if (!this.e) {\n throw new Error('ephemeral keypair is not set');\n }\n if (!this.rs) {\n throw new Error('remote static public key is not set');\n }\n this.ss.mixKey(this.crypto.dh(this.e, this.rs));\n }\n else {\n if (!this.s) {\n throw new Error('static keypair is not set');\n }\n if (!this.re) {\n throw new Error('remote ephemeral public key is not set');\n }\n this.ss.mixKey(this.crypto.dh(this.s, this.re));\n }\n }\n writeSE() {\n if (this.initiator) {\n if (!this.s) {\n throw new Error('static keypair is not set');\n }\n if (!this.re) {\n throw new Error('remote ephemeral public key is not set');\n }\n this.ss.mixKey(this.crypto.dh(this.s, this.re));\n }\n else {\n if (!this.e) {\n throw new Error('ephemeral keypair is not set');\n }\n if (!this.rs) {\n throw new Error('remote static public key is not set');\n }\n this.ss.mixKey(this.crypto.dh(this.e, this.rs));\n }\n }\n readE(message, offset = 0) {\n if (this.re) {\n throw new Error('remote ephemeral public key is already set');\n }\n if (message.byteLength < offset + 32) {\n throw new Error('message is not long enough');\n }\n this.re = message.sublist(offset, offset + 32);\n this.ss.mixHash(this.re);\n }\n readS(message, offset = 0) {\n if (this.rs) {\n throw new Error('remote static public key is already set');\n }\n const cipherLength = 32 + (this.ss.cs.hasKey() ? 16 : 0);\n if (message.byteLength < offset + cipherLength) {\n throw new Error('message is not long enough');\n }\n const temp = message.sublist(offset, offset + cipherLength);\n this.rs = this.ss.decryptAndHash(temp);\n return cipherLength;\n }\n readEE() {\n this.writeEE();\n }\n readES() {\n this.writeES();\n }\n readSE() {\n this.writeSE();\n }\n}\n/**\n * A IHandshakeState that's optimized for the XX pattern\n */\nexport class XXHandshakeState extends AbstractHandshakeState {\n // e\n writeMessageA(payload) {\n return new Uint8ArrayList(this.writeE(), this.ss.encryptAndHash(payload));\n }\n // e, ee, s, es\n writeMessageB(payload) {\n const e = this.writeE();\n this.writeEE();\n const encS = this.writeS();\n this.writeES();\n return new Uint8ArrayList(e, encS, this.ss.encryptAndHash(payload));\n }\n // s, se\n writeMessageC(payload) {\n const encS = this.writeS();\n this.writeSE();\n return new Uint8ArrayList(encS, this.ss.encryptAndHash(payload));\n }\n // e\n readMessageA(message) {\n try {\n this.readE(message);\n return this.ss.decryptAndHash(message.sublist(32));\n }\n catch (e) {\n throw new InvalidCryptoExchangeError(`handshake stage 0 validation fail: ${e.message}`);\n }\n }\n // e, ee, s, es\n readMessageB(message) {\n try {\n this.readE(message);\n this.readEE();\n const consumed = this.readS(message, 32);\n this.readES();\n return this.ss.decryptAndHash(message.sublist(32 + consumed));\n }\n catch (e) {\n throw new InvalidCryptoExchangeError(`handshake stage 1 validation fail: ${e.message}`);\n }\n }\n // s, se\n readMessageC(message) {\n try {\n const consumed = this.readS(message);\n this.readSE();\n return this.ss.decryptAndHash(message.sublist(consumed));\n }\n catch (e) {\n throw new InvalidCryptoExchangeError(`handshake stage 2 validation fail: ${e.message}`);\n }\n }\n}\nfunction hashProtocolName(crypto, protocolName) {\n if (protocolName.length <= 32) {\n const h = uint8ArrayAlloc(32);\n h.set(protocolName);\n return h;\n }\n else {\n return crypto.hash(protocolName);\n }\n}\n//# sourceMappingURL=protocol.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { decodeMessage, encodeMessage, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var NoiseExtensions;\n(function (NoiseExtensions) {\n let _codec;\n NoiseExtensions.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.webtransportCerthashes != null) {\n for (const value of obj.webtransportCerthashes) {\n w.uint32(10);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n webtransportCerthashes: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.webtransportCerthashes.push(reader.bytes());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n NoiseExtensions.encode = (obj) => {\n return encodeMessage(obj, NoiseExtensions.codec());\n };\n NoiseExtensions.decode = (buf) => {\n return decodeMessage(buf, NoiseExtensions.codec());\n };\n})(NoiseExtensions || (NoiseExtensions = {}));\nexport var NoiseHandshakePayload;\n(function (NoiseHandshakePayload) {\n let _codec;\n NoiseHandshakePayload.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.identityKey != null && obj.identityKey.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.identityKey);\n }\n if ((obj.identitySig != null && obj.identitySig.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.identitySig);\n }\n if (obj.extensions != null) {\n w.uint32(34);\n NoiseExtensions.codec().encode(obj.extensions, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n identityKey: uint8ArrayAlloc(0),\n identitySig: uint8ArrayAlloc(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.identityKey = reader.bytes();\n break;\n }\n case 2: {\n obj.identitySig = reader.bytes();\n break;\n }\n case 4: {\n obj.extensions = NoiseExtensions.codec().decode(reader, reader.uint32());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n NoiseHandshakePayload.encode = (obj) => {\n return encodeMessage(obj, NoiseHandshakePayload.codec());\n };\n NoiseHandshakePayload.decode = (buf) => {\n return decodeMessage(buf, NoiseHandshakePayload.codec());\n };\n})(NoiseHandshakePayload || (NoiseHandshakePayload = {}));\n//# sourceMappingURL=payload.js.map","import { unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport {} from 'uint8arraylist';\nimport { equals, toString } from 'uint8arrays';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { UnexpectedPeerError } from './errors.js';\nimport { NoiseHandshakePayload } from './proto/payload.js';\nexport async function createHandshakePayload(privateKey, staticPublicKey, extensions) {\n const identitySig = await privateKey.sign(getSignaturePayload(staticPublicKey));\n return NoiseHandshakePayload.encode({\n identityKey: privateKey.public.bytes,\n identitySig,\n extensions\n });\n}\nexport async function decodeHandshakePayload(payloadBytes, remoteStaticKey, remoteIdentityKey) {\n try {\n const payload = NoiseHandshakePayload.decode(payloadBytes);\n if (remoteIdentityKey) {\n const remoteIdentityKeyBytes = remoteIdentityKey.subarray();\n if (!equals(remoteIdentityKeyBytes, payload.identityKey)) {\n throw new Error(`Payload identity key ${toString(payload.identityKey, 'hex')} does not match expected remote identity key ${toString(remoteIdentityKeyBytes, 'hex')}`);\n }\n }\n if (!remoteStaticKey) {\n throw new Error('Remote static does not exist');\n }\n const signaturePayload = getSignaturePayload(remoteStaticKey);\n const publicKey = unmarshalPublicKey(payload.identityKey);\n if (!(await publicKey.verify(signaturePayload, payload.identitySig))) {\n throw new Error('Invalid payload signature');\n }\n return payload;\n }\n catch (e) {\n throw new UnexpectedPeerError(e.message);\n }\n}\nexport function getSignaturePayload(publicKey) {\n const prefix = uint8ArrayFromString('noise-libp2p-static-key:');\n if (publicKey instanceof Uint8Array) {\n return uint8ArrayConcat([prefix, publicKey], prefix.length + publicKey.length);\n }\n publicKey.prepend(prefix);\n return publicKey;\n}\n//# sourceMappingURL=utils.js.map","import { logLocalStaticKeys, logLocalEphemeralKeys, logRemoteEphemeralKey, logRemoteStaticKey, logCipherState } from './logger.js';\nimport { ZEROLEN, XXHandshakeState } from './protocol.js';\nimport { createHandshakePayload, decodeHandshakePayload } from './utils.js';\nexport async function performHandshakeInitiator(init, options) {\n const { log, connection, crypto, privateKey, prologue, s, remoteIdentityKey, extensions } = init;\n const payload = await createHandshakePayload(privateKey, s.publicKey, extensions);\n const xx = new XXHandshakeState({\n crypto,\n protocolName: 'Noise_XX_25519_ChaChaPoly_SHA256',\n initiator: true,\n prologue,\n s\n });\n logLocalStaticKeys(xx.s, log);\n log.trace('Stage 0 - Initiator starting to send first message.');\n await connection.write(xx.writeMessageA(ZEROLEN), options);\n log.trace('Stage 0 - Initiator finished sending first message.');\n logLocalEphemeralKeys(xx.e, log);\n log.trace('Stage 1 - Initiator waiting to receive first message from responder...');\n const plaintext = xx.readMessageB(await connection.read(options));\n log.trace('Stage 1 - Initiator received the message.');\n logRemoteEphemeralKey(xx.re, log);\n logRemoteStaticKey(xx.rs, log);\n log.trace(\"Initiator going to check remote's signature...\");\n const receivedPayload = await decodeHandshakePayload(plaintext, xx.rs, remoteIdentityKey);\n log.trace('All good with the signature!');\n log.trace('Stage 2 - Initiator sending third handshake message.');\n await connection.write(xx.writeMessageC(payload), options);\n log.trace('Stage 2 - Initiator sent message with signed payload.');\n const [cs1, cs2] = xx.ss.split();\n logCipherState(cs1, cs2, log);\n return {\n payload: receivedPayload,\n encrypt: (plaintext) => cs1.encryptWithAd(ZEROLEN, plaintext),\n decrypt: (ciphertext, dst) => cs2.decryptWithAd(ZEROLEN, ciphertext, dst)\n };\n}\nexport async function performHandshakeResponder(init, options) {\n const { log, connection, crypto, privateKey, prologue, s, remoteIdentityKey, extensions } = init;\n const payload = await createHandshakePayload(privateKey, s.publicKey, extensions);\n const xx = new XXHandshakeState({\n crypto,\n protocolName: 'Noise_XX_25519_ChaChaPoly_SHA256',\n initiator: false,\n prologue,\n s\n });\n logLocalStaticKeys(xx.s, log);\n log.trace('Stage 0 - Responder waiting to receive first message.');\n xx.readMessageA(await connection.read(options));\n log.trace('Stage 0 - Responder received first message.');\n logRemoteEphemeralKey(xx.re, log);\n log.trace('Stage 1 - Responder sending out first message with signed payload and static key.');\n await connection.write(xx.writeMessageB(payload), options);\n log.trace('Stage 1 - Responder sent the second handshake message with signed payload.');\n logLocalEphemeralKeys(xx.e, log);\n log.trace('Stage 2 - Responder waiting for third handshake message...');\n const plaintext = xx.readMessageC(await connection.read(options));\n log.trace('Stage 2 - Responder received the message, finished handshake.');\n const receivedPayload = await decodeHandshakePayload(plaintext, xx.rs, remoteIdentityKey);\n const [cs1, cs2] = xx.ss.split();\n logCipherState(cs1, cs2, log);\n return {\n payload: receivedPayload,\n encrypt: (plaintext) => cs2.encryptWithAd(ZEROLEN, plaintext),\n decrypt: (ciphertext, dst) => cs1.decryptWithAd(ZEROLEN, ciphertext, dst)\n };\n}\n//# sourceMappingURL=performHandshake.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { NOISE_MSG_MAX_LENGTH_BYTES, NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG } from './constants.js';\nimport { uint16BEEncode } from './encoder.js';\nconst CHACHA_TAG_LENGTH = 16;\n// Returns generator that encrypts payload from the user\nexport function encryptStream(handshake, metrics) {\n return async function* (source) {\n for await (const chunk of source) {\n for (let i = 0; i < chunk.length; i += NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG) {\n let end = i + NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG;\n if (end > chunk.length) {\n end = chunk.length;\n }\n let data;\n if (chunk instanceof Uint8Array) {\n data = handshake.encrypt(chunk.subarray(i, end));\n }\n else {\n data = handshake.encrypt(chunk.sublist(i, end));\n }\n metrics?.encryptedPackets.increment();\n yield new Uint8ArrayList(uint16BEEncode(data.byteLength), data);\n }\n }\n };\n}\n// Decrypt received payload to the user\nexport function decryptStream(handshake, metrics) {\n return async function* (source) {\n for await (const chunk of source) {\n for (let i = 0; i < chunk.length; i += NOISE_MSG_MAX_LENGTH_BYTES) {\n let end = i + NOISE_MSG_MAX_LENGTH_BYTES;\n if (end > chunk.length) {\n end = chunk.length;\n }\n if (end - CHACHA_TAG_LENGTH < i) {\n throw new Error('Invalid chunk');\n }\n const encrypted = chunk.sublist(i, end);\n // memory allocation is not cheap so reuse the encrypted Uint8Array\n // see https://github.com/ChainSafe/js-libp2p-noise/pull/242#issue-1422126164\n // this is ok because chacha20 reads bytes one by one and don't reread after that\n // it's also tested in https://github.com/ChainSafe/as-chacha20poly1305/pull/1/files#diff-25252846b58979dcaf4e41d47b3eadd7e4f335e7fb98da6c049b1f9cd011f381R48\n const dst = chunk.subarray(i, end - CHACHA_TAG_LENGTH);\n try {\n const plaintext = handshake.decrypt(encrypted, dst);\n metrics?.decryptedPackets.increment();\n yield plaintext;\n }\n catch (e) {\n metrics?.decryptErrors.increment();\n throw e;\n }\n }\n }\n };\n}\n//# sourceMappingURL=streaming.js.map","import { unmarshalPrivateKey } from '@libp2p/crypto/keys';\nimport { CodeError, serviceCapabilities, isPeerId } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { decode } from 'it-length-prefixed';\nimport { lpStream } from 'it-length-prefixed-stream';\nimport { duplexPair } from 'it-pair/duplex';\nimport { pipe } from 'it-pipe';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { NOISE_MSG_MAX_LENGTH_BYTES } from './constants.js';\nimport { defaultCrypto } from './crypto/index.js';\nimport { wrapCrypto } from './crypto.js';\nimport { uint16BEDecode, uint16BEEncode } from './encoder.js';\nimport { registerMetrics } from './metrics.js';\nimport { performHandshakeInitiator, performHandshakeResponder } from './performHandshake.js';\nimport { decryptStream, encryptStream } from './streaming.js';\nexport class Noise {\n protocol = '/noise';\n crypto;\n prologue;\n staticKey;\n extensions;\n metrics;\n components;\n constructor(components, init = {}) {\n const { staticNoiseKey, extensions, crypto, prologueBytes } = init;\n const { metrics } = components;\n this.components = components;\n const _crypto = crypto ?? defaultCrypto;\n this.crypto = wrapCrypto(_crypto);\n this.extensions = extensions;\n this.metrics = metrics ? registerMetrics(metrics) : undefined;\n if (staticNoiseKey) {\n // accepts x25519 private key of length 32\n this.staticKey = _crypto.generateX25519KeyPairFromSeed(staticNoiseKey);\n }\n else {\n this.staticKey = _crypto.generateX25519KeyPair();\n }\n this.prologue = prologueBytes ?? uint8ArrayAlloc(0);\n }\n [Symbol.toStringTag] = '@chainsafe/libp2p-noise';\n [serviceCapabilities] = [\n '@libp2p/connection-encryption',\n '@chainsafe/libp2p-noise'\n ];\n async secureOutbound(...args) {\n const { localPeer, connection, remotePeer, signal } = this.parseArgs(args);\n const wrappedConnection = lpStream(connection, {\n lengthEncoder: uint16BEEncode,\n lengthDecoder: uint16BEDecode,\n maxDataLength: NOISE_MSG_MAX_LENGTH_BYTES\n });\n if (!localPeer.privateKey) {\n throw new CodeError('local peerId does not contain private key', 'ERR_NO_PRIVATE_KEY');\n }\n const privateKey = await unmarshalPrivateKey(localPeer.privateKey);\n const remoteIdentityKey = remotePeer?.publicKey;\n const handshake = await this.performHandshakeInitiator(wrappedConnection, privateKey, remoteIdentityKey, {\n signal\n });\n const conn = await this.createSecureConnection(wrappedConnection, handshake);\n connection.source = conn.source;\n connection.sink = conn.sink;\n return {\n conn: connection,\n remoteExtensions: handshake.payload.extensions,\n remotePeer: await peerIdFromKeys(handshake.payload.identityKey)\n };\n }\n async secureInbound(...args) {\n const { localPeer, connection, remotePeer, signal } = this.parseArgs(args);\n const wrappedConnection = lpStream(connection, {\n lengthEncoder: uint16BEEncode,\n lengthDecoder: uint16BEDecode,\n maxDataLength: NOISE_MSG_MAX_LENGTH_BYTES\n });\n if (!localPeer.privateKey) {\n throw new CodeError('local peerId does not contain private key', 'ERR_NO_PRIVATE_KEY');\n }\n const privateKey = await unmarshalPrivateKey(localPeer.privateKey);\n const remoteIdentityKey = remotePeer?.publicKey;\n const handshake = await this.performHandshakeResponder(wrappedConnection, privateKey, remoteIdentityKey, {\n signal\n });\n const conn = await this.createSecureConnection(wrappedConnection, handshake);\n connection.source = conn.source;\n connection.sink = conn.sink;\n return {\n conn: connection,\n remoteExtensions: handshake.payload.extensions,\n remotePeer: await peerIdFromKeys(handshake.payload.identityKey)\n };\n }\n /**\n * Perform XX handshake as initiator.\n */\n async performHandshakeInitiator(connection, \n // TODO: pass private key in noise constructor via Components\n privateKey, remoteIdentityKey, options) {\n let result;\n try {\n result = await performHandshakeInitiator({\n connection,\n privateKey,\n remoteIdentityKey,\n log: this.components.logger.forComponent('libp2p:noise:xxhandshake'),\n crypto: this.crypto,\n prologue: this.prologue,\n s: this.staticKey,\n extensions: this.extensions\n }, options);\n this.metrics?.xxHandshakeSuccesses.increment();\n }\n catch (e) {\n this.metrics?.xxHandshakeErrors.increment();\n throw e;\n }\n return result;\n }\n /**\n * Perform XX handshake as responder.\n */\n async performHandshakeResponder(connection, \n // TODO: pass private key in noise constructor via Components\n privateKey, remoteIdentityKey, options) {\n let result;\n try {\n result = await performHandshakeResponder({\n connection,\n privateKey,\n remoteIdentityKey,\n log: this.components.logger.forComponent('libp2p:noise:xxhandshake'),\n crypto: this.crypto,\n prologue: this.prologue,\n s: this.staticKey,\n extensions: this.extensions\n }, options);\n this.metrics?.xxHandshakeSuccesses.increment();\n }\n catch (e) {\n this.metrics?.xxHandshakeErrors.increment();\n throw e;\n }\n return result;\n }\n async createSecureConnection(connection, handshake) {\n // Create encryption box/unbox wrapper\n const [secure, user] = duplexPair();\n const network = connection.unwrap();\n await pipe(secure, // write to wrapper\n encryptStream(handshake, this.metrics), // encrypt data + prefix with message length\n network, // send to the remote peer\n (source) => decode(source, { lengthDecoder: uint16BEDecode }), // read message length prefix\n decryptStream(handshake, this.metrics), // decrypt the incoming data\n secure // pipe to the wrapper\n );\n return user;\n }\n /**\n * Detect call signature in `libp2p@1.x.x` or `libp2p@2.x.x` style.\n *\n * TODO: remove this after `libp2p@2.x.x` is released and only support the\n * newer style\n */\n parseArgs(args) {\n // if the first argument is a peer id, we're using the libp2p@1.x.x style\n if (isPeerId(args[0])) {\n return {\n localPeer: args[0],\n connection: args[1],\n remotePeer: args[2]\n };\n }\n else {\n // handle upcoming changes in libp2p@2.x.x where the first argument is the\n // connection and the second is optionally the remote peer\n // @see https://github.com/libp2p/js-libp2p/pull/2304\n return {\n localPeer: this.components.peerId,\n connection: args[0],\n remotePeer: args[1]?.remotePeer,\n signal: args[1]?.signal\n };\n }\n }\n}\n//# sourceMappingURL=noise.js.map","import { Noise } from './noise.js';\nexport { pureJsCrypto } from './crypto/js.js';\nexport function noise(init = {}) {\n return (components) => new Noise(components, init);\n}\n//# sourceMappingURL=index.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});\n//# sourceMappingURL=base10.js.map","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});\n//# sourceMappingURL=base16.js.map","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});\n//# sourceMappingURL=base2.js.map","import { from } from './base.js';\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂');\nconst alphabetBytesToChars = (alphabet.reduce((p, c, i) => { p[i] = c; return p; }, ([])));\nconst alphabetCharsToBytes = (alphabet.reduce((p, c, i) => { p[c.codePointAt(0)] = i; return p; }, ([])));\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${char}`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n});\n//# sourceMappingURL=base256emoji.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base36.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});\n//# sourceMappingURL=base8.js.map","import { fromString, toString } from '../bytes.js';\nimport { from } from './base.js';\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n});\n//# sourceMappingURL=identity.js.map","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 0x0200;\nexport function encode(node) {\n return textEncoder.encode(JSON.stringify(node));\n}\nexport function decode(data) {\n return JSON.parse(textDecoder.decode(data));\n}\n//# sourceMappingURL=json.js.map","import * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base2 from './bases/base2.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base8 from './bases/base8.js';\nimport * as identityBase from './bases/identity.js';\nimport * as json from './codecs/json.js';\nimport * as raw from './codecs/raw.js';\nimport * as identity from './hashes/identity.js';\nimport * as sha2 from './hashes/sha2.js';\nimport { CID, hasher, digest, varint, bytes } from './index.js';\nexport const bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji };\nexport const hashes = { ...sha2, ...identity };\nexport const codecs = { raw, json };\nexport { CID, hasher, digest, varint, bytes };\n//# sourceMappingURL=basics.js.map","import {} from '@multiformats/multiaddr';\nimport { bases, digest } from 'multiformats/basics';\nimport { inappropriateMultiaddr, invalidArgument, invalidFingerprint, unsupportedHashAlgorithmCode } from '../error.js';\nimport { MAX_MESSAGE_SIZE } from '../stream.js';\nimport { CERTHASH_CODE } from './transport.js';\n/**\n * Get base2 | identity decoders\n */\n// @ts-expect-error - Not easy to combine these types.\nexport const mbdecoder = Object.values(bases).map(b => b.decoder).reduce((d, b) => d.or(b));\nexport function getLocalFingerprint(pc, options) {\n // try to fetch fingerprint from local certificate\n const localCert = pc.getConfiguration().certificates?.at(0);\n if (localCert?.getFingerprints == null) {\n options.log.trace('fetching fingerprint from local SDP');\n const localDescription = pc.localDescription;\n if (localDescription == null) {\n return undefined;\n }\n return getFingerprintFromSdp(localDescription.sdp);\n }\n options.log.trace('fetching fingerprint from local certificate');\n if (localCert.getFingerprints().length === 0) {\n return undefined;\n }\n const fingerprint = localCert.getFingerprints()[0].value;\n if (fingerprint == null) {\n throw invalidFingerprint('', 'no fingerprint on local certificate');\n }\n return fingerprint;\n}\nconst fingerprintRegex = /^a=fingerprint:(?:\\w+-[0-9]+)\\s(?(:?[0-9a-fA-F]{2})+)$/m;\nexport function getFingerprintFromSdp(sdp) {\n const searchResult = sdp.match(fingerprintRegex);\n return searchResult?.groups?.fingerprint;\n}\n/**\n * Get base2 | identity decoders\n */\nfunction ipv(ma) {\n for (const proto of ma.protoNames()) {\n if (proto.startsWith('ip')) {\n return proto.toUpperCase();\n }\n }\n return 'IP6';\n}\n// Extract the certhash from a multiaddr\nexport function certhash(ma) {\n const tups = ma.stringTuples();\n const certhash = tups.filter((tup) => tup[0] === CERTHASH_CODE).map((tup) => tup[1])[0];\n if (certhash === undefined || certhash === '') {\n throw inappropriateMultiaddr(`Couldn't find a certhash component of multiaddr: ${ma.toString()}`);\n }\n return certhash;\n}\n/**\n * Convert a certhash into a multihash\n */\nexport function decodeCerthash(certhash) {\n return digest.decode(mbdecoder.decode(certhash));\n}\n/**\n * Extract the fingerprint from a multiaddr\n */\nexport function ma2Fingerprint(ma) {\n const mhdecoded = decodeCerthash(certhash(ma));\n const prefix = toSupportedHashFunction(mhdecoded.code);\n const fingerprint = mhdecoded.digest.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n const sdp = fingerprint.match(/.{1,2}/g);\n if (sdp == null) {\n throw invalidFingerprint(fingerprint, ma.toString());\n }\n return [`${prefix} ${sdp.join(':').toUpperCase()}`, fingerprint];\n}\n/**\n * Normalize the hash name from a given multihash has name\n */\nexport function toSupportedHashFunction(code) {\n switch (code) {\n case 0x11:\n return 'SHA-1';\n case 0x12:\n return 'SHA-256';\n case 0x13:\n return 'SHA-512';\n default:\n throw unsupportedHashAlgorithmCode(code);\n }\n}\n/**\n * Convert a multiaddr into a SDP\n */\nfunction ma2sdp(ma, ufrag) {\n const { host, port } = ma.toOptions();\n const ipVersion = ipv(ma);\n const [CERTFP] = ma2Fingerprint(ma);\n return `v=0\no=- 0 0 IN ${ipVersion} ${host}\ns=-\nc=IN ${ipVersion} ${host}\nt=0 0\na=ice-lite\nm=application ${port} UDP/DTLS/SCTP webrtc-datachannel\na=mid:0\na=setup:passive\na=ice-ufrag:${ufrag}\na=ice-pwd:${ufrag}\na=fingerprint:${CERTFP}\na=sctp-port:5000\na=max-message-size:${MAX_MESSAGE_SIZE}\na=candidate:1467250027 1 UDP 1467250027 ${host} ${port} typ host\\r\\n`;\n}\n/**\n * Create an answer SDP from a multiaddr\n */\nexport function fromMultiAddr(ma, ufrag) {\n return {\n type: 'answer',\n sdp: ma2sdp(ma, ufrag)\n };\n}\n/**\n * Replace (munge) the ufrag and password values in a SDP\n */\nexport function munge(desc, ufrag) {\n if (desc.sdp === undefined) {\n throw invalidArgument(\"Can't munge a missing SDP\");\n }\n desc.sdp = desc.sdp\n .replace(/\\na=ice-ufrag:[^\\n]*\\n/, '\\na=ice-ufrag:' + ufrag + '\\n')\n .replace(/\\na=ice-pwd:[^\\n]*\\n/, '\\na=ice-pwd:' + ufrag + '\\n');\n return desc;\n}\n//# sourceMappingURL=sdp.js.map","const charset = Array.from('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/');\nexport const genUfrag = (len) => [...Array(len)].map(() => charset.at(Math.floor(Math.random() * charset.length))).join('');\n//# sourceMappingURL=util.js.map","import { noise } from '@chainsafe/libp2p-noise';\nimport { transportSymbol, serviceCapabilities } from '@libp2p/interface';\nimport * as p from '@libp2p/peer-id';\nimport { protocols } from '@multiformats/multiaddr';\nimport { WebRTCDirect } from '@multiformats/multiaddr-matcher';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { concat } from 'uint8arrays/concat';\nimport { fromString as uint8arrayFromString } from 'uint8arrays/from-string';\nimport { dataChannelError, inappropriateMultiaddr, unimplemented, invalidArgument } from '../error.js';\nimport { WebRTCMultiaddrConnection } from '../maconn.js';\nimport { DataChannelMuxerFactory } from '../muxer.js';\nimport { createStream } from '../stream.js';\nimport { getRtcConfiguration, isFirefox } from '../util.js';\nimport { RTCPeerConnection } from '../webrtc/index.js';\nimport * as sdp from './sdp.js';\nimport { genUfrag } from './util.js';\n/**\n * The time to wait, in milliseconds, for the data channel handshake to complete\n */\nconst HANDSHAKE_TIMEOUT_MS = 10_000;\n/**\n * Created by converting the hexadecimal protocol code to an integer.\n *\n * {@link https://github.com/multiformats/multiaddr/blob/master/protocols.csv}\n */\nexport const WEBRTC_CODE = protocols('webrtc-direct').code;\n/**\n * Created by converting the hexadecimal protocol code to an integer.\n *\n * {@link https://github.com/multiformats/multiaddr/blob/master/protocols.csv}\n */\nexport const CERTHASH_CODE = protocols('certhash').code;\nexport class WebRTCDirectTransport {\n log;\n metrics;\n components;\n init;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('libp2p:webrtc-direct');\n this.components = components;\n this.init = init;\n if (components.metrics != null) {\n this.metrics = {\n dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc-direct_dialer_events_total', {\n label: 'event',\n help: 'Total count of WebRTC-direct dial events by type'\n })\n };\n }\n }\n [transportSymbol] = true;\n [Symbol.toStringTag] = '@libp2p/webrtc-direct';\n [serviceCapabilities] = [\n '@libp2p/transport'\n ];\n /**\n * Dial a given multiaddr\n */\n async dial(ma, options) {\n const rawConn = await this._connect(ma, options);\n this.log('dialing address: %a', ma);\n return rawConn;\n }\n /**\n * Create transport listeners no supported by browsers\n */\n createListener(options) {\n throw unimplemented('WebRTCTransport.createListener');\n }\n /**\n * Filter check for all Multiaddrs that this transport can listen on\n */\n listenFilter(multiaddrs) {\n return multiaddrs.filter(WebRTCDirect.exactMatch);\n }\n /**\n * Filter check for all Multiaddrs that this transport can dial\n */\n dialFilter(multiaddrs) {\n return this.listenFilter(multiaddrs);\n }\n /**\n * Connect to a peer using a multiaddr\n */\n async _connect(ma, options) {\n const controller = new AbortController();\n const signal = controller.signal;\n const remotePeerString = ma.getPeerId();\n if (remotePeerString === null) {\n throw inappropriateMultiaddr(\"we need to have the remote's PeerId\");\n }\n const theirPeerId = p.peerIdFromString(remotePeerString);\n const remoteCerthash = sdp.decodeCerthash(sdp.certhash(ma));\n // ECDSA is preferred over RSA here. From our testing we find that P-256 elliptic\n // curve is supported by Pion, webrtc-rs, as well as Chromium (P-228 and P-384\n // was not supported in Chromium). We use the same hash function as found in the\n // multiaddr if it is supported.\n const certificate = await RTCPeerConnection.generateCertificate({\n name: 'ECDSA',\n namedCurve: 'P-256',\n hash: sdp.toSupportedHashFunction(remoteCerthash.code)\n });\n const peerConnection = new RTCPeerConnection({\n ...(await getRtcConfiguration(this.init.rtcConfiguration)),\n certificates: [certificate]\n });\n try {\n // create data channel for running the noise handshake. Once the data channel is opened,\n // the remote will initiate the noise handshake. This is used to confirm the identity of\n // the peer.\n const dataChannelOpenPromise = new Promise((resolve, reject) => {\n const handshakeDataChannel = peerConnection.createDataChannel('', { negotiated: true, id: 0 });\n const handshakeTimeout = setTimeout(() => {\n const error = `Data channel was never opened: state: ${handshakeDataChannel.readyState}`;\n this.log.error(error);\n this.metrics?.dialerEvents.increment({ open_error: true });\n reject(dataChannelError('data', error));\n }, HANDSHAKE_TIMEOUT_MS);\n handshakeDataChannel.onopen = (_) => {\n clearTimeout(handshakeTimeout);\n resolve(handshakeDataChannel);\n };\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/error_event\n handshakeDataChannel.onerror = (event) => {\n clearTimeout(handshakeTimeout);\n const errorTarget = event.target?.toString() ?? 'not specified';\n const error = `Error opening a data channel for handshaking: ${errorTarget}`;\n this.log.error(error);\n // NOTE: We use unknown error here but this could potentially be considered a reset by some standards.\n this.metrics?.dialerEvents.increment({ unknown_error: true });\n reject(dataChannelError('data', error));\n };\n });\n const ufrag = 'libp2p+webrtc+v1/' + genUfrag(32);\n // Create offer and munge sdp with ufrag == pwd. This allows the remote to\n // respond to STUN messages without performing an actual SDP exchange.\n // This is because it can infer the passwd field by reading the USERNAME\n // attribute of the STUN message.\n const offerSdp = await peerConnection.createOffer();\n const mungedOfferSdp = sdp.munge(offerSdp, ufrag);\n await peerConnection.setLocalDescription(mungedOfferSdp);\n // construct answer sdp from multiaddr and ufrag\n const answerSdp = sdp.fromMultiAddr(ma, ufrag);\n await peerConnection.setRemoteDescription(answerSdp);\n // wait for peerconnection.onopen to fire, or for the datachannel to open\n const handshakeDataChannel = await dataChannelOpenPromise;\n const myPeerId = this.components.peerId;\n // Do noise handshake.\n // Set the Noise Prologue to libp2p-webrtc-noise: before starting the actual Noise handshake.\n // is the concatenation of the of the two TLS fingerprints of A and B in their multihash byte representation, sorted in ascending order.\n const fingerprintsPrologue = this.generateNoisePrologue(peerConnection, remoteCerthash.code, ma);\n // Since we use the default crypto interface and do not use a static key or early data,\n // we pass in undefined for these parameters.\n const connectionEncrypter = noise({ prologueBytes: fingerprintsPrologue })(this.components);\n const wrappedChannel = createStream({\n channel: handshakeDataChannel,\n direction: 'inbound',\n logger: this.components.logger,\n ...(this.init.dataChannel ?? {})\n });\n const wrappedDuplex = {\n ...wrappedChannel,\n sink: wrappedChannel.sink.bind(wrappedChannel),\n source: (async function* () {\n for await (const list of wrappedChannel.source) {\n for (const buf of list) {\n yield buf;\n }\n }\n }())\n };\n // Creating the connection before completion of the noise\n // handshake ensures that the stream opening callback is set up\n const maConn = new WebRTCMultiaddrConnection(this.components, {\n peerConnection,\n remoteAddr: ma,\n timeline: {\n open: Date.now()\n },\n metrics: this.metrics?.dialerEvents\n });\n const eventListeningName = isFirefox ? 'iceconnectionstatechange' : 'connectionstatechange';\n peerConnection.addEventListener(eventListeningName, () => {\n switch (peerConnection.connectionState) {\n case 'failed':\n case 'disconnected':\n case 'closed':\n maConn.close().catch((err) => {\n this.log.error('error closing connection', err);\n }).finally(() => {\n // Remove the event listener once the connection is closed\n controller.abort();\n });\n break;\n default:\n break;\n }\n }, { signal });\n // Track opened peer connection\n this.metrics?.dialerEvents.increment({ peer_connection: true });\n const muxerFactory = new DataChannelMuxerFactory(this.components, {\n peerConnection,\n metrics: this.metrics?.dialerEvents,\n dataChannelOptions: this.init.dataChannel\n });\n // For outbound connections, the remote is expected to start the noise handshake.\n // Therefore, we need to secure an inbound noise connection from the remote.\n await connectionEncrypter.secureInbound(myPeerId, wrappedDuplex, theirPeerId);\n return await options.upgrader.upgradeOutbound(maConn, { skipProtection: true, skipEncryption: true, muxerFactory });\n }\n catch (err) {\n peerConnection.close();\n throw err;\n }\n }\n /**\n * Generate a noise prologue from the peer connection's certificate.\n * noise prologue = bytes('libp2p-webrtc-noise:') + noise-responder fingerprint + noise-initiator fingerprint\n */\n generateNoisePrologue(pc, hashCode, ma) {\n if (pc.getConfiguration().certificates?.length === 0) {\n throw invalidArgument('no local certificate');\n }\n const localFingerprint = sdp.getLocalFingerprint(pc, {\n log: this.log\n });\n if (localFingerprint == null) {\n throw invalidArgument('no local fingerprint found');\n }\n const localFpString = localFingerprint.trim().toLowerCase().replaceAll(':', '');\n const localFpArray = uint8arrayFromString(localFpString, 'hex');\n const local = Digest.create(hashCode, localFpArray);\n const remote = sdp.mbdecoder.decode(sdp.certhash(ma));\n const prefix = uint8arrayFromString('libp2p-webrtc-noise:');\n return concat([prefix, local.bytes, remote]);\n }\n}\n//# sourceMappingURL=transport.js.map","/**\n * @packageDocumentation\n *\n * A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebRTC datachannels](https://webrtc.org/).\n *\n * [WebRTC](https://www.w3.org/TR/webrtc/) is a specification that allows real-time communication between nodes - it's commonly used in browser video conferencing applications but it also provides a reliable data transport mechanism called [data channels](https://www.w3.org/TR/webrtc/#peer-to-peer-data-api) which libp2p uses to facilitate [protocol streams](https://docs.libp2p.io/concepts/multiplex/overview/) between peers.\n *\n * There are two transports exposed by this module, [webRTC](https://github.com/libp2p/specs/blob/master/webrtc/webrtc.md) and [webRTCDirect](https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md).\n *\n * ## WebRTC vs WebRTC Direct\n *\n * The connection establishment phase of WebRTC involves a handshake using [SDP](https://en.wikipedia.org/wiki/Session_Description_Protocol) during which two peers will exchange information such as open ports, network addresses and required capabilities.\n *\n * A third party is usually necessary to carry out this handshake, forwarding messages between the two peers until they can make a direct connection between themselves.\n *\n * The WebRTC transport uses libp2p [Circuit Relay](https://docs.libp2p.io/concepts/nat/circuit-relay/)s to forward SDP messages. Once a direct connection is formed the relay plays no further part in the exchange.\n *\n * WebRTC Direct uses a technique known as [SDP munging](https://webrtchacks.com/not-a-guide-to-sdp-munging/) to skip the handshake step, instead encoding enough information in the connection request that the responder can derive what would have been in the handshake messages and so requires no third parties to establish a connection.\n *\n * A WebRTC Direct multiaddr also includes a certhash of the target peer - this is used to allow opening a connection to the remote, which would otherwise be denied due to use of a self-signed certificate.\n *\n * In both cases, once the connection is established a [Noise handshake](https://noiseprotocol.org/noise.html) is carried out to ensure that the remote peer has the private key that corresponds to the public key that makes up their PeerId, giving you both encryption and authentication.\n *\n * ## Support\n *\n * WebRTC is supported in both Node.js and browsers.\n *\n * At the time of writing, WebRTC Direct is dial-only in browsers and not supported in Node.js at all.\n *\n * Support in Node.js is possible but PRs will need to be opened to [libdatachannel](https://github.com/paullouisageneau/libdatachannel) and the appropriate APIs exposed in [node-datachannel](https://github.com/murat-dogan/node-datachannel).\n *\n * WebRTC Direct support is available in rust-libp2p and arriving soon in go-libp2p.\n *\n * See the WebRTC section of https://connectivity.libp2p.io for more information.\n *\n * @example WebRTC\n *\n * WebRTC requires use of a relay to connect two nodes. The listener first discovers a relay server and makes a reservation, then the dialer can connect via the relayed address.\n *\n * ```TypeScript\n * import { noise } from '@chainsafe/libp2p-noise'\n * import { yamux } from '@chainsafe/libp2p-yamux'\n * import { echo } from '@libp2p/echo'\n * import { circuitRelayTransport, circuitRelayServer } from '@libp2p/circuit-relay-v2'\n * import { identify } from '@libp2p/identify'\n * import { webRTC } from '@libp2p/webrtc'\n * import { webSockets } from '@libp2p/websockets'\n * import * as filters from '@libp2p/websockets/filters'\n * import { WebRTC } from '@multiformats/multiaddr-matcher'\n * import delay from 'delay'\n * import { pipe } from 'it-pipe'\n * import { createLibp2p } from 'libp2p'\n * import type { Multiaddr } from '@multiformats/multiaddr'\n *\n * // the relay server listens on a transport dialable by the listener and the\n * // dialer, and has a relay service configured\n * const relay = await createLibp2p({\n * addresses: {\n * listen: ['/ip4/127.0.0.1/tcp/0/ws']\n * },\n * transports: [\n * webSockets({filter: filters.all})\n * ],\n * connectionEncryption: [noise()],\n * streamMuxers: [yamux()],\n * services: {\n * identify: identify(),\n * relay: circuitRelayServer()\n * }\n * })\n *\n * // the listener has a WebSocket transport to dial the relay, a Circuit Relay\n * // transport to make a reservation, and a WebRTC transport to accept incoming\n * // WebRTC connections\n * const listener = await createLibp2p({\n * addresses: {\n * listen: ['/webrtc']\n * },\n * transports: [\n * webSockets({filter: filters.all}),\n * webRTC(),\n * circuitRelayTransport({\n * discoverRelays: 1\n * })\n * ],\n * connectionEncryption: [noise()],\n * streamMuxers: [yamux()],\n * services: {\n * identify: identify(),\n * echo: echo()\n * }\n * })\n *\n * // the listener dials the relay (or discovers a public relay via some other\n * // method)\n * await listener.dial(relay.getMultiaddrs(), {\n * signal: AbortSignal.timeout(5000)\n * })\n *\n * let webRTCMultiaddr: Multiaddr | undefined\n *\n * // wait for the listener to make a reservation on the relay\n * while (true) {\n * webRTCMultiaddr = listener.getMultiaddrs().find(ma => WebRTC.matches(ma))\n *\n * if (webRTCMultiaddr != null) {\n * break\n * }\n *\n * // try again later\n * await delay(1000)\n * }\n *\n * // the dialer has Circuit Relay, WebSocket and WebRTC transports to dial\n * // the listener via the relay, complete the SDP handshake and establish a\n * // direct WebRTC connection\n * const dialer = await createLibp2p({\n * transports: [\n * webSockets({filter: filters.all}),\n * webRTC(),\n * circuitRelayTransport()\n * ],\n * connectionEncryption: [noise()],\n * streamMuxers: [yamux()],\n * services: {\n * identify: identify(),\n * echo: echo()\n * }\n * })\n *\n * // dial the listener and open an echo protocol stream\n * const stream = await dialer.dialProtocol(webRTCMultiaddr, dialer.services.echo.protocol, {\n * signal: AbortSignal.timeout(5000)\n * })\n *\n * // we can now stop the relay\n * await relay.stop()\n *\n * // send/receive some data from the remote peer via a direct connection\n * await pipe(\n * [new TextEncoder().encode('hello world')],\n * stream,\n * async source => {\n * for await (const buf of source) {\n * console.info(new TextDecoder().decode(buf.subarray()))\n * }\n * }\n * )\n * ```\n *\n * @example WebRTC Direct\n *\n * At the time of writing WebRTC Direct is dial-only in browsers and unsupported in Node.js.\n *\n * The only implementation that supports a WebRTC Direct listener is go-libp2p and it's not yet enabled by default.\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { noise } from '@chainsafe/libp2p-noise'\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { pipe } from 'it-pipe'\n * import { fromString, toString } from 'uint8arrays'\n * import { webRTCDirect } from '@libp2p/webrtc'\n *\n * const node = await createLibp2p({\n * transports: [\n * webRTCDirect()\n * ],\n * connectionEncryption: [\n * noise()\n * ]\n * })\n *\n * await node.start()\n *\n * // this multiaddr corresponds to a remote node running a WebRTC Direct listener\n * const ma = multiaddr('/ip4/0.0.0.0/udp/56093/webrtc-direct/certhash/uEiByaEfNSLBexWBNFZy_QB1vAKEj7JAXDizRs4_SnTflsQ')\n * const stream = await node.dialProtocol(ma, '/my-protocol/1.0.0', {\n * signal: AbortSignal.timeout(10_000)\n * })\n *\n * await pipe(\n * [fromString(`Hello js-libp2p-webrtc\\n`)],\n * stream,\n * async function (source) {\n * for await (const buf of source) {\n * console.info(toString(buf.subarray()))\n * }\n * }\n * )\n * ```\n */\nimport { WebRTCTransport } from './private-to-private/transport.js';\nimport { WebRTCDirectTransport } from './private-to-public/transport.js';\n/**\n * @param {WebRTCTransportDirectInit} init - WebRTC direct transport configuration\n * @param init.dataChannel - DataChannel configurations\n * @param {number} init.dataChannel.maxMessageSize - Max message size that can be sent through the DataChannel. Larger messages will be chunked into smaller messages below this size (default 16kb)\n * @param {number} init.dataChannel.maxBufferedAmount - Max buffered amount a DataChannel can have (default 16mb)\n * @param {number} init.dataChannel.bufferedAmountLowEventTimeout - If max buffered amount is reached, this is the max time that is waited before the buffer is cleared (default 30 seconds)\n * @returns\n */\nfunction webRTCDirect(init) {\n return (components) => new WebRTCDirectTransport(components, init);\n}\n/**\n * @param {WebRTCTransportInit} init - WebRTC transport configuration\n * @param {RTCConfiguration} init.rtcConfiguration - RTCConfiguration\n * @param init.dataChannel - DataChannel configurations\n * @param {number} init.dataChannel.maxMessageSize - Max message size that can be sent through the DataChannel. Larger messages will be chunked into smaller messages below this size (default 16kb)\n * @param {number} init.dataChannel.maxBufferedAmount - Max buffered amount a DataChannel can have (default 16mb)\n * @param {number} init.dataChannel.bufferedAmountLowEventTimeout - If max buffered amount is reached, this is the max time that is waited before the buffer is cleared (default 30 seconds)\n * @returns\n */\nfunction webRTC(init) {\n return (components) => new WebRTCTransport(components, init);\n}\nexport { webRTC, webRTCDirect };\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * This module allows easy conversion of Multiaddrs to string URIs.\n *\n * @example Converting multiaddrs to string URIs\n *\n * ```js\n * import { multiaddrToUri } from '@multiformats/multiaddr-to-uri'\n *\n * console.log(multiaddrToUri('/dnsaddr/protocol.ai/https'))\n * // -> https://protocol.ai\n *\n * console.log(multiaddrToUri('/ip4/127.0.0.1/tcp/8080'))\n * // -> http://127.0.0.1:8080\n *\n * console.log(multiaddrToUri('/ip4/127.0.0.1/tcp/8080', { assumeHttp: false }))\n * // -> tcp://127.0.0.1:8080\n * ```\n *\n * Note:\n *\n * - When `/tcp` is the last (terminating) protocol HTTP is assumed by default (implicit `assumeHttp: true`)\n * - this means produced URIs will start with `http://` instead of `tcp://`\n * - passing `{ assumeHttp: false }` disables this behavior\n * - Might be lossy - e.g. a DNSv6 multiaddr\n * - Can throw if the passed multiaddr:\n * - is not a valid multiaddr\n * - is not supported as a URI e.g. circuit\n */\nimport { multiaddr, protocols } from '@multiformats/multiaddr';\nconst ASSUME_HTTP_CODES = [\n protocols('tcp').code,\n protocols('dns').code,\n protocols('dnsaddr').code,\n protocols('dns4').code,\n protocols('dns6').code\n];\nfunction extractSNI(ma) {\n let sniProtoCode;\n try {\n sniProtoCode = protocols('sni').code;\n }\n catch (e) {\n // No SNI protocol in multiaddr\n return null;\n }\n for (const [proto, value] of ma) {\n if (proto === sniProtoCode && value !== undefined) {\n return value;\n }\n }\n return null;\n}\nfunction hasTLS(ma) {\n return ma.some(([proto, _]) => proto === protocols('tls').code);\n}\nfunction interpretNext(headProtoCode, headProtoVal, restMa) {\n const interpreter = interpreters[protocols(headProtoCode).name];\n if (interpreter === undefined) {\n throw new Error(`Can't interpret protocol ${protocols(headProtoCode).name}`);\n }\n const restVal = interpreter(headProtoVal, restMa);\n if (headProtoCode === protocols('ip6').code) {\n return `[${restVal}]`;\n }\n return restVal;\n}\nconst interpreters = {\n ip4: (value, restMa) => value,\n ip6: (value, restMa) => {\n if (restMa.length === 0) {\n return value;\n }\n return `[${value}]`;\n },\n tcp: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `tcp://${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}:${value}`;\n },\n udp: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `udp://${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}:${value}`;\n },\n dnsaddr: (value, restMa) => value,\n dns4: (value, restMa) => value,\n dns6: (value, restMa) => value,\n dns: (value, restMa) => value,\n ipfs: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}/ipfs/${value}`;\n },\n p2p: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}/p2p/${value}`;\n },\n http: (value, restMa) => {\n const maHasTLS = hasTLS(restMa);\n const sni = extractSNI(restMa);\n if (maHasTLS && sni !== null) {\n return `https://${sni}`;\n }\n const protocol = maHasTLS ? 'https://' : 'http://';\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n let baseVal = interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n // We are reinterpreting the base as http, so we need to remove the tcp:// if it's there\n baseVal = baseVal.replace('tcp://', '');\n return `${protocol}${baseVal}`;\n },\n 'http-path': (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n const baseVal = interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n const decodedValue = decodeURIComponent(value);\n return `${baseVal}/${decodedValue}`;\n },\n tls: (value, restMa) => {\n // Noop, the parent context knows that it's tls. We don't need to do\n // anything here\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n },\n sni: (value, restMa) => {\n // Noop, the parent context uses the sni information, we don't need to do\n // anything here\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n },\n https: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n let baseVal = interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n // We are reinterpreting the base as http, so we need to remove the tcp:// if it's there\n baseVal = baseVal.replace('tcp://', '');\n return `https://${baseVal}`;\n },\n ws: (value, restMa) => {\n const maHasTLS = hasTLS(restMa);\n const sni = extractSNI(restMa);\n if (maHasTLS && sni !== null) {\n return `wss://${sni}`;\n }\n const protocol = maHasTLS ? 'wss://' : 'ws://';\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n let baseVal = interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n // We are reinterpreting the base, so we need to remove the tcp:// if it's there\n baseVal = baseVal.replace('tcp://', '');\n return `${protocol}${baseVal}`;\n },\n wss: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n let baseVal = interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n // We are reinterpreting the base as http, so we need to remove the tcp:// if it's there\n baseVal = baseVal.replace('tcp://', '');\n return `wss://${baseVal}`;\n },\n 'p2p-websocket-star': (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}/p2p-websocket-star`;\n },\n 'p2p-webrtc-star': (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}/p2p-webrtc-star`;\n },\n 'p2p-webrtc-direct': (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}/p2p-webrtc-direct`;\n }\n};\nexport function multiaddrToUri(input, opts) {\n const ma = multiaddr(input);\n const parts = ma.stringTuples();\n const head = parts.pop();\n if (head === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n const protocol = protocols(head[0]);\n const interpreter = interpreters[protocol.name];\n if (interpreter == null) {\n throw new Error(`No interpreter found for ${protocol.name}`);\n }\n let uri = interpreter(head[1] ?? '', parts);\n if (opts?.assumeHttp !== false && ASSUME_HTTP_CODES.includes(head[0])) {\n // strip any declared protocol\n uri = uri.replace(/^.*:\\/\\//, '');\n if (head[1] === '443') {\n uri = `https://${uri}`;\n }\n else {\n uri = `http://${uri}`;\n }\n }\n if (uri.startsWith('http://') || uri.startsWith('https://')) {\n // this will strip default ports while keeping paths intact\n uri = new URL(uri).toString();\n // strip trailing slash, e.g. http://127.0.0.1/ -> http://127.0.0.1\n if (uri.endsWith('/')) {\n uri = uri.substring(0, uri.length - 1);\n }\n }\n return uri;\n}\n//# sourceMappingURL=index.js.map","export default async (socket) => {\n // if the socket is closing or closed, return end\n if (socket.readyState >= 2) {\n throw new Error('socket closed');\n }\n // if open, return\n if (socket.readyState === 1) {\n return;\n }\n await new Promise((resolve, reject) => {\n function cleanup() {\n socket.removeEventListener('open', handleOpen);\n socket.removeEventListener('error', handleErr);\n }\n function handleOpen() {\n cleanup();\n resolve();\n }\n function handleErr(event) {\n cleanup();\n reject(event.error ?? new Error(`connect ECONNREFUSED ${socket.url}`));\n }\n socket.addEventListener('open', handleOpen);\n socket.addEventListener('error', handleErr);\n });\n};\n//# sourceMappingURL=ready.js.map","import ready from './ready.js';\nexport default (socket, options) => {\n options = options ?? {};\n options.closeOnEnd = options.closeOnEnd !== false;\n const sink = async (source) => {\n for await (const data of source) {\n try {\n await ready(socket);\n }\n catch (err) {\n if (err.message === 'socket closed')\n break;\n throw err;\n }\n // the ready promise resolved without error but the socket was closing so\n // exit the loop and don't send data\n if (socket.readyState === socket.CLOSING || socket.readyState === socket.CLOSED) {\n break;\n }\n socket.send(data);\n }\n if (options.closeOnEnd != null && socket.readyState <= 1) {\n await new Promise((resolve, reject) => {\n socket.addEventListener('close', event => {\n if (event.wasClean || event.code === 1006) {\n resolve();\n }\n else {\n const err = Object.assign(new Error('ws error'), { event });\n reject(err);\n }\n });\n setTimeout(() => { socket.close(); });\n });\n }\n };\n return sink;\n};\n//# sourceMappingURL=sink.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass EventQueue {\n constructor() {\n this.pullQueue = [];\n this.pushQueue = [];\n this.eventHandlers = {};\n this.isPaused = false;\n this.isStopped = false;\n }\n push(value) {\n if (this.isStopped)\n return;\n const resolution = { value, done: false };\n if (this.pullQueue.length) {\n const placeholder = this.pullQueue.shift();\n if (placeholder)\n placeholder.resolve(resolution);\n }\n else {\n this.pushQueue.push(Promise.resolve(resolution));\n if (this.highWaterMark !== undefined &&\n this.pushQueue.length >= this.highWaterMark &&\n !this.isPaused) {\n this.isPaused = true;\n if (this.eventHandlers.highWater) {\n this.eventHandlers.highWater();\n }\n else if (console) {\n console.warn(`EventIterator queue reached ${this.pushQueue.length} items`);\n }\n }\n }\n }\n stop() {\n if (this.isStopped)\n return;\n this.isStopped = true;\n this.remove();\n for (const placeholder of this.pullQueue) {\n placeholder.resolve({ value: undefined, done: true });\n }\n this.pullQueue.length = 0;\n }\n fail(error) {\n if (this.isStopped)\n return;\n this.isStopped = true;\n this.remove();\n if (this.pullQueue.length) {\n for (const placeholder of this.pullQueue) {\n placeholder.reject(error);\n }\n this.pullQueue.length = 0;\n }\n else {\n const rejection = Promise.reject(error);\n /* Attach error handler to avoid leaking an unhandled promise rejection. */\n rejection.catch(() => { });\n this.pushQueue.push(rejection);\n }\n }\n remove() {\n Promise.resolve().then(() => {\n if (this.removeCallback)\n this.removeCallback();\n });\n }\n [Symbol.asyncIterator]() {\n return {\n next: (value) => {\n const result = this.pushQueue.shift();\n if (result) {\n if (this.lowWaterMark !== undefined &&\n this.pushQueue.length <= this.lowWaterMark &&\n this.isPaused) {\n this.isPaused = false;\n if (this.eventHandlers.lowWater) {\n this.eventHandlers.lowWater();\n }\n }\n return result;\n }\n else if (this.isStopped) {\n return Promise.resolve({ value: undefined, done: true });\n }\n else {\n return new Promise((resolve, reject) => {\n this.pullQueue.push({ resolve, reject });\n });\n }\n },\n return: () => {\n this.isStopped = true;\n this.pushQueue.length = 0;\n this.remove();\n return Promise.resolve({ value: undefined, done: true });\n },\n };\n }\n}\nclass EventIterator {\n constructor(listen, { highWaterMark = 100, lowWaterMark = 1 } = {}) {\n const queue = new EventQueue();\n queue.highWaterMark = highWaterMark;\n queue.lowWaterMark = lowWaterMark;\n queue.removeCallback =\n listen({\n push: value => queue.push(value),\n stop: () => queue.stop(),\n fail: error => queue.fail(error),\n on: (event, fn) => {\n queue.eventHandlers[event] = fn;\n },\n }) || (() => { });\n this[Symbol.asyncIterator] = () => queue[Symbol.asyncIterator]();\n Object.freeze(this);\n }\n}\nexports.EventIterator = EventIterator;\nexports.default = EventIterator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst event_iterator_1 = require(\"./event-iterator\");\nexports.EventIterator = event_iterator_1.EventIterator;\nfunction subscribe(event, options, evOptions) {\n return new event_iterator_1.EventIterator(({ push }) => {\n this.addEventListener(event, push, options);\n return () => this.removeEventListener(event, push, options);\n }, evOptions);\n}\nexports.subscribe = subscribe;\nexports.default = event_iterator_1.EventIterator;\n","import { EventIterator } from 'event-iterator';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\n// copied from github.com/feross/buffer\n// Some ArrayBuffers are not passing the instanceof check, so we need to do a bit more work :(\nfunction isArrayBuffer(obj) {\n return (obj instanceof ArrayBuffer) ||\n (obj?.constructor?.name === 'ArrayBuffer' && typeof obj?.byteLength === 'number');\n}\nexport default (socket) => {\n socket.binaryType = 'arraybuffer';\n const connected = async () => {\n await new Promise((resolve, reject) => {\n if (isConnected) {\n resolve();\n return;\n }\n if (connError != null) {\n reject(connError);\n return;\n }\n const cleanUp = (cont) => {\n socket.removeEventListener('open', onOpen);\n socket.removeEventListener('error', onError);\n cont();\n };\n const onOpen = () => { cleanUp(resolve); };\n const onError = (event) => {\n cleanUp(() => { reject(event.error ?? new Error(`connect ECONNREFUSED ${socket.url}`)); });\n };\n socket.addEventListener('open', onOpen);\n socket.addEventListener('error', onError);\n });\n };\n const source = (async function* () {\n const messages = new EventIterator(({ push, stop, fail }) => {\n const onMessage = (event) => {\n let data = null;\n if (typeof event.data === 'string') {\n data = uint8ArrayFromString(event.data);\n }\n if (isArrayBuffer(event.data)) {\n data = new Uint8Array(event.data);\n }\n if (event.data instanceof Uint8Array) {\n data = event.data;\n }\n if (data == null) {\n return;\n }\n push(data);\n };\n const onError = (event) => { fail(event.error ?? new Error('Socket error')); };\n socket.addEventListener('message', onMessage);\n socket.addEventListener('error', onError);\n socket.addEventListener('close', stop);\n return () => {\n socket.removeEventListener('message', onMessage);\n socket.removeEventListener('error', onError);\n socket.removeEventListener('close', stop);\n };\n }, { highWaterMark: Infinity });\n await connected();\n for await (const chunk of messages) {\n yield isArrayBuffer(chunk) ? new Uint8Array(chunk) : chunk;\n }\n }());\n let isConnected = socket.readyState === 1;\n let connError;\n socket.addEventListener('open', () => {\n isConnected = true;\n connError = null;\n });\n socket.addEventListener('close', () => {\n isConnected = false;\n connError = null;\n });\n socket.addEventListener('error', event => {\n if (!isConnected) {\n connError = event.error ?? new Error(`connect ECONNREFUSED ${socket.url}`);\n }\n });\n return Object.assign(source, {\n connected\n });\n};\n//# sourceMappingURL=source.js.map","import sink from './sink.js';\nimport source from './source.js';\nexport default (socket, options) => {\n options = options ?? {};\n const connectedSource = source(socket);\n let remoteAddress = options.remoteAddress;\n let remotePort = options.remotePort;\n if (socket.url != null) {\n // only client->server sockets have urls, server->client connections do not\n try {\n const url = new URL(socket.url);\n remoteAddress = url.hostname;\n remotePort = parseInt(url.port, 10);\n }\n catch { }\n }\n if (remoteAddress == null || remotePort == null) {\n throw new Error('Remote connection did not have address and/or port');\n }\n const duplex = {\n sink: sink(socket, options),\n source: connectedSource,\n connected: async () => { await connectedSource.connected(); },\n close: async () => {\n if (socket.readyState === socket.CONNECTING || socket.readyState === socket.OPEN) {\n await new Promise((resolve) => {\n socket.addEventListener('close', () => {\n resolve();\n });\n socket.close();\n });\n }\n },\n destroy: () => {\n if (socket.terminate != null) {\n socket.terminate();\n }\n else {\n socket.close();\n }\n },\n remoteAddress,\n remotePort,\n socket\n };\n return duplex;\n};\n//# sourceMappingURL=duplex.js.map","/* eslint-env browser */\nexport default WebSocket;\n//# sourceMappingURL=web-socket.browser.js.map","const map = { 'http:': 'ws:', 'https:': 'wss:' };\nconst defaultProtocol = 'ws:';\nexport default (url, location) => {\n if (url.startsWith('//')) {\n url = `${location?.protocol ?? defaultProtocol}${url}`;\n }\n if (url.startsWith('/') && location != null) {\n const proto = location.protocol ?? defaultProtocol;\n const host = location.host;\n const port = location.port != null && host?.endsWith(`:${location.port}`) !== true ? `:${location.port}` : '';\n url = `${proto}//${host}${port}${url}`;\n }\n const wsUrl = new URL(url);\n for (const [httpProto, wsProto] of Object.entries(map)) {\n if (wsUrl.protocol === httpProto) {\n wsUrl.protocol = wsProto;\n }\n }\n return wsUrl;\n};\n//# sourceMappingURL=ws-url.js.map","// load websocket library if we are not in the browser\nimport duplex from './duplex.js';\nimport WebSocket from './web-socket.js';\nimport wsurl from './ws-url.js';\nexport function connect(addr, opts) {\n const location = typeof window === 'undefined' ? undefined : window.location;\n opts = opts ?? {};\n const url = wsurl(addr, location);\n // it's necessary to stringify the URL object otherwise react-native crashes\n const socket = new WebSocket(url.toString(), opts.websocket);\n return duplex(socket, opts);\n}\n//# sourceMappingURL=client.js.map","// p2p multi-address code\nexport const CODE_P2P = 421;\nexport const CODE_CIRCUIT = 290;\nexport const CODE_TCP = 6;\nexport const CODE_WS = 477;\nexport const CODE_WSS = 478;\n// Time to wait for a connection to close gracefully before destroying it manually\nexport const CLOSE_TIMEOUT = 500;\n//# sourceMappingURL=constants.js.map","import * as mafmt from '@multiformats/mafmt';\nimport { CODE_CIRCUIT, CODE_P2P, CODE_TCP, CODE_WS, CODE_WSS } from './constants.js';\nexport function all(multiaddrs) {\n return multiaddrs.filter((ma) => {\n if (ma.protoCodes().includes(CODE_CIRCUIT)) {\n return false;\n }\n const testMa = ma.decapsulateCode(CODE_P2P);\n return mafmt.WebSockets.matches(testMa) ||\n mafmt.WebSocketsSecure.matches(testMa);\n });\n}\nexport function wss(multiaddrs) {\n return multiaddrs.filter((ma) => {\n if (ma.protoCodes().includes(CODE_CIRCUIT)) {\n return false;\n }\n const testMa = ma.decapsulateCode(CODE_P2P);\n return mafmt.WebSocketsSecure.matches(testMa);\n });\n}\nexport function dnsWss(multiaddrs) {\n return multiaddrs.filter((ma) => {\n if (ma.protoCodes().includes(CODE_CIRCUIT)) {\n return false;\n }\n const testMa = ma.decapsulateCode(CODE_P2P);\n return mafmt.WebSocketsSecure.matches(testMa) &&\n mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WSS));\n });\n}\nexport function dnsWsOrWss(multiaddrs) {\n return multiaddrs.filter((ma) => {\n if (ma.protoCodes().includes(CODE_CIRCUIT)) {\n return false;\n }\n const testMa = ma.decapsulateCode(CODE_P2P);\n // WS\n if (mafmt.WebSockets.matches(testMa)) {\n return mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WS));\n }\n // WSS\n return mafmt.WebSocketsSecure.matches(testMa) &&\n mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WSS));\n });\n}\n//# sourceMappingURL=filters.js.map","export function createListener() {\n throw new Error('WebSocket Servers can not be created in the browser!');\n}\n//# sourceMappingURL=listener.browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { CLOSE_TIMEOUT } from './constants.js';\n// Convert a stream into a MultiaddrConnection\n// https://github.com/libp2p/interface-transport#multiaddrconnection\nexport function socketToMaConn(stream, remoteAddr, options) {\n const log = options.logger.forComponent('libp2p:websockets:maconn');\n const metrics = options.metrics;\n const metricPrefix = options.metricPrefix ?? '';\n const maConn = {\n log,\n async sink(source) {\n try {\n await stream.sink((async function* () {\n for await (const buf of source) {\n if (buf instanceof Uint8Array) {\n yield buf;\n }\n else {\n yield buf.subarray();\n }\n }\n })());\n }\n catch (err) {\n if (err.type !== 'aborted') {\n log.error(err);\n }\n }\n },\n source: stream.source,\n remoteAddr,\n timeline: { open: Date.now() },\n async close(options = {}) {\n const start = Date.now();\n if (options.signal == null) {\n const signal = AbortSignal.timeout(CLOSE_TIMEOUT);\n options = {\n ...options,\n signal\n };\n }\n const listener = () => {\n const { host, port } = maConn.remoteAddr.toOptions();\n log('timeout closing stream to %s:%s after %dms, destroying it manually', host, port, Date.now() - start);\n this.abort(new CodeError('Socket close timeout', 'ERR_SOCKET_CLOSE_TIMEOUT'));\n };\n options.signal?.addEventListener('abort', listener);\n try {\n await stream.close();\n }\n catch (err) {\n log.error('error closing WebSocket gracefully', err);\n this.abort(err);\n }\n finally {\n options.signal?.removeEventListener('abort', listener);\n maConn.timeline.close = Date.now();\n }\n },\n abort(err) {\n const { host, port } = maConn.remoteAddr.toOptions();\n log('timeout closing stream to %s:%s due to error', host, port, err);\n stream.destroy();\n maConn.timeline.close = Date.now();\n // ws WebSocket.terminate does not accept an Error arg to emit an 'error'\n // event on destroy like other node streams so we can't update a metric\n // with an event listener\n // https://github.com/websockets/ws/issues/1752#issuecomment-622380981\n metrics?.increment({ [`${metricPrefix}error`]: true });\n }\n };\n stream.socket.addEventListener('close', () => {\n metrics?.increment({ [`${metricPrefix}close`]: true });\n // In instances where `close` was not explicitly called,\n // such as an iterable stream ending, ensure we have set the close\n // timeline\n if (maConn.timeline.close == null) {\n maConn.timeline.close = Date.now();\n }\n }, { once: true });\n return maConn;\n}\n//# sourceMappingURL=socket-to-conn.js.map","/**\n * @packageDocumentation\n *\n * A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API).\n *\n * @example\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { webSockets } from '@libp2p/websockets'\n * import { multiaddr } from '@multiformats/multiaddr'\n *\n * const node = await createLibp2p({\n * transports: [\n * webSockets()\n * ]\n * //... other config\n * })\n * await node.start()\n *\n * const ma = multiaddr('/ip4/127.0.0.1/tcp/9090/ws')\n * await node.dial(ma)\n * ```\n *\n * ## Filters\n *\n * When run in a browser by default this module will only connect to secure web socket addresses.\n *\n * To change this you should pass a filter to the factory function.\n *\n * You can create your own address filters for this transports, or rely in the filters [provided](./src/filters.js).\n *\n * The available filters are:\n *\n * - `filters.all`\n * - Returns all TCP and DNS based addresses, both with `ws` or `wss`.\n * - `filters.dnsWss`\n * - Returns all DNS based addresses with `wss`.\n * - `filters.dnsWsOrWss`\n * - Returns all DNS based addresses, both with `ws` or `wss`.\n *\n * @example Allow dialing insecure WebSockets\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { webSockets } from '@libp2p/websockets'\n * import * as filters from '@libp2p/websockets/filters'\n *\n * const node = await createLibp2p({\n * transports: [\n * webSockets({\n * // connect to all sockets, even insecure ones\n * filter: filters.all\n * })\n * ]\n * })\n * ```\n */\nimport { CodeError, transportSymbol, serviceCapabilities } from '@libp2p/interface';\nimport { multiaddrToUri as toUri } from '@multiformats/multiaddr-to-uri';\nimport { connect } from 'it-ws/client';\nimport pDefer from 'p-defer';\nimport { CustomProgressEvent } from 'progress-events';\nimport { raceSignal } from 'race-signal';\nimport { isBrowser, isWebWorker } from 'wherearewe';\nimport * as filters from './filters.js';\nimport { createListener } from './listener.js';\nimport { socketToMaConn } from './socket-to-conn.js';\nclass WebSockets {\n log;\n init;\n logger;\n metrics;\n components;\n constructor(components, init) {\n this.log = components.logger.forComponent('libp2p:websockets');\n this.logger = components.logger;\n this.components = components;\n this.init = init;\n if (components.metrics != null) {\n this.metrics = {\n dialerEvents: components.metrics.registerCounterGroup('libp2p_websockets_dialer_events_total', {\n label: 'event',\n help: 'Total count of WebSockets dialer events by type'\n })\n };\n }\n }\n [transportSymbol] = true;\n [Symbol.toStringTag] = '@libp2p/websockets';\n [serviceCapabilities] = [\n '@libp2p/transport'\n ];\n async dial(ma, options) {\n this.log('dialing %s', ma);\n options = options ?? {};\n const socket = await this._connect(ma, options);\n const maConn = socketToMaConn(socket, ma, {\n logger: this.logger,\n metrics: this.metrics?.dialerEvents\n });\n this.log('new outbound connection %s', maConn.remoteAddr);\n const conn = await options.upgrader.upgradeOutbound(maConn, options);\n this.log('outbound connection %s upgraded', maConn.remoteAddr);\n return conn;\n }\n async _connect(ma, options) {\n options?.signal?.throwIfAborted();\n const cOpts = ma.toOptions();\n this.log('dialing %s:%s', cOpts.host, cOpts.port);\n const errorPromise = pDefer();\n const rawSocket = connect(toUri(ma), this.init);\n rawSocket.socket.addEventListener('error', () => {\n // the WebSocket.ErrorEvent type doesn't actually give us any useful\n // information about what happened\n // https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/error_event\n const err = new CodeError(`Could not connect to ${ma.toString()}`, 'ERR_CONNECTION_FAILED');\n this.log.error('connection error:', err);\n this.metrics?.dialerEvents.increment({ error: true });\n errorPromise.reject(err);\n });\n try {\n options.onProgress?.(new CustomProgressEvent('websockets:open-connection'));\n await raceSignal(Promise.race([rawSocket.connected(), errorPromise.promise]), options.signal);\n }\n catch (err) {\n if (options.signal?.aborted === true) {\n this.metrics?.dialerEvents.increment({ abort: true });\n }\n rawSocket.close()\n .catch(err => {\n this.log.error('error closing raw socket', err);\n });\n throw err;\n }\n this.log('connected %s', ma);\n this.metrics?.dialerEvents.increment({ connect: true });\n return rawSocket;\n }\n /**\n * Creates a Websockets listener. The provided `handler` function will be called\n * anytime a new incoming Connection has been successfully upgraded via\n * `upgrader.upgradeInbound`\n */\n createListener(options) {\n return createListener({\n logger: this.logger,\n metrics: this.components.metrics\n }, {\n ...this.init,\n ...options\n });\n }\n /**\n * Takes a list of `Multiaddr`s and returns only valid Websockets addresses.\n * By default, in a browser environment only DNS+WSS multiaddr is accepted,\n * while in a Node.js environment DNS+{WS, WSS} multiaddrs are accepted.\n */\n listenFilter(multiaddrs) {\n multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs];\n if (this.init?.filter != null) {\n return this.init?.filter(multiaddrs);\n }\n // Browser\n if (isBrowser || isWebWorker) {\n return filters.wss(multiaddrs);\n }\n return filters.all(multiaddrs);\n }\n /**\n * Filter check for all Multiaddrs that this transport can dial\n */\n dialFilter(multiaddrs) {\n return this.listenFilter(multiaddrs);\n }\n}\nexport function webSockets(init = {}) {\n return (components) => {\n return new WebSockets(components, init);\n };\n}\n//# sourceMappingURL=index.js.map","export default function createListener(options) {\n throw new Error('Not implemented');\n}\n//# sourceMappingURL=listener.browser.js.map","import { AbstractStream } from '@libp2p/utils/abstract-stream';\nimport { raceSignal } from 'race-signal';\nimport { Uint8ArrayList } from 'uint8arraylist';\nclass WebTransportStream extends AbstractStream {\n writer;\n reader;\n constructor(init) {\n super(init);\n this.writer = init.bidiStream.writable.getWriter();\n this.reader = init.bidiStream.readable.getReader();\n Promise.resolve()\n .then(async () => {\n while (true) {\n const result = await this.reader.read();\n if (result.done) {\n init.log('remote closed write');\n return;\n }\n if (result.value != null) {\n this.sourcePush(new Uint8ArrayList(result.value));\n }\n }\n })\n .catch(err => {\n init.log.error('error reading from stream', err);\n this.abort(err);\n })\n .finally(() => {\n this.remoteCloseWrite();\n });\n void this.writer.closed\n .then(() => {\n init.log('writer closed');\n })\n .catch((err) => {\n init.log('writer close promise rejected', err);\n })\n .finally(() => {\n this.remoteCloseRead();\n });\n }\n sendNewStream(options) {\n // this is a no-op\n }\n async sendData(buf, options) {\n for await (const chunk of buf) {\n this.log('sendData waiting for writer to be ready');\n await raceSignal(this.writer.ready, options?.signal);\n // the streams spec recommends not waiting for data to be sent\n // https://streams.spec.whatwg.org/#example-manual-write-dont-await\n this.writer.write(chunk)\n .catch(err => {\n this.log.error('error sending stream data', err);\n });\n }\n }\n async sendReset(options) {\n this.log('sendReset aborting writer');\n await raceSignal(this.writer.abort(), options?.signal);\n this.log('sendReset aborted writer');\n }\n async sendCloseWrite(options) {\n this.log('sendCloseWrite closing writer');\n await raceSignal(this.writer.close(), options?.signal);\n this.log('sendCloseWrite closed writer');\n }\n async sendCloseRead(options) {\n this.log('sendCloseRead cancelling reader');\n await raceSignal(this.reader.cancel(), options?.signal);\n this.log('sendCloseRead cancelled reader');\n }\n}\nexport async function webtransportBiDiStreamToStream(bidiStream, streamId, direction, activeStreams, onStreamEnd, logger) {\n const log = logger.forComponent(`libp2p:webtransport:stream:${direction}:${streamId}`);\n const stream = new WebTransportStream({\n bidiStream,\n id: streamId,\n direction,\n log,\n onEnd: () => {\n const index = activeStreams.findIndex(s => s === stream);\n if (index !== -1) {\n activeStreams.splice(index, 1);\n }\n onStreamEnd?.(stream);\n }\n });\n return stream;\n}\n//# sourceMappingURL=stream.js.map","// Duplex that does nothing. Needed to fulfill the interface\nexport function inertDuplex() {\n return {\n source: {\n [Symbol.asyncIterator]() {\n return {\n async next() {\n // This will never resolve\n return new Promise(() => { });\n }\n };\n }\n },\n sink: async (source) => {\n // This will never resolve\n return new Promise(() => { });\n }\n };\n}\n//# sourceMappingURL=inert-duplex.js.map","import { webtransportBiDiStreamToStream } from './stream.js';\nimport { inertDuplex } from './utils/inert-duplex.js';\nexport function webtransportMuxer(wt, reader, logger, config) {\n let streamIDCounter = 0;\n const log = logger.forComponent('libp2p:webtransport:muxer');\n return {\n protocol: 'webtransport',\n createStreamMuxer: (init) => {\n // !TODO handle abort signal when WebTransport supports this.\n if (typeof init === 'function') {\n // The api docs say that init may be a function\n init = { onIncomingStream: init };\n }\n const activeStreams = [];\n Promise.resolve()\n .then(async () => {\n //! TODO unclear how to add backpressure here?\n while (true) {\n const { done, value: wtStream } = await reader.read();\n if (done) {\n break;\n }\n if (activeStreams.length >= config.maxInboundStreams) {\n log(`too many inbound streams open - ${activeStreams.length}/${config.maxInboundStreams}, closing new incoming stream`);\n // We've reached our limit, close this stream.\n wtStream.writable.close().catch((err) => {\n log.error(`failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`);\n });\n wtStream.readable.cancel().catch((err) => {\n log.error(`failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`);\n });\n }\n else {\n const stream = await webtransportBiDiStreamToStream(wtStream, String(streamIDCounter++), 'inbound', activeStreams, init?.onStreamEnd, logger);\n activeStreams.push(stream);\n init?.onIncomingStream?.(stream);\n }\n }\n })\n .catch(err => {\n log.error('could not create a new stream', err);\n });\n const muxer = {\n protocol: 'webtransport',\n streams: activeStreams,\n newStream: async (name) => {\n log('new outgoing stream', name);\n const wtStream = await wt.createBidirectionalStream();\n const stream = await webtransportBiDiStreamToStream(wtStream, String(streamIDCounter++), init?.direction ?? 'outbound', activeStreams, init?.onStreamEnd, logger);\n activeStreams.push(stream);\n return stream;\n },\n /**\n * Close all tracked streams and stop the muxer\n */\n close: async () => {\n log('closing webtransport muxer gracefully');\n try {\n wt.close();\n }\n catch (err) {\n muxer.abort(err);\n }\n },\n /**\n * Abort all tracked streams and stop the muxer\n */\n abort: (err) => {\n log('closing webtransport muxer with err:', err);\n try {\n wt.close();\n }\n catch (err) {\n log.error('webtransport session threw error during close', err);\n }\n },\n // This stream muxer is webtransport native. Therefore it doesn't plug in with any other duplex.\n ...inertDuplex()\n };\n return muxer;\n }\n };\n}\n//# sourceMappingURL=muxer.js.map","import { equals as uint8ArrayEquals } from 'uint8arrays/equals';\n/**\n * Determines if `maybeSubset` is a subset of `set`. This means that all byte\n * arrays in `maybeSubset` are present in `set`.\n */\nexport function isSubset(set, maybeSubset) {\n const intersection = maybeSubset.filter(byteArray => {\n return Boolean(set.find((otherByteArray) => uint8ArrayEquals(byteArray, otherByteArray)));\n });\n return (intersection.length === maybeSubset.length);\n}\n//# sourceMappingURL=is-subset.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});\n//# sourceMappingURL=base10.js.map","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});\n//# sourceMappingURL=base16.js.map","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});\n//# sourceMappingURL=base2.js.map","import { from } from './base.js';\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂');\nconst alphabetBytesToChars = (alphabet.reduce((p, c, i) => { p[i] = c; return p; }, ([])));\nconst alphabetCharsToBytes = (alphabet.reduce((p, c, i) => { p[c.codePointAt(0)] = i; return p; }, ([])));\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${char}`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n});\n//# sourceMappingURL=base256emoji.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base36.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});\n//# sourceMappingURL=base8.js.map","import { fromString, toString } from '../bytes.js';\nimport { from } from './base.js';\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n});\n//# sourceMappingURL=identity.js.map","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 0x0200;\nexport function encode(node) {\n return textEncoder.encode(JSON.stringify(node));\n}\nexport function decode(data) {\n return JSON.parse(textDecoder.decode(data));\n}\n//# sourceMappingURL=json.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base2 from './bases/base2.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base8 from './bases/base8.js';\nimport * as identityBase from './bases/identity.js';\nimport * as json from './codecs/json.js';\nimport * as raw from './codecs/raw.js';\nimport * as identity from './hashes/identity.js';\nimport * as sha2 from './hashes/sha2.js';\nimport { CID, hasher, digest, varint, bytes } from './index.js';\nexport const bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji };\nexport const hashes = { ...sha2, ...identity };\nexport const codecs = { raw, json };\nexport { CID, hasher, digest, varint, bytes };\n//# sourceMappingURL=basics.js.map","import { CodeError } from '@libp2p/interface';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { protocols } from '@multiformats/multiaddr';\nimport { WebTransport } from '@multiformats/multiaddr-matcher';\nimport { bases, digest } from 'multiformats/basics';\n// @ts-expect-error - Not easy to combine these types.\nconst multibaseDecoder = Object.values(bases).map(b => b.decoder).reduce((d, b) => d.or(b));\nfunction decodeCerthashStr(s) {\n return digest.decode(multibaseDecoder.decode(s));\n}\nexport function parseMultiaddr(ma) {\n if (!WebTransport.matches(ma)) {\n throw new CodeError('Invalid multiaddr, was not a WebTransport address', 'ERR_INVALID_MULTIADDR');\n }\n const parts = ma.stringTuples();\n const certhashes = parts\n .filter(([name, _]) => name === protocols('certhash').code)\n .map(([_, value]) => decodeCerthashStr(value ?? ''));\n // only take the first peer id in the multiaddr as it may be a relay\n const remotePeer = parts\n .filter(([name, _]) => name === protocols('p2p').code)\n .map(([_, value]) => peerIdFromString(value ?? ''))[0];\n const opts = ma.toOptions();\n let host = opts.host;\n if (opts.family === 6 && host?.includes(':')) {\n /**\n * This resolves cases where `new WebTransport()` fails to construct because of an invalid URL being passed.\n *\n * `new URL('https://::1:4001/blah')` will throw a `TypeError: Failed to construct 'URL': Invalid URL`\n * `new URL('https://[::1]:4001/blah')` is valid and will not.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.2\n */\n host = `[${host}]`;\n }\n return {\n // All webtransport urls are https\n url: `https://${host}:${opts.port}`,\n certhashes,\n remotePeer\n };\n}\n//# sourceMappingURL=parse-multiaddr.js.map","// exporting property of globalThis allows us to fail gracefully in browsers\n// without WebTransport support\nexport default globalThis.WebTransport;\n//# sourceMappingURL=webtransport.browser.js.map","/**\n * @packageDocumentation\n *\n * A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebTransport](https://www.w3.org/TR/webtransport/).\n *\n * >\n * > ⚠️ **Note**\n * >\n * > This WebTransport implementation currently only allows dialing to other nodes. It does not yet allow listening for incoming dials. This feature requires QUIC support to land in Node JS first.\n * >\n * > QUIC support in Node JS is actively being worked on. You can keep an eye on the progress by watching the [related issues on the Node JS issue tracker](https://github.com/nodejs/node/labels/quic)\n * >\n *\n * @example\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { webTransport } from '@libp2p/webtransport'\n * import { noise } from '@chainsafe/libp2p-noise'\n *\n * const node = await createLibp2p({\n * transports: [\n * webTransport()\n * ],\n * connectionEncryption: [\n * noise()\n * ]\n * })\n * ```\n */\nimport { noise } from '@chainsafe/libp2p-noise';\nimport { AbortError, CodeError, serviceCapabilities, transportSymbol } from '@libp2p/interface';\nimport { WebTransport as WebTransportMatcher } from '@multiformats/multiaddr-matcher';\nimport { CustomProgressEvent } from 'progress-events';\nimport { raceSignal } from 'race-signal';\nimport createListener from './listener.js';\nimport { webtransportMuxer } from './muxer.js';\nimport { inertDuplex } from './utils/inert-duplex.js';\nimport { isSubset } from './utils/is-subset.js';\nimport { parseMultiaddr } from './utils/parse-multiaddr.js';\nimport WebTransport from './webtransport.js';\nclass WebTransportTransport {\n log;\n components;\n config;\n metrics;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('libp2p:webtransport');\n this.components = components;\n this.config = {\n ...init,\n maxInboundStreams: init.maxInboundStreams ?? 1000,\n certificates: init.certificates ?? []\n };\n if (components.metrics != null) {\n this.metrics = {\n dialerEvents: components.metrics.registerCounterGroup('libp2p_webtransport_dialer_events_total', {\n label: 'event',\n help: 'Total count of WebTransport dialer events by type'\n })\n };\n }\n }\n [Symbol.toStringTag] = '@libp2p/webtransport';\n [transportSymbol] = true;\n [serviceCapabilities] = [\n '@libp2p/transport'\n ];\n async dial(ma, options) {\n if (options?.signal?.aborted === true) {\n throw new AbortError();\n }\n this.log('dialing %s', ma);\n const localPeer = this.components.peerId;\n if (localPeer === undefined) {\n throw new CodeError('Need a local peerid', 'ERR_INVALID_PARAMETERS');\n }\n options = options ?? {};\n const { url, certhashes, remotePeer } = parseMultiaddr(ma);\n let abortListener;\n let maConn;\n let cleanUpWTSession = () => { };\n let closed = false;\n let ready = false;\n let authenticated = false;\n try {\n this.metrics?.dialerEvents.increment({ pending: true });\n const wt = new WebTransport(`${url}/.well-known/libp2p-webtransport?type=noise`, {\n serverCertificateHashes: certhashes.map(certhash => ({\n algorithm: 'sha-256',\n value: certhash.digest\n }))\n });\n cleanUpWTSession = (metric) => {\n if (closed) {\n // already closed session\n return;\n }\n try {\n this.metrics?.dialerEvents.increment({ [metric]: true });\n wt.close();\n }\n catch (err) {\n this.log.error('error closing wt session', err);\n }\n finally {\n // This is how we specify the connection is closed and shouldn't be used.\n if (maConn != null) {\n maConn.timeline.close = Date.now();\n }\n closed = true;\n }\n };\n // if the dial is aborted before we are ready, close the WebTransport session\n abortListener = () => {\n if (ready) {\n cleanUpWTSession('noise_timeout');\n }\n else {\n cleanUpWTSession('ready_timeout');\n }\n };\n options.signal?.addEventListener('abort', abortListener, {\n once: true\n });\n this.log('wait for session to be ready');\n options.onProgress?.(new CustomProgressEvent('webtransport:wait-for-session'));\n await Promise.race([\n wt.closed,\n wt.ready\n ]);\n this.log('session became ready');\n ready = true;\n this.metrics?.dialerEvents.increment({ ready: true });\n // this promise resolves/throws when the session is closed\n wt.closed.catch((err) => {\n this.log.error('error on remote wt session close', err);\n })\n .finally(() => {\n cleanUpWTSession('remote_close');\n });\n authenticated = await raceSignal(this.authenticateWebTransport({ wt, localPeer, remotePeer, certhashes, ...options }), options.signal);\n if (!authenticated) {\n throw new CodeError('Failed to authenticate webtransport', 'ERR_AUTHENTICATION_FAILED');\n }\n this.metrics?.dialerEvents.increment({ open: true });\n maConn = {\n close: async () => {\n this.log('closing webtransport');\n cleanUpWTSession('close');\n },\n abort: (err) => {\n this.log('aborting webtransport due to passed err', err);\n cleanUpWTSession('abort');\n },\n remoteAddr: ma,\n timeline: {\n open: Date.now()\n },\n log: this.components.logger.forComponent('libp2p:webtransport:maconn'),\n // This connection is never used directly since webtransport supports native streams.\n ...inertDuplex()\n };\n return await options.upgrader.upgradeOutbound(maConn, {\n skipEncryption: true,\n muxerFactory: webtransportMuxer(wt, wt.incomingBidirectionalStreams.getReader(), this.components.logger, this.config),\n skipProtection: true,\n onProgress: options.onProgress\n });\n }\n catch (err) {\n this.log.error('caught wt session err', err);\n if (authenticated) {\n cleanUpWTSession('upgrade_error');\n }\n else if (ready) {\n cleanUpWTSession('noise_error');\n }\n else {\n cleanUpWTSession('ready_error');\n }\n throw err;\n }\n finally {\n if (abortListener != null) {\n options.signal?.removeEventListener('abort', abortListener);\n }\n }\n }\n async authenticateWebTransport({ wt, localPeer, remotePeer, certhashes, onProgress, signal }) {\n signal?.throwIfAborted();\n onProgress?.(new CustomProgressEvent('webtransport:open-authentication-stream'));\n const stream = await wt.createBidirectionalStream();\n const writer = stream.writable.getWriter();\n const reader = stream.readable.getReader();\n const duplex = {\n source: (async function* () {\n while (true) {\n const val = await reader.read();\n if (val.value != null) {\n yield val.value;\n }\n if (val.done) {\n break;\n }\n }\n })(),\n sink: async (source) => {\n for await (const chunk of source) {\n await raceSignal(writer.ready, signal);\n const buf = chunk instanceof Uint8Array ? chunk : chunk.subarray();\n writer.write(buf).catch(err => {\n this.log.error('could not write chunk during authentication of WebTransport stream', err);\n });\n }\n }\n };\n const n = noise()(this.components);\n onProgress?.(new CustomProgressEvent('webtransport:secure-outbound-connection'));\n const { remoteExtensions } = await n.secureOutbound(localPeer, duplex, remotePeer);\n onProgress?.(new CustomProgressEvent('webtransport:close-authentication-stream'));\n // We're done with this authentication stream\n writer.close().catch((err) => {\n this.log.error(`Failed to close authentication stream writer: ${err.message}`);\n });\n reader.cancel().catch((err) => {\n this.log.error(`Failed to close authentication stream reader: ${err.message}`);\n });\n // Verify the certhashes we used when dialing are a subset of the certhashes relayed by the remote peer\n if (!isSubset(remoteExtensions?.webtransportCerthashes ?? [], certhashes.map(ch => ch.bytes))) {\n throw new Error(\"Our certhashes are not a subset of the remote's reported certhashes\");\n }\n return true;\n }\n createListener(options) {\n return createListener(this.components, {\n ...options,\n certificates: this.config.certificates,\n maxInboundStreams: this.config.maxInboundStreams\n });\n }\n /**\n * Filter check for all Multiaddrs that this transport can listen on\n */\n listenFilter() {\n return [];\n }\n /**\n * Filter check for all Multiaddrs that this transport can dial\n */\n dialFilter(multiaddrs) {\n // test for WebTransport support\n if (globalThis.WebTransport == null) {\n return [];\n }\n return multiaddrs.filter(ma => {\n if (!WebTransportMatcher.exactMatch(ma)) {\n return false;\n }\n const { url, certhashes } = parseMultiaddr(ma);\n return url != null && certhashes.length > 0;\n });\n }\n}\nexport function webTransport(init = {}) {\n return (components) => new WebTransportTransport(components, init);\n}\n//# sourceMappingURL=index.js.map","export const ERR_IPNS_EXPIRED_RECORD = 'ERR_IPNS_EXPIRED_RECORD';\nexport const ERR_UNRECOGNIZED_VALIDITY = 'ERR_UNRECOGNIZED_VALIDITY';\nexport const ERR_SIGNATURE_CREATION = 'ERR_SIGNATURE_CREATION';\nexport const ERR_SIGNATURE_VERIFICATION = 'ERR_SIGNATURE_VERIFICATION';\nexport const ERR_UNRECOGNIZED_FORMAT = 'ERR_UNRECOGNIZED_FORMAT';\nexport const ERR_PEER_ID_FROM_PUBLIC_KEY = 'ERR_PEER_ID_FROM_PUBLIC_KEY';\nexport const ERR_PUBLIC_KEY_FROM_ID = 'ERR_PUBLIC_KEY_FROM_ID';\nexport const ERR_UNDEFINED_PARAMETER = 'ERR_UNDEFINED_PARAMETER';\nexport const ERR_INVALID_RECORD_DATA = 'ERR_INVALID_RECORD_DATA';\nexport const ERR_INVALID_VALUE = 'ERR_INVALID_VALUE';\nexport const ERR_INVALID_EMBEDDED_KEY = 'ERR_INVALID_EMBEDDED_KEY';\nexport const ERR_MISSING_PRIVATE_KEY = 'ERR_MISSING_PRIVATE_KEY';\nexport const ERR_RECORD_TOO_LARGE = 'ERR_RECORD_TOO_LARGE';\n//# sourceMappingURL=errors.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var IpnsEntry;\n(function (IpnsEntry) {\n let ValidityType;\n (function (ValidityType) {\n ValidityType[\"EOL\"] = \"EOL\";\n })(ValidityType = IpnsEntry.ValidityType || (IpnsEntry.ValidityType = {}));\n let __ValidityTypeValues;\n (function (__ValidityTypeValues) {\n __ValidityTypeValues[__ValidityTypeValues[\"EOL\"] = 0] = \"EOL\";\n })(__ValidityTypeValues || (__ValidityTypeValues = {}));\n (function (ValidityType) {\n ValidityType.codec = () => {\n return enumeration(__ValidityTypeValues);\n };\n })(ValidityType = IpnsEntry.ValidityType || (IpnsEntry.ValidityType = {}));\n let _codec;\n IpnsEntry.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.value != null) {\n w.uint32(10);\n w.bytes(obj.value);\n }\n if (obj.signatureV1 != null) {\n w.uint32(18);\n w.bytes(obj.signatureV1);\n }\n if (obj.validityType != null) {\n w.uint32(24);\n IpnsEntry.ValidityType.codec().encode(obj.validityType, w);\n }\n if (obj.validity != null) {\n w.uint32(34);\n w.bytes(obj.validity);\n }\n if (obj.sequence != null) {\n w.uint32(40);\n w.uint64(obj.sequence);\n }\n if (obj.ttl != null) {\n w.uint32(48);\n w.uint64(obj.ttl);\n }\n if (obj.pubKey != null) {\n w.uint32(58);\n w.bytes(obj.pubKey);\n }\n if (obj.signatureV2 != null) {\n w.uint32(66);\n w.bytes(obj.signatureV2);\n }\n if (obj.data != null) {\n w.uint32(74);\n w.bytes(obj.data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.value = reader.bytes();\n break;\n case 2:\n obj.signatureV1 = reader.bytes();\n break;\n case 3:\n obj.validityType = IpnsEntry.ValidityType.codec().decode(reader);\n break;\n case 4:\n obj.validity = reader.bytes();\n break;\n case 5:\n obj.sequence = reader.uint64();\n break;\n case 6:\n obj.ttl = reader.uint64();\n break;\n case 7:\n obj.pubKey = reader.bytes();\n break;\n case 8:\n obj.signatureV2 = reader.bytes();\n break;\n case 9:\n obj.data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n IpnsEntry.encode = (obj) => {\n return encodeMessage(obj, IpnsEntry.codec());\n };\n IpnsEntry.decode = (buf) => {\n return decodeMessage(buf, IpnsEntry.codec());\n };\n})(IpnsEntry || (IpnsEntry = {}));\n//# sourceMappingURL=ipns.js.map","import { unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { isPeerId } from '@libp2p/interface';\nimport { logger } from '@libp2p/logger';\nimport { peerIdFromBytes, peerIdFromKeys } from '@libp2p/peer-id';\nimport * as cborg from 'cborg';\nimport errCode from 'err-code';\nimport { base36 } from 'multiformats/bases/base36';\nimport { CID } from 'multiformats/cid';\nimport NanoDate from 'timestamp-nano';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport * as ERRORS from './errors.js';\nimport { IpnsEntry } from './pb/ipns.js';\nconst log = logger('ipns:utils');\nconst IPNS_PREFIX = uint8ArrayFromString('/ipns/');\nconst LIBP2P_CID_CODEC = 114;\n/**\n * Convert a JavaScript date into an `RFC3339Nano` formatted\n * string\n */\nexport function toRFC3339(time) {\n const year = time.getUTCFullYear();\n const month = String(time.getUTCMonth() + 1).padStart(2, '0');\n const day = String(time.getUTCDate()).padStart(2, '0');\n const hour = String(time.getUTCHours()).padStart(2, '0');\n const minute = String(time.getUTCMinutes()).padStart(2, '0');\n const seconds = String(time.getUTCSeconds()).padStart(2, '0');\n const milliseconds = time.getUTCMilliseconds();\n const nanoseconds = milliseconds * 1000 * 1000;\n return `${year}-${month}-${day}T${hour}:${minute}:${seconds}.${nanoseconds}Z`;\n}\n/**\n * Parses a date string formatted as `RFC3339Nano` into a\n * JavaScript Date object\n */\nexport function parseRFC3339(time) {\n const rfc3339Matcher = new RegExp(\n // 2006-01-02T\n '(\\\\d{4})-(\\\\d{2})-(\\\\d{2})T' +\n // 15:04:05\n '(\\\\d{2}):(\\\\d{2}):(\\\\d{2})' +\n // .999999999Z\n '\\\\.(\\\\d+)Z');\n const m = String(time).trim().match(rfc3339Matcher);\n if (m == null) {\n throw new Error('Invalid format');\n }\n const year = parseInt(m[1], 10);\n const month = parseInt(m[2], 10) - 1;\n const date = parseInt(m[3], 10);\n const hour = parseInt(m[4], 10);\n const minute = parseInt(m[5], 10);\n const second = parseInt(m[6], 10);\n const millisecond = parseInt(m[7].padEnd(6, '0').slice(0, 3), 10);\n return new Date(Date.UTC(year, month, date, hour, minute, second, millisecond));\n}\n/**\n * Extracts a public key from the passed PeerId, falling\n * back to the pubKey embedded in the ipns record\n */\nexport const extractPublicKey = async (peerId, record) => {\n if (record == null || peerId == null) {\n const error = new Error('one or more of the provided parameters are not defined');\n log.error(error);\n throw errCode(error, ERRORS.ERR_UNDEFINED_PARAMETER);\n }\n let pubKey;\n if (record.pubKey != null) {\n try {\n pubKey = unmarshalPublicKey(record.pubKey);\n }\n catch (err) {\n log.error(err);\n throw err;\n }\n const otherId = await peerIdFromKeys(record.pubKey);\n if (!otherId.equals(peerId)) {\n throw errCode(new Error('Embedded public key did not match PeerID'), ERRORS.ERR_INVALID_EMBEDDED_KEY);\n }\n }\n else if (peerId.publicKey != null) {\n pubKey = unmarshalPublicKey(peerId.publicKey);\n }\n if (pubKey != null) {\n return pubKey;\n }\n throw errCode(new Error('no public key is available'), ERRORS.ERR_UNDEFINED_PARAMETER);\n};\n/**\n * Utility for creating the record data for being signed\n */\nexport const ipnsRecordDataForV1Sig = (value, validityType, validity) => {\n const validityTypeBuffer = uint8ArrayFromString(validityType);\n return uint8ArrayConcat([value, validity, validityTypeBuffer]);\n};\n/**\n * Utility for creating the record data for being signed\n */\nexport const ipnsRecordDataForV2Sig = (data) => {\n const entryData = uint8ArrayFromString('ipns-signature:');\n return uint8ArrayConcat([entryData, data]);\n};\nexport const marshal = (obj) => {\n if ('signatureV1' in obj) {\n return IpnsEntry.encode({\n value: uint8ArrayFromString(obj.value),\n signatureV1: obj.signatureV1,\n validityType: obj.validityType,\n validity: uint8ArrayFromString(obj.validity.toString()),\n sequence: obj.sequence,\n ttl: obj.ttl,\n pubKey: obj.pubKey,\n signatureV2: obj.signatureV2,\n data: obj.data\n });\n }\n else {\n return IpnsEntry.encode({\n pubKey: obj.pubKey,\n signatureV2: obj.signatureV2,\n data: obj.data\n });\n }\n};\nexport function unmarshal(buf) {\n const message = IpnsEntry.decode(buf);\n // protobufjs returns bigints as numbers\n if (message.sequence != null) {\n message.sequence = BigInt(message.sequence);\n }\n // protobufjs returns bigints as numbers\n if (message.ttl != null) {\n message.ttl = BigInt(message.ttl);\n }\n // Check if we have the data field. If we don't, we fail. We've been producing\n // V1+V2 records for quite a while and we don't support V1-only records during\n // validation any more\n if (message.signatureV2 == null || message.data == null) {\n throw errCode(new Error('missing data or signatureV2'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n const data = parseCborData(message.data);\n const value = normalizeValue(data.Value);\n let validity;\n try {\n validity = NanoDate.fromDate(parseRFC3339(uint8ArrayToString(data.Validity)));\n }\n catch (e) {\n log.error('unrecognized validity format (not an rfc3339 format)');\n throw errCode(new Error('unrecognized validity format (not an rfc3339 format)'), ERRORS.ERR_UNRECOGNIZED_FORMAT);\n }\n if (message.value != null && message.signatureV1 != null) {\n // V1+V2\n validateCborDataMatchesPbData(message);\n return {\n value,\n validityType: IpnsEntry.ValidityType.EOL,\n validity,\n sequence: data.Sequence,\n ttl: data.TTL,\n pubKey: message.pubKey,\n signatureV1: message.signatureV1,\n signatureV2: message.signatureV2,\n data: message.data\n };\n }\n else if (message.signatureV2 != null) {\n // V2-only\n return {\n value,\n validityType: IpnsEntry.ValidityType.EOL,\n validity,\n sequence: data.Sequence,\n ttl: data.TTL,\n pubKey: message.pubKey,\n signatureV2: message.signatureV2,\n data: message.data\n };\n }\n else {\n throw new Error('invalid record: does not include signatureV1 or signatureV2');\n }\n}\nexport const peerIdToRoutingKey = (peerId) => {\n return uint8ArrayConcat([\n IPNS_PREFIX,\n peerId.toBytes()\n ]);\n};\nexport const peerIdFromRoutingKey = (key) => {\n return peerIdFromBytes(key.slice(IPNS_PREFIX.length));\n};\nexport const createCborData = (value, validity, validityType, sequence, ttl) => {\n let ValidityType;\n if (validityType === IpnsEntry.ValidityType.EOL) {\n ValidityType = 0;\n }\n else {\n throw errCode(new Error('Unknown validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n const data = {\n Value: value,\n Validity: validity,\n ValidityType,\n Sequence: sequence,\n TTL: ttl\n };\n return cborg.encode(data);\n};\nexport const parseCborData = (buf) => {\n const data = cborg.decode(buf);\n if (data.ValidityType === 0) {\n data.ValidityType = IpnsEntry.ValidityType.EOL;\n }\n else {\n throw errCode(new Error('Unknown validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n if (Number.isInteger(data.Sequence)) {\n // sequence must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range\n data.Sequence = BigInt(data.Sequence);\n }\n if (Number.isInteger(data.TTL)) {\n // ttl must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range\n data.TTL = BigInt(data.TTL);\n }\n return data;\n};\n/**\n * Normalizes the given record value. It ensures it is a PeerID, a CID or a\n * string starting with '/'. PeerIDs become `/ipns/${cidV1Libp2pKey}`,\n * CIDs become `/ipfs/${cidAsV1}`.\n */\nexport const normalizeValue = (value) => {\n if (value != null) {\n // if we have a PeerId, turn it into an ipns path\n if (isPeerId(value)) {\n return `/ipns/${value.toCID().toString(base36)}`;\n }\n // if the value is bytes, stringify it and see if we have a path\n if (value instanceof Uint8Array) {\n const string = uint8ArrayToString(value);\n if (string.startsWith('/')) {\n value = string;\n }\n }\n // if we have a path, check it is a valid path\n const string = value.toString().trim();\n if (string.startsWith('/') && string.length > 1) {\n return string;\n }\n // if we have a CID, turn it into an ipfs path\n const cid = CID.asCID(value);\n if (cid != null) {\n // PeerID encoded as a CID\n if (cid.code === LIBP2P_CID_CODEC) {\n return `/ipns/${cid.toString(base36)}`;\n }\n return `/ipfs/${cid.toV1().toString()}`;\n }\n // try parsing what we have as CID bytes or a CID string\n try {\n if (value instanceof Uint8Array) {\n return `/ipfs/${CID.decode(value).toV1().toString()}`;\n }\n return `/ipfs/${CID.parse(string).toV1().toString()}`;\n }\n catch {\n // fall through\n }\n }\n throw errCode(new Error('Value must be a valid content path starting with /'), ERRORS.ERR_INVALID_VALUE);\n};\nconst validateCborDataMatchesPbData = (entry) => {\n if (entry.data == null) {\n throw errCode(new Error('Record data is missing'), ERRORS.ERR_INVALID_RECORD_DATA);\n }\n const data = parseCborData(entry.data);\n if (!uint8ArrayEquals(data.Value, entry.value ?? new Uint8Array(0))) {\n throw errCode(new Error('Field \"value\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (!uint8ArrayEquals(data.Validity, entry.validity ?? new Uint8Array(0))) {\n throw errCode(new Error('Field \"validity\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.ValidityType !== entry.validityType) {\n throw errCode(new Error('Field \"validityType\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.Sequence !== entry.sequence) {\n throw errCode(new Error('Field \"sequence\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.TTL !== entry.ttl) {\n throw errCode(new Error('Field \"ttl\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n};\n//# sourceMappingURL=utils.js.map","import { unmarshal } from './utils.js';\nexport function ipnsSelector(key, data) {\n const entries = data.map((buf, index) => ({\n record: unmarshal(buf),\n index\n }));\n entries.sort((a, b) => {\n // Before we'd sort based on the signature version. Unmarshal now fails if\n // a record does not have SignatureV2, so that is no longer needed. V1-only\n // records haven't been issues in a long time.\n const aSeq = a.record.sequence;\n const bSeq = b.record.sequence;\n // choose later sequence number\n if (aSeq > bSeq) {\n return -1;\n }\n else if (aSeq < bSeq) {\n return 1;\n }\n // choose longer lived record if sequence numbers the same\n const recordAValidityDate = a.record.validity.toDate();\n const recordBValidityDate = b.record.validity.toDate();\n if (recordAValidityDate.getTime() > recordBValidityDate.getTime()) {\n return -1;\n }\n if (recordAValidityDate.getTime() < recordBValidityDate.getTime()) {\n return 1;\n }\n return 0;\n });\n return entries[0].index;\n}\n//# sourceMappingURL=selector.js.map","import { logger } from '@libp2p/logger';\nimport errCode from 'err-code';\nimport * as ERRORS from './errors.js';\nimport { IpnsEntry } from './pb/ipns.js';\nimport { extractPublicKey, ipnsRecordDataForV2Sig, unmarshal, peerIdFromRoutingKey } from './utils.js';\nconst log = logger('ipns:validator');\n/**\n * Limit valid IPNS record sizes to 10kb\n */\nconst MAX_RECORD_SIZE = 1024 * 10;\n/**\n * Validates the given IPNS Record against the given public key. We need a \"raw\"\n * record in order to be able to access to all of its fields.\n */\nexport const validate = async (publicKey, buf) => {\n // unmarshal ensures that (1) SignatureV2 and Data are present, (2) that ValidityType\n // and Validity are of valid types and have a value, (3) that CBOR data matches protobuf\n // if it's a V1+V2 record.\n const record = unmarshal(buf);\n // Validate Signature V2\n let isValid;\n try {\n const dataForSignature = ipnsRecordDataForV2Sig(record.data);\n isValid = await publicKey.verify(dataForSignature, record.signatureV2);\n }\n catch (err) {\n isValid = false;\n }\n if (!isValid) {\n log.error('record signature verification failed');\n throw errCode(new Error('record signature verification failed'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n // Validate according to the validity type\n if (record.validityType === IpnsEntry.ValidityType.EOL) {\n if (record.validity.toDate().getTime() < Date.now()) {\n log.error('record has expired');\n throw errCode(new Error('record has expired'), ERRORS.ERR_IPNS_EXPIRED_RECORD);\n }\n }\n else if (record.validityType != null) {\n log.error('unrecognized validity type');\n throw errCode(new Error('unrecognized validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n log('ipns record for %s is valid', record.value);\n};\nexport async function ipnsValidator(key, marshalledData) {\n if (marshalledData.byteLength > MAX_RECORD_SIZE) {\n throw errCode(new Error('record too large'), ERRORS.ERR_RECORD_TOO_LARGE);\n }\n const peerId = peerIdFromRoutingKey(key);\n const receivedRecord = unmarshal(marshalledData);\n // extract public key\n const pubKey = await extractPublicKey(peerId, receivedRecord);\n // Record validation\n await validate(pubKey, marshalledData);\n}\n//# sourceMappingURL=validator.js.map","export const version = '1.9.4';\nexport const name = 'libp2p';\n//# sourceMappingURL=version.js.map","export const version = '3.0.1';\nexport const name = 'helia';\n//# sourceMappingURL=version.js.map","// this list comes from https://github.com/ipfs/kubo/blob/da28fbc65a2e0f1ce59f9923823326ae2bc4f713/config/bootstrap_peers.go#L17\nexport const bootstrapConfig = {\n list: [\n '/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN',\n '/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa',\n '/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb',\n '/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt',\n '/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ'\n ]\n};\n//# sourceMappingURL=bootstrappers.js.map","import { gossipsub } from '@chainsafe/libp2p-gossipsub';\nimport { noise } from '@chainsafe/libp2p-noise';\nimport { yamux } from '@chainsafe/libp2p-yamux';\nimport { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client';\nimport { autoNAT } from '@libp2p/autonat';\nimport { bootstrap } from '@libp2p/bootstrap';\nimport { circuitRelayTransport } from '@libp2p/circuit-relay-v2';\nimport { dcutr } from '@libp2p/dcutr';\nimport { identify } from '@libp2p/identify';\nimport { kadDHT } from '@libp2p/kad-dht';\nimport { keychain } from '@libp2p/keychain';\nimport { mplex } from '@libp2p/mplex';\nimport { ping } from '@libp2p/ping';\nimport { webRTC, webRTCDirect } from '@libp2p/webrtc';\nimport { webSockets } from '@libp2p/websockets';\nimport { webTransport } from '@libp2p/webtransport';\nimport { ipnsSelector } from 'ipns/selector';\nimport { ipnsValidator } from 'ipns/validator';\nimport * as libp2pInfo from 'libp2p/version';\nimport { name, version } from '../version.js';\nimport { bootstrapConfig } from './bootstrappers.js';\nexport function libp2pDefaults(options = {}) {\n return {\n peerId: options.peerId,\n addresses: {\n listen: [\n '/webrtc'\n ]\n },\n transports: [\n circuitRelayTransport({\n discoverRelays: 1\n }),\n webRTC(),\n webRTCDirect(),\n webTransport(),\n webSockets()\n ],\n connectionEncryption: [\n noise()\n ],\n streamMuxers: [\n yamux(),\n mplex()\n ],\n peerDiscovery: [\n bootstrap(bootstrapConfig)\n ],\n services: {\n autoNAT: autoNAT(),\n dcutr: dcutr(),\n delegatedRouting: () => createDelegatedRoutingV1HttpApiClient('https://delegated-ipfs.dev'),\n dht: kadDHT({\n clientMode: true,\n validators: {\n ipns: ipnsValidator\n },\n selectors: {\n ipns: ipnsSelector\n }\n }),\n identify: identify({\n agentVersion: `${name}/${version} ${libp2pInfo.name}/${libp2pInfo.version} UserAgent=${globalThis.navigator.userAgent}`\n }),\n keychain: keychain(options.keychain),\n ping: ping(),\n pubsub: gossipsub()\n }\n };\n}\n//# sourceMappingURL=libp2p-defaults.browser.js.map","export const codes = {\n ERR_INVALID_PARAMETERS: 'ERR_INVALID_PARAMETERS'\n};\n//# sourceMappingURL=errors.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Peer;\n(function (Peer) {\n let Peer$metadataEntry;\n (function (Peer$metadataEntry) {\n let _codec;\n Peer$metadataEntry.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.key != null && obj.key !== '')) {\n w.uint32(10);\n w.string(obj.key);\n }\n if ((obj.value != null && obj.value.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.value);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n key: '',\n value: new Uint8Array(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.key = reader.string();\n break;\n case 2:\n obj.value = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Peer$metadataEntry.encode = (obj) => {\n return encodeMessage(obj, Peer$metadataEntry.codec());\n };\n Peer$metadataEntry.decode = (buf) => {\n return decodeMessage(buf, Peer$metadataEntry.codec());\n };\n })(Peer$metadataEntry = Peer.Peer$metadataEntry || (Peer.Peer$metadataEntry = {}));\n let Peer$tagsEntry;\n (function (Peer$tagsEntry) {\n let _codec;\n Peer$tagsEntry.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.key != null && obj.key !== '')) {\n w.uint32(10);\n w.string(obj.key);\n }\n if (obj.value != null) {\n w.uint32(18);\n Tag.codec().encode(obj.value, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n key: ''\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.key = reader.string();\n break;\n case 2:\n obj.value = Tag.codec().decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Peer$tagsEntry.encode = (obj) => {\n return encodeMessage(obj, Peer$tagsEntry.codec());\n };\n Peer$tagsEntry.decode = (buf) => {\n return decodeMessage(buf, Peer$tagsEntry.codec());\n };\n })(Peer$tagsEntry = Peer.Peer$tagsEntry || (Peer.Peer$tagsEntry = {}));\n let _codec;\n Peer.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.addresses != null) {\n for (const value of obj.addresses) {\n w.uint32(10);\n Address.codec().encode(value, w);\n }\n }\n if (obj.protocols != null) {\n for (const value of obj.protocols) {\n w.uint32(18);\n w.string(value);\n }\n }\n if (obj.publicKey != null) {\n w.uint32(34);\n w.bytes(obj.publicKey);\n }\n if (obj.peerRecordEnvelope != null) {\n w.uint32(42);\n w.bytes(obj.peerRecordEnvelope);\n }\n if (obj.metadata != null && obj.metadata.size !== 0) {\n for (const [key, value] of obj.metadata.entries()) {\n w.uint32(50);\n Peer.Peer$metadataEntry.codec().encode({ key, value }, w);\n }\n }\n if (obj.tags != null && obj.tags.size !== 0) {\n for (const [key, value] of obj.tags.entries()) {\n w.uint32(58);\n Peer.Peer$tagsEntry.codec().encode({ key, value }, w);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n addresses: [],\n protocols: [],\n metadata: new Map(),\n tags: new Map()\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.addresses.push(Address.codec().decode(reader, reader.uint32()));\n break;\n case 2:\n obj.protocols.push(reader.string());\n break;\n case 4:\n obj.publicKey = reader.bytes();\n break;\n case 5:\n obj.peerRecordEnvelope = reader.bytes();\n break;\n case 6: {\n const entry = Peer.Peer$metadataEntry.codec().decode(reader, reader.uint32());\n obj.metadata.set(entry.key, entry.value);\n break;\n }\n case 7: {\n const entry = Peer.Peer$tagsEntry.codec().decode(reader, reader.uint32());\n obj.tags.set(entry.key, entry.value);\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Peer.encode = (obj) => {\n return encodeMessage(obj, Peer.codec());\n };\n Peer.decode = (buf) => {\n return decodeMessage(buf, Peer.codec());\n };\n})(Peer || (Peer = {}));\nexport var Address;\n(function (Address) {\n let _codec;\n Address.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.multiaddr != null && obj.multiaddr.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.multiaddr);\n }\n if (obj.isCertified != null) {\n w.uint32(16);\n w.bool(obj.isCertified);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n multiaddr: new Uint8Array(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.multiaddr = reader.bytes();\n break;\n case 2:\n obj.isCertified = reader.bool();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Address.encode = (obj) => {\n return encodeMessage(obj, Address.codec());\n };\n Address.decode = (buf) => {\n return decodeMessage(buf, Address.codec());\n };\n})(Address || (Address = {}));\nexport var Tag;\n(function (Tag) {\n let _codec;\n Tag.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.value != null && obj.value !== 0)) {\n w.uint32(8);\n w.uint32(obj.value);\n }\n if (obj.expiry != null) {\n w.uint32(16);\n w.uint64(obj.expiry);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n value: 0\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.value = reader.uint32();\n break;\n case 2:\n obj.expiry = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Tag.encode = (obj) => {\n return encodeMessage(obj, Tag.codec());\n };\n Tag.decode = (buf) => {\n return decodeMessage(buf, Tag.codec());\n };\n})(Tag || (Tag = {}));\n//# sourceMappingURL=peer.js.map","import { peerIdFromPeerId } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { Peer as PeerPB } from '../pb/peer.js';\nexport function bytesToPeer(peerId, buf) {\n const peer = PeerPB.decode(buf);\n if (peer.publicKey != null && peerId.publicKey == null) {\n peerId = peerIdFromPeerId({\n ...peerId,\n publicKey: peerId.publicKey\n });\n }\n const tags = new Map();\n // remove any expired tags\n const now = BigInt(Date.now());\n for (const [key, tag] of peer.tags.entries()) {\n if (tag.expiry != null && tag.expiry < now) {\n continue;\n }\n tags.set(key, tag);\n }\n return {\n ...peer,\n id: peerId,\n addresses: peer.addresses.map(({ multiaddr: ma, isCertified }) => {\n return {\n multiaddr: multiaddr(ma),\n isCertified: isCertified ?? false\n };\n }),\n metadata: peer.metadata,\n peerRecordEnvelope: peer.peerRecordEnvelope ?? undefined,\n tags\n };\n}\n//# sourceMappingURL=bytes-to-peer.js.map","import { CodeError } from '@libp2p/interface';\nimport { isPeerId } from '@libp2p/interface';\nimport { Key } from 'interface-datastore/key';\nimport { codes } from '../errors.js';\nexport const NAMESPACE_COMMON = '/peers/';\nexport function peerIdToDatastoreKey(peerId) {\n if (!isPeerId(peerId) || peerId.type == null) {\n throw new CodeError('Invalid PeerId', codes.ERR_INVALID_PARAMETERS);\n }\n const b32key = peerId.toCID().toString();\n return new Key(`${NAMESPACE_COMMON}${b32key}`);\n}\n//# sourceMappingURL=peer-id-to-datastore-key.js.map","import { CodeError } from '@libp2p/interface';\nimport { isMultiaddr, multiaddr } from '@multiformats/multiaddr';\nimport { codes } from '../errors.js';\nexport async function dedupeFilterAndSortAddresses(peerId, filter, addresses) {\n const addressMap = new Map();\n for (const addr of addresses) {\n if (addr == null) {\n continue;\n }\n if (addr.multiaddr instanceof Uint8Array) {\n addr.multiaddr = multiaddr(addr.multiaddr);\n }\n if (!isMultiaddr(addr.multiaddr)) {\n throw new CodeError('Multiaddr was invalid', codes.ERR_INVALID_PARAMETERS);\n }\n if (!(await filter(peerId, addr.multiaddr))) {\n continue;\n }\n const isCertified = addr.isCertified ?? false;\n const maStr = addr.multiaddr.toString();\n const existingAddr = addressMap.get(maStr);\n if (existingAddr != null) {\n addr.isCertified = existingAddr.isCertified || isCertified;\n }\n else {\n addressMap.set(maStr, {\n multiaddr: addr.multiaddr,\n isCertified\n });\n }\n }\n return [...addressMap.values()]\n .sort((a, b) => {\n return a.multiaddr.toString().localeCompare(b.multiaddr.toString());\n })\n .map(({ isCertified, multiaddr }) => ({\n isCertified,\n multiaddr: multiaddr.bytes\n }));\n}\n//# sourceMappingURL=dedupe-addresses.js.map","import { CodeError } from '@libp2p/interface';\nimport { equals as uint8arrayEquals } from 'uint8arrays/equals';\nimport { codes } from '../errors.js';\nimport { dedupeFilterAndSortAddresses } from './dedupe-addresses.js';\nexport async function toPeerPB(peerId, data, strategy, options) {\n if (data == null) {\n throw new CodeError('Invalid PeerData', codes.ERR_INVALID_PARAMETERS);\n }\n if (data.publicKey != null && peerId.publicKey != null && !uint8arrayEquals(data.publicKey, peerId.publicKey)) {\n throw new CodeError('publicKey bytes do not match peer id publicKey bytes', codes.ERR_INVALID_PARAMETERS);\n }\n const existingPeer = options.existingPeer;\n if (existingPeer != null && !peerId.equals(existingPeer.id)) {\n throw new CodeError('peer id did not match existing peer id', codes.ERR_INVALID_PARAMETERS);\n }\n let addresses = existingPeer?.addresses ?? [];\n let protocols = new Set(existingPeer?.protocols ?? []);\n let metadata = existingPeer?.metadata ?? new Map();\n let tags = existingPeer?.tags ?? new Map();\n let peerRecordEnvelope = existingPeer?.peerRecordEnvelope;\n // when patching, we replace the original fields with passed values\n if (strategy === 'patch') {\n if (data.multiaddrs != null || data.addresses != null) {\n addresses = [];\n if (data.multiaddrs != null) {\n addresses.push(...data.multiaddrs.map(multiaddr => ({\n isCertified: false,\n multiaddr\n })));\n }\n if (data.addresses != null) {\n addresses.push(...data.addresses);\n }\n }\n if (data.protocols != null) {\n protocols = new Set(data.protocols);\n }\n if (data.metadata != null) {\n const metadataEntries = data.metadata instanceof Map ? [...data.metadata.entries()] : Object.entries(data.metadata);\n metadata = createSortedMap(metadataEntries, {\n validate: validateMetadata\n });\n }\n if (data.tags != null) {\n const tagsEntries = data.tags instanceof Map ? [...data.tags.entries()] : Object.entries(data.tags);\n tags = createSortedMap(tagsEntries, {\n validate: validateTag,\n map: mapTag\n });\n }\n if (data.peerRecordEnvelope != null) {\n peerRecordEnvelope = data.peerRecordEnvelope;\n }\n }\n // when merging, we join the original fields with passed values\n if (strategy === 'merge') {\n if (data.multiaddrs != null) {\n addresses.push(...data.multiaddrs.map(multiaddr => ({\n isCertified: false,\n multiaddr\n })));\n }\n if (data.addresses != null) {\n addresses.push(...data.addresses);\n }\n if (data.protocols != null) {\n protocols = new Set([...protocols, ...data.protocols]);\n }\n if (data.metadata != null) {\n const metadataEntries = data.metadata instanceof Map ? [...data.metadata.entries()] : Object.entries(data.metadata);\n for (const [key, value] of metadataEntries) {\n if (value == null) {\n metadata.delete(key);\n }\n else {\n metadata.set(key, value);\n }\n }\n metadata = createSortedMap([...metadata.entries()], {\n validate: validateMetadata\n });\n }\n if (data.tags != null) {\n const tagsEntries = data.tags instanceof Map ? [...data.tags.entries()] : Object.entries(data.tags);\n const mergedTags = new Map(tags);\n for (const [key, value] of tagsEntries) {\n if (value == null) {\n mergedTags.delete(key);\n }\n else {\n mergedTags.set(key, value);\n }\n }\n tags = createSortedMap([...mergedTags.entries()], {\n validate: validateTag,\n map: mapTag\n });\n }\n if (data.peerRecordEnvelope != null) {\n peerRecordEnvelope = data.peerRecordEnvelope;\n }\n }\n const output = {\n addresses: await dedupeFilterAndSortAddresses(peerId, options.addressFilter ?? (async () => true), addresses),\n protocols: [...protocols.values()].sort((a, b) => {\n return a.localeCompare(b);\n }),\n metadata,\n tags,\n publicKey: existingPeer?.id.publicKey ?? data.publicKey ?? peerId.publicKey,\n peerRecordEnvelope\n };\n // Ed25519 and secp256k1 have their public key embedded in them so no need to duplicate it\n if (peerId.type !== 'RSA') {\n delete output.publicKey;\n }\n return output;\n}\n/**\n * In JS maps are ordered by insertion order so create a new map with the\n * keys inserted in alphabetical order.\n */\nfunction createSortedMap(entries, options) {\n const output = new Map();\n for (const [key, value] of entries) {\n if (value == null) {\n continue;\n }\n options.validate(key, value);\n }\n for (const [key, value] of entries.sort(([a], [b]) => {\n return a.localeCompare(b);\n })) {\n if (value != null) {\n output.set(key, options.map?.(key, value) ?? value);\n }\n }\n return output;\n}\nfunction validateMetadata(key, value) {\n if (typeof key !== 'string') {\n throw new CodeError('Metadata key must be a string', codes.ERR_INVALID_PARAMETERS);\n }\n if (!(value instanceof Uint8Array)) {\n throw new CodeError('Metadata value must be a Uint8Array', codes.ERR_INVALID_PARAMETERS);\n }\n}\nfunction validateTag(key, tag) {\n if (typeof key !== 'string') {\n throw new CodeError('Tag name must be a string', codes.ERR_INVALID_PARAMETERS);\n }\n if (tag.value != null) {\n if (parseInt(`${tag.value}`, 10) !== tag.value) {\n throw new CodeError('Tag value must be an integer', codes.ERR_INVALID_PARAMETERS);\n }\n if (tag.value < 0 || tag.value > 100) {\n throw new CodeError('Tag value must be between 0-100', codes.ERR_INVALID_PARAMETERS);\n }\n }\n if (tag.ttl != null) {\n if (parseInt(`${tag.ttl}`, 10) !== tag.ttl) {\n throw new CodeError('Tag ttl must be an integer', codes.ERR_INVALID_PARAMETERS);\n }\n if (tag.ttl < 0) {\n throw new CodeError('Tag ttl must be between greater than 0', codes.ERR_INVALID_PARAMETERS);\n }\n }\n}\nfunction mapTag(key, tag) {\n let expiry;\n if (tag.expiry != null) {\n expiry = tag.expiry;\n }\n if (tag.ttl != null) {\n expiry = BigInt(Date.now() + Number(tag.ttl));\n }\n return {\n value: tag.value ?? 0,\n expiry\n };\n}\n//# sourceMappingURL=to-peer-pb.js.map","import { CodeError } from '@libp2p/interface';\nimport { PeerMap } from '@libp2p/peer-collections';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport mortice, {} from 'mortice';\nimport { base32 } from 'multiformats/bases/base32';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { codes } from './errors.js';\nimport { Peer as PeerPB } from './pb/peer.js';\nimport { bytesToPeer } from './utils/bytes-to-peer.js';\nimport { NAMESPACE_COMMON, peerIdToDatastoreKey } from './utils/peer-id-to-datastore-key.js';\nimport { toPeerPB } from './utils/to-peer-pb.js';\nfunction decodePeer(key, value, cache) {\n // /peers/${peer-id-as-libp2p-key-cid-string-in-base-32}\n const base32Str = key.toString().split('/')[2];\n const buf = base32.decode(base32Str);\n const peerId = peerIdFromBytes(buf);\n const cached = cache.get(peerId);\n if (cached != null) {\n return cached;\n }\n const peer = bytesToPeer(peerId, value);\n cache.set(peerId, peer);\n return peer;\n}\nfunction mapQuery(query, cache) {\n if (query == null) {\n return {};\n }\n return {\n prefix: NAMESPACE_COMMON,\n filters: (query.filters ?? []).map(fn => ({ key, value }) => {\n return fn(decodePeer(key, value, cache));\n }),\n orders: (query.orders ?? []).map(fn => (a, b) => {\n return fn(decodePeer(a.key, a.value, cache), decodePeer(b.key, b.value, cache));\n })\n };\n}\nexport class PersistentStore {\n peerId;\n datastore;\n lock;\n addressFilter;\n constructor(components, init = {}) {\n this.peerId = components.peerId;\n this.datastore = components.datastore;\n this.addressFilter = init.addressFilter;\n this.lock = mortice({\n name: 'peer-store',\n singleProcess: true\n });\n }\n async has(peerId) {\n return this.datastore.has(peerIdToDatastoreKey(peerId));\n }\n async delete(peerId) {\n if (this.peerId.equals(peerId)) {\n throw new CodeError('Cannot delete self peer', codes.ERR_INVALID_PARAMETERS);\n }\n await this.datastore.delete(peerIdToDatastoreKey(peerId));\n }\n async load(peerId) {\n const buf = await this.datastore.get(peerIdToDatastoreKey(peerId));\n return bytesToPeer(peerId, buf);\n }\n async save(peerId, data) {\n const { existingBuf, existingPeer } = await this.#findExistingPeer(peerId);\n const peerPb = await toPeerPB(peerId, data, 'patch', {\n addressFilter: this.addressFilter\n });\n return this.#saveIfDifferent(peerId, peerPb, existingBuf, existingPeer);\n }\n async patch(peerId, data) {\n const { existingBuf, existingPeer } = await this.#findExistingPeer(peerId);\n const peerPb = await toPeerPB(peerId, data, 'patch', {\n addressFilter: this.addressFilter,\n existingPeer\n });\n return this.#saveIfDifferent(peerId, peerPb, existingBuf, existingPeer);\n }\n async merge(peerId, data) {\n const { existingBuf, existingPeer } = await this.#findExistingPeer(peerId);\n const peerPb = await toPeerPB(peerId, data, 'merge', {\n addressFilter: this.addressFilter,\n existingPeer\n });\n return this.#saveIfDifferent(peerId, peerPb, existingBuf, existingPeer);\n }\n async *all(query) {\n const peerCache = new PeerMap();\n for await (const { key, value } of this.datastore.query(mapQuery(query ?? {}, peerCache))) {\n const peer = decodePeer(key, value, peerCache);\n if (peer.id.equals(this.peerId)) {\n // Skip self peer if present\n continue;\n }\n yield peer;\n }\n }\n async #findExistingPeer(peerId) {\n try {\n const existingBuf = await this.datastore.get(peerIdToDatastoreKey(peerId));\n const existingPeer = bytesToPeer(peerId, existingBuf);\n return {\n existingBuf,\n existingPeer\n };\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n return {};\n }\n async #saveIfDifferent(peerId, peer, existingBuf, existingPeer) {\n const buf = PeerPB.encode(peer);\n if (existingBuf != null && uint8ArrayEquals(buf, existingBuf)) {\n return {\n peer: bytesToPeer(peerId, buf),\n previous: existingPeer,\n updated: false\n };\n }\n await this.datastore.put(peerIdToDatastoreKey(peerId), buf);\n return {\n peer: bytesToPeer(peerId, buf),\n previous: existingPeer,\n updated: true\n };\n }\n}\n//# sourceMappingURL=store.js.map","/**\n * @packageDocumentation\n *\n * The peer store is where libp2p stores data about the peers it has encountered on the network.\n */\nimport { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';\nimport all from 'it-all';\nimport { PersistentStore } from './store.js';\n/**\n * An implementation of PeerStore that stores data in a Datastore\n */\nexport class PersistentPeerStore {\n store;\n events;\n peerId;\n log;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('libp2p:peer-store');\n this.events = components.events;\n this.peerId = components.peerId;\n this.store = new PersistentStore(components, init);\n }\n [Symbol.toStringTag] = '@libp2p/peer-store';\n async forEach(fn, query) {\n this.log.trace('forEach await read lock');\n const release = await this.store.lock.readLock();\n this.log.trace('forEach got read lock');\n try {\n for await (const peer of this.store.all(query)) {\n fn(peer);\n }\n }\n finally {\n this.log.trace('forEach release read lock');\n release();\n }\n }\n async all(query) {\n this.log.trace('all await read lock');\n const release = await this.store.lock.readLock();\n this.log.trace('all got read lock');\n try {\n return await all(this.store.all(query));\n }\n finally {\n this.log.trace('all release read lock');\n release();\n }\n }\n async delete(peerId) {\n this.log.trace('delete await write lock');\n const release = await this.store.lock.writeLock();\n this.log.trace('delete got write lock');\n try {\n await this.store.delete(peerId);\n }\n finally {\n this.log.trace('delete release write lock');\n release();\n }\n }\n async has(peerId) {\n this.log.trace('has await read lock');\n const release = await this.store.lock.readLock();\n this.log.trace('has got read lock');\n try {\n return await this.store.has(peerId);\n }\n finally {\n this.log.trace('has release read lock');\n release();\n }\n }\n async get(peerId) {\n this.log.trace('get await read lock');\n const release = await this.store.lock.readLock();\n this.log.trace('get got read lock');\n try {\n return await this.store.load(peerId);\n }\n finally {\n this.log.trace('get release read lock');\n release();\n }\n }\n async save(id, data) {\n this.log.trace('save await write lock');\n const release = await this.store.lock.writeLock();\n this.log.trace('save got write lock');\n try {\n const result = await this.store.save(id, data);\n this.#emitIfUpdated(id, result);\n return result.peer;\n }\n finally {\n this.log.trace('save release write lock');\n release();\n }\n }\n async patch(id, data) {\n this.log.trace('patch await write lock');\n const release = await this.store.lock.writeLock();\n this.log.trace('patch got write lock');\n try {\n const result = await this.store.patch(id, data);\n this.#emitIfUpdated(id, result);\n return result.peer;\n }\n finally {\n this.log.trace('patch release write lock');\n release();\n }\n }\n async merge(id, data) {\n this.log.trace('merge await write lock');\n const release = await this.store.lock.writeLock();\n this.log.trace('merge got write lock');\n try {\n const result = await this.store.merge(id, data);\n this.#emitIfUpdated(id, result);\n return result.peer;\n }\n finally {\n this.log.trace('merge release write lock');\n release();\n }\n }\n async consumePeerRecord(buf, expectedPeer) {\n const envelope = await RecordEnvelope.openAndCertify(buf, PeerRecord.DOMAIN);\n if (expectedPeer?.equals(envelope.peerId) === false) {\n this.log('envelope peer id was not the expected peer id - expected: %p received: %p', expectedPeer, envelope.peerId);\n return false;\n }\n const peerRecord = PeerRecord.createFromProtobuf(envelope.payload);\n let peer;\n try {\n peer = await this.get(envelope.peerId);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n // ensure seq is greater than, or equal to, the last received\n if (peer?.peerRecordEnvelope != null) {\n const storedEnvelope = await RecordEnvelope.createFromProtobuf(peer.peerRecordEnvelope);\n const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);\n if (storedRecord.seqNumber >= peerRecord.seqNumber) {\n this.log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);\n return false;\n }\n }\n await this.patch(peerRecord.peerId, {\n peerRecordEnvelope: buf,\n addresses: peerRecord.multiaddrs.map(multiaddr => ({\n isCertified: true,\n multiaddr\n }))\n });\n return true;\n }\n #emitIfUpdated(id, result) {\n if (!result.updated) {\n return;\n }\n if (this.peerId.equals(id)) {\n this.events.safeDispatchEvent('self:peer:update', { detail: result });\n }\n else {\n this.events.safeDispatchEvent('peer:update', { detail: result });\n }\n }\n}\n//# sourceMappingURL=index.js.map","export function debounce(func, wait) {\n let timeout;\n return function () {\n const later = function () {\n timeout = undefined;\n func();\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n//# sourceMappingURL=utils.js.map","import { peerIdFromString } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { debounce } from './utils.js';\nconst defaultAddressFilter = (addrs) => addrs;\n/**\n * If the passed multiaddr contains the passed peer id, remove it\n */\nfunction stripPeerId(ma, peerId) {\n const observedPeerIdStr = ma.getPeerId();\n // strip our peer id if it has been passed\n if (observedPeerIdStr != null) {\n const observedPeerId = peerIdFromString(observedPeerIdStr);\n // use same encoding for comparison\n if (observedPeerId.equals(peerId)) {\n ma = ma.decapsulate(multiaddr(`/p2p/${peerId.toString()}`));\n }\n }\n return ma;\n}\nexport class DefaultAddressManager {\n log;\n components;\n // this is an array to allow for duplicates, e.g. multiples of `/ip4/0.0.0.0/tcp/0`\n listen;\n announce;\n observed;\n announceFilter;\n /**\n * Responsible for managing the peer addresses.\n * Peers can specify their listen and announce addresses.\n * The listen addresses will be used by the libp2p transports to listen for new connections,\n * while the announce addresses will be used for the peer addresses' to other peers in the network.\n */\n constructor(components, init = {}) {\n const { listen = [], announce = [] } = init;\n this.components = components;\n this.log = components.logger.forComponent('libp2p:address-manager');\n this.listen = listen.map(ma => ma.toString());\n this.announce = new Set(announce.map(ma => ma.toString()));\n this.observed = new Map();\n this.announceFilter = init.announceFilter ?? defaultAddressFilter;\n // this method gets called repeatedly on startup when transports start listening so\n // debounce it so we don't cause multiple self:peer:update events to be emitted\n this._updatePeerStoreAddresses = debounce(this._updatePeerStoreAddresses.bind(this), 1000);\n // update our stored addresses when new transports listen\n components.events.addEventListener('transport:listening', () => {\n this._updatePeerStoreAddresses();\n });\n // update our stored addresses when existing transports stop listening\n components.events.addEventListener('transport:close', () => {\n this._updatePeerStoreAddresses();\n });\n }\n [Symbol.toStringTag] = '@libp2p/address-manager';\n _updatePeerStoreAddresses() {\n // if announce addresses have been configured, ensure they make it into our peer\n // record for things like identify\n const addrs = this.getAnnounceAddrs()\n .concat(this.components.transportManager.getAddrs())\n .concat([...this.observed.entries()]\n .filter(([_, metadata]) => metadata.confident)\n .map(([str]) => multiaddr(str))).map(ma => {\n // strip our peer id if it is present\n if (ma.getPeerId() === this.components.peerId.toString()) {\n return ma.decapsulate(`/p2p/${this.components.peerId.toString()}`);\n }\n return ma;\n });\n this.components.peerStore.patch(this.components.peerId, {\n multiaddrs: addrs\n })\n .catch(err => { this.log.error('error updating addresses', err); });\n }\n /**\n * Get peer listen multiaddrs\n */\n getListenAddrs() {\n return Array.from(this.listen).map((a) => multiaddr(a));\n }\n /**\n * Get peer announcing multiaddrs\n */\n getAnnounceAddrs() {\n return Array.from(this.announce).map((a) => multiaddr(a));\n }\n /**\n * Get observed multiaddrs\n */\n getObservedAddrs() {\n return Array.from(this.observed).map(([a]) => multiaddr(a));\n }\n /**\n * Add peer observed addresses\n */\n addObservedAddr(addr) {\n addr = stripPeerId(addr, this.components.peerId);\n const addrString = addr.toString();\n // do not trigger the change:addresses event if we already know about this address\n if (this.observed.has(addrString)) {\n return;\n }\n this.observed.set(addrString, {\n confident: false\n });\n }\n confirmObservedAddr(addr) {\n addr = stripPeerId(addr, this.components.peerId);\n const addrString = addr.toString();\n const metadata = this.observed.get(addrString) ?? {\n confident: false\n };\n const startingConfidence = metadata.confident;\n this.observed.set(addrString, {\n confident: true\n });\n // only trigger the 'self:peer:update' event if our confidence in an address has changed\n if (!startingConfidence) {\n this._updatePeerStoreAddresses();\n }\n }\n removeObservedAddr(addr) {\n addr = stripPeerId(addr, this.components.peerId);\n const addrString = addr.toString();\n this.observed.delete(addrString);\n }\n getAddresses() {\n let addrs = this.getAnnounceAddrs().map(ma => ma.toString());\n if (addrs.length === 0) {\n // no configured announce addrs, add configured listen addresses\n addrs = this.components.transportManager.getAddrs().map(ma => ma.toString());\n }\n // add observed addresses we are confident in\n addrs = addrs.concat(Array.from(this.observed)\n .filter(([ma, metadata]) => metadata.confident)\n .map(([ma]) => ma));\n // dedupe multiaddrs\n const addrSet = new Set(addrs);\n // Create advertising list\n return this.announceFilter(Array.from(addrSet)\n .map(str => multiaddr(str)))\n .map(ma => {\n // do not append our peer id to a path multiaddr as it will become invalid\n if (ma.protos().pop()?.path === true) {\n return ma;\n }\n if (ma.getPeerId() === this.components.peerId.toString()) {\n return ma;\n }\n return ma.encapsulate(`/p2p/${this.components.peerId.toString()}`);\n });\n }\n}\n//# sourceMappingURL=index.js.map","import { CodeError, serviceCapabilities, serviceDependencies } from '@libp2p/interface';\nimport { isStartable } from '@libp2p/interface';\nimport { defaultLogger } from '@libp2p/logger';\nclass DefaultComponents {\n components = {};\n _started = false;\n constructor(init = {}) {\n this.components = {};\n for (const [key, value] of Object.entries(init)) {\n this.components[key] = value;\n }\n if (this.components.logger == null) {\n this.components.logger = defaultLogger();\n }\n }\n isStarted() {\n return this._started;\n }\n async _invokeStartableMethod(methodName) {\n await Promise.all(Object.values(this.components)\n .filter(obj => isStartable(obj))\n .map(async (startable) => {\n await startable[methodName]?.();\n }));\n }\n async beforeStart() {\n await this._invokeStartableMethod('beforeStart');\n }\n async start() {\n await this._invokeStartableMethod('start');\n this._started = true;\n }\n async afterStart() {\n await this._invokeStartableMethod('afterStart');\n }\n async beforeStop() {\n await this._invokeStartableMethod('beforeStop');\n }\n async stop() {\n await this._invokeStartableMethod('stop');\n this._started = false;\n }\n async afterStop() {\n await this._invokeStartableMethod('afterStop');\n }\n}\nconst OPTIONAL_SERVICES = [\n 'metrics',\n 'connectionProtector',\n 'dns'\n];\nconst NON_SERVICE_PROPERTIES = [\n 'components',\n 'isStarted',\n 'beforeStart',\n 'start',\n 'afterStart',\n 'beforeStop',\n 'stop',\n 'afterStop',\n 'then',\n '_invokeStartableMethod'\n];\nexport function defaultComponents(init = {}) {\n const components = new DefaultComponents(init);\n const proxy = new Proxy(components, {\n get(target, prop, receiver) {\n if (typeof prop === 'string' && !NON_SERVICE_PROPERTIES.includes(prop)) {\n const service = components.components[prop];\n if (service == null && !OPTIONAL_SERVICES.includes(prop)) {\n throw new CodeError(`${prop} not set`, 'ERR_SERVICE_MISSING');\n }\n return service;\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value) {\n if (typeof prop === 'string') {\n components.components[prop] = value;\n }\n else {\n Reflect.set(target, prop, value);\n }\n return true;\n }\n });\n // @ts-expect-error component keys are proxied\n return proxy;\n}\nexport function checkServiceDependencies(components) {\n const serviceCapabilities = {};\n for (const service of Object.values(components.components)) {\n for (const capability of getServiceCapabilities(service)) {\n serviceCapabilities[capability] = true;\n }\n }\n for (const service of Object.values(components.components)) {\n for (const capability of getServiceDependencies(service)) {\n if (serviceCapabilities[capability] !== true) {\n throw new CodeError(`Service \"${getServiceName(service)}\" required capability \"${capability}\" but it was not provided by any component, you may need to add additional configuration when creating your node.`, 'ERR_UNMET_SERVICE_DEPENDENCIES');\n }\n }\n }\n}\nfunction getServiceCapabilities(service) {\n if (Array.isArray(service?.[serviceCapabilities])) {\n return service[serviceCapabilities];\n }\n return [];\n}\nfunction getServiceDependencies(service) {\n if (Array.isArray(service?.[serviceDependencies])) {\n return service[serviceDependencies];\n }\n return [];\n}\nfunction getServiceName(service) {\n return service?.[Symbol.toStringTag] ?? service?.toString() ?? 'unknown';\n}\n//# sourceMappingURL=components.js.map","import { isPrivateIp } from '@libp2p/utils/private-ip';\n/**\n * Returns a connection gater that disallows dialling private addresses by\n * default. Browsers are severely limited in their resource usage so don't\n * waste time trying to dial undiallable addresses.\n */\nexport function connectionGater(gater = {}) {\n return {\n denyDialPeer: async () => false,\n denyDialMultiaddr: async (multiaddr) => {\n const tuples = multiaddr.stringTuples();\n if (tuples[0][0] === 4 || tuples[0][0] === 41) {\n return Boolean(isPrivateIp(`${tuples[0][1]}`));\n }\n return false;\n },\n denyInboundConnection: async () => false,\n denyOutboundConnection: async () => false,\n denyInboundEncryptedConnection: async () => false,\n denyOutboundEncryptedConnection: async () => false,\n denyInboundUpgradedConnection: async () => false,\n denyOutboundUpgradedConnection: async () => false,\n filterMultiaddrForPeer: async () => true,\n ...gater\n };\n}\n//# sourceMappingURL=connection-gater.browser.js.map","import { isPrivateIp } from '../private-ip.js';\n/**\n * Check if a given multiaddr has a private address.\n */\nexport function isPrivate(ma) {\n try {\n const { address } = ma.nodeAddress();\n return Boolean(isPrivateIp(address));\n }\n catch {\n return true;\n }\n}\n//# sourceMappingURL=is-private.js.map","/**\n * @packageDocumentation\n *\n * Provides strategies to sort a list of multiaddrs.\n *\n * @example\n *\n * ```typescript\n * import { publicAddressesFirst } from '@libp2p/utils/address-sort'\n * import { multiaddr } from '@multformats/multiaddr'\n *\n *\n * const addresses = [\n * multiaddr('/ip4/127.0.0.1/tcp/9000'),\n * multiaddr('/ip4/82.41.53.1/tcp/9000')\n * ].sort(publicAddressesFirst)\n *\n * console.info(addresses)\n * // ['/ip4/82.41.53.1/tcp/9000', '/ip4/127.0.0.1/tcp/9000']\n * ```\n */\nimport { Circuit } from '@multiformats/multiaddr-matcher';\nimport { isPrivate } from './multiaddr/is-private.js';\n/**\n * Compare function for array.sort() that moves public addresses to the start\n * of the array.\n */\nexport function publicAddressesFirst(a, b) {\n const isAPrivate = isPrivate(a.multiaddr);\n const isBPrivate = isPrivate(b.multiaddr);\n if (isAPrivate && !isBPrivate) {\n return 1;\n }\n else if (!isAPrivate && isBPrivate) {\n return -1;\n }\n return 0;\n}\n/**\n * Compare function for array.sort() that moves certified addresses to the start\n * of the array.\n */\nexport function certifiedAddressesFirst(a, b) {\n if (a.isCertified && !b.isCertified) {\n return -1;\n }\n else if (!a.isCertified && b.isCertified) {\n return 1;\n }\n return 0;\n}\n/**\n * Compare function for array.sort() that moves circuit relay addresses to the\n * start of the array.\n */\nexport function circuitRelayAddressesLast(a, b) {\n const isACircuit = Circuit.exactMatch(a.multiaddr);\n const isBCircuit = Circuit.exactMatch(b.multiaddr);\n if (isACircuit && !isBCircuit) {\n return 1;\n }\n else if (!isACircuit && isBCircuit) {\n return -1;\n }\n return 0;\n}\nexport function defaultAddressSort(a, b) {\n const publicResult = publicAddressesFirst(a, b);\n if (publicResult !== 0) {\n return publicResult;\n }\n const relayResult = circuitRelayAddressesLast(a, b);\n if (relayResult !== 0) {\n return relayResult;\n }\n const certifiedResult = certifiedAddressesFirst(a, b);\n return certifiedResult;\n}\n//# sourceMappingURL=address-sort.js.map","import { RecordType } from '../index.js';\nexport function getTypes(types) {\n const DEFAULT_TYPES = [\n RecordType.A\n ];\n if (types == null) {\n return DEFAULT_TYPES;\n }\n if (Array.isArray(types)) {\n if (types.length === 0) {\n return DEFAULT_TYPES;\n }\n return types;\n }\n return [\n types\n ];\n}\n//# sourceMappingURL=get-types.js.map","import { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { RecordType } from '../index.js';\n/**\n * This TTL will be used if the remote service does not return one\n */\nexport const DEFAULT_TTL = 60;\nexport function toDNSResponse(obj) {\n return {\n Status: obj.Status ?? 0,\n TC: obj.TC ?? obj.flag_tc ?? false,\n RD: obj.RD ?? obj.flag_rd ?? false,\n RA: obj.RA ?? obj.flag_ra ?? false,\n AD: obj.AD ?? obj.flag_ad ?? false,\n CD: obj.CD ?? obj.flag_cd ?? false,\n Question: (obj.Question ?? obj.questions ?? []).map((question) => {\n return {\n name: question.name,\n type: RecordType[question.type]\n };\n }),\n Answer: (obj.Answer ?? obj.answers ?? []).map((answer) => {\n return {\n name: answer.name,\n type: RecordType[answer.type],\n TTL: (answer.TTL ?? answer.ttl ?? DEFAULT_TTL),\n data: answer.data instanceof Uint8Array ? uint8ArrayToString(answer.data) : answer.data\n };\n })\n };\n}\n//# sourceMappingURL=to-dns-response.js.map","/* eslint-env browser */\nimport PQueue from 'p-queue';\nimport { CustomProgressEvent } from 'progress-events';\nimport { RecordType } from '../index.js';\nimport { getTypes } from '../utils/get-types.js';\nimport { toDNSResponse } from '../utils/to-dns-response.js';\n/**\n * Browsers limit concurrent connections per host (~6), we don't want to exhaust\n * the limit so this value controls how many DNS queries can be in flight at\n * once.\n */\nexport const DEFAULT_QUERY_CONCURRENCY = 4;\n/**\n * Uses the RFC 8427 'application/dns-json' content-type to resolve DNS queries.\n *\n * Supports and server that uses the same schema as Google's DNS over HTTPS\n * resolver.\n *\n * This resolver needs fewer dependencies than the regular DNS-over-HTTPS\n * resolver so can result in a smaller bundle size and consequently is preferred\n * for browser use.\n *\n * @see https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https/make-api-requests/dns-json/\n * @see https://github.com/curl/curl/wiki/DNS-over-HTTPS#publicly-available-servers\n * @see https://dnsprivacy.org/public_resolvers/\n * @see https://datatracker.ietf.org/doc/html/rfc8427\n */\nexport function dnsJsonOverHttps(url, init = {}) {\n const httpQueue = new PQueue({\n concurrency: init.queryConcurrency ?? DEFAULT_QUERY_CONCURRENCY\n });\n return async (fqdn, options = {}) => {\n const searchParams = new URLSearchParams();\n searchParams.set('name', fqdn);\n getTypes(options.types).forEach(type => {\n // We pass record type as a string to the server because cloudflare DNS bug. see https://github.com/ipfs/helia/issues/474\n searchParams.append('type', RecordType[type]);\n });\n options.onProgress?.(new CustomProgressEvent('dns:query', { detail: fqdn }));\n // query DNS-JSON over HTTPS server\n const response = await httpQueue.add(async () => {\n const res = await fetch(`${url}?${searchParams}`, {\n headers: {\n accept: 'application/dns-json'\n },\n signal: options?.signal\n });\n if (res.status !== 200) {\n throw new Error(`Unexpected HTTP status: ${res.status} - ${res.statusText}`);\n }\n const response = toDNSResponse(await res.json());\n options.onProgress?.(new CustomProgressEvent('dns:response', { detail: response }));\n return response;\n }, {\n signal: options.signal\n });\n if (response == null) {\n throw new Error('No DNS response received');\n }\n return response;\n };\n}\n//# sourceMappingURL=dns-json-over-https.js.map","import { dnsJsonOverHttps } from './dns-json-over-https.js';\nexport function defaultResolver() {\n return [\n dnsJsonOverHttps('https://cloudflare-dns.com/dns-query'),\n dnsJsonOverHttps('https://dns.google/resolve')\n ];\n}\n//# sourceMappingURL=default.browser.js.map","import hashlru from 'hashlru';\nimport { RecordType } from '../index.js';\nimport { DEFAULT_TTL, toDNSResponse } from './to-dns-response.js';\n/**\n * Time Aware Least Recent Used Cache\n *\n * @see https://arxiv.org/pdf/1801.00390\n */\nclass CachedAnswers {\n lru;\n constructor(maxSize) {\n this.lru = hashlru(maxSize);\n }\n get(fqdn, types) {\n let foundAllAnswers = true;\n const answers = [];\n for (const type of types) {\n const cached = this.getAnswers(fqdn, type);\n if (cached.length === 0) {\n foundAllAnswers = false;\n break;\n }\n answers.push(...cached);\n }\n if (foundAllAnswers) {\n return toDNSResponse({ answers });\n }\n }\n getAnswers(domain, type) {\n const key = `${domain.toLowerCase()}-${type}`;\n const answers = this.lru.get(key);\n if (answers != null) {\n const cachedAnswers = answers\n .filter((entry) => {\n return entry.expires > Date.now();\n })\n .map(({ expires, value }) => ({\n ...value,\n TTL: Math.round((expires - Date.now()) / 1000),\n type: RecordType[value.type]\n }));\n if (cachedAnswers.length === 0) {\n this.lru.remove(key);\n }\n // @ts-expect-error hashlru stringifies stored types which turns enums\n // into strings, we convert back into enums above but tsc doesn't know\n return cachedAnswers;\n }\n return [];\n }\n add(domain, answer) {\n const key = `${domain.toLowerCase()}-${answer.type}`;\n const answers = this.lru.get(key) ?? [];\n answers.push({\n expires: Date.now() + ((answer.TTL ?? DEFAULT_TTL) * 1000),\n value: answer\n });\n this.lru.set(key, answers);\n }\n remove(domain, type) {\n const key = `${domain.toLowerCase()}-${type}`;\n this.lru.remove(key);\n }\n clear() {\n this.lru.clear();\n }\n}\n/**\n * Avoid sending multiple queries for the same hostname by caching results\n */\nexport function cache(size) {\n return new CachedAnswers(size);\n}\n//# sourceMappingURL=cache.js.map","import { CustomProgressEvent } from 'progress-events';\nimport { defaultResolver } from './resolvers/default.js';\nimport { cache } from './utils/cache.js';\nimport { getTypes } from './utils/get-types.js';\nconst DEFAULT_ANSWER_CACHE_SIZE = 1000;\nexport class DNS {\n resolvers;\n cache;\n constructor(init) {\n this.resolvers = {};\n this.cache = cache(init.cacheSize ?? DEFAULT_ANSWER_CACHE_SIZE);\n Object.entries(init.resolvers ?? {}).forEach(([tld, resolver]) => {\n if (!Array.isArray(resolver)) {\n resolver = [resolver];\n }\n // convert `com` -> `com.`\n if (!tld.endsWith('.')) {\n tld = `${tld}.`;\n }\n this.resolvers[tld] = resolver;\n });\n // configure default resolver if none specified\n if (this.resolvers['.'] == null) {\n this.resolvers['.'] = defaultResolver();\n }\n }\n /**\n * Queries DNS resolvers for the passed record types for the passed domain.\n *\n * If cached records exist for all desired types they will be returned\n * instead.\n *\n * Any new responses will be added to the cache for subsequent requests.\n */\n async query(domain, options = {}) {\n const types = getTypes(options.types);\n const cached = options.cached !== false ? this.cache.get(domain, types) : undefined;\n if (cached != null) {\n options.onProgress?.(new CustomProgressEvent('dns:cache', { detail: cached }));\n return cached;\n }\n const tld = `${domain.split('.').pop()}.`;\n const resolvers = (this.resolvers[tld] ?? this.resolvers['.']).sort(() => {\n return (Math.random() > 0.5) ? -1 : 1;\n });\n const errors = [];\n for (const resolver of resolvers) {\n // skip further resolutions if the user aborted the signal\n if (options.signal?.aborted === true) {\n break;\n }\n try {\n const result = await resolver(domain, {\n ...options,\n types\n });\n for (const answer of result.Answer) {\n this.cache.add(domain, answer);\n }\n return result;\n }\n catch (err) {\n errors.push(err);\n options.onProgress?.(new CustomProgressEvent('dns:error', { detail: err }));\n }\n }\n if (errors.length === 1) {\n throw errors[0];\n }\n throw new AggregateError(errors, `DNS lookup of ${domain} ${types} failed`);\n }\n}\n//# sourceMappingURL=dns.js.map","/**\n * @packageDocumentation\n *\n * Query DNS records using `node:dns`, DNS over HTTP and/or DNSJSON over HTTP.\n *\n * A list of publicly accessible servers can be found [here](https://github.com/curl/curl/wiki/DNS-over-HTTPS#publicly-available-servers).\n *\n * @example Using the default resolver\n *\n * ```TypeScript\n * import { dns } from '@multiformats/dns'\n *\n * const resolver = dns()\n *\n * // resolve A records with a 5s timeout\n * const result = await dns.query('google.com', {\n * signal: AbortSignal.timeout(5000)\n * })\n * ```\n *\n * @example Using per-TLD resolvers\n *\n * ```TypeScript\n * import { dns } from '@multiformats/dns'\n * import { dnsJsonOverHttps } from '@multiformats/dns/resolvers'\n *\n * const resolver = dns({\n * resolvers: {\n * // will only be used to resolve `.com` addresses\n * 'com.': dnsJsonOverHttps('https://cloudflare-dns.com/dns-query'),\n *\n * // this can also be an array, resolvers will be shuffled and tried in\n * // series\n * 'net.': [\n * dnsJsonOverHttps('https://dns.google/resolve'),\n * dnsJsonOverHttps('https://dns.pub/dns-query')\n * ],\n *\n * // will only be used to resolve all other addresses\n * '.': dnsJsonOverHttps('https://dnsforge.de/dns-query'),\n * }\n * })\n * ```\n *\n * @example Query for specific record types\n *\n * ```TypeScript\n * import { dns, RecordType } from '@multiformats/dns'\n *\n * const resolver = dns()\n *\n * // resolve only TXT records\n * const result = await dns.query('google.com', {\n * types: [\n * RecordType.TXT\n * ]\n * })\n * ```\n *\n * ## Caching\n *\n * Individual Aanswers are cached so. If you make a request, for which all\n * record types are cached, all values will be pulled from the cache.\n *\n * If any of the record types are not cached, a new request will be resolved as\n * if none of the records were cached, and the cache will be updated to include\n * the new results.\n *\n * @example Ignoring the cache\n *\n * ```TypeScript\n * import { dns, RecordType } from '@multiformats/dns'\n *\n * const resolver = dns()\n *\n * // do not used cached results, always resolve a new query\n * const result = await dns.query('google.com', {\n * cached: false\n * })\n * ```\n */\nimport { DNS as DNSClass } from './dns.js';\n/**\n * A subset of DNS Record Types\n *\n * @see https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-4.\n */\nexport var RecordType;\n(function (RecordType) {\n RecordType[RecordType[\"A\"] = 1] = \"A\";\n RecordType[RecordType[\"CNAME\"] = 5] = \"CNAME\";\n RecordType[RecordType[\"TXT\"] = 16] = \"TXT\";\n RecordType[RecordType[\"AAAA\"] = 28] = \"AAAA\";\n})(RecordType || (RecordType = {}));\n/**\n * The default maximum amount of recursion allowed during a query\n */\nexport const MAX_RECURSIVE_DEPTH = 32;\nexport function dns(init = {}) {\n return new DNSClass(init);\n}\n//# sourceMappingURL=index.js.map","import { dns, RecordType } from '@multiformats/dns';\nimport { multiaddr } from '../index.js';\nimport { getProtocol } from '../protocols-table.js';\nconst MAX_RECURSIVE_DEPTH = 32;\nconst { code: dnsaddrCode } = getProtocol('dnsaddr');\nclass RecursionLimitError extends Error {\n constructor(message = 'Max recursive depth reached') {\n super(message);\n this.name = 'RecursionLimitError';\n }\n}\nexport const dnsaddrResolver = async function dnsaddrResolver(ma, options = {}) {\n const recursionLimit = options.maxRecursiveDepth ?? MAX_RECURSIVE_DEPTH;\n if (recursionLimit === 0) {\n throw new RecursionLimitError('Max recursive depth reached');\n }\n const [, hostname] = ma.stringTuples().find(([proto]) => proto === dnsaddrCode) ?? [];\n const resolver = options?.dns ?? dns();\n const result = await resolver.query(`_dnsaddr.${hostname}`, {\n signal: options?.signal,\n types: [\n RecordType.TXT\n ]\n });\n const peerId = ma.getPeerId();\n const output = [];\n for (const answer of result.Answer) {\n const addr = answer.data\n .replace(/[\"']/g, '')\n .trim()\n .split('=')[1];\n if (addr == null) {\n continue;\n }\n if (peerId != null && !addr.includes(peerId)) {\n continue;\n }\n const ma = multiaddr(addr);\n if (addr.startsWith('/dnsaddr')) {\n const resolved = await ma.resolve({\n ...options,\n maxRecursiveDepth: recursionLimit - 1\n });\n output.push(...resolved.map(ma => ma.toString()));\n }\n else {\n output.push(ma.toString());\n }\n }\n return output;\n};\n//# sourceMappingURL=dnsaddr.js.map","export var messages;\n(function (messages) {\n messages[\"NOT_STARTED_YET\"] = \"The libp2p node is not started yet\";\n messages[\"ERR_PROTECTOR_REQUIRED\"] = \"Private network is enforced, but no protector was provided\";\n messages[\"NOT_FOUND\"] = \"Not found\";\n})(messages || (messages = {}));\nexport var codes;\n(function (codes) {\n codes[\"ERR_PROTECTOR_REQUIRED\"] = \"ERR_PROTECTOR_REQUIRED\";\n codes[\"ERR_PEER_DIAL_INTERCEPTED\"] = \"ERR_PEER_DIAL_INTERCEPTED\";\n codes[\"ERR_CONNECTION_INTERCEPTED\"] = \"ERR_CONNECTION_INTERCEPTED\";\n codes[\"ERR_INVALID_PROTOCOLS_FOR_STREAM\"] = \"ERR_INVALID_PROTOCOLS_FOR_STREAM\";\n codes[\"ERR_CONNECTION_ENDED\"] = \"ERR_CONNECTION_ENDED\";\n codes[\"ERR_CONNECTION_FAILED\"] = \"ERR_CONNECTION_FAILED\";\n codes[\"ERR_NODE_NOT_STARTED\"] = \"ERR_NODE_NOT_STARTED\";\n codes[\"ERR_ALREADY_ABORTED\"] = \"ERR_ALREADY_ABORTED\";\n codes[\"ERR_TOO_MANY_ADDRESSES\"] = \"ERR_TOO_MANY_ADDRESSES\";\n codes[\"ERR_NO_VALID_ADDRESSES\"] = \"ERR_NO_VALID_ADDRESSES\";\n codes[\"ERR_RELAYED_DIAL\"] = \"ERR_RELAYED_DIAL\";\n codes[\"ERR_DIALED_SELF\"] = \"ERR_DIALED_SELF\";\n codes[\"ERR_DISCOVERED_SELF\"] = \"ERR_DISCOVERED_SELF\";\n codes[\"ERR_DUPLICATE_TRANSPORT\"] = \"ERR_DUPLICATE_TRANSPORT\";\n codes[\"ERR_ENCRYPTION_FAILED\"] = \"ERR_ENCRYPTION_FAILED\";\n codes[\"ERR_HOP_REQUEST_FAILED\"] = \"ERR_HOP_REQUEST_FAILED\";\n codes[\"ERR_INVALID_KEY\"] = \"ERR_INVALID_KEY\";\n codes[\"ERR_INVALID_MESSAGE\"] = \"ERR_INVALID_MESSAGE\";\n codes[\"ERR_INVALID_PARAMETERS\"] = \"ERR_INVALID_PARAMETERS\";\n codes[\"ERR_INVALID_PEER\"] = \"ERR_INVALID_PEER\";\n codes[\"ERR_MUXER_UNAVAILABLE\"] = \"ERR_MUXER_UNAVAILABLE\";\n codes[\"ERR_NOT_FOUND\"] = \"ERR_NOT_FOUND\";\n codes[\"ERR_TRANSPORT_UNAVAILABLE\"] = \"ERR_TRANSPORT_UNAVAILABLE\";\n codes[\"ERR_TRANSPORT_DIAL_FAILED\"] = \"ERR_TRANSPORT_DIAL_FAILED\";\n codes[\"ERR_UNSUPPORTED_PROTOCOL\"] = \"ERR_UNSUPPORTED_PROTOCOL\";\n codes[\"ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED\"] = \"ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED\";\n codes[\"ERR_INVALID_MULTIADDR\"] = \"ERR_INVALID_MULTIADDR\";\n codes[\"ERR_SIGNATURE_NOT_VALID\"] = \"ERR_SIGNATURE_NOT_VALID\";\n codes[\"ERR_FIND_SELF\"] = \"ERR_FIND_SELF\";\n codes[\"ERR_NO_ROUTERS_AVAILABLE\"] = \"ERR_NO_ROUTERS_AVAILABLE\";\n codes[\"ERR_CONNECTION_NOT_MULTIPLEXED\"] = \"ERR_CONNECTION_NOT_MULTIPLEXED\";\n codes[\"ERR_NO_DIAL_TOKENS\"] = \"ERR_NO_DIAL_TOKENS\";\n codes[\"ERR_INVALID_CMS\"] = \"ERR_INVALID_CMS\";\n codes[\"ERR_MISSING_KEYS\"] = \"ERR_MISSING_KEYS\";\n codes[\"ERR_NO_KEY\"] = \"ERR_NO_KEY\";\n codes[\"ERR_INVALID_KEY_NAME\"] = \"ERR_INVALID_KEY_NAME\";\n codes[\"ERR_INVALID_KEY_TYPE\"] = \"ERR_INVALID_KEY_TYPE\";\n codes[\"ERR_KEY_ALREADY_EXISTS\"] = \"ERR_KEY_ALREADY_EXISTS\";\n codes[\"ERR_INVALID_KEY_SIZE\"] = \"ERR_INVALID_KEY_SIZE\";\n codes[\"ERR_KEY_NOT_FOUND\"] = \"ERR_KEY_NOT_FOUND\";\n codes[\"ERR_OLD_KEY_NAME_INVALID\"] = \"ERR_OLD_KEY_NAME_INVALID\";\n codes[\"ERR_NEW_KEY_NAME_INVALID\"] = \"ERR_NEW_KEY_NAME_INVALID\";\n codes[\"ERR_PASSWORD_REQUIRED\"] = \"ERR_PASSWORD_REQUIRED\";\n codes[\"ERR_PEM_REQUIRED\"] = \"ERR_PEM_REQUIRED\";\n codes[\"ERR_CANNOT_READ_KEY\"] = \"ERR_CANNOT_READ_KEY\";\n codes[\"ERR_MISSING_PRIVATE_KEY\"] = \"ERR_MISSING_PRIVATE_KEY\";\n codes[\"ERR_MISSING_PUBLIC_KEY\"] = \"ERR_MISSING_PUBLIC_KEY\";\n codes[\"ERR_INVALID_OLD_PASS_TYPE\"] = \"ERR_INVALID_OLD_PASS_TYPE\";\n codes[\"ERR_INVALID_NEW_PASS_TYPE\"] = \"ERR_INVALID_NEW_PASS_TYPE\";\n codes[\"ERR_INVALID_PASS_LENGTH\"] = \"ERR_INVALID_PASS_LENGTH\";\n codes[\"ERR_NOT_IMPLEMENTED\"] = \"ERR_NOT_IMPLEMENTED\";\n codes[\"ERR_WRONG_PING_ACK\"] = \"ERR_WRONG_PING_ACK\";\n codes[\"ERR_INVALID_RECORD\"] = \"ERR_INVALID_RECORD\";\n codes[\"ERR_ALREADY_SUCCEEDED\"] = \"ERR_ALREADY_SUCCEEDED\";\n codes[\"ERR_NO_HANDLER_FOR_PROTOCOL\"] = \"ERR_NO_HANDLER_FOR_PROTOCOL\";\n codes[\"ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS\"] = \"ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS\";\n codes[\"ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS\"] = \"ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS\";\n codes[\"ERR_CONNECTION_DENIED\"] = \"ERR_CONNECTION_DENIED\";\n codes[\"ERR_TRANSFER_LIMIT_EXCEEDED\"] = \"ERR_TRANSFER_LIMIT_EXCEEDED\";\n})(codes || (codes = {}));\n//# sourceMappingURL=errors.js.map","import { CodeError, FaultTolerance } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { defaultAddressSort } from '@libp2p/utils/address-sort';\nimport { dnsaddrResolver } from '@multiformats/multiaddr/resolvers';\nimport mergeOptions from 'merge-options';\nimport { codes, messages } from './errors.js';\nconst DefaultConfig = {\n addresses: {\n listen: [],\n announce: [],\n noAnnounce: [],\n announceFilter: (multiaddrs) => multiaddrs\n },\n connectionManager: {\n resolvers: {\n dnsaddr: dnsaddrResolver\n },\n addressSorter: defaultAddressSort\n },\n transportManager: {\n faultTolerance: FaultTolerance.FATAL_ALL\n }\n};\nexport async function validateConfig(opts) {\n const resultingOptions = mergeOptions(DefaultConfig, opts);\n if (resultingOptions.connectionProtector === null && globalThis.process?.env?.LIBP2P_FORCE_PNET != null) { // eslint-disable-line no-undef\n throw new CodeError(messages.ERR_PROTECTOR_REQUIRED, codes.ERR_PROTECTOR_REQUIRED);\n }\n if (resultingOptions.privateKey != null && !(await peerIdFromKeys(resultingOptions.privateKey.public.bytes, resultingOptions.privateKey.bytes)).equals(resultingOptions.peerId)) {\n throw new CodeError('Private key doesn\\'t match peer id', codes.ERR_INVALID_KEY);\n }\n return resultingOptions;\n}\n//# sourceMappingURL=config.js.map","import { CodeError, isPeerId } from '@libp2p/interface';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { isMultiaddr } from '@multiformats/multiaddr';\nimport { codes } from './errors.js';\n/**\n * Extracts a PeerId and/or multiaddr from the passed PeerId or Multiaddr or an array of Multiaddrs\n */\nexport function getPeerAddress(peer) {\n if (isPeerId(peer)) {\n return { peerId: peer, multiaddrs: [] };\n }\n if (!Array.isArray(peer)) {\n peer = [peer];\n }\n let peerId;\n if (peer.length > 0) {\n const peerIdStr = peer[0].getPeerId();\n peerId = peerIdStr == null ? undefined : peerIdFromString(peerIdStr);\n // ensure PeerId is either not set or is consistent\n peer.forEach(ma => {\n if (!isMultiaddr(ma)) {\n throw new CodeError('Invalid Multiaddr', codes.ERR_INVALID_MULTIADDR);\n }\n const maPeerIdStr = ma.getPeerId();\n if (maPeerIdStr == null) {\n if (peerId != null) {\n throw new CodeError('Multiaddrs must all have the same peer id or have no peer id', codes.ERR_INVALID_PARAMETERS);\n }\n }\n else {\n const maPeerId = peerIdFromString(maPeerIdStr);\n if (peerId?.equals(maPeerId) !== true) {\n throw new CodeError('Multiaddrs must all have the same peer id or have no peer id', codes.ERR_INVALID_PARAMETERS);\n }\n }\n });\n }\n return {\n peerId,\n multiaddrs: peer\n };\n}\n//# sourceMappingURL=get-peer.js.map","/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#dialTimeout\n */\nexport const DIAL_TIMEOUT = 5e3;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#inboundUpgradeTimeout\n */\nexport const INBOUND_UPGRADE_TIMEOUT = 2e3;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxPeerAddrsToDial\n */\nexport const MAX_PEER_ADDRS_TO_DIAL = 25;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#autoDialInterval\n */\nexport const AUTO_DIAL_INTERVAL = 5000;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#autoDialConcurrency\n */\nexport const AUTO_DIAL_CONCURRENCY = 25;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#autoDialPriority\n */\nexport const AUTO_DIAL_PRIORITY = 0;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#autoDialMaxQueueLength\n */\nexport const AUTO_DIAL_MAX_QUEUE_LENGTH = 100;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/libp2p.index.unknown.ConnectionManagerInit.html#autoDialDiscoveredPeersDebounce\n */\nexport const AUTO_DIAL_DISCOVERED_PEERS_DEBOUNCE = 10;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#inboundConnectionThreshold\n */\nexport const INBOUND_CONNECTION_THRESHOLD = 5;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxIncomingPendingConnections\n */\nexport const MAX_INCOMING_PENDING_CONNECTIONS = 10;\n/**\n * Store as part of the peer store metadata for a given peer, the value for this\n * key is a timestamp of the last time a dial attempted failed with the relevant\n * peer stored as a string.\n *\n * Used to insure we do not endlessly try to auto dial peers we have recently\n * failed to dial.\n */\nexport const LAST_DIAL_FAILURE_KEY = 'last-dial-failure';\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxDialQueueLength\n */\nexport const MAX_DIAL_QUEUE_LENGTH = 500;\n//# sourceMappingURL=constants.defaults.js.map","export * from './constants.defaults.js';\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#minConnections\n */\nexport const MIN_CONNECTIONS = 5;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxConnections\n */\nexport const MAX_CONNECTIONS = 100;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxParallelDials\n */\nexport const MAX_PARALLEL_DIALS = 50;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/libp2p.index.unknown.ConnectionManagerInit.html#autoDialPeerRetryThreshold\n */\nexport const AUTO_DIAL_PEER_RETRY_THRESHOLD = 1000 * 60 * 7;\n//# sourceMappingURL=constants.browser.js.map","import { PeerMap, PeerSet } from '@libp2p/peer-collections';\nimport { PeerQueue } from '@libp2p/utils/peer-queue';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { AUTO_DIAL_CONCURRENCY, AUTO_DIAL_DISCOVERED_PEERS_DEBOUNCE, AUTO_DIAL_INTERVAL, AUTO_DIAL_MAX_QUEUE_LENGTH, AUTO_DIAL_PEER_RETRY_THRESHOLD, AUTO_DIAL_PRIORITY, LAST_DIAL_FAILURE_KEY, MIN_CONNECTIONS } from './constants.js';\nconst defaultOptions = {\n minConnections: MIN_CONNECTIONS,\n maxQueueLength: AUTO_DIAL_MAX_QUEUE_LENGTH,\n autoDialConcurrency: AUTO_DIAL_CONCURRENCY,\n autoDialPriority: AUTO_DIAL_PRIORITY,\n autoDialInterval: AUTO_DIAL_INTERVAL,\n autoDialPeerRetryThreshold: AUTO_DIAL_PEER_RETRY_THRESHOLD,\n autoDialDiscoveredPeersDebounce: AUTO_DIAL_DISCOVERED_PEERS_DEBOUNCE\n};\nexport class AutoDial {\n connectionManager;\n peerStore;\n queue;\n minConnections;\n autoDialPriority;\n autoDialIntervalMs;\n autoDialMaxQueueLength;\n autoDialPeerRetryThresholdMs;\n autoDialDiscoveredPeersDebounce;\n autoDialInterval;\n started;\n running;\n log;\n /**\n * Proactively tries to connect to known peers stored in the PeerStore.\n * It will keep the number of connections below the upper limit and sort\n * the peers to connect based on whether we know their keys and protocols.\n */\n constructor(components, init) {\n this.connectionManager = components.connectionManager;\n this.peerStore = components.peerStore;\n this.minConnections = init.minConnections ?? defaultOptions.minConnections;\n this.autoDialPriority = init.autoDialPriority ?? defaultOptions.autoDialPriority;\n this.autoDialIntervalMs = init.autoDialInterval ?? defaultOptions.autoDialInterval;\n this.autoDialMaxQueueLength = init.maxQueueLength ?? defaultOptions.maxQueueLength;\n this.autoDialPeerRetryThresholdMs = init.autoDialPeerRetryThreshold ?? defaultOptions.autoDialPeerRetryThreshold;\n this.autoDialDiscoveredPeersDebounce = init.autoDialDiscoveredPeersDebounce ?? defaultOptions.autoDialDiscoveredPeersDebounce;\n this.log = components.logger.forComponent('libp2p:connection-manager:auto-dial');\n this.started = false;\n this.running = false;\n this.queue = new PeerQueue({\n concurrency: init.autoDialConcurrency ?? defaultOptions.autoDialConcurrency,\n metricName: 'libp2p_autodial_queue',\n metrics: components.metrics\n });\n this.queue.addEventListener('error', (evt) => {\n this.log.error('error during auto-dial', evt.detail);\n });\n // check the min connection limit whenever a peer disconnects\n components.events.addEventListener('connection:close', () => {\n this.autoDial()\n .catch(err => {\n this.log.error(err);\n });\n });\n // sometimes peers are discovered in quick succession so add a small\n // debounce to ensure all eligible peers are autodialed\n let debounce;\n // when new peers are discovered, dial them if we don't have\n // enough connections\n components.events.addEventListener('peer:discovery', () => {\n clearTimeout(debounce);\n debounce = setTimeout(() => {\n this.autoDial()\n .catch(err => {\n this.log.error(err);\n });\n }, this.autoDialDiscoveredPeersDebounce);\n });\n }\n isStarted() {\n return this.started;\n }\n start() {\n this.started = true;\n }\n afterStart() {\n this.autoDial()\n .catch(err => {\n this.log.error('error while autodialing', err);\n });\n }\n stop() {\n // clear the queue\n this.queue.clear();\n clearTimeout(this.autoDialInterval);\n this.started = false;\n this.running = false;\n }\n async autoDial() {\n if (!this.started || this.running) {\n return;\n }\n const connections = this.connectionManager.getConnectionsMap();\n const numConnections = connections.size;\n // already have enough connections\n if (numConnections >= this.minConnections) {\n if (this.minConnections > 0) {\n this.log.trace('have enough connections %d/%d', numConnections, this.minConnections);\n }\n // no need to schedule next autodial as it will be run when on\n // connection:close event\n return;\n }\n if (this.queue.size > this.autoDialMaxQueueLength) {\n this.log('not enough connections %d/%d but auto dial queue is full', numConnections, this.minConnections);\n this.sheduleNextAutodial();\n return;\n }\n this.running = true;\n this.log('not enough connections %d/%d - will dial peers to increase the number of connections', numConnections, this.minConnections);\n const dialQueue = new PeerSet(\n // @ts-expect-error boolean filter removes falsy peer IDs\n this.connectionManager.getDialQueue()\n .map(queue => queue.peerId)\n .filter(Boolean));\n // sort peers on whether we know protocols or public keys for them\n const peers = await this.peerStore.all({\n filters: [\n // remove some peers\n (peer) => {\n // remove peers without addresses\n if (peer.addresses.length === 0) {\n this.log.trace('not autodialing %p because they have no addresses', peer.id);\n return false;\n }\n // remove peers we are already connected to\n if (connections.has(peer.id)) {\n this.log.trace('not autodialing %p because they are already connected', peer.id);\n return false;\n }\n // remove peers we are already dialling\n if (dialQueue.has(peer.id)) {\n this.log.trace('not autodialing %p because they are already being dialed', peer.id);\n return false;\n }\n // remove peers already in the autodial queue\n if (this.queue.has(peer.id)) {\n this.log.trace('not autodialing %p because they are already being autodialed', peer.id);\n return false;\n }\n return true;\n }\n ]\n });\n // shuffle the peers - this is so peers with the same tag values will be\n // dialled in a different order each time\n const shuffledPeers = peers.sort(() => Math.random() > 0.5 ? 1 : -1);\n // sort shuffled peers by tag value\n const peerValues = new PeerMap();\n for (const peer of shuffledPeers) {\n if (peerValues.has(peer.id)) {\n continue;\n }\n // sum all tag values\n peerValues.set(peer.id, [...peer.tags.values()].reduce((acc, curr) => {\n return acc + curr.value;\n }, 0));\n }\n // sort by value, highest to lowest\n const sortedPeers = shuffledPeers.sort((a, b) => {\n const peerAValue = peerValues.get(a.id) ?? 0;\n const peerBValue = peerValues.get(b.id) ?? 0;\n if (peerAValue > peerBValue) {\n return -1;\n }\n if (peerAValue < peerBValue) {\n return 1;\n }\n return 0;\n });\n const peersThatHaveNotFailed = sortedPeers.filter(peer => {\n const lastDialFailure = peer.metadata.get(LAST_DIAL_FAILURE_KEY);\n if (lastDialFailure == null) {\n return true;\n }\n const lastDialFailureTimestamp = parseInt(uint8ArrayToString(lastDialFailure));\n if (isNaN(lastDialFailureTimestamp)) {\n return true;\n }\n // only dial if the time since the last failure is above the retry threshold\n return Date.now() - lastDialFailureTimestamp > this.autoDialPeerRetryThresholdMs;\n });\n this.log('selected %d/%d peers to dial', peersThatHaveNotFailed.length, peers.length);\n for (const peer of peersThatHaveNotFailed) {\n this.queue.add(async () => {\n const numConnections = this.connectionManager.getConnectionsMap().size;\n // Check to see if we still need to auto dial\n if (numConnections >= this.minConnections) {\n this.log('got enough connections now %d/%d', numConnections, this.minConnections);\n this.queue.clear();\n return;\n }\n this.log('connecting to a peerStore stored peer %p', peer.id);\n await this.connectionManager.openConnection(peer.id, {\n priority: this.autoDialPriority\n });\n }, {\n peerId: peer.id\n }).catch(err => {\n this.log.error('could not connect to peerStore stored peer', err);\n });\n }\n this.running = false;\n this.sheduleNextAutodial();\n }\n sheduleNextAutodial() {\n if (!this.started) {\n return;\n }\n this.autoDialInterval = setTimeout(() => {\n this.autoDial()\n .catch(err => {\n this.log.error('error while autodialing', err);\n });\n }, this.autoDialIntervalMs);\n }\n}\n//# sourceMappingURL=auto-dial.js.map","/**\n * Close the passed stream, falling back to aborting the stream if closing\n * cleanly fails.\n */\nexport async function safelyCloseStream(stream, options) {\n try {\n await stream?.close(options);\n }\n catch (err) {\n stream?.abort(err);\n }\n}\n/**\n * These are speculative protocols that are run automatically on connection open\n * so are usually not the reason the connection was opened.\n *\n * Consequently when requested it should be safe to close connections that only\n * have these protocol streams open.\n */\nconst DEFAULT_CLOSABLE_PROTOCOLS = [\n // identify\n '/ipfs/id/1.0.0',\n // identify-push\n '/ipfs/id/push/1.0.0',\n // autonat\n '/libp2p/autonat/1.0.0',\n // dcutr\n '/libp2p/dcutr'\n];\n/**\n * Close the passed connection if it has no streams, or only closable protocol\n * streams, falling back to aborting the connection if closing it cleanly fails.\n */\nexport async function safelyCloseConnectionIfUnused(connection, options) {\n const streamProtocols = connection?.streams?.map(stream => stream.protocol) ?? [];\n const closableProtocols = options?.closableProtocols ?? DEFAULT_CLOSABLE_PROTOCOLS;\n // if the connection has protocols not in the closable protocols list, do not\n // close the connection\n if (streamProtocols.filter(proto => proto != null && !closableProtocols.includes(proto)).length > 0) {\n return;\n }\n try {\n await connection?.close(options);\n }\n catch (err) {\n connection?.abort(err);\n }\n}\n//# sourceMappingURL=close.js.map","import { PeerMap } from '@libp2p/peer-collections';\nimport { safelyCloseConnectionIfUnused } from '@libp2p/utils/close';\nimport { MAX_CONNECTIONS } from './constants.js';\nconst defaultOptions = {\n maxConnections: MAX_CONNECTIONS,\n allow: []\n};\n/**\n * If we go over the max connections limit, choose some connections to close\n */\nexport class ConnectionPruner {\n maxConnections;\n connectionManager;\n peerStore;\n allow;\n events;\n log;\n constructor(components, init = {}) {\n this.maxConnections = init.maxConnections ?? defaultOptions.maxConnections;\n this.allow = init.allow ?? defaultOptions.allow;\n this.connectionManager = components.connectionManager;\n this.peerStore = components.peerStore;\n this.events = components.events;\n this.log = components.logger.forComponent('libp2p:connection-manager:connection-pruner');\n // check the max connection limit whenever a peer connects\n components.events.addEventListener('connection:open', () => {\n this.maybePruneConnections()\n .catch(err => {\n this.log.error(err);\n });\n });\n }\n /**\n * If we have more connections than our maximum, select some excess connections\n * to prune based on peer value\n */\n async maybePruneConnections() {\n const connections = this.connectionManager.getConnections();\n const numConnections = connections.length;\n this.log('checking max connections limit %d/%d', numConnections, this.maxConnections);\n if (numConnections <= this.maxConnections) {\n return;\n }\n const peerValues = new PeerMap();\n // work out peer values\n for (const connection of connections) {\n const remotePeer = connection.remotePeer;\n if (peerValues.has(remotePeer)) {\n continue;\n }\n peerValues.set(remotePeer, 0);\n try {\n const peer = await this.peerStore.get(remotePeer);\n // sum all tag values\n peerValues.set(remotePeer, [...peer.tags.values()].reduce((acc, curr) => {\n return acc + curr.value;\n }, 0));\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n this.log.error('error loading peer tags', err);\n }\n }\n }\n const sortedConnections = this.sortConnections(connections, peerValues);\n // close some connections\n const toPrune = Math.max(numConnections - this.maxConnections, 0);\n const toClose = [];\n for (const connection of sortedConnections) {\n this.log('too many connections open - closing a connection to %p', connection.remotePeer);\n // check allow list\n const connectionInAllowList = this.allow.some((ma) => {\n return connection.remoteAddr.toString().startsWith(ma.toString());\n });\n // Connections in the allow list should be excluded from pruning\n if (!connectionInAllowList) {\n toClose.push(connection);\n }\n if (toClose.length === toPrune) {\n break;\n }\n }\n // close connections\n await Promise.all(toClose.map(async (connection) => {\n await safelyCloseConnectionIfUnused(connection, {\n signal: AbortSignal.timeout(1000)\n });\n }));\n // despatch prune event\n this.events.safeDispatchEvent('connection:prune', { detail: toClose });\n }\n sortConnections(connections, peerValues) {\n return connections\n // sort by connection age, newest to oldest\n .sort((a, b) => {\n const connectionALifespan = a.timeline.open;\n const connectionBLifespan = b.timeline.open;\n if (connectionALifespan < connectionBLifespan) {\n return 1;\n }\n if (connectionALifespan > connectionBLifespan) {\n return -1;\n }\n return 0;\n })\n // sort by direction, incoming first then outgoing\n .sort((a, b) => {\n if (a.direction === 'outbound' && b.direction === 'inbound') {\n return 1;\n }\n if (a.direction === 'inbound' && b.direction === 'outbound') {\n return -1;\n }\n return 0;\n })\n // sort by number of streams, lowest to highest\n .sort((a, b) => {\n if (a.streams.length > b.streams.length) {\n return 1;\n }\n if (a.streams.length < b.streams.length) {\n return -1;\n }\n return 0;\n })\n // sort by tag value, lowest to highest\n .sort((a, b) => {\n const peerAValue = peerValues.get(a.remotePeer) ?? 0;\n const peerBValue = peerValues.get(b.remotePeer) ?? 0;\n if (peerAValue > peerBValue) {\n return 1;\n }\n if (peerAValue < peerBValue) {\n return -1;\n }\n return 0;\n });\n }\n}\n//# sourceMappingURL=connection-pruner.js.map","import { Queue } from './queue/index.js';\nexport class PriorityQueue extends Queue {\n constructor(init = {}) {\n super({\n ...init,\n sort: (a, b) => {\n if (a.options.priority > b.options.priority) {\n return -1;\n }\n if (a.options.priority < b.options.priority) {\n return 1;\n }\n return 0;\n }\n });\n }\n}\n//# sourceMappingURL=priority-queue.js.map","import { resolvers } from '@multiformats/multiaddr';\n/**\n * Recursively resolve DNSADDR multiaddrs\n */\nexport async function resolveMultiaddrs(ma, options) {\n // check multiaddr resolvers\n let resolvable = false;\n for (const key of resolvers.keys()) {\n resolvable = ma.protoNames().includes(key);\n if (resolvable) {\n break;\n }\n }\n // return multiaddr if it is not resolvable\n if (!resolvable) {\n return [ma];\n }\n const output = await ma.resolve(options);\n options.log('resolved %s to', ma, output.map(ma => ma.toString()));\n return output;\n}\n//# sourceMappingURL=utils.js.map","/* eslint-disable max-depth */\nimport { CodeError, AggregateCodeError, ERR_TIMEOUT, setMaxListeners } from '@libp2p/interface';\nimport { PeerMap } from '@libp2p/peer-collections';\nimport { defaultAddressSort } from '@libp2p/utils/address-sort';\nimport { PriorityQueue } from '@libp2p/utils/priority-queue';\nimport { resolvers, multiaddr } from '@multiformats/multiaddr';\nimport { dnsaddrResolver } from '@multiformats/multiaddr/resolvers';\nimport { Circuit } from '@multiformats/multiaddr-matcher';\nimport { anySignal } from 'any-signal';\nimport { CustomProgressEvent } from 'progress-events';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { codes } from '../errors.js';\nimport { getPeerAddress } from '../get-peer.js';\nimport { DIAL_TIMEOUT, MAX_PARALLEL_DIALS, MAX_PEER_ADDRS_TO_DIAL, LAST_DIAL_FAILURE_KEY, MAX_DIAL_QUEUE_LENGTH } from './constants.js';\nimport { resolveMultiaddrs } from './utils.js';\nimport { DEFAULT_DIAL_PRIORITY } from './index.js';\nconst defaultOptions = {\n addressSorter: defaultAddressSort,\n maxParallelDials: MAX_PARALLEL_DIALS,\n maxDialQueueLength: MAX_DIAL_QUEUE_LENGTH,\n maxPeerAddrsToDial: MAX_PEER_ADDRS_TO_DIAL,\n dialTimeout: DIAL_TIMEOUT,\n resolvers: {\n dnsaddr: dnsaddrResolver\n }\n};\nexport class DialQueue {\n queue;\n components;\n addressSorter;\n maxPeerAddrsToDial;\n maxDialQueueLength;\n dialTimeout;\n shutDownController;\n connections;\n log;\n constructor(components, init = {}) {\n this.addressSorter = init.addressSorter ?? defaultOptions.addressSorter;\n this.maxPeerAddrsToDial = init.maxPeerAddrsToDial ?? defaultOptions.maxPeerAddrsToDial;\n this.maxDialQueueLength = init.maxDialQueueLength ?? defaultOptions.maxDialQueueLength;\n this.dialTimeout = init.dialTimeout ?? defaultOptions.dialTimeout;\n this.connections = init.connections ?? new PeerMap();\n this.log = components.logger.forComponent('libp2p:connection-manager:dial-queue');\n this.components = components;\n this.shutDownController = new AbortController();\n setMaxListeners(Infinity, this.shutDownController.signal);\n for (const [key, value] of Object.entries(init.resolvers ?? {})) {\n resolvers.set(key, value);\n }\n // controls dial concurrency\n this.queue = new PriorityQueue({\n concurrency: init.maxParallelDials ?? defaultOptions.maxParallelDials,\n metricName: 'libp2p_dial_queue',\n metrics: components.metrics\n });\n // a started job errored\n this.queue.addEventListener('error', (event) => {\n this.log.error('error in dial queue', event.detail);\n });\n }\n start() {\n this.shutDownController = new AbortController();\n setMaxListeners(Infinity, this.shutDownController.signal);\n }\n /**\n * Clears any pending dials\n */\n stop() {\n this.shutDownController.abort();\n this.queue.abort();\n }\n /**\n * Connects to a given peer, multiaddr or list of multiaddrs.\n *\n * If a peer is passed, all known multiaddrs will be tried. If a multiaddr or\n * multiaddrs are passed only those will be dialled.\n *\n * Where a list of multiaddrs is passed, if any contain a peer id then all\n * multiaddrs in the list must contain the same peer id.\n *\n * The dial to the first address that is successfully able to upgrade a\n * connection will be used, all other dials will be aborted when that happens.\n */\n async dial(peerIdOrMultiaddr, options = {}) {\n const { peerId, multiaddrs } = getPeerAddress(peerIdOrMultiaddr);\n // make sure we don't have an existing connection to any of the addresses we\n // are about to dial\n const existingConnection = Array.from(this.connections.values()).flat().find(conn => {\n if (options.force === true) {\n return false;\n }\n if (conn.remotePeer.equals(peerId)) {\n return true;\n }\n return multiaddrs.find(addr => {\n return addr.equals(conn.remoteAddr);\n });\n });\n if (existingConnection != null) {\n this.log('already connected to %a', existingConnection.remoteAddr);\n options.onProgress?.(new CustomProgressEvent('dial-queue:already-connected'));\n return existingConnection;\n }\n // ready to dial, all async work finished - make sure we don't have any\n // pending dials in progress for this peer or set of multiaddrs\n const existingDial = this.queue.queue.find(job => {\n if (peerId?.equals(job.options.peerId) === true) {\n return true;\n }\n // does the dial contain any of the target multiaddrs?\n const addresses = job.options.multiaddrs;\n if (addresses == null) {\n return false;\n }\n for (const multiaddr of multiaddrs) {\n if (addresses.has(multiaddr.toString())) {\n return true;\n }\n }\n return false;\n });\n if (existingDial != null) {\n this.log('joining existing dial target for %p', peerId);\n // add all multiaddrs to the dial target\n for (const multiaddr of multiaddrs) {\n existingDial.options.multiaddrs.add(multiaddr.toString());\n }\n options.onProgress?.(new CustomProgressEvent('dial-queue:already-in-dial-queue'));\n return existingDial.join(options);\n }\n if (this.queue.size >= this.maxDialQueueLength) {\n throw new CodeError('Dial queue is full', 'ERR_DIAL_QUEUE_FULL');\n }\n this.log('creating dial target for %p', peerId, multiaddrs.map(ma => ma.toString()));\n options.onProgress?.(new CustomProgressEvent('dial-queue:add-to-dial-queue'));\n return this.queue.add(async (options) => {\n options?.onProgress?.(new CustomProgressEvent('dial-queue:start-dial'));\n // create abort conditions - need to do this before `calculateMultiaddrs` as\n // we may be about to resolve a dns addr which can time out\n const signal = this.createDialAbortController(options?.signal);\n let addrsToDial;\n try {\n // load addresses from address book, resolve and dnsaddrs, filter\n // undiallables, add peer IDs, etc\n addrsToDial = await this.calculateMultiaddrs(peerId, options?.multiaddrs, {\n ...options,\n signal\n });\n options?.onProgress?.(new CustomProgressEvent('dial-queue:calculated-addresses', addrsToDial));\n addrsToDial.map(({ multiaddr }) => multiaddr.toString()).forEach(addr => {\n options?.multiaddrs.add(addr);\n });\n }\n catch (err) {\n signal.clear();\n throw err;\n }\n try {\n let dialed = 0;\n const errors = [];\n for (const address of addrsToDial) {\n if (dialed === this.maxPeerAddrsToDial) {\n this.log('dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others', dialed, peerId);\n throw new CodeError('Peer had more than maxPeerAddrsToDial', codes.ERR_TOO_MANY_ADDRESSES);\n }\n dialed++;\n try {\n const conn = await this.components.transportManager.dial(address.multiaddr, {\n ...options,\n signal\n });\n this.log('dial to %a succeeded', address.multiaddr);\n return conn;\n }\n catch (err) {\n this.log.error('dial failed to %a', address.multiaddr, err);\n if (peerId != null) {\n // record the failed dial\n try {\n await this.components.peerStore.patch(peerId, {\n metadata: {\n [LAST_DIAL_FAILURE_KEY]: uint8ArrayFromString(Date.now().toString())\n }\n });\n }\n catch (err) {\n this.log.error('could not update last dial failure key for %p', peerId, err);\n }\n }\n // the user/dial timeout/shutdown controller signal aborted\n if (signal.aborted) {\n throw new CodeError(err.message, ERR_TIMEOUT);\n }\n errors.push(err);\n }\n }\n if (errors.length === 1) {\n throw errors[0];\n }\n throw new AggregateCodeError(errors, 'All multiaddr dials failed', codes.ERR_TRANSPORT_DIAL_FAILED);\n }\n finally {\n // clean up abort signals/controllers\n signal.clear();\n }\n }, {\n peerId,\n priority: options.priority ?? DEFAULT_DIAL_PRIORITY,\n multiaddrs: new Set(multiaddrs.map(ma => ma.toString())),\n signal: options.signal,\n onProgress: options.onProgress\n });\n }\n createDialAbortController(userSignal) {\n // let any signal abort the dial\n const signal = anySignal([\n AbortSignal.timeout(this.dialTimeout),\n this.shutDownController.signal,\n userSignal\n ]);\n // This emitter gets listened to a lot\n setMaxListeners(Infinity, signal);\n return signal;\n }\n // eslint-disable-next-line complexity\n async calculateMultiaddrs(peerId, multiaddrs = new Set(), options = {}) {\n const addrs = [...multiaddrs].map(ma => ({\n multiaddr: multiaddr(ma),\n isCertified: false\n }));\n // if a peer id or multiaddr(s) with a peer id, make sure it isn't our peer id and that we are allowed to dial it\n if (peerId != null) {\n if (this.components.peerId.equals(peerId)) {\n throw new CodeError('Tried to dial self', codes.ERR_DIALED_SELF);\n }\n if ((await this.components.connectionGater.denyDialPeer?.(peerId)) === true) {\n throw new CodeError('The dial request is blocked by gater.allowDialPeer', codes.ERR_PEER_DIAL_INTERCEPTED);\n }\n // if just a peer id was passed, load available multiaddrs for this peer\n // from the peer store\n if (addrs.length === 0) {\n this.log('loading multiaddrs for %p', peerId);\n try {\n const peer = await this.components.peerStore.get(peerId);\n addrs.push(...peer.addresses);\n this.log('loaded multiaddrs for %p', peerId, addrs.map(({ multiaddr }) => multiaddr.toString()));\n }\n catch (err) {\n if (err.code !== codes.ERR_NOT_FOUND) {\n throw err;\n }\n }\n }\n // if we still don't have any addresses for this peer, try a lookup\n // using the peer routing\n if (addrs.length === 0) {\n this.log('looking up multiaddrs for %p in the peer routing', peerId);\n try {\n const peerInfo = await this.components.peerRouting.findPeer(peerId);\n this.log('found multiaddrs for %p in the peer routing', peerId, addrs.map(({ multiaddr }) => multiaddr.toString()));\n addrs.push(...peerInfo.multiaddrs.map(multiaddr => ({\n multiaddr,\n isCertified: false\n })));\n }\n catch (err) {\n if (err.code !== codes.ERR_NO_ROUTERS_AVAILABLE) {\n this.log.error('looking up multiaddrs for %p in the peer routing failed', peerId, err);\n }\n }\n }\n }\n // resolve addresses - this can result in a one-to-many translation when\n // dnsaddrs are resolved\n let resolvedAddresses = (await Promise.all(addrs.map(async (addr) => {\n const result = await resolveMultiaddrs(addr.multiaddr, {\n dns: this.components.dns,\n ...options,\n log: this.log\n });\n if (result.length === 1 && result[0].equals(addr.multiaddr)) {\n return addr;\n }\n return result.map(multiaddr => ({\n multiaddr,\n isCertified: false\n }));\n })))\n .flat();\n // ensure the peer id is appended to the multiaddr\n if (peerId != null) {\n const peerIdMultiaddr = `/p2p/${peerId.toString()}`;\n resolvedAddresses = resolvedAddresses.map(addr => {\n const lastProto = addr.multiaddr.protos().pop();\n // do not append peer id to path multiaddrs\n if (lastProto?.path === true) {\n return addr;\n }\n // append peer id to multiaddr if it is not already present\n if (addr.multiaddr.getPeerId() == null) {\n return {\n multiaddr: addr.multiaddr.encapsulate(peerIdMultiaddr),\n isCertified: addr.isCertified\n };\n }\n return addr;\n });\n }\n const filteredAddrs = resolvedAddresses.filter(addr => {\n // filter out any multiaddrs that we do not have transports for\n if (this.components.transportManager.dialTransportForMultiaddr(addr.multiaddr) == null) {\n return false;\n }\n // if the resolved multiaddr has a PeerID but it's the wrong one, ignore it\n // - this can happen with addresses like bootstrap.libp2p.io that resolve\n // to multiple different peers\n const addrPeerId = addr.multiaddr.getPeerId();\n if (peerId != null && addrPeerId != null) {\n return peerId.equals(addrPeerId);\n }\n return true;\n });\n // deduplicate addresses\n const dedupedAddrs = new Map();\n for (const addr of filteredAddrs) {\n const maStr = addr.multiaddr.toString();\n const existing = dedupedAddrs.get(maStr);\n if (existing != null) {\n existing.isCertified = existing.isCertified || addr.isCertified || false;\n continue;\n }\n dedupedAddrs.set(maStr, addr);\n }\n const dedupedMultiaddrs = [...dedupedAddrs.values()];\n // make sure we actually have some addresses to dial\n if (dedupedMultiaddrs.length === 0) {\n throw new CodeError('The dial request has no valid addresses', codes.ERR_NO_VALID_ADDRESSES);\n }\n const gatedAdrs = [];\n for (const addr of dedupedMultiaddrs) {\n if (this.components.connectionGater.denyDialMultiaddr != null && await this.components.connectionGater.denyDialMultiaddr(addr.multiaddr)) {\n continue;\n }\n gatedAdrs.push(addr);\n }\n const sortedGatedAddrs = gatedAdrs.sort(this.addressSorter);\n // make sure we actually have some addresses to dial\n if (sortedGatedAddrs.length === 0) {\n throw new CodeError('The connection gater denied all addresses in the dial request', codes.ERR_NO_VALID_ADDRESSES);\n }\n this.log.trace('addresses for %p before filtering', peerId ?? 'unknown peer', resolvedAddresses.map(({ multiaddr }) => multiaddr.toString()));\n this.log.trace('addresses for %p after filtering', peerId ?? 'unknown peer', sortedGatedAddrs.map(({ multiaddr }) => multiaddr.toString()));\n return sortedGatedAddrs;\n }\n async isDialable(multiaddr, options = {}) {\n if (!Array.isArray(multiaddr)) {\n multiaddr = [multiaddr];\n }\n try {\n const addresses = await this.calculateMultiaddrs(undefined, new Set(multiaddr.map(ma => ma.toString())), options);\n if (options.runOnTransientConnection === false) {\n // return true if any resolved multiaddrs are not relay addresses\n return addresses.find(addr => {\n return !Circuit.matches(addr.multiaddr);\n }) != null;\n }\n return true;\n }\n catch (err) {\n this.log.trace('error calculating if multiaddr(s) were dialable', err);\n }\n return false;\n }\n}\n//# sourceMappingURL=dial-queue.js.map","import { CodeError, KEEP_ALIVE } from '@libp2p/interface';\nimport { PeerMap } from '@libp2p/peer-collections';\nimport { defaultAddressSort } from '@libp2p/utils/address-sort';\nimport { RateLimiter } from '@libp2p/utils/rate-limiter';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { dnsaddrResolver } from '@multiformats/multiaddr/resolvers';\nimport { CustomProgressEvent } from 'progress-events';\nimport { codes } from '../errors.js';\nimport { getPeerAddress } from '../get-peer.js';\nimport { AutoDial } from './auto-dial.js';\nimport { ConnectionPruner } from './connection-pruner.js';\nimport { AUTO_DIAL_CONCURRENCY, AUTO_DIAL_DISCOVERED_PEERS_DEBOUNCE, AUTO_DIAL_MAX_QUEUE_LENGTH, AUTO_DIAL_PEER_RETRY_THRESHOLD, AUTO_DIAL_PRIORITY, DIAL_TIMEOUT, INBOUND_CONNECTION_THRESHOLD, MAX_CONNECTIONS, MAX_DIAL_QUEUE_LENGTH, MAX_INCOMING_PENDING_CONNECTIONS, MAX_PARALLEL_DIALS, MAX_PEER_ADDRS_TO_DIAL, MIN_CONNECTIONS } from './constants.js';\nimport { DialQueue } from './dial-queue.js';\nexport const DEFAULT_DIAL_PRIORITY = 50;\nconst defaultOptions = {\n minConnections: MIN_CONNECTIONS,\n maxConnections: MAX_CONNECTIONS,\n inboundConnectionThreshold: INBOUND_CONNECTION_THRESHOLD,\n maxIncomingPendingConnections: MAX_INCOMING_PENDING_CONNECTIONS,\n autoDialConcurrency: AUTO_DIAL_CONCURRENCY,\n autoDialPriority: AUTO_DIAL_PRIORITY,\n autoDialMaxQueueLength: AUTO_DIAL_MAX_QUEUE_LENGTH,\n autoDialPeerRetryThreshold: AUTO_DIAL_PEER_RETRY_THRESHOLD,\n autoDialDiscoveredPeersDebounce: AUTO_DIAL_DISCOVERED_PEERS_DEBOUNCE\n};\n/**\n * Responsible for managing known connections.\n */\nexport class DefaultConnectionManager {\n started;\n connections;\n allow;\n deny;\n maxIncomingPendingConnections;\n incomingPendingConnections;\n maxConnections;\n dialQueue;\n autoDial;\n connectionPruner;\n inboundConnectionRateLimiter;\n peerStore;\n metrics;\n events;\n log;\n constructor(components, init = {}) {\n this.maxConnections = init.maxConnections ?? defaultOptions.maxConnections;\n const minConnections = init.minConnections ?? defaultOptions.minConnections;\n if (this.maxConnections < minConnections) {\n throw new CodeError('Connection Manager maxConnections must be greater than minConnections', codes.ERR_INVALID_PARAMETERS);\n }\n /**\n * Map of connections per peer\n */\n this.connections = new PeerMap();\n this.started = false;\n this.peerStore = components.peerStore;\n this.metrics = components.metrics;\n this.events = components.events;\n this.log = components.logger.forComponent('libp2p:connection-manager');\n this.onConnect = this.onConnect.bind(this);\n this.onDisconnect = this.onDisconnect.bind(this);\n this.events.addEventListener('connection:open', this.onConnect);\n this.events.addEventListener('connection:close', this.onDisconnect);\n // allow/deny lists\n this.allow = (init.allow ?? []).map(ma => multiaddr(ma));\n this.deny = (init.deny ?? []).map(ma => multiaddr(ma));\n this.incomingPendingConnections = 0;\n this.maxIncomingPendingConnections = init.maxIncomingPendingConnections ?? defaultOptions.maxIncomingPendingConnections;\n // controls individual peers trying to dial us too quickly\n this.inboundConnectionRateLimiter = new RateLimiter({\n points: init.inboundConnectionThreshold ?? defaultOptions.inboundConnectionThreshold,\n duration: 1\n });\n // controls what happens when we don't have enough connections\n this.autoDial = new AutoDial({\n connectionManager: this,\n peerStore: components.peerStore,\n events: components.events,\n logger: components.logger\n }, {\n minConnections,\n autoDialConcurrency: init.autoDialConcurrency ?? defaultOptions.autoDialConcurrency,\n autoDialPriority: init.autoDialPriority ?? defaultOptions.autoDialPriority,\n autoDialPeerRetryThreshold: init.autoDialPeerRetryThreshold ?? defaultOptions.autoDialPeerRetryThreshold,\n autoDialDiscoveredPeersDebounce: init.autoDialDiscoveredPeersDebounce ?? defaultOptions.autoDialDiscoveredPeersDebounce,\n maxQueueLength: init.autoDialMaxQueueLength ?? defaultOptions.autoDialMaxQueueLength\n });\n // controls what happens when we have too many connections\n this.connectionPruner = new ConnectionPruner({\n connectionManager: this,\n peerStore: components.peerStore,\n events: components.events,\n logger: components.logger\n }, {\n maxConnections: this.maxConnections,\n allow: this.allow\n });\n this.dialQueue = new DialQueue(components, {\n addressSorter: init.addressSorter ?? defaultAddressSort,\n maxParallelDials: init.maxParallelDials ?? MAX_PARALLEL_DIALS,\n maxDialQueueLength: init.maxDialQueueLength ?? MAX_DIAL_QUEUE_LENGTH,\n maxPeerAddrsToDial: init.maxPeerAddrsToDial ?? MAX_PEER_ADDRS_TO_DIAL,\n dialTimeout: init.dialTimeout ?? DIAL_TIMEOUT,\n resolvers: init.resolvers ?? {\n dnsaddr: dnsaddrResolver\n },\n connections: this.connections\n });\n }\n [Symbol.toStringTag] = '@libp2p/connection-manager';\n isStarted() {\n return this.started;\n }\n /**\n * Starts the Connection Manager. If Metrics are not enabled on libp2p\n * only event loop and connection limits will be monitored.\n */\n async start() {\n // track inbound/outbound connections\n this.metrics?.registerMetricGroup('libp2p_connection_manager_connections', {\n calculate: () => {\n const metric = {\n inbound: 0,\n outbound: 0\n };\n for (const conns of this.connections.values()) {\n for (const conn of conns) {\n if (conn.direction === 'inbound') {\n metric.inbound++;\n }\n else {\n metric.outbound++;\n }\n }\n }\n return metric;\n }\n });\n // track total number of streams per protocol\n this.metrics?.registerMetricGroup('libp2p_protocol_streams_total', {\n label: 'protocol',\n calculate: () => {\n const metric = {};\n for (const conns of this.connections.values()) {\n for (const conn of conns) {\n for (const stream of conn.streams) {\n const key = `${stream.direction} ${stream.protocol ?? 'unnegotiated'}`;\n metric[key] = (metric[key] ?? 0) + 1;\n }\n }\n }\n return metric;\n }\n });\n // track 90th percentile of streams per protocol\n this.metrics?.registerMetricGroup('libp2p_connection_manager_protocol_streams_per_connection_90th_percentile', {\n label: 'protocol',\n calculate: () => {\n const allStreams = {};\n for (const conns of this.connections.values()) {\n for (const conn of conns) {\n const streams = {};\n for (const stream of conn.streams) {\n const key = `${stream.direction} ${stream.protocol ?? 'unnegotiated'}`;\n streams[key] = (streams[key] ?? 0) + 1;\n }\n for (const [protocol, count] of Object.entries(streams)) {\n allStreams[protocol] = allStreams[protocol] ?? [];\n allStreams[protocol].push(count);\n }\n }\n }\n const metric = {};\n for (let [protocol, counts] of Object.entries(allStreams)) {\n counts = counts.sort((a, b) => a - b);\n const index = Math.floor(counts.length * 0.9);\n metric[protocol] = counts[index];\n }\n return metric;\n }\n });\n this.dialQueue.start();\n this.autoDial.start();\n this.started = true;\n this.log('started');\n }\n async afterStart() {\n // re-connect to any peers with the KEEP_ALIVE tag\n void Promise.resolve()\n .then(async () => {\n const keepAlivePeers = await this.peerStore.all({\n filters: [(peer) => {\n return peer.tags.has(KEEP_ALIVE);\n }]\n });\n await Promise.all(keepAlivePeers.map(async (peer) => {\n await this.openConnection(peer.id)\n .catch(err => {\n this.log.error(err);\n });\n }));\n })\n .catch(err => {\n this.log.error(err);\n });\n this.autoDial.afterStart();\n }\n /**\n * Stops the Connection Manager\n */\n async stop() {\n this.dialQueue.stop();\n this.autoDial.stop();\n // Close all connections we're tracking\n const tasks = [];\n for (const connectionList of this.connections.values()) {\n for (const connection of connectionList) {\n tasks.push((async () => {\n try {\n await connection.close();\n }\n catch (err) {\n this.log.error(err);\n }\n })());\n }\n }\n this.log('closing %d connections', tasks.length);\n await Promise.all(tasks);\n this.connections.clear();\n this.log('stopped');\n }\n onConnect(evt) {\n void this._onConnect(evt).catch(err => {\n this.log.error(err);\n });\n }\n /**\n * Tracks the incoming connection and check the connection limit\n */\n async _onConnect(evt) {\n const { detail: connection } = evt;\n if (!this.started) {\n // This can happen when we are in the process of shutting down the node\n await connection.close();\n return;\n }\n const peerId = connection.remotePeer;\n const storedConns = this.connections.get(peerId);\n let isNewPeer = false;\n if (storedConns != null) {\n storedConns.push(connection);\n }\n else {\n isNewPeer = true;\n this.connections.set(peerId, [connection]);\n }\n // only need to store RSA public keys, all other types are embedded in the peer id\n if (peerId.publicKey != null && peerId.type === 'RSA') {\n await this.peerStore.patch(peerId, {\n publicKey: peerId.publicKey\n });\n }\n if (isNewPeer) {\n this.events.safeDispatchEvent('peer:connect', { detail: connection.remotePeer });\n }\n }\n /**\n * Removes the connection from tracking\n */\n onDisconnect(evt) {\n const { detail: connection } = evt;\n if (!this.started) {\n // This can happen when we are in the process of shutting down the node\n return;\n }\n const peerId = connection.remotePeer;\n let storedConn = this.connections.get(peerId);\n if (storedConn != null && storedConn.length > 1) {\n storedConn = storedConn.filter((conn) => conn.id !== connection.id);\n this.connections.set(peerId, storedConn);\n }\n else if (storedConn != null) {\n this.connections.delete(peerId);\n this.events.safeDispatchEvent('peer:disconnect', { detail: connection.remotePeer });\n }\n }\n getConnections(peerId) {\n if (peerId != null) {\n return this.connections.get(peerId) ?? [];\n }\n let conns = [];\n for (const c of this.connections.values()) {\n conns = conns.concat(c);\n }\n return conns;\n }\n getConnectionsMap() {\n return this.connections;\n }\n async openConnection(peerIdOrMultiaddr, options = {}) {\n if (!this.isStarted()) {\n throw new CodeError('Not started', codes.ERR_NODE_NOT_STARTED);\n }\n options.signal?.throwIfAborted();\n const { peerId } = getPeerAddress(peerIdOrMultiaddr);\n if (peerId != null && options.force !== true) {\n this.log('dial %p', peerId);\n const existingConnection = this.getConnections(peerId)\n .find(conn => !conn.transient);\n if (existingConnection != null) {\n this.log('had an existing non-transient connection to %p', peerId);\n options.onProgress?.(new CustomProgressEvent('dial-queue:already-connected'));\n return existingConnection;\n }\n }\n const connection = await this.dialQueue.dial(peerIdOrMultiaddr, {\n ...options,\n priority: options.priority ?? DEFAULT_DIAL_PRIORITY\n });\n let peerConnections = this.connections.get(connection.remotePeer);\n if (peerConnections == null) {\n peerConnections = [];\n this.connections.set(connection.remotePeer, peerConnections);\n }\n // we get notified of connections via the Upgrader emitting \"connection\"\n // events, double check we aren't already tracking this connection before\n // storing it\n let trackedConnection = false;\n for (const conn of peerConnections) {\n if (conn.id === connection.id) {\n trackedConnection = true;\n }\n }\n if (!trackedConnection) {\n peerConnections.push(connection);\n }\n return connection;\n }\n async closeConnections(peerId, options = {}) {\n const connections = this.connections.get(peerId) ?? [];\n await Promise.all(connections.map(async (connection) => {\n try {\n await connection.close(options);\n }\n catch (err) {\n connection.abort(err);\n }\n }));\n }\n async acceptIncomingConnection(maConn) {\n // check deny list\n const denyConnection = this.deny.some(ma => {\n return maConn.remoteAddr.toString().startsWith(ma.toString());\n });\n if (denyConnection) {\n this.log('connection from %a refused - connection remote address was in deny list', maConn.remoteAddr);\n return false;\n }\n // check allow list\n const allowConnection = this.allow.some(ma => {\n return maConn.remoteAddr.toString().startsWith(ma.toString());\n });\n if (allowConnection) {\n this.incomingPendingConnections++;\n return true;\n }\n // check pending connections\n if (this.incomingPendingConnections === this.maxIncomingPendingConnections) {\n this.log('connection from %a refused - incomingPendingConnections exceeded by host', maConn.remoteAddr);\n return false;\n }\n if (maConn.remoteAddr.isThinWaistAddress()) {\n const host = maConn.remoteAddr.nodeAddress().address;\n try {\n await this.inboundConnectionRateLimiter.consume(host, 1);\n }\n catch {\n this.log('connection from %a refused - inboundConnectionThreshold exceeded by host %s', maConn.remoteAddr, host);\n return false;\n }\n }\n if (this.getConnections().length < this.maxConnections) {\n this.incomingPendingConnections++;\n return true;\n }\n this.log('connection from %a refused - maxConnections exceeded', maConn.remoteAddr);\n return false;\n }\n afterUpgradeInbound() {\n this.incomingPendingConnections--;\n }\n getDialQueue() {\n const statusMap = {\n queued: 'queued',\n running: 'active',\n errored: 'error',\n complete: 'success'\n };\n return this.dialQueue.queue.queue.map(job => {\n return {\n id: job.id,\n status: statusMap[job.status],\n peerId: job.options.peerId,\n multiaddrs: [...job.options.multiaddrs].map(ma => multiaddr(ma))\n };\n });\n }\n async isDialable(multiaddr, options = {}) {\n return this.dialQueue.isDialable(multiaddr, options);\n }\n}\n//# sourceMappingURL=index.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { serviceCapabilities } from '@libp2p/interface';\nimport { AdaptiveTimeout } from '@libp2p/utils/adaptive-timeout';\nimport { byteStream } from 'it-byte-stream';\nconst DEFAULT_PING_INTERVAL_MS = 10000;\nconst PROTOCOL_VERSION = '1.0.0';\nconst PROTOCOL_NAME = 'ping';\nconst PROTOCOL_PREFIX = 'ipfs';\nconst PING_LENGTH = 32;\nexport class ConnectionMonitor {\n protocol;\n components;\n log;\n heartbeatInterval;\n pingIntervalMs;\n abortController;\n timeout;\n constructor(components, init = {}) {\n this.components = components;\n this.protocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;\n this.log = components.logger.forComponent('libp2p:connection-monitor');\n this.pingIntervalMs = init.pingInterval ?? DEFAULT_PING_INTERVAL_MS;\n this.timeout = new AdaptiveTimeout({\n ...(init.pingTimeout ?? {}),\n metrics: components.metrics,\n metricName: 'libp2p_connection_monitor_ping_time_milliseconds'\n });\n }\n [Symbol.toStringTag] = '@libp2p/connection-monitor';\n [serviceCapabilities] = [\n '@libp2p/connection-monitor'\n ];\n start() {\n this.abortController = new AbortController();\n this.heartbeatInterval = setInterval(() => {\n this.components.connectionManager.getConnections().forEach(conn => {\n Promise.resolve().then(async () => {\n let start = Date.now();\n try {\n const signal = this.timeout.getTimeoutSignal({\n signal: this.abortController?.signal\n });\n const stream = await conn.newStream(this.protocol, {\n signal,\n runOnTransientConnection: true\n });\n const bs = byteStream(stream);\n start = Date.now();\n await Promise.all([\n bs.write(randomBytes(PING_LENGTH), {\n signal\n }),\n bs.read(PING_LENGTH, {\n signal\n })\n ]);\n conn.rtt = Date.now() - start;\n await bs.unwrap().close({\n signal\n });\n }\n catch (err) {\n if (err.code !== 'ERR_UNSUPPORTED_PROTOCOL') {\n throw err;\n }\n // protocol was unsupported, but that's ok as it means the remote\n // peer was still alive. We ran multistream-select which means two\n // round trips (e.g. 1x for the mss header, then another for the\n // protocol) so divide the time it took by two\n conn.rtt = (Date.now() - start) / 2;\n }\n })\n .catch(err => {\n this.log.error('error during heartbeat, aborting connection', err);\n conn.abort(err);\n });\n });\n }, this.pingIntervalMs);\n }\n stop() {\n this.abortController?.abort();\n if (this.heartbeatInterval != null) {\n clearInterval(this.heartbeatInterval);\n }\n }\n}\n//# sourceMappingURL=connection-monitor.js.map","import { CodeError } from '@libp2p/interface';\nimport { PeerSet } from '@libp2p/peer-collections';\nimport merge from 'it-merge';\nimport { codes, messages } from './errors.js';\nexport class CompoundContentRouting {\n routers;\n started;\n components;\n constructor(components, init) {\n this.routers = init.routers ?? [];\n this.started = false;\n this.components = components;\n }\n [Symbol.toStringTag] = '@libp2p/content-routing';\n isStarted() {\n return this.started;\n }\n async start() {\n this.started = true;\n }\n async stop() {\n this.started = false;\n }\n /**\n * Iterates over all content routers in parallel to find providers of the given key\n */\n async *findProviders(key, options = {}) {\n if (this.routers.length === 0) {\n throw new CodeError('No content routers available', codes.ERR_NO_ROUTERS_AVAILABLE);\n }\n const self = this;\n const seen = new PeerSet();\n for await (const peer of merge(...self.routers.map(router => router.findProviders(key, options)))) {\n // the peer was yielded by a content router without multiaddrs and we\n // failed to load them\n if (peer == null) {\n continue;\n }\n // store the addresses for the peer if found\n if (peer.multiaddrs.length > 0) {\n await this.components.peerStore.merge(peer.id, {\n multiaddrs: peer.multiaddrs\n });\n }\n // deduplicate peers\n if (seen.has(peer.id)) {\n continue;\n }\n seen.add(peer.id);\n yield peer;\n }\n }\n /**\n * Iterates over all content routers in parallel to notify it is\n * a provider of the given key\n */\n async provide(key, options = {}) {\n if (this.routers.length === 0) {\n throw new CodeError('No content routers available', codes.ERR_NO_ROUTERS_AVAILABLE);\n }\n await Promise.all(this.routers.map(async (router) => {\n await router.provide(key, options);\n }));\n }\n /**\n * Store the given key/value pair in the available content routings\n */\n async put(key, value, options) {\n if (!this.isStarted()) {\n throw new CodeError(messages.NOT_STARTED_YET, codes.ERR_NODE_NOT_STARTED);\n }\n await Promise.all(this.routers.map(async (router) => {\n await router.put(key, value, options);\n }));\n }\n /**\n * Get the value to the given key.\n * Times out after 1 minute by default.\n */\n async get(key, options) {\n if (!this.isStarted()) {\n throw new CodeError(messages.NOT_STARTED_YET, codes.ERR_NODE_NOT_STARTED);\n }\n return Promise.any(this.routers.map(async (router) => {\n return router.get(key, options);\n }));\n }\n}\n//# sourceMappingURL=content-routing.js.map","import { CodeError } from '@libp2p/interface';\nimport { createScalableCuckooFilter } from '@libp2p/utils/filters';\nimport merge from 'it-merge';\nimport parallel from 'it-parallel';\nimport { codes, messages } from './errors.js';\nexport class DefaultPeerRouting {\n log;\n peerId;\n peerStore;\n routers;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('libp2p:peer-routing');\n this.peerId = components.peerId;\n this.peerStore = components.peerStore;\n this.routers = init.routers ?? [];\n }\n [Symbol.toStringTag] = '@libp2p/peer-routing';\n /**\n * Iterates over all peer routers in parallel to find the given peer\n */\n async findPeer(id, options) {\n if (this.routers.length === 0) {\n throw new CodeError('No peer routers available', codes.ERR_NO_ROUTERS_AVAILABLE);\n }\n if (id.toString() === this.peerId.toString()) {\n throw new CodeError('Should not try to find self', codes.ERR_FIND_SELF);\n }\n const self = this;\n const source = merge(...this.routers.map(router => (async function* () {\n try {\n yield await router.findPeer(id, options);\n }\n catch (err) {\n self.log.error(err);\n }\n })()));\n for await (const peer of source) {\n if (peer == null) {\n continue;\n }\n // store the addresses for the peer if found\n if (peer.multiaddrs.length > 0) {\n await this.peerStore.merge(peer.id, {\n multiaddrs: peer.multiaddrs\n });\n }\n return peer;\n }\n throw new CodeError(messages.NOT_FOUND, codes.ERR_NOT_FOUND);\n }\n /**\n * Attempt to find the closest peers on the network to the given key\n */\n async *getClosestPeers(key, options = {}) {\n if (this.routers.length === 0) {\n throw new CodeError('No peer routers available', codes.ERR_NO_ROUTERS_AVAILABLE);\n }\n const self = this;\n const seen = createScalableCuckooFilter(1024);\n for await (const peer of parallel(async function* () {\n const source = merge(...self.routers.map(router => router.getClosestPeers(key, options)));\n for await (let peer of source) {\n yield async () => {\n // find multiaddrs if they are missing\n if (peer.multiaddrs.length === 0) {\n try {\n peer = await self.findPeer(peer.id, {\n ...options,\n useCache: false\n });\n }\n catch (err) {\n self.log.error('could not find peer multiaddrs', err);\n return;\n }\n }\n return peer;\n };\n }\n }())) {\n if (peer == null) {\n continue;\n }\n // store the addresses for the peer if found\n if (peer.multiaddrs.length > 0) {\n await this.peerStore.merge(peer.id, {\n multiaddrs: peer.multiaddrs\n });\n }\n // deduplicate peers\n if (seen.has(peer.id.toBytes())) {\n continue;\n }\n seen.add(peer.id.toBytes());\n yield peer;\n }\n }\n}\n//# sourceMappingURL=peer-routing.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { TypedEventEmitter, setMaxListeners } from '@libp2p/interface';\nimport { anySignal } from 'any-signal';\nimport pDefer, {} from 'p-defer';\nimport { raceEvent } from 'race-event';\nimport { raceSignal } from 'race-signal';\nexport class RandomWalk extends TypedEventEmitter {\n peerRouting;\n log;\n walking;\n walkers;\n shutdownController;\n walkController;\n needNext;\n constructor(components) {\n super();\n this.log = components.logger.forComponent('libp2p:random-walk');\n this.peerRouting = components.peerRouting;\n this.walkers = 0;\n this.walking = false;\n // stops any in-progress walks when the node is shut down\n this.shutdownController = new AbortController();\n setMaxListeners(Infinity, this.shutdownController.signal);\n }\n [Symbol.toStringTag] = '@libp2p/random-walk';\n start() {\n this.shutdownController = new AbortController();\n setMaxListeners(Infinity, this.shutdownController.signal);\n }\n stop() {\n this.shutdownController.abort();\n }\n async *walk(options) {\n if (!this.walking) {\n // start the query that causes walk:peer events to be emitted\n this.startWalk();\n }\n this.walkers++;\n const signal = anySignal([this.shutdownController.signal, options?.signal]);\n setMaxListeners(Infinity, signal);\n try {\n while (true) {\n // if another consumer has paused the query, start it again\n this.needNext?.resolve();\n this.needNext = pDefer();\n // wait for a walk:peer or walk:error event\n const event = await raceEvent(this, 'walk:peer', signal, {\n errorEvent: 'walk:error'\n });\n yield event.detail;\n }\n }\n finally {\n signal.clear();\n this.walkers--;\n // stop the walk if no more consumers are interested\n if (this.walkers === 0) {\n this.walkController?.abort();\n this.walkController = undefined;\n }\n }\n }\n startWalk() {\n this.walking = true;\n // the signal for this controller will be aborted if no more random peers\n // are required\n this.walkController = new AbortController();\n setMaxListeners(Infinity, this.walkController.signal);\n const signal = anySignal([this.walkController.signal, this.shutdownController.signal]);\n setMaxListeners(Infinity, signal);\n const start = Date.now();\n let found = 0;\n Promise.resolve().then(async () => {\n this.log('start walk');\n // find peers until no more consumers are interested\n while (this.walkers > 0) {\n try {\n const data = randomBytes(32);\n let s = Date.now();\n for await (const peer of this.peerRouting.getClosestPeers(data, { signal })) {\n if (signal.aborted) {\n this.log('aborting walk');\n }\n signal.throwIfAborted();\n this.log('found peer %p after %dms for %d walkers', peer.id, Date.now() - s, this.walkers);\n found++;\n this.safeDispatchEvent('walk:peer', {\n detail: peer\n });\n // if we only have one consumer, pause the query until they request\n // another random peer or they signal they are no longer interested\n if (this.walkers === 1 && this.needNext != null) {\n this.log('wait for need next');\n await raceSignal(this.needNext.promise, signal);\n }\n s = Date.now();\n }\n this.log('walk iteration for %b and %d walkers finished, found %d peers', data, this.walkers, found);\n }\n catch (err) {\n this.log.error('randomwalk errored', err);\n this.safeDispatchEvent('walk:error', {\n detail: err\n });\n }\n }\n this.log('no walkers left, ended walk');\n })\n .catch(err => {\n this.log.error('randomwalk errored', err);\n })\n .finally(() => {\n this.log('finished walk, found %d peers after %dms', found, Date.now() - start);\n this.walking = false;\n });\n }\n}\n//# sourceMappingURL=random-walk.js.map","import { CodeError } from '@libp2p/interface';\nimport merge from 'merge-options';\nimport { codes } from './errors.js';\nexport const DEFAULT_MAX_INBOUND_STREAMS = 32;\nexport const DEFAULT_MAX_OUTBOUND_STREAMS = 64;\n/**\n * Responsible for notifying registered protocols of events in the network.\n */\nexport class DefaultRegistrar {\n log;\n topologies;\n handlers;\n components;\n constructor(components) {\n this.log = components.logger.forComponent('libp2p:registrar');\n this.topologies = new Map();\n this.handlers = new Map();\n this.components = components;\n this._onDisconnect = this._onDisconnect.bind(this);\n this._onPeerUpdate = this._onPeerUpdate.bind(this);\n this._onPeerIdentify = this._onPeerIdentify.bind(this);\n this.components.events.addEventListener('peer:disconnect', this._onDisconnect);\n this.components.events.addEventListener('peer:update', this._onPeerUpdate);\n this.components.events.addEventListener('peer:identify', this._onPeerIdentify);\n }\n [Symbol.toStringTag] = '@libp2p/registrar';\n getProtocols() {\n return Array.from(new Set([\n ...this.handlers.keys()\n ])).sort();\n }\n getHandler(protocol) {\n const handler = this.handlers.get(protocol);\n if (handler == null) {\n throw new CodeError(`No handler registered for protocol ${protocol}`, codes.ERR_NO_HANDLER_FOR_PROTOCOL);\n }\n return handler;\n }\n getTopologies(protocol) {\n const topologies = this.topologies.get(protocol);\n if (topologies == null) {\n return [];\n }\n return [\n ...topologies.values()\n ];\n }\n /**\n * Registers the `handler` for each protocol\n */\n async handle(protocol, handler, opts) {\n if (this.handlers.has(protocol)) {\n throw new CodeError(`Handler already registered for protocol ${protocol}`, codes.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED);\n }\n const options = merge.bind({ ignoreUndefined: true })({\n maxInboundStreams: DEFAULT_MAX_INBOUND_STREAMS,\n maxOutboundStreams: DEFAULT_MAX_OUTBOUND_STREAMS\n }, opts);\n this.handlers.set(protocol, {\n handler,\n options\n });\n // Add new protocol to self protocols in the peer store\n await this.components.peerStore.merge(this.components.peerId, {\n protocols: [protocol]\n });\n }\n /**\n * Removes the handler for each protocol. The protocol\n * will no longer be supported on streams.\n */\n async unhandle(protocols) {\n const protocolList = Array.isArray(protocols) ? protocols : [protocols];\n protocolList.forEach(protocol => {\n this.handlers.delete(protocol);\n });\n // Update self protocols in the peer store\n await this.components.peerStore.patch(this.components.peerId, {\n protocols: this.getProtocols()\n });\n }\n /**\n * Register handlers for a set of multicodecs given\n */\n async register(protocol, topology) {\n if (topology == null) {\n throw new CodeError('invalid topology', codes.ERR_INVALID_PARAMETERS);\n }\n // Create topology\n const id = `${(Math.random() * 1e9).toString(36)}${Date.now()}`;\n let topologies = this.topologies.get(protocol);\n if (topologies == null) {\n topologies = new Map();\n this.topologies.set(protocol, topologies);\n }\n topologies.set(id, topology);\n return id;\n }\n /**\n * Unregister topology\n */\n unregister(id) {\n for (const [protocol, topologies] of this.topologies.entries()) {\n if (topologies.has(id)) {\n topologies.delete(id);\n if (topologies.size === 0) {\n this.topologies.delete(protocol);\n }\n }\n }\n }\n /**\n * Remove a disconnected peer from the record\n */\n _onDisconnect(evt) {\n const remotePeer = evt.detail;\n void this.components.peerStore.get(remotePeer)\n .then(peer => {\n for (const protocol of peer.protocols) {\n const topologies = this.topologies.get(protocol);\n if (topologies == null) {\n // no topologies are interested in this protocol\n continue;\n }\n for (const topology of topologies.values()) {\n if (topology.filter?.has(remotePeer) === false) {\n continue;\n }\n topology.filter?.remove(remotePeer);\n topology.onDisconnect?.(remotePeer);\n }\n }\n })\n .catch(err => {\n if (err.code === codes.ERR_NOT_FOUND) {\n // peer has not completed identify so they are not in the peer store\n return;\n }\n this.log.error('could not inform topologies of disconnecting peer %p', remotePeer, err);\n });\n }\n /**\n * When a peer is updated, if they have removed supported protocols notify any\n * topologies interested in the removed protocols.\n */\n _onPeerUpdate(evt) {\n const { peer, previous } = evt.detail;\n const removed = (previous?.protocols ?? []).filter(protocol => !peer.protocols.includes(protocol));\n for (const protocol of removed) {\n const topologies = this.topologies.get(protocol);\n if (topologies == null) {\n // no topologies are interested in this protocol\n continue;\n }\n for (const topology of topologies.values()) {\n if (topology.filter?.has(peer.id) === false) {\n continue;\n }\n topology.filter?.remove(peer.id);\n topology.onDisconnect?.(peer.id);\n }\n }\n }\n /**\n * After identify has completed and we have received the list of supported\n * protocols, notify any topologies interested in those protocols.\n */\n _onPeerIdentify(evt) {\n const protocols = evt.detail.protocols;\n const connection = evt.detail.connection;\n const peerId = evt.detail.peerId;\n for (const protocol of protocols) {\n const topologies = this.topologies.get(protocol);\n if (topologies == null) {\n // no topologies are interested in this protocol\n continue;\n }\n for (const topology of topologies.values()) {\n if (connection.transient && topology.notifyOnTransient !== true) {\n continue;\n }\n if (topology.filter?.has(peerId) === true) {\n continue;\n }\n topology.filter?.add(peerId);\n topology.onConnect?.(peerId, connection);\n }\n }\n }\n}\n//# sourceMappingURL=registrar.js.map","import { CodeError, FaultTolerance } from '@libp2p/interface';\nimport { trackedMap } from '@libp2p/utils/tracked-map';\nimport { CustomProgressEvent } from 'progress-events';\nimport { codes } from './errors.js';\nexport class DefaultTransportManager {\n log;\n components;\n transports;\n listeners;\n faultTolerance;\n started;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('libp2p:transports');\n this.components = components;\n this.started = false;\n this.transports = new Map();\n this.listeners = trackedMap({\n name: 'libp2p_transport_manager_listeners',\n metrics: this.components.metrics\n });\n this.faultTolerance = init.faultTolerance ?? FaultTolerance.FATAL_ALL;\n }\n [Symbol.toStringTag] = '@libp2p/transport-manager';\n /**\n * Adds a `Transport` to the manager\n */\n add(transport) {\n const tag = transport[Symbol.toStringTag];\n if (tag == null) {\n throw new CodeError('Transport must have a valid tag', codes.ERR_INVALID_KEY);\n }\n if (this.transports.has(tag)) {\n throw new CodeError(`There is already a transport with the tag ${tag}`, codes.ERR_DUPLICATE_TRANSPORT);\n }\n this.log('adding transport %s', tag);\n this.transports.set(tag, transport);\n if (!this.listeners.has(tag)) {\n this.listeners.set(tag, []);\n }\n }\n isStarted() {\n return this.started;\n }\n start() {\n this.started = true;\n }\n async afterStart() {\n // Listen on the provided transports for the provided addresses\n const addrs = this.components.addressManager.getListenAddrs();\n await this.listen(addrs);\n }\n /**\n * Stops all listeners\n */\n async stop() {\n const tasks = [];\n for (const [key, listeners] of this.listeners) {\n this.log('closing listeners for %s', key);\n while (listeners.length > 0) {\n const listener = listeners.pop();\n if (listener == null) {\n continue;\n }\n tasks.push(listener.close());\n }\n }\n await Promise.all(tasks);\n this.log('all listeners closed');\n for (const key of this.listeners.keys()) {\n this.listeners.set(key, []);\n }\n this.started = false;\n }\n /**\n * Dials the given Multiaddr over it's supported transport\n */\n async dial(ma, options) {\n const transport = this.dialTransportForMultiaddr(ma);\n if (transport == null) {\n throw new CodeError(`No transport available for address ${String(ma)}`, codes.ERR_TRANSPORT_UNAVAILABLE);\n }\n options?.onProgress?.(new CustomProgressEvent('transport-manager:selected-transport', transport[Symbol.toStringTag]));\n try {\n // @ts-expect-error the transport has a typed onProgress option but we\n // can't predict what transport implementation we selected so all we can\n // do is pass the onProgress handler in and hope for the best\n return await transport.dial(ma, {\n ...options,\n upgrader: this.components.upgrader\n });\n }\n catch (err) {\n if (err.code == null) {\n err.code = codes.ERR_TRANSPORT_DIAL_FAILED;\n }\n throw err;\n }\n }\n /**\n * Returns all Multiaddr's the listeners are using\n */\n getAddrs() {\n let addrs = [];\n for (const listeners of this.listeners.values()) {\n for (const listener of listeners) {\n addrs = [...addrs, ...listener.getAddrs()];\n }\n }\n return addrs;\n }\n /**\n * Returns all the transports instances\n */\n getTransports() {\n return Array.of(...this.transports.values());\n }\n /**\n * Returns all the listener instances\n */\n getListeners() {\n return Array.of(...this.listeners.values()).flat();\n }\n /**\n * Finds a transport that matches the given Multiaddr\n */\n dialTransportForMultiaddr(ma) {\n for (const transport of this.transports.values()) {\n const addrs = transport.dialFilter([ma]);\n if (addrs.length > 0) {\n return transport;\n }\n }\n }\n /**\n * Finds a transport that matches the given Multiaddr\n */\n listenTransportForMultiaddr(ma) {\n for (const transport of this.transports.values()) {\n const addrs = transport.listenFilter([ma]);\n if (addrs.length > 0) {\n return transport;\n }\n }\n }\n /**\n * Starts listeners for each listen Multiaddr\n */\n async listen(addrs) {\n if (!this.isStarted()) {\n throw new CodeError('Not started', codes.ERR_NODE_NOT_STARTED);\n }\n if (addrs == null || addrs.length === 0) {\n this.log('no addresses were provided for listening, this node is dial only');\n return;\n }\n const couldNotListen = [];\n for (const [key, transport] of this.transports.entries()) {\n const supportedAddrs = transport.listenFilter(addrs);\n const tasks = [];\n // For each supported multiaddr, create a listener\n for (const addr of supportedAddrs) {\n this.log('creating listener for %s on %a', key, addr);\n const listener = transport.createListener({\n upgrader: this.components.upgrader\n });\n let listeners = this.listeners.get(key) ?? [];\n if (listeners == null) {\n listeners = [];\n this.listeners.set(key, listeners);\n }\n listeners.push(listener);\n // Track listen/close events\n listener.addEventListener('listening', () => {\n this.components.events.safeDispatchEvent('transport:listening', {\n detail: listener\n });\n });\n listener.addEventListener('close', () => {\n const index = listeners.findIndex(l => l === listener);\n // remove the listener\n listeners.splice(index, 1);\n this.components.events.safeDispatchEvent('transport:close', {\n detail: listener\n });\n });\n // We need to attempt to listen on everything\n tasks.push(listener.listen(addr));\n }\n // Keep track of transports we had no addresses for\n if (tasks.length === 0) {\n couldNotListen.push(key);\n continue;\n }\n const results = await Promise.allSettled(tasks);\n // If we are listening on at least 1 address, succeed.\n // TODO: we should look at adding a retry (`p-retry`) here to better support\n // listening on remote addresses as they may be offline. We could then potentially\n // just wait for any (`p-any`) listener to succeed on each transport before returning\n const isListening = results.find(r => r.status === 'fulfilled');\n if ((isListening == null) && this.faultTolerance !== FaultTolerance.NO_FATAL) {\n throw new CodeError(`Transport (${key}) could not listen on any available address`, codes.ERR_NO_VALID_ADDRESSES);\n }\n }\n // If no transports were able to listen, throw an error. This likely\n // means we were given addresses we do not have transports for\n if (couldNotListen.length === this.transports.size) {\n const message = `no valid addresses were provided for transports [${couldNotListen.join(', ')}]`;\n if (this.faultTolerance === FaultTolerance.FATAL_ALL) {\n throw new CodeError(message, codes.ERR_NO_VALID_ADDRESSES);\n }\n this.log(`libp2p in dial mode only: ${message}`);\n }\n }\n /**\n * Removes the given transport from the manager.\n * If a transport has any running listeners, they will be closed.\n */\n async remove(key) {\n const listeners = this.listeners.get(key) ?? [];\n this.log.trace('removing transport %s', key);\n // Close any running listeners\n const tasks = [];\n this.log.trace('closing listeners for %s', key);\n while (listeners.length > 0) {\n const listener = listeners.pop();\n if (listener == null) {\n continue;\n }\n tasks.push(listener.close());\n }\n await Promise.all(tasks);\n this.transports.delete(key);\n this.listeners.delete(key);\n }\n /**\n * Removes all transports from the manager.\n * If any listeners are running, they will be closed.\n *\n * @async\n */\n async removeAll() {\n const tasks = [];\n for (const key of this.transports.keys()) {\n tasks.push(this.remove(key));\n }\n await Promise.all(tasks);\n }\n}\n//# sourceMappingURL=transport-manager.js.map","export const PROTOCOL_ID = '/multistream/1.0.0';\n// Conforming to go-libp2p\n// See https://github.com/multiformats/go-multistream/blob/master/multistream.go#L297\nexport const MAX_PROTOCOL_LENGTH = 1024;\n//# sourceMappingURL=constants.js.map","import { CodeError } from '@libp2p/interface';\nimport {} from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nconst NewLine = uint8ArrayFromString('\\n');\n/**\n * `write` encodes and writes a single buffer\n */\nexport async function write(writer, buffer, options) {\n await writer.write(buffer, options);\n}\n/**\n * `writeAll` behaves like `write`, except it encodes an array of items as a single write\n */\nexport async function writeAll(writer, buffers, options) {\n await writer.writeV(buffers, options);\n}\n/**\n * Read a length-prefixed buffer from the passed stream, stripping the final newline character\n */\nexport async function read(reader, options) {\n const buf = await reader.read(options);\n if (buf.byteLength === 0 || buf.get(buf.byteLength - 1) !== NewLine[0]) {\n options.log.error('Invalid mss message - missing newline', buf);\n throw new CodeError('missing newline', 'ERR_INVALID_MULTISTREAM_SELECT_MESSAGE');\n }\n return buf.sublist(0, -1); // Remove newline\n}\n/**\n * Read a length-prefixed string from the passed stream, stripping the final newline character\n */\nexport async function readString(reader, options) {\n const buf = await read(reader, options);\n return uint8ArrayToString(buf.subarray());\n}\n//# sourceMappingURL=multistream.js.map","import { CodeError } from '@libp2p/interface';\nimport { lpStream } from 'it-length-prefixed-stream';\nimport pDefer from 'p-defer';\nimport { raceSignal } from 'race-signal';\nimport * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { MAX_PROTOCOL_LENGTH } from './constants.js';\nimport * as multistream from './multistream.js';\nimport { PROTOCOL_ID } from './index.js';\n/**\n * Negotiate a protocol to use from a list of protocols.\n *\n * @param stream - A duplex iterable stream to dial on\n * @param protocols - A list of protocols (or single protocol) to negotiate with. Protocols are attempted in order until a match is made.\n * @param options - An options object containing an AbortSignal and an optional boolean `writeBytes` - if this is true, `Uint8Array`s will be written into `duplex`, otherwise `Uint8ArrayList`s will\n * @returns A stream for the selected protocol and the protocol that was selected from the list of protocols provided to `select`.\n * @example\n *\n * ```TypeScript\n * import { pipe } from 'it-pipe'\n * import * as mss from '@libp2p/multistream-select'\n * import { Mplex } from '@libp2p/mplex'\n *\n * const muxer = new Mplex()\n * const muxedStream = muxer.newStream()\n *\n * // mss.select(protocol(s))\n * // Select from one of the passed protocols (in priority order)\n * // Returns selected stream and protocol\n * const { stream: dhtStream, protocol } = await mss.select(muxedStream, [\n * // This might just be different versions of DHT, but could be different impls\n * '/ipfs-dht/2.0.0', // Most of the time this will probably just be one item.\n * '/ipfs-dht/1.0.0'\n * ])\n *\n * // Typically this stream will be passed back to the caller of libp2p.dialProtocol\n * //\n * // ...it might then do something like this:\n * // try {\n * // await pipe(\n * // [uint8ArrayFromString('Some DHT data')]\n * // dhtStream,\n * // async source => {\n * // for await (const chunk of source)\n * // // DHT response data\n * // }\n * // )\n * // } catch (err) {\n * // // Error in stream\n * // }\n * ```\n */\nexport async function select(stream, protocols, options) {\n protocols = Array.isArray(protocols) ? [...protocols] : [protocols];\n if (protocols.length === 1 && options.negotiateFully === false) {\n return optimisticSelect(stream, protocols[0], options);\n }\n const lp = lpStream(stream, {\n ...options,\n maxDataLength: MAX_PROTOCOL_LENGTH\n });\n const protocol = protocols.shift();\n if (protocol == null) {\n throw new Error('At least one protocol must be specified');\n }\n options.log.trace('select: write [\"%s\", \"%s\"]', PROTOCOL_ID, protocol);\n const p1 = uint8ArrayFromString(`${PROTOCOL_ID}\\n`);\n const p2 = uint8ArrayFromString(`${protocol}\\n`);\n await multistream.writeAll(lp, [p1, p2], options);\n options.log.trace('select: reading multistream-select header');\n let response = await multistream.readString(lp, options);\n options.log.trace('select: read \"%s\"', response);\n // Read the protocol response if we got the protocolId in return\n if (response === PROTOCOL_ID) {\n options.log.trace('select: reading protocol response');\n response = await multistream.readString(lp, options);\n options.log.trace('select: read \"%s\"', response);\n }\n // We're done\n if (response === protocol) {\n return { stream: lp.unwrap(), protocol };\n }\n // We haven't gotten a valid ack, try the other protocols\n for (const protocol of protocols) {\n options.log.trace('select: write \"%s\"', protocol);\n await multistream.write(lp, uint8ArrayFromString(`${protocol}\\n`), options);\n options.log.trace('select: reading protocol response');\n const response = await multistream.readString(lp, options);\n options.log.trace('select: read \"%s\" for \"%s\"', response, protocol);\n if (response === protocol) {\n return { stream: lp.unwrap(), protocol };\n }\n }\n throw new CodeError('protocol selection failed', 'ERR_UNSUPPORTED_PROTOCOL');\n}\n/**\n * Optimistically negotiates a protocol.\n *\n * It *does not* block writes waiting for the other end to respond. Instead, it\n * simply assumes the negotiation went successfully and starts writing data.\n *\n * Use when it is known that the receiver supports the desired protocol.\n */\nfunction optimisticSelect(stream, protocol, options) {\n const originalSink = stream.sink.bind(stream);\n const originalSource = stream.source;\n let negotiated = false;\n let negotiating = false;\n const doneNegotiating = pDefer();\n let sentProtocol = false;\n let sendingProtocol = false;\n const doneSendingProtocol = pDefer();\n let readProtocol = false;\n let readingProtocol = false;\n const doneReadingProtocol = pDefer();\n const lp = lpStream({\n sink: originalSink,\n source: originalSource\n }, {\n ...options,\n maxDataLength: MAX_PROTOCOL_LENGTH\n });\n stream.sink = async (source) => {\n const { sink } = lp.unwrap();\n await sink(async function* () {\n let sentData = false;\n for await (const buf of source) {\n // started reading before the source yielded, wait for protocol send\n if (sendingProtocol) {\n await doneSendingProtocol.promise;\n }\n // writing before reading, send the protocol and the first chunk of data\n if (!sentProtocol) {\n sendingProtocol = true;\n options.log.trace('optimistic: write [\"%s\", \"%s\", data(%d)] in sink', PROTOCOL_ID, protocol, buf.byteLength);\n const protocolString = `${protocol}\\n`;\n // send protocols in first chunk of data written to transport\n yield new Uint8ArrayList(Uint8Array.from([19]), // length of PROTOCOL_ID plus newline\n uint8ArrayFromString(`${PROTOCOL_ID}\\n`), varint.encode(protocolString.length), uint8ArrayFromString(protocolString), buf).subarray();\n options.log.trace('optimistic: wrote [\"%s\", \"%s\", data(%d)] in sink', PROTOCOL_ID, protocol, buf.byteLength);\n sentProtocol = true;\n sendingProtocol = false;\n doneSendingProtocol.resolve();\n // read the negotiation response but don't block more sending\n negotiate()\n .catch(err => {\n options.log.error('could not finish optimistic protocol negotiation of %s', protocol, err);\n });\n }\n else {\n yield buf;\n }\n sentData = true;\n }\n // special case - the source passed to the sink has ended but we didn't\n // negotiated the protocol yet so do it now\n if (!sentData) {\n await negotiate();\n }\n }());\n };\n async function negotiate() {\n if (negotiating) {\n options.log.trace('optimistic: already negotiating %s stream', protocol);\n await doneNegotiating.promise;\n return;\n }\n negotiating = true;\n try {\n // we haven't sent the protocol yet, send it now\n if (!sentProtocol) {\n options.log.trace('optimistic: doing send protocol for %s stream', protocol);\n await doSendProtocol();\n }\n // if we haven't read the protocol response yet, do it now\n if (!readProtocol) {\n options.log.trace('optimistic: doing read protocol for %s stream', protocol);\n await doReadProtocol();\n }\n }\n finally {\n negotiating = false;\n negotiated = true;\n doneNegotiating.resolve();\n }\n }\n async function doSendProtocol() {\n if (sendingProtocol) {\n await doneSendingProtocol.promise;\n return;\n }\n sendingProtocol = true;\n try {\n options.log.trace('optimistic: write [\"%s\", \"%s\", data] in source', PROTOCOL_ID, protocol);\n await lp.writeV([\n uint8ArrayFromString(`${PROTOCOL_ID}\\n`),\n uint8ArrayFromString(`${protocol}\\n`)\n ]);\n options.log.trace('optimistic: wrote [\"%s\", \"%s\", data] in source', PROTOCOL_ID, protocol);\n }\n finally {\n sentProtocol = true;\n sendingProtocol = false;\n doneSendingProtocol.resolve();\n }\n }\n async function doReadProtocol() {\n if (readingProtocol) {\n await doneReadingProtocol.promise;\n return;\n }\n readingProtocol = true;\n try {\n options.log.trace('optimistic: reading multistream select header');\n let response = await multistream.readString(lp, options);\n options.log.trace('optimistic: read multistream select header \"%s\"', response);\n if (response === PROTOCOL_ID) {\n response = await multistream.readString(lp, options);\n }\n options.log.trace('optimistic: read protocol \"%s\", expecting \"%s\"', response, protocol);\n if (response !== protocol) {\n throw new CodeError('protocol selection failed', 'ERR_UNSUPPORTED_PROTOCOL');\n }\n }\n finally {\n readProtocol = true;\n readingProtocol = false;\n doneReadingProtocol.resolve();\n }\n }\n stream.source = (async function* () {\n // make sure we've done protocol negotiation before we read stream data\n await negotiate();\n options.log.trace('optimistic: reading data from \"%s\" stream', protocol);\n yield* lp.unwrap().source;\n })();\n if (stream.closeRead != null) {\n const originalCloseRead = stream.closeRead.bind(stream);\n stream.closeRead = async (opts) => {\n // we need to read & write to negotiate the protocol so ensure we've done\n // this before closing the readable end of the stream\n if (!negotiated) {\n await negotiate().catch(err => {\n options.log.error('could not negotiate protocol before close read', err);\n });\n }\n // protocol has been negotiated, ok to close the readable end\n await originalCloseRead(opts);\n };\n }\n if (stream.closeWrite != null) {\n const originalCloseWrite = stream.closeWrite.bind(stream);\n stream.closeWrite = async (opts) => {\n // we need to read & write to negotiate the protocol so ensure we've done\n // this before closing the writable end of the stream\n if (!negotiated) {\n await negotiate().catch(err => {\n options.log.error('could not negotiate protocol before close write', err);\n });\n }\n // protocol has been negotiated, ok to close the writable end\n await originalCloseWrite(opts);\n };\n }\n if (stream.close != null) {\n const originalClose = stream.close.bind(stream);\n stream.close = async (opts) => {\n // if we are in the process of negotiation, let it finish before closing\n // because we may have unsent early data\n const tasks = [];\n if (sendingProtocol) {\n tasks.push(doneSendingProtocol.promise);\n }\n if (readingProtocol) {\n tasks.push(doneReadingProtocol.promise);\n }\n if (tasks.length > 0) {\n // let the in-flight protocol negotiation finish gracefully\n await raceSignal(Promise.all(tasks), opts?.signal);\n }\n else {\n // no protocol negotiation attempt has occurred so don't start one\n negotiated = true;\n negotiating = false;\n doneNegotiating.resolve();\n }\n // protocol has been negotiated, ok to close the writable end\n await originalClose(opts);\n };\n }\n return {\n stream,\n protocol\n };\n}\n//# sourceMappingURL=select.js.map","import { encode } from 'it-length-prefixed';\nimport { lpStream } from 'it-length-prefixed-stream';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { MAX_PROTOCOL_LENGTH, PROTOCOL_ID } from './constants.js';\nimport * as multistream from './multistream.js';\n/**\n * Handle multistream protocol selections for the given list of protocols.\n *\n * Note that after a protocol is handled `listener` can no longer be used.\n *\n * @param stream - A duplex iterable stream to listen on\n * @param protocols - A list of protocols (or single protocol) that this listener is able to speak.\n * @param options - an options object containing an AbortSignal and an optional boolean `writeBytes` - if this is true, `Uint8Array`s will be written into `duplex`, otherwise `Uint8ArrayList`s will\n * @returns A stream for the selected protocol and the protocol that was selected from the list of protocols provided to `select`\n * @example\n *\n * ```TypeScript\n * import { pipe } from 'it-pipe'\n * import * as mss from '@libp2p/multistream-select'\n * import { Mplex } from '@libp2p/mplex'\n *\n * const muxer = new Mplex({\n * async onStream (muxedStream) {\n * // mss.handle(handledProtocols)\n * // Returns selected stream and protocol\n * const { stream, protocol } = await mss.handle(muxedStream, [\n * '/ipfs-dht/1.0.0',\n * '/ipfs-bitswap/1.0.0'\n * ])\n *\n * // Typically here we'd call the handler function that was registered in\n * // libp2p for the given protocol:\n * // e.g. handlers[protocol].handler(stream)\n * //\n * // If protocol was /ipfs-dht/1.0.0 it might do something like this:\n * // try {\n * // await pipe(\n * // dhtStream,\n * // source => (async function * () {\n * // for await (const chunk of source)\n * // // Incoming DHT data -> process and yield to respond\n * // })(),\n * // dhtStream\n * // )\n * // } catch (err) {\n * // // Error in stream\n * // }\n * }\n * })\n * ```\n */\nexport async function handle(stream, protocols, options) {\n protocols = Array.isArray(protocols) ? protocols : [protocols];\n options.log.trace('handle: available protocols %s', protocols);\n const lp = lpStream(stream, {\n ...options,\n maxDataLength: MAX_PROTOCOL_LENGTH,\n maxLengthLength: 2 // 2 bytes is enough to length-prefix MAX_PROTOCOL_LENGTH\n });\n while (true) {\n options.log.trace('handle: reading incoming string');\n const protocol = await multistream.readString(lp, options);\n options.log.trace('handle: read \"%s\"', protocol);\n if (protocol === PROTOCOL_ID) {\n options.log.trace('handle: respond with \"%s\" for \"%s\"', PROTOCOL_ID, protocol);\n await multistream.write(lp, uint8ArrayFromString(`${PROTOCOL_ID}\\n`), options);\n options.log.trace('handle: responded with \"%s\" for \"%s\"', PROTOCOL_ID, protocol);\n continue;\n }\n if (protocols.includes(protocol)) {\n options.log.trace('handle: respond with \"%s\" for \"%s\"', protocol, protocol);\n await multistream.write(lp, uint8ArrayFromString(`${protocol}\\n`), options);\n options.log.trace('handle: responded with \"%s\" for \"%s\"', protocol, protocol);\n return { stream: lp.unwrap(), protocol };\n }\n if (protocol === 'ls') {\n // \\n\\n\\n\n const protos = new Uint8ArrayList(...protocols.map(p => encode.single(uint8ArrayFromString(`${p}\\n`))), uint8ArrayFromString('\\n'));\n options.log.trace('handle: respond with \"%s\" for %s', protocols, protocol);\n await multistream.write(lp, protos, options);\n options.log.trace('handle: responded with \"%s\" for %s', protocols, protocol);\n continue;\n }\n options.log('handle: respond with \"na\" for \"%s\"', protocol);\n await multistream.write(lp, uint8ArrayFromString('na\\n'), options);\n options.log('handle: responded with \"na\" for \"%s\"', protocol);\n }\n}\n//# sourceMappingURL=handle.js.map","import { connectionSymbol, CodeError, setMaxListeners } from '@libp2p/interface';\nconst CLOSE_TIMEOUT = 500;\n/**\n * An implementation of the js-libp2p connection.\n * Any libp2p transport should use an upgrader to return this connection.\n */\nexport class ConnectionImpl {\n /**\n * Connection identifier.\n */\n id;\n /**\n * Observed multiaddr of the remote peer\n */\n remoteAddr;\n /**\n * Remote peer id\n */\n remotePeer;\n direction;\n timeline;\n multiplexer;\n encryption;\n status;\n transient;\n log;\n /**\n * User provided tags\n *\n */\n tags;\n /**\n * Reference to the new stream function of the multiplexer\n */\n _newStream;\n /**\n * Reference to the close function of the raw connection\n */\n _close;\n _abort;\n /**\n * Reference to the getStreams function of the muxer\n */\n _getStreams;\n /**\n * An implementation of the js-libp2p connection.\n * Any libp2p transport should use an upgrader to return this connection.\n */\n constructor(init) {\n const { remoteAddr, remotePeer, newStream, close, abort, getStreams } = init;\n this.id = `${(parseInt(String(Math.random() * 1e9))).toString(36)}${Date.now()}`;\n this.remoteAddr = remoteAddr;\n this.remotePeer = remotePeer;\n this.direction = init.direction;\n this.status = 'open';\n this.timeline = init.timeline;\n this.multiplexer = init.multiplexer;\n this.encryption = init.encryption;\n this.transient = init.transient ?? false;\n this.log = init.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`);\n if (this.remoteAddr.getPeerId() == null) {\n this.remoteAddr = this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`);\n }\n this._newStream = newStream;\n this._close = close;\n this._abort = abort;\n this._getStreams = getStreams;\n this.tags = [];\n }\n [Symbol.toStringTag] = 'Connection';\n [connectionSymbol] = true;\n /**\n * Get all the streams of the muxer\n */\n get streams() {\n return this._getStreams();\n }\n /**\n * Create a new stream from this connection\n */\n async newStream(protocols, options) {\n if (this.status === 'closing') {\n throw new CodeError('the connection is being closed', 'ERR_CONNECTION_BEING_CLOSED');\n }\n if (this.status === 'closed') {\n throw new CodeError('the connection is closed', 'ERR_CONNECTION_CLOSED');\n }\n if (!Array.isArray(protocols)) {\n protocols = [protocols];\n }\n if (this.transient && options?.runOnTransientConnection !== true) {\n throw new CodeError('Cannot open protocol stream on transient connection', 'ERR_TRANSIENT_CONNECTION');\n }\n const stream = await this._newStream(protocols, options);\n stream.direction = 'outbound';\n return stream;\n }\n /**\n * Close the connection\n */\n async close(options = {}) {\n if (this.status === 'closed' || this.status === 'closing') {\n return;\n }\n this.log('closing connection to %a', this.remoteAddr);\n this.status = 'closing';\n if (options.signal == null) {\n const signal = AbortSignal.timeout(CLOSE_TIMEOUT);\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n try {\n this.log.trace('closing all streams');\n // close all streams gracefully - this can throw if we're not multiplexed\n await Promise.all(this.streams.map(async (s) => s.close(options)));\n this.log.trace('closing underlying transport');\n // close raw connection\n await this._close(options);\n this.log.trace('updating timeline with close time');\n this.status = 'closed';\n this.timeline.close = Date.now();\n }\n catch (err) {\n this.log.error('error encountered during graceful close of connection to %a', this.remoteAddr, err);\n this.abort(err);\n }\n }\n abort(err) {\n this.log.error('aborting connection to %a due to error', this.remoteAddr, err);\n this.status = 'closing';\n this.streams.forEach(s => { s.abort(err); });\n this.log.error('all streams aborted', this.streams.length);\n // Abort raw connection\n this._abort(err);\n this.timeline.close = Date.now();\n this.status = 'closed';\n }\n}\nexport function createConnection(init) {\n return new ConnectionImpl(init);\n}\n//# sourceMappingURL=index.js.map","import { CodeError, ERR_TIMEOUT, setMaxListeners } from '@libp2p/interface';\nimport * as mss from '@libp2p/multistream-select';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { CustomProgressEvent } from 'progress-events';\nimport { createConnection } from './connection/index.js';\nimport { INBOUND_UPGRADE_TIMEOUT } from './connection-manager/constants.js';\nimport { codes } from './errors.js';\nimport { DEFAULT_MAX_INBOUND_STREAMS, DEFAULT_MAX_OUTBOUND_STREAMS } from './registrar.js';\nconst DEFAULT_PROTOCOL_SELECT_TIMEOUT = 30000;\nfunction findIncomingStreamLimit(protocol, registrar) {\n try {\n const { options } = registrar.getHandler(protocol);\n return options.maxInboundStreams;\n }\n catch (err) {\n if (err.code !== codes.ERR_NO_HANDLER_FOR_PROTOCOL) {\n throw err;\n }\n }\n return DEFAULT_MAX_INBOUND_STREAMS;\n}\nfunction findOutgoingStreamLimit(protocol, registrar, options = {}) {\n try {\n const { options } = registrar.getHandler(protocol);\n if (options.maxOutboundStreams != null) {\n return options.maxOutboundStreams;\n }\n }\n catch (err) {\n if (err.code !== codes.ERR_NO_HANDLER_FOR_PROTOCOL) {\n throw err;\n }\n }\n return options.maxOutboundStreams ?? DEFAULT_MAX_OUTBOUND_STREAMS;\n}\nfunction countStreams(protocol, direction, connection) {\n let streamCount = 0;\n connection.streams.forEach(stream => {\n if (stream.direction === direction && stream.protocol === protocol) {\n streamCount++;\n }\n });\n return streamCount;\n}\nexport class DefaultUpgrader {\n components;\n connectionEncryption;\n muxers;\n inboundUpgradeTimeout;\n events;\n constructor(components, init) {\n this.components = components;\n this.connectionEncryption = new Map();\n init.connectionEncryption.forEach(encrypter => {\n this.connectionEncryption.set(encrypter.protocol, encrypter);\n });\n this.muxers = new Map();\n init.muxers.forEach(muxer => {\n this.muxers.set(muxer.protocol, muxer);\n });\n this.inboundUpgradeTimeout = init.inboundUpgradeTimeout ?? INBOUND_UPGRADE_TIMEOUT;\n this.events = components.events;\n }\n [Symbol.toStringTag] = '@libp2p/upgrader';\n async shouldBlockConnection(remotePeer, maConn, connectionType) {\n const connectionGater = this.components.connectionGater[connectionType];\n if (connectionGater !== undefined) {\n if (await connectionGater(remotePeer, maConn)) {\n throw new CodeError(`The multiaddr connection is blocked by gater.${connectionType}`, codes.ERR_CONNECTION_INTERCEPTED);\n }\n }\n }\n /**\n * Upgrades an inbound connection\n */\n async upgradeInbound(maConn, opts) {\n const accept = await this.components.connectionManager.acceptIncomingConnection(maConn);\n if (!accept) {\n throw new CodeError('connection denied', codes.ERR_CONNECTION_DENIED);\n }\n let encryptedConn;\n let remotePeer;\n let upgradedConn;\n let muxerFactory;\n let cryptoProtocol;\n const signal = AbortSignal.timeout(this.inboundUpgradeTimeout);\n const onAbort = () => {\n maConn.abort(new CodeError('inbound upgrade timeout', ERR_TIMEOUT));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n setMaxListeners(Infinity, signal);\n try {\n if ((await this.components.connectionGater.denyInboundConnection?.(maConn)) === true) {\n throw new CodeError('The multiaddr connection is blocked by gater.acceptConnection', codes.ERR_CONNECTION_INTERCEPTED);\n }\n this.components.metrics?.trackMultiaddrConnection(maConn);\n maConn.log('starting the inbound connection upgrade');\n // Protect\n let protectedConn = maConn;\n if (opts?.skipProtection !== true) {\n const protector = this.components.connectionProtector;\n if (protector != null) {\n maConn.log('protecting the inbound connection');\n protectedConn = await protector.protect(maConn);\n }\n }\n try {\n // Encrypt the connection\n encryptedConn = protectedConn;\n if (opts?.skipEncryption !== true) {\n opts?.onProgress?.(new CustomProgressEvent('upgrader:encrypt-inbound-connection'));\n ({\n conn: encryptedConn,\n remotePeer,\n protocol: cryptoProtocol\n } = await this._encryptInbound(protectedConn));\n const maConn = {\n ...protectedConn,\n ...encryptedConn\n };\n await this.shouldBlockConnection(remotePeer, maConn, 'denyInboundEncryptedConnection');\n }\n else {\n const idStr = maConn.remoteAddr.getPeerId();\n if (idStr == null) {\n throw new CodeError('inbound connection that skipped encryption must have a peer id', codes.ERR_INVALID_MULTIADDR);\n }\n const remotePeerId = peerIdFromString(idStr);\n cryptoProtocol = 'native';\n remotePeer = remotePeerId;\n }\n upgradedConn = encryptedConn;\n if (opts?.muxerFactory != null) {\n muxerFactory = opts.muxerFactory;\n }\n else if (this.muxers.size > 0) {\n opts?.onProgress?.(new CustomProgressEvent('upgrader:multiplex-inbound-connection'));\n // Multiplex the connection\n const multiplexed = await this._multiplexInbound({\n ...protectedConn,\n ...encryptedConn\n }, this.muxers);\n muxerFactory = multiplexed.muxerFactory;\n upgradedConn = multiplexed.stream;\n }\n }\n catch (err) {\n maConn.log.error('failed to upgrade inbound connection', err);\n throw err;\n }\n await this.shouldBlockConnection(remotePeer, maConn, 'denyInboundUpgradedConnection');\n maConn.log('successfully upgraded inbound connection');\n return this._createConnection({\n cryptoProtocol,\n direction: 'inbound',\n maConn,\n upgradedConn,\n muxerFactory,\n remotePeer,\n transient: opts?.transient\n });\n }\n finally {\n signal.removeEventListener('abort', onAbort);\n this.components.connectionManager.afterUpgradeInbound();\n }\n }\n /**\n * Upgrades an outbound connection\n */\n async upgradeOutbound(maConn, opts) {\n const idStr = maConn.remoteAddr.getPeerId();\n let remotePeerId;\n if (idStr != null) {\n remotePeerId = peerIdFromString(idStr);\n await this.shouldBlockConnection(remotePeerId, maConn, 'denyOutboundConnection');\n }\n let encryptedConn;\n let remotePeer;\n let upgradedConn;\n let cryptoProtocol;\n let muxerFactory;\n this.components.metrics?.trackMultiaddrConnection(maConn);\n maConn.log('starting the outbound connection upgrade');\n // If the transport natively supports encryption, skip connection\n // protector and encryption\n // Protect\n let protectedConn = maConn;\n if (opts?.skipProtection !== true) {\n const protector = this.components.connectionProtector;\n if (protector != null) {\n protectedConn = await protector.protect(maConn);\n }\n }\n try {\n // Encrypt the connection\n encryptedConn = protectedConn;\n if (opts?.skipEncryption !== true) {\n ({\n conn: encryptedConn,\n remotePeer,\n protocol: cryptoProtocol\n } = await this._encryptOutbound(protectedConn, remotePeerId));\n const maConn = {\n ...protectedConn,\n ...encryptedConn\n };\n await this.shouldBlockConnection(remotePeer, maConn, 'denyOutboundEncryptedConnection');\n }\n else {\n if (remotePeerId == null) {\n throw new CodeError('Encryption was skipped but no peer id was passed', codes.ERR_INVALID_PEER);\n }\n cryptoProtocol = 'native';\n remotePeer = remotePeerId;\n }\n upgradedConn = encryptedConn;\n if (opts?.muxerFactory != null) {\n muxerFactory = opts.muxerFactory;\n }\n else if (this.muxers.size > 0) {\n // Multiplex the connection\n const multiplexed = await this._multiplexOutbound({\n ...protectedConn,\n ...encryptedConn\n }, this.muxers);\n muxerFactory = multiplexed.muxerFactory;\n upgradedConn = multiplexed.stream;\n }\n }\n catch (err) {\n maConn.log.error('failed to upgrade outbound connection', err);\n await maConn.close(err);\n throw err;\n }\n await this.shouldBlockConnection(remotePeer, maConn, 'denyOutboundUpgradedConnection');\n maConn.log('successfully upgraded outbound connection');\n return this._createConnection({\n cryptoProtocol,\n direction: 'outbound',\n maConn,\n upgradedConn,\n muxerFactory,\n remotePeer,\n transient: opts?.transient\n });\n }\n /**\n * A convenience method for generating a new `Connection`\n */\n _createConnection(opts) {\n const { cryptoProtocol, direction, maConn, upgradedConn, remotePeer, muxerFactory, transient } = opts;\n let muxer;\n let newStream;\n let connection; // eslint-disable-line prefer-const\n if (muxerFactory != null) {\n // Create the muxer\n muxer = muxerFactory.createStreamMuxer({\n direction,\n // Run anytime a remote stream is created\n onIncomingStream: muxedStream => {\n if (connection == null) {\n return;\n }\n void Promise.resolve()\n .then(async () => {\n const protocols = this.components.registrar.getProtocols();\n const { stream, protocol } = await mss.handle(muxedStream, protocols, {\n log: muxedStream.log,\n yieldBytes: false\n });\n if (connection == null) {\n return;\n }\n connection.log('incoming stream opened on %s', protocol);\n const incomingLimit = findIncomingStreamLimit(protocol, this.components.registrar);\n const streamCount = countStreams(protocol, 'inbound', connection);\n if (streamCount === incomingLimit) {\n const err = new CodeError(`Too many inbound protocol streams for protocol \"${protocol}\" - limit ${incomingLimit}`, codes.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);\n muxedStream.abort(err);\n throw err;\n }\n // after the handshake the returned stream can have early data so override\n // the souce/sink\n muxedStream.source = stream.source;\n muxedStream.sink = stream.sink;\n muxedStream.protocol = protocol;\n // allow closing the write end of a not-yet-negotiated stream\n if (stream.closeWrite != null) {\n muxedStream.closeWrite = stream.closeWrite;\n }\n // allow closing the read end of a not-yet-negotiated stream\n if (stream.closeRead != null) {\n muxedStream.closeRead = stream.closeRead;\n }\n // make sure we don't try to negotiate a stream we are closing\n if (stream.close != null) {\n muxedStream.close = stream.close;\n }\n // If a protocol stream has been successfully negotiated and is to be passed to the application,\n // the peerstore should ensure that the peer is registered with that protocol\n await this.components.peerStore.merge(remotePeer, {\n protocols: [protocol]\n });\n this.components.metrics?.trackProtocolStream(muxedStream, connection);\n this._onStream({ connection, stream: muxedStream, protocol });\n })\n .catch(async (err) => {\n connection.log.error('error handling incoming stream id %s', muxedStream.id, err.message, err.code, err.stack);\n if (muxedStream.timeline.close == null) {\n await muxedStream.close();\n }\n });\n }\n });\n newStream = async (protocols, options = {}) => {\n if (muxer == null) {\n throw new CodeError('Stream is not multiplexed', codes.ERR_MUXER_UNAVAILABLE);\n }\n connection.log('starting new stream for protocols %s', protocols);\n const muxedStream = await muxer.newStream();\n connection.log.trace('started new stream %s for protocols %s', muxedStream.id, protocols);\n try {\n if (options.signal == null) {\n muxedStream.log('no abort signal was passed while trying to negotiate protocols %s falling back to default timeout', protocols);\n const signal = AbortSignal.timeout(DEFAULT_PROTOCOL_SELECT_TIMEOUT);\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n muxedStream.log.trace('selecting protocol from protocols %s', protocols);\n const { stream, protocol } = await mss.select(muxedStream, protocols, {\n ...options,\n log: muxedStream.log,\n yieldBytes: true\n });\n muxedStream.log('selected protocol %s', protocol);\n const outgoingLimit = findOutgoingStreamLimit(protocol, this.components.registrar, options);\n const streamCount = countStreams(protocol, 'outbound', connection);\n if (streamCount >= outgoingLimit) {\n const err = new CodeError(`Too many outbound protocol streams for protocol \"${protocol}\" - ${streamCount}/${outgoingLimit}`, codes.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);\n muxedStream.abort(err);\n throw err;\n }\n // If a protocol stream has been successfully negotiated and is to be passed to the application,\n // the peerstore should ensure that the peer is registered with that protocol\n await this.components.peerStore.merge(remotePeer, {\n protocols: [protocol]\n });\n // after the handshake the returned stream can have early data so override\n // the souce/sink\n muxedStream.source = stream.source;\n muxedStream.sink = stream.sink;\n muxedStream.protocol = protocol;\n // allow closing the write end of a not-yet-negotiated stream\n if (stream.closeWrite != null) {\n muxedStream.closeWrite = stream.closeWrite;\n }\n // allow closing the read end of a not-yet-negotiated stream\n if (stream.closeRead != null) {\n muxedStream.closeRead = stream.closeRead;\n }\n // make sure we don't try to negotiate a stream we are closing\n if (stream.close != null) {\n muxedStream.close = stream.close;\n }\n this.components.metrics?.trackProtocolStream(muxedStream, connection);\n return muxedStream;\n }\n catch (err) {\n connection.log.error('could not create new stream for protocols %s', protocols, err);\n if (muxedStream.timeline.close == null) {\n muxedStream.abort(err);\n }\n if (err.code != null) {\n throw err;\n }\n throw new CodeError(String(err), codes.ERR_UNSUPPORTED_PROTOCOL);\n }\n };\n // Pipe all data through the muxer\n void Promise.all([\n muxer.sink(upgradedConn.source),\n upgradedConn.sink(muxer.source)\n ]).catch(err => {\n connection.log.error('error piping data through muxer', err);\n });\n }\n const _timeline = maConn.timeline;\n maConn.timeline = new Proxy(_timeline, {\n set: (...args) => {\n if (connection != null && args[1] === 'close' && args[2] != null && _timeline.close == null) {\n // Wait for close to finish before notifying of the closure\n (async () => {\n try {\n if (connection.status === 'open') {\n await connection.close();\n }\n }\n catch (err) {\n connection.log.error('error closing connection after timeline close', err);\n }\n finally {\n this.events.safeDispatchEvent('connection:close', {\n detail: connection\n });\n }\n })().catch(err => {\n connection.log.error('error thrown while dispatching connection:close event', err);\n });\n }\n return Reflect.set(...args);\n }\n });\n maConn.timeline.upgraded = Date.now();\n const errConnectionNotMultiplexed = () => {\n throw new CodeError('connection is not multiplexed', codes.ERR_CONNECTION_NOT_MULTIPLEXED);\n };\n // Create the connection\n connection = createConnection({\n remoteAddr: maConn.remoteAddr,\n remotePeer,\n status: 'open',\n direction,\n timeline: maConn.timeline,\n multiplexer: muxer?.protocol,\n encryption: cryptoProtocol,\n transient,\n logger: this.components.logger,\n newStream: newStream ?? errConnectionNotMultiplexed,\n getStreams: () => { if (muxer != null) {\n return muxer.streams;\n }\n else {\n return [];\n } },\n close: async (options) => {\n // Ensure remaining streams are closed gracefully\n if (muxer != null) {\n connection.log.trace('close muxer');\n await muxer.close(options);\n }\n connection.log.trace('close maconn');\n // close the underlying transport\n await maConn.close(options);\n connection.log.trace('closed maconn');\n },\n abort: (err) => {\n maConn.abort(err);\n // Ensure remaining streams are aborted\n if (muxer != null) {\n muxer.abort(err);\n }\n }\n });\n this.events.safeDispatchEvent('connection:open', {\n detail: connection\n });\n return connection;\n }\n /**\n * Routes incoming streams to the correct handler\n */\n _onStream(opts) {\n const { connection, stream, protocol } = opts;\n const { handler, options } = this.components.registrar.getHandler(protocol);\n if (connection.transient && options.runOnTransientConnection !== true) {\n throw new CodeError('Cannot open protocol stream on transient connection', 'ERR_TRANSIENT_CONNECTION');\n }\n handler({ connection, stream });\n }\n /**\n * Attempts to encrypt the incoming `connection` with the provided `cryptos`\n */\n async _encryptInbound(connection) {\n const protocols = Array.from(this.connectionEncryption.keys());\n connection.log('handling inbound crypto protocol selection', protocols);\n try {\n const { stream, protocol } = await mss.handle(connection, protocols, {\n log: connection.log\n });\n const encrypter = this.connectionEncryption.get(protocol);\n if (encrypter == null) {\n throw new Error(`no crypto module found for ${protocol}`);\n }\n connection.log('encrypting inbound connection using', protocol);\n return {\n ...await encrypter.secureInbound(this.components.peerId, stream),\n protocol\n };\n }\n catch (err) {\n connection.log.error('encrypting inbound connection failed', err);\n throw new CodeError(err.message, codes.ERR_ENCRYPTION_FAILED);\n }\n }\n /**\n * Attempts to encrypt the given `connection` with the provided connection encrypters.\n * The first `ConnectionEncrypter` module to succeed will be used\n */\n async _encryptOutbound(connection, remotePeerId) {\n const protocols = Array.from(this.connectionEncryption.keys());\n connection.log('selecting outbound crypto protocol', protocols);\n try {\n connection.log.trace('selecting encrypter from %s', protocols);\n const { stream, protocol } = await mss.select(connection, protocols, {\n log: connection.log,\n yieldBytes: true\n });\n const encrypter = this.connectionEncryption.get(protocol);\n if (encrypter == null) {\n throw new Error(`no crypto module found for ${protocol}`);\n }\n connection.log('encrypting outbound connection to %p using %s', remotePeerId, encrypter);\n return {\n ...await encrypter.secureOutbound(this.components.peerId, stream, remotePeerId),\n protocol\n };\n }\n catch (err) {\n connection.log.error('encrypting outbound connection to %p failed', remotePeerId, err);\n throw new CodeError(err.message, codes.ERR_ENCRYPTION_FAILED);\n }\n }\n /**\n * Selects one of the given muxers via multistream-select. That\n * muxer will be used for all future streams on the connection.\n */\n async _multiplexOutbound(connection, muxers) {\n const protocols = Array.from(muxers.keys());\n connection.log('outbound selecting muxer %s', protocols);\n try {\n connection.log.trace('selecting stream muxer from %s', protocols);\n const { stream, protocol } = await mss.select(connection, protocols, {\n log: connection.log,\n yieldBytes: true\n });\n connection.log('selected %s as muxer protocol', protocol);\n const muxerFactory = muxers.get(protocol);\n return { stream, muxerFactory };\n }\n catch (err) {\n connection.log.error('error multiplexing outbound connection', err);\n throw new CodeError(String(err), codes.ERR_MUXER_UNAVAILABLE);\n }\n }\n /**\n * Registers support for one of the given muxers via multistream-select. The\n * selected muxer will be used for all future streams on the connection.\n */\n async _multiplexInbound(connection, muxers) {\n const protocols = Array.from(muxers.keys());\n connection.log('inbound handling muxers %s', protocols);\n try {\n const { stream, protocol } = await mss.handle(connection, protocols, {\n log: connection.log\n });\n const muxerFactory = muxers.get(protocol);\n return { stream, muxerFactory };\n }\n catch (err) {\n connection.log.error('error multiplexing inbound connection', err);\n throw new CodeError(String(err), codes.ERR_MUXER_UNAVAILABLE);\n }\n }\n}\n//# sourceMappingURL=upgrader.js.map","import { unmarshalPrivateKey, unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { contentRoutingSymbol, CodeError, TypedEventEmitter, CustomEvent, setMaxListeners, peerDiscoverySymbol, peerRoutingSymbol } from '@libp2p/interface';\nimport { defaultLogger } from '@libp2p/logger';\nimport { PeerSet } from '@libp2p/peer-collections';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { createEd25519PeerId } from '@libp2p/peer-id-factory';\nimport { PersistentPeerStore } from '@libp2p/peer-store';\nimport { isMultiaddr } from '@multiformats/multiaddr';\nimport { MemoryDatastore } from 'datastore-core/memory';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { DefaultAddressManager } from './address-manager/index.js';\nimport { checkServiceDependencies, defaultComponents } from './components.js';\nimport { connectionGater } from './config/connection-gater.js';\nimport { validateConfig } from './config.js';\nimport { DefaultConnectionManager } from './connection-manager/index.js';\nimport { ConnectionMonitor } from './connection-monitor.js';\nimport { CompoundContentRouting } from './content-routing.js';\nimport { codes } from './errors.js';\nimport { DefaultPeerRouting } from './peer-routing.js';\nimport { RandomWalk } from './random-walk.js';\nimport { DefaultRegistrar } from './registrar.js';\nimport { DefaultTransportManager } from './transport-manager.js';\nimport { DefaultUpgrader } from './upgrader.js';\nimport * as pkg from './version.js';\nexport class Libp2pNode extends TypedEventEmitter {\n peerId;\n peerStore;\n contentRouting;\n peerRouting;\n metrics;\n services;\n logger;\n status;\n components;\n log;\n constructor(init) {\n super();\n this.status = 'stopped';\n // event bus - components can listen to this emitter to be notified of system events\n // and also cause them to be emitted\n const events = new TypedEventEmitter();\n const originalDispatch = events.dispatchEvent.bind(events);\n events.dispatchEvent = (evt) => {\n const internalResult = originalDispatch(evt);\n const externalResult = this.dispatchEvent(new CustomEvent(evt.type, { detail: evt.detail }));\n return internalResult || externalResult;\n };\n // This emitter gets listened to a lot\n setMaxListeners(Infinity, events);\n this.peerId = init.peerId;\n this.logger = init.logger ?? defaultLogger();\n this.log = this.logger.forComponent('libp2p');\n // @ts-expect-error {} may not be of type T\n this.services = {};\n // @ts-expect-error defaultComponents is missing component types added later\n const components = this.components = defaultComponents({\n peerId: init.peerId,\n privateKey: init.privateKey,\n nodeInfo: init.nodeInfo ?? {\n name: pkg.name,\n version: pkg.version\n },\n logger: this.logger,\n events,\n datastore: init.datastore ?? new MemoryDatastore(),\n connectionGater: connectionGater(init.connectionGater),\n dns: init.dns\n });\n this.peerStore = this.configureComponent('peerStore', new PersistentPeerStore(components, {\n addressFilter: this.components.connectionGater.filterMultiaddrForPeer,\n ...init.peerStore\n }));\n // Create Metrics\n if (init.metrics != null) {\n this.metrics = this.configureComponent('metrics', init.metrics(this.components));\n }\n components.events.addEventListener('peer:update', evt => {\n // if there was no peer previously in the peer store this is a new peer\n if (evt.detail.previous == null) {\n const peerInfo = {\n id: evt.detail.peer.id,\n multiaddrs: evt.detail.peer.addresses.map(a => a.multiaddr)\n };\n components.events.safeDispatchEvent('peer:discovery', { detail: peerInfo });\n }\n });\n // Set up connection protector if configured\n if (init.connectionProtector != null) {\n this.configureComponent('connectionProtector', init.connectionProtector(components));\n }\n // Set up the Upgrader\n this.components.upgrader = new DefaultUpgrader(this.components, {\n connectionEncryption: (init.connectionEncryption ?? []).map((fn, index) => this.configureComponent(`connection-encryption-${index}`, fn(this.components))),\n muxers: (init.streamMuxers ?? []).map((fn, index) => this.configureComponent(`stream-muxers-${index}`, fn(this.components))),\n inboundUpgradeTimeout: init.connectionManager?.inboundUpgradeTimeout\n });\n // Setup the transport manager\n this.configureComponent('transportManager', new DefaultTransportManager(this.components, init.transportManager));\n // Create the Connection Manager\n this.configureComponent('connectionManager', new DefaultConnectionManager(this.components, init.connectionManager));\n if (init.connectionMonitor?.enabled !== false) {\n // Create the Connection Monitor if not disabled\n this.configureComponent('connectionMonitor', new ConnectionMonitor(this.components, init.connectionMonitor));\n }\n // Create the Registrar\n this.configureComponent('registrar', new DefaultRegistrar(this.components));\n // Addresses {listen, announce, noAnnounce}\n this.configureComponent('addressManager', new DefaultAddressManager(this.components, init.addresses));\n // Peer routers\n const peerRouters = (init.peerRouters ?? []).map((fn, index) => this.configureComponent(`peer-router-${index}`, fn(this.components)));\n this.peerRouting = this.components.peerRouting = this.configureComponent('peerRouting', new DefaultPeerRouting(this.components, {\n routers: peerRouters\n }));\n // Content routers\n const contentRouters = (init.contentRouters ?? []).map((fn, index) => this.configureComponent(`content-router-${index}`, fn(this.components)));\n this.contentRouting = this.components.contentRouting = this.configureComponent('contentRouting', new CompoundContentRouting(this.components, {\n routers: contentRouters\n }));\n // Random walk\n this.configureComponent('randomWalk', new RandomWalk(this.components));\n (init.peerDiscovery ?? []).forEach((fn, index) => {\n const service = this.configureComponent(`peer-discovery-${index}`, fn(this.components));\n service.addEventListener('peer', (evt) => {\n this.#onDiscoveryPeer(evt);\n });\n });\n // Transport modules\n init.transports?.forEach((fn, index) => {\n this.components.transportManager.add(this.configureComponent(`transport-${index}`, fn(this.components)));\n });\n // User defined modules\n if (init.services != null) {\n for (const name of Object.keys(init.services)) {\n const createService = init.services[name];\n const service = createService(this.components);\n if (service == null) {\n this.log.error('service factory %s returned null or undefined instance', name);\n continue;\n }\n this.services[name] = service;\n this.configureComponent(name, service);\n if (service[contentRoutingSymbol] != null) {\n this.log('registering service %s for content routing', name);\n contentRouters.push(service[contentRoutingSymbol]);\n }\n if (service[peerRoutingSymbol] != null) {\n this.log('registering service %s for peer routing', name);\n peerRouters.push(service[peerRoutingSymbol]);\n }\n if (service[peerDiscoverySymbol] != null) {\n this.log('registering service %s for peer discovery', name);\n service[peerDiscoverySymbol].addEventListener?.('peer', (evt) => {\n this.#onDiscoveryPeer(evt);\n });\n }\n }\n }\n // Ensure all services have their required dependencies\n checkServiceDependencies(components);\n }\n configureComponent(name, component) {\n if (component == null) {\n this.log.error('component %s was null or undefined', name);\n }\n // @ts-expect-error cannot assign props\n this.components[name] = component;\n return component;\n }\n /**\n * Starts the libp2p node and all its subsystems\n */\n async start() {\n if (this.status !== 'stopped') {\n return;\n }\n this.status = 'starting';\n this.log('libp2p is starting');\n try {\n await this.components.beforeStart?.();\n await this.components.start();\n await this.components.afterStart?.();\n this.status = 'started';\n this.safeDispatchEvent('start', { detail: this });\n this.log('libp2p has started');\n }\n catch (err) {\n this.log.error('An error occurred starting libp2p', err);\n // set status to 'started' so this.stop() will stop any running components\n this.status = 'started';\n await this.stop();\n throw err;\n }\n }\n /**\n * Stop the libp2p node by closing its listeners and open connections\n */\n async stop() {\n if (this.status !== 'started') {\n return;\n }\n this.log('libp2p is stopping');\n this.status = 'stopping';\n await this.components.beforeStop?.();\n await this.components.stop();\n await this.components.afterStop?.();\n this.status = 'stopped';\n this.safeDispatchEvent('stop', { detail: this });\n this.log('libp2p has stopped');\n }\n getConnections(peerId) {\n return this.components.connectionManager.getConnections(peerId);\n }\n getDialQueue() {\n return this.components.connectionManager.getDialQueue();\n }\n getPeers() {\n const peerSet = new PeerSet();\n for (const conn of this.components.connectionManager.getConnections()) {\n peerSet.add(conn.remotePeer);\n }\n return Array.from(peerSet);\n }\n async dial(peer, options = {}) {\n return this.components.connectionManager.openConnection(peer, {\n // ensure any userland dials take top priority in the queue\n priority: 75,\n ...options\n });\n }\n async dialProtocol(peer, protocols, options = {}) {\n if (protocols == null) {\n throw new CodeError('no protocols were provided to open a stream', codes.ERR_INVALID_PROTOCOLS_FOR_STREAM);\n }\n protocols = Array.isArray(protocols) ? protocols : [protocols];\n if (protocols.length === 0) {\n throw new CodeError('no protocols were provided to open a stream', codes.ERR_INVALID_PROTOCOLS_FOR_STREAM);\n }\n const connection = await this.dial(peer, options);\n return connection.newStream(protocols, options);\n }\n getMultiaddrs() {\n return this.components.addressManager.getAddresses();\n }\n getProtocols() {\n return this.components.registrar.getProtocols();\n }\n async hangUp(peer, options = {}) {\n if (isMultiaddr(peer)) {\n peer = peerIdFromString(peer.getPeerId() ?? '');\n }\n await this.components.connectionManager.closeConnections(peer, options);\n }\n /**\n * Get the public key for the given peer id\n */\n async getPublicKey(peer, options = {}) {\n this.log('getPublicKey %p', peer);\n if (peer.publicKey != null) {\n return peer.publicKey;\n }\n try {\n const peerInfo = await this.peerStore.get(peer);\n if (peerInfo.id.publicKey != null) {\n return peerInfo.id.publicKey;\n }\n }\n catch (err) {\n if (err.code !== codes.ERR_NOT_FOUND) {\n throw err;\n }\n }\n const peerKey = uint8ArrayConcat([\n uint8ArrayFromString('/pk/'),\n peer.multihash.digest\n ]);\n // search any available content routing methods\n const bytes = await this.contentRouting.get(peerKey, options);\n // ensure the returned key is valid\n unmarshalPublicKey(bytes);\n await this.peerStore.patch(peer, {\n publicKey: bytes\n });\n return bytes;\n }\n async handle(protocols, handler, options) {\n if (!Array.isArray(protocols)) {\n protocols = [protocols];\n }\n await Promise.all(protocols.map(async (protocol) => {\n await this.components.registrar.handle(protocol, handler, options);\n }));\n }\n async unhandle(protocols) {\n if (!Array.isArray(protocols)) {\n protocols = [protocols];\n }\n await Promise.all(protocols.map(async (protocol) => {\n await this.components.registrar.unhandle(protocol);\n }));\n }\n async register(protocol, topology) {\n return this.components.registrar.register(protocol, topology);\n }\n unregister(id) {\n this.components.registrar.unregister(id);\n }\n async isDialable(multiaddr, options = {}) {\n return this.components.connectionManager.isDialable(multiaddr, options);\n }\n /**\n * Called whenever peer discovery services emit `peer` events and adds peers\n * to the peer store.\n */\n #onDiscoveryPeer(evt) {\n const { detail: peer } = evt;\n if (peer.id.toString() === this.peerId.toString()) {\n this.log.error(new Error(codes.ERR_DISCOVERED_SELF));\n return;\n }\n void this.components.peerStore.merge(peer.id, {\n multiaddrs: peer.multiaddrs\n })\n .catch(err => { this.log.error(err); });\n }\n}\n/**\n * Returns a new Libp2pNode instance - this exposes more of the internals than the\n * libp2p interface and is useful for testing and debugging.\n */\nexport async function createLibp2pNode(options = {}) {\n const peerId = options.peerId ??= await createEd25519PeerId();\n if (peerId.privateKey == null) {\n throw new CodeError('peer id was missing private key', 'ERR_MISSING_PRIVATE_KEY');\n }\n options.privateKey ??= await unmarshalPrivateKey(peerId.privateKey);\n return new Libp2pNode(await validateConfig(options));\n}\n//# sourceMappingURL=libp2p.js.map","/**\n * @packageDocumentation\n *\n * Use the `createLibp2p` function to create a libp2p node.\n *\n * @example\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n *\n * const node = await createLibp2p({\n * // ...other options\n * })\n * ```\n */\nimport { createLibp2pNode } from './libp2p.js';\n/**\n * Returns a new instance of the Libp2p interface, generating a new PeerId\n * if one is not passed as part of the options.\n *\n * The node will be started unless `start: false` is passed as an option.\n *\n * @example\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { tcp } from '@libp2p/tcp'\n * import { mplex } from '@libp2p/mplex'\n * import { noise } from '@chainsafe/libp2p-noise'\n * import { yamux } from '@chainsafe/libp2p-yamux'\n *\n * // specify options\n * const options = {\n * transports: [tcp()],\n * streamMuxers: [yamux(), mplex()],\n * connectionEncryption: [noise()]\n * }\n *\n * // create libp2p\n * const libp2p = await createLibp2p(options)\n * ```\n */\nexport async function createLibp2p(options = {}) {\n const node = await createLibp2pNode(options);\n if (options.start !== false) {\n await node.start();\n }\n return node;\n}\n//# sourceMappingURL=index.js.map","import { keychain } from '@libp2p/keychain';\nimport { defaultLogger } from '@libp2p/logger';\nimport { Key } from 'interface-datastore';\nimport { createLibp2p as create } from 'libp2p';\nimport { libp2pDefaults } from './libp2p-defaults.js';\nexport async function createLibp2p(options) {\n let peerId = options.libp2p?.peerId;\n const logger = options.logger ?? defaultLogger();\n // if no peer id was passed, try to load it from the keychain\n if (peerId == null) {\n const chain = keychain(options.keychain)({\n datastore: options.datastore,\n logger\n });\n const selfKey = new Key('/pkcs8/self');\n if (await options.datastore.has(selfKey)) {\n // load the peer id from the keychain\n peerId = await chain.exportPeerId('self');\n }\n }\n const defaults = libp2pDefaults(options);\n options = options ?? {};\n // @ts-expect-error derived ServiceMap is not compatible with ServiceFactoryMap\n return create({\n ...defaults,\n ...options.libp2p,\n start: false\n });\n}\n//# sourceMappingURL=libp2p.js.map","/**\n * @packageDocumentation\n *\n * Exports a `createHelia` function that returns an object that implements the {@link Helia} API.\n *\n * Pass it to other modules like {@link https://www.npmjs.com/package/@helia/unixfs | @helia/unixfs} to make files available on the distributed web.\n *\n * @example\n *\n * ```typescript\n * import { createHelia } from 'helia'\n * import { unixfs } from '@helia/unixfs'\n * import { CID } from 'multiformats/cid'\n *\n * const helia = await createHelia()\n *\n * const fs = unixfs(helia)\n * fs.cat(CID.parse('bafyFoo'))\n * ```\n */\nimport { MemoryBlockstore } from 'blockstore-core';\nimport { MemoryDatastore } from 'datastore-core';\nimport { HeliaImpl } from './helia.js';\nimport { libp2pDefaults } from './utils/libp2p-defaults.js';\nimport { createLibp2p } from './utils/libp2p.js';\n// re-export interface types so people don't have to depend on @helia/interface\n// if they don't want to\nexport * from '@helia/interface';\nexport * from '@helia/interface/blocks';\nexport * from '@helia/interface/pins';\nexport { libp2pDefaults };\nexport async function createHelia(init = {}) {\n const datastore = init.datastore ?? new MemoryDatastore();\n const blockstore = init.blockstore ?? new MemoryBlockstore();\n let libp2p;\n if (isLibp2p(init.libp2p)) {\n libp2p = init.libp2p;\n }\n else {\n libp2p = await createLibp2p({\n ...init,\n libp2p: init.libp2p,\n datastore\n });\n }\n const helia = new HeliaImpl({\n ...init,\n libp2p,\n datastore,\n blockstore\n });\n if (init.start !== false) {\n await helia.start();\n }\n return helia;\n}\nfunction isLibp2p(obj) {\n if (obj == null) {\n return false;\n }\n // a non-exhaustive list of methods found on the libp2p object\n const funcs = ['dial', 'dialProtocol', 'hangUp', 'handle', 'unhandle', 'getMultiaddrs', 'getProtocols'];\n // if these are all functions it's probably a libp2p object\n return funcs.every(m => typeof obj[m] === 'function');\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * A Blockstore implementation that uses a flavour of [Level](https://leveljs.org/) as a backend.\n *\n * N.b. this is here largely for the sake of completeness, in node you should probably use FSDatastore, in browsers you should probably use IDBDatastore.\n *\n * @example\n *\n * ```js\n * import { LevelBlockstore } from 'blockstore-level'\n *\n * const store = new LevelBlockstore('path/to/store')\n * ```\n */\nimport { BaseBlockstore, Errors } from 'blockstore-core';\nimport { Level } from 'level';\nimport { base32upper } from 'multiformats/bases/base32';\nimport { CID } from 'multiformats/cid';\nimport * as raw from 'multiformats/codecs/raw';\nimport * as Digest from 'multiformats/hashes/digest';\n/**\n * A blockstore backed by leveldb\n */\nexport class LevelBlockstore extends BaseBlockstore {\n db;\n opts;\n base;\n constructor(path, init = {}) {\n super();\n this.db = typeof path === 'string'\n ? new Level(path, {\n ...init,\n keyEncoding: 'utf8',\n valueEncoding: 'view'\n })\n : path;\n this.opts = {\n createIfMissing: true,\n compression: false, // same default as go\n ...init\n };\n this.base = init.base ?? base32upper;\n }\n #encode(cid) {\n return `/${this.base.encoder.encode(cid.multihash.bytes)}`;\n }\n #decode(key) {\n return CID.createV1(raw.code, Digest.decode(this.base.decoder.decode(key.substring(1))));\n }\n async open() {\n try {\n await this.db.open(this.opts);\n }\n catch (err) {\n throw Errors.openFailedError(err);\n }\n }\n async put(key, value) {\n try {\n await this.db.put(this.#encode(key), value);\n return key;\n }\n catch (err) {\n throw Errors.putFailedError(err);\n }\n }\n async get(key) {\n let data;\n try {\n data = await this.db.get(this.#encode(key));\n }\n catch (err) {\n if (err.notFound != null) {\n throw Errors.notFoundError(err);\n }\n throw Errors.getFailedError(err);\n }\n return data;\n }\n async has(key) {\n try {\n await this.db.get(this.#encode(key));\n }\n catch (err) {\n if (err.notFound != null) {\n return false;\n }\n throw err;\n }\n return true;\n }\n async delete(key) {\n try {\n await this.db.del(this.#encode(key));\n }\n catch (err) {\n throw Errors.deleteFailedError(err);\n }\n }\n async close() {\n await this.db.close();\n }\n async *getAll(options) {\n for await (const { key, value } of this.#query({ values: true })) {\n yield { cid: this.#decode(key), block: value };\n }\n }\n async *#query(opts) {\n const iteratorOpts = {\n keys: true,\n keyEncoding: 'buffer',\n values: opts.values\n };\n // Let the db do the prefix matching\n if (opts.prefix != null) {\n const prefix = opts.prefix.toString();\n // Match keys greater than or equal to `prefix` and\n iteratorOpts.gte = prefix;\n // less than `prefix` + \\xFF (hex escape sequence)\n iteratorOpts.lt = prefix + '\\xFF';\n }\n const li = this.db.iterator(iteratorOpts);\n try {\n for await (const [key, value] of li) {\n // @ts-expect-error key is a buffer because keyEncoding is \"buffer\"\n yield { key: new TextDecoder().decode(key), value };\n }\n }\n finally {\n await li.close();\n }\n }\n}\n//# sourceMappingURL=index.js.map","export const PROTOCOL_VERSION = 'ipfs/0.1.0'; // deprecated\nexport const MULTICODEC_IDENTIFY = '/ipfs/id/1.0.0'; // deprecated\nexport const MULTICODEC_IDENTIFY_PUSH = '/ipfs/id/push/1.0.0'; // deprecated\nexport const IDENTIFY_PROTOCOL_VERSION = '0.1.0';\nexport const MULTICODEC_IDENTIFY_PROTOCOL_NAME = 'id';\nexport const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME = 'id/push';\nexport const MULTICODEC_IDENTIFY_PROTOCOL_VERSION = '1.0.0';\nexport const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION = '1.0.0';\n// https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/identify/id.go#L52\nexport const MAX_IDENTIFY_MESSAGE_SIZE = 1024 * 8;\n// https://github.com/libp2p/go-libp2p/blob/0385ec924bad172f74a74db09939e97c079b1420/p2p/protocol/identify/id.go#L47C7-L47C25\nexport const MAX_PUSH_CONCURRENCY = 32;\n//# sourceMappingURL=consts.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Identify;\n(function (Identify) {\n let _codec;\n Identify.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.protocolVersion != null) {\n w.uint32(42);\n w.string(obj.protocolVersion);\n }\n if (obj.agentVersion != null) {\n w.uint32(50);\n w.string(obj.agentVersion);\n }\n if (obj.publicKey != null) {\n w.uint32(10);\n w.bytes(obj.publicKey);\n }\n if (obj.listenAddrs != null) {\n for (const value of obj.listenAddrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (obj.observedAddr != null) {\n w.uint32(34);\n w.bytes(obj.observedAddr);\n }\n if (obj.protocols != null) {\n for (const value of obj.protocols) {\n w.uint32(26);\n w.string(value);\n }\n }\n if (obj.signedPeerRecord != null) {\n w.uint32(66);\n w.bytes(obj.signedPeerRecord);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n listenAddrs: [],\n protocols: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 5:\n obj.protocolVersion = reader.string();\n break;\n case 6:\n obj.agentVersion = reader.string();\n break;\n case 1:\n obj.publicKey = reader.bytes();\n break;\n case 2:\n obj.listenAddrs.push(reader.bytes());\n break;\n case 4:\n obj.observedAddr = reader.bytes();\n break;\n case 3:\n obj.protocols.push(reader.string());\n break;\n case 8:\n obj.signedPeerRecord = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Identify.encode = (obj) => {\n return encodeMessage(obj, Identify.codec());\n };\n Identify.decode = (buf) => {\n return decodeMessage(buf, Identify.codec());\n };\n})(Identify || (Identify = {}));\n//# sourceMappingURL=message.js.map","import { CodeError } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { isNode, isBrowser, isWebWorker, isElectronMain, isElectronRenderer, isReactNative } from 'wherearewe';\nimport { IDENTIFY_PROTOCOL_VERSION, MAX_IDENTIFY_MESSAGE_SIZE, MAX_PUSH_CONCURRENCY } from './consts.js';\nexport const defaultValues = {\n protocolPrefix: 'ipfs',\n timeout: 5000,\n maxInboundStreams: 1,\n maxOutboundStreams: 1,\n maxObservedAddresses: 10,\n maxMessageSize: MAX_IDENTIFY_MESSAGE_SIZE,\n runOnConnectionOpen: true,\n runOnSelfUpdate: true,\n runOnTransientConnection: true,\n concurrency: MAX_PUSH_CONCURRENCY\n};\n/**\n * Takes the `addr` and converts it to a Multiaddr if possible\n */\nexport function getCleanMultiaddr(addr) {\n if (addr != null && addr.length > 0) {\n try {\n return multiaddr(addr);\n }\n catch {\n }\n }\n}\nexport function getAgentVersion(nodeInfo, agentVersion) {\n if (agentVersion != null) {\n return agentVersion;\n }\n agentVersion = `${nodeInfo.name}/${nodeInfo.version}`;\n // Append user agent version to default AGENT_VERSION depending on the environment\n if (isNode || isElectronMain) {\n agentVersion += ` UserAgent=${globalThis.process.version}`;\n }\n else if (isBrowser || isWebWorker || isElectronRenderer || isReactNative) {\n agentVersion += ` UserAgent=${globalThis.navigator.userAgent}`;\n }\n return agentVersion;\n}\nexport async function consumeIdentifyMessage(peerStore, events, log, connection, message) {\n log('received identify from %p', connection.remotePeer);\n if (message == null) {\n throw new CodeError('message was null or undefined', 'ERR_INVALID_MESSAGE');\n }\n const peer = {};\n if (message.listenAddrs.length > 0) {\n peer.addresses = message.listenAddrs.map(buf => ({\n isCertified: false,\n multiaddr: multiaddr(buf)\n }));\n }\n if (message.protocols.length > 0) {\n peer.protocols = message.protocols;\n }\n if (message.publicKey != null) {\n peer.publicKey = message.publicKey;\n const peerId = await peerIdFromKeys(message.publicKey);\n if (!peerId.equals(connection.remotePeer)) {\n throw new CodeError('public key did not match remote PeerId', 'ERR_INVALID_PUBLIC_KEY');\n }\n }\n let output;\n // if the peer record has been sent, prefer the addresses in the record as they are signed by the remote peer\n if (message.signedPeerRecord != null) {\n log('received signedPeerRecord from %p', connection.remotePeer);\n let peerRecordEnvelope = message.signedPeerRecord;\n const envelope = await RecordEnvelope.openAndCertify(peerRecordEnvelope, PeerRecord.DOMAIN);\n let peerRecord = PeerRecord.createFromProtobuf(envelope.payload);\n // Verify peerId\n if (!peerRecord.peerId.equals(envelope.peerId)) {\n throw new CodeError('signing key does not match PeerId in the PeerRecord', 'ERR_INVALID_SIGNING_KEY');\n }\n // Make sure remote peer is the one sending the record\n if (!connection.remotePeer.equals(peerRecord.peerId)) {\n throw new CodeError('signing key does not match remote PeerId', 'ERR_INVALID_PEER_RECORD_KEY');\n }\n let existingPeer;\n try {\n existingPeer = await peerStore.get(peerRecord.peerId);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n if (existingPeer != null) {\n // don't lose any existing metadata\n peer.metadata = existingPeer.metadata;\n // if we have previously received a signed record for this peer, compare it to the incoming one\n if (existingPeer.peerRecordEnvelope != null) {\n const storedEnvelope = await RecordEnvelope.createFromProtobuf(existingPeer.peerRecordEnvelope);\n const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);\n // ensure seq is greater than, or equal to, the last received\n if (storedRecord.seqNumber >= peerRecord.seqNumber) {\n log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);\n peerRecord = storedRecord;\n peerRecordEnvelope = existingPeer.peerRecordEnvelope;\n }\n }\n }\n // store the signed record for next time\n peer.peerRecordEnvelope = peerRecordEnvelope;\n // override the stored addresses with the signed multiaddrs\n peer.addresses = peerRecord.multiaddrs.map(multiaddr => ({\n isCertified: true,\n multiaddr\n }));\n output = {\n seq: peerRecord.seqNumber,\n addresses: peerRecord.multiaddrs\n };\n }\n else {\n log('%p did not send a signed peer record', connection.remotePeer);\n }\n log('patching %p with', connection.remotePeer, peer);\n await peerStore.patch(connection.remotePeer, peer);\n if (message.agentVersion != null || message.protocolVersion != null) {\n const metadata = {};\n if (message.agentVersion != null) {\n metadata.AgentVersion = uint8ArrayFromString(message.agentVersion);\n }\n if (message.protocolVersion != null) {\n metadata.ProtocolVersion = uint8ArrayFromString(message.protocolVersion);\n }\n log('merging %p metadata', connection.remotePeer, metadata);\n await peerStore.merge(connection.remotePeer, {\n metadata\n });\n }\n const result = {\n peerId: connection.remotePeer,\n protocolVersion: message.protocolVersion,\n agentVersion: message.agentVersion,\n publicKey: message.publicKey,\n listenAddrs: message.listenAddrs.map(buf => multiaddr(buf)),\n observedAddr: message.observedAddr == null ? undefined : multiaddr(message.observedAddr),\n protocols: message.protocols,\n signedPeerRecord: output,\n connection\n };\n events.safeDispatchEvent('peer:identify', { detail: result });\n return result;\n}\nexport class AbstractIdentify {\n host;\n protocol;\n started;\n timeout;\n peerId;\n peerStore;\n registrar;\n addressManager;\n maxInboundStreams;\n maxOutboundStreams;\n maxMessageSize;\n maxObservedAddresses;\n events;\n runOnTransientConnection;\n log;\n constructor(components, init) {\n this.protocol = init.protocol;\n this.started = false;\n this.peerId = components.peerId;\n this.peerStore = components.peerStore;\n this.registrar = components.registrar;\n this.addressManager = components.addressManager;\n this.events = components.events;\n this.log = init.log;\n this.timeout = init.timeout ?? defaultValues.timeout;\n this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams;\n this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams;\n this.maxMessageSize = init.maxMessageSize ?? defaultValues.maxMessageSize;\n this.maxObservedAddresses = init.maxObservedAddresses ?? defaultValues.maxObservedAddresses;\n this.runOnTransientConnection = init.runOnTransientConnection ?? defaultValues.runOnTransientConnection;\n // Store self host metadata\n this.host = {\n protocolVersion: `${init.protocolPrefix ?? defaultValues.protocolPrefix}/${IDENTIFY_PROTOCOL_VERSION}`,\n agentVersion: getAgentVersion(components.nodeInfo, init.agentVersion)\n };\n }\n isStarted() {\n return this.started;\n }\n async start() {\n if (this.started) {\n return;\n }\n await this.peerStore.merge(this.peerId, {\n metadata: {\n AgentVersion: uint8ArrayFromString(this.host.agentVersion),\n ProtocolVersion: uint8ArrayFromString(this.host.protocolVersion)\n }\n });\n await this.registrar.handle(this.protocol, (data) => {\n void this.handleProtocol(data).catch(err => {\n this.log.error(err);\n });\n }, {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams,\n runOnTransientConnection: this.runOnTransientConnection\n });\n this.started = true;\n }\n async stop() {\n await this.registrar.unhandle(this.protocol);\n this.started = false;\n }\n}\n//# sourceMappingURL=utils.js.map","/* eslint-disable complexity */\nimport { CodeError, serviceCapabilities, setMaxListeners } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';\nimport { protocols } from '@multiformats/multiaddr';\nimport { IP_OR_DOMAIN } from '@multiformats/multiaddr-matcher';\nimport { pbStream } from 'it-protobuf-stream';\nimport { MULTICODEC_IDENTIFY_PROTOCOL_NAME, MULTICODEC_IDENTIFY_PROTOCOL_VERSION } from './consts.js';\nimport { Identify as IdentifyMessage } from './pb/message.js';\nimport { AbstractIdentify, consumeIdentifyMessage, defaultValues, getCleanMultiaddr } from './utils.js';\nexport class Identify extends AbstractIdentify {\n constructor(components, init = {}) {\n super(components, {\n ...init,\n protocol: `/${init.protocolPrefix ?? defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PROTOCOL_VERSION}`,\n log: components.logger.forComponent('libp2p:identify')\n });\n if (init.runOnConnectionOpen ?? defaultValues.runOnConnectionOpen) {\n // When a new connection happens, trigger identify\n components.events.addEventListener('connection:open', (evt) => {\n const connection = evt.detail;\n this.identify(connection).catch(err => { this.log.error('error during identify trigged by connection:open', err); });\n });\n }\n }\n [serviceCapabilities] = [\n '@libp2p/identify'\n ];\n async _identify(connection, options = {}) {\n let stream;\n if (options.signal == null) {\n const signal = AbortSignal.timeout(this.timeout);\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n try {\n stream = await connection.newStream(this.protocol, {\n ...options,\n runOnTransientConnection: this.runOnTransientConnection\n });\n const pb = pbStream(stream, {\n maxDataLength: this.maxMessageSize\n }).pb(IdentifyMessage);\n const message = await pb.read(options);\n await stream.close(options);\n return message;\n }\n catch (err) {\n this.log.error('error while reading identify message', err);\n stream?.abort(err);\n throw err;\n }\n }\n async identify(connection, options = {}) {\n const message = await this._identify(connection, options);\n const { publicKey, protocols, observedAddr } = message;\n if (publicKey == null) {\n throw new CodeError('public key was missing from identify message', 'ERR_MISSING_PUBLIC_KEY');\n }\n const id = await peerIdFromKeys(publicKey);\n if (!connection.remotePeer.equals(id)) {\n throw new CodeError('identified peer does not match the expected peer', 'ERR_INVALID_PEER');\n }\n if (this.peerId.equals(id)) {\n throw new CodeError('identified peer is our own peer id?', 'ERR_INVALID_PEER');\n }\n // Get the observedAddr if there is one\n const cleanObservedAddr = getCleanMultiaddr(observedAddr);\n this.log('identify completed for peer %p and protocols %o', id, protocols);\n this.log('our observed address is %a', cleanObservedAddr);\n if (cleanObservedAddr != null &&\n this.addressManager.getObservedAddrs().length < (this.maxObservedAddresses ?? Infinity)) {\n this.log('storing our observed address %a', cleanObservedAddr);\n this.addressManager.addObservedAddr(cleanObservedAddr);\n }\n return consumeIdentifyMessage(this.peerStore, this.events, this.log, connection, message);\n }\n /**\n * Sends the `Identify` response with the Signed Peer Record\n * to the requesting peer over the given `connection`\n */\n async handleProtocol(data) {\n const { connection, stream } = data;\n const signal = AbortSignal.timeout(this.timeout);\n setMaxListeners(Infinity, signal);\n try {\n const publicKey = this.peerId.publicKey ?? new Uint8Array(0);\n const peerData = await this.peerStore.get(this.peerId);\n const multiaddrs = this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code));\n let signedPeerRecord = peerData.peerRecordEnvelope;\n if (multiaddrs.length > 0 && signedPeerRecord == null) {\n const peerRecord = new PeerRecord({\n peerId: this.peerId,\n multiaddrs\n });\n const envelope = await RecordEnvelope.seal(peerRecord, this.peerId);\n signedPeerRecord = envelope.marshal().subarray();\n }\n let observedAddr = connection.remoteAddr.bytes;\n if (!IP_OR_DOMAIN.matches(connection.remoteAddr)) {\n observedAddr = undefined;\n }\n const pb = pbStream(stream).pb(IdentifyMessage);\n await pb.write({\n protocolVersion: this.host.protocolVersion,\n agentVersion: this.host.agentVersion,\n publicKey,\n listenAddrs: multiaddrs.map(addr => addr.bytes),\n signedPeerRecord,\n observedAddr,\n protocols: peerData.protocols\n }, {\n signal\n });\n await stream.close({\n signal\n });\n }\n catch (err) {\n this.log.error('could not respond to identify request', err);\n stream.abort(err);\n }\n }\n}\n//# sourceMappingURL=identify.js.map","/**\n * @packageDocumentation\n *\n * Use the `identify` function to add support for the [Identify protocol](https://github.com/libp2p/specs/blob/master/identify/README.md) to libp2p.\n *\n * This protocol allows network peers to discover the multiaddrs the current node listens on, and the protocols it supports.\n *\n * A second function, `identifyPush` is also exported to add support for [identify/push](https://github.com/libp2p/specs/blob/master/identify/README.md#identifypush).\n *\n * This protocol will send updates to all connected peers when the multiaddrs or protocols of the current node change.\n *\n * > [!TIP]\n * > For maximum network compatibility you should configure both protocols\n *\n * @example Enabling identify\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { identify } from '@libp2p/identify'\n *\n * const node = await createLibp2p({\n * // ...other options\n * services: {\n * identify: identify()\n * }\n * })\n * ```\n *\n * @example Enabling identify push\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { identifyPush } from '@libp2p/identify'\n *\n * const node = await createLibp2p({\n * // ...other options\n * services: {\n * identifyPush: identifyPush()\n * }\n * })\n * ```\n */\nimport { IdentifyPush as IdentifyPushClass } from './identify-push.js';\nimport { Identify as IdentifyClass } from './identify.js';\nexport function identify(init = {}) {\n return (components) => new IdentifyClass(components, init);\n}\nexport function identifyPush(init = {}) {\n return (components) => new IdentifyPushClass(components, init);\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { decodeMessage, encodeMessage, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var Peer;\n(function (Peer) {\n let _codec;\n Peer.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.publicKey != null && obj.publicKey.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.publicKey);\n }\n if (obj.addrs != null) {\n for (const value of obj.addrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n publicKey: uint8ArrayAlloc(0),\n addrs: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.publicKey = reader.bytes();\n break;\n }\n case 2: {\n obj.addrs.push(reader.bytes());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Peer.encode = (obj) => {\n return encodeMessage(obj, Peer.codec());\n };\n Peer.decode = (buf) => {\n return decodeMessage(buf, Peer.codec());\n };\n})(Peer || (Peer = {}));\n//# sourceMappingURL=peer.js.map","/**\n * @packageDocumentation\n *\n * When the discovery module is started by libp2p it subscribes to the discovery pubsub topic(s)\n *\n * It will immediately broadcast your peer data via pubsub and repeat the broadcast on the configured `interval`\n *\n * ## Security Considerations\n *\n * It is worth noting that this module does not include any message signing for broadcasts. The reason for this is that libp2p-pubsub supports message signing and enables it by default, which means the message you received has been verified to be from the originator, so we can trust that the peer information we have received is indeed from the peer who owns it. This doesn't mean the peer can't falsify its own records, but this module isn't currently concerned with that scenario.\n *\n * ## Requirements\n *\n * This module *MUST* be used on a libp2p node that is running [Pubsub](https://github.com/libp2p/js-libp2p-pubsub). If Pubsub does not exist, or is not running, this module will not work.\n *\n * To run a PubSub service, include a `pubsub` implementation in your services map such as `@chainsafe/libp2p-gossipsub`.\n *\n * For more information see the [docs on customizing libp2p](https://github.com/libp2p/js-libp2p/blob/main/doc/CONFIGURATION.md#customizing-libp2p).\n *\n * @example Usage in js-libp2p\n *\n * See the [js-libp2p configuration docs](https://github.com/libp2p/js-libp2p/blob/main/doc/CONFIGURATION.md#customizing-peer-discovery) for how to include this module as a peer discovery module in js-libp2p.\n *\n * If you are only interested in listening to the global pubsub topic the minimal configuration for using this with libp2p is:\n *\n * ```js\n * import { createLibp2p } from 'libp2p'\n * import { websockets } from '@libp2p/websockets'\n * import { yamux } from '@chainsafe/libp2p-yamux'\n * import { noise } from '@chainsafe/libp2p-noise'\n * import { gossipsub } from '@chainsafe/libp2p-gossipsub'\n * import { pubsubPeerDiscovery } from '@libp2p/pubsub-peer-discovery'\n * import { identify } from 'libp2p/identify'\n *\n * const node = await createLibp2p({\n * transports: [\n * websockets()\n * ], // Any libp2p transport(s) can be used\n * streamMuxers: [\n * yamux()\n * ],\n * connectionEncryption: [\n * noise()\n * ],\n * peerDiscovery: [\n * pubsubPeerDiscovery()\n * ],\n * services: {\n * pubsub: gossipsub(),\n * identify: identify()\n * }\n * })\n * ```\n *\n * @example Customizing Pubsub Peer Discovery\n *\n * There are a few options you can use to customize `Pubsub Peer Discovery`. You can see the detailed [options](#options) below.\n *\n * ```js\n * // ... Other imports from above\n * import PubSubPeerDiscovery from '@libp2p/pubsub-peer-discovery'\n *\n * // Custom topics\n * const topics = [\n * `myApp._peer-discovery._p2p._pubsub`, // It's recommended but not required to extend the global space\n * '_peer-discovery._p2p._pubsub' // Include if you want to participate in the global space\n * ]\n *\n * const node = await createLibp2p({\n * // ...\n * peerDiscovery: [\n * pubsubPeerDiscovery({\n * interval: 10000,\n * topics: topics, // defaults to ['_peer-discovery._p2p._pubsub']\n * listenOnly: false\n * })\n * ]\n * })\n * ```\n *\n * ## Options\n *\n * | Name | Type | Description |\n * | ---------- | --------------- | -------------------------------------------------------------------------------------------------------------- |\n * | interval | `number` | How often (in `ms`), after initial broadcast, your node should broadcast your peer data. Default (`10000ms`) |\n * | topics | `Array` | An Array of topic strings. If set, the default topic will not be used and must be included explicitly here |\n * | listenOnly | `boolean` | If true it will not broadcast peer data. Dont set this unless you have a specific reason to. Default (`false`) |\n *\n * ## Default Topic\n *\n * The default pubsub topic the module subscribes to is `_peer-discovery._p2p._pubsub`, which is also set on `PubsubPeerDiscovery.TOPIC`.\n */\nimport { TypedEventEmitter, peerDiscoverySymbol } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { Peer as PBPeer } from './peer.js';\nexport const TOPIC = '_peer-discovery._p2p._pubsub';\n/**\n * A Peer Discovery Service that leverages libp2p Pubsub to find peers.\n */\nexport class PubSubPeerDiscovery extends TypedEventEmitter {\n [peerDiscoverySymbol] = true;\n [Symbol.toStringTag] = '@libp2p/pubsub-peer-discovery';\n interval;\n listenOnly;\n topics;\n intervalId;\n components;\n log;\n constructor(components, init = {}) {\n super();\n const { interval, topics, listenOnly } = init;\n this.components = components;\n this.interval = interval ?? 10000;\n this.listenOnly = listenOnly ?? false;\n this.log = components.logger.forComponent('libp2p:discovery:pubsub');\n // Ensure we have topics\n if (Array.isArray(topics) && topics.length > 0) {\n this.topics = topics;\n }\n else {\n this.topics = [TOPIC];\n }\n this._onMessage = this._onMessage.bind(this);\n }\n isStarted() {\n return this.intervalId != null;\n }\n start() {\n }\n /**\n * Subscribes to the discovery topic on `libp2p.pubsub` and performs a broadcast\n * immediately, and every `this.interval`\n */\n afterStart() {\n if (this.intervalId != null) {\n return;\n }\n const pubsub = this.components.pubsub;\n if (pubsub == null) {\n throw new Error('PubSub not configured');\n }\n // Subscribe to pubsub\n for (const topic of this.topics) {\n pubsub.subscribe(topic);\n pubsub.addEventListener('message', this._onMessage);\n }\n // Don't broadcast if we are only listening\n if (this.listenOnly) {\n return;\n }\n // Broadcast immediately, and then run on interval\n this._broadcast();\n // Periodically publish our own information\n this.intervalId = setInterval(() => {\n this._broadcast();\n }, this.interval);\n }\n beforeStop() {\n const pubsub = this.components.pubsub;\n if (pubsub == null) {\n throw new Error('PubSub not configured');\n }\n for (const topic of this.topics) {\n pubsub.unsubscribe(topic);\n pubsub.removeEventListener('message', this._onMessage);\n }\n }\n /**\n * Unsubscribes from the discovery topic\n */\n stop() {\n if (this.intervalId != null) {\n clearInterval(this.intervalId);\n this.intervalId = undefined;\n }\n }\n /**\n * Performs a broadcast via Pubsub publish\n */\n _broadcast() {\n const peerId = this.components.peerId;\n if (peerId.publicKey == null) {\n throw new Error('PeerId was missing public key');\n }\n const peer = {\n publicKey: peerId.publicKey,\n addrs: this.components.addressManager.getAddresses().map(ma => ma.bytes)\n };\n const encodedPeer = PBPeer.encode(peer);\n const pubsub = this.components.pubsub;\n if (pubsub == null) {\n throw new Error('PubSub not configured');\n }\n for (const topic of this.topics) {\n if (pubsub.getSubscribers(topic).length === 0) {\n this.log('skipping broadcasting our peer data on topic %s because there are no peers present', topic);\n continue;\n }\n this.log('broadcasting our peer data on topic %s', topic);\n void pubsub.publish(topic, encodedPeer);\n }\n }\n /**\n * Handles incoming pubsub messages for our discovery topic\n */\n _onMessage(event) {\n if (!this.isStarted()) {\n return;\n }\n const message = event.detail;\n if (!this.topics.includes(message.topic)) {\n return;\n }\n const peer = PBPeer.decode(message.data);\n void peerIdFromKeys(peer.publicKey).then(peerId => {\n // Ignore if we received our own response\n if (peerId.equals(this.components.peerId)) {\n return;\n }\n this.log('discovered peer %p on %s', peerId, message.topic);\n this.safeDispatchEvent('peer', {\n detail: {\n id: peerId,\n multiaddrs: peer.addrs.map(b => multiaddr(b))\n }\n });\n }).catch(err => {\n this.log.error(err);\n });\n }\n}\nexport function pubsubPeerDiscovery(init = {}) {\n return (components) => new PubSubPeerDiscovery(components, init);\n}\n//# sourceMappingURL=index.js.map","// Voir https://github.com/alexeyvolkoff/orbitdb-example/blob/main/relay.js\n// https://github.com/libp2p/js-libp2p-example-circuit-relay\nexport const ADRESSES_NŒUDS_RELAI = [\n \"/ip4/164.90.222.145/udp/9090/webrtc-direct/certhash/uEiAJOkKT64u6jmXV5YxncCoER5WXSO2HYE23Xpap651xMw/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR\",\n \"/ip4/164.90.222.145/udp/9091/quic-v1/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR\",\n \"/ip4/164.90.222.145/tcp/9092/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR\",\n];\nexport const ADRESSES_NŒUDS_RELAI_LOCAL = [\n \"/ip4/127.0.0.1/udp/9090/webrtc-direct/certhash/uEiAWCRG30KUzLUuWYZ9HZNcFBHt8uLjLRB2xlLW_L_8lQg/p2p/12D3KooWKeJNXytogRbQPvYrFxXAaDGaJUfysrPeGbbEBDM78iTu\",\n \"/ip4/127.0.0.1/udp/9091/quic-v1/p2p/12D3KooWKeJNXytogRbQPvYrFxXAaDGaJUfysrPeGbbEBDM78iTu\",\n \"/ip4/127.0.0.1/tcp/9092/p2p/12D3KooWKeJNXytogRbQPvYrFxXAaDGaJUfysrPeGbbEBDM78iTu\",\n];\n//# sourceMappingURL=const.js.map","import { identify } from \"@libp2p/identify\";\nimport { webSockets } from \"@libp2p/websockets\";\nimport { webTransport } from \"@libp2p/webtransport\";\nimport { webRTC, webRTCDirect } from \"@libp2p/webrtc\";\nimport { bootstrap } from \"@libp2p/bootstrap\";\nimport { all } from \"@libp2p/websockets/filters\";\nimport { noise } from \"@chainsafe/libp2p-noise\";\nimport { yamux } from \"@chainsafe/libp2p-yamux\";\nimport { autoNAT } from \"@libp2p/autonat\";\nimport { gossipsub } from \"@chainsafe/libp2p-gossipsub\";\nimport { dcutr } from \"@libp2p/dcutr\";\nimport { circuitRelayTransport } from \"@libp2p/circuit-relay-v2\";\nimport { pubsubPeerDiscovery } from \"@libp2p/pubsub-peer-discovery\";\nimport { kadDHT } from \"@libp2p/kad-dht\";\nimport { ADRESSES_NŒUDS_RELAI } from \"./const.js\";\nexport const obtOptionsLibp2pNode = async () => {\n // Ces librairies-ci ne peuvent pas être compilées pour l'environnement\n // navigateur. Nous devons donc les importer dynamiquement ici afin d'éviter\n // des problèmes de compilation pour le navigateur.\n const { tcp } = await import(\"@libp2p/tcp\");\n const { mdns } = await import(\"@libp2p/mdns\");\n return {\n addresses: {\n listen: [\n \"/ip4/0.0.0.0/tcp/0/ws\",\n \"/webrtc\",\n \"/webtransport\",\n \"/webrtc-direct\",\n ],\n },\n transports: [\n webSockets({\n filter: all,\n }),\n webRTC({\n rtcConfiguration: {\n iceServers: [\n {\n urls: [\n \"stun:stun.l.google.com:19302\",\n \"stun:global.stun.twilio.com:3478\",\n ],\n },\n ],\n },\n }),\n webTransport(),\n webRTCDirect(),\n tcp(),\n circuitRelayTransport({\n discoverRelays: 1,\n }),\n ],\n connectionEncryption: [noise()],\n streamMuxers: [yamux()],\n connectionGater: {\n denyDialMultiaddr: () => false,\n },\n peerDiscovery: [\n mdns(),\n bootstrap({\n list: ADRESSES_NŒUDS_RELAI,\n timeout: 0,\n }),\n pubsubPeerDiscovery({\n interval: 1000,\n topics: [\"constellation._peer-discovery._p2p._pubsub\"], // defaults to ['_peer-discovery._p2p._pubsub']\n listenOnly: false,\n }),\n ],\n services: {\n identify: identify(),\n autoNAT: autoNAT(),\n dcutr: dcutr(),\n pubsub: gossipsub({ allowPublishToZeroPeers: true }),\n dht: kadDHT({\n clientMode: false,\n }),\n },\n };\n};\n//# sourceMappingURL=configNode.js.map","import { identify } from \"@libp2p/identify\";\nimport { webSockets } from \"@libp2p/websockets\";\nimport { webRTC as libp2pWebRTC, webRTCDirect } from \"@libp2p/webrtc\";\nimport { webTransport } from \"@libp2p/webtransport\";\nimport { bootstrap } from \"@libp2p/bootstrap\";\nimport { all } from \"@libp2p/websockets/filters\";\nimport { noise } from \"@chainsafe/libp2p-noise\";\nimport { yamux } from \"@chainsafe/libp2p-yamux\";\nimport { gossipsub } from \"@chainsafe/libp2p-gossipsub\";\nimport { circuitRelayTransport } from \"@libp2p/circuit-relay-v2\";\nimport { ADRESSES_NŒUDS_RELAI } from \"./const.js\";\nimport { pubsubPeerDiscovery } from \"@libp2p/pubsub-peer-discovery\";\nimport { autoNAT } from \"@libp2p/autonat\";\nimport { dcutr } from \"@libp2p/dcutr\";\nimport { kadDHT } from \"@libp2p/kad-dht\";\nexport const obtOptionsLibp2pÉlectionPrincipal = async () => {\n const { tcp } = await import(\"@libp2p/tcp\");\n const { mdns } = await import(\"@libp2p/mdns\");\n return {\n addresses: {\n listen: [\"/ip4/0.0.0.0/tcp/0/ws\", \"/webrtc\", \"/webtransport\"],\n },\n transports: [\n webSockets({\n filter: all,\n }),\n libp2pWebRTC({\n rtcConfiguration: {\n iceServers: [\n {\n urls: [\n \"stun:stun.l.google.com:19302\",\n \"stun:global.stun.twilio.com:3478\",\n ],\n },\n ],\n },\n }),\n webTransport(),\n webRTCDirect(),\n tcp(),\n circuitRelayTransport({\n discoverRelays: 1,\n }),\n ],\n connectionEncryption: [noise()],\n streamMuxers: [yamux()],\n connectionGater: {\n denyDialMultiaddr: () => false,\n },\n peerDiscovery: [\n mdns(),\n bootstrap({\n list: ADRESSES_NŒUDS_RELAI,\n timeout: 0,\n }),\n pubsubPeerDiscovery({\n interval: 1000,\n topics: [\"constellation._peer-discovery._p2p._pubsub\"], // defaults to ['_peer-discovery._p2p._pubsub']\n listenOnly: false,\n }),\n ],\n services: {\n identify: identify(),\n autoNAT: autoNAT(),\n dcutr: dcutr(),\n pubsub: gossipsub({ allowPublishToZeroPeers: true }),\n dht: kadDHT({\n clientMode: false,\n }),\n },\n };\n};\n//# sourceMappingURL=config%C3%89lectronPrincipal.js.map","import { identify } from \"@libp2p/identify\";\nimport { webSockets } from \"@libp2p/websockets\";\nimport { webRTC, webRTCDirect } from \"@libp2p/webrtc\";\nimport { webTransport } from \"@libp2p/webtransport\";\nimport { bootstrap } from \"@libp2p/bootstrap\";\nimport { all } from \"@libp2p/websockets/filters\";\nimport { noise } from \"@chainsafe/libp2p-noise\";\nimport { yamux } from \"@chainsafe/libp2p-yamux\";\nimport { autoNAT } from \"@libp2p/autonat\";\nimport { gossipsub } from \"@chainsafe/libp2p-gossipsub\";\nimport { dcutr } from \"@libp2p/dcutr\";\nimport { kadDHT } from \"@libp2p/kad-dht\";\nimport { pubsubPeerDiscovery } from \"@libp2p/pubsub-peer-discovery\";\nimport { circuitRelayTransport } from \"@libp2p/circuit-relay-v2\";\nimport { ADRESSES_NŒUDS_RELAI } from \"./const.js\";\nexport const obtOptionsLibp2pNavigateur = async () => {\n return {\n addresses: {\n listen: [\"/webrtc\", \"/webtransport\"],\n },\n transports: [\n webSockets({\n filter: all,\n }),\n webRTC({\n rtcConfiguration: {\n iceServers: [\n {\n urls: [\n \"stun:stun.l.google.com:19302\",\n \"stun:global.stun.twilio.com:3478\",\n ],\n },\n ],\n },\n }),\n webRTCDirect(),\n webTransport(),\n circuitRelayTransport({\n discoverRelays: 1,\n }),\n ],\n connectionEncryption: [noise()],\n streamMuxers: [yamux()],\n connectionGater: {\n denyDialMultiaddr: () => false,\n },\n peerDiscovery: [\n bootstrap({\n list: ADRESSES_NŒUDS_RELAI,\n timeout: 0,\n }),\n pubsubPeerDiscovery({\n interval: 1000,\n topics: [\"constellation._peer-discovery._p2p._pubsub\"], // par défaut : ['_peer-discovery._p2p._pubsub']\n listenOnly: false,\n }),\n ],\n services: {\n identify: identify(),\n autoNAT: autoNAT(),\n dcutr: dcutr(),\n pubsub: gossipsub({ allowPublishToZeroPeers: true }),\n dht: kadDHT({\n clientMode: true,\n }),\n },\n };\n};\n//# sourceMappingURL=configNavigateur.js.map","import { identify } from \"@libp2p/identify\";\nimport { webSockets } from \"@libp2p/websockets\";\nimport { webTransport } from \"@libp2p/webtransport\";\nimport { bootstrap } from \"@libp2p/bootstrap\";\nimport { all } from \"@libp2p/websockets/filters\";\nimport { noise } from \"@chainsafe/libp2p-noise\";\nimport { yamux } from \"@chainsafe/libp2p-yamux\";\nimport { gossipsub } from \"@chainsafe/libp2p-gossipsub\";\nimport { circuitRelayTransport } from \"@libp2p/circuit-relay-v2\";\nimport { ADRESSES_NŒUDS_RELAI } from \"./const.js\";\nexport const obtOptionsLibp2pTravailleurWeb = async () => {\n return {\n addresses: {\n listen: [\"/webrtc\"],\n },\n transports: [\n webSockets({\n filter: all,\n }),\n webTransport(),\n circuitRelayTransport({\n discoverRelays: 1,\n }),\n ],\n connectionEncryption: [noise()],\n streamMuxers: [yamux()],\n connectionGater: {\n denyDialMultiaddr: () => false,\n },\n peerDiscovery: [\n bootstrap({\n list: ADRESSES_NŒUDS_RELAI,\n timeout: 0,\n }),\n ],\n services: {\n identify: identify(),\n pubsub: gossipsub({ allowPublishToZeroPeers: true }),\n },\n };\n};\n//# sourceMappingURL=configTravailleur.js.map","import { isBrowser, isElectronMain, isElectronRenderer, isNode, isWebWorker, } from \"wherearewe\";\nimport mergeOptions from \"merge-options\";\nimport { createHelia } from \"helia\";\nimport { LevelBlockstore } from \"blockstore-level\";\nimport { bitswap } from \"@helia/block-brokers\";\nimport { createLibp2p } from \"libp2p\";\nimport { obtOptionsLibp2pNode } from \"./configNode.js\";\nimport { obtOptionsLibp2pÉlectionPrincipal } from \"./configÉlectronPrincipal.js\";\nimport { obtOptionsLibp2pNavigateur } from \"./configNavigateur.js\";\nimport { obtOptionsLibp2pTravailleurWeb } from \"./configTravailleur.js\";\nconst obtConfigLibp2pPlateforme = async () => {\n let configPlateforme;\n if (isBrowser || isElectronRenderer) {\n // À faire - migrer vers travailleur ?\n configPlateforme = await obtOptionsLibp2pNavigateur();\n }\n else if (isWebWorker) {\n configPlateforme = await obtOptionsLibp2pTravailleurWeb();\n }\n else if (isElectronMain) {\n configPlateforme = await obtOptionsLibp2pÉlectionPrincipal();\n }\n else if (isNode) {\n configPlateforme = await obtOptionsLibp2pNode();\n }\n else {\n console.warn(\"Plateforme non reconnue. On utilisera la configuration navigateur.\");\n configPlateforme = await obtOptionsLibp2pNavigateur();\n }\n return configPlateforme;\n};\nexport async function initSFIP({ dossier, configLibp2p = {}, }) {\n const config = await obtConfigLibp2pPlateforme();\n const libp2p = (await createLibp2p(mergeOptions(configLibp2p, {\n ...config,\n })));\n const stockageBloques = new LevelBlockstore(`${dossier}/blocks`);\n const optionsHelia = {\n blockstore: stockageBloques,\n libp2p,\n blockBrokers: [bitswap()],\n };\n return createHelia({ ...optionsHelia });\n}\n//# sourceMappingURL=index.js.map","import { __decorate } from \"tslib\";\nimport deepEqual from \"deep-equal\";\nimport { எண்ணிக்கை } from \"ennikkai\";\nimport { isValidAddress, } from \"@orbitdb/core\";\nimport { unixfs } from \"@helia/unixfs\";\nimport { EventEmitter } from \"events\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nimport indexedDbStream from \"indexed-db-stream\";\nimport plateforme from \"platform\";\nimport { suivreBdDeFonction, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { Licences } from \"./licences.js\";\nimport { Épingles } from \"./epingles.js\";\nimport { Profil } from \"./profil.js\";\nimport { BDs } from \"./bds.js\";\nimport { Tableaux } from \"./tableaux.js\";\nimport { Variables } from \"./variables.js\";\nimport { Réseau } from \"./reseau.js\";\nimport { EncryptionLocalFirst } from \"./encryption.js\";\nimport { Favoris } from \"./favoris.js\";\nimport { Projets } from \"./projets.js\";\nimport { MotsClefs } from \"./motsClefs.js\";\nimport { Nuées } from \"./nu\\u00E9es.js\";\nimport { Recherche } from \"./recherche/index.js\";\nimport { Automatisations } from \"./automatisation.js\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { faisRien, toBuffer, ignorerNonDéfinis, sauvegarderFichierZip, } from \"@constl/utils-ipa\";\nimport obtStockageLocal, { exporterStockageLocal } from \"./stockageLocal.js\";\nimport { ContrôleurConstellation as générerContrôleurConstellation, nomType as nomTypeContrôleurConstellation, } from \"./acc\\u00E8s/cntrlConstellation.js\";\nimport { MEMBRE, MODÉRATEUR } from \"./acc\\u00E8s/consts.js\";\nimport Base64 from \"crypto-js/enc-base64.js\";\nimport sha256 from \"crypto-js/sha256.js\";\nimport md5 from \"crypto-js/md5.js\";\nimport JSZip from \"jszip\";\nimport { isBrowser, isElectronMain, isNode } from \"wherearewe\";\nimport { gestionnaireOrbiteGénéral, } from \"./orbite.js\";\nimport { Protocoles } from \"./protocoles.js\";\nimport { CID } from \"multiformats\";\nimport { initSFIP } from \"./sfip/index.js\";\nimport { ERREUR_INIT_IPA_DÉJÀ_LANCÉ } from \"@constl/mandataire\";\nconst estOrbiteDB = (x) => {\n if (!x)\n return false;\n const xCommeOrbite = x;\n return (xCommeOrbite.id &&\n typeof xCommeOrbite.open === \"function\" &&\n typeof xCommeOrbite.stop === \"function\" &&\n xCommeOrbite.ipfs);\n};\nexport const schémaStructureBdCompte = {\n type: \"object\",\n properties: {\n protocoles: { type: \"string\", nullable: true },\n profil: { type: \"string\", nullable: true },\n motsClefs: { type: \"string\", nullable: true },\n variables: { type: \"string\", nullable: true },\n bds: { type: \"string\", nullable: true },\n projets: { type: \"string\", nullable: true },\n nuées: { type: \"string\", nullable: true },\n favoris: { type: \"string\", nullable: true },\n réseau: { type: \"string\", nullable: true },\n automatisations: { type: \"string\", nullable: true },\n },\n required: [],\n};\nexport const schémaStructureNomsDispositifs = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n properties: {\n nom: { type: \"string\", nullable: true },\n type: { type: \"string\", nullable: true },\n },\n },\n required: [],\n};\nconst DÉLAI_EXPIRATION_INVITATIONS = 1000 * 60 * 5; // 5 minutes\nconst obtDossierConstellation = async (opts) => {\n if (opts.dossier && opts.dossier !== \"dév\") {\n if (isNode || isElectronMain) {\n const fs = await import(\"fs\");\n if (!fs.existsSync(opts.dossier))\n fs.mkdirSync(opts.dossier, { recursive: true });\n }\n return opts.dossier;\n }\n if (isNode || isElectronMain) {\n const fs = await import(\"fs\");\n // Utiliser l'application native\n const envPaths = (await import(\"env-paths\")).default;\n const chemins = envPaths(\"constl\", { suffix: \"\" });\n const dossier = await join(chemins.data, opts.dossier === \"dév\" ? \"constl-dév\" : \"constl\");\n if (!fs.existsSync(dossier))\n fs.mkdirSync(dossier, { recursive: true });\n return dossier;\n }\n else {\n // Pour navigateur\n return \"./constl\";\n }\n};\nconst join = async (...args) => {\n if (isNode || isElectronMain) {\n // Utiliser l'application native\n const { join } = await import(\"path\");\n return join(...args);\n }\n else {\n return args.join(\"/\");\n }\n};\nexport class Constellation {\n _opts;\n événements;\n orbite;\n sfip;\n épingles;\n profil;\n bds;\n tableaux;\n variables;\n réseau;\n favoris;\n projets;\n recherche;\n motsClefs;\n automatisations;\n nuées;\n licences;\n protocoles;\n _orbiteExterne;\n _sfipExterne;\n idCompte;\n encryption;\n sujet_réseau;\n motsDePasseRejoindreCompte;\n ennikkai;\n verrouObtIdBd;\n _intervaleVerrou;\n constructor(opts = {}) {\n this._opts = opts;\n this.événements = new EventEmitter();\n this.sujet_réseau = opts.sujetRéseau || \"réseau-constellation\";\n this.motsDePasseRejoindreCompte = {};\n this.verrouObtIdBd = new Semaphore();\n this._orbiteExterne = this._sfipExterne = false;\n this.encryption = new EncryptionLocalFirst();\n this.ennikkai = new எண்ணிக்கை({});\n this.épingles = new Épingles({ client: this });\n this.profil = new Profil({ client: this });\n this.motsClefs = new MotsClefs({ client: this });\n this.tableaux = new Tableaux({ client: this });\n this.variables = new Variables({ client: this });\n this.bds = new BDs({ client: this });\n this.projets = new Projets({ client: this });\n this.nuées = new Nuées({ client: this });\n this.favoris = new Favoris({ client: this });\n this.automatisations = new Automatisations({ client: this });\n this.recherche = new Recherche({ client: this });\n this.licences = new Licences({ client: this });\n this.réseau = new Réseau({ client: this });\n this.protocoles = new Protocoles({ client: this });\n this._initialiser();\n }\n async dossier() {\n return await obtDossierConstellation(this._opts);\n }\n async _initialiser() {\n await this.verrouillerDossier({ message: this._opts.messageVerrou });\n const { sfip, orbite } = await this._générerSFIPetOrbite();\n this.sfip = sfip;\n this.orbite = gestionnaireOrbiteGénéral.obtGestionnaireOrbite({ orbite });\n this.événements.emit(\"sfipEtOrbitePrêts\", { sfip, orbite: this.orbite });\n const optionsAccèsRacine = {\n type: nomTypeContrôleurConstellation,\n write: this.orbite.identity.id,\n nom: \"racine\",\n };\n this.idCompte =\n (await this.obtDeStockageLocal({\n clef: \"idCompte\",\n parCompte: false,\n })) || undefined;\n if (!this.idCompte) {\n this.idCompte = await this.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: optionsAccèsRacine,\n nom: \"racine\",\n });\n await this.nommerDispositif({\n type: this.détecterTypeDispositif(),\n });\n await this.sauvegarderAuStockageLocal({\n clef: \"idCompte\",\n val: this.idCompte,\n parCompte: false,\n });\n }\n await this.réseau.initialiser();\n await this.protocoles.établirProtocoles({\n protocoles: this._opts.protocoles,\n });\n await this.épingler();\n this.événements.emit(\"comptePrêt\", { idCompte: this.idCompte });\n }\n détecterTypeDispositif() {\n if (isElectronMain) {\n return \"ordinateur\";\n }\n else if (isNode) {\n return \"serveur\";\n }\n else if (isBrowser) {\n if ([\"Pad\", \"Kindle\", \"Nexus\", \"Nook\", \"PlayBook\"].find((x) => plateforme.product?.includes(x))) {\n return \"tablette\";\n }\n else if (plateforme.name?.includes(\"Mobile\") ||\n [\"Phone\", \"Android\", \"iOS\"].find((x) => plateforme.os?.family?.includes(x))) {\n return \"téléphone\";\n }\n return \"navigateur\";\n }\n return undefined;\n }\n async attendreSfipEtOrbite() {\n if (this.sfip && this.orbite) {\n return {\n sfip: this.sfip,\n orbite: this.orbite,\n };\n }\n return new Promise((résoudre) => {\n this.événements.once(\"sfipEtOrbitePrêts\", résoudre);\n });\n }\n async attendreInitialisée() {\n if (this.idCompte) {\n return {\n idCompte: this.idCompte,\n };\n }\n else {\n return new Promise((résoudre) => {\n this.événements.once(\"comptePrêt\", résoudre);\n });\n }\n }\n async verrouillerDossier({ message }) {\n const intervaleVerrou = 5000; // 5 millisecondes\n if (isElectronMain || isNode) {\n const fs = await import(\"fs\");\n const fichierVerrou = await join(await this.dossier(), \"VERROU\");\n const maintenant = new Date();\n if (!fs.existsSync(fichierVerrou)) {\n fs.writeFileSync(fichierVerrou, message || \"\");\n }\n else {\n const infoFichier = fs.statSync(fichierVerrou);\n const modifiéÀ = infoFichier.mtime;\n const verrifierSiVieux = () => {\n if (maintenant.getTime() - modifiéÀ.getTime() > intervaleVerrou) {\n fs.writeFileSync(fichierVerrou, message || \"\");\n }\n else {\n const contenuFichier = new TextDecoder().decode(fs.readFileSync(fichierVerrou));\n try {\n const messageJSON = JSON.parse(contenuFichier);\n if (messageJSON[\"port\"]) {\n const erreur = new Error(`Ce compte est déjà ouvert en Constellation, et le serveur local est disponible sur le port ${messageJSON[\"port\"]}. Vous pouvez soit vous connecter sur ce port, soit fermer les instances de Constellation qui ouvertes et puis vous ressayer.`);\n erreur.name = ERREUR_INIT_IPA_DÉJÀ_LANCÉ;\n throw erreur;\n }\n }\n catch {\n //\n }\n const erreur = new Error(\"Constellation est déjà lancée.\");\n erreur.name = ERREUR_INIT_IPA_DÉJÀ_LANCÉ;\n throw erreur;\n }\n };\n try {\n verrifierSiVieux();\n }\n catch {\n await new Promise((résoudre) => setTimeout(résoudre, intervaleVerrou));\n verrifierSiVieux();\n }\n }\n this._intervaleVerrou = setInterval(() => {\n try {\n fs.utimesSync(fichierVerrou, maintenant, maintenant);\n }\n catch {\n // On s'inquiète pas trop\n }\n }, intervaleVerrou);\n }\n }\n async effacerVerrou() {\n if (isElectronMain || isNode) {\n if (this._intervaleVerrou)\n clearInterval(this._intervaleVerrou);\n const fs = await import(\"fs\");\n fs.rmSync(await join(await this.dossier(), \"VERROU\"));\n }\n }\n async _générerSFIPetOrbite() {\n const dossier = await this.dossier();\n const { orbite } = this._opts;\n let sfipFinale;\n let orbiteFinale;\n if (orbite) {\n if (estOrbiteDB(orbite)) {\n this._sfipExterne = this._orbiteExterne = true;\n sfipFinale = orbite.ipfs;\n orbiteFinale = orbite;\n }\n else {\n // Éviter d'importer la configuration BD Orbite si pas nécessaire\n const { initOrbite } = await import(\"./orbite.js\");\n if (orbite.ipfs) {\n this._sfipExterne = true;\n sfipFinale = orbite.ipfs;\n }\n else {\n sfipFinale = await initSFIP({\n dossier: await join(dossier, \"sfip\"),\n });\n }\n orbiteFinale = await initOrbite({\n sfip: sfipFinale,\n dossierOrbite: orbite.directory || (await join(dossier, \"orbite\")),\n });\n sfipFinale = orbiteFinale.ipfs;\n }\n }\n else {\n const { initSFIP } = await import(\"./sfip/index.js\");\n sfipFinale = await initSFIP({\n dossier: await join(await this.dossier(), \"sfip\"),\n });\n const { initOrbite } = await import(\"./orbite.js\");\n orbiteFinale = await initOrbite({\n sfip: sfipFinale,\n dossierOrbite: await join(await this.dossier(), \"orbite\"),\n });\n }\n return { sfip: sfipFinale, orbite: orbiteFinale };\n }\n async obtOptionsAccès() {\n const idCompte = await this.obtIdCompte();\n return {\n write: idCompte,\n };\n }\n async épingler() {\n await this.épingles.épinglerBd({ id: await this.obtIdCompte() }); // Celle-ci doit être récursive et inclure les fichiers\n await Promise.all([\n this.profil,\n this.automatisations,\n this.bds,\n this.variables,\n this.projets,\n this.nuées,\n this.motsClefs,\n this.réseau,\n this.favoris,\n ].map(async (x) => x && (await x.épingler())));\n }\n async ouvrirBd({ id, type, options, }) {\n const { orbite } = await this.attendreSfipEtOrbite();\n return await orbite.ouvrirBd({\n id,\n type,\n options,\n });\n }\n async ouvrirBdTypée({ id, type, schéma, options, }) {\n const { orbite } = await this.attendreSfipEtOrbite();\n return await orbite.ouvrirBdTypée({\n id,\n // @ts-expect-error Va donc comprendre\n type,\n // @ts-expect-error Va donc comprendre\n schéma,\n options,\n });\n }\n async signer({ message }) {\n const { orbite } = await this.attendreSfipEtOrbite();\n const id = orbite.identity;\n const signature = await orbite.identity.sign(id, message);\n const clefPublique = orbite.identity.publicKey;\n return { signature, clefPublique };\n }\n async vérifierSignature({ signature, message, }) {\n if (!signature || !signature.clefPublique || !signature.signature) {\n return false;\n }\n const { orbite } = await this.attendreSfipEtOrbite();\n return await orbite.identity.verify(signature.signature, signature.clefPublique, message);\n }\n async suivreDispositifs({ f, idCompte, }) {\n const fSuivi = async ({ id, }) => {\n const { orbite } = await this.attendreSfipEtOrbite();\n const { bd, fOublier } = await orbite.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdCompte,\n });\n const accès = bd.access;\n const typeAccès = accès.type;\n if (typeAccès === \"ipfs\") {\n await f(accès.write);\n await fOublier();\n return faisRien;\n }\n else if (typeAccès === \"contrôleur-constellation\") {\n const contrôleurConstellation = accès;\n const fFinale = async () => {\n const mods = contrôleurConstellation.gestRôles._rôles[MODÉRATEUR];\n await f(mods);\n };\n contrôleurConstellation.gestRôles.on(\"misÀJour\", fFinale);\n fFinale();\n return async () => {\n contrôleurConstellation.gestRôles.off(\"misÀJour\", fFinale);\n await fOublier();\n };\n }\n else {\n await fOublier();\n return faisRien;\n }\n };\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine, }) => {\n if (idCompte) {\n await fSuivreRacine(idCompte);\n return faisRien;\n }\n else {\n return await this.suivreIdCompte({ f: fSuivreRacine });\n }\n },\n f: ignorerNonDéfinis(f),\n fSuivre: fSuivi,\n });\n }\n async nommerDispositif({ idDispositif, nom, type, }) {\n const idDispositifFinal = idDispositif || (await this.obtIdDispositif());\n const idBdNomsDispositifs = await this.obtIdBd({\n nom: \"nomsDispositifs\",\n racine: await this.obtIdCompte(),\n type: \"keyvalue\",\n });\n const { bd: bdNomsDispositifs, fOublier } = await this.ouvrirBdTypée({\n id: idBdNomsDispositifs,\n type: \"keyvalue\",\n schéma: schémaStructureNomsDispositifs,\n });\n if (nom || type) {\n const val = {};\n if (nom)\n val.nom = nom;\n if (type)\n val.type = type;\n await bdNomsDispositifs.set(idDispositifFinal, val);\n }\n else {\n await bdNomsDispositifs.del(idDispositifFinal);\n }\n await fOublier();\n }\n async suivreNomsDispositifs({ idCompte, f, }) {\n const idCompteFinal = idCompte || (await this.obtIdCompte());\n return await this.suivreBdDicDeClef({\n id: idCompteFinal,\n schéma: schémaStructureNomsDispositifs,\n clef: \"nomsDispositifs\",\n f,\n });\n }\n async suivreNomDispositif({ idCompte, idDispositif, f, }) {\n return await this.suivreNomsDispositifs({\n idCompte,\n f: async (noms) => {\n const nomsDispositif = noms[idDispositif];\n if (nomsDispositif) {\n return await f(nomsDispositif);\n }\n },\n });\n }\n async générerInvitationRejoindreCompte() {\n const idCompte = await this.obtIdCompte();\n const codeSecret = await this.encryption.clefAléatoire();\n this.motsDePasseRejoindreCompte[codeSecret] = Date.now();\n return { idCompte, codeSecret };\n }\n async révoquerInvitationRejoindreCompte({ codeSecret, }) {\n if (codeSecret) {\n delete this.motsDePasseRejoindreCompte[codeSecret];\n }\n else {\n this.motsDePasseRejoindreCompte = {};\n }\n }\n async considérerRequêteRejoindreCompte({ requête, }) {\n const { idDispositif, empreinteVérification } = requête;\n const maintenant = Date.now();\n for (const codeSecret of Object.keys(this.motsDePasseRejoindreCompte)) {\n const dateCodeSecret = this.motsDePasseRejoindreCompte[codeSecret];\n const dateValide = maintenant - dateCodeSecret < DÉLAI_EXPIRATION_INVITATIONS;\n if (dateValide) {\n const empreinteCorrespondante = this.empreinteInvitation({\n idDispositif,\n codeSecret,\n });\n if (empreinteCorrespondante === empreinteVérification) {\n // Empreinte code secret validé\n delete this.motsDePasseRejoindreCompte[codeSecret];\n await this.ajouterDispositif({ idDispositif });\n }\n }\n }\n }\n empreinteInvitation({ idDispositif, codeSecret, }) {\n return Base64.stringify(sha256(idDispositif + codeSecret));\n }\n async demanderEtPuisRejoindreCompte({ idCompte, codeSecret, }) {\n await this.réseau.envoyerDemandeRejoindreCompte({\n idCompte,\n codeSecret,\n });\n await this.rejoindreCompte({\n idCompte,\n });\n }\n async ajouterDispositif({ idDispositif, }) {\n const { idCompte } = await this.attendreInitialisée();\n const { bd: bdCompte, fOublier } = await this.ouvrirBd({ id: idCompte });\n const accès = bdCompte.access;\n accès.grant(MODÉRATEUR, idDispositif);\n await fOublier();\n }\n async enleverDispositif({ idDispositif, }) {\n const { idCompte } = await this.attendreInitialisée();\n const { bd: bdCompte, fOublier } = await this.ouvrirBd({ id: idCompte });\n const accès = bdCompte.access;\n await accès.revoke(MODÉRATEUR, idDispositif);\n await fOublier();\n }\n async rejoindreCompte({ idCompte }) {\n if (!isValidAddress(idCompte)) {\n throw new Error(`Adresse compte \"${idCompte}\" non valide`);\n }\n // Attendre de recevoir la permission d'écrire à idCompte\n let autorisé;\n const { bd, fOublier } = await this.ouvrirBdTypée({\n id: idCompte,\n type: \"keyvalue\",\n schéma: schémaStructureBdCompte,\n });\n const accès = bd.access;\n const moi = await this.obtIdDispositif();\n const oublierPermission = await accès.suivreIdsOrbiteAutoriséesÉcriture((autorisés) => (autorisé = autorisés.includes(moi)));\n await new Promise((résoudre) => {\n const vérifierSiAutorisé = async () => {\n if (autorisé) {\n clearInterval(intervale);\n await oublierPermission();\n await fOublier();\n résoudre();\n }\n };\n const intervale = setInterval(() => {\n vérifierSiAutorisé();\n }, 10);\n vérifierSiAutorisé();\n });\n // Là on peut y aller\n this.idCompte = idCompte;\n await this.sauvegarderAuStockageLocal({\n clef: \"idCompte\",\n val: idCompte,\n parCompte: false,\n });\n this.événements.emit(\"comptePrêt\", { idCompte });\n }\n async donnerAccès({ idBd, identité, rôle = MEMBRE, }) {\n if (!isValidAddress(identité)) {\n throw new Error(`Identité \"${identité}\" non valide.`);\n }\n const { bd, fOublier } = await this.ouvrirBd({ id: idBd });\n const accès = bd.access;\n const typeAccès = accès.type;\n if (typeAccès === nomTypeContrôleurConstellation) {\n accès.grant(rôle, identité);\n }\n await fOublier();\n }\n async suivreIdCompte({ f, }) {\n const fFinale = async ({ idCompte }) => {\n await f(idCompte);\n };\n this.événements.on(\"comptePrêt\", fFinale);\n if (this.idCompte)\n await fFinale({ idCompte: this.idCompte });\n return async () => {\n this.événements.off(\"comptePrêt\", fFinale);\n };\n }\n async obtIdSFIP() {\n const { sfip } = await this.attendreSfipEtOrbite();\n return sfip.libp2p.peerId;\n }\n async obtIdDispositif() {\n const { orbite } = await this.attendreSfipEtOrbite();\n return orbite.identity.id;\n }\n async obtIdentitéOrbite() {\n const { orbite } = await this.attendreSfipEtOrbite();\n return orbite.identity;\n }\n async obtIdCompte() {\n const { idCompte } = await this.attendreInitialisée();\n return idCompte;\n }\n async copierContenuBdDic({ bdBase, nouvelleBd, clef, schéma, }) {\n const idBdDicInit = await bdBase.get(clef);\n if (typeof idBdDicInit !== \"string\")\n return;\n const { bd: bdDicInit, fOublier: fOublierInit } = await this.ouvrirBdTypée({\n id: idBdDicInit,\n type: \"keyvalue\",\n schéma,\n });\n const idNouvelleBdDic = await nouvelleBd.get(clef);\n if (!idNouvelleBdDic)\n throw new Error(\"La nouvelle BD n'existait pas.\");\n if (typeof idNouvelleBdDic !== \"string\")\n throw new Error(`${idNouvelleBdDic} n'est pas une adresse Orbite.`);\n const { bd: nouvelleBdDic, fOublier: fOublierNouvelle } = await this.ouvrirBdTypée({\n id: idNouvelleBdDic,\n type: \"keyvalue\",\n schéma,\n });\n const données = await bdDicInit.all();\n await Promise.all(données.map(async (d) => {\n await nouvelleBdDic.put(d.key, d.value);\n }));\n fOublierInit();\n fOublierNouvelle();\n }\n async combinerBds({ idBdBase, idBd2, }) {\n // Extraire le type\n const { bd, fOublier } = await this.ouvrirBd({ id: idBdBase });\n const type = bd.type;\n await fOublier();\n // Un peu dupliqué, à cause de TypeScript\n switch (type) {\n case \"keyvalue\": {\n const { bd: bdBase, fOublier: fOublierBase } = await this.ouvrirBd({\n id: idBdBase,\n type: \"keyvalue\",\n });\n const { bd: bd2, fOublier: fOublier2 } = await this.ouvrirBd({\n id: idBd2,\n type: \"keyvalue\",\n });\n await this.combinerBdsDict({\n bdBase,\n bd2,\n });\n await fOublierBase();\n await fOublier2();\n break;\n }\n case \"set\": {\n const { bd: bdBase, fOublier: fOublierBase } = await this.ouvrirBd({\n id: idBdBase,\n type: \"set\",\n });\n const { bd: bd2, fOublier: fOublier2 } = await this.ouvrirBd({\n id: idBd2,\n type: \"set\",\n });\n await this.combinerBdsEnsemble({\n bdBase,\n bd2,\n });\n await fOublierBase();\n await fOublier2();\n break;\n }\n default:\n throw new Error(`Type de BD ${type} non supporté.`);\n }\n }\n async combinerBdsDict({ bdBase, bd2, }) {\n const contenuBd2 = Object.fromEntries((await bd2.all()).map((x) => [x.key, x.value]));\n for (const [c, v] of Object.entries(contenuBd2)) {\n const valBdBase = await bdBase.get(c);\n if (valBdBase === v) {\n continue;\n }\n else if (valBdBase === undefined) {\n await bdBase.put(c, v);\n }\n else if (isValidAddress(valBdBase) && isValidAddress(v)) {\n await this.combinerBds({\n idBdBase: valBdBase,\n idBd2: v,\n });\n }\n }\n }\n async combinerBdsEnsemble({ bdBase, bd2, index, }) {\n const contenuBdBase = await bdBase.all();\n const contenuBd2 = await bd2.all();\n for (const é of contenuBd2) {\n const valBd2 = é.value; // Note : peut-être existe-t-il une solution plus sécuritaire ?\n if (index) {\n if (typeof valBd2 !== \"object\")\n throw new Error(`Erreur combinaison ensembles : ${typeof valBd2}`);\n const existant = contenuBdBase.find((x) => typeof x.value === \"object\" &&\n index.every((i) => x.value[i] ===\n valBd2[i]));\n if (!existant) {\n // Si pas d'existant, ajouter le nouvel élément\n await bdBase.add(valBd2);\n }\n else {\n const valExistant = existant.value;\n // Si existant, combiner et mettre à jour seulement si différents\n if (!deepEqual(valExistant, valBd2)) {\n const combiné = Object.assign({}, valExistant);\n for (const [c, v] of Object.entries(valBd2)) {\n if (combiné[c] === undefined) {\n combiné[c] = v;\n }\n else if (!deepEqual(combiné[c], v)) {\n if (isValidAddress(combiné[c]) && isValidAddress(v)) {\n await this.combinerBds({\n idBdBase: combiné[c],\n idBd2: v,\n });\n }\n }\n }\n await bdBase.del(existant.value);\n await bdBase.add(combiné);\n }\n }\n }\n else {\n if (!contenuBdBase.some((x) => deepEqual(x.value, valBd2))) {\n await bdBase.add(valBd2);\n }\n }\n }\n }\n async suivreBd({ id, f, type, schéma, }) {\n if (!isValidAddress(id))\n throw new Error(`Adresse \"${id}\" non valide.`);\n const fsOublier = [];\n const promesses = {};\n let annulé = false;\n const lancerSuivi = () => {\n // Alambiqué, mais apparemment nécessaire pour TypeScript !\n const promesseBd = schéma\n ? type === \"set\"\n ? this.ouvrirBdTypée({\n id,\n type,\n schéma: schéma,\n })\n : type === \"keyvalue\"\n ? this.ouvrirBdTypée({\n id,\n type,\n schéma: schéma,\n })\n : type === \"ordered-keyvalue\"\n ? this.ouvrirBdTypée({\n id,\n type,\n schéma: schéma,\n })\n : this.ouvrirBd({\n id,\n type,\n })\n : this.ouvrirBd({\n id,\n });\n promesseBd\n .then(({ bd, fOublier }) => {\n fsOublier.push(fOublier);\n const fFinale = () => {\n const idSuivi = uuidv4();\n const promesse = f(bd);\n const estUnePromesse = (x) => {\n return !!x && !!x.then;\n };\n if (estUnePromesse(promesse)) {\n promesses[idSuivi] = promesse;\n promesse.then(() => {\n delete promesses[idSuivi];\n });\n }\n };\n bd.events.on(\"update\", fFinale);\n fsOublier.push(async () => {\n bd.events.off(\"update\", fFinale);\n });\n /* if (\n é === \"update\" &&\n bd.events.listenerCount(\"write\") > bd.events.getMaxListeners()\n ) {\n console.log({id: bd.id, type: bd.type, n: bd.events.listenerCount(\"write\")})\n console.log({f})\n } */\n fFinale();\n })\n .catch((e) => {\n // Ceci nous permet de ressayer d'obtenir le contenu de la BD en continue, tant que la requête n'a pas été annulée\n if (!annulé) {\n if (String(e).includes(\"ipfs unable to find\") ||\n String(e).includes(\"aborted\") ||\n String(e).includes(\"No Promise in Promise.any was resolved\")) {\n lancerSuivi();\n }\n else {\n console.error(e);\n throw new Error(e);\n }\n }\n });\n };\n lancerSuivi();\n const fOublier = async () => {\n annulé = true;\n await Promise.all(fsOublier.map((f) => f()));\n await Promise.all(Object.values(promesses));\n };\n return fOublier;\n }\n async suivreBdDeClef({ id, clef, f, fSuivre, }) {\n const fRacine = async ({ fSuivreRacine, }) => {\n const fSuivreBdRacine = async (bd) => {\n const nouvelIdBdCible = await bd.get(clef);\n return await fSuivreRacine(nouvelIdBdCible);\n };\n return await this.suivreBd({ id, f: fSuivreBdRacine, type: \"keyvalue\" });\n };\n return await suivreBdDeFonction({ fRacine, f, fSuivre });\n }\n async suivreBdDic({ id, schéma, f, }) {\n const fFinale = async (bd) => {\n const valeurs = (bd\n ? Object.fromEntries((await bd.all()).map((x) => [x.key, x.value]))\n : {});\n await f(valeurs);\n };\n // @ts-expect-error Je ne sais pas pourquoi\n return await this.suivreBd({ id, type: \"keyvalue\", schéma, f: fFinale });\n }\n async suivreBdDicOrdonnée({ id, schéma, f, }) {\n // À faire : différention entre schéma présent ou absent\n const fFinale = async (bd) => {\n const valeurs = (await bd.all());\n await f(valeurs);\n };\n return await this.suivreBd({\n id,\n type: \"ordered-keyvalue\",\n schéma,\n // @ts-expect-error Je ne sais pas pourquoi\n f: fFinale,\n });\n }\n async suivreBdDicDeClef({ id, clef, schéma, f, }) {\n const fFinale = async (valeurs) => {\n await f(valeurs || {});\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreBdDic({ id, schéma, f: fSuivreBd });\n };\n return await this.suivreBdDeClef({\n id,\n clef,\n f: fFinale,\n fSuivre,\n });\n }\n async suivreBdDicOrdonnéeDeClef({ id, clef, schéma, f, }) {\n const fFinale = async (valeurs) => {\n await f(valeurs || []);\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreBdDicOrdonnée({ id, schéma, f: fSuivreBd });\n };\n return await this.suivreBdDeClef({\n id,\n clef,\n f: fFinale,\n fSuivre,\n });\n }\n async suivreBdListeDeClef({ id, clef, f, schéma, renvoyerValeur = true, }) {\n // À faire : très laid en raison de contraintes Typescript...peut-être existe-il une meilleure façon ?\n if (renvoyerValeur) {\n const fFinale = async (valeurs) => {\n await f(valeurs || []);\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreBdListe({\n id,\n f: fSuivreBd,\n schéma,\n renvoyerValeur,\n });\n };\n return await this.suivreBdDeClef({\n id,\n clef,\n f: fFinale,\n fSuivre,\n });\n }\n else {\n const fFinale = async (valeurs) => {\n await f(valeurs || []);\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreBdListe({\n id,\n f: fSuivreBd,\n schéma,\n renvoyerValeur: false,\n });\n };\n return await this.suivreBdDeClef({\n id,\n clef,\n f: fFinale,\n fSuivre: fSuivre,\n });\n }\n }\n async suivreBdListe({ id, f, schéma, renvoyerValeur = true, }) {\n return await this.suivreBd({\n id,\n type: \"set\",\n schéma,\n f: async (bd) => {\n const éléments = renvoyerValeur\n ? (await bd.all()).map((x) => x.value)\n : await bd.all();\n await f(éléments);\n },\n });\n }\n async suivreTypeObjet({ idObjet, f, }) {\n const fFinale = async (vals) => {\n let typeFinal = undefined;\n const { type } = vals;\n if (type) {\n typeFinal = [\"motClef\", \"variable\", \"bd\", \"projet\", \"nuée\"].includes(type)\n ? type\n : undefined;\n }\n else {\n if (vals.bds)\n typeFinal = \"projet\";\n else if (vals.tableaux)\n typeFinal = \"bd\";\n else if (vals.catégorie)\n typeFinal = \"variable\";\n else if (vals.nom)\n typeFinal = \"motClef\";\n }\n await f(typeFinal);\n };\n const schémaObjet = {\n type: \"object\",\n properties: {\n type: { type: \"string\", nullable: true },\n },\n additionalProperties: true,\n };\n const fOublier = await this.suivreBdDic({\n id: idObjet,\n schéma: schémaObjet,\n f: fFinale,\n });\n return fOublier;\n }\n async suivreEmpreinteTêtesBdRécursive({ idBd, f, }) {\n const obtTêteBd = async (bd) => {\n const éléments = await bd.log.heads();\n const tête = éléments[éléments.length - 1]?.hash || \"\";\n return tête;\n };\n const calculerEmpreinte = (texte) => Base64.stringify(md5(texte));\n const fFinale = async (têtes) => {\n await f(calculerEmpreinte(têtes.sort().join()));\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBdsRécursives({\n idBd,\n f: async (bds) => await fSuivreRacine(bds),\n });\n };\n const fBranche = async (id, fSuivreBranche) => {\n return await this.suivreBd({\n id,\n f: async (bd) => {\n const tête = await obtTêteBd(bd);\n await fSuivreBranche(tête);\n },\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreBdsDeBdListe({ id, f, fBranche, fIdBdDeBranche = (b) => b, fRéduction = (branches) => [...new Set(branches.flat())], fCode = (é) => é, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBdListe({ id, f: fSuivreRacine });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f,\n fBranche,\n fIdBdDeBranche,\n fRéduction,\n fCode,\n });\n }\n async suivreBdsDeBdDic({ id, f, fBranche, fIdBdDeBranche = (b) => b, fRéduction = (branches) => [...new Set(branches.flat())], fCode = (é) => é, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBd({\n id,\n f: async (bd) => {\n return await fSuivreRacine((await bd.all()).map((x) => x.value));\n },\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f,\n fBranche,\n fIdBdDeBranche,\n fRéduction,\n fCode,\n });\n }\n async suivreBdsDeFonctionRecherche({ fListe, f, fBranche, fIdBdDeBranche = (b) => b, fRéduction = (branches) => [...new Set(branches.flat())], fCode = (é) => é, }) {\n let _fChangerProfondeur = undefined;\n const fChangerProfondeur = async (p) => {\n if (_fChangerProfondeur)\n await _fChangerProfondeur(p);\n };\n const fListeFinale = async (fSuivreRacine) => {\n const { fOublier: fOublierL, fChangerProfondeur: fChangerL } = await fListe(fSuivreRacine);\n _fChangerProfondeur = fChangerL;\n return fOublierL;\n };\n const fOublier = await suivreBdsDeFonctionListe({\n fListe: fListeFinale,\n f,\n fBranche,\n fIdBdDeBranche,\n fRéduction,\n fCode,\n });\n return { fOublier, fChangerProfondeur };\n }\n async suivreBdSelonCondition({ fRacine, fCondition, f, }) {\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await fCondition(id, async (condition) => {\n fSuivreBd(condition ? id : undefined);\n });\n };\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => await fRacine(fSuivreRacine),\n f: ignorerNonDéfinis(f),\n fSuivre,\n });\n }\n async suivreBdsSelonCondition({ fListe, fCondition, f, }) {\n const fFinale = async (éléments) => {\n const bdsRecherchées = éléments\n .filter((él) => él.état)\n .map((él) => él.id);\n return await f(bdsRecherchées);\n };\n const fBranche = async (id, fSuivreBranche) => {\n const fFinaleSuivreBranche = async (état) => {\n return await fSuivreBranche({ id, état });\n };\n return await fCondition(id, fFinaleSuivreBranche);\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async obtFichierSFIP({ id, max, }) {\n return await toBuffer(await this.obtItérableAsyncSFIP({ id }), max);\n }\n async obtItérableAsyncSFIP({ id, }) {\n const { sfip } = await this.attendreSfipEtOrbite();\n const fs = unixfs(sfip);\n const idc = id.split(\"/\")[0];\n return fs.cat(CID.parse(idc));\n }\n async ajouterÀSFIP({ contenu, nomFichier, }) {\n const { sfip } = await this.attendreSfipEtOrbite();\n const fs = unixfs(sfip);\n const idc = await fs.addFile({ content: contenu });\n return idc.toString() + \"/\" + nomFichier;\n }\n obtClefStockageClient({ clef, parCompte = true, }) {\n return parCompte\n ? `${this.idCompte.slice(this.idCompte.length - 23, this.idCompte.length - 8)} : ${clef}`\n : clef;\n }\n async obtDeStockageLocal({ clef, parCompte = true, }) {\n const clefClient = this.obtClefStockageClient({ clef, parCompte });\n return (await obtStockageLocal(await this.dossier())).getItem(clefClient);\n }\n async sauvegarderAuStockageLocal({ clef, val, parCompte = true, }) {\n const clefClient = this.obtClefStockageClient({ clef, parCompte });\n return (await obtStockageLocal(await this.dossier())).setItem(clefClient, val);\n }\n async effacerDeStockageLocal({ clef, parCompte = true, }) {\n const clefClient = this.obtClefStockageClient({ clef, parCompte });\n return (await obtStockageLocal(await this.dossier())).removeItem(clefClient);\n }\n async obtIdBd({ nom, racine, type, }) {\n const schémaBdRacine = {\n type: \"object\",\n properties: {\n [nom]: { type: \"string\" },\n },\n additionalProperties: true,\n required: [],\n };\n const { bd: bdRacine, fOublier } = typeof racine === \"string\"\n ? await this.ouvrirBdTypée({\n id: racine,\n type: \"keyvalue\",\n schéma: schémaBdRacine,\n })\n : { bd: racine, fOublier: faisRien };\n const clefRequête = bdRacine.address + \":\" + nom;\n await this.verrouObtIdBd.acquire(clefRequête);\n let idBd = (await bdRacine.get(nom));\n const idBdPrécédente = await this.obtDeStockageLocal({ clef: clefRequête });\n if (typeof idBd === \"string\" && idBdPrécédente && idBd !== idBdPrécédente) {\n try {\n await this.combinerBds({\n idBdBase: idBd,\n idBd2: idBdPrécédente,\n });\n await this.effacerBd({ id: idBdPrécédente });\n await this.sauvegarderAuStockageLocal({ clef: clefRequête, val: idBd });\n }\n catch {\n // Rien à faire ; on démissionne !\n }\n }\n // Nous devons confirmer que la base de données spécifiée était du bon genre\n if (typeof idBd === \"string\" && type) {\n try {\n const { fOublier: fOublierBd } = await this.ouvrirBd({\n id: idBd,\n type,\n });\n await fOublierBd();\n this.verrouObtIdBd.release(clefRequête);\n return idBd;\n }\n catch {\n this.verrouObtIdBd.release(clefRequête);\n throw new Error(\"Bd n'existe pas : \" + nom + \" \" + idBd);\n }\n }\n if (!idBd && type) {\n const accès = bdRacine.access;\n const { orbite } = await this.attendreSfipEtOrbite();\n const permission = await accès.estAutorisé(orbite.identity.id);\n if (permission) {\n const optionsAccès = await this.obtOpsAccès({\n idBd: bdRacine.address,\n });\n idBd = await this.créerBdIndépendante({ type, optionsAccès });\n if (!idBd)\n throw new Error(\"Bd non générée\");\n // @ts-expect-error Aucune idée pourquoi ça fonctionne pas\n await bdRacine.set(nom, idBd);\n }\n }\n if (typeof idBd === \"string\")\n await this.sauvegarderAuStockageLocal({ clef: clefRequête, val: idBd });\n if (fOublier)\n await fOublier();\n this.verrouObtIdBd.release(clefRequête);\n return typeof idBd === \"string\" ? idBd : undefined;\n }\n async créerBdIndépendante({ type, optionsAccès, nom, }) {\n const { orbite } = await this.attendreSfipEtOrbite();\n optionsAccès = optionsAccès || (await this.obtOptionsAccès());\n return await orbite.créerBdIndépendante({\n type,\n nom,\n options: {\n AccessController: générerContrôleurConstellation(optionsAccès),\n },\n });\n }\n async effacerBd({ id }) {\n return await this.orbite?.effacerBd({ id });\n }\n async obtOpsAccès({ idBd, }) {\n const { bd, fOublier } = await this.ouvrirBd({ id: idBd });\n const accès = bd.access;\n await fOublier();\n return {\n address: accès.bd.address,\n write: accès.write,\n };\n }\n async suivrePermission({ idObjet, f, }) {\n const { bd, fOublier } = await this.ouvrirBd({ id: idObjet });\n const accès = bd.access;\n const typeAccès = accès.type;\n if (typeAccès === \"ipfs\") {\n const moi = await this.obtIdDispositif();\n await f(accès.write.includes(moi)\n ? MEMBRE\n : undefined);\n await fOublier();\n return faisRien;\n }\n else if (typeAccès === nomTypeContrôleurConstellation) {\n const fFinale = async (utilisateurs) => {\n const mesRôles = utilisateurs\n .filter((u) => u.idCompte === this.idCompte)\n .map((u) => u.rôle);\n const rôlePlusPuissant = mesRôles.includes(MODÉRATEUR)\n ? MODÉRATEUR\n : mesRôles.includes(MEMBRE)\n ? MEMBRE\n : undefined;\n await f(rôlePlusPuissant);\n };\n const fOublierSuivreAccès = await accès.suivreUtilisateursAutorisés(fFinale);\n return async () => {\n await fOublierSuivreAccès();\n await fOublier();\n };\n }\n else {\n throw new Error(`Type d'accès ${typeAccès} non reconnu.`);\n }\n }\n async suivrePermissionÉcrire({ id, f, }) {\n const fFinale = async (rôle) => {\n await f(rôle !== undefined);\n };\n return await this.suivrePermission({ idObjet: id, f: fFinale });\n }\n async suivreAccèsBd({ id, f, }) {\n const fFinale = async (bd) => {\n const accès = bd.access;\n const typeAccès = accès.type;\n if (typeAccès === \"ipfs\") {\n const listeAccès = accès.write.map((id) => {\n return {\n idCompte: id,\n rôle: MODÉRATEUR,\n };\n });\n await f(listeAccès);\n }\n else if (typeAccès === nomTypeContrôleurConstellation) {\n const fOublierAutorisés = await accès.suivreUtilisateursAutorisés(f);\n return fOublierAutorisés;\n }\n return faisRien;\n };\n return await this.suivreBd({\n id,\n f: fFinale,\n });\n }\n async suivreBdsRécursives({ idBd, f, }) {\n const dicBds = {};\n const fFinale = async () => {\n await f(Object.keys(dicBds));\n };\n const verrou = new Semaphore();\n const enleverRequêtesDe = async (de) => {\n delete dicBds[de];\n await Promise.all(Object.keys(dicBds).map(async (id) => {\n if (!dicBds[id])\n return;\n dicBds[id].requêtes.delete(de);\n if (!dicBds[id].requêtes.size) {\n await dicBds[id].fOublier();\n }\n }));\n };\n // On ne suit pas automatiquement les BDs ou tableaux dont celui d'intérêt a été copié...ça pourait être très volumineu\n const clefsÀExclure = [\"copiéDe\"];\n const _suivreBdsRécursives = async (id, de) => {\n const extraireÉléments = (l_vals) => {\n return l_vals\n .map((v) => {\n if (typeof v === \"string\")\n return [v];\n if (Array.isArray(v))\n return v;\n if (typeof v === \"object\")\n return Object.values(v);\n return [];\n })\n .flat()\n .filter((v) => isValidAddress(v));\n };\n const fSuivreBd = async (vals) => {\n // Cette fonction détectera les éléments d'une liste ou d'un dictionnaire\n // (à un niveau de profondeur) qui représentent une adresse de BD Orbit.\n let idsOrbite = [];\n if (typeof vals === \"object\") {\n idsOrbite = extraireÉléments(Object.entries(vals)\n .filter((x) => !clefsÀExclure.includes(x[0]))\n .map((x) => x[1]));\n idsOrbite.push(...extraireÉléments(Object.keys(vals)));\n }\n else if (Array.isArray(vals)) {\n idsOrbite = extraireÉléments(vals);\n }\n else if (typeof vals === \"string\") {\n idsOrbite = [vals];\n }\n const nouvelles = idsOrbite.filter((id_) => !dicBds[id].sousBds.includes(id_));\n const obsolètes = dicBds[id].sousBds.filter((id_) => !idsOrbite.includes(id_));\n dicBds[id].sousBds = idsOrbite;\n await Promise.all(obsolètes.map(async (o) => {\n dicBds[o]?.requêtes.delete(id);\n if (!dicBds[o]?.requêtes.size)\n await dicBds[o]?.fOublier();\n }));\n await Promise.all(nouvelles.map(async (id_) => await _suivreBdsRécursives(id_, id)));\n fFinale();\n };\n await verrou.acquire(id);\n if (dicBds[id]) {\n dicBds[id].requêtes.add(de);\n return;\n }\n const { bd, fOublier } = await this.ouvrirBd({ id });\n const { type } = bd;\n await fOublier();\n dicBds[id] = {\n requêtes: new Set([de]),\n sousBds: [],\n fOublier: async () => {\n await fOublierSuiviBd();\n await enleverRequêtesDe(id);\n },\n };\n let fOublierSuiviBd;\n if (type === \"keyvalue\") {\n fOublierSuiviBd = await this.suivreBdDic({ id, f: fSuivreBd });\n }\n else if (type === \"ordered-keyvalue\") {\n fOublierSuiviBd = await this.suivreBdDicOrdonnée({ id, f: fSuivreBd });\n }\n else if (type === \"set\") {\n fOublierSuiviBd = await this.suivreBdListe({ id, f: fSuivreBd });\n }\n else {\n fOublierSuiviBd = faisRien; // Rien à suivre mais il faut l'inclure quand même !\n }\n verrou.release(id);\n fFinale();\n };\n await _suivreBdsRécursives(idBd, \"\");\n const fOublier = async () => {\n await Promise.all(Object.values(dicBds).map((v) => v.fOublier()));\n };\n return fOublier;\n }\n async fermerCompte() {\n if (this.réseau)\n await this.réseau.fermer();\n if (this.favoris)\n await this.favoris.fermer();\n if (this.automatisations)\n await this.automatisations.fermer();\n }\n async fermer() {\n await this.attendreInitialisée();\n const { orbite } = await this.attendreSfipEtOrbite();\n await (await obtStockageLocal(await this.dossier())).fermer?.();\n await this.fermerCompte();\n await this.épingles.fermer();\n await orbite.fermer({ arrêterOrbite: !this._orbiteExterne });\n if (this.sfip && !this._sfipExterne)\n await this.sfip.stop();\n // Effacer fichier verrour\n await this.effacerVerrou();\n }\n async effacerDispositif() {\n await this.fermer();\n if (indexedDB) {\n if (indexedDB.databases) {\n const indexedDbDatabases = await indexedDB.databases();\n await Promise.all(indexedDbDatabases.map((bd) => {\n if (bd.name)\n indexedDB.deleteDatabase(bd.name);\n }));\n }\n else {\n console.warn(\"On a pas pu tout effacer.\");\n }\n }\n else {\n const fs = await import(\"fs\");\n const stockageLocal = await obtStockageLocal(await this.dossier());\n stockageLocal.clear();\n fs.rmdirSync(await this.dossier());\n }\n }\n async exporterDispositif({ nomFichier, }) {\n if (isNode || isElectronMain) {\n const fs = await import(\"fs\");\n const path = await import(\"path\");\n const ajouterDossierÀZip = ({ dossier, zip, }) => {\n const dossiers = fs.readdirSync(dossier);\n dossiers.map((d) => {\n const stat = fs.statSync(d);\n if (stat?.isDirectory()) {\n ajouterDossierÀZip({\n dossier: path.join(dossier, d),\n zip: zip.folder(d),\n });\n }\n else {\n const fluxFichier = fs.createReadStream(path.join(dossier, d));\n zip.file(d, fluxFichier);\n }\n });\n };\n const zip = new JSZip();\n ajouterDossierÀZip({\n dossier: await this.dossier(),\n zip,\n });\n await sauvegarderFichierZip({ fichierZip: zip, nomFichier });\n }\n else if (indexedDB?.databases) {\n const sauvegarderBdIndexeÀZip = ({ bd, zip, }) => {\n const { name: nomBd } = bd;\n if (nomBd) {\n const dossierZipBd = zip.folder(nomBd);\n if (!dossierZipBd)\n throw new Error(nomBd);\n const bdOuverte = indexedDB.open(nomBd).result;\n const tableauxBdIndexe = bdOuverte.objectStoreNames;\n const listeTableaux = [...Array(tableauxBdIndexe.length).keys()]\n .map((i) => tableauxBdIndexe.item(i))\n .filter((x) => !!x);\n listeTableaux.map((tbl) => dossierZipBd.file(tbl, new indexedDbStream.IndexedDbReadStream({\n databaseName: nomBd,\n objectStoreName: tbl,\n })));\n }\n };\n const fichierZip = new JSZip();\n const indexedDbDatabases = await indexedDB.databases();\n const dossierZipIndexe = fichierZip.folder(\"bdIndexe\");\n if (!dossierZipIndexe)\n throw new Error(\"Erreur Bd Indexe...\");\n indexedDbDatabases.forEach((bd) => {\n sauvegarderBdIndexeÀZip({ bd, zip: dossierZipIndexe });\n });\n fichierZip.file(\"stockageLocal\", JSON.stringify(await exporterStockageLocal(await this.dossier())));\n await sauvegarderFichierZip({ fichierZip, nomFichier });\n }\n else {\n throw new Error(\"Sauvegarde non implémentée.\");\n }\n }\n async rétablirDispositif() {\n await this.effacerDispositif();\n if (isNode || isElectronMain) {\n throw new Error(\"Non implémenté\");\n }\n else {\n throw new Error(\"Non implémenté\");\n }\n }\n static async créer(opts = {}) {\n const client = new Constellation(opts);\n await client.attendreInitialisée();\n return client;\n }\n}\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivreDispositifs\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivreIdCompte\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivreEmpreinteT\\u00EAtesBdR\\u00E9cursive\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivrePermission\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivrePermission\\u00C9crire\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivreAcc\\u00E8sBd\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivreBdsR\\u00E9cursives\", null);\n//# sourceMappingURL=client.js.map","import Semaphore from \"@chriscdn/promise-semaphore\";\nimport { Constellation } from \"../client.js\";\nimport { ERREUR_INIT_IPA, ERREUR_EXÉCUTION_IPA, ERREUR_FONCTION_MANQUANTE, ERREUR_PAS_UNE_FONCTION, } from \"@constl/mandataire\";\nimport { v4 as uuidv4 } from \"uuid\";\nexport class EnveloppeIpa {\n ipa;\n _messagesEnAttente;\n prêt;\n dicFRetourSuivi;\n opts;\n fsMessages;\n fsErreurs;\n _verrou;\n constructor(fMessage, fErreur, opts = {}) {\n this.fsMessages = {};\n this.fsErreurs = {};\n this.connecterÉcouteurs({\n fMessage,\n fErreur,\n });\n this.opts = opts instanceof Constellation ? {} : opts;\n if (opts instanceof Constellation)\n this.ipa = opts;\n this.dicFRetourSuivi = {};\n this.prêt = false;\n this._messagesEnAttente = [];\n this._verrou = new Semaphore();\n this.init();\n }\n fMessage(m) {\n Object.values(this.fsMessages).forEach((f) => f(m));\n }\n fErreur({ erreur, id, code }) {\n Object.values(this.fsErreurs).forEach((f) => f({ erreur, id, code }));\n }\n async init() {\n await this._verrou.acquire(\"init\");\n if (this.ipa) {\n this._verrou.release(\"init\");\n return this.ipa;\n } // Nécessaire si on a plus qu'un mandataire connecté à la même instance Constellation\n try {\n this.ipa = await Constellation.créer(this.opts);\n }\n catch (e) {\n this.fErreur({\n erreur: e.toString(),\n code: e.name === \"Error\" ? ERREUR_INIT_IPA : e.name,\n });\n throw e;\n }\n this._messagesEnAttente.forEach((m) => this._gérerMessage(m));\n this.prêt = true;\n this._verrou.release(\"init\");\n return this.ipa;\n }\n async gérerMessage(message) {\n if (this.prêt) {\n await this._gérerMessage(message);\n }\n else {\n this._messagesEnAttente.unshift(message);\n }\n }\n async _gérerMessage(message) {\n if (!this.ipa) {\n this.fErreur({\n erreur: \"IPA non initialisé\",\n id: message.id,\n code: ERREUR_INIT_IPA,\n });\n return;\n }\n const { type } = message;\n switch (type) {\n case \"suivre\": {\n const { id, fonction, args, nomArgFonction } = message;\n const fonctionIPA = this.extraireFonctionIPA(fonction, id);\n if (!fonctionIPA)\n return; // L'erreur est déjà envoyée par extraireFonctionIPA\n const fFinale = (données) => {\n const messageRetour = {\n type: \"suivre\",\n id,\n données,\n };\n this.fMessage(messageRetour);\n };\n args[nomArgFonction] = fFinale;\n try {\n const retour = (await fonctionIPA(args));\n const retourFinal = typeof retour === \"function\" ? { fOublier: retour } : retour;\n this.dicFRetourSuivi[id] = retourFinal;\n const messageRetour = {\n type: \"suivrePrêt\",\n id,\n };\n if (typeof retour !== \"function\")\n messageRetour.fonctions = Object.keys(retour);\n this.fMessage(messageRetour);\n }\n catch (e) {\n this.fErreur({\n erreur: e.toString() + e.stack.toString(),\n id,\n code: ERREUR_EXÉCUTION_IPA,\n });\n }\n break;\n }\n case \"action\": {\n const { id, fonction, args } = message;\n const fonctionIPA = this.extraireFonctionIPA(fonction, id);\n if (!fonctionIPA)\n return; // L'erreur est déjà envoyée par extraireFonctionIPA\n try {\n const résultat = await fonctionIPA(args);\n const messageRetour = {\n type: \"action\",\n id,\n résultat,\n };\n this.fMessage(messageRetour);\n }\n catch (e) {\n this.fErreur({\n erreur: e.toString() + e.stack.toString(),\n id,\n code: ERREUR_EXÉCUTION_IPA,\n });\n }\n break;\n }\n case \"retour\": {\n const { id, fonction, args } = message;\n const retour = this.dicFRetourSuivi[id];\n if (retour)\n await retour[fonction](args);\n if (fonction === \"fOublier\")\n delete this.dicFRetourSuivi[id];\n break;\n }\n default: {\n this.fErreur({\n erreur: `Type de requête ${type} non reconnu dans message ${message}`,\n id: message.id,\n code: ERREUR_EXÉCUTION_IPA,\n });\n break;\n }\n }\n }\n extraireFonctionIPA(adresseFonction, idMessage) {\n const erreur = `Fonction Constellation.${adresseFonction.join(\".\")} n'existe pas ou n'est pas une fonction.`;\n let fonctionIPA = this.ipa;\n for (const [i, attr] of adresseFonction.entries()) {\n if (typeof fonctionIPA === \"object\" &&\n attr in fonctionIPA &&\n fonctionIPA[attr]) {\n // Vive JavaScript et `this`!\n if (i === adresseFonction.length - 1) {\n // @ts-expect-error Ça, ça me dépasse\n fonctionIPA = fonctionIPA[attr].bind(fonctionIPA);\n }\n else {\n fonctionIPA = fonctionIPA[attr];\n }\n }\n else {\n this.fErreur({\n erreur,\n id: idMessage,\n code: ERREUR_FONCTION_MANQUANTE,\n });\n return undefined;\n }\n if (!fonctionIPA) {\n this.fErreur({\n erreur,\n id: idMessage,\n code: ERREUR_FONCTION_MANQUANTE,\n });\n return undefined;\n }\n }\n if (typeof fonctionIPA !== \"function\") {\n this.fErreur({ erreur, id: idMessage, code: ERREUR_PAS_UNE_FONCTION });\n return undefined;\n }\n return fonctionIPA;\n }\n connecterÉcouteurs({ fMessage, fErreur, }) {\n const idÉcouteurs = uuidv4();\n this.fsMessages[idÉcouteurs] = fMessage;\n this.fsErreurs[idÉcouteurs] = fErreur;\n return () => {\n delete this.fsMessages[idÉcouteurs];\n delete this.fsErreurs[idÉcouteurs];\n };\n }\n async fermer() {\n // Avant de fermer, il faut être sûr qu'on a bien initialisé !\n const ipa = await this.init();\n await ipa.fermer();\n }\n}\n//# sourceMappingURL=enveloppe.js.map","import { générerMandataire, Mandatairifiable, } from \"@constl/mandataire\";\nimport { EnveloppeIpa } from \"./enveloppe.js\";\nexport class MandataireProc extends Mandatairifiable {\n ipa;\n constructor(opts = {}) {\n super();\n this.ipa = new EnveloppeIpa((m) => this.recevoirMessageDIpa(m), ({ erreur, idRequête, code, }) => {\n const messageErreur = {\n type: \"erreur\",\n id: idRequête,\n erreur,\n codeErreur: code,\n };\n this.recevoirMessageDIpa(messageErreur);\n }, opts);\n }\n envoyerMessageÀIpa(message) {\n this.ipa.gérerMessage(message);\n }\n}\nexport const générerMandataireProc = (opts = {}) => {\n return générerMandataire(new MandataireProc(opts));\n};\n//# sourceMappingURL=ipaProc.js.map","export function downloadFile(filename: string, content: string | Uint8Array) {\n const element = document.createElement('a');\n\n let url: string;\n if (content instanceof Uint8Array) {\n url = URL.createObjectURL(new Blob([content.buffer]));\n } else {\n url = content;\n }\n element.setAttribute('href', url);\n element.setAttribute('download', filename);\n\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n}\n\nexport function selectTranslation(options?: {[language: string]: string}): string | undefined {\n // Constellation has a multilingual-centric structure, but for now the Riff.CC site is monolingual,\n // so we'll just use any name. Once Riff.CC has an internationalised interface, we can match displayed\n // usernames with the viewer's chosen site language here, and do fancy stuff looking up fallback languages.\n\n // Another idea: we could also set up community translations of the Riff.CC site interface itself with\n // Kilimukku, which is a Constellation-based community translation software.\n return options && Object.keys(options).length ? Object.values(options)[0] : undefined;\n}\n\nexport async function copyText(text: string | undefined) {\n if (!text) return;\n await navigator.clipboard.writeText(text);\n}\n\nexport const RIFFCC_PROTOCOL = 'Riff.CC';\n","import type {App} from 'vue';\n\nimport {mandataire} from '@constl/ipa';\nimport {RIFFCC_PROTOCOL} from '/@/utils';\n\nexport default {\n install: (app: App) => {\n const client = mandataire.générerMandataireProc({protocoles: [RIFFCC_PROTOCOL]});\n app.config.globalProperties.$constl = client;\n app.provide('constl', client);\n },\n};\n","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VAlertTitle = createSimpleFunctional('v-alert-title');\n//# sourceMappingURL=VAlertTitle.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VAlert.css\";\n\n// Components\nimport { VAlertTitle } from \"./VAlertTitle.mjs\";\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nconst allowedTypes = ['success', 'info', 'warning', 'error'];\nexport const makeVAlertProps = propsFactory({\n border: {\n type: [Boolean, String],\n validator: val => {\n return typeof val === 'boolean' || ['top', 'end', 'bottom', 'start'].includes(val);\n }\n },\n borderColor: String,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$close'\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close'\n },\n icon: {\n type: [Boolean, String, Function, Object],\n default: null\n },\n modelValue: {\n type: Boolean,\n default: true\n },\n prominent: Boolean,\n title: String,\n text: String,\n type: {\n type: String,\n validator: val => allowedTypes.includes(val)\n },\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'flat'\n })\n}, 'VAlert');\nexport const VAlert = genericComponent()({\n name: 'VAlert',\n props: makeVAlertProps(),\n emits: {\n 'click:close': e => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const icon = computed(() => {\n if (props.icon === false) return undefined;\n if (!props.type) return props.icon;\n return props.icon ?? `$${props.type}`;\n });\n const variantProps = computed(() => ({\n color: props.color ?? props.type,\n variant: props.variant\n }));\n const {\n themeClasses\n } = provideTheme(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(variantProps);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'borderColor'));\n const {\n t\n } = useLocale();\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick(e) {\n isActive.value = false;\n emit('click:close', e);\n }\n }));\n return () => {\n const hasPrepend = !!(slots.prepend || icon.value);\n const hasTitle = !!(slots.title || props.title);\n const hasClose = !!(slots.close || props.closable);\n return isActive.value && _createVNode(props.tag, {\n \"class\": ['v-alert', props.border && {\n 'v-alert--border': !!props.border,\n [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true\n }, {\n 'v-alert--prominent': props.prominent\n }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],\n \"role\": \"alert\"\n }, {\n default: () => [genOverlays(false, 'v-alert'), props.border && _createVNode(\"div\", {\n \"key\": \"border\",\n \"class\": ['v-alert__border', textColorClasses.value],\n \"style\": textColorStyles.value\n }, null), hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-alert__prepend\"\n }, [!slots.prepend ? _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"density\": props.density,\n \"icon\": icon.value,\n \"size\": props.prominent ? 44 : 28\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !icon.value,\n \"defaults\": {\n VIcon: {\n density: props.density,\n icon: icon.value,\n size: props.prominent ? 44 : 28\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-alert__content\"\n }, [hasTitle && _createVNode(VAlertTitle, {\n \"key\": \"title\"\n }, {\n default: () => [slots.title?.() ?? props.title]\n }), slots.text?.() ?? props.text, slots.default?.()]), slots.append && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-alert__append\"\n }, [slots.append()]), hasClose && _createVNode(\"div\", {\n \"key\": \"close\",\n \"class\": \"v-alert__close\"\n }, [!slots.close ? _createVNode(VBtn, _mergeProps({\n \"key\": \"close-btn\",\n \"icon\": props.closeIcon,\n \"size\": \"x-small\",\n \"variant\": \"text\"\n }, closeProps.value), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"close-defaults\",\n \"defaults\": {\n VBtn: {\n icon: props.closeIcon,\n size: 'x-small',\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.close?.({\n props: closeProps.value\n })]\n })])]\n });\n };\n }\n});\n//# sourceMappingURL=VAlert.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLabel.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeThemeProps } from \"../../composables/theme.mjs\"; // Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVLabelProps = propsFactory({\n text: String,\n onClick: EventProp(),\n ...makeComponentProps(),\n ...makeThemeProps()\n}, 'VLabel');\nexport const VLabel = genericComponent()({\n name: 'VLabel',\n props: makeVLabelProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(\"label\", {\n \"class\": ['v-label', {\n 'v-label--clickable': !!props.onClick\n }, props.class],\n \"style\": props.style,\n \"onClick\": props.onClick\n }, [props.text, slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VLabel.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSelectionControlGroup.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeThemeProps } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, onScopeDispose, provide, toRef } from 'vue';\nimport { deepEqual, genericComponent, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VSelectionControlGroupSymbol = Symbol.for('vuetify:selection-control-group');\nexport const makeSelectionControlGroupProps = propsFactory({\n color: String,\n disabled: {\n type: Boolean,\n default: null\n },\n defaultsTarget: String,\n error: Boolean,\n id: String,\n inline: Boolean,\n falseIcon: IconValue,\n trueIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n multiple: {\n type: Boolean,\n default: null\n },\n name: String,\n readonly: {\n type: Boolean,\n default: null\n },\n modelValue: null,\n type: String,\n valueComparator: {\n type: Function,\n default: deepEqual\n },\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeThemeProps()\n}, 'SelectionControlGroup');\nexport const makeVSelectionControlGroupProps = propsFactory({\n ...makeSelectionControlGroupProps({\n defaultsTarget: 'VSelectionControl'\n })\n}, 'VSelectionControlGroup');\nexport const VSelectionControlGroup = genericComponent()({\n name: 'VSelectionControlGroup',\n props: makeVSelectionControlGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const modelValue = useProxiedModel(props, 'modelValue');\n const uid = getUid();\n const id = computed(() => props.id || `v-selection-control-group-${uid}`);\n const name = computed(() => props.name || id.value);\n const updateHandlers = new Set();\n provide(VSelectionControlGroupSymbol, {\n modelValue,\n forceUpdate: () => {\n updateHandlers.forEach(fn => fn());\n },\n onForceUpdate: cb => {\n updateHandlers.add(cb);\n onScopeDispose(() => {\n updateHandlers.delete(cb);\n });\n }\n });\n provideDefaults({\n [props.defaultsTarget]: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n density: toRef(props, 'density'),\n error: toRef(props, 'error'),\n inline: toRef(props, 'inline'),\n modelValue,\n multiple: computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),\n name,\n falseIcon: toRef(props, 'falseIcon'),\n trueIcon: toRef(props, 'trueIcon'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n type: toRef(props, 'type'),\n valueComparator: toRef(props, 'valueComparator')\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-selection-control-group', {\n 'v-selection-control-group--inline': props.inline\n }, props.class],\n \"style\": props.style,\n \"role\": props.type === 'radio' ? 'radiogroup' : undefined\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VSelectionControlGroup.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VSelectionControl.css\";\n\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\";\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from \"../VSelectionControlGroup/VSelectionControlGroup.mjs\"; // Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useDensity } from \"../../composables/density.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, matchesSelector, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n baseColor: String,\n trueValue: null,\n falseValue: null,\n value: null,\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps()\n}, 'VSelectionControl');\nexport function useSelectionControl(props) {\n const group = inject(VSelectionControlGroupSymbol, undefined);\n const {\n densityClasses\n } = useDensity(props);\n const modelValue = useProxiedModel(props, 'modelValue');\n const trueValue = computed(() => props.trueValue !== undefined ? props.trueValue : props.value !== undefined ? props.value : true);\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false);\n const isMultiple = computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value));\n const model = computed({\n get() {\n const val = group ? group.modelValue.value : modelValue.value;\n return isMultiple.value ? wrapInArray(val).some(v => props.valueComparator(v, trueValue.value)) : props.valueComparator(val, trueValue.value);\n },\n set(val) {\n if (props.readonly) return;\n const currentValue = val ? trueValue.value : falseValue.value;\n let newVal = currentValue;\n if (isMultiple.value) {\n newVal = val ? [...wrapInArray(modelValue.value), currentValue] : wrapInArray(modelValue.value).filter(item => !props.valueComparator(item, trueValue.value));\n }\n if (group) {\n group.modelValue.value = newVal;\n } else {\n modelValue.value = newVal;\n }\n }\n });\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(computed(() => {\n if (props.error || props.disabled) return undefined;\n return model.value ? props.color : props.baseColor;\n }));\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(computed(() => {\n return model.value && !props.error && !props.disabled ? props.color : props.baseColor;\n }));\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon);\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n icon\n };\n}\nexport const VSelectionControl = genericComponent()({\n name: 'VSelectionControl',\n directives: {\n Ripple\n },\n inheritAttrs: false,\n props: makeVSelectionControlProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n trueValue\n } = useSelectionControl(props);\n const uid = getUid();\n const isFocused = shallowRef(false);\n const isFocusVisible = shallowRef(false);\n const input = ref();\n const id = computed(() => props.id || `input-${uid}`);\n const isInteractive = computed(() => !props.disabled && !props.readonly);\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value;\n }\n });\n function onFocus(e) {\n if (!isInteractive.value) return;\n isFocused.value = true;\n if (matchesSelector(e.target, ':focus-visible') !== false) {\n isFocusVisible.value = true;\n }\n }\n function onBlur() {\n isFocused.value = false;\n isFocusVisible.value = false;\n }\n function onClickLabel(e) {\n e.stopPropagation();\n }\n function onInput(e) {\n if (!isInteractive.value) {\n if (input.value) {\n // model value is not updated when input is not interactive\n // but the internal checked state of the input is still updated,\n // so here it's value is restored\n input.value.checked = model.value;\n }\n return;\n }\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate());\n }\n model.value = e.target.checked;\n }\n useRender(() => {\n const label = slots.label ? slots.label({\n label: props.label,\n props: {\n for: id.value\n }\n }) : props.label;\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const inputNode = _createVNode(\"input\", _mergeProps({\n \"ref\": input,\n \"checked\": model.value,\n \"disabled\": !!props.disabled,\n \"id\": id.value,\n \"onBlur\": onBlur,\n \"onFocus\": onFocus,\n \"onInput\": onInput,\n \"aria-disabled\": !!props.disabled,\n \"aria-label\": props.label,\n \"type\": props.type,\n \"value\": trueValue.value,\n \"name\": props.name,\n \"aria-checked\": props.type === 'checkbox' ? model.value : undefined\n }, inputAttrs), null);\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-selection-control', {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline\n }, densityClasses.value, props.class]\n }, rootAttrs, {\n \"style\": props.style\n }), [_createVNode(\"div\", {\n \"class\": ['v-selection-control__wrapper', textColorClasses.value],\n \"style\": textColorStyles.value\n }, [slots.default?.({\n backgroundColorClasses,\n backgroundColorStyles\n }), _withDirectives(_createVNode(\"div\", {\n \"class\": ['v-selection-control__input']\n }, [slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n inputNode,\n icon: icon.value,\n props: {\n onFocus,\n onBlur,\n id: id.value\n }\n }) ?? _createVNode(_Fragment, null, [icon.value && _createVNode(VIcon, {\n \"key\": \"icon\",\n \"icon\": icon.value\n }, null), inputNode])]), [[_resolveDirective(\"ripple\"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && _createVNode(VLabel, {\n \"for\": id.value,\n \"onClick\": onClickLabel\n }, {\n default: () => [label]\n })]);\n });\n return {\n isFocused,\n input\n };\n }\n});\n//# sourceMappingURL=VSelectionControl.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVSelectionControlProps, VSelectionControl } from \"../VSelectionControl/VSelectionControl.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCheckboxBtnProps = propsFactory({\n indeterminate: Boolean,\n indeterminateIcon: {\n type: IconValue,\n default: '$checkboxIndeterminate'\n },\n ...makeVSelectionControlProps({\n falseIcon: '$checkboxOff',\n trueIcon: '$checkboxOn'\n })\n}, 'VCheckboxBtn');\nexport const VCheckboxBtn = genericComponent()({\n name: 'VCheckboxBtn',\n props: makeVCheckboxBtnProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:indeterminate': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const indeterminate = useProxiedModel(props, 'indeterminate');\n const model = useProxiedModel(props, 'modelValue');\n function onChange(v) {\n if (indeterminate.value) {\n indeterminate.value = false;\n }\n }\n const falseIcon = computed(() => {\n return indeterminate.value ? props.indeterminateIcon : props.falseIcon;\n });\n const trueIcon = computed(() => {\n return indeterminate.value ? props.indeterminateIcon : props.trueIcon;\n });\n useRender(() => {\n const controlProps = omit(VSelectionControl.filterProps(props), ['modelValue']);\n return _createVNode(VSelectionControl, _mergeProps(controlProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": [$event => model.value = $event, onChange],\n \"class\": ['v-checkbox-btn', props.class],\n \"style\": props.style,\n \"type\": \"checkbox\",\n \"falseIcon\": falseIcon.value,\n \"trueIcon\": trueIcon.value,\n \"aria-checked\": indeterminate.value ? 'mixed' : undefined\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VCheckboxBtn.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useLocale } from \"../../composables/locale.mjs\"; // Types\nexport function useInputIcon(props) {\n const {\n t\n } = useLocale();\n function InputIcon(_ref) {\n let {\n name\n } = _ref;\n const localeKey = {\n prepend: 'prependAction',\n prependInner: 'prependAction',\n append: 'appendAction',\n appendInner: 'appendAction',\n clear: 'clear'\n }[name];\n const listener = props[`onClick:${name}`];\n const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? '') : undefined;\n return _createVNode(VIcon, {\n \"icon\": props[`${name}Icon`],\n \"aria-label\": label,\n \"onClick\": listener\n }, null);\n }\n return {\n InputIcon\n };\n}\n//# sourceMappingURL=InputIcon.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VMessages.css\";\n\n// Components\nimport { VSlideYTransition } from \"../transitions/index.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeVMessagesProps = propsFactory({\n active: Boolean,\n color: String,\n messages: {\n type: [Array, String],\n default: () => []\n },\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition,\n leaveAbsolute: true,\n group: true\n }\n })\n}, 'VMessages');\nexport const VMessages = genericComponent()({\n name: 'VMessages',\n props: makeVMessagesProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const messages = computed(() => wrapInArray(props.messages));\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(computed(() => props.color));\n useRender(() => _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"tag\": \"div\",\n \"class\": ['v-messages', textColorClasses.value, props.class],\n \"style\": [textColorStyles.value, props.style],\n \"role\": \"alert\",\n \"aria-live\": \"polite\"\n }, {\n default: () => [props.active && messages.value.map((message, i) => _createVNode(\"div\", {\n \"class\": \"v-messages__message\",\n \"key\": `${i}-${messages.value}`\n }, [slots.message ? slots.message({\n message\n }) : message]))]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VMessages.mjs.map","// Composables\nimport { useProxiedModel } from \"./proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { EventProp, getCurrentInstanceName, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeFocusProps = propsFactory({\n focused: Boolean,\n 'onUpdate:focused': EventProp()\n}, 'focus');\nexport function useFocus(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const isFocused = useProxiedModel(props, 'focused');\n const focusClasses = computed(() => {\n return {\n [`${name}--focused`]: isFocused.value\n };\n });\n function focus() {\n isFocused.value = true;\n }\n function blur() {\n isFocused.value = false;\n }\n return {\n focusClasses,\n isFocused,\n focus,\n blur\n };\n}\n//# sourceMappingURL=focus.mjs.map","// Composables\nimport { useProxiedModel } from \"./proxiedModel.mjs\"; // Utilities\nimport { computed, inject, markRaw, provide, ref, shallowRef, toRef, watch } from 'vue';\nimport { consoleWarn, propsFactory } from \"../util/index.mjs\"; // Types\nexport const FormKey = Symbol.for('vuetify:form');\nexport const makeFormProps = propsFactory({\n disabled: Boolean,\n fastFail: Boolean,\n readonly: Boolean,\n modelValue: {\n type: Boolean,\n default: null\n },\n validateOn: {\n type: String,\n default: 'input'\n }\n}, 'form');\nexport function createForm(props) {\n const model = useProxiedModel(props, 'modelValue');\n const isDisabled = computed(() => props.disabled);\n const isReadonly = computed(() => props.readonly);\n const isValidating = shallowRef(false);\n const items = ref([]);\n const errors = ref([]);\n async function validate() {\n const results = [];\n let valid = true;\n errors.value = [];\n isValidating.value = true;\n for (const item of items.value) {\n const itemErrorMessages = await item.validate();\n if (itemErrorMessages.length > 0) {\n valid = false;\n results.push({\n id: item.id,\n errorMessages: itemErrorMessages\n });\n }\n if (!valid && props.fastFail) break;\n }\n errors.value = results;\n isValidating.value = false;\n return {\n valid,\n errors: errors.value\n };\n }\n function reset() {\n items.value.forEach(item => item.reset());\n }\n function resetValidation() {\n items.value.forEach(item => item.resetValidation());\n }\n watch(items, () => {\n let valid = 0;\n let invalid = 0;\n const results = [];\n for (const item of items.value) {\n if (item.isValid === false) {\n invalid++;\n results.push({\n id: item.id,\n errorMessages: item.errorMessages\n });\n } else if (item.isValid === true) valid++;\n }\n errors.value = results;\n model.value = invalid > 0 ? false : valid === items.value.length ? true : null;\n }, {\n deep: true,\n flush: 'post'\n });\n provide(FormKey, {\n register: _ref => {\n let {\n id,\n vm,\n validate,\n reset,\n resetValidation\n } = _ref;\n if (items.value.some(item => item.id === id)) {\n consoleWarn(`Duplicate input name \"${id}\"`);\n }\n items.value.push({\n id,\n validate,\n reset,\n resetValidation,\n vm: markRaw(vm),\n isValid: null,\n errorMessages: []\n });\n },\n unregister: id => {\n items.value = items.value.filter(item => {\n return item.id !== id;\n });\n },\n update: (id, isValid, errorMessages) => {\n const found = items.value.find(item => item.id === id);\n if (!found) return;\n found.isValid = isValid;\n found.errorMessages = errorMessages;\n },\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validateOn: toRef(props, 'validateOn')\n });\n return {\n errors,\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validate,\n reset,\n resetValidation\n };\n}\nexport function useForm() {\n return inject(FormKey, null);\n}\n//# sourceMappingURL=form.mjs.map","// Composables\nimport { makeFocusProps } from \"./focus.mjs\";\nimport { useForm } from \"./form.mjs\";\nimport { useProxiedModel } from \"./proxiedModel.mjs\";\nimport { useToggleScope } from \"./toggleScope.mjs\"; // Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, shallowRef, unref, watch } from 'vue';\nimport { getCurrentInstance, getCurrentInstanceName, getUid, propsFactory, wrapInArray } from \"../util/index.mjs\"; // Types\nexport const makeValidationProps = propsFactory({\n disabled: {\n type: Boolean,\n default: null\n },\n error: Boolean,\n errorMessages: {\n type: [Array, String],\n default: () => []\n },\n maxErrors: {\n type: [Number, String],\n default: 1\n },\n name: String,\n label: String,\n readonly: {\n type: Boolean,\n default: null\n },\n rules: {\n type: Array,\n default: () => []\n },\n modelValue: null,\n validateOn: String,\n validationValue: null,\n ...makeFocusProps()\n}, 'validation');\nexport function useValidation(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getUid();\n const model = useProxiedModel(props, 'modelValue');\n const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);\n const form = useForm();\n const internalErrorMessages = ref([]);\n const isPristine = shallowRef(true);\n const isDirty = computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));\n const isDisabled = computed(() => !!(props.disabled ?? form?.isDisabled.value));\n const isReadonly = computed(() => !!(props.readonly ?? form?.isReadonly.value));\n const errorMessages = computed(() => {\n return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;\n });\n const validateOn = computed(() => {\n let value = (props.validateOn ?? form?.validateOn.value) || 'input';\n if (value === 'lazy') value = 'input lazy';\n if (value === 'eager') value = 'input eager';\n const set = new Set(value?.split(' ') ?? []);\n return {\n input: set.has('input'),\n blur: set.has('blur') || set.has('input') || set.has('invalid-input'),\n invalidInput: set.has('invalid-input'),\n lazy: set.has('lazy'),\n eager: set.has('eager')\n };\n });\n const isValid = computed(() => {\n if (props.error || props.errorMessages?.length) return false;\n if (!props.rules.length) return true;\n if (isPristine.value) {\n return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;\n } else {\n return !internalErrorMessages.value.length;\n }\n });\n const isValidating = shallowRef(false);\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: isValid.value === false,\n [`${name}--dirty`]: isDirty.value,\n [`${name}--disabled`]: isDisabled.value,\n [`${name}--readonly`]: isReadonly.value\n };\n });\n const vm = getCurrentInstance('validation');\n const uid = computed(() => props.name ?? unref(id));\n onBeforeMount(() => {\n form?.register({\n id: uid.value,\n vm,\n validate,\n reset,\n resetValidation\n });\n });\n onBeforeUnmount(() => {\n form?.unregister(uid.value);\n });\n onMounted(async () => {\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager);\n }\n form?.update(uid.value, isValid.value, errorMessages.value);\n });\n useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n validate();\n } else if (props.focused) {\n const unwatch = watch(() => props.focused, val => {\n if (!val) validate();\n unwatch();\n });\n }\n });\n });\n useToggleScope(() => validateOn.value.blur, () => {\n watch(() => props.focused, val => {\n if (!val) validate();\n });\n });\n watch([isValid, errorMessages], () => {\n form?.update(uid.value, isValid.value, errorMessages.value);\n });\n async function reset() {\n model.value = null;\n await nextTick();\n await resetValidation();\n }\n async function resetValidation() {\n isPristine.value = true;\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager);\n } else {\n internalErrorMessages.value = [];\n }\n }\n async function validate() {\n let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n const results = [];\n isValidating.value = true;\n for (const rule of props.rules) {\n if (results.length >= +(props.maxErrors ?? 1)) {\n break;\n }\n const handler = typeof rule === 'function' ? rule : () => rule;\n const result = await handler(validationModel.value);\n if (result === true) continue;\n if (result !== false && typeof result !== 'string') {\n // eslint-disable-next-line no-console\n console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`);\n continue;\n }\n results.push(result || '');\n }\n internalErrorMessages.value = results;\n isValidating.value = false;\n isPristine.value = silent;\n return internalErrorMessages.value;\n }\n return {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses\n };\n}\n//# sourceMappingURL=validation.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VInput.css\";\n\n// Components\nimport { useInputIcon } from \"./InputIcon.mjs\";\nimport { VMessages } from \"../VMessages/VMessages.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeValidationProps, useValidation } from \"../../composables/validation.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { EventProp, genericComponent, getUid, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVInputProps = propsFactory({\n id: String,\n appendIcon: IconValue,\n centerAffix: {\n type: Boolean,\n default: true\n },\n prependIcon: IconValue,\n hideDetails: [Boolean, String],\n hideSpinButtons: Boolean,\n hint: String,\n persistentHint: Boolean,\n messages: {\n type: [Array, String],\n default: () => []\n },\n direction: {\n type: String,\n default: 'horizontal',\n validator: v => ['horizontal', 'vertical'].includes(v)\n },\n 'onClick:prepend': EventProp(),\n 'onClick:append': EventProp(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...only(makeDimensionProps(), ['maxWidth', 'minWidth', 'width']),\n ...makeThemeProps(),\n ...makeValidationProps()\n}, 'VInput');\nexport const VInput = genericComponent()({\n name: 'VInput',\n props: {\n ...makeVInputProps()\n },\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots,\n emit\n } = _ref;\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n themeClasses\n } = provideTheme(props);\n const {\n rtlClasses\n } = useRtl();\n const {\n InputIcon\n } = useInputIcon(props);\n const uid = getUid();\n const id = computed(() => props.id || `input-${uid}`);\n const messagesId = computed(() => `${id.value}-messages`);\n const {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses\n } = useValidation(props, 'v-input', id);\n const slotProps = computed(() => ({\n id,\n messagesId,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate\n }));\n const messages = computed(() => {\n if (props.errorMessages?.length || !isPristine.value && errorMessages.value.length) {\n return errorMessages.value;\n } else if (props.hint && (props.persistentHint || props.focused)) {\n return props.hint;\n } else {\n return props.messages;\n }\n });\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.prependIcon);\n const hasAppend = !!(slots.append || props.appendIcon);\n const hasMessages = messages.value.length > 0;\n const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);\n return _createVNode(\"div\", {\n \"class\": ['v-input', `v-input--${props.direction}`, {\n 'v-input--center-affix': props.centerAffix,\n 'v-input--hide-spin-buttons': props.hideSpinButtons\n }, densityClasses.value, themeClasses.value, rtlClasses.value, validationClasses.value, props.class],\n \"style\": [dimensionStyles.value, props.style]\n }, [hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-input__prepend\"\n }, [slots.prepend?.(slotProps.value), props.prependIcon && _createVNode(InputIcon, {\n \"key\": \"prepend-icon\",\n \"name\": \"prepend\"\n }, null)]), slots.default && _createVNode(\"div\", {\n \"class\": \"v-input__control\"\n }, [slots.default?.(slotProps.value)]), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-input__append\"\n }, [props.appendIcon && _createVNode(InputIcon, {\n \"key\": \"append-icon\",\n \"name\": \"append\"\n }, null), slots.append?.(slotProps.value)]), hasDetails && _createVNode(\"div\", {\n \"class\": \"v-input__details\"\n }, [_createVNode(VMessages, {\n \"id\": messagesId.value,\n \"active\": hasMessages,\n \"messages\": messages.value\n }, {\n message: slots.message\n }), slots.details?.(slotProps.value)])]);\n });\n return {\n reset,\n resetValidation,\n validate,\n isValid,\n errorMessages\n };\n }\n});\n//# sourceMappingURL=VInput.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VCheckbox.css\";\n\n// Components\nimport { makeVCheckboxBtnProps, VCheckboxBtn } from \"./VCheckboxBtn.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCheckboxProps = propsFactory({\n ...makeVInputProps(),\n ...omit(makeVCheckboxBtnProps(), ['inline'])\n}, 'VCheckbox');\nexport const VCheckbox = genericComponent()({\n name: 'VCheckbox',\n inheritAttrs: false,\n props: makeVCheckboxProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:focused': focused => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const uid = getUid();\n const id = computed(() => props.id || `checkbox-${uid}`);\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const checkboxProps = VCheckboxBtn.filterProps(props);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-checkbox', props.class]\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": id.value,\n \"focused\": isFocused.value,\n \"style\": props.style\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid\n } = _ref2;\n return _createVNode(VCheckboxBtn, _mergeProps(checkboxProps, {\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value\n }, controlAttrs, {\n \"error\": isValid.value === false,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"onFocus\": focus,\n \"onBlur\": blur\n }), slots);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VCheckbox.mjs.map","// Utilities\nimport { computed, inject } from 'vue';\nimport { useRtl } from \"./locale.mjs\";\nimport { clamp, consoleWarn, mergeDeep, refElement } from \"../util/index.mjs\"; // Types\nexport const GoToSymbol = Symbol.for('vuetify:goto');\nfunction genDefaults() {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic',\n patterns: {\n linear: t => t,\n easeInQuad: t => t ** 2,\n easeOutQuad: t => t * (2 - t),\n easeInOutQuad: t => t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t,\n easeInCubic: t => t ** 3,\n easeOutCubic: t => --t ** 3 + 1,\n easeInOutCubic: t => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n easeInQuart: t => t ** 4,\n easeOutQuart: t => 1 - --t ** 4,\n easeInOutQuart: t => t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4,\n easeInQuint: t => t ** 5,\n easeOutQuint: t => 1 + --t ** 5,\n easeInOutQuint: t => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5\n }\n };\n}\nfunction getContainer(el) {\n return getTarget(el) ?? (document.scrollingElement || document.body);\n}\nfunction getTarget(el) {\n return typeof el === 'string' ? document.querySelector(el) : refElement(el);\n}\nfunction getOffset(target, horizontal, rtl) {\n if (typeof target === 'number') return horizontal && rtl ? -target : target;\n let el = getTarget(target);\n let totalOffset = 0;\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop;\n el = el.offsetParent;\n }\n return totalOffset;\n}\nexport function createGoTo(options, locale) {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options)\n };\n}\nexport async function scrollTo(_target, _options, horizontal, goTo) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop';\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options);\n const rtl = goTo?.rtl.value;\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0;\n const container = options.container === 'parent' && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);\n const ease = typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`);\n let targetLocation;\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl);\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl);\n if (options.layout) {\n const styles = window.getComputedStyle(target);\n const layoutOffset = styles.getPropertyValue('--v-layout-top');\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10);\n }\n }\n targetLocation += options.offset;\n targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal);\n const startLocation = container[property] ?? 0;\n if (targetLocation === startLocation) return Promise.resolve(targetLocation);\n const startTime = performance.now();\n return new Promise(resolve => requestAnimationFrame(function step(currentTime) {\n const timeElapsed = currentTime - startTime;\n const progress = timeElapsed / options.duration;\n const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(clamp(progress, 0, 1)));\n container[property] = location;\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation);\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable');\n return resolve(container[property]);\n }\n requestAnimationFrame(step);\n }));\n}\nexport function useGoTo() {\n let _options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const goToInstance = inject(GoToSymbol);\n const {\n isRtl\n } = useRtl();\n if (!goToInstance) throw new Error('[Vuetify] Could not find injected goto instance');\n const goTo = {\n ...goToInstance,\n // can be set via VLocaleProvider\n rtl: computed(() => goToInstance.rtl.value || isRtl.value)\n };\n async function go(target, options) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo);\n }\n go.horizontal = async (target, options) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo);\n };\n return go;\n}\n\n/**\n * Clamp target value to achieve a smooth scroll animation\n * when the value goes outside the scroll container size\n */\nfunction clampTarget(container, value, rtl, horizontal) {\n const {\n scrollWidth,\n scrollHeight\n } = container;\n const [containerWidth, containerHeight] = container === document.scrollingElement ? [window.innerWidth, window.innerHeight] : [container.offsetWidth, container.offsetHeight];\n let min;\n let max;\n if (horizontal) {\n if (rtl) {\n min = -(scrollWidth - containerWidth);\n max = 0;\n } else {\n min = 0;\n max = scrollWidth - containerWidth;\n }\n } else {\n min = 0;\n max = scrollHeight + -containerHeight;\n }\n return Math.max(Math.min(value, max), min);\n}\n//# sourceMappingURL=goto.mjs.map","export function calculateUpdatedTarget(_ref) {\n let {\n selectedElement,\n containerElement,\n isRtl,\n isHorizontal\n } = _ref;\n const containerSize = getOffsetSize(isHorizontal, containerElement);\n const scrollPosition = getScrollPosition(isHorizontal, isRtl, containerElement);\n const childrenSize = getOffsetSize(isHorizontal, selectedElement);\n const childrenStartPosition = getOffsetPosition(isHorizontal, selectedElement);\n const additionalOffset = childrenSize * 0.4;\n if (scrollPosition > childrenStartPosition) {\n return childrenStartPosition - additionalOffset;\n } else if (scrollPosition + containerSize < childrenStartPosition + childrenSize) {\n return childrenStartPosition - containerSize + childrenSize + additionalOffset;\n }\n return scrollPosition;\n}\nexport function calculateCenteredTarget(_ref2) {\n let {\n selectedElement,\n containerElement,\n isHorizontal\n } = _ref2;\n const containerOffsetSize = getOffsetSize(isHorizontal, containerElement);\n const childrenOffsetPosition = getOffsetPosition(isHorizontal, selectedElement);\n const childrenOffsetSize = getOffsetSize(isHorizontal, selectedElement);\n return childrenOffsetPosition - containerOffsetSize / 2 + childrenOffsetSize / 2;\n}\nexport function getScrollSize(isHorizontal, element) {\n const key = isHorizontal ? 'scrollWidth' : 'scrollHeight';\n return element?.[key] || 0;\n}\nexport function getClientSize(isHorizontal, element) {\n const key = isHorizontal ? 'clientWidth' : 'clientHeight';\n return element?.[key] || 0;\n}\nexport function getScrollPosition(isHorizontal, rtl, element) {\n if (!element) {\n return 0;\n }\n const {\n scrollLeft,\n offsetWidth,\n scrollWidth\n } = element;\n if (isHorizontal) {\n return rtl ? scrollWidth - offsetWidth + scrollLeft : scrollLeft;\n }\n return element.scrollTop;\n}\nexport function getOffsetSize(isHorizontal, element) {\n const key = isHorizontal ? 'offsetWidth' : 'offsetHeight';\n return element?.[key] || 0;\n}\nexport function getOffsetPosition(isHorizontal, element) {\n const key = isHorizontal ? 'offsetLeft' : 'offsetTop';\n return element?.[key] || 0;\n}\n//# sourceMappingURL=helpers.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSlideGroup.css\";\n\n// Components\nimport { VFadeTransition } from \"../transitions/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { useGoTo } from \"../../composables/goto.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, shallowRef, watch } from 'vue';\nimport { calculateCenteredTarget, calculateUpdatedTarget, getClientSize, getOffsetSize, getScrollPosition, getScrollSize } from \"./helpers.mjs\";\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n direction: {\n type: String,\n default: 'horizontal'\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)\n },\n ...makeComponentProps(),\n ...makeDisplayProps({\n mobile: null\n }),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active'\n })\n}, 'VSlideGroup');\nexport const VSlideGroup = genericComponent()({\n name: 'VSlideGroup',\n props: makeVSlideGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n isRtl\n } = useRtl();\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const group = useGroup(props, props.symbol);\n const isOverflowing = shallowRef(false);\n const scrollOffset = shallowRef(0);\n const containerSize = shallowRef(0);\n const contentSize = shallowRef(0);\n const isHorizontal = computed(() => props.direction === 'horizontal');\n const {\n resizeRef: containerRef,\n contentRect: containerRect\n } = useResizeObserver();\n const {\n resizeRef: contentRef,\n contentRect\n } = useResizeObserver();\n const goTo = useGoTo();\n const goToOptions = computed(() => {\n return {\n container: containerRef.el,\n duration: 200,\n easing: 'easeOutQuart'\n };\n });\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1;\n return group.items.value.findIndex(item => item.id === group.selected.value[0]);\n });\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1;\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1]);\n });\n if (IN_BROWSER) {\n let frame = -1;\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height';\n containerSize.value = containerRect.value[sizeProperty];\n contentSize.value = contentRect.value[sizeProperty];\n isOverflowing.value = containerSize.value + 1 < contentSize.value;\n }\n if (firstSelectedIndex.value >= 0 && contentRef.el) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.el.children[lastSelectedIndex.value];\n scrollToChildren(selectedElement, props.centerActive);\n }\n });\n });\n }\n const isFocused = shallowRef(false);\n function scrollToChildren(children, center) {\n let target = 0;\n if (center) {\n target = calculateCenteredTarget({\n containerElement: containerRef.el,\n isHorizontal: isHorizontal.value,\n selectedElement: children\n });\n } else {\n target = calculateUpdatedTarget({\n containerElement: containerRef.el,\n isHorizontal: isHorizontal.value,\n isRtl: isRtl.value,\n selectedElement: children\n });\n }\n scrollToPosition(target);\n }\n function scrollToPosition(newPosition) {\n if (!IN_BROWSER || !containerRef.el) return;\n const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el);\n const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el);\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);\n if (scrollSize <= offsetSize ||\n // Prevent scrolling by only a couple of pixels, which doesn't look smooth\n Math.abs(newPosition - scrollPosition) < 16) return;\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const {\n scrollWidth,\n offsetWidth: containerWidth\n } = containerRef.el;\n newPosition = scrollWidth - containerWidth - newPosition;\n }\n if (isHorizontal.value) {\n goTo.horizontal(newPosition, goToOptions.value);\n } else {\n goTo(newPosition, goToOptions.value);\n }\n }\n function onScroll(e) {\n const {\n scrollTop,\n scrollLeft\n } = e.target;\n scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop;\n }\n function onFocusin(e) {\n isFocused.value = true;\n if (!isOverflowing.value || !contentRef.el) return;\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.el.children) {\n if (item === el) {\n scrollToChildren(item);\n return;\n }\n }\n }\n }\n function onFocusout(e) {\n isFocused.value = false;\n }\n\n // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren\n let ignoreFocusEvent = false;\n function onFocus(e) {\n if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget))) focus();\n ignoreFocusEvent = false;\n }\n function onFocusAffixes() {\n ignoreFocusEvent = true;\n }\n function onKeydown(e) {\n if (!contentRef.el) return;\n function toFocus(location) {\n e.preventDefault();\n focus(location);\n }\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n toFocus(isRtl.value ? 'prev' : 'next');\n } else if (e.key === 'ArrowLeft') {\n toFocus(isRtl.value ? 'next' : 'prev');\n }\n } else {\n if (e.key === 'ArrowDown') {\n toFocus('next');\n } else if (e.key === 'ArrowUp') {\n toFocus('prev');\n }\n }\n if (e.key === 'Home') {\n toFocus('first');\n } else if (e.key === 'End') {\n toFocus('last');\n }\n }\n function focus(location) {\n if (!contentRef.el) return;\n let el;\n if (!location) {\n const focusable = focusableChildren(contentRef.el);\n el = focusable[0];\n } else if (location === 'next') {\n el = contentRef.el.querySelector(':focus')?.nextElementSibling;\n if (!el) return focus('first');\n } else if (location === 'prev') {\n el = contentRef.el.querySelector(':focus')?.previousElementSibling;\n if (!el) return focus('last');\n } else if (location === 'first') {\n el = contentRef.el.firstElementChild;\n } else if (location === 'last') {\n el = contentRef.el.lastElementChild;\n }\n if (el) {\n el.focus({\n preventScroll: true\n });\n }\n }\n function scrollTo(location) {\n const direction = isHorizontal.value && isRtl.value ? -1 : 1;\n const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value;\n let newPosition = scrollOffset.value + offsetStep;\n\n // TODO: improve it\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const {\n scrollWidth,\n offsetWidth: containerWidth\n } = containerRef.el;\n newPosition += scrollWidth - containerWidth;\n }\n scrollToPosition(newPosition);\n }\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected\n }));\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always':\n return true;\n\n // Always show arrows on desktop\n case 'desktop':\n return !mobile.value;\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true:\n return isOverflowing.value || Math.abs(scrollOffset.value) > 0;\n\n // Always show on mobile\n case 'mobile':\n return mobile.value || isOverflowing.value || Math.abs(scrollOffset.value) > 0;\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default:\n return !mobile.value && (isOverflowing.value || Math.abs(scrollOffset.value) > 0);\n }\n });\n const hasPrev = computed(() => {\n // 1 pixel in reserve, may be lost after rounding\n return Math.abs(scrollOffset.value) > 1;\n });\n const hasNext = computed(() => {\n if (!containerRef.value) return false;\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);\n const clientSize = getClientSize(isHorizontal.value, containerRef.el);\n const scrollSizeMax = scrollSize - clientSize;\n\n // 1 pixel in reserve, may be lost after rounding\n return scrollSizeMax - Math.abs(scrollOffset.value) > 1;\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-slide-group', {\n 'v-slide-group--vertical': !isHorizontal.value,\n 'v-slide-group--has-affixes': hasAffixes.value,\n 'v-slide-group--is-overflowing': isOverflowing.value\n }, displayClasses.value, props.class],\n \"style\": props.style,\n \"tabindex\": isFocused.value || group.selected.value.length ? -1 : 0,\n \"onFocus\": onFocus\n }, {\n default: () => [hasAffixes.value && _createVNode(\"div\", {\n \"key\": \"prev\",\n \"class\": ['v-slide-group__prev', {\n 'v-slide-group__prev--disabled': !hasPrev.value\n }],\n \"onMousedown\": onFocusAffixes,\n \"onClick\": () => hasPrev.value && scrollTo('prev')\n }, [slots.prev?.(slotProps.value) ?? _createVNode(VFadeTransition, null, {\n default: () => [_createVNode(VIcon, {\n \"icon\": isRtl.value ? props.nextIcon : props.prevIcon\n }, null)]\n })]), _createVNode(\"div\", {\n \"key\": \"container\",\n \"ref\": containerRef,\n \"class\": \"v-slide-group__container\",\n \"onScroll\": onScroll\n }, [_createVNode(\"div\", {\n \"ref\": contentRef,\n \"class\": \"v-slide-group__content\",\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"onKeydown\": onKeydown\n }, [slots.default?.(slotProps.value)])]), hasAffixes.value && _createVNode(\"div\", {\n \"key\": \"next\",\n \"class\": ['v-slide-group__next', {\n 'v-slide-group__next--disabled': !hasNext.value\n }],\n \"onMousedown\": onFocusAffixes,\n \"onClick\": () => hasNext.value && scrollTo('next')\n }, [slots.next?.(slotProps.value) ?? _createVNode(VFadeTransition, null, {\n default: () => [_createVNode(VIcon, {\n \"icon\": isRtl.value ? props.prevIcon : props.nextIcon\n }, null)]\n })])]\n }));\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n hasPrev,\n hasNext\n };\n }\n});\n//# sourceMappingURL=VSlideGroup.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VChipGroup.css\";\n\n// Components\nimport { makeVSlideGroupProps, VSlideGroup } from \"../VSlideGroup/VSlideGroup.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeVariantProps } from \"../../composables/variant.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { deepEqual, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VChipGroupSymbol = Symbol.for('vuetify:v-chip-group');\nexport const makeVChipGroupProps = propsFactory({\n column: Boolean,\n filter: Boolean,\n valueComparator: {\n type: Function,\n default: deepEqual\n },\n ...makeVSlideGroupProps(),\n ...makeComponentProps(),\n ...makeGroupProps({\n selectedClass: 'v-chip--selected'\n }),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'tonal'\n })\n}, 'VChipGroup');\nexport const VChipGroup = genericComponent()({\n name: 'VChipGroup',\n props: makeVChipGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n isSelected,\n select,\n next,\n prev,\n selected\n } = useGroup(props, VChipGroupSymbol);\n provideDefaults({\n VChip: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n filter: toRef(props, 'filter'),\n variant: toRef(props, 'variant')\n }\n });\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props);\n return _createVNode(VSlideGroup, _mergeProps(slideGroupProps, {\n \"class\": ['v-chip-group', {\n 'v-chip-group--column': props.column\n }, themeClasses.value, props.class],\n \"style\": props.style\n }), {\n default: () => [slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value\n })]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VChipGroup.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, withDirectives as _withDirectives, vShow as _vShow, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n/* eslint-disable complexity */\n// Styles\nimport \"./VChip.css\";\n\n// Components\nimport { VExpandXTransition } from \"../transitions/index.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VChipGroupSymbol } from \"../VChipGroup/VChipGroup.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeSizeProps, useSize } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { EventProp, genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVChipProps = propsFactory({\n activeClass: String,\n appendAvatar: String,\n appendIcon: IconValue,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$delete'\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close'\n },\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete'\n },\n label: Boolean,\n link: {\n type: Boolean,\n default: undefined\n },\n pill: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n text: String,\n modelValue: {\n type: Boolean,\n default: true\n },\n onClick: EventProp(),\n onClickOnce: EventProp(),\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'span'\n }),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'tonal'\n })\n}, 'VChip');\nexport const VChip = genericComponent()({\n name: 'VChip',\n directives: {\n Ripple\n },\n props: makeVChipProps(),\n emits: {\n 'click:close': e => true,\n 'update:modelValue': value => true,\n 'group:selected': val => true,\n click: e => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n borderClasses\n } = useBorder(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n sizeClasses\n } = useSize(props);\n const {\n themeClasses\n } = provideTheme(props);\n const isActive = useProxiedModel(props, 'modelValue');\n const group = useGroupItem(props, VChipGroupSymbol, false);\n const link = useLink(props, attrs);\n const isLink = computed(() => props.link !== false && link.isLink.value);\n const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n isActive.value = false;\n emit('click:close', e);\n }\n }));\n function onClick(e) {\n emit('click', e);\n if (!isClickable.value) return;\n link.navigate?.(e);\n group?.toggle();\n }\n function onKeyDown(e) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick(e);\n }\n }\n return () => {\n const Tag = link.isLink.value ? 'a' : props.tag;\n const hasAppendMedia = !!(props.appendIcon || props.appendAvatar);\n const hasAppend = !!(hasAppendMedia || slots.append);\n const hasClose = !!(slots.close || props.closable);\n const hasFilter = !!(slots.filter || props.filter) && group;\n const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n const hasColor = !group || group.isSelected.value;\n return isActive.value && _withDirectives(_createVNode(Tag, _mergeProps({\n \"class\": ['v-chip', {\n 'v-chip--disabled': props.disabled,\n 'v-chip--label': props.label,\n 'v-chip--link': isClickable.value,\n 'v-chip--filter': hasFilter,\n 'v-chip--pill': props.pill\n }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],\n \"style\": [hasColor ? colorStyles.value : undefined, props.style],\n \"disabled\": props.disabled || undefined,\n \"draggable\": props.draggable,\n \"tabindex\": isClickable.value ? 0 : undefined,\n \"onClick\": onClick,\n \"onKeydown\": isClickable.value && !isLink.value && onKeyDown\n }, link.linkProps), {\n default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && _createVNode(VExpandXTransition, {\n \"key\": \"filter\"\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": \"v-chip__filter\"\n }, [!slots.filter ? _createVNode(VIcon, {\n \"key\": \"filter-icon\",\n \"icon\": props.filterIcon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"filter-defaults\",\n \"disabled\": !props.filterIcon,\n \"defaults\": {\n VIcon: {\n icon: props.filterIcon\n }\n }\n }, slots.filter)]), [[_vShow, group.isSelected.value]])]\n }), hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-chip__prepend\"\n }, [!slots.prepend ? _createVNode(_Fragment, null, [props.prependIcon && _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"icon\": props.prependIcon,\n \"start\": true\n }, null), props.prependAvatar && _createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"image\": props.prependAvatar,\n \"start\": true\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n image: props.prependAvatar,\n start: true\n },\n VIcon: {\n icon: props.prependIcon,\n start: true\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-chip__content\",\n \"data-no-activator\": \"\"\n }, [slots.default?.({\n isSelected: group?.isSelected.value,\n selectedClass: group?.selectedClass.value,\n select: group?.select,\n toggle: group?.toggle,\n value: group?.value.value,\n disabled: props.disabled\n }) ?? props.text]), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-chip__append\"\n }, [!slots.append ? _createVNode(_Fragment, null, [props.appendIcon && _createVNode(VIcon, {\n \"key\": \"append-icon\",\n \"end\": true,\n \"icon\": props.appendIcon\n }, null), props.appendAvatar && _createVNode(VAvatar, {\n \"key\": \"append-avatar\",\n \"end\": true,\n \"image\": props.appendAvatar\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !hasAppendMedia,\n \"defaults\": {\n VAvatar: {\n end: true,\n image: props.appendAvatar\n },\n VIcon: {\n end: true,\n icon: props.appendIcon\n }\n }\n }, slots.append)]), hasClose && _createVNode(\"button\", _mergeProps({\n \"key\": \"close\",\n \"class\": \"v-chip__close\",\n \"type\": \"button\"\n }, closeProps.value), [!slots.close ? _createVNode(VIcon, {\n \"key\": \"close-icon\",\n \"icon\": props.closeIcon,\n \"size\": \"x-small\"\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"close-defaults\",\n \"defaults\": {\n VIcon: {\n icon: props.closeIcon,\n size: 'x-small'\n }\n }\n }, slots.close)])]\n }), [[_resolveDirective(\"ripple\"), isClickable.value && props.ripple, null]]);\n };\n }\n});\n//# sourceMappingURL=VChip.mjs.map","// Types\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport(point, offset) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y\n };\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement(point, offset) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y\n };\n}\n\n/** Get the difference between two points */\nexport function getOffset(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y\n };\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint(anchor, box) {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const {\n side,\n align\n } = anchor;\n const x = align === 'left' ? 0 : align === 'center' ? box.width / 2 : align === 'right' ? box.width : align;\n const y = side === 'top' ? 0 : side === 'bottom' ? box.height : side;\n return elementToViewport({\n x,\n y\n }, box);\n } else if (anchor.side === 'left' || anchor.side === 'right') {\n const {\n side,\n align\n } = anchor;\n const x = side === 'left' ? 0 : side === 'right' ? box.width : side;\n const y = align === 'top' ? 0 : align === 'center' ? box.height / 2 : align === 'bottom' ? box.height : align;\n return elementToViewport({\n x,\n y\n }, box);\n }\n return elementToViewport({\n x: box.width / 2,\n y: box.height / 2\n }, box);\n}\n//# sourceMappingURL=point.mjs.map","// Composables\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\"; // Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue';\nimport { anchorToPoint, getOffset } from \"./util/point.mjs\";\nimport { clamp, consoleError, convertToUnit, destructComputed, flipAlign, flipCorner, flipSide, getAxis, getScrollParents, IN_BROWSER, isFixedPosition, nullifyTransforms, parseAnchor, propsFactory } from \"../../util/index.mjs\";\nimport { Box, getOverflow, getTargetBox } from \"../../util/box.mjs\"; // Types\nconst locationStrategies = {\n static: staticLocationStrategy,\n // specific viewport position, usually centered\n connected: connectedLocationStrategy // connected to a certain element\n};\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function],\n default: 'static',\n validator: val => typeof val === 'function' || val in locationStrategies\n },\n location: {\n type: String,\n default: 'bottom'\n },\n origin: {\n type: String,\n default: 'auto'\n },\n offset: [Number, String, Array]\n}, 'VOverlay-location-strategies');\nexport function useLocationStrategies(props, data) {\n const contentStyles = ref({});\n const updateLocation = ref();\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset);\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize);\n updateLocation.value = undefined;\n });\n window.addEventListener('resize', onResize, {\n passive: true\n });\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation;\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation;\n }\n });\n }\n function onResize(e) {\n updateLocation.value?.(e);\n }\n return {\n contentStyles,\n updateLocation\n };\n}\nfunction staticLocationStrategy() {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize(el, isRtl) {\n // const scrollables = new Map()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el);\n if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0);\n } else {\n contentBox.x -= parseFloat(el.style.left || 0);\n }\n contentBox.y -= parseFloat(el.style.top || 0);\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox;\n}\nfunction connectedLocationStrategy(data, props, contentStyles) {\n const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.value);\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0\n });\n }\n const {\n preferredAnchor,\n preferredOrigin\n } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value);\n const parsedOrigin = props.origin === 'overlap' ? parsedAnchor : props.origin === 'auto' ? flipSide(parsedAnchor) : parseAnchor(props.origin, data.isRtl.value);\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin)\n };\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin\n };\n }\n });\n const [minWidth, minHeight, maxWidth, maxHeight] = ['minWidth', 'minHeight', 'maxWidth', 'maxHeight'].map(key => {\n return computed(() => {\n const val = parseFloat(props[key]);\n return isNaN(val) ? Infinity : val;\n });\n });\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset;\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat);\n if (offset.length < 2) offset.push(0);\n return offset;\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];\n });\n let observe = false;\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation();\n });\n watch([data.target, data.contentEl], (_ref, _ref2) => {\n let [newTarget, newContentEl] = _ref;\n let [oldTarget, oldContentEl] = _ref2;\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget);\n if (newTarget && !Array.isArray(newTarget)) observer.observe(newTarget);\n if (oldContentEl) observer.unobserve(oldContentEl);\n if (newContentEl) observer.observe(newContentEl);\n }, {\n immediate: true\n });\n onScopeDispose(() => {\n observer.disconnect();\n });\n\n // eslint-disable-next-line max-statements\n function updateLocation() {\n observe = false;\n requestAnimationFrame(() => observe = true);\n if (!data.target.value || !data.contentEl.value) return;\n const targetBox = getTargetBox(data.target.value);\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);\n const scrollParents = getScrollParents(data.contentEl.value);\n const viewportMargin = 12;\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement);\n if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {\n contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0);\n contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0);\n }\n }\n const viewport = scrollParents.reduce((box, el) => {\n const rect = el.getBoundingClientRect();\n const scrollBox = new Box({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight\n });\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top)\n });\n }\n return scrollBox;\n }, undefined);\n viewport.x += viewportMargin;\n viewport.y += viewportMargin;\n viewport.width -= viewportMargin * 2;\n viewport.height -= viewportMargin * 2;\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value\n };\n function checkOverflow(_placement) {\n const box = new Box(contentBox);\n const targetPoint = anchorToPoint(_placement.anchor, targetBox);\n const contentPoint = anchorToPoint(_placement.origin, box);\n let {\n x,\n y\n } = getOffset(targetPoint, contentPoint);\n switch (_placement.anchor.side) {\n case 'top':\n y -= offset.value[0];\n break;\n case 'bottom':\n y += offset.value[0];\n break;\n case 'left':\n x -= offset.value[0];\n break;\n case 'right':\n x += offset.value[0];\n break;\n }\n switch (_placement.anchor.align) {\n case 'top':\n y -= offset.value[1];\n break;\n case 'bottom':\n y += offset.value[1];\n break;\n case 'left':\n x -= offset.value[1];\n break;\n case 'right':\n x += offset.value[1];\n break;\n }\n box.x += x;\n box.y += y;\n box.width = Math.min(box.width, maxWidth.value);\n box.height = Math.min(box.height, maxHeight.value);\n const overflows = getOverflow(box, viewport);\n return {\n overflows,\n x,\n y\n };\n }\n let x = 0;\n let y = 0;\n const available = {\n x: 0,\n y: 0\n };\n const flipped = {\n x: false,\n y: false\n };\n let resets = -1;\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy');\n break;\n }\n const {\n x: _x,\n y: _y,\n overflows\n } = checkOverflow(placement);\n x += _x;\n y += _y;\n contentBox.x += _x;\n contentBox.y += _y;\n\n // flip\n {\n const axis = getAxis(placement.anchor);\n const hasOverflowX = overflows.x.before || overflows.x.after;\n const hasOverflowY = overflows.y.before || overflows.y.after;\n let reset = false;\n ['x', 'y'].forEach(key => {\n if (key === 'x' && hasOverflowX && !flipped.x || key === 'y' && hasOverflowY && !flipped.y) {\n const newPlacement = {\n anchor: {\n ...placement.anchor\n },\n origin: {\n ...placement.origin\n }\n };\n const flip = key === 'x' ? axis === 'y' ? flipAlign : flipSide : axis === 'y' ? flipSide : flipAlign;\n newPlacement.anchor = flip(newPlacement.anchor);\n newPlacement.origin = flip(newPlacement.origin);\n const {\n overflows: newOverflows\n } = checkOverflow(newPlacement);\n if (newOverflows[key].before <= overflows[key].before && newOverflows[key].after <= overflows[key].after || newOverflows[key].before + newOverflows[key].after < (overflows[key].before + overflows[key].after) / 2) {\n placement = newPlacement;\n reset = flipped[key] = true;\n }\n }\n });\n if (reset) continue;\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before;\n contentBox.x += overflows.x.before;\n }\n if (overflows.x.after) {\n x -= overflows.x.after;\n contentBox.x -= overflows.x.after;\n }\n if (overflows.y.before) {\n y += overflows.y.before;\n contentBox.y += overflows.y.before;\n }\n if (overflows.y.after) {\n y -= overflows.y.after;\n contentBox.y -= overflows.y.after;\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport);\n available.x = viewport.width - overflows.x.before - overflows.x.after;\n available.y = viewport.height - overflows.y.before - overflows.y.after;\n x += overflows.x.before;\n contentBox.x += overflows.x.before;\n y += overflows.y.before;\n contentBox.y += overflows.y.before;\n }\n break;\n }\n const axis = getAxis(placement.anchor);\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))\n });\n return {\n available,\n contentBox\n };\n }\n watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());\n nextTick(() => {\n const result = updateLocation();\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return;\n const {\n available,\n contentBox\n } = result;\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation();\n requestAnimationFrame(() => {\n updateLocation();\n });\n });\n }\n });\n return {\n updateLocation\n };\n}\nfunction pixelRound(val) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio;\n}\nfunction pixelCeil(val) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio;\n}\n//# sourceMappingURL=locationStrategies.mjs.map","let clean = true;\nconst frames = [];\n\n/**\n * Schedule a task to run in an animation frame on its own\n * This is useful for heavy tasks that may cause jank if all ran together\n */\nexport function requestNewFrame(cb) {\n if (!clean || frames.length) {\n frames.push(cb);\n run();\n } else {\n clean = false;\n cb();\n run();\n }\n}\nlet raf = -1;\nfunction run() {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n const frame = frames.shift();\n if (frame) frame();\n if (frames.length) run();else clean = true;\n });\n}\n//# sourceMappingURL=requestNewFrame.mjs.map","// Utilities\nimport { effectScope, onScopeDispose, watchEffect } from 'vue';\nimport { requestNewFrame } from \"./requestNewFrame.mjs\";\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from \"../../util/index.mjs\"; // Types\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy\n};\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function],\n default: 'block',\n validator: val => typeof val === 'function' || val in scrollStrategies\n }\n}, 'VOverlay-scroll-strategies');\nexport function useScrollStrategies(props, data) {\n if (!IN_BROWSER) return;\n let scope;\n watchEffect(async () => {\n scope?.stop();\n if (!(data.isActive.value && props.scrollStrategy)) return;\n scope = effectScope();\n await new Promise(resolve => setTimeout(resolve));\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope);\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope);\n }\n });\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n}\nfunction closeScrollStrategy(data) {\n function onScroll(e) {\n data.isActive.value = false;\n }\n bindScroll(data.targetEl.value ?? data.contentEl.value, onScroll);\n}\nfunction blockScrollStrategy(data, props) {\n const offsetParent = data.root.value?.offsetParent;\n const scrollElements = [...new Set([...getScrollParents(data.targetEl.value, props.contained ? offsetParent : undefined), ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined)])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'));\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth;\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement);\n if (scrollableParent) {\n data.root.value.classList.add('v-overlay--scroll-blocked');\n }\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft));\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop));\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth));\n }\n el.classList.add('v-overlay-scroll-blocked');\n });\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'));\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'));\n const scrollBehavior = el.style.scrollBehavior;\n el.style.scrollBehavior = 'auto';\n el.style.removeProperty('--v-body-scroll-x');\n el.style.removeProperty('--v-body-scroll-y');\n el.style.removeProperty('--v-scrollbar-offset');\n el.classList.remove('v-overlay-scroll-blocked');\n el.scrollLeft = -x;\n el.scrollTop = -y;\n el.style.scrollBehavior = scrollBehavior;\n });\n if (scrollableParent) {\n data.root.value.classList.remove('v-overlay--scroll-blocked');\n }\n });\n}\nfunction repositionScrollStrategy(data, props, scope) {\n let slow = false;\n let raf = -1;\n let ric = -1;\n function update(e) {\n requestNewFrame(() => {\n const start = performance.now();\n data.updateLocation.value?.(e);\n const time = performance.now() - start;\n slow = time / (1000 / 60) > 2;\n });\n }\n ric = (typeof requestIdleCallback === 'undefined' ? cb => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.targetEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e);\n });\n });\n } else {\n update(e);\n }\n });\n });\n });\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);\n cancelAnimationFrame(raf);\n });\n}\n\n/** @private */\nfunction bindScroll(el, onScroll) {\n const scrollElements = [document, ...getScrollParents(el)];\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll);\n });\n });\n}\n//# sourceMappingURL=scrollStrategies.mjs.map","// Types\n\nexport const VMenuSymbol = Symbol.for('vuetify:v-menu');\n//# sourceMappingURL=shared.mjs.map","// Utilities\nimport { defer, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeDelayProps = propsFactory({\n closeDelay: [Number, String],\n openDelay: [Number, String]\n}, 'delay');\nexport function useDelay(props, cb) {\n let clearDelay = () => {};\n function runDelay(isOpening) {\n clearDelay?.();\n const delay = Number(isOpening ? props.openDelay : props.closeDelay);\n return new Promise(resolve => {\n clearDelay = defer(delay, () => {\n cb?.(isOpening);\n resolve(isOpening);\n });\n });\n }\n function runOpenDelay() {\n return runDelay(true);\n }\n function runCloseDelay() {\n return runDelay(false);\n }\n return {\n clearDelay,\n runOpenDelay,\n runCloseDelay\n };\n}\n//# sourceMappingURL=delay.mjs.map","// Components\nimport { VMenuSymbol } from \"../VMenu/shared.mjs\"; // Composables\nimport { makeDelayProps, useDelay } from \"../../composables/delay.mjs\"; // Utilities\nimport { computed, effectScope, inject, mergeProps, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue';\nimport { bindProps, getCurrentInstance, IN_BROWSER, matchesSelector, propsFactory, templateRef, unbindProps } from \"../../util/index.mjs\"; // Types\nexport const makeActivatorProps = propsFactory({\n target: [String, Object],\n activator: [String, Object],\n activatorProps: {\n type: Object,\n default: () => ({})\n },\n openOnClick: {\n type: Boolean,\n default: undefined\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined\n },\n closeOnContentClick: Boolean,\n ...makeDelayProps()\n}, 'VOverlay-activator');\nexport function useActivator(props, _ref) {\n let {\n isActive,\n isTop,\n contentEl\n } = _ref;\n const vm = getCurrentInstance('useActivator');\n const activatorEl = ref();\n let isHovered = false;\n let isFocused = false;\n let firstEnter = true;\n const openOnFocus = computed(() => props.openOnFocus || props.openOnFocus == null && props.openOnHover);\n const openOnClick = computed(() => props.openOnClick || props.openOnClick == null && !props.openOnHover && !openOnFocus.value);\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => {\n if (value === (props.openOnHover && isHovered || openOnFocus.value && isFocused) && !(props.openOnHover && isActive.value && !isTop.value)) {\n if (isActive.value !== value) {\n firstEnter = true;\n }\n isActive.value = value;\n }\n });\n const cursorTarget = ref();\n const availableEvents = {\n onClick: e => {\n e.stopPropagation();\n activatorEl.value = e.currentTarget || e.target;\n if (!isActive.value) {\n cursorTarget.value = [e.clientX, e.clientY];\n }\n isActive.value = !isActive.value;\n },\n onMouseenter: e => {\n if (e.sourceCapabilities?.firesTouchEvents) return;\n isHovered = true;\n activatorEl.value = e.currentTarget || e.target;\n runOpenDelay();\n },\n onMouseleave: e => {\n isHovered = false;\n runCloseDelay();\n },\n onFocus: e => {\n if (matchesSelector(e.target, ':focus-visible') === false) return;\n isFocused = true;\n e.stopPropagation();\n activatorEl.value = e.currentTarget || e.target;\n runOpenDelay();\n },\n onBlur: e => {\n isFocused = false;\n e.stopPropagation();\n runCloseDelay();\n }\n };\n const activatorEvents = computed(() => {\n const events = {};\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick;\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter;\n events.onMouseleave = availableEvents.onMouseleave;\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus;\n events.onBlur = availableEvents.onBlur;\n }\n return events;\n });\n const contentEvents = computed(() => {\n const events = {};\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true;\n runOpenDelay();\n };\n events.onMouseleave = () => {\n isHovered = false;\n runCloseDelay();\n };\n }\n if (openOnFocus.value) {\n events.onFocusin = () => {\n isFocused = true;\n runOpenDelay();\n };\n events.onFocusout = () => {\n isFocused = false;\n runCloseDelay();\n };\n }\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null);\n events.onClick = () => {\n isActive.value = false;\n menu?.closeParents();\n };\n }\n return events;\n });\n const scrimEvents = computed(() => {\n const events = {};\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true;\n firstEnter = false;\n runOpenDelay();\n }\n };\n events.onMouseleave = () => {\n isHovered = false;\n runCloseDelay();\n };\n }\n return events;\n });\n watch(isTop, val => {\n if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered)) && !contentEl.value?.contains(document.activeElement)) {\n isActive.value = false;\n }\n });\n watch(isActive, val => {\n if (!val) {\n setTimeout(() => {\n cursorTarget.value = undefined;\n });\n }\n }, {\n flush: 'post'\n });\n const activatorRef = templateRef();\n watchEffect(() => {\n if (!activatorRef.value) return;\n nextTick(() => {\n activatorEl.value = activatorRef.el;\n });\n });\n const targetRef = templateRef();\n const target = computed(() => {\n if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value;\n if (targetRef.value) return targetRef.el;\n return getTarget(props.target, vm) || activatorEl.value;\n });\n const targetEl = computed(() => {\n return Array.isArray(target.value) ? undefined : target.value;\n });\n let scope;\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope();\n scope.run(() => {\n _useActivator(props, vm, {\n activatorEl,\n activatorEvents\n });\n });\n } else if (scope) {\n scope.stop();\n }\n }, {\n flush: 'post',\n immediate: true\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n return {\n activatorEl,\n activatorRef,\n target,\n targetEl,\n targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents\n };\n}\nfunction _useActivator(props, vm, _ref2) {\n let {\n activatorEl,\n activatorEvents\n } = _ref2;\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal);\n activator && unbindActivatorProps(activator);\n }\n if (val) {\n nextTick(() => bindActivatorProps());\n }\n }, {\n immediate: true\n });\n watch(() => props.activatorProps, () => {\n bindActivatorProps();\n });\n onScopeDispose(() => {\n unbindActivatorProps();\n });\n function bindActivatorProps() {\n let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();\n let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;\n if (!el) return;\n bindProps(el, mergeProps(activatorEvents.value, _props));\n }\n function unbindActivatorProps() {\n let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();\n let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;\n if (!el) return;\n unbindProps(el, mergeProps(activatorEvents.value, _props));\n }\n function getActivator() {\n let selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : props.activator;\n const activator = getTarget(selector, vm);\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined;\n return activatorEl.value;\n }\n}\nfunction getTarget(selector, vm) {\n if (!selector) return;\n let target;\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode;\n while (el?.hasAttribute('data-no-activator')) {\n el = el.parentNode;\n }\n target = el;\n } else if (typeof selector === 'string') {\n // Selector\n target = document.querySelector(selector);\n } else if ('$el' in selector) {\n // Component (ref)\n target = selector.$el;\n } else {\n // HTMLElement | Element | [x, y]\n target = selector;\n }\n return target;\n}\n//# sourceMappingURL=useActivator.mjs.map","// Composables\nimport { useDisplay } from \"./display.mjs\"; // Utilities\nimport { onMounted, shallowRef } from 'vue';\nimport { IN_BROWSER } from \"../util/index.mjs\";\nexport function useHydration() {\n if (!IN_BROWSER) return shallowRef(false);\n const {\n ssr\n } = useDisplay();\n if (ssr) {\n const isMounted = shallowRef(false);\n onMounted(() => {\n isMounted.value = true;\n });\n return isMounted;\n } else {\n return shallowRef(true);\n }\n}\n//# sourceMappingURL=hydration.mjs.map","// Utilities\nimport { computed, shallowRef, watch } from 'vue';\nimport { propsFactory } from \"../util/index.mjs\"; // Types\nexport const makeLazyProps = propsFactory({\n eager: Boolean\n}, 'lazy');\nexport function useLazy(props, active) {\n const isBooted = shallowRef(false);\n const hasContent = computed(() => isBooted.value || props.eager || active.value);\n watch(active, () => isBooted.value = true);\n function onAfterLeave() {\n if (!props.eager) isBooted.value = false;\n }\n return {\n isBooted,\n hasContent,\n onAfterLeave\n };\n}\n//# sourceMappingURL=lazy.mjs.map","// Utilities\nimport { getCurrentInstance } from \"../util/index.mjs\";\nexport function useScopeId() {\n const vm = getCurrentInstance('useScopeId');\n const scopeId = vm.vnode.scopeId;\n return {\n scopeId: scopeId ? {\n [scopeId]: ''\n } : undefined\n };\n}\n//# sourceMappingURL=scopeId.mjs.map","// Composables\nimport { useToggleScope } from \"./toggleScope.mjs\"; // Utilities\nimport { computed, inject, onScopeDispose, provide, reactive, readonly, shallowRef, toRaw, watchEffect } from 'vue';\nimport { getCurrentInstance } from \"../util/index.mjs\"; // Types\nconst StackSymbol = Symbol.for('vuetify:stack');\nconst globalStack = reactive([]);\nexport function useStack(isActive, zIndex, disableGlobalStack) {\n const vm = getCurrentInstance('useStack');\n const createStackEntry = !disableGlobalStack;\n const parent = inject(StackSymbol, undefined);\n const stack = reactive({\n activeChildren: new Set()\n });\n provide(StackSymbol, stack);\n const _zIndex = shallowRef(+zIndex.value);\n useToggleScope(isActive, () => {\n const lastZIndex = globalStack.at(-1)?.[1];\n _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;\n if (createStackEntry) {\n globalStack.push([vm.uid, _zIndex.value]);\n }\n parent?.activeChildren.add(vm.uid);\n onScopeDispose(() => {\n if (createStackEntry) {\n const idx = toRaw(globalStack).findIndex(v => v[0] === vm.uid);\n globalStack.splice(idx, 1);\n }\n parent?.activeChildren.delete(vm.uid);\n });\n });\n const globalTop = shallowRef(true);\n if (createStackEntry) {\n watchEffect(() => {\n const _isTop = globalStack.at(-1)?.[0] === vm.uid;\n setTimeout(() => globalTop.value = _isTop);\n });\n }\n const localTop = computed(() => !stack.activeChildren.size);\n return {\n globalTop: readonly(globalTop),\n localTop,\n stackStyles: computed(() => ({\n zIndex: _zIndex.value\n }))\n };\n}\n//# sourceMappingURL=stack.mjs.map","// Utilities\nimport { computed, warn } from 'vue';\nimport { IN_BROWSER } from \"../util/index.mjs\";\nexport function useTeleport(target) {\n const teleportTarget = computed(() => {\n const _target = target();\n if (_target === true || !IN_BROWSER) return undefined;\n const targetElement = _target === false ? document.body : typeof _target === 'string' ? document.querySelector(_target) : _target;\n if (targetElement == null) {\n warn(`Unable to locate target ${_target}`);\n return undefined;\n }\n let container = [...targetElement.children].find(el => el.matches('.v-overlay-container'));\n if (!container) {\n container = document.createElement('div');\n container.className = 'v-overlay-container';\n targetElement.appendChild(container);\n }\n return container;\n });\n return {\n teleportTarget\n };\n}\n//# sourceMappingURL=teleport.mjs.map","// Utilities\nimport { attachedRoot } from \"../../util/index.mjs\"; // Types\nfunction defaultConditional() {\n return true;\n}\nfunction checkEvent(e, el, binding) {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false;\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el);\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot && root.host === e.target) return false;\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = (typeof binding.value === 'object' && binding.value.include || (() => []))();\n // Add the root element for the component this directive was defined on\n elements.push(el);\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el?.contains(e.target));\n}\nfunction checkIsActive(e, binding) {\n const isActive = typeof binding.value === 'object' && binding.value.closeConditional || defaultConditional;\n return isActive(e);\n}\nfunction directive(e, el, binding) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler;\n\n // Clicks in the Shadow DOM change their target while using setTimeout, so the original target is saved here\n e.shadowTarget = e.target;\n el._clickOutside.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e);\n }, 0);\n}\nfunction handleShadow(el, callback) {\n const root = attachedRoot(el);\n callback(document);\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root);\n }\n}\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted(el, binding) {\n const onClick = e => directive(e, el, binding);\n const onMousedown = e => {\n el._clickOutside.lastMousedownWasOutside = checkEvent(e, el, binding);\n };\n handleShadow(el, app => {\n app.addEventListener('click', onClick, true);\n app.addEventListener('mousedown', onMousedown, true);\n });\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: false\n };\n }\n el._clickOutside[binding.instance.$.uid] = {\n onClick,\n onMousedown\n };\n },\n beforeUnmount(el, binding) {\n if (!el._clickOutside) return;\n handleShadow(el, app => {\n if (!app || !el._clickOutside?.[binding.instance.$.uid]) return;\n const {\n onClick,\n onMousedown\n } = el._clickOutside[binding.instance.$.uid];\n app.removeEventListener('click', onClick, true);\n app.removeEventListener('mousedown', onMousedown, true);\n });\n delete el._clickOutside[binding.instance.$.uid];\n }\n};\nexport default ClickOutside;\n//# sourceMappingURL=index.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, vShow as _vShow, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VOverlay.css\";\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from \"./locationStrategies.mjs\";\nimport { makeScrollStrategyProps, useScrollStrategies } from \"./scrollStrategies.mjs\";\nimport { makeActivatorProps, useActivator } from \"./useActivator.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useHydration } from \"../../composables/hydration.mjs\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useBackButton, useRouter } from \"../../composables/router.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { useStack } from \"../../composables/stack.mjs\";\nimport { useTeleport } from \"../../composables/teleport.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Directives\nimport { ClickOutside } from \"../../directives/click-outside/index.mjs\"; // Utilities\nimport { computed, mergeProps, onBeforeUnmount, ref, Teleport, toRef, Transition, watch } from 'vue';\nimport { animate, convertToUnit, genericComponent, getCurrentInstance, getScrollParent, IN_BROWSER, propsFactory, standardEasing, useRender } from \"../../util/index.mjs\"; // Types\nfunction Scrim(props) {\n const {\n modelValue,\n color,\n ...rest\n } = props;\n return _createVNode(Transition, {\n \"name\": \"fade-transition\",\n \"appear\": true\n }, {\n default: () => [props.modelValue && _createVNode(\"div\", _mergeProps({\n \"class\": ['v-overlay__scrim', props.color.backgroundColorClasses.value],\n \"style\": props.color.backgroundColorStyles.value\n }, rest), null)]\n });\n}\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object],\n closeOnBack: {\n type: Boolean,\n default: true\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true\n },\n zIndex: {\n type: [Number, String],\n default: 2000\n },\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps()\n}, 'VOverlay');\nexport const VOverlay = genericComponent()({\n name: 'VOverlay',\n directives: {\n ClickOutside\n },\n inheritAttrs: false,\n props: {\n _disableGlobalStack: Boolean,\n ...makeVOverlayProps()\n },\n emits: {\n 'click:outside': e => true,\n 'update:modelValue': value => true,\n afterEnter: () => true,\n afterLeave: () => true\n },\n setup(props, _ref) {\n let {\n slots,\n attrs,\n emit\n } = _ref;\n const vm = getCurrentInstance('VOverlay');\n const root = ref();\n const scrimEl = ref();\n const contentEl = ref();\n const model = useProxiedModel(props, 'modelValue');\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v;\n }\n });\n const {\n themeClasses\n } = provideTheme(props);\n const {\n rtlClasses,\n isRtl\n } = useRtl();\n const {\n hasContent,\n onAfterLeave: _onAfterLeave\n } = useLazy(props, isActive);\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null;\n }));\n const {\n globalTop,\n localTop,\n stackStyles\n } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack);\n const {\n activatorEl,\n activatorRef,\n target,\n targetEl,\n targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents\n } = useActivator(props, {\n isActive,\n isTop: localTop,\n contentEl\n });\n const {\n teleportTarget\n } = useTeleport(() => {\n const target = props.attach || props.contained;\n if (target) return target;\n const rootNode = activatorEl?.value?.getRootNode() || vm.proxy?.$el?.getRootNode();\n if (rootNode instanceof ShadowRoot) return rootNode;\n return false;\n });\n const {\n dimensionStyles\n } = useDimension(props);\n const isMounted = useHydration();\n const {\n scopeId\n } = useScopeId();\n watch(() => props.disabled, v => {\n if (v) isActive.value = false;\n });\n const {\n contentStyles,\n updateLocation\n } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive\n });\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation\n });\n function onClickOutside(e) {\n emit('click:outside', e);\n if (!props.persistent) isActive.value = false;else animateClick();\n }\n function closeConditional(e) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value || e instanceof MouseEvent && e.shadowTarget === scrimEl.value);\n }\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown);\n } else {\n window.removeEventListener('keydown', onKeydown);\n }\n }, {\n immediate: true\n });\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return;\n window.removeEventListener('keydown', onKeydown);\n });\n function onKeydown(e) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false;\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus();\n }\n } else animateClick();\n }\n }\n const router = useRouter();\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false);\n if (!props.persistent) isActive.value = false;else animateClick();\n } else {\n next();\n }\n });\n });\n const top = ref();\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value);\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop;\n }\n }\n });\n\n // Add a quick \"bounce\" animation to the content\n function animateClick() {\n if (props.noClickAnimation) return;\n contentEl.value && animate(contentEl.value, [{\n transformOrigin: 'center'\n }, {\n transform: 'scale(1.03)'\n }, {\n transformOrigin: 'center'\n }], {\n duration: 150,\n easing: standardEasing\n });\n }\n function onAfterEnter() {\n emit('afterEnter');\n }\n function onAfterLeave() {\n _onAfterLeave();\n emit('afterLeave');\n }\n useRender(() => _createVNode(_Fragment, null, [slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef\n }, activatorEvents.value, props.activatorProps)\n }), isMounted.value && hasContent.value && _createVNode(Teleport, {\n \"disabled\": !teleportTarget.value,\n \"to\": teleportTarget.value\n }, {\n default: () => [_createVNode(\"div\", _mergeProps({\n \"class\": ['v-overlay', {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained\n }, themeClasses.value, rtlClasses.value, props.class],\n \"style\": [stackStyles.value, {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value)\n }, props.style],\n \"ref\": root\n }, scopeId, attrs), [_createVNode(Scrim, _mergeProps({\n \"color\": scrimColor,\n \"modelValue\": isActive.value && !!props.scrim,\n \"ref\": scrimEl\n }, scrimEvents.value), null), _createVNode(MaybeTransition, {\n \"appear\": true,\n \"persisted\": true,\n \"transition\": props.transition,\n \"target\": target.value,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", _mergeProps({\n \"ref\": contentEl,\n \"class\": ['v-overlay__content', props.contentClass],\n \"style\": [dimensionStyles.value, contentStyles.value]\n }, contentEvents.value, props.contentProps), [slots.default?.({\n isActive\n })]), [[_vShow, isActive.value], [_resolveDirective(\"click-outside\"), {\n handler: onClickOutside,\n closeConditional,\n include: () => [activatorEl.value]\n }]])]\n })])]\n })]));\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation\n };\n }\n});\n//# sourceMappingURL=VOverlay.mjs.map","// Types\n\nconst Refs = Symbol('Forwarded refs');\n\n/** Omit properties starting with P */\n\n/** Omit keyof $props from T */\n\nfunction getDescriptor(obj, key) {\n let currentObj = obj;\n while (currentObj) {\n const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key);\n if (descriptor) return descriptor;\n currentObj = Object.getPrototypeOf(currentObj);\n }\n return undefined;\n}\nexport function forwardRefs(target) {\n for (var _len = arguments.length, refs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n refs[_key - 1] = arguments[_key];\n }\n target[Refs] = refs;\n return new Proxy(target, {\n get(target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key);\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n const val = Reflect.get(ref.value, key);\n return typeof val === 'function' ? val.bind(ref.value) : val;\n }\n }\n },\n has(target, key) {\n if (Reflect.has(target, key)) {\n return true;\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return true;\n }\n }\n return false;\n },\n set(target, key, value) {\n if (Reflect.has(target, key)) {\n return Reflect.set(target, key, value);\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return Reflect.set(ref.value, key, value);\n }\n }\n return false;\n },\n getOwnPropertyDescriptor(target, key) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, key);\n if (descriptor) return descriptor;\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;\n\n // Check each ref's own properties\n for (const ref of refs) {\n if (!ref.value) continue;\n const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined);\n if (descriptor) return descriptor;\n }\n\n // Recursive search up each ref's prototype\n for (const ref of refs) {\n const childRefs = ref.value && ref.value[Refs];\n if (!childRefs) continue;\n const queue = childRefs.slice();\n while (queue.length) {\n const ref = queue.shift();\n const descriptor = getDescriptor(ref.value, key);\n if (descriptor) return descriptor;\n const childRefs = ref.value && ref.value[Refs];\n if (childRefs) queue.push(...childRefs);\n }\n }\n return undefined;\n }\n });\n}\n//# sourceMappingURL=forwardRefs.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VMenu.css\";\n\n// Components\nimport { VDialogTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\"; // Composables\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\"; // Utilities\nimport { computed, inject, mergeProps, nextTick, onBeforeUnmount, onDeactivated, provide, ref, shallowRef, watch } from 'vue';\nimport { VMenuSymbol } from \"./shared.mjs\";\nimport { focusableChildren, focusChild, genericComponent, getNextElement, getUid, isClickInsideElement, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n submenu: Boolean,\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected',\n location: undefined,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition',\n transition: {\n component: VDialogTransition\n }\n }), ['absolute'])\n}, 'VMenu');\nexport const VMenu = genericComponent()({\n name: 'VMenu',\n props: makeVMenuProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n scopeId\n } = useScopeId();\n const {\n isRtl\n } = useRtl();\n const uid = getUid();\n const id = computed(() => props.id || `v-menu-${uid}`);\n const overlay = ref();\n const parent = inject(VMenuSymbol, null);\n const openChildren = shallowRef(new Set());\n provide(VMenuSymbol, {\n register() {\n openChildren.value.add(uid);\n },\n unregister() {\n openChildren.value.delete(uid);\n },\n closeParents(e) {\n setTimeout(() => {\n if (!openChildren.value.size && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {\n isActive.value = false;\n parent?.closeParents();\n }\n }, 40);\n }\n });\n onBeforeUnmount(() => parent?.unregister());\n onDeactivated(() => isActive.value = false);\n async function onFocusIn(e) {\n const before = e.relatedTarget;\n const after = e.target;\n await nextTick();\n if (isActive.value && before !== after && overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)) {\n const focusable = focusableChildren(overlay.value.contentEl);\n focusable[0]?.focus();\n }\n }\n watch(isActive, val => {\n if (val) {\n parent?.register();\n document.addEventListener('focusin', onFocusIn, {\n once: true\n });\n } else {\n parent?.unregister();\n document.removeEventListener('focusin', onFocusIn);\n }\n });\n function onClickOutside(e) {\n parent?.closeParents(e);\n }\n function onKeydown(e) {\n if (props.disabled) return;\n if (e.key === 'Tab' || e.key === 'Enter' && !props.closeOnContentClick) {\n if (e.key === 'Enter' && (e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLInputElement && !!e.target.closest('form'))) return;\n if (e.key === 'Enter') e.preventDefault();\n const nextElement = getNextElement(focusableChildren(overlay.value?.contentEl, false), e.shiftKey ? 'prev' : 'next', el => el.tabIndex >= 0);\n if (!nextElement) {\n isActive.value = false;\n overlay.value?.activatorEl?.focus();\n }\n } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false;\n overlay.value?.activatorEl?.focus();\n }\n }\n function onActivatorKeydown(e) {\n if (props.disabled) return;\n const el = overlay.value?.contentEl;\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n e.stopImmediatePropagation();\n focusChild(el, 'next');\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n e.stopImmediatePropagation();\n focusChild(el, 'prev');\n } else if (props.submenu) {\n if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false;\n } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {\n e.preventDefault();\n focusChild(el, 'first');\n }\n }\n } else if (props.submenu ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight') : ['ArrowDown', 'ArrowUp'].includes(e.key)) {\n isActive.value = true;\n e.preventDefault();\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)));\n }\n }\n const activatorProps = computed(() => mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n onKeydown: onActivatorKeydown\n }, props.activatorProps));\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"id\": id.value,\n \"class\": ['v-menu', props.class],\n \"style\": props.style\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"absolute\": true,\n \"activatorProps\": activatorProps.value,\n \"location\": props.location ?? (props.submenu ? 'end' : 'bottom'),\n \"onClick:outside\": onClickOutside,\n \"onKeydown\": onKeydown\n }, scopeId), {\n activator: slots.activator,\n default: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(VDefaultsProvider, {\n \"root\": \"VMenu\"\n }, {\n default: () => [slots.default?.(...args)]\n });\n }\n });\n });\n return forwardRefs({\n id,\n ΨopenChildren: openChildren\n }, overlay);\n }\n});\n//# sourceMappingURL=VMenu.mjs.map","import { withDirectives as _withDirectives, createVNode as _createVNode, vShow as _vShow } from \"vue\";\n// Styles\nimport \"./VCounter.css\";\n\n// Components\nimport { VSlideYTransition } from \"../transitions/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCounterProps = propsFactory({\n active: Boolean,\n disabled: Boolean,\n max: [Number, String],\n value: {\n type: [Number, String],\n default: 0\n },\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition\n }\n })\n}, 'VCounter');\nexport const VCounter = genericComponent()({\n name: 'VCounter',\n functional: true,\n props: makeVCounterProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const counter = computed(() => {\n return props.max ? `${props.value} / ${props.max}` : String(props.value);\n });\n useRender(() => _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": ['v-counter', {\n 'text-error': props.max && !props.disabled && parseFloat(props.value) > parseFloat(props.max)\n }, props.class],\n \"style\": props.style\n }, [slots.default ? slots.default({\n counter: counter.value,\n max: props.max,\n value: props.value\n }) : counter.value]), [[_vShow, props.active]])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VCounter.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { VLabel } from \"../VLabel/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVFieldLabelProps = propsFactory({\n floating: Boolean,\n ...makeComponentProps()\n}, 'VFieldLabel');\nexport const VFieldLabel = genericComponent()({\n name: 'VFieldLabel',\n props: makeVFieldLabelProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(VLabel, {\n \"class\": ['v-field-label', {\n 'v-field-label--floating': props.floating\n }, props.class],\n \"style\": props.style,\n \"aria-hidden\": props.floating || undefined\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VFieldLabel.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, withDirectives as _withDirectives, vShow as _vShow, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VField.css\";\n\n// Components\nimport { VFieldLabel } from \"./VFieldLabel.mjs\";\nimport { VExpandXTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { useInputIcon } from \"../VInput/InputIcon.mjs\"; // Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { LoaderSlot, makeLoaderProps, useLoader } from \"../../composables/loader.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, ref, toRef, watch } from 'vue';\nimport { animate, convertToUnit, EventProp, genericComponent, getUid, isOn, nullifyTransforms, pick, propsFactory, standardEasing, useRender } from \"../../util/index.mjs\"; // Types\nconst allowedVariants = ['underlined', 'outlined', 'filled', 'solo', 'solo-inverted', 'solo-filled', 'plain'];\nexport const makeVFieldProps = propsFactory({\n appendInnerIcon: IconValue,\n bgColor: String,\n clearable: Boolean,\n clearIcon: {\n type: IconValue,\n default: '$clear'\n },\n active: Boolean,\n centerAffix: {\n type: Boolean,\n default: undefined\n },\n color: String,\n baseColor: String,\n dirty: Boolean,\n disabled: {\n type: Boolean,\n default: null\n },\n error: Boolean,\n flat: Boolean,\n label: String,\n persistentClear: Boolean,\n prependInnerIcon: IconValue,\n reverse: Boolean,\n singleLine: Boolean,\n variant: {\n type: String,\n default: 'filled',\n validator: v => allowedVariants.includes(v)\n },\n 'onClick:clear': EventProp(),\n 'onClick:appendInner': EventProp(),\n 'onClick:prependInner': EventProp(),\n ...makeComponentProps(),\n ...makeLoaderProps(),\n ...makeRoundedProps(),\n ...makeThemeProps()\n}, 'VField');\nexport const VField = genericComponent()({\n name: 'VField',\n inheritAttrs: false,\n props: {\n id: String,\n ...makeFocusProps(),\n ...makeVFieldProps()\n },\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n loaderClasses\n } = useLoader(props);\n const {\n focusClasses,\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const {\n InputIcon\n } = useInputIcon(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n rtlClasses\n } = useRtl();\n const isActive = computed(() => props.dirty || props.active);\n const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label));\n const uid = getUid();\n const id = computed(() => props.id || `input-${uid}`);\n const messagesId = computed(() => `${id.value}-messages`);\n const labelRef = ref();\n const floatingLabelRef = ref();\n const controlRef = ref();\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(computed(() => {\n return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;\n }));\n watch(isActive, val => {\n if (hasLabel.value) {\n const el = labelRef.value.$el;\n const targetEl = floatingLabelRef.value.$el;\n requestAnimationFrame(() => {\n const rect = nullifyTransforms(el);\n const targetRect = targetEl.getBoundingClientRect();\n const x = targetRect.x - rect.x;\n const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);\n const targetWidth = targetRect.width / 0.75;\n const width = Math.abs(targetWidth - rect.width) > 1 ? {\n maxWidth: convertToUnit(targetWidth)\n } : undefined;\n const style = getComputedStyle(el);\n const targetStyle = getComputedStyle(targetEl);\n const duration = parseFloat(style.transitionDuration) * 1000 || 150;\n const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'));\n const color = targetStyle.getPropertyValue('color');\n el.style.visibility = 'visible';\n targetEl.style.visibility = 'hidden';\n animate(el, {\n transform: `translate(${x}px, ${y}px) scale(${scale})`,\n color,\n ...width\n }, {\n duration,\n easing: standardEasing,\n direction: val ? 'normal' : 'reverse'\n }).finished.then(() => {\n el.style.removeProperty('visibility');\n targetEl.style.removeProperty('visibility');\n });\n });\n }\n }, {\n flush: 'post'\n });\n const slotProps = computed(() => ({\n isActive,\n isFocused,\n controlRef,\n blur,\n focus\n }));\n function onClick(e) {\n if (e.target !== document.activeElement) {\n e.preventDefault();\n }\n }\n function onKeydownClear(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n props['onClick:clear']?.(new MouseEvent('click'));\n }\n useRender(() => {\n const isOutlined = props.variant === 'outlined';\n const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon);\n const hasClear = !!(props.clearable || slots.clear);\n const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear);\n const label = () => slots.label ? slots.label({\n ...slotProps.value,\n label: props.label,\n props: {\n for: id.value\n }\n }) : props.label;\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-field', {\n 'v-field--active': isActive.value,\n 'v-field--appended': hasAppend,\n 'v-field--center-affix': props.centerAffix ?? !isPlainOrUnderlined.value,\n 'v-field--disabled': props.disabled,\n 'v-field--dirty': props.dirty,\n 'v-field--error': props.error,\n 'v-field--flat': props.flat,\n 'v-field--has-background': !!props.bgColor,\n 'v-field--persistent-clear': props.persistentClear,\n 'v-field--prepended': hasPrepend,\n 'v-field--reverse': props.reverse,\n 'v-field--single-line': props.singleLine,\n 'v-field--no-label': !label(),\n [`v-field--variant-${props.variant}`]: true\n }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, rtlClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, props.style],\n \"onClick\": onClick\n }, attrs), [_createVNode(\"div\", {\n \"class\": \"v-field__overlay\"\n }, null), _createVNode(LoaderSlot, {\n \"name\": \"v-field\",\n \"active\": !!props.loading,\n \"color\": props.error ? 'error' : typeof props.loading === 'string' ? props.loading : props.color\n }, {\n default: slots.loader\n }), hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-field__prepend-inner\"\n }, [props.prependInnerIcon && _createVNode(InputIcon, {\n \"key\": \"prepend-icon\",\n \"name\": \"prependInner\"\n }, null), slots['prepend-inner']?.(slotProps.value)]), _createVNode(\"div\", {\n \"class\": \"v-field__field\",\n \"data-no-activator\": \"\"\n }, [['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasLabel.value && _createVNode(VFieldLabel, {\n \"key\": \"floating-label\",\n \"ref\": floatingLabelRef,\n \"class\": [textColorClasses.value],\n \"floating\": true,\n \"for\": id.value,\n \"style\": textColorStyles.value\n }, {\n default: () => [label()]\n }), _createVNode(VFieldLabel, {\n \"ref\": labelRef,\n \"for\": id.value\n }, {\n default: () => [label()]\n }), slots.default?.({\n ...slotProps.value,\n props: {\n id: id.value,\n class: 'v-field__input',\n 'aria-describedby': messagesId.value\n },\n focus,\n blur\n })]), hasClear && _createVNode(VExpandXTransition, {\n \"key\": \"clear\"\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": \"v-field__clearable\",\n \"onMousedown\": e => {\n e.preventDefault();\n e.stopPropagation();\n }\n }, [_createVNode(VDefaultsProvider, {\n \"defaults\": {\n VIcon: {\n icon: props.clearIcon\n }\n }\n }, {\n default: () => [slots.clear ? slots.clear({\n ...slotProps.value,\n props: {\n onKeydown: onKeydownClear,\n onFocus: focus,\n onBlur: blur,\n onClick: props['onClick:clear']\n }\n }) : _createVNode(InputIcon, {\n \"name\": \"clear\",\n \"onKeydown\": onKeydownClear,\n \"onFocus\": focus,\n \"onBlur\": blur\n }, null)]\n })]), [[_vShow, props.dirty]])]\n }), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-field__append-inner\"\n }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && _createVNode(InputIcon, {\n \"key\": \"append-icon\",\n \"name\": \"appendInner\"\n }, null)]), _createVNode(\"div\", {\n \"class\": ['v-field__outline', textColorClasses.value],\n \"style\": textColorStyles.value\n }, [isOutlined && _createVNode(_Fragment, null, [_createVNode(\"div\", {\n \"class\": \"v-field__outline__start\"\n }, null), hasLabel.value && _createVNode(\"div\", {\n \"class\": \"v-field__outline__notch\"\n }, [_createVNode(VFieldLabel, {\n \"ref\": floatingLabelRef,\n \"floating\": true,\n \"for\": id.value\n }, {\n default: () => [label()]\n })]), _createVNode(\"div\", {\n \"class\": \"v-field__outline__end\"\n }, null)]), isPlainOrUnderlined.value && hasLabel.value && _createVNode(VFieldLabel, {\n \"ref\": floatingLabelRef,\n \"floating\": true,\n \"for\": id.value\n }, {\n default: () => [label()]\n })])]);\n });\n return {\n controlRef\n };\n }\n});\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps(attrs) {\n const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style');\n return pick(attrs, keys);\n}\n//# sourceMappingURL=VField.mjs.map","import { Fragment as _Fragment, withDirectives as _withDirectives, createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VTextField.css\";\n\n// Components\nimport { VCounter } from \"../VCounter/VCounter.mjs\";\nimport { filterFieldProps, makeVFieldProps, VField } from \"../VField/VField.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Directives\nimport Intersect from \"../../directives/intersect/index.mjs\"; // Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue';\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String],\n counterValue: [Number, Function],\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n role: String,\n type: {\n type: String,\n default: 'text'\n },\n modelModifiers: Object,\n ...makeVInputProps(),\n ...makeVFieldProps()\n}, 'VTextField');\nexport const VTextField = genericComponent()({\n name: 'VTextField',\n directives: {\n Intersect\n },\n inheritAttrs: false,\n props: makeVTextFieldProps(),\n emits: {\n 'click:control': e => true,\n 'mousedown:control': e => true,\n 'update:focused': focused => true,\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : (model.value ?? '').toString().length;\n });\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength;\n if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;\n return props.counter;\n });\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n function onIntersect(isIntersecting, entries) {\n if (!props.autofocus || !isIntersecting) return;\n entries[0].target?.focus?.();\n }\n const vInputRef = ref();\n const vFieldRef = ref();\n const inputRef = ref();\n const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);\n function onFocus() {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus();\n }\n if (!isFocused.value) focus();\n }\n function onControlMousedown(e) {\n emit('mousedown:control', e);\n if (e.target === inputRef.value) return;\n onFocus();\n e.preventDefault();\n }\n function onControlClick(e) {\n onFocus();\n emit('click:control', e);\n }\n function onClear(e) {\n e.stopPropagation();\n onFocus();\n nextTick(() => {\n model.value = null;\n callEvent(props['onClick:clear'], e);\n });\n }\n function onInput(e) {\n const el = e.target;\n model.value = el.value;\n if (props.modelModifiers?.trim && ['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {\n const caretPosition = [el.selectionStart, el.selectionEnd];\n nextTick(() => {\n el.selectionStart = caretPosition[0];\n el.selectionEnd = caretPosition[1];\n });\n }\n }\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter !== false && props.counter != null);\n const hasDetails = !!(hasCounter || slots.details);\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const {\n modelValue: _,\n ...inputProps\n } = VInput.filterProps(props);\n const fieldProps = filterFieldProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": vInputRef,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-text-field', {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-input--plain-underlined': isPlainOrUnderlined.value\n }, props.class],\n \"style\": props.style\n }, rootAttrs, inputProps, {\n \"centerAffix\": !isPlainOrUnderlined.value,\n \"focused\": isFocused.value\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid\n } = _ref2;\n return _createVNode(VField, _mergeProps({\n \"ref\": vFieldRef,\n \"onMousedown\": onControlMousedown,\n \"onClick\": onControlClick,\n \"onClick:clear\": onClear,\n \"onClick:prependInner\": props['onClick:prependInner'],\n \"onClick:appendInner\": props['onClick:appendInner'],\n \"role\": props.role\n }, fieldProps, {\n \"id\": id.value,\n \"active\": isActive.value || isDirty.value,\n \"dirty\": isDirty.value || props.dirty,\n \"disabled\": isDisabled.value,\n \"focused\": isFocused.value,\n \"error\": isValid.value === false\n }), {\n ...slots,\n default: _ref3 => {\n let {\n props: {\n class: fieldClass,\n ...slotProps\n }\n } = _ref3;\n const inputNode = _withDirectives(_createVNode(\"input\", _mergeProps({\n \"ref\": inputRef,\n \"value\": model.value,\n \"onInput\": onInput,\n \"autofocus\": props.autofocus,\n \"readonly\": isReadonly.value,\n \"disabled\": isDisabled.value,\n \"name\": props.name,\n \"placeholder\": props.placeholder,\n \"size\": 1,\n \"type\": props.type,\n \"onFocus\": onFocus,\n \"onBlur\": blur\n }, slotProps, inputAttrs), null), [[_resolveDirective(\"intersect\"), {\n handler: onIntersect\n }, null, {\n once: true\n }]]);\n return _createVNode(_Fragment, null, [props.prefix && _createVNode(\"span\", {\n \"class\": \"v-text-field__prefix\"\n }, [_createVNode(\"span\", {\n \"class\": \"v-text-field__prefix__text\"\n }, [props.prefix])]), slots.default ? _createVNode(\"div\", {\n \"class\": fieldClass,\n \"data-no-activator\": \"\"\n }, [slots.default(), inputNode]) : cloneVNode(inputNode, {\n class: fieldClass\n }), props.suffix && _createVNode(\"span\", {\n \"class\": \"v-text-field__suffix\"\n }, [_createVNode(\"span\", {\n \"class\": \"v-text-field__suffix__text\"\n }, [props.suffix])])]);\n }\n });\n },\n details: hasDetails ? slotProps => _createVNode(_Fragment, null, [slots.details?.(slotProps), hasCounter && _createVNode(_Fragment, null, [_createVNode(\"span\", null, null), _createVNode(VCounter, {\n \"active\": props.persistentCounter || isFocused.value,\n \"value\": counterValue.value,\n \"max\": max.value,\n \"disabled\": props.disabled\n }, slots.counter)])]) : undefined\n });\n });\n return forwardRefs({}, vInputRef, vFieldRef, inputRef);\n }\n});\n//# sourceMappingURL=VTextField.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\"; // Utilities\nimport { watch } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVVirtualScrollItemProps = propsFactory({\n renderless: Boolean,\n ...makeComponentProps()\n}, 'VVirtualScrollItem');\nexport const VVirtualScrollItem = genericComponent()({\n name: 'VVirtualScrollItem',\n inheritAttrs: false,\n props: makeVVirtualScrollItemProps(),\n emits: {\n 'update:height': height => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n resizeRef,\n contentRect\n } = useResizeObserver(undefined, 'border');\n watch(() => contentRect.value?.height, height => {\n if (height != null) emit('update:height', height);\n });\n useRender(() => props.renderless ? _createVNode(_Fragment, null, [slots.default?.({\n itemRef: resizeRef\n })]) : _createVNode(\"div\", _mergeProps({\n \"ref\": resizeRef,\n \"class\": ['v-virtual-scroll__item', props.class],\n \"style\": props.style\n }, attrs), [slots.default?.()]));\n }\n});\n//# sourceMappingURL=VVirtualScrollItem.mjs.map","// Composables\nimport { useDisplay } from \"./display.mjs\";\nimport { useResizeObserver } from \"./resizeObserver.mjs\"; // Utilities\nimport { computed, nextTick, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { clamp, debounce, IN_BROWSER, propsFactory } from \"../util/index.mjs\"; // Types\nconst UP = -1;\nconst DOWN = 1;\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100;\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null\n },\n height: [Number, String]\n}, 'virtual');\nexport function useVirtual(props, items) {\n const display = useDisplay();\n const itemHeight = shallowRef(0);\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0);\n });\n const first = shallowRef(0);\n const last = shallowRef(Math.ceil(\n // Assume 16px items filling the entire screen height if\n // not provided. This is probably incorrect but it minimises\n // the chance of ending up with empty space at the bottom.\n // The default value is set here to avoid poisoning getSize()\n (parseInt(props.height) || display.height.value) / (itemHeight.value || 16)) || 1);\n const paddingTop = shallowRef(0);\n const paddingBottom = shallowRef(0);\n\n /** The scrollable element */\n const containerRef = ref();\n /** An element marking the top of the scrollable area,\n * used to add an offset if there's padding or other elements above the virtual list */\n const markerRef = ref();\n /** markerRef's offsetTop, lazily evaluated */\n let markerOffset = 0;\n const {\n resizeRef,\n contentRect\n } = useResizeObserver();\n watchEffect(() => {\n resizeRef.value = containerRef.value;\n });\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement ? display.height.value : contentRect.value?.height || parseInt(props.height) || 0;\n });\n /** All static elements have been rendered and we have an assumed item height */\n const hasInitialRender = computed(() => {\n return !!(containerRef.value && markerRef.value && viewportHeight.value && itemHeight.value);\n });\n let sizes = Array.from({\n length: items.value.length\n });\n let offsets = Array.from({\n length: items.value.length\n });\n const updateTime = shallowRef(0);\n let targetScrollIndex = -1;\n function getSize(index) {\n return sizes[index] || itemHeight.value;\n }\n const updateOffsets = debounce(() => {\n const start = performance.now();\n offsets[0] = 0;\n const length = items.value.length;\n for (let i = 1; i <= length - 1; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1);\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start);\n }, updateTime);\n const unwatch = watch(hasInitialRender, v => {\n if (!v) return;\n // First render is complete, update offsets and visible\n // items in case our assumed item height was incorrect\n\n unwatch();\n markerOffset = markerRef.value.offsetTop;\n updateOffsets.immediate();\n calculateVisibleItems();\n if (!~targetScrollIndex) return;\n nextTick(() => {\n IN_BROWSER && window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex);\n targetScrollIndex = -1;\n });\n });\n });\n onScopeDispose(() => {\n updateOffsets.clear();\n });\n function handleItemResize(index, height) {\n const prevHeight = sizes[index];\n const prevMinHeight = itemHeight.value;\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height;\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height;\n updateOffsets();\n }\n }\n function calculateOffset(index) {\n index = clamp(index, 0, items.value.length - 1);\n return offsets[index] || 0;\n }\n function calculateIndex(scrollTop) {\n return binaryClosest(offsets, scrollTop);\n }\n let lastScrollTop = 0;\n let scrollVelocity = 0;\n let lastScrollTime = 0;\n watch(viewportHeight, (val, oldVal) => {\n if (oldVal) {\n calculateVisibleItems();\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0;\n calculateVisibleItems();\n });\n }\n }\n });\n function handleScroll() {\n if (!containerRef.value || !markerRef.value) return;\n const scrollTop = containerRef.value.scrollTop;\n const scrollTime = performance.now();\n const scrollDeltaT = scrollTime - lastScrollTime;\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop);\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop;\n } else {\n scrollVelocity = scrollTop - lastScrollTop;\n }\n lastScrollTop = scrollTop;\n lastScrollTime = scrollTime;\n calculateVisibleItems();\n }\n function handleScrollend() {\n if (!containerRef.value || !markerRef.value) return;\n scrollVelocity = 0;\n lastScrollTime = 0;\n calculateVisibleItems();\n }\n let raf = -1;\n function calculateVisibleItems() {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(_calculateVisibleItems);\n }\n function _calculateVisibleItems() {\n if (!containerRef.value || !viewportHeight.value) return;\n const scrollTop = lastScrollTop - markerOffset;\n const direction = Math.sign(scrollVelocity);\n const startPx = Math.max(0, scrollTop - BUFFER_PX);\n const start = clamp(calculateIndex(startPx), 0, items.value.length);\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX;\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length);\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) && (direction !== DOWN || end > last.value)) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start);\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value);\n const bufferOverflow = Math.max(topOverflow, bottomOverflow);\n if (bufferOverflow > BUFFER_PX) {\n first.value = start;\n last.value = end;\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start;\n if (end >= items.value.length) last.value = end;\n }\n }\n paddingTop.value = calculateOffset(first.value);\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value);\n }\n function scrollToIndex(index) {\n const offset = calculateOffset(index);\n if (!containerRef.value || index && !offset) {\n targetScrollIndex = index;\n } else {\n containerRef.value.scrollTop = offset;\n }\n }\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => ({\n raw: item,\n index: index + first.value\n }));\n });\n watch(items, () => {\n sizes = Array.from({\n length: items.value.length\n });\n offsets = Array.from({\n length: items.value.length\n });\n updateOffsets.immediate();\n calculateVisibleItems();\n }, {\n deep: true\n });\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize\n };\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest(arr, val) {\n let high = arr.length - 1;\n let low = 0;\n let mid = 0;\n let item = null;\n let target = -1;\n if (arr[high] < val) {\n return high;\n }\n while (low <= high) {\n mid = low + high >> 1;\n item = arr[mid];\n if (item > val) {\n high = mid - 1;\n } else if (item < val) {\n target = mid;\n low = mid + 1;\n } else if (item === val) {\n return mid;\n } else {\n return low;\n }\n }\n return target;\n}\n//# sourceMappingURL=virtual.mjs.map","import { Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VVirtualScroll.css\";\n\n// Components\nimport { VVirtualScrollItem } from \"./VVirtualScrollItem.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { makeVirtualProps, useVirtual } from \"../../composables/virtual.mjs\"; // Utilities\nimport { onMounted, onScopeDispose, toRef } from 'vue';\nimport { convertToUnit, genericComponent, getCurrentInstance, getScrollParent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVVirtualScrollProps = propsFactory({\n items: {\n type: Array,\n default: () => []\n },\n renderless: Boolean,\n ...makeVirtualProps(),\n ...makeComponentProps(),\n ...makeDimensionProps()\n}, 'VVirtualScroll');\nexport const VVirtualScroll = genericComponent()({\n name: 'VVirtualScroll',\n props: makeVVirtualScrollProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const vm = getCurrentInstance('VVirtualScroll');\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n calculateVisibleItems,\n containerRef,\n markerRef,\n handleScroll,\n handleScrollend,\n handleItemResize,\n scrollToIndex,\n paddingTop,\n paddingBottom,\n computedItems\n } = useVirtual(props, toRef(props, 'items'));\n useToggleScope(() => props.renderless, () => {\n function handleListeners() {\n let add = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n const method = add ? 'addEventListener' : 'removeEventListener';\n if (containerRef.value === document.documentElement) {\n document[method]('scroll', handleScroll, {\n passive: true\n });\n document[method]('scrollend', handleScrollend);\n } else {\n containerRef.value?.[method]('scroll', handleScroll, {\n passive: true\n });\n containerRef.value?.[method]('scrollend', handleScrollend);\n }\n }\n onMounted(() => {\n containerRef.value = getScrollParent(vm.vnode.el, true);\n handleListeners(true);\n });\n onScopeDispose(handleListeners);\n });\n useRender(() => {\n const children = computedItems.value.map(item => _createVNode(VVirtualScrollItem, {\n \"key\": item.index,\n \"renderless\": props.renderless,\n \"onUpdate:height\": height => handleItemResize(item.index, height)\n }, {\n default: slotProps => slots.default?.({\n item: item.raw,\n index: item.index,\n ...slotProps\n })\n }));\n return props.renderless ? _createVNode(_Fragment, null, [_createVNode(\"div\", {\n \"ref\": markerRef,\n \"class\": \"v-virtual-scroll__spacer\",\n \"style\": {\n paddingTop: convertToUnit(paddingTop.value)\n }\n }, null), children, _createVNode(\"div\", {\n \"class\": \"v-virtual-scroll__spacer\",\n \"style\": {\n paddingBottom: convertToUnit(paddingBottom.value)\n }\n }, null)]) : _createVNode(\"div\", {\n \"ref\": containerRef,\n \"class\": ['v-virtual-scroll', props.class],\n \"onScrollPassive\": handleScroll,\n \"onScrollend\": handleScrollend,\n \"style\": [dimensionStyles.value, props.style]\n }, [_createVNode(\"div\", {\n \"ref\": markerRef,\n \"class\": \"v-virtual-scroll__container\",\n \"style\": {\n paddingTop: convertToUnit(paddingTop.value),\n paddingBottom: convertToUnit(paddingBottom.value)\n }\n }, [children])]);\n });\n return {\n calculateVisibleItems,\n scrollToIndex\n };\n }\n});\n//# sourceMappingURL=VVirtualScroll.mjs.map","// Utilities\nimport { shallowRef, watch } from 'vue';\n\n// Types\n\nexport function useScrolling(listRef, textFieldRef) {\n const isScrolling = shallowRef(false);\n let scrollTimeout;\n function onListScroll(e) {\n cancelAnimationFrame(scrollTimeout);\n isScrolling.value = true;\n scrollTimeout = requestAnimationFrame(() => {\n scrollTimeout = requestAnimationFrame(() => {\n isScrolling.value = false;\n });\n });\n }\n async function finishScrolling() {\n await new Promise(resolve => requestAnimationFrame(resolve));\n await new Promise(resolve => requestAnimationFrame(resolve));\n await new Promise(resolve => requestAnimationFrame(resolve));\n await new Promise(resolve => {\n if (isScrolling.value) {\n const stop = watch(isScrolling, () => {\n stop();\n resolve();\n });\n } else resolve();\n });\n }\n async function onListKeydown(e) {\n if (e.key === 'Tab') {\n textFieldRef.value?.focus();\n }\n if (!['PageDown', 'PageUp', 'Home', 'End'].includes(e.key)) return;\n const el = listRef.value?.$el;\n if (!el) return;\n if (e.key === 'Home' || e.key === 'End') {\n el.scrollTo({\n top: e.key === 'Home' ? 0 : el.scrollHeight,\n behavior: 'smooth'\n });\n }\n await finishScrolling();\n const children = el.querySelectorAll(':scope > :not(.v-virtual-scroll__spacer)');\n if (e.key === 'PageDown' || e.key === 'Home') {\n const top = el.getBoundingClientRect().top;\n for (const child of children) {\n if (child.getBoundingClientRect().top >= top) {\n child.focus();\n break;\n }\n }\n } else {\n const bottom = el.getBoundingClientRect().bottom;\n for (const child of [...children].reverse()) {\n if (child.getBoundingClientRect().bottom <= bottom) {\n child.focus();\n break;\n }\n }\n }\n }\n return {\n onScrollPassive: onListScroll,\n onKeydown: onListKeydown\n }; // typescript doesn't know about vue's event merging\n}\n//# sourceMappingURL=useScrolling.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VSelect.css\";\n\n// Components\nimport { VDialogTransition } from \"../transitions/index.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VList, VListItem } from \"../VList/index.mjs\";\nimport { VMenu } from \"../VMenu/index.mjs\";\nimport { makeVTextFieldProps, VTextField } from \"../VTextField/VTextField.mjs\";\nimport { VVirtualScroll } from \"../VVirtualScroll/index.mjs\"; // Composables\nimport { useScrolling } from \"./useScrolling.mjs\";\nimport { useForm } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeItemsProps, useItems } from \"../../composables/list-items.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTransitionProps } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';\nimport { checkPrintable, ensureValidVNode, genericComponent, IN_BROWSER, matchesSelector, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n closeText: {\n type: String,\n default: '$vuetify.close'\n },\n openText: {\n type: String,\n default: '$vuetify.open'\n },\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n listProps: {\n type: Object\n },\n menu: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown'\n },\n menuProps: {\n type: Object\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText'\n },\n openOnClear: Boolean,\n itemColor: String,\n ...makeItemsProps({\n itemChildren: false\n })\n}, 'Select');\nexport const makeVSelectProps = propsFactory({\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox'\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({\n transition: {\n component: VDialogTransition\n }\n })\n}, 'VSelect');\nexport const VSelect = genericComponent()({\n name: 'VSelect',\n props: makeVSelectProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:menu': ue => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const vTextFieldRef = ref();\n const vMenuRef = ref();\n const vVirtualScrollRef = ref();\n const _menu = useProxiedModel(props, 'menu');\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;\n _menu.value = v;\n }\n });\n const {\n items,\n transformIn,\n transformOut\n } = useItems(props);\n const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {\n const transformed = transformOut(v);\n return props.multiple ? transformed : transformed[0] ?? null;\n });\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;\n });\n const form = useForm();\n const selectedValues = computed(() => model.value.map(selection => selection.value));\n const isFocused = shallowRef(false);\n const label = computed(() => menu.value ? props.closeText : props.openText);\n let keyboardLookupPrefix = '';\n let keyboardLookupLastTime;\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return items.value.filter(item => !model.value.some(s => props.valueComparator(s, item)));\n }\n return items.value;\n });\n const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);\n const computedMenuProps = computed(() => {\n return {\n ...props.menuProps,\n activatorProps: {\n ...(props.menuProps?.activatorProps || {}),\n 'aria-haspopup': 'listbox' // Set aria-haspopup to 'listbox'\n }\n };\n });\n const listRef = ref();\n const listEvents = useScrolling(listRef, vTextFieldRef);\n function onClear(e) {\n if (props.openOnClear) {\n menu.value = true;\n }\n }\n function onMousedownControl() {\n if (menuDisabled.value) return;\n menu.value = !menu.value;\n }\n function onListKeydown(e) {\n if (checkPrintable(e)) {\n onKeydown(e);\n }\n }\n function onKeydown(e) {\n if (!e.key || props.readonly || form?.isReadonly.value) return;\n if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault();\n }\n if (['Enter', 'ArrowDown', ' '].includes(e.key)) {\n menu.value = true;\n }\n if (['Escape', 'Tab'].includes(e.key)) {\n menu.value = false;\n }\n if (e.key === 'Home') {\n listRef.value?.focus('first');\n } else if (e.key === 'End') {\n listRef.value?.focus('last');\n }\n\n // html select hotkeys\n const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds\n\n if (props.multiple || !checkPrintable(e)) return;\n const now = performance.now();\n if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n keyboardLookupPrefix = '';\n }\n keyboardLookupPrefix += e.key.toLowerCase();\n keyboardLookupLastTime = now;\n const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));\n if (item !== undefined) {\n model.value = [item];\n const index = displayItems.value.indexOf(item);\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n }\n\n /** @param set - null means toggle */\n function select(item) {\n let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (item.props.disabled) return;\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));\n const add = set == null ? !~index : set;\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value];\n value.splice(index, 1);\n model.value = value;\n } else if (add) {\n model.value = [...model.value, item];\n }\n } else {\n const add = set !== false;\n model.value = add ? [item] : [];\n nextTick(() => {\n menu.value = false;\n });\n }\n }\n function onBlur(e) {\n if (!listRef.value?.$el.contains(e.relatedTarget)) {\n menu.value = false;\n }\n }\n function onAfterEnter() {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems();\n }\n }\n function onAfterLeave() {\n if (isFocused.value) {\n vTextFieldRef.value?.focus();\n }\n }\n function onFocusin(e) {\n isFocused.value = true;\n }\n function onModelUpdate(v) {\n if (v == null) model.value = [];else if (matchesSelector(vTextFieldRef.value, ':autofill') || matchesSelector(vTextFieldRef.value, ':-webkit-autofill')) {\n const item = items.value.find(item => item.title === v);\n if (item) {\n select(item);\n }\n } else if (vTextFieldRef.value) {\n vTextFieldRef.value.value = '';\n }\n }\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n });\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return;\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true;\n }\n });\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip);\n const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);\n const isDirty = model.value.length > 0;\n const textFieldProps = VTextField.filterProps(props);\n const placeholder = isDirty || !isFocused.value && props.label && !props.persistentPlaceholder ? undefined : props.placeholder;\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": model.value.map(v => v.props.value).join(', '),\n \"onUpdate:modelValue\": onModelUpdate,\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.externalValue,\n \"counterValue\": counterValue.value,\n \"dirty\": isDirty,\n \"class\": ['v-select', {\n 'v-select--active-menu': menu.value,\n 'v-select--chips': !!props.chips,\n [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-select--selected': model.value.length,\n 'v-select--selection-slot': !!slots.selection\n }, props.class],\n \"style\": props.style,\n \"inputmode\": \"none\",\n \"placeholder\": placeholder,\n \"onClick:clear\": onClear,\n \"onMousedown:control\": onMousedownControl,\n \"onBlur\": onBlur,\n \"onKeydown\": onKeydown,\n \"aria-label\": t(label.value),\n \"title\": t(label.value)\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({\n \"ref\": vMenuRef,\n \"modelValue\": menu.value,\n \"onUpdate:modelValue\": $event => menu.value = $event,\n \"activator\": \"parent\",\n \"contentClass\": \"v-select__content\",\n \"disabled\": menuDisabled.value,\n \"eager\": props.eager,\n \"maxHeight\": 310,\n \"openOnClick\": false,\n \"closeOnContentClick\": false,\n \"transition\": props.transition,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, computedMenuProps.value), {\n default: () => [hasList && _createVNode(VList, _mergeProps({\n \"ref\": listRef,\n \"selected\": selectedValues.value,\n \"selectStrategy\": props.multiple ? 'independent' : 'single-independent',\n \"onMousedown\": e => e.preventDefault(),\n \"onKeydown\": onListKeydown,\n \"onFocusin\": onFocusin,\n \"tabindex\": \"-1\",\n \"aria-live\": \"polite\",\n \"color\": props.itemColor ?? props.color\n }, listEvents, props.listProps), {\n default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {\n \"title\": t(props.noDataText)\n }, null)), _createVNode(VVirtualScroll, {\n \"ref\": vVirtualScrollRef,\n \"renderless\": true,\n \"items\": displayItems.value\n }, {\n default: _ref2 => {\n let {\n item,\n index,\n itemRef\n } = _ref2;\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n onClick: () => select(item, null)\n });\n return slots.item?.({\n item,\n index,\n props: itemProps\n }) ?? _createVNode(VListItem, _mergeProps(itemProps, {\n \"role\": \"option\"\n }), {\n prepend: _ref3 => {\n let {\n isSelected\n } = _ref3;\n return _createVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {\n \"key\": item.value,\n \"modelValue\": isSelected,\n \"ripple\": false,\n \"tabindex\": \"-1\"\n }, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {\n \"image\": item.props.prependAvatar\n }, null), item.props.prependIcon && _createVNode(VIcon, {\n \"icon\": item.props.prependIcon\n }, null)]);\n }\n });\n }\n }), slots['append-item']?.()]\n })]\n }), model.value.map((item, index) => {\n function onChipClose(e) {\n e.stopPropagation();\n e.preventDefault();\n select(item, false);\n }\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n onChipClose(e);\n },\n onMousedown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined\n };\n const hasSlot = hasChips ? !!slots.chip : !!slots.selection;\n const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({\n item,\n index,\n props: slotProps\n }) : slots.selection({\n item,\n index\n })) : undefined;\n if (hasSlot && !slotContent) return undefined;\n return _createVNode(\"div\", {\n \"key\": item.value,\n \"class\": \"v-select__selection\"\n }, [hasChips ? !slots.chip ? _createVNode(VChip, _mergeProps({\n \"key\": \"chip\",\n \"closable\": props.closableChips,\n \"size\": \"small\",\n \"text\": item.title,\n \"disabled\": item.props.disabled\n }, slotProps), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"chip-defaults\",\n \"defaults\": {\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title\n }\n }\n }, {\n default: () => [slotContent]\n }) : slotContent ?? _createVNode(\"span\", {\n \"class\": \"v-select__selection-text\"\n }, [item.title, props.multiple && index < model.value.length - 1 && _createVNode(\"span\", {\n \"class\": \"v-select__selection-comma\"\n }, [_createTextVNode(\",\")])])]);\n })]),\n 'append-inner': function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(_Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? _createVNode(VIcon, {\n \"class\": \"v-select__menu-icon\",\n \"icon\": props.menuIcon\n }, null) : undefined]);\n }\n });\n });\n return forwardRefs({\n isFocused,\n menu,\n select\n }, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VSelect.mjs.map","/* eslint-disable max-statements */\n/* eslint-disable no-labels */\n\n// Utilities\nimport { computed, ref, unref, watchEffect } from 'vue';\nimport { getPropertyFromItem, propsFactory, wrapInArray } from \"../util/index.mjs\"; // Types\n/**\n * - match without highlight\n * - single match (index), length already known\n * - single match (start, end)\n * - multiple matches (start, end), probably shouldn't overlap\n */\n// Composables\nexport const defaultFilter = (value, query, item) => {\n if (value == null || query == null) return -1;\n return value.toString().toLocaleLowerCase().indexOf(query.toString().toLocaleLowerCase());\n};\nexport const makeFilterProps = propsFactory({\n customFilter: Function,\n customKeyFilter: Object,\n filterKeys: [Array, String],\n filterMode: {\n type: String,\n default: 'intersection'\n },\n noFilter: Boolean\n}, 'filter');\nexport function filterItems(items, query, options) {\n const array = [];\n // always ensure we fall back to a functioning filter\n const filter = options?.default ?? defaultFilter;\n const keys = options?.filterKeys ? wrapInArray(options.filterKeys) : false;\n const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length;\n if (!items?.length) return array;\n loop: for (let i = 0; i < items.length; i++) {\n const [item, transformed = item] = wrapInArray(items[i]);\n const customMatches = {};\n const defaultMatches = {};\n let match = -1;\n if ((query || customFiltersLength > 0) && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(transformed);\n for (const key of filterKeys) {\n const value = getPropertyFromItem(transformed, key);\n const keyFilter = options?.customKeyFilter?.[key];\n match = keyFilter ? keyFilter(value, query, item) : filter(value, query, item);\n if (match !== -1 && match !== false) {\n if (keyFilter) customMatches[key] = match;else defaultMatches[key] = match;\n } else if (options?.filterMode === 'every') {\n continue loop;\n }\n }\n } else {\n match = filter(item, query, item);\n if (match !== -1 && match !== false) {\n defaultMatches.title = match;\n }\n }\n const defaultMatchesLength = Object.keys(defaultMatches).length;\n const customMatchesLength = Object.keys(customMatches).length;\n if (!defaultMatchesLength && !customMatchesLength) continue;\n if (options?.filterMode === 'union' && customMatchesLength !== customFiltersLength && !defaultMatchesLength) continue;\n if (options?.filterMode === 'intersection' && (customMatchesLength !== customFiltersLength || !defaultMatchesLength)) continue;\n }\n array.push({\n index: i,\n matches: {\n ...defaultMatches,\n ...customMatches\n }\n });\n }\n return array;\n}\nexport function useFilter(props, items, query, options) {\n const filteredItems = ref([]);\n const filteredMatches = ref(new Map());\n const transformedItems = computed(() => options?.transform ? unref(items).map(item => [item, options.transform(item)]) : unref(items));\n watchEffect(() => {\n const _query = typeof query === 'function' ? query() : unref(query);\n const strQuery = typeof _query !== 'string' && typeof _query !== 'number' ? '' : String(_query);\n const results = filterItems(transformedItems.value, strQuery, {\n customKeyFilter: {\n ...props.customKeyFilter,\n ...unref(options?.customKeyFilter)\n },\n default: props.customFilter,\n filterKeys: props.filterKeys,\n filterMode: props.filterMode,\n noFilter: props.noFilter\n });\n const originalItems = unref(items);\n const _filteredItems = [];\n const _filteredMatches = new Map();\n results.forEach(_ref => {\n let {\n index,\n matches\n } = _ref;\n const item = originalItems[index];\n _filteredItems.push(item);\n _filteredMatches.set(item.value, matches);\n });\n filteredItems.value = _filteredItems;\n filteredMatches.value = _filteredMatches;\n });\n function getMatches(item) {\n return filteredMatches.value.get(item.value);\n }\n return {\n filteredItems,\n filteredMatches,\n getMatches\n };\n}\n//# sourceMappingURL=filter.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VAutocomplete.css\";\n\n// Components\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VList, VListItem } from \"../VList/index.mjs\";\nimport { VMenu } from \"../VMenu/index.mjs\";\nimport { makeSelectProps } from \"../VSelect/VSelect.mjs\";\nimport { makeVTextFieldProps, VTextField } from \"../VTextField/VTextField.mjs\";\nimport { VVirtualScroll } from \"../VVirtualScroll/index.mjs\"; // Composables\nimport { useScrolling } from \"../VSelect/useScrolling.mjs\";\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { useForm } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useItems } from \"../../composables/list-items.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTransitionProps } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';\nimport { checkPrintable, ensureValidVNode, genericComponent, IN_BROWSER, matchesSelector, noop, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nfunction highlightResult(text, matches, length) {\n if (matches == null) return text;\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented');\n return typeof matches === 'number' && ~matches ? _createVNode(_Fragment, null, [_createVNode(\"span\", {\n \"class\": \"v-autocomplete__unmask\"\n }, [text.substr(0, matches)]), _createVNode(\"span\", {\n \"class\": \"v-autocomplete__mask\"\n }, [text.substr(matches, length)]), _createVNode(\"span\", {\n \"class\": \"v-autocomplete__unmask\"\n }, [text.substr(matches + length)])]) : text;\n}\nexport const makeVAutocompleteProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String]\n },\n clearOnSelect: Boolean,\n search: String,\n ...makeFilterProps({\n filterKeys: ['title']\n }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox'\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({\n transition: false\n })\n}, 'VAutocomplete');\nexport const VAutocomplete = genericComponent()({\n name: 'VAutocomplete',\n props: makeVAutocompleteProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:search': value => true,\n 'update:modelValue': value => true,\n 'update:menu': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const vTextFieldRef = ref();\n const isFocused = shallowRef(false);\n const isPristine = shallowRef(true);\n const listHasFocus = shallowRef(false);\n const vMenuRef = ref();\n const vVirtualScrollRef = ref();\n const _menu = useProxiedModel(props, 'menu');\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;\n _menu.value = v;\n }\n });\n const selectionIndex = shallowRef(-1);\n const color = computed(() => vTextFieldRef.value?.color);\n const label = computed(() => menu.value ? props.closeText : props.openText);\n const {\n items,\n transformIn,\n transformOut\n } = useItems(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(color);\n const search = useProxiedModel(props, 'search', '');\n const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {\n const transformed = transformOut(v);\n return props.multiple ? transformed : transformed[0] ?? null;\n });\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;\n });\n const form = useForm();\n const {\n filteredItems,\n getMatches\n } = useFilter(props, items, () => isPristine.value ? '' : search.value);\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));\n }\n return filteredItems.value;\n });\n const hasChips = computed(() => !!(props.chips || slots.chip));\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);\n const selectedValues = computed(() => model.value.map(selection => selection.props.value));\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;\n return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;\n });\n const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);\n const listRef = ref();\n const listEvents = useScrolling(listRef, vTextFieldRef);\n function onClear(e) {\n if (props.openOnClear) {\n menu.value = true;\n }\n search.value = '';\n }\n function onMousedownControl() {\n if (menuDisabled.value) return;\n menu.value = true;\n }\n function onMousedownMenuIcon(e) {\n if (menuDisabled.value) return;\n if (isFocused.value) {\n e.preventDefault();\n e.stopPropagation();\n }\n menu.value = !menu.value;\n }\n function onListKeydown(e) {\n if (checkPrintable(e)) {\n vTextFieldRef.value?.focus();\n }\n }\n function onKeydown(e) {\n if (props.readonly || form?.isReadonly.value) return;\n const selectionStart = vTextFieldRef.value.selectionStart;\n const length = model.value.length;\n if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n }\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true;\n }\n if (['Escape'].includes(e.key)) {\n menu.value = false;\n }\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key) && !model.value.some(_ref2 => {\n let {\n value\n } = _ref2;\n return value === displayItems.value[0].value;\n })) {\n select(displayItems.value[0]);\n }\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next');\n }\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);\n if (~selectionIndex.value) {\n const originalSelectionIndex = selectionIndex.value;\n select(model.value[selectionIndex.value], false);\n selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1;\n }\n }\n if (!props.multiple) return;\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return;\n const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;\n if (model.value[prev]) {\n selectionIndex.value = prev;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length);\n }\n }\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return;\n const next = selectionIndex.value + 1;\n if (model.value[next]) {\n selectionIndex.value = next;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(0, 0);\n }\n }\n }\n function onChange(e) {\n if (matchesSelector(vTextFieldRef.value, ':autofill') || matchesSelector(vTextFieldRef.value, ':-webkit-autofill')) {\n const item = items.value.find(item => item.title === e.target.value);\n if (item) {\n select(item);\n }\n }\n }\n function onAfterEnter() {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems();\n }\n }\n function onAfterLeave() {\n if (isFocused.value) {\n isPristine.value = true;\n vTextFieldRef.value?.focus();\n }\n }\n function onFocusin(e) {\n isFocused.value = true;\n setTimeout(() => {\n listHasFocus.value = true;\n });\n }\n function onFocusout(e) {\n listHasFocus.value = false;\n }\n function onUpdateModelValue(v) {\n if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];\n }\n const isSelecting = shallowRef(false);\n\n /** @param set - null means toggle */\n function select(item) {\n let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (!item || item.props.disabled) return;\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));\n const add = set == null ? !~index : set;\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value];\n value.splice(index, 1);\n model.value = value;\n } else if (add) {\n model.value = [...model.value, item];\n }\n if (props.clearOnSelect) {\n search.value = '';\n }\n } else {\n const add = set !== false;\n model.value = add ? [item] : [];\n search.value = add && !hasSelectionSlot.value ? item.title : '';\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false;\n isPristine.value = true;\n });\n }\n }\n watch(isFocused, (val, oldVal) => {\n if (val === oldVal) return;\n if (val) {\n isSelecting.value = true;\n search.value = props.multiple || hasSelectionSlot.value ? '' : String(model.value.at(-1)?.props.title ?? '');\n isPristine.value = true;\n nextTick(() => isSelecting.value = false);\n } else {\n if (!props.multiple && search.value == null) model.value = [];\n menu.value = false;\n if (!model.value.some(_ref3 => {\n let {\n title\n } = _ref3;\n return title === search.value;\n })) search.value = '';\n selectionIndex.value = -1;\n }\n });\n watch(search, val => {\n if (!isFocused.value || isSelecting.value) return;\n if (val) menu.value = true;\n isPristine.value = !val;\n });\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(item => model.value.some(s => item.value === s.value));\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n });\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return;\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true;\n }\n });\n useRender(() => {\n const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);\n const isDirty = model.value.length > 0;\n const textFieldProps = VTextField.filterProps(props);\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": search.value,\n \"onUpdate:modelValue\": [$event => search.value = $event, onUpdateModelValue],\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.externalValue,\n \"counterValue\": counterValue.value,\n \"dirty\": isDirty,\n \"onChange\": onChange,\n \"class\": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {\n 'v-autocomplete--active-menu': menu.value,\n 'v-autocomplete--chips': !!props.chips,\n 'v-autocomplete--selection-slot': !!hasSelectionSlot.value,\n 'v-autocomplete--selecting-index': selectionIndex.value > -1\n }, props.class],\n \"style\": props.style,\n \"readonly\": props.readonly,\n \"placeholder\": isDirty ? undefined : props.placeholder,\n \"onClick:clear\": onClear,\n \"onMousedown:control\": onMousedownControl,\n \"onKeydown\": onKeydown\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({\n \"ref\": vMenuRef,\n \"modelValue\": menu.value,\n \"onUpdate:modelValue\": $event => menu.value = $event,\n \"activator\": \"parent\",\n \"contentClass\": \"v-autocomplete__content\",\n \"disabled\": menuDisabled.value,\n \"eager\": props.eager,\n \"maxHeight\": 310,\n \"openOnClick\": false,\n \"closeOnContentClick\": false,\n \"transition\": props.transition,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, props.menuProps), {\n default: () => [hasList && _createVNode(VList, _mergeProps({\n \"ref\": listRef,\n \"selected\": selectedValues.value,\n \"selectStrategy\": props.multiple ? 'independent' : 'single-independent',\n \"onMousedown\": e => e.preventDefault(),\n \"onKeydown\": onListKeydown,\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"tabindex\": \"-1\",\n \"aria-live\": \"polite\",\n \"color\": props.itemColor ?? props.color\n }, listEvents, props.listProps), {\n default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {\n \"title\": t(props.noDataText)\n }, null)), _createVNode(VVirtualScroll, {\n \"ref\": vVirtualScrollRef,\n \"renderless\": true,\n \"items\": displayItems.value\n }, {\n default: _ref4 => {\n let {\n item,\n index,\n itemRef\n } = _ref4;\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n active: highlightFirst.value && index === 0 ? true : undefined,\n onClick: () => select(item, null)\n });\n return slots.item?.({\n item,\n index,\n props: itemProps\n }) ?? _createVNode(VListItem, _mergeProps(itemProps, {\n \"role\": \"option\"\n }), {\n prepend: _ref5 => {\n let {\n isSelected\n } = _ref5;\n return _createVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {\n \"key\": item.value,\n \"modelValue\": isSelected,\n \"ripple\": false,\n \"tabindex\": \"-1\"\n }, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {\n \"image\": item.props.prependAvatar\n }, null), item.props.prependIcon && _createVNode(VIcon, {\n \"icon\": item.props.prependIcon\n }, null)]);\n },\n title: () => {\n return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);\n }\n });\n }\n }), slots['append-item']?.()]\n })]\n }), model.value.map((item, index) => {\n function onChipClose(e) {\n e.stopPropagation();\n e.preventDefault();\n select(item, false);\n }\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n onChipClose(e);\n },\n onMousedown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined\n };\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;\n const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({\n item,\n index,\n props: slotProps\n }) : slots.selection({\n item,\n index\n })) : undefined;\n if (hasSlot && !slotContent) return undefined;\n return _createVNode(\"div\", {\n \"key\": item.value,\n \"class\": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],\n \"style\": index === selectionIndex.value ? textColorStyles.value : {}\n }, [hasChips.value ? !slots.chip ? _createVNode(VChip, _mergeProps({\n \"key\": \"chip\",\n \"closable\": props.closableChips,\n \"size\": \"small\",\n \"text\": item.title,\n \"disabled\": item.props.disabled\n }, slotProps), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"chip-defaults\",\n \"defaults\": {\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title\n }\n }\n }, {\n default: () => [slotContent]\n }) : slotContent ?? _createVNode(\"span\", {\n \"class\": \"v-autocomplete__selection-text\"\n }, [item.title, props.multiple && index < model.value.length - 1 && _createVNode(\"span\", {\n \"class\": \"v-autocomplete__selection-comma\"\n }, [_createTextVNode(\",\")])])]);\n })]),\n 'append-inner': function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(_Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? _createVNode(VIcon, {\n \"class\": \"v-autocomplete__menu-icon\",\n \"icon\": props.menuIcon,\n \"onMousedown\": onMousedownMenuIcon,\n \"onClick\": noop,\n \"aria-label\": t(label.value),\n \"title\": t(label.value),\n \"tabindex\": \"-1\"\n }, null) : undefined]);\n }\n });\n });\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n filteredItems,\n select\n }, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VAutocomplete.mjs.map","import { withDirectives as _withDirectives, mergeProps as _mergeProps, vShow as _vShow, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBadge.css\";\n\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, useTheme } from \"../../composables/theme.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, pickWithRest, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBadgeProps = propsFactory({\n bordered: Boolean,\n color: String,\n content: [Number, String],\n dot: Boolean,\n floating: Boolean,\n icon: IconValue,\n inline: Boolean,\n label: {\n type: String,\n default: '$vuetify.badge'\n },\n max: [Number, String],\n modelValue: {\n type: Boolean,\n default: true\n },\n offsetX: [Number, String],\n offsetY: [Number, String],\n textColor: String,\n ...makeComponentProps(),\n ...makeLocationProps({\n location: 'top end'\n }),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeTransitionProps({\n transition: 'scale-rotate-transition'\n })\n}, 'VBadge');\nexport const VBadge = genericComponent()({\n name: 'VBadge',\n inheritAttrs: false,\n props: makeVBadgeProps(),\n setup(props, ctx) {\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n roundedClasses\n } = useRounded(props);\n const {\n t\n } = useLocale();\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'textColor'));\n const {\n themeClasses\n } = useTheme();\n const {\n locationStyles\n } = useLocation(props, true, side => {\n const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;\n return base + (['top', 'bottom'].includes(side) ? +(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? +(props.offsetX ?? 0) : 0);\n });\n useRender(() => {\n const value = Number(props.content);\n const content = !props.max || isNaN(value) ? props.content : value <= +props.max ? value : `${props.max}+`;\n const [badgeAttrs, attrs] = pickWithRest(ctx.attrs, ['aria-atomic', 'aria-label', 'aria-live', 'role', 'title']);\n return _createVNode(props.tag, _mergeProps({\n \"class\": ['v-badge', {\n 'v-badge--bordered': props.bordered,\n 'v-badge--dot': props.dot,\n 'v-badge--floating': props.floating,\n 'v-badge--inline': props.inline\n }, props.class]\n }, attrs, {\n \"style\": props.style\n }), {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-badge__wrapper\"\n }, [ctx.slots.default?.(), _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [_withDirectives(_createVNode(\"span\", _mergeProps({\n \"class\": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],\n \"style\": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],\n \"aria-atomic\": \"true\",\n \"aria-label\": t(props.label, value),\n \"aria-live\": \"polite\",\n \"role\": \"status\"\n }, badgeAttrs), [props.dot ? undefined : ctx.slots.badge ? ctx.slots.badge?.() : props.icon ? _createVNode(VIcon, {\n \"icon\": props.icon\n }, null) : content]), [[_vShow, props.modelValue]])]\n })])]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBadge.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBannerActionsProps = propsFactory({\n color: String,\n density: String,\n ...makeComponentProps()\n}, 'VBannerActions');\nexport const VBannerActions = genericComponent()({\n name: 'VBannerActions',\n props: makeVBannerActionsProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n provideDefaults({\n VBtn: {\n color: props.color,\n density: props.density,\n slim: true,\n variant: 'text'\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-banner-actions', props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VBannerActions.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VBannerText = createSimpleFunctional('v-banner-text');\n//# sourceMappingURL=VBannerText.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBanner.css\";\n\n// Components\nimport { VBannerActions } from \"./VBannerActions.mjs\";\nimport { VBannerText } from \"./VBannerText.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBannerProps = propsFactory({\n avatar: String,\n bgColor: String,\n color: String,\n icon: IconValue,\n lines: String,\n stacked: Boolean,\n sticky: Boolean,\n text: String,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeDisplayProps({\n mobile: null\n }),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VBanner');\nexport const VBanner = genericComponent()({\n name: 'VBanner',\n props: makeVBannerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'bgColor');\n const {\n borderClasses\n } = useBorder(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n themeClasses\n } = provideTheme(props);\n const color = toRef(props, 'color');\n const density = toRef(props, 'density');\n provideDefaults({\n VBannerActions: {\n color,\n density\n }\n });\n useRender(() => {\n const hasText = !!(props.text || slots.text);\n const hasPrependMedia = !!(props.avatar || props.icon);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n return _createVNode(props.tag, {\n \"class\": ['v-banner', {\n 'v-banner--stacked': props.stacked || mobile.value,\n 'v-banner--sticky': props.sticky,\n [`v-banner--${props.lines}-line`]: !!props.lines\n }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, displayClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style],\n \"role\": \"banner\"\n }, {\n default: () => [hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-banner__prepend\"\n }, [!slots.prepend ? _createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"color\": color.value,\n \"density\": density.value,\n \"icon\": props.icon,\n \"image\": props.avatar\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n color: color.value,\n density: density.value,\n icon: props.icon,\n image: props.avatar\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-banner__content\"\n }, [hasText && _createVNode(VBannerText, {\n \"key\": \"text\"\n }, {\n default: () => [slots.text?.() ?? props.text]\n }), slots.default?.()]), slots.actions && _createVNode(VBannerActions, {\n \"key\": \"actions\"\n }, slots.actions)]\n });\n });\n }\n});\n//# sourceMappingURL=VBanner.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBottomNavigation.css\";\n\n// Components\nimport { VBtnToggleSymbol } from \"../VBtnToggle/VBtnToggle.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, useTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBottomNavigationProps = propsFactory({\n baseColor: String,\n bgColor: String,\n color: String,\n grow: Boolean,\n mode: {\n type: String,\n validator: v => !v || ['horizontal', 'shift'].includes(v)\n },\n height: {\n type: [Number, String],\n default: 56\n },\n active: {\n type: Boolean,\n default: true\n },\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeLayoutItemProps({\n name: 'bottom-navigation'\n }),\n ...makeTagProps({\n tag: 'header'\n }),\n ...makeGroupProps({\n selectedClass: 'v-btn--selected'\n }),\n ...makeThemeProps()\n}, 'VBottomNavigation');\nexport const VBottomNavigation = genericComponent()({\n name: 'VBottomNavigation',\n props: makeVBottomNavigationProps(),\n emits: {\n 'update:active': value => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = useTheme();\n const {\n borderClasses\n } = useBorder(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n densityClasses\n } = useDensity(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n ssrBootStyles\n } = useSsrBoot();\n const height = computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));\n const isActive = useProxiedModel(props, 'active', props.active);\n const {\n layoutItemStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: computed(() => 'bottom'),\n layoutSize: computed(() => isActive.value ? height.value : 0),\n elementSize: height,\n active: isActive,\n absolute: toRef(props, 'absolute')\n });\n useGroup(props, VBtnToggleSymbol);\n provideDefaults({\n VBtn: {\n baseColor: toRef(props, 'baseColor'),\n color: toRef(props, 'color'),\n density: toRef(props, 'density'),\n stacked: computed(() => props.mode !== 'horizontal'),\n variant: 'text'\n }\n }, {\n scoped: true\n });\n useRender(() => {\n return _createVNode(props.tag, {\n \"class\": ['v-bottom-navigation', {\n 'v-bottom-navigation--active': isActive.value,\n 'v-bottom-navigation--grow': props.grow,\n 'v-bottom-navigation--shift': props.mode === 'shift'\n }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, layoutItemStyles.value, {\n height: convertToUnit(height.value)\n }, ssrBootStyles.value, props.style]\n }, {\n default: () => [slots.default && _createVNode(\"div\", {\n \"class\": \"v-bottom-navigation__content\"\n }, [slots.default()])]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBottomNavigation.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDialog.css\";\n\n// Components\nimport { VDialogTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\"; // Composables\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\"; // Utilities\nimport { mergeProps, nextTick, ref, watch } from 'vue';\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDialogProps = propsFactory({\n fullscreen: Boolean,\n retainFocus: {\n type: Boolean,\n default: true\n },\n scrollable: Boolean,\n ...makeVOverlayProps({\n origin: 'center center',\n scrollStrategy: 'block',\n transition: {\n component: VDialogTransition\n },\n zIndex: 2400\n })\n}, 'VDialog');\nexport const VDialog = genericComponent()({\n name: 'VDialog',\n props: makeVDialogProps(),\n emits: {\n 'update:modelValue': value => true,\n afterEnter: () => true,\n afterLeave: () => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n scopeId\n } = useScopeId();\n const overlay = ref();\n function onFocusin(e) {\n const before = e.relatedTarget;\n const after = e.target;\n if (before !== after && overlay.value?.contentEl &&\n // We're the topmost dialog\n overlay.value?.globalTop &&\n // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)) {\n const focusable = focusableChildren(overlay.value.contentEl);\n if (!focusable.length) return;\n const firstElement = focusable[0];\n const lastElement = focusable[focusable.length - 1];\n if (before === firstElement) {\n lastElement.focus();\n } else {\n firstElement.focus();\n }\n }\n }\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n val ? document.addEventListener('focusin', onFocusin) : document.removeEventListener('focusin', onFocusin);\n }, {\n immediate: true\n });\n }\n function onAfterEnter() {\n emit('afterEnter');\n if (overlay.value?.contentEl && !overlay.value.contentEl.contains(document.activeElement)) {\n overlay.value.contentEl.focus({\n preventScroll: true\n });\n }\n }\n function onAfterLeave() {\n emit('afterLeave');\n }\n watch(isActive, async val => {\n if (!val) {\n await nextTick();\n overlay.value.activatorEl?.focus({\n preventScroll: true\n });\n }\n });\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n const activatorProps = mergeProps({\n 'aria-haspopup': 'dialog'\n }, props.activatorProps);\n const contentProps = mergeProps({\n tabindex: -1\n }, props.contentProps);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-dialog', {\n 'v-dialog--fullscreen': props.fullscreen,\n 'v-dialog--scrollable': props.scrollable\n }, props.class],\n \"style\": props.style\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"aria-modal\": \"true\",\n \"activatorProps\": activatorProps,\n \"contentProps\": contentProps,\n \"role\": \"dialog\",\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, scopeId), {\n activator: slots.activator,\n default: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(VDefaultsProvider, {\n \"root\": \"VDialog\"\n }, {\n default: () => [slots.default?.(...args)]\n });\n }\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VDialog.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VBottomSheet.css\";\n\n// Components\nimport { makeVDialogProps, VDialog } from \"../VDialog/VDialog.mjs\"; // Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBottomSheetProps = propsFactory({\n inset: Boolean,\n ...makeVDialogProps({\n transition: 'bottom-sheet-transition'\n })\n}, 'VBottomSheet');\nexport const VBottomSheet = genericComponent()({\n name: 'VBottomSheet',\n props: makeVBottomSheetProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n useRender(() => {\n const dialogProps = VDialog.filterProps(props);\n return _createVNode(VDialog, _mergeProps(dialogProps, {\n \"contentClass\": ['v-bottom-sheet__content', props.contentClass],\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"class\": ['v-bottom-sheet', {\n 'v-bottom-sheet--inset': props.inset\n }, props.class],\n \"style\": props.style\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VBottomSheet.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBreadcrumbsDividerProps = propsFactory({\n divider: [Number, String],\n ...makeComponentProps()\n}, 'VBreadcrumbsDivider');\nexport const VBreadcrumbsDivider = genericComponent()({\n name: 'VBreadcrumbsDivider',\n props: makeVBreadcrumbsDividerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(\"li\", {\n \"class\": ['v-breadcrumbs-divider', props.class],\n \"style\": props.style\n }, [slots?.default?.() ?? props.divider]));\n return {};\n }\n});\n//# sourceMappingURL=VBreadcrumbsDivider.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBreadcrumbsItemProps = propsFactory({\n active: Boolean,\n activeClass: String,\n activeColor: String,\n color: String,\n disabled: Boolean,\n title: String,\n ...makeComponentProps(),\n ...makeRouterProps(),\n ...makeTagProps({\n tag: 'li'\n })\n}, 'VBreadcrumbsItem');\nexport const VBreadcrumbsItem = genericComponent()({\n name: 'VBreadcrumbsItem',\n props: makeVBreadcrumbsItemProps(),\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n const link = useLink(props, attrs);\n const isActive = computed(() => props.active || link.isActive?.value);\n const color = computed(() => isActive.value ? props.activeColor : props.color);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(color);\n useRender(() => {\n return _createVNode(props.tag, {\n \"class\": ['v-breadcrumbs-item', {\n 'v-breadcrumbs-item--active': isActive.value,\n 'v-breadcrumbs-item--disabled': props.disabled,\n [`${props.activeClass}`]: isActive.value && props.activeClass\n }, textColorClasses.value, props.class],\n \"style\": [textColorStyles.value, props.style],\n \"aria-current\": isActive.value ? 'page' : undefined\n }, {\n default: () => [!link.isLink.value ? slots.default?.() ?? props.title : _createVNode(\"a\", _mergeProps({\n \"class\": \"v-breadcrumbs-item--link\",\n \"onClick\": link.navigate\n }, link.linkProps), [slots.default?.() ?? props.title])]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBreadcrumbsItem.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBreadcrumbs.css\";\n\n// Components\nimport { VBreadcrumbsDivider } from \"./VBreadcrumbsDivider.mjs\";\nimport { VBreadcrumbsItem } from \"./VBreadcrumbsItem.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBreadcrumbsProps = propsFactory({\n activeClass: String,\n activeColor: String,\n bgColor: String,\n color: String,\n disabled: Boolean,\n divider: {\n type: String,\n default: '/'\n },\n icon: IconValue,\n items: {\n type: Array,\n default: () => []\n },\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeRoundedProps(),\n ...makeTagProps({\n tag: 'ul'\n })\n}, 'VBreadcrumbs');\nexport const VBreadcrumbs = genericComponent()({\n name: 'VBreadcrumbs',\n props: makeVBreadcrumbsProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n densityClasses\n } = useDensity(props);\n const {\n roundedClasses\n } = useRounded(props);\n provideDefaults({\n VBreadcrumbsDivider: {\n divider: toRef(props, 'divider')\n },\n VBreadcrumbsItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor: toRef(props, 'activeColor'),\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled')\n }\n });\n const items = computed(() => props.items.map(item => {\n return typeof item === 'string' ? {\n item: {\n title: item\n },\n raw: item\n } : {\n item,\n raw: item\n };\n }));\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.icon);\n return _createVNode(props.tag, {\n \"class\": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, props.style]\n }, {\n default: () => [hasPrepend && _createVNode(\"li\", {\n \"key\": \"prepend\",\n \"class\": \"v-breadcrumbs__prepend\"\n }, [!slots.prepend ? _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"start\": true,\n \"icon\": props.icon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !props.icon,\n \"defaults\": {\n VIcon: {\n icon: props.icon,\n start: true\n }\n }\n }, slots.prepend)]), items.value.map((_ref2, index, array) => {\n let {\n item,\n raw\n } = _ref2;\n return _createVNode(_Fragment, null, [slots.item?.({\n item,\n index\n }) ?? _createVNode(VBreadcrumbsItem, _mergeProps({\n \"key\": index,\n \"disabled\": index >= array.length - 1\n }, typeof item === 'string' ? {\n title: item\n } : item), {\n default: slots.title ? () => slots.title?.({\n item,\n index\n }) : undefined\n }), index < array.length - 1 && _createVNode(VBreadcrumbsDivider, null, {\n default: slots.divider ? () => slots.divider?.({\n item: raw,\n index\n }) : undefined\n })]);\n }), slots.default?.()]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBreadcrumbs.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\"; // Utilities\nimport { genericComponent, useRender } from \"../../util/index.mjs\";\nexport const VCardActions = genericComponent()({\n name: 'VCardActions',\n props: makeComponentProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n provideDefaults({\n VBtn: {\n slim: true,\n variant: 'text'\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-card-actions', props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VCardActions.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVCardSubtitleProps = propsFactory({\n opacity: [Number, String],\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VCardSubtitle');\nexport const VCardSubtitle = genericComponent()({\n name: 'VCardSubtitle',\n props: makeVCardSubtitleProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-card-subtitle', props.class],\n \"style\": [{\n '--v-card-subtitle-opacity': props.opacity\n }, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VCardSubtitle.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VCardTitle = createSimpleFunctional('v-card-title');\n//# sourceMappingURL=VCardTitle.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Components\nimport { VCardSubtitle } from \"./VCardSubtitle.mjs\";\nimport { VCardTitle } from \"./VCardTitle.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeCardItemProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n prependAvatar: String,\n prependIcon: IconValue,\n subtitle: [String, Number],\n title: [String, Number],\n ...makeComponentProps(),\n ...makeDensityProps()\n}, 'VCardItem');\nexport const VCardItem = genericComponent()({\n name: 'VCardItem',\n props: makeCardItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);\n const hasAppend = !!(hasAppendMedia || slots.append);\n const hasTitle = !!(props.title != null || slots.title);\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle);\n return _createVNode(\"div\", {\n \"class\": ['v-card-item', props.class],\n \"style\": props.style\n }, [hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-card-item__prepend\"\n }, [!slots.prepend ? _createVNode(_Fragment, null, [props.prependAvatar && _createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"density\": props.density,\n \"image\": props.prependAvatar\n }, null), props.prependIcon && _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"density\": props.density,\n \"icon\": props.prependIcon\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.prependAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-card-item__content\"\n }, [hasTitle && _createVNode(VCardTitle, {\n \"key\": \"title\"\n }, {\n default: () => [slots.title?.() ?? props.title]\n }), hasSubtitle && _createVNode(VCardSubtitle, {\n \"key\": \"subtitle\"\n }, {\n default: () => [slots.subtitle?.() ?? props.subtitle]\n }), slots.default?.()]), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-card-item__append\"\n }, [!slots.append ? _createVNode(_Fragment, null, [props.appendIcon && _createVNode(VIcon, {\n \"key\": \"append-icon\",\n \"density\": props.density,\n \"icon\": props.appendIcon\n }, null), props.appendAvatar && _createVNode(VAvatar, {\n \"key\": \"append-avatar\",\n \"density\": props.density,\n \"image\": props.appendAvatar\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !hasAppendMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.appendAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon\n }\n }\n }, slots.append)])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VCardItem.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVCardTextProps = propsFactory({\n opacity: [Number, String],\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VCardText');\nexport const VCardText = genericComponent()({\n name: 'VCardText',\n props: makeVCardTextProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-card-text', props.class],\n \"style\": [{\n '--v-card-text-opacity': props.opacity\n }, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VCardText.mjs.map","import { withDirectives as _withDirectives, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n/* eslint-disable complexity */\n\n// Styles\nimport \"./VCard.css\";\n\n// Components\nimport { VCardActions } from \"./VCardActions.mjs\";\nimport { VCardItem } from \"./VCardItem.mjs\";\nimport { VCardText } from \"./VCardText.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { LoaderSlot, makeLoaderProps, useLoader } from \"../../composables/loader.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCardProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n image: String,\n link: {\n type: Boolean,\n default: undefined\n },\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n subtitle: [String, Number],\n text: [String, Number],\n title: [String, Number],\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'elevated'\n })\n}, 'VCard');\nexport const VCard = genericComponent()({\n name: 'VCard',\n directives: {\n Ripple\n },\n props: makeVCardProps(),\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n loaderClasses\n } = useLoader(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const link = useLink(props, attrs);\n const isLink = computed(() => props.link !== false && link.isLink.value);\n const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value));\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag;\n const hasTitle = !!(slots.title || props.title != null);\n const hasSubtitle = !!(slots.subtitle || props.subtitle != null);\n const hasHeader = hasTitle || hasSubtitle;\n const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);\n const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);\n const hasImage = !!(slots.image || props.image);\n const hasCardItem = hasHeader || hasPrepend || hasAppend;\n const hasText = !!(slots.text || props.text != null);\n return _withDirectives(_createVNode(Tag, _mergeProps({\n \"class\": ['v-card', {\n 'v-card--disabled': props.disabled,\n 'v-card--flat': props.flat,\n 'v-card--hover': props.hover && !(props.disabled || props.flat),\n 'v-card--link': isClickable.value\n }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],\n \"onClick\": isClickable.value && link.navigate,\n \"tabindex\": props.disabled ? -1 : undefined\n }, link.linkProps), {\n default: () => [hasImage && _createVNode(\"div\", {\n \"key\": \"image\",\n \"class\": \"v-card__image\"\n }, [!slots.image ? _createVNode(VImg, {\n \"key\": \"image-img\",\n \"cover\": true,\n \"src\": props.image\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"image-defaults\",\n \"disabled\": !props.image,\n \"defaults\": {\n VImg: {\n cover: true,\n src: props.image\n }\n }\n }, slots.image)]), _createVNode(LoaderSlot, {\n \"name\": \"v-card\",\n \"active\": !!props.loading,\n \"color\": typeof props.loading === 'boolean' ? undefined : props.loading\n }, {\n default: slots.loader\n }), hasCardItem && _createVNode(VCardItem, {\n \"key\": \"item\",\n \"prependAvatar\": props.prependAvatar,\n \"prependIcon\": props.prependIcon,\n \"title\": props.title,\n \"subtitle\": props.subtitle,\n \"appendAvatar\": props.appendAvatar,\n \"appendIcon\": props.appendIcon\n }, {\n default: slots.item,\n prepend: slots.prepend,\n title: slots.title,\n subtitle: slots.subtitle,\n append: slots.append\n }), hasText && _createVNode(VCardText, {\n \"key\": \"text\"\n }, {\n default: () => [slots.text?.() ?? props.text]\n }), slots.default?.(), slots.actions && _createVNode(VCardActions, null, {\n default: slots.actions\n }), genOverlays(isClickable.value, 'v-card')]\n }), [[_resolveDirective(\"ripple\"), isClickable.value && props.ripple]]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VCard.mjs.map","// Utilities\nimport { keys } from \"../../util/index.mjs\"; // Types\nconst handleGesture = wrapper => {\n const {\n touchstartX,\n touchendX,\n touchstartY,\n touchendY\n } = wrapper;\n const dirRatio = 0.5;\n const minDistance = 16;\n wrapper.offsetX = touchendX - touchstartX;\n wrapper.offsetY = touchendY - touchstartY;\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);\n wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);\n }\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);\n wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);\n }\n};\nfunction touchstart(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchstartX = touch.clientX;\n wrapper.touchstartY = touch.clientY;\n wrapper.start?.({\n originalEvent: event,\n ...wrapper\n });\n}\nfunction touchend(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchendX = touch.clientX;\n wrapper.touchendY = touch.clientY;\n wrapper.end?.({\n originalEvent: event,\n ...wrapper\n });\n handleGesture(wrapper);\n}\nfunction touchmove(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchmoveX = touch.clientX;\n wrapper.touchmoveY = touch.clientY;\n wrapper.move?.({\n originalEvent: event,\n ...wrapper\n });\n}\nfunction createHandlers() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end\n };\n return {\n touchstart: e => touchstart(e, wrapper),\n touchend: e => touchend(e, wrapper),\n touchmove: e => touchmove(e, wrapper)\n };\n}\nfunction mounted(el, binding) {\n const value = binding.value;\n const target = value?.parent ? el.parentElement : el;\n const options = value?.options ?? {\n passive: true\n };\n const uid = binding.instance?.$.uid; // TODO: use custom uid generator\n\n if (!target || !uid) return;\n const handlers = createHandlers(binding.value);\n target._touchHandlers = target._touchHandlers ?? Object.create(null);\n target._touchHandlers[uid] = handlers;\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName], options);\n });\n}\nfunction unmounted(el, binding) {\n const target = binding.value?.parent ? el.parentElement : el;\n const uid = binding.instance?.$.uid;\n if (!target?._touchHandlers || !uid) return;\n const handlers = target._touchHandlers[uid];\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName]);\n });\n delete target._touchHandlers[uid];\n}\nexport const Touch = {\n mounted,\n unmounted\n};\nexport default Touch;\n//# sourceMappingURL=index.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VWindow.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useGroup } from \"../../composables/group.mjs\";\nimport { useLocale, useRtl } from \"../../composables/locale.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Directives\nimport { Touch } from \"../../directives/touch/index.mjs\"; // Utilities\nimport { computed, provide, ref, shallowRef, watch } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VWindowSymbol = Symbol.for('vuetify:v-window');\nexport const VWindowGroupSymbol = Symbol.for('vuetify:v-window-group');\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object],\n default: '$next'\n },\n prevIcon: {\n type: [Boolean, String, Function, Object],\n default: '$prev'\n },\n reverse: Boolean,\n showArrows: {\n type: [Boolean, String],\n validator: v => typeof v === 'boolean' || v === 'hover'\n },\n touch: {\n type: [Object, Boolean],\n default: undefined\n },\n direction: {\n type: String,\n default: 'horizontal'\n },\n modelValue: null,\n disabled: Boolean,\n selectedClass: {\n type: String,\n default: 'v-window-item--active'\n },\n // TODO: mandatory should probably not be exposed but do this for now\n mandatory: {\n type: [Boolean, String],\n default: 'force'\n },\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VWindow');\nexport const VWindow = genericComponent()({\n name: 'VWindow',\n directives: {\n Touch\n },\n props: makeVWindowProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n isRtl\n } = useRtl();\n const {\n t\n } = useLocale();\n const group = useGroup(props, VWindowGroupSymbol);\n const rootRef = ref();\n const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse);\n const isReversed = shallowRef(false);\n const transition = computed(() => {\n const axis = props.direction === 'vertical' ? 'y' : 'x';\n const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value;\n const direction = reverse ? '-reverse' : '';\n return `v-window-${axis}${direction}-transition`;\n });\n const transitionCount = shallowRef(0);\n const transitionHeight = ref(undefined);\n const activeIndex = computed(() => {\n return group.items.value.findIndex(item => group.selected.value.includes(item.id));\n });\n watch(activeIndex, (newVal, oldVal) => {\n const itemsLength = group.items.value.length;\n const lastIndex = itemsLength - 1;\n if (itemsLength <= 2) {\n isReversed.value = newVal < oldVal;\n } else if (newVal === lastIndex && oldVal === 0) {\n isReversed.value = true;\n } else if (newVal === 0 && oldVal === lastIndex) {\n isReversed.value = false;\n } else {\n isReversed.value = newVal < oldVal;\n }\n });\n provide(VWindowSymbol, {\n transition,\n isReversed,\n transitionCount,\n transitionHeight,\n rootRef\n });\n const canMoveBack = computed(() => props.continuous || activeIndex.value !== 0);\n const canMoveForward = computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1);\n function prev() {\n canMoveBack.value && group.prev();\n }\n function next() {\n canMoveForward.value && group.next();\n }\n const arrows = computed(() => {\n const arrows = [];\n const prevProps = {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n class: `v-window__${isRtlReverse.value ? 'right' : 'left'}`,\n onClick: group.prev,\n 'aria-label': t('$vuetify.carousel.prev')\n };\n arrows.push(canMoveBack.value ? slots.prev ? slots.prev({\n props: prevProps\n }) : _createVNode(VBtn, prevProps, null) : _createVNode(\"div\", null, null));\n const nextProps = {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,\n onClick: group.next,\n 'aria-label': t('$vuetify.carousel.next')\n };\n arrows.push(canMoveForward.value ? slots.next ? slots.next({\n props: nextProps\n }) : _createVNode(VBtn, nextProps, null) : _createVNode(\"div\", null, null));\n return arrows;\n });\n const touchOptions = computed(() => {\n if (props.touch === false) return props.touch;\n const options = {\n left: () => {\n isRtlReverse.value ? prev() : next();\n },\n right: () => {\n isRtlReverse.value ? next() : prev();\n },\n start: _ref2 => {\n let {\n originalEvent\n } = _ref2;\n originalEvent.stopPropagation();\n }\n };\n return {\n ...options,\n ...(props.touch === true ? {} : props.touch)\n };\n });\n useRender(() => _withDirectives(_createVNode(props.tag, {\n \"ref\": rootRef,\n \"class\": ['v-window', {\n 'v-window--show-arrows-on-hover': props.showArrows === 'hover'\n }, themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-window__container\",\n \"style\": {\n height: transitionHeight.value\n }\n }, [slots.default?.({\n group\n }), props.showArrows !== false && _createVNode(\"div\", {\n \"class\": \"v-window__controls\"\n }, [arrows.value])]), slots.additional?.({\n group\n })]\n }), [[_resolveDirective(\"touch\"), touchOptions.value]]));\n return {\n group\n };\n }\n});\n//# sourceMappingURL=VWindow.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VCarousel.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VProgressLinear } from \"../VProgressLinear/index.mjs\";\nimport { makeVWindowProps, VWindow } from \"../VWindow/VWindow.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { onMounted, ref, watch } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCarouselProps = propsFactory({\n color: String,\n cycle: Boolean,\n delimiterIcon: {\n type: IconValue,\n default: '$delimiter'\n },\n height: {\n type: [Number, String],\n default: 500\n },\n hideDelimiters: Boolean,\n hideDelimiterBackground: Boolean,\n interval: {\n type: [Number, String],\n default: 6000,\n validator: value => Number(value) > 0\n },\n progress: [Boolean, String],\n verticalDelimiters: [Boolean, String],\n ...makeVWindowProps({\n continuous: true,\n mandatory: 'force',\n showArrows: true\n })\n}, 'VCarousel');\nexport const VCarousel = genericComponent()({\n name: 'VCarousel',\n props: makeVCarouselProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n t\n } = useLocale();\n const windowRef = ref();\n let slideTimeout = -1;\n watch(model, restartTimeout);\n watch(() => props.interval, restartTimeout);\n watch(() => props.cycle, val => {\n if (val) restartTimeout();else window.clearTimeout(slideTimeout);\n });\n onMounted(startTimeout);\n function startTimeout() {\n if (!props.cycle || !windowRef.value) return;\n slideTimeout = window.setTimeout(windowRef.value.group.next, +props.interval > 0 ? +props.interval : 6000);\n }\n function restartTimeout() {\n window.clearTimeout(slideTimeout);\n window.requestAnimationFrame(startTimeout);\n }\n useRender(() => {\n const windowProps = VWindow.filterProps(props);\n return _createVNode(VWindow, _mergeProps({\n \"ref\": windowRef\n }, windowProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-carousel', {\n 'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,\n 'v-carousel--vertical-delimiters': props.verticalDelimiters\n }, props.class],\n \"style\": [{\n height: convertToUnit(props.height)\n }, props.style]\n }), {\n default: slots.default,\n additional: _ref2 => {\n let {\n group\n } = _ref2;\n return _createVNode(_Fragment, null, [!props.hideDelimiters && _createVNode(\"div\", {\n \"class\": \"v-carousel__controls\",\n \"style\": {\n left: props.verticalDelimiters === 'left' && props.verticalDelimiters ? 0 : 'auto',\n right: props.verticalDelimiters === 'right' ? 0 : 'auto'\n }\n }, [group.items.value.length > 0 && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n color: props.color,\n icon: props.delimiterIcon,\n size: 'x-small',\n variant: 'text'\n }\n },\n \"scoped\": true\n }, {\n default: () => [group.items.value.map((item, index) => {\n const props = {\n id: `carousel-item-${item.id}`,\n 'aria-label': t('$vuetify.carousel.ariaLabel.delimiter', index + 1, group.items.value.length),\n class: ['v-carousel__controls__item', group.isSelected(item.id) && 'v-btn--active'],\n onClick: () => group.select(item.id, true)\n };\n return slots.item ? slots.item({\n props,\n item\n }) : _createVNode(VBtn, _mergeProps(item, props), null);\n })]\n })]), props.progress && _createVNode(VProgressLinear, {\n \"class\": \"v-carousel__progress\",\n \"color\": typeof props.progress === 'string' ? props.progress : undefined,\n \"modelValue\": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100\n }, null)]);\n },\n prev: slots.prev,\n next: slots.next\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VCarousel.mjs.map","import { withDirectives as _withDirectives, createVNode as _createVNode, vShow as _vShow } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Directives\nimport Touch from \"../../directives/touch/index.mjs\"; // Utilities\nimport { computed, inject, nextTick, shallowRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { VWindowGroupSymbol, VWindowSymbol } from \"./VWindow.mjs\";\nexport const makeVWindowItemProps = propsFactory({\n reverseTransition: {\n type: [Boolean, String],\n default: undefined\n },\n transition: {\n type: [Boolean, String],\n default: undefined\n },\n ...makeComponentProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps()\n}, 'VWindowItem');\nexport const VWindowItem = genericComponent()({\n name: 'VWindowItem',\n directives: {\n Touch\n },\n props: makeVWindowItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const window = inject(VWindowSymbol);\n const groupItem = useGroupItem(props, VWindowGroupSymbol);\n const {\n isBooted\n } = useSsrBoot();\n if (!window || !groupItem) throw new Error('[Vuetify] VWindowItem must be used inside VWindow');\n const isTransitioning = shallowRef(false);\n const hasTransition = computed(() => isBooted.value && (window.isReversed.value ? props.reverseTransition !== false : props.transition !== false));\n function onAfterTransition() {\n if (!isTransitioning.value || !window) {\n return;\n }\n\n // Finalize transition state.\n isTransitioning.value = false;\n if (window.transitionCount.value > 0) {\n window.transitionCount.value -= 1;\n\n // Remove container height if we are out of transition.\n if (window.transitionCount.value === 0) {\n window.transitionHeight.value = undefined;\n }\n }\n }\n function onBeforeTransition() {\n if (isTransitioning.value || !window) {\n return;\n }\n\n // Initialize transition state here.\n isTransitioning.value = true;\n if (window.transitionCount.value === 0) {\n // Set initial height for height transition.\n window.transitionHeight.value = convertToUnit(window.rootRef.value?.clientHeight);\n }\n window.transitionCount.value += 1;\n }\n function onTransitionCancelled() {\n onAfterTransition(); // This should have the same path as normal transition end.\n }\n function onEnterTransition(el) {\n if (!isTransitioning.value) {\n return;\n }\n nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!hasTransition.value || !isTransitioning.value || !window) {\n return;\n }\n\n // Set transition target height.\n window.transitionHeight.value = convertToUnit(el.clientHeight);\n });\n }\n const transition = computed(() => {\n const name = window.isReversed.value ? props.reverseTransition : props.transition;\n return !hasTransition.value ? false : {\n name: typeof name !== 'string' ? window.transition.value : name,\n onBeforeEnter: onBeforeTransition,\n onAfterEnter: onAfterTransition,\n onEnterCancelled: onTransitionCancelled,\n onBeforeLeave: onBeforeTransition,\n onAfterLeave: onAfterTransition,\n onLeaveCancelled: onTransitionCancelled,\n onEnter: onEnterTransition\n };\n });\n const {\n hasContent\n } = useLazy(props, groupItem.isSelected);\n useRender(() => _createVNode(MaybeTransition, {\n \"transition\": transition.value,\n \"disabled\": !isBooted.value\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": ['v-window-item', groupItem.selectedClass.value, props.class],\n \"style\": props.style\n }, [hasContent.value && slots.default?.()]), [[_vShow, groupItem.isSelected.value]])]\n }));\n return {\n groupItem\n };\n }\n});\n//# sourceMappingURL=VWindowItem.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVImgProps, VImg } from \"../VImg/VImg.mjs\";\nimport { makeVWindowItemProps, VWindowItem } from \"../VWindow/VWindowItem.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCarouselItemProps = propsFactory({\n ...makeVImgProps(),\n ...makeVWindowItemProps()\n}, 'VCarouselItem');\nexport const VCarouselItem = genericComponent()({\n name: 'VCarouselItem',\n inheritAttrs: false,\n props: makeVCarouselItemProps(),\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n useRender(() => {\n const imgProps = VImg.filterProps(props);\n const windowItemProps = VWindowItem.filterProps(props);\n return _createVNode(VWindowItem, _mergeProps({\n \"class\": ['v-carousel-item', props.class]\n }, windowItemProps), {\n default: () => [_createVNode(VImg, _mergeProps(attrs, imgProps), slots)]\n });\n });\n }\n});\n//# sourceMappingURL=VCarouselItem.mjs.map","// Styles\nimport \"./VCode.css\";\n\n// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VCode = createSimpleFunctional('v-code');\n//# sourceMappingURL=index.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerCanvas.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\"; // Utilities\nimport { computed, onMounted, ref, shallowRef, watch } from 'vue';\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVColorPickerCanvasProps = propsFactory({\n color: {\n type: Object\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10\n },\n height: {\n type: [Number, String],\n default: 150\n },\n width: {\n type: [Number, String],\n default: 300\n },\n ...makeComponentProps()\n}, 'VColorPickerCanvas');\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n props: makeVColorPickerCanvasProps(),\n emits: {\n 'update:color': color => true,\n 'update:position': hue => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const isInteracting = shallowRef(false);\n const canvasRef = ref();\n const canvasWidth = shallowRef(parseFloat(props.width));\n const canvasHeight = shallowRef(parseFloat(props.height));\n const _dotPosition = ref({\n x: 0,\n y: 0\n });\n const dotPosition = computed({\n get: () => _dotPosition.value,\n set(val) {\n if (!canvasRef.value) return;\n const {\n x,\n y\n } = val;\n _dotPosition.value = val;\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,\n v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,\n a: props.color?.a ?? 1\n });\n }\n });\n const dotStyles = computed(() => {\n const {\n x,\n y\n } = dotPosition.value;\n const radius = parseInt(props.dotSize, 10) / 2;\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`\n };\n });\n const {\n resizeRef\n } = useResizeObserver(entries => {\n if (!resizeRef.el?.offsetParent) return;\n const {\n width,\n height\n } = entries[0].contentRect;\n canvasWidth.value = width;\n canvasHeight.value = height;\n });\n function updateDotPosition(x, y, rect) {\n const {\n left,\n top,\n width,\n height\n } = rect;\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height)\n };\n }\n function handleMouseDown(e) {\n if (e.type === 'mousedown') {\n // Prevent text selection while dragging\n e.preventDefault();\n }\n if (props.disabled) return;\n handleMouseMove(e);\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n window.addEventListener('touchmove', handleMouseMove);\n window.addEventListener('touchend', handleMouseUp);\n }\n function handleMouseMove(e) {\n if (props.disabled || !canvasRef.value) return;\n isInteracting.value = true;\n const coords = getEventCoordinates(e);\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect());\n }\n function handleMouseUp() {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n window.removeEventListener('touchmove', handleMouseMove);\n window.removeEventListener('touchend', handleMouseUp);\n }\n function updateCanvas() {\n if (!canvasRef.value) return;\n const canvas = canvasRef.value;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0);\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)'); // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`);\n ctx.fillStyle = saturationGradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height);\n valueGradient.addColorStop(0, 'hsla(0, 0%, 0%, 0)'); // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)'); // black\n ctx.fillStyle = valueGradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n watch(() => props.color?.h, updateCanvas, {\n immediate: true\n });\n watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {\n updateCanvas();\n _dotPosition.value = {\n x: dotPosition.value.x * newVal[0] / oldVal[0],\n y: dotPosition.value.y * newVal[1] / oldVal[1]\n };\n }, {\n flush: 'post'\n });\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false;\n return;\n }\n _dotPosition.value = props.color ? {\n x: props.color.s * canvasWidth.value,\n y: (1 - props.color.v) * canvasHeight.value\n } : {\n x: 0,\n y: 0\n };\n }, {\n deep: true,\n immediate: true\n });\n onMounted(() => updateCanvas());\n useRender(() => _createVNode(\"div\", {\n \"ref\": resizeRef,\n \"class\": ['v-color-picker-canvas', props.class],\n \"style\": props.style,\n \"onMousedown\": handleMouseDown,\n \"onTouchstartPassive\": handleMouseDown\n }, [_createVNode(\"canvas\", {\n \"ref\": canvasRef,\n \"width\": canvasWidth.value,\n \"height\": canvasHeight.value\n }, null), props.color && _createVNode(\"div\", {\n \"class\": ['v-color-picker-canvas__dot', {\n 'v-color-picker-canvas__dot--disabled': props.disabled\n }],\n \"style\": dotStyles.value\n }, null)]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerCanvas.mjs.map","// Utilities\nimport { HexToHSV, HSLtoHSV, HSVtoHex, HSVtoHSL, HSVtoRGB, RGBtoHSV } from \"../../../util/colorUtils.mjs\";\nimport { has } from \"../../../util/helpers.mjs\"; // Types\nfunction stripAlpha(color, stripAlpha) {\n if (stripAlpha) {\n const {\n a,\n ...rest\n } = color;\n return rest;\n }\n return color;\n}\nexport function extractColor(color, input) {\n if (input == null || typeof input === 'string') {\n const hex = HSVtoHex(color);\n if (color.a === 1) return hex.slice(0, 7);else return hex;\n }\n if (typeof input === 'object') {\n let converted;\n if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color);else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color);else if (has(input, ['h', 's', 'v'])) converted = color;\n return stripAlpha(converted, !has(input, ['a']) && color.a === 1);\n }\n return color;\n}\nexport function hasAlpha(color) {\n if (!color) return false;\n if (typeof color === 'string') {\n return color.length > 7;\n }\n if (typeof color === 'object') {\n return has(color, ['a']) || has(color, ['alpha']);\n }\n return false;\n}\nexport const nullColor = {\n h: 0,\n s: 0,\n v: 0,\n a: 1\n};\nconst rgba = {\n inputProps: {\n type: 'number',\n min: 0\n },\n inputs: [{\n label: 'R',\n max: 255,\n step: 1,\n getValue: c => Math.round(c.r),\n getColor: (c, v) => ({\n ...c,\n r: Number(v)\n })\n }, {\n label: 'G',\n max: 255,\n step: 1,\n getValue: c => Math.round(c.g),\n getColor: (c, v) => ({\n ...c,\n g: Number(v)\n })\n }, {\n label: 'B',\n max: 255,\n step: 1,\n getValue: c => Math.round(c.b),\n getColor: (c, v) => ({\n ...c,\n b: Number(v)\n })\n }, {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: _ref => {\n let {\n a\n } = _ref;\n return a != null ? Math.round(a * 100) / 100 : 1;\n },\n getColor: (c, v) => ({\n ...c,\n a: Number(v)\n })\n }],\n to: HSVtoRGB,\n from: RGBtoHSV\n};\nconst rgb = {\n ...rgba,\n inputs: rgba.inputs?.slice(0, 3)\n};\nconst hsla = {\n inputProps: {\n type: 'number',\n min: 0\n },\n inputs: [{\n label: 'H',\n max: 360,\n step: 1,\n getValue: c => Math.round(c.h),\n getColor: (c, v) => ({\n ...c,\n h: Number(v)\n })\n }, {\n label: 'S',\n max: 1,\n step: 0.01,\n getValue: c => Math.round(c.s * 100) / 100,\n getColor: (c, v) => ({\n ...c,\n s: Number(v)\n })\n }, {\n label: 'L',\n max: 1,\n step: 0.01,\n getValue: c => Math.round(c.l * 100) / 100,\n getColor: (c, v) => ({\n ...c,\n l: Number(v)\n })\n }, {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: _ref2 => {\n let {\n a\n } = _ref2;\n return a != null ? Math.round(a * 100) / 100 : 1;\n },\n getColor: (c, v) => ({\n ...c,\n a: Number(v)\n })\n }],\n to: HSVtoHSL,\n from: HSLtoHSV\n};\nconst hsl = {\n ...hsla,\n inputs: hsla.inputs.slice(0, 3)\n};\nconst hexa = {\n inputProps: {\n type: 'text'\n },\n inputs: [{\n label: 'HEXA',\n getValue: c => c,\n getColor: (c, v) => v\n }],\n to: HSVtoHex,\n from: HexToHSV\n};\nconst hex = {\n ...hexa,\n inputs: [{\n label: 'HEX',\n getValue: c => c.slice(0, 7),\n getColor: (c, v) => v\n }]\n};\nexport const modes = {\n rgb,\n rgba,\n hsl,\n hsla,\n hex,\n hexa\n};\n//# sourceMappingURL=index.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerEdit.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { modes, nullColor } from \"./util/index.mjs\";\nimport { defineComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nconst VColorPickerInput = _ref => {\n let {\n label,\n ...rest\n } = _ref;\n return _createVNode(\"div\", {\n \"class\": \"v-color-picker-edit__input\"\n }, [_createVNode(\"input\", rest, null), _createVNode(\"span\", null, [label])]);\n};\nexport const makeVColorPickerEditProps = propsFactory({\n color: Object,\n disabled: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: v => Object.keys(modes).includes(v)\n },\n modes: {\n type: Array,\n default: () => Object.keys(modes),\n validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))\n },\n ...makeComponentProps()\n}, 'VColorPickerEdit');\nexport const VColorPickerEdit = defineComponent({\n name: 'VColorPickerEdit',\n props: makeVColorPickerEditProps(),\n emits: {\n 'update:color': color => true,\n 'update:mode': mode => true\n },\n setup(props, _ref2) {\n let {\n emit\n } = _ref2;\n const enabledModes = computed(() => {\n return props.modes.map(key => ({\n ...modes[key],\n name: key\n }));\n });\n const inputs = computed(() => {\n const mode = enabledModes.value.find(m => m.name === props.mode);\n if (!mode) return [];\n const color = props.color ? mode.to(props.color) : null;\n return mode.inputs?.map(_ref3 => {\n let {\n getValue,\n getColor,\n ...inputProps\n } = _ref3;\n return {\n ...mode.inputProps,\n ...inputProps,\n disabled: props.disabled,\n value: color && getValue(color),\n onChange: e => {\n const target = e.target;\n if (!target) return;\n emit('update:color', mode.from(getColor(color ?? mode.to(nullColor), target.value)));\n }\n };\n });\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-color-picker-edit', props.class],\n \"style\": props.style\n }, [inputs.value?.map(props => _createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && _createVNode(VBtn, {\n \"icon\": \"$unfold\",\n \"size\": \"x-small\",\n \"variant\": \"plain\",\n \"onClick\": () => {\n const mi = enabledModes.value.findIndex(m => m.name === props.mode);\n emit('update:mode', enabledModes.value[(mi + 1) % enabledModes.value.length].name);\n }\n }, null)]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerEdit.mjs.map","/* eslint-disable max-statements */\n// Composables\nimport { makeElevationProps } from \"../../composables/elevation.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeRoundedProps } from \"../../composables/rounded.mjs\"; // Utilities\nimport { computed, provide, ref, shallowRef, toRef } from 'vue';\nimport { clamp, createRange, getDecimals, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const VSliderSymbol = Symbol.for('vuetify:v-slider');\nexport function getOffset(e, el, direction) {\n const vertical = direction === 'vertical';\n const rect = el.getBoundingClientRect();\n const touch = 'touches' in e ? e.touches[0] : e;\n return vertical ? touch.clientY - (rect.top + rect.height / 2) : touch.clientX - (rect.left + rect.width / 2);\n}\nfunction getPosition(e, position) {\n if ('touches' in e && e.touches.length) return e.touches[0][position];else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position];else return e[position];\n}\nexport const makeSliderProps = propsFactory({\n disabled: {\n type: Boolean,\n default: null\n },\n error: Boolean,\n readonly: {\n type: Boolean,\n default: null\n },\n max: {\n type: [Number, String],\n default: 100\n },\n min: {\n type: [Number, String],\n default: 0\n },\n step: {\n type: [Number, String],\n default: 0\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String],\n default: undefined,\n validator: v => typeof v === 'boolean' || v === 'always'\n },\n thumbSize: {\n type: [Number, String],\n default: 20\n },\n showTicks: {\n type: [Boolean, String],\n default: false,\n validator: v => typeof v === 'boolean' || v === 'always'\n },\n ticks: {\n type: [Array, Object]\n },\n tickSize: {\n type: [Number, String],\n default: 2\n },\n color: String,\n trackColor: String,\n trackFillColor: String,\n trackSize: {\n type: [Number, String],\n default: 4\n },\n direction: {\n type: String,\n default: 'horizontal',\n validator: v => ['vertical', 'horizontal'].includes(v)\n },\n reverse: Boolean,\n ...makeRoundedProps(),\n ...makeElevationProps({\n elevation: 2\n }),\n ripple: {\n type: Boolean,\n default: true\n }\n}, 'Slider');\nexport const useSteps = props => {\n const min = computed(() => parseFloat(props.min));\n const max = computed(() => parseFloat(props.max));\n const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);\n const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));\n function roundValue(value) {\n value = parseFloat(value);\n if (step.value <= 0) return value;\n const clamped = clamp(value, min.value, max.value);\n const offset = min.value % step.value;\n const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;\n return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));\n }\n return {\n min,\n max,\n step,\n decimals,\n roundValue\n };\n};\nexport const useSlider = _ref => {\n let {\n props,\n steps,\n onSliderStart,\n onSliderMove,\n onSliderEnd,\n getActiveThumb\n } = _ref;\n const {\n isRtl\n } = useRtl();\n const isReversed = toRef(props, 'reverse');\n const vertical = computed(() => props.direction === 'vertical');\n const indexFromEnd = computed(() => vertical.value !== isReversed.value);\n const {\n min,\n max,\n step,\n decimals,\n roundValue\n } = steps;\n const thumbSize = computed(() => parseInt(props.thumbSize, 10));\n const tickSize = computed(() => parseInt(props.tickSize, 10));\n const trackSize = computed(() => parseInt(props.trackSize, 10));\n const numTicks = computed(() => (max.value - min.value) / step.value);\n const disabled = toRef(props, 'disabled');\n const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);\n const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);\n const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);\n const mousePressed = shallowRef(false);\n const startOffset = shallowRef(0);\n const trackContainerRef = ref();\n const activeThumbRef = ref();\n function parseMouseMove(e) {\n const vertical = props.direction === 'vertical';\n const start = vertical ? 'top' : 'left';\n const length = vertical ? 'height' : 'width';\n const position = vertical ? 'clientY' : 'clientX';\n const {\n [start]: trackStart,\n [length]: trackLength\n } = trackContainerRef.value?.$el.getBoundingClientRect();\n const clickOffset = getPosition(e, position);\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0;\n if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;\n return roundValue(min.value + clickPos * (max.value - min.value));\n }\n const handleStop = e => {\n onSliderEnd({\n value: parseMouseMove(e)\n });\n mousePressed.value = false;\n startOffset.value = 0;\n };\n const handleStart = e => {\n activeThumbRef.value = getActiveThumb(e);\n if (!activeThumbRef.value) return;\n activeThumbRef.value.focus();\n mousePressed.value = true;\n if (activeThumbRef.value.contains(e.target)) {\n startOffset.value = getOffset(e, activeThumbRef.value, props.direction);\n } else {\n startOffset.value = 0;\n onSliderMove({\n value: parseMouseMove(e)\n });\n }\n onSliderStart({\n value: parseMouseMove(e)\n });\n };\n const moveListenerOptions = {\n passive: true,\n capture: true\n };\n function onMouseMove(e) {\n onSliderMove({\n value: parseMouseMove(e)\n });\n }\n function onSliderMouseUp(e) {\n e.stopPropagation();\n e.preventDefault();\n handleStop(e);\n window.removeEventListener('mousemove', onMouseMove, moveListenerOptions);\n window.removeEventListener('mouseup', onSliderMouseUp);\n }\n function onSliderTouchend(e) {\n handleStop(e);\n window.removeEventListener('touchmove', onMouseMove, moveListenerOptions);\n e.target?.removeEventListener('touchend', onSliderTouchend);\n }\n function onSliderTouchstart(e) {\n handleStart(e);\n window.addEventListener('touchmove', onMouseMove, moveListenerOptions);\n e.target?.addEventListener('touchend', onSliderTouchend, {\n passive: false\n });\n }\n function onSliderMousedown(e) {\n e.preventDefault();\n handleStart(e);\n window.addEventListener('mousemove', onMouseMove, moveListenerOptions);\n window.addEventListener('mouseup', onSliderMouseUp, {\n passive: false\n });\n }\n const position = val => {\n const percentage = (val - min.value) / (max.value - min.value) * 100;\n return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);\n };\n const showTicks = toRef(props, 'showTicks');\n const parsedTicks = computed(() => {\n if (!showTicks.value) return [];\n if (!props.ticks) {\n return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {\n const value = min.value + t * step.value;\n return {\n value,\n position: position(value)\n };\n }) : [];\n }\n if (Array.isArray(props.ticks)) return props.ticks.map(t => ({\n value: t,\n position: position(t),\n label: t.toString()\n }));\n return Object.keys(props.ticks).map(key => ({\n value: parseFloat(key),\n position: position(parseFloat(key)),\n label: props.ticks[key]\n }));\n });\n const hasLabels = computed(() => parsedTicks.value.some(_ref2 => {\n let {\n label\n } = _ref2;\n return !!label;\n }));\n const data = {\n activeThumbRef,\n color: toRef(props, 'color'),\n decimals,\n disabled,\n direction: toRef(props, 'direction'),\n elevation: toRef(props, 'elevation'),\n hasLabels,\n isReversed,\n indexFromEnd,\n min,\n max,\n mousePressed,\n numTicks,\n onSliderMousedown,\n onSliderTouchstart,\n parsedTicks,\n parseMouseMove,\n position,\n readonly: toRef(props, 'readonly'),\n rounded: toRef(props, 'rounded'),\n roundValue,\n showTicks,\n startOffset,\n step,\n thumbSize,\n thumbColor,\n thumbLabel: toRef(props, 'thumbLabel'),\n ticks: toRef(props, 'ticks'),\n tickSize,\n trackColor,\n trackContainerRef,\n trackFillColor,\n trackSize,\n vertical\n };\n provide(VSliderSymbol, data);\n return data;\n};\n//# sourceMappingURL=slider.mjs.map","import { vShow as _vShow, withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSliderThumb.css\";\n\n// Components\nimport { VSliderSymbol } from \"./slider.mjs\";\nimport { VScaleTransition } from \"../transitions/index.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useElevation } from \"../../composables/elevation.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\"; // Directives\nimport Ripple from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { convertToUnit, genericComponent, keyValues, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSliderThumbProps = propsFactory({\n focused: Boolean,\n max: {\n type: Number,\n required: true\n },\n min: {\n type: Number,\n required: true\n },\n modelValue: {\n type: Number,\n required: true\n },\n position: {\n type: Number,\n required: true\n },\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n name: String,\n ...makeComponentProps()\n}, 'VSliderThumb');\nexport const VSliderThumb = genericComponent()({\n name: 'VSliderThumb',\n directives: {\n Ripple\n },\n props: makeVSliderThumbProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const slider = inject(VSliderSymbol);\n const {\n isRtl,\n rtlClasses\n } = useRtl();\n if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');\n const {\n thumbColor,\n step,\n disabled,\n thumbSize,\n thumbLabel,\n direction,\n isReversed,\n vertical,\n readonly,\n elevation,\n mousePressed,\n decimals,\n indexFromEnd\n } = slider;\n const elevationProps = computed(() => !disabled.value ? elevation.value : undefined);\n const {\n elevationClasses\n } = useElevation(elevationProps);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(thumbColor);\n const {\n pageup,\n pagedown,\n end,\n home,\n left,\n right,\n down,\n up\n } = keyValues;\n const relevantKeys = [pageup, pagedown, end, home, left, right, down, up];\n const multipliers = computed(() => {\n if (step.value) return [1, 2, 3];else return [1, 5, 10];\n });\n function parseKeydown(e, value) {\n if (!relevantKeys.includes(e.key)) return;\n e.preventDefault();\n const _step = step.value || 0.1;\n const steps = (props.max - props.min) / _step;\n if ([left, right, down, up].includes(e.key)) {\n const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];\n const direction = increase.includes(e.key) ? 1 : -1;\n const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;\n value = value + direction * _step * multipliers.value[multiplier];\n } else if (e.key === home) {\n value = props.min;\n } else if (e.key === end) {\n value = props.max;\n } else {\n const direction = e.key === pagedown ? 1 : -1;\n value = value - direction * _step * (steps > 100 ? steps / 10 : 10);\n }\n return Math.max(props.min, Math.min(props.max, value));\n }\n function onKeydown(e) {\n const newValue = parseKeydown(e, props.modelValue);\n newValue != null && emit('update:modelValue', newValue);\n }\n useRender(() => {\n const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%');\n return _createVNode(\"div\", {\n \"class\": ['v-slider-thumb', {\n 'v-slider-thumb--focused': props.focused,\n 'v-slider-thumb--pressed': props.focused && mousePressed.value\n }, props.class, rtlClasses.value],\n \"style\": [{\n '--v-slider-thumb-position': positionPercentage,\n '--v-slider-thumb-size': convertToUnit(thumbSize.value)\n }, props.style],\n \"role\": \"slider\",\n \"tabindex\": disabled.value ? -1 : 0,\n \"aria-label\": props.name,\n \"aria-valuemin\": props.min,\n \"aria-valuemax\": props.max,\n \"aria-valuenow\": props.modelValue,\n \"aria-readonly\": !!readonly.value,\n \"aria-orientation\": direction.value,\n \"onKeydown\": !readonly.value ? onKeydown : undefined\n }, [_createVNode(\"div\", {\n \"class\": ['v-slider-thumb__surface', textColorClasses.value, elevationClasses.value],\n \"style\": {\n ...textColorStyles.value\n }\n }, null), _withDirectives(_createVNode(\"div\", {\n \"class\": ['v-slider-thumb__ripple', textColorClasses.value],\n \"style\": textColorStyles.value\n }, null), [[_resolveDirective(\"ripple\"), props.ripple, null, {\n circle: true,\n center: true\n }]]), _createVNode(VScaleTransition, {\n \"origin\": \"bottom center\"\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": \"v-slider-thumb__label-container\"\n }, [_createVNode(\"div\", {\n \"class\": ['v-slider-thumb__label']\n }, [_createVNode(\"div\", null, [slots['thumb-label']?.({\n modelValue: props.modelValue\n }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[_vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VSliderThumb.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSliderTrack.css\";\n\n// Components\nimport { VSliderSymbol } from \"./slider.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useRounded } from \"../../composables/rounded.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSliderTrackProps = propsFactory({\n start: {\n type: Number,\n required: true\n },\n stop: {\n type: Number,\n required: true\n },\n ...makeComponentProps()\n}, 'VSliderTrack');\nexport const VSliderTrack = genericComponent()({\n name: 'VSliderTrack',\n props: makeVSliderTrackProps(),\n emits: {},\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const slider = inject(VSliderSymbol);\n if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider');\n const {\n color,\n parsedTicks,\n rounded,\n showTicks,\n tickSize,\n trackColor,\n trackFillColor,\n trackSize,\n vertical,\n min,\n max,\n indexFromEnd\n } = slider;\n const {\n roundedClasses\n } = useRounded(rounded);\n const {\n backgroundColorClasses: trackFillColorClasses,\n backgroundColorStyles: trackFillColorStyles\n } = useBackgroundColor(trackFillColor);\n const {\n backgroundColorClasses: trackColorClasses,\n backgroundColorStyles: trackColorStyles\n } = useBackgroundColor(trackColor);\n const startDir = computed(() => `inset-${vertical.value ? 'block' : 'inline'}-${indexFromEnd.value ? 'end' : 'start'}`);\n const endDir = computed(() => vertical.value ? 'height' : 'width');\n const backgroundStyles = computed(() => {\n return {\n [startDir.value]: '0%',\n [endDir.value]: '100%'\n };\n });\n const trackFillWidth = computed(() => props.stop - props.start);\n const trackFillStyles = computed(() => {\n return {\n [startDir.value]: convertToUnit(props.start, '%'),\n [endDir.value]: convertToUnit(trackFillWidth.value, '%')\n };\n });\n const computedTicks = computed(() => {\n if (!showTicks.value) return [];\n const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;\n return ticks.map((tick, index) => {\n const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined;\n return _createVNode(\"div\", {\n \"key\": tick.value,\n \"class\": ['v-slider-track__tick', {\n 'v-slider-track__tick--filled': tick.position >= props.start && tick.position <= props.stop,\n 'v-slider-track__tick--first': tick.value === min.value,\n 'v-slider-track__tick--last': tick.value === max.value\n }],\n \"style\": {\n [startDir.value]: directionValue\n }\n }, [(tick.label || slots['tick-label']) && _createVNode(\"div\", {\n \"class\": \"v-slider-track__tick-label\"\n }, [slots['tick-label']?.({\n tick,\n index\n }) ?? tick.label])]);\n });\n });\n useRender(() => {\n return _createVNode(\"div\", {\n \"class\": ['v-slider-track', roundedClasses.value, props.class],\n \"style\": [{\n '--v-slider-track-size': convertToUnit(trackSize.value),\n '--v-slider-tick-size': convertToUnit(tickSize.value)\n }, props.style]\n }, [_createVNode(\"div\", {\n \"class\": ['v-slider-track__background', trackColorClasses.value, {\n 'v-slider-track__background--opacity': !!color.value || !trackFillColor.value\n }],\n \"style\": {\n ...backgroundStyles.value,\n ...trackColorStyles.value\n }\n }, null), _createVNode(\"div\", {\n \"class\": ['v-slider-track__fill', trackFillColorClasses.value],\n \"style\": {\n ...trackFillStyles.value,\n ...trackFillColorStyles.value\n }\n }, null), showTicks.value && _createVNode(\"div\", {\n \"class\": ['v-slider-track__ticks', {\n 'v-slider-track__ticks--always-show': showTicks.value === 'always'\n }]\n }, [computedTicks.value])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VSliderTrack.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VSlider.css\";\n\n// Components\nimport { VSliderThumb } from \"./VSliderThumb.mjs\";\nimport { VSliderTrack } from \"./VSliderTrack.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\"; // Composables\nimport { makeSliderProps, useSlider, useSteps } from \"./slider.mjs\";\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeSliderProps(),\n ...makeVInputProps(),\n modelValue: {\n type: [Number, String],\n default: 0\n }\n}, 'VSlider');\nexport const VSlider = genericComponent()({\n name: 'VSlider',\n props: makeVSliderProps(),\n emits: {\n 'update:focused': value => true,\n 'update:modelValue': v => true,\n start: value => true,\n end: value => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const thumbContainerRef = ref();\n const {\n rtlClasses\n } = useRtl();\n const steps = useSteps(props);\n const model = useProxiedModel(props, 'modelValue', undefined, value => {\n return steps.roundValue(value == null ? steps.min.value : value);\n });\n const {\n min,\n max,\n mousePressed,\n roundValue,\n onSliderMousedown,\n onSliderTouchstart,\n trackContainerRef,\n position,\n hasLabels,\n readonly\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value);\n },\n onSliderEnd: _ref2 => {\n let {\n value\n } = _ref2;\n const roundedValue = roundValue(value);\n model.value = roundedValue;\n emit('end', roundedValue);\n },\n onSliderMove: _ref3 => {\n let {\n value\n } = _ref3;\n return model.value = roundValue(value);\n },\n getActiveThumb: () => thumbContainerRef.value?.$el\n });\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const trackStop = computed(() => position(model.value));\n useRender(() => {\n const inputProps = VInput.filterProps(props);\n const hasPrepend = !!(props.label || slots.label || slots.prepend);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-slider', {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled\n }, rtlClasses.value, props.class],\n \"style\": props.style\n }, inputProps, {\n \"focused\": isFocused.value\n }), {\n ...slots,\n prepend: hasPrepend ? slotProps => _createVNode(_Fragment, null, [slots.label?.(slotProps) ?? (props.label ? _createVNode(VLabel, {\n \"id\": slotProps.id.value,\n \"class\": \"v-slider__label\",\n \"text\": props.label\n }, null) : undefined), slots.prepend?.(slotProps)]) : undefined,\n default: _ref4 => {\n let {\n id,\n messagesId\n } = _ref4;\n return _createVNode(\"div\", {\n \"class\": \"v-slider__container\",\n \"onMousedown\": !readonly.value ? onSliderMousedown : undefined,\n \"onTouchstartPassive\": !readonly.value ? onSliderTouchstart : undefined\n }, [_createVNode(\"input\", {\n \"id\": id.value,\n \"name\": props.name || id.value,\n \"disabled\": !!props.disabled,\n \"readonly\": !!props.readonly,\n \"tabindex\": \"-1\",\n \"value\": model.value\n }, null), _createVNode(VSliderTrack, {\n \"ref\": trackContainerRef,\n \"start\": 0,\n \"stop\": trackStop.value\n }, {\n 'tick-label': slots['tick-label']\n }), _createVNode(VSliderThumb, {\n \"ref\": thumbContainerRef,\n \"aria-describedby\": messagesId.value,\n \"focused\": isFocused.value,\n \"min\": min.value,\n \"max\": max.value,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": v => model.value = v,\n \"position\": trackStop.value,\n \"elevation\": props.elevation,\n \"onFocus\": focus,\n \"onBlur\": blur,\n \"ripple\": props.ripple,\n \"name\": props.name\n }, {\n 'thumb-label': slots['thumb-label']\n })]);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VSlider.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerPreview.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VSlider } from \"../VSlider/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { onUnmounted } from 'vue';\nimport { nullColor } from \"./util/index.mjs\";\nimport { defineComponent, HexToHSV, HSVtoCSS, propsFactory, SUPPORTS_EYE_DROPPER, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVColorPickerPreviewProps = propsFactory({\n color: {\n type: Object\n },\n disabled: Boolean,\n hideAlpha: Boolean,\n ...makeComponentProps()\n}, 'VColorPickerPreview');\nexport const VColorPickerPreview = defineComponent({\n name: 'VColorPickerPreview',\n props: makeVColorPickerPreviewProps(),\n emits: {\n 'update:color': color => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const abortController = new AbortController();\n onUnmounted(() => abortController.abort());\n async function openEyeDropper() {\n if (!SUPPORTS_EYE_DROPPER) return;\n const eyeDropper = new window.EyeDropper();\n try {\n const result = await eyeDropper.open({\n signal: abortController.signal\n });\n const colorHexValue = HexToHSV(result.sRGBHex);\n emit('update:color', {\n ...(props.color ?? nullColor),\n ...colorHexValue\n });\n } catch (e) {}\n }\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-color-picker-preview', {\n 'v-color-picker-preview--hide-alpha': props.hideAlpha\n }, props.class],\n \"style\": props.style\n }, [SUPPORTS_EYE_DROPPER && _createVNode(\"div\", {\n \"class\": \"v-color-picker-preview__eye-dropper\",\n \"key\": \"eyeDropper\"\n }, [_createVNode(VBtn, {\n \"onClick\": openEyeDropper,\n \"icon\": \"$eyeDropper\",\n \"variant\": \"plain\",\n \"density\": \"comfortable\"\n }, null)]), _createVNode(\"div\", {\n \"class\": \"v-color-picker-preview__dot\"\n }, [_createVNode(\"div\", {\n \"style\": {\n background: HSVtoCSS(props.color ?? nullColor)\n }\n }, null)]), _createVNode(\"div\", {\n \"class\": \"v-color-picker-preview__sliders\"\n }, [_createVNode(VSlider, {\n \"class\": \"v-color-picker-preview__track v-color-picker-preview__hue\",\n \"modelValue\": props.color?.h,\n \"onUpdate:modelValue\": h => emit('update:color', {\n ...(props.color ?? nullColor),\n h\n }),\n \"step\": 0,\n \"min\": 0,\n \"max\": 360,\n \"disabled\": props.disabled,\n \"thumbSize\": 14,\n \"trackSize\": 8,\n \"trackFillColor\": \"white\",\n \"hideDetails\": true\n }, null), !props.hideAlpha && _createVNode(VSlider, {\n \"class\": \"v-color-picker-preview__track v-color-picker-preview__alpha\",\n \"modelValue\": props.color?.a ?? 1,\n \"onUpdate:modelValue\": a => emit('update:color', {\n ...(props.color ?? nullColor),\n a\n }),\n \"step\": 1 / 256,\n \"min\": 0,\n \"max\": 1,\n \"disabled\": props.disabled,\n \"thumbSize\": 14,\n \"trackSize\": 8,\n \"trackFillColor\": \"white\",\n \"hideDetails\": true\n }, null)])]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerPreview.mjs.map","export const red = {\n base: '#f44336',\n lighten5: '#ffebee',\n lighten4: '#ffcdd2',\n lighten3: '#ef9a9a',\n lighten2: '#e57373',\n lighten1: '#ef5350',\n darken1: '#e53935',\n darken2: '#d32f2f',\n darken3: '#c62828',\n darken4: '#b71c1c',\n accent1: '#ff8a80',\n accent2: '#ff5252',\n accent3: '#ff1744',\n accent4: '#d50000'\n};\nexport const pink = {\n base: '#e91e63',\n lighten5: '#fce4ec',\n lighten4: '#f8bbd0',\n lighten3: '#f48fb1',\n lighten2: '#f06292',\n lighten1: '#ec407a',\n darken1: '#d81b60',\n darken2: '#c2185b',\n darken3: '#ad1457',\n darken4: '#880e4f',\n accent1: '#ff80ab',\n accent2: '#ff4081',\n accent3: '#f50057',\n accent4: '#c51162'\n};\nexport const purple = {\n base: '#9c27b0',\n lighten5: '#f3e5f5',\n lighten4: '#e1bee7',\n lighten3: '#ce93d8',\n lighten2: '#ba68c8',\n lighten1: '#ab47bc',\n darken1: '#8e24aa',\n darken2: '#7b1fa2',\n darken3: '#6a1b9a',\n darken4: '#4a148c',\n accent1: '#ea80fc',\n accent2: '#e040fb',\n accent3: '#d500f9',\n accent4: '#aa00ff'\n};\nexport const deepPurple = {\n base: '#673ab7',\n lighten5: '#ede7f6',\n lighten4: '#d1c4e9',\n lighten3: '#b39ddb',\n lighten2: '#9575cd',\n lighten1: '#7e57c2',\n darken1: '#5e35b1',\n darken2: '#512da8',\n darken3: '#4527a0',\n darken4: '#311b92',\n accent1: '#b388ff',\n accent2: '#7c4dff',\n accent3: '#651fff',\n accent4: '#6200ea'\n};\nexport const indigo = {\n base: '#3f51b5',\n lighten5: '#e8eaf6',\n lighten4: '#c5cae9',\n lighten3: '#9fa8da',\n lighten2: '#7986cb',\n lighten1: '#5c6bc0',\n darken1: '#3949ab',\n darken2: '#303f9f',\n darken3: '#283593',\n darken4: '#1a237e',\n accent1: '#8c9eff',\n accent2: '#536dfe',\n accent3: '#3d5afe',\n accent4: '#304ffe'\n};\nexport const blue = {\n base: '#2196f3',\n lighten5: '#e3f2fd',\n lighten4: '#bbdefb',\n lighten3: '#90caf9',\n lighten2: '#64b5f6',\n lighten1: '#42a5f5',\n darken1: '#1e88e5',\n darken2: '#1976d2',\n darken3: '#1565c0',\n darken4: '#0d47a1',\n accent1: '#82b1ff',\n accent2: '#448aff',\n accent3: '#2979ff',\n accent4: '#2962ff'\n};\nexport const lightBlue = {\n base: '#03a9f4',\n lighten5: '#e1f5fe',\n lighten4: '#b3e5fc',\n lighten3: '#81d4fa',\n lighten2: '#4fc3f7',\n lighten1: '#29b6f6',\n darken1: '#039be5',\n darken2: '#0288d1',\n darken3: '#0277bd',\n darken4: '#01579b',\n accent1: '#80d8ff',\n accent2: '#40c4ff',\n accent3: '#00b0ff',\n accent4: '#0091ea'\n};\nexport const cyan = {\n base: '#00bcd4',\n lighten5: '#e0f7fa',\n lighten4: '#b2ebf2',\n lighten3: '#80deea',\n lighten2: '#4dd0e1',\n lighten1: '#26c6da',\n darken1: '#00acc1',\n darken2: '#0097a7',\n darken3: '#00838f',\n darken4: '#006064',\n accent1: '#84ffff',\n accent2: '#18ffff',\n accent3: '#00e5ff',\n accent4: '#00b8d4'\n};\nexport const teal = {\n base: '#009688',\n lighten5: '#e0f2f1',\n lighten4: '#b2dfdb',\n lighten3: '#80cbc4',\n lighten2: '#4db6ac',\n lighten1: '#26a69a',\n darken1: '#00897b',\n darken2: '#00796b',\n darken3: '#00695c',\n darken4: '#004d40',\n accent1: '#a7ffeb',\n accent2: '#64ffda',\n accent3: '#1de9b6',\n accent4: '#00bfa5'\n};\nexport const green = {\n base: '#4caf50',\n lighten5: '#e8f5e9',\n lighten4: '#c8e6c9',\n lighten3: '#a5d6a7',\n lighten2: '#81c784',\n lighten1: '#66bb6a',\n darken1: '#43a047',\n darken2: '#388e3c',\n darken3: '#2e7d32',\n darken4: '#1b5e20',\n accent1: '#b9f6ca',\n accent2: '#69f0ae',\n accent3: '#00e676',\n accent4: '#00c853'\n};\nexport const lightGreen = {\n base: '#8bc34a',\n lighten5: '#f1f8e9',\n lighten4: '#dcedc8',\n lighten3: '#c5e1a5',\n lighten2: '#aed581',\n lighten1: '#9ccc65',\n darken1: '#7cb342',\n darken2: '#689f38',\n darken3: '#558b2f',\n darken4: '#33691e',\n accent1: '#ccff90',\n accent2: '#b2ff59',\n accent3: '#76ff03',\n accent4: '#64dd17'\n};\nexport const lime = {\n base: '#cddc39',\n lighten5: '#f9fbe7',\n lighten4: '#f0f4c3',\n lighten3: '#e6ee9c',\n lighten2: '#dce775',\n lighten1: '#d4e157',\n darken1: '#c0ca33',\n darken2: '#afb42b',\n darken3: '#9e9d24',\n darken4: '#827717',\n accent1: '#f4ff81',\n accent2: '#eeff41',\n accent3: '#c6ff00',\n accent4: '#aeea00'\n};\nexport const yellow = {\n base: '#ffeb3b',\n lighten5: '#fffde7',\n lighten4: '#fff9c4',\n lighten3: '#fff59d',\n lighten2: '#fff176',\n lighten1: '#ffee58',\n darken1: '#fdd835',\n darken2: '#fbc02d',\n darken3: '#f9a825',\n darken4: '#f57f17',\n accent1: '#ffff8d',\n accent2: '#ffff00',\n accent3: '#ffea00',\n accent4: '#ffd600'\n};\nexport const amber = {\n base: '#ffc107',\n lighten5: '#fff8e1',\n lighten4: '#ffecb3',\n lighten3: '#ffe082',\n lighten2: '#ffd54f',\n lighten1: '#ffca28',\n darken1: '#ffb300',\n darken2: '#ffa000',\n darken3: '#ff8f00',\n darken4: '#ff6f00',\n accent1: '#ffe57f',\n accent2: '#ffd740',\n accent3: '#ffc400',\n accent4: '#ffab00'\n};\nexport const orange = {\n base: '#ff9800',\n lighten5: '#fff3e0',\n lighten4: '#ffe0b2',\n lighten3: '#ffcc80',\n lighten2: '#ffb74d',\n lighten1: '#ffa726',\n darken1: '#fb8c00',\n darken2: '#f57c00',\n darken3: '#ef6c00',\n darken4: '#e65100',\n accent1: '#ffd180',\n accent2: '#ffab40',\n accent3: '#ff9100',\n accent4: '#ff6d00'\n};\nexport const deepOrange = {\n base: '#ff5722',\n lighten5: '#fbe9e7',\n lighten4: '#ffccbc',\n lighten3: '#ffab91',\n lighten2: '#ff8a65',\n lighten1: '#ff7043',\n darken1: '#f4511e',\n darken2: '#e64a19',\n darken3: '#d84315',\n darken4: '#bf360c',\n accent1: '#ff9e80',\n accent2: '#ff6e40',\n accent3: '#ff3d00',\n accent4: '#dd2c00'\n};\nexport const brown = {\n base: '#795548',\n lighten5: '#efebe9',\n lighten4: '#d7ccc8',\n lighten3: '#bcaaa4',\n lighten2: '#a1887f',\n lighten1: '#8d6e63',\n darken1: '#6d4c41',\n darken2: '#5d4037',\n darken3: '#4e342e',\n darken4: '#3e2723'\n};\nexport const blueGrey = {\n base: '#607d8b',\n lighten5: '#eceff1',\n lighten4: '#cfd8dc',\n lighten3: '#b0bec5',\n lighten2: '#90a4ae',\n lighten1: '#78909c',\n darken1: '#546e7a',\n darken2: '#455a64',\n darken3: '#37474f',\n darken4: '#263238'\n};\nexport const grey = {\n base: '#9e9e9e',\n lighten5: '#fafafa',\n lighten4: '#f5f5f5',\n lighten3: '#eeeeee',\n lighten2: '#e0e0e0',\n lighten1: '#bdbdbd',\n darken1: '#757575',\n darken2: '#616161',\n darken3: '#424242',\n darken4: '#212121'\n};\nexport const shades = {\n black: '#000000',\n white: '#ffffff',\n transparent: '#ffffff00'\n};\nexport default {\n red,\n pink,\n purple,\n deepPurple,\n indigo,\n blue,\n lightBlue,\n cyan,\n teal,\n green,\n lightGreen,\n lime,\n yellow,\n amber,\n orange,\n deepOrange,\n brown,\n blueGrey,\n grey,\n shades\n};\n//# sourceMappingURL=colors.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerSwatches.css\";\n\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { convertToUnit, deepEqual, defineComponent, getContrast, parseColor, propsFactory, RGBtoCSS, RGBtoHSV, useRender } from \"../../util/index.mjs\";\nimport colors from \"../../util/colors.mjs\"; // Types\nexport const makeVColorPickerSwatchesProps = propsFactory({\n swatches: {\n type: Array,\n default: () => parseDefaultColors(colors)\n },\n disabled: Boolean,\n color: Object,\n maxHeight: [Number, String],\n ...makeComponentProps()\n}, 'VColorPickerSwatches');\nfunction parseDefaultColors(colors) {\n return Object.keys(colors).map(key => {\n const color = colors[key];\n return color.base ? [color.base, color.darken4, color.darken3, color.darken2, color.darken1, color.lighten1, color.lighten2, color.lighten3, color.lighten4, color.lighten5] : [color.black, color.white, color.transparent];\n });\n}\nexport const VColorPickerSwatches = defineComponent({\n name: 'VColorPickerSwatches',\n props: makeVColorPickerSwatchesProps(),\n emits: {\n 'update:color': color => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-color-picker-swatches', props.class],\n \"style\": [{\n maxHeight: convertToUnit(props.maxHeight)\n }, props.style]\n }, [_createVNode(\"div\", null, [props.swatches.map(swatch => _createVNode(\"div\", {\n \"class\": \"v-color-picker-swatches__swatch\"\n }, [swatch.map(color => {\n const rgba = parseColor(color);\n const hsva = RGBtoHSV(rgba);\n const background = RGBtoCSS(rgba);\n return _createVNode(\"div\", {\n \"class\": \"v-color-picker-swatches__color\",\n \"onClick\": () => hsva && emit('update:color', hsva)\n }, [_createVNode(\"div\", {\n \"style\": {\n background\n }\n }, [props.color && deepEqual(props.color, hsva) ? _createVNode(VIcon, {\n \"size\": \"x-small\",\n \"icon\": \"$success\",\n \"color\": getContrast(color, '#FFFFFF') > 2 ? 'white' : 'black'\n }, null) : undefined])]);\n })]))])]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerSwatches.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPicker.css\";\n\n// Components\nimport { VColorPickerCanvas } from \"./VColorPickerCanvas.mjs\";\nimport { VColorPickerEdit } from \"./VColorPickerEdit.mjs\";\nimport { VColorPickerPreview } from \"./VColorPickerPreview.mjs\";\nimport { VColorPickerSwatches } from \"./VColorPickerSwatches.mjs\";\nimport { makeVSheetProps, VSheet } from \"../VSheet/VSheet.mjs\"; // Composables\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { extractColor, modes, nullColor } from \"./util/index.mjs\";\nimport { consoleWarn, defineComponent, HSVtoCSS, omit, parseColor, propsFactory, RGBtoHSV, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVColorPickerProps = propsFactory({\n canvasHeight: {\n type: [String, Number],\n default: 150\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10\n },\n hideCanvas: Boolean,\n hideSliders: Boolean,\n hideInputs: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: v => Object.keys(modes).includes(v)\n },\n modes: {\n type: Array,\n default: () => Object.keys(modes),\n validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))\n },\n showSwatches: Boolean,\n swatches: Array,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150\n },\n modelValue: {\n type: [Object, String]\n },\n ...omit(makeVSheetProps({\n width: 300\n }), ['height', 'location', 'minHeight', 'maxHeight', 'minWidth', 'maxWidth'])\n}, 'VColorPicker');\nexport const VColorPicker = defineComponent({\n name: 'VColorPicker',\n props: makeVColorPickerProps(),\n emits: {\n 'update:modelValue': color => true,\n 'update:mode': mode => true\n },\n setup(props) {\n const mode = useProxiedModel(props, 'mode');\n const hue = ref(null);\n const model = useProxiedModel(props, 'modelValue', undefined, v => {\n if (v == null || v === '') return null;\n let c;\n try {\n c = RGBtoHSV(parseColor(v));\n } catch (err) {\n consoleWarn(err);\n return null;\n }\n return c;\n }, v => {\n if (!v) return null;\n return extractColor(v, props.modelValue);\n });\n const currentColor = computed(() => {\n return model.value ? {\n ...model.value,\n h: hue.value ?? model.value.h\n } : null;\n });\n const {\n rtlClasses\n } = useRtl();\n let externalChange = true;\n watch(model, v => {\n if (!externalChange) {\n // prevent hue shift from rgb conversion inaccuracy\n externalChange = true;\n return;\n }\n if (!v) return;\n hue.value = v.h;\n }, {\n immediate: true\n });\n const updateColor = hsva => {\n externalChange = false;\n hue.value = hsva.h;\n model.value = hsva;\n };\n onMounted(() => {\n if (!props.modes.includes(mode.value)) mode.value = props.modes[0];\n });\n provideDefaults({\n VSlider: {\n color: undefined,\n trackColor: undefined,\n trackFillColor: undefined\n }\n });\n useRender(() => {\n const sheetProps = VSheet.filterProps(props);\n return _createVNode(VSheet, _mergeProps({\n \"rounded\": props.rounded,\n \"elevation\": props.elevation,\n \"theme\": props.theme,\n \"class\": ['v-color-picker', rtlClasses.value, props.class],\n \"style\": [{\n '--v-color-picker-color-hsv': HSVtoCSS({\n ...(currentColor.value ?? nullColor),\n a: 1\n })\n }, props.style]\n }, sheetProps, {\n \"maxWidth\": props.width\n }), {\n default: () => [!props.hideCanvas && _createVNode(VColorPickerCanvas, {\n \"key\": \"canvas\",\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"disabled\": props.disabled,\n \"dotSize\": props.dotSize,\n \"width\": props.width,\n \"height\": props.canvasHeight\n }, null), (!props.hideSliders || !props.hideInputs) && _createVNode(\"div\", {\n \"key\": \"controls\",\n \"class\": \"v-color-picker__controls\"\n }, [!props.hideSliders && _createVNode(VColorPickerPreview, {\n \"key\": \"preview\",\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"hideAlpha\": !mode.value.endsWith('a'),\n \"disabled\": props.disabled\n }, null), !props.hideInputs && _createVNode(VColorPickerEdit, {\n \"key\": \"edit\",\n \"modes\": props.modes,\n \"mode\": mode.value,\n \"onUpdate:mode\": m => mode.value = m,\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"disabled\": props.disabled\n }, null)]), props.showSwatches && _createVNode(VColorPickerSwatches, {\n \"key\": \"swatches\",\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"maxHeight\": props.swatchesMaxHeight,\n \"swatches\": props.swatches,\n \"disabled\": props.disabled\n }, null)]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VColorPicker.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VCombobox.css\";\n\n// Components\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VList, VListItem } from \"../VList/index.mjs\";\nimport { VMenu } from \"../VMenu/index.mjs\";\nimport { makeSelectProps } from \"../VSelect/VSelect.mjs\";\nimport { VTextField } from \"../VTextField/index.mjs\";\nimport { makeVTextFieldProps } from \"../VTextField/VTextField.mjs\";\nimport { VVirtualScroll } from \"../VVirtualScroll/index.mjs\"; // Composables\nimport { useScrolling } from \"../VSelect/useScrolling.mjs\";\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { useForm } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { transformItem, useItems } from \"../../composables/list-items.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTransitionProps } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';\nimport { checkPrintable, ensureValidVNode, genericComponent, IN_BROWSER, isComposingIgnoreKey, noop, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nfunction highlightResult(text, matches, length) {\n if (matches == null) return text;\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented');\n return typeof matches === 'number' && ~matches ? _createVNode(_Fragment, null, [_createVNode(\"span\", {\n \"class\": \"v-combobox__unmask\"\n }, [text.substr(0, matches)]), _createVNode(\"span\", {\n \"class\": \"v-combobox__mask\"\n }, [text.substr(matches, length)]), _createVNode(\"span\", {\n \"class\": \"v-combobox__unmask\"\n }, [text.substr(matches + length)])]) : text;\n}\nexport const makeVComboboxProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String]\n },\n clearOnSelect: {\n type: Boolean,\n default: true\n },\n delimiters: Array,\n ...makeFilterProps({\n filterKeys: ['title']\n }),\n ...makeSelectProps({\n hideNoData: true,\n returnObject: true\n }),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox'\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({\n transition: false\n })\n}, 'VCombobox');\nexport const VCombobox = genericComponent()({\n name: 'VCombobox',\n props: makeVComboboxProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:search': value => true,\n 'update:menu': value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const vTextFieldRef = ref();\n const isFocused = shallowRef(false);\n const isPristine = shallowRef(true);\n const listHasFocus = shallowRef(false);\n const vMenuRef = ref();\n const vVirtualScrollRef = ref();\n const _menu = useProxiedModel(props, 'menu');\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;\n _menu.value = v;\n }\n });\n const selectionIndex = shallowRef(-1);\n let cleared = false;\n const color = computed(() => vTextFieldRef.value?.color);\n const label = computed(() => menu.value ? props.closeText : props.openText);\n const {\n items,\n transformIn,\n transformOut\n } = useItems(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(color);\n const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {\n const transformed = transformOut(v);\n return props.multiple ? transformed : transformed[0] ?? null;\n });\n const form = useForm();\n const hasChips = computed(() => !!(props.chips || slots.chip));\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);\n const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');\n const search = computed({\n get: () => {\n return _search.value;\n },\n set: val => {\n _search.value = val ?? '';\n if (!props.multiple && !hasSelectionSlot.value) {\n model.value = [transformItem(props, val)];\n }\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim();\n if (v) select(transformItem(props, v));\n });\n _search.value = '';\n }\n }\n if (!val) selectionIndex.value = -1;\n isPristine.value = !val;\n }\n });\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;\n });\n watch(_search, value => {\n if (cleared) {\n // wait for clear to finish, VTextField sets _search to null\n // then search computed triggers and updates _search to ''\n nextTick(() => cleared = false);\n } else if (isFocused.value && !menu.value) {\n menu.value = true;\n }\n emit('update:search', value);\n });\n watch(model, value => {\n if (!props.multiple && !hasSelectionSlot.value) {\n _search.value = value[0]?.title ?? '';\n }\n });\n const {\n filteredItems,\n getMatches\n } = useFilter(props, items, () => isPristine.value ? '' : search.value);\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));\n }\n return filteredItems.value;\n });\n const selectedValues = computed(() => model.value.map(selection => selection.value));\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;\n return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;\n });\n const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);\n const listRef = ref();\n const listEvents = useScrolling(listRef, vTextFieldRef);\n function onClear(e) {\n cleared = true;\n if (props.openOnClear) {\n menu.value = true;\n }\n }\n function onMousedownControl() {\n if (menuDisabled.value) return;\n menu.value = true;\n }\n function onMousedownMenuIcon(e) {\n if (menuDisabled.value) return;\n if (isFocused.value) {\n e.preventDefault();\n e.stopPropagation();\n }\n menu.value = !menu.value;\n }\n function onListKeydown(e) {\n if (checkPrintable(e)) {\n vTextFieldRef.value?.focus();\n }\n }\n // eslint-disable-next-line complexity\n function onKeydown(e) {\n if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;\n const selectionStart = vTextFieldRef.value.selectionStart;\n const length = model.value.length;\n if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n }\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true;\n }\n if (['Escape'].includes(e.key)) {\n menu.value = false;\n }\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key) && !model.value.some(_ref2 => {\n let {\n value\n } = _ref2;\n return value === displayItems.value[0].value;\n })) {\n select(filteredItems.value[0]);\n }\n isPristine.value = true;\n }\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next');\n }\n if (e.key === 'Enter' && search.value) {\n select(transformItem(props, search.value));\n if (hasSelectionSlot.value) _search.value = '';\n }\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);\n if (~selectionIndex.value) {\n const originalSelectionIndex = selectionIndex.value;\n select(model.value[selectionIndex.value], false);\n selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1;\n }\n }\n if (!props.multiple) return;\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return;\n const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;\n if (model.value[prev]) {\n selectionIndex.value = prev;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length);\n }\n }\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return;\n const next = selectionIndex.value + 1;\n if (model.value[next]) {\n selectionIndex.value = next;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(0, 0);\n }\n }\n }\n function onAfterEnter() {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems();\n }\n }\n function onAfterLeave() {\n if (isFocused.value) {\n isPristine.value = true;\n vTextFieldRef.value?.focus();\n }\n }\n /** @param set - null means toggle */\n function select(item) {\n let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (!item || item.props.disabled) return;\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));\n const add = set == null ? !~index : set;\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value];\n value.splice(index, 1);\n model.value = value;\n } else if (add) {\n model.value = [...model.value, item];\n }\n if (props.clearOnSelect) {\n search.value = '';\n }\n } else {\n const add = set !== false;\n model.value = add ? [item] : [];\n _search.value = add && !hasSelectionSlot.value ? item.title : '';\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false;\n isPristine.value = true;\n });\n }\n }\n function onFocusin(e) {\n isFocused.value = true;\n setTimeout(() => {\n listHasFocus.value = true;\n });\n }\n function onFocusout(e) {\n listHasFocus.value = false;\n }\n function onUpdateModelValue(v) {\n if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];\n }\n watch(isFocused, (val, oldVal) => {\n if (val || val === oldVal) return;\n selectionIndex.value = -1;\n menu.value = false;\n if (search.value) {\n if (props.multiple) {\n select(transformItem(props, search.value));\n return;\n }\n if (!hasSelectionSlot.value) return;\n if (model.value.some(_ref3 => {\n let {\n title\n } = _ref3;\n return title === search.value;\n })) {\n _search.value = '';\n } else {\n select(transformItem(props, search.value));\n }\n }\n });\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n });\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return;\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true;\n }\n });\n useRender(() => {\n const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);\n const isDirty = model.value.length > 0;\n const textFieldProps = VTextField.filterProps(props);\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": search.value,\n \"onUpdate:modelValue\": [$event => search.value = $event, onUpdateModelValue],\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.externalValue,\n \"counterValue\": counterValue.value,\n \"dirty\": isDirty,\n \"class\": ['v-combobox', {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selection-slot': !!hasSelectionSlot.value,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true\n }, props.class],\n \"style\": props.style,\n \"readonly\": props.readonly,\n \"placeholder\": isDirty ? undefined : props.placeholder,\n \"onClick:clear\": onClear,\n \"onMousedown:control\": onMousedownControl,\n \"onKeydown\": onKeydown\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({\n \"ref\": vMenuRef,\n \"modelValue\": menu.value,\n \"onUpdate:modelValue\": $event => menu.value = $event,\n \"activator\": \"parent\",\n \"contentClass\": \"v-combobox__content\",\n \"disabled\": menuDisabled.value,\n \"eager\": props.eager,\n \"maxHeight\": 310,\n \"openOnClick\": false,\n \"closeOnContentClick\": false,\n \"transition\": props.transition,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, props.menuProps), {\n default: () => [hasList && _createVNode(VList, _mergeProps({\n \"ref\": listRef,\n \"selected\": selectedValues.value,\n \"selectStrategy\": props.multiple ? 'independent' : 'single-independent',\n \"onMousedown\": e => e.preventDefault(),\n \"onKeydown\": onListKeydown,\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"tabindex\": \"-1\",\n \"aria-live\": \"polite\",\n \"color\": props.itemColor ?? props.color\n }, listEvents, props.listProps), {\n default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {\n \"title\": t(props.noDataText)\n }, null)), _createVNode(VVirtualScroll, {\n \"ref\": vVirtualScrollRef,\n \"renderless\": true,\n \"items\": displayItems.value\n }, {\n default: _ref4 => {\n let {\n item,\n index,\n itemRef\n } = _ref4;\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n active: highlightFirst.value && index === 0 ? true : undefined,\n onClick: () => select(item, null)\n });\n return slots.item?.({\n item,\n index,\n props: itemProps\n }) ?? _createVNode(VListItem, _mergeProps(itemProps, {\n \"role\": \"option\"\n }), {\n prepend: _ref5 => {\n let {\n isSelected\n } = _ref5;\n return _createVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {\n \"key\": item.value,\n \"modelValue\": isSelected,\n \"ripple\": false,\n \"tabindex\": \"-1\"\n }, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {\n \"image\": item.props.prependAvatar\n }, null), item.props.prependIcon && _createVNode(VIcon, {\n \"icon\": item.props.prependIcon\n }, null)]);\n },\n title: () => {\n return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);\n }\n });\n }\n }), slots['append-item']?.()]\n })]\n }), model.value.map((item, index) => {\n function onChipClose(e) {\n e.stopPropagation();\n e.preventDefault();\n select(item, false);\n }\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n onChipClose(e);\n },\n onMousedown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined\n };\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;\n const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({\n item,\n index,\n props: slotProps\n }) : slots.selection({\n item,\n index\n })) : undefined;\n if (hasSlot && !slotContent) return undefined;\n return _createVNode(\"div\", {\n \"key\": item.value,\n \"class\": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],\n \"style\": index === selectionIndex.value ? textColorStyles.value : {}\n }, [hasChips.value ? !slots.chip ? _createVNode(VChip, _mergeProps({\n \"key\": \"chip\",\n \"closable\": props.closableChips,\n \"size\": \"small\",\n \"text\": item.title,\n \"disabled\": item.props.disabled\n }, slotProps), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"chip-defaults\",\n \"defaults\": {\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title\n }\n }\n }, {\n default: () => [slotContent]\n }) : slotContent ?? _createVNode(\"span\", {\n \"class\": \"v-combobox__selection-text\"\n }, [item.title, props.multiple && index < model.value.length - 1 && _createVNode(\"span\", {\n \"class\": \"v-combobox__selection-comma\"\n }, [_createTextVNode(\",\")])])]);\n })]),\n 'append-inner': function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(_Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? _createVNode(VIcon, {\n \"class\": \"v-combobox__menu-icon\",\n \"icon\": props.menuIcon,\n \"onMousedown\": onMousedownMenuIcon,\n \"onClick\": noop,\n \"aria-label\": t(label.value),\n \"title\": t(label.value),\n \"tabindex\": \"-1\"\n }, null) : undefined]);\n }\n });\n });\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select\n }, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VCombobox.mjs.map","// Utilities\nimport { createRange, padStart } from \"../../../util/index.mjs\"; // Types\nconst firstDay = {\n '001': 1,\n AD: 1,\n AE: 6,\n AF: 6,\n AG: 0,\n AI: 1,\n AL: 1,\n AM: 1,\n AN: 1,\n AR: 1,\n AS: 0,\n AT: 1,\n AU: 1,\n AX: 1,\n AZ: 1,\n BA: 1,\n BD: 0,\n BE: 1,\n BG: 1,\n BH: 6,\n BM: 1,\n BN: 1,\n BR: 0,\n BS: 0,\n BT: 0,\n BW: 0,\n BY: 1,\n BZ: 0,\n CA: 0,\n CH: 1,\n CL: 1,\n CM: 1,\n CN: 1,\n CO: 0,\n CR: 1,\n CY: 1,\n CZ: 1,\n DE: 1,\n DJ: 6,\n DK: 1,\n DM: 0,\n DO: 0,\n DZ: 6,\n EC: 1,\n EE: 1,\n EG: 6,\n ES: 1,\n ET: 0,\n FI: 1,\n FJ: 1,\n FO: 1,\n FR: 1,\n GB: 1,\n 'GB-alt-variant': 0,\n GE: 1,\n GF: 1,\n GP: 1,\n GR: 1,\n GT: 0,\n GU: 0,\n HK: 0,\n HN: 0,\n HR: 1,\n HU: 1,\n ID: 0,\n IE: 1,\n IL: 0,\n IN: 0,\n IQ: 6,\n IR: 6,\n IS: 1,\n IT: 1,\n JM: 0,\n JO: 6,\n JP: 0,\n KE: 0,\n KG: 1,\n KH: 0,\n KR: 0,\n KW: 6,\n KZ: 1,\n LA: 0,\n LB: 1,\n LI: 1,\n LK: 1,\n LT: 1,\n LU: 1,\n LV: 1,\n LY: 6,\n MC: 1,\n MD: 1,\n ME: 1,\n MH: 0,\n MK: 1,\n MM: 0,\n MN: 1,\n MO: 0,\n MQ: 1,\n MT: 0,\n MV: 5,\n MX: 0,\n MY: 1,\n MZ: 0,\n NI: 0,\n NL: 1,\n NO: 1,\n NP: 0,\n NZ: 1,\n OM: 6,\n PA: 0,\n PE: 0,\n PH: 0,\n PK: 0,\n PL: 1,\n PR: 0,\n PT: 0,\n PY: 0,\n QA: 6,\n RE: 1,\n RO: 1,\n RS: 1,\n RU: 1,\n SA: 0,\n SD: 6,\n SE: 1,\n SG: 0,\n SI: 1,\n SK: 1,\n SM: 1,\n SV: 0,\n SY: 6,\n TH: 0,\n TJ: 1,\n TM: 1,\n TR: 1,\n TT: 0,\n TW: 0,\n UA: 1,\n UM: 0,\n US: 0,\n UY: 1,\n UZ: 1,\n VA: 1,\n VE: 0,\n VI: 0,\n VN: 1,\n WS: 0,\n XK: 1,\n YE: 0,\n ZA: 0,\n ZW: 0\n};\nfunction getWeekArray(date, locale, firstDayOfWeek) {\n const weeks = [];\n let currentWeek = [];\n const firstDayOfMonth = startOfMonth(date);\n const lastDayOfMonth = endOfMonth(date);\n const first = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;\n const firstDayWeekIndex = (firstDayOfMonth.getDay() - first + 7) % 7;\n const lastDayWeekIndex = (lastDayOfMonth.getDay() - first + 7) % 7;\n for (let i = 0; i < firstDayWeekIndex; i++) {\n const adjacentDay = new Date(firstDayOfMonth);\n adjacentDay.setDate(adjacentDay.getDate() - (firstDayWeekIndex - i));\n currentWeek.push(adjacentDay);\n }\n for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {\n const day = new Date(date.getFullYear(), date.getMonth(), i);\n\n // Add the day to the current week\n currentWeek.push(day);\n\n // If the current week has 7 days, add it to the weeks array and start a new week\n if (currentWeek.length === 7) {\n weeks.push(currentWeek);\n currentWeek = [];\n }\n }\n for (let i = 1; i < 7 - lastDayWeekIndex; i++) {\n const adjacentDay = new Date(lastDayOfMonth);\n adjacentDay.setDate(adjacentDay.getDate() + i);\n currentWeek.push(adjacentDay);\n }\n if (currentWeek.length > 0) {\n weeks.push(currentWeek);\n }\n return weeks;\n}\nfunction startOfWeek(date, locale, firstDayOfWeek) {\n const day = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;\n const d = new Date(date);\n while (d.getDay() !== day) {\n d.setDate(d.getDate() - 1);\n }\n return d;\n}\nfunction endOfWeek(date, locale) {\n const d = new Date(date);\n const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7;\n while (d.getDay() !== lastDay) {\n d.setDate(d.getDate() + 1);\n }\n return d;\n}\nfunction startOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\nfunction endOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\nfunction parseLocalDate(value) {\n const parts = value.split('-').map(Number);\n\n // new Date() uses local time zone when passing individual date component values\n return new Date(parts[0], parts[1] - 1, parts[2]);\n}\nconst _YYYMMDD = /^([12]\\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\\d|3[01]))$/;\nfunction date(value) {\n if (value == null) return new Date();\n if (value instanceof Date) return value;\n if (typeof value === 'string') {\n let parsed;\n if (_YYYMMDD.test(value)) {\n return parseLocalDate(value);\n } else {\n parsed = Date.parse(value);\n }\n if (!isNaN(parsed)) return new Date(parsed);\n }\n return null;\n}\nconst sundayJanuarySecond2000 = new Date(2000, 0, 2);\nfunction getWeekdays(locale, firstDayOfWeek) {\n const daysFromSunday = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;\n return createRange(7).map(i => {\n const weekday = new Date(sundayJanuarySecond2000);\n weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);\n return new Intl.DateTimeFormat(locale, {\n weekday: 'narrow'\n }).format(weekday);\n });\n}\nfunction format(value, formatString, locale, formats) {\n const newDate = date(value) ?? new Date();\n const customFormat = formats?.[formatString];\n if (typeof customFormat === 'function') {\n return customFormat(newDate, formatString, locale);\n }\n let options = {};\n switch (formatString) {\n case 'fullDate':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n break;\n case 'fullDateWithWeekday':\n options = {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n break;\n case 'normalDate':\n const day = newDate.getDate();\n const month = new Intl.DateTimeFormat(locale, {\n month: 'long'\n }).format(newDate);\n return `${day} ${month}`;\n case 'normalDateWithWeekday':\n options = {\n weekday: 'short',\n day: 'numeric',\n month: 'short'\n };\n break;\n case 'shortDate':\n options = {\n month: 'short',\n day: 'numeric'\n };\n break;\n case 'year':\n options = {\n year: 'numeric'\n };\n break;\n case 'month':\n options = {\n month: 'long'\n };\n break;\n case 'monthShort':\n options = {\n month: 'short'\n };\n break;\n case 'monthAndYear':\n options = {\n month: 'long',\n year: 'numeric'\n };\n break;\n case 'monthAndDate':\n options = {\n month: 'long',\n day: 'numeric'\n };\n break;\n case 'weekday':\n options = {\n weekday: 'long'\n };\n break;\n case 'weekdayShort':\n options = {\n weekday: 'short'\n };\n break;\n case 'dayOfMonth':\n return new Intl.NumberFormat(locale).format(newDate.getDate());\n case 'hours12h':\n options = {\n hour: 'numeric',\n hour12: true\n };\n break;\n case 'hours24h':\n options = {\n hour: 'numeric',\n hour12: false\n };\n break;\n case 'minutes':\n options = {\n minute: 'numeric'\n };\n break;\n case 'seconds':\n options = {\n second: 'numeric'\n };\n break;\n case 'fullTime':\n options = {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullTime12h':\n options = {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullTime24h':\n options = {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n case 'fullDateTime':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullDateTime12h':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullDateTime24h':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n case 'keyboardDate':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n };\n break;\n case 'keyboardDateTime':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n case 'keyboardDateTime12h':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'keyboardDateTime24h':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n default:\n options = customFormat ?? {\n timeZone: 'UTC',\n timeZoneName: 'short'\n };\n }\n return new Intl.DateTimeFormat(locale, options).format(newDate);\n}\nfunction toISO(adapter, value) {\n const date = adapter.toJsDate(value);\n const year = date.getFullYear();\n const month = padStart(String(date.getMonth() + 1), 2, '0');\n const day = padStart(String(date.getDate()), 2, '0');\n return `${year}-${month}-${day}`;\n}\nfunction parseISO(value) {\n const [year, month, day] = value.split('-').map(Number);\n return new Date(year, month - 1, day);\n}\nfunction addMinutes(date, amount) {\n const d = new Date(date);\n d.setMinutes(d.getMinutes() + amount);\n return d;\n}\nfunction addHours(date, amount) {\n const d = new Date(date);\n d.setHours(d.getHours() + amount);\n return d;\n}\nfunction addDays(date, amount) {\n const d = new Date(date);\n d.setDate(d.getDate() + amount);\n return d;\n}\nfunction addWeeks(date, amount) {\n const d = new Date(date);\n d.setDate(d.getDate() + amount * 7);\n return d;\n}\nfunction addMonths(date, amount) {\n const d = new Date(date);\n d.setDate(1);\n d.setMonth(d.getMonth() + amount);\n return d;\n}\nfunction getYear(date) {\n return date.getFullYear();\n}\nfunction getMonth(date) {\n return date.getMonth();\n}\nfunction getDate(date) {\n return date.getDate();\n}\nfunction getNextMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 1);\n}\nfunction getPreviousMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() - 1, 1);\n}\nfunction getHours(date) {\n return date.getHours();\n}\nfunction getMinutes(date) {\n return date.getMinutes();\n}\nfunction startOfYear(date) {\n return new Date(date.getFullYear(), 0, 1);\n}\nfunction endOfYear(date) {\n return new Date(date.getFullYear(), 11, 31);\n}\nfunction isWithinRange(date, range) {\n return isAfter(date, range[0]) && isBefore(date, range[1]);\n}\nfunction isValid(date) {\n const d = new Date(date);\n return d instanceof Date && !isNaN(d.getTime());\n}\nfunction isAfter(date, comparing) {\n return date.getTime() > comparing.getTime();\n}\nfunction isAfterDay(date, comparing) {\n return isAfter(startOfDay(date), startOfDay(comparing));\n}\nfunction isBefore(date, comparing) {\n return date.getTime() < comparing.getTime();\n}\nfunction isEqual(date, comparing) {\n return date.getTime() === comparing.getTime();\n}\nfunction isSameDay(date, comparing) {\n return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();\n}\nfunction isSameMonth(date, comparing) {\n return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();\n}\nfunction isSameYear(date, comparing) {\n return date.getFullYear() === comparing.getFullYear();\n}\nfunction getDiff(date, comparing, unit) {\n const d = new Date(date);\n const c = new Date(comparing);\n switch (unit) {\n case 'years':\n return d.getFullYear() - c.getFullYear();\n case 'quarters':\n return Math.floor((d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12) / 4);\n case 'months':\n return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;\n case 'weeks':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24 * 7));\n case 'days':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));\n case 'hours':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60));\n case 'minutes':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60));\n case 'seconds':\n return Math.floor((d.getTime() - c.getTime()) / 1000);\n default:\n {\n return d.getTime() - c.getTime();\n }\n }\n}\nfunction setHours(date, count) {\n const d = new Date(date);\n d.setHours(count);\n return d;\n}\nfunction setMinutes(date, count) {\n const d = new Date(date);\n d.setMinutes(count);\n return d;\n}\nfunction setMonth(date, count) {\n const d = new Date(date);\n d.setMonth(count);\n return d;\n}\nfunction setDate(date, day) {\n const d = new Date(date);\n d.setDate(day);\n return d;\n}\nfunction setYear(date, year) {\n const d = new Date(date);\n d.setFullYear(year);\n return d;\n}\nfunction startOfDay(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);\n}\nfunction endOfDay(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);\n}\nexport class VuetifyDateAdapter {\n constructor(options) {\n this.locale = options.locale;\n this.formats = options.formats;\n }\n date(value) {\n return date(value);\n }\n toJsDate(date) {\n return date;\n }\n toISO(date) {\n return toISO(this, date);\n }\n parseISO(date) {\n return parseISO(date);\n }\n addMinutes(date, amount) {\n return addMinutes(date, amount);\n }\n addHours(date, amount) {\n return addHours(date, amount);\n }\n addDays(date, amount) {\n return addDays(date, amount);\n }\n addWeeks(date, amount) {\n return addWeeks(date, amount);\n }\n addMonths(date, amount) {\n return addMonths(date, amount);\n }\n getWeekArray(date, firstDayOfWeek) {\n return getWeekArray(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);\n }\n startOfWeek(date, firstDayOfWeek) {\n return startOfWeek(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);\n }\n endOfWeek(date) {\n return endOfWeek(date, this.locale);\n }\n startOfMonth(date) {\n return startOfMonth(date);\n }\n endOfMonth(date) {\n return endOfMonth(date);\n }\n format(date, formatString) {\n return format(date, formatString, this.locale, this.formats);\n }\n isEqual(date, comparing) {\n return isEqual(date, comparing);\n }\n isValid(date) {\n return isValid(date);\n }\n isWithinRange(date, range) {\n return isWithinRange(date, range);\n }\n isAfter(date, comparing) {\n return isAfter(date, comparing);\n }\n isAfterDay(date, comparing) {\n return isAfterDay(date, comparing);\n }\n isBefore(date, comparing) {\n return !isAfter(date, comparing) && !isEqual(date, comparing);\n }\n isSameDay(date, comparing) {\n return isSameDay(date, comparing);\n }\n isSameMonth(date, comparing) {\n return isSameMonth(date, comparing);\n }\n isSameYear(date, comparing) {\n return isSameYear(date, comparing);\n }\n setMinutes(date, count) {\n return setMinutes(date, count);\n }\n setHours(date, count) {\n return setHours(date, count);\n }\n setMonth(date, count) {\n return setMonth(date, count);\n }\n setDate(date, day) {\n return setDate(date, day);\n }\n setYear(date, year) {\n return setYear(date, year);\n }\n getDiff(date, comparing, unit) {\n return getDiff(date, comparing, unit);\n }\n getWeekdays(firstDayOfWeek) {\n return getWeekdays(this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);\n }\n getYear(date) {\n return getYear(date);\n }\n getMonth(date) {\n return getMonth(date);\n }\n getDate(date) {\n return getDate(date);\n }\n getNextMonth(date) {\n return getNextMonth(date);\n }\n getPreviousMonth(date) {\n return getPreviousMonth(date);\n }\n getHours(date) {\n return getHours(date);\n }\n getMinutes(date) {\n return getMinutes(date);\n }\n startOfDay(date) {\n return startOfDay(date);\n }\n endOfDay(date) {\n return endOfDay(date);\n }\n startOfYear(date) {\n return startOfYear(date);\n }\n endOfYear(date) {\n return endOfYear(date);\n }\n}\n//# sourceMappingURL=vuetify.mjs.map","// Composables\nimport { useLocale } from \"../locale.mjs\"; // Utilities\nimport { inject, reactive, watch } from 'vue';\nimport { mergeDeep } from \"../../util/index.mjs\"; // Types\n// Adapters\nimport { VuetifyDateAdapter } from \"./adapters/vuetify.mjs\";\n/** Supports module augmentation to specify date adapter types */\nexport let DateModule;\nexport const DateOptionsSymbol = Symbol.for('vuetify:date-options');\nexport const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');\nexport function createDate(options, locale) {\n const _options = mergeDeep({\n adapter: VuetifyDateAdapter,\n locale: {\n af: 'af-ZA',\n // ar: '', # not the same value for all variants\n bg: 'bg-BG',\n ca: 'ca-ES',\n ckb: '',\n cs: 'cs-CZ',\n de: 'de-DE',\n el: 'el-GR',\n en: 'en-US',\n // es: '', # not the same value for all variants\n et: 'et-EE',\n fa: 'fa-IR',\n fi: 'fi-FI',\n // fr: '', #not the same value for all variants\n hr: 'hr-HR',\n hu: 'hu-HU',\n he: 'he-IL',\n id: 'id-ID',\n it: 'it-IT',\n ja: 'ja-JP',\n ko: 'ko-KR',\n lv: 'lv-LV',\n lt: 'lt-LT',\n nl: 'nl-NL',\n no: 'no-NO',\n pl: 'pl-PL',\n pt: 'pt-PT',\n ro: 'ro-RO',\n ru: 'ru-RU',\n sk: 'sk-SK',\n sl: 'sl-SI',\n srCyrl: 'sr-SP',\n srLatn: 'sr-SP',\n sv: 'sv-SE',\n th: 'th-TH',\n tr: 'tr-TR',\n az: 'az-AZ',\n uk: 'uk-UA',\n vi: 'vi-VN',\n zhHans: 'zh-CN',\n zhHant: 'zh-TW'\n }\n }, options);\n return {\n options: _options,\n instance: createInstance(_options, locale)\n };\n}\nfunction createInstance(options, locale) {\n const instance = reactive(typeof options.adapter === 'function'\n // eslint-disable-next-line new-cap\n ? new options.adapter({\n locale: options.locale[locale.current.value] ?? locale.current.value,\n formats: options.formats\n }) : options.adapter);\n watch(locale.current, value => {\n instance.locale = options.locale[value] ?? value ?? instance.locale;\n });\n return instance;\n}\nexport function useDate() {\n const options = inject(DateOptionsSymbol);\n if (!options) throw new Error('[Vuetify] Could not find injected date options');\n const locale = useLocale();\n return createInstance(options, locale);\n}\n\n// https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024\nexport function getWeek(adapter, value) {\n const date = adapter.toJsDate(value);\n let year = date.getFullYear();\n let d1w1 = new Date(year, 0, 1);\n if (date < d1w1) {\n year = year - 1;\n d1w1 = new Date(year, 0, 1);\n } else {\n const tv = new Date(year + 1, 0, 1);\n if (date >= tv) {\n year = year + 1;\n d1w1 = tv;\n }\n }\n const diffTime = Math.abs(date.getTime() - d1w1.getTime());\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n return Math.floor(diffDays / 7) + 1;\n}\n//# sourceMappingURL=date.mjs.map","import { createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useLocale } from \"../../composables/index.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref, toRaw, watchEffect } from 'vue';\nimport { deepEqual, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVConfirmEditProps = propsFactory({\n modelValue: null,\n color: String,\n cancelText: {\n type: String,\n default: '$vuetify.confirmEdit.cancel'\n },\n okText: {\n type: String,\n default: '$vuetify.confirmEdit.ok'\n }\n}, 'VConfirmEdit');\nexport const VConfirmEdit = genericComponent()({\n name: 'VConfirmEdit',\n props: makeVConfirmEditProps(),\n emits: {\n cancel: () => true,\n save: value => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const internalModel = ref();\n watchEffect(() => {\n internalModel.value = structuredClone(toRaw(model.value));\n });\n const {\n t\n } = useLocale();\n const isPristine = computed(() => {\n return deepEqual(model.value, internalModel.value);\n });\n function save() {\n model.value = internalModel.value;\n emit('save', internalModel.value);\n }\n function cancel() {\n internalModel.value = structuredClone(toRaw(model.value));\n emit('cancel');\n }\n let actionsUsed = false;\n useRender(() => {\n const actions = _createVNode(_Fragment, null, [_createVNode(VBtn, {\n \"disabled\": isPristine.value,\n \"variant\": \"text\",\n \"color\": props.color,\n \"onClick\": cancel,\n \"text\": t(props.cancelText)\n }, null), _createVNode(VBtn, {\n \"disabled\": isPristine.value,\n \"variant\": \"text\",\n \"color\": props.color,\n \"onClick\": save,\n \"text\": t(props.okText)\n }, null)]);\n return _createVNode(_Fragment, null, [slots.default?.({\n model: internalModel,\n save,\n cancel,\n isPristine: isPristine.value,\n get actions() {\n actionsUsed = true;\n return actions;\n }\n }), !actionsUsed && actions]);\n });\n return {\n save,\n cancel,\n isPristine\n };\n }\n});\n//# sourceMappingURL=VConfirmEdit.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { inject, provide, toRef } from 'vue';\nimport { propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableExpandProps = propsFactory({\n expandOnClick: Boolean,\n showExpand: Boolean,\n expanded: {\n type: Array,\n default: () => []\n }\n}, 'DataTable-expand');\nexport const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');\nexport function provideExpanded(props) {\n const expandOnClick = toRef(props, 'expandOnClick');\n const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {\n return new Set(v);\n }, v => {\n return [...v.values()];\n });\n function expand(item, value) {\n const newExpanded = new Set(expanded.value);\n if (!value) {\n newExpanded.delete(item.value);\n } else {\n newExpanded.add(item.value);\n }\n expanded.value = newExpanded;\n }\n function isExpanded(item) {\n return expanded.value.has(item.value);\n }\n function toggleExpand(item) {\n expand(item, !isExpanded(item));\n }\n const data = {\n expand,\n expanded,\n expandOnClick,\n isExpanded,\n toggleExpand\n };\n provide(VDataTableExpandedKey, data);\n return data;\n}\nexport function useExpanded() {\n const data = inject(VDataTableExpandedKey);\n if (!data) throw new Error('foo');\n return data;\n}\n//# sourceMappingURL=expand.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide, ref } from 'vue';\nimport { getObjectValueByPath, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array,\n default: () => []\n }\n}, 'DataTable-group');\nconst VDataTableGroupSymbol = Symbol.for('vuetify:data-table-group');\nexport function createGroupBy(props) {\n const groupBy = useProxiedModel(props, 'groupBy');\n return {\n groupBy\n };\n}\nexport function provideGroupBy(options) {\n const {\n disableSort,\n groupBy,\n sortBy\n } = options;\n const opened = ref(new Set());\n const sortByWithGroups = computed(() => {\n return groupBy.value.map(val => ({\n ...val,\n order: val.order ?? false\n })).concat(disableSort?.value ? [] : sortBy.value);\n });\n function isGroupOpen(group) {\n return opened.value.has(group.id);\n }\n function toggleGroup(group) {\n const newOpened = new Set(opened.value);\n if (!isGroupOpen(group)) newOpened.add(group.id);else newOpened.delete(group.id);\n opened.value = newOpened;\n }\n function extractRows(items) {\n function dive(group) {\n const arr = [];\n for (const item of group.items) {\n if ('type' in item && item.type === 'group') {\n arr.push(...dive(item));\n } else {\n arr.push(item);\n }\n }\n return arr;\n }\n return dive({\n type: 'group',\n items,\n id: 'dummy',\n key: 'dummy',\n value: 'dummy',\n depth: 0\n });\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = {\n sortByWithGroups,\n toggleGroup,\n opened,\n groupBy,\n extractRows,\n isGroupOpen\n };\n provide(VDataTableGroupSymbol, data);\n return data;\n}\nexport function useGroupBy() {\n const data = inject(VDataTableGroupSymbol);\n if (!data) throw new Error('Missing group!');\n return data;\n}\nfunction groupItemsByProperty(items, groupBy) {\n if (!items.length) return [];\n const groups = new Map();\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy);\n if (!groups.has(value)) {\n groups.set(value, []);\n }\n groups.get(value).push(item);\n }\n return groups;\n}\nfunction groupItems(items, groupBy) {\n let depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let prefix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'root';\n if (!groupBy.length) return [];\n const groupedItems = groupItemsByProperty(items, groupBy[0]);\n const groups = [];\n const rest = groupBy.slice(1);\n groupedItems.forEach((items, value) => {\n const key = groupBy[0];\n const id = `${prefix}_${key}_${value}`;\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group'\n });\n });\n return groups;\n}\nfunction flattenItems(items, opened) {\n const flatItems = [];\n for (const item of items) {\n // TODO: make this better\n if ('type' in item && item.type === 'group') {\n if (item.value != null) {\n flatItems.push(item);\n }\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened));\n }\n } else {\n flatItems.push(item);\n }\n }\n return flatItems;\n}\nexport function useGroupedItems(items, groupBy, opened) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value;\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key));\n return flattenItems(groupedItems, opened.value);\n });\n return {\n flatItems\n };\n}\n//# sourceMappingURL=group.mjs.map","// Utilities\nimport { computed, watch } from 'vue';\nimport { deepEqual, getCurrentInstance } from \"../../../util/index.mjs\"; // Types\nexport function useOptions(_ref) {\n let {\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search\n } = _ref;\n const vm = getCurrentInstance('VDataTable');\n const options = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n groupBy: groupBy.value,\n search: search.value\n }));\n let oldOptions = null;\n watch(options, () => {\n if (deepEqual(oldOptions, options.value)) return;\n\n // Reset page when searching\n if (oldOptions && oldOptions.search !== options.value.search) {\n page.value = 1;\n }\n vm.emit('update:options', options.value);\n oldOptions = options.value;\n }, {\n deep: true,\n immediate: true\n });\n}\n//# sourceMappingURL=options.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide, watch, watchEffect } from 'vue';\nimport { clamp, getCurrentInstance, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTablePaginateProps = propsFactory({\n page: {\n type: [Number, String],\n default: 1\n },\n itemsPerPage: {\n type: [Number, String],\n default: 10\n }\n}, 'DataTable-paginate');\nconst VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');\nexport function createPagination(props) {\n const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));\n const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10));\n return {\n page,\n itemsPerPage\n };\n}\nexport function providePagination(options) {\n const {\n page,\n itemsPerPage,\n itemsLength\n } = options;\n const startIndex = computed(() => {\n if (itemsPerPage.value === -1) return 0;\n return itemsPerPage.value * (page.value - 1);\n });\n const stopIndex = computed(() => {\n if (itemsPerPage.value === -1) return itemsLength.value;\n return Math.min(itemsLength.value, startIndex.value + itemsPerPage.value);\n });\n const pageCount = computed(() => {\n if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;\n return Math.ceil(itemsLength.value / itemsPerPage.value);\n });\n watchEffect(() => {\n if (page.value > pageCount.value) {\n page.value = pageCount.value;\n }\n });\n function setItemsPerPage(value) {\n itemsPerPage.value = value;\n page.value = 1;\n }\n function nextPage() {\n page.value = clamp(page.value + 1, 1, pageCount.value);\n }\n function prevPage() {\n page.value = clamp(page.value - 1, 1, pageCount.value);\n }\n function setPage(value) {\n page.value = clamp(value, 1, pageCount.value);\n }\n const data = {\n page,\n itemsPerPage,\n startIndex,\n stopIndex,\n pageCount,\n itemsLength,\n nextPage,\n prevPage,\n setPage,\n setItemsPerPage\n };\n provide(VDataTablePaginationSymbol, data);\n return data;\n}\nexport function usePagination() {\n const data = inject(VDataTablePaginationSymbol);\n if (!data) throw new Error('Missing pagination!');\n return data;\n}\nexport function usePaginatedItems(options) {\n const vm = getCurrentInstance('usePaginatedItems');\n const {\n items,\n startIndex,\n stopIndex,\n itemsPerPage\n } = options;\n const paginatedItems = computed(() => {\n if (itemsPerPage.value <= 0) return items.value;\n return items.value.slice(startIndex.value, stopIndex.value);\n });\n watch(paginatedItems, val => {\n vm.emit('update:currentItems', val);\n });\n return {\n paginatedItems\n };\n}\n//# sourceMappingURL=paginate.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide } from 'vue';\nimport { deepEqual, propsFactory, wrapInArray } from \"../../../util/index.mjs\"; // Types\nconst singleSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: _ref => {\n let {\n items,\n value\n } = _ref;\n return new Set(value ? [items[0]?.value] : []);\n },\n selectAll: _ref2 => {\n let {\n selected\n } = _ref2;\n return selected;\n }\n};\nconst pageSelectStrategy = {\n showSelectAll: true,\n allSelected: _ref3 => {\n let {\n currentPage\n } = _ref3;\n return currentPage;\n },\n select: _ref4 => {\n let {\n items,\n value,\n selected\n } = _ref4;\n for (const item of items) {\n if (value) selected.add(item.value);else selected.delete(item.value);\n }\n return selected;\n },\n selectAll: _ref5 => {\n let {\n value,\n currentPage,\n selected\n } = _ref5;\n return pageSelectStrategy.select({\n items: currentPage,\n value,\n selected\n });\n }\n};\nconst allSelectStrategy = {\n showSelectAll: true,\n allSelected: _ref6 => {\n let {\n allItems\n } = _ref6;\n return allItems;\n },\n select: _ref7 => {\n let {\n items,\n value,\n selected\n } = _ref7;\n for (const item of items) {\n if (value) selected.add(item.value);else selected.delete(item.value);\n }\n return selected;\n },\n selectAll: _ref8 => {\n let {\n value,\n allItems,\n selected\n } = _ref8;\n return allSelectStrategy.select({\n items: allItems,\n value,\n selected\n });\n }\n};\nexport const makeDataTableSelectProps = propsFactory({\n showSelect: Boolean,\n selectStrategy: {\n type: [String, Object],\n default: 'page'\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n valueComparator: {\n type: Function,\n default: deepEqual\n }\n}, 'DataTable-select');\nexport const VDataTableSelectionSymbol = Symbol.for('vuetify:data-table-selection');\nexport function provideSelection(props, _ref9) {\n let {\n allItems,\n currentPage\n } = _ref9;\n const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {\n return new Set(wrapInArray(v).map(v => {\n return allItems.value.find(item => props.valueComparator(v, item.value))?.value ?? v;\n }));\n }, v => {\n return [...v.values()];\n });\n const allSelectable = computed(() => allItems.value.filter(item => item.selectable));\n const currentPageSelectable = computed(() => currentPage.value.filter(item => item.selectable));\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy;\n switch (props.selectStrategy) {\n case 'single':\n return singleSelectStrategy;\n case 'all':\n return allSelectStrategy;\n case 'page':\n default:\n return pageSelectStrategy;\n }\n });\n function isSelected(items) {\n return wrapInArray(items).every(item => selected.value.has(item.value));\n }\n function isSomeSelected(items) {\n return wrapInArray(items).some(item => selected.value.has(item.value));\n }\n function select(items, value) {\n const newSelected = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value)\n });\n selected.value = newSelected;\n }\n function toggleSelect(item) {\n select([item], !isSelected([item]));\n }\n function selectAll(value) {\n const newSelected = selectStrategy.value.selectAll({\n value,\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n selected: new Set(selected.value)\n });\n selected.value = newSelected;\n }\n const someSelected = computed(() => selected.value.size > 0);\n const allSelected = computed(() => {\n const items = selectStrategy.value.allSelected({\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value\n });\n return !!items.length && isSelected(items);\n });\n const showSelectAll = computed(() => selectStrategy.value.showSelectAll);\n const data = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll\n };\n provide(VDataTableSelectionSymbol, data);\n return data;\n}\nexport function useSelection() {\n const data = inject(VDataTableSelectionSymbol);\n if (!data) throw new Error('Missing selection!');\n return data;\n}\n//# sourceMappingURL=select.mjs.map","// Composables\nimport { useLocale } from \"../../../composables/index.mjs\";\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide, toRef } from 'vue';\nimport { getObjectValueByPath, isEmpty, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array,\n default: () => []\n },\n customKeySort: Object,\n multiSort: Boolean,\n mustSort: Boolean\n}, 'DataTable-sort');\nconst VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');\nexport function createSort(props) {\n const sortBy = useProxiedModel(props, 'sortBy');\n const mustSort = toRef(props, 'mustSort');\n const multiSort = toRef(props, 'multiSort');\n return {\n sortBy,\n mustSort,\n multiSort\n };\n}\nexport function provideSort(options) {\n const {\n sortBy,\n mustSort,\n multiSort,\n page\n } = options;\n const toggleSort = column => {\n if (column.key == null) return;\n let newSortBy = sortBy.value.map(x => ({\n ...x\n })) ?? [];\n const item = newSortBy.find(x => x.key === column.key);\n if (!item) {\n if (multiSort.value) newSortBy = [...newSortBy, {\n key: column.key,\n order: 'asc'\n }];else newSortBy = [{\n key: column.key,\n order: 'asc'\n }];\n } else if (item.order === 'desc') {\n if (mustSort.value) {\n item.order = 'asc';\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key);\n }\n } else {\n item.order = 'desc';\n }\n sortBy.value = newSortBy;\n if (page) page.value = 1;\n };\n function isSorted(column) {\n return !!sortBy.value.find(item => item.key === column.key);\n }\n const data = {\n sortBy,\n toggleSort,\n isSorted\n };\n provide(VDataTableSortSymbol, data);\n return data;\n}\nexport function useSort() {\n const data = inject(VDataTableSortSymbol);\n if (!data) throw new Error('Missing sort!');\n return data;\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems(props, items, sortBy, options) {\n const locale = useLocale();\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value;\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value\n },\n sortRawFunctions: options?.sortRawFunctions?.value\n });\n });\n return {\n sortedItems\n };\n}\nexport function sortItems(items, sortByItems, locale, options) {\n const stringCollator = new Intl.Collator(locale, {\n sensitivity: 'accent',\n usage: 'sort'\n });\n const transformedItems = items.map(item => [item, options?.transform ? options.transform(item) : item]);\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false;\n const sortKey = sortByItems[i].key;\n const sortOrder = sortByItems[i].order ?? 'asc';\n if (sortOrder === false) continue;\n let sortA = getObjectValueByPath(a[1], sortKey);\n let sortB = getObjectValueByPath(b[1], sortKey);\n let sortARaw = a[0].raw;\n let sortBRaw = b[0].raw;\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA];\n [sortARaw, sortBRaw] = [sortBRaw, sortARaw];\n }\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw);\n if (customResult == null) continue;\n hasCustomResult = true;\n if (customResult) return customResult;\n }\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB);\n if (customResult == null) continue;\n hasCustomResult = true;\n if (customResult) return customResult;\n }\n if (hasCustomResult) continue;\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime();\n }\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s);\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0;\n if (isEmpty(sortA)) return -1;\n if (isEmpty(sortB)) return 1;\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB);\n return stringCollator.compare(sortA, sortB);\n }\n }\n return 0;\n }).map(_ref => {\n let [item] = _ref;\n return item;\n });\n}\n//# sourceMappingURL=sort.mjs.map","// Utilities\nimport { computed } from 'vue';\nimport { getPropertyFromItem, propsFactory } from \"../../../util/index.mjs\"; // Types\n// Composables\nexport const makeDataIteratorItemsProps = propsFactory({\n items: {\n type: Array,\n default: () => []\n },\n itemValue: {\n type: [String, Array, Function],\n default: 'id'\n },\n itemSelectable: {\n type: [String, Array, Function],\n default: null\n },\n returnObject: Boolean\n}, 'DataIterator-items');\nexport function transformItem(props, item) {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue);\n const selectable = getPropertyFromItem(item, props.itemSelectable, true);\n return {\n type: 'item',\n value,\n selectable,\n raw: item\n };\n}\nexport function transformItems(props, items) {\n const array = [];\n for (const item of items) {\n array.push(transformItem(props, item));\n }\n return array;\n}\nexport function useDataIteratorItems(props) {\n const items = computed(() => transformItems(props, props.items));\n return {\n items\n };\n}\n//# sourceMappingURL=items.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VFadeTransition } from \"../transitions/index.mjs\";\nimport { makeDataTableExpandProps, provideExpanded } from \"../VDataTable/composables/expand.mjs\";\nimport { makeDataTableGroupProps, provideGroupBy, useGroupedItems } from \"../VDataTable/composables/group.mjs\";\nimport { useOptions } from \"../VDataTable/composables/options.mjs\";\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from \"../VDataTable/composables/paginate.mjs\";\nimport { makeDataTableSelectProps, provideSelection } from \"../VDataTable/composables/select.mjs\";\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from \"../VDataTable/composables/sort.mjs\"; // Composables\nimport { makeDataIteratorItemsProps, useDataIteratorItems } from \"./composables/items.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { LoaderSlot } from \"../../composables/loader.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataIteratorProps = propsFactory({\n search: String,\n loading: Boolean,\n ...makeComponentProps(),\n ...makeDataIteratorItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps({\n itemsPerPage: 5\n }),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeFilterProps(),\n ...makeTagProps(),\n ...makeTransitionProps({\n transition: {\n component: VFadeTransition,\n hideOnLeave: true\n }\n })\n}, 'VDataIterator');\nexport const VDataIterator = genericComponent()({\n name: 'VDataIterator',\n props: makeVDataIteratorProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:groupBy': value => true,\n 'update:page': value => true,\n 'update:itemsPerPage': value => true,\n 'update:sortBy': value => true,\n 'update:options': value => true,\n 'update:expanded': value => true,\n 'update:currentItems': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const groupBy = useProxiedModel(props, 'groupBy');\n const search = toRef(props, 'search');\n const {\n items\n } = useDataIteratorItems(props);\n const {\n filteredItems\n } = useFilter(props, items, search, {\n transform: item => item.raw\n });\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n page,\n itemsPerPage\n } = createPagination(props);\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort,\n page\n });\n const {\n sortByWithGroups,\n opened,\n extractRows,\n isGroupOpen,\n toggleGroup\n } = provideGroupBy({\n groupBy,\n sortBy\n });\n const {\n sortedItems\n } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => item.raw\n });\n const {\n flatItems\n } = useGroupedItems(sortedItems, groupBy, opened);\n const itemsLength = computed(() => flatItems.value.length);\n const {\n startIndex,\n stopIndex,\n pageCount,\n prevPage,\n nextPage,\n setItemsPerPage,\n setPage\n } = providePagination({\n page,\n itemsPerPage,\n itemsLength\n });\n const {\n paginatedItems\n } = usePaginatedItems({\n items: flatItems,\n startIndex,\n stopIndex,\n itemsPerPage\n });\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value));\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect\n } = provideSelection(props, {\n allItems: items,\n currentPage: paginatedItemsWithoutGroups\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search\n });\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n prevPage,\n nextPage,\n setPage,\n setItemsPerPage,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value,\n groupedItems: paginatedItems.value\n }));\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-data-iterator', {\n 'v-data-iterator--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.header?.(slotProps.value), _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [props.loading ? _createVNode(LoaderSlot, {\n \"key\": \"loader\",\n \"name\": \"v-data-iterator\",\n \"active\": true\n }, {\n default: slotProps => slots.loader?.(slotProps)\n }) : _createVNode(\"div\", {\n \"key\": \"items\"\n }, [!paginatedItems.value.length ? slots['no-data']?.() : slots.default?.(slotProps.value)])]\n }), slots.footer?.(slotProps.value)]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VDataIterator.mjs.map","// Utilities\nimport { onBeforeUpdate, ref } from 'vue';\n\n// Types\n\nexport function useRefs() {\n const refs = ref([]);\n onBeforeUpdate(() => refs.value = []);\n function updateRef(e, i) {\n refs.value[i] = e;\n }\n return {\n refs,\n updateRef\n };\n}\n//# sourceMappingURL=refs.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VPagination.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useDisplay } from \"../../composables/index.mjs\";\nimport { makeBorderProps } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { makeElevationProps } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale, useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useRefs } from \"../../composables/refs.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\";\nimport { makeRoundedProps } from \"../../composables/rounded.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeVariantProps } from \"../../composables/variant.mjs\"; // Utilities\nimport { computed, nextTick, shallowRef, toRef } from 'vue';\nimport { createRange, genericComponent, keyValues, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVPaginationProps = propsFactory({\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1\n },\n modelValue: {\n type: Number,\n default: props => props.start\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: val => val % 1 === 0\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first'\n },\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n lastIcon: {\n type: IconValue,\n default: '$last'\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root'\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page'\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage'\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first'\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous'\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next'\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last'\n },\n ellipsis: {\n type: String,\n default: '...'\n },\n showFirstLastPage: Boolean,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'nav'\n }),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'text'\n })\n}, 'VPagination');\nexport const VPagination = genericComponent()({\n name: 'VPagination',\n props: makeVPaginationProps(),\n emits: {\n 'update:modelValue': value => true,\n first: value => true,\n prev: value => true,\n next: value => true,\n last: value => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const page = useProxiedModel(props, 'modelValue');\n const {\n t,\n n\n } = useLocale();\n const {\n isRtl\n } = useRtl();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n width\n } = useDisplay();\n const maxButtons = shallowRef(-1);\n provideDefaults(undefined, {\n scoped: true\n });\n const {\n resizeRef\n } = useResizeObserver(entries => {\n if (!entries.length) return;\n const {\n target,\n contentRect\n } = entries[0];\n const firstItem = target.querySelector('.v-pagination__list > *');\n if (!firstItem) return;\n const totalWidth = contentRect.width;\n const itemWidth = firstItem.offsetWidth + parseFloat(getComputedStyle(firstItem).marginRight) * 2;\n maxButtons.value = getMax(totalWidth, itemWidth);\n });\n const length = computed(() => parseInt(props.length, 10));\n const start = computed(() => parseInt(props.start, 10));\n const totalVisible = computed(() => {\n if (props.totalVisible != null) return parseInt(props.totalVisible, 10);else if (maxButtons.value >= 0) return maxButtons.value;\n return getMax(width.value, 58);\n });\n function getMax(totalWidth, itemWidth) {\n const minButtons = props.showFirstLastPage ? 5 : 3;\n return Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)));\n }\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return [];\n if (totalVisible.value <= 0) return [];else if (totalVisible.value === 1) return [page.value];\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value);\n }\n const even = totalVisible.value % 2 === 0;\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2);\n const left = even ? middle : middle + 1;\n const right = length.value - middle;\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value];\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1;\n const rangeStart = length.value - rangeLength + start.value;\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)];\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3);\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value;\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value];\n }\n });\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue(e, value, event) {\n e.preventDefault();\n page.value = value;\n event && emit(event, value);\n }\n const {\n refs,\n updateRef\n } = useRefs();\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n rounded: toRef(props, 'rounded'),\n elevation: toRef(props, 'elevation')\n }\n });\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = e => updateRef(e, index);\n if (typeof item === 'string') {\n return {\n isActive: false,\n key: `ellipsis-${index}`,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true\n }\n };\n } else {\n const isActive = item === page.value;\n return {\n isActive,\n key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || +props.length < 2,\n color: isActive ? props.activeColor : props.color,\n 'aria-current': isActive,\n 'aria-label': t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),\n onClick: e => setValue(e, item)\n }\n };\n }\n });\n });\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value;\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1;\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: e => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n 'aria-label': t(props.firstAriaLabel),\n 'aria-disabled': prevDisabled\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: e => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n 'aria-label': t(props.previousAriaLabel),\n 'aria-disabled': prevDisabled\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: e => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n 'aria-label': t(props.nextAriaLabel),\n 'aria-disabled': nextDisabled\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: e => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n 'aria-label': t(props.lastAriaLabel),\n 'aria-disabled': nextDisabled\n } : undefined\n };\n });\n function updateFocus() {\n const currentIndex = page.value - start.value;\n refs.value[currentIndex]?.$el.focus();\n }\n function onKeydown(e) {\n if (e.key === keyValues.left && !props.disabled && page.value > +props.start) {\n page.value = page.value - 1;\n nextTick(updateFocus);\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1;\n nextTick(updateFocus);\n }\n }\n useRender(() => _createVNode(props.tag, {\n \"ref\": resizeRef,\n \"class\": ['v-pagination', themeClasses.value, props.class],\n \"style\": props.style,\n \"role\": \"navigation\",\n \"aria-label\": t(props.ariaLabel),\n \"onKeydown\": onKeydown,\n \"data-test\": \"v-pagination-root\"\n }, {\n default: () => [_createVNode(\"ul\", {\n \"class\": \"v-pagination__list\"\n }, [props.showFirstLastPage && _createVNode(\"li\", {\n \"key\": \"first\",\n \"class\": \"v-pagination__first\",\n \"data-test\": \"v-pagination-first\"\n }, [slots.first ? slots.first(controls.value.first) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.first), null)]), _createVNode(\"li\", {\n \"key\": \"prev\",\n \"class\": \"v-pagination__prev\",\n \"data-test\": \"v-pagination-prev\"\n }, [slots.prev ? slots.prev(controls.value.prev) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.prev), null)]), items.value.map((item, index) => _createVNode(\"li\", {\n \"key\": item.key,\n \"class\": ['v-pagination__item', {\n 'v-pagination__item--is-active': item.isActive\n }],\n \"data-test\": \"v-pagination-item\"\n }, [slots.item ? slots.item(item) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, item.props), {\n default: () => [item.page]\n })])), _createVNode(\"li\", {\n \"key\": \"next\",\n \"class\": \"v-pagination__next\",\n \"data-test\": \"v-pagination-next\"\n }, [slots.next ? slots.next(controls.value.next) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.next), null)]), props.showFirstLastPage && _createVNode(\"li\", {\n \"key\": \"last\",\n \"class\": \"v-pagination__last\",\n \"data-test\": \"v-pagination-last\"\n }, [slots.last ? slots.last(controls.value.last) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.last), null)])])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VPagination.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDataTableFooter.css\";\n\n// Components\nimport { VPagination } from \"../VPagination/index.mjs\";\nimport { VSelect } from \"../VSelect/index.mjs\"; // Composables\nimport { usePagination } from \"./composables/paginate.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableFooterProps = propsFactory({\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n firstIcon: {\n type: IconValue,\n default: '$first'\n },\n lastIcon: {\n type: IconValue,\n default: '$last'\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText'\n },\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText'\n },\n firstPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.firstPage'\n },\n prevPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.prevPage'\n },\n nextPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.nextPage'\n },\n lastPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.lastPage'\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => [{\n value: 10,\n title: '10'\n }, {\n value: 25,\n title: '25'\n }, {\n value: 50,\n title: '50'\n }, {\n value: 100,\n title: '100'\n }, {\n value: -1,\n title: '$vuetify.dataFooter.itemsPerPageAll'\n }]\n },\n showCurrentPage: Boolean\n}, 'VDataTableFooter');\nexport const VDataTableFooter = genericComponent()({\n name: 'VDataTableFooter',\n props: makeVDataTableFooterProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n page,\n pageCount,\n startIndex,\n stopIndex,\n itemsLength,\n itemsPerPage,\n setItemsPerPage\n } = usePagination();\n const itemsPerPageOptions = computed(() => props.itemsPerPageOptions.map(option => {\n if (typeof option === 'number') {\n return {\n value: option,\n title: option === -1 ? t('$vuetify.dataFooter.itemsPerPageAll') : String(option)\n };\n }\n return {\n ...option,\n title: !isNaN(Number(option.title)) ? option.title : t(option.title)\n };\n }));\n useRender(() => {\n const paginationProps = VPagination.filterProps(props);\n return _createVNode(\"div\", {\n \"class\": \"v-data-table-footer\"\n }, [slots.prepend?.(), _createVNode(\"div\", {\n \"class\": \"v-data-table-footer__items-per-page\"\n }, [_createVNode(\"span\", null, [t(props.itemsPerPageText)]), _createVNode(VSelect, {\n \"items\": itemsPerPageOptions.value,\n \"modelValue\": itemsPerPage.value,\n \"onUpdate:modelValue\": v => setItemsPerPage(Number(v)),\n \"density\": \"compact\",\n \"variant\": \"outlined\",\n \"hide-details\": true\n }, null)]), _createVNode(\"div\", {\n \"class\": \"v-data-table-footer__info\"\n }, [_createVNode(\"div\", null, [t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value)])]), _createVNode(\"div\", {\n \"class\": \"v-data-table-footer__pagination\"\n }, [_createVNode(VPagination, _mergeProps({\n \"modelValue\": page.value,\n \"onUpdate:modelValue\": $event => page.value = $event,\n \"density\": \"comfortable\",\n \"first-aria-label\": props.firstPageLabel,\n \"last-aria-label\": props.lastPageLabel,\n \"length\": pageCount.value,\n \"next-aria-label\": props.nextPageLabel,\n \"previous-aria-label\": props.prevPageLabel,\n \"rounded\": true,\n \"show-first-last-page\": true,\n \"total-visible\": props.showCurrentPage ? 1 : 0,\n \"variant\": \"plain\"\n }, paginationProps), null)])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDataTableFooter.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Utilities\nimport { convertToUnit, defineFunctionalComponent } from \"../../util/index.mjs\"; // Types\nexport const VDataTableColumn = defineFunctionalComponent({\n align: {\n type: String,\n default: 'start'\n },\n fixed: Boolean,\n fixedOffset: [Number, String],\n height: [Number, String],\n lastFixed: Boolean,\n noPadding: Boolean,\n tag: String,\n width: [Number, String],\n maxWidth: [Number, String],\n nowrap: Boolean\n}, (props, _ref) => {\n let {\n slots\n } = _ref;\n const Tag = props.tag ?? 'td';\n return _createVNode(Tag, {\n \"class\": ['v-data-table__td', {\n 'v-data-table-column--fixed': props.fixed,\n 'v-data-table-column--last-fixed': props.lastFixed,\n 'v-data-table-column--no-padding': props.noPadding,\n 'v-data-table-column--nowrap': props.nowrap\n }, `v-data-table-column--align-${props.align}`],\n \"style\": {\n height: convertToUnit(props.height),\n width: convertToUnit(props.width),\n maxWidth: convertToUnit(props.maxWidth),\n left: convertToUnit(props.fixedOffset || null)\n }\n }, {\n default: () => [slots.default?.()]\n });\n});\n//# sourceMappingURL=VDataTableColumn.mjs.map","// Utilities\nimport { capitalize, inject, provide, ref, watchEffect } from 'vue';\nimport { consoleError, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableHeaderProps = propsFactory({\n headers: Array\n}, 'DataTable-header');\nexport const VDataTableHeadersSymbol = Symbol.for('vuetify:data-table-headers');\nconst defaultHeader = {\n title: '',\n sortable: false\n};\nconst defaultActionHeader = {\n ...defaultHeader,\n width: 48\n};\nfunction priorityQueue() {\n let arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n const queue = arr.map(element => ({\n element,\n priority: 0\n }));\n return {\n enqueue: (element, priority) => {\n let added = false;\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n if (item.priority > priority) {\n queue.splice(i, 0, {\n element,\n priority\n });\n added = true;\n break;\n }\n }\n if (!added) queue.push({\n element,\n priority\n });\n },\n size: () => queue.length,\n count: () => {\n let count = 0;\n if (!queue.length) return 0;\n const whole = Math.floor(queue[0].priority);\n for (let i = 0; i < queue.length; i++) {\n if (Math.floor(queue[i].priority) === whole) count += 1;\n }\n return count;\n },\n dequeue: () => {\n return queue.shift();\n }\n };\n}\nfunction extractLeaves(item) {\n let columns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n if (!item.children) {\n columns.push(item);\n } else {\n for (const child of item.children) {\n extractLeaves(child, columns);\n }\n }\n return columns;\n}\nfunction extractKeys(headers) {\n let keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();\n for (const item of headers) {\n if (item.key) keys.add(item.key);\n if (item.children) {\n extractKeys(item.children, keys);\n }\n }\n return keys;\n}\nfunction getDefaultItem(item) {\n if (!item.key) return undefined;\n if (item.key === 'data-table-group') return defaultHeader;\n if (['data-table-expand', 'data-table-select'].includes(item.key)) return defaultActionHeader;\n return undefined;\n}\nfunction getDepth(item) {\n let depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (!item.children) return depth;\n return Math.max(depth, ...item.children.map(child => getDepth(child, depth + 1)));\n}\nfunction parseFixedColumns(items) {\n let seenFixed = false;\n function setFixed(item) {\n let parentFixed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!item) return;\n if (parentFixed) {\n item.fixed = true;\n }\n if (item.fixed) {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i], true);\n }\n } else {\n if (!seenFixed) {\n item.lastFixed = true;\n } else if (isNaN(+item.width)) {\n consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);\n }\n seenFixed = true;\n }\n } else {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i]);\n }\n } else {\n seenFixed = false;\n }\n }\n }\n for (let i = items.length - 1; i >= 0; i--) {\n setFixed(items[i]);\n }\n function setFixedOffset(item) {\n let fixedOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (!item) return fixedOffset;\n if (item.children) {\n item.fixedOffset = fixedOffset;\n for (const child of item.children) {\n fixedOffset = setFixedOffset(child, fixedOffset);\n }\n } else if (item.fixed) {\n item.fixedOffset = fixedOffset;\n fixedOffset += parseFloat(item.width || '0') || 0;\n }\n return fixedOffset;\n }\n let fixedOffset = 0;\n for (const item of items) {\n fixedOffset = setFixedOffset(item, fixedOffset);\n }\n}\nfunction parse(items, maxDepth) {\n const headers = [];\n let currentDepth = 0;\n const queue = priorityQueue(items);\n while (queue.size() > 0) {\n let rowSize = queue.count();\n const row = [];\n let fraction = 1;\n while (rowSize > 0) {\n const {\n element: item,\n priority\n } = queue.dequeue();\n const diff = maxDepth - currentDepth - getDepth(item);\n row.push({\n ...item,\n rowspan: diff ?? 1,\n colspan: item.children ? extractLeaves(item).length : 1\n });\n if (item.children) {\n for (const child of item.children) {\n // This internally sorts items that are on the same priority \"row\"\n const sort = priority % 1 + fraction / Math.pow(10, currentDepth + 2);\n queue.enqueue(child, currentDepth + diff + sort);\n }\n }\n fraction += 1;\n rowSize -= 1;\n }\n currentDepth += 1;\n headers.push(row);\n }\n const columns = items.map(item => extractLeaves(item)).flat();\n return {\n columns,\n headers\n };\n}\nfunction convertToInternalHeaders(items) {\n const internalHeaders = [];\n for (const item of items) {\n const defaultItem = {\n ...getDefaultItem(item),\n ...item\n };\n const key = defaultItem.key ?? (typeof defaultItem.value === 'string' ? defaultItem.value : null);\n const value = defaultItem.value ?? key ?? null;\n const internalItem = {\n ...defaultItem,\n key,\n value,\n sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort),\n children: defaultItem.children ? convertToInternalHeaders(defaultItem.children) : undefined\n };\n internalHeaders.push(internalItem);\n }\n return internalHeaders;\n}\nexport function createHeaders(props, options) {\n const headers = ref([]);\n const columns = ref([]);\n const sortFunctions = ref({});\n const sortRawFunctions = ref({});\n const filterFunctions = ref({});\n watchEffect(() => {\n const _headers = props.headers || Object.keys(props.items[0] ?? {}).map(key => ({\n key,\n title: capitalize(key)\n }));\n const items = _headers.slice();\n const keys = extractKeys(items);\n if (options?.groupBy?.value.length && !keys.has('data-table-group')) {\n items.unshift({\n key: 'data-table-group',\n title: 'Group'\n });\n }\n if (options?.showSelect?.value && !keys.has('data-table-select')) {\n items.unshift({\n key: 'data-table-select'\n });\n }\n if (options?.showExpand?.value && !keys.has('data-table-expand')) {\n items.push({\n key: 'data-table-expand'\n });\n }\n const internalHeaders = convertToInternalHeaders(items);\n parseFixedColumns(internalHeaders);\n const maxDepth = Math.max(...internalHeaders.map(item => getDepth(item))) + 1;\n const parsed = parse(internalHeaders, maxDepth);\n headers.value = parsed.headers;\n columns.value = parsed.columns;\n const flatHeaders = parsed.headers.flat(1);\n for (const header of flatHeaders) {\n if (!header.key) continue;\n if (header.sortable) {\n if (header.sort) {\n sortFunctions.value[header.key] = header.sort;\n }\n if (header.sortRaw) {\n sortRawFunctions.value[header.key] = header.sortRaw;\n }\n }\n if (header.filter) {\n filterFunctions.value[header.key] = header.filter;\n }\n }\n });\n const data = {\n headers,\n columns,\n sortFunctions,\n sortRawFunctions,\n filterFunctions\n };\n provide(VDataTableHeadersSymbol, data);\n return data;\n}\nexport function useHeaders() {\n const data = inject(VDataTableHeadersSymbol);\n if (!data) throw new Error('Missing headers!');\n return data;\n}\n//# sourceMappingURL=headers.mjs.map","import { resolveDirective as _resolveDirective, Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableColumn } from \"./VDataTableColumn.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VSelect } from \"../VSelect/index.mjs\"; // Composables\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\";\nimport { useSort } from \"./composables/sort.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { LoaderSlot, makeLoaderProps, useLoader } from \"../../composables/loader.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { computed, mergeProps } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n sticky: Boolean,\n disableSort: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc'\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc'\n },\n headerProps: {\n type: Object\n },\n ...makeDisplayProps(),\n ...makeLoaderProps()\n}, 'VDataTableHeaders');\nexport const VDataTableHeaders = genericComponent()({\n name: 'VDataTableHeaders',\n props: makeVDataTableHeadersProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n toggleSort,\n sortBy,\n isSorted\n } = useSort();\n const {\n someSelected,\n allSelected,\n selectAll,\n showSelectAll\n } = useSelection();\n const {\n columns,\n headers\n } = useHeaders();\n const {\n loaderClasses\n } = useLoader(props);\n function getFixedStyles(column, y) {\n if (!props.sticky && !column.fixed) return undefined;\n return {\n position: 'sticky',\n left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,\n top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined\n };\n }\n function getSortIcon(column) {\n const item = sortBy.value.find(item => item.key === column.key);\n if (!item) return props.sortAscIcon;\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon;\n }\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'color');\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon\n }));\n const headerCellClasses = computed(() => ['v-data-table__th', {\n 'v-data-table__th--sticky': props.sticky\n }, displayClasses.value, loaderClasses.value]);\n const VDataTableHeaderCell = _ref2 => {\n let {\n column,\n x,\n y\n } = _ref2;\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';\n const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {});\n return _createVNode(VDataTableColumn, _mergeProps({\n \"tag\": \"th\",\n \"align\": column.align,\n \"class\": [{\n 'v-data-table__th--sortable': column.sortable && !props.disableSort,\n 'v-data-table__th--sorted': isSorted(column),\n 'v-data-table__th--fixed': column.fixed\n }, ...headerCellClasses.value],\n \"style\": {\n width: convertToUnit(column.width),\n minWidth: convertToUnit(column.minWidth),\n maxWidth: convertToUnit(column.maxWidth),\n ...getFixedStyles(column, y)\n },\n \"colspan\": column.colspan,\n \"rowspan\": column.rowspan,\n \"onClick\": column.sortable ? () => toggleSort(column) : undefined,\n \"fixed\": column.fixed,\n \"nowrap\": column.nowrap,\n \"lastFixed\": column.lastFixed,\n \"noPadding\": noPadding\n }, headerProps), {\n default: () => {\n const columnSlotName = `header.${column.key}`;\n const columnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon\n };\n if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);\n if (column.key === 'data-table-select') {\n return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && _createVNode(VCheckboxBtn, {\n \"modelValue\": allSelected.value,\n \"indeterminate\": someSelected.value && !allSelected.value,\n \"onUpdate:modelValue\": selectAll\n }, null));\n }\n return _createVNode(\"div\", {\n \"class\": \"v-data-table-header__content\"\n }, [_createVNode(\"span\", null, [column.title]), column.sortable && !props.disableSort && _createVNode(VIcon, {\n \"key\": \"icon\",\n \"class\": \"v-data-table-header__sort-icon\",\n \"icon\": getSortIcon(column)\n }, null), props.multiSort && isSorted(column) && _createVNode(\"div\", {\n \"key\": \"badge\",\n \"class\": ['v-data-table-header__sort-badge', ...backgroundColorClasses.value],\n \"style\": backgroundColorStyles.value\n }, [sortBy.value.findIndex(x => x.key === column.key) + 1])]);\n }\n });\n };\n const VDataTableMobileHeaderCell = () => {\n const headerProps = mergeProps(props.headerProps ?? {} ?? {});\n const displayItems = computed(() => {\n return columns.value.filter(column => column?.sortable && !props.disableSort);\n });\n const appendIcon = computed(() => {\n const showSelectColumn = columns.value.find(column => column.key === 'data-table-select');\n if (showSelectColumn == null) return;\n return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff';\n });\n return _createVNode(VDataTableColumn, _mergeProps({\n \"tag\": \"th\",\n \"class\": [...headerCellClasses.value],\n \"colspan\": headers.value.length + 1\n }, headerProps), {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-data-table-header__content\"\n }, [_createVNode(VSelect, {\n \"chips\": true,\n \"class\": \"v-data-table__td-sort-select\",\n \"clearable\": true,\n \"density\": \"default\",\n \"items\": displayItems.value,\n \"label\": t('$vuetify.dataTable.sortBy'),\n \"multiple\": props.multiSort,\n \"variant\": \"underlined\",\n \"onClick:clear\": () => sortBy.value = [],\n \"appendIcon\": appendIcon.value,\n \"onClick:append\": () => selectAll(!allSelected.value)\n }, {\n ...slots,\n chip: props => _createVNode(VChip, {\n \"onClick\": props.item.raw?.sortable ? () => toggleSort(props.item.raw) : undefined,\n \"onMousedown\": e => {\n e.preventDefault();\n e.stopPropagation();\n }\n }, {\n default: () => [props.item.title, _createVNode(VIcon, {\n \"class\": ['v-data-table__td-sort-icon', isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active'],\n \"icon\": getSortIcon(props.item.raw),\n \"size\": \"small\"\n }, null)]\n })\n })])]\n });\n };\n useRender(() => {\n return mobile.value ? _createVNode(\"tr\", null, [_createVNode(VDataTableMobileHeaderCell, null, null)]) : _createVNode(_Fragment, null, [slots.headers ? slots.headers(slotProps.value) : headers.value.map((row, y) => _createVNode(\"tr\", null, [row.map((column, x) => _createVNode(VDataTableHeaderCell, {\n \"column\": column,\n \"x\": x,\n \"y\": y\n }, null))])), props.loading && _createVNode(\"tr\", {\n \"class\": \"v-data-table-progress\"\n }, [_createVNode(\"th\", {\n \"colspan\": columns.value.length\n }, [_createVNode(LoaderSlot, {\n \"name\": \"v-data-table-progress\",\n \"absolute\": true,\n \"active\": true,\n \"color\": typeof props.loading === 'boolean' ? undefined : props.loading,\n \"indeterminate\": true\n }, {\n default: slots.loader\n })])])]);\n });\n }\n});\n//# sourceMappingURL=VDataTableHeaders.mjs.map","import { createTextVNode as _createTextVNode, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableColumn } from \"./VDataTableColumn.mjs\";\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\"; // Composables\nimport { useGroupBy } from \"./composables/group.mjs\";\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableGroupHeaderRowProps = propsFactory({\n item: {\n type: Object,\n required: true\n }\n}, 'VDataTableGroupHeaderRow');\nexport const VDataTableGroupHeaderRow = genericComponent()({\n name: 'VDataTableGroupHeaderRow',\n props: makeVDataTableGroupHeaderRowProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n isGroupOpen,\n toggleGroup,\n extractRows\n } = useGroupBy();\n const {\n isSelected,\n isSomeSelected,\n select\n } = useSelection();\n const {\n columns\n } = useHeaders();\n const rows = computed(() => {\n return extractRows([props.item]);\n });\n return () => _createVNode(\"tr\", {\n \"class\": \"v-data-table-group-header-row\",\n \"style\": {\n '--v-data-table-group-header-row-depth': props.item.depth\n }\n }, [columns.value.map(column => {\n if (column.key === 'data-table-group') {\n const icon = isGroupOpen(props.item) ? '$expand' : '$next';\n const onClick = () => toggleGroup(props.item);\n return slots['data-table-group']?.({\n item: props.item,\n count: rows.value.length,\n props: {\n icon,\n onClick\n }\n }) ?? _createVNode(VDataTableColumn, {\n \"class\": \"v-data-table-group-header-row__column\"\n }, {\n default: () => [_createVNode(VBtn, {\n \"size\": \"small\",\n \"variant\": \"text\",\n \"icon\": icon,\n \"onClick\": onClick\n }, null), _createVNode(\"span\", null, [props.item.value]), _createVNode(\"span\", null, [_createTextVNode(\"(\"), rows.value.length, _createTextVNode(\")\")])]\n });\n }\n if (column.key === 'data-table-select') {\n const modelValue = isSelected(rows.value);\n const indeterminate = isSomeSelected(rows.value) && !modelValue;\n const selectGroup = v => select(rows.value, v);\n return slots['data-table-select']?.({\n props: {\n modelValue,\n indeterminate,\n 'onUpdate:modelValue': selectGroup\n }\n }) ?? _createVNode(\"td\", null, [_createVNode(VCheckboxBtn, {\n \"modelValue\": modelValue,\n \"indeterminate\": indeterminate,\n \"onUpdate:modelValue\": selectGroup\n }, null)]);\n }\n return _createVNode(\"td\", null, null);\n })]);\n }\n});\n//# sourceMappingURL=VDataTableGroupHeaderRow.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableColumn } from \"./VDataTableColumn.mjs\";\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\"; // Composables\nimport { useExpanded } from \"./composables/expand.mjs\";\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\";\nimport { useSort } from \"./composables/sort.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\"; // Utilities\nimport { toDisplayString, withModifiers } from 'vue';\nimport { EventProp, genericComponent, getObjectValueByPath, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableRowProps = propsFactory({\n index: Number,\n item: Object,\n cellProps: [Object, Function],\n onClick: EventProp(),\n onContextmenu: EventProp(),\n onDblclick: EventProp(),\n ...makeDisplayProps()\n}, 'VDataTableRow');\nexport const VDataTableRow = genericComponent()({\n name: 'VDataTableRow',\n props: makeVDataTableRowProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n displayClasses,\n mobile\n } = useDisplay(props, 'v-data-table__tr');\n const {\n isSelected,\n toggleSelect,\n someSelected,\n allSelected,\n selectAll\n } = useSelection();\n const {\n isExpanded,\n toggleExpand\n } = useExpanded();\n const {\n toggleSort,\n sortBy,\n isSorted\n } = useSort();\n const {\n columns\n } = useHeaders();\n useRender(() => _createVNode(\"tr\", {\n \"class\": ['v-data-table__tr', {\n 'v-data-table__tr--clickable': !!(props.onClick || props.onContextmenu || props.onDblclick)\n }, displayClasses.value],\n \"onClick\": props.onClick,\n \"onContextmenu\": props.onContextmenu,\n \"onDblclick\": props.onDblclick\n }, [props.item && columns.value.map((column, i) => {\n const item = props.item;\n const slotName = `item.${column.key}`;\n const headerSlotName = `header.${column.key}`;\n const slotProps = {\n index: props.index,\n item: item.raw,\n internalItem: item,\n value: getObjectValueByPath(item.columns, column.key),\n column,\n isSelected,\n toggleSelect,\n isExpanded,\n toggleExpand\n };\n const columnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon: () => ''\n };\n const cellProps = typeof props.cellProps === 'function' ? props.cellProps({\n index: slotProps.index,\n item: slotProps.item,\n internalItem: slotProps.internalItem,\n value: slotProps.value,\n column\n }) : props.cellProps;\n const columnCellProps = typeof column.cellProps === 'function' ? column.cellProps({\n index: slotProps.index,\n item: slotProps.item,\n internalItem: slotProps.internalItem,\n value: slotProps.value\n }) : column.cellProps;\n return _createVNode(VDataTableColumn, _mergeProps({\n \"align\": column.align,\n \"class\": {\n 'v-data-table__td--expanded-row': column.key === 'data-table-expand',\n 'v-data-table__td--select-row': column.key === 'data-table-select'\n },\n \"fixed\": column.fixed,\n \"fixedOffset\": column.fixedOffset,\n \"lastFixed\": column.lastFixed,\n \"maxWidth\": !mobile.value ? column.maxWidth : undefined,\n \"noPadding\": column.key === 'data-table-select' || column.key === 'data-table-expand',\n \"nowrap\": column.nowrap,\n \"width\": !mobile.value ? column.width : undefined\n }, cellProps, columnCellProps), {\n default: () => {\n if (slots[slotName] && !mobile.value) return slots[slotName]?.(slotProps);\n if (column.key === 'data-table-select') {\n return slots['item.data-table-select']?.(slotProps) ?? _createVNode(VCheckboxBtn, {\n \"disabled\": !item.selectable,\n \"modelValue\": isSelected([item]),\n \"onClick\": withModifiers(() => toggleSelect(item), ['stop'])\n }, null);\n }\n if (column.key === 'data-table-expand') {\n return slots['item.data-table-expand']?.(slotProps) ?? _createVNode(VBtn, {\n \"icon\": isExpanded(item) ? '$collapse' : '$expand',\n \"size\": \"small\",\n \"variant\": \"text\",\n \"onClick\": withModifiers(() => toggleExpand(item), ['stop'])\n }, null);\n }\n const displayValue = toDisplayString(slotProps.value);\n return !mobile.value ? displayValue : _createVNode(_Fragment, null, [_createVNode(\"div\", {\n \"class\": \"v-data-table__td-title\"\n }, [slots[headerSlotName]?.(columnSlotProps) ?? column.title]), _createVNode(\"div\", {\n \"class\": \"v-data-table__td-value\"\n }, [slots[slotName]?.(slotProps) ?? displayValue])]);\n }\n });\n })]));\n }\n});\n//# sourceMappingURL=VDataTableRow.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableGroupHeaderRow } from \"./VDataTableGroupHeaderRow.mjs\";\nimport { VDataTableRow } from \"./VDataTableRow.mjs\"; // Composables\nimport { useExpanded } from \"./composables/expand.mjs\";\nimport { useGroupBy } from \"./composables/group.mjs\";\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { Fragment, mergeProps } from 'vue';\nimport { genericComponent, getPrefixedEventHandlers, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableRowsProps = propsFactory({\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText'\n },\n hideNoData: Boolean,\n items: {\n type: Array,\n default: () => []\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText'\n },\n rowProps: [Object, Function],\n cellProps: [Object, Function],\n ...makeDisplayProps()\n}, 'VDataTableRows');\nexport const VDataTableRows = genericComponent()({\n name: 'VDataTableRows',\n inheritAttrs: false,\n props: makeVDataTableRowsProps(),\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n columns\n } = useHeaders();\n const {\n expandOnClick,\n toggleExpand,\n isExpanded\n } = useExpanded();\n const {\n isSelected,\n toggleSelect\n } = useSelection();\n const {\n toggleGroup,\n isGroupOpen\n } = useGroupBy();\n const {\n t\n } = useLocale();\n const {\n mobile\n } = useDisplay(props);\n useRender(() => {\n if (props.loading && (!props.items.length || slots.loading)) {\n return _createVNode(\"tr\", {\n \"class\": \"v-data-table-rows-loading\",\n \"key\": \"loading\"\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length\n }, [slots.loading?.() ?? t(props.loadingText)])]);\n }\n if (!props.loading && !props.items.length && !props.hideNoData) {\n return _createVNode(\"tr\", {\n \"class\": \"v-data-table-rows-no-data\",\n \"key\": \"no-data\"\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length\n }, [slots['no-data']?.() ?? t(props.noDataText)])]);\n }\n return _createVNode(_Fragment, null, [props.items.map((item, index) => {\n if (item.type === 'group') {\n const slotProps = {\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n toggleGroup,\n isGroupOpen\n };\n return slots['group-header'] ? slots['group-header'](slotProps) : _createVNode(VDataTableGroupHeaderRow, _mergeProps({\n \"key\": `group-header_${item.id}`,\n \"item\": item\n }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps)), slots);\n }\n const slotProps = {\n index,\n item: item.raw,\n internalItem: item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect\n };\n const itemSlotProps = {\n ...slotProps,\n props: mergeProps({\n key: `item_${item.key ?? item.index}`,\n onClick: expandOnClick.value ? () => {\n toggleExpand(item);\n } : undefined,\n index,\n item,\n cellProps: props.cellProps,\n mobile: mobile.value\n }, getPrefixedEventHandlers(attrs, ':row', () => slotProps), typeof props.rowProps === 'function' ? props.rowProps({\n item: slotProps.item,\n index: slotProps.index,\n internalItem: slotProps.internalItem\n }) : props.rowProps)\n };\n return _createVNode(_Fragment, {\n \"key\": itemSlotProps.props.key\n }, [slots.item ? slots.item(itemSlotProps) : _createVNode(VDataTableRow, itemSlotProps.props, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDataTableRows.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VTable.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVTableProps = propsFactory({\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n hover: Boolean,\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VTable');\nexport const VTable = genericComponent()({\n name: 'VTable',\n props: makeVTableProps(),\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n densityClasses\n } = useDensity(props);\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-table', {\n 'v-table--fixed-height': !!props.height,\n 'v-table--fixed-header': props.fixedHeader,\n 'v-table--fixed-footer': props.fixedFooter,\n 'v-table--has-top': !!slots.top,\n 'v-table--has-bottom': !!slots.bottom,\n 'v-table--hover': props.hover\n }, themeClasses.value, densityClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.top?.(), slots.default ? _createVNode(\"div\", {\n \"class\": \"v-table__wrapper\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"table\", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VTable.mjs.map","// Utilities\nimport { computed } from 'vue';\nimport { getPropertyFromItem, propsFactory } from \"../../../util/index.mjs\"; // Types\n// Composables\nexport const makeDataTableItemsProps = propsFactory({\n items: {\n type: Array,\n default: () => []\n },\n itemValue: {\n type: [String, Array, Function],\n default: 'id'\n },\n itemSelectable: {\n type: [String, Array, Function],\n default: null\n },\n rowProps: [Object, Function],\n cellProps: [Object, Function],\n returnObject: Boolean\n}, 'DataTable-items');\nexport function transformItem(props, item, index, columns) {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue);\n const selectable = getPropertyFromItem(item, props.itemSelectable, true);\n const itemColumns = columns.reduce((obj, column) => {\n if (column.key != null) obj[column.key] = getPropertyFromItem(item, column.value);\n return obj;\n }, {});\n return {\n type: 'item',\n key: props.returnObject ? getPropertyFromItem(item, props.itemValue) : value,\n index,\n value,\n selectable,\n columns: itemColumns,\n raw: item\n };\n}\nexport function transformItems(props, items, columns) {\n return items.map((item, index) => transformItem(props, item, index, columns));\n}\nexport function useDataTableItems(props, columns) {\n const items = computed(() => transformItems(props, props.items, columns.value));\n return {\n items\n };\n}\n//# sourceMappingURL=items.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, resolveDirective as _resolveDirective, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VDataTable.css\";\n\n// Components\nimport { makeVDataTableFooterProps, VDataTableFooter } from \"./VDataTableFooter.mjs\";\nimport { makeVDataTableHeadersProps, VDataTableHeaders } from \"./VDataTableHeaders.mjs\";\nimport { makeVDataTableRowsProps, VDataTableRows } from \"./VDataTableRows.mjs\";\nimport { VDivider } from \"../VDivider/index.mjs\";\nimport { makeVTableProps, VTable } from \"../VTable/VTable.mjs\"; // Composables\nimport { makeDataTableExpandProps, provideExpanded } from \"./composables/expand.mjs\";\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from \"./composables/group.mjs\";\nimport { createHeaders, makeDataTableHeaderProps } from \"./composables/headers.mjs\";\nimport { makeDataTableItemsProps, useDataTableItems } from \"./composables/items.mjs\";\nimport { useOptions } from \"./composables/options.mjs\";\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from \"./composables/paginate.mjs\";\nimport { makeDataTableSelectProps, provideSelection } from \"./composables/select.mjs\";\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from \"./composables/sort.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\"; // Utilities\nimport { computed, toRef, toRefs } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeDataTableProps = propsFactory({\n ...makeVDataTableRowsProps(),\n hideDefaultBody: Boolean,\n hideDefaultFooter: Boolean,\n hideDefaultHeader: Boolean,\n width: [String, Number],\n search: String,\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeVDataTableHeadersProps(),\n ...makeVTableProps()\n}, 'DataTable');\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeFilterProps(),\n ...makeVDataTableFooterProps()\n}, 'VDataTable');\nexport const VDataTable = genericComponent()({\n name: 'VDataTable',\n props: makeVDataTableProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:page': value => true,\n 'update:itemsPerPage': value => true,\n 'update:sortBy': value => true,\n 'update:options': value => true,\n 'update:groupBy': value => true,\n 'update:expanded': value => true,\n 'update:currentItems': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n groupBy\n } = createGroupBy(props);\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n page,\n itemsPerPage\n } = createPagination(props);\n const {\n disableSort\n } = toRefs(props);\n const {\n columns,\n headers,\n sortFunctions,\n sortRawFunctions,\n filterFunctions\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand')\n });\n const {\n items\n } = useDataTableItems(props, columns);\n const search = toRef(props, 'search');\n const {\n filteredItems\n } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions\n });\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort,\n page\n });\n const {\n sortByWithGroups,\n opened,\n extractRows,\n isGroupOpen,\n toggleGroup\n } = provideGroupBy({\n groupBy,\n sortBy,\n disableSort\n });\n const {\n sortedItems\n } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => ({\n ...item.raw,\n ...item.columns\n }),\n sortFunctions,\n sortRawFunctions\n });\n const {\n flatItems\n } = useGroupedItems(sortedItems, groupBy, opened);\n const itemsLength = computed(() => flatItems.value.length);\n const {\n startIndex,\n stopIndex,\n pageCount,\n setItemsPerPage\n } = providePagination({\n page,\n itemsPerPage,\n itemsLength\n });\n const {\n paginatedItems\n } = usePaginatedItems({\n items: flatItems,\n startIndex,\n stopIndex,\n itemsPerPage\n });\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value));\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected\n } = provideSelection(props, {\n allItems: items,\n currentPage: paginatedItemsWithoutGroups\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search\n });\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText')\n }\n });\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value.map(item => item.raw),\n internalItems: paginatedItemsWithoutGroups.value,\n groupedItems: paginatedItems.value,\n columns: columns.value,\n headers: headers.value\n }));\n useRender(() => {\n const dataTableFooterProps = VDataTableFooter.filterProps(props);\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props);\n const dataTableRowsProps = VDataTableRows.filterProps(props);\n const tableProps = VTable.filterProps(props);\n return _createVNode(VTable, _mergeProps({\n \"class\": ['v-data-table', {\n 'v-data-table--show-select': props.showSelect,\n 'v-data-table--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, tableProps), {\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && _createVNode(\"thead\", {\n \"key\": \"thead\"\n }, [_createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && _createVNode(\"tbody\", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : _createVNode(VDataTableRows, _mergeProps(attrs, dataTableRowsProps, {\n \"items\": paginatedItems.value\n }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && _createVNode(_Fragment, null, [_createVNode(VDivider, null, null), _createVNode(VDataTableFooter, dataTableFooterProps, {\n prepend: slots['footer.prepend']\n })])\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VDataTable.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeDataTableProps } from \"./VDataTable.mjs\";\nimport { VDataTableHeaders } from \"./VDataTableHeaders.mjs\";\nimport { VDataTableRow } from \"./VDataTableRow.mjs\";\nimport { VDataTableRows } from \"./VDataTableRows.mjs\";\nimport { VTable } from \"../VTable/index.mjs\";\nimport { VVirtualScrollItem } from \"../VVirtualScroll/VVirtualScrollItem.mjs\"; // Composables\nimport { provideExpanded } from \"./composables/expand.mjs\";\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from \"./composables/group.mjs\";\nimport { createHeaders } from \"./composables/headers.mjs\";\nimport { useDataTableItems } from \"./composables/items.mjs\";\nimport { useOptions } from \"./composables/options.mjs\";\nimport { provideSelection } from \"./composables/select.mjs\";\nimport { createSort, provideSort, useSortedItems } from \"./composables/sort.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { makeVirtualProps, useVirtual } from \"../../composables/virtual.mjs\"; // Utilities\nimport { computed, shallowRef, toRef, toRefs } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeVirtualProps(),\n ...makeFilterProps()\n}, 'VDataTableVirtual');\nexport const VDataTableVirtual = genericComponent()({\n name: 'VDataTableVirtual',\n props: makeVDataTableVirtualProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:sortBy': value => true,\n 'update:options': value => true,\n 'update:groupBy': value => true,\n 'update:expanded': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n groupBy\n } = createGroupBy(props);\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n disableSort\n } = toRefs(props);\n const {\n columns,\n headers,\n filterFunctions,\n sortFunctions,\n sortRawFunctions\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand')\n });\n const {\n items\n } = useDataTableItems(props, columns);\n const search = toRef(props, 'search');\n const {\n filteredItems\n } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions\n });\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort\n });\n const {\n sortByWithGroups,\n opened,\n extractRows,\n isGroupOpen,\n toggleGroup\n } = provideGroupBy({\n groupBy,\n sortBy,\n disableSort\n });\n const {\n sortedItems\n } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => ({\n ...item.raw,\n ...item.columns\n }),\n sortFunctions,\n sortRawFunctions\n });\n const {\n flatItems\n } = useGroupedItems(sortedItems, groupBy, opened);\n const allItems = computed(() => extractRows(flatItems.value));\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected\n } = provideSelection(props, {\n allItems,\n currentPage: allItems\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n const {\n containerRef,\n markerRef,\n paddingTop,\n paddingBottom,\n computedItems,\n handleItemResize,\n handleScroll,\n handleScrollend\n } = useVirtual(props, flatItems);\n const displayItems = computed(() => computedItems.value.map(item => item.raw));\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search\n });\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText')\n }\n });\n const slotProps = computed(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value.map(item => item.raw),\n internalItems: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value\n }));\n useRender(() => {\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props);\n const dataTableRowsProps = VDataTableRows.filterProps(props);\n const tableProps = VTable.filterProps(props);\n return _createVNode(VTable, _mergeProps({\n \"class\": ['v-data-table', {\n 'v-data-table--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, tableProps), {\n top: () => slots.top?.(slotProps.value),\n wrapper: () => _createVNode(\"div\", {\n \"ref\": containerRef,\n \"onScrollPassive\": handleScroll,\n \"onScrollend\": handleScrollend,\n \"class\": \"v-table__wrapper\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"table\", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && _createVNode(\"thead\", {\n \"key\": \"thead\"\n }, [_createVNode(VDataTableHeaders, _mergeProps(dataTableHeadersProps, {\n \"sticky\": props.fixedHeader\n }), slots)]), !props.hideDefaultBody && _createVNode(\"tbody\", null, [_createVNode(\"tr\", {\n \"ref\": markerRef,\n \"style\": {\n height: convertToUnit(paddingTop.value),\n border: 0\n }\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length,\n \"style\": {\n height: 0,\n border: 0\n }\n }, null)]), slots['body.prepend']?.(slotProps.value), _createVNode(VDataTableRows, _mergeProps(attrs, dataTableRowsProps, {\n \"items\": displayItems.value\n }), {\n ...slots,\n item: itemSlotProps => _createVNode(VVirtualScrollItem, {\n \"key\": itemSlotProps.internalItem.index,\n \"renderless\": true,\n \"onUpdate:height\": height => handleItemResize(itemSlotProps.internalItem.index, height)\n }, {\n default: _ref2 => {\n let {\n itemRef\n } = _ref2;\n return slots.item?.({\n ...itemSlotProps,\n itemRef\n }) ?? _createVNode(VDataTableRow, _mergeProps(itemSlotProps.props, {\n \"ref\": itemRef,\n \"key\": itemSlotProps.internalItem.index,\n \"index\": itemSlotProps.internalItem.index\n }), slots);\n }\n })\n }), slots['body.append']?.(slotProps.value), _createVNode(\"tr\", {\n \"style\": {\n height: convertToUnit(paddingBottom.value),\n border: 0\n }\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length,\n \"style\": {\n height: 0,\n border: 0\n }\n }, null)])])])]),\n bottom: () => slots.bottom?.(slotProps.value)\n });\n });\n }\n});\n//# sourceMappingURL=VDataTableVirtual.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment } from \"vue\";\n// Components\nimport { makeDataTableProps } from \"./VDataTable.mjs\";\nimport { makeVDataTableFooterProps, VDataTableFooter } from \"./VDataTableFooter.mjs\";\nimport { VDataTableHeaders } from \"./VDataTableHeaders.mjs\";\nimport { VDataTableRows } from \"./VDataTableRows.mjs\";\nimport { VDivider } from \"../VDivider/index.mjs\";\nimport { VTable } from \"../VTable/index.mjs\"; // Composables\nimport { provideExpanded } from \"./composables/expand.mjs\";\nimport { createGroupBy, provideGroupBy, useGroupedItems } from \"./composables/group.mjs\";\nimport { createHeaders } from \"./composables/headers.mjs\";\nimport { useDataTableItems } from \"./composables/items.mjs\";\nimport { useOptions } from \"./composables/options.mjs\";\nimport { createPagination, makeDataTablePaginateProps, providePagination } from \"./composables/paginate.mjs\";\nimport { provideSelection } from \"./composables/select.mjs\";\nimport { createSort, provideSort } from \"./composables/sort.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\"; // Utilities\nimport { computed, provide, toRef, toRefs } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableServerProps = propsFactory({\n itemsLength: {\n type: [Number, String],\n required: true\n },\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeVDataTableFooterProps()\n}, 'VDataTableServer');\nexport const VDataTableServer = genericComponent()({\n name: 'VDataTableServer',\n props: makeVDataTableServerProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:page': page => true,\n 'update:itemsPerPage': page => true,\n 'update:sortBy': sortBy => true,\n 'update:options': options => true,\n 'update:expanded': options => true,\n 'update:groupBy': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n groupBy\n } = createGroupBy(props);\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n page,\n itemsPerPage\n } = createPagination(props);\n const {\n disableSort\n } = toRefs(props);\n const itemsLength = computed(() => parseInt(props.itemsLength, 10));\n const {\n columns,\n headers\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand')\n });\n const {\n items\n } = useDataTableItems(props, columns);\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort,\n page\n });\n const {\n opened,\n isGroupOpen,\n toggleGroup,\n extractRows\n } = provideGroupBy({\n groupBy,\n sortBy,\n disableSort\n });\n const {\n pageCount,\n setItemsPerPage\n } = providePagination({\n page,\n itemsPerPage,\n itemsLength\n });\n const {\n flatItems\n } = useGroupedItems(items, groupBy, opened);\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected\n } = provideSelection(props, {\n allItems: items,\n currentPage: items\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n const itemsWithoutGroups = computed(() => extractRows(items.value));\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search: toRef(props, 'search')\n });\n provide('v-data-table', {\n toggleSort,\n sortBy\n });\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText')\n }\n });\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: itemsWithoutGroups.value.map(item => item.raw),\n internalItems: itemsWithoutGroups.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value\n }));\n useRender(() => {\n const dataTableFooterProps = VDataTableFooter.filterProps(props);\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props);\n const dataTableRowsProps = VDataTableRows.filterProps(props);\n const tableProps = VTable.filterProps(props);\n return _createVNode(VTable, _mergeProps({\n \"class\": ['v-data-table', {\n 'v-data-table--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, tableProps), {\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && _createVNode(\"thead\", {\n \"key\": \"thead\",\n \"class\": \"v-data-table__thead\",\n \"role\": \"rowgroup\"\n }, [_createVNode(VDataTableHeaders, _mergeProps(dataTableHeadersProps, {\n \"sticky\": props.fixedHeader\n }), slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && _createVNode(\"tbody\", {\n \"class\": \"v-data-table__tbody\",\n \"role\": \"rowgroup\"\n }, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : _createVNode(VDataTableRows, _mergeProps(attrs, dataTableRowsProps, {\n \"items\": flatItems.value\n }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && _createVNode(_Fragment, null, [_createVNode(VDivider, null, null), _createVNode(VDataTableFooter, dataTableFooterProps, {\n prepend: slots['footer.prepend']\n })])\n });\n });\n }\n});\n//# sourceMappingURL=VDataTableServer.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDatePickerControls.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VSpacer } from \"../VGrid/index.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerControlsProps = propsFactory({\n active: {\n type: [String, Array],\n default: undefined\n },\n disabled: {\n type: [Boolean, String, Array],\n default: false\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n modeIcon: {\n type: IconValue,\n default: '$subgroup'\n },\n text: String,\n viewMode: {\n type: String,\n default: 'month'\n }\n}, 'VDatePickerControls');\nexport const VDatePickerControls = genericComponent()({\n name: 'VDatePickerControls',\n props: makeVDatePickerControlsProps(),\n emits: {\n 'click:year': () => true,\n 'click:month': () => true,\n 'click:prev': () => true,\n 'click:next': () => true,\n 'click:text': () => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const disableMonth = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('text') : !!props.disabled;\n });\n const disableYear = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('mode') : !!props.disabled;\n });\n const disablePrev = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('prev') : !!props.disabled;\n });\n const disableNext = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('next') : !!props.disabled;\n });\n function onClickPrev() {\n emit('click:prev');\n }\n function onClickNext() {\n emit('click:next');\n }\n function onClickYear() {\n emit('click:year');\n }\n function onClickMonth() {\n emit('click:month');\n }\n useRender(() => {\n // TODO: add slot support and scope defaults\n return _createVNode(\"div\", {\n \"class\": ['v-date-picker-controls']\n }, [_createVNode(VBtn, {\n \"class\": \"v-date-picker-controls__month-btn\",\n \"disabled\": disableMonth.value,\n \"text\": props.text,\n \"variant\": \"text\",\n \"rounded\": true,\n \"onClick\": onClickMonth\n }, null), _createVNode(VBtn, {\n \"key\": \"mode-btn\",\n \"class\": \"v-date-picker-controls__mode-btn\",\n \"disabled\": disableYear.value,\n \"density\": \"comfortable\",\n \"icon\": props.modeIcon,\n \"variant\": \"text\",\n \"onClick\": onClickYear\n }, null), _createVNode(VSpacer, {\n \"key\": \"mode-spacer\"\n }, null), _createVNode(\"div\", {\n \"key\": \"month-buttons\",\n \"class\": \"v-date-picker-controls__month\"\n }, [_createVNode(VBtn, {\n \"disabled\": disablePrev.value,\n \"icon\": props.prevIcon,\n \"variant\": \"text\",\n \"onClick\": onClickPrev\n }, null), _createVNode(VBtn, {\n \"disabled\": disableNext.value,\n \"icon\": props.nextIcon,\n \"variant\": \"text\",\n \"onClick\": onClickNext\n }, null)])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerControls.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDatePickerHeader.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerHeaderProps = propsFactory({\n appendIcon: String,\n color: String,\n header: String,\n transition: String,\n onClick: EventProp()\n}, 'VDatePickerHeader');\nexport const VDatePickerHeader = genericComponent()({\n name: 'VDatePickerHeader',\n props: makeVDatePickerHeaderProps(),\n emits: {\n click: () => true,\n 'click:append': () => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'color');\n function onClick() {\n emit('click');\n }\n function onClickAppend() {\n emit('click:append');\n }\n useRender(() => {\n const hasContent = !!(slots.default || props.header);\n const hasAppend = !!(slots.append || props.appendIcon);\n return _createVNode(\"div\", {\n \"class\": ['v-date-picker-header', {\n 'v-date-picker-header--clickable': !!props.onClick\n }, backgroundColorClasses.value],\n \"style\": backgroundColorStyles.value,\n \"onClick\": onClick\n }, [slots.prepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-date-picker-header__prepend\"\n }, [slots.prepend()]), hasContent && _createVNode(MaybeTransition, {\n \"key\": \"content\",\n \"name\": props.transition\n }, {\n default: () => [_createVNode(\"div\", {\n \"key\": props.header,\n \"class\": \"v-date-picker-header__content\"\n }, [slots.default?.() ?? props.header])]\n }), hasAppend && _createVNode(\"div\", {\n \"class\": \"v-date-picker-header__append\"\n }, [!slots.append ? _createVNode(VBtn, {\n \"key\": \"append-btn\",\n \"icon\": props.appendIcon,\n \"variant\": \"text\",\n \"onClick\": onClickAppend\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !props.appendIcon,\n \"defaults\": {\n VBtn: {\n icon: props.appendIcon,\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.append?.()]\n })])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerHeader.mjs.map","// Composables\nimport { getWeek, useDate } from \"./date/date.mjs\";\nimport { useProxiedModel } from \"./proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { propsFactory, wrapInArray } from \"../util/index.mjs\"; // Types\n// Types\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function],\n disabled: Boolean,\n displayValue: null,\n modelValue: Array,\n month: [Number, String],\n max: null,\n min: null,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array,\n default: () => [0, 1, 2, 3, 4, 5, 6]\n },\n weeksInMonth: {\n type: String,\n default: 'dynamic'\n },\n firstDayOfWeek: [Number, String]\n}, 'calendar');\nexport function useCalendar(props) {\n const adapter = useDate();\n const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v));\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue);\n if (model.value.length > 0) return adapter.date(model.value[0]);\n if (props.min) return adapter.date(props.min);\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0]);\n return adapter.date();\n });\n const year = useProxiedModel(props, 'year', undefined, v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value);\n return adapter.startOfYear(adapter.setYear(adapter.date(), value));\n }, v => adapter.getYear(v));\n const month = useProxiedModel(props, 'month', undefined, v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value);\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value));\n return adapter.setMonth(date, value);\n }, v => adapter.getMonth(v));\n const weekDays = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek ?? 0);\n return props.weekdays.map(day => (day + firstDayOfWeek) % 7);\n });\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);\n const days = weeks.flat();\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7;\n if (props.weeksInMonth === 'static' && days.length < daysInMonth) {\n const lastDay = days[days.length - 1];\n let week = [];\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day));\n if (day % 7 === 0) {\n weeks.push(week);\n week = [];\n }\n }\n }\n return weeks;\n });\n function genDays(days, today) {\n return days.filter(date => {\n return weekDays.value.includes(adapter.toJsDate(date).getDay());\n }).map((date, index) => {\n const isoDate = adapter.toISO(date);\n const isAdjacent = !adapter.isSameMonth(date, month.value);\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value));\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value));\n const isSame = adapter.isSameDay(date, month.value);\n return {\n date,\n isoDate,\n formatted: adapter.format(date, 'keyboardDate'),\n year: adapter.getYear(date),\n month: adapter.getMonth(date),\n isDisabled: isDisabled(date),\n isWeekStart: index % 7 === 0,\n isWeekEnd: index % 7 === 6,\n isToday: adapter.isSameDay(date, today),\n isAdjacent,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isStart,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isEnd,\n isSame,\n localized: adapter.format(date, 'dayOfMonth')\n };\n });\n }\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(displayValue.value, props.firstDayOfWeek);\n const week = [];\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day));\n }\n const today = adapter.date();\n return genDays(week, today);\n });\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat();\n const today = adapter.date();\n return genDays(days, today);\n });\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? getWeek(adapter, week[0]) : null;\n });\n });\n function isDisabled(value) {\n if (props.disabled) return true;\n const date = adapter.date(value);\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true;\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true;\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date));\n }\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date);\n }\n return false;\n }\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekDays,\n weekNumbers\n };\n}\n//# sourceMappingURL=calendar.mjs.map","import { createVNode as _createVNode, createTextVNode as _createTextVNode } from \"vue\";\n// Styles\nimport \"./VDatePickerMonth.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { makeCalendarProps, useCalendar } from \"../../composables/calendar.mjs\";\nimport { useDate } from \"../../composables/date/date.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, ref, shallowRef, watch } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String],\n showWeek: Boolean,\n transition: {\n type: String,\n default: 'picker-transition'\n },\n reverseTransition: {\n type: String,\n default: 'picker-reverse-transition'\n },\n ...makeCalendarProps()\n}, 'VDatePickerMonth');\nexport const VDatePickerMonth = genericComponent()({\n name: 'VDatePickerMonth',\n props: makeVDatePickerMonthProps(),\n emits: {\n 'update:modelValue': date => true,\n 'update:month': date => true,\n 'update:year': date => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const daysRef = ref();\n const {\n daysInMonth,\n model,\n weekNumbers\n } = useCalendar(props);\n const adapter = useDate();\n const rangeStart = shallowRef();\n const rangeStop = shallowRef();\n const isReverse = shallowRef(false);\n const transition = computed(() => {\n return !isReverse.value ? props.transition : props.reverseTransition;\n });\n if (props.multiple === 'range' && model.value.length > 0) {\n rangeStart.value = model.value[0];\n if (model.value.length > 1) {\n rangeStop.value = model.value[model.value.length - 1];\n }\n }\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity;\n return model.value.length >= max;\n });\n watch(daysInMonth, (val, oldVal) => {\n if (!oldVal) return;\n isReverse.value = adapter.isBefore(val[0].date, oldVal[0].date);\n });\n function onRangeClick(value) {\n const _value = adapter.startOfDay(value);\n if (model.value.length === 0) {\n rangeStart.value = undefined;\n } else if (model.value.length === 1) {\n rangeStart.value = model.value[0];\n rangeStop.value = undefined;\n }\n if (!rangeStart.value) {\n rangeStart.value = _value;\n model.value = [rangeStart.value];\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(_value, rangeStart.value)) {\n rangeStart.value = undefined;\n model.value = [];\n return;\n } else if (adapter.isBefore(_value, rangeStart.value)) {\n rangeStop.value = adapter.endOfDay(rangeStart.value);\n rangeStart.value = _value;\n } else {\n rangeStop.value = adapter.endOfDay(_value);\n }\n const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');\n const datesInRange = [rangeStart.value];\n for (let i = 1; i < diff; i++) {\n const nextDate = adapter.addDays(rangeStart.value, i);\n datesInRange.push(nextDate);\n }\n datesInRange.push(rangeStop.value);\n model.value = datesInRange;\n } else {\n rangeStart.value = value;\n rangeStop.value = undefined;\n model.value = [rangeStart.value];\n }\n }\n function onMultipleClick(value) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value));\n if (index === -1) {\n model.value = [...model.value, value];\n } else {\n const value = [...model.value];\n value.splice(index, 1);\n model.value = value;\n }\n }\n function onClick(value) {\n if (props.multiple === 'range') {\n onRangeClick(value);\n } else if (props.multiple) {\n onMultipleClick(value);\n } else {\n model.value = [value];\n }\n }\n return () => _createVNode(\"div\", {\n \"class\": \"v-date-picker-month\"\n }, [props.showWeek && _createVNode(\"div\", {\n \"key\": \"weeks\",\n \"class\": \"v-date-picker-month__weeks\"\n }, [!props.hideWeekdays && _createVNode(\"div\", {\n \"key\": \"hide-week-days\",\n \"class\": \"v-date-picker-month__day\"\n }, [_createTextVNode(\"\\xA0\")]), weekNumbers.value.map(week => _createVNode(\"div\", {\n \"class\": ['v-date-picker-month__day', 'v-date-picker-month__day--adjacent']\n }, [week]))]), _createVNode(MaybeTransition, {\n \"name\": transition.value\n }, {\n default: () => [_createVNode(\"div\", {\n \"ref\": daysRef,\n \"key\": daysInMonth.value[0].date?.toString(),\n \"class\": \"v-date-picker-month__days\"\n }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => _createVNode(\"div\", {\n \"class\": ['v-date-picker-month__day', 'v-date-picker-month__weekday']\n }, [weekDay])), daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date)\n },\n item,\n i\n };\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true;\n }\n return _createVNode(\"div\", {\n \"class\": ['v-date-picker-month__day', {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart\n }],\n \"data-v-date\": !item.isDisabled ? item.isoDate : undefined\n }, [(props.showAdjacentMonths || !item.isAdjacent) && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n class: 'v-date-picker-month__day-btn',\n color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date)\n }\n }\n }, {\n default: () => [slots.day?.(slotProps) ?? _createVNode(VBtn, slotProps.props, null)]\n })]);\n })])]\n })]);\n }\n});\n//# sourceMappingURL=VDatePickerMonth.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VDatePickerMonths.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useDate } from \"../../composables/date/index.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, watchEffect } from 'vue';\nimport { convertToUnit, createRange, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerMonthsProps = propsFactory({\n color: String,\n height: [String, Number],\n min: null,\n max: null,\n modelValue: Number,\n year: Number\n}, 'VDatePickerMonths');\nexport const VDatePickerMonths = genericComponent()({\n name: 'VDatePickerMonths',\n props: makeVDatePickerMonthsProps(),\n emits: {\n 'update:modelValue': date => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const adapter = useDate();\n const model = useProxiedModel(props, 'modelValue');\n const months = computed(() => {\n let date = adapter.startOfYear(adapter.date());\n if (props.year) {\n date = adapter.setYear(date, props.year);\n }\n return createRange(12).map(i => {\n const text = adapter.format(date, 'monthShort');\n const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));\n date = adapter.getNextMonth(date);\n return {\n isDisabled,\n text,\n value: i\n };\n });\n });\n watchEffect(() => {\n model.value = model.value ?? adapter.getMonth(adapter.date());\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": \"v-date-picker-months\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"div\", {\n \"class\": \"v-date-picker-months__content\"\n }, [months.value.map((month, i) => {\n const btnProps = {\n active: model.value === i,\n color: model.value === i ? props.color : undefined,\n disabled: month.isDisabled,\n rounded: true,\n text: month.text,\n variant: model.value === month.value ? 'flat' : 'text',\n onClick: () => onClick(i)\n };\n function onClick(i) {\n if (model.value === i) {\n emit('update:modelValue', model.value);\n return;\n }\n model.value = i;\n }\n return slots.month?.({\n month,\n i,\n props: btnProps\n }) ?? _createVNode(VBtn, _mergeProps({\n \"key\": \"month\"\n }, btnProps), null);\n })])]));\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerMonths.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VDatePickerYears.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useDate } from \"../../composables/date/index.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, nextTick, onMounted, watchEffect } from 'vue';\nimport { convertToUnit, createRange, genericComponent, propsFactory, templateRef, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVDatePickerYearsProps = propsFactory({\n color: String,\n height: [String, Number],\n min: null,\n max: null,\n modelValue: Number\n}, 'VDatePickerYears');\nexport const VDatePickerYears = genericComponent()({\n name: 'VDatePickerYears',\n props: makeVDatePickerYearsProps(),\n emits: {\n 'update:modelValue': year => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const adapter = useDate();\n const model = useProxiedModel(props, 'modelValue');\n const years = computed(() => {\n const year = adapter.getYear(adapter.date());\n let min = year - 100;\n let max = year + 52;\n if (props.min) {\n min = adapter.getYear(adapter.date(props.min));\n }\n if (props.max) {\n max = adapter.getYear(adapter.date(props.max));\n }\n let date = adapter.startOfYear(adapter.date());\n date = adapter.setYear(date, min);\n return createRange(max - min + 1, min).map(i => {\n const text = adapter.format(date, 'year');\n date = adapter.setYear(date, adapter.getYear(date) + 1);\n return {\n text,\n value: i\n };\n });\n });\n watchEffect(() => {\n model.value = model.value ?? adapter.getYear(adapter.date());\n });\n const yearRef = templateRef();\n onMounted(async () => {\n await nextTick();\n yearRef.el?.scrollIntoView({\n block: 'center'\n });\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": \"v-date-picker-years\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"div\", {\n \"class\": \"v-date-picker-years__content\"\n }, [years.value.map((year, i) => {\n const btnProps = {\n ref: model.value === year.value ? yearRef : undefined,\n active: model.value === year.value,\n color: model.value === year.value ? props.color : undefined,\n rounded: true,\n text: year.text,\n variant: model.value === year.value ? 'flat' : 'text',\n onClick: () => {\n if (model.value === year.value) {\n emit('update:modelValue', model.value);\n return;\n }\n model.value = year.value;\n }\n };\n return slots.year?.({\n year,\n i,\n props: btnProps\n }) ?? _createVNode(VBtn, _mergeProps({\n \"key\": \"month\"\n }, btnProps), null);\n })])]));\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerYears.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VPickerTitle = createSimpleFunctional('v-picker-title');\n//# sourceMappingURL=VPickerTitle.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VPicker.css\";\n\n// Components\nimport { VPickerTitle } from \"./VPickerTitle.mjs\";\nimport { VDefaultsProvider } from \"../../components/VDefaultsProvider/VDefaultsProvider.mjs\";\nimport { makeVSheetProps, VSheet } from \"../../components/VSheet/VSheet.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVPickerProps = propsFactory({\n bgColor: String,\n landscape: Boolean,\n title: String,\n hideHeader: Boolean,\n ...makeVSheetProps()\n}, 'VPicker');\nexport const VPicker = genericComponent()({\n name: 'VPicker',\n props: makeVPickerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n useRender(() => {\n const sheetProps = VSheet.filterProps(props);\n const hasTitle = !!(props.title || slots.title);\n return _createVNode(VSheet, _mergeProps(sheetProps, {\n \"color\": props.bgColor,\n \"class\": ['v-picker', {\n 'v-picker--landscape': props.landscape,\n 'v-picker--with-actions': !!slots.actions\n }, props.class],\n \"style\": props.style\n }), {\n default: () => [!props.hideHeader && _createVNode(\"div\", {\n \"key\": \"header\",\n \"class\": [backgroundColorClasses.value],\n \"style\": [backgroundColorStyles.value]\n }, [hasTitle && _createVNode(VPickerTitle, {\n \"key\": \"picker-title\"\n }, {\n default: () => [slots.title?.() ?? props.title]\n }), slots.header && _createVNode(\"div\", {\n \"class\": \"v-picker__header\"\n }, [slots.header()])]), _createVNode(\"div\", {\n \"class\": \"v-picker__body\"\n }, [slots.default?.()]), slots.actions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n slim: true,\n variant: 'text'\n }\n }\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-picker__actions\"\n }, [slots.actions()])]\n })]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VPicker.mjs.map","import { Fragment as _Fragment, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDatePicker.css\";\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from \"./VDatePickerControls.mjs\";\nimport { VDatePickerHeader } from \"./VDatePickerHeader.mjs\";\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from \"./VDatePickerMonth.mjs\";\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from \"./VDatePickerMonths.mjs\";\nimport { makeVDatePickerYearsProps, VDatePickerYears } from \"./VDatePickerYears.mjs\";\nimport { VFadeTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { makeVPickerProps, VPicker } from \"../../labs/VPicker/VPicker.mjs\"; // Composables\nimport { useDate } from \"../../composables/date/index.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref, shallowRef, watch } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVDatePickerProps = propsFactory({\n // TODO: implement in v3.5\n // calendarIcon: {\n // type: String,\n // default: '$calendar',\n // },\n // keyboardIcon: {\n // type: String,\n // default: '$edit',\n // },\n // inputMode: {\n // type: String as PropType<'calendar' | 'keyboard'>,\n // default: 'calendar',\n // },\n // inputText: {\n // type: String,\n // default: '$vuetify.datePicker.input.placeholder',\n // },\n // inputPlaceholder: {\n // type: String,\n // default: 'dd/mm/yyyy',\n // },\n header: {\n type: String,\n default: '$vuetify.datePicker.header'\n },\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps({\n weeksInMonth: 'static'\n }),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({\n title: '$vuetify.datePicker.title'\n }),\n modelValue: null\n}, 'VDatePicker');\nexport const VDatePicker = genericComponent()({\n name: 'VDatePicker',\n props: makeVDatePickerProps(),\n emits: {\n 'update:modelValue': date => true,\n 'update:month': date => true,\n 'update:year': date => true,\n // 'update:inputMode': (date: any) => true,\n 'update:viewMode': date => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const adapter = useDate();\n const {\n t\n } = useLocale();\n const model = useProxiedModel(props, 'modelValue', undefined, v => wrapInArray(v), v => props.multiple ? v : v[0]);\n const viewMode = useProxiedModel(props, 'viewMode');\n // const inputMode = useProxiedModel(props, 'inputMode')\n const internal = computed(() => {\n const value = adapter.date(model.value?.[0]);\n return value && adapter.isValid(value) ? value : adapter.date();\n });\n const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));\n const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));\n const isReversing = shallowRef(false);\n const header = computed(() => {\n if (props.multiple && model.value.length > 1) {\n return t('$vuetify.datePicker.itemsSelected', model.value.length);\n }\n return model.value[0] && adapter.isValid(model.value[0]) ? adapter.format(adapter.date(model.value[0]), 'normalDateWithWeekday') : t(props.header);\n });\n const text = computed(() => {\n let date = adapter.date();\n date = adapter.setDate(date, 1);\n date = adapter.setMonth(date, month.value);\n date = adapter.setYear(date, year.value);\n return adapter.format(date, 'monthAndYear');\n });\n // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);\n const minDate = computed(() => {\n const date = adapter.date(props.min);\n return props.min && adapter.isValid(date) ? date : null;\n });\n const maxDate = computed(() => {\n const date = adapter.date(props.max);\n return props.max && adapter.isValid(date) ? date : null;\n });\n const disabled = computed(() => {\n if (props.disabled) return true;\n const targets = [];\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next']);\n } else {\n let _date = adapter.date();\n _date = adapter.setYear(_date, year.value);\n _date = adapter.setMonth(_date, month.value);\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1);\n adapter.isAfter(minDate.value, date) && targets.push('prev');\n }\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1);\n adapter.isAfter(date, maxDate.value) && targets.push('next');\n }\n }\n return targets;\n });\n\n // function onClickAppend () {\n // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n // }\n\n function onClickNext() {\n if (month.value < 11) {\n month.value++;\n } else {\n year.value++;\n month.value = 0;\n onUpdateYear(year.value);\n }\n onUpdateMonth(month.value);\n }\n function onClickPrev() {\n if (month.value > 0) {\n month.value--;\n } else {\n year.value--;\n month.value = 11;\n onUpdateYear(year.value);\n }\n onUpdateMonth(month.value);\n }\n function onClickDate() {\n viewMode.value = 'month';\n }\n function onClickMonth() {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months';\n }\n function onClickYear() {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year';\n }\n function onUpdateMonth(value) {\n if (viewMode.value === 'months') onClickMonth();\n emit('update:month', value);\n }\n function onUpdateYear(value) {\n if (viewMode.value === 'year') onClickYear();\n emit('update:year', value);\n }\n watch(model, (val, oldVal) => {\n const arrBefore = wrapInArray(oldVal);\n const arrAfter = wrapInArray(val);\n if (!arrAfter.length) return;\n const before = adapter.date(arrBefore[arrBefore.length - 1]);\n const after = adapter.date(arrAfter[arrAfter.length - 1]);\n const newMonth = adapter.getMonth(after);\n const newYear = adapter.getYear(after);\n if (newMonth !== month.value) {\n month.value = newMonth;\n onUpdateMonth(month.value);\n }\n if (newYear !== year.value) {\n year.value = newYear;\n onUpdateYear(year.value);\n }\n isReversing.value = adapter.isBefore(before, after);\n });\n useRender(() => {\n const pickerProps = VPicker.filterProps(props);\n const datePickerControlsProps = VDatePickerControls.filterProps(props);\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props);\n const datePickerMonthProps = VDatePickerMonth.filterProps(props);\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue']);\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue']);\n const headerProps = {\n header: header.value,\n transition: headerTransition.value\n };\n return _createVNode(VPicker, _mergeProps(pickerProps, {\n \"class\": ['v-date-picker', `v-date-picker--${viewMode.value}`, {\n 'v-date-picker--show-week': props.showWeek\n }, props.class],\n \"style\": props.style\n }), {\n title: () => slots.title?.() ?? _createVNode(\"div\", {\n \"class\": \"v-date-picker__title\"\n }, [t(props.title)]),\n header: () => slots.header ? _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VDatePickerHeader: {\n ...headerProps\n }\n }\n }, {\n default: () => [slots.header?.(headerProps)]\n }) : _createVNode(VDatePickerHeader, _mergeProps({\n \"key\": \"header\"\n }, datePickerHeaderProps, headerProps, {\n \"onClick\": viewMode.value !== 'month' ? onClickDate : undefined\n }), {\n ...slots,\n default: undefined\n }),\n default: () => _createVNode(_Fragment, null, [_createVNode(VDatePickerControls, _mergeProps(datePickerControlsProps, {\n \"disabled\": disabled.value,\n \"text\": text.value,\n \"onClick:next\": onClickNext,\n \"onClick:prev\": onClickPrev,\n \"onClick:month\": onClickMonth,\n \"onClick:year\": onClickYear\n }), null), _createVNode(VFadeTransition, {\n \"hideOnLeave\": true\n }, {\n default: () => [viewMode.value === 'months' ? _createVNode(VDatePickerMonths, _mergeProps({\n \"key\": \"date-picker-months\"\n }, datePickerMonthsProps, {\n \"modelValue\": month.value,\n \"onUpdate:modelValue\": [$event => month.value = $event, onUpdateMonth],\n \"min\": minDate.value,\n \"max\": maxDate.value,\n \"year\": year.value\n }), null) : viewMode.value === 'year' ? _createVNode(VDatePickerYears, _mergeProps({\n \"key\": \"date-picker-years\"\n }, datePickerYearsProps, {\n \"modelValue\": year.value,\n \"onUpdate:modelValue\": [$event => year.value = $event, onUpdateYear],\n \"min\": minDate.value,\n \"max\": maxDate.value\n }), null) : _createVNode(VDatePickerMonth, _mergeProps({\n \"key\": \"date-picker-month\"\n }, datePickerMonthProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"month\": month.value,\n \"onUpdate:month\": [$event => month.value = $event, onUpdateMonth],\n \"year\": year.value,\n \"onUpdate:year\": [$event => year.value = $event, onUpdateYear],\n \"min\": minDate.value,\n \"max\": maxDate.value\n }), null)]\n })]),\n actions: slots.actions\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VDatePicker.mjs.map","import { createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VEmptyState.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useDisplay } from \"../../composables/display.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVEmptyStateProps = propsFactory({\n actionText: String,\n bgColor: String,\n color: String,\n icon: IconValue,\n image: String,\n justify: {\n type: String,\n default: 'center'\n },\n headline: String,\n title: String,\n text: String,\n textWidth: {\n type: [Number, String],\n default: 500\n },\n href: String,\n to: String,\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeSizeProps({\n size: undefined\n }),\n ...makeThemeProps()\n}, 'VEmptyState');\nexport const VEmptyState = genericComponent()({\n name: 'VEmptyState',\n props: makeVEmptyStateProps(),\n emits: {\n 'click:action': e => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n displayClasses\n } = useDisplay();\n function onClickAction(e) {\n emit('click:action', e);\n }\n useRender(() => {\n const hasActions = !!(slots.actions || props.actionText);\n const hasHeadline = !!(slots.headline || props.headline);\n const hasTitle = !!(slots.title || props.title);\n const hasText = !!(slots.text || props.text);\n const hasMedia = !!(slots.media || props.image || props.icon);\n const size = props.size || (props.image ? 200 : 96);\n return _createVNode(\"div\", {\n \"class\": ['v-empty-state', {\n [`v-empty-state--${props.justify}`]: true\n }, themeClasses.value, backgroundColorClasses.value, displayClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, props.style]\n }, [hasMedia && _createVNode(\"div\", {\n \"key\": \"media\",\n \"class\": \"v-empty-state__media\"\n }, [!slots.media ? _createVNode(_Fragment, null, [props.image ? _createVNode(VImg, {\n \"key\": \"image\",\n \"src\": props.image,\n \"height\": size\n }, null) : props.icon ? _createVNode(VIcon, {\n \"key\": \"icon\",\n \"color\": props.color,\n \"size\": size,\n \"icon\": props.icon\n }, null) : undefined]) : _createVNode(VDefaultsProvider, {\n \"key\": \"media-defaults\",\n \"defaults\": {\n VImg: {\n src: props.image,\n height: size\n },\n VIcon: {\n size,\n icon: props.icon\n }\n }\n }, {\n default: () => [slots.media()]\n })]), hasHeadline && _createVNode(\"div\", {\n \"key\": \"headline\",\n \"class\": \"v-empty-state__headline\"\n }, [slots.headline?.() ?? props.headline]), hasTitle && _createVNode(\"div\", {\n \"key\": \"title\",\n \"class\": \"v-empty-state__title\"\n }, [slots.title?.() ?? props.title]), hasText && _createVNode(\"div\", {\n \"key\": \"text\",\n \"class\": \"v-empty-state__text\",\n \"style\": {\n maxWidth: convertToUnit(props.textWidth)\n }\n }, [slots.text?.() ?? props.text]), slots.default && _createVNode(\"div\", {\n \"key\": \"content\",\n \"class\": \"v-empty-state__content\"\n }, [slots.default()]), hasActions && _createVNode(\"div\", {\n \"key\": \"actions\",\n \"class\": \"v-empty-state__actions\"\n }, [_createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n class: 'v-empty-state__action-btn',\n color: props.color ?? 'surface-variant',\n text: props.actionText\n }\n }\n }, {\n default: () => [slots.actions?.({\n props: {\n onClick: onClickAction\n }\n }) ?? _createVNode(VBtn, {\n \"onClick\": onClickAction\n }, null)]\n })])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VEmptyState.mjs.map","// Types\n\nexport const VExpansionPanelSymbol = Symbol.for('vuetify:v-expansion-panel');\n//# sourceMappingURL=shared.mjs.map","import { withDirectives as _withDirectives, vShow as _vShow, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { VExpandTransition } from \"../transitions/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.mjs\"; // Utilities\nimport { inject } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVExpansionPanelTextProps = propsFactory({\n ...makeComponentProps(),\n ...makeLazyProps()\n}, 'VExpansionPanelText');\nexport const VExpansionPanelText = genericComponent()({\n name: 'VExpansionPanelText',\n props: makeVExpansionPanelTextProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const expansionPanel = inject(VExpansionPanelSymbol);\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel');\n const {\n hasContent,\n onAfterLeave\n } = useLazy(props, expansionPanel.isSelected);\n useRender(() => _createVNode(VExpandTransition, {\n \"onAfterLeave\": onAfterLeave\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": ['v-expansion-panel-text', props.class],\n \"style\": props.style\n }, [slots.default && hasContent.value && _createVNode(\"div\", {\n \"class\": \"v-expansion-panel-text__wrapper\"\n }, [slots.default?.()])]), [[_vShow, expansionPanel.isSelected.value]])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VExpansionPanelText.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: IconValue,\n default: '$expand'\n },\n collapseIcon: {\n type: IconValue,\n default: '$collapse'\n },\n hideActions: Boolean,\n focusable: Boolean,\n static: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false\n },\n readonly: Boolean,\n ...makeComponentProps(),\n ...makeDimensionProps()\n}, 'VExpansionPanelTitle');\nexport const VExpansionPanelTitle = genericComponent()({\n name: 'VExpansionPanelTitle',\n directives: {\n Ripple\n },\n props: makeVExpansionPanelTitleProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const expansionPanel = inject(VExpansionPanelSymbol);\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel');\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'color');\n const {\n dimensionStyles\n } = useDimension(props);\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n readonly: props.readonly\n }));\n const icon = computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);\n useRender(() => _withDirectives(_createVNode(\"button\", {\n \"class\": ['v-expansion-panel-title', {\n 'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n 'v-expansion-panel-title--focusable': props.focusable,\n 'v-expansion-panel-title--static': props.static\n }, backgroundColorClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, props.style],\n \"type\": \"button\",\n \"tabindex\": expansionPanel.disabled.value ? -1 : undefined,\n \"disabled\": expansionPanel.disabled.value,\n \"aria-expanded\": expansionPanel.isSelected.value,\n \"onClick\": !props.readonly ? expansionPanel.toggle : undefined\n }, [_createVNode(\"span\", {\n \"class\": \"v-expansion-panel-title__overlay\"\n }, null), slots.default?.(slotProps.value), !props.hideActions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VIcon: {\n icon: icon.value\n }\n }\n }, {\n default: () => [_createVNode(\"span\", {\n \"class\": \"v-expansion-panel-title__icon\"\n }, [slots.actions?.(slotProps.value) ?? _createVNode(VIcon, null, null)])]\n })]), [[_resolveDirective(\"ripple\"), props.ripple]]));\n return {};\n }\n});\n//# sourceMappingURL=VExpansionPanelTitle.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { makeVExpansionPanelTextProps, VExpansionPanelText } from \"./VExpansionPanelText.mjs\";\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from \"./VExpansionPanelTitle.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, provide } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVExpansionPanelProps = propsFactory({\n title: String,\n text: String,\n bgColor: String,\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeVExpansionPanelTitleProps(),\n ...makeVExpansionPanelTextProps()\n}, 'VExpansionPanel');\nexport const VExpansionPanel = genericComponent()({\n name: 'VExpansionPanel',\n props: makeVExpansionPanelProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const groupItem = useGroupItem(props, VExpansionPanelSymbol);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'bgColor');\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const isDisabled = computed(() => groupItem?.disabled.value || props.disabled);\n const selectedIndices = computed(() => groupItem.group.items.value.reduce((arr, item, index) => {\n if (groupItem.group.selected.value.includes(item.id)) arr.push(index);\n return arr;\n }, []));\n const isBeforeSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);\n return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === 1);\n });\n const isAfterSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);\n return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === -1);\n });\n provide(VExpansionPanelSymbol, groupItem);\n useRender(() => {\n const hasText = !!(slots.text || props.text);\n const hasTitle = !!(slots.title || props.title);\n const expansionPanelTitleProps = VExpansionPanelTitle.filterProps(props);\n const expansionPanelTextProps = VExpansionPanelText.filterProps(props);\n return _createVNode(props.tag, {\n \"class\": ['v-expansion-panel', {\n 'v-expansion-panel--active': groupItem.isSelected.value,\n 'v-expansion-panel--before-active': isBeforeSelected.value,\n 'v-expansion-panel--after-active': isAfterSelected.value,\n 'v-expansion-panel--disabled': isDisabled.value\n }, roundedClasses.value, backgroundColorClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, props.style]\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": ['v-expansion-panel__shadow', ...elevationClasses.value]\n }, null), _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VExpansionPanelTitle: {\n ...expansionPanelTitleProps\n },\n VExpansionPanelText: {\n ...expansionPanelTextProps\n }\n }\n }, {\n default: () => [hasTitle && _createVNode(VExpansionPanelTitle, {\n \"key\": \"title\"\n }, {\n default: () => [slots.title ? slots.title() : props.title]\n }), hasText && _createVNode(VExpansionPanelText, {\n \"key\": \"text\"\n }, {\n default: () => [slots.text ? slots.text() : props.text]\n }), slots.default?.()]\n })]\n });\n });\n return {\n groupItem\n };\n }\n});\n//# sourceMappingURL=VExpansionPanel.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VExpansionPanel.css\";\n\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { makeVExpansionPanelProps } from \"./VExpansionPanel.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, pick, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'];\nexport const makeVExpansionPanelsProps = propsFactory({\n flat: Boolean,\n ...makeGroupProps(),\n ...pick(makeVExpansionPanelProps(), ['bgColor', 'collapseIcon', 'color', 'eager', 'elevation', 'expandIcon', 'focusable', 'hideActions', 'readonly', 'ripple', 'rounded', 'tile', 'static']),\n ...makeThemeProps(),\n ...makeComponentProps(),\n ...makeTagProps(),\n variant: {\n type: String,\n default: 'default',\n validator: v => allowedVariants.includes(v)\n }\n}, 'VExpansionPanels');\nexport const VExpansionPanels = genericComponent()({\n name: 'VExpansionPanels',\n props: makeVExpansionPanelsProps(),\n emits: {\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n next,\n prev\n } = useGroup(props, VExpansionPanelSymbol);\n const {\n themeClasses\n } = provideTheme(props);\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);\n provideDefaults({\n VExpansionPanel: {\n bgColor: toRef(props, 'bgColor'),\n collapseIcon: toRef(props, 'collapseIcon'),\n color: toRef(props, 'color'),\n eager: toRef(props, 'eager'),\n elevation: toRef(props, 'elevation'),\n expandIcon: toRef(props, 'expandIcon'),\n focusable: toRef(props, 'focusable'),\n hideActions: toRef(props, 'hideActions'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n rounded: toRef(props, 'rounded'),\n static: toRef(props, 'static')\n }\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-expansion-panels', {\n 'v-expansion-panels--flat': props.flat,\n 'v-expansion-panels--tile': props.tile\n }, themeClasses.value, variantClass.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.default?.({\n prev,\n next\n })]\n }));\n return {\n next,\n prev\n };\n }\n});\n//# sourceMappingURL=VExpansionPanels.mjs.map","import { withDirectives as _withDirectives, createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, vShow as _vShow } from \"vue\";\n// Styles\nimport \"./VFab.css\";\n\n// Components\nimport { makeVBtnProps, VBtn } from \"../VBtn/VBtn.mjs\"; // Composables\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { makeLocationProps } from \"../../composables/location.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVFabProps = propsFactory({\n app: Boolean,\n appear: Boolean,\n extended: Boolean,\n layout: Boolean,\n offset: Boolean,\n modelValue: {\n type: Boolean,\n default: true\n },\n ...omit(makeVBtnProps({\n active: true\n }), ['location']),\n ...makeLayoutItemProps(),\n ...makeLocationProps(),\n ...makeTransitionProps({\n transition: 'fab-transition'\n })\n}, 'VFab');\nexport const VFab = genericComponent()({\n name: 'VFab',\n props: makeVFabProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const height = shallowRef(56);\n const layoutItemStyles = ref();\n const {\n resizeRef\n } = useResizeObserver(entries => {\n if (!entries.length) return;\n height.value = entries[0].target.clientHeight;\n });\n const hasPosition = computed(() => props.app || props.absolute);\n const position = computed(() => {\n if (!hasPosition.value) return false;\n return props.location?.split(' ').shift() ?? 'bottom';\n });\n const orientation = computed(() => {\n if (!hasPosition.value) return false;\n return props.location?.split(' ')[1] ?? 'end';\n });\n useToggleScope(() => props.app, () => {\n const layout = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position,\n layoutSize: computed(() => props.layout ? height.value + 24 : 0),\n elementSize: computed(() => height.value + 24),\n active: computed(() => props.app && model.value),\n absolute: toRef(props, 'absolute')\n });\n watchEffect(() => {\n layoutItemStyles.value = layout.layoutItemStyles.value;\n });\n });\n const vFabRef = ref();\n useRender(() => {\n const btnProps = VBtn.filterProps(props);\n return _createVNode(\"div\", {\n \"ref\": vFabRef,\n \"class\": ['v-fab', {\n 'v-fab--absolute': props.absolute,\n 'v-fab--app': !!props.app,\n 'v-fab--extended': props.extended,\n 'v-fab--offset': props.offset,\n [`v-fab--${position.value}`]: hasPosition.value,\n [`v-fab--${orientation.value}`]: hasPosition.value\n }, props.class],\n \"style\": [props.app ? {\n ...layoutItemStyles.value\n } : {\n height: 'inherit',\n width: undefined\n }, props.style]\n }, [_createVNode(\"div\", {\n \"class\": \"v-fab__container\"\n }, [_createVNode(MaybeTransition, {\n \"appear\": props.appear,\n \"transition\": props.transition\n }, {\n default: () => [_withDirectives(_createVNode(VBtn, _mergeProps({\n \"ref\": resizeRef\n }, btnProps, {\n \"active\": undefined,\n \"location\": undefined\n }), slots), [[_vShow, props.active]])]\n })])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VFab.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode, mergeProps as _mergeProps, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VFileInput.css\";\n\n// Components\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VCounter } from \"../VCounter/index.mjs\";\nimport { VField } from \"../VField/index.mjs\";\nimport { filterFieldProps, makeVFieldProps } from \"../VField/VField.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { callEvent, filterInputAttrs, genericComponent, humanReadableFileSize, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize'\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter'\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String],\n default: false,\n validator: v => {\n return typeof v === 'boolean' || [1000, 1024].includes(Number(v));\n }\n },\n ...makeVInputProps({\n prependIcon: '$file'\n }),\n modelValue: {\n type: [Array, Object],\n default: props => props.multiple ? [] : null,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object');\n }\n },\n ...makeVFieldProps({\n clearable: true\n })\n}, 'VFileInput');\nexport const VFileInput = genericComponent()({\n name: 'VFileInput',\n inheritAttrs: false,\n props: makeVFileInputProps(),\n emits: {\n 'click:control': e => true,\n 'mousedown:control': e => true,\n 'update:focused': focused => true,\n 'update:modelValue': files => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => !props.multiple && Array.isArray(val) ? val[0] : val);\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined);\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, _ref2) => {\n let {\n size = 0\n } = _ref2;\n return bytes + size;\n }, 0));\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value));\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const {\n name = '',\n size = 0\n } = file;\n return !props.showSize ? name : `${name} (${humanReadableFileSize(size, base.value)})`;\n }));\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0;\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value);else return t(props.counterString, fileCount);\n });\n const vInputRef = ref();\n const vFieldRef = ref();\n const inputRef = ref();\n const isActive = computed(() => isFocused.value || props.active);\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n function onFocus() {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus();\n }\n if (!isFocused.value) focus();\n }\n function onClickPrepend(e) {\n inputRef.value?.click();\n }\n function onControlMousedown(e) {\n emit('mousedown:control', e);\n }\n function onControlClick(e) {\n inputRef.value?.click();\n emit('click:control', e);\n }\n function onClear(e) {\n e.stopPropagation();\n onFocus();\n nextTick(() => {\n model.value = [];\n callEvent(props['onClick:clear'], e);\n });\n }\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length;\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = '';\n }\n });\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter);\n const hasDetails = !!(hasCounter || slots.details);\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const {\n modelValue: _,\n ...inputProps\n } = VInput.filterProps(props);\n const fieldProps = filterFieldProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": vInputRef,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-file-input', {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value\n }, props.class],\n \"style\": props.style,\n \"onClick:prepend\": onClickPrepend\n }, rootAttrs, inputProps, {\n \"centerAffix\": !isPlainOrUnderlined.value,\n \"focused\": isFocused.value\n }), {\n ...slots,\n default: _ref3 => {\n let {\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid\n } = _ref3;\n return _createVNode(VField, _mergeProps({\n \"ref\": vFieldRef,\n \"prepend-icon\": props.prependIcon,\n \"onMousedown\": onControlMousedown,\n \"onClick\": onControlClick,\n \"onClick:clear\": onClear,\n \"onClick:prependInner\": props['onClick:prependInner'],\n \"onClick:appendInner\": props['onClick:appendInner']\n }, fieldProps, {\n \"id\": id.value,\n \"active\": isActive.value || isDirty.value,\n \"dirty\": isDirty.value || props.dirty,\n \"disabled\": isDisabled.value,\n \"focused\": isFocused.value,\n \"error\": isValid.value === false\n }), {\n ...slots,\n default: _ref4 => {\n let {\n props: {\n class: fieldClass,\n ...slotProps\n }\n } = _ref4;\n return _createVNode(_Fragment, null, [_createVNode(\"input\", _mergeProps({\n \"ref\": inputRef,\n \"type\": \"file\",\n \"readonly\": isReadonly.value,\n \"disabled\": isDisabled.value,\n \"multiple\": props.multiple,\n \"name\": props.name,\n \"onClick\": e => {\n e.stopPropagation();\n if (isReadonly.value) e.preventDefault();\n onFocus();\n },\n \"onChange\": e => {\n if (!e.target) return;\n const target = e.target;\n model.value = [...(target.files ?? [])];\n },\n \"onFocus\": onFocus,\n \"onBlur\": blur\n }, slotProps, inputAttrs), null), _createVNode(\"div\", {\n \"class\": fieldClass\n }, [!!model.value?.length && !props.hideInput && (slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value\n }) : props.chips ? fileNames.value.map(text => _createVNode(VChip, {\n \"key\": text,\n \"size\": \"small\",\n \"text\": text\n }, null)) : fileNames.value.join(', '))])]);\n }\n });\n },\n details: hasDetails ? slotProps => _createVNode(_Fragment, null, [slots.details?.(slotProps), hasCounter && _createVNode(_Fragment, null, [_createVNode(\"span\", null, null), _createVNode(VCounter, {\n \"active\": !!model.value?.length,\n \"value\": counterValue.value,\n \"disabled\": props.disabled\n }, slots.counter)])]) : undefined\n });\n });\n return forwardRefs({}, vInputRef, vFieldRef, inputRef);\n }\n});\n//# sourceMappingURL=VFileInput.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { createForm, makeFormProps } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\"; // Utilities\nimport { ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVFormProps = propsFactory({\n ...makeComponentProps(),\n ...makeFormProps()\n}, 'VForm');\nexport const VForm = genericComponent()({\n name: 'VForm',\n props: makeVFormProps(),\n emits: {\n 'update:modelValue': val => true,\n submit: e => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const form = createForm(props);\n const formRef = ref();\n function onReset(e) {\n e.preventDefault();\n form.reset();\n }\n function onSubmit(_e) {\n const e = _e;\n const ready = form.validate();\n e.then = ready.then.bind(ready);\n e.catch = ready.catch.bind(ready);\n e.finally = ready.finally.bind(ready);\n emit('submit', e);\n if (!e.defaultPrevented) {\n ready.then(_ref2 => {\n let {\n valid\n } = _ref2;\n if (valid) {\n formRef.value?.submit();\n }\n });\n }\n e.preventDefault();\n }\n useRender(() => _createVNode(\"form\", {\n \"ref\": formRef,\n \"class\": ['v-form', props.class],\n \"style\": props.style,\n \"novalidate\": true,\n \"onReset\": onReset,\n \"onSubmit\": onSubmit\n }, [slots.default?.(form)]));\n return forwardRefs(form, formRef);\n }\n});\n//# sourceMappingURL=VForm.mjs.map","// Composables\nimport { makeDelayProps, useDelay } from \"../../composables/delay.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\";\nexport const makeVHoverProps = propsFactory({\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: null\n },\n ...makeDelayProps()\n}, 'VHover');\nexport const VHover = genericComponent()({\n name: 'VHover',\n props: makeVHoverProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isHovering = useProxiedModel(props, 'modelValue');\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => !props.disabled && (isHovering.value = value));\n return () => slots.default?.({\n isHovering: isHovering.value,\n props: {\n onMouseenter: runOpenDelay,\n onMouseleave: runCloseDelay\n }\n });\n }\n});\n//# sourceMappingURL=VHover.mjs.map","import { createVNode as _createVNode, createTextVNode as _createTextVNode } from \"vue\";\n// Styles\nimport \"./VInfiniteScroll.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VProgressCircular } from \"../VProgressCircular/index.mjs\"; // Composables\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useIntersectionObserver } from \"../../composables/intersectionObserver.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, watch } from 'vue';\nimport { convertToUnit, defineComponent, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVInfiniteScrollProps = propsFactory({\n color: String,\n direction: {\n type: String,\n default: 'vertical',\n validator: v => ['vertical', 'horizontal'].includes(v)\n },\n side: {\n type: String,\n default: 'end',\n validator: v => ['start', 'end', 'both'].includes(v)\n },\n mode: {\n type: String,\n default: 'intersect',\n validator: v => ['intersect', 'manual'].includes(v)\n },\n margin: [Number, String],\n loadMoreText: {\n type: String,\n default: '$vuetify.infiniteScroll.loadMore'\n },\n emptyText: {\n type: String,\n default: '$vuetify.infiniteScroll.empty'\n },\n ...makeDimensionProps(),\n ...makeTagProps()\n}, 'VInfiniteScroll');\nexport const VInfiniteScrollIntersect = defineComponent({\n name: 'VInfiniteScrollIntersect',\n props: {\n side: {\n type: String,\n required: true\n },\n rootMargin: String\n },\n emits: {\n intersect: (side, isIntersecting) => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const {\n intersectionRef,\n isIntersecting\n } = useIntersectionObserver();\n watch(isIntersecting, async val => {\n emit('intersect', props.side, val);\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": \"v-infinite-scroll-intersect\",\n \"style\": {\n '--v-infinite-margin-size': props.rootMargin\n },\n \"ref\": intersectionRef\n }, [_createTextVNode(\"\\xA0\")]));\n return {};\n }\n});\nexport const VInfiniteScroll = genericComponent()({\n name: 'VInfiniteScroll',\n props: makeVInfiniteScrollProps(),\n emits: {\n load: options => true\n },\n setup(props, _ref2) {\n let {\n slots,\n emit\n } = _ref2;\n const rootEl = ref();\n const startStatus = shallowRef('ok');\n const endStatus = shallowRef('ok');\n const margin = computed(() => convertToUnit(props.margin));\n const isIntersecting = shallowRef(false);\n function setScrollAmount(amount) {\n if (!rootEl.value) return;\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n rootEl.value[property] = amount;\n }\n function getScrollAmount() {\n if (!rootEl.value) return 0;\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n return rootEl.value[property];\n }\n function getScrollSize() {\n if (!rootEl.value) return 0;\n const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';\n return rootEl.value[property];\n }\n function getContainerSize() {\n if (!rootEl.value) return 0;\n const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth';\n return rootEl.value[property];\n }\n onMounted(() => {\n if (!rootEl.value) return;\n if (props.side === 'start') {\n setScrollAmount(getScrollSize());\n } else if (props.side === 'both') {\n setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2);\n }\n });\n function setStatus(side, status) {\n if (side === 'start') {\n startStatus.value = status;\n } else if (side === 'end') {\n endStatus.value = status;\n }\n }\n function getStatus(side) {\n return side === 'start' ? startStatus.value : endStatus.value;\n }\n let previousScrollSize = 0;\n function handleIntersect(side, _isIntersecting) {\n isIntersecting.value = _isIntersecting;\n if (isIntersecting.value) {\n intersecting(side);\n }\n }\n function intersecting(side) {\n if (props.mode !== 'manual' && !isIntersecting.value) return;\n const status = getStatus(side);\n if (!rootEl.value || ['empty', 'loading'].includes(status)) return;\n previousScrollSize = getScrollSize();\n setStatus(side, 'loading');\n function done(status) {\n setStatus(side, status);\n nextTick(() => {\n if (status === 'empty' || status === 'error') return;\n if (status === 'ok' && side === 'start') {\n setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());\n }\n if (props.mode !== 'manual') {\n nextTick(() => {\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n intersecting(side);\n });\n });\n });\n });\n }\n });\n }\n emit('load', {\n side,\n done\n });\n }\n const {\n t\n } = useLocale();\n function renderSide(side, status) {\n if (props.side !== side && props.side !== 'both') return;\n const onClick = () => intersecting(side);\n const slotProps = {\n side,\n props: {\n onClick,\n color: props.color\n }\n };\n if (status === 'error') return slots.error?.(slotProps);\n if (status === 'empty') return slots.empty?.(slotProps) ?? _createVNode(\"div\", null, [t(props.emptyText)]);\n if (props.mode === 'manual') {\n if (status === 'loading') {\n return slots.loading?.(slotProps) ?? _createVNode(VProgressCircular, {\n \"indeterminate\": true,\n \"color\": props.color\n }, null);\n }\n return slots['load-more']?.(slotProps) ?? _createVNode(VBtn, {\n \"variant\": \"outlined\",\n \"color\": props.color,\n \"onClick\": onClick\n }, {\n default: () => [t(props.loadMoreText)]\n });\n }\n return slots.loading?.(slotProps) ?? _createVNode(VProgressCircular, {\n \"indeterminate\": true,\n \"color\": props.color\n }, null);\n }\n const {\n dimensionStyles\n } = useDimension(props);\n useRender(() => {\n const Tag = props.tag;\n const hasStartIntersect = props.side === 'start' || props.side === 'both';\n const hasEndIntersect = props.side === 'end' || props.side === 'both';\n const intersectMode = props.mode === 'intersect';\n return _createVNode(Tag, {\n \"ref\": rootEl,\n \"class\": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {\n 'v-infinite-scroll--start': hasStartIntersect,\n 'v-infinite-scroll--end': hasEndIntersect\n }],\n \"style\": dimensionStyles.value\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-infinite-scroll__side\"\n }, [renderSide('start', startStatus.value)]), hasStartIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {\n \"key\": \"start\",\n \"side\": \"start\",\n \"onIntersect\": handleIntersect,\n \"rootMargin\": margin.value\n }, null), slots.default?.(), hasEndIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {\n \"key\": \"end\",\n \"side\": \"end\",\n \"onIntersect\": handleIntersect,\n \"rootMargin\": margin.value\n }, null), _createVNode(\"div\", {\n \"class\": \"v-infinite-scroll__side\"\n }, [renderSide('end', endStatus.value)])]\n });\n });\n }\n});\n//# sourceMappingURL=VInfiniteScroll.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VItemGroup.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');\nexport const makeVItemGroupProps = propsFactory({\n ...makeComponentProps(),\n ...makeGroupProps({\n selectedClass: 'v-item--selected'\n }),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VItemGroup');\nexport const VItemGroup = genericComponent()({\n name: 'VItemGroup',\n props: makeVItemGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n isSelected,\n select,\n next,\n prev,\n selected\n } = useGroup(props, VItemGroupSymbol);\n return () => _createVNode(props.tag, {\n \"class\": ['v-item-group', themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value\n })]\n });\n }\n});\n//# sourceMappingURL=VItemGroup.mjs.map","// Composables\nimport { VItemGroupSymbol } from \"./VItemGroup.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\"; // Utilities\nimport { genericComponent } from \"../../util/index.mjs\";\nexport const VItem = genericComponent()({\n name: 'VItem',\n props: makeGroupItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n isSelected,\n select,\n toggle,\n selectedClass,\n value,\n disabled\n } = useGroupItem(props, VItemGroupSymbol);\n return () => slots.default?.({\n isSelected: isSelected.value,\n selectedClass: selectedClass.value,\n select,\n toggle,\n value: value.value,\n disabled: disabled.value\n });\n }\n});\n//# sourceMappingURL=VItem.mjs.map","// Styles\nimport \"./VKbd.css\";\n\n// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VKbd = createSimpleFunctional('v-kbd');\n//# sourceMappingURL=index.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLayout.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { createLayout, makeLayoutProps } from \"../../composables/layout.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVLayoutProps = propsFactory({\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLayoutProps()\n}, 'VLayout');\nexport const VLayout = genericComponent()({\n name: 'VLayout',\n props: makeVLayoutProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n layoutClasses,\n layoutStyles,\n getLayoutItem,\n items,\n layoutRef\n } = createLayout(props);\n const {\n dimensionStyles\n } = useDimension(props);\n useRender(() => _createVNode(\"div\", {\n \"ref\": layoutRef,\n \"class\": [layoutClasses.value, props.class],\n \"style\": [dimensionStyles.value, layoutStyles.value, props.style]\n }, [slots.default?.()]));\n return {\n getLayoutItem,\n items\n };\n }\n});\n//# sourceMappingURL=VLayout.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLayoutItem.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVLayoutItemProps = propsFactory({\n position: {\n type: String,\n required: true\n },\n size: {\n type: [Number, String],\n default: 300\n },\n modelValue: Boolean,\n ...makeComponentProps(),\n ...makeLayoutItemProps()\n}, 'VLayoutItem');\nexport const VLayoutItem = genericComponent()({\n name: 'VLayoutItem',\n props: makeVLayoutItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n layoutItemStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'position'),\n elementSize: toRef(props, 'size'),\n layoutSize: toRef(props, 'size'),\n active: toRef(props, 'modelValue'),\n absolute: toRef(props, 'absolute')\n });\n return () => _createVNode(\"div\", {\n \"class\": ['v-layout-item', props.class],\n \"style\": [layoutItemStyles.value, props.style]\n }, [slots.default?.()]);\n }\n});\n//# sourceMappingURL=VLayoutItem.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Directives\nimport intersect from \"../../directives/intersect/index.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVLazyProps = propsFactory({\n modelValue: Boolean,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined\n })\n },\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps(),\n ...makeTransitionProps({\n transition: 'fade-transition'\n })\n}, 'VLazy');\nexport const VLazy = genericComponent()({\n name: 'VLazy',\n directives: {\n intersect\n },\n props: makeVLazyProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const isActive = useProxiedModel(props, 'modelValue');\n function onIntersect(isIntersecting) {\n if (isActive.value) return;\n isActive.value = isIntersecting;\n }\n useRender(() => _withDirectives(_createVNode(props.tag, {\n \"class\": ['v-lazy', props.class],\n \"style\": [dimensionStyles.value, props.style]\n }, {\n default: () => [isActive.value && _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [slots.default?.()]\n })]\n }), [[_resolveDirective(\"intersect\"), {\n handler: onIntersect,\n options: props.options\n }, null]]));\n return {};\n }\n});\n//# sourceMappingURL=VLazy.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLocaleProvider.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVLocaleProviderProps = propsFactory({\n locale: String,\n fallbackLocale: String,\n messages: Object,\n rtl: {\n type: Boolean,\n default: undefined\n },\n ...makeComponentProps()\n}, 'VLocaleProvider');\nexport const VLocaleProvider = genericComponent()({\n name: 'VLocaleProvider',\n props: makeVLocaleProviderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n rtlClasses\n } = provideLocale(props);\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-locale-provider', rtlClasses.value, props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VLocaleProvider.mjs.map","// Utilities\nimport { computed, onBeforeUnmount, onMounted, shallowRef, watch } from 'vue';\nimport { convertToUnit } from \"../../util/index.mjs\"; // Types\nexport function useSticky(_ref) {\n let {\n rootEl,\n isSticky,\n layoutItemStyles\n } = _ref;\n const isStuck = shallowRef(false);\n const stuckPosition = shallowRef(0);\n const stickyStyles = computed(() => {\n const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;\n return [isSticky.value ? {\n top: 'auto',\n bottom: 'auto',\n height: undefined\n } : undefined, isStuck.value ? {\n [side]: convertToUnit(stuckPosition.value)\n } : {\n top: layoutItemStyles.value.top\n }];\n });\n onMounted(() => {\n watch(isSticky, val => {\n if (val) {\n window.addEventListener('scroll', onScroll, {\n passive: true\n });\n } else {\n window.removeEventListener('scroll', onScroll);\n }\n }, {\n immediate: true\n });\n });\n onBeforeUnmount(() => {\n window.removeEventListener('scroll', onScroll);\n });\n let lastScrollTop = 0;\n function onScroll() {\n const direction = lastScrollTop > window.scrollY ? 'up' : 'down';\n const rect = rootEl.value.getBoundingClientRect();\n const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);\n const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);\n const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;\n const bodyScroll = parseFloat(getComputedStyle(rootEl.value).getPropertyValue('--v-body-scroll-y')) || 0;\n if (rect.height < window.innerHeight - layoutTop) {\n isStuck.value = 'top';\n stuckPosition.value = layoutTop;\n } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {\n stuckPosition.value = window.scrollY + rect.top - bodyScroll;\n isStuck.value = true;\n } else if (direction === 'down' && bottom <= 0) {\n stuckPosition.value = 0;\n isStuck.value = 'bottom';\n } else if (direction === 'up' && top <= 0) {\n if (!bodyScroll) {\n stuckPosition.value = rect.top + top;\n isStuck.value = 'top';\n } else if (isStuck.value !== 'top') {\n stuckPosition.value = -top + bodyScroll + layoutTop;\n isStuck.value = 'top';\n }\n }\n lastScrollTop = window.scrollY;\n }\n return {\n isStuck,\n stickyStyles\n };\n}\n//# sourceMappingURL=sticky.mjs.map","// Utilities\nimport { CircularBuffer } from \"../util/index.mjs\";\nconst HORIZON = 100; // ms\nconst HISTORY = 20; // number of samples to keep\n\n/** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */\nfunction kineticEnergyToVelocity(work) {\n const sqrt2 = 1.41421356237;\n return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;\n}\n\n/**\n * Returns pointer velocity in px/s\n */\nexport function calculateImpulseVelocity(samples) {\n // The input should be in reversed time order (most recent sample at index i=0)\n if (samples.length < 2) {\n // if 0 or 1 points, velocity is zero\n return 0;\n }\n // if (samples[1].t > samples[0].t) {\n // // Algorithm will still work, but not perfectly\n // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')\n // }\n if (samples.length === 2) {\n // if 2 points, basic linear calculation\n if (samples[1].t === samples[0].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)\n return 0;\n }\n return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);\n }\n // Guaranteed to have at least 3 points here\n // start with the oldest sample and go forward in time\n let work = 0;\n for (let i = samples.length - 1; i > 0; i--) {\n if (samples[i].t === samples[i - 1].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)\n continue;\n }\n const vprev = kineticEnergyToVelocity(work); // v[i-1]\n const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t); // v[i]\n work += (vcurr - vprev) * Math.abs(vcurr);\n if (i === samples.length - 1) {\n work *= 0.5;\n }\n }\n return kineticEnergyToVelocity(work) * 1000;\n}\nexport function useVelocity() {\n const touches = {};\n function addMovement(e) {\n Array.from(e.changedTouches).forEach(touch => {\n const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY));\n samples.push([e.timeStamp, touch]);\n });\n }\n function endTouch(e) {\n Array.from(e.changedTouches).forEach(touch => {\n delete touches[touch.identifier];\n });\n }\n function getVelocity(id) {\n const samples = touches[id]?.values().reverse();\n if (!samples) {\n throw new Error(`No samples for touch id ${id}`);\n }\n const newest = samples[0];\n const x = [];\n const y = [];\n for (const val of samples) {\n if (newest[0] - val[0] > HORIZON) break;\n x.push({\n t: val[0],\n d: val[1].clientX\n });\n y.push({\n t: val[0],\n d: val[1].clientY\n });\n }\n return {\n x: calculateImpulseVelocity(x),\n y: calculateImpulseVelocity(y),\n get direction() {\n const {\n x,\n y\n } = this;\n const [absX, absY] = [Math.abs(x), Math.abs(y)];\n return absX > absY && x >= 0 ? 'right' : absX > absY && x <= 0 ? 'left' : absY > absX && y >= 0 ? 'down' : absY > absX && y <= 0 ? 'up' : oops();\n }\n };\n }\n return {\n addMovement,\n endTouch,\n getVelocity\n };\n}\nfunction oops() {\n throw new Error();\n}\n//# sourceMappingURL=touch.mjs.map","// Composables\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { useVelocity } from \"../../composables/touch.mjs\"; // Utilities\nimport { computed, onBeforeUnmount, onMounted, onScopeDispose, shallowRef, watchEffect } from 'vue';\n\n// Types\n\nexport function useTouch(_ref) {\n let {\n el,\n isActive,\n isTemporary,\n width,\n touchless,\n position\n } = _ref;\n onMounted(() => {\n window.addEventListener('touchstart', onTouchstart, {\n passive: true\n });\n window.addEventListener('touchmove', onTouchmove, {\n passive: false\n });\n window.addEventListener('touchend', onTouchend, {\n passive: true\n });\n });\n onBeforeUnmount(() => {\n window.removeEventListener('touchstart', onTouchstart);\n window.removeEventListener('touchmove', onTouchmove);\n window.removeEventListener('touchend', onTouchend);\n });\n const isHorizontal = computed(() => ['left', 'right'].includes(position.value));\n const {\n addMovement,\n endTouch,\n getVelocity\n } = useVelocity();\n let maybeDragging = false;\n const isDragging = shallowRef(false);\n const dragProgress = shallowRef(0);\n const offset = shallowRef(0);\n let start;\n function getOffset(pos, active) {\n return (position.value === 'left' ? pos : position.value === 'right' ? document.documentElement.clientWidth - pos : position.value === 'top' ? pos : position.value === 'bottom' ? document.documentElement.clientHeight - pos : oops()) - (active ? width.value : 0);\n }\n function getProgress(pos) {\n let limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const progress = position.value === 'left' ? (pos - offset.value) / width.value : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value : position.value === 'top' ? (pos - offset.value) / width.value : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value : oops();\n return limit ? Math.max(0, Math.min(1, progress)) : progress;\n }\n function onTouchstart(e) {\n if (touchless.value) return;\n const touchX = e.changedTouches[0].clientX;\n const touchY = e.changedTouches[0].clientY;\n const touchZone = 25;\n const inTouchZone = position.value === 'left' ? touchX < touchZone : position.value === 'right' ? touchX > document.documentElement.clientWidth - touchZone : position.value === 'top' ? touchY < touchZone : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - touchZone : oops();\n const inElement = isActive.value && (position.value === 'left' ? touchX < width.value : position.value === 'right' ? touchX > document.documentElement.clientWidth - width.value : position.value === 'top' ? touchY < width.value : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - width.value : oops());\n if (inTouchZone || inElement || isActive.value && isTemporary.value) {\n start = [touchX, touchY];\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value);\n dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY);\n maybeDragging = offset.value > -20 && offset.value < 80;\n endTouch(e);\n addMovement(e);\n }\n }\n function onTouchmove(e) {\n const touchX = e.changedTouches[0].clientX;\n const touchY = e.changedTouches[0].clientY;\n if (maybeDragging) {\n if (!e.cancelable) {\n maybeDragging = false;\n return;\n }\n const dx = Math.abs(touchX - start[0]);\n const dy = Math.abs(touchY - start[1]);\n const thresholdMet = isHorizontal.value ? dx > dy && dx > 3 : dy > dx && dy > 3;\n if (thresholdMet) {\n isDragging.value = true;\n maybeDragging = false;\n } else if ((isHorizontal.value ? dy : dx) > 3) {\n maybeDragging = false;\n }\n }\n if (!isDragging.value) return;\n e.preventDefault();\n addMovement(e);\n const progress = getProgress(isHorizontal.value ? touchX : touchY, false);\n dragProgress.value = Math.max(0, Math.min(1, progress));\n if (progress > 1) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, true);\n } else if (progress < 0) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, false);\n }\n }\n function onTouchend(e) {\n maybeDragging = false;\n if (!isDragging.value) return;\n addMovement(e);\n isDragging.value = false;\n const velocity = getVelocity(e.changedTouches[0].identifier);\n const vx = Math.abs(velocity.x);\n const vy = Math.abs(velocity.y);\n const thresholdMet = isHorizontal.value ? vx > vy && vx > 400 : vy > vx && vy > 3;\n if (thresholdMet) {\n isActive.value = velocity.direction === ({\n left: 'right',\n right: 'left',\n top: 'down',\n bottom: 'up'\n }[position.value] || oops());\n } else {\n isActive.value = dragProgress.value > 0.5;\n }\n }\n const dragStyles = computed(() => {\n return isDragging.value ? {\n transform: position.value === 'left' ? `translateX(calc(-100% + ${dragProgress.value * width.value}px))` : position.value === 'right' ? `translateX(calc(100% - ${dragProgress.value * width.value}px))` : position.value === 'top' ? `translateY(calc(-100% + ${dragProgress.value * width.value}px))` : position.value === 'bottom' ? `translateY(calc(100% - ${dragProgress.value * width.value}px))` : oops(),\n transition: 'none'\n } : undefined;\n });\n useToggleScope(isDragging, () => {\n const transform = el.value?.style.transform ?? null;\n const transition = el.value?.style.transition ?? null;\n watchEffect(() => {\n el.value?.style.setProperty('transform', dragStyles.value?.transform || 'none');\n el.value?.style.setProperty('transition', dragStyles.value?.transition || null);\n });\n onScopeDispose(() => {\n el.value?.style.setProperty('transform', transform);\n el.value?.style.setProperty('transition', transition);\n });\n });\n return {\n isDragging,\n dragProgress,\n dragStyles\n };\n}\nfunction oops() {\n throw new Error();\n}\n//# sourceMappingURL=touch.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VNavigationDrawer.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { useSticky } from \"./sticky.mjs\";\nimport { useTouch } from \"./touch.mjs\";\nimport { useRtl } from \"../../composables/index.mjs\";\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDelayProps, useDelay } from \"../../composables/delay.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useRouter } from \"../../composables/router.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\"; // Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, Transition, watch } from 'vue';\nimport { genericComponent, propsFactory, toPhysical, useRender } from \"../../util/index.mjs\"; // Types\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'];\nexport const makeVNavigationDrawerProps = propsFactory({\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean,\n default: null\n },\n permanent: Boolean,\n rail: {\n type: Boolean,\n default: null\n },\n railWidth: {\n type: [Number, String],\n default: 56\n },\n scrim: {\n type: [Boolean, String],\n default: true\n },\n image: String,\n temporary: Boolean,\n persistent: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256\n },\n location: {\n type: String,\n default: 'start',\n validator: value => locations.includes(value)\n },\n sticky: Boolean,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDelayProps(),\n ...makeDisplayProps({\n mobile: null\n }),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({\n tag: 'nav'\n }),\n ...makeThemeProps()\n}, 'VNavigationDrawer');\nexport const VNavigationDrawer = genericComponent()({\n name: 'VNavigationDrawer',\n props: makeVNavigationDrawerProps(),\n emits: {\n 'update:modelValue': val => true,\n 'update:rail': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n isRtl\n } = useRtl();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n elevationClasses\n } = useElevation(props);\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const {\n roundedClasses\n } = useRounded(props);\n const router = useRouter();\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v);\n const {\n ssrBootStyles\n } = useSsrBoot();\n const {\n scopeId\n } = useScopeId();\n const rootEl = ref();\n const isHovering = shallowRef(false);\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => {\n isHovering.value = value;\n });\n const width = computed(() => {\n return props.rail && props.expandOnHover && isHovering.value ? Number(props.width) : Number(props.rail ? props.railWidth : props.width);\n });\n const location = computed(() => {\n return toPhysical(props.location, isRtl.value);\n });\n const isPersistent = computed(() => props.persistent);\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary));\n const isSticky = computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');\n useToggleScope(() => props.expandOnHover && props.rail != null, () => {\n watch(isHovering, val => emit('update:rail', !val));\n });\n useToggleScope(() => !props.disableResizeWatcher, () => {\n watch(isTemporary, val => !props.permanent && nextTick(() => isActive.value = !val));\n });\n useToggleScope(() => !props.disableRouteWatcher && !!router, () => {\n watch(router.currentRoute, () => isTemporary.value && (isActive.value = false));\n });\n watch(() => props.permanent, val => {\n if (val) isActive.value = true;\n });\n if (props.modelValue == null && !isTemporary.value) {\n isActive.value = props.permanent || !mobile.value;\n }\n const {\n isDragging,\n dragProgress\n } = useTouch({\n el: rootEl,\n isActive,\n isTemporary,\n width,\n touchless: toRef(props, 'touchless'),\n position: location\n });\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0 : props.rail && props.expandOnHover ? Number(props.railWidth) : width.value;\n return isDragging.value ? size * dragProgress.value : size;\n });\n const elementSize = computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value);\n const {\n layoutItemStyles,\n layoutItemScrimStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize,\n active: computed(() => isActive.value || isDragging.value),\n disableTransitions: computed(() => isDragging.value),\n absolute: computed(() =>\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n props.absolute || isSticky.value && typeof isStuck.value !== 'string')\n });\n const {\n isStuck,\n stickyStyles\n } = useSticky({\n rootEl,\n isSticky,\n layoutItemStyles\n });\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null;\n }));\n const scrimStyles = computed(() => ({\n ...(isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none'\n } : undefined),\n ...layoutItemScrimStyles.value\n }));\n provideDefaults({\n VList: {\n bgColor: 'transparent'\n }\n });\n useRender(() => {\n const hasImage = slots.image || props.image;\n return _createVNode(_Fragment, null, [_createVNode(props.tag, _mergeProps({\n \"ref\": rootEl,\n \"onMouseenter\": runOpenDelay,\n \"onMouseleave\": runCloseDelay,\n \"class\": ['v-navigation-drawer', `v-navigation-drawer--${location.value}`, {\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--persistent': isPersistent.value,\n 'v-navigation-drawer--active': isActive.value,\n 'v-navigation-drawer--sticky': isSticky.value\n }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style, ['top', 'bottom'].includes(location.value) ? {\n height: 'auto'\n } : {}]\n }, scopeId, attrs), {\n default: () => [hasImage && _createVNode(\"div\", {\n \"key\": \"image\",\n \"class\": \"v-navigation-drawer__img\"\n }, [!slots.image ? _createVNode(VImg, {\n \"key\": \"image-img\",\n \"alt\": \"\",\n \"cover\": true,\n \"height\": \"inherit\",\n \"src\": props.image\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"image-defaults\",\n \"disabled\": !props.image,\n \"defaults\": {\n VImg: {\n alt: '',\n cover: true,\n height: 'inherit',\n src: props.image\n }\n }\n }, slots.image)]), slots.prepend && _createVNode(\"div\", {\n \"class\": \"v-navigation-drawer__prepend\"\n }, [slots.prepend?.()]), _createVNode(\"div\", {\n \"class\": \"v-navigation-drawer__content\"\n }, [slots.default?.()]), slots.append && _createVNode(\"div\", {\n \"class\": \"v-navigation-drawer__append\"\n }, [slots.append?.()])]\n }), _createVNode(Transition, {\n \"name\": \"fade-transition\"\n }, {\n default: () => [isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && _createVNode(\"div\", _mergeProps({\n \"class\": ['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value],\n \"style\": [scrimStyles.value, scrimColor.backgroundColorStyles.value],\n \"onClick\": () => {\n if (isPersistent.value) return;\n isActive.value = false;\n }\n }, scopeId), null)]\n })]);\n });\n return {\n isStuck\n };\n }\n});\n//# sourceMappingURL=VNavigationDrawer.mjs.map","// Composables\nimport { useHydration } from \"../../composables/hydration.mjs\"; // Utilities\nimport { defineComponent } from \"../../util/index.mjs\";\nexport const VNoSsr = defineComponent({\n name: 'VNoSsr',\n setup(_, _ref) {\n let {\n slots\n } = _ref;\n const show = useHydration();\n return () => show.value && slots.default?.();\n }\n});\n//# sourceMappingURL=VNoSsr.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VOtpInput.css\";\n\n// Components\nimport { makeVFieldProps, VField } from \"../VField/VField.mjs\";\nimport { VOverlay } from \"../VOverlay/VOverlay.mjs\";\nimport { VProgressCircular } from \"../VProgressCircular/VProgressCircular.mjs\"; // Composables\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { filterInputAttrs, focusChild, genericComponent, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp'\n },\n length: {\n type: [Number, String],\n default: 6\n },\n modelValue: {\n type: [Number, String],\n default: undefined\n },\n placeholder: String,\n type: {\n type: String,\n default: 'number'\n },\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...only(makeVFieldProps({\n variant: 'outlined'\n }), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'rounded', 'style', 'theme', 'variant'])\n}, 'VOtpInput');\nexport const VOtpInput = genericComponent()({\n name: 'VOtpInput',\n props: makeVOtpInputProps(),\n emits: {\n finish: val => true,\n 'update:focused': val => true,\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const model = useProxiedModel(props, 'modelValue', '', val => val == null ? [] : String(val).split(''), val => val.join(''));\n const {\n t\n } = useLocale();\n const length = computed(() => Number(props.length));\n const fields = computed(() => Array(length.value).fill(0));\n const focusIndex = ref(-1);\n const contentRef = ref();\n const inputRef = ref([]);\n const current = computed(() => inputRef.value[focusIndex.value]);\n function onInput() {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = '';\n return;\n }\n const array = model.value.slice();\n const value = current.value.value;\n array[focusIndex.value] = value;\n let target = null;\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1;\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next';\n }\n model.value = array;\n if (target) focusChild(contentRef.value, target);\n }\n function onKeydown(e) {\n const array = model.value.slice();\n const index = focusIndex.value;\n let target = null;\n if (!['ArrowLeft', 'ArrowRight', 'Backspace', 'Delete'].includes(e.key)) return;\n e.preventDefault();\n if (e.key === 'ArrowLeft') {\n target = 'prev';\n } else if (e.key === 'ArrowRight') {\n target = 'next';\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = '';\n model.value = array;\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev';\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select();\n });\n }\n }\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value, target);\n }\n });\n }\n function onPaste(index, e) {\n e.preventDefault();\n e.stopPropagation();\n const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';\n if (isValidNumber(clipboardText)) return;\n model.value = clipboardText.split('');\n inputRef.value?.[index].blur();\n }\n function reset() {\n model.value = [];\n }\n function onFocus(e, index) {\n focus();\n focusIndex.value = index;\n }\n function onBlur() {\n blur();\n focusIndex.value = -1;\n }\n function isValidNumber(value) {\n return props.type === 'number' && /[^0-9]/g.test(value);\n }\n provideDefaults({\n VField: {\n color: computed(() => props.color),\n bgColor: computed(() => props.color),\n baseColor: computed(() => props.baseColor),\n disabled: computed(() => props.disabled),\n error: computed(() => props.error),\n variant: computed(() => props.variant)\n }\n }, {\n scoped: true\n });\n watch(model, val => {\n if (val.length === length.value) emit('finish', val.join(''));\n }, {\n deep: true\n });\n watch(focusIndex, val => {\n if (val < 0) return;\n nextTick(() => {\n inputRef.value[val]?.select();\n });\n });\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-otp-input', {\n 'v-otp-input--divided': !!props.divider\n }, props.class],\n \"style\": [props.style]\n }, rootAttrs), [_createVNode(\"div\", {\n \"ref\": contentRef,\n \"class\": \"v-otp-input__content\",\n \"style\": [dimensionStyles.value]\n }, [fields.value.map((_, i) => _createVNode(_Fragment, null, [props.divider && i !== 0 && _createVNode(\"span\", {\n \"class\": \"v-otp-input__divider\"\n }, [props.divider]), _createVNode(VField, {\n \"focused\": isFocused.value && props.focusAll || focusIndex.value === i,\n \"key\": i\n }, {\n ...slots,\n loader: undefined,\n default: () => {\n return _createVNode(\"input\", {\n \"ref\": val => inputRef.value[i] = val,\n \"aria-label\": t(props.label, i + 1),\n \"autofocus\": i === 0 && props.autofocus,\n \"autocomplete\": \"one-time-code\",\n \"class\": ['v-otp-input__field'],\n \"disabled\": props.disabled,\n \"inputmode\": props.type === 'number' ? 'numeric' : 'text',\n \"min\": props.type === 'number' ? 0 : undefined,\n \"maxlength\": \"1\",\n \"placeholder\": props.placeholder,\n \"type\": props.type === 'number' ? 'text' : props.type,\n \"value\": model.value[i],\n \"onInput\": onInput,\n \"onFocus\": e => onFocus(e, i),\n \"onBlur\": onBlur,\n \"onKeydown\": onKeydown,\n \"onPaste\": event => onPaste(i, event)\n }, null);\n }\n })])), _createVNode(\"input\", _mergeProps({\n \"class\": \"v-otp-input-input\",\n \"type\": \"hidden\"\n }, inputAttrs, {\n \"value\": model.value.join('')\n }), null), _createVNode(VOverlay, {\n \"contained\": true,\n \"content-class\": \"v-otp-input__loader\",\n \"model-value\": !!props.loading,\n \"persistent\": true\n }, {\n default: () => [slots.loader?.() ?? _createVNode(VProgressCircular, {\n \"color\": typeof props.loading === 'boolean' ? undefined : props.loading,\n \"indeterminate\": true,\n \"size\": \"24\",\n \"width\": \"2\"\n }, null)]\n }), slots.default?.()])]);\n });\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur());\n },\n focus: () => {\n inputRef.value?.[0].focus();\n },\n reset,\n isFocused\n };\n }\n});\n//# sourceMappingURL=VOtpInput.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VParallax.css\";\n\n// Components\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { useDisplay } from \"../../composables/index.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useIntersectionObserver } from \"../../composables/intersectionObserver.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\"; // Utilities\nimport { computed, onBeforeUnmount, ref, watch, watchEffect } from 'vue';\nimport { clamp, genericComponent, getScrollParent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nfunction floor(val) {\n return Math.floor(Math.abs(val)) * Math.sign(val);\n}\nexport const makeVParallaxProps = propsFactory({\n scale: {\n type: [Number, String],\n default: 0.5\n },\n ...makeComponentProps()\n}, 'VParallax');\nexport const VParallax = genericComponent()({\n name: 'VParallax',\n props: makeVParallaxProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n intersectionRef,\n isIntersecting\n } = useIntersectionObserver();\n const {\n resizeRef,\n contentRect\n } = useResizeObserver();\n const {\n height: displayHeight\n } = useDisplay();\n const root = ref();\n watchEffect(() => {\n intersectionRef.value = resizeRef.value = root.value?.$el;\n });\n let scrollParent;\n watch(isIntersecting, val => {\n if (val) {\n scrollParent = getScrollParent(intersectionRef.value);\n scrollParent = scrollParent === document.scrollingElement ? document : scrollParent;\n scrollParent.addEventListener('scroll', onScroll, {\n passive: true\n });\n onScroll();\n } else {\n scrollParent.removeEventListener('scroll', onScroll);\n }\n });\n onBeforeUnmount(() => {\n scrollParent?.removeEventListener('scroll', onScroll);\n });\n watch(displayHeight, onScroll);\n watch(() => contentRect.value?.height, onScroll);\n const scale = computed(() => {\n return 1 - clamp(+props.scale);\n });\n let frame = -1;\n function onScroll() {\n if (!isIntersecting.value) return;\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(() => {\n const el = (root.value?.$el).querySelector('.v-img__img');\n if (!el) return;\n const scrollHeight = scrollParent instanceof Document ? document.documentElement.clientHeight : scrollParent.clientHeight;\n const scrollPos = scrollParent instanceof Document ? window.scrollY : scrollParent.scrollTop;\n const top = intersectionRef.value.getBoundingClientRect().top + scrollPos;\n const height = contentRect.value.height;\n const center = top + (height - scrollHeight) / 2;\n const translate = floor((scrollPos - center) * scale.value);\n const sizeScale = Math.max(1, (scale.value * (scrollHeight - height) + height) / height);\n el.style.setProperty('transform', `translateY(${translate}px) scale(${sizeScale})`);\n });\n }\n useRender(() => _createVNode(VImg, {\n \"class\": ['v-parallax', {\n 'v-parallax--active': isIntersecting.value\n }, props.class],\n \"style\": props.style,\n \"ref\": root,\n \"cover\": true,\n \"onLoadstart\": onScroll,\n \"onLoad\": onScroll\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VParallax.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVSelectionControlProps, VSelectionControl } from \"../VSelectionControl/VSelectionControl.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRadioProps = propsFactory({\n ...makeVSelectionControlProps({\n falseIcon: '$radioOff',\n trueIcon: '$radioOn'\n })\n}, 'VRadio');\nexport const VRadio = genericComponent()({\n name: 'VRadio',\n props: makeVRadioProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const controlProps = VSelectionControl.filterProps(props);\n return _createVNode(VSelectionControl, _mergeProps(controlProps, {\n \"class\": ['v-radio', props.class],\n \"style\": props.style,\n \"type\": \"radio\"\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VRadio.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VRadioGroup.css\";\n\n// Components\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\";\nimport { VSelectionControl } from \"../VSelectionControl/index.mjs\";\nimport { makeSelectionControlGroupProps, VSelectionControlGroup } from \"../VSelectionControlGroup/VSelectionControlGroup.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRadioGroupProps = propsFactory({\n height: {\n type: [Number, String],\n default: 'auto'\n },\n ...makeVInputProps(),\n ...omit(makeSelectionControlGroupProps(), ['multiple']),\n trueIcon: {\n type: IconValue,\n default: '$radioOn'\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff'\n },\n type: {\n type: String,\n default: 'radio'\n }\n}, 'VRadioGroup');\nexport const VRadioGroup = genericComponent()({\n name: 'VRadioGroup',\n inheritAttrs: false,\n props: makeVRadioGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const uid = getUid();\n const id = computed(() => props.id || `radio-group-${uid}`);\n const model = useProxiedModel(props, 'modelValue');\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const controlProps = VSelectionControl.filterProps(props);\n const label = slots.label ? slots.label({\n label: props.label,\n props: {\n for: id.value\n }\n }) : props.label;\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-radio-group', props.class],\n \"style\": props.style\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": id.value\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly\n } = _ref2;\n return _createVNode(_Fragment, null, [label && _createVNode(VLabel, {\n \"id\": id.value\n }, {\n default: () => [label]\n }), _createVNode(VSelectionControlGroup, _mergeProps(controlProps, {\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"defaultsTarget\": \"VRadio\",\n \"trueIcon\": props.trueIcon,\n \"falseIcon\": props.falseIcon,\n \"type\": props.type,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value,\n \"aria-labelledby\": label ? id.value : undefined,\n \"multiple\": false\n }, controlAttrs, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event\n }), slots)]);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VRadioGroup.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"../VSlider/VSlider.css\";\n\n// Components\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\";\nimport { getOffset, makeSliderProps, useSlider, useSteps } from \"../VSlider/slider.mjs\";\nimport { VSliderThumb } from \"../VSlider/VSliderThumb.mjs\";\nimport { VSliderTrack } from \"../VSlider/VSliderTrack.mjs\"; // Composables\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRangeSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n strict: Boolean,\n modelValue: {\n type: Array,\n default: () => [0, 0]\n }\n}, 'VRangeSlider');\nexport const VRangeSlider = genericComponent()({\n name: 'VRangeSlider',\n props: makeVRangeSliderProps(),\n emits: {\n 'update:focused': value => true,\n 'update:modelValue': value => true,\n end: value => true,\n start: value => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const startThumbRef = ref();\n const stopThumbRef = ref();\n const inputRef = ref();\n const {\n rtlClasses\n } = useRtl();\n function getActiveThumb(e) {\n if (!startThumbRef.value || !stopThumbRef.value) return;\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction);\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction);\n const a = Math.abs(startOffset);\n const b = Math.abs(stopOffset);\n return a < b || a === b && startOffset < 0 ? startThumbRef.value.$el : stopThumbRef.value.$el;\n }\n const steps = useSteps(props);\n const model = useProxiedModel(props, 'modelValue', undefined, arr => {\n if (!arr?.length) return [0, 0];\n return arr.map(value => steps.roundValue(value));\n });\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n trackContainerRef,\n readonly\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value);\n },\n onSliderEnd: _ref2 => {\n let {\n value\n } = _ref2;\n const newValue = activeThumbRef.value === startThumbRef.value?.$el ? [value, model.value[1]] : [model.value[0], value];\n if (!props.strict && newValue[0] < newValue[1]) {\n model.value = newValue;\n }\n emit('end', model.value);\n },\n onSliderMove: _ref3 => {\n let {\n value\n } = _ref3;\n const [start, stop] = model.value;\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el;\n activeThumbRef.value?.focus();\n }\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(value, stop), stop];\n } else {\n model.value = [start, Math.max(start, value)];\n }\n },\n getActiveThumb\n });\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const trackStart = computed(() => position(model.value[0]));\n const trackStop = computed(() => position(model.value[1]));\n useRender(() => {\n const inputProps = VInput.filterProps(props);\n const hasPrepend = !!(props.label || slots.label || slots.prepend);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-slider', 'v-range-slider', {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled\n }, rtlClasses.value, props.class],\n \"style\": props.style,\n \"ref\": inputRef\n }, inputProps, {\n \"focused\": isFocused.value\n }), {\n ...slots,\n prepend: hasPrepend ? slotProps => _createVNode(_Fragment, null, [slots.label?.(slotProps) ?? (props.label ? _createVNode(VLabel, {\n \"class\": \"v-slider__label\",\n \"text\": props.label\n }, null) : undefined), slots.prepend?.(slotProps)]) : undefined,\n default: _ref4 => {\n let {\n id,\n messagesId\n } = _ref4;\n return _createVNode(\"div\", {\n \"class\": \"v-slider__container\",\n \"onMousedown\": !readonly.value ? onSliderMousedown : undefined,\n \"onTouchstartPassive\": !readonly.value ? onSliderTouchstart : undefined\n }, [_createVNode(\"input\", {\n \"id\": `${id.value}_start`,\n \"name\": props.name || id.value,\n \"disabled\": !!props.disabled,\n \"readonly\": !!props.readonly,\n \"tabindex\": \"-1\",\n \"value\": model.value[0]\n }, null), _createVNode(\"input\", {\n \"id\": `${id.value}_stop`,\n \"name\": props.name || id.value,\n \"disabled\": !!props.disabled,\n \"readonly\": !!props.readonly,\n \"tabindex\": \"-1\",\n \"value\": model.value[1]\n }, null), _createVNode(VSliderTrack, {\n \"ref\": trackContainerRef,\n \"start\": trackStart.value,\n \"stop\": trackStop.value\n }, {\n 'tick-label': slots['tick-label']\n }), _createVNode(VSliderThumb, {\n \"ref\": startThumbRef,\n \"aria-describedby\": messagesId.value,\n \"focused\": isFocused && activeThumbRef.value === startThumbRef.value?.$el,\n \"modelValue\": model.value[0],\n \"onUpdate:modelValue\": v => model.value = [v, model.value[1]],\n \"onFocus\": e => {\n focus();\n activeThumbRef.value = startThumbRef.value?.$el;\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (model.value[0] === model.value[1] && model.value[1] === min.value && e.relatedTarget !== stopThumbRef.value?.$el) {\n startThumbRef.value?.$el.blur();\n stopThumbRef.value?.$el.focus();\n }\n },\n \"onBlur\": () => {\n blur();\n activeThumbRef.value = undefined;\n },\n \"min\": min.value,\n \"max\": model.value[1],\n \"position\": trackStart.value,\n \"ripple\": props.ripple\n }, {\n 'thumb-label': slots['thumb-label']\n }), _createVNode(VSliderThumb, {\n \"ref\": stopThumbRef,\n \"aria-describedby\": messagesId.value,\n \"focused\": isFocused && activeThumbRef.value === stopThumbRef.value?.$el,\n \"modelValue\": model.value[1],\n \"onUpdate:modelValue\": v => model.value = [model.value[0], v],\n \"onFocus\": e => {\n focus();\n activeThumbRef.value = stopThumbRef.value?.$el;\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (model.value[0] === model.value[1] && model.value[0] === max.value && e.relatedTarget !== startThumbRef.value?.$el) {\n stopThumbRef.value?.$el.blur();\n startThumbRef.value?.$el.focus();\n }\n },\n \"onBlur\": () => {\n blur();\n activeThumbRef.value = undefined;\n },\n \"min\": model.value[0],\n \"max\": max.value,\n \"position\": trackStop.value,\n \"ripple\": props.ripple\n }, {\n 'thumb-label': slots['thumb-label']\n })]);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VRangeSlider.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VRating.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, shallowRef } from 'vue';\nimport { clamp, createRange, genericComponent, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRatingProps = propsFactory({\n name: String,\n itemAriaLabel: {\n type: String,\n default: '$vuetify.rating.ariaLabel.item'\n },\n activeColor: String,\n color: String,\n clearable: Boolean,\n disabled: Boolean,\n emptyIcon: {\n type: IconValue,\n default: '$ratingEmpty'\n },\n fullIcon: {\n type: IconValue,\n default: '$ratingFull'\n },\n halfIncrements: Boolean,\n hover: Boolean,\n length: {\n type: [Number, String],\n default: 5\n },\n readonly: Boolean,\n modelValue: {\n type: [Number, String],\n default: 0\n },\n itemLabels: Array,\n itemLabelPosition: {\n type: String,\n default: 'top',\n validator: v => ['top', 'bottom'].includes(v)\n },\n ripple: Boolean,\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VRating');\nexport const VRating = genericComponent()({\n name: 'VRating',\n props: makeVRatingProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n themeClasses\n } = provideTheme(props);\n const rating = useProxiedModel(props, 'modelValue');\n const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, +props.length));\n const range = computed(() => createRange(Number(props.length), 1));\n const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));\n const hoverIndex = shallowRef(-1);\n const itemState = computed(() => increments.value.map(value => {\n const isHovering = props.hover && hoverIndex.value > -1;\n const isFilled = normalizedValue.value >= value;\n const isHovered = hoverIndex.value >= value;\n const isFullIcon = isHovering ? isHovered : isFilled;\n const icon = isFullIcon ? props.fullIcon : props.emptyIcon;\n const activeColor = props.activeColor ?? props.color;\n const color = isFilled || isHovered ? activeColor : props.color;\n return {\n isFilled,\n isHovered,\n icon,\n color\n };\n }));\n const eventState = computed(() => [0, ...increments.value].map(value => {\n function onMouseenter() {\n hoverIndex.value = value;\n }\n function onMouseleave() {\n hoverIndex.value = -1;\n }\n function onClick() {\n if (props.disabled || props.readonly) return;\n rating.value = normalizedValue.value === value && props.clearable ? 0 : value;\n }\n return {\n onMouseenter: props.hover ? onMouseenter : undefined,\n onMouseleave: props.hover ? onMouseleave : undefined,\n onClick\n };\n }));\n const name = computed(() => props.name ?? `v-rating-${getUid()}`);\n function VRatingItem(_ref2) {\n let {\n value,\n index,\n showStar = true\n } = _ref2;\n const {\n onMouseenter,\n onMouseleave,\n onClick\n } = eventState.value[index + 1];\n const id = `${name.value}-${String(value).replace('.', '-')}`;\n const btnProps = {\n color: itemState.value[index]?.color,\n density: props.density,\n disabled: props.disabled,\n icon: itemState.value[index]?.icon,\n ripple: props.ripple,\n size: props.size,\n variant: 'plain'\n };\n return _createVNode(_Fragment, null, [_createVNode(\"label\", {\n \"for\": id,\n \"class\": {\n 'v-rating__item--half': props.halfIncrements && value % 1 > 0,\n 'v-rating__item--full': props.halfIncrements && value % 1 === 0\n },\n \"onMouseenter\": onMouseenter,\n \"onMouseleave\": onMouseleave,\n \"onClick\": onClick\n }, [_createVNode(\"span\", {\n \"class\": \"v-rating__hidden\"\n }, [t(props.itemAriaLabel, value, props.length)]), !showStar ? undefined : slots.item ? slots.item({\n ...itemState.value[index],\n props: btnProps,\n value,\n index,\n rating: normalizedValue.value\n }) : _createVNode(VBtn, _mergeProps({\n \"aria-label\": t(props.itemAriaLabel, value, props.length)\n }, btnProps), null)]), _createVNode(\"input\", {\n \"class\": \"v-rating__hidden\",\n \"name\": name.value,\n \"id\": id,\n \"type\": \"radio\",\n \"value\": value,\n \"checked\": normalizedValue.value === value,\n \"tabindex\": -1,\n \"readonly\": props.readonly,\n \"disabled\": props.disabled\n }, null)]);\n }\n function createLabel(labelProps) {\n if (slots['item-label']) return slots['item-label'](labelProps);\n if (labelProps.label) return _createVNode(\"span\", null, [labelProps.label]);\n return _createVNode(\"span\", null, [_createTextVNode(\"\\xA0\")]);\n }\n useRender(() => {\n const hasLabels = !!props.itemLabels?.length || slots['item-label'];\n return _createVNode(props.tag, {\n \"class\": ['v-rating', {\n 'v-rating--hover': props.hover,\n 'v-rating--readonly': props.readonly\n }, themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [_createVNode(VRatingItem, {\n \"value\": 0,\n \"index\": -1,\n \"showStar\": false\n }, null), range.value.map((value, i) => _createVNode(\"div\", {\n \"class\": \"v-rating__wrapper\"\n }, [hasLabels && props.itemLabelPosition === 'top' ? createLabel({\n value,\n index: i,\n label: props.itemLabels?.[i]\n }) : undefined, _createVNode(\"div\", {\n \"class\": \"v-rating__item\"\n }, [props.halfIncrements ? _createVNode(_Fragment, null, [_createVNode(VRatingItem, {\n \"value\": value - 0.5,\n \"index\": i * 2\n }, null), _createVNode(VRatingItem, {\n \"value\": value,\n \"index\": i * 2 + 1\n }, null)]) : _createVNode(VRatingItem, {\n \"value\": value,\n \"index\": i\n }, null)]), hasLabels && props.itemLabelPosition === 'bottom' ? createLabel({\n value,\n index: i,\n label: props.itemLabels?.[i]\n }) : undefined]))]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VRating.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSkeletonLoader.css\";\n\n// Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const rootTypes = {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, heading',\n 'card-avatar': 'image, list-item-avatar',\n chip: 'chip',\n 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n divider: 'divider',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n ossein: 'ossein',\n paragraph: 'text@3',\n sentences: 'text@2',\n subtitle: 'text',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'chip, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'text@6',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text'\n};\nfunction genBone(type) {\n let children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return _createVNode(\"div\", {\n \"class\": ['v-skeleton-loader__bone', `v-skeleton-loader__${type}`]\n }, [children]);\n}\nfunction genBones(bone) {\n // e.g. 'text@3'\n const [type, length] = bone.split('@');\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({\n length\n }).map(() => genStructure(type));\n}\nfunction genStructure(type) {\n let children = [];\n if (!type) return children;\n\n // TODO: figure out a better way to type this\n const bone = rootTypes[type];\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.includes(',')) return mapBones(type);\n // Array of values - e.g. 'paragraph@4'\n else if (type.includes('@')) return genBones(type);\n // Array of values - e.g. 'card@2'\n else if (bone.includes(',')) children = mapBones(bone);\n // Array of values - e.g. 'list-item@2'\n else if (bone.includes('@')) children = genBones(bone);\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(genStructure(bone));\n return [genBone(type, children)];\n}\nfunction mapBones(bones) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(genStructure);\n}\nexport const makeVSkeletonLoaderProps = propsFactory({\n boilerplate: Boolean,\n color: String,\n loading: Boolean,\n loadingText: {\n type: String,\n default: '$vuetify.loading'\n },\n type: {\n type: [String, Array],\n default: 'ossein'\n },\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeThemeProps()\n}, 'VSkeletonLoader');\nexport const VSkeletonLoader = genericComponent()({\n name: 'VSkeletonLoader',\n props: makeVSkeletonLoaderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n themeClasses\n } = provideTheme(props);\n const {\n t\n } = useLocale();\n const items = computed(() => genStructure(wrapInArray(props.type).join(',')));\n useRender(() => {\n const isLoading = !slots.default || props.loading;\n const loadingProps = props.boilerplate || !isLoading ? {} : {\n ariaLive: 'polite',\n ariaLabel: t(props.loadingText),\n role: 'alert'\n };\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-skeleton-loader', {\n 'v-skeleton-loader--boilerplate': props.boilerplate\n }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],\n \"style\": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}]\n }, loadingProps), [isLoading ? items.value : slots.default?.()]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VSkeletonLoader.mjs.map","// Composables\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\"; // Utilities\nimport { VSlideGroupSymbol } from \"./VSlideGroup.mjs\";\nimport { genericComponent } from \"../../util/index.mjs\"; // Types\nexport const VSlideGroupItem = genericComponent()({\n name: 'VSlideGroupItem',\n props: makeGroupItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const slideGroupItem = useGroupItem(props, VSlideGroupSymbol);\n return () => slots.default?.({\n isSelected: slideGroupItem.isSelected.value,\n select: slideGroupItem.select,\n toggle: slideGroupItem.toggle,\n selectedClass: slideGroupItem.selectedClass.value\n });\n }\n});\n//# sourceMappingURL=VSlideGroupItem.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSnackbar.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\";\nimport { VProgressLinear } from \"../VProgressLinear/index.mjs\"; // Composables\nimport { useLayout } from \"../../composables/index.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { VuetifyLayoutKey } from \"../../composables/layout.mjs\";\nimport { makeLocationProps } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Utilities\nimport { computed, inject, mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { genericComponent, omit, propsFactory, refElement, useRender } from \"../../util/index.mjs\"; // Types\nfunction useCountdown(milliseconds) {\n const time = shallowRef(milliseconds());\n let timer = -1;\n function clear() {\n clearInterval(timer);\n }\n function reset() {\n clear();\n nextTick(() => time.value = milliseconds());\n }\n function start(el) {\n const style = el ? getComputedStyle(el) : {\n transitionDuration: 0.2\n };\n const interval = parseFloat(style.transitionDuration) * 1000 || 200;\n clear();\n if (time.value <= 0) return;\n const startTime = performance.now();\n timer = window.setInterval(() => {\n const elapsed = performance.now() - startTime + interval;\n time.value = Math.max(milliseconds() - elapsed, 0);\n if (time.value <= 0) clear();\n }, interval);\n }\n onScopeDispose(clear);\n return {\n clear,\n time,\n start,\n reset\n };\n}\nexport const makeVSnackbarProps = propsFactory({\n multiLine: Boolean,\n text: String,\n timer: [Boolean, String],\n timeout: {\n type: [Number, String],\n default: 5000\n },\n vertical: Boolean,\n ...makeLocationProps({\n location: 'bottom'\n }),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition'\n }), ['persistent', 'noClickAnimation', 'scrim', 'scrollStrategy'])\n}, 'VSnackbar');\nexport const VSnackbar = genericComponent()({\n name: 'VSnackbar',\n props: makeVSnackbarProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n positionClasses\n } = usePosition(props);\n const {\n scopeId\n } = useScopeId();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n roundedClasses\n } = useRounded(props);\n const countdown = useCountdown(() => Number(props.timeout));\n const overlay = ref();\n const timerRef = ref();\n const isHovering = shallowRef(false);\n const startY = shallowRef(0);\n const mainStyles = ref();\n const hasLayout = inject(VuetifyLayoutKey, undefined);\n useToggleScope(() => !!hasLayout, () => {\n const layout = useLayout();\n watchEffect(() => {\n mainStyles.value = layout.mainStyles.value;\n });\n });\n watch(isActive, startTimeout);\n watch(() => props.timeout, startTimeout);\n onMounted(() => {\n if (isActive.value) startTimeout();\n });\n let activeTimeout = -1;\n function startTimeout() {\n countdown.reset();\n window.clearTimeout(activeTimeout);\n const timeout = Number(props.timeout);\n if (!isActive.value || timeout === -1) return;\n const element = refElement(timerRef.value);\n countdown.start(element);\n activeTimeout = window.setTimeout(() => {\n isActive.value = false;\n }, timeout);\n }\n function clearTimeout() {\n countdown.reset();\n window.clearTimeout(activeTimeout);\n }\n function onPointerenter() {\n isHovering.value = true;\n clearTimeout();\n }\n function onPointerleave() {\n isHovering.value = false;\n startTimeout();\n }\n function onTouchstart(event) {\n startY.value = event.touches[0].clientY;\n }\n function onTouchend(event) {\n if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {\n isActive.value = false;\n }\n }\n function onAfterLeave() {\n if (isHovering.value) onPointerleave();\n }\n const locationClasses = computed(() => {\n return props.location.split(' ').reduce((acc, loc) => {\n acc[`v-snackbar--${loc}`] = true;\n return acc;\n }, {});\n });\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n const hasContent = !!(slots.default || slots.text || props.text);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-snackbar', {\n 'v-snackbar--active': isActive.value,\n 'v-snackbar--multi-line': props.multiLine && !props.vertical,\n 'v-snackbar--timer': !!props.timer,\n 'v-snackbar--vertical': props.vertical\n }, locationClasses.value, positionClasses.value, props.class],\n \"style\": [mainStyles.value, props.style]\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"contentProps\": mergeProps({\n class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],\n style: [colorStyles.value],\n onPointerenter,\n onPointerleave\n }, overlayProps.contentProps),\n \"persistent\": true,\n \"noClickAnimation\": true,\n \"scrim\": false,\n \"scrollStrategy\": \"none\",\n \"_disableGlobalStack\": true,\n \"onTouchstartPassive\": onTouchstart,\n \"onTouchend\": onTouchend,\n \"onAfterLeave\": onAfterLeave\n }, scopeId), {\n default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && _createVNode(\"div\", {\n \"key\": \"timer\",\n \"class\": \"v-snackbar__timer\"\n }, [_createVNode(VProgressLinear, {\n \"ref\": timerRef,\n \"color\": typeof props.timer === 'string' ? props.timer : 'info',\n \"max\": props.timeout,\n \"model-value\": countdown.time.value\n }, null)]), hasContent && _createVNode(\"div\", {\n \"key\": \"content\",\n \"class\": \"v-snackbar__content\",\n \"role\": \"status\",\n \"aria-live\": \"polite\"\n }, [slots.text?.() ?? props.text, slots.default?.()]), slots.actions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n variant: 'text',\n ripple: false,\n slim: true\n }\n }\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-snackbar__actions\"\n }, [slots.actions({\n isActive\n })])]\n })],\n activator: slots.activator\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VSnackbar.mjs.map","// Utilities\nimport { propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeLineProps = propsFactory({\n autoDraw: Boolean,\n autoDrawDuration: [Number, String],\n autoDrawEasing: {\n type: String,\n default: 'ease'\n },\n color: String,\n gradient: {\n type: Array,\n default: () => []\n },\n gradientDirection: {\n type: String,\n validator: val => ['top', 'bottom', 'left', 'right'].includes(val),\n default: 'top'\n },\n height: {\n type: [String, Number],\n default: 75\n },\n labels: {\n type: Array,\n default: () => []\n },\n labelSize: {\n type: [Number, String],\n default: 7\n },\n lineWidth: {\n type: [String, Number],\n default: 4\n },\n id: String,\n itemValue: {\n type: String,\n default: 'value'\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n min: [String, Number],\n max: [String, Number],\n padding: {\n type: [String, Number],\n default: 8\n },\n showLabels: Boolean,\n smooth: Boolean,\n width: {\n type: [Number, String],\n default: 300\n }\n}, 'Line');\n//# sourceMappingURL=line.mjs.map","import { Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Utilities\nimport { computed } from 'vue';\nimport { makeLineProps } from \"./util/line.mjs\";\nimport { genericComponent, getPropertyFromItem, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBarlineProps = propsFactory({\n autoLineWidth: Boolean,\n ...makeLineProps()\n}, 'VBarline');\nexport const VBarline = genericComponent()({\n name: 'VBarline',\n props: makeVBarlineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const uid = getUid();\n const id = computed(() => props.id || `barline-${uid}`);\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || 500);\n const hasLabels = computed(() => {\n return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);\n });\n const lineWidth = computed(() => parseFloat(props.lineWidth) || 4);\n const totalWidth = computed(() => Math.max(props.modelValue.length * lineWidth.value, Number(props.width)));\n const boundary = computed(() => {\n return {\n minX: 0,\n maxX: totalWidth.value,\n minY: 0,\n maxY: parseInt(props.height, 10)\n };\n });\n const items = computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)));\n function genBars(values, boundary) {\n const {\n minX,\n maxX,\n minY,\n maxY\n } = boundary;\n const totalValues = values.length;\n let maxValue = props.max != null ? Number(props.max) : Math.max(...values);\n let minValue = props.min != null ? Number(props.min) : Math.min(...values);\n if (minValue > 0 && props.min == null) minValue = 0;\n if (maxValue < 0 && props.max == null) maxValue = 0;\n const gridX = maxX / totalValues;\n const gridY = (maxY - minY) / (maxValue - minValue || 1);\n const horizonY = maxY - Math.abs(minValue * gridY);\n return values.map((value, index) => {\n const height = Math.abs(gridY * value);\n return {\n x: minX + index * gridX,\n y: horizonY - height + +(value < 0) * height,\n height,\n value\n };\n });\n }\n const parsedLabels = computed(() => {\n const labels = [];\n const points = genBars(items.value, boundary.value);\n const len = points.length;\n for (let i = 0; labels.length < len; i++) {\n const item = points[i];\n let value = props.labels[i];\n if (!value) {\n value = typeof item === 'object' ? item.value : item;\n }\n labels.push({\n x: item.x,\n value: String(value)\n });\n }\n return labels;\n });\n const bars = computed(() => genBars(items.value, boundary.value));\n const offsetX = computed(() => (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2);\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();\n return _createVNode(\"svg\", {\n \"display\": \"block\"\n }, [_createVNode(\"defs\", null, [_createVNode(\"linearGradient\", {\n \"id\": id.value,\n \"gradientUnits\": \"userSpaceOnUse\",\n \"x1\": props.gradientDirection === 'left' ? '100%' : '0',\n \"y1\": props.gradientDirection === 'top' ? '100%' : '0',\n \"x2\": props.gradientDirection === 'right' ? '100%' : '0',\n \"y2\": props.gradientDirection === 'bottom' ? '100%' : '0'\n }, [gradientData.map((color, index) => _createVNode(\"stop\", {\n \"offset\": index / Math.max(gradientData.length - 1, 1),\n \"stop-color\": color || 'currentColor'\n }, null))])]), _createVNode(\"clipPath\", {\n \"id\": `${id.value}-clip`\n }, [bars.value.map(item => _createVNode(\"rect\", {\n \"x\": item.x + offsetX.value,\n \"y\": item.y,\n \"width\": lineWidth.value,\n \"height\": item.height,\n \"rx\": typeof props.smooth === 'number' ? props.smooth : props.smooth ? 2 : 0,\n \"ry\": typeof props.smooth === 'number' ? props.smooth : props.smooth ? 2 : 0\n }, [props.autoDraw && _createVNode(_Fragment, null, [_createVNode(\"animate\", {\n \"attributeName\": \"y\",\n \"from\": item.y + item.height,\n \"to\": item.y,\n \"dur\": `${autoDrawDuration.value}ms`,\n \"fill\": \"freeze\"\n }, null), _createVNode(\"animate\", {\n \"attributeName\": \"height\",\n \"from\": \"0\",\n \"to\": item.height,\n \"dur\": `${autoDrawDuration.value}ms`,\n \"fill\": \"freeze\"\n }, null)])]))]), hasLabels.value && _createVNode(\"g\", {\n \"key\": \"labels\",\n \"style\": {\n textAnchor: 'middle',\n dominantBaseline: 'mathematical',\n fill: 'currentColor'\n }\n }, [parsedLabels.value.map((item, i) => _createVNode(\"text\", {\n \"x\": item.x + offsetX.value + lineWidth.value / 2,\n \"y\": parseInt(props.height, 10) - 2 + (parseInt(props.labelSize, 10) || 7 * 0.75),\n \"font-size\": Number(props.labelSize) || 7\n }, [slots.label?.({\n index: i,\n value: item.value\n }) ?? item.value]))]), _createVNode(\"g\", {\n \"clip-path\": `url(#${id.value}-clip)`,\n \"fill\": `url(#${id.value})`\n }, [_createVNode(\"rect\", {\n \"x\": 0,\n \"y\": 0,\n \"width\": Math.max(props.modelValue.length * lineWidth.value, Number(props.width)),\n \"height\": props.height\n }, null)])]);\n });\n }\n});\n//# sourceMappingURL=VBarline.mjs.map","// @ts-nocheck\n/* eslint-disable */\n\n// import { checkCollinear, getDistance, moveTo } from './math'\n\n/**\n * From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18\n */\nexport function genPath(points, radius) {\n let fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n let height = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 75;\n if (points.length === 0) return '';\n const start = points.shift();\n const end = points[points.length - 1];\n return (fill ? `M${start.x} ${height - start.x + 2} L${start.x} ${start.y}` : `M${start.x} ${start.y}`) + points.map((point, index) => {\n const next = points[index + 1];\n const prev = points[index - 1] || start;\n const isCollinear = next && checkCollinear(next, point, prev);\n if (!next || isCollinear) {\n return `L${point.x} ${point.y}`;\n }\n const threshold = Math.min(getDistance(prev, point), getDistance(next, point));\n const isTooCloseForRadius = threshold / 2 < radius;\n const radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius;\n const before = moveTo(prev, point, radiusForPoint);\n const after = moveTo(next, point, radiusForPoint);\n return `L${before.x} ${before.y}S${point.x} ${point.y} ${after.x} ${after.y}`;\n }).join('') + (fill ? `L${end.x} ${height - start.x + 2} Z` : '');\n}\nfunction int(value) {\n return parseInt(value, 10);\n}\n\n/**\n * https://en.wikipedia.org/wiki/Collinearity\n * x=(x1+x2)/2\n * y=(y1+y2)/2\n */\nexport function checkCollinear(p0, p1, p2) {\n return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y);\n}\nexport function getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\nexport function moveTo(to, from, radius) {\n const vector = {\n x: to.x - from.x,\n y: to.y - from.y\n };\n const length = Math.sqrt(vector.x * vector.x + vector.y * vector.y);\n const unitVector = {\n x: vector.x / length,\n y: vector.y / length\n };\n return {\n x: from.x + unitVector.x * radius,\n y: from.y + unitVector.y * radius\n };\n}\n//# sourceMappingURL=path.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { makeLineProps } from \"./util/line.mjs\";\nimport { genPath as _genPath } from \"./util/path.mjs\";\nimport { genericComponent, getPropertyFromItem, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTrendlineProps = propsFactory({\n fill: Boolean,\n ...makeLineProps()\n}, 'VTrendline');\nexport const VTrendline = genericComponent()({\n name: 'VTrendline',\n props: makeVTrendlineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const uid = getUid();\n const id = computed(() => props.id || `trendline-${uid}`);\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || (props.fill ? 500 : 2000));\n const lastLength = ref(0);\n const path = ref(null);\n function genPoints(values, boundary) {\n const {\n minX,\n maxX,\n minY,\n maxY\n } = boundary;\n const totalValues = values.length;\n const maxValue = props.max != null ? Number(props.max) : Math.max(...values);\n const minValue = props.min != null ? Number(props.min) : Math.min(...values);\n const gridX = (maxX - minX) / (totalValues - 1);\n const gridY = (maxY - minY) / (maxValue - minValue || 1);\n return values.map((value, index) => {\n return {\n x: minX + index * gridX,\n y: maxY - (value - minValue) * gridY,\n value\n };\n });\n }\n const hasLabels = computed(() => {\n return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);\n });\n const lineWidth = computed(() => {\n return parseFloat(props.lineWidth) || 4;\n });\n const totalWidth = computed(() => Number(props.width));\n const boundary = computed(() => {\n const padding = Number(props.padding);\n return {\n minX: padding,\n maxX: totalWidth.value - padding,\n minY: padding,\n maxY: parseInt(props.height, 10) - padding\n };\n });\n const items = computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)));\n const parsedLabels = computed(() => {\n const labels = [];\n const points = genPoints(items.value, boundary.value);\n const len = points.length;\n for (let i = 0; labels.length < len; i++) {\n const item = points[i];\n let value = props.labels[i];\n if (!value) {\n value = typeof item === 'object' ? item.value : item;\n }\n labels.push({\n x: item.x,\n value: String(value)\n });\n }\n return labels;\n });\n watch(() => props.modelValue, async () => {\n await nextTick();\n if (!props.autoDraw || !path.value) return;\n const pathRef = path.value;\n const length = pathRef.getTotalLength();\n if (!props.fill) {\n // Initial setup to \"hide\" the line by using the stroke dash array\n pathRef.style.strokeDasharray = `${length}`;\n pathRef.style.strokeDashoffset = `${length}`;\n\n // Force reflow to ensure the transition starts from this state\n pathRef.getBoundingClientRect();\n\n // Animate the stroke dash offset to \"draw\" the line\n pathRef.style.transition = `stroke-dashoffset ${autoDrawDuration.value}ms ${props.autoDrawEasing}`;\n pathRef.style.strokeDashoffset = '0';\n } else {\n // Your existing logic for filled paths remains the same\n pathRef.style.transformOrigin = 'bottom center';\n pathRef.style.transition = 'none';\n pathRef.style.transform = `scaleY(0)`;\n pathRef.getBoundingClientRect();\n pathRef.style.transition = `transform ${autoDrawDuration.value}ms ${props.autoDrawEasing}`;\n pathRef.style.transform = `scaleY(1)`;\n }\n lastLength.value = length;\n }, {\n immediate: true\n });\n function genPath(fill) {\n return _genPath(genPoints(items.value, boundary.value), props.smooth ? 8 : Number(props.smooth), fill, parseInt(props.height, 10));\n }\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();\n return _createVNode(\"svg\", {\n \"display\": \"block\",\n \"stroke-width\": parseFloat(props.lineWidth) ?? 4\n }, [_createVNode(\"defs\", null, [_createVNode(\"linearGradient\", {\n \"id\": id.value,\n \"gradientUnits\": \"userSpaceOnUse\",\n \"x1\": props.gradientDirection === 'left' ? '100%' : '0',\n \"y1\": props.gradientDirection === 'top' ? '100%' : '0',\n \"x2\": props.gradientDirection === 'right' ? '100%' : '0',\n \"y2\": props.gradientDirection === 'bottom' ? '100%' : '0'\n }, [gradientData.map((color, index) => _createVNode(\"stop\", {\n \"offset\": index / Math.max(gradientData.length - 1, 1),\n \"stop-color\": color || 'currentColor'\n }, null))])]), hasLabels.value && _createVNode(\"g\", {\n \"key\": \"labels\",\n \"style\": {\n textAnchor: 'middle',\n dominantBaseline: 'mathematical',\n fill: 'currentColor'\n }\n }, [parsedLabels.value.map((item, i) => _createVNode(\"text\", {\n \"x\": item.x + lineWidth.value / 2 + lineWidth.value / 2,\n \"y\": parseInt(props.height, 10) - 4 + (parseInt(props.labelSize, 10) || 7 * 0.75),\n \"font-size\": Number(props.labelSize) || 7\n }, [slots.label?.({\n index: i,\n value: item.value\n }) ?? item.value]))]), _createVNode(\"path\", {\n \"ref\": path,\n \"d\": genPath(props.fill),\n \"fill\": props.fill ? `url(#${id.value})` : 'none',\n \"stroke\": props.fill ? 'none' : `url(#${id.value})`\n }, null), props.fill && _createVNode(\"path\", {\n \"d\": genPath(false),\n \"fill\": \"none\",\n \"stroke\": props.color ?? props.gradient?.[0]\n }, null)]);\n });\n }\n});\n//# sourceMappingURL=VTrendline.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVBarlineProps, VBarline } from \"./VBarline.mjs\";\nimport { makeVTrendlineProps, VTrendline } from \"./VTrendline.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\n\nexport const makeVSparklineProps = propsFactory({\n type: {\n type: String,\n default: 'trend'\n },\n ...makeVBarlineProps(),\n ...makeVTrendlineProps()\n}, 'VSparkline');\nexport const VSparkline = genericComponent()({\n name: 'VSparkline',\n props: makeVSparklineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'color'));\n const hasLabels = computed(() => {\n return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);\n });\n const totalHeight = computed(() => {\n let height = parseInt(props.height, 10);\n if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5;\n return height;\n });\n useRender(() => {\n const Tag = props.type === 'trend' ? VTrendline : VBarline;\n const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props);\n return _createVNode(Tag, _mergeProps({\n \"key\": props.type,\n \"class\": textColorClasses.value,\n \"style\": textColorStyles.value,\n \"viewBox\": `0 0 ${props.width} ${parseInt(totalHeight.value, 10)}`\n }, lineProps), slots);\n });\n }\n});\n//# sourceMappingURL=VSparkline.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSpeedDial.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { makeVMenuProps, VMenu } from \"../VMenu/VMenu.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSpeedDialProps = propsFactory({\n ...makeComponentProps(),\n ...makeVMenuProps({\n offset: 8,\n minWidth: 0,\n openDelay: 0,\n closeDelay: 100,\n location: 'top center',\n transition: 'scale-transition'\n })\n}, 'VSpeedDial');\nexport const VSpeedDial = genericComponent()({\n name: 'VSpeedDial',\n props: makeVSpeedDialProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const menuRef = ref();\n const location = computed(() => {\n const [y, x = 'center'] = props.location?.split(' ') ?? [];\n return `${y} ${x}`;\n });\n const locationClasses = computed(() => ({\n [`v-speed-dial__content--${location.value.replace(' ', '-')}`]: true\n }));\n useRender(() => {\n const menuProps = VMenu.filterProps(props);\n return _createVNode(VMenu, _mergeProps(menuProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": props.class,\n \"style\": props.style,\n \"contentClass\": ['v-speed-dial__content', locationClasses.value, props.contentClass],\n \"location\": location.value,\n \"ref\": menuRef,\n \"transition\": \"fade-transition\"\n }), {\n ...slots,\n default: slotProps => _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n size: 'small'\n }\n }\n }, {\n default: () => [_createVNode(MaybeTransition, {\n \"appear\": true,\n \"group\": true,\n \"transition\": props.transition\n }, {\n default: () => [slots.default?.(slotProps)]\n })]\n })\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VSpeedDial.mjs.map","// Types\n\nexport const VStepperSymbol = Symbol.for('vuetify:v-stepper');\n//# sourceMappingURL=shared.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VBtn } from \"../VBtn/VBtn.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.mjs\"; // Composables\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVStepperActionsProps = propsFactory({\n color: String,\n disabled: {\n type: [Boolean, String],\n default: false\n },\n prevText: {\n type: String,\n default: '$vuetify.stepper.prev'\n },\n nextText: {\n type: String,\n default: '$vuetify.stepper.next'\n }\n}, 'VStepperActions');\nexport const VStepperActions = genericComponent()({\n name: 'VStepperActions',\n props: makeVStepperActionsProps(),\n emits: {\n 'click:prev': () => true,\n 'click:next': () => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n function onClickPrev() {\n emit('click:prev');\n }\n function onClickNext() {\n emit('click:next');\n }\n useRender(() => {\n const prevSlotProps = {\n onClick: onClickPrev\n };\n const nextSlotProps = {\n onClick: onClickNext\n };\n return _createVNode(\"div\", {\n \"class\": \"v-stepper-actions\"\n }, [_createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n disabled: ['prev', true].includes(props.disabled),\n text: t(props.prevText),\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.prev?.({\n props: prevSlotProps\n }) ?? _createVNode(VBtn, prevSlotProps, null)]\n }), _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n color: props.color,\n disabled: ['next', true].includes(props.disabled),\n text: t(props.nextText),\n variant: 'tonal'\n }\n }\n }, {\n default: () => [slots.next?.({\n props: nextSlotProps\n }) ?? _createVNode(VBtn, nextSlotProps, null)]\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperActions.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VStepperHeader = createSimpleFunctional('v-stepper-header');\n//# sourceMappingURL=VStepperHeader.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VStepperItem.css\";\n\n// Components\nimport { VAvatar } from \"../VAvatar/VAvatar.mjs\";\nimport { VIcon } from \"../VIcon/VIcon.mjs\"; // Composables\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { genOverlays } from \"../../composables/variant.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { VStepperSymbol } from \"./shared.mjs\";\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeStepperItemProps = propsFactory({\n color: String,\n title: String,\n subtitle: String,\n complete: Boolean,\n completeIcon: {\n type: String,\n default: '$complete'\n },\n editable: Boolean,\n editIcon: {\n type: String,\n default: '$edit'\n },\n error: Boolean,\n errorIcon: {\n type: String,\n default: '$error'\n },\n icon: String,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n rules: {\n type: Array,\n default: () => []\n }\n}, 'StepperItem');\nexport const makeVStepperItemProps = propsFactory({\n ...makeStepperItemProps(),\n ...makeGroupItemProps()\n}, 'VStepperItem');\nexport const VStepperItem = genericComponent()({\n name: 'VStepperItem',\n directives: {\n Ripple\n },\n props: makeVStepperItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const group = useGroupItem(props, VStepperSymbol, true);\n const step = computed(() => group?.value.value ?? props.value);\n const isValid = computed(() => props.rules.every(handler => handler() === true));\n const isClickable = computed(() => !props.disabled && props.editable);\n const canEdit = computed(() => !props.disabled && props.editable);\n const hasError = computed(() => props.error || !isValid.value);\n const hasCompleted = computed(() => props.complete || props.rules.length > 0 && isValid.value);\n const icon = computed(() => {\n if (hasError.value) return props.errorIcon;\n if (hasCompleted.value) return props.completeIcon;\n if (group.isSelected.value && props.editable) return props.editIcon;\n return props.icon;\n });\n const slotProps = computed(() => ({\n canEdit: canEdit.value,\n hasError: hasError.value,\n hasCompleted: hasCompleted.value,\n title: props.title,\n subtitle: props.subtitle,\n step: step.value,\n value: props.value\n }));\n useRender(() => {\n const hasColor = (!group || group.isSelected.value || hasCompleted.value || canEdit.value) && !hasError.value && !props.disabled;\n const hasTitle = !!(props.title != null || slots.title);\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle);\n function onClick() {\n group?.toggle();\n }\n return _withDirectives(_createVNode(\"button\", {\n \"class\": ['v-stepper-item', {\n 'v-stepper-item--complete': hasCompleted.value,\n 'v-stepper-item--disabled': props.disabled,\n 'v-stepper-item--error': hasError.value\n }, group?.selectedClass.value],\n \"disabled\": !props.editable,\n \"onClick\": onClick\n }, [isClickable.value && genOverlays(true, 'v-stepper-item'), _createVNode(VAvatar, {\n \"key\": \"stepper-avatar\",\n \"class\": \"v-stepper-item__avatar\",\n \"color\": hasColor ? props.color : undefined,\n \"size\": 24\n }, {\n default: () => [slots.icon?.(slotProps.value) ?? (icon.value ? _createVNode(VIcon, {\n \"icon\": icon.value\n }, null) : step.value)]\n }), _createVNode(\"div\", {\n \"class\": \"v-stepper-item__content\"\n }, [hasTitle && _createVNode(\"div\", {\n \"key\": \"title\",\n \"class\": \"v-stepper-item__title\"\n }, [slots.title?.(slotProps.value) ?? props.title]), hasSubtitle && _createVNode(\"div\", {\n \"key\": \"subtitle\",\n \"class\": \"v-stepper-item__subtitle\"\n }, [slots.subtitle?.(slotProps.value) ?? props.subtitle]), slots.default?.(slotProps.value)])]), [[_resolveDirective(\"ripple\"), props.ripple && props.editable, null]]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperItem.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { VStepperSymbol } from \"./shared.mjs\";\nimport { makeVWindowProps, VWindow } from \"../VWindow/VWindow.mjs\"; // Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVStepperWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory'])\n}, 'VStepperWindow');\nexport const VStepperWindow = genericComponent()({\n name: 'VStepperWindow',\n props: makeVStepperWindowProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const group = inject(VStepperSymbol, null);\n const _model = useProxiedModel(props, 'modelValue');\n const model = computed({\n get() {\n // Always return modelValue if defined\n // or if not within a VStepper group\n if (_model.value != null || !group) return _model.value;\n\n // If inside of a VStepper, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value;\n },\n set(val) {\n _model.value = val;\n }\n });\n useRender(() => {\n const windowProps = VWindow.filterProps(props);\n return _createVNode(VWindow, _mergeProps({\n \"_as\": \"VStepperWindow\"\n }, windowProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-stepper-window', props.class],\n \"style\": props.style,\n \"mandatory\": false,\n \"touch\": false\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperWindow.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVWindowItemProps, VWindowItem } from \"../VWindow/VWindowItem.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVStepperWindowItemProps = propsFactory({\n ...makeVWindowItemProps()\n}, 'VStepperWindowItem');\nexport const VStepperWindowItem = genericComponent()({\n name: 'VStepperWindowItem',\n props: makeVStepperWindowItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props);\n return _createVNode(VWindowItem, _mergeProps({\n \"_as\": \"VStepperWindowItem\"\n }, windowItemProps, {\n \"class\": ['v-stepper-window-item', props.class],\n \"style\": props.style\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperWindowItem.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VStepper.css\";\n\n// Components\nimport { VStepperSymbol } from \"./shared.mjs\";\nimport { makeVStepperActionsProps, VStepperActions } from \"./VStepperActions.mjs\";\nimport { VStepperHeader } from \"./VStepperHeader.mjs\";\nimport { VStepperItem } from \"./VStepperItem.mjs\";\nimport { VStepperWindow } from \"./VStepperWindow.mjs\";\nimport { VStepperWindowItem } from \"./VStepperWindowItem.mjs\";\nimport { VDivider } from \"../VDivider/index.mjs\";\nimport { makeVSheetProps, VSheet } from \"../VSheet/VSheet.mjs\"; // Composables\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\"; // Utilities\nimport { computed, toRefs } from 'vue';\nimport { genericComponent, getPropertyFromItem, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeStepperProps = propsFactory({\n altLabels: Boolean,\n bgColor: String,\n completeIcon: String,\n editIcon: String,\n editable: Boolean,\n errorIcon: String,\n hideActions: Boolean,\n items: {\n type: Array,\n default: () => []\n },\n itemTitle: {\n type: String,\n default: 'title'\n },\n itemValue: {\n type: String,\n default: 'value'\n },\n nonLinear: Boolean,\n flat: Boolean,\n ...makeDisplayProps()\n}, 'Stepper');\nexport const makeVStepperProps = propsFactory({\n ...makeStepperProps(),\n ...makeGroupProps({\n mandatory: 'force',\n selectedClass: 'v-stepper-item--selected'\n }),\n ...makeVSheetProps(),\n ...only(makeVStepperActionsProps(), ['prevText', 'nextText'])\n}, 'VStepper');\nexport const VStepper = genericComponent()({\n name: 'VStepper',\n props: makeVStepperProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n items: _items,\n next,\n prev,\n selected\n } = useGroup(props, VStepperSymbol);\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const {\n completeIcon,\n editIcon,\n errorIcon,\n color,\n editable,\n prevText,\n nextText\n } = toRefs(props);\n const items = computed(() => props.items.map((item, index) => {\n const title = getPropertyFromItem(item, props.itemTitle, item);\n const value = getPropertyFromItem(item, props.itemValue, index + 1);\n return {\n title,\n value,\n raw: item\n };\n }));\n const activeIndex = computed(() => {\n return _items.value.findIndex(item => selected.value.includes(item.id));\n });\n const disabled = computed(() => {\n if (props.disabled) return props.disabled;\n if (activeIndex.value === 0) return 'prev';\n if (activeIndex.value === _items.value.length - 1) return 'next';\n return false;\n });\n provideDefaults({\n VStepperItem: {\n editable,\n errorIcon,\n completeIcon,\n editIcon,\n prevText,\n nextText\n },\n VStepperActions: {\n color,\n disabled,\n prevText,\n nextText\n }\n });\n useRender(() => {\n const sheetProps = VSheet.filterProps(props);\n const hasHeader = !!(slots.header || props.items.length);\n const hasWindow = props.items.length > 0;\n const hasActions = !props.hideActions && !!(hasWindow || slots.actions);\n return _createVNode(VSheet, _mergeProps(sheetProps, {\n \"color\": props.bgColor,\n \"class\": ['v-stepper', {\n 'v-stepper--alt-labels': props.altLabels,\n 'v-stepper--flat': props.flat,\n 'v-stepper--non-linear': props.nonLinear,\n 'v-stepper--mobile': mobile.value\n }, displayClasses.value, props.class],\n \"style\": props.style\n }), {\n default: () => [hasHeader && _createVNode(VStepperHeader, {\n \"key\": \"stepper-header\"\n }, {\n default: () => [items.value.map((_ref2, index) => {\n let {\n raw,\n ...item\n } = _ref2;\n return _createVNode(_Fragment, null, [!!index && _createVNode(VDivider, null, null), _createVNode(VStepperItem, item, {\n default: slots[`header-item.${item.value}`] ?? slots.header,\n icon: slots.icon,\n title: slots.title,\n subtitle: slots.subtitle\n })]);\n })]\n }), hasWindow && _createVNode(VStepperWindow, {\n \"key\": \"stepper-window\"\n }, {\n default: () => [items.value.map(item => _createVNode(VStepperWindowItem, {\n \"value\": item.value\n }, {\n default: () => slots[`item.${item.value}`]?.(item) ?? slots.item?.(item)\n }))]\n }), slots.default?.({\n prev,\n next\n }), hasActions && (slots.actions?.({\n next,\n prev\n }) ?? _createVNode(VStepperActions, {\n \"key\": \"stepper-actions\",\n \"onClick:prev\": prev,\n \"onClick:next\": next\n }, slots))]\n });\n });\n return {\n prev,\n next\n };\n }\n});\n//# sourceMappingURL=VStepper.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSwitch.css\";\n\n// Components\nimport { VScaleTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VProgressCircular } from \"../VProgressCircular/index.mjs\";\nimport { makeVSelectionControlProps, VSelectionControl } from \"../VSelectionControl/VSelectionControl.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { LoaderSlot, useLoader } from \"../../composables/loader.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, IN_BROWSER, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSwitchProps = propsFactory({\n indeterminate: Boolean,\n inset: Boolean,\n flat: Boolean,\n loading: {\n type: [Boolean, String],\n default: false\n },\n ...makeVInputProps(),\n ...makeVSelectionControlProps()\n}, 'VSwitch');\nexport const VSwitch = genericComponent()({\n name: 'VSwitch',\n inheritAttrs: false,\n props: makeVSwitchProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:indeterminate': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const indeterminate = useProxiedModel(props, 'indeterminate');\n const model = useProxiedModel(props, 'modelValue');\n const {\n loaderClasses\n } = useLoader(props);\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const control = ref();\n const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;\n const loaderColor = computed(() => {\n return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;\n });\n const uid = getUid();\n const id = computed(() => props.id || `switch-${uid}`);\n function onChange() {\n if (indeterminate.value) {\n indeterminate.value = false;\n }\n }\n function onTrackClick(e) {\n e.stopPropagation();\n e.preventDefault();\n control.value?.input?.click();\n }\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const controlProps = VSelectionControl.filterProps(props);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-switch', {\n 'v-switch--flat': props.flat\n }, {\n 'v-switch--inset': props.inset\n }, {\n 'v-switch--indeterminate': indeterminate.value\n }, loaderClasses.value, props.class]\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": id.value,\n \"focused\": isFocused.value,\n \"style\": props.style\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid\n } = _ref2;\n const slotProps = {\n model,\n isValid\n };\n return _createVNode(VSelectionControl, _mergeProps({\n \"ref\": control\n }, controlProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": [$event => model.value = $event, onChange],\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"type\": \"checkbox\",\n \"aria-checked\": indeterminate.value ? 'mixed' : undefined,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value,\n \"onFocus\": focus,\n \"onBlur\": blur\n }, controlAttrs), {\n ...slots,\n default: _ref3 => {\n let {\n backgroundColorClasses,\n backgroundColorStyles\n } = _ref3;\n return _createVNode(\"div\", {\n \"class\": ['v-switch__track', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined],\n \"style\": backgroundColorStyles.value,\n \"onClick\": onTrackClick\n }, [slots['track-true'] && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-switch__track-true\"\n }, [slots['track-true'](slotProps)]), slots['track-false'] && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-switch__track-false\"\n }, [slots['track-false'](slotProps)])]);\n },\n input: _ref4 => {\n let {\n inputNode,\n icon,\n backgroundColorClasses,\n backgroundColorStyles\n } = _ref4;\n return _createVNode(_Fragment, null, [inputNode, _createVNode(\"div\", {\n \"class\": ['v-switch__thumb', {\n 'v-switch__thumb--filled': icon || props.loading\n }, props.inset || isForcedColorsModeActive ? undefined : backgroundColorClasses.value],\n \"style\": props.inset ? undefined : backgroundColorStyles.value\n }, [slots.thumb ? _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VIcon: {\n icon,\n size: 'x-small'\n }\n }\n }, {\n default: () => [slots.thumb({\n ...slotProps,\n icon\n })]\n }) : _createVNode(VScaleTransition, null, {\n default: () => [!props.loading ? icon && _createVNode(VIcon, {\n \"key\": String(icon),\n \"icon\": icon,\n \"size\": \"x-small\"\n }, null) : _createVNode(LoaderSlot, {\n \"name\": \"v-switch\",\n \"active\": true,\n \"color\": isValid.value === false ? undefined : loaderColor.value\n }, {\n default: slotProps => slots.loader ? slots.loader(slotProps) : _createVNode(VProgressCircular, {\n \"active\": slotProps.isActive,\n \"color\": slotProps.color,\n \"indeterminate\": true,\n \"size\": \"16\",\n \"width\": \"2\"\n }, null)\n })]\n })])]);\n }\n });\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VSwitch.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VSystemBar.css\";\n\n// Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, shallowRef, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVSystemBarProps = propsFactory({\n color: String,\n height: [Number, String],\n window: Boolean,\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VSystemBar');\nexport const VSystemBar = genericComponent()({\n name: 'VSystemBar',\n props: makeVSystemBarProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n ssrBootStyles\n } = useSsrBoot();\n const height = computed(() => props.height ?? (props.window ? 32 : 24));\n const {\n layoutItemStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: shallowRef('top'),\n layoutSize: height,\n elementSize: height,\n active: computed(() => true),\n absolute: toRef(props, 'absolute')\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-system-bar', {\n 'v-system-bar--window': props.window\n }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VSystemBar.mjs.map","// Types\n\nexport const VTabsSymbol = Symbol.for('vuetify:v-tabs');\n//# sourceMappingURL=shared.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VTab.css\";\n\n// Components\nimport { makeVBtnProps, VBtn } from \"../VBtn/VBtn.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { VTabsSymbol } from \"./shared.mjs\";\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n sliderColor: String,\n hideSlider: Boolean,\n direction: {\n type: String,\n default: 'horizontal'\n },\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text'\n }), ['active', 'block', 'flat', 'location', 'position', 'symbol'])\n}, 'VTab');\nexport const VTab = genericComponent()({\n name: 'VTab',\n props: makeVTabProps(),\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n const {\n textColorClasses: sliderColorClasses,\n textColorStyles: sliderColorStyles\n } = useTextColor(props, 'sliderColor');\n const rootEl = ref();\n const sliderEl = ref();\n const isHorizontal = computed(() => props.direction === 'horizontal');\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false);\n function updateSlider(_ref2) {\n let {\n value\n } = _ref2;\n if (value) {\n const prevEl = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider');\n const nextEl = sliderEl.value;\n if (!prevEl || !nextEl) return;\n const color = getComputedStyle(prevEl).color;\n const prevBox = prevEl.getBoundingClientRect();\n const nextBox = nextEl.getBoundingClientRect();\n const xy = isHorizontal.value ? 'x' : 'y';\n const XY = isHorizontal.value ? 'X' : 'Y';\n const rightBottom = isHorizontal.value ? 'right' : 'bottom';\n const widthHeight = isHorizontal.value ? 'width' : 'height';\n const prevPos = prevBox[xy];\n const nextPos = nextBox[xy];\n const delta = prevPos > nextPos ? prevBox[rightBottom] - nextBox[rightBottom] : prevBox[xy] - nextBox[xy];\n const origin = Math.sign(delta) > 0 ? isHorizontal.value ? 'right' : 'bottom' : Math.sign(delta) < 0 ? isHorizontal.value ? 'left' : 'top' : 'center';\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight]);\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0;\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0;\n const sigma = 1.5;\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n transform: [`translate${XY}(${delta}px) scale${XY}(${initialScale})`, `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`, 'none'],\n transformOrigin: Array(3).fill(origin)\n }, {\n duration: 225,\n easing: standardEasing\n });\n }\n }\n useRender(() => {\n const btnProps = VBtn.filterProps(props);\n return _createVNode(VBtn, _mergeProps({\n \"symbol\": VTabsSymbol,\n \"ref\": rootEl,\n \"class\": ['v-tab', props.class],\n \"style\": props.style,\n \"tabindex\": isSelected.value ? 0 : -1,\n \"role\": \"tab\",\n \"aria-selected\": String(isSelected.value),\n \"active\": false\n }, btnProps, attrs, {\n \"block\": props.fixed,\n \"maxWidth\": props.fixed ? 300 : undefined,\n \"onGroup:selected\": updateSlider\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [slots.default?.() ?? props.text, !props.hideSlider && _createVNode(\"div\", {\n \"ref\": sliderEl,\n \"class\": ['v-tab__slider', sliderColorClasses.value],\n \"style\": sliderColorStyles.value\n }, null)])\n });\n });\n return forwardRefs({}, rootEl);\n }\n});\n//# sourceMappingURL=VTab.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVWindowProps, VWindow } from \"../VWindow/VWindow.mjs\"; // Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { VTabsSymbol } from \"./shared.mjs\";\nexport const makeVTabsWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory'])\n}, 'VTabsWindow');\nexport const VTabsWindow = genericComponent()({\n name: 'VTabsWindow',\n props: makeVTabsWindowProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const group = inject(VTabsSymbol, null);\n const _model = useProxiedModel(props, 'modelValue');\n const model = computed({\n get() {\n // Always return modelValue if defined\n // or if not within a VTabs group\n if (_model.value != null || !group) return _model.value;\n\n // If inside of a VTabs, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value;\n },\n set(val) {\n _model.value = val;\n }\n });\n useRender(() => {\n const windowProps = VWindow.filterProps(props);\n return _createVNode(VWindow, _mergeProps({\n \"_as\": \"VTabsWindow\"\n }, windowProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-tabs-window', props.class],\n \"style\": props.style,\n \"mandatory\": false,\n \"touch\": false\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabsWindow.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVWindowItemProps, VWindowItem } from \"../VWindow/VWindowItem.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVTabsWindowItemProps = propsFactory({\n ...makeVWindowItemProps()\n}, 'VTabsWindowItem');\nexport const VTabsWindowItem = genericComponent()({\n name: 'VTabsWindowItem',\n props: makeVTabsWindowItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props);\n return _createVNode(VWindowItem, _mergeProps({\n \"_as\": \"VTabsWindowItem\"\n }, windowItemProps, {\n \"class\": ['v-tabs-window-item', props.class],\n \"style\": props.style\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabsWindowItem.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VTabs.css\";\n\n// Components\nimport { VTab } from \"./VTab.mjs\";\nimport { VTabsWindow } from \"./VTabsWindow.mjs\";\nimport { VTabsWindowItem } from \"./VTabsWindowItem.mjs\";\nimport { makeVSlideGroupProps, VSlideGroup } from \"../VSlideGroup/VSlideGroup.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { convertToUnit, genericComponent, isObject, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { VTabsSymbol } from \"./shared.mjs\";\nfunction parseItems(items) {\n if (!items) return [];\n return items.map(item => {\n if (!isObject(item)) return {\n text: item,\n value: item\n };\n return item;\n });\n}\nexport const makeVTabsProps = propsFactory({\n alignTabs: {\n type: String,\n default: 'start'\n },\n color: String,\n fixedTabs: Boolean,\n items: {\n type: Array,\n default: () => []\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined\n },\n hideSlider: Boolean,\n sliderColor: String,\n ...makeVSlideGroupProps({\n mandatory: 'force',\n selectedClass: 'v-tab-item--selected'\n }),\n ...makeDensityProps(),\n ...makeTagProps()\n}, 'VTabs');\nexport const VTabs = genericComponent()({\n name: 'VTabs',\n props: makeVTabsProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const items = computed(() => parseItems(props.items));\n const {\n densityClasses\n } = useDensity(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n scopeId\n } = useScopeId();\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider')\n }\n });\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props);\n const hasWindow = !!(slots.window || props.items.length > 0);\n return _createVNode(_Fragment, null, [_createVNode(VSlideGroup, _mergeProps(slideGroupProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-tabs', `v-tabs--${props.direction}`, `v-tabs--align-tabs-${props.alignTabs}`, {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked\n }, densityClasses.value, backgroundColorClasses.value, props.class],\n \"style\": [{\n '--v-tabs-height': convertToUnit(props.height)\n }, backgroundColorStyles.value, props.style],\n \"role\": \"tablist\",\n \"symbol\": VTabsSymbol\n }, scopeId, attrs), {\n default: () => [slots.default?.() ?? items.value.map(item => slots.tab?.({\n item\n }) ?? _createVNode(VTab, _mergeProps(item, {\n \"key\": item.text,\n \"value\": item.value\n }), {\n default: slots[`tab.${item.value}`] ? () => slots[`tab.${item.value}`]?.({\n item\n }) : undefined\n }))]\n }), hasWindow && _createVNode(VTabsWindow, _mergeProps({\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"key\": \"tabs-window\"\n }, scopeId), {\n default: () => [items.value.map(item => slots.item?.({\n item\n }) ?? _createVNode(VTabsWindowItem, {\n \"value\": item.value\n }, {\n default: () => slots[`item.${item.value}`]?.({\n item\n })\n })), slots.window?.()]\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabs.mjs.map","import { vModelText as _vModelText, withDirectives as _withDirectives, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VTextarea.css\";\nimport \"../VTextField/VTextField.css\";\n\n// Components\nimport { VCounter } from \"../VCounter/VCounter.mjs\";\nimport { VField } from \"../VField/index.mjs\";\nimport { filterFieldProps, makeVFieldProps } from \"../VField/VField.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Directives\nimport Intersect from \"../../directives/intersect/index.mjs\"; // Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTextareaProps = propsFactory({\n autoGrow: Boolean,\n autofocus: Boolean,\n counter: [Boolean, Number, String],\n counterValue: Function,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n noResize: Boolean,\n rows: {\n type: [Number, String],\n default: 5,\n validator: v => !isNaN(parseFloat(v))\n },\n maxRows: {\n type: [Number, String],\n validator: v => !isNaN(parseFloat(v))\n },\n suffix: String,\n modelModifiers: Object,\n ...makeVInputProps(),\n ...makeVFieldProps()\n}, 'VTextarea');\nexport const VTextarea = genericComponent()({\n name: 'VTextarea',\n directives: {\n Intersect\n },\n inheritAttrs: false,\n props: makeVTextareaProps(),\n emits: {\n 'click:control': e => true,\n 'mousedown:control': e => true,\n 'update:focused': focused => true,\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : (model.value || '').toString().length;\n });\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength;\n if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;\n return props.counter;\n });\n function onIntersect(isIntersecting, entries) {\n if (!props.autofocus || !isIntersecting) return;\n entries[0].target?.focus?.();\n }\n const vInputRef = ref();\n const vFieldRef = ref();\n const controlHeight = shallowRef('');\n const textareaRef = ref();\n const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);\n function onFocus() {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus();\n }\n if (!isFocused.value) focus();\n }\n function onControlClick(e) {\n onFocus();\n emit('click:control', e);\n }\n function onControlMousedown(e) {\n emit('mousedown:control', e);\n }\n function onClear(e) {\n e.stopPropagation();\n onFocus();\n nextTick(() => {\n model.value = '';\n callEvent(props['onClick:clear'], e);\n });\n }\n function onInput(e) {\n const el = e.target;\n model.value = el.value;\n if (props.modelModifiers?.trim) {\n const caretPosition = [el.selectionStart, el.selectionEnd];\n nextTick(() => {\n el.selectionStart = caretPosition[0];\n el.selectionEnd = caretPosition[1];\n });\n }\n }\n const sizerRef = ref();\n const rows = ref(+props.rows);\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n watchEffect(() => {\n if (!props.autoGrow) rows.value = +props.rows;\n });\n function calculateInputHeight() {\n if (!props.autoGrow) return;\n nextTick(() => {\n if (!sizerRef.value || !vFieldRef.value) return;\n const style = getComputedStyle(sizerRef.value);\n const fieldStyle = getComputedStyle(vFieldRef.value.$el);\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) + parseFloat(style.getPropertyValue('--v-input-padding-top')) + parseFloat(style.getPropertyValue('--v-field-padding-bottom'));\n const height = sizerRef.value.scrollHeight;\n const lineHeight = parseFloat(style.lineHeight);\n const minHeight = Math.max(parseFloat(props.rows) * lineHeight + padding, parseFloat(fieldStyle.getPropertyValue('--v-input-control-height')));\n const maxHeight = parseFloat(props.maxRows) * lineHeight + padding || Infinity;\n const newHeight = clamp(height ?? 0, minHeight, maxHeight);\n rows.value = Math.floor((newHeight - padding) / lineHeight);\n controlHeight.value = convertToUnit(newHeight);\n });\n }\n onMounted(calculateInputHeight);\n watch(model, calculateInputHeight);\n watch(() => props.rows, calculateInputHeight);\n watch(() => props.maxRows, calculateInputHeight);\n watch(() => props.density, calculateInputHeight);\n let observer;\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight);\n observer.observe(sizerRef.value);\n } else {\n observer?.disconnect();\n }\n });\n onBeforeUnmount(() => {\n observer?.disconnect();\n });\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue);\n const hasDetails = !!(hasCounter || slots.details);\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const {\n modelValue: _,\n ...inputProps\n } = VInput.filterProps(props);\n const fieldProps = filterFieldProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": vInputRef,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-textarea v-text-field', {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n 'v-input--plain-underlined': isPlainOrUnderlined.value\n }, props.class],\n \"style\": props.style\n }, rootAttrs, inputProps, {\n \"centerAffix\": rows.value === 1 && !isPlainOrUnderlined.value,\n \"focused\": isFocused.value\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid\n } = _ref2;\n return _createVNode(VField, _mergeProps({\n \"ref\": vFieldRef,\n \"style\": {\n '--v-textarea-control-height': controlHeight.value\n },\n \"onClick\": onControlClick,\n \"onMousedown\": onControlMousedown,\n \"onClick:clear\": onClear,\n \"onClick:prependInner\": props['onClick:prependInner'],\n \"onClick:appendInner\": props['onClick:appendInner']\n }, fieldProps, {\n \"id\": id.value,\n \"active\": isActive.value || isDirty.value,\n \"centerAffix\": rows.value === 1 && !isPlainOrUnderlined.value,\n \"dirty\": isDirty.value || props.dirty,\n \"disabled\": isDisabled.value,\n \"focused\": isFocused.value,\n \"error\": isValid.value === false\n }), {\n ...slots,\n default: _ref3 => {\n let {\n props: {\n class: fieldClass,\n ...slotProps\n }\n } = _ref3;\n return _createVNode(_Fragment, null, [props.prefix && _createVNode(\"span\", {\n \"class\": \"v-text-field__prefix\"\n }, [props.prefix]), _withDirectives(_createVNode(\"textarea\", _mergeProps({\n \"ref\": textareaRef,\n \"class\": fieldClass,\n \"value\": model.value,\n \"onInput\": onInput,\n \"autofocus\": props.autofocus,\n \"readonly\": isReadonly.value,\n \"disabled\": isDisabled.value,\n \"placeholder\": props.placeholder,\n \"rows\": props.rows,\n \"name\": props.name,\n \"onFocus\": onFocus,\n \"onBlur\": blur\n }, slotProps, inputAttrs), null), [[_resolveDirective(\"intersect\"), {\n handler: onIntersect\n }, null, {\n once: true\n }]]), props.autoGrow && _withDirectives(_createVNode(\"textarea\", {\n \"class\": [fieldClass, 'v-textarea__sizer'],\n \"id\": `${slotProps.id}-sizer`,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"ref\": sizerRef,\n \"readonly\": true,\n \"aria-hidden\": \"true\"\n }, null), [[_vModelText, model.value]]), props.suffix && _createVNode(\"span\", {\n \"class\": \"v-text-field__suffix\"\n }, [props.suffix])]);\n }\n });\n },\n details: hasDetails ? slotProps => _createVNode(_Fragment, null, [slots.details?.(slotProps), hasCounter && _createVNode(_Fragment, null, [_createVNode(\"span\", null, null), _createVNode(VCounter, {\n \"active\": props.persistentCounter || isFocused.value,\n \"value\": counterValue.value,\n \"max\": max.value,\n \"disabled\": props.disabled\n }, slots.counter)])]) : undefined\n });\n });\n return forwardRefs({}, vInputRef, vFieldRef, textareaRef);\n }\n});\n//# sourceMappingURL=VTextarea.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VThemeProvider.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\";\nexport const makeVThemeProviderProps = propsFactory({\n withBackground: Boolean,\n ...makeComponentProps(),\n ...makeThemeProps(),\n ...makeTagProps()\n}, 'VThemeProvider');\nexport const VThemeProvider = genericComponent()({\n name: 'VThemeProvider',\n props: makeVThemeProviderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n return () => {\n if (!props.withBackground) return slots.default?.();\n return _createVNode(props.tag, {\n \"class\": ['v-theme-provider', themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.default?.()]\n });\n };\n }\n});\n//# sourceMappingURL=VThemeProvider.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeSizeProps, useSize } from \"../../composables/size.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVTimelineDividerProps = propsFactory({\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n icon: IconValue,\n iconColor: String,\n lineColor: String,\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeElevationProps()\n}, 'VTimelineDivider');\nexport const VTimelineDivider = genericComponent()({\n name: 'VTimelineDivider',\n props: makeVTimelineDividerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n sizeClasses,\n sizeStyles\n } = useSize(props, 'v-timeline-divider__dot');\n const {\n backgroundColorStyles,\n backgroundColorClasses\n } = useBackgroundColor(toRef(props, 'dotColor'));\n const {\n roundedClasses\n } = useRounded(props, 'v-timeline-divider__dot');\n const {\n elevationClasses\n } = useElevation(props);\n const {\n backgroundColorClasses: lineColorClasses,\n backgroundColorStyles: lineColorStyles\n } = useBackgroundColor(toRef(props, 'lineColor'));\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-timeline-divider', {\n 'v-timeline-divider--fill-dot': props.fillDot\n }, props.class],\n \"style\": props.style\n }, [_createVNode(\"div\", {\n \"class\": ['v-timeline-divider__before', lineColorClasses.value],\n \"style\": lineColorStyles.value\n }, null), !props.hideDot && _createVNode(\"div\", {\n \"key\": \"dot\",\n \"class\": ['v-timeline-divider__dot', elevationClasses.value, roundedClasses.value, sizeClasses.value],\n \"style\": sizeStyles.value\n }, [_createVNode(\"div\", {\n \"class\": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],\n \"style\": backgroundColorStyles.value\n }, [!slots.default ? _createVNode(VIcon, {\n \"key\": \"icon\",\n \"color\": props.iconColor,\n \"icon\": props.icon,\n \"size\": props.size\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"icon-defaults\",\n \"disabled\": !props.icon,\n \"defaults\": {\n VIcon: {\n color: props.iconColor,\n icon: props.icon,\n size: props.size\n }\n }\n }, slots.default)])]), _createVNode(\"div\", {\n \"class\": ['v-timeline-divider__after', lineColorClasses.value],\n \"style\": lineColorStyles.value\n }, null)]));\n return {};\n }\n});\n//# sourceMappingURL=VTimelineDivider.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VTimelineDivider } from \"./VTimelineDivider.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeRoundedProps } from \"../../composables/rounded.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { ref, shallowRef, watch } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVTimelineItemProps = propsFactory({\n density: String,\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n hideOpposite: {\n type: Boolean,\n default: undefined\n },\n icon: IconValue,\n iconColor: String,\n lineInset: [Number, String],\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps()\n}, 'VTimelineItem');\nexport const VTimelineItem = genericComponent()({\n name: 'VTimelineItem',\n props: makeVTimelineItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const dotSize = shallowRef(0);\n const dotRef = ref();\n watch(dotRef, newValue => {\n if (!newValue) return;\n dotSize.value = newValue.$el.querySelector('.v-timeline-divider__dot')?.getBoundingClientRect().width ?? 0;\n }, {\n flush: 'post'\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-timeline-item', {\n 'v-timeline-item--fill-dot': props.fillDot\n }, props.class],\n \"style\": [{\n '--v-timeline-dot-size': convertToUnit(dotSize.value),\n '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)\n }, props.style]\n }, [_createVNode(\"div\", {\n \"class\": \"v-timeline-item__body\",\n \"style\": dimensionStyles.value\n }, [slots.default?.()]), _createVNode(VTimelineDivider, {\n \"ref\": dotRef,\n \"hideDot\": props.hideDot,\n \"icon\": props.icon,\n \"iconColor\": props.iconColor,\n \"size\": props.size,\n \"elevation\": props.elevation,\n \"dotColor\": props.dotColor,\n \"fillDot\": props.fillDot,\n \"rounded\": props.rounded\n }, {\n default: slots.icon\n }), props.density !== 'compact' && _createVNode(\"div\", {\n \"class\": \"v-timeline-item__opposite\"\n }, [!props.hideOpposite && slots.opposite?.()])]));\n return {};\n }\n});\n//# sourceMappingURL=VTimelineItem.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VTimeline.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { convertToUnit, genericComponent, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { makeVTimelineItemProps } from \"./VTimelineItem.mjs\";\nexport const makeVTimelineProps = propsFactory({\n align: {\n type: String,\n default: 'center',\n validator: v => ['center', 'start'].includes(v)\n },\n direction: {\n type: String,\n default: 'vertical',\n validator: v => ['vertical', 'horizontal'].includes(v)\n },\n justify: {\n type: String,\n default: 'auto',\n validator: v => ['auto', 'center'].includes(v)\n },\n side: {\n type: String,\n validator: v => v == null || ['start', 'end'].includes(v)\n },\n lineThickness: {\n type: [String, Number],\n default: 2\n },\n lineColor: String,\n truncateLine: {\n type: String,\n validator: v => ['start', 'end', 'both'].includes(v)\n },\n ...only(makeVTimelineItemProps({\n lineInset: 0\n }), ['dotColor', 'fillDot', 'hideOpposite', 'iconColor', 'lineInset', 'size']),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VTimeline');\nexport const VTimeline = genericComponent()({\n name: 'VTimeline',\n props: makeVTimelineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n rtlClasses\n } = useRtl();\n provideDefaults({\n VTimelineDivider: {\n lineColor: toRef(props, 'lineColor')\n },\n VTimelineItem: {\n density: toRef(props, 'density'),\n dotColor: toRef(props, 'dotColor'),\n fillDot: toRef(props, 'fillDot'),\n hideOpposite: toRef(props, 'hideOpposite'),\n iconColor: toRef(props, 'iconColor'),\n lineColor: toRef(props, 'lineColor'),\n lineInset: toRef(props, 'lineInset'),\n size: toRef(props, 'size')\n }\n });\n const sideClasses = computed(() => {\n const side = props.side ? props.side : props.density !== 'default' ? 'end' : null;\n return side && `v-timeline--side-${side}`;\n });\n const truncateClasses = computed(() => {\n const classes = ['v-timeline--truncate-line-start', 'v-timeline--truncate-line-end'];\n switch (props.truncateLine) {\n case 'both':\n return classes;\n case 'start':\n return classes[0];\n case 'end':\n return classes[1];\n default:\n return null;\n }\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {\n 'v-timeline--inset-line': !!props.lineInset\n }, themeClasses.value, densityClasses.value, sideClasses.value, rtlClasses.value, props.class],\n \"style\": [{\n '--v-timeline-line-thickness': convertToUnit(props.lineThickness)\n }, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VTimeline.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeVariantProps } from \"../../composables/variant.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVToolbarItemsProps = propsFactory({\n ...makeComponentProps(),\n ...makeVariantProps({\n variant: 'text'\n })\n}, 'VToolbarItems');\nexport const VToolbarItems = genericComponent()({\n name: 'VToolbarItems',\n props: makeVToolbarItemsProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n provideDefaults({\n VBtn: {\n color: toRef(props, 'color'),\n height: 'inherit',\n variant: toRef(props, 'variant')\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-toolbar-items', props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VToolbarItems.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VTooltip.css\";\n\n// Components\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\"; // Composables\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\"; // Utilities\nimport { computed, mergeProps, ref } from 'vue';\nimport { genericComponent, getUid, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTooltipProps = propsFactory({\n id: String,\n text: String,\n ...omit(makeVOverlayProps({\n closeOnBack: false,\n location: 'end',\n locationStrategy: 'connected',\n eager: true,\n minWidth: 0,\n offset: 10,\n openOnClick: false,\n openOnHover: true,\n origin: 'auto',\n scrim: false,\n scrollStrategy: 'reposition',\n transition: false\n }), ['absolute', 'persistent'])\n}, 'VTooltip');\nexport const VTooltip = genericComponent()({\n name: 'VTooltip',\n props: makeVTooltipProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n scopeId\n } = useScopeId();\n const uid = getUid();\n const id = computed(() => props.id || `v-tooltip-${uid}`);\n const overlay = ref();\n const location = computed(() => {\n return props.location.split(' ').length > 1 ? props.location : props.location + ' center';\n });\n const origin = computed(() => {\n return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';\n });\n const transition = computed(() => {\n if (props.transition) return props.transition;\n return isActive.value ? 'scale-transition' : 'fade-transition';\n });\n const activatorProps = computed(() => mergeProps({\n 'aria-describedby': id.value\n }, props.activatorProps));\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-tooltip', props.class],\n \"style\": props.style,\n \"id\": id.value\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"transition\": transition.value,\n \"absolute\": true,\n \"location\": location.value,\n \"origin\": origin.value,\n \"persistent\": true,\n \"role\": \"tooltip\",\n \"activatorProps\": activatorProps.value,\n \"_disableGlobalStack\": true\n }, scopeId), {\n activator: slots.activator,\n default: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return slots.default?.(...args) ?? props.text;\n }\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VTooltip.mjs.map","// Composables\nimport { makeValidationProps, useValidation } from \"../../composables/validation.mjs\"; // Utilities\nimport { genericComponent } from \"../../util/index.mjs\"; // Types\nexport const VValidation = genericComponent()({\n name: 'VValidation',\n props: makeValidationProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const validation = useValidation(props, 'validation');\n return () => slots.default?.(validation);\n }\n});\n//# sourceMappingURL=VValidation.mjs.map","// Types\n\nfunction mounted(el, binding) {\n const modifiers = binding.modifiers || {};\n const value = binding.value;\n const {\n once,\n immediate,\n ...modifierKeys\n } = modifiers;\n const defaultValue = !Object.keys(modifierKeys).length;\n const {\n handler,\n options\n } = typeof value === 'object' ? value : {\n handler: value,\n options: {\n attributes: modifierKeys?.attr ?? defaultValue,\n characterData: modifierKeys?.char ?? defaultValue,\n childList: modifierKeys?.child ?? defaultValue,\n subtree: modifierKeys?.sub ?? defaultValue\n }\n };\n const observer = new MutationObserver(function () {\n let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let observer = arguments.length > 1 ? arguments[1] : undefined;\n handler?.(mutations, observer);\n if (once) unmounted(el, binding);\n });\n if (immediate) handler?.([], observer);\n el._mutate = Object(el._mutate);\n el._mutate[binding.instance.$.uid] = {\n observer\n };\n observer.observe(el, options);\n}\nfunction unmounted(el, binding) {\n if (!el._mutate?.[binding.instance.$.uid]) return;\n el._mutate[binding.instance.$.uid].observer.disconnect();\n delete el._mutate[binding.instance.$.uid];\n}\nexport const Mutate = {\n mounted,\n unmounted\n};\nexport default Mutate;\n//# sourceMappingURL=index.mjs.map","// Types\n\nfunction mounted(el, binding) {\n const handler = binding.value;\n const options = {\n passive: !binding.modifiers?.active\n };\n window.addEventListener('resize', handler, options);\n el._onResize = Object(el._onResize);\n el._onResize[binding.instance.$.uid] = {\n handler,\n options\n };\n if (!binding.modifiers?.quiet) {\n handler();\n }\n}\nfunction unmounted(el, binding) {\n if (!el._onResize?.[binding.instance.$.uid]) return;\n const {\n handler,\n options\n } = el._onResize[binding.instance.$.uid];\n window.removeEventListener('resize', handler, options);\n delete el._onResize[binding.instance.$.uid];\n}\nexport const Resize = {\n mounted,\n unmounted\n};\nexport default Resize;\n//# sourceMappingURL=index.mjs.map","// Types\n\nfunction mounted(el, binding) {\n const {\n self = false\n } = binding.modifiers ?? {};\n const value = binding.value;\n const options = typeof value === 'object' && value.options || {\n passive: true\n };\n const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;\n const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;\n if (!target) return;\n target.addEventListener('scroll', handler, options);\n el._onScroll = Object(el._onScroll);\n el._onScroll[binding.instance.$.uid] = {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target\n };\n}\nfunction unmounted(el, binding) {\n if (!el._onScroll?.[binding.instance.$.uid]) return;\n const {\n handler,\n options,\n target = el\n } = el._onScroll[binding.instance.$.uid];\n target.removeEventListener('scroll', handler, options);\n delete el._onScroll[binding.instance.$.uid];\n}\nfunction updated(el, binding) {\n if (binding.value === binding.oldValue) return;\n unmounted(el, binding);\n mounted(el, binding);\n}\nexport const Scroll = {\n mounted,\n unmounted,\n updated\n};\nexport default Scroll;\n//# sourceMappingURL=index.mjs.map","// Utilities\nimport { h, mergeProps, render, resolveComponent } from 'vue';\nimport { isObject } from \"../util/index.mjs\"; // Types\nexport function useDirectiveComponent(component, props) {\n const concreteComponent = typeof component === 'string' ? resolveComponent(component) : component;\n const hook = mountComponent(concreteComponent, props);\n return {\n mounted: hook,\n updated: hook,\n unmounted(el) {\n render(null, el);\n }\n };\n}\nfunction mountComponent(component, props) {\n return function (el, binding, vnode) {\n const _props = typeof props === 'function' ? props(binding) : props;\n const text = binding.value?.text ?? binding.value ?? _props?.text;\n const value = isObject(binding.value) ? binding.value : {};\n\n // Get the children from the props or directive value, or the element's children\n const children = () => text ?? el.textContent;\n\n // If vnode.ctx is the same as the instance, then we're bound to a plain element\n // and need to find the nearest parent component instance to inherit provides from\n const provides = (vnode.ctx === binding.instance.$ ? findComponentParent(vnode, binding.instance.$)?.provides : vnode.ctx?.provides) ?? binding.instance.$.provides;\n const node = h(component, mergeProps(_props, value), children);\n node.appContext = Object.assign(Object.create(null), binding.instance.$.appContext, {\n provides\n });\n render(node, el);\n };\n}\nfunction findComponentParent(vnode, root) {\n // Walk the tree from root until we find the child vnode\n const stack = new Set();\n const walk = children => {\n for (const child of children) {\n if (!child) continue;\n if (child === vnode) {\n return true;\n }\n stack.add(child);\n let result;\n if (child.suspense) {\n result = walk([child.ssContent]);\n } else if (Array.isArray(child.children)) {\n result = walk(child.children);\n } else if (child.component?.vnode) {\n result = walk([child.component?.subTree]);\n }\n if (result) {\n return result;\n }\n stack.delete(child);\n }\n return false;\n };\n if (!walk([root.subTree])) {\n throw new Error('Could not find original vnode');\n }\n\n // Return the first component parent\n const result = Array.from(stack).reverse();\n for (const child of result) {\n if (child.component) {\n return child.component;\n }\n }\n return root;\n}\n//# sourceMappingURL=directiveComponent.mjs.map","// Components\nimport { VTooltip } from \"../../components/VTooltip/index.mjs\"; // Composables\nimport { useDirectiveComponent } from \"../../composables/directiveComponent.mjs\"; // Types\nexport const Tooltip = useDirectiveComponent(VTooltip, binding => {\n return {\n activator: 'parent',\n location: binding.arg?.replace('-', ' '),\n text: typeof binding.value === 'boolean' ? undefined : binding.value\n };\n});\nexport default Tooltip;\n//# sourceMappingURL=index.mjs.map","// Composables\nimport { createDate, DateAdapterSymbol, DateOptionsSymbol } from \"./composables/date/date.mjs\";\nimport { createDefaults, DefaultsSymbol } from \"./composables/defaults.mjs\";\nimport { createDisplay, DisplaySymbol } from \"./composables/display.mjs\";\nimport { createGoTo, GoToSymbol } from \"./composables/goto.mjs\";\nimport { createIcons, IconSymbol } from \"./composables/icons.mjs\";\nimport { createLocale, LocaleSymbol } from \"./composables/locale.mjs\";\nimport { createTheme, ThemeSymbol } from \"./composables/theme.mjs\"; // Utilities\nimport { nextTick, reactive } from 'vue';\nimport { defineComponent, getUid, IN_BROWSER, mergeDeep } from \"./util/index.mjs\"; // Types\nexport * from \"./composables/index.mjs\";\nexport function createVuetify() {\n let vuetify = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n blueprint,\n ...rest\n } = vuetify;\n const options = mergeDeep(blueprint, rest);\n const {\n aliases = {},\n components = {},\n directives = {}\n } = options;\n const defaults = createDefaults(options.defaults);\n const display = createDisplay(options.display, options.ssr);\n const theme = createTheme(options.theme);\n const icons = createIcons(options.icons);\n const locale = createLocale(options.locale);\n const date = createDate(options.date, locale);\n const goTo = createGoTo(options.goTo, locale);\n const install = app => {\n for (const key in directives) {\n app.directive(key, directives[key]);\n }\n for (const key in components) {\n app.component(key, components[key]);\n }\n for (const key in aliases) {\n app.component(key, defineComponent({\n ...aliases[key],\n name: key,\n aliasName: aliases[key].name\n }));\n }\n theme.install(app);\n app.provide(DefaultsSymbol, defaults);\n app.provide(DisplaySymbol, display);\n app.provide(ThemeSymbol, theme);\n app.provide(IconSymbol, icons);\n app.provide(LocaleSymbol, locale);\n app.provide(DateOptionsSymbol, date.options);\n app.provide(DateAdapterSymbol, date.instance);\n app.provide(GoToSymbol, goTo);\n if (IN_BROWSER && options.ssr) {\n if (app.$nuxt) {\n app.$nuxt.hook('app:suspense:resolve', () => {\n display.update();\n });\n } else {\n const {\n mount\n } = app;\n app.mount = function () {\n const vm = mount(...arguments);\n nextTick(() => display.update());\n app.mount = mount;\n return vm;\n };\n }\n }\n getUid.reset();\n if (typeof __VUE_OPTIONS_API__ !== 'boolean' || __VUE_OPTIONS_API__) {\n app.mixin({\n computed: {\n $vuetify() {\n return reactive({\n defaults: inject.call(this, DefaultsSymbol),\n display: inject.call(this, DisplaySymbol),\n theme: inject.call(this, ThemeSymbol),\n icons: inject.call(this, IconSymbol),\n locale: inject.call(this, LocaleSymbol),\n date: inject.call(this, DateAdapterSymbol)\n });\n }\n }\n });\n }\n };\n return {\n install,\n defaults,\n display,\n theme,\n icons,\n locale,\n date,\n goTo\n };\n}\nexport const version = \"3.7.2\";\ncreateVuetify.version = version;\n\n// Vue's inject() can only be used in setup\nfunction inject(key) {\n const vm = this.$;\n const provides = vm.parent?.provides ?? vm.vnode.appContext?.provides;\n if (provides && key in provides) {\n return provides[key];\n }\n}\n//# sourceMappingURL=framework.mjs.map","// Composables\nimport { VClassIcon } from \"../composables/icons.mjs\"; // Types\nconst aliases = {\n collapse: 'fas fa-chevron-up',\n complete: 'fas fa-check',\n cancel: 'fas fa-times-circle',\n close: 'fas fa-times',\n delete: 'fas fa-times-circle',\n // delete (e.g. v-chip close)\n clear: 'fas fa-times-circle',\n // delete (e.g. v-chip close)\n success: 'fas fa-check-circle',\n info: 'fas fa-info-circle',\n warning: 'fas fa-exclamation',\n error: 'fas fa-exclamation-triangle',\n prev: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n checkboxOn: 'fas fa-check-square',\n checkboxOff: 'far fa-square',\n // note 'far'\n checkboxIndeterminate: 'fas fa-minus-square',\n delimiter: 'fas fa-circle',\n // for carousel\n sortAsc: 'fas fa-arrow-up',\n sortDesc: 'fas fa-arrow-down',\n expand: 'fas fa-chevron-down',\n menu: 'fas fa-bars',\n subgroup: 'fas fa-caret-down',\n dropdown: 'fas fa-caret-down',\n radioOn: 'far fa-dot-circle',\n radioOff: 'far fa-circle',\n edit: 'fas fa-edit',\n ratingEmpty: 'far fa-star',\n ratingFull: 'fas fa-star',\n ratingHalf: 'fas fa-star-half',\n loading: 'fas fa-sync',\n first: 'fas fa-step-backward',\n last: 'fas fa-step-forward',\n unfold: 'fas fa-arrows-alt-v',\n file: 'fas fa-paperclip',\n plus: 'fas fa-plus',\n minus: 'fas fa-minus',\n calendar: 'fas fa-calendar',\n treeviewCollapse: 'fas fa-caret-down',\n treeviewExpand: 'fas fa-caret-right',\n eyeDropper: 'fas fa-eye-dropper'\n};\nconst fa = {\n component: VClassIcon\n};\nexport { aliases, fa };\n//# sourceMappingURL=fa.mjs.map","/**\n * plugins/vuetify.ts\n *\n * Framework documentation: https://vuetifyjs.com`\n */\n\n// Styles\nimport '@fortawesome/fontawesome-free/css/all.css';\nimport '/@/styles/main.scss';\nimport '/@/styles/settings.scss';\nimport * as components from 'vuetify/components';\nimport * as directives from 'vuetify/directives';\n\n// Composables\nimport {createVuetify} from 'vuetify';\n\n\nimport { aliases, fa } from 'vuetify/iconsets/fa';\n\n// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides\nconst vuetify = createVuetify({\n components,\n directives,\n icons: {\n defaultSet: 'fa',\n aliases,\n sets: {\n fa,\n },\n },\n defaults: {\n global: {\n elevation: 0,\n },\n VTextField: {\n variant: 'solo-filled',\n 'bg-color': 'background',\n },\n VFileInput: {\n variant: 'solo-filled',\n },\n VSelect: {\n variant: 'solo-filled',\n },\n VAutocomplete: {\n variant: 'solo-filled',\n },\n VTooltip: {\n location: 'start',\n },\n },\n theme: {\n defaultTheme: 'default',\n themes: {\n default: {\n dark: false,\n colors: {\n 'background': '#221F1F',\n 'background-lighten-1': '#141414',\n 'background-lighten-2': '#363B65',\n 'background-darken-1': '#191919',\n 'background-darken-2': '#191919',\n 'primary': '#A020F0',\n 'primary-lighten-1': '#BA52FB',\n 'primary-darken-1': '#7918B5',\n 'secondary': '#D027C1',\n 'secondary-lighten-1': '#392a37',\n 'secondary-darken-1': '#AD18A0',\n 'surface': '#191919',\n 'error': '#F44336',\n 'info': '#2986CC',\n 'success': '#51BF32',\n 'warning': '#F1C232',\n },\n variables: {\n 'border-color': '#A020F0',\n 'border-opacity': '0.5',\n 'high-emphasis-opacity': '0.87',\n 'medium-emphasis-opacity':' 0.6',\n 'disabled-opacity': '0.38',\n 'idle-opacity': '0.04',\n 'hover-opacity': '0.04',\n 'focus-opacity': '0.12',\n 'selected-opacity': '0.08',\n 'activated-opacity': '0.12',\n 'pressed-opacity': '0.12',\n 'dragged-opacity': '0.08',\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n },\n },\n});\n\nexport default vuetify;\n","/**\n * plugins/webfontloader.ts\n *\n * webfontloader documentation: https://github.com/typekit/webfontloader\n */\n\nexport async function loadFonts() {\n const webFontLoader = await import(/* webpackChunkName: \"webfontloader\" */ 'webfontloader');\n\n webFontLoader.load({\n google: {\n families: ['Josefin Sans:100,300,400,500,700,900&display=swap'],\n },\n });\n}\n","export const TRUSTED_SITES_TABLE_KEY = 'trustedSites';\nexport const TRUSTED_SITES_SITE_ID_COL = 'siteId';\nexport const TRUSTED_SITES_NAME_COL = 'siteName';\n\nexport const FEATURED_RELEASES_TABLE_KEY = 'featuredReleases';\nexport const FEATURED_RELEASES_RELEASE_ID_COLUMN = 'releaseId';\nexport const FEATURED_RELEASES_START_TIME_COLUMN = 'startTime';\nexport const FEATURED_RELEASES_END_TIME_COLUMN = 'endTime';\n\nexport const BLOCKED_RELEASES_TABLE_KEY = 'blockedReleases';\nexport const BLOCKED_RELEASES_RELEASE_ID_COLUMN = 'releaseId';\n\nexport const RELEASES_FILE_COLUMN = 'file';\nexport const RELEASES_AUTHOR_COLUMN = 'author';\nexport const RELEASES_NAME_COLUMN = 'contentName';\nexport const RELEASES_METADATA_COLUMN = 'metadata';\nexport const RELEASES_THUMBNAIL_COLUMN = 'thumbnail';\nexport const RELEASES_CATEGORY_COLUMN = 'category';\nexport const RELEASES_STATUS_COLUMN = 'status';\n\nexport const COLLECTIONS_RELEASES_COLUMN = 'releases';\nexport const COLLECTIONS_AUTHOR_COLUMN = 'author';\nexport const COLLECTIONS_NAME_COLUMN = 'contentName';\nexport const COLLECTIONS_METADATA_COLUMN = 'metadata';\nexport const COLLECTIONS_THUMBNAIL_COLUMN = 'thumbnail';\nexport const COLLECTIONS_CATEGORY_COLUMN = 'category';\nexport const COLLECTIONS_STATUS_COLUMN = 'status';\n\nexport const RELEASES_DB_TABLE_KEY = 'releases';\nexport const COLLECTIONS_DB_TABLE_KEY = 'collections';\n\n","import {\n RELEASES_AUTHOR_COLUMN,\n RELEASES_FILE_COLUMN,\n RELEASES_METADATA_COLUMN,\n RELEASES_NAME_COLUMN,\n RELEASES_THUMBNAIL_COLUMN,\n RELEASES_CATEGORY_COLUMN,\n RELEASES_STATUS_COLUMN,\n} from '../consts';\nimport type Orbiter from '../orbiter';\n\nconst clearData = async () => {\n localStorage.clear();\n if (indexedDB.databases) {\n const indexedDbDatabases = await indexedDB.databases();\n await Promise.all(\n indexedDbDatabases.map(db => {\n if (db.name) indexedDB.deleteDatabase(db.name);\n }),\n );\n }\n};\n\nexport const loadStubData = async (app: Orbiter) => {\n await clearData();\n\n await app.changeName({name: 'Me !', language: 'en'});\n\n const audioFile = (await import('../../../../../../tests/devData/06-yy_ch01_l01_d01.mp3'))\n .default;\n\n const audioCid = await app.constellation.ajouterÀSFIP({\n contenu: new Uint8Array(new TextEncoder().encode(audioFile)),\n nomFichier: '06-yy_ch01_l01_d01.mp3',\n });\n\n const thumbnailFile = (await import('../../../assets/logo.svg')).default;\n\n const thumbnailCid = await app.constellation.ajouterÀSFIP({\n contenu: new Uint8Array(new TextEncoder().encode(thumbnailFile)),\n nomFichier: 'logo.svg',\n });\n await app.addRelease({\n [RELEASES_NAME_COLUMN]: 'Famous song',\n [RELEASES_AUTHOR_COLUMN]: 'I. B. Astar',\n [RELEASES_THUMBNAIL_COLUMN]: thumbnailCid,\n [RELEASES_FILE_COLUMN]: audioCid,\n [RELEASES_METADATA_COLUMN]: 'With an open-access licence, of course.',\n [RELEASES_CATEGORY_COLUMN]: 'audio',\n [RELEASES_STATUS_COLUMN]: 'pending',\n });\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypedEmitter = require(\"events\").EventEmitter;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t;\n return { next: verb(0), \"throw\": verb(1), \"return\": verb(2) };\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nexports.__esModule = true;\n/** Class representing a semaphore\n * Semaphores are initialized with a number of permits that get aquired and released\n * over the lifecycle of the Semaphore. These permits limit the number of simultaneous\n * executions of the code that the Semaphore synchronizes. Functions can wait and stop\n * executing until a permit becomes available.\n *\n * Locks that only allow one execution of a critical section are a special case of\n * Semaphores. To construct a lock, initialize a Semaphore with a permit count of 1.\n *\n * This Semaphore class is implemented with the help of promises that get returned\n * by functions that wait for permits to become available. This makes it possible\n * to use async/await to synchronize your code.\n */\nvar Semaphore = (function () {\n /**\n * Creates a semaphore.\n * @param permits The number of permits, i.e. things being allowed to run in parallel.\n * To create a lock that only lets one thing run at a time, set this to 1.\n * This number can also be negative.\n */\n function Semaphore(permits) {\n this.promiseResolverQueue = [];\n this.permits = permits;\n }\n /**\n * Returns the number of available permits.\n * @returns The number of available permits.\n */\n Semaphore.prototype.getPermits = function () {\n return this.permits;\n };\n /**\n * Returns a promise used to wait for a permit to become available. This method should be awaited on.\n * @returns A promise that gets resolved when execution is allowed to proceed.\n */\n Semaphore.prototype.wait = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n if (this.permits > 0) {\n this.permits -= 1;\n return [2 /*return*/, Promise.resolve(true)];\n }\n // If there is no permit available, we return a promise that resolves once the semaphore gets\n // signaled enough times that permits is equal to one.\n return [2 /*return*/, new Promise(function (resolver) { return _this.promiseResolverQueue.push(resolver); })];\n });\n });\n };\n /**\n * Alias for {@linkcode Semaphore.wait}.\n * @returns A promise that gets resolved when execution is allowed to proceed.\n */\n Semaphore.prototype.acquire = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.wait()];\n });\n });\n };\n /**\n * Same as {@linkcode Semaphore.wait} except the promise returned gets resolved with false if no\n * permit becomes available in time.\n * @param milliseconds The time spent waiting before the wait is aborted. This is a lower bound,\n * don't rely on it being precise.\n * @returns A promise that gets resolved with true when execution is allowed to proceed or\n * false if the time given elapses before a permit becomes available.\n */\n Semaphore.prototype.waitFor = function (milliseconds) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n var resolver, promise;\n return __generator(this, function (_a) {\n if (this.permits > 0) {\n this.permits -= 1;\n return [2 /*return*/, Promise.resolve(true)];\n }\n resolver = function (b) { return void (0); };\n promise = new Promise(function (r) {\n resolver = r;\n });\n // The saved resolver gets added to our list of promise resolvers so that it gets a chance\n // to be resolved as a result of a call to signal().\n this.promiseResolverQueue.push(resolver);\n setTimeout(function () {\n // We have to remove the promise resolver from our list. Resolving it twice would not be\n // an issue but signal() always takes the next resolver from the queue and resolves it which\n // would swallow a permit if we didn't remove it.\n var index = _this.promiseResolverQueue.indexOf(resolver);\n if (index !== -1) {\n _this.promiseResolverQueue.splice(index, 1);\n }\n else {\n // This is weird... TODO Think about what the best course of action would be at this point.\n // Probably do nothing.\n }\n // false because the wait was unsuccessful.\n resolver(false);\n }, milliseconds);\n return [2 /*return*/, promise];\n });\n });\n };\n /**\n * Synchronous function that tries to acquire a permit and returns true if successful, false otherwise.\n * @returns Whether a permit could be acquired.\n */\n Semaphore.prototype.tryAcquire = function () {\n if (this.permits > 0) {\n this.permits -= 1;\n return true;\n }\n return false;\n };\n /**\n * Acquires all permits that are currently available and returns the number of acquired permits.\n * @returns Number of acquired permits.\n */\n Semaphore.prototype.drainPermits = function () {\n if (this.permits > 0) {\n var permitCount = this.permits;\n this.permits = 0;\n return permitCount;\n }\n return 0;\n };\n /**\n * Increases the number of permits by one. If there are other functions waiting, one of them will\n * continue to execute in a future iteration of the event loop.\n */\n Semaphore.prototype.signal = function () {\n this.permits += 1;\n if (this.permits > 1 && this.promiseResolverQueue.length > 0) {\n throw new Error('this.permits should never be > 0 when there is someone waiting.');\n }\n else if (this.permits === 1 && this.promiseResolverQueue.length > 0) {\n // If there is someone else waiting, immediately consume the permit that was released\n // at the beginning of this function and let the waiting function resume.\n this.permits -= 1;\n var nextResolver = this.promiseResolverQueue.shift();\n if (nextResolver) {\n nextResolver(true);\n }\n }\n };\n /**\n * Alias for {@linkcode Semaphore.signal}.\n */\n Semaphore.prototype.release = function () {\n this.signal();\n };\n /**\n * Schedules func to be called once a permit becomes available.\n * Returns a promise that resolves to the return value of func.\n * @typeparam T The return type of func.\n * @param func The function to be executed.\n * @return A promise that gets resolved with the return value of the function.\n */\n Semaphore.prototype.execute = function (func) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.wait()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, , 4, 5]);\n return [4 /*yield*/, func()];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n this.signal();\n return [7 /*endfinally*/];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n return Semaphore;\n}());\nexports[\"default\"] = Semaphore;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar Semaphore_1 = require(\"./Semaphore\");\n/**\n * A lock that can be used to synchronize critical sections in your code.\n * For more details on how to use this class, please view the documentation\n * of the Semaphore class from which Lock inherits.\n */\nvar Lock = (function (_super) {\n __extends(Lock, _super);\n /**\n * Creates a lock.\n */\n function Lock() {\n return _super.call(this, 1) || this;\n }\n return Lock;\n}(Semaphore_1[\"default\"]));\nexports.Lock = Lock;\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\nvar Semaphore_1 = require(\"./Semaphore\");\nexports[\"default\"] = Semaphore_1[\"default\"];\n__export(require(\"./Lock\"));\n","import type {\n COLLECTIONS_AUTHOR_COLUMN,\n COLLECTIONS_METADATA_COLUMN,\n COLLECTIONS_NAME_COLUMN,\n COLLECTIONS_RELEASES_COLUMN,\n COLLECTIONS_THUMBNAIL_COLUMN,\n COLLECTIONS_CATEGORY_COLUMN,\n COLLECTIONS_STATUS_COLUMN,\n RELEASES_AUTHOR_COLUMN,\n RELEASES_FILE_COLUMN,\n RELEASES_METADATA_COLUMN,\n RELEASES_NAME_COLUMN,\n RELEASES_THUMBNAIL_COLUMN,\n RELEASES_STATUS_COLUMN,\n RELEASES_CATEGORY_COLUMN,\n TRUSTED_SITES_NAME_COL,\n TRUSTED_SITES_SITE_ID_COL,\n FEATURED_RELEASES_END_TIME_COLUMN,\n FEATURED_RELEASES_RELEASE_ID_COLUMN,\n FEATURED_RELEASES_START_TIME_COLUMN,\n BLOCKED_RELEASES_RELEASE_ID_COLUMN,\n} from './consts';\n\nexport const variableIdKeys = [\n 'trustedSitesSiteIdVariableId',\n 'trustedSitesNameVariableId',\n 'releasesContentNameVar',\n 'releasesFileVar',\n 'releasesThumbnailVar',\n 'releasesAuthorVar',\n 'releasesMetadataVar',\n 'releasesCategoryVar',\n 'releasesStatusVar',\n 'collectionsNameVar',\n 'collectionsAuthorVar',\n 'collectionsThumbnailVar',\n 'collectionsMetadataVar',\n 'collectionsCategoryVar',\n 'collectionsReleasesVar',\n 'collectionsStatusVar',\n 'featuredReleasesReleaseIdVar',\n 'featuredReleasesStartTimeVar',\n 'featuredReleasesEndTimeVar',\n 'blockedReleasesReleaseIdVar',\n] as const;\n\nexport type VariableIds = Record<(typeof variableIdKeys)[number], string>;\n\nexport type possiblyIncompleteVariableIds = Partial;\n\nexport type Release = {\n [RELEASES_NAME_COLUMN]: string;\n [RELEASES_FILE_COLUMN]: string;\n [RELEASES_AUTHOR_COLUMN]: string;\n [RELEASES_THUMBNAIL_COLUMN]?: string;\n [RELEASES_METADATA_COLUMN]?: string;\n [RELEASES_CATEGORY_COLUMN]: string;\n [RELEASES_STATUS_COLUMN]: string;\n};\n\nexport type ReleaseWithId = {\n release: Release;\n id: string;\n};\n\nexport type Collection = {\n [COLLECTIONS_NAME_COLUMN]: string;\n [COLLECTIONS_AUTHOR_COLUMN]?: string;\n [COLLECTIONS_THUMBNAIL_COLUMN]?: string;\n [COLLECTIONS_METADATA_COLUMN]?: string;\n [COLLECTIONS_CATEGORY_COLUMN]: string;\n [COLLECTIONS_RELEASES_COLUMN]: string;\n [COLLECTIONS_STATUS_COLUMN]: string;\n};\n\nexport type FeaturedRelease = {\n [FEATURED_RELEASES_RELEASE_ID_COLUMN]: string;\n [FEATURED_RELEASES_START_TIME_COLUMN]: string;\n [FEATURED_RELEASES_END_TIME_COLUMN]: string;\n};\n\nexport type BlockedRelease = {\n [BLOCKED_RELEASES_RELEASE_ID_COLUMN]: string;\n}\n\nexport type CollectionWithId = {\n collection: Collection;\n id: string;\n};\n\nexport type TrustedSite = {\n [TRUSTED_SITES_SITE_ID_COL]: string;\n [TRUSTED_SITES_NAME_COL]: string;\n};\n\n\nexport interface ReleaseMetadata {\n description?: string;\n license?: string;\n}\n\nexport interface MusicReleaseMetadata {\n tags?: string;\n musicBrainzID?: string;\n albumTitle?: string;\n initialReleaseYear?: string;\n releaseType?: string;\n fileFormat?: string;\n bitrate?: string;\n mediaFormat?: string;\n}\n\nexport interface MovieReleaseMetadata {\n posterCID?: string;\n TMDBID?: string;\n IMDBID?: string;\n releaseType?: string;\n}\n","import {inject} from 'vue';\n\nimport type Orbiter from './orbiter';\n\nexport const useOrbiter = () => {\n const orbiter = inject('orbiter');\n if (orbiter) return {orbiter};\n throw new Error('Orbiter not found. Did you register the Orbiter plugin with Vue?');\n};\n\nexport const removeUndefined = (vals: T): T => {\n return Object.fromEntries(Object.entries(vals).filter(x => x[1] !== undefined)) as T; // Not exactly precise, but depends on [this problem](https://stackoverflow.com/questions/54489817/typescript-partialt-type-without-undefined) to be fixed.\n};\n","import {TypedEmitter} from 'tiny-typed-emitter';\n\nimport {Lock} from 'semaphore-async-await';\n\nimport type {Constellation, bds, tableaux, types} from '@constl/ipa';\nimport {ignorerNonDéfinis, suivreBdDeFonction, uneFois} from '@constl/utils-ipa';\n\nimport type {JSONSchemaType} from 'ajv';\n\nimport {\n COLLECTIONS_AUTHOR_COLUMN,\n COLLECTIONS_DB_TABLE_KEY,\n COLLECTIONS_METADATA_COLUMN,\n COLLECTIONS_NAME_COLUMN,\n COLLECTIONS_RELEASES_COLUMN,\n COLLECTIONS_THUMBNAIL_COLUMN,\n COLLECTIONS_CATEGORY_COLUMN,\n RELEASES_AUTHOR_COLUMN,\n RELEASES_DB_TABLE_KEY,\n RELEASES_FILE_COLUMN,\n RELEASES_METADATA_COLUMN,\n RELEASES_NAME_COLUMN,\n RELEASES_THUMBNAIL_COLUMN,\n RELEASES_CATEGORY_COLUMN,\n TRUSTED_SITES_NAME_COL,\n TRUSTED_SITES_SITE_ID_COL,\n TRUSTED_SITES_TABLE_KEY,\n RELEASES_STATUS_COLUMN,\n COLLECTIONS_STATUS_COLUMN,\n FEATURED_RELEASES_END_TIME_COLUMN,\n FEATURED_RELEASES_RELEASE_ID_COLUMN,\n FEATURED_RELEASES_START_TIME_COLUMN,\n FEATURED_RELEASES_TABLE_KEY,\n BLOCKED_RELEASES_TABLE_KEY,\n BLOCKED_RELEASES_RELEASE_ID_COLUMN,\n} from './consts.js';\nimport type {\n BlockedRelease,\n Collection,\n CollectionWithId,\n FeaturedRelease,\n Release,\n ReleaseWithId,\n TrustedSite,\n VariableIds,\n possiblyIncompleteVariableIds,\n} from './types.js';\nimport {variableIdKeys} from './types.js';\nimport {removeUndefined} from './utils.js';\n\ntype forgetFunction = () => Promise;\n\ninterface OrbiterEvents {\n 'site configured': (args: {siteId: string; variableIds: VariableIds}) => void;\n}\n\ntype RootDbSchema = {\n swarmId: string;\n modDb: string;\n};\nconst ROOT_DB_JSON_SCHEMA: JSONSchemaType> = {\n type: 'object',\n properties: {\n modDb: {type: 'string', nullable: true},\n swarmId: {type: 'string', nullable: true},\n },\n required: [],\n};\n\nconst OrbiterSiteDbSchema: JSONSchemaType<{modDb: string; swarmId: string}> = {\n type: 'object',\n properties: {\n modDb: {\n type: 'string',\n },\n swarmId: {\n type: 'string',\n },\n },\n required: ['modDb', 'swarmId'],\n};\n\nexport default class Orbiter {\n siteId?: string;\n swarmId?: string;\n\n initialVariableIds: possiblyIncompleteVariableIds;\n variableIds?: VariableIds;\n\n constellation: Constellation;\n events: TypedEmitter;\n\n statusType = ['approved', 'deleted', 'pending', 'rejected'];\n contentCategories = ['tvShow', 'movie', 'audiobook', 'game', 'book', 'music', 'video', 'other'];\n\n constructor({\n siteId,\n swarmId,\n variableIds,\n constellation,\n }: {\n siteId?: string;\n swarmId?: string;\n variableIds: possiblyIncompleteVariableIds;\n constellation: Constellation;\n }) {\n this.events = new TypedEmitter();\n\n this.siteId = siteId;\n this.swarmId = swarmId;\n this.initialVariableIds = variableIds;\n\n if (this.checkVariableIdsComplete(variableIds)) {\n this.variableIds = variableIds;\n }\n\n this.constellation = constellation;\n }\n\n // Site setup functions\n\n async setUpSite(): Promise<{\n siteId: string;\n variableIds: VariableIds;\n }> {\n console.log('ici');\n // Variables for moderation database\n const trustedSitesSiteIdVariableId =\n this.initialVariableIds.trustedSitesSiteIdVariableId ||\n (await this.constellation.variables.créerVariable({catégorie: 'chaîneNonTraductible'}));\n const trustedSitesNameVariableId =\n this.initialVariableIds.trustedSitesNameVariableId ||\n (await this.constellation.variables.créerVariable({catégorie: 'chaîneNonTraductible'}));\n const featuredReleasesReleaseIdVar =\n this.initialVariableIds.featuredReleasesReleaseIdVar ||\n (await this.constellation.variables.créerVariable({catégorie: 'chaîneNonTraductible'}));\n const featuredReleasesStartTimeVar =\n this.initialVariableIds.featuredReleasesStartTimeVar ||\n (await this.constellation.variables.créerVariable({catégorie: 'horoDatage'}));\n const featuredReleasesEndTimeVar =\n this.initialVariableIds.featuredReleasesEndTimeVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'horoDatage',\n }));\n const blockedReleasesReleaseIdVar =\n this.initialVariableIds.blockedReleasesReleaseIdVar ||\n (await this.constellation.variables.créerVariable({catégorie: 'chaîneNonTraductible'}));\n console.log('ici 1');\n // Variables for releases table\n const releasesFileVar =\n this.initialVariableIds.releasesFileVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'fichier',\n }));\n const releasesThumbnailVar =\n this.initialVariableIds.releasesThumbnailVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'fichier',\n }));\n const releasesAuthorVar =\n this.initialVariableIds.releasesAuthorVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const releasesMetadataVar =\n this.initialVariableIds.releasesMetadataVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const releasesContentNameVar =\n this.initialVariableIds.releasesContentNameVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n console.log('ici 2');\n // The release type variable is a bit more complicated, because we need to specify\n // allowed categories to enforce.\n let releasesCategoryVar: string;\n if (this.initialVariableIds.releasesCategoryVar) {\n releasesCategoryVar = this.initialVariableIds.releasesCategoryVar;\n } else {\n releasesCategoryVar = await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n });\n // Specify allowed categories\n await this.constellation.variables.ajouterRègleVariable({\n idVariable: releasesCategoryVar,\n règle: {\n typeRègle: 'valeurCatégorique',\n détails: {\n type: 'fixe',\n options: this.contentCategories,\n },\n },\n });\n }\n let releasesStatusVar: string;\n if (this.initialVariableIds.releasesStatusVar) {\n releasesStatusVar = this.initialVariableIds.releasesStatusVar;\n } else {\n releasesStatusVar = await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n });\n // Specify allowed categories\n await this.constellation.variables.ajouterRègleVariable({\n idVariable: releasesStatusVar,\n règle: {\n typeRègle: 'valeurCatégorique',\n détails: {\n type: 'fixe',\n options: this.statusType,\n },\n },\n });\n }\n console.log('ici 3');\n // Variables for collections table\n const collectionsNameVar =\n this.initialVariableIds.collectionsNameVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const collectionsAuthorVar =\n this.initialVariableIds.collectionsAuthorVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const collectionsMetadataVar =\n this.initialVariableIds.collectionsMetadataVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const collectionsReleasesVar =\n this.initialVariableIds.collectionsReleasesVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const collectionsThumbnailVar =\n this.initialVariableIds.collectionsThumbnailVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'fichier',\n }));\n console.log('ici 4');\n // Same thing for collections type variable.\n let collectionsCategoryVar: string;\n if (this.initialVariableIds.collectionsCategoryVar) {\n collectionsCategoryVar = this.initialVariableIds.collectionsCategoryVar;\n } else {\n collectionsCategoryVar = await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n });\n // Specify allowed categories\n await this.constellation.variables.ajouterRègleVariable({\n idVariable: collectionsCategoryVar,\n règle: {\n typeRègle: 'valeurCatégorique',\n détails: {\n type: 'fixe',\n options: this.contentCategories,\n },\n },\n });\n }\n let collectionsStatusVar: string;\n if (this.initialVariableIds.collectionsStatusVar) {\n collectionsStatusVar = this.initialVariableIds.collectionsStatusVar;\n } else {\n collectionsStatusVar = await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n });\n // Specify allowed categories\n await this.constellation.variables.ajouterRègleVariable({\n idVariable: collectionsStatusVar,\n règle: {\n typeRègle: 'valeurCatégorique',\n détails: {\n type: 'fixe',\n options: this.statusType,\n },\n },\n });\n }\n console.log('ici 5');\n // Swarm ID for site\n let swarmId: string;\n if (this.swarmId) {\n swarmId = this.swarmId;\n } else {\n swarmId = await this.constellation.nuées.créerNuée({});\n // Now we can specify the format for individual release dbs and collections\n const releasesDbFormat = this.getSwarmDbSchema({\n releasesFileVar,\n releasesCategoryVar,\n releasesThumbnailVar,\n releasesAuthorVar,\n releasesContentNameVar,\n releasesMetadataVar,\n releasesStatusVar,\n collectionsAuthorVar,\n collectionsMetadataVar,\n collectionsNameVar,\n collectionsReleasesVar,\n collectionsThumbnailVar,\n collectionsCategoryVar,\n collectionsStatusVar,\n swarmId: swarmId,\n });\n for (const table of releasesDbFormat.tableaux) {\n const tableKey = table.clef;\n const idTableau = await this.constellation.nuées.ajouterTableauNuée({\n idNuée: swarmId,\n clefTableau: tableKey,\n });\n for (const col of table.cols) {\n await this.constellation.nuées.ajouterColonneTableauNuée({\n idTableau,\n idVariable: col.idVariable,\n idColonne: col.idColonne,\n });\n }\n }\n }\n console.log('ici 6');\n const modDbId = await this.constellation.bds.créerBdDeSchéma({\n schéma: {\n licence: 'ODbl-1_0',\n tableaux: [\n {\n cols: [\n {\n idVariable: trustedSitesSiteIdVariableId,\n idColonne: TRUSTED_SITES_SITE_ID_COL,\n },\n {\n idVariable: trustedSitesNameVariableId,\n idColonne: TRUSTED_SITES_NAME_COL,\n },\n ],\n clef: TRUSTED_SITES_TABLE_KEY,\n },\n {\n cols: [\n {\n idVariable: featuredReleasesReleaseIdVar,\n idColonne: FEATURED_RELEASES_RELEASE_ID_COLUMN,\n },\n {\n idVariable: featuredReleasesStartTimeVar,\n idColonne: FEATURED_RELEASES_START_TIME_COLUMN,\n },\n {\n idVariable: featuredReleasesEndTimeVar,\n idColonne: FEATURED_RELEASES_END_TIME_COLUMN,\n },\n ],\n clef: FEATURED_RELEASES_TABLE_KEY,\n },\n {\n cols: [\n {\n idVariable: blockedReleasesReleaseIdVar,\n idColonne: BLOCKED_RELEASES_RELEASE_ID_COLUMN,\n },\n ],\n clef: BLOCKED_RELEASES_TABLE_KEY,\n },\n ],\n },\n });\n console.log('ici 7');\n const variableIds: VariableIds = {\n // Federation stuff\n trustedSitesSiteIdVariableId,\n trustedSitesNameVariableId,\n\n // featured releases\n featuredReleasesReleaseIdVar,\n featuredReleasesStartTimeVar,\n featuredReleasesEndTimeVar,\n\n // blocked releases\n blockedReleasesReleaseIdVar,\n\n // releases\n releasesFileVar,\n releasesAuthorVar,\n releasesContentNameVar,\n releasesThumbnailVar,\n releasesMetadataVar,\n releasesCategoryVar,\n releasesStatusVar,\n\n // collections\n collectionsAuthorVar,\n collectionsMetadataVar,\n collectionsNameVar,\n collectionsThumbnailVar,\n collectionsReleasesVar,\n collectionsCategoryVar,\n collectionsStatusVar,\n };\n\n const siteId = await this.constellation.créerBdIndépendante({\n type: 'keyvalue',\n });\n console.log('ici 8', {modDbId});\n await this.constellation.orbite.appliquerFonctionBdOrbite({\n idBd: siteId,\n fonction: 'put',\n args: ['modDb', modDbId],\n });\n console.log('ici 9');\n await this.constellation.orbite.appliquerFonctionBdOrbite({\n idBd: siteId,\n fonction: 'put',\n args: ['swarmId', swarmId],\n });\n console.log('ici 10');\n\n this.events.emit('site configured', {\n siteId,\n variableIds,\n });\n console.log('ici 11');\n return {\n siteId,\n variableIds,\n };\n }\n\n checkVariableIdsComplete(ids?: possiblyIncompleteVariableIds): ids is VariableIds {\n return !!ids && variableIdKeys.every(k => Object.keys(ids).includes(k) && ids[k]);\n }\n\n getSwarmDbSchema({\n releasesFileVar,\n releasesCategoryVar,\n releasesThumbnailVar,\n releasesAuthorVar,\n releasesContentNameVar,\n releasesMetadataVar,\n releasesStatusVar,\n collectionsNameVar,\n collectionsCategoryVar,\n collectionsReleasesVar,\n collectionsAuthorVar,\n collectionsMetadataVar,\n collectionsThumbnailVar,\n collectionsStatusVar,\n swarmId,\n }: {\n releasesFileVar: string;\n releasesCategoryVar: string;\n releasesThumbnailVar: string;\n releasesAuthorVar: string;\n releasesContentNameVar: string;\n releasesMetadataVar: string;\n releasesStatusVar: string;\n collectionsNameVar: string;\n collectionsCategoryVar: string;\n collectionsReleasesVar: string;\n collectionsAuthorVar: string;\n collectionsMetadataVar: string;\n collectionsThumbnailVar: string;\n collectionsStatusVar: string;\n swarmId: string;\n }): bds.schémaSpécificationBd {\n return {\n licence: 'ODbl-1_0',\n nuées: [swarmId],\n tableaux: [\n {\n cols: [\n {\n idVariable: releasesFileVar,\n idColonne: RELEASES_FILE_COLUMN,\n },\n {\n idVariable: releasesCategoryVar,\n idColonne: RELEASES_CATEGORY_COLUMN,\n },\n {\n idVariable: releasesThumbnailVar,\n idColonne: RELEASES_THUMBNAIL_COLUMN,\n },\n {\n idVariable: releasesAuthorVar,\n idColonne: RELEASES_AUTHOR_COLUMN,\n },\n {\n idVariable: releasesContentNameVar,\n idColonne: RELEASES_NAME_COLUMN,\n },\n {\n idVariable: releasesMetadataVar,\n idColonne: RELEASES_METADATA_COLUMN,\n },\n {\n idVariable: releasesStatusVar,\n idColonne: RELEASES_STATUS_COLUMN,\n },\n ],\n clef: RELEASES_DB_TABLE_KEY,\n },\n {\n cols: [\n {\n idVariable: collectionsNameVar,\n idColonne: COLLECTIONS_NAME_COLUMN,\n },\n {\n idVariable: collectionsCategoryVar,\n idColonne: COLLECTIONS_CATEGORY_COLUMN,\n },\n {\n idVariable: collectionsReleasesVar,\n idColonne: COLLECTIONS_RELEASES_COLUMN,\n },\n {\n idVariable: collectionsAuthorVar,\n idColonne: COLLECTIONS_AUTHOR_COLUMN,\n },\n {\n idVariable: collectionsMetadataVar,\n idColonne: COLLECTIONS_METADATA_COLUMN,\n },\n {\n idVariable: collectionsThumbnailVar,\n idColonne: COLLECTIONS_THUMBNAIL_COLUMN,\n },\n {\n idVariable: collectionsStatusVar,\n idColonne: COLLECTIONS_STATUS_COLUMN,\n },\n ],\n clef: COLLECTIONS_DB_TABLE_KEY,\n },\n ],\n };\n }\n\n async listenForSiteConfigured({f}: {f: (x: boolean) => void}): Promise {\n const configured = () => {\n return !!(this.siteId && this.checkVariableIdsComplete(this.variableIds));\n };\n f(configured());\n const fFinal = () => f(configured());\n this.events.on('site configured', fFinal);\n return async () => {\n this.events.off('site configured', fFinal);\n };\n }\n\n async siteConfigured(): Promise<{siteId: string; variableIds: VariableIds}> {\n if (this.siteId && this.checkVariableIdsComplete(this.variableIds)) {\n return {siteId: this.siteId, variableIds: this.variableIds};\n }\n return new Promise(resolve => {\n this.events.once('site configured', resolve);\n });\n }\n\n async orbiterConfig(): Promise<{\n modDbId: string;\n swarmId: string;\n swarmSchema: bds.schémaSpécificationBd;\n }> {\n const {siteId, variableIds} = await this.siteConfigured();\n\n const modDbId = (await uneFois(\n async (fSuivi: types.schémaFonctionSuivi) => {\n return await this.constellation.suivreBd({\n id: siteId,\n type: 'keyvalue',\n f: async x => fSuivi(await x.get('modDb')),\n schéma: OrbiterSiteDbSchema,\n });\n },\n )) as string;\n\n const swarmId = (await uneFois(\n async (fSuivi: types.schémaFonctionSuivi) => {\n return await this.constellation.suivreBd({\n id: siteId,\n type: 'keyvalue',\n f: async x => fSuivi(await x.get('swarmId')),\n schéma: OrbiterSiteDbSchema,\n });\n },\n x => typeof x === 'string',\n )) as string;\n\n const swarmSchema = this.getSwarmDbSchema({\n ...variableIds,\n swarmId: swarmId,\n });\n\n return {\n modDbId,\n swarmId,\n swarmSchema,\n };\n }\n\n async followSiteSwarmId({\n f,\n siteId,\n }: {\n f: (x: string) => void;\n siteId?: string;\n }): Promise {\n // Use this site's id if none is given\n if (!siteId) ({siteId} = await this.siteConfigured());\n\n return await this.constellation.suivreBdDic({\n id: siteId,\n schéma: ROOT_DB_JSON_SCHEMA,\n f: x => {\n const swarmId = x['swarmId'];\n if (typeof swarmId === 'string') f(swarmId);\n },\n });\n }\n\n async followSiteModDbId({\n f,\n siteId,\n }: {\n f: (x: string) => void;\n siteId?: string;\n }): Promise {\n // Use this site's id if none is given\n if (!siteId) ({siteId} = await this.siteConfigured());\n\n return await this.constellation.suivreBdDic({\n id: siteId,\n schéma: ROOT_DB_JSON_SCHEMA,\n f: x => {\n const swarmId = x['modDb'];\n if (typeof swarmId === 'string') f(swarmId);\n },\n });\n }\n\n // Accessing network data\n async followTrustedSites({\n f,\n }: {\n f: (sites?: tableaux.élémentDonnées[]) => void;\n }): Promise {\n const {siteId} = await this.siteConfigured();\n\n return await suivreBdDeFonction({\n fRacine: async ({\n fSuivreRacine,\n }: {\n fSuivreRacine: (nouvelIdBdCible?: string | undefined) => Promise;\n }): Promise => {\n return await this.constellation.suivreBd({\n id: siteId,\n f: async x => await fSuivreRacine(await x.get('modDb')),\n type: 'keyvalue',\n schéma: OrbiterSiteDbSchema,\n });\n },\n f,\n fSuivre: async ({\n id,\n fSuivreBd,\n }: {\n id: string;\n fSuivreBd: types.schémaFonctionSuivi[] | undefined>;\n }) => {\n return this.constellation.bds.suivreDonnéesDeTableauParClef({\n idBd: id,\n clefTableau: TRUSTED_SITES_TABLE_KEY,\n f: fSuivreBd,\n });\n },\n });\n }\n\n async listenForSiteBlockedReleases({\n f,\n siteId,\n }: {\n f: (releases?: {cid: string; id: string}[]) => void;\n siteId?: string;\n }): Promise {\n return await suivreBdDeFonction({\n fRacine: async ({\n fSuivreRacine,\n }: {\n fSuivreRacine: (nouvelIdBdCible?: string) => Promise;\n }): Promise => {\n return await this.followSiteModDbId({\n f: fSuivreRacine,\n siteId,\n });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({\n id,\n fSuivreBd,\n }: {\n id: string;\n fSuivreBd: types.schémaFonctionSuivi<{cid: string; id: string}[] | undefined>;\n }): Promise => {\n return await this.constellation.bds.suivreDonnéesDeTableauParClef({\n idBd: id,\n clefTableau: BLOCKED_RELEASES_TABLE_KEY,\n f: async blocked => {\n if (blocked)\n await fSuivreBd(\n blocked.map(b => {\n return {\n cid: b.données[BLOCKED_RELEASES_RELEASE_ID_COLUMN],\n id: b.id,\n };\n }),\n );\n },\n });\n },\n });\n }\n\n async listenForSiteReleases({\n f,\n siteId,\n desiredNResults = 1000,\n }: {\n f: types.schémaFonctionSuivi<{release: ReleaseWithId; contributor: string}[]>;\n siteId?: string;\n desiredNResults?: number;\n }): Promise {\n return await suivreBdDeFonction({\n fRacine: async ({\n fSuivreRacine,\n }: {\n fSuivreRacine: (nouvelIdBdCible?: string) => Promise;\n }): Promise => {\n return await this.followSiteSwarmId({\n f: fSuivreRacine,\n siteId,\n });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({\n id,\n fSuivreBd,\n }: {\n id: string;\n fSuivreBd: types.schémaFonctionSuivi<{release: ReleaseWithId; contributor: string}[]>;\n }): Promise => {\n const {fOublier} = await this.constellation.nuées.suivreDonnéesTableauNuée({\n idNuée: id,\n clefTableau: RELEASES_DB_TABLE_KEY,\n f: releases =>\n fSuivreBd(\n releases.map(r => ({\n release: {\n release: r.élément.données,\n id: r.élément.id,\n },\n contributor: r.idCompte,\n })),\n ),\n nRésultatsDésirés: desiredNResults,\n clefsSelonVariables: false,\n });\n return fOublier;\n },\n });\n }\n\n async listenForSiteCollections({\n f,\n siteId,\n desiredNResults = 1000,\n }: {\n f: types.schémaFonctionSuivi<{collection: CollectionWithId; contributor: string}[]>;\n siteId?: string;\n desiredNResults?: number;\n }): Promise {\n return await suivreBdDeFonction({\n fRacine: async ({\n fSuivreRacine,\n }: {\n fSuivreRacine: (nouvelIdBdCible?: string) => Promise;\n }): Promise => {\n return await this.followSiteSwarmId({\n f: fSuivreRacine,\n siteId,\n });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({\n id,\n fSuivreBd,\n }: {\n id: string;\n fSuivreBd: types.schémaFonctionSuivi<{collection: CollectionWithId; contributor: string}[]>;\n }): Promise => {\n const {fOublier} = await this.constellation.nuées.suivreDonnéesTableauNuée({\n idNuée: id,\n clefTableau: COLLECTIONS_DB_TABLE_KEY,\n f: collections =>\n fSuivreBd(\n collections.map(c => ({\n collection: {\n collection: c.élément.données,\n id: c.élément.id,\n },\n contributor: c.idCompte,\n })),\n ),\n nRésultatsDésirés: desiredNResults,\n clefsSelonVariables: false,\n });\n return fOublier;\n },\n });\n }\n\n async listenForSiteFeaturedReleases({\n f,\n siteId,\n }: {\n f: types.schémaFonctionSuivi<{id: string, featured: FeaturedRelease}[]>;\n siteId?: string;\n }): Promise {\n return await suivreBdDeFonction({\n fRacine: async ({\n fSuivreRacine,\n }: {\n fSuivreRacine: (nouvelIdBdCible?: string) => Promise;\n }): Promise => {\n return await this.followSiteSwarmId({\n f: fSuivreRacine,\n siteId,\n });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({\n id,\n fSuivreBd,\n }: {\n id: string;\n fSuivreBd: types.schémaFonctionSuivi<{id: string, featured: FeaturedRelease}[]>;\n }): Promise => {\n const {fOublier} = await this.constellation.nuées.suivreDonnéesTableauNuée({\n idNuée: id,\n clefTableau: FEATURED_RELEASES_TABLE_KEY,\n f: featured =>\n fSuivreBd(\n featured.map(x =>({id: x.élément.id, featured: x.élément.données})),\n ),\n clefsSelonVariables: false,\n });\n return fOublier;\n },\n });\n }\n\n async listenForReleases({\n f,\n }: {\n f: types.schémaFonctionSuivi<{release: ReleaseWithId; contributor: string; site: string}[]>;\n }): Promise {\n const {siteId} = await this.siteConfigured();\n\n type SiteInfo = {\n blockedCids?: string[];\n entries?: {release: ReleaseWithId; contributor: string}[];\n fForget?: forgetFunction;\n };\n const siteInfos: {[site: string]: SiteInfo} = {};\n\n let cancelled = false;\n const lock = new Lock();\n\n const fFinal = async () => {\n const blockedCids = Object.values(siteInfos)\n .map(s => s.blockedCids || [])\n .flat();\n const releases = Object.entries(siteInfos)\n .map(s => (s[1].entries || []).map(r => ({...r, site: s[0]})))\n .flat()\n .filter(r => !blockedCids.includes(r.release.release.file));\n await f(releases);\n };\n\n const fFollowTrustedSites = async (sites?: tableaux.élémentDonnées[]) => {\n const sitesList = (sites || []).map(s => s.données);\n sitesList.push({\n [TRUSTED_SITES_SITE_ID_COL]: siteId,\n [TRUSTED_SITES_NAME_COL]: 'Me !',\n });\n\n await lock.acquire();\n if (cancelled) return;\n\n const newSites = sitesList.filter(s => !Object.keys(siteInfos).includes(s.siteName));\n const obsoleteSites = Object.keys(siteInfos).filter(\n s => !sitesList.some(x => x.siteName === s),\n );\n\n for (const site of newSites) {\n const fsForgetSite: types.schémaFonctionOublier[] = [];\n\n const {siteName} = site;\n siteInfos[siteName] = {};\n this.listenForSiteBlockedReleases({\n f: async cids => {\n siteInfos[siteName].blockedCids = cids?.map(c => c.cid);\n await fFinal();\n },\n siteId: site.siteId,\n }).then(fForget => fsForgetSite.push(fForget));\n\n this.listenForSiteReleases({\n f: async entries => {\n siteInfos[siteName].entries = entries;\n await fFinal();\n },\n siteId: site.siteId,\n }).then(fOublier => fsForgetSite.push(fOublier));\n\n siteInfos[siteName].fForget = async () => {\n await Promise.all(fsForgetSite.map(f => f()));\n };\n await fFinal();\n }\n for (const site of obsoleteSites) {\n const {fForget} = siteInfos[site];\n if (fForget) await fForget();\n delete siteInfos[site];\n }\n\n await fFinal();\n lock.release();\n };\n\n // Need to call once manually to get the user's own entries to show even if user is offline or\n // the site's master databases are unreachable.\n await fFollowTrustedSites();\n\n let forgetTrustedSites: types.schémaFonctionOublier;\n this.followTrustedSites({f: fFollowTrustedSites}).then(\n fForget => (forgetTrustedSites = fForget),\n );\n\n const fForget = async () => {\n cancelled = true;\n if (forgetTrustedSites) await forgetTrustedSites();\n await Promise.all(\n Object.values(siteInfos).map(s => (s.fForget ? s.fForget() : Promise.resolve())),\n );\n };\n\n return fForget;\n }\n\n // Todo: refactor listenForReleases, listenForCollections, and listenForFeaturedReleases to remove duplicated code\n async listenForCollections({\n f,\n }: {\n f: types.schémaFonctionSuivi<\n {collection: CollectionWithId; contributor: string; site: string}[]\n >;\n }): Promise {\n const {siteId} = await this.siteConfigured();\n\n type SiteInfo = {\n entries?: {collection: CollectionWithId; contributor: string}[];\n fForget?: forgetFunction;\n };\n const siteInfos: {[site: string]: SiteInfo} = {};\n\n let cancelled = false;\n const lock = new Lock();\n\n const fFinal = async () => {\n const collections = Object.entries(siteInfos)\n .map(s => (s[1].entries || []).map(r => ({...r, site: s[0]})))\n .flat();\n await f(collections);\n };\n\n const fFollowTrustedSites = async (sites?: tableaux.élémentDonnées[]) => {\n const sitesList = (sites || []).map(s => s.données);\n sitesList.push({\n [TRUSTED_SITES_SITE_ID_COL]: siteId,\n [TRUSTED_SITES_NAME_COL]: 'Me !',\n });\n\n await lock.acquire();\n if (cancelled) return;\n\n const newSites = sitesList.filter(s => !Object.keys(siteInfos).includes(s.siteName));\n const obsoleteSites = Object.keys(siteInfos).filter(\n s => !sitesList.some(x => x.siteName === s),\n );\n\n for (const site of newSites) {\n const fsForgetSite: types.schémaFonctionOublier[] = [];\n\n const {siteName} = site;\n siteInfos[siteName] = {};\n\n this.listenForSiteCollections({\n f: async entries => {\n siteInfos[siteName].entries = entries;\n await fFinal();\n },\n siteId: site.siteId,\n }).then(fOublier => fsForgetSite.push(fOublier));\n\n siteInfos[siteName].fForget = async () => {\n await Promise.all(fsForgetSite.map(f => f()));\n };\n await fFinal();\n }\n for (const site of obsoleteSites) {\n const {fForget} = siteInfos[site];\n if (fForget) await fForget();\n delete siteInfos[site];\n }\n\n await fFinal();\n lock.release();\n };\n\n // Need to call once manually to get the user's own entries to show even if user is offline or\n // the site's master databases are unreachable.\n await fFollowTrustedSites();\n\n let forgetTrustedSites: types.schémaFonctionOublier;\n this.followTrustedSites({f: fFollowTrustedSites}).then(\n fForget => (forgetTrustedSites = fForget),\n );\n\n const fForget = async () => {\n cancelled = true;\n if (forgetTrustedSites) await forgetTrustedSites();\n await Promise.all(\n Object.values(siteInfos).map(s => (s.fForget ? s.fForget() : Promise.resolve())),\n );\n };\n\n return fForget;\n }\n\n async listenForFeaturedReleases({\n f,\n }: {\n f: types.schémaFonctionSuivi;\n }): Promise {\n const {siteId} = await this.siteConfigured();\n\n // Todo: implement filtering of other sites' features according to our blocked CID list?\n type SiteInfo = {\n featuredReleases?: FeaturedRelease[];\n fForget?: forgetFunction;\n };\n const siteInfos: {[site: string]: SiteInfo} = {};\n\n let cancelled = false;\n const lock = new Lock();\n\n const fFinal = async () => {\n const releases = Object.entries(siteInfos)\n .map(s => (s[1].featuredReleases || []).map(r => ({...r, site: s[0]})))\n .flat();\n await f(releases);\n };\n\n const fFollowTrustedSites = async (sites?: tableaux.élémentDonnées[]) => {\n const sitesList = (sites || []).map(s => s.données);\n sitesList.push({\n [TRUSTED_SITES_SITE_ID_COL]: siteId,\n [TRUSTED_SITES_NAME_COL]: 'Me !',\n });\n\n await lock.acquire();\n if (cancelled) return;\n\n const newSites = sitesList.filter(s => !Object.keys(siteInfos).includes(s.siteName));\n const obsoleteSites = Object.keys(siteInfos).filter(\n s => !sitesList.some(x => x.siteName === s),\n );\n\n for (const site of newSites) {\n const fsForgetSite: types.schémaFonctionOublier[] = [];\n\n const {siteName} = site;\n siteInfos[siteName] = {};\n\n this.listenForSiteFeaturedReleases({\n f: async entries => {\n siteInfos[siteName].featuredReleases = entries.map(x=>x.featured);\n await fFinal();\n },\n siteId: site.siteId,\n }).then(fOublier => fsForgetSite.push(fOublier));\n\n siteInfos[siteName].fForget = async () => {\n await Promise.all(fsForgetSite.map(f => f()));\n };\n await fFinal();\n }\n for (const site of obsoleteSites) {\n const {fForget} = siteInfos[site];\n if (fForget) await fForget();\n delete siteInfos[site];\n }\n\n await fFinal();\n lock.release();\n };\n\n // Need to call once manually to get the user's own entries to show even if user is offline or\n // the site's master databases are unreachable.\n await fFollowTrustedSites();\n\n let forgetTrustedSites: types.schémaFonctionOublier;\n this.followTrustedSites({f: fFollowTrustedSites}).then(\n fForget => (forgetTrustedSites = fForget),\n );\n\n const fForget = async () => {\n cancelled = true;\n if (forgetTrustedSites) await forgetTrustedSites();\n await Promise.all(\n Object.values(siteInfos).map(s => (s.fForget ? s.fForget() : Promise.resolve())),\n );\n };\n\n return fForget;\n }\n\n // User functionalities - adding and editing content\n\n async addRelease(release: Release): Promise {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n await this.constellation.bds.ajouterÉlémentÀTableauUnique({\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: RELEASES_DB_TABLE_KEY,\n vals: removeUndefined(release),\n });\n }\n\n async removeRelease(releaseId: string) {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n await this.constellation.bds.effacerÉlémentDeTableauUnique({\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: RELEASES_DB_TABLE_KEY,\n idÉlément: releaseId,\n });\n }\n\n async editRelease({\n release,\n releaseId,\n }: {\n release: Partial;\n releaseId: string;\n }): Promise {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n return await this.constellation.bds.modifierÉlémentDeTableauUnique({\n vals: release,\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: RELEASES_DB_TABLE_KEY,\n idÉlément: releaseId,\n });\n }\n\n async addCollection(collection: Collection): Promise {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n await this.constellation.bds.ajouterÉlémentÀTableauUnique({\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: COLLECTIONS_DB_TABLE_KEY,\n vals: removeUndefined(collection),\n });\n }\n\n async removeCollection(collectionId: string) {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n await this.constellation.bds.effacerÉlémentDeTableauUnique({\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: COLLECTIONS_DB_TABLE_KEY,\n idÉlément: collectionId,\n });\n }\n\n async editCollection({\n collection,\n collectionId,\n }: {\n collection: Partial;\n collectionId: string;\n }): Promise {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n return await this.constellation.bds.modifierÉlémentDeTableauUnique({\n vals: collection,\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: COLLECTIONS_DB_TABLE_KEY,\n idÉlément: collectionId,\n });\n }\n\n async getCollectionReleasesSetId({collectionId}: {collectionId: string}): Promise {\n const collections = await uneFois(\n async (\n fSuivi: types.schémaFonctionSuivi,\n ): Promise => {\n return await this.listenForCollections({\n f: async collections => fSuivi(collections.map(c => c.collection)),\n });\n },\n );\n const collection = collections.find(c => c.id === collectionId);\n if (!collection) throw new Error('Collection not found.');\n return collection.collection[COLLECTIONS_RELEASES_COLUMN];\n }\n\n async addReleaseToCollection({\n releaseId,\n collectionId,\n }: {\n releaseId: string;\n collectionId: string;\n }): Promise {\n const collectionReleases = await this.getCollectionReleasesSetId({collectionId});\n await this.constellation.orbite.appliquerFonctionBdOrbite({\n idBd: collectionReleases,\n fonction: 'add',\n args: [releaseId],\n });\n }\n\n async removeReleaseFromCollection({\n releaseId,\n collectionId,\n }: {\n releaseId: string;\n collectionId: string;\n }): Promise {\n const collectionReleases = await this.getCollectionReleasesSetId({collectionId});\n await this.constellation.orbite.appliquerFonctionBdOrbite({\n idBd: collectionReleases,\n fonction: 'remove',\n args: [releaseId],\n });\n }\n\n // User profile functions\n async changeName({name, language}: {name?: string; language: string}): Promise {\n if (name) await this.constellation.profil.sauvegarderNom({langue: language, nom: name});\n else await this.constellation.profil.effacerNom({langue: language});\n }\n\n async changeProfilePhoto({\n image,\n }: {\n image?: {contenu: Uint8Array; nomFichier: string};\n }): Promise {\n if (image) return await this.constellation.profil.sauvegarderImage({image});\n else return await this.constellation.profil.effacerImage();\n }\n\n async addContactInfo({type, contact}: {type: string; contact: string}): Promise {\n return await this.constellation.profil.sauvegarderContact({type, contact});\n }\n\n async removeContactInfo({type, contact}: {type: string; contact?: string}): Promise {\n return await this.constellation.profil.effacerContact({type, contact});\n }\n\n async deleteAccount(): Promise {\n return await this.constellation.fermerCompte();\n }\n\n async listenForAccountId({f}: {f: (account?: string) => void}): Promise {\n return await this.constellation.suivreIdCompte({f});\n }\n\n async listenForAccountExists({f}: {f: (exists: boolean) => void}): Promise {\n return await this.constellation.profil.suivreInitialisé({f});\n }\n\n async listenForNameChange({\n f,\n accountId,\n }: {\n f: (name: {[language: string]: string}) => void;\n accountId?: string;\n }): Promise {\n return await this.constellation.profil.suivreNoms({\n f,\n idCompte: accountId,\n });\n }\n\n async listenForContactInfoChange({\n f,\n accountId,\n }: {\n f: types.schémaFonctionSuivi<{type: string; contact: string}[]>;\n accountId?: string;\n }): Promise {\n return await this.constellation.profil.suivreContacts({\n f,\n idCompte: accountId,\n });\n }\n\n async listenForProfilePhotoChange({\n f,\n accountId,\n }: {\n f: types.schémaFonctionSuivi;\n accountId?: string;\n }): Promise {\n return await this.constellation.profil.suivreImage({f, idCompte: accountId});\n }\n\n // Site moderator functions. Moderators can moderate content and exclude/invite other useres.\n // Admins can do all that and also invite other admins and moderators.\n\n async featureRelease({\n cid,\n startTime,\n endTime,\n }: {\n cid: string;\n startTime: number;\n endTime: number;\n }) {\n const {modDbId} = await this.orbiterConfig();\n\n return (\n await this.constellation.bds.ajouterÉlémentÀTableauParClef({\n idBd: modDbId,\n clefTableau: FEATURED_RELEASES_TABLE_KEY,\n vals: {\n [FEATURED_RELEASES_RELEASE_ID_COLUMN]: cid,\n [FEATURED_RELEASES_START_TIME_COLUMN]: startTime,\n [FEATURED_RELEASES_END_TIME_COLUMN]: endTime,\n },\n })\n )[0];\n }\n\n async listenToIsModerator({\n f,\n userId,\n }: {\n f: (isMod: 'ADMIN' | 'MODERATOR' | undefined) => void;\n userId?: string;\n }): Promise {\n // User current user if none is specified.\n userId = userId || (await this.constellation.obtIdCompte());\n const {siteId} = await this.siteConfigured();\n\n const resolveModType = (x?: 'MODÉRATEUR' | 'MEMBRE'): 'ADMIN' | 'MODERATOR' | undefined => {\n return x === 'MODÉRATEUR' ? 'ADMIN' : x === 'MEMBRE' ? 'MODERATOR' : undefined;\n };\n\n return await this.constellation.suivreAccèsBd({\n id: siteId,\n f: x => f(resolveModType(x.find(y => y.idCompte === userId)?.rôle)),\n });\n }\n\n async inviteModerator({userId, admin = false}: {userId: string; admin?: boolean}): Promise {\n // Invitations are not revocable ! They can, however, be upgraded (moderator => admin), though not downgraded.\n\n const {siteId} = await this.siteConfigured();\n const {modDbId, swarmId} = await this.orbiterConfig();\n\n await this.constellation.nuées.inviterAuteur({\n idNuée: swarmId,\n idCompteAuteur: userId,\n rôle: admin ? 'MODÉRATEUR' : 'MEMBRE',\n });\n await this.constellation.bds.inviterAuteur({\n idBd: modDbId,\n idCompteAuteur: userId,\n rôle: admin ? 'MODÉRATEUR' : 'MEMBRE',\n });\n if (admin) {\n await this.constellation.donnerAccès({idBd: siteId, identité: userId, rôle: 'MODÉRATEUR'});\n }\n }\n\n async blockRelease({cid}: {cid: string}): Promise {\n const {modDbId} = await this.orbiterConfig();\n\n return (\n await this.constellation.bds.ajouterÉlémentÀTableauParClef({\n idBd: modDbId,\n clefTableau: BLOCKED_RELEASES_TABLE_KEY,\n vals: {[BLOCKED_RELEASES_RELEASE_ID_COLUMN]: cid},\n })\n )[0];\n }\n\n async unblockRelease({id}: {id: string}): Promise {\n const {modDbId} = await this.orbiterConfig();\n\n await this.constellation.bds.effacerÉlémentDeTableauParClef({\n idBd: modDbId,\n clefTableau: BLOCKED_RELEASES_TABLE_KEY,\n idÉlément: id,\n });\n }\n\n async makeSitePrivate(): Promise {\n const {swarmId} = await this.orbiterConfig();\n\n // Both releases and collections swarms share the same swarm and authorisation rules, so changing one will update both\n const authId = await this.constellation.nuées.obtGestionnaireAutorisationsDeNuée({\n idNuée: swarmId,\n });\n await this.constellation.nuées.changerPhisolophieAutorisation({\n idAutorisation: authId,\n philosophie: 'CJPI',\n });\n }\n\n async makeSitePublic(): Promise {\n const {swarmId} = await this.orbiterConfig();\n\n // Both releases and collections swarms share the same swarm and authorisation rules, so changing one will update both\n const authId = await this.constellation.nuées.obtGestionnaireAutorisationsDeNuée({\n idNuée: swarmId,\n });\n await this.constellation.nuées.changerPhisolophieAutorisation({\n idAutorisation: authId,\n philosophie: 'IJPC',\n });\n }\n\n async inviteUser({userId}: {userId: string}): Promise {\n const {swarmId} = await this.orbiterConfig();\n\n // Both releases and collections swarms share the same swarm and authorisation rules, so changing one will update both\n await this.constellation.nuées.accepterMembreNuée({\n idNuée: swarmId,\n idCompte: userId,\n });\n }\n\n async blockUser({userId}: {userId: string}): Promise {\n const {swarmId} = await this.orbiterConfig();\n\n // Both releases and collections swarms share the same swarm and authorisation rules, so changing one will update both\n await this.constellation.nuées.exclureMembreDeNuée({\n idNuée: swarmId,\n idCompte: userId,\n });\n }\n\n async trustSite({siteId, siteName}: {siteName: string; siteId: string}): Promise {\n const {modDbId} = await this.orbiterConfig();\n\n const elementIds = await this.constellation.bds.ajouterÉlémentÀTableauParClef({\n idBd: modDbId,\n clefTableau: TRUSTED_SITES_TABLE_KEY,\n vals: {\n [TRUSTED_SITES_SITE_ID_COL]: siteId,\n [TRUSTED_SITES_NAME_COL]: siteName,\n },\n });\n return elementIds[0];\n }\n\n async editTrustedSite({elementId, site}: {elementId: string; site: Partial}) {\n const {modDbId} = await this.orbiterConfig();\n\n await this.constellation.bds.modifierÉlémentDeTableauParClef({\n idBd: modDbId,\n clefTableau: TRUSTED_SITES_TABLE_KEY,\n idÉlément: elementId,\n vals: site,\n });\n }\n\n async untrustSite({elementId}: {elementId: string}) {\n const {modDbId} = await this.orbiterConfig();\n await this.constellation.bds.effacerÉlémentDeTableauParClef({\n idBd: modDbId,\n clefTableau: TRUSTED_SITES_TABLE_KEY,\n idÉlément: elementId,\n });\n }\n}\n","import type {App} from 'vue';\nimport {loadStubData} from './dev/index.js';\nimport OrbiterApp from './orbiter';\nimport type {possiblyIncompleteVariableIds} from './types';\n\nexport default {\n install: (app: App) => {\n const variableIds = getVariableIds();\n const constellation = app.config.globalProperties.$constl;\n\n const orbiterApp = new OrbiterApp({\n constellation,\n siteId: variableIds ? import.meta.env.VITE_SITE_ID : undefined,\n swarmId: variableIds ? import.meta.env.VITE_SWARM_ID : undefined,\n variableIds,\n });\n app.config.globalProperties.$orbiter = orbiterApp;\n\n if (import.meta.env.VITE_STUB_DATA) {\n loadStubData(orbiterApp);\n }\n\n app.provide('orbiter', orbiterApp);\n },\n};\n\nconst getVariableIds = (): possiblyIncompleteVariableIds => {\n const {\n VITE_TRUSTED_SITES_SITE_ID_VAR_ID,\n VITE_TRUSTED_SITES_NAME_VAR_ID,\n VITE_RELEASES_FILE_VAR_ID,\n VITE_RELEASES_CATEGORY_VAR_ID,\n VITE_RELEASES_AUTHOR_VAR_ID,\n VITE_RELEASES_CONTENT_NAME_VAR_ID,\n VITE_RELEASES_METADATA_VAR_ID,\n VITE_RELEASES_THUMBNAIL_VAR_ID,\n VITE_RELEASES_STATUS_VAR_ID,\n VITE_COLLECTIONS_AUTHOR_VAR_ID,\n VITE_COLLECTIONS_METADATA_VAR_ID,\n VITE_COLLECTIONS_NAME_VAR_ID,\n VITE_COLLECTIONS_RELEASES_VAR_ID,\n VITE_COLLECTIONS_THUMBNAIL_VAR_ID,\n VITE_COLLECTIONS_CATEGORY_VAR_ID,\n VITE_COLLECTIONS_STATUS_VAR_ID,\n VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID,\n VITE_FEATURED_RELEASES_START_TIME_VAR_ID,\n VITE_FEATURED_RELEASES_END_TIME_VAR_ID,\n } = import.meta.env;\n\n const variableIds: possiblyIncompleteVariableIds = {\n trustedSitesSiteIdVariableId: VITE_TRUSTED_SITES_SITE_ID_VAR_ID,\n trustedSitesNameVariableId: VITE_TRUSTED_SITES_NAME_VAR_ID,\n\n releasesFileVar: VITE_RELEASES_FILE_VAR_ID,\n releasesCategoryVar: VITE_RELEASES_CATEGORY_VAR_ID,\n releasesAuthorVar: VITE_RELEASES_AUTHOR_VAR_ID,\n releasesContentNameVar: VITE_RELEASES_CONTENT_NAME_VAR_ID,\n releasesMetadataVar: VITE_RELEASES_METADATA_VAR_ID,\n releasesThumbnailVar: VITE_RELEASES_THUMBNAIL_VAR_ID,\n releasesStatusVar: VITE_RELEASES_STATUS_VAR_ID,\n\n collectionsAuthorVar: VITE_COLLECTIONS_AUTHOR_VAR_ID,\n collectionsMetadataVar: VITE_COLLECTIONS_METADATA_VAR_ID,\n collectionsNameVar: VITE_COLLECTIONS_NAME_VAR_ID,\n collectionsReleasesVar: VITE_COLLECTIONS_RELEASES_VAR_ID,\n collectionsThumbnailVar: VITE_COLLECTIONS_THUMBNAIL_VAR_ID,\n collectionsCategoryVar: VITE_COLLECTIONS_CATEGORY_VAR_ID,\n collectionsStatusVar: VITE_COLLECTIONS_STATUS_VAR_ID,\n\n featuredReleasesReleaseIdVar: VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID,\n featuredReleasesStartTimeVar: VITE_FEATURED_RELEASES_START_TIME_VAR_ID,\n featuredReleasesEndTimeVar: VITE_FEATURED_RELEASES_END_TIME_VAR_ID,\n };\n\n return variableIds;\n};\n","/**\n * plugins/index.ts\n *\n * Automatically included in `./src/main.ts`\n */\n\n// Plugins\nimport vuetify from '../vuetify';\nimport {loadFonts} from '../webfontloader';\n\nimport orbiter from '../orbiter';\n\n// Types\nimport type {App} from 'vue';\n\nexport function registerPlugins(app: App) {\n loadFonts();\n app.use(vuetify);\n app.use(orbiter);\n}\n","import constellationNavigateur from '../constellation/browser';\nimport {registerPlugins} from './common';\n\n// Types\nimport type {App} from 'vue';\n\nexport function inscrireExtentions(appli: App) {\n appli.use(constellationNavigateur);\n registerPlugins(appli);\n}\n","/*!\n * vue-router v4.4.5\n * (c) 2024 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, shallowReactive, nextTick } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst isBrowser = typeof document !== 'undefined';\n\n/**\n * Allows differentiating lazy components from functional components and vue-class-component\n * @internal\n *\n * @param component\n */\nfunction isRouteComponent(component) {\n return (typeof component === 'object' ||\n 'displayName' in component ||\n 'props' in component ||\n '__vccOpts' in component);\n}\nfunction isESModule(obj) {\n return (obj.__esModule ||\n obj[Symbol.toStringTag] === 'Module' ||\n // support CF with dynamic imports that do not\n // add the Module string tag\n (obj.default && isRouteComponent(obj.default)));\n}\nconst assign = Object.assign;\nfunction applyToParams(fn, params) {\n const newParams = {};\n for (const key in params) {\n const value = params[key];\n newParams[key] = isArray(value)\n ? value.map(fn)\n : fn(value);\n }\n return newParams;\n}\nconst noop = () => { };\n/**\n * Typesafe alternative to Array.isArray\n * https://github.com/microsoft/TypeScript/pull/48228\n */\nconst isArray = Array.isArray;\n\nfunction warn(msg) {\n // avoid using ...args as it breaks in older Edge builds\n const args = Array.from(arguments).slice(1);\n console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\n}\n\n/**\n * Encoding Rules (␣ = Space)\n * - Path: ␣ \" < > # ? { }\n * - Query: ␣ \" < > # & =\n * - Hash: ␣ \" < > `\n *\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\n * defines some extra characters to be encoded. Most browsers do not encode them\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\n * also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`)\n * plus `-._~`. This extra safety should be applied to query by patching the\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\n * encoded everywhere because some browsers like FF encode it when directly\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\n */\n// const EXTRA_RESERVED_RE = /[!'()*]/g\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\nconst HASH_RE = /#/g; // %23\nconst AMPERSAND_RE = /&/g; // %26\nconst SLASH_RE = /\\//g; // %2F\nconst EQUAL_RE = /=/g; // %3D\nconst IM_RE = /\\?/g; // %3F\nconst PLUS_RE = /\\+/g; // %2B\n/**\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\n * seems to be less flexible than not doing so and I can't find out the legacy\n * systems requiring this for regular requests like text/html. In the standard,\n * the encoding of the plus character is only mentioned for\n * application/x-www-form-urlencoded\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\n * leave the plus character as is in queries. To be more flexible, we allow the\n * plus character on the query, but it can also be manually encoded by the user.\n *\n * Resources:\n * - https://url.spec.whatwg.org/#urlencoded-parsing\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\n */\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\nconst ENC_CARET_RE = /%5E/g; // ^\nconst ENC_BACKTICK_RE = /%60/g; // `\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\nconst ENC_PIPE_RE = /%7C/g; // |\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\nconst ENC_SPACE_RE = /%20/g; // }\n/**\n * Encode characters that need to be encoded on the path, search and hash\n * sections of the URL.\n *\n * @internal\n * @param text - string to encode\n * @returns encoded string\n */\nfunction commonEncode(text) {\n return encodeURI('' + text)\n .replace(ENC_PIPE_RE, '|')\n .replace(ENC_BRACKET_OPEN_RE, '[')\n .replace(ENC_BRACKET_CLOSE_RE, ']');\n}\n/**\n * Encode characters that need to be encoded on the hash section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeHash(text) {\n return commonEncode(text)\n .replace(ENC_CURLY_OPEN_RE, '{')\n .replace(ENC_CURLY_CLOSE_RE, '}')\n .replace(ENC_CARET_RE, '^');\n}\n/**\n * Encode characters that need to be encoded query values on the query\n * section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeQueryValue(text) {\n return (commonEncode(text)\n // Encode the space as +, encode the + to differentiate it from the space\n .replace(PLUS_RE, '%2B')\n .replace(ENC_SPACE_RE, '+')\n .replace(HASH_RE, '%23')\n .replace(AMPERSAND_RE, '%26')\n .replace(ENC_BACKTICK_RE, '`')\n .replace(ENC_CURLY_OPEN_RE, '{')\n .replace(ENC_CURLY_CLOSE_RE, '}')\n .replace(ENC_CARET_RE, '^'));\n}\n/**\n * Like `encodeQueryValue` but also encodes the `=` character.\n *\n * @param text - string to encode\n */\nfunction encodeQueryKey(text) {\n return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodePath(text) {\n return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL as a\n * param. This function encodes everything {@link encodePath} does plus the\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\n * string instead.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeParam(text) {\n return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\n}\n/**\n * Decode text using `decodeURIComponent`. Returns the original text if it\n * fails.\n *\n * @param text - string to decode\n * @returns decoded string\n */\nfunction decode(text) {\n try {\n return decodeURIComponent('' + text);\n }\n catch (err) {\n (process.env.NODE_ENV !== 'production') && warn(`Error decoding \"${text}\". Using original value`);\n }\n return '' + text;\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\n/**\n * Transforms a URI into a normalized history location\n *\n * @param parseQuery\n * @param location - URI to normalize\n * @param currentLocation - current absolute location. Allows resolving relative\n * paths. Must start with `/`. Defaults to `/`\n * @returns a normalized history location\n */\nfunction parseURL(parseQuery, location, currentLocation = '/') {\n let path, query = {}, searchString = '', hash = '';\n // Could use URL and URLSearchParams but IE 11 doesn't support it\n // TODO: move to new URL()\n const hashPos = location.indexOf('#');\n let searchPos = location.indexOf('?');\n // the hash appears before the search, so it's not part of the search string\n if (hashPos < searchPos && hashPos >= 0) {\n searchPos = -1;\n }\n if (searchPos > -1) {\n path = location.slice(0, searchPos);\n searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\n query = parseQuery(searchString);\n }\n if (hashPos > -1) {\n path = path || location.slice(0, hashPos);\n // keep the # character\n hash = location.slice(hashPos, location.length);\n }\n // no search and no query\n path = resolveRelativePath(path != null ? path : location, currentLocation);\n // empty path means a relative query or hash `?foo=f`, `#thing`\n return {\n fullPath: path + (searchString && '?') + searchString + hash,\n path,\n query,\n hash: decode(hash),\n };\n}\n/**\n * Stringifies a URL object\n *\n * @param stringifyQuery\n * @param location\n */\nfunction stringifyURL(stringifyQuery, location) {\n const query = location.query ? stringifyQuery(location.query) : '';\n return location.path + (query && '?') + query + (location.hash || '');\n}\n/**\n * Strips off the base from the beginning of a location.pathname in a non-case-sensitive way.\n *\n * @param pathname - location.pathname\n * @param base - base to strip off\n */\nfunction stripBase(pathname, base) {\n // no base or base is not found at the beginning\n if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\n return pathname;\n return pathname.slice(base.length) || '/';\n}\n/**\n * Checks if two RouteLocation are equal. This means that both locations are\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\n * parameters and `hash` are the same\n *\n * @param stringifyQuery - A function that takes a query object of type LocationQueryRaw and returns a string representation of it.\n * @param a - first {@link RouteLocation}\n * @param b - second {@link RouteLocation}\n */\nfunction isSameRouteLocation(stringifyQuery, a, b) {\n const aLastIndex = a.matched.length - 1;\n const bLastIndex = b.matched.length - 1;\n return (aLastIndex > -1 &&\n aLastIndex === bLastIndex &&\n isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\n isSameRouteLocationParams(a.params, b.params) &&\n stringifyQuery(a.query) === stringifyQuery(b.query) &&\n a.hash === b.hash);\n}\n/**\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\n * considered equal to the `RouteRecord` they are aliasing.\n *\n * @param a - first {@link RouteRecord}\n * @param b - second {@link RouteRecord}\n */\nfunction isSameRouteRecord(a, b) {\n // since the original record has an undefined value for aliasOf\n // but all aliases point to the original record, this will always compare\n // the original record\n return (a.aliasOf || a) === (b.aliasOf || b);\n}\nfunction isSameRouteLocationParams(a, b) {\n if (Object.keys(a).length !== Object.keys(b).length)\n return false;\n for (const key in a) {\n if (!isSameRouteLocationParamsValue(a[key], b[key]))\n return false;\n }\n return true;\n}\nfunction isSameRouteLocationParamsValue(a, b) {\n return isArray(a)\n ? isEquivalentArray(a, b)\n : isArray(b)\n ? isEquivalentArray(b, a)\n : a === b;\n}\n/**\n * Check if two arrays are the same or if an array with one single entry is the\n * same as another primitive value. Used to check query and parameters\n *\n * @param a - array of values\n * @param b - array of values or a single value\n */\nfunction isEquivalentArray(a, b) {\n return isArray(b)\n ? a.length === b.length && a.every((value, i) => value === b[i])\n : a.length === 1 && a[0] === b;\n}\n/**\n * Resolves a relative path that starts with `.`.\n *\n * @param to - path location we are resolving\n * @param from - currentLocation.path, should start with `/`\n */\nfunction resolveRelativePath(to, from) {\n if (to.startsWith('/'))\n return to;\n if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) {\n warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\n return to;\n }\n if (!to)\n return from;\n const fromSegments = from.split('/');\n const toSegments = to.split('/');\n const lastToSegment = toSegments[toSegments.length - 1];\n // make . and ./ the same (../ === .., ../../ === ../..)\n // this is the same behavior as new URL()\n if (lastToSegment === '..' || lastToSegment === '.') {\n toSegments.push('');\n }\n let position = fromSegments.length - 1;\n let toPosition;\n let segment;\n for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\n segment = toSegments[toPosition];\n // we stay on the same position\n if (segment === '.')\n continue;\n // go up in the from array\n if (segment === '..') {\n // we can't go below zero, but we still need to increment toPosition\n if (position > 1)\n position--;\n // continue\n }\n // we reached a non-relative path, we stop here\n else\n break;\n }\n return (fromSegments.slice(0, position).join('/') +\n '/' +\n toSegments.slice(toPosition).join('/'));\n}\n/**\n * Initial route location where the router is. Can be used in navigation guards\n * to differentiate the initial navigation.\n *\n * @example\n * ```js\n * import { START_LOCATION } from 'vue-router'\n *\n * router.beforeEach((to, from) => {\n * if (from === START_LOCATION) {\n * // initial navigation\n * }\n * })\n * ```\n */\nconst START_LOCATION_NORMALIZED = {\n path: '/',\n // TODO: could we use a symbol in the future?\n name: undefined,\n params: {},\n query: {},\n hash: '',\n fullPath: '/',\n matched: [],\n meta: {},\n redirectedFrom: undefined,\n};\n\nvar NavigationType;\n(function (NavigationType) {\n NavigationType[\"pop\"] = \"pop\";\n NavigationType[\"push\"] = \"push\";\n})(NavigationType || (NavigationType = {}));\nvar NavigationDirection;\n(function (NavigationDirection) {\n NavigationDirection[\"back\"] = \"back\";\n NavigationDirection[\"forward\"] = \"forward\";\n NavigationDirection[\"unknown\"] = \"\";\n})(NavigationDirection || (NavigationDirection = {}));\n/**\n * Starting location for Histories\n */\nconst START = '';\n// Generic utils\n/**\n * Normalizes a base by removing any trailing slash and reading the base tag if\n * present.\n *\n * @param base - base to normalize\n */\nfunction normalizeBase(base) {\n if (!base) {\n if (isBrowser) {\n // respect tag\n const baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\n }\n else {\n base = '/';\n }\n }\n // ensure leading slash when it was removed by the regex above avoid leading\n // slash with hash because the file could be read from the disk like file://\n // and the leading slash would cause problems\n if (base[0] !== '/' && base[0] !== '#')\n base = '/' + base;\n // remove the trailing slash so all other method can just do `base + fullPath`\n // to build an href\n return removeTrailingSlash(base);\n}\n// remove any character before the hash\nconst BEFORE_HASH_RE = /^[^#]+#/;\nfunction createHref(base, location) {\n return base.replace(BEFORE_HASH_RE, '#') + location;\n}\n\nfunction getElementPosition(el, offset) {\n const docRect = document.documentElement.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n return {\n behavior: offset.behavior,\n left: elRect.left - docRect.left - (offset.left || 0),\n top: elRect.top - docRect.top - (offset.top || 0),\n };\n}\nconst computeScrollPosition = () => ({\n left: window.scrollX,\n top: window.scrollY,\n});\nfunction scrollToPosition(position) {\n let scrollToOptions;\n if ('el' in position) {\n const positionEl = position.el;\n const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\n /**\n * `id`s can accept pretty much any characters, including CSS combinators\n * like `>` or `~`. It's still possible to retrieve elements using\n * `document.getElementById('~')` but it needs to be escaped when using\n * `document.querySelector('#\\\\~')` for it to be valid. The only\n * requirements for `id`s are them to be unique on the page and to not be\n * empty (`id=\"\"`). Because of that, when passing an id selector, it should\n * be properly escaped for it to work with `querySelector`. We could check\n * for the id selector to be simple (no CSS combinators `+ >~`) but that\n * would make things inconsistent since they are valid characters for an\n * `id` but would need to be escaped when using `querySelector`, breaking\n * their usage and ending up in no selector returned. Selectors need to be\n * escaped:\n *\n * - `#1-thing` becomes `#\\31 -thing`\n * - `#with~symbols` becomes `#with\\\\~symbols`\n *\n * - More information about the topic can be found at\n * https://mathiasbynens.be/notes/html5-id-class.\n * - Practical example: https://mathiasbynens.be/demo/html5-id\n */\n if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') {\n if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\n try {\n const foundEl = document.querySelector(position.el);\n if (isIdSelector && foundEl) {\n warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\n // return to avoid other warnings\n return;\n }\n }\n catch (err) {\n warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\n // return to avoid other warnings\n return;\n }\n }\n }\n const el = typeof positionEl === 'string'\n ? isIdSelector\n ? document.getElementById(positionEl.slice(1))\n : document.querySelector(positionEl)\n : positionEl;\n if (!el) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\n return;\n }\n scrollToOptions = getElementPosition(el, position);\n }\n else {\n scrollToOptions = position;\n }\n if ('scrollBehavior' in document.documentElement.style)\n window.scrollTo(scrollToOptions);\n else {\n window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY);\n }\n}\nfunction getScrollKey(path, delta) {\n const position = history.state ? history.state.position - delta : -1;\n return position + path;\n}\nconst scrollPositions = new Map();\nfunction saveScrollPosition(key, scrollPosition) {\n scrollPositions.set(key, scrollPosition);\n}\nfunction getSavedScrollPosition(key) {\n const scroll = scrollPositions.get(key);\n // consume it so it's not used again\n scrollPositions.delete(key);\n return scroll;\n}\n// TODO: RFC about how to save scroll position\n/**\n * ScrollBehavior instance used by the router to compute and restore the scroll\n * position when navigating.\n */\n// export interface ScrollHandler {\n// // returns a scroll position that can be saved in history\n// compute(): ScrollPositionEntry\n// // can take an extended ScrollPositionEntry\n// scroll(position: ScrollPosition): void\n// }\n// export const scrollHandler: ScrollHandler = {\n// compute: computeScroll,\n// scroll: scrollToPosition,\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\n/**\n * Creates a normalized history location from a window.location object\n * @param base - The base path\n * @param location - The window.location object\n */\nfunction createCurrentLocation(base, location) {\n const { pathname, search, hash } = location;\n // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\n const hashPos = base.indexOf('#');\n if (hashPos > -1) {\n let slicePos = hash.includes(base.slice(hashPos))\n ? base.slice(hashPos).length\n : 1;\n let pathFromHash = hash.slice(slicePos);\n // prepend the starting slash to hash so the url starts with /#\n if (pathFromHash[0] !== '/')\n pathFromHash = '/' + pathFromHash;\n return stripBase(pathFromHash, '');\n }\n const path = stripBase(pathname, base);\n return path + search + hash;\n}\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\n let listeners = [];\n let teardowns = [];\n // TODO: should it be a stack? a Dict. Check if the popstate listener\n // can trigger twice\n let pauseState = null;\n const popStateHandler = ({ state, }) => {\n const to = createCurrentLocation(base, location);\n const from = currentLocation.value;\n const fromState = historyState.value;\n let delta = 0;\n if (state) {\n currentLocation.value = to;\n historyState.value = state;\n // ignore the popstate and reset the pauseState\n if (pauseState && pauseState === from) {\n pauseState = null;\n return;\n }\n delta = fromState ? state.position - fromState.position : 0;\n }\n else {\n replace(to);\n }\n // Here we could also revert the navigation by calling history.go(-delta)\n // this listener will have to be adapted to not trigger again and to wait for the url\n // to be updated before triggering the listeners. Some kind of validation function would also\n // need to be passed to the listeners so the navigation can be accepted\n // call all listeners\n listeners.forEach(listener => {\n listener(currentLocation.value, from, {\n delta,\n type: NavigationType.pop,\n direction: delta\n ? delta > 0\n ? NavigationDirection.forward\n : NavigationDirection.back\n : NavigationDirection.unknown,\n });\n });\n };\n function pauseListeners() {\n pauseState = currentLocation.value;\n }\n function listen(callback) {\n // set up the listener and prepare teardown callbacks\n listeners.push(callback);\n const teardown = () => {\n const index = listeners.indexOf(callback);\n if (index > -1)\n listeners.splice(index, 1);\n };\n teardowns.push(teardown);\n return teardown;\n }\n function beforeUnloadListener() {\n const { history } = window;\n if (!history.state)\n return;\n history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\n }\n function destroy() {\n for (const teardown of teardowns)\n teardown();\n teardowns = [];\n window.removeEventListener('popstate', popStateHandler);\n window.removeEventListener('beforeunload', beforeUnloadListener);\n }\n // set up the listeners and prepare teardown callbacks\n window.addEventListener('popstate', popStateHandler);\n // TODO: could we use 'pagehide' or 'visibilitychange' instead?\n // https://developer.chrome.com/blog/page-lifecycle-api/\n window.addEventListener('beforeunload', beforeUnloadListener, {\n passive: true,\n });\n return {\n pauseListeners,\n listen,\n destroy,\n };\n}\n/**\n * Creates a state object\n */\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\n return {\n back,\n current,\n forward,\n replaced,\n position: window.history.length,\n scroll: computeScroll ? computeScrollPosition() : null,\n };\n}\nfunction useHistoryStateNavigation(base) {\n const { history, location } = window;\n // private variables\n const currentLocation = {\n value: createCurrentLocation(base, location),\n };\n const historyState = { value: history.state };\n // build current history entry as this is a fresh navigation\n if (!historyState.value) {\n changeLocation(currentLocation.value, {\n back: null,\n current: currentLocation.value,\n forward: null,\n // the length is off by one, we need to decrease it\n position: history.length - 1,\n replaced: true,\n // don't add a scroll as the user may have an anchor, and we want\n // scrollBehavior to be triggered without a saved position\n scroll: null,\n }, true);\n }\n function changeLocation(to, state, replace) {\n /**\n * if a base tag is provided, and we are on a normal domain, we have to\n * respect the provided `base` attribute because pushState() will use it and\n * potentially erase anything before the `#` like at\n * https://github.com/vuejs/router/issues/685 where a base of\n * `/folder/#` but a base of `/` would erase the `/folder/` section. If\n * there is no host, the `` tag makes no sense and if there isn't a\n * base tag we can just use everything after the `#`.\n */\n const hashIndex = base.indexOf('#');\n const url = hashIndex > -1\n ? (location.host && document.querySelector('base')\n ? base\n : base.slice(hashIndex)) + to\n : createBaseLocation() + base + to;\n try {\n // BROWSER QUIRK\n // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\n history[replace ? 'replaceState' : 'pushState'](state, '', url);\n historyState.value = state;\n }\n catch (err) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn('Error with push/replace State', err);\n }\n else {\n console.error(err);\n }\n // Force the navigation, this also resets the call count\n location[replace ? 'replace' : 'assign'](url);\n }\n }\n function replace(to, data) {\n const state = assign({}, history.state, buildState(historyState.value.back, \n // keep back and forward entries but override current position\n to, historyState.value.forward, true), data, { position: historyState.value.position });\n changeLocation(to, state, true);\n currentLocation.value = to;\n }\n function push(to, data) {\n // Add to current entry the information of where we are going\n // as well as saving the current position\n const currentState = assign({}, \n // use current history state to gracefully handle a wrong call to\n // history.replaceState\n // https://github.com/vuejs/router/issues/366\n historyState.value, history.state, {\n forward: to,\n scroll: computeScrollPosition(),\n });\n if ((process.env.NODE_ENV !== 'production') && !history.state) {\n warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\n `history.replaceState(history.state, '', url)\\n\\n` +\n `You can find more information at https://router.vuejs.org/guide/migration/#Usage-of-history-state`);\n }\n changeLocation(currentState.current, currentState, true);\n const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\n changeLocation(to, state, false);\n currentLocation.value = to;\n }\n return {\n location: currentLocation,\n state: historyState,\n push,\n replace,\n };\n}\n/**\n * Creates an HTML5 history. Most common history for single page applications.\n *\n * @param base -\n */\nfunction createWebHistory(base) {\n base = normalizeBase(base);\n const historyNavigation = useHistoryStateNavigation(base);\n const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\n function go(delta, triggerListeners = true) {\n if (!triggerListeners)\n historyListeners.pauseListeners();\n history.go(delta);\n }\n const routerHistory = assign({\n // it's overridden right after\n location: '',\n base,\n go,\n createHref: createHref.bind(null, base),\n }, historyNavigation, historyListeners);\n Object.defineProperty(routerHistory, 'location', {\n enumerable: true,\n get: () => historyNavigation.location.value,\n });\n Object.defineProperty(routerHistory, 'state', {\n enumerable: true,\n get: () => historyNavigation.state.value,\n });\n return routerHistory;\n}\n\n/**\n * Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\n *\n * @param base - Base applied to all urls, defaults to '/'\n * @returns a history object that can be passed to the router constructor\n */\nfunction createMemoryHistory(base = '') {\n let listeners = [];\n let queue = [START];\n let position = 0;\n base = normalizeBase(base);\n function setLocation(location) {\n position++;\n if (position !== queue.length) {\n // we are in the middle, we remove everything from here in the queue\n queue.splice(position);\n }\n queue.push(location);\n }\n function triggerListeners(to, from, { direction, delta }) {\n const info = {\n direction,\n delta,\n type: NavigationType.pop,\n };\n for (const callback of listeners) {\n callback(to, from, info);\n }\n }\n const routerHistory = {\n // rewritten by Object.defineProperty\n location: START,\n // TODO: should be kept in queue\n state: {},\n base,\n createHref: createHref.bind(null, base),\n replace(to) {\n // remove current entry and decrement position\n queue.splice(position--, 1);\n setLocation(to);\n },\n push(to, data) {\n setLocation(to);\n },\n listen(callback) {\n listeners.push(callback);\n return () => {\n const index = listeners.indexOf(callback);\n if (index > -1)\n listeners.splice(index, 1);\n };\n },\n destroy() {\n listeners = [];\n queue = [START];\n position = 0;\n },\n go(delta, shouldTrigger = true) {\n const from = this.location;\n const direction = \n // we are considering delta === 0 going forward, but in abstract mode\n // using 0 for the delta doesn't make sense like it does in html5 where\n // it reloads the page\n delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\n position = Math.max(0, Math.min(position + delta, queue.length - 1));\n if (shouldTrigger) {\n triggerListeners(this.location, from, {\n direction,\n delta,\n });\n }\n },\n };\n Object.defineProperty(routerHistory, 'location', {\n enumerable: true,\n get: () => queue[position],\n });\n return routerHistory;\n}\n\n/**\n * Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to\n * handle any URL is not possible.\n *\n * @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `` tag\n * in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState()\n * calls**, meaning that if you use a `` tag, it's `href` value **has to match this parameter** (ignoring anything\n * after the `#`).\n *\n * @example\n * ```js\n * // at https://example.com/folder\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\n * // you should avoid doing this because it changes the original url and breaks copying urls\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\n *\n * // at file:///usr/etc/folder/index.html\n * // for locations with no `host`, the base is ignored\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\n * ```\n */\nfunction createWebHashHistory(base) {\n // Make sure this implementation is fine in terms of encoding, specially for IE11\n // for `file://`, directly use the pathname and ignore the base\n // location.pathname contains an initial `/` even at the root: `https://example.com`\n base = location.host ? base || location.pathname + location.search : '';\n // allow the user to provide a `#` in the middle: `/base/#/app`\n if (!base.includes('#'))\n base += '#';\n if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) {\n warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\n }\n return createWebHistory(base);\n}\n\nfunction isRouteLocation(route) {\n return typeof route === 'string' || (route && typeof route === 'object');\n}\nfunction isRouteName(name) {\n return typeof name === 'string' || typeof name === 'symbol';\n}\n\nconst NavigationFailureSymbol = Symbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : '');\n/**\n * Enumeration with all possible types for navigation failures. Can be passed to\n * {@link isNavigationFailure} to check for specific failures.\n */\nvar NavigationFailureType;\n(function (NavigationFailureType) {\n /**\n * An aborted navigation is a navigation that failed because a navigation\n * guard returned `false` or called `next(false)`\n */\n NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\n /**\n * A cancelled navigation is a navigation that failed because a more recent\n * navigation finished started (not necessarily finished).\n */\n NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\n /**\n * A duplicated navigation is a navigation that failed because it was\n * initiated while already being at the exact same location.\n */\n NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\n})(NavigationFailureType || (NavigationFailureType = {}));\n// DEV only debug messages\nconst ErrorTypeMessages = {\n [1 /* ErrorTypes.MATCHER_NOT_FOUND */]({ location, currentLocation }) {\n return `No match for\\n ${JSON.stringify(location)}${currentLocation\n ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\n : ''}`;\n },\n [2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\n return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\n },\n [4 /* ErrorTypes.NAVIGATION_ABORTED */]({ from, to }) {\n return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\n },\n [8 /* ErrorTypes.NAVIGATION_CANCELLED */]({ from, to }) {\n return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\n },\n [16 /* ErrorTypes.NAVIGATION_DUPLICATED */]({ from, to }) {\n return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\n },\n};\n/**\n * Creates a typed NavigationFailure object.\n * @internal\n * @param type - NavigationFailureType\n * @param params - { from, to }\n */\nfunction createRouterError(type, params) {\n // keep full error messages in cjs versions\n if ((process.env.NODE_ENV !== 'production') || !true) {\n return assign(new Error(ErrorTypeMessages[type](params)), {\n type,\n [NavigationFailureSymbol]: true,\n }, params);\n }\n else {\n return assign(new Error(), {\n type,\n [NavigationFailureSymbol]: true,\n }, params);\n }\n}\nfunction isNavigationFailure(error, type) {\n return (error instanceof Error &&\n NavigationFailureSymbol in error &&\n (type == null || !!(error.type & type)));\n}\nconst propertiesToLog = ['params', 'query', 'hash'];\nfunction stringifyRoute(to) {\n if (typeof to === 'string')\n return to;\n if (to.path != null)\n return to.path;\n const location = {};\n for (const key of propertiesToLog) {\n if (key in to)\n location[key] = to[key];\n }\n return JSON.stringify(location, null, 2);\n}\n\n// default pattern for a param: non-greedy everything but /\nconst BASE_PARAM_PATTERN = '[^/]+?';\nconst BASE_PATH_PARSER_OPTIONS = {\n sensitive: false,\n strict: false,\n start: true,\n end: true,\n};\n// Special Regex characters that must be escaped in static tokens\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\n/**\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\n *\n * @param segments - array of segments returned by tokenizePath\n * @param extraOptions - optional options for the regexp\n * @returns a PathParser\n */\nfunction tokensToParser(segments, extraOptions) {\n const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\n // the amount of scores is the same as the length of segments except for the root segment \"/\"\n const score = [];\n // the regexp as a string\n let pattern = options.start ? '^' : '';\n // extracted keys\n const keys = [];\n for (const segment of segments) {\n // the root segment needs special treatment\n const segmentScores = segment.length ? [] : [90 /* PathScore.Root */];\n // allow trailing slash\n if (options.strict && !segment.length)\n pattern += '/';\n for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\n const token = segment[tokenIndex];\n // resets the score if we are inside a sub-segment /:a-other-:b\n let subSegmentScore = 40 /* PathScore.Segment */ +\n (options.sensitive ? 0.25 /* PathScore.BonusCaseSensitive */ : 0);\n if (token.type === 0 /* TokenType.Static */) {\n // prepend the slash if we are starting a new segment\n if (!tokenIndex)\n pattern += '/';\n pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\n subSegmentScore += 40 /* PathScore.Static */;\n }\n else if (token.type === 1 /* TokenType.Param */) {\n const { value, repeatable, optional, regexp } = token;\n keys.push({\n name: value,\n repeatable,\n optional,\n });\n const re = regexp ? regexp : BASE_PARAM_PATTERN;\n // the user provided a custom regexp /:id(\\\\d+)\n if (re !== BASE_PARAM_PATTERN) {\n subSegmentScore += 10 /* PathScore.BonusCustomRegExp */;\n // make sure the regexp is valid before using it\n try {\n new RegExp(`(${re})`);\n }\n catch (err) {\n throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\n err.message);\n }\n }\n // when we repeat we must take care of the repeating leading slash\n let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\n // prepend the slash if we are starting a new segment\n if (!tokenIndex)\n subPattern =\n // avoid an optional / if there are more segments e.g. /:p?-static\n // or /:p?-:p2\n optional && segment.length < 2\n ? `(?:/${subPattern})`\n : '/' + subPattern;\n if (optional)\n subPattern += '?';\n pattern += subPattern;\n subSegmentScore += 20 /* PathScore.Dynamic */;\n if (optional)\n subSegmentScore += -8 /* PathScore.BonusOptional */;\n if (repeatable)\n subSegmentScore += -20 /* PathScore.BonusRepeatable */;\n if (re === '.*')\n subSegmentScore += -50 /* PathScore.BonusWildcard */;\n }\n segmentScores.push(subSegmentScore);\n }\n // an empty array like /home/ -> [[{home}], []]\n // if (!segment.length) pattern += '/'\n score.push(segmentScores);\n }\n // only apply the strict bonus to the last score\n if (options.strict && options.end) {\n const i = score.length - 1;\n score[i][score[i].length - 1] += 0.7000000000000001 /* PathScore.BonusStrict */;\n }\n // TODO: dev only warn double trailing slash\n if (!options.strict)\n pattern += '/?';\n if (options.end)\n pattern += '$';\n // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\n else if (options.strict)\n pattern += '(?:/|$)';\n const re = new RegExp(pattern, options.sensitive ? '' : 'i');\n function parse(path) {\n const match = path.match(re);\n const params = {};\n if (!match)\n return null;\n for (let i = 1; i < match.length; i++) {\n const value = match[i] || '';\n const key = keys[i - 1];\n params[key.name] = value && key.repeatable ? value.split('/') : value;\n }\n return params;\n }\n function stringify(params) {\n let path = '';\n // for optional parameters to allow to be empty\n let avoidDuplicatedSlash = false;\n for (const segment of segments) {\n if (!avoidDuplicatedSlash || !path.endsWith('/'))\n path += '/';\n avoidDuplicatedSlash = false;\n for (const token of segment) {\n if (token.type === 0 /* TokenType.Static */) {\n path += token.value;\n }\n else if (token.type === 1 /* TokenType.Param */) {\n const { value, repeatable, optional } = token;\n const param = value in params ? params[value] : '';\n if (isArray(param) && !repeatable) {\n throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\n }\n const text = isArray(param)\n ? param.join('/')\n : param;\n if (!text) {\n if (optional) {\n // if we have more than one optional param like /:a?-static we don't need to care about the optional param\n if (segment.length < 2) {\n // remove the last slash as we could be at the end\n if (path.endsWith('/'))\n path = path.slice(0, -1);\n // do not append a slash on the next iteration\n else\n avoidDuplicatedSlash = true;\n }\n }\n else\n throw new Error(`Missing required param \"${value}\"`);\n }\n path += text;\n }\n }\n }\n // avoid empty path when we have multiple optional params\n return path || '/';\n }\n return {\n re,\n score,\n keys,\n parse,\n stringify,\n };\n}\n/**\n * Compares an array of numbers as used in PathParser.score and returns a\n * number. This function can be used to `sort` an array\n *\n * @param a - first array of numbers\n * @param b - second array of numbers\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n * should be sorted first\n */\nfunction compareScoreArray(a, b) {\n let i = 0;\n while (i < a.length && i < b.length) {\n const diff = b[i] - a[i];\n // only keep going if diff === 0\n if (diff)\n return diff;\n i++;\n }\n // if the last subsegment was Static, the shorter segments should be sorted first\n // otherwise sort the longest segment first\n if (a.length < b.length) {\n return a.length === 1 && a[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n ? -1\n : 1;\n }\n else if (a.length > b.length) {\n return b.length === 1 && b[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n ? 1\n : -1;\n }\n return 0;\n}\n/**\n * Compare function that can be used with `sort` to sort an array of PathParser\n *\n * @param a - first PathParser\n * @param b - second PathParser\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n */\nfunction comparePathParserScore(a, b) {\n let i = 0;\n const aScore = a.score;\n const bScore = b.score;\n while (i < aScore.length && i < bScore.length) {\n const comp = compareScoreArray(aScore[i], bScore[i]);\n // do not return if both are equal\n if (comp)\n return comp;\n i++;\n }\n if (Math.abs(bScore.length - aScore.length) === 1) {\n if (isLastScoreNegative(aScore))\n return 1;\n if (isLastScoreNegative(bScore))\n return -1;\n }\n // if a and b share the same score entries but b has more, sort b first\n return bScore.length - aScore.length;\n // this is the ternary version\n // return aScore.length < bScore.length\n // ? 1\n // : aScore.length > bScore.length\n // ? -1\n // : 0\n}\n/**\n * This allows detecting splats at the end of a path: /home/:id(.*)*\n *\n * @param score - score to check\n * @returns true if the last entry is negative\n */\nfunction isLastScoreNegative(score) {\n const last = score[score.length - 1];\n return score.length > 0 && last[last.length - 1] < 0;\n}\n\nconst ROOT_TOKEN = {\n type: 0 /* TokenType.Static */,\n value: '',\n};\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\n// After some profiling, the cache seems to be unnecessary because tokenizePath\n// (the slowest part of adding a route) is very fast\n// const tokenCache = new Map()\nfunction tokenizePath(path) {\n if (!path)\n return [[]];\n if (path === '/')\n return [[ROOT_TOKEN]];\n if (!path.startsWith('/')) {\n throw new Error((process.env.NODE_ENV !== 'production')\n ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\n : `Invalid path \"${path}\"`);\n }\n // if (tokenCache.has(path)) return tokenCache.get(path)!\n function crash(message) {\n throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\n }\n let state = 0 /* TokenizerState.Static */;\n let previousState = state;\n const tokens = [];\n // the segment will always be valid because we get into the initial state\n // with the leading /\n let segment;\n function finalizeSegment() {\n if (segment)\n tokens.push(segment);\n segment = [];\n }\n // index on the path\n let i = 0;\n // char at index\n let char;\n // buffer of the value read\n let buffer = '';\n // custom regexp for a param\n let customRe = '';\n function consumeBuffer() {\n if (!buffer)\n return;\n if (state === 0 /* TokenizerState.Static */) {\n segment.push({\n type: 0 /* TokenType.Static */,\n value: buffer,\n });\n }\n else if (state === 1 /* TokenizerState.Param */ ||\n state === 2 /* TokenizerState.ParamRegExp */ ||\n state === 3 /* TokenizerState.ParamRegExpEnd */) {\n if (segment.length > 1 && (char === '*' || char === '+'))\n crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\n segment.push({\n type: 1 /* TokenType.Param */,\n value: buffer,\n regexp: customRe,\n repeatable: char === '*' || char === '+',\n optional: char === '*' || char === '?',\n });\n }\n else {\n crash('Invalid state to consume buffer');\n }\n buffer = '';\n }\n function addCharToBuffer() {\n buffer += char;\n }\n while (i < path.length) {\n char = path[i++];\n if (char === '\\\\' && state !== 2 /* TokenizerState.ParamRegExp */) {\n previousState = state;\n state = 4 /* TokenizerState.EscapeNext */;\n continue;\n }\n switch (state) {\n case 0 /* TokenizerState.Static */:\n if (char === '/') {\n if (buffer) {\n consumeBuffer();\n }\n finalizeSegment();\n }\n else if (char === ':') {\n consumeBuffer();\n state = 1 /* TokenizerState.Param */;\n }\n else {\n addCharToBuffer();\n }\n break;\n case 4 /* TokenizerState.EscapeNext */:\n addCharToBuffer();\n state = previousState;\n break;\n case 1 /* TokenizerState.Param */:\n if (char === '(') {\n state = 2 /* TokenizerState.ParamRegExp */;\n }\n else if (VALID_PARAM_RE.test(char)) {\n addCharToBuffer();\n }\n else {\n consumeBuffer();\n state = 0 /* TokenizerState.Static */;\n // go back one character if we were not modifying\n if (char !== '*' && char !== '?' && char !== '+')\n i--;\n }\n break;\n case 2 /* TokenizerState.ParamRegExp */:\n // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\n // it already works by escaping the closing )\n // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\n // is this really something people need since you can also write\n // /prefix_:p()_suffix\n if (char === ')') {\n // handle the escaped )\n if (customRe[customRe.length - 1] == '\\\\')\n customRe = customRe.slice(0, -1) + char;\n else\n state = 3 /* TokenizerState.ParamRegExpEnd */;\n }\n else {\n customRe += char;\n }\n break;\n case 3 /* TokenizerState.ParamRegExpEnd */:\n // same as finalizing a param\n consumeBuffer();\n state = 0 /* TokenizerState.Static */;\n // go back one character if we were not modifying\n if (char !== '*' && char !== '?' && char !== '+')\n i--;\n customRe = '';\n break;\n default:\n crash('Unknown state');\n break;\n }\n }\n if (state === 2 /* TokenizerState.ParamRegExp */)\n crash(`Unfinished custom RegExp for param \"${buffer}\"`);\n consumeBuffer();\n finalizeSegment();\n // tokenCache.set(path, tokens)\n return tokens;\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\n const parser = tokensToParser(tokenizePath(record.path), options);\n // warn against params with the same name\n if ((process.env.NODE_ENV !== 'production')) {\n const existingKeys = new Set();\n for (const key of parser.keys) {\n if (existingKeys.has(key.name))\n warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\n existingKeys.add(key.name);\n }\n }\n const matcher = assign(parser, {\n record,\n parent,\n // these needs to be populated by the parent\n children: [],\n alias: [],\n });\n if (parent) {\n // both are aliases or both are not aliases\n // we don't want to mix them because the order is used when\n // passing originalRecord in Matcher.addRoute\n if (!matcher.record.aliasOf === !parent.record.aliasOf)\n parent.children.push(matcher);\n }\n return matcher;\n}\n\n/**\n * Creates a Router Matcher.\n *\n * @internal\n * @param routes - array of initial routes\n * @param globalOptions - global route options\n */\nfunction createRouterMatcher(routes, globalOptions) {\n // normalized ordered array of matchers\n const matchers = [];\n const matcherMap = new Map();\n globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\n function getRecordMatcher(name) {\n return matcherMap.get(name);\n }\n function addRoute(record, parent, originalRecord) {\n // used later on to remove by name\n const isRootAdd = !originalRecord;\n const mainNormalizedRecord = normalizeRouteRecord(record);\n if ((process.env.NODE_ENV !== 'production')) {\n checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent);\n }\n // we might be the child of an alias\n mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\n const options = mergeOptions(globalOptions, record);\n // generate an array of records to correctly handle aliases\n const normalizedRecords = [mainNormalizedRecord];\n if ('alias' in record) {\n const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\n for (const alias of aliases) {\n normalizedRecords.push(\n // we need to normalize again to ensure the `mods` property\n // being non enumerable\n normalizeRouteRecord(assign({}, mainNormalizedRecord, {\n // this allows us to hold a copy of the `components` option\n // so that async components cache is hold on the original record\n components: originalRecord\n ? originalRecord.record.components\n : mainNormalizedRecord.components,\n path: alias,\n // we might be the child of an alias\n aliasOf: originalRecord\n ? originalRecord.record\n : mainNormalizedRecord,\n // the aliases are always of the same kind as the original since they\n // are defined on the same record\n })));\n }\n }\n let matcher;\n let originalMatcher;\n for (const normalizedRecord of normalizedRecords) {\n const { path } = normalizedRecord;\n // Build up the path for nested routes if the child isn't an absolute\n // route. Only add the / delimiter if the child path isn't empty and if the\n // parent path doesn't have a trailing slash\n if (parent && path[0] !== '/') {\n const parentPath = parent.record.path;\n const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\n normalizedRecord.path =\n parent.record.path + (path && connectingSlash + path);\n }\n if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') {\n throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\n 'See more at https://router.vuejs.org/guide/migration/#Removed-star-or-catch-all-routes.');\n }\n // create the object beforehand, so it can be passed to children\n matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\n if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/')\n checkMissingParamsInAbsolutePath(matcher, parent);\n // if we are an alias we must tell the original record that we exist,\n // so we can be removed\n if (originalRecord) {\n originalRecord.alias.push(matcher);\n if ((process.env.NODE_ENV !== 'production')) {\n checkSameParams(originalRecord, matcher);\n }\n }\n else {\n // otherwise, the first record is the original and others are aliases\n originalMatcher = originalMatcher || matcher;\n if (originalMatcher !== matcher)\n originalMatcher.alias.push(matcher);\n // remove the route if named and only for the top record (avoid in nested calls)\n // this works because the original record is the first one\n if (isRootAdd && record.name && !isAliasRecord(matcher))\n removeRoute(record.name);\n }\n // Avoid adding a record that doesn't display anything. This allows passing through records without a component to\n // not be reached and pass through the catch all route\n if (isMatchable(matcher)) {\n insertMatcher(matcher);\n }\n if (mainNormalizedRecord.children) {\n const children = mainNormalizedRecord.children;\n for (let i = 0; i < children.length; i++) {\n addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\n }\n }\n // if there was no original record, then the first one was not an alias and all\n // other aliases (if any) need to reference this record when adding children\n originalRecord = originalRecord || matcher;\n // TODO: add normalized records for more flexibility\n // if (parent && isAliasRecord(originalRecord)) {\n // parent.children.push(originalRecord)\n // }\n }\n return originalMatcher\n ? () => {\n // since other matchers are aliases, they should be removed by the original matcher\n removeRoute(originalMatcher);\n }\n : noop;\n }\n function removeRoute(matcherRef) {\n if (isRouteName(matcherRef)) {\n const matcher = matcherMap.get(matcherRef);\n if (matcher) {\n matcherMap.delete(matcherRef);\n matchers.splice(matchers.indexOf(matcher), 1);\n matcher.children.forEach(removeRoute);\n matcher.alias.forEach(removeRoute);\n }\n }\n else {\n const index = matchers.indexOf(matcherRef);\n if (index > -1) {\n matchers.splice(index, 1);\n if (matcherRef.record.name)\n matcherMap.delete(matcherRef.record.name);\n matcherRef.children.forEach(removeRoute);\n matcherRef.alias.forEach(removeRoute);\n }\n }\n }\n function getRoutes() {\n return matchers;\n }\n function insertMatcher(matcher) {\n const index = findInsertionIndex(matcher, matchers);\n matchers.splice(index, 0, matcher);\n // only add the original record to the name map\n if (matcher.record.name && !isAliasRecord(matcher))\n matcherMap.set(matcher.record.name, matcher);\n }\n function resolve(location, currentLocation) {\n let matcher;\n let params = {};\n let path;\n let name;\n if ('name' in location && location.name) {\n matcher = matcherMap.get(location.name);\n if (!matcher)\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n location,\n });\n // warn if the user is passing invalid params so they can debug it better when they get removed\n if ((process.env.NODE_ENV !== 'production')) {\n const invalidParams = Object.keys(location.params || {}).filter(paramName => !matcher.keys.find(k => k.name === paramName));\n if (invalidParams.length) {\n warn(`Discarded invalid param(s) \"${invalidParams.join('\", \"')}\" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`);\n }\n }\n name = matcher.record.name;\n params = assign(\n // paramsFromLocation is a new object\n paramsFromLocation(currentLocation.params, \n // only keep params that exist in the resolved location\n // only keep optional params coming from a parent record\n matcher.keys\n .filter(k => !k.optional)\n .concat(matcher.parent ? matcher.parent.keys.filter(k => k.optional) : [])\n .map(k => k.name)), \n // discard any existing params in the current location that do not exist here\n // #1497 this ensures better active/exact matching\n location.params &&\n paramsFromLocation(location.params, matcher.keys.map(k => k.name)));\n // throws if cannot be stringified\n path = matcher.stringify(params);\n }\n else if (location.path != null) {\n // no need to resolve the path with the matcher as it was provided\n // this also allows the user to control the encoding\n path = location.path;\n if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) {\n warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`);\n }\n matcher = matchers.find(m => m.re.test(path));\n // matcher should have a value after the loop\n if (matcher) {\n // we know the matcher works because we tested the regexp\n params = matcher.parse(path);\n name = matcher.record.name;\n }\n // location is a relative path\n }\n else {\n // match by name or path of current route\n matcher = currentLocation.name\n ? matcherMap.get(currentLocation.name)\n : matchers.find(m => m.re.test(currentLocation.path));\n if (!matcher)\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n location,\n currentLocation,\n });\n name = matcher.record.name;\n // since we are navigating to the same location, we don't need to pick the\n // params like when `name` is provided\n params = assign({}, currentLocation.params, location.params);\n path = matcher.stringify(params);\n }\n const matched = [];\n let parentMatcher = matcher;\n while (parentMatcher) {\n // reversed order so parents are at the beginning\n matched.unshift(parentMatcher.record);\n parentMatcher = parentMatcher.parent;\n }\n return {\n name,\n path,\n params,\n matched,\n meta: mergeMetaFields(matched),\n };\n }\n // add initial routes\n routes.forEach(route => addRoute(route));\n function clearRoutes() {\n matchers.length = 0;\n matcherMap.clear();\n }\n return {\n addRoute,\n resolve,\n removeRoute,\n clearRoutes,\n getRoutes,\n getRecordMatcher,\n };\n}\nfunction paramsFromLocation(params, keys) {\n const newParams = {};\n for (const key of keys) {\n if (key in params)\n newParams[key] = params[key];\n }\n return newParams;\n}\n/**\n * Normalizes a RouteRecordRaw. Creates a copy\n *\n * @param record\n * @returns the normalized version\n */\nfunction normalizeRouteRecord(record) {\n const normalized = {\n path: record.path,\n redirect: record.redirect,\n name: record.name,\n meta: record.meta || {},\n aliasOf: record.aliasOf,\n beforeEnter: record.beforeEnter,\n props: normalizeRecordProps(record),\n children: record.children || [],\n instances: {},\n leaveGuards: new Set(),\n updateGuards: new Set(),\n enterCallbacks: {},\n // must be declared afterwards\n // mods: {},\n components: 'components' in record\n ? record.components || null\n : record.component && { default: record.component },\n };\n // mods contain modules and shouldn't be copied,\n // logged or anything. It's just used for internal\n // advanced use cases like data loaders\n Object.defineProperty(normalized, 'mods', {\n value: {},\n });\n return normalized;\n}\n/**\n * Normalize the optional `props` in a record to always be an object similar to\n * components. Also accept a boolean for components.\n * @param record\n */\nfunction normalizeRecordProps(record) {\n const propsObject = {};\n // props does not exist on redirect records, but we can set false directly\n const props = record.props || false;\n if ('component' in record) {\n propsObject.default = props;\n }\n else {\n // NOTE: we could also allow a function to be applied to every component.\n // Would need user feedback for use cases\n for (const name in record.components)\n propsObject[name] = typeof props === 'object' ? props[name] : props;\n }\n return propsObject;\n}\n/**\n * Checks if a record or any of its parent is an alias\n * @param record\n */\nfunction isAliasRecord(record) {\n while (record) {\n if (record.record.aliasOf)\n return true;\n record = record.parent;\n }\n return false;\n}\n/**\n * Merge meta fields of an array of records\n *\n * @param matched - array of matched records\n */\nfunction mergeMetaFields(matched) {\n return matched.reduce((meta, record) => assign(meta, record.meta), {});\n}\nfunction mergeOptions(defaults, partialOptions) {\n const options = {};\n for (const key in defaults) {\n options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\n }\n return options;\n}\nfunction isSameParam(a, b) {\n return (a.name === b.name &&\n a.optional === b.optional &&\n a.repeatable === b.repeatable);\n}\n/**\n * Check if a path and its alias have the same required params\n *\n * @param a - original record\n * @param b - alias record\n */\nfunction checkSameParams(a, b) {\n for (const key of a.keys) {\n if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n }\n for (const key of b.keys) {\n if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n }\n}\n/**\n * A route with a name and a child with an empty path without a name should warn when adding the route\n *\n * @param mainNormalizedRecord - RouteRecordNormalized\n * @param parent - RouteRecordMatcher\n */\nfunction checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) {\n if (parent &&\n parent.record.name &&\n !mainNormalizedRecord.name &&\n !mainNormalizedRecord.path) {\n warn(`The route named \"${String(parent.record.name)}\" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`);\n }\n}\nfunction checkMissingParamsInAbsolutePath(record, parent) {\n for (const key of parent.keys) {\n if (!record.keys.find(isSameParam.bind(null, key)))\n return warn(`Absolute path \"${record.record.path}\" must have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\n }\n}\n/**\n * Performs a binary search to find the correct insertion index for a new matcher.\n *\n * Matchers are primarily sorted by their score. If scores are tied then we also consider parent/child relationships,\n * with descendants coming before ancestors. If there's still a tie, new routes are inserted after existing routes.\n *\n * @param matcher - new matcher to be inserted\n * @param matchers - existing matchers\n */\nfunction findInsertionIndex(matcher, matchers) {\n // First phase: binary search based on score\n let lower = 0;\n let upper = matchers.length;\n while (lower !== upper) {\n const mid = (lower + upper) >> 1;\n const sortOrder = comparePathParserScore(matcher, matchers[mid]);\n if (sortOrder < 0) {\n upper = mid;\n }\n else {\n lower = mid + 1;\n }\n }\n // Second phase: check for an ancestor with the same score\n const insertionAncestor = getInsertionAncestor(matcher);\n if (insertionAncestor) {\n upper = matchers.lastIndexOf(insertionAncestor, upper - 1);\n if ((process.env.NODE_ENV !== 'production') && upper < 0) {\n // This should never happen\n warn(`Finding ancestor route \"${insertionAncestor.record.path}\" failed for \"${matcher.record.path}\"`);\n }\n }\n return upper;\n}\nfunction getInsertionAncestor(matcher) {\n let ancestor = matcher;\n while ((ancestor = ancestor.parent)) {\n if (isMatchable(ancestor) &&\n comparePathParserScore(matcher, ancestor) === 0) {\n return ancestor;\n }\n }\n return;\n}\n/**\n * Checks if a matcher can be reachable. This means if it's possible to reach it as a route. For example, routes without\n * a component, or name, or redirect, are just used to group other routes.\n * @param matcher\n * @param matcher.record record of the matcher\n * @returns\n */\nfunction isMatchable({ record }) {\n return !!(record.name ||\n (record.components && Object.keys(record.components).length) ||\n record.redirect);\n}\n\n/**\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\n * version with the leading `?` and without Should work as URLSearchParams\n\n * @internal\n *\n * @param search - search string to parse\n * @returns a query object\n */\nfunction parseQuery(search) {\n const query = {};\n // avoid creating an object with an empty key and empty value\n // because of split('&')\n if (search === '' || search === '?')\n return query;\n const hasLeadingIM = search[0] === '?';\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\n for (let i = 0; i < searchParams.length; ++i) {\n // pre decode the + into space\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\n // allow the = character\n const eqPos = searchParam.indexOf('=');\n const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\n const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\n if (key in query) {\n // an extra variable for ts types\n let currentValue = query[key];\n if (!isArray(currentValue)) {\n currentValue = query[key] = [currentValue];\n }\n currentValue.push(value);\n }\n else {\n query[key] = value;\n }\n }\n return query;\n}\n/**\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\n * doesn't prepend a `?`\n *\n * @internal\n *\n * @param query - query object to stringify\n * @returns string version of the query without the leading `?`\n */\nfunction stringifyQuery(query) {\n let search = '';\n for (let key in query) {\n const value = query[key];\n key = encodeQueryKey(key);\n if (value == null) {\n // only null adds the value\n if (value !== undefined) {\n search += (search.length ? '&' : '') + key;\n }\n continue;\n }\n // keep null values\n const values = isArray(value)\n ? value.map(v => v && encodeQueryValue(v))\n : [value && encodeQueryValue(value)];\n values.forEach(value => {\n // skip undefined values in arrays as if they were not present\n // smaller code than using filter\n if (value !== undefined) {\n // only append & with non-empty search\n search += (search.length ? '&' : '') + key;\n if (value != null)\n search += '=' + value;\n }\n });\n }\n return search;\n}\n/**\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\n * numbers into strings, removing keys with an undefined value and replacing\n * undefined with null in arrays\n *\n * @param query - query object to normalize\n * @returns a normalized query object\n */\nfunction normalizeQuery(query) {\n const normalizedQuery = {};\n for (const key in query) {\n const value = query[key];\n if (value !== undefined) {\n normalizedQuery[key] = isArray(value)\n ? value.map(v => (v == null ? null : '' + v))\n : value == null\n ? value\n : '' + value;\n }\n }\n return normalizedQuery;\n}\n\n/**\n * RouteRecord being rendered by the closest ancestor Router View. Used for\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\n * Location Matched\n *\n * @internal\n */\nconst matchedRouteKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : '');\n/**\n * Allows overriding the router view depth to control which component in\n * `matched` is rendered. rvd stands for Router View Depth\n *\n * @internal\n */\nconst viewDepthKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : '');\n/**\n * Allows overriding the router instance returned by `useRouter` in tests. r\n * stands for router\n *\n * @internal\n */\nconst routerKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router' : '');\n/**\n * Allows overriding the current route returned by `useRoute` in tests. rl\n * stands for route location\n *\n * @internal\n */\nconst routeLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'route location' : '');\n/**\n * Allows overriding the current route used by router-view. Internally this is\n * used when the `route` prop is passed.\n *\n * @internal\n */\nconst routerViewLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location' : '');\n\n/**\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\n */\nfunction useCallbacks() {\n let handlers = [];\n function add(handler) {\n handlers.push(handler);\n return () => {\n const i = handlers.indexOf(handler);\n if (i > -1)\n handlers.splice(i, 1);\n };\n }\n function reset() {\n handlers = [];\n }\n return {\n add,\n list: () => handlers.slice(),\n reset,\n };\n}\n\nfunction registerGuard(record, name, guard) {\n const removeFromList = () => {\n record[name].delete(guard);\n };\n onUnmounted(removeFromList);\n onDeactivated(removeFromList);\n onActivated(() => {\n record[name].add(guard);\n });\n record[name].add(guard);\n}\n/**\n * Add a navigation guard that triggers whenever the component for the current\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\n * used in any component. The guard is removed when the component is unmounted.\n *\n * @param leaveGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteLeave(leaveGuard) {\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\n return;\n }\n const activeRecord = inject(matchedRouteKey, \n // to avoid warning\n {}).value;\n if (!activeRecord) {\n (process.env.NODE_ENV !== 'production') &&\n warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside a component child of . Maybe you called it inside of App.vue?');\n return;\n }\n registerGuard(activeRecord, 'leaveGuards', leaveGuard);\n}\n/**\n * Add a navigation guard that triggers whenever the current location is about\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\n * component. The guard is removed when the component is unmounted.\n *\n * @param updateGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteUpdate(updateGuard) {\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\n return;\n }\n const activeRecord = inject(matchedRouteKey, \n // to avoid warning\n {}).value;\n if (!activeRecord) {\n (process.env.NODE_ENV !== 'production') &&\n warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside a component child of . Maybe you called it inside of App.vue?');\n return;\n }\n registerGuard(activeRecord, 'updateGuards', updateGuard);\n}\nfunction guardToPromiseFn(guard, to, from, record, name, runWithContext = fn => fn()) {\n // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\n const enterCallbackArray = record &&\n // name is defined if record is because of the function overload\n (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\n return () => new Promise((resolve, reject) => {\n const next = (valid) => {\n if (valid === false) {\n reject(createRouterError(4 /* ErrorTypes.NAVIGATION_ABORTED */, {\n from,\n to,\n }));\n }\n else if (valid instanceof Error) {\n reject(valid);\n }\n else if (isRouteLocation(valid)) {\n reject(createRouterError(2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */, {\n from: to,\n to: valid,\n }));\n }\n else {\n if (enterCallbackArray &&\n // since enterCallbackArray is truthy, both record and name also are\n record.enterCallbacks[name] === enterCallbackArray &&\n typeof valid === 'function') {\n enterCallbackArray.push(valid);\n }\n resolve();\n }\n };\n // wrapping with Promise.resolve allows it to work with both async and sync guards\n const guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next));\n let guardCall = Promise.resolve(guardReturn);\n if (guard.length < 3)\n guardCall = guardCall.then(next);\n if ((process.env.NODE_ENV !== 'production') && guard.length > 2) {\n const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\n if (typeof guardReturn === 'object' && 'then' in guardReturn) {\n guardCall = guardCall.then(resolvedValue => {\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n if (!next._called) {\n warn(message);\n return Promise.reject(new Error('Invalid navigation guard'));\n }\n return resolvedValue;\n });\n }\n else if (guardReturn !== undefined) {\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n if (!next._called) {\n warn(message);\n reject(new Error('Invalid navigation guard'));\n return;\n }\n }\n }\n guardCall.catch(err => reject(err));\n });\n}\nfunction canOnlyBeCalledOnce(next, to, from) {\n let called = 0;\n return function () {\n if (called++ === 1)\n warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\n // @ts-expect-error: we put it in the original one because it's easier to check\n next._called = true;\n if (called === 1)\n next.apply(null, arguments);\n };\n}\nfunction extractComponentsGuards(matched, guardType, to, from, runWithContext = fn => fn()) {\n const guards = [];\n for (const record of matched) {\n if ((process.env.NODE_ENV !== 'production') && !record.components && !record.children.length) {\n warn(`Record with path \"${record.path}\" is either missing a \"component(s)\"` +\n ` or \"children\" property.`);\n }\n for (const name in record.components) {\n let rawComponent = record.components[name];\n if ((process.env.NODE_ENV !== 'production')) {\n if (!rawComponent ||\n (typeof rawComponent !== 'object' &&\n typeof rawComponent !== 'function')) {\n warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\n ` a valid component. Received \"${String(rawComponent)}\".`);\n // throw to ensure we stop here but warn to ensure the message isn't\n // missed by the user\n throw new Error('Invalid route component');\n }\n else if ('then' in rawComponent) {\n // warn if user wrote import('/component.vue') instead of () =>\n // import('./component.vue')\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\n `Promise instead of a function that returns a Promise. Did you ` +\n `write \"import('./MyPage.vue')\" instead of ` +\n `\"() => import('./MyPage.vue')\" ? This will break in ` +\n `production if not fixed.`);\n const promise = rawComponent;\n rawComponent = () => promise;\n }\n else if (rawComponent.__asyncLoader &&\n // warn only once per component\n !rawComponent.__warnedDefineAsync) {\n rawComponent.__warnedDefineAsync = true;\n warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\n `using \"defineAsyncComponent()\". ` +\n `Write \"() => import('./MyPage.vue')\" instead of ` +\n `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\n }\n }\n // skip update and leave guards if the route component is not mounted\n if (guardType !== 'beforeRouteEnter' && !record.instances[name])\n continue;\n if (isRouteComponent(rawComponent)) {\n // __vccOpts is added by vue-class-component and contain the regular options\n const options = rawComponent.__vccOpts || rawComponent;\n const guard = options[guardType];\n guard &&\n guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext));\n }\n else {\n // start requesting the chunk already\n let componentPromise = rawComponent();\n if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) {\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\n componentPromise = Promise.resolve(componentPromise);\n }\n guards.push(() => componentPromise.then(resolved => {\n if (!resolved)\n throw new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`);\n const resolvedComponent = isESModule(resolved)\n ? resolved.default\n : resolved;\n // keep the resolved module for plugins like data loaders\n record.mods[name] = resolved;\n // replace the function with the resolved component\n // cannot be null or undefined because we went into the for loop\n record.components[name] = resolvedComponent;\n // __vccOpts is added by vue-class-component and contain the regular options\n const options = resolvedComponent.__vccOpts || resolvedComponent;\n const guard = options[guardType];\n return (guard &&\n guardToPromiseFn(guard, to, from, record, name, runWithContext)());\n }));\n }\n }\n }\n return guards;\n}\n/**\n * Ensures a route is loaded, so it can be passed as o prop to ``.\n *\n * @param route - resolved route to load\n */\nfunction loadRouteLocation(route) {\n return route.matched.every(record => record.redirect)\n ? Promise.reject(new Error('Cannot load a route that redirects.'))\n : Promise.all(route.matched.map(record => record.components &&\n Promise.all(Object.keys(record.components).reduce((promises, name) => {\n const rawComponent = record.components[name];\n if (typeof rawComponent === 'function' &&\n !('displayName' in rawComponent)) {\n promises.push(rawComponent().then(resolved => {\n if (!resolved)\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\". Ensure you passed a function that returns a promise.`));\n const resolvedComponent = isESModule(resolved)\n ? resolved.default\n : resolved;\n // keep the resolved module for plugins like data loaders\n record.mods[name] = resolved;\n // replace the function with the resolved component\n // cannot be null or undefined because we went into the for loop\n record.components[name] = resolvedComponent;\n return;\n }));\n }\n return promises;\n }, [])))).then(() => route);\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\n// `isExactActive` behavior should go through an RFC\n/**\n * Returns the internal behavior of a {@link RouterLink} without the rendering part.\n *\n * @param props - a `to` location and an optional `replace` flag\n */\nfunction useLink(props) {\n const router = inject(routerKey);\n const currentRoute = inject(routeLocationKey);\n let hasPrevious = false;\n let previousTo = null;\n const route = computed(() => {\n const to = unref(props.to);\n if ((process.env.NODE_ENV !== 'production') && (!hasPrevious || to !== previousTo)) {\n if (!isRouteLocation(to)) {\n if (hasPrevious) {\n warn(`Invalid value for prop \"to\" in useLink()\\n- to:`, to, `\\n- previous to:`, previousTo, `\\n- props:`, props);\n }\n else {\n warn(`Invalid value for prop \"to\" in useLink()\\n- to:`, to, `\\n- props:`, props);\n }\n }\n previousTo = to;\n hasPrevious = true;\n }\n return router.resolve(to);\n });\n const activeRecordIndex = computed(() => {\n const { matched } = route.value;\n const { length } = matched;\n const routeMatched = matched[length - 1];\n const currentMatched = currentRoute.matched;\n if (!routeMatched || !currentMatched.length)\n return -1;\n const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\n if (index > -1)\n return index;\n // possible parent record\n const parentRecordPath = getOriginalPath(matched[length - 2]);\n return (\n // we are dealing with nested routes\n length > 1 &&\n // if the parent and matched route have the same path, this link is\n // referring to the empty child. Or we currently are on a different\n // child of the same parent\n getOriginalPath(routeMatched) === parentRecordPath &&\n // avoid comparing the child with its parent\n currentMatched[currentMatched.length - 1].path !== parentRecordPath\n ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\n : index);\n });\n const isActive = computed(() => activeRecordIndex.value > -1 &&\n includesParams(currentRoute.params, route.value.params));\n const isExactActive = computed(() => activeRecordIndex.value > -1 &&\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\n isSameRouteLocationParams(currentRoute.params, route.value.params));\n function navigate(e = {}) {\n if (guardEvent(e)) {\n return router[unref(props.replace) ? 'replace' : 'push'](unref(props.to)\n // avoid uncaught errors are they are logged anyway\n ).catch(noop);\n }\n return Promise.resolve();\n }\n // devtools only\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n const instance = getCurrentInstance();\n if (instance) {\n const linkContextDevtools = {\n route: route.value,\n isActive: isActive.value,\n isExactActive: isExactActive.value,\n error: null,\n };\n // @ts-expect-error: this is internal\n instance.__vrl_devtools = instance.__vrl_devtools || [];\n // @ts-expect-error: this is internal\n instance.__vrl_devtools.push(linkContextDevtools);\n watchEffect(() => {\n linkContextDevtools.route = route.value;\n linkContextDevtools.isActive = isActive.value;\n linkContextDevtools.isExactActive = isExactActive.value;\n linkContextDevtools.error = isRouteLocation(unref(props.to))\n ? null\n : 'Invalid \"to\" value';\n }, { flush: 'post' });\n }\n }\n /**\n * NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this\n */\n return {\n route,\n href: computed(() => route.value.href),\n isActive,\n isExactActive,\n navigate,\n };\n}\nconst RouterLinkImpl = /*#__PURE__*/ defineComponent({\n name: 'RouterLink',\n compatConfig: { MODE: 3 },\n props: {\n to: {\n type: [String, Object],\n required: true,\n },\n replace: Boolean,\n activeClass: String,\n // inactiveClass: String,\n exactActiveClass: String,\n custom: Boolean,\n ariaCurrentValue: {\n type: String,\n default: 'page',\n },\n },\n useLink,\n setup(props, { slots }) {\n const link = reactive(useLink(props));\n const { options } = inject(routerKey);\n const elClass = computed(() => ({\n [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\n // [getLinkClass(\n // props.inactiveClass,\n // options.linkInactiveClass,\n // 'router-link-inactive'\n // )]: !link.isExactActive,\n [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\n }));\n return () => {\n const children = slots.default && slots.default(link);\n return props.custom\n ? children\n : h('a', {\n 'aria-current': link.isExactActive\n ? props.ariaCurrentValue\n : null,\n href: link.href,\n // this would override user added attrs but Vue will still add\n // the listener, so we end up triggering both\n onClick: link.navigate,\n class: elClass.value,\n }, children);\n };\n },\n});\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to render a link that triggers a navigation on click.\n */\nconst RouterLink = RouterLinkImpl;\nfunction guardEvent(e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n return;\n // don't redirect when preventDefault called\n if (e.defaultPrevented)\n return;\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0)\n return;\n // don't redirect if `target=\"_blank\"`\n // @ts-expect-error getAttribute does exist\n if (e.currentTarget && e.currentTarget.getAttribute) {\n // @ts-expect-error getAttribute exists\n const target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target))\n return;\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault)\n e.preventDefault();\n return true;\n}\nfunction includesParams(outer, inner) {\n for (const key in inner) {\n const innerValue = inner[key];\n const outerValue = outer[key];\n if (typeof innerValue === 'string') {\n if (innerValue !== outerValue)\n return false;\n }\n else {\n if (!isArray(outerValue) ||\n outerValue.length !== innerValue.length ||\n innerValue.some((value, i) => value !== outerValue[i]))\n return false;\n }\n }\n return true;\n}\n/**\n * Get the original path value of a record by following its aliasOf\n * @param record\n */\nfunction getOriginalPath(record) {\n return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\n}\n/**\n * Utility class to get the active class based on defaults.\n * @param propClass\n * @param globalClass\n * @param defaultClass\n */\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\n ? propClass\n : globalClass != null\n ? globalClass\n : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\n name: 'RouterView',\n // #674 we manually inherit them\n inheritAttrs: false,\n props: {\n name: {\n type: String,\n default: 'default',\n },\n route: Object,\n },\n // Better compat for @vue/compat users\n // https://github.com/vuejs/router/issues/1315\n compatConfig: { MODE: 3 },\n setup(props, { attrs, slots }) {\n (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage();\n const injectedRoute = inject(routerViewLocationKey);\n const routeToDisplay = computed(() => props.route || injectedRoute.value);\n const injectedDepth = inject(viewDepthKey, 0);\n // The depth changes based on empty components option, which allows passthrough routes e.g. routes with children\n // that are used to reuse the `path` property\n const depth = computed(() => {\n let initialDepth = unref(injectedDepth);\n const { matched } = routeToDisplay.value;\n let matchedRoute;\n while ((matchedRoute = matched[initialDepth]) &&\n !matchedRoute.components) {\n initialDepth++;\n }\n return initialDepth;\n });\n const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);\n provide(viewDepthKey, computed(() => depth.value + 1));\n provide(matchedRouteKey, matchedRouteRef);\n provide(routerViewLocationKey, routeToDisplay);\n const viewRef = ref();\n // watch at the same time the component instance, the route record we are\n // rendering, and the name\n watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\n // copy reused instances\n if (to) {\n // this will update the instance for new instances as well as reused\n // instances when navigating to a new route\n to.instances[name] = instance;\n // the component instance is reused for a different route or name, so\n // we copy any saved update or leave guards. With async setup, the\n // mounting component will mount before the matchedRoute changes,\n // making instance === oldInstance, so we check if guards have been\n // added before. This works because we remove guards when\n // unmounting/deactivating components\n if (from && from !== to && instance && instance === oldInstance) {\n if (!to.leaveGuards.size) {\n to.leaveGuards = from.leaveGuards;\n }\n if (!to.updateGuards.size) {\n to.updateGuards = from.updateGuards;\n }\n }\n }\n // trigger beforeRouteEnter next callbacks\n if (instance &&\n to &&\n // if there is no instance but to and from are the same this might be\n // the first visit\n (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\n (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\n }\n }, { flush: 'post' });\n return () => {\n const route = routeToDisplay.value;\n // we need the value at the time we render because when we unmount, we\n // navigated to a different location so the value is different\n const currentName = props.name;\n const matchedRoute = matchedRouteRef.value;\n const ViewComponent = matchedRoute && matchedRoute.components[currentName];\n if (!ViewComponent) {\n return normalizeSlot(slots.default, { Component: ViewComponent, route });\n }\n // props from route configuration\n const routePropsOption = matchedRoute.props[currentName];\n const routeProps = routePropsOption\n ? routePropsOption === true\n ? route.params\n : typeof routePropsOption === 'function'\n ? routePropsOption(route)\n : routePropsOption\n : null;\n const onVnodeUnmounted = vnode => {\n // remove the instance reference to prevent leak\n if (vnode.component.isUnmounted) {\n matchedRoute.instances[currentName] = null;\n }\n };\n const component = h(ViewComponent, assign({}, routeProps, attrs, {\n onVnodeUnmounted,\n ref: viewRef,\n }));\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n isBrowser &&\n component.ref) {\n // TODO: can display if it's an alias, its props\n const info = {\n depth: depth.value,\n name: matchedRoute.name,\n path: matchedRoute.path,\n meta: matchedRoute.meta,\n };\n const internalInstances = isArray(component.ref)\n ? component.ref.map(r => r.i)\n : [component.ref.i];\n internalInstances.forEach(instance => {\n // @ts-expect-error\n instance.__vrv_devtools = info;\n });\n }\n return (\n // pass the vnode to the slot as a prop.\n // h and both accept vnodes\n normalizeSlot(slots.default, { Component: component, route }) ||\n component);\n };\n },\n});\nfunction normalizeSlot(slot, data) {\n if (!slot)\n return null;\n const slotContent = slot(data);\n return slotContent.length === 1 ? slotContent[0] : slotContent;\n}\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to display the current route the user is at.\n */\nconst RouterView = RouterViewImpl;\n// warn against deprecated usage with & \n// due to functional component being no longer eager in Vue 3\nfunction warnDeprecatedUsage() {\n const instance = getCurrentInstance();\n const parentName = instance.parent && instance.parent.type.name;\n const parentSubTreeType = instance.parent && instance.parent.subTree && instance.parent.subTree.type;\n if (parentName &&\n (parentName === 'KeepAlive' || parentName.includes('Transition')) &&\n typeof parentSubTreeType === 'object' &&\n parentSubTreeType.name === 'RouterView') {\n const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\n warn(` can no longer be used directly inside or .\\n` +\n `Use slot props instead:\\n\\n` +\n `\\n` +\n ` <${comp}>\\n` +\n ` \\n` +\n ` \\n` +\n ``);\n }\n}\n\n/**\n * Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances).\n *\n * @param routeLocation - routeLocation to format\n * @param tooltip - optional tooltip\n * @returns a copy of the routeLocation\n */\nfunction formatRouteLocation(routeLocation, tooltip) {\n const copy = assign({}, routeLocation, {\n // remove variables that can contain vue instances\n matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\n });\n return {\n _custom: {\n type: null,\n readOnly: true,\n display: routeLocation.fullPath,\n tooltip,\n value: copy,\n },\n };\n}\nfunction formatDisplay(display) {\n return {\n _custom: {\n display,\n },\n };\n}\n// to support multiple router instances\nlet routerId = 0;\nfunction addDevtools(app, router, matcher) {\n // Take over router.beforeEach and afterEach\n // make sure we are not registering the devtool twice\n if (router.__hasDevtools)\n return;\n router.__hasDevtools = true;\n // increment to support multiple router instances\n const id = routerId++;\n setupDevtoolsPlugin({\n id: 'org.vuejs.router' + (id ? '.' + id : ''),\n label: 'Vue Router',\n packageName: 'vue-router',\n homepage: 'https://router.vuejs.org',\n logo: 'https://router.vuejs.org/logo.png',\n componentStateTypes: ['Routing'],\n app,\n }, api => {\n if (typeof api.now !== 'function') {\n console.warn('[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n }\n // display state added by the router\n api.on.inspectComponent((payload, ctx) => {\n if (payload.instanceData) {\n payload.instanceData.state.push({\n type: 'Routing',\n key: '$route',\n editable: false,\n value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\n });\n }\n });\n // mark router-link as active and display tags on router views\n api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\n if (componentInstance.__vrv_devtools) {\n const info = componentInstance.__vrv_devtools;\n node.tags.push({\n label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\n textColor: 0,\n tooltip: 'This component is rendered by <router-view>',\n backgroundColor: PINK_500,\n });\n }\n // if multiple useLink are used\n if (isArray(componentInstance.__vrl_devtools)) {\n componentInstance.__devtoolsApi = api;\n componentInstance.__vrl_devtools.forEach(devtoolsData => {\n let label = devtoolsData.route.path;\n let backgroundColor = ORANGE_400;\n let tooltip = '';\n let textColor = 0;\n if (devtoolsData.error) {\n label = devtoolsData.error;\n backgroundColor = RED_100;\n textColor = RED_700;\n }\n else if (devtoolsData.isExactActive) {\n backgroundColor = LIME_500;\n tooltip = 'This is exactly active';\n }\n else if (devtoolsData.isActive) {\n backgroundColor = BLUE_600;\n tooltip = 'This link is active';\n }\n node.tags.push({\n label,\n textColor,\n tooltip,\n backgroundColor,\n });\n });\n }\n });\n watch(router.currentRoute, () => {\n // refresh active state\n refreshRoutesView();\n api.notifyComponentUpdate();\n api.sendInspectorTree(routerInspectorId);\n api.sendInspectorState(routerInspectorId);\n });\n const navigationsLayerId = 'router:navigations:' + id;\n api.addTimelineLayer({\n id: navigationsLayerId,\n label: `Router${id ? ' ' + id : ''} Navigations`,\n color: 0x40a8c4,\n });\n // const errorsLayerId = 'router:errors'\n // api.addTimelineLayer({\n // id: errorsLayerId,\n // label: 'Router Errors',\n // color: 0xea5455,\n // })\n router.onError((error, to) => {\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n title: 'Error during Navigation',\n subtitle: to.fullPath,\n logType: 'error',\n time: api.now(),\n data: { error },\n groupId: to.meta.__navigationId,\n },\n });\n });\n // attached to `meta` and used to group events\n let navigationId = 0;\n router.beforeEach((to, from) => {\n const data = {\n guard: formatDisplay('beforeEach'),\n from: formatRouteLocation(from, 'Current Location during this navigation'),\n to: formatRouteLocation(to, 'Target location'),\n };\n // Used to group navigations together, hide from devtools\n Object.defineProperty(to.meta, '__navigationId', {\n value: navigationId++,\n });\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n time: api.now(),\n title: 'Start of navigation',\n subtitle: to.fullPath,\n data,\n groupId: to.meta.__navigationId,\n },\n });\n });\n router.afterEach((to, from, failure) => {\n const data = {\n guard: formatDisplay('afterEach'),\n };\n if (failure) {\n data.failure = {\n _custom: {\n type: Error,\n readOnly: true,\n display: failure ? failure.message : '',\n tooltip: 'Navigation Failure',\n value: failure,\n },\n };\n data.status = formatDisplay('❌');\n }\n else {\n data.status = formatDisplay('✅');\n }\n // we set here to have the right order\n data.from = formatRouteLocation(from, 'Current Location during this navigation');\n data.to = formatRouteLocation(to, 'Target location');\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n title: 'End of navigation',\n subtitle: to.fullPath,\n time: api.now(),\n data,\n logType: failure ? 'warning' : 'default',\n groupId: to.meta.__navigationId,\n },\n });\n });\n /**\n * Inspector of Existing routes\n */\n const routerInspectorId = 'router-inspector:' + id;\n api.addInspector({\n id: routerInspectorId,\n label: 'Routes' + (id ? ' ' + id : ''),\n icon: 'book',\n treeFilterPlaceholder: 'Search routes',\n });\n function refreshRoutesView() {\n // the routes view isn't active\n if (!activeRoutesPayload)\n return;\n const payload = activeRoutesPayload;\n // children routes will appear as nested\n let routes = matcher.getRoutes().filter(route => !route.parent ||\n // these routes have a parent with no component which will not appear in the view\n // therefore we still need to include them\n !route.parent.record.components);\n // reset match state to false\n routes.forEach(resetMatchStateOnRouteRecord);\n // apply a match state if there is a payload\n if (payload.filter) {\n routes = routes.filter(route => \n // save matches state based on the payload\n isRouteMatching(route, payload.filter.toLowerCase()));\n }\n // mark active routes\n routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\n payload.rootNodes = routes.map(formatRouteRecordForInspector);\n }\n let activeRoutesPayload;\n api.on.getInspectorTree(payload => {\n activeRoutesPayload = payload;\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\n refreshRoutesView();\n }\n });\n /**\n * Display information about the currently selected route record\n */\n api.on.getInspectorState(payload => {\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\n const routes = matcher.getRoutes();\n const route = routes.find(route => route.record.__vd_id === payload.nodeId);\n if (route) {\n payload.state = {\n options: formatRouteRecordMatcherForStateInspector(route),\n };\n }\n }\n });\n api.sendInspectorTree(routerInspectorId);\n api.sendInspectorState(routerInspectorId);\n });\n}\nfunction modifierForKey(key) {\n if (key.optional) {\n return key.repeatable ? '*' : '?';\n }\n else {\n return key.repeatable ? '+' : '';\n }\n}\nfunction formatRouteRecordMatcherForStateInspector(route) {\n const { record } = route;\n const fields = [\n { editable: false, key: 'path', value: record.path },\n ];\n if (record.name != null) {\n fields.push({\n editable: false,\n key: 'name',\n value: record.name,\n });\n }\n fields.push({ editable: false, key: 'regexp', value: route.re });\n if (route.keys.length) {\n fields.push({\n editable: false,\n key: 'keys',\n value: {\n _custom: {\n type: null,\n readOnly: true,\n display: route.keys\n .map(key => `${key.name}${modifierForKey(key)}`)\n .join(' '),\n tooltip: 'Param keys',\n value: route.keys,\n },\n },\n });\n }\n if (record.redirect != null) {\n fields.push({\n editable: false,\n key: 'redirect',\n value: record.redirect,\n });\n }\n if (route.alias.length) {\n fields.push({\n editable: false,\n key: 'aliases',\n value: route.alias.map(alias => alias.record.path),\n });\n }\n if (Object.keys(route.record.meta).length) {\n fields.push({\n editable: false,\n key: 'meta',\n value: route.record.meta,\n });\n }\n fields.push({\n key: 'score',\n editable: false,\n value: {\n _custom: {\n type: null,\n readOnly: true,\n display: route.score.map(score => score.join(', ')).join(' | '),\n tooltip: 'Score used to sort routes',\n value: route.score,\n },\n },\n });\n return fields;\n}\n/**\n * Extracted from tailwind palette\n */\nconst PINK_500 = 0xec4899;\nconst BLUE_600 = 0x2563eb;\nconst LIME_500 = 0x84cc16;\nconst CYAN_400 = 0x22d3ee;\nconst ORANGE_400 = 0xfb923c;\n// const GRAY_100 = 0xf4f4f5\nconst DARK = 0x666666;\nconst RED_100 = 0xfee2e2;\nconst RED_700 = 0xb91c1c;\nfunction formatRouteRecordForInspector(route) {\n const tags = [];\n const { record } = route;\n if (record.name != null) {\n tags.push({\n label: String(record.name),\n textColor: 0,\n backgroundColor: CYAN_400,\n });\n }\n if (record.aliasOf) {\n tags.push({\n label: 'alias',\n textColor: 0,\n backgroundColor: ORANGE_400,\n });\n }\n if (route.__vd_match) {\n tags.push({\n label: 'matches',\n textColor: 0,\n backgroundColor: PINK_500,\n });\n }\n if (route.__vd_exactActive) {\n tags.push({\n label: 'exact',\n textColor: 0,\n backgroundColor: LIME_500,\n });\n }\n if (route.__vd_active) {\n tags.push({\n label: 'active',\n textColor: 0,\n backgroundColor: BLUE_600,\n });\n }\n if (record.redirect) {\n tags.push({\n label: typeof record.redirect === 'string'\n ? `redirect: ${record.redirect}`\n : 'redirects',\n textColor: 0xffffff,\n backgroundColor: DARK,\n });\n }\n // add an id to be able to select it. Using the `path` is not possible because\n // empty path children would collide with their parents\n let id = record.__vd_id;\n if (id == null) {\n id = String(routeRecordId++);\n record.__vd_id = id;\n }\n return {\n id,\n label: record.path,\n tags,\n children: route.children.map(formatRouteRecordForInspector),\n };\n}\n// incremental id for route records and inspector state\nlet routeRecordId = 0;\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\nfunction markRouteRecordActive(route, currentRoute) {\n // no route will be active if matched is empty\n // reset the matching state\n const isExactActive = currentRoute.matched.length &&\n isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\n route.__vd_exactActive = route.__vd_active = isExactActive;\n if (!isExactActive) {\n route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\n }\n route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\n}\nfunction resetMatchStateOnRouteRecord(route) {\n route.__vd_match = false;\n route.children.forEach(resetMatchStateOnRouteRecord);\n}\nfunction isRouteMatching(route, filter) {\n const found = String(route.re).match(EXTRACT_REGEXP_RE);\n route.__vd_match = false;\n if (!found || found.length < 3) {\n return false;\n }\n // use a regexp without $ at the end to match nested routes better\n const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\n if (nonEndingRE.test(filter)) {\n // mark children as matches\n route.children.forEach(child => isRouteMatching(child, filter));\n // exception case: `/`\n if (route.record.path !== '/' || filter === '/') {\n route.__vd_match = route.re.test(filter);\n return true;\n }\n // hide the / route\n return false;\n }\n const path = route.record.path.toLowerCase();\n const decodedPath = decode(path);\n // also allow partial matching on the path\n if (!filter.startsWith('/') &&\n (decodedPath.includes(filter) || path.includes(filter)))\n return true;\n if (decodedPath.startsWith(filter) || path.startsWith(filter))\n return true;\n if (route.record.name && String(route.record.name).includes(filter))\n return true;\n return route.children.some(child => isRouteMatching(child, filter));\n}\nfunction omit(obj, keys) {\n const ret = {};\n for (const key in obj) {\n if (!keys.includes(key)) {\n // @ts-expect-error\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n\n/**\n * Creates a Router instance that can be used by a Vue app.\n *\n * @param options - {@link RouterOptions}\n */\nfunction createRouter(options) {\n const matcher = createRouterMatcher(options.routes, options);\n const parseQuery$1 = options.parseQuery || parseQuery;\n const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\n const routerHistory = options.history;\n if ((process.env.NODE_ENV !== 'production') && !routerHistory)\n throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\n ' https://router.vuejs.org/api/interfaces/RouterOptions.html#history');\n const beforeGuards = useCallbacks();\n const beforeResolveGuards = useCallbacks();\n const afterGuards = useCallbacks();\n const currentRoute = shallowRef(START_LOCATION_NORMALIZED);\n let pendingLocation = START_LOCATION_NORMALIZED;\n // leave the scrollRestoration if no scrollBehavior is provided\n if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\n const encodeParams = applyToParams.bind(null, encodeParam);\n const decodeParams = \n // @ts-expect-error: intentionally avoid the type check\n applyToParams.bind(null, decode);\n function addRoute(parentOrRoute, route) {\n let parent;\n let record;\n if (isRouteName(parentOrRoute)) {\n parent = matcher.getRecordMatcher(parentOrRoute);\n if ((process.env.NODE_ENV !== 'production') && !parent) {\n warn(`Parent route \"${String(parentOrRoute)}\" not found when adding child route`, route);\n }\n record = route;\n }\n else {\n record = parentOrRoute;\n }\n return matcher.addRoute(record, parent);\n }\n function removeRoute(name) {\n const recordMatcher = matcher.getRecordMatcher(name);\n if (recordMatcher) {\n matcher.removeRoute(recordMatcher);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Cannot remove non-existent route \"${String(name)}\"`);\n }\n }\n function getRoutes() {\n return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\n }\n function hasRoute(name) {\n return !!matcher.getRecordMatcher(name);\n }\n function resolve(rawLocation, currentLocation) {\n // const resolve: Router['resolve'] = (rawLocation: RouteLocationRaw, currentLocation) => {\n // const objectLocation = routerLocationAsObject(rawLocation)\n // we create a copy to modify it later\n currentLocation = assign({}, currentLocation || currentRoute.value);\n if (typeof rawLocation === 'string') {\n const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\n const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\n const href = routerHistory.createHref(locationNormalized.fullPath);\n if ((process.env.NODE_ENV !== 'production')) {\n if (href.startsWith('//'))\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n else if (!matchedRoute.matched.length) {\n warn(`No match found for location with path \"${rawLocation}\"`);\n }\n }\n // locationNormalized is always a new object\n return assign(locationNormalized, matchedRoute, {\n params: decodeParams(matchedRoute.params),\n hash: decode(locationNormalized.hash),\n redirectedFrom: undefined,\n href,\n });\n }\n if ((process.env.NODE_ENV !== 'production') && !isRouteLocation(rawLocation)) {\n warn(`router.resolve() was passed an invalid location. This will fail in production.\\n- Location:`, rawLocation);\n return resolve({});\n }\n let matcherLocation;\n // path could be relative in object as well\n if (rawLocation.path != null) {\n if ((process.env.NODE_ENV !== 'production') &&\n 'params' in rawLocation &&\n !('name' in rawLocation) &&\n // @ts-expect-error: the type is never\n Object.keys(rawLocation.params).length) {\n warn(`Path \"${rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\n }\n matcherLocation = assign({}, rawLocation, {\n path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\n });\n }\n else {\n // remove any nullish param\n const targetParams = assign({}, rawLocation.params);\n for (const key in targetParams) {\n if (targetParams[key] == null) {\n delete targetParams[key];\n }\n }\n // pass encoded values to the matcher, so it can produce encoded path and fullPath\n matcherLocation = assign({}, rawLocation, {\n params: encodeParams(targetParams),\n });\n // current location params are decoded, we need to encode them in case the\n // matcher merges the params\n currentLocation.params = encodeParams(currentLocation.params);\n }\n const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\n const hash = rawLocation.hash || '';\n if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) {\n warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\n }\n // the matcher might have merged current location params, so\n // we need to run the decoding again\n matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\n const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\n hash: encodeHash(hash),\n path: matchedRoute.path,\n }));\n const href = routerHistory.createHref(fullPath);\n if ((process.env.NODE_ENV !== 'production')) {\n if (href.startsWith('//')) {\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n }\n else if (!matchedRoute.matched.length) {\n warn(`No match found for location with path \"${rawLocation.path != null ? rawLocation.path : rawLocation}\"`);\n }\n }\n return assign({\n fullPath,\n // keep the hash encoded so fullPath is effectively path + encodedQuery +\n // hash\n hash,\n query: \n // if the user is using a custom query lib like qs, we might have\n // nested objects, so we keep the query as is, meaning it can contain\n // numbers at `$route.query`, but at the point, the user will have to\n // use their own type anyway.\n // https://github.com/vuejs/router/issues/328#issuecomment-649481567\n stringifyQuery$1 === stringifyQuery\n ? normalizeQuery(rawLocation.query)\n : (rawLocation.query || {}),\n }, matchedRoute, {\n redirectedFrom: undefined,\n href,\n });\n }\n function locationAsObject(to) {\n return typeof to === 'string'\n ? parseURL(parseQuery$1, to, currentRoute.value.path)\n : assign({}, to);\n }\n function checkCanceledNavigation(to, from) {\n if (pendingLocation !== to) {\n return createRouterError(8 /* ErrorTypes.NAVIGATION_CANCELLED */, {\n from,\n to,\n });\n }\n }\n function push(to) {\n return pushWithRedirect(to);\n }\n function replace(to) {\n return push(assign(locationAsObject(to), { replace: true }));\n }\n function handleRedirectRecord(to) {\n const lastMatched = to.matched[to.matched.length - 1];\n if (lastMatched && lastMatched.redirect) {\n const { redirect } = lastMatched;\n let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\n if (typeof newTargetLocation === 'string') {\n newTargetLocation =\n newTargetLocation.includes('?') || newTargetLocation.includes('#')\n ? (newTargetLocation = locationAsObject(newTargetLocation))\n : // force empty params\n { path: newTargetLocation };\n // @ts-expect-error: force empty params when a string is passed to let\n // the router parse them again\n newTargetLocation.params = {};\n }\n if ((process.env.NODE_ENV !== 'production') &&\n newTargetLocation.path == null &&\n !('name' in newTargetLocation)) {\n warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\n throw new Error('Invalid redirect');\n }\n return assign({\n query: to.query,\n hash: to.hash,\n // avoid transferring params if the redirect has a path\n params: newTargetLocation.path != null ? {} : to.params,\n }, newTargetLocation);\n }\n }\n function pushWithRedirect(to, redirectedFrom) {\n const targetLocation = (pendingLocation = resolve(to));\n const from = currentRoute.value;\n const data = to.state;\n const force = to.force;\n // to could be a string where `replace` is a function\n const replace = to.replace === true;\n const shouldRedirect = handleRedirectRecord(targetLocation);\n if (shouldRedirect)\n return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\n state: typeof shouldRedirect === 'object'\n ? assign({}, data, shouldRedirect.state)\n : data,\n force,\n replace,\n }), \n // keep original redirectedFrom if it exists\n redirectedFrom || targetLocation);\n // if it was a redirect we already called `pushWithRedirect` above\n const toLocation = targetLocation;\n toLocation.redirectedFrom = redirectedFrom;\n let failure;\n if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\n failure = createRouterError(16 /* ErrorTypes.NAVIGATION_DUPLICATED */, { to: toLocation, from });\n // trigger scroll to allow scrolling to the same anchor\n handleScroll(from, from, \n // this is a push, the only way for it to be triggered from a\n // history.listen is with a redirect, which makes it become a push\n true, \n // This cannot be the first navigation because the initial location\n // cannot be manually navigated to\n false);\n }\n return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\n .catch((error) => isNavigationFailure(error)\n ? // navigation redirects still mark the router as ready\n isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)\n ? error\n : markAsReady(error) // also returns the error\n : // reject any unknown error\n triggerError(error, toLocation, from))\n .then((failure) => {\n if (failure) {\n if (isNavigationFailure(failure, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n if ((process.env.NODE_ENV !== 'production') &&\n // we are redirecting to the same location we were already at\n isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\n // and we have done it a couple of times\n redirectedFrom &&\n // @ts-expect-error: added only in dev\n (redirectedFrom._count = redirectedFrom._count\n ? // @ts-expect-error\n redirectedFrom._count + 1\n : 1) > 30) {\n warn(`Detected a possibly infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow.\\n Are you always returning a new location within a navigation guard? That would lead to this error. Only return when redirecting or aborting, that should fix this. This might break in production if not fixed.`);\n return Promise.reject(new Error('Infinite redirect in navigation guard'));\n }\n return pushWithRedirect(\n // keep options\n assign({\n // preserve an existing replacement but allow the redirect to override it\n replace,\n }, locationAsObject(failure.to), {\n state: typeof failure.to === 'object'\n ? assign({}, data, failure.to.state)\n : data,\n force,\n }), \n // preserve the original redirectedFrom if any\n redirectedFrom || toLocation);\n }\n }\n else {\n // if we fail we don't finalize the navigation\n failure = finalizeNavigation(toLocation, from, true, replace, data);\n }\n triggerAfterEach(toLocation, from, failure);\n return failure;\n });\n }\n /**\n * Helper to reject and skip all navigation guards if a new navigation happened\n * @param to\n * @param from\n */\n function checkCanceledNavigationAndReject(to, from) {\n const error = checkCanceledNavigation(to, from);\n return error ? Promise.reject(error) : Promise.resolve();\n }\n function runWithContext(fn) {\n const app = installedApps.values().next().value;\n // support Vue < 3.3\n return app && typeof app.runWithContext === 'function'\n ? app.runWithContext(fn)\n : fn();\n }\n // TODO: refactor the whole before guards by internally using router.beforeEach\n function navigate(to, from) {\n let guards;\n const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\n // all components here have been resolved once because we are leaving\n guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\n // leavingRecords is already reversed\n for (const record of leavingRecords) {\n record.leaveGuards.forEach(guard => {\n guards.push(guardToPromiseFn(guard, to, from));\n });\n }\n const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeRouteLeave guards\n return (runGuardQueue(guards)\n .then(() => {\n // check global guards beforeEach\n guards = [];\n for (const guard of beforeGuards.list()) {\n guards.push(guardToPromiseFn(guard, to, from));\n }\n guards.push(canceledNavigationCheck);\n return runGuardQueue(guards);\n })\n .then(() => {\n // check in components beforeRouteUpdate\n guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\n for (const record of updatingRecords) {\n record.updateGuards.forEach(guard => {\n guards.push(guardToPromiseFn(guard, to, from));\n });\n }\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // check the route beforeEnter\n guards = [];\n for (const record of enteringRecords) {\n // do not trigger beforeEnter on reused views\n if (record.beforeEnter) {\n if (isArray(record.beforeEnter)) {\n for (const beforeEnter of record.beforeEnter)\n guards.push(guardToPromiseFn(beforeEnter, to, from));\n }\n else {\n guards.push(guardToPromiseFn(record.beforeEnter, to, from));\n }\n }\n }\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // NOTE: at this point to.matched is normalized and does not contain any () => Promise\n // clear existing enterCallbacks, these are added by extractComponentsGuards\n to.matched.forEach(record => (record.enterCallbacks = {}));\n // check in-component beforeRouteEnter\n guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from, runWithContext);\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // check global guards beforeResolve\n guards = [];\n for (const guard of beforeResolveGuards.list()) {\n guards.push(guardToPromiseFn(guard, to, from));\n }\n guards.push(canceledNavigationCheck);\n return runGuardQueue(guards);\n })\n // catch any navigation canceled\n .catch(err => isNavigationFailure(err, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)\n ? err\n : Promise.reject(err)));\n }\n function triggerAfterEach(to, from, failure) {\n // navigation is confirmed, call afterGuards\n // TODO: wrap with error handlers\n afterGuards\n .list()\n .forEach(guard => runWithContext(() => guard(to, from, failure)));\n }\n /**\n * - Cleans up any navigation guards\n * - Changes the url if necessary\n * - Calls the scrollBehavior\n */\n function finalizeNavigation(toLocation, from, isPush, replace, data) {\n // a more recent navigation took place\n const error = checkCanceledNavigation(toLocation, from);\n if (error)\n return error;\n // only consider as push if it's not the first navigation\n const isFirstNavigation = from === START_LOCATION_NORMALIZED;\n const state = !isBrowser ? {} : history.state;\n // change URL only if the user did a push/replace and if it's not the initial navigation because\n // it's just reflecting the url\n if (isPush) {\n // on the initial navigation, we want to reuse the scroll position from\n // history state if it exists\n if (replace || isFirstNavigation)\n routerHistory.replace(toLocation.fullPath, assign({\n scroll: isFirstNavigation && state && state.scroll,\n }, data));\n else\n routerHistory.push(toLocation.fullPath, data);\n }\n // accept current navigation\n currentRoute.value = toLocation;\n handleScroll(toLocation, from, isPush, isFirstNavigation);\n markAsReady();\n }\n let removeHistoryListener;\n // attach listener to history to trigger navigations\n function setupListeners() {\n // avoid setting up listeners twice due to an invalid first navigation\n if (removeHistoryListener)\n return;\n removeHistoryListener = routerHistory.listen((to, _from, info) => {\n if (!router.listening)\n return;\n // cannot be a redirect route because it was in history\n const toLocation = resolve(to);\n // due to dynamic routing, and to hash history with manual navigation\n // (manually changing the url or calling history.hash = '#/somewhere'),\n // there could be a redirect record in history\n const shouldRedirect = handleRedirectRecord(toLocation);\n if (shouldRedirect) {\n pushWithRedirect(assign(shouldRedirect, { replace: true }), toLocation).catch(noop);\n return;\n }\n pendingLocation = toLocation;\n const from = currentRoute.value;\n // TODO: should be moved to web history?\n if (isBrowser) {\n saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\n }\n navigate(toLocation, from)\n .catch((error) => {\n if (isNavigationFailure(error, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n return error;\n }\n if (isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n // Here we could call if (info.delta) routerHistory.go(-info.delta,\n // false) but this is bug prone as we have no way to wait the\n // navigation to be finished before calling pushWithRedirect. Using\n // a setTimeout of 16ms seems to work but there is no guarantee for\n // it to work on every browser. So instead we do not restore the\n // history entry and trigger a new navigation as requested by the\n // navigation guard.\n // the error is already handled by router.push we just want to avoid\n // logging the error\n pushWithRedirect(error.to, toLocation\n // avoid an uncaught rejection, let push call triggerError\n )\n .then(failure => {\n // manual change in hash history #916 ending up in the URL not\n // changing, but it was changed by the manual url change, so we\n // need to manually change it ourselves\n if (isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ |\n 16 /* ErrorTypes.NAVIGATION_DUPLICATED */) &&\n !info.delta &&\n info.type === NavigationType.pop) {\n routerHistory.go(-1, false);\n }\n })\n .catch(noop);\n // avoid the then branch\n return Promise.reject();\n }\n // do not restore history on unknown direction\n if (info.delta) {\n routerHistory.go(-info.delta, false);\n }\n // unrecognized error, transfer to the global handler\n return triggerError(error, toLocation, from);\n })\n .then((failure) => {\n failure =\n failure ||\n finalizeNavigation(\n // after navigation, all matched components are resolved\n toLocation, from, false);\n // revert the navigation\n if (failure) {\n if (info.delta &&\n // a new navigation has been triggered, so we do not want to revert, that will change the current history\n // entry while a different route is displayed\n !isNavigationFailure(failure, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n routerHistory.go(-info.delta, false);\n }\n else if (info.type === NavigationType.pop &&\n isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 16 /* ErrorTypes.NAVIGATION_DUPLICATED */)) {\n // manual change in hash history #916\n // it's like a push but lacks the information of the direction\n routerHistory.go(-1, false);\n }\n }\n triggerAfterEach(toLocation, from, failure);\n })\n // avoid warnings in the console about uncaught rejections, they are logged by triggerErrors\n .catch(noop);\n });\n }\n // Initialization and Errors\n let readyHandlers = useCallbacks();\n let errorListeners = useCallbacks();\n let ready;\n /**\n * Trigger errorListeners added via onError and throws the error as well\n *\n * @param error - error to throw\n * @param to - location we were navigating to when the error happened\n * @param from - location we were navigating from when the error happened\n * @returns the error as a rejected promise\n */\n function triggerError(error, to, from) {\n markAsReady(error);\n const list = errorListeners.list();\n if (list.length) {\n list.forEach(handler => handler(error, to, from));\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n warn('uncaught error during route navigation:');\n }\n console.error(error);\n }\n // reject the error no matter there were error listeners or not\n return Promise.reject(error);\n }\n function isReady() {\n if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\n return Promise.resolve();\n return new Promise((resolve, reject) => {\n readyHandlers.add([resolve, reject]);\n });\n }\n function markAsReady(err) {\n if (!ready) {\n // still not ready if an error happened\n ready = !err;\n setupListeners();\n readyHandlers\n .list()\n .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\n readyHandlers.reset();\n }\n return err;\n }\n // Scroll behavior\n function handleScroll(to, from, isPush, isFirstNavigation) {\n const { scrollBehavior } = options;\n if (!isBrowser || !scrollBehavior)\n return Promise.resolve();\n const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\n ((isFirstNavigation || !isPush) &&\n history.state &&\n history.state.scroll) ||\n null;\n return nextTick()\n .then(() => scrollBehavior(to, from, scrollPosition))\n .then(position => position && scrollToPosition(position))\n .catch(err => triggerError(err, to, from));\n }\n const go = (delta) => routerHistory.go(delta);\n let started;\n const installedApps = new Set();\n const router = {\n currentRoute,\n listening: true,\n addRoute,\n removeRoute,\n clearRoutes: matcher.clearRoutes,\n hasRoute,\n getRoutes,\n resolve,\n options,\n push,\n replace,\n go,\n back: () => go(-1),\n forward: () => go(1),\n beforeEach: beforeGuards.add,\n beforeResolve: beforeResolveGuards.add,\n afterEach: afterGuards.add,\n onError: errorListeners.add,\n isReady,\n install(app) {\n const router = this;\n app.component('RouterLink', RouterLink);\n app.component('RouterView', RouterView);\n app.config.globalProperties.$router = router;\n Object.defineProperty(app.config.globalProperties, '$route', {\n enumerable: true,\n get: () => unref(currentRoute),\n });\n // this initial navigation is only necessary on client, on server it doesn't\n // make sense because it will create an extra unnecessary navigation and could\n // lead to problems\n if (isBrowser &&\n // used for the initial navigation client side to avoid pushing\n // multiple times when the router is used in multiple apps\n !started &&\n currentRoute.value === START_LOCATION_NORMALIZED) {\n // see above\n started = true;\n push(routerHistory.location).catch(err => {\n if ((process.env.NODE_ENV !== 'production'))\n warn('Unexpected error when starting the router:', err);\n });\n }\n const reactiveRoute = {};\n for (const key in START_LOCATION_NORMALIZED) {\n Object.defineProperty(reactiveRoute, key, {\n get: () => currentRoute.value[key],\n enumerable: true,\n });\n }\n app.provide(routerKey, router);\n app.provide(routeLocationKey, shallowReactive(reactiveRoute));\n app.provide(routerViewLocationKey, currentRoute);\n const unmountApp = app.unmount;\n installedApps.add(app);\n app.unmount = function () {\n installedApps.delete(app);\n // the router is not attached to an app anymore\n if (installedApps.size < 1) {\n // invalidate the current navigation\n pendingLocation = START_LOCATION_NORMALIZED;\n removeHistoryListener && removeHistoryListener();\n removeHistoryListener = null;\n currentRoute.value = START_LOCATION_NORMALIZED;\n started = false;\n ready = false;\n }\n unmountApp();\n };\n // TODO: this probably needs to be updated so it can be used by vue-termui\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n addDevtools(app, router, matcher);\n }\n },\n };\n // TODO: type this as NavigationGuardReturn or similar instead of any\n function runGuardQueue(guards) {\n return guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve());\n }\n return router;\n}\nfunction extractChangingRecords(to, from) {\n const leavingRecords = [];\n const updatingRecords = [];\n const enteringRecords = [];\n const len = Math.max(from.matched.length, to.matched.length);\n for (let i = 0; i < len; i++) {\n const recordFrom = from.matched[i];\n if (recordFrom) {\n if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\n updatingRecords.push(recordFrom);\n else\n leavingRecords.push(recordFrom);\n }\n const recordTo = to.matched[i];\n if (recordTo) {\n // the type doesn't matter because we are comparing per reference\n if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\n enteringRecords.push(recordTo);\n }\n }\n }\n return [leavingRecords, updatingRecords, enteringRecords];\n}\n\n/**\n * Returns the router instance. Equivalent to using `$router` inside\n * templates.\n */\nfunction useRouter() {\n return inject(routerKey);\n}\n/**\n * Returns the current route location. Equivalent to using `$route` inside\n * templates.\n */\nfunction useRoute(_name) {\n return inject(routeLocationKey);\n}\n\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","\n\n\n","import deepEqual from \"deep-equal\";\nimport { unref } from \"vue\";\nexport class Stabilisateur {\n n;\n valeurAntérieure;\n constructor(n = 1000) {\n this.n = n;\n }\n async stabiliser(args) {\n // Arrêter tout de suite si ces valeurs ont déjà été soumises\n if (deepEqual(args, this.valeurAntérieure))\n return false;\n this.valeurAntérieure = args;\n return new Promise((résoudre) => {\n setTimeout(() => résoudre(deepEqual(args, this.valeurAntérieure)), this.n);\n });\n }\n}\nexport const débalerRéfsArgs = (args) => {\n return Object.fromEntries(Object.entries(args).map(([clef, val]) => [clef, unref(val)]));\n};\n//# sourceMappingURL=utils.js.map","import { computed, isRef, onUnmounted, ref, watchEffect, } from \"vue\";\nimport { Stabilisateur, débalerRéfsArgs } from \"./utils.js\";\nexport const suivre = (fonc, args = {}, défaut) => {\n const val = ref(défaut);\n const stab = new Stabilisateur();\n let fOublier = undefined;\n const dynamique = Object.values(args).some((x) => isRef(x));\n const définis = computed(() => {\n const argsFinaux = débalerRéfsArgs(args);\n if (Object.values(argsFinaux).every((x) => x !== undefined)) {\n return argsFinaux;\n }\n else {\n return undefined;\n }\n });\n watchEffect(async () => {\n if (fOublier) {\n fOublier(); // Très bizare... `await` ici détruit la réactivité\n fOublier = undefined;\n }\n if (définis.value) {\n // Si les intrants sont dynamiques, stabiliser suite à la première exécution\n if (dynamique && fOublier) {\n const stable = await stab.stabiliser(définis.value);\n if (!stable)\n return;\n }\n fOublier = await fonc({\n ...définis.value,\n f: (x) => (val.value = x),\n });\n }\n else {\n val.value = undefined;\n }\n });\n onUnmounted(async () => {\n if (fOublier)\n await fOublier();\n });\n return computed(() => val.value);\n};\n//# sourceMappingURL=suivi.js.map","import {computed, ref, type ComputedRef, type MaybeRef} from 'vue';\n\nimport {suivre as follow} from '@constl/vue';\nimport {onMounted} from 'vue';\nimport {useOrbiter} from '/@/plugins/orbiter/utils';\n\nexport const useUserProfilePhoto = (\n accountId?: MaybeRef,\n): ComputedRef => {\n const {orbiter} = useOrbiter();\n\n const profilePic = follow(orbiter.listenForProfilePhotoChange, {accountId});\n const defaultAvatar = ref();\n onMounted(async () => {\n const svg = await [\n import('/@/assets/undraw/undraw_pic_profile_re_7g2h.svg'),\n import('/@/assets/undraw/undraw_profile_pic_re_iwgo.svg'),\n ][Math.floor(Math.random() * 2)]; // Let's keep it fair and random :)\n defaultAvatar.value = svg.default;\n });\n\n const profilePicSrc = computed(() => {\n if (profilePic.value) {\n return URL.createObjectURL(new Blob([profilePic.value], {type: 'image'}));\n } else {\n return defaultAvatar.value;\n }\n });\n return profilePicSrc;\n};\n","\n\n","\n\n\n","\n\n\n\n\n","\n\n\n","\n\n\n","/**\n * @packageDocumentation\n *\n * A suite of util methods that provides efficient validation.\n *\n * Detection of IPFS Paths and identifiers in URLs is a two-stage process:\n *\n * 1. `pathPattern`/`pathGatewayPattern`/`subdomainGatewayPattern` regex is applied to quickly identify potential candidates\n * 2. proper CID validation is applied to remove false-positives\n *\n * @example\n *\n * ```TypeScript\n * import * as isIPFS from 'is-ipfs'\n *\n * isIPFS.multihash('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.multihash('noop') // false\n *\n * isIPFS.cid('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true (CIDv0)\n * isIPFS.cid('bafybeiasb5vpmaounyilfuxbd3lryvosl4yefqrfahsb2esg46q6tu6y5q') // true (CIDv1 in Base32)\n * isIPFS.cid('zdj7WWeQ43G6JJvLWQWZpyHuAMq6uYWRjkBXFad11vE2LHhQ7') // true (CIDv1 in Base58btc)\n * isIPFS.cid('noop') // false\n *\n * isIPFS.base32cid('bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va') // true\n * isIPFS.base32cid('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // false\n *\n * isIPFS.url('https://ipfs.io/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.url('https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR?filename=guardian.jpg') // true\n * isIPFS.url('https://ipfs.io/ipns/github.com') // true\n * isIPFS.url('https://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.ipfs.dweb.link') // true\n * isIPFS.url('http://en.wikipedia-on-ipfs.org.ipfs.localhost:8080') // true\n * isIPFS.url('https://github.com/ipfs/js-ipfs/blob/master/README.md') // false\n * isIPFS.url('https://google.com') // false\n *\n * isIPFS.path('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.path('/ipfs/QmbcBPAwCDxRMB1Qe7CRQmxdrTSkxKwM9y6rZw2FjGtbsb/?weird-filename=test.jpg') // true\n * isIPFS.path('/ipns/github.com') // true\n * isIPFS.path('/ipfs/js-ipfs/blob/master/README.md') // false\n *\n * isIPFS.urlOrPath('https://ipfs.io/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.urlOrPath('https://ipfs.io/ipns/github.com') // true\n * isIPFS.urlOrPath('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.urlOrPath('/ipns/github.com') // true\n * isIPFS.urlOrPath('https://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.ipfs.dweb.link') // true\n * isIPFS.urlOrPath('https://google.com') // false\n *\n * isIPFS.ipfsUrl('https://ipfs.io/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.ipfsUrl('https://ipfs.io/ipfs/invalid-hash') // false\n *\n * isIPFS.ipnsUrl('https://ipfs.io/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // false\n * isIPFS.ipnsUrl('https://ipfs.io/ipns/github.com') // true\n *\n * isIPFS.ipfsPath('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.ipfsPath('/ipfs/invalid-hash') // false\n *\n * isIPFS.ipnsPath('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // false\n * isIPFS.ipnsPath('/ipns/github.com') // true\n *\n * isIPFS.cidPath('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o/path/to/file') // true\n * isIPFS.cidPath('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o/') // true\n * isIPFS.cidPath('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // false\n * isIPFS.cidPath('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // false\n * isIPFS.cidPath('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o/file') // false\n *\n * isIPFS.subdomain('http://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.ipfs.dweb.link') // true\n * isIPFS.subdomain('http://bafybeiabc2xofh6tdi6vutusorpumwcikw3hf3st4ecjugo6j52f6xwc6q.ipns.dweb.link') // true\n * isIPFS.subdomain('http://www.bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.ipfs.dweb.link') // false\n * isIPFS.subdomain('http://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.dweb.link') // false\n *\n * isIPFS.ipfsSubdomain('http://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.ipfs.dweb.link') // true\n * isIPFS.ipfsSubdomain('http://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.dweb.link') // false\n *\n * isIPFS.ipnsSubdomain('http://bafybeiabc2xofh6tdi6vutusorpumwcikw3hf3st4ecjugo6j52f6xwc6q.ipns.dweb.link') // true\n * isIPFS.ipnsSubdomain('http://bafybeiabc2xofh6tdi6vutusorpumwcikw3hf3st4ecjugo6j52f6xwc6q.dweb.link') // false\n * isIPFS.ipnsSubdomain('http://QmcNioXSC1bfJj1dcFErhUfyjFzoX2HodkRccsFFVJJvg8.ipns.dweb.link') // false\n * isIPFS.ipnsSubdomain('http://en.wikipedia-on-ipfs.org.ipns.localhost:8080') // true (assuming DNSLink)\n * isIPFS.ipnsSubdomain('http://en-wikipedia--on--ipfs-org.ipns.localhost:8080') // true (assuming inlined DNSLink)\n * isIPFS.ipnsSubdomain('http://hostname-without-tld-.ipns.dweb.link') // false (not a CID, invalid DNS label)\n *\n * isIPFS.multiaddr('/ip4/127.0.0.1/udp/1234') // true\n * isIPFS.multiaddr('/ip4/127.0.0.1/udp/1234/http') // true\n * isIPFS.multiaddr('/ip6/::1/udp/1234') // true\n * isIPFS.multiaddr('ip6/::1/udp/1234') // false\n * isIPFS.multiaddr('/yoloinvalid/::1/udp/1234') // false\n *\n * isIPFS.peerMultiaddr('/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4') // true\n * isIPFS.peerMultiaddr('/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4') // true (legacy notation)\n * isIPFS.peerMultiaddr('/ip4/127.0.0.1/tcp/1234/ws/p2p/QmUjNmr8TgJCn1Ao7DvMy4cjoZU15b9bwSCBLE3vwXiwgj') // true\n * isIPFS.peerMultiaddr('/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4/p2p-circuit/p2p/QmUjNmr8TgJCn1Ao7DvMy4cjoZU15b9bwSCBLE3vwXiwgj') // true\n * isIPFS.peerMultiaddr('/dnsaddr/bootstrap.libp2p.io') // false (key missing, needs additional DNS lookup to tell if this is valid)\n * isIPFS.peerMultiaddr('/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN') // true (key present, ip and port can be resolved later)\n * isIPFS.peerMultiaddr('/ip4/127.0.0.1/udp/1234') // false (key missing)\n * ```\n */\nimport * as mafmt from '@multiformats/mafmt';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { URL } from 'iso-url';\nimport { base32 } from 'multiformats/bases/base32';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { CID } from 'multiformats/cid';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nexport const pathGatewayPattern = /^https?:\\/\\/[^/]+\\/(ip[fn]s)\\/([^/?#]+)/;\nexport const pathPattern = /^\\/(ip[fn]s)\\/([^/?#]+)/;\nconst defaultProtocolMatch = 1;\nconst defaultHashMath = 2;\n// CID, libp2p-key or DNSLink\nexport const subdomainGatewayPattern = /^https?:\\/\\/([^/]+)\\.(ip[fn]s)\\.[^/?]+/;\nconst subdomainIdMatch = 1;\nconst subdomainProtocolMatch = 2;\n// Fully qualified domain name (FQDN) that has an explicit .tld suffix\nconst fqdnWithTld = /^(([a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9])\\.)+([a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9])$/;\nfunction isMultihash(hash) {\n const formatted = convertToString(hash);\n if (formatted === false) {\n return false;\n }\n try {\n Digest.decode(base58btc.decode(`z${formatted}`));\n }\n catch {\n return false;\n }\n return true;\n}\nfunction isMultiaddr(input) {\n try {\n return Boolean(multiaddr(input));\n }\n catch {\n return false;\n }\n}\nfunction isBase32EncodedMultibase(hash) {\n try {\n let cid;\n if (isString(hash)) {\n cid = CID.parse(hash);\n }\n else {\n cid = CID.asCID(hash);\n }\n if (cid == null) {\n return false;\n }\n base32.decode(cid.toString());\n }\n catch {\n return false;\n }\n return true;\n}\nfunction isCID(hash) {\n try {\n if (isString(hash)) {\n return Boolean(CID.parse(hash));\n }\n if (hash instanceof Uint8Array) {\n return Boolean(CID.decode(hash));\n }\n return Boolean(CID.asCID(hash)); // eslint-disable-line no-new\n }\n catch {\n return false;\n }\n}\n/**\n * @param {string | Uint8Array | Multiaddr} input\n */\nfunction isPeerMultiaddr(input) {\n return isMultiaddr(input) && mafmt.P2P.matches(input);\n}\n/**\n * @param {string | Uint8Array} input\n * @param {RegExp | string} pattern\n * @param {number} [protocolMatch=1]\n * @param {number} [hashMatch=2]\n */\nfunction isIpfs(input, pattern, protocolMatch = defaultProtocolMatch, hashMatch = defaultHashMath) {\n const formatted = convertToString(input);\n if (formatted === false) {\n return false;\n }\n const match = formatted.match(pattern);\n if (match == null) {\n return false;\n }\n if (match[protocolMatch] !== 'ipfs') {\n return false;\n }\n let hash = match[hashMatch];\n if (hash != null && pattern === subdomainGatewayPattern) {\n // when doing checks for subdomain context\n // ensure hash is case-insensitive\n // (browsers force-lowercase authority component anyway)\n hash = hash.toLowerCase();\n }\n return isCID(hash);\n}\n/**\n *\n * @param {string | Uint8Array} input\n * @param {string | RegExp} pattern\n * @param {number} [protocolMatch=1]\n * @param {number} [hashMatch=1]\n */\nfunction isIpns(input, pattern, protocolMatch = defaultProtocolMatch, hashMatch = defaultHashMath) {\n const formatted = convertToString(input);\n if (formatted === false) {\n return false;\n }\n const match = formatted.match(pattern);\n if (match == null) {\n return false;\n }\n if (match[protocolMatch] !== 'ipns') {\n return false;\n }\n let ipnsId = match[hashMatch];\n if (ipnsId != null && pattern === subdomainGatewayPattern) {\n // when doing checks for subdomain context\n // ensure ipnsId is case-insensitive\n // (browsers force-lowercase authority compotent anyway)\n ipnsId = ipnsId.toLowerCase();\n // Check if it is cidv1\n if (isCID(ipnsId))\n return true;\n // Check if it looks like FQDN\n try {\n if (!ipnsId.includes('.') && ipnsId.includes('-')) {\n // name without tld, assuming its inlined into a single DNS label\n // (https://github.com/ipfs/in-web-browsers/issues/169)\n // en-wikipedia--on--ipfs-org → en.wikipedia-on-ipfs.org\n ipnsId = ipnsId.replace(/--/g, '@').replace(/-/g, '.').replace(/@/g, '-');\n }\n // URL implementation in web browsers forces lowercase of the hostname\n const { hostname } = new URL(`http://${ipnsId}`); // eslint-disable-line no-new\n // Check if potential FQDN has an explicit TLD\n return fqdnWithTld.test(hostname);\n }\n catch (e) {\n return false;\n }\n }\n return true;\n}\n/**\n * @param {any} input\n */\nfunction isString(input) {\n return typeof input === 'string';\n}\n/**\n * @param {Uint8Array | string} input\n */\nfunction convertToString(input) {\n if (input instanceof Uint8Array) {\n return uint8ArrayToString(input, 'base58btc');\n }\n if (isString(input)) {\n return input;\n }\n return false;\n}\n/**\n * Returns `true` if the provided `url` string includes a valid IPFS subdomain\n * (case-insensitive CIDv1) or `false` otherwise.\n */\nexport const ipfsSubdomain = (url) => isIpfs(url, subdomainGatewayPattern, subdomainProtocolMatch, subdomainIdMatch);\n/**\n * Returns `true` if the provided `url` string looks like a valid IPNS subdomain\n * (CIDv1 with `libp2p-key` multicodec or something that looks like a FQDN, for\n * example `en.wikipedia-on-ipfs.org.ipns.localhost:8080`) or `false` otherwise.\n *\n * **Note:** `ipnsSubdomain` method works in offline mode: it does not perform\n * actual IPNS record lookup over DHT or other content routing method. It may\n * return false-positives:\n *\n * - To ensure IPNS record exists, make a call to `/api/v0/name/resolve?arg=`\n * - To ensure DNSLink exists, make a call to `/api/v0/dns?arg=`\n */\nexport const ipnsSubdomain = (url) => isIpns(url, subdomainGatewayPattern, subdomainProtocolMatch, subdomainIdMatch);\n/**\n * Returns `true` if the provided `url` string includes a valid IPFS, looks like\n * an IPNS/DNSLink subdomain or `false` otherwise.\n */\nexport const subdomain = (url) => ipfsSubdomain(url) || ipnsSubdomain(url);\n/**\n * Returns `true` if the provided string is a valid IPFS url or `false`\n * otherwise.\n */\nexport const ipfsUrl = (url) => isIpfs(url, pathGatewayPattern) || ipfsSubdomain(url);\n/**\n * Returns `true` if the provided string is a valid IPNS url or `false`\n * otherwise.\n */\nexport const ipnsUrl = (url) => isIpns(url, pathGatewayPattern) || ipnsSubdomain(url);\n/**\n * Returns `true` if the provided string is a valid IPFS or IPNS url or `false`\n * otherwise.\n */\nexport const url = (url) => ipfsUrl(url) || ipnsUrl(url) || subdomain(url);\nexport const path = (path) => isIpfs(path, pathPattern) || isIpns(path, pathPattern);\n/**\n * Returns `true` if the provided string or `Uint8Array` is a valid `multihash`\n * or `false` otherwise.\n */\nexport { isMultihash as multihash };\n/**\n * Returns `true` if the provided `string`, [`Multiaddr`](https://github.com/multiformats/js-multiaddr)\n * or `Uint8Array` represents a valid multiaddr or `false` otherwise.\n */\nexport { isMultiaddr as multiaddr };\n/**\n * Returns `true` if the provided `string`, [`Multiaddr`](https://github.com/multiformats/js-multiaddr)\n * or `Uint8Array` represents a valid libp2p peer multiaddr (matching [`P2P`\n * format from `mafmt`](https://github.com/multiformats/js-mafmt#api)) or\n * `false` otherwise.\n */\nexport { isPeerMultiaddr as peerMultiaddr };\n/**\n * Returns `true` if the provided string, `Uint8Array` or [`CID`](https://github.com/multiformats/js-multiformats/#readme)\n * object represents a valid [CID](https://docs.ipfs.io/guides/concepts/cid/) or\n * `false` otherwise.\n */\nexport { isCID as cid };\n/**\n * Returns `true` if the provided string is a valid `CID` in Base32 encoding or\n * `false` otherwise.\n */\nexport const base32cid = (cid) => (isCID(cid) && isBase32EncodedMultibase(cid));\n/**\n * Returns `true` if the provided string is a valid IPFS or IPNS path or `false`\n * otherwise.\n */\nexport const ipfsPath = (path) => isIpfs(path, pathPattern);\n/**\n * Returns `true` if the provided string is a valid IPNS path or `false`\n * otherwise.\n */\nexport const ipnsPath = (path) => isIpns(path, pathPattern);\n/**\n * Returns `true` if the provided string is a valid IPFS or IPNS url or path or\n * `false` otherwise.\n */\nexport const urlOrPath = (x) => url(x) || path(x);\n/**\n * Returns `true` if the provided string is a valid \"CID path\" (IPFS path\n * without `/ipfs/` prefix) or `false` otherwise.\n */\nexport const cidPath = (path) => isString(path) && !isCID(path) && isIpfs(`/ipfs/${path}`, pathPattern);\n//# sourceMappingURL=index.js.map","\n\n\n","\n\n\n","\n\n\n\n","import {createRouter, createWebHashHistory, type RouteRecordRaw} from 'vue-router';\n\nimport AboutPage from '/@/views/aboutPage.vue';\nimport AccountPage from '/@/views/accountPage.vue';\nimport BuildingPage from '/@/views/buildingPage.vue';\nimport HomePage from '/@/views/homePage.vue';\nimport InitPage from '/@/views/initPage.vue';\nimport UploadPage from '/@/views/uploadPage.vue';\nimport ReleasePage from '/@/views/releasePage.vue';\n\nconst routes: Array = [\n {\n path: '/',\n component: HomePage,\n },\n {\n path: '/account',\n name: 'Account',\n component: AccountPage,\n },\n {\n path: '/upload',\n name: 'Upload',\n component: UploadPage,\n },\n {\n path: '/init',\n name: 'Create Website',\n component: InitPage,\n },\n {\n path: '/admin',\n name: 'Admin Website',\n component: BuildingPage,\n },\n {\n path: '/music',\n component: BuildingPage,\n },\n {\n path: '/movies',\n component: BuildingPage,\n },\n {\n path: '/tv-shows',\n component: BuildingPage,\n },\n {\n path: '/about',\n component: AboutPage,\n },\n {\n path: '/release/:category/:contentCID',\n name: 'Release',\n component: ReleasePage,\n props: true,\n },\n];\n\nconst routeur = createRouter({\n history: createWebHashHistory(),\n routes,\n});\n\nexport default routeur;\n","import {createApp} from 'vue';\nimport App from './App.vue';\nimport {inscrireExtentions} from './plugins/inscription/browser.js';\nimport routeur from './plugins/router';\n\nconst app = createApp(App);\n\ninscrireExtentions(app);\napp.use(routeur);\n\napp.mount('#app');\n"],"file":"index-CQYrZ5gL.js"} \ No newline at end of file +{"version":3,"mappings":"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ACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,gEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,CACF,CACF,EACD,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,iEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,kEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,iEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,EACD,CACE,mEACA,kEACD,CACF,CACF,0HCxwBH,IAAIC,EAASpxG,EAET+nD,EAAOnK,cACPspD,EAAQ/mD,eACRuuC,EAAQv5B,iBAERg6B,EAAST,EAAM,OAEnB,SAAS2iB,EAAYh8F,EAAS,CACxBA,EAAQ,OAAS,QACnB,KAAK,MAAQ,IAAI6xF,EAAM,MAAM7xF,CAAO,EAC7BA,EAAQ,OAAS,UACxB,KAAK,MAAQ,IAAI6xF,EAAM,QAAQ7xF,CAAO,EAEtC,KAAK,MAAQ,IAAI6xF,EAAM,KAAK7xF,CAAO,EACrC,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,KAAOA,EAAQ,KAEpB85E,EAAO,KAAK,EAAE,SAAU,EAAE,eAAe,EACzCA,EAAO,KAAK,EAAE,IAAI,KAAK,CAAC,EAAE,aAAc,yBAAyB,CAClE,CACDiiB,EAAO,YAAcC,EAErB,SAASC,EAAY5zG,EAAM2X,EAAS,CAClC,OAAO,eAAe+7F,EAAQ1zG,EAAM,CAClC,aAAc,GACd,WAAY,GACZ,IAAK,UAAW,CACd,IAAIwpG,EAAQ,IAAImK,EAAYh8F,CAAO,EACnC,cAAO,eAAe+7F,EAAQ1zG,EAAM,CAClC,aAAc,GACd,WAAY,GACZ,MAAOwpG,CACf,CAAO,EACMA,CACR,CACL,CAAG,CACF,CAEDoK,EAAY,OAAQ,CAClB,KAAM,QACN,MAAO,OACP,EAAG,wDACH,EAAG,wDACH,EAAG,wDACH,EAAG,wDACH,KAAMvpD,EAAK,OACX,KAAM,GACN,EAAG,CACD,wDACA,uDACD,CACH,CAAC,EAEDupD,EAAY,OAAQ,CAClB,KAAM,QACN,MAAO,OACP,EAAG,iEACH,EAAG,iEACH,EAAG,iEACH,EAAG,iEACH,KAAMvpD,EAAK,OACX,KAAM,GACN,EAAG,CACD,iEACA,gEACD,CACH,CAAC,EAEDupD,EAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,0EACH,EAAG,0EACH,EAAG,0EACH,EAAG,0EACH,KAAMvpD,EAAK,OACX,KAAM,GACN,EAAG,CACD,0EACA,yEACD,CACH,CAAC,EAEDupD,EAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,8GAEH,EAAG,8GAEH,EAAG,8GAEH,EAAG,8GAEH,KAAMvpD,EAAK,OACX,KAAM,GACN,EAAG,CACD,8GAEA,6GAED,CACH,CAAC,EAEDupD,EAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,2JAGH,EAAG,2JAGH,EAAG,2JAGH,EAAG,2JAGH,KAAMvpD,EAAK,OACX,KAAM,GACN,EAAG,CACD,2JAGA,0JAGD,CACH,CAAC,EAEDupD,EAAY,aAAc,CACxB,KAAM,OACN,MAAO,SACP,EAAG,sEACH,EAAG,QACH,EAAG,IACH,EAAG,sEACH,KAAMvpD,EAAK,OACX,KAAM,GACN,EAAG,CACD,GACD,CACH,CAAC,EAEDupD,EAAY,UAAW,CACrB,KAAM,UACN,MAAO,SACP,EAAG,sEACH,EAAG,KACH,EAAG,IAEH,EAAG,sEACH,EAAG,sEACH,KAAMvpD,EAAK,OACX,KAAM,GACN,EAAG,CACD,mEAGA,kEACD,CACH,CAAC,EAED,IAAIqhD,EACJ,GAAI,CACFA,EAAM3zC,iBAAA,CACP,MAAW,CACV2zC,EAAM,MACP,CAEDkI,EAAY,YAAa,CACvB,KAAM,QACN,MAAO,OACP,EAAG,0EACH,EAAG,IACH,EAAG,IACH,EAAG,0EACH,EAAG,IACH,KAAMvpD,EAAK,OAGX,KAAM,mEACN,OAAQ,mEACR,MAAO,CACL,CACE,EAAG,mCACH,EAAG,mCACJ,EACD,CACE,EAAG,oCACH,EAAG,kCACJ,CACF,EAED,KAAM,GACN,EAAG,CACD,mEACA,mEACAqhD,CACD,CACH,CAAC,4IC3MD,IAAIrhD,EAAOnK,cACP8wC,EAAQvuC,iBACRgvC,EAASh6B,4BAEb,SAASo8C,EAASl8F,EAAS,CACzB,GAAI,EAAE,gBAAgBk8F,GACpB,OAAO,IAAIA,EAASl8F,CAAO,EAC7B,KAAK,KAAOA,EAAQ,KACpB,KAAK,WAAa,CAAC,CAACA,EAAQ,WAE5B,KAAK,OAAS,KAAK,KAAK,QACxB,KAAK,WAAaA,EAAQ,YAAc,KAAK,KAAK,aAElD,KAAK,QAAU,KACf,KAAK,eAAiB,KACtB,KAAK,EAAI,KACT,KAAK,EAAI,KAET,IAAIm8F,EAAU9iB,EAAM,QAAQr5E,EAAQ,QAASA,EAAQ,YAAc,KAAK,EACpEo8F,EAAQ/iB,EAAM,QAAQr5E,EAAQ,MAAOA,EAAQ,UAAY,KAAK,EAC9Dq8F,EAAOhjB,EAAM,QAAQr5E,EAAQ,KAAMA,EAAQ,SAAW,KAAK,EAC/D85E,EAAOqiB,EAAQ,QAAW,KAAK,WAAa,EACrC,mCAAqC,KAAK,WAAa,OAAO,EACrE,KAAK,MAAMA,EAASC,EAAOC,CAAI,CAChC,CACa,gBAAGH,EAEjBA,EAAS,UAAU,MAAQ,SAAcC,EAASC,EAAOC,EAAM,CAC7D,IAAIC,EAAOH,EAAQ,OAAOC,CAAK,EAAE,OAAOC,CAAI,EAE5C,KAAK,EAAI,IAAI,MAAM,KAAK,OAAS,CAAC,EAClC,KAAK,EAAI,IAAI,MAAM,KAAK,OAAS,CAAC,EAClC,QAASn0G,EAAI,EAAGA,EAAI,KAAK,EAAE,OAAQA,IACjC,KAAK,EAAEA,CAAC,EAAI,EACZ,KAAK,EAAEA,CAAC,EAAI,EAGd,KAAK,QAAQo0G,CAAI,EACjB,KAAK,QAAU,EACf,KAAK,eAAiB,eACxB,EAEAJ,EAAS,UAAU,MAAQ,UAAgB,CACzC,OAAO,IAAIxpD,EAAK,KAAK,KAAK,KAAM,KAAK,CAAC,CACxC,EAEAwpD,EAAS,UAAU,QAAU,SAAgBI,EAAM,CACjD,IAAIC,EAAO,KAAK,MAAO,EACP,OAAO,KAAK,CAAC,EACb,OAAO,CAAE,CAAI,CAAE,EAC3BD,IACFC,EAAOA,EAAK,OAAOD,CAAI,GACzB,KAAK,EAAIC,EAAK,SACd,KAAK,EAAI,KAAK,MAAO,EAAC,OAAO,KAAK,CAAC,EAAE,SAChCD,IAGL,KAAK,EAAI,KAAK,MAAO,EACP,OAAO,KAAK,CAAC,EACb,OAAO,CAAE,EAAM,EACf,OAAOA,CAAI,EACX,SACd,KAAK,EAAI,KAAK,MAAO,EAAC,OAAO,KAAK,CAAC,EAAE,SACvC,EAEAJ,EAAS,UAAU,OAAS,SAAgBC,EAASK,EAAYjjG,EAAKkjG,EAAQ,CAExE,OAAOD,GAAe,WACxBC,EAASljG,EACTA,EAAMijG,EACNA,EAAa,MAGfL,EAAU9iB,EAAM,QAAQ8iB,EAASK,CAAU,EAC3CjjG,EAAM8/E,EAAM,QAAQ9/E,EAAKkjG,CAAM,EAE/B3iB,EAAOqiB,EAAQ,QAAW,KAAK,WAAa,EACrC,mCAAqC,KAAK,WAAa,OAAO,EAErE,KAAK,QAAQA,EAAQ,OAAO5iG,GAAO,CAAE,EAAC,EACtC,KAAK,QAAU,CACjB,EAEA2iG,EAAS,UAAU,SAAW,SAAkBl0G,EAAK0gF,EAAKnvE,EAAKkjG,EAAQ,CACrE,GAAI,KAAK,QAAU,KAAK,eACtB,MAAM,IAAI,MAAM,oBAAoB,EAGlC,OAAO/zB,GAAQ,WACjB+zB,EAASljG,EACTA,EAAMmvE,EACNA,EAAM,MAIJnvE,IACFA,EAAM8/E,EAAM,QAAQ9/E,EAAKkjG,GAAU,KAAK,EACxC,KAAK,QAAQljG,CAAG,GAIlB,QADIu1D,EAAO,GACJA,EAAK,OAAS9mE,GACnB,KAAK,EAAI,KAAK,MAAO,EAAC,OAAO,KAAK,CAAC,EAAE,SACrC8mE,EAAOA,EAAK,OAAO,KAAK,CAAC,EAG3B,IAAI9+D,EAAM8+D,EAAK,MAAM,EAAG9mE,CAAG,EAC3B,YAAK,QAAQuR,CAAG,EAChB,KAAK,UACE8/E,EAAM,OAAOrpF,EAAK04E,CAAG,mHC7G9B,IAAIsY,EAAKz4C,cACL8wC,EAAQvuC,iBACRgvC,EAAST,EAAM,OAEnB,SAASqjB,EAAQC,EAAI38F,EAAS,CAC5B,KAAK,GAAK28F,EACV,KAAK,KAAO,KACZ,KAAK,IAAM,KAGP38F,EAAQ,MACV,KAAK,eAAeA,EAAQ,KAAMA,EAAQ,OAAO,EAC/CA,EAAQ,KACV,KAAK,cAAcA,EAAQ,IAAKA,EAAQ,MAAM,CACjD,CACarL,aAAG+nG,EAEjBA,EAAQ,WAAa,SAAoBC,EAAIxP,EAAKzkB,EAAK,CACrD,OAAIykB,aAAeuP,EACVvP,EAEF,IAAIuP,EAAQC,EAAI,CACrB,IAAKxP,EACL,OAAQzkB,CACZ,CAAG,CACH,EAEAg0B,EAAQ,YAAc,SAAqBC,EAAItP,EAAM3kB,EAAK,CACxD,OAAI2kB,aAAgBqP,EACXrP,EAEF,IAAIqP,EAAQC,EAAI,CACrB,KAAMtP,EACN,QAAS3kB,CACb,CAAG,CACH,EAEAg0B,EAAQ,UAAU,SAAW,UAAoB,CAC/C,IAAIvP,EAAM,KAAK,YAEf,OAAIA,EAAI,WAAY,EACX,CAAE,OAAQ,GAAO,OAAQ,oBAAoB,EACjDA,EAAI,SAAU,EAEdA,EAAI,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,WAAY,EAGnC,CAAE,OAAQ,GAAM,OAAQ,IAAI,EAF1B,CAAE,OAAQ,GAAO,OAAQ,qBAAqB,EAF9C,CAAE,OAAQ,GAAO,OAAQ,2BAA2B,CAK/D,EAEAuP,EAAQ,UAAU,UAAY,SAAmB5K,EAASppB,EAAK,CAU7D,OARI,OAAOopB,GAAY,WACrBppB,EAAMopB,EACNA,EAAU,MAGP,KAAK,MACR,KAAK,IAAM,KAAK,GAAG,EAAE,IAAI,KAAK,IAAI,GAE/BppB,EAGE,KAAK,IAAI,OAAOA,EAAKopB,CAAO,EAF1B,KAAK,GAGhB,EAEA4K,EAAQ,UAAU,WAAa,SAAoBh0B,EAAK,CACtD,OAAIA,IAAQ,MACH,KAAK,KAAK,SAAS,GAAI,CAAC,EAExB,KAAK,IAChB,EAEAg0B,EAAQ,UAAU,eAAiB,SAAwB/nG,EAAK+zE,EAAK,CACnE,KAAK,KAAO,IAAIsY,EAAGrsF,EAAK+zE,GAAO,EAAE,EAIjC,KAAK,KAAO,KAAK,KAAK,KAAK,KAAK,GAAG,MAAM,CAAC,CAC5C,EAEAg0B,EAAQ,UAAU,cAAgB,SAAuB/nG,EAAK+zE,EAAK,CACjE,GAAI/zE,EAAI,GAAKA,EAAI,EAAG,CAId,KAAK,GAAG,MAAM,OAAS,OACzBmlF,EAAOnlF,EAAI,EAAG,mBAAmB,GACxB,KAAK,GAAG,MAAM,OAAS,SACvB,KAAK,GAAG,MAAM,OAAS,YAChCmlF,EAAOnlF,EAAI,GAAKA,EAAI,EAAG,8BAA8B,EAEvD,KAAK,IAAM,KAAK,GAAG,MAAM,MAAMA,EAAI,EAAGA,EAAI,CAAC,EAC3C,MACD,CACD,KAAK,IAAM,KAAK,GAAG,MAAM,YAAYA,EAAK+zE,CAAG,CAC/C,EAGAg0B,EAAQ,UAAU,OAAS,SAAgBvP,EAAK,CAC9C,OAAIA,EAAI,YACNrT,EAAOqT,EAAI,SAAU,EAAE,4BAA4B,EAE9CA,EAAI,IAAI,KAAK,IAAI,EAAE,KAAI,CAChC,EAGAuP,EAAQ,UAAU,KAAO,SAAc3pG,EAAK21E,EAAK1oE,EAAS,CACxD,OAAO,KAAK,GAAG,KAAKjN,EAAK,KAAM21E,EAAK1oE,CAAO,CAC7C,EAEA08F,EAAQ,UAAU,OAAS,SAAgB3pG,EAAK+nD,EAAW,CACzD,OAAO,KAAK,GAAG,OAAO/nD,EAAK+nD,EAAW,IAAI,CAC5C,EAEA4hD,EAAQ,UAAU,QAAU,UAAmB,CAC7C,MAAO,eAAiB,KAAK,MAAQ,KAAK,KAAK,SAAS,GAAI,CAAC,GACtD,UAAY,KAAK,KAAO,KAAK,IAAI,QAAO,GAAM,uJCrHvD,IAAI1b,EAAKz4C,cAEL8wC,EAAQvuC,iBACRgvC,EAAST,EAAM,OAEnB,SAASujB,EAAU58F,EAAS0oE,EAAK,CAC/B,GAAI1oE,aAAmB48F,EACrB,OAAO58F,EAEL,KAAK,WAAWA,EAAS0oE,CAAG,IAGhCoR,EAAO95E,EAAQ,GAAKA,EAAQ,EAAG,0BAA0B,EACzD,KAAK,EAAI,IAAIghF,EAAGhhF,EAAQ,EAAG,EAAE,EAC7B,KAAK,EAAI,IAAIghF,EAAGhhF,EAAQ,EAAG,EAAE,EACzBA,EAAQ,gBAAkB,OAC5B,KAAK,cAAgB,KAErB,KAAK,cAAgBA,EAAQ,cAChC,CACa86C,YAAG8hD,EAEjB,SAASC,GAAW,CAClB,KAAK,MAAQ,CACd,CAED,SAASC,EAAUrxG,EAAK0S,EAAG,CACzB,IAAI4+F,EAAUtxG,EAAI0S,EAAE,OAAO,EAC3B,GAAI,EAAE4+F,EAAU,KACd,OAAOA,EAET,IAAIC,EAAWD,EAAU,GAOzB,GAJIC,IAAa,GAAKA,EAAW,GAI9BvxG,EAAI0S,EAAE,KAAK,IAAM,EAClB,MAAO,GAIT,QADIvP,EAAM,EACD1G,EAAI,EAAGyrD,EAAMx1C,EAAE,MAAOjW,EAAI80G,EAAU90G,IAAKyrD,IAChD/kD,IAAQ,EACRA,GAAOnD,EAAIkoD,CAAG,EACd/kD,KAAS,EAIX,OAAIA,GAAO,IACF,IAGTuP,EAAE,MAAQw1C,EACH/kD,EACR,CAED,SAASquG,EAAUxxG,EAAK,CAGtB,QAFIvD,EAAI,EACJF,EAAMyD,EAAI,OAAS,EAChB,CAACA,EAAIvD,CAAC,GAAK,EAAEuD,EAAIvD,EAAI,CAAC,EAAI,MAASA,EAAIF,GAC5CE,IAEF,OAAIA,IAAM,EACDuD,EAEFA,EAAI,MAAMvD,CAAC,CACnB,CAED00G,EAAU,UAAU,WAAa,SAAoB97F,EAAM4nE,EAAK,CAC9D5nE,EAAOu4E,EAAM,QAAQv4E,EAAM4nE,CAAG,EAC9B,IAAIvqE,EAAI,IAAI0+F,EACZ,GAAI/7F,EAAK3C,EAAE,OAAO,IAAM,GACtB,MAAO,GAET,IAAInW,EAAM80G,EAAUh8F,EAAM3C,CAAC,EAO3B,GANInW,IAAQ,IAGPA,EAAMmW,EAAE,QAAW2C,EAAK,QAGzBA,EAAK3C,EAAE,OAAO,IAAM,EACtB,MAAO,GAET,IAAIosF,EAAOuS,EAAUh8F,EAAM3C,CAAC,EAI5B,GAHIosF,IAAS,IAGRzpF,EAAK3C,EAAE,KAAK,EAAI,IACnB,MAAO,GAET,IAAIvC,EAAIkF,EAAK,MAAM3C,EAAE,MAAOosF,EAAOpsF,EAAE,KAAK,EAE1C,GADAA,EAAE,OAASosF,EACPzpF,EAAK3C,EAAE,OAAO,IAAM,EACtB,MAAO,GAET,IAAI++F,EAAOJ,EAAUh8F,EAAM3C,CAAC,EAO5B,GANI++F,IAAS,IAGTp8F,EAAK,SAAWo8F,EAAO/+F,EAAE,OAGxB2C,EAAK3C,EAAE,KAAK,EAAI,IACnB,MAAO,GAET,IAAI5T,EAAIuW,EAAK,MAAM3C,EAAE,MAAO++F,EAAO/+F,EAAE,KAAK,EAC1C,GAAIvC,EAAE,CAAC,IAAM,EACX,GAAIA,EAAE,CAAC,EAAI,IACTA,EAAIA,EAAE,MAAM,CAAC,MAGb,OAAO,GAGX,GAAIrR,EAAE,CAAC,IAAM,EACX,GAAIA,EAAE,CAAC,EAAI,IACTA,EAAIA,EAAE,MAAM,CAAC,MAGb,OAAO,GAIX,YAAK,EAAI,IAAIy2F,EAAGplF,CAAC,EACjB,KAAK,EAAI,IAAIolF,EAAGz2F,CAAC,EACjB,KAAK,cAAgB,KAEd,EACT,EAEA,SAAS4yG,EAAgBl0G,EAAKjB,EAAK,CACjC,GAAIA,EAAM,IAAM,CACdiB,EAAI,KAAKjB,CAAG,EACZ,MACD,CACD,IAAIo1G,EAAS,GAAK,KAAK,IAAIp1G,CAAG,EAAI,KAAK,MAAQ,GAE/C,IADAiB,EAAI,KAAKm0G,EAAS,GAAI,EACf,EAAEA,GACPn0G,EAAI,KAAMjB,KAASo1G,GAAU,GAAM,GAAI,EAEzCn0G,EAAI,KAAKjB,CAAG,CACb,CAED,OAAA40G,EAAU,UAAU,MAAQ,SAAel0B,EAAK,CAC9C,IAAI9sE,EAAI,KAAK,EAAE,QAAO,EAClBrR,EAAI,KAAK,EAAE,QAAO,EAYtB,IATIqR,EAAE,CAAC,EAAI,MACTA,EAAI,CAAE,CAAC,EAAG,OAAOA,CAAC,GAEhBrR,EAAE,CAAC,EAAI,MACTA,EAAI,CAAE,CAAC,EAAG,OAAOA,CAAC,GAEpBqR,EAAIqhG,EAAUrhG,CAAC,EACfrR,EAAI0yG,EAAU1yG,CAAC,EAER,CAACA,EAAE,CAAC,GAAK,EAAEA,EAAE,CAAC,EAAI,MACvBA,EAAIA,EAAE,MAAM,CAAC,EAEf,IAAItB,EAAM,CAAE,GACZk0G,EAAgBl0G,EAAK2S,EAAE,MAAM,EAC7B3S,EAAMA,EAAI,OAAO2S,CAAC,EAClB3S,EAAI,KAAK,CAAI,EACbk0G,EAAgBl0G,EAAKsB,EAAE,MAAM,EAC7B,IAAI8yG,EAAWp0G,EAAI,OAAOsB,CAAC,EACvByF,EAAM,CAAE,IACZ,OAAAmtG,EAAgBntG,EAAKqtG,EAAS,MAAM,EACpCrtG,EAAMA,EAAI,OAAOqtG,CAAQ,EAClBhkB,EAAM,OAAOrpF,EAAK04E,CAAG,oGC5K9B,IAAIsY,EAAKz4C,cACL2zD,EAAWpxD,kBACXuuC,EAAQv5B,iBACRi8C,EAAS37C,gBACTsrC,EAAO/mC,iBACPm1B,EAAST,EAAM,OAEfqjB,EAAU93C,eACVg4C,EAAY/3C,qBAEhB,SAASy4C,EAAGt9F,EAAS,CACnB,GAAI,EAAE,gBAAgBs9F,GACpB,OAAO,IAAIA,EAAGt9F,CAAO,EAGnB,OAAOA,GAAY,WACrB85E,EAAO,OAAO,UAAU,eAAe,KAAKiiB,EAAQ/7F,CAAO,EACzD,iBAAmBA,CAAO,EAE5BA,EAAU+7F,EAAO/7F,CAAO,GAItBA,aAAmB+7F,EAAO,cAC5B/7F,EAAU,CAAE,MAAOA,IAErB,KAAK,MAAQA,EAAQ,MAAM,MAC3B,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,GAAK,KAAK,EAAE,MAAM,CAAC,EACxB,KAAK,EAAI,KAAK,MAAM,EAGpB,KAAK,EAAIA,EAAQ,MAAM,EACvB,KAAK,EAAE,WAAWA,EAAQ,MAAM,EAAE,YAAc,CAAC,EAGjD,KAAK,KAAOA,EAAQ,MAAQA,EAAQ,MAAM,IAC3C,CACa,UAAGs9F,EAEjBA,EAAG,UAAU,QAAU,SAAiBt9F,EAAS,CAC/C,OAAO,IAAI08F,EAAQ,KAAM18F,CAAO,CAClC,EAEAs9F,EAAG,UAAU,eAAiB,SAAwBjQ,EAAM3kB,EAAK,CAC/D,OAAOg0B,EAAQ,YAAY,KAAMrP,EAAM3kB,CAAG,CAC5C,EAEA40B,EAAG,UAAU,cAAgB,SAAuBnQ,EAAKzkB,EAAK,CAC5D,OAAOg0B,EAAQ,WAAW,KAAMvP,EAAKzkB,CAAG,CAC1C,EAEA40B,EAAG,UAAU,WAAa,SAAoBt9F,EAAS,CAChDA,IACHA,EAAU,IAcZ,QAXIu9F,EAAO,IAAIrB,EAAS,CACtB,KAAM,KAAK,KACX,KAAMl8F,EAAQ,KACd,QAASA,EAAQ,SAAW,OAC5B,QAASA,EAAQ,SAAW0rF,EAAK,KAAK,KAAK,YAAY,EACvD,WAAY1rF,EAAQ,SAAWA,EAAQ,YAAc,OACrD,MAAO,KAAK,EAAE,QAAS,CAC3B,CAAG,EAEGlP,EAAQ,KAAK,EAAE,WAAU,EACzB0sG,EAAM,KAAK,EAAE,IAAI,IAAIxc,EAAG,CAAC,CAAC,IACrB,CACP,IAAIqM,EAAO,IAAIrM,EAAGuc,EAAK,SAASzsG,CAAK,CAAC,EACtC,GAAI,EAAAu8F,EAAK,IAAImQ,CAAG,EAAI,GAGpB,OAAAnQ,EAAK,MAAM,CAAC,EACL,KAAK,eAAeA,CAAI,CAChC,CACH,EAEAiQ,EAAG,UAAU,aAAe,SAAsBvqG,EAAK0qG,EAAW,CAChE,IAAIvT,EAAQn3F,EAAI,WAAY,EAAG,EAAI,KAAK,EAAE,YAG1C,OAFIm3F,EAAQ,IACVn3F,EAAMA,EAAI,MAAMm3F,CAAK,GACnB,CAACuT,GAAa1qG,EAAI,IAAI,KAAK,CAAC,GAAK,EAC5BA,EAAI,IAAI,KAAK,CAAC,EAEdA,CACX,EAEAuqG,EAAG,UAAU,KAAO,SAAcvqG,EAAK4B,EAAK+zE,EAAK1oE,EAAS,CACpD,OAAO0oE,GAAQ,WACjB1oE,EAAU0oE,EACVA,EAAM,MAEH1oE,IACHA,EAAU,IAEZrL,EAAM,KAAK,eAAeA,EAAK+zE,CAAG,EAClC31E,EAAM,KAAK,aAAa,IAAIiuF,EAAGjuF,EAAK,EAAE,CAAC,EAqBvC,QAlBIjC,EAAQ,KAAK,EAAE,WAAU,EACzB4sG,EAAO/oG,EAAI,WAAU,EAAG,QAAQ,KAAM7D,CAAK,EAG3CsrG,EAAQrpG,EAAI,QAAQ,KAAMjC,CAAK,EAG/BysG,EAAO,IAAIrB,EAAS,CACtB,KAAM,KAAK,KACX,QAASwB,EACT,MAAOtB,EACP,KAAMp8F,EAAQ,KACd,QAASA,EAAQ,SAAW,MAChC,CAAG,EAGG29F,EAAM,KAAK,EAAE,IAAI,IAAI3c,EAAG,CAAC,CAAC,EAErB9V,EAAO,GAAKA,IAAQ,CAC3B,IAAI9rD,EAAIpf,EAAQ,EACdA,EAAQ,EAAEkrE,CAAI,EACd,IAAI8V,EAAGuc,EAAK,SAAS,KAAK,EAAE,WAAY,EAAC,EAE3C,GADAn+E,EAAI,KAAK,aAAaA,EAAG,EAAI,EACzB,EAAAA,EAAE,KAAK,CAAC,GAAK,GAAKA,EAAE,IAAIu+E,CAAG,GAAK,GAGpC,KAAIC,EAAK,KAAK,EAAE,IAAIx+E,CAAC,EACrB,GAAI,CAAAw+E,EAAG,WAAY,EAGnB,KAAIC,EAAMD,EAAG,OACThiG,EAAIiiG,EAAI,KAAK,KAAK,CAAC,EACvB,GAAIjiG,EAAE,KAAK,CAAC,IAAM,EAGlB,KAAIrR,GAAI60B,EAAE,KAAK,KAAK,CAAC,EAAE,IAAIxjB,EAAE,IAAIjH,EAAI,WAAU,CAAE,EAAE,KAAK5B,CAAG,CAAC,EAE5D,GADAxI,GAAIA,GAAE,KAAK,KAAK,CAAC,EACbA,GAAE,KAAK,CAAC,IAAM,EAGlB,KAAIuzG,IAAiBF,EAAG,KAAM,EAAC,MAAK,EAAK,EAAI,IACxBC,EAAI,IAAIjiG,CAAC,IAAM,EAAI,EAAI,GAG5C,OAAIoE,EAAQ,WAAazV,GAAE,IAAI,KAAK,EAAE,EAAI,IACxCA,GAAI,KAAK,EAAE,IAAIA,EAAC,EAChBuzG,IAAiB,GAGZ,IAAIlB,EAAU,CAAE,EAAGhhG,EAAG,EAAGrR,GAAG,cAAeuzG,EAAa,CAAE,KAClE,CACH,EAEAR,EAAG,UAAU,OAAS,SAAgBvqG,EAAK+nD,EAAWnmD,EAAK+zE,EAAK,CAC9D31E,EAAM,KAAK,aAAa,IAAIiuF,EAAGjuF,EAAK,EAAE,CAAC,EACvC4B,EAAM,KAAK,cAAcA,EAAK+zE,CAAG,EACjC5tB,EAAY,IAAI8hD,EAAU9hD,EAAW,KAAK,EAG1C,IAAIl/C,EAAIk/C,EAAU,EACdvwD,EAAIuwD,EAAU,EAGlB,GAFIl/C,EAAE,KAAK,CAAC,EAAI,GAAKA,EAAE,IAAI,KAAK,CAAC,GAAK,GAElCrR,EAAE,KAAK,CAAC,EAAI,GAAKA,EAAE,IAAI,KAAK,CAAC,GAAK,EACpC,MAAO,GAGT,IAAIwzG,EAAOxzG,EAAE,KAAK,KAAK,CAAC,EACpB8lG,EAAK0N,EAAK,IAAIhrG,CAAG,EAAE,KAAK,KAAK,CAAC,EAC9Bu9F,EAAKyN,EAAK,IAAIniG,CAAC,EAAE,KAAK,KAAK,CAAC,EAC5BuC,EAEJ,OAAK,KAAK,MAAM,eAWhBA,EAAI,KAAK,EAAE,QAAQkyF,EAAI17F,EAAI,YAAa27F,CAAE,EACtCnyF,EAAE,WAAY,EACT,GAKFA,EAAE,OAAOvC,CAAC,IAjBfuC,EAAI,KAAK,EAAE,OAAOkyF,EAAI17F,EAAI,YAAa27F,CAAE,EACrCnyF,EAAE,WAAY,EACT,GAEFA,EAAE,KAAM,EAAC,KAAK,KAAK,CAAC,EAAE,IAAIvC,CAAC,IAAM,EAc5C,EAEA0hG,EAAG,UAAU,cAAgB,SAASvqG,EAAK+nD,EAAW1rD,EAAGs5E,EAAK,CAC5DoR,GAAQ,EAAI1qF,KAAOA,EAAG,0CAA0C,EAChE0rD,EAAY,IAAI8hD,EAAU9hD,EAAW4tB,CAAG,EAExC,IAAIv6E,EAAI,KAAK,EACTnE,EAAI,IAAIg3F,EAAGjuF,CAAG,EACd6I,EAAIk/C,EAAU,EACdvwD,EAAIuwD,EAAU,EAGdkjD,EAAS5uG,EAAI,EACb6uG,EAAc7uG,GAAK,EACvB,GAAIwM,EAAE,IAAI,KAAK,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,GAAK,GAAKqiG,EACjD,MAAM,IAAI,MAAM,sCAAsC,EAGpDA,EACFriG,EAAI,KAAK,MAAM,WAAWA,EAAE,IAAI,KAAK,MAAM,CAAC,EAAGoiG,CAAM,EAErDpiG,EAAI,KAAK,MAAM,WAAWA,EAAGoiG,CAAM,EAErC,IAAIE,EAAOpjD,EAAU,EAAE,KAAK3sD,CAAC,EACzBqiB,EAAKriB,EAAE,IAAInE,CAAC,EAAE,IAAIk0G,CAAI,EAAE,KAAK/vG,CAAC,EAC9BsiB,EAAKlmB,EAAE,IAAI2zG,CAAI,EAAE,KAAK/vG,CAAC,EAI3B,OAAO,KAAK,EAAE,OAAOqiB,EAAI5U,EAAG6U,CAAE,CAChC,EAEA6sF,EAAG,UAAU,oBAAsB,SAAStzG,EAAG8wD,EAAWqjD,EAAGz1B,EAAK,CAEhE,GADA5tB,EAAY,IAAI8hD,EAAU9hD,EAAW4tB,CAAG,EACpC5tB,EAAU,gBAAkB,KAC9B,OAAOA,EAAU,cAEnB,QAAS5yD,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIk2G,EACJ,GAAI,CACFA,EAAS,KAAK,cAAcp0G,EAAG8wD,EAAW5yD,CAAC,CAC5C,MAAW,CACV,QACD,CAED,GAAIk2G,EAAO,GAAGD,CAAC,EACb,OAAOj2G,CACV,CACD,MAAM,IAAI,MAAM,sCAAsC,iGC/OxD,IAAImxF,EAAQ9wC,iBACRuxC,EAAST,EAAM,OACfoX,EAAapX,EAAM,WACnBkX,EAAiBlX,EAAM,eAW3B,SAASqjB,EAAQ2B,EAAO5wE,EAAQ,CAC9B,KAAK,MAAQ4wE,EACb,KAAK,QAAU5N,EAAWhjE,EAAO,MAAM,EACnC4wE,EAAM,QAAQ5wE,EAAO,GAAG,EAC1B,KAAK,KAAOA,EAAO,IAEnB,KAAK,UAAYgjE,EAAWhjE,EAAO,GAAG,CACzC,CAED,OAAAivE,EAAQ,WAAa,SAAoB2B,EAAOlR,EAAK,CACnD,OAAIA,aAAeuP,EACVvP,EACF,IAAIuP,EAAQ2B,EAAO,CAAE,IAAKlR,CAAK,EACxC,EAEAuP,EAAQ,WAAa,SAAoB2B,EAAO3Q,EAAQ,CACtD,OAAIA,aAAkBgP,EACbhP,EACF,IAAIgP,EAAQ2B,EAAO,CAAE,OAAQ3Q,CAAQ,EAC9C,EAEAgP,EAAQ,UAAU,OAAS,UAAkB,CAC3C,OAAO,KAAK,OACd,EAEAnM,EAAemM,EAAS,WAAY,UAAoB,CACtD,OAAO,KAAK,MAAM,YAAY,KAAK,IAAK,EAC1C,CAAC,EAEDnM,EAAemM,EAAS,MAAO,UAAe,CAC5C,OAAI,KAAK,UACA,KAAK,MAAM,YAAY,KAAK,SAAS,EACvC,KAAK,MAAM,EAAE,IAAI,KAAK,KAAI,CAAE,CACrC,CAAC,EAEDnM,EAAemM,EAAS,YAAa,UAAqB,CACxD,IAAI2B,EAAQ,KAAK,MACb3rD,EAAO,KAAK,OACZ4rD,EAASD,EAAM,eAAiB,EAEhClxG,EAAIulD,EAAK,MAAM,EAAG2rD,EAAM,cAAc,EAC1C,OAAAlxG,EAAE,CAAC,GAAK,IACRA,EAAEmxG,CAAM,GAAK,IACbnxG,EAAEmxG,CAAM,GAAK,GAENnxG,CACT,CAAC,EAEDojG,EAAemM,EAAS,OAAQ,UAAgB,CAC9C,OAAO,KAAK,MAAM,UAAU,KAAK,UAAW,EAC9C,CAAC,EAEDnM,EAAemM,EAAS,OAAQ,UAAgB,CAC9C,OAAO,KAAK,MAAM,OAAO,OAAO,KAAK,OAAM,CAAE,EAAE,QACjD,CAAC,EAEDnM,EAAemM,EAAS,gBAAiB,UAAyB,CAChE,OAAO,KAAK,OAAO,MAAM,KAAK,MAAM,cAAc,CACpD,CAAC,EAEDA,EAAQ,UAAU,KAAO,SAAc74E,EAAS,CAC9C,OAAAi2D,EAAO,KAAK,QAAS,yBAAyB,EACvC,KAAK,MAAM,KAAKj2D,EAAS,IAAI,CACtC,EAEA64E,EAAQ,UAAU,OAAS,SAAgB74E,EAAS06E,EAAK,CACvD,OAAO,KAAK,MAAM,OAAO16E,EAAS06E,EAAK,IAAI,CAC7C,EAEA7B,EAAQ,UAAU,UAAY,SAAmBh0B,EAAK,CACpD,OAAAoR,EAAO,KAAK,QAAS,wBAAwB,EACtCT,EAAM,OAAO,KAAK,OAAQ,EAAE3Q,CAAG,CACxC,EAEAg0B,EAAQ,UAAU,UAAY,SAAmBh0B,EAAK,CACpD,OAAO2Q,EAAM,OAAO,KAAK,SAAU,EAAE3Q,CAAG,CAC1C,EAEA,IAAiBg0B,qIC5FjB,IAAI1b,EAAKz4C,cACL8wC,EAAQvuC,iBACRgvC,EAAST,EAAM,OACfkX,EAAiBlX,EAAM,eACvBoX,EAAapX,EAAM,WAUvB,SAASujB,EAAUyB,EAAOE,EAAK,CAC7B,KAAK,MAAQF,EAET,OAAOE,GAAQ,WACjBA,EAAM9N,EAAW8N,CAAG,GAElB,MAAM,QAAQA,CAAG,IACnBzkB,EAAOykB,EAAI,SAAWF,EAAM,eAAiB,EAAG,4BAA4B,EAC5EE,EAAM,CACJ,EAAGA,EAAI,MAAM,EAAGF,EAAM,cAAc,EACpC,EAAGE,EAAI,MAAMF,EAAM,cAAc,CACvC,GAGEvkB,EAAOykB,EAAI,GAAKA,EAAI,EAAG,0BAA0B,EAE7CF,EAAM,QAAQE,EAAI,CAAC,IACrB,KAAK,GAAKA,EAAI,GACZA,EAAI,aAAavd,IACnB,KAAK,GAAKud,EAAI,GAEhB,KAAK,UAAY,MAAM,QAAQA,EAAI,CAAC,EAAIA,EAAI,EAAIA,EAAI,SACpD,KAAK,UAAY,MAAM,QAAQA,EAAI,CAAC,EAAIA,EAAI,EAAIA,EAAI,QACrD,CAED,OAAAhO,EAAeqM,EAAW,IAAK,UAAa,CAC1C,OAAO,KAAK,MAAM,UAAU,KAAK,SAAU,EAC7C,CAAC,EAEDrM,EAAeqM,EAAW,IAAK,UAAa,CAC1C,OAAO,KAAK,MAAM,YAAY,KAAK,SAAU,EAC/C,CAAC,EAEDrM,EAAeqM,EAAW,WAAY,UAAoB,CACxD,OAAO,KAAK,MAAM,YAAY,KAAK,EAAG,EACxC,CAAC,EAEDrM,EAAeqM,EAAW,WAAY,UAAoB,CACxD,OAAO,KAAK,MAAM,UAAU,KAAK,EAAG,EACtC,CAAC,EAEDA,EAAU,UAAU,QAAU,UAAmB,CAC/C,OAAO,KAAK,SAAU,EAAC,OAAO,KAAK,SAAQ,CAAE,CAC/C,EAEAA,EAAU,UAAU,MAAQ,UAAiB,CAC3C,OAAOvjB,EAAM,OAAO,KAAK,QAAO,EAAI,KAAK,EAAE,aAC7C,EAEA,UAAiBujB,mHC/DjB,IAAIlqD,EAAOnK,cACPwzD,EAASjxD,gBACTuuC,EAAQv5B,iBACRg6B,EAAST,EAAM,OACfoX,EAAapX,EAAM,WACnBqjB,EAAUt8C,aACVw8C,EAAYj4C,mBAEhB,SAAS65C,EAAM3M,EAAO,CAGpB,GAFA/X,EAAO+X,IAAU,UAAW,iCAAiC,EAEzD,EAAE,gBAAgB2M,GACpB,OAAO,IAAIA,EAAM3M,CAAK,EAExBA,EAAQkK,EAAOlK,CAAK,EAAE,MACtB,KAAK,MAAQA,EACb,KAAK,EAAIA,EAAM,EACf,KAAK,EAAE,WAAWA,EAAM,EAAE,UAAS,EAAK,CAAC,EAEzC,KAAK,WAAaA,EAAM,MAAK,EAAG,YAChC,KAAK,eAAiB,KAAK,KAAKA,EAAM,EAAE,YAAc,CAAC,EACvD,KAAK,KAAOn/C,EAAK,MAClB,CAEa,aAAG8rD,EAOjBA,EAAM,UAAU,KAAO,SAAc36E,EAAS6pE,EAAQ,CACpD7pE,EAAU4sE,EAAW5sE,CAAO,EAC5B,IAAIlvB,EAAM,KAAK,cAAc+4F,CAAM,EAC/B9xF,EAAI,KAAK,QAAQjH,EAAI,cAAa,EAAIkvB,CAAO,EAC7C46E,EAAI,KAAK,EAAE,IAAI7iG,CAAC,EAChB8iG,EAAW,KAAK,YAAYD,CAAC,EAC7BE,EAAK,KAAK,QAAQD,EAAU/pG,EAAI,SAAU,EAAEkvB,CAAO,EACpD,IAAIlvB,EAAI,KAAI,CAAE,EACbiqG,EAAIhjG,EAAE,IAAI+iG,CAAE,EAAE,KAAK,KAAK,MAAM,CAAC,EACnC,OAAO,KAAK,cAAc,CAAE,EAAGF,EAAG,EAAGG,EAAG,SAAUF,CAAQ,CAAE,CAC9D,EAQAF,EAAM,UAAU,OAAS,SAAgB36E,EAAS06E,EAAKpR,EAAK,CAG1D,GAFAtpE,EAAU4sE,EAAW5sE,CAAO,EAC5B06E,EAAM,KAAK,cAAcA,CAAG,EACxBA,EAAI,EAAC,EAAG,IAAIA,EAAI,MAAM,MAAM,CAAC,GAAKA,EAAI,EAAG,EAAC,MAAK,EACjD,MAAO,GAET,IAAI5pG,EAAM,KAAK,cAAcw4F,CAAG,EAC5B7mF,EAAI,KAAK,QAAQi4F,EAAI,SAAU,EAAE5pG,EAAI,WAAYkvB,CAAO,EACxDg7E,EAAK,KAAK,EAAE,IAAIN,EAAI,EAAC,CAAE,EACvBO,EAAUP,EAAI,EAAC,EAAG,IAAI5pG,EAAI,MAAM,IAAI2R,CAAC,CAAC,EAC1C,OAAOw4F,EAAQ,GAAGD,CAAE,CACtB,EAEAL,EAAM,UAAU,QAAU,UAAmB,CAE3C,QADI9rD,EAAO,KAAK,OACPxqD,EAAI,EAAGA,EAAI,UAAU,OAAQA,IACpCwqD,EAAK,OAAO,UAAUxqD,CAAC,CAAC,EAC1B,OAAOmxF,EAAM,UAAU3mC,EAAK,OAAM,CAAE,EAAE,KAAK,KAAK,MAAM,CAAC,CACzD,EAEA8rD,EAAM,UAAU,cAAgB,SAAuBrR,EAAK,CAC1D,OAAOuP,EAAQ,WAAW,KAAMvP,CAAG,CACrC,EAEAqR,EAAM,UAAU,cAAgB,SAAuB9Q,EAAQ,CAC7D,OAAOgP,EAAQ,WAAW,KAAMhP,CAAM,CACxC,EAEA8Q,EAAM,UAAU,cAAgB,SAAuBD,EAAK,CAC1D,OAAIA,aAAe3B,EACV2B,EACF,IAAI3B,EAAU,KAAM2B,CAAG,CAChC,EAUAC,EAAM,UAAU,YAAc,SAAqBjL,EAAO,CACxD,IAAI7qB,EAAM6qB,EAAM,KAAM,EAAC,QAAQ,KAAM,KAAK,cAAc,EACxD,OAAA7qB,EAAI,KAAK,eAAiB,CAAC,GAAK6qB,EAAM,KAAI,EAAG,MAAK,EAAK,IAAO,EACvD7qB,CACT,EAEA81B,EAAM,UAAU,YAAc,SAAqB1tG,EAAO,CACxDA,EAAQuoF,EAAM,WAAWvoF,CAAK,EAE9B,IAAIwtG,EAASxtG,EAAM,OAAS,EACxBiuG,EAASjuG,EAAM,MAAM,EAAGwtG,CAAM,EAAE,OAAOxtG,EAAMwtG,CAAM,EAAI,IAAK,EAC5DU,GAAUluG,EAAMwtG,CAAM,EAAI,OAAU,EAEpClxG,EAAIisF,EAAM,UAAU0lB,CAAM,EAC9B,OAAO,KAAK,MAAM,WAAW3xG,EAAG4xG,CAAM,CACxC,EAEAR,EAAM,UAAU,UAAY,SAAmBr1G,EAAK,CAClD,OAAOA,EAAI,QAAQ,KAAM,KAAK,cAAc,CAC9C,EAEAq1G,EAAM,UAAU,UAAY,SAAmB1tG,EAAO,CACpD,OAAOuoF,EAAM,UAAUvoF,CAAK,CAC9B,EAEA0tG,EAAM,UAAU,QAAU,SAAiB5vG,EAAK,CAC9C,OAAOA,aAAe,KAAK,oICrH7B,IAAIqwG,EAAWt0G,EAEfs0G,EAAS,QAAU12D,aAA2B,QAC9C02D,EAAS,MAAQn0D,iBACjBm0D,EAAS,KAAOn/C,iBAChBm/C,EAAS,MAAQ7+C,eACjB6+C,EAAS,OAASt6C,gBAGlBs6C,EAAS,GAAKr6C,YACdq6C,EAAS,MAAQp6C,8JCZhB,SAAUlhB,EAAQh5C,EAAS,CAI1B,SAASmvF,EAAQlrF,EAAKmE,EAAK,CACzB,GAAI,CAACnE,EAAK,MAAM,IAAI,MAAMmE,GAAO,kBAAkB,CACpD,CAID,SAAS83C,EAAUthC,EAAMohC,EAAW,CAClCphC,EAAK,OAASohC,EACd,IAAIC,EAAW,UAAY,GAC3BA,EAAS,UAAYD,EAAU,UAC/BphC,EAAK,UAAY,IAAIqhC,EACrBrhC,EAAK,UAAU,YAAcA,CAC9B,CAID,SAASy3E,EAAI7hF,EAAQoH,EAAM06E,EAAQ,CACjC,GAAID,EAAG,KAAK7hF,CAAM,EAChB,OAAOA,EAGT,KAAK,SAAW,EAChB,KAAK,MAAQ,KACb,KAAK,OAAS,EAGd,KAAK,IAAM,KAEPA,IAAW,QACToH,IAAS,MAAQA,IAAS,QAC5B06E,EAAS16E,EACTA,EAAO,IAGT,KAAK,MAAMpH,GAAU,EAAGoH,GAAQ,GAAI06E,GAAU,IAAI,EAErD,CACG,OAAOt9C,GAAW,SACpBA,EAAO,QAAUq9C,EAEjBr2F,EAAQ,GAAKq2F,EAGfA,EAAG,GAAKA,EACRA,EAAG,SAAW,GAEd,IAAIj2F,EACJ,GAAI,CACE,OAAO,OAAW,KAAe,OAAO,OAAO,OAAW,IAC5DA,EAAS,OAAO,OAEhBA,EAASw9C,aAAkB,MAE9B,MAAW,CACX,CAEDy4C,EAAG,KAAO,SAAe73F,EAAK,CAC5B,OAAIA,aAAe63F,EACV,GAGF73F,IAAQ,MAAQ,OAAOA,GAAQ,UACpCA,EAAI,YAAY,WAAa63F,EAAG,UAAY,MAAM,QAAQ73F,EAAI,KAAK,CACzE,EAEE63F,EAAG,IAAM,SAAc94D,EAAM2Q,EAAO,CAClC,OAAI3Q,EAAK,IAAI2Q,CAAK,EAAI,EAAU3Q,EACzB2Q,CACX,EAEEmoD,EAAG,IAAM,SAAc94D,EAAM2Q,EAAO,CAClC,OAAI3Q,EAAK,IAAI2Q,CAAK,EAAI,EAAU3Q,EACzB2Q,CACX,EAEEmoD,EAAG,UAAU,MAAQ,SAAe7hF,EAAQoH,EAAM06E,GAAQ,CACxD,GAAI,OAAO9hF,GAAW,SACpB,OAAO,KAAK,YAAYA,EAAQoH,EAAM06E,EAAM,EAG9C,GAAI,OAAO9hF,GAAW,SACpB,OAAO,KAAK,WAAWA,EAAQoH,EAAM06E,EAAM,EAGzC16E,IAAS,QACXA,EAAO,IAETuzE,EAAOvzE,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,EAAE,EAErDpH,EAASA,EAAO,SAAQ,EAAG,QAAQ,OAAQ,EAAE,EAC7C,IAAI9V,GAAQ,EACR8V,EAAO,CAAC,IAAM,MAChB9V,KACA,KAAK,SAAW,GAGdA,GAAQ8V,EAAO,SACboH,IAAS,GACX,KAAK,UAAUpH,EAAQ9V,GAAO43F,EAAM,GAEpC,KAAK,WAAW9hF,EAAQoH,EAAMld,EAAK,EAC/B43F,KAAW,MACb,KAAK,WAAW,KAAK,QAAO,EAAI16E,EAAM06E,EAAM,GAItD,EAEED,EAAG,UAAU,YAAc,SAAsB7hF,EAAQoH,EAAM06E,GAAQ,CACjE9hF,EAAS,IACX,KAAK,SAAW,EAChBA,EAAS,CAACA,GAERA,EAAS,UACX,KAAK,MAAQ,CAACA,EAAS,QAAS,EAChC,KAAK,OAAS,GACLA,EAAS,kBAClB,KAAK,MAAQ,CACXA,EAAS,SACRA,EAAS,SAAa,QAC/B,EACM,KAAK,OAAS,IAEd26E,EAAO36E,EAAS,gBAAgB,EAChC,KAAK,MAAQ,CACXA,EAAS,SACRA,EAAS,SAAa,SACvB,CACR,EACM,KAAK,OAAS,GAGZ8hF,KAAW,MAGf,KAAK,WAAW,KAAK,QAAO,EAAI16E,EAAM06E,EAAM,CAChD,EAEED,EAAG,UAAU,WAAa,SAAqB7hF,EAAQoH,EAAM06E,GAAQ,CAGnE,GADAnH,EAAO,OAAO36E,EAAO,QAAW,QAAQ,EACpCA,EAAO,QAAU,EACnB,YAAK,MAAQ,CAAC,CAAC,EACf,KAAK,OAAS,EACP,KAGT,KAAK,OAAS,KAAK,KAAKA,EAAO,OAAS,CAAC,EACzC,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASjX,GAAI,EAAGA,GAAI,KAAK,OAAQA,KAC/B,KAAK,MAAMA,EAAC,EAAI,EAGlB,IAAIkH,GAAG0zB,GACH6wB,GAAM,EACV,GAAIstC,KAAW,KACb,IAAK/4F,GAAIiX,EAAO,OAAS,EAAG/P,GAAI,EAAGlH,IAAK,EAAGA,IAAK,EAC9C46B,GAAI3jB,EAAOjX,EAAC,EAAKiX,EAAOjX,GAAI,CAAC,GAAK,EAAMiX,EAAOjX,GAAI,CAAC,GAAK,GACzD,KAAK,MAAMkH,EAAC,GAAM0zB,IAAK6wB,GAAO,SAC9B,KAAK,MAAMvkD,GAAI,CAAC,EAAK0zB,KAAO,GAAK6wB,GAAQ,SACzCA,IAAO,GACHA,IAAO,KACTA,IAAO,GACPvkD,cAGK6xF,KAAW,KACpB,IAAK/4F,GAAI,EAAGkH,GAAI,EAAGlH,GAAIiX,EAAO,OAAQjX,IAAK,EACzC46B,GAAI3jB,EAAOjX,EAAC,EAAKiX,EAAOjX,GAAI,CAAC,GAAK,EAAMiX,EAAOjX,GAAI,CAAC,GAAK,GACzD,KAAK,MAAMkH,EAAC,GAAM0zB,IAAK6wB,GAAO,SAC9B,KAAK,MAAMvkD,GAAI,CAAC,EAAK0zB,KAAO,GAAK6wB,GAAQ,SACzCA,IAAO,GACHA,IAAO,KACTA,IAAO,GACPvkD,MAIN,OAAO,KAAK,QAChB,EAEE,SAAS8xF,EAAev0F,EAAQ6W,EAAO,CACrC,IAAI/Y,EAAIkC,EAAO,WAAW6W,CAAK,EAE/B,GAAI/Y,GAAK,IAAMA,GAAK,GAClB,OAAOA,EAAI,GAEN,GAAIA,GAAK,IAAMA,GAAK,GACzB,OAAOA,EAAI,GAEN,GAAIA,GAAK,IAAMA,GAAK,IACzB,OAAOA,EAAI,GAEXqvF,EAAO,GAAO,wBAA0BntF,CAAM,CAEjD,CAED,SAASw0F,EAAcx0F,EAAQ+3C,EAAYlhC,EAAO,CAChD,IAAI5H,GAAIslF,EAAcv0F,EAAQ6W,CAAK,EACnC,OAAIA,EAAQ,GAAKkhC,IACf9oC,IAAKslF,EAAcv0F,EAAQ6W,EAAQ,CAAC,GAAK,GAEpC5H,EACR,CAEDolF,EAAG,UAAU,UAAY,SAAoB7hF,EAAQ9V,EAAO43F,GAAQ,CAElE,KAAK,OAAS,KAAK,MAAM9hF,EAAO,OAAS9V,GAAS,CAAC,EACnD,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASnB,GAAI,EAAGA,GAAI,KAAK,OAAQA,KAC/B,KAAK,MAAMA,EAAC,EAAI,EAIlB,IAAIyrD,GAAM,EACNvkD,GAAI,EAEJ0zB,GACJ,GAAIm+D,KAAW,KACb,IAAK/4F,GAAIiX,EAAO,OAAS,EAAGjX,IAAKmB,EAAOnB,IAAK,EAC3C46B,GAAIq+D,EAAahiF,EAAQ9V,EAAOnB,EAAC,GAAKyrD,GACtC,KAAK,MAAMvkD,EAAC,GAAK0zB,GAAI,SACjB6wB,IAAO,IACTA,IAAO,GACPvkD,IAAK,EACL,KAAK,MAAMA,EAAC,GAAK0zB,KAAM,IAEvB6wB,IAAO,MAGN,CACL,IAAIytC,GAAcjiF,EAAO,OAAS9V,EAClC,IAAKnB,GAAIk5F,GAAc,IAAM,EAAI/3F,EAAQ,EAAIA,EAAOnB,GAAIiX,EAAO,OAAQjX,IAAK,EAC1E46B,GAAIq+D,EAAahiF,EAAQ9V,EAAOnB,EAAC,GAAKyrD,GACtC,KAAK,MAAMvkD,EAAC,GAAK0zB,GAAI,SACjB6wB,IAAO,IACTA,IAAO,GACPvkD,IAAK,EACL,KAAK,MAAMA,EAAC,GAAK0zB,KAAM,IAEvB6wB,IAAO,CAGZ,CAED,KAAK,OAAM,CACf,EAEE,SAAS0tC,EAAWjzF,EAAK/E,EAAOC,EAAK6H,GAAK,CAIxC,QAHIyK,GAAI,EACJzP,GAAI,EACJnE,GAAM,KAAK,IAAIoG,EAAI,OAAQ9E,CAAG,EACzBpB,GAAImB,EAAOnB,GAAIF,GAAKE,KAAK,CAChC,IAAIuC,GAAI2D,EAAI,WAAWlG,EAAC,EAAI,GAE5B0T,IAAKzK,GAGD1G,IAAK,GACP0B,GAAI1B,GAAI,GAAK,GAGJA,IAAK,GACd0B,GAAI1B,GAAI,GAAK,GAIb0B,GAAI1B,GAENqvF,EAAOrvF,IAAK,GAAK0B,GAAIgF,GAAK,mBAAmB,EAC7CyK,IAAKzP,EACN,CACD,OAAOyP,EACR,CAEDolF,EAAG,UAAU,WAAa,SAAqB7hF,EAAQoH,EAAMld,GAAO,CAElE,KAAK,MAAQ,CAAC,CAAC,EACf,KAAK,OAAS,EAGd,QAASi4F,GAAU,EAAGC,GAAU,EAAGA,IAAW,SAAWA,IAAWh7E,EAClE+6E,KAEFA,KACAC,GAAWA,GAAUh7E,EAAQ,EAO7B,QALIqjE,GAAQzqE,EAAO,OAAS9V,GACxBm4F,GAAM5X,GAAQ0X,GACdh4F,GAAM,KAAK,IAAIsgF,GAAOA,GAAQ4X,EAAG,EAAIn4F,GAErCo4F,EAAO,EACFv5F,GAAImB,GAAOnB,GAAIoB,GAAKpB,IAAKo5F,GAChCG,EAAOJ,EAAUliF,EAAQjX,GAAGA,GAAIo5F,GAAS/6E,CAAI,EAE7C,KAAK,MAAMg7E,EAAO,EACd,KAAK,MAAM,CAAC,EAAIE,EAAO,SACzB,KAAK,MAAM,CAAC,GAAKA,EAEjB,KAAK,OAAOA,CAAI,EAIpB,GAAID,KAAQ,EAAG,CACb,IAAIE,GAAM,EAGV,IAFAD,EAAOJ,EAAUliF,EAAQjX,GAAGiX,EAAO,OAAQoH,CAAI,EAE1Cre,GAAI,EAAGA,GAAIs5F,GAAKt5F,KACnBw5F,IAAOn7E,EAGT,KAAK,MAAMm7E,EAAG,EACV,KAAK,MAAM,CAAC,EAAID,EAAO,SACzB,KAAK,MAAM,CAAC,GAAKA,EAEjB,KAAK,OAAOA,CAAI,CAEnB,CAED,KAAK,OAAM,CACf,EAEET,EAAG,UAAU,KAAO,SAAe1T,EAAM,CACvCA,EAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASplF,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/BolF,EAAK,MAAMplF,CAAC,EAAI,KAAK,MAAMA,CAAC,EAE9BolF,EAAK,OAAS,KAAK,OACnBA,EAAK,SAAW,KAAK,SACrBA,EAAK,IAAM,KAAK,GACpB,EAEE,SAASl8D,EAAMk8D,EAAM75E,EAAK,CACxB65E,EAAK,MAAQ75E,EAAI,MACjB65E,EAAK,OAAS75E,EAAI,OAClB65E,EAAK,SAAW75E,EAAI,SACpB65E,EAAK,IAAM75E,EAAI,GAChB,CAqCD,GAnCAutF,EAAG,UAAU,MAAQ,SAAgB1T,EAAM,CACzCl8D,EAAKk8D,EAAM,IAAI,CACnB,EAEE0T,EAAG,UAAU,MAAQ,UAAkB,CACrC,IAAIplF,EAAI,IAAIolF,EAAG,IAAI,EACnB,YAAK,KAAKplF,CAAC,EACJA,CACX,EAEEolF,EAAG,UAAU,QAAU,SAAkB10F,EAAM,CAC7C,KAAO,KAAK,OAASA,GACnB,KAAK,MAAM,KAAK,QAAQ,EAAI,EAE9B,OAAO,IACX,EAGE00F,EAAG,UAAU,OAAS,UAAkB,CACtC,KAAO,KAAK,OAAS,GAAK,KAAK,MAAM,KAAK,OAAS,CAAC,IAAM,GACxD,KAAK,SAEP,OAAO,KAAK,WAChB,EAEEA,EAAG,UAAU,UAAY,UAAsB,CAE7C,OAAI,KAAK,SAAW,GAAK,KAAK,MAAM,CAAC,IAAM,IACzC,KAAK,SAAW,GAEX,IACX,EAIM,OAAO,OAAW,KAAe,OAAO,OAAO,KAAQ,WACzD,GAAI,CACFA,EAAG,UAAU,OAAO,IAAI,4BAA4B,CAAC,EAAIhiB,CAC1D,MAAW,CACVgiB,EAAG,UAAU,QAAUhiB,CACxB,MAEDgiB,EAAG,UAAU,QAAUhiB,EAGzB,SAASA,GAAW,CAClB,OAAQ,KAAK,IAAM,UAAY,SAAW,KAAK,SAAS,EAAE,EAAI,GAC/D,CAgCD,IAAI3T,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,2BACJ,EAEMs2B,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CACtB,EAEMC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAChE,EAEEZ,EAAG,UAAU,SAAW,SAAmBz6E,EAAMgmD,EAAS,CACxDhmD,EAAOA,GAAQ,GACfgmD,EAAUA,EAAU,GAAK,EAEzB,IAAI37D,GACJ,GAAI2V,IAAS,IAAMA,IAAS,MAAO,CACjC3V,GAAM,GAGN,QAFI+iD,GAAM,EACNxH,GAAQ,EACHjkD,GAAI,EAAGA,GAAI,KAAK,OAAQA,KAAK,CACpC,IAAI46B,GAAI,KAAK,MAAM56B,EAAC,EAChBu5F,KAAU3+D,IAAK6wB,GAAOxH,IAAS,UAAU,SAAS,EAAE,EACxDA,GAASrpB,KAAO,GAAK6wB,GAAQ,SAC7BA,IAAO,EACHA,IAAO,KACTA,IAAO,GACPzrD,MAEEikD,KAAU,GAAKjkD,KAAM,KAAK,OAAS,EACrC0I,GAAMy6D,EAAM,EAAIo2B,GAAK,MAAM,EAAIA,GAAO7wF,GAEtCA,GAAM6wF,GAAO7wF,EAEhB,CAID,IAHIu7C,KAAU,IACZv7C,GAAMu7C,GAAM,SAAS,EAAE,EAAIv7C,IAEtBA,GAAI,OAAS27D,IAAY,GAC9B37D,GAAM,IAAMA,GAEd,OAAI,KAAK,WAAa,IACpBA,GAAM,IAAMA,IAEPA,EACR,CAED,GAAI2V,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAIs7E,EAAYF,EAAWp7E,CAAI,EAE3Bu7E,GAAYF,EAAWr7E,CAAI,EAC/B3V,GAAM,GACN,IAAInG,GAAI,KAAK,QAEb,IADAA,GAAE,SAAW,EACN,CAACA,GAAE,UAAU,CAClB,IAAImR,GAAInR,GAAE,MAAMq3F,EAAS,EAAE,SAASv7E,CAAI,EACxC9b,GAAIA,GAAE,MAAMq3F,EAAS,EAEhBr3F,GAAE,SAGLmG,GAAMgL,GAAIhL,GAFVA,GAAMy6D,EAAMw2B,EAAYjmF,GAAE,MAAM,EAAIA,GAAIhL,EAI3C,CAID,IAHI,KAAK,WACPA,GAAM,IAAMA,IAEPA,GAAI,OAAS27D,IAAY,GAC9B37D,GAAM,IAAMA,GAEd,OAAI,KAAK,WAAa,IACpBA,GAAM,IAAMA,IAEPA,EACR,CAEDkpF,EAAO,GAAO,iCAAiC,CACnD,EAEEkH,EAAG,UAAU,SAAW,UAAqB,CAC3C,IAAIrwF,EAAM,KAAK,MAAM,CAAC,EACtB,OAAI,KAAK,SAAW,EAClBA,GAAO,KAAK,MAAM,CAAC,EAAI,SACd,KAAK,SAAW,GAAK,KAAK,MAAM,CAAC,IAAM,EAEhDA,GAAO,iBAAoB,KAAK,MAAM,CAAC,EAAI,SAClC,KAAK,OAAS,GACvBmpF,EAAO,GAAO,4CAA4C,EAEpD,KAAK,WAAa,EAAK,CAACnpF,EAAMA,CAC1C,EAEEqwF,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAO,KAAK,SAAS,GAAI,CAAC,CAC9B,EAEMj2F,IACFi2F,EAAG,UAAU,SAAW,SAAmBC,EAAQz1F,EAAQ,CACzD,OAAO,KAAK,YAAYT,EAAQk2F,EAAQz1F,CAAM,CACpD,GAGEw1F,EAAG,UAAU,QAAU,SAAkBC,EAAQz1F,EAAQ,CACvD,OAAO,KAAK,YAAY,MAAOy1F,EAAQz1F,CAAM,CACjD,EAEE,IAAIujG,EAAW,SAAmBhN,EAAWz1F,EAAM,CACjD,OAAIy1F,EAAU,YACLA,EAAU,YAAYz1F,CAAI,EAE5B,IAAIy1F,EAAUz1F,CAAI,CAC7B,EAEE00F,EAAG,UAAU,YAAc,SAAsBe,EAAWd,EAAQz1F,GAAQ,CAC1E,KAAK,OAAM,EAEX,IAAI/C,GAAa,KAAK,aAClBu5F,GAAYx2F,IAAU,KAAK,IAAI,EAAG/C,EAAU,EAChDqxF,EAAOrxF,IAAcu5F,GAAW,uCAAuC,EACvElI,EAAOkI,GAAY,EAAG,6BAA6B,EAEnD,IAAIhyF,GAAM++F,EAAShN,EAAWC,EAAS,EACnC7kF,GAAU8jF,IAAW,KAAO,KAAO,KACvC,YAAK,eAAiB9jF,EAAO,EAAEnN,GAAKvH,EAAU,EACvCuH,EACX,EAEEgxF,EAAG,UAAU,eAAiB,SAAyBhxF,EAAKvH,EAAY,CAItE,QAHIu/B,GAAW,EACXmkB,GAAQ,EAEHjkD,GAAI,EAAGwmD,GAAQ,EAAGxmD,GAAI,KAAK,OAAQA,KAAK,CAC/C,IAAIu5F,GAAQ,KAAK,MAAMv5F,EAAC,GAAKwmD,GAASvC,GAEtCn8C,EAAIg4B,IAAU,EAAIy5D,GAAO,IACrBz5D,GAAWh4B,EAAI,SACjBA,EAAIg4B,IAAU,EAAKy5D,IAAQ,EAAK,KAE9Bz5D,GAAWh4B,EAAI,SACjBA,EAAIg4B,IAAU,EAAKy5D,IAAQ,GAAM,KAG/B/yC,KAAU,GACR1mB,GAAWh4B,EAAI,SACjBA,EAAIg4B,IAAU,EAAKy5D,IAAQ,GAAM,KAEnCt1C,GAAQ,EACRuC,GAAQ,IAERvC,GAAQs1C,KAAS,GACjB/yC,IAAS,EAEZ,CAED,GAAI1mB,GAAWh4B,EAAI,OAGjB,IAFAA,EAAIg4B,IAAU,EAAImkB,GAEXnkB,GAAWh4B,EAAI,QACpBA,EAAIg4B,IAAU,EAAI,CAG1B,EAEEg5D,EAAG,UAAU,eAAiB,SAAyBhxF,EAAKvH,EAAY,CAItE,QAHIu/B,GAAWh4B,EAAI,OAAS,EACxBm8C,GAAQ,EAEHjkD,GAAI,EAAGwmD,GAAQ,EAAGxmD,GAAI,KAAK,OAAQA,KAAK,CAC/C,IAAIu5F,GAAQ,KAAK,MAAMv5F,EAAC,GAAKwmD,GAASvC,GAEtCn8C,EAAIg4B,IAAU,EAAIy5D,GAAO,IACrBz5D,IAAY,IACdh4B,EAAIg4B,IAAU,EAAKy5D,IAAQ,EAAK,KAE9Bz5D,IAAY,IACdh4B,EAAIg4B,IAAU,EAAKy5D,IAAQ,GAAM,KAG/B/yC,KAAU,GACR1mB,IAAY,IACdh4B,EAAIg4B,IAAU,EAAKy5D,IAAQ,GAAM,KAEnCt1C,GAAQ,EACRuC,GAAQ,IAERvC,GAAQs1C,KAAS,GACjB/yC,IAAS,EAEZ,CAED,GAAI1mB,IAAY,EAGd,IAFAh4B,EAAIg4B,IAAU,EAAImkB,GAEXnkB,IAAY,GACjBh4B,EAAIg4B,IAAU,EAAI,CAG1B,EAEM,KAAK,MACPg5D,EAAG,UAAU,WAAa,SAAqBl+D,EAAG,CAChD,MAAO,IAAK,KAAK,MAAMA,CAAC,CAC9B,EAEIk+D,EAAG,UAAU,WAAa,SAAqBl+D,EAAG,CAChD,IAAIrZ,EAAIqZ,EACJlnB,GAAI,EACR,OAAI6N,GAAK,OACP7N,IAAK,GACL6N,KAAO,IAELA,GAAK,KACP7N,IAAK,EACL6N,KAAO,GAELA,GAAK,IACP7N,IAAK,EACL6N,KAAO,GAELA,GAAK,IACP7N,IAAK,EACL6N,KAAO,GAEF7N,GAAI6N,CACjB,EAGEu3E,EAAG,UAAU,UAAY,SAAoBl+D,EAAG,CAE9C,GAAIA,IAAM,EAAG,MAAO,IAEpB,IAAIrZ,EAAIqZ,EACJlnB,GAAI,EACR,OAAK6N,EAAI,OACP7N,IAAK,GACL6N,KAAO,IAEJA,EAAI,MACP7N,IAAK,EACL6N,KAAO,GAEJA,EAAI,KACP7N,IAAK,EACL6N,KAAO,GAEJA,EAAI,IACP7N,IAAK,EACL6N,KAAO,GAEJA,EAAI,GACP7N,KAEKA,EACX,EAGEolF,EAAG,UAAU,UAAY,UAAsB,CAC7C,IAAIl+D,EAAI,KAAK,MAAM,KAAK,OAAS,CAAC,EAC9BpxB,EAAK,KAAK,WAAWoxB,CAAC,EAC1B,OAAQ,KAAK,OAAS,GAAK,GAAKpxB,CACpC,EAEE,SAASwwF,EAAY/4F,EAAK,CAGxB,QAFI25B,EAAI,IAAI,MAAM35B,EAAI,UAAW,GAExByyF,EAAM,EAAGA,EAAM94D,EAAE,OAAQ84D,IAAO,CACvC,IAAIjoC,GAAOioC,EAAM,GAAM,EACnBuG,GAAOvG,EAAM,GAEjB94D,EAAE84D,CAAG,EAAKzyF,EAAI,MAAMwqD,EAAG,IAAMwuC,GAAQ,CACtC,CAED,OAAOr/D,CACR,CAGDk+D,EAAG,UAAU,SAAW,UAAqB,CAC3C,GAAI,KAAK,SAAU,MAAO,GAG1B,QADIplF,EAAI,EACC1T,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIiE,GAAI,KAAK,UAAU,KAAK,MAAMjE,CAAC,CAAC,EAEpC,GADA0T,GAAKzP,GACDA,KAAM,GAAI,KACf,CACD,OAAOyP,CACX,EAEEolF,EAAG,UAAU,WAAa,UAAuB,CAC/C,OAAO,KAAK,KAAK,KAAK,UAAW,EAAG,CAAC,CACzC,EAEEA,EAAG,UAAU,OAAS,SAAiBz+D,EAAO,CAC5C,OAAI,KAAK,WAAa,EACb,KAAK,MAAM,MAAMA,CAAK,EAAE,MAAM,CAAC,EAEjC,KAAK,OAChB,EAEEy+D,EAAG,UAAU,SAAW,SAAmBz+D,EAAO,CAChD,OAAI,KAAK,MAAMA,EAAQ,CAAC,EACf,KAAK,KAAKA,CAAK,EAAE,MAAM,CAAC,EAAE,OAE5B,KAAK,OAChB,EAEEy+D,EAAG,UAAU,MAAQ,UAAkB,CACrC,OAAO,KAAK,WAAa,CAC7B,EAGEA,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,QAAQ,MACxB,EAEEA,EAAG,UAAU,KAAO,UAAiB,CACnC,OAAK,KAAK,WACR,KAAK,UAAY,GAGZ,IACX,EAGEA,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,KAAO,KAAK,OAASA,EAAI,QACvB,KAAK,MAAM,KAAK,QAAQ,EAAI,EAG9B,QAASjB,EAAI,EAAGA,EAAIiB,EAAI,OAAQjB,IAC9B,KAAK,MAAMA,CAAC,EAAI,KAAK,MAAMA,CAAC,EAAIiB,EAAI,MAAMjB,CAAC,EAG7C,OAAO,KAAK,QAChB,EAEE84F,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAA2wF,GAAQ,KAAK,SAAW3wF,EAAI,YAAc,CAAC,EACpC,KAAK,KAAKA,CAAG,CACxB,EAGE63F,EAAG,UAAU,GAAK,SAAa73F,EAAK,CAClC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAO,EAAC,IAAIA,CAAG,EAClDA,EAAI,MAAK,EAAG,IAAI,IAAI,CAC/B,EAEE63F,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAO,EAAC,KAAKA,CAAG,EACnDA,EAAI,MAAK,EAAG,KAAK,IAAI,CAChC,EAGE63F,EAAG,UAAU,MAAQ,SAAgB73F,EAAK,CAExC,IAAIgD,EACA,KAAK,OAAShD,EAAI,OACpBgD,EAAIhD,EAEJgD,EAAI,KAGN,QAASjE,GAAI,EAAGA,GAAIiE,EAAE,OAAQjE,KAC5B,KAAK,MAAMA,EAAC,EAAI,KAAK,MAAMA,EAAC,EAAIiB,EAAI,MAAMjB,EAAC,EAG7C,YAAK,OAASiE,EAAE,OAET,KAAK,QAChB,EAEE60F,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAA2wF,GAAQ,KAAK,SAAW3wF,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACzB,EAGE63F,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAO,EAAC,KAAKA,CAAG,EACnDA,EAAI,MAAK,EAAG,KAAK,IAAI,CAChC,EAEE63F,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAO,EAAC,MAAMA,CAAG,EACpDA,EAAI,MAAK,EAAG,MAAM,IAAI,CACjC,EAGE63F,EAAG,UAAU,MAAQ,SAAgB73F,EAAK,CAExC,IAAIgE,EACAhB,GACA,KAAK,OAAShD,EAAI,QACpBgE,EAAI,KACJhB,GAAIhD,IAEJgE,EAAIhE,EACJgD,GAAI,MAGN,QAASjE,GAAI,EAAGA,GAAIiE,GAAE,OAAQjE,KAC5B,KAAK,MAAMA,EAAC,EAAIiF,EAAE,MAAMjF,EAAC,EAAIiE,GAAE,MAAMjE,EAAC,EAGxC,GAAI,OAASiF,EACX,KAAOjF,GAAIiF,EAAE,OAAQjF,KACnB,KAAK,MAAMA,EAAC,EAAIiF,EAAE,MAAMjF,EAAC,EAI7B,YAAK,OAASiF,EAAE,OAET,KAAK,QAChB,EAEE6zF,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAA2wF,GAAQ,KAAK,SAAW3wF,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACzB,EAGE63F,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAO,EAAC,KAAKA,CAAG,EACnDA,EAAI,MAAK,EAAG,KAAK,IAAI,CAChC,EAEE63F,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAO,EAAC,MAAMA,CAAG,EACpDA,EAAI,MAAK,EAAG,MAAM,IAAI,CACjC,EAGE63F,EAAG,UAAU,MAAQ,SAAgBz+D,EAAO,CAC1Cu3D,EAAO,OAAOv3D,GAAU,UAAYA,GAAS,CAAC,EAE9C,IAAI6/D,EAAc,KAAK,KAAK7/D,EAAQ,EAAE,EAAI,EACtC8/D,GAAW9/D,EAAQ,GAGvB,KAAK,QAAQ6/D,CAAW,EAEpBC,GAAW,GACbD,IAIF,QAASl6F,GAAI,EAAGA,GAAIk6F,EAAal6F,KAC/B,KAAK,MAAMA,EAAC,EAAI,CAAC,KAAK,MAAMA,EAAC,EAAI,SAInC,OAAIm6F,GAAW,IACb,KAAK,MAAMn6F,EAAC,EAAI,CAAC,KAAK,MAAMA,EAAC,EAAK,UAAc,GAAKm6F,IAIhD,KAAK,QAChB,EAEErB,EAAG,UAAU,KAAO,SAAez+D,EAAO,CACxC,OAAO,KAAK,MAAK,EAAG,MAAMA,CAAK,CACnC,EAGEy+D,EAAG,UAAU,KAAO,SAAepF,EAAKhtF,EAAK,CAC3CkrF,EAAO,OAAO8B,GAAQ,UAAYA,GAAO,CAAC,EAE1C,IAAIjoC,GAAOioC,EAAM,GAAM,EACnBuG,GAAOvG,EAAM,GAEjB,YAAK,QAAQjoC,GAAM,CAAC,EAEhB/kD,EACF,KAAK,MAAM+kD,EAAG,EAAI,KAAK,MAAMA,EAAG,EAAK,GAAKwuC,GAE1C,KAAK,MAAMxuC,EAAG,EAAI,KAAK,MAAMA,EAAG,EAAI,EAAE,GAAKwuC,IAGtC,KAAK,QAChB,EAGEnB,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,IAAIyS,EAGJ,GAAI,KAAK,WAAa,GAAKzS,EAAI,WAAa,EAC1C,YAAK,SAAW,EAChByS,EAAI,KAAK,KAAKzS,CAAG,EACjB,KAAK,UAAY,EACV,KAAK,YAGP,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EACjD,OAAAA,EAAI,SAAW,EACfyS,EAAI,KAAK,KAAKzS,CAAG,EACjBA,EAAI,SAAW,EACRyS,EAAE,YAIX,IAAIzO,GAAGhB,GACH,KAAK,OAAShD,EAAI,QACpBgE,GAAI,KACJhB,GAAIhD,IAEJgE,GAAIhE,EACJgD,GAAI,MAIN,QADIggD,GAAQ,EACHjkD,GAAI,EAAGA,GAAIiE,GAAE,OAAQjE,KAC5B0T,GAAKzO,GAAE,MAAMjF,EAAC,EAAI,IAAMiE,GAAE,MAAMjE,EAAC,EAAI,GAAKikD,GAC1C,KAAK,MAAMjkD,EAAC,EAAI0T,EAAI,SACpBuwC,GAAQvwC,IAAM,GAEhB,KAAOuwC,KAAU,GAAKjkD,GAAIiF,GAAE,OAAQjF,KAClC0T,GAAKzO,GAAE,MAAMjF,EAAC,EAAI,GAAKikD,GACvB,KAAK,MAAMjkD,EAAC,EAAI0T,EAAI,SACpBuwC,GAAQvwC,IAAM,GAIhB,GADA,KAAK,OAASzO,GAAE,OACZg/C,KAAU,EACZ,KAAK,MAAM,KAAK,MAAM,EAAIA,GAC1B,KAAK,iBAEIh/C,KAAM,KACf,KAAOjF,GAAIiF,GAAE,OAAQjF,KACnB,KAAK,MAAMA,EAAC,EAAIiF,GAAE,MAAMjF,EAAC,EAI7B,OAAO,IACX,EAGE84F,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,IAAI6G,EACJ,OAAI7G,EAAI,WAAa,GAAK,KAAK,WAAa,GAC1CA,EAAI,SAAW,EACf6G,EAAM,KAAK,IAAI7G,CAAG,EAClBA,EAAI,UAAY,EACT6G,GACE7G,EAAI,WAAa,GAAK,KAAK,WAAa,GACjD,KAAK,SAAW,EAChB6G,EAAM7G,EAAI,IAAI,IAAI,EAClB,KAAK,SAAW,EACT6G,GAGL,KAAK,OAAS7G,EAAI,OAAe,KAAK,MAAO,EAAC,KAAKA,CAAG,EAEnDA,EAAI,MAAK,EAAG,KAAK,IAAI,CAChC,EAGE63F,EAAG,UAAU,KAAO,SAAe73F,EAAK,CAEtC,GAAIA,EAAI,WAAa,EAAG,CACtBA,EAAI,SAAW,EACf,IAAIyS,EAAI,KAAK,KAAKzS,CAAG,EACrB,OAAAA,EAAI,SAAW,EACRyS,EAAE,WAGf,SAAe,KAAK,WAAa,EAC3B,YAAK,SAAW,EAChB,KAAK,KAAKzS,CAAG,EACb,KAAK,SAAW,EACT,KAAK,YAId,IAAIm5F,GAAM,KAAK,IAAIn5F,CAAG,EAGtB,GAAIm5F,KAAQ,EACV,YAAK,SAAW,EAChB,KAAK,OAAS,EACd,KAAK,MAAM,CAAC,EAAI,EACT,KAIT,IAAIn1F,GAAGhB,GACHm2F,GAAM,GACRn1F,GAAI,KACJhB,GAAIhD,IAEJgE,GAAIhE,EACJgD,GAAI,MAIN,QADIggD,GAAQ,EACHjkD,GAAI,EAAGA,GAAIiE,GAAE,OAAQjE,KAC5B0T,GAAKzO,GAAE,MAAMjF,EAAC,EAAI,IAAMiE,GAAE,MAAMjE,EAAC,EAAI,GAAKikD,GAC1CA,GAAQvwC,GAAK,GACb,KAAK,MAAM1T,EAAC,EAAI0T,EAAI,SAEtB,KAAOuwC,KAAU,GAAKjkD,GAAIiF,GAAE,OAAQjF,KAClC0T,GAAKzO,GAAE,MAAMjF,EAAC,EAAI,GAAKikD,GACvBA,GAAQvwC,GAAK,GACb,KAAK,MAAM1T,EAAC,EAAI0T,EAAI,SAItB,GAAIuwC,KAAU,GAAKjkD,GAAIiF,GAAE,QAAUA,KAAM,KACvC,KAAOjF,GAAIiF,GAAE,OAAQjF,KACnB,KAAK,MAAMA,EAAC,EAAIiF,GAAE,MAAMjF,EAAC,EAI7B,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,EAAC,EAEjCiF,KAAM,OACR,KAAK,SAAW,GAGX,KAAK,QAChB,EAGE6zF,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAO,KAAK,MAAK,EAAG,KAAKA,CAAG,CAChC,EAEE,SAASo5F,EAAYnnF,EAAMjS,EAAKyH,EAAK,CACnCA,EAAI,SAAWzH,EAAI,SAAWiS,EAAK,SACnC,IAAIpT,GAAOoT,EAAK,OAASjS,EAAI,OAAU,EACvCyH,EAAI,OAAS5I,GACbA,GAAOA,GAAM,EAAK,EAGlB,IAAImF,GAAIiO,EAAK,MAAM,CAAC,EAAI,EACpBjP,GAAIhD,EAAI,MAAM,CAAC,EAAI,EACnByS,GAAIzO,GAAIhB,GAERsF,GAAKmK,GAAI,SACTuwC,GAASvwC,GAAI,SAAa,EAC9BhL,EAAI,MAAM,CAAC,EAAIa,GAEf,QAAS2tB,EAAI,EAAGA,EAAIp3B,GAAKo3B,IAAK,CAM5B,QAHIojE,GAASr2C,KAAU,GACnBs2C,GAAQt2C,GAAQ,SAChBu2C,GAAO,KAAK,IAAItjE,EAAGj2B,EAAI,OAAS,CAAC,EAC5BiG,GAAI,KAAK,IAAI,EAAGgwB,EAAIhkB,EAAK,OAAS,CAAC,EAAGhM,IAAKszF,GAAMtzF,KAAK,CAC7D,IAAIlH,GAAKk3B,EAAIhwB,GAAK,EAClBjC,GAAIiO,EAAK,MAAMlT,EAAC,EAAI,EACpBiE,GAAIhD,EAAI,MAAMiG,EAAC,EAAI,EACnBwM,GAAIzO,GAAIhB,GAAIs2F,GACZD,IAAW5mF,GAAI,SAAa,EAC5B6mF,GAAQ7mF,GAAI,QACb,CACDhL,EAAI,MAAMwuB,CAAC,EAAIqjE,GAAQ,EACvBt2C,GAAQq2C,GAAS,CAClB,CACD,OAAIr2C,KAAU,EACZv7C,EAAI,MAAMwuB,CAAC,EAAI+sB,GAAQ,EAEvBv7C,EAAI,SAGCA,EAAI,QACZ,CAKD,IAAI+xF,EAAc,SAAsBvnF,EAAMjS,EAAKyH,GAAK,CACtD,IAAIzD,GAAIiO,EAAK,MACTjP,GAAIhD,EAAI,MACRm2B,GAAI1uB,GAAI,MACRnG,GAAI,EACJgH,GACA+7D,EACA97D,GACAkxF,GAAKz1F,GAAE,CAAC,EAAI,EACZ01F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbt/C,GAAKn2C,GAAE,CAAC,EAAI,EACZ41F,GAAMz/C,GAAK,KACX0/C,GAAM1/C,KAAO,GACbC,GAAKp2C,GAAE,CAAC,EAAI,EACZ81F,GAAM1/C,GAAK,KACX2/C,GAAM3/C,KAAO,GACbC,GAAKr2C,GAAE,CAAC,EAAI,EACZg2F,GAAM3/C,GAAK,KACX4/C,GAAM5/C,KAAO,GACbC,GAAKt2C,GAAE,CAAC,EAAI,EACZk2F,GAAM5/C,GAAK,KACX6/C,GAAM7/C,KAAO,GACbC,GAAKv2C,GAAE,CAAC,EAAI,EACZo2F,GAAM7/C,GAAK,KACX8/C,GAAM9/C,KAAO,GACb+/C,GAAKt2F,GAAE,CAAC,EAAI,EACZu2F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKz2F,GAAE,CAAC,EAAI,EACZ02F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK52F,GAAE,CAAC,EAAI,EACZ62F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK/2F,GAAE,CAAC,EAAI,EACZg3F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKl4F,GAAE,CAAC,EAAI,EACZm4F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbxwC,GAAK1nD,GAAE,CAAC,EAAI,EACZq4F,GAAM3wC,GAAK,KACX4wC,GAAM5wC,KAAO,GACbC,GAAK3nD,GAAE,CAAC,EAAI,EACZu4F,GAAM5wC,GAAK,KACX6wC,GAAM7wC,KAAO,GACb8wC,GAAKz4F,GAAE,CAAC,EAAI,EACZ04F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK54F,GAAE,CAAC,EAAI,EACZ64F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK/4F,GAAE,CAAC,EAAI,EACZg5F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKl5F,GAAE,CAAC,EAAI,EACZm5F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKr5F,GAAE,CAAC,EAAI,EACZs5F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKx5F,GAAE,CAAC,EAAI,EACZy5F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK35F,GAAE,CAAC,EAAI,EACZ45F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GAEjBl1F,GAAI,SAAWwK,EAAK,SAAWjS,EAAI,SACnCyH,GAAI,OAAS,GAEba,GAAK,KAAK,KAAKoxF,GAAKyB,EAAG,EACvB92B,EAAM,KAAK,KAAKq1B,GAAK0B,EAAG,EACxB/2B,EAAOA,EAAM,KAAK,KAAKs1B,GAAKwB,EAAG,EAAK,EACpC5yF,GAAK,KAAK,KAAKoxF,GAAKyB,EAAG,EACvB,IAAI0B,IAAQx7F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACrD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAMy4B,KAAO,IAAO,EAChDA,IAAM,SAENx0F,GAAK,KAAK,KAAKsxF,GAAKuB,EAAG,EACvB92B,EAAM,KAAK,KAAKu1B,GAAKwB,EAAG,EACxB/2B,EAAOA,EAAM,KAAK,KAAKw1B,GAAKsB,EAAG,EAAK,EACpC5yF,GAAK,KAAK,KAAKsxF,GAAKuB,EAAG,EACvB9yF,GAAMA,GAAK,KAAK,KAAKoxF,GAAK2B,EAAG,EAAK,EAClCh3B,EAAOA,EAAM,KAAK,KAAKq1B,GAAK4B,EAAG,EAAK,EACpCj3B,EAAOA,EAAM,KAAK,KAAKs1B,GAAK0B,EAAG,EAAK,EACpC9yF,GAAMA,GAAK,KAAK,KAAKoxF,GAAK2B,EAAG,EAAK,EAClC,IAAIyB,IAAQz7F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACrD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAM04B,KAAO,IAAO,EAChDA,IAAM,SAENz0F,GAAK,KAAK,KAAKwxF,GAAKqB,EAAG,EACvB92B,EAAM,KAAK,KAAKy1B,GAAKsB,EAAG,EACxB/2B,EAAOA,EAAM,KAAK,KAAK01B,GAAKoB,EAAG,EAAK,EACpC5yF,GAAK,KAAK,KAAKwxF,GAAKqB,EAAG,EACvB9yF,GAAMA,GAAK,KAAK,KAAKsxF,GAAKyB,EAAG,EAAK,EAClCh3B,EAAOA,EAAM,KAAK,KAAKu1B,GAAK0B,EAAG,EAAK,EACpCj3B,EAAOA,EAAM,KAAK,KAAKw1B,GAAKwB,EAAG,EAAK,EACpC9yF,GAAMA,GAAK,KAAK,KAAKsxF,GAAKyB,EAAG,EAAK,EAClChzF,GAAMA,GAAK,KAAK,KAAKoxF,GAAK6B,EAAG,EAAK,EAClCl3B,EAAOA,EAAM,KAAK,KAAKq1B,GAAK8B,EAAG,EAAK,EACpCn3B,EAAOA,EAAM,KAAK,KAAKs1B,GAAK4B,EAAG,EAAK,EACpChzF,GAAMA,GAAK,KAAK,KAAKoxF,GAAK6B,EAAG,EAAK,EAClC,IAAIwB,IAAQ17F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACrD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAM24B,KAAO,IAAO,EAChDA,IAAM,SAEN10F,GAAK,KAAK,KAAK0xF,GAAKmB,EAAG,EACvB92B,EAAM,KAAK,KAAK21B,GAAKoB,EAAG,EACxB/2B,EAAOA,EAAM,KAAK,KAAK41B,GAAKkB,EAAG,EAAK,EACpC5yF,GAAK,KAAK,KAAK0xF,GAAKmB,EAAG,EACvB9yF,GAAMA,GAAK,KAAK,KAAKwxF,GAAKuB,EAAG,EAAK,EAClCh3B,EAAOA,EAAM,KAAK,KAAKy1B,GAAKwB,EAAG,EAAK,EACpCj3B,EAAOA,EAAM,KAAK,KAAK01B,GAAKsB,EAAG,EAAK,EACpC9yF,GAAMA,GAAK,KAAK,KAAKwxF,GAAKuB,EAAG,EAAK,EAClChzF,GAAMA,GAAK,KAAK,KAAKsxF,GAAK2B,EAAG,EAAK,EAClCl3B,EAAOA,EAAM,KAAK,KAAKu1B,GAAK4B,EAAG,EAAK,EACpCn3B,EAAOA,EAAM,KAAK,KAAKw1B,GAAK0B,EAAG,EAAK,EACpChzF,GAAMA,GAAK,KAAK,KAAKsxF,GAAK2B,EAAG,EAAK,EAClClzF,GAAMA,GAAK,KAAK,KAAKoxF,GAAKgC,EAAG,EAAK,EAClCr3B,EAAOA,EAAM,KAAK,KAAKq1B,GAAKiC,EAAG,EAAK,EACpCt3B,EAAOA,EAAM,KAAK,KAAKs1B,GAAK+B,EAAG,EAAK,EACpCnzF,GAAMA,GAAK,KAAK,KAAKoxF,GAAKgC,EAAG,EAAK,EAClC,IAAIsB,IAAQ37F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACrD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAM44B,KAAO,IAAO,EAChDA,IAAM,SAEN30F,GAAK,KAAK,KAAK4xF,GAAKiB,EAAG,EACvB92B,EAAM,KAAK,KAAK61B,GAAKkB,EAAG,EACxB/2B,EAAOA,EAAM,KAAK,KAAK81B,GAAKgB,EAAG,EAAK,EACpC5yF,GAAK,KAAK,KAAK4xF,GAAKiB,EAAG,EACvB9yF,GAAMA,GAAK,KAAK,KAAK0xF,GAAKqB,EAAG,EAAK,EAClCh3B,EAAOA,EAAM,KAAK,KAAK21B,GAAKsB,EAAG,EAAK,EACpCj3B,EAAOA,EAAM,KAAK,KAAK41B,GAAKoB,EAAG,EAAK,EACpC9yF,GAAMA,GAAK,KAAK,KAAK0xF,GAAKqB,EAAG,EAAK,EAClChzF,GAAMA,GAAK,KAAK,KAAKwxF,GAAKyB,EAAG,EAAK,EAClCl3B,EAAOA,EAAM,KAAK,KAAKy1B,GAAK0B,EAAG,EAAK,EACpCn3B,EAAOA,EAAM,KAAK,KAAK01B,GAAKwB,EAAG,EAAK,EACpChzF,GAAMA,GAAK,KAAK,KAAKwxF,GAAKyB,EAAG,EAAK,EAClClzF,GAAMA,GAAK,KAAK,KAAKsxF,GAAK8B,EAAG,EAAK,EAClCr3B,EAAOA,EAAM,KAAK,KAAKu1B,GAAK+B,EAAG,EAAK,EACpCt3B,EAAOA,EAAM,KAAK,KAAKw1B,GAAK6B,EAAG,EAAK,EACpCnzF,GAAMA,GAAK,KAAK,KAAKsxF,GAAK8B,EAAG,EAAK,EAClCrzF,GAAMA,GAAK,KAAK,KAAKoxF,GAAKmC,EAAG,EAAK,EAClCx3B,EAAOA,EAAM,KAAK,KAAKq1B,GAAKoC,EAAG,EAAK,EACpCz3B,EAAOA,EAAM,KAAK,KAAKs1B,GAAKkC,EAAG,EAAK,EACpCtzF,GAAMA,GAAK,KAAK,KAAKoxF,GAAKmC,EAAG,EAAK,EAClC,IAAIoB,IAAQ57F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACrD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAM64B,KAAO,IAAO,EAChDA,IAAM,SAEN50F,GAAK,KAAK,KAAK8xF,GAAKe,EAAG,EACvB92B,EAAM,KAAK,KAAK+1B,GAAKgB,EAAG,EACxB/2B,EAAOA,EAAM,KAAK,KAAKg2B,GAAKc,EAAG,EAAK,EACpC5yF,GAAK,KAAK,KAAK8xF,GAAKe,EAAG,EACvB9yF,GAAMA,GAAK,KAAK,KAAK4xF,GAAKmB,EAAG,EAAK,EAClCh3B,EAAOA,EAAM,KAAK,KAAK61B,GAAKoB,EAAG,EAAK,EACpCj3B,EAAOA,EAAM,KAAK,KAAK81B,GAAKkB,EAAG,EAAK,EACpC9yF,GAAMA,GAAK,KAAK,KAAK4xF,GAAKmB,EAAG,EAAK,EAClChzF,GAAMA,GAAK,KAAK,KAAK0xF,GAAKuB,EAAG,EAAK,EAClCl3B,EAAOA,EAAM,KAAK,KAAK21B,GAAKwB,EAAG,EAAK,EACpCn3B,EAAOA,EAAM,KAAK,KAAK41B,GAAKsB,EAAG,EAAK,EACpChzF,GAAMA,GAAK,KAAK,KAAK0xF,GAAKuB,EAAG,EAAK,EAClClzF,GAAMA,GAAK,KAAK,KAAKwxF,GAAK4B,EAAG,EAAK,EAClCr3B,EAAOA,EAAM,KAAK,KAAKy1B,GAAK6B,EAAG,EAAK,EACpCt3B,EAAOA,EAAM,KAAK,KAAK01B,GAAK2B,EAAG,EAAK,EACpCnzF,GAAMA,GAAK,KAAK,KAAKwxF,GAAK4B,EAAG,EAAK,EAClCrzF,GAAMA,GAAK,KAAK,KAAKsxF,GAAKiC,EAAG,EAAK,EAClCx3B,EAAOA,EAAM,KAAK,KAAKu1B,GAAKkC,EAAG,EAAK,EACpCz3B,EAAOA,EAAM,KAAK,KAAKw1B,GAAKgC,EAAG,EAAK,EACpCtzF,GAAMA,GAAK,KAAK,KAAKsxF,GAAKiC,EAAG,EAAK,EAClCxzF,GAAMA,GAAK,KAAK,KAAKoxF,GAAKsC,EAAG,EAAK,EAClC33B,EAAOA,EAAM,KAAK,KAAKq1B,GAAKuC,EAAG,EAAK,EACpC53B,EAAOA,EAAM,KAAK,KAAKs1B,GAAKqC,EAAG,EAAK,EACpCzzF,GAAMA,GAAK,KAAK,KAAKoxF,GAAKsC,EAAG,EAAK,EAClC,IAAIkB,IAAQ77F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACrD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAM84B,KAAO,IAAO,EAChDA,IAAM,SAEN70F,GAAK,KAAK,KAAKiyF,GAAKY,EAAG,EACvB92B,EAAM,KAAK,KAAKk2B,GAAKa,EAAG,EACxB/2B,EAAOA,EAAM,KAAK,KAAKm2B,GAAKW,EAAG,EAAK,EACpC5yF,GAAK,KAAK,KAAKiyF,GAAKY,EAAG,EACvB9yF,GAAMA,GAAK,KAAK,KAAK8xF,GAAKiB,EAAG,EAAK,EAClCh3B,EAAOA,EAAM,KAAK,KAAK+1B,GAAKkB,EAAG,EAAK,EACpCj3B,EAAOA,EAAM,KAAK,KAAKg2B,GAAKgB,EAAG,EAAK,EACpC9yF,GAAMA,GAAK,KAAK,KAAK8xF,GAAKiB,EAAG,EAAK,EAClChzF,GAAMA,GAAK,KAAK,KAAK4xF,GAAKqB,EAAG,EAAK,EAClCl3B,EAAOA,EAAM,KAAK,KAAK61B,GAAKsB,EAAG,EAAK,EACpCn3B,EAAOA,EAAM,KAAK,KAAK81B,GAAKoB,EAAG,EAAK,EACpChzF,GAAMA,GAAK,KAAK,KAAK4xF,GAAKqB,EAAG,EAAK,EAClClzF,GAAMA,GAAK,KAAK,KAAK0xF,GAAK0B,EAAG,EAAK,EAClCr3B,EAAOA,EAAM,KAAK,KAAK21B,GAAK2B,EAAG,EAAK,EACpCt3B,EAAOA,EAAM,KAAK,KAAK41B,GAAKyB,EAAG,EAAK,EACpCnzF,GAAMA,GAAK,KAAK,KAAK0xF,GAAK0B,EAAG,EAAK,EAClCrzF,GAAMA,GAAK,KAAK,KAAKwxF,GAAK+B,EAAG,EAAK,EAClCx3B,EAAOA,EAAM,KAAK,KAAKy1B,GAAKgC,EAAG,EAAK,EACpCz3B,EAAOA,EAAM,KAAK,KAAK01B,GAAK8B,EAAG,EAAK,EACpCtzF,GAAMA,GAAK,KAAK,KAAKwxF,GAAK+B,EAAG,EAAK,EAClCxzF,GAAMA,GAAK,KAAK,KAAKsxF,GAAKoC,EAAG,EAAK,EAClC33B,EAAOA,EAAM,KAAK,KAAKu1B,GAAKqC,EAAG,EAAK,EACpC53B,EAAOA,EAAM,KAAK,KAAKw1B,GAAKmC,EAAG,EAAK,EACpCzzF,GAAMA,GAAK,KAAK,KAAKsxF,GAAKoC,EAAG,EAAK,EAClC3zF,GAAMA,GAAK,KAAK,KAAKoxF,GAAKyC,EAAG,EAAK,EAClC93B,EAAOA,EAAM,KAAK,KAAKq1B,GAAK0C,EAAG,EAAK,EACpC/3B,EAAOA,EAAM,KAAK,KAAKs1B,GAAKwC,EAAG,EAAK,EACpC5zF,GAAMA,GAAK,KAAK,KAAKoxF,GAAKyC,EAAG,EAAK,EAClC,IAAIgB,IAAQ97F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACrD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAM+4B,KAAO,IAAO,EAChDA,IAAM,SAEN90F,GAAK,KAAK,KAAKoyF,GAAKS,EAAG,EACvB92B,EAAM,KAAK,KAAKq2B,GAAKU,EAAG,EACxB/2B,EAAOA,EAAM,KAAK,KAAKs2B,GAAKQ,EAAG,EAAK,EACpC5yF,GAAK,KAAK,KAAKoyF,GAAKS,EAAG,EACvB9yF,GAAMA,GAAK,KAAK,KAAKiyF,GAAKc,EAAG,EAAK,EAClCh3B,EAAOA,EAAM,KAAK,KAAKk2B,GAAKe,EAAG,EAAK,EACpCj3B,EAAOA,EAAM,KAAK,KAAKm2B,GAAKa,EAAG,EAAK,EACpC9yF,GAAMA,GAAK,KAAK,KAAKiyF,GAAKc,EAAG,EAAK,EAClChzF,GAAMA,GAAK,KAAK,KAAK8xF,GAAKmB,EAAG,EAAK,EAClCl3B,EAAOA,EAAM,KAAK,KAAK+1B,GAAKoB,EAAG,EAAK,EACpCn3B,EAAOA,EAAM,KAAK,KAAKg2B,GAAKkB,EAAG,EAAK,EACpChzF,GAAMA,GAAK,KAAK,KAAK8xF,GAAKmB,EAAG,EAAK,EAClClzF,GAAMA,GAAK,KAAK,KAAK4xF,GAAKwB,EAAG,EAAK,EAClCr3B,EAAOA,EAAM,KAAK,KAAK61B,GAAKyB,EAAG,EAAK,EACpCt3B,EAAOA,EAAM,KAAK,KAAK81B,GAAKuB,EAAG,EAAK,EACpCnzF,GAAMA,GAAK,KAAK,KAAK4xF,GAAKwB,EAAG,EAAK,EAClCrzF,GAAMA,GAAK,KAAK,KAAK0xF,GAAK6B,EAAG,EAAK,EAClCx3B,EAAOA,EAAM,KAAK,KAAK21B,GAAK8B,EAAG,EAAK,EACpCz3B,EAAOA,EAAM,KAAK,KAAK41B,GAAK4B,EAAG,EAAK,EACpCtzF,GAAMA,GAAK,KAAK,KAAK0xF,GAAK6B,EAAG,EAAK,EAClCxzF,GAAMA,GAAK,KAAK,KAAKwxF,GAAKkC,EAAG,EAAK,EAClC33B,EAAOA,EAAM,KAAK,KAAKy1B,GAAKmC,EAAG,EAAK,EACpC53B,EAAOA,EAAM,KAAK,KAAK01B,GAAKiC,EAAG,EAAK,EACpCzzF,GAAMA,GAAK,KAAK,KAAKwxF,GAAKkC,EAAG,EAAK,EAClC3zF,GAAMA,GAAK,KAAK,KAAKsxF,GAAKuC,EAAG,EAAK,EAClC93B,EAAOA,EAAM,KAAK,KAAKu1B,GAAKwC,EAAG,EAAK,EACpC/3B,EAAOA,EAAM,KAAK,KAAKw1B,GAAKsC,EAAG,EAAK,EACpC5zF,GAAMA,GAAK,KAAK,KAAKsxF,GAAKuC,EAAG,EAAK,EAClC9zF,GAAMA,GAAK,KAAK,KAAKoxF,GAAK4C,EAAG,EAAK,EAClCj4B,EAAOA,EAAM,KAAK,KAAKq1B,GAAK6C,EAAG,EAAK,EACpCl4B,EAAOA,EAAM,KAAK,KAAKs1B,GAAK2C,EAAG,EAAK,EACpC/zF,GAAMA,GAAK,KAAK,KAAKoxF,GAAK4C,EAAG,EAAK,EAClC,IAAIc,IAAQ/7F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACrD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAMg5B,KAAO,IAAO,EAChDA,IAAM,SAEN/0F,GAAK,KAAK,KAAKuyF,GAAKM,EAAG,EACvB92B,EAAM,KAAK,KAAKw2B,GAAKO,EAAG,EACxB/2B,EAAOA,EAAM,KAAK,KAAKy2B,GAAKK,EAAG,EAAK,EACpC5yF,GAAK,KAAK,KAAKuyF,GAAKM,EAAG,EACvB9yF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKW,EAAG,EAAK,EAClCh3B,EAAOA,EAAM,KAAK,KAAKq2B,GAAKY,EAAG,EAAK,EACpCj3B,EAAOA,EAAM,KAAK,KAAKs2B,GAAKU,EAAG,EAAK,EACpC9yF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKW,EAAG,EAAK,EAClChzF,GAAMA,GAAK,KAAK,KAAKiyF,GAAKgB,EAAG,EAAK,EAClCl3B,EAAOA,EAAM,KAAK,KAAKk2B,GAAKiB,EAAG,EAAK,EACpCn3B,EAAOA,EAAM,KAAK,KAAKm2B,GAAKe,EAAG,EAAK,EACpChzF,GAAMA,GAAK,KAAK,KAAKiyF,GAAKgB,EAAG,EAAK,EAClClzF,GAAMA,GAAK,KAAK,KAAK8xF,GAAKsB,EAAG,EAAK,EAClCr3B,EAAOA,EAAM,KAAK,KAAK+1B,GAAKuB,EAAG,EAAK,EACpCt3B,EAAOA,EAAM,KAAK,KAAKg2B,GAAKqB,EAAG,EAAK,EACpCnzF,GAAMA,GAAK,KAAK,KAAK8xF,GAAKsB,EAAG,EAAK,EAClCrzF,GAAMA,GAAK,KAAK,KAAK4xF,GAAK2B,EAAG,EAAK,EAClCx3B,EAAOA,EAAM,KAAK,KAAK61B,GAAK4B,EAAG,EAAK,EACpCz3B,EAAOA,EAAM,KAAK,KAAK81B,GAAK0B,EAAG,EAAK,EACpCtzF,GAAMA,GAAK,KAAK,KAAK4xF,GAAK2B,EAAG,EAAK,EAClCxzF,GAAMA,GAAK,KAAK,KAAK0xF,GAAKgC,EAAG,EAAK,EAClC33B,EAAOA,EAAM,KAAK,KAAK21B,GAAKiC,EAAG,EAAK,EACpC53B,EAAOA,EAAM,KAAK,KAAK41B,GAAK+B,EAAG,EAAK,EACpCzzF,GAAMA,GAAK,KAAK,KAAK0xF,GAAKgC,EAAG,EAAK,EAClC3zF,GAAMA,GAAK,KAAK,KAAKwxF,GAAKqC,EAAG,EAAK,EAClC93B,EAAOA,EAAM,KAAK,KAAKy1B,GAAKsC,EAAG,EAAK,EACpC/3B,EAAOA,EAAM,KAAK,KAAK01B,GAAKoC,EAAG,EAAK,EACpC5zF,GAAMA,GAAK,KAAK,KAAKwxF,GAAKqC,EAAG,EAAK,EAClC9zF,GAAMA,GAAK,KAAK,KAAKsxF,GAAK0C,EAAG,EAAK,EAClCj4B,EAAOA,EAAM,KAAK,KAAKu1B,GAAK2C,EAAG,EAAK,EACpCl4B,EAAOA,EAAM,KAAK,KAAKw1B,GAAKyC,EAAG,EAAK,EACpC/zF,GAAMA,GAAK,KAAK,KAAKsxF,GAAK0C,EAAG,EAAK,EAClCj0F,GAAMA,GAAK,KAAK,KAAKoxF,GAAK+C,EAAG,EAAK,EAClCp4B,EAAOA,EAAM,KAAK,KAAKq1B,GAAKgD,EAAG,EAAK,EACpCr4B,EAAOA,EAAM,KAAK,KAAKs1B,GAAK8C,EAAG,EAAK,EACpCl0F,GAAMA,GAAK,KAAK,KAAKoxF,GAAK+C,EAAG,EAAK,EAClC,IAAIY,IAAQh8F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACrD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAMi5B,KAAO,IAAO,EAChDA,IAAM,SAENh1F,GAAK,KAAK,KAAK0yF,GAAKG,EAAG,EACvB92B,EAAM,KAAK,KAAK22B,GAAKI,EAAG,EACxB/2B,EAAOA,EAAM,KAAK,KAAK42B,GAAKE,EAAG,EAAK,EACpC5yF,GAAK,KAAK,KAAK0yF,GAAKG,EAAG,EACvB9yF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKQ,EAAG,EAAK,EAClCh3B,EAAOA,EAAM,KAAK,KAAKw2B,GAAKS,EAAG,EAAK,EACpCj3B,EAAOA,EAAM,KAAK,KAAKy2B,GAAKO,EAAG,EAAK,EACpC9yF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKQ,EAAG,EAAK,EAClChzF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKa,EAAG,EAAK,EAClCl3B,EAAOA,EAAM,KAAK,KAAKq2B,GAAKc,EAAG,EAAK,EACpCn3B,EAAOA,EAAM,KAAK,KAAKs2B,GAAKY,EAAG,EAAK,EACpChzF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKa,EAAG,EAAK,EAClClzF,GAAMA,GAAK,KAAK,KAAKiyF,GAAKmB,EAAG,EAAK,EAClCr3B,EAAOA,EAAM,KAAK,KAAKk2B,GAAKoB,EAAG,EAAK,EACpCt3B,EAAOA,EAAM,KAAK,KAAKm2B,GAAKkB,EAAG,EAAK,EACpCnzF,GAAMA,GAAK,KAAK,KAAKiyF,GAAKmB,EAAG,EAAK,EAClCrzF,GAAMA,GAAK,KAAK,KAAK8xF,GAAKyB,EAAG,EAAK,EAClCx3B,EAAOA,EAAM,KAAK,KAAK+1B,GAAK0B,EAAG,EAAK,EACpCz3B,EAAOA,EAAM,KAAK,KAAKg2B,GAAKwB,EAAG,EAAK,EACpCtzF,GAAMA,GAAK,KAAK,KAAK8xF,GAAKyB,EAAG,EAAK,EAClCxzF,GAAMA,GAAK,KAAK,KAAK4xF,GAAK8B,EAAG,EAAK,EAClC33B,EAAOA,EAAM,KAAK,KAAK61B,GAAK+B,EAAG,EAAK,EACpC53B,EAAOA,EAAM,KAAK,KAAK81B,GAAK6B,EAAG,EAAK,EACpCzzF,GAAMA,GAAK,KAAK,KAAK4xF,GAAK8B,EAAG,EAAK,EAClC3zF,GAAMA,GAAK,KAAK,KAAK0xF,GAAKmC,EAAG,EAAK,EAClC93B,EAAOA,EAAM,KAAK,KAAK21B,GAAKoC,EAAG,EAAK,EACpC/3B,EAAOA,EAAM,KAAK,KAAK41B,GAAKkC,EAAG,EAAK,EACpC5zF,GAAMA,GAAK,KAAK,KAAK0xF,GAAKmC,EAAG,EAAK,EAClC9zF,GAAMA,GAAK,KAAK,KAAKwxF,GAAKwC,EAAG,EAAK,EAClCj4B,EAAOA,EAAM,KAAK,KAAKy1B,GAAKyC,EAAG,EAAK,EACpCl4B,EAAOA,EAAM,KAAK,KAAK01B,GAAKuC,EAAG,EAAK,EACpC/zF,GAAMA,GAAK,KAAK,KAAKwxF,GAAKwC,EAAG,EAAK,EAClCj0F,GAAMA,GAAK,KAAK,KAAKsxF,GAAK6C,EAAG,EAAK,EAClCp4B,EAAOA,EAAM,KAAK,KAAKu1B,GAAK8C,EAAG,EAAK,EACpCr4B,EAAOA,EAAM,KAAK,KAAKw1B,GAAK4C,EAAG,EAAK,EACpCl0F,GAAMA,GAAK,KAAK,KAAKsxF,GAAK6C,EAAG,EAAK,EAClCp0F,GAAMA,GAAK,KAAK,KAAKoxF,GAAKkD,EAAG,EAAK,EAClCv4B,EAAOA,EAAM,KAAK,KAAKq1B,GAAKmD,EAAG,EAAK,EACpCx4B,EAAOA,EAAM,KAAK,KAAKs1B,GAAKiD,EAAG,EAAK,EACpCr0F,GAAMA,GAAK,KAAK,KAAKoxF,GAAKkD,EAAG,EAAK,EAClC,IAAIU,IAAQj8F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACrD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAMk5B,KAAO,IAAO,EAChDA,IAAM,SAENj1F,GAAK,KAAK,KAAK0yF,GAAKK,EAAG,EACvBh3B,EAAM,KAAK,KAAK22B,GAAKM,EAAG,EACxBj3B,EAAOA,EAAM,KAAK,KAAK42B,GAAKI,EAAG,EAAK,EACpC9yF,GAAK,KAAK,KAAK0yF,GAAKK,EAAG,EACvBhzF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKU,EAAG,EAAK,EAClCl3B,EAAOA,EAAM,KAAK,KAAKw2B,GAAKW,EAAG,EAAK,EACpCn3B,EAAOA,EAAM,KAAK,KAAKy2B,GAAKS,EAAG,EAAK,EACpChzF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKU,EAAG,EAAK,EAClClzF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKgB,EAAG,EAAK,EAClCr3B,EAAOA,EAAM,KAAK,KAAKq2B,GAAKiB,EAAG,EAAK,EACpCt3B,EAAOA,EAAM,KAAK,KAAKs2B,GAAKe,EAAG,EAAK,EACpCnzF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKgB,EAAG,EAAK,EAClCrzF,GAAMA,GAAK,KAAK,KAAKiyF,GAAKsB,EAAG,EAAK,EAClCx3B,EAAOA,EAAM,KAAK,KAAKk2B,GAAKuB,EAAG,EAAK,EACpCz3B,EAAOA,EAAM,KAAK,KAAKm2B,GAAKqB,EAAG,EAAK,EACpCtzF,GAAMA,GAAK,KAAK,KAAKiyF,GAAKsB,EAAG,EAAK,EAClCxzF,GAAMA,GAAK,KAAK,KAAK8xF,GAAK4B,EAAG,EAAK,EAClC33B,EAAOA,EAAM,KAAK,KAAK+1B,GAAK6B,EAAG,EAAK,EACpC53B,EAAOA,EAAM,KAAK,KAAKg2B,GAAK2B,EAAG,EAAK,EACpCzzF,GAAMA,GAAK,KAAK,KAAK8xF,GAAK4B,EAAG,EAAK,EAClC3zF,GAAMA,GAAK,KAAK,KAAK4xF,GAAKiC,EAAG,EAAK,EAClC93B,EAAOA,EAAM,KAAK,KAAK61B,GAAKkC,EAAG,EAAK,EACpC/3B,EAAOA,EAAM,KAAK,KAAK81B,GAAKgC,EAAG,EAAK,EACpC5zF,GAAMA,GAAK,KAAK,KAAK4xF,GAAKiC,EAAG,EAAK,EAClC9zF,GAAMA,GAAK,KAAK,KAAK0xF,GAAKsC,EAAG,EAAK,EAClCj4B,EAAOA,EAAM,KAAK,KAAK21B,GAAKuC,EAAG,EAAK,EACpCl4B,EAAOA,EAAM,KAAK,KAAK41B,GAAKqC,EAAG,EAAK,EACpC/zF,GAAMA,GAAK,KAAK,KAAK0xF,GAAKsC,EAAG,EAAK,EAClCj0F,GAAMA,GAAK,KAAK,KAAKwxF,GAAK2C,EAAG,EAAK,EAClCp4B,EAAOA,EAAM,KAAK,KAAKy1B,GAAK4C,EAAG,EAAK,EACpCr4B,EAAOA,EAAM,KAAK,KAAK01B,GAAK0C,EAAG,EAAK,EACpCl0F,GAAMA,GAAK,KAAK,KAAKwxF,GAAK2C,EAAG,EAAK,EAClCp0F,GAAMA,GAAK,KAAK,KAAKsxF,GAAKgD,EAAG,EAAK,EAClCv4B,EAAOA,EAAM,KAAK,KAAKu1B,GAAKiD,EAAG,EAAK,EACpCx4B,EAAOA,EAAM,KAAK,KAAKw1B,GAAK+C,EAAG,EAAK,EACpCr0F,GAAMA,GAAK,KAAK,KAAKsxF,GAAKgD,EAAG,EAAK,EAClC,IAAIW,IAASl8F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACtD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAMm5B,KAAQ,IAAO,EACjDA,IAAO,SAEPl1F,GAAK,KAAK,KAAK0yF,GAAKO,EAAG,EACvBl3B,EAAM,KAAK,KAAK22B,GAAKQ,EAAG,EACxBn3B,EAAOA,EAAM,KAAK,KAAK42B,GAAKM,EAAG,EAAK,EACpChzF,GAAK,KAAK,KAAK0yF,GAAKO,EAAG,EACvBlzF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKa,EAAG,EAAK,EAClCr3B,EAAOA,EAAM,KAAK,KAAKw2B,GAAKc,EAAG,EAAK,EACpCt3B,EAAOA,EAAM,KAAK,KAAKy2B,GAAKY,EAAG,EAAK,EACpCnzF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKa,EAAG,EAAK,EAClCrzF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKmB,EAAG,EAAK,EAClCx3B,EAAOA,EAAM,KAAK,KAAKq2B,GAAKoB,EAAG,EAAK,EACpCz3B,EAAOA,EAAM,KAAK,KAAKs2B,GAAKkB,EAAG,EAAK,EACpCtzF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKmB,EAAG,EAAK,EAClCxzF,GAAMA,GAAK,KAAK,KAAKiyF,GAAKyB,EAAG,EAAK,EAClC33B,EAAOA,EAAM,KAAK,KAAKk2B,GAAK0B,EAAG,EAAK,EACpC53B,EAAOA,EAAM,KAAK,KAAKm2B,GAAKwB,EAAG,EAAK,EACpCzzF,GAAMA,GAAK,KAAK,KAAKiyF,GAAKyB,EAAG,EAAK,EAClC3zF,GAAMA,GAAK,KAAK,KAAK8xF,GAAK+B,EAAG,EAAK,EAClC93B,EAAOA,EAAM,KAAK,KAAK+1B,GAAKgC,EAAG,EAAK,EACpC/3B,EAAOA,EAAM,KAAK,KAAKg2B,GAAK8B,EAAG,EAAK,EACpC5zF,GAAMA,GAAK,KAAK,KAAK8xF,GAAK+B,EAAG,EAAK,EAClC9zF,GAAMA,GAAK,KAAK,KAAK4xF,GAAKoC,EAAG,EAAK,EAClCj4B,EAAOA,EAAM,KAAK,KAAK61B,GAAKqC,EAAG,EAAK,EACpCl4B,EAAOA,EAAM,KAAK,KAAK81B,GAAKmC,EAAG,EAAK,EACpC/zF,GAAMA,GAAK,KAAK,KAAK4xF,GAAKoC,EAAG,EAAK,EAClCj0F,GAAMA,GAAK,KAAK,KAAK0xF,GAAKyC,EAAG,EAAK,EAClCp4B,EAAOA,EAAM,KAAK,KAAK21B,GAAK0C,EAAG,EAAK,EACpCr4B,EAAOA,EAAM,KAAK,KAAK41B,GAAKwC,EAAG,EAAK,EACpCl0F,GAAMA,GAAK,KAAK,KAAK0xF,GAAKyC,EAAG,EAAK,EAClCp0F,GAAMA,GAAK,KAAK,KAAKwxF,GAAK8C,EAAG,EAAK,EAClCv4B,EAAOA,EAAM,KAAK,KAAKy1B,GAAK+C,EAAG,EAAK,EACpCx4B,EAAOA,EAAM,KAAK,KAAK01B,GAAK6C,EAAG,EAAK,EACpCr0F,GAAMA,GAAK,KAAK,KAAKwxF,GAAK8C,EAAG,EAAK,EAClC,IAAIY,IAASn8F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACtD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAMo5B,KAAQ,IAAO,EACjDA,IAAO,SAEPn1F,GAAK,KAAK,KAAK0yF,GAAKU,EAAG,EACvBr3B,EAAM,KAAK,KAAK22B,GAAKW,EAAG,EACxBt3B,EAAOA,EAAM,KAAK,KAAK42B,GAAKS,EAAG,EAAK,EACpCnzF,GAAK,KAAK,KAAK0yF,GAAKU,EAAG,EACvBrzF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKgB,EAAG,EAAK,EAClCx3B,EAAOA,EAAM,KAAK,KAAKw2B,GAAKiB,EAAG,EAAK,EACpCz3B,EAAOA,EAAM,KAAK,KAAKy2B,GAAKe,EAAG,EAAK,EACpCtzF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKgB,EAAG,EAAK,EAClCxzF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKsB,EAAG,EAAK,EAClC33B,EAAOA,EAAM,KAAK,KAAKq2B,GAAKuB,EAAG,EAAK,EACpC53B,EAAOA,EAAM,KAAK,KAAKs2B,GAAKqB,EAAG,EAAK,EACpCzzF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKsB,EAAG,EAAK,EAClC3zF,GAAMA,GAAK,KAAK,KAAKiyF,GAAK4B,EAAG,EAAK,EAClC93B,EAAOA,EAAM,KAAK,KAAKk2B,GAAK6B,EAAG,EAAK,EACpC/3B,EAAOA,EAAM,KAAK,KAAKm2B,GAAK2B,EAAG,EAAK,EACpC5zF,GAAMA,GAAK,KAAK,KAAKiyF,GAAK4B,EAAG,EAAK,EAClC9zF,GAAMA,GAAK,KAAK,KAAK8xF,GAAKkC,EAAG,EAAK,EAClCj4B,EAAOA,EAAM,KAAK,KAAK+1B,GAAKmC,EAAG,EAAK,EACpCl4B,EAAOA,EAAM,KAAK,KAAKg2B,GAAKiC,EAAG,EAAK,EACpC/zF,GAAMA,GAAK,KAAK,KAAK8xF,GAAKkC,EAAG,EAAK,EAClCj0F,GAAMA,GAAK,KAAK,KAAK4xF,GAAKuC,EAAG,EAAK,EAClCp4B,EAAOA,EAAM,KAAK,KAAK61B,GAAKwC,EAAG,EAAK,EACpCr4B,EAAOA,EAAM,KAAK,KAAK81B,GAAKsC,EAAG,EAAK,EACpCl0F,GAAMA,GAAK,KAAK,KAAK4xF,GAAKuC,EAAG,EAAK,EAClCp0F,GAAMA,GAAK,KAAK,KAAK0xF,GAAK4C,EAAG,EAAK,EAClCv4B,EAAOA,EAAM,KAAK,KAAK21B,GAAK6C,EAAG,EAAK,EACpCx4B,EAAOA,EAAM,KAAK,KAAK41B,GAAK2C,EAAG,EAAK,EACpCr0F,GAAMA,GAAK,KAAK,KAAK0xF,GAAK4C,EAAG,EAAK,EAClC,IAAIa,IAASp8F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACtD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAMq5B,KAAQ,IAAO,EACjDA,IAAO,SAEPp1F,GAAK,KAAK,KAAK0yF,GAAKa,EAAG,EACvBx3B,EAAM,KAAK,KAAK22B,GAAKc,EAAG,EACxBz3B,EAAOA,EAAM,KAAK,KAAK42B,GAAKY,EAAG,EAAK,EACpCtzF,GAAK,KAAK,KAAK0yF,GAAKa,EAAG,EACvBxzF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKmB,EAAG,EAAK,EAClC33B,EAAOA,EAAM,KAAK,KAAKw2B,GAAKoB,EAAG,EAAK,EACpC53B,EAAOA,EAAM,KAAK,KAAKy2B,GAAKkB,EAAG,EAAK,EACpCzzF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKmB,EAAG,EAAK,EAClC3zF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKyB,EAAG,EAAK,EAClC93B,EAAOA,EAAM,KAAK,KAAKq2B,GAAK0B,EAAG,EAAK,EACpC/3B,EAAOA,EAAM,KAAK,KAAKs2B,GAAKwB,EAAG,EAAK,EACpC5zF,GAAMA,GAAK,KAAK,KAAKoyF,GAAKyB,EAAG,EAAK,EAClC9zF,GAAMA,GAAK,KAAK,KAAKiyF,GAAK+B,EAAG,EAAK,EAClCj4B,EAAOA,EAAM,KAAK,KAAKk2B,GAAKgC,EAAG,EAAK,EACpCl4B,EAAOA,EAAM,KAAK,KAAKm2B,GAAK8B,EAAG,EAAK,EACpC/zF,GAAMA,GAAK,KAAK,KAAKiyF,GAAK+B,EAAG,EAAK,EAClCj0F,GAAMA,GAAK,KAAK,KAAK8xF,GAAKqC,EAAG,EAAK,EAClCp4B,EAAOA,EAAM,KAAK,KAAK+1B,GAAKsC,EAAG,EAAK,EACpCr4B,EAAOA,EAAM,KAAK,KAAKg2B,GAAKoC,EAAG,EAAK,EACpCl0F,GAAMA,GAAK,KAAK,KAAK8xF,GAAKqC,EAAG,EAAK,EAClCp0F,GAAMA,GAAK,KAAK,KAAK4xF,GAAK0C,EAAG,EAAK,EAClCv4B,EAAOA,EAAM,KAAK,KAAK61B,GAAK2C,EAAG,EAAK,EACpCx4B,EAAOA,EAAM,KAAK,KAAK81B,GAAKyC,EAAG,EAAK,EACpCr0F,GAAMA,GAAK,KAAK,KAAK4xF,GAAK0C,EAAG,EAAK,EAClC,IAAIc,IAASr8F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACtD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAMs5B,KAAQ,IAAO,EACjDA,IAAO,SAEPr1F,GAAK,KAAK,KAAK0yF,GAAKgB,EAAG,EACvB33B,EAAM,KAAK,KAAK22B,GAAKiB,EAAG,EACxB53B,EAAOA,EAAM,KAAK,KAAK42B,GAAKe,EAAG,EAAK,EACpCzzF,GAAK,KAAK,KAAK0yF,GAAKgB,EAAG,EACvB3zF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKsB,EAAG,EAAK,EAClC93B,EAAOA,EAAM,KAAK,KAAKw2B,GAAKuB,EAAG,EAAK,EACpC/3B,EAAOA,EAAM,KAAK,KAAKy2B,GAAKqB,EAAG,EAAK,EACpC5zF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKsB,EAAG,EAAK,EAClC9zF,GAAMA,GAAK,KAAK,KAAKoyF,GAAK4B,EAAG,EAAK,EAClCj4B,EAAOA,EAAM,KAAK,KAAKq2B,GAAK6B,EAAG,EAAK,EACpCl4B,EAAOA,EAAM,KAAK,KAAKs2B,GAAK2B,EAAG,EAAK,EACpC/zF,GAAMA,GAAK,KAAK,KAAKoyF,GAAK4B,EAAG,EAAK,EAClCj0F,GAAMA,GAAK,KAAK,KAAKiyF,GAAKkC,EAAG,EAAK,EAClCp4B,EAAOA,EAAM,KAAK,KAAKk2B,GAAKmC,EAAG,EAAK,EACpCr4B,EAAOA,EAAM,KAAK,KAAKm2B,GAAKiC,EAAG,EAAK,EACpCl0F,GAAMA,GAAK,KAAK,KAAKiyF,GAAKkC,EAAG,EAAK,EAClCp0F,GAAMA,GAAK,KAAK,KAAK8xF,GAAKwC,EAAG,EAAK,EAClCv4B,EAAOA,EAAM,KAAK,KAAK+1B,GAAKyC,EAAG,EAAK,EACpCx4B,EAAOA,EAAM,KAAK,KAAKg2B,GAAKuC,EAAG,EAAK,EACpCr0F,GAAMA,GAAK,KAAK,KAAK8xF,GAAKwC,EAAG,EAAK,EAClC,IAAIe,IAASt8F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACtD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAMu5B,KAAQ,IAAO,EACjDA,IAAO,SAEPt1F,GAAK,KAAK,KAAK0yF,GAAKmB,EAAG,EACvB93B,EAAM,KAAK,KAAK22B,GAAKoB,EAAG,EACxB/3B,EAAOA,EAAM,KAAK,KAAK42B,GAAKkB,EAAG,EAAK,EACpC5zF,GAAK,KAAK,KAAK0yF,GAAKmB,EAAG,EACvB9zF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKyB,EAAG,EAAK,EAClCj4B,EAAOA,EAAM,KAAK,KAAKw2B,GAAK0B,EAAG,EAAK,EACpCl4B,EAAOA,EAAM,KAAK,KAAKy2B,GAAKwB,EAAG,EAAK,EACpC/zF,GAAMA,GAAK,KAAK,KAAKuyF,GAAKyB,EAAG,EAAK,EAClCj0F,GAAMA,GAAK,KAAK,KAAKoyF,GAAK+B,EAAG,EAAK,EAClCp4B,EAAOA,EAAM,KAAK,KAAKq2B,GAAKgC,EAAG,EAAK,EACpCr4B,EAAOA,EAAM,KAAK,KAAKs2B,GAAK8B,EAAG,EAAK,EACpCl0F,GAAMA,GAAK,KAAK,KAAKoyF,GAAK+B,EAAG,EAAK,EAClCp0F,GAAMA,GAAK,KAAK,KAAKiyF,GAAKqC,EAAG,EAAK,EAClCv4B,EAAOA,EAAM,KAAK,KAAKk2B,GAAKsC,EAAG,EAAK,EACpCx4B,EAAOA,EAAM,KAAK,KAAKm2B,GAAKoC,EAAG,EAAK,EACpCr0F,GAAMA,GAAK,KAAK,KAAKiyF,GAAKqC,EAAG,EAAK,EAClC,IAAIgB,IAASv8F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACtD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAMw5B,KAAQ,IAAO,EACjDA,IAAO,SAEPv1F,GAAK,KAAK,KAAK0yF,GAAKsB,EAAG,EACvBj4B,EAAM,KAAK,KAAK22B,GAAKuB,EAAG,EACxBl4B,EAAOA,EAAM,KAAK,KAAK42B,GAAKqB,EAAG,EAAK,EACpC/zF,GAAK,KAAK,KAAK0yF,GAAKsB,EAAG,EACvBj0F,GAAMA,GAAK,KAAK,KAAKuyF,GAAK4B,EAAG,EAAK,EAClCp4B,EAAOA,EAAM,KAAK,KAAKw2B,GAAK6B,EAAG,EAAK,EACpCr4B,EAAOA,EAAM,KAAK,KAAKy2B,GAAK2B,EAAG,EAAK,EACpCl0F,GAAMA,GAAK,KAAK,KAAKuyF,GAAK4B,EAAG,EAAK,EAClCp0F,GAAMA,GAAK,KAAK,KAAKoyF,GAAKkC,EAAG,EAAK,EAClCv4B,EAAOA,EAAM,KAAK,KAAKq2B,GAAKmC,EAAG,EAAK,EACpCx4B,EAAOA,EAAM,KAAK,KAAKs2B,GAAKiC,EAAG,EAAK,EACpCr0F,GAAMA,GAAK,KAAK,KAAKoyF,GAAKkC,EAAG,EAAK,EAClC,IAAIiB,IAASx8F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACtD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAMy5B,KAAQ,IAAO,EACjDA,IAAO,SAEPx1F,GAAK,KAAK,KAAK0yF,GAAKyB,EAAG,EACvBp4B,EAAM,KAAK,KAAK22B,GAAK0B,EAAG,EACxBr4B,EAAOA,EAAM,KAAK,KAAK42B,GAAKwB,EAAG,EAAK,EACpCl0F,GAAK,KAAK,KAAK0yF,GAAKyB,EAAG,EACvBp0F,GAAMA,GAAK,KAAK,KAAKuyF,GAAK+B,EAAG,EAAK,EAClCv4B,EAAOA,EAAM,KAAK,KAAKw2B,GAAKgC,EAAG,EAAK,EACpCx4B,EAAOA,EAAM,KAAK,KAAKy2B,GAAK8B,EAAG,EAAK,EACpCr0F,GAAMA,GAAK,KAAK,KAAKuyF,GAAK+B,EAAG,EAAK,EAClC,IAAIkB,IAASz8F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACtD/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAM05B,KAAQ,IAAO,EACjDA,IAAO,SAEPz1F,GAAK,KAAK,KAAK0yF,GAAK4B,EAAG,EACvBv4B,EAAM,KAAK,KAAK22B,GAAK6B,EAAG,EACxBx4B,EAAOA,EAAM,KAAK,KAAK42B,GAAK2B,EAAG,EAAK,EACpCr0F,GAAK,KAAK,KAAK0yF,GAAK4B,EAAG,EACvB,IAAImB,IAAS18F,GAAIgH,GAAM,KAAO+7D,EAAM,OAAW,IAAO,EACtD,OAAA/iE,IAAOiH,IAAM87D,IAAQ,IAAO,IAAM25B,KAAQ,IAAO,EACjDA,IAAO,SACP7nE,GAAE,CAAC,EAAI2mE,GACP3mE,GAAE,CAAC,EAAI4mE,GACP5mE,GAAE,CAAC,EAAI6mE,GACP7mE,GAAE,CAAC,EAAI8mE,GACP9mE,GAAE,CAAC,EAAI+mE,GACP/mE,GAAE,CAAC,EAAIgnE,GACPhnE,GAAE,CAAC,EAAIinE,GACPjnE,GAAE,CAAC,EAAIknE,GACPlnE,GAAE,CAAC,EAAImnE,GACPnnE,GAAE,CAAC,EAAIonE,GACPpnE,GAAE,EAAE,EAAIqnE,GACRrnE,GAAE,EAAE,EAAIsnE,GACRtnE,GAAE,EAAE,EAAIunE,GACRvnE,GAAE,EAAE,EAAIwnE,GACRxnE,GAAE,EAAE,EAAIynE,GACRznE,GAAE,EAAE,EAAI0nE,GACR1nE,GAAE,EAAE,EAAI2nE,GACR3nE,GAAE,EAAE,EAAI4nE,GACR5nE,GAAE,EAAE,EAAI6nE,GACJ18F,KAAM,IACR60B,GAAE,EAAE,EAAI70B,GACRmG,GAAI,UAECA,EACX,EAGO,KAAK,OACR+xF,EAAcJ,GAGhB,SAAS6E,EAAUhsF,EAAMjS,EAAKyH,EAAK,CACjCA,EAAI,SAAWzH,EAAI,SAAWiS,EAAK,SACnCxK,EAAI,OAASwK,EAAK,OAASjS,EAAI,OAI/B,QAFIgjD,GAAQ,EACRk7C,GAAU,EACLjoE,GAAI,EAAGA,GAAIxuB,EAAI,OAAS,EAAGwuB,KAAK,CAGvC,IAAIojE,GAAS6E,GACbA,GAAU,EAGV,QAFI5E,GAAQt2C,GAAQ,SAChBu2C,GAAO,KAAK,IAAItjE,GAAGj2B,EAAI,OAAS,CAAC,EAC5BiG,EAAI,KAAK,IAAI,EAAGgwB,GAAIhkB,EAAK,OAAS,CAAC,EAAGhM,GAAKszF,GAAMtzF,IAAK,CAC7D,IAAIlH,GAAIk3B,GAAIhwB,EACRjC,GAAIiO,EAAK,MAAMlT,EAAC,EAAI,EACpBiE,GAAIhD,EAAI,MAAMiG,CAAC,EAAI,EACnBwM,GAAIzO,GAAIhB,GAERsF,GAAKmK,GAAI,SACb4mF,GAAUA,IAAW5mF,GAAI,SAAa,GAAM,EAC5CnK,GAAMA,GAAKgxF,GAAS,EACpBA,GAAQhxF,GAAK,SACb+wF,GAAUA,IAAU/wF,KAAO,IAAO,EAElC41F,IAAW7E,KAAW,GACtBA,IAAU,QACX,CACD5xF,EAAI,MAAMwuB,EAAC,EAAIqjE,GACft2C,GAAQq2C,GACRA,GAAS6E,EACV,CACD,OAAIl7C,KAAU,EACZv7C,EAAI,MAAMwuB,EAAC,EAAI+sB,GAEfv7C,EAAI,SAGCA,EAAI,QACZ,CAED,SAAS02F,EAAYlsF,EAAMjS,EAAKyH,EAAK,CAInC,OAAOw2F,EAAShsF,EAAMjS,EAAKyH,CAAG,CAC/B,CAEDowF,EAAG,UAAU,MAAQ,SAAgB73F,EAAKyH,EAAK,CAC7C,IAAIZ,GACAhI,GAAM,KAAK,OAASmB,EAAI,OAC5B,OAAI,KAAK,SAAW,IAAMA,EAAI,SAAW,GACvC6G,GAAM2yF,EAAY,KAAMx5F,EAAKyH,CAAG,EACvB5I,GAAM,GACfgI,GAAMuyF,EAAW,KAAMp5F,EAAKyH,CAAG,EACtB5I,GAAM,KACfgI,GAAMo3F,EAAS,KAAMj+F,EAAKyH,CAAG,EAE7BZ,GAAMs3F,EAAW,KAAMn+F,EAAKyH,CAAG,EAG1BZ,EACX,EAuMEgxF,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,IAAIyH,EAAM,IAAIowF,EAAG,IAAI,EACrB,OAAApwF,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASzH,EAAI,MAAM,EACvC,KAAK,MAAMA,EAAKyH,CAAG,CAC9B,EAGEowF,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,IAAIyH,EAAM,IAAIowF,EAAG,IAAI,EACrB,OAAApwF,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASzH,EAAI,MAAM,EACvCm+F,EAAW,KAAMn+F,EAAKyH,CAAG,CACpC,EAGEowF,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAO,KAAK,MAAO,EAAC,MAAMA,EAAK,IAAI,CACvC,EAEE63F,EAAG,UAAU,MAAQ,SAAgB73F,EAAK,CACxC,IAAI6lG,EAAW7lG,EAAM,EACjB6lG,IAAU7lG,EAAM,CAACA,GAErB2wF,EAAO,OAAO3wF,GAAQ,QAAQ,EAC9B2wF,EAAO3wF,EAAM,QAAS,EAItB,QADIgjD,GAAQ,EACHjkD,GAAI,EAAGA,GAAI,KAAK,OAAQA,KAAK,CACpC,IAAI46B,IAAK,KAAK,MAAM56B,EAAC,EAAI,GAAKiB,EAC1BsI,IAAMqxB,GAAI,WAAcqpB,GAAQ,UACpCA,KAAU,GACVA,IAAUrpB,GAAI,SAAa,EAE3BqpB,IAAS16C,KAAO,GAChB,KAAK,MAAMvJ,EAAC,EAAIuJ,GAAK,QACtB,CAED,OAAI06C,KAAU,IACZ,KAAK,MAAMjkD,EAAC,EAAIikD,GAChB,KAAK,UAGA6iD,EAAW,KAAK,KAAI,EAAK,IACpC,EAEEhO,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAO,KAAK,MAAK,EAAG,MAAMA,CAAG,CACjC,EAGE63F,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,IAAI,IAAI,CACxB,EAGEA,EAAG,UAAU,KAAO,UAAiB,CACnC,OAAO,KAAK,KAAK,KAAK,MAAO,EACjC,EAGEA,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,IAAI25B,EAAIo/D,EAAW/4F,CAAG,EACtB,GAAI25B,EAAE,SAAW,EAAG,OAAO,IAAIk+D,EAAG,CAAC,EAInC,QADIhxF,GAAM,KACD9H,GAAI,EAAGA,GAAI46B,EAAE,QAChBA,EAAE56B,EAAC,IAAM,EADeA,KAAK8H,GAAMA,GAAI,IAAG,EAC9C,CAGF,GAAI,EAAE9H,GAAI46B,EAAE,OACV,QAASm/D,GAAIjyF,GAAI,IAAG,EAAI9H,GAAI46B,EAAE,OAAQ56B,KAAK+5F,GAAIA,GAAE,IAAG,EAC9Cn/D,EAAE56B,EAAC,IAAM,IAEb8H,GAAMA,GAAI,IAAIiyF,EAAC,GAInB,OAAOjyF,EACX,EAGEgxF,EAAG,UAAU,OAAS,SAAiBrzC,EAAM,CAC3CmsC,EAAO,OAAOnsC,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAI/xC,EAAI+xC,EAAO,GACXpjD,IAAKojD,EAAO/xC,GAAK,GACjBqtF,GAAa,WAAe,GAAKrtF,GAAQ,GAAKA,EAC9C1T,GAEJ,GAAI0T,IAAM,EAAG,CACX,IAAIuwC,GAAQ,EAEZ,IAAKjkD,GAAI,EAAGA,GAAI,KAAK,OAAQA,KAAK,CAChC,IAAIghG,GAAW,KAAK,MAAMhhG,EAAC,EAAI+gG,GAC3Bx+F,IAAM,KAAK,MAAMvC,EAAC,EAAI,GAAKghG,IAAattF,EAC5C,KAAK,MAAM1T,EAAC,EAAIuC,GAAI0hD,GACpBA,GAAQ+8C,KAAc,GAAKttF,CAC5B,CAEGuwC,KACF,KAAK,MAAMjkD,EAAC,EAAIikD,GAChB,KAAK,SAER,CAED,GAAI5hD,KAAM,EAAG,CACX,IAAKrC,GAAI,KAAK,OAAS,EAAGA,IAAK,EAAGA,KAChC,KAAK,MAAMA,GAAIqC,EAAC,EAAI,KAAK,MAAMrC,EAAC,EAGlC,IAAKA,GAAI,EAAGA,GAAIqC,GAAGrC,KACjB,KAAK,MAAMA,EAAC,EAAI,EAGlB,KAAK,QAAUqC,EAChB,CAED,OAAO,KAAK,QAChB,EAEEy2F,EAAG,UAAU,MAAQ,SAAgBrzC,EAAM,CAEzC,OAAAmsC,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOnsC,CAAI,CAC3B,EAKEqzC,EAAG,UAAU,OAAS,SAAiBrzC,EAAM4T,EAAM4nC,GAAU,CAC3DrP,EAAO,OAAOnsC,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIrnC,GACAi7C,EACFj7C,IAAKi7C,EAAQA,EAAO,IAAO,GAE3Bj7C,GAAI,EAGN,IAAI1K,GAAI+xC,EAAO,GACXpjD,GAAI,KAAK,KAAKojD,EAAO/xC,IAAK,GAAI,KAAK,MAAM,EACzCkyC,GAAO,SAAc,WAAclyC,IAAMA,GACzCwtF,GAAcD,GAMlB,GAJA7iF,IAAK/b,GACL+b,GAAI,KAAK,IAAI,EAAGA,EAAC,EAGb8iF,GAAa,CACf,QAASlhG,EAAI,EAAGA,EAAIqC,GAAGrC,IACrBkhG,GAAY,MAAMlhG,CAAC,EAAI,KAAK,MAAMA,CAAC,EAErCkhG,GAAY,OAAS7+F,EACtB,CAED,GAAIA,KAAM,EAEH,GAAI,KAAK,OAASA,GAEvB,IADA,KAAK,QAAUA,GACVrC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3B,KAAK,MAAMA,CAAC,EAAI,KAAK,MAAMA,EAAIqC,EAAC,OAGlC,KAAK,MAAM,CAAC,EAAI,EAChB,KAAK,OAAS,EAGhB,IAAI4hD,GAAQ,EACZ,IAAKjkD,EAAI,KAAK,OAAS,EAAGA,GAAK,IAAMikD,KAAU,GAAKjkD,GAAKoe,IAAIpe,IAAK,CAChE,IAAIu5F,GAAO,KAAK,MAAMv5F,CAAC,EAAI,EAC3B,KAAK,MAAMA,CAAC,EAAKikD,IAAU,GAAKvwC,GAAO6lF,KAAS7lF,GAChDuwC,GAAQs1C,GAAO3zC,EAChB,CAGD,OAAIs7C,IAAej9C,KAAU,IAC3Bi9C,GAAY,MAAMA,GAAY,QAAQ,EAAIj9C,IAGxC,KAAK,SAAW,IAClB,KAAK,MAAM,CAAC,EAAI,EAChB,KAAK,OAAS,GAGT,KAAK,QAChB,EAEE60C,EAAG,UAAU,MAAQ,SAAgBrzC,EAAM4T,EAAM4nC,GAAU,CAEzD,OAAArP,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOnsC,EAAM4T,EAAM4nC,EAAQ,CAC3C,EAGEnI,EAAG,UAAU,KAAO,SAAerzC,EAAM,CACvC,OAAO,KAAK,MAAK,EAAG,MAAMA,CAAI,CAClC,EAEEqzC,EAAG,UAAU,MAAQ,SAAgBrzC,EAAM,CACzC,OAAO,KAAK,MAAK,EAAG,OAAOA,CAAI,CACnC,EAGEqzC,EAAG,UAAU,KAAO,SAAerzC,EAAM,CACvC,OAAO,KAAK,MAAK,EAAG,MAAMA,CAAI,CAClC,EAEEqzC,EAAG,UAAU,MAAQ,SAAgBrzC,EAAM,CACzC,OAAO,KAAK,MAAK,EAAG,OAAOA,CAAI,CACnC,EAGEqzC,EAAG,UAAU,MAAQ,SAAgBpF,EAAK,CACxC9B,EAAO,OAAO8B,GAAQ,UAAYA,GAAO,CAAC,EAC1C,IAAIhgF,EAAIggF,EAAM,GACVrxF,IAAKqxF,EAAMhgF,GAAK,GAChBqmF,GAAI,GAAKrmF,EAGb,GAAI,KAAK,QAAUrR,GAAG,MAAO,GAG7B,IAAIu4B,GAAI,KAAK,MAAMv4B,EAAC,EAEpB,MAAO,CAAC,EAAEu4B,GAAIm/D,GAClB,EAGEjB,EAAG,UAAU,OAAS,SAAiBrzC,EAAM,CAC3CmsC,EAAO,OAAOnsC,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAI/xC,EAAI+xC,EAAO,GACXpjD,IAAKojD,EAAO/xC,GAAK,GAIrB,GAFAk+E,EAAO,KAAK,WAAa,EAAG,yCAAyC,EAEjE,KAAK,QAAUvvF,GACjB,OAAO,KAQT,GALIqR,IAAM,GACRrR,KAEF,KAAK,OAAS,KAAK,IAAIA,GAAG,KAAK,MAAM,EAEjCqR,IAAM,EAAG,CACX,IAAIkyC,GAAO,SAAc,WAAclyC,GAAMA,EAC7C,KAAK,MAAM,KAAK,OAAS,CAAC,GAAKkyC,EAChC,CAED,OAAO,KAAK,QAChB,EAGEkzC,EAAG,UAAU,MAAQ,SAAgBrzC,EAAM,CACzC,OAAO,KAAK,MAAK,EAAG,OAAOA,CAAI,CACnC,EAGEqzC,EAAG,UAAU,MAAQ,SAAgB73F,EAAK,CAGxC,OAFA2wF,EAAO,OAAO3wF,GAAQ,QAAQ,EAC9B2wF,EAAO3wF,EAAM,QAAS,EAClBA,EAAM,EAAU,KAAK,MAAM,CAACA,CAAG,EAG/B,KAAK,WAAa,EAChB,KAAK,SAAW,IAAM,KAAK,MAAM,CAAC,EAAI,IAAMA,GAC9C,KAAK,MAAM,CAAC,EAAIA,GAAO,KAAK,MAAM,CAAC,EAAI,GACvC,KAAK,SAAW,EACT,OAGT,KAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,MAIF,KAAK,OAAOA,CAAG,CAC1B,EAEE63F,EAAG,UAAU,OAAS,SAAiB73F,EAAK,CAC1C,KAAK,MAAM,CAAC,GAAKA,EAGjB,QAASjB,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,CAAC,GAAK,SAAWA,IAC7D,KAAK,MAAMA,CAAC,GAAK,SACbA,IAAM,KAAK,OAAS,EACtB,KAAK,MAAMA,EAAI,CAAC,EAAI,EAEpB,KAAK,MAAMA,EAAI,CAAC,IAGpB,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,EAAI,CAAC,EAElC,IACX,EAGE84F,EAAG,UAAU,MAAQ,SAAgB73F,EAAK,CAGxC,GAFA2wF,EAAO,OAAO3wF,GAAQ,QAAQ,EAC9B2wF,EAAO3wF,EAAM,QAAS,EAClBA,EAAM,EAAG,OAAO,KAAK,MAAM,CAACA,CAAG,EAEnC,GAAI,KAAK,WAAa,EACpB,YAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,KAKT,GAFA,KAAK,MAAM,CAAC,GAAKA,EAEb,KAAK,SAAW,GAAK,KAAK,MAAM,CAAC,EAAI,EACvC,KAAK,MAAM,CAAC,EAAI,CAAC,KAAK,MAAM,CAAC,EAC7B,KAAK,SAAW,MAGhB,SAASjB,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,CAAC,EAAI,EAAGA,IACpD,KAAK,MAAMA,CAAC,GAAK,SACjB,KAAK,MAAMA,EAAI,CAAC,GAAK,EAIzB,OAAO,KAAK,QAChB,EAEE84F,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAO,KAAK,MAAK,EAAG,MAAMA,CAAG,CACjC,EAEE63F,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAO,KAAK,MAAK,EAAG,MAAMA,CAAG,CACjC,EAEE63F,EAAG,UAAU,KAAO,UAAiB,CACnC,YAAK,SAAW,EAET,IACX,EAEEA,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,QAAQ,MACxB,EAEEA,EAAG,UAAU,aAAe,SAAuB73F,EAAKgI,EAAKu9C,GAAO,CAClE,IAAI1mD,GAAMmB,EAAI,OAASulD,GACnBxmD,GAEJ,KAAK,QAAQF,EAAG,EAEhB,IAAI86B,GACAqpB,GAAQ,EACZ,IAAKjkD,GAAI,EAAGA,GAAIiB,EAAI,OAAQjB,KAAK,CAC/B46B,IAAK,KAAK,MAAM56B,GAAIwmD,EAAK,EAAI,GAAKvC,GAClC,IAAItT,IAAS1vC,EAAI,MAAMjB,EAAC,EAAI,GAAKiJ,EACjC2xB,IAAK+V,GAAQ,SACbsT,IAASrpB,IAAK,KAAQ+V,GAAQ,SAAa,GAC3C,KAAK,MAAM3wC,GAAIwmD,EAAK,EAAI5rB,GAAI,QAC7B,CACD,KAAO56B,GAAI,KAAK,OAASwmD,GAAOxmD,KAC9B46B,IAAK,KAAK,MAAM56B,GAAIwmD,EAAK,EAAI,GAAKvC,GAClCA,GAAQrpB,IAAK,GACb,KAAK,MAAM56B,GAAIwmD,EAAK,EAAI5rB,GAAI,SAG9B,GAAIqpB,KAAU,EAAG,OAAO,KAAK,OAAM,EAKnC,IAFA2tC,EAAO3tC,KAAU,EAAE,EACnBA,GAAQ,EACHjkD,GAAI,EAAGA,GAAI,KAAK,OAAQA,KAC3B46B,GAAI,EAAE,KAAK,MAAM56B,EAAC,EAAI,GAAKikD,GAC3BA,GAAQrpB,IAAK,GACb,KAAK,MAAM56B,EAAC,EAAI46B,GAAI,SAEtB,YAAK,SAAW,EAET,KAAK,QAChB,EAEEk+D,EAAG,UAAU,SAAW,SAAmB73F,EAAK+qB,EAAM,CACpD,IAAIw6B,GAAQ,KAAK,OAASvlD,EAAI,OAE1BgE,GAAI,KAAK,QACThB,GAAIhD,EAGJkgG,GAAMl9F,GAAE,MAAMA,GAAE,OAAS,CAAC,EAAI,EAC9Bm9F,GAAU,KAAK,WAAWD,EAAG,EACjC36C,GAAQ,GAAK46C,GACT56C,KAAU,IACZviD,GAAIA,GAAE,MAAMuiD,EAAK,EACjBvhD,GAAE,OAAOuhD,EAAK,EACd26C,GAAMl9F,GAAE,MAAMA,GAAE,OAAS,CAAC,EAAI,GAIhC,IAAIlC,GAAIkD,GAAE,OAAShB,GAAE,OACjB81F,EAEJ,GAAI/tE,IAAS,MAAO,CAClB+tE,EAAI,IAAIjB,EAAG,IAAI,EACfiB,EAAE,OAASh4F,GAAI,EACfg4F,EAAE,MAAQ,IAAI,MAAMA,EAAE,MAAM,EAC5B,QAAS/5F,GAAI,EAAGA,GAAI+5F,EAAE,OAAQ/5F,KAC5B+5F,EAAE,MAAM/5F,EAAC,EAAI,CAEhB,CAED,IAAI2W,GAAO1R,GAAE,MAAO,EAAC,aAAahB,GAAG,EAAGlC,EAAC,EACrC4U,GAAK,WAAa,IACpB1R,GAAI0R,GACAojF,IACFA,EAAE,MAAMh4F,EAAC,EAAI,IAIjB,QAASmF,GAAInF,GAAI,EAAGmF,IAAK,EAAGA,KAAK,CAC/B,IAAIm6F,IAAMp8F,GAAE,MAAMhB,GAAE,OAASiD,EAAC,EAAI,GAAK,UACpCjC,GAAE,MAAMhB,GAAE,OAASiD,GAAI,CAAC,EAAI,GAO/B,IAHAm6F,GAAK,KAAK,IAAKA,GAAKF,GAAO,EAAG,QAAS,EAEvCl8F,GAAE,aAAahB,GAAGo9F,GAAIn6F,EAAC,EAChBjC,GAAE,WAAa,GACpBo8F,KACAp8F,GAAE,SAAW,EACbA,GAAE,aAAahB,GAAG,EAAGiD,EAAC,EACjBjC,GAAE,WACLA,GAAE,UAAY,GAGd80F,IACFA,EAAE,MAAM7yF,EAAC,EAAIm6F,GAEhB,CACD,OAAItH,GACFA,EAAE,OAAM,EAEV90F,GAAE,OAAM,EAGJ+mB,IAAS,OAASw6B,KAAU,GAC9BvhD,GAAE,OAAOuhD,EAAK,EAGT,CACL,IAAKuzC,GAAK,KACV,IAAK90F,EACX,CACA,EAME6zF,EAAG,UAAU,OAAS,SAAiB73F,EAAK+qB,EAAMs1E,GAAU,CAG1D,GAFA1P,EAAO,CAAC3wF,EAAI,OAAM,CAAE,EAEhB,KAAK,SACP,MAAO,CACL,IAAK,IAAI63F,EAAG,CAAC,EACb,IAAK,IAAIA,EAAG,CAAC,CACrB,EAGI,IAAIp3B,GAAK43B,GAAKxxF,GACd,OAAI,KAAK,WAAa,GAAK7G,EAAI,WAAa,GAC1C6G,GAAM,KAAK,IAAG,EAAG,OAAO7G,EAAK+qB,CAAI,EAE7BA,IAAS,QACX01C,GAAM55D,GAAI,IAAI,OAGZkkB,IAAS,QACXstE,GAAMxxF,GAAI,IAAI,MACVw5F,IAAYhI,GAAI,WAAa,GAC/BA,GAAI,KAAKr4F,CAAG,GAIT,CACL,IAAKygE,GACL,IAAK43B,EACb,GAGQ,KAAK,WAAa,GAAKr4F,EAAI,WAAa,GAC1C6G,GAAM,KAAK,OAAO7G,EAAI,IAAG,EAAI+qB,CAAI,EAE7BA,IAAS,QACX01C,GAAM55D,GAAI,IAAI,OAGT,CACL,IAAK45D,GACL,IAAK55D,GAAI,GACjB,GAGS,KAAK,SAAW7G,EAAI,UACvB6G,GAAM,KAAK,MAAM,OAAO7G,EAAI,IAAG,EAAI+qB,CAAI,EAEnCA,IAAS,QACXstE,GAAMxxF,GAAI,IAAI,MACVw5F,IAAYhI,GAAI,WAAa,GAC/BA,GAAI,KAAKr4F,CAAG,GAIT,CACL,IAAK6G,GAAI,IACT,IAAKwxF,EACb,GAMQr4F,EAAI,OAAS,KAAK,QAAU,KAAK,IAAIA,CAAG,EAAI,EACvC,CACL,IAAK,IAAI63F,EAAG,CAAC,EACb,IAAK,IACb,EAIQ73F,EAAI,SAAW,EACb+qB,IAAS,MACJ,CACL,IAAK,KAAK,KAAK/qB,EAAI,MAAM,CAAC,CAAC,EAC3B,IAAK,IACf,EAGU+qB,IAAS,MACJ,CACL,IAAK,KACL,IAAK,IAAI8sE,EAAG,KAAK,MAAM73F,EAAI,MAAM,CAAC,CAAC,CAAC,CAC9C,EAGa,CACL,IAAK,KAAK,KAAKA,EAAI,MAAM,CAAC,CAAC,EAC3B,IAAK,IAAI63F,EAAG,KAAK,MAAM73F,EAAI,MAAM,CAAC,CAAC,CAAC,CAC5C,EAGW,KAAK,SAASA,EAAK+qB,CAAI,CAClC,EAGE8sE,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GAC1C,EAGE63F,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GAC1C,EAEE63F,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAI,EAAE,GACzC,EAGE63F,EAAG,UAAU,SAAW,SAAmB73F,EAAK,CAC9C,IAAIsgG,EAAK,KAAK,OAAOtgG,CAAG,EAGxB,GAAIsgG,EAAG,IAAI,OAAQ,EAAE,OAAOA,EAAG,IAE/B,IAAIjI,GAAMiI,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,KAAKtgG,CAAG,EAAIsgG,EAAG,IAEpDpzC,GAAOltD,EAAI,MAAM,CAAC,EAClBgjE,GAAKhjE,EAAI,MAAM,CAAC,EAChBm5F,GAAMd,GAAI,IAAInrC,EAAI,EAGtB,OAAIisC,GAAM,GAAMn2B,KAAO,GAAKm2B,KAAQ,EAAWmH,EAAG,IAG3CA,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,MAAM,CAAC,EAAIA,EAAG,IAAI,MAAM,CAAC,CACnE,EAEEzI,EAAG,UAAU,MAAQ,SAAgB73F,EAAK,CACxC,IAAI6lG,EAAW7lG,EAAM,EACjB6lG,IAAU7lG,EAAM,CAACA,GAErB2wF,EAAO3wF,GAAO,QAAS,EAIvB,QAHIgV,IAAK,GAAK,IAAMhV,EAEhBi+B,GAAM,EACDl/B,GAAI,KAAK,OAAS,EAAGA,IAAK,EAAGA,KACpCk/B,IAAOjpB,GAAIipB,IAAO,KAAK,MAAMl/B,EAAC,EAAI,IAAMiB,EAG1C,OAAO6lG,EAAW,CAAC5nE,GAAMA,EAC7B,EAGE45D,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAO,KAAK,MAAMA,CAAG,CACzB,EAGE63F,EAAG,UAAU,MAAQ,SAAgB73F,EAAK,CACxC,IAAI6lG,EAAW7lG,EAAM,EACjB6lG,IAAU7lG,EAAM,CAACA,GAErB2wF,EAAO3wF,GAAO,QAAS,EAGvB,QADIgjD,GAAQ,EACHjkD,GAAI,KAAK,OAAS,EAAGA,IAAK,EAAGA,KAAK,CACzC,IAAI46B,IAAK,KAAK,MAAM56B,EAAC,EAAI,GAAKikD,GAAQ,SACtC,KAAK,MAAMjkD,EAAC,EAAK46B,GAAI35B,EAAO,EAC5BgjD,GAAQrpB,GAAI35B,CACb,CAED,YAAK,OAAM,EACJ6lG,EAAW,KAAK,KAAI,EAAK,IACpC,EAEEhO,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAO,KAAK,MAAK,EAAG,MAAMA,CAAG,CACjC,EAEE63F,EAAG,UAAU,KAAO,SAAe7iF,EAAG,CACpC27E,EAAO37E,EAAE,WAAa,CAAC,EACvB27E,EAAO,CAAC37E,EAAE,OAAM,CAAE,EAElB,IAAIzW,EAAI,KACJ0F,GAAI+Q,EAAE,QAENzW,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAKyW,CAAC,EAEZzW,EAAIA,EAAE,QAaR,QATIgiG,GAAI,IAAI1I,EAAG,CAAC,EACZ2I,GAAI,IAAI3I,EAAG,CAAC,EAGZz8D,GAAI,IAAIy8D,EAAG,CAAC,EACZ4I,GAAI,IAAI5I,EAAG,CAAC,EAEZhoE,GAAI,EAEDtxB,EAAE,OAAM,GAAM0F,GAAE,OAAM,GAC3B1F,EAAE,OAAO,CAAC,EACV0F,GAAE,OAAO,CAAC,EACV,EAAE4rB,GAMJ,QAHI6wE,EAAKz8F,GAAE,QACP08F,GAAKpiG,EAAE,QAEJ,CAACA,EAAE,UAAU,CAClB,QAASQ,GAAI,EAAG6hG,GAAK,EAAI,EAAAriG,EAAE,MAAM,CAAC,EAAIqiG,KAAa7hG,GAAI,GAAI,EAAEA,GAAG6hG,KAAO,EAAE,CACzE,GAAI7hG,GAAI,EAEN,IADAR,EAAE,OAAOQ,EAAC,EACHA,MAAM,IACPwhG,GAAE,MAAK,GAAMC,GAAE,MAAK,KACtBD,GAAE,KAAKG,CAAE,EACTF,GAAE,KAAKG,EAAE,GAGXJ,GAAE,OAAO,CAAC,EACVC,GAAE,OAAO,CAAC,EAId,QAASv6F,GAAI,EAAG46F,GAAK,EAAI,EAAA58F,GAAE,MAAM,CAAC,EAAI48F,KAAa56F,GAAI,GAAI,EAAEA,GAAG46F,KAAO,EAAE,CACzE,GAAI56F,GAAI,EAEN,IADAhC,GAAE,OAAOgC,EAAC,EACHA,MAAM,IACPm1B,GAAE,MAAK,GAAMqlE,GAAE,MAAK,KACtBrlE,GAAE,KAAKslE,CAAE,EACTD,GAAE,KAAKE,EAAE,GAGXvlE,GAAE,OAAO,CAAC,EACVqlE,GAAE,OAAO,CAAC,EAIVliG,EAAE,IAAI0F,EAAC,GAAK,GACd1F,EAAE,KAAK0F,EAAC,EACRs8F,GAAE,KAAKnlE,EAAC,EACRolE,GAAE,KAAKC,EAAC,IAERx8F,GAAE,KAAK1F,CAAC,EACR68B,GAAE,KAAKmlE,EAAC,EACRE,GAAE,KAAKD,EAAC,EAEX,CAED,MAAO,CACL,EAAGplE,GACH,EAAGqlE,GACH,IAAKx8F,GAAE,OAAO4rB,EAAC,CACrB,CACA,EAKEgoE,EAAG,UAAU,OAAS,SAAiB7iF,EAAG,CACxC27E,EAAO37E,EAAE,WAAa,CAAC,EACvB27E,EAAO,CAAC37E,EAAE,OAAM,CAAE,EAElB,IAAIhR,EAAI,KACJhB,GAAIgS,EAAE,QAENhR,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAKgR,CAAC,EAEZhR,EAAIA,EAAE,QAQR,QALI88F,GAAK,IAAIjJ,EAAG,CAAC,EACbxD,GAAK,IAAIwD,EAAG,CAAC,EAEbkJ,GAAQ/9F,GAAE,QAEPgB,EAAE,KAAK,CAAC,EAAI,GAAKhB,GAAE,KAAK,CAAC,EAAI,GAAG,CACrC,QAASjE,GAAI,EAAG6hG,GAAK,EAAI,EAAA58F,EAAE,MAAM,CAAC,EAAI48F,KAAa7hG,GAAI,GAAI,EAAEA,GAAG6hG,KAAO,EAAE,CACzE,GAAI7hG,GAAI,EAEN,IADAiF,EAAE,OAAOjF,EAAC,EACHA,MAAM,GACP+hG,GAAG,SACLA,GAAG,KAAKC,EAAK,EAGfD,GAAG,OAAO,CAAC,EAIf,QAAS76F,EAAI,EAAG46F,GAAK,EAAI,EAAA79F,GAAE,MAAM,CAAC,EAAI69F,KAAa56F,EAAI,GAAI,EAAEA,EAAG46F,KAAO,EAAE,CACzE,GAAI56F,EAAI,EAEN,IADAjD,GAAE,OAAOiD,CAAC,EACHA,KAAM,GACPouF,GAAG,SACLA,GAAG,KAAK0M,EAAK,EAGf1M,GAAG,OAAO,CAAC,EAIXrwF,EAAE,IAAIhB,EAAC,GAAK,GACdgB,EAAE,KAAKhB,EAAC,EACR89F,GAAG,KAAKzM,EAAE,IAEVrxF,GAAE,KAAKgB,CAAC,EACRqwF,GAAG,KAAKyM,EAAE,EAEb,CAED,IAAIj6F,GACJ,OAAI7C,EAAE,KAAK,CAAC,IAAM,EAChB6C,GAAMi6F,GAENj6F,GAAMwtF,GAGJxtF,GAAI,KAAK,CAAC,EAAI,GAChBA,GAAI,KAAKmO,CAAC,EAGLnO,EACX,EAEEgxF,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,GAAI,KAAK,OAAM,EAAI,OAAOA,EAAI,IAAG,EACjC,GAAIA,EAAI,OAAM,EAAI,OAAO,KAAK,IAAG,EAEjC,IAAIgE,EAAI,KAAK,QACThB,GAAIhD,EAAI,QACZgE,EAAE,SAAW,EACbhB,GAAE,SAAW,EAGb,QAASuiD,GAAQ,EAAGvhD,EAAE,OAAQ,GAAIhB,GAAE,SAAUuiD,KAC5CvhD,EAAE,OAAO,CAAC,EACVhB,GAAE,OAAO,CAAC,EAGZ,EAAG,CACD,KAAOgB,EAAE,UACPA,EAAE,OAAO,CAAC,EAEZ,KAAOhB,GAAE,UACPA,GAAE,OAAO,CAAC,EAGZ,IAAIyP,GAAIzO,EAAE,IAAIhB,EAAC,EACf,GAAIyP,GAAI,EAAG,CAET,IAAI6N,GAAItc,EACRA,EAAIhB,GACJA,GAAIsd,EACZ,SAAiB7N,KAAM,GAAKzP,GAAE,KAAK,CAAC,IAAM,EAClC,MAGFgB,EAAE,KAAKhB,EAAC,CACT,OAAQ,IAET,OAAOA,GAAE,OAAOuiD,EAAK,CACzB,EAGEsyC,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,EAAE,EAAE,KAAKA,CAAG,CACpC,EAEE63F,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAQ,KAAK,MAAM,CAAC,EAAI,KAAO,CACnC,EAEEA,EAAG,UAAU,MAAQ,UAAkB,CACrC,OAAQ,KAAK,MAAM,CAAC,EAAI,KAAO,CACnC,EAGEA,EAAG,UAAU,MAAQ,SAAgB73F,EAAK,CACxC,OAAO,KAAK,MAAM,CAAC,EAAIA,CAC3B,EAGE63F,EAAG,UAAU,MAAQ,SAAgBpF,EAAK,CACxC9B,EAAO,OAAO8B,GAAQ,QAAQ,EAC9B,IAAIhgF,EAAIggF,EAAM,GACVrxF,IAAKqxF,EAAMhgF,GAAK,GAChBqmF,GAAI,GAAKrmF,EAGb,GAAI,KAAK,QAAUrR,GACjB,YAAK,QAAQA,GAAI,CAAC,EAClB,KAAK,MAAMA,EAAC,GAAK03F,GACV,KAKT,QADI91C,GAAQ81C,GACH/5F,GAAIqC,GAAG4hD,KAAU,GAAKjkD,GAAI,KAAK,OAAQA,KAAK,CACnD,IAAI46B,GAAI,KAAK,MAAM56B,EAAC,EAAI,EACxB46B,IAAKqpB,GACLA,GAAQrpB,KAAM,GACdA,IAAK,SACL,KAAK,MAAM56B,EAAC,EAAI46B,EACjB,CACD,OAAIqpB,KAAU,IACZ,KAAK,MAAMjkD,EAAC,EAAIikD,GAChB,KAAK,UAEA,IACX,EAEE60C,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAO,KAAK,SAAW,GAAK,KAAK,MAAM,CAAC,IAAM,CAClD,EAEEA,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,IAAIghG,EAAWhhG,EAAM,EAErB,GAAI,KAAK,WAAa,GAAK,CAACghG,EAAU,MAAO,GAC7C,GAAI,KAAK,WAAa,GAAKA,EAAU,MAAO,GAE5C,KAAK,OAAM,EAEX,IAAIn6F,GACJ,GAAI,KAAK,OAAS,EAChBA,GAAM,MACD,CACDm6F,IACFhhG,EAAM,CAACA,GAGT2wF,EAAO3wF,GAAO,SAAW,mBAAmB,EAE5C,IAAI25B,GAAI,KAAK,MAAM,CAAC,EAAI,EACxB9yB,GAAM8yB,KAAM35B,EAAM,EAAI25B,GAAI35B,EAAM,GAAK,CACtC,CACD,OAAI,KAAK,WAAa,EAAU,CAAC6G,GAAM,EAChCA,EACX,EAMEgxF,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GACtD,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GAEtD,IAAI6G,EAAM,KAAK,KAAK7G,CAAG,EACvB,OAAI,KAAK,WAAa,EAAU,CAAC6G,EAAM,EAChCA,CACX,EAGEgxF,EAAG,UAAU,KAAO,SAAe73F,EAAK,CAEtC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GACrC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GAGrC,QADI6G,EAAM,EACD9H,GAAI,KAAK,OAAS,EAAGA,IAAK,EAAGA,KAAK,CACzC,IAAIiF,GAAI,KAAK,MAAMjF,EAAC,EAAI,EACpBiE,GAAIhD,EAAI,MAAMjB,EAAC,EAAI,EAEvB,GAAIiF,KAAMhB,GACV,CAAIgB,GAAIhB,GACN6D,EAAM,GACG7C,GAAIhB,KACb6D,EAAM,GAER,MACD,CACD,OAAOA,CACX,EAEEgxF,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC9B,EAEE63F,EAAG,UAAU,GAAK,SAAa73F,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC7B,EAEE63F,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC7B,EAEE63F,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC5B,EAEE63F,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,EAC9B,EAEE63F,EAAG,UAAU,GAAK,SAAa73F,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,EAC7B,EAEE63F,EAAG,UAAU,KAAO,SAAe73F,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC7B,EAEE63F,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC5B,EAEE63F,EAAG,UAAU,IAAM,SAAc73F,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC9B,EAEE63F,EAAG,UAAU,GAAK,SAAa73F,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC7B,EAME63F,EAAG,IAAM,SAAc73F,EAAK,CAC1B,OAAO,IAAIihG,GAAIjhG,CAAG,CACtB,EAEE63F,EAAG,UAAU,MAAQ,SAAgB9gF,EAAK,CACxC,OAAA45E,EAAO,CAAC,KAAK,IAAK,uCAAuC,EACzDA,EAAO,KAAK,WAAa,EAAG,+BAA+B,EACpD55E,EAAI,UAAU,IAAI,EAAE,UAAUA,CAAG,CAC5C,EAEE8gF,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAlH,EAAO,KAAK,IAAK,sDAAsD,EAChE,KAAK,IAAI,YAAY,IAAI,CACpC,EAEEkH,EAAG,UAAU,UAAY,SAAoB9gF,EAAK,CAChD,YAAK,IAAMA,EACJ,IACX,EAEE8gF,EAAG,UAAU,SAAW,SAAmB9gF,EAAK,CAC9C,OAAA45E,EAAO,CAAC,KAAK,IAAK,uCAAuC,EAClD,KAAK,UAAU55E,CAAG,CAC7B,EAEE8gF,EAAG,UAAU,OAAS,SAAiB73F,EAAK,CAC1C,OAAA2wF,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAM3wF,CAAG,CACjC,EAEE63F,EAAG,UAAU,QAAU,SAAkB73F,EAAK,CAC5C,OAAA2wF,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAM3wF,CAAG,CAClC,EAEE63F,EAAG,UAAU,OAAS,SAAiB73F,EAAK,CAC1C,OAAA2wF,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAM3wF,CAAG,CACjC,EAEE63F,EAAG,UAAU,QAAU,SAAkB73F,EAAK,CAC5C,OAAA2wF,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAM3wF,CAAG,CAClC,EAEE63F,EAAG,UAAU,OAAS,SAAiB73F,EAAK,CAC1C,OAAA2wF,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAM3wF,CAAG,CACjC,EAEE63F,EAAG,UAAU,OAAS,SAAiB73F,EAAK,CAC1C,OAAA2wF,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAM3wF,CAAG,EACpB,KAAK,IAAI,IAAI,KAAMA,CAAG,CACjC,EAEE63F,EAAG,UAAU,QAAU,SAAkB73F,EAAK,CAC5C,OAAA2wF,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAM3wF,CAAG,EACpB,KAAK,IAAI,KAAK,KAAMA,CAAG,CAClC,EAEE63F,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAAlH,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC5B,EAEEkH,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAlH,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC7B,EAGEkH,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAlH,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC7B,EAEEkH,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAlH,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC7B,EAGEkH,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAAlH,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC5B,EAEEkH,EAAG,UAAU,OAAS,SAAiB73F,EAAK,CAC1C,OAAA2wF,EAAO,KAAK,KAAO,CAAC3wF,EAAI,IAAK,mBAAmB,EAChD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,KAAMA,CAAG,CACjC,EAGE,IAAIkhG,EAAS,CACX,KAAM,KACN,KAAM,KACN,KAAM,KACN,OAAQ,IACZ,EAGE,SAASC,EAAQjiG,EAAM8V,EAAG,CAExB,KAAK,KAAO9V,EACZ,KAAK,EAAI,IAAI24F,EAAG7iF,EAAG,EAAE,EACrB,KAAK,EAAI,KAAK,EAAE,UAAS,EACzB,KAAK,EAAI,IAAI6iF,EAAG,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAE7C,KAAK,IAAM,KAAK,MACjB,CAEDsJ,EAAO,UAAU,KAAO,UAAiB,CACvC,IAAIthG,EAAM,IAAIg4F,EAAG,IAAI,EACrB,OAAAh4F,EAAI,MAAQ,IAAI,MAAM,KAAK,KAAK,KAAK,EAAI,EAAE,CAAC,EACrCA,CACX,EAEEshG,EAAO,UAAU,QAAU,SAAkBnhG,EAAK,CAGhD,IAAIyS,EAAIzS,EACJohG,GAEJ,GACE,KAAK,MAAM3uF,EAAG,KAAK,GAAG,EACtBA,EAAI,KAAK,MAAMA,CAAC,EAChBA,EAAIA,EAAE,KAAK,KAAK,GAAG,EACnB2uF,GAAO3uF,EAAE,kBACF2uF,GAAO,KAAK,GAErB,IAAIjI,GAAMiI,GAAO,KAAK,EAAI,GAAK3uF,EAAE,KAAK,KAAK,CAAC,EAC5C,OAAI0mF,KAAQ,GACV1mF,EAAE,MAAM,CAAC,EAAI,EACbA,EAAE,OAAS,GACF0mF,GAAM,EACf1mF,EAAE,KAAK,KAAK,CAAC,EAETA,EAAE,QAAU,OAEdA,EAAE,MAAK,EAGPA,EAAE,OAAM,EAILA,CACX,EAEE0uF,EAAO,UAAU,MAAQ,SAAgBx3F,EAAOlC,EAAK,CACnDkC,EAAM,OAAO,KAAK,EAAG,EAAGlC,CAAG,CAC/B,EAEE05F,EAAO,UAAU,MAAQ,SAAgBnhG,EAAK,CAC5C,OAAOA,EAAI,KAAK,KAAK,CAAC,CAC1B,EAEE,SAASqhG,GAAQ,CACfF,EAAO,KACL,KACA,OACA,yEAAyE,CAC5E,CACDz/C,EAAS2/C,EAAMF,CAAM,EAErBE,EAAK,UAAU,MAAQ,SAAgB13F,EAAOvJ,EAAQ,CAKpD,QAHIukD,GAAO,QAEP28C,GAAS,KAAK,IAAI33F,EAAM,OAAQ,CAAC,EAC5B5K,GAAI,EAAGA,GAAIuiG,GAAQviG,KAC1BqB,EAAO,MAAMrB,EAAC,EAAI4K,EAAM,MAAM5K,EAAC,EAIjC,GAFAqB,EAAO,OAASkhG,GAEZ33F,EAAM,QAAU,EAAG,CACrBA,EAAM,MAAM,CAAC,EAAI,EACjBA,EAAM,OAAS,EACf,MACD,CAGD,IAAImN,GAAOnN,EAAM,MAAM,CAAC,EAGxB,IAFAvJ,EAAO,MAAMA,EAAO,QAAQ,EAAI0W,GAAO6tC,GAElC5lD,GAAI,GAAIA,GAAI4K,EAAM,OAAQ5K,KAAK,CAClC,IAAIykB,GAAO7Z,EAAM,MAAM5K,EAAC,EAAI,EAC5B4K,EAAM,MAAM5K,GAAI,EAAE,GAAMykB,GAAOmhC,KAAS,EAAM7tC,KAAS,GACvDA,GAAO0M,EACR,CACD1M,MAAU,GACVnN,EAAM,MAAM5K,GAAI,EAAE,EAAI+X,GAClBA,KAAS,GAAKnN,EAAM,OAAS,GAC/BA,EAAM,QAAU,GAEhBA,EAAM,QAAU,CAEtB,EAEE03F,EAAK,UAAU,MAAQ,SAAgBrhG,EAAK,CAE1CA,EAAI,MAAMA,EAAI,MAAM,EAAI,EACxBA,EAAI,MAAMA,EAAI,OAAS,CAAC,EAAI,EAC5BA,EAAI,QAAU,EAId,QADIsI,EAAK,EACAvJ,GAAI,EAAGA,GAAIiB,EAAI,OAAQjB,KAAK,CACnC,IAAI46B,GAAI35B,EAAI,MAAMjB,EAAC,EAAI,EACvBuJ,GAAMqxB,GAAI,IACV35B,EAAI,MAAMjB,EAAC,EAAIuJ,EAAK,SACpBA,EAAKqxB,GAAI,IAASrxB,EAAK,SAAa,EACrC,CAGD,OAAItI,EAAI,MAAMA,EAAI,OAAS,CAAC,IAAM,IAChCA,EAAI,SACAA,EAAI,MAAMA,EAAI,OAAS,CAAC,IAAM,GAChCA,EAAI,UAGDA,CACX,EAEE,SAASuhG,IAAQ,CACfJ,EAAO,KACL,KACA,OACA,gEAAgE,CACnE,CACDz/C,EAAS6/C,GAAMJ,CAAM,EAErB,SAASK,IAAQ,CACfL,EAAO,KACL,KACA,OACA,uDAAuD,CAC1D,CACDz/C,EAAS8/C,GAAML,CAAM,EAErB,SAASM,IAAU,CAEjBN,EAAO,KACL,KACA,QACA,qEAAqE,CACxE,CACDz/C,EAAS+/C,GAAQN,CAAM,EAEvBM,GAAO,UAAU,MAAQ,SAAgBzhG,EAAK,CAG5C,QADIgjD,EAAQ,EACHjkD,GAAI,EAAGA,GAAIiB,EAAI,OAAQjB,KAAK,CACnC,IAAIwJ,IAAMvI,EAAI,MAAMjB,EAAC,EAAI,GAAK,GAAOikD,EACjC16C,GAAKC,GAAK,SACdA,MAAQ,GAERvI,EAAI,MAAMjB,EAAC,EAAIuJ,GACf06C,EAAQz6C,EACT,CACD,OAAIy6C,IAAU,IACZhjD,EAAI,MAAMA,EAAI,QAAQ,EAAIgjD,GAErBhjD,CACX,EAGE63F,EAAG,OAAS,SAAgB34F,EAAM,CAEhC,GAAIgiG,EAAOhiG,CAAI,EAAG,OAAOgiG,EAAOhiG,CAAI,EAEpC,IAAIwiG,EACJ,GAAIxiG,IAAS,OACXwiG,EAAQ,IAAIL,UACHniG,IAAS,OAClBwiG,EAAQ,IAAIH,WACHriG,IAAS,OAClBwiG,EAAQ,IAAIF,WACHtiG,IAAS,SAClBwiG,EAAQ,IAAID,OAEZ,OAAM,IAAI,MAAM,iBAAmBviG,CAAI,EAEzC,OAAAgiG,EAAOhiG,CAAI,EAAIwiG,EAERA,CACX,EAKE,SAAST,GAAKngG,EAAG,CACf,GAAI,OAAOA,GAAM,SAAU,CACzB,IAAI4gG,EAAQ7J,EAAG,OAAO/2F,CAAC,EACvB,KAAK,EAAI4gG,EAAM,EACf,KAAK,MAAQA,CACnB,MACM/Q,EAAO7vF,EAAE,IAAI,CAAC,EAAG,gCAAgC,EACjD,KAAK,EAAIA,EACT,KAAK,MAAQ,IAEhB,CAEDmgG,GAAI,UAAU,SAAW,SAAmBj9F,EAAG,CAC7C2sF,EAAO3sF,EAAE,WAAa,EAAG,+BAA+B,EACxD2sF,EAAO3sF,EAAE,IAAK,iCAAiC,CACnD,EAEEi9F,GAAI,UAAU,SAAW,SAAmBj9F,EAAGhB,EAAG,CAChD2tF,GAAQ3sF,EAAE,SAAWhB,EAAE,YAAc,EAAG,+BAA+B,EACvE2tF,EAAO3sF,EAAE,KAAOA,EAAE,MAAQhB,EAAE,IAC1B,iCAAiC,CACvC,EAEEi+F,GAAI,UAAU,KAAO,SAAej9F,EAAG,CACrC,OAAI,KAAK,MAAc,KAAK,MAAM,QAAQA,CAAC,EAAE,UAAU,IAAI,GAE3DikB,EAAKjkB,EAAGA,EAAE,KAAK,KAAK,CAAC,EAAE,UAAU,IAAI,CAAC,EAC/BA,EACX,EAEEi9F,GAAI,UAAU,IAAM,SAAcj9F,EAAG,CACnC,OAAIA,EAAE,SACGA,EAAE,QAGJ,KAAK,EAAE,IAAIA,CAAC,EAAE,UAAU,IAAI,CACvC,EAEEi9F,GAAI,UAAU,IAAM,SAAcj9F,EAAGhB,EAAG,CACtC,KAAK,SAASgB,EAAGhB,CAAC,EAElB,IAAI6D,GAAM7C,EAAE,IAAIhB,CAAC,EACjB,OAAI6D,GAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,GAAI,KAAK,KAAK,CAAC,EAEVA,GAAI,UAAU,IAAI,CAC7B,EAEEo6F,GAAI,UAAU,KAAO,SAAej9F,EAAGhB,EAAG,CACxC,KAAK,SAASgB,EAAGhB,CAAC,EAElB,IAAI6D,GAAM7C,EAAE,KAAKhB,CAAC,EAClB,OAAI6D,GAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,GAAI,KAAK,KAAK,CAAC,EAEVA,EACX,EAEEo6F,GAAI,UAAU,IAAM,SAAcj9F,EAAGhB,EAAG,CACtC,KAAK,SAASgB,EAAGhB,CAAC,EAElB,IAAI6D,GAAM7C,EAAE,IAAIhB,CAAC,EACjB,OAAI6D,GAAI,KAAK,CAAC,EAAI,GAChBA,GAAI,KAAK,KAAK,CAAC,EAEVA,GAAI,UAAU,IAAI,CAC7B,EAEEo6F,GAAI,UAAU,KAAO,SAAej9F,EAAGhB,EAAG,CACxC,KAAK,SAASgB,EAAGhB,CAAC,EAElB,IAAI6D,GAAM7C,EAAE,KAAKhB,CAAC,EAClB,OAAI6D,GAAI,KAAK,CAAC,EAAI,GAChBA,GAAI,KAAK,KAAK,CAAC,EAEVA,EACX,EAEEo6F,GAAI,UAAU,IAAM,SAAcj9F,EAAGhE,EAAK,CACxC,YAAK,SAASgE,CAAC,EACR,KAAK,KAAKA,EAAE,MAAMhE,CAAG,CAAC,CACjC,EAEEihG,GAAI,UAAU,KAAO,SAAej9F,EAAGhB,EAAG,CACxC,YAAK,SAASgB,EAAGhB,CAAC,EACX,KAAK,KAAKgB,EAAE,KAAKhB,CAAC,CAAC,CAC9B,EAEEi+F,GAAI,UAAU,IAAM,SAAcj9F,EAAGhB,EAAG,CACtC,YAAK,SAASgB,EAAGhB,CAAC,EACX,KAAK,KAAKgB,EAAE,IAAIhB,CAAC,CAAC,CAC7B,EAEEi+F,GAAI,UAAU,KAAO,SAAej9F,EAAG,CACrC,OAAO,KAAK,KAAKA,EAAGA,EAAE,MAAO,EACjC,EAEEi9F,GAAI,UAAU,IAAM,SAAcj9F,EAAG,CACnC,OAAO,KAAK,IAAIA,EAAGA,CAAC,CACxB,EAEEi9F,GAAI,UAAU,KAAO,SAAej9F,EAAG,CACrC,GAAIA,EAAE,OAAM,EAAI,OAAOA,EAAE,MAAK,EAE9B,IAAI29F,EAAO,KAAK,EAAE,MAAM,CAAC,EAIzB,GAHAhR,EAAOgR,EAAO,IAAM,CAAC,EAGjBA,IAAS,EAAG,CACd,IAAIpJ,GAAM,KAAK,EAAE,IAAI,IAAIV,EAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EACxC,OAAO,KAAK,IAAI7zF,EAAGu0F,EAAG,CACvB,CAOD,QAFIO,GAAI,KAAK,EAAE,KAAK,CAAC,EACjB13F,GAAI,EACD,CAAC03F,GAAE,OAAQ,GAAIA,GAAE,MAAM,CAAC,IAAM,GACnC13F,KACA03F,GAAE,OAAO,CAAC,EAEZnI,EAAO,CAACmI,GAAE,OAAM,CAAE,EAElB,IAAI8I,GAAM,IAAI/J,EAAG,CAAC,EAAE,MAAM,IAAI,EAC1BgK,GAAOD,GAAI,SAIXE,GAAO,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAC9B99B,EAAI,KAAK,EAAE,UAAS,EAGxB,IAFAA,EAAI,IAAI6zB,EAAG,EAAI7zB,EAAIA,CAAC,EAAE,MAAM,IAAI,EAEzB,KAAK,IAAIA,EAAG89B,EAAI,EAAE,IAAID,EAAI,IAAM,GACrC79B,EAAE,QAAQ69B,EAAI,EAOhB,QAJIvgG,GAAI,KAAK,IAAI0iE,EAAG80B,EAAC,EACjBrmF,GAAI,KAAK,IAAIzO,EAAG80F,GAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EACnCx4E,GAAI,KAAK,IAAItc,EAAG80F,EAAC,EACjBh4F,GAAIM,GACDkf,GAAE,IAAIshF,EAAG,IAAM,GAAG,CAEvB,QADI/hG,GAAMygB,GACDvhB,GAAI,EAAGc,GAAI,IAAI+hG,EAAG,IAAM,EAAG7iG,KAClCc,GAAMA,GAAI,SAEZ8wF,EAAO5xF,GAAI+B,EAAC,EACZ,IAAIkC,GAAI,KAAK,IAAI1B,GAAG,IAAIu2F,EAAG,CAAC,EAAE,OAAO/2F,GAAI/B,GAAI,CAAC,CAAC,EAE/C0T,GAAIA,GAAE,OAAOzP,EAAC,EACd1B,GAAI0B,GAAE,SACNsd,GAAIA,GAAE,OAAOhf,EAAC,EACdR,GAAI/B,EACL,CAED,OAAO0T,EACX,EAEEwuF,GAAI,UAAU,KAAO,SAAej9F,EAAG,CACrC,IAAI+9F,EAAM/9F,EAAE,OAAO,KAAK,CAAC,EACzB,OAAI+9F,EAAI,WAAa,GACnBA,EAAI,SAAW,EACR,KAAK,KAAKA,CAAG,EAAE,OAAM,GAErB,KAAK,KAAKA,CAAG,CAE1B,EAEEd,GAAI,UAAU,IAAM,SAAcj9F,EAAGhE,EAAK,CACxC,GAAIA,EAAI,OAAM,EAAI,OAAO,IAAI63F,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7C,GAAI73F,EAAI,KAAK,CAAC,IAAM,EAAG,OAAOgE,EAAE,QAEhC,IAAIg+F,GAAa,EACbC,GAAM,IAAI,MAAM,GAAKD,EAAU,EACnCC,GAAI,CAAC,EAAI,IAAIpK,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7BoK,GAAI,CAAC,EAAIj+F,EACT,QAASjF,GAAI,EAAGA,GAAIkjG,GAAI,OAAQljG,KAC9BkjG,GAAIljG,EAAC,EAAI,KAAK,IAAIkjG,GAAIljG,GAAI,CAAC,EAAGiF,CAAC,EAGjC,IAAI6C,GAAMo7F,GAAI,CAAC,EACXt3E,GAAU,EACVu3E,GAAa,EACbhiG,EAAQF,EAAI,UAAS,EAAK,GAK9B,IAJIE,IAAU,IACZA,EAAQ,IAGLnB,GAAIiB,EAAI,OAAS,EAAGjB,IAAK,EAAGA,KAAK,CAEpC,QADIu5F,GAAOt4F,EAAI,MAAMjB,EAAC,EACbkH,GAAI/F,EAAQ,EAAG+F,IAAK,EAAGA,KAAK,CACnC,IAAIwsF,GAAO6F,IAAQryF,GAAK,EAKxB,GAJIY,KAAQo7F,GAAI,CAAC,IACfp7F,GAAM,KAAK,IAAIA,EAAG,GAGhB4rF,KAAQ,GAAK9nE,KAAY,EAAG,CAC9Bu3E,GAAa,EACb,QACD,CAEDv3E,KAAY,EACZA,IAAW8nE,GACXyP,KACI,EAAAA,KAAeF,KAAejjG,KAAM,GAAKkH,KAAM,MAEnDY,GAAM,KAAK,IAAIA,GAAKo7F,GAAIt3E,EAAO,CAAC,EAChCu3E,GAAa,EACbv3E,GAAU,EACX,CACDzqB,EAAQ,EACT,CAED,OAAO2G,EACX,EAEEo6F,GAAI,UAAU,UAAY,SAAoBjhG,EAAK,CACjD,IAAIyS,EAAIzS,EAAI,KAAK,KAAK,CAAC,EAEvB,OAAOyS,IAAMzS,EAAMyS,EAAE,MAAK,EAAKA,CACnC,EAEEwuF,GAAI,UAAU,YAAc,SAAsBjhG,EAAK,CACrD,IAAI6G,EAAM7G,EAAI,QACd,OAAA6G,EAAI,IAAM,KACHA,CACX,EAMEgxF,EAAG,KAAO,SAAe73F,EAAK,CAC5B,OAAO,IAAImiG,EAAKniG,CAAG,CACvB,EAEE,SAASmiG,EAAMrhG,EAAG,CAChBmgG,GAAI,KAAK,KAAMngG,CAAC,EAEhB,KAAK,MAAQ,KAAK,EAAE,UAAS,EACzB,KAAK,MAAQ,KAAO,IACtB,KAAK,OAAS,GAAM,KAAK,MAAQ,IAGnC,KAAK,EAAI,IAAI+2F,EAAG,CAAC,EAAE,OAAO,KAAK,KAAK,EACpC,KAAK,GAAK,KAAK,KAAK,KAAK,EAAE,IAAG,CAAE,EAChC,KAAK,KAAO,KAAK,EAAE,OAAO,KAAK,CAAC,EAEhC,KAAK,KAAO,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,EACrD,KAAK,KAAO,KAAK,KAAK,KAAK,KAAK,CAAC,EACjC,KAAK,KAAO,KAAK,EAAE,IAAI,KAAK,IAAI,CACjC,CACDn2C,EAASygD,EAAMlB,EAAG,EAElBkB,EAAK,UAAU,UAAY,SAAoBniG,EAAK,CAClD,OAAO,KAAK,KAAKA,EAAI,MAAM,KAAK,KAAK,CAAC,CAC1C,EAEEmiG,EAAK,UAAU,YAAc,SAAsBniG,EAAK,CACtD,IAAIyS,EAAI,KAAK,KAAKzS,EAAI,IAAI,KAAK,IAAI,CAAC,EACpC,OAAAyS,EAAE,IAAM,KACDA,CACX,EAEE0vF,EAAK,UAAU,KAAO,SAAen+F,EAAGhB,EAAG,CACzC,GAAIgB,EAAE,OAAM,GAAMhB,EAAE,OAAM,EACxB,OAAAgB,EAAE,MAAM,CAAC,EAAI,EACbA,EAAE,OAAS,EACJA,EAGT,IAAIsc,GAAItc,EAAE,KAAKhB,CAAC,EACZ1B,GAAIgf,GAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEuF,GAAIvF,GAAE,KAAKhf,EAAC,EAAE,OAAO,KAAK,KAAK,EAC/BuF,GAAMgf,GAEV,OAAIA,GAAE,IAAI,KAAK,CAAC,GAAK,EACnBhf,GAAMgf,GAAE,KAAK,KAAK,CAAC,EACVA,GAAE,KAAK,CAAC,EAAI,IACrBhf,GAAMgf,GAAE,KAAK,KAAK,CAAC,GAGdhf,GAAI,UAAU,IAAI,CAC7B,EAEEs7F,EAAK,UAAU,IAAM,SAAcn+F,EAAGhB,EAAG,CACvC,GAAIgB,EAAE,UAAYhB,EAAE,OAAQ,EAAE,OAAO,IAAI60F,EAAG,CAAC,EAAE,UAAU,IAAI,EAE7D,IAAIv3E,GAAItc,EAAE,IAAIhB,CAAC,EACX1B,GAAIgf,GAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEuF,GAAIvF,GAAE,KAAKhf,EAAC,EAAE,OAAO,KAAK,KAAK,EAC/BuF,GAAMgf,GACV,OAAIA,GAAE,IAAI,KAAK,CAAC,GAAK,EACnBhf,GAAMgf,GAAE,KAAK,KAAK,CAAC,EACVA,GAAE,KAAK,CAAC,EAAI,IACrBhf,GAAMgf,GAAE,KAAK,KAAK,CAAC,GAGdhf,GAAI,UAAU,IAAI,CAC7B,EAEEs7F,EAAK,UAAU,KAAO,SAAen+F,EAAG,CAEtC,IAAI6C,EAAM,KAAK,KAAK7C,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,EACjD,OAAO6C,EAAI,UAAU,IAAI,CAC7B,IACoC2zC,EAAQ4nD,cAAI,sMC19GhD,IAAI,QAAU,SAAUjvD,EAAItmC,EAAM,CAC9B,GAAIsmC,EAAG,QAAS,OAAOA,EAAG,QAAQtmC,CAAI,EACjC,QAAS9N,EAAI,EAAGA,EAAIo0C,EAAG,OAAQp0C,IAChC,GAAIo0C,EAAGp0C,CAAC,IAAM8N,EAAM,OAAO9N,EAE/B,MAAO,EACX,EACI,YAAc,SAAU+E,EAAK,CAC7B,GAAI,OAAO,KAAM,OAAO,OAAO,KAAKA,CAAG,EAEnC,IAAI+C,EAAM,GACV,QAAS2E,KAAO1H,EAAK+C,EAAI,KAAK2E,CAAG,EACjC,OAAO3E,CAEf,EAEI,QAAU,SAAUssC,EAAIxoC,EAAI,CAC5B,GAAIwoC,EAAG,QAAS,OAAOA,EAAG,QAAQxoC,CAAE,EAC/B,QAAS5L,EAAI,EAAGA,EAAIo0C,EAAG,OAAQp0C,IAChC4L,EAAGwoC,EAAGp0C,CAAC,EAAGA,EAAGo0C,CAAE,CAEvB,EAEI,WAAc,UAAW,CACzB,GAAI,CACA,cAAO,eAAe,GAAI,IAAK,CAAE,GAC1B,SAASrvC,EAAK5E,EAAMmC,EAAO,CAC9B,OAAO,eAAeyC,EAAK5E,EAAM,CAC7B,SAAU,GACV,WAAY,GACZ,aAAc,GACd,MAAOmC,CACvB,CAAa,CACb,CACK,MAAU,CACP,OAAO,SAASyC,EAAK5E,EAAMmC,EAAO,CAC9ByC,EAAI5E,CAAI,EAAImC,CACxB,CACK,CACJ,IAEG,QAAU,CAAC,QAAS,UAAW,OAAQ,QAAS,YAAa,WACjE,WAAY,OAAQ,OAAQ,MAAO,SAAU,SAAU,aACvD,iBAAkB,SAAU,SAAU,cAAe,YAAa,WAClE,YAAa,qBAAsB,YAAa,qBAAsB,SACtE,OAAQ,WAAY,QAAS,aAAc,WAAY,YAAa,UAAU,EAE9E,SAAS,SAAU,CAAE,CACrB,QAAQ,UAAY,GAEpB,IAAI,OAAS,eAAiB,SAAqB7B,EAAM,CACrD,GAAI,EAAE,gBAAgB,QAAS,OAAO,IAAI,OAAOA,CAAI,EACrD,KAAK,KAAOA,CAChB,EAEA,OAAO,UAAU,aAAe,SAAU0e,EAAS,CAC/C,GAAI,EAAEA,aAAmB,SACrB,MAAM,IAAI,UAAU,6BAA6B,EAGrD,IAAI63F,EAAS,SAAS,cAAc,QAAQ,EACvCA,EAAO,QAAOA,EAAO,MAAQ,IAClCA,EAAO,MAAM,QAAU,OAEvB,SAAS,KAAK,YAAYA,CAAM,EAEhC,IAAInjE,EAAMmjE,EAAO,cACbC,EAAQpjE,EAAI,KAAMqjE,EAAcrjE,EAAI,WAEpC,CAACojE,GAASC,IAEVA,EAAY,KAAKrjE,EAAK,MAAM,EAC5BojE,EAAQpjE,EAAI,MAGhB,QAAQ,YAAY10B,CAAO,EAAG,SAAU1S,EAAK,CACzConC,EAAIpnC,CAAG,EAAI0S,EAAQ1S,CAAG,CAC9B,CAAK,EACD,QAAQ,QAAS,SAAUA,EAAK,CACxB0S,EAAQ1S,CAAG,IACXonC,EAAIpnC,CAAG,EAAI0S,EAAQ1S,CAAG,EAElC,CAAK,EAED,IAAI0qG,EAAU,YAAYtjE,CAAG,EAEzB/rC,EAAMmvG,EAAM,KAAKpjE,EAAK,KAAK,IAAI,EAEnC,eAAQ,YAAYA,CAAG,EAAG,SAAUpnC,EAAK,EAIjCA,KAAO0S,GAAW,QAAQg4F,EAAS1qG,CAAG,IAAM,MAC5C0S,EAAQ1S,CAAG,EAAIonC,EAAIpnC,CAAG,EAElC,CAAK,EAED,QAAQ,QAAS,SAAUA,EAAK,CACtBA,KAAO0S,GACT,WAAWA,EAAS1S,EAAKonC,EAAIpnC,CAAG,CAAC,CAE7C,CAAK,EAED,SAAS,KAAK,YAAYuqG,CAAM,EAEzBlvG,CACX,EAEA,OAAO,UAAU,iBAAmB,UAAY,CAC5C,OAAO,KAAK,KAAK,IAAI,CACzB,EAEA,OAAO,UAAU,gBAAkB,SAAUqX,EAAS,CAClD,IAAInH,EAAM,OAAO,cAAcmH,CAAO,EAClCrX,EAAM,KAAK,aAAakQ,CAAG,EAE/B,OAAImH,GACA,QAAQ,YAAYnH,CAAG,EAAG,SAAUvL,EAAK,CACrC0S,EAAQ1S,CAAG,EAAIuL,EAAIvL,CAAG,CAClC,CAAS,EAGE3E,CACX,EAEA,QAAQ,YAAY,OAAO,SAAS,EAAG,SAAU3H,EAAM,CACnD,QAAQA,CAAI,EAAI,OAAOA,CAAI,EAAI,SAAUM,EAAM,CAC3C,IAAI4B,EAAI,OAAO5B,CAAI,EACnB,OAAO4B,EAAElC,CAAI,EAAE,MAAMkC,EAAG,GAAG,MAAM,KAAK,UAAW,CAAC,CAAC,CAC3D,CACA,CAAC,EAED,QAAoB,mBAAU8c,EAAS,CACnC,OAAOA,aAAmB,OAC9B,EAEA,QAAuB,sBAAU1e,EAAM,CACnC,OAAO,QAAQ,OAAOA,CAAI,CAC9B,EAEA,sBAAwB,OAAO,cAAgB,SAAU0e,EAAS,CAC9D,IAAIta,EAAO,IAAI,QACf,OAAG,OAAOsa,GAAY,UAClB,QAAQ,YAAYA,CAAO,EAAG,SAAU1S,EAAK,CACzC5H,EAAK4H,CAAG,EAAI0S,EAAQ1S,CAAG,CACnC,CAAS,EAEE5H,8HCnJX,IAAI0kE,EAAOlpB,gBACPsC,EAAWC,wBAEXue,EAAM1+D,EAEV0+D,EAAI,OAAS,SAAgBhhE,EAAMi3G,EAAM,CACvC,OAAO,IAAIC,EAAOl3G,EAAMi3G,CAAI,CAC9B,EAEA,SAASC,EAAOl3G,EAAMi3G,EAAM,CAC1B,KAAK,KAAOj3G,EACZ,KAAK,KAAOi3G,EAEZ,KAAK,SAAW,GAChB,KAAK,SAAW,EAElB,CACAC,EAAO,UAAU,aAAe,SAAqBh5F,EAAM,CACzD,IAAIi5F,EACJ,GAAI,CACFA,EAAQ1/C,oBAAa,EAAC,iBACpB,aAAe,KAAK,KAAO;AAAA;AAAA,GAGjC,CACG,MAAW,CACV0/C,EAAQ,SAAUC,EAAQ,CACxB,KAAK,WAAWA,CAAM,CAC5B,CACG,CACD,OAAA50D,EAAS20D,EAAOj5F,CAAI,EACpBi5F,EAAM,UAAU,WAAa,SAAmBC,EAAQ,CACtDl5F,EAAK,KAAK,KAAMk5F,CAAM,CAC1B,EAES,IAAID,EAAM,IAAI,CACvB,EAEAD,EAAO,UAAU,YAAc,SAAqB72B,EAAK,CACvD,OAAAA,EAAMA,GAAO,MAER,KAAK,SAAS,eAAeA,CAAG,IACnC,KAAK,SAASA,CAAG,EAAI,KAAK,aAAajX,EAAK,SAASiX,CAAG,CAAC,GACpD,KAAK,SAASA,CAAG,CAC1B,EAEA62B,EAAO,UAAU,OAAS,SAAgBz+F,EAAM4nE,EAAK1oE,EAAS,CAC5D,OAAO,KAAK,YAAY0oE,CAAG,EAAE,OAAO5nE,EAAMd,CAAO,CACnD,EAEAu/F,EAAO,UAAU,YAAc,SAAqB72B,EAAK,CACvD,OAAAA,EAAMA,GAAO,MAER,KAAK,SAAS,eAAeA,CAAG,IACnC,KAAK,SAASA,CAAG,EAAI,KAAK,aAAajX,EAAK,SAASiX,CAAG,CAAC,GACpD,KAAK,SAASA,CAAG,CAC1B,EAEA62B,EAAO,UAAU,OAAS,SAAgBz+F,EAAM4nE,EAAoBg3B,EAAU,CAC5E,OAAO,KAAK,YAAYh3B,CAAG,EAAE,OAAO5nE,EAAM4+F,CAAQ,oJC3DpD,IAAI70D,EAAWtC,wBAEf,SAASo3D,EAAS3/F,EAAS,CACzB,KAAK,eAAiB,CACpB,IAAK,KACL,KAAM,CAAE,EACR,QAASA,GAAW,CAAE,EACtB,OAAQ,CAAE,CACd,CACC,CACe,kBAAG2/F,EAEnBA,EAAS,UAAU,QAAU,SAAiB1yG,EAAK,CACjD,OAAOA,aAAe2yG,CACxB,EAEAD,EAAS,UAAU,KAAO,UAAgB,CACxC,IAAIh8F,EAAQ,KAAK,eAEjB,MAAO,CAAE,IAAKA,EAAM,IAAK,QAASA,EAAM,KAAK,OAC/C,EAEAg8F,EAAS,UAAU,QAAU,SAAiB7+F,EAAM,CAClD,IAAI6C,EAAQ,KAAK,eAEjBA,EAAM,IAAM7C,EAAK,IACjB6C,EAAM,KAAOA,EAAM,KAAK,MAAM,EAAG7C,EAAK,OAAO,CAC/C,EAEA6+F,EAAS,UAAU,SAAW,SAAkBhrG,EAAK,CACnD,OAAO,KAAK,eAAe,KAAK,KAAKA,CAAG,CAC1C,EAEAgrG,EAAS,UAAU,QAAU,SAAiBn8F,EAAO,CACnD,IAAIG,EAAQ,KAAK,eAEjBA,EAAM,KAAOA,EAAM,KAAK,MAAM,EAAGH,EAAQ,CAAC,CAC5C,EAEAm8F,EAAS,UAAU,SAAW,SAAkBn8F,EAAO7O,EAAKnK,EAAO,CACjE,IAAImZ,EAAQ,KAAK,eAEjB,KAAK,QAAQH,CAAK,EACdG,EAAM,MAAQ,OAChBA,EAAM,IAAIhP,CAAG,EAAInK,EACrB,EAEAm1G,EAAS,UAAU,KAAO,UAAgB,CACxC,OAAO,KAAK,eAAe,KAAK,KAAK,GAAG,CAC1C,EAEAA,EAAS,UAAU,YAAc,UAAuB,CACtD,IAAIh8F,EAAQ,KAAK,eAEb1D,EAAO0D,EAAM,IACjB,OAAAA,EAAM,IAAM,GACL1D,CACT,EAEA0/F,EAAS,UAAU,YAAc,SAAqB1/F,EAAM,CAC1D,IAAI0D,EAAQ,KAAK,eAEb2iC,EAAM3iC,EAAM,IAChB,OAAAA,EAAM,IAAM1D,EACLqmC,CACT,EAEAq5D,EAAS,UAAU,MAAQ,SAAe5sG,EAAK,CAC7C,IAAI0K,EACAkG,EAAQ,KAAK,eAEbk8F,EAAY9sG,aAAe6sG,EAS/B,GARIC,EACFpiG,EAAM1K,EAEN0K,EAAM,IAAImiG,EAAcj8F,EAAM,KAAK,IAAI,SAASm8F,EAAM,CACpD,MAAO,IAAM,KAAK,UAAUA,CAAI,EAAI,GAC1C,CAAK,EAAE,KAAK,EAAE,EAAG/sG,EAAI,SAAWA,EAAKA,EAAI,KAAK,EAGxC,CAAC4Q,EAAM,QAAQ,QACjB,MAAMlG,EAER,OAAKoiG,GACHl8F,EAAM,OAAO,KAAKlG,CAAG,EAEhBA,CACT,EAEAkiG,EAAS,UAAU,WAAa,SAAoB9mG,EAAQ,CAC1D,IAAI8K,EAAQ,KAAK,eACjB,OAAKA,EAAM,QAAQ,QAGZ,CACL,OAAQ,KAAK,QAAQ9K,CAAM,EAAI,KAAOA,EACtC,OAAQ8K,EAAM,MAClB,EALW9K,CAMX,EAEA,SAAS+mG,EAAcjsF,EAAM5gB,EAAK,CAChC,KAAK,KAAO4gB,EACZ,KAAK,QAAQ5gB,CAAG,CAClB,CACA,OAAA83C,EAAS+0D,EAAe,KAAK,EAE7BA,EAAc,UAAU,QAAU,SAAiB7sG,EAAK,CAKtD,GAJA,KAAK,QAAUA,EAAM,SAAW,KAAK,MAAQ,aACzC,MAAM,mBACR,MAAM,kBAAkB,KAAM6sG,CAAa,EAEzC,CAAC,KAAK,MACR,GAAI,CAEF,MAAM,IAAI,MAAM,KAAK,OAAO,CAC7B,OAAQ51G,EAAG,CACV,KAAK,MAAQA,EAAE,KAChB,CAEH,OAAO,+HCvHT,IAAI6gD,EAAWtC,wBACXo3D,EAAW70D,YAAkB,EAAC,SAC9B//C,EAAS+0D,aAAkB,OAE/B,SAASigD,EAAcx5F,EAAMvG,EAAS,CAEpC,GADA2/F,EAAS,KAAK,KAAM3/F,CAAO,EACvB,CAACjV,EAAO,SAASwb,CAAI,EAAG,CAC1B,KAAK,MAAM,kBAAkB,EAC7B,MACD,CAED,KAAK,KAAOA,EACZ,KAAK,OAAS,EACd,KAAK,OAASA,EAAK,MACpB,CACDskC,EAASk1D,EAAeJ,CAAQ,EACX,qBAAGI,EAExBA,EAAc,UAAU,KAAO,UAAgB,CAC7C,MAAO,CAAE,OAAQ,KAAK,OAAQ,SAAUJ,EAAS,UAAU,KAAK,KAAK,IAAI,CAAC,CAC5E,EAEAI,EAAc,UAAU,QAAU,SAAiBC,EAAM,CAEvD,IAAIhwG,EAAM,IAAI+vG,EAAc,KAAK,IAAI,EACrC,OAAA/vG,EAAI,OAASgwG,EAAK,OAClBhwG,EAAI,OAAS,KAAK,OAElB,KAAK,OAASgwG,EAAK,OACnBL,EAAS,UAAU,QAAQ,KAAK,KAAMK,EAAK,QAAQ,EAE5ChwG,CACT,EAEA+vG,EAAc,UAAU,QAAU,UAAmB,CACnD,OAAO,KAAK,SAAW,KAAK,MAC9B,EAEAA,EAAc,UAAU,UAAY,SAAmBE,EAAM,CAC3D,OAAI,KAAK,OAAS,GAAK,KAAK,OACnB,KAAK,KAAK,UAAU,KAAK,SAAU,EAAI,EAEvC,KAAK,MAAMA,GAAQ,uBAAuB,CACpD,EAEDF,EAAc,UAAU,KAAO,SAAcjvG,EAAOmvG,EAAM,CACxD,GAAI,EAAE,KAAK,OAASnvG,GAAS,KAAK,QAChC,OAAO,KAAK,MAAMmvG,GAAQ,uBAAuB,EAEnD,IAAIjwG,EAAM,IAAI+vG,EAAc,KAAK,IAAI,EAGrC,OAAA/vG,EAAI,eAAiB,KAAK,eAE1BA,EAAI,OAAS,KAAK,OAClBA,EAAI,OAAS,KAAK,OAASc,EAC3B,KAAK,QAAUA,EACRd,CACR,EAED+vG,EAAc,UAAU,IAAM,SAAaC,EAAM,CAC/C,OAAO,KAAK,KAAK,MAAMA,EAAOA,EAAK,OAAS,KAAK,OAAQ,KAAK,MAAM,CACrE,EAED,SAASE,EAAc11G,EAAOk1G,EAAU,CACtC,GAAI,MAAM,QAAQl1G,CAAK,EACrB,KAAK,OAAS,EACd,KAAK,MAAQA,EAAM,IAAI,SAASwL,EAAM,CACpC,OAAMA,aAAgBkqG,IACpBlqG,EAAO,IAAIkqG,EAAclqG,EAAM0pG,CAAQ,GACzC,KAAK,QAAU1pG,EAAK,OACbA,CACR,EAAE,IAAI,UACE,OAAOxL,GAAU,SAAU,CACpC,GAAI,EAAE,GAAKA,GAASA,GAAS,KAC3B,OAAOk1G,EAAS,MAAM,8BAA8B,EACtD,KAAK,MAAQl1G,EACb,KAAK,OAAS,CAClB,SAAa,OAAOA,GAAU,SAC1B,KAAK,MAAQA,EACb,KAAK,OAASO,EAAO,WAAWP,CAAK,UAC5BO,EAAO,SAASP,CAAK,EAC9B,KAAK,MAAQA,EACb,KAAK,OAASA,EAAM,WAEpB,QAAOk1G,EAAS,MAAM,qBAAuB,OAAOl1G,CAAK,CAE5D,CACoB,4BAAG01G,EAExBA,EAAc,UAAU,KAAO,SAActvG,EAAKhH,EAAQ,CAMxD,OALKgH,IACHA,EAAM,IAAI7F,EAAO,KAAK,MAAM,GACzBnB,IACHA,EAAS,GAEP,KAAK,SAAW,IAGhB,MAAM,QAAQ,KAAK,KAAK,EAC1B,KAAK,MAAM,QAAQ,SAASoM,EAAM,CAChCA,EAAK,KAAKpF,EAAKhH,CAAM,EACrBA,GAAUoM,EAAK,MACrB,CAAK,GAEG,OAAO,KAAK,OAAU,SACxBpF,EAAIhH,CAAM,EAAI,KAAK,MACZ,OAAO,KAAK,OAAU,SAC7BgH,EAAI,MAAM,KAAK,MAAOhH,CAAM,EACrBmB,EAAO,SAAS,KAAK,KAAK,GACjC,KAAK,MAAM,KAAK6F,EAAKhH,CAAM,EAC7BA,GAAU,KAAK,SAGVgH,2GClHT,IAAI+uG,EAAWp3D,YAAkB,EAAC,SAC9B23D,EAAgB33D,YAAkB,EAAC,cACnCw3D,EAAgBx3D,YAAkB,EAAC,cACnCuxC,EAAShvC,4BAGTq1D,EAAO,CACT,MAAO,QAAS,MAAO,QAAS,QAAS,OACzC,UAAW,UAAW,QAAS,OAAQ,MAAO,UAC9C,SAAU,SAAU,UAAW,SAAU,WAAY,SAAU,YAC/D,SAAU,SAAU,WAAY,SAAU,SAAU,UAAW,UACjE,EAGI77F,EAAU,CACZ,MAAO,MAAO,MAAO,WAAY,WAAY,WAAY,MAAO,SAChE,MAAO,UACT,EAAE,OAAO67F,CAAI,EAGTC,EAAY,CACd,WAAY,aAAc,OAC1B,aAAc,eAAgB,cAC9B,cAAe,aAAc,cAAe,cAE5C,mBAAoB,aAAc,eAAgB,cAClD,cAAe,aAAc,aAC/B,EAEA,SAASC,EAAK33B,EAAKtmE,EAAQ,CACzB,IAAIuB,EAAQ,GACZ,KAAK,WAAaA,EAElBA,EAAM,IAAM+kE,EAEZ/kE,EAAM,OAASvB,GAAU,KACzBuB,EAAM,SAAW,KAGjBA,EAAM,IAAM,KACZA,EAAM,KAAO,KACbA,EAAM,YAAc,KACpBA,EAAM,OAAS,KACfA,EAAM,SAAW,GACjBA,EAAM,IAAM,GACZA,EAAM,IAAM,GACZA,EAAM,IAAM,KACZA,EAAM,WAAa,KACnBA,EAAM,IAAM,KACZA,EAAM,QAAa,KACnBA,EAAM,SAAW,KACjBA,EAAM,SAAW,KACjBA,EAAM,SAAW,KAGZA,EAAM,SACTA,EAAM,SAAW,GACjB,KAAK,MAAK,EAEb,CACa,KAAG08F,EAEjB,IAAIC,EAAa,CACf,MAAO,SAAU,WAAY,MAAO,OAAQ,cAAe,SAC3D,WAAY,MAAO,MAAO,MAAO,aAAc,MAAO,UAAW,WACjE,WAAY,UACd,EAEA,OAAAD,EAAK,UAAU,MAAQ,UAAiB,CACtC,IAAI18F,EAAQ,KAAK,WACb48F,EAAS,GACbD,EAAW,QAAQ,SAASl3F,EAAM,CAChCm3F,EAAOn3F,CAAI,EAAIzF,EAAMyF,CAAI,CAC7B,CAAG,EACD,IAAIpZ,EAAM,IAAI,KAAK,YAAYuwG,EAAO,MAAM,EAC5C,OAAAvwG,EAAI,WAAauwG,EACVvwG,CACT,EAEAqwG,EAAK,UAAU,MAAQ,UAAgB,CACrC,IAAI18F,EAAQ,KAAK,WACjBW,EAAQ,QAAQ,SAASxK,EAAQ,CAC/B,KAAKA,CAAM,EAAI,UAA0B,CACvC,IAAIykB,EAAQ,IAAI,KAAK,YAAY,IAAI,EACrC,OAAA5a,EAAM,SAAS,KAAK4a,CAAK,EAClBA,EAAMzkB,CAAM,EAAE,MAAMykB,EAAO,SAAS,CACjD,CACG,EAAE,IAAI,CACT,EAEA8hF,EAAK,UAAU,MAAQ,SAAcf,EAAM,CACzC,IAAI37F,EAAQ,KAAK,WAEjBm2E,EAAOn2E,EAAM,SAAW,IAAI,EAC5B27F,EAAK,KAAK,IAAI,EAGd37F,EAAM,SAAWA,EAAM,SAAS,OAAO,SAAS8J,EAAO,CACrD,OAAOA,EAAM,WAAW,SAAW,IACpC,EAAE,IAAI,EACPqsE,EAAO,MAAMn2E,EAAM,SAAS,OAAQ,EAAG,mCAAmC,CAC5E,EAEA08F,EAAK,UAAU,SAAW,SAAiBp4G,EAAM,CAC/C,IAAI0b,EAAQ,KAAK,WAGbkG,EAAW5hB,EAAK,OAAO,SAASyD,EAAK,CACvC,OAAOA,aAAe,KAAK,WAC5B,EAAE,IAAI,EACPzD,EAAOA,EAAK,OAAO,SAASyD,EAAK,CAC/B,MAAO,EAAEA,aAAe,KAAK,YAC9B,EAAE,IAAI,EAEHme,EAAS,SAAW,IACtBiwE,EAAOn2E,EAAM,WAAa,IAAI,EAC9BA,EAAM,SAAWkG,EAGjBA,EAAS,QAAQ,SAAS4D,EAAO,CAC/BA,EAAM,WAAW,OAAS,IAC3B,EAAE,IAAI,GAELxlB,EAAK,SAAW,IAClB6xF,EAAOn2E,EAAM,OAAS,IAAI,EAC1BA,EAAM,KAAO1b,EACb0b,EAAM,YAAc1b,EAAK,IAAI,SAASyD,EAAK,CACzC,GAAI,OAAOA,GAAQ,UAAYA,EAAI,cAAgB,OACjD,OAAOA,EAET,IAAIsE,EAAM,GACV,cAAO,KAAKtE,CAAG,EAAE,QAAQ,SAASiJ,EAAK,CACjCA,IAAQA,EAAM,KAChBA,GAAO,GACT,IAAInK,EAAQkB,EAAIiJ,CAAG,EACnB3E,EAAIxF,CAAK,EAAImK,CACrB,CAAO,EACM3E,CACb,CAAK,EAEL,EAMAowG,EAAU,QAAQ,SAAStmG,EAAQ,CACjCumG,EAAK,UAAUvmG,CAAM,EAAI,UAAsB,CAC7C,IAAI6J,EAAQ,KAAK,WACjB,MAAM,IAAI,MAAM7J,EAAS,kCAAoC6J,EAAM,GAAG,CAC1E,CACA,CAAC,EAMDw8F,EAAK,QAAQ,SAAShmF,EAAK,CACzBkmF,EAAK,UAAUlmF,CAAG,EAAI,UAAsB,CAC1C,IAAIxW,EAAQ,KAAK,WACb1b,EAAO,MAAM,UAAU,MAAM,KAAK,SAAS,EAE/C,OAAA6xF,EAAOn2E,EAAM,MAAQ,IAAI,EACzBA,EAAM,IAAMwW,EAEZ,KAAK,SAASlyB,CAAI,EAEX,IACX,CACA,CAAC,EAEDo4G,EAAK,UAAU,IAAM,SAAarqG,EAAM,CACtC8jF,EAAO9jF,CAAI,EACX,IAAI2N,EAAQ,KAAK,WAEjB,OAAAm2E,EAAOn2E,EAAM,MAAQ,IAAI,EACzBA,EAAM,IAAM3N,EAEL,IACT,EAEAqqG,EAAK,UAAU,SAAW,UAAoB,CAC5C,IAAI18F,EAAQ,KAAK,WAEjB,OAAAA,EAAM,SAAW,GAEV,IACT,EAEA08F,EAAK,UAAU,IAAM,SAAazxG,EAAK,CACrC,IAAI+U,EAAQ,KAAK,WAEjB,OAAAm2E,EAAOn2E,EAAM,UAAe,IAAI,EAChCA,EAAM,QAAa/U,EACnB+U,EAAM,SAAW,GAEV,IACT,EAEA08F,EAAK,UAAU,SAAW,SAAkBl3G,EAAK,CAC/C,IAAIwa,EAAQ,KAAK,WAEjB,OAAAm2E,EAAOn2E,EAAM,WAAa,MAAQA,EAAM,WAAa,IAAI,EACzDA,EAAM,SAAWxa,EAEV,IACT,EAEAk3G,EAAK,UAAU,SAAW,SAAkBl3G,EAAK,CAC/C,IAAIwa,EAAQ,KAAK,WAEjB,OAAAm2E,EAAOn2E,EAAM,WAAa,MAAQA,EAAM,WAAa,IAAI,EACzDA,EAAM,SAAWxa,EAEV,IACT,EAEAk3G,EAAK,UAAU,IAAM,UAAe,CAClC,IAAI18F,EAAQ,KAAK,WACb1b,EAAO,MAAM,UAAU,MAAM,KAAK,SAAS,EAE/C,OAAA0b,EAAM,IAAM,GAER1b,EAAK,SAAW,GAClB,KAAK,SAASA,CAAI,EAEb,IACT,EAEAo4G,EAAK,UAAU,IAAM,SAAaG,EAAQ,CACxC,IAAI78F,EAAQ,KAAK,WAEjB,OAAAm2E,EAAOn2E,EAAM,MAAQ,IAAI,EACzBA,EAAM,IAAM68F,EAEL,IACT,EAEAH,EAAK,UAAU,IAAM,UAAe,CAClC,IAAI18F,EAAQ,KAAK,WAEjB,OAAAA,EAAM,IAAM,GAEL,IACT,EAEA08F,EAAK,UAAU,OAAS,SAAgBpzG,EAAK,CAC3C,IAAI0W,EAAQ,KAAK,WAEjB,OAAAm2E,EAAOn2E,EAAM,SAAW,IAAI,EAC5BA,EAAM,OAAS1W,EACf,KAAK,SAAS,OAAO,KAAKA,CAAG,EAAE,IAAI,SAAS0H,EAAK,CAC/C,OAAO1H,EAAI0H,CAAG,CACf,EAAC,EAEK,IACT,EAEA0rG,EAAK,UAAU,SAAW,SAAkBrqG,EAAM,CAChD,IAAI2N,EAAQ,KAAK,WAEjB,OAAAm2E,EAAOn2E,EAAM,MAAQ,IAAI,EACzBA,EAAM,SAAW3N,EAEV,IACT,EAMAqqG,EAAK,UAAU,QAAU,SAAgBvtG,EAAOkN,EAAS,CACvD,IAAI2D,EAAQ,KAAK,WAGjB,GAAIA,EAAM,SAAW,KACnB,OAAO7Q,EAAM,WAAW6Q,EAAM,SAAS,CAAC,EAAE,QAAQ7Q,EAAOkN,CAAO,CAAC,EAEnE,IAAInH,EAAS8K,EAAM,QACf88F,EAAU,GAEVC,EAAU,KAKd,GAJI/8F,EAAM,MAAQ,OAChB+8F,EAAU5tG,EAAM,SAAS6Q,EAAM,GAAG,GAGhCA,EAAM,SAAU,CAClB,IAAIwW,EAAM,KAQV,GAPIxW,EAAM,WAAa,KACrBwW,EAAMxW,EAAM,SACLA,EAAM,WAAa,KAC1BwW,EAAMxW,EAAM,SACLA,EAAM,MAAQ,OACrBwW,EAAMxW,EAAM,KAEVwW,IAAQ,MAAQ,CAACxW,EAAM,IAAK,CAE9B,IAAIq8F,EAAOltG,EAAM,OACjB,GAAI,CACE6Q,EAAM,SAAW,KACnB,KAAK,eAAeA,EAAM,IAAK7Q,EAAOkN,CAAO,EAE7C,KAAK,cAAclN,EAAOkN,CAAO,EACnCygG,EAAU,EACX,MAAW,CACVA,EAAU,EACX,CACD3tG,EAAM,QAAQktG,CAAI,CACxB,SACMS,EAAU,KAAK,SAAS3tG,EAAOqnB,EAAKxW,EAAM,GAAG,EAEzC7Q,EAAM,QAAQ2tG,CAAO,EACvB,OAAOA,CAEZ,CAGD,IAAIE,EAIJ,GAHIh9F,EAAM,KAAO88F,IACfE,EAAU7tG,EAAM,eAEd2tG,EAAS,CAEX,GAAI98F,EAAM,WAAa,KAAM,CAC3B,IAAIi9F,EAAW,KAAK,WAAW9tG,EAAO6Q,EAAM,QAAQ,EACpD,GAAI7Q,EAAM,QAAQ8tG,CAAQ,EACxB,OAAOA,EACT9tG,EAAQ8tG,CACT,CAED,IAAIv3G,EAAQyJ,EAAM,OAGlB,GAAI6Q,EAAM,MAAQ,MAAQA,EAAM,SAAW,KAAM,CAC/C,GAAIA,EAAM,IACR,IAAIq8F,EAAOltG,EAAM,OACnB,IAAIwsG,EAAO,KAAK,WACdxsG,EACA6Q,EAAM,WAAa,KAAOA,EAAM,SAAWA,EAAM,IACjDA,EAAM,GACd,EACM,GAAI7Q,EAAM,QAAQwsG,CAAI,EACpB,OAAOA,EAEL37F,EAAM,IACR9K,EAAS/F,EAAM,IAAIktG,CAAI,EAEvBltG,EAAQwsG,CACX,CAgBD,GAdIt/F,GAAWA,EAAQ,OAAS2D,EAAM,MAAQ,MAC5C3D,EAAQ,MAAMlN,EAAM,KAAI,EAAIzJ,EAAOyJ,EAAM,OAAQ,QAAQ,EAEvDkN,GAAWA,EAAQ,OAAS2D,EAAM,MAAQ,MAC5C3D,EAAQ,MAAMlN,EAAM,KAAM,EAAEA,EAAM,OAAQA,EAAM,OAAQ,SAAS,EAG/D6Q,EAAM,IACR9K,EAASA,EACF8K,EAAM,SAAW,KACxB9K,EAAS,KAAK,eAAe8K,EAAM,IAAK7Q,EAAOkN,CAAO,EAEtDnH,EAAS,KAAK,cAAc/F,EAAOkN,CAAO,EAExClN,EAAM,QAAQ+F,CAAM,EACtB,OAAOA,EAYT,GATI,CAAC8K,EAAM,KAAOA,EAAM,SAAW,MAAQA,EAAM,WAAa,MAC5DA,EAAM,SAAS,QAAQ,SAAwB8J,GAAO,CAGpDA,GAAM,QAAQ3a,EAAOkN,CAAO,CACpC,CAAO,EAIC2D,EAAM,WAAaA,EAAM,MAAQ,UAAYA,EAAM,MAAQ,UAAW,CACxE,IAAI7C,EAAO,IAAIi/F,EAAclnG,CAAM,EACnCA,EAAS,KAAK,QAAQ8K,EAAM,SAAU7Q,EAAM,eAAe,GAAG,EACzD,QAAQgO,EAAMd,CAAO,CAC3B,CACF,CAGD,OAAI2D,EAAM,KAAO88F,IACf5nG,EAAS/F,EAAM,YAAY6tG,CAAO,GAGhCh9F,EAAM,MAAQ,OAAS9K,IAAW,MAAQ4nG,IAAY,IACxD3tG,EAAM,SAAS4tG,EAAS/8F,EAAM,IAAK9K,CAAM,EAClC6nG,IAAY,MACnB5tG,EAAM,QAAQ4tG,CAAO,EAEhB7nG,CACT,EAEAwnG,EAAK,UAAU,eAAiB,SAAuBlmF,EAAKrnB,EAAOkN,EAAS,CAC1E,IAAI2D,EAAQ,KAAK,WAEjB,OAAIwW,IAAQ,OAASA,IAAQ,MACpB,KACLA,IAAQ,SAAWA,IAAQ,QACtB,KAAK,YAAYrnB,EAAOqnB,EAAKxW,EAAM,KAAK,CAAC,EAAG3D,CAAO,EACnD,OAAO,KAAKma,CAAG,EACf,KAAK,WAAWrnB,EAAOqnB,EAAKna,CAAO,EACnCma,IAAQ,SAAWxW,EAAM,KACzB,KAAK,aAAa7Q,EAAO6Q,EAAM,KAAK,CAAC,EAAGA,EAAM,KAAK,CAAC,EAAG3D,CAAO,EAC9Dma,IAAQ,QACR,KAAK,aAAarnB,EAAO,KAAM,KAAMkN,CAAO,EAC5Cma,IAAQ,WAAaA,IAAQ,UAC7B,KAAK,YAAYrnB,EAAOqnB,EAAKna,CAAO,EACpCma,IAAQ,QACR,KAAK,YAAYrnB,EAAOkN,CAAO,EAC/Bma,IAAQ,OACR,KAAK,YAAYrnB,EAAOkN,CAAO,EAC/Bma,IAAQ,UACR,KAAK,WAAWrnB,EAAOqnB,EAAKna,CAAO,EACnCma,IAAQ,OAASA,IAAQ,OACzB,KAAK,WAAWrnB,EAAO6Q,EAAM,MAAQA,EAAM,KAAK,CAAC,EAAG3D,CAAO,EAEhE2D,EAAM,MAAQ,KACT,KAAK,QAAQA,EAAM,IAAK7Q,EAAM,eAAe,GAAG,EAClD,QAAQA,EAAOkN,CAAO,EAEpBlN,EAAM,MAAM,gBAAkBqnB,CAAG,CAE5C,EAEAkmF,EAAK,UAAU,QAAU,SAAiBZ,EAAQxyG,EAAK,CAErD,IAAI0W,EAAQ,KAAK,WAEjB,OAAAA,EAAM,WAAa,KAAK,KAAK87F,EAAQxyG,CAAG,EACxC6sF,EAAOn2E,EAAM,WAAW,WAAW,SAAW,IAAI,EAClDA,EAAM,WAAaA,EAAM,WAAW,WAAW,SAAS,CAAC,EACrDA,EAAM,WAAaA,EAAM,WAAW,WAAW,WACjDA,EAAM,WAAaA,EAAM,WAAW,MAAK,EACzCA,EAAM,WAAW,WAAW,SAAWA,EAAM,UAExCA,EAAM,UACf,EAEA08F,EAAK,UAAU,cAAgB,SAAsBvtG,EAAOkN,EAAS,CACnE,IAAI2D,EAAQ,KAAK,WACb9K,EAAS,KACTmhB,EAAQ,GAmBZ,OAjBA,OAAO,KAAKrW,EAAM,MAAM,EAAE,KAAK,SAAShP,EAAK,CAC3C,IAAIqrG,EAAOltG,EAAM,OACb2kB,EAAO9T,EAAM,OAAOhP,CAAG,EAC3B,GAAI,CACF,IAAInK,EAAQitB,EAAK,QAAQ3kB,EAAOkN,CAAO,EACvC,GAAIlN,EAAM,QAAQtI,CAAK,EACrB,MAAO,GAETqO,EAAS,CAAE,KAAMlE,EAAK,MAAOnK,CAAK,EAClCwvB,EAAQ,EACT,MAAW,CACV,OAAAlnB,EAAM,QAAQktG,CAAI,EACX,EACR,CACD,MAAO,EACR,EAAE,IAAI,EAEFhmF,EAGEnhB,EAFE/F,EAAM,MAAM,oBAAoB,CAG3C,EAMAutG,EAAK,UAAU,qBAAuB,SAA6Bv/F,EAAM,CACvE,OAAO,IAAIo/F,EAAcp/F,EAAM,KAAK,QAAQ,CAC9C,EAEAu/F,EAAK,UAAU,QAAU,SAAgBv/F,EAAM4+F,EAAUt9F,EAAQ,CAC/D,IAAIuB,EAAQ,KAAK,WACjB,GAAI,EAAAA,EAAM,UAAe,MAAQA,EAAM,UAAe7C,GAGtD,KAAIjI,EAAS,KAAK,aAAaiI,EAAM4+F,EAAUt9F,CAAM,EACrD,GAAIvJ,IAAW,QAGX,MAAK,aAAaA,EAAQ6mG,EAAUt9F,CAAM,EAG9C,OAAOvJ,EACT,EAEAwnG,EAAK,UAAU,aAAe,SAAgBv/F,EAAM4+F,EAAUt9F,EAAQ,CACpE,IAAIuB,EAAQ,KAAK,WAGjB,GAAIA,EAAM,SAAW,KACnB,OAAOA,EAAM,SAAS,CAAC,EAAE,QAAQ7C,EAAM4+F,GAAY,IAAIC,CAAU,EAEnE,IAAI9mG,EAAS,KAMb,GAHA,KAAK,SAAW6mG,EAGZ/7F,EAAM,UAAY7C,IAAS,OAC7B,GAAI6C,EAAM,UAAe,KACvB7C,EAAO6C,EAAM,YAEb,QAIJ,IAAI2W,EAAU,KACV0lD,EAAY,GAChB,GAAIr8D,EAAM,IAER9K,EAAS,KAAK,qBAAqBiI,CAAI,UAC9B6C,EAAM,OACf9K,EAAS,KAAK,cAAciI,EAAM4+F,CAAQ,UACjC/7F,EAAM,SACf2W,EAAU,KAAK,QAAQ3W,EAAM,SAAUvB,CAAM,EAAE,QAAQtB,EAAM4+F,CAAQ,EACrE1/B,EAAY,WACHr8D,EAAM,SACf2W,EAAU3W,EAAM,SAAS,IAAI,SAAS8J,EAAO,CAC3C,GAAIA,EAAM,WAAW,MAAQ,QAC3B,OAAOA,EAAM,QAAQ,KAAMiyF,EAAU5+F,CAAI,EAE3C,GAAI2M,EAAM,WAAW,MAAQ,KAC3B,OAAOiyF,EAAS,MAAM,yBAAyB,EACjD,IAAIgB,EAAUhB,EAAS,SAASjyF,EAAM,WAAW,GAAG,EAEpD,GAAI,OAAO3M,GAAS,SAClB,OAAO4+F,EAAS,MAAM,yCAAyC,EAEjE,IAAI1vG,EAAMyd,EAAM,QAAQ3M,EAAK2M,EAAM,WAAW,GAAG,EAAGiyF,EAAU5+F,CAAI,EAClE,OAAA4+F,EAAS,SAASgB,CAAO,EAElB1wG,CACR,EAAE,IAAI,EAAE,OAAO,SAASyd,EAAO,CAC9B,OAAOA,CACb,CAAK,EACD6M,EAAU,KAAK,qBAAqBA,CAAO,UAEvC3W,EAAM,MAAQ,SAAWA,EAAM,MAAQ,QAAS,CAElD,GAAI,EAAEA,EAAM,MAAQA,EAAM,KAAK,SAAW,GACxC,OAAO+7F,EAAS,MAAM,uBAAyB/7F,EAAM,GAAG,EAE1D,GAAI,CAAC,MAAM,QAAQ7C,CAAI,EACrB,OAAO4+F,EAAS,MAAM,oCAAoC,EAE5D,IAAIjyF,EAAQ,KAAK,QACjBA,EAAM,WAAW,SAAW,KAC5B6M,EAAU,KAAK,qBAAqBxZ,EAAK,IAAI,SAAS9K,EAAM,CAC1D,IAAI2N,EAAQ,KAAK,WAEjB,OAAO,KAAK,QAAQA,EAAM,KAAK,CAAC,EAAG7C,CAAI,EAAE,QAAQ9K,EAAM0pG,CAAQ,CACvE,EAASjyF,CAAK,CAAC,CACf,MAAe9J,EAAM,MAAQ,KACvB9K,EAAS,KAAK,QAAQ8K,EAAM,IAAKvB,CAAM,EAAE,QAAQtB,EAAM4+F,CAAQ,GAE/DplF,EAAU,KAAK,iBAAiB3W,EAAM,IAAK7C,CAAI,EAC/Ck/D,EAAY,IAKhB,IAAInnE,EACJ,GAAI,CAAC8K,EAAM,KAAOA,EAAM,SAAW,KAAM,CACvC,IAAIwW,EAAMxW,EAAM,WAAa,KAAOA,EAAM,SAAWA,EAAM,IACvDiY,EAAMjY,EAAM,WAAa,KAAO,YAAc,UAE9CwW,IAAQ,KACNxW,EAAM,MAAQ,MAChB+7F,EAAS,MAAM,sCAAsC,EAEnD/7F,EAAM,MAAQ,OAChB9K,EAAS,KAAK,iBAAiBshB,EAAK6lD,EAAWpkD,EAAKtB,CAAO,EAEhE,CAGD,OAAI3W,EAAM,WAAa,OACrB9K,EAAS,KAAK,iBAAiB8K,EAAM,SAAU,GAAO,UAAW9K,CAAM,GAElEA,CACT,EAEAwnG,EAAK,UAAU,cAAgB,SAAsBv/F,EAAM4+F,EAAU,CACnE,IAAI/7F,EAAQ,KAAK,WAEb8T,EAAO9T,EAAM,OAAO7C,EAAK,IAAI,EACjC,OAAK2W,GACHqiE,EACI,GACAh5E,EAAK,KAAO,iBACR,KAAK,UAAU,OAAO,KAAK6C,EAAM,MAAM,CAAC,CAAC,EAE5C8T,EAAK,QAAQ3W,EAAK,MAAO4+F,CAAQ,CAC1C,EAEAW,EAAK,UAAU,iBAAmB,SAAyBlmF,EAAKrZ,EAAM,CACpE,IAAI6C,EAAQ,KAAK,WAEjB,GAAI,OAAO,KAAKwW,CAAG,EACjB,OAAO,KAAK,WAAWrZ,EAAMqZ,CAAG,EAC7B,GAAIA,IAAQ,SAAWxW,EAAM,KAChC,OAAO,KAAK,aAAa7C,EAAM6C,EAAM,YAAY,CAAC,EAAGA,EAAM,KAAK,CAAC,CAAC,EAC/D,GAAIwW,IAAQ,QACf,OAAO,KAAK,aAAarZ,EAAM,KAAM,IAAI,EACtC,GAAIqZ,IAAQ,WAAaA,IAAQ,UACpC,OAAO,KAAK,YAAYrZ,EAAMqZ,CAAG,EAC9B,GAAIA,IAAQ,QACf,OAAO,KAAK,cACT,GAAIA,IAAQ,OAASA,IAAQ,OAChC,OAAO,KAAK,WAAWrZ,EAAM6C,EAAM,MAAQA,EAAM,YAAY,CAAC,CAAC,EAC5D,GAAIwW,IAAQ,OACf,OAAO,KAAK,YAAYrZ,CAAI,EACzB,GAAIqZ,IAAQ,UACf,OAAO,KAAK,WAAWrZ,EAAMqZ,CAAG,EAEhC,MAAM,IAAI,MAAM,oBAAsBA,CAAG,CAC7C,EAEAkmF,EAAK,UAAU,UAAY,SAAkBjyG,EAAK,CAChD,MAAO,YAAY,KAAKA,CAAG,CAC7B,EAEAiyG,EAAK,UAAU,YAAc,SAAoBjyG,EAAK,CACpD,MAAO,oCAAoC,KAAKA,CAAG,0GCxnBrD,IAAImY,EAAO5b,EAEX4b,EAAK,SAAWgiC,gBAAqB,EAAC,SACtChiC,EAAK,cAAgBukC,cAAmB,EAAC,cACzCvkC,EAAK,cAAgBukC,cAAmB,EAAC,cACzCvkC,EAAK,KAAOu5C,yJCLZ,IAAIzrD,EAAYk0C,mBAEhB59C,EAAmB,UACjB,EAAG,YACH,EAAG,cACH,EAAG,UACH,EAAG,SACL,EACAA,EAAyB,eAAA0J,EAAU,SAAS1J,EAAQ,QAAQ,EAE5DA,EAAc,KACZ,EAAM,MACN,EAAM,OACN,EAAM,MACN,EAAM,SACN,EAAM,SACN,EAAM,QACN,EAAM,QACN,EAAM,UACN,EAAM,WACN,EAAM,OACN,GAAM,OACN,GAAM,QACN,GAAM,UACN,GAAM,cACN,GAAM,MACN,GAAM,MACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,UACN,GAAM,UACN,GAAM,WACN,GAAM,YACN,GAAM,SACN,GAAM,SACN,GAAM,UACN,GAAM,QACR,EACAA,EAAA,UAAoB0J,EAAU,SAAS1J,EAAQ,GAAG,mICzClD,IAAI0J,EAAY1J,EAGhB0J,EAAU,SAAW,SAAiBm9B,EAAK,CACzC,IAAIxhC,EAAM,GAEV,cAAO,KAAKwhC,CAAG,EAAE,QAAQ,SAAS78B,EAAK,EAEhCA,EAAM,IAAMA,IACfA,EAAMA,EAAM,GAEd,IAAInK,EAAQgnC,EAAI78B,CAAG,EACnB3E,EAAIxF,CAAK,EAAImK,CACjB,CAAG,EAEM3E,CACT,EAEAqE,EAAU,IAAMk0C,+JClBhB,IAAIsC,EAAWtC,wBAEXkpB,EAAO3mB,gBACPvkC,EAAOkrD,EAAK,KACZovC,EAASpvC,EAAK,OAGdqvC,EAAMrvC,EAAK,UAAU,IAEzB,SAASsvC,EAAWtB,EAAQ,CAC1B,KAAK,IAAM,MACX,KAAK,KAAOA,EAAO,KACnB,KAAK,OAASA,EAGd,KAAK,KAAO,IAAIuB,EAChB,KAAK,KAAK,MAAMvB,EAAO,IAAI,CAC7B,CACcwB,QAAGF,EAEjBA,EAAW,UAAU,OAAS,SAAgBjgG,EAAMd,EAAS,CAC3D,OAAMc,aAAgByF,EAAK,gBACzBzF,EAAO,IAAIyF,EAAK,cAAczF,EAAMd,CAAO,GAEtC,KAAK,KAAK,QAAQc,EAAMd,CAAO,CACxC,EAIA,SAASghG,EAAQ5+F,EAAQ,CACvBmE,EAAK,KAAK,KAAK,KAAM,MAAOnE,CAAM,CACnC,CACDyoC,EAASm2D,EAASz6F,EAAK,IAAI,EAE3By6F,EAAQ,UAAU,SAAW,SAAiBx4G,EAAQ2xB,EAAK+mF,EAAK,CAC9D,GAAI14G,EAAO,QAAS,EAClB,MAAO,GAET,IAAImb,EAAQnb,EAAO,OACf24G,EAAaC,EAAa54G,EAAQ,wBAA0B2xB,EAAM,GAAG,EACzE,OAAI3xB,EAAO,QAAQ24G,CAAU,EACpBA,GAET34G,EAAO,QAAQmb,CAAK,EAEbw9F,EAAW,MAAQhnF,GAAOgnF,EAAW,SAAWhnF,GACpDgnF,EAAW,OAAS,OAAUhnF,GAAO+mF,EAC1C,EAEAF,EAAQ,UAAU,WAAa,SAAmBx4G,EAAQ2xB,EAAK+mF,EAAK,CAClE,IAAIC,EAAaC,EAAa54G,EACA,4BAA8B2xB,EAAM,GAAG,EACrE,GAAI3xB,EAAO,QAAQ24G,CAAU,EAC3B,OAAOA,EAET,IAAIn5G,EAAMq5G,EAAa74G,EACA24G,EAAW,UACX,4BAA8BhnF,EAAM,GAAG,EAG9D,GAAI3xB,EAAO,QAAQR,CAAG,EACpB,OAAOA,EAET,GAAI,CAACk5G,GACDC,EAAW,MAAQhnF,GACnBgnF,EAAW,SAAWhnF,GACtBgnF,EAAW,OAAS,OAAShnF,EAC/B,OAAO3xB,EAAO,MAAM,yBAA2B2xB,EAAM,GAAG,EAG1D,GAAIgnF,EAAW,WAAan5G,IAAQ,KAClC,OAAOQ,EAAO,KAAKR,EAAK,6BAA+BmyB,EAAM,GAAG,EAGlE,IAAIxW,EAAQnb,EAAO,OACfwH,EAAM,KAAK,cACXxH,EACA,2CAA6C,KAAK,IAAM,GAAG,EAC/D,OAAIA,EAAO,QAAQwH,CAAG,EACbA,GAEThI,EAAMQ,EAAO,OAASmb,EAAM,OAC5Bnb,EAAO,QAAQmb,CAAK,EACbnb,EAAO,KAAKR,EAAK,6BAA+BmyB,EAAM,GAAG,EAClE,EAEA6mF,EAAQ,UAAU,cAAgB,SAAsBx4G,EAAQy3G,EAAM,CACpE,OAAa,CACX,IAAI9lF,EAAMinF,EAAa54G,EAAQy3G,CAAI,EACnC,GAAIz3G,EAAO,QAAQ2xB,CAAG,EACpB,OAAOA,EACT,IAAInyB,EAAMq5G,EAAa74G,EAAQ2xB,EAAI,UAAW8lF,CAAI,EAClD,GAAIz3G,EAAO,QAAQR,CAAG,EACpB,OAAOA,EAET,IAAIgI,EAOJ,GANImqB,EAAI,WAAanyB,IAAQ,KAC3BgI,EAAMxH,EAAO,KAAKR,CAAG,EAErBgI,EAAM,KAAK,cAAcxH,EAAQy3G,CAAI,EAGnCz3G,EAAO,QAAQwH,CAAG,EACpB,OAAOA,EAET,GAAImqB,EAAI,SAAW,MACjB,KACH,CACH,EAEA6mF,EAAQ,UAAU,YAAc,SAAoBx4G,EAAQ2xB,EAAK6yB,EACbhtC,EAAS,CAE3D,QADInH,EAAS,GACN,CAACrQ,EAAO,WAAW,CACxB,IAAI84G,EAAc,KAAK,SAAS94G,EAAQ,KAAK,EAC7C,GAAIA,EAAO,QAAQ84G,CAAW,EAC5B,OAAOA,EAET,IAAItxG,EAAMg9C,EAAQ,OAAOxkD,EAAQ,MAAOwX,CAAO,EAC/C,GAAIxX,EAAO,QAAQwH,CAAG,GAAKsxG,EACzB,MACFzoG,EAAO,KAAK7I,CAAG,CAChB,CACD,OAAO6I,CACT,EAEAmoG,EAAQ,UAAU,WAAa,SAAmBx4G,EAAQ2xB,EAAK,CAC7D,GAAIA,IAAQ,SAAU,CACpB,IAAIk4C,EAAS7pE,EAAO,YACpB,OAAIA,EAAO,QAAQ6pE,CAAM,EAChBA,EACF,CAAE,OAAQA,EAAQ,KAAM7pE,EAAO,IAAG,EAC7C,SAAa2xB,IAAQ,SAAU,CAC3B,IAAInf,EAAMxS,EAAO,MACjB,GAAIwS,EAAI,OAAS,IAAM,EACrB,OAAOxS,EAAO,MAAM,iDAAiD,EAGvE,QADI4F,EAAM,GACDlG,EAAI,EAAGA,EAAI8S,EAAI,OAAS,EAAG9S,IAClCkG,GAAO,OAAO,aAAa4M,EAAI,aAAa9S,EAAI,CAAC,CAAC,EAEpD,OAAOkG,CACX,SAAa+rB,IAAQ,SAAU,CAC3B,IAAIonF,EAAS/4G,EAAO,IAAK,EAAC,SAAS,OAAO,EAC1C,OAAK,KAAK,UAAU+4G,CAAM,EAInBA,EAHE/4G,EAAO,MAAM,wDAC+B,CAGzD,KAAS,IAAI2xB,IAAQ,SACjB,OAAO3xB,EAAO,MACT,GAAI2xB,IAAQ,UACjB,OAAO3xB,EAAO,MACT,GAAI2xB,IAAQ,WAAY,CAC7B,IAAIqnF,EAAWh5G,EAAO,IAAK,EAAC,SAAS,OAAO,EAC5C,OAAK,KAAK,YAAYg5G,CAAQ,EAIvBA,EAHEh5G,EAAO,MAAM,0DACiC,CAGxD,KAAM,OAAI,OAAO,KAAK2xB,CAAG,EACjB3xB,EAAO,MAAM,WAEbA,EAAO,MAAM,4BAA8B2xB,EAAM,cAAc,EAE1E,EAEA6mF,EAAQ,UAAU,aAAe,SAAqBx4G,EAAQkV,EAAQ+jG,EAAU,CAI9E,QAHI5oG,EACA6oG,EAAc,GACdC,EAAQ,EACL,CAACn5G,EAAO,WAAW,CACxB,IAAIo5G,EAAWp5G,EAAO,YACtBm5G,IAAU,EACVA,GAASC,EAAW,IACfA,EAAW,MACdF,EAAY,KAAKC,CAAK,EACtBA,EAAQ,EAEX,CACGC,EAAW,KACbF,EAAY,KAAKC,CAAK,EAExB,IAAIrwG,EAASowG,EAAY,CAAC,EAAI,GAAM,EAChC/7E,EAAS+7E,EAAY,CAAC,EAAI,GAO9B,GALID,EACF5oG,EAAS6oG,EAET7oG,EAAS,CAACvH,EAAOq0B,CAAM,EAAE,OAAO+7E,EAAY,MAAM,CAAC,CAAC,EAElDhkG,EAAQ,CACV,IAAI1U,EAAM0U,EAAO7E,EAAO,KAAK,GAAG,CAAC,EAC7B7P,IAAQ,SACVA,EAAM0U,EAAO7E,EAAO,KAAK,GAAG,CAAC,GAC3B7P,IAAQ,SACV6P,EAAS7P,EACZ,CAED,OAAO6P,CACT,EAEAmoG,EAAQ,UAAU,YAAc,SAAoBx4G,EAAQ2xB,EAAK,CAC/D,IAAI/rB,EAAM5F,EAAO,IAAK,EAAC,SAAQ,EAC/B,GAAI2xB,IAAQ,UACV,IAAI84C,EAAO7kE,EAAI,MAAM,EAAG,CAAC,EAAI,EACzByzG,EAAMzzG,EAAI,MAAM,EAAG,CAAC,EAAI,EACxB0zG,EAAM1zG,EAAI,MAAM,EAAG,CAAC,EAAI,EACxB2zG,EAAO3zG,EAAI,MAAM,EAAG,EAAE,EAAI,EAC1BwD,EAAMxD,EAAI,MAAM,GAAI,EAAE,EAAI,EAC1B4zG,EAAM5zG,EAAI,MAAM,GAAI,EAAE,EAAI,UACrB+rB,IAAQ,UAAW,CAC5B,IAAI84C,EAAO7kE,EAAI,MAAM,EAAG,CAAC,EAAI,EACzByzG,EAAMzzG,EAAI,MAAM,EAAG,CAAC,EAAI,EACxB0zG,EAAM1zG,EAAI,MAAM,EAAG,CAAC,EAAI,EACxB2zG,EAAO3zG,EAAI,MAAM,EAAG,CAAC,EAAI,EACzBwD,EAAMxD,EAAI,MAAM,EAAG,EAAE,EAAI,EACzB4zG,EAAM5zG,EAAI,MAAM,GAAI,EAAE,EAAI,EAC1B6kE,EAAO,GACTA,EAAO,IAAOA,EAEdA,EAAO,KAAOA,CACpB,KACI,QAAOzqE,EAAO,MAAM,YAAc2xB,EAAM,4BAA4B,EAGtE,OAAO,KAAK,IAAI84C,EAAM4uC,EAAM,EAAGC,EAAKC,EAAMnwG,EAAKowG,EAAK,CAAC,CACvD,EAEAhB,EAAQ,UAAU,YAAc,SAAoBx4G,EAAQ,CAC1D,OAAO,IACT,EAEAw4G,EAAQ,UAAU,YAAc,SAAoBx4G,EAAQ,CAC1D,IAAIwH,EAAMxH,EAAO,YACjB,OAAIA,EAAO,QAAQwH,CAAG,EACbA,EAEAA,IAAQ,CACnB,EAEAgxG,EAAQ,UAAU,WAAa,SAAmBx4G,EAAQkV,EAAQ,CAEhE,IAAI1C,EAAMxS,EAAO,MACbwH,EAAM,IAAI6wG,EAAO7lG,CAAG,EAExB,OAAI0C,IACF1N,EAAM0N,EAAO1N,EAAI,SAAS,EAAE,CAAC,GAAKA,GAE7BA,CACT,EAEAgxG,EAAQ,UAAU,KAAO,SAAavB,EAAQxyG,EAAK,CACjD,OAAI,OAAOwyG,GAAW,aACpBA,EAASA,EAAOxyG,CAAG,GACdwyG,EAAO,YAAY,KAAK,EAAE,IACnC,EAIA,SAAS2B,EAAa31G,EAAKw0G,EAAM,CAC/B,IAAI9lF,EAAM1uB,EAAI,UAAUw0G,CAAI,EAC5B,GAAIx0G,EAAI,QAAQ0uB,CAAG,EACjB,OAAOA,EAET,IAAIyB,EAAMklF,EAAI,SAAS3mF,GAAO,CAAC,EAC3B6lD,GAAa7lD,EAAM,MAAU,EAGjC,IAAKA,EAAM,MAAU,GAAM,CACzB,IAAI8nF,EAAM9nF,EAEV,IADAA,EAAM,GACE8nF,EAAM,OAAU,KAAM,CAE5B,GADAA,EAAMx2G,EAAI,UAAUw0G,CAAI,EACpBx0G,EAAI,QAAQw2G,CAAG,EACjB,OAAOA,EAET9nF,IAAQ,EACRA,GAAO8nF,EAAM,GACd,CACL,MACI9nF,GAAO,GAET,IAAI+nF,EAASpB,EAAI,IAAI3mF,CAAG,EAExB,MAAO,CACL,IAAKyB,EACL,UAAWokD,EACX,IAAK7lD,EACL,OAAQ+nF,CACZ,CACC,CAED,SAASb,EAAa51G,EAAKu0E,EAAWigC,EAAM,CAC1C,IAAIj4G,EAAMyD,EAAI,UAAUw0G,CAAI,EAC5B,GAAIx0G,EAAI,QAAQzD,CAAG,EACjB,OAAOA,EAGT,GAAI,CAACg4E,GAAah4E,IAAQ,IACxB,OAAO,KAGT,GAAK,EAAAA,EAAM,KAET,OAAOA,EAIT,IAAImB,EAAMnB,EAAM,IAChB,GAAImB,EAAM,EACR,OAAOsC,EAAI,MAAM,2BAA2B,EAE9CzD,EAAM,EACN,QAASE,EAAI,EAAGA,EAAIiB,EAAKjB,IAAK,CAC5BF,IAAQ,EACR,IAAIoH,EAAI3D,EAAI,UAAUw0G,CAAI,EAC1B,GAAIx0G,EAAI,QAAQ2D,CAAC,EACf,OAAOA,EACTpH,GAAOoH,CACR,CAED,OAAOpH,CACT,uHCnUA,IAAI6iD,EAAWtC,wBACXx9C,EAAS+/C,aAAkB,OAE3Bi2D,EAAajhD,eAEjB,SAASqiD,EAAW1C,EAAQ,CAC1BsB,EAAW,KAAK,KAAMtB,CAAM,EAC5B,KAAK,IAAM,KACb,CACA,OAAA50D,EAASs3D,EAAYpB,CAAU,EACjBqB,MAAGD,EAEjBA,EAAW,UAAU,OAAS,SAAgBrhG,EAAMd,EAAS,CAQ3D,QAPI2uB,EAAQ7tB,EAAK,SAAU,EAAC,MAAM,UAAU,EAExCuhG,EAAQriG,EAAQ,MAAM,YAAW,EAEjC8qD,EAAK,kCACLzhE,EAAQ,GACRC,EAAM,GACDpB,EAAI,EAAGA,EAAIymC,EAAM,OAAQzmC,IAAK,CACrC,IAAI8xB,EAAQ2U,EAAMzmC,CAAC,EAAE,MAAM4iE,CAAE,EAC7B,GAAI9wC,IAAU,MAGVA,EAAM,CAAC,IAAMqoF,EAGjB,GAAIh5G,IAAU,GAAI,CAChB,GAAI2wB,EAAM,CAAC,IAAM,QACf,MACF3wB,EAAQnB,CACd,KAAW,CACL,GAAI8xB,EAAM,CAAC,IAAM,MACf,MACF1wB,EAAMpB,EACN,KACD,CACF,CACD,GAAImB,IAAU,IAAMC,IAAQ,GAC1B,MAAM,IAAI,MAAM,8BAAgC+4G,CAAK,EAEvD,IAAIz3G,EAAS+jC,EAAM,MAAMtlC,EAAQ,EAAGC,CAAG,EAAE,KAAK,EAAE,EAEhDsB,EAAO,QAAQ,oBAAqB,EAAE,EAEtC,IAAIkI,EAAQ,IAAI/H,EAAOH,EAAQ,QAAQ,EACvC,OAAOm2G,EAAW,UAAU,OAAO,KAAK,KAAMjuG,EAAOkN,CAAO,2HC/C9D,IAAIktC,EAAWviD,EAEfuiD,EAAS,IAAM3E,eACf2E,EAAS,IAAMpC,mJCHf,IAAID,EAAWtC,wBACXx9C,EAAS+/C,aAAkB,OAE3B2mB,EAAO3R,gBACPv5C,EAAOkrD,EAAK,KAGZqvC,EAAMrvC,EAAK,UAAU,IAEzB,SAAS6wC,EAAW7C,EAAQ,CAC1B,KAAK,IAAM,MACX,KAAK,KAAOA,EAAO,KACnB,KAAK,OAASA,EAGd,KAAK,KAAO,IAAIuB,EAChB,KAAK,KAAK,MAAMvB,EAAO,IAAI,CAC7B,CACc,MAAG6C,EAEjBA,EAAW,UAAU,OAAS,SAAgBxhG,EAAM4+F,EAAU,CAC5D,OAAO,KAAK,KAAK,QAAQ5+F,EAAM4+F,CAAQ,EAAE,MAC3C,EAIA,SAASsB,EAAQ5+F,EAAQ,CACvBmE,EAAK,KAAK,KAAK,KAAM,MAAOnE,CAAM,CACnC,CACDyoC,EAASm2D,EAASz6F,EAAK,IAAI,EAE3By6F,EAAQ,UAAU,iBAAmB,SAAyB7mF,EACA6lD,EACApkD,EACAtB,EAAS,CACrE,IAAIioF,EAAaC,EAAUroF,EAAK6lD,EAAWpkD,EAAK,KAAK,QAAQ,EAG7D,GAAItB,EAAQ,OAAS,IAAM,CACzB,IAAImoF,EAAS,IAAI13G,EAAO,CAAC,EACzB,OAAA03G,EAAO,CAAC,EAAIF,EACZE,EAAO,CAAC,EAAInoF,EAAQ,OACb,KAAK,qBAAqB,CAAEmoF,EAAQnoF,CAAS,EACrD,CAKD,QADIooF,EAAY,EACPx6G,EAAIoyB,EAAQ,OAAQpyB,GAAK,IAAOA,IAAM,EAC7Cw6G,IAEF,IAAID,EAAS,IAAI13G,EAAO,EAAQ23G,CAAS,EACzCD,EAAO,CAAC,EAAIF,EACZE,EAAO,CAAC,EAAI,IAAOC,EAEnB,QAASx6G,EAAI,EAAIw6G,EAAW,EAAIpoF,EAAQ,OAAQ,EAAI,EAAGpyB,IAAK,IAAM,EAChEu6G,EAAOv6G,CAAC,EAAI,EAAI,IAElB,OAAO,KAAK,qBAAqB,CAAEu6G,EAAQnoF,CAAS,EACtD,EAEA0mF,EAAQ,UAAU,WAAa,SAAmB5yG,EAAK+rB,EAAK,CAC1D,GAAIA,IAAQ,SACV,OAAO,KAAK,qBAAqB,CAAE/rB,EAAI,OAAS,EAAGA,EAAI,IAAI,CAAE,EACxD,GAAI+rB,IAAQ,SAAU,CAE3B,QADI1uB,EAAM,IAAIV,EAAOqD,EAAI,OAAS,CAAC,EAC1BlG,EAAI,EAAGA,EAAIkG,EAAI,OAAQlG,IAC9BuD,EAAI,cAAc2C,EAAI,WAAWlG,CAAC,EAAGA,EAAI,CAAC,EAE5C,OAAO,KAAK,qBAAqBuD,CAAG,CACxC,KAAS,QAAI0uB,IAAQ,SACZ,KAAK,UAAU/rB,CAAG,EAIhB,KAAK,qBAAqBA,CAAG,EAH3B,KAAK,SAAS,MAAM,gEACuB,EAG3C+rB,IAAQ,WACZ,KAAK,YAAY/rB,CAAG,EAQlB,KAAK,qBAAqBA,CAAG,EAP3B,KAAK,SAAS,MAAM,mNAKe,EAGnC,OAAO,KAAK+rB,CAAG,EACjB,KAAK,qBAAqB/rB,CAAG,EAC3B+rB,IAAQ,UACV,KAAK,qBAAqB/rB,CAAG,EAE7B,KAAK,SAAS,MAAM,4BAA8B+rB,EAC9B,cAAc,CAE7C,EAEA6mF,EAAQ,UAAU,aAAe,SAAqB3iG,EAAIX,EAAQ+jG,EAAU,CAC1E,GAAI,OAAOpjG,GAAO,SAAU,CAC1B,GAAI,CAACX,EACH,OAAO,KAAK,SAAS,MAAM,6CAA6C,EAC1E,GAAI,CAACA,EAAO,eAAeW,CAAE,EAC3B,OAAO,KAAK,SAAS,MAAM,+BAA+B,EAC5DA,EAAKX,EAAOW,CAAE,EAAE,MAAM,UAAU,EAChC,QAASnW,EAAI,EAAGA,EAAImW,EAAG,OAAQnW,IAC7BmW,EAAGnW,CAAC,GAAK,CACZ,SAAU,MAAM,QAAQmW,CAAE,EAAG,CAC5BA,EAAKA,EAAG,QACR,QAASnW,EAAI,EAAGA,EAAImW,EAAG,OAAQnW,IAC7BmW,EAAGnW,CAAC,GAAK,CACZ,CAED,GAAI,CAAC,MAAM,QAAQmW,CAAE,EACnB,OAAO,KAAK,SAAS,MAAM,kDACU,KAAK,UAAUA,CAAE,CAAC,EAGzD,GAAI,CAACojG,EAAU,CACb,GAAIpjG,EAAG,CAAC,GAAK,GACX,OAAO,KAAK,SAAS,MAAM,6BAA6B,EAC1DA,EAAG,OAAO,EAAG,EAAGA,EAAG,CAAC,EAAI,GAAKA,EAAG,CAAC,CAAC,CACnC,CAID,QADI/R,EAAO,EACFpE,EAAI,EAAGA,EAAImW,EAAG,OAAQnW,IAAK,CAClC,IAAIy5G,EAAQtjG,EAAGnW,CAAC,EAChB,IAAKoE,IAAQq1G,GAAS,IAAMA,IAAU,EACpCr1G,GACH,CAID,QAFIq2G,EAAQ,IAAI53G,EAAOuB,CAAI,EACvB1C,EAAS+4G,EAAM,OAAS,EACnBz6G,EAAImW,EAAG,OAAS,EAAGnW,GAAK,EAAGA,IAAK,CACvC,IAAIy5G,EAAQtjG,EAAGnW,CAAC,EAEhB,IADAy6G,EAAM/4G,GAAQ,EAAI+3G,EAAQ,KAClBA,IAAU,GAAK,GACrBgB,EAAM/4G,GAAQ,EAAI,IAAQ+3G,EAAQ,GACrC,CAED,OAAO,KAAK,qBAAqBgB,CAAK,CACxC,EAEA,SAASC,EAAIz5G,EAAK,CAChB,OAAIA,EAAM,GACD,IAAMA,EAENA,CACV,CAED63G,EAAQ,UAAU,YAAc,SAAoB/1D,EAAM9wB,EAAK,CAC7D,IAAI/rB,EACA4kE,EAAO,IAAI,KAAK/nB,CAAI,EAExB,OAAI9wB,IAAQ,UACV/rB,EAAM,CACJw0G,EAAI5vC,EAAK,aAAa,EACtB4vC,EAAI5vC,EAAK,YAAa,EAAG,CAAC,EAC1B4vC,EAAI5vC,EAAK,YAAY,EACrB4vC,EAAI5vC,EAAK,aAAa,EACtB4vC,EAAI5vC,EAAK,eAAe,EACxB4vC,EAAI5vC,EAAK,eAAe,EACxB,GACN,EAAM,KAAK,EAAE,EACA74C,IAAQ,UACjB/rB,EAAM,CACJw0G,EAAI5vC,EAAK,YAAa,EAAG,GAAG,EAC5B4vC,EAAI5vC,EAAK,YAAa,EAAG,CAAC,EAC1B4vC,EAAI5vC,EAAK,YAAY,EACrB4vC,EAAI5vC,EAAK,aAAa,EACtB4vC,EAAI5vC,EAAK,eAAe,EACxB4vC,EAAI5vC,EAAK,eAAe,EACxB,GACN,EAAM,KAAK,EAAE,EAET,KAAK,SAAS,MAAM,YAAc74C,EAAM,4BAA4B,EAG/D,KAAK,WAAW/rB,EAAK,QAAQ,CACtC,EAEA4yG,EAAQ,UAAU,YAAc,UAAsB,CACpD,OAAO,KAAK,qBAAqB,EAAE,CACrC,EAEAA,EAAQ,UAAU,WAAa,SAAmB73G,EAAKuU,EAAQ,CAC7D,GAAI,OAAOvU,GAAQ,SAAU,CAC3B,GAAI,CAACuU,EACH,OAAO,KAAK,SAAS,MAAM,6CAA6C,EAC1E,GAAI,CAACA,EAAO,eAAevU,CAAG,EAC5B,OAAO,KAAK,SAAS,MAAM,+BACA,KAAK,UAAUA,CAAG,CAAC,EAEhDA,EAAMuU,EAAOvU,CAAG,CACjB,CAGD,GAAI,OAAOA,GAAQ,UAAY,CAAC4B,EAAO,SAAS5B,CAAG,EAAG,CACpD,IAAI05G,EAAW15G,EAAI,UACf,CAACA,EAAI,MAAQ05G,EAAS,CAAC,EAAI,KAC7BA,EAAS,QAAQ,CAAC,EAEpB15G,EAAM,IAAI4B,EAAO83G,CAAQ,CAC1B,CAED,GAAI93G,EAAO,SAAS5B,CAAG,EAAG,CACxB,IAAImD,EAAOnD,EAAI,OACXA,EAAI,SAAW,GACjBmD,IAEF,IAAIsE,EAAM,IAAI7F,EAAOuB,CAAI,EACzB,OAAAnD,EAAI,KAAKyH,CAAG,EACRzH,EAAI,SAAW,IACjByH,EAAI,CAAC,EAAI,GACJ,KAAK,qBAAqBA,CAAG,CACrC,CAED,GAAIzH,EAAM,IACR,OAAO,KAAK,qBAAqBA,CAAG,EAEtC,GAAIA,EAAM,IACR,OAAO,KAAK,qBAAqB,CAAC,EAAGA,CAAG,CAAC,EAG3C,QADImD,EAAO,EACFpE,EAAIiB,EAAKjB,GAAK,IAAOA,IAAM,EAClCoE,IAGF,QADIsE,EAAM,IAAI,MAAMtE,CAAI,EACfpE,EAAI0I,EAAI,OAAS,EAAG1I,GAAK,EAAGA,IACnC0I,EAAI1I,CAAC,EAAIiB,EAAM,IACfA,IAAQ,EAEV,OAAGyH,EAAI,CAAC,EAAI,KACVA,EAAI,QAAQ,CAAC,EAGR,KAAK,qBAAqB,IAAI7F,EAAO6F,CAAG,CAAC,CAClD,EAEAowG,EAAQ,UAAU,YAAc,SAAoBx2G,EAAO,CACzD,OAAO,KAAK,qBAAqBA,EAAQ,IAAO,CAAC,CACnD,EAEAw2G,EAAQ,UAAU,KAAO,SAAavB,EAAQxyG,EAAK,CACjD,OAAI,OAAOwyG,GAAW,aACpBA,EAASA,EAAOxyG,CAAG,GACdwyG,EAAO,YAAY,KAAK,EAAE,IACnC,EAEAuB,EAAQ,UAAU,aAAe,SAAqB8B,EAAYpD,EAAUt9F,EAAQ,CAClF,IAAIuB,EAAQ,KAAK,WACbzb,EACJ,GAAIyb,EAAM,UAAe,KACvB,MAAO,GAET,IAAI7C,EAAOgiG,EAAW,OAItB,GAHIn/F,EAAM,gBAAkB,SAC1BA,EAAM,cAAgB,KAAK,aAAaA,EAAM,QAAY+7F,EAAUt9F,CAAM,EAAE,QAE1EtB,EAAK,SAAW6C,EAAM,cAAc,OACtC,MAAO,GAET,IAAKzb,EAAE,EAAGA,EAAI4Y,EAAK,OAAQ5Y,IACzB,GAAI4Y,EAAK5Y,CAAC,IAAMyb,EAAM,cAAczb,CAAC,EACnC,MAAO,GAEX,MAAO,EACT,EAIA,SAASs6G,EAAUroF,EAAK6lD,EAAWpkD,EAAK8jF,EAAU,CAChD,IAAI1vG,EAOJ,GALImqB,IAAQ,QACVA,EAAM,MACCA,IAAQ,UACfA,EAAM,OAEJ2mF,EAAI,UAAU,eAAe3mF,CAAG,EAClCnqB,EAAM8wG,EAAI,UAAU3mF,CAAG,UAChB,OAAOA,GAAQ,WAAaA,EAAM,KAAOA,EAChDnqB,EAAMmqB,MAEN,QAAOulF,EAAS,MAAM,gBAAkBvlF,CAAG,EAE7C,OAAInqB,GAAO,GACF0vG,EAAS,MAAM,sCAAsC,GAEzD1/B,IACHhwE,GAAO,IAETA,GAAQ8wG,EAAI,eAAellF,GAAO,WAAW,GAAK,EAE3C5rB,EACT,6GCtSA,IAAI66C,EAAWtC,wBAEX+5D,EAAax3D,aAEjB,SAASi4D,EAAWtD,EAAQ,CAC1B6C,EAAW,KAAK,KAAM7C,CAAM,EAC5B,KAAK,IAAM,KACb,CACA,OAAA50D,EAASk4D,EAAYT,CAAU,EACjBF,MAAGW,EAEjBA,EAAW,UAAU,OAAS,SAAgBjiG,EAAMd,EAAS,CAK3D,QAJIvU,EAAM62G,EAAW,UAAU,OAAO,KAAK,KAAMxhG,CAAI,EAEjD3C,EAAI1S,EAAI,SAAS,QAAQ,EACzBmF,EAAM,CAAE,cAAgBoP,EAAQ,MAAQ,OAAO,EAC1C9X,EAAI,EAAGA,EAAIiW,EAAE,OAAQjW,GAAK,GACjC0I,EAAI,KAAKuN,EAAE,MAAMjW,EAAGA,EAAI,EAAE,CAAC,EAC7B,OAAA0I,EAAI,KAAK,YAAcoP,EAAQ,MAAQ,OAAO,EACvCpP,EAAI,KAAK;AAAA,CAAI,2HCnBtB,IAAIooD,EAAWruD,EAEfquD,EAAS,IAAMzQ,aACfyQ,EAAS,IAAMlO,4ICHf,IAAI2mB,EAAO9mE,EAEX8mE,EAAK,OAASlpB,cAEdkpB,EAAK,OAAS3mB,WAAqB,EAAC,OACpC2mB,EAAK,KAAO3R,cACZ2R,EAAK,UAAYrR,mBACjBqR,EAAK,SAAW9M,kBAChB8M,EAAK,SAAW7M,8KCHhB,IAAIo+C,EAAMz6D,gBAEN06D,EAAOD,EAAI,OAAO,OAAQ,UAAY,CACzC,KAAK,OAAO,CACX,QAAS,KAAK,QAAS,EACvB,YAAa,KAAK,QAAS,CAC7B,CAAE,CACF,CAAC,EAEGE,EAAqBF,EAAI,OAAO,qBAAsB,UAAY,CACrE,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,MAAM,EAAE,MAAO,EACxB,KAAK,IAAI,OAAO,EAAE,IAAK,CACzB,CACA,CAAC,EAEGG,EAAsBH,EAAI,OAAO,sBAAuB,UAAY,CACvE,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,WAAW,EAAE,MAAO,EAC7B,KAAK,IAAI,YAAY,EAAE,SAAU,EACjC,KAAK,IAAI,OAAO,EAAE,MAAK,EAAG,SAAU,CACtC,CACA,CAAC,EAEGI,EAAuBJ,EAAI,OAAO,uBAAwB,UAAY,CACzE,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,WAAW,EAAE,IAAIG,CAAmB,EAC7C,KAAK,IAAI,kBAAkB,EAAE,OAAQ,CACvC,CACA,CAAC,EAEGE,EAA4BL,EAAI,OAAO,4BAA6B,UAAY,CACnF,KAAK,MAAME,CAAkB,CAC9B,CAAC,EAEGI,EAAcN,EAAI,OAAO,cAAe,UAAY,CACvD,KAAK,MAAMK,CAAyB,CACrC,CAAC,EAEGE,EAAOP,EAAI,OAAO,OAAQ,UAAY,CACzC,KAAK,OAAO,CACX,YAAa,KAAK,IAAIM,CAAW,CACnC,CAAE,CACF,CAAC,EAEGE,EAAWR,EAAI,OAAO,WAAY,UAAY,CACjD,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,WAAW,EAAE,IAAIC,CAAI,EAC9B,KAAK,IAAI,UAAU,EAAE,IAAIA,CAAI,CAC/B,CACA,CAAC,EAEGQ,EAAYT,EAAI,OAAO,YAAa,UAAY,CACnD,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,QAAQ,EAAE,MAAO,EAC1B,KAAK,IAAI,UAAU,EAAE,KAAM,EAAC,IAAI,EAAK,EACrC,KAAK,IAAI,WAAW,EAAE,OAAQ,CAChC,CACA,CAAC,EAEGU,EAAiBV,EAAI,OAAO,iBAAkB,UAAY,CAC7D,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,SAAS,EAAE,SAAS,CAAC,EAAE,IAAQ,EAAC,SAAU,EACnD,KAAK,IAAI,cAAc,EAAE,IAAQ,EACjC,KAAK,IAAI,WAAW,EAAE,IAAIG,CAAmB,EAC7C,KAAK,IAAI,QAAQ,EAAE,IAAII,CAAI,EAC3B,KAAK,IAAI,UAAU,EAAE,IAAIC,CAAQ,EACjC,KAAK,IAAI,SAAS,EAAE,IAAID,CAAI,EAC5B,KAAK,IAAI,sBAAsB,EAAE,IAAIH,CAAoB,EACzD,KAAK,IAAI,gBAAgB,EAAE,SAAS,CAAC,EAAE,OAAQ,EAAC,SAAU,EAC1D,KAAK,IAAI,iBAAiB,EAAE,SAAS,CAAC,EAAE,OAAQ,EAAC,SAAU,EAC3D,KAAK,IAAI,YAAY,EAAE,SAAS,CAAC,EAAE,MAAMK,CAAS,EAAE,SAAU,CAChE,CACA,CAAC,EAEGE,EAAkBX,EAAI,OAAO,kBAAmB,UAAY,CAC/D,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,gBAAgB,EAAE,IAAIU,CAAc,EAC7C,KAAK,IAAI,oBAAoB,EAAE,IAAIP,CAAmB,EACtD,KAAK,IAAI,gBAAgB,EAAE,OAAQ,CACrC,CACA,CAAC,EAED,mBAAiBQ,4GCnFjB,IAAIlyC,EAAOlpB,gBAEQq7D,OAAA,YAAG94D,qBAEtB,IAAI+4D,EAAgBpyC,EAAK,OAAO,gBAAiB,UAAY,CAC5D,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,SAAS,EAAE,IAAQ,EAC5B,KAAK,IAAI,SAAS,EAAE,IAAQ,EAC5B,KAAK,IAAI,gBAAgB,EAAE,IAAQ,EACnC,KAAK,IAAI,iBAAiB,EAAE,IAAQ,EACpC,KAAK,IAAI,QAAQ,EAAE,IAAQ,EAC3B,KAAK,IAAI,QAAQ,EAAE,IAAQ,EAC3B,KAAK,IAAI,WAAW,EAAE,IAAQ,EAC9B,KAAK,IAAI,WAAW,EAAE,IAAQ,EAC9B,KAAK,IAAI,aAAa,EAAE,IAAQ,CAClC,CACA,CAAC,EACoBmyC,OAAA,cAAGC,EAExB,IAAIC,EAAeryC,EAAK,OAAO,eAAgB,UAAY,CAC1D,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,SAAS,EAAE,IAAQ,EAC5B,KAAK,IAAI,gBAAgB,EAAE,IAAQ,CACrC,CACA,CAAC,EACmBmyC,OAAA,aAAGE,EAEvB,IAAIX,EAAsB1xC,EAAK,OAAO,sBAAuB,UAAY,CACxE,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,WAAW,EAAE,MAAO,EAC7B,KAAK,IAAI,MAAM,EAAE,MAAK,EAAG,SAAU,EACnC,KAAK,IAAI,OAAO,EAAE,MAAK,EAAG,SAAU,EACpC,KAAK,IAAI,QAAQ,EAAE,IAAK,EAAC,IACxB,KAAK,IAAI,GAAG,EAAE,IAAQ,EACtB,KAAK,IAAI,GAAG,EAAE,IAAQ,EACtB,KAAK,IAAI,GAAG,EAAE,IAAQ,CACtB,EAAC,SAAU,CACd,CACA,CAAC,EAEGsyC,EAAYtyC,EAAK,OAAO,uBAAwB,UAAY,CAC/D,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,WAAW,EAAE,IAAI0xC,CAAmB,EAC7C,KAAK,IAAI,kBAAkB,EAAE,OAAQ,CACvC,CACA,CAAC,EACgBS,OAAA,UAAGG,EAEpB,IAAIC,EAAiBvyC,EAAK,OAAO,iBAAkB,UAAY,CAC9D,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,SAAS,EAAE,IAAQ,EAC5B,KAAK,IAAI,WAAW,EAAE,IAAI0xC,CAAmB,EAC7C,KAAK,IAAI,mBAAmB,EAAE,OAAQ,CACxC,CACA,CAAC,EACiBS,OAAA,WAAGI,EACrB,IAAIC,EAA0BxyC,EAAK,OAAO,0BAA2B,UAAY,CAChF,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,WAAW,EAAE,IAAK,EAAC,IAC3B,KAAK,IAAI,IAAI,EAAE,MAAO,EACtB,KAAK,IAAI,SAAS,EAAE,IAAK,EAAC,IACzB,KAAK,IAAI,KAAK,EAAE,IAAK,EAAC,IACrB,KAAK,IAAI,IAAI,EAAE,MAAO,EACtB,KAAK,IAAI,WAAW,EAAE,IAAK,EAAC,IAC3B,KAAK,IAAI,MAAM,EAAE,OAAQ,EACzB,KAAK,IAAI,OAAO,EAAE,IAAQ,CAC1B,CACD,EACD,KAAK,IAAI,QAAQ,EAAE,IAAK,EAAC,IACxB,KAAK,IAAI,MAAM,EAAE,MAAO,EACxB,KAAK,IAAI,IAAI,EAAE,OAAQ,CACvB,CACD,CACD,EACD,KAAK,IAAI,mBAAmB,EAAE,OAAQ,CACxC,CACA,CAAC,EAE0BmyC,OAAA,oBAAGK,EAE9B,IAAIC,EAAgBzyC,EAAK,OAAO,gBAAiB,UAAY,CAC5D,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,SAAS,EAAE,IAAQ,EAC5B,KAAK,IAAI,GAAG,EAAE,IAAQ,EACtB,KAAK,IAAI,GAAG,EAAE,IAAQ,EACtB,KAAK,IAAI,GAAG,EAAE,IAAQ,EACtB,KAAK,IAAI,SAAS,EAAE,IAAQ,EAC5B,KAAK,IAAI,UAAU,EAAE,IAAQ,CAC/B,CACA,CAAC,EACoBmyC,OAAA,cAAGM,EAExBN,OAAA,SAAmBnyC,EAAK,OAAO,WAAY,UAAY,CACtD,KAAK,KACN,CAAC,EAED,IAAI0yC,EAAe1yC,EAAK,OAAO,eAAgB,UAAY,CAC1D,KAAK,OAAO,CACX,WAAY,KAAK,MAAO,CAC1B,CAAE,CACF,CAAC,EAEG2yC,EAAe3yC,EAAK,OAAO,eAAgB,UAAY,CAC1D,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,SAAS,EAAE,IAAQ,EAC5B,KAAK,IAAI,YAAY,EAAE,OAAQ,EAC/B,KAAK,IAAI,YAAY,EAAE,SAAQ,EAAG,SAAS,CAAC,EAAE,IAAI0yC,CAAY,EAC9D,KAAK,IAAI,WAAW,EAAE,SAAU,EAAC,SAAS,CAAC,EAAE,OAAQ,CACvD,CACA,CAAC,EACmBP,cAAA,aAAGQ,EAEvBR,OAAA,UAAoBnyC,EAAK,OAAO,YAAa,UAAY,CACxD,KAAK,IAAG,EAAG,IACV,KAAK,IAAI,GAAG,EAAE,IAAQ,EACtB,KAAK,IAAI,GAAG,EAAE,IAAQ,CACxB,CACA,CAAC,2mBCvHD,IAAI4yC,EAAW,wHACXC,EAAa,8CACbC,EAAY,iFACZC,EAAMj8D,wBACNo4C,EAAU71C,mBACV//C,EAAS+0D,oBAAsB,EAAC,OACpC,eAAiB,SAAU2kD,EAAMvsB,EAAU,CAC1C,IAAIvjF,EAAM8vG,EAAK,WACXzqF,EAAQrlB,EAAI,MAAM0vG,CAAQ,EAC1BK,EACJ,GAAK1qF,EAGE,CACN,IAAImmE,EAAQ,MAAQnmE,EAAM,CAAC,EACvB0yC,EAAK3hE,EAAO,KAAKivB,EAAM,CAAC,EAAG,KAAK,EAChC2qF,EAAa55G,EAAO,KAAKivB,EAAM,CAAC,EAAE,QAAQ,UAAW,EAAE,EAAG,QAAQ,EAClE4qF,EAAYJ,EAAItsB,EAAUxrB,EAAG,MAAM,EAAG,CAAC,EAAG,SAAS1yC,EAAM,CAAC,EAAG,EAAE,CAAC,EAAE,IAClEppB,EAAM,GACNk9D,EAAS6yB,EAAQ,iBAAiBR,EAAOykB,EAAWl4C,CAAE,EAC1D97D,EAAI,KAAKk9D,EAAO,OAAO62C,CAAU,CAAC,EAClC/zG,EAAI,KAAKk9D,EAAO,MAAU,GAC1B42C,EAAY35G,EAAO,OAAO6F,CAAG,CAC7B,KAbW,CACX,IAAIi0G,EAASlwG,EAAI,MAAM4vG,CAAS,EAChCG,EAAY35G,EAAO,KAAK85G,EAAO,CAAC,EAAE,QAAQ,UAAW,EAAE,EAAG,QAAQ,CACpE,CAWC,IAAI1qF,EAAMxlB,EAAI,MAAM2vG,CAAU,EAAE,CAAC,EACjC,MAAO,CACN,IAAKnqF,EACL,KAAMuqF,CACR,0IC7BA,IAAIjzC,EAAOlpB,cACPu8D,EAAQ,WACRC,EAAUjlD,iBACV6gC,EAAUvgC,mBACV4kD,EAASrgD,mBACT55D,EAAS65D,oBAAsB,EAAC,OAEpC,SAASwJ,EAAQttD,EAAMo3E,EAAU,CAChC,IAAIC,EAAOr3E,EAAK,UAAU,QAAQ,IAAI,UAAU,KAC5CmkG,EAAQ,SAASnkG,EAAK,UAAU,QAAQ,IAAI,UAAU,MAAM,SAAU,EAAE,EAAE,EAC1Ei4E,EAAO+rB,EAAMhkG,EAAK,UAAU,QAAQ,OAAO,KAAK,KAAK,GAAG,CAAC,EACzD4rD,EAAK5rD,EAAK,UAAU,QAAQ,OAAO,GACnC6jG,EAAa7jG,EAAK,kBAClB+0D,EAAS,SAASkjB,EAAK,MAAM,GAAG,EAAE,CAAC,EAAG,EAAE,EAAI,EAC5CpkF,EAAMqwG,EAAO,WAAW9sB,EAAUC,EAAM8sB,EAAOpvC,EAAQ,MAAM,EAC7D/H,EAAS6yB,EAAQ,iBAAiB5H,EAAMpkF,EAAK+3D,CAAE,EAC/C97D,EAAM,GACV,OAAAA,EAAI,KAAKk9D,EAAO,OAAO62C,CAAU,CAAC,EAClC/zG,EAAI,KAAKk9D,EAAO,MAAU,GACnB/iE,EAAO,OAAO6F,CAAG,CACxB,CAED,SAASs0G,EAAU18G,EAAQ,CAC1B,IAAI0vF,EACA,OAAO1vF,GAAW,UAAY,CAACuC,EAAO,SAASvC,CAAM,IACxD0vF,EAAW1vF,EAAO,WAClBA,EAASA,EAAO,KAEb,OAAOA,GAAW,WACrBA,EAASuC,EAAO,KAAKvC,CAAM,GAG5B,IAAI28G,EAAWJ,EAAQv8G,EAAQ0vF,CAAQ,EAEnC/kF,EAAOgyG,EAAS,IAChBrkG,EAAOqkG,EAAS,KAChBC,EAASC,EACb,OAAQlyG,EAAI,CACX,IAAK,cACJkyG,EAAQ5zC,EAAK,YAAY,OAAO3wD,EAAM,KAAK,EAAE,eAAe,qBAE7D,IAAK,aAKJ,OAJKukG,IACJA,EAAQ5zC,EAAK,UAAU,OAAO3wD,EAAM,KAAK,GAE1CskG,EAAUC,EAAM,UAAU,UAAU,KAAK,GAAG,EACpCD,EAAO,CACd,IAAK,uBACJ,OAAO3zC,EAAK,aAAa,OAAO4zC,EAAM,iBAAiB,KAAM,KAAK,EACnE,IAAK,oBACJ,OAAAA,EAAM,kBAAoBA,EAAM,iBACzB,CACN,KAAM,KACN,KAAMA,CACZ,EACI,IAAK,oBACJ,OAAAA,EAAM,UAAU,OAAO,QAAU5zC,EAAK,SAAS,OAAO4zC,EAAM,iBAAiB,KAAM,KAAK,EACjF,CACN,KAAM,MACN,KAAMA,EAAM,UAAU,MAC5B,EACI,QAAS,MAAM,IAAI,MAAM,kBAAoBD,CAAO,CACpD,CAEF,IAAK,wBACJtkG,EAAO2wD,EAAK,oBAAoB,OAAO3wD,EAAM,KAAK,EAClDA,EAAOstD,EAAQttD,EAAMo3E,CAAQ,EAE9B,IAAK,cAGJ,OAFAmtB,EAAQ5zC,EAAK,WAAW,OAAO3wD,EAAM,KAAK,EAC1CskG,EAAUC,EAAM,UAAU,UAAU,KAAK,GAAG,EACpCD,EAAO,CACd,IAAK,uBACJ,OAAO3zC,EAAK,cAAc,OAAO4zC,EAAM,kBAAmB,KAAK,EAChE,IAAK,oBACJ,MAAO,CACN,MAAOA,EAAM,UAAU,MACvB,WAAY5zC,EAAK,aAAa,OAAO4zC,EAAM,kBAAmB,KAAK,EAAE,UAC3E,EACI,IAAK,oBACJ,OAAAA,EAAM,UAAU,OAAO,SAAW5zC,EAAK,SAAS,OAAO4zC,EAAM,kBAAmB,KAAK,EAC9E,CACN,KAAM,MACN,OAAQA,EAAM,UAAU,MAC9B,EACI,QAAS,MAAM,IAAI,MAAM,kBAAoBD,CAAO,CACpD,CAEF,IAAK,iBACJ,OAAO3zC,EAAK,aAAa,OAAO3wD,EAAM,KAAK,EAC5C,IAAK,kBACJ,OAAO2wD,EAAK,cAAc,OAAO3wD,EAAM,KAAK,EAC7C,IAAK,kBACJ,MAAO,CACN,KAAM,MACN,OAAQ2wD,EAAK,cAAc,OAAO3wD,EAAM,KAAK,CACjD,EACE,IAAK,iBACJ,OAAAA,EAAO2wD,EAAK,aAAa,OAAO3wD,EAAM,KAAK,EACpC,CACN,MAAOA,EAAK,WAAW,MACvB,WAAYA,EAAK,UACrB,EACE,QAAS,MAAM,IAAI,MAAM,oBAAsB3N,CAAI,CACnD,CACD,CACD,OAAA+xG,EAAU,UAAYzzC,EAAK,UAE3B,UAAiByzC,0RC3GjB,IAAIn6G,EAASw9C,oBAAsB,EAAC,OAChC+8D,EAAax6D,mBACbskD,EAAMtvC,uBACNw9C,EAAKl9C,gBAAmB,EAAC,GACzB4gC,EAAKr8B,YACLugD,EAAYtgD,mBACZm3C,EAASl3C,WAET0gD,EAAoB,EAExB,SAASC,EAAK9yD,EAAM/9C,EAAK8wG,EAAUC,EAAUvrF,EAAK,CAChD,IAAIkzE,EAAO6X,EAAUvwG,CAAG,EACxB,GAAI04F,EAAK,MAAO,CAEd,GAAIqY,IAAa,SAAWA,IAAa,YAAe,MAAM,IAAI,MAAM,wBAAwB,EAChG,OAAOC,EAAOjzD,EAAM26C,CAAI,CAC5B,SAAaA,EAAK,OAAS,MAAO,CAC9B,GAAIqY,IAAa,MAAS,MAAM,IAAI,MAAM,wBAAwB,EAClE,OAAOE,EAAQlzD,EAAM26C,EAAMoY,CAAQ,CACpC,CACD,GAAIC,IAAa,OAASA,IAAa,YAAe,MAAM,IAAI,MAAM,wBAAwB,EAC9F,GAAI/wG,EAAI,UAAY,QAAaA,EAAI,UAAY4wG,EAAqB,MAAM,IAAI,MAAM,qCAAqC,EAE3H7yD,EAAO3nD,EAAO,OAAO,CAACovB,EAAKu4B,CAAI,CAAC,EAGhC,QAFI1qD,EAAMqlG,EAAK,QAAQ,WAAU,EAC7Bx/C,GAAM,CAAC,EAAG,CAAC,EACR6E,EAAK,OAAS7E,GAAI,OAAS,EAAI7lD,GAAO6lD,GAAI,KAAK,GAAI,EAC1DA,GAAI,KAAK,CAAI,EAEb,QADI3lD,GAAI,GACD,EAAEA,GAAIwqD,EAAK,QAAU7E,GAAI,KAAK6E,EAAKxqD,EAAC,CAAC,EAE5C,IAAI0I,GAAMw+F,EAAIvhD,GAAKw/C,CAAI,EACvB,OAAOz8F,EACR,CAED,SAAS+0G,EAAOjzD,EAAM26C,EAAM,CAC1B,IAAIwY,EAAU9J,EAAO1O,EAAK,MAAM,KAAK,GAAG,CAAC,EACzC,GAAI,CAACwY,EAAW,MAAM,IAAI,MAAM,iBAAmBxY,EAAK,MAAM,KAAK,GAAG,CAAC,EAEvE,IAAIwE,EAAQ,IAAIyL,EAAGuI,CAAO,EACtBlxG,EAAMk9F,EAAM,eAAexE,EAAK,UAAU,EAC1Cz8F,EAAM+D,EAAI,KAAK+9C,CAAI,EAEvB,OAAO3nD,EAAO,KAAK6F,EAAI,MAAO,EAC/B,CAED,SAASg1G,EAAQlzD,EAAM26C,EAAMtU,EAAM,CAUjC,QATIrxF,EAAI2lG,EAAK,OAAO,SAChBlvF,EAAIkvF,EAAK,OAAO,EAChBpL,EAAIoL,EAAK,OAAO,EAChBr0E,EAAIq0E,EAAK,OAAO,EAChBzxF,GAAI,IAAIolF,EAAG,CAAC,EACZ5hE,GACAwzD,GAAIkzB,EAASpzD,EAAMuvC,CAAC,EAAE,IAAIA,CAAC,EAC3B13F,GAAI,GACJw7G,EAAKC,EAAOt+G,EAAGu6F,EAAGvvC,EAAMqmC,CAAI,EACzBxuF,KAAM,IACX60B,GAAI6mF,EAAQhkB,EAAG8jB,EAAIhtB,CAAI,EACvBn9E,GAAIsqG,EAAMltF,EAAGoG,GAAGjhB,EAAG8jF,CAAC,EACpB13F,GAAI60B,GAAE,KAAK6iE,CAAC,EAAE,KAAKrP,GAAE,IAAIlrF,EAAE,IAAIkU,EAAC,CAAC,CAAC,EAAE,IAAIqmF,CAAC,EACrC13F,GAAE,KAAK,CAAC,IAAM,IAChBA,GAAI,GACJqR,GAAI,IAAIolF,EAAG,CAAC,GAGhB,OAAOmlB,EAAMvqG,GAAGrR,EAAC,CAClB,CAED,SAAS47G,EAAMvqG,EAAGrR,EAAG,CACnBqR,EAAIA,EAAE,UACNrR,EAAIA,EAAE,UAGFqR,EAAE,CAAC,EAAI,MAAQA,EAAI,CAAC,CAAC,EAAE,OAAOA,CAAC,GAC/BrR,EAAE,CAAC,EAAI,MAAQA,EAAI,CAAC,CAAC,EAAE,OAAOA,CAAC,GAEnC,IAAIq/E,EAAQhuE,EAAE,OAASrR,EAAE,OAAS,EAC9ByF,EAAM,CACR,GAAM45E,EAAO,EAAMhuE,EAAE,MACzB,EACE,OAAA5L,EAAMA,EAAI,OAAO4L,EAAG,CAAC,EAAMrR,EAAE,MAAM,EAAGA,CAAC,EAChCQ,EAAO,KAAKiF,CAAG,CACvB,CAED,SAASg2G,EAAOt+G,EAAGu6F,EAAGvvC,EAAMqmC,EAAM,CAEhC,GADArxF,EAAIqD,EAAO,KAAKrD,EAAE,QAAS,GACvBA,EAAE,OAASu6F,EAAE,WAAU,EAAI,CAC7B,IAAI52B,EAAQtgE,EAAO,MAAMk3F,EAAE,aAAev6F,EAAE,MAAM,EAClDA,EAAIqD,EAAO,OAAO,CAACsgE,EAAO3jE,CAAC,CAAC,CAC7B,CACD,IAAI0+G,EAAO1zD,EAAK,OACZ2zD,EAAQC,EAAY5zD,EAAMuvC,CAAC,EAC3B1rF,GAAIxL,EAAO,MAAMq7G,CAAI,EACzB7vG,GAAE,KAAK,CAAC,EACR,IAAI6oB,GAAIr0B,EAAO,MAAMq7G,CAAI,EACzB,OAAAhnF,GAAIkmF,EAAWvsB,EAAM35D,EAAC,EAAE,OAAO7oB,EAAC,EAAE,OAAOxL,EAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAOrD,CAAC,EAAE,OAAO2+G,CAAK,EAAE,SACnF9vG,GAAI+uG,EAAWvsB,EAAM35D,EAAC,EAAE,OAAO7oB,EAAC,EAAE,SAClC6oB,GAAIkmF,EAAWvsB,EAAM35D,EAAC,EAAE,OAAO7oB,EAAC,EAAE,OAAOxL,EAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAOrD,CAAC,EAAE,OAAO2+G,CAAK,EAAE,SACnF9vG,GAAI+uG,EAAWvsB,EAAM35D,EAAC,EAAE,OAAO7oB,EAAC,EAAE,SAC3B,CAAE,EAAG6oB,GAAG,EAAG7oB,EAAC,CACpB,CAED,SAASuvG,EAASS,EAAOtkB,EAAG,CAC1B,IAAIt0C,EAAO,IAAIqzC,EAAGulB,CAAK,EACnB73D,GAAS63D,EAAM,QAAU,GAAKtkB,EAAE,YACpC,OAAIvzC,EAAQ,GAAKf,EAAK,MAAMe,CAAK,EAC1Bf,CACR,CAED,SAAS24D,EAAY34D,EAAMs0C,EAAG,CAC5Bt0C,EAAOm4D,EAASn4D,EAAMs0C,CAAC,EACvBt0C,EAAOA,EAAK,IAAIs0C,CAAC,EACjB,IAAIrxF,EAAM7F,EAAO,KAAK4iD,EAAK,QAAS,GACpC,GAAI/8C,EAAI,OAASqxF,EAAE,WAAU,EAAI,CAC/B,IAAI52B,EAAQtgE,EAAO,MAAMk3F,EAAE,aAAerxF,EAAI,MAAM,EACpDA,EAAM7F,EAAO,OAAO,CAACsgE,EAAOz6D,CAAG,CAAC,CACjC,CACD,OAAOA,CACR,CAED,SAASq1G,EAAQhkB,EAAG8jB,EAAIhtB,EAAM,CAC5B,IAAItvE,EACA2V,EAEJ,EAAG,CAGD,IAFA3V,EAAI1e,EAAO,MAAM,CAAC,EAEX0e,EAAE,OAAS,EAAIw4E,EAAE,UAAS,GAC/B8jB,EAAG,EAAIT,EAAWvsB,EAAMgtB,EAAG,CAAC,EAAE,OAAOA,EAAG,CAAC,EAAE,OAAM,EACjDt8F,EAAI1e,EAAO,OAAO,CAAC0e,EAAGs8F,EAAG,CAAC,CAAC,EAG7B3mF,EAAI0mF,EAASr8F,EAAGw4E,CAAC,EACjB8jB,EAAG,EAAIT,EAAWvsB,EAAMgtB,EAAG,CAAC,EAAE,OAAOA,EAAG,CAAC,EAAE,OAAOh7G,EAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SACpEg7G,EAAG,EAAIT,EAAWvsB,EAAMgtB,EAAG,CAAC,EAAE,OAAOA,EAAG,CAAC,EAAE,OAAM,CAClD,OAAQ3mF,EAAE,IAAI6iE,CAAC,IAAM,IAEtB,OAAO7iE,CACR,CAED,SAAS8mF,EAAMltF,EAAGoG,EAAGjhB,EAAG8jF,EAAG,CACzB,OAAOjpE,EAAE,MAAMgoE,EAAG,KAAK7iF,CAAC,CAAC,EAAE,OAAOihB,CAAC,EAAE,QAAS,EAAC,IAAI6iE,CAAC,CACrD,CAEaukB,YAAA,QAAGhB,EACIgB,KAAA,eAAGR,EACxBQ,KAAA,gBAAyBP,gIClJzB,IAAIl7G,EAASw9C,oBAAsB,EAAC,OAChCy4C,EAAKl2C,YACLwyD,EAAKx9C,gBAAmB,EAAC,GACzBolD,EAAY9kD,mBACZ27C,EAAS,WAEb,SAAS0K,EAAOlI,EAAK7rD,EAAM/9C,EAAK+wG,EAAUvrF,EAAK,CAC7C,IAAIgzE,EAAM+X,EAAUvwG,CAAG,EACvB,GAAIw4F,EAAI,OAAS,KAAM,CAErB,GAAIuY,IAAa,SAAWA,IAAa,YAAe,MAAM,IAAI,MAAM,uBAAuB,EAC/F,OAAOgB,EAASnI,EAAK7rD,EAAMy6C,CAAG,CAClC,SAAaA,EAAI,OAAS,MAAO,CAC7B,GAAIuY,IAAa,MAAS,MAAM,IAAI,MAAM,uBAAuB,EACjE,OAAOiB,EAAUpI,EAAK7rD,EAAMy6C,CAAG,CAChC,CACD,GAAIuY,IAAa,OAASA,IAAa,YAAe,MAAM,IAAI,MAAM,uBAAuB,EAE7FhzD,EAAO3nD,EAAO,OAAO,CAACovB,EAAKu4B,CAAI,CAAC,EAIhC,QAHI1qD,EAAMmlG,EAAI,QAAQ,WAAU,EAC5Bt/C,EAAM,CAAC,CAAC,EACR+4D,EAAS,EACNl0D,EAAK,OAAS7E,EAAI,OAAS,EAAI7lD,GACpC6lD,EAAI,KAAK,GAAI,EACb+4D,GAAU,EAEZ/4D,EAAI,KAAK,CAAI,EAEb,QADI3lD,EAAI,GACD,EAAEA,EAAIwqD,EAAK,QAChB7E,EAAI,KAAK6E,EAAKxqD,CAAC,CAAC,EAElB2lD,EAAM9iD,EAAO,KAAK8iD,CAAG,EACrB,IAAIk+C,EAAM/K,EAAG,KAAKmM,EAAI,OAAO,EAC7BoR,EAAM,IAAIvd,EAAGud,CAAG,EAAE,MAAMxS,CAAG,EAE3BwS,EAAMA,EAAI,OAAO,IAAIvd,EAAGmM,EAAI,cAAc,CAAC,EAC3CoR,EAAMxzG,EAAO,KAAKwzG,EAAI,QAAS,EAAC,QAAO,CAAE,EACzC,IAAI3tG,EAAMg2G,EAAS,EAAI,EAAI,EAK3B,IAJA5+G,EAAM,KAAK,IAAIu2G,EAAI,OAAQ1wD,EAAI,MAAM,EACjC0wD,EAAI,SAAW1wD,EAAI,SAAUj9C,EAAM,GAEvC1I,EAAI,GACG,EAAEA,EAAIF,GAAO4I,GAAO2tG,EAAIr2G,CAAC,EAAI2lD,EAAI3lD,CAAC,EACzC,OAAO0I,IAAQ,CAChB,CAED,SAAS81G,EAASnI,EAAK7rD,EAAMy6C,EAAK,CAChC,IAAI0Y,EAAU9J,EAAO5O,EAAI,KAAK,UAAU,MAAM,KAAK,GAAG,CAAC,EACvD,GAAI,CAAC0Y,EAAW,MAAM,IAAI,MAAM,iBAAmB1Y,EAAI,KAAK,UAAU,MAAM,KAAK,GAAG,CAAC,EAErF,IAAI0E,EAAQ,IAAIyL,EAAGuI,CAAO,EACtBgB,EAAS1Z,EAAI,KAAK,kBAAkB,KAExC,OAAO0E,EAAM,OAAOn/C,EAAM6rD,EAAKsI,CAAM,CACtC,CAED,SAASF,EAAUpI,EAAK7rD,EAAMy6C,EAAK,CACjC,IAAIhvF,EAAIgvF,EAAI,KAAK,EACblL,EAAIkL,EAAI,KAAK,EACbn0E,EAAIm0E,EAAI,KAAK,EACb//F,EAAI+/F,EAAI,KAAK,QACb2Z,EAAW5B,EAAU,UAAU,OAAO3G,EAAK,KAAK,EAChDh0G,EAAIu8G,EAAS,EACblrG,EAAIkrG,EAAS,EACjBC,EAAWx8G,EAAG03F,CAAC,EACf8kB,EAAWnrG,EAAGqmF,CAAC,EACf,IAAI+kB,EAAQhmB,EAAG,KAAK7iF,CAAC,EACjB2kB,EAAIv4B,EAAE,KAAK03F,CAAC,EACZ1rF,EAAIyiB,EAAE,MAAMguF,CAAK,EAClB,OAAO,IAAIhmB,EAAGtuC,CAAI,EAAE,IAAI5vB,CAAC,EAAE,IAAIm/D,CAAC,CAAC,EACjC,QAAS,EACT,IAAI70F,EAAE,MAAM45G,CAAK,EAAE,OAAOprG,EAAE,IAAIknB,CAAC,EAAE,IAAIm/D,CAAC,CAAC,EAAE,QAAO,CAAE,EACpD,IAAI9jF,CAAC,EACL,IAAI8jF,CAAC,EACR,OAAO1rF,EAAE,IAAIqF,CAAC,IAAM,CACrB,CAED,SAASmrG,EAAW56G,EAAG81F,EAAG,CACxB,GAAI91F,EAAE,KAAK,CAAC,GAAK,EAAK,MAAM,IAAI,MAAM,aAAa,EACnD,GAAIA,EAAE,IAAI81F,CAAC,GAAK,EAAK,MAAM,IAAI,MAAM,aAAa,CACnD,CAED,gBAAiBwkB,0ICnFjB,IAAI17G,EAASw9C,oBAAsB,EAAC,OAChC0+D,EAAan8D,mBACbzC,EAASyX,yBACTjV,EAAWuV,wBACXolD,EAAO7gD,cACP8hD,EAAS7hD,gBAETsiD,EAAa,WACjB,OAAO,KAAKA,CAAU,EAAE,QAAQ,SAAUvyG,EAAK,CAC7CuyG,EAAWvyG,CAAG,EAAE,GAAK5J,EAAO,KAAKm8G,EAAWvyG,CAAG,EAAE,GAAI,KAAK,EAC1DuyG,EAAWvyG,EAAI,YAAW,CAAE,EAAIuyG,EAAWvyG,CAAG,CAChD,CAAC,EAED,SAASwyG,EAAK/6C,EAAW,CACvB/jB,EAAO,SAAS,KAAK,IAAI,EAEzB,IAAIvnC,EAAOomG,EAAW96C,CAAS,EAC/B,GAAI,CAACtrD,EAAQ,MAAM,IAAI,MAAM,wBAAwB,EAErD,KAAK,UAAYA,EAAK,KACtB,KAAK,MAAQmmG,EAAWnmG,EAAK,IAAI,EACjC,KAAK,KAAOA,EAAK,GACjB,KAAK,UAAYA,EAAK,IACvB,CACD+pC,EAASs8D,EAAM9+D,EAAO,QAAQ,EAE9B8+D,EAAK,UAAU,OAAS,SAAgBrmG,EAAMnL,EAAGwE,EAAM,CACrD,KAAK,MAAM,OAAO2G,CAAI,EACtB3G,GACF,EAEAgtG,EAAK,UAAU,OAAS,SAAgBrmG,EAAM4nE,EAAK,CACjD,YAAK,MAAM,OAAO,OAAO5nE,GAAS,SAAW/V,EAAO,KAAK+V,EAAM4nE,CAAG,EAAI5nE,CAAI,EAEnE,IACT,EAEAqmG,EAAK,UAAU,KAAO,SAAoBxyG,EAAK+zE,EAAK,CAClD,KAAK,IAAG,EACR,IAAIh2B,EAAO,KAAK,MAAM,OAAM,EACxB6rD,EAAMiH,EAAK9yD,EAAM/9C,EAAK,KAAK,UAAW,KAAK,UAAW,KAAK,IAAI,EAEnE,OAAO+zE,EAAM61B,EAAI,SAAS71B,CAAG,EAAI61B,CACnC,EAEA,SAAS6I,EAAOh7C,EAAW,CACzB/jB,EAAO,SAAS,KAAK,IAAI,EAEzB,IAAIvnC,EAAOomG,EAAW96C,CAAS,EAC/B,GAAI,CAACtrD,EAAQ,MAAM,IAAI,MAAM,wBAAwB,EAErD,KAAK,MAAQmmG,EAAWnmG,EAAK,IAAI,EACjC,KAAK,KAAOA,EAAK,GACjB,KAAK,UAAYA,EAAK,IACvB,CACD+pC,EAASu8D,EAAQ/+D,EAAO,QAAQ,EAEhC++D,EAAO,UAAU,OAAS,SAAgBtmG,EAAMnL,EAAGwE,EAAM,CACvD,KAAK,MAAM,OAAO2G,CAAI,EACtB3G,GACF,EAEAitG,EAAO,UAAU,OAAS,SAAgBtmG,EAAM4nE,EAAK,CACnD,YAAK,MAAM,OAAO,OAAO5nE,GAAS,SAAW/V,EAAO,KAAK+V,EAAM4nE,CAAG,EAAI5nE,CAAI,EAEnE,IACT,EAEAsmG,EAAO,UAAU,OAAS,SAAsBzyG,EAAK4pG,EAAK71B,EAAK,CAC7D,IAAI2+B,EAAY,OAAO9I,GAAQ,SAAWxzG,EAAO,KAAKwzG,EAAK71B,CAAG,EAAI61B,EAElE,KAAK,IAAG,EACR,IAAI7rD,EAAO,KAAK,MAAM,OAAM,EAC5B,OAAO+zD,EAAOY,EAAW30D,EAAM/9C,EAAK,KAAK,UAAW,KAAK,IAAI,CAC/D,EAEA,SAAS2yG,EAAWl7C,EAAW,CAC7B,OAAO,IAAI+6C,EAAK/6C,CAAS,CAC1B,CAED,SAASm7C,EAAan7C,EAAW,CAC/B,OAAO,IAAIg7C,EAAOh7C,CAAS,CAC5B,CAEDzkE,iBAAiB,CACf,KAAM2/G,EACN,OAAQC,EACR,WAAYD,EACZ,aAAcC,4IC1FhB,IAAItI,EAAW12D,gBAAmB,EAC9By4C,EAAKl2C,YAAgB,EAEzBnjD,UAAiB,SAAqBkqG,EAAO,CAC3C,OAAO,IAAI2V,EAAK3V,CAAK,CACtB,EAED,IAAIr7D,EAAU,CACZ,UAAW,CACT,KAAM,YACN,WAAY,EACb,EACD,UAAW,CACT,KAAM,OACN,WAAY,EACb,EACD,WAAY,CACV,KAAM,OACN,WAAY,EACb,EACD,WAAY,CACV,KAAM,OACN,WAAY,EACb,EACD,QAAS,CACP,KAAM,UACN,WAAY,EACb,EACD,UAAW,CACT,KAAM,OACN,WAAY,EACb,EACD,UAAW,CACT,KAAM,OACN,WAAY,EACb,CACF,EAEDA,EAAQ,KAAOA,EAAQ,UACvBA,EAAQ,KAAOA,EAAQ,UAAYA,EAAQ,WAC3CA,EAAQ,KAAOA,EAAQ,UAAYA,EAAQ,WAC3CA,EAAQ,KAAOA,EAAQ,UACvBA,EAAQ,KAAOA,EAAQ,UAEvB,SAASgxE,EAAM3V,EAAO,CACpB,KAAK,UAAYr7D,EAAQq7D,CAAK,EACzB,KAAK,YACR,KAAK,UAAY,CACf,KAAMA,CACP,GAEH,KAAK,MAAQ,IAAIoN,EAAS,GAAG,KAAK,UAAU,IAAI,EAChD,KAAK,KAAO,MACb,CAEDuI,EAAK,UAAU,aAAe,SAAU9+B,EAAKt4B,EAAQ,CACnD,YAAK,KAAO,KAAK,MAAM,WAAY,EAC5B,KAAK,aAAas4B,EAAKt4B,CAAM,CACrC,EAEDo3D,EAAK,UAAU,cAAgB,SAAU52D,EAAO62D,EAAO/+B,EAAK,CAC1D++B,EAAQA,GAAS,OACZ18G,SAAO,SAAS6lD,CAAK,IACxBA,EAAQ,IAAI7lD,SAAO6lD,EAAO62D,CAAK,GAEjC,IAAIC,EAAW,KAAK,MAAM,cAAc92D,CAAK,EAAE,UAAW,EACtDhgD,EAAM82G,EAAS,IAAI,KAAK,KAAK,WAAU,CAAE,EAAE,KAAM,EACrD,OAAO9Z,EAAkBh9F,EAAK83E,EAAK,KAAK,UAAU,UAAU,CAC7D,EAED8+B,EAAK,UAAU,aAAe,SAAU9+B,EAAKt4B,EAAQ,CACnD,IAAIz7C,EAAM,KAAK,KAAK,UAAUy7C,IAAW,aAAc,EAAI,EAC3D,OAAIA,IAAW,WACTz7C,EAAIA,EAAI,OAAS,CAAC,EAAI,EACxBA,EAAI,CAAC,EAAI,EAETA,EAAI,CAAC,EAAI,GAGNi5F,EAAkBj5F,EAAK+zE,CAAG,CAClC,EAED8+B,EAAK,UAAU,cAAgB,SAAU9+B,EAAK,CAC5C,OAAOklB,EAAkB,KAAK,KAAK,WAAU,EAAIllB,CAAG,CACrD,EAED8+B,EAAK,UAAU,aAAe,SAAUra,EAAKzkB,EAAK,CAChD,OAAAA,EAAMA,GAAO,OACR39E,SAAO,SAASoiG,CAAG,IACtBA,EAAM,IAAIpiG,SAAOoiG,EAAKzkB,CAAG,GAE3B,KAAK,KAAK,cAAcykB,CAAG,EACpB,IACR,EAEDqa,EAAK,UAAU,cAAgB,SAAUna,EAAM3kB,EAAK,CAClDA,EAAMA,GAAO,OACR39E,SAAO,SAASsiG,CAAI,IACvBA,EAAO,IAAItiG,SAAOsiG,EAAM3kB,CAAG,GAG7B,IAAIi/B,EAAQ,IAAI3mB,EAAGqM,CAAI,EACvB,OAAAsa,EAAQA,EAAM,SAAS,EAAE,EACzB,KAAK,KAAO,KAAK,MAAM,WAAY,EACnC,KAAK,KAAK,eAAeA,CAAK,EACvB,IACR,EAED,SAAS/Z,EAAmBjC,EAAIjjB,EAAK1gF,EAAK,CACnC,MAAM,QAAQ2jG,CAAE,IACnBA,EAAKA,EAAG,QAAS,GAEnB,IAAIlgG,EAAM,IAAIV,SAAO4gG,CAAE,EACvB,GAAI3jG,GAAOyD,EAAI,OAASzD,EAAK,CAC3B,IAAIqjE,EAAQ,IAAItgE,SAAO/C,EAAMyD,EAAI,MAAM,EACvC4/D,EAAM,KAAK,CAAC,EACZ5/D,EAAMV,SAAO,OAAO,CAACsgE,EAAO5/D,CAAG,CAAC,CACjC,CACD,OAAKi9E,EAGIj9E,EAAI,SAASi9E,CAAG,EAFhBj9E,CAIX,0HC3HA,IAAIw7G,EAAa1+D,iBAAsB,EACnCx9C,EAAS+/C,oBAAsB,EAAC,OAEpC,IAAiB,SAAUwxD,EAAMt0G,EAAK,CAIpC,QAHIyhB,EAAI1e,EAAO,MAAM,CAAC,EAClB7C,EAAI,EACJuC,EACGgf,EAAE,OAASzhB,GAChByC,EAAIm9G,EAAM1/G,GAAG,EACbuhB,EAAI1e,EAAO,OAAO,CAAC0e,EAAGw9F,EAAW,MAAM,EAAE,OAAO3K,CAAI,EAAE,OAAO7xG,CAAC,EAAE,OAAQ,EAAC,EAE3E,OAAOgf,EAAE,MAAM,EAAGzhB,CAAG,CACtB,EAED,SAAS4/G,EAAOn9G,EAAG,CACjB,IAAImG,EAAM7F,EAAO,YAAY,CAAC,EAC9B,OAAA6F,EAAI,cAAcnG,EAAG,CAAC,EACfmG,CACT,oGClBA4qF,MAAiB,SAAcruF,EAAGhB,EAAG,CAGnC,QAFInE,EAAMmF,EAAE,OACRjF,EAAI,GACD,EAAEA,EAAIF,GACXmF,EAAEjF,CAAC,GAAKiE,EAAEjE,CAAC,EAEb,OAAOiF,CACT,kJCPA,IAAI6zF,EAAKz4C,YAAgB,EACrBx9C,EAAS+/C,oBAAsB,EAAC,OAEpC,SAAS+8D,EAAYC,EAAWnzG,EAAK,CACnC,OAAO5J,EAAO,KAAK+8G,EAChB,MAAM9mB,EAAG,KAAKrsF,EAAI,OAAO,CAAC,EAC1B,OAAO,IAAIqsF,EAAGrsF,EAAI,cAAc,CAAC,EACjC,QAAS,EACT,SAAS,CACb,CAED,oBAAiBkzG,sKCXjB,IAAI3C,EAAY38D,iBAAqB,EACjC+tB,EAAcxrB,iBAAsB,EACpCm8D,EAAannD,iBAAsB,EACnCioD,EAAM3nD,WAAgB,EACtBo7B,EAAM72B,WAAgB,EACtBq8B,EAAKp8B,YAAgB,EACrBijD,EAAahjD,kBAAuB,EACpCuqC,EAAMtqC,qBAAyB,EAC/B/5D,EAASg6D,oBAAsB,EAAC,OAEtB,cAAG,SAAwBijD,EAAWj1G,EAAKqsD,EAAS,CAChE,IAAImN,EACAy7C,EAAU,QACZz7C,EAAUy7C,EAAU,QACX5oD,EACTmN,EAAU,EAEVA,EAAU,EAEZ,IAAI53D,EAAMuwG,EAAU8C,CAAS,EACzBF,EACJ,GAAIv7C,IAAY,EACdu7C,EAAYG,EAAKtzG,EAAK5B,CAAG,UAChBw5D,IAAY,EACrBu7C,EAAYI,EAAMvzG,EAAK5B,EAAKqsD,CAAO,UAC1BmN,IAAY,GAErB,GADAu7C,EAAY,IAAI9mB,EAAGjuF,CAAG,EAClB+0G,EAAU,IAAInzG,EAAI,OAAO,GAAK,EAChC,MAAM,IAAI,MAAM,2BAA2B,MAG7C,OAAM,IAAI,MAAM,iBAAiB,EAEnC,OAAIyqD,EACKgwC,EAAI0Y,EAAWnzG,CAAG,EAElBkzG,EAAWC,EAAWnzG,CAAG,CAEnC,EAED,SAASszG,EAAMtzG,EAAK5B,EAAK,CACvB,IAAIqsB,EAAIzqB,EAAI,QAAQ,WAAY,EAC5B7K,EAAOiJ,EAAI,OACXo1G,EAAQlB,EAAW,MAAM,EAAE,OAAOl8G,EAAO,MAAM,CAAC,CAAC,EAAE,OAAQ,EAC3DwtF,EAAO4vB,EAAM,OACbC,EAAQ,EAAI7vB,EAChB,GAAIzuF,EAAOs1B,EAAIgpF,EAAQ,EACrB,MAAM,IAAI,MAAM,kBAAkB,EAEpC,IAAIC,EAAKt9G,EAAO,MAAMq0B,EAAIt1B,EAAOs+G,EAAQ,CAAC,EACtCE,EAAQlpF,EAAIm5D,EAAO,EACnB+jB,EAAOhmC,EAAYiiB,CAAI,EACvBgwB,EAAW/sB,EAAIzwF,EAAO,OAAO,CAACo9G,EAAOE,EAAIt9G,EAAO,MAAM,EAAG,CAAC,EAAGgI,CAAG,EAAGu1G,CAAK,EAAGP,EAAIzL,EAAMgM,CAAK,CAAC,EAC3FE,EAAahtB,EAAI8gB,EAAMyL,EAAIQ,EAAUhwB,CAAI,CAAC,EAC9C,OAAO,IAAIyI,EAAGj2F,EAAO,OAAO,CAACA,EAAO,MAAM,CAAC,EAAGy9G,EAAYD,CAAQ,EAAGnpF,CAAC,CAAC,CACxE,CACD,SAAS8oF,EAAOvzG,EAAK5B,EAAKqsD,EAAS,CACjC,IAAIt1D,EAAOiJ,EAAI,OACXqsB,EAAIzqB,EAAI,QAAQ,WAAY,EAChC,GAAI7K,EAAOs1B,EAAI,GACb,MAAM,IAAI,MAAM,kBAAkB,EAEpC,IAAIipF,EACJ,OAAIjpD,EACFipD,EAAKt9G,EAAO,MAAMq0B,EAAIt1B,EAAO,EAAG,GAAI,EAEpCu+G,EAAKI,EAAQrpF,EAAIt1B,EAAO,CAAC,EAEpB,IAAIk3F,EAAGj2F,EAAO,OAAO,CAACA,EAAO,KAAK,CAAC,EAAGq0D,EAAU,EAAI,CAAC,CAAC,EAAGipD,EAAIt9G,EAAO,MAAM,CAAC,EAAGgI,CAAG,EAAGqsB,CAAC,CAAC,CAC9F,CACD,SAASqpF,EAASzgH,EAAK,CAMrB,QALI4I,EAAM7F,EAAO,YAAY/C,CAAG,EAC5BE,EAAI,EACJwN,EAAQ4gE,EAAYtuE,EAAM,CAAC,EAC3B6V,EAAM,EACN1U,EACGjB,EAAIF,GACL6V,IAAQnI,EAAM,SAChBA,EAAQ4gE,EAAYtuE,EAAM,CAAC,EAC3B6V,EAAM,GAER1U,EAAMuM,EAAMmI,GAAK,EACb1U,IACFyH,EAAI1I,GAAG,EAAIiB,GAGf,OAAOyH,CACT,mLCvFA,IAAIs0G,EAAY38D,iBAAqB,EACjCw/D,EAAMj9D,WAAgB,EACtB0wC,EAAM17B,WAAgB,EACtBkhC,EAAK5gC,YAAgB,EACrBgvC,EAAMzqC,qBAAyB,EAC/BsiD,EAAariD,iBAAsB,EACnCijD,EAAahjD,kBAAuB,EACpC95D,EAAS+5D,oBAAsB,EAAC,OAEtB,eAAG,SAAyB4jD,EAAYhgC,EAAKtpB,EAAS,CAClE,IAAImN,EACAm8C,EAAW,QACbn8C,EAAUm8C,EAAW,QACZtpD,EACTmN,EAAU,EAEVA,EAAU,EAGZ,IAAI53D,EAAMuwG,EAAUwD,CAAU,EAC1BtpF,EAAIzqB,EAAI,QAAQ,WAAY,EAChC,GAAI+zE,EAAI,OAAStpD,GAAK,IAAI4hE,EAAGtY,CAAG,EAAE,IAAI/zE,EAAI,OAAO,GAAK,EACpD,MAAM,IAAI,MAAM,kBAAkB,EAEpC,IAAI5B,EACAqsD,EACFrsD,EAAM80G,EAAW,IAAI7mB,EAAGtY,CAAG,EAAG/zE,CAAG,EAEjC5B,EAAMq8F,EAAI1mB,EAAK/zE,CAAG,EAEpB,IAAIg0G,EAAU59G,EAAO,MAAMq0B,EAAIrsB,EAAI,MAAM,EAEzC,GADAA,EAAMhI,EAAO,OAAO,CAAC49G,EAAS51G,CAAG,EAAGqsB,CAAC,EACjCmtC,IAAY,EACd,OAAO07C,EAAKtzG,EAAK5B,CAAG,EACf,GAAIw5D,IAAY,EACrB,OAAO27C,EAAMvzG,EAAK5B,EAAKqsD,CAAO,EACzB,GAAImN,IAAY,EACrB,OAAOx5D,EAEP,MAAM,IAAI,MAAM,iBAAiB,CAEpC,EAED,SAASk1G,EAAMtzG,EAAK5B,EAAK,CACvB,IAAIqsB,EAAIzqB,EAAI,QAAQ,WAAY,EAC5BwzG,EAAQlB,EAAW,MAAM,EAAE,OAAOl8G,EAAO,MAAM,CAAC,CAAC,EAAE,OAAQ,EAC3DwtF,EAAO4vB,EAAM,OACjB,GAAIp1G,EAAI,CAAC,IAAM,EACb,MAAM,IAAI,MAAM,kBAAkB,EAEpC,IAAIy1G,EAAaz1G,EAAI,MAAM,EAAGwlF,EAAO,CAAC,EAClCgwB,EAAWx1G,EAAI,MAAMwlF,EAAO,CAAC,EAC7B+jB,EAAO9gB,EAAIgtB,EAAYT,EAAIQ,EAAUhwB,CAAI,CAAC,EAC1Cl3B,EAAKm6B,EAAI+sB,EAAUR,EAAIzL,EAAMl9E,EAAIm5D,EAAO,CAAC,CAAC,EAC9C,GAAI3kC,EAAQu0D,EAAO9mD,EAAG,MAAM,EAAGk3B,CAAI,CAAC,EAClC,MAAM,IAAI,MAAM,kBAAkB,EAGpC,QADIrwF,EAAIqwF,EACDl3B,EAAGn5D,CAAC,IAAM,GACfA,IAEF,GAAIm5D,EAAGn5D,GAAG,IAAM,EACd,MAAM,IAAI,MAAM,kBAAkB,EAEpC,OAAOm5D,EAAG,MAAMn5D,CAAC,CAClB,CAED,SAASggH,EAAOvzG,EAAK5B,EAAKqsD,EAAS,CAIjC,QAHI8zC,EAAKngG,EAAI,MAAM,EAAG,CAAC,EACnB7K,EAAI,EACJ0gH,EAAS,EACN71G,EAAI7K,GAAG,IAAM,GAClB,GAAIA,GAAK6K,EAAI,OAAQ,CACnB61G,IACA,KACD,CAEH,IAAIP,EAAKt1G,EAAI,MAAM,EAAG7K,EAAI,CAAC,EAQ3B,IANKgrG,EAAG,SAAS,KAAK,IAAM,QAAU,CAAC9zC,GAAa8zC,EAAG,SAAS,KAAK,IAAM,QAAU9zC,IACnFwpD,IAEEP,EAAG,OAAS,GACdO,IAEEA,EACF,MAAM,IAAI,MAAM,kBAAkB,EAEpC,OAAO71G,EAAI,MAAM7K,CAAC,CACnB,CACD,SAAS0rD,EAASzmD,EAAGhB,EAAG,CACtBgB,EAAIpC,EAAO,KAAKoC,CAAC,EACjBhB,EAAIpB,EAAO,KAAKoB,CAAC,EACjB,IAAI08G,EAAM,EACN7gH,EAAMmF,EAAE,OACRA,EAAE,SAAWhB,EAAE,SACjB08G,IACA7gH,EAAM,KAAK,IAAImF,EAAE,OAAQhB,EAAE,MAAM,GAGnC,QADIjE,EAAI,GACD,EAAEA,EAAIF,GACX6gH,GAAQ17G,EAAEjF,CAAC,EAAIiE,EAAEjE,CAAC,EAEpB,OAAO2gH,CACT,6ICxGAl+G,EAAA,cAAwB49C,qBAA0B,EAClD59C,EAAA,eAAyBmgD,sBAA2B,EAEpDngD,EAAA,eAAyB,SAAyBgK,EAAKlJ,EAAK,CAC1D,OAAOd,EAAQ,cAAcgK,EAAKlJ,EAAK,EAAI,CAC5C,EAEDd,EAAA,cAAwB,SAAwBgK,EAAKlJ,EAAK,CACxD,OAAOd,EAAQ,eAAegK,EAAKlJ,EAAK,EAAI,CAC9C,mJCPA,SAAS0qE,GAAc,CACrB,MAAM,IAAI,MAAM;AAAA,4CAA4G,CAC7H,CACD,IAAI2yC,EAAavgE,oBAAsB,EACnCwgE,EAAcj+D,iBAAsB,EACpC//C,EAAS+9G,EAAW,OACpBE,EAAmBF,EAAW,WAC9B1yC,EAAS7hE,eAAO,QAAUA,eAAO,SACjC00G,EAAa,KAAK,IAAI,EAAG,EAAE,EAAI,EACnC,SAASC,EAAct/G,EAAQ4B,EAAQ,CACrC,GAAI,OAAO5B,GAAW,UAAYA,IAAWA,EAC3C,MAAM,IAAI,UAAU,yBAAyB,EAG/C,GAAIA,EAASq/G,GAAcr/G,EAAS,EAClC,MAAM,IAAI,UAAU,yBAAyB,EAG/C,GAAIA,EAASo/G,GAAoBp/G,EAAS4B,EACxC,MAAM,IAAI,WAAW,qBAAqB,CAE7C,CAED,SAASa,EAAYC,EAAM1C,EAAQ4B,EAAQ,CACzC,GAAI,OAAOc,GAAS,UAAYA,IAASA,EACvC,MAAM,IAAI,UAAU,uBAAuB,EAG7C,GAAIA,EAAO28G,GAAc38G,EAAO,EAC9B,MAAM,IAAI,UAAU,uBAAuB,EAG7C,GAAIA,EAAO1C,EAAS4B,GAAUc,EAAO08G,EACnC,MAAM,IAAI,WAAW,kBAAkB,CAE1C,CACI5yC,GAAUA,EAAO,iBAAoB,CAAC9hE,UAAQ,SACjD3M,UAAA,WAAqBwhH,EACrBxhH,UAAA,eAAyByhH,IAEzBzhH,UAAA,WAAqBwuE,EACrBxuE,UAAA,eAAyBwuE,GAE3B,SAASgzC,EAAY19G,EAAK7B,EAAQ0C,EAAMoS,EAAI,CAC1C,GAAI,CAAC3T,EAAO,SAASU,CAAG,GAAK,EAAEA,aAAe8I,eAAO,YACnD,MAAM,IAAI,UAAU,+CAA+C,EAGrE,GAAI,OAAO3K,GAAW,WACpB8U,EAAK9U,EACLA,EAAS,EACT0C,EAAOb,EAAI,eACF,OAAOa,GAAS,WACzBoS,EAAKpS,EACLA,EAAOb,EAAI,OAAS7B,UACX,OAAO8U,GAAO,WACvB,MAAM,IAAI,UAAU,kCAAkC,EAExD,OAAAwqG,EAAat/G,EAAQ6B,EAAI,MAAM,EAC/BY,EAAWC,EAAM1C,EAAQ6B,EAAI,MAAM,EAC5B49G,EAAW59G,EAAK7B,EAAQ0C,EAAMoS,CAAE,CACxC,CAED,SAAS2qG,EAAY59G,EAAK7B,EAAQ0C,EAAMoS,EAAI,CAC1C,GAAIpK,UAAQ,QAAS,CACnB,IAAIg1G,EAAS79G,EAAI,OACb8oD,EAAO,IAAI,WAAW+0D,EAAQ1/G,EAAQ0C,CAAI,EAE9C,GADA8pE,EAAO,gBAAgB7hB,CAAI,EACvB71C,EAAI,CACNpK,UAAQ,SAAS,UAAY,CAC3BoK,EAAG,KAAMjT,CAAG,CACpB,CAAO,EACD,MACD,CACD,OAAOA,CACR,CACD,GAAIiT,EAAI,CACNqqG,EAAYz8G,EAAM,SAAUmR,EAAK3M,EAAO,CACtC,GAAI2M,EACF,OAAOiB,EAAGjB,CAAG,EAEf3M,EAAM,KAAKrF,EAAK7B,CAAM,EACtB8U,EAAG,KAAMjT,CAAG,CAClB,CAAK,EACD,MACD,CACD,IAAIqF,EAAQi4G,EAAYz8G,CAAI,EAC5B,OAAAwE,EAAM,KAAKrF,EAAK7B,CAAM,EACf6B,CACR,CACD,SAAS29G,EAAgB39G,EAAK7B,EAAQ0C,EAAM,CAI1C,GAHI,OAAO1C,EAAW,MACpBA,EAAS,GAEP,CAACmB,EAAO,SAASU,CAAG,GAAK,EAAEA,aAAe8I,eAAO,YACnD,MAAM,IAAI,UAAU,+CAA+C,EAGrE,OAAA20G,EAAat/G,EAAQ6B,EAAI,MAAM,EAE3Ba,IAAS,SAAWA,EAAOb,EAAI,OAAS7B,GAE5CyC,EAAWC,EAAM1C,EAAQ6B,EAAI,MAAM,EAE5B49G,EAAW59G,EAAK7B,EAAQ0C,CAAI,CACrC,0KCzGA,6BAAsB,iBAAW,IAAG,mCAA4B,sBAAei8C,iBAAsB,EACnF,4BAAG,iBAAY,KAAGuC,iBAAsB,EACxC,4BAAG,iBAAY,KAAGgV,iBAAsB,EAE1D,IAAIypD,EAAQnpD,aAAgC,EACxCopD,EAAW,OAAO,KAAKD,CAAK,EAC5BE,EAAS,CAAC,OAAQ,SAAU,SAAU,SAAU,SAAU,MAAO,QAAQ,EAAE,OAAOD,CAAQ,EAC9F,2BAAoB,UAAY,CAC9B,OAAOC,CACR,EAED,IAAItrG,EAAIwmD,iBAAiB,EACX,wBAAGxmD,EAAE,OACD,4BAAGA,EAAE,WAEvB,IAAIwgF,EAAM/5B,iBAA4B,EAExB,wBAAG+5B,EAAI,OACD,8BAAGA,EAAI,aACX,0BAAGA,EAAI,SACD,gCAAGA,EAAI,eACb,0BAAGA,EAAI,SACD,gCAAGA,EAAI,eACX,4BAAGA,EAAI,WACD,kCAAGA,EAAI,iBACb,4BAAGA,EAAI,WACN,6BAAGA,EAAI,YAE1B,IAAIxK,EAAKtvB,iBAAyB,EAER,oCAAGsvB,EAAG,mBACA,0CAAGA,EAAG,yBACd,kCAAGA,EAAG,iBACH,qCAAGA,EAAG,oBACZ,+BAAGA,EAAG,cAE3B,IAAIqxB,EAAO1gD,iBAA0B,EAEnB,4BAAG0gD,EAAK,WACd,sBAAGA,EAAK,KACA,8BAAGA,EAAK,aACd,wBAAGA,EAAK,OAEtB,4BAAqBzgD,iBAAsB,EAE3C,IAAI2kD,EAAgB1kD,iBAAyB,EAExB,+BAAG0kD,EAAc,cAChB,gCAAGA,EAAc,eAClB,+BAAGA,EAAc,cAChB,gCAAGA,EAAc,eAevC,IAAIC,EAAK1kD,eAAqB,EAEZ,mCAAG0kD,EAAG,WACF,gCAAGA,EAAG,eAE5B,mCAA4B,UAAY,CACtC,MAAM,IAAI,MAAM,CACd,kDACA,0BACA,wDACJ,EAAI,KAAK;AAAA,CAAI,CAAC,CACb,EAED,2BAAoB,CAClB,0BAA6B,EAC7B,qBAAwB,EACxB,6BAAgC,EAChC,0BAA6B,EAC7B,YAAe,EACf,aAAgB,EAChB,kBAAqB,EACrB,mBAAsB,EACtB,eAAkB,EAClB,uBAA0B,EAC1B,iBAAoB,EACpB,sBAAyB,EACzB,4BAA+B,EAC/B,8BAAiC,EACjC,wBAA2B,CAC7B,mBCvFA,IAAIvgD,QAAQ7gB,QAKR,MAAQ6gB,QAAM,MAAQA,QAAM,OAAS,GAErCgN,SACDhN,QAAM,KAAK,UAAY,CAACA,QAAM,QAAQ,oBACvCgN,SAASzR,wBAAA,GAmBMyE,QAAM,OAAS,MAAM,OAAS,SAC7CjrD,EAAG5T,EAAGE,EAAGm/G,EAAOptE,EAAI7iC,EAAU,CAQ9B,GAPG,OAAO6iC,GAAO,aACf7iC,EAAW6iC,EACXA,EAAK,MAKJ4sB,QAAM,KAAK,UAAY,CAACA,QAAM,QAAQ,mBACvCgN,SAAO,SAAW55B,IAAO,MAAQ,OAAOA,GAAO,YAC9C45B,SAAO,WAAW,OAAS,GAAM,CAAC55B,GAAMA,IAAO,QAOhD,OANG,OAAOA,GAAO,WAEfA,EAAK,QAEPr+B,EAAIpT,SAAO,KAAKoT,EAAG,QAAQ,EAC3B5T,EAAIQ,SAAO,KAAKR,EAAG,QAAQ,EACvBoP,EAMDy8D,SAAO,WAAW,SAAW,EACvBA,SAAO,OAAOj4D,EAAG5T,EAAGE,EAAGm/G,EAAO,SAASnsG,EAAK9I,EAAK,CACtD,GAAG8I,EACD,OAAO9D,EAAS8D,CAAG,EAErB9D,EAAS,KAAMhF,EAAI,SAAS,QAAQ,CAAC,CAC7C,CAAO,EAEIyhE,SAAO,OAAOj4D,EAAG5T,EAAGE,EAAGm/G,EAAOptE,EAAI,SAAS/+B,EAAK9I,EAAK,CAC1D,GAAG8I,EACD,OAAO9D,EAAS8D,CAAG,EAErB9D,EAAS,KAAMhF,EAAI,SAAS,QAAQ,CAAC,CAC3C,CAAK,EAlBIyhE,SAAO,WAAW,SAAW,EACvBA,SAAO,WAAWj4D,EAAG5T,EAAGE,EAAGm/G,CAAK,EAAE,SAAS,QAAQ,EAErDxzC,SAAO,WAAWj4D,EAAG5T,EAAGE,EAAGm/G,EAAOptE,CAAE,EAAE,SAAS,QAAQ,EAsBlE,IAJG,OAAOA,EAAO,KAAeA,IAAO,QAErCA,EAAK,QAEJ,OAAOA,GAAO,SAAU,CACzB,GAAG,EAAEA,KAAM4sB,QAAM,GAAG,YAClB,MAAM,IAAI,MAAM,2BAA6B5sB,CAAE,EAEjDA,EAAK4sB,QAAM,GAAG5sB,CAAE,EAAE,OAAM,CACzB,CAED,IAAI+7C,EAAO/7C,EAAG,aAId,GAAGotE,EAAS,WAAarxB,EAAO,CAC9B,IAAI96E,EAAM,IAAI,MAAM,0BAA0B,EAC9C,GAAG9D,EACD,OAAOA,EAAS8D,CAAG,EAErB,MAAMA,CACP,CAQD,IAAIzV,EAAM,KAAK,KAAK4hH,EAAQrxB,CAAI,EAC5B38E,EAAIguG,GAAS5hH,EAAM,GAAKuwF,EA2BxBsxB,EAAMzgD,QAAM,KAAK,OAAM,EAC3BygD,EAAI,MAAMrtE,EAAIr+B,CAAC,EACf,IAAI2rG,EAAK,GACLtuB,EAAKuuB,EAAKC,EAGd,GAAG,CAACrwG,EAAU,CACZ,QAAQzR,EAAI,EAAGA,GAAKF,EAAK,EAAEE,EAAG,CAE5B2hH,EAAI,MAAM,KAAM,IAAI,EACpBA,EAAI,OAAOt/G,CAAC,EACZs/G,EAAI,OAAOzgD,QAAM,KAAK,aAAalhE,CAAC,CAAC,EACrCszF,EAAMwuB,EAAOH,EAAI,OAAQ,EAAC,SAAQ,EAGlC,QAAQz6G,EAAI,EAAGA,GAAK3E,EAAG,EAAE2E,EACvBy6G,EAAI,MAAM,KAAM,IAAI,EACpBA,EAAI,OAAOG,CAAI,EACfD,EAAMF,EAAI,OAAQ,EAAC,SAAQ,EAE3BruB,EAAMpyB,QAAM,KAAK,SAASoyB,EAAKuuB,EAAKxxB,CAAI,EACxCyxB,EAAOD,EAOTD,GAAO5hH,EAAIF,EAAOwzF,EAAMA,EAAI,OAAO,EAAG5/E,CAAC,CACxC,CAED,OAAOkuG,CACR,CAGD,IAAI5hH,EAAI,EAAGkH,EACX,SAAS66G,GAAQ,CACf,GAAG/hH,EAAIF,EAEL,OAAO2R,EAAS,KAAMmwG,CAAE,EAI1BD,EAAI,MAAM,KAAM,IAAI,EACpBA,EAAI,OAAOt/G,CAAC,EACZs/G,EAAI,OAAOzgD,QAAM,KAAK,aAAalhE,CAAC,CAAC,EACrCszF,EAAMwuB,EAAOH,EAAI,OAAQ,EAAC,SAAQ,EAGlCz6G,EAAI,EACJ0mE,GACD,CAED,SAASA,GAAQ,CACf,GAAG1mE,GAAK3E,EACN,OAAAo/G,EAAI,MAAM,KAAM,IAAI,EACpBA,EAAI,OAAOG,CAAI,EACfD,EAAMF,EAAI,OAAQ,EAAC,SAAQ,EAE3BruB,EAAMpyB,QAAM,KAAK,SAASoyB,EAAKuuB,EAAKxxB,CAAI,EACxCyxB,EAAOD,EACP,EAAE36G,EACKg6D,QAAM,KAAK,aAAa0M,CAAK,EAOtCg0C,GAAO5hH,EAAIF,EAAOwzF,EAAMA,EAAI,OAAO,EAAG5/E,CAAC,EAEvC,EAAE1T,EACF+hH,GACD,CAEDA,GACF,ECtLA,IAAI7gD,QAAQ7gB,QAIR,IAAuB6gB,QAAM,IAAMA,QAAM,KAAO,GAWpD,IAAI,OAAS,SAASr2D,EAAKiN,EAAS,CAClCA,EAAUA,GAAW,GACrB,IAAI8pD,EAAO,cAAgB/2D,EAAI,KAAO;AAAA,EAGlC0vG,EAoBJ,GAnBG1vG,EAAI,WACL0vG,EAAS,CACP,KAAM,YACN,OAAQ,CAAC,OAAO1vG,EAAI,SAAS,OAAO,EAAGA,EAAI,SAAS,IAAI,CAC9D,EACI+2D,GAAQ,WAAW24C,CAAM,GAExB1vG,EAAI,gBACL0vG,EAAS,CAAC,KAAM,iBAAkB,OAAQ,CAAC1vG,EAAI,aAAa,CAAC,EAC7D+2D,GAAQ,WAAW24C,CAAM,GAExB1vG,EAAI,UACL0vG,EAAS,CAAC,KAAM,WAAY,OAAQ,CAAC1vG,EAAI,QAAQ,SAAS,CAAC,EACxDA,EAAI,QAAQ,YACb0vG,EAAO,OAAO,KAAK1vG,EAAI,QAAQ,UAAU,EAE3C+2D,GAAQ,WAAW24C,CAAM,GAGxB1vG,EAAI,QAEL,QAAQ7K,EAAI,EAAGA,EAAI6K,EAAI,QAAQ,OAAQ,EAAE7K,EACvC4hE,GAAQ,WAAW/2D,EAAI,QAAQ7K,CAAC,CAAC,EAKrC,OAAG6K,EAAI,WACL+2D,GAAQ;AAAA,GAIVA,GAAQV,QAAM,KAAK,SAASr2D,EAAI,KAAMiN,EAAQ,SAAW,EAAE,EAAI;AAAA,EAE/D8pD,GAAQ,YAAc/2D,EAAI,KAAO;AAAA,EAC1B+2D,CACT,EASA,IAAI,OAAS,SAAS17D,EAAK,CAQzB,QAPI07D,EAAO,GAGPogD,EAAW,gHACXC,EAAU,uCACVC,EAAQ,QACRpwF,EAEFA,EAAQkwF,EAAS,KAAK97G,CAAG,EACtB,EAAC4rB,GAFM,CAQV,IAAI7mB,EAAO6mB,EAAM,CAAC,EACf7mB,IAAS,4BACVA,EAAO,uBAGT,IAAIJ,EAAM,CACR,KAAMI,EACN,SAAU,KACV,cAAe,KACf,QAAS,KACT,QAAS,CAAE,EACX,KAAMi2D,QAAM,KAAK,SAASpvC,EAAM,CAAC,CAAC,CACxC,EAII,GAHA8vC,EAAK,KAAK/2D,CAAG,EAGV,EAACinB,EAAM,CAAC,EAOX,SAFI2U,EAAQ3U,EAAM,CAAC,EAAE,MAAMowF,CAAK,EAC5BC,EAAK,EACHrwF,GAASqwF,EAAK17E,EAAM,QAAQ,CAKhC,QAHIW,EAAOX,EAAM07E,CAAE,EAAE,QAAQ,OAAQ,EAAE,EAG/BC,EAAKD,EAAK,EAAGC,EAAK37E,EAAM,OAAQ,EAAE27E,EAAI,CAC5C,IAAI39F,EAAOgiB,EAAM27E,CAAE,EACnB,GAAG,CAAC,KAAK,KAAK39F,EAAK,CAAC,CAAC,EACnB,MAEF2iB,GAAQ3iB,EACR09F,EAAKC,CACN,CAID,GADAtwF,EAAQsV,EAAK,MAAM66E,CAAO,EACvBnwF,EAAO,CAGR,QAFIyoF,EAAS,CAAC,KAAMzoF,EAAM,CAAC,EAAG,OAAQ,EAAE,EACpCtc,EAASsc,EAAM,CAAC,EAAE,MAAM,GAAG,EACvBuwF,EAAK,EAAGA,EAAK7sG,EAAO,OAAQ,EAAE6sG,EACpC9H,EAAO,OAAO,KAAK,MAAM/kG,EAAO6sG,CAAE,CAAC,CAAC,EAItC,GAAIx3G,EAAI,SASD,GAAG,CAACA,EAAI,eAAiB0vG,EAAO,OAAS,iBAE9C1vG,EAAI,cAAgB2K,EAAO,CAAC,GAAK,WACzB,CAAC3K,EAAI,SAAW0vG,EAAO,OAAS,WAAY,CAEpD,GAAGA,EAAO,OAAO,SAAW,EAC1B,MAAM,IAAI,MAAM,uFAC2B,EAE7C1vG,EAAI,QAAU,CAAC,UAAW2K,EAAO,CAAC,EAAG,WAAYA,EAAO,CAAC,GAAK,IAAI,CAC5E,MACU3K,EAAI,QAAQ,KAAK0vG,CAAM,MApBP,CAChB,GAAGA,EAAO,OAAS,YACjB,MAAM,IAAI,MAAM,mFAC4B,EACvC,GAAGA,EAAO,OAAO,SAAW,EACjC,MAAM,IAAI,MAAM,gFACmB,EAErC1vG,EAAI,SAAW,CAAC,QAAS2K,EAAO,CAAC,EAAG,KAAMA,EAAO,CAAC,CAAC,CAC7D,CAaO,CAED,EAAE2sG,CACH,CAED,GAAGt3G,EAAI,WAAa,aAAe,CAACA,EAAI,QACtC,MAAM,IAAI,MAAM,qGACyC,EAE5D,CAED,GAAG+2D,EAAK,SAAW,EACjB,MAAM,IAAI,MAAM,gCAAgC,EAGlD,OAAOA,CACT,EAEA,SAAS,WAAW24C,EAAQ,CAQ1B,QAPI34C,EAAO24C,EAAO,KAAO,KAGrB/kG,EAAS,GACT8sG,EAAc,SAASxwF,EAAOywF,EAAI,CACpC,MAAO,IAAMA,CACjB,EACUviH,EAAI,EAAGA,EAAIu6G,EAAO,OAAO,OAAQ,EAAEv6G,EACzCwV,EAAO,KAAK+kG,EAAO,OAAOv6G,CAAC,EAAE,QAAQ,aAAcsiH,CAAW,CAAC,EAEjE1gD,GAAQpsD,EAAO,KAAK,GAAG,EAAI;AAAA,EAK3B,QAFIlS,EAAS,EACTk/G,EAAY,GACRxiH,EAAI,EAAGA,EAAI4hE,EAAK,OAAQ,EAAE5hE,EAAG,EAAEsD,EACrC,GAAGA,EAAS,IAAMk/G,IAAc,GAAI,CAClC,IAAIj0F,EAASqzC,EAAK4gD,CAAS,EACxBj0F,IAAW,KACZ,EAAEi0F,EACF5gD,EAAOA,EAAK,OAAO,EAAG4gD,CAAS,EAAI;AAAA,GAAU5gD,EAAK,OAAO4gD,CAAS,GAElE5gD,EAAOA,EAAK,OAAO,EAAG4gD,CAAS,EAC7B;AAAA,EAASj0F,EAASqzC,EAAK,OAAO4gD,EAAY,CAAC,EAE/Cl/G,EAAUtD,EAAIwiH,EAAY,EAC1BA,EAAY,GACZ,EAAExiH,CACH,MAAS4hE,EAAK5hE,CAAC,IAAM,KAAO4hE,EAAK5hE,CAAC,IAAM,KAAQ4hE,EAAK5hE,CAAC,IAAM,OAC3DwiH,EAAYxiH,GAIhB,OAAO4hE,CACT,CAEA,SAAS,MAAM17D,EAAK,CAClB,OAAOA,EAAI,QAAQ,OAAQ,EAAE,CAC/B,CCnOA,IAAIg7D,QAAQ7gB,QAIRkS,SAA0B2O,QAAM,OAASA,QAAM,QAAU,GAC7DA,QAAM,GAAG,OAASA,QAAM,GAAG,WAAW,OAAS3O,SAO/CA,SAAO,OAAS,UAAW,CAErBkwD,gBACFC,UAIF,IAAIC,EAAS,KAGTC,EAAS1hD,QAAM,KAAK,aAAY,EAGhC2hD,EAAK,IAAI,MAAM,EAAE,EAGjBvuE,EAAK,CACP,UAAW,SACX,YAAa,GACb,aAAc,GAEd,cAAe,EAEf,kBAAmB,KAEnB,kBAAmB,CACvB,EAOE,OAAAA,EAAG,MAAQ,UAAW,CAEpBA,EAAG,cAAgB,EAGnBA,EAAG,kBAAoBA,EAAG,gBAAkB,GAE5C,QADIwuE,EAASxuE,EAAG,kBAAoB,EAC5Bt0C,EAAI,EAAGA,EAAI8iH,EAAQ,EAAE9iH,EAC3Bs0C,EAAG,kBAAkB,KAAK,CAAC,EAE7B,OAAAsuE,EAAS1hD,QAAM,KAAK,eACpByhD,EAAS,CACP,GAAI,WACJ,GAAI,WACJ,GAAI,WACJ,GAAI,WACJ,GAAI,WACJ,GAAI,WACJ,GAAI,UACJ,GAAI,UACV,EACWruE,CACX,EAEEA,EAAG,MAAK,EAYRA,EAAG,OAAS,SAASzpC,EAAKtG,EAAU,CAC/BA,IAAa,SACdsG,EAAMq2D,QAAM,KAAK,WAAWr2D,CAAG,GAIjC,IAAI/K,EAAM+K,EAAI,OACdypC,EAAG,eAAiBx0C,EACpBA,EAAM,CAAEA,EAAM,aAAiB,EAAGA,IAAQ,CAAC,EAC3C,QAAQE,EAAIs0C,EAAG,kBAAkB,OAAS,EAAGt0C,GAAK,EAAG,EAAEA,EACrDs0C,EAAG,kBAAkBt0C,CAAC,GAAKF,EAAI,CAAC,EAChCA,EAAI,CAAC,EAAIA,EAAI,CAAC,GAAMw0C,EAAG,kBAAkBt0C,CAAC,EAAI,aAAiB,GAC/Ds0C,EAAG,kBAAkBt0C,CAAC,EAAIs0C,EAAG,kBAAkBt0C,CAAC,IAAM,EACtDF,EAAI,CAAC,EAAMA,EAAI,CAAC,EAAI,aAAiB,EAIvC,OAAA8iH,EAAO,SAAS/3G,CAAG,EAGnBk4G,UAAQJ,EAAQE,EAAID,CAAM,GAGvBA,EAAO,KAAO,MAAQA,EAAO,OAAQ,IAAK,IAC3CA,EAAO,QAAO,EAGTtuE,CACX,EAOEA,EAAG,OAAS,UAAW,CAqBrB,IAAI0uE,EAAa9hD,QAAM,KAAK,aAAY,EACxC8hD,EAAW,SAASJ,EAAO,MAAO,GAGlC,IAAIx7G,EACFktC,EAAG,kBAAkBA,EAAG,kBAAkB,OAAS,CAAC,EACpDA,EAAG,kBAKDqwB,EAAWv9D,EAAaktC,EAAG,YAAc,EAC7C0uE,EAAW,SAASC,WAAS,OAAO,EAAG3uE,EAAG,YAAcqwB,CAAQ,CAAC,EAMjE,QAFIlgD,EAAMw/B,EACNwB,EAAOnR,EAAG,kBAAkB,CAAC,EAAI,EAC7Bt0C,EAAI,EAAGA,EAAIs0C,EAAG,kBAAkB,OAAS,EAAG,EAAEt0C,EACpDykB,EAAO6vB,EAAG,kBAAkBt0C,EAAI,CAAC,EAAI,EACrCikD,EAASx/B,EAAO,aAAiB,EACjCghC,GAAQxB,EACR++D,EAAW,SAASv9D,IAAS,CAAC,EAC9BA,EAAOhhC,IAAS,EAElBu+F,EAAW,SAASv9D,CAAI,EAExB,IAAIl9B,EAAK,CACP,GAAIo6F,EAAO,GACX,GAAIA,EAAO,GACX,GAAIA,EAAO,GACX,GAAIA,EAAO,GACX,GAAIA,EAAO,GACX,GAAIA,EAAO,GACX,GAAIA,EAAO,GACX,GAAIA,EAAO,EACjB,EACII,UAAQx6F,EAAIs6F,EAAIG,CAAU,EAC1B,IAAIphD,EAAOV,QAAM,KAAK,aAAY,EAClC,OAAAU,EAAK,SAASr5C,EAAG,EAAE,EACnBq5C,EAAK,SAASr5C,EAAG,EAAE,EACnBq5C,EAAK,SAASr5C,EAAG,EAAE,EACnBq5C,EAAK,SAASr5C,EAAG,EAAE,EACnBq5C,EAAK,SAASr5C,EAAG,EAAE,EACnBq5C,EAAK,SAASr5C,EAAG,EAAE,EACnBq5C,EAAK,SAASr5C,EAAG,EAAE,EACnBq5C,EAAK,SAASr5C,EAAG,EAAE,EACZq5C,CACX,EAESttB,CACT,EAGA,IAAI2uE,WAAW,KACXR,eAAe,GAGfS,KAAK,KAKT,SAASR,SAAQ,CAEfO,WAAW,IACXA,YAAY/hD,QAAM,KAAK,WAAW,KAA2B,EAAE,EAG/DgiD,KAAK,CACH,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UAAU,EAGhDT,eAAe,EACjB,CASA,SAASM,UAAQ1gH,EAAGu4B,EAAGhyB,EAAO,CAI5B,QAFIisF,EAAIC,EAAIH,EAAIrsE,EAAIyiE,EAAIC,EAAKhrF,EAAGiF,EAAGhB,EAAG1B,EAAGH,EAAGN,EAAG+6B,EAAG/L,EAAG1S,EACjDte,EAAM8I,EAAM,SACV9I,GAAO,IAAI,CAGf,IAAIE,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACnB46B,EAAE56B,CAAC,EAAI4I,EAAM,SAAQ,EAEvB,KAAM5I,EAAI,GAAI,EAAEA,EAEd60F,EAAKj6D,EAAE56B,EAAI,CAAC,EACZ60F,GACIA,IAAO,GAAOA,GAAM,KACpBA,IAAO,GAAOA,GAAM,IACrBA,IAAO,GAEVC,EAAKl6D,EAAE56B,EAAI,EAAE,EACb80F,GACIA,IAAO,EAAMA,GAAM,KACnBA,IAAO,GAAOA,GAAM,IACrBA,IAAO,EAEVl6D,EAAE56B,CAAC,EAAK60F,EAAKj6D,EAAE56B,EAAI,CAAC,EAAI80F,EAAKl6D,EAAE56B,EAAI,EAAE,EAAK,EAc5C,IAVAiF,EAAI5C,EAAE,GACN4B,EAAI5B,EAAE,GACNE,EAAIF,EAAE,GACND,EAAIC,EAAE,GACNP,EAAIO,EAAE,GACNw6B,EAAIx6B,EAAE,GACNyuB,EAAIzuB,EAAE,GACN+b,EAAI/b,EAAE,GAGFrC,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAEnBsoB,GACIxmB,IAAM,EAAMA,GAAK,KACjBA,IAAM,GAAOA,GAAK,KAClBA,IAAM,GAAOA,GAAK,GAEtBipF,EAAKj6D,EAAKhvB,GAAK+6B,EAAI/L,GAEnB6jE,GACI1vF,IAAM,EAAMA,GAAK,KACjBA,IAAM,GAAOA,GAAK,KAClBA,IAAM,GAAOA,GAAK,IAEtB+lF,EAAO/lF,EAAIhB,EAAM1B,GAAK0C,EAAIhB,GAG1B4wF,EAAKz2E,EAAIkK,EAAKyiE,EAAKm4B,KAAGljH,CAAC,EAAI46B,EAAE56B,CAAC,EAC9B80F,EAAKH,EAAK3J,EACV5sE,EAAI0S,EACJA,EAAI+L,EACJA,EAAI/6B,EAGJA,EAAKM,EAAIyyF,IAAQ,EACjBzyF,EAAIG,EACJA,EAAI0B,EACJA,EAAIgB,EAGJA,EAAK4vF,EAAKC,IAAQ,EAIpBzyF,EAAE,GAAMA,EAAE,GAAK4C,EAAK,EACpB5C,EAAE,GAAMA,EAAE,GAAK4B,EAAK,EACpB5B,EAAE,GAAMA,EAAE,GAAKE,EAAK,EACpBF,EAAE,GAAMA,EAAE,GAAKD,EAAK,EACpBC,EAAE,GAAMA,EAAE,GAAKP,EAAK,EACpBO,EAAE,GAAMA,EAAE,GAAKw6B,EAAK,EACpBx6B,EAAE,GAAMA,EAAE,GAAKyuB,EAAK,EACpBzuB,EAAE,GAAMA,EAAE,GAAK+b,EAAK,EACpBte,GAAO,EACR,CACH,CC3TA,IAAIohE,QAAQ7gB,QAGR8iE,UAAU,KACXjiD,QAAM,KAAK,UAAY,CAACA,QAAM,QAAQ,mBACvC,CAAC90D,UAAQ,SAAS,aAAa,IAC/B+2G,UAAUvrD,wBAAA,GAIZ,IAAI,KAAwBsJ,QAAM,KAAOA,QAAM,MAAQ,GAoBvD,KAAK,OAAS,SAAS1hD,EAAQ,CAiB7B,QAhBIxH,EAAM,CACR,OAAQwH,EACR,IAAK,KACL,KAAM,KACN,KAAM,KAEN,QAAS,EAET,UAAW,EAEX,SAAU,EACd,EAGM80B,EAAK90B,EAAO,GACZ4jG,EAAQ,IAAI,MAAM,EAAE,EAChBpjH,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACvBojH,EAAMpjH,CAAC,EAAIs0C,EAAG,OAAM,EAEtBt8B,EAAI,MAAQorG,EAGZprG,EAAI,KAAO,EAYXA,EAAI,SAAW,SAAS0kC,EAAOjrC,EAAU,CAEvC,GAAG,CAACA,EACF,OAAOuG,EAAI,aAAa0kC,CAAK,EAI/B,IAAIkpB,EAAS5tD,EAAI,OAAO,OACpBqrG,EAAYrrG,EAAI,OAAO,UACvBsrG,EAAYtrG,EAAI,OAAO,UACvBurG,EAAavrG,EAAI,OAAO,WACxB/T,EAAIi9D,QAAM,KAAK,aAAY,EAO/BlpD,EAAI,IAAM,KAEVwrG,IAEA,SAASA,EAASjuG,EAAK,CACrB,GAAGA,EACD,OAAO9D,EAAS8D,CAAG,EAIrB,GAAGtR,EAAE,OAAQ,GAAIy4C,EACf,OAAOjrC,EAAS,KAAMxN,EAAE,SAASy4C,CAAK,CAAC,EAQzC,GAJG1kC,EAAI,UAAY,UACjBA,EAAI,IAAM,MAGTA,EAAI,MAAQ,KAEb,OAAOkpD,QAAM,KAAK,SAAS,UAAW,CACpCuiD,EAAQD,CAAQ,CAC1B,CAAS,EAIH,IAAI56G,EAAQg9D,EAAO5tD,EAAI,IAAKA,EAAI,IAAI,EACpCA,EAAI,WAAapP,EAAM,OACvB3E,EAAE,SAAS2E,CAAK,EAGhBoP,EAAI,IAAMsrG,EAAU19C,EAAO5tD,EAAI,IAAKqrG,EAAUrrG,EAAI,IAAI,CAAC,CAAC,EACxDA,EAAI,KAAOurG,EAAW39C,EAAO5tD,EAAI,IAAKA,EAAI,IAAI,CAAC,EAE/CkpD,QAAM,KAAK,aAAasiD,CAAQ,CACjC,CACL,EASExrG,EAAI,aAAe,SAAS0kC,EAAO,CAEjC,IAAIkpB,EAAS5tD,EAAI,OAAO,OACpBqrG,EAAYrrG,EAAI,OAAO,UACvBsrG,EAAYtrG,EAAI,OAAO,UACvBurG,EAAavrG,EAAI,OAAO,WAO5BA,EAAI,IAAM,KAGV,QADI/T,EAAIi9D,QAAM,KAAK,aAAY,EACzBj9D,EAAE,OAAQ,EAAGy4C,GAAO,CAErB1kC,EAAI,UAAY,UACjBA,EAAI,IAAM,MAGTA,EAAI,MAAQ,MACb0rG,IAIF,IAAI96G,EAAQg9D,EAAO5tD,EAAI,IAAKA,EAAI,IAAI,EACpCA,EAAI,WAAapP,EAAM,OACvB3E,EAAE,SAAS2E,CAAK,EAGhBoP,EAAI,IAAMsrG,EAAU19C,EAAO5tD,EAAI,IAAKqrG,EAAUrrG,EAAI,IAAI,CAAC,CAAC,EACxDA,EAAI,KAAOurG,EAAW39C,EAAO5tD,EAAI,IAAKA,EAAI,IAAI,CAAC,CAChD,CAED,OAAO/T,EAAE,SAASy4C,CAAK,CAC3B,EAOE,SAAS+mE,EAAQhyG,EAAU,CACzB,GAAGuG,EAAI,MAAM,CAAC,EAAE,eAAiB,GAC/B,OAAA2rG,IACOlyG,EAAQ,EAGjB,IAAImyG,EAAU,GAAK5rG,EAAI,MAAM,CAAC,EAAE,eAAkB,EAClDA,EAAI,SAAS4rG,EAAQ,SAASruG,EAAK3M,EAAO,CACxC,GAAG2M,EACD,OAAO9D,EAAS8D,CAAG,EAErByC,EAAI,QAAQpP,CAAK,EACjB+6G,IACAlyG,GACN,CAAK,CACF,CAKD,SAASiyG,GAAc,CACrB,GAAG1rG,EAAI,MAAM,CAAC,EAAE,eAAiB,GAC/B,OAAO2rG,EAAK,EAGd,IAAIC,EAAU,GAAK5rG,EAAI,MAAM,CAAC,EAAE,eAAkB,EAClDA,EAAI,QAAQA,EAAI,aAAa4rG,CAAM,CAAC,EACpCD,GACD,CAKD,SAASA,GAAQ,CAEf3rG,EAAI,QAAWA,EAAI,UAAY,WAAc,EAAIA,EAAI,QAAU,EAO/D,IAAIs8B,EAAKt8B,EAAI,OAAO,GAAG,OAAM,EAG7Bs8B,EAAG,OAAOt8B,EAAI,QAAQ,EAKtB,QADI6rG,EAAS,EACL3sF,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACpBlf,EAAI,QAAU6rG,IAAW,IAC1BvvE,EAAG,OAAOt8B,EAAI,MAAMkf,CAAC,EAAE,OAAM,EAAG,SAAQ,CAAE,EAC1Clf,EAAI,MAAMkf,CAAC,EAAE,MAAK,GAEpB2sF,EAASA,GAAU,EAIrB7rG,EAAI,SAAWs8B,EAAG,OAAQ,EAAC,SAAQ,EAMnCA,EAAG,MAAK,EACRA,EAAG,OAAOt8B,EAAI,QAAQ,EACtB,IAAI8rG,EAAYxvE,EAAG,OAAQ,EAAC,SAAQ,EAGpCt8B,EAAI,IAAMA,EAAI,OAAO,UAAUA,EAAI,QAAQ,EAC3CA,EAAI,KAAOA,EAAI,OAAO,WAAW8rG,CAAS,EAC1C9rG,EAAI,UAAY,CACjB,CAUD,SAAS+rG,EAAgBH,EAAQ,CAE/B,IAAII,EAAkB,KAClBC,EAAc/iD,QAAM,KAAK,YACzBiiD,EAAUc,EAAY,QAAUA,EAAY,SAC7Cd,GAAWA,EAAQ,kBACpBa,EAAkB,SAASjjH,EAAK,CAC9B,OAAOoiH,EAAQ,gBAAgBpiH,CAAG,CAC1C,GAGI,IAAIkD,EAAIi9D,QAAM,KAAK,aAAY,EAC/B,GAAG8iD,EACD,KAAM//G,EAAE,OAAQ,EAAG2/G,GAAQ,CAGzB,IAAIlnE,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAIknE,EAAS3/G,EAAE,OAAM,EAAI,KAAK,EAAI,CAAC,EAC5DgwG,EAAU,IAAI,YAAY,KAAK,MAAMv3D,CAAK,CAAC,EAC/C,GAAI,CACFsnE,EAAgB/P,CAAO,EACvB,QAAQj0G,EAAI,EAAGA,EAAIi0G,EAAQ,OAAQ,EAAEj0G,EACnCiE,EAAE,SAASgwG,EAAQj0G,CAAC,CAAC,CAExB,OAAO8B,EAAG,CAET,GAAG,EAAE,OAAO,mBAAuB,KACjCA,aAAa,oBACb,MAAMA,CAET,CACF,CAIH,GAAGmC,EAAE,OAAQ,EAAG2/G,EAMd,QAFIp6G,EAAID,EAAIkb,EACR2vF,EAAO,KAAK,MAAM,KAAK,OAAM,EAAK,KAAQ,EACxCnwG,EAAE,OAAQ,EAAG2/G,GAAQ,CACzBr6G,EAAK,OAAS6qG,EAAO,OACrB5qG,EAAK,OAAS4qG,GAAQ,IACtB7qG,IAAOC,EAAK,QAAW,GACvBD,GAAMC,GAAM,GACZD,GAAMA,EAAK,aAAeA,GAAM,IAChC6qG,EAAO7qG,EAAK,WAGZ,QAAQvJ,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAEtBykB,EAAO2vF,KAAUp0G,GAAK,GACtBykB,GAAQ,KAAK,MAAM,KAAK,OAAM,EAAK,GAAM,EACzCxgB,EAAE,QAAQwgB,EAAO,GAAI,CAExB,CAGH,OAAOxgB,EAAE,SAAS2/G,CAAM,CACzB,CAED,OAAGT,WAEDnrG,EAAI,SAAW,SAAS4rG,EAAQnyG,EAAU,CACxC0xG,UAAQ,YAAYS,EAAQ,SAASruG,EAAK3M,EAAO,CAC/C,GAAG2M,EACD,OAAO9D,EAAS8D,CAAG,EAErB9D,EAAS,KAAM7I,EAAM,SAAU,EACvC,CAAO,CACP,EAEIoP,EAAI,aAAe,SAAS4rG,EAAQ,CAClC,OAAOT,UAAQ,YAAYS,CAAM,EAAE,SAAQ,CACjD,IAEI5rG,EAAI,SAAW,SAAS4rG,EAAQnyG,EAAU,CACxC,GAAI,CACFA,EAAS,KAAMsyG,EAAgBH,CAAM,CAAC,CACvC,OAAO9hH,EAAG,CACT2P,EAAS3P,CAAC,CACX,CACP,EACIkW,EAAI,aAAe+rG,GAQrB/rG,EAAI,QAAU,SAASpP,EAAO,CAG5B,QADI8zC,EAAQ9zC,EAAM,OACV5I,EAAI,EAAGA,EAAI08C,EAAO,EAAE18C,EAC1BgY,EAAI,MAAMA,EAAI,IAAI,EAAE,OAAOpP,EAAM,OAAO5I,EAAG,CAAC,CAAC,EAC7CgY,EAAI,KAAQA,EAAI,OAAS,GAAM,EAAIA,EAAI,KAAO,CAEpD,EAQEA,EAAI,WAAa,SAAShY,EAAGiG,EAAG,CAE9B,QADI2C,EAAQ,GACJpJ,EAAI,EAAGA,EAAIyG,EAAGzG,GAAK,EACzBoJ,GAAS,OAAO,aAAc5I,GAAKR,EAAK,GAAI,EAE9CwY,EAAI,QAAQpP,CAAK,CACrB,EAUEoP,EAAI,eAAiB,SAAS+rD,EAAQ,CAEpC,GAAGA,IAAW,KACZ/rD,EAAI,SAAW,SAAS4rG,EAAQnyG,EAAU,CACxC,SAASooC,EAAS/3C,EAAG,CACnB,IAAI8W,EAAO9W,EAAE,KACV8W,EAAK,OAASA,EAAK,MAAM,OAC1B,KAAK,oBAAoB,UAAWihC,CAAQ,EAC5CpoC,EAASmH,EAAK,MAAM,KAAK,IAAKA,EAAK,MAAM,KAAK,KAAK,EAEtD,CACD,KAAK,iBAAiB,UAAWihC,CAAQ,EACzC,KAAK,YAAY,CAAC,MAAO,CAAC,KAAM,CAAC,OAAQ+pE,CAAM,CAAC,CAAC,CAAC,CAC1D,MACW,CAEL,IAAI/pE,EAAW,SAAS/3C,EAAG,CACzB,IAAI8W,EAAO9W,EAAE,KACV8W,EAAK,OAASA,EAAK,MAAM,MAC1BZ,EAAI,SAASY,EAAK,MAAM,KAAK,OAAQ,SAASrD,EAAK3M,EAAO,CACxDm7D,EAAO,YAAY,CAAC,MAAO,CAAC,KAAM,CAAC,IAAKxuD,EAAK,MAAO3M,CAAK,CAAC,CAAC,CAAC,CACxE,CAAW,CAEX,EAEMm7D,EAAO,iBAAiB,UAAWlqB,CAAQ,CAC5C,CACL,EAES7hC,CACT,ECnZA,IAAIkpD,QAAQ7gB,SAMX,UAAW,CAGZ,GAAG6gB,QAAM,QAAUA,QAAM,OAAO,SAAU,CACvBA,QAAM,OACvB,MACF,EAEC,SAASgjD,EAAQ,CAGlB,IAAIC,EAAW,GACXC,EAAmB,IAAI,MAAM,CAAC,EAC9BC,EAAmBnjD,QAAM,KAAK,eAClCijD,EAAS,UAAY,SAAS13G,EAAK,CAEjC,IAAI3L,EAAMogE,QAAM,KAAK,aAAaz0D,CAAG,EACrC,OAAAA,EAAM,IAAI,MAAM,CAAC,EACjBA,EAAI,CAAC,EAAI3L,EAAI,SAAQ,EACrB2L,EAAI,CAAC,EAAI3L,EAAI,SAAQ,EACrB2L,EAAI,CAAC,EAAI3L,EAAI,SAAQ,EACrB2L,EAAI,CAAC,EAAI3L,EAAI,SAAQ,EAGdogE,QAAM,IAAI,WAAWz0D,EAAK,EAAK,CACxC,EACA03G,EAAS,WAAa,SAAS/P,EAAM,CAEnC,IAAItzG,EAAMogE,QAAM,KAAK,aAAakzC,CAAI,EACtC,OAAAA,EAAO,IAAI,MAAM,CAAC,EAClBA,EAAK,CAAC,EAAItzG,EAAI,SAAQ,EACtBszG,EAAK,CAAC,EAAItzG,EAAI,SAAQ,EACtBszG,EAAK,CAAC,EAAItzG,EAAI,SAAQ,EACtBszG,EAAK,CAAC,EAAItzG,EAAI,SAAQ,EACfszG,CACT,EACA+P,EAAS,OAAS,SAAS13G,EAAK2nG,EAAM,CACpClzC,eAAM,IAAI,aAAaz0D,EAAK2nG,EAAMgQ,EAAkB,EAAK,EACzDC,EAAiB,SAASD,EAAiB,CAAC,CAAC,EAC7CC,EAAiB,SAASD,EAAiB,CAAC,CAAC,EAC7CC,EAAiB,SAASD,EAAiB,CAAC,CAAC,EAC7CC,EAAiB,SAASD,EAAiB,CAAC,CAAC,EACtCC,EAAiB,UAC1B,EACAF,EAAS,UAAY,SAAS/P,EAAM,CAElC,QAAEA,EAAK,CAAC,EACDA,CACT,EACA+P,EAAS,GAAKjjD,QAAM,GAAG,OAKvB,SAASojD,GAAY,CACnB,IAAItsG,EAAMkpD,QAAM,KAAK,OAAOijD,CAAQ,EAcpC,OAAAnsG,EAAI,SAAW,SAAS0kC,EAAOjrC,EAAU,CACvC,OAAOuG,EAAI,SAAS0kC,EAAOjrC,CAAQ,CACvC,EAYEuG,EAAI,aAAe,SAAS0kC,EAAO,CACjC,OAAO1kC,EAAI,SAAS0kC,CAAK,CAC7B,EAES1kC,CACT,CAGA,IAAIusG,EAAOD,EAAS,EAIhBN,EAAkB,KAClBC,EAAc/iD,QAAM,KAAK,YACzBiiD,EAAUc,EAAY,QAAUA,EAAY,SAOhD,GANGd,GAAWA,EAAQ,kBACpBa,EAAkB,SAASjjH,EAAK,CAC9B,OAAOoiH,EAAQ,gBAAgBpiH,CAAG,CACtC,GAGGmgE,QAAM,QAAQ,mBACd,CAACA,QAAM,KAAK,UAAY,CAAC8iD,EAAkB,CAW5C,GAHAO,EAAK,WAAW,CAAC,IAAI,KAAQ,EAAE,EAG5B,OAAO,UAAe,IAAa,CACpC,IAAIC,EAAY,GAChB,QAAQ/3G,KAAO,UACb,GAAI,CACC,OAAO,UAAUA,CAAG,GAAM,WAC3B+3G,GAAa,UAAU/3G,CAAG,EAE7B,MAAU,CAOV,CAEH83G,EAAK,QAAQC,CAAS,EACtBA,EAAY,IACb,CAGEN,IAEDA,EAAQ,EAAC,UAAU,SAASpiH,EAAG,CAE7ByiH,EAAK,WAAWziH,EAAE,QAAS,EAAE,EAC7ByiH,EAAK,WAAWziH,EAAE,QAAS,EAAE,CACnC,CAAK,EAGDoiH,EAAQ,EAAC,SAAS,SAASpiH,EAAG,CAC5ByiH,EAAK,WAAWziH,EAAE,SAAU,CAAC,CACnC,CAAK,EAEL,CAGA,GAAG,CAACo/D,QAAM,OACRA,QAAM,OAASqjD,MAGf,SAAQ93G,KAAO83G,EACbrjD,QAAM,OAAOz0D,CAAG,EAAI83G,EAAK93G,CAAG,EAKhCy0D,QAAM,OAAO,eAAiBojD,EAEbpjD,QAAM,MAEvB,GAAG,OAAO,OAAY,IAAc,OAAS,IAAI,CAEjD,GAAI,ECpLJ,IAAIA,QAAQ7gB,QAGR,QAAU,CACZ,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAC1F,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAC1F,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAC1F,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAC1F,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAC1F,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAC1F,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,EAC1F,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAC1F,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAC1F,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAC1F,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAC1F,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,EAAM,GAAM,GAAM,GAAM,GAAM,IAAM,GAC1F,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAC1F,IAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAC1F,GAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAC1F,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAC5F,EAEIh+C,IAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EAYf,IAAM,SAASk3F,EAAM9zC,EAAM,CAC7B,OAAS8zC,GAAQ9zC,EAAQ,OAAY8zC,EAAO,QAAY,GAAK9zC,CAC/D,EAYI,IAAM,SAAS8zC,EAAM9zC,EAAM,CAC7B,OAAS8zC,EAAO,QAAW9zC,EAAU8zC,GAAS,GAAK9zC,EAAS,KAC9D,EAGiByb,QAAM,IAAMA,QAAM,KAAO,CAAG,EAS7CA,QAAM,IAAI,UAAY,SAASz0D,EAAKg4G,EAAY,CAC3C,OAAOh4G,GAAQ,WAChBA,EAAMy0D,QAAM,KAAK,aAAaz0D,CAAG,GAEnCg4G,EAAaA,GAAc,IAG3B,IAAIC,EAAIj4G,EACJ6jF,EAAI7jF,EAAI,SACR4+E,EAAKo5B,EACLE,EAAK,KAAK,KAAKt5B,EAAK,CAAC,EACrBu5B,EAAK,MAASv5B,EAAK,GACnBrrF,EAEJ,IAAIA,EAAIswF,EAAGtwF,EAAI,IAAKA,IAClB0kH,EAAE,QAAQ,QAASA,EAAE,GAAG1kH,EAAI,CAAC,EAAI0kH,EAAE,GAAG1kH,EAAIswF,CAAC,EAAK,GAAI,CAAC,EAKvD,IAFAo0B,EAAE,MAAM,IAAMC,EAAI,QAAQD,EAAE,GAAG,IAAMC,CAAE,EAAIC,CAAE,CAAC,EAE1C5kH,EAAI,IAAM2kH,EAAI3kH,GAAK,EAAGA,IACxB0kH,EAAE,MAAM1kH,EAAG,QAAQ0kH,EAAE,GAAG1kH,EAAI,CAAC,EAAI0kH,EAAE,GAAG1kH,EAAI2kH,CAAE,CAAC,CAAC,EAGhD,OAAOD,CACT,EAWA,IAAIxsB,eAAe,SAASzrF,EAAKg5C,EAAMo/D,EAAS,CAC9C,IAAIC,EAAU,GAAOlC,EAAS,KAAMmC,EAAU,KAAMC,EAAM,KACtDC,EAAUC,EACVllH,EAAGkH,EAAGkjF,EAAI,GAId,IADA39E,EAAMy0D,QAAM,IAAI,UAAUz0D,EAAKg5C,CAAI,EAC/BzlD,EAAI,EAAGA,EAAI,GAAIA,IACjBoqF,EAAE,KAAK39E,EAAI,WAAY,GAGtBo4G,GAMDI,EAAW,SAAS1O,EAAG,CACrB,IAAIv2G,EAAI,EAAGA,EAAI,EAAGA,IAChBu2G,EAAEv2G,CAAC,GAAKoqF,EAAEljF,CAAC,GAAKqvG,GAAGv2G,EAAI,GAAK,CAAC,EAAIu2G,GAAGv2G,EAAI,GAAK,CAAC,IAC1C,CAACu2G,GAAGv2G,EAAI,GAAK,CAAC,EAAKu2G,GAAGv2G,EAAI,GAAK,CAAC,GACpCu2G,EAAEv2G,CAAC,EAAI,IAAIu2G,EAAEv2G,CAAC,EAAGqC,IAAErC,CAAC,CAAC,EACrBkH,GAER,EAOIg+G,EAAY,SAAS3O,EAAG,CACtB,IAAIv2G,EAAI,EAAGA,EAAI,EAAGA,IAChBu2G,EAAEv2G,CAAC,GAAKoqF,EAAEmsB,GAAGv2G,EAAI,GAAK,CAAC,EAAI,EAAE,CAErC,IAOIilH,EAAW,SAAS1O,EAAG,CACrB,IAAIv2G,EAAI,EAAGA,GAAK,EAAGA,IACjBu2G,EAAEv2G,CAAC,EAAI,IAAIu2G,EAAEv2G,CAAC,EAAGqC,IAAErC,CAAC,CAAC,EACrBu2G,EAAEv2G,CAAC,GAAKoqF,EAAEljF,CAAC,GAAKqvG,GAAGv2G,EAAI,GAAK,CAAC,EAAIu2G,GAAGv2G,EAAI,GAAK,CAAC,IAC1C,CAACu2G,GAAGv2G,EAAI,GAAK,CAAC,EAAKu2G,GAAGv2G,EAAI,GAAK,CAAC,GACpCkH,GAER,EAOIg+G,EAAY,SAAS3O,EAAG,CACtB,IAAIv2G,EAAI,EAAGA,GAAK,EAAGA,IACjBu2G,EAAEv2G,CAAC,GAAKoqF,EAAEmsB,GAAGv2G,EAAI,GAAK,CAAC,EAAI,EAAE,CAErC,GAgBE,IAAImlH,EAAU,SAASC,EAAM,CAC3B,IAAI7O,EAAI,GAGR,IAAIv2G,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACrB,IAAI0G,EAAMk8G,EAAO,aAEdoC,IAAQ,OACNH,EAEDn+G,GAAOs+G,EAAI,aAGXA,EAAI,WAAWt+G,CAAG,GAItB6vG,EAAE,KAAK7vG,EAAM,KAAM,CACpB,CAGDQ,EAAI29G,EAAU,EAAI,GAGlB,QAAQQ,EAAM,EAAGA,EAAMD,EAAK,OAAQC,IAClC,QAAQC,EAAM,EAAGA,EAAMF,EAAKC,CAAG,EAAE,CAAC,EAAGC,IACnCF,EAAKC,CAAG,EAAE,CAAC,EAAE9O,CAAC,EAKlB,IAAIv2G,EAAI,EAAGA,EAAI,EAAGA,IACbglH,IAAQ,OACNH,EAGDG,EAAI,WAAWzO,EAAEv2G,CAAC,CAAC,EAEnBu2G,EAAEv2G,CAAC,GAAKglH,EAAI,WAAU,GAI1BD,EAAQ,WAAWxO,EAAEv2G,CAAC,CAAC,CAE7B,EAGM4lE,EAAS,KACb,OAAAA,EAAS,CAWP,MAAO,SAASpB,EAAInjE,EAAQ,CACvBmjE,GAEE,OAAOA,GAAO,WACfA,EAAKtD,QAAM,KAAK,aAAasD,CAAE,GAInCsgD,EAAU,GACVlC,EAAS1hD,QAAM,KAAK,eACpB6jD,EAAU1jH,GAAU,IAAI6/D,QAAM,KAAK,aACnC8jD,EAAMxgD,EAENoB,EAAO,OAASm/C,CACjB,EAOD,OAAQ,SAASn6G,EAAO,CAMtB,IALIk6G,GAEFlC,EAAO,UAAUh4G,CAAK,EAGlBg4G,EAAO,OAAQ,GAAI,GACvBuC,EAAQ,CACJ,CAAE,EAAGF,CAAU,EACf,CAAE,EAAGC,CAAW,EAChB,CAAE,EAAGD,CAAU,EACf,CAAE,EAAGC,CAAW,EAChB,CAAE,EAAGD,CAAU,CAC3B,CAAW,CAEN,EAUD,OAAQ,SAASt/D,EAAK,CACpB,IAAIic,EAAO,GAEX,GAAGijD,EACD,GAAGl/D,EACDic,EAAOjc,EAAI,EAAGi9D,EAAQ,CAACiC,CAAO,MACzB,CAGL,IAAIxgD,EAAWu+C,EAAO,WAAa,EAAK,EAAK,EAAIA,EAAO,OAAM,EAC9DA,EAAO,aAAav+C,EAASA,CAAO,CACrC,CASH,GANGzC,IAEDkjD,EAAU,GACVl/C,EAAO,OAAM,GAGZ,CAACi/C,IAEFjjD,EAAQghD,EAAO,OAAQ,IAAK,EACzBhhD,GACD,GAAGjc,EACDic,EAAOjc,EAAI,EAAGo/D,EAAS,CAACF,CAAO,MAC1B,CAEL,IAAI/kH,EAAMilH,EAAQ,SACdroE,EAAQqoE,EAAQ,GAAGjlH,EAAM,CAAC,EAE3B48C,EAAQ58C,EACT8hE,EAAO,GAGPmjD,EAAQ,SAASroE,CAAK,CAEzB,CAIL,OAAOklB,CACR,CACL,EAESgE,CACT,EAgBA1E,QAAM,IAAI,gBAAkB,SAASz0D,EAAK+3D,EAAInjE,EAAQ,CACpD,IAAIukE,EAAS1E,QAAM,IAAI,uBAAuBz0D,EAAK,GAAG,EACtD,OAAAm5D,EAAO,MAAMpB,EAAInjE,CAAM,EAChBukE,CACT,EAeA1E,QAAM,IAAI,uBAAyB,SAASz0D,EAAKg5C,EAAM,CACrD,OAAOyyC,eAAazrF,EAAKg5C,EAAM,EAAI,CACrC,EAgBAyb,QAAM,IAAI,gBAAkB,SAASz0D,EAAK+3D,EAAInjE,EAAQ,CACpD,IAAIukE,EAAS1E,QAAM,IAAI,uBAAuBz0D,EAAK,GAAG,EACtD,OAAAm5D,EAAO,MAAMpB,EAAInjE,CAAM,EAChBukE,CACT,EAeA1E,QAAM,IAAI,uBAAyB,SAASz0D,EAAKg5C,EAAM,CACrD,OAAOyyC,eAAazrF,EAAKg5C,EAAM,EAAK,CACtC,ECzWA,IAAIyb,QAAQ7gB,QAEK6gB,QAAM,KAAOA,QAAM,MAAQ,CAAG,EAG/C,IAAI,MAOJ,SAASqkD,aAAWtgH,EAAEhB,EAAE1B,EAAG,CACzB,KAAK,KAAO,GACT0C,GAAK,OACS,OAAOA,GAAnB,SAAsB,KAAK,WAAWA,EAAEhB,EAAE1B,CAAC,EACtC0B,GAAK,MAAoB,OAAOgB,GAAnB,SAAsB,KAAK,WAAWA,EAAE,GAAG,EAC3D,KAAK,WAAWA,EAAEhB,CAAC,EAC5B,CACAi9D,QAAM,KAAK,WAAaqkD,aAGxB,SAAS,KAAM,CAAE,OAAO,IAAIA,aAAW,IAAI,CAAI,CAU/C,SAAS,IAAIvlH,EAAER,EAAEo7B,EAAE1zB,EAAE3E,EAAE0D,EAAG,CACxB,KAAM,EAAEA,GAAK,GAAG,CACd,IAAIoI,EAAI7O,EAAE,KAAK,KAAKQ,GAAG,EAAE46B,EAAE,KAAK1zB,CAAC,EAAE3E,EACnCA,EAAI,KAAK,MAAM8L,EAAE,QAAS,EAC1BusB,EAAE,KAAK1zB,GAAG,EAAImH,EAAE,QACjB,CACD,OAAO9L,CACT,CAIA,SAAS,IAAIvC,EAAER,EAAEo7B,EAAE1zB,EAAE3E,EAAE0D,EAAG,CAExB,QADIuuC,EAAKh1C,EAAE,MAAQ+sF,EAAK/sF,GAAG,GACrB,EAAEyG,GAAK,GAAG,CACd,IAAIyI,EAAI,KAAK,KAAK1O,CAAC,EAAE,MACjBoe,EAAI,KAAK,KAAKpe,GAAG,GAAG,GACpB+B,EAAIwqF,EAAG79E,EAAE0P,EAAEo2B,EACf9lC,EAAI8lC,EAAG9lC,IAAI3M,EAAE,QAAS,IAAI64B,EAAE,KAAK1zB,CAAC,GAAG3E,EAAE,YACvCA,GAAKmM,IAAI,KAAK3M,IAAI,IAAIwqF,EAAGnuE,GAAG7b,IAAI,IAChCq4B,EAAE,KAAK1zB,GAAG,EAAIwH,EAAE,UACjB,CACD,OAAOnM,CACT,CAGA,SAAS,IAAIvC,EAAER,EAAEo7B,EAAE1zB,EAAE3E,EAAE0D,EAAG,CAExB,QADIuuC,EAAKh1C,EAAE,MAAQ+sF,EAAK/sF,GAAG,GACrB,EAAEyG,GAAK,GAAG,CACd,IAAIyI,EAAI,KAAK,KAAK1O,CAAC,EAAE,MACjBoe,EAAI,KAAK,KAAKpe,GAAG,GAAG,GACpB+B,EAAIwqF,EAAG79E,EAAE0P,EAAEo2B,EACf9lC,EAAI8lC,EAAG9lC,IAAI3M,EAAE,QAAS,IAAI64B,EAAE,KAAK1zB,CAAC,EAAE3E,EACpCA,GAAKmM,GAAG,KAAK3M,GAAG,IAAIwqF,EAAGnuE,EACvBwc,EAAE,KAAK1zB,GAAG,EAAIwH,EAAE,SACjB,CACD,OAAOnM,CACT,CAGG,OAAO,UAAe,KAEtBgjH,aAAW,UAAU,GAAK,IAC1B,MAAQ,IACQ,UAAU,SAAW,+BACtCA,aAAW,UAAU,GAAK,IAC1B,MAAQ,IACS,UAAU,SAAW,YACtCA,aAAW,UAAU,GAAK,IAC1B,MAAQ,KAERA,aAAW,UAAU,GAAK,IAC1B,MAAQ,IAGVA,aAAW,UAAU,GAAK,MAC1BA,aAAW,UAAU,IAAO,GAAG,OAAO,EACtCA,aAAW,UAAU,GAAM,GAAG,MAE9B,IAAI,MAAQ,GACZA,aAAW,UAAU,GAAK,KAAK,IAAI,EAAE,KAAK,EAC1CA,aAAW,UAAU,GAAK,MAAM,MAChCA,aAAW,UAAU,GAAK,EAAE,MAAM,MAGlC,IAAI,MAAQ,uCACR,MAAQ,IAAI,MACZ,GAAG,GACP,GAAK,GACL,IAAI,GAAK,EAAG,IAAM,EAAG,EAAE,GAAI,MAAM,IAAI,EAAI,GACzC,GAAK,GACL,IAAI,GAAK,GAAI,GAAK,GAAI,EAAE,GAAI,MAAM,IAAI,EAAI,GAC1C,GAAK,GACL,IAAI,GAAK,GAAI,GAAK,GAAI,EAAE,GAAI,MAAM,IAAI,EAAI,GAE1C,SAAS,SAAS,EAAG,CAAE,OAAO,MAAM,OAAO,CAAC,CAAI,CAChD,SAAS,MAAMljH,EAAErC,EAAG,CAClB,IAAIuC,EAAI,MAAMF,EAAE,WAAWrC,CAAC,CAAC,EAC7B,OAAQuC,GAAS,EACnB,CAGA,SAAS,UAAUmR,EAAG,CACpB,QAAQ1T,EAAI,KAAK,EAAE,EAAGA,GAAK,EAAG,EAAEA,EAAG0T,EAAE,KAAK1T,CAAC,EAAI,KAAK,KAAKA,CAAC,EAC1D0T,EAAE,EAAI,KAAK,EACXA,EAAE,EAAI,KAAK,CACb,CAGA,SAAS,WAAWlU,EAAG,CACrB,KAAK,EAAI,EACT,KAAK,EAAKA,EAAE,EAAG,GAAG,EACfA,EAAI,EAAG,KAAK,KAAK,CAAC,EAAIA,EACjBA,EAAI,GAAI,KAAK,KAAK,CAAC,EAAIA,EAAE,KAAK,GACjC,KAAK,EAAI,CAChB,CAGA,SAAS,IAAIQ,EAAG,CAAE,IAAI,EAAI,IAAK,EAAE,SAAE,QAAQA,CAAC,EAAU,CAAI,CAG1D,SAAS,cAAcqC,EAAE4B,EAAG,CAC1B,IAAIizB,EACJ,GAAGjzB,GAAK,GAAIizB,EAAI,UACRjzB,GAAK,EAAGizB,EAAI,UACZjzB,GAAK,IAAKizB,EAAI,UACdjzB,GAAK,EAAGizB,EAAI,UACZjzB,GAAK,GAAIizB,EAAI,UACbjzB,GAAK,EAAGizB,EAAI,MACf,CAAE,KAAK,UAAU70B,EAAE4B,CAAC,EAAG,MAAS,CACrC,KAAK,EAAI,EACT,KAAK,EAAI,EAET,QADIjE,EAAIqC,EAAE,OAAQmjH,EAAK,GAAO7R,EAAK,EAC7B,EAAE3zG,GAAK,GAAG,CACd,IAAIR,EAAK03B,GAAG,EAAG70B,EAAErC,CAAC,EAAE,IAAK,MAAMqC,EAAErC,CAAC,EAClC,GAAGR,EAAI,EAAG,CACL6C,EAAE,OAAOrC,CAAC,GAAK,MAAKwlH,EAAK,IAC5B,QACD,CACDA,EAAK,GACF7R,GAAM,EACP,KAAK,KAAK,KAAK,GAAG,EAAIn0G,EAChBm0G,EAAGz8E,EAAI,KAAK,IAClB,KAAK,KAAK,KAAK,EAAE,CAAC,IAAM13B,GAAI,GAAI,KAAK,GAAGm0G,GAAK,IAAKA,EAClD,KAAK,KAAK,KAAK,GAAG,EAAKn0G,GAAI,KAAK,GAAGm0G,GAEnC,KAAK,KAAK,KAAK,EAAE,CAAC,GAAKn0G,GAAGm0G,EAC5BA,GAAMz8E,EACHy8E,GAAM,KAAK,KAAIA,GAAM,KAAK,GAC9B,CACEz8E,GAAK,GAAM70B,EAAE,CAAC,EAAE,MACjB,KAAK,EAAI,GACNsxG,EAAK,IAAG,KAAK,KAAK,KAAK,EAAE,CAAC,IAAO,GAAI,KAAK,GAAGA,GAAK,GAAIA,IAE3D,KAAK,MAAK,EACP6R,GAAID,aAAW,KAAK,MAAM,KAAK,IAAI,CACxC,CAGA,SAAS,UAAW,CAElB,QADIhjH,EAAI,KAAK,EAAE,KAAK,GACd,KAAK,EAAI,GAAK,KAAK,KAAK,KAAK,EAAE,CAAC,GAAKA,GAAG,EAAE,KAAK,CACvD,CAGA,SAAS,WAAW0B,EAAG,CACrB,GAAG,KAAK,EAAI,EAAG,MAAO,IAAI,KAAK,OAAQ,EAAC,SAASA,CAAC,EAClD,IAAIizB,EACJ,GAAGjzB,GAAK,GAAIizB,EAAI,UACRjzB,GAAK,EAAGizB,EAAI,UACZjzB,GAAK,EAAGizB,EAAI,UACZjzB,GAAK,GAAIizB,EAAI,UACbjzB,GAAK,EAAGizB,EAAI,MACf,QAAO,KAAK,QAAQjzB,CAAC,EAC1B,IAAIwhH,GAAM,GAAGvuF,GAAG,EAAG90B,EAAGL,EAAI,GAAO2R,EAAI,GAAI1T,EAAI,KAAK,EAC9CiW,EAAI,KAAK,GAAIjW,EAAE,KAAK,GAAIk3B,EAC5B,GAAGl3B,KAAM,EAEP,IADGiW,EAAI,KAAK,KAAO7T,EAAI,KAAK,KAAKpC,CAAC,GAAGiW,GAAK,IAAKlU,EAAI,GAAM2R,EAAI,SAAStR,CAAC,GACjEpC,GAAK,GACNiW,EAAIihB,GACL90B,GAAK,KAAK,KAAKpC,CAAC,GAAI,GAAGiW,GAAG,IAAMihB,EAAEjhB,EAClC7T,GAAK,KAAK,KAAK,EAAEpC,CAAC,IAAIiW,GAAG,KAAK,GAAGihB,KAEjC90B,EAAK,KAAK,KAAKpC,CAAC,IAAIiW,GAAGihB,GAAIuuF,EACxBxvG,GAAK,IAAKA,GAAK,KAAK,GAAI,EAAEjW,IAE5BoC,EAAI,IAAGL,EAAI,IACXA,IAAG2R,GAAK,SAAStR,CAAC,GAGzB,OAAOL,EAAE2R,EAAE,GACb,CAGA,SAAS,UAAW,CAAE,IAAIA,EAAI,IAAG,EAAI6xG,oBAAW,KAAK,MAAM,KAAK7xG,CAAC,EAAUA,CAAI,CAG/E,SAAS,OAAQ,CAAE,OAAQ,KAAK,EAAE,EAAG,KAAK,SAAS,IAAO,CAG1D,SAAS,YAAYzO,EAAG,CACtB,IAAI,EAAI,KAAK,EAAEA,EAAE,EACjB,GAAG,GAAK,EAAG,OAAO,EAClB,IAAIjF,EAAI,KAAK,EAEb,GADA,EAAIA,EAAEiF,EAAE,EACL,GAAK,EAAG,OAAQ,KAAK,EAAE,EAAG,CAAC,EAAE,EAChC,KAAM,EAAEjF,GAAK,GAAG,IAAI,EAAE,KAAK,KAAKA,CAAC,EAAEiF,EAAE,KAAKjF,CAAC,IAAM,EAAG,OAAO,EAC3D,MAAO,EACT,CAGA,SAAS,MAAMR,EAAG,CAChB,IAAI,EAAI,EAAG+hB,EACX,OAAIA,EAAE/hB,IAAI,KAAO,IAAKA,EAAI+hB,EAAG,GAAK,KAC9BA,EAAE/hB,GAAG,IAAM,IAAKA,EAAI+hB,EAAG,GAAK,IAC5BA,EAAE/hB,GAAG,IAAM,IAAKA,EAAI+hB,EAAG,GAAK,IAC5BA,EAAE/hB,GAAG,IAAM,IAAKA,EAAI+hB,EAAG,GAAK,IAC5BA,EAAE/hB,GAAG,IAAM,IAAKA,EAAI+hB,EAAG,GAAK,GACzB,CACT,CAGA,SAAS,aAAc,CACrB,OAAG,KAAK,GAAK,EAAU,EAChB,KAAK,IAAI,KAAK,EAAE,GAAG,MAAM,KAAK,KAAK,KAAK,EAAE,CAAC,EAAG,KAAK,EAAE,KAAK,EAAG,CACtE,CAGA,SAAS,aAAa,EAAE,EAAG,CACzB,IAAIvhB,EACJ,IAAIA,EAAI,KAAK,EAAE,EAAGA,GAAK,EAAG,EAAEA,EAAG,EAAE,KAAKA,EAAE,CAAC,EAAI,KAAK,KAAKA,CAAC,EACxD,IAAIA,EAAI,EAAE,EAAGA,GAAK,EAAG,EAAEA,EAAG,EAAE,KAAKA,CAAC,EAAI,EACtC,EAAE,EAAI,KAAK,EAAE,EACb,EAAE,EAAI,KAAK,CACb,CAGA,SAAS,aAAa,EAAE,EAAG,CACzB,QAAQA,EAAI,EAAGA,EAAI,KAAK,EAAG,EAAEA,EAAG,EAAE,KAAKA,EAAE,CAAC,EAAI,KAAK,KAAKA,CAAC,EACzD,EAAE,EAAI,KAAK,IAAI,KAAK,EAAE,EAAE,CAAC,EACzB,EAAE,EAAI,KAAK,CACb,CAGA,SAAS,YAAY,EAAE,EAAG,CACxB,IAAI0lH,EAAK,EAAE,KAAK,GACZC,EAAM,KAAK,GAAGD,EACdv+F,GAAM,GAAGw+F,GAAK,EACdC,EAAK,KAAK,MAAM,EAAE,KAAK,EAAE,EAAGrjH,EAAK,KAAK,GAAGmjH,EAAI,KAAK,GAAI1lH,EAC1D,IAAIA,EAAI,KAAK,EAAE,EAAGA,GAAK,EAAG,EAAEA,EAC1B,EAAE,KAAKA,EAAE4lH,EAAG,CAAC,EAAK,KAAK,KAAK5lH,CAAC,GAAG2lH,EAAKpjH,EACrCA,GAAK,KAAK,KAAKvC,CAAC,EAAEmnB,IAAKu+F,EAEzB,IAAI1lH,EAAI4lH,EAAG,EAAG5lH,GAAK,EAAG,EAAEA,EAAG,EAAE,KAAKA,CAAC,EAAI,EACvC,EAAE,KAAK4lH,CAAE,EAAIrjH,EACb,EAAE,EAAI,KAAK,EAAEqjH,EAAG,EAChB,EAAE,EAAI,KAAK,EACX,EAAE,MAAK,CACT,CAGA,SAAS,YAAY,EAAE,EAAG,CACxB,EAAE,EAAI,KAAK,EACX,IAAIA,EAAK,KAAK,MAAM,EAAE,KAAK,EAAE,EAC7B,GAAGA,GAAM,KAAK,EAAG,CAAE,EAAE,EAAI,EAAG,MAAS,CACrC,IAAIF,EAAK,EAAE,KAAK,GACZC,EAAM,KAAK,GAAGD,EACdv+F,GAAM,GAAGu+F,GAAI,EACjB,EAAE,KAAK,CAAC,EAAI,KAAK,KAAKE,CAAE,GAAGF,EAC3B,QAAQ1lH,EAAI4lH,EAAG,EAAG5lH,EAAI,KAAK,EAAG,EAAEA,EAC9B,EAAE,KAAKA,EAAE4lH,EAAG,CAAC,IAAM,KAAK,KAAK5lH,CAAC,EAAEmnB,IAAKw+F,EACrC,EAAE,KAAK3lH,EAAE4lH,CAAE,EAAI,KAAK,KAAK5lH,CAAC,GAAG0lH,EAE5BA,EAAK,IAAG,EAAE,KAAK,KAAK,EAAEE,EAAG,CAAC,IAAM,KAAK,EAAEz+F,IAAKw+F,GAC/C,EAAE,EAAI,KAAK,EAAEC,EACb,EAAE,MAAK,CACT,CAGA,SAAS,SAAS3gH,EAAE,EAAG,CAErB,QADIjF,EAAI,EAAGuC,EAAI,EAAGR,EAAI,KAAK,IAAIkD,EAAE,EAAE,KAAK,CAAC,EACnCjF,EAAI+B,GACRQ,GAAK,KAAK,KAAKvC,CAAC,EAAEiF,EAAE,KAAKjF,CAAC,EAC1B,EAAE,KAAKA,GAAG,EAAIuC,EAAE,KAAK,GACrBA,IAAM,KAAK,GAEb,GAAG0C,EAAE,EAAI,KAAK,EAAG,CAEf,IADA1C,GAAK0C,EAAE,EACDjF,EAAI,KAAK,GACbuC,GAAK,KAAK,KAAKvC,CAAC,EAChB,EAAE,KAAKA,GAAG,EAAIuC,EAAE,KAAK,GACrBA,IAAM,KAAK,GAEbA,GAAK,KAAK,CACd,KAAS,CAEL,IADAA,GAAK,KAAK,EACJvC,EAAIiF,EAAE,GACV1C,GAAK0C,EAAE,KAAKjF,CAAC,EACb,EAAE,KAAKA,GAAG,EAAIuC,EAAE,KAAK,GACrBA,IAAM,KAAK,GAEbA,GAAK0C,EAAE,CACR,CACD,EAAE,EAAK1C,EAAE,EAAG,GAAG,EACZA,EAAI,GAAI,EAAE,KAAKvC,GAAG,EAAI,KAAK,GAAGuC,EACzBA,EAAI,IAAG,EAAE,KAAKvC,GAAG,EAAIuC,GAC7B,EAAE,EAAIvC,EACN,EAAE,MAAK,CACT,CAIA,SAAS,cAAciF,EAAE,EAAG,CAC1B,IAAIzF,EAAI,KAAK,IAAG,EAAI0F,EAAID,EAAE,MACtBjF,EAAIR,EAAE,EAEV,IADA,EAAE,EAAIQ,EAAEkF,EAAE,EACJ,EAAElF,GAAK,GAAG,EAAE,KAAKA,CAAC,EAAI,EAC5B,IAAIA,EAAI,EAAGA,EAAIkF,EAAE,EAAG,EAAElF,EAAG,EAAE,KAAKA,EAAER,EAAE,CAAC,EAAIA,EAAE,GAAG,EAAE0F,EAAE,KAAKlF,CAAC,EAAE,EAAEA,EAAE,EAAER,EAAE,CAAC,EACnE,EAAE,EAAI,EACN,EAAE,MAAK,EACJ,KAAK,GAAKyF,EAAE,GAAGsgH,aAAW,KAAK,MAAM,EAAE,CAAC,CAC7C,CAGA,SAAS,YAAY7xG,EAAG,CAGtB,QAFIlU,EAAI,KAAK,MACTQ,EAAI0T,EAAE,EAAI,EAAElU,EAAE,EACZ,EAAEQ,GAAK,GAAG0T,EAAE,KAAK1T,CAAC,EAAI,EAC5B,IAAIA,EAAI,EAAGA,EAAIR,EAAE,EAAE,EAAG,EAAEQ,EAAG,CACzB,IAAIuC,EAAI/C,EAAE,GAAGQ,EAAER,EAAE,KAAKQ,CAAC,EAAE0T,EAAE,EAAE1T,EAAE,EAAE,CAAC,GAC9B0T,EAAE,KAAK1T,EAAER,EAAE,CAAC,GAAGA,EAAE,GAAGQ,EAAE,EAAE,EAAER,EAAE,KAAKQ,CAAC,EAAE0T,EAAE,EAAE1T,EAAE,EAAEuC,EAAE/C,EAAE,EAAEQ,EAAE,CAAC,IAAMR,EAAE,KAC/DkU,EAAE,KAAK1T,EAAER,EAAE,CAAC,GAAKA,EAAE,GACnBkU,EAAE,KAAK1T,EAAER,EAAE,EAAE,CAAC,EAAI,EAErB,CACEkU,EAAE,EAAI,IAAGA,EAAE,KAAKA,EAAE,EAAE,CAAC,GAAKlU,EAAE,GAAGQ,EAAER,EAAE,KAAKQ,CAAC,EAAE0T,EAAE,EAAE1T,EAAE,EAAE,CAAC,GACvD0T,EAAE,EAAI,EACNA,EAAE,MAAK,CACT,CAIA,SAAS,YAAY3R,EAAEg4F,EAAErmF,EAAG,CAC1B,IAAImyG,EAAK9jH,EAAE,MACX,GAAG,EAAA8jH,EAAG,GAAK,GACX,KAAIC,EAAK,KAAK,MACd,GAAGA,EAAG,EAAID,EAAG,EAAG,CACA9rB,GAAE,QAAQ,CAAC,EACtBrmF,GAAK,MAAM,KAAK,OAAOA,CAAC,EAC3B,MACD,CACEA,GAAK,OAAMA,EAAI,IAAG,GACrB,IAAIxO,EAAI,IAAG,EAAI2hF,EAAK,KAAK,EAAGrmC,EAAKz+C,EAAE,EAC/BgkH,EAAM,KAAK,GAAG,MAAMF,EAAG,KAAKA,EAAG,EAAE,CAAC,CAAC,EACpCE,EAAM,GAAKF,EAAG,SAASE,EAAI7gH,CAAC,EAAG4gH,EAAG,SAASC,EAAIryG,CAAC,IAAYmyG,EAAG,OAAO3gH,CAAC,EAAG4gH,EAAG,OAAOpyG,CAAC,GACxF,IAAIsyG,EAAK9gH,EAAE,EACP+gH,EAAK/gH,EAAE,KAAK8gH,EAAG,CAAC,EACpB,GAAGC,GAAM,EACT,KAAIC,EAAKD,GAAI,GAAG,KAAK,KAAMD,EAAG,EAAG9gH,EAAE,KAAK8gH,EAAG,CAAC,GAAG,KAAK,GAAG,GACnDle,EAAK,KAAK,GAAGoe,EAAIne,GAAM,GAAG,KAAK,IAAIme,EAAIpkH,EAAI,GAAG,KAAK,GACnD9B,EAAI0T,EAAE,EAAGxM,EAAIlH,EAAEgmH,EAAIzkG,EAAKw4E,GAAS,IAAG,EAQxC,IAPA70F,EAAE,UAAUgC,EAAEqa,CAAC,EACZ7N,EAAE,UAAU6N,CAAC,GAAK,IACnB7N,EAAE,KAAKA,EAAE,GAAG,EAAI,EAChBA,EAAE,MAAM6N,EAAE7N,CAAC,GAEb6xG,aAAW,IAAI,UAAUS,EAAGzkG,CAAC,EAC7BA,EAAE,MAAMrc,EAAEA,CAAC,EACLA,EAAE,EAAI8gH,GAAI9gH,EAAE,KAAKA,EAAE,GAAG,EAAI,EAChC,KAAM,EAAEgC,GAAK,GAAG,CAEd,IAAIi/G,EAAMzyG,EAAE,KAAK,EAAE1T,CAAC,GAAGimH,EAAI,KAAK,GAAG,KAAK,MAAMvyG,EAAE,KAAK1T,CAAC,EAAE8nG,GAAIp0F,EAAE,KAAK1T,EAAE,CAAC,EAAE8B,GAAGimG,CAAE,EAC7E,IAAIr0F,EAAE,KAAK1T,CAAC,GAAGkF,EAAE,GAAG,EAAEihH,EAAGzyG,EAAExM,EAAE,EAAE8+G,CAAE,GAAKG,EAGpC,IAFAjhH,EAAE,UAAUgC,EAAEqa,CAAC,EACf7N,EAAE,MAAM6N,EAAE7N,CAAC,EACLA,EAAE,KAAK1T,CAAC,EAAI,EAAEmmH,GAAIzyG,EAAE,MAAM6N,EAAE7N,CAAC,CAEtC,CACEqmF,GAAK,OACNrmF,EAAE,UAAUsyG,EAAGjsB,CAAC,EACblT,GAAMrmC,GAAI+kE,aAAW,KAAK,MAAMxrB,EAAEA,CAAC,GAExCrmF,EAAE,EAAIsyG,EACNtyG,EAAE,MAAK,EACJqyG,EAAM,GAAGryG,EAAE,SAASqyG,EAAIryG,CAAC,EACzBmzE,EAAK,GAAG0+B,aAAW,KAAK,MAAM7xG,EAAEA,CAAC,GACtC,CAGA,SAAS,MAAMzO,EAAG,CAChB,IAAI,EAAI,MACR,YAAK,IAAG,EAAG,SAASA,EAAE,KAAK,CAAC,EACzB,KAAK,EAAI,GAAK,EAAE,UAAUsgH,aAAW,IAAI,EAAI,GAAGtgH,EAAE,MAAM,EAAE,CAAC,EACvD,CACT,CAGA,SAAS,QAAQlD,EAAG,CAAE,KAAK,EAAIA,CAAI,CACnC,SAAS,SAASvC,EAAG,CACnB,OAAGA,EAAE,EAAI,GAAKA,EAAE,UAAU,KAAK,CAAC,GAAK,EAAUA,EAAE,IAAI,KAAK,CAAC,EAC/CA,CACd,CACA,SAAS,QAAQA,EAAG,CAAE,OAAOA,CAAI,CACjC,SAAS,QAAQA,EAAG,CAAEA,EAAE,SAAS,KAAK,EAAE,KAAKA,CAAC,CAAI,CAClD,SAAS,OAAOA,EAAE0F,EAAEwO,EAAG,CAAElU,EAAE,WAAW0F,EAAEwO,CAAC,EAAG,KAAK,OAAOA,CAAC,CAAI,CAC7D,SAAS,OAAOlU,EAAE,EAAG,CAAEA,EAAE,SAAS,CAAC,EAAG,KAAK,OAAO,CAAC,CAAI,CAEvD,QAAQ,UAAU,QAAU,SAC5B,QAAQ,UAAU,OAAS,QAC3B,QAAQ,UAAU,OAAS,QAC3B,QAAQ,UAAU,MAAQ,OAC1B,QAAQ,UAAU,MAAQ,OAY1B,SAAS,aAAc,CACrB,GAAG,KAAK,EAAI,EAAG,MAAO,GACtB,IAAIA,EAAI,KAAK,KAAK,CAAC,EACnB,GAAI,EAAAA,EAAE,GAAS,MAAO,GACtB,IAAI0F,EAAI1F,EAAE,EACV,OAAA0F,EAAKA,GAAG,GAAG1F,EAAE,IAAK0F,GAAI,GACtBA,EAAKA,GAAG,GAAG1F,EAAE,KAAM0F,GAAI,IACvBA,EAAKA,GAAG,IAAK1F,EAAE,OAAQ0F,EAAG,QAAU,MAGpCA,EAAKA,GAAG,EAAE1F,EAAE0F,EAAE,KAAK,IAAK,KAAK,GAErBA,EAAE,EAAG,KAAK,GAAGA,EAAE,CAACA,CAC1B,CAGA,SAAS,WAAWnD,EAAG,CACrB,KAAK,EAAIA,EACT,KAAK,GAAKA,EAAE,WACZ,KAAK,IAAM,KAAK,GAAG,MACnB,KAAK,IAAM,KAAK,IAAI,GACpB,KAAK,IAAM,GAAIA,EAAE,GAAG,IAAK,EACzB,KAAK,IAAM,EAAEA,EAAE,CACjB,CAGA,SAAS,YAAYvC,EAAG,CACtB,IAAI,EAAI,MACR,OAAAA,EAAE,IAAG,EAAG,UAAU,KAAK,EAAE,EAAE,CAAC,EAC5B,EAAE,SAAS,KAAK,EAAE,KAAK,CAAC,EACrBA,EAAE,EAAI,GAAK,EAAE,UAAU+lH,aAAW,IAAI,EAAI,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,EACzD,CACT,CAGA,SAAS,WAAW/lH,EAAG,CACrB,IAAI,EAAI,MACR,OAAAA,EAAE,OAAO,CAAC,EACV,KAAK,OAAO,CAAC,EACN,CACT,CAGA,SAAS,WAAWA,EAAG,CACrB,KAAMA,EAAE,GAAK,KAAK,KAChBA,EAAE,KAAKA,EAAE,GAAG,EAAI,EAClB,QAAQQ,EAAI,EAAGA,EAAI,KAAK,EAAE,EAAG,EAAEA,EAAG,CAEhC,IAAIkH,EAAI1H,EAAE,KAAKQ,CAAC,EAAE,MACdomH,EAAMl/G,EAAE,KAAK,MAAOA,EAAE,KAAK,KAAK1H,EAAE,KAAKQ,CAAC,GAAG,IAAI,KAAK,IAAK,KAAK,KAAK,IAAKR,EAAE,GAK9E,IAHA0H,EAAIlH,EAAE,KAAK,EAAE,EACbR,EAAE,KAAK0H,CAAC,GAAK,KAAK,EAAE,GAAG,EAAEk/G,EAAG5mH,EAAEQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAEpCR,EAAE,KAAK0H,CAAC,GAAK1H,EAAE,IAAMA,EAAE,KAAK0H,CAAC,GAAK1H,EAAE,GAAIA,EAAE,KAAK,EAAE0H,CAAC,GACzD,CACD1H,EAAE,MAAK,EACPA,EAAE,UAAU,KAAK,EAAE,EAAEA,CAAC,EACnBA,EAAE,UAAU,KAAK,CAAC,GAAK,GAAGA,EAAE,MAAM,KAAK,EAAEA,CAAC,CAC/C,CAGA,SAAS,UAAUA,EAAE,EAAG,CAAEA,EAAE,SAAS,CAAC,EAAG,KAAK,OAAO,CAAC,CAAI,CAG1D,SAAS,UAAUA,EAAE0F,EAAEwO,EAAG,CAAElU,EAAE,WAAW0F,EAAEwO,CAAC,EAAG,KAAK,OAAOA,CAAC,CAAI,CAEhE,WAAW,UAAU,QAAU,YAC/B,WAAW,UAAU,OAAS,WAC9B,WAAW,UAAU,OAAS,WAC9B,WAAW,UAAU,MAAQ,UAC7B,WAAW,UAAU,MAAQ,UAG7B,SAAS,WAAY,CAAE,OAAS,KAAK,EAAE,EAAI,KAAK,KAAK,CAAC,EAAE,EAAG,KAAK,IAAM,CAAI,CAG1E,SAAS,OAAO5R,EAAEmjE,EAAG,CACnB,GAAGnjE,EAAI,YAAcA,EAAI,EAAG,OAAOyjH,aAAW,IAC9C,IAAI7xG,EAAI,IAAK,EAAEuwD,EAAK,IAAG,EAAInzC,EAAIm0C,EAAE,QAAQ,IAAI,EAAGjlE,EAAI,MAAM8B,CAAC,EAAE,EAE7D,IADAgvB,EAAE,OAAOpd,CAAC,EACJ,EAAE1T,GAAK,GAEX,GADAilE,EAAE,MAAMvxD,EAAEuwD,CAAE,GACRniE,EAAG,GAAG9B,GAAM,EAAGilE,EAAE,MAAMhB,EAAGnzC,EAAEpd,CAAC,MAC5B,CAAE,IAAI6N,EAAI7N,EAAGA,EAAIuwD,EAAIA,EAAK1iD,CAAI,CAErC,OAAO0jD,EAAE,OAAOvxD,CAAC,CACnB,CAGA,SAAS,YAAY5R,EAAEC,EAAG,CACxB,IAAIkjE,EACJ,OAAGnjE,EAAI,KAAOC,EAAE,OAAM,EAAIkjE,EAAI,IAAI,QAAQljE,CAAC,EAAQkjE,EAAI,IAAI,WAAWljE,CAAC,EAChE,KAAK,IAAID,EAAEmjE,CAAC,CACrB,CAGAsgD,aAAW,UAAU,OAAS,UAC9BA,aAAW,UAAU,QAAU,WAC/BA,aAAW,UAAU,WAAa,cAClCA,aAAW,UAAU,MAAQ,SAC7BA,aAAW,UAAU,UAAY,aACjCA,aAAW,UAAU,UAAY,aACjCA,aAAW,UAAU,SAAW,YAChCA,aAAW,UAAU,SAAW,YAChCA,aAAW,UAAU,MAAQ,SAC7BA,aAAW,UAAU,WAAa,cAClCA,aAAW,UAAU,SAAW,YAChCA,aAAW,UAAU,SAAW,YAChCA,aAAW,UAAU,SAAW,YAChCA,aAAW,UAAU,OAAS,UAC9BA,aAAW,UAAU,IAAM,OAG3BA,aAAW,UAAU,SAAW,WAChCA,aAAW,UAAU,OAAS,SAC9BA,aAAW,UAAU,IAAM,MAC3BA,aAAW,UAAU,UAAY,YACjCA,aAAW,UAAU,UAAY,YACjCA,aAAW,UAAU,IAAM,MAC3BA,aAAW,UAAU,UAAY,YAGjCA,aAAW,KAAO,IAAI,CAAC,EACvBA,aAAW,IAAM,IAAI,CAAC,EAatB,SAAS,SAAU,CAAE,IAAI7xG,EAAI,MAAO,YAAK,OAAOA,CAAC,EAAUA,CAAI,CAG/D,SAAS,YAAa,CACtB,GAAG,KAAK,EAAI,EAAG,CACd,GAAG,KAAK,GAAK,EAAG,OAAO,KAAK,KAAK,CAAC,EAAE,KAAK,GACpC,GAAG,KAAK,GAAK,EAAG,MAAO,EAC7B,KAAO,IAAG,KAAK,GAAK,EAAG,OAAO,KAAK,KAAK,CAAC,EACpC,GAAG,KAAK,GAAK,EAAG,MAAO,GAE5B,OAAS,KAAK,KAAK,CAAC,GAAI,GAAI,GAAG,KAAK,IAAK,IAAK,KAAK,GAAI,KAAK,KAAK,CAAC,CAClE,CAGA,SAAS,aAAc,CAAE,OAAQ,KAAK,GAAG,EAAG,KAAK,EAAG,KAAK,KAAK,CAAC,GAAG,IAAK,EAAK,CAG5E,SAAS,cAAe,CAAE,OAAQ,KAAK,GAAG,EAAG,KAAK,EAAG,KAAK,KAAK,CAAC,GAAG,IAAK,EAAK,CAG7E,SAAS,aAAaA,EAAG,CAAE,OAAO,KAAK,MAAM,KAAK,IAAI,KAAK,GAAG,KAAK,IAAIA,CAAC,CAAC,CAAI,CAG7E,SAAS,UAAW,CACpB,OAAG,KAAK,EAAI,EAAU,GACd,KAAK,GAAK,GAAM,KAAK,GAAK,GAAK,KAAK,KAAK,CAAC,GAAK,EAAW,EACtD,CACZ,CAGA,SAAS,WAAWzP,EAAG,CAEvB,GADGA,GAAK,OAAMA,EAAI,IACf,KAAK,OAAQ,GAAI,GAAKA,EAAI,GAAKA,EAAI,GAAI,MAAO,IACjD,IAAIoiH,EAAK,KAAK,UAAUpiH,CAAC,EACrBgB,EAAI,KAAK,IAAIhB,EAAEoiH,CAAE,EACjBjkH,EAAI,IAAI6C,CAAC,EAAGC,EAAI,MAAO+/D,EAAI,IAAG,EAAIvxD,EAAI,GAE1C,IADA,KAAK,SAAStR,EAAE8C,EAAE+/D,CAAC,EACb//D,EAAE,OAAQ,EAAG,GAClBwO,GAAKzO,EAAEggE,EAAE,SAAU,GAAE,SAAShhE,CAAC,EAAE,OAAO,CAAC,EAAIyP,EAC7CxO,EAAE,SAAS9C,EAAE8C,EAAE+/D,CAAC,EAEjB,OAAOA,EAAE,SAAU,EAAC,SAAShhE,CAAC,EAAIyP,CAClC,CAGA,SAAS,aAAarR,EAAE4B,EAAG,CAC3B,KAAK,QAAQ,CAAC,EACXA,GAAK,OAAMA,EAAI,IAGlB,QAFIoiH,EAAK,KAAK,UAAUpiH,CAAC,EACrB7B,EAAI,KAAK,IAAI6B,EAAEoiH,CAAE,EAAGb,EAAK,GAAOt+G,EAAI,EAAG0zB,EAAI,EACvC56B,EAAI,EAAGA,EAAIqC,EAAE,OAAQ,EAAErC,EAAG,CACjC,IAAIR,EAAI,MAAM6C,EAAErC,CAAC,EACjB,GAAGR,EAAI,EAAG,CACL6C,EAAE,OAAOrC,CAAC,GAAK,KAAO,KAAK,UAAY,IAAGwlH,EAAK,IAClD,QACD,CACD5qF,EAAI32B,EAAE22B,EAAEp7B,EACL,EAAE0H,GAAKm/G,IACR,KAAK,UAAUjkH,CAAC,EAChB,KAAK,WAAWw4B,EAAE,CAAC,EACnB1zB,EAAI,EACJ0zB,EAAI,EAEP,CACG1zB,EAAI,IACN,KAAK,UAAU,KAAK,IAAIjD,EAAEiD,CAAC,CAAC,EAC5B,KAAK,WAAW0zB,EAAE,CAAC,GAEjB4qF,GAAID,aAAW,KAAK,MAAM,KAAK,IAAI,CACtC,CAGA,SAAS,cAActgH,EAAEhB,EAAE1B,EAAG,CAC9B,GAAe,OAAO0B,GAAnB,SAEF,GAAGgB,EAAI,EAAG,KAAK,QAAQ,CAAC,MAMtB,KAJA,KAAK,WAAWA,EAAE1C,CAAC,EACf,KAAK,QAAQ0C,EAAE,CAAC,GAClB,KAAK,UAAUsgH,aAAW,IAAI,UAAUtgH,EAAE,CAAC,EAAE,MAAM,IAAI,EACtD,KAAK,UAAU,KAAK,WAAW,EAAE,CAAC,EAC/B,CAAC,KAAK,gBAAgBhB,CAAC,GAC3B,KAAK,WAAW,EAAE,CAAC,EAChB,KAAK,UAAS,EAAKgB,GAAG,KAAK,MAAMsgH,aAAW,IAAI,UAAUtgH,EAAE,CAAC,EAAE,IAAI,MAGpE,CAEN,IAAIzF,EAAI,IAAI,MAAS+hB,EAAItc,EAAE,EAC3BzF,EAAE,QAAUyF,GAAG,GAAG,EAClBhB,EAAE,UAAUzE,CAAC,EACV+hB,EAAI,EAAG/hB,EAAE,CAAC,IAAO,GAAG+hB,GAAG,EAAS/hB,EAAE,CAAC,EAAI,EAC1C,KAAK,WAAWA,EAAE,GAAG,CACtB,CACA,CAGA,SAAS,eAAgB,CACzB,IAAIQ,EAAI,KAAK,EAAG,EAAI,IAAI,MACxB,EAAE,CAAC,EAAI,KAAK,EACZ,IAAIiW,EAAI,KAAK,GAAIjW,EAAE,KAAK,GAAI,EAAGoC,EAAG80B,EAAI,EACtC,GAAGl3B,KAAM,EAGR,IAFGiW,EAAI,KAAK,KAAO7T,EAAI,KAAK,KAAKpC,CAAC,GAAGiW,KAAO,KAAK,EAAE,KAAK,KAAKA,IAC3D,EAAEihB,GAAG,EAAI90B,EAAG,KAAK,GAAI,KAAK,GAAG6T,GACzBjW,GAAK,GACNiW,EAAI,GACL7T,GAAK,KAAK,KAAKpC,CAAC,GAAI,GAAGiW,GAAG,IAAM,EAAEA,EAClC7T,GAAK,KAAK,KAAK,EAAEpC,CAAC,IAAIiW,GAAG,KAAK,GAAG,KAEjC7T,EAAK,KAAK,KAAKpC,CAAC,IAAIiW,GAAG,GAAI,IACxBA,GAAK,IAAKA,GAAK,KAAK,GAAI,EAAEjW,IAE3BoC,EAAE,MAAYA,GAAK,MACpB80B,GAAK,IAAM,KAAK,EAAE,OAAU90B,EAAE,MAAO,EAAE80B,GACvCA,EAAI,GAAK90B,GAAK,KAAK,KAAG,EAAE80B,GAAG,EAAI90B,GAGrC,OAAO,CACP,CAEA,SAAS,SAAS6C,EAAG,CAAE,OAAO,KAAK,UAAUA,CAAC,GAAG,CAAK,CACtD,SAAS,MAAMA,EAAG,CAAE,OAAO,KAAK,UAAUA,CAAC,EAAE,EAAG,KAAKA,CAAI,CACzD,SAAS,MAAMA,EAAG,CAAE,OAAO,KAAK,UAAUA,CAAC,EAAE,EAAG,KAAKA,CAAI,CAGzD,SAAS,aAAaA,EAAE04D,EAAGjqD,EAAG,CAC9B,IAAI1T,EAAG68B,EAAG96B,EAAI,KAAK,IAAIkD,EAAE,EAAE,KAAK,CAAC,EACjC,IAAIjF,EAAI,EAAGA,EAAI+B,EAAG,EAAE/B,EAAG0T,EAAE,KAAK1T,CAAC,EAAI29D,EAAG,KAAK,KAAK39D,CAAC,EAAEiF,EAAE,KAAKjF,CAAC,CAAC,EAC5D,GAAGiF,EAAE,EAAI,KAAK,EAAG,CAEhB,IADA43B,EAAI53B,EAAE,EAAE,KAAK,GACTjF,EAAI+B,EAAG/B,EAAI,KAAK,EAAG,EAAEA,EAAG0T,EAAE,KAAK1T,CAAC,EAAI29D,EAAG,KAAK,KAAK39D,CAAC,EAAE68B,CAAC,EACzDnpB,EAAE,EAAI,KAAK,CACZ,KAAO,CAEN,IADAmpB,EAAI,KAAK,EAAE,KAAK,GACZ78B,EAAI+B,EAAG/B,EAAIiF,EAAE,EAAG,EAAEjF,EAAG0T,EAAE,KAAK1T,CAAC,EAAI29D,EAAG9gC,EAAE53B,EAAE,KAAKjF,CAAC,CAAC,EACnD0T,EAAE,EAAIzO,EAAE,CACT,CACAyO,EAAE,EAAIiqD,EAAG,KAAK,EAAE14D,EAAE,CAAC,EACnByO,EAAE,MAAK,CACP,CAGA,SAAS,OAAOlU,EAAE0F,EAAG,CAAE,OAAO1F,EAAE0F,CAAI,CACpC,SAAS,MAAMD,EAAG,CAAE,IAAI,EAAI,IAAK,EAAE,YAAK,UAAUA,EAAE,OAAO,CAAC,EAAU,CAAI,CAG1E,SAAS,MAAMzF,EAAE0F,EAAG,CAAE,OAAO1F,EAAE0F,CAAI,CACnC,SAAS,KAAKD,EAAG,CAAE,IAAI,EAAI,IAAK,EAAE,YAAK,UAAUA,EAAE,MAAM,CAAC,EAAU,CAAI,CAGxE,SAAS,OAAOzF,EAAE0F,EAAG,CAAE,OAAO1F,EAAE0F,CAAI,CACpC,SAAS,MAAMD,EAAG,CAAE,IAAI,EAAI,IAAK,EAAE,YAAK,UAAUA,EAAE,OAAO,CAAC,EAAU,CAAI,CAG1E,SAAS,UAAUzF,EAAE0F,EAAG,CAAE,OAAO1F,EAAE,CAAC0F,CAAI,CACxC,SAAS,SAASD,EAAG,CAAE,IAAI,EAAI,IAAK,EAAE,YAAK,UAAUA,EAAE,UAAU,CAAC,EAAU,CAAI,CAGhF,SAAS,OAAQ,CAEjB,QADIyO,EAAI,IAAG,EACH1T,EAAI,EAAGA,EAAI,KAAK,EAAG,EAAEA,EAAG0T,EAAE,KAAK1T,CAAC,EAAI,KAAK,GAAG,CAAC,KAAK,KAAKA,CAAC,EAChE,OAAA0T,EAAE,EAAI,KAAK,EACXA,EAAE,EAAI,CAAC,KAAK,EACLA,CACP,CAGA,SAAS,YAAY,EAAG,CACxB,IAAI,EAAI,IAAG,EACX,OAAG,EAAI,EAAG,KAAK,SAAS,CAAC,EAAE,CAAC,EAAQ,KAAK,SAAS,EAAE,CAAC,EAC9C,CACP,CAGA,SAAS,aAAa,EAAG,CACzB,IAAI,EAAI,IAAG,EACX,OAAG,EAAI,EAAG,KAAK,SAAS,CAAC,EAAE,CAAC,EAAQ,KAAK,SAAS,EAAE,CAAC,EAC9C,CACP,CAGA,SAAS,KAAKlU,EAAG,CACjB,GAAGA,GAAK,EAAG,MAAO,GAClB,IAAI,EAAI,EACR,OAAIA,EAAE,QAAgBA,IAAM,GAAI,GAAK,IACjCA,EAAE,MAAcA,IAAM,EAAG,GAAK,GAC9BA,EAAE,KAAaA,IAAM,EAAG,GAAK,GAC7BA,EAAE,IAAWA,IAAM,EAAG,GAAK,GAC3BA,EAAE,GAAS,EAAE,EACV,CACP,CAGA,SAAS,mBAAoB,CAC7B,QAAQQ,EAAI,EAAGA,EAAI,KAAK,EAAG,EAAEA,EAC5B,GAAG,KAAK,KAAKA,CAAC,GAAK,EAAG,OAAOA,EAAE,KAAK,GAAG,KAAK,KAAK,KAAKA,CAAC,CAAC,EACzD,OAAG,KAAK,EAAI,EAAU,KAAK,EAAE,KAAK,GAC3B,EACP,CAGA,SAAS,KAAKR,EAAG,CAEjB,QADI,EAAI,EACFA,GAAK,GAAKA,GAAKA,EAAE,EAAG,EAAE,EAC5B,OAAO,CACP,CAGA,SAAS,YAAa,CAEtB,QADIkU,EAAI,EAAGlU,EAAI,KAAK,EAAE,KAAK,GACnBQ,EAAI,EAAGA,EAAI,KAAK,EAAG,EAAEA,EAAG0T,GAAK,KAAK,KAAK,KAAK1T,CAAC,EAAER,CAAC,EACxD,OAAOkU,CACP,CAGA,SAAS,UAAU,EAAG,CACtB,IAAIxM,EAAI,KAAK,MAAM,EAAE,KAAK,EAAE,EAC5B,OAAGA,GAAK,KAAK,EAAU,KAAK,GAAG,GACvB,KAAK,KAAKA,CAAC,EAAG,GAAI,EAAE,KAAK,KAAO,CACxC,CAGA,SAAS,aAAa,EAAEy2D,EAAI,CAC5B,IAAIjqD,EAAI6xG,aAAW,IAAI,UAAU,CAAC,EAClC,YAAK,UAAU7xG,EAAEiqD,EAAGjqD,CAAC,EACdA,CACP,CAGA,SAAS,SAAS,EAAG,CAAE,OAAO,KAAK,UAAU,EAAE,KAAK,CAAI,CAGxD,SAAS,WAAW,EAAG,CAAE,OAAO,KAAK,UAAU,EAAE,SAAS,CAAI,CAG9D,SAAS,UAAU,EAAG,CAAE,OAAO,KAAK,UAAU,EAAE,MAAM,CAAI,CAG1D,SAAS,SAASzO,EAAE,EAAG,CAEvB,QADIjF,EAAI,EAAGuC,EAAI,EAAGR,EAAI,KAAK,IAAIkD,EAAE,EAAE,KAAK,CAAC,EACnCjF,EAAI+B,GACTQ,GAAK,KAAK,KAAKvC,CAAC,EAAEiF,EAAE,KAAKjF,CAAC,EAC1B,EAAE,KAAKA,GAAG,EAAIuC,EAAE,KAAK,GACrBA,IAAM,KAAK,GAEZ,GAAG0C,EAAE,EAAI,KAAK,EAAG,CAEhB,IADA1C,GAAK0C,EAAE,EACDjF,EAAI,KAAK,GACbuC,GAAK,KAAK,KAAKvC,CAAC,EAChB,EAAE,KAAKA,GAAG,EAAIuC,EAAE,KAAK,GACrBA,IAAM,KAAK,GAEbA,GAAK,KAAK,CACX,KAAO,CAEN,IADAA,GAAK,KAAK,EACJvC,EAAIiF,EAAE,GACV1C,GAAK0C,EAAE,KAAKjF,CAAC,EACb,EAAE,KAAKA,GAAG,EAAIuC,EAAE,KAAK,GACrBA,IAAM,KAAK,GAEbA,GAAK0C,EAAE,CACR,CACA,EAAE,EAAK1C,EAAE,EAAG,GAAG,EACZA,EAAI,EAAG,EAAE,KAAKvC,GAAG,EAAIuC,EAChBA,EAAI,KAAI,EAAE,KAAKvC,GAAG,EAAI,KAAK,GAAGuC,GACtC,EAAE,EAAIvC,EACN,EAAE,MAAK,CACP,CAGA,SAAS,MAAMiF,EAAG,CAAE,IAAI,EAAI,IAAG,EAAI,YAAK,MAAMA,EAAE,CAAC,EAAU,CAAI,CAG/D,SAAS,WAAWA,EAAG,CAAE,IAAI,EAAI,IAAG,EAAI,YAAK,MAAMA,EAAE,CAAC,EAAU,CAAI,CAGpE,SAAS,WAAWA,EAAG,CAAE,IAAI,EAAI,IAAG,EAAI,YAAK,WAAWA,EAAE,CAAC,EAAU,CAAI,CAGzE,SAAS,SAASA,EAAG,CAAE,IAAI,EAAI,IAAK,EAAE,YAAK,SAASA,EAAE,EAAE,IAAI,EAAU,CAAI,CAG1E,SAAS,YAAYA,EAAG,CAAE,IAAI,EAAI,IAAK,EAAE,YAAK,SAASA,EAAE,KAAK,CAAC,EAAU,CAAI,CAG7E,SAAS,qBAAqBA,EAAG,CACjC,IAAI80F,EAAI,IAAG,EAAIrmF,EAAI,IAAG,EACtB,YAAK,SAASzO,EAAE80F,EAAErmF,CAAC,EACZ,IAAI,MAAMqmF,EAAErmF,CAAC,CACpB,CAGA,SAAS,aAAa,EAAG,CACzB,KAAK,KAAK,KAAK,CAAC,EAAI,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,EACjD,EAAE,KAAK,EACP,KAAK,MAAK,CACV,CAGA,SAAS,cAAc,EAAEknB,EAAG,CAC5B,GAAG,GAAK,EACR,MAAM,KAAK,GAAKA,GAAG,KAAK,KAAK,KAAK,GAAG,EAAI,EAEzC,IADA,KAAK,KAAKA,CAAC,GAAK,EACV,KAAK,KAAKA,CAAC,GAAK,KAAK,IAC1B,KAAK,KAAKA,CAAC,GAAK,KAAK,GAClB,EAAEA,GAAK,KAAK,IAAG,KAAK,KAAK,KAAK,GAAG,EAAI,GACxC,EAAE,KAAK,KAAKA,CAAC,EAEd,CAGA,SAAS,SAAU,CAAE,CACrB,SAAS,KAAKp7B,EAAG,CAAE,OAAOA,CAAI,CAC9B,SAAS,OAAOA,EAAE0F,EAAEwO,EAAG,CAAElU,EAAE,WAAW0F,EAAEwO,CAAC,CAAI,CAC7C,SAAS,OAAOlU,EAAE,EAAG,CAAEA,EAAE,SAAS,CAAC,CAAI,CAEvC,QAAQ,UAAU,QAAU,KAC5B,QAAQ,UAAU,OAAS,KAC3B,QAAQ,UAAU,MAAQ,OAC1B,QAAQ,UAAU,MAAQ,OAG1B,SAAS,MAAMsC,EAAG,CAAE,OAAO,KAAK,IAAIA,EAAE,IAAI,OAAS,CAAI,CAIvD,SAAS,mBAAmBmD,EAAEgB,EAAEyN,EAAG,CACnC,IAAI1T,EAAI,KAAK,IAAI,KAAK,EAAEiF,EAAE,EAAEgB,CAAC,EAG7B,IAFAyN,EAAE,EAAI,EACNA,EAAE,EAAI1T,EACAA,EAAI,GAAG0T,EAAE,KAAK,EAAE1T,CAAC,EAAI,EAC3B,IAAIkH,EACJ,IAAIA,EAAIwM,EAAE,EAAE,KAAK,EAAG1T,EAAIkH,EAAG,EAAElH,EAAG0T,EAAE,KAAK1T,EAAE,KAAK,CAAC,EAAI,KAAK,GAAG,EAAEiF,EAAE,KAAKjF,CAAC,EAAE0T,EAAE1T,EAAE,EAAE,KAAK,CAAC,EACnF,IAAIkH,EAAI,KAAK,IAAIjC,EAAE,EAAEgB,CAAC,EAAGjG,EAAIkH,EAAG,EAAElH,EAAG,KAAK,GAAG,EAAEiF,EAAE,KAAKjF,CAAC,EAAE0T,EAAE1T,EAAE,EAAEiG,EAAEjG,CAAC,EAClE0T,EAAE,MAAK,CACP,CAIA,SAAS,mBAAmBzO,EAAEgB,EAAEyN,EAAG,CACnC,EAAEzN,EACF,IAAIjG,EAAI0T,EAAE,EAAI,KAAK,EAAEzO,EAAE,EAAEgB,EAEzB,IADAyN,EAAE,EAAI,EACA,EAAE1T,GAAK,GAAG0T,EAAE,KAAK1T,CAAC,EAAI,EAC5B,IAAIA,EAAI,KAAK,IAAIiG,EAAE,KAAK,EAAE,CAAC,EAAGjG,EAAIiF,EAAE,EAAG,EAAEjF,EACxC0T,EAAE,KAAK,KAAK,EAAE1T,EAAEiG,CAAC,EAAI,KAAK,GAAGA,EAAEjG,EAAEiF,EAAE,KAAKjF,CAAC,EAAE0T,EAAE,EAAE,EAAE,KAAK,EAAE1T,EAAEiG,CAAC,EAC5DyN,EAAE,MAAK,EACPA,EAAE,UAAU,EAAEA,CAAC,CACf,CAGA,SAAS,QAAQ3R,EAAG,CAEpB,KAAK,GAAK,MACV,KAAK,GAAK,MACVwjH,aAAW,IAAI,UAAU,EAAExjH,EAAE,EAAE,KAAK,EAAE,EACtC,KAAK,GAAK,KAAK,GAAG,OAAOA,CAAC,EAC1B,KAAK,EAAIA,CACT,CAEA,SAAS,eAAevC,EAAG,CAC3B,GAAGA,EAAE,EAAI,GAAKA,EAAE,EAAI,EAAE,KAAK,EAAE,EAAG,OAAOA,EAAE,IAAI,KAAK,CAAC,EAC9C,GAAGA,EAAE,UAAU,KAAK,CAAC,EAAI,EAAG,OAAOA,EACjC,IAAI,EAAI,IAAK,EAAE,OAAAA,EAAE,OAAO,CAAC,EAAG,KAAK,OAAO,CAAC,EAAU,CAC1D,CAEA,SAAS,cAAcA,EAAG,CAAE,OAAOA,CAAI,CAGvC,SAAS,cAAcA,EAAG,CAK1B,IAJAA,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAC3BA,EAAE,EAAI,KAAK,EAAE,EAAE,IAAKA,EAAE,EAAI,KAAK,EAAE,EAAE,EAAGA,EAAE,MAAK,GAChD,KAAK,GAAG,gBAAgB,KAAK,GAAG,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAClD,KAAK,EAAE,gBAAgB,KAAK,GAAG,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAC3CA,EAAE,UAAU,KAAK,EAAE,EAAI,GAAGA,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,EAEzD,IADAA,EAAE,MAAM,KAAK,GAAGA,CAAC,EACXA,EAAE,UAAU,KAAK,CAAC,GAAK,GAAGA,EAAE,MAAM,KAAK,EAAEA,CAAC,CAChD,CAGA,SAAS,aAAaA,EAAE,EAAG,CAAEA,EAAE,SAAS,CAAC,EAAG,KAAK,OAAO,CAAC,CAAI,CAG7D,SAAS,aAAaA,EAAE0F,EAAEwO,EAAG,CAAElU,EAAE,WAAW0F,EAAEwO,CAAC,EAAG,KAAK,OAAOA,CAAC,CAAI,CAEnE,QAAQ,UAAU,QAAU,eAC5B,QAAQ,UAAU,OAAS,cAC3B,QAAQ,UAAU,OAAS,cAC3B,QAAQ,UAAU,MAAQ,aAC1B,QAAQ,UAAU,MAAQ,aAG1B,SAAS,SAAS5R,EAAEC,EAAG,CACvB,IAAI/B,EAAI8B,EAAE,YAAao1B,EAAGxjB,EAAI,IAAI,CAAC,EAAGuxD,EACtC,GAAGjlE,GAAK,EAAG,OAAO0T,EACV1T,EAAI,GAAIk3B,EAAI,EACZl3B,EAAI,GAAIk3B,EAAI,EACZl3B,EAAI,IAAKk3B,EAAI,EACbl3B,EAAI,IAAKk3B,EAAI,EAChBA,EAAI,EACNl3B,EAAI,EACNilE,EAAI,IAAI,QAAQljE,CAAC,EACVA,EAAE,OAAQ,EACjBkjE,EAAI,IAAI,QAAQljE,CAAC,EAEjBkjE,EAAI,IAAI,WAAWljE,CAAC,EAGrB,IAAI+uB,EAAI,IAAI,MAAS7qB,EAAI,EAAG+sF,EAAK97D,EAAE,EAAGuuF,GAAM,GAAGvuF,GAAG,EAElD,GADApG,EAAE,CAAC,EAAIm0C,EAAE,QAAQ,IAAI,EAClB/tC,EAAI,EAAG,CACT,IAAIovF,EAAK,MAET,IADArhD,EAAE,MAAMn0C,EAAE,CAAC,EAAEw1F,CAAE,EACTrgH,GAAKw/G,GACT30F,EAAE7qB,CAAC,EAAI,MACPg/D,EAAE,MAAMqhD,EAAGx1F,EAAE7qB,EAAE,CAAC,EAAE6qB,EAAE7qB,CAAC,CAAC,EACtBA,GAAK,CAER,CAEA,IAAIiB,EAAIpF,EAAE,EAAE,EAAG84B,EAAG2rF,EAAM,GAAMtiD,EAAK,IAAK,EAAE1iD,EAE1C,IADAvhB,EAAI,MAAM8B,EAAE,KAAKoF,CAAC,CAAC,EAAE,EACfA,GAAK,GAAG,CAQb,IAPGlH,GAAKgzF,EAAIp4D,EAAK94B,EAAE,KAAKoF,CAAC,GAAIlH,EAAEgzF,EAAKyyB,GAElC7qF,GAAK94B,EAAE,KAAKoF,CAAC,GAAI,GAAIlH,EAAE,GAAI,IAAMgzF,EAAGhzF,EACjCkH,EAAI,IAAG0zB,GAAK94B,EAAE,KAAKoF,EAAE,CAAC,GAAI,KAAK,GAAGlH,EAAEgzF,IAGzC/sF,EAAIixB,EACG,EAAA0D,EAAE,IAAWA,IAAM,EAAG,EAAE30B,EAE/B,IADIjG,GAAKiG,GAAK,IAAKjG,GAAK,KAAK,GAAI,EAAEkH,GAChCq/G,EACDz1F,EAAE8J,CAAC,EAAE,OAAOlnB,CAAC,EACb6yG,EAAM,OACD,CACL,KAAMtgH,EAAI,GAAKg/D,EAAE,MAAMvxD,EAAEuwD,CAAE,EAAGgB,EAAE,MAAMhB,EAAGvwD,CAAC,EAAGzN,GAAK,EAC/CA,EAAI,EAAGg/D,EAAE,MAAMvxD,EAAEuwD,CAAE,GAAU1iD,EAAI7N,EAAGA,EAAIuwD,EAAIA,EAAK1iD,GACpD0jD,EAAE,MAAMhB,EAAGnzC,EAAE8J,CAAC,EAAElnB,CAAC,CAClB,CAED,KAAMxM,GAAK,GAAM,EAAApF,EAAE,KAAKoF,CAAC,EAAG,GAAGlH,IAC7BilE,EAAE,MAAMvxD,EAAEuwD,CAAE,EAAG1iD,EAAI7N,EAAGA,EAAIuwD,EAAIA,EAAK1iD,EAChC,EAAEvhB,EAAI,IAAKA,EAAI,KAAK,GAAG,EAAG,EAAEkH,EAElC,CACA,OAAO+9D,EAAE,OAAOvxD,CAAC,CACjB,CAGA,SAAS,MAAMzO,EAAG,CAClB,IAAIzF,EAAK,KAAK,EAAE,EAAG,KAAK,OAAQ,EAAC,KAAK,QAClC0F,EAAKD,EAAE,EAAE,EAAGA,EAAE,OAAQ,EAACA,EAAE,QAC7B,GAAGzF,EAAE,UAAU0F,CAAC,EAAI,EAAG,CAAE,IAAIqc,EAAI/hB,EAAGA,EAAI0F,EAAGA,EAAIqc,CAAI,CACnD,IAAIvhB,EAAIR,EAAE,gBAAe,EAAIsxB,EAAI5rB,EAAE,kBACnC,GAAG4rB,EAAI,EAAG,OAAOtxB,EAMjB,IALGQ,EAAI8wB,IAAGA,EAAI9wB,GACX8wB,EAAI,IACNtxB,EAAE,SAASsxB,EAAEtxB,CAAC,EACd0F,EAAE,SAAS4rB,EAAE5rB,CAAC,GAET1F,EAAE,OAAQ,EAAG,IACdQ,EAAIR,EAAE,gBAAiB,GAAI,GAAGA,EAAE,SAASQ,EAAER,CAAC,GAC5CQ,EAAIkF,EAAE,gBAAiB,GAAI,GAAGA,EAAE,SAASlF,EAAEkF,CAAC,EAC7C1F,EAAE,UAAU0F,CAAC,GAAK,GACnB1F,EAAE,MAAM0F,EAAE1F,CAAC,EACXA,EAAE,SAAS,EAAEA,CAAC,IAEd0F,EAAE,MAAM1F,EAAE0F,CAAC,EACXA,EAAE,SAAS,EAAEA,CAAC,GAGjB,OAAG4rB,EAAI,GAAG5rB,EAAE,SAAS4rB,EAAE5rB,CAAC,EACjBA,CACP,CAGA,SAAS,UAAU,EAAG,CACtB,GAAG,GAAK,EAAG,MAAO,GAClB,IAAI9C,EAAI,KAAK,GAAG,EAAGsR,EAAK,KAAK,EAAE,EAAG,EAAE,EAAE,EACtC,GAAG,KAAK,EAAI,EACX,GAAGtR,GAAK,EAAGsR,EAAI,KAAK,KAAK,CAAC,EAAE,MACvB,SAAQ1T,EAAI,KAAK,EAAE,EAAGA,GAAK,EAAG,EAAEA,EAAG0T,GAAKtR,EAAEsR,EAAE,KAAK,KAAK1T,CAAC,GAAG,EAChE,OAAO0T,CACP,CAGA,SAAS,aAAa3R,EAAG,CACzB,IAAIykH,EAAKzkH,EAAE,SACX,GAAI,KAAK,OAAQ,GAAIykH,GAAOzkH,EAAE,OAAM,GAAM,EAAG,OAAOwjH,aAAW,KAG/D,QAFIz+F,EAAI/kB,EAAE,MAAK,EAAIsM,EAAI,KAAK,QACxBpJ,EAAI,IAAI,CAAC,EAAGhB,EAAI,IAAI,CAAC,EAAG1B,EAAI,IAAI,CAAC,EAAGH,EAAI,IAAI,CAAC,EAC3C0kB,EAAE,OAAQ,GAAI,GAAG,CACtB,KAAMA,EAAE,UACNA,EAAE,SAAS,EAAEA,CAAC,EACX0/F,IACE,CAACvhH,EAAE,OAAQ,GAAI,CAAChB,EAAE,OAAQ,KAAIgB,EAAE,MAAM,KAAKA,CAAC,EAAGhB,EAAE,MAAMlC,EAAEkC,CAAC,GAC7DgB,EAAE,SAAS,EAAEA,CAAC,GACLhB,EAAE,OAAQ,GAAEA,EAAE,MAAMlC,EAAEkC,CAAC,EAClCA,EAAE,SAAS,EAAEA,CAAC,EAEhB,KAAMoK,EAAE,UACNA,EAAE,SAAS,EAAEA,CAAC,EACXm4G,IACE,CAACjkH,EAAE,OAAQ,GAAI,CAACH,EAAE,OAAQ,KAAIG,EAAE,MAAM,KAAKA,CAAC,EAAGH,EAAE,MAAML,EAAEK,CAAC,GAC7DG,EAAE,SAAS,EAAEA,CAAC,GACLH,EAAE,OAAQ,GAAEA,EAAE,MAAML,EAAEK,CAAC,EAClCA,EAAE,SAAS,EAAEA,CAAC,EAEb0kB,EAAE,UAAUzY,CAAC,GAAK,GACnByY,EAAE,MAAMzY,EAAEyY,CAAC,EACR0/F,GAAIvhH,EAAE,MAAM1C,EAAE0C,CAAC,EAClBhB,EAAE,MAAM7B,EAAE6B,CAAC,IAEXoK,EAAE,MAAMyY,EAAEzY,CAAC,EACRm4G,GAAIjkH,EAAE,MAAM0C,EAAE1C,CAAC,EAClBH,EAAE,MAAM6B,EAAE7B,CAAC,EAEd,CACA,GAAGiM,EAAE,UAAUk3G,aAAW,GAAG,GAAK,EAAG,OAAOA,aAAW,KACvD,GAAGnjH,EAAE,UAAUL,CAAC,GAAK,EAAG,OAAOK,EAAE,SAASL,CAAC,EAC3C,GAAGK,EAAE,SAAW,EAAGA,EAAE,MAAML,EAAEK,CAAC,MAAQ,QAAOA,EAC7C,OAAGA,EAAE,SAAW,EAAUA,EAAE,IAAIL,CAAC,EAAeK,CAChD,CAEA,IAAI,UAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EACnX,OAAS,GAAG,IAAI,UAAU,UAAU,OAAO,CAAC,EAGhD,SAAS,kBAAkBmf,EAAG,CAC9B,IAAIvhB,EAAGR,EAAI,KAAK,MAChB,GAAGA,EAAE,GAAK,GAAKA,EAAE,KAAK,CAAC,GAAK,UAAU,UAAU,OAAO,CAAC,EAAG,CAC1D,IAAIQ,EAAI,EAAGA,EAAI,UAAU,OAAQ,EAAEA,EACjC,GAAGR,EAAE,KAAK,CAAC,GAAK,UAAUQ,CAAC,EAAG,MAAO,GACvC,MAAO,EACR,CACA,GAAGR,EAAE,SAAU,MAAO,GAEtB,IADAQ,EAAI,EACEA,EAAI,UAAU,QAAQ,CAE3B,QADI+B,EAAI,UAAU/B,CAAC,EAAGkH,EAAIlH,EAAE,EACtBkH,EAAI,UAAU,QAAUnF,EAAI,OAAOA,GAAK,UAAUmF,GAAG,EAE3D,IADAnF,EAAIvC,EAAE,OAAOuC,CAAC,EACR/B,EAAIkH,GAAG,GAAGnF,EAAE,UAAU/B,GAAG,GAAK,EAAG,MAAO,EAC/C,CACA,OAAOR,EAAE,YAAY+hB,CAAC,CACtB,CAGA,SAAS,eAAeA,EAAG,CAC3B,IAAIiC,EAAK,KAAK,SAAS+hG,aAAW,GAAG,EACjCruF,EAAI1T,EAAG,kBACX,GAAG0T,GAAK,EAAG,MAAO,GAIlB,QAHIxjB,EAAI8P,EAAG,WAAW0T,CAAC,EACnBuvF,EAAO,UAAS,EAChBxhH,EACIjF,EAAI,EAAGA,EAAIuhB,EAAG,EAAEvhB,EAAG,CAE1B,GACEiF,EAAI,IAAIsgH,aAAW,KAAK,UAAW,EAAEkB,CAAI,QAErCxhH,EAAE,UAAUsgH,aAAW,GAAG,GAAK,GAAKtgH,EAAE,UAAUue,CAAE,GAAK,GAC7D,IAAIte,EAAID,EAAE,OAAOyO,EAAE,IAAI,EACvB,GAAGxO,EAAE,UAAUqgH,aAAW,GAAG,GAAK,GAAKrgH,EAAE,UAAUse,CAAE,GAAK,EAAG,CAE3D,QADItc,EAAI,EACFA,IAAMgwB,GAAKhyB,EAAE,UAAUse,CAAE,GAAK,GAElC,GADAte,EAAIA,EAAE,UAAU,EAAE,IAAI,EACnBA,EAAE,UAAUqgH,aAAW,GAAG,GAAK,EAAG,MAAO,GAE9C,GAAGrgH,EAAE,UAAUse,CAAE,GAAK,EAAG,MAAO,EACjC,CACF,CACA,MAAO,EACP,CAGA,SAAS,WAAY,CAEnB,MAAO,CAEL,UAAW,SAAShkB,EAAG,CACrB,QAAQQ,EAAI,EAAGA,EAAIR,EAAE,OAAQ,EAAEQ,EAC7BR,EAAEQ,CAAC,EAAI,KAAK,MAAM,KAAK,OAAM,EAAK,GAAM,CAE3C,CACL,CACA,CAGAulH,aAAW,UAAU,UAAY,aACjCA,aAAW,UAAU,QAAU,WAC/BA,aAAW,UAAU,UAAY,aACjCA,aAAW,UAAU,WAAa,cAClCA,aAAW,UAAU,UAAY,aACjCA,aAAW,UAAU,UAAY,aACjCA,aAAW,UAAU,MAAQ,SAC7BA,aAAW,UAAU,UAAY,aACjCA,aAAW,UAAU,WAAa,cAClCA,aAAW,UAAU,gBAAkB,mBACvCA,aAAW,UAAU,gBAAkB,mBACvCA,aAAW,UAAU,OAAS,UAC9BA,aAAW,UAAU,YAAc,eAGnCA,aAAW,UAAU,MAAQ,QAC7BA,aAAW,UAAU,SAAW,WAChCA,aAAW,UAAU,UAAY,YACjCA,aAAW,UAAU,WAAa,aAClCA,aAAW,UAAU,OAAS,SAC9BA,aAAW,UAAU,YAAc,cACnCA,aAAW,UAAU,OAAS,SAC9BA,aAAW,UAAU,IAAM,MAC3BA,aAAW,UAAU,IAAM,MAC3BA,aAAW,UAAU,IAAM,MAC3BA,aAAW,UAAU,GAAK,KAC1BA,aAAW,UAAU,IAAM,MAC3BA,aAAW,UAAU,OAAS,SAC9BA,aAAW,UAAU,IAAM,MAC3BA,aAAW,UAAU,UAAY,YACjCA,aAAW,UAAU,WAAa,aAClCA,aAAW,UAAU,gBAAkB,kBACvCA,aAAW,UAAU,SAAW,WAChCA,aAAW,UAAU,QAAU,UAC/BA,aAAW,UAAU,OAAS,SAC9BA,aAAW,UAAU,SAAW,WAChCA,aAAW,UAAU,QAAU,UAC/BA,aAAW,UAAU,IAAM,MAC3BA,aAAW,UAAU,SAAW,WAChCA,aAAW,UAAU,SAAW,WAChCA,aAAW,UAAU,OAAS,SAC9BA,aAAW,UAAU,UAAY,YACjCA,aAAW,UAAU,mBAAqB,qBAC1CA,aAAW,UAAU,OAAS,SAC9BA,aAAW,UAAU,WAAa,aAClCA,aAAW,UAAU,IAAM,MAC3BA,aAAW,UAAU,IAAM,MAC3BA,aAAW,UAAU,gBAAkB,kBC/tCvC,IAAIrkD,QAAQ7gB,QAIRwqC,OAAwB3pB,QAAM,KAAOA,QAAM,MAAQ,GACvDA,QAAM,GAAG,KAAOA,QAAM,GAAG,WAAW,KAAO2pB,OAO3CA,OAAK,OAAS,UAAW,CAEnB43B,gBACFC,UAIF,IAAIC,EAAS,KAGTC,EAAS1hD,QAAM,KAAK,aAAY,EAGhC2hD,EAAK,IAAI,MAAM,EAAE,EAGjBvuE,EAAK,CACP,UAAW,OACX,YAAa,GACb,aAAc,GAEd,cAAe,EAEf,kBAAmB,KAEnB,kBAAmB,CACvB,EAOE,OAAAA,EAAG,MAAQ,UAAW,CAEpBA,EAAG,cAAgB,EAGnBA,EAAG,kBAAoBA,EAAG,gBAAkB,GAE5C,QADIwuE,EAASxuE,EAAG,kBAAoB,EAC5Bt0C,EAAI,EAAGA,EAAI8iH,EAAQ,EAAE9iH,EAC3Bs0C,EAAG,kBAAkB,KAAK,CAAC,EAE7B,OAAAsuE,EAAS1hD,QAAM,KAAK,eACpByhD,EAAS,CACP,GAAI,WACJ,GAAI,WACJ,GAAI,WACJ,GAAI,UACJ,GAAI,UACV,EACWruE,CACX,EAEEA,EAAG,MAAK,EAYRA,EAAG,OAAS,SAASzpC,EAAKtG,EAAU,CAC/BA,IAAa,SACdsG,EAAMq2D,QAAM,KAAK,WAAWr2D,CAAG,GAIjC,IAAI/K,EAAM+K,EAAI,OACdypC,EAAG,eAAiBx0C,EACpBA,EAAM,CAAEA,EAAM,aAAiB,EAAGA,IAAQ,CAAC,EAC3C,QAAQE,EAAIs0C,EAAG,kBAAkB,OAAS,EAAGt0C,GAAK,EAAG,EAAEA,EACrDs0C,EAAG,kBAAkBt0C,CAAC,GAAKF,EAAI,CAAC,EAChCA,EAAI,CAAC,EAAIA,EAAI,CAAC,GAAMw0C,EAAG,kBAAkBt0C,CAAC,EAAI,aAAiB,GAC/Ds0C,EAAG,kBAAkBt0C,CAAC,EAAIs0C,EAAG,kBAAkBt0C,CAAC,IAAM,EACtDF,EAAI,CAAC,EAAMA,EAAI,CAAC,EAAI,aAAiB,EAIvC,OAAA8iH,EAAO,SAAS/3G,CAAG,EAGnBk4G,UAAQJ,EAAQE,EAAID,CAAM,GAGvBA,EAAO,KAAO,MAAQA,EAAO,OAAQ,IAAK,IAC3CA,EAAO,QAAO,EAGTtuE,CACX,EAOEA,EAAG,OAAS,UAAW,CAqBrB,IAAI0uE,EAAa9hD,QAAM,KAAK,aAAY,EACxC8hD,EAAW,SAASJ,EAAO,MAAO,GAGlC,IAAIx7G,EACFktC,EAAG,kBAAkBA,EAAG,kBAAkB,OAAS,CAAC,EACpDA,EAAG,kBAKDqwB,EAAWv9D,EAAaktC,EAAG,YAAc,EAC7C0uE,EAAW,SAASC,WAAS,OAAO,EAAG3uE,EAAG,YAAcqwB,CAAQ,CAAC,EAMjE,QAFIlgD,EAAMw/B,EACNwB,EAAOnR,EAAG,kBAAkB,CAAC,EAAI,EAC7Bt0C,EAAI,EAAGA,EAAIs0C,EAAG,kBAAkB,OAAS,EAAG,EAAEt0C,EACpDykB,EAAO6vB,EAAG,kBAAkBt0C,EAAI,CAAC,EAAI,EACrCikD,EAASx/B,EAAO,aAAiB,EACjCghC,GAAQxB,EACR++D,EAAW,SAASv9D,IAAS,CAAC,EAC9BA,EAAOhhC,IAAS,EAElBu+F,EAAW,SAASv9D,CAAI,EAExB,IAAIl9B,EAAK,CACP,GAAIo6F,EAAO,GACX,GAAIA,EAAO,GACX,GAAIA,EAAO,GACX,GAAIA,EAAO,GACX,GAAIA,EAAO,EACjB,EACII,UAAQx6F,EAAIs6F,EAAIG,CAAU,EAC1B,IAAIphD,EAAOV,QAAM,KAAK,aAAY,EAClC,OAAAU,EAAK,SAASr5C,EAAG,EAAE,EACnBq5C,EAAK,SAASr5C,EAAG,EAAE,EACnBq5C,EAAK,SAASr5C,EAAG,EAAE,EACnBq5C,EAAK,SAASr5C,EAAG,EAAE,EACnBq5C,EAAK,SAASr5C,EAAG,EAAE,EACZq5C,CACX,EAESttB,CACT,EAGA,IAAI2uE,WAAW,KACXR,eAAe,GAKnB,SAASC,SAAQ,CAEfO,WAAW,IACXA,YAAY/hD,QAAM,KAAK,WAAW,KAA2B,EAAE,EAG/DuhD,eAAe,EACjB,CASA,SAASM,UAAQ1gH,EAAGu4B,EAAGhyB,EAAO,CAI5B,QAFI2Y,EAAGtc,EAAGhB,EAAG1B,EAAGH,EAAGN,EAAG+6B,EAAG78B,EACrBF,EAAM8I,EAAM,SACV9I,GAAO,IAAI,CAaf,IAPAmF,EAAI5C,EAAE,GACN4B,EAAI5B,EAAE,GACNE,EAAIF,EAAE,GACND,EAAIC,EAAE,GACNP,EAAIO,EAAE,GAGFrC,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACnBuhB,EAAI3Y,EAAM,WACVgyB,EAAE56B,CAAC,EAAIuhB,EACPsb,EAAIz6B,EAAK6B,GAAK1B,EAAIH,GAClBmf,GAAMtc,GAAK,EAAMA,IAAM,IAAO43B,EAAI/6B,EAAI,WAAayf,EACnDzf,EAAIM,EACJA,EAAIG,EAEJA,GAAM0B,GAAK,GAAOA,IAAM,KAAQ,EAChCA,EAAIgB,EACJA,EAAIsc,EAEN,KAAMvhB,EAAI,GAAI,EAAEA,EACduhB,EAAKqZ,EAAE56B,EAAI,CAAC,EAAI46B,EAAE56B,EAAI,CAAC,EAAI46B,EAAE56B,EAAI,EAAE,EAAI46B,EAAE56B,EAAI,EAAE,EAC/CuhB,EAAKA,GAAK,EAAMA,IAAM,GACtBqZ,EAAE56B,CAAC,EAAIuhB,EACPsb,EAAIz6B,EAAK6B,GAAK1B,EAAIH,GAClBmf,GAAMtc,GAAK,EAAMA,IAAM,IAAO43B,EAAI/6B,EAAI,WAAayf,EACnDzf,EAAIM,EACJA,EAAIG,EAEJA,GAAM0B,GAAK,GAAOA,IAAM,KAAQ,EAChCA,EAAIgB,EACJA,EAAIsc,EAGN,KAAMvhB,EAAI,GAAI,EAAEA,EACduhB,EAAKqZ,EAAE56B,EAAI,CAAC,EAAI46B,EAAE56B,EAAI,CAAC,EAAI46B,EAAE56B,EAAI,EAAE,EAAI46B,EAAE56B,EAAI,EAAE,EAC/CuhB,EAAKA,GAAK,EAAMA,IAAM,GACtBqZ,EAAE56B,CAAC,EAAIuhB,EACPsb,EAAI54B,EAAI1B,EAAIH,EACZmf,GAAMtc,GAAK,EAAMA,IAAM,IAAO43B,EAAI/6B,EAAI,WAAayf,EACnDzf,EAAIM,EACJA,EAAIG,EAEJA,GAAM0B,GAAK,GAAOA,IAAM,KAAQ,EAChCA,EAAIgB,EACJA,EAAIsc,EAEN,KAAMvhB,EAAI,GAAI,EAAEA,EACduhB,EAAKqZ,EAAE56B,EAAI,CAAC,EAAI46B,EAAE56B,EAAI,EAAE,EAAI46B,EAAE56B,EAAI,EAAE,EAAI46B,EAAE56B,EAAI,EAAE,EAChDuhB,EAAKA,GAAK,EAAMA,IAAM,GACtBqZ,EAAE56B,CAAC,EAAIuhB,EACPsb,EAAI54B,EAAI1B,EAAIH,EACZmf,GAAMtc,GAAK,EAAMA,IAAM,IAAO43B,EAAI/6B,EAAI,WAAayf,EACnDzf,EAAIM,EACJA,EAAIG,EAEJA,GAAM0B,GAAK,GAAOA,IAAM,KAAQ,EAChCA,EAAIgB,EACJA,EAAIsc,EAGN,KAAMvhB,EAAI,GAAI,EAAEA,EACduhB,EAAKqZ,EAAE56B,EAAI,CAAC,EAAI46B,EAAE56B,EAAI,EAAE,EAAI46B,EAAE56B,EAAI,EAAE,EAAI46B,EAAE56B,EAAI,EAAE,EAChDuhB,EAAKA,GAAK,EAAMA,IAAM,GACtBqZ,EAAE56B,CAAC,EAAIuhB,EACPsb,EAAK54B,EAAI1B,EAAMH,GAAK6B,EAAI1B,GACxBgf,GAAMtc,GAAK,EAAMA,IAAM,IAAO43B,EAAI/6B,EAAI,WAAayf,EACnDzf,EAAIM,EACJA,EAAIG,EAEJA,GAAM0B,GAAK,GAAOA,IAAM,KAAQ,EAChCA,EAAIgB,EACJA,EAAIsc,EAGN,KAAMvhB,EAAI,GAAI,EAAEA,EACduhB,EAAKqZ,EAAE56B,EAAI,CAAC,EAAI46B,EAAE56B,EAAI,EAAE,EAAI46B,EAAE56B,EAAI,EAAE,EAAI46B,EAAE56B,EAAI,EAAE,EAChDuhB,EAAKA,GAAK,EAAMA,IAAM,GACtBqZ,EAAE56B,CAAC,EAAIuhB,EACPsb,EAAI54B,EAAI1B,EAAIH,EACZmf,GAAMtc,GAAK,EAAMA,IAAM,IAAO43B,EAAI/6B,EAAI,WAAayf,EACnDzf,EAAIM,EACJA,EAAIG,EAEJA,GAAM0B,GAAK,GAAOA,IAAM,KAAQ,EAChCA,EAAIgB,EACJA,EAAIsc,EAINlf,EAAE,GAAMA,EAAE,GAAK4C,EAAK,EACpB5C,EAAE,GAAMA,EAAE,GAAK4B,EAAK,EACpB5B,EAAE,GAAMA,EAAE,GAAKE,EAAK,EACpBF,EAAE,GAAMA,EAAE,GAAKD,EAAK,EACpBC,EAAE,GAAMA,EAAE,GAAKP,EAAK,EAEpBhC,GAAO,EACR,CACH,CCjRA,IAAIohE,QAAQ7gB,QAMR,MAAyB6gB,QAAM,MAAQA,QAAM,OAAS,GAoB1D,MAAM,gBAAkB,SAASz0D,EAAKkvB,EAAS7jB,EAAS,CAEtD,IAAIqiG,EACA/F,EACA9/D,EACAoyE,EAED,OAAO5uG,GAAY,UACpBqiG,EAAQriG,EACRs8F,EAAO,UAAU,CAAC,GAAK,OACvB9/D,EAAK,UAAU,CAAC,GAAK,QACbx8B,IACRqiG,EAAQriG,EAAQ,OAAS,OACzBs8F,EAAOt8F,EAAQ,MAAQ,OACvBw8B,EAAKx8B,EAAQ,IAAM,OAChBA,EAAQ,MAAQA,EAAQ,KAAK,KAC9B4uG,EAAS5uG,EAAQ,KAAK,KAKtBw8B,EAGFA,EAAG,MAAK,EAFRA,EAAK4sB,QAAM,GAAG,KAAK,OAAM,EAMvBwlD,IACFA,EAASpyE,GAIX,IAAIqyE,EAAY,KAAK,KAAKl6G,EAAI,EAAE,UAAS,EAAK,CAAC,EAC3Cm6G,EAAYD,EAAY,EAAIryE,EAAG,aAAe,EAClD,GAAG3Y,EAAQ,OAASirF,EAAW,CAC7B,IAAIrqE,EAAQ,IAAI,MAAM,8CAA8C,EACpE,MAAAA,EAAM,OAAS5gB,EAAQ,OACvB4gB,EAAM,UAAYqqE,EACZrqE,CACP,CAEG49D,IACFA,EAAQ,IAEV7lE,EAAG,OAAO6lE,EAAO,KAAK,EAKtB,QAJI0M,EAAQvyE,EAAG,SAEXwyE,EAAK,GACLC,EAAYH,EAAYjrF,EAAQ,OAC5B37B,EAAI,EAAGA,EAAI+mH,EAAW/mH,IAC5B8mH,GAAM,KAGR,IAAIE,EAAKH,EAAM,SAAU,EAAGC,EAAK,IAASnrF,EAE1C,GAAG,CAACy4E,EACFA,EAAOlzC,QAAM,OAAO,SAAS5sB,EAAG,YAAY,UACpC8/D,EAAK,SAAW9/D,EAAG,aAAc,CACzC,IAAIiI,EAAQ,IAAI,MAAM,wEACM,EAC5B,MAAAA,EAAM,WAAa63D,EAAK,OACxB73D,EAAM,aAAejI,EAAG,aAClBiI,CACP,CAED,IAAI0qE,EAAS,SAAS7S,EAAMuS,EAAYryE,EAAG,aAAe,EAAGoyE,CAAM,EAC/DQ,EAAWhmD,QAAM,KAAK,SAAS8lD,EAAIC,EAAQD,EAAG,MAAM,EAEpDG,EAAW,SAASD,EAAU5yE,EAAG,aAAcoyE,CAAM,EACrDpG,EAAap/C,QAAM,KAAK,SAASkzC,EAAM+S,EAAU/S,EAAK,MAAM,EAGhE,MAAO,KAASkM,EAAa4G,CAC/B,EAmBA,MAAM,gBAAkB,SAASz6G,EAAK26G,EAAItvG,EAAS,CAEjD,IAAIqiG,EACA7lE,EACAoyE,EAED,OAAO5uG,GAAY,UACpBqiG,EAAQriG,EACRw8B,EAAK,UAAU,CAAC,GAAK,QACbx8B,IACRqiG,EAAQriG,EAAQ,OAAS,OACzBw8B,EAAKx8B,EAAQ,IAAM,OAChBA,EAAQ,MAAQA,EAAQ,KAAK,KAC9B4uG,EAAS5uG,EAAQ,KAAK,KAK1B,IAAI6uG,EAAY,KAAK,KAAKl6G,EAAI,EAAE,UAAS,EAAK,CAAC,EAE/C,GAAG26G,EAAG,SAAWT,EAAW,CAC1B,IAAIpqE,EAAQ,IAAI,MAAM,+CAA+C,EACrE,MAAAA,EAAM,OAAS6qE,EAAG,OAClB7qE,EAAM,eAAiBoqE,EACjBpqE,CACP,CAcD,GAXGjI,IAAO,OACRA,EAAK4sB,QAAM,GAAG,KAAK,OAAM,EAEzB5sB,EAAG,MAAK,EAINoyE,IACFA,EAASpyE,GAGRqyE,EAAY,EAAIryE,EAAG,aAAe,EACnC,MAAM,IAAI,MAAM,oDAAoD,EAGlE6lE,IACFA,EAAQ,IAEV7lE,EAAG,OAAO6lE,EAAO,KAAK,EAoBtB,QAnBI0M,EAAQvyE,EAAG,OAAQ,EAAC,SAAQ,EAG5BpvC,EAAIkiH,EAAG,OAAO,CAAC,EACf9G,EAAa8G,EAAG,UAAU,EAAG9yE,EAAG,aAAe,CAAC,EAChD4yE,EAAWE,EAAG,UAAU,EAAI9yE,EAAG,YAAY,EAE3C6yE,EAAW,SAASD,EAAU5yE,EAAG,aAAcoyE,CAAM,EACrDtS,EAAOlzC,QAAM,KAAK,SAASo/C,EAAY6G,EAAU7G,EAAW,MAAM,EAElE2G,EAAS,SAAS7S,EAAMuS,EAAYryE,EAAG,aAAe,EAAGoyE,CAAM,EAC/DvtD,EAAK+H,QAAM,KAAK,SAASgmD,EAAUD,EAAQC,EAAS,MAAM,EAE1DG,EAAaluD,EAAG,UAAU,EAAG7kB,EAAG,YAAY,EAG5CiI,EAASr3C,IAAM,KAGXlF,EAAI,EAAGA,EAAIs0C,EAAG,aAAc,EAAEt0C,EACpCu8C,GAAUsqE,EAAM,OAAO7mH,CAAC,IAAMqnH,EAAW,OAAOrnH,CAAC,EAQnD,QAFIsnH,EAAQ,EACRhsG,EAAQg5B,EAAG,aACPptC,EAAIotC,EAAG,aAAcptC,EAAIiyD,EAAG,OAAQjyD,IAAK,CAC/C,IAAIzG,EAAO04D,EAAG,WAAWjyD,CAAC,EAEtBqgH,EAAQ9mH,EAAO,EAAO,EAGtB+mH,EAAaF,EAAQ,MAAS,EAClC/qE,GAAU97C,EAAO+mH,EAGjBF,EAAQA,EAAQC,EAChBjsG,GAASgsG,CACV,CAED,GAAG/qE,GAAS4c,EAAG,WAAW79C,CAAK,IAAM,EACnC,MAAM,IAAI,MAAM,6BAA6B,EAG/C,OAAO69C,EAAG,UAAU79C,EAAQ,CAAC,CAC/B,EAEA,SAAS,SAAS84F,EAAMqT,EAAYj9D,EAAM,CAEpCA,IACFA,EAAO0W,QAAM,GAAG,KAAK,OAAM,GAI7B,QAFI3/C,EAAI,GACJm7B,EAAQ,KAAK,KAAK+qE,EAAaj9D,EAAK,YAAY,EAC5CxqD,EAAI,EAAGA,EAAI08C,EAAO,EAAE18C,EAAG,CAC7B,IAAIuC,EAAI,OAAO,aACZvC,GAAK,GAAM,IAAOA,GAAK,GAAM,IAAOA,GAAK,EAAK,IAAMA,EAAI,GAAI,EAC/DwqD,EAAK,MAAK,EACVA,EAAK,OAAO4pD,EAAO7xG,CAAC,EACpBgf,GAAKipC,EAAK,OAAQ,EAAC,SAAQ,CAC5B,CACD,OAAOjpC,EAAE,UAAU,EAAGkmG,CAAU,CAClC,CC5QA,IAAIvmD,QAAQ7gB,SAKX,UAAW,CAGZ,GAAG6gB,QAAM,MAAO,CACGA,QAAM,MACvB,MACF,CAGA,IAAIyhC,EAAyBzhC,QAAM,MAAQA,QAAM,OAAS,GAEtDqkD,EAAarkD,QAAM,KAAK,WAGxBwmD,EAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACtCC,EAAS,IAAIpC,EAAW,IAAI,EAChCoC,EAAO,QAAQ,EAAE,EACjB,IAAIC,EAAQ,SAASpoH,EAAG0F,EAAG,CAAC,OAAO1F,EAAE0F,CAAE,EA+BvCy9F,EAAM,sBAAwB,SAASl9C,EAAM3tC,EAASrG,EAAU,CAC3D,OAAOqG,GAAY,aACpBrG,EAAWqG,EACXA,EAAU,IAEZA,EAAUA,GAAW,GAGrB,IAAIosD,EAAYpsD,EAAQ,WAAa,WAClC,OAAOosD,GAAc,WACtBA,EAAY,CAAC,KAAMA,CAAS,GAE9BA,EAAU,QAAUA,EAAU,SAAW,GAGzC,IAAIuiD,EAAO3uG,EAAQ,MAAQopD,QAAM,OAC7B2mD,EAAM,CAER,UAAW,SAASroH,EAAG,CAErB,QADIyE,EAAIwiH,EAAK,aAAajnH,EAAE,MAAM,EAC1BQ,EAAI,EAAGA,EAAIR,EAAE,OAAQ,EAAEQ,EAC7BR,EAAEQ,CAAC,EAAIiE,EAAE,WAAWjE,CAAC,CAExB,CACL,EAEE,GAAGkkE,EAAU,OAAS,WACpB,OAAO4jD,EAAkBriE,EAAMoiE,EAAK3jD,EAAU,QAASzyD,CAAQ,EAGjE,MAAM,IAAI,MAAM,uCAAyCyyD,EAAU,IAAI,CACzE,EAEA,SAAS4jD,EAAkBriE,EAAMoiE,EAAK/vG,EAASrG,EAAU,CACvD,MAAG,YAAaqG,EACPiwG,EAA6BtiE,EAAMoiE,EAAK/vG,EAASrG,CAAQ,EAE3Du2G,EAAgCviE,EAAMoiE,EAAK/vG,EAASrG,CAAQ,CACrE,CAEA,SAASu2G,EAAgCviE,EAAMoiE,EAAK/vG,EAASrG,EAAU,CAErE,IAAIxQ,EAAMgnH,EAAexiE,EAAMoiE,CAAG,EAM9BK,EAAW,EAGXC,EAAUC,EAAoBnnH,EAAI,UAAW,GAC9C,qBAAsB6W,IACvBqwG,EAAUrwG,EAAQ,kBAOpB,IAAIuwG,EAAe,GAChB,iBAAkBvwG,IACnBuwG,EAAevwG,EAAQ,cAGzBwwG,EAAUrnH,EAAKwkD,EAAMoiE,EAAKK,EAAUC,EAASE,EAAc52G,CAAQ,CACrE,CAEA,SAAS62G,EAAUrnH,EAAKwkD,EAAMoiE,EAAKK,EAAUC,EAASE,EAAc52G,EAAU,CAC5E,IAAItQ,EAAQ,CAAC,IAAI,KACjB,EAAG,CAMD,GAJGF,EAAI,UAAW,EAAGwkD,IACnBxkD,EAAMgnH,EAAexiE,EAAMoiE,CAAG,GAG7B5mH,EAAI,gBAAgBknH,CAAO,EAC5B,OAAO12G,EAAS,KAAMxQ,CAAG,EAG3BA,EAAI,WAAWymH,EAAaQ,IAAa,CAAC,EAAG,CAAC,CAClD,OAAUG,EAAe,GAAM,CAAC,IAAI,KAASlnH,EAAQknH,GAGnDnnD,QAAM,KAAK,aAAa,UAAW,CACjConD,EAAUrnH,EAAKwkD,EAAMoiE,EAAKK,EAAUC,EAASE,EAAc52G,CAAQ,CACvE,CAAG,CACH,CAMA,SAASs2G,EAA6BtiE,EAAMoiE,EAAK/vG,EAASrG,EAAU,CAElE,GAAG,OAAO,OAAW,IACnB,OAAOu2G,EAAgCviE,EAAMoiE,EAAK/vG,EAASrG,CAAQ,EAIrE,IAAIxQ,EAAMgnH,EAAexiE,EAAMoiE,CAAG,EAG9BlkD,EAAa7rD,EAAQ,QACrBywG,EAAWzwG,EAAQ,UAAY,IAC/BnN,EAAQ49G,EAAW,GAAK,EACxBC,EAAe1wG,EAAQ,cAAgB,wBAC3C,GAAG6rD,IAAe,GAChB,OAAOzC,QAAM,KAAK,cAAc,SAAS3rD,EAAKkzG,EAAO,CAChDlzG,IAEDkzG,EAAQ,GAEV9kD,EAAa8kD,EAAQ,EACrBjF,GACN,CAAK,EAEHA,IAEA,SAASA,GAAW,CAElB7/C,EAAa,KAAK,IAAI,EAAGA,CAAU,EAQnC,QADIG,EAAU,GACN9jE,EAAI,EAAGA,EAAI2jE,EAAY,EAAE3jE,EAE/B8jE,EAAQ9jE,CAAC,EAAI,IAAI,OAAOwoH,CAAY,EAKtC,QAAQxoH,EAAI,EAAGA,EAAI2jE,EAAY,EAAE3jE,EAC/B8jE,EAAQ9jE,CAAC,EAAE,iBAAiB,UAAW0oH,EAAa,EAiBtD,IAAIzhH,EAAQ,GACZ,SAASyhH,GAAc5mH,GAAG,CAExB,GAAG,CAAAmF,EAKH,KAAI2R,GAAO9W,GAAE,KACb,GAAG8W,GAAK,MAAO,CAEb,QAAQ5Y,GAAI,EAAGA,GAAI8jE,EAAQ,OAAQ,EAAE9jE,GACnC8jE,EAAQ9jE,EAAC,EAAE,YAEb,OAAAiH,EAAQ,GACDwK,EAAS,KAAM,IAAI8zG,EAAW3sG,GAAK,MAAO,EAAE,CAAC,CACrD,CAGE3X,EAAI,UAAW,EAAGwkD,IACnBxkD,EAAMgnH,EAAexiE,EAAMoiE,CAAG,GAIhC,IAAIlrF,EAAM17B,EAAI,SAAS,EAAE,EAGzBa,GAAE,OAAO,YAAY,CACnB,IAAK66B,EACL,SAAU4rF,CAClB,CAAO,EAEDtnH,EAAI,WAAW0J,EAAO,CAAC,EACxB,CACF,CACH,CAUA,SAASs9G,EAAexiE,EAAMoiE,EAAK,CACjC,IAAI5mH,EAAM,IAAIskH,EAAW9/D,EAAMoiE,CAAG,EAE9Bc,EAAQljE,EAAO,EACnB,OAAIxkD,EAAI,QAAQ0nH,CAAK,GACnB1nH,EAAI,UAAUskH,EAAW,IAAI,UAAUoD,CAAK,EAAGf,EAAO3mH,CAAG,EAG3DA,EAAI,WAAW,GAAKA,EAAI,IAAI0mH,CAAM,EAAE,YAAa,CAAC,EAC3C1mH,CACT,CAYA,SAASmnH,EAAoB3iE,EAAM,CACjC,OAAGA,GAAQ,IAAY,GACpBA,GAAQ,IAAY,GACpBA,GAAQ,IAAY,GACpBA,GAAQ,IAAY,GACpBA,GAAQ,IAAY,EACpBA,GAAQ,IAAY,EACpBA,GAAQ,IAAY,EACpBA,GAAQ,IAAY,EACpBA,GAAQ,IAAY,EACpBA,GAAQ,IAAY,EACpBA,GAAQ,KAAa,EACjB,CACT,CAEA,GAAI,ECzOJ,IAAIyb,QAAQ7gB,QASZ,GAAG,OAAOklE,aAAe,IACvB,IAAIA,aAAarkD,QAAM,KAAK,WAG9B,IAAI,QAAUA,QAAM,KAAK,SAAWrE,wBAAA,EAAoB,KAGpD0M,OAAOrI,QAAM,KAGbM,OAAON,QAAM,KAKjBA,QAAM,IAAMA,QAAM,KAAO,GACRA,QAAM,IAAI,IAAMA,QAAM,IAAMA,QAAM,KAAO,CAAG,EAC7D,IAAI0nD,MAAM1nD,QAAM,IAGZ,aAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAGtC,oBAAsB,CAExB,KAAM,iBACN,SAAUqI,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CAEN,KAAM,yBACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,mBACb,EAAK,CAED,KAAM,qCACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CACN,KAAM,gCACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,IAChB,YAAa,GACb,QAAS,eACf,CAAK,CACL,EAAK,CAED,KAAM,iBACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,YAChB,YAAa,GACb,QAAS,YACb,CAAG,CACH,EAGI,uBAAyB,CAE3B,KAAM,gBACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CAEN,KAAM,wBACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,mBACb,EAAK,CAED,KAAM,wBACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,mBACb,EAAK,CAED,KAAM,+BACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,0BACb,EAAK,CAED,KAAM,gCACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,2BACb,EAAK,CAED,KAAM,uBACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,kBACb,EAAK,CAED,KAAM,uBACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,kBACb,EAAK,CAED,KAAM,0BACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,qBACb,EAAK,CAED,KAAM,0BACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,qBACb,EAAK,CAED,KAAM,4BACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,uBACb,CAAG,CACH,EAGI,sBAAwB,CAE1B,KAAM,eACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CAEN,KAAM,uBACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,kBACb,EAAK,CAED,KAAM,wBACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,QAChB,YAAa,GACb,QAAS,mBACb,CAAG,CACH,EAII,mBAAqBrI,QAAM,IAAI,IAAI,mBAAqB,CAC1D,KAAM,uBACN,SAAUqI,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,SAChB,YAAa,GACb,YAAa,uBACb,MAAO,CAAC,CACN,KAAM,2CACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CACN,KAAM,gCACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,IAChB,YAAa,GACb,QAAS,cACf,CAAK,CACL,EAAK,CAED,KAAM,wCACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,UAChB,YAAa,GACb,MAAO,CAAC,CAEN,KAAM,qDACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,SAChB,YAAa,GACb,SAAU,GACV,YAAa,cACnB,CAAK,CACL,CAAG,CACH,EAGI,oBAAsB,CACxB,KAAM,aACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CACN,KAAM,6BACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CACN,KAAM,iDACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,IAChB,YAAa,GACb,QAAS,qBACf,EAAO,CAED,KAAM,wCACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,KAEhB,QAAS,aACT,SAAU,GACV,YAAa,EACnB,CAAK,CACL,EAAK,CAED,KAAM,oBACN,SAAUA,OAAK,MAAM,UACrB,KAAMA,OAAK,KAAK,YAChB,YAAa,GACb,QAAS,QACb,CAAG,CACH,EAmBI,mBAAqB,SAASj1B,EAAI,CAEpC,IAAIq2B,EACJ,GAAGr2B,EAAG,aAAas0E,MAAI,KACrBj+C,EAAMi+C,MAAI,KAAKt0E,EAAG,SAAS,MACtB,CACL,IAAIiI,EAAQ,IAAI,MAAM,mCAAmC,EACzD,MAAAA,EAAM,UAAYjI,EAAG,UACfiI,CACP,CACD,IAAIssE,EAAWt/C,OAAK,SAASoB,CAAG,EAAE,SAAQ,EAGtCm+C,EAAav/C,OAAK,OACpBA,OAAK,MAAM,UAAWA,OAAK,KAAK,SAAU,GAAM,EAAE,EAChDw/C,EAAkBx/C,OAAK,OACzBA,OAAK,MAAM,UAAWA,OAAK,KAAK,SAAU,GAAM,EAAE,EACpDw/C,EAAgB,MAAM,KAAKx/C,OAAK,OAC9BA,OAAK,MAAM,UAAWA,OAAK,KAAK,IAAK,GAAOs/C,CAAQ,CAAC,EACvDE,EAAgB,MAAM,KAAKx/C,OAAK,OAC9BA,OAAK,MAAM,UAAWA,OAAK,KAAK,KAAM,GAAO,EAAE,CAAC,EAClD,IAAI9hB,EAAS8hB,OAAK,OAChBA,OAAK,MAAM,UAAWA,OAAK,KAAK,YAChC,GAAOj1B,EAAG,SAAS,SAAU,GAC/B,OAAAw0E,EAAW,MAAM,KAAKC,CAAe,EACrCD,EAAW,MAAM,KAAKrhE,CAAM,EAGrB8hB,OAAK,MAAMu/C,CAAU,EAAE,SAAQ,CACxC,EAWI,QAAU,SAAStpH,EAAGiN,EAAKw4F,EAAK,CAClC,GAAGA,EACD,OAAOzlG,EAAE,OAAOiN,EAAI,EAAGA,EAAI,CAAC,EAG9B,GAAG,CAACA,EAAI,GAAK,CAACA,EAAI,EAEhB,OAAOjN,EAAE,OAAOiN,EAAI,EAAGA,EAAI,CAAC,EAI1BA,EAAI,KACNA,EAAI,GAAKA,EAAI,EAAE,IAAIA,EAAI,EAAE,SAAS84G,aAAW,GAAG,CAAC,GAE/C94G,EAAI,KACNA,EAAI,GAAKA,EAAI,EAAE,IAAIA,EAAI,EAAE,SAAS84G,aAAW,GAAG,CAAC,GAE/C94G,EAAI,OACNA,EAAI,KAAOA,EAAI,EAAE,WAAWA,EAAI,CAAC,GAsFnC,IAAIiH,EACJ,GACEA,EAAI,IAAI6xG,aACNrkD,QAAM,KAAK,WAAWA,QAAM,OAAO,SAASz0D,EAAI,EAAE,UAAW,EAAG,CAAC,CAAC,EAClE,EAAE,QACEiH,EAAE,UAAUjH,EAAI,CAAC,GAAK,GAAK,CAACiH,EAAE,IAAIjH,EAAI,CAAC,EAAE,OAAO84G,aAAW,GAAG,GACtE/lH,EAAIA,EAAE,SAASkU,EAAE,OAAOjH,EAAI,EAAGA,EAAI,CAAC,CAAC,EAAE,IAAIA,EAAI,CAAC,EAOhD,QAJIm1F,EAAKpiG,EAAE,IAAIiN,EAAI,CAAC,EAAE,OAAOA,EAAI,GAAIA,EAAI,CAAC,EACtCu8G,EAAKxpH,EAAE,IAAIiN,EAAI,CAAC,EAAE,OAAOA,EAAI,GAAIA,EAAI,CAAC,EAGpCm1F,EAAG,UAAUonB,CAAE,EAAI,GACvBpnB,EAAKA,EAAG,IAAIn1F,EAAI,CAAC,EAInB,IAAIvH,EAAI08F,EAAG,SAASonB,CAAE,EACnB,SAASv8G,EAAI,IAAI,EAAE,IAAIA,EAAI,CAAC,EAC5B,SAASA,EAAI,CAAC,EAAE,IAAIu8G,CAAE,EAGzB,OAAA9jH,EAAIA,EAAE,SAASwO,EAAE,WAAWjH,EAAI,CAAC,CAAC,EAAE,IAAIA,EAAI,CAAC,EAEtCvH,CACT,EA0BA0jH,MAAI,IAAI,QAAU,SAAS7mH,EAAG0K,EAAKw8G,EAAI,CACrC,IAAIhkB,EAAMgkB,EACNC,EAGAhyF,EAAI,KAAK,KAAKzqB,EAAI,EAAE,UAAS,EAAK,CAAC,EAEpCw8G,IAAO,IAASA,IAAO,IAExBhkB,EAAOgkB,IAAO,EACdC,EAAK,kBAAkBnnH,EAAG0K,EAAKw8G,CAAE,IAEjCC,EAAKhoD,QAAM,KAAK,eAChBgoD,EAAG,SAASnnH,CAAC,GAgBf,QAXIvC,EAAI,IAAI+lH,aAAW2D,EAAG,MAAK,EAAI,EAAE,EAGjChkH,EAAI,QAAQ1F,EAAGiN,EAAKw4F,CAAG,EAKvBkkB,EAAOjkH,EAAE,SAAS,EAAE,EACpBkkH,EAAKloD,QAAM,KAAK,aAAY,EAC5BiC,EAAQjsC,EAAI,KAAK,KAAKiyF,EAAK,OAAS,CAAC,EACnChmD,EAAQ,GACZimD,EAAG,QAAQ,CAAI,EACf,EAAEjmD,EAEJ,OAAAimD,EAAG,SAASloD,QAAM,KAAK,WAAWioD,CAAI,CAAC,EAChCC,EAAG,UACZ,EAoBAR,MAAI,IAAI,QAAU,SAASQ,EAAI38G,EAAKw4F,EAAKokB,EAAI,CAE3C,IAAInyF,EAAI,KAAK,KAAKzqB,EAAI,EAAE,UAAS,EAAK,CAAC,EAGvC,GAAG28G,EAAG,SAAWlyF,EAAG,CAClB,IAAIqlB,EAAQ,IAAI,MAAM,sCAAsC,EAC5D,MAAAA,EAAM,OAAS6sE,EAAG,OAClB7sE,EAAM,SAAWrlB,EACXqlB,CACP,CAID,IAAIr3C,EAAI,IAAIqgH,aAAWrkD,QAAM,KAAK,aAAakoD,CAAE,EAAE,QAAS,EAAE,EAI9D,GAAGlkH,EAAE,UAAUuH,EAAI,CAAC,GAAK,EACvB,MAAM,IAAI,MAAM,+BAA+B,EAYjD,QARIjN,EAAI,QAAQ0F,EAAGuH,EAAKw4F,CAAG,EAKvBqkB,EAAO9pH,EAAE,SAAS,EAAE,EACpB0pH,EAAKhoD,QAAM,KAAK,aAAY,EAC5BiC,EAAQjsC,EAAI,KAAK,KAAKoyF,EAAK,OAAS,CAAC,EACnCnmD,EAAQ,GACZ+lD,EAAG,QAAQ,CAAI,EACf,EAAE/lD,EAIJ,OAFA+lD,EAAG,SAAShoD,QAAM,KAAK,WAAWooD,CAAI,CAAC,EAEpCD,IAAO,GAED,kBAAkBH,EAAG,SAAU,EAAEz8G,EAAKw4F,CAAG,EAI3CikB,EAAG,UACZ,EAgBAN,MAAI,IAAI,6BAA+B,SAASnjE,EAAM3jD,EAAGgW,EAAS,CAI7D,OAAO2tC,GAAU,WAClBA,EAAO,SAASA,EAAM,EAAE,GAE1BA,EAAOA,GAAQ,KAGf3tC,EAAUA,GAAW,GACrB,IAAI2uG,EAAO3uG,EAAQ,MAAQopD,QAAM,OAC7B2mD,EAAM,CAER,UAAW,SAASroH,EAAG,CAErB,QADIyE,EAAIwiH,EAAK,aAAajnH,EAAE,MAAM,EAC1BQ,EAAI,EAAGA,EAAIR,EAAE,OAAQ,EAAEQ,EAC7BR,EAAEQ,CAAC,EAAIiE,EAAE,WAAWjE,CAAC,CAExB,CACL,EAEMkkE,EAAYpsD,EAAQ,WAAa,WAGjC8pD,EACJ,GAAGsC,IAAc,WACftC,EAAO,CACL,UAAWsC,EACX,MAAO,EACP,KAAMze,EACN,IAAKoiE,EACL,KAAM/lH,GAAK,MACX,EAAG,IAAIyjH,aAAW,IAAI,EACtB,EAAG,KACH,EAAG,KACH,MAAO9/D,GAAQ,EACf,MAAOA,GAAQA,GAAQ,GACvB,QAAS,EACT,IAAK,KACL,KAAM,IACZ,EACImc,EAAK,EAAE,QAAQA,EAAK,IAAI,MAExB,OAAM,IAAI,MAAM,qCAAuCsC,CAAS,EAGlE,OAAOtC,CACT,EA+BAgnD,MAAI,IAAI,2BAA6B,SAASntG,EAAOxV,EAAG,CAEjD,cAAewV,IAClBA,EAAM,UAAY,YAUpB,IAAIksG,EAAS,IAAIpC,aAAW,IAAI,EAChCoC,EAAO,QAAQ,EAAE,EAQjB,QAPIO,EAAW,EACXN,EAAQ,SAASpoH,EAAG0F,EAAG,CAAC,OAAO1F,EAAI0F,CAAE,EAGrC2vF,EAAK,CAAC,IAAI,KACVC,EACApT,EAAQ,EACNjmE,EAAM,OAAS,OAASxV,GAAK,GAAKy7E,EAAQz7E,IAAI,CAElD,GAAGwV,EAAM,QAAU,EAAG,CAQpB,IAAIgqC,EAAQhqC,EAAM,IAAM,KAAQA,EAAM,MAAQA,EAAM,MAChDktG,EAAQljE,EAAO,EAGhBhqC,EAAM,UAAY,GACnBA,EAAM,IAAM,IAAI8pG,aAAW9/D,EAAMhqC,EAAM,GAAG,EAEtCA,EAAM,IAAI,QAAQktG,CAAK,GACzBltG,EAAM,IAAI,UACR8pG,aAAW,IAAI,UAAUoD,CAAK,EAAGf,EAAOnsG,EAAM,GAAG,EAGrDA,EAAM,IAAI,WAAW,GAAKA,EAAM,IAAI,IAAIksG,CAAM,EAAE,UAAW,EAAE,CAAC,EAC9DO,EAAW,EAEX,EAAEzsG,EAAM,SACAA,EAAM,UAAY,EAEvBA,EAAM,IAAI,UAAS,EAAKgqC,EAEzBhqC,EAAM,QAAU,EAERA,EAAM,IAAI,gBAClB,qBAAqBA,EAAM,IAAI,UAAS,CAAE,CAAC,EAC3C,EAAEA,EAAM,QAGRA,EAAM,IAAI,WAAW,aAAaysG,IAAa,CAAC,EAAG,CAAC,EAE9CzsG,EAAM,UAAY,EAE1BA,EAAM,QACHA,EAAM,IAAI,SAAS8pG,aAAW,GAAG,EAAE,IAAI9pG,EAAM,CAAC,EAC5C,UAAU8pG,aAAW,GAAG,IAAM,EAAK,EAAI,EACpC9pG,EAAM,UAAY,IAE1BA,EAAM,QAAU,EACbA,EAAM,IAAM,KACbA,EAAM,EAAIA,EAAM,IAEhBA,EAAM,EAAIA,EAAM,IAIfA,EAAM,IAAM,MAAQA,EAAM,IAAM,MACjC,EAAEA,EAAM,MAEVA,EAAM,IAAM,KAEpB,SAAcA,EAAM,QAAU,EAErBA,EAAM,EAAE,UAAUA,EAAM,CAAC,EAAI,IAC9BA,EAAM,IAAMA,EAAM,EAClBA,EAAM,EAAIA,EAAM,EAChBA,EAAM,EAAIA,EAAM,KAElB,EAAEA,EAAM,cACAA,EAAM,QAAU,EAExBA,EAAM,GAAKA,EAAM,EAAE,SAAS8pG,aAAW,GAAG,EAC1C9pG,EAAM,GAAKA,EAAM,EAAE,SAAS8pG,aAAW,GAAG,EAC1C9pG,EAAM,IAAMA,EAAM,GAAG,SAASA,EAAM,EAAE,EACtC,EAAEA,EAAM,cACAA,EAAM,QAAU,EAErBA,EAAM,IAAI,IAAIA,EAAM,CAAC,EAAE,UAAU8pG,aAAW,GAAG,IAAM,EAEtD,EAAE9pG,EAAM,OAGRA,EAAM,EAAI,KACVA,EAAM,EAAI,KACVA,EAAM,MAAQ,WAERA,EAAM,QAAU,EAExBA,EAAM,EAAIA,EAAM,EAAE,SAASA,EAAM,CAAC,EAG/BA,EAAM,EAAE,UAAS,IAAOA,EAAM,KAE/B,EAAEA,EAAM,OAGRA,EAAM,EAAI,KACVA,EAAM,MAAQ,WAERA,EAAM,QAAU,EAAG,CAE3B,IAAIrZ,EAAIqZ,EAAM,EAAE,WAAWA,EAAM,GAAG,EACpCA,EAAM,KAAO,CACX,WAAYmtG,MAAI,IAAI,cAClBntG,EAAM,EAAGA,EAAM,EAAGrZ,EAAGqZ,EAAM,EAAGA,EAAM,EACpCrZ,EAAE,IAAIqZ,EAAM,EAAE,EAAGrZ,EAAE,IAAIqZ,EAAM,EAAE,EAC/BA,EAAM,EAAE,WAAWA,EAAM,CAAC,CAAC,EAC7B,UAAWmtG,MAAI,IAAI,aAAantG,EAAM,EAAGA,EAAM,CAAC,CACxD,CACK,CAGDq5E,EAAK,CAAC,IAAI,KACVpT,GAASoT,EAAKD,EACdA,EAAKC,CACN,CAED,OAAOr5E,EAAM,OAAS,IACxB,EAgCAmtG,MAAI,IAAI,gBAAkB,SAASnjE,EAAM3jD,EAAGgW,EAASrG,EAAU,CAgD7D,GA9CG,UAAU,SAAW,EACnB,OAAOg0C,GAAS,UACjB3tC,EAAU2tC,EACVA,EAAO,QACC,OAAOA,GAAS,aACxBh0C,EAAWg0C,EACXA,EAAO,QAED,UAAU,SAAW,EAE1B,OAAOA,GAAS,SACd,OAAO3jD,GAAM,YACd2P,EAAW3P,EACXA,EAAI,QACI,OAAOA,GAAM,WACrBgW,EAAUhW,EACVA,EAAI,SAGNgW,EAAU2tC,EACVh0C,EAAW3P,EACX2jD,EAAO,OACP3jD,EAAI,QAEE,UAAU,SAAW,IAE1B,OAAOA,GAAM,SACX,OAAOgW,GAAY,aACpBrG,EAAWqG,EACXA,EAAU,SAGZrG,EAAWqG,EACXA,EAAUhW,EACVA,EAAI,SAGRgW,EAAUA,GAAW,GAClB2tC,IAAS,SACVA,EAAO3tC,EAAQ,MAAQ,MAEtBhW,IAAM,SACPA,EAAIgW,EAAQ,GAAK,OAIhB,CAACopD,QAAM,QAAQ,mBAAqB,CAACppD,EAAQ,MAC9C2tC,GAAQ,KAAOA,GAAQ,QAAU3jD,IAAM,OAAWA,IAAM,IACxD,GAAG2P,EAAU,CAEX,GAAG,kBAAkB,iBAAiB,EACpC,OAAO,QAAQ,gBAAgB,MAAO,CACpC,cAAeg0C,EACf,eAAgB3jD,EAChB,kBAAmB,CACjB,KAAM,OACN,OAAQ,KACT,EACD,mBAAoB,CAClB,KAAM,QACN,OAAQ,KACT,CACX,EAAW,SAASyT,EAAK0vF,EAAKE,EAAM,CAC1B,GAAG5vF,EACD,OAAO9D,EAAS8D,CAAG,EAErB9D,EAAS,KAAM,CACb,WAAYm3G,MAAI,kBAAkBzjB,CAAI,EACtC,UAAWyjB,MAAI,iBAAiB3jB,CAAG,CAC/C,CAAW,CACX,CAAS,EAEH,GAAG,oBAAoB,aAAa,GAClC,oBAAoB,WAAW,EAE/B,OAAOzjC,OAAK,YAAY,OAAO,OAAO,YAAY,CAChD,KAAM,oBACN,cAAe/b,EACf,eAAgB,iBAAiB3jD,CAAC,EAClC,KAAM,CAAC,KAAM,SAAS,CACvB,EAAE,GAA+B,CAAC,OAAQ,QAAQ,CAAC,EACnD,KAAK,SAASynH,EAAM,CACnB,OAAO/nD,OAAK,YAAY,OAAO,OAAO,UACpC,QAAS+nD,EAAK,UAAU,CAE3B,GAAE,KAAK,OAAW,SAASh0G,EAAK,CAC/B9D,EAAS8D,CAAG,CACtB,CAAS,EAAE,KAAK,SAASi0G,EAAO,CACtB,GAAGA,EAAO,CACR,IAAIhJ,EAAaoI,MAAI,mBACnBr/C,OAAK,QAAQrI,QAAM,KAAK,aAAasoD,CAAK,CAAC,CAAC,EAC9C/3G,EAAS,KAAM,CACb,WAAY+uG,EACZ,UAAWoI,MAAI,gBAAgBpI,EAAW,EAAGA,EAAW,CAAC,CACvE,CAAa,CACF,CACX,CAAS,EAEH,GAAG,sBAAsB,aAAa,GACpC,sBAAsB,WAAW,EAAG,CACpC,IAAIiJ,EAAQjoD,OAAK,YAAY,SAAS,OAAO,YAAY,CACvD,KAAM,oBACN,cAAe/b,EACf,eAAgB,iBAAiB3jD,CAAC,EAClC,KAAM,CAAC,KAAM,SAAS,CACvB,EAAE,GAA+B,CAAC,OAAQ,QAAQ,CAAC,EACpD2nH,EAAM,WAAa,SAAS3nH,EAAG,CAC7B,IAAIynH,EAAOznH,EAAE,OAAO,OAChB4nH,EAAWloD,OAAK,YAAY,SAAS,OAAO,UAC9C,QAAS+nD,EAAK,UAAU,EAC1BG,EAAS,WAAa,SAAS5nH,EAAG,CAChC,IAAI0nH,EAAQ1nH,EAAE,OAAO,OACjB0+G,EAAaoI,MAAI,mBACnBr/C,OAAK,QAAQrI,QAAM,KAAK,aAAasoD,CAAK,CAAC,CAAC,EAC9C/3G,EAAS,KAAM,CACb,WAAY+uG,EACZ,UAAWoI,MAAI,gBAAgBpI,EAAW,EAAGA,EAAW,CAAC,CACvE,CAAa,CACb,EACUkJ,EAAS,QAAU,SAASn0G,EAAK,CAC/B9D,EAAS8D,CAAG,CACxB,CACA,EACQk0G,EAAM,QAAU,SAASl0G,EAAK,CAC5B9D,EAAS8D,CAAG,CACtB,EACQ,MACD,CACP,SAES,kBAAkB,qBAAqB,EAAG,CAC3C,IAAIo0G,EAAU,QAAQ,oBAAoB,MAAO,CAC/C,cAAelkE,EACf,eAAgB3jD,EAChB,kBAAmB,CACjB,KAAM,OACN,OAAQ,KACT,EACD,mBAAoB,CAClB,KAAM,QACN,OAAQ,KACT,CACX,CAAS,EACD,MAAO,CACL,WAAY8mH,MAAI,kBAAkBe,EAAQ,UAAU,EACpD,UAAWf,MAAI,iBAAiBe,EAAQ,SAAS,CAC3D,CACO,EAKL,IAAIluG,EAAQmtG,MAAI,IAAI,6BAA6BnjE,EAAM3jD,EAAGgW,CAAO,EACjE,GAAG,CAACrG,EACFm3G,aAAI,IAAI,2BAA2BntG,EAAO,CAAC,EACpCA,EAAM,KAEf,iBAAiBA,EAAO3D,EAASrG,CAAQ,CAC3C,EAUAm3G,MAAI,gBAAkBA,MAAI,IAAI,aAAe,SAAS,EAAG9mH,EAAG,CAC1D,IAAI2K,EAAM,CACR,EACA,EAAG3K,CACP,EAmBE,OAAA2K,EAAI,QAAU,SAASmM,EAAMgxG,EAAQC,EAAe,CAOlD,GANG,OAAOD,GAAW,SACnBA,EAASA,EAAO,cACRA,IAAW,SACnBA,EAAS,oBAGRA,IAAW,mBACZA,EAAS,CACP,OAAQ,SAAS7nH,EAAG0K,EAAKw4F,EAAK,CAC5B,OAAO,kBAAkBljG,EAAG0K,EAAK,CAAI,EAAE,SAAQ,CAChD,CACT,UACcm9G,IAAW,YAAcA,IAAW,aAC5CA,EAAS,CACP,OAAQ,SAAS7nH,EAAG0K,EAAK,CACvB,OAAOy0D,QAAM,MAAM,gBAAgBz0D,EAAK1K,EAAG8nH,CAAa,CACzD,CACT,UACc,CAAC,MAAO,OAAQ,OAAQ,IAAI,EAAE,QAAQD,CAAM,IAAM,GAC1DA,EAAS,CAAC,OAAQ,SAAS9nH,EAAG,CAAC,OAAOA,CAAE,CAAC,UACjC,OAAO8nH,GAAW,SAC1B,MAAM,IAAI,MAAM,mCAAqCA,EAAS,IAAI,EAIpE,IAAI9nH,EAAI8nH,EAAO,OAAOhxG,EAAMnM,EAAK,EAAI,EACrC,OAAOm8G,MAAI,IAAI,QAAQ9mH,EAAG2K,EAAK,EAAI,CACvC,EAqCEA,EAAI,OAAS,SAASg7C,EAAQmL,EAAWg3D,EAAQ9xG,EAAS,CACrD,OAAO8xG,GAAW,SACnBA,EAASA,EAAO,cACRA,IAAW,SACnBA,EAAS,qBAER9xG,IAAY,SACbA,EAAU,CACR,qBAAsB,EAC9B,GAES,yBAA0BA,IAC7BA,EAAQ,qBAAuB,IAG9B8xG,IAAW,oBACZA,EAAS,CACP,OAAQ,SAASniE,EAAQrlD,EAAG,CAE1BA,EAAI,kBAAkBA,EAAGqK,EAAK,EAAI,EAElC,IAAI1H,EAAMwkE,OAAK,QAAQnnE,EAAG,CACxB,cAAe0V,EAAQ,oBACnC,CAAW,EAGG6zD,EAAU,GACVrhE,EAAS,GACb,GAAG,CAACi/D,OAAK,SAASxkE,EAAK,oBAAqB4mE,EAASrhE,CAAM,EAAG,CAC5D,IAAIiyC,EAAQ,IAAI,MACd,2EACmB,EACrB,MAAAA,EAAM,OAASjyC,EACTiyC,CACP,CAID,IAAIouB,EAAMpB,OAAK,SAASoC,EAAQ,mBAAmB,EACnD,GAAG,EAAEhB,IAAQzJ,QAAM,KAAK,KACtByJ,IAAQzJ,QAAM,KAAK,KACnByJ,IAAQzJ,QAAM,KAAK,MACnByJ,IAAQzJ,QAAM,KAAK,QACnByJ,IAAQzJ,QAAM,KAAK,QACnByJ,IAAQzJ,QAAM,KAAK,QACnByJ,IAAQzJ,QAAM,KAAK,QACnByJ,IAAQzJ,QAAM,KAAK,YAAY,GAC/ByJ,IAAQzJ,QAAM,KAAK,YAAY,GAAI,CACnC,IAAI3kB,EAAQ,IAAI,MACd,uDAAuD,EACzD,MAAAA,EAAM,IAAMouB,EACNpuB,CACP,CAGD,IAAGouB,IAAQzJ,QAAM,KAAK,KAAOyJ,IAAQzJ,QAAM,KAAK,MAC3C,EAAE,eAAgByK,GACnB,MAAM,IAAI,MACR,wHAE8C,EAKpD,OAAOlkB,IAAWkkB,EAAQ,MAC3B,CACT,GACci+C,IAAW,QAAUA,IAAW,QAAUA,IAAW,QAC7DA,EAAS,CACP,OAAQ,SAASniE,EAAQrlD,EAAG,CAE1B,OAAAA,EAAI,kBAAkBA,EAAGqK,EAAK,EAAI,EAC3Bg7C,IAAWrlD,CACnB,CACT,GAII,IAAIA,EAAIwmH,MAAI,IAAI,QAAQh2D,EAAWnmD,EAAK,GAAM,EAAK,EACnD,OAAOm9G,EAAO,OAAOniE,EAAQrlD,EAAGqK,EAAI,EAAE,UAAS,CAAE,CACrD,EAESA,CACT,EAiBAm8G,MAAI,iBAAmBA,MAAI,IAAI,cAAgB,SAC7C,EAAG9mH,EAAGM,EAAG6T,EAAG8jF,EAAG+vB,EAAIC,EAAIC,EAAM,CAC7B,IAAIv9G,EAAM,CACR,EACA,EAAG3K,EACH,EAAGM,EACH,EAAG6T,EACH,EAAG8jF,EACH,GAAI+vB,EACJ,GAAIC,EACJ,KAAMC,CACV,EAeE,OAAAv9G,EAAI,QAAU,SAASmM,EAAMgxG,EAAQC,EAAe,CAC/C,OAAOD,GAAW,SACnBA,EAASA,EAAO,cACRA,IAAW,SACnBA,EAAS,oBAIX,IAAIxnH,EAAIwmH,MAAI,IAAI,QAAQhwG,EAAMnM,EAAK,GAAO,EAAK,EAE/C,GAAGm9G,IAAW,mBACZA,EAAS,CAAC,OAAQ,iBAAiB,UAC3BA,IAAW,YAAcA,IAAW,aAC5CA,EAAS,CACP,OAAQ,SAASxnH,EAAGqK,EAAK,CACvB,OAAOy0D,QAAM,MAAM,gBAAgBz0D,EAAKrK,EAAGynH,CAAa,CACzD,CACT,UACc,CAAC,MAAO,OAAQ,OAAQ,IAAI,EAAE,QAAQD,CAAM,IAAM,GAC1DA,EAAS,CAAC,OAAQ,SAASxnH,EAAG,CAAC,OAAOA,CAAE,CAAC,MAEzC,OAAM,IAAI,MAAM,mCAAqCwnH,EAAS,IAAI,EAIpE,OAAOA,EAAO,OAAOxnH,EAAGqK,EAAK,EAAK,CACtC,EAqBEA,EAAI,KAAO,SAAS6nC,EAAIs1E,EAAQ,CAO9B,IAAIX,EAAK,GAEN,OAAOW,GAAW,WACnBA,EAASA,EAAO,eAGfA,IAAW,QAAaA,IAAW,qBACpCA,EAAS,CAAC,OAAQ,kBAAkB,EACpCX,EAAK,IACGW,IAAW,QAAUA,IAAW,QAAUA,IAAW,QAC7DA,EAAS,CAAC,OAAQ,UAAW,CAAC,OAAOt1E,CAAG,CAAC,EACzC20E,EAAK,GAIP,IAAI7mH,EAAIwnH,EAAO,OAAOt1E,EAAI7nC,EAAI,EAAE,UAAS,CAAE,EAC3C,OAAOm8G,MAAI,IAAI,QAAQxmH,EAAGqK,EAAKw8G,CAAE,CACrC,EAESx8G,CACT,EASAm8G,MAAI,kBAAoB,SAASqB,EAAQ,CAEvC,OAAO1gD,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,SAAU,GAAM,CAEjEA,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnDA,OAAK,aAAa,CAAC,EAAE,SAAQ,CAAE,EAEjCA,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,SAAU,GAAM,CAC1DA,OAAK,OACHA,OAAK,MAAM,UAAWA,OAAK,KAAK,IAAK,GACrCA,OAAK,SAASq/C,MAAI,KAAK,aAAa,EAAE,UAAU,EAClDr/C,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,KAAM,GAAO,EAAE,CACjE,CAAK,EAEDA,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,YAAa,GACvDA,OAAK,MAAM0gD,CAAM,EAAE,SAAQ,CAAE,CACnC,CAAG,CACH,EAUArB,MAAI,mBAAqB,SAAS7jH,EAAK,CAErC,IAAI4mE,EAAU,GACVrhE,EAAS,GAQb,GAPGi/D,OAAK,SAASxkE,EAAK,oBAAqB4mE,EAASrhE,CAAM,IACxDvF,EAAMwkE,OAAK,QAAQrI,QAAM,KAAK,aAAayK,EAAQ,UAAU,CAAC,GAIhEA,EAAU,GACVrhE,EAAS,GACN,CAACi/D,OAAK,SAASxkE,EAAK,uBAAwB4mE,EAASrhE,CAAM,EAAG,CAC/D,IAAIiyC,EAAQ,IAAI,MAAM,0EAC6B,EACnD,MAAAA,EAAM,OAASjyC,EACTiyC,CACP,CAKD,IAAIt2C,EAAGnE,EAAGM,EAAG6T,EAAG8jF,EAAG+vB,EAAIC,EAAIC,EAC3B,OAAA/jH,EAAIi7D,QAAM,KAAK,aAAayK,EAAQ,iBAAiB,EAAE,QACvD7pE,EAAIo/D,QAAM,KAAK,aAAayK,EAAQ,wBAAwB,EAAE,QAC9DvpE,EAAI8+D,QAAM,KAAK,aAAayK,EAAQ,yBAAyB,EAAE,QAC/D11D,EAAIirD,QAAM,KAAK,aAAayK,EAAQ,gBAAgB,EAAE,QACtDouB,EAAI74B,QAAM,KAAK,aAAayK,EAAQ,gBAAgB,EAAE,QACtDm+C,EAAK5oD,QAAM,KAAK,aAAayK,EAAQ,mBAAmB,EAAE,QAC1Do+C,EAAK7oD,QAAM,KAAK,aAAayK,EAAQ,mBAAmB,EAAE,QAC1Dq+C,EAAO9oD,QAAM,KAAK,aAAayK,EAAQ,qBAAqB,EAAE,QAGvDi9C,MAAI,iBACT,IAAIrD,aAAWt/G,EAAG,EAAE,EACpB,IAAIs/G,aAAWzjH,EAAG,EAAE,EACpB,IAAIyjH,aAAWnjH,EAAG,EAAE,EACpB,IAAImjH,aAAWtvG,EAAG,EAAE,EACpB,IAAIsvG,aAAWxrB,EAAG,EAAE,EACpB,IAAIwrB,aAAWuE,EAAI,EAAE,EACrB,IAAIvE,aAAWwE,EAAI,EAAE,EACrB,IAAIxE,aAAWyE,EAAM,EAAE,CAAC,CAC5B,EASApB,MAAI,iBAAmBA,MAAI,0BAA4B,SAASn8G,EAAK,CAEnE,OAAO88D,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,SAAU,GAAM,CAEjEA,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnDA,OAAK,aAAa,CAAC,EAAE,SAAQ,CAAE,EAEjCA,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnD,WAAW98D,EAAI,CAAC,CAAC,EAEnB88D,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnD,WAAW98D,EAAI,CAAC,CAAC,EAEnB88D,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnD,WAAW98D,EAAI,CAAC,CAAC,EAEnB88D,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnD,WAAW98D,EAAI,CAAC,CAAC,EAEnB88D,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnD,WAAW98D,EAAI,CAAC,CAAC,EAEnB88D,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnD,WAAW98D,EAAI,EAAE,CAAC,EAEpB88D,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnD,WAAW98D,EAAI,EAAE,CAAC,EAEpB88D,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnD,WAAW98D,EAAI,IAAI,CAAC,CAC1B,CAAG,CACH,EASAm8G,MAAI,kBAAoB,SAAS7jH,EAAK,CAEpC,IAAI4mE,EAAU,GACVrhE,EAAS,GACb,GAAGi/D,OAAK,SAASxkE,EAAK,mBAAoB4mE,EAASrhE,CAAM,EAAG,CAE1D,IAAIqgE,EAAMpB,OAAK,SAASoC,EAAQ,YAAY,EAC5C,GAAGhB,IAAQi+C,MAAI,KAAK,cAAe,CACjC,IAAIrsE,EAAQ,IAAI,MAAM,sCAAsC,EAC5D,MAAAA,EAAM,IAAMouB,EACNpuB,CACP,CACDx3C,EAAM4mE,EAAQ,YACf,CAID,GADArhE,EAAS,GACN,CAACi/D,OAAK,SAASxkE,EAAK,sBAAuB4mE,EAASrhE,CAAM,EAAG,CAC9D,IAAIiyC,EAAQ,IAAI,MAAM,wEAC4B,EAClD,MAAAA,EAAM,OAASjyC,EACTiyC,CACP,CAGD,IAAIt2C,EAAIi7D,QAAM,KAAK,aAAayK,EAAQ,gBAAgB,EAAE,QACtD7pE,EAAIo/D,QAAM,KAAK,aAAayK,EAAQ,iBAAiB,EAAE,QAG3D,OAAOi9C,MAAI,gBACT,IAAIrD,aAAWt/G,EAAG,EAAE,EACpB,IAAIs/G,aAAWzjH,EAAG,EAAE,CAAC,CACzB,EASA8mH,MAAI,gBAAkBA,MAAI,gCAAkC,SAASn8G,EAAK,CAExE,OAAO88D,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,SAAU,GAAM,CAEjEA,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,SAAU,GAAM,CAE1DA,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,IAAK,GAC/CA,OAAK,SAASq/C,MAAI,KAAK,aAAa,EAAE,UAAU,EAElDr/C,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,KAAM,GAAO,EAAE,CACjE,CAAK,EAEDA,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,UAAW,GAAO,CAC5Dq/C,MAAI,wBAAwBn8G,CAAG,CACrC,CAAK,CACL,CAAG,CACH,EASAm8G,MAAI,wBAA0B,SAASn8G,EAAK,CAE1C,OAAO88D,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,SAAU,GAAM,CAEjEA,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnD,WAAW98D,EAAI,CAAC,CAAC,EAEnB88D,OAAK,OAAOA,OAAK,MAAM,UAAWA,OAAK,KAAK,QAAS,GACnD,WAAW98D,EAAI,CAAC,CAAC,CACvB,CAAG,CACH,EAYA,SAAS,kBAAkB1K,EAAG0K,EAAKw8G,EAAI,CACrC,IAAIC,EAAKhoD,QAAM,KAAK,aAAY,EAG5BhqC,EAAI,KAAK,KAAKzqB,EAAI,EAAE,UAAS,EAAK,CAAC,EAGvC,GAAG1K,EAAE,OAAUm1B,EAAI,GAAK,CACtB,IAAIqlB,EAAQ,IAAI,MAAM,8CAA8C,EACpE,MAAAA,EAAM,OAASx6C,EAAE,OACjBw6C,EAAM,IAAMrlB,EAAI,GACVqlB,CACP,CAmBD2sE,EAAG,QAAQ,CAAI,EACfA,EAAG,QAAQD,CAAE,EAGb,IAAIvK,EAASxnF,EAAI,EAAIn1B,EAAE,OACnBmoH,EAEJ,GAAGjB,IAAO,GAAQA,IAAO,EAAM,CAC7BiB,EAAWjB,IAAO,EAAQ,EAAO,IACjC,QAAQjpH,EAAI,EAAGA,EAAI0+G,EAAQ,EAAE1+G,EAC3BkpH,EAAG,QAAQgB,CAAO,CAExB,KAGI,MAAMxL,EAAS,GAAG,CAGhB,QAFIyL,EAAW,EACXC,EAAWlpD,QAAM,OAAO,SAASw9C,CAAM,EACnC1+G,EAAI,EAAGA,EAAI0+G,EAAQ,EAAE1+G,EAC3BkqH,EAAUE,EAAS,WAAWpqH,CAAC,EAC5BkqH,IAAY,EACb,EAAEC,EAEFjB,EAAG,QAAQgB,CAAO,EAGtBxL,EAASyL,CACV,CAIH,OAAAjB,EAAG,QAAQ,CAAI,EACfA,EAAG,SAASnnH,CAAC,EAENmnH,CACT,CAYA,SAAS,kBAAkB9B,EAAI36G,EAAKw4F,EAAKokB,EAAI,CAE3C,IAAInyF,EAAI,KAAK,KAAKzqB,EAAI,EAAE,UAAS,EAAK,CAAC,EAanCy8G,EAAKhoD,QAAM,KAAK,aAAakmD,CAAE,EAC/Bh+G,EAAQ8/G,EAAG,UACXD,EAAKC,EAAG,UACZ,GAAG9/G,IAAU,GACV67F,GAAOgkB,IAAO,GAAQA,IAAO,GAC7B,CAAChkB,GAAOgkB,GAAM,GACdhkB,GAAOgkB,IAAO,GAAQ,OAAOI,EAAQ,IACtC,MAAM,IAAI,MAAM,8BAA8B,EAGhD,IAAI3K,EAAS,EACb,GAAGuK,IAAO,EAAM,CAEdvK,EAASxnF,EAAI,EAAImyF,EACjB,QAAQrpH,EAAI,EAAGA,EAAI0+G,EAAQ,EAAE1+G,EAC3B,GAAGkpH,EAAG,QAAS,IAAK,EAClB,MAAM,IAAI,MAAM,8BAA8B,CAGtD,SAAYD,IAAO,EAGf,IADAvK,EAAS,EACHwK,EAAG,OAAQ,EAAG,GAAG,CACrB,GAAGA,EAAG,QAAS,IAAK,IAAM,CACxB,EAAEA,EAAG,KACL,KACD,CACD,EAAExK,CACH,SACOuK,IAAO,EAGf,IADAvK,EAAS,EACHwK,EAAG,OAAQ,EAAG,GAAG,CACrB,GAAGA,EAAG,QAAS,IAAK,EAAM,CACxB,EAAEA,EAAG,KACL,KACD,CACD,EAAExK,CACH,CAIH,IAAIjV,EAAOyf,EAAG,UACd,GAAGzf,IAAS,GAAQiV,IAAYxnF,EAAI,EAAIgyF,EAAG,OAAM,EAC/C,MAAM,IAAI,MAAM,8BAA8B,EAGhD,OAAOA,EAAG,UACZ,CAgBA,SAAS,iBAAiBztG,EAAO3D,EAASrG,EAAU,CAC/C,OAAOqG,GAAY,aACpBrG,EAAWqG,EACXA,EAAU,IAEZA,EAAUA,GAAW,GAErB,IAAI8nC,EAAO,CACT,UAAW,CACT,KAAM9nC,EAAQ,WAAa,WAC3B,QAAS,CACP,QAASA,EAAQ,SAAW,EAC5B,SAAUA,EAAQ,UAAY,IAC9B,aAAcA,EAAQ,YACvB,CACF,CACL,EACK,SAAUA,IACX8nC,EAAK,KAAO9nC,EAAQ,MAGtB0rG,IAEA,SAASA,GAAW,CAElB6G,EAAS5uG,EAAM,MAAO,SAASlG,EAAKtU,EAAK,CACvC,GAAGsU,EACD,OAAO9D,EAAS8D,CAAG,EAGrB,GADAkG,EAAM,EAAIxa,EACPwa,EAAM,IAAM,KACb,OAAO2oD,EAAO7uD,EAAKkG,EAAM,CAAC,EAE5B4uG,EAAS5uG,EAAM,MAAO2oD,CAAM,CAClC,CAAK,CACF,CAED,SAASimD,EAAS5kE,EAAMh0C,EAAU,CAChCyvD,QAAM,MAAM,sBAAsBzb,EAAM7F,EAAMnuC,CAAQ,CACvD,CAED,SAAS2yD,EAAO7uD,EAAKtU,EAAK,CACxB,GAAGsU,EACD,OAAO9D,EAAS8D,CAAG,EAOrB,GAHAkG,EAAM,EAAIxa,EAGPwa,EAAM,EAAE,UAAUA,EAAM,CAAC,EAAI,EAAG,CACjC,IAAI3a,EAAM2a,EAAM,EAChBA,EAAM,EAAIA,EAAM,EAChBA,EAAM,EAAI3a,CACX,CAGD,GAAG2a,EAAM,EAAE,SAAS8pG,aAAW,GAAG,EAAE,IAAI9pG,EAAM,CAAC,EAC5C,UAAU8pG,aAAW,GAAG,IAAM,EAAG,CAClC9pG,EAAM,EAAI,KACV+nG,IACA,MACD,CAGD,GAAG/nG,EAAM,EAAE,SAAS8pG,aAAW,GAAG,EAAE,IAAI9pG,EAAM,CAAC,EAC5C,UAAU8pG,aAAW,GAAG,IAAM,EAAG,CAClC9pG,EAAM,EAAI,KACV4uG,EAAS5uG,EAAM,MAAO2oD,CAAM,EAC5B,MACD,CAQD,GALA3oD,EAAM,GAAKA,EAAM,EAAE,SAAS8pG,aAAW,GAAG,EAC1C9pG,EAAM,GAAKA,EAAM,EAAE,SAAS8pG,aAAW,GAAG,EAC1C9pG,EAAM,IAAMA,EAAM,GAAG,SAASA,EAAM,EAAE,EAGnCA,EAAM,IAAI,IAAIA,EAAM,CAAC,EAAE,UAAU8pG,aAAW,GAAG,IAAM,EAAG,CAEzD9pG,EAAM,EAAIA,EAAM,EAAI,KACpB+nG,IACA,MACD,CAID,GADA/nG,EAAM,EAAIA,EAAM,EAAE,SAASA,EAAM,CAAC,EAC/BA,EAAM,EAAE,UAAS,IAAOA,EAAM,KAAM,CAErCA,EAAM,EAAI,KACV4uG,EAAS5uG,EAAM,MAAO2oD,CAAM,EAC5B,MACD,CAGD,IAAIhiE,EAAIqZ,EAAM,EAAE,WAAWA,EAAM,GAAG,EACpCA,EAAM,KAAO,CACX,WAAYmtG,MAAI,IAAI,cAClBntG,EAAM,EAAGA,EAAM,EAAGrZ,EAAGqZ,EAAM,EAAGA,EAAM,EACpCrZ,EAAE,IAAIqZ,EAAM,EAAE,EAAGrZ,EAAE,IAAIqZ,EAAM,EAAE,EAC/BA,EAAM,EAAE,WAAWA,EAAM,CAAC,CAAC,EAC7B,UAAWmtG,MAAI,IAAI,aAAantG,EAAM,EAAGA,EAAM,CAAC,CACtD,EAEIhK,EAAS,KAAMgK,EAAM,IAAI,CAC1B,CACH,CASA,SAAS,WAAWxX,EAAG,CAErB,IAAI04B,EAAM14B,EAAE,SAAS,EAAE,EACpB04B,EAAI,CAAC,GAAK,MACXA,EAAM,KAAOA,GAEf,IAAI/zB,EAAQs4D,QAAM,KAAK,WAAWvkC,CAAG,EAGrC,OAAG/zB,EAAM,OAAS,IAEdA,EAAM,WAAW,CAAC,IAAM,GACzB,EAAAA,EAAM,WAAW,CAAC,EAAI,MAEtBA,EAAM,WAAW,CAAC,IAAM,MACxBA,EAAM,WAAW,CAAC,EAAI,OAAU,KAC1BA,EAAM,OAAO,CAAC,EAEhBA,CACT,CAYA,SAAS,qBAAqB68C,EAAM,CAClC,OAAGA,GAAQ,IAAY,GACpBA,GAAQ,IAAY,GACpBA,GAAQ,IAAY,GACpBA,GAAQ,IAAY,GACpBA,GAAQ,IAAY,EACpBA,GAAQ,IAAY,EACpBA,GAAQ,IAAY,EACpBA,GAAQ,IAAY,EACpBA,GAAQ,IAAY,EACpBA,GAAQ,IAAY,EACpBA,GAAQ,KAAa,EACjB,CACT,CASA,SAAS,kBAAkB75C,EAAI,CAC7B,OAAOs1D,QAAM,KAAK,UAAY,OAAO,QAAQt1D,CAAE,GAAM,UACvD,CASA,SAAS,oBAAoBA,EAAI,CAC/B,OAAQ,OAAO41D,OAAK,YAAgB,KAClC,OAAOA,OAAK,YAAY,QAAW,UACnC,OAAOA,OAAK,YAAY,OAAO,QAAW,UAC1C,OAAOA,OAAK,YAAY,OAAO,OAAO51D,CAAE,GAAM,UAClD,CAWA,SAAS,sBAAsBA,EAAI,CACjC,OAAQ,OAAO41D,OAAK,YAAgB,KAClC,OAAOA,OAAK,YAAY,UAAa,UACrC,OAAOA,OAAK,YAAY,SAAS,QAAW,UAC5C,OAAOA,OAAK,YAAY,SAAS,OAAO51D,CAAE,GAAM,UACpD,CAEA,SAAS,iBAAiBpM,EAAG,CAG3B,QAFIoJ,EAAQs4D,QAAM,KAAK,WAAW1hE,EAAE,SAAS,EAAE,CAAC,EAC5Cc,EAAS,IAAI,WAAWsI,EAAM,MAAM,EAChC5I,EAAI,EAAGA,EAAI4I,EAAM,OAAQ,EAAE5I,EACjCM,EAAON,CAAC,EAAI4I,EAAM,WAAW5I,CAAC,EAEhC,OAAOM,CACT,CC52DA,IAAI4gE,QAAQ7gB,QAaZ,GAAG,OAAO,WAAe,IACvB,IAAI,WAAa6gB,QAAM,KAAK,WAI9B,IAAI,KAAOA,QAAM,KAGb,IAAMA,QAAM,IAAMA,QAAM,KAAO,GAClB,IAAI,IAAMA,QAAM,IAAMA,QAAM,KAAO,CAAG,EACvD,IAAI,KAAO,IAAI,KAIX,6BAA+B,CACjC,KAAM,0BACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CACN,KAAM,8CACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CACN,KAAM,gCACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,IAChB,YAAa,GACb,QAAS,eACf,EAAO,CACD,KAAM,iCACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,SAChB,YAAa,GACb,YAAa,kBACnB,CAAK,CACL,EAAK,CAED,KAAM,wCACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,YAChB,YAAa,GACb,QAAS,eACb,CAAG,CACH,EAII,yBAA2B,CAC7B,KAAM,kBACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CACN,KAAM,oCACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CACN,KAAM,wCACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,IAChB,YAAa,GACb,QAAS,QACf,EAAO,CACD,KAAM,yBACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CACN,KAAM,8BACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,YAChB,YAAa,GACb,QAAS,SACjB,EAAS,CACD,KAAM,wCACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,QAChB,YAAa,GACb,QAAS,mBACjB,EAAS,CACD,KAAM,mCACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,QAChB,YAAa,GACb,SAAU,GACV,QAAS,WACjB,EAAS,CAED,KAAM,6BACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,SAChB,YAAa,GACb,SAAU,GACV,MAAO,CAAC,CACN,KAAM,uCACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,IAChB,YAAa,GACb,QAAS,QACnB,CAAS,CACT,CAAO,CACP,CAAK,CACL,EAAK,CACD,KAAM,mCACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CACN,KAAM,uCACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,IAChB,YAAa,GACb,QAAS,QACf,EAAO,CACD,KAAM,sCACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,YAChB,YAAa,GACb,QAAS,OACf,CAAK,CACL,CAAG,CACH,EAEI,yBAA2B,CAC7B,KAAM,mBACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,SAChB,YAAa,GACb,MAAO,CAAC,CACN,KAAM,wBACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,YAChB,YAAa,GACb,QAAS,MACb,EAAK,CACD,KAAM,8BACN,SAAU,KAAK,MAAM,UACrB,KAAM,KAAK,KAAK,QAChB,YAAa,GACb,QAAS,YACb,CAAG,CACH,EA0CA,IAAI,sBAAwB,SAASn8D,EAAKirF,EAAUl4E,EAAS,CAE3DA,EAAUA,GAAW,GACrBA,EAAQ,SAAWA,EAAQ,UAAY,EACvCA,EAAQ,MAAQA,EAAQ,OAAS,KACjCA,EAAQ,UAAYA,EAAQ,WAAa,SACzCA,EAAQ,aAAeA,EAAQ,cAAgB,OAG/C,IAAIm4E,EAAO/uB,QAAM,OAAO,aAAappD,EAAQ,QAAQ,EACjD4kC,EAAQ5kC,EAAQ,MAChBwyG,EAAa,KAAK,aAAa5tE,CAAK,EACpCglE,EACA6I,EACAC,EACJ,GAAG1yG,EAAQ,UAAU,QAAQ,KAAK,IAAM,GAAKA,EAAQ,YAAc,MAAO,CAExE,IAAIu/E,EAAOozB,EAAQC,EACnB,OAAO5yG,EAAQ,UAAS,CACxB,IAAK,SACH4pG,EAAQ,GACRrqB,EAAQ,GACRozB,EAAS,KAAK,YAAY,EAC1BC,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,SACHwgD,EAAQ,GACRrqB,EAAQ,GACRozB,EAAS,KAAK,YAAY,EAC1BC,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,SACHwgD,EAAQ,GACRrqB,EAAQ,GACRozB,EAAS,KAAK,YAAY,EAC1BC,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,MACHwgD,EAAQ,EACRrqB,EAAQ,EACRozB,EAAS,KAAK,OACdC,EAAWxpD,QAAM,IAAI,uBACrB,MACF,QACE,IAAI3kB,EAAQ,IAAI,MAAM,2DAA2D,EACjF,MAAAA,EAAM,UAAYzkC,EAAQ,UACpBykC,CACP,CAGD,IAAIouE,EAAe,WAAa7yG,EAAQ,aAAa,YAAW,EAC5Dw8B,EAAK,4BAA4Bq2E,CAAY,EAG7C/I,EAAK1gD,QAAM,MAAM,OAAO8uB,EAAUC,EAAMvzC,EAAOglE,EAAOptE,CAAE,EACxDkwB,EAAKtD,QAAM,OAAO,aAAam2B,CAAK,EACpCzxB,EAAS8kD,EAAS9I,CAAE,EACxBh8C,EAAO,MAAMpB,CAAE,EACfoB,EAAO,OAAO,KAAK,MAAM7gE,CAAG,CAAC,EAC7B6gE,EAAO,OAAM,EACb4kD,EAAgB5kD,EAAO,OAAO,WAG9B,IAAIrgC,EAAS,mBAAmB0qD,EAAMq6B,EAAY5I,EAAOiJ,CAAY,EAErEJ,EAAsB,KAAK,OACzB,KAAK,MAAM,UAAW,KAAK,KAAK,SAAU,GAAM,CAChD,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,IAAK,GAC/C,KAAK,SAAS,KAAK,UAAa,EAAE,SAAQ,CAAE,EAC9C,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,SAAU,GAAM,CAE1D,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,SAAU,GAAM,CAC1D,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,IAAK,GAC/C,KAAK,SAAS,KAAK,WAAc,EAAE,SAAQ,CAAE,EAE/ChlF,CACV,CAAS,EAED,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,SAAU,GAAM,CAC1D,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,IAAK,GAC/C,KAAK,SAASklF,CAAM,EAAE,SAAQ,CAAE,EAElC,KAAK,OACH,KAAK,MAAM,UAAW,KAAK,KAAK,YAAa,GAAOjmD,CAAE,CAClE,CAAS,CACT,CAAO,CACP,CAAK,CACL,SAAY1sD,EAAQ,YAAc,OAAQ,CAEtC4pG,EAAQ,GAER,IAAIkJ,EAAY,IAAI1pD,QAAM,KAAK,WAAW+uB,CAAI,EAC1C2xB,EAAK,IAAI,IAAI,kBAAkB5xB,EAAU46B,EAAW,EAAGluE,EAAOglE,CAAK,EACnEl9C,EAAK,IAAI,IAAI,kBAAkBwrB,EAAU46B,EAAW,EAAGluE,EAAOglE,CAAK,EACnE97C,EAAS1E,QAAM,IAAI,uBAAuB0gD,CAAE,EAChDh8C,EAAO,MAAMpB,CAAE,EACfoB,EAAO,OAAO,KAAK,MAAM7gE,CAAG,CAAC,EAC7B6gE,EAAO,OAAM,EACb4kD,EAAgB5kD,EAAO,OAAO,WAE9B2kD,EAAsB,KAAK,OACzB,KAAK,MAAM,UAAW,KAAK,KAAK,SAAU,GAAM,CAChD,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,IAAK,GAC/C,KAAK,SAAS,KAAK,iCAAiC,CAAC,EAAE,SAAQ,CAAE,EAEnE,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,SAAU,GAAM,CAE1D,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,YAAa,GAAOt6B,CAAI,EAEpE,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,QAAS,GACnDq6B,EAAW,SAAQ,CAAE,CAC/B,CAAO,CACP,CAAK,CACL,KAAS,CACL,IAAI/tE,EAAQ,IAAI,MAAM,2DAA2D,EACjF,MAAAA,EAAM,UAAYzkC,EAAQ,UACpBykC,CACP,CAGD,IAAIqlB,EAAO,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,SAAU,GAAM,CAErE2oD,EAEA,KAAK,OACH,KAAK,MAAM,UAAW,KAAK,KAAK,YAAa,GAAOC,CAAa,CACvE,CAAG,EACD,OAAO5oD,CACT,EAUA,IAAI,sBAAwB,SAAS78D,EAAKirF,EAAU,CAClD,IAAIpuB,EAAO,KAGP+J,EAAU,GACVrhE,EAAS,GACb,GAAG,CAAC,KAAK,SAASvF,EAAK,6BAA8B4mE,EAASrhE,CAAM,EAAG,CACrE,IAAIiyC,EAAQ,IAAI,MAAM,6FACsC,EAC5D,MAAAA,EAAM,OAASjyC,EACTiyC,CACP,CAGD,IAAIouB,EAAM,KAAK,SAASgB,EAAQ,aAAa,EACzC/F,EAAS,IAAI,IAAI,UAAU+E,EAAKgB,EAAQ,iBAAkBqkB,CAAQ,EAGlE66B,EAAY3pD,QAAM,KAAK,aAAayK,EAAQ,aAAa,EAE7D,OAAA/F,EAAO,OAAOilD,CAAS,EACpBjlD,EAAO,WACRhE,EAAO,KAAK,QAAQgE,EAAO,MAAM,GAG5BhE,CACT,EAUA,IAAI,yBAA2B,SAASkpD,EAAMzpD,EAAS,CAErD,IAAIx2D,EAAM,CACR,KAAM,wBACN,KAAM,KAAK,MAAMigH,CAAI,EAAE,SAAU,CACrC,EACE,OAAO5pD,QAAM,IAAI,OAAOr2D,EAAK,CAAC,QAASw2D,CAAO,CAAC,CACjD,EAUA,IAAI,2BAA6B,SAAS64C,EAAK,CAC7C,IAAIrvG,EAAMq2D,QAAM,IAAI,OAAOg5C,CAAG,EAAE,CAAC,EAEjC,GAAGrvG,EAAI,OAAS,wBAAyB,CACvC,IAAI0xC,EAAQ,IAAI,MAAM,+FACyB,EAC/C,MAAAA,EAAM,WAAa1xC,EAAI,KACjB0xC,CACP,CACD,GAAG1xC,EAAI,UAAYA,EAAI,SAAS,OAAS,YACvC,MAAM,IAAI,MAAM,qEACK,EAIvB,OAAO,KAAK,QAAQA,EAAI,IAAI,CAC9B,EA4BA,IAAI,qBAAuB,SAASo/G,EAAQj6B,EAAUl4E,EAAS,CAG7D,GADAA,EAAUA,GAAW,GAClB,CAACA,EAAQ,OAAQ,CAElB,IAAI8pD,EAAO,IAAI,kBAAkB,IAAI,iBAAiBqoD,CAAM,CAAC,EAC7D,OAAAroD,EAAO,IAAI,sBAAsBA,EAAMouB,EAAUl4E,CAAO,EACjD,IAAI,yBAAyB8pD,CAAI,CACzC,CAGD,IAAIsC,EACAM,EACAk9C,EACAgJ,EACJ,OAAO5yG,EAAQ,UAAS,CACxB,IAAK,SACHosD,EAAY,cACZw9C,EAAQ,GACRl9C,EAAKtD,QAAM,OAAO,aAAa,EAAE,EACjCwpD,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,SACHgD,EAAY,cACZw9C,EAAQ,GACRl9C,EAAKtD,QAAM,OAAO,aAAa,EAAE,EACjCwpD,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,SACHgD,EAAY,cACZw9C,EAAQ,GACRl9C,EAAKtD,QAAM,OAAO,aAAa,EAAE,EACjCwpD,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,OACHgD,EAAY,eACZw9C,EAAQ,GACRl9C,EAAKtD,QAAM,OAAO,aAAa,CAAC,EAChCwpD,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,MACHgD,EAAY,UACZw9C,EAAQ,EACRl9C,EAAKtD,QAAM,OAAO,aAAa,CAAC,EAChCwpD,EAAWxpD,QAAM,IAAI,uBACrB,MACF,QACE,IAAI3kB,EAAQ,IAAI,MAAM,wEACOzkC,EAAQ,UAAY,IAAI,EACrD,MAAAykC,EAAM,UAAYzkC,EAAQ,UACpBykC,CACP,CAGD,IAAIqlE,EAAK1gD,QAAM,IAAI,mBAAmB8uB,EAAUxrB,EAAG,OAAO,EAAG,CAAC,EAAGk9C,CAAK,EAClE97C,EAAS8kD,EAAS9I,CAAE,EACxBh8C,EAAO,MAAMpB,CAAE,EACfoB,EAAO,OAAO,KAAK,MAAM,IAAI,iBAAiBqkD,CAAM,CAAC,CAAC,EACtDrkD,EAAO,OAAM,EAEb,IAAI/6D,EAAM,CACR,KAAM,kBACN,SAAU,CACR,QAAS,IACT,KAAM,WACP,EACD,QAAS,CACP,UAAWq5D,EACX,WAAYhD,QAAM,KAAK,WAAWsD,CAAE,EAAE,YAAa,CACpD,EACD,KAAMoB,EAAO,OAAO,SAAU,CAClC,EACE,OAAO1E,QAAM,IAAI,OAAOr2D,CAAG,CAC7B,EAUA,IAAI,qBAAuB,SAASqvG,EAAKlqB,EAAU,CACjD,IAAIpuB,EAAO,KAEP/2D,EAAMq2D,QAAM,IAAI,OAAOg5C,CAAG,EAAE,CAAC,EAEjC,GAAGrvG,EAAI,OAAS,yBACdA,EAAI,OAAS,eACbA,EAAI,OAAS,kBAAmB,CAChC,IAAI0xC,EAAQ,IAAI,MAAM,8HACkD,EACxE,MAAAA,EAAM,WAAaA,EACbA,CACP,CAED,GAAG1xC,EAAI,UAAYA,EAAI,SAAS,OAAS,YAAa,CACpD,IAAI62G,EACAgJ,EACJ,OAAO7/G,EAAI,QAAQ,UAAS,CAC5B,IAAK,UACH62G,EAAQ,EACRgJ,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,eACHwgD,EAAQ,GACRgJ,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,cACHwgD,EAAQ,GACRgJ,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,cACHwgD,EAAQ,GACRgJ,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,cACHwgD,EAAQ,GACRgJ,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,aACHwgD,EAAQ,EACRgJ,EAAW,SAASj+G,EAAK,CACvB,OAAOy0D,QAAM,IAAI,uBAAuBz0D,EAAK,EAAE,CACvD,EACM,MACF,IAAK,aACHi1G,EAAQ,EACRgJ,EAAW,SAASj+G,EAAK,CACvB,OAAOy0D,QAAM,IAAI,uBAAuBz0D,EAAK,EAAE,CACvD,EACM,MACF,IAAK,cACHi1G,EAAQ,GACRgJ,EAAW,SAASj+G,EAAK,CACvB,OAAOy0D,QAAM,IAAI,uBAAuBz0D,EAAK,GAAG,CACxD,EACM,MACF,QACE,IAAI8vC,EAAQ,IAAI,MAAM,oEACO1xC,EAAI,QAAQ,UAAY,IAAI,EACzD,MAAA0xC,EAAM,UAAY1xC,EAAI,QAAQ,UACxB0xC,CACP,CAGD,IAAIioB,EAAKtD,QAAM,KAAK,WAAWr2D,EAAI,QAAQ,UAAU,EACjD+2G,EAAK1gD,QAAM,IAAI,mBAAmB8uB,EAAUxrB,EAAG,OAAO,EAAG,CAAC,EAAGk9C,CAAK,EAClE97C,EAAS8kD,EAAS9I,CAAE,EAGxB,GAFAh8C,EAAO,MAAMpB,CAAE,EACfoB,EAAO,OAAO1E,QAAM,KAAK,aAAar2D,EAAI,IAAI,CAAC,EAC5C+6D,EAAO,SACRhE,EAAOgE,EAAO,OAAO,eAErB,QAAOhE,CAEb,MACIA,EAAO/2D,EAAI,KAGb,OAAGA,EAAI,OAAS,wBACd+2D,EAAO,IAAI,sBAAsB,KAAK,QAAQA,CAAI,EAAGouB,CAAQ,EAG7DpuB,EAAO,KAAK,QAAQA,CAAI,EAGvBA,IAAS,OACVA,EAAO,IAAI,mBAAmBA,CAAI,GAG7BA,CACT,EAeA,IAAI,IAAI,kBAAoB,SAASouB,EAAUC,EAAM95E,EAAI6sE,EAAM/8E,EAAGquC,EAAI,CACpE,IAAIptC,EAAGwH,EAEP,GAAG,OAAO4lC,EAAO,KAAeA,IAAO,KAAM,CAC3C,GAAG,EAAE,SAAU4sB,QAAM,IACnB,MAAM,IAAI,MAAM,oCAAoC,EAEtD5sB,EAAK4sB,QAAM,GAAG,KAAK,OAAM,CAC1B,CAED,IAAIp6C,EAAIwtB,EAAG,aACPjmC,EAAIimC,EAAG,YACP3jC,EAAS,IAAIuwD,QAAM,KAAK,WAGxB6pD,EAAU,IAAI7pD,QAAM,KAAK,WAC7B,GAAG8uB,GAAa,KAAgC,CAC9C,IAAIthF,EAAI,EAAGA,EAAIshF,EAAS,OAAQthF,IAC9Bq8G,EAAQ,SAAS/6B,EAAS,WAAWthF,CAAC,CAAC,EAEzCq8G,EAAQ,SAAS,CAAC,CACnB,CAGD,IAAI90G,EAAI80G,EAAQ,SACZ1oH,EAAI4tF,EAAK,SAITyR,EAAI,IAAIxgC,QAAM,KAAK,WACvBwgC,EAAE,aAAavrF,EAAI9H,CAAC,EAMpB,IAAI28G,EAAO38G,EAAI,KAAK,KAAKhM,EAAIgM,CAAC,EAC1BqoG,EAAI,IAAIx1C,QAAM,KAAK,WACvB,IAAIxyD,EAAI,EAAGA,EAAIs8G,EAAMt8G,IACnBgoG,EAAE,QAAQzmB,EAAK,GAAGvhF,EAAIrM,CAAC,CAAC,EAO1B,IAAI4oH,EAAO58G,EAAI,KAAK,KAAK4H,EAAI5H,CAAC,EAC1B68G,EAAI,IAAIhqD,QAAM,KAAK,WACvB,IAAIxyD,EAAI,EAAGA,EAAIu8G,EAAMv8G,IACnBw8G,EAAE,QAAQH,EAAQ,GAAGr8G,EAAIuH,CAAC,CAAC,EAI7B,IAAI4yF,EAAI6N,EACR7N,EAAE,UAAUqiB,CAAC,EAMb,QAHI3oH,EAAI,KAAK,KAAK0D,EAAI6gB,CAAC,EAGf9mB,EAAI,EAAGA,GAAKuC,EAAGvC,IAAK,CAE1B,IAAIuD,EAAM,IAAI29D,QAAM,KAAK,WACzB39D,EAAI,SAASm+F,EAAE,MAAO,GACtBn+F,EAAI,SAASslG,EAAE,MAAO,GACtB,QAAQthC,EAAQ,EAAGA,EAAQyb,EAAMzb,IAC/BjzB,EAAG,MAAK,EACRA,EAAG,OAAO/wC,EAAI,SAAU,GACxBA,EAAM+wC,EAAG,SAKX,IAAImtD,GAAI,IAAIvgC,QAAM,KAAK,WACvB,IAAIxyD,EAAI,EAAGA,EAAIL,EAAGK,IAChB+yF,GAAE,QAAQl+F,EAAI,GAAGmL,EAAIoY,CAAC,CAAC,EAMzB,IAAIoQ,GAAI,KAAK,KAAK70B,EAAIgM,CAAC,EAAI,KAAK,KAAK4H,EAAI5H,CAAC,EACtC88G,GAAO,IAAIjqD,QAAM,KAAK,WAC1B,IAAIh6D,EAAI,EAAGA,EAAIgwB,GAAGhwB,IAAK,CACrB,IAAI+kD,GAAQ,IAAIiV,QAAM,KAAK,WAAW2nC,EAAE,SAASx6F,CAAC,CAAC,EAC/C7O,EAAI,IACR,IAAIkP,EAAI+yF,GAAE,OAAQ,EAAG,EAAG/yF,GAAK,EAAGA,IAC9BlP,EAAIA,GAAK,EACTA,GAAKiiG,GAAE,GAAG/yF,CAAC,EAAIu9C,GAAM,GAAGv9C,CAAC,EACzBu9C,GAAM,MAAMv9C,EAAGlP,EAAI,GAAI,EAEzB2rH,GAAK,UAAUl/D,EAAK,CACrB,CACD48C,EAAIsiB,GAGJx6G,EAAO,UAAUpN,CAAG,CACrB,CAED,OAAAoN,EAAO,SAASA,EAAO,OAAQ,EAAG1K,CAAC,EAC5B0K,CACT,EAWA,IAAI,IAAI,UAAY,SAASg6D,EAAKplC,EAAQyqD,EAAU,CAClD,OAAOrlB,EAAG,CACV,KAAK,IAAI,KAAK,WACZ,OAAO,IAAI,IAAI,kBAAkBA,EAAKplC,EAAQyqD,CAAQ,EAExD,KAAK,IAAI,KAAK,iCAAiC,EAC/C,KAAK,IAAI,KAAK,2BAA2B,EACvC,OAAO,IAAI,IAAI,sBAAsBrlB,EAAKplC,EAAQyqD,CAAQ,EAE5D,QACE,IAAIzzC,EAAQ,IAAI,MAAM,wDAAwD,EAC9E,MAAAA,EAAM,IAAMouB,EACZpuB,EAAM,cAAgB,CACpB,aACA,kCACA,2BACN,EACUA,CACP,CACH,EAcA,IAAI,IAAI,kBAAoB,SAASouB,EAAKplC,EAAQyqD,EAAU,CAE1D,IAAIrkB,EAAU,GACVrhE,EAAS,GACb,GAAG,CAAC,KAAK,SAASi7B,EAAQ,yBAA0BomC,EAASrhE,CAAM,EAAG,CACpE,IAAIiyC,EAAQ,IAAI,MAAM,sHACkD,EACxE,MAAAA,EAAM,OAASjyC,EACTiyC,CACP,CAID,GADAouB,EAAM,KAAK,SAASgB,EAAQ,MAAM,EAC/BhB,IAAQ,IAAI,KAAK,YAAgB,CAClC,IAAIpuB,EAAQ,IAAI,MAAM,6EACsB,EAC5C,MAAAA,EAAM,IAAMouB,EACZpuB,EAAM,cAAgB,CAAC,aAAa,EAC9BA,CACP,CAED,GADAouB,EAAM,KAAK,SAASgB,EAAQ,MAAM,EAC/BhB,IAAQ,IAAI,KAAK,YAAY,GAC9BA,IAAQ,IAAI,KAAK,YAAY,GAC7BA,IAAQ,IAAI,KAAK,YAAY,GAC7BA,IAAQ,IAAI,KAAK,cAAc,GAC/BA,IAAQ,IAAI,KAAK,OAAW,CAC5B,IAAIpuB,EAAQ,IAAI,MAAM,uEACgB,EACtC,MAAAA,EAAM,IAAMouB,EACZpuB,EAAM,cAAgB,CACpB,aAAc,aAAc,aAAc,eAAgB,QAAQ,EAC9DA,CACP,CAGD,IAAI0zC,EAAOtkB,EAAQ,QACfjvB,EAAQwkB,QAAM,KAAK,aAAayK,EAAQ,iBAAiB,EAC7DjvB,EAAQA,EAAM,OAAOA,EAAM,OAAM,GAAM,CAAC,EACxC,IAAIglE,EACAgJ,EACJ,OAAO,IAAI,KAAK//C,CAAG,EAAC,CACpB,IAAK,aACH+2C,EAAQ,GACRgJ,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,aACHwgD,EAAQ,GACRgJ,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,aACHwgD,EAAQ,GACRgJ,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,eACHwgD,EAAQ,GACRgJ,EAAWxpD,QAAM,IAAI,uBACrB,MACF,IAAK,SACHwgD,EAAQ,EACRgJ,EAAWxpD,QAAM,IAAI,uBACrB,KACD,CAGD,IAAI5sB,EAAK,sBAAsBq3B,EAAQ,MAAM,EAGzCi2C,EAAK1gD,QAAM,MAAM,OAAO8uB,EAAUC,EAAMvzC,EAAOglE,EAAOptE,CAAE,EACxDkwB,EAAKmH,EAAQ,MACb/F,EAAS8kD,EAAS9I,CAAE,EACxB,OAAAh8C,EAAO,MAAMpB,CAAE,EAERoB,CACT,EAcA,IAAI,IAAI,sBAAwB,SAAS+E,EAAKplC,EAAQyqD,EAAU,CAE9D,IAAIrkB,EAAU,GACVrhE,EAAS,GACb,GAAG,CAAC,KAAK,SAASi7B,EAAQ,yBAA0BomC,EAASrhE,CAAM,EAAG,CACpE,IAAIiyC,EAAQ,IAAI,MAAM,sHACkD,EACxE,MAAAA,EAAM,OAASjyC,EACTiyC,CACP,CAED,IAAI0zC,EAAO/uB,QAAM,KAAK,aAAayK,EAAQ,IAAI,EAC3CjvB,EAAQwkB,QAAM,KAAK,aAAayK,EAAQ,UAAU,EACtDjvB,EAAQA,EAAM,OAAOA,EAAM,OAAM,GAAM,CAAC,EAExC,IAAIglE,EAAO0J,EAAQV,EACnB,OAAO//C,EAAG,CACR,KAAK,IAAI,KAAK,iCAAiC,EAC7C+2C,EAAQ,GACR0J,EAAS,EACTV,EAAWxpD,QAAM,IAAI,gBACrB,MAEF,KAAK,IAAI,KAAK,2BAA2B,EACvCwgD,EAAQ,EACR0J,EAAS,EACTV,EAAW,SAASj+G,EAAK+3D,EAAI,CAC3B,IAAIoB,EAAS1E,QAAM,IAAI,uBAAuBz0D,EAAK,EAAE,EACrD,OAAAm5D,EAAO,MAAMpB,EAAI,IAAI,EACdoB,CACf,EACM,MAEF,QACE,IAAIrpB,EAAQ,IAAI,MAAM,uDAAuD,EAC7E,MAAAA,EAAM,IAAMouB,EACNpuB,CACT,CAGD,IAAIjI,EAAK,sBAAsBq3B,EAAQ,MAAM,EACzCl/D,EAAM,IAAI,IAAI,kBAAkBujF,EAAUC,EAAM,EAAGvzC,EAAOglE,EAAOptE,CAAE,EACvEA,EAAG,MAAK,EACR,IAAIkwB,EAAK,IAAI,IAAI,kBAAkBwrB,EAAUC,EAAM,EAAGvzC,EAAO0uE,EAAQ92E,CAAE,EAEvE,OAAOo2E,EAASj+G,EAAK+3D,CAAE,CACzB,EAaA,IAAI,IAAI,mBAAqB,SAASwrB,EAAUC,EAAMyxB,EAAOptE,EAAI,CAC/D,GAAG,OAAOA,EAAO,KAAeA,IAAO,KAAM,CAC3C,GAAG,EAAE,QAAS4sB,QAAM,IAClB,MAAM,IAAI,MAAM,mCAAmC,EAErD5sB,EAAK4sB,QAAM,GAAG,IAAI,OAAM,CACzB,CACE+uB,IAAS,OACVA,EAAO,IAGT,QADIo7B,EAAU,CAAC7gE,OAAKlW,EAAI07C,EAAWC,CAAI,CAAC,EAChC3sF,EAAS,GAAItD,EAAI,EAAGsD,EAASo+G,EAAO,EAAE1hH,EAAGsD,GAAU,GACzD+nH,EAAQ,KAAK7gE,OAAKlW,EAAI+2E,EAAQrrH,EAAI,CAAC,EAAIgwF,EAAWC,CAAI,CAAC,EAEzD,OAAOo7B,EAAQ,KAAK,EAAE,EAAE,OAAO,EAAG3J,CAAK,CACzC,EAEA,SAASl3D,OAAKlW,EAAI1rC,EAAO,CACvB,OAAO0rC,EAAG,MAAK,EAAG,OAAO1rC,CAAK,EAAE,OAAM,EAAG,UAC3C,CAEA,SAAS,sBAAsB0iH,EAAQ,CAErC,IAAIX,EACJ,GAAG,CAACW,EACFX,EAAe,uBAEfA,EAAe,IAAI,KAAK,KAAK,SAASW,CAAM,CAAC,EAC1C,CAACX,EAAc,CAChB,IAAIpuE,EAAQ,IAAI,MAAM,sBAAsB,EAC5C,MAAAA,EAAM,IAAM+uE,EACZ/uE,EAAM,UAAY,CAChB,eAAgB,iBAAkB,iBAAkB,iBACpD,gBAAgB,EACZA,CACP,CAEH,OAAO,4BAA4BouE,CAAY,CACjD,CAEA,SAAS,4BAA4BA,EAAc,CACjD,IAAIvkD,EAAUlF,QAAM,GACpB,OAAOypD,EAAY,CACnB,IAAK,iBACHvkD,EAAUlF,QAAM,GAAG,OACrB,IAAK,eACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACHypD,EAAeA,EAAa,OAAO,CAAC,EAAE,YAAW,EACjD,MACF,QACE,IAAIpuE,EAAQ,IAAI,MAAM,4BAA4B,EAClD,MAAAA,EAAM,UAAYouE,EAClBpuE,EAAM,UAAY,CAChB,eAAgB,iBAAkB,iBAAkB,iBACpD,gBAAgB,EACZA,CACP,CACD,GAAG,CAAC6pB,GAAW,EAAEukD,KAAgBvkD,GAC/B,MAAM,IAAI,MAAM,2BAA6BukD,CAAY,EAE3D,OAAOvkD,EAAQukD,CAAY,EAAE,QAC/B,CAEA,SAAS,mBAAmB16B,EAAMq6B,EAAY5I,EAAOiJ,EAAc,CACjE,IAAIplF,EAAS,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,SAAU,GAAM,CAEvE,KAAK,OACH,KAAK,MAAM,UAAW,KAAK,KAAK,YAAa,GAAO0qD,CAAI,EAE1D,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,QAAS,GACnDq6B,EAAW,SAAQ,CAAE,CAC3B,CAAG,EAED,OAAGK,IAAiB,gBAClBplF,EAAO,MAAM,KAEX,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,QAAS,GACnD27B,QAAM,KAAK,WAAWwgD,EAAM,SAAS,EAAE,CAAC,CAAC,EAE3C,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,SAAU,GAAM,CAE1D,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,IAAK,GAC/C,KAAK,SAAS,IAAI,KAAKiJ,CAAY,CAAC,EAAE,UAAU,EAElD,KAAK,OAAO,KAAK,MAAM,UAAW,KAAK,KAAK,KAAM,GAAO,EAAE,CAC5D,EAAC,EAECplF,CACT,CCz+BO,SAAS6d,SAAOhsB,EAAG,CACtB,GAAIA,aAAa,YAAcA,EAAE,YAAY,OAAS,aAClD,OAAOA,EACX,GAAIA,aAAa,YACb,OAAO,IAAI,WAAWA,CAAC,EAC3B,GAAI,YAAY,OAAOA,CAAC,EACpB,OAAO,IAAI,WAAWA,EAAE,OAAQA,EAAE,WAAYA,EAAE,UAAU,EAE9D,MAAM,IAAI,MAAM,mCAAmC,CACvD,CCpBA,SAAS/Y,OAAKglC,EAAUljD,EAAM,CAC1B,GAAIkjD,EAAS,QAAU,IACnB,MAAM,IAAI,UAAU,mBAAmB,EAG3C,QADIC,EAAW,IAAI,WAAW,GAAG,EACxBp8C,EAAI,EAAGA,EAAIo8C,EAAS,OAAQp8C,IACjCo8C,EAASp8C,CAAC,EAAI,IAElB,QAASlH,EAAI,EAAGA,EAAIqjD,EAAS,OAAQrjD,IAAK,CACtC,IAAI,EAAIqjD,EAAS,OAAOrjD,CAAC,EACrBujD,EAAK,EAAE,WAAW,CAAC,EACvB,GAAID,EAASC,CAAE,IAAM,IACjB,MAAM,IAAI,UAAU,EAAI,eAAe,EAE3CD,EAASC,CAAE,EAAIvjD,CAClB,CACD,IAAIwjD,EAAOH,EAAS,OAChBI,EAASJ,EAAS,OAAO,CAAC,EAC1BK,EAAS,KAAK,IAAIF,CAAI,EAAI,KAAK,IAAI,GAAG,EACtCG,EAAU,KAAK,IAAI,GAAG,EAAI,KAAK,IAAIH,CAAI,EAI3C,SAASI,EAAOzvC,EAAQ,CAUpB,GARIA,aAAkB,aAEb,YAAY,OAAOA,CAAM,EAC9BA,EAAS,IAAI,WAAWA,EAAO,OAAQA,EAAO,WAAYA,EAAO,UAAU,EAEtE,MAAM,QAAQA,CAAM,IACzBA,EAAS,WAAW,KAAKA,CAAM,IAE/B,EAAEA,aAAkB,YACpB,MAAM,IAAI,UAAU,qBAAqB,EAE7C,GAAIA,EAAO,SAAW,EAClB,MAAO,GAOX,QAJI0vC,EAAS,EACTvgD,EAAS,EACTwgD,EAAS,EACTC,EAAO5vC,EAAO,OACX2vC,IAAWC,GAAQ5vC,EAAO2vC,CAAM,IAAM,GACzCA,IACAD,IAMJ,QAHIz/C,GAAS2/C,EAAOD,GAAUH,EAAU,IAAO,EAC3CK,EAAM,IAAI,WAAW5/C,CAAI,EAEtB0/C,IAAWC,GAAM,CAIpB,QAHIE,EAAQ9vC,EAAO2vC,CAAM,EAErB9jD,EAAI,EACCkkD,EAAM9/C,EAAO,GAAI6/C,IAAU,GAAKjkD,EAAIsD,IAAY4gD,IAAQ,GAAKA,IAAOlkD,IACzEikD,GAAU,IAAMD,EAAIE,CAAG,IAAO,EAC9BF,EAAIE,CAAG,EAAKD,EAAQT,IAAU,EAC9BS,EAASA,EAAQT,IAAU,EAE/B,GAAIS,IAAU,EACV,MAAM,IAAI,MAAM,gBAAgB,EAEpC3gD,EAAStD,EACT8jD,GACH,CAGD,QADIK,GAAM//C,EAAOd,EACV6gD,KAAQ//C,GAAQ4/C,EAAIG,EAAG,IAAM,GAChCA,KAIJ,QADIj+C,GAAMu9C,EAAO,OAAOI,CAAM,EACvBM,GAAM//C,EAAM,EAAE+/C,GACjBj+C,IAAOm9C,EAAS,OAAOW,EAAIG,EAAG,CAAC,EAEnC,OAAOj+C,EACV,CAID,SAASk+C,EAAajwC,EAAQ,CAC1B,GAAI,OAAOA,GAAW,SAClB,MAAM,IAAI,UAAU,iBAAiB,EAEzC,GAAIA,EAAO,SAAW,EAClB,OAAO,IAAI,WAEf,IAAIkwC,EAAM,EAEV,GAAIlwC,EAAOkwC,CAAG,IAAM,IAMpB,SAFIR,EAAS,EACTvgD,EAAS,EACN6Q,EAAOkwC,CAAG,IAAMZ,GACnBI,IACAQ,IAMJ,QAHIjgD,GAAU+P,EAAO,OAASkwC,GAAOX,EAAU,IAAO,EAClDY,EAAO,IAAI,WAAWlgD,CAAI,EAEvB+P,EAAOkwC,CAAG,GAAG,CAEhB,IAAIJ,EAAQX,EAASnvC,EAAO,WAAWkwC,CAAG,CAAC,EAE3C,GAAIJ,IAAU,IACV,OAGJ,QADIjkD,EAAI,EACCukD,EAAMngD,EAAO,GAAI6/C,IAAU,GAAKjkD,EAAIsD,IAAYihD,IAAQ,GAAKA,IAAOvkD,IACzEikD,GAAUT,EAAOc,EAAKC,CAAG,IAAO,EAChCD,EAAKC,CAAG,EAAKN,EAAQ,MAAS,EAC9BA,EAASA,EAAQ,MAAS,EAE9B,GAAIA,IAAU,EACV,MAAM,IAAI,MAAM,gBAAgB,EAEpC3gD,EAAStD,EACTqkD,GACH,CAED,GAAIlwC,EAAOkwC,CAAG,IAAM,IAKpB,SADIG,EAAMpgD,EAAOd,EACVkhD,IAAQpgD,GAAQkgD,EAAKE,CAAG,IAAM,GACjCA,IAIJ,QAFIC,GAAM,IAAI,WAAWZ,GAAUz/C,EAAOogD,EAAI,EAC1Ct9C,GAAI28C,EACDW,IAAQpgD,GACXqgD,GAAIv9C,IAAG,EAAIo9C,EAAKE,GAAK,EAEzB,OAAOC,IACV,CAID,SAASC,EAAOjgD,EAAQ,CACpB,IAAInE,EAAS8jD,EAAa3/C,CAAM,EAChC,GAAInE,EACA,OAAOA,EAEX,MAAM,IAAI,MAAM,OAAOH,CAAI,YAAY,CAC1C,CACD,MAAO,CACH,OAAQyjD,EACR,aAAcQ,EACd,OAAQM,CAChB,CACA,CACA,IAAIn5C,MAAM8S,OACNsmC,kCAAkCp5C,MChKtC,mBAAc,CACV,KACA,OACA,WACA,YAAYpL,EAAMi4B,EAAQwsB,EAAY,CAClC,KAAK,KAAOzkD,EACZ,KAAK,OAASi4B,EACd,KAAK,WAAawsB,CACrB,CACD,OAAOh8C,EAAO,CACV,GAAIA,aAAiB,WACjB,MAAO,GAAG,KAAK,MAAM,GAAG,KAAK,WAAWA,CAAK,CAAC,GAG9C,MAAM,MAAM,mCAAmC,CAEtD,CACL,EAMA,eAAc,CACV,KACA,OACA,WACA,gBACA,YAAYzI,EAAMi4B,EAAQysB,EAAY,CAIlC,GAHA,KAAK,KAAO1kD,EACZ,KAAK,OAASi4B,EAEVA,EAAO,YAAY,CAAC,IAAM,OAC1B,MAAM,IAAI,MAAM,0BAA0B,EAE9C,KAAK,gBAAkBA,EAAO,YAAY,CAAC,EAC3C,KAAK,WAAaysB,CACrB,CACD,OAAOt0B,EAAM,CACT,GAAI,OAAOA,GAAS,SAAU,CAC1B,GAAIA,EAAK,YAAY,CAAC,IAAM,KAAK,gBAC7B,MAAM,MAAM,qCAAqC,KAAK,UAAUA,CAAI,CAAC,KAAK,KAAK,IAAI,+CAA+C,KAAK,MAAM,EAAE,EAEnJ,OAAO,KAAK,WAAWA,EAAK,MAAM,KAAK,OAAO,MAAM,CAAC,CACxD,KAEG,OAAM,MAAM,mCAAmC,CAEtD,CACD,GAAGu0B,EAAS,CACR,OAAOC,KAAG,KAAMD,CAAO,CAC1B,CACL,EACA,uBAAsB,CAClB,SACA,YAAYE,EAAU,CAClB,KAAK,SAAWA,CACnB,CACD,GAAGF,EAAS,CACR,OAAOC,KAAG,KAAMD,CAAO,CAC1B,CACD,OAAOl6C,EAAO,CACV,MAAMwtB,EAASxtB,EAAM,CAAC,EAChBk6C,EAAU,KAAK,SAAS1sB,CAAM,EACpC,GAAI0sB,GAAW,KACX,OAAOA,EAAQ,OAAOl6C,CAAK,EAG3B,MAAM,WAAW,qCAAqC,KAAK,UAAUA,CAAK,CAAC,+BAA+B,OAAO,KAAK,KAAK,QAAQ,CAAC,gBAAgB,CAE3J,CACL,EACO,SAASm6C,KAAG/kB,EAAM2Q,EAAO,CAE5B,OAAO,IAAIsU,kBAAgB,CACvB,GAAIjlB,EAAK,UAAY,CAAE,CAACA,EAAK,MAAM,EAAGA,GACtC,GAAI2Q,EAAM,UAAY,CAAE,CAACA,EAAM,MAAM,EAAGA,EAChD,CAAK,CACL,CACO,iBAAY,CACf,KACA,OACA,WACA,WACA,QACA,QACA,YAAYxwC,EAAMi4B,EAAQwsB,EAAYC,EAAY,CAC9C,KAAK,KAAO1kD,EACZ,KAAK,OAASi4B,EACd,KAAK,WAAawsB,EAClB,KAAK,WAAaC,EAClB,KAAK,QAAU,IAAIK,UAAQ/kD,EAAMi4B,EAAQwsB,CAAU,EACnD,KAAK,QAAU,IAAIO,UAAQhlD,EAAMi4B,EAAQysB,CAAU,CACtD,CACD,OAAOj6C,EAAO,CACV,OAAO,KAAK,QAAQ,OAAOA,CAAK,CACnC,CACD,OAAOA,EAAO,CACV,OAAO,KAAK,QAAQ,OAAOA,CAAK,CACnC,CACL,EACO,SAASjH,OAAK,CAAE,KAAAxD,EAAM,OAAAi4B,EAAQ,OAAAwrB,EAAQ,OAAAc,CAAM,EAAI,CACnD,OAAO,IAAIU,QAAMjlD,EAAMi4B,EAAQwrB,EAAQc,CAAM,CACjD,CACO,SAASW,QAAM,CAAE,KAAAllD,EAAM,OAAAi4B,EAAQ,SAAA3sB,CAAQ,EAAI,CAC9C,KAAM,CAAE,OAAAm4C,EAAQ,OAAAc,CAAM,EAAKY,kCAAM75C,EAAUtL,CAAI,EAC/C,OAAOwD,OAAK,CACR,OAAAy0B,EACA,KAAAj4B,EACA,OAAAyjD,EACA,OAASrzB,GAAS6yB,SAAOsB,EAAOn0B,CAAI,CAAC,CAC7C,CAAK,CACL,CACA,SAASm0B,SAAOjgD,EAAQgH,EAAU85C,EAAaplD,EAAM,CAEjD,MAAMqlD,EAAQ,GACd,QAASxlD,EAAI,EAAGA,EAAIyL,EAAS,OAAQ,EAAEzL,EACnCwlD,EAAM/5C,EAASzL,CAAC,CAAC,EAAIA,EAGzB,IAAIoB,EAAMqD,EAAO,OACjB,KAAOA,EAAOrD,EAAM,CAAC,IAAM,KACvB,EAAEA,EAGN,MAAMsH,EAAM,IAAI,WAAYtH,EAAMmkD,EAAc,EAAK,CAAC,EAEtD,IAAIE,EAAO,EACPnlD,EAAS,EACTolD,EAAU,EACd,QAAS1lD,EAAI,EAAGA,EAAIoB,EAAK,EAAEpB,EAAG,CAE1B,MAAMsC,EAAQkjD,EAAM/gD,EAAOzE,CAAC,CAAC,EAC7B,GAAIsC,IAAU,OACV,MAAM,IAAI,YAAY,OAAOnC,CAAI,YAAY,EAGjDG,EAAUA,GAAUilD,EAAejjD,EACnCmjD,GAAQF,EAEJE,GAAQ,IACRA,GAAQ,EACR/8C,EAAIg9C,GAAS,EAAI,IAAQplD,GAAUmlD,EAE1C,CAED,GAAIA,GAAQF,GAAgB,IAAQjlD,GAAW,EAAImlD,EAC/C,MAAM,IAAI,YAAY,wBAAwB,EAElD,OAAO/8C,CACX,CACA,SAASk7C,SAAOhrC,EAAMnN,EAAU85C,EAAa,CACzC,MAAMI,EAAMl6C,EAASA,EAAS,OAAS,CAAC,IAAM,IACxCm6C,GAAQ,GAAKL,GAAe,EAClC,IAAI78C,EAAM,GACN+8C,EAAO,EACPnlD,EAAS,EACb,QAASN,EAAI,EAAGA,EAAI4Y,EAAK,OAAQ,EAAE5Y,EAK/B,IAHAM,EAAUA,GAAU,EAAKsY,EAAK5Y,CAAC,EAC/BylD,GAAQ,EAEDA,EAAOF,GACVE,GAAQF,EACR78C,GAAO+C,EAASm6C,EAAQtlD,GAAUmlD,CAAK,EAQ/C,GAJIA,IAAS,IACT/8C,GAAO+C,EAASm6C,EAAQtlD,GAAWilD,EAAcE,CAAM,GAGvDE,EACA,KAASj9C,EAAI,OAAS68C,EAAe,GACjC78C,GAAO,IAGf,OAAOA,CACX,CAIO,SAASm9C,UAAQ,CAAE,KAAA1lD,EAAM,OAAAi4B,EAAQ,YAAAmtB,EAAa,SAAA95C,CAAQ,EAAI,CAC7D,OAAO9H,OAAK,CACR,OAAAy0B,EACA,KAAAj4B,EACA,OAAOyK,EAAO,CACV,OAAOg5C,SAAOh5C,EAAOa,EAAU85C,CAAW,CAC7C,EACD,OAAO36C,EAAO,CACV,OAAO85C,SAAO95C,EAAOa,EAAU85C,EAAaplD,CAAI,CACnD,CACT,CAAK,CACL,CCvMO,MAAM4lD,YAAYV,QAAM,CAC3B,KAAM,YACN,OAAQ,IACR,SAAU,4DACd,CAAC,EAC2BA,QAAM,CAC9B,KAAM,eACN,OAAQ,IACR,SAAU,4DACd,CAAC,ECTD,IAAIW,WAAWpC,SACXqC,MAAM,IAAMC,OAAO,IAAMC,SAAS,CAACD,OAAME,MAAM,KAAK,IAAI,EAAG,EAAE,EAMjE,SAASxC,SAAO3iD,EAAKyH,EAAKhH,EAAQ,CAC9BgH,EAAMA,GAAO,GACbhH,EAASA,GAAU,EAEnB,QADI2kD,EAAY3kD,EACTT,GAAOmlD,OACV19C,EAAIhH,GAAQ,EAAKT,EAAM,IAAQglD,MAC/BhlD,GAAO,IAEX,KAAOA,EAAMklD,UACTz9C,EAAIhH,GAAQ,EAAKT,EAAM,IAAQglD,MAC/BhlD,KAAS,EAEb,OAAAyH,EAAIhH,CAAM,EAAIT,EAAM,EAEpB2iD,SAAO,MAAQliD,EAAS2kD,EAAY,EAC7B39C,CACX,CACA,IAAIg8C,SAAS39C,OACTu/C,QAAQ,IAAMC,SAAS,IAK3B,SAASx/C,OAAKxD,EAAK7B,EAAQ,CACvB,IAAIoG,EAAM,EAAGpG,EAASA,GAAU,EAAG8kD,EAAQ,EAAGC,EAAU/kD,EAAQuC,EAAGyK,EAAInL,EAAI,OAC3E,EAAG,CACC,GAAIkjD,GAAW/3C,EAEX3H,aAAK,MAAQ,EACP,IAAI,WAAW,yBAAyB,EAElD9C,EAAIV,EAAIkjD,GAAS,EACjB3+C,GAAO0+C,EAAQ,IACRviD,EAAIsiD,WAAWC,GACfviD,EAAIsiD,UAAU,KAAK,IAAI,EAAGC,CAAK,EACtCA,GAAS,CACjB,OAAaviD,GAAKqiD,SAEdv/C,cAAK,MAAQ0/C,EAAU/kD,EAChBoG,CACX,CACA,IAAI4+C,KAAK,KAAK,IAAI,EAAG,CAAC,EAClBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnB5jD,SAAS,SAAgChB,EAAO,CAChD,OAAQA,EAAQokD,KAAK,EACfpkD,EAAQqkD,KAAK,EACTrkD,EAAQskD,KAAK,EACTtkD,EAAQukD,KAAK,EACTvkD,EAAQwkD,KAAK,EACTxkD,EAAQykD,KAAK,EACTzkD,EAAQ0kD,KAAK,EACT1kD,EAAQ2kD,KAAK,EACT3kD,EAAQ4kD,KAAK,EACT,EAC1C,EACIC,SAAS,CACT,OAAQnB,WACR,OAAQtB,SACR,eAAgBphD,QACpB,EACI8jD,eAAeD,SCtEZ,SAASE,WAASC,EAAKlhD,EAAQ1E,EAAS,EAAG,CAC9CylD,sBAAO,OAAOG,EAAKlhD,EAAQ1E,CAAM,EAC1B0E,CACX,CACO,SAASmhD,iBAAeD,EAAK,CAChC,OAAOH,eAAO,eAAeG,CAAG,CACpC,CCNO,SAASE,SAAO/mD,EAAMgnD,EAAQ,CACjC,MAAMrjD,EAAOqjD,EAAO,WACdC,EAAaC,iBAAsBlnD,CAAI,EACvCmnD,EAAeF,EAAaC,iBAAsBvjD,CAAI,EACtDwE,EAAQ,IAAI,WAAWg/C,EAAexjD,CAAI,EAChDyjD,kBAAgBpnD,EAAMmI,EAAO,CAAC,EAC9Bi/C,WAAgBzjD,EAAMwE,EAAO8+C,CAAU,EACvC9+C,EAAM,IAAI6+C,EAAQG,CAAY,EACvB,IAAIE,SAAOrnD,EAAM2D,EAAMqjD,EAAQ7+C,CAAK,CAC/C,CA8BO,kBAAa,CAChB,KACA,KACA,OACA,MAIA,YAAYnI,EAAM2D,EAAMqjD,EAAQ7+C,EAAO,CACnC,KAAK,KAAOnI,EACZ,KAAK,KAAO2D,EACZ,KAAK,OAASqjD,EACd,KAAK,MAAQ7+C,CAChB,CACL,ECxDA,MAAMnI,OAAO,EACPN,OAAO,WACPyjD,SAASR,SACf,SAASqE,SAAO78C,EAAO,CACnB,OAAO69C,SAAchoD,OAAMmjD,SAAOh5C,CAAK,CAAC,CAC5C,CACO,MAAM6nD,WAAW,MAAEhyD,OAAI,KAAEN,OAAMyjD,gBAAQ6D,eAAQ,ECP/C,SAAS9jD,OAAK,CAAE,KAAAxD,EAAM,KAAAM,EAAM,OAAAmjD,CAAM,EAAI,CACzC,OAAO,IAAIkG,SAAO3pD,EAAMM,EAAMmjD,CAAM,CACxC,CAKO,kBAAa,CAChB,KACA,KACA,OACA,YAAYzjD,EAAMM,EAAMmjD,EAAQ,CAC5B,KAAK,KAAOzjD,EACZ,KAAK,KAAOM,EACZ,KAAK,OAASmjD,CACjB,CACD,OAAOh5C,EAAO,CACV,GAAIA,aAAiB,WAAY,CAC7B,MAAM+F,EAAS,KAAK,OAAO/F,CAAK,EAChC,OAAO+F,aAAkB,WACnB83C,SAAc,KAAK,KAAM93C,CAAM,EAE/BA,EAAO,KAAK82C,GAAUgB,SAAc,KAAK,KAAMhB,CAAM,CAAC,CAC/D,KAEG,OAAM,MAAM,mCAAmC,CAGtD,CACL,EC5BA,SAAS6K,MAAInyD,EAAM,CACf,MAAO,OAAOyY,GAAS,IAAI,WAAW,MAAM,OAAO,OAAO,OAAOzY,EAAMyY,CAAI,CAAC,CAChF,CACO,MAAM25C,SAAS5uD,OAAK,CACvB,KAAM,WACN,KAAM,GACN,OAAQ2uD,MAAI,SAAS,CACzB,CAAC,ECNM,SAAStP,SAAO/9C,EAAGhB,EAAG,CACzB,GAAIgB,IAAMhB,EACN,MAAO,GAEX,GAAIgB,EAAE,aAAehB,EAAE,WACnB,MAAO,GAEX,QAASjE,EAAI,EAAGA,EAAIiF,EAAE,WAAYjF,IAC9B,GAAIiF,EAAEjF,CAAC,IAAMiE,EAAEjE,CAAC,EACZ,MAAO,GAGf,MAAO,EACX,CCZO,SAASurH,eAAahoH,EAAK,CAC9B,OAAOA,CACX,CCDO,SAASgoD,SAAOigE,EAAQloH,EAAQ,CAC/BA,GAAU,OACVA,EAASkoH,EAAO,OAAO,CAACtsF,EAAKusF,IAASvsF,EAAMusF,EAAK,OAAQ,CAAC,GAE9D,MAAMpqH,EAASqC,cAAYJ,CAAM,EACjC,IAAI5B,EAAS,EACb,UAAWX,KAAOyqH,EACdnqH,EAAO,IAAIN,EAAKW,CAAM,EACtBA,GAAUX,EAAI,OAElB,OAAoBM,CACxB,CCTO,SAASqqH,4BAA0BzqH,EAAKnB,EAAK,CAEhD,IAAIyD,EAAM,WAAW,KAAKtC,EAAI,IAAK,EAAC,YAAW,CAAE,EAKjD,OAAAsC,EAAMA,EAAI,CAAC,IAAM,EAAIA,EAAI,SAAS,CAAC,EAAIA,EAMhCooH,WAAmBpoH,EAAK,WAAW,CAC9C,CAEO,SAASqoH,wBAAsB1lH,EAAK,CACvC,MAAM3C,EAAMsoH,oBAAkB3lH,CAAG,EACjC,OAAO,IAAIg7D,QAAM,KAAK,WAAWyqD,WAAmBpoH,EAAK,QAAQ,EAAG,EAAE,CAC1E,CACO,SAASsoH,oBAAkB3lH,EAAKpG,EAAK,CAOxC,OANUgsH,aAAqB5lH,EAAK,cAAc,CAOtD,CACO,SAASmH,YAAUyyC,EAAO,CAC7B,OAAIA,GAAS,KACF,GAEJ,OAAOA,EAAM,MAAS,YACzB,OAAOA,EAAM,OAAU,YACvB,OAAOA,EAAM,SAAY,UACjC,CC3CA,SAAS7oC,SAAO,EAAG,CACf,GAAI,CAAC,OAAO,cAAc,CAAC,GAAK,EAAI,EAChC,MAAM,IAAI,MAAM,kCAAkC,CAAC,EAAE,CAC7D,CAMO,SAAS80G,UAAQ9mH,EAAG,CACvB,OAAQA,aAAa,YAChBA,GAAK,MAAQ,OAAOA,GAAM,UAAYA,EAAE,YAAY,OAAS,YACtE,CACA,SAAS2D,QAAM3E,KAAM2gE,EAAS,CAC1B,GAAI,CAACmnD,UAAQ9nH,CAAC,EACV,MAAM,IAAI,MAAM,qBAAqB,EACzC,GAAI2gE,EAAQ,OAAS,GAAK,CAACA,EAAQ,SAAS3gE,EAAE,MAAM,EAChD,MAAM,IAAI,MAAM,iCAAiC2gE,CAAO,mBAAmB3gE,EAAE,MAAM,EAAE,CAC7F,CACA,SAAS,KAAKma,EAAG,CACb,GAAI,OAAOA,GAAM,YAAc,OAAOA,EAAE,QAAW,WAC/C,MAAM,IAAI,MAAM,iDAAiD,EACrEnH,SAAOmH,EAAE,SAAS,EAClBnH,SAAOmH,EAAE,QAAQ,CACrB,CACA,SAAS4tG,SAAO33G,EAAU43G,EAAgB,GAAM,CAC5C,GAAI53G,EAAS,UACT,MAAM,IAAI,MAAM,kCAAkC,EACtD,GAAI43G,GAAiB53G,EAAS,SAC1B,MAAM,IAAI,MAAM,uCAAuC,CAC/D,CACA,SAAShT,SAAOqH,EAAK2L,EAAU,CAC3BzL,QAAMF,CAAG,EACT,MAAMgB,EAAM2K,EAAS,UACrB,GAAI3L,EAAI,OAASgB,EACb,MAAM,IAAI,MAAM,yDAAyDA,CAAG,EAAE,CAEtF,CCrCO,MAAMwkE,SAAS,OAAO,YAAe,UAAY,WAAY,WAAa,WAAW,OAAS,OCArG,sEAmBO,MAAMg+C,aAAcnrH,GAAQ,IAAI,SAASA,EAAI,OAAQA,EAAI,WAAYA,EAAI,UAAU,EAE7E,KAAO,CAACw4F,EAAM/yC,IAAW+yC,GAAS,GAAK/yC,EAAW+yC,IAAS/yC,EAE3D8hC,OAAO,CAACiR,EAAM/yC,IAAW+yC,GAAQ/yC,EAAW+yC,IAAU,GAAK/yC,IAAY,EAChE,IAAI,WAAW,IAAI,YAAY,CAAC,SAAU,CAAC,EAAE,MAAM,EAAE,CAAC,EAgEnE,MAAM,SAAW,SAAY,GAE7B,eAAe,UAAUu2D,EAAOoP,EAAM31G,EAAI,CAC7C,IAAIqwE,EAAK,KAAK,MACd,QAAS7mF,EAAI,EAAGA,EAAI+8G,EAAO/8G,IAAK,CAC5BwW,EAAGxW,CAAC,EAEJ,MAAM2W,EAAO,KAAK,IAAG,EAAKkwE,EACtBlwE,GAAQ,GAAKA,EAAOw1G,IAExB,MAAM,SAAQ,EACdtlC,GAAMlwE,EACT,CACL,CAIO,SAASpR,cAAYW,EAAK,CAC7B,GAAI,OAAOA,GAAQ,SACf,MAAM,IAAI,MAAM,oCAAoC,OAAOA,CAAG,EAAE,EACpE,OAAO,IAAI,WAAW,IAAI,YAAa,EAAC,OAAOA,CAAG,CAAC,CACvD,CAMO,SAASkmH,UAAQxzG,EAAM,CAC1B,OAAI,OAAOA,GAAS,WAChBA,EAAOrT,cAAYqT,CAAI,GAC3ByzG,QAAOzzG,CAAI,EACJA,CACX,CAIO,SAAS0zG,iBAAed,EAAQ,CACnC,IAAIe,EAAM,EACV,QAASvsH,EAAI,EAAGA,EAAIwrH,EAAO,OAAQxrH,IAAK,CACpC,MAAMiF,EAAIumH,EAAOxrH,CAAC,EAClBqsH,QAAOpnH,CAAC,EACRsnH,GAAOtnH,EAAE,MACZ,CACD,MAAM6C,EAAM,IAAI,WAAWykH,CAAG,EAC9B,QAASvsH,EAAI,EAAG2lD,EAAM,EAAG3lD,EAAIwrH,EAAO,OAAQxrH,IAAK,CAC7C,MAAMiF,EAAIumH,EAAOxrH,CAAC,EAClB8H,EAAI,IAAI7C,EAAG0gD,CAAG,EACdA,GAAO1gD,EAAE,MACZ,CACD,OAAO6C,CACX,CAEO,MAAM,IAAK,CAEd,OAAQ,CACJ,OAAO,KAAK,YACf,CACL,CACA,MAAMknE,QAAQ,CAAE,EAAC,SACV,SAASw9C,YAAU31F,EAAU+oB,EAAM,CACtC,GAAIA,IAAS,QAAaovB,QAAM,KAAKpvB,CAAI,IAAM,kBAC3C,MAAM,IAAI,MAAM,uCAAuC,EAE3D,OADe,OAAO,OAAO/oB,EAAU+oB,CAAI,CAE/C,CACO,SAAS,gBAAgB6sE,EAAU,CACtC,MAAMC,EAAS7hH,GAAQ4hH,EAAU,EAAC,OAAOL,UAAQvhH,CAAG,CAAC,EAAE,SACjD/J,EAAM2rH,IACZ,OAAAC,EAAM,UAAY5rH,EAAI,UACtB4rH,EAAM,SAAW5rH,EAAI,SACrB4rH,EAAM,OAAS,IAAMD,IACdC,CACX,CAoBO,SAASt+C,cAAYu+C,EAAc,GAAI,CAC1C,GAAIz+C,UAAU,OAAOA,SAAO,iBAAoB,WAC5C,OAAOA,SAAO,gBAAgB,IAAI,WAAWy+C,CAAW,CAAC,EAG7D,GAAIz+C,UAAU,OAAOA,SAAO,aAAgB,WACxC,OAAOA,SAAO,YAAYy+C,CAAW,EAEzC,MAAM,IAAI,MAAM,wCAAwC,CAC5D,CCxLA,SAASC,eAAa70D,EAAMjzD,EAAYxC,EAAOX,EAAM,CACjD,GAAI,OAAOo2D,EAAK,cAAiB,WAC7B,OAAOA,EAAK,aAAajzD,EAAYxC,EAAOX,CAAI,EACpD,MAAMkrH,EAAO,OAAO,EAAE,EAChBC,EAAW,OAAO,UAAU,EAC5BC,EAAK,OAAQzqH,GAASuqH,EAAQC,CAAQ,EACtCE,EAAK,OAAO1qH,EAAQwqH,CAAQ,EAC5B1uG,EAAIzc,EAAO,EAAI,EACf+M,EAAI/M,EAAO,EAAI,EACrBo2D,EAAK,UAAUjzD,EAAasZ,EAAG2uG,EAAIprH,CAAI,EACvCo2D,EAAK,UAAUjzD,EAAa4J,EAAGs+G,EAAIrrH,CAAI,CAC3C,CAIO,MAAM,IAAM,CAACsD,EAAGhB,EAAG1B,IAAO0C,EAAIhB,EAAM,CAACgB,EAAI1C,EAInC,IAAM,CAAC0C,EAAGhB,EAAG1B,IAAO0C,EAAIhB,EAAMgB,EAAI1C,EAAM0B,EAAI1B,EAKlD,MAAM,eAAe,IAAK,CAC7B,YAAY0qH,EAAUC,EAAWC,EAAWxrH,EAAM,CAC9C,QACA,KAAK,SAAWsrH,EAChB,KAAK,UAAYC,EACjB,KAAK,UAAYC,EACjB,KAAK,KAAOxrH,EACZ,KAAK,SAAW,GAChB,KAAK,OAAS,EACd,KAAK,IAAM,EACX,KAAK,UAAY,GACjB,KAAK,OAAS,IAAI,WAAWsrH,CAAQ,EACrC,KAAK,KAAOf,aAAW,KAAK,MAAM,CACrC,CACD,OAAOtzG,EAAM,CACTozG,SAAO,IAAI,EACX,KAAM,CAAE,KAAAj0D,EAAM,OAAAz3D,EAAQ,SAAA2sH,CAAQ,EAAK,KACnCr0G,EAAOwzG,UAAQxzG,CAAI,EACnB,MAAM9Y,EAAM8Y,EAAK,OACjB,QAASxT,EAAM,EAAGA,EAAMtF,GAAM,CAC1B,MAAMstH,EAAO,KAAK,IAAIH,EAAW,KAAK,IAAKntH,EAAMsF,CAAG,EAEpD,GAAIgoH,IAASH,EAAU,CACnB,MAAMI,EAAWnB,aAAWtzG,CAAI,EAChC,KAAOq0G,GAAYntH,EAAMsF,EAAKA,GAAO6nH,EACjC,KAAK,QAAQI,EAAUjoH,CAAG,EAC9B,QACH,CACD9E,EAAO,IAAIsY,EAAK,SAASxT,EAAKA,EAAMgoH,CAAI,EAAG,KAAK,GAAG,EACnD,KAAK,KAAOA,EACZhoH,GAAOgoH,EACH,KAAK,MAAQH,IACb,KAAK,QAAQl1D,EAAM,CAAC,EACpB,KAAK,IAAM,EAElB,CACD,YAAK,QAAUn/C,EAAK,OACpB,KAAK,WAAU,EACR,IACV,CACD,WAAWlQ,EAAK,CACZsjH,SAAO,IAAI,EACX3qH,SAAOqH,EAAK,IAAI,EAChB,KAAK,SAAW,GAIhB,KAAM,CAAE,OAAApI,EAAQ,KAAAy3D,EAAM,SAAAk1D,EAAU,KAAAtrH,CAAI,EAAK,KACzC,GAAI,CAAE,IAAAyD,CAAK,EAAG,KAEd9E,EAAO8E,GAAK,EAAI,IAChB,KAAK,OAAO,SAASA,CAAG,EAAE,KAAK,CAAC,EAG5B,KAAK,UAAY6nH,EAAW7nH,IAC5B,KAAK,QAAQ2yD,EAAM,CAAC,EACpB3yD,EAAM,GAGV,QAASpF,EAAIoF,EAAKpF,EAAIitH,EAAUjtH,IAC5BM,EAAON,CAAC,EAAI,EAIhB4sH,eAAa70D,EAAMk1D,EAAW,EAAG,OAAO,KAAK,OAAS,CAAC,EAAGtrH,CAAI,EAC9D,KAAK,QAAQo2D,EAAM,CAAC,EACpB,MAAMu1D,EAAQpB,aAAWxjH,CAAG,EACtB5I,EAAM,KAAK,UAEjB,GAAIA,EAAM,EACN,MAAM,IAAI,MAAM,6CAA6C,EACjE,MAAMyiG,EAASziG,EAAM,EACf2b,EAAQ,KAAK,MACnB,GAAI8mF,EAAS9mF,EAAM,OACf,MAAM,IAAI,MAAM,oCAAoC,EACxD,QAASzb,EAAI,EAAGA,EAAIuiG,EAAQviG,IACxBstH,EAAM,UAAU,EAAIttH,EAAGyb,EAAMzb,CAAC,EAAG2B,CAAI,CAC5C,CACD,QAAS,CACL,KAAM,CAAE,OAAArB,EAAQ,UAAA4sH,CAAW,EAAG,KAC9B,KAAK,WAAW5sH,CAAM,EACtB,MAAMwH,EAAMxH,EAAO,MAAM,EAAG4sH,CAAS,EACrC,YAAK,QAAO,EACLplH,CACV,CACD,WAAW8W,EAAI,CACXA,IAAOA,EAAK,IAAI,KAAK,aACrBA,EAAG,IAAI,GAAG,KAAK,IAAK,GACpB,KAAM,CAAE,SAAAquG,EAAU,OAAA3sH,EAAQ,OAAAgD,EAAQ,SAAAi8E,EAAU,UAAAtiE,EAAW,IAAA7X,CAAK,EAAG,KAC/D,OAAAwZ,EAAG,OAAStb,EACZsb,EAAG,IAAMxZ,EACTwZ,EAAG,SAAW2gE,EACd3gE,EAAG,UAAY3B,EACX3Z,EAAS2pH,GACTruG,EAAG,OAAO,IAAIte,CAAM,EACjBse,CACV,CACL,CC9HA,MAAM,WAA6B,OAAO,GAAK,GAAK,CAAC,EAC/C,KAAuB,OAAO,EAAE,EAEtC,SAAS,QAAQ,EAAG2uG,EAAK,GAAO,CAC5B,OAAIA,EACO,CAAE,EAAG,OAAO,EAAI,UAAU,EAAG,EAAG,OAAQ,GAAK,KAAQ,UAAU,CAAC,EACpE,CAAE,EAAG,OAAQ,GAAK,KAAQ,UAAU,EAAI,EAAG,EAAG,OAAO,EAAI,UAAU,EAAI,CAAC,CACnF,CACA,SAAS,MAAMC,EAAKD,EAAK,GAAO,CAC5B,IAAIla,EAAK,IAAI,YAAYma,EAAI,MAAM,EAC/BC,EAAK,IAAI,YAAYD,EAAI,MAAM,EACnC,QAASxtH,EAAI,EAAGA,EAAIwtH,EAAI,OAAQxtH,IAAK,CACjC,KAAM,CAAE,EAAAoe,EAAG,EAAA1P,GAAM,QAAQ8+G,EAAIxtH,CAAC,EAAGutH,CAAE,EACnC,CAACla,EAAGrzG,CAAC,EAAGytH,EAAGztH,CAAC,CAAC,EAAI,CAACoe,EAAG1P,CAAC,CACzB,CACD,MAAO,CAAC2kG,EAAIoa,CAAE,CAClB,CACA,MAAM,MAAQ,CAACrvG,EAAG1P,IAAO,OAAO0P,IAAM,CAAC,GAAK,KAAQ,OAAO1P,IAAM,CAAC,EAE5D,MAAQ,CAAC0P,EAAGsvG,EAAIrrH,IAAM+b,IAAM/b,EAC5B,MAAQ,CAAC+b,EAAG1P,EAAGrM,IAAO+b,GAAM,GAAK/b,EAAOqM,IAAMrM,EAE9C,OAAS,CAAC+b,EAAG1P,EAAGrM,IAAO+b,IAAM/b,EAAMqM,GAAM,GAAKrM,EAC9C,OAAS,CAAC+b,EAAG1P,EAAGrM,IAAO+b,GAAM,GAAK/b,EAAOqM,IAAMrM,EAE/C,OAAS,CAAC+b,EAAG1P,EAAGrM,IAAO+b,GAAM,GAAK/b,EAAOqM,IAAOrM,EAAI,GACpD,OAAS,CAAC+b,EAAG1P,EAAGrM,IAAO+b,IAAO/b,EAAI,GAAQqM,GAAM,GAAKrM,EAErD,QAAU,CAACsrH,EAAIj/G,IAAMA,EACrB,QAAU,CAAC0P,EAAGsvG,IAAOtvG,EAErB,OAAS,CAACA,EAAG1P,EAAGrM,IAAO+b,GAAK/b,EAAMqM,IAAO,GAAKrM,EAC9C,OAAS,CAAC+b,EAAG1P,EAAGrM,IAAOqM,GAAKrM,EAAM+b,IAAO,GAAK/b,EAE9C,OAAS,CAAC+b,EAAG1P,EAAGrM,IAAOqM,GAAMrM,EAAI,GAAQ+b,IAAO,GAAK/b,EACrD,OAAS,CAAC+b,EAAG1P,EAAGrM,IAAO+b,GAAM/b,EAAI,GAAQqM,IAAO,GAAKrM,EAG3D,SAAS,IAAIgxG,EAAIoa,EAAIna,EAAIsa,EAAI,CACzB,MAAMl/G,GAAK++G,IAAO,IAAMG,IAAO,GAC/B,MAAO,CAAE,EAAIva,EAAKC,GAAO5kG,EAAI,GAAK,GAAM,GAAM,EAAG,EAAGA,EAAI,CAAC,CAC7D,CAEA,MAAM,MAAQ,CAAC++G,EAAIG,EAAIC,KAAQJ,IAAO,IAAMG,IAAO,IAAMC,IAAO,GAC1D,MAAQ,CAACC,EAAKza,EAAIC,EAAI5nB,IAAQ2nB,EAAKC,EAAK5nB,GAAOoiC,EAAM,GAAK,GAAM,GAAM,EACtE,MAAQ,CAACL,EAAIG,EAAIC,EAAIE,KAAQN,IAAO,IAAMG,IAAO,IAAMC,IAAO,IAAME,IAAO,GAC3E,MAAQ,CAACD,EAAKza,EAAIC,EAAI5nB,EAAI6nB,IAAQF,EAAKC,EAAK5nB,EAAK6nB,GAAOua,EAAM,GAAK,GAAM,GAAM,EAC/E,MAAQ,CAACL,EAAIG,EAAIC,EAAIE,EAAIC,KAAQP,IAAO,IAAMG,IAAO,IAAMC,IAAO,IAAME,IAAO,IAAMC,IAAO,GAC5F,MAAQ,CAACF,EAAKza,EAAIC,EAAI5nB,EAAI6nB,EAAIC,IAAQH,EAAKC,EAAK5nB,EAAK6nB,EAAKC,GAAOsa,EAAM,GAAK,GAAM,GAAM,EAIxF,IAAM,CACR,QAAS,MAAO,MAChB,MAAO,MACP,OAAQ,OAAQ,OAAQ,OACxB,QAAS,QACT,OAAQ,OAAQ,OAAQ,OACxB,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAC5C,ECtDM,CAAC,UAAW,SAAS,EAA2B,IAAI,MAAM,CAC5D,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,oBACtE,EAAE,IAAI,GAAK,OAAO,CAAC,CAAC,CAAC,EAEf,WAA6B,IAAI,YAAY,EAAE,EAC/C,WAA6B,IAAI,YAAY,EAAE,EAC9C,MAAM,eAAe,MAAO,CAC/B,aAAc,CACV,MAAM,IAAK,GAAI,GAAI,EAAK,EAKxB,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,YACV,KAAK,GAAK,YACV,KAAK,GAAK,WACV,KAAK,GAAK,UACV,KAAK,GAAK,YACV,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,YACV,KAAK,GAAK,YACV,KAAK,GAAK,UACV,KAAK,GAAK,UACV,KAAK,GAAK,UACV,KAAK,GAAK,WACV,KAAK,GAAK,SACb,CAED,KAAM,CACF,KAAM,CAAE,GAAAza,EAAI,GAAAoa,EAAI,GAAAna,EAAI,GAAAsa,EAAI,GAAAliC,EAAI,GAAAmiC,EAAI,GAAAta,EAAI,GAAAwa,EAAI,GAAAva,EAAI,GAAAwa,EAAI,GAAAC,EAAI,GAAAC,EAAI,GAAAC,EAAI,GAAAC,EAAI,GAAAC,EAAI,GAAAC,CAAI,EAAG,KAC3E,MAAO,CAACjb,EAAIoa,EAAIna,EAAIsa,EAAIliC,EAAImiC,EAAIta,EAAIwa,EAAIva,EAAIwa,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,CACzE,CAED,IAAIjb,EAAIoa,EAAIna,EAAIsa,EAAIliC,EAAImiC,EAAIta,EAAIwa,EAAIva,EAAIwa,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CAChE,KAAK,GAAKjb,EAAK,EACf,KAAK,GAAKoa,EAAK,EACf,KAAK,GAAKna,EAAK,EACf,KAAK,GAAKsa,EAAK,EACf,KAAK,GAAKliC,EAAK,EACf,KAAK,GAAKmiC,EAAK,EACf,KAAK,GAAKta,EAAK,EACf,KAAK,GAAKwa,EAAK,EACf,KAAK,GAAKva,EAAK,EACf,KAAK,GAAKwa,EAAK,EACf,KAAK,GAAKC,EAAK,EACf,KAAK,GAAKC,EAAK,EACf,KAAK,GAAKC,EAAK,EACf,KAAK,GAAKC,EAAK,EACf,KAAK,GAAKC,EAAK,EACf,KAAK,GAAKC,EAAK,CAClB,CACD,QAAQv2D,EAAMr2D,EAAQ,CAElB,QAAS1B,EAAI,EAAGA,EAAI,GAAIA,IAAK0B,GAAU,EACnC,WAAW1B,CAAC,EAAI+3D,EAAK,UAAUr2D,CAAM,EACrC,WAAW1B,CAAC,EAAI+3D,EAAK,UAAWr2D,GAAU,GAE9C,QAAS1B,EAAI,GAAIA,EAAI,GAAIA,IAAK,CAE1B,MAAMuuH,EAAO,WAAWvuH,EAAI,EAAE,EAAI,EAC5BwuH,EAAO,WAAWxuH,EAAI,EAAE,EAAI,EAC5ByuH,EAAM,IAAI,OAAOF,EAAMC,EAAM,CAAC,EAAI,IAAI,OAAOD,EAAMC,EAAM,CAAC,EAAI,IAAI,MAAMD,EAAMC,EAAM,CAAC,EACrFE,EAAM,IAAI,OAAOH,EAAMC,EAAM,CAAC,EAAI,IAAI,OAAOD,EAAMC,EAAM,CAAC,EAAI,IAAI,MAAMD,EAAMC,EAAM,CAAC,EAErFG,GAAM,WAAW3uH,EAAI,CAAC,EAAI,EAC1B4uH,GAAM,WAAW5uH,EAAI,CAAC,EAAI,EAC1B6uH,GAAM,IAAI,OAAOF,GAAKC,GAAK,EAAE,EAAI,IAAI,OAAOD,GAAKC,GAAK,EAAE,EAAI,IAAI,MAAMD,GAAKC,GAAK,CAAC,EACjFE,GAAM,IAAI,OAAOH,GAAKC,GAAK,EAAE,EAAI,IAAI,OAAOD,GAAKC,GAAK,EAAE,EAAI,IAAI,MAAMD,GAAKC,GAAK,CAAC,EAEjFG,EAAO,IAAI,MAAML,EAAKI,GAAK,WAAW9uH,EAAI,CAAC,EAAG,WAAWA,EAAI,EAAE,CAAC,EAChEgvH,EAAO,IAAI,MAAMD,EAAMN,EAAKI,GAAK,WAAW7uH,EAAI,CAAC,EAAG,WAAWA,EAAI,EAAE,CAAC,EAC5E,WAAWA,CAAC,EAAIgvH,EAAO,EACvB,WAAWhvH,CAAC,EAAI+uH,EAAO,CAC1B,CACD,GAAI,CAAE,GAAA1b,EAAI,GAAAoa,EAAI,GAAAna,EAAI,GAAAsa,EAAI,GAAAliC,EAAI,GAAAmiC,EAAI,GAAAta,EAAI,GAAAwa,EAAI,GAAAva,EAAI,GAAAwa,EAAI,GAAAC,EAAI,GAAAC,EAAI,GAAAC,EAAI,GAAAC,EAAI,GAAAC,EAAI,GAAAC,CAAI,EAAG,KAEzE,QAAStuH,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAEzB,MAAMotF,EAAU,IAAI,OAAOomB,EAAIwa,EAAI,EAAE,EAAI,IAAI,OAAOxa,EAAIwa,EAAI,EAAE,EAAI,IAAI,OAAOxa,EAAIwa,EAAI,EAAE,EACjF3gC,EAAU,IAAI,OAAOmmB,EAAIwa,EAAI,EAAE,EAAI,IAAI,OAAOxa,EAAIwa,EAAI,EAAE,EAAI,IAAI,OAAOxa,EAAIwa,EAAI,EAAE,EAEjFiB,EAAQzb,EAAKya,EAAO,CAACza,EAAK2a,EAC1Be,EAAQlB,EAAKE,EAAO,CAACF,EAAKI,EAG1Be,GAAO,IAAI,MAAMb,EAAIjhC,EAAS6hC,EAAM,UAAUlvH,CAAC,EAAG,WAAWA,CAAC,CAAC,EAC/DovH,GAAM,IAAI,MAAMD,GAAMd,EAAIjhC,EAAS6hC,EAAM,UAAUjvH,CAAC,EAAG,WAAWA,CAAC,CAAC,EACpEqvH,GAAMF,GAAO,EAEbjiC,GAAU,IAAI,OAAOmmB,EAAIoa,EAAI,EAAE,EAAI,IAAI,OAAOpa,EAAIoa,EAAI,EAAE,EAAI,IAAI,OAAOpa,EAAIoa,EAAI,EAAE,EACjFtgC,EAAU,IAAI,OAAOkmB,EAAIoa,EAAI,EAAE,EAAI,IAAI,OAAOpa,EAAIoa,EAAI,EAAE,EAAI,IAAI,OAAOpa,EAAIoa,EAAI,EAAE,EACjF6B,EAAQjc,EAAKC,EAAOD,EAAK3nB,EAAO4nB,EAAK5nB,EACrC6jC,EAAQ9B,EAAKG,EAAOH,EAAKI,EAAOD,EAAKC,EAC3CQ,EAAKF,EAAK,EACVG,EAAKF,EAAK,EACVD,EAAKF,EAAK,EACVG,EAAKF,EAAK,EACVD,EAAKza,EAAK,EACV0a,EAAKF,EAAK,EACT,CAAE,EAAGxa,EAAI,EAAGwa,CAAE,EAAK,IAAI,IAAIza,EAAK,EAAGwa,EAAK,EAAGqB,GAAM,EAAGC,GAAM,CAAC,EAC5D9b,EAAK7nB,EAAK,EACVqiC,EAAKF,EAAK,EACVniC,EAAK4nB,EAAK,EACVua,EAAKD,EAAK,EACVta,EAAKD,EAAK,EACVua,EAAKH,EAAK,EACV,MAAM+B,EAAM,IAAI,MAAMH,GAAKliC,EAASoiC,CAAI,EACxClc,EAAK,IAAI,MAAMmc,EAAKJ,GAAKliC,GAASoiC,CAAI,EACtC7B,EAAK+B,EAAM,CACd,EAEA,CAAE,EAAGnc,EAAI,EAAGoa,GAAO,IAAI,IAAI,KAAK,GAAK,EAAG,KAAK,GAAK,EAAGpa,EAAK,EAAGoa,EAAK,CAAC,GACnE,CAAE,EAAGna,EAAI,EAAGsa,GAAO,IAAI,IAAI,KAAK,GAAK,EAAG,KAAK,GAAK,EAAGta,EAAK,EAAGsa,EAAK,CAAC,EACnE,CAAE,EAAGliC,EAAI,EAAGmiC,GAAO,IAAI,IAAI,KAAK,GAAK,EAAG,KAAK,GAAK,EAAGniC,EAAK,EAAGmiC,EAAK,CAAC,EACnE,CAAE,EAAGta,EAAI,EAAGwa,GAAO,IAAI,IAAI,KAAK,GAAK,EAAG,KAAK,GAAK,EAAGxa,EAAK,EAAGwa,EAAK,CAAC,EACnE,CAAE,EAAGva,EAAI,EAAGwa,GAAO,IAAI,IAAI,KAAK,GAAK,EAAG,KAAK,GAAK,EAAGxa,EAAK,EAAGwa,EAAK,CAAC,EACnE,CAAE,EAAGC,EAAI,EAAGC,GAAO,IAAI,IAAI,KAAK,GAAK,EAAG,KAAK,GAAK,EAAGD,EAAK,EAAGC,EAAK,CAAC,EACnE,CAAE,EAAGC,EAAI,EAAGC,GAAO,IAAI,IAAI,KAAK,GAAK,EAAG,KAAK,GAAK,EAAGD,EAAK,EAAGC,EAAK,CAAC,EACnE,CAAE,EAAGC,EAAI,EAAGC,GAAO,IAAI,IAAI,KAAK,GAAK,EAAG,KAAK,GAAK,EAAGD,EAAK,EAAGC,EAAK,CAAC,EACpE,KAAK,IAAIjb,EAAIoa,EAAIna,EAAIsa,EAAIliC,EAAImiC,EAAIta,EAAIwa,EAAIva,EAAIwa,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,CAC1E,CACD,YAAa,CACT,WAAW,KAAK,CAAC,EACjB,WAAW,KAAK,CAAC,CACpB,CACD,SAAU,CACN,KAAK,OAAO,KAAK,CAAC,EAClB,KAAK,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAC1D,CACL,CAsEO,MAAMvgC,SAAyB,gBAAgB,IAAM,IAAI,MAAQ,EClOxE,sEAKA,MAAM0hC,MAAsB,OAAO,CAAC,EAC9BC,MAAsB,OAAO,CAAC,EAC9BC,MAAsB,OAAO,CAAC,EAC7B,SAAS5D,UAAQ9mH,EAAG,CACvB,OAAQA,aAAa,YAChBA,GAAK,MAAQ,OAAOA,GAAM,UAAYA,EAAE,YAAY,OAAS,YACtE,CACO,SAAS,OAAO6I,EAAM,CACzB,GAAI,CAACi+G,UAAQj+G,CAAI,EACb,MAAM,IAAI,MAAM,qBAAqB,CAC7C,CACO,SAAS,MAAM6qC,EAAOr2C,EAAO,CAChC,GAAI,OAAOA,GAAU,UACjB,MAAM,IAAI,MAAM,GAAGq2C,CAAK,gCAAgCr2C,CAAK,IAAI,CACzE,CAEA,MAAM,MAAwB,MAAM,KAAK,CAAE,OAAQ,GAAK,EAAE,CAACmL,EAAGzN,IAAMA,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAI5F,SAAS,WAAW4I,EAAO,CAC9B,OAAOA,CAAK,EAEZ,IAAI+zB,EAAM,GACV,QAAS38B,EAAI,EAAGA,EAAI4I,EAAM,OAAQ5I,IAC9B28B,GAAO,MAAM/zB,EAAM5I,CAAC,CAAC,EAEzB,OAAO28B,CACX,CACO,SAAS,oBAAoB17B,EAAK,CACrC,MAAM07B,EAAM17B,EAAI,SAAS,EAAE,EAC3B,OAAO07B,EAAI,OAAS,EAAI,IAAIA,CAAG,GAAKA,CACxC,CACO,SAAS,YAAYA,EAAK,CAC7B,GAAI,OAAOA,GAAQ,SACf,MAAM,IAAI,MAAM,4BAA8B,OAAOA,CAAG,EAE5D,OAAO,OAAOA,IAAQ,GAAK,IAAM,KAAKA,CAAG,EAAE,CAC/C,CAEA,MAAM,OAAS,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAG,EAChE,SAAS,cAAczE,EAAM,CACzB,GAAIA,GAAQ,OAAO,IAAMA,GAAQ,OAAO,GACpC,OAAOA,EAAO,OAAO,GACzB,GAAIA,GAAQ,OAAO,IAAMA,GAAQ,OAAO,GACpC,OAAOA,GAAQ,OAAO,GAAK,IAC/B,GAAIA,GAAQ,OAAO,IAAMA,GAAQ,OAAO,GACpC,OAAOA,GAAQ,OAAO,GAAK,GAEnC,CAIO,SAAS,WAAWyE,EAAK,CAC5B,GAAI,OAAOA,GAAQ,SACf,MAAM,IAAI,MAAM,4BAA8B,OAAOA,CAAG,EAC5D,MAAMgsD,EAAKhsD,EAAI,OACTosD,EAAKJ,EAAK,EAChB,GAAIA,EAAK,EACL,MAAM,IAAI,MAAM,0DAA4DA,CAAE,EAClF,MAAM1oF,EAAQ,IAAI,WAAW8oF,CAAE,EAC/B,QAAS6mC,EAAK,EAAGpmH,EAAK,EAAGomH,EAAK7mC,EAAI6mC,IAAMpmH,GAAM,EAAG,CAC7C,MAAMga,EAAK,cAAcmZ,EAAI,WAAWnzB,CAAE,CAAC,EACrCia,EAAK,cAAckZ,EAAI,WAAWnzB,EAAK,CAAC,CAAC,EAC/C,GAAIga,IAAO,QAAaC,IAAO,OAAW,CACtC,MAAMyU,EAAOyE,EAAInzB,CAAE,EAAImzB,EAAInzB,EAAK,CAAC,EACjC,MAAM,IAAI,MAAM,+CAAiD0uB,EAAO,cAAgB1uB,CAAE,CAC7F,CACDvJ,EAAM2vH,CAAE,EAAIpsG,EAAK,GAAKC,CACzB,CACD,OAAOxjB,CACX,CAEO,SAAS,gBAAgB2I,EAAO,CACnC,OAAO,YAAY,WAAWA,CAAK,CAAC,CACxC,CACO,SAAS,gBAAgBA,EAAO,CACnC,cAAOA,CAAK,EACL,YAAY,WAAW,WAAW,KAAKA,CAAK,EAAE,QAAS,EAAC,CACnE,CACO,SAAS,gBAAgB,EAAG9I,EAAK,CACpC,OAAO,WAAW,EAAE,SAAS,EAAE,EAAE,SAASA,EAAM,EAAG,GAAG,CAAC,CAC3D,CACO,SAAS,gBAAgB,EAAGA,EAAK,CACpC,OAAO,gBAAgB,EAAGA,CAAG,EAAE,QAAO,CAC1C,CAEO,SAAS,mBAAmB,EAAG,CAClC,OAAO,WAAW,oBAAoB,CAAC,CAAC,CAC5C,CAUO,SAAS+vH,cAAYl3E,EAAOhc,EAAKmzF,EAAgB,CACpD,IAAIhoH,EACJ,GAAI,OAAO60B,GAAQ,SACf,GAAI,CACA70B,EAAM,WAAW60B,CAAG,CACvB,OACM76B,EAAG,CACN,MAAM,IAAI,MAAM,GAAG62C,CAAK,mCAAmChc,CAAG,aAAa76B,CAAC,EAAE,CACjF,SAEIiqH,UAAQpvF,CAAG,EAGhB70B,EAAM,WAAW,KAAK60B,CAAG,MAGzB,OAAM,IAAI,MAAM,GAAGgc,CAAK,mCAAmC,EAE/D,MAAM74C,EAAMgI,EAAI,OAChB,GAAI,OAAOgoH,GAAmB,UAAYhwH,IAAQgwH,EAC9C,MAAM,IAAI,MAAM,GAAGn3E,CAAK,aAAam3E,CAAc,eAAehwH,CAAG,EAAE,EAC3E,OAAOgI,CACX,CAIO,SAAS,eAAe0jH,EAAQ,CACnC,IAAIe,EAAM,EACV,QAASvsH,EAAI,EAAGA,EAAIwrH,EAAO,OAAQxrH,IAAK,CACpC,MAAMiF,EAAIumH,EAAOxrH,CAAC,EAClB,OAAOiF,CAAC,EACRsnH,GAAOtnH,EAAE,MACZ,CACD,MAAM6C,EAAM,IAAI,WAAWykH,CAAG,EAC9B,QAASvsH,EAAI,EAAG2lD,EAAM,EAAG3lD,EAAIwrH,EAAO,OAAQxrH,IAAK,CAC7C,MAAMiF,EAAIumH,EAAOxrH,CAAC,EAClB8H,EAAI,IAAI7C,EAAG0gD,CAAG,EACdA,GAAO1gD,EAAE,MACZ,CACD,OAAO6C,CACX,CAEO,SAASmgD,aAAWhjD,EAAGhB,EAAG,CAC7B,GAAIgB,EAAE,SAAWhB,EAAE,OACf,MAAO,GACX,IAAI0S,EAAO,EACX,QAAS3W,EAAI,EAAGA,EAAIiF,EAAE,OAAQjF,IAC1B2W,GAAQ1R,EAAEjF,CAAC,EAAIiE,EAAEjE,CAAC,EACtB,OAAO2W,IAAS,CACpB,CAIO,SAASpR,cAAYW,EAAK,CAC7B,GAAI,OAAOA,GAAQ,SACf,MAAM,IAAI,MAAM,oCAAoC,OAAOA,CAAG,EAAE,EACpE,OAAO,IAAI,WAAW,IAAI,YAAa,EAAC,OAAOA,CAAG,CAAC,CACvD,CAEA,MAAM,SAAY,GAAM,OAAO,GAAM,UAAYupH,OAAO,EACjD,SAAS,QAAQ,EAAG/lH,EAAKvD,EAAK,CACjC,OAAO,SAAS,CAAC,GAAK,SAASuD,CAAG,GAAK,SAASvD,CAAG,GAAKuD,GAAO,GAAK,EAAIvD,CAC5E,CAMO,SAAS,SAASwyC,EAAO1yC,EAAGyD,EAAKvD,EAAK,CAMzC,GAAI,CAAC,QAAQF,EAAGyD,EAAKvD,CAAG,EACpB,MAAM,IAAI,MAAM,kBAAkBwyC,CAAK,KAAKjvC,CAAG,WAAWvD,CAAG,SAAS,OAAOF,CAAC,IAAIA,CAAC,EAAE,CAC7F,CAMO,SAAS,OAAO,EAAG,CACtB,IAAInG,EACJ,IAAKA,EAAM,EAAG,EAAI2vH,MAAK,IAAMC,MAAK5vH,GAAO,EACrC,CACJ,OAAOA,CACX,CAMO,SAAS,OAAO,EAAGsF,EAAK,CAC3B,OAAQ,GAAK,OAAOA,CAAG,EAAKsqH,KAChC,CAIO,SAAS,OAAO,EAAGtqH,EAAK9C,EAAO,CAClC,OAAO,GAAMA,EAAQotH,MAAMD,QAAQ,OAAOrqH,CAAG,CACjD,CAKO,MAAM,QAAW,IAAOuqH,OAAO,OAAO,EAAI,CAAC,GAAKD,MAEjD,IAAO92G,GAAS,IAAI,WAAWA,CAAI,EACnC,KAAQ7X,GAAQ,WAAW,KAAKA,CAAG,EAQlC,SAAS,eAAegvH,EAASC,EAAUC,EAAQ,CACtD,GAAI,OAAOF,GAAY,UAAYA,EAAU,EACzC,MAAM,IAAI,MAAM,0BAA0B,EAC9C,GAAI,OAAOC,GAAa,UAAYA,EAAW,EAC3C,MAAM,IAAI,MAAM,2BAA2B,EAC/C,GAAI,OAAOC,GAAW,WAClB,MAAM,IAAI,MAAM,2BAA2B,EAE/C,IAAI5hH,EAAI,IAAI0hH,CAAO,EACf74F,EAAI,IAAI64F,CAAO,EACf/vH,EAAI,EACR,MAAM6a,EAAQ,IAAM,CAChBxM,EAAE,KAAK,CAAC,EACR6oB,EAAE,KAAK,CAAC,EACRl3B,EAAI,CACZ,EACUoe,EAAI,IAAIna,IAAMgsH,EAAO/4F,EAAG7oB,EAAG,GAAGpK,CAAC,EAC/BisH,EAAS,CAAC9b,EAAO,QAAU,CAE7Bl9E,EAAI9Y,EAAE,KAAK,CAAC,CAAI,CAAC,EAAGg2F,CAAI,EACxB/lG,EAAI+P,EAAC,EACDg2F,EAAK,SAAW,IAEpBl9E,EAAI9Y,EAAE,KAAK,CAAC,CAAI,CAAC,EAAGg2F,CAAI,EACxB/lG,EAAI+P,EAAC,EACb,EACU4xD,EAAM,IAAM,CAEd,GAAIhwE,KAAO,IACP,MAAM,IAAI,MAAM,yBAAyB,EAC7C,IAAIF,EAAM,EACV,MAAM4I,EAAM,GACZ,KAAO5I,EAAMkwH,GAAU,CACnB3hH,EAAI+P,EAAC,EACL,MAAMqqE,EAAKp6E,EAAE,QACb3F,EAAI,KAAK+/E,CAAE,EACX3oF,GAAOuO,EAAE,MACZ,CACD,OAAO,YAAY,GAAG3F,CAAG,CACjC,EAUI,MATiB,CAAC0rG,EAAM+b,IAAS,CAC7Bt1G,IACAq1G,EAAO9b,CAAI,EACX,IAAItsG,EACJ,KAAO,EAAEA,EAAMqoH,EAAKngD,EAAK,KACrBkgD,IACJ,OAAAr1G,IACO/S,CACf,CAEA,CAEA,MAAM,aAAe,CACjB,OAASpB,GAAQ,OAAOA,GAAQ,SAChC,SAAWA,GAAQ,OAAOA,GAAQ,WAClC,QAAUA,GAAQ,OAAOA,GAAQ,UACjC,OAASA,GAAQ,OAAOA,GAAQ,SAChC,mBAAqBA,GAAQ,OAAOA,GAAQ,UAAYqlH,UAAQrlH,CAAG,EACnE,cAAgBA,GAAQ,OAAO,cAAcA,CAAG,EAChD,MAAQA,GAAQ,MAAM,QAAQA,CAAG,EACjC,MAAO,CAACA,EAAKsJ,IAAWA,EAAO,GAAG,QAAQtJ,CAAG,EAC7C,KAAOA,GAAQ,OAAOA,GAAQ,YAAc,OAAO,cAAcA,EAAI,SAAS,CAClF,EAEO,SAAS,eAAesJ,EAAQogH,EAAYC,EAAgB,GAAI,CACnE,MAAMC,EAAa,CAACC,EAAWtlH,EAAMulH,IAAe,CAChD,MAAMC,EAAW,aAAaxlH,CAAI,EAClC,GAAI,OAAOwlH,GAAa,WACpB,MAAM,IAAI,MAAM,sBAAsBxlH,CAAI,sBAAsB,EACpE,MAAMvE,EAAMsJ,EAAOugH,CAAS,EAC5B,GAAI,EAAAC,GAAc9pH,IAAQ,SAEtB,CAAC+pH,EAAS/pH,EAAKsJ,CAAM,EACrB,MAAM,IAAI,MAAM,iBAAiB,OAAOugH,CAAS,CAAC,IAAI7pH,CAAG,KAAK,OAAOA,CAAG,eAAeuE,CAAI,EAAE,CAEzG,EACI,SAAW,CAACslH,EAAWtlH,CAAI,IAAK,OAAO,QAAQmlH,CAAU,EACrDE,EAAWC,EAAWtlH,EAAM,EAAK,EACrC,SAAW,CAACslH,EAAWtlH,CAAI,IAAK,OAAO,QAAQolH,CAAa,EACxDC,EAAWC,EAAWtlH,EAAM,EAAI,EACpC,OAAO+E,CACX,CAYO,MAAM,eAAiB,IAAM,CAChC,MAAM,IAAI,MAAM,iBAAiB,CACrC,EAKO,SAAS,SAASpE,EAAI,CACzB,MAAM09B,EAAM,IAAI,QAChB,MAAO,CAAC9lC,KAAQzD,IAAS,CACrB,MAAM2G,EAAM4iC,EAAI,IAAI9lC,CAAG,EACvB,GAAIkD,IAAQ,OACR,OAAOA,EACX,MAAMwI,EAAWtD,EAAGpI,EAAK,GAAGzD,CAAI,EAChC,OAAAupC,EAAI,IAAI9lC,EAAK0L,CAAQ,EACdA,CACf,CACA,ycC3UA,sEAIA,MAAMugH,MAAM,OAAO,CAAC,EAAGC,MAAM,OAAO,CAAC,EAAGC,MAAM,OAAO,CAAC,EAAGe,MAAM,OAAO,CAAC,EAEjE,IAAM,OAAO,CAAC,EAAGC,MAAM,OAAO,CAAC,EAAGC,MAAM,OAAO,CAAC,EAE1C,OAAO,CAAC,EAAU,OAAO,EAAE,EAEhC,SAAS,IAAI3rH,EAAGhB,EAAG,CACtB,MAAM0M,EAAS1L,EAAIhB,EACnB,OAAO0M,GAAU8+G,MAAM9+G,EAAS1M,EAAI0M,CACxC,CAQO,SAAS,IAAI1P,EAAK4oG,EAAOgnB,EAAQ,CACpC,GAAIA,GAAUpB,OAAO5lB,EAAQ4lB,MACzB,MAAM,IAAI,MAAM,2BAA2B,EAC/C,GAAIoB,IAAWnB,MACX,OAAOD,MACX,IAAI3nH,EAAM4nH,MACV,KAAO7lB,EAAQ4lB,OACP5lB,EAAQ6lB,QACR5nH,EAAOA,EAAM7G,EAAO4vH,GACxB5vH,EAAOA,EAAMA,EAAO4vH,EACpBhnB,IAAU6lB,MAEd,OAAO5nH,CACX,CAEO,SAAS,KAAKtI,EAAGqqG,EAAOgnB,EAAQ,CACnC,IAAI/oH,EAAMtI,EACV,KAAOqqG,KAAU4lB,OACb3nH,GAAOA,EACPA,GAAO+oH,EAEX,OAAO/oH,CACX,CAEO,SAAS,OAAOmP,EAAQ45G,EAAQ,CACnC,GAAI55G,IAAWw4G,OAAOoB,GAAUpB,MAC5B,MAAM,IAAI,MAAM,6CAA6Cx4G,CAAM,QAAQ45G,CAAM,EAAE,EAIvF,IAAI5rH,EAAI,IAAIgS,EAAQ45G,CAAM,EACtB5sH,EAAI4sH,EAEJrxH,EAAIiwH,MAAc3oG,EAAI4oG,MAC1B,KAAOzqH,IAAMwqH,OAAK,CAEd,MAAM11B,EAAI91F,EAAIgB,EACRyO,EAAIzP,EAAIgB,EACRlD,EAAIvC,EAAIsnB,EAAIizE,EAGlB91F,EAAIgB,EAAGA,EAAIyO,EAAGlU,EAAIsnB,EAAUA,EAAI/kB,CACnC,CAED,GADYkC,IACAyrH,MACR,MAAM,IAAI,MAAM,wBAAwB,EAC5C,OAAO,IAAIlwH,EAAGqxH,CAAM,CACxB,CASO,SAAS,cAAc3F,EAAG,CAM7B,MAAM4F,GAAa5F,EAAIwE,OAAOC,MAC9B,IAAI1Z,EAAG,EAAG8a,EAGV,IAAK9a,EAAIiV,EAAIwE,MAAK,EAAI,EAAGzZ,EAAI0Z,QAAQF,MAAKxZ,GAAK0Z,MAAK,IAChD,CAEJ,IAAKoB,EAAIpB,MAAKoB,EAAI7F,GAAK,IAAI6F,EAAGD,EAAW5F,CAAC,IAAMA,EAAIwE,MAAKqB,IACrD,CAEJ,GAAI,IAAM,EAAG,CACT,MAAMC,GAAU9F,EAAIwE,OAAO,IAC3B,OAAO,SAAqBuB,EAAIhrH,EAAG,CAC/B,MAAMkT,EAAO83G,EAAG,IAAIhrH,EAAG+qH,CAAM,EAC7B,GAAI,CAACC,EAAG,IAAIA,EAAG,IAAI93G,CAAI,EAAGlT,CAAC,EACvB,MAAM,IAAI,MAAM,yBAAyB,EAC7C,OAAOkT,CACnB,CACK,CAED,MAAM+3G,GAAUjb,EAAIyZ,OAAOC,MAC3B,OAAO,SAAqBsB,EAAIhrH,EAAG,CAE/B,GAAIgrH,EAAG,IAAIhrH,EAAG6qH,CAAS,IAAMG,EAAG,IAAIA,EAAG,GAAG,EACtC,MAAM,IAAI,MAAM,yBAAyB,EAC7C,IAAIv9G,EAAI,EAEJod,EAAImgG,EAAG,IAAIA,EAAG,IAAIA,EAAG,IAAKF,CAAC,EAAG9a,CAAC,EAC/Bz2G,EAAIyxH,EAAG,IAAIhrH,EAAGirH,CAAM,EACpBjtH,EAAIgtH,EAAG,IAAIhrH,EAAGgwG,CAAC,EACnB,KAAO,CAACgb,EAAG,IAAIhtH,EAAGgtH,EAAG,GAAG,GAAG,CACvB,GAAIA,EAAG,IAAIhtH,EAAGgtH,EAAG,IAAI,EACjB,OAAOA,EAAG,KAEd,IAAIlvH,EAAI,EACR,QAAS+yF,EAAKm8B,EAAG,IAAIhtH,CAAC,EAAGlC,EAAI2R,GACrB,CAAAu9G,EAAG,IAAIn8B,EAAIm8B,EAAG,GAAG,EADOlvH,IAG5B+yF,EAAKm8B,EAAG,IAAIn8B,CAAE,EAGlB,MAAMq8B,EAAKF,EAAG,IAAIngG,EAAG4+F,OAAO,OAAOh8G,EAAI3R,EAAI,CAAC,CAAC,EAC7C+uB,EAAImgG,EAAG,IAAIE,CAAE,EACb3xH,EAAIyxH,EAAG,IAAIzxH,EAAG2xH,CAAE,EAChBltH,EAAIgtH,EAAG,IAAIhtH,EAAG6sB,CAAC,EACfpd,EAAI3R,CACP,CACD,OAAOvC,CACf,CACA,CACO,SAAS,OAAO0rH,EAAG,CAKtB,GAAIA,EAAI,MAAQwF,MAAK,CAKjB,MAAMM,GAAU9F,EAAIwE,OAAO,IAC3B,OAAO,SAAmBuB,EAAIhrH,EAAG,CAC7B,MAAMkT,EAAO83G,EAAG,IAAIhrH,EAAG+qH,CAAM,EAE7B,GAAI,CAACC,EAAG,IAAIA,EAAG,IAAI93G,CAAI,EAAGlT,CAAC,EACvB,MAAM,IAAI,MAAM,yBAAyB,EAC7C,OAAOkT,CACnB,CACK,CAED,GAAI+xG,EAAI0F,QAAQD,MAAK,CACjB,MAAMlpG,GAAMyjG,EAAIyF,OAAOC,MACvB,OAAO,SAAmBK,EAAIhrH,EAAG,CAC7B,MAAMwd,EAAKwtG,EAAG,IAAIhrH,EAAG0pH,KAAG,EAClBthH,EAAI4iH,EAAG,IAAIxtG,EAAIgE,CAAE,EACjB2pG,EAAKH,EAAG,IAAIhrH,EAAGoI,CAAC,EAChBrO,EAAIixH,EAAG,IAAIA,EAAG,IAAIG,EAAIzB,KAAG,EAAGthH,CAAC,EAC7B8K,EAAO83G,EAAG,IAAIG,EAAIH,EAAG,IAAIjxH,EAAGixH,EAAG,GAAG,CAAC,EACzC,GAAI,CAACA,EAAG,IAAIA,EAAG,IAAI93G,CAAI,EAAGlT,CAAC,EACvB,MAAM,IAAI,MAAM,yBAAyB,EAC7C,OAAOkT,CACnB,CACK,CAwBD,OAAO,cAAc+xG,CAAC,CAC1B,CAEO,MAAM,aAAe,CAACjqH,EAAK4vH,KAAY,IAAI5vH,EAAK4vH,CAAM,EAAInB,SAASA,MAEpE,aAAe,CACjB,SAAU,UAAW,MAAO,MAAO,MAAO,OAAQ,MAClD,MAAO,MAAO,MAAO,MAAO,MAAO,MACnC,OAAQ,OAAQ,OAAQ,MAC5B,EACO,SAAS,cAAc2B,EAAO,CACjC,MAAMxc,EAAU,CACZ,MAAO,SACP,KAAM,SACN,MAAO,gBACP,KAAM,eACd,EACUj1D,EAAO,aAAa,OAAO,CAACtW,EAAK5iC,KACnC4iC,EAAI5iC,CAAG,EAAI,WACJ4iC,GACRurE,CAAO,EACV,OAAO,eAAewc,EAAOzxE,CAAI,CACrC,CAMO,SAAS,MAAM/iB,EAAG57B,EAAK4oG,EAAO,CAGjC,GAAIA,EAAQ4lB,MACR,MAAM,IAAI,MAAM,oBAAoB,EACxC,GAAI5lB,IAAU4lB,MACV,OAAO5yF,EAAE,IACb,GAAIgtE,IAAU6lB,MACV,OAAOzuH,EACX,IAAIgV,EAAI4mB,EAAE,IACNz6B,EAAInB,EACR,KAAO4oG,EAAQ4lB,OACP5lB,EAAQ6lB,QACRz5G,EAAI4mB,EAAE,IAAI5mB,EAAG7T,CAAC,GAClBA,EAAIy6B,EAAE,IAAIz6B,CAAC,EACXynG,IAAU6lB,MAEd,OAAOz5G,CACX,CAKO,SAAS,cAAc4mB,EAAGy0F,EAAM,CACnC,MAAMxwH,EAAM,IAAI,MAAMwwH,EAAK,MAAM,EAE3BC,EAAiBD,EAAK,OAAO,CAACpyF,EAAKj+B,EAAKjB,IACtC68B,EAAE,IAAI57B,CAAG,EACFi+B,GACXp+B,EAAId,CAAC,EAAIk/B,EACFrC,EAAE,IAAIqC,EAAKj+B,CAAG,GACtB47B,EAAE,GAAG,EAEF20F,EAAW30F,EAAE,IAAI00F,CAAc,EAErC,OAAAD,EAAK,YAAY,CAACpyF,EAAKj+B,EAAKjB,IACpB68B,EAAE,IAAI57B,CAAG,EACFi+B,GACXp+B,EAAId,CAAC,EAAI68B,EAAE,IAAIqC,EAAKp+B,EAAId,CAAC,CAAC,EACnB68B,EAAE,IAAIqC,EAAKj+B,CAAG,GACtBuwH,CAAQ,EACJ1wH,CACX,CAoBO,SAAS,QAAQ,EAAG2wH,EAAY,CAEnC,MAAMC,EAAcD,IAAe,OAAYA,EAAa,EAAE,SAAS,CAAC,EAAE,OACpEE,EAAc,KAAK,KAAKD,EAAc,CAAC,EAC7C,MAAO,CAAE,WAAYA,EAAa,YAAAC,EACtC,CAgBO,SAAS,MAAMC,EAAOC,EAAQlwH,EAAO,GAAOmwH,EAAQ,GAAI,CAC3D,GAAIF,GAASnC,MACT,MAAM,IAAI,MAAM,iCAAiCmC,CAAK,EAAE,EAC5D,KAAM,CAAE,WAAYG,EAAM,YAAaC,CAAK,EAAK,QAAQJ,EAAOC,CAAM,EACtE,GAAIG,EAAQ,KACR,MAAM,IAAI,MAAM,iDAAiD,EACrE,MAAMC,EAAQ,OAAOL,CAAK,EACpB/0F,EAAI,OAAO,OAAO,CACpB,MAAA+0F,EACA,KAAAG,EACA,MAAAC,EACA,KAAM,QAAQD,CAAI,EAClB,KAAMtC,MACN,IAAKC,MACL,OAASzuH,GAAQ,IAAIA,EAAK2wH,CAAK,EAC/B,QAAU3wH,GAAQ,CACd,GAAI,OAAOA,GAAQ,SACf,MAAM,IAAI,MAAM,+CAA+C,OAAOA,CAAG,EAAE,EAC/E,OAAOwuH,OAAOxuH,GAAOA,EAAM2wH,CAC9B,EACD,IAAM3wH,GAAQA,IAAQwuH,MACtB,MAAQxuH,IAASA,EAAMyuH,SAASA,MAChC,IAAMzuH,GAAQ,IAAI,CAACA,EAAK2wH,CAAK,EAC7B,IAAK,CAAC/iB,EAAKtD,IAAQsD,IAAQtD,EAC3B,IAAMtqG,GAAQ,IAAIA,EAAMA,EAAK2wH,CAAK,EAClC,IAAK,CAAC/iB,EAAKtD,IAAQ,IAAIsD,EAAMtD,EAAKqmB,CAAK,EACvC,IAAK,CAAC/iB,EAAKtD,IAAQ,IAAIsD,EAAMtD,EAAKqmB,CAAK,EACvC,IAAK,CAAC/iB,EAAKtD,IAAQ,IAAIsD,EAAMtD,EAAKqmB,CAAK,EACvC,IAAK,CAAC3wH,EAAK4oG,IAAU,MAAMhtE,EAAG57B,EAAK4oG,CAAK,EACxC,IAAK,CAACgF,EAAKtD,IAAQ,IAAIsD,EAAM,OAAOtD,EAAKqmB,CAAK,EAAGA,CAAK,EAEtD,KAAO3wH,GAAQA,EAAMA,EACrB,KAAM,CAAC4tG,EAAKtD,IAAQsD,EAAMtD,EAC1B,KAAM,CAACsD,EAAKtD,IAAQsD,EAAMtD,EAC1B,KAAM,CAACsD,EAAKtD,IAAQsD,EAAMtD,EAC1B,IAAMtqG,GAAQ,OAAOA,EAAK2wH,CAAK,EAC/B,KAAME,EAAM,OAAU7rH,GAAMgsH,EAAMp1F,EAAG52B,CAAC,GACtC,YAAcunH,GAAQ,cAAc3wF,EAAG2wF,CAAG,EAG1C,KAAM,CAACvoH,EAAGhB,EAAG1B,IAAOA,EAAI0B,EAAIgB,EAC5B,QAAUhE,GAASU,EAAO,gBAAgBV,EAAK+wH,CAAK,EAAI,gBAAgB/wH,EAAK+wH,CAAK,EAClF,UAAYppH,GAAU,CAClB,GAAIA,EAAM,SAAWopH,EACjB,MAAM,IAAI,MAAM,0BAA0BA,CAAK,SAASppH,EAAM,MAAM,EAAE,EAC1E,OAAOjH,EAAO,gBAAgBiH,CAAK,EAAI,gBAAgBA,CAAK,CAC/D,CACT,CAAK,EACD,OAAO,OAAO,OAAOi0B,CAAC,CAC1B,CAkCO,SAAS,oBAAoBq1F,EAAY,CAC5C,GAAI,OAAOA,GAAe,SACtB,MAAM,IAAI,MAAM,4BAA4B,EAChD,MAAMC,EAAYD,EAAW,SAAS,CAAC,EAAE,OACzC,OAAO,KAAK,KAAKC,EAAY,CAAC,CAClC,CAQO,SAAS,iBAAiBD,EAAY,CACzC,MAAM5uH,EAAS,oBAAoB4uH,CAAU,EAC7C,OAAO5uH,EAAS,KAAK,KAAKA,EAAS,CAAC,CACxC,CAcO,SAAS,eAAemJ,EAAKylH,EAAYvwH,EAAO,GAAO,CAC1D,MAAM7B,EAAM2M,EAAI,OACV2lH,EAAW,oBAAoBF,CAAU,EACzCG,EAAS,iBAAiBH,CAAU,EAE1C,GAAIpyH,EAAM,IAAMA,EAAMuyH,GAAUvyH,EAAM,KAClC,MAAM,IAAI,MAAM,YAAYuyH,CAAM,6BAA6BvyH,CAAG,EAAE,EACxE,MAAMmB,EAAMU,EAAO,gBAAgB8K,CAAG,EAAI,gBAAgBA,CAAG,EAEvD6lH,EAAU,IAAIrxH,EAAKixH,EAAaxC,KAAG,EAAIA,MAC7C,OAAO/tH,EAAO,gBAAgB2wH,EAASF,CAAQ,EAAI,gBAAgBE,EAASF,CAAQ,CACxF,CCxaA,sEAIA,MAAM3C,MAAM,OAAO,CAAC,EACdC,MAAM,OAAO,CAAC,EAGd,iBAAmB,IAAI,QACvB,iBAAmB,IAAI,QAYtB,SAAS,KAAKntH,EAAGkjD,EAAM,CAC1B,MAAM8sE,EAAkB,CAACt5F,EAAWnrB,IAAS,CACzC,MAAM0kH,EAAM1kH,EAAK,SACjB,OAAOmrB,EAAYu5F,EAAM1kH,CACjC,EACU2kH,EAAapoC,GAAM,CACrB,GAAI,CAAC,OAAO,cAAcA,CAAC,GAAKA,GAAK,GAAKA,EAAI5kC,EAC1C,MAAM,IAAI,MAAM,qBAAqB4kC,CAAC,mBAAmB5kC,CAAI,GAAG,CAC5E,EACU7F,EAAQyqC,GAAM,CAChBooC,EAAUpoC,CAAC,EACX,MAAMqoC,EAAU,KAAK,KAAKjtE,EAAO4kC,CAAC,EAAI,EAChC4Y,EAAa,IAAM5Y,EAAI,GAC7B,MAAO,CAAE,QAAAqoC,EAAS,WAAAzvB,EAC1B,EACI,MAAO,CACH,gBAAAsvB,EAEA,aAAaI,EAAK1sH,EAAG,CACjB,IAAIgQ,EAAI1T,EAAE,KACNH,EAAIuwH,EACR,KAAO1sH,EAAIwpH,OACHxpH,EAAIypH,QACJz5G,EAAIA,EAAE,IAAI7T,CAAC,GACfA,EAAIA,EAAE,SACN6D,IAAMypH,MAEV,OAAOz5G,CACV,EAWD,iBAAiB08G,EAAKtoC,EAAG,CACrB,KAAM,CAAE,QAAAqoC,EAAS,WAAAzvB,CAAY,EAAGrjD,EAAKyqC,CAAC,EAChC6e,EAAS,GACf,IAAIjzF,EAAI08G,EACJt0G,EAAOpI,EACX,QAAS28G,EAAS,EAAGA,EAASF,EAASE,IAAU,CAC7Cv0G,EAAOpI,EACPizF,EAAO,KAAK7qF,CAAI,EAEhB,QAASre,EAAI,EAAGA,EAAIijG,EAAYjjG,IAC5Bqe,EAAOA,EAAK,IAAIpI,CAAC,EACjBizF,EAAO,KAAK7qF,CAAI,EAEpBpI,EAAIoI,EAAK,QACZ,CACD,OAAO6qF,CACV,EAQD,KAAK7e,EAAGwoC,EAAa5sH,EAAG,CAGpB,KAAM,CAAE,QAAAysH,EAAS,WAAAzvB,CAAY,EAAGrjD,EAAKyqC,CAAC,EACtC,IAAIp0E,EAAI1T,EAAE,KACNs6B,EAAIt6B,EAAE,KACV,MAAMqjD,EAAO,OAAO,GAAKykC,EAAI,CAAC,EACxByoC,EAAY,GAAKzoC,EACjB0oC,EAAU,OAAO1oC,CAAC,EACxB,QAASuoC,EAAS,EAAGA,EAASF,EAASE,IAAU,CAC7C,MAAMlxH,EAASkxH,EAAS3vB,EAExB,IAAI+vB,EAAQ,OAAO/sH,EAAI2/C,CAAI,EAE3B3/C,IAAM8sH,EAGFC,EAAQ/vB,IACR+vB,GAASF,EACT7sH,GAAKypH,OAST,MAAMuD,EAAUvxH,EACVwxH,EAAUxxH,EAAS,KAAK,IAAIsxH,CAAK,EAAI,EACrCG,EAAQP,EAAS,IAAM,EACvBQ,EAAQJ,EAAQ,EAClBA,IAAU,EAEVn2F,EAAIA,EAAE,IAAI01F,EAAgBY,EAAON,EAAYI,CAAO,CAAC,CAAC,EAGtDh9G,EAAIA,EAAE,IAAIs8G,EAAgBa,EAAOP,EAAYK,CAAO,CAAC,CAAC,CAE7D,CAMD,MAAO,CAAE,EAAAj9G,EAAG,EAAA4mB,EACf,EACD,WAAWquF,EAAGjlH,EAAG+1B,EAAW,CACxB,MAAMquD,EAAI,iBAAiB,IAAI6gC,CAAC,GAAK,EAErC,IAAI5zG,EAAO,iBAAiB,IAAI4zG,CAAC,EACjC,OAAK5zG,IACDA,EAAO,KAAK,iBAAiB4zG,EAAG7gC,CAAC,EAC7BA,IAAM,GACN,iBAAiB,IAAI6gC,EAAGlvF,EAAU1kB,CAAI,CAAC,GAExC,KAAK,KAAK+yE,EAAG/yE,EAAMrR,CAAC,CAC9B,EAID,cAAcilH,EAAG7gC,EAAG,CAChBooC,EAAUpoC,CAAC,EACX,iBAAiB,IAAI6gC,EAAG7gC,CAAC,EACzB,iBAAiB,OAAO6gC,CAAC,CAC5B,CACT,CACA,CAYO,SAAS,UAAU3oH,EAAG8uH,EAAOnoB,EAAQmqB,EAAS,CAOjD,GAAI,CAAC,MAAM,QAAQnqB,CAAM,GAAK,CAAC,MAAM,QAAQmqB,CAAO,GAAKA,EAAQ,SAAWnqB,EAAO,OAC/E,MAAM,IAAI,MAAM,qDAAqD,EACzEmqB,EAAQ,QAAQ,CAAChxH,EAAGrC,IAAM,CACtB,GAAI,CAACqxH,EAAM,QAAQhvH,CAAC,EAChB,MAAM,IAAI,MAAM,yBAAyBrC,CAAC,EAAE,CACxD,CAAK,EACDkpG,EAAO,QAAQ,CAACjzF,EAAGjW,IAAM,CACrB,GAAI,EAAEiW,aAAa1T,GACf,MAAM,IAAI,MAAM,wBAAwBvC,CAAC,EAAE,CACvD,CAAK,EACD,MAAMgzH,EAAQ,OAAO,OAAO9pB,EAAO,MAAM,CAAC,EACpCjG,EAAa+vB,EAAQ,GAAKA,EAAQ,EAAIA,EAAQ,EAAIA,EAAQ,EAAIA,EAAQ,EAAI,EAC1EM,GAAQ,GAAKrwB,GAAc,EAC3BswB,EAAU,IAAI,MAAMD,EAAO,CAAC,EAAE,KAAK/wH,EAAE,IAAI,EACzCixH,EAAW,KAAK,OAAOnC,EAAM,KAAO,GAAKpuB,CAAU,EAAIA,EAC7D,IAAIspB,EAAMhqH,EAAE,KACZ,QAASvC,EAAIwzH,EAAUxzH,GAAK,EAAGA,GAAKijG,EAAY,CAC5CswB,EAAQ,KAAKhxH,EAAE,IAAI,EACnB,QAAS2E,EAAI,EAAGA,EAAImsH,EAAQ,OAAQnsH,IAAK,CACrC,MAAMusH,EAASJ,EAAQnsH,CAAC,EAClB8rH,EAAQ,OAAQS,GAAU,OAAOzzH,CAAC,EAAK,OAAOszH,CAAI,CAAC,EACzDC,EAAQP,CAAK,EAAIO,EAAQP,CAAK,EAAE,IAAI9pB,EAAOhiG,CAAC,CAAC,CAChD,CACD,IAAIwsH,EAAOnxH,EAAE,KAEb,QAAS2E,EAAIqsH,EAAQ,OAAS,EAAGI,EAAOpxH,EAAE,KAAM2E,EAAI,EAAGA,IACnDysH,EAAOA,EAAK,IAAIJ,EAAQrsH,CAAC,CAAC,EAC1BwsH,EAAOA,EAAK,IAAIC,CAAI,EAGxB,GADApH,EAAMA,EAAI,IAAImH,CAAI,EACd1zH,IAAM,EACN,QAASkH,EAAI,EAAGA,EAAI+7F,EAAY/7F,IAC5BqlH,EAAMA,EAAI,QACrB,CACD,OAAOA,CACX,CACO,SAAS,cAAc5iB,EAAO,CACjC,qBAAcA,EAAM,EAAE,EACtB,eAAeA,EAAO,CAClB,EAAG,SACH,EAAG,SACH,GAAI,QACJ,GAAI,OACZ,EAAO,CACC,WAAY,gBACZ,YAAa,eACrB,CAAK,EAEM,OAAO,OAAO,CACjB,GAAG,QAAQA,EAAM,EAAGA,EAAM,UAAU,EACpC,GAAGA,EACE,EAAGA,EAAM,GAAG,KACzB,CAAK,CACL,CC/NA,sEAQA,MAAM8lB,MAAM,OAAO,CAAC,EAAGC,MAAM,OAAO,CAAC,EAAGC,MAAM,OAAO,CAAC,EAAGiB,MAAM,OAAO,CAAC,EAEjE,eAAiB,CAAE,OAAQ,IACjC,SAASgD,eAAajqB,EAAO,CACzB,MAAM/pD,EAAO,cAAc+pD,CAAK,EAChCkqB,sBAAkBlqB,EAAO,CACrB,KAAM,WACN,EAAG,SACH,EAAG,SACH,YAAa,UACrB,EAAO,CACC,kBAAmB,WACnB,OAAQ,WACR,QAAS,WACT,WAAY,UACpB,CAAK,EAEM,OAAO,OAAO,CAAE,GAAG/pD,CAAM,EACpC,CAQO,SAAS,eAAek0E,EAAU,CACrC,MAAMC,EAAQH,eAAaE,CAAQ,EAC7B,CAAE,GAAA7C,EAAI,EAAG+C,EAAa,QAASC,EAAS,KAAMC,EAAO,YAAA9lD,EAAa,YAAAujD,EAAa,EAAGwC,CAAQ,EAAMJ,EAChGT,EAAO3D,OAAQ,OAAOgC,EAAc,CAAC,EAAIjC,MACzC0E,EAAOnD,EAAG,OACVoD,EAAK,MAAMN,EAAM,EAAGA,EAAM,UAAU,EAEpCO,EAAUP,EAAM,UACjB,CAACjtG,GAAGzY,KAAM,CACP,GAAI,CACA,MAAO,CAAE,QAAS,GAAM,MAAO4iH,EAAG,KAAKnqG,GAAImqG,EAAG,IAAI5iH,EAAC,CAAC,CAAC,CACxD,MACS,CACN,MAAO,CAAE,QAAS,GAAO,MAAOohH,KAAG,CACtC,CACb,GACU8E,EAAoBR,EAAM,oBAAuBnrH,IAAUA,IAC3D4rH,EAAST,EAAM,SAChB,CAACn7G,GAAMZ,GAAKy8G,KAAW,CAEpB,GADA,MAAM,SAAUA,EAAM,EAClBz8G,GAAI,QAAUy8G,GACd,MAAM,IAAI,MAAM,qCAAqC,EACzD,OAAO77G,EACnB,GAGI,SAAS87G,EAAY/7E,GAAO1yC,GAAG,CAC3B0uH,SAAY,cAAgBh8E,GAAO1yC,GAAGwpH,MAAK6D,CAAI,CAClD,CACD,SAASsB,EAAYlsE,GAAO,CACxB,GAAI,EAAEA,cAAiBijD,GACnB,MAAM,IAAI,MAAM,wBAAwB,CAC/C,CAGD,MAAMkpB,EAAe,SAAS,CAAC5+G,GAAG6+G,KAAO,CACrC,KAAM,CAAE,GAAIt1H,GAAG,GAAI0F,GAAG,GAAI+/D,EAAG,EAAGhvD,GAC1B8+G,GAAM9+G,GAAE,MACV6+G,IAAM,OACNA,GAAKC,GAAMnE,MAAMK,EAAG,IAAIhsD,EAAC,GAC7B,MAAMqmC,EAAK8oB,EAAK50H,GAAIs1H,EAAE,EAChBroB,GAAK2nB,EAAKlvH,GAAI4vH,EAAE,EAChB1mB,GAAKgmB,EAAKnvD,GAAI6vD,EAAE,EACtB,GAAIC,GACA,MAAO,CAAE,EAAGtF,MAAK,EAAGC,KAAG,EAC3B,GAAIthB,KAAOshB,MACP,MAAM,IAAI,MAAM,kBAAkB,EACtC,MAAO,CAAE,EAAGpkB,EAAI,EAAGmB,EAAE,CAC7B,CAAK,EACKuoB,EAAkB,SAAU/+G,IAAM,CACpC,KAAM,CAAE,EAAAhR,GAAG,EAAA7C,EAAG,EAAG2xH,EACjB,GAAI99G,GAAE,IAAK,EACP,MAAM,IAAI,MAAM,iBAAiB,EAGrC,KAAM,CAAE,GAAIg/G,GAAG,GAAIC,GAAG,GAAInE,GAAG,GAAIzgC,CAAG,EAAGr6E,GACjCk/G,GAAKf,EAAKa,GAAIA,EAAC,EACfG,GAAKhB,EAAKc,GAAIA,EAAC,EACfG,GAAKjB,EAAKrD,GAAIA,EAAC,EACfuE,GAAKlB,EAAKiB,GAAKA,EAAE,EACjBE,GAAMnB,EAAKe,GAAKlwH,EAAC,EACjB+6B,GAAOo0F,EAAKiB,GAAKjB,EAAKmB,GAAMH,EAAE,CAAC,EAC/BzkF,GAAQyjF,EAAKkB,GAAKlB,EAAKhyH,GAAIgyH,EAAKe,GAAKC,EAAE,CAAC,CAAC,EAC/C,GAAIp1F,KAAS2Q,GACT,MAAM,IAAI,MAAM,uCAAuC,EAE3D,MAAM6kF,GAAKpB,EAAKa,GAAIC,EAAC,EACfO,GAAKrB,EAAKrD,GAAIzgC,CAAC,EACrB,GAAIklC,KAAOC,GACP,MAAM,IAAI,MAAM,uCAAuC,EAC3D,MAAO,EACf,CAAK,EAGD,MAAM9pB,CAAM,CACR,YAAYhpC,GAAI+yD,GAAIC,GAAInyD,GAAI,CACxB,KAAK,GAAKb,GACV,KAAK,GAAK+yD,GACV,KAAK,GAAKC,GACV,KAAK,GAAKnyD,GACVkxD,EAAY,IAAK/xD,EAAE,EACnB+xD,EAAY,IAAKgB,EAAE,EACnBhB,EAAY,IAAKiB,EAAE,EACnBjB,EAAY,IAAKlxD,EAAE,EACnB,OAAO,OAAO,IAAI,CACrB,CACD,IAAI,GAAI,CACJ,OAAO,KAAK,SAAU,EAAC,CAC1B,CACD,IAAI,GAAI,CACJ,OAAO,KAAK,SAAU,EAAC,CAC1B,CACD,OAAO,WAAWvtD,GAAG,CACjB,GAAIA,cAAa01F,EACb,MAAM,IAAI,MAAM,4BAA4B,EAChD,KAAM,CAAE,EAAAnsG,GAAG,EAAA0F,IAAM+Q,IAAK,GACtB,OAAAy+G,EAAY,IAAKl1H,EAAC,EAClBk1H,EAAY,IAAKxvH,EAAC,EACX,IAAIymG,EAAMnsG,GAAG0F,GAAGwqH,MAAK0E,EAAK50H,GAAI0F,EAAC,CAAC,CAC1C,CACD,OAAO,WAAWgkG,GAAQ,CACtB,MAAM0sB,GAAQ3E,EAAG,YAAY/nB,GAAO,IAAKjzF,IAAMA,GAAE,EAAE,CAAC,EACpD,OAAOizF,GAAO,IAAI,CAACjzF,GAAGjW,KAAMiW,GAAE,SAAS2/G,GAAM51H,EAAC,CAAC,CAAC,EAAE,IAAI2rG,EAAM,UAAU,CACzE,CAED,OAAO,IAAIzC,GAAQmqB,GAAS,CACxB,OAAO,UAAU1nB,EAAO0oB,EAAInrB,GAAQmqB,EAAO,CAC9C,CAED,eAAepwB,GAAY,CACvB4yB,EAAK,cAAc,KAAM5yB,EAAU,CACtC,CAGD,gBAAiB,CACb+xB,EAAgB,IAAI,CACvB,CAED,OAAOtsE,GAAO,CACVksE,EAAYlsE,EAAK,EACjB,KAAM,CAAE,GAAIotE,GAAI,GAAIC,GAAI,GAAIC,EAAI,EAAG,KAC7B,CAAE,GAAIb,GAAI,GAAIC,EAAI,GAAIC,EAAI,EAAG3sE,GAC7ButE,GAAO7B,EAAK0B,GAAKT,EAAE,EACnBa,GAAO9B,EAAKe,GAAKa,EAAE,EACnBG,GAAO/B,EAAK2B,GAAKV,EAAE,EACnBe,GAAOhC,EAAKgB,EAAKY,EAAE,EACzB,OAAOC,KAASC,IAAQC,KAASC,EACpC,CACD,KAAM,CACF,OAAO,KAAK,OAAOzqB,EAAM,IAAI,CAChC,CACD,QAAS,CAEL,OAAO,IAAIA,EAAMyoB,EAAK,CAAC,KAAK,EAAE,EAAG,KAAK,GAAI,KAAK,GAAIA,EAAK,CAAC,KAAK,EAAE,CAAC,CACpE,CAID,QAAS,CACL,KAAM,CAAE,EAAAnvH,EAAG,EAAG8uH,EACR,CAAE,GAAI+B,GAAI,GAAIC,GAAI,GAAIC,EAAI,EAAG,KAC7Bx0B,GAAI4yB,EAAK0B,GAAKA,EAAE,EAChBr0B,EAAI2yB,EAAK2B,GAAKA,EAAE,EAChB15F,GAAI+3F,EAAKzE,MAAMyE,EAAK4B,GAAKA,EAAE,CAAC,EAC5Bt0B,GAAI0yB,EAAKnvH,GAAIu8F,EAAC,EACd60B,GAAOP,GAAKC,GACZxrH,GAAI6pH,EAAKA,EAAKiC,GAAOA,EAAI,EAAI70B,GAAIC,CAAC,EAClCvM,GAAIwM,GAAID,EACR60B,GAAIphC,GAAI74D,GACRquD,GAAIgX,GAAID,EACR80B,GAAKnC,EAAK7pH,GAAI+rH,EAAC,EACfE,GAAKpC,EAAKl/B,GAAIxK,EAAC,EACf+rC,GAAKrC,EAAK7pH,GAAImgF,EAAC,EACfgsC,GAAKtC,EAAKkC,GAAIphC,EAAC,EACrB,OAAO,IAAIyW,EAAM4qB,GAAIC,GAAIE,GAAID,EAAE,CAClC,CAID,IAAI/tE,GAAO,CACPksE,EAAYlsE,EAAK,EACjB,KAAM,CAAE,EAAAzjD,GAAG,EAAA7C,EAAG,EAAG2xH,EACX,CAAE,GAAI+B,GAAI,GAAIC,GAAI,GAAIC,EAAI,GAAI3qC,EAAI,EAAG,KACrC,CAAE,GAAI8pC,GAAI,GAAIC,GAAI,GAAIC,GAAI,GAAI/pC,EAAI,EAAG5iC,GAK3C,GAAIzjD,KAAM,OAAO,EAAE,EAAG,CAClB,MAAMu8F,GAAI4yB,GAAM2B,GAAKD,KAAOV,GAAKD,GAAG,EAC9B1zB,GAAI2yB,GAAM2B,GAAKD,KAAOV,GAAKD,GAAG,EAC9BmB,GAAIlC,EAAK3yB,GAAID,EAAC,EACpB,GAAI80B,KAAM7G,MACN,OAAO,KAAK,SAChB,MAAMpzF,GAAI+3F,EAAK4B,EAAKrG,MAAMrkC,EAAE,EACtBoW,GAAI0yB,EAAK/oC,GAAKskC,MAAM0F,EAAE,EACtB9qH,GAAIm3F,GAAIrlE,GACR64D,GAAIuM,GAAID,GACR9W,GAAIgX,GAAIrlE,GACRk6F,GAAKnC,EAAK7pH,GAAI+rH,EAAC,EACfE,GAAKpC,EAAKl/B,GAAIxK,EAAC,EACf+rC,GAAKrC,EAAK7pH,GAAImgF,EAAC,EACfgsC,GAAKtC,EAAKkC,GAAIphC,EAAC,EACrB,OAAO,IAAIyW,EAAM4qB,GAAIC,GAAIE,GAAID,EAAE,CAClC,CACD,MAAMj1B,GAAI4yB,EAAK0B,GAAKX,EAAE,EAChB1zB,GAAI2yB,EAAK2B,GAAKX,EAAE,EAChB/4F,GAAI+3F,EAAK/oC,GAAKjpF,GAAIkpF,EAAE,EACpBoW,GAAI0yB,EAAK4B,EAAKX,EAAE,EAChB9qH,GAAI6pH,GAAM0B,GAAKC,KAAOZ,GAAKC,IAAM5zB,GAAIC,EAAC,EACtC60B,GAAI50B,GAAIrlE,GACR64D,GAAIwM,GAAIrlE,GACRquD,GAAI0pC,EAAK3yB,GAAIx8F,GAAIu8F,EAAC,EAClB+0B,GAAKnC,EAAK7pH,GAAI+rH,EAAC,EACfE,GAAKpC,EAAKl/B,GAAIxK,EAAC,EACf+rC,GAAKrC,EAAK7pH,GAAImgF,EAAC,EACfgsC,GAAKtC,EAAKkC,GAAIphC,EAAC,EACrB,OAAO,IAAIyW,EAAM4qB,GAAIC,GAAIE,GAAID,EAAE,CAClC,CACD,SAAS/tE,GAAO,CACZ,OAAO,KAAK,IAAIA,GAAM,OAAQ,EACjC,CACD,KAAKziD,GAAG,CACJ,OAAO4vH,EAAK,WAAW,KAAM5vH,GAAG0lG,EAAM,UAAU,CACnD,CAED,SAAS8nB,GAAQ,CACb,MAAMxtH,GAAIwtH,GACVkB,SAAY,SAAU1uH,GAAGypH,MAAKsE,CAAW,EACzC,KAAM,CAAE,EAAA/9G,GAAG,EAAA4mB,EAAC,EAAK,KAAK,KAAK52B,EAAC,EAC5B,OAAO0lG,EAAM,WAAW,CAAC11F,GAAG4mB,EAAC,CAAC,EAAE,CAAC,CACpC,CAKD,eAAe42F,GAAQ,CACnB,MAAMxtH,GAAIwtH,GAEV,OADAkB,SAAY,SAAU1uH,GAAGwpH,MAAKuE,CAAW,EACrC/tH,KAAMwpH,MACC5mB,EACP,KAAK,OAAOA,CAAC,GAAK5iG,KAAMypH,MACjB,KACP,KAAK,OAAOx6B,CAAC,EACN,KAAK,KAAKjvF,EAAC,EAAE,EACjB4vH,EAAK,aAAa,KAAM5vH,EAAC,CACnC,CAKD,cAAe,CACX,OAAO,KAAK,eAAekuH,CAAQ,EAAE,IAAG,CAC3C,CAGD,eAAgB,CACZ,OAAO0B,EAAK,aAAa,KAAM7B,CAAW,EAAE,IAAG,CAClD,CAGD,SAASc,GAAI,CACT,OAAOD,EAAa,KAAMC,EAAE,CAC/B,CACD,eAAgB,CACZ,KAAM,CAAE,EAAGX,EAAU,EAAGJ,EACxB,OAAII,KAAazE,MACN,KACJ,KAAK,eAAeyE,EAAQ,CACtC,CAGD,OAAO,QAAQx3F,GAAKg6F,GAAS,GAAO,CAChC,KAAM,CAAE,EAAAv0H,GAAG,EAAA6C,EAAG,EAAG8uH,EACXj0H,GAAMmxH,EAAG,MACft0F,GAAMkzF,cAAY,WAAYlzF,GAAK78B,EAAG,EACtC,MAAM,SAAU62H,EAAM,EACtB,MAAM9f,EAASl6E,GAAI,QACbi6F,GAAWj6F,GAAI78B,GAAM,CAAC,EAC5B+2G,EAAO/2G,GAAM,CAAC,EAAI82H,GAAW,KAC7B,MAAM1xH,GAAI2xH,gBAAmBhgB,CAAM,EAI7B1wG,GAAMwwH,GAASrD,EAAOrC,EAAG,MAC/B0D,SAAY,aAAczvH,GAAGuqH,MAAKtpH,EAAG,EAGrC,MAAMwkG,GAAKypB,EAAKlvH,GAAIA,EAAC,EACf4hB,GAAIstG,EAAKzpB,GAAK+kB,KAAG,EACjBrhH,GAAI+lH,EAAKhyH,GAAIuoG,GAAK1lG,EAAC,EACzB,GAAI,CAAE,QAAA6xH,GAAS,MAAOt3H,EAAG,EAAG80H,EAAQxtG,GAAGzY,EAAC,EACxC,GAAI,CAACyoH,GACD,MAAM,IAAI,MAAM,qCAAqC,EACzD,MAAMC,IAAUv3H,GAAIkwH,SAASA,MACvBsH,IAAiBJ,GAAW,OAAU,EAC5C,GAAI,CAACD,IAAUn3H,KAAMiwH,OAAOuH,GAExB,MAAM,IAAI,MAAM,8BAA8B,EAClD,OAAIA,KAAkBD,KAClBv3H,GAAI40H,EAAK,CAAC50H,EAAC,GACRmsG,EAAM,WAAW,CAAE,EAAAnsG,GAAG,EAAA0F,EAAG,EACnC,CACD,OAAO,eAAe+xH,GAAS,CAC3B,OAAOC,GAAqBD,EAAO,EAAE,KACxC,CACD,YAAa,CACT,KAAM,CAAE,EAAAz3H,GAAG,EAAA0F,EAAG,EAAG,KAAK,SAAQ,EACxB0D,GAAQuuH,gBAAmBjyH,GAAG+rH,EAAG,KAAK,EAC5C,OAAAroH,GAAMA,GAAM,OAAS,CAAC,GAAKpJ,GAAIkwH,MAAM,IAAO,EACrC9mH,EACV,CACD,OAAQ,CACJ,OAAOwuH,WAAc,KAAK,WAAU,CAAE,CACzC,CACJ,CACDzrB,EAAM,KAAO,IAAIA,EAAMooB,EAAM,GAAIA,EAAM,GAAIrE,MAAK0E,EAAKL,EAAM,GAAKA,EAAM,EAAE,CAAC,EACzEpoB,EAAM,KAAO,IAAIA,EAAM8jB,MAAKC,MAAKA,MAAKD,KAAG,EACzC,KAAM,CAAE,KAAMv6B,EAAG,KAAM2T,CAAC,EAAK8C,EACvBkqB,EAAO,KAAKlqB,EAAOgmB,EAAc,CAAC,EACxC,SAAS0F,EAAKpyH,GAAG,CACb,OAAO,IAAIA,GAAG+uH,CAAW,CAC5B,CAED,SAASsD,GAAQ9sE,GAAM,CACnB,OAAO6sE,EAAKR,gBAAmBrsE,EAAI,CAAC,CACvC,CAED,SAAS0sE,GAAqBzqH,GAAK,CAC/B,MAAM3M,GAAM6xH,EACZllH,GAAMojH,cAAY,cAAepjH,GAAK3M,EAAG,EAGzC,MAAMy3H,GAAS1H,cAAY,qBAAsBqE,EAAMznH,EAAG,EAAG,EAAI3M,EAAG,EAC9DinC,GAAOwtF,EAAkBgD,GAAO,MAAM,EAAGz3H,EAAG,CAAC,EAC7Cs4B,GAASm/F,GAAO,MAAMz3H,GAAK,EAAIA,EAAG,EAClC2zH,GAAS6D,GAAQvwF,EAAI,EACrBskE,EAAQnW,EAAE,SAASu+B,EAAM,EACzB+D,GAAansB,EAAM,aACzB,MAAO,CAAE,KAAAtkE,GAAM,OAAA3O,GAAQ,OAAAq7F,GAAQ,MAAApoB,EAAO,WAAAmsB,EAAU,CACnD,CAED,SAASC,GAAaR,GAAS,CAC3B,OAAOC,GAAqBD,EAAO,EAAE,UACxC,CAED,SAASS,GAAmBv4G,GAAU,IAAI,cAAiBw4G,GAAM,CAC7D,MAAM9sH,GAAM+sH,YAAe,GAAGD,EAAI,EAClC,OAAOL,GAAQpD,EAAMM,EAAO3pH,GAAKglH,cAAY,UAAW1wG,EAAO,EAAG,CAAC,CAAC80G,CAAO,CAAC,CAAC,CAChF,CAED,SAAS3W,EAAKzyG,GAAKosH,GAASn/G,GAAU,GAAI,CACtCjN,GAAMglH,cAAY,UAAWhlH,EAAG,EAC5BopH,IACAppH,GAAMopH,EAAQppH,EAAG,GACrB,KAAM,CAAE,OAAAutB,GAAQ,OAAAq7F,GAAQ,WAAA+D,EAAU,EAAKN,GAAqBD,EAAO,EAC7DvjH,EAAIgkH,GAAmB5/G,GAAQ,QAASsgB,GAAQvtB,EAAG,EACnD0rG,GAAIrhB,EAAE,SAASxhF,CAAC,EAAE,WAAU,EAC5BwjB,GAAIwgG,GAAmB5/G,GAAQ,QAASy+F,GAAGihB,GAAY3sH,EAAG,EAC1DxI,GAAIg1H,EAAK3jH,EAAIwjB,GAAIu8F,EAAM,EAC7BkB,SAAY,cAAetyH,GAAGotH,MAAKuE,CAAW,EAC9C,MAAMlsH,GAAM8vH,YAAerhB,GAAG4gB,gBAAmB90H,GAAG4uH,EAAG,KAAK,CAAC,EAC7D,OAAOpB,cAAY,SAAU/nH,GAAK6pH,EAAc,CAAC,CACpD,CACD,MAAMkG,EAAa,eACnB,SAAStZ,EAAOlI,GAAKxrG,GAAKi1G,GAAWhoG,GAAU+/G,EAAY,CACvD,KAAM,CAAE,QAAA14G,GAAS,OAAAw3G,EAAQ,EAAG7+G,GACtBhY,EAAMmxH,EAAG,MACf5a,GAAMwZ,cAAY,YAAaxZ,GAAK,EAAIv2G,CAAG,EAC3C+K,GAAMglH,cAAY,UAAWhlH,EAAG,EAC5B8rH,KAAW,QACX,MAAM,SAAUA,EAAM,EACtB1C,IACAppH,GAAMopH,EAAQppH,EAAG,GACrB,MAAMxI,GAAIw0H,gBAAmBxgB,GAAI,MAAMv2G,EAAK,EAAIA,CAAG,CAAC,EAGpD,IAAI0hG,GAAG+U,GAAGuhB,GACV,GAAI,CACAt2B,GAAImK,EAAM,QAAQmU,GAAW6W,EAAM,EACnCpgB,GAAI5K,EAAM,QAAQ0K,GAAI,MAAM,EAAGv2G,CAAG,EAAG62H,EAAM,EAC3CmB,GAAK5iC,EAAE,eAAe7yF,EAAC,CAC1B,MACa,CACV,MAAO,EACV,CACD,GAAI,CAACs0H,IAAUn1B,GAAE,aAAc,EAC3B,MAAO,GACX,MAAMtqE,GAAIwgG,GAAmBv4G,GAASo3F,GAAE,WAAY,EAAE/U,GAAE,aAAc32F,EAAG,EAGzE,OAFY0rG,GAAE,IAAI/U,GAAE,eAAetqE,EAAC,CAAC,EAE1B,SAAS4gG,EAAE,EAAE,cAAa,EAAG,OAAOnsB,EAAM,IAAI,CAC5D,CACD,OAAAzW,EAAE,eAAe,CAAC,EAiBX,CACH,MAAA6+B,EACA,aAAA0D,GACA,KAAAna,EACA,OAAAiB,EACA,cAAe5S,EACf,MAtBU,CACV,qBAAAurB,GAEA,iBAAkB,IAAM9oD,EAAY6iD,EAAG,KAAK,EAO5C,WAAWhuB,GAAa,EAAGoI,GAAQM,EAAM,KAAM,CAC3C,OAAAN,GAAM,eAAepI,EAAU,EAC/BoI,GAAM,SAAS,OAAO,CAAC,CAAC,EACjBA,EACV,CACT,CAQA,CACA,CChbA,sEAGA,MAAMokB,MAAM,OAAO,CAAC,EACdC,MAAM,OAAO,CAAC,EACpB,SAASkE,eAAajqB,EAAO,CACzB,sBAAeA,EAAO,CAClB,EAAG,QACX,EAAO,CACC,eAAgB,gBAChB,YAAa,gBACb,kBAAmB,WACnB,OAAQ,WACR,WAAY,WACZ,GAAI,QACZ,CAAK,EAEM,OAAO,OAAO,CAAE,GAAGA,CAAO,EACrC,CAGO,SAAS,WAAWmqB,EAAU,CACjC,MAAMC,EAAQH,eAAaE,CAAQ,EAC7B,CAAE,EAAA5I,CAAG,EAAG6I,EACRK,EAAQnuH,GAAM,IAAIA,EAAGilH,CAAC,EACtB6M,EAAiBhE,EAAM,eACvBiE,EAAkB,KAAK,KAAKD,EAAiB,CAAC,EAC9C3F,EAAW2B,EAAM,YACjBQ,EAAoBR,EAAM,oBAAuBnrH,GAAUA,GAC3DqvH,EAAalE,EAAM,aAAgBv0H,GAAM,IAAIA,EAAG0rH,EAAI,OAAO,CAAC,EAAGA,CAAC,GAWtE,SAASgN,EAAMlyH,EAAMmyH,EAAKC,EAAK,CAC3B,MAAMC,EAAQjE,EAAKpuH,GAAQmyH,EAAMC,EAAI,EACrC,OAAAD,EAAM/D,EAAK+D,EAAME,CAAK,EACtBD,EAAMhE,EAAKgE,EAAMC,CAAK,EACf,CAACF,EAAKC,CAAG,CACnB,CAGD,MAAME,GAAOvE,EAAM,EAAI,OAAO,CAAC,GAAK,OAAO,CAAC,EAO5C,SAASwE,EAAiBzxG,EAAG2sG,EAAQ,CACjC,SAAS,IAAK3sG,EAAG2oG,MAAKvE,CAAC,EACvB,SAAS,SAAUuI,EAAQhE,MAAKvE,CAAC,EAGjC,MAAMh0F,EAAIu8F,EACJ+E,EAAM1xG,EACZ,IAAIqxG,EAAMzI,MACN+I,EAAMhJ,MACN2I,GAAMtxG,EACN4xG,GAAMhJ,MACN1pH,GAAOypH,MACPkJ,GACJ,QAASp3G,EAAI,OAAOw2G,EAAiB,CAAC,EAAGx2G,GAAKkuG,MAAKluG,IAAK,CACpD,MAAMq3G,EAAO1hG,GAAK3V,EAAKmuG,MACvB1pH,IAAQ4yH,EACRD,GAAKT,EAAMlyH,GAAMmyH,EAAKC,EAAG,EACzBD,EAAMQ,GAAG,CAAC,EACVP,GAAMO,GAAG,CAAC,EACVA,GAAKT,EAAMlyH,GAAMyyH,EAAKC,EAAG,EACzBD,EAAME,GAAG,CAAC,EACVD,GAAMC,GAAG,CAAC,EACV3yH,GAAO4yH,EACP,MAAMp3B,EAAI22B,EAAMM,EACVI,GAAKzE,EAAK5yB,EAAIA,CAAC,EACfC,GAAI02B,EAAMM,EACVK,GAAK1E,EAAK3yB,GAAIA,EAAC,EACfl3F,GAAIsuH,GAAKC,GACTz8F,GAAI+7F,GAAMM,GACVh3B,GAAI02B,GAAMM,GACVK,EAAK3E,EAAK1yB,GAAIF,CAAC,EACfw3B,GAAK5E,EAAK/3F,GAAIolE,EAAC,EACfw3B,GAAOF,EAAKC,GACZE,GAAQH,EAAKC,GACnBZ,GAAMhE,EAAK6E,GAAOA,EAAI,EACtBP,GAAMtE,EAAKoE,EAAMpE,EAAK8E,GAAQA,EAAK,CAAC,EACpCf,EAAM/D,EAAKyE,GAAKC,EAAE,EAClBL,EAAMrE,EAAK7pH,IAAKsuH,GAAKzE,EAAKkE,EAAM/tH,EAAC,EAAE,CACtC,CAEDouH,GAAKT,EAAMlyH,GAAMmyH,EAAKC,EAAG,EACzBD,EAAMQ,GAAG,CAAC,EACVP,GAAMO,GAAG,CAAC,EAEVA,GAAKT,EAAMlyH,GAAMyyH,EAAKC,EAAG,EACzBD,EAAME,GAAG,CAAC,EACVD,GAAMC,GAAG,CAAC,EAEV,MAAMhsB,EAAKsrB,EAAWQ,CAAG,EAEzB,OAAOrE,EAAK+D,EAAMxrB,CAAE,CACvB,CACD,SAASwsB,EAAkBryG,EAAG,CAC1B,OAAO,gBAAgBstG,EAAKttG,CAAC,EAAGkxG,CAAe,CAClD,CACD,SAASoB,EAAkBC,EAAM,CAG7B,MAAMvyG,EAAI+oG,cAAY,eAAgBwJ,EAAMrB,CAAe,EAC3D,OAAI5F,IAAa,KACbtrG,EAAE,EAAE,GAAK,KACN,gBAAgBA,CAAC,CAC3B,CACD,SAASwyG,EAAarzH,EAAG,CACrB,MAAM2C,EAAQinH,cAAY,SAAU5pH,CAAC,EAC/BnG,EAAM8I,EAAM,OAClB,GAAI9I,IAAQk4H,GAAmBl4H,IAAQsyH,EACnC,MAAM,IAAI,MAAM,YAAY4F,CAAe,OAAO5F,CAAQ,eAAetyH,CAAG,EAAE,EAClF,OAAO,gBAAgBy0H,EAAkB3rH,CAAK,CAAC,CAClD,CACD,SAAS2wH,EAAW9F,EAAQ3sG,EAAG,CAC3B,MAAM0yG,EAASJ,EAAkBtyG,CAAC,EAC5B2yG,EAAUH,EAAa7F,CAAM,EAC7BiG,EAAKnB,EAAiBiB,EAAQC,CAAO,EAG3C,GAAIC,IAAOjK,MACP,MAAM,IAAI,MAAM,wCAAwC,EAC5D,OAAO0J,EAAkBO,CAAE,CAC9B,CAED,MAAMC,EAAUR,EAAkBpF,EAAM,EAAE,EAC1C,SAAS6F,EAAenG,EAAQ,CAC5B,OAAO8F,EAAW9F,EAAQkG,CAAO,CACpC,CACD,MAAO,CACH,WAAAJ,EACA,eAAAK,EACA,gBAAiB,CAACpZ,EAAYV,IAAcyZ,EAAW/Y,EAAYV,CAAS,EAC5E,aAAeU,GAAeoZ,EAAepZ,CAAU,EACvD,MAAO,CAAE,iBAAkB,IAAMuT,EAAM,YAAYA,EAAM,WAAW,CAAG,EACvE,QAAS4F,CACjB,CACA,CCpJA,sEAcA,MAAM,UAAY,OAAO,+EAA+E,EAElG,gBAAkC,OAAO,+EAA+E,EAElH,OAAO,CAAC,EAAE,MAACjK,MAAM,OAAO,CAAC,EAAGC,MAAM,OAAO,CAAC,EAAGe,MAAM,OAAO,CAAC,EAEjE,IAAM,OAAO,CAAC,EAAG,IAAM,OAAO,CAAC,EACrC,SAAS,oBAAoBlxH,EAAG,CAE5B,MAAMq6H,EAAO,OAAO,EAAE,EAAGC,EAAO,OAAO,EAAE,EAAGC,EAAO,OAAO,EAAE,EAAGC,EAAO,OAAO,EAAE,EACzE9O,EAAI,UAEJt/D,EADMpsD,EAAIA,EAAK0rH,EACJ1rH,EAAK0rH,EAChBruB,EAAM,KAAKjxC,EAAI+jE,MAAKzE,CAAC,EAAIt/D,EAAMs/D,EAC/BluB,EAAM,KAAKH,EAAI6yB,MAAKxE,CAAC,EAAI1rH,EAAK0rH,EAC9B+O,EAAO,KAAKj9B,EAAI,IAAKkuB,CAAC,EAAIluB,EAAMkuB,EAChCgP,EAAO,KAAKD,EAAKJ,EAAM3O,CAAC,EAAI+O,EAAO/O,EACnCiP,EAAO,KAAKD,EAAKJ,EAAM5O,CAAC,EAAIgP,EAAOhP,EACnCkP,EAAO,KAAKD,EAAKJ,EAAM7O,CAAC,EAAIiP,EAAOjP,EACnCmP,EAAQ,KAAKD,EAAKJ,EAAM9O,CAAC,EAAIkP,EAAOlP,EACpCoP,EAAQ,KAAKD,EAAML,EAAM9O,CAAC,EAAIkP,EAAOlP,EACrCqP,EAAQ,KAAKD,EAAMT,EAAM3O,CAAC,EAAI+O,EAAO/O,EAG3C,MAAO,CAAE,UAFU,KAAKqP,EAAM5K,MAAKzE,CAAC,EAAI1rH,EAAK0rH,EAEzB,GAAAt/D,EACxB,CACA,SAAS,kBAAkBhjD,EAAO,CAG9B,OAAAA,EAAM,CAAC,GAAK,IAEZA,EAAM,EAAE,GAAK,IAEbA,EAAM,EAAE,GAAK,GACNA,CACX,CAEA,SAAS,QAAQke,EAAGzY,EAAG,CACnB,MAAM68G,EAAI,UACJsP,EAAK,IAAInsH,EAAIA,EAAIA,EAAG68G,CAAC,EACrBuP,EAAK,IAAID,EAAKA,EAAKnsH,EAAG68G,CAAC,EAEvB1xB,EAAM,oBAAoB1yE,EAAI2zG,CAAE,EAAE,UACxC,IAAIj7H,EAAI,IAAIsnB,EAAI0zG,EAAKhhC,EAAK0xB,CAAC,EAC3B,MAAMwP,EAAM,IAAIrsH,EAAI7O,EAAIA,EAAG0rH,CAAC,EACtByP,EAAQn7H,EACRo7H,EAAQ,IAAIp7H,EAAI,gBAAiB0rH,CAAC,EAClC2P,EAAWH,IAAQ5zG,EACnBg0G,EAAWJ,IAAQ,IAAI,CAAC5zG,EAAGokG,CAAC,EAC5B6P,EAASL,IAAQ,IAAI,CAAC5zG,EAAI,gBAAiBokG,CAAC,EAClD,OAAI2P,IACAr7H,EAAIm7H,IACJG,GAAYC,KACZv7H,EAAIo7H,GACJ,aAAap7H,EAAG0rH,CAAC,IACjB1rH,EAAI,IAAI,CAACA,EAAG0rH,CAAC,GACV,CAAE,QAAS2P,GAAYC,EAAU,MAAOt7H,CAAC,CACpD,CAYA,MAAMyxH,KAA4B,MAAM,UAAW,OAAW,EAAI,EAC5D,gBAA0C,CAE5C,EAAG,OAAO,EAAE,EAGZ,EAAG,OAAO,+EAA+E,EAE7F,GAAIA,KAGA,EAAG,OAAO,8EAA8E,EAExF,EAAG,IAEH,GAAI,OAAO,+EAA+E,EAC1F,GAAI,OAAO,+EAA+E,EAC1F,KAAMljC,SACV,YAAI3f,cACA,kBAIA,OACJ,EAIa,QAAiC,eAAe,eAAe,EAc/D,OAAgC,WAAW,CACpD,EAAG,UACH,EAAG,OAAO,MAAM,EAChB,eAAgB,IAChB,YAAa,GACb,GAAI,OAAO,CAAC,EACZ,WAAa5uE,GAAM,CACf,MAAM0rH,EAAI,UAEJ,CAAE,UAAA8P,EAAW,GAAApvE,CAAI,EAAG,oBAAoBpsD,CAAC,EAC/C,OAAO,IAAI,KAAKw7H,EAAWtK,MAAKxF,CAAC,EAAIt/D,EAAIs/D,CAAC,CAC7C,EACD,kBACJ,YAAI98C,aACJ,CAAC,EC1IK6sD,yBAAyB,GACzBC,0BAA0B,GAC1BC,mBAAmB,GAGlB,SAASC,eAAc,CAE1B,MAAMC,EAAgBjS,QAAG,MAAM,iBAAgB,EACzCtJ,EAAYsJ,QAAG,aAAaiS,CAAa,EAG/C,MAAO,CACH,WAFeC,aAAWD,EAAevb,CAAS,EAGlD,UAAAA,CACR,CACA,CAIO,SAASyb,sBAAoBnnB,EAAM,CACtC,GAAIA,EAAK,SAAW+mB,mBAChB,MAAM,IAAI,UAAU,oCAAoC,EAEvD,GAAI,EAAE/mB,aAAgB,YACvB,MAAM,IAAI,UAAU,iDAAiD,EAGzE,MAAMinB,EAAgBjnB,EAChB0L,EAAYsJ,QAAG,aAAaiS,CAAa,EAE/C,MAAO,CACH,WAFeC,aAAWD,EAAevb,CAAS,EAGlD,UAAAA,CACR,CACA,CACO,SAAS0b,cAAYhb,EAAY31G,EAAK,CACzC,MAAMwwH,EAAgB7a,EAAW,SAAS,EAAG2a,kBAAgB,EAC7D,OAAO/R,QAAG,KAAKv+G,aAAe,WAAaA,EAAMA,EAAI,WAAYwwH,CAAa,CAClF,CACO,SAASI,gBAAc3b,EAAWzJ,EAAKxrG,EAAK,CAC/C,OAAOu+G,QAAG,OAAO/S,EAAKxrG,aAAe,WAAaA,EAAMA,EAAI,WAAYi1G,CAAS,CACrF,CACA,SAASwb,aAAWD,EAAevb,EAAW,CAC1C,MAAMU,EAAa,IAAI,WAAW0a,yBAAuB,EACzD,QAASl7H,EAAI,EAAGA,EAAIm7H,mBAAkBn7H,IAClCwgH,EAAWxgH,CAAC,EAAIq7H,EAAcr7H,CAAC,EAC/BwgH,EAAW2a,mBAAmBn7H,CAAC,EAAI8/G,EAAU9/G,CAAC,EAElD,OAAOwgH,CACX,CCjDO,MAAM99G,SAASmjD,UAAQ,CAC1B,OAAQ,IACR,KAAM,SACN,SAAU,mEACV,YAAa,CACjB,CAAC,EACwBA,UAAQ,CAC7B,OAAQ,IACR,KAAM,YACN,SAAU,oEACV,YAAa,CACjB,CAAC,EACwBA,UAAQ,CAC7B,OAAQ,IACR,KAAM,YACN,SAAU,mEACV,YAAa,CACjB,CAAC,EAC2BA,UAAQ,CAChC,OAAQ,IACR,KAAM,eACN,SAAU,oEACV,YAAa,CACjB,CAAC,ECXM,MAAM61E,0BAA0B,CAAE,IAAK,UAAW,IAAK,GAAM,EAAG,yBAA0B,QAAS,CAAC,UAAW,SAAS,EAAG,IAAK,KAAK,EAErI,SAASl0E,SAAO5H,EAAM,CACzB,MAAMskB,EAA+B,UACrC,IAAIyiD,EAA+B,GACnC,MAAMgV,EAAmC,GACnCl0E,EAAyB,UACzBm0E,EAAiC,GACjC9uD,EAAiC,MACjCoB,EAAS2tD,YAAU,MACzBlV,GAAa,EAKb,eAAe9B,EAAQjsG,EAAMo3E,EAAU,CACnC,MAAMC,EAAO/hB,EAAO,gBAAgB,IAAI,WAAW0tD,CAAU,CAAC,EACxD1nB,EAAQhmC,EAAO,gBAAgB,IAAI,WAAWytD,CAAW,CAAC,EAC1DG,EAAS,CAAE,KAAM53D,EAAW,GAAIgwC,CAAK,EACvC,OAAOlkB,GAAa,WACpBA,EAAWpsF,aAAWosF,CAAQ,GAElC,IAAI+rC,EACJ,GAAI/rC,EAAS,SAAW,EAAG,CACvB+rC,EAAY,MAAM7tD,EAAO,OAAO,UAAU,MAAOwtD,0BAAyB,CAAE,KAAM,SAAW,EAAE,GAAM,CAAC,SAAS,CAAC,EAChH,GAAI,CACA,MAAMM,EAAe,CAAE,KAAM,SAAU,KAAA/rC,EAAM,WAAAnjB,EAAY,KAAM,CAAE,KAAMrlB,CAAM,GACvEw0E,EAA8B,MAAM/tD,EAAO,OAAO,UAAU,MAAO8hB,EAAU,CAAE,KAAM,QAAU,EAAE,GAAO,CAAC,WAAW,CAAC,EAC3H+rC,EAAY,MAAM7tD,EAAO,OAAO,UAAU8tD,EAAcC,EAA6B,CAAE,KAAM/3D,EAAW,OAAQyiD,CAAS,EAAI,GAAM,CAAC,SAAS,CAAC,CACjJ,MACK,CACFoV,EAAY,MAAM7tD,EAAO,OAAO,UAAU,MAAOwtD,0BAAyB,CAAE,KAAM,SAAW,EAAE,GAAM,CAAC,SAAS,CAAC,CACnH,CACJ,KACI,CAED,MAAMM,EAAe,CAAE,KAAM,SAAU,KAAA/rC,EAAM,WAAAnjB,EAAY,KAAM,CAAE,KAAMrlB,CAAM,GACvEx2C,EAAS,MAAMi9D,EAAO,OAAO,UAAU,MAAO8hB,EAAU,CAAE,KAAM,QAAU,EAAE,GAAO,CAAC,WAAW,CAAC,EACtG+rC,EAAY,MAAM7tD,EAAO,OAAO,UAAU8tD,EAAc/qH,EAAQ,CAAE,KAAMizD,EAAW,OAAQyiD,CAAS,EAAI,GAAM,CAAC,SAAS,CAAC,CAC5H,CAED,MAAMuV,EAAa,MAAMhuD,EAAO,OAAO,QAAQ4tD,EAAQC,EAAWnjH,CAAI,EACtE,OAAO2yC,SAAO,CAAC0kC,EAAM6rC,EAAO,GAAI,IAAI,WAAWI,CAAU,CAAC,CAAC,CAC9D,CAOD,eAAeh2D,EAAQttD,EAAMo3E,EAAU,CACnC,MAAMC,EAAOr3E,EAAK,SAAS,EAAGgjH,CAAU,EAClC1nB,EAAQt7F,EAAK,SAASgjH,EAAYA,EAAaD,CAAW,EAC1DO,EAAatjH,EAAK,SAASgjH,EAAaD,CAAW,EACnDG,EAAS,CAAE,KAAM53D,EAAW,GAAIgwC,CAAK,EACvC,OAAOlkB,GAAa,WACpBA,EAAWpsF,aAAWosF,CAAQ,GAElC,IAAI+rC,EACJ,GAAI/rC,EAAS,SAAW,EACpB,GAAI,CACA,MAAMgsC,EAAe,CAAE,KAAM,SAAU,KAAA/rC,EAAM,WAAAnjB,EAAY,KAAM,CAAE,KAAMrlB,CAAM,GACvEw0E,EAA8B,MAAM/tD,EAAO,OAAO,UAAU,MAAO8hB,EAAU,CAAE,KAAM,QAAU,EAAE,GAAO,CAAC,WAAW,CAAC,EAC3H+rC,EAAY,MAAM7tD,EAAO,OAAO,UAAU8tD,EAAcC,EAA6B,CAAE,KAAM/3D,EAAW,OAAQyiD,CAAS,EAAI,GAAM,CAAC,SAAS,CAAC,CACjJ,MACK,CACFoV,EAAY,MAAM7tD,EAAO,OAAO,UAAU,MAAOwtD,0BAAyB,CAAE,KAAM,SAAW,EAAE,GAAM,CAAC,SAAS,CAAC,CACnH,KAEA,CAED,MAAMM,EAAe,CAAE,KAAM,SAAU,KAAA/rC,EAAM,WAAAnjB,EAAY,KAAM,CAAE,KAAMrlB,CAAM,GACvEx2C,EAAS,MAAMi9D,EAAO,OAAO,UAAU,MAAO8hB,EAAU,CAAE,KAAM,QAAU,EAAE,GAAO,CAAC,WAAW,CAAC,EACtG+rC,EAAY,MAAM7tD,EAAO,OAAO,UAAU8tD,EAAc/qH,EAAQ,CAAE,KAAMizD,EAAW,OAAQyiD,CAAS,EAAI,GAAM,CAAC,SAAS,CAAC,CAC5H,CAED,MAAMwV,EAAY,MAAMjuD,EAAO,OAAO,QAAQ4tD,EAAQC,EAAWG,CAAU,EAC3E,OAAO,IAAI,WAAWC,CAAS,CAClC,CAKD,MAJe,CACX,QAAAtX,EACA,QAAA3+C,CACR,CAEA,CC1FO,eAAek2D,WAAS5b,EAAYxwB,EAAU,CAEjD,MAAMqsC,EAAe,MADNC,WACmB,QAAQ9b,EAAYxwB,CAAQ,EAC9D,OAAOttF,SAAO,OAAO25H,CAAY,CACrC,CCTA,MAAM31E,KAAK,KAAK,IAAI,EAAG,CAAC,EAClBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EAEnBf,MAAM,IAENC,OAAO,IACN,SAASqB,iBAAejlD,EAAO,CAClC,GAAIA,EAAQokD,KACR,MAAO,GAEX,GAAIpkD,EAAQqkD,KACR,MAAO,GAEX,GAAIrkD,EAAQskD,KACR,MAAO,GAEX,GAAItkD,EAAQukD,KACR,MAAO,GAEX,GAAIvkD,EAAQwkD,KACR,MAAO,GAEX,GAAIxkD,EAAQykD,KACR,MAAO,GAEX,GAAIzkD,EAAQ0kD,KACR,MAAO,GAEX,GAAI,OAAO,kBAAoB,MAAQ1kD,EAAQ,OAAO,iBAClD,MAAM,IAAI,WAAW,yBAAyB,EAElD,MAAO,EACX,CACO,SAAS,iBAAiBA,EAAOiB,EAAK7B,EAAS,EAAG,CACrD,OAAQ6lD,iBAAejlD,CAAK,EAAC,CACzB,IAAK,GACDiB,EAAI7B,GAAQ,EAAKY,EAAQ,IAAQ2jD,MACjC3jD,GAAS,IAEb,IAAK,GACDiB,EAAI7B,GAAQ,EAAKY,EAAQ,IAAQ2jD,MACjC3jD,GAAS,IAEb,IAAK,GACDiB,EAAI7B,GAAQ,EAAKY,EAAQ,IAAQ2jD,MACjC3jD,GAAS,IAEb,IAAK,GACDiB,EAAI7B,GAAQ,EAAKY,EAAQ,IAAQ2jD,MACjC3jD,GAAS,IAEb,IAAK,GACDiB,EAAI7B,GAAQ,EAAKY,EAAQ,IAAQ2jD,MACjC3jD,KAAW,EAEf,IAAK,GACDiB,EAAI7B,GAAQ,EAAKY,EAAQ,IAAQ2jD,MACjC3jD,KAAW,EAEf,IAAK,GACDiB,EAAI7B,GAAQ,EAAKY,EAAQ,IAAQ2jD,MACjC3jD,KAAW,EAEf,IAAK,GAAG,CACJiB,EAAI7B,GAAQ,EAAKY,EAAQ,IACzBA,KAAW,EACX,KACH,CACD,QAAS,MAAM,IAAI,MAAM,aAAa,CACzC,CACD,OAAOiB,CACX,CACO,SAAS,qBAAqBjB,EAAOiB,EAAK7B,EAAS,EAAG,CACzD,OAAQ6lD,iBAAejlD,CAAK,EAAC,CACzB,IAAK,GACDiB,EAAI,IAAI7B,IAAWY,EAAQ,IAAQ2jD,KAAG,EACtC3jD,GAAS,IAEb,IAAK,GACDiB,EAAI,IAAI7B,IAAWY,EAAQ,IAAQ2jD,KAAG,EACtC3jD,GAAS,IAEb,IAAK,GACDiB,EAAI,IAAI7B,IAAWY,EAAQ,IAAQ2jD,KAAG,EACtC3jD,GAAS,IAEb,IAAK,GACDiB,EAAI,IAAI7B,IAAWY,EAAQ,IAAQ2jD,KAAG,EACtC3jD,GAAS,IAEb,IAAK,GACDiB,EAAI,IAAI7B,IAAWY,EAAQ,IAAQ2jD,KAAG,EACtC3jD,KAAW,EAEf,IAAK,GACDiB,EAAI,IAAI7B,IAAWY,EAAQ,IAAQ2jD,KAAG,EACtC3jD,KAAW,EAEf,IAAK,GACDiB,EAAI,IAAI7B,IAAWY,EAAQ,IAAQ2jD,KAAG,EACtC3jD,KAAW,EAEf,IAAK,GAAG,CACJiB,EAAI,IAAI7B,IAAWY,EAAQ,GAAI,EAC/BA,KAAW,EACX,KACH,CACD,QAAS,MAAM,IAAI,MAAM,aAAa,CACzC,CACD,OAAOiB,CACX,CACO,SAAS,iBAAiBA,EAAK7B,EAAQ,CAC1C,IAAIuC,EAAIV,EAAI7B,CAAM,EACdoG,EAAM,EAqCV,GApCAA,GAAO7D,EAAIiiD,OACPjiD,EAAIgiD,QAGRhiD,EAAIV,EAAI7B,EAAS,CAAC,EAClBoG,IAAQ7D,EAAIiiD,SAAS,EACjBjiD,EAAIgiD,SAGRhiD,EAAIV,EAAI7B,EAAS,CAAC,EAClBoG,IAAQ7D,EAAIiiD,SAAS,GACjBjiD,EAAIgiD,SAGRhiD,EAAIV,EAAI7B,EAAS,CAAC,EAClBoG,IAAQ7D,EAAIiiD,SAAS,GACjBjiD,EAAIgiD,SAGRhiD,EAAIV,EAAI7B,EAAS,CAAC,EAClBoG,IAAQ7D,EAAIiiD,QAAQW,KAChB5iD,EAAIgiD,SAGRhiD,EAAIV,EAAI7B,EAAS,CAAC,EAClBoG,IAAQ7D,EAAIiiD,QAAQY,KAChB7iD,EAAIgiD,SAGRhiD,EAAIV,EAAI7B,EAAS,CAAC,EAClBoG,IAAQ7D,EAAIiiD,QAAQa,KAChB9iD,EAAIgiD,SAGRhiD,EAAIV,EAAI7B,EAAS,CAAC,EAClBoG,IAAQ7D,EAAIiiD,QAAQc,KAChB/iD,EAAIgiD,OACJ,OAAOn+C,EAEX,MAAM,IAAI,WAAW,yBAAyB,CAClD,CACO,SAAS,qBAAqBvE,EAAK7B,EAAQ,CAC9C,IAAIuC,EAAIV,EAAI,IAAI7B,CAAM,EAClBoG,EAAM,EAqCV,GApCAA,GAAO7D,EAAIiiD,OACPjiD,EAAIgiD,QAGRhiD,EAAIV,EAAI,IAAI7B,EAAS,CAAC,EACtBoG,IAAQ7D,EAAIiiD,SAAS,EACjBjiD,EAAIgiD,SAGRhiD,EAAIV,EAAI,IAAI7B,EAAS,CAAC,EACtBoG,IAAQ7D,EAAIiiD,SAAS,GACjBjiD,EAAIgiD,SAGRhiD,EAAIV,EAAI,IAAI7B,EAAS,CAAC,EACtBoG,IAAQ7D,EAAIiiD,SAAS,GACjBjiD,EAAIgiD,SAGRhiD,EAAIV,EAAI,IAAI7B,EAAS,CAAC,EACtBoG,IAAQ7D,EAAIiiD,QAAQW,KAChB5iD,EAAIgiD,SAGRhiD,EAAIV,EAAI,IAAI7B,EAAS,CAAC,EACtBoG,IAAQ7D,EAAIiiD,QAAQY,KAChB7iD,EAAIgiD,SAGRhiD,EAAIV,EAAI,IAAI7B,EAAS,CAAC,EACtBoG,IAAQ7D,EAAIiiD,QAAQa,KAChB9iD,EAAIgiD,SAGRhiD,EAAIV,EAAI,IAAI7B,EAAS,CAAC,EACtBoG,IAAQ7D,EAAIiiD,QAAQc,KAChB/iD,EAAIgiD,OACJ,OAAOn+C,EAEX,MAAM,IAAI,WAAW,yBAAyB,CAClD,CACO,SAAS87C,SAAOthD,EAAOiB,EAAK7B,EAAS,EAAG,CAI3C,OAHI6B,GAAO,OACPA,EAAMG,cAAY6jD,iBAAejlD,CAAK,CAAC,GAEvCiB,aAAe,WACR,iBAAiBjB,EAAOiB,EAAK7B,CAAM,EAGnC,qBAAqBY,EAAOiB,EAAK7B,CAAM,CAEtD,CACO,SAASgjD,SAAOnhD,EAAK7B,EAAS,EAAG,CACpC,OAAI6B,aAAe,WACR,iBAAiBA,EAAK7B,CAAM,EAG5B,qBAAqB6B,EAAK7B,CAAM,CAE/C,CChOA,MAAM,IAAM,IAAI,aAAa,CAAC,EAAE,CAAC,EAC3B,IAAM,IAAI,WAAW,IAAI,MAAM,EAI9B,SAAS,aAAagF,EAAKnD,EAAK6B,EAAK,CACxC,IAAI,CAAC,EAAIsB,EACTnD,EAAI6B,CAAG,EAAI,IAAI,CAAC,EAChB7B,EAAI6B,EAAM,CAAC,EAAI,IAAI,CAAC,EACpB7B,EAAI6B,EAAM,CAAC,EAAI,IAAI,CAAC,EACpB7B,EAAI6B,EAAM,CAAC,EAAI,IAAI,CAAC,CACxB,CAcO,SAAS,YAAY7B,EAAK6B,EAAK,CAClC,WAAI,CAAC,EAAI7B,EAAI6B,CAAG,EAChB,IAAI,CAAC,EAAI7B,EAAI6B,EAAM,CAAC,EACpB,IAAI,CAAC,EAAI7B,EAAI6B,EAAM,CAAC,EACpB,IAAI,CAAC,EAAI7B,EAAI6B,EAAM,CAAC,EACb,IAAI,CAAC,CAChB,CAWA,MAAM,IAAM,IAAI,aAAa,CAAC,EAAE,CAAC,EAC3B,IAAM,IAAI,WAAW,IAAI,MAAM,EAI9B,SAAS,cAAcsB,EAAKnD,EAAK6B,EAAK,CACzC,IAAI,CAAC,EAAIsB,EACTnD,EAAI6B,CAAG,EAAI,IAAI,CAAC,EAChB7B,EAAI6B,EAAM,CAAC,EAAI,IAAI,CAAC,EACpB7B,EAAI6B,EAAM,CAAC,EAAI,IAAI,CAAC,EACpB7B,EAAI6B,EAAM,CAAC,EAAI,IAAI,CAAC,EACpB7B,EAAI6B,EAAM,CAAC,EAAI,IAAI,CAAC,EACpB7B,EAAI6B,EAAM,CAAC,EAAI,IAAI,CAAC,EACpB7B,EAAI6B,EAAM,CAAC,EAAI,IAAI,CAAC,EACpB7B,EAAI6B,EAAM,CAAC,EAAI,IAAI,CAAC,CACxB,CAkBO,SAAS,aAAa7B,EAAK6B,EAAK,CACnC,WAAI,CAAC,EAAI7B,EAAI6B,CAAG,EAChB,IAAI,CAAC,EAAI7B,EAAI6B,EAAM,CAAC,EACpB,IAAI,CAAC,EAAI7B,EAAI6B,EAAM,CAAC,EACpB,IAAI,CAAC,EAAI7B,EAAI6B,EAAM,CAAC,EACpB,IAAI,CAAC,EAAI7B,EAAI6B,EAAM,CAAC,EACpB,IAAI,CAAC,EAAI7B,EAAI6B,EAAM,CAAC,EACpB,IAAI,CAAC,EAAI7B,EAAI6B,EAAM,CAAC,EACpB,IAAI,CAAC,EAAI7B,EAAI6B,EAAM,CAAC,EACb,IAAI,CAAC,CAChB,CCpFA,MAAM,wBAA0B,OAAO,OAAO,gBAAgB,EACxD,wBAA0B,OAAO,OAAO,gBAAgB,EAUvD,qBAAMm3H,EAAS,CAClB,GACA,GACA,YAAYhzH,EAAIC,EAAI,CAMhB,KAAK,GAAKD,EAAK,EAIf,KAAK,GAAKC,EAAK,CAClB,CAID,SAASujD,EAAW,GAAO,CACvB,GAAI,CAACA,GAAa,KAAK,KAAO,GAAM,EAAG,CACnC,MAAMxjD,EAAK,CAAC,KAAK,GAAK,IAAM,EAC5B,IAAIC,EAAK,CAAC,KAAK,KAAO,EACtB,OAAID,IAAO,IACPC,EAAKA,EAAK,IAAM,GAEb,EAAED,EAAKC,EAAK,WACtB,CACD,OAAO,KAAK,GAAK,KAAK,GAAK,UAC9B,CAID,SAASujD,EAAW,GAAO,CACvB,GAAIA,EACA,OAAO,OAAO,KAAK,KAAO,CAAC,GAAK,OAAO,KAAK,KAAO,CAAC,GAAK,KAE7D,GAAK,KAAK,KAAO,GAAW,CACxB,MAAMxjD,EAAK,CAAC,KAAK,GAAK,IAAM,EAC5B,IAAIC,EAAK,CAAC,KAAK,KAAO,EACtB,OAAID,IAAO,IACPC,EAAKA,EAAK,IAAM,GAEb,EAAE,OAAOD,CAAE,GAAK,OAAOC,CAAE,GAAK,KACxC,CACD,OAAO,OAAO,KAAK,KAAO,CAAC,GAAK,OAAO,KAAK,KAAO,CAAC,GAAK,IAC5D,CAID,SAASujD,EAAW,GAAO,CACvB,OAAO,KAAK,SAASA,CAAQ,EAAE,SAAQ,CAC1C,CAID,UAAW,CACP,MAAMnH,EAAO,KAAK,IAAM,GACxB,YAAK,KAAO,KAAK,IAAM,EAAI,KAAK,KAAO,IAAMA,KAAU,EACvD,KAAK,IAAM,KAAK,IAAM,EAAIA,KAAU,EAC7B,IACV,CAID,UAAW,CACP,MAAMA,EAAO,EAAE,KAAK,GAAK,GACzB,YAAK,KAAO,KAAK,KAAO,EAAI,KAAK,IAAM,IAAMA,KAAU,EACvD,KAAK,IAAM,KAAK,KAAO,EAAIA,KAAU,EAC9B,IACV,CAID,QAAS,CACL,MAAM42E,EAAQ,KAAK,GACbC,GAAS,KAAK,KAAO,GAAK,KAAK,IAAM,KAAO,EAC5CC,EAAQ,KAAK,KAAO,GAC1B,OAAOA,IAAU,EACXD,IAAU,EACND,EAAQ,MACJA,EAAQ,IAAM,EAAI,EAClBA,EAAQ,QAAU,EAAI,EAC1BC,EAAQ,MACJA,EAAQ,IAAM,EAAI,EAClBA,EAAQ,QAAU,EAAI,EAC9BC,EAAQ,IAAM,EAAI,EAC3B,CAID,OAAO,WAAWp6H,EAAO,CACrB,GAAIA,IAAU,GACV,OAAO,KAEX,GAAIA,EAAQ,yBAA2BA,EAAQ,wBAC3C,OAAO,KAAK,WAAW,OAAOA,CAAK,CAAC,EAExC,MAAM2/F,EAAW3/F,EAAQ,GACrB2/F,IACA3/F,EAAQ,CAACA,GAEb,IAAIkH,EAAKlH,GAAS,IACdiH,EAAKjH,GAASkH,GAAM,KACxB,OAAIy4F,IACAz4F,EAAK,CAACA,EAAK,GACXD,EAAK,CAACA,EAAK,GACP,EAAEA,EAAK,SACPA,EAAK,GACD,EAAEC,EAAK,SACPA,EAAK,MAIV,IAAI+yH,GAAS,OAAOhzH,CAAE,EAAG,OAAOC,CAAE,CAAC,CAC7C,CAID,OAAO,WAAWlH,EAAO,CACrB,GAAIA,IAAU,EACV,OAAO,KAEX,MAAMg7G,EAAOh7G,EAAQ,EACjBg7G,IACAh7G,EAAQ,CAACA,GAEb,IAAIiH,EAAKjH,IAAU,EACfkH,GAAMlH,EAAQiH,GAAM,aAAe,EACvC,OAAI+zG,IACA9zG,EAAK,CAACA,IAAO,EACbD,EAAK,CAACA,IAAO,EACT,EAAEA,EAAK,aACPA,EAAK,EACD,EAAEC,EAAK,aACPA,EAAK,KAIV,IAAI+yH,GAAShzH,EAAIC,CAAE,CAC7B,CAID,OAAO,KAAKlH,EAAO,CACf,OAAI,OAAOA,GAAU,SACVi6H,GAAS,WAAWj6H,CAAK,EAEhC,OAAOA,GAAU,SACVi6H,GAAS,WAAWj6H,CAAK,EAEhC,OAAOA,GAAU,SACVi6H,GAAS,WAAW,OAAOj6H,CAAK,CAAC,EAErCA,EAAM,KAAO,MAAQA,EAAM,MAAQ,KAAO,IAAIi6H,GAASj6H,EAAM,MAAQ,EAAGA,EAAM,OAAS,CAAC,EAAI,IACtG,CACL,EACA,MAAM,KAAO,IAAIi6H,WAAS,EAAG,CAAC,EAC9B,KAAK,SAAW,UAAY,CAAE,OAAO,EAAG,EACxC,KAAK,SAAW,KAAK,SAAW,UAAY,CAAE,OAAO,MACrD,KAAK,OAAS,UAAY,CAAE,MAAO,EAAE,EACrC,MAAM,OAAS,YCzKR,SAASj5H,SAAOmB,EAAQ,CAC3B,IAAI3E,EAAM,EACNyC,EAAI,EACR,QAASvC,EAAI,EAAGA,EAAIyE,EAAO,OAAQ,EAAEzE,EACjCuC,EAAIkC,EAAO,WAAWzE,CAAC,EACnBuC,EAAI,IACJzC,GAAO,EAEFyC,EAAI,KACTzC,GAAO,GAEDyC,EAAI,SAAY,QAAWkC,EAAO,WAAWzE,EAAI,CAAC,EAAI,SAAY,OACxE,EAAEA,EACFF,GAAO,GAGPA,GAAO,EAGf,OAAOA,CACX,CAIO,SAASiH,OAAKzG,EAAQa,EAAOC,EAAK,CAErC,GADYA,EAAMD,EACR,EACN,MAAO,GAEX,IAAII,EACJ,MAAM0qD,EAAQ,GACd,IAAIjsD,EAAI,EACJuhB,EACJ,KAAOpgB,EAAQC,GACXmgB,EAAIjhB,EAAOa,GAAO,EACdogB,EAAI,IACJ0qC,EAAMjsD,GAAG,EAAIuhB,EAERA,EAAI,KAAOA,EAAI,IACpB0qC,EAAMjsD,GAAG,GAAKuhB,EAAI,KAAO,EAAIjhB,EAAOa,GAAO,EAAI,GAE1CogB,EAAI,KAAOA,EAAI,KACpBA,IAAMA,EAAI,IAAM,IAAMjhB,EAAOa,GAAO,EAAI,KAAO,IAAMb,EAAOa,GAAO,EAAI,KAAO,EAAIb,EAAOa,GAAO,EAAI,IAAM,MAC1G8qD,EAAMjsD,GAAG,EAAI,OAAUuhB,GAAK,IAC5B0qC,EAAMjsD,GAAG,EAAI,OAAUuhB,EAAI,OAG3B0qC,EAAMjsD,GAAG,GAAKuhB,EAAI,KAAO,IAAMjhB,EAAOa,GAAO,EAAI,KAAO,EAAIb,EAAOa,GAAO,EAAI,GAE9EnB,EAAI,QACHuB,IAAUA,EAAQ,CAAE,IAAG,KAAK,OAAO,aAAa,MAAM,OAAQ0qD,CAAK,CAAC,EACrEjsD,EAAI,GAGZ,OAAIuB,GAAS,MACLvB,EAAI,GACJuB,EAAM,KAAK,OAAO,aAAa,MAAM,OAAQ0qD,EAAM,MAAM,EAAGjsD,CAAC,CAAC,CAAC,EAE5DuB,EAAM,KAAK,EAAE,GAEjB,OAAO,aAAa,MAAM,OAAQ0qD,EAAM,MAAM,EAAGjsD,CAAC,CAAC,CAC9D,CAIO,SAAS28H,QAAMl4H,EAAQnE,EAAQoB,EAAQ,CAC1C,MAAMP,EAAQO,EACd,IAAI+lB,EACAE,EACJ,QAAS3nB,EAAI,EAAGA,EAAIyE,EAAO,OAAQ,EAAEzE,EACjCynB,EAAKhjB,EAAO,WAAWzE,CAAC,EACpBynB,EAAK,IACLnnB,EAAOoB,GAAQ,EAAI+lB,EAEdA,EAAK,MACVnnB,EAAOoB,GAAQ,EAAI+lB,GAAM,EAAI,IAC7BnnB,EAAOoB,GAAQ,EAAI+lB,EAAK,GAAK,MAEvBA,EAAK,SAAY,SAAYE,EAAKljB,EAAO,WAAWzE,EAAI,CAAC,GAAK,SAAY,OAChFynB,EAAK,QAAYA,EAAK,OAAW,KAAOE,EAAK,MAC7C,EAAE3nB,EACFM,EAAOoB,GAAQ,EAAI+lB,GAAM,GAAK,IAC9BnnB,EAAOoB,GAAQ,EAAI+lB,GAAM,GAAK,GAAK,IACnCnnB,EAAOoB,GAAQ,EAAI+lB,GAAM,EAAI,GAAK,IAClCnnB,EAAOoB,GAAQ,EAAI+lB,EAAK,GAAK,MAG7BnnB,EAAOoB,GAAQ,EAAI+lB,GAAM,GAAK,IAC9BnnB,EAAOoB,GAAQ,EAAI+lB,GAAM,EAAI,GAAK,IAClCnnB,EAAOoB,GAAQ,EAAI+lB,EAAK,GAAK,KAGrC,OAAO/lB,EAASP,CACpB,CC3FA,SAASy7H,kBAAgBC,EAAQC,EAAa,CAC1C,OAAO,WAAW,uBAAuBD,EAAO,GAAG,MAAMC,GAAe,CAAC,MAAMD,EAAO,GAAG,EAAE,CAC/F,CACA,SAAS,eAAet5H,EAAKnC,EAAK,CAC9B,OAAQmC,EAAInC,EAAM,CAAC,EACfmC,EAAInC,EAAM,CAAC,GAAK,EAChBmC,EAAInC,EAAM,CAAC,GAAK,GAChBmC,EAAInC,EAAM,CAAC,GAAK,MAAQ,CAChC,CAIO,MAAM,gBAAiB,CAC1B,IACA,IACA,IACA,OAAS,WAAW,UAAU,SAC9B,YAAYd,EAAQ,CAIhB,KAAK,IAAMA,EAIX,KAAK,IAAM,EAIX,KAAK,IAAMA,EAAO,MACrB,CAID,QAAS,CACL,IAAIgC,EAAQ,WAcZ,GAbAA,GAAS,KAAK,IAAI,KAAK,GAAG,EAAI,OAAS,EACnC,KAAK,IAAI,KAAK,KAAK,EAAI,MAE3BA,GAASA,GAAS,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQ,KAAO,EAClD,KAAK,IAAI,KAAK,KAAK,EAAI,OAE3BA,GAASA,GAAS,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQ,MAAQ,EACnD,KAAK,IAAI,KAAK,KAAK,EAAI,OAE3BA,GAASA,GAAS,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQ,MAAQ,EACnD,KAAK,IAAI,KAAK,KAAK,EAAI,OAE3BA,GAASA,GAAS,KAAK,IAAI,KAAK,GAAG,EAAI,KAAO,MAAQ,EAClD,KAAK,IAAI,KAAK,KAAK,EAAI,KACvB,OAAOA,EACX,IAAK,KAAK,KAAO,GAAK,KAAK,IACvB,WAAK,IAAM,KAAK,IACVs6H,kBAAgB,KAAM,EAAE,EAElC,OAAOt6H,CACV,CAID,OAAQ,CACJ,OAAO,KAAK,OAAQ,EAAG,CAC1B,CAID,QAAS,CACL,MAAMA,EAAQ,KAAK,SACnB,OAAOA,IAAU,EAAI,EAAEA,EAAQ,GAAK,CACvC,CAID,MAAO,CACH,OAAO,KAAK,OAAQ,IAAK,CAC5B,CAID,SAAU,CACN,GAAI,KAAK,IAAM,EAAI,KAAK,IACpB,MAAMs6H,kBAAgB,KAAM,CAAC,EAGjC,OADY,eAAe,KAAK,IAAK,KAAK,KAAO,CAAC,CAErD,CAID,UAAW,CACP,GAAI,KAAK,IAAM,EAAI,KAAK,IACpB,MAAMA,kBAAgB,KAAM,CAAC,EAGjC,OADY,eAAe,KAAK,IAAK,KAAK,KAAO,CAAC,EAAI,CAEzD,CAID,OAAQ,CACJ,GAAI,KAAK,IAAM,EAAI,KAAK,IACpB,MAAMA,kBAAgB,KAAM,CAAC,EAEjC,MAAMt6H,EAAQ,YAAY,KAAK,IAAK,KAAK,GAAG,EAC5C,YAAK,KAAO,EACLA,CACV,CAID,QAAS,CAEL,GAAI,KAAK,IAAM,EAAI,KAAK,IACpB,MAAMs6H,kBAAgB,KAAM,CAAC,EAEjC,MAAMt6H,EAAQ,aAAa,KAAK,IAAK,KAAK,GAAG,EAC7C,YAAK,KAAO,EACLA,CACV,CAID,OAAQ,CACJ,MAAMgB,EAAS,KAAK,SACdnC,EAAQ,KAAK,IACbC,EAAM,KAAK,IAAMkC,EAEvB,GAAIlC,EAAM,KAAK,IACX,MAAMw7H,kBAAgB,KAAMt5H,CAAM,EAEtC,YAAK,KAAOA,EACLnC,IAAUC,EACX,IAAI,WAAW,CAAC,EAChB,KAAK,IAAI,SAASD,EAAOC,CAAG,CACrC,CAID,QAAS,CACL,MAAMwH,EAAQ,KAAK,QACnB,OAAOm0H,OAAUn0H,EAAO,EAAGA,EAAM,MAAM,CAC1C,CAID,KAAKtF,EAAQ,CACT,GAAI,OAAOA,GAAW,SAAU,CAE5B,GAAI,KAAK,IAAMA,EAAS,KAAK,IACzB,MAAMs5H,kBAAgB,KAAMt5H,CAAM,EAEtC,KAAK,KAAOA,CACf,KAEG,GAEI,IAAI,KAAK,KAAO,KAAK,IACjB,MAAMs5H,kBAAgB,IAAI,QAExB,KAAK,IAAI,KAAK,KAAK,EAAI,KAErC,OAAO,IACV,CAID,SAASI,EAAU,CACf,OAAQA,EAAQ,CACZ,IAAK,GACD,KAAK,KAAI,EACT,MACJ,IAAK,GACD,KAAK,KAAK,CAAC,EACX,MACJ,IAAK,GACD,KAAK,KAAK,KAAK,OAAQ,GACvB,MACJ,IAAK,GACD,MAAQA,EAAW,KAAK,OAAM,EAAK,KAAO,GACtC,KAAK,SAASA,CAAQ,EAE1B,MACJ,IAAK,GACD,KAAK,KAAK,CAAC,EACX,MAEJ,QACI,MAAM,MAAM,qBAAqBA,CAAQ,cAAc,KAAK,GAAG,EAAE,CACxE,CACD,OAAO,IACV,CACD,gBAAiB,CAEb,MAAMv3E,EAAO,IAAI82E,WAAS,EAAG,CAAC,EAC9B,IAAIv8H,EAAI,EACR,GAAI,KAAK,IAAM,KAAK,IAAM,EAAG,CACzB,KAAOA,EAAI,EAAG,EAAEA,EAGZ,GADAylD,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQzlD,EAAI,KAAO,EAC1D,KAAK,IAAI,KAAK,KAAK,EAAI,IACvB,OAAOylD,EAMf,GAFAA,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQ,MAAQ,EAC3DA,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQ,KAAO,EACtD,KAAK,IAAI,KAAK,KAAK,EAAI,IACvB,OAAOA,EAEXzlD,EAAI,CACP,KACI,CACD,KAAOA,EAAI,EAAG,EAAEA,EAAG,CAEf,GAAI,KAAK,KAAO,KAAK,IACjB,MAAM48H,kBAAgB,IAAI,EAI9B,GADAn3E,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQzlD,EAAI,KAAO,EAC1D,KAAK,IAAI,KAAK,KAAK,EAAI,IACvB,OAAOylD,CAEd,CAED,OAAAA,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,KAAK,EAAI,MAAQzlD,EAAI,KAAO,EACzDylD,CACV,CACD,GAAI,KAAK,IAAM,KAAK,IAAM,GACtB,KAAOzlD,EAAI,EAAG,EAAEA,EAGZ,GADAylD,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQzlD,EAAI,EAAI,KAAO,EAC9D,KAAK,IAAI,KAAK,KAAK,EAAI,IACvB,OAAOylD,MAKf,MAAOzlD,EAAI,EAAG,EAAEA,EAAG,CACf,GAAI,KAAK,KAAO,KAAK,IACjB,MAAM48H,kBAAgB,IAAI,EAI9B,GADAn3E,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQzlD,EAAI,EAAI,KAAO,EAC9D,KAAK,IAAI,KAAK,KAAK,EAAI,IACvB,OAAOylD,CAEd,CAEL,MAAM,MAAM,yBAAyB,CACxC,CACD,aAAc,CACV,GAAI,KAAK,IAAM,EAAI,KAAK,IACpB,MAAMm3E,kBAAgB,KAAM,CAAC,EAEjC,MAAMrzH,EAAK,eAAe,KAAK,IAAK,KAAK,KAAO,CAAC,EAC3CC,EAAK,eAAe,KAAK,IAAK,KAAK,KAAO,CAAC,EACjD,OAAO,IAAI+yH,WAAShzH,EAAIC,CAAE,CAC7B,CAID,OAAQ,CACJ,OAAO,KAAK,iBAAiB,UAChC,CAKD,aAAc,CACV,OAAO,KAAK,iBAAiB,UAChC,CAID,aAAc,CACV,OAAO,KAAK,iBAAiB,UAChC,CAID,QAAS,CACL,OAAO,KAAK,eAAc,EAAG,SAAS,EAAI,CAC7C,CAKD,cAAe,CACX,MAAMlH,EAAQ,iBAAiB,KAAK,IAAK,KAAK,GAAG,EACjD,YAAK,KAAOilD,iBAAejlD,CAAK,EACzBA,CACV,CAID,cAAe,CACX,OAAO,KAAK,eAAc,EAAG,SAAS,EAAI,CAC7C,CAID,QAAS,CACL,OAAO,KAAK,eAAc,EAAG,SAAU,EAAC,SAAQ,CACnD,CAKD,cAAe,CACX,OAAO,KAAK,eAAc,EAAG,SAAU,EAAC,SAAQ,CACnD,CAKD,cAAe,CACX,OAAO,KAAK,eAAc,EAAG,SAAU,EAAC,SAAQ,CACnD,CAID,SAAU,CACN,OAAO,KAAK,cAAc,UAC7B,CAID,eAAgB,CACZ,OAAO,KAAK,cAAc,UAC7B,CAID,eAAgB,CACZ,OAAO,KAAK,cAAc,UAC7B,CAID,UAAW,CACP,OAAO,KAAK,cAAc,UAC7B,CAKD,gBAAiB,CACb,OAAO,KAAK,cAAc,UAC7B,CAID,gBAAiB,CACb,OAAO,KAAK,cAAc,UAC7B,CACL,CACO,SAAS,aAAaiB,EAAK,CAC9B,OAAO,IAAI,iBAAiBA,aAAe,WAAaA,EAAMA,EAAI,SAAQ,CAAE,CAChF,CC1WO,SAAS05H,gBAAc15H,EAAKgmD,EAAO3J,EAAM,CAC5C,MAAMi9E,EAAS,aAAat5H,CAAG,EAC/B,OAAOgmD,EAAM,OAAOszE,EAAQ,OAAWj9E,CAAI,CAC/C,CCAe,SAASs9E,OAAK94H,EAAM,CAG/B,IAAI+4H,EACAz7H,EAAS,KACb,OAAO,SAAmB0C,EAAM,CAC5B,GAAIA,EAAO,GAAKA,EAAO,KACnB,OAAOV,cAAYU,CAAI,EAEvB1C,EAAS0C,EAAO,OAChB+4H,EAAOz5H,cAAY,IAAI,EACvBhC,EAAS,GAEb,MAAM6B,EAAM45H,EAAK,SAASz7H,EAAQA,GAAU0C,CAAI,EAChD,OAAK1C,EAAS,IAEVA,GAAUA,EAAS,GAAK,GAErB6B,CACf,CACA,CCZA,cAAS,CAIL,GAIA,IAIA,KAIA,IACA,YAAYqI,EAAI9L,EAAK4G,EAAK,CACtB,KAAK,GAAKkF,EACV,KAAK,IAAM9L,EACX,KAAK,KAAO,OACZ,KAAK,IAAM4G,CACd,CACL,EAEA,SAASxG,QAAO,CAAG,CAInB,iBAAY,CAIR,KAIA,KAIA,IAIA,KACA,YAAYk9H,EAAQ,CAChB,KAAK,KAAOA,EAAO,KACnB,KAAK,KAAOA,EAAO,KACnB,KAAK,IAAMA,EAAO,IAClB,KAAK,KAAOA,EAAO,MACtB,CACL,EACA,MAAM,WAAaF,OAAI,EAIvB,SAAS,MAAM94H,EAAM,CACjB,OAAI,WAAW,QAAU,KACdV,cAAYU,CAAI,EAEpB,WAAWA,CAAI,CAC1B,CAQA,MAAM,gBAAiB,CAInB,IAIA,KAIA,KAIA,OACA,aAAc,CACV,KAAK,IAAM,EACX,KAAK,KAAO,IAAIi5H,KAAGn9H,OAAM,EAAG,CAAC,EAC7B,KAAK,KAAO,KAAK,KACjB,KAAK,OAAS,IACjB,CAID,MAAM0L,EAAI9L,EAAK4G,EAAK,CAChB,YAAK,KAAO,KAAK,KAAK,KAAO,IAAI22H,KAAGzxH,EAAI9L,EAAK4G,CAAG,EAChD,KAAK,KAAO5G,EACL,IACV,CAID,OAAOwC,EAAO,CAGV,YAAK,MAAQ,KAAK,KAAO,KAAK,KAAK,KAAO,IAAIg7H,YAAUh7H,EAAQA,IAAU,GACtE,IACE,EACAA,EAAQ,MACJ,EACAA,EAAQ,QACJ,EACAA,EAAQ,UACJ,EACA,EAAGA,CAAK,GAAG,IACtB,IACV,CAID,MAAMA,EAAO,CACT,OAAOA,EAAQ,EACT,KAAK,MAAMi7H,gBAAe,GAAIhB,WAAS,WAAWj6H,CAAK,CAAC,EACxD,KAAK,OAAOA,CAAK,CAC1B,CAID,OAAOA,EAAO,CACV,OAAO,KAAK,QAAQA,GAAS,EAAIA,GAAS,MAAQ,CAAC,CACtD,CAID,OAAOA,EAAO,CACV,MAAMmjD,EAAO82E,WAAS,WAAWj6H,CAAK,EACtC,OAAO,KAAK,MAAMi7H,gBAAe93E,EAAK,OAAM,EAAIA,CAAI,CACvD,CAID,aAAanjD,EAAO,CAChB,OAAO,KAAK,MAAM,iBAAkBilD,iBAAejlD,CAAK,EAAGA,CAAK,CACnE,CAID,aAAaA,EAAO,CAChB,OAAO,KAAK,OAAO,OAAOA,CAAK,CAAC,CACnC,CAID,MAAMA,EAAO,CACT,OAAO,KAAK,OAAOA,CAAK,CAC3B,CAID,YAAYA,EAAO,CACf,OAAO,KAAK,aAAaA,CAAK,CACjC,CAID,YAAYA,EAAO,CACf,OAAO,KAAK,aAAaA,CAAK,CACjC,CAID,OAAOA,EAAO,CACV,MAAMmjD,EAAO82E,WAAS,WAAWj6H,CAAK,EAAE,SAAQ,EAChD,OAAO,KAAK,MAAMi7H,gBAAe93E,EAAK,OAAM,EAAIA,CAAI,CACvD,CAID,aAAanjD,EAAO,CAChB,MAAMmjD,EAAO82E,WAAS,WAAWj6H,CAAK,EAAE,SAAQ,EAChD,OAAO,KAAK,MAAMi7H,gBAAe93E,EAAK,OAAM,EAAIA,CAAI,CACvD,CAID,aAAanjD,EAAO,CAChB,OAAO,KAAK,OAAO,OAAOA,CAAK,CAAC,CACnC,CAID,KAAKA,EAAO,CACR,OAAO,KAAK,MAAMk7H,YAAW,EAAGl7H,EAAQ,EAAI,CAAC,CAChD,CAID,QAAQA,EAAO,CACX,OAAO,KAAK,MAAMm7H,eAAc,EAAGn7H,IAAU,CAAC,CACjD,CAID,SAASA,EAAO,CACZ,OAAO,KAAK,QAAQA,CAAK,CAC5B,CAID,QAAQA,EAAO,CACX,MAAMmjD,EAAO82E,WAAS,WAAWj6H,CAAK,EACtC,OAAO,KAAK,MAAMm7H,eAAc,EAAGh4E,EAAK,EAAE,EAAE,MAAMg4E,eAAc,EAAGh4E,EAAK,EAAE,CAC7E,CAID,cAAcnjD,EAAO,CACjB,MAAMmjD,EAAO82E,WAAS,WAAWj6H,CAAK,EACtC,OAAO,KAAK,MAAMm7H,eAAc,EAAGh4E,EAAK,EAAE,EAAE,MAAMg4E,eAAc,EAAGh4E,EAAK,EAAE,CAC7E,CAID,cAAcnjD,EAAO,CACjB,OAAO,KAAK,QAAQ,OAAOA,CAAK,CAAC,CACpC,CAID,SAASA,EAAO,CACZ,OAAO,KAAK,QAAQA,CAAK,CAC5B,CAID,eAAeA,EAAO,CAClB,OAAO,KAAK,cAAcA,CAAK,CAClC,CAID,eAAeA,EAAO,CAClB,OAAO,KAAK,cAAcA,CAAK,CAClC,CAID,MAAMA,EAAO,CACT,OAAO,KAAK,MAAM,aAAc,EAAGA,CAAK,CAC3C,CAQD,OAAOA,EAAO,CACV,OAAO,KAAK,MAAM,cAAe,EAAGA,CAAK,CAC5C,CAID,MAAMA,EAAO,CACT,MAAMxC,EAAMwC,EAAM,SAAW,EAC7B,OAAIxC,IAAQ,EACD,KAAK,MAAM09H,YAAW,EAAG,CAAC,EAE9B,KAAK,OAAO19H,CAAG,EAAE,MAAM49H,aAAY59H,EAAKwC,CAAK,CACvD,CAID,OAAOA,EAAO,CACV,MAAMxC,EAAM69H,SAAYr7H,CAAK,EAC7B,OAAOxC,IAAQ,EACT,KAAK,OAAOA,CAAG,EAAE,MAAM89H,QAAY99H,EAAKwC,CAAK,EAC7C,KAAK,MAAMk7H,YAAW,EAAG,CAAC,CACnC,CAKD,MAAO,CACH,YAAK,OAAS,IAAIK,QAAM,IAAI,EAC5B,KAAK,KAAO,KAAK,KAAO,IAAIR,KAAGn9H,OAAM,EAAG,CAAC,EACzC,KAAK,IAAM,EACJ,IACV,CAID,OAAQ,CACJ,OAAI,KAAK,QAAU,MACf,KAAK,KAAO,KAAK,OAAO,KACxB,KAAK,KAAO,KAAK,OAAO,KACxB,KAAK,IAAM,KAAK,OAAO,IACvB,KAAK,OAAS,KAAK,OAAO,OAG1B,KAAK,KAAO,KAAK,KAAO,IAAIm9H,KAAGn9H,OAAM,EAAG,CAAC,EACzC,KAAK,IAAM,GAER,IACV,CAID,QAAS,CACL,MAAM6mC,EAAO,KAAK,KACZiwD,EAAO,KAAK,KACZl3F,EAAM,KAAK,IACjB,YAAK,MAAK,EAAG,OAAOA,CAAG,EACnBA,IAAQ,IACR,KAAK,KAAK,KAAOinC,EAAK,KACtB,KAAK,KAAOiwD,EACZ,KAAK,KAAOl3F,GAET,IACV,CAID,QAAS,CACL,IAAIinC,EAAO,KAAK,KAAK,KACrB,MAAMxjC,EAAM,MAAM,KAAK,GAAG,EAC1B,IAAI6B,EAAM,EACV,KAAO2hC,GAAQ,MACXA,EAAK,GAAGA,EAAK,IAAKxjC,EAAK6B,CAAG,EAC1BA,GAAO2hC,EAAK,IACZA,EAAOA,EAAK,KAGhB,OAAOxjC,CACV,CACL,CACA,SAASi6H,YAAU92H,EAAKnD,EAAK6B,EAAK,CAC9B7B,EAAI6B,CAAG,EAAIsB,EAAM,GACrB,CACA,SAASo3H,gBAAcp3H,EAAKnD,EAAK6B,EAAK,CAClC,KAAOsB,EAAM,KACTnD,EAAI6B,GAAK,EAAIsB,EAAM,IAAM,IACzBA,KAAS,EAEbnD,EAAI6B,CAAG,EAAIsB,CACf,gBAMA,cAAuB22H,IAAG,CACtB,KACA,YAAYv9H,EAAK4G,EAAK,CAClB,MAAMo3H,gBAAeh+H,EAAK4G,CAAG,EAC7B,KAAK,KAAO,MACf,CACL,EACA,SAAS62H,gBAAc72H,EAAKnD,EAAK6B,EAAK,CAClC,KAAOsB,EAAI,KAAO,GACdnD,EAAI6B,GAAK,EAAIsB,EAAI,GAAK,IAAM,IAC5BA,EAAI,IAAMA,EAAI,KAAO,EAAIA,EAAI,IAAM,MAAQ,EAC3CA,EAAI,MAAQ,EAEhB,KAAOA,EAAI,GAAK,KACZnD,EAAI6B,GAAK,EAAIsB,EAAI,GAAK,IAAM,IAC5BA,EAAI,GAAKA,EAAI,KAAO,EAExBnD,EAAI6B,GAAK,EAAIsB,EAAI,EACrB,CACA,SAAS+2H,eAAa/2H,EAAKnD,EAAK6B,EAAK,CACjC7B,EAAI6B,CAAG,EAAIsB,EAAM,IACjBnD,EAAI6B,EAAM,CAAC,EAAIsB,IAAQ,EAAI,IAC3BnD,EAAI6B,EAAM,CAAC,EAAIsB,IAAQ,GAAK,IAC5BnD,EAAI6B,EAAM,CAAC,EAAIsB,IAAQ,EAC3B,CACA,SAASg3H,aAAWh3H,EAAKnD,EAAK6B,EAAK,CAC/B7B,EAAI,IAAImD,EAAKtB,CAAG,CACpB,CACI,WAAW,QAAU,OACrB,iBAAiB,UAAU,MAAQ,SAAU9C,EAAO,CAChD,MAAMxC,EAAMwC,EAAM,SAAW,EAC7B,YAAK,OAAOxC,CAAG,EACXA,EAAM,GACN,KAAK,MAAM,iBAAkBA,EAAKwC,CAAK,EAEpC,IACf,EACI,iBAAiB,UAAU,OAAS,SAAUA,EAAO,CACjD,MAAMxC,EAAM,WAAW,OAAO,WAAWwC,CAAK,EAC9C,YAAK,OAAOxC,CAAG,EACXA,EAAM,GACN,KAAK,MAAMi+H,oBAAmBj+H,EAAKwC,CAAK,EAErC,IACf,GAEA,SAAS,iBAAiBoE,EAAKnD,EAAK6B,EAAK,CACrC7B,EAAI,IAAImD,EAAKtB,CAAG,CAEpB,CACA,SAAS24H,oBAAkBr3H,EAAKnD,EAAK6B,EAAK,CAClCsB,EAAI,OAAS,GAEbk3H,QAAWl3H,EAAKnD,EAAK6B,CAAG,EAGnB7B,EAAI,WAAa,KAEtBA,EAAI,UAAUmD,EAAKtB,CAAG,EAGtB7B,EAAI,IAAIuoH,aAAqBplH,CAAG,EAAGtB,CAAG,CAE9C,CAIO,SAAS,cAAe,CAC3B,OAAO,IAAI,gBACf,CCjbO,SAAS,cAAcu2B,EAAS4tB,EAAO,CAC1C,MAAM3uB,EAAI,eACV,OAAA2uB,EAAM,OAAO5tB,EAASf,EAAG,CACrB,gBAAiB,EACzB,CAAK,EACMA,EAAE,QACb,CCNO,IAAI,aACV,SAAUojG,EAAa,CACpBA,EAAYA,EAAY,OAAY,CAAC,EAAI,SACzCA,EAAYA,EAAY,MAAW,CAAC,EAAI,QACxCA,EAAYA,EAAY,iBAAsB,CAAC,EAAI,mBACnDA,EAAYA,EAAY,YAAiB,CAAC,EAAI,cAC9CA,EAAYA,EAAY,UAAe,CAAC,EAAI,YAC5CA,EAAYA,EAAY,MAAW,CAAC,EAAI,OAC5C,GAAG,cAAgB,YAAc,CAAE,EAAC,EAC7B,SAAS90D,cAAY/oE,EAAM8K,EAAM24C,EAAQc,EAAQ,CACpD,MAAO,CACH,KAAAvkD,EACA,KAAA8K,EACA,OAAA24C,EACA,OAAAc,CACR,CACA,CChBO,SAAS,YAAYr2C,EAAG,CAC3B,SAAS4vH,EAAUv3H,EAAK,CAGpB,GAAI2H,EAAE3H,EAAI,SAAU,IAAK,KACrB,MAAM,IAAI,MAAM,oBAAoB,EAExC,OAAO2H,EAAE3H,CAAG,CACf,CACD,MAAMk9C,EAAS,SAAoBl9C,EAAK02H,EAAQ,CAC5C,MAAMc,EAAYD,EAAUv3H,CAAG,EAC/B02H,EAAO,MAAMc,CAAS,CAC9B,EACUx5E,EAAS,SAAoBm4E,EAAQ,CACvC,MAAMn2H,EAAMm2H,EAAO,QACnB,OAAOoB,EAAUv3H,CAAG,CAC5B,EAEI,OAAOwiE,cAAY,OAAQ,YAAY,OAAQtlB,EAAQc,CAAM,CACjE,CCnBO,SAAS,QAAQd,EAAQc,EAAQ,CACpC,OAAOwkB,cAAY,UAAW,YAAY,iBAAkBtlB,EAAQc,CAAM,CAC9E,iBCmBO,cAAwB,KAAM,CACjC,KACA,YAAY/oB,EAASl7B,EAAM,CACvB,MAAMk7B,CAAO,EACb,KAAK,KAAOl7B,CACf,CACL,ECtBO,IAAI09H,WACV,SAAUA,EAAS,CAChBA,EAAQ,IAAS,MACjBA,EAAQ,QAAa,UACrBA,EAAQ,UAAe,WAC3B,GAAGA,YAAYA,UAAU,CAAE,EAAC,EAC5B,IAAIC,mBACH,SAAUA,EAAiB,CACxBA,EAAgBA,EAAgB,IAAS,CAAC,EAAI,MAC9CA,EAAgBA,EAAgB,QAAa,CAAC,EAAI,UAClDA,EAAgBA,EAAgB,UAAe,CAAC,EAAI,WACxD,GAAGA,oBAAoBA,kBAAkB,CAAE,EAAC,GAC3C,SAAUD,EAAS,CAChBA,EAAQ,MAAQ,IACL,YAAYC,iBAAe,CAE1C,GAAGD,YAAYA,UAAU,CAAE,EAAC,EACrB,IAAItiB,aACV,SAAUA,EAAW,CAClB,IAAIwiB,EACJxiB,EAAU,MAAQ,KACVwiB,GAAU,OACVA,EAAS,QAAQ,CAACt5H,EAAK61B,EAAGglB,EAAO,KAAO,CAChCA,EAAK,kBAAoB,IACzBhlB,EAAE,KAAI,EAEN71B,EAAI,MAAQ,OACZ61B,EAAE,OAAO,CAAC,EACVujG,UAAQ,MAAK,EAAG,OAAOp5H,EAAI,KAAM61B,CAAC,GAElC71B,EAAI,MAAQ,OACZ61B,EAAE,OAAO,EAAE,EACXA,EAAE,MAAM71B,EAAI,IAAI,GAEhB66C,EAAK,kBAAoB,IACzBhlB,EAAE,OAAM,CAE5B,EAAe,CAACiiG,EAAQv5H,IAAW,CACnB,MAAMyB,EAAM,GACN3D,EAAMkC,GAAU,KAAOu5H,EAAO,IAAMA,EAAO,IAAMv5H,EACvD,KAAOu5H,EAAO,IAAMz7H,GAAK,CACrB,MAAM6wB,EAAM4qG,EAAO,SACnB,OAAQ5qG,IAAQ,EAAC,CACb,IAAK,GACDltB,EAAI,KAAOo5H,UAAQ,MAAK,EAAG,OAAOtB,CAAM,EACxC,MACJ,IAAK,GACD93H,EAAI,KAAO83H,EAAO,QAClB,MACJ,QACIA,EAAO,SAAS5qG,EAAM,CAAC,EACvB,KACP,CACJ,CACD,OAAOltB,CACvB,CAAa,GAEEs5H,GAEXxiB,EAAU,OAAU92G,GACT,cAAcA,EAAK82G,EAAU,MAAO,GAE/CA,EAAU,OAAUt4G,GACT05H,gBAAc15H,EAAKs4G,EAAU,MAAO,EAEnD,GAAGA,cAAcA,YAAY,CAAE,EAAC,EACzB,IAAIyiB,cACV,SAAUA,EAAY,CACnB,IAAID,EACJC,EAAW,MAAQ,KACXD,GAAU,OACVA,EAAS,QAAQ,CAACt5H,EAAK61B,EAAGglB,EAAO,KAAO,CAChCA,EAAK,kBAAoB,IACzBhlB,EAAE,KAAI,EAEN71B,EAAI,MAAQ,OACZ61B,EAAE,OAAO,CAAC,EACVujG,UAAQ,MAAK,EAAG,OAAOp5H,EAAI,KAAM61B,CAAC,GAElC71B,EAAI,MAAQ,OACZ61B,EAAE,OAAO,EAAE,EACXA,EAAE,MAAM71B,EAAI,IAAI,GAEhB66C,EAAK,kBAAoB,IACzBhlB,EAAE,OAAM,CAE5B,EAAe,CAACiiG,EAAQv5H,IAAW,CACnB,MAAMyB,EAAM,GACN3D,EAAMkC,GAAU,KAAOu5H,EAAO,IAAMA,EAAO,IAAMv5H,EACvD,KAAOu5H,EAAO,IAAMz7H,GAAK,CACrB,MAAM6wB,EAAM4qG,EAAO,SACnB,OAAQ5qG,IAAQ,EAAC,CACb,IAAK,GACDltB,EAAI,KAAOo5H,UAAQ,MAAK,EAAG,OAAOtB,CAAM,EACxC,MACJ,IAAK,GACD93H,EAAI,KAAO83H,EAAO,QAClB,MACJ,QACIA,EAAO,SAAS5qG,EAAM,CAAC,EACvB,KACP,CACJ,CACD,OAAOltB,CACvB,CAAa,GAEEs5H,GAEXC,EAAW,OAAUv5H,GACV,cAAcA,EAAKu5H,EAAW,MAAO,GAEhDA,EAAW,OAAU/6H,GACV05H,gBAAc15H,EAAK+6H,EAAW,MAAO,EAEpD,GAAGA,eAAeA,aAAa,GAAG,EC/G3B,4BAAuB,CAC1B,KACA,YAAY7xH,EAAK,CACb,KAAK,KAAO8xH,YAAU9xH,EAAK+xH,wBAAsB,CACpD,CACD,OAAO5lH,EAAMy9F,EAAK,CACd,OAAOooB,gBAAqB,KAAK,KAAMpoB,EAAKz9F,CAAI,CACnD,CACD,SAAU,CACN,OAAO,KAAK,IACf,CACD,IAAI,OAAQ,CACR,OAAO8lH,YAAc,OAAO,CACxB,KAAMC,UAAY,QAClB,KAAM,KAAK,QAAS,CAChC,CAAS,EAAE,SAAQ,CACd,CACD,OAAOlyH,EAAK,CACR,OAAOmyH,SAAiB,KAAK,MAAOnyH,EAAI,KAAK,CAChD,CACD,MAAO,CACH,MAAMwJ,EAAIs8C,SAAO,OAAO,KAAK,KAAK,EAClC,OAAIllD,YAAU4I,CAAC,EACJA,EAAE,KAAK,CAAC,CAAE,MAAArN,CAAO,IAAKA,CAAK,EAE/BqN,EAAE,KACZ,CACL,EACO,yBAAwB,CAC3B,KACA,WAGA,YAAYxJ,EAAKqzG,EAAW,CACxB,KAAK,KAAOye,YAAU9xH,EAAKoyH,yBAAuB,EAClD,KAAK,WAAaN,YAAUze,EAAW0e,wBAAsB,CAChE,CACD,KAAK7iG,EAAS,CACV,OAAOmjG,cAAmB,KAAK,KAAMnjG,CAAO,CAC/C,CACD,IAAI,QAAS,CACT,OAAO,IAAIojG,mBAAiB,KAAK,UAAU,CAC9C,CACD,SAAU,CACN,OAAO,KAAK,IACf,CACD,IAAI,OAAQ,CACR,OAAOC,aAAe,OAAO,CACzB,KAAML,UAAY,QAClB,KAAM,KAAK,QAAS,CAChC,CAAS,EAAE,SAAQ,CACd,CACD,OAAOlyH,EAAK,CACR,OAAOmyH,SAAiB,KAAK,MAAOnyH,EAAI,KAAK,CAChD,CACD,MAAM,MAAO,CACT,MAAMwJ,EAAIs8C,SAAO,OAAO,KAAK,KAAK,EAClC,IAAI3pD,EACJ,OAAIyE,YAAU4I,CAAC,EACV,CAAE,MAAArN,GAAU,MAAMqN,EAGnBrN,EAAQqN,EAAE,MAEPrN,CACV,CAUD,MAAM,IAAK,CACP,MAAMrE,EAAWkuD,WAAS,OAAO,KAAK,OAAO,KAAK,EAClD,OAAO1M,YAAU,OAAOxhD,EAAS,KAAK,EAAE,UAAU,CAAC,CACtD,CAID,MAAM,OAAOyrF,EAAU9nC,EAAS,aAAc,CAC1C,GAAIA,IAAW,aACX,OAAOk0E,WAAS,KAAK,MAAOpsC,CAAQ,EAGpC,MAAM,IAAIivC,YAAU,kBAAkB/2E,CAAM,qBAAsB,2BAA2B,CAEpG,CACL,EACO,SAASg3E,6BAA2Bt2H,EAAO,CAE9C,GAAIA,EAAM,OAASi2H,0BAAyB,CACxCj2H,EAAQ21H,YAAU31H,EAAOi2H,0BAA0BL,wBAAsB,EACzE,MAAMW,EAAkBv2H,EAAM,SAAS,EAAGi2H,yBAAuB,EAC3DO,EAAiBx2H,EAAM,SAASi2H,0BAAyBj2H,EAAM,MAAM,EAC3E,OAAO,IAAIy2H,oBAAkBF,EAAiBC,CAAc,CAC/D,CACDx2H,EAAQ21H,YAAU31H,EAAOi2H,yBAAuB,EAChD,MAAMM,EAAkBv2H,EAAM,SAAS,EAAGi2H,yBAAuB,EAC3DO,EAAiBx2H,EAAM,SAAS41H,wBAAsB,EAC5D,OAAO,IAAIa,oBAAkBF,EAAiBC,CAAc,CAChE,CACO,SAASE,4BAA0B12H,EAAO,CAC7C,OAAAA,EAAQ21H,YAAU31H,EAAO41H,wBAAsB,EACxC,IAAIO,mBAAiBn2H,CAAK,CACrC,CACO,eAAe22H,mBAAkB,CACpC,KAAM,CAAE,WAAA/e,EAAY,UAAAV,CAAW,EAAG0f,cAAkB,EACpD,OAAO,IAAIH,oBAAkB7e,EAAYV,CAAS,CACtD,CACO,eAAe2f,0BAAwBrrB,EAAM,CAChD,KAAM,CAAE,WAAAoM,EAAY,UAAAV,CAAW,EAAG4f,sBAA2BtrB,CAAI,EACjE,OAAO,IAAIirB,oBAAkB7e,EAAYV,CAAS,CACtD,CACA,SAASye,YAAU9xH,EAAKnJ,EAAQ,CAE5B,GADAmJ,EAAM,WAAW,KAAKA,GAAO,CAAE,GAC3BA,EAAI,SAAWnJ,EACf,MAAM,IAAI27H,YAAU,sCAAsC37H,CAAM,SAASmJ,EAAI,MAAM,GAAI,sBAAsB,EAEjH,OAAOA,CACX,wXC7HMg5C,OAAO,CACT,QAAS,IACT,QAAS,IACT,QAAS,GACb,EACMk6E,aAAa,OAAO,KAAKl6E,MAAI,EACrBk6E,aAAW,KAAK,KAAK,ECAnC,IAAI,MAAQt/E,QAIR0tC,SAA0B,MAAM,OAAS,MAAM,QAAU,GAG7D,MAAM,GAAG,OAAS,MAAM,GAAG,WAAW,OAASA,SAG/C,IAAI,OAAS,MAAM,OAAS,MAAM,OAAO,OAAS,MAAM,OAAO,QAAU,GACzE,OAAO,OAAS,UAAW,CACzB,OAAOA,SAAO,OAAO,SAAS,CAChC,EACA,MAAM,GAAG,OAAS,MAAM,GAAG,WAAW,OAAS,OAG/C,MAAM,OAAO,OAAS,MAAM,OAAO,QAAU,CAC3C,OAAQ,UAAW,CACjB,OAAOA,SAAO,OAAO,aAAa,CACnC,CACH,EACA,MAAM,GAAG,YAAY,EAAI,MAAM,GAAG,WAAW,YAAY,EACvD,MAAM,OAAO,OAGf,MAAM,OAAO,OAAS,MAAM,OAAO,QAAU,CAC3C,OAAQ,UAAW,CACjB,OAAOA,SAAO,OAAO,aAAa,CACnC,CACH,EACA,MAAM,GAAG,YAAY,EAAI,MAAM,GAAG,WAAW,YAAY,EACvD,MAAM,OAAO,OAUfA,SAAO,OAAS,SAAS7pB,EAAW,CAUlC,GARI,cACF,QAGC,OAAOA,EAAc,MACtBA,EAAY,WAGX,EAAEA,KAAa,SAChB,MAAM,IAAI,MAAM,8BAAgCA,CAAS,EAY3D,QARIy+C,EAAS,QAAQz+C,CAAS,EAC1BypD,EAAK,KAGL/K,EAAS,MAAM,KAAK,aAAY,EAGhCC,EAAK,IAAI,MAAM,EAAE,EACbx7C,EAAK,EAAGA,EAAK,GAAI,EAAEA,EACzBw7C,EAAGx7C,CAAE,EAAI,IAAI,MAAM,CAAC,EAItB,IAAIu4D,EAAe,GACnB,OAAO17D,EAAS,CACd,IAAK,UACH07D,EAAe,GACf,MACF,IAAK,cACHA,EAAe,GACf,MACF,IAAK,cACHA,EAAe,GACf,KACH,CAGD,IAAItrF,EAAK,CAEP,UAAW4vB,EAAU,QAAQ,IAAK,EAAE,EAAE,YAAa,EACnD,YAAa,IACb,aAAc07D,EAEd,cAAe,EAEf,kBAAmB,KAEnB,kBAAmB,EACvB,EAOE,OAAAtrF,EAAG,MAAQ,UAAW,CAEpBA,EAAG,cAAgB,EAGnBA,EAAG,kBAAoBA,EAAG,iBAAmB,GAE7C,QADIwuE,EAASxuE,EAAG,kBAAoB,EAC5Bt0C,EAAI,EAAGA,EAAI8iH,EAAQ,EAAE9iH,EAC3Bs0C,EAAG,kBAAkB,KAAK,CAAC,EAE7BsuE,EAAS,MAAM,KAAK,eACpB+K,EAAK,IAAI,MAAMhL,EAAO,MAAM,EAC5B,QAAQ3iH,EAAI,EAAGA,EAAI2iH,EAAO,OAAQ,EAAE3iH,EAClC2tH,EAAG3tH,CAAC,EAAI2iH,EAAO3iH,CAAC,EAAE,MAAM,CAAC,EAE3B,OAAOs0C,CACX,EAEEA,EAAG,MAAK,EAYRA,EAAG,OAAS,SAASzpC,EAAKtG,EAAU,CAC/BA,IAAa,SACdsG,EAAM,MAAM,KAAK,WAAWA,CAAG,GAIjC,IAAI/K,EAAM+K,EAAI,OACdypC,EAAG,eAAiBx0C,EACpBA,EAAM,CAAEA,EAAM,aAAiB,EAAGA,IAAQ,CAAC,EAC3C,QAAQE,EAAIs0C,EAAG,kBAAkB,OAAS,EAAGt0C,GAAK,EAAG,EAAEA,EACrDs0C,EAAG,kBAAkBt0C,CAAC,GAAKF,EAAI,CAAC,EAChCA,EAAI,CAAC,EAAIA,EAAI,CAAC,GAAMw0C,EAAG,kBAAkBt0C,CAAC,EAAI,aAAiB,GAC/Ds0C,EAAG,kBAAkBt0C,CAAC,EAAIs0C,EAAG,kBAAkBt0C,CAAC,IAAM,EACtDF,EAAI,CAAC,EAAMA,EAAI,CAAC,EAAI,aAAiB,EAIvC,OAAA8iH,EAAO,SAAS/3G,CAAG,EAGnB,QAAQ8iH,EAAI9K,EAAID,CAAM,GAGnBA,EAAO,KAAO,MAAQA,EAAO,OAAQ,IAAK,IAC3CA,EAAO,QAAO,EAGTtuE,CACX,EAOEA,EAAG,OAAS,UAAW,CAqBrB,IAAI0uE,EAAa,MAAM,KAAK,aAAY,EACxCA,EAAW,SAASJ,EAAO,MAAO,GAGlC,IAAIx7G,EACFktC,EAAG,kBAAkBA,EAAG,kBAAkB,OAAS,CAAC,EACpDA,EAAG,kBAKDqwB,EAAWv9D,EAAaktC,EAAG,YAAc,EAC7C0uE,EAAW,SAAS,SAAS,OAAO,EAAG1uE,EAAG,YAAcqwB,CAAQ,CAAC,EAMjE,QAFIlgD,EAAMw/B,EACNwB,EAAOnR,EAAG,kBAAkB,CAAC,EAAI,EAC7Bt0C,EAAI,EAAGA,EAAIs0C,EAAG,kBAAkB,OAAS,EAAG,EAAEt0C,EACpDykB,EAAO6vB,EAAG,kBAAkBt0C,EAAI,CAAC,EAAI,EACrCikD,EAASx/B,EAAO,aAAiB,EACjCghC,GAAQxB,EACR++D,EAAW,SAASv9D,IAAS,CAAC,EAC9BA,EAAOhhC,IAAS,EAElBu+F,EAAW,SAASv9D,CAAI,EAGxB,QADIrnC,EAAI,IAAI,MAAMuvG,EAAG,MAAM,EACnB3tH,EAAI,EAAGA,EAAI2tH,EAAG,OAAQ,EAAE3tH,EAC9Boe,EAAEpe,CAAC,EAAI2tH,EAAG3tH,CAAC,EAAE,MAAM,CAAC,EAEtB,QAAQoe,EAAGykG,EAAIG,CAAU,EACzB,IAAIphD,EAAO,MAAM,KAAK,aAAY,EAC9Bs8C,EACDh6C,IAAc,UACfg6C,EAAO9/F,EAAE,OACD8lD,IAAc,UACtBg6C,EAAO9/F,EAAE,OAAS,EAElB8/F,EAAO9/F,EAAE,OAAS,EAEpB,QAAQpe,EAAI,EAAGA,EAAIk+G,EAAM,EAAEl+G,EACzB4hE,EAAK,SAASxjD,EAAEpe,CAAC,EAAE,CAAC,CAAC,GAClBA,IAAMk+G,EAAO,GAAKh6C,IAAc,gBACjCtC,EAAK,SAASxjD,EAAEpe,CAAC,EAAE,CAAC,CAAC,EAGzB,OAAO4hE,CACX,EAESttB,CACT,EAGA,IAAI,SAAW,KACX,aAAe,GAGf,GAAK,KAGL,QAAU,KAKd,SAAS,OAAQ,CAEf,SAAW,IACX,UAAY,MAAM,KAAK,WAAW,KAA2B,GAAG,EAGhE,GAAK,CACH,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,SAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,UAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,UAAY,UAAU,EACjD,CAAC,UAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,SAAU,EACjD,CAAC,WAAY,SAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,SAAU,EACjD,CAAC,UAAY,UAAU,EAAG,CAAC,UAAY,UAAU,EACjD,CAAC,UAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,SAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,UAAY,UAAU,EAAG,CAAC,UAAY,SAAU,EACjD,CAAC,UAAY,UAAU,EAAG,CAAC,UAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,SAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,SAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,UAAY,SAAU,EACjD,CAAC,UAAY,UAAU,EAAG,CAAC,UAAY,UAAU,EACjD,CAAC,UAAY,UAAU,EAAG,CAAC,UAAY,UAAU,EACjD,CAAC,UAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,SAAU,EACjD,CAAC,WAAY,SAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,SAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,UAAY,UAAU,EAAG,CAAC,UAAY,UAAU,EACjD,CAAC,UAAY,UAAU,EAAG,CAAC,UAAY,SAAU,EACjD,CAAC,UAAY,SAAU,EAAG,CAAC,UAAY,UAAU,EACjD,CAAC,WAAY,SAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,UAAU,EAAG,CAAC,WAAY,UAAU,EACjD,CAAC,WAAY,SAAU,EAAG,CAAC,WAAY,UAAU,CACrD,EAGE,QAAU,GACV,QAAQ,SAAS,EAAI,CACnB,CAAC,WAAY,UAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,WAAY,SAAU,EACvB,CAAC,UAAY,UAAU,EACvB,CAAC,WAAY,SAAU,CAC3B,EACE,QAAQ,SAAS,EAAI,CACnB,CAAC,WAAY,UAAU,EACvB,CAAC,WAAY,SAAU,EACvB,CAAC,WAAY,SAAU,EACvB,CAAC,UAAY,UAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,WAAY,UAAU,CAC3B,EACE,QAAQ,aAAa,EAAI,CACvB,CAAC,UAAY,UAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,UAAY,UAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,UAAY,SAAU,EACvB,CAAC,UAAY,UAAU,CAC3B,EACE,QAAQ,aAAa,EAAI,CACvB,CAAC,WAAY,SAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,UAAY,SAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,UAAY,UAAU,EACvB,CAAC,WAAY,QAAU,EACvB,CAAC,WAAY,UAAU,EACvB,CAAC,UAAY,UAAU,CAC3B,EAGE,aAAe,EACjB,CASA,SAAS,QAAQjyC,EAAGu4B,EAAGhyB,EAAO,CAkB5B,QAhBIi3H,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAQC,EACRC,EAAMC,EACNC,EAAMC,EACNC,EAAMC,EACNC,EAAMC,EACNC,EAAMC,GACNC,GAAMC,GACNC,GAAMC,EACNC,EAAMC,EACNxhI,EAAGwJ,GAAID,GAAI00F,GAAIK,GAAIQ,GAAKC,GACxBj/F,EAAM8I,EAAM,SACV9I,GAAO,KAAK,CAGhB,IAAIE,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACnB46B,EAAE56B,CAAC,EAAE,CAAC,EAAI4I,EAAM,SAAU,IAAK,EAC/BgyB,EAAE56B,CAAC,EAAE,CAAC,EAAI4I,EAAM,SAAU,IAAK,EAEjC,KAAM5I,EAAI,GAAI,EAAEA,EAEdi+F,GAAKrjE,EAAE56B,EAAI,CAAC,EACZwJ,GAAKy0F,GAAG,CAAC,EACT10F,GAAK00F,GAAG,CAAC,EAGT4hC,IACIr2H,KAAO,GAAOD,IAAM,KACpBA,KAAO,GAAOC,IAAM,GACrBA,KAAO,KAAQ,EAElBs2H,IACIt2H,IAAM,GAAOD,KAAO,KACpBA,IAAM,EAAMC,KAAO,KACnBA,IAAM,GAAOD,KAAO,MAAS,EAGjCu1F,GAAMlkE,EAAE56B,EAAI,EAAE,EACdwJ,GAAKs1F,GAAI,CAAC,EACVv1F,GAAKu1F,GAAI,CAAC,EAGVihC,IACIv2H,KAAO,EAAMD,IAAM,KACnBC,KAAO,EAAMD,IAAM,IACpBC,KAAO,KAAQ,EAElBw2H,IACIx2H,IAAM,GAAOD,KAAO,IACpBC,IAAM,GAAOD,KAAO,IACpBC,IAAM,GAAOD,KAAO,MAAS,EAGjC+0F,GAAK1jE,EAAE56B,EAAI,CAAC,EACZ++F,GAAMnkE,EAAE56B,EAAI,EAAE,EACduJ,GAAMu2H,EAAQxhC,GAAG,CAAC,EAAI0hC,EAAQjhC,GAAI,CAAC,EACnCnkE,EAAE56B,CAAC,EAAE,CAAC,EAAK6/H,EAAQvhC,GAAG,CAAC,EAAIyhC,EAAQhhC,GAAI,CAAC,GACpCx1F,GAAK,aAAiB,KAAQ,EAClCqxB,EAAE56B,CAAC,EAAE,CAAC,EAAIuJ,KAAO,EAsBnB,IAlBAk3H,EAAOp+H,EAAE,CAAC,EAAE,CAAC,EACbq+H,EAAOr+H,EAAE,CAAC,EAAE,CAAC,EACbs+H,EAAOt+H,EAAE,CAAC,EAAE,CAAC,EACbu+H,EAAOv+H,EAAE,CAAC,EAAE,CAAC,EACbw+H,EAAOx+H,EAAE,CAAC,EAAE,CAAC,EACby+H,EAAOz+H,EAAE,CAAC,EAAE,CAAC,EACb0+H,EAAO1+H,EAAE,CAAC,EAAE,CAAC,EACb2+H,EAAO3+H,EAAE,CAAC,EAAE,CAAC,EACb4+H,EAAO5+H,EAAE,CAAC,EAAE,CAAC,EACb6+H,GAAO7+H,EAAE,CAAC,EAAE,CAAC,EACb8+H,GAAO9+H,EAAE,CAAC,EAAE,CAAC,EACb++H,GAAO/+H,EAAE,CAAC,EAAE,CAAC,EACbg/H,GAAOh/H,EAAE,CAAC,EAAE,CAAC,EACbi/H,EAAOj/H,EAAE,CAAC,EAAE,CAAC,EACbk/H,EAAOl/H,EAAE,CAAC,EAAE,CAAC,EACbm/H,EAAOn/H,EAAE,CAAC,EAAE,CAAC,EAGTrC,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAEnBmgI,IACIc,IAAS,GAAOC,IAAQ,KACxBD,IAAS,GAAOC,IAAQ,KACxBA,KAAS,EAAMD,GAAQ,OAAU,EACrCb,IACIa,GAAQ,GAAOC,KAAS,KACxBD,GAAQ,GAAOC,KAAS,KACxBA,IAAQ,GAAOD,IAAS,MAAS,EAGrCZ,GAASgB,GAAQJ,GAAQE,GAAOE,OAAY,EAC5Cf,GAASgB,EAAQJ,IAAQE,GAAOE,MAAY,EAG5CrB,IACIQ,IAAS,GAAOC,GAAQ,IACxBA,IAAS,EAAMD,GAAQ,KACvBC,IAAS,EAAMD,GAAQ,OAAU,EACrCP,IACIO,GAAQ,EAAMC,IAAS,KACvBA,GAAQ,GAAOD,IAAS,IACxBC,GAAQ,GAAOD,IAAS,MAAS,EAGrCF,GAAWE,EAAOE,EAASE,GAAQJ,EAAOE,MAAY,EACtDH,GAAWE,EAAOE,EAASE,GAAQJ,EAAOE,MAAY,EAItDr3H,GAAMi4H,EAAOpB,EAAQE,EAAQ,GAAGtgI,CAAC,EAAE,CAAC,EAAI46B,EAAE56B,CAAC,EAAE,CAAC,EAC9C6/H,EAAS0B,EAAOpB,EAAQE,EAAQ,GAAGrgI,CAAC,EAAE,CAAC,EAAI46B,EAAE56B,CAAC,EAAE,CAAC,GAC7CuJ,GAAK,aAAiB,KAAQ,EAClCu2H,EAAQv2H,KAAO,EAGfA,GAAK22H,EAAQM,EACbT,EAASE,EAAQM,GAAWh3H,GAAK,aAAiB,KAAQ,EAC1Dy2H,EAAQz2H,KAAO,EAEfg4H,EAAOF,GACPG,EAAOF,EAEPD,GAAOF,GACPG,EAAOF,GAEPD,GAAOF,EACPG,GAAOF,GAGP33H,GAAKy3H,EAAOlB,EACZmB,EAAQF,EAAOlB,GAAUt2H,GAAK,aAAiB,KAAQ,EACvD23H,GAAO33H,KAAO,EAEdw3H,EAAOF,EACPG,EAAOF,EAEPD,EAAOF,EACPG,EAAOF,EAEPD,EAAOF,EACPG,EAAOF,EAGPn3H,GAAKu2H,EAAQE,EACbS,EAAQZ,EAAQE,GAAUx2H,GAAK,aAAiB,KAAQ,EACxDm3H,EAAOn3H,KAAO,EAIhBA,GAAKlH,EAAE,CAAC,EAAE,CAAC,EAAIq+H,EACfr+H,EAAE,CAAC,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAE,CAAC,EAAIo+H,GAASl3H,GAAK,aAAiB,KAAQ,EAC5DlH,EAAE,CAAC,EAAE,CAAC,EAAIkH,KAAO,EAEjBA,GAAKlH,EAAE,CAAC,EAAE,CAAC,EAAIu+H,EACfv+H,EAAE,CAAC,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAE,CAAC,EAAIs+H,GAASp3H,GAAK,aAAiB,KAAQ,EAC5DlH,EAAE,CAAC,EAAE,CAAC,EAAIkH,KAAO,EAEjBA,GAAKlH,EAAE,CAAC,EAAE,CAAC,EAAIy+H,EACfz+H,EAAE,CAAC,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAE,CAAC,EAAIw+H,GAASt3H,GAAK,aAAiB,KAAQ,EAC5DlH,EAAE,CAAC,EAAE,CAAC,EAAIkH,KAAO,EAEjBA,GAAKlH,EAAE,CAAC,EAAE,CAAC,EAAI2+H,EACf3+H,EAAE,CAAC,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAE,CAAC,EAAI0+H,GAASx3H,GAAK,aAAiB,KAAQ,EAC5DlH,EAAE,CAAC,EAAE,CAAC,EAAIkH,KAAO,EAEjBA,GAAKlH,EAAE,CAAC,EAAE,CAAC,EAAI6+H,GACf7+H,EAAE,CAAC,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAE,CAAC,EAAI4+H,GAAS13H,GAAK,aAAiB,KAAQ,EAC5DlH,EAAE,CAAC,EAAE,CAAC,EAAIkH,KAAO,EAEjBA,GAAKlH,EAAE,CAAC,EAAE,CAAC,EAAI++H,GACf/+H,EAAE,CAAC,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAE,CAAC,EAAI8+H,IAAS53H,GAAK,aAAiB,KAAQ,EAC5DlH,EAAE,CAAC,EAAE,CAAC,EAAIkH,KAAO,EAEjBA,GAAKlH,EAAE,CAAC,EAAE,CAAC,EAAIi/H,EACfj/H,EAAE,CAAC,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAE,CAAC,EAAIg/H,IAAS93H,GAAK,aAAiB,KAAQ,EAC5DlH,EAAE,CAAC,EAAE,CAAC,EAAIkH,KAAO,EAEjBA,GAAKlH,EAAE,CAAC,EAAE,CAAC,EAAIm/H,EACfn/H,EAAE,CAAC,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAE,CAAC,EAAIk/H,GAASh4H,GAAK,aAAiB,KAAQ,EAC5DlH,EAAE,CAAC,EAAE,CAAC,EAAIkH,KAAO,EAEjBzJ,GAAO,GACR,CACH,CC3iBe,SAASsuE,cAAY9qE,EAAQ,CACxC,GAAI,MAAMA,CAAM,GAAKA,GAAU,EAC3B,MAAM,IAAI27H,YAAU,qDAAsD,oBAAoB,EAElG,OAAOwC,cAAMn+H,CAAM,CACvB,CCNA,SAASo+H,UAAQj1H,EAAKk1H,EAAO,CACzB,OAAOA,EAAM,IAAIpgH,GAAKqqG,wBAAsBn/G,EAAI8U,CAAC,CAAC,CAAC,CACvD,CACO,SAASqgH,WAASn1H,EAAK,CAC1B,OAAOy0D,QAAM,IAAI,iBAAiB,GAAGwgE,UAAQj1H,EAAK,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAI,CAAC,CAAC,CAClG,CACO,SAASo1H,UAAQp1H,EAAK,CACzB,OAAOy0D,QAAM,IAAI,gBAAgB,GAAGwgE,UAAQj1H,EAAK,CAAC,IAAK,GAAG,CAAC,CAAC,CAChE,CCHO,SAASq1H,aAAWl5H,EAAO,CAC9B,MAAM2gE,EAAOrI,QAAM,KAAK,QAAQyqD,WAAmB/iH,EAAO,OAAO,CAAC,EAC5D43G,EAAat/C,QAAM,IAAI,mBAAmBqI,CAAI,EAEpD,MAAO,CACH,IAAK,MACL,EAAGmiD,4BAA0BlL,EAAW,CAAC,EACzC,EAAGkL,4BAA0BlL,EAAW,CAAC,EACzC,EAAGkL,4BAA0BlL,EAAW,CAAC,EACzC,EAAGkL,4BAA0BlL,EAAW,CAAC,EACzC,EAAGkL,4BAA0BlL,EAAW,CAAC,EACzC,GAAIkL,4BAA0BlL,EAAW,EAAE,EAC3C,GAAIkL,4BAA0BlL,EAAW,EAAE,EAC3C,GAAIkL,4BAA0BlL,EAAW,IAAI,EAC7C,IAAK,OACb,CACA,CAEO,SAASuhB,aAAWC,EAAK,CAC5B,GAAIA,EAAI,GAAK,MAAQA,EAAI,GAAK,MAAQA,EAAI,GAAK,MAAQA,EAAI,GAAK,MAAQA,EAAI,GAAK,MAAQA,EAAI,IAAM,MAAQA,EAAI,IAAM,MAAQA,EAAI,IAAM,KACnI,MAAM,IAAI/C,YAAU,6BAA8B,wBAAwB,EAE9E,MAAM11D,EAAOrI,QAAM,IAAI,iBAAiB,CACpC,EAAG0qD,wBAAsBoW,EAAI,CAAC,EAC9B,EAAGpW,wBAAsBoW,EAAI,CAAC,EAC9B,EAAGpW,wBAAsBoW,EAAI,CAAC,EAC9B,EAAGpW,wBAAsBoW,EAAI,CAAC,EAC9B,EAAGpW,wBAAsBoW,EAAI,CAAC,EAC9B,GAAIpW,wBAAsBoW,EAAI,EAAE,EAChC,GAAIpW,wBAAsBoW,EAAI,EAAE,EAChC,KAAMpW,wBAAsBoW,EAAI,EAAE,CAC1C,CAAK,EACD,OAAOlW,aAAqB5qD,QAAM,KAAK,MAAMqI,CAAI,EAAE,WAAY,OAAO,CAC1E,CAEO,SAAS04D,YAAUr5H,EAAO,CAC7B,MAAM2gE,EAAOrI,QAAM,KAAK,QAAQyqD,WAAmB/iH,EAAO,OAAO,CAAC,EAC5Dk3G,EAAY5+C,QAAM,IAAI,kBAAkBqI,CAAI,EAClD,MAAO,CACH,IAAK,MACL,EAAGmiD,4BAA0B5L,EAAU,CAAC,EACxC,EAAG4L,4BAA0B5L,EAAU,CAAC,CAChD,CACA,CAEO,SAASoiB,YAAUF,EAAK,CAC3B,GAAIA,EAAI,GAAK,MAAQA,EAAI,GAAK,KAC1B,MAAM,IAAI/C,YAAU,6BAA8B,wBAAwB,EAE9E,MAAM11D,EAAOrI,QAAM,IAAI,gBAAgB,CACnC,EAAG0qD,wBAAsBoW,EAAI,CAAC,EAC9B,EAAGpW,wBAAsBoW,EAAI,CAAC,CACtC,CAAK,EACD,OAAOlW,aAAqB5qD,QAAM,KAAK,MAAMqI,CAAI,EAAE,WAAY,OAAO,CAC1E,CCvDO,eAAe6xD,cAAY31E,EAAM,CACpC,MAAM8jE,EAAO,MAAMsS,YAAU,IAAG,EAAG,OAAO,YAAY,CAClD,KAAM,oBACN,cAAep2E,EACf,eAAgB,IAAI,WAAW,CAAC,EAAM,EAAM,CAAI,CAAC,EACjD,KAAM,CAAE,KAAM,SAAW,CAC5B,EAAE,GAAM,CAAC,OAAQ,QAAQ,CAAC,EACrBnwC,EAAO,MAAM6sH,YAAU5Y,CAAI,EACjC,MAAO,CACH,WAAYj0G,EAAK,CAAC,EAClB,UAAWA,EAAK,CAAC,CACzB,CACA,CAEO,eAAe8sH,sBAAoB31H,EAAK,CAK3C,MAAM88G,EAAO,CAJM,MAAMsS,YAAU,IAAG,EAAG,OAAO,UAAU,MAAOpvH,EAAK,CAClE,KAAM,oBACN,KAAM,CAAE,KAAM,SAAW,CACjC,EAAO,GAAM,CAAC,MAAM,CAAC,EAGb,MAAM41H,0BAAwB51H,CAAG,CACzC,EACU6I,EAAO,MAAM6sH,YAAU,CACzB,WAAY5Y,EAAK,CAAC,EAClB,UAAWA,EAAK,CAAC,CACzB,CAAK,EACD,MAAO,CACH,WAAYj0G,EAAK,CAAC,EAClB,UAAWA,EAAK,CAAC,CACzB,CACA,CAEO,eAAekmH,cAAY/uH,EAAK5B,EAAK,CACxC,MAAM21G,EAAa,MAAMqb,YAAU,IAAG,EAAG,OAAO,UAAU,MAAOpvH,EAAK,CAClE,KAAM,oBACN,KAAM,CAAE,KAAM,SAAW,CACjC,EAAO,GAAO,CAAC,MAAM,CAAC,EACZ4pG,EAAM,MAAMwlB,YAAU,IAAK,EAAC,OAAO,KAAK,CAAE,KAAM,mBAAmB,EAAIrb,EAAY31G,aAAe,WAAaA,EAAMA,EAAI,SAAQ,CAAE,EACzI,OAAO,IAAI,WAAWwrG,EAAK,EAAGA,EAAI,UAAU,CAChD,CACO,eAAeolB,gBAAchvH,EAAK4pG,EAAKxrG,EAAK,CAC/C,MAAMi1G,EAAY,MAAM+b,YAAU,IAAG,EAAG,OAAO,UAAU,MAAOpvH,EAAK,CACjE,KAAM,oBACN,KAAM,CAAE,KAAM,SAAW,CACjC,EAAO,GAAO,CAAC,QAAQ,CAAC,EACpB,OAAOovH,YAAU,IAAK,EAAC,OAAO,OAAO,CAAE,KAAM,mBAAmB,EAAI/b,EAAWzJ,EAAKxrG,aAAe,WAAaA,EAAMA,EAAI,SAAQ,CAAE,CACxI,CACA,eAAes3H,YAAU5Y,EAAM,CAC3B,GAAIA,EAAK,YAAc,MAAQA,EAAK,WAAa,KAC7C,MAAM,IAAI0V,YAAU,sCAAuC,wBAAwB,EAEvF,OAAO,QAAQ,IAAI,CACfpD,YAAU,IAAG,EAAG,OAAO,UAAU,MAAOtS,EAAK,UAAU,EACvDsS,YAAU,IAAG,EAAG,OAAO,UAAU,MAAOtS,EAAK,SAAS,CAC9D,CAAK,CACL,CACA,eAAe8Y,0BAAwBC,EAAO,CAC1C,OAAOzG,YAAU,IAAG,EAAG,OAAO,UAAU,MAAO,CAC3C,IAAKyG,EAAM,IACX,EAAGA,EAAM,EACT,EAAGA,EAAM,CACjB,EAAO,CACC,KAAM,oBACN,KAAM,CAAE,KAAM,SAAW,CACjC,EAAO,GAAM,CAAC,QAAQ,CAAC,CACvB,CAYA,SAASC,aAAW91H,EAAKw4F,EAAKp6F,EAAK23H,EAAQ,CACvC,MAAMC,EAAOx9B,EAAM48B,UAAQp1H,CAAG,EAAIm1H,WAASn1H,CAAG,EACxCi2H,EAAO/W,WAAmB9gH,aAAe,WAAaA,EAAMA,EAAI,WAAY,OAAO,EACnF83H,EAAQH,EAAOE,EAAMD,CAAI,EAC/B,OAAO3W,aAAqB6W,EAAO,OAAO,CAC9C,CACO,SAAS9d,UAAQp4G,EAAK5B,EAAK,CAC9B,OAAO03H,aAAW91H,EAAK,GAAM5B,EAAK,CAACA,EAAK4B,IAAQA,EAAI,QAAQ5B,CAAG,CAAC,CACpE,CACO,SAASq7D,UAAQz5D,EAAK5B,EAAK,CAC9B,OAAO03H,aAAW91H,EAAK,GAAO5B,EAAK,CAACA,EAAK4B,IAAQA,EAAI,QAAQ5B,CAAG,CAAC,CACrE,CACO,SAAS8qF,UAAQqsC,EAAK,CACzB,GAAIA,EAAI,MAAQ,MACZ,MAAM,IAAI/C,YAAU,mBAAoB,sBAAsB,EAE7D,GAAI+C,EAAI,GAAK,KACd,MAAM,IAAI/C,YAAU,sBAAuB,yBAAyB,EAGxE,OADcnT,aAAqBkW,EAAI,EAAG,WAAW,EACxC,OAAS,CAC1B,CChGO,MAAMY,eAAe,KACrB,wBAAmB,CACtB,KACA,YAAYn2H,EAAK,CACb,KAAK,KAAOA,CACf,CACD,OAAOmM,EAAMy9F,EAAK,CACd,OAAOooB,gBAAqB,KAAK,KAAMpoB,EAAKz9F,CAAI,CACnD,CACD,SAAU,CACN,OAAOiqH,YAAuB,KAAK,IAAI,CAC1C,CACD,IAAI,OAAQ,CACR,OAAOnE,YAAc,OAAO,CACxB,KAAMC,UAAY,IAClB,KAAM,KAAK,QAAS,CAChC,CAAS,EAAE,SAAQ,CACd,CACD,QAAQ/1H,EAAO,CACX,OAAOk6H,UAAe,KAAK,KAAMl6H,CAAK,CACzC,CACD,OAAO6D,EAAK,CACR,OAAOmyH,SAAiB,KAAK,MAAOnyH,EAAI,KAAK,CAChD,CACD,MAAO,CACH,MAAMwJ,EAAIs8C,SAAO,OAAO,KAAK,KAAK,EAClC,OAAIllD,YAAU4I,CAAC,EACJA,EAAE,KAAK,CAAC,CAAE,MAAArN,CAAO,IAAKA,CAAK,EAE/BqN,EAAE,KACZ,CACL,EACO,qBAAoB,CACvB,KACA,WACA,YAAYxJ,EAAKqzG,EAAW,CACxB,KAAK,KAAOrzG,EACZ,KAAK,WAAaqzG,CACrB,CACD,WAAY,CACR,OAAOijB,cAAuB,EAAE,CACnC,CACD,KAAKpnG,EAAS,CACV,OAAOmjG,cAAmB,KAAK,KAAMnjG,CAAO,CAC/C,CACD,IAAI,QAAS,CACT,GAAI,KAAK,YAAc,KACnB,MAAM,IAAIsjG,YAAU,0BAA2B,yBAAyB,EAE5E,OAAO,IAAI+D,eAAa,KAAK,UAAU,CAC1C,CACD,QAAQp6H,EAAO,CACX,OAAOq6H,UAAe,KAAK,KAAMr6H,CAAK,CACzC,CACD,SAAU,CACN,OAAOs6H,aAAwB,KAAK,IAAI,CAC3C,CACD,IAAI,OAAQ,CACR,OAAOlE,aAAe,OAAO,CACzB,KAAML,UAAY,IAClB,KAAM,KAAK,QAAS,CAChC,CAAS,EAAE,SAAQ,CACd,CACD,OAAOlyH,EAAK,CACR,OAAOmyH,SAAiB,KAAK,MAAOnyH,EAAI,KAAK,CAChD,CACD,MAAO,CACH,MAAMwJ,EAAIs8C,SAAO,OAAO,KAAK,KAAK,EAClC,OAAIllD,YAAU4I,CAAC,EACJA,EAAE,KAAK,CAAC,CAAE,MAAArN,CAAO,IAAKA,CAAK,EAE/BqN,EAAE,KACZ,CAQD,MAAM,IAAK,CACP,MAAMu0C,EAAO,MAAM,KAAK,OAAO,KAAI,EACnC,OAAOmhE,WAAmBnhE,EAAM,WAAW,CAC9C,CAID,MAAM,OAAOwlC,EAAU9nC,EAAS,SAAU,CACtC,GAAIA,IAAW,SAAU,CACrB,MAAM5nD,EAAS,IAAI4gE,QAAM,KAAK,WAAW,KAAK,QAAO,CAAE,EACjDqI,EAAOrI,QAAM,KAAK,QAAQ5gE,CAAM,EAChCkgH,EAAat/C,QAAM,IAAI,mBAAmBqI,CAAI,EAC9CzxD,EAAU,CACZ,UAAW,SACX,MAAO,IACP,SAAU,IAAM,EAChB,aAAc,QAC9B,EACY,OAAOopD,QAAM,IAAI,qBAAqBs/C,EAAYxwB,EAAUl4E,CAAO,CACtE,KACI,IAAIowC,IAAW,aAChB,OAAOk0E,WAAS,KAAK,MAAOpsC,CAAQ,EAGpC,MAAM,IAAIivC,YAAU,kBAAkB/2E,CAAM,qBAAsB,2BAA2B,EAEpG,CACL,EACO,eAAei7E,yBAAuBv6H,EAAO,CAChD,MAAMo5H,EAAMoB,aAAwBx6H,CAAK,EACzC,GAAIy6H,UAAerB,CAAG,EAAIY,eACtB,MAAM,IAAI3D,YAAU,wBAAyB,wBAAwB,EAEzE,MAAM3pH,EAAO,MAAMguH,sBAA2BtB,CAAG,EACjD,OAAO,IAAIuB,gBAAcjuH,EAAK,WAAYA,EAAK,SAAS,CAC5D,CACO,SAASkuH,wBAAsB56H,EAAO,CACzC,MAAMo5H,EAAMyB,YAAuB76H,CAAK,EACxC,GAAIy6H,UAAerB,CAAG,EAAIY,eACtB,MAAM,IAAI3D,YAAU,wBAAyB,wBAAwB,EAEzE,OAAO,IAAI+D,eAAahB,CAAG,CAC/B,CACO,eAAe0B,UAAQ1B,EAAK,CAC/B,GAAIqB,UAAerB,CAAG,EAAIY,eACtB,MAAM,IAAI3D,YAAU,wBAAyB,wBAAwB,EAEzE,MAAM3pH,EAAO,MAAMguH,sBAA2BtB,CAAG,EACjD,OAAO,IAAIuB,gBAAcjuH,EAAK,WAAYA,EAAK,SAAS,CAC5D,CACO,eAAeiqH,kBAAgB95E,EAAM,CACxC,GAAIA,EAAOm9E,eACP,MAAM,IAAI3D,YAAU,wBAAyB,wBAAwB,EAEzE,MAAM3pH,EAAO,MAAMkqH,cAAmB/5E,CAAI,EAC1C,OAAO,IAAI89E,gBAAcjuH,EAAK,WAAYA,EAAK,SAAS,CAC5D,gVC5IM,SAA2B,IAAI,YAAY,CAC7C,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UACpF,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACpF,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACxF,CAAC,EAIK,UAA4B,IAAI,YAAY,CAC9C,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UACxF,CAAC,EAGK,SAA2B,IAAI,YAAY,EAAE,EAC5C,MAAM,eAAe,MAAO,CAC/B,aAAc,CACV,MAAM,GAAI,GAAI,EAAG,EAAK,EAGtB,KAAK,EAAI,UAAU,CAAC,EAAI,EACxB,KAAK,EAAI,UAAU,CAAC,EAAI,EACxB,KAAK,EAAI,UAAU,CAAC,EAAI,EACxB,KAAK,EAAI,UAAU,CAAC,EAAI,EACxB,KAAK,EAAI,UAAU,CAAC,EAAI,EACxB,KAAK,EAAI,UAAU,CAAC,EAAI,EACxB,KAAK,EAAI,UAAU,CAAC,EAAI,EACxB,KAAK,EAAI,UAAU,CAAC,EAAI,CAC3B,CACD,KAAM,CACF,KAAM,CAAE,EAAAksF,EAAG,EAAAC,EAAG,EAAAplE,EAAG,EAAAqlE,EAAG,EAAAn3F,EAAG,EAAA+rH,EAAG,EAAAphC,EAAG,EAAAxK,CAAG,EAAG,KACnC,MAAO,CAAC8W,EAAGC,EAAGplE,EAAGqlE,EAAGn3F,EAAG+rH,EAAGphC,EAAGxK,CAAC,CACjC,CAED,IAAI8W,EAAGC,EAAGplE,EAAGqlE,EAAGn3F,EAAG+rH,EAAGphC,EAAGxK,EAAG,CACxB,KAAK,EAAI8W,EAAI,EACb,KAAK,EAAIC,EAAI,EACb,KAAK,EAAIplE,EAAI,EACb,KAAK,EAAIqlE,EAAI,EACb,KAAK,EAAIn3F,EAAI,EACb,KAAK,EAAI+rH,EAAI,EACb,KAAK,EAAIphC,EAAI,EACb,KAAK,EAAIxK,EAAI,CAChB,CACD,QAAQ3yB,EAAMr2D,EAAQ,CAElB,QAAS1B,EAAI,EAAGA,EAAI,GAAIA,IAAK0B,GAAU,EACnC,SAAS1B,CAAC,EAAI+3D,EAAK,UAAUr2D,EAAQ,EAAK,EAC9C,QAAS1B,EAAI,GAAIA,EAAI,GAAIA,IAAK,CAC1B,MAAM2jI,EAAM,SAAS3jI,EAAI,EAAE,EACrB4jI,EAAK,SAAS5jI,EAAI,CAAC,EACnB20F,EAAK,KAAKgvC,EAAK,CAAC,EAAI,KAAKA,EAAK,EAAE,EAAKA,IAAQ,EAC7Cr7G,EAAK,KAAKs7G,EAAI,EAAE,EAAI,KAAKA,EAAI,EAAE,EAAKA,IAAO,GACjD,SAAS5jI,CAAC,EAAKsoB,EAAK,SAAStoB,EAAI,CAAC,EAAI20F,EAAK,SAAS30F,EAAI,EAAE,EAAK,CAClE,CAED,GAAI,CAAE,EAAAwhG,EAAG,EAAAC,EAAG,EAAAplE,EAAG,EAAAqlE,EAAG,EAAAn3F,EAAG,EAAA+rH,EAAG,EAAAphC,EAAG,EAAAxK,CAAG,EAAG,KACjC,QAAS1qF,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,MAAMkrF,EAAS,KAAK3gF,EAAG,CAAC,EAAI,KAAKA,EAAG,EAAE,EAAI,KAAKA,EAAG,EAAE,EAC9C8gF,EAAMX,EAAIQ,EAAS,IAAI3gF,EAAG+rH,EAAGphC,CAAC,EAAI,SAASl1F,CAAC,EAAI,SAASA,CAAC,EAAK,EAE/DsrF,GADS,KAAKkW,EAAG,CAAC,EAAI,KAAKA,EAAG,EAAE,EAAI,KAAKA,EAAG,EAAE,GAC/B,IAAIA,EAAGC,EAAGplE,CAAC,EAAK,EACrCquD,EAAIwK,EACJA,EAAIohC,EACJA,EAAI/rH,EACJA,EAAKm3F,EAAIrW,EAAM,EACfqW,EAAIrlE,EACJA,EAAIolE,EACJA,EAAID,EACJA,EAAKnW,EAAKC,EAAM,CACnB,CAEDkW,EAAKA,EAAI,KAAK,EAAK,EACnBC,EAAKA,EAAI,KAAK,EAAK,EACnBplE,EAAKA,EAAI,KAAK,EAAK,EACnBqlE,EAAKA,EAAI,KAAK,EAAK,EACnBn3F,EAAKA,EAAI,KAAK,EAAK,EACnB+rH,EAAKA,EAAI,KAAK,EAAK,EACnBphC,EAAKA,EAAI,KAAK,EAAK,EACnBxK,EAAKA,EAAI,KAAK,EAAK,EACnB,KAAK,IAAI8W,EAAGC,EAAGplE,EAAGqlE,EAAGn3F,EAAG+rH,EAAGphC,EAAGxK,CAAC,CAClC,CACD,YAAa,CACT,SAAS,KAAK,CAAC,CAClB,CACD,SAAU,CACN,KAAK,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC/B,KAAK,OAAO,KAAK,CAAC,CACrB,CACL,CAoBO,MAAMn4B,SAAyB,gBAAgB,IAAM,IAAI,MAAQ,ECrHjE,MAAM,aAAa,IAAK,CAC3B,YAAY/H,EAAMt8C,EAAM,CACpB,QACA,KAAK,SAAW,GAChB,KAAK,UAAY,GACjB21H,KAAWr5E,CAAI,EACf,MAAM/9C,EAAM2/G,UAAQl+G,CAAI,EAExB,GADA,KAAK,MAAQs8C,EAAK,SACd,OAAO,KAAK,MAAM,QAAW,WAC7B,MAAM,IAAI,MAAM,qDAAqD,EACzE,KAAK,SAAW,KAAK,MAAM,SAC3B,KAAK,UAAY,KAAK,MAAM,UAC5B,MAAMyiE,EAAW,KAAK,SAChBtnE,EAAM,IAAI,WAAWsnE,CAAQ,EAEnCtnE,EAAI,IAAIl5C,EAAI,OAASwgH,EAAWziE,EAAK,OAAQ,EAAC,OAAO/9C,CAAG,EAAE,OAAQ,EAAGA,CAAG,EACxE,QAASzM,EAAI,EAAGA,EAAI2lD,EAAI,OAAQ3lD,IAC5B2lD,EAAI3lD,CAAC,GAAK,GACd,KAAK,MAAM,OAAO2lD,CAAG,EAErB,KAAK,MAAQ6E,EAAK,SAElB,QAASxqD,EAAI,EAAGA,EAAI2lD,EAAI,OAAQ3lD,IAC5B2lD,EAAI3lD,CAAC,GAAK,IACd,KAAK,MAAM,OAAO2lD,CAAG,EACrBA,EAAI,KAAK,CAAC,CACb,CACD,OAAOpiD,EAAK,CACRugI,gBAAa,IAAI,EACjB,KAAK,MAAM,OAAOvgI,CAAG,EACd,IACV,CACD,WAAWmF,EAAK,CACZo7H,SAAa,IAAI,EACjBC,QAAYr7H,EAAK,KAAK,SAAS,EAC/B,KAAK,SAAW,GAChB,KAAK,MAAM,WAAWA,CAAG,EACzB,KAAK,MAAM,OAAOA,CAAG,EACrB,KAAK,MAAM,WAAWA,CAAG,EACzB,KAAK,QAAO,CACf,CACD,QAAS,CACL,MAAMA,EAAM,IAAI,WAAW,KAAK,MAAM,SAAS,EAC/C,YAAK,WAAWA,CAAG,EACZA,CACV,CACD,WAAWkW,EAAI,CAEXA,IAAOA,EAAK,OAAO,OAAO,OAAO,eAAe,IAAI,EAAG,CAAE,IACzD,KAAM,CAAE,MAAAolH,EAAO,MAAA/jB,EAAO,SAAA1gC,EAAU,UAAAtiE,EAAW,SAAAgwG,EAAU,UAAAC,CAAW,EAAG,KACnE,OAAAtuG,EAAKA,EACLA,EAAG,SAAW2gE,EACd3gE,EAAG,UAAY3B,EACf2B,EAAG,SAAWquG,EACdruG,EAAG,UAAYsuG,EACftuG,EAAG,MAAQolH,EAAM,WAAWplH,EAAG,KAAK,EACpCA,EAAG,MAAQqhG,EAAM,WAAWrhG,EAAG,KAAK,EAC7BA,CACV,CACD,SAAU,CACN,KAAK,UAAY,GACjB,KAAK,MAAM,UACX,KAAK,MAAM,SACd,CACL,CAWO,MAAM,KAAO,CAAC4rC,EAAM/9C,EAAKkvB,IAAY,IAAI,KAAK6uB,EAAM/9C,CAAG,EAAE,OAAOkvB,CAAO,EAAE,OAAM,EACtF,KAAK,OAAS,CAAC6uB,EAAM/9C,IAAQ,IAAI,KAAK+9C,EAAM/9C,CAAG,EC/E/C,sEAMA,SAAS,mBAAmBmzC,EAAM,CAC1BA,EAAK,OAAS,QACd,MAAM,OAAQA,EAAK,IAAI,EACvBA,EAAK,UAAY,QACjB,MAAM,UAAWA,EAAK,OAAO,CACrC,CACA,SAAS,kBAAkB+pD,EAAO,CAC9B,MAAM/pD,EAAO,cAAc+pD,CAAK,EAChCkqB,eAAkBj0E,EAAM,CACpB,EAAG,QACH,EAAG,OACX,EAAO,CACC,yBAA0B,QAC1B,eAAgB,UAChB,cAAe,WACf,cAAe,WACf,mBAAoB,UACpB,UAAW,WACX,QAAS,UACjB,CAAK,EACD,KAAM,CAAE,KAAAqkF,EAAM,GAAAhT,EAAI,EAAAhsH,CAAC,EAAK26C,EACxB,GAAIqkF,EAAM,CACN,GAAI,CAAChT,EAAG,IAAIhsH,EAAGgsH,EAAG,IAAI,EAClB,MAAM,IAAI,MAAM,mEAAmE,EAEvF,GAAI,OAAOgT,GAAS,UAChB,OAAOA,EAAK,MAAS,UACrB,OAAOA,EAAK,aAAgB,WAC5B,MAAM,IAAI,MAAM,mEAAmE,CAE1F,CACD,OAAO,OAAO,OAAO,CAAE,GAAGrkF,CAAM,EACpC,CACA,KAAM,CAAE,gBAAiB,IAAK,WAAY,GAAG,EAAK,GAQrC,IAAM,CAEf,IAAK,cAAqB,KAAM,CAC5B,YAAY79C,EAAI,GAAI,CAChB,MAAMA,CAAC,CACV,CACJ,EAED,KAAM,CACF,OAAQ,CAACkwB,EAAKrZ,IAAS,CACnB,KAAM,CAAE,IAAKrO,CAAG,EAAG,IACnB,GAAI0nB,EAAM,GAAKA,EAAM,IACjB,MAAM,IAAI1nB,EAAE,uBAAuB,EACvC,GAAIqO,EAAK,OAAS,EACd,MAAM,IAAIrO,EAAE,2BAA2B,EAC3C,MAAM25H,EAAUtrH,EAAK,OAAS,EACxB9Y,EAAMqkI,oBAAuBD,CAAO,EAC1C,GAAKpkI,EAAI,OAAS,EAAK,IACnB,MAAM,IAAIyK,EAAE,sCAAsC,EAEtD,MAAM65H,EAASF,EAAU,IAAMC,oBAAwBrkI,EAAI,OAAS,EAAK,GAAG,EAAI,GAChF,MAAO,GAAGqkI,oBAAuBlyG,CAAG,CAAC,GAAGmyG,CAAM,GAAGtkI,CAAG,GAAG8Y,CAAI,EAC9D,EAED,OAAOqZ,EAAKrZ,EAAM,CACd,KAAM,CAAE,IAAKrO,CAAG,EAAG,IACnB,IAAInF,EAAM,EACV,GAAI6sB,EAAM,GAAKA,EAAM,IACjB,MAAM,IAAI1nB,EAAE,uBAAuB,EACvC,GAAIqO,EAAK,OAAS,GAAKA,EAAKxT,GAAK,IAAM6sB,EACnC,MAAM,IAAI1nB,EAAE,uBAAuB,EACvC,MAAMnB,EAAQwP,EAAKxT,GAAK,EAClBi/H,EAAS,CAAC,EAAEj7H,EAAQ,KAC1B,IAAI9F,EAAS,EACb,GAAI,CAAC+gI,EACD/gI,EAAS8F,MACR,CAED,MAAMg7H,EAASh7H,EAAQ,IACvB,GAAI,CAACg7H,EACD,MAAM,IAAI75H,EAAE,mDAAmD,EACnE,GAAI65H,EAAS,EACT,MAAM,IAAI75H,EAAE,0CAA0C,EAC1D,MAAM+5H,EAAc1rH,EAAK,SAASxT,EAAKA,EAAMg/H,CAAM,EACnD,GAAIE,EAAY,SAAWF,EACvB,MAAM,IAAI75H,EAAE,uCAAuC,EACvD,GAAI+5H,EAAY,CAAC,IAAM,EACnB,MAAM,IAAI/5H,EAAE,sCAAsC,EACtD,UAAWtG,KAAKqgI,EACZhhI,EAAUA,GAAU,EAAKW,EAE7B,GADAmB,GAAOg/H,EACH9gI,EAAS,IACT,MAAM,IAAIiH,EAAE,wCAAwC,CAC3D,CACD,MAAM8D,EAAIuK,EAAK,SAASxT,EAAKA,EAAM9B,CAAM,EACzC,GAAI+K,EAAE,SAAW/K,EACb,MAAM,IAAIiH,EAAE,gCAAgC,EAChD,MAAO,CAAE,EAAA8D,EAAG,EAAGuK,EAAK,SAASxT,EAAM9B,CAAM,EAC5C,CACJ,EAKD,KAAM,CACF,OAAOrC,EAAK,CACR,KAAM,CAAE,IAAKsJ,CAAG,EAAG,IACnB,GAAItJ,EAAM,IACN,MAAM,IAAIsJ,EAAE,4CAA4C,EAC5D,IAAIoyB,EAAMwnG,oBAAuBljI,CAAG,EAIpC,GAFI,OAAO,SAAS07B,EAAI,CAAC,EAAG,EAAE,EAAI,IAC9BA,EAAM,KAAOA,GACbA,EAAI,OAAS,EACb,MAAM,IAAIpyB,EAAE,sBAAsB,EACtC,OAAOoyB,CACV,EACD,OAAO/jB,EAAM,CACT,KAAM,CAAE,IAAKrO,CAAG,EAAG,IACnB,GAAIqO,EAAK,CAAC,EAAI,IACV,MAAM,IAAIrO,EAAE,qCAAqC,EACrD,GAAIqO,EAAK,CAAC,IAAM,GAAQ,EAAEA,EAAK,CAAC,EAAI,KAChC,MAAM,IAAIrO,EAAE,qDAAqD,EACrE,OAAO,IAAIqO,CAAI,CAClB,CACJ,EACD,MAAM+jB,EAAK,CAEP,KAAM,CAAE,IAAKpyB,EAAG,KAAM+8C,EAAK,KAAMi9E,CAAK,EAAG,IACnC3rH,EAAO,OAAO+jB,GAAQ,SAAW,IAAIA,CAAG,EAAIA,EAClD6nG,OAAU5rH,CAAI,EACd,KAAM,CAAE,EAAG6rH,EAAU,EAAGC,GAAiBH,EAAI,OAAO,GAAM3rH,CAAI,EAC9D,GAAI8rH,EAAa,OACb,MAAM,IAAIn6H,EAAE,6CAA6C,EAC7D,KAAM,CAAE,EAAGo6H,EAAQ,EAAGC,GAAeL,EAAI,OAAO,EAAME,CAAQ,EACxD,CAAE,EAAGI,EAAQ,EAAGC,GAAeP,EAAI,OAAO,EAAMK,CAAU,EAChE,GAAIE,EAAW,OACX,MAAM,IAAIv6H,EAAE,6CAA6C,EAC7D,MAAO,CAAE,EAAG+8C,EAAI,OAAOq9E,CAAM,EAAG,EAAGr9E,EAAI,OAAOu9E,CAAM,EACvD,EACD,WAAWxuB,EAAK,CACZ,KAAM,CAAE,KAAMkuB,EAAK,KAAMj9E,CAAG,EAAK,IAC3By9E,EAAM,GAAGR,EAAI,OAAO,EAAMj9E,EAAI,OAAO+uD,EAAI,CAAC,CAAC,CAAC,GAAGkuB,EAAI,OAAO,EAAMj9E,EAAI,OAAO+uD,EAAI,CAAC,CAAC,CAAC,GACxF,OAAOkuB,EAAI,OAAO,GAAMQ,CAAG,CAC9B,CACL,EAGM,IAAM,OAAO,CAAC,EAAGrV,MAAM,OAAO,CAAC,EAAS,OAAO,CAAC,EAAE,MAAC,IAAM,OAAO,CAAC,EAAS,OAAO,CAAC,EACjF,SAAS,kBAAkB9vE,EAAM,CACpC,MAAMm0E,EAAQ,kBAAkBn0E,CAAI,EAC9B,CAAE,GAAAqxE,CAAI,EAAG8C,EACTM,EAAK2Q,MAAUjR,EAAM,EAAGA,EAAM,UAAU,EACxC3H,EAAU2H,EAAM,UACjB,CAACkR,EAAI55B,EAAO65B,IAAkB,CAC3B,MAAMjgI,EAAIomG,EAAM,WAChB,OAAOusB,YAAe,WAAW,KAAK,CAAC,CAAI,CAAC,EAAG3G,EAAG,QAAQhsH,EAAE,CAAC,EAAGgsH,EAAG,QAAQhsH,EAAE,CAAC,CAAC,CAC3F,GACUkgI,EAAYpR,EAAM,YAClBnrH,GAAU,CAER,MAAMouF,EAAOpuF,EAAM,SAAS,CAAC,EAEvBpJ,EAAIyxH,EAAG,UAAUj6B,EAAK,SAAS,EAAGi6B,EAAG,KAAK,CAAC,EAC3C/rH,EAAI+rH,EAAG,UAAUj6B,EAAK,SAASi6B,EAAG,MAAO,EAAIA,EAAG,KAAK,CAAC,EAC5D,MAAO,CAAE,EAAAzxH,EAAG,EAAA0F,EACxB,GAKI,SAASkgI,EAAoB5lI,EAAG,CAC5B,KAAM,CAAE,EAAAyF,EAAG,EAAAhB,CAAG,EAAG8vH,EACXz+B,EAAK27B,EAAG,IAAIzxH,CAAC,EACb6lI,EAAKpU,EAAG,IAAI37B,EAAI91F,CAAC,EACvB,OAAOyxH,EAAG,IAAIA,EAAG,IAAIoU,EAAIpU,EAAG,IAAIzxH,EAAGyF,CAAC,CAAC,EAAGhB,CAAC,CAC5C,CAKD,GAAI,CAACgtH,EAAG,IAAIA,EAAG,IAAI8C,EAAM,EAAE,EAAGqR,EAAoBrR,EAAM,EAAE,CAAC,EACvD,MAAM,IAAI,MAAM,6CAA6C,EAEjE,SAASuR,EAAmBrkI,EAAK,CAC7B,OAAOskI,QAAWtkI,EAAKyuH,MAAKqE,EAAM,CAAC,CACtC,CAGD,SAASyR,EAAuB/4H,EAAK,CACjC,KAAM,CAAE,yBAA0Bm4D,EAAS,YAAA+sD,EAAa,eAAA8T,EAAgB,EAAGlmC,CAAG,EAAGw0B,EACjF,GAAInvD,GAAW,OAAOn4D,GAAQ,SAAU,CAIpC,GAHIi5H,UAAWj5H,CAAG,IACdA,EAAM2qH,WAAc3qH,CAAG,GAEvB,OAAOA,GAAQ,UAAY,CAACm4D,EAAQ,SAASn4D,EAAI,MAAM,EACvD,MAAM,IAAI,MAAM,aAAa,EACjCA,EAAMA,EAAI,SAASklH,EAAc,EAAG,GAAG,CAC1C,CACD,IAAI1wH,EACJ,GAAI,CACAA,EACI,OAAOwL,GAAQ,SACTA,EACAk5H,gBAAmB9V,cAAY,cAAepjH,EAAKklH,CAAW,CAAC,CAC5E,MACa,CACV,MAAM,IAAI,MAAM,uBAAuBA,CAAW,8BAA8B,OAAOllH,CAAG,EAAE,CAC/F,CACD,OAAIg5H,IACAxkI,EAAM2kI,IAAQ3kI,EAAKs+F,CAAC,GACxBo1B,SAAY,cAAe1zH,EAAKyuH,MAAKnwB,CAAC,EAC/Bt+F,CACV,CACD,SAAS4kI,EAAen9E,EAAO,CAC3B,GAAI,EAAEA,aAAiBijD,GACnB,MAAM,IAAI,MAAM,0BAA0B,CACjD,CAKD,MAAMkpB,EAAe,SAAS,CAAC5+G,EAAG6+G,IAAO,CACrC,KAAM,CAAE,GAAIt1H,EAAG,GAAI0F,EAAG,GAAI,CAAG,EAAG+Q,EAEhC,GAAIg7G,EAAG,IAAI,EAAGA,EAAG,GAAG,EAChB,MAAO,CAAE,EAAAzxH,EAAG,EAAA0F,GAChB,MAAM6vH,EAAM9+G,EAAE,MAGV6+G,GAAM,OACNA,EAAKC,EAAM9D,EAAG,IAAMA,EAAG,IAAI,CAAC,GAChC,MAAM3lB,EAAK2lB,EAAG,IAAIzxH,EAAGs1H,CAAE,EACjBroB,EAAKwkB,EAAG,IAAI/rH,EAAG4vH,CAAE,EACjB1mB,EAAK6iB,EAAG,IAAI,EAAG6D,CAAE,EACvB,GAAIC,EACA,MAAO,CAAE,EAAG9D,EAAG,KAAM,EAAGA,EAAG,MAC/B,GAAI,CAACA,EAAG,IAAI7iB,EAAI6iB,EAAG,GAAG,EAClB,MAAM,IAAI,MAAM,kBAAkB,EACtC,MAAO,CAAE,EAAG3lB,EAAI,EAAGmB,CAAE,CAC7B,CAAK,EAGKuoB,EAAkB,SAAU/+G,GAAM,CACpC,GAAIA,EAAE,MAAO,CAIT,GAAI89G,EAAM,oBAAsB,CAAC9C,EAAG,IAAIh7G,EAAE,EAAE,EACxC,OACJ,MAAM,IAAI,MAAM,iBAAiB,CACpC,CAED,KAAM,CAAE,EAAAzW,EAAG,EAAA0F,CAAG,EAAG+Q,EAAE,SAAQ,EAE3B,GAAI,CAACg7G,EAAG,QAAQzxH,CAAC,GAAK,CAACyxH,EAAG,QAAQ/rH,CAAC,EAC/B,MAAM,IAAI,MAAM,0BAA0B,EAC9C,MAAM86B,EAAOixF,EAAG,IAAI/rH,CAAC,EACfyrC,EAAQy0F,EAAoB5lI,CAAC,EACnC,GAAI,CAACyxH,EAAG,IAAIjxF,EAAM2Q,CAAK,EACnB,MAAM,IAAI,MAAM,mCAAmC,EACvD,GAAI,CAAC16B,EAAE,cAAe,EAClB,MAAM,IAAI,MAAM,wCAAwC,EAC5D,MAAO,EACf,CAAK,EAMD,MAAM01F,CAAM,CACR,YAAYm6B,EAAIC,EAAIC,EAAI,CAIpB,GAHA,KAAK,GAAKF,EACV,KAAK,GAAKC,EACV,KAAK,GAAKC,EACNF,GAAM,MAAQ,CAAC7U,EAAG,QAAQ6U,CAAE,EAC5B,MAAM,IAAI,MAAM,YAAY,EAChC,GAAIC,GAAM,MAAQ,CAAC9U,EAAG,QAAQ8U,CAAE,EAC5B,MAAM,IAAI,MAAM,YAAY,EAChC,GAAIC,GAAM,MAAQ,CAAC/U,EAAG,QAAQ+U,CAAE,EAC5B,MAAM,IAAI,MAAM,YAAY,EAChC,OAAO,OAAO,IAAI,CACrB,CAGD,OAAO,WAAW/vH,EAAG,CACjB,KAAM,CAAE,EAAAzW,EAAG,EAAA0F,GAAM+Q,GAAK,GACtB,GAAI,CAACA,GAAK,CAACg7G,EAAG,QAAQzxH,CAAC,GAAK,CAACyxH,EAAG,QAAQ/rH,CAAC,EACrC,MAAM,IAAI,MAAM,sBAAsB,EAC1C,GAAI+Q,aAAa01F,EACb,MAAM,IAAI,MAAM,8BAA8B,EAClD,MAAMopB,EAAO/0H,GAAMixH,EAAG,IAAIjxH,EAAGixH,EAAG,IAAI,EAEpC,OAAI8D,EAAIv1H,CAAC,GAAKu1H,EAAI7vH,CAAC,EACRymG,EAAM,KACV,IAAIA,EAAMnsG,EAAG0F,EAAG+rH,EAAG,GAAG,CAChC,CACD,IAAI,GAAI,CACJ,OAAO,KAAK,SAAU,EAAC,CAC1B,CACD,IAAI,GAAI,CACJ,OAAO,KAAK,SAAU,EAAC,CAC1B,CAOD,OAAO,WAAW/nB,EAAQ,CACtB,MAAM0sB,EAAQ3E,EAAG,YAAY/nB,EAAO,IAAKjzF,GAAMA,EAAE,EAAE,CAAC,EACpD,OAAOizF,EAAO,IAAI,CAACjzF,EAAGjW,IAAMiW,EAAE,SAAS2/G,EAAM51H,CAAC,CAAC,CAAC,EAAE,IAAI2rG,EAAM,UAAU,CACzE,CAKD,OAAO,QAAQhvE,EAAK,CAChB,MAAMuuF,EAAIvf,EAAM,WAAWw5B,EAAUtV,cAAY,WAAYlzF,CAAG,CAAC,CAAC,EAClE,OAAAuuF,EAAE,eAAc,EACTA,CACV,CAED,OAAO,eAAe1K,EAAY,CAC9B,OAAO7U,EAAM,KAAK,SAAS65B,EAAuBhlB,CAAU,CAAC,CAChE,CAED,OAAO,IAAItX,EAAQmqB,EAAS,CACxB,OAAO,UAAU1nB,EAAO0oB,EAAInrB,EAAQmqB,CAAO,CAC9C,CAED,eAAepwB,EAAY,CACvB4yB,EAAK,cAAc,KAAM5yB,CAAU,CACtC,CAED,gBAAiB,CACb+xB,EAAgB,IAAI,CACvB,CACD,UAAW,CACP,KAAM,CAAE,EAAA9vH,CAAC,EAAK,KAAK,SAAQ,EAC3B,GAAI+rH,EAAG,MACH,MAAO,CAACA,EAAG,MAAM/rH,CAAC,EACtB,MAAM,IAAI,MAAM,6BAA6B,CAChD,CAID,OAAOwjD,EAAO,CACVm9E,EAAen9E,CAAK,EACpB,KAAM,CAAE,GAAIotE,EAAI,GAAIC,EAAI,GAAIC,CAAI,EAAG,KAC7B,CAAE,GAAIb,EAAI,GAAIC,EAAI,GAAIC,CAAI,EAAG3sE,EAC7Bu9E,EAAKhV,EAAG,IAAIA,EAAG,IAAI6E,EAAIT,CAAE,EAAGpE,EAAG,IAAIkE,EAAIa,CAAE,CAAC,EAC1CkQ,GAAKjV,EAAG,IAAIA,EAAG,IAAI8E,EAAIV,CAAE,EAAGpE,EAAG,IAAImE,EAAIY,CAAE,CAAC,EAChD,OAAOiQ,GAAMC,EAChB,CAID,QAAS,CACL,OAAO,IAAIv6B,EAAM,KAAK,GAAIslB,EAAG,IAAI,KAAK,EAAE,EAAG,KAAK,EAAE,CACrD,CAKD,QAAS,CACL,KAAM,CAAE,EAAAhsH,EAAG,EAAAhB,CAAG,EAAG8vH,EACXr3B,EAAKu0B,EAAG,IAAIhtH,EAAG,GAAG,EAClB,CAAE,GAAI6xH,EAAI,GAAIC,EAAI,GAAIC,CAAI,EAAG,KACnC,IAAIO,EAAKtF,EAAG,KAAMuF,EAAKvF,EAAG,KAAMyF,GAAKzF,EAAG,KACpCr8B,GAAKq8B,EAAG,IAAI6E,EAAIA,CAAE,EAClBjhC,GAAKo8B,EAAG,IAAI8E,EAAIA,CAAE,EAClBjhC,GAAKm8B,EAAG,IAAI+E,EAAIA,CAAE,EAClBjhC,EAAKk8B,EAAG,IAAI6E,EAAIC,CAAE,EACtB,OAAAhhC,EAAKk8B,EAAG,IAAIl8B,EAAIA,CAAE,EAClB2hC,GAAKzF,EAAG,IAAI6E,EAAIE,CAAE,EAClBU,GAAKzF,EAAG,IAAIyF,GAAIA,EAAE,EAClBH,EAAKtF,EAAG,IAAIhsH,EAAGyxH,EAAE,EACjBF,EAAKvF,EAAG,IAAIv0B,EAAI5H,EAAE,EAClB0hC,EAAKvF,EAAG,IAAIsF,EAAIC,CAAE,EAClBD,EAAKtF,EAAG,IAAIp8B,GAAI2hC,CAAE,EAClBA,EAAKvF,EAAG,IAAIp8B,GAAI2hC,CAAE,EAClBA,EAAKvF,EAAG,IAAIsF,EAAIC,CAAE,EAClBD,EAAKtF,EAAG,IAAIl8B,EAAIwhC,CAAE,EAClBG,GAAKzF,EAAG,IAAIv0B,EAAIg6B,EAAE,EAClB5hC,GAAKm8B,EAAG,IAAIhsH,EAAG6vF,EAAE,EACjBC,EAAKk8B,EAAG,IAAIr8B,GAAIE,EAAE,EAClBC,EAAKk8B,EAAG,IAAIhsH,EAAG8vF,CAAE,EACjBA,EAAKk8B,EAAG,IAAIl8B,EAAI2hC,EAAE,EAClBA,GAAKzF,EAAG,IAAIr8B,GAAIA,EAAE,EAClBA,GAAKq8B,EAAG,IAAIyF,GAAI9hC,EAAE,EAClBA,GAAKq8B,EAAG,IAAIr8B,GAAIE,EAAE,EAClBF,GAAKq8B,EAAG,IAAIr8B,GAAIG,CAAE,EAClByhC,EAAKvF,EAAG,IAAIuF,EAAI5hC,EAAE,EAClBE,GAAKm8B,EAAG,IAAI8E,EAAIC,CAAE,EAClBlhC,GAAKm8B,EAAG,IAAIn8B,GAAIA,EAAE,EAClBF,GAAKq8B,EAAG,IAAIn8B,GAAIC,CAAE,EAClBwhC,EAAKtF,EAAG,IAAIsF,EAAI3hC,EAAE,EAClB8hC,GAAKzF,EAAG,IAAIn8B,GAAID,EAAE,EAClB6hC,GAAKzF,EAAG,IAAIyF,GAAIA,EAAE,EAClBA,GAAKzF,EAAG,IAAIyF,GAAIA,EAAE,EACX,IAAI/qB,EAAM4qB,EAAIC,EAAIE,EAAE,CAC9B,CAKD,IAAIhuE,EAAO,CACPm9E,EAAen9E,CAAK,EACpB,KAAM,CAAE,GAAIotE,EAAI,GAAIC,EAAI,GAAIC,CAAI,EAAG,KAC7B,CAAE,GAAIb,EAAI,GAAIC,EAAI,GAAIC,CAAI,EAAG3sE,EACnC,IAAI6tE,EAAKtF,EAAG,KAAMuF,GAAKvF,EAAG,KAAMyF,GAAKzF,EAAG,KACxC,MAAMhsH,GAAI8uH,EAAM,EACVr3B,GAAKu0B,EAAG,IAAI8C,EAAM,EAAG,GAAG,EAC9B,IAAIn/B,EAAKq8B,EAAG,IAAI6E,EAAIX,CAAE,EAClBtgC,EAAKo8B,EAAG,IAAI8E,EAAIX,CAAE,EAClBtgC,EAAKm8B,EAAG,IAAI+E,EAAIX,CAAE,EAClBtgC,EAAKk8B,EAAG,IAAI6E,EAAIC,CAAE,EAClBoQ,GAAKlV,EAAG,IAAIkE,EAAIC,CAAE,EACtBrgC,EAAKk8B,EAAG,IAAIl8B,EAAIoxC,EAAE,EAClBA,GAAKlV,EAAG,IAAIr8B,EAAIC,CAAE,EAClBE,EAAKk8B,EAAG,IAAIl8B,EAAIoxC,EAAE,EAClBA,GAAKlV,EAAG,IAAI6E,EAAIE,CAAE,EAClB,IAAIoQ,GAAKnV,EAAG,IAAIkE,EAAIE,CAAE,EACtB,OAAA8Q,GAAKlV,EAAG,IAAIkV,GAAIC,EAAE,EAClBA,GAAKnV,EAAG,IAAIr8B,EAAIE,CAAE,EAClBqxC,GAAKlV,EAAG,IAAIkV,GAAIC,EAAE,EAClBA,GAAKnV,EAAG,IAAI8E,EAAIC,CAAE,EAClBO,EAAKtF,EAAG,IAAImE,EAAIC,CAAE,EAClB+Q,GAAKnV,EAAG,IAAImV,GAAI7P,CAAE,EAClBA,EAAKtF,EAAG,IAAIp8B,EAAIC,CAAE,EAClBsxC,GAAKnV,EAAG,IAAImV,GAAI7P,CAAE,EAClBG,GAAKzF,EAAG,IAAIhsH,GAAGkhI,EAAE,EACjB5P,EAAKtF,EAAG,IAAIv0B,GAAI5H,CAAE,EAClB4hC,GAAKzF,EAAG,IAAIsF,EAAIG,EAAE,EAClBH,EAAKtF,EAAG,IAAIp8B,EAAI6hC,EAAE,EAClBA,GAAKzF,EAAG,IAAIp8B,EAAI6hC,EAAE,EAClBF,GAAKvF,EAAG,IAAIsF,EAAIG,EAAE,EAClB7hC,EAAKo8B,EAAG,IAAIr8B,EAAIA,CAAE,EAClBC,EAAKo8B,EAAG,IAAIp8B,EAAID,CAAE,EAClBE,EAAKm8B,EAAG,IAAIhsH,GAAG6vF,CAAE,EACjBqxC,GAAKlV,EAAG,IAAIv0B,GAAIypC,EAAE,EAClBtxC,EAAKo8B,EAAG,IAAIp8B,EAAIC,CAAE,EAClBA,EAAKm8B,EAAG,IAAIr8B,EAAIE,CAAE,EAClBA,EAAKm8B,EAAG,IAAIhsH,GAAG6vF,CAAE,EACjBqxC,GAAKlV,EAAG,IAAIkV,GAAIrxC,CAAE,EAClBF,EAAKq8B,EAAG,IAAIp8B,EAAIsxC,EAAE,EAClB3P,GAAKvF,EAAG,IAAIuF,GAAI5hC,CAAE,EAClBA,EAAKq8B,EAAG,IAAImV,GAAID,EAAE,EAClB5P,EAAKtF,EAAG,IAAIl8B,EAAIwhC,CAAE,EAClBA,EAAKtF,EAAG,IAAIsF,EAAI3hC,CAAE,EAClBA,EAAKq8B,EAAG,IAAIl8B,EAAIF,CAAE,EAClB6hC,GAAKzF,EAAG,IAAImV,GAAI1P,EAAE,EAClBA,GAAKzF,EAAG,IAAIyF,GAAI9hC,CAAE,EACX,IAAI+W,EAAM4qB,EAAIC,GAAIE,EAAE,CAC9B,CACD,SAAShuE,EAAO,CACZ,OAAO,KAAK,IAAIA,EAAM,OAAQ,EACjC,CACD,KAAM,CACF,OAAO,KAAK,OAAOijD,EAAM,IAAI,CAChC,CACD,KAAK1lG,EAAG,CACJ,OAAO4vH,EAAK,WAAW,KAAM5vH,EAAG0lG,EAAM,UAAU,CACnD,CAMD,eAAe06B,EAAI,CACf1R,SAAY,SAAU0R,EAAI,IAAKtS,EAAM,CAAC,EACtC,MAAMlrB,EAAI8C,EAAM,KAChB,GAAI06B,IAAO,IACP,OAAOx9B,EACX,GAAIw9B,IAAO3W,MACP,OAAO,KACX,KAAM,CAAE,KAAAuU,CAAM,EAAGlQ,EACjB,GAAI,CAACkQ,EACD,OAAOpO,EAAK,aAAa,KAAMwQ,CAAE,EAErC,GAAI,CAAE,MAAAC,EAAO,GAAAtzC,EAAI,MAAAuzC,EAAO,GAAAtzC,CAAE,EAAKgxC,EAAK,YAAYoC,CAAE,EAC9CG,EAAM39B,EACN49B,GAAM59B,EACNzmG,GAAI,KACR,KAAO4wF,EAAK,KAAOC,EAAK,KAChBD,EAAK08B,QACL8W,EAAMA,EAAI,IAAIpkI,EAAC,GACf6wF,EAAKy8B,QACL+W,GAAMA,GAAI,IAAIrkI,EAAC,GACnBA,GAAIA,GAAE,SACN4wF,IAAO08B,MACPz8B,IAAOy8B,MAEX,OAAI4W,IACAE,EAAMA,EAAI,UACVD,IACAE,GAAMA,GAAI,UACdA,GAAM,IAAI96B,EAAMslB,EAAG,IAAIwV,GAAI,GAAIxC,EAAK,IAAI,EAAGwC,GAAI,GAAIA,GAAI,EAAE,EAClDD,EAAI,IAAIC,EAAG,CACrB,CAUD,SAAShT,EAAQ,CACb,KAAM,CAAE,KAAAwQ,EAAM,EAAG1kC,CAAC,EAAKw0B,EACvBY,SAAY,SAAUlB,EAAQ/D,MAAKnwB,CAAC,EACpC,IAAI8L,EAAOq7B,EACX,GAAIzC,EAAM,CACN,KAAM,CAAE,MAAAqC,EAAO,GAAAtzC,EAAI,MAAAuzC,EAAO,GAAAtzC,EAAE,EAAKgxC,EAAK,YAAYxQ,CAAM,EACxD,GAAI,CAAE,EAAG+S,GAAK,EAAGG,EAAG,EAAK,KAAK,KAAK3zC,CAAE,EACjC,CAAE,EAAGyzC,GAAK,EAAGG,CAAG,EAAK,KAAK,KAAK3zC,EAAE,EACrCuzC,GAAM3Q,EAAK,gBAAgByQ,EAAOE,EAAG,EACrCC,GAAM5Q,EAAK,gBAAgB0Q,EAAOE,EAAG,EACrCA,GAAM,IAAI96B,EAAMslB,EAAG,IAAIwV,GAAI,GAAIxC,EAAK,IAAI,EAAGwC,GAAI,GAAIA,GAAI,EAAE,EACzDp7B,EAAQm7B,GAAI,IAAIC,EAAG,EACnBC,EAAOC,GAAI,IAAIC,CAAG,CACrB,KACI,CACD,KAAM,CAAE,EAAA3wH,EAAG,EAAA4mB,CAAC,EAAK,KAAK,KAAK42F,CAAM,EACjCpoB,EAAQp1F,EACRywH,EAAO7pG,CACV,CAED,OAAO8uE,EAAM,WAAW,CAACN,EAAOq7B,CAAI,CAAC,EAAE,CAAC,CAC3C,CAOD,qBAAqBzwB,EAAGhxG,EAAGhB,EAAG,CAC1B,MAAMixF,EAAIyW,EAAM,KACV1iG,EAAM,CAACiiH,EAAGjmH,IACVA,IAAM,KAAOA,IAAMyqH,OAAO,CAACxE,EAAE,OAAOh2B,CAAC,EAAIg2B,EAAE,eAAejmH,CAAC,EAAIimH,EAAE,SAASjmH,CAAC,EAC3EsnH,EAAMtjH,EAAI,KAAMhE,CAAC,EAAE,IAAIgE,EAAIgtG,EAAGhyG,CAAC,CAAC,EACtC,OAAOsoH,EAAI,MAAQ,OAAYA,CAClC,CAID,SAASuI,EAAI,CACT,OAAOD,EAAa,KAAMC,CAAE,CAC/B,CACD,eAAgB,CACZ,KAAM,CAAE,EAAGX,EAAU,cAAA0S,CAAa,EAAK9S,EACvC,GAAII,IAAazE,MACb,MAAO,GACX,GAAImX,EACA,OAAOA,EAAcl7B,EAAO,IAAI,EACpC,MAAM,IAAI,MAAM,8DAA8D,CACjF,CACD,eAAgB,CACZ,KAAM,CAAE,EAAGwoB,EAAU,cAAA2S,CAAa,EAAK/S,EACvC,OAAII,IAAazE,MACN,KACPoX,EACOA,EAAcn7B,EAAO,IAAI,EAC7B,KAAK,eAAeooB,EAAM,CAAC,CACrC,CACD,WAAWgT,EAAe,GAAM,CAC5B,aAAM,eAAgBA,CAAY,EAClC,KAAK,eAAc,EACZ3a,EAAQzgB,EAAO,KAAMo7B,CAAY,CAC3C,CACD,MAAMA,EAAe,GAAM,CACvB,aAAM,eAAgBA,CAAY,EAC3B3P,WAAc,KAAK,WAAW2P,CAAY,CAAC,CACrD,CACJ,CACDp7B,EAAM,KAAO,IAAIA,EAAMooB,EAAM,GAAIA,EAAM,GAAI9C,EAAG,GAAG,EACjDtlB,EAAM,KAAO,IAAIA,EAAMslB,EAAG,KAAMA,EAAG,IAAKA,EAAG,IAAI,EAC/C,MAAM+V,EAAQjT,EAAM,WACd8B,EAAO,KAAKlqB,EAAOooB,EAAM,KAAO,KAAK,KAAKiT,EAAQ,CAAC,EAAIA,CAAK,EAElE,MAAO,CACH,MAAAjT,EACA,gBAAiBpoB,EACjB,uBAAA65B,EACA,oBAAAJ,EACA,mBAAAE,CACR,CACA,CACA,SAAS,aAAa37B,EAAO,CACzB,MAAM/pD,EAAO,cAAc+pD,CAAK,EAChCkqB,sBAAkBj0E,EAAM,CACpB,KAAM,OACN,KAAM,WACN,YAAa,UACrB,EAAO,CACC,SAAU,WACV,cAAe,WACf,KAAM,SACd,CAAK,EACM,OAAO,OAAO,CAAE,KAAM,GAAM,GAAGA,CAAI,CAAE,CAChD,CAQO,SAAS,YAAYk0E,EAAU,CAClC,MAAMC,EAAQ,aAAaD,CAAQ,EAC7B,CAAE,GAAA7C,EAAI,EAAG+C,CAAW,EAAKD,EACzBkT,EAAgBhW,EAAG,MAAQ,EAC3BiW,EAAkB,EAAIjW,EAAG,MAAQ,EACvC,SAASoG,EAAKpyH,EAAG,CACb,OAAO2gI,IAAQ3gI,EAAG+uH,CAAW,CAChC,CACD,SAASmT,EAAKliI,EAAG,CACb,OAAOmiI,OAAWniI,EAAG+uH,CAAW,CACnC,CACD,KAAM,CAAE,gBAAiBroB,EAAO,uBAAA65B,EAAwB,oBAAAJ,EAAqB,mBAAAE,CAAqB,EAAG,kBAAkB,CACnH,GAAGvR,EACH,QAAQkR,EAAI55B,EAAO07B,GAAc,CAC7B,MAAM9hI,GAAIomG,EAAM,WACV7rG,GAAIyxH,EAAG,QAAQhsH,GAAE,CAAC,EAClBoiI,GAAMzP,YAEZ,OADA,MAAM,eAAgBmP,EAAY,EAC9BA,GACOM,GAAI,WAAW,KAAK,CAACh8B,EAAM,SAAU,EAAG,EAAO,CAAI,CAAC,EAAG7rG,EAAC,EAGxD6nI,GAAI,WAAW,KAAK,CAAC,CAAI,CAAC,EAAG7nI,GAAGyxH,EAAG,QAAQhsH,GAAE,CAAC,CAAC,CAE7D,EACD,UAAU2D,EAAO,CACb,MAAM9I,EAAM8I,EAAM,OACZm+B,GAAOn+B,EAAM,CAAC,EACdouF,GAAOpuF,EAAM,SAAS,CAAC,EAE7B,GAAI9I,IAAQmnI,IAAkBlgG,KAAS,GAAQA,KAAS,GAAO,CAC3D,MAAMvnC,GAAImmI,gBAAmB3uC,EAAI,EACjC,GAAI,CAACuuC,QAAW/lI,GAAGkwH,MAAKuB,EAAG,KAAK,EAC5B,MAAM,IAAI,MAAM,uBAAuB,EAC3C,MAAMtmB,GAAKy6B,EAAoB5lI,EAAC,EAChC,IAAI0F,GACJ,GAAI,CACAA,GAAI+rH,EAAG,KAAKtmB,EAAE,CACjB,OACM28B,GAAW,CACd,MAAMtoG,GAASsoG,cAAqB,MAAQ,KAAOA,GAAU,QAAU,GACvE,MAAM,IAAI,MAAM,wBAA0BtoG,EAAM,CACnD,CACD,MAAM82E,IAAU5wG,GAAIwqH,SAASA,MAG7B,OADmB3oF,GAAO,KAAO,IACf+uE,KACd5wG,GAAI+rH,EAAG,IAAI/rH,EAAC,GACT,CAAE,EAAA1F,GAAG,EAAA0F,GACf,SACQpF,IAAQonI,GAAmBngG,KAAS,EAAM,CAC/C,MAAMvnC,GAAIyxH,EAAG,UAAUj6B,GAAK,SAAS,EAAGi6B,EAAG,KAAK,CAAC,EAC3C/rH,GAAI+rH,EAAG,UAAUj6B,GAAK,SAASi6B,EAAG,MAAO,EAAIA,EAAG,KAAK,CAAC,EAC5D,MAAO,CAAE,EAAAzxH,GAAG,EAAA0F,GACf,KAEG,OAAM,IAAI,MAAM,mBAAmBpF,CAAG,0BAA0BmnI,CAAa,wBAAwBC,CAAe,qBAAqB,CAEhJ,CACT,CAAK,EACKK,EAAiBtmI,GAAQm2H,WAAcoQ,gBAAmBvmI,EAAK8yH,EAAM,WAAW,CAAC,EACvF,SAAS0T,EAAsBxwH,EAAQ,CACnC,MAAMywH,EAAO1T,GAAetE,MAC5B,OAAOz4G,EAASywH,CACnB,CACD,SAASC,EAAWtlI,EAAG,CACnB,OAAOolI,EAAsBplI,CAAC,EAAIg1H,EAAK,CAACh1H,CAAC,EAAIA,CAChD,CAED,MAAMulI,EAAS,CAAC3jI,EAAGN,EAAMib,KAAO+mH,gBAAmB1hI,EAAE,MAAMN,EAAMib,EAAE,CAAC,EAIpE,MAAM81F,CAAU,CACZ,YAAYhhG,EAAGrR,GAAGwlI,GAAU,CACxB,KAAK,EAAIn0H,EACT,KAAK,EAAIrR,GACT,KAAK,SAAWwlI,GAChB,KAAK,eAAc,CACtB,CAED,OAAO,YAAYlrG,EAAK,CACpB,MAAMjuB,GAAIqlH,EAAM,YAChB,OAAAp3F,EAAMkzF,cAAY,mBAAoBlzF,EAAKjuB,GAAI,CAAC,EACzC,IAAIgmG,EAAUkzB,EAAOjrG,EAAK,EAAGjuB,EAAC,EAAGk5H,EAAOjrG,EAAKjuB,GAAG,EAAIA,EAAC,CAAC,CAChE,CAGD,OAAO,QAAQiuB,EAAK,CAChB,KAAM,CAAE,EAAAjpB,GAAG,EAAArR,EAAC,EAAK,IAAI,MAAMwtH,cAAY,MAAOlzF,CAAG,CAAC,EAClD,OAAO,IAAI+3E,EAAUhhG,GAAGrR,EAAC,CAC5B,CACD,gBAAiB,CACbsyH,SAAY,IAAK,KAAK,EAAGjF,MAAKsE,CAAW,EACzCW,SAAY,IAAK,KAAK,EAAGjF,MAAKsE,CAAW,CAC5C,CACD,eAAe6T,EAAU,CACrB,OAAO,IAAInzB,EAAU,KAAK,EAAG,KAAK,EAAGmzB,CAAQ,CAChD,CACD,iBAAiBC,EAAS,CACtB,KAAM,CAAE,EAAAp0H,GAAG,EAAArR,GAAG,SAAU0lI,EAAG,EAAK,KAC1B3pH,GAAI4pH,EAAcnY,cAAY,UAAWiY,CAAO,CAAC,EACvD,GAAIC,IAAO,MAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,CAAC,EAAE,SAASA,EAAG,EACzC,MAAM,IAAI,MAAM,qBAAqB,EACzC,MAAME,GAAOF,KAAQ,GAAKA,KAAQ,EAAIr0H,GAAIqgH,EAAM,EAAIrgH,GACpD,GAAIu0H,IAAQhX,EAAG,MACX,MAAM,IAAI,MAAM,4BAA4B,EAChD,MAAM74F,GAAU2vG,GAAM,EAAkB,KAAP,KAC3BxxB,EAAI5K,EAAM,QAAQvzE,GAASmvG,EAAcU,EAAI,CAAC,EAC9CC,GAAKf,EAAKc,EAAI,EACd9/B,GAAKkvB,EAAK,CAACj5G,GAAI8pH,EAAE,EACjB9/B,GAAKivB,EAAKh1H,GAAI6lI,EAAE,EAChBjyB,GAAItK,EAAM,KAAK,qBAAqB4K,EAAGpO,GAAIC,EAAE,EACnD,GAAI,CAAC6N,GACD,MAAM,IAAI,MAAM,mBAAmB,EACvC,OAAAA,GAAE,eAAc,EACTA,EACV,CAED,UAAW,CACP,OAAOwxB,EAAsB,KAAK,CAAC,CACtC,CACD,YAAa,CACT,OAAO,KAAK,SAAQ,EAAK,IAAI/yB,EAAU,KAAK,EAAG2iB,EAAK,CAAC,KAAK,CAAC,EAAG,KAAK,QAAQ,EAAI,IAClF,CAED,eAAgB,CACZ,OAAO8Q,WAAc,KAAK,SAAQ,CAAE,CACvC,CACD,UAAW,CACP,OAAO,IAAI,WAAW,CAAE,EAAG,KAAK,EAAG,EAAG,KAAK,CAAC,CAAE,CACjD,CAED,mBAAoB,CAChB,OAAOA,WAAc,KAAK,aAAY,CAAE,CAC3C,CACD,cAAe,CACX,OAAOZ,EAAc,KAAK,CAAC,EAAIA,EAAc,KAAK,CAAC,CACtD,CACJ,CACD,MAAMp2C,EAAQ,CACV,kBAAkBqvB,EAAY,CAC1B,GAAI,CACA,OAAAglB,EAAuBhlB,CAAU,EAC1B,EACV,MACa,CACV,MAAO,EACV,CACJ,EACD,uBAAwBglB,EAKxB,iBAAkB,IAAM,CACpB,MAAMliI,EAAS8kI,iBAAqBrU,EAAM,CAAC,EAC3C,OAAOsU,eAAmBtU,EAAM,YAAYzwH,CAAM,EAAGywH,EAAM,CAAC,CAC/D,EASD,WAAW9wB,EAAa,EAAGoI,EAAQM,EAAM,KAAM,CAC3C,OAAAN,EAAM,eAAepI,CAAU,EAC/BoI,EAAM,SAAS,OAAO,CAAC,CAAC,EACjBA,CACV,CACT,EAOI,SAASosB,EAAajX,EAAYumB,EAAe,GAAM,CACnD,OAAOp7B,EAAM,eAAe6U,CAAU,EAAE,WAAWumB,CAAY,CAClE,CAID,SAASuB,EAAUx6H,EAAM,CACrB,MAAM/M,EAAM2kI,UAAW53H,CAAI,EACrB5H,GAAM,OAAO4H,GAAS,SACtBhO,IAAOiB,GAAOmF,KAAQ4H,EAAK,OACjC,OAAI/M,EACOjB,KAAQmnI,GAAiBnnI,KAAQonI,EACxChhI,GACOpG,KAAQ,EAAImnI,GAAiBnnI,KAAQ,EAAIonI,EAChDp5H,aAAgB69F,CAGvB,CAWD,SAAS48B,EAAgBC,EAAUC,EAAS1B,GAAe,GAAM,CAC7D,GAAIuB,EAAUE,CAAQ,EAClB,MAAM,IAAI,MAAM,+BAA+B,EACnD,GAAI,CAACF,EAAUG,CAAO,EAClB,MAAM,IAAI,MAAM,+BAA+B,EAEnD,OADU98B,EAAM,QAAQ88B,CAAO,EACtB,SAASjD,EAAuBgD,CAAQ,CAAC,EAAE,WAAWzB,EAAY,CAC9E,CAKD,MAAMnpB,EAAWmW,EAAM,UACnB,SAAUnrH,EAAO,CAGb,MAAM3H,EAAM0kI,gBAAmB/8H,CAAK,EAC9Bo5F,GAAQp5F,EAAM,OAAS,EAAImrH,EAAM,WACvC,OAAO/xB,GAAQ,EAAI/gG,GAAO,OAAO+gG,EAAK,EAAI/gG,CACtD,EACU+mI,EAAgBjU,EAAM,eACxB,SAAUnrH,EAAO,CACb,OAAOyuH,EAAKzZ,EAASh1G,CAAK,CAAC,CACvC,EAEU8/H,EAAaC,QAAW5U,EAAM,UAAU,EAI9C,SAAS6U,GAAW3nI,EAAK,CACrB0zH,gBAAY,WAAWZ,EAAM,UAAU,GAAI9yH,EAAK,IAAKynI,CAAU,EAExDlB,gBAAmBvmI,EAAK8yH,EAAM,WAAW,CACnD,CAMD,SAAS8U,GAAQf,EAAStnB,EAAY5gE,GAAOkpF,GAAgB,CACzD,GAAI,CAAC,YAAa,WAAW,EAAE,KAAM5xG,IAAMA,MAAK0oB,EAAI,EAChD,MAAM,IAAI,MAAM,qCAAqC,EACzD,KAAM,CAAE,KAAA4K,GAAM,YAAA4jB,EAAa,EAAG2lD,EAC9B,GAAI,CAAE,KAAAgV,GAAM,QAAA9U,GAAS,aAAc+U,EAAG,EAAKppF,GACvCmpF,IAAQ,OACRA,GAAO,IACXjB,EAAUjY,cAAY,UAAWiY,CAAO,EACxC,mBAAmBloF,EAAI,EACnBq0E,KACA6T,EAAUjY,cAAY,oBAAqBrlE,GAAKs9E,CAAO,CAAC,GAI5D,MAAMmB,EAAQjB,EAAcF,CAAO,EAC7B1lI,GAAIojI,EAAuBhlB,CAAU,EACrC0oB,GAAW,CAACN,GAAWxmI,EAAC,EAAGwmI,GAAWK,CAAK,CAAC,EAElD,GAAID,IAAO,MAAQA,KAAQ,GAAO,CAE9B,MAAMlnI,GAAIknI,KAAQ,GAAO56D,GAAY6iD,EAAG,KAAK,EAAI+X,GACjDE,GAAS,KAAKrZ,cAAY,eAAgB/tH,EAAC,CAAC,CAC/C,CACD,MAAMsyG,GAAOwjB,YAAe,GAAGsR,EAAQ,EACjCnnI,GAAIknI,EAEV,SAASE,GAAMC,GAAQ,CAEnB,MAAMlyG,GAAI0mF,EAASwrB,EAAM,EACzB,GAAI,CAAC9D,EAAmBpuG,EAAC,EACrB,OACJ,MAAM4+D,GAAKqxC,EAAKjwG,EAAC,EACX6iE,GAAI4R,EAAM,KAAK,SAASz0E,EAAC,EAAE,WAC3BxjB,GAAI2jH,EAAKt9B,GAAE,CAAC,EAClB,GAAIrmF,KAAM,IACN,OAIJ,MAAMrR,GAAIg1H,EAAKvhC,GAAKuhC,EAAKt1H,GAAI2R,GAAItR,EAAC,CAAC,EACnC,GAAIC,KAAM,IACN,OACJ,IAAIwlI,IAAY9tC,GAAE,IAAMrmF,GAAI,EAAI,GAAK,OAAOqmF,GAAE,EAAI21B,KAAG,EACjD2Z,GAAQhnI,GACZ,OAAI0mI,IAAQtB,EAAsBplI,EAAC,IAC/BgnI,GAAQ1B,EAAWtlI,EAAC,EACpBwlI,IAAY,GAET,IAAInzB,EAAUhhG,GAAG21H,GAAOxB,EAAQ,CAC1C,CACD,MAAO,CAAE,KAAAzzB,GAAM,MAAA+0B,GAClB,CACD,MAAML,GAAiB,CAAE,KAAM/U,EAAM,KAAM,QAAS,IAC9CuV,GAAiB,CAAE,KAAMvV,EAAM,KAAM,QAAS,IAcpD,SAASzW,EAAKwqB,EAAS7Q,EAASr3E,GAAOkpF,GAAgB,CACnD,KAAM,CAAE,KAAA10B,GAAM,MAAA+0B,EAAO,EAAGN,GAAQf,EAAS7Q,EAASr3E,EAAI,EAChDvjB,GAAI03F,EAEV,OADawV,eAAkBltG,GAAE,KAAK,UAAWA,GAAE,YAAaA,GAAE,IAAI,EAC1D+3E,GAAM+0B,EAAK,CAC1B,CAEDx9B,EAAM,KAAK,eAAe,CAAC,EAe3B,SAAS4S,EAAO3rD,EAAWk1E,EAAShoB,GAAWlgE,GAAO0pF,GAAgB,CAClE,MAAME,GAAK52E,EAGX,GAFAk1E,EAAUjY,cAAY,UAAWiY,CAAO,EACxChoB,GAAY+P,cAAY,YAAa/P,EAAS,EAC1C,WAAYlgE,GACZ,MAAM,IAAI,MAAM,oCAAoC,EACxD,mBAAmBA,EAAI,EACvB,KAAM,CAAE,KAAAmpF,GAAM,QAAA9U,EAAS,EAAGr0E,GAC1B,IAAI6pF,GACAve,EACJ,GAAI,CACA,GAAI,OAAOse,IAAO,UAAY9D,UAAW8D,EAAE,EAGvC,GAAI,CACAC,GAAO/0B,EAAU,QAAQ80B,EAAE,CAC9B,OACME,GAAU,CACb,GAAI,EAAEA,cAAoB,IAAI,KAC1B,MAAMA,GACVD,GAAO/0B,EAAU,YAAY80B,EAAE,CAClC,SAEI,OAAOA,IAAO,UAAY,OAAOA,GAAG,GAAM,UAAY,OAAOA,GAAG,GAAM,SAAU,CACrF,KAAM,CAAE,EAAA91H,GAAG,EAAArR,EAAG,EAAGmnI,GACjBC,GAAO,IAAI/0B,EAAUhhG,GAAGrR,EAAC,CAC5B,KAEG,OAAM,IAAI,MAAM,OAAO,EAE3B6oH,EAAIvf,EAAM,QAAQmU,EAAS,CAC9B,OACMvjE,GAAO,CACV,GAAIA,GAAM,UAAY,QAClB,MAAM,IAAI,MAAM,gEAAgE,EACpF,MAAO,EACV,CACD,GAAIwsF,IAAQU,GAAK,SAAU,EACvB,MAAO,GACPxV,KACA6T,EAAU/T,EAAM,KAAK+T,CAAO,GAChC,KAAM,CAAE,EAAAp0H,GAAG,EAAArR,EAAG,EAAGonI,GACXrrH,GAAI4pH,EAAcF,CAAO,EACzB51G,GAAKi1G,EAAK9kI,EAAC,EACX8lG,GAAKkvB,EAAKj5G,GAAI8T,EAAE,EAChBk2E,GAAKivB,EAAK3jH,GAAIwe,EAAE,EAChBqkF,GAAI5K,EAAM,KAAK,qBAAqBuf,EAAG/iB,GAAIC,EAAE,GAAG,WACtD,OAAKmO,GAEK8gB,EAAK9gB,GAAE,CAAC,IACL7iG,GAFF,EAGd,CACD,MAAO,CACH,MAAAqgH,EACA,aAAA0D,EACA,gBAAA8Q,EACA,KAAAjrB,EACA,OAAAiB,EACA,gBAAiB5S,EACjB,UAAA+I,EACA,MAAAvjB,CACR,CACA,CCt/BA,sEAKO,SAAS,QAAQ3mC,EAAM,CAC1B,MAAO,CACH,KAAAA,EACA,KAAM,CAAC/9C,KAAQkrH,IAAS,KAAKntE,EAAM/9C,EAAK6/G,cAAY,GAAGqL,CAAI,CAAC,EACpE,YAAQvpD,aACR,CACA,CACO,SAAS,YAAY0lD,EAAU6V,EAAS,CAC3C,MAAMniF,EAAUgD,GAAS,YAAY,CAAE,GAAGspE,EAAU,GAAG,QAAQtpE,CAAI,CAAC,CAAE,EACtE,OAAO,OAAO,OAAO,CAAE,GAAGhD,EAAOmiF,CAAO,EAAG,OAAAniF,CAAM,CAAE,CACvD,CCfA,sEAQA,MAAM,WAAa,OAAO,oEAAoE,EACxF,WAAa,OAAO,oEAAoE,EACxF,IAAM,OAAO,CAAC,EACd,IAAM,OAAO,CAAC,EACd,WAAa,CAACviD,EAAGhB,KAAOgB,EAAIhB,EAAI,KAAOA,EAK7C,SAAS,QAAQiB,EAAG,CAChB,MAAMgmH,EAAI,WAEJwF,EAAM,OAAO,CAAC,EAAGkZ,EAAM,OAAO,CAAC,EAAGC,EAAO,OAAO,EAAE,EAAGC,EAAO,OAAO,EAAE,EAErEC,EAAO,OAAO,EAAE,EAAGC,EAAO,OAAO,EAAE,EAAGC,EAAO,OAAO,EAAE,EACtDr+E,EAAM1mD,EAAIA,EAAIA,EAAKgmH,EACnBxuB,EAAM9wC,EAAKA,EAAK1mD,EAAKgmH,EACrB/tB,EAAM,KAAKT,EAAIg0B,EAAKxF,CAAC,EAAIxuB,EAAMwuB,EAC/BttB,EAAM,KAAKT,EAAIuzB,EAAKxF,CAAC,EAAIxuB,EAAMwuB,EAC/Bgf,EAAO,KAAKtsC,EAAI,IAAKstB,CAAC,EAAIt/D,EAAMs/D,EAChCif,EAAO,KAAKD,EAAKL,EAAM3e,CAAC,EAAIgf,EAAOhf,EACnCkf,EAAO,KAAKD,EAAKL,EAAM5e,CAAC,EAAIif,EAAOjf,EACnCmf,EAAO,KAAKD,EAAKJ,EAAM9e,CAAC,EAAIkf,EAAOlf,EACnCof,EAAQ,KAAKD,EAAKJ,EAAM/e,CAAC,EAAImf,EAAOnf,EACpCqf,EAAQ,KAAKD,EAAMN,EAAM9e,CAAC,EAAIkf,EAAOlf,EACrCsf,EAAQ,KAAKD,EAAM7Z,EAAKxF,CAAC,EAAIxuB,EAAMwuB,EACnCr2B,EAAM,KAAK21C,EAAMT,EAAM7e,CAAC,EAAIif,EAAOjf,EACnCp2B,EAAM,KAAKD,EAAI+0C,EAAK1e,CAAC,EAAIt/D,EAAMs/D,EAC/B/xG,EAAO,KAAK27E,EAAI,IAAKo2B,CAAC,EAC5B,GAAI,CAAC,GAAG,IAAI,GAAG,IAAI/xG,CAAI,EAAGjU,CAAC,EACvB,MAAM,IAAI,MAAM,yBAAyB,EAC7C,OAAOiU,CACX,CACA,MAAM,GAAK,MAAM,WAAY,OAAW,OAAW,CAAE,KAAM,OAAO,CAAE,EAIvD,UAAY,YAAY,CACjC,EAAG,OAAO,CAAC,EACX,EAAG,OAAO,CAAC,EACX,GACA,EAAG,WAEH,GAAI,OAAO,+EAA+E,EAC1F,GAAI,OAAO,+EAA+E,EAC1F,EAAG,OAAO,CAAC,EACX,KAAM,GAON,KAAM,CACF,KAAM,OAAO,oEAAoE,EACjF,YAAc+d,GAAM,CAChB,MAAMjxB,EAAI,WACJm1C,EAAK,OAAO,oCAAoC,EAChDuQ,EAAK,CAAC,IAAM,OAAO,oCAAoC,EACvDtQ,EAAK,OAAO,qCAAqC,EACjDuQ,EAAKxQ,EACLqvF,EAAY,OAAO,qCAAqC,EACxDhjH,EAAK,WAAWmkC,EAAK10B,EAAGjxB,CAAC,EACzB0hB,EAAK,WAAW,CAACgkC,EAAKz0B,EAAGjxB,CAAC,EAChC,IAAI+sF,EAAK,IAAI97D,EAAIzP,EAAK2zB,EAAKzzB,EAAK0zB,EAAIp1C,CAAC,EACjCgtF,EAAK,IAAI,CAACxrE,EAAKkkC,EAAKhkC,EAAKikC,EAAI3lD,CAAC,EAClC,MAAMqgI,EAAQtzC,EAAKy3C,EACblE,EAAQtzC,EAAKw3C,EAKnB,GAJInE,IACAtzC,EAAK/sF,EAAI+sF,GACTuzC,IACAtzC,EAAKhtF,EAAIgtF,GACTD,EAAKy3C,GAAax3C,EAAKw3C,EACvB,MAAM,IAAI,MAAM,uCAAyCvzG,CAAC,EAE9D,MAAO,CAAE,MAAAovG,EAAO,GAAAtzC,EAAI,MAAAuzC,EAAO,GAAAtzC,CAAE,CAChC,CACJ,CACL,EAAG1gC,QAAM,EAGG,OAAO,CAAC,EAiBN,UAAU,gBCpGjB,SAAS6oE,eAAc,CAC1B,OAAOsP,UAAK,MAAM,kBACtB,CAIO,SAASlP,cAAY/uH,EAAK5B,EAAK,CAClC,MAAMoL,EAAIs8C,SAAO,OAAO1nD,aAAe,WAAaA,EAAMA,EAAI,SAAQ,CAAE,EACxE,GAAIwC,YAAU4I,CAAC,EACX,OAAOA,EAAE,KAAK,CAAC,CAAE,OAAAwxC,CAAQ,IAAKijF,UAAK,KAAKjjF,EAAQh7C,CAAG,EAAE,cAAa,CAAE,EAC/D,MAAM8I,GAAO,CACd,MAAM,IAAI0pH,YAAU,OAAO1pH,CAAG,EAAG,mBAAmB,CAChE,CAAS,EAEL,GAAI,CACA,OAAOm1H,UAAK,KAAKz0H,EAAE,OAAQxJ,CAAG,EAAE,eACnC,OACM8I,EAAK,CACR,MAAM,IAAI0pH,YAAU,OAAO1pH,CAAG,EAAG,mBAAmB,CACvD,CACL,CAIO,SAASkmH,gBAAchvH,EAAK4pG,EAAKxrG,EAAK,CACzC,MAAMoL,EAAIs8C,SAAO,OAAO1nD,aAAe,WAAaA,EAAMA,EAAI,SAAQ,CAAE,EACxE,GAAIwC,YAAU4I,CAAC,EACX,OAAOA,EAAE,KAAK,CAAC,CAAE,OAAAwxC,CAAQ,IAAKijF,UAAK,OAAOr0B,EAAK5uD,EAAQh7C,CAAG,CAAC,EACtD,MAAM8I,GAAO,CACd,MAAM,IAAI0pH,YAAU,OAAO1pH,CAAG,EAAG,mBAAmB,CAChE,CAAS,EAEL,GAAI,CACA,OAAOm1H,UAAK,OAAOr0B,EAAKpgG,EAAE,OAAQxJ,CAAG,CACxC,OACM8I,EAAK,CACR,MAAM,IAAI0pH,YAAU,OAAO1pH,CAAG,EAAG,mBAAmB,CACvD,CACL,CACO,SAASo1H,oBAAkBl+H,EAAK,CAEnC,OADci+H,UAAK,gBAAgB,QAAQj+H,CAAG,EAAE,WAAW,EAAI,CAEnE,CAKO,SAASm+H,qBAAmBn+H,EAAK,CACpC,GAAI,CACAi+H,UAAK,aAAaj+H,EAAK,EAAI,CAC9B,OACM8I,EAAK,CACR,MAAM,IAAI0pH,YAAU,OAAO1pH,CAAG,EAAG,yBAAyB,CAC7D,CACL,CACO,SAASs1H,oBAAkBp+H,EAAK,CACnC,GAAI,CACAi+H,UAAK,gBAAgB,QAAQj+H,CAAG,CACnC,OACM8I,EAAK,CACR,MAAM,IAAI0pH,YAAU,OAAO1pH,CAAG,EAAG,wBAAwB,CAC5D,CACL,CACO,SAASu1H,mBAAiBtqB,EAAY,CACzC,GAAI,CACA,OAAOkqB,UAAK,aAAalqB,EAAY,EAAI,CAC5C,OACMjrG,EAAK,CACR,MAAM,IAAI0pH,YAAU,OAAO1pH,CAAG,EAAG,yBAAyB,CAC7D,CACL,CCpEO,8BAAyB,CAC5B,KACA,YAAY9I,EAAK,CACbs+H,oBAAyBt+H,CAAG,EAC5B,KAAK,KAAOA,CACf,CACD,OAAOmM,EAAMy9F,EAAK,CACd,OAAOooB,gBAAqB,KAAK,KAAMpoB,EAAKz9F,CAAI,CACnD,CACD,SAAU,CACN,OAAOoyH,oBAAyB,KAAK,IAAI,CAC5C,CACD,IAAI,OAAQ,CACR,OAAOC,YAAuB,OAAO,CACjC,KAAMC,UAAqB,UAC3B,KAAM,KAAK,QAAS,CAChC,CAAS,EAAE,SAAQ,CACd,CACD,OAAOz+H,EAAK,CACR,OAAOmyH,SAAiB,KAAK,MAAOnyH,EAAI,KAAK,CAChD,CACD,MAAM,MAAO,CACT,MAAMwJ,EAAIs8C,SAAO,OAAO,KAAK,KAAK,EAClC,IAAI3pD,EACJ,OAAIyE,YAAU4I,CAAC,EACV,CAAE,MAAArN,GAAU,MAAMqN,EAGnBrN,EAAQqN,EAAE,MAEPrN,CACV,CACL,EACO,2BAA0B,CAC7B,KACA,WACA,YAAY6D,EAAKqzG,EAAW,CACxB,KAAK,KAAOrzG,EACZ,KAAK,WAAaqzG,GAAaqrB,mBAAwB1+H,CAAG,EAC1D2+H,qBAA0B,KAAK,IAAI,EACnCL,oBAAyB,KAAK,UAAU,CAC3C,CACD,KAAKpvG,EAAS,CACV,OAAOmjG,cAAmB,KAAK,KAAMnjG,CAAO,CAC/C,CACD,IAAI,QAAS,CACT,OAAO,IAAI0vG,qBAAmB,KAAK,UAAU,CAChD,CACD,SAAU,CACN,OAAO,KAAK,IACf,CACD,IAAI,OAAQ,CACR,OAAOC,aAAwB,OAAO,CAClC,KAAMJ,UAAqB,UAC3B,KAAM,KAAK,QAAS,CAChC,CAAS,EAAE,SAAQ,CACd,CACD,OAAOz+H,EAAK,CACR,OAAOmyH,SAAiB,KAAK,MAAOnyH,EAAI,KAAK,CAChD,CACD,MAAO,CACH,MAAMwJ,EAAIs8C,SAAO,OAAO,KAAK,KAAK,EAClC,OAAIllD,YAAU4I,CAAC,EACJA,EAAE,KAAK,CAAC,CAAE,MAAArN,CAAO,IAAKA,CAAK,EAE/BqN,EAAE,KACZ,CAQD,MAAM,IAAK,CACP,MAAMu0C,EAAO,MAAM,KAAK,OAAO,KAAI,EACnC,OAAOmhE,WAAmBnhE,EAAM,WAAW,CAC9C,CAID,MAAM,OAAOwlC,EAAU9nC,EAAS,aAAc,CAC1C,GAAIA,IAAW,aACX,OAAOk0E,WAAS,KAAK,MAAOpsC,CAAQ,EAGpC,MAAM,IAAIivC,YAAU,kBAAkB/2E,CAAM,qBAAsB,2BAA2B,CAEpG,CACL,EACO,SAASqjF,+BAA6B3iI,EAAO,CAChD,OAAO,IAAI4iI,sBAAoB5iI,CAAK,CACxC,CACO,SAAS6iI,8BAA4B7iI,EAAO,CAC/C,OAAO,IAAIyiI,qBAAmBziI,CAAK,CACvC,CACO,eAAe22H,mBAAkB,CACpC,MAAMJ,EAAkBK,gBACxB,OAAO,IAAIgM,sBAAoBrM,CAAe,CAClD,wVChFauM,gBAAgB,CACzB,IAAKC,MACL,QAASC,UACT,UAAWC,WACf,EACA,SAASC,iBAAe7gI,EAAM,CAC1B,MAAM8gI,EAAY,OAAO,KAAKL,eAAa,EAAE,KAAK,KAAK,EACvD,OAAO,IAAIzM,YAAU,mCAAmCh0H,CAAI,aAAa8gI,CAAS,GAAI,0BAA0B,CACpH,CACA,SAASC,YAAU/gI,EAAM,CAErB,GADAA,EAAOA,EAAK,cACRA,IAAS,OAASA,IAAS,WAAaA,IAAS,YACjD,OAAOygI,gBAAczgI,CAAI,EAE7B,MAAM6gI,iBAAe7gI,CAAI,CAC7B,CAOO,eAAes0H,kBAAgBt0H,EAAMw6C,EAAM,CAC9C,OAAOumF,YAAU/gI,CAAI,EAAE,gBAAwB,IAAI,CACvD,CAwCO,eAAem3H,sBAAoB7+H,EAAK,CAC3C,MAAMoqD,EAAUs+E,aAAmB,OAAO1oI,CAAG,EACvCqV,EAAO+0C,EAAQ,MAAQ,IAAI,WACjC,OAAQA,EAAQ,KAAI,CAChB,KAAKu+E,UAAgB,IACjB,OAAOR,gBAAc,IAAI,uBAAuB9yH,CAAI,EACxD,KAAKszH,UAAgB,QACjB,OAAOR,gBAAc,QAAQ,2BAA2B9yH,CAAI,EAChE,KAAKszH,UAAgB,UACjB,OAAOR,gBAAc,UAAU,6BAA6B9yH,CAAI,EACpE,QACI,MAAMkzH,iBAAen+E,EAAQ,MAAQ,KAAK,CACjD,CACL,CCrGO,SAAS,QAAQ1oD,EAAGhB,EAAG,CAC1B,QAASjE,EAAI,EAAGA,EAAIiF,EAAE,WAAYjF,IAAK,CACnC,GAAIiF,EAAEjF,CAAC,EAAIiE,EAAEjE,CAAC,EACV,MAAO,GAEX,GAAIiF,EAAEjF,CAAC,EAAIiE,EAAEjE,CAAC,EACV,MAAO,EAEd,CACD,OAAIiF,EAAE,WAAahB,EAAE,WACV,EAEPgB,EAAE,WAAahB,EAAE,WACV,GAEJ,CACX,CCDA,MAAMkoI,YAAYC,gBAA0B,UAAU,6BAChD,gBAAkBA,gBAA0B,UAAU,4BAEtD,gBAAkB,MAAOx5E,EAAWktD,EAAWlnG,IAAS,CAC5D,GAAI,CAACg6C,EACH,MAAM,IAAI,MAAM,oBAAoB,EAEtC,GAAI,CAACktD,EACH,MAAM,IAAI,MAAM,+BAA+B,EAEjD,GAAI,CAAClnG,EACH,MAAM,IAAI,MAAM,gCAAgC,EAG5CA,aAAgB,aACpBA,EAAO,OAAOA,GAAS,SAAWkzG,aAAqBlzG,CAAI,EAAI,IAAI,WAAWA,CAAI,GAGpF,MAAMk+G,EAAU,CAACrqH,EAAK5B,EAAKwrG,IAAQ5pG,EAAI,OAAO5B,EAAKwrG,CAAG,EAEtD,IAAIvuG,EAAM,GACV,GAAI,CACF,MAAMukI,EAAS,gBAAgBvgB,aAAqBhM,EAAW,QAAQ,CAAC,EACxEh4G,EAAM,MAAMgvH,EAAQuV,EAAQzzH,EAAMkzG,aAAqBl5D,EAAW,QAAQ,CAAC,CAC5E,MAAW,CAEX,CAED,OAAO,QAAQ,QAAQ9qD,CAAG,CAC5B,EAYM,YAAc,MAAO2E,EAAKmM,IAAS,CACvC,GAAI,CAACnM,EACH,MAAM,IAAI,MAAM,sBAAsB,EAGxC,GAAI,CAACmM,EACH,MAAM,IAAI,MAAM,gCAAgC,EAGlD,OAAMA,aAAgB,aACpBA,EAAO,OAAOA,GAAS,SAAWkzG,aAAqBlzG,CAAI,EAAI,IAAI,WAAWA,CAAI,GAG7E+yG,WAAmB,MAAMl/G,EAAI,KAAKmM,CAAI,EAAG,QAAQ,CAC1D,EAEM,qBAAuB,WAAW,CAAE,KAAM,GAAI,CAAE,EAWhD,cAAgB,MAAOg6C,EAAWktD,EAAWlnG,IAAS,CAC1D,MAAM0zH,EAAgB,MAAM,qBACtB70H,EAAS,MAAM60H,EAAc,IAAI15E,CAAS,EAEhD,IAAI9qD,EAAM,GAEV,GAAK2P,EAME,CACL,MAAMi0C,EAAU,CAACj0C,EAAQmB,IACTA,aAAgB,WAAa2zH,QAAkB90H,EAAQmB,CAAI,IAAM,EAAInB,EAAO,aAAemB,EAAK,SAAU,EAG1H9Q,EAAM2P,EAAO,YAAcqoG,GAAap0D,EAAQj0C,EAAO,KAAMmB,CAAI,CAClE,KAZY,CACX,MAAM4zH,EAAW,MAAM,gBAAgB55E,EAAWktD,EAAWlnG,CAAI,EACjE9Q,EAAM0kI,EACFA,GACF,MAAMF,EAAc,IAAI15E,EAAW,CAAE,UAAAktD,EAAW,KAAAlnG,CAAI,CAAE,CAE5D,CAOE,OAAO9Q,CACT,EAEM,YAAc,aAYd,SAAW,MAAO,CAAE,QAAAsrD,EAAS,KAAA3nC,CAAI,EAAK,KAAO,CAKjD2nC,EAAUA,GAAW,MAAM,gBAAgB,MAAM,WAAW,CAAE,KAAM,GAAM,GAAG,MAAM,aAAa,CAAE,KAAM3nC,GAAQ,WAAa,EAAC,EAQ9H,MAAMrW,EAAQ,SAAY,CACxB,MAAMg+C,EAAQ,MAAO,CACtB,EAQK7hD,EAAQ,SAAY,CACxB,MAAM6hD,EAAQ,MAAO,CACtB,EAWKq5E,EAAS,MAAOt2H,GAAO,CAC3B,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,0BAA0B,EAG5C,IAAIs2H,EAAS,GACb,GAAI,CACF,MAAMC,EAAY,MAAMt5E,EAAQ,IAAI,WAAaj9C,CAAE,EACnDs2H,EAAoCC,GAAc,IACnD,MAAW,CAEV,QAAQ,MAAM,0CAA0C,CACzD,CAED,OAAOD,CACR,EAUKE,EAAS,MAAOx2H,EAAI1J,IAAQ,CAChC,MAAM2mD,EAAQ,IAAI,WAAaj9C,EAAI1J,EAAI,UAAU,CAClD,EAmFD,MAAO,CACL,MAAA8E,EACA,MAAA6D,EACA,OAAAq3H,EACA,OAAAE,EACA,UA9EgB,MAAOx2H,GAAO,CAC9B,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,2BAA2B,EAI7C,MAAMozG,EAAO,MAAMqjB,kBAA4B,WAAW,EACpDt3H,EAAO,MAAMu3H,sBAAgCtjB,EAAK,KAAK,EAGvD98G,EAAM,CACV,UAHa6I,EAAK,OAAO,QAAS,EAIlC,WAAYA,EAAK,QAAS,CAC3B,EAED,aAAMq3H,EAAOx2H,EAAI1J,CAAG,EAEb6I,CACR,EA6DC,OAlDa,MAAOa,GAAO,CAC3B,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,wBAAwB,EAG1C,IAAIu2H,EACJ,GAAI,CACFA,EAAY,MAAMt5E,EAAQ,IAAI,WAAaj9C,CAAE,CAC9C,MAAW,CAEX,CAED,GAAKu2H,EAIL,OAAOP,YAAUO,CAAS,CAC3B,EAkCC,UAnBgB,CAACp3H,EAAMwC,EAAU,KAAO,CACxC,MAAM4/C,EAAU,CAAC,MAAO,QAAQ,EAC1BxP,EAASpwC,EAAQ,QAAU,MACjC,GAAI4/C,EAAQ,QAAQxP,CAAM,IAAM,GAC9B,MAAM,IAAI,MAAM,0CAA0C,EAG5D,MAAMmkF,EAAS/2H,EAAK,OAAO,QAAS,EAEpC,OAAO4yC,IAAW,SAAWmkF,EAAS1gB,WAAmB0gB,EAAQ,QAAQ,CAC1E,CAUA,CACH,EC9QM9iF,QAAQ,QACRgB,SAASgI,SACTC,qBAAqBzM,YAWrB,SAAW,MAAO,CAAE,GAAA5vC,EAAI,UAAA2pG,EAAW,WAAAgtB,EAAY,KAAA7hI,EAAM,KAAAqyG,EAAM,OAAAiB,CAAQ,EAAG,KAAO,CAKjF,GAAI,CAACpoG,EAAI,MAAM,IAAI,MAAM,yBAAyB,EAClD,GAAI,CAAC2pG,EAAW,MAAM,IAAI,MAAM,oBAAoB,EACpD,GAAI,CAACgtB,EAAY,MAAM,IAAI,MAAM,+BAA+B,EAChE,GAAI,CAACA,EAAW,GAAI,MAAM,IAAI,MAAM,6BAA6B,EACjE,GAAI,CAACA,EAAW,UAAW,MAAM,IAAI,MAAM,uCAAuC,EAClF,GAAI,CAAC7hI,EAAM,MAAM,IAAI,MAAM,2BAA2B,EAEtD6hI,EAAa,OAAO,OAAO,GAAIA,CAAU,EAEzC,MAAMr6E,EAAW,CACf,GAAAt8C,EACA,UAAA2pG,EACA,WAAAgtB,EACA,KAAA7hI,EACA,KAAAqyG,EACA,OAAAiB,CACD,EAEK,CAAE,KAAA/zD,EAAM,MAAA5hD,CAAO,EAAG,MAAM,gBAAgB6pD,CAAQ,EACtD,OAAAA,EAAS,KAAOjI,EAChBiI,EAAS,MAAQ7pD,EAEV6pD,CACT,EAEM,gBAAkB,MAAOA,GAAa,CAC1C,KAAM,CAAE,GAAAt8C,EAAI,UAAA2pG,EAAW,WAAAgtB,EAAY,KAAA7hI,CAAM,EAAGwnD,EACtCnwD,EAAQ,CAAE,GAAA6T,EAAI,UAAA2pG,EAAW,WAAAgtB,EAAY,KAAA7hI,CAAM,EAC3C,CAAE,IAAAorC,EAAK,MAAAztC,GAAU,MAAM+pD,SAAa,CAAE,MAAArwD,EAAK,MAAEinD,QAAOgB,gBAAQ,EAElE,MAAO,CAAE,KADIlU,EAAI,SAASmc,oBAAkB,EAC7B,MAAO,WAAW,KAAK5pD,CAAK,CAAG,CAChD,EAEM,eAAiB,MAAOA,GAAU,CACtC,KAAM,CAAE,MAAAtG,CAAK,EAAK,MAAMywD,UAAa,CAAE,MAAAnqD,EAAO2gD,cAAOgB,gBAAQ,EAC7D,OAAO,SAAS,CAAE,GAAGjoD,EAAO,CAC9B,EASM,WAAcmwD,GACX,GAAQA,EAAS,IACtBA,EAAS,MACTA,EAAS,OACTA,EAAS,WACTA,EAAS,YACTA,EAAS,WAAW,IACpBA,EAAS,WAAW,WACpBA,EAAS,MAWPK,UAAU,CAAC7tD,EAAGhB,IACXgB,EAAE,KAAOhB,EAAE,IAChBgB,EAAE,OAAShB,EAAE,MACbgB,EAAE,OAAShB,EAAE,MACbgB,EAAE,YAAchB,EAAE,WAClBgB,EAAE,WAAW,KAAOhB,EAAE,WAAW,IACjCgB,EAAE,WAAW,YAAchB,EAAE,WAAW,UCpFtCgH,OAAO,YASP,eAAiB,MAAMwnD,GAAY,CACvC,KAAM,CAAE,GAAAt8C,EAAI,UAAA2pG,EAAW,WAAAgtB,CAAY,EAAGr6E,EACtC,OAAO,cAAcq6E,EAAW,UAAW32H,EAAI2pG,EAAYgtB,EAAW,EAAE,CAC1E,EAQM,0BAA4B,CAAC,CAAE,SAAAC,CAAQ,IAAO,SAAY,CAQ9D,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,yDAAyD,EAyC3E,MAAO,CACT,KAAI9hI,OACA,MAjCY,MAAO,CAAE,GAAAkL,CAAE,EAAK,KAAO,CACnC,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,gBAAgB,EAGlC,MAAM1J,EAAM,MAAMsgI,EAAS,OAAO52H,CAAE,GAAK,MAAM42H,EAAS,UAAU52H,CAAE,EACpE,OAAOw1G,WAAmBl/G,EAAI,OAAO,QAAO,EAAI,QAAQ,CACzD,EA2BC,aAhBmB,MAAOmM,EAAM,CAAE,GAAAzC,CAAE,EAAK,KAAO,CAChD,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,gBAAgB,EAGlC,MAAM1J,EAAM,MAAMsgI,EAAS,OAAO52H,CAAE,EACpC,GAAI,CAAC1J,EACH,MAAM,IAAI,MAAM,oBAAoB0J,CAAE,aAAa,EAGrD,OAAO,YAAY1J,EAAKmM,CAAI,CAC7B,CAMA,CACH,EAEA,0BAA0B,eAAiB,eAC3C,0BAA0B,KAAO3N,OCrFjC,MAAM,kBAAoB,CAAE,EAEtB,oBAAuBA,GACpB,OAAO,KAAK,iBAAiB,EAAE,SAASA,CAAI,EAG/C,oBAAuBA,GAAS,CACpC,GAAI,CAAC,oBAAoBA,CAAI,EAC3B,MAAM,IAAI,MAAM,0BAA0BA,CAAI,oBAAoB,EAGpE,OAAO,kBAAkBA,CAAI,CAC/B,EAWM,oBAAuB+hI,GAAqB,CAChD,GAAI,CAACA,EAAiB,MACnB,OAAOA,EAAiB,MAAS,SAClC,MAAM,IAAI,MAAM,qDAAwD,EAG1E,GAAI,CAACA,EAAiB,eACpB,MAAM,IAAI,MAAM,kEAAqE,EAGvF,kBAAkBA,EAAiB,IAAI,EAAIA,CAC7C,EAEA,oBAAoB,yBAAyB,ECxB7C,MAAM,wBAA0B/rF,UAAS,YAAa,YAAY,EAmB5D,WAAa,MAAO,CAAE,SAAA8rF,EAAU,KAAAthH,EAAM,QAAA2nC,EAAS,KAAA1S,CAAM,EAAG,KAAO,CAMnEqsF,EAAWA,GAAY,MAAM,SAAS,CAAE,KAAMthH,GAAQ,wBAAyB,EAE1E2nC,IACHA,EAAU1S,EACN,MAAM,gBAAgB,MAAM,WAAW,CAAE,KAAM,GAAM,GAAG,MAAM,iBAAiB,CAAE,KAAAA,EAAM,IAAK,EAAM,EAAC,EACnG,MAAMsS,gBAAe,GAG3B,MAAMi6E,EAA0B,MAAM,WAAW,CAAE,KAAM,GAAI,CAAE,EASzDC,EAAc,MAAO1iF,GAAS,CAClC,MAAM5hD,EAAQ,MAAMwqD,EAAQ,IAAI5I,CAAI,EACpC,GAAI5hD,EACF,OAAO,eAAeA,CAAK,CAE9B,EAUKukI,EAAiB,MAAOr1H,EAAU,KAAO,CAC7CA,EAAQ,SAAWi1H,EACnB,MAAMK,EAA0B,oBAAoB,WAAW,EAGzDJ,EAAmB,MAFIl1H,EAAQ,UAAYs1H,EAAwB,CAAE,SAAAL,CAAQ,CAAE,GAEhC,EAErD,GAAI,CAAC,oBAAoBC,EAAiB,IAAI,EAC5C,MAAM,IAAI,MAAM,mGAAmG,EAGrH,MAAM72H,EAAK,MAAM62H,EAAiB,MAAMl1H,CAAO,EACzC0oG,EAAa,MAAMusB,EAAS,OAAO52H,CAAE,GAAK,MAAM42H,EAAS,UAAU52H,CAAE,EACrE2pG,EAAYitB,EAAS,UAAUvsB,CAAU,EACzC6sB,EAAc,MAAM,YAAY7sB,EAAYrqG,CAAE,EAC9Cm3H,EAA0B,MAAMN,EAAiB,aAAaltB,EAAYutB,EAAav1H,CAAO,EAM9F26C,EAAW,MAAM,SAAS,CAAE,GAAAt8C,EAAI,UAAA2pG,EAAW,WAL9B,CACjB,GAAIutB,EACJ,UAAWC,CACZ,EAE4D,KAAMN,EAAiB,KAAM,KAAA1vB,EAAM,OAAAiB,CAAM,CAAE,EAExG,aAAMnrD,EAAQ,IAAIX,EAAS,KAAMA,EAAS,KAAK,EAExCA,CACR,EAQK86E,EAAiB,MAAO96E,GAAa,CACzC,GAAI,CAAC,WAAWA,CAAQ,EACtB,MAAO,GAGT,KAAM,CAAE,GAAAt8C,EAAI,UAAA2pG,EAAW,WAAAgtB,CAAY,EAAGr6E,EAGtC,GAAI,CADwB,MAAM8rD,EAAOuuB,EAAW,GAAIhtB,EAAW3pG,CAAE,EAEnE,MAAO,GAGT,MAAMq3H,EAAmB,MAAMP,EAAwB,IAAIH,EAAW,EAAE,EACxE,GAAIU,EACF,OAAO16E,UAAQL,EAAU+6E,CAAgB,EAK3C,MAAMC,EAAmB,MAFR,oBAAoBh7E,EAAS,IAAI,EAEV,eAAeA,CAAQ,EAC/D,OAAIg7E,GACF,MAAMR,EAAwB,IAAIH,EAAW,GAAIr6E,CAAQ,EAGpDg7E,CACR,EAcKnwB,EAAO,MAAO7qD,EAAU75C,IAAS,CACrC,MAAM80H,EAAa,MAAMX,EAAS,OAAOt6E,EAAS,EAAE,EAEpD,GAAI,CAACi7E,EACH,MAAM,IAAI,MAAM,6CAA6C,EAG/D,OAAO,MAAM,YAAYA,EAAY90H,CAAI,CAC1C,EAaK2lG,EAAS,MAAO3rD,EAAWktD,EAAWlnG,IACnC,MAAM,cAAcg6C,EAAWktD,EAAWlnG,CAAI,EAGvD,MAAO,CACL,eAAAu0H,EACA,eAAAI,EACA,YAAAL,EACA,KAAA5vB,EACA,OAAAiB,EACA,SAAAwuB,CACD,CACH,ECjKM,eAAkBhsF,GAAY,CAGlC,GAFAA,EAAUA,EAAQ,SAAU,EAExB,CAACA,EAAQ,WAAW,UAAU,GAAK,CAACA,EAAQ,WAAW,WAAW,EACpE,MAAO,GAGTA,EAAUA,EAAQ,WAAW,YAAa,EAAE,EAC5CA,EAAUA,EAAQ,WAAW,cAAe,EAAE,EAC9CA,EAAUA,EAAQ,WAAW,IAAK,EAAE,EACpCA,EAAUA,EAAQ,WAAW,KAAM,EAAE,EAErC,IAAI1K,EACJ,GAAI,CACFA,EAAMiS,MAAI,MAAMvH,EAASgF,WAAS,CACnC,MAAW,CACV,MAAO,EACR,CAED,OAAO1P,IAAQ,MACjB,EA6BM,eAAkB0K,GAAY,CAClC,GAAIA,GAAWA,EAAQ,WAAa,WAAaA,EAAQ,KACvD,OAAOA,EAGT,MAAM4sF,EAAW,UAEXnjF,EAAOzJ,EAAQ,QAAQ,YAAa,EAAE,EAAE,QAAQ,cAAe,EAAE,EAWvE,MAAO,CACL,SAAA4sF,EACA,KAAAnjF,EACA,QAAAzJ,EACA,SARe,IACR,UAAU,IAAK4sF,EAAUnjF,CAAI,CAQrC,CACH,ECnFMjB,QAAQ,QACRgB,SAASgI,SACTC,qBAAqBzM,YAErB,cAAgB,MAAO,CAAE,KAAArF,EAAM,QAAA0S,CAAO,EAAK,MAO/CA,EAAUA,GAAW,MAAM,gBACzB,MAAM,WAAW,CAAE,KAAM,IAAM,EAC/B,MAAM,iBAAiB,CAAE,KAAA1S,EAAM,IAAK,EAAI,CAAE,CAC3C,EAqCM,CACL,IApCU,MAAOK,GAAY,CAC7B,MAAMn4C,EAAQ,MAAMwqD,EAAQ,IAAIrS,CAAO,EACjC,CAAE,MAAAz+C,CAAK,EAAK,MAAMywD,UAAa,CAAE,MAAAnqD,EAAO2gD,cAAOgB,gBAAQ,EAC7D,OAAOjoD,CACR,EAiCC,OA/Ba,MAAO,CAAE,KAAAnC,EAAM,KAAA8K,EAAM,iBAAA2iI,EAAkB,KAAAluE,KAAW,CAC/D,GAAI,CAACv/D,EAAM,MAAM,IAAI,MAAM,kBAAkB,EAC7C,GAAI,CAAC8K,EAAM,MAAM,IAAI,MAAM,kBAAkB,EAC7C,GAAI,CAAC2iI,EAAkB,MAAM,IAAI,MAAM,8BAA8B,EAErE,MAAMr2E,EAAW,OAAO,OACtB,CACE,KAAAp3D,EACA,KAAA8K,EACA,iBAAA2iI,CACD,EAEDluE,IAAS,OAAY,CAAE,KAAAA,CAAI,EAAK,CAAE,CACnC,EAEK,CAAE,IAAArpB,EAAK,MAAAztC,CAAK,EAAK,MAAM+pD,SAAa,CAAE,MAAO4E,EAAQ,MAAEhO,QAAOgB,gBAAQ,EACtEC,EAAOnU,EAAI,SAASmc,oBAAkB,EAC5C,aAAMY,EAAQ,IAAI5I,EAAM5hD,CAAK,EAEtB,CACL,KAAA4hD,EACA,SAAA+M,CACD,CACF,EASC,MAPY,SAAY,CACxB,MAAMnE,EAAQ,MAAO,CACtB,CAMA,GC7DG,SAAW,MAAO9vD,EAAS,KAAO,CACtC,MAAMuqI,EAAa,iEACnB,IAAIl9H,EAAS,GACT81C,EAAU,EACd,KAAOA,EAAUnjD,GACfqN,GAAUk9H,EAAW,OAAO,KAAK,MAAM,KAAK,OAAQ,EAAGA,EAAW,MAAM,CAAC,EACzEpnF,GAAW,EAEb,OAAO91C,CACT,ECEM44C,QAAQ,QACRgB,SAASgI,SACTC,qBAAqBzM,YAErB,kBAAoB,MAAO,CAAE,QAAAqN,EAAS,KAAAnoD,EAAM,OAAAs6B,CAAM,IAAO,CAC7D,MAAMgyB,EAAW,CACf,KAAAtsD,EACA,GAAGs6B,CACJ,EACK,CAAE,IAAA8Q,EAAK,MAAAztC,CAAK,EAAK,MAAM+pD,SAAa,CAAE,MAAO4E,EAAQ,MAAEhO,QAAOgB,gBAAQ,EACtEC,EAAOnU,EAAI,SAASmc,oBAAkB,EAC5C,aAAMY,EAAQ,IAAI5I,EAAM5hD,CAAK,EACtB4hD,CACT,EAEMv/C,OAAO,OA4BP,qBAAuB,CAAC,CAAE,MAAA0xH,EAAO,QAAAvpE,CAAS,EAAG,KAAO,MAAO,CAAE,QAAA06E,EAAS,WAAAj7E,EAAY,QAAA9R,KAAc,CAOpG,GANAqS,EAAUA,GAAW,MAAM,gBACzB,MAAM,WAAW,CAAE,KAAM,IAAM,EAC/B,MAAM,iBAAiB,CAAE,KAAM06E,EAAQ,KAAM,IAAK,GAAM,CACzD,EACDnR,EAAQA,GAAS,CAACmR,EAAQ,SAAS,EAAE,EAEjC/sF,EAAS,CACX,MAAMgtF,EAAgB,MAAM36E,EAAQ,IAAIrS,EAAQ,WAAW,SAAU,EAAE,CAAC,EAClE,CAAE,MAAAz+C,CAAO,EAAG,MAAMywD,UAAa,CAAE,MAAOg7E,EAAa,MAAExkF,QAAOgB,gBAAQ,EAC5EoyE,EAAQr6H,EAAM,KAClB,MACIy+C,EAAU,MAAM,kBAAkB,CAAE,QAAAqS,EAAO,KAAEnoD,OAAM,OAAQ,CAAE,MAAA0xH,CAAK,EAAI,EACtE57E,EAAUE,UAAS,IAAKh2C,OAAM81C,CAAO,EAwBvC,MAAO,CACT,KAAI91C,OACA,QAAA81C,EACA,MAAA47E,EACA,UAlBgB,MAAO5nH,GAAU,CACjC,MAAMi5H,EAAiB,MAAMn7E,EAAW,YAAY99C,EAAM,QAAQ,EAClE,GAAI,CAACi5H,EACH,MAAO,GAET,KAAM,CAAE,GAAA73H,CAAE,EAAK63H,EAEf,OAAIrR,EAAM,SAASxmH,CAAE,GAAKwmH,EAAM,SAAS,GAAG,EAEnC9pE,EAAW,eAAem7E,CAAc,EAE1C,EACR,CAOA,CACH,EAEA,qBAAqB,KAAO/iI,OC5F5B,MAAMA,OAAO,UA2BP,wBAA0B,CAAC,CAAE,MAAA0xH,CAAK,EAAK,CAAE,IAAK,MAAO,CAAE,QAAAmR,EAAS,WAAAj7E,EAAY,QAAA9R,EAAS,KAAA5gD,KAAW,CACpG4gD,EAAUA,GAAW5gD,GAAQ,MAAM,SAAS,EAAE,EAC9Cw8H,EAAQA,GAAS,CAACmR,EAAQ,SAAS,EAAE,EAGrC,MAAM30E,EAAK,MAAM20E,EAAQ,KAAK/sF,EAAS,CAAE,KAAM,WAAY,iBAAkB,qBAAqB,CAAE,MAAA47E,CAAK,CAAE,CAAC,CAAE,EAC9G57E,EAAUoY,EAAG,QAUb,MAAM80E,EAAY,MAAOl5H,GAAU,CACjC,MAAMi5H,EAAiB,MAAMn7E,EAAW,YAAY99C,EAAM,QAAQ,EAClE,GAAI,CAACi5H,EACH,MAAO,GAGT,KAAM,CAAE,GAAA73H,CAAE,EAAK63H,EAGf,OADuB,MAAME,EAAc,QAAS/3H,CAAE,GAAK,MAAM+3H,EAAc,QAAS/3H,CAAE,EAEjF08C,EAAW,eAAem7E,CAAc,EAG1C,EACR,EAWKG,EAAe,SAAY,CAC/B,MAAMC,EAAgB,CAAE,EACxB,gBAAiBr5H,KAASokD,EAAG,WAC3Bi1E,EAAcr5H,EAAM,GAAG,EAAIA,EAAM,MAGnC,MAAMs5H,EAASvsI,GAAM,CACnB,MAAM2K,EAAM3K,EAAE,CAAC,EACfssI,EAAc3hI,CAAG,EAAI,IAAI,IAAI,CAAC,GAAI2hI,EAAc3hI,CAAG,GAAK,CAAE,EAAG,GAAG3K,EAAE,CAAC,CAAC,CAAC,CACtE,EAID,cAAO,QAAQ,CACb,GAAGssI,EAGE,MAAO,IAAI,IAAI,CAAC,GAAIA,EAAc,OAAS,CAAE,EAAG,GAAGj1E,EAAG,OAAO,KAAK,CAAC,CAC9E,CAAK,EAAE,QAAQk1E,CAAK,EAETD,CACR,EASKv9H,EAAM,MAAOy9H,IACK,MAAMH,EAAc,GACrBG,CAAU,GAAK,IAAI,IAAI,EAAE,EAQ1Cl5H,EAAQ,SAAY,CACxB,MAAM+jD,EAAG,MAAO,CACjB,EAOK6G,EAAO,SAAY,CACvB,MAAM7G,EAAG,KAAM,CAChB,EAWK+0E,EAAgB,MAAOI,EAAY7hI,IAAQ,CAE/C,MAAM0nD,EAAS,IAAI,IAAI,MAAMtjD,EAAIy9H,CAAU,CAAC,EAC5C,OAAOn6E,EAAO,IAAI1nD,CAAG,GAAK0nD,EAAO,IAAI,GAAG,CACzC,EAkCD,MAAO,CACT,KAAIlpD,OACA,QAAA81C,EACA,MAAA47E,EACA,UAAAsR,EACA,aAAAE,EACA,IAAAt9H,EACA,MA/BY,MAAOy9H,EAAY7hI,IAAQ,CAEvC,MAAM0hI,EAAe,IAAI,IAAI,CAAC,GAAI,MAAMh1E,EAAG,IAAIm1E,CAAU,GAAK,GAAS7hI,CAAI,CAAC,EAC5E,MAAM0sD,EAAG,IAAIm1E,EAAY,MAAM,KAAKH,EAAa,OAAM,CAAE,CAAC,CAC3D,EA4BC,OAlBa,MAAOG,EAAY7hI,IAAQ,CACxC,MAAM0hI,EAAe,IAAI,IAAI,MAAMh1E,EAAG,IAAIm1E,CAAU,GAAK,EAAE,EAC3DH,EAAa,OAAO1hI,CAAG,EACnB0hI,EAAa,KAAO,EACtB,MAAMh1E,EAAG,IAAIm1E,EAAY,MAAM,KAAKH,EAAa,OAAM,CAAE,CAAC,EAE1D,MAAMh1E,EAAG,IAAIm1E,CAAU,CAE1B,EAWC,MAAAl5H,EACA,KAAA4qD,EACA,OAAQ7G,EAAG,MACZ,CACH,EAEA,wBAAwB,KAAOluD,OCpL/B,MAAM,kBAAoB,CAAE,EAQtB,oBAAuBA,GAAS,CACpC,GAAI,CAAC,kBAAkBA,CAAI,EACzB,MAAM,IAAI,MAAM,0BAA0BA,CAAI,oBAAoB,EAEpE,OAAO,kBAAkBA,CAAI,CAC/B,EAUM,oBAAuB2iI,GAAqB,CAChD,GAAI,CAACA,EAAiB,KACpB,MAAM,IAAI,MAAM,0DAA4D,EAG9E,kBAAkBA,EAAiB,IAAI,EAAIA,CAC7C,EAEA,oBAAoB,oBAAoB,EACxC,oBAAoB,uBAAuB,EC5B3C,MAAM,oBAAsB,SAEtB,wBAA0B,qBAgB1B,QAAU,MAAO,CAAE,KAAAltF,EAAM,GAAAvqC,EAAI,SAAAs8C,EAAU,WAAAI,EAAY,UAAA4M,CAAW,EAAG,KAAO,CAM5E,GAAI/e,GAAQ,KACV,MAAM,IAAI,MAAM,uCAAuC,EAGzDvqC,EAAKA,GAAM,MAAM,SAAU,EAC3B,MAAMmrC,EAASZ,EAAK,OAAO,OAC3B+e,EAAYA,GAAa,YAEzB,IAAIstE,EAEAl6E,EACFk6E,EAAWl6E,EAAW,UAEtBk6E,EAAW,MAAM,SAAS,CAAE,KAAM9rF,UAASwe,EAAW,YAAY,EAAG,EACrE5M,EAAa,MAAM,WAAW,CAAE,KAAAnS,EAAM,SAAAqsF,CAAQ,CAAE,GAG9Ct6E,EACEA,EAAS,WACXA,EAAW,MAAMI,EAAW,eAAe,CAAE,GAAGJ,CAAQ,CAAE,GAG5DA,EAAW,MAAMI,EAAW,eAAe,CAAE,GAAA18C,CAAE,CAAE,EAGnD,MAAMo4H,EAAgB,MAAM,cAAc,CAAE,KAAA7tF,CAAI,CAAE,EAElD,IAAI8tF,EAAY,CAAE,EAiDlB,MAAMr5H,EAAO,MAAO4rC,EAAS,CAAE,KAAA91C,EAAM,KAAAy0D,EAAM,KAAArC,EAAM,SAAAoxE,EAAU,iBAAAC,EAAkB,aAAAr6E,EAAc,aAAAD,EAAc,aAAAE,EAAc,gBAAAqL,CAAe,EAAK,KAAO,CAChJ,IAAIx/D,EAAMo3D,EAAUq2E,GAEpB,GAAIY,EAAUztF,CAAO,EACnB,OAAOytF,EAAUztF,CAAO,EAG1B,GAAI,eAAeA,CAAO,EAAG,CAE3B,MAAM4tF,GAAO,eAAe5tF,CAAO,EACnCwW,EAAW,MAAMg3E,EAAc,IAAII,GAAK,IAAI,EAC5C,MAAMC,GAASr3E,EAAS,iBAAiB,MAAM,IAAK,CAAC,EAAE,IAAK,EAC5Dm3E,EAAmB,oBAAoBE,EAAM,EAAG,EAChDhB,GAAmB,MAAMc,EAAiB,CAAE,QAAS,CAAE,KAAAv5H,EAAM,SAAAs9C,EAAU,KAAA/R,CAAI,EAAI,WAAAmS,EAAY,QAAS0E,EAAS,gBAAgB,CAAE,EAC/Hp3D,EAAOo3D,EAAS,KAChBtsD,EAAOA,GAAQssD,EAAS,KACxBmI,EAAOnI,EAAS,IACtB,KAAW,CAELtsD,EAAOA,GAAQ,oBACfyjI,EAAmBA,GAAoB,wBAAyB,EAChEd,GAAmB,MAAMc,EAAiB,CAAE,QAAS,CAAE,KAAAv5H,EAAM,SAAAs9C,EAAU,KAAA/R,GAAQ,WAAAmS,EAAY,KAAM9R,CAAO,CAAE,EAC1G,MAAMh/C,GAAI,MAAMwsI,EAAc,OAAO,CAAE,KAAMxtF,EAAS,KAAA91C,EAAM,iBAAkB2iI,GAAiB,QAAS,KAAAluE,CAAI,CAAE,EAM9G,GALAnI,EAAWx1D,GAAE,SACbg/C,EAAU,eAAeh/C,GAAE,IAAI,EAC/B5B,EAAOo3D,EAAS,KAChBmI,EAAOnI,EAAS,KAEZi3E,EAAUztF,CAAO,EACnB,OAAOytF,EAAUztF,CAAO,CAE3B,CAID,GAFA0tF,EAAWA,GAAY,gBAAgBxjI,CAAI,EAAG,EAE1C,CAACwjI,EACH,MAAM,IAAI,MAAM,+BAA+BxjI,CAAI,GAAG,EAGxD81C,EAAUA,EAAQ,SAAU,EAE5B,MAAMoY,GAAK,MAAMs1E,EAAS,CAAE,KAAA/tF,EAAM,SAAA+R,EAAU,QAAA1R,EAAS,KAAA5gD,EAAM,OAAQytI,GAAkB,UAAAnuE,EAAW,KAAAC,EAAM,kBAAmBrC,EAAM,aAAAhJ,EAAc,aAAAD,EAAc,aAAAE,EAAc,gBAAAqL,EAAiB,EAE1L,OAAAxG,GAAG,OAAO,GAAG,QAAS01E,EAAiB9tF,CAAO,CAAC,EAE/CytF,EAAUztF,CAAO,EAAIoY,GAEdA,EACR,EAEK01E,EAAoB9tF,GAAY,IAAM,CAC1C,OAAOytF,EAAUztF,CAAO,CACzB,EAsBD,MAAO,CACL,GAAA5qC,EACA,KAAAhB,EACA,KAhBW,SAAY,CACvB,UAAWgkD,KAAM,OAAO,OAAOq1E,CAAS,EACtC,MAAMr1E,EAAG,MAAO,EAEd4zE,GACF,MAAMA,EAAS,MAAO,EAEpBwB,GACF,MAAMA,EAAc,MAAO,EAE7BC,EAAY,CAAE,CACf,EAMC,KAAA9tF,EACA,UAAA+e,EACA,SAAAstE,EACA,SAAAt6E,EACA,OAAAnR,CACD,CACH,ECnMA,IAAI0iE,kBACJ,MAAM8qB,QAAQ,IAAI,WAAW,EAAE,EAChB,SAASjnB,OAAM,CAE5B,GAAI,CAAC7D,oBAEHA,kBAAkB,OAAO,OAAW,KAAe,OAAO,iBAAmB,OAAO,gBAAgB,KAAK,MAAM,EAE3G,CAACA,mBACH,MAAM,IAAI,MAAM,0GAA0G,EAI9H,OAAOA,kBAAgB8qB,OAAK,CAC9B,CCXA,MAAMC,YAAY,GAElB,QAAS/uI,EAAI,EAAGA,EAAI,IAAK,EAAEA,EACzB+uI,YAAU,MAAM/uI,EAAI,KAAO,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,EAG3C,SAASgvI,kBAAgBjuI,EAAKW,EAAS,EAAG,CAG/C,OAAOqtI,YAAUhuI,EAAIW,EAAS,CAAC,CAAC,EAAIqtI,YAAUhuI,EAAIW,EAAS,CAAC,CAAC,EAAIqtI,YAAUhuI,EAAIW,EAAS,CAAC,CAAC,EAAIqtI,YAAUhuI,EAAIW,EAAS,CAAC,CAAC,EAAI,IAAMqtI,YAAUhuI,EAAIW,EAAS,CAAC,CAAC,EAAIqtI,YAAUhuI,EAAIW,EAAS,CAAC,CAAC,EAAI,IAAMqtI,YAAUhuI,EAAIW,EAAS,CAAC,CAAC,EAAIqtI,YAAUhuI,EAAIW,EAAS,CAAC,CAAC,EAAI,IAAMqtI,YAAUhuI,EAAIW,EAAS,CAAC,CAAC,EAAIqtI,YAAUhuI,EAAIW,EAAS,CAAC,CAAC,EAAI,IAAMqtI,YAAUhuI,EAAIW,EAAS,EAAE,CAAC,EAAIqtI,YAAUhuI,EAAIW,EAAS,EAAE,CAAC,EAAIqtI,YAAUhuI,EAAIW,EAAS,EAAE,CAAC,EAAIqtI,YAAUhuI,EAAIW,EAAS,EAAE,CAAC,EAAIqtI,YAAUhuI,EAAIW,EAAS,EAAE,CAAC,EAAIqtI,YAAUhuI,EAAIW,EAAS,EAAE,CAAC,CACnf,CChBA,MAAMutI,aAAa,OAAO,OAAW,KAAe,OAAO,YAAc,OAAO,WAAW,KAAK,MAAM,EACvF,UACf,WAAEA,YACF,ECCA,SAASC,KAAGp3H,EAASvU,EAAK7B,EAAQ,CAChC,GAAIytI,SAAO,YAAc,CAAC5rI,GAAO,CAACuU,EAChC,OAAOq3H,SAAO,aAGhBr3H,EAAUA,GAAW,GACrB,MAAMs3H,EAAOt3H,EAAQ,SAAWA,EAAQ,KAAO+vG,SAE/C,OAAAunB,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,GAAO,GAC3BA,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,GAAO,IAYpBJ,kBAAgBI,CAAI,CAC7B,CClBO,SAASpsF,SAAOC,EAAIC,EAAI,CAC3B,GAAID,IAAOC,EACP,MAAO,GACX,GAAID,EAAG,aAAeC,EAAG,WACrB,MAAO,GAEX,QAASC,EAAK,EAAGA,EAAKF,EAAG,WAAYE,IACjC,GAAIF,EAAGE,CAAE,IAAMD,EAAGC,CAAE,EAChB,MAAO,GAGf,MAAO,EACX,CACO,SAASC,SAAOhsB,EAAG,CACtB,GAAIA,aAAa,YAAcA,EAAE,YAAY,OAAS,aAClD,OAAOA,EACX,GAAIA,aAAa,YACb,OAAO,IAAI,WAAWA,CAAC,EAC3B,GAAI,YAAY,OAAOA,CAAC,EACpB,OAAO,IAAI,WAAWA,EAAE,OAAQA,EAAE,WAAYA,EAAE,UAAU,EAE9D,MAAM,IAAI,MAAM,mCAAmC,CACvD,CCpBA,SAAS/Y,OAAKglC,EAAUljD,EAAM,CAC1B,GAAIkjD,EAAS,QAAU,IACnB,MAAM,IAAI,UAAU,mBAAmB,EAG3C,QADIC,EAAW,IAAI,WAAW,GAAG,EACxBp8C,EAAI,EAAGA,EAAIo8C,EAAS,OAAQp8C,IACjCo8C,EAASp8C,CAAC,EAAI,IAElB,QAASlH,EAAI,EAAGA,EAAIqjD,EAAS,OAAQrjD,IAAK,CACtC,IAAI,EAAIqjD,EAAS,OAAOrjD,CAAC,EACrBujD,EAAK,EAAE,WAAW,CAAC,EACvB,GAAID,EAASC,CAAE,IAAM,IACjB,MAAM,IAAI,UAAU,EAAI,eAAe,EAE3CD,EAASC,CAAE,EAAIvjD,CAClB,CACD,IAAIwjD,EAAOH,EAAS,OAChBI,EAASJ,EAAS,OAAO,CAAC,EAC1BK,EAAS,KAAK,IAAIF,CAAI,EAAI,KAAK,IAAI,GAAG,EACtCG,EAAU,KAAK,IAAI,GAAG,EAAI,KAAK,IAAIH,CAAI,EAI3C,SAASI,EAAOzvC,EAAQ,CAUpB,GARIA,aAAkB,aAEb,YAAY,OAAOA,CAAM,EAC9BA,EAAS,IAAI,WAAWA,EAAO,OAAQA,EAAO,WAAYA,EAAO,UAAU,EAEtE,MAAM,QAAQA,CAAM,IACzBA,EAAS,WAAW,KAAKA,CAAM,IAE/B,EAAEA,aAAkB,YACpB,MAAM,IAAI,UAAU,qBAAqB,EAE7C,GAAIA,EAAO,SAAW,EAClB,MAAO,GAOX,QAJI0vC,EAAS,EACTvgD,EAAS,EACTwgD,EAAS,EACTC,EAAO5vC,EAAO,OACX2vC,IAAWC,GAAQ5vC,EAAO2vC,CAAM,IAAM,GACzCA,IACAD,IAMJ,QAHIz/C,GAAS2/C,EAAOD,GAAUH,EAAU,IAAO,EAC3CK,EAAM,IAAI,WAAW5/C,CAAI,EAEtB0/C,IAAWC,GAAM,CAIpB,QAHIE,EAAQ9vC,EAAO2vC,CAAM,EAErB9jD,EAAI,EACCkkD,EAAM9/C,EAAO,GAAI6/C,IAAU,GAAKjkD,EAAIsD,IAAY4gD,IAAQ,GAAKA,IAAOlkD,IACzEikD,GAAU,IAAMD,EAAIE,CAAG,IAAO,EAC9BF,EAAIE,CAAG,EAAKD,EAAQT,IAAU,EAC9BS,EAASA,EAAQT,IAAU,EAE/B,GAAIS,IAAU,EACV,MAAM,IAAI,MAAM,gBAAgB,EAEpC3gD,EAAStD,EACT8jD,GACH,CAGD,QADIK,GAAM//C,EAAOd,EACV6gD,KAAQ//C,GAAQ4/C,EAAIG,EAAG,IAAM,GAChCA,KAIJ,QADIj+C,GAAMu9C,EAAO,OAAOI,CAAM,EACvBM,GAAM//C,EAAM,EAAE+/C,GACjBj+C,IAAOm9C,EAAS,OAAOW,EAAIG,EAAG,CAAC,EAEnC,OAAOj+C,EACV,CAID,SAASk+C,EAAajwC,EAAQ,CAC1B,GAAI,OAAOA,GAAW,SAClB,MAAM,IAAI,UAAU,iBAAiB,EAEzC,GAAIA,EAAO,SAAW,EAClB,OAAO,IAAI,WAEf,IAAIkwC,EAAM,EAEV,GAAIlwC,EAAOkwC,CAAG,IAAM,IAMpB,SAFIR,EAAS,EACTvgD,EAAS,EACN6Q,EAAOkwC,CAAG,IAAMZ,GACnBI,IACAQ,IAMJ,QAHIjgD,GAAU+P,EAAO,OAASkwC,GAAOX,EAAU,IAAO,EAClDY,EAAO,IAAI,WAAWlgD,CAAI,EAEvB+P,EAAOkwC,CAAG,GAAG,CAEhB,IAAIJ,EAAQX,EAASnvC,EAAO,WAAWkwC,CAAG,CAAC,EAE3C,GAAIJ,IAAU,IACV,OAGJ,QADIjkD,EAAI,EACCukD,EAAMngD,EAAO,GAAI6/C,IAAU,GAAKjkD,EAAIsD,IAAYihD,IAAQ,GAAKA,IAAOvkD,IACzEikD,GAAUT,EAAOc,EAAKC,CAAG,IAAO,EAChCD,EAAKC,CAAG,EAAKN,EAAQ,MAAS,EAC9BA,EAASA,EAAQ,MAAS,EAE9B,GAAIA,IAAU,EACV,MAAM,IAAI,MAAM,gBAAgB,EAEpC3gD,EAAStD,EACTqkD,GACH,CAED,GAAIlwC,EAAOkwC,CAAG,IAAM,IAKpB,SADIG,EAAMpgD,EAAOd,EACVkhD,IAAQpgD,GAAQkgD,EAAKE,CAAG,IAAM,GACjCA,IAIJ,QAFIC,GAAM,IAAI,WAAWZ,GAAUz/C,EAAOogD,EAAI,EAC1Ct9C,GAAI28C,EACDW,IAAQpgD,GACXqgD,GAAIv9C,IAAG,EAAIo9C,EAAKE,GAAK,EAEzB,OAAOC,IACV,CAID,SAASC,EAAOjgD,EAAQ,CACpB,IAAInE,EAAS8jD,EAAa3/C,CAAM,EAChC,GAAInE,EACA,OAAOA,EAEX,MAAM,IAAI,MAAM,OAAOH,CAAI,YAAY,CAC1C,CACD,MAAO,CACH,OAAQyjD,EACR,aAAcQ,EACd,OAAQM,CAChB,CACA,CACA,IAAIn5C,MAAM8S,OACNsmC,kCAAkCp5C,MChKtC,mBAAc,CACV,KACA,OACA,WACA,YAAYpL,EAAMi4B,EAAQwsB,EAAY,CAClC,KAAK,KAAOzkD,EACZ,KAAK,OAASi4B,EACd,KAAK,WAAawsB,CACrB,CACD,OAAOh8C,EAAO,CACV,GAAIA,aAAiB,WACjB,MAAO,GAAG,KAAK,MAAM,GAAG,KAAK,WAAWA,CAAK,CAAC,GAG9C,MAAM,MAAM,mCAAmC,CAEtD,CACL,EAMA,eAAc,CACV,KACA,OACA,WACA,gBACA,YAAYzI,EAAMi4B,EAAQysB,EAAY,CAIlC,GAHA,KAAK,KAAO1kD,EACZ,KAAK,OAASi4B,EAEVA,EAAO,YAAY,CAAC,IAAM,OAC1B,MAAM,IAAI,MAAM,0BAA0B,EAE9C,KAAK,gBAAkBA,EAAO,YAAY,CAAC,EAC3C,KAAK,WAAaysB,CACrB,CACD,OAAOt0B,EAAM,CACT,GAAI,OAAOA,GAAS,SAAU,CAC1B,GAAIA,EAAK,YAAY,CAAC,IAAM,KAAK,gBAC7B,MAAM,MAAM,qCAAqC,KAAK,UAAUA,CAAI,CAAC,KAAK,KAAK,IAAI,+CAA+C,KAAK,MAAM,EAAE,EAEnJ,OAAO,KAAK,WAAWA,EAAK,MAAM,KAAK,OAAO,MAAM,CAAC,CACxD,KAEG,OAAM,MAAM,mCAAmC,CAEtD,CACD,GAAGu0B,EAAS,CACR,OAAOC,KAAG,KAAMD,CAAO,CAC1B,CACL,EACA,uBAAsB,CAClB,SACA,YAAYE,EAAU,CAClB,KAAK,SAAWA,CACnB,CACD,GAAGF,EAAS,CACR,OAAOC,KAAG,KAAMD,CAAO,CAC1B,CACD,OAAOl6C,EAAO,CACV,MAAMwtB,EAASxtB,EAAM,CAAC,EAChBk6C,EAAU,KAAK,SAAS1sB,CAAM,EACpC,GAAI0sB,GAAW,KACX,OAAOA,EAAQ,OAAOl6C,CAAK,EAG3B,MAAM,WAAW,qCAAqC,KAAK,UAAUA,CAAK,CAAC,+BAA+B,OAAO,KAAK,KAAK,QAAQ,CAAC,gBAAgB,CAE3J,CACL,EACO,SAASm6C,KAAG/kB,EAAM2Q,EAAO,CAE5B,OAAO,IAAIsU,kBAAgB,CACvB,GAAIjlB,EAAK,UAAY,CAAE,CAACA,EAAK,MAAM,EAAGA,GACtC,GAAI2Q,EAAM,UAAY,CAAE,CAACA,EAAM,MAAM,EAAGA,EAChD,CAAK,CACL,CACO,iBAAY,CACf,KACA,OACA,WACA,WACA,QACA,QACA,YAAYxwC,EAAMi4B,EAAQwsB,EAAYC,EAAY,CAC9C,KAAK,KAAO1kD,EACZ,KAAK,OAASi4B,EACd,KAAK,WAAawsB,EAClB,KAAK,WAAaC,EAClB,KAAK,QAAU,IAAIK,UAAQ/kD,EAAMi4B,EAAQwsB,CAAU,EACnD,KAAK,QAAU,IAAIO,UAAQhlD,EAAMi4B,EAAQysB,CAAU,CACtD,CACD,OAAOj6C,EAAO,CACV,OAAO,KAAK,QAAQ,OAAOA,CAAK,CACnC,CACD,OAAOA,EAAO,CACV,OAAO,KAAK,QAAQ,OAAOA,CAAK,CACnC,CACL,EACO,SAASjH,OAAK,CAAE,KAAAxD,EAAM,OAAAi4B,EAAQ,OAAAwrB,EAAQ,OAAAc,CAAM,EAAI,CACnD,OAAO,IAAIU,QAAMjlD,EAAMi4B,EAAQwrB,EAAQc,CAAM,CACjD,CACO,SAASW,QAAM,CAAE,KAAAllD,EAAM,OAAAi4B,EAAQ,SAAA3sB,CAAQ,EAAI,CAC9C,KAAM,CAAE,OAAAm4C,EAAQ,OAAAc,CAAM,EAAKY,kCAAM75C,EAAUtL,CAAI,EAC/C,OAAOwD,OAAK,CACR,OAAAy0B,EACA,KAAAj4B,EACA,OAAAyjD,EACA,OAASrzB,GAAS6yB,SAAOsB,EAAOn0B,CAAI,CAAC,CAC7C,CAAK,CACL,CACA,SAASm0B,SAAOjgD,EAAQgH,EAAU85C,EAAaplD,EAAM,CAEjD,MAAMqlD,EAAQ,GACd,QAASxlD,EAAI,EAAGA,EAAIyL,EAAS,OAAQ,EAAEzL,EACnCwlD,EAAM/5C,EAASzL,CAAC,CAAC,EAAIA,EAGzB,IAAIoB,EAAMqD,EAAO,OACjB,KAAOA,EAAOrD,EAAM,CAAC,IAAM,KACvB,EAAEA,EAGN,MAAMsH,EAAM,IAAI,WAAYtH,EAAMmkD,EAAc,EAAK,CAAC,EAEtD,IAAIE,EAAO,EACPnlD,EAAS,EACTolD,EAAU,EACd,QAAS1lD,EAAI,EAAGA,EAAIoB,EAAK,EAAEpB,EAAG,CAE1B,MAAMsC,EAAQkjD,EAAM/gD,EAAOzE,CAAC,CAAC,EAC7B,GAAIsC,IAAU,OACV,MAAM,IAAI,YAAY,OAAOnC,CAAI,YAAY,EAGjDG,EAAUA,GAAUilD,EAAejjD,EACnCmjD,GAAQF,EAEJE,GAAQ,IACRA,GAAQ,EACR/8C,EAAIg9C,GAAS,EAAI,IAAQplD,GAAUmlD,EAE1C,CAED,GAAIA,GAAQF,GAAgB,IAAQjlD,GAAW,EAAImlD,EAC/C,MAAM,IAAI,YAAY,wBAAwB,EAElD,OAAO/8C,CACX,CACA,SAASk7C,SAAOhrC,EAAMnN,EAAU85C,EAAa,CACzC,MAAMI,EAAMl6C,EAASA,EAAS,OAAS,CAAC,IAAM,IACxCm6C,GAAQ,GAAKL,GAAe,EAClC,IAAI78C,EAAM,GACN+8C,EAAO,EACPnlD,EAAS,EACb,QAASN,EAAI,EAAGA,EAAI4Y,EAAK,OAAQ,EAAE5Y,EAK/B,IAHAM,EAAUA,GAAU,EAAKsY,EAAK5Y,CAAC,EAC/BylD,GAAQ,EAEDA,EAAOF,GACVE,GAAQF,EACR78C,GAAO+C,EAASm6C,EAAQtlD,GAAUmlD,CAAK,EAQ/C,GAJIA,IAAS,IACT/8C,GAAO+C,EAASm6C,EAAQtlD,GAAWilD,EAAcE,CAAM,GAGvDE,EACA,KAASj9C,EAAI,OAAS68C,EAAe,GACjC78C,GAAO,IAGf,OAAOA,CACX,CAIO,SAASm9C,UAAQ,CAAE,KAAA1lD,EAAM,OAAAi4B,EAAQ,YAAAmtB,EAAa,SAAA95C,CAAQ,EAAI,CAC7D,OAAO9H,OAAK,CACR,OAAAy0B,EACA,KAAAj4B,EACA,OAAOyK,EAAO,CACV,OAAOg5C,SAAOh5C,EAAOa,EAAU85C,CAAW,CAC7C,EACD,OAAO36C,EAAO,CACV,OAAO85C,SAAO95C,EAAOa,EAAU85C,EAAaplD,CAAI,CACnD,CACT,CAAK,CACL,CCvMO,MAAM2lD,SAASD,UAAQ,CAC1B,OAAQ,IACR,KAAM,SACN,SAAU,mCACV,YAAa,CACjB,CAAC,EAC0BA,UAAQ,CAC/B,OAAQ,IACR,KAAM,cACN,SAAU,mCACV,YAAa,CACjB,CAAC,EACwBA,UAAQ,CAC7B,OAAQ,IACR,KAAM,YACN,SAAU,oCACV,YAAa,CACjB,CAAC,EAC6BA,UAAQ,CAClC,OAAQ,IACR,KAAM,iBACN,SAAU,oCACV,YAAa,CACjB,CAAC,EACwBA,UAAQ,CAC7B,OAAQ,IACR,KAAM,YACN,SAAU,mCACV,YAAa,CACjB,CAAC,EAC6BA,UAAQ,CAClC,OAAQ,IACR,KAAM,iBACN,SAAU,mCACV,YAAa,CACjB,CAAC,EAC2BA,UAAQ,CAChC,OAAQ,IACR,KAAM,eACN,SAAU,oCACV,YAAa,CACjB,CAAC,EACgCA,UAAQ,CACrC,OAAQ,IACR,KAAM,oBACN,SAAU,oCACV,YAAa,CACjB,CAAC,EACsBA,UAAQ,CAC3B,OAAQ,IACR,KAAM,UACN,SAAU,mCACV,YAAa,CACjB,CAAC,ECrDM,MAAME,YAAYV,QAAM,CAC3B,KAAM,YACN,OAAQ,IACR,SAAU,4DACd,CAAC,EAC2BA,QAAM,CAC9B,KAAM,eACN,OAAQ,IACR,SAAU,4DACd,CAAC,ECTD,IAAIW,WAAWpC,SACXqC,MAAM,IAAMC,OAAO,IAAMC,SAAS,CAACD,OAAME,MAAM,KAAK,IAAI,EAAG,EAAE,EAMjE,SAASxC,SAAO3iD,EAAKyH,EAAKhH,EAAQ,CAC9BgH,EAAMA,GAAO,GACbhH,EAASA,GAAU,EAEnB,QADI2kD,EAAY3kD,EACTT,GAAOmlD,OACV19C,EAAIhH,GAAQ,EAAKT,EAAM,IAAQglD,MAC/BhlD,GAAO,IAEX,KAAOA,EAAMklD,UACTz9C,EAAIhH,GAAQ,EAAKT,EAAM,IAAQglD,MAC/BhlD,KAAS,EAEb,OAAAyH,EAAIhH,CAAM,EAAIT,EAAM,EAEpB2iD,SAAO,MAAQliD,EAAS2kD,EAAY,EAC7B39C,CACX,CACA,IAAIg8C,SAAS39C,OACTu/C,QAAQ,IAAMC,SAAS,IAK3B,SAASx/C,OAAKxD,EAAK7B,EAAQ,CACvB,IAAIoG,EAAM,EAAGpG,EAASA,GAAU,EAAG8kD,EAAQ,EAAGC,EAAU/kD,EAAQuC,EAAGyK,EAAInL,EAAI,OAC3E,EAAG,CACC,GAAIkjD,GAAW/3C,EAEX3H,aAAK,MAAQ,EACP,IAAI,WAAW,yBAAyB,EAElD9C,EAAIV,EAAIkjD,GAAS,EACjB3+C,GAAO0+C,EAAQ,IACRviD,EAAIsiD,WAAWC,GACfviD,EAAIsiD,UAAU,KAAK,IAAI,EAAGC,CAAK,EACtCA,GAAS,CACjB,OAAaviD,GAAKqiD,SAEdv/C,cAAK,MAAQ0/C,EAAU/kD,EAChBoG,CACX,CACA,IAAI4+C,KAAK,KAAK,IAAI,EAAG,CAAC,EAClBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,KAAK,KAAK,IAAI,EAAG,EAAE,EACnB5jD,SAAS,SAAgChB,EAAO,CAChD,OAAQA,EAAQokD,KAAK,EACfpkD,EAAQqkD,KAAK,EACTrkD,EAAQskD,KAAK,EACTtkD,EAAQukD,KAAK,EACTvkD,EAAQwkD,KAAK,EACTxkD,EAAQykD,KAAK,EACTzkD,EAAQ0kD,KAAK,EACT1kD,EAAQ2kD,KAAK,EACT3kD,EAAQ4kD,KAAK,EACT,EAC1C,EACIC,SAAS,CACT,OAAQnB,WACR,OAAQtB,SACR,eAAgBphD,QACpB,EACI8jD,eAAeD,SC1EZ,SAASzC,SAAO9rC,EAAMlX,EAAS,EAAG,CAErC,MAAO,CADMylD,eAAO,OAAOvuC,EAAMlX,CAAM,EACzBylD,eAAO,OAAO,KAAK,CACrC,CACO,SAASE,WAASC,EAAKlhD,EAAQ1E,EAAS,EAAG,CAC9CylD,sBAAO,OAAOG,EAAKlhD,EAAQ1E,CAAM,EAC1B0E,CACX,CACO,SAASmhD,iBAAeD,EAAK,CAChC,OAAOH,eAAO,eAAeG,CAAG,CACpC,CCNO,SAASE,SAAO/mD,EAAMgnD,EAAQ,CACjC,MAAMrjD,EAAOqjD,EAAO,WACdC,EAAaC,iBAAsBlnD,CAAI,EACvCmnD,EAAeF,EAAaC,iBAAsBvjD,CAAI,EACtDwE,EAAQ,IAAI,WAAWg/C,EAAexjD,CAAI,EAChDyjD,kBAAgBpnD,EAAMmI,EAAO,CAAC,EAC9Bi/C,WAAgBzjD,EAAMwE,EAAO8+C,CAAU,EACvC9+C,EAAM,IAAI6+C,EAAQG,CAAY,EACvB,IAAIE,SAAOrnD,EAAM2D,EAAMqjD,EAAQ7+C,CAAK,CAC/C,CAIO,SAAS87C,SAAOqD,EAAW,CAC9B,MAAMn/C,EAAQw6C,SAAO2E,CAAS,EACxB,CAACtnD,EAAMinD,CAAU,EAAIM,SAAcp/C,CAAK,EACxC,CAACxE,EAAMwjD,CAAY,EAAII,SAAcp/C,EAAM,SAAS8+C,CAAU,CAAC,EAC/DD,EAAS7+C,EAAM,SAAS8+C,EAAaE,CAAY,EACvD,GAAIH,EAAO,aAAerjD,EACtB,MAAM,IAAI,MAAM,kBAAkB,EAEtC,OAAO,IAAI0jD,SAAOrnD,EAAM2D,EAAMqjD,EAAQ7+C,CAAK,CAC/C,CACO,SAASo6C,SAAO/9C,EAAGhB,EAAG,CACzB,GAAIgB,IAAMhB,EACN,MAAO,GAEN,CACD,MAAM2U,EAAO3U,EACb,OAAQgB,EAAE,OAAS2T,EAAK,MACpB3T,EAAE,OAAS2T,EAAK,MAChBA,EAAK,iBAAiB,YACtBqvC,SAAWhjD,EAAE,MAAO2T,EAAK,KAAK,CACrC,CACL,CAKO,kBAAa,CAChB,KACA,KACA,OACA,MAIA,YAAYnY,EAAM2D,EAAMqjD,EAAQ7+C,EAAO,CACnC,KAAK,KAAOnI,EACZ,KAAK,KAAO2D,EACZ,KAAK,OAASqjD,EACd,KAAK,MAAQ7+C,CAChB,CACL,ECnDO,SAASs/C,SAAO/W,EAAM9yB,EAAM,CAC/B,KAAM,CAAE,MAAAzV,EAAO,QAAA2W,CAAS,EAAG4xB,EAC3B,OAAQ5xB,EAAO,CACX,IAAK,GACD,OAAO4oC,aAAWv/C,EAAOw/C,YAAUjX,CAAI,EAAG9yB,GAAQ0nC,YAAU,OAAO,EACvE,QACI,OAAOsC,aAAWz/C,EAAOw/C,YAAUjX,CAAI,EAAI9yB,GAAQynC,SAAO,QACjE,CACL,CASA,MAAMt4C,QAAQ,IAAI,QAClB,SAAS46C,YAAU/R,EAAK,CACpB,MAAM+R,EAAY56C,QAAM,IAAI6oC,CAAG,EAC/B,GAAI+R,GAAa,KAAM,CACnB,MAAMA,EAAY,IAAI,IACtB56C,eAAM,IAAI6oC,EAAK+R,CAAS,EACjBA,CACV,CACD,OAAOA,CACX,CACO,gBAAME,EAAI,CACb,KACA,QACA,UACA,MACA,IAMA,YAAY/oC,EAAS9e,EAAMsnD,EAAWn/C,EAAO,CACzC,KAAK,KAAOnI,EACZ,KAAK,QAAU8e,EACf,KAAK,UAAYwoC,EACjB,KAAK,MAAQn/C,EAGb,KAAK,GAAG,EAAIA,CACf,CAOD,IAAI,OAAQ,CACR,OAAO,IACV,CAED,IAAI,YAAa,CACb,OAAO,KAAK,MAAM,UACrB,CAED,IAAI,YAAa,CACb,OAAO,KAAK,MAAM,UACrB,CACD,MAAO,CACH,OAAQ,KAAK,QAAO,CAChB,IAAK,GACD,OAAO,KAEX,IAAK,GAAG,CACJ,KAAM,CAAE,KAAAnI,EAAM,UAAAsnD,CAAW,EAAG,KAC5B,GAAItnD,IAAS8nD,cACT,MAAM,IAAI,MAAM,0CAA0C,EAG9D,GAAIR,EAAU,OAASS,eACnB,MAAM,IAAI,MAAM,oDAAoD,EAExE,OAAQF,GAAI,SAASP,CAAS,CACjC,CACD,QACI,MAAM,MAAM,+BAA+B,KAAK,OAAO,4CAA4C,CAE1G,CACJ,CACD,MAAO,CACH,OAAQ,KAAK,QAAO,CAChB,IAAK,GAAG,CACJ,KAAM,CAAE,KAAAtnD,EAAM,OAAAgnD,GAAW,KAAK,UACxBM,EAAYU,SAAchoD,EAAMgnD,CAAM,EAC5C,OAAQa,GAAI,SAAS,KAAK,KAAMP,CAAS,CAC5C,CACD,IAAK,GACD,OAAO,KAEX,QACI,MAAM,MAAM,+BAA+B,KAAK,OAAO,4CAA4C,CAE1G,CACJ,CACD,OAAOW,EAAO,CACV,OAAOJ,GAAI,OAAO,KAAMI,CAAK,CAChC,CACD,OAAO,OAAOx1C,EAAMw1C,EAAO,CACvB,MAAMC,EAAUD,EAChB,OAAQC,GAAW,MACfz1C,EAAK,OAASy1C,EAAQ,MACtBz1C,EAAK,UAAYy1C,EAAQ,SACzBC,SAAc11C,EAAK,UAAWy1C,EAAQ,SAAS,CACtD,CACD,SAAStqC,EAAM,CACX,OAAO6pC,SAAO,KAAM7pC,CAAI,CAC3B,CACD,QAAS,CACL,MAAO,CAAE,IAAK6pC,SAAO,IAAI,CAAC,CAC7B,CACD,MAAO,CACH,OAAO,IACV,CACD,CAAC,OAAO,WAAW,EAAI,MAEvB,CAAC,OAAO,IAAI,4BAA4B,CAAC,GAAI,CACzC,MAAO,OAAO,KAAK,SAAU,IAChC,CAWD,OAAO,MAAMt9C,EAAO,CAChB,GAAIA,GAAS,KACT,OAAO,KAEX,MAAMtI,EAAQsI,EACd,GAAItI,aAAiBgmD,GAEjB,OAAOhmD,EAEN,GAAKA,EAAM,GAAG,GAAK,MAAQA,EAAM,GAAG,IAAMA,EAAM,OAAUA,EAAM,QAAUA,EAAO,CAMlF,KAAM,CAAE,QAAAid,EAAS,KAAA9e,EAAM,UAAAsnD,EAAW,MAAAn/C,CAAK,EAAKtG,EAC5C,OAAO,IAAIgmD,GAAI/oC,EAAS9e,EAAMsnD,EAAWn/C,GAASigD,YAAUtpC,EAAS9e,EAAMsnD,EAAU,KAAK,CAAC,CAC9F,SACQzlD,EAAMwmD,WAAS,IAAM,GAAM,CAIhC,KAAM,CAAE,QAAAvpC,EAAS,UAAAwoC,EAAW,KAAAtnD,CAAI,EAAK6B,EAC/BmlD,EAASsB,SAAchB,CAAS,EACtC,OAAOO,GAAI,OAAO/oC,EAAS9e,EAAMgnD,CAAM,CAC1C,KAIG,QAAO,IAEd,CAMD,OAAO,OAAOloC,EAAS9e,EAAMgnD,EAAQ,CACjC,GAAI,OAAOhnD,GAAS,SAChB,MAAM,IAAI,MAAM,uCAAuC,EAE3D,GAAI,EAAEgnD,EAAO,iBAAiB,YAC1B,MAAM,IAAI,MAAM,gBAAgB,EAEpC,OAAQloC,EAAO,CACX,IAAK,GAAG,CACJ,GAAI9e,IAAS8nD,cACT,MAAM,IAAI,MAAM,wCAAwCA,aAAW,kBAAkB,EAGrF,OAAO,IAAID,GAAI/oC,EAAS9e,EAAMgnD,EAAQA,EAAO,KAAK,CAEzD,CACD,IAAK,GAAG,CACJ,MAAM7+C,EAAQigD,YAAUtpC,EAAS9e,EAAMgnD,EAAO,KAAK,EACnD,OAAO,IAAIa,GAAI/oC,EAAS9e,EAAMgnD,EAAQ7+C,CAAK,CAC9C,CACD,QACI,MAAM,IAAI,MAAM,iBAAiB,CAExC,CACJ,CAID,OAAO,SAAS6+C,EAAQ,CACpB,OAAOa,GAAI,OAAO,EAAGC,cAAad,CAAM,CAC3C,CAOD,OAAO,SAAShnD,EAAMgnD,EAAQ,CAC1B,OAAOa,GAAI,OAAO,EAAG7nD,EAAMgnD,CAAM,CACpC,CAQD,OAAO,OAAO7+C,EAAO,CACjB,KAAM,CAACytC,EAAK2S,CAAS,EAAIV,GAAI,YAAY1/C,CAAK,EAC9C,GAAIogD,EAAU,SAAW,EACrB,MAAM,IAAI,MAAM,kBAAkB,EAEtC,OAAO3S,CACV,CAUD,OAAO,YAAYztC,EAAO,CACtB,MAAMqgD,EAAQX,GAAI,aAAa1/C,CAAK,EAC9BsgD,EAAaD,EAAM,KAAOA,EAAM,cAChCE,EAAiB/F,SAAOx6C,EAAM,SAASsgD,EAAYA,EAAaD,EAAM,aAAa,CAAC,EAC1F,GAAIE,EAAe,aAAeF,EAAM,cACpC,MAAM,IAAI,MAAM,kBAAkB,EAEtC,MAAMG,EAAcD,EAAe,SAASF,EAAM,cAAgBA,EAAM,UAAU,EAC5ExB,EAAS,IAAI4B,SAAcJ,EAAM,cAAeA,EAAM,WAAYG,EAAaD,CAAc,EAInG,MAAO,CAHKF,EAAM,UAAY,EACxBX,GAAI,SAASb,CAAM,EACnBa,GAAI,SAASW,EAAM,MAAOxB,CAAM,EACzB7+C,EAAM,SAASqgD,EAAM,IAAI,CAAC,CAC1C,CAUD,OAAO,aAAaK,EAAc,CAC9B,IAAI5nD,EAAS,EACb,MAAM+iB,EAAO,IAAM,CACf,KAAM,CAACzkB,EAAGsD,CAAM,EAAI0kD,SAAcsB,EAAa,SAAS5nD,CAAM,CAAC,EAC/D,OAAAA,GAAU4B,EACHtD,CACnB,EACQ,IAAIuf,EAAUkF,IACV8kC,EAAQhB,cASZ,GARIhpC,IAAY,IAEZA,EAAU,EACV7d,EAAS,GAGT6nD,EAAQ9kC,EAAI,EAEZlF,IAAY,GAAKA,IAAY,EAC7B,MAAM,IAAI,WAAW,uBAAuBA,CAAO,EAAE,EAEzD,MAAM2pC,EAAaxnD,EACb8nD,EAAgB/kC,IAChBglC,EAAahlC,IACbrgB,EAAO1C,EAAS+nD,EAChBC,EAAgBtlD,EAAO8kD,EAC7B,MAAO,CAAE,QAAA3pC,EAAS,MAAAgqC,EAAO,cAAAC,EAAe,WAAAC,EAAY,cAAAC,EAAe,KAAAtlD,EACtE,CAOD,OAAO,MAAM+P,EAAQkK,EAAM,CACvB,KAAM,CAAC+Z,EAAQxvB,CAAK,EAAI+gD,kBAAgBx1C,EAAQkK,CAAI,EAC9Cg4B,EAAMiS,GAAI,OAAO1/C,CAAK,EAC5B,GAAIytC,EAAI,UAAY,GAAKliC,EAAO,CAAC,IAAM,IACnC,MAAM,MAAM,wDAAwD,EAGxEi0C,mBAAU/R,CAAG,EAAE,IAAIje,EAAQjkB,CAAM,EAC1BkiC,CACV,CACL,EACA,SAASsT,kBAAgBx1C,EAAQkK,EAAM,CACnC,OAAQlK,EAAO,CAAC,EAAC,CAEb,IAAK,IAAK,CACN,MAAM2wC,EAAUzmC,GAAQ0nC,YACxB,MAAO,CACHA,YAAU,OACVjB,EAAQ,OAAO,GAAGiB,YAAU,MAAM,GAAG5xC,CAAM,EAAE,CAC7D,CACS,CACD,KAAK4xC,YAAU,OAAQ,CACnB,MAAMjB,EAAUzmC,GAAQ0nC,YACxB,MAAO,CAACA,YAAU,OAAQjB,EAAQ,OAAO3wC,CAAM,CAAC,CACnD,CACD,KAAK2xC,SAAO,OAAQ,CAChB,MAAMhB,EAAUzmC,GAAQynC,SACxB,MAAO,CAACA,SAAO,OAAQhB,EAAQ,OAAO3wC,CAAM,CAAC,CAChD,CACD,QAAS,CACL,GAAIkK,GAAQ,KACR,MAAM,MAAM,iFAAiF,EAEjG,MAAO,CAAClK,EAAO,CAAC,EAAGkK,EAAK,OAAOlK,CAAM,CAAC,CACzC,CACJ,CACL,CACA,SAASg0C,aAAWv/C,EAAO4E,EAAO6Q,EAAM,CACpC,KAAM,CAAE,OAAA+Z,CAAQ,EAAG/Z,EACnB,GAAI+Z,IAAW2tB,YAAU,OACrB,MAAM,MAAM,8BAA8B1nC,EAAK,IAAI,WAAW,EAElE,MAAMg4B,EAAM7oC,EAAM,IAAI4qB,CAAM,EAC5B,GAAIie,GAAO,KAAM,CACb,MAAMA,EAAMh4B,EAAK,OAAOzV,CAAK,EAAE,MAAM,CAAC,EACtC,OAAA4E,EAAM,IAAI4qB,EAAQie,CAAG,EACdA,CACV,KAEG,QAAOA,CAEf,CACA,SAASgS,aAAWz/C,EAAO4E,EAAO6Q,EAAM,CACpC,KAAM,CAAE,OAAA+Z,CAAQ,EAAG/Z,EACbg4B,EAAM7oC,EAAM,IAAI4qB,CAAM,EAC5B,GAAIie,GAAO,KAAM,CACb,MAAMA,EAAMh4B,EAAK,OAAOzV,CAAK,EAC7B,OAAA4E,EAAM,IAAI4qB,EAAQie,CAAG,EACdA,CACV,KAEG,QAAOA,CAEf,CACA,MAAMkS,cAAc,IACdC,eAAe,GACrB,SAASK,YAAUtpC,EAAS9e,EAAMsnD,EAAW,CACzC,MAAM6B,EAAajC,iBAAsBpoC,CAAO,EAC1CsqC,EAAaD,EAAajC,iBAAsBlnD,CAAI,EACpDmI,EAAQ,IAAI,WAAWihD,EAAa9B,EAAU,UAAU,EAC9DF,kBAAgBtoC,EAAS3W,EAAO,CAAC,EACjCi/C,WAAgBpnD,EAAMmI,EAAOghD,CAAU,EACvChhD,EAAM,IAAIm/C,EAAW8B,CAAU,EACxBjhD,CACX,CACA,MAAMkgD,YAAY,OAAO,IAAI,kBAAkB,ECnXxC,SAASnlD,OAAK,CAAE,KAAAxD,EAAM,KAAAM,EAAM,OAAAmjD,CAAM,EAAI,CACzC,OAAO,IAAIkG,SAAO3pD,EAAMM,EAAMmjD,CAAM,CACxC,CAKO,kBAAa,CAChB,KACA,KACA,OACA,YAAYzjD,EAAMM,EAAMmjD,EAAQ,CAC5B,KAAK,KAAOzjD,EACZ,KAAK,KAAOM,EACZ,KAAK,OAASmjD,CACjB,CACD,OAAOh5C,EAAO,CACV,GAAIA,aAAiB,WAAY,CAC7B,MAAM+F,EAAS,KAAK,OAAO/F,CAAK,EAChC,OAAO+F,aAAkB,WACnB83C,SAAc,KAAK,KAAM93C,CAAM,EAE/BA,EAAO,KAAK82C,GAAUgB,SAAc,KAAK,KAAMhB,CAAM,CAAC,CAC/D,KAEG,OAAM,MAAM,mCAAmC,CAGtD,CACL,EC7BA,SAAS,SAAS,CAAE,WAAAsC,EAAa,GAAM,aAAAC,EAAe,EAAO,EAAG,GAAI,CAChE,MAAO,CAAE,WAAAD,EAAY,aAAAC,EAAc,SAAU,EAAK,CACtD,CACA,SAAU,YAAYv+B,EAAMnpB,EAAO,CAC/B,GAAIA,GAAS,MAAQ,OAAOA,GAAU,SAClC,GAAI,MAAM,QAAQA,CAAK,EACnB,SAAW,CAACgZ,EAAO22B,CAAO,IAAK3vC,EAAM,QAAO,EAAI,CAC5C,MAAM4nD,EAAc,CAAC,GAAGz+B,EAAMnQ,CAAK,EAC7B+6B,EAAMiS,MAAI,MAAMrW,CAAO,EACzBoE,GAAO,KACP,KAAM,CAAC6T,EAAY,KAAK,GAAG,EAAG7T,CAAG,EAE5B,OAAOpE,GAAY,WACxB,MAAO,MAAMA,EAASiY,CAAW,EAExC,KAEA,CACD,MAAM7T,EAAMiS,MAAI,MAAMhmD,CAAK,EACvB+zC,GAAO,KACP,KAAM,CAAC5qB,EAAK,KAAK,GAAG,EAAG4qB,CAAG,EAG1B,MAAO,MAAM/zC,EAAOmpB,CAAI,CAE/B,CAET,CACA,SAAU,MAAMtX,EAAQkK,EAAM,CAC1B,GAAIlK,GAAU,MAAQA,aAAkB,WACpC,OAEJ,MAAMkiC,EAAMiS,MAAI,MAAMn0C,CAAM,EACxBkiC,GAAO,OACP,KAAM,CAACh4B,EAAK,KAAK,GAAG,EAAGg4B,CAAG,GAE9B,SAAW,CAAC5pC,EAAKnK,CAAK,IAAK,OAAO,QAAQ6R,CAAM,EAAG,CAC/C,MAAMsX,EAAO,CAAC,GAAGpN,EAAM5R,CAAG,EAC1B,MAAO,YAAYgf,EAAMnpB,CAAK,CACjC,CACL,CACA,SAAU,WAAWmpB,EAAMnpB,EAAO,CAC9B,GAAI,MAAM,QAAQA,CAAK,EACnB,SAAW,CAACgZ,EAAO22B,CAAO,IAAK3vC,EAAM,QAAO,EAAI,CAC5C,MAAM4nD,EAAc,CAAC,GAAGz+B,EAAMnQ,CAAK,EACnC,MAAM4uC,EAAY,KAAK,GAAG,EACtB,OAAOjY,GAAY,UAAaqW,MAAI,MAAMrW,CAAO,GAAK,OACtD,MAAO,KAAKA,EAASiY,CAAW,EAEvC,MAGD,MAAO,KAAK5nD,EAAOmpB,CAAI,CAE/B,CACA,SAAU,KAAKtX,EAAQkK,EAAM,CACzB,GAAI,EAAAlK,GAAU,MAAQ,OAAOA,GAAW,UAGxC,SAAW,CAAC1H,EAAKnK,CAAK,IAAK,OAAO,QAAQ6R,CAAM,EAAG,CAC/C,MAAMsX,EAAO,CAAC,GAAGpN,EAAM5R,CAAG,EAC1B,MAAMgf,EAAK,KAAK,GAAG,EACfnpB,GAAS,MAAQ,EAAEA,aAAiB,aAAe,OAAOA,GAAU,UAAagmD,MAAI,MAAMhmD,CAAK,GAAK,OACrG,MAAO,WAAWmpB,EAAMnpB,CAAK,EAEpC,CACL,CACA,SAASuO,MAAIsD,EAAQsX,EAAM,CACvB,IAAI8D,EAAOpb,EACX,SAAW,CAACmH,EAAO7O,CAAG,IAAKgf,EAAK,QAAO,EAAI,CAEvC,GADA8D,EAAOA,EAAK9iB,CAAG,EACX8iB,GAAQ,KACR,MAAM,IAAI,MAAM,6BAA6B9D,EAAK,MAAM,EAAGnQ,EAAQ,CAAC,EAAE,IAAIgvC,GAAQ,IAAI,KAAK,UAAUA,CAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAE7H,MAAMjU,EAAMiS,MAAI,MAAM/4B,CAAI,EAC1B,GAAI8mB,GAAO,KACP,MAAO,CAAE,MAAOA,EAAK,UAAW5qB,EAAK,MAAMnQ,EAAQ,CAAC,EAAE,KAAK,GAAG,CAAC,CAEtE,CACD,MAAO,CAAE,MAAOiU,EACpB,CAOO,MAAM,KAAM,CACf,IACA,MACA,MACA,QACA,YAAY,CAAE,IAAA8mB,EAAK,MAAAztC,EAAO,MAAAtG,CAAK,EAAI,CAC/B,GAAI+zC,GAAO,MAAQztC,GAAS,MAAQ,OAAOtG,EAAU,IACjD,MAAM,IAAI,MAAM,2BAA2B,EAE/C,KAAK,IAAM+zC,EACX,KAAK,MAAQztC,EACb,KAAK,MAAQtG,EACb,KAAK,QAAU,KAEf,OAAO,iBAAiB,KAAM,CAC1B,IAAK,SAAU,EACf,MAAO,SAAU,EACjB,MAAO,SAAU,EACjB,QAAS,SAAU,CAC/B,CAAS,CACJ,CACD,OAAQ,CACJ,OAAO,MAAM,KAAK,MAAO,CAAE,EAC9B,CACD,MAAO,CACH,OAAO,KAAK,KAAK,MAAO,CAAE,EAC7B,CACD,IAAImpB,EAAO,IAAK,CACZ,OAAO5a,MAAI,KAAK,MAAO4a,EAAK,MAAM,GAAG,EAAE,OAAO,OAAO,CAAC,CACzD,CACL,CAMO,eAAem4B,SAAO,CAAE,MAAAthD,EAAO,MAAAinD,EAAO,OAAAgB,CAAM,EAAI,CACnD,GAAI,OAAOjoD,EAAU,IACjB,MAAM,IAAI,MAAM,mCAAmC,EACvD,GAAIinD,GAAS,MAAQgB,GAAU,KAC3B,MAAM,IAAI,MAAM,4CAA4C,EAChE,MAAM3hD,EAAQ2gD,EAAM,OAAOjnD,CAAK,EAC1BkoD,EAAO,MAAMD,EAAO,OAAO3hD,CAAK,EAEhCytC,EAAMiS,MAAI,OAAO,EAAGiB,EAAM,KAAMiB,CAAI,EAC1C,OAAO,IAAI,MAAM,CAAE,MAAAloD,EAAO,MAAAsG,EAAO,IAAAytC,CAAK,EAC1C,CAMO,eAAeqO,SAAO,CAAE,MAAA97C,EAAO,MAAA2gD,EAAO,OAAAgB,CAAM,EAAI,CACnD,GAAI3hD,GAAS,KACT,MAAM,IAAI,MAAM,mCAAmC,EACvD,GAAI2gD,GAAS,MAAQgB,GAAU,KAC3B,MAAM,IAAI,MAAM,4CAA4C,EAChE,MAAMjoD,EAAQinD,EAAM,OAAO3gD,CAAK,EAC1B4hD,EAAO,MAAMD,EAAO,OAAO3hD,CAAK,EAEhCytC,EAAMiS,MAAI,OAAO,EAAGiB,EAAM,KAAMiB,CAAI,EAC1C,OAAO,IAAI,MAAM,CAAE,MAAAloD,EAAO,MAAAsG,EAAO,IAAAytC,CAAK,EAC1C,CCpJA,SAASic,MAAInyD,EAAM,CACf,MAAO,OAAOyY,GAAS,IAAI,WAAW,MAAM,OAAO,OAAO,OAAOzY,EAAMyY,CAAI,CAAC,CAChF,CACO,MAAM25C,SAAS5uD,OAAK,CACvB,KAAM,WACN,KAAM,GACN,OAAQ2uD,MAAI,SAAS,CACzB,CAAC,EACY,OAAS3uD,OAAK,CACvB,KAAM,WACN,KAAM,GACN,OAAQ2uD,MAAI,SAAS,CACzB,CAAC,ECdY,WAAa,aACb,OAAS,SACT,MAAQ,CAAC,WAAY,MAAM,ECDlCrnD,OAAO,OACP,KAAO,IAAM,MAAO,CAAE,KAAAy1C,EAAM,SAAA+R,EAAU,QAAA1R,EAAS,KAAA5gD,EAAM,OAAAg0D,EAAQ,UAAAsL,EAAW,KAAAC,EAAM,aAAArL,EAAc,aAAAD,EAAc,aAAAE,EAAc,gBAAAqL,EAAiB,kBAAAC,EAAmB,SAAAC,KAAgB,CAC9K,MAAMK,EAAW,MAAM,SAAS,CAC5B,KAAAxf,EACA,SAAA+R,EACA,QAAA1R,EACA,KAAA5gD,EACA,OAAAg0D,EACA,UAAAsL,EACA,KAAAC,EACA,aAAArL,EACA,aAAAD,EACA,aAAAE,EACA,gBAAAqL,EACA,kBAAAC,EACA,SAAAC,CACR,CAAK,EACK,CAAE,aAAAC,EAAc,IAAAnf,CAAK,EAAGuf,EACxB7uD,EAAM,MAAO/O,GACRw9D,EAAa,CAAE,GAAI,MAAO,IAAK,KAAM,MAAAx9D,CAAK,CAAE,EAEjDwnB,EAAS,MAAO0gC,GACXsV,EAAa,CAAE,GAAI,MAAO,IAAK,KAAM,MAAOtV,CAAI,CAAE,EAEvDgJ,EAAW,gBAAiB,CAAE,OAAAp2B,CAAM,EAAM,GAAI,CAChD,MAAMiyG,EAAO,GACb,IAAI3yF,EAAQ,EACZ,gBAAiB3nC,KAAS4rC,EAAI,WAAY,CACtC,KAAM,CAAE,GAAAgd,GAAI,MAAAr7D,IAAUyS,EAAM,QACtB,CAAE,KAAAy1C,EAAM,EAAGz1C,EACjB,GAAI4oD,KAAO,OAAS,CAAC0xE,EAAK7kF,EAAI,EAAG,CAC7B9N,IACA,MAAM8N,GAAOz1C,EAAM,KACnBs6H,EAAK7kF,EAAI,EAAI,GACb,KAAM,CAAE,MAAAloD,GAAO,KAAAkoD,GAClB,MACQmT,KAAO,OAAS,CAAC0xE,EAAK/sI,EAAK,IAChC+sI,EAAK/sI,EAAK,EAAI,IAElB,GAAI86B,IAAW,QAAasf,GAAStf,EACjC,KAEP,CACT,EAQI,MAAO,CACH,GAAG8iC,EACX,KAAQj1D,OACA,IAAAoG,EACA,OAAAyY,EACA,SAAA0pC,EACA,IAbQ,SAAY,CACpB,MAAMh+C,EAAS,GACf,gBAAiBT,KAASy+C,IACtBh+C,EAAO,QAAQT,CAAK,EAExB,OAAOS,CACf,CAQA,CACA,EACA,KAAK,KAAOvK,OC3DL,MAAM,aAAe,IAAM,gBAAgB,IAAI,ECDhDA,OAAO,MACPqkI,MAAM,IAAM,MAAO,CAAE,KAAA5uF,EAAM,SAAA+R,EAAU,QAAA1R,EAAS,KAAA5gD,EAAM,OAAAg0D,EAAQ,UAAAsL,EAAW,KAAAC,EAAM,aAAArL,EAAc,aAAAD,EAAc,aAAAE,EAAc,gBAAAqL,EAAiB,kBAAAC,EAAmB,SAAAC,KAAgB,CAC7K,MAAMK,EAAW,MAAM,SAAS,CAC5B,KAAAxf,EACA,SAAA+R,EACA,QAAA1R,EACA,KAAA5gD,EACA,OAAAg0D,EACA,UAAAsL,EACA,KAAAC,EACA,aAAArL,EACA,aAAAD,EACA,aAAAE,EACA,gBAAAqL,EACA,kBAAAC,EACA,SAAAC,CACR,CAAK,EACK,CAAE,aAAAC,EAAc,IAAAnf,CAAK,EAAGuf,EACxB7uD,EAAM,MAAO/O,GACRw9D,EAAa,CAAE,GAAI,MAAO,IAAK,KAAM,MAAAx9D,CAAK,CAAE,EAEjD89D,EAAM,MAAO99D,GACRw9D,EAAa,CAAE,GAAI,MAAO,IAAK,KAAM,MAAAx9D,CAAK,CAAE,EAEjDkxD,EAAW,gBAAiB,CAAE,OAAAp2B,CAAM,EAAM,GAAI,CAChD,MAAMiyG,EAAO,GACb,IAAI3yF,EAAQ,EACZ,gBAAiB3nC,KAAS4rC,EAAI,WAAY,CACtC,KAAM,CAAE,GAAAgd,GAAI,MAAAr7D,IAAUyS,EAAM,QACtBtI,GAAM,KAAK,UAAUnK,EAAK,EAChC,GAAIq7D,KAAO,OAAS,CAAC0xE,EAAK5iI,EAAG,EAAG,CAC5B4iI,EAAK5iI,EAAG,EAAI,GACZiwC,IACA,MAAM8N,GAAOz1C,EAAM,KACnB,KAAM,CAAE,MAAAzS,GAAO,KAAAkoD,GAClB,MACQmT,KAAO,OAAS,CAAC0xE,EAAK5iI,EAAG,IAC9B4iI,EAAK5iI,EAAG,EAAI,IAEhB,GAAI2wB,IAAW,QAAasf,GAAStf,EACjC,KAEP,CACT,EAQI,MAAO,CACH,GAAG8iC,EACX,KAAQj1D,OACA,IAAAoG,EACA,IAAA+uD,EACA,SAAA5M,EACA,IAbQ,SAAY,CACpB,MAAMh+C,EAAS,GACf,gBAAiBT,KAASy+C,IACtBh+C,EAAO,QAAQT,CAAK,EAExB,OAAOS,CACf,CAQA,CACA,EACA85H,MAAI,KAAOrkI,OC3DJ,MAAM,YAAc,IAAM,gBAAgBqkI,KAAG,ECD9CrkI,OAAO,mBACP,gBAAkB,IAAM,MAAO,CAAE,KAAAy1C,EAAM,SAAA+R,EAAU,QAAA1R,EAAS,KAAA5gD,EAAM,OAAAg0D,EAAQ,UAAAsL,EAAW,KAAAC,EAAM,aAAArL,EAAc,aAAAD,EAAc,aAAAE,EAAc,gBAAAqL,EAAiB,kBAAAC,EAAmB,SAAAC,KAAgB,CACzL,MAAMK,EAAW,MAAM,SAAS,CAC5B,KAAAxf,EACA,SAAA+R,EACA,QAAA1R,EACA,KAAA5gD,EACA,OAAAg0D,EACA,UAAAsL,EACA,KAAAC,EACA,aAAArL,EACA,aAAAD,EACA,aAAAE,EACA,gBAAAqL,EACA,kBAAAC,EACA,SAAAC,CACR,CAAK,EACK,CAAE,aAAAC,EAAc,IAAAnf,CAAK,EAAGuf,EACxBhN,EAAM,MAAOzmD,EAAKnK,EAAOw9B,KAAa,CACxC,MAAMyvG,GAAa,CAAE,MAAAjtI,GACrB,OAAIw9B,KAAa,SACbyvG,GAAW,SAAWzvG,IAEnBggC,EAAa,CAAE,GAAI,MAAO,IAAArzD,EAAK,MAAO8iI,EAAU,CAAE,CACjE,EACUrmH,EAAO,MAAOzc,EAAKqzB,IACdggC,EAAa,CAAE,GAAI,OAAQ,IAAArzD,EAAK,MAAOqzB,CAAQ,CAAE,EAEtDsgC,EAAM,MAAO3zD,GACRqzD,EAAa,CAAE,GAAI,MAAO,IAAArzD,EAAK,MAAO,IAAI,CAAE,EAEjDoE,EAAM,MAAOpE,GAAQ,CACvB,gBAAiBsI,KAAS4rC,EAAI,WAAY,CACtC,KAAM,CAAE,GAAAgd,GAAI,IAAKzmC,GAAG,MAAA50B,EAAO,EAAGyS,EAAM,QACpC,GAAI4oD,KAAO,OAASzmC,KAAMzqB,EACtB,OAAOnK,GAEN,GAAIq7D,KAAO,OAASzmC,KAAMzqB,EAC3B,MAEP,CAET,EACU+mD,EAAW,gBAAiB,CAAE,OAAAp2B,CAAM,EAAM,GAAI,CAChD,MAAM9nB,EAAO,GACPmzB,GAAY,GAClB,IAAIiU,GAAQ,EACZ,gBAAiB3nC,MAAS4rC,EAAI,WAAY,CACtC,KAAM,CAAE,GAAAgd,GAAI,IAAAlxD,EAAK,MAAAnK,CAAK,EAAKyS,GAAM,QACjC,GAAI,CAACtI,EACD,OACJ,GAAIkxD,KAAO,OAAS,CAACroD,EAAK7I,CAAG,EAAG,CAC5B6I,EAAK7I,CAAG,EAAI,GACZ,MAAM+iI,EAAWltI,EACXkoD,EAAOz1C,GAAM,KACb+qB,GAAW2I,GAAUh8B,CAAG,IAAM,OAC9Bg8B,GAAUh8B,CAAG,EACb+iI,EAAS,WAAa,OAClBA,EAAS,SACT,EACV/mG,GAAUh8B,CAAG,EAAIqzB,GACjB4c,KACA,KAAM,CAAE,IAAAjwC,EAAK,MAAO+iI,EAAS,MAAO,SAAA1vG,GAAU,KAAA0qB,EACjD,MACQmT,KAAO,QAAU,CAACroD,EAAK7I,CAAG,EAC/Bg8B,GAAUh8B,CAAG,EAAInK,EAEZq7D,KAAO,OAAS,CAACroD,EAAK7I,CAAG,IAC9B6I,EAAK7I,CAAG,EAAI,IAEhB,GAAI2wB,IAAW,QAAasf,IAAStf,EACjC,KAEP,CACT,EAcI,MAAO,CACH,GAAG8iC,EACX,KAAQj1D,OACA,IAAAioD,EACA,IAAKA,EACL,IAAAkN,EACA,KAAAl3C,EACA,IAAArY,EACA,SAAA2iD,EACA,IAtBQ,SAAY,CACpB,MAAMh+C,EAAS,GACf,gBAAiBT,KAASy+C,IACtBh+C,EAAO,QAAQT,CAAK,EAExB,OAAOS,EACF,KAAK,CAACvQ,EAAGhB,KAAMgB,EAAE,SAAWhB,GAAE,SAAW,EAAIgB,EAAE,WAAahB,GAAE,SAAW,EAAI,EAAE,EAC/E,IAAKzE,IAAO,CACb,IAAKA,EAAE,IACP,MAAOA,EAAE,MACT,KAAMA,EAAE,IACX,EAAC,CACV,CAWA,CACA,EACA,gBAAgB,KAAOyL,OCnGhB,MAAM,wBAA0B,IAAM,gBAAgB,eAAe,2GCD5E,OAAO,eAAcxI,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,WAAqBA,EAA2B,iBAAAA,EAAA,YAAsBA,EAAwB,cAAAA,EAAA,UAAoBA,YAAoBA,EAAqB,WAAAA,EAAA,IAAcA,EAAY,EAAAA,EAAA,IAAcA,QAAgBA,EAAe,KAAAA,EAAA,WAAqBA,EAAsB,mBAE7Q,MAAMgtI,CAAY,CACjB,CACDhtI,EAAA,YAAsBgtI,EACtBhtI,EAAA,WAAqB,wBACrB,MAAM44G,UAAao0B,CAAY,CAC3B,YAAYptI,EAAG,CAEX,GADA,QACI,CAACI,EAAQ,WAAW,KAAKJ,CAAC,EAC1B,MAAM,IAAI,MAAM,0CAA0C,EAC9D,KAAK,IAAMA,CACd,CACD,UAAW,CACP,OAAO,KAAK,GACf,CACD,UAAW,CACP,MAAO,EACV,CACD,IAAI,OAAQ,CACR,MAAO,CAAE,CAAC,KAAK,GAAG,EAAG,CAAC,CACzB,CACJ,CACDI,EAAA,KAAe44G,EACf,MAAMq0B,UAAcD,CAAY,CAC5B,YAAYhvI,EAAM,CACd,QACA,KAAK,OAAS,OAAOA,GAAS,SAAW,CAACA,CAAI,EAAIA,CACrD,CACD,UAAW,CACP,OAAO,KAAK,GACf,CACD,UAAW,CACP,GAAI,KAAK,OAAO,OAAS,EACrB,MAAO,GACX,MAAMqN,EAAO,KAAK,OAAO,CAAC,EAC1B,OAAOA,IAAS,IAAMA,IAAS,IAClC,CACD,IAAI,KAAM,CACN,IAAIQ,EACJ,OAASA,EAAK,KAAK,QAAU,MAAQA,IAAO,OAASA,EAAM,KAAK,KAAO,KAAK,OAAO,OAAO,CAACjM,EAAGE,IAAM,GAAGF,CAAC,GAAGE,CAAC,GAAI,EAAE,CACrH,CACD,IAAI,OAAQ,CACR,IAAI+L,EACJ,OAASA,EAAK,KAAK,UAAY,MAAQA,IAAO,OAASA,EAAM,KAAK,OAAS,KAAK,OAAO,OAAO,CAAC2sC,EAAO14C,KAC9FA,aAAa84G,IACbpgE,EAAM14C,EAAE,GAAG,GAAK04C,EAAM14C,EAAE,GAAG,GAAK,GAAK,GAClC04C,GACR,EAAE,CACR,CACJ,CACDx4C,EAAA,MAAgBitI,EAChBjtI,EAAA,IAAc,IAAIitI,EAAM,EAAE,EAC1B,SAASjiI,EAAEkiI,KAAS5vI,EAAM,CACtB,MAAMU,EAAO,CAACkvI,EAAK,CAAC,CAAC,EACrB,IAAI3vI,EAAI,EACR,KAAOA,EAAID,EAAK,QACZ6vI,EAAWnvI,EAAMV,EAAKC,CAAC,CAAC,EACxBS,EAAK,KAAKkvI,EAAK,EAAE3vI,CAAC,CAAC,EAEvB,OAAO,IAAI0vI,EAAMjvI,CAAI,CACxB,CACDgC,EAAA,EAAYgL,EACZ,MAAMoiI,EAAO,IAAIH,EAAM,GAAG,EAC1B,SAASxpI,EAAIypI,KAAS5vI,EAAM,CACxB,MAAM+vI,EAAO,CAACC,EAAcJ,EAAK,CAAC,CAAC,CAAC,EACpC,IAAI3vI,EAAI,EACR,KAAOA,EAAID,EAAK,QACZ+vI,EAAK,KAAKD,CAAI,EACdD,EAAWE,EAAM/vI,EAAKC,CAAC,CAAC,EACxB8vI,EAAK,KAAKD,EAAME,EAAcJ,EAAK,EAAE3vI,CAAC,CAAC,CAAC,EAE5C,OAAAgwI,EAASF,CAAI,EACN,IAAIJ,EAAMI,CAAI,CACxB,CACDrtI,EAAA,IAAcyD,EACd,SAAS0pI,EAAWnvI,EAAM+C,EAAK,CACvBA,aAAeksI,EACfjvI,EAAK,KAAK,GAAG+C,EAAI,MAAM,EAClBA,aAAe63G,EACpB56G,EAAK,KAAK+C,CAAG,EAEb/C,EAAK,KAAKwvI,EAAYzsI,CAAG,CAAC,CACjC,CACDf,EAAA,WAAqBmtI,EACrB,SAASI,EAASF,EAAM,CACpB,IAAI9vI,EAAI,EACR,KAAOA,EAAI8vI,EAAK,OAAS,GAAG,CACxB,GAAIA,EAAK9vI,CAAC,IAAM6vI,EAAM,CAClB,MAAM/nI,EAAMooI,EAAeJ,EAAK9vI,EAAI,CAAC,EAAG8vI,EAAK9vI,EAAI,CAAC,CAAC,EACnD,GAAI8H,IAAQ,OAAW,CACnBgoI,EAAK,OAAO9vI,EAAI,EAAG,EAAG8H,CAAG,EACzB,QACH,CACDgoI,EAAK9vI,GAAG,EAAI,GACf,CACDA,GACH,CACJ,CACD,SAASkwI,EAAejrI,EAAGhB,EAAG,CAC1B,GAAIA,IAAM,KACN,OAAOgB,EACX,GAAIA,IAAM,KACN,OAAOhB,EACX,GAAI,OAAOgB,GAAK,SACZ,OAAIhB,aAAao3G,GAAQp2G,EAAEA,EAAE,OAAS,CAAC,IAAM,IACzC,OACA,OAAOhB,GAAK,SACL,GAAGgB,EAAE,MAAM,EAAG,EAAE,CAAC,GAAGhB,CAAC,IAC5BA,EAAE,CAAC,IAAM,IACFgB,EAAE,MAAM,EAAG,EAAE,EAAIhB,EAAE,MAAM,CAAC,EACrC,OAEJ,GAAI,OAAOA,GAAK,UAAYA,EAAE,CAAC,IAAM,KAAO,EAAEgB,aAAao2G,GACvD,MAAO,IAAIp2G,CAAC,GAAGhB,EAAE,MAAM,CAAC,CAAC,EAEhC,CACD,SAASksI,EAAU1oH,EAAIE,EAAI,CACvB,OAAOA,EAAG,SAAQ,EAAKF,EAAKA,EAAG,SAAQ,EAAKE,EAAKzhB,IAAOuhB,CAAE,GAAGE,CAAE,EAClE,CACDllB,EAAA,UAAoB0tI,EAEpB,SAASF,EAAYzwI,EAAG,CACpB,OAAO,OAAOA,GAAK,UAAY,OAAOA,GAAK,WAAaA,IAAM,KACxDA,EACAuwI,EAAc,MAAM,QAAQvwI,CAAC,EAAIA,EAAE,KAAK,GAAG,EAAIA,CAAC,CACzD,CACD,SAAS4wI,EAAU5wI,EAAG,CAClB,OAAO,IAAIkwI,EAAMK,EAAcvwI,CAAC,CAAC,CACpC,CACDiD,EAAA,UAAoB2tI,EACpB,SAASL,EAAcvwI,EAAG,CACtB,OAAO,KAAK,UAAUA,CAAC,EAClB,QAAQ,UAAW,SAAS,EAC5B,QAAQ,UAAW,SAAS,CACpC,CACDiD,EAAA,cAAwBstI,EACxB,SAASM,EAAY5jI,EAAK,CACtB,OAAO,OAAOA,GAAO,UAAYhK,EAAQ,WAAW,KAAKgK,CAAG,EAAI,IAAIijI,EAAM,IAAIjjI,CAAG,EAAE,EAAIgB,KAAMhB,CAAG,GACnG,CACDhK,EAAA,YAAsB4tI,EAEtB,SAASC,EAAiB7jI,EAAK,CAC3B,GAAI,OAAOA,GAAO,UAAYhK,EAAQ,WAAW,KAAKgK,CAAG,EACrD,OAAO,IAAIijI,EAAM,GAAGjjI,CAAG,EAAE,EAE7B,MAAM,IAAI,MAAM,iCAAiCA,CAAG,iCAAiC,CACxF,CACDhK,EAAA,iBAA2B6tI,EAC3B,SAASC,EAAWlwC,EAAI,CACpB,OAAO,IAAIqvC,EAAMrvC,EAAG,SAAU,EACjC,CACD59F,EAAA,WAAqB8tI,sCCzJrB,OAAO,eAAc9tI,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,WAAqBA,iBAAyBA,EAAgB,MAAAA,EAAA,SAAmBA,EAAyB,sBAC1G,MAAM+tI,EAASnwF,OACf,MAAMowF,UAAmB,KAAM,CAC3B,YAAYtwI,EAAM,CACd,MAAM,uBAAuBA,CAAI,cAAc,EAC/C,KAAK,MAAQA,EAAK,KACrB,CACJ,CACD,IAAIuwI,GACH,SAAUA,EAAgB,CACvBA,EAAeA,EAAe,QAAa,CAAC,EAAI,UAChDA,EAAeA,EAAe,UAAe,CAAC,EAAI,cACnDA,IAAmBjuI,EAAA,eAAyBiuI,EAAiB,GAAG,EACnEjuI,EAAmB,UACf,MAAO,IAAI+tI,EAAO,KAAK,OAAO,EAC9B,IAAK,IAAIA,EAAO,KAAK,KAAK,EAC1B,IAAK,IAAIA,EAAO,KAAK,KAAK,CAC9B,EACA,MAAMG,CAAM,CACR,YAAY,CAAE,SAAAC,EAAU,OAAA12H,CAAM,EAAK,GAAI,CACnC,KAAK,OAAS,GACd,KAAK,UAAY02H,EACjB,KAAK,QAAU12H,CAClB,CACD,OAAO22H,EAAc,CACjB,OAAOA,aAAwBL,EAAO,KAAOK,EAAe,KAAK,KAAKA,CAAY,CACrF,CACD,KAAKz4G,EAAQ,CACT,OAAO,IAAIo4G,EAAO,KAAK,KAAK,SAASp4G,CAAM,CAAC,CAC/C,CACD,SAASA,EAAQ,CACb,MAAM04G,EAAK,KAAK,OAAO14G,CAAM,GAAK,KAAK,WAAWA,CAAM,EACxD,MAAO,GAAGA,CAAM,GAAG04G,EAAG,OAAO,EAChC,CACD,WAAW14G,EAAQ,CACf,IAAI9pB,EAAIkG,EACR,GAAM,GAAAA,GAAMlG,EAAK,KAAK,WAAa,MAAQA,IAAO,OAAS,OAASA,EAAG,aAAe,MAAQkG,IAAO,SAAkBA,EAAG,IAAI4jB,CAAM,GAAO,KAAK,WAAa,CAAC,KAAK,UAAU,IAAIA,CAAM,EACnL,MAAM,IAAI,MAAM,oBAAoBA,CAAM,gCAAgC,EAE9E,OAAQ,KAAK,OAAOA,CAAM,EAAI,CAAE,OAAAA,EAAQ,MAAO,EAClD,CACJ,CACD31B,EAAA,MAAgBkuI,EAChB,MAAMI,UAAuBP,EAAO,IAAK,CACrC,YAAYp4G,EAAQ44G,EAAS,CACzB,MAAMA,CAAO,EACb,KAAK,OAAS54G,CACjB,CACD,SAAS91B,EAAO,CAAE,SAAA20B,EAAU,UAAAmX,CAAS,EAAI,CACrC,KAAK,MAAQ9rC,EACb,KAAK,aAAgBkuI,EAAO,MAAO,IAAIA,EAAO,KAAKv5G,CAAQ,CAAC,IAAImX,CAAS,GAC5E,CACJ,CACD3rC,EAAA,eAAyBsuI,EACzB,MAAM3pG,KAAWopG,EAAO,OACxB,MAAMS,UAAmBN,CAAM,CAC3B,YAAY/wF,EAAM,CACd,MAAMA,CAAI,EACV,KAAK,QAAU,GACf,KAAK,OAASA,EAAK,MACnB,KAAK,KAAO,CAAE,GAAGA,EAAM,GAAIA,EAAK,MAAQxY,EAAOopG,EAAO,IACzD,CACD,KAAM,CACF,OAAO,KAAK,MACf,CACD,KAAKp4G,EAAQ,CACT,OAAO,IAAI24G,EAAe34G,EAAQ,KAAK,SAASA,CAAM,CAAC,CAC1D,CACD,MAAMy4G,EAAcvuI,EAAO,CACvB,IAAIgM,EACJ,GAAIhM,EAAM,MAAQ,OACd,MAAM,IAAI,MAAM,sCAAsC,EAC1D,MAAMnC,EAAO,KAAK,OAAO0wI,CAAY,EAC/B,CAAE,OAAAz4G,CAAQ,EAAGj4B,EACb+wI,GAAY5iI,EAAKhM,EAAM,OAAS,MAAQgM,IAAO,OAASA,EAAKhM,EAAM,IACzE,IAAI6uI,EAAK,KAAK,QAAQ/4G,CAAM,EAC5B,GAAI+4G,EAAI,CACJ,MAAMC,EAAQD,EAAG,IAAID,CAAQ,EAC7B,GAAIE,EACA,OAAOA,CACd,MAEGD,EAAK,KAAK,QAAQ/4G,CAAM,EAAI,IAAI,IAEpC+4G,EAAG,IAAID,EAAU/wI,CAAI,EACrB,MAAMkC,EAAI,KAAK,OAAO+1B,CAAM,IAAM,KAAK,OAAOA,CAAM,EAAI,IAClDgW,EAAY/rC,EAAE,OACpB,OAAAA,EAAE+rC,CAAS,EAAI9rC,EAAM,IACrBnC,EAAK,SAASmC,EAAO,CAAE,SAAU81B,EAAQ,UAAAgW,CAAS,CAAE,EAC7CjuC,CACV,CACD,SAASi4B,EAAQi5G,EAAU,CACvB,MAAMF,EAAK,KAAK,QAAQ/4G,CAAM,EAC9B,GAAK+4G,EAEL,OAAOA,EAAG,IAAIE,CAAQ,CACzB,CACD,UAAUC,EAAW97H,EAAS,KAAK,QAAS,CACxC,OAAO,KAAK,cAAcA,EAASrV,GAAS,CACxC,GAAIA,EAAK,YAAc,OACnB,MAAM,IAAI,MAAM,kBAAkBA,CAAI,gBAAgB,EAC1D,SAAWqwI,EAAO,KAAMc,CAAS,GAAGnxI,EAAK,SAAS,EAC9D,CAAS,CACJ,CACD,UAAUqV,EAAS,KAAK,QAAS+7H,EAAYC,EAAS,CAClD,OAAO,KAAK,cAAch8H,EAASrV,GAAS,CACxC,GAAIA,EAAK,QAAU,OACf,MAAM,IAAI,MAAM,kBAAkBA,CAAI,gBAAgB,EAC1D,OAAOA,EAAK,MAAM,IAC9B,EAAWoxI,EAAYC,CAAO,CACzB,CACD,cAAch8H,EAAQi8H,EAAWF,EAAa,GAAIC,EAAS,CACvD,IAAI/wI,EAAO+vI,EAAO,IAClB,UAAWp4G,KAAU5iB,EAAQ,CACzB,MAAM27H,EAAK37H,EAAO4iB,CAAM,EACxB,GAAI,CAAC+4G,EACD,SACJ,MAAMO,EAAWH,EAAWn5G,CAAM,EAAIm5G,EAAWn5G,CAAM,GAAK,IAAI,IAChE+4G,EAAG,QAAShxI,GAAS,CACjB,GAAIuxI,EAAQ,IAAIvxI,CAAI,EAChB,OACJuxI,EAAQ,IAAIvxI,EAAMuwI,EAAe,OAAO,EACxC,IAAInuI,EAAIkvI,EAAUtxI,CAAI,EACtB,GAAIoC,EAAG,CACH,MAAMqL,EAAM,KAAK,KAAK,IAAMnL,EAAQ,SAAS,IAAMA,EAAQ,SAAS,MACpEhC,KAAW+vI,EAAO,KAAM/vI,CAAI,GAAGmN,CAAG,IAAIzN,CAAI,MAAMoC,CAAC,IAAI,KAAK,KAAK,EAAE,EACpE,SACSA,EAAsDivI,IAAQrxI,CAAI,EACxEM,KAAW+vI,EAAO,KAAM/vI,CAAI,GAAG8B,CAAC,GAAG,KAAK,KAAK,EAAE,OAG/C,OAAM,IAAIkuI,EAAWtwI,CAAI,EAE7BuxI,EAAQ,IAAIvxI,EAAMuwI,EAAe,SAAS,CAC1D,CAAa,CACJ,CACD,OAAOjwI,CACV,CACJ,CACDgC,EAAA,WAAqBwuI,wBC5IrB,OAAO,eAAcxuI,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,GAAaA,MAAcA,EAAc,IAAAA,EAAA,QAAkBA,YAAoBA,EAAmB,SAAAA,EAAA,eAAyBA,aAAqBA,EAAgB,MAAAA,EAAA,KAAeA,EAAqB,WAAAA,EAAA,UAAoBA,cAAsBA,EAAc,IAAAA,EAAA,UAAoBA,MAAcA,EAAY,SAC1S,MAAM+tI,EAASnwF,OACTsxF,EAAU/uF,MAChB,IAAIgvF,EAASvxF,OACb,OAAO,eAAe59C,EAAS,IAAK,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOmvI,EAAO,CAAE,CAAI,GAC/F,OAAO,eAAenvI,EAAS,MAAO,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOmvI,EAAO,GAAI,CAAI,GACnG,OAAO,eAAenvI,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOmvI,EAAO,SAAU,CAAI,GAC/G,OAAO,eAAenvI,EAAS,MAAO,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOmvI,EAAO,GAAI,CAAI,GACnG,OAAO,eAAenvI,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOmvI,EAAO,WAAY,CAAI,GACnH,OAAO,eAAenvI,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOmvI,EAAO,SAAU,CAAI,GAC/G,OAAO,eAAenvI,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOmvI,EAAO,UAAW,CAAI,GACjH,OAAO,eAAenvI,EAAS,OAAQ,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOmvI,EAAO,IAAK,CAAI,GACrG,IAAIC,EAAUjvF,MACd,OAAO,eAAengD,EAAS,QAAS,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOovI,EAAQ,KAAM,CAAI,GACxG,OAAO,eAAepvI,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOovI,EAAQ,UAAW,CAAI,GAClH,OAAO,eAAepvI,EAAS,iBAAkB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOovI,EAAQ,cAAe,CAAI,GAC1H,OAAO,eAAepvI,EAAS,WAAY,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOovI,EAAQ,QAAS,CAAI,GAC9GpvI,EAAoB,WAChB,GAAI,IAAI+tI,EAAO,MAAM,GAAG,EACxB,IAAK,IAAIA,EAAO,MAAM,IAAI,EAC1B,GAAI,IAAIA,EAAO,MAAM,GAAG,EACxB,IAAK,IAAIA,EAAO,MAAM,IAAI,EAC1B,GAAI,IAAIA,EAAO,MAAM,KAAK,EAC1B,IAAK,IAAIA,EAAO,MAAM,KAAK,EAC3B,IAAK,IAAIA,EAAO,MAAM,GAAG,EACzB,GAAI,IAAIA,EAAO,MAAM,IAAI,EACzB,IAAK,IAAIA,EAAO,MAAM,IAAI,EAC1B,IAAK,IAAIA,EAAO,MAAM,GAAG,CAC7B,EACA,MAAMr4B,CAAK,CACP,eAAgB,CACZ,OAAO,IACV,CACD,cAAc25B,GAAQC,GAAY,CAC9B,OAAO,IACV,CACJ,CACD,MAAMC,UAAY75B,CAAK,CACnB,YAAY85B,GAAS9xI,GAAMorG,GAAK,CAC5B,QACA,KAAK,QAAU0mC,GACf,KAAK,KAAO9xI,GACZ,KAAK,IAAMorG,EACd,CACD,OAAO,CAAE,IAAA2mC,GAAK,GAAAC,IAAM,CAChB,MAAMF,GAAUC,GAAMP,EAAQ,SAAS,IAAM,KAAK,QAC5CpmC,GAAM,KAAK,MAAQ,OAAY,GAAK,MAAM,KAAK,GAAG,GACxD,MAAO,GAAG0mC,EAAO,IAAI,KAAK,IAAI,GAAG1mC,EAAG,IAAM4mC,EAC7C,CACD,cAAcl3F,GAAO9uC,GAAW,CAC5B,GAAK8uC,GAAM,KAAK,KAAK,GAAG,EAExB,OAAI,KAAK,MACL,KAAK,IAAMm3F,EAAa,KAAK,IAAKn3F,GAAO9uC,EAAS,GAC/C,IACV,CACD,IAAI,OAAQ,CACR,OAAO,KAAK,eAAeqkI,EAAO,YAAc,KAAK,IAAI,MAAQ,EACpE,CACJ,CACD,MAAM6B,UAAel6B,CAAK,CACtB,YAAYtJ,GAAKtD,GAAK+mC,GAAa,CAC/B,QACA,KAAK,IAAMzjC,GACX,KAAK,IAAMtD,GACX,KAAK,YAAc+mC,EACtB,CACD,OAAO,CAAE,GAAAH,IAAM,CACX,MAAO,GAAG,KAAK,GAAG,MAAM,KAAK,GAAG,IAAMA,EACzC,CACD,cAAcl3F,GAAO9uC,GAAW,CAC5B,GAAI,OAAK,eAAeqkI,EAAO,MAAQ,CAACv1F,GAAM,KAAK,IAAI,GAAG,GAAK,CAAC,KAAK,aAErE,YAAK,IAAMm3F,EAAa,KAAK,IAAKn3F,GAAO9uC,EAAS,EAC3C,IACV,CACD,IAAI,OAAQ,CACR,MAAM8uC,GAAQ,KAAK,eAAeu1F,EAAO,KAAO,CAAE,EAAG,CAAE,GAAG,KAAK,IAAI,KAAK,EACxE,OAAO+B,EAAat3F,GAAO,KAAK,GAAG,CACtC,CACJ,CACD,MAAMu3F,UAAiBH,CAAO,CAC1B,YAAYxjC,GAAKlxC,GAAI4tC,GAAK+mC,GAAa,CACnC,MAAMzjC,GAAKtD,GAAK+mC,EAAW,EAC3B,KAAK,GAAK30E,EACb,CACD,OAAO,CAAE,GAAAw0E,IAAM,CACX,MAAO,GAAG,KAAK,GAAG,IAAI,KAAK,EAAE,KAAK,KAAK,GAAG,IAAMA,EACnD,CACJ,CACD,MAAMM,UAAct6B,CAAK,CACrB,YAAYgC,GAAO,CACf,QACA,KAAK,MAAQA,GACb,KAAK,MAAQ,EAChB,CACD,OAAO,CAAE,GAAAg4B,IAAM,CACX,MAAO,GAAG,KAAK,KAAK,IAAMA,EAC7B,CACJ,CACD,MAAMO,UAAcv6B,CAAK,CACrB,YAAYgC,GAAO,CACf,QACA,KAAK,MAAQA,GACb,KAAK,MAAQ,EAChB,CACD,OAAO,CAAE,GAAAg4B,IAAM,CAEX,MAAO,QADO,KAAK,MAAQ,IAAI,KAAK,KAAK,GAAK,EAC1B,IAAMA,EAC7B,CACJ,CACD,MAAMQ,UAAcx6B,CAAK,CACrB,YAAY57D,GAAO,CACf,QACA,KAAK,MAAQA,EAChB,CACD,OAAO,CAAE,GAAA41F,IAAM,CACX,MAAO,SAAS,KAAK,KAAK,IAAMA,EACnC,CACD,IAAI,OAAQ,CACR,OAAO,KAAK,MAAM,KACrB,CACJ,CACD,MAAMS,UAAgBz6B,CAAK,CACvB,YAAY13G,GAAM,CACd,QACA,KAAK,KAAOA,EACf,CACD,OAAO,CAAE,GAAA0xI,IAAM,CACX,MAAO,GAAG,KAAK,IAAI,IAAMA,EAC5B,CACD,eAAgB,CACZ,MAAO,GAAG,KAAK,IAAI,GAAK,KAAO,MAClC,CACD,cAAcl3F,GAAO9uC,GAAW,CAC5B,YAAK,KAAOimI,EAAa,KAAK,KAAMn3F,GAAO9uC,EAAS,EAC7C,IACV,CACD,IAAI,OAAQ,CACR,OAAO,KAAK,gBAAgBqkI,EAAO,YAAc,KAAK,KAAK,MAAQ,EACtE,CACJ,CACD,MAAMqC,UAAmB16B,CAAK,CAC1B,YAAY3/E,GAAQ,GAAI,CACpB,QACA,KAAK,MAAQA,EAChB,CACD,OAAOonB,GAAM,CACT,OAAO,KAAK,MAAM,OAAO,CAACn/C,GAAMwF,KAAMxF,GAAOwF,GAAE,OAAO25C,EAAI,EAAG,EAAE,CAClE,CACD,eAAgB,CACZ,KAAM,CAAE,MAAApnB,EAAO,EAAG,KAClB,IAAIx4B,GAAIw4B,GAAM,OACd,KAAOx4B,MAAK,CACR,MAAMiG,GAAIuyB,GAAMx4B,EAAC,EAAE,cAAa,EAC5B,MAAM,QAAQiG,EAAC,EACfuyB,GAAM,OAAOx4B,GAAG,EAAG,GAAGiG,EAAC,EAClBA,GACLuyB,GAAMx4B,EAAC,EAAIiG,GAEXuyB,GAAM,OAAOx4B,GAAG,CAAC,CACxB,CACD,OAAOw4B,GAAM,OAAS,EAAI,KAAO,MACpC,CACD,cAAcyiB,GAAO9uC,GAAW,CAC5B,KAAM,CAAE,MAAAqsB,EAAO,EAAG,KAClB,IAAIx4B,GAAIw4B,GAAM,OACd,KAAOx4B,MAAK,CAER,MAAMiG,GAAIuyB,GAAMx4B,EAAC,EACbiG,GAAE,cAAcg1C,GAAO9uC,EAAS,IAEpC2mI,EAAc73F,GAAOh1C,GAAE,KAAK,EAC5BuyB,GAAM,OAAOx4B,GAAG,CAAC,EACpB,CACD,OAAOw4B,GAAM,OAAS,EAAI,KAAO,MACpC,CACD,IAAI,OAAQ,CACR,OAAO,KAAK,MAAM,OAAO,CAACyiB,GAAOh1C,KAAM8sI,EAAS93F,GAAOh1C,GAAE,KAAK,EAAG,CAAE,EACtE,CACJ,CACD,MAAM+sI,UAAkBH,CAAW,CAC/B,OAAOjzF,GAAM,CACT,MAAO,IAAMA,GAAK,GAAK,MAAM,OAAOA,EAAI,EAAI,IAAMA,GAAK,EAC1D,CACJ,CACD,MAAMqzF,UAAaJ,CAAW,CAC7B,CACD,MAAMK,UAAaF,CAAU,CAC5B,CACDE,EAAK,KAAO,OACZ,MAAMC,UAAWH,CAAU,CACvB,YAAY/5G,GAAWT,GAAO,CAC1B,MAAMA,EAAK,EACX,KAAK,UAAYS,EACpB,CACD,OAAO2mB,GAAM,CACT,IAAIn/C,GAAO,MAAM,KAAK,SAAS,IAAM,MAAM,OAAOm/C,EAAI,EACtD,OAAI,KAAK,OACLn/C,IAAQ,QAAU,KAAK,KAAK,OAAOm/C,EAAI,GACpCn/C,EACV,CACD,eAAgB,CACZ,MAAM,cAAa,EACnB,MAAM2yI,GAAO,KAAK,UAClB,GAAIA,KAAS,GACT,OAAO,KAAK,MAChB,IAAItxI,GAAI,KAAK,KACb,GAAIA,GAAG,CACH,MAAMuxI,GAAKvxI,GAAE,gBACbA,GAAI,KAAK,KAAO,MAAM,QAAQuxI,EAAE,EAAI,IAAIH,EAAKG,EAAE,EAAIA,EACtD,CACD,GAAIvxI,GACA,OAAIsxI,KAAS,GACFtxI,cAAaqxI,EAAKrxI,GAAIA,GAAE,MAC/B,KAAK,MAAM,OACJ,KACJ,IAAIqxI,EAAGG,GAAIF,EAAI,EAAGtxI,cAAaqxI,EAAK,CAACrxI,EAAC,EAAIA,GAAE,KAAK,EAE5D,GAAI,EAAAsxI,KAAS,IAAS,CAAC,KAAK,MAAM,QAElC,OAAO,IACV,CACD,cAAcn4F,GAAO9uC,GAAW,CAC5B,IAAImC,GAEJ,GADA,KAAK,MAAQA,GAAK,KAAK,QAAU,MAAQA,KAAO,OAAS,OAASA,GAAG,cAAc2sC,GAAO9uC,EAAS,EAC/F,GAAE,MAAM,cAAc8uC,GAAO9uC,EAAS,GAAK,KAAK,MAEpD,YAAK,UAAYimI,EAAa,KAAK,UAAWn3F,GAAO9uC,EAAS,EACvD,IACV,CACD,IAAI,OAAQ,CACR,MAAM8uC,GAAQ,MAAM,MACpB,OAAAs3F,EAAat3F,GAAO,KAAK,SAAS,EAC9B,KAAK,MACL83F,EAAS93F,GAAO,KAAK,KAAK,KAAK,EAC5BA,EACV,CACJ,CACDk4F,EAAG,KAAO,KACV,MAAMI,UAAYP,CAAU,CAC3B,CACDO,EAAI,KAAO,MACX,MAAMC,UAAgBD,CAAI,CACtB,YAAYE,GAAW,CACnB,QACA,KAAK,UAAYA,EACpB,CACD,OAAO7zF,GAAM,CACT,MAAO,OAAO,KAAK,SAAS,IAAM,MAAM,OAAOA,EAAI,CACtD,CACD,cAAc3E,GAAO9uC,GAAW,CAC5B,GAAK,MAAM,cAAc8uC,GAAO9uC,EAAS,EAEzC,YAAK,UAAYimI,EAAa,KAAK,UAAWn3F,GAAO9uC,EAAS,EACvD,IACV,CACD,IAAI,OAAQ,CACR,OAAO4mI,EAAS,MAAM,MAAO,KAAK,UAAU,KAAK,CACpD,CACJ,CACD,MAAMW,UAAiBH,CAAI,CACvB,YAAYtB,GAAS9xI,GAAMwD,GAAMib,GAAI,CACjC,QACA,KAAK,QAAUqzH,GACf,KAAK,KAAO9xI,GACZ,KAAK,KAAOwD,GACZ,KAAK,GAAKib,EACb,CACD,OAAOghC,GAAM,CACT,MAAMqyF,GAAUryF,GAAK,IAAM+xF,EAAQ,SAAS,IAAM,KAAK,QACjD,CAAE,KAAAxxI,GAAM,KAAAwD,GAAM,GAAAib,EAAE,EAAK,KAC3B,MAAO,OAAOqzH,EAAO,IAAI9xI,EAAI,IAAIwD,EAAI,KAAKxD,EAAI,IAAIye,EAAE,KAAKze,EAAI,MAAQ,MAAM,OAAOy/C,EAAI,CACzF,CACD,IAAI,OAAQ,CACR,MAAM3E,GAAQs3F,EAAa,MAAM,MAAO,KAAK,IAAI,EACjD,OAAOA,EAAat3F,GAAO,KAAK,EAAE,CACrC,CACJ,CACD,MAAM04F,UAAgBJ,CAAI,CACtB,YAAYj0E,GAAM2yE,GAAS9xI,GAAMomF,GAAU,CACvC,QACA,KAAK,KAAOjnB,GACZ,KAAK,QAAU2yE,GACf,KAAK,KAAO9xI,GACZ,KAAK,SAAWomF,EACnB,CACD,OAAO3mC,GAAM,CACT,MAAO,OAAO,KAAK,OAAO,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,QAAQ,IAAM,MAAM,OAAOA,EAAI,CAC/F,CACD,cAAc3E,GAAO9uC,GAAW,CAC5B,GAAK,MAAM,cAAc8uC,GAAO9uC,EAAS,EAEzC,YAAK,SAAWimI,EAAa,KAAK,SAAUn3F,GAAO9uC,EAAS,EACrD,IACV,CACD,IAAI,OAAQ,CACR,OAAO4mI,EAAS,MAAM,MAAO,KAAK,SAAS,KAAK,CACnD,CACJ,CACD,MAAMa,UAAaZ,CAAU,CACzB,YAAY7yI,GAAMJ,GAAM8zI,GAAO,CAC3B,QACA,KAAK,KAAO1zI,GACZ,KAAK,KAAOJ,GACZ,KAAK,MAAQ8zI,EAChB,CACD,OAAOj0F,GAAM,CAET,MAAO,GADQ,KAAK,MAAQ,SAAW,EACvB,YAAY,KAAK,IAAI,IAAI,KAAK,IAAI,IAAM,MAAM,OAAOA,EAAI,CAC5E,CACJ,CACDg0F,EAAK,KAAO,OACZ,MAAME,UAAejB,CAAW,CAC5B,OAAOjzF,GAAM,CACT,MAAO,UAAY,MAAM,OAAOA,EAAI,CACvC,CACJ,CACDk0F,EAAO,KAAO,SACd,MAAMC,WAAYf,CAAU,CACxB,OAAOpzF,GAAM,CACT,IAAIn/C,GAAO,MAAQ,MAAM,OAAOm/C,EAAI,EACpC,OAAI,KAAK,QACLn/C,IAAQ,KAAK,MAAM,OAAOm/C,EAAI,GAC9B,KAAK,UACLn/C,IAAQ,KAAK,QAAQ,OAAOm/C,EAAI,GAC7Bn/C,EACV,CACD,eAAgB,CACZ,IAAI6N,GAAIkG,GACR,aAAM,cAAa,GAClBlG,GAAK,KAAK,SAAW,MAAQA,KAAO,QAAkBA,GAAG,cAAa,GACtEkG,GAAK,KAAK,WAAa,MAAQA,KAAO,QAAkBA,GAAG,cAAa,EAClE,IACV,CACD,cAAcymC,GAAO9uC,GAAW,CAC5B,IAAImC,GAAIkG,GACR,aAAM,cAAcymC,GAAO9uC,EAAS,GACnCmC,GAAK,KAAK,SAAW,MAAQA,KAAO,QAAkBA,GAAG,cAAc2sC,GAAO9uC,EAAS,GACvFqI,GAAK,KAAK,WAAa,MAAQA,KAAO,QAAkBA,GAAG,cAAcymC,GAAO9uC,EAAS,EACnF,IACV,CACD,IAAI,OAAQ,CACR,MAAM8uC,GAAQ,MAAM,MACpB,OAAI,KAAK,OACL83F,EAAS93F,GAAO,KAAK,MAAM,KAAK,EAChC,KAAK,SACL83F,EAAS93F,GAAO,KAAK,QAAQ,KAAK,EAC/BA,EACV,CACJ,CACD,MAAM+4F,WAAchB,CAAU,CAC1B,YAAYz2F,GAAO,CACf,QACA,KAAK,MAAQA,EAChB,CACD,OAAOqD,GAAM,CACT,MAAO,SAAS,KAAK,KAAK,IAAM,MAAM,OAAOA,EAAI,CACpD,CACJ,CACDo0F,GAAM,KAAO,QACb,MAAMC,WAAgBjB,CAAU,CAC5B,OAAOpzF,GAAM,CACT,MAAO,UAAY,MAAM,OAAOA,EAAI,CACvC,CACJ,CACDq0F,GAAQ,KAAO,UACf,MAAMC,EAAQ,CACV,YAAYC,GAAUv0F,GAAO,GAAI,CAC7B,KAAK,QAAU,GACf,KAAK,aAAe,GACpB,KAAK,WAAa,GAClB,KAAK,KAAO,CAAE,GAAGA,GAAM,GAAIA,GAAK,MAAQ;AAAA,EAAO,IAC/C,KAAK,UAAYu0F,GACjB,KAAK,OAAS,IAAIxC,EAAQ,MAAM,CAAE,OAAQwC,EAAQ,CAAE,EACpD,KAAK,OAAS,CAAC,IAAIlB,CAAM,CAC5B,CACD,UAAW,CACP,OAAO,KAAK,MAAM,OAAO,KAAK,IAAI,CACrC,CAED,KAAK76G,GAAQ,CACT,OAAO,KAAK,OAAO,KAAKA,EAAM,CACjC,CAED,UAAUA,GAAQ,CACd,OAAO,KAAK,UAAU,KAAKA,EAAM,CACpC,CAED,WAAWg8G,GAAc9xI,GAAO,CAC5B,MAAMnC,GAAO,KAAK,UAAU,MAAMi0I,GAAc9xI,EAAK,EAErD,OADW,KAAK,QAAQnC,GAAK,MAAM,IAAM,KAAK,QAAQA,GAAK,MAAM,EAAI,IAAI,MACtE,IAAIA,EAAI,EACJA,EACV,CACD,cAAci4B,GAAQi5G,GAAU,CAC5B,OAAO,KAAK,UAAU,SAASj5G,GAAQi5G,EAAQ,CAClD,CAGD,UAAUC,GAAW,CACjB,OAAO,KAAK,UAAU,UAAUA,GAAW,KAAK,OAAO,CAC1D,CACD,WAAY,CACR,OAAO,KAAK,UAAU,UAAU,KAAK,OAAO,CAC/C,CACD,KAAKW,GAASpB,GAActlC,GAAK8oC,GAAU,CACvC,MAAMl0I,GAAO,KAAK,OAAO,OAAO0wI,EAAY,EAC5C,OAAItlC,KAAQ,QAAa8oC,KACrB,KAAK,WAAWl0I,GAAK,GAAG,EAAIorG,IAChC,KAAK,UAAU,IAAIymC,EAAIC,GAAS9xI,GAAMorG,EAAG,CAAC,EACnCprG,EACV,CAED,MAAM0wI,GAActlC,GAAK+oC,GAAW,CAChC,OAAO,KAAK,KAAK3C,EAAQ,SAAS,MAAOd,GAActlC,GAAK+oC,EAAS,CACxE,CAED,IAAIzD,GAActlC,GAAK+oC,GAAW,CAC9B,OAAO,KAAK,KAAK3C,EAAQ,SAAS,IAAKd,GAActlC,GAAK+oC,EAAS,CACtE,CAED,IAAIzD,GAActlC,GAAK+oC,GAAW,CAC9B,OAAO,KAAK,KAAK3C,EAAQ,SAAS,IAAKd,GAActlC,GAAK+oC,EAAS,CACtE,CAED,OAAOzlC,GAAKtD,GAAK+mC,GAAa,CAC1B,OAAO,KAAK,UAAU,IAAID,EAAOxjC,GAAKtD,GAAK+mC,EAAW,CAAC,CAC1D,CAED,IAAIzjC,GAAKtD,GAAK,CACV,OAAO,KAAK,UAAU,IAAIinC,EAAS3jC,GAAKpsG,EAAQ,UAAU,IAAK8oG,EAAG,CAAC,CACtE,CAED,KAAKhpG,GAAG,CACJ,OAAI,OAAOA,IAAK,WACZA,KACKA,KAAMiuI,EAAO,KAClB,KAAK,UAAU,IAAIoC,EAAQrwI,EAAC,CAAC,EAC1B,IACV,CAED,UAAUgyI,GAAW,CACjB,MAAM9zI,GAAO,CAAC,GAAG,EACjB,SAAW,CAACgM,GAAKnK,EAAK,IAAKiyI,GACnB9zI,GAAK,OAAS,GACdA,GAAK,KAAK,GAAG,EACjBA,GAAK,KAAKgM,EAAG,GACTA,KAAQnK,IAAS,KAAK,KAAK,OAC3B7B,GAAK,KAAK,GAAG,KACT+vI,EAAO,YAAY/vI,GAAM6B,EAAK,GAG1C,OAAA7B,GAAK,KAAK,GAAG,EACN,IAAI+vI,EAAO,MAAM/vI,EAAI,CAC/B,CAED,GAAGw4B,GAAWu7G,GAAUC,GAAU,CAE9B,GADA,KAAK,WAAW,IAAItB,EAAGl6G,EAAS,CAAC,EAC7Bu7G,IAAYC,GACZ,KAAK,KAAKD,EAAQ,EAAE,KAAM,EAAC,KAAKC,EAAQ,EAAE,gBAErCD,GACL,KAAK,KAAKA,EAAQ,EAAE,MAAK,UAEpBC,GACL,MAAM,IAAI,MAAM,0CAA0C,EAE9D,OAAO,IACV,CAED,OAAOx7G,GAAW,CACd,OAAO,KAAK,UAAU,IAAIk6G,EAAGl6G,EAAS,CAAC,CAC1C,CAED,MAAO,CACH,OAAO,KAAK,UAAU,IAAIi6G,CAAM,CACnC,CAED,OAAQ,CACJ,OAAO,KAAK,cAAcC,EAAID,CAAI,CACrC,CACD,KAAK3jH,GAAMmlH,GAAS,CAChB,YAAK,WAAWnlH,EAAI,EAChBmlH,IACA,KAAK,KAAKA,EAAO,EAAE,OAAM,EACtB,IACV,CAED,IAAIjB,GAAWiB,GAAS,CACpB,OAAO,KAAK,KAAK,IAAIlB,EAAQC,EAAS,EAAGiB,EAAO,CACnD,CAED,SAAS7D,GAAcltI,GAAMib,GAAI81H,GAASzC,GAAU,KAAK,KAAK,IAAMN,EAAQ,SAAS,IAAMA,EAAQ,SAAS,IAAK,CAC7G,MAAMxxI,GAAO,KAAK,OAAO,OAAO0wI,EAAY,EAC5C,OAAO,KAAK,KAAK,IAAI6C,EAASzB,GAAS9xI,GAAMwD,GAAMib,EAAE,EAAG,IAAM81H,GAAQv0I,EAAI,CAAC,CAC9E,CAED,MAAM0wI,GAActqD,GAAUmuD,GAASzC,GAAUN,EAAQ,SAAS,MAAO,CACrE,MAAMxxI,GAAO,KAAK,OAAO,OAAO0wI,EAAY,EAC5C,GAAI,KAAK,KAAK,IAAK,CACf,MAAM9vI,GAAMwlF,cAAoBiqD,EAAO,KAAOjqD,GAAW,KAAK,IAAI,OAAQA,EAAQ,EAClF,OAAO,KAAK,SAAS,KAAM,KAAOiqD,EAAO,KAAMzvI,EAAG,UAAYf,IAAM,CAChE,KAAK,IAAIG,MAAUqwI,EAAO,KAAMzvI,EAAG,IAAIf,EAAC,GAAG,EAC3C00I,GAAQv0I,EAAI,CAC5B,CAAa,CACJ,CACD,OAAO,KAAK,KAAK,IAAIwzI,EAAQ,KAAM1B,GAAS9xI,GAAMomF,EAAQ,EAAG,IAAMmuD,GAAQv0I,EAAI,CAAC,CACnF,CAGD,MAAM0wI,GAAc9rI,GAAK2vI,GAASzC,GAAU,KAAK,KAAK,IAAMN,EAAQ,SAAS,IAAMA,EAAQ,SAAS,MAAO,CACvG,GAAI,KAAK,KAAK,cACV,OAAO,KAAK,MAAMd,MAAkBL,EAAO,iBAAkBzrI,EAAG,IAAK2vI,EAAO,EAEhF,MAAMv0I,GAAO,KAAK,OAAO,OAAO0wI,EAAY,EAC5C,OAAO,KAAK,KAAK,IAAI8C,EAAQ,KAAM1B,GAAS9xI,GAAM4E,EAAG,EAAG,IAAM2vI,GAAQv0I,EAAI,CAAC,CAC9E,CAED,QAAS,CACL,OAAO,KAAK,cAAcozI,CAAG,CAChC,CAED,MAAMp5B,GAAO,CACT,OAAO,KAAK,UAAU,IAAIs4B,EAAMt4B,EAAK,CAAC,CACzC,CAED,MAAMA,GAAO,CACT,OAAO,KAAK,UAAU,IAAIu4B,EAAMv4B,EAAK,CAAC,CACzC,CAED,OAAO73G,GAAO,CACV,MAAMitB,GAAO,IAAIukH,EAGjB,GAFA,KAAK,WAAWvkH,EAAI,EACpB,KAAK,KAAKjtB,EAAK,EACXitB,GAAK,MAAM,SAAW,EACtB,MAAM,IAAI,MAAM,wCAAwC,EAC5D,OAAO,KAAK,cAAcukH,CAAM,CACnC,CAED,IAAIa,GAASC,GAAWC,GAAa,CACjC,GAAI,CAACD,IAAa,CAACC,GACf,MAAM,IAAI,MAAM,8CAA8C,EAClE,MAAMtlH,GAAO,IAAIwkH,GAGjB,GAFA,KAAK,WAAWxkH,EAAI,EACpB,KAAK,KAAKolH,EAAO,EACbC,GAAW,CACX,MAAMr4F,GAAQ,KAAK,KAAK,GAAG,EAC3B,KAAK,UAAYhtB,GAAK,MAAQ,IAAIykH,GAAMz3F,EAAK,EAC7Cq4F,GAAUr4F,EAAK,CAClB,CACD,OAAIs4F,KACA,KAAK,UAAYtlH,GAAK,QAAU,IAAI0kH,GACpC,KAAK,KAAKY,EAAW,GAElB,KAAK,cAAcb,GAAOC,EAAO,CAC3C,CAED,MAAM13F,GAAO,CACT,OAAO,KAAK,UAAU,IAAIo2F,EAAMp2F,EAAK,CAAC,CACzC,CAED,MAAM66D,GAAM09B,GAAW,CACnB,YAAK,aAAa,KAAK,KAAK,OAAO,MAAM,EACrC19B,IACA,KAAK,KAAKA,EAAI,EAAE,SAAS09B,EAAS,EAC/B,IACV,CAED,SAASA,GAAW,CAChB,MAAMh1I,GAAM,KAAK,aAAa,IAAG,EACjC,GAAIA,KAAQ,OACR,MAAM,IAAI,MAAM,sCAAsC,EAC1D,MAAMi1I,GAAU,KAAK,OAAO,OAASj1I,GACrC,GAAIi1I,GAAU,GAAMD,KAAc,QAAaC,KAAYD,GACvD,MAAM,IAAI,MAAM,mCAAmCC,EAAO,OAAOD,EAAS,WAAW,EAEzF,YAAK,OAAO,OAASh1I,GACd,IACV,CAED,KAAKK,GAAMJ,GAAOywI,EAAO,IAAKqD,GAAOmB,GAAU,CAC3C,YAAK,WAAW,IAAIpB,EAAKzzI,GAAMJ,GAAM8zI,EAAK,CAAC,EACvCmB,IACA,KAAK,KAAKA,EAAQ,EAAE,QAAO,EACxB,IACV,CAED,SAAU,CACN,OAAO,KAAK,cAAcpB,CAAI,CACjC,CACD,SAAS3tI,GAAI,EAAG,CACZ,KAAOA,MAAM,GACT,KAAK,MAAM,gBACX,KAAK,MAAM,cAAc,KAAK,MAAM,MAAO,KAAK,UAAU,CAEjE,CACD,UAAUspB,GAAM,CACZ,YAAK,UAAU,MAAM,KAAKA,EAAI,EACvB,IACV,CACD,WAAWA,GAAM,CACb,KAAK,UAAU,MAAM,KAAKA,EAAI,EAC9B,KAAK,OAAO,KAAKA,EAAI,CACxB,CACD,cAAcm3B,GAAIC,GAAI,CAClB,MAAM1gD,GAAI,KAAK,UACf,GAAIA,cAAaygD,IAAOC,IAAM1gD,cAAa0gD,GACvC,YAAK,OAAO,MACL,KAEX,MAAM,IAAI,MAAM,0BAA0BA,GAAK,GAAGD,GAAG,IAAI,IAAIC,GAAG,IAAI,GAAKD,GAAG,IAAI,GAAG,CACtF,CACD,UAAUn3B,GAAM,CACZ,MAAMtpB,GAAI,KAAK,UACf,GAAI,EAAEA,cAAaktI,GACf,MAAM,IAAI,MAAM,8BAA8B,EAElD,YAAK,UAAYltI,GAAE,KAAOspB,GACnB,IACV,CACD,IAAI,OAAQ,CACR,OAAO,KAAK,OAAO,CAAC,CACvB,CACD,IAAI,WAAY,CACZ,MAAM8jH,GAAK,KAAK,OAChB,OAAOA,GAAGA,GAAG,OAAS,CAAC,CAC1B,CACD,IAAI,UAAU9jH,GAAM,CAChB,MAAM8jH,GAAK,KAAK,OAChBA,GAAGA,GAAG,OAAS,CAAC,EAAI9jH,EACvB,CACJ,CACD9sB,EAAA,QAAkByxI,GAClB,SAASnB,EAAS93F,GAAOt3C,GAAM,CAC3B,UAAWsC,MAAKtC,GACZs3C,GAAMh1C,EAAC,GAAKg1C,GAAMh1C,EAAC,GAAK,IAAMtC,GAAKsC,EAAC,GAAK,GAC7C,OAAOg1C,EACV,CACD,SAASs3F,EAAat3F,GAAOt3C,GAAM,CAC/B,OAAOA,cAAgB6sI,EAAO,YAAcuC,EAAS93F,GAAOt3C,GAAK,KAAK,EAAIs3C,EAC7E,CACD,SAASm3F,EAAatC,GAAM70F,GAAO9uC,GAAW,CAC1C,GAAI2jI,cAAgBU,EAAO,KACvB,OAAOyE,GAAYnF,EAAI,EAC3B,GAAI,CAACoF,GAAYpF,EAAI,EACjB,OAAOA,GACX,OAAO,IAAIU,EAAO,MAAMV,GAAK,OAAO,OAAO,CAAC/lG,GAAOxnC,MAC3CA,cAAaiuI,EAAO,OACpBjuI,GAAI0yI,GAAY1yI,EAAC,GACjBA,cAAaiuI,EAAO,MACpBzmG,GAAM,KAAK,GAAGxnC,GAAE,MAAM,EAEtBwnC,GAAM,KAAKxnC,EAAC,EACTwnC,IACR,EAAE,CAAC,EACN,SAASkrG,GAAYhvI,GAAG,CACpB,MAAM1D,GAAI4J,GAAUlG,GAAE,GAAG,EACzB,OAAI1D,KAAM,QAAa04C,GAAMh1C,GAAE,GAAG,IAAM,EAC7BA,IACX,OAAOg1C,GAAMh1C,GAAE,GAAG,EACX1D,GACV,CACD,SAAS2yI,GAAYpzI,GAAG,CACpB,OAAQA,cAAa0uI,EAAO,OACxB1uI,GAAE,OAAO,KAAMS,IAAMA,cAAaiuI,EAAO,MAAQv1F,GAAM14C,GAAE,GAAG,IAAM,GAAK4J,GAAU5J,GAAE,GAAG,IAAM,MAAS,CAC5G,CACJ,CACD,SAASuwI,EAAc73F,GAAOt3C,GAAM,CAChC,UAAWsC,MAAKtC,GACZs3C,GAAMh1C,EAAC,GAAKg1C,GAAMh1C,EAAC,GAAK,IAAMtC,GAAKsC,EAAC,GAAK,EAChD,CACD,SAASqtI,GAAI9zI,GAAG,CACZ,OAAO,OAAOA,IAAK,WAAa,OAAOA,IAAK,UAAYA,KAAM,KAAO,CAACA,MAAQgxI,EAAO,MAAO2E,EAAI31I,EAAC,CAAC,EACrG,CACDiD,EAAA,IAAc6wI,GACd,MAAM8B,GAAUC,GAAQ5yI,EAAQ,UAAU,GAAG,EAE7C,SAAS6yI,MAAOv1I,GAAM,CAClB,OAAOA,GAAK,OAAOq1I,EAAO,CAC7B,CACD3yI,EAAA,IAAc6yI,GACd,MAAMC,GAASF,GAAQ5yI,EAAQ,UAAU,EAAE,EAE3C,SAASsiD,MAAMhlD,GAAM,CACjB,OAAOA,GAAK,OAAOw1I,EAAM,CAC5B,CACD9yI,EAAA,GAAasiD,GACb,SAASswF,GAAQ13E,GAAI,CACjB,MAAO,CAACn+D,GAAG0F,KAAO1F,KAAMgxI,EAAO,IAAMtrI,GAAIA,KAAMsrI,EAAO,IAAMhxI,MAAQgxI,EAAO,KAAM2E,EAAI31I,EAAC,CAAC,IAAIm+D,EAAE,IAAIw3E,EAAIjwI,EAAC,CAAC,EAC1G,CACD,SAASiwI,EAAI31I,GAAG,CACZ,OAAOA,cAAagxI,EAAO,KAAOhxI,MAAQgxI,EAAO,MAAOhxI,EAAC,GAC5D,2BCtrBD,OAAO,eAAegiE,OAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,OAAA,gBAA8CA,OAAA,aAAeA,OAAA,oBAAqBA,OAAA,aAAuBA,OAAA,qBAAqDA,OAAA,eAAmBA,OAAA,oCAAiCA,OAAA,kBAA4BA,OAAA,eAAiDA,OAAA,iBAAyBA,OAAA,2CAAkCA,OAAA,eAAyBA,OAAA,kBAAqDA,OAAA,gCAAoB,OAC5b,MAAMg0E,YAAYn1F,QACZmwF,SAAS5tF,OAEf,SAAS,OAAO7hD,EAAK,CACjB,MAAMypD,EAAO,GACb,UAAW18C,KAAQ/M,EACfypD,EAAK18C,CAAI,EAAI,GACjB,OAAO08C,CACX,CACcgX,OAAA,OAAG,OACjB,SAAS,kBAAkB7kB,EAAI84F,EAAQ,CACnC,OAAI,OAAOA,GAAU,UACVA,EACP,OAAO,KAAKA,CAAM,EAAE,SAAW,EACxB,IACX,kBAAkB94F,EAAI84F,CAAM,EACrB,CAAC,eAAeA,EAAQ94F,EAAG,KAAK,MAAM,GAAG,EACpD,CACyB6kB,OAAA,kBAAG,kBAC5B,SAAS,kBAAkB7kB,EAAI84F,EAAS94F,EAAG,OAAQ,CAC/C,KAAM,CAAE,KAAAiD,EAAM,KAAA1sC,CAAM,EAAGypC,EAGvB,GAFI,CAACiD,EAAK,cAEN,OAAO61F,GAAW,UAClB,OACJ,MAAMC,EAAQxiI,EAAK,MAAM,SACzB,UAAWzG,KAAOgpI,EACTC,EAAMjpI,CAAG,GACV,gBAAgBkwC,EAAI,qBAAqBlwC,CAAG,GAAG,CAE3D,CACyB+0D,OAAA,kBAAG,kBAC5B,SAAS,eAAei0E,EAAQC,EAAO,CACnC,GAAI,OAAOD,GAAU,UACjB,MAAO,CAACA,EACZ,UAAWhpI,KAAOgpI,EACd,GAAIC,EAAMjpI,CAAG,EACT,MAAO,GACf,MAAO,EACX,CACsB+0D,OAAA,eAAG,eACzB,SAAS,qBAAqBi0E,EAAQE,EAAO,CACzC,GAAI,OAAOF,GAAU,UACjB,MAAO,CAACA,EACZ,UAAWhpI,KAAOgpI,EACd,GAAIhpI,IAAQ,QAAUkpI,EAAM,IAAIlpI,CAAG,EAC/B,MAAO,GACf,MAAO,EACX,CAC4B+0D,OAAA,qBAAG,qBAC/B,SAAS,eAAe,CAAE,aAAAo0E,EAAc,WAAAC,CAAY,EAAEJ,EAAQK,EAASC,EAAO,CAC1E,GAAI,CAACA,EAAO,CACR,GAAI,OAAON,GAAU,UAAY,OAAOA,GAAU,UAC9C,OAAOA,EACX,GAAI,OAAOA,GAAU,SACjB,SAAWD,YAAU,KAAMC,CAAM,EACxC,CACD,SAAWD,YAAU,KAAMI,CAAY,GAAGC,CAAU,MAAOL,YAAU,aAAaM,CAAO,CAAC,EAC9F,CACsBt0E,OAAA,eAAG,eACzB,SAAS,iBAAiBt7D,EAAK,CAC3B,OAAO,oBAAoB,mBAAmBA,CAAG,CAAC,CACtD,CACwBs7D,OAAA,iBAAG,iBAC3B,SAAS,eAAet7D,EAAK,CACzB,OAAO,mBAAmB,kBAAkBA,CAAG,CAAC,CACpD,CACsBs7D,OAAA,eAAG,eACzB,SAAS,kBAAkBt7D,EAAK,CAC5B,OAAI,OAAOA,GAAO,SACP,GAAGA,CAAG,GACVA,EAAI,QAAQ,KAAM,IAAI,EAAE,QAAQ,MAAO,IAAI,CACtD,CACyBs7D,OAAA,kBAAG,kBAC5B,SAAS,oBAAoBt7D,EAAK,CAC9B,OAAOA,EAAI,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,GAAG,CACrD,CAC2Bs7D,OAAA,oBAAG,oBAC9B,SAAS,SAASptB,EAAIvX,EAAG,CACrB,GAAI,MAAM,QAAQuX,CAAE,EAChB,UAAW50C,KAAK40C,EACZvX,EAAEr9B,CAAC,OAGPq9B,EAAEuX,CAAE,CAEZ,CACgBotB,OAAA,SAAG,SACnB,SAAS,mBAAmB,CAAE,WAAAw0E,EAAY,YAAAC,EAAa,YAAAC,EAAa,aAAAC,CAAY,EAAK,CACjF,MAAO,CAACnmE,EAAKrsE,EAAMib,EAAIw3H,IAAW,CAC9B,MAAMtuI,EAAM8W,IAAO,OACbjb,EACAib,aAAc42H,YAAU,MACnB7xI,aAAgB6xI,YAAU,KAAOQ,EAAWhmE,EAAKrsE,EAAMib,CAAE,EAAIq3H,EAAYjmE,EAAKrsE,EAAMib,CAAE,EAAGA,GAC1Fjb,aAAgB6xI,YAAU,MACrBS,EAAYjmE,EAAKpxD,EAAIjb,CAAI,EAAGA,GAC7BuyI,EAAYvyI,EAAMib,CAAE,EAClC,OAAOw3H,IAAWZ,YAAU,MAAQ,EAAE1tI,aAAe0tI,YAAU,MAAQW,EAAanmE,EAAKloE,CAAG,EAAIA,CACxG,CACA,CACA05D,OAAA,eAAyB,CACrB,MAAO,mBAAmB,CACtB,WAAY,CAACwO,EAAKrsE,EAAMib,IAAOoxD,EAAI,MAAOwlE,YAAU,KAAM52H,CAAE,gBAAgBjb,CAAI,iBAAkB,IAAM,CACpGqsE,EAAI,MAAOwlE,YAAU,KAAM7xI,CAAI,YAAa,IAAMqsE,EAAI,OAAOpxD,EAAI,EAAI,EAAG,IAAMoxD,EAAI,OAAOpxD,KAAQ42H,YAAU,KAAM52H,CAAE,QAAQ,EAAE,QAAS42H,YAAU,mBAAoB52H,CAAE,KAAKjb,CAAI,GAAG,CAAC,CAC/L,CAAS,EACD,YAAa,CAACqsE,EAAKrsE,EAAMib,IAAOoxD,EAAI,MAAOwlE,YAAU,KAAM52H,CAAE,YAAa,IAAM,CACxEjb,IAAS,GACTqsE,EAAI,OAAOpxD,EAAI,EAAI,GAGnBoxD,EAAI,OAAOpxD,KAAQ42H,YAAU,KAAM52H,CAAE,QAAQ,EAC7C,aAAaoxD,EAAKpxD,EAAIjb,CAAI,EAE1C,CAAS,EACD,YAAa,CAACA,EAAMib,IAAQjb,IAAS,GAAO,GAAO,CAAE,GAAGA,EAAM,GAAGib,GACjE,aAAc,oBACtB,CAAK,EACD,MAAO,mBAAmB,CACtB,WAAY,CAACoxD,EAAKrsE,EAAMib,IAAOoxD,EAAI,MAAOwlE,YAAU,KAAM52H,CAAE,gBAAgBjb,CAAI,iBAAkB,IAAMqsE,EAAI,OAAOpxD,KAAQ42H,YAAU,KAAM7xI,CAAI,sBAAsBib,CAAE,MAAMjb,CAAI,MAAMib,CAAE,MAAMjb,CAAI,EAAE,CAAC,EACtM,YAAa,CAACqsE,EAAKrsE,EAAMib,IAAOoxD,EAAI,MAAOwlE,YAAU,KAAM52H,CAAE,YAAa,IAAMoxD,EAAI,OAAOpxD,EAAIjb,IAAS,GAAO,MAAW6xI,YAAU,KAAM52H,CAAE,MAAMjb,CAAI,MAAMib,CAAE,MAAMjb,CAAI,EAAE,CAAC,EAC3K,YAAa,CAACA,EAAMib,IAAQjb,IAAS,GAAO,GAAO,KAAK,IAAIA,EAAMib,CAAE,EACpE,aAAc,CAACoxD,EAAKjmC,IAAUimC,EAAI,IAAI,QAASjmC,CAAK,CAC5D,CAAK,CACL,EACA,SAAS,qBAAqBimC,EAAKmwC,EAAI,CACnC,GAAIA,IAAO,GACP,OAAOnwC,EAAI,IAAI,QAAS,EAAI,EAChC,MAAM36D,EAAQ26D,EAAI,IAAI,WAAawlE,YAAU,MAAO,EACpD,OAAIr1B,IAAO,QACP,aAAanwC,EAAK36D,EAAO8qG,CAAE,EACxB9qG,CACX,CAC4BmsD,OAAA,qBAAG,qBAC/B,SAAS,aAAawO,EAAK36D,EAAO8qG,EAAI,CAClC,OAAO,KAAKA,CAAE,EAAE,QAASlqG,GAAM+5D,EAAI,UAAWwlE,YAAU,KAAMngI,CAAK,MAAOmgI,YAAU,aAAav/H,CAAC,CAAC,GAAI,EAAI,CAAC,CAChH,CACoBurD,OAAA,aAAG,aACvB,MAAM,SAAW,GACjB,SAAS,QAAQwO,EAAKnzC,EAAG,CACrB,OAAOmzC,EAAI,WAAW,OAAQ,CAC1B,IAAKnzC,EACL,KAAM,SAASA,EAAE,IAAI,IAAM,SAASA,EAAE,IAAI,EAAI,IAAI2zG,SAAO,MAAM3zG,EAAE,IAAI,EAC7E,CAAK,CACL,CACe2kC,OAAA,QAAG,QAClB,IAAI,MACH,SAAUvW,EAAM,CACbA,EAAKA,EAAK,IAAS,CAAC,EAAI,MACxBA,EAAKA,EAAK,IAAS,CAAC,EAAI,KAC5B,GAAG,OAAqBuW,OAAA,KAAG,KAAO,GAAG,EACrC,SAAS,aAAa60E,EAAUC,EAAcC,EAAkB,CAE5D,GAAIF,aAAoBb,YAAU,KAAM,CACpC,MAAM98D,EAAW49D,IAAiB,KAAK,IACvC,OAAOC,EACD79D,KACQ88D,YAAU,WAAYa,CAAQ,YAC9Bb,YAAU,YAAaa,CAAQ,UACvC39D,KACQ88D,YAAU,WAAYa,CAAQ,MAC9Bb,YAAU,WAAYa,CAAQ,4CAC/C,CACD,OAAOE,KAAuBf,YAAU,aAAaa,CAAQ,EAAE,SAAQ,EAAK,IAAM,kBAAkBA,CAAQ,CAChH,CACoB70E,OAAA,aAAG,aACvB,SAAS,gBAAgB7kB,EAAI9xC,EAAKmhB,EAAO2wB,EAAG,KAAK,aAAc,CAC3D,GAAK3wB,EAGL,IADAnhB,EAAM,gBAAgBA,CAAG,GACrBmhB,IAAS,GACT,MAAM,IAAI,MAAMnhB,CAAG,EACvB8xC,EAAG,KAAK,OAAO,KAAK9xC,CAAG,EAC3B,CACuB22D,OAAA,gBAAG,+BC/K1B,OAAO,eAAeg1E,QAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAMhB,YAAYn1F,QACZpF,QAAQ,CAEV,KAAM,IAAIu6F,YAAU,KAAK,MAAM,EAE/B,OAAQ,IAAIA,YAAU,KAAK,QAAQ,EACnC,aAAc,IAAIA,YAAU,KAAK,cAAc,EAC/C,WAAY,IAAIA,YAAU,KAAK,YAAY,EAC3C,mBAAoB,IAAIA,YAAU,KAAK,oBAAoB,EAC3D,SAAU,IAAIA,YAAU,KAAK,UAAU,EACvC,eAAgB,IAAIA,YAAU,KAAK,gBAAgB,EAEnD,QAAS,IAAIA,YAAU,KAAK,SAAS,EACrC,OAAQ,IAAIA,YAAU,KAAK,QAAQ,EACnC,KAAM,IAAIA,YAAU,KAAK,MAAM,EAE/B,KAAM,IAAIA,YAAU,KAAK,MAAM,EAC/B,MAAO,IAAIA,YAAU,KAAK,OAAO,EAEjC,KAAM,IAAIA,YAAU,KAAK,MAAM,EAC/B,QAAS,IAAIA,YAAU,KAAK,SAAS,EACrC,QAAS,IAAIA,YAAU,KAAK,SAAS,EACrC,SAAU,IAAIA,YAAU,KAAK,UAAU,CAC3C,EACegB,QAAA,QAAGv7F,qBCzBlB,OAAO,eAAcx4C,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,aAAuBA,mBAA2BA,EAA2B,iBAAAA,EAAA,YAAsBA,oBAA4BA,EAAuB,oBACtJ,MAAM+yI,EAAYn1F,QACZo2F,EAAS7zF,OACT4zF,EAAU5+E,QAChBn1D,EAAuB,cACnB,QAAS,CAAC,CAAE,QAAAqzI,CAAO,OAAWN,EAAU,kBAAmBM,CAAO,sBACtE,EACArzI,EAA4B,mBACxB,QAAS,CAAC,CAAE,QAAAqzI,EAAS,WAAAY,CAAY,IAAKA,KAC5BlB,EAAU,QAASM,CAAO,qBAAqBY,CAAU,cACzDlB,EAAU,QAASM,CAAO,8BACxC,EACA,SAASa,EAAYC,EAAKr6F,EAAQ95C,EAAQ,aAAco0I,EAAYC,EAAmB,CACnF,KAAM,CAAE,GAAAn6F,CAAI,EAAGi6F,EACT,CAAE,IAAA5mE,EAAK,cAAA+mE,EAAe,UAAAC,CAAS,EAAKr6F,EACpCs6F,GAASC,EAAgBN,EAAKr6F,EAAOs6F,CAAU,EACjDC,IAAkFC,GAAiBC,GACnGG,EAASnnE,EAAKinE,EAAM,EAGpBG,EAAaz6F,KAAQ64F,EAAU,MAAOyB,EAAM,GAAG,CAEtD,CACDx0I,EAAA,YAAsBk0I,EACtB,SAASU,EAAiBT,EAAKr6F,EAAQ95C,EAAQ,aAAco0I,EAAY,CACrE,KAAM,CAAE,GAAAl6F,CAAI,EAAGi6F,EACT,CAAE,IAAA5mE,EAAK,cAAA+mE,EAAe,UAAAC,CAAS,EAAKr6F,EACpCs6F,EAASC,EAAgBN,EAAKr6F,EAAOs6F,CAAU,EACrDM,EAASnnE,EAAKinE,CAAM,EACdF,GAAiBC,GACnBI,EAAaz6F,EAAI65F,EAAQ,QAAQ,OAAO,CAE/C,CACD/zI,EAAA,iBAA2B40I,EAC3B,SAASC,EAAiBtnE,EAAKunE,EAAW,CACtCvnE,EAAI,OAAOwmE,EAAQ,QAAQ,OAAQe,CAAS,EAC5CvnE,EAAI,MAAOwlE,EAAU,KAAMgB,EAAQ,QAAQ,OAAO,YAAa,IAAMxmE,EAAI,GAAGunE,EAAW,IAAMvnE,EAAI,UAAWwlE,EAAU,KAAMgB,EAAQ,QAAQ,OAAO,UAAWe,CAAS,EAAG,IAAMvnE,EAAI,OAAOwmE,EAAQ,QAAQ,QAAS,IAAI,CAAC,CAAC,CAC7N,CACD/zI,EAAA,iBAA2B60I,EAC3B,SAASE,EAAa,CAAE,IAAAxnE,EAAK,QAAA8lE,EAAS,YAAA2B,EAAa,KAAA7+H,EAAM,UAAA2+H,EAAW,GAAA56F,GAAO,CAEvE,GAAI46F,IAAc,OACd,MAAM,IAAI,MAAM,0BAA0B,EAC9C,MAAMhiI,EAAMy6D,EAAI,KAAK,KAAK,EAC1BA,EAAI,SAAS,IAAKunE,EAAWf,EAAQ,QAAQ,OAASx2I,GAAM,CACxDgwE,EAAI,MAAMz6D,KAASigI,EAAU,KAAMgB,EAAQ,QAAQ,OAAO,IAAIx2I,CAAC,GAAG,EAClEgwE,EAAI,MAAOwlE,EAAU,KAAMjgI,CAAG,8BAA+B,IAAMy6D,EAAI,UAAWwlE,EAAU,KAAMjgI,CAAG,mBAAqBigI,EAAU,WAAWgB,EAAQ,QAAQ,aAAc75F,EAAG,SAAS,CAAC,CAAC,EAC3LqzB,EAAI,UAAWwlE,EAAU,KAAMjgI,CAAG,iBAAmBigI,EAAU,OAAQ74F,EAAG,aAAa,IAAIm5F,CAAO,EAAE,EAChGn5F,EAAG,KAAK,UACRqzB,EAAI,UAAWwlE,EAAU,KAAMjgI,CAAG,UAAWkiI,CAAW,EACxDznE,EAAI,UAAWwlE,EAAU,KAAMjgI,CAAG,QAASqD,CAAI,EAE3D,CAAK,CACJ,CACDnW,EAAA,aAAuB+0I,EACvB,SAASL,EAASnnE,EAAKinE,EAAQ,CAC3B,MAAM1hI,EAAMy6D,EAAI,MAAM,MAAOinE,CAAM,EACnCjnE,EAAI,MAAOwlE,EAAU,KAAMgB,EAAQ,QAAQ,OAAO,YAAa,IAAMxmE,EAAI,OAAOwmE,EAAQ,QAAQ,WAAahB,EAAU,MAAOjgI,CAAG,GAAG,KAAOigI,EAAU,KAAMgB,EAAQ,QAAQ,OAAO,SAASjhI,CAAG,GAAG,EACjMy6D,EAAI,QAASwlE,EAAU,KAAMgB,EAAQ,QAAQ,MAAM,IAAI,CAC1D,CACD,SAASY,EAAaz6F,EAAI+6F,EAAM,CAC5B,KAAM,CAAE,IAAA1nE,EAAK,aAAA2nE,EAAc,UAAAC,CAAS,EAAKj7F,EACrCi7F,EAAU,OACV5nE,EAAI,SAAUwlE,EAAU,SAAU74F,EAAG,eAAe,IAAI+6F,CAAI,GAAG,GAG/D1nE,EAAI,UAAWwlE,EAAU,KAAMmC,CAAY,UAAWD,CAAI,EAC1D1nE,EAAI,OAAO,EAAK,EAEvB,CACD,MAAMzlE,EAAI,CACN,QAAS,IAAIirI,EAAU,KAAK,SAAS,EACrC,WAAY,IAAIA,EAAU,KAAK,YAAY,EAC3C,OAAQ,IAAIA,EAAU,KAAK,QAAQ,EACnC,aAAc,IAAIA,EAAU,KAAK,cAAc,EAC/C,QAAS,IAAIA,EAAU,KAAK,SAAS,EACrC,OAAQ,IAAIA,EAAU,KAAK,QAAQ,EACnC,aAAc,IAAIA,EAAU,KAAK,cAAc,CACnD,EACA,SAAS0B,EAAgBN,EAAKr6F,EAAOs6F,EAAY,CAC7C,KAAM,CAAE,aAAAgB,CAAY,EAAKjB,EAAI,GAC7B,OAAIiB,IAAiB,MACNrC,EAAU,OAClBsC,EAAYlB,EAAKr6F,EAAOs6F,CAAU,CAC5C,CACD,SAASiB,EAAYlB,EAAKr6F,EAAOs6F,EAAa,GAAI,CAC9C,KAAM,CAAE,IAAA7mE,EAAK,GAAArzB,CAAI,EAAGi6F,EACdrC,EAAY,CACdwD,EAAkBp7F,EAAIk6F,CAAU,EAChCmB,EAAgBpB,EAAKC,CAAU,CACvC,EACI,OAAAoB,EAAgBrB,EAAKr6F,EAAOg4F,CAAS,EAC9BvkE,EAAI,OAAO,GAAGukE,CAAS,CACjC,CACD,SAASwD,EAAkB,CAAE,UAAAG,GAAa,CAAE,aAAAC,CAAY,EAAI,CACxD,MAAMC,EAAWD,KACP3C,EAAU,OAAQ0C,CAAS,MAAOzB,EAAO,cAAc0B,EAAc1B,EAAO,KAAK,GAAG,CAAC,GACzFyB,EACN,MAAO,CAAC1B,EAAQ,QAAQ,gBAAkBhB,EAAU,WAAWgB,EAAQ,QAAQ,aAAc4B,CAAQ,CAAC,CACzG,CACD,SAASJ,EAAgB,CAAE,QAAAlC,EAAS,GAAI,CAAE,cAAAuC,CAAa,GAAM,CAAE,WAAAxC,EAAY,aAAAyC,GAAgB,CACvF,IAAIC,EAAUD,EAAeD,KAAoB7C,EAAU,OAAQ6C,CAAa,IAAIvC,CAAO,GAC3F,OAAID,IACA0C,KAAc/C,EAAU,OAAQ+C,CAAO,MAAO9B,EAAO,cAAcZ,EAAYY,EAAO,KAAK,GAAG,CAAC,IAE5F,CAAClsI,EAAE,WAAYguI,CAAO,CAChC,CACD,SAASN,EAAgBrB,EAAK,CAAE,OAAArxG,EAAQ,QAAA5J,CAAO,EAAI44G,EAAW,CAC1D,KAAM,CAAE,QAAAuB,EAAS,KAAAl9H,EAAM,YAAA6+H,EAAa,GAAA96F,CAAE,EAAKi6F,EACrC,CAAE,KAAAh3F,GAAM,aAAA44F,GAAc,aAAA5C,GAAc,WAAAC,EAAU,EAAKl5F,EACzD43F,EAAU,KAAK,CAAChqI,EAAE,QAASurI,CAAO,EAAG,CAACvrI,EAAE,OAAQ,OAAOg7B,GAAU,WAAaA,EAAOqxG,CAAG,EAAIrxG,MAAciwG,EAAU,MAAO,CAAC,EACxH51F,GAAK,UACL20F,EAAU,KAAK,CAAChqI,EAAE,QAAS,OAAOoxB,GAAW,WAAaA,EAAQi7G,CAAG,EAAIj7G,CAAO,CAAC,EAEjFikB,GAAK,SACL20F,EAAU,KAAK,CAAChqI,EAAE,OAAQktI,CAAW,EAAG,CAACltI,EAAE,gBAAkBirI,EAAU,KAAMI,EAAY,GAAGC,EAAU,EAAE,EAAG,CAACW,EAAQ,QAAQ,KAAM59H,CAAI,CAAC,EAEvI4/H,IACAjE,EAAU,KAAK,CAAChqI,EAAE,aAAciuI,EAAY,CAAC,CACpD,YCxHD,OAAO,eAAe,WAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,6BAA4B,gCAA+B,OAC3D,MAAMC,WAAWp4F,OACXm1F,YAAY5yF,QACZ4zF,UAAU5+E,QACV,UAAY,CACd,QAAS,yBACb,EACA,SAAS,qBAAqBjb,EAAI,CAC9B,KAAM,CAAE,IAAAqzB,EAAK,OAAAylE,EAAQ,aAAAkC,CAAY,EAAKh7F,EAClC84F,IAAW,GACX,iBAAiB94F,EAAI,EAAK,EAErB,OAAO84F,GAAU,UAAYA,EAAO,SAAW,GACpDzlE,EAAI,OAAOwmE,UAAQ,QAAQ,IAAI,GAG/BxmE,EAAI,UAAWwlE,YAAU,KAAMmC,CAAY,UAAW,IAAI,EAC1D3nE,EAAI,OAAO,EAAI,EAEvB,CAC4B,gCAAG,qBAC/B,SAAS,kBAAkBrzB,EAAI2pD,EAAO,CAClC,KAAM,CAAE,IAAAt2B,EAAK,OAAAylE,CAAQ,EAAG94F,EACpB84F,IAAW,IACXzlE,EAAI,IAAIs2B,EAAO,EAAK,EACpB,iBAAiB3pD,CAAE,GAGnBqzB,EAAI,IAAIs2B,EAAO,EAAI,CAE3B,CACyB,6BAAG,kBAC5B,SAAS,iBAAiB3pD,EAAIm6F,EAAmB,CAC7C,KAAM,CAAE,IAAA9mE,EAAK,KAAAp3D,CAAM,EAAG+jC,EAEhBi6F,EAAM,CACR,IAAA5mE,EACA,QAAS,eACT,KAAAp3D,EACA,OAAQ,GACR,WAAY,GACZ,YAAa,GACb,OAAQ,CAAE,EACV,GAAA+jC,CACR,KACQ87F,WAAS,aAAa7B,EAAK,UAAW,OAAWE,CAAiB,CAC1E,0BC/CA,OAAO,eAAe,MAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,eAAmB,iBAAqB,OACxC,MAAM,WAAa,CAAC,SAAU,SAAU,UAAW,UAAW,OAAQ,SAAU,OAAO,EACjF,UAAY,IAAI,IAAI,UAAU,EACpC,SAAS,WAAWt3I,EAAG,CACnB,OAAO,OAAOA,GAAK,UAAY,UAAU,IAAIA,CAAC,CAClD,CACkB,iBAAG,WACrB,SAAS,UAAW,CAChB,MAAMi9B,EAAS,CACX,OAAQ,CAAE,KAAM,SAAU,MAAO,EAAI,EACrC,OAAQ,CAAE,KAAM,SAAU,MAAO,EAAI,EACrC,MAAO,CAAE,KAAM,QAAS,MAAO,EAAI,EACnC,OAAQ,CAAE,KAAM,SAAU,MAAO,EAAI,CAC7C,EACI,MAAO,CACH,MAAO,CAAE,GAAGA,EAAQ,QAAS,GAAM,QAAS,GAAM,KAAM,EAAM,EAC9D,MAAO,CAAC,CAAE,MAAO,CAAE,GAAIA,EAAO,OAAQA,EAAO,OAAQA,EAAO,MAAOA,EAAO,MAAM,EAChF,KAAM,CAAE,MAAO,EAAI,EACnB,IAAK,CAAE,EACP,SAAU,CAAE,CACpB,CACA,CACgB,eAAG,8BCvBnB,OAAO,eAAe,cAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,4BAA8C,iEAAmC,OACjF,SAAS,sBAAsB,CAAE,OAAAg5G,EAAQ,KAAAviI,CAAI,EAAIjI,EAAM,CACnD,MAAMq3B,EAAQpvB,EAAK,MAAM,MAAMjI,CAAI,EACnC,OAAOq3B,GAASA,IAAU,IAAQ,eAAemzG,EAAQnzG,CAAK,CAClE,CAC6B,oCAAG,sBAChC,SAAS,eAAemzG,EAAQnzG,EAAO,CACnC,OAAOA,EAAM,MAAM,KAAMo2G,GAAS,cAAcjD,EAAQiD,CAAI,CAAC,CACjE,CACsB,6BAAG,eACzB,SAAS,cAAcjD,EAAQiD,EAAM,CACjC,IAAIpqI,EACJ,OAAQmnI,EAAOiD,EAAK,OAAO,IAAM,UAC3BpqI,EAAKoqI,EAAK,WAAW,cAAgB,MAAQpqI,IAAO,OAAS,OAASA,EAAG,KAAMqqI,GAAQlD,EAAOkD,CAAG,IAAM,MAAS,EAC1H,CACqB,4BAAG,cChBxB,OAAO,eAAe,SAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,yBAA0B,wBAAyB,uBAAsD,gCAAuB,8CAA4B,kBAAmB,OAC/K,MAAM,QAAUt4F,MACVu4F,kBAAkBh2F,cAClB61F,WAAW7gF,OACX49E,YAAYt9E,QACZu+E,SAASh6E,OACf,IAAI,UACH,SAAUo8E,EAAU,CACjBA,EAASA,EAAS,QAAa,CAAC,EAAI,UACpCA,EAASA,EAAS,MAAW,CAAC,EAAI,OACtC,GAAG,WAA6B,kBAAG,SAAW,GAAG,EACjD,SAAS,eAAepD,EAAQ,CAC5B,MAAM9T,EAAQ,aAAa8T,EAAO,IAAI,EAEtC,GADgB9T,EAAM,SAAS,MAAM,GAEjC,GAAI8T,EAAO,WAAa,GACpB,MAAM,IAAI,MAAM,wCAAwC,MAE3D,CACD,GAAI,CAAC9T,EAAM,QAAU8T,EAAO,WAAa,OACrC,MAAM,IAAI,MAAM,0CAA0C,EAE1DA,EAAO,WAAa,IACpB9T,EAAM,KAAK,MAAM,CACxB,CACD,OAAOA,CACX,CACsB,wBAAG,eAEzB,SAAS,aAAa96C,EAAI,CACtB,MAAM86C,EAAQ,MAAM,QAAQ96C,CAAE,EAAIA,EAAKA,EAAK,CAACA,CAAE,EAAI,GACnD,GAAI86C,EAAM,MAAM,QAAQ,UAAU,EAC9B,OAAOA,EACX,MAAM,IAAI,MAAM,wCAA0CA,EAAM,KAAK,GAAG,CAAC,CAC7E,CACoB,sBAAG,aACvB,SAAS,uBAAuBhlF,EAAIglF,EAAO,CACvC,KAAM,CAAE,IAAA3xD,EAAK,KAAAp3D,EAAM,KAAAgnC,CAAI,EAAKjD,EACtBm8F,EAAW,cAAcnX,EAAO/hF,EAAK,WAAW,EAChDm5F,EAAapX,EAAM,OAAS,GAC9B,EAAEmX,EAAS,SAAW,GAAKnX,EAAM,SAAW,MAASiX,kBAAgB,uBAAuBj8F,EAAIglF,EAAM,CAAC,CAAC,GAC5G,GAAIoX,EAAY,CACZ,MAAMC,EAAY,eAAerX,EAAO/oH,EAAMgnC,EAAK,cAAe,SAAS,KAAK,EAChFowB,EAAI,GAAGgpE,EAAW,IAAM,CAChBF,EAAS,OACT,WAAWn8F,EAAIglF,EAAOmX,CAAQ,EAE9B,gBAAgBn8F,CAAE,CAClC,CAAS,CACJ,CACD,OAAOo8F,CACX,CAC8B,gCAAG,uBACjC,MAAM,UAAY,IAAI,IAAI,CAAC,SAAU,SAAU,UAAW,UAAW,MAAM,CAAC,EAC5E,SAAS,cAAcpX,EAAOsX,EAAa,CACvC,OAAOA,EACDtX,EAAM,OAAQpgH,GAAM,UAAU,IAAIA,CAAC,GAAM03H,IAAgB,SAAW13H,IAAM,OAAQ,EAClF,EACV,CACA,SAAS,WAAWo7B,EAAIglF,EAAOmX,EAAU,CACrC,KAAM,CAAE,IAAA9oE,EAAK,KAAAp3D,EAAM,KAAAgnC,CAAI,EAAKjD,EACtBu8F,EAAWlpE,EAAI,IAAI,cAAgBwlE,YAAU,YAAa58H,CAAI,EAAE,EAChEugI,EAAUnpE,EAAI,IAAI,aAAewlE,YAAU,aAAc,EAC3D51F,EAAK,cAAgB,SACrBowB,EAAI,MAAOwlE,YAAU,KAAM0D,CAAQ,iCAAiCtgI,CAAI,QAAQA,CAAI,eAAgB,IAAMo3D,EACrG,OAAOp3D,KAAU48H,YAAU,KAAM58H,CAAI,KAAK,EAC1C,OAAOsgI,KAAc1D,YAAU,YAAa58H,CAAI,EAAE,EAClD,GAAG,eAAe+oH,EAAO/oH,EAAMgnC,EAAK,aAAa,EAAG,IAAMowB,EAAI,OAAOmpE,EAASvgI,CAAI,CAAC,CAAC,EAE7Fo3D,EAAI,MAAOwlE,YAAU,KAAM2D,CAAO,gBAAgB,EAClD,UAAW53H,KAAKu3H,GACR,UAAU,IAAIv3H,CAAC,GAAMA,IAAM,SAAWq+B,EAAK,cAAgB,UAC3Dw5F,EAAmB73H,CAAC,EAG5ByuD,EAAI,KAAI,EACR,gBAAgBrzB,CAAE,EAClBqzB,EAAI,MAAK,EACTA,EAAI,MAAOwlE,YAAU,KAAM2D,CAAO,iBAAkB,IAAM,CACtDnpE,EAAI,OAAOp3D,EAAMugI,CAAO,EACxB,iBAAiBx8F,EAAIw8F,CAAO,CACpC,CAAK,EACD,SAASC,EAAmB73H,EAAG,CAC3B,OAAQA,EAAC,CACL,IAAK,SACDyuD,EACK,UAAWwlE,YAAU,KAAM0D,CAAQ,mBAAmBA,CAAQ,eAAe,EAC7E,OAAOC,KAAa3D,YAAU,UAAW58H,CAAI,EAAE,EAC/C,UAAW48H,YAAU,KAAM58H,CAAI,WAAW,EAC1C,OAAOugI,KAAa3D,YAAU,MAAO,EAC1C,OACJ,IAAK,SACDxlE,EACK,UAAWwlE,YAAU,KAAM0D,CAAQ,oBAAoBtgI,CAAI;AAAA,oBAC5DsgI,CAAQ,mBAAmBtgI,CAAI,OAAOA,CAAI,QAAQA,CAAI,GAAG,EACxD,OAAOugI,KAAa3D,YAAU,MAAO58H,CAAI,EAAE,EAChD,OACJ,IAAK,UACDo3D,EACK,UAAWwlE,YAAU,KAAM0D,CAAQ,qBAAqBtgI,CAAI;AAAA,oBAC7DsgI,CAAQ,oBAAoBtgI,CAAI,OAAOA,CAAI,QAAQA,CAAI,SAASA,CAAI,QAAQ,EAC3E,OAAOugI,KAAa3D,YAAU,MAAO58H,CAAI,EAAE,EAChD,OACJ,IAAK,UACDo3D,EACK,UAAWwlE,YAAU,KAAM58H,CAAI,mBAAmBA,CAAI,aAAaA,CAAI,WAAW,EAClF,OAAOugI,EAAS,EAAK,EACrB,UAAW3D,YAAU,KAAM58H,CAAI,kBAAkBA,CAAI,QAAQ,EAC7D,OAAOugI,EAAS,EAAI,EACzB,OACJ,IAAK,OACDnpE,EAAI,UAAWwlE,YAAU,KAAM58H,CAAI,cAAcA,CAAI,aAAaA,CAAI,YAAY,EAClFo3D,EAAI,OAAOmpE,EAAS,IAAI,EACxB,OACJ,IAAK,QACDnpE,EACK,UAAWwlE,YAAU,KAAM0D,CAAQ,oBAAoBA,CAAQ;AAAA,mBACjEA,CAAQ,qBAAqBtgI,CAAI,WAAW,EAC1C,OAAOugI,KAAa3D,YAAU,MAAO58H,CAAI,GAAG,CACxD,CACJ,CACL,CACA,SAAS,iBAAiB,CAAE,IAAAo3D,EAAK,WAAAqpE,EAAY,mBAAAC,CAAkB,EAAIxJ,EAAM,CAErE9/D,EAAI,MAAOwlE,YAAU,KAAM6D,CAAU,iBAAkB,IAAMrpE,EAAI,UAAWwlE,YAAU,KAAM6D,CAAU,IAAIC,CAAkB,IAAKxJ,CAAI,CAAC,CAC1I,CACA,SAAS,cAAcoJ,EAAUtgI,EAAM2gI,EAAYC,EAAU,SAAS,QAAS,CAC3E,MAAMC,EAAKD,IAAY,SAAS,QAAUhE,YAAU,UAAU,GAAKA,YAAU,UAAU,IACvF,IAAIpC,EACJ,OAAQ8F,EAAQ,CACZ,IAAK,OACD,SAAW1D,YAAU,KAAM58H,CAAI,IAAI6gI,CAAE,QACzC,IAAK,QACDrG,KAAWoC,YAAU,mBAAoB58H,CAAI,IAC7C,MACJ,IAAK,SACDw6H,KAAWoC,YAAU,KAAM58H,CAAI,cAAcA,CAAI,kCAAkCA,CAAI,IACvF,MACJ,IAAK,UACDw6H,EAAOsG,KAAYlE,YAAU,OAAQ58H,CAAI,mBAAmBA,CAAI,GAAG,EACnE,MACJ,IAAK,SACDw6H,EAAOsG,EAAO,EACd,MACJ,QACI,SAAWlE,YAAU,YAAa58H,CAAI,IAAI6gI,CAAE,IAAIP,CAAQ,EAC/D,CACD,OAAOM,IAAY,SAAS,QAAUpG,KAAWoC,YAAU,KAAKpC,CAAI,EACpE,SAASsG,EAAQC,EAAQnE,YAAU,IAAK,CACpC,SAAWA,YAAU,QAASA,YAAU,YAAa58H,CAAI,eAAgB+gI,EAAOJ,KAAiB/D,YAAU,cAAe58H,CAAI,IAAM48H,YAAU,GAAG,CACpJ,CACL,CACqB,uBAAG,cACxB,SAAS,eAAeoE,EAAWhhI,EAAM2gI,EAAYC,EAAS,CAC1D,GAAII,EAAU,SAAW,EACrB,OAAO,cAAcA,EAAU,CAAC,EAAGhhI,EAAM2gI,EAAYC,CAAO,EAEhE,IAAIpG,EACJ,MAAMzR,KAAY8U,SAAO,QAAQmD,CAAS,EAC1C,GAAIjY,EAAM,OAASA,EAAM,OAAQ,CAC7B,MAAMkY,KAAarE,YAAU,YAAa58H,CAAI,eAC9Cw6H,EAAOzR,EAAM,KAAOkY,KAAarE,YAAU,MAAO58H,CAAI,OAAOihI,CAAM,GACnE,OAAOlY,EAAM,KACb,OAAOA,EAAM,MACb,OAAOA,EAAM,MAChB,MAEGyR,EAAOoC,YAAU,IAEjB7T,EAAM,QACN,OAAOA,EAAM,QACjB,UAAWpgH,KAAKogH,EACZyR,KAAWoC,YAAU,KAAKpC,EAAM,cAAc7xH,EAAG3I,EAAM2gI,EAAYC,CAAO,CAAC,EAC/E,OAAOpG,CACX,CACsB,wBAAG,eACzB,MAAM,UAAY,CACd,QAAS,CAAC,CAAE,OAAAqC,CAAM,IAAO,WAAWA,CAAM,GAC1C,OAAQ,CAAC,CAAE,OAAAA,EAAQ,YAAAgC,CAAW,IAAO,OAAOhC,GAAU,YAAeD,YAAU,YAAaC,CAAM,OAAUD,YAAU,YAAaiC,CAAW,GAClJ,EACA,SAAS,gBAAgB96F,EAAI,CACzB,MAAMi6F,EAAM,oBAAoBj6F,CAAE,KAC9B87F,WAAS,aAAa7B,EAAK,SAAS,CAC5C,CACuB,yBAAG,gBAC1B,SAAS,oBAAoBj6F,EAAI,CAC7B,KAAM,CAAE,IAAAqzB,EAAK,KAAAp3D,EAAM,OAAA68H,CAAM,EAAK94F,EACxBm9F,KAAiBrD,SAAO,gBAAgB95F,EAAI84F,EAAQ,MAAM,EAChE,MAAO,CACH,IAAAzlE,EACA,QAAS,OACT,KAAAp3D,EACA,OAAQ68H,EAAO,KACf,WAAAqE,EACA,YAAaA,EACb,aAAcrE,EACd,OAAQ,CAAE,EACV,GAAA94F,CACR,CACA,mBCxMA,OAAO,eAAe9lB,WAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EACtCA,WAAA,eAAG,OACzB,MAAM2+G,YAAYn1F,QACZo2F,SAAS7zF,OACf,SAAS,eAAejG,EAAIo9F,EAAI,CAC5B,KAAM,CAAE,WAAA17G,EAAY,MAAA0L,GAAU4S,EAAG,OACjC,GAAIo9F,IAAO,UAAY17G,EACnB,UAAW5xB,KAAO4xB,EACd,cAAcse,EAAIlwC,EAAK4xB,EAAW5xB,CAAG,EAAE,OAAO,OAG7CstI,IAAO,SAAW,MAAM,QAAQhwG,CAAK,GAC1CA,EAAM,QAAQ,CAACiwG,EAAKh6I,IAAM,cAAc28C,EAAI38C,EAAGg6I,EAAI,OAAO,CAAC,CAEnE,CACsBnjH,WAAA,eAAG,eACzB,SAAS,cAAc8lB,EAAIz7B,EAAM9M,EAAc,CAC3C,KAAM,CAAE,IAAA47D,EAAK,cAAA+mE,EAAe,KAAAn+H,EAAM,KAAAgnC,CAAI,EAAKjD,EAC3C,GAAIvoC,IAAiB,OACjB,OACJ,MAAM6lI,KAAgBzE,YAAU,KAAM58H,CAAI,MAAO48H,YAAU,aAAat0H,CAAI,CAAC,GAC7E,GAAI61H,EAAe,IACXN,SAAO,iBAAiB95F,EAAI,2BAA2Bs9F,CAAS,EAAE,EACtE,MACH,CACD,IAAIhhH,KAAgBu8G,YAAU,KAAMyE,CAAS,iBACzCr6F,EAAK,cAAgB,UACrB3mB,KAAgBu8G,YAAU,KAAMv8G,CAAS,OAAOghH,CAAS,gBAAgBA,CAAS,WAItFjqE,EAAI,GAAG/2C,KAAeu8G,YAAU,KAAMyE,CAAS,SAAUzE,YAAU,WAAWphI,CAAY,CAAC,EAAE,CACjG,0BChCA,OAAO,eAAe3T,OAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EACvCA,OAAA,cAAwBA,OAAA,cAAqBA,OAAA,WAA2BA,OAAA,iBAA2BA,OAAA,iBAA8BA,OAAA,oBAA2BA,OAAA,iBAAyBA,OAAA,eAAwBA,OAAA,cAAsBA,OAAA,YAA4BA,OAAA,kBAA2BA,OAAA,iBAAiCA,OAAA,uBAAG,OACnV,MAAM+0I,YAAYn1F,QACZo2F,SAAS7zF,OACT4zF,UAAU5+E,QACVsiF,SAASt3F,OACf,SAAS,uBAAuBg0F,EAAK11H,EAAM,CACvC,KAAM,CAAE,IAAA8uD,EAAK,KAAAp3D,EAAM,GAAA+jC,CAAE,EAAKi6F,EAC1B5mE,EAAI,GAAG,iBAAiBA,EAAKp3D,EAAMsI,EAAMy7B,EAAG,KAAK,aAAa,EAAG,IAAM,CACnEi6F,EAAI,UAAU,CAAE,mBAAqBpB,YAAU,KAAMt0H,CAAI,EAAI,EAAE,EAAI,EACnE01H,EAAI,MAAK,CACjB,CAAK,CACL,CAC8Bn2I,OAAA,uBAAG,uBACjC,SAAS,iBAAiB,CAAE,IAAAuvE,EAAK,KAAAp3D,EAAM,GAAI,CAAE,KAAAgnC,CAAM,GAAIvhB,EAAY87G,EAAS,CACxE,SAAW3E,YAAU,IAAI,GAAGn3G,EAAW,IAAKnd,MAAas0H,YAAU,KAAK,iBAAiBxlE,EAAKp3D,EAAMsI,EAAM0+B,EAAK,aAAa,KAAO41F,YAAU,KAAM2E,CAAO,MAAMj5H,CAAI,EAAE,CAAC,CAAC,CAC5K,CACwBzgB,OAAA,iBAAG,iBAC3B,SAAS,kBAAkBm2I,EAAKuD,EAAS,CACrCvD,EAAI,UAAU,CAAE,gBAAiBuD,CAAS,EAAE,EAAI,EAChDvD,EAAI,MAAK,CACb,CACyBn2I,OAAA,kBAAG,kBAC5B,SAAS,YAAYuvE,EAAK,CACtB,OAAOA,EAAI,WAAW,OAAQ,CAE1B,IAAK,OAAO,UAAU,eACtB,QAAUwlE,YAAU,mCAC5B,CAAK,CACL,CACmB/0I,OAAA,YAAG,YACtB,SAAS,cAAcuvE,EAAKp3D,EAAMqe,EAAU,CACxC,SAAWu+G,YAAU,KAAM,YAAYxlE,CAAG,CAAC,SAASp3D,CAAI,KAAKqe,CAAQ,GACzE,CACqBx2B,OAAA,cAAG,cACxB,SAAS,eAAeuvE,EAAKp3D,EAAMqe,EAAUmjH,EAAe,CACxD,MAAMhH,KAAWoC,YAAU,KAAM58H,CAAI,MAAO48H,YAAU,aAAav+G,CAAQ,CAAC,iBAC5E,OAAOmjH,KAAoB5E,YAAU,KAAMpC,CAAI,OAAO,cAAcpjE,EAAKp3D,EAAMqe,CAAQ,CAAC,GAAKm8G,CACjG,CACsB3yI,OAAA,eAAG,eACzB,SAAS,iBAAiBuvE,EAAKp3D,EAAMqe,EAAUmjH,EAAe,CAC1D,MAAMhH,KAAWoC,YAAU,KAAM58H,CAAI,MAAO48H,YAAU,aAAav+G,CAAQ,CAAC,iBAC5E,OAAOmjH,KAAoB5E,YAAU,IAAIpC,KAAUoC,YAAU,KAAK,cAAcxlE,EAAKp3D,EAAMqe,CAAQ,CAAC,CAAC,EAAIm8G,CAC7G,CACwB3yI,OAAA,iBAAG,iBAC3B,SAAS,oBAAoB45I,EAAW,CACpC,OAAOA,EAAY,OAAO,KAAKA,CAAS,EAAE,OAAQpkI,GAAMA,IAAM,WAAW,EAAI,EACjF,CAC2BxV,OAAA,oBAAG,oBAC9B,SAAS,iBAAiBk8C,EAAI09F,EAAW,CACrC,OAAO,oBAAoBA,CAAS,EAAE,OAAQpkI,GAAM,IAAKwgI,SAAO,mBAAmB95F,EAAI09F,EAAUpkI,CAAC,CAAC,CAAC,CACxG,CACwBxV,OAAA,iBAAG,iBAC3B,SAAS,iBAAiB,CAAE,WAAAq5I,EAAY,KAAAlhI,EAAM,GAAI,CAAE,IAAAo3D,EAAK,aAAA4lE,EAAc,WAAAC,EAAY,UAAAqC,CAAW,EAAE,GAAAv7F,CAAE,EAAImX,EAAM30C,EAASm7H,EAAY,CAC7H,MAAMC,EAAgBD,KAAiB9E,YAAU,KAAMsE,CAAU,KAAKlhI,CAAI,KAAKg9H,CAAY,GAAGC,CAAU,GAAKj9H,EACvG4hI,EAAS,CACX,CAAChE,UAAQ,QAAQ,gBAAkBhB,YAAU,WAAWgB,UAAQ,QAAQ,aAAc0B,CAAS,CAAC,EAChG,CAAC1B,UAAQ,QAAQ,WAAY75F,EAAG,UAAU,EAC1C,CAAC65F,UAAQ,QAAQ,mBAAoB75F,EAAG,kBAAkB,EAC1D,CAAC65F,UAAQ,QAAQ,SAAUA,UAAQ,QAAQ,QAAQ,CAC3D,EACQ75F,EAAG,KAAK,YACR69F,EAAO,KAAK,CAAChE,UAAQ,QAAQ,eAAgBA,UAAQ,QAAQ,cAAc,CAAC,EAChF,MAAMz2I,KAAWy1I,YAAU,KAAM+E,CAAa,KAAKvqE,EAAI,OAAO,GAAGwqE,CAAM,CAAC,GACxE,OAAOr7H,IAAYq2H,YAAU,OAAUA,YAAU,KAAM1hF,CAAI,SAAS30C,CAAO,KAAKpf,CAAI,OAAUy1I,YAAU,KAAM1hF,CAAI,IAAI/zD,CAAI,GAC9H,CACwBU,OAAA,iBAAG,iBAC3B,MAAM,aAAgB+0I,YAAU,eAChC,SAAS,WAAW,CAAE,IAAAxlE,EAAK,GAAI,CAAE,KAAApwB,CAAI,CAAI,EAAE66F,EAAS,CAChD,MAAM3zH,EAAI84B,EAAK,cAAgB,IAAM,GAC/B,CAAE,OAAA86F,CAAM,EAAK96F,EAAK,KAClBygD,EAAKq6C,EAAOD,EAAS3zH,CAAC,EAC5B,OAAOkpD,EAAI,WAAW,UAAW,CAC7B,IAAKqwB,EAAG,SAAU,EAClB,IAAKA,EACL,QAAUm1C,YAAU,KAAMkF,EAAO,OAAS,aAAe,aAAgBR,SAAO,SAASlqE,EAAK0qE,CAAM,CAAC,IAAID,CAAO,KAAK3zH,CAAC,GAC9H,CAAK,CACL,CACkBrmB,OAAA,WAAG,WACrB,SAAS,cAAcm2I,EAAK,CACxB,KAAM,CAAE,IAAA5mE,EAAK,KAAAp3D,EAAM,QAAAk9H,EAAS,GAAAn5F,CAAE,EAAKi6F,EAC7BtwC,EAAQt2B,EAAI,KAAK,OAAO,EAC9B,GAAIrzB,EAAG,UAAW,CACd,MAAMg+F,EAAW3qE,EAAI,IAAI,QAAS,EAAI,EACtC,OAAA4qE,EAAc,IAAM5qE,EAAI,OAAO2qE,EAAU,EAAK,CAAC,EACxCA,CACV,CACD,OAAA3qE,EAAI,IAAIs2B,EAAO,EAAI,EACnBs0C,EAAc,IAAM5qE,EAAI,MAAK,CAAE,EACxBs2B,EACP,SAASs0C,EAAcC,EAAU,CAC7B,MAAM/6I,EAAMkwE,EAAI,MAAM,SAAWwlE,YAAU,KAAM58H,CAAI,SAAS,EAC9Do3D,EAAI,SAAS,IAAK,EAAGlwE,EAAME,GAAM,CAC7B42I,EAAI,UAAU,CACV,QAAAd,EACA,SAAU91I,EACV,aAAcy2I,SAAO,KAAK,GAC7B,EAAEnwC,CAAK,EACRt2B,EAAI,MAAOwlE,YAAU,KAAKlvC,CAAK,EAAGu0C,CAAQ,CACtD,CAAS,CACJ,CACL,CACqBp6I,OAAA,cAAG,cACxB,SAAS,cAAcm2I,EAAK,CACxB,KAAM,CAAE,IAAA5mE,EAAK,OAAAylE,EAAQ,QAAAK,EAAS,GAAAn5F,CAAE,EAAKi6F,EAErC,GAAI,CAAC,MAAM,QAAQnB,CAAM,EACrB,MAAM,IAAI,MAAM,0BAA0B,EAE9C,GADoBA,EAAO,KAAMuE,MAAYvD,SAAO,mBAAmB95F,EAAIq9F,CAAG,CAAC,GAC5D,CAACr9F,EAAG,KAAK,YACxB,OACJ,MAAM2pD,EAAQt2B,EAAI,IAAI,QAAS,EAAK,EAC9B8qE,EAAW9qE,EAAI,KAAK,QAAQ,EAClCA,EAAI,MAAM,IAAMylE,EAAO,QAAQ,CAACsF,EAAM/6I,IAAM,CACxC,MAAMg7I,EAASpE,EAAI,UAAU,CACzB,QAAAd,EACA,WAAY91I,EACZ,cAAe,EAClB,EAAE86I,CAAQ,EACX9qE,EAAI,OAAOs2B,KAAWkvC,YAAU,KAAMlvC,CAAK,OAAOw0C,CAAQ,EAAE,EAC7ClE,EAAI,oBAAoBoE,EAAQF,CAAQ,GAInD9qE,EAAI,MAAOwlE,YAAU,KAAKlvC,CAAK,CAAC,CACvC,EAAC,EACFswC,EAAI,OAAOtwC,EAAO,IAAMswC,EAAI,QAAS,IAAMA,EAAI,MAAM,EAAI,CAAC,CAC9D,CACqBn2I,OAAA,cAAG,cChIxB,OAAO,eAAe,QAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAChC,qDAA6B,wBAAkD,yBAAG,OAC9G,MAAM+0I,YAAYn1F,QACZm2F,UAAU5zF,QACV4tF,SAAS54E,OACT6gF,WAAWvgF,OACjB,SAAS,iBAAiB0+E,EAAKhpI,EAAK,CAChC,KAAM,CAAE,IAAAoiE,EAAK,QAAA8lE,EAAS,OAAAL,EAAQ,aAAA6C,EAAc,GAAA37F,CAAI,EAAGi6F,EAC7CqE,EAAcrtI,EAAI,MAAM,KAAK+uC,EAAG,KAAM84F,EAAQ6C,EAAc37F,CAAE,EAC9Du+F,EAAY,WAAWlrE,EAAK8lE,EAASmF,CAAW,EAClDt+F,EAAG,KAAK,iBAAmB,IAC3BA,EAAG,KAAK,eAAes+F,EAAa,EAAI,EAC5C,MAAM30C,EAAQt2B,EAAI,KAAK,OAAO,EAC9B4mE,EAAI,UAAU,CACV,OAAQqE,EACR,WAAYzF,YAAU,IACtB,cAAe,GAAG74F,EAAG,aAAa,IAAIm5F,CAAO,GAC7C,aAAcoF,EACd,cAAe,EAClB,EAAE50C,CAAK,EACRswC,EAAI,KAAKtwC,EAAO,IAAMswC,EAAI,MAAM,EAAI,CAAC,CACzC,CACwB,yBAAG,iBAC3B,SAAS,gBAAgBA,EAAKhpI,EAAK,CAC/B,IAAIU,EACJ,KAAM,CAAE,IAAA0hE,EAAK,QAAA8lE,EAAS,OAAAL,EAAQ,aAAA6C,EAAc,MAAAvC,EAAO,GAAAp5F,CAAI,EAAGi6F,EAC1D,kBAAkBj6F,EAAI/uC,CAAG,EACzB,MAAMutI,EAAW,CAACpF,GAASnoI,EAAI,QAAUA,EAAI,QAAQ,KAAK+uC,EAAG,KAAM84F,EAAQ6C,EAAc37F,CAAE,EAAI/uC,EAAI,SAC7FwtI,EAAc,WAAWprE,EAAK8lE,EAASqF,CAAQ,EAC/C70C,EAAQt2B,EAAI,IAAI,OAAO,EAC7B4mE,EAAI,WAAWtwC,EAAO+0C,CAAe,EACrCzE,EAAI,IAAItoI,EAAKV,EAAI,SAAW,MAAQU,IAAO,OAASA,EAAKg4F,CAAK,EAC9D,SAAS+0C,GAAkB,CACvB,GAAIztI,EAAI,SAAW,GACf0tI,IACI1tI,EAAI,WACJ,WAAWgpI,CAAG,EAClB2E,EAAW,IAAM3E,EAAI,MAAK,CAAE,MAE3B,CACD,MAAM4E,EAAW5tI,EAAI,MAAQ6tI,EAAe,EAAGC,EAAY,EACvD9tI,EAAI,WACJ,WAAWgpI,CAAG,EAClB2E,EAAW,IAAM,QAAQ3E,EAAK4E,CAAQ,CAAC,CAC1C,CACJ,CACD,SAASC,GAAgB,CACrB,MAAMD,EAAWxrE,EAAI,IAAI,WAAY,IAAI,EACzC,OAAAA,EAAI,IAAI,IAAMsrE,KAAgB9F,YAAU,UAAW,EAAI1zI,GAAMkuE,EAAI,OAAOs2B,EAAO,EAAK,EAAE,MAAOkvC,YAAU,KAAM1zI,CAAC,eAAe66C,EAAG,eAAe,GAAI,IAAMqzB,EAAI,OAAOwrE,KAAchG,YAAU,KAAM1zI,CAAC,SAAS,EAAG,IAAMkuE,EAAI,MAAMluE,CAAC,CAAC,CAAC,EAC3N05I,CACV,CACD,SAASE,GAAe,CACpB,MAAMC,KAAmBnG,YAAU,KAAM4F,CAAW,UACpD,OAAAprE,EAAI,OAAO2rE,EAAc,IAAI,EAC7BL,EAAY9F,YAAU,GAAG,EAClBmG,CACV,CACD,SAASL,EAAYM,EAAShuI,EAAI,SAAY4nI,YAAU,WAAcA,YAAU,IAAK,CACjF,MAAMqG,EAAUl/F,EAAG,KAAK,YAAc65F,UAAQ,QAAQ,KAAOA,UAAQ,QAAQ,KACvE8D,EAAa,EAAG,YAAa1sI,GAAO,CAACmoI,GAAUnoI,EAAI,SAAW,IACpEoiE,EAAI,OAAOs2B,KAAWkvC,YAAU,KAAMoG,CAAM,MAAOpL,SAAO,kBAAkBoG,EAAKwE,EAAaS,EAASvB,CAAU,CAAC,GAAI1sI,EAAI,SAAS,CACtI,CACD,SAAS2tI,EAAWjxI,EAAQ,CACxB,IAAIgE,EACJ0hE,EAAI,MAAOwlE,YAAU,MAAMlnI,EAAKV,EAAI,SAAW,MAAQU,IAAO,OAASA,EAAKg4F,CAAK,EAAGh8F,CAAM,CAC7F,CACL,CACuB,wBAAG,gBAC1B,SAAS,WAAWssI,EAAK,CACrB,KAAM,CAAE,IAAA5mE,EAAK,KAAAp3D,EAAM,GAAA+jC,CAAE,EAAKi6F,EAC1B5mE,EAAI,GAAGrzB,EAAG,WAAY,IAAMqzB,EAAI,OAAOp3D,KAAU48H,YAAU,KAAM74F,EAAG,UAAU,IAAIA,EAAG,kBAAkB,GAAG,CAAC,CAC/G,CACA,SAAS,QAAQi6F,EAAKc,EAAM,CACxB,KAAM,CAAE,IAAA1nE,CAAK,EAAG4mE,EAChB5mE,EAAI,MAAOwlE,YAAU,mBAAoBkC,CAAI,IAAK,IAAM,CACpD1nE,EACK,OAAOwmE,UAAQ,QAAQ,WAAahB,YAAU,KAAMgB,UAAQ,QAAQ,OAAO,eAAekB,CAAI,MAAMlB,UAAQ,QAAQ,OAAO,WAAWkB,CAAI,GAAG,EAC7I,OAAOlB,UAAQ,QAAQ,UAAYhB,YAAU,KAAMgB,UAAQ,QAAQ,OAAO,SAAS,KACpFiC,WAAS,cAAc7B,CAAG,CACtC,EAAO,IAAMA,EAAI,MAAK,CAAE,CACxB,CACA,SAAS,kBAAkB,CAAE,UAAAgB,CAAW,EAAEhqI,EAAK,CAC3C,GAAIA,EAAI,OAAS,CAACgqI,EAAU,OACxB,MAAM,IAAI,MAAM,8BAA8B,CACtD,CACA,SAAS,WAAW5nE,EAAK8lE,EAASnlI,EAAQ,CACtC,GAAIA,IAAW,OACX,MAAM,IAAI,MAAM,YAAYmlI,CAAO,qBAAqB,EAC5D,OAAO9lE,EAAI,WAAW,UAAW,OAAOr/D,GAAU,WAAa,CAAE,IAAKA,CAAM,EAAK,CAAE,IAAKA,EAAQ,QAAU6kI,YAAU,WAAW7kI,CAAM,CAAC,CAAE,CAC5I,CACA,SAAS,gBAAgB8kI,EAAQiB,EAAYoF,EAAiB,GAAO,CAEjE,MAAQ,CAACpF,EAAW,QAChBA,EAAW,KAAMnzE,GAAOA,IAAO,QACzB,MAAM,QAAQkyE,CAAM,EACpBlyE,IAAO,SACHkyE,GAAU,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAM,EAC5D,OAAOA,GAAUlyE,GAAOu4E,GAAkB,OAAOrG,EAAU,GAAY,CACzF,CACuB,wBAAG,gBAC1B,SAAS,qBAAqB,CAAE,OAAAA,EAAQ,KAAA71F,EAAM,KAAA1sC,EAAM,cAAAmlI,CAAe,EAAEzqI,EAAKkoI,EAAS,CAE/E,GAAI,MAAM,QAAQloI,EAAI,OAAO,EAAI,CAACA,EAAI,QAAQ,SAASkoI,CAAO,EAAIloI,EAAI,UAAYkoI,EAC9E,MAAM,IAAI,MAAM,0BAA0B,EAE9C,MAAMjmI,EAAOjC,EAAI,aACjB,GAAgDiC,GAAK,KAAM8oI,GAAQ,CAAC,OAAO,UAAU,eAAe,KAAKlD,EAAQkD,CAAG,CAAC,EACjH,MAAM,IAAI,MAAM,2CAA2C7C,CAAO,KAAKjmI,EAAK,KAAK,GAAG,CAAC,EAAE,EAE3F,GAAIjC,EAAI,gBAEA,CADUA,EAAI,eAAe6nI,EAAOK,CAAO,CAAC,EACpC,CACR,MAAMjrI,EAAM,YAAYirI,CAAO,+BAA+BuC,CAAa,MACvEnlI,EAAK,WAAWtF,EAAI,eAAe,MAAM,EAC7C,GAAIgyC,EAAK,iBAAmB,MACxB1sC,EAAK,OAAO,MAAMrI,CAAG,MAErB,OAAM,IAAI,MAAMA,CAAG,CAC1B,CAET,CAC4B,6BAAG,sCCzH/B,OAAO,eAAe,UAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,8BAAyD,qDAA0B,OACnF,MAAM2qI,YAAYn1F,QACZo2F,SAAS7zF,OACf,SAAS,aAAajG,EAAI,CAAE,QAAAm5F,EAAS,WAAAiG,EAAY,OAAAtG,EAAQ,WAAAI,EAAY,cAAAwC,EAAe,aAAAzC,GAAgB,CAChG,GAAIE,IAAY,QAAaL,IAAW,OACpC,MAAM,IAAI,MAAM,sDAAsD,EAE1E,GAAIK,IAAY,OAAW,CACvB,MAAMkE,EAAMr9F,EAAG,OAAOm5F,CAAO,EAC7B,OAAOiG,IAAe,OAChB,CACE,OAAQ/B,EACR,cAAgBxE,YAAU,KAAM74F,EAAG,UAAU,MAAO64F,YAAU,aAAaM,CAAO,CAAC,GACnF,cAAe,GAAGn5F,EAAG,aAAa,IAAIm5F,CAAO,EAChD,EACC,CACE,OAAQkE,EAAI+B,CAAU,EACtB,cAAgBvG,YAAU,KAAM74F,EAAG,UAAU,MAAO64F,YAAU,aAAaM,CAAO,CAAC,MAAON,YAAU,aAAauG,CAAU,CAAC,GAC5H,cAAe,GAAGp/F,EAAG,aAAa,IAAIm5F,CAAO,OAAQW,SAAO,gBAAgBsF,CAAU,CAAC,EACvG,CACK,CACD,GAAItG,IAAW,OAAW,CACtB,GAAII,IAAe,QAAawC,IAAkB,QAAazC,IAAiB,OAC5E,MAAM,IAAI,MAAM,6EAA6E,EAEjG,MAAO,CACH,OAAAH,EACA,WAAAI,EACA,aAAAD,EACA,cAAAyC,CACZ,CACK,CACD,MAAM,IAAI,MAAM,6CAA6C,CACjE,CACoB,uBAAG,aACvB,SAAS,oBAAoB2D,EAAWr/F,EAAI,CAAE,SAAA05F,EAAU,aAAc4F,EAAQ,KAAArjI,EAAM,UAAAghI,EAAW,aAAApB,GAAgB,CAC3G,GAAI5/H,IAAS,QAAay9H,IAAa,OACnC,MAAM,IAAI,MAAM,qDAAqD,EAEzE,KAAM,CAAE,IAAArmE,CAAK,EAAGrzB,EAChB,GAAI05F,IAAa,OAAW,CACxB,KAAM,CAAE,UAAA6B,EAAW,YAAAgE,EAAa,KAAAt8F,CAAI,EAAKjD,EACnCw/F,EAAWnsE,EAAI,IAAI,UAAYwlE,YAAU,KAAM74F,EAAG,IAAI,MAAO64F,YAAU,aAAaa,CAAQ,CAAC,GAAI,EAAI,EAC3G+F,EAAiBD,CAAQ,EACzBH,EAAU,aAAgBxG,YAAU,OAAQ0C,CAAS,MAAOzB,SAAO,cAAcJ,EAAU4F,EAAQr8F,EAAK,gBAAgB,CAAC,GACzHo8F,EAAU,sBAAyBxG,YAAU,KAAMa,CAAQ,GAC3D2F,EAAU,YAAc,CAAC,GAAGE,EAAaF,EAAU,kBAAkB,CACxE,CACD,GAAIpjI,IAAS,OAAW,CACpB,MAAMujI,EAAWvjI,aAAgB48H,YAAU,KAAO58H,EAAOo3D,EAAI,IAAI,OAAQp3D,EAAM,EAAI,EACnFwjI,EAAiBD,CAAQ,EACrB3D,IAAiB,SACjBwD,EAAU,aAAexD,EAEhC,CACGoB,IACAoC,EAAU,UAAYpC,GAC1B,SAASwC,EAAiBC,EAAW,CACjCL,EAAU,KAAOK,EACjBL,EAAU,UAAYr/F,EAAG,UAAY,EACrCq/F,EAAU,UAAY,GACtBr/F,EAAG,kBAAoB,IAAI,IAC3Bq/F,EAAU,WAAar/F,EAAG,KAC1Bq/F,EAAU,UAAY,CAAC,GAAGr/F,EAAG,UAAW0/F,CAAS,CACpD,CACL,CAC2B,8BAAG,oBAC9B,SAAS,oBAAoBL,EAAW,CAAE,iBAAAM,EAAkB,YAAAC,EAAa,cAAAxF,EAAe,aAAAc,EAAc,UAAAb,GAAa,CAC3GD,IAAkB,SAClBiF,EAAU,cAAgBjF,GAC1Bc,IAAiB,SACjBmE,EAAU,aAAenE,GACzBb,IAAc,SACdgF,EAAU,UAAYhF,GAC1BgF,EAAU,iBAAmBM,EAC7BN,EAAU,YAAcO,CAC5B,CAC2B,8BAAG,qCCzE9B,cAAiB,SAAS3yE,EAAM3kE,EAAGhB,EAAG,CACpC,GAAIgB,IAAMhB,EAAG,MAAO,GAEpB,GAAIgB,GAAKhB,GAAK,OAAOgB,GAAK,UAAY,OAAOhB,GAAK,SAAU,CAC1D,GAAIgB,EAAE,cAAgBhB,EAAE,YAAa,MAAO,GAE5C,IAAIX,EAAQtD,EAAGsV,EACf,GAAI,MAAM,QAAQrQ,CAAC,EAAG,CAEpB,GADA3B,EAAS2B,EAAE,OACP3B,GAAUW,EAAE,OAAQ,MAAO,GAC/B,IAAKjE,EAAIsD,EAAQtD,MAAQ,GACvB,GAAI,CAAC4pE,EAAM3kE,EAAEjF,CAAC,EAAGiE,EAAEjE,CAAC,CAAC,EAAG,MAAO,GACjC,MAAO,EACR,CAID,GAAIiF,EAAE,cAAgB,OAAQ,OAAOA,EAAE,SAAWhB,EAAE,QAAUgB,EAAE,QAAUhB,EAAE,MAC5E,GAAIgB,EAAE,UAAY,OAAO,UAAU,QAAS,OAAOA,EAAE,QAAO,IAAOhB,EAAE,QAAO,EAC5E,GAAIgB,EAAE,WAAa,OAAO,UAAU,SAAU,OAAOA,EAAE,SAAQ,IAAOhB,EAAE,SAAQ,EAIhF,GAFAqR,EAAO,OAAO,KAAKrQ,CAAC,EACpB3B,EAASgS,EAAK,OACVhS,IAAW,OAAO,KAAKW,CAAC,EAAE,OAAQ,MAAO,GAE7C,IAAKjE,EAAIsD,EAAQtD,MAAQ,GACvB,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKiE,EAAGqR,EAAKtV,CAAC,CAAC,EAAG,MAAO,GAEhE,IAAKA,EAAIsD,EAAQtD,MAAQ,GAAI,CAC3B,IAAIyM,EAAM6I,EAAKtV,CAAC,EAEhB,GAAI,CAAC4pE,EAAM3kE,EAAEwH,CAAG,EAAGxI,EAAEwI,CAAG,CAAC,EAAG,MAAO,EACpC,CAED,MAAO,EACR,CAGD,OAAOxH,IAAIA,GAAKhB,IAAIA,CACtB,kCC3CIiX,WAAWshI,mBAAA,QAAiB,SAAU/G,EAAQ71F,EAAMppC,EAAI,CAEtD,OAAOopC,GAAQ,aACjBppC,EAAKopC,EACLA,EAAO,IAGTppC,EAAKopC,EAAK,IAAMppC,EAChB,IAAIq1F,EAAO,OAAOr1F,GAAM,WAAcA,EAAKA,EAAG,KAAO,UAAW,GAC5DimI,EAAOjmI,EAAG,MAAQ,UAAW,GAEjC,UAAUopC,EAAMisD,EAAK4wC,EAAMhH,EAAQ,GAAIA,CAAM,CAC/C,EAGAv6H,WAAS,SAAW,CAClB,gBAAiB,GACjB,MAAO,GACP,SAAU,GACV,qBAAsB,GACtB,cAAe,GACf,IAAK,GACL,GAAI,GACJ,KAAM,GACN,KAAM,EACR,EAEAA,WAAS,cAAgB,CACvB,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,EACT,EAEAA,WAAS,cAAgB,CACvB,MAAO,GACP,YAAa,GACb,WAAY,GACZ,kBAAmB,GACnB,aAAc,EAChB,EAEAA,WAAS,aAAe,CACtB,QAAS,GACT,KAAM,GACN,MAAO,GACP,SAAU,GACV,QAAS,GACT,QAAS,GACT,iBAAkB,GAClB,iBAAkB,GAClB,WAAY,GACZ,UAAW,GACX,UAAW,GACX,QAAS,GACT,OAAQ,GACR,SAAU,GACV,SAAU,GACV,YAAa,GACb,cAAe,GACf,cAAe,EACjB,EAGA,SAAS,UAAU0kC,EAAMisD,EAAK4wC,EAAMhH,EAAQiH,EAASC,EAAYC,EAAeC,EAAevE,EAAcwE,EAAU,CACrH,GAAIrH,GAAU,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAM,EAAG,CACjE5pC,EAAI4pC,EAAQiH,EAASC,EAAYC,EAAeC,EAAevE,EAAcwE,CAAQ,EACrF,QAASrwI,KAAOgpI,EAAQ,CACtB,IAAIuE,EAAMvE,EAAOhpI,CAAG,EACpB,GAAI,MAAM,QAAQutI,CAAG,GACnB,GAAIvtI,KAAOyO,WAAS,cAClB,QAASlb,EAAE,EAAGA,EAAEg6I,EAAI,OAAQh6I,IAC1B,UAAU4/C,EAAMisD,EAAK4wC,EAAMzC,EAAIh6I,CAAC,EAAG08I,EAAU,IAAMjwI,EAAM,IAAMzM,EAAG28I,EAAYD,EAASjwI,EAAKgpI,EAAQz1I,CAAC,UAEhGyM,KAAOyO,WAAS,eACzB,GAAI8+H,GAAO,OAAOA,GAAO,SACvB,QAAS94H,KAAQ84H,EACf,UAAUp6F,EAAMisD,EAAK4wC,EAAMzC,EAAI94H,CAAI,EAAGw7H,EAAU,IAAMjwI,EAAM,IAAM,cAAcyU,CAAI,EAAGy7H,EAAYD,EAASjwI,EAAKgpI,EAAQv0H,CAAI,OAExHzU,KAAOyO,WAAS,UAAa0kC,EAAK,SAAW,EAAEnzC,KAAOyO,WAAS,gBACxE,UAAU0kC,EAAMisD,EAAK4wC,EAAMzC,EAAK0C,EAAU,IAAMjwI,EAAKkwI,EAAYD,EAASjwI,EAAKgpI,CAAM,CAExF,CACDgH,EAAKhH,EAAQiH,EAASC,EAAYC,EAAeC,EAAevE,EAAcwE,CAAQ,CACvF,CACH,CAGA,SAAS,cAAc52I,EAAK,CAC1B,OAAOA,EAAI,QAAQ,KAAM,IAAI,EAAE,QAAQ,MAAO,IAAI,CACpD,0DC3FA,OAAO,eAAeoU,UAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,UAAA,cAAwBA,UAAA,WAAqBA,UAAA,YAAsBA,UAAA,aAAuBA,UAAA,YAAsBA,UAAA,UAAoB,OACpI,MAAMm8H,SAASp2F,OACTupB,QAAQhnB,cACR,SAAWgV,0BAEX,eAAiB,IAAI,IAAI,CAC3B,OACA,SACA,UACA,YACA,YACA,gBACA,gBACA,WACA,WACA,UACA,UACA,cACA,aACA,WACA,OACA,OACJ,CAAC,EACD,SAAS,UAAU69E,EAAQ1rI,EAAQ,GAAM,CACrC,OAAI,OAAO0rI,GAAU,UACV,GACP1rI,IAAU,GACH,CAAC,OAAO0rI,CAAM,EACpB1rI,EAEE,UAAU0rI,CAAM,GAAK1rI,EADjB,EAEf,CACiBuQ,UAAA,UAAG,UACpB,MAAM,aAAe,IAAI,IAAI,CACzB,OACA,gBACA,mBACA,cACA,gBACJ,CAAC,EACD,SAAS,OAAOm7H,EAAQ,CACpB,UAAWhpI,KAAOgpI,EAAQ,CACtB,GAAI,aAAa,IAAIhpI,CAAG,EACpB,MAAO,GACX,MAAMutI,EAAMvE,EAAOhpI,CAAG,EAGtB,GAFI,MAAM,QAAQutI,CAAG,GAAKA,EAAI,KAAK,MAAM,GAErC,OAAOA,GAAO,UAAY,OAAOA,CAAG,EACpC,MAAO,EACd,CACD,MAAO,EACX,CACA,SAAS,UAAUvE,EAAQ,CACvB,IAAI/4F,EAAQ,EACZ,UAAWjwC,KAAOgpI,EAAQ,CACtB,GAAIhpI,IAAQ,OACR,MAAO,KAEX,GADAiwC,IACI,gBAAe,IAAIjwC,CAAG,IAEtB,OAAOgpI,EAAOhpI,CAAG,GAAK,aAClBgqI,SAAO,UAAUhB,EAAOhpI,CAAG,EAAIutI,GAASt9F,GAAS,UAAUs9F,CAAG,CAAE,EAEpEt9F,IAAU,KACV,MAAO,IACd,CACD,OAAOA,CACX,CACA,SAAS,YAAYjC,EAAUtkC,EAAK,GAAI4mI,EAAW,CAC3CA,IAAc,KACd5mI,EAAK,YAAYA,CAAE,GACvB,MAAMF,EAAIwkC,EAAS,MAAMtkC,CAAE,EAC3B,OAAO,aAAaskC,EAAUxkC,CAAC,CACnC,CACmBqE,UAAA,YAAG,YACtB,SAAS,aAAamgC,EAAUxkC,EAAG,CAE/B,OADmBwkC,EAAS,UAAUxkC,CAAC,EACrB,MAAM,GAAG,EAAE,CAAC,EAAI,GACtC,CACoBqE,UAAA,aAAG,aACvB,MAAM,oBAAsB,QAC5B,SAAS,YAAYnE,EAAI,CACrB,OAAOA,EAAKA,EAAG,QAAQ,oBAAqB,EAAE,EAAI,EACtD,CACmBmE,UAAA,YAAG,YACtB,SAAS,WAAWmgC,EAAUuiG,EAAQ7mI,EAAI,CACtC,OAAAA,EAAK,YAAYA,CAAE,EACZskC,EAAS,QAAQuiG,EAAQ7mI,CAAE,CACtC,CACkBmE,UAAA,WAAG,WACrB,MAAM,OAAS,wBACf,SAAS,cAAcm7H,EAAQuH,EAAQ,CACnC,GAAI,OAAOvH,GAAU,UACjB,MAAO,GACX,KAAM,CAAE,SAAAwH,EAAU,YAAAC,GAAgB,KAAK,KACjCC,EAAQ,YAAY1H,EAAOwH,CAAQ,GAAKD,CAAM,EAC9CI,EAAU,CAAE,GAAID,GAChBE,EAAa,YAAYH,EAAaC,EAAO,EAAK,EAClDG,EAAY,GACZC,EAAa,IAAI,IACvB,gBAAS9H,EAAQ,CAAE,QAAS,EAAI,EAAI,CAACuE,EAAK0C,EAASjvI,EAAGmvI,IAAkB,CACpE,GAAIA,IAAkB,OAClB,OACJ,MAAMY,EAAWH,EAAaX,EAC9B,IAAIe,EAAcL,EAAQR,CAAa,EACnC,OAAO5C,EAAIiD,CAAQ,GAAK,WACxBQ,EAAcC,EAAO,KAAK,KAAM1D,EAAIiD,CAAQ,CAAC,GACjDU,EAAU,KAAK,KAAM3D,EAAI,OAAO,EAChC2D,EAAU,KAAK,KAAM3D,EAAI,cAAc,EACvCoD,EAAQV,CAAO,EAAIe,EACnB,SAASC,EAAO/pI,EAAK,CAEjB,MAAM8qC,EAAW,KAAK,KAAK,YAAY,QAEvC,GADA9qC,EAAM,YAAY8pI,EAAch/F,EAASg/F,EAAa9pI,CAAG,EAAIA,CAAG,EAC5D4pI,EAAW,IAAI5pI,CAAG,EAClB,MAAMiqI,EAASjqI,CAAG,EACtB4pI,EAAW,IAAI5pI,CAAG,EAClB,IAAIkqI,EAAW,KAAK,KAAKlqI,CAAG,EAC5B,OAAI,OAAOkqI,GAAY,WACnBA,EAAW,KAAK,KAAKA,CAAQ,GAC7B,OAAOA,GAAY,SACnBC,EAAiB9D,EAAK6D,EAAS,OAAQlqI,CAAG,EAErCA,IAAQ,YAAY6pI,CAAQ,IAC7B7pI,EAAI,CAAC,IAAM,KACXmqI,EAAiB9D,EAAKsD,EAAU3pI,CAAG,EAAGA,CAAG,EACzC2pI,EAAU3pI,CAAG,EAAIqmI,GAGjB,KAAK,KAAKrmI,CAAG,EAAI6pI,GAGlB7pI,CACV,CACD,SAASgqI,EAAUh6H,EAAQ,CACvB,GAAI,OAAOA,GAAU,SAAU,CAC3B,GAAI,CAAC,OAAO,KAAKA,CAAM,EACnB,MAAM,IAAI,MAAM,mBAAmBA,CAAM,GAAG,EAChD+5H,EAAO,KAAK,KAAM,IAAI/5H,CAAM,EAAE,CACjC,CACJ,CACT,CAAK,EACM25H,EACP,SAASQ,EAAiBC,EAAMC,EAAMrqI,EAAK,CACvC,GAAIqqI,IAAS,QAAa,CAACp0E,QAAMm0E,EAAMC,CAAI,EACvC,MAAMJ,EAASjqI,CAAG,CACzB,CACD,SAASiqI,EAASjqI,EAAK,CACnB,OAAO,IAAI,MAAM,cAAcA,CAAG,oCAAoC,CACzE,CACL,CACqB2G,UAAA,cAAG,cCxJxB,OAAO,eAAe6gI,WAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,WAAA,QAAoCA,WAAA,2CAAkC,OACtE,MAAM,aAAe96F,WACf49F,aAAar7F,SACb,gBAAkBgV,cAClB,WAAahV,SACb,WAAasV,WACb,UAAYuE,QACZ,YAAcC,UACd84E,YAAY74E,QACZ65E,UAAU55E,QACVshF,YAAYrhF,UACZ45E,SAAS35E,OACT,SAAWC,OAEjB,SAAS,qBAAqBpgB,EAAI,CAC9B,GAAI,YAAYA,CAAE,IACd,cAAcA,CAAE,EACZ,kBAAkBA,CAAE,GAAG,CACvB,iBAAiBA,CAAE,EACnB,MACH,CAEL,iBAAiBA,EAAI,OAAU,aAAa,sBAAsBA,CAAE,CAAC,CACzE,CAC4Bw+F,WAAA,qBAAG,qBAC/B,SAAS,iBAAiB,CAAE,IAAAnrE,EAAK,aAAA2nE,EAAc,OAAAlC,EAAQ,UAAAmC,EAAW,KAAAh4F,CAAM,EAAEw3D,EAAM,CACxEx3D,EAAK,KAAK,IACVowB,EAAI,KAAK2nE,KAAkBnC,YAAU,KAAMgB,UAAQ,QAAQ,IAAI,KAAKA,UAAQ,QAAQ,MAAM,GAAIoB,EAAU,OAAQ,IAAM,CAClH5nE,EAAI,QAASwlE,YAAU,mBAAoB,cAAcC,EAAQ71F,CAAI,CAAC,EAAE,EACxE,qBAAqBowB,EAAKpwB,CAAI,EAC9BowB,EAAI,KAAKonC,CAAI,CACzB,CAAS,EAGDpnC,EAAI,KAAK2nE,KAAkBnC,YAAU,KAAMgB,UAAQ,QAAQ,IAAI,KAAK,kBAAkB52F,CAAI,CAAC,GAAIg4F,EAAU,OAAQ,IAAM5nE,EAAI,KAAK,cAAcylE,EAAQ71F,CAAI,CAAC,EAAE,KAAKw3D,CAAI,CAAC,CAE/K,CACA,SAAS,kBAAkBx3D,EAAM,CAC7B,SAAW41F,YAAU,MAAOgB,UAAQ,QAAQ,YAAY,QAAQA,UAAQ,QAAQ,UAAU,KAAKA,UAAQ,QAAQ,kBAAkB,KAAKA,UAAQ,QAAQ,QAAQ,IAAIA,UAAQ,QAAQ,IAAI,GAAG52F,EAAK,cAAiB41F,YAAU,OAAQgB,UAAQ,QAAQ,cAAc,MAAQhB,YAAU,GAAG,MACxR,CACA,SAAS,qBAAqBxlE,EAAKpwB,EAAM,CACrCowB,EAAI,GAAGwmE,UAAQ,QAAQ,OAAQ,IAAM,CACjCxmE,EAAI,IAAIwmE,UAAQ,QAAQ,gBAAkBhB,YAAU,KAAMgB,UAAQ,QAAQ,MAAM,IAAIA,UAAQ,QAAQ,YAAY,EAAE,EAClHxmE,EAAI,IAAIwmE,UAAQ,QAAQ,cAAgBhB,YAAU,KAAMgB,UAAQ,QAAQ,MAAM,IAAIA,UAAQ,QAAQ,UAAU,EAAE,EAC9GxmE,EAAI,IAAIwmE,UAAQ,QAAQ,sBAAwBhB,YAAU,KAAMgB,UAAQ,QAAQ,MAAM,IAAIA,UAAQ,QAAQ,kBAAkB,EAAE,EAC9HxmE,EAAI,IAAIwmE,UAAQ,QAAQ,YAAchB,YAAU,KAAMgB,UAAQ,QAAQ,MAAM,IAAIA,UAAQ,QAAQ,QAAQ,EAAE,EACtG52F,EAAK,YACLowB,EAAI,IAAIwmE,UAAQ,QAAQ,kBAAoBhB,YAAU,KAAMgB,UAAQ,QAAQ,MAAM,IAAIA,UAAQ,QAAQ,cAAc,EAAE,CAClI,EAAO,IAAM,CACLxmE,EAAI,IAAIwmE,UAAQ,QAAQ,gBAAkBhB,YAAU,MAAO,EAC3DxlE,EAAI,IAAIwmE,UAAQ,QAAQ,cAAgBhB,YAAU,aAAc,EAChExlE,EAAI,IAAIwmE,UAAQ,QAAQ,sBAAwBhB,YAAU,aAAc,EACxExlE,EAAI,IAAIwmE,UAAQ,QAAQ,SAAUA,UAAQ,QAAQ,IAAI,EAClD52F,EAAK,YACLowB,EAAI,IAAIwmE,UAAQ,QAAQ,kBAAoBhB,YAAU,MAAO,CACzE,CAAK,CACL,CACA,SAAS,iBAAiB74F,EAAI,CAC1B,KAAM,CAAE,OAAA84F,EAAQ,KAAA71F,EAAM,IAAAowB,CAAG,EAAKrzB,EAC9B,iBAAiBA,EAAI,IAAM,CACnBiD,EAAK,UAAY61F,EAAO,UACxB,eAAe94F,CAAE,EACrB,eAAeA,CAAE,EACjBqzB,EAAI,IAAIwmE,UAAQ,QAAQ,QAAS,IAAI,EACrCxmE,EAAI,IAAIwmE,UAAQ,QAAQ,OAAQ,CAAC,EAC7B52F,EAAK,aACL,eAAejD,CAAE,EACrB,gBAAgBA,CAAE,EAClB,cAAcA,CAAE,CACxB,CAAK,CAEL,CACA,SAAS,eAAeA,EAAI,CAExB,KAAM,CAAE,IAAAqzB,EAAK,aAAA2nE,CAAc,EAAGh7F,EAC9BA,EAAG,UAAYqzB,EAAI,MAAM,eAAiBwlE,YAAU,KAAMmC,CAAY,YAAY,EAClF3nE,EAAI,MAAOwlE,YAAU,KAAM74F,EAAG,SAAS,gBAAiB,IAAMqzB,EAAI,UAAWwlE,YAAU,KAAM74F,EAAG,SAAS,YAAc64F,YAAU,aAAc,CAAC,EAChJxlE,EAAI,MAAOwlE,YAAU,KAAM74F,EAAG,SAAS,gBAAiB,IAAMqzB,EAAI,UAAWwlE,YAAU,KAAM74F,EAAG,SAAS,YAAc64F,YAAU,aAAc,CAAC,CACpJ,CACA,SAAS,cAAcC,EAAQ71F,EAAM,CACjC,MAAMu9F,EAAQ,OAAO1H,GAAU,UAAYA,EAAO71F,EAAK,QAAQ,EAC/D,OAAOu9F,IAAUv9F,EAAK,KAAK,QAAUA,EAAK,KAAK,YAAe41F,YAAU,mBAAoB2H,CAAK,MAAQ3H,YAAU,GACvH,CAEA,SAAS,cAAc74F,EAAI2pD,EAAO,CAC9B,GAAI,YAAY3pD,CAAE,IACd,cAAcA,CAAE,EACZ,kBAAkBA,CAAE,GAAG,CACvB,iBAAiBA,EAAI2pD,CAAK,EAC1B,MACH,IAED,aAAa,mBAAmB3pD,EAAI2pD,CAAK,CACjD,CACA,SAAS,kBAAkB,CAAE,OAAAmvC,EAAQ,KAAAviI,GAAQ,CACzC,GAAI,OAAOuiI,GAAU,UACjB,MAAO,CAACA,EACZ,UAAWhpI,KAAOgpI,EACd,GAAIviI,EAAK,MAAM,IAAIzG,CAAG,EAClB,MAAO,GACf,MAAO,EACX,CACA,SAAS,YAAYkwC,EAAI,CACrB,OAAO,OAAOA,EAAG,QAAU,SAC/B,CACA,SAAS,iBAAiBA,EAAI2pD,EAAO,CACjC,KAAM,CAAE,OAAAmvC,EAAQ,IAAAzlE,EAAK,KAAApwB,CAAI,EAAKjD,EAC1BiD,EAAK,UAAY61F,EAAO,UACxB,eAAe94F,CAAE,EACrB,cAAcA,CAAE,EAChB,iBAAiBA,CAAE,EACnB,MAAM46F,EAAYvnE,EAAI,MAAM,QAASwmE,UAAQ,QAAQ,MAAM,EAC3D,gBAAgB75F,EAAI46F,CAAS,EAE7BvnE,EAAI,IAAIs2B,KAAWkvC,YAAU,KAAM+B,CAAS,QAAQf,UAAQ,QAAQ,MAAM,EAAE,CAChF,CACA,SAAS,cAAc75F,EAAI,IACnB85F,SAAO,mBAAmB95F,CAAE,EAChC,qBAAqBA,CAAE,CAC3B,CACA,SAAS,gBAAgBA,EAAI46F,EAAW,CACpC,GAAI56F,EAAG,KAAK,IACR,OAAO,eAAeA,EAAI,CAAE,EAAE,GAAO46F,CAAS,EAClD,MAAM5V,KAAYsc,aAAW,gBAAgBthG,EAAG,MAAM,EAChDwhG,KAAmBF,aAAW,wBAAwBthG,EAAIglF,CAAK,EACrE,eAAehlF,EAAIglF,EAAO,CAACwc,EAAc5G,CAAS,CACtD,CACA,SAAS,qBAAqB56F,EAAI,CAC9B,KAAM,CAAE,OAAA84F,EAAQ,cAAA4C,EAAe,KAAAz4F,EAAM,KAAA1sC,CAAI,EAAKypC,EAC1C84F,EAAO,MAAQ71F,EAAK,0BAA6B62F,SAAO,sBAAsBhB,EAAQviI,EAAK,KAAK,GAChGA,EAAK,OAAO,KAAK,6CAA6CmlI,CAAa,GAAG,CAEtF,CACA,SAAS,eAAe17F,EAAI,CACxB,KAAM,CAAE,OAAA84F,EAAQ,KAAA71F,CAAM,EAAGjD,EACrB84F,EAAO,UAAY,QAAa71F,EAAK,aAAeA,EAAK,iBACrD62F,SAAO,iBAAiB95F,EAAI,uCAAuC,CAE/E,CACA,SAAS,cAAcA,EAAI,CACvB,MAAMwgG,EAAQxgG,EAAG,OAAOA,EAAG,KAAK,QAAQ,EACpCwgG,IACAxgG,EAAG,UAAauhG,YAAU,YAAYvhG,EAAG,KAAK,YAAaA,EAAG,OAAQwgG,CAAK,EACnF,CACA,SAAS,iBAAiBxgG,EAAI,CAC1B,GAAIA,EAAG,OAAO,QAAU,CAACA,EAAG,UAAU,OAClC,MAAM,IAAI,MAAM,6BAA6B,CACrD,CACA,SAAS,eAAe,CAAE,IAAAqzB,EAAK,UAAA4nE,EAAW,OAAAnC,EAAQ,cAAA4C,EAAe,KAAAz4F,GAAQ,CACrE,MAAM/0C,EAAM4qI,EAAO,SACnB,GAAI71F,EAAK,WAAa,GAClBowB,EAAI,QAASwlE,YAAU,KAAMgB,UAAQ,QAAQ,IAAI,eAAe3rI,CAAG,GAAG,UAEjE,OAAO+0C,EAAK,UAAY,WAAY,CACzC,MAAMi2F,KAAiBL,YAAU,OAAQ6C,CAAa,YAChD+F,EAAWpuE,EAAI,WAAW,OAAQ,CAAE,IAAK4nE,EAAU,IAAI,CAAE,EAC/D5nE,EAAI,QAASwlE,YAAU,KAAMgB,UAAQ,QAAQ,IAAI,kBAAkB3rI,CAAG,KAAKgrI,CAAU,KAAKuI,CAAQ,UAAU,CAC/G,CACL,CACA,SAAS,cAAczhG,EAAI,CACvB,KAAM,CAAE,IAAAqzB,EAAK,UAAA4nE,EAAW,aAAAD,EAAc,gBAAA0G,EAAiB,KAAAz+F,CAAM,EAAGjD,EAC5Di7F,EAAU,OAEV5nE,EAAI,MAAOwlE,YAAU,KAAMgB,UAAQ,QAAQ,MAAM,SAAU,IAAMxmE,EAAI,OAAOwmE,UAAQ,QAAQ,IAAI,EAAG,IAAMxmE,EAAI,SAAUwlE,YAAU,SAAU6I,CAAe,IAAI7H,UAAQ,QAAQ,OAAO,GAAG,CAAC,GAGzLxmE,EAAI,UAAWwlE,YAAU,KAAMmC,CAAY,UAAWnB,UAAQ,QAAQ,OAAO,EACzE52F,EAAK,aACL,gBAAgBjD,CAAE,EACtBqzB,EAAI,UAAWwlE,YAAU,KAAMgB,UAAQ,QAAQ,MAAM,QAAQ,EAErE,CACA,SAAS,gBAAgB,CAAE,IAAAxmE,EAAK,UAAAsuE,EAAW,MAAAjpI,EAAO,MAAA00B,CAAK,EAAI,CACnD10B,aAAiBmgI,YAAU,MAC3BxlE,EAAI,UAAWwlE,YAAU,KAAM8I,CAAS,SAAUjpI,CAAK,EACvD00B,aAAiByrG,YAAU,MAC3BxlE,EAAI,UAAWwlE,YAAU,KAAM8I,CAAS,SAAUv0G,CAAK,CAC/D,CACA,SAAS,eAAe4S,EAAIglF,EAAO4c,EAAYhH,EAAW,CACtD,KAAM,CAAE,IAAAvnE,EAAK,OAAAylE,EAAQ,KAAA78H,EAAM,UAAAo+H,EAAW,KAAAp3F,EAAM,KAAA1sC,CAAM,EAAGypC,EAC/C,CAAE,MAAAg5F,CAAO,EAAGziI,EAClB,GAAIuiI,EAAO,OAAS71F,EAAK,uBAAyB,IAAK62F,SAAO,sBAAsBhB,EAAQE,CAAK,GAAI,CACjG3lE,EAAI,MAAM,IAAM,YAAYrzB,EAAI,OAAQg5F,EAAM,IAAI,KAAK,UAAU,CAAC,EAClE,MACH,CACI/1F,EAAK,KACN,iBAAiBjD,EAAIglF,CAAK,EAC9B3xD,EAAI,MAAM,IAAM,CACZ,UAAW1tC,KAASqzG,EAAM,MACtB6I,EAAcl8G,CAAK,EACvBk8G,EAAc7I,EAAM,IAAI,CAChC,CAAK,EACD,SAAS6I,EAAcl8G,EAAO,IACjB,gBAAgB,gBAAgBmzG,EAAQnzG,CAAK,IAElDA,EAAM,MACN0tC,EAAI,MAAO,WAAW,eAAe1tC,EAAM,KAAM1pB,EAAMgnC,EAAK,aAAa,CAAC,EAC1E,gBAAgBjD,EAAIra,CAAK,EACrBq/F,EAAM,SAAW,GAAKA,EAAM,CAAC,IAAMr/F,EAAM,MAAQi8G,IACjDvuE,EAAI,KAAI,KACJ,WAAW,iBAAiBrzB,CAAE,GAEtCqzB,EAAI,MAAK,GAGT,gBAAgBrzB,EAAIra,CAAK,EAGxB00G,GACDhnE,EAAI,MAAOwlE,YAAU,KAAMgB,UAAQ,QAAQ,MAAM,QAAQe,GAAa,CAAC,EAAE,EAChF,CACL,CACA,SAAS,gBAAgB56F,EAAIra,EAAO,CAChC,KAAM,CAAE,IAAA0tC,EAAK,OAAAylE,EAAQ,KAAM,CAAE,YAAAgJ,CAAW,CAAK,EAAG9hG,EAC5C8hG,MACI,WAAW,gBAAgB9hG,EAAIra,EAAM,IAAI,EACjD0tC,EAAI,MAAM,IAAM,CACZ,UAAW0oE,KAAQp2G,EAAM,SACb,gBAAgB,eAAemzG,EAAQiD,CAAI,GAC/C,YAAY/7F,EAAI+7F,EAAK,QAASA,EAAK,WAAYp2G,EAAM,IAAI,CAGzE,CAAK,CACL,CACA,SAAS,iBAAiBqa,EAAIglF,EAAO,CAC7BhlF,EAAG,UAAU,MAAQ,CAACA,EAAG,KAAK,cAElC,kBAAkBA,EAAIglF,CAAK,EACtBhlF,EAAG,KAAK,iBACT,mBAAmBA,EAAIglF,CAAK,EAChC,kBAAkBhlF,EAAIA,EAAG,SAAS,EACtC,CACA,SAAS,kBAAkBA,EAAIglF,EAAO,CAClC,GAAKA,EAAM,OAEX,IAAI,CAAChlF,EAAG,UAAU,OAAQ,CACtBA,EAAG,UAAYglF,EACf,MACH,CACDA,EAAM,QAASpgH,GAAM,CACZ,aAAao7B,EAAG,UAAWp7B,CAAC,GAC7B,iBAAiBo7B,EAAI,SAASp7B,CAAC,6BAA6Bo7B,EAAG,UAAU,KAAK,GAAG,CAAC,GAAG,CAEjG,CAAK,EACD,kBAAkBA,EAAIglF,CAAK,EAC/B,CACA,SAAS,mBAAmBhlF,EAAIkqC,EAAI,CAC5BA,EAAG,OAAS,GAAK,EAAEA,EAAG,SAAW,GAAKA,EAAG,SAAS,MAAM,IACxD,iBAAiBlqC,EAAI,iDAAiD,CAE9E,CACA,SAAS,kBAAkBA,EAAIkqC,EAAI,CAC/B,MAAM6uD,EAAQ/4F,EAAG,KAAK,MAAM,IAC5B,UAAWm5F,KAAWJ,EAAO,CACzB,MAAMgD,EAAOhD,EAAMI,CAAO,EAC1B,GAAI,OAAO4C,GAAQ,aAAgB,gBAAgB,eAAe/7F,EAAG,OAAQ+7F,CAAI,EAAG,CAChF,KAAM,CAAE,KAAAztI,CAAI,EAAKytI,EAAK,WAClBztI,EAAK,QAAU,CAACA,EAAK,KAAMsW,GAAM,kBAAkBslE,EAAItlE,CAAC,CAAC,GACzD,iBAAiBo7B,EAAI,iBAAiB1xC,EAAK,KAAK,GAAG,CAAC,kBAAkB6qI,CAAO,GAAG,CAEvF,CACJ,CACL,CACA,SAAS,kBAAkB4I,EAAOC,EAAM,CACpC,OAAOD,EAAM,SAASC,CAAI,GAAMA,IAAS,UAAYD,EAAM,SAAS,SAAS,CACjF,CACA,SAAS,aAAa73D,EAAItlE,EAAG,CACzB,OAAOslE,EAAG,SAAStlE,CAAC,GAAMA,IAAM,WAAaslE,EAAG,SAAS,QAAQ,CACrE,CACA,SAAS,kBAAkBlqC,EAAIiiG,EAAW,CACtC,MAAM/3D,EAAK,GACX,UAAWtlE,KAAKo7B,EAAG,UACX,aAAaiiG,EAAWr9H,CAAC,EACzBslE,EAAG,KAAKtlE,CAAC,EACJq9H,EAAU,SAAS,SAAS,GAAKr9H,IAAM,UAC5CslE,EAAG,KAAK,SAAS,EAEzBlqC,EAAG,UAAYkqC,CACnB,CACA,SAAS,iBAAiBlqC,EAAI9xC,EAAK,CAC/B,MAAMgrI,EAAal5F,EAAG,UAAU,OAASA,EAAG,cAC5C9xC,GAAO,QAAQgrI,CAAU,qBACrBY,SAAO,iBAAiB95F,EAAI9xC,EAAK8xC,EAAG,KAAK,WAAW,CAC5D,CACA,MAAM,UAAW,CACb,YAAYA,EAAI/uC,EAAKkoI,EAAS,CAc1B,MAbI,UAAU,sBAAsBn5F,EAAI/uC,EAAKkoI,CAAO,EACpD,KAAK,IAAMn5F,EAAG,IACd,KAAK,UAAYA,EAAG,UACpB,KAAK,QAAUm5F,EACf,KAAK,KAAOn5F,EAAG,KACf,KAAK,OAASA,EAAG,OAAOm5F,CAAO,EAC/B,KAAK,MAAQloI,EAAI,OAAS+uC,EAAG,KAAK,OAAS,KAAK,QAAU,KAAK,OAAO,MACtE,KAAK,eAAkB85F,SAAO,gBAAgB95F,EAAI,KAAK,OAAQm5F,EAAS,KAAK,KAAK,EAClF,KAAK,WAAaloI,EAAI,WACtB,KAAK,aAAe+uC,EAAG,OACvB,KAAK,OAAS,GACd,KAAK,GAAKA,EACV,KAAK,IAAM/uC,EACP,KAAK,MACL,KAAK,WAAa+uC,EAAG,IAAI,MAAM,UAAW,QAAQ,KAAK,MAAOA,CAAE,CAAC,UAGjE,KAAK,WAAa,KAAK,YACnB,IAAK,UAAU,iBAAiB,KAAK,OAAQ/uC,EAAI,WAAYA,EAAI,cAAc,EAC/E,MAAM,IAAI,MAAM,GAAGkoI,CAAO,kBAAkB,KAAK,UAAUloI,EAAI,UAAU,CAAC,EAAE,GAGhF,SAAUA,EAAMA,EAAI,YAAcA,EAAI,SAAW,MACjD,KAAK,UAAY+uC,EAAG,IAAI,MAAM,QAAS65F,UAAQ,QAAQ,MAAM,EAEpE,CACD,OAAOv9G,EAAW4lH,EAAeC,EAAY,CACzC,KAAK,cAAetJ,YAAU,KAAKv8G,CAAS,EAAG4lH,EAAeC,CAAU,CAC3E,CACD,WAAW7lH,EAAW4lH,EAAeC,EAAY,CAC7C,KAAK,IAAI,GAAG7lH,CAAS,EACjB6lH,EACAA,IAEA,KAAK,MAAK,EACVD,GACA,KAAK,IAAI,OACTA,IACI,KAAK,WACL,KAAK,IAAI,SAGT,KAAK,UACL,KAAK,IAAI,QAET,KAAK,IAAI,MAEpB,CACD,KAAK5lH,EAAW6lH,EAAY,CACxB,KAAK,cAAetJ,YAAU,KAAKv8G,CAAS,EAAG,OAAW6lH,CAAU,CACvE,CACD,KAAK7lH,EAAW,CACZ,GAAIA,IAAc,OAAW,CACzB,KAAK,MAAK,EACL,KAAK,WACN,KAAK,IAAI,GAAG,EAAK,EACrB,MACH,CACD,KAAK,IAAI,GAAGA,CAAS,EACrB,KAAK,MAAK,EACN,KAAK,UACL,KAAK,IAAI,QAET,KAAK,IAAI,MAChB,CACD,UAAUA,EAAW,CACjB,GAAI,CAAC,KAAK,MACN,OAAO,KAAK,KAAKA,CAAS,EAC9B,KAAM,CAAE,WAAA6gH,CAAY,EAAG,KACvB,KAAK,QAAStE,YAAU,KAAMsE,CAAU,yBAA0BtE,YAAU,IAAI,KAAK,aAAY,EAAIv8G,CAAS,CAAC,GAAG,CACrH,CACD,MAAM67B,EAAQiqF,EAAalI,EAAY,CACnC,GAAIkI,EAAa,CACb,KAAK,UAAUA,CAAW,EAC1B,KAAK,OAAOjqF,EAAQ+hF,CAAU,EAC9B,KAAK,UAAU,EAAE,EACjB,MACH,CACD,KAAK,OAAO/hF,EAAQ+hF,CAAU,CACjC,CACD,OAAO/hF,EAAQ+hF,EAAY,EAEtB/hF,EAAS,SAAS,iBAAmB,SAAS,aAAa,KAAM,KAAK,IAAI,MAAO+hF,CAAU,CAC/F,CACD,YAAa,IACL,SAAS,aAAa,KAAM,KAAK,IAAI,YAAc,SAAS,iBAAiB,CACpF,CACD,OAAQ,CACJ,GAAI,KAAK,YAAc,OACnB,MAAM,IAAI,MAAM,yCAAyC,KACzD,SAAS,kBAAkB,KAAK,IAAK,KAAK,SAAS,CAC1D,CACD,GAAGzD,EAAM,CACA,KAAK,WACN,KAAK,IAAI,GAAGA,CAAI,CACvB,CACD,UAAUruI,EAAKi6I,EAAQ,CACfA,EACA,OAAO,OAAO,KAAK,OAAQj6I,CAAG,EAE9B,KAAK,OAASA,CACrB,CACD,WAAWuhG,EAAO24C,EAAWC,EAAa1J,YAAU,IAAK,CACrD,KAAK,IAAI,MAAM,IAAM,CACjB,KAAK,WAAWlvC,EAAO44C,CAAU,EACjCD,GACZ,CAAS,CACJ,CACD,WAAW34C,EAAQkvC,YAAU,IAAK0J,EAAa1J,YAAU,IAAK,CAC1D,GAAI,CAAC,KAAK,MACN,OACJ,KAAM,CAAE,IAAAxlE,EAAK,WAAA8pE,EAAY,WAAApD,EAAY,IAAA9oI,CAAG,EAAK,KAC7CoiE,EAAI,MAAOwlE,YAAU,OAAQA,YAAU,KAAMsE,CAAU,iBAAkBoF,CAAU,CAAC,EAChF54C,IAAUkvC,YAAU,KACpBxlE,EAAI,OAAOs2B,EAAO,EAAI,GACtBowC,EAAW,QAAU9oI,EAAI,kBACzBoiE,EAAI,OAAO,KAAK,aAAc,GAC9B,KAAK,WAAU,EACXs2B,IAAUkvC,YAAU,KACpBxlE,EAAI,OAAOs2B,EAAO,EAAK,GAE/Bt2B,EAAI,KAAI,CACX,CACD,cAAe,CACX,KAAM,CAAE,IAAAA,EAAK,WAAA8pE,EAAY,WAAApD,EAAY,IAAA9oI,EAAK,GAAA+uC,CAAI,EAAG,KACjD,SAAW64F,YAAU,IAAI2J,EAAc,EAAIC,EAAoB,GAC/D,SAASD,GAAiB,CACtB,GAAIzI,EAAW,OAAQ,CAEnB,GAAI,EAAEoD,aAAsBtE,YAAU,MAClC,MAAM,IAAI,MAAM,0BAA0B,EAC9C,MAAMjyE,EAAK,MAAM,QAAQmzE,CAAU,EAAIA,EAAa,CAACA,CAAU,EAC/D,SAAWlB,YAAU,QAAU,WAAW,gBAAgBjyE,EAAIu2E,EAAYn9F,EAAG,KAAK,cAAe,WAAW,SAAS,KAAK,CAAC,EAC9H,CACD,OAAO64F,YAAU,GACpB,CACD,SAAS4J,GAAqB,CAC1B,GAAIxxI,EAAI,eAAgB,CACpB,MAAMyxI,EAAoBrvE,EAAI,WAAW,gBAAiB,CAAE,IAAKpiE,EAAI,cAAc,CAAE,EACrF,SAAW4nI,YAAU,MAAO6J,CAAiB,IAAIvF,CAAU,GAC9D,CACD,OAAOtE,YAAU,GACpB,CACJ,CACD,UAAU8J,EAAMh5C,EAAO,CACnB,MAAM01C,KAAgB,YAAY,cAAc,KAAK,GAAIsD,CAAI,KACzD,YAAY,qBAAqBtD,EAAW,KAAK,GAAIsD,CAAI,KACzD,YAAY,qBAAqBtD,EAAWsD,CAAI,EACpD,MAAMC,EAAc,CAAE,GAAG,KAAK,GAAI,GAAGvD,EAAW,MAAO,OAAW,MAAO,QACzE,qBAAcuD,EAAaj5C,CAAK,EACzBi5C,CACV,CACD,eAAeC,EAAWpJ,EAAQ,CAC9B,KAAM,CAAE,GAAAz5F,EAAI,IAAAqzB,CAAK,EAAG,KACfrzB,EAAG,KAAK,cAETA,EAAG,QAAU,IAAQ6iG,EAAU,QAAU,SACzC7iG,EAAG,MAAQ85F,SAAO,eAAe,MAAMzmE,EAAKwvE,EAAU,MAAO7iG,EAAG,MAAOy5F,CAAM,GAE7Ez5F,EAAG,QAAU,IAAQ6iG,EAAU,QAAU,SACzC7iG,EAAG,MAAQ85F,SAAO,eAAe,MAAMzmE,EAAKwvE,EAAU,MAAO7iG,EAAG,MAAOy5F,CAAM,GAEpF,CACD,oBAAoBoJ,EAAWl5C,EAAO,CAClC,KAAM,CAAE,GAAA3pD,EAAI,IAAAqzB,CAAK,EAAG,KACpB,GAAIrzB,EAAG,KAAK,cAAgBA,EAAG,QAAU,IAAQA,EAAG,QAAU,IAC1D,OAAAqzB,EAAI,GAAGs2B,EAAO,IAAM,KAAK,eAAek5C,EAAWhK,YAAU,IAAI,CAAC,EAC3D,EAEd,CACL,CACkB2F,WAAA,WAAG,WACrB,SAAS,YAAYx+F,EAAIm5F,EAASloI,EAAK6xI,EAAU,CAC7C,MAAM7I,EAAM,IAAI,WAAWj6F,EAAI/uC,EAAKkoI,CAAO,EACvC,SAAUloI,EACVA,EAAI,KAAKgpI,EAAK6I,CAAQ,EAEjB7I,EAAI,OAAShpI,EAAI,YAClB,UAAU,iBAAiBgpI,EAAKhpI,CAAG,EAElC,UAAWA,KACZ,UAAU,kBAAkBgpI,EAAKhpI,CAAG,GAEnCA,EAAI,SAAWA,EAAI,cACpB,UAAU,iBAAiBgpI,EAAKhpI,CAAG,CAE/C,CACA,MAAM,aAAe,sBACf,sBAAwB,mCAC9B,SAAS,QAAQmoI,EAAO,CAAE,UAAA2J,EAAW,UAAAC,EAAW,YAAAzD,CAAW,EAAI,CAC3D,IAAI0D,EACAhnI,EACJ,GAAIm9H,IAAU,GACV,OAAOS,UAAQ,QAAQ,SAC3B,GAAIT,EAAM,CAAC,IAAM,IAAK,CAClB,GAAI,CAAC,aAAa,KAAKA,CAAK,EACxB,MAAM,IAAI,MAAM,yBAAyBA,CAAK,EAAE,EACpD6J,EAAc7J,EACdn9H,EAAO49H,UAAQ,QAAQ,QAC1B,KACI,CACD,MAAMqJ,EAAU,sBAAsB,KAAK9J,CAAK,EAChD,GAAI,CAAC8J,EACD,MAAM,IAAI,MAAM,yBAAyB9J,CAAK,EAAE,EACpD,MAAM+J,EAAK,CAACD,EAAQ,CAAC,EAErB,GADAD,EAAcC,EAAQ,CAAC,EACnBD,IAAgB,IAAK,CACrB,GAAIE,GAAMJ,EACN,MAAM,IAAI,MAAMK,EAAS,iBAAkBD,CAAE,CAAC,EAClD,OAAO5D,EAAYwD,EAAYI,CAAE,CACpC,CACD,GAAIA,EAAKJ,EACL,MAAM,IAAI,MAAMK,EAAS,OAAQD,CAAE,CAAC,EAExC,GADAlnI,EAAO+mI,EAAUD,EAAYI,CAAE,EAC3B,CAACF,EACD,OAAOhnI,CACd,CACD,IAAIk3H,EAAOl3H,EACX,MAAM8S,EAAWk0H,EAAY,MAAM,GAAG,EACtC,UAAWI,KAAWt0H,EACds0H,IACApnI,KAAW48H,YAAU,KAAM58H,CAAI,MAAO48H,YAAU,gBAAiBiB,SAAO,qBAAqBuJ,CAAO,CAAC,CAAC,GACtGlQ,KAAW0F,YAAU,KAAM1F,CAAI,OAAOl3H,CAAI,IAGlD,OAAOk3H,EACP,SAASiQ,EAASE,EAAaH,EAAI,CAC/B,MAAO,iBAAiBG,CAAW,IAAIH,CAAE,gCAAgCJ,CAAS,EACrF,CACL,CACevE,WAAA,QAAG,gCCrgBlB,OAAO,eAAe,iBAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM,wBAAwB,KAAM,CAChC,YAAY7wI,EAAQ,CAChB,MAAM,mBAAmB,EACzB,KAAK,OAASA,EACd,KAAK,IAAM,KAAK,WAAa,EAChC,CACL,CACe,yBAAG,iCCRlB,OAAO,eAAe,UAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4zI,YAAY79F,UAClB,MAAM,wBAAwB,KAAM,CAChC,YAAY5F,EAAUuiG,EAAQrpI,EAAK9I,EAAK,CACpC,MAAMA,GAAO,2BAA2B8I,CAAG,YAAYqpI,CAAM,EAAE,EAC/D,KAAK,cAAiBkB,YAAU,YAAYzjG,EAAUuiG,EAAQrpI,CAAG,EACjE,KAAK,iBAAoBuqI,YAAU,gBAAiBA,YAAU,aAAazjG,EAAU,KAAK,UAAU,CAAC,CACxG,CACL,CACe,kBAAG,+BCTlB,OAAO,eAAe,QAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EACvC,sBAA6B,2BAAqB,mBAAwB,sBAAoB,kBAAG,OACtH,MAAM+6F,YAAYn1F,QACZ,mBAAqBuC,iBACrB4zF,UAAU5+E,QACV,UAAYM,UACZu+E,SAASh6E,OACTyjF,aAAaxjF,WACnB,MAAM,SAAU,CACZ,YAAYyjF,EAAK,CACb,IAAI7xI,EACJ,KAAK,KAAO,GACZ,KAAK,eAAiB,GACtB,IAAImnI,EACA,OAAO0K,EAAI,QAAU,WACrB1K,EAAS0K,EAAI,QACjB,KAAK,OAASA,EAAI,OAClB,KAAK,SAAWA,EAAI,SACpB,KAAK,KAAOA,EAAI,MAAQ,KACxB,KAAK,QAAU7xI,EAAK6xI,EAAI,UAAY,MAAQ7xI,IAAO,OAASA,KAAS,UAAU,aAA6DmnI,IAAO0K,EAAI,UAAY,KAAK,CAAC,EACzK,KAAK,WAAaA,EAAI,WACtB,KAAK,UAAYA,EAAI,UACrB,KAAK,KAAOA,EAAI,KAChB,KAAK,OAAyD1K,GAAO,OACrE,KAAK,KAAO,EACf,CACL,CACiB,kBAAG,UAIpB,SAAS,cAAcuE,EAAK,CAExB,MAAMe,EAAO,mBAAmB,KAAK,KAAMf,CAAG,EAC9C,GAAIe,EACA,OAAOA,EACX,MAAMqF,KAAa,UAAU,aAAa,KAAK,KAAK,YAAapG,EAAI,KAAK,MAAM,EAC1E,CAAE,IAAA9H,EAAK,MAAAzrG,CAAK,EAAK,KAAK,KAAK,KAC3B,CAAE,cAAA2zG,CAAa,EAAK,KAAK,KACzBpqE,EAAM,IAAIwlE,YAAU,QAAQ,KAAK,MAAO,CAAE,IAAAtD,EAAK,MAAAzrG,EAAO,cAAA2zG,CAAa,CAAE,EAC3E,IAAIiG,EACArG,EAAI,SACJqG,EAAmBrwE,EAAI,WAAW,QAAS,CACvC,IAAK,mBAAmB,QACxB,QAAUwlE,YAAU,wDAChC,CAAS,GAEL,MAAMmC,EAAe3nE,EAAI,UAAU,UAAU,EAC7CgqE,EAAI,aAAerC,EACnB,MAAM6H,EAAY,CACd,IAAAxvE,EACA,UAAW,KAAK,KAAK,UACrB,KAAMwmE,UAAQ,QAAQ,KACtB,WAAYA,UAAQ,QAAQ,WAC5B,mBAAoBA,UAAQ,QAAQ,mBACpC,UAAW,CAACA,UAAQ,QAAQ,IAAI,EAChC,YAAa,CAAChB,YAAU,GAAG,EAC3B,UAAW,EACX,UAAW,CAAE,EACb,kBAAmB,IAAI,IACvB,aAAcxlE,EAAI,WAAW,SAAU,KAAK,KAAK,KAAK,SAAW,GAC3D,CAAE,IAAKgqE,EAAI,OAAQ,QAAUxE,YAAU,WAAWwE,EAAI,MAAM,CAAG,EAC/D,CAAE,IAAKA,EAAI,OAAQ,EACzB,aAAArC,EACA,gBAAiB0I,EACjB,OAAQrG,EAAI,OACZ,UAAWA,EACX,OAAAoG,EACA,OAAQpG,EAAI,QAAUoG,EACtB,WAAY5K,YAAU,IACtB,cAAewE,EAAI,aAAe,KAAK,KAAK,IAAM,GAAK,KACvD,aAAexE,YAAU,OACzB,KAAM,KAAK,KACX,KAAM,IACd,EACI,IAAI8K,EACJ,GAAI,CACA,KAAK,cAAc,IAAItG,CAAG,KACtBkG,aAAW,sBAAsBV,CAAS,EAC9CxvE,EAAI,SAAS,KAAK,KAAK,KAAK,QAAQ,EAEpC,MAAMuwE,EAAevwE,EAAI,WACzBswE,EAAa,GAAGtwE,EAAI,UAAUwmE,UAAQ,QAAQ,KAAK,CAAC,UAAU+J,CAAY,GAEtE,KAAK,KAAK,KAAK,UACfD,EAAa,KAAK,KAAK,KAAK,QAAQA,EAAYtG,CAAG,GAGvD,MAAMmB,EADe,IAAI,SAAS,GAAG3E,UAAQ,QAAQ,IAAI,GAAI,GAAGA,UAAQ,QAAQ,KAAK,GAAI8J,CAAU,EACrE,KAAM,KAAK,MAAM,IAAG,CAAE,EAUpD,GATA,KAAK,MAAM,MAAM3I,EAAc,CAAE,IAAKwD,CAAQ,CAAE,EAChDA,EAAS,OAAS,KAClBA,EAAS,OAASnB,EAAI,OACtBmB,EAAS,UAAYnB,EACjBA,EAAI,SACJmB,EAAS,OAAS,IAClB,KAAK,KAAK,KAAK,SAAW,KAC1BA,EAAS,OAAS,CAAE,aAAAxD,EAAc,aAAA4I,EAAc,YAAavwE,EAAI,UAEjE,KAAK,KAAK,YAAa,CACvB,KAAM,CAAE,MAAA36D,EAAO,MAAA00B,CAAO,EAAGy1G,EACzBrE,EAAS,UAAY,CACjB,MAAO9lI,aAAiBmgI,YAAU,KAAO,OAAYngI,EACrD,MAAO00B,aAAiByrG,YAAU,KAAO,OAAYzrG,EACrD,aAAc10B,aAAiBmgI,YAAU,KACzC,aAAczrG,aAAiByrG,YAAU,IACzD,EACgB2F,EAAS,SACTA,EAAS,OAAO,aAAgB3F,YAAU,WAAW2F,EAAS,SAAS,EAC9E,CACD,OAAAnB,EAAI,SAAWmB,EACRnB,CACV,OACMl4I,EAAG,CACN,aAAOk4I,EAAI,SACX,OAAOA,EAAI,aACPsG,GACA,KAAK,OAAO,MAAM,yCAA0CA,CAAU,EAEpEx+I,CACT,QACO,CACJ,KAAK,cAAc,OAAOk4I,CAAG,CAChC,CACL,CACqB,sBAAG,cACxB,SAAS,WAAW7gI,EAAM6jI,EAAQrpI,EAAK,CACnC,IAAIrF,EACJqF,KAAU,UAAU,YAAY,KAAK,KAAK,YAAaqpI,EAAQrpI,CAAG,EAClE,MAAM6sI,EAAYrnI,EAAK,KAAKxF,CAAG,EAC/B,GAAI6sI,EACA,OAAOA,EACX,IAAIzF,EAAOzgI,UAAQ,KAAK,KAAMnB,EAAMxF,CAAG,EACvC,GAAIonI,IAAS,OAAW,CACpB,MAAMtF,GAAUnnI,EAAK6K,EAAK,aAAe,MAAQ7K,IAAO,OAAS,OAASA,EAAGqF,CAAG,EAC1E,CAAE,SAAAspI,CAAQ,EAAK,KAAK,KACtBxH,IACAsF,EAAO,IAAI,UAAU,CAAE,OAAAtF,EAAQ,SAAAwH,EAAU,KAAA9jI,EAAM,OAAA6jI,CAAM,CAAE,EAC9D,CACD,GAAIjC,IAAS,OAEb,OAAQ5hI,EAAK,KAAKxF,CAAG,EAAI,gBAAgB,KAAK,KAAMonI,CAAI,CAC5D,CACkB,mBAAG,WACrB,SAAS,gBAAgBf,EAAK,CAC1B,SAAQ,UAAU,WAAWA,EAAI,OAAQ,KAAK,KAAK,UAAU,EAClDA,EAAI,OACRA,EAAI,SAAWA,EAAM,cAAc,KAAK,KAAMA,CAAG,CAC5D,CAEA,SAAS,mBAAmByG,EAAQ,CAChC,UAAWzG,KAAO,KAAK,cACnB,GAAI,cAAcA,EAAKyG,CAAM,EACzB,OAAOzG,CAEnB,CAC0B,2BAAG,mBAC7B,SAAS,cAAc1xH,EAAIC,EAAI,CAC3B,OAAOD,EAAG,SAAWC,EAAG,QAAUD,EAAG,OAASC,EAAG,MAAQD,EAAG,SAAWC,EAAG,MAC9E,CAGA,SAASjO,UAAQnB,EACjBxF,EACE,CACE,IAAIqmI,EACJ,KAAO,OAAQA,EAAM,KAAK,KAAKrmI,CAAG,IAAM,UACpCA,EAAMqmI,EACV,OAAOA,GAAO,KAAK,QAAQrmI,CAAG,GAAK,cAAc,KAAK,KAAMwF,EAAMxF,CAAG,CACzE,CAEA,SAAS,cAAcwF,EACvBxF,EACE,CACE,MAAMsC,EAAI,KAAK,KAAK,YAAY,MAAMtC,CAAG,EACnC+sI,KAAc,UAAU,cAAc,KAAK,KAAK,YAAazqI,CAAC,EACpE,IAAI+mI,KAAa,UAAU,aAAa,KAAK,KAAK,YAAa7jI,EAAK,OAAQ,MAAS,EAErF,GAAI,OAAO,KAAKA,EAAK,MAAM,EAAE,OAAS,GAAKunI,IAAY1D,EACnD,OAAO,eAAe,KAAK,KAAM/mI,EAAGkD,CAAI,EAE5C,MAAMhD,KAAS,UAAU,aAAauqI,CAAO,EACvC7C,EAAW,KAAK,KAAK1nI,CAAE,GAAK,KAAK,QAAQA,CAAE,EACjD,GAAI,OAAO0nI,GAAY,SAAU,CAC7B,MAAM7D,EAAM,cAAc,KAAK,KAAM7gI,EAAM0kI,CAAQ,EACnD,OAAI,OAAkD7D,GAAI,QAAY,SAClE,OACG,eAAe,KAAK,KAAM/jI,EAAG+jI,CAAG,CAC1C,CACD,GAAI,OAA4D6D,GAAS,QAAY,SAIrF,IAFKA,EAAS,UACV,cAAc,KAAK,KAAMA,CAAQ,EACjC1nI,OAAW,UAAU,aAAaxC,CAAG,EAAG,CACxC,KAAM,CAAE,OAAA8hI,CAAQ,EAAGoI,EACb,CAAE,SAAAZ,CAAQ,EAAK,KAAK,KACpBE,EAAQ1H,EAAOwH,CAAQ,EAC7B,OAAIE,IACAH,KAAa,UAAU,YAAY,KAAK,KAAK,YAAaA,EAAQG,CAAK,GACpE,IAAI,UAAU,CAAE,OAAA1H,EAAQ,SAAAwH,EAAU,KAAA9jI,EAAM,OAAA6jI,CAAM,CAAE,CAC1D,CACD,OAAO,eAAe,KAAK,KAAM/mI,EAAG4nI,CAAQ,EAChD,CACqB,sBAAG,cACxB,MAAM,qBAAuB,IAAI,IAAI,CACjC,aACA,oBACA,OACA,eACA,aACJ,CAAC,EACD,SAAS,eAAe8C,EAAW,CAAE,OAAA3D,EAAQ,OAAAvH,EAAQ,KAAAt8H,CAAI,EAAI,CACzD,IAAI7K,EACJ,KAAMA,EAAKqyI,EAAU,YAAc,MAAQryI,IAAO,OAAS,OAASA,EAAG,CAAC,KAAO,IAC3E,OACJ,UAAWg8C,KAAQq2F,EAAU,SAAS,MAAM,CAAC,EAAE,MAAM,GAAG,EAAG,CACvD,GAAI,OAAOlL,GAAW,UAClB,OACJ,MAAMmL,EAAanL,KAAWgB,SAAO,kBAAkBnsF,CAAI,CAAC,EAC5D,GAAIs2F,IAAe,OACf,OACJnL,EAASmL,EAET,MAAMzD,EAAQ,OAAO1H,GAAW,UAAYA,EAAO,KAAK,KAAK,QAAQ,EACjE,CAAC,qBAAqB,IAAInrF,CAAI,GAAK6yF,IACnCH,KAAa,UAAU,YAAY,KAAK,KAAK,YAAaA,EAAQG,CAAK,EAE9E,CACD,IAAIgD,EACJ,GAAI,OAAO1K,GAAU,WAAaA,EAAO,MAAQ,IAAKgB,SAAO,sBAAsBhB,EAAQ,KAAK,KAAK,EAAG,CACpG,MAAMoL,KAAW,UAAU,YAAY,KAAK,KAAK,YAAa7D,EAAQvH,EAAO,IAAI,EACjF0K,EAAM,cAAc,KAAK,KAAMhnI,EAAM0nI,CAAI,CAC5C,CAGD,KAAM,CAAE,SAAA5D,CAAQ,EAAK,KAAK,KAE1B,GADAkD,EAAMA,GAAO,IAAI,UAAU,CAAE,OAAA1K,EAAQ,SAAAwH,EAAU,KAAA9jI,EAAM,OAAA6jI,CAAM,CAAE,EACzDmD,EAAI,SAAWA,EAAI,KAAK,OACxB,OAAOA,CAEf,ggBC9OA,MAAMW,MAAM,CACV,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,EACL,EAEA,gBAAiB,CACjB,IAAEA,KACF,EC3BA,KAAM,CAAE,GAAK,EAAGzgG,YAEhB,SAAS0gG,gBAAeC,EAAM,CAC5B,GAAI,UAAUA,EAAM,GAAG,EAAI,EAAK,MAAO,CAAE,KAAAA,EAAM,OAAQ,IACvD,MAAMnB,EAAUmB,EAAK,MAAM,sHAAsH,GAAK,CAAE,EAClJ,CAACjgG,CAAO,EAAI8+F,EAClB,OAAI9+F,EACK,CAAE,KAAM,kBAAkBA,EAAS,GAAG,EAAG,OAAQ,EAAM,EAEvD,CAAE,KAAAigG,EAAM,OAAQ,EAAO,CAElC,CAOA,SAAS,yBAA0Bp2I,EAAOq2I,EAAW,GAAO,CAC1D,IAAI/hH,EAAM,GACNgiH,EAAQ,GACZ,UAAW3+I,KAAKqI,EAAO,CACrB,GAAI,IAAIrI,CAAC,IAAM,OAAW,OACtBA,IAAM,KAAO2+I,IAAU,KAAMA,EAAQ,IACpCA,IAAOhiH,GAAO38B,EACpB,CACD,OAAI0+I,GAAY/hH,EAAI,SAAW,IAAGA,EAAM,KACjCA,CACT,CAEA,SAAS,QAASt0B,EAAO,CACvB,IAAIu2I,EAAa,EACjB,MAAM9/I,EAAS,CAAE,MAAO,GAAO,QAAS,GAAI,KAAM,EAAI,EAChD0/C,EAAU,CAAE,EACZzgD,EAAS,CAAE,EACjB,IAAI8gJ,EAAS,GACTC,EAAqB,GACrBC,EAAU,GAEd,SAASC,GAAW,CAClB,GAAIjhJ,EAAO,OAAQ,CACjB,GAAI8gJ,IAAW,GAAO,CACpB,MAAMzkH,EAAM,yBAAyBr8B,CAAM,EAC3C,GAAIq8B,IAAQ,OACVokB,EAAQ,KAAKpkB,CAAG,MAEhB,QAAAt7B,EAAO,MAAQ,GACR,EAEV,CACDf,EAAO,OAAS,CACjB,CACD,MAAO,EACR,CAED,QAASN,EAAI,EAAGA,EAAI4K,EAAM,OAAQ5K,IAAK,CACrC,MAAMg/D,EAASp0D,EAAM5K,CAAC,EACtB,GAAI,EAAAg/D,IAAW,KAAOA,IAAW,KACjC,GAAIA,IAAW,IAAK,CAIlB,GAHIqiF,IAAuB,KACzBC,EAAU,IAER,CAACC,IAAa,MAGlB,GAFAJ,IACApgG,EAAQ,KAAK,GAAG,EACZogG,EAAa,EAAG,CAElB9/I,EAAO,MAAQ,GACf,KACD,CACGrB,EAAI,GAAK,GAAK4K,EAAM5K,EAAI,CAAC,IAAM,MACjCqhJ,EAAqB,IAEvB,QACN,SAAeriF,IAAW,IAAK,CACzB,GAAI,CAACuiF,IAAa,MAElBH,EAAS,EACf,KAAW,CACL9gJ,EAAO,KAAK0+D,CAAM,EAClB,QACD,CACF,CACD,OAAI1+D,EAAO,SACL8gJ,EACF//I,EAAO,KAAOf,EAAO,KAAK,EAAE,EACnBghJ,EACTvgG,EAAQ,KAAKzgD,EAAO,KAAK,EAAE,CAAC,EAE5BygD,EAAQ,KAAK,yBAAyBzgD,CAAM,CAAC,GAGjDe,EAAO,QAAU0/C,EAAQ,KAAK,EAAE,EACzB1/C,CACT,CAEA,SAASmgJ,gBAAeR,EAAMphG,EAAO,GAAI,CACvC,GAAI,UAAUohG,EAAM,GAAG,EAAI,EAAK,MAAO,CAAE,KAAAA,EAAM,OAAQ,IACvD,MAAMS,EAAO,QAAQT,CAAI,EAEzB,GAAKS,EAAK,MASR,MAAO,CAAE,KAAAT,EAAM,OAAQ,EAAO,EATf,CACf,IAAIU,EAAUD,EAAK,QACfE,EAAcF,EAAK,QACvB,OAAIA,EAAK,OACPC,GAAW,IAAMD,EAAK,KACtBE,GAAe,MAAQF,EAAK,MAEvB,CAAE,KAAMC,EAAS,YAAAC,EAAa,OAAQ,EAAM,CACvD,CAGA,CAEA,SAAS,kBAAmBz7I,EAAKkmD,EAAO,CACtC,IAAI1jD,EAAM,GACNk5I,EAAO,GACX,MAAMlzI,EAAIxI,EAAI,OACd,QAASlG,EAAI,EAAGA,EAAI0O,EAAG1O,IAAK,CAC1B,MAAMuC,EAAI2D,EAAIlG,CAAC,EACXuC,IAAM,KAAOq/I,GACV5hJ,EAAI,GAAK0O,GAAKxI,EAAIlG,EAAI,CAAC,IAAMosD,GAAUpsD,EAAI,IAAM0O,KACpDhG,GAAOnG,EACPq/I,EAAO,KAGLr/I,IAAM6pD,EACRw1F,EAAO,GAEPA,EAAO,GAETl5I,GAAOnG,EAEV,CACD,OAAOmG,CACT,CAEA,SAAS,UAAWxC,EAAKkmD,EAAO,CAC9B,IAAIy1F,EAAM,EACV,QAAS7hJ,EAAI,EAAGA,EAAIkG,EAAI,OAAQlG,IAC1BkG,EAAIlG,CAAC,IAAMosD,GAAOy1F,IAExB,OAAOA,CACT,CAEA,MAAM,KAAO,YACP,KAAO,iBACP,KAAO,mBACP,KAAO,0BAEb,SAASC,oBAAmBl3I,EAAO,CACjC,MAAMvJ,EAAS,CAAE,EAEjB,KAAOuJ,EAAM,QACX,GAAIA,EAAM,MAAM,IAAI,EAClBA,EAAQA,EAAM,QAAQ,KAAM,EAAE,UACrBA,EAAM,MAAM,IAAI,EACzBA,EAAQA,EAAM,QAAQ,KAAM,GAAG,UACtBA,EAAM,MAAM,IAAI,EACzBA,EAAQA,EAAM,QAAQ,KAAM,GAAG,EAC/BvJ,EAAO,IAAK,UACHuJ,IAAU,KAAOA,IAAU,KACpCA,EAAQ,OACH,CACL,MAAMi3F,EAAKj3F,EAAM,MAAM,IAAI,EAC3B,GAAIi3F,EAAI,CACN,MAAMx/F,EAAIw/F,EAAG,CAAC,EACdj3F,EAAQA,EAAM,MAAMvI,EAAE,MAAM,EAC5BhB,EAAO,KAAKgB,CAAC,CACrB,KACQ,OAAM,IAAI,MAAM,kCAAkC,CAErD,CAEH,OAAOhB,EAAO,KAAK,EAAE,CACvB,CAEA,SAAS0gJ,6BAA4BvkI,EAAYwkI,EAAK,CACpD,MAAMluF,EAAOkuF,IAAQ,GAAO,OAAS,SACrC,OAAIxkI,EAAW,SAAW,SACxBA,EAAW,OAASs2C,EAAKt2C,EAAW,MAAM,GAExCA,EAAW,WAAa,SAC1BA,EAAW,SAAWs2C,EAAKt2C,EAAW,QAAQ,GAE5CA,EAAW,OAAS,SACtBA,EAAW,KAAOs2C,EAAKt2C,EAAW,IAAI,GAEpCA,EAAW,OAAS,SACtBA,EAAW,KAAOs2C,EAAKt2C,EAAW,IAAI,GAEpCA,EAAW,QAAU,SACvBA,EAAW,MAAQs2C,EAAKt2C,EAAW,KAAK,GAEtCA,EAAW,WAAa,SAC1BA,EAAW,SAAWs2C,EAAKt2C,EAAW,QAAQ,GAEzCA,CACT,CAEA,SAASykI,qBAAoBzkI,EAAY1F,EAAS,CAChD,MAAMoqI,EAAY,CAAE,EAOpB,GALI1kI,EAAW,WAAa,SAC1B0kI,EAAU,KAAK1kI,EAAW,QAAQ,EAClC0kI,EAAU,KAAK,GAAG,GAGhB1kI,EAAW,OAAS,OAAW,CACjC,IAAIwjI,EAAO,SAASxjI,EAAW,IAAI,EACnC,MAAM2kI,EAAUpB,gBAAcC,CAAI,EAElC,GAAImB,EAAQ,OACVnB,EAAOmB,EAAQ,SACV,CACL,MAAMC,EAAUZ,gBAAcW,EAAQ,KAAM,CAAE,OAAQ,GAAO,EACzDC,EAAQ,SAAW,GACrBpB,EAAO,IAAIoB,EAAQ,WAAW,IAE9BpB,EAAOxjI,EAAW,IAErB,CACD0kI,EAAU,KAAKlB,CAAI,CACpB,CAED,OAAI,OAAOxjI,EAAW,MAAS,UAAY,OAAOA,EAAW,MAAS,YACpE0kI,EAAU,KAAK,GAAG,EAClBA,EAAU,KAAK,OAAO1kI,EAAW,IAAI,CAAC,GAGjC0kI,EAAU,OAASA,EAAU,KAAK,EAAE,EAAI,MACjD,CAEA,IAAA/wD,QAAiB,CACjB,mBAAE8wD,qBACF,2BAAEF,6BACF,kBAAED,oBACF,cAAEf,gBACF,cAAES,gBACA,wBACF,EC/OA,MAAM,SAAW,sEACX,QAAU,oEAEhB,SAAS,SAAUa,EAAc,CAC/B,OAAO,OAAOA,EAAa,QAAW,UAAYA,EAAa,OAAS,OAAOA,EAAa,MAAM,EAAE,YAAa,IAAK,KACxH,CAEA,SAAS,UAAW7kI,EAAY,CAC9B,OAAKA,EAAW,OACdA,EAAW,MAAQA,EAAW,OAAS,+BAGlCA,CACT,CAEA,SAAS,cAAeA,EAAY,CAClC,MAAM8kI,EAAS,OAAO9kI,EAAW,MAAM,EAAE,YAAW,IAAO,QAG3D,OAAIA,EAAW,QAAU8kI,EAAS,IAAM,KAAO9kI,EAAW,OAAS,MACjEA,EAAW,KAAO,QAIfA,EAAW,OACdA,EAAW,KAAO,KAObA,CACT,CAEA,SAAS,QAAS6kI,EAAc,CAE9B,OAAAA,EAAa,OAAS,SAASA,CAAY,EAG3CA,EAAa,cAAgBA,EAAa,MAAQ,MAAQA,EAAa,MAAQ,IAAMA,EAAa,MAAQ,IAC1GA,EAAa,KAAO,OACpBA,EAAa,MAAQ,OAEdA,CACT,CAEA,SAAS,YAAaA,EAAc,CAalC,IAXIA,EAAa,QAAU,SAASA,CAAY,EAAI,IAAM,KAAOA,EAAa,OAAS,MACrFA,EAAa,KAAO,QAIlB,OAAOA,EAAa,QAAW,YACjCA,EAAa,OAAUA,EAAa,OAAS,MAAQ,KACrDA,EAAa,OAAS,QAIpBA,EAAa,aAAc,CAC7B,KAAM,CAAC52H,EAAM40C,CAAK,EAAIgiF,EAAa,aAAa,MAAM,GAAG,EACzDA,EAAa,KAAQ52H,GAAQA,IAAS,IAAMA,EAAO,OACnD42H,EAAa,MAAQhiF,EACrBgiF,EAAa,aAAe,MAC7B,CAGD,OAAAA,EAAa,SAAW,OAEjBA,CACT,CAEA,SAAS,SAAUE,EAAezqI,EAAS,CACzC,GAAI,CAACyqI,EAAc,KACjB,OAAAA,EAAc,MAAQ,wBACfA,EAET,MAAM1C,EAAU0C,EAAc,KAAK,MAAM,OAAO,EAChD,GAAI1C,EAAS,CACX,MAAMj2B,EAAS9xG,EAAQ,QAAUyqI,EAAc,QAAU,MACzDA,EAAc,IAAM1C,EAAQ,CAAC,EAAE,YAAa,EAC5C0C,EAAc,IAAM1C,EAAQ,CAAC,EAC7B,MAAM2C,EAAY,GAAG54B,CAAM,IAAI9xG,EAAQ,KAAOyqI,EAAc,GAAG,GACzDE,EAAgBC,UAAQF,CAAS,EACvCD,EAAc,KAAO,OAEjBE,IACFF,EAAgBE,EAAc,MAAMF,EAAezqI,CAAO,EAEhE,MACIyqI,EAAc,MAAQA,EAAc,OAAS,yBAG/C,OAAOA,CACT,CAEA,SAAS,aAAcA,EAAezqI,EAAS,CAC7C,MAAM8xG,EAAS9xG,EAAQ,QAAUyqI,EAAc,QAAU,MACnDI,EAAMJ,EAAc,IAAI,YAAa,EACrCC,EAAY,GAAG54B,CAAM,IAAI9xG,EAAQ,KAAO6qI,CAAG,GAC3CF,EAAgBC,UAAQF,CAAS,EAEnCC,IACFF,EAAgBE,EAAc,UAAUF,EAAezqI,CAAO,GAGhE,MAAM8qI,EAAgBL,EAChBM,EAAMN,EAAc,IAC1B,OAAAK,EAAc,KAAO,GAAGD,GAAO7qI,EAAQ,GAAG,IAAI+qI,CAAG,GAEjD/qI,EAAQ,WAAa,GACd8qI,CACT,CAEA,SAAS,aAAcL,EAAezqI,EAAS,CAC7C,MAAMgrI,EAAiBP,EACvB,OAAAO,EAAe,KAAOA,EAAe,IACrCA,EAAe,IAAM,OAEjB,CAAChrI,EAAQ,WAAa,CAACgrI,EAAe,MAAQ,CAAC,SAAS,KAAKA,EAAe,IAAI,KAClFA,EAAe,MAAQA,EAAe,OAAS,sBAG1CA,CACT,CAEA,SAAS,iBAAkBA,EAAgB,CACzC,MAAMP,EAAgBO,EAEtB,OAAAP,EAAc,KAAOO,EAAe,MAAQ,IAAI,YAAa,EACtDP,CACT,CAEA,MAAM,KAAO,CACX,OAAQ,OACR,WAAY,GACZ,MAAO,UACP,UAAW,aACb,EAEM,MAAQ,CACZ,OAAQ,QACR,WAAY,KAAK,WACjB,MAAO,UACP,UAAW,aACb,EAEM,GAAK,CACT,OAAQ,KACR,WAAY,GACZ,MAAO,QACP,UAAW,WACb,EAEMQ,MAAM,CACV,OAAQ,MACR,WAAY,GAAG,WACf,MAAO,GAAG,MACV,UAAW,GAAG,SAChB,EAEM,IAAM,CACV,OAAQ,MACR,MAAO,SACP,UAAW,aACX,cAAe,EACjB,EAEM,QAAU,CACd,OAAQ,WACR,MAAO,aACP,UAAW,iBACX,cAAe,EACjB,EAEML,UAAU,CACd,KACA,MACA,GACF,IAAEK,MACA,IACA,WAAY,OACd,EAEA,YAAiBL,UCzLjB,KAAM,CAAE,cAAe,cAAe,kBAAmB,mBAAoB,0BAA4B,EAAGriG,QACtG,QAAUuC,QAEhB,SAAS,UAAWgsB,EAAK92D,EAAS,CAChC,OAAI,OAAO82D,GAAQ,SACjBA,EAAM,UAAUo0E,QAAMp0E,EAAK92D,CAAO,EAAGA,CAAO,EACnC,OAAO82D,GAAQ,WACxBA,EAAMo0E,QAAM,UAAUp0E,EAAK92D,CAAO,EAAGA,CAAO,GAEvC82D,CACT,CAEA,SAASt0D,UAAS2oI,EAASC,EAAaprI,EAAS,CAC/C,MAAMqrI,EAAoB,OAAO,OAAO,CAAE,OAAQ,MAAQ,EAAErrI,CAAO,EAC7D4G,EAAW,kBAAkBskI,QAAMC,EAASE,CAAiB,EAAGH,QAAME,EAAaC,CAAiB,EAAGA,EAAmB,EAAI,EACpI,OAAO,UAAUzkI,EAAU,CAAE,GAAGykI,EAAmB,WAAY,GAAM,CACvE,CAEA,SAAS,kBAAmB9kI,EAAMk7F,EAAUzhG,EAASsrI,EAAmB,CACtE,MAAMh9I,EAAS,CAAE,EACjB,OAAKg9I,IACH/kI,EAAO2kI,QAAM,UAAU3kI,EAAMvG,CAAO,EAAGA,CAAO,EAC9CyhG,EAAWypC,QAAM,UAAUzpC,EAAUzhG,CAAO,EAAGA,CAAO,GAExDA,EAAUA,GAAW,CAAE,EAEnB,CAACA,EAAQ,UAAYyhG,EAAS,QAChCnzG,EAAO,OAASmzG,EAAS,OAEzBnzG,EAAO,SAAWmzG,EAAS,SAC3BnzG,EAAO,KAAOmzG,EAAS,KACvBnzG,EAAO,KAAOmzG,EAAS,KACvBnzG,EAAO,KAAO,kBAAkBmzG,EAAS,MAAQ,EAAE,EACnDnzG,EAAO,MAAQmzG,EAAS,QAEpBA,EAAS,WAAa,QAAaA,EAAS,OAAS,QAAaA,EAAS,OAAS,QAEtFnzG,EAAO,SAAWmzG,EAAS,SAC3BnzG,EAAO,KAAOmzG,EAAS,KACvBnzG,EAAO,KAAOmzG,EAAS,KACvBnzG,EAAO,KAAO,kBAAkBmzG,EAAS,MAAQ,EAAE,EACnDnzG,EAAO,MAAQmzG,EAAS,QAEnBA,EAAS,MAQRA,EAAS,KAAK,OAAO,CAAC,IAAM,IAC9BnzG,EAAO,KAAO,kBAAkBmzG,EAAS,IAAI,IAExCl7F,EAAK,WAAa,QAAaA,EAAK,OAAS,QAAaA,EAAK,OAAS,SAAc,CAACA,EAAK,KAC/FjY,EAAO,KAAO,IAAMmzG,EAAS,KACnBl7F,EAAK,KAGfjY,EAAO,KAAOiY,EAAK,KAAK,MAAM,EAAGA,EAAK,KAAK,YAAY,GAAG,EAAI,CAAC,EAAIk7F,EAAS,KAF5EnzG,EAAO,KAAOmzG,EAAS,KAIzBnzG,EAAO,KAAO,kBAAkBA,EAAO,IAAI,GAE7CA,EAAO,MAAQmzG,EAAS,QAnBxBnzG,EAAO,KAAOiY,EAAK,KACfk7F,EAAS,QAAU,OACrBnzG,EAAO,MAAQmzG,EAAS,MAExBnzG,EAAO,MAAQiY,EAAK,OAkBxBjY,EAAO,SAAWiY,EAAK,SACvBjY,EAAO,KAAOiY,EAAK,KACnBjY,EAAO,KAAOiY,EAAK,MAErBjY,EAAO,OAASiY,EAAK,QAGvBjY,EAAO,SAAWmzG,EAAS,SAEpBnzG,CACT,CAEA,SAASwjE,QAAOy5E,EAAMC,EAAMxrI,EAAS,CACnC,OAAI,OAAOurI,GAAS,UAClBA,EAAO,SAASA,CAAI,EACpBA,EAAO,UAAU,2BAA2BL,QAAMK,EAAMvrI,CAAO,EAAG,EAAI,EAAG,CAAE,GAAGA,EAAS,WAAY,EAAI,CAAE,GAChG,OAAOurI,GAAS,WACzBA,EAAO,UAAU,2BAA2BA,EAAM,EAAI,EAAG,CAAE,GAAGvrI,EAAS,WAAY,GAAM,GAGvF,OAAOwrI,GAAS,UAClBA,EAAO,SAASA,CAAI,EACpBA,EAAO,UAAU,2BAA2BN,QAAMM,EAAMxrI,CAAO,EAAG,EAAI,EAAG,CAAE,GAAGA,EAAS,WAAY,EAAI,CAAE,GAChG,OAAOwrI,GAAS,WACzBA,EAAO,UAAU,2BAA2BA,EAAM,EAAI,EAAG,CAAE,GAAGxrI,EAAS,WAAY,GAAM,GAGpFurI,EAAK,gBAAkBC,EAAK,YAAa,CAClD,CAEA,SAAS,UAAWC,EAAO3jG,EAAM,CAC/B,MAAMpiC,EAAa,CACjB,KAAM+lI,EAAM,KACZ,OAAQA,EAAM,OACd,SAAUA,EAAM,SAChB,KAAMA,EAAM,KACZ,KAAMA,EAAM,KACZ,MAAOA,EAAM,MACb,IAAKA,EAAM,IACX,IAAKA,EAAM,IACX,KAAMA,EAAM,KACZ,SAAUA,EAAM,SAChB,UAAWA,EAAM,UACjB,aAAcA,EAAM,aACpB,OAAQA,EAAM,OACd,MAAO,EACR,EACKzrI,EAAU,OAAO,OAAO,GAAI8nC,CAAI,EAChCsiG,EAAY,CAAE,EAGdO,EAAgB,SAAS3qI,EAAQ,QAAU0F,EAAW,QAAU,IAAI,aAAa,EAGnFilI,GAAiBA,EAAc,WAAWA,EAAc,UAAUjlI,EAAY1F,CAAO,EAErF0F,EAAW,OAAS,SACjB1F,EAAQ,WAOX0F,EAAW,KAAO,SAASA,EAAW,IAAI,GAN1CA,EAAW,KAAO,OAAOA,EAAW,IAAI,EAEpCA,EAAW,SAAW,SACxBA,EAAW,KAAOA,EAAW,KAAK,MAAM,KAAK,EAAE,KAAK,GAAG,KAOzD1F,EAAQ,YAAc,UAAY0F,EAAW,QAC/C0kI,EAAU,KAAK1kI,EAAW,OAAQ,GAAG,EAGvC,MAAMgmI,EAAY,mBAAmBhmI,EAAY1F,CAAO,EAYxD,GAXI0rI,IAAc,SACZ1rI,EAAQ,YAAc,UACxBoqI,EAAU,KAAK,IAAI,EAGrBA,EAAU,KAAKsB,CAAS,EAEpBhmI,EAAW,MAAQA,EAAW,KAAK,OAAO,CAAC,IAAM,KACnD0kI,EAAU,KAAK,GAAG,GAGlB1kI,EAAW,OAAS,OAAW,CACjC,IAAInb,EAAImb,EAAW,KAEf,CAAC1F,EAAQ,eAAiB,CAAC2qI,GAAiB,CAACA,EAAc,gBAC7DpgJ,EAAI,kBAAkBA,CAAC,GAGrBmhJ,IAAc,SAChBnhJ,EAAIA,EAAE,QAAQ,SAAU,MAAM,GAGhC6/I,EAAU,KAAK7/I,CAAC,CACjB,CAED,OAAImb,EAAW,QAAU,QACvB0kI,EAAU,KAAK,IAAK1kI,EAAW,KAAK,EAGlCA,EAAW,WAAa,QAC1B0kI,EAAU,KAAK,IAAK1kI,EAAW,QAAQ,EAElC0kI,EAAU,KAAK,EAAE,CAC1B,CAEA,MAAM,UAAY,MAAM,KAAK,CAAE,OAAQ,GAAK,EAAE,CAAC7zI,EAAG6oB,IAAM,8BAA8B,KAAK,OAAO,aAAaA,CAAC,CAAC,CAAC,EAElH,SAAS,gBAAiB50B,EAAO,CAC/B,IAAI7B,EAAO,EACX,QAAST,EAAI,EAAGF,EAAMwC,EAAM,OAAQtC,EAAIF,EAAK,EAAEE,EAE7C,GADAS,EAAO6B,EAAM,WAAWtC,CAAC,EACrBS,EAAO,KAAO,UAAUA,CAAI,EAC9B,MAAO,GAGX,MAAO,EACT,CAEA,MAAM,UAAY,8HAElB,SAASuiJ,QAAOp0E,EAAKhvB,EAAM,CACzB,MAAM9nC,EAAU,OAAO,OAAO,GAAI8nC,CAAI,EAChCt4C,EAAS,CACb,OAAQ,OACR,SAAU,OACV,KAAM,GACN,KAAM,OACN,KAAM,GACN,MAAO,OACP,SAAU,MACX,EACKm8I,EAAc70E,EAAI,QAAQ,GAAG,IAAM,GACzC,IAAI80E,EAAO,GACP5rI,EAAQ,YAAc,WAAU82D,GAAO92D,EAAQ,OAASA,EAAQ,OAAS,IAAM,IAAM,KAAO82D,GAEhG,MAAMixE,EAAUjxE,EAAI,MAAM,SAAS,EAEnC,GAAIixE,EAAS,CAcX,GAZAv4I,EAAO,OAASu4I,EAAQ,CAAC,EACzBv4I,EAAO,SAAWu4I,EAAQ,CAAC,EAC3Bv4I,EAAO,KAAOu4I,EAAQ,CAAC,EACvBv4I,EAAO,KAAO,SAASu4I,EAAQ,CAAC,EAAG,EAAE,EACrCv4I,EAAO,KAAOu4I,EAAQ,CAAC,GAAK,GAC5Bv4I,EAAO,MAAQu4I,EAAQ,CAAC,EACxBv4I,EAAO,SAAWu4I,EAAQ,CAAC,EAGvB,MAAMv4I,EAAO,IAAI,IACnBA,EAAO,KAAOu4I,EAAQ,CAAC,GAErBv4I,EAAO,KAAM,CACf,MAAMq8I,EAAa,cAAcr8I,EAAO,IAAI,EAC5C,GAAIq8I,EAAW,SAAW,GAAO,CAC/B,MAAMC,EAAa,cAAcD,EAAW,KAAM,CAAE,OAAQ,GAAO,EACnEr8I,EAAO,KAAOs8I,EAAW,KAAK,YAAa,EAC3CF,EAAOE,EAAW,MAC1B,MACQt8I,EAAO,KAAOq8I,EAAW,KACzBD,EAAO,EAEV,CACGp8I,EAAO,SAAW,QAAaA,EAAO,WAAa,QAAaA,EAAO,OAAS,QAAaA,EAAO,OAAS,QAAa,CAACA,EAAO,MAAQA,EAAO,QAAU,OAC7JA,EAAO,UAAY,gBACVA,EAAO,SAAW,OAC3BA,EAAO,UAAY,WACVA,EAAO,WAAa,OAC7BA,EAAO,UAAY,WAEnBA,EAAO,UAAY,MAIjBwQ,EAAQ,WAAaA,EAAQ,YAAc,UAAYA,EAAQ,YAAcxQ,EAAO,YACtFA,EAAO,MAAQA,EAAO,OAAS,gBAAkBwQ,EAAQ,UAAY,eAIvE,MAAM2qI,EAAgB,SAAS3qI,EAAQ,QAAUxQ,EAAO,QAAU,IAAI,aAAa,EAGnF,GAAI,CAACwQ,EAAQ,iBAAmB,CAAC2qI,GAAiB,CAACA,EAAc,iBAE3Dn7I,EAAO,OAASwQ,EAAQ,YAAe2qI,GAAiBA,EAAc,aAAgBiB,IAAS,IAAS,gBAAgBp8I,EAAO,IAAI,EAErI,GAAI,CACFA,EAAO,KAAO,IAAI,cAAcA,EAAO,KAAK,aAAa,CAC1D,OAAQxF,EAAG,CACVwF,EAAO,MAAQA,EAAO,OAAS,qDAAuDxF,CACvF,EAKD,CAAC2gJ,GAAkBA,GAAiB,CAACA,EAAc,iBACjDgB,GAAen8I,EAAO,SAAW,SACnCA,EAAO,OAAS,SAASA,EAAO,MAAM,GAEpCm8I,GAAen8I,EAAO,OAAS,SACjCA,EAAO,KAAO,SAASA,EAAO,IAAI,GAEhCA,EAAO,OAAS,QAAaA,EAAO,KAAK,SAC3CA,EAAO,KAAO,OAAO,SAASA,EAAO,IAAI,CAAC,GAExCA,EAAO,WAAa,QAAaA,EAAO,SAAS,SACnDA,EAAO,SAAW,UAAU,mBAAmBA,EAAO,QAAQ,CAAC,IAK/Dm7I,GAAiBA,EAAc,OACjCA,EAAc,MAAMn7I,EAAQwQ,CAAO,CAEzC,MACIxQ,EAAO,MAAQA,EAAO,OAAS,yBAEjC,OAAOA,CACT,CAEA,MAAM,QAAU,CACd,QACA,UACF,QAAEgT,UACA,kBACF,MAAEsvD,QACA,UACF,MAAEo5E,OACF,EAEAa,UAAA,QAAiB,QACjBA,UAAA,gBAAyB,QACzBA,UAAA,gBAAyB,6CC7SzB,OAAO,eAAeC,MAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM,IAAMzjG,eACZ,IAAI,KAAO,0CACIyjG,MAAA,QAAG,iBCHlB,OAAO,eAAcrhJ,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAkB,QAAAA,EAAA,KAAeA,MAAcA,EAAoB,UAAAA,EAAA,IAAcA,IAAYA,EAAqB,kBAClH,IAAIy9I,EAAa7/F,WACjB,OAAO,eAAe59C,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOy9I,EAAW,UAAW,CAAI,GACrH,IAAI1K,EAAY5yF,QAChB,OAAO,eAAengD,EAAS,IAAK,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,CAAE,CAAI,GAClG,OAAO,eAAe/yI,EAAS,MAAO,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,GAAI,CAAI,GACtG,OAAO,eAAe/yI,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,SAAU,CAAI,GAClH,OAAO,eAAe/yI,EAAS,MAAO,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,GAAI,CAAI,GACtG,OAAO,eAAe/yI,EAAS,OAAQ,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,IAAK,CAAI,GACxG,OAAO,eAAe/yI,EAAS,UAAW,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,OAAQ,CAAI,GAC9G,MAAMuO,EAAqBnsF,iBACrBosF,EAAc9rF,UACd+rF,EAAUxnF,MACVynF,EAAYxnF,QACZynF,EAAYvhG,QACZs7F,EAAYvhF,UACZshF,EAAarhF,SACb65E,EAAS55E,OACTunF,EAAiB,WACjBN,EAAQ/mF,MACRsnF,EAAgB,CAACn+I,GAAKw0C,KAAU,IAAI,OAAOx0C,GAAKw0C,EAAK,EAC3D2pG,EAAc,KAAO,aACrB,MAAMC,EAAsB,CAAC,mBAAoB,cAAe,aAAa,EACvEC,EAAkB,IAAI,IAAI,CAC5B,WACA,YACA,QACA,UACA,OACA,SACA,UACA,UACA,UACA,gBACA,OACA,MACA,OACJ,CAAC,EACKC,EAAiB,CACnB,cAAe,GACf,OAAQ,gDACR,SAAU,8CACV,aAAc,mDACd,WAAY,wDACZ,YAAa,sEACb,YAAa,oEACb,WAAY,oCACZ,eAAgB,0CAChB,eAAgB,0CAChB,YAAa,6CACb,eAAgB,+EAChB,MAAO,8CACP,UAAW,8CACX,UAAW,oBACf,EACMC,EAAoB,CACtB,sBAAuB,GACvB,iBAAkB,GAClB,QAAS,oEACb,EACMC,EAAiB,IAEvB,SAASC,EAAgBvtH,GAAG,CACxB,IAAI9oB,GAAIkG,EAAIywH,GAAI2f,GAAIC,GAAIC,GAAIC,GAAIp3B,GAAIq3B,GAAI9hC,GAAIwK,GAAIu3B,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAI5iC,GAAI6iC,GAAIC,GAAIC,GAAIC,GACpG,MAAMxjJ,GAAI+0B,GAAE,OACN0uH,IAASx3I,GAAK8oB,GAAE,QAAU,MAAQ9oB,KAAO,OAAS,OAASA,GAAG,SAC9D0hI,GAAW8V,KAAU,IAAQA,KAAU,OAAY,EAAIA,IAAS,EAChEpL,IAAUzV,IAAMzwH,EAAK4iB,GAAE,QAAU,MAAQ5iB,IAAO,OAAS,OAASA,EAAG,UAAY,MAAQywH,KAAO,OAASA,GAAKof,EAC9GnH,IAAe0H,GAAKxtH,GAAE,eAAiB,MAAQwtH,KAAO,OAASA,GAAKd,EAAM,QAChF,MAAO,CACH,cAAegB,IAAMD,GAAKztH,GAAE,gBAAkB,MAAQytH,KAAO,OAASA,GAAKxiJ,MAAO,MAAQyiJ,KAAO,OAASA,GAAK,GAC/G,eAAgBn3B,IAAMo3B,GAAK3tH,GAAE,iBAAmB,MAAQ2tH,KAAO,OAASA,GAAK1iJ,MAAO,MAAQsrH,KAAO,OAASA,GAAK,GACjH,aAAczK,IAAM8hC,GAAK5tH,GAAE,eAAiB,MAAQ4tH,KAAO,OAASA,GAAK3iJ,MAAO,MAAQ6gH,KAAO,OAASA,GAAK,MAC7G,cAAe+hC,IAAMv3B,GAAKt2F,GAAE,gBAAkB,MAAQs2F,KAAO,OAASA,GAAKrrH,MAAO,MAAQ4iJ,KAAO,OAASA,GAAK,MAC/G,gBAAiBE,IAAMD,GAAK9tH,GAAE,kBAAoB,MAAQ8tH,KAAO,OAASA,GAAK7iJ,MAAO,MAAQ8iJ,KAAO,OAASA,GAAK,GACnH,KAAM/tH,GAAE,KAAO,CAAE,GAAGA,GAAE,KAAM,SAAA44G,GAAU,OAAA0K,EAAM,EAAK,CAAE,SAAA1K,GAAU,OAAA0K,EAAQ,EACrE,cAAe0K,GAAKhuH,GAAE,gBAAkB,MAAQguH,KAAO,OAASA,GAAKV,EACrE,UAAWW,GAAKjuH,GAAE,YAAc,MAAQiuH,KAAO,OAASA,GAAKX,EAC7D,MAAOY,GAAKluH,GAAE,QAAU,MAAQkuH,KAAO,OAASA,GAAK,GACrD,UAAWC,GAAKnuH,GAAE,YAAc,MAAQmuH,KAAO,OAASA,GAAK,GAC7D,YAAaC,GAAKpuH,GAAE,cAAgB,MAAQouH,KAAO,OAASA,GAAK,GACjE,UAAWC,GAAKruH,GAAE,YAAc,MAAQquH,KAAO,OAASA,GAAK,MAC7D,eAAgB5iC,GAAKzrF,GAAE,iBAAmB,MAAQyrF,KAAO,OAASA,GAAK,GACvE,gBAAiB6iC,GAAKtuH,GAAE,kBAAoB,MAAQsuH,KAAO,OAASA,GAAK,GACzE,iBAAkBC,GAAKvuH,GAAE,mBAAqB,MAAQuuH,KAAO,OAASA,GAAK,GAC3E,eAAgBC,GAAKxuH,GAAE,iBAAmB,MAAQwuH,KAAO,OAASA,GAAK,GACvE,YAAaC,GAAKzuH,GAAE,cAAgB,MAAQyuH,KAAO,OAASA,GAAK,GACjE,YAAa3I,EACrB,CACC,CACD,MAAM6I,CAAI,CACN,YAAYnmG,GAAO,GAAI,CACnB,KAAK,QAAU,GACf,KAAK,KAAO,GACZ,KAAK,QAAU,GACf,KAAK,cAAgB,IAAI,IACzB,KAAK,SAAW,GAChB,KAAK,OAAS,IAAI,IAClBA,GAAO,KAAK,KAAO,CAAE,GAAGA,GAAM,GAAG+kG,EAAgB/kG,EAAI,GACrD,KAAM,CAAE,IAAAsyF,EAAK,MAAAzrG,EAAK,EAAK,KAAK,KAAK,KACjC,KAAK,MAAQ,IAAI09G,EAAU,WAAW,CAAE,MAAO,CAAE,EAAE,SAAUI,EAAiB,IAAArS,EAAK,MAAAzrG,EAAO,GAC1F,KAAK,OAASu/G,EAAUpmG,GAAK,MAAM,EACnC,MAAMqmG,GAAYrmG,GAAK,gBACvBA,GAAK,gBAAkB,GACvB,KAAK,SAAYqkG,EAAQ,UAAQ,EACjCiC,EAAa,KAAK,KAAM1B,EAAgB5kG,GAAM,eAAe,EAC7DsmG,EAAa,KAAK,KAAMzB,EAAmB7kG,GAAM,aAAc,MAAM,EACrE,KAAK,UAAYumG,GAAqB,KAAK,IAAI,EAC3CvmG,GAAK,SACLwmG,GAAkB,KAAK,IAAI,EAC/B,KAAK,iBAAgB,EACrB,KAAK,sBAAqB,EACtBxmG,GAAK,UACLymG,GAAmB,KAAK,KAAMzmG,GAAK,QAAQ,EAC3C,OAAOA,GAAK,MAAQ,UACpB,KAAK,cAAcA,GAAK,IAAI,EAChC0mG,EAAkB,KAAK,IAAI,EAC3B1mG,GAAK,gBAAkBqmG,EAC1B,CACD,kBAAmB,CACf,KAAK,WAAW,QAAQ,CAC3B,CACD,uBAAwB,CACpB,KAAM,CAAE,MAAAlQ,GAAO,KAAAr2E,EAAM,SAAAu9E,EAAQ,EAAK,KAAK,KACvC,IAAIsJ,GAAiBnC,EACjBnH,KAAa,OACbsJ,GAAiB,CAAE,GAAGnC,GACtBmC,GAAe,GAAKA,GAAe,IACnC,OAAOA,GAAe,KAEtB7mF,GAAQq2E,IACR,KAAK,cAAcwQ,GAAgBA,GAAetJ,EAAQ,EAAG,EAAK,CACzE,CACD,aAAc,CACV,KAAM,CAAE,KAAAv9E,GAAM,SAAAu9E,GAAa,KAAK,KAChC,OAAQ,KAAK,KAAK,YAAc,OAAOv9E,IAAQ,SAAWA,GAAKu9E,CAAQ,GAAKv9E,GAAO,MACtF,CACD,SAAS8mF,GAET5tI,EACE,CACE,IAAIvK,GACJ,GAAI,OAAOm4I,IAAgB,UAEvB,GADAn4I,GAAI,KAAK,UAAUm4I,EAAY,EAC3B,CAACn4I,GACD,MAAM,IAAI,MAAM,8BAA8Bm4I,EAAY,GAAG,OAGjEn4I,GAAI,KAAK,QAAQm4I,EAAY,EAEjC,MAAMlgD,GAAQj4F,GAAEuK,CAAI,EACpB,MAAM,WAAYvK,KACd,KAAK,OAASA,GAAE,QACbi4F,EACV,CACD,QAAQmvC,GAAQgR,EAAO,CACnB,MAAMzM,GAAM,KAAK,WAAWvE,GAAQgR,CAAK,EACzC,OAAQzM,GAAI,UAAY,KAAK,kBAAkBA,EAAG,CACrD,CACD,aAAavE,GAAQ/1E,EAAM,CACvB,GAAI,OAAO,KAAK,KAAK,YAAc,WAC/B,MAAM,IAAI,MAAM,yCAAyC,EAE7D,KAAM,CAAE,WAAAgnF,EAAU,EAAK,KAAK,KAC5B,OAAOC,GAAgB,KAAK,KAAMlR,GAAQ/1E,CAAI,EAC9C,eAAeinF,GAAgBC,GAASH,GAAO,CAC3C,MAAMI,GAAe,KAAK,KAAMD,GAAQ,OAAO,EAC/C,MAAM5M,GAAM,KAAK,WAAW4M,GAASH,EAAK,EAC1C,OAAOzM,GAAI,UAAY8M,GAAc,KAAK,KAAM9M,EAAG,CACtD,CACD,eAAe6M,GAAehG,GAAM,CAC5BA,IAAQ,CAAC,KAAK,UAAUA,EAAI,GAC5B,MAAM8F,GAAgB,KAAK,KAAM,CAAE,KAAA9F,EAAI,EAAI,EAAI,CAEtD,CACD,eAAeiG,GAAc9M,GAAK,CAC9B,GAAI,CACA,OAAO,KAAK,kBAAkBA,EAAG,CACpC,OACMl4I,GAAG,CACN,GAAI,EAAEA,cAAakiJ,EAAY,SAC3B,MAAMliJ,GACV,OAAAilJ,GAAY,KAAK,KAAMjlJ,EAAC,EACxB,MAAMklJ,GAAkB,KAAK,KAAMllJ,GAAE,aAAa,EAC3CglJ,GAAc,KAAK,KAAM9M,EAAG,CACtC,CACJ,CACD,SAAS+M,GAAY,CAAE,cAAepzI,GAAK,WAAAszI,EAAU,EAAI,CACrD,GAAI,KAAK,KAAKtzI,EAAG,EACb,MAAM,IAAI,MAAM,aAAaA,EAAG,kBAAkBszI,EAAU,qBAAqB,CAExF,CACD,eAAeD,GAAkBrzI,GAAK,CAClC,MAAMizI,GAAU,MAAMM,GAAY,KAAK,KAAMvzI,EAAG,EAC3C,KAAK,KAAKA,EAAG,GACd,MAAMkzI,GAAe,KAAK,KAAMD,GAAQ,OAAO,EAC9C,KAAK,KAAKjzI,EAAG,GACd,KAAK,UAAUizI,GAASjzI,GAAK+rD,CAAI,CACxC,CACD,eAAewnF,GAAYvzI,GAAK,CAC5B,MAAMsC,GAAI,KAAK,SAAStC,EAAG,EAC3B,GAAIsC,GACA,OAAOA,GACX,GAAI,CACA,OAAO,MAAO,KAAK,SAAStC,EAAG,EAAI+yI,GAAW/yI,EAAG,EACpD,QACO,CACJ,OAAO,KAAK,SAASA,EAAG,CAC3B,CACJ,CACJ,CAED,UAAU8hI,GACVhpI,EACAg6I,GACAU,GAAkB,KAAK,KAAK,eAC1B,CACE,GAAI,MAAM,QAAQ1R,EAAM,EAAG,CACvB,UAAWuE,MAAOvE,GACd,KAAK,UAAUuE,GAAK,OAAWyM,GAAOU,EAAe,EACzD,OAAO,IACV,CACD,IAAIhxI,GACJ,GAAI,OAAOs/H,IAAW,SAAU,CAC5B,KAAM,CAAE,SAAAwH,EAAQ,EAAK,KAAK,KAE1B,GADA9mI,GAAKs/H,GAAOwH,EAAQ,EAChB9mI,KAAO,QAAa,OAAOA,IAAM,SACjC,MAAM,IAAI,MAAM,UAAU8mI,EAAQ,iBAAiB,CAE1D,CACD,OAAAxwI,KAAUyxI,EAAU,aAAazxI,GAAO0J,EAAE,EAC1C,KAAK,aAAa1J,CAAG,EACrB,KAAK,QAAQA,CAAG,EAAI,KAAK,WAAWgpI,GAAQgR,GAAOh6I,EAAK06I,GAAiB,EAAI,EACtE,IACV,CAGD,cAAc1R,GAAQhpI,EACtB06I,GAAkB,KAAK,KAAK,eAC1B,CACE,YAAK,UAAU1R,GAAQhpI,EAAK,GAAM06I,EAAe,EAC1C,IACV,CAED,eAAe1R,GAAQ2R,EAAiB,CACpC,GAAI,OAAO3R,IAAU,UACjB,MAAO,GACX,IAAI4R,GAEJ,GADAA,GAAU5R,GAAO,QACb4R,KAAY,QAAa,OAAOA,IAAW,SAC3C,MAAM,IAAI,MAAM,0BAA0B,EAG9C,GADAA,GAAUA,IAAW,KAAK,KAAK,aAAe,KAAK,cAC/C,CAACA,GACD,YAAK,OAAO,KAAK,2BAA2B,EAC5C,KAAK,OAAS,KACP,GAEX,MAAM/gD,GAAQ,KAAK,SAAS+gD,GAAS5R,EAAM,EAC3C,GAAI,CAACnvC,IAAS8gD,EAAiB,CAC3B,MAAMzrH,GAAU,sBAAwB,KAAK,WAAU,EACvD,GAAI,KAAK,KAAK,iBAAmB,MAC7B,KAAK,OAAO,MAAMA,EAAO,MAEzB,OAAM,IAAI,MAAMA,EAAO,CAC9B,CACD,OAAO2qE,EACV,CAGD,UAAUghD,GAAQ,CACd,IAAItN,EACJ,KAAO,OAAQA,EAAMuN,EAAU,KAAK,KAAMD,EAAM,IAAM,UAClDA,GAAStN,EACb,GAAIA,IAAQ,OAAW,CACnB,KAAM,CAAE,SAAAiD,EAAQ,EAAK,KAAK,KACpB9jI,GAAO,IAAI+qI,EAAU,UAAU,CAAE,OAAQ,CAAE,EAAE,SAAAjH,EAAQ,CAAE,EAE7D,GADAjD,EAAMkK,EAAU,cAAc,KAAK,KAAM/qI,GAAMmuI,EAAM,EACjD,CAACtN,EACD,OACJ,KAAK,KAAKsN,EAAM,EAAItN,CACvB,CACD,OAAQA,EAAI,UAAY,KAAK,kBAAkBA,CAAG,CACrD,CAKD,aAAawM,GAAc,CACvB,GAAIA,cAAwB,OACxB,YAAK,kBAAkB,KAAK,QAASA,EAAY,EACjD,KAAK,kBAAkB,KAAK,KAAMA,EAAY,EACvC,KAEX,OAAQ,OAAOA,GAAY,CACvB,IAAK,YACD,YAAK,kBAAkB,KAAK,OAAO,EACnC,KAAK,kBAAkB,KAAK,IAAI,EAChC,KAAK,OAAO,QACL,KACX,IAAK,SAAU,CACX,MAAMxM,EAAMuN,EAAU,KAAK,KAAMf,EAAY,EAC7C,OAAI,OAAOxM,GAAO,UACd,KAAK,OAAO,OAAOA,EAAI,MAAM,EACjC,OAAO,KAAK,QAAQwM,EAAY,EAChC,OAAO,KAAK,KAAKA,EAAY,EACtB,IACV,CACD,IAAK,SAAU,CACX,MAAM9vH,EAAW8vH,GACjB,KAAK,OAAO,OAAO9vH,CAAQ,EAC3B,IAAIvgB,GAAKqwI,GAAa,KAAK,KAAK,QAAQ,EACxC,OAAIrwI,KACAA,MAAS+nI,EAAU,aAAa/nI,EAAE,EAClC,OAAO,KAAK,QAAQA,EAAE,EACtB,OAAO,KAAK,KAAKA,EAAE,GAEhB,IACV,CACD,QACI,MAAM,IAAI,MAAM,qCAAqC,CAC5D,CACJ,CAED,cAAcqxI,GAAa,CACvB,UAAW55I,KAAO45I,GACd,KAAK,WAAW55I,CAAG,EACvB,OAAO,IACV,CACD,WAAW65I,GAAU75I,EACnB,CACE,IAAIkoI,GACJ,GAAI,OAAO2R,IAAY,SACnB3R,GAAU2R,GACN,OAAO75I,GAAO,WACd,KAAK,OAAO,KAAK,0DAA0D,EAC3EA,EAAI,QAAUkoI,YAGb,OAAO2R,IAAY,UAAY75I,IAAQ,QAG5C,GAFAA,EAAM65I,GACN3R,GAAUloI,EAAI,QACV,MAAM,QAAQkoI,EAAO,GAAK,CAACA,GAAQ,OACnC,MAAM,IAAI,MAAM,wDAAwD,MAI5E,OAAM,IAAI,MAAM,gCAAgC,EAGpD,GADA4R,EAAa,KAAK,KAAM5R,GAASloI,CAAG,EAChC,CAACA,EACD,SAAI6oI,EAAO,UAAUX,GAAU6C,IAAQgP,EAAQ,KAAK,KAAMhP,EAAG,CAAC,EACvD,KAEXiP,GAAkB,KAAK,KAAMh6I,CAAG,EAChC,MAAMkpB,GAAa,CACf,GAAGlpB,EACH,QAAUqwI,EAAW,cAAcrwI,EAAI,IAAI,EAC3C,cAAgBqwI,EAAW,cAAcrwI,EAAI,UAAU,CACnE,EACQ,SAAI6oI,EAAO,UAAUX,GAASh/G,GAAW,KAAK,SAAW,EAClDI,IAAMywH,EAAQ,KAAK,KAAMzwH,GAAGJ,EAAU,EACtCI,IAAMJ,GAAW,KAAK,QAASvV,IAAMomI,EAAQ,KAAK,KAAMzwH,GAAGJ,GAAYvV,EAAC,CAAC,CAAC,EAC1E,IACV,CACD,WAAWu0H,GAAS,CAChB,MAAM4C,EAAO,KAAK,MAAM,IAAI5C,EAAO,EACnC,OAAO,OAAO4C,GAAQ,SAAWA,EAAK,WAAa,CAAC,CAACA,CACxD,CAED,cAAc5C,GAAS,CAEnB,KAAM,CAAE,MAAAH,CAAO,EAAG,KAClB,OAAOA,EAAM,SAASG,EAAO,EAC7B,OAAOH,EAAM,IAAIG,EAAO,EACxB,UAAWxzG,MAASqzG,EAAM,MAAO,CAC7B,MAAM31I,GAAIsiC,GAAM,MAAM,UAAWo2G,IAASA,GAAK,UAAY5C,EAAO,EAC9D91I,IAAK,GACLsiC,GAAM,MAAM,OAAOtiC,GAAG,CAAC,CAC9B,CACD,OAAO,IACV,CAED,UAAUG,GAAM+nD,EAAQ,CACpB,OAAI,OAAOA,GAAU,WACjBA,EAAS,IAAI,OAAOA,CAAM,GAC9B,KAAK,QAAQ/nD,EAAI,EAAI+nD,EACd,IACV,CACD,WAAW59C,GAAS,KAAK,OACzB,CAAE,UAAAyxD,EAAY,KAAM,QAAA8rF,GAAU,MAAQ,EAAG,CAAE,EACzC,CACE,MAAI,CAACv9I,IAAUA,GAAO,SAAW,EACtB,YACJA,GACF,IAAKxI,IAAM,GAAG+lJ,EAAO,GAAG/lJ,GAAE,YAAY,IAAIA,GAAE,OAAO,EAAE,EACrD,OAAO,CAACyuB,GAAM1lB,KAAQ0lB,GAAOwrC,EAAYlxD,EAAG,CACpD,CACD,gBAAgBi9I,GAAYC,EAAsB,CAC9C,MAAMrS,GAAQ,KAAK,MAAM,IACzBoS,GAAa,KAAK,MAAM,KAAK,UAAUA,EAAU,CAAC,EAClD,UAAWlI,MAAemI,EAAsB,CAC5C,MAAMr8H,GAAWk0H,GAAY,MAAM,GAAG,EAAE,MAAM,CAAC,EAC/C,IAAIoI,GAAWF,GACf,UAAWG,MAAOv8H,GACds8H,GAAWA,GAASC,EAAG,EAC3B,UAAWx7I,MAAOipI,GAAO,CACrB,MAAMgD,GAAOhD,GAAMjpI,EAAG,EACtB,GAAI,OAAOisI,IAAQ,SACf,SACJ,KAAM,CAAE,MAAA3C,EAAK,EAAK2C,GAAK,WACjBjD,GAASuS,GAASv7I,EAAG,EACvBspI,IAASN,KACTuS,GAASv7I,EAAG,EAAIy7I,GAAazS,EAAM,EAC1C,CACJ,CACD,OAAOqS,EACV,CACD,kBAAkBK,GAAS5mF,EAAO,CAC9B,UAAW+lF,MAAUa,GAAS,CAC1B,MAAMnO,GAAMmO,GAAQb,EAAM,GACtB,CAAC/lF,GAASA,EAAM,KAAK+lF,EAAM,KACvB,OAAOtN,IAAO,SACd,OAAOmO,GAAQb,EAAM,EAEhBtN,IAAO,CAACA,GAAI,OACjB,KAAK,OAAO,OAAOA,GAAI,MAAM,EAC7B,OAAOmO,GAAQb,EAAM,GAGhC,CACJ,CACD,WAAW7R,GAAQ/1E,EAAMs9E,GAAQoL,GAAiB,KAAK,KAAK,eAAgBC,GAAY,KAAK,KAAK,cAAe,CAC7G,IAAIlyI,GACJ,KAAM,CAAE,SAAA8mI,EAAQ,EAAK,KAAK,KAC1B,GAAI,OAAOxH,IAAU,SACjBt/H,GAAKs/H,GAAOwH,EAAQ,MAEnB,CACD,GAAI,KAAK,KAAK,IACV,MAAM,IAAI,MAAM,uBAAuB,EACtC,GAAI,OAAOxH,IAAU,UACtB,MAAM,IAAI,MAAM,kCAAkC,CACzD,CACD,IAAIuE,GAAM,KAAK,OAAO,IAAIvE,EAAM,EAChC,GAAIuE,KAAQ,OACR,OAAOA,GACXgD,MAAakB,EAAU,aAAa/nI,IAAM6mI,EAAM,EAChD,MAAMM,GAAYY,EAAU,cAAc,KAAK,KAAMzI,GAAQuH,EAAM,EACnE,OAAAhD,GAAM,IAAIkK,EAAU,UAAU,CAAE,OAAAzO,GAAQ,SAAAwH,GAAU,KAAAv9E,EAAM,OAAAs9E,GAAQ,UAAAM,EAAS,CAAE,EAC3E,KAAK,OAAO,IAAItD,GAAI,OAAQA,EAAG,EAC3BqO,IAAa,CAACrL,GAAO,WAAW,GAAG,IAE/BA,IACA,KAAK,aAAaA,EAAM,EAC5B,KAAK,KAAKA,EAAM,EAAIhD,IAEpBoO,IACA,KAAK,eAAe3S,GAAQ,EAAI,EAC7BuE,EACV,CACD,aAAa7jI,GAAI,CACb,GAAI,KAAK,QAAQA,EAAE,GAAK,KAAK,KAAKA,EAAE,EAChC,MAAM,IAAI,MAAM,0BAA0BA,EAAE,kBAAkB,CAErE,CACD,kBAAkB6jI,GAAK,CAMnB,GALIA,GAAI,KACJ,KAAK,mBAAmBA,EAAG,EAE3BkK,EAAU,cAAc,KAAK,KAAMlK,EAAG,EAEtC,CAACA,GAAI,SACL,MAAM,IAAI,MAAM,0BAA0B,EAC9C,OAAOA,GAAI,QACd,CACD,mBAAmBA,GAAK,CACpB,MAAMsO,EAAc,KAAK,KACzB,KAAK,KAAO,KAAK,UACjB,GAAI,CACApE,EAAU,cAAc,KAAK,KAAMlK,EAAG,CACzC,QACO,CACJ,KAAK,KAAOsO,CACf,CACJ,CACJ,CACDvC,EAAI,gBAAkBhC,EAAmB,QACzCgC,EAAI,gBAAkB/B,EAAY,QAClCvhJ,EAAA,QAAkBsjJ,EAClB,SAASG,EAAa15B,GAAW10G,GAASjN,EAAK81C,GAAM,QAAS,CAC1D,UAAWl0C,MAAO+/G,GAAW,CACzB,MAAM7uG,GAAMlR,GACRkR,MAAO7F,IACP,KAAK,OAAO6oC,EAAG,EAAE,GAAG91C,CAAG,YAAY4B,EAAG,KAAK+/G,GAAU7uG,EAAG,CAAC,EAAE,CAClE,CACJ,CACD,SAAS4pI,EAAUD,GAAQ,CACvB,OAAAA,MAAapJ,EAAU,aAAaoJ,EAAM,EACnC,KAAK,QAAQA,EAAM,GAAK,KAAK,KAAKA,EAAM,CAClD,CACD,SAAShB,GAAoB,CACzB,MAAMiC,GAAc,KAAK,KAAK,QAC9B,GAAKA,GAEL,GAAI,MAAM,QAAQA,EAAW,EACzB,KAAK,UAAUA,EAAW,MAE1B,WAAW97I,MAAO87I,GACd,KAAK,UAAUA,GAAY97I,EAAG,EAAGA,EAAG,CAC/C,CACD,SAAS25I,IAAoB,CACzB,UAAWjmJ,MAAQ,KAAK,KAAK,QAAS,CAClC,MAAM+nD,GAAS,KAAK,KAAK,QAAQ/nD,EAAI,EACjC+nD,IACA,KAAK,UAAU/nD,GAAM+nD,EAAM,CAClC,CACJ,CACD,SAASm+F,GAAmBmC,GAAM,CAC9B,GAAI,MAAM,QAAQA,EAAI,EAAG,CACrB,KAAK,cAAcA,EAAI,EACvB,MACH,CACD,KAAK,OAAO,KAAK,kDAAkD,EACnE,UAAW1S,MAAW0S,GAAM,CACxB,MAAM56I,EAAM46I,GAAK1S,EAAO,EACnBloI,EAAI,UACLA,EAAI,QAAUkoI,IAClB,KAAK,WAAWloI,CAAG,CACtB,CACJ,CACD,SAASu4I,IAAuB,CAC5B,MAAMsC,GAAW,CAAE,GAAG,KAAK,IAAI,EAC/B,UAAW9qI,MAAO2mI,EACd,OAAOmE,GAAS9qI,EAAG,EACvB,OAAO8qI,EACV,CACD,MAAMC,GAAS,CAAE,KAAM,CAAG,EAAE,MAAO,GAAK,OAAQ,IAChD,SAAS1C,EAAU2C,GAAQ,CACvB,GAAIA,KAAW,GACX,OAAOD,GACX,GAAIC,KAAW,OACX,OAAO,QACX,GAAIA,GAAO,KAAOA,GAAO,MAAQA,GAAO,MACpC,OAAOA,GACX,MAAM,IAAI,MAAM,mDAAmD,CACtE,CACD,MAAMC,EAAe,0BACrB,SAASlB,EAAa5R,GAASloI,GAAK,CAChC,KAAM,CAAE,MAAA+nI,CAAO,EAAG,KAOlB,MANIc,EAAO,UAAUX,GAAU6C,IAAQ,CACnC,GAAIhD,EAAM,SAASgD,EAAG,EAClB,MAAM,IAAI,MAAM,WAAWA,EAAG,qBAAqB,EACvD,GAAI,CAACiQ,EAAa,KAAKjQ,EAAG,EACtB,MAAM,IAAI,MAAM,WAAWA,EAAG,mBAAmB,CAC7D,CAAK,EACG,EAAC/qI,IAEDA,GAAI,OAAS,EAAE,SAAUA,IAAO,aAAcA,IAC9C,MAAM,IAAI,MAAM,uDAAuD,CAE9E,CACD,SAAS+5I,EAAQ7R,GAASh/G,GAAYoiH,EAAU,CAC5C,IAAI5qI,GACJ,MAAMmuI,GAA+D3lH,IAAW,KAChF,GAAIoiH,GAAYuD,GACZ,MAAM,IAAI,MAAM,6CAA6C,EACjE,KAAM,CAAE,MAAA9G,EAAO,EAAG,KAClB,IAAIkT,GAAYpM,GAAO9G,GAAM,KAAOA,GAAM,MAAM,KAAK,CAAC,CAAE,KAAMp0H,EAAG,IAAKA,KAAM23H,CAAQ,EAMpF,GALK2P,KACDA,GAAY,CAAE,KAAM3P,EAAU,MAAO,CAAE,GACvCvD,GAAM,MAAM,KAAKkT,EAAS,GAE9BlT,GAAM,SAASG,EAAO,EAAI,GACtB,CAACh/G,GACD,OACJ,MAAM4hH,GAAO,CACT,QAAA5C,GACA,WAAY,CACR,GAAGh/G,GACH,QAAUmnH,EAAW,cAAcnnH,GAAW,IAAI,EAClD,cAAgBmnH,EAAW,cAAcnnH,GAAW,UAAU,CACjE,CACT,EACQA,GAAW,OACXgyH,GAAc,KAAK,KAAMD,GAAWnQ,GAAM5hH,GAAW,MAAM,EAE3D+xH,GAAU,MAAM,KAAKnQ,EAAI,EAC7B/C,GAAM,IAAIG,EAAO,EAAI4C,IACpBpqI,GAAKwoB,GAAW,cAAgB,MAAQxoB,KAAO,QAAkBA,GAAG,QAASqqI,IAAQ,KAAK,WAAWA,EAAG,CAAC,CAC7G,CACD,SAASmQ,GAAcD,GAAWnQ,GAAMrmH,EAAQ,CAC5C,MAAMryB,GAAI6oJ,GAAU,MAAM,UAAWE,IAAUA,GAAM,UAAY12H,CAAM,EACnEryB,IAAK,EACL6oJ,GAAU,MAAM,OAAO7oJ,GAAG,EAAG04I,EAAI,GAGjCmQ,GAAU,MAAM,KAAKnQ,EAAI,EACzB,KAAK,OAAO,KAAK,QAAQrmH,CAAM,iBAAiB,EAEvD,CACD,SAASu1H,GAAkBh6I,GAAK,CAC5B,GAAI,CAAE,WAAAk6I,EAAY,EAAGl6I,GACjBk6I,KAAe,SAEfl6I,GAAI,OAAS,KAAK,KAAK,QACvBk6I,GAAaI,GAAaJ,EAAU,GACxCl6I,GAAI,eAAiB,KAAK,QAAQk6I,GAAY,EAAI,EACrD,CACD,MAAMkB,GAAW,CACb,KAAM,gFACV,EACA,SAASd,GAAazS,GAAQ,CAC1B,MAAO,CAAE,MAAO,CAACA,GAAQuT,EAAQ,CAAC,CACrC,0CCvmBD,OAAO,eAAe,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAMp7I,MAAM,CACR,QAAS,KACT,MAAO,CACH,MAAM,IAAI,MAAM,sDAAsD,CACzE,CACL,EACe,WAAGA,iBCPlB,OAAO,eAAe,IAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,YAAkB,gBAAsB,OACxC,MAAMo2I,cAAc3jG,UACdmwF,SAAS5tF,OACT4yF,YAAY59E,QACZ4+E,UAAUt+E,QACVgsF,YAAYznF,QACZg6E,SAAS/5E,OACT9uD,MAAM,CACR,QAAS,OACT,WAAY,SACZ,KAAKgpI,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,OAAQ6wE,EAAM,GAAAlkG,CAAE,EAAKi6F,EAC5B,CAAE,OAAAoG,EAAQ,UAAWmD,EAAK,aAAAxI,EAAc,KAAA/3F,EAAM,KAAA1sC,CAAM,EAAGypC,EACvD,CAAE,KAAAxjC,CAAM,EAAGgnI,EACjB,IAAKU,IAAS,KAAOA,IAAS,OAAS7D,IAAW7jI,EAAK,OACnD,OAAO8vI,EAAW,EACtB,MAAMC,EAAWhF,YAAU,WAAW,KAAKhxI,EAAMiG,EAAM6jI,EAAQ6D,CAAI,EACnE,GAAIqI,IAAa,OACb,MAAM,IAAIlF,cAAY,QAAQrnG,EAAG,KAAK,YAAaqgG,EAAQ6D,CAAI,EACnE,GAAIqI,aAAoBhF,YAAU,UAC9B,OAAOiF,EAAaD,CAAQ,EAChC,OAAOE,EAAgBF,CAAQ,EAC/B,SAASD,GAAc,CACnB,GAAI9I,IAAQhnI,EACR,OAAO,QAAQy9H,EAAKe,EAAcwI,EAAKA,EAAI,MAAM,EACrD,MAAM/B,EAAWpuE,EAAI,WAAW,OAAQ,CAAE,IAAK72D,CAAI,CAAE,EACrD,OAAO,QAAQy9H,KAASpB,YAAU,KAAM4I,CAAQ,YAAajlI,EAAMA,EAAK,MAAM,CACjF,CACD,SAASgwI,EAAanP,EAAK,CACvB,MAAM3rI,EAAI,YAAYuoI,EAAKoD,CAAG,EAC9B,QAAQpD,EAAKvoI,EAAG2rI,EAAKA,EAAI,MAAM,CAClC,CACD,SAASoP,EAAgBpP,EAAK,CAC1B,MAAMqP,EAAUr5E,EAAI,WAAW,SAAUpwB,EAAK,KAAK,SAAW,GAAO,CAAE,IAAKo6F,EAAK,QAAUxE,YAAU,WAAWwE,CAAG,CAAC,EAAK,CAAE,IAAKA,CAAG,CAAE,EAC/H1zC,EAAQt2B,EAAI,KAAK,OAAO,EACxBgrE,EAASpE,EAAI,UAAU,CACzB,OAAQoD,EACR,UAAW,CAAE,EACb,WAAYxE,YAAU,IACtB,aAAc6T,EACd,cAAexI,CAClB,EAAEv6C,CAAK,EACRswC,EAAI,eAAeoE,CAAM,EACzBpE,EAAI,GAAGtwC,CAAK,CACf,CACJ,CACL,EACA,SAAS,YAAYswC,EAAKoD,EAAK,CAC3B,KAAM,CAAE,IAAAhqE,CAAK,EAAG4mE,EAChB,OAAOoD,EAAI,SACLhqE,EAAI,WAAW,WAAY,CAAE,IAAKgqE,EAAI,SAAU,KAC5CxE,YAAU,KAAMxlE,EAAI,WAAW,UAAW,CAAE,IAAKgqE,EAAK,CAAC,WACrE,CACmB,gBAAG,YACtB,SAAS,QAAQpD,EAAKvoI,EAAG2rI,EAAKsP,EAAQ,CAClC,KAAM,CAAE,IAAAt5E,EAAK,GAAArzB,CAAI,EAAGi6F,EACd,CAAE,UAAAI,EAAW,UAAWmJ,EAAK,KAAAvgG,CAAI,EAAKjD,EACtCk/F,EAAUj8F,EAAK,YAAc42F,UAAQ,QAAQ,KAAOhB,YAAU,IAChE8T,EACAC,IAEAC,IACJ,SAASD,GAAe,CACpB,GAAI,CAACpJ,EAAI,OACL,MAAM,IAAI,MAAM,wCAAwC,EAC5D,MAAM75C,EAAQt2B,EAAI,IAAI,OAAO,EAC7BA,EAAI,IAAI,IAAM,CACVA,EAAI,QAASwlE,YAAU,cAAgBhF,SAAO,kBAAkBoG,EAAKvoI,EAAGwtI,CAAO,CAAC,EAAE,EAClF4N,EAAiBp7I,CAAC,EACb2oI,GACDhnE,EAAI,OAAOs2B,EAAO,EAAI,CAC7B,EAAGxkG,GAAM,CACNkuE,EAAI,MAAOwlE,YAAU,OAAQ1zI,CAAC,eAAe66C,EAAG,eAAe,IAAK,IAAMqzB,EAAI,MAAMluE,CAAC,CAAC,EACtF4nJ,EAAc5nJ,CAAC,EACVk1I,GACDhnE,EAAI,OAAOs2B,EAAO,EAAK,CACvC,CAAS,EACDswC,EAAI,GAAGtwC,CAAK,CACf,CACD,SAASkjD,GAAc,CACnB5S,EAAI,UAAWpG,SAAO,kBAAkBoG,EAAKvoI,EAAGwtI,CAAO,EAAG,IAAM4N,EAAiBp7I,CAAC,EAAG,IAAMq7I,EAAcr7I,CAAC,CAAC,CAC9G,CACD,SAASq7I,EAAcv1I,EAAQ,CAC3B,MAAMujI,KAAWlC,YAAU,KAAMrhI,CAAM,UACvC67D,EAAI,OAAOwmE,UAAQ,QAAQ,WAAahB,YAAU,KAAMgB,UAAQ,QAAQ,OAAO,eAAekB,CAAI,MAAMlB,UAAQ,QAAQ,OAAO,WAAWkB,CAAI,GAAG,EACjJ1nE,EAAI,OAAOwmE,UAAQ,QAAQ,UAAYhB,YAAU,KAAMgB,UAAQ,QAAQ,OAAO,SAAS,CAC1F,CACD,SAASiT,EAAiBt1I,EAAQ,CAC9B,IAAI7F,EACJ,GAAI,CAACquC,EAAG,KAAK,YACT,OACJ,MAAMgtG,GAAgBr7I,EAA+C0rI,GAAI,YAAc,MAAQ1rI,IAAO,OAAS,OAASA,EAAG,UAE3H,GAAIquC,EAAG,QAAU,GACb,GAAIgtG,GAAgB,CAACA,EAAa,aAC1BA,EAAa,QAAU,SACvBhtG,EAAG,MAAQ85F,SAAO,eAAe,MAAMzmE,EAAK25E,EAAa,MAAOhtG,EAAG,KAAK,OAG3E,CACD,MAAMtnC,EAAQ26D,EAAI,IAAI,WAAawlE,YAAU,KAAMrhI,CAAM,kBAAkB,EAC3EwoC,EAAG,MAAQ85F,SAAO,eAAe,MAAMzmE,EAAK36D,EAAOsnC,EAAG,MAAO64F,YAAU,IAAI,CAC9E,CAEL,GAAI74F,EAAG,QAAU,GACb,GAAIgtG,GAAgB,CAACA,EAAa,aAC1BA,EAAa,QAAU,SACvBhtG,EAAG,MAAQ85F,SAAO,eAAe,MAAMzmE,EAAK25E,EAAa,MAAOhtG,EAAG,KAAK,OAG3E,CACD,MAAM5S,EAAQimC,EAAI,IAAI,WAAawlE,YAAU,KAAMrhI,CAAM,kBAAkB,EAC3EwoC,EAAG,MAAQ85F,SAAO,eAAe,MAAMzmE,EAAKjmC,EAAO4S,EAAG,MAAO64F,YAAU,IAAI,CAC9E,CAER,CACL,CACe,YAAG,QACH,YAAG5nI,MCvHlB,OAAO,eAAeg8I,OAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM,KAAOvpG,GACP,MAAQuC,IACRinG,OAAO,CACT,UACA,MACA,QACA,cACA,CAAE,QAAS,UAAY,EACvB,cACA,KAAK,QACL,MAAM,OACV,EACeD,OAAA,QAAGC,0CCblB,OAAO,eAAe,YAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAMrU,YAAYn1F,QACZ,IAAMm1F,YAAU,UAChB,KAAO,CACT,QAAS,CAAE,MAAO,KAAM,GAAI,IAAI,IAAK,KAAM,IAAI,EAAI,EACnD,QAAS,CAAE,MAAO,KAAM,GAAI,IAAI,IAAK,KAAM,IAAI,EAAI,EACnD,iBAAkB,CAAE,MAAO,IAAK,GAAI,IAAI,GAAI,KAAM,IAAI,GAAK,EAC3D,iBAAkB,CAAE,MAAO,IAAK,GAAI,IAAI,GAAI,KAAM,IAAI,GAAK,CAC/D,EACMj5F,QAAQ,CACV,QAAS,CAAC,CAAE,QAAAu5F,EAAS,WAAAgE,CAAU,OAAWtE,YAAU,eAAgB,KAAKM,CAAO,EAAE,KAAK,IAAIgE,CAAU,GACrG,OAAQ,CAAC,CAAE,QAAAhE,EAAS,WAAAgE,CAAU,OAAWtE,YAAU,kBAAmB,KAAKM,CAAO,EAAE,KAAK,YAAYgE,CAAU,GACnH,EACMlsI,MAAM,CACR,QAAS,OAAO,KAAK,IAAI,EACzB,KAAM,SACN,WAAY,SACZ,MAAO,GACX,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,QAAAd,EAAS,KAAAl9H,EAAM,WAAAkhI,CAAU,EAAKlD,EACtCA,EAAI,aAAcpB,YAAU,KAAM58H,CAAI,IAAI,KAAKk9H,CAAO,EAAE,IAAI,IAAIgE,CAAU,aAAalhI,CAAI,GAAG,CACjG,CACL,EACe,oBAAGhL,wBCxBlB,OAAO,eAAe,WAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4nI,YAAYn1F,QACZ9D,QAAQ,CACV,QAAS,CAAC,CAAE,WAAAu9F,QAAqBtE,YAAU,2BAA4BsE,CAAU,GACjF,OAAQ,CAAC,CAAE,WAAAA,CAAU,OAAWtE,YAAU,kBAAmBsE,CAAU,GAC3E,EACMlsI,MAAM,CACR,QAAS,aACT,KAAM,SACN,WAAY,SACZ,MAAO,GACX,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,KAAAp3D,EAAM,WAAAkhI,EAAY,GAAAn9F,CAAE,EAAKi6F,EAEhCkT,EAAOntG,EAAG,KAAK,oBACf70C,EAAMkoE,EAAI,IAAI,KAAK,EACnB+5E,EAAUD,KACNtU,YAAU,yBAA0B1tI,CAAG,OAAOA,CAAG,UAAUgiJ,CAAI,MAC/DtU,YAAU,KAAM1tI,CAAG,iBAAiBA,CAAG,IACjD8uI,EAAI,aAAcpB,YAAU,MAAOsE,CAAU,cAAchyI,CAAG,MAAM8Q,CAAI,IAAIkhI,CAAU,KAAKiQ,CAAO,IAAI,CACzG,CACL,EACe,mBAAGn8I,yCCvBlB,OAAO,eAAeo8I,aAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAG5D,SAAS,WAAW9jJ,EAAK,CACrB,MAAMpG,EAAMoG,EAAI,OAChB,IAAI5C,EAAS,EACT8B,EAAM,EACN9C,EACJ,KAAO8C,EAAMtF,GACTwD,IACAhB,EAAQ4D,EAAI,WAAWd,GAAK,EACxB9C,GAAS,OAAUA,GAAS,OAAU8C,EAAMtF,IAE5CwC,EAAQ4D,EAAI,WAAWd,CAAG,GACrB9C,EAAQ,SAAY,OACrB8C,KAGZ,OAAO9B,CACX,CACe0mJ,aAAA,QAAG,WAClB,WAAW,KAAO,iDCrBlB,OAAO,eAAe,YAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAMxU,YAAYn1F,QACZo2F,SAAS7zF,OACT,aAAegV,aACfrb,QAAQ,CACV,QAAQ,CAAE,QAAAu5F,EAAS,WAAAgE,GAAc,CAC7B,MAAMxiI,EAAOw+H,IAAY,YAAc,OAAS,QAChD,SAAWN,YAAU,qBAAsBl+H,CAAI,SAASwiI,CAAU,aACrE,EACD,OAAQ,CAAC,CAAE,WAAAA,CAAU,OAAWtE,YAAU,aAAcsE,CAAU,GACtE,EACMlsI,MAAM,CACR,QAAS,CAAC,YAAa,WAAW,EAClC,KAAM,SACN,WAAY,SACZ,MAAO,GACX,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,QAAAd,EAAS,KAAAl9H,EAAM,WAAAkhI,EAAY,GAAAn9F,CAAE,EAAKi6F,EACpCj5E,EAAKm4E,IAAY,YAAcN,YAAU,UAAU,GAAKA,YAAU,UAAU,GAC5E11I,EAAM68C,EAAG,KAAK,UAAY,MAAY64F,YAAU,KAAM58H,CAAI,aAAgB48H,YAAU,QAAUiB,SAAO,SAASG,EAAI,IAAK,aAAa,OAAO,CAAC,IAAIh+H,CAAI,IAC1Jg+H,EAAI,aAAcpB,YAAU,KAAM11I,CAAG,IAAI69D,CAAE,IAAIm8E,CAAU,EAAE,CAC9D,CACL,EACe,oBAAGlsI,qBCxBlB,OAAO,eAAe,QAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4iI,SAASnwF,OACTm1F,YAAY5yF,QACZrG,QAAQ,CACV,QAAS,CAAC,CAAE,WAAAu9F,CAAU,OAAWtE,YAAU,2BAA4BsE,CAAU,IACjF,OAAQ,CAAC,CAAE,WAAAA,CAAU,OAAWtE,YAAU,eAAgBsE,CAAU,GACxE,EACMlsI,MAAM,CACR,QAAS,UACT,KAAM,SACN,WAAY,SACZ,MAAO,GACX,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,KAAAh+H,EAAM,MAAAm9H,EAAO,OAAAN,EAAQ,WAAAqE,EAAY,GAAAn9F,CAAI,EAAGi6F,EAE1C9vH,EAAI61B,EAAG,KAAK,cAAgB,IAAM,GAClC+9F,EAAS3E,KAAYP,YAAU,iBAAkBsE,CAAU,KAAKhzH,CAAC,QAAW0pH,SAAO,YAAYoG,EAAKnB,CAAM,EAChHmB,EAAI,aAAcpB,YAAU,MAAOkF,CAAM,SAAS9hI,CAAI,GAAG,CAC5D,CACL,EACe,gBAAGhL,6BCrBlB,OAAO,eAAe,gBAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4nI,YAAYn1F,QACZ9D,QAAQ,CACV,QAAQ,CAAE,QAAAu5F,EAAS,WAAAgE,GAAc,CAC7B,MAAMxiI,EAAOw+H,IAAY,gBAAkB,OAAS,QACpD,SAAWN,YAAU,qBAAsBl+H,CAAI,SAASwiI,CAAU,aACrE,EACD,OAAQ,CAAC,CAAE,WAAAA,CAAU,OAAWtE,YAAU,aAAcsE,CAAU,GACtE,EACMlsI,MAAM,CACR,QAAS,CAAC,gBAAiB,eAAe,EAC1C,KAAM,SACN,WAAY,SACZ,MAAO,GACX,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,QAAAd,EAAS,KAAAl9H,EAAM,WAAAkhI,CAAU,EAAKlD,EAChCj5E,EAAKm4E,IAAY,gBAAkBN,YAAU,UAAU,GAAKA,YAAU,UAAU,GACtFoB,EAAI,aAAcpB,YAAU,iBAAkB58H,CAAI,YAAY+kD,CAAE,IAAIm8E,CAAU,EAAE,CACnF,CACL,EACe,wBAAGlsI,sBCrBlB,OAAO,eAAe,SAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4iI,SAASnwF,OACTm1F,YAAY5yF,QACZ6zF,SAAS7+E,OACTrb,QAAQ,CACV,QAAS,CAAC,CAAE,OAAQ,CAAE,gBAAA0tG,CAAe,CAAI,OAASzU,YAAU,oCAAqCyU,CAAe,IAChH,OAAQ,CAAC,CAAE,OAAQ,CAAE,gBAAAA,CAAe,CAAI,OAASzU,YAAU,uBAAwByU,CAAe,GACtG,EACMr8I,MAAM,CACR,QAAS,WACT,KAAM,SACN,WAAY,QACZ,MAAO,GACX,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,OAAAylE,EAAQ,WAAAqE,EAAY,KAAAlhI,EAAM,MAAAm9H,EAAO,GAAAp5F,CAAI,EAAGi6F,EAC/C,CAAE,KAAAh3F,CAAM,EAAGjD,EACjB,GAAI,CAACo5F,GAASN,EAAO,SAAW,EAC5B,OACJ,MAAMyU,EAAUzU,EAAO,QAAU71F,EAAK,aAKtC,GAJIjD,EAAG,UACHwtG,IAEAC,IACAxqG,EAAK,eAAgB,CACrB,MAAMvqC,EAAQuhI,EAAI,aAAa,WACzB,CAAE,kBAAAyT,CAAiB,EAAKzT,EAAI,GAClC,UAAW0T,KAAe7U,EACtB,GAAmDpgI,IAAMi1I,CAAW,IAAO,QAAa,CAACD,EAAkB,IAAIC,CAAW,EAAG,CACzH,MAAMzU,EAAal5F,EAAG,UAAU,OAASA,EAAG,cACtC9xC,EAAM,sBAAsBy/I,CAAW,wBAAwBzU,CAAU,wBAC3EY,SAAO,iBAAiB95F,EAAI9xC,EAAK8xC,EAAG,KAAK,cAAc,CAC9D,CAER,CACD,SAASwtG,GAAgB,CACrB,GAAID,GAAWnU,EACXa,EAAI,WAAWpB,YAAU,IAAK+U,CAAe,MAG7C,WAAWrpI,KAAQu0H,KACXjF,SAAO,wBAAwBoG,EAAK11H,CAAI,CAGvD,CACD,SAASkpI,GAAkB,CACvB,MAAMjQ,EAAUnqE,EAAI,IAAI,SAAS,EACjC,GAAIk6E,GAAWnU,EAAO,CAClB,MAAMzvC,EAAQt2B,EAAI,IAAI,QAAS,EAAI,EACnC4mE,EAAI,WAAWtwC,EAAO,IAAMkkD,EAAiBrQ,EAAS7zC,CAAK,CAAC,EAC5DswC,EAAI,GAAGtwC,CAAK,CACf,MAEGt2B,EAAI,MAAOwgE,SAAO,kBAAkBoG,EAAKnB,EAAQ0E,CAAO,CAAC,KACrD3J,SAAO,mBAAmBoG,EAAKuD,CAAO,EAC1CnqE,EAAI,KAAI,CAEf,CACD,SAASu6E,GAAkB,CACvBv6E,EAAI,MAAM,OAAQ8pE,EAAa54H,GAAS,CACpC01H,EAAI,UAAU,CAAE,gBAAiB11H,CAAM,GACvC8uD,EAAI,MAAOwgE,SAAO,kBAAkBxgE,EAAKp3D,EAAMsI,EAAM0+B,EAAK,aAAa,EAAG,IAAMg3F,EAAI,MAAO,EAC3G,CAAa,CACJ,CACD,SAAS4T,EAAiBrQ,EAAS7zC,EAAO,CACtCswC,EAAI,UAAU,CAAE,gBAAiBuD,CAAS,GAC1CnqE,EAAI,MAAMmqE,EAASL,EAAY,IAAM,CACjC9pE,EAAI,OAAOs2B,KAAWkqC,SAAO,gBAAgBxgE,EAAKp3D,EAAMuhI,EAASv6F,EAAK,aAAa,CAAC,EACpFowB,EAAI,MAAOwlE,YAAU,KAAKlvC,CAAK,EAAG,IAAM,CACpCswC,EAAI,MAAK,EACT5mE,EAAI,MAAK,CAC7B,CAAiB,CACjB,EAAewlE,YAAU,GAAG,CACnB,CACJ,CACL,EACe,iBAAG5nI,wBC5ElB,OAAO,eAAe,WAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4nI,YAAYn1F,QACZ9D,QAAQ,CACV,QAAQ,CAAE,QAAAu5F,EAAS,WAAAgE,GAAc,CAC7B,MAAMxiI,EAAOw+H,IAAY,WAAa,OAAS,QAC/C,SAAWN,YAAU,qBAAsBl+H,CAAI,SAASwiI,CAAU,QACrE,EACD,OAAQ,CAAC,CAAE,WAAAA,CAAU,OAAWtE,YAAU,aAAcsE,CAAU,GACtE,EACMlsI,MAAM,CACR,QAAS,CAAC,WAAY,UAAU,EAChC,KAAM,QACN,WAAY,SACZ,MAAO,GACX,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,QAAAd,EAAS,KAAAl9H,EAAM,WAAAkhI,CAAU,EAAKlD,EAChCj5E,EAAKm4E,IAAY,WAAaN,YAAU,UAAU,GAAKA,YAAU,UAAU,GACjFoB,EAAI,aAAcpB,YAAU,KAAM58H,CAAI,WAAW+kD,CAAE,IAAIm8E,CAAU,EAAE,CACtE,CACL,EACe,mBAAGlsI,oCCrBlB,OAAO,eAAe68I,QAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAE5D,MAAM,MAAQpqG,cACd,MAAM,KAAO,4CACEoqG,QAAA,QAAG,MCJlB,OAAO,eAAe,YAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM,WAAapqG,SACbm1F,YAAY5yF,QACZ6zF,SAAS7+E,OACT6yF,UAAUvyF,QACV3b,QAAQ,CACV,QAAS,CAAC,CAAE,OAAQ,CAAE,EAAAv8C,EAAG,EAAAkH,CAAG,QAAWsuI,YAAU,+CAAgDtuI,CAAC,QAAQlH,CAAC,kBAC3G,OAAQ,CAAC,CAAE,OAAQ,CAAE,EAAAA,EAAG,EAAAkH,CAAG,QAAWsuI,YAAU,SAAUx1I,CAAC,QAAQkH,CAAC,GACxE,EACM0G,MAAM,CACR,QAAS,cACT,KAAM,QACN,WAAY,UACZ,MAAO,GACX,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,KAAAp3D,EAAM,MAAAm9H,EAAO,OAAAN,EAAQ,aAAA6C,EAAc,WAAAwB,EAAY,GAAAn9F,CAAI,EAAGi6F,EACnE,GAAI,CAACb,GAAS,CAACN,EACX,OACJ,MAAMnvC,EAAQt2B,EAAI,IAAI,OAAO,EACvB06E,EAAYpS,EAAa,SAAY,WAAW,gBAAgBA,EAAa,KAAK,EAAI,GAC5F1B,EAAI,WAAWtwC,EAAOqkD,KAAyBnV,YAAU,KAAMsE,CAAU,YAAY,EACrFlD,EAAI,GAAGtwC,CAAK,EACZ,SAASqkD,GAAsB,CAC3B,MAAM3qJ,EAAIgwE,EAAI,IAAI,OAASwlE,YAAU,KAAM58H,CAAI,SAAS,EAClD1R,EAAI8oE,EAAI,IAAI,GAAG,EACrB4mE,EAAI,UAAU,CAAE,EAAA52I,EAAG,EAAAkH,CAAG,GACtB8oE,EAAI,OAAOs2B,EAAO,EAAI,EACtBt2B,EAAI,MAAOwlE,YAAU,KAAMx1I,CAAC,OAAQ,KAAOk1I,EAAa,EAAG0V,EAAQC,GAAQ7qJ,EAAGkH,CAAC,CAAC,CACnF,CACD,SAASguI,GAAc,CACnB,OAAOwV,EAAU,OAAS,GAAK,CAACA,EAAU,KAAMnpI,GAAMA,IAAM,UAAYA,IAAM,OAAO,CACxF,CACD,SAASqpI,EAAM5qJ,EAAGkH,EAAG,CACjB,MAAM4G,EAAOkiE,EAAI,KAAK,MAAM,EACtBgpE,KAAgB,WAAW,gBAAgB0R,EAAW58I,EAAM6uC,EAAG,KAAK,cAAe,WAAW,SAAS,KAAK,EAC5GmuG,EAAU96E,EAAI,MAAM,aAAewlE,YAAU,MAAO,EAC1DxlE,EAAI,OAAQwlE,YAAU,MAAOx1I,CAAC,MAAO,IAAM,CACvCgwE,EAAI,IAAIliE,KAAU0nI,YAAU,KAAM58H,CAAI,IAAI5Y,CAAC,GAAG,EAC9CgwE,EAAI,GAAGgpE,KAAexD,YAAU,YAAa,EACzCkV,EAAU,OAAS,GACnB16E,EAAI,MAAOwlE,YAAU,YAAa1nI,CAAI,kBAAoB0nI,YAAU,KAAM1nI,CAAI,SAAS,EAC3FkiE,EACK,MAAOwlE,YAAU,YAAasV,CAAO,IAAIh9I,CAAI,gBAAiB,IAAM,CACrEkiE,EAAI,OAAO9oE,KAAOsuI,YAAU,KAAMsV,CAAO,IAAIh9I,CAAI,GAAG,EACpD8oI,EAAI,MAAK,EACT5mE,EAAI,OAAOs2B,EAAO,EAAK,EAAE,MAAK,CAClD,CAAiB,EACI,QAASkvC,YAAU,KAAMsV,CAAO,IAAIh9I,CAAI,OAAO9N,CAAC,EAAE,CACvE,CAAa,CACJ,CACD,SAAS6qJ,EAAO7qJ,EAAGkH,EAAG,CAClB,MAAM6jJ,KAAUtU,SAAO,SAASzmE,EAAKy6E,UAAQ,OAAO,EAC9C1oC,EAAQ/xC,EAAI,KAAK,OAAO,EAC9BA,EAAI,MAAM+xC,CAAK,EAAE,OAAQyzB,YAAU,MAAOx1I,CAAC,MAAO,IAAMgwE,EAAI,OAAQwlE,YAAU,KAAMtuI,CAAC,MAAMlH,CAAC,KAAKkH,CAAC,MAAO,IAAM8oE,EAAI,MAAOwlE,YAAU,KAAMuV,CAAG,IAAInyI,CAAI,IAAI5Y,CAAC,MAAM4Y,CAAI,IAAI1R,CAAC,KAAM,IAAM,CACjL0vI,EAAI,MAAK,EACT5mE,EAAI,OAAOs2B,EAAO,EAAK,EAAE,MAAMyb,CAAK,CACvC,EAAC,CAAC,CACN,CACJ,CACL,EACe,oBAAGn0G,oBC7DlB,OAAO,eAAe,OAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4nI,YAAYn1F,QACZo2F,SAAS7zF,OACT6nG,UAAU7yF,QACVrb,QAAQ,CACV,QAAS,4BACT,OAAQ,CAAC,CAAE,WAAAu9F,CAAU,OAAWtE,YAAU,oBAAqBsE,CAAU,GAC7E,EACMlsI,MAAM,CACR,QAAS,QACT,MAAO,GACX,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,KAAAp3D,EAAM,MAAAm9H,EAAO,WAAA+D,EAAY,OAAArE,CAAQ,EAAGmB,EAC7Cb,GAAUN,GAAU,OAAOA,GAAU,SACrCmB,EAAI,aAAcpB,YAAU,SAAWiB,SAAO,SAASzmE,EAAKy6E,UAAQ,OAAO,CAAC,IAAI7xI,CAAI,KAAKkhI,CAAU,GAAG,EAGtGlD,EAAI,QAASpB,YAAU,KAAMC,CAAM,QAAQ78H,CAAI,EAAE,CAExD,CACL,EACe,eAAGhL,mBCtBlB,OAAO,eAAe,MAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4nI,YAAYn1F,QACZo2F,SAAS7zF,OACT,QAAUgV,QACVrb,QAAQ,CACV,QAAS,6CACT,OAAQ,CAAC,CAAE,WAAAu9F,CAAU,OAAWtE,YAAU,qBAAsBsE,CAAU,GAC9E,EACMlsI,MAAM,CACR,QAAS,OACT,WAAY,QACZ,MAAO,GACX,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,KAAAp3D,EAAM,MAAAm9H,EAAO,OAAAN,EAAQ,WAAAqE,EAAY,GAAAn9F,CAAI,EAAGi6F,EACrD,GAAI,CAACb,GAASN,EAAO,SAAW,EAC5B,MAAM,IAAI,MAAM,gCAAgC,EACpD,MAAMyU,EAAUzU,EAAO,QAAU94F,EAAG,KAAK,SACzC,IAAIouG,EACJ,MAAMC,EAAS,IAAOD,IAAwCA,KAAUtU,SAAO,SAASzmE,EAAK,QAAQ,OAAO,GAC5G,IAAIs2B,EACJ,GAAI4jD,GAAWnU,EACXzvC,EAAQt2B,EAAI,IAAI,OAAO,EACvB4mE,EAAI,WAAWtwC,EAAO2kD,CAAQ,MAE7B,CAED,GAAI,CAAC,MAAM,QAAQxV,CAAM,EACrB,MAAM,IAAI,MAAM,0BAA0B,EAC9C,MAAMyV,EAAUl7E,EAAI,MAAM,UAAW8pE,CAAU,EAC/CxzC,KAAYkvC,YAAU,IAAI,GAAGC,EAAO,IAAI,CAACiQ,EAAI1lJ,IAAMmrJ,EAAUD,EAASlrJ,CAAC,CAAC,CAAC,CAC5E,CACD42I,EAAI,KAAKtwC,CAAK,EACd,SAAS2kD,GAAW,CAChBj7E,EAAI,OAAOs2B,EAAO,EAAK,EACvBt2B,EAAI,MAAM,IAAK8pE,EAAazrI,GAAM2hE,EAAI,MAAOwlE,YAAU,KAAMwV,EAAQ,KAAIpyI,CAAI,KAAKvK,CAAC,IAAK,IAAM2hE,EAAI,OAAOs2B,EAAO,EAAI,EAAE,MAAK,CAAE,CAAC,CACjI,CACD,SAAS6kD,EAAUD,EAASlrJ,EAAG,CAC3B,MAAMg6I,EAAMvE,EAAOz1I,CAAC,EACpB,OAAO,OAAOg6I,GAAQ,UAAYA,IAAQ,QAChCxE,YAAU,KAAMwV,EAAM,CAAE,IAAIpyI,CAAI,KAAKsyI,CAAO,IAAIlrJ,CAAC,QACjDw1I,YAAU,KAAM58H,CAAI,QAAQohI,CAAG,EAC5C,CACJ,CACL,EACe,cAAGpsI,MC7ClB,OAAO,eAAew9I,aAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM,cAAgB/qG,YAChB,aAAeuC,WACf,cAAgBgV,YAChB,UAAYM,QACZ,kBAAoBuE,gBACpB,WAAaC,SACb,aAAeC,WACf,cAAgBC,YAChB,QAAUC,OACV,OAASC,MACT,WAAa,CAEf,cAAc,QACd,aAAa,QAEb,cAAc,QACd,UAAU,QAEV,kBAAkB,QAClB,WAAW,QAEX,aAAa,QACb,cAAc,QAEd,CAAE,QAAS,OAAQ,WAAY,CAAC,SAAU,OAAO,CAAG,EACpD,CAAE,QAAS,WAAY,WAAY,SAAW,EAC9C,QAAQ,QACR,OAAO,OACX,EACesuF,aAAA,QAAG,gDC9BlB,OAAO,eAAe,gBAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC7B,wCAAG,OAClC,MAAM5V,YAAYn1F,QACZo2F,SAAS7zF,OACTrG,QAAQ,CACV,QAAS,CAAC,CAAE,OAAQ,CAAE,IAAAz8C,CAAG,CAAI,OAAS01I,YAAU,+BAAgC11I,CAAG,SACnF,OAAQ,CAAC,CAAE,OAAQ,CAAE,IAAAA,CAAG,CAAI,OAAS01I,YAAU,aAAc11I,CAAG,GACpE,EACM8N,MAAM,CACR,QAAS,kBACT,KAAM,QACN,WAAY,CAAC,UAAW,QAAQ,EAChC,OAAQ,cACZ,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,aAAA0B,EAAc,GAAA37F,CAAI,EAAGi6F,EACvB,CAAE,MAAA7sG,CAAO,EAAGuuG,EAClB,GAAI,CAAC,MAAM,QAAQvuG,CAAK,EAAG,IACnB0sG,SAAO,iBAAiB95F,EAAI,sEAAsE,EACtG,MACH,CACD,wBAAwBi6F,EAAK7sG,CAAK,CACrC,CACL,EACA,SAAS,wBAAwB6sG,EAAK7sG,EAAO,CACzC,KAAM,CAAE,IAAAimC,EAAK,OAAAylE,EAAQ,KAAA78H,EAAM,QAAAk9H,EAAS,GAAAn5F,CAAI,EAAGi6F,EAC3Cj6F,EAAG,MAAQ,GACX,MAAM78C,EAAMkwE,EAAI,MAAM,SAAWwlE,YAAU,KAAM58H,CAAI,SAAS,EAC9D,GAAI68H,IAAW,GACXmB,EAAI,UAAU,CAAE,IAAK7sG,EAAM,MAAQ,GACnC6sG,EAAI,QAASpB,YAAU,KAAM11I,CAAG,OAAOiqC,EAAM,MAAM,EAAE,UAEhD,OAAO0rG,GAAU,UAAY,IAAKgB,SAAO,mBAAmB95F,EAAI84F,CAAM,EAAG,CAC9E,MAAMnvC,EAAQt2B,EAAI,IAAI,WAAawlE,YAAU,KAAM11I,CAAG,OAAOiqC,EAAM,MAAM,EAAE,EAC3EimC,EAAI,MAAOwlE,YAAU,KAAKlvC,CAAK,EAAG,IAAMs0C,EAAct0C,CAAK,CAAC,EAC5DswC,EAAI,GAAGtwC,CAAK,CACf,CACD,SAASs0C,EAAct0C,EAAO,CAC1Bt2B,EAAI,SAAS,IAAKjmC,EAAM,OAAQjqC,EAAME,GAAM,CACxC42I,EAAI,UAAU,CAAE,QAAAd,EAAS,SAAU91I,EAAG,aAAcy2I,SAAO,KAAK,GAAK,EAAEnwC,CAAK,EACvE3pD,EAAG,WACJqzB,EAAI,MAAOwlE,YAAU,KAAKlvC,CAAK,EAAG,IAAMt2B,EAAI,MAAK,CAAE,CACnE,CAAS,CACJ,CACL,CAC+B,wCAAG,wBACnB,wBAAGpiE,kCC9ClB,OAAO,eAAe,MAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EACvC,oBAAG,OACxB,MAAM4nI,YAAYn1F,QACZo2F,SAAS7zF,OACT4tF,SAAS54E,OACThqD,MAAM,CACR,QAAS,QACT,KAAM,QACN,WAAY,CAAC,SAAU,QAAS,SAAS,EACzC,OAAQ,cACR,KAAKgpI,EAAK,CACN,KAAM,CAAE,OAAAnB,EAAQ,GAAA94F,CAAI,EAAGi6F,EACvB,GAAI,MAAM,QAAQnB,CAAM,EACpB,OAAO,cAAcmB,EAAK,kBAAmBnB,CAAM,EACvD94F,EAAG,MAAQ,OACH85F,SAAO,mBAAmB95F,EAAI84F,CAAM,GAE5CmB,EAAI,MAAOpG,SAAO,eAAeoG,CAAG,CAAC,CACxC,CACL,EACA,SAAS,cAAcA,EAAKyU,EAAYC,EAAS1U,EAAI,OAAQ,CACzD,KAAM,CAAE,IAAA5mE,EAAK,aAAAsoE,EAAc,KAAA1/H,EAAM,QAAAk9H,EAAS,GAAAn5F,CAAI,EAAGi6F,EACjD2U,EAAiBjT,CAAY,EACzB37F,EAAG,KAAK,aAAe2uG,EAAO,QAAU3uG,EAAG,QAAU,KACrDA,EAAG,MAAQ85F,SAAO,eAAe,MAAMzmE,EAAKs7E,EAAO,OAAQ3uG,EAAG,KAAK,GAEvE,MAAM2pD,EAAQt2B,EAAI,KAAK,OAAO,EACxBlwE,EAAMkwE,EAAI,MAAM,SAAWwlE,YAAU,KAAM58H,CAAI,SAAS,EAC9D0yI,EAAO,QAAQ,CAACtR,EAAKh6I,IAAM,IACfy2I,SAAO,mBAAmB95F,EAAIq9F,CAAG,IAEzChqE,EAAI,MAAOwlE,YAAU,KAAM11I,CAAG,MAAME,CAAC,GAAI,IAAM42I,EAAI,UAAU,CACzD,QAAAd,EACA,WAAY91I,EACZ,SAAUA,CACtB,EAAWsmG,CAAK,CAAC,EACTswC,EAAI,GAAGtwC,CAAK,EACpB,CAAK,EACD,SAASilD,EAAiBvR,EAAK,CAC3B,KAAM,CAAE,KAAAp6F,EAAM,cAAAy4F,CAAe,EAAG17F,EAC1BjuC,EAAI48I,EAAO,OACXE,EAAY98I,IAAMsrI,EAAI,WAAatrI,IAAMsrI,EAAI,UAAYA,EAAIqR,CAAU,IAAM,IACnF,GAAIzrG,EAAK,cAAgB,CAAC4rG,EAAW,CACjC,MAAM3gJ,EAAM,IAAIirI,CAAO,QAAQpnI,CAAC,oCAAoC28I,CAAU,4CAA4ChT,CAAa,OACnI5B,SAAO,iBAAiB95F,EAAI9xC,EAAK+0C,EAAK,YAAY,CACzD,CACJ,CACL,CACqB,oBAAG,cACT,cAAGhyC,MCjDlB,OAAO,eAAe,YAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM69I,UAAUprG,MACVzyC,MAAM,CACR,QAAS,cACT,KAAM,QACN,WAAY,CAAC,OAAO,EACpB,OAAQ,cACR,KAAOgpI,MAAY6U,UAAQ,eAAe7U,EAAK,OAAO,CAC1D,EACe,oBAAGhpI,uBCTlB,OAAO,eAAe,UAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4nI,YAAYn1F,QACZo2F,SAAS7zF,OACT4tF,SAAS54E,OACT8zF,oBAAoBxzF,gBACpB3b,QAAQ,CACV,QAAS,CAAC,CAAE,OAAQ,CAAE,IAAAz8C,CAAG,CAAI,OAAS01I,YAAU,+BAAgC11I,CAAG,SACnF,OAAQ,CAAC,CAAE,OAAQ,CAAE,IAAAA,CAAG,CAAI,OAAS01I,YAAU,aAAc11I,CAAG,GACpE,EACM8N,MAAM,CACR,QAAS,QACT,KAAM,QACN,WAAY,CAAC,SAAU,SAAS,EAChC,OAAQ,cACZ,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,OAAAnB,EAAQ,aAAA6C,EAAc,GAAA37F,CAAE,EAAKi6F,EAC/B,CAAE,YAAA+U,CAAa,EAAGrT,EACxB37F,EAAG,MAAQ,OACH85F,SAAO,mBAAmB95F,EAAI84F,CAAM,IAExCkW,KACID,oBAAkB,yBAAyB9U,EAAK+U,CAAW,EAE/D/U,EAAI,MAAOpG,SAAO,eAAeoG,CAAG,CAAC,EAC5C,CACL,EACe,kBAAGhpI,sBC3BlB,OAAO,eAAe,SAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4nI,YAAYn1F,QACZo2F,SAAS7zF,OACTrG,QAAQ,CACV,QAAS,CAAC,CAAE,OAAQ,CAAE,IAAA7yC,EAAK,IAAAvD,CAAK,KAAOA,IAAQ,UACrCqvI,YAAU,6BAA8B9rI,CAAG,oBAC3C8rI,YAAU,6BAA8B9rI,CAAG,qBAAqBvD,CAAG,iBAC7E,OAAQ,CAAC,CAAE,OAAQ,CAAE,IAAAuD,EAAK,IAAAvD,EAAO,IAAKA,IAAQ,UAAgBqvI,YAAU,mBAAoB9rI,CAAG,OAAU8rI,YAAU,mBAAoB9rI,CAAG,kBAAkBvD,CAAG,GACnK,EACMyH,MAAM,CACR,QAAS,WACT,KAAM,QACN,WAAY,CAAC,SAAU,SAAS,EAChC,OAAQ,cACR,YAAa,GACjB,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,OAAAylE,EAAQ,aAAA6C,EAAc,KAAA1/H,EAAM,GAAA+jC,CAAI,EAAGi6F,EAChD,IAAIltI,EACAvD,EACJ,KAAM,CAAE,YAAAylJ,EAAa,YAAAC,CAAa,EAAGvT,EACjC37F,EAAG,KAAK,MACRjzC,EAAMkiJ,IAAgB,OAAY,EAAIA,EACtCzlJ,EAAM0lJ,GAGNniJ,EAAM,EAEV,MAAM5J,EAAMkwE,EAAI,MAAM,SAAWwlE,YAAU,KAAM58H,CAAI,SAAS,EAE9D,GADAg+H,EAAI,UAAU,CAAE,IAAAltI,EAAK,IAAAvD,CAAK,GACtBA,IAAQ,QAAauD,IAAQ,EAAG,IAC5B+sI,SAAO,iBAAiB95F,EAAI,sEAAsE,EACtG,MACH,CACD,GAAIx2C,IAAQ,QAAauD,EAAMvD,EAAK,IAC5BswI,SAAO,iBAAiB95F,EAAI,iDAAiD,EACjFi6F,EAAI,KAAI,EACR,MACH,CACD,MAAQH,SAAO,mBAAmB95F,EAAI84F,CAAM,EAAG,CAC3C,IAAIrC,KAAWoC,YAAU,KAAM11I,CAAG,OAAO4J,CAAG,GACxCvD,IAAQ,SACRitI,KAAWoC,YAAU,KAAMpC,CAAI,OAAOtzI,CAAG,OAAOqG,CAAG,IACvDywI,EAAI,KAAKxD,CAAI,EACb,MACH,CACDz2F,EAAG,MAAQ,GACX,MAAM2pD,EAAQt2B,EAAI,KAAK,OAAO,EAC1B7pE,IAAQ,QAAauD,IAAQ,EAC7BkxI,EAAct0C,EAAO,IAAMt2B,EAAI,GAAGs2B,EAAO,IAAMt2B,EAAI,MAAO,EAAC,EAEtDtmE,IAAQ,GACbsmE,EAAI,IAAIs2B,EAAO,EAAI,EACfngG,IAAQ,QACR6pE,EAAI,MAAOwlE,YAAU,KAAM58H,CAAI,cAAekzI,CAAsB,IAGxE97E,EAAI,IAAIs2B,EAAO,EAAK,EACpBwlD,KAEJlV,EAAI,OAAOtwC,EAAO,IAAMswC,EAAI,MAAO,GACnC,SAASkV,GAAyB,CAC9B,MAAMhR,EAAW9qE,EAAI,KAAK,QAAQ,EAC5BtzB,EAAQszB,EAAI,IAAI,QAAS,CAAC,EAChC4qE,EAAcE,EAAU,IAAM9qE,EAAI,GAAG8qE,EAAU,IAAMiR,EAAYrvG,CAAK,CAAC,CAAC,CAC3E,CACD,SAASk+F,EAAcoR,EAAQ30F,EAAO,CAClC2Y,EAAI,SAAS,IAAK,EAAGlwE,EAAME,GAAM,CAC7B42I,EAAI,UAAU,CACV,QAAS,WACT,SAAU52I,EACV,aAAcy2I,SAAO,KAAK,IAC1B,cAAe,EAClB,EAAEuV,CAAM,EACT30F,GAChB,CAAa,CACJ,CACD,SAAS00F,EAAYrvG,EAAO,CACxBszB,EAAI,QAASwlE,YAAU,KAAM94F,CAAK,IAAI,EAClCv2C,IAAQ,OACR6pE,EAAI,MAAOwlE,YAAU,KAAM94F,CAAK,OAAOhzC,CAAG,GAAI,IAAMsmE,EAAI,OAAOs2B,EAAO,EAAI,EAAE,MAAK,CAAE,GAGnFt2B,EAAI,MAAOwlE,YAAU,KAAM94F,CAAK,MAAMv2C,CAAG,GAAI,IAAM6pE,EAAI,OAAOs2B,EAAO,EAAK,EAAE,MAAK,CAAE,EAC/E58F,IAAQ,EACRsmE,EAAI,OAAOs2B,EAAO,EAAI,EAEtBt2B,EAAI,MAAOwlE,YAAU,KAAM94F,CAAK,OAAOhzC,CAAG,GAAI,IAAMsmE,EAAI,OAAOs2B,EAAO,EAAI,CAAC,EAEtF,CACJ,CACL,EACe,iBAAG14F,uCC5FlB,OAAO,eAAcnL,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,mBAA6BA,EAA+B,qBAAAA,EAAA,MAAgB,OAC5E,MAAM+yI,EAAYn1F,QACZo2F,EAAS7zF,OACT4tF,EAAS54E,OACfn1D,EAAgB,OACZ,QAAS,CAAC,CAAE,OAAQ,CAAE,SAAAw0B,EAAU,UAAAg1H,EAAW,KAAAp8I,CAAI,KAAS,CACpD,MAAMq8I,EAAeD,IAAc,EAAI,WAAa,aACpD,SAAWzW,EAAU,iBAAkB0W,CAAY,IAAIr8I,CAAI,kBAAkBonB,CAAQ,aACxF,EACD,OAAQ,CAAC,CAAE,OAAQ,CAAE,SAAAA,EAAU,UAAAg1H,EAAW,KAAAp8I,EAAM,gBAAAo6I,CAAiB,QAAWzU,EAAU,gBAAiBv+G,CAAQ;AAAA,uBAC5FgzH,CAAe;AAAA,iBACrBgC,CAAS;AAAA,YACdp8I,CAAI,GAChB,EACA,MAAMjC,EAAM,CACR,QAAS,eACT,KAAM,SACN,WAAY,SACZ,MAAOnL,EAAQ,MACf,KAAKm0I,EAAK,CACN,KAAM,CAACuV,EAAUC,CAAO,EAAIC,EAAkBzV,CAAG,EACjD0V,EAAqB1V,EAAKuV,CAAQ,EAClCI,EAAmB3V,EAAKwV,CAAO,CAClC,CACL,EACA,SAASC,EAAkB,CAAE,OAAA5W,GAAU,CACnC,MAAM+W,EAAe,GACfC,EAAa,GACnB,UAAWhgJ,KAAOgpI,EAAQ,CACtB,GAAIhpI,IAAQ,YACR,SACJ,MAAMoD,EAAO,MAAM,QAAQ4lI,EAAOhpI,CAAG,CAAC,EAAI+/I,EAAeC,EACzD58I,EAAKpD,CAAG,EAAIgpI,EAAOhpI,CAAG,CACzB,CACD,MAAO,CAAC+/I,EAAcC,CAAU,CACnC,CACD,SAASH,EAAqB1V,EAAK4V,EAAe5V,EAAI,OAAQ,CAC1D,KAAM,CAAE,IAAA5mE,EAAK,KAAAp3D,EAAM,GAAA+jC,CAAE,EAAKi6F,EAC1B,GAAI,OAAO,KAAK4V,CAAY,EAAE,SAAW,EACrC,OACJ,MAAMrS,EAAUnqE,EAAI,IAAI,SAAS,EACjC,UAAW9uD,KAAQsrI,EAAc,CAC7B,MAAM38I,EAAO28I,EAAatrI,CAAI,EAC9B,GAAIrR,EAAK,SAAW,EAChB,SACJ,MAAM68I,KAAkBlc,EAAO,gBAAgBxgE,EAAKp3D,EAAMsI,EAAMy7B,EAAG,KAAK,aAAa,EACrFi6F,EAAI,UAAU,CACV,SAAU11H,EACV,UAAWrR,EAAK,OAChB,KAAMA,EAAK,KAAK,IAAI,CAChC,CAAS,EACG8sC,EAAG,UACHqzB,EAAI,GAAG08E,EAAa,IAAM,CACtB,UAAWC,KAAW98I,KACd2gI,EAAO,wBAAwBoG,EAAK+V,CAAO,CAEnE,CAAa,GAGD38E,EAAI,MAAOwlE,EAAU,KAAMkX,CAAW,WAAYlc,EAAO,kBAAkBoG,EAAK/mI,EAAMsqI,CAAO,CAAC,GAAG,KAC7F3J,EAAO,mBAAmBoG,EAAKuD,CAAO,EAC1CnqE,EAAI,KAAI,EAEf,CACJ,CACDvtE,EAAA,qBAA+B6pJ,EAC/B,SAASC,EAAmB3V,EAAK6V,EAAa7V,EAAI,OAAQ,CACtD,KAAM,CAAE,IAAA5mE,EAAK,KAAAp3D,EAAM,QAAAk9H,EAAS,GAAAn5F,CAAE,EAAKi6F,EAC7BtwC,EAAQt2B,EAAI,KAAK,OAAO,EAC9B,UAAW9uD,KAAQurI,KACPhW,EAAO,mBAAmB95F,EAAI8vG,EAAWvrI,CAAI,CAAC,IAEtD8uD,EAAI,MAAOwgE,EAAO,gBAAgBxgE,EAAKp3D,EAAMsI,EAAMy7B,EAAG,KAAK,aAAa,EAAG,IAAM,CAC7E,MAAMq+F,EAASpE,EAAI,UAAU,CAAE,QAAAd,EAAS,WAAY50H,GAAQolF,CAAK,EACjEswC,EAAI,oBAAoBoE,EAAQ10C,CAAK,CACxC,EAAE,IAAMt2B,EAAI,IAAIs2B,EAAO,EAAI,CACpC,EACQswC,EAAI,GAAGtwC,CAAK,EAEnB,CACD7jG,EAAA,mBAA6B8pJ,EAC7B9pJ,EAAA,QAAkBmL,uCClFlB,OAAO,eAAe,cAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4nI,YAAYn1F,QACZo2F,SAAS7zF,OACTrG,QAAQ,CACV,QAAS,8BACT,OAAQ,CAAC,CAAE,OAAAhX,CAAQ,OAASiwG,YAAU,oBAAqBjwG,EAAO,YAAY,GAClF,EACM33B,MAAM,CACR,QAAS,gBACT,KAAM,SACN,WAAY,CAAC,SAAU,SAAS,EACpC,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,OAAAylE,EAAQ,KAAA78H,EAAM,GAAA+jC,CAAE,EAAKi6F,EAClC,MAAQH,SAAO,mBAAmB95F,EAAI84F,CAAM,EACxC,OACJ,MAAMnvC,EAAQt2B,EAAI,KAAK,OAAO,EAC9BA,EAAI,MAAM,MAAOp3D,EAAOnM,GAAQ,CAC5BmqI,EAAI,UAAU,CAAE,aAAcnqI,CAAK,GACnCmqI,EAAI,UAAU,CACV,QAAS,gBACT,KAAMnqI,EACN,UAAW,CAAC,QAAQ,EACpB,aAAcA,EACd,cAAe,EAClB,EAAE65F,CAAK,EACRt2B,EAAI,MAAOwlE,YAAU,KAAKlvC,CAAK,EAAG,IAAM,CACpCswC,EAAI,MAAM,EAAI,EACTj6F,EAAG,WACJqzB,EAAI,MAAK,CAC7B,CAAa,CACb,CAAS,EACD4mE,EAAI,GAAGtwC,CAAK,CACf,CACL,EACe,sBAAG14F,kCCnClB,OAAO,eAAe,qBAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4iI,SAASnwF,OACTm1F,YAAY5yF,QACZ,QAAUgV,QACV6+E,SAASv+E,OACT3b,QAAQ,CACV,QAAS,sCACT,OAAQ,CAAC,CAAE,OAAAhX,CAAQ,OAASiwG,YAAU,0BAA2BjwG,EAAO,kBAAkB,GAC9F,EACM33B,MAAM,CACR,QAAS,uBACT,KAAM,CAAC,QAAQ,EACf,WAAY,CAAC,UAAW,QAAQ,EAChC,eAAgB,GAChB,YAAa,GACjB,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,OAAAylE,EAAQ,aAAA6C,EAAc,KAAA1/H,EAAM,UAAA2+H,EAAW,GAAA56F,CAAI,EAAGi6F,EAE3D,GAAI,CAACW,EACD,MAAM,IAAI,MAAM,0BAA0B,EAC9C,KAAM,CAAE,UAAAP,EAAW,KAAAp3F,CAAM,EAAGjD,EAE5B,GADAA,EAAG,MAAQ,GACPiD,EAAK,mBAAqB,UAAa62F,SAAO,mBAAmB95F,EAAI84F,CAAM,EAC3E,OACJ,MAAMpgI,KAAYm7H,SAAO,qBAAqB8H,EAAa,UAAU,EAC/DsU,KAAepc,SAAO,qBAAqB8H,EAAa,iBAAiB,EAC/EuU,IACAjW,EAAI,MAAOpB,YAAU,KAAM+B,CAAS,QAAQ,QAAQ,QAAQ,MAAM,EAAE,EACpE,SAASsV,GAA4B,CACjC78E,EAAI,MAAM,MAAOp3D,EAAOnM,GAAQ,CACxB,CAAC4I,EAAM,QAAU,CAACu3I,EAAS,OAC3BE,EAAuBrgJ,CAAG,EAE1BujE,EAAI,GAAG+8E,EAAatgJ,CAAG,EAAG,IAAMqgJ,EAAuBrgJ,CAAG,CAAC,CAC/E,CAAa,CACJ,CACD,SAASsgJ,EAAatgJ,EAAK,CACvB,IAAIugJ,EACJ,GAAI33I,EAAM,OAAS,EAAG,CAElB,MAAM43I,KAAkBxW,SAAO,gBAAgB95F,EAAI27F,EAAa,WAAY,YAAY,EACxF0U,KAAkBxc,SAAO,eAAexgE,EAAKi9E,EAAaxgJ,CAAG,CAChE,MACQ4I,EAAM,OACX23I,KAAkBxX,YAAU,IAAI,GAAGngI,EAAM,IAAKY,MAAUu/H,YAAU,KAAM/oI,CAAG,QAAQwJ,CAAC,EAAE,CAAC,EAGvF+2I,EAAcxX,YAAU,IAE5B,OAAIoX,EAAS,SACTI,KAAkBxX,YAAU,IAAIwX,EAAa,GAAGJ,EAAS,IAAK32I,MAAUu/H,YAAU,QAAUhF,SAAO,YAAYoG,EAAK3gI,CAAC,CAAC,SAASxJ,CAAG,GAAG,CAAC,MAE/H+oI,YAAU,KAAKwX,CAAW,CACxC,CACD,SAASE,EAAiBzgJ,EAAK,CAC3BujE,EAAI,QAASwlE,YAAU,YAAa58H,CAAI,IAAInM,CAAG,GAAG,CACrD,CACD,SAASqgJ,EAAuBrgJ,EAAK,CACjC,GAAImzC,EAAK,mBAAqB,OAAUA,EAAK,kBAAoB61F,IAAW,GAAQ,CAChFyX,EAAiBzgJ,CAAG,EACpB,MACH,CACD,GAAIgpI,IAAW,GAAO,CAClBmB,EAAI,UAAU,CAAE,mBAAoBnqI,CAAK,GACzCmqI,EAAI,MAAK,EACJI,GACDhnE,EAAI,MAAK,EACb,MACH,CACD,GAAI,OAAOylE,GAAU,UAAY,IAAKgB,SAAO,mBAAmB95F,EAAI84F,CAAM,EAAG,CACzE,MAAMnvC,EAAQt2B,EAAI,KAAK,OAAO,EAC1BpwB,EAAK,mBAAqB,WAC1ButG,EAAsB1gJ,EAAK65F,EAAO,EAAK,EACvCt2B,EAAI,MAAOwlE,YAAU,KAAKlvC,CAAK,EAAG,IAAM,CACpCswC,EAAI,MAAK,EACTsW,EAAiBzgJ,CAAG,CAC5C,CAAqB,IAGD0gJ,EAAsB1gJ,EAAK65F,CAAK,EAC3B0wC,GACDhnE,EAAI,MAAOwlE,YAAU,KAAKlvC,CAAK,EAAG,IAAMt2B,EAAI,MAAK,CAAE,EAE9D,CACJ,CACD,SAASm9E,EAAsB1gJ,EAAK65F,EAAOh8F,EAAQ,CAC/C,MAAM0xI,EAAY,CACd,QAAS,uBACT,SAAUvvI,EACV,aAAcgqI,SAAO,KAAK,GAC1C,EACgBnsI,IAAW,IACX,OAAO,OAAO0xI,EAAW,CACrB,cAAe,GACf,aAAc,GACd,UAAW,EAC/B,CAAiB,EAELpF,EAAI,UAAUoF,EAAW11C,CAAK,CACjC,CACJ,CACL,EACe,6BAAG14F,0BCvGlB,OAAO,eAAeywB,aAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM,WAAagiB,WACbmwF,SAAS5tF,OACT6zF,SAAS7+E,OACTw1F,yBAAyBl1F,qBACzBtqD,MAAM,CACR,QAAS,aACT,KAAM,SACN,WAAY,SACZ,KAAKgpI,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,OAAAylE,EAAQ,aAAA6C,EAAc,KAAA1/H,EAAM,GAAA+jC,CAAI,EAAGi6F,EAC5Cj6F,EAAG,KAAK,mBAAqB,OAAS27F,EAAa,uBAAyB,QAC5E8U,yBAAuB,QAAQ,KAAK,IAAI,WAAW,WAAWzwG,EAAIywG,yBAAuB,QAAS,sBAAsB,CAAC,EAE7H,MAAMC,KAAe7c,SAAO,qBAAqBiF,CAAM,EACvD,UAAWv0H,KAAQmsI,EACf1wG,EAAG,kBAAkB,IAAIz7B,CAAI,EAE7By7B,EAAG,KAAK,aAAe0wG,EAAS,QAAU1wG,EAAG,QAAU,KACvDA,EAAG,MAAQ85F,SAAO,eAAe,MAAMzmE,KAASymE,SAAO,QAAQ4W,CAAQ,EAAG1wG,EAAG,KAAK,GAEtF,MAAMte,EAAagvH,EAAS,OAAQp3I,GAAM,IAAKwgI,SAAO,mBAAmB95F,EAAI84F,EAAOx/H,CAAC,CAAC,CAAC,EACvF,GAAIooB,EAAW,SAAW,EACtB,OACJ,MAAMioE,EAAQt2B,EAAI,KAAK,OAAO,EAC9B,UAAW9uD,KAAQmd,EACXvd,EAAWI,CAAI,EACfosI,EAAoBpsI,CAAI,GAGxB8uD,EAAI,MAAOwgE,SAAO,gBAAgBxgE,EAAKp3D,EAAMsI,EAAMy7B,EAAG,KAAK,aAAa,CAAC,EACzE2wG,EAAoBpsI,CAAI,EACnBy7B,EAAG,WACJqzB,EAAI,KAAM,EAAC,IAAIs2B,EAAO,EAAI,EAC9Bt2B,EAAI,MAAK,GAEb4mE,EAAI,GAAG,kBAAkB,IAAI11H,CAAI,EACjC01H,EAAI,GAAGtwC,CAAK,EAEhB,SAASxlF,EAAWI,EAAM,CACtB,OAAOy7B,EAAG,KAAK,aAAe,CAACA,EAAG,eAAiB84F,EAAOv0H,CAAI,EAAE,UAAY,MAC/E,CACD,SAASosI,EAAoBpsI,EAAM,CAC/B01H,EAAI,UAAU,CACV,QAAS,aACT,WAAY11H,EACZ,SAAUA,CACb,EAAEolF,CAAK,CACX,CACJ,CACL,EACejoE,aAAA,QAAGzwB,+BCnDlB,OAAO,eAAe,kBAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4iI,SAASnwF,OACTm1F,YAAY5yF,QACZ6zF,SAAS7+E,OACT,OAASA,OACThqD,MAAM,CACR,QAAS,oBACT,KAAM,SACN,WAAY,SACZ,KAAKgpI,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,OAAAylE,EAAQ,KAAA78H,EAAM,aAAA0/H,EAAc,GAAA37F,CAAI,EAAGi6F,EAC1C,CAAE,KAAAh3F,CAAM,EAAGjD,EACX4wG,KAAe/c,SAAO,qBAAqBiF,CAAM,EACjD+X,EAAsBD,EAAS,OAAQt3I,MAAUwgI,SAAO,mBAAmB95F,EAAI84F,EAAOx/H,CAAC,CAAC,CAAC,EAC/F,GAAIs3I,EAAS,SAAW,GACnBC,EAAoB,SAAWD,EAAS,SACpC,CAAC5wG,EAAG,KAAK,aAAeA,EAAG,QAAU,IAC1C,OAEJ,MAAM8wG,EAAkB7tG,EAAK,cAAgB,CAACA,EAAK,yBAA2B04F,EAAa,WACrFhyC,EAAQt2B,EAAI,KAAK,OAAO,EAC1BrzB,EAAG,QAAU,IAAQ,EAAEA,EAAG,iBAAiB64F,YAAU,QACrD74F,EAAG,SAAY,OAAO,sBAAsBqzB,EAAKrzB,EAAG,KAAK,GAE7D,KAAM,CAAE,MAAAtnC,CAAO,EAAGsnC,EAClB+wG,IACA,SAASA,GAA4B,CACjC,UAAWC,KAAOJ,EACVE,GACAG,EAAwBD,CAAG,EAC3BhxG,EAAG,UACHkxG,EAAmBF,CAAG,GAGtB39E,EAAI,IAAIs2B,EAAO,EAAI,EACnBunD,EAAmBF,CAAG,EACtB39E,EAAI,GAAGs2B,CAAK,EAGvB,CACD,SAASsnD,EAAwBD,EAAK,CAClC,UAAWzsI,KAAQusI,EACX,IAAI,OAAOE,CAAG,EAAE,KAAKzsI,CAAI,MACrBu1H,SAAO,iBAAiB95F,EAAI,YAAYz7B,CAAI,oBAAoBysI,CAAG,gCAAgC,CAGlH,CACD,SAASE,EAAmBF,EAAK,CAC7B39E,EAAI,MAAM,MAAOp3D,EAAOnM,GAAQ,CAC5BujE,EAAI,MAAOwlE,YAAU,QAAUhF,SAAO,YAAYoG,EAAK+W,CAAG,CAAC,SAASlhJ,CAAG,IAAK,IAAM,CAC9E,MAAMqhJ,EAAcN,EAAoB,SAASG,CAAG,EAC/CG,GACDlX,EAAI,UAAU,CACV,QAAS,oBACT,WAAY+W,EACZ,SAAUlhJ,EACV,aAAc,OAAO,KAAK,GAC7B,EAAE65F,CAAK,EAER3pD,EAAG,KAAK,aAAetnC,IAAU,GACjC26D,EAAI,UAAWwlE,YAAU,KAAMngI,CAAK,IAAI5I,CAAG,IAAK,EAAI,EAE/C,CAACqhJ,GAAe,CAACnxG,EAAG,WAGzBqzB,EAAI,MAAOwlE,YAAU,KAAKlvC,CAAK,EAAG,IAAMt2B,EAAI,MAAK,CAAE,CAE3E,CAAiB,CACjB,CAAa,CACJ,CACJ,CACL,EACe,0BAAGpiE,iBCxElB,OAAO,eAAe,IAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM6oI,SAASp2F,OACTzyC,MAAM,CACR,QAAS,MACT,WAAY,CAAC,SAAU,SAAS,EAChC,YAAa,GACb,KAAKgpI,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,OAAAylE,EAAQ,GAAA94F,CAAE,EAAKi6F,EAC5B,MAAQH,SAAO,mBAAmB95F,EAAI84F,CAAM,EAAG,CAC3CmB,EAAI,KAAI,EACR,MACH,CACD,MAAMtwC,EAAQt2B,EAAI,KAAK,OAAO,EAC9B4mE,EAAI,UAAU,CACV,QAAS,MACT,cAAe,GACf,aAAc,GACd,UAAW,EACd,EAAEtwC,CAAK,EACRswC,EAAI,WAAWtwC,EAAO,IAAMswC,EAAI,MAAK,EAAI,IAAMA,EAAI,MAAK,CAAE,CAC7D,EACD,MAAO,CAAE,QAAS,mBAAqB,CAC3C,EACe,YAAGhpI,mBCvBlB,OAAO,eAAe,MAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM,OAASyyC,OACTzyC,MAAM,CACR,QAAS,QACT,WAAY,QACZ,YAAa,GACb,KAAM,OAAO,cACb,MAAO,CAAE,QAAS,8BAAgC,CACtD,EACe,cAAGA,mBCTlB,OAAO,eAAe,MAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4nI,YAAYn1F,QACZo2F,SAAS7zF,OACTrG,QAAQ,CACV,QAAS,yCACT,OAAQ,CAAC,CAAE,OAAAhX,CAAQ,OAASiwG,YAAU,sBAAuBjwG,EAAO,OAAO,GAC/E,EACM33B,MAAM,CACR,QAAS,QACT,WAAY,QACZ,YAAa,GACjB,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,OAAAylE,EAAQ,aAAA6C,EAAc,GAAA37F,CAAE,EAAKi6F,EAE1C,GAAI,CAAC,MAAM,QAAQnB,CAAM,EACrB,MAAM,IAAI,MAAM,0BAA0B,EAC9C,GAAI94F,EAAG,KAAK,eAAiB27F,EAAa,cACtC,OACJ,MAAMgT,EAAS7V,EACTnvC,EAAQt2B,EAAI,IAAI,QAAS,EAAK,EAC9B+9E,EAAU/9E,EAAI,IAAI,UAAW,IAAI,EACjC8qE,EAAW9qE,EAAI,KAAK,QAAQ,EAClC4mE,EAAI,UAAU,CAAE,QAAAmX,CAAO,CAAE,EAEzB/9E,EAAI,MAAMg+E,CAAa,EACvBpX,EAAI,OAAOtwC,EAAO,IAAMswC,EAAI,QAAS,IAAMA,EAAI,MAAM,EAAI,CAAC,EAC1D,SAASoX,GAAgB,CACrB1C,EAAO,QAAQ,CAACtR,EAAKh6I,IAAM,CACvB,IAAIg7I,KACIvE,SAAO,mBAAmB95F,EAAIq9F,CAAG,EACrChqE,EAAI,IAAI8qE,EAAU,EAAI,EAGtBE,EAASpE,EAAI,UAAU,CACnB,QAAS,QACT,WAAY52I,EACZ,cAAe,EAClB,EAAE86I,CAAQ,EAEX96I,EAAI,GACJgwE,EACK,MAAOwlE,YAAU,KAAMsF,CAAQ,OAAOx0C,CAAK,EAAE,EAC7C,OAAOA,EAAO,EAAK,EACnB,OAAOynD,KAAavY,YAAU,MAAOuY,CAAO,KAAK/tJ,CAAC,GAAG,EACrD,OAETgwE,EAAI,GAAG8qE,EAAU,IAAM,CACnB9qE,EAAI,OAAOs2B,EAAO,EAAI,EACtBt2B,EAAI,OAAO+9E,EAAS/tJ,CAAC,EACjBg7I,GACApE,EAAI,eAAeoE,EAAQxF,YAAU,IAAI,CACjE,CAAiB,CACjB,CAAa,CACJ,CACJ,CACL,EACe,cAAG5nI,mBCzDlB,OAAO,eAAe,MAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM6oI,SAASp2F,OACTzyC,MAAM,CACR,QAAS,QACT,WAAY,QACZ,KAAKgpI,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,OAAAylE,EAAQ,GAAA94F,CAAE,EAAKi6F,EAE5B,GAAI,CAAC,MAAM,QAAQnB,CAAM,EACrB,MAAM,IAAI,MAAM,0BAA0B,EAC9C,MAAMnvC,EAAQt2B,EAAI,KAAK,OAAO,EAC9BylE,EAAO,QAAQ,CAACuE,EAAKh6I,IAAM,CACvB,MAAQy2I,SAAO,mBAAmB95F,EAAIq9F,CAAG,EACrC,OACJ,MAAMgB,EAASpE,EAAI,UAAU,CAAE,QAAS,QAAS,WAAY52I,GAAKsmG,CAAK,EACvEswC,EAAI,GAAGtwC,CAAK,EACZswC,EAAI,eAAeoE,CAAM,CACrC,CAAS,CACJ,CACL,EACe,cAAGptI,iBCpBlB,OAAO,eAAe,IAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM4nI,YAAYn1F,QACZo2F,SAAS7zF,OACTrG,QAAQ,CACV,QAAS,CAAC,CAAE,OAAAhX,CAAQ,OAASiwG,YAAU,mBAAoBjwG,EAAO,QAAQ,WAC1E,OAAQ,CAAC,CAAE,OAAAA,CAAQ,OAASiwG,YAAU,sBAAuBjwG,EAAO,QAAQ,GAChF,EACM33B,MAAM,CACR,QAAS,KACT,WAAY,CAAC,SAAU,SAAS,EAChC,YAAa,GACjB,MAAI2uC,QACA,KAAKq6F,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,aAAAsoE,EAAc,GAAA37F,CAAE,EAAKi6F,EAC9B0B,EAAa,OAAS,QAAaA,EAAa,OAAS,WACrD7B,SAAO,iBAAiB95F,EAAI,2CAA2C,EAE/E,MAAMsxG,EAAU,UAAUtxG,EAAI,MAAM,EAC9BuxG,EAAU,UAAUvxG,EAAI,MAAM,EACpC,GAAI,CAACsxG,GAAW,CAACC,EACb,OACJ,MAAM5nD,EAAQt2B,EAAI,IAAI,QAAS,EAAI,EAC7B8qE,EAAW9qE,EAAI,KAAK,QAAQ,EAGlC,GAFAm+E,IACAvX,EAAI,MAAK,EACLqX,GAAWC,EAAS,CACpB,MAAME,EAAWp+E,EAAI,IAAI,UAAU,EACnC4mE,EAAI,UAAU,CAAE,SAAAwX,CAAQ,CAAE,EAC1Bp+E,EAAI,GAAG8qE,EAAUuT,EAAe,OAAQD,CAAQ,EAAGC,EAAe,OAAQD,CAAQ,CAAC,CACtF,MACQH,EACLj+E,EAAI,GAAG8qE,EAAUuT,EAAe,MAAM,CAAC,EAGvCr+E,EAAI,MAAOwlE,YAAU,KAAKsF,CAAQ,EAAGuT,EAAe,MAAM,CAAC,EAE/DzX,EAAI,KAAKtwC,EAAO,IAAMswC,EAAI,MAAM,EAAI,CAAC,EACrC,SAASuX,GAAa,CAClB,MAAMnT,EAASpE,EAAI,UAAU,CACzB,QAAS,KACT,cAAe,GACf,aAAc,GACd,UAAW,EACd,EAAEkE,CAAQ,EACXlE,EAAI,eAAeoE,CAAM,CAC5B,CACD,SAASqT,EAAevY,EAASsY,EAAU,CACvC,MAAO,IAAM,CACT,MAAMpT,EAASpE,EAAI,UAAU,CAAE,QAAAd,CAAO,EAAIgF,CAAQ,EAClD9qE,EAAI,OAAOs2B,EAAOw0C,CAAQ,EAC1BlE,EAAI,oBAAoBoE,EAAQ10C,CAAK,EACjC8nD,EACAp+E,EAAI,OAAOo+E,KAAc5Y,YAAU,KAAMM,CAAO,EAAE,EAElDc,EAAI,UAAU,CAAE,SAAUd,CAAS,EACvD,CACS,CACJ,CACL,EACA,SAAS,UAAUn5F,EAAIm5F,EAAS,CAC5B,MAAML,EAAS94F,EAAG,OAAOm5F,CAAO,EAChC,OAAOL,IAAW,QAAa,IAAKgB,SAAO,mBAAmB95F,EAAI84F,CAAM,CAC5E,CACe,YAAG7nI,sBC/DlB,OAAO,eAAe,SAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM6oI,SAASp2F,OACTzyC,MAAM,CACR,QAAS,CAAC,OAAQ,MAAM,EACxB,WAAY,CAAC,SAAU,SAAS,EAChC,KAAK,CAAE,QAAAkoI,EAAS,aAAAwC,EAAc,GAAA37F,CAAE,EAAI,CAC5B27F,EAAa,KAAO,WAChB7B,SAAO,iBAAiB95F,EAAI,IAAIm5F,CAAO,2BAA2B,CAC7E,CACL,EACe,iBAAGloI,MCVlB,OAAO,eAAe,WAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM,kBAAoByyC,gBACpB,cAAgBuC,YAChB,QAAUgV,MACV,YAAcM,UACd,WAAauE,SACb,eAAiBC,aACjB,gBAAkBC,cAClB,uBAAyBC,qBACzB,aAAeC,aACf,oBAAsBC,kBACtB,MAAQC,IACR,QAAUc,MACV,QAAUC,MACV,QAAUwwF,MACV,KAAOC,IACP,WAAaC,SACnB,SAAS,cAAcC,EAAY,GAAO,CACtC,MAAMC,EAAa,CAEf,MAAM,QACN,QAAQ,QACR,QAAQ,QACR,QAAQ,QACR,KAAK,QACL,WAAW,QAEX,gBAAgB,QAChB,uBAAuB,QACvB,eAAe,QACf,aAAa,QACb,oBAAoB,OAC5B,EAEI,OAAID,EACAC,EAAW,KAAK,cAAc,QAAS,YAAY,OAAO,EAE1DA,EAAW,KAAK,kBAAkB,QAAS,QAAQ,OAAO,EAC9DA,EAAW,KAAK,WAAW,OAAO,EAC3BA,CACX,CACe,mBAAG,0CCzClB,OAAO,eAAexmG,SAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAMstF,YAAYn1F,QACZ9D,QAAQ,CACV,QAAS,CAAC,CAAE,WAAAu9F,CAAU,OAAWtE,YAAU,0BAA2BsE,CAAU,IAChF,OAAQ,CAAC,CAAE,WAAAA,CAAU,OAAWtE,YAAU,cAAesE,CAAU,GACvE,EACMlsI,MAAM,CACR,QAAS,SACT,KAAM,CAAC,SAAU,QAAQ,EACzB,WAAY,SACZ,MAAO,GACX,MAAI2uC,QACA,KAAKq6F,EAAK6I,EAAU,CAChB,KAAM,CAAE,IAAAzvE,EAAK,KAAAp3D,EAAM,MAAAm9H,EAAO,OAAAN,EAAQ,WAAAqE,EAAY,GAAAn9F,CAAI,EAAGi6F,EAC/C,CAAE,KAAAh3F,EAAM,cAAAy4F,EAAe,UAAAT,EAAW,KAAA1kI,CAAI,EAAKypC,EACjD,GAAI,CAACiD,EAAK,gBACN,OACAm2F,EACA4Y,IAEAC,IACJ,SAASD,GAAsB,CAC3B,MAAME,EAAO7+E,EAAI,WAAW,UAAW,CACnC,IAAK98D,EAAK,QACV,KAAM0sC,EAAK,KAAK,OAChC,CAAa,EACKkvG,EAAO9+E,EAAI,MAAM,UAAYwlE,YAAU,KAAMqZ,CAAI,IAAI/U,CAAU,GAAG,EAClEiV,EAAQ/+E,EAAI,IAAI,OAAO,EACvB9nB,EAAS8nB,EAAI,IAAI,QAAQ,EAE/BA,EAAI,MAAOwlE,YAAU,YAAasZ,CAAI,qBAAqBA,CAAI,sBAAuB,IAAM9+E,EAAI,OAAO++E,KAAWvZ,YAAU,KAAMsZ,CAAI,mBAAmB,EAAE,OAAO5mG,KAAYstF,YAAU,KAAMsZ,CAAI,WAAW,EAAG,IAAM9+E,EAAI,OAAO++E,KAAWvZ,YAAU,YAAa,EAAE,OAAOttF,EAAQ4mG,CAAI,CAAC,EACzRlY,EAAI,aAAcpB,YAAU,IAAIwZ,IAAcC,EAAY,EAAC,EAC3D,SAASD,GAAa,CAClB,OAAIpvG,EAAK,eAAiB,GACf41F,YAAU,OACVA,YAAU,KAAMsE,CAAU,QAAQ5xF,CAAM,EACtD,CACD,SAAS+mG,GAAa,CAClB,MAAMC,EAAatX,EAAU,UACnBpC,YAAU,MAAOsZ,CAAI,kBAAkB5mG,CAAM,IAAItvC,CAAI,OAAOsvC,CAAM,IAAItvC,CAAI,QAC1E48H,YAAU,KAAMttF,CAAM,IAAItvC,CAAI,IAClCu2I,KAAgB3Z,YAAU,aAActtF,CAAM,oBAAoBgnG,CAAU,MAAMhnG,CAAM,SAAStvC,CAAI,KAC3G,SAAW48H,YAAU,KAAMttF,CAAM,OAAOA,CAAM,gBAAgB6mG,CAAK,QAAQtP,CAAQ,QAAQ0P,CAAS,EACvG,CACJ,CACD,SAASP,GAAiB,CACtB,MAAMQ,EAAYl8I,EAAK,QAAQuiI,CAAM,EACrC,GAAI,CAAC2Z,EAAW,CACZC,IACA,MACH,CACD,GAAID,IAAc,GACd,OACJ,KAAM,CAACE,EAASpnG,EAAQqnG,CAAM,EAAIC,EAAUJ,CAAS,EACjDE,IAAY7P,GACZ7I,EAAI,KAAK6Y,EAAc,CAAE,EAC7B,SAASJ,GAAgB,CACrB,GAAIzvG,EAAK,eAAiB,GAAO,CAC7B1sC,EAAK,OAAO,KAAKw8I,EAAY,GAC7B,MACH,CACD,MAAM,IAAI,MAAMA,EAAU,CAAE,EAC5B,SAASA,GAAa,CAClB,MAAO,mBAAmBja,CAAM,gCAAgC4C,CAAa,GAChF,CACJ,CACD,SAASmX,EAAUG,EAAQ,CACvB,MAAMlvJ,EAAOkvJ,aAAkB,UACrBna,YAAU,YAAYma,CAAM,EAChC/vG,EAAK,KAAK,WACF41F,YAAU,KAAM51F,EAAK,KAAK,OAAO,MAAO41F,YAAU,aAAaC,CAAM,CAAC,GAC1E,OACJma,EAAM5/E,EAAI,WAAW,UAAW,CAAE,IAAKylE,EAAQ,IAAKka,EAAQ,KAAAlvJ,CAAM,GACxE,OAAI,OAAOkvJ,GAAU,UAAY,EAAEA,aAAkB,QAC1C,CAACA,EAAO,MAAQ,SAAUA,EAAO,YAAcna,YAAU,KAAMoa,CAAG,WAAW,EAEjF,CAAC,SAAUD,EAAQC,CAAG,CAChC,CACD,SAASH,GAAiB,CACtB,GAAI,OAAOL,GAAa,UAAY,EAAEA,aAAqB,SAAWA,EAAU,MAAO,CACnF,GAAI,CAACxX,EAAU,OACX,MAAM,IAAI,MAAM,6BAA6B,EACjD,SAAWpC,YAAU,WAAY+Z,CAAM,IAAI32I,CAAI,GAClD,CACD,OAAO,OAAOsvC,GAAU,cAAiBstF,YAAU,KAAM+Z,CAAM,IAAI32I,CAAI,OAAU48H,YAAU,KAAM+Z,CAAM,SAAS32I,CAAI,GACvH,CACJ,CACJ,CACL,EACesvC,SAAA,QAAGt6C,MCzFlB,OAAO,eAAeiiJ,SAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAMC,WAAWzvG,SACX6H,SAAS,CAAC4nG,WAAS,OAAO,EACjBD,SAAA,QAAG3nG,yBCHlB,OAAO,eAAe,SAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,2BAA4B,4BAA6B,OACzD,4BAA6B,CACzB,QACA,cACA,UACA,aACA,WACA,YACA,UACJ,EACA,2BAA4B,CACxB,mBACA,kBACA,eACJ,ECfA,OAAO,eAAe,OAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM,OAAS7H,OACT,aAAeuC,aACf,aAAegV,WACf,SAAWM,SACX,WAAauE,SACb,mBAAqB,CACvB,OAAO,QACP,aAAa,WACT,aAAa,SAAU,EAC3B,SAAS,QACT,WAAW,mBACX,WAAW,iBACf,EACe,eAAG,mDCdlB,OAAO,eAAeklE,QAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC1CA,QAAA,WAAG,OACrB,IAAI,YACH,SAAUouB,EAAY,CACnBA,EAAW,IAAS,MACpBA,EAAW,QAAa,SAC5B,GAAG,aAAiCpuB,QAAA,WAAG,WAAa,CAAE,EAAC,ECNvD,OAAO,eAAe,cAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAM,UAAYthF,QACZ,QAAUuC,QACV,UAAYgV,QACZ,YAAcM,UACd,OAASuE,OACT,MAAQ,CACV,QAAS,CAAC,CAAE,OAAQ,CAAE,WAAAuzF,EAAY,QAAAC,CAAS,KAAOD,IAAe,QAAQ,WAAW,IAC9E,QAAQC,CAAO,mBACf,iBAAiBA,CAAO,qBAC9B,OAAQ,CAAC,CAAE,OAAQ,CAAE,WAAAD,EAAY,IAAA/9H,EAAK,QAAAg+H,CAAS,QAAW,UAAU,aAAcD,CAAU,UAAUC,CAAO,eAAeh+H,CAAG,GACnI,EACM,IAAM,CACR,QAAS,gBACT,KAAM,SACN,WAAY,SACZ,MACA,KAAK2kH,EAAK,CACN,KAAM,CAAE,IAAA5mE,EAAK,KAAAp3D,EAAM,OAAA68H,EAAQ,aAAA6C,EAAc,GAAA37F,CAAI,EAAGi6F,EAC1C,CAAE,MAAAz6D,CAAO,EAAGm8D,EAClB,GAAI,CAAC37F,EAAG,KAAK,cACT,MAAM,IAAI,MAAM,8CAA8C,EAElE,MAAMszG,EAAUxa,EAAO,aACvB,GAAI,OAAOwa,GAAW,SAClB,MAAM,IAAI,MAAM,sCAAsC,EAC1D,GAAIxa,EAAO,QACP,MAAM,IAAI,MAAM,yCAAyC,EAC7D,GAAI,CAACt5D,EACD,MAAM,IAAI,MAAM,uCAAuC,EAC3D,MAAMmqB,EAAQt2B,EAAI,IAAI,QAAS,EAAK,EAC9B/9C,EAAM+9C,EAAI,MAAM,SAAW,UAAU,KAAMp3D,CAAI,MAAO,UAAU,aAAaq3I,CAAO,CAAC,EAAE,EAC7FjgF,EAAI,MAAO,UAAU,YAAa/9C,CAAG,eAAgB,IAAMi+H,EAAiB,EAAE,IAAMtZ,EAAI,MAAM,GAAO,CAAE,WAAY,QAAQ,WAAW,IAAK,IAAA3kH,EAAK,QAAAg+H,CAAS,EAAC,EAC1JrZ,EAAI,GAAGtwC,CAAK,EACZ,SAAS4pD,GAAkB,CACvB,MAAMC,EAAUC,IAChBpgF,EAAI,GAAG,EAAK,EACZ,UAAWqgF,KAAYF,EACnBngF,EAAI,UAAW,UAAU,KAAM/9C,CAAG,QAAQo+H,CAAQ,EAAE,EACpDrgF,EAAI,OAAOs2B,EAAOgqD,EAAeH,EAAQE,CAAQ,CAAC,CAAC,EAEvDrgF,EAAI,KAAI,EACR4mE,EAAI,MAAM,GAAO,CAAE,WAAY,QAAQ,WAAW,QAAS,IAAA3kH,EAAK,QAAAg+H,CAAO,CAAE,EACzEjgF,EAAI,MAAK,CACZ,CACD,SAASsgF,EAAevU,EAAY,CAChC,MAAMiQ,EAASh8E,EAAI,KAAK,OAAO,EACzBgrE,EAASpE,EAAI,UAAU,CAAE,QAAS,QAAS,WAAAmF,GAAciQ,CAAM,EACrE,OAAApV,EAAI,eAAeoE,EAAQ,UAAU,IAAI,EAClCgR,CACV,CACD,SAASoE,GAAa,CAClB,IAAI9hJ,EACJ,MAAMiiJ,EAAe,GACfC,EAAcC,EAAYnY,CAAY,EAC5C,IAAIoY,EAAc,GAClB,QAAS1wJ,EAAI,EAAGA,EAAIm8E,EAAM,OAAQn8E,IAAK,CACnC,IAAIg6I,EAAM79D,EAAMn8E,CAAC,EACjB,GAA+Cg6I,GAAI,MAAS,IAAK,OAAO,sBAAsBA,EAAKr9F,EAAG,KAAK,KAAK,EAAG,CAC/G,MAAMhpC,EAAMqmI,EAAI,KAIhB,GAHAA,EAAM,UAAU,WAAW,KAAKr9F,EAAG,KAAMA,EAAG,UAAU,KAAMA,EAAG,OAAQhpC,CAAG,EACtEqmI,aAAe,UAAU,YACzBA,EAAMA,EAAI,QACVA,IAAQ,OACR,MAAM,IAAI,YAAY,QAAQr9F,EAAG,KAAK,YAAaA,EAAG,OAAQhpC,CAAG,CACxE,CACD,MAAMg9I,GAAWriJ,EAA+C0rI,GAAI,cAAgB,MAAQ1rI,IAAO,OAAS,OAASA,EAAG2hJ,CAAO,EAC/H,GAAI,OAAOU,GAAW,SAClB,MAAM,IAAI,MAAM,iFAAiFV,CAAO,GAAG,EAE/GS,EAAcA,IAAgBF,GAAeC,EAAYzW,CAAG,GAC5D4W,EAAYD,EAAS3wJ,CAAC,CACzB,CACD,GAAI,CAAC0wJ,EACD,MAAM,IAAI,MAAM,mBAAmBT,CAAO,oBAAoB,EAClE,OAAOM,EACP,SAASE,EAAY,CAAE,SAAAvjH,GAAY,CAC/B,OAAO,MAAM,QAAQA,CAAQ,GAAKA,EAAS,SAAS+iH,CAAO,CAC9D,CACD,SAASW,EAAY5W,EAAKh6I,EAAG,CACzB,GAAIg6I,EAAI,MACJ6W,EAAW7W,EAAI,MAAOh6I,CAAC,UAElBg6I,EAAI,KACT,UAAWqW,KAAYrW,EAAI,KACvB6W,EAAWR,EAAUrwJ,CAAC,MAI1B,OAAM,IAAI,MAAM,8BAA8BiwJ,CAAO,+BAA+B,CAE3F,CACD,SAASY,EAAWR,EAAUrwJ,EAAG,CAC7B,GAAI,OAAOqwJ,GAAY,UAAYA,KAAYE,EAC3C,MAAM,IAAI,MAAM,mBAAmBN,CAAO,iCAAiC,EAE/EM,EAAaF,CAAQ,EAAIrwJ,CAC5B,CACJ,CACJ,CACL,EACe,sBAAG,4+ECrGlB,OAAO,eAAcyC,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAA0B,gBAAAA,EAAA,gBAA0BA,EAAkB,QAAAA,EAAA,KAAeA,EAAc,IAAAA,EAAA,UAAoBA,EAAc,IAAAA,EAAA,EAAYA,EAAqB,WAAAA,EAAA,IAAc,OACpL,MAAMmnJ,EAASvpG,OACTywG,EAAWluG,OACXmuG,EAAkBn5F,cAClBo5F,EAAmB,WACnBC,EAAoB,CAAC,aAAa,EAClCC,EAAiB,yCACvB,MAAMnL,UAAY6D,EAAO,OAAQ,CAC7B,kBAAmB,CACf,MAAM,iBAAgB,EACtBkH,EAAS,QAAQ,QAASziJ,GAAM,KAAK,cAAcA,CAAC,CAAC,EACjD,KAAK,KAAK,eACV,KAAK,WAAW0iJ,EAAgB,OAAO,CAC9C,CACD,uBAAwB,CAEpB,GADA,MAAM,sBAAqB,EACvB,CAAC,KAAK,KAAK,KACX,OACJ,MAAMjJ,EAAa,KAAK,KAAK,MACvB,KAAK,gBAAgBkJ,EAAkBC,CAAiB,EACxDD,EACN,KAAK,cAAclJ,EAAYoJ,EAAgB,EAAK,EACpD,KAAK,KAAK,+BAA+B,EAAIA,CAChD,CACD,aAAc,CACV,OAAQ,KAAK,KAAK,YACd,MAAM,YAAa,IAAK,KAAK,UAAUA,CAAc,EAAIA,EAAiB,OACjF,CACJ,CACDzuJ,EAAA,IAAcsjJ,EACdtqG,EAAiB,QAAAh5C,EAAUsjJ,EAC3BtqG,EAAA,YAAqBsqG,EACrB,OAAO,eAActjJ,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,QAAkBsjJ,EAClB,IAAI7F,EAAazjF,WACjB,OAAO,eAAeh6D,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOy9I,EAAW,UAAW,CAAI,GACrH,IAAI1K,EAAY94E,QAChB,OAAO,eAAej6D,EAAS,IAAK,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,CAAE,CAAI,GAClG,OAAO,eAAe/yI,EAAS,MAAO,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,GAAI,CAAI,GACtG,OAAO,eAAe/yI,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,SAAU,CAAI,GAClH,OAAO,eAAe/yI,EAAS,MAAO,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,GAAI,CAAI,GACtG,OAAO,eAAe/yI,EAAS,OAAQ,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,IAAK,CAAI,GACxG,OAAO,eAAe/yI,EAAS,UAAW,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAO+yI,EAAU,OAAQ,CAAI,GAC9G,IAAIuO,EAAqBpnF,iBACzB,OAAO,eAAel6D,EAAS,kBAAmB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOshJ,EAAmB,OAAQ,CAAI,GAC/H,IAAIC,EAAcpnF,UAClB,OAAO,eAAen6D,EAAS,kBAAmB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOuhJ,EAAY,OAAQ,CAAI,qGC/ClH,IAAM,IAAI,IAAI,CAAE,gBAAiB,EAAM,GAChC,sBAAyBvO,IAE3B,CACH,SAFa,IAAI,QAAQA,CAAM,CAGvC,GAEa,sBAAyBA,GAAW,CAC7C,MAAM0b,EAAe,IAAI,QAAQ1b,CAAM,EACjC2b,EAAoB/uJ,GAElBA,IAAM,GACC,IAAM,GAEV,IAAI,QAAQA,CAAC,EAElB+tH,EAAa,OAAO,YAAY,OAAO,QAAQqlB,EAAO,YAAc,EAAE,EAAE,IAAI,CAAC,CAAClzI,EAAG0T,CAAC,IAAM,CAAC1T,EAAG6uJ,EAAiBn7I,CAAC,CAAC,CAAC,CAAC,EACjHo7I,EAA+B5b,EAAO,qBACtC2b,EAAiB3b,EAAO,oBAAoB,EAC5C,IAAM,GACN6b,EAAc,CAACjjJ,EAAG5B,IACR8kJ,EAAgB9kJ,CAAG,EACpB4B,CAAC,EAEVkjJ,EAAmB9kJ,GACd2jH,EAAW3jH,CAAG,GAAK4kJ,EAK9B,MAAO,CACH,aAAAF,EACA,YAAAG,EACA,gBAAAC,EACA,aAPkB9kJ,GACX,CAAC,CAAC2jH,EAAW3jH,CAAG,GAAK,CAAC,CAACgpI,EAAO,oBAO7C,CACA,ECpCa,UAAY,CAAC,CAAE,GAAAt8E,EAAI,OAAAs8E,KAAc,CAC1C,KAAM,CAAE,SAAA0F,CAAQ,EAAK,sBAAsB1F,CAAM,EACjD,OAAO,IAAI,MAAMt8E,EAAI,CACjB,IAAI/yD,EAAQ8a,EAAM,CACd,OAAIA,IAAS,MACF,UACS,MAAM9a,EAAO8a,CAAI,EAAC,GACZ,OAAQ1hB,GAAM27I,EAAS37I,EAAE,KAAK,CAAC,EAIhD0hB,IAAS,MACP,MAAOtI,GAAS,CAEnB,GADcuiI,EAASviI,CAAI,EAEvB,OAAO,MAAMxS,EAAO,IAAIwS,CAAI,EAEhC,MAAM,IAAI,MAAMA,EAAK,SAAU,EAAG,KAAK,UAAUuiI,EAAS,OAAQ,OAAW,CAAC,CAAC,CACnG,EAGuB/0I,EAAO8a,CAAI,CAEzB,CACT,CAAK,CACL,ECzBa,cAAgB,CAAC,CAAE,GAAAi4C,EAAI,OAAAs8E,KAAc,CAC9C,KAAM,CAAE,aAAA0b,EAAc,YAAAG,EAAa,gBAAAC,EAAiB,aAAAC,GAAiB,sBAAsB/b,CAAM,EACjG,OAAO,IAAI,MAAMt8E,EAAI,CACjB,IAAI/yD,EAAQ8a,EAAM,CACd,OAAIA,IAAS,MACF,MAAOzU,GAAQ,CAClB,GAAI,CAAC+kJ,EAAa/kJ,CAAG,EACjB,MAAM,IAAI,MAAM,mBAAmBA,CAAG,GAAG,EAC7C,MAAM/F,EAAM,MAAMN,EAAO,IAAIqG,CAAG,EAChC,OAAI/F,IAAQ,QAEG4qJ,EAAY5qJ,EAAK+F,CAAG,EADxB/F,EAEW,MAC1C,EAEqBwa,IAAS,OAASA,IAAS,MACzB,MAAOzU,EAAKnK,IAAU,CACzB,GAAI,CAACkvJ,EAAa/kJ,CAAG,EACjB,MAAM,IAAI,MAAM,mBAAmBA,CAAG,GAAG,EAE7C,GADc6kJ,EAAYhvJ,EAAOmK,CAAG,EAEhC,OAAO,MAAMrG,EAAO,IAAIqG,EAAKnK,CAAK,EAElC,MAAM,IAAI,MAAM,KAAK,UAAUivJ,EAAgB9kJ,CAAG,EAAE,OAAQ,OAAW,CAAC,CAAC,CACjG,EAEqByU,IAAS,MACP,UACS,MAAM9a,EAAO,OACd,OAAQ5G,GAAM8xJ,EAAY9xJ,EAAE,MAAOA,EAAE,GAAG,CAAC,EAGnD0hB,IAAS,YACP,SAAY,CACf,MAAMoyC,EAAM,MAAMltD,EAAO,MACnBwS,EAAO,OAAO,YAAY06C,EAAI,IAAK9zD,GAAM,CAACA,EAAE,IAAKA,EAAE,KAAK,CAAC,CAAC,EAEhE,GADc2xJ,EAAav4I,CAAI,EAE3B,OAAOA,EAGP,MAAM,IAAI,MAAM,KAAK,UAAUu4I,EAAa,OAAQ,OAAW,CAAC,CAAC,CAEzF,EAGuB/qJ,EAAO8a,CAAI,CAEzB,CACT,CAAK,CACL,EClDa,qBAAuB,CAAC,CAAE,GAAAi4C,EAAI,OAAAs8E,KAAc,CACrD,KAAM,CAAE,YAAA6b,EAAa,gBAAAC,EAAiB,aAAAC,CAAY,EAAK,sBAAsB/b,CAAM,EACnF,OAAO,IAAI,MAAMt8E,EAAI,CACjB,IAAI/yD,EAAQ8a,EAAM,CACd,OAAIA,IAAS,MACF,MAAOzU,GAAQ,CAClB,GAAI,CAAC+kJ,EAAa/kJ,CAAG,EACjB,MAAM,IAAI,MAAM,mBAAmBA,CAAG,GAAG,EAC7C,MAAM/F,EAAM,MAAMN,EAAO,IAAIqG,CAAG,EAChC,GAAI/F,IAAQ,OACR,OAAOA,EACX,KAAM,CAAE,MAAApE,EAAO,SAAAw9B,CAAU,EAAGp5B,EAE5B,OADc4qJ,EAAYhvJ,EAAOmK,CAAG,EACrB,CAAE,MAAOnK,EAAO,SAAAw9B,CAAQ,EAAK,MAChE,EAEqB5e,IAAS,OACP,MAAOzU,EAAKqzB,IAAa,CAC5B,GAAI,CAAC0xH,EAAa/kJ,CAAG,EACjB,MAAM,IAAI,MAAM,mBAAmBA,CAAG,GAAG,EAC7C,OAAO,MAAMrG,EAAO,KAAKqG,EAAKqzB,CAAQ,CAC1D,EAEqB5e,IAAS,OAASA,IAAS,MACzB,MAAOzU,EAAKnK,EAAOw9B,IAAa,CACnC,GAAI,CAAC0xH,EAAa/kJ,CAAG,EACjB,MAAM,IAAI,MAAM,mBAAmBA,CAAG,GAAG,EAE7C,GADc6kJ,EAAYhvJ,EAAOmK,CAAG,EAEhC,OAAO,MAAMrG,EAAO,IAAIqG,EAAKnK,EAAOw9B,CAAQ,EAE5C,MAAM,IAAI,MAAM,KAAK,UAAUyxH,EAAgB9kJ,CAAG,EAAE,OAAQ,OAAW,CAAC,CAAC,CACjG,EAEqByU,IAAS,MACP,UACS,MAAM9a,EAAO,OACd,OAAQ5G,GAAM8xJ,EAAY9xJ,EAAE,MAAOA,EAAE,GAAG,CAAC,EAIjD4G,EAAO8a,CAAI,CAEzB,CACT,CAAK,CACL,EC7Ca,SAAW,CAAC,CAAE,GAAAi4C,EAAI,OAAAs8E,KAAc,CACzC,KAAM,CAAE,SAAA0F,CAAQ,EAAK,sBAAsB1F,CAAM,EACjD,OAAO,IAAI,MAAMt8E,EAAI,CACjB,IAAI/yD,EAAQ8a,EAAM,CACd,OAAIA,IAAS,MACF,UACU,MAAM9a,EAAO8a,CAAI,EAAC,GACV,OAAQ1hB,GAAM27I,EAAS37I,EAAE,KAAK,CAAC,EAInD0hB,IAAS,MACP,MAAOtI,GAAS,CAEnB,GADcuiI,EAASviI,CAAI,EAEvB,OAAO,MAAMxS,EAAO,IAAIwS,CAAI,EAEhC,MAAM,IAAI,MAAMA,EAAK,SAAU,EAAG,KAAK,UAAUuiI,EAAS,OAAQ,OAAW,CAAC,CAAC,CACnG,EAGuB/0I,EAAO8a,CAAI,CAEzB,CACT,CAAK,CACL,UC1BA,KAAO,CAAC,YAAYpf,EAAE,CAAC,KAAK,MAAM,OAAO,KAAK,cAAc,OAAO,KAAK,MAAM,OAAO,KAAK,MAAM,GAAG,KAAK,cAAcA,EAAE,KAAK,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,OAAO,KAAK,MAAM,KAAK,aAAa,CAAC,SAAS,CAAC,OAAO,KAAK,YAAY,KAAK,QAAQ,QAAQ,QAAO,GAAI,IAAI,QAAQA,GAAG,KAAK,MAAM,KAAKA,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAMA,EAAE,KAAK,MAAM,MAAO,EAACA,EAAE,WAAWA,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,EAAC,MAAM,EAAE,WAAW,aAAO,CAAC,YAAYA,EAAE,EAAE,CAAC,KAAK,mBAAmB,OAAO,KAAK,cAAc,OAAO,KAAK,mBAAmB,GAAG,KAAK,cAAcA,CAAC,CAAC,qBAAqBA,EAAE,EAAE,CAAC,MAAO,EAAQ,KAAK,mBAAmBA,CAAC,CAAE,CAAC,qBAAqBO,EAAE,EAAE,CAAC,OAAO,KAAK,qBAAqBA,CAAC,IAAI,KAAK,mBAAmBA,CAAC,EAAE,IAAIP,IAAE,KAAK,aAAa,GAAG,KAAK,mBAAmBO,CAAC,CAAC,CAAC,KAAKP,EAAE,EAAE,CAAC,KAAK,qBAAqBA,CAAC,GAAO,KAAK,qBAAqBA,CAAC,EAAE,QAAjC,GAAwC,OAAO,KAAK,mBAAmBA,CAAC,CAAC,CAAC,WAAWA,EAAE,EAAE,CAAC,OAAO,KAAK,qBAAqBA,CAAC,EAAE,UAAU,CAAC,QAAQA,EAAE,EAAE,CAAC,OAAO,KAAK,qBAAqBA,CAAC,EAAE,QAAS,EAAC,QAAQA,EAAE,EAAE,CAAC,KAAK,qBAAqBA,CAAC,EAAE,QAAO,EAAG,KAAK,KAAKA,CAAC,CAAC,CAAC,MAAMA,EAAE,EAAE,CAAC,OAAO,KAAK,qBAAqBA,CAAC,EAAE,KAAK,qBAAqBA,CAAC,EAAE,MAAM,CAAC,CAAC,SAASA,EAAE,EAAE,CAAC,OAAO,KAAK,MAAMA,CAAC,EAAE,CAAC,CAAC,MAAM,QAAQA,EAAEO,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQA,CAAC,EAAE,MAAMP,EAAG,SAAC,CAAQ,KAAK,QAAQO,CAAC,CAAC,CAAC,CAAC,MAAM,mBAAmBP,EAAEO,EAAE,EAAE,CAAC,OAAO,KAAK,WAAWA,CAAC,EAAE,KAAK,QAAQP,EAAEO,CAAC,EAAE,IAAI,CAAC,ECQzxC,MAAM,eAAiB,IAAM,CAChC,eACA,cACA,0BACA,wBACJ,EACO,eAAe,WAAW,CAAE,KAAAovJ,EAAM,cAAAC,GAAkB,CACvD,wBACe,MAAMC,QAAc,CAC/B,KAAMF,EACN,GAAI,gBACJ,UAAWC,CACnB,CAAK,CAEL,CACA,MAAM,QAAU,CAAC,CAAE,GAAAE,EAAI,OAAAC,KAAc,CACjC,OAAQD,EAAG,KAAI,CACX,IAAK,OACD,OAAO,UAAU,CACb,GAAIA,EACJ,OAAQC,CACxB,CAAa,EACL,IAAK,MACD,OAAO,SAAS,CACZ,GAAID,EACJ,OAAQC,CACxB,CAAa,EACL,IAAK,WACD,OAAO,cAAc,CACjB,GAAID,EAEJ,OAAQC,CACxB,CAAa,EACL,IAAK,mBACD,OAAO,qBAAqB,CACxB,GAAID,EAEJ,OAAQC,CACxB,CAAa,EACL,QACI,MAAM,IAAI,MAAM,yBAAyB,CAChD,CACL,EACO,MAAM,kBAAmB,CAC5B,OACA,WACA,kBACA,6BACA,YAAYC,EAAQ,CAChB,KAAK,OAASA,EACd,KAAK,WAAa,GAClB,KAAK,kBAAoB,IAAIC,IAC7B,KAAK,6BAA+B,KAAK,4BAC5C,CACD,IAAI,UAAW,CACX,OAAO,KAAK,OAAO,QACtB,CACD,MAAM,SAAS,CAAE,GAAA57I,EAAI,KAAAlL,EAAM,QAAA6M,CAAO,EAAK,CAEnC,MAAM,KAAK,kBAAkB,QAAQ3B,CAAE,EACvC,MAAM67I,EAAY,KAAK,WAAW77I,CAAE,EAC9B87I,EAAYC,OACZC,EAAW,SAAY,CAGpB,KAAK,WAAWh8I,CAAE,GAEvB,KAAK,WAAWA,CAAE,EAAE,YAAY,OAAO87I,CAAS,CAC5D,EAEcG,EAAkBR,GAAO,CAC3B,KAAM,CAAE,KAAMS,CAAQ,EAAGT,EACzB,OAAI3mJ,IAAS,OACF,GACJonJ,IAAWpnJ,CAC9B,EACQ,GAAI+mJ,EAAW,CAGX,GAFA,KAAK,WAAW77I,CAAE,EAAE,YAAY,IAAI87I,CAAS,EAC7C,KAAK,kBAAkB,QAAQ97I,CAAE,EAC7B,CAACi8I,EAAeJ,EAAU,EAAE,EAC5B,MAAM,IAAI,MAAM,qBAAqBA,EAAU,GAAG,IAAI,YAAY/mJ,CAAI,GAAG,EAC7E,MAAO,CACH,GAAI+mJ,EAAU,GACd,SAAAG,CAChB,CACS,CACD,GAAI,CACA,MAAMP,EAAM,MAAM,KAAK,OAAO,KAAKz7I,EAAI,CAAE,KAAAlL,EAAM,GAAG6M,CAAS,GAC3D,YAAK,WAAW3B,CAAE,EAAI,CAAE,GAAAy7I,EAAI,YAAa,IAAI,IAAI,CAACK,CAAS,CAAC,GAE5D,KAAK,kBAAkB,QAAQ97I,CAAE,EAC1B,CACH,GAAAy7I,EACA,SAAAO,CAChB,CACS,OACMrwJ,EAAG,CACN,cAAQ,MAAMA,EAAE,SAAU,GACpBA,CACT,CACJ,CACD,MAAM,cAAc,CAAE,GAAAqU,EAAI,KAAAlL,EAAM,OAAA4mJ,EAAQ,QAAA/5I,CAAO,EAAK,CAChD,KAAM,CAAE,GAAA85I,EAAI,SAAAO,CAAU,EAAG,MAAM,KAAK,SAAS,CACzC,GAAAh8I,EACA,KAAAlL,EACA,QAAA6M,CACZ,CAAS,EACD,MAAO,CACH,GAAI,QAAQ,CAAE,GAAA85I,EAAI,OAAAC,CAAM,CAAE,EAC1B,SAAAM,CACZ,CACK,CACD,MAAM,oBAAoB,CAAE,KAAAlnJ,EAAM,QAAA6M,EAAS,IAAAw6I,CAAG,EAAK,CAC/C,MAAMV,EAAM,MAAM,KAAK,OAAO,KAAKU,GAAOJ,OAAU,CAChD,KAAAjnJ,EACA,GAAG6M,CACN,GACK,CAAE,QAAAipC,CAAS,EAAG6wG,EACpB,YAAK,WAAW7wG,CAAO,EAAI,CAAE,GAAA6wG,EAAI,YAAa,IAAI,KAC3C7wG,CACV,CACD,MAAM,UAAU,CAAE,GAAA5qC,GAAM,CACpB,KAAM,CAAE,GAAAy7I,CAAE,EAAK,MAAM,KAAK,SAAS,CAAE,GAAAz7I,CAAE,CAAE,EACzC,MAAMy7I,EAAG,OACT,OAAO,KAAK,WAAWz7I,CAAE,CAC5B,CACD,4BAA6B,CAUzB,MAAMnW,EAAI,YATQ,SAAY,CAC1B,MAAM,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,IAAI,MAAOmW,GAAO,CAC7D,KAAM,CAAE,GAAAy7I,EAAI,YAAAW,CAAW,EAAK,KAAK,WAAWp8I,CAAE,EACzCo8I,EAAY,OACb,OAAO,KAAK,WAAWp8I,CAAE,EACzB,MAAMy7I,EAAG,QAEhB,EAAC,CACd,EACyC,GAAa,EAC9C,MAAO,UAAY,cAAc5xJ,CAAC,CACrC,CACD,MAAM,0BAA0B,CAAE,KAAAwyJ,EAAM,SAAAC,EAAU,KAAA1yJ,CAAI,EAAK,CACvD,KAAM,CAAE,GAAA6xJ,EAAI,SAAAO,CAAQ,EAAK,MAAM,KAAK,SAAS,CAAE,GAAIK,CAAI,CAAE,EAEnDE,EAAW,MAAMd,EAAGa,CAAQ,EAAE,GAAG1yJ,CAAI,EAC3C,aAAMoyJ,EAAQ,EACPO,CACV,CACD,MAAM,OAAO,CAAE,cAAAC,GAAiB,CACxB,KAAK,8BACL,KAAK,6BAA4B,EACjCA,GACA,MAAM,KAAK,OAAO,MAEzB,CACL,CACO,MAAM,yBAA0B,CACnC,cACA,aAAc,CACV,KAAK,cAAgB,EACxB,CACD,sBAAsB,CAAE,OAAAb,GAAU,CAC9B,OAAK,KAAK,cAAcA,EAAO,SAAS,EAAE,IACtC,KAAK,cAAcA,EAAO,SAAS,EAAE,EAAI,IAAI,mBAAmBA,CAAM,GAEnE,KAAK,cAAcA,EAAO,SAAS,EAAE,CAC/C,CACD,MAAM,OAAO,CAAE,OAAAA,EAAQ,cAAAa,GAAkB,CAErC,MAD2B,KAAK,sBAAsB,CAAE,OAAAb,CAAQ,GACvC,OAAO,CAAE,cAAAa,CAAe,GACjD,OAAO,KAAK,cAAcb,EAAO,SAAS,EAAE,CAC/C,CACL,CACO,MAAM,0BAA4B,IAAI,6NC9KhC,cAAgB,MAAOF,EAAI/0H,IAAM,CAC1C,MAAM+1H,EAAU,SAAY,CACxB,MAAMC,EAAW,MAAMjB,EAAG,MAC1B,MAAM/0H,EAAEg2H,EAAS,IAAKC,GAAMA,EAAE,KAAK,CAAC,CAC5C,EACI,OAAAlB,EAAG,OAAO,gBAAgB,GAAG,EAC7BA,EAAG,OAAO,GAAG,SAAUgB,CAAO,EAC9B,MAAMA,EAAO,EACG,SAAY,CACxBhB,EAAG,OAAO,IAAI,SAAUgB,CAAO,CACvC,CAEA,EACA,MAAM,yBAAyBj5G,0BAAa,CACxC,OACA,KACA,UACA,QACA,WACA,aACA,UACA,MACA,UACA,KACA,YAAYm4G,EAAQU,EAAM,CACtB,QACA,KAAK,OAAS,0BAA0B,sBAAsB,CAAE,OAAAV,CAAQ,GACxE,KAAK,KAAOU,EACZ,KAAK,UAAY,GACjB,KAAK,UAAYN,OACjB,KAAK,KAAO,EACf,CACD,MAAM,aAAc,CAChB,KAAM,CAAE,GAAAN,EAAI,SAAAO,CAAU,EAAG,MAAM,KAAK,OAAO,SAAS,CAAE,GAAI,KAAK,IAAM,GACrE,KAAK,WAAaA,EAClB,KAAK,MAAQP,EAAG,OAChB,KAAK,QAAU,KAAK,MAAM,GAC1B,KAAK,UAAY,KAAK,SAAS,QAC/B,MAAM,KAAK,WAAW,EAAE,EACxB,KAAK,aAAe,MAAM,cAAc,KAAK,QAAS,MAAOiB,GAAa,CACtE,MAAM,KAAK,WAAWA,CAAQ,CAC1C,CAAS,EACD,KAAK,KAAO,EACf,CACD,MAAM,WAAWA,EAAU,CACvB,MAAME,EAAY,GAClBF,EAAW,CACP,CACI,GAAI,KAAK,MAAM,MACf,KAAM,UACT,EACD,GAAGA,CACf,EACQA,EAAS,QAASC,GAAM,CACpBC,EAAU,KAAKD,EAAE,EAAE,CAC/B,CAAS,EACD,KAAK,UAAYC,EACjB,KAAK,KAAK,UAAU,CACvB,CACD,MAAM,QAAS,CACP,KAAK,cACL,MAAM,KAAK,eACf,MAAM,KAAK,cACd,CACL,CACO,MAAM,0BAA0Bp5G,0BAAa,CAChD,OACA,eACA,mBACA,kBACA,OACA,YAAYm4G,EAAQ,CAChB,QACA,KAAK,OAAS,CAAE,CAAC,UAAU,EAAG,GAAI,CAAC,MAAM,EAAG,IAC5C,KAAK,eAAiB,CAAE,CAAC,UAAU,EAAG,GAAI,CAAC,MAAM,EAAG,IACpD,KAAK,mBAAqB,CAAE,CAAC,UAAU,EAAG,GAAI,CAAC,MAAM,EAAG,IACxD,KAAK,kBAAoB,GACzB,KAAK,OAASA,CACjB,CACD,MAAM,YAAY37I,EAAI,CAClB,OAAI,KAAK,mBACL,MAAM0U,OAAK,KAAM,UAAU,EACxB,KAAK,OAAO,MAAM,EAAE,SAAS1U,CAAE,CACzC,CACD,MAAM,gBAAgBA,EAAI,CACtB,OAAI,KAAK,mBACL,MAAM0U,OAAK,KAAM,UAAU,EACxB,KAAK,OAAO,UAAU,EAAE,SAAS1U,CAAE,CAC7C,CACD,MAAM,YAAYA,EAAI,CAClB,OAAQ,MAAM,KAAK,gBAAgBA,CAAE,GAAO,MAAM,KAAK,YAAYA,CAAE,CACxE,CACD,MAAM,gBAAgB08I,EAAU,CAC5B,KAAK,kBAAoB,GACzB,MAAM,QAAQ,IAAIA,EAAS,IAAI,MAAOG,GAAY,CAC9C,KAAM,CAAE,KAAAC,EAAM,GAAA98I,CAAI,EAAG68I,EACrB,GAAI,eAAe78I,CAAE,GACjB,GAAI,CAAC,KAAK,mBAAmB88I,CAAI,EAAE98I,CAAE,EAAG,CACpC,MAAM+8I,EAAsB,IAAI,iBAAiB,KAAK,OAAQ/8I,CAAE,EAChE+8I,EAAoB,GAAG,WAAY,IAAM,KAAK,kBAAmB,GACjE,KAAK,mBAAmBD,CAAI,EAAE98I,CAAE,EAAI+8I,EACpC,MAAMA,EAAoB,aAC7B,OAGI,KAAK,eAAeD,CAAI,EAAE,SAAS98I,CAAE,IACtC,KAAK,eAAe88I,CAAI,EAAE,KAAK98I,CAAE,EACjC,KAAK,kBAAiB,EAGjC,EAAC,EACF,KAAK,kBAAoB,GACzB,KAAK,kBAAiB,EACtB,KAAK,KAAK,UAAU,CACvB,CACD,mBAAoB,CAChB,MAAMg9I,EAAS,CAAE,WAAY,CAAE,EAAE,OAAQ,CAAE,GAC3C,SAAW,CAACF,EAAMhlH,CAAG,IAAK,OAAO,QAAQ,KAAK,cAAc,EAAG,CAC3D,MAAMmlH,EAAYD,EAAOF,CAAI,EAC7BhlH,EAAI,QAAS93B,GAAO,CACXi9I,EAAU,SAASj9I,CAAE,GACtBi9I,EAAU,KAAKj9I,CAAE,CACrC,CAAa,CACJ,CACD,SAAW,CAAC88I,EAAMI,CAAG,IAAK,OAAO,QAAQ,KAAK,kBAAkB,EAAG,CAC/D,MAAMD,EAAYD,EAAOF,CAAI,EAC7B,OAAO,OAAOI,CAAG,EAAE,QAASvsI,GAAM,CAC9BA,EAAE,UAAU,QAAS3Q,GAAO,CACnBi9I,EAAU,SAASj9I,CAAE,GACtBi9I,EAAU,KAAKj9I,CAAE,CACzC,CAAiB,CACjB,CAAa,CACJ,CACD,KAAK,OAASg9I,CACjB,CACD,MAAM,QAAS,CACX,MAAMG,EAAe,OAAO,OAAO,KAAK,kBAAkB,EACrD,IAAK5kJ,GAAM,OAAO,OAAOA,CAAC,CAAC,EAC3B,OACL,MAAM,QAAQ,IAAI4kJ,EAAa,IAAKxsI,GAAMA,EAAE,OAAQ,EAAC,CACxD,CACL,CCjJO,MAAM,SAAW,IAAIuQ,IAAUA,EAAM,KAAK,GAAG,EAAE,QAAQ,sCAAuC,EAAE,GAAK,IAC/F,6BAAgC73B,GAClCA,EAAE,OAAS,QCKhB,KAAO,iCACP+pD,QAAQ,QACRgB,SAASgI,SACTC,qBAAqBzM,YACrB,kBAAoB,MAAO,CAAE,QAAAqN,EAAS,KAAAnoD,EAAM,OAAAs6B,CAAM,IAAQ,CAC5D,MAAMgyB,EAAW,CACb,KAAAtsD,EACA,GAAGs6B,CACX,EACU,CAAE,IAAA8Q,EAAK,MAAAztC,CAAO,EAAG,MAAM+pD,SAAa,CAAE,MAAO4E,EAAUhO,qBAAOgB,QAAM,CAAE,EACtEC,EAAOnU,EAAI,SAASmc,oBAAkB,EAC5C,aAAMY,EAAQ,IAAI5I,EAAM5hD,CAAK,EACtB4hD,CACX,EACM,gBAAkB,CAAC,CAAE,MAAAmyE,EAAO,QAAAvpE,CAAS,EAAG,KAAO,MAAO,CAAE,QAAA06E,EAAS,WAAAj7E,EAAY,QAAA9R,KAAe,CAC9FqS,EACIA,GACK,MAAM,gBAAgB,MAAM,WAAW,CAAE,KAAM,GAAM,GAAG,MAAM,iBAAiB,CAAE,KAAM06E,EAAQ,KAAM,IAAK,EAAI,CAAE,CAAC,EAC1HnR,EAAQA,GAASmR,EAAQ,SAAS,GAClC,MAAMylB,EAAY,IAAI,kBAAkBzlB,CAAO,EAC/C,GAAI/sF,EAAS,CACT,MAAMgtF,EAAgB,MAAM36E,EAAQ,IAAIrS,EAAQ,WAAW,mCAAoC,EAAE,CAAC,EAC5F,CAAE,MAAAz+C,GAAU,MAAMywD,SAAa,CACjC,MAAOg7E,EACnB,MAAYxkF,QACZ,OAAYgB,QACZ,CAAS,GACA,CAAE,MAAAoyE,CAAO,EAAGr6H,EAChB,MAEGy+C,EAAU,MAAM,kBAAkB,CAC9B,QAAAqS,EACA,KACA,OAAQ,CAAE,MAAOupE,CAAO,CACpC,CAAS,EACD57E,EAAU,SAAS,IAAK,KAAMA,CAAO,EAGzC,MAAMwyG,EAAU,gBAAgB,CAAC,CAAE,GAAI52B,EAAO,KAAM,UAAY,EAAC,EACjE,MAAMsR,EAAY,MAAOl5H,GAAU,CAE/B,GAAIA,EAAM,QAAQ,KAAO,OAAS,CAACA,EAAM,QAAQ,MAC7C,MAAO,GACX,KAAM,CAAE,KAAAk+I,EAAM,GAAIO,CAAS,EAAGz+I,EAAM,QAAQ,MACtC0+I,EAAa,MAAM,SAASR,CAAI,EAChCjlB,EAAiB,MAAMn7E,EAAW,YAAY99C,EAAM,QAAQ,EAClE,GAAI,CAACi5H,EACD,MAAO,GAEX,KAAM,CAAE,GAAA73H,CAAI,EAAG63H,EACf,OAAIylB,GACC,MAAMC,EAA+Bv9I,EAAIpB,CAAK,GAC/C89C,EAAW,eAAem7E,CAAc,GACpCilB,IAAS,YACT,MAAMM,EAAU,gBAAgB,CAAC,CAAE,GAAIC,EAAS,KAAM,UAAY,EAAC,EAEhE,IAEJ,EACf,EACUE,EAAiC,MAAOv9I,EAAIpB,IAAU,CACxD,GAAI,MAAMw+I,EAAU,gBAAgBp9I,CAAE,EAClC,MAAO,GACX,MAAMw9I,EAAY5+I,EAAM,KACxB,UAAW6+I,KAAYD,EAAW,CAC9B,MAAMz+C,EAAS,MAAM9hD,GAAS,IAAIwgG,CAAQ,EACpCC,EAAkB,MAAM,MAAM,OAAO3+C,CAAM,EAEjD,GADwB,MAAM+4B,EAAU4lB,CAAe,GAE/C,MAAMN,EAAU,gBAAgBp9I,CAAE,EAClC,MAAO,EAElB,CACD,MAAO,EACf,EACI,MAAO,CACH,KACA,QAAA4qC,EACA,MAAA47E,EACA,UAAAsR,CACR,CACA,EACA,gBAAgB,KAAO,KCvDhB,MAAM,QAAU,2BACjB,MAAQ,QACR,OAAS17E,SACT,mBAAqBxM,YACrB,cAAgB,CAClB,KAAM,SACN,WAAY,CACR,KAAM,CACF,KAAM,QACT,EACD,GAAI,CACA,KAAM,QACT,CACJ,EACD,SAAU,CAAC,OAAQ,IAAI,CAC3B,EACM,gCAAkC,MAAO,CAAE,QAAAqN,EAAS,KAAAnoD,EAAM,OAAAs6B,CAAM,IAAQ,CAC1E,MAAMgyB,EAAW,CACb,KAAAtsD,EACA,GAAGs6B,CACX,EACU,CAAE,IAAA8Q,EAAK,MAAAztC,CAAO,EAAG,MAAM+pD,SAAa,CAAE,MAAO4E,EAAU,MAAO,MAAM,CAAE,EACtE/M,EAAOnU,EAAI,SAAS,kBAAkB,EAC5C,aAAM+c,EAAQ,IAAI5I,EAAM5hD,CAAK,EACtB4hD,CACX,EACM,wBAA0B,CAAC,CAAE,MAAAmyE,EAAO,IAAA21B,EAAK,QAAAl/F,CAAO,EAAM,CAAE,IAAK,MAAO,CAAE,QAAA06E,EAAS,WAAAj7E,EAAY,QAAA9R,CAAO,IAAQ,CAC5G47E,EAAQA,GAASmR,EAAQ,SAAS,GAClCwkB,EAAMA,GAAOJ,OACb9+F,EACIA,GACK,MAAM,gBAAgB,MAAM,WAAW,CAAE,KAAM,GAAM,GAAG,MAAM,iBAAiB,CAAE,KAAM06E,EAAQ,KAAM,IAAK,EAAI,CAAE,CAAC,EAE1H,MAAMgmB,EAAqB,0BAA0B,sBAAsB,CACvE,OAAQhmB,CAChB,CAAK,EACD,IAAIimB,EACAnC,EACAoC,EACJ,GAAIjzG,EAAS,CACT,MAAMgtF,GAAgB,MAAM36E,EAAQ,IAAIrS,EAAQ,WAAW,IAAI,OAAO,IAAK,EAAE,CAAC,EACxE,CAAE,MAAAz+C,IAAU,MAAMywD,SAAa,CACjC,MAAOg7E,GACP,MACA,MACZ,CAAS,GACA,CAAE,MAAApR,EAAO,IAAA21B,EAAK,eAAAyB,CAAc,EAAKzxJ,IACjC,CAAE,GAAAsvJ,EAAI,SAAUoC,CAAU,EAAK,MAAMF,EAAmB,cAAc,CACnE,GAAIC,EACJ,KAAM,MACN,OAAQ,cACR,QAAS,CACL,kBAAmB,EACtB,CACb,CAAS,CACJ,MAEI,CAAE,GAAAnC,EAAI,SAAUoC,CAAU,EAAK,MAAMF,EAAmB,cAAc,CACnE,GAAIxB,EACJ,KAAM,MACN,OAAQ,cACR,QAAS,CACL,iBAAkB,gBAAgB,CAAE,MAAA31B,EAAO,QAAAvpE,CAAO,CAAE,EACpD,kBAAmB,EACtB,CACb,CAAS,GACD2gG,EAAiBnC,EAAG,QACpB7wG,EAAU,MAAM,gCAAgC,CAC5C,QAAAqS,EACA,KAAM,QACN,OAAQ,CAAE,MAAOupE,EAAO,IAAA21B,EAAK,eAAAyB,CAAgB,CACzD,CAAS,EACDhzG,EAAU,SAAS,IAAK,QAASA,CAAO,EAE5C,MAAMkzG,EAAa,IAAIt6G,2BACjBu6G,EAAY,IAAI,kBAAkBpmB,CAAO,EAC/ComB,EAAU,GAAG,WAAY,IAAMD,EAAW,KAAK,UAAU,CAAC,EAK1D,MAAME,EAAuB,MAAM,cAAcvC,EAJxB,MAAOiB,IAAa,CACzCA,GAAW,CAAC,CAAE,KAAM,WAAY,GAAIl2B,CAAO,EAAE,GAAGk2B,EAAQ,EACxD,MAAMqB,EAAU,gBAAgBrB,EAAQ,CAChD,CACyE,EAC/DuB,EAAc,MAAOj+I,IAChB,MAAM+9I,EAAU,YAAY/9I,EAAE,EAwFzC,MAAO,CACH,KAAM,QACN,QAAA4qC,EACA,eAAAgzG,EACA,MAAAp3B,EACA,MA3EU,MAAOs2B,GAAM98I,KAAO,CAC9B,GAAI,CAAC,MAAM,SAAS88I,EAAI,EACpB,MAAM,IAAI,MAAM,mBAAmBA,EAAI,gBAAgB,EAE3D,GAAI,CAAAiB,EAAU,OAAOjB,EAAI,EAAE,SAAS98I,EAAE,EAGtC,GAAI,CACA,MAAMpB,GAAQ,CAAE,KAAAk+I,GAAM,GAAA98I,IACtB,MAAMy7I,EAAG,IAAI78I,EAAK,CACrB,OACM8vI,GAAI,CACP,MAAM/iJ,GAAI+iJ,GACV,MAAI/iJ,GAAE,SAAQ,EAAG,SAAS,kBAAkB,EAClC,IAAI,MAAM,oBAAoBmxJ,EAAI,+BAA+B98I,EAAE,GAAG,EAE1ErU,EACT,CACT,EA0DQ,OAzDW,MAAOuyJ,GAAOh9G,KAAQ,CACjC,MAAM,IAAI,MAAM,4DAA4D,CACpF,EAwDQ,UAvFc,MAAOtiC,IAAU,CAC/B,MAAMi5H,GAAiB,MAAMn7E,EAAW,YAAY99C,GAAM,QAAQ,EAClE,GAAI,CAACi5H,GACD,MAAO,GAEX,KAAM,CAAE,GAAA73H,EAAI,EAAG63H,GAGf,OAAQn7E,EAAW,eAAem7E,EAAc,GAAM,MAAMomB,EAAYj+I,EAAE,CAClF,EA+EQ,MAxDU,SAAY,CACtB,MAAMg+I,EAAoB,EAC1B,MAAMH,EAAU,EAChB,MAAME,EAAU,QACxB,EAqDQ,KApDS,SAAY,CAI7B,EAiDQ,4BAhDgC,MAAOr3H,IAAM,CAC7C,MAAM+1H,GAAU,SAAY,CACxB,MAAM0B,GAAO,OAAO,KAAKJ,EAAU,mBAAmB,UAAU,CAAC,EAAE,IAAKnyJ,IAC7D,CACH,SAAUA,EACV,KAAM,UAC1B,EACa,EACKwyJ,EAAUD,GAAK,IAAKvyJ,GAAMA,EAAE,QAAQ,EACpCyyJ,EAAU,OAAO,KAAKN,EAAU,mBAAmB,MAAM,CAAC,EAC3D,IAAKnyJ,IACC,CACH,SAAUA,EACV,KAAM,MAC1B,EACa,EACI,OAAQA,GAAM,CAACwyJ,EAAQ,SAASxyJ,EAAE,QAAQ,CAAC,EAC1CuxJ,EAAe,CAAC,GAAGgB,GAAM,GAAGE,CAAO,EACzC,MAAM33H,GAAEy2H,CAAY,CAChC,EACQ,OAAAY,EAAU,GAAG,WAAYtB,EAAO,EAChC,MAAMA,GAAO,EACI,SAAY,CACzBsB,EAAU,IAAI,WAAYtB,EAAO,CAC7C,CAEA,EAuBQ,kCAtBsC,MAAO/1H,IAAM,CACnD,MAAM+1H,GAAU,SAAY,CACxB,MAAM/1H,GAAE,CAAC,GAAGq3H,EAAU,OAAO,OAAQ,GAAGA,EAAU,OAAO,UAAU,CAAC,CAChF,EACQ,OAAAA,EAAU,GAAG,WAAYtB,EAAO,EAChC,MAAMA,GAAO,EACI,SAAY,CACzBsB,EAAU,IAAI,WAAYtB,EAAO,CAC7C,CAEA,EAaQ,UAAAsB,EACA,YAAAE,EACA,YAjGgB,MAAOj+I,IAChB,MAAM+9I,EAAU,YAAY/9I,EAAE,EAiGrC,gBArGoB,MAAOA,IACpB,MAAM+9I,EAAU,gBAAgB/9I,EAAE,EAqGzC,GAAAy7I,CACR,CACA,EACA,wBAAwB,KAAO,QC7NxB,MAAM,uBAAyB,IAAM,CACxC,cACA,oBAAoB,uBAAuB,EAC3C,oBAAoB,eAAe,CACvC,ECRA,6DAIA,IAAI,KAAO,GACX,KAAK,QAAU,SACZ,IAAC,iBAAmB,KAGnB,SAEA,WAAa,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAE9F,MAAS,CACL,EAAa,KACb,EAAY,MACZ,EAAY,MACZ,GAAY,IACZ,IAAc,IACd,IAAc,IACd,IAAa,KACb,IAAc,IACd,IAAc,IACd,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAc,IACd,IAAa,KACb,IAAa,KACb,GAAa,IACrB,EAEI,SAAW,SAAS6C,EAAe,CAAK,WAAW,QAAQA,CAAE,GAAK,KAA2B,MAAM,CAAC,EAAIA,EAAG,EAC/G,SAAS,YAAa,CAAE,SAAS,IAAI,CAAI,CAEzC,IAAI,OAAS,SAASA,EAAe,CAAE,iBAAmBA,EAAI,SAASA,CAAE,GACzE,SAAS,UAAW,CAAE,OAAO,IAAI,EAAG,WAAY,CAAG,CAEnD,SAAS,WAAW77I,EAAmC,CAAgC,QAA1Bwe,EAAsB,CAAE,EAAUp3B,EAAI,EAAGF,EAAM8Y,EAAK,OAAQ5Y,EAAIF,EAAK,EAAEE,EAAGo3B,EAAEp3B,CAAC,EAAI4Y,EAAK,WAAW5Y,CAAC,EAAG,OAAOo3B,CAAI,CAE7K,SAAS,YAAYxe,EAA4B,CAEhD,QADIwe,EAAsB,GAClBp3B,EAAI,EAAGA,EAAK4Y,EAAK,QAAQ,EAAI,EAAE5Y,EAAGo3B,EAAEp3B,CAAC,EAAI,OAAO,aAAa4Y,EAAK,WAAW,EAAE5Y,CAAC,GAAK4Y,EAAK,WAAW,EAAE5Y,EAAE,CAAC,GAAG,EAAE,EACvH,OAAOo3B,EAAE,KAAK,EAAE,CACjB,CACA,SAAS,YAAYxe,EAA4B,CAEhD,QADIwe,EAAsB,GAClBp3B,EAAI,EAAGA,EAAK4Y,EAAK,QAAQ,EAAI,EAAE5Y,EAAGo3B,EAAEp3B,CAAC,EAAI,OAAO,aAAa4Y,EAAK,WAAW,EAAE5Y,EAAE,CAAC,GAAK4Y,EAAK,WAAW,EAAE5Y,CAAC,GAAG,EAAE,EACvH,OAAOo3B,EAAE,KAAK,EAAE,CACjB,CAEA,IAAI,MAAQ,SAASxe,EAA4B,CAChD,IAAI6O,EAAK7O,EAAK,WAAW,CAAC,EAAG+O,EAAK/O,EAAK,WAAW,CAAC,EACnD,OAAG6O,GAAM,KAAQE,GAAM,IAAa,YAAY/O,EAAK,MAAM,CAAC,CAAC,EAC1D6O,GAAM,KAAQE,GAAM,IAAa,YAAY/O,EAAK,MAAM,CAAC,CAAC,EAC1D6O,GAAM,MAAe7O,EAAK,MAAM,CAAC,EAC7BA,CACR,EAEI,SAAW,SAAS87I,EAAKl1J,EAAyB,CAAE,OAAO,OAAO,aAAaA,CAAC,GAChF,SAAW,SAASm1J,EAAKn1J,EAAyB,CAAE,OAAO,OAAO,aAAaA,CAAC,GAkBhF,MAAQ,KAER,WAAa,oEACjB,SAAS,cAAcoL,EAAO,CAG5B,QAFIwsB,EAAI,GACJ3P,EAAK,EAAGE,EAAK,EAAGitI,EAAK,EAAGzsI,EAAK,EAAGC,EAAK,EAAGysI,EAAK,EAAGtuF,EAAK,EAChDvmE,EAAI,EAAGA,EAAI4K,EAAM,QACxB6c,EAAK7c,EAAM,WAAW5K,GAAG,EACzBmoB,EAAKV,GAAM,EACXE,EAAK/c,EAAM,WAAW5K,GAAG,EACzBooB,GAAMX,EAAK,IAAM,EAAIE,GAAM,EAC3BitI,EAAKhqJ,EAAM,WAAW5K,GAAG,EACzB60J,GAAMltI,EAAK,KAAO,EAAIitI,GAAM,EAC5BruF,EAAKquF,EAAK,GACN,MAAMjtI,CAAE,EACVktI,EAAKtuF,EAAK,GACD,MAAMquF,CAAE,IACjBruF,EAAK,IAEPnvC,GAAK,WAAW,OAAOjP,CAAE,EAAI,WAAW,OAAOC,CAAE,EAAI,WAAW,OAAOysI,CAAE,EAAI,WAAW,OAAOtuF,CAAE,EAEnG,OAAOnvC,CACT,CACA,SAAS,mBAAmBxsB,EAAO,CAGjC,QAFIwsB,EAAI,GACJ3P,EAAK,EAAGE,EAAK,EAAGitI,EAAK,EAAGzsI,EAAK,EAAGC,EAAK,EAAGysI,EAAK,EAAGtuF,EAAK,EAChDvmE,EAAI,EAAGA,EAAI4K,EAAM,QACxB6c,EAAK7c,EAAM,WAAW5K,GAAG,EACrBynB,EAAK,MACPA,EAAK,IACPU,EAAKV,GAAM,EACXE,EAAK/c,EAAM,WAAW5K,GAAG,EACrB2nB,EAAK,MACPA,EAAK,IACPS,GAAMX,EAAK,IAAM,EAAIE,GAAM,EAC3BitI,EAAKhqJ,EAAM,WAAW5K,GAAG,EACrB40J,EAAK,MACPA,EAAK,IACPC,GAAMltI,EAAK,KAAO,EAAIitI,GAAM,EAC5BruF,EAAKquF,EAAK,GACN,MAAMjtI,CAAE,EACVktI,EAAKtuF,EAAK,GACD,MAAMquF,CAAE,IACjBruF,EAAK,IAEPnvC,GAAK,WAAW,OAAOjP,CAAE,EAAI,WAAW,OAAOC,CAAE,EAAI,WAAW,OAAOysI,CAAE,EAAI,WAAW,OAAOtuF,CAAE,EAEnG,OAAOnvC,CACT,CACA,SAAS,cAAcxsB,EAAO,CAC5B,IAAIwsB,EAAI,GACJ3P,EAAK,EAAGE,EAAK,EAAGitI,EAAK,EAAGzsI,EAAK,EAAGC,EAAK,EAAGysI,EAAK,EAAGtuF,EAAK,EACzD37D,EAAQA,EAAM,QAAQ,mCAAoC,EAAE,EAAE,QAAQ,eAAgB,EAAE,EACxF,QAAS5K,EAAI,EAAGA,EAAI4K,EAAM,QACxBud,EAAK,WAAW,QAAQvd,EAAM,OAAO5K,GAAG,CAAC,EACzCooB,EAAK,WAAW,QAAQxd,EAAM,OAAO5K,GAAG,CAAC,EACzCynB,EAAKU,GAAM,EAAIC,GAAM,EACrBgP,GAAK,OAAO,aAAa3P,CAAE,EAC3BotI,EAAK,WAAW,QAAQjqJ,EAAM,OAAO5K,GAAG,CAAC,EACzC2nB,GAAMS,EAAK,KAAO,EAAIysI,GAAM,EACxBA,IAAO,KACTz9H,GAAK,OAAO,aAAazP,CAAE,GAE7B4+C,EAAK,WAAW,QAAQ37D,EAAM,OAAO5K,GAAG,CAAC,EACzC40J,GAAMC,EAAK,IAAM,EAAItuF,EACjBA,IAAO,KACTnvC,GAAK,OAAO,aAAaw9H,CAAE,GAG/B,OAAOx9H,CACT,CACA,IAAI,QAAwB,UAAW,CAAE,OAAO,OAAOv0B,SAAW,KAAe,OAAOuJ,UAAY,KAAe,OAAOA,UAAQ,SAAa,KAAe,CAAC,CAACA,UAAQ,SAAS,IAAK,IAElL,YAA4B,UAAW,CAC1C,GAAG,OAAOvJ,SAAW,IAAa,CACjC,IAAIiyJ,EAAO,CAACjyJ,SAAO,KACnB,GAAG,CAACiyJ,EAAM,GAAI,CAAEjyJ,SAAO,KAAK,MAAO,MAAM,CAAI,MAAU,CAAEiyJ,EAAO,EAAO,CACvE,OAAOA,EAAO,SAASvxJ,EAAKi9E,EAAK,CAAE,OAAQA,EAAO,IAAI39E,SAAOU,EAAKi9E,CAAG,EAAI,IAAI39E,SAAOU,CAAG,CAAE,EAAKV,SAAO,KAAK,KAAKA,QAAM,CACrH,CACD,OAAO,UAAW,EACnB,IACI,YAA4B,UAAW,CAC1C,GAAG,OAAOA,SAAW,IAAa,MAAO,GACzC,IAAIrD,EAAI,YAAY,CAAC,GAAG,CAAC,CAAC,EAC1B,GAAG,CAACA,EAAG,MAAO,GACd,IAAI43B,EAAI53B,EAAE,SAAS,SAAS,EAC5B,OAAO43B,EAAE,QAAU,CACpB,IAGA,SAAS,YAAYt3B,EAAgB,CAEpC,OAAG,QAAgB+C,SAAO,MAAQA,SAAO,MAAM/C,CAAG,EAAI,IAAI+C,SAAO/C,CAAG,EAC7D,OAAO,WAAc,IAAc,IAAI,WAAWA,CAAG,EAAI,IAAI,MAAMA,CAAG,CAE9E,CAEA,SAAS,eAAeA,EAAgB,CAEvC,OAAG,QAAgB+C,SAAO,YAAcA,SAAO,YAAY/C,CAAG,EAAI,IAAI+C,SAAO/C,CAAG,EACzE,OAAO,WAAc,IAAc,IAAI,WAAWA,CAAG,EAAI,IAAI,MAAMA,CAAG,CAE9E,CAEA,IAAI,IAAM,SAASi1J,EAAI1yJ,EAAsB,CAC5C,OAAG,QAAgB,YAAYA,EAAG,QAAQ,EACnCA,EAAE,MAAM,EAAE,EAAE,IAAI,SAAS7C,EAAwB,CAAE,OAAOA,EAAE,WAAW,CAAC,EAAI,GAAO,EAC3F,EAEA,SAAS,KAAK6C,EAAsB,CACnC,GAAG,OAAO,YAAgB,IAAa,OAAO,IAAIA,CAAC,EAEnD,QADIkB,EAAM,IAAI,YAAYlB,EAAE,MAAM,EAAG01D,EAAO,IAAI,WAAWx0D,CAAG,EACrDvD,EAAE,EAAGA,GAAGqC,EAAE,OAAQ,EAAErC,EAAG+3D,EAAK/3D,CAAC,EAAIqC,EAAE,WAAWrC,CAAC,EAAI,IAC5D,OAAOuD,CACR,CAEA,SAAS,IAAIqV,EAAyB,CACrC,GAAG,MAAM,QAAQA,CAAI,EAAG,OAAOA,EAAK,IAAI,SAASrW,EAAG,CAAE,OAAO,OAAO,aAAaA,CAAC,CAAI,GAAE,KAAK,EAAE,EACjE,QAA1B60B,EAAsB,GAAYp3B,EAAI,EAAGA,EAAI4Y,EAAK,OAAQ,EAAE5Y,EAAGo3B,EAAEp3B,CAAC,EAAI,OAAO,aAAa4Y,EAAK5Y,CAAC,CAAC,EAAG,OAAOo3B,EAAE,KAAK,EAAE,CACzH,CAEA,SAAS,IAAIxe,EAAuC,CACnD,GAAG,OAAO,WAAe,IAAa,MAAM,IAAI,MAAM,aAAa,EACnE,OAAO,IAAI,WAAWA,CAAI,CAC3B,CAEA,SAAS,KAAKA,EAAmD,CAChE,GAAG,OAAO,YAAe,IAAa,MAAM,IAAI,MAAM,aAAa,EACnE,GAAGA,aAAgB,YAAa,OAAO,KAAK,IAAI,WAAWA,CAAI,CAAC,EAGhE,QADIwe,EAAI,IAAI,MAAMxe,EAAK,MAAM,EACrB5Y,EAAI,EAAGA,EAAI4Y,EAAK,OAAQ,EAAE5Y,EAAGo3B,EAAEp3B,CAAC,EAAI4Y,EAAK5Y,CAAC,EAClD,OAAOo3B,CACR,CAEA,IAAI,QAAU,QAAU,SAAS49H,EAAM,CAAE,OAAOnyJ,SAAO,OAAOmyJ,EAAK,IAAI,SAASzxJ,EAAK,CAAE,OAAOV,SAAO,SAASU,CAAG,EAAIA,EAAM,YAAYA,CAAG,CAAE,CAAE,CAAC,GAAO,SAASyxJ,EAAM,CACpK,GAAG,OAAO,WAAe,IAAa,CACrC,IAAIh1J,EAAI,EAAGi1J,EAAS,EACpB,IAAIj1J,EAAI,EAAGA,EAAIg1J,EAAK,OAAQ,EAAEh1J,EAAGi1J,GAAUD,EAAKh1J,CAAC,EAAE,OACnD,IAAIo3B,EAAI,IAAI,WAAW69H,CAAM,EACzBn1J,EAAM,EACV,IAAIE,EAAI,EAAGi1J,EAAS,EAAGj1J,EAAIg1J,EAAK,OAAQC,GAAUn1J,EAAK,EAAEE,EACxDF,EAAMk1J,EAAKh1J,CAAC,EAAE,OACXg1J,EAAKh1J,CAAC,YAAa,WAAYo3B,EAAE,IAAI49H,EAAKh1J,CAAC,EAAGi1J,CAAM,EAC/C,OAAOD,EAAKh1J,CAAC,GAAK,SAAUo3B,EAAE,IAAI,IAAI,WAAW,IAAI49H,EAAKh1J,CAAC,CAAC,CAAC,EAAGi1J,CAAM,EACzE79H,EAAE,IAAI,IAAI,WAAW49H,EAAKh1J,CAAC,CAAC,EAAGi1J,CAAM,EAE3C,OAAO79H,CACP,CACD,MAAO,CAAE,EAAC,OAAO,MAAM,GAAI49H,EAAK,IAAI,SAASzxJ,EAAK,CAAE,OAAO,MAAM,QAAQA,CAAG,EAAIA,EAAM,GAAG,MAAM,KAAKA,CAAG,CAAI,EAAC,CAC7G,EAEA,SAAS,WAAW6uB,EAAoB,CAGvC,QAFI1pB,EAAM,CAAE,EAAEwsJ,EAAO,EAAGxwC,EAAItyF,EAAQ,OAAS,IACzCgF,EAAI,YAAYhF,EAAQ,OAAS,GAAG,EAChC+iI,EAAO,EAAGA,EAAO/iI,EAAQ,OAAQ,EAAE+iI,EAAM,CAChD,IAAI5yJ,EAAI6vB,EAAQ,WAAW+iI,CAAI,EAC/B,GAAG5yJ,EAAI,IAAM60B,EAAE89H,GAAM,EAAI3yJ,UACjBA,EAAI,KACX60B,EAAE89H,GAAM,EAAK,IAAM3yJ,GAAG,EAAG,GACzB60B,EAAE89H,GAAM,EAAK,IAAK3yJ,EAAE,WACXA,GAAK,OAAUA,EAAI,MAAQ,CACpCA,GAAKA,EAAE,MAAM,GACb,IAAIH,EAAIgwB,EAAQ,WAAW,EAAE+iI,CAAI,EAAE,KACnC/9H,EAAE89H,GAAM,EAAK,IAAM3yJ,GAAG,EAAG,EACzB60B,EAAE89H,GAAM,EAAK,IAAM3yJ,GAAG,EAAG,GACzB60B,EAAE89H,GAAM,EAAK,IAAM9yJ,GAAG,EAAG,IAAMG,EAAE,IAAI,EACrC60B,EAAE89H,GAAM,EAAK,IAAK9yJ,EAAE,EACvB,MACGg1B,EAAE89H,GAAM,EAAK,IAAM3yJ,GAAG,GAAI,GAC1B60B,EAAE89H,GAAM,EAAK,IAAM3yJ,GAAG,EAAG,GACzB60B,EAAE89H,GAAM,EAAK,IAAK3yJ,EAAE,GAElB2yJ,EAAOxwC,IACTh8G,EAAI,KAAK0uB,EAAE,MAAM,EAAG89H,CAAI,CAAC,EACzBA,EAAO,EACP99H,EAAI,YAAY,KAAK,EACrBstF,EAAI,MAEL,CACD,OAAAh8G,EAAI,KAAK0uB,EAAE,MAAM,EAAG89H,CAAI,CAAC,EAClB,QAAQxsJ,CAAG,CACnB,CAEA,IAAI,KAAO,UAAW,KAAO,mBAqB7B,SAAS,QAAQlJ,EAAyB,CAA8B,QAAxB43B,EAAI,GAAIp3B,EAAIR,EAAE,OAAO,EAASQ,GAAG,GAAGo3B,GAAK53B,EAAE,OAAOQ,GAAG,EAAG,OAAOo3B,CAAI,CACnH,SAAS,KAAK/oB,EAAUjM,EAAwB,CAAC,IAAImf,EAAE,GAAGlT,EAAG,OAAOkT,EAAE,QAAQnf,EAAEmf,EAAE,KAAK,IAAInf,EAAEmf,EAAE,MAAM,EAAEA,CAAE,CACzG,SAAS,KAAKlT,EAAUjM,EAAwB,CAAC,IAAImf,EAAE,GAAGlT,EAAE,OAAOkT,EAAE,QAAQnf,EAAEmf,EAAE,KAAK,IAAInf,EAAEmf,EAAE,MAAM,EAAEA,CAAE,CACxG,SAAS,MAAMlT,EAAUjM,EAAwB,CAAC,IAAImf,EAAE,GAAGlT,EAAG,OAAOkT,EAAE,QAAQnf,EAAEmf,EAAEA,EAAE,KAAK,IAAInf,EAAEmf,EAAE,MAAM,CAAE,CAC1G,SAAS,OAAOlT,EAAUjM,EAAwB,CAAC,IAAImf,EAAE,GAAG,KAAK,MAAMlT,CAAC,EAAG,OAAOkT,EAAE,QAAQnf,EAAEmf,EAAE,KAAK,IAAInf,EAAEmf,EAAE,MAAM,EAAEA,CAAE,CACvH,SAAS,OAAOlT,EAAUjM,EAAwB,CAAC,IAAImf,EAAE,GAAGlT,EAAG,OAAOkT,EAAE,QAAQnf,EAAEmf,EAAE,KAAK,IAAInf,EAAEmf,EAAE,MAAM,EAAEA,CAAE,CAC3G,IAAI,MAAqB,KAAK,IAAI,EAAE,EAAE,EACtC,SAAS,MAAMlT,EAAUjM,EAAwB,CAAC,GAAGiM,EAAE,OAAOA,EAAE,CAAC,MAAO,OAAO,OAAOA,EAAEjM,CAAC,EAAG,IAAIpC,EAAI,KAAK,MAAMqO,CAAC,EAAG,OAAO,OAAOrO,EAAEoC,CAAC,CAAI,CAExI,SAAS,cAAcC,EAAcrC,EAA2B,CAAE,OAAAA,EAAIA,GAAK,EAAUqC,EAAE,QAAU,EAAIrC,IAAMqC,EAAE,WAAWrC,CAAC,EAAE,MAAQ,MAAQqC,EAAE,WAAWrC,EAAE,CAAC,EAAE,MAAQ,MAAQqC,EAAE,WAAWrC,EAAE,CAAC,EAAE,MAAQ,MAAQqC,EAAE,WAAWrC,EAAE,CAAC,EAAE,MAAQ,MAAQqC,EAAE,WAAWrC,EAAE,CAAC,EAAE,MAAQ,MAAQqC,EAAE,WAAWrC,EAAE,CAAC,EAAE,MAAQ,KAAOqC,EAAE,WAAWrC,EAAE,CAAC,EAAE,MAAQ,GAAM,CACpV,IAAI,KAAiC,CACpC,CAAC,MAAO,QAAQ,EAChB,CAAC,MAAO,QAAQ,EAChB,CAAC,MAAO,SAAS,EACjB,CAAC,MAAO,WAAW,EACnB,CAAC,MAAO,UAAU,EAClB,CAAC,MAAO,QAAQ,EAChB,CAAC,MAAO,UAAU,CACnB,EACI,OAAmC,CACtC,CAAC,IAAK,MAAO,SAAS,EACtB,CAAC,IAAK,MAAO,UAAU,EACvB,CAAC,IAAK,MAAO,OAAO,EACpB,CAAC,IAAK,MAAO,OAAO,EACpB,CAAC,IAAK,MAAO,KAAK,EAClB,CAAC,IAAK,MAAO,MAAM,EACnB,CAAC,IAAK,MAAO,MAAM,EACnB,CAAC,IAAK,MAAO,QAAQ,EACrB,CAAC,IAAK,MAAO,WAAW,EACxB,CAAC,IAAK,MAAO,SAAS,EACtB,CAAC,IAAK,MAAO,UAAU,EACvB,CAAC,IAAK,MAAO,UAAU,CACxB,EACA,SAAS,eAAeuhB,EAAW,CAClC,OAAIA,IAAGA,EAAI,IACXA,EAAE,CAAC,EAAI,UACPA,EAAE,CAAC,EAAI,IACPA,EAAE,CAAC,EAAI,OACPA,EAAE,CAAC,EAAI,QACPA,EAAE,CAAC,EAAI,WACPA,EAAE,CAAC,EAAI,KACPA,EAAE,EAAE,EAAG,QACPA,EAAE,EAAE,EAAG,WACPA,EAAE,EAAE,EAAG,QACPA,EAAE,EAAE,EAAG,UACPA,EAAE,EAAE,EAAG,SACPA,EAAE,EAAE,EAAG,WACPA,EAAE,EAAE,EAAG,QACPA,EAAE,EAAE,EAAG,SACPA,EAAE,EAAE,EAAG,aACPA,EAAE,EAAE,EAAG,gBACPA,EAAE,EAAE,EAAG,OACPA,EAAE,EAAE,EAAG,UACPA,EAAE,EAAE,EAAG,cACPA,EAAE,EAAE,EAAG,iBACPA,EAAE,EAAE,EAAG,sBACPA,EAAE,EAAE,EAAG,sBACPA,EAAE,EAAE,EAAG,2BACPA,EAAE,EAAE,EAAG,QACPA,EAAE,EAAE,EAAG,YACPA,EAAE,EAAE,EAAG,SACPA,EAAE,EAAE,EAAG,WACPA,EAAE,EAAE,EAAG,IACPA,EAAE,EAAE,EAAG,2BACAA,CACR,CAEA,IAAI,UAAY,CACf,EAAI,UACJ,EAAI,IACJ,EAAI,OACJ,EAAI,QACJ,EAAI,WACJ,EAAI,KACJ,GAAI,QACJ,GAAI,WACJ,GAAI,QACJ,GAAI,UACJ,GAAI,SACJ,GAAI,WACJ,GAAI,QACJ,GAAI,SACJ,GAAI,aACJ,GAAI,gBACJ,GAAI,OACJ,GAAI,UACJ,GAAI,cACJ,GAAI,iBACJ,GAAI,sBACJ,GAAI,sBACJ,GAAI,2BACJ,GAAI,QACJ,GAAI,YACJ,GAAI,SACJ,GAAI,WACJ,GAAI,IACJ,GAAI,0BACL,EAKI,gBAAkB,CACrB,EAAI,GAAI,EAAI,GAAI,EAAI,GAAI,EAAI,GAE5B,GAAK,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAE7B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEpC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5B,GAAK,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAE7B,GAAK,EAAG,GAAI,GACZ,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,CACL,EAII,gBAAkB,CAErB,EAAI,4BACJ,GAAI,4BAGJ,EAAI,iCACJ,GAAI,iCAGJ,EAAI,kCACJ,GAAI,kCAGJ,EAAI,uCACJ,GAAI,uCAGJ,GAAI,8CAGJ,GAAI,uDAGJ,GAAI,sDAGJ,GAAI,8DACL,EAEA,SAAS,SAAS/hB,EAAckiG,EAAc0zD,EAAsC,CAMnF,QALIC,EAAM71J,EAAI,EAAI,GAAK,EACnBiiG,EAAIjiG,EAAI61J,EACRC,EAAM,EAAGC,EAAM,EAAGrqC,EAAI,EACtBsqC,EAAM,EAAGC,EAAM,EAAGx/C,EAAI,EACtBzU,EAAI,KAAK,MAAMC,CAAC,EACdg0D,EAAM/zD,IACXF,EAAI,KAAK,MAAMC,CAAC,EAChBypB,EAAI1pB,EAAI+zD,EAAMD,EACdr/C,EAAIzU,EAAIi0D,EAAMD,EACV,EAAA/zD,EAAID,EAAK,QACbC,EAAI,GAAKA,EAAID,GACb8zD,EAAMC,EAAKA,EAAMrqC,EACjBsqC,EAAMC,EAAKA,EAAMx/C,EAGlB,GADGA,EAAIvU,IAAQ+zD,EAAM/zD,GAAKuU,EAAIu/C,EAAKtqC,EAAIoqC,IAAcr/C,EAAIw/C,EAAKvqC,EAAIqqC,IAC/D,CAACH,EAAO,MAAO,CAAC,EAAGC,EAAMnqC,EAAGjV,CAAC,EAChC,IAAIlc,EAAI,KAAK,MAAMs7D,EAAMnqC,EAAEjV,CAAC,EAC5B,MAAO,CAAClc,EAAGs7D,EAAInqC,EAAInxB,EAAEkc,EAAGA,CAAC,CAC1B,CACA,SAAS,oBAAoB5nG,EAAauxC,EAAcgM,EAAiB,CACxE,GAAGv9C,EAAI,SAAWA,EAAI,EAAG,OAAO,KAChC,IAAIy8D,EAAQz8D,EAAE,EAAI00C,EAAO,KAAK,MAAM,OAAS10C,EAAIy8D,EAAK,EAAG4qF,EAAI,EACzDC,EAAK,GACLjtJ,EAAI,CAAC,EAAEoiE,EAAM,EAAE/nB,EAAM,EAAE,OAAO10C,EAAEy8D,GAAM/nB,EAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAO1E,GANG,KAAK,IAAIr6C,EAAI,CAAC,EAAI,OAAMA,EAAI,EAAI,GAChCk3C,GAAQA,EAAK,WAAUkrB,GAAQ,MAC/BpiE,EAAI,EAAI,QACVA,EAAI,EAAI,EACL,EAAEq6C,GAAQ,QAASr6C,EAAI,EAAIq6C,EAAO,EAAG,EAAE+nB,EAAM,EAAEpiE,EAAI,IAEpDoiE,IAAS,GAAK6qF,EAAO/pG,EAAK,CAAC,KAAK,GAAG,EAAE,EAAI,CAAC,KAAK,EAAE,EAAE,EAAG8pG,EAAI,UACrD5qF,IAAS,EAAI6qF,EAAO/pG,EAAK,CAAC,KAAK,EAAE,EAAE,EAAI,CAAC,KAAK,EAAE,CAAC,EAAG8pG,EAAI,MAC1D,CACD5qF,EAAO,IAAI,EAAEA,EAEhB,IAAI1oE,EAAI,IAAI,KAAK,KAAM,EAAG,CAAC,EAC3BA,EAAE,QAAQA,EAAE,QAAO,EAAK0oE,EAAO,CAAC,EAChC6qF,EAAO,CAACvzJ,EAAE,YAAW,EAAIA,EAAE,SAAU,EAAC,EAAEA,EAAE,QAAO,CAAE,EACnDszJ,EAAMtzJ,EAAE,SACL0oE,EAAO,KAAI4qF,GAAOA,EAAM,GAAK,GAC7B9pG,IAAI8pG,EAAM,cAActzJ,EAAGuzJ,CAAI,EAClC,CACD,OAAAjtJ,EAAI,EAAIitJ,EAAK,CAAC,EAAGjtJ,EAAI,EAAIitJ,EAAK,CAAC,EAAGjtJ,EAAI,EAAIitJ,EAAK,CAAC,EAChDjtJ,EAAI,EAAIq6C,EAAO,GAAIA,EAAO,KAAK,MAAMA,EAAO,EAAE,EAC9Cr6C,EAAI,EAAIq6C,EAAO,GAAIA,EAAO,KAAK,MAAMA,EAAO,EAAE,EAC9Cr6C,EAAI,EAAIq6C,EACRr6C,EAAI,EAAIgtJ,EACDhtJ,CACR,CACA,IAAI,YAA2B,IAAI,KAAK,KAAM,GAAI,GAAI,EAAG,EAAG,CAAC,EACzD,YAA2B,YAAY,UACvC,YAA2B,IAAI,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,CAAC,EAC3D,SAAS,cAAc2F,EAAYunJ,EAAkC,CACpE,IAAIC,EAAqBxnJ,EAAE,UAC3B,OAAGunJ,EAAUC,GAAS,KAAK,GAAG,GAAG,GAAG,IAC5BxnJ,GAAK,cAAawnJ,GAAS,GAAG,GAAG,GAAG,MACpCA,GAAS,aAA4BxnJ,EAAE,kBAAmB,EAAgB,YAAY,kBAAiB,GAAM,OAAW,GAAK,GAAK,GAAK,IAChJ,CAIA,SAAS,kBAAkB+oB,EAAyB,CACnD,OAAQA,EAAE,QAAQ,GAAG,GAAK,GAAMA,EAAIA,EAAE,QAAQ,2BAA4B,IAAI,CAC/E,CAGA,SAAS,kBAAkBA,EAAyB,CACnD,OAAGA,EAAE,QAAQ,GAAG,GAAK,GAAWA,EACzBA,EAAE,QAAQ,8BAA8B,KAAK,EAAE,QAAQ,eAAe,OAAO,CACrF,CAGA,SAAS,cAAc/oB,EAAyB,CAC/C,IAAIusB,EAAKvsB,EAAE,EAAE,GAAG,GACZ+oB,EAAI,kBAAkB/oB,EAAE,QAAQ,EAAE,CAAC,EAChB,OADsB+oB,EAAE,QAAUwD,IACzDxD,EAAI/oB,EAAE,YAAY,EAAE,EAAM+oB,EAAE,QAAUwD,GAAUxD,EACzC/oB,EAAE,cAAc,CAAC,CACzB,CAGA,SAAS,cAAcA,EAAyB,CAC/C,IAAI+oB,EAAI,kBAAkB/oB,EAAE,QAAQ,EAAE,CAAC,EACvC,OAAQ+oB,EAAE,QAAU/oB,EAAE,EAAE,GAAG,KAAO+oB,IAAM,KAAOA,IAAM,KAAQ/oB,EAAE,YAAY,CAAC,EAAI+oB,CACjF,CAEA,SAAS,gBAAgB/oB,EAAyB,CACjD,IAAIynJ,EAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAIznJ,CAAC,CAAC,EAAE,KAAK,MAAM,EAAG+oB,EAEvD,OAAG0+H,GAAK,IAAMA,GAAK,GAAI1+H,EAAI/oB,EAAE,YAAY,GAAGynJ,CAAC,EACrC,KAAK,IAAIA,CAAC,GAAK,EAAG1+H,EAAI,cAAc/oB,CAAC,EACrCynJ,IAAM,GAAI1+H,EAAI/oB,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,EAC1C+oB,EAAI,cAAc/oB,CAAC,EAEjB,kBAAkB,kBAAkB+oB,EAAE,YAAW,CAAE,CAAC,CAC5D,CAaA,SAAS,YAAY/oB,EAAWuxC,EAAc,CAC7C,OAAO,OAAOvxC,EAAC,CACd,IAAK,SAAU,OAAOA,EACtB,IAAK,UAAW,OAAOA,EAAI,OAAS,QACpC,IAAK,SAAU,OAAQA,EAAE,KAAOA,EAAIA,EAAE,SAAS,EAAE,EAAI,gBAAgBA,CAAC,EACtE,IAAK,YAAa,MAAO,GACzB,IAAK,SACJ,GAAGA,GAAK,KAAM,MAAO,GACrB,GAAGA,aAAa,KAAM,OAAO,WAAW,GAAI,cAAcA,EAAGuxC,GAAQA,EAAK,QAAQ,EAAGA,CAAI,CAC1F,CACD,MAAM,IAAI,MAAM,wCAA0CvxC,CAAC,CAC5D,CAEA,SAAS,cAAcy8D,EAAe1zC,EAAgC,CAEpEA,EAAE,CAAC,GAAK,IACR,IAAIs+H,EAAM5qF,EAAK,SACf,OAAGA,EAAO,KAAI4qF,GAAOA,EAAM,GAAK,GACzBA,CACT,CAEA,SAAS,eAAezqJ,EAAiB2kJ,EAAgBlpJ,EAAKqvJ,EAA4B,CACzF,IAAI3+H,EAAE,GAAIg0C,EAAG,EAAG4qB,EAAG,EAAG9wF,EAAIwB,EAAI,EAAGgC,EAAKstJ,EAAO,EAC7C,OAAO/qJ,EAAI,CACV,IAAK,IACJ/F,EAAIwB,EAAI,EAAI,IAEb,IAAK,KACL,OAAOkpJ,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGlnJ,EAAMxD,EAAI,IAAK8wJ,EAAO,EAAG,MACzC,QAASttJ,EAAMxD,EAAI,IAAO8wJ,EAAO,EAAG,KACvC,CAAI,MACF,IAAK,KACL,OAAOpG,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGlnJ,EAAMhC,EAAI,EAAGsvJ,EAAOpG,EAAI,OAAQ,MAChD,IAAK,GAAG,OAAO,OAAOlpJ,EAAI,EAAE,CAAC,EAAE,CAAC,EAChC,IAAK,GAAG,OAAO,OAAOA,EAAI,EAAE,CAAC,EAAE,CAAC,EAChC,QAAS,OAAO,OAAOA,EAAI,EAAE,CAAC,EAAE,CAAC,CACpC,CAAI,MACF,IAAK,KACL,OAAOkpJ,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGlnJ,EAAMhC,EAAI,EAAGsvJ,EAAOpG,EAAI,OAAQ,MAChD,IAAK,GAAG,OAAO,KAAKlpJ,EAAI,CAAC,EAAE,CAAC,EAC5B,QAAS,OAAO,KAAKA,EAAI,CAAC,EAAE,CAAC,CAChC,CAAI,MACF,IAAK,KACL,OAAOkpJ,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGlnJ,EAAM,GAAGhC,EAAI,EAAE,IAAI,GAAIsvJ,EAAOpG,EAAI,OAAQ,MAC1D,QAAS,KAAM,oBAAsBA,CACxC,CAAI,MACF,IAAK,IACL,OAAOA,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGlnJ,EAAMhC,EAAI,EAAGsvJ,EAAOpG,EAAI,OAAQ,MAChD,QAAS,KAAM,oBAAsBA,CACxC,CAAI,MACF,IAAK,IACL,OAAOA,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGlnJ,EAAMhC,EAAI,EAAGsvJ,EAAOpG,EAAI,OAAQ,MAChD,QAAS,KAAM,sBAAwBA,CAC1C,CAAI,MACF,IAAK,KACJ,GAAGA,GAAO,KAAOA,GAAO,MAAQA,GAAO,MAAQA,GAAO,OAASA,GAAO,OAAQ,KAAM,sBAAwBA,EAC5G,OAAGlpJ,EAAI,IAAM,IAAMkpJ,GAAO,KAAOA,GAAO,MAAc,KAAKlpJ,EAAI,EAAGkpJ,EAAI,MAAM,GAEzEmG,GAAO,EAAG//D,EAAK+/D,IAAQ,EAAI,IAAO,IAChC//D,EAAK+/D,IAAQ,EAAI,GAAK,EAC3B3qF,EAAK,KAAK,MAAO4qB,GAAKtvF,EAAI,EAAIA,EAAI,EAAE,EACjC0kE,GAAM,GAAG4qB,IAAI5qB,EAAK,GAClBwkF,IAAQ,IAAYxkF,IAAO,EAAI,IAAM,GAAGA,EAAG4qB,GAC9C5+D,EAAI,KAAKg0C,EAAG,EAAI2qF,CAAG,EAChBnG,IAAQ,KAAax4H,EAAE,OAAO,EAAE,CAAC,EAC7B,IAAMA,EAAE,OAAO,EAAEw4H,EAAI,OAAO,CAAC,IACrC,IAAK,IACL,OAAOA,EAAG,CACT,IAAK,MAAO,IAAK,OAAQlnJ,EAAMhC,EAAI,EAAE,GAAGA,EAAI,EAAG,MAC/C,IAAK,MAAO,IAAK,OAAQgC,GAAOhC,EAAI,EAAE,GAAGA,EAAI,GAAG,GAAGA,EAAI,EAAG,MAC1D,IAAK,MAAO,IAAK,OAAQgC,IAAQhC,EAAI,EAAE,GAAGA,EAAI,GAAG,GAAGA,EAAI,GAAG,GAAG,KAAK,MAAMA,EAAI,EAAEA,EAAI,CAAC,EAAG,MACvF,QAAS,KAAM,uBAAyBkpJ,CAC3C,CAAIoG,EAAOpG,EAAI,SAAW,EAAI,EAAI,EAAG,MACnC,IAAK,KACJlnJ,EAAMxD,EAAG8wJ,EAAO,EAAG,KACpB,CACD,IAAIC,EAASD,EAAO,EAAI,KAAKttJ,EAAKstJ,CAAI,EAAI,GAC1C,OAAOC,CACR,CAKA,SAAS,SAAS5zJ,EAAyB,CAC1C,IAAIu4B,EAAI,EACR,GAAGv4B,EAAE,QAAUu4B,EAAG,OAAOv4B,EAEzB,QADI6E,EAAK7E,EAAE,OAASu4B,EAAIxD,EAAI/0B,EAAE,OAAO,EAAE6E,CAAC,EAClCA,GAAG7E,EAAE,OAAQ6E,GAAG0zB,EAAGxD,IAAIA,EAAE,OAAS,EAAI,IAAM,IAAM/0B,EAAE,OAAO6E,EAAE0zB,CAAC,EACpE,OAAOxD,CACR,CACA,IAAI,KAAO,KACX,SAAS,cAAcnsB,EAAiB2kJ,EAAgBlpJ,EAA0B,CACjF,IAAIwvJ,EAAOtG,EAAI,QAAQ,KAAK,EAAE,EAAG3mJ,EAAM2mJ,EAAI,OAASsG,EAAK,OACzD,OAAO,UAAUjrJ,EAAMirJ,EAAMxvJ,EAAM,KAAK,IAAI,GAAG,EAAEuC,CAAG,CAAC,EAAI,KAAK,IAAIA,CAAG,CACtE,CAEA,SAAS,aAAagC,EAAiB2kJ,EAAgBlpJ,EAA0B,CAEhF,QADIyyB,EAAMy2H,EAAI,OAAS,EACjBA,EAAI,WAAWz2H,EAAI,CAAC,IAAM,IAAI,EAAEA,EACtC,OAAO,UAAUluB,EAAM2kJ,EAAI,OAAO,EAAEz2H,CAAG,EAAGzyB,EAAM,KAAK,IAAI,GAAG,GAAGkpJ,EAAI,OAAOz2H,EAAI,CAAC,CAChF,CAEA,SAAS,cAAcy2H,EAAgBlpJ,EAA0B,CAChE,IAAI0wB,EACA+B,EAAMy2H,EAAI,QAAQ,GAAG,EAAIA,EAAI,QAAQ,GAAG,EAAI,EAChD,GAAGA,EAAI,MAAM,aAAa,EAAG,CAC5B,GAAGlpJ,GAAO,EAAG,MAAO,SACf,GAAGA,EAAM,EAAG,MAAO,IAAM,cAAckpJ,EAAK,CAAClpJ,CAAG,EACrD,IAAIyvJ,EAASvG,EAAI,QAAQ,GAAG,EAAMuG,IAAW,KAAIA,EAAOvG,EAAI,QAAQ,GAAG,GACvE,IAAIz0G,EAAK,KAAK,MAAM,KAAK,IAAIz0C,CAAG,EAAE,KAAK,MAAM,EAAEyvJ,EAG/C,GAFGh7G,EAAK,IAAGA,GAAMg7G,GACjB/+H,GAAK1wB,EAAI,KAAK,IAAI,GAAGy0C,CAAE,GAAG,YAAYhiB,EAAI,GAAGg9H,EAAOh7G,GAAIg7G,CAAM,EAC3D/+H,EAAE,QAAQ,GAAG,IAAM,GAAI,CACzB,IAAIg/H,EAAQ,KAAK,MAAM,KAAK,IAAI1vJ,CAAG,EAAE,KAAK,MAAM,EAGhD,IAFG0wB,EAAE,QAAQ,GAAG,IAAM,GAAIA,EAAIA,EAAE,OAAO,CAAC,EAAI,IAAMA,EAAE,OAAO,CAAC,EAAI,MAAQg/H,EAAQh/H,EAAE,OAAO+jB,GACpF/jB,GAAK,MAAQg/H,EAAQj7G,GACpB/jB,EAAE,OAAO,EAAE,CAAC,IAAM,MACvBA,EAAIA,EAAE,OAAO,CAAC,EAAIA,EAAE,OAAO,EAAE++H,CAAM,EAAI,IAAM/+H,EAAE,OAAO,EAAE++H,CAAM,EAC9D/+H,EAAIA,EAAE,QAAQ,aAAa,IAAI,EAAE,QAAQ,QAAQ,IAAI,EAEtDA,EAAIA,EAAE,QAAQ,MAAM,GAAG,CACvB,CACDA,EAAIA,EAAE,QAAQ,2BAA2B,SAASi/H,EAAG9zC,EAAG+zC,EAAGC,EAAI,CAAE,OAAOh0C,EAAK+zC,EAAKC,EAAG,OAAO,GAAGJ,EAAOh7G,GAAIg7G,CAAM,EAAI,IAAMI,EAAG,OAAOp7G,CAAE,EAAI,GAAM,EAChJ,MAAM/jB,EAAI1wB,EAAI,cAAcyyB,CAAG,EAChC,OAAGy2H,EAAI,MAAM,QAAQ,GAAKx4H,EAAE,MAAM,UAAU,IAAGA,EAAIA,EAAE,OAAO,EAAEA,EAAE,OAAO,CAAC,EAAI,IAAMA,EAAE,OAAOA,EAAE,OAAO,CAAC,GAClGw4H,EAAI,MAAM,KAAK,GAAKx4H,EAAE,MAAM,KAAK,IAAGA,EAAIA,EAAE,QAAQ,MAAM,GAAG,GACvDA,EAAE,QAAQ,IAAI,GAAG,CACzB,CACA,IAAI,MAAQ,yBACZ,SAAS,aAAa1jB,EAAqB8iJ,EAAiBl5C,EAA4B,CACvF,IAAIm5C,EAAM,SAAS/iJ,EAAE,CAAC,EAAE,EAAE,EAAGgjJ,EAAK,KAAK,MAAMF,EAAOC,CAAG,EAAGp4I,EAAO,KAAK,MAAMq4I,EAAGD,CAAG,EAC9EE,EAAOD,EAAKr4I,EAAKo4I,EAAMG,EAAMH,EACjC,OAAOn5C,GAAQj/F,IAAS,EAAI,GAAK,GAAGA,GAAQ,KAAOs4I,IAAQ,EAAI,KAAK,IAAKjjJ,EAAE,CAAC,EAAE,OAAS,EAAIA,EAAE,CAAC,EAAE,MAAM,EAAI,KAAKijJ,EAAIjjJ,EAAE,CAAC,EAAE,MAAM,EAAIA,EAAE,CAAC,EAAI,IAAMA,EAAE,CAAC,EAAI,KAAKkjJ,EAAIljJ,EAAE,CAAC,EAAE,MAAM,EAC3K,CACA,SAAS,aAAaA,EAAqB8iJ,EAAiBl5C,EAA4B,CACvF,OAAOA,GAAQk5C,IAAS,EAAI,GAAK,GAAGA,GAAQ,KAAK,IAAK9iJ,EAAE,CAAC,EAAE,OAAS,EAAIA,EAAE,CAAC,EAAE,MAAM,CACpF,CACA,IAAI,KAAO,iBACP,WAAa,WACb,MAAQ,sBACZ,SAAS,MAAMxN,EAA2B,CAEzC,QADIkxB,EAAI,GAAIy/H,EACJ72J,EAAI,EAAGA,GAAKkG,EAAI,OAAQ,EAAElG,EAAG,OAAQ62J,EAAG3wJ,EAAI,WAAWlG,CAAC,EAAC,CAChE,IAAK,IAAI,MACT,IAAK,IAAIo3B,GAAI,IAAK,MAClB,IAAK,IAAIA,GAAI,IAAK,MAClB,QAASA,GAAI,OAAO,aAAay/H,CAAE,CACnC,CACD,OAAOz/H,CACR,CACA,SAAS,IAAI1wB,EAAgBtE,EAAyB,CAAE,IAAI00J,EAAK,KAAK,IAAI,GAAG10J,CAAC,EAAG,MAAO,GAAI,KAAK,MAAMsE,EAAMowJ,CAAE,EAAEA,CAAM,CACvH,SAAS,IAAIpwJ,EAAgBtE,EAAyB,CACrD,IAAI20J,EAAQrwJ,EAAM,KAAK,MAAMA,CAAG,EAAGowJ,EAAK,KAAK,IAAI,GAAG10J,CAAC,EACrD,OAAIA,GAAK,GAAK,KAAK,MAAM20J,EAAQD,CAAE,GAAG,OAAe,EAC9C,KAAK,MAAMC,EAAQD,CAAE,CAC7B,CACA,SAAS,MAAMpwJ,EAAgBtE,EAAyB,CACvD,OAAIA,GAAK,GAAK,KAAK,OAAOsE,EAAI,KAAK,MAAMA,CAAG,GAAG,KAAK,IAAI,GAAGtE,CAAC,CAAC,GAAG,OACxD,EAED,CACR,CACA,SAAS,IAAIsE,EAA2B,CACvC,OAAGA,EAAM,YAAcA,EAAM,YAAoB,IAAIA,GAAO,EAAKA,EAAI,EAAMA,EAAI,EAAE,GAC1E,GAAG,KAAK,MAAMA,CAAG,CACzB,CACA,SAAS,cAAcuE,EAAiB2kJ,EAAgBlpJ,EAA2B,CAClF,GAAGuE,EAAK,WAAW,CAAC,IAAM,IAAM,CAAC2kJ,EAAI,MAAM,UAAU,EAAG,CACvD,IAAIoH,EAAOpH,EAAI,QAAQ,OAAO,EAAE,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,KAAK,EAAE,EACnE,OAAGlpJ,GAAO,EAAU,cAAc,IAAKswJ,EAAMtwJ,CAAG,EACzC,IAAM,cAAc,IAAKswJ,EAAM,CAACtwJ,CAAG,EAAI,GAC9C,CACD,GAAGkpJ,EAAI,WAAWA,EAAI,OAAS,CAAC,IAAM,GAAI,OAAO,aAAa3kJ,EAAM2kJ,EAAKlpJ,CAAG,EAC5E,GAAGkpJ,EAAI,QAAQ,GAAG,IAAM,GAAI,OAAO,cAAc3kJ,EAAM2kJ,EAAKlpJ,CAAG,EAC/D,GAAGkpJ,EAAI,QAAQ,GAAG,IAAM,GAAI,OAAO,cAAcA,EAAKlpJ,CAAG,EACzD,GAAGkpJ,EAAI,WAAW,CAAC,IAAM,GAAI,MAAO,IAAI,cAAc3kJ,EAAK2kJ,EAAI,OAAOA,EAAI,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,EAAElpJ,CAAG,EACjG,IAAI0wB,EACA1jB,EAAsBujJ,EAAIC,EAAIV,EAAO,KAAK,IAAI9vJ,CAAG,EAAG42G,EAAO52G,EAAM,EAAI,IAAM,GAC/E,GAAGkpJ,EAAI,MAAM,OAAO,EAAG,OAAOtyC,EAAO,MAAMk5C,EAAK5G,EAAI,MAAM,EAC1D,GAAGA,EAAI,MAAM,SAAS,EACrB,OAAAx4H,EAAI,MAAM1wB,EAAI,CAAC,EAAM0wB,IAAM,MAAKA,EAAI,IAC7BA,EAAE,OAASw4H,EAAI,OAASx4H,EAAI,MAAMw4H,EAAI,OAAO,EAAEA,EAAI,OAAOx4H,EAAE,MAAM,CAAC,EAAIA,EAE/E,GAAI1jB,EAAIk8I,EAAI,MAAM,KAAK,EAAI,OAAO,aAAal8I,EAAG8iJ,EAAMl5C,CAAI,EAC5D,GAAGsyC,EAAI,MAAM,QAAQ,EAAG,OAAOtyC,EAAO,MAAMk5C,EAAK5G,EAAI,OAASA,EAAI,QAAQ,GAAG,CAAC,EAC9E,GAAIl8I,EAAIk8I,EAAI,MAAM,IAAI,EACrB,OAAAx4H,EAAI,IAAI1wB,EAAKgN,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,aAAa,MAAM,MAAMA,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,IAAI,MAAMA,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,WAAW,SAAS2iJ,EAAI9zC,EAAI,CAAE,MAAO,IAAMA,EAAK,KAAK,IAAK,MAAa7uG,EAAe,CAAC,CAAC,EAAE,OAAO6uG,EAAG,MAAM,CAAE,CAAE,EAChNqtC,EAAI,QAAQ,IAAI,IAAM,GAAKx4H,EAAIA,EAAE,QAAQ,OAAO,GAAG,EAG3D,GADAw4H,EAAMA,EAAI,QAAQ,YAAa,IAAI,EAC/Bl8I,EAAIk8I,EAAI,MAAM,cAAc,EAC/B,OAAOtyC,EAAO,IAAIk5C,EAAM9iJ,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,kBAAkB,KAAK,EAAE,QAAQ,YAAY,KAAK,EAAE,QAAQ,OAAOA,EAAE,CAAC,EAAE,OAAO,KAAK,GAAG,EAErI,GAAIA,EAAIk8I,EAAI,MAAM,mBAAmB,EAAI,OAAOtyC,EAAO,SAAS,MAAMk5C,EAAK,CAAC,CAAC,EAC7E,GAAI9iJ,EAAIk8I,EAAI,MAAM,mBAAmB,EACpC,OAAOlpJ,EAAM,EAAI,IAAM,cAAcuE,EAAM2kJ,EAAK,CAAClpJ,CAAG,EAAI,SAAS,IAAI,KAAK,MAAMA,CAAG,EAAI,MAAMA,EAAKgN,EAAE,CAAC,EAAE,MAAM,EAAE,EAAI,IAAM,KAAK,IAAIhN,EAAKgN,EAAE,CAAC,EAAE,MAAM,EAAEA,EAAE,CAAC,EAAE,MAAM,EAEhK,GAAIA,EAAIk8I,EAAI,MAAM,UAAU,EAAI,OAAO,cAAc3kJ,EAAK2kJ,EAAI,QAAQ,SAAS,EAAE,EAAElpJ,CAAG,EACtF,GAAIgN,EAAIk8I,EAAI,MAAM,yBAAyB,EAC1C,OAAAx4H,EAAI,QAAQ,cAAcnsB,EAAM2kJ,EAAI,QAAQ,SAAS,EAAE,EAAGlpJ,CAAG,CAAC,EAC9DuwJ,EAAK,EACE,QAAQ,QAAQrH,EAAI,QAAQ,MAAM,EAAE,CAAC,EAAE,QAAQ,QAAQ,SAASpwJ,EAAE,CAAC,OAAOy3J,EAAG7/H,EAAE,OAAOA,EAAE,OAAO6/H,GAAI,EAAEz3J,IAAI,IAAI,IAAI,EAAG,CAAC,CAAC,EAE9H,GAAGowJ,EAAI,MAAM,KAAK,EACjB,OAAAx4H,EAAI,cAAcnsB,EAAM,aAAcvE,CAAG,EAClC,IAAM0wB,EAAE,OAAO,EAAE,CAAC,EAAI,KAAOA,EAAE,OAAO,EAAG,CAAC,EAAI,IAAMA,EAAE,OAAO,CAAC,EAEtE,IAAI+/H,EAAK,GACT,GAAIzjJ,EAAIk8I,EAAI,MAAM,6BAA6B,EAC9C,OAAAqH,EAAK,KAAK,IAAiBvjJ,EAAE,CAAC,EAAS,OAAO,CAAC,EAC/CwjJ,EAAK,SAASV,EAAM,KAAK,IAAI,GAAGS,CAAE,EAAE,EAAG,EAAK,EAC5C7/H,EAAI,GAAKkmF,EACT65C,EAAK,UAAU,IAAkBzjJ,EAAE,CAAC,EAAUwjJ,EAAG,CAAC,CAAC,EAChDC,EAAG,OAAOA,EAAG,OAAO,CAAC,GAAK,MAAKA,EAAKA,EAAG,OAAO,EAAEA,EAAG,OAAO,CAAC,EAAI,KAClE//H,GAAK+/H,EAAkBzjJ,EAAE,CAAC,EAAW,IAAmBA,EAAE,CAAC,EAC3DyjJ,EAAK,MAAMD,EAAG,CAAC,EAAED,CAAE,EAChBE,EAAG,OAASzjJ,EAAE,CAAC,EAAE,SAAQyjJ,EAAK,MAAMzjJ,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,EAAE,OAAOyjJ,EAAG,MAAM,CAAC,EAAIA,GAC7E//H,GAAK+/H,EACE//H,EAER,GAAI1jB,EAAIk8I,EAAI,MAAM,+BAA+B,EAChD,OAAAqH,EAAK,KAAK,IAAI,KAAK,IAAIvjJ,EAAE,CAAC,EAAE,OAAQA,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAClDwjJ,EAAK,SAASV,EAAM,KAAK,IAAI,GAAGS,CAAE,EAAE,EAAG,EAAI,EACpC35C,GAAQ45C,EAAG,CAAC,IAAIA,EAAG,CAAC,EAAI,GAAK,MAAQ,KAAOA,EAAG,CAAC,EAAI,KAAKA,EAAG,CAAC,EAAED,CAAE,EAAIvjJ,EAAE,CAAC,EAAI,IAAMA,EAAE,CAAC,EAAI,MAAMwjJ,EAAG,CAAC,EAAED,CAAE,EAAG,KAAK,IAAK,EAAEA,EAAG,EAAIvjJ,EAAE,CAAC,EAAE,OAASA,EAAE,CAAC,EAAE,MAAM,GAE9J,GAAIA,EAAIk8I,EAAI,MAAM,UAAU,EAE3B,OADAx4H,EAAI,MAAM1wB,EAAK,CAAC,EACbkpJ,EAAI,QAAUx4H,EAAE,OAAeA,EAC3B,MAAMw4H,EAAI,OAAO,EAAEA,EAAI,OAAOx4H,EAAE,MAAM,CAAC,EAAIA,EAEnD,GAAI1jB,EAAIk8I,EAAI,MAAM,qBAAqB,EAAI,CAC1Cx4H,EAAI,GAAK1wB,EAAI,QAAQ,KAAK,IAAIgN,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,YAAY,IAAI,EACvEujJ,EAAK7/H,EAAE,QAAQ,GAAG,EAClB,IAAIggI,EAAOxH,EAAI,QAAQ,GAAG,EAAIqH,EAAII,EAAOzH,EAAI,OAASx4H,EAAE,OAASggI,EACjE,OAAO,MAAMxH,EAAI,OAAO,EAAEwH,CAAI,EAAIhgI,EAAIw4H,EAAI,OAAOA,EAAI,OAAOyH,CAAI,CAAC,CACjE,CACD,GAAI3jJ,EAAIk8I,EAAI,MAAM,oBAAoB,EACrC,OAAAqH,EAAK,IAAIvwJ,EAAKgN,EAAE,CAAC,EAAE,MAAM,EAClBhN,EAAM,EAAI,IAAM,cAAcuE,EAAM2kJ,EAAK,CAAClpJ,CAAG,EAAI,SAAS,IAAIA,CAAG,CAAC,EAAE,QAAQ,aAAa,KAAK,EAAE,QAAQ,QAAQ,SAAS2vJ,EAAI,CAAE,MAAO,OAASA,EAAG,OAAS,EAAI,KAAK,EAAE,EAAEA,EAAG,MAAM,EAAI,IAAMA,CAAG,CAAE,EAAI,IAAM,KAAKY,EAAGvjJ,EAAE,CAAC,EAAE,MAAM,EAErO,OAAOk8I,EAAG,CACT,IAAK,aAAc,OAAO,cAAc3kJ,EAAM,WAAYvE,CAAG,EAC7D,IAAK,UACL,IAAK,SACL,IAAK,QAAS,IAAIlH,EAAI,SAAS,MAAMg3J,EAAK,CAAC,CAAC,EAAG,OAAOh3J,IAAM,IAAM89G,EAAO99G,EAAI,GAC7E,IAAK,aAAc,OAAO,cAAcyL,EAAM,aAAavE,CAAG,EAAE,QAAQ,OAAO,GAAG,EAClF,IAAK,WAAY,OAAO,cAAcuE,EAAM,WAAWvE,CAAG,EAAE,QAAQ,OAAO,GAAG,CAE9E,CACD,MAAM,IAAI,MAAM,uBAAyBkpJ,EAAM,GAAG,CACnD,CACA,SAAS,cAAc3kJ,EAAiB2kJ,EAAgBlpJ,EAA0B,CAEjF,QADIyyB,EAAMy2H,EAAI,OAAS,EACjBA,EAAI,WAAWz2H,EAAI,CAAC,IAAM,IAAI,EAAEA,EACtC,OAAO,UAAUluB,EAAM2kJ,EAAI,OAAO,EAAEz2H,CAAG,EAAGzyB,EAAM,KAAK,IAAI,GAAG,GAAGkpJ,EAAI,OAAOz2H,EAAI,CAAC,CAChF,CACA,SAAS,eAAeluB,EAAiB2kJ,EAAgBlpJ,EAA0B,CAClF,IAAIwvJ,EAAOtG,EAAI,QAAQ,KAAK,EAAE,EAAG3mJ,EAAM2mJ,EAAI,OAASsG,EAAK,OACzD,OAAO,UAAUjrJ,EAAMirJ,EAAMxvJ,EAAM,KAAK,IAAI,GAAG,EAAEuC,CAAG,CAAC,EAAI,KAAK,IAAIA,CAAG,CACtE,CACA,SAAS,eAAe2mJ,EAAgBlpJ,EAA0B,CACjE,IAAI0wB,EACA+B,EAAMy2H,EAAI,QAAQ,GAAG,EAAIA,EAAI,QAAQ,GAAG,EAAI,EAChD,GAAGA,EAAI,MAAM,aAAa,EAAG,CAC5B,GAAGlpJ,GAAO,EAAG,MAAO,SACf,GAAGA,EAAM,EAAG,MAAO,IAAM,eAAekpJ,EAAK,CAAClpJ,CAAG,EACtD,IAAIyvJ,EAASvG,EAAI,QAAQ,GAAG,EAAMuG,IAAW,KAAIA,EAAOvG,EAAI,QAAQ,GAAG,GACvE,IAAIz0G,EAAK,KAAK,MAAM,KAAK,IAAIz0C,CAAG,EAAE,KAAK,MAAM,EAAEyvJ,EAG/C,GAFGh7G,EAAK,IAAGA,GAAMg7G,GACjB/+H,GAAK1wB,EAAI,KAAK,IAAI,GAAGy0C,CAAE,GAAG,YAAYhiB,EAAI,GAAGg9H,EAAOh7G,GAAIg7G,CAAM,EAC3D,CAAC/+H,EAAE,MAAM,MAAM,EAAG,CACpB,IAAIg/H,EAAQ,KAAK,MAAM,KAAK,IAAI1vJ,CAAG,EAAE,KAAK,MAAM,EAC7C0wB,EAAE,QAAQ,GAAG,IAAM,GAAIA,EAAIA,EAAE,OAAO,CAAC,EAAI,IAAMA,EAAE,OAAO,CAAC,EAAI,MAAQg/H,EAAQh/H,EAAE,OAAO+jB,GACpF/jB,GAAK,MAAQg/H,EAAQj7G,GAC1B/jB,EAAIA,EAAE,QAAQ,MAAM,GAAG,CACvB,CACDA,EAAIA,EAAE,QAAQ,2BAA2B,SAASi/H,EAAG9zC,EAAG+zC,EAAGC,EAAI,CAAE,OAAOh0C,EAAK+zC,EAAKC,EAAG,OAAO,GAAGJ,EAAOh7G,GAAIg7G,CAAM,EAAI,IAAMI,EAAG,OAAOp7G,CAAE,EAAI,GAAM,EAChJ,MAAM/jB,EAAI1wB,EAAI,cAAcyyB,CAAG,EAChC,OAAGy2H,EAAI,MAAM,QAAQ,GAAKx4H,EAAE,MAAM,UAAU,IAAGA,EAAIA,EAAE,OAAO,EAAEA,EAAE,OAAO,CAAC,EAAI,IAAMA,EAAE,OAAOA,EAAE,OAAO,CAAC,GAClGw4H,EAAI,MAAM,KAAK,GAAKx4H,EAAE,MAAM,KAAK,IAAGA,EAAIA,EAAE,QAAQ,MAAM,GAAG,GACvDA,EAAE,QAAQ,IAAI,GAAG,CACzB,CACA,SAAS,cAAcnsB,EAAiB2kJ,EAAgBlpJ,EAA2B,CAClF,GAAGuE,EAAK,WAAW,CAAC,IAAM,IAAM,CAAC2kJ,EAAI,MAAM,UAAU,EAAG,CACvD,IAAIoH,EAAOpH,EAAI,QAAQ,OAAO,EAAE,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,KAAK,EAAE,EACnE,OAAGlpJ,GAAO,EAAU,cAAc,IAAKswJ,EAAMtwJ,CAAG,EACzC,IAAM,cAAc,IAAKswJ,EAAM,CAACtwJ,CAAG,EAAI,GAC9C,CACD,GAAGkpJ,EAAI,WAAWA,EAAI,OAAS,CAAC,IAAM,GAAI,OAAO,cAAc3kJ,EAAM2kJ,EAAKlpJ,CAAG,EAC7E,GAAGkpJ,EAAI,QAAQ,GAAG,IAAM,GAAI,OAAO,eAAe3kJ,EAAM2kJ,EAAKlpJ,CAAG,EAChE,GAAGkpJ,EAAI,QAAQ,GAAG,IAAM,GAAI,OAAO,eAAeA,EAAKlpJ,CAAG,EAC1D,GAAGkpJ,EAAI,WAAW,CAAC,IAAM,GAAI,MAAO,IAAI,cAAc3kJ,EAAK2kJ,EAAI,OAAOA,EAAI,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,EAAElpJ,CAAG,EACjG,IAAI0wB,EACA1jB,EAAsBujJ,EAAIC,EAAIV,EAAO,KAAK,IAAI9vJ,CAAG,EAAG42G,EAAO52G,EAAM,EAAI,IAAM,GAC/E,GAAGkpJ,EAAI,MAAM,OAAO,EAAG,OAAOtyC,EAAO,KAAKk5C,EAAK5G,EAAI,MAAM,EACzD,GAAGA,EAAI,MAAM,SAAS,EACrB,OAAAx4H,EAAK,GAAG1wB,EAASA,IAAQ,IAAG0wB,EAAI,IACzBA,EAAE,OAASw4H,EAAI,OAASx4H,EAAI,MAAMw4H,EAAI,OAAO,EAAEA,EAAI,OAAOx4H,EAAE,MAAM,CAAC,EAAIA,EAE/E,GAAI1jB,EAAIk8I,EAAI,MAAM,KAAK,EAAI,OAAO,aAAal8I,EAAG8iJ,EAAMl5C,CAAI,EAC5D,GAAGsyC,EAAI,MAAM,QAAQ,EAAG,OAAOtyC,EAAO,KAAKk5C,EAAK5G,EAAI,OAASA,EAAI,QAAQ,GAAG,CAAC,EAC7E,GAAIl8I,EAAIk8I,EAAI,MAAM,IAAI,EAErB,OAAAx4H,GAAK,GAAG1wB,GAAK,QAAQ,aAAa,MAAM,MAAMgN,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,IAAI,MAAMA,EAAE,CAAC,CAAC,CAAC,EAClF0jB,EAAIA,EAAE,QAAQ,WAAW,SAASi/H,EAAI9zC,EAAI,CAEzC,MAAO,IAAMA,EAAK,KAAK,IAAK,MAAM7uG,EAAE,CAAC,CAAC,EAAE,OAAO6uG,EAAG,MAAM,CAAI,GACtDqtC,EAAI,QAAQ,IAAI,IAAM,GAAKx4H,EAAIA,EAAE,QAAQ,OAAO,GAAG,EAG3D,GADAw4H,EAAMA,EAAI,QAAQ,YAAa,IAAI,EAC/Bl8I,EAAIk8I,EAAI,MAAM,cAAc,EAC/B,OAAOtyC,GAAQ,GAAGk5C,GAAM,QAAQ,kBAAkB,KAAK,EAAE,QAAQ,YAAY,KAAK,EAAE,QAAQ,OAAO9iJ,EAAE,CAAC,EAAE,OAAO,KAAK,GAAG,EAExH,GAAIA,EAAIk8I,EAAI,MAAM,mBAAmB,EAAI,OAAOtyC,EAAO,SAAU,GAAGk5C,GACpE,GAAI9iJ,EAAIk8I,EAAI,MAAM,mBAAmB,EACpC,OAAOlpJ,EAAM,EAAI,IAAM,cAAcuE,EAAM2kJ,EAAK,CAAClpJ,CAAG,EAAI,SAAU,GAAGA,CAAG,EAAK,IAAM,KAAK,IAAIgN,EAAE,CAAC,EAAE,MAAM,EAExG,GAAIA,EAAIk8I,EAAI,MAAM,UAAU,EAAI,OAAO,cAAc3kJ,EAAK2kJ,EAAI,QAAQ,SAAS,EAAE,EAAElpJ,CAAG,EACtF,GAAIgN,EAAIk8I,EAAI,MAAM,yBAAyB,EAC1C,OAAAx4H,EAAI,QAAQ,cAAcnsB,EAAM2kJ,EAAI,QAAQ,SAAS,EAAE,EAAGlpJ,CAAG,CAAC,EAC9DuwJ,EAAK,EACE,QAAQ,QAAQrH,EAAI,QAAQ,MAAM,EAAE,CAAC,EAAE,QAAQ,QAAQ,SAASpwJ,EAAE,CAAC,OAAOy3J,EAAG7/H,EAAE,OAAOA,EAAE,OAAO6/H,GAAI,EAAEz3J,IAAI,IAAI,IAAI,EAAG,CAAC,CAAC,EAE9H,GAAGowJ,EAAI,MAAM,KAAK,EACjB,OAAAx4H,EAAI,cAAcnsB,EAAM,aAAcvE,CAAG,EAClC,IAAM0wB,EAAE,OAAO,EAAE,CAAC,EAAI,KAAOA,EAAE,OAAO,EAAG,CAAC,EAAI,IAAMA,EAAE,OAAO,CAAC,EAEtE,IAAI+/H,EAAK,GACT,GAAIzjJ,EAAIk8I,EAAI,MAAM,6BAA6B,EAC9C,OAAAqH,EAAK,KAAK,IAAiBvjJ,EAAE,CAAC,EAAS,OAAO,CAAC,EAC/CwjJ,EAAK,SAASV,EAAM,KAAK,IAAI,GAAGS,CAAE,EAAE,EAAG,EAAK,EAC5C7/H,EAAI,GAAKkmF,EACT65C,EAAK,UAAU,IAAkBzjJ,EAAE,CAAC,EAAUwjJ,EAAG,CAAC,CAAC,EAChDC,EAAG,OAAOA,EAAG,OAAO,CAAC,GAAK,MAAKA,EAAKA,EAAG,OAAO,EAAEA,EAAG,OAAO,CAAC,EAAI,KAClE//H,GAAK+/H,EAAkBzjJ,EAAE,CAAC,EAAW,IAAmBA,EAAE,CAAC,EAC3DyjJ,EAAK,MAAMD,EAAG,CAAC,EAAED,CAAE,EAChBE,EAAG,OAASzjJ,EAAE,CAAC,EAAE,SAAQyjJ,EAAK,MAAMzjJ,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,EAAE,OAAOyjJ,EAAG,MAAM,CAAC,EAAIA,GAC7E//H,GAAK+/H,EACE//H,EAER,GAAI1jB,EAAIk8I,EAAI,MAAM,+BAA+B,EAChD,OAAAqH,EAAK,KAAK,IAAI,KAAK,IAAIvjJ,EAAE,CAAC,EAAE,OAAQA,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAClDwjJ,EAAK,SAASV,EAAM,KAAK,IAAI,GAAGS,CAAE,EAAE,EAAG,EAAI,EACpC35C,GAAQ45C,EAAG,CAAC,IAAIA,EAAG,CAAC,EAAI,GAAK,MAAQ,KAAOA,EAAG,CAAC,EAAI,KAAKA,EAAG,CAAC,EAAED,CAAE,EAAIvjJ,EAAE,CAAC,EAAI,IAAMA,EAAE,CAAC,EAAI,MAAMwjJ,EAAG,CAAC,EAAED,CAAE,EAAG,KAAK,IAAK,EAAEA,EAAG,EAAIvjJ,EAAE,CAAC,EAAE,OAASA,EAAE,CAAC,EAAE,MAAM,GAE9J,GAAIA,EAAIk8I,EAAI,MAAM,UAAU,EAE3B,OADAx4H,EAAI,GAAK1wB,EACNkpJ,EAAI,QAAUx4H,EAAE,OAAeA,EAC3B,MAAMw4H,EAAI,OAAO,EAAEA,EAAI,OAAOx4H,EAAE,MAAM,CAAC,EAAIA,EAEnD,GAAI1jB,EAAIk8I,EAAI,MAAM,oBAAoB,EAAI,CACzCx4H,EAAI,GAAK1wB,EAAI,QAAQ,KAAK,IAAIgN,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,YAAY,IAAI,EACvEujJ,EAAK7/H,EAAE,QAAQ,GAAG,EAClB,IAAIggI,EAAOxH,EAAI,QAAQ,GAAG,EAAIqH,EAAII,EAAOzH,EAAI,OAASx4H,EAAE,OAASggI,EACjE,OAAO,MAAMxH,EAAI,OAAO,EAAEwH,CAAI,EAAIhgI,EAAIw4H,EAAI,OAAOA,EAAI,OAAOyH,CAAI,CAAC,CACjE,CACD,GAAI3jJ,EAAIk8I,EAAI,MAAM,oBAAoB,EACrC,OAAOlpJ,EAAM,EAAI,IAAM,cAAcuE,EAAM2kJ,EAAK,CAAClpJ,CAAG,EAAI,SAAS,GAAGA,CAAG,EAAE,QAAQ,aAAa,KAAK,EAAE,QAAQ,QAAQ,SAAS2vJ,EAAI,CAAE,MAAO,OAASA,EAAG,OAAS,EAAI,KAAK,EAAE,EAAEA,EAAG,MAAM,EAAI,IAAMA,CAAK,GAAI,IAAM,KAAK,EAAE3iJ,EAAE,CAAC,EAAE,MAAM,EAElO,OAAOk8I,EAAG,CACT,IAAK,UACL,IAAK,SACL,IAAK,QAAS,IAAIpwJ,EAAI,SAAS,GAAGg3J,CAAI,EAAG,OAAOh3J,IAAM,IAAM89G,EAAO99G,EAAI,GACvE,QACC,GAAGowJ,EAAI,MAAM,WAAW,EAAG,OAAO,cAAc3kJ,EAAM2kJ,EAAI,MAAM,EAAEA,EAAI,YAAY,GAAG,CAAC,EAAGlpJ,CAAG,EAAI,MAAMkpJ,EAAI,MAAMA,EAAI,YAAY,GAAG,CAAC,CAAC,CACtI,CACD,MAAM,IAAI,MAAM,uBAAyBA,EAAM,GAAG,CACnD,CACA,SAAS,UAAU3kJ,EAAiB2kJ,EAAgBlpJ,EAA2B,CAC9E,OAAQA,EAAI,KAAOA,EAAM,cAAcuE,EAAM2kJ,EAAKlpJ,CAAG,EAAI,cAAcuE,EAAM2kJ,EAAKlpJ,CAAG,CACtF,CACA,SAAS,cAAckpJ,EAAkC,CAGxD,QAFIlnJ,EAAwB,GACxB4uJ,EAAS,GACLt3J,EAAI,EAAGkH,EAAI,EAAGlH,EAAI4vJ,EAAI,OAAQ,EAAE5vJ,EAAG,OAAe4vJ,EAAI,WAAW5vJ,CAAC,EAAC,CAC1E,IAAK,IACJs3J,EAAS,CAACA,EAAQ,MACnB,IAAK,IAAI,IAAK,IAAI,IAAK,IACtB,EAAEt3J,EAAG,MACN,IAAK,IACJ0I,EAAIA,EAAI,MAAM,EAAIknJ,EAAI,OAAO1oJ,EAAElH,EAAEkH,CAAC,EAClCA,EAAIlH,EAAE,CACP,CAED,GADA0I,EAAIA,EAAI,MAAM,EAAIknJ,EAAI,OAAO1oJ,CAAC,EAC3BowJ,IAAW,GAAM,MAAM,IAAI,MAAM,WAAa1H,EAAM,wBAAwB,EAC/E,OAAOlnJ,CACR,CAEA,IAAI,YAAc,kCAClB,SAAS,YAAYknJ,EAA4B,CAEhD,QADI5vJ,EAAI,EAAeuC,EAAI,GAAI60B,EAAI,GAC7Bp3B,EAAI4vJ,EAAI,QACb,OAAQrtJ,EAAIqtJ,EAAI,OAAO5vJ,CAAC,EAAC,CACxB,IAAK,IAAQ,cAAc4vJ,EAAK5vJ,CAAC,IAAGA,GAAI,GAAGA,IAAK,MAChD,IAAK,IAAK,KAAa4vJ,EAAI,WAAW,EAAE5vJ,CAAC,IAAO,IAAMA,EAAI4vJ,EAAI,QAAQ,CAAY,EAAE5vJ,EAAG,MACvF,IAAK,KAAMA,GAAG,EAAG,MACjB,IAAK,IAAKA,GAAG,EAAG,MAChB,IAAK,IAAK,EAAEA,EAAG,MACf,IAAK,IAAK,IAAK,IACd,GAAG4vJ,EAAI,OAAO5vJ,EAAE,CAAC,IAAM,KAAO4vJ,EAAI,OAAO5vJ,EAAE,CAAC,IAAM,IAAK,MAAO,GAE/D,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAEvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,GAC7E,IAAK,IAAK,IAAK,IAAK,IAAK,IAGxB,GAFG4vJ,EAAI,OAAO5vJ,EAAG,CAAC,EAAE,YAAa,IAAK,OACnC4vJ,EAAI,OAAO5vJ,EAAG,CAAC,EAAE,YAAa,IAAK,SACnC4vJ,EAAI,OAAO5vJ,EAAG,CAAC,EAAE,YAAa,IAAK,QAAS,MAAO,GACtD,EAAEA,EAAG,MACN,IAAK,IAEJ,IADAo3B,EAAI70B,EACEqtJ,EAAI,OAAO5vJ,GAAG,IAAM,KAAOA,EAAI4vJ,EAAI,QAAQx4H,GAAKw4H,EAAI,OAAO5vJ,CAAC,EAClE,GAAGo3B,EAAE,MAAM,WAAW,EAAG,MAAO,GAChC,MACD,IAAK,IAEL,IAAK,IAAK,IAAK,IACd,KAAMp3B,EAAI4vJ,EAAI,SAAW,YAAY,QAAQrtJ,EAAEqtJ,EAAI,OAAO,EAAE5vJ,CAAC,CAAC,EAAI,IAAOuC,GAAG,MAAQqtJ,EAAI,OAAO5vJ,EAAE,CAAC,GAAK,KAAO,KAAK,QAAQ4vJ,EAAI,OAAO5vJ,EAAE,CAAC,CAAC,EAAE,KAAK,CACjJ,MACD,IAAK,IAAK,KAAM4vJ,EAAI,OAAO,EAAE5vJ,CAAC,IAAMuC,GAAE,CAAc,MACpD,IAAK,IAAK,EAAEvC,GAAM4vJ,EAAI,OAAO5vJ,CAAC,GAAK,KAAO4vJ,EAAI,OAAO5vJ,CAAC,GAAK,MAAK,EAAEA,EAAG,MACrE,IAAK,IAAK,IAAK,IAAK,EAAEA,EAAG,MACzB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACpF,KAAMA,EAAI4vJ,EAAI,QAAU,aAAa,QAAQA,EAAI,OAAO,EAAE5vJ,CAAC,CAAC,EAAI,IAAG,CAAc,MAClF,IAAK,IAAK,EAAEA,EAAG,MACf,QAAS,EAAEA,EAAG,KACd,CAEF,MAAO,EACR,CAEA,SAAS,SAAS4vJ,EAAgBvhJ,EAAWuxC,EAAc23G,EAAiB,CAI3E,QAHI7uJ,EAAM,CAAE,EAAE0uB,EAAI,GAAIp3B,EAAI,EAAGuC,EAAI,GAAIirH,EAAI,IAAKgqC,EAAItwJ,EAAG2vJ,EACjDjuE,EAAG,IAED5oF,EAAI4vJ,EAAI,QACb,OAAQrtJ,EAAIqtJ,EAAI,OAAO5vJ,CAAC,EAAC,CACxB,IAAK,IACJ,GAAG,CAAC,cAAc4vJ,EAAK5vJ,CAAC,EAAG,MAAM,IAAI,MAAM,0BAA4BuC,EAAI,OAAQqtJ,CAAG,EACtFlnJ,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE,SAAS,EAAG1I,GAAG,EAAG,MAC/C,IAAK,IACJ,IAAIo3B,EAAE,IAAIy/H,EAAGjH,EAAI,WAAW,EAAE5vJ,CAAC,KAAO,IAAMA,EAAI4vJ,EAAI,QAASx4H,GAAK,OAAO,aAAay/H,CAAE,EACxFnuJ,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE0uB,CAAC,EAAG,EAAEp3B,EAAG,MACtC,IAAK,KAAM,IAAI46B,EAAIg1H,EAAI,OAAO,EAAE5vJ,CAAC,EAAGuhB,EAAKqZ,IAAM,KAAOA,IAAM,IAAOA,EAAI,IACtElyB,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE6Y,EAAG,EAAEqZ,CAAC,EAAG,EAAE56B,EAAG,MACpC,IAAK,IAAK0I,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE,GAAG,EAAG1I,GAAG,EAAG,MAClD,IAAK,IACJ0I,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE2F,CAAC,EAAG,EAAErO,EAAG,MACtC,IAAK,IAAK,IAAK,IACd,GAAG4vJ,EAAI,OAAO5vJ,EAAE,CAAC,IAAM,KAAO4vJ,EAAI,OAAO5vJ,EAAE,CAAC,IAAM,IAAK,CACtD,GAAGw3J,GAAI,OAAQA,EAAG,oBAAoBnpJ,EAAGuxC,EAAMgwG,EAAI,OAAO5vJ,EAAE,CAAC,IAAM,GAAG,EAAMw3J,GAAI,MAAM,MAAO,GAC7F9uJ,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAEknJ,EAAI,OAAO5vJ,EAAE,CAAC,CAAC,EAAGwtH,EAAMjrH,EAAGvC,GAAG,EAAG,KAC7D,CAEF,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtDuC,EAAIA,EAAE,cAEP,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAEhE,GADG8L,EAAI,GACJmpJ,GAAI,OAAQA,EAAG,oBAAoBnpJ,EAAGuxC,CAAI,EAAM43G,GAAI,MAAM,MAAO,GAC7D,IAAPpgI,EAAI70B,EAAS,EAAEvC,EAAI4vJ,EAAI,QAAUA,EAAI,OAAO5vJ,CAAC,EAAE,YAAW,IAAOuC,GAAG60B,GAAG70B,EACpEA,IAAM,KAAOirH,EAAI,YAAW,IAAO,MAAKjrH,EAAI,KAC5CA,IAAM,MAAKA,EAAIqmF,GAClBlgF,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAEnG,EAAG,EAAE60B,CAAC,EAAGo2F,EAAMjrH,EAAG,MACxC,IAAK,IAAK,IAAK,IAAK,IAAK,IACxB,IAAIw3F,EAAE,CAAC,EAAEx3F,EAAG,EAAEA,CAAC,EAMf,GALGi1J,GAAI,OAAMA,EAAG,oBAAoBnpJ,EAAGuxC,CAAI,GACxCgwG,EAAI,OAAO5vJ,EAAG,CAAC,EAAE,YAAa,IAAK,OAAYw3J,GAAI,OAAMz9D,EAAE,EAAIy9D,EAAG,GAAK,GAAK5H,EAAI,OAAO5vJ,EAAE,CAAC,EAAIuC,GAAGw3F,EAAE,EAAI,IAAKnR,EAAG,IAAI5oF,GAAG,GACjH4vJ,EAAI,OAAO5vJ,EAAE,CAAC,EAAE,YAAW,IAAO,SAAcw3J,GAAI,OAAMz9D,EAAE,EAAIy9D,EAAG,GAAK,GAAK,KAAO,MAAMz9D,EAAE,EAAI,IAAK/5F,GAAG,EAAG4oF,EAAG,KAC9GgnE,EAAI,OAAO5vJ,EAAE,CAAC,EAAE,YAAW,IAAO,SAAcw3J,GAAI,OAAMz9D,EAAE,EAAIy9D,EAAG,GAAK,GAAK,KAAO,MAAMz9D,EAAE,EAAI,IAAK/5F,GAAG,EAAG4oF,EAAG,MAC/GmR,EAAE,EAAI,IAAK,EAAE/5F,GACjBw3J,GAAI,MAAQz9D,EAAE,IAAM,IAAK,MAAO,GACnCrxF,EAAIA,EAAI,MAAM,EAAIqxF,EAAGyzB,EAAMjrH,EAAG,MAC/B,IAAK,IAEJ,IADA60B,EAAI70B,EACEqtJ,EAAI,OAAO5vJ,GAAG,IAAM,KAAOA,EAAI4vJ,EAAI,QAAQx4H,GAAKw4H,EAAI,OAAO5vJ,CAAC,EAClE,GAAGo3B,EAAE,MAAM,EAAE,IAAM,IAAK,KAAM,4BAA8BA,EAAI,IAChE,GAAGA,EAAE,MAAM,WAAW,EAAG,CACxB,GAAGogI,GAAI,OAAQA,EAAG,oBAAoBnpJ,EAAGuxC,CAAI,EAAM43G,GAAI,MAAM,MAAO,GACpE9uJ,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE0uB,EAAE,YAAW,CAAE,EAC3Co2F,EAAMp2F,EAAE,OAAO,CAAC,CAChB,MAASA,EAAE,QAAQ,GAAG,EAAI,KAC1BA,GAAKA,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,IACnC,YAAYw4H,CAAG,IAAGlnJ,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAI,EAAE0uB,CAAC,IAEnD,MAED,IAAK,IACJ,GAAGogI,GAAM,KAAM,CACP,IAAPpgI,EAAI70B,EAAS,EAAEvC,EAAI4vJ,EAAI,SAAWrtJ,EAAEqtJ,EAAI,OAAO5vJ,CAAC,KAAO,KAAKo3B,GAAK70B,EACjEmG,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE0uB,CAAC,EAAG,KAChC,CAEF,IAAK,IAAK,IAAK,IACP,IAAPA,EAAI70B,EAAS,EAAEvC,EAAI4vJ,EAAI,QAAU,YAAY,QAAQrtJ,EAAEqtJ,EAAI,OAAO5vJ,CAAC,CAAC,EAAI,IAAIo3B,GAAK70B,EACjFmG,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE0uB,CAAC,EAAG,MACjC,IAAK,IACG,IAAPA,EAAI70B,EAASqtJ,EAAI,OAAO,EAAE5vJ,CAAC,IAAMuC,GAAG60B,GAAG70B,EACvCmG,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAEnG,EAAG,EAAE60B,CAAC,EAAGo2F,EAAMjrH,EAAG,MACxC,IAAK,IAAK,EAAEvC,GAAM4vJ,EAAI,OAAO5vJ,CAAC,GAAK,KAAO4vJ,EAAI,OAAO5vJ,CAAC,GAAK,MAAK,EAAEA,EAAG,MACrE,IAAK,IAAK,IAAK,IAAK0I,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAG6uJ,IAAO,EAAE,IAAIh1J,EAAI,EAAEA,CAAC,EAAG,EAAEvC,EAAG,MACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7E,IAAPo3B,EAAI70B,EAASvC,EAAI4vJ,EAAI,QAAU,aAAa,QAAQA,EAAI,OAAO,EAAE5vJ,CAAC,CAAC,EAAI,IAAIo3B,GAAGw4H,EAAI,OAAO5vJ,CAAC,EAC1F0I,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE0uB,CAAC,EAAG,MACjC,IAAK,IAAK1uB,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAEnG,EAAG,EAAEA,CAAC,EAAG,EAAEvC,EAAG,MAC7C,IAAK,IAAK0I,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE,GAAG,EAAG,EAAE1I,EAAG,MACjD,QACC,GAAG,wCAAwC,QAAQuC,CAAC,IAAM,GAAI,MAAM,IAAI,MAAM,0BAA4BA,EAAI,OAASqtJ,CAAG,EAC1HlnJ,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAEnG,CAAC,EAAG,EAAEvC,EAAG,KACtC,CAIF,IAAIipH,EAAK,EAAG8sC,EAAM,EAAG0B,EACrB,IAAIz3J,EAAE0I,EAAI,OAAO,EAAG8kH,EAAI,IAAKxtH,GAAK,EAAG,EAAEA,EACtC,OAAO0I,EAAI1I,CAAC,EAAE,EAAC,CACd,IAAK,IAAK,IAAK,IAAK0I,EAAI1I,CAAC,EAAE,EAAI4oF,EAAI4kC,EAAI,IAAQvE,EAAK,IAAGA,EAAK,GAAG,MAC/D,IAAK,KACAwuC,EAAI/uJ,EAAI1I,CAAC,EAAE,EAAE,MAAM,OAAO,KAAI+1J,EAAI,KAAK,IAAIA,EAAI0B,EAAI,CAAC,EAAE,OAAO,CAAC,GAC/DxuC,EAAK,IAAGA,EAAK,GAEjB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAKuE,EAAI9kH,EAAI1I,CAAC,EAAE,EAAG,MACtD,IAAK,IAAQwtH,IAAQ,MAAO9kH,EAAI1I,CAAC,EAAE,EAAI,IAAQipH,EAAK,IAAGA,EAAK,IAAK,MACjE,IAAK,IACJ,MACD,IAAK,IACDA,EAAK,GAAKvgH,EAAI1I,CAAC,EAAE,EAAE,MAAM,MAAM,IAAGipH,EAAK,GACvCA,EAAK,GAAKvgH,EAAI1I,CAAC,EAAE,EAAE,MAAM,MAAM,IAAGipH,EAAK,GACvCA,EAAK,GAAKvgH,EAAI1I,CAAC,EAAE,EAAE,MAAM,MAAM,IAAGipH,EAAK,EAC3C,CAGF,OAAOA,EAAE,CACR,IAAK,GAAG,MACR,IAAK,GAEDuuC,EAAG,GAAK,KAAOA,EAAG,EAAI,EAAG,EAAEA,EAAG,GAC9BA,EAAG,GAAM,KAAMA,EAAG,EAAI,EAAG,EAAEA,EAAG,GAC9BA,EAAG,GAAM,KAAMA,EAAG,EAAI,EAAG,EAAEA,EAAG,GACjC,MACD,IAAK,GAEDA,EAAG,GAAK,KAAOA,EAAG,EAAI,EAAG,EAAEA,EAAG,GAC9BA,EAAG,GAAM,KAAMA,EAAG,EAAI,EAAG,EAAEA,EAAG,GACjC,KACD,CAGD,IAAIE,EAAO,GAAIC,EACf,IAAI33J,EAAE,EAAGA,EAAI0I,EAAI,OAAQ,EAAE1I,EAC1B,OAAO0I,EAAI1I,CAAC,EAAE,EAAC,CACd,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACxC,IAAK,IAAK0I,EAAI1I,CAAC,EAAE,EAAI,GAAI0I,EAAI1I,CAAC,EAAE,EAAI,IAAK,MACzC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAE9F0I,EAAI1I,CAAC,EAAE,EAAI,eAAe0I,EAAI1I,CAAC,EAAE,EAAE,WAAW,CAAC,EAAG0I,EAAI1I,CAAC,EAAE,EAAGw3J,EAAIzB,CAAG,EACnErtJ,EAAI1I,CAAC,EAAE,EAAI,IAAK,MACjB,IAAK,IAAK,IAAK,IAEd,IADA23J,EAAK33J,EAAE,EACD0I,EAAIivJ,CAAE,GAAK,QACfp1J,EAAEmG,EAAIivJ,CAAE,EAAE,KAAO,KAAOp1J,IAAM,MAC7BA,IAAM,KAAOA,IAAM,MAAQmG,EAAIivJ,EAAG,CAAC,GAAK,OAASjvJ,EAAIivJ,EAAG,CAAC,EAAE,IAAM,KAAOjvJ,EAAIivJ,EAAG,CAAC,EAAE,IAAM,KAAOjvJ,EAAIivJ,EAAG,CAAC,EAAE,IAAM,MAChHjvJ,EAAI1I,CAAC,EAAE,IAAM,MAAQuC,IAAM,KAAOA,IAAM,KAAOA,IAAM,MACrDA,IAAM,MAAQmG,EAAIivJ,CAAE,EAAE,IAAM,KAAOjvJ,EAAIivJ,CAAE,EAAE,IAAM,KAAOjvJ,EAAIivJ,EAAG,CAAC,GAAK,MAAQjvJ,EAAIivJ,EAAG,CAAC,EAAE,GAAK,OAE7FjvJ,EAAI1I,CAAC,EAAE,GAAK0I,EAAIivJ,CAAE,EAAE,EACpBjvJ,EAAIivJ,CAAE,EAAI,CAAC,EAAE,GAAI,EAAE,GAAG,EAAG,EAAEA,EAE5BD,GAAQhvJ,EAAI1I,CAAC,EAAE,EACfA,EAAI23J,EAAG,EAAG,MACX,IAAK,IAAKjvJ,EAAI1I,CAAC,EAAE,EAAI,IAAK0I,EAAI1I,CAAC,EAAE,EAAI,YAAYqO,EAAEuxC,CAAI,EAAG,KAC1D,CAEF,IAAIg4G,EAAK,GAAIC,EAAKC,EAClB,GAAGJ,EAAK,OAAS,EAAG,CAChBA,EAAK,WAAW,CAAC,GAAK,IACxBG,EAAOxpJ,EAAE,GAAGqpJ,EAAK,WAAW,CAAC,IAAM,GAAK,CAACrpJ,EAAIA,EAC7CypJ,EAAO,UAAU,IAAKJ,EAAMG,CAAG,IAE/BA,EAAOxpJ,EAAE,GAAKkpJ,EAAO,EAAI,CAAClpJ,EAAIA,EAC9BypJ,EAAO,UAAU,IAAKJ,EAAMG,CAAG,EAC5BA,EAAM,GAAKnvJ,EAAI,CAAC,GAAKA,EAAI,CAAC,EAAE,GAAK,MACnCovJ,EAAOA,EAAK,OAAO,CAAC,EACpBpvJ,EAAI,CAAC,EAAE,EAAI,IAAMA,EAAI,CAAC,EAAE,IAG1BivJ,EAAGG,EAAK,OAAO,EACf,IAAIC,GAAQrvJ,EAAI,OAChB,IAAI1I,EAAE,EAAGA,EAAI0I,EAAI,OAAQ,EAAE1I,EAAG,GAAG0I,EAAI1I,CAAC,GAAK,MAAQ0I,EAAI1I,CAAC,EAAE,GAAK,KAAO0I,EAAI1I,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAI,GAAI,CAAE+3J,GAAQ/3J,EAAG,KAAQ,CACvH,IAAIg4J,GAAMtvJ,EAAI,OACd,GAAGqvJ,KAAUrvJ,EAAI,QAAUovJ,EAAK,QAAQ,GAAG,IAAM,GAAI,CACpD,IAAI93J,EAAE0I,EAAI,OAAO,EAAG1I,GAAI,EAAE,EAAEA,EACxB0I,EAAI1I,CAAC,GAAK,MAAQ,KAAK,QAAQ0I,EAAI1I,CAAC,EAAE,CAAC,IAAM,KAC7C23J,GAAIjvJ,EAAI1I,CAAC,EAAE,EAAE,OAAO,GAAK23J,GAAMjvJ,EAAI1I,CAAC,EAAE,EAAE,OAAQ0I,EAAI1I,CAAC,EAAE,EAAI83J,EAAK,OAAOH,EAAG,EAAGjvJ,EAAI1I,CAAC,EAAE,EAAE,MAAM,GACvF23J,EAAK,EAAGjvJ,EAAI1I,CAAC,EAAE,EAAI,IACpB0I,EAAI1I,CAAC,EAAE,EAAI83J,EAAK,OAAO,EAAGH,EAAG,CAAC,EAAGA,EAAK,IAC7CjvJ,EAAI1I,CAAC,EAAE,EAAI,IACXg4J,GAAQh4J,GAEN23J,GAAI,GAAKK,GAAMtvJ,EAAI,SAAQA,EAAIsvJ,EAAK,EAAE,EAAIF,EAAK,OAAO,EAAEH,EAAG,CAAC,EAAIjvJ,EAAIsvJ,EAAK,EAAE,EAC9E,SACOD,KAAUrvJ,EAAI,QAAUovJ,EAAK,QAAQ,GAAG,IAAM,GAAI,CAEzD,IADAH,EAAKG,EAAK,QAAQ,GAAG,EAAE,EACnB93J,EAAE+3J,GAAO/3J,GAAI,EAAG,EAAEA,EACrB,GAAG,EAAA0I,EAAI1I,CAAC,GAAK,MAAQ,KAAK,QAAQ0I,EAAI1I,CAAC,EAAE,CAAC,IAAM,IAGhD,KAFAkH,EAAEwB,EAAI1I,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,IAAIA,IAAI+3J,GAAMrvJ,EAAI1I,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE0I,EAAI1I,CAAC,EAAE,EAAE,OAAO,EAC9E43J,EAAKlvJ,EAAI1I,CAAC,EAAE,EAAE,OAAOkH,EAAE,CAAC,EAClBA,GAAG,EAAG,EAAEA,EACVywJ,GAAI,IAAMjvJ,EAAI1I,CAAC,EAAE,EAAE,OAAOkH,CAAC,IAAM,KAAOwB,EAAI1I,CAAC,EAAE,EAAE,OAAOkH,CAAC,IAAM,OAAM0wJ,EAAKE,EAAK,OAAOH,GAAI,EAAIC,GAElGlvJ,EAAI1I,CAAC,EAAE,EAAI43J,EACXlvJ,EAAI1I,CAAC,EAAE,EAAI,IACXg4J,GAAQh4J,EAIT,IAFG23J,GAAI,GAAKK,GAAMtvJ,EAAI,SAAQA,EAAIsvJ,EAAK,EAAE,EAAIF,EAAK,OAAO,EAAEH,EAAG,CAAC,EAAIjvJ,EAAIsvJ,EAAK,EAAE,GAC9EL,EAAKG,EAAK,QAAQ,GAAG,EAAE,EACnB93J,EAAE+3J,GAAO/3J,EAAE0I,EAAI,OAAQ,EAAE1I,EAC5B,GAAG,EAAA0I,EAAI1I,CAAC,GAAK,MAAS,MAAM,QAAQ0I,EAAI1I,CAAC,EAAE,CAAC,IAAM,IAAMA,IAAM+3J,IAG9D,KAFA7wJ,EAAEwB,EAAI1I,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,IAAIA,IAAI+3J,GAAMrvJ,EAAI1I,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,EAC9D43J,EAAKlvJ,EAAI1I,CAAC,EAAE,EAAE,OAAO,EAAEkH,CAAC,EAClBA,EAAEwB,EAAI1I,CAAC,EAAE,EAAE,OAAQ,EAAEkH,EACvBywJ,EAAGG,EAAK,SAAQF,GAAME,EAAK,OAAOH,GAAI,GAE1CjvJ,EAAI1I,CAAC,EAAE,EAAI43J,EACXlvJ,EAAI1I,CAAC,EAAE,EAAI,IACXg4J,GAAQh4J,EAET,CACD,CACD,IAAIA,EAAE,EAAGA,EAAE0I,EAAI,OAAQ,EAAE1I,EAAM0I,EAAI1I,CAAC,GAAK,MAAQ,KAAK,QAAQ0I,EAAI1I,CAAC,EAAE,CAAC,EAAE,KACvE63J,EAAON,EAAM,GAAKlpJ,EAAI,GAAKrO,EAAE,GAAK0I,EAAI1I,EAAE,CAAC,EAAE,IAAM,IAAM,CAACqO,EAAEA,EAC1D3F,EAAI1I,CAAC,EAAE,EAAI,UAAU0I,EAAI1I,CAAC,EAAE,EAAG0I,EAAI1I,CAAC,EAAE,EAAG63J,CAAG,EAC5CnvJ,EAAI1I,CAAC,EAAE,EAAI,KAEZ,IAAIi4J,GAAS,GACb,IAAIj4J,EAAE,EAAGA,IAAM0I,EAAI,OAAQ,EAAE1I,EAAM0I,EAAI1I,CAAC,GAAK,OAAMi4J,IAAUvvJ,EAAI1I,CAAC,EAAE,GACpE,OAAOi4J,EACR,CAEA,IAAI,SAAW,wCACf,SAAS,QAAQ5pJ,EAAGqoJ,EAAI,CACvB,GAAGA,GAAM,KAAM,MAAO,GACtB,IAAIwB,EAAS,WAAWxB,EAAG,CAAC,CAAC,EAC7B,OAAOA,EAAG,CAAC,EAAC,CACX,IAAK,IAAM,GAAGroJ,GAAK6pJ,EAAQ,MAAO,GAAM,MACxC,IAAK,IAAM,GAAG7pJ,EAAK6pJ,EAAQ,MAAO,GAAM,MACxC,IAAK,IAAM,GAAG7pJ,EAAK6pJ,EAAQ,MAAO,GAAM,MACxC,IAAK,KAAM,GAAG7pJ,GAAK6pJ,EAAQ,MAAO,GAAM,MACxC,IAAK,KAAM,GAAG7pJ,GAAK6pJ,EAAQ,MAAO,GAAM,MACxC,IAAK,KAAM,GAAG7pJ,GAAK6pJ,EAAQ,MAAO,GAAM,KACxC,CACD,MAAO,EACR,CACA,SAAS,WAAWr7H,EAAcxuB,EAAW,CAC5C,IAAIuhJ,EAAM,cAAc/yH,CAAC,EACrBnuB,EAAIkhJ,EAAI,OAAQuI,EAAMvI,EAAIlhJ,EAAE,CAAC,EAAE,QAAQ,GAAG,EAE9C,GADGA,EAAE,GAAKypJ,EAAI,IAAI,EAAEzpJ,EACjBkhJ,EAAI,OAAS,EAAG,MAAM,IAAI,MAAM,iCAAmCA,EAAI,KAAK,GAAG,EAAI,GAAG,EACzF,GAAG,OAAOvhJ,GAAM,SAAU,MAAO,CAAC,EAAGuhJ,EAAI,SAAW,GAAKuI,EAAI,GAAGvI,EAAIA,EAAI,OAAO,CAAC,EAAE,GAAG,EACrF,OAAOA,EAAI,OAAM,CAChB,IAAK,GAAGA,EAAMuI,EAAI,GAAK,CAAC,UAAW,UAAW,UAAWvI,EAAI,CAAC,CAAC,EAAI,CAACA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAG,GAAG,EAAG,MAClG,IAAK,GAAGA,EAAMuI,EAAI,GAAK,CAACvI,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,EAAI,CAACA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAG,GAAG,EAAG,MACzF,IAAK,GAAGA,EAAMuI,EAAI,GAAK,CAACvI,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,EAAI,CAACA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAG,GAAG,EAAG,KAEzF,CACD,IAAIsH,EAAK7oJ,EAAI,EAAIuhJ,EAAI,CAAC,EAAIvhJ,EAAI,EAAIuhJ,EAAI,CAAC,EAAIA,EAAI,CAAC,EAChD,GAAGA,EAAI,CAAC,EAAE,QAAQ,GAAG,IAAM,IAAMA,EAAI,CAAC,EAAE,QAAQ,GAAG,IAAM,GAAI,MAAO,CAAClhJ,EAAGwoJ,CAAE,EAC1E,GAAGtH,EAAI,CAAC,EAAE,MAAM,SAAS,GAAK,MAAQA,EAAI,CAAC,EAAE,MAAM,SAAS,GAAK,KAAM,CACtE,IAAI3oF,EAAK2oF,EAAI,CAAC,EAAE,MAAM,QAAQ,EAC1B1oF,EAAK0oF,EAAI,CAAC,EAAE,MAAM,QAAQ,EAC9B,OAAO,QAAQvhJ,EAAG44D,CAAE,EAAI,CAACv4D,EAAGkhJ,EAAI,CAAC,CAAC,EAAI,QAAQvhJ,EAAG64D,CAAE,EAAI,CAACx4D,EAAGkhJ,EAAI,CAAC,CAAC,EAAI,CAAClhJ,EAAGkhJ,EAAI3oF,GAAM,MAAQC,GAAM,KAAO,EAAI,CAAC,CAAC,CAC9G,CACD,MAAO,CAACx4D,EAAGwoJ,CAAE,CACd,CACA,SAAS,WAAWtH,EAAsBvhJ,EAAU+oB,EAAY,CAC5DA,GAAK,OAAMA,EAAI,IAClB,IAAI8+H,EAAO,GACX,OAAO,OAAOtG,EAAG,CAChB,IAAK,SACDA,GAAO,UAAYx4H,EAAE,OAAQ8+H,EAAO9+H,EAAE,OACpC8+H,EAAOtG,EACZ,MACD,IAAK,SACDA,GAAO,IAAMx4H,EAAE,OAAQ8+H,EAAO9+H,EAAE,OAC9B8+H,GAAQ9+H,EAAE,OAAS,KAAQA,EAAE,MAAiB,WAAWw4H,CAAG,EAC9DsG,GAAQ,OAAMA,EAAQ9+H,EAAE,OAASA,EAAE,MAAM,gBAAgBw4H,CAAG,CAAC,GAAM,UAAU,gBAAgBA,CAAG,CAAC,GACjGsG,GAAQ,OAAMA,EAAO,gBAAgBtG,CAAG,GAAK,WAChD,KACD,CACD,GAAG,cAAcsG,EAAK,CAAC,EAAG,OAAO,YAAY7nJ,EAAG+oB,CAAC,EAC9C/oB,aAAa,OAAMA,EAAI,cAAcA,EAAG+oB,EAAE,QAAQ,GACrD,IAAIyF,EAAI,WAAWq5H,EAAM7nJ,CAAC,EAC1B,GAAG,cAAcwuB,EAAE,CAAC,CAAC,EAAG,OAAO,YAAYxuB,EAAG+oB,CAAC,EAC/C,GAAG/oB,IAAM,GAAMA,EAAI,eAAgBA,IAAM,GAAOA,EAAI,gBAC5CA,IAAM,IAAMA,GAAK,KAAM,MAAO,GACtC,OAAO,SAASwuB,EAAE,CAAC,EAAGxuB,EAAG+oB,EAAGyF,EAAE,CAAC,CAAC,CACjC,CACA,SAAS,SAAS+yH,EAAgBz2H,EAA4B,CAC7D,GAAG,OAAOA,GAAO,SAAU,CAC1BA,EAAM,CAACA,GAAO,GAEd,QAAQn5B,EAAI,EAAGA,EAAI,IAAQ,EAAEA,EAAG,CAE/B,GAAG,UAAUA,CAAC,GAAK,KAAW,CAAKm5B,EAAM,IAAGA,EAAMn5B,GAAG,QAAW,CAChE,GAAG,UAAUA,CAAC,GAAK4vJ,EAAK,CAAEz2H,EAAMn5B,EAAG,KAAQ,CAC3C,CAEEm5B,EAAM,IAAGA,EAAM,IAClB,CAED,iBAAUA,CAAG,EAAIy2H,EACVz2H,CACR,CACA,SAAS,eAAei/H,EAA2B,CAClD,QAAQp4J,EAAE,EAAGA,GAAG,IAAQ,EAAEA,EACtBo4J,EAAIp4J,CAAC,IAAM,QAAW,SAASo4J,EAAIp4J,CAAC,EAAGA,CAAC,CAC7C,CAEA,SAAS,UAAW,CACnB,UAAY,eAAc,CAC3B,CAYA,IAAI,YAAoC,CACvC,EAAK,4BACL,EAAK,iCACL,EAAK,kCACL,EAAK,uCACL,GAAM,UAAW,GAAM,UAAW,GAAM,UAAW,GAAM,UACzD,GAAM,SAAU,GAAM,SAAU,GAAM,SAAU,GAAM,SAAU,GAAM,SACtE,GAAM,UAAW,GAAM,UAAW,GAAM,UAAW,GAAM,UACzD,GAAM,SACN,GAAM,0CACN,GAAM,mDACN,GAAM,kDACN,GAAM,2DACN,GAAM,SAAU,GAAM,SAAU,GAAM,SAAU,GAAM,SAAU,GAAM,SACtE,GAAM,SAAU,GAAM,SAAU,GAAM,SAAU,GAAM,SACtD,GAAM,IACN,GAAM,OACN,GAAM,QACN,GAAM,WACN,GAAM,4BACN,GAAM,iCACN,GAAM,kCACN,GAAM,uCACN,GAAM,KACN,GAAM,QACN,GAAM,QACN,GAAM,UACN,GAAM,SACN,GAAM,SACN,GAAM,WACN,GAAM,QACN,GAAM,SACN,GAAM,OACN,GAAM,UACN,GAAM,cACN,GAAM,QACN,GAAM,YACN,GAAM,QACP,EAGI,YAAc,mCAClB,SAAS,aAAaq4J,EAAqC,CAC1D,IAAIzI,EAAM,OAAOyI,GAAU,SAAW,UAAUA,CAAM,EAAIA,EAC1D,OAAAzI,EAAMA,EAAI,QAAQ,YAAa,QAAQ,EAChC,IAAI,OAAO,IAAMA,EAAM,GAAG,CAClC,CACA,SAAS,WAAW1pJ,EAAgBmyJ,EAAmBvmI,EAAoC,CAC1F,IAAIojG,EAAI,GAAInzH,EAAI,GAAIK,EAAI,GAAIsoF,EAAI,GAAIzC,EAAI,GAAIyuB,EAAI,IAC/C2hD,EAAO,MAAM,WAAW,GAAG,CAAE,GAAE,QAAQ,SAASpyJ,EAAGjG,EAAG,CACtD,IAAIqO,EAAI,SAASyjB,EAAM9xB,EAAE,CAAC,EAAG,EAAE,EAC/B,OAAOiG,EAAE,cAAc,OAAO,CAAC,EAAC,CAC/B,IAAK,IAAKivH,EAAI7mH,EAAG,MAAO,IAAK,IAAKjM,EAAIiM,EAAG,MACzC,IAAK,IAAKq8E,EAAIr8E,EAAG,MAAO,IAAK,IAAKqoG,EAAIroG,EAAG,MACzC,IAAK,IAAQq8E,GAAK,EAAGzC,EAAI55E,EAAQtM,EAAIsM,EAAG,KACxC,CACH,CAAE,EACEqoG,GAAK,GAAKzuB,GAAK,IAAMlmF,GAAK,IAAKkmF,EAAIlmF,EAAGA,EAAI,IAC7C,IAAIu2J,GAAY,IAAMpjC,GAAG,EAAEA,EAAG,IAAI,KAAI,EAAG,YAAa,IAAG,MAAM,EAAE,EAAI,KAAO,MAAQnzH,GAAG,EAAEA,EAAE,IAAI,MAAM,EAAE,EAAI,KAAO,MAAQK,GAAG,EAAEA,EAAE,IAAI,MAAM,EAAE,EAC1Ik2J,EAAQ,QAAU,IAAGA,EAAU,IAAMA,GACrCA,EAAQ,QAAU,IAAGA,EAAU,KAAOA,GACzC,IAAIC,GAAY,MAAQ7tE,GAAG,EAAEA,EAAE,IAAI,MAAM,EAAE,EAAI,KAAO,MAAQzC,GAAG,EAAEA,EAAE,IAAI,MAAM,EAAE,EAAI,KAAO,MAAQyuB,GAAG,EAAEA,EAAE,IAAI,MAAM,EAAE,EACvH,OAAGhsB,GAAK,IAAMzC,GAAK,IAAMyuB,GAAK,GAAW4hD,EACtCpjC,GAAK,IAAMnzH,GAAK,IAAMK,GAAK,GAAWm2J,EAClCD,EAAU,IAAMC,CACxB,CAGA,IAAI,YAAc,CACjB,MAAO,OACR,EAEA,SAAS,UAAU3I,EAAKz2H,EAAK,CAC5B,OAAO,SAAS,YAAYy2H,CAAG,GAAKA,EAAKz2H,CAAG,CAC7C,CA2CA,IAAI,MAAsB,UAAW,CACrC,IAAIq/H,EAAQ,GACZA,EAAM,QAAU,QAGhB,SAASC,GAA2B,CAGnC,QAFIl2J,EAAI,EAAGmJ,GAA0B,IAAI,MAAM,GAAG,EAE1CzF,GAAG,EAAGA,IAAK,IAAK,EAAEA,GACzB1D,EAAI0D,GACJ1D,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CmJ,GAAMzF,EAAC,EAAI1D,EAGZ,OAAO,OAAO,WAAe,IAAc,IAAI,WAAWmJ,EAAK,EAAIA,EACpE,CAEA,IAAIgtJ,EAAKD,EAAgB,EACzB,SAASE,EAAmBroE,EAAG,CAC9B,IAAI/tF,GAAI,EAAG8L,GAAI,EAAGpI,GAAI,EAAGyF,GAA0B,OAAO,WAAe,IAAc,IAAI,WAAW,IAAI,EAAI,IAAI,MAAM,IAAI,EAE5H,IAAIzF,GAAI,EAAGA,IAAK,IAAK,EAAEA,GAAGyF,GAAMzF,EAAC,EAAIqqF,EAAErqF,EAAC,EACxC,IAAIA,GAAI,EAAGA,IAAK,IAAK,EAAEA,GAEtB,IADAoI,GAAIiiF,EAAErqF,EAAC,EACH1D,GAAI,IAAM0D,GAAG1D,GAAI,KAAMA,IAAK,IAAK8L,GAAI3C,GAAMnJ,EAAC,EAAK8L,KAAM,EAAKiiF,EAAEjiF,GAAI,GAAI,EAE3E,IAAI3F,EAAM,GACV,IAAIzC,GAAI,EAAGA,IAAK,GAAI,EAAEA,GAAGyC,EAAIzC,GAAI,CAAC,EAAI,OAAO,WAAe,IAAcyF,GAAM,SAASzF,GAAI,IAAKA,GAAI,IAAM,GAAG,EAAIyF,GAAM,MAAMzF,GAAI,IAAKA,GAAI,IAAM,GAAG,EACrJ,OAAOyC,CACR,CACA,IAAIkwJ,EAAKD,EAAmBD,CAAE,EAC1BrtE,EAAKutE,EAAG,CAAC,EAAIttE,EAAKstE,EAAG,CAAC,EAAIniC,EAAKmiC,EAAG,CAAC,EAAIC,EAAKD,EAAG,CAAC,EAAIE,EAAKF,EAAG,CAAC,EAC7DG,EAAKH,EAAG,CAAC,EAAII,EAAKJ,EAAG,CAAC,EAAIj0C,EAAKi0C,EAAG,CAAC,EAAIK,EAAKL,EAAG,CAAC,EAAIM,EAAKN,EAAG,CAAC,EAC7DO,EAAKP,EAAG,EAAE,EAAGQ,EAAKR,EAAG,EAAE,EAAGS,EAAKT,EAAG,EAAE,EAAGU,EAAKV,EAAG,EAAE,EAAGW,EAAKX,EAAG,EAAE,EAClE,SAASY,EAAWC,EAAiBrlD,GAA4B,CAEhE,QADI/3E,GAAI+3E,GAAsB,GACtBp0G,GAAI,EAAG0kH,GAAI+0C,EAAK,OAAQz5J,GAAI0kH,IAAIroF,GAAKA,KAAI,EAAKq8H,GAAIr8H,GAAEo9H,EAAK,WAAWz5J,IAAG,GAAG,GAAI,EACtF,MAAO,CAACq8B,EACT,CAEA,SAASq9H,EAAUj4D,EAAgC2S,GAA4B,CAE9E,QADI/3E,GAAI+3E,GAAsB,GAAIsQ,GAAIjjB,EAAE,OAAS,GAAIzhG,GAAI,EACnDA,GAAI0kH,IAAIroF,GACbk9H,EAAG93D,EAAEzhG,IAAG,EAAKq8B,GAAI,GAAI,EACrBi9H,EAAG73D,EAAEzhG,IAAG,EAAMq8B,IAAK,EAAK,GAAI,EAC5Bg9H,EAAG53D,EAAEzhG,IAAG,EAAMq8B,IAAK,GAAM,GAAI,EAC7B+8H,EAAG33D,EAAEzhG,IAAG,EAAKq8B,KAAM,EAAG,EACtB88H,EAAG13D,EAAEzhG,IAAG,CAAC,EAAIk5J,EAAGz3D,EAAEzhG,IAAG,CAAC,EAAIi5J,EAAGx3D,EAAEzhG,IAAG,CAAC,EAAI2kH,EAAGljB,EAAEzhG,IAAG,CAAC,EAChDg5J,EAAGv3D,EAAEzhG,IAAG,CAAC,EAAI+4J,EAAGt3D,EAAEzhG,IAAG,CAAC,EAAI84J,EAAGr3D,EAAEzhG,IAAG,CAAC,EAAI64J,EAAGp3D,EAAEzhG,IAAG,CAAC,EAChDy2H,EAAGh1B,EAAEzhG,IAAG,CAAC,EAAIsrF,EAAGmW,EAAEzhG,IAAG,CAAC,EAAIqrF,EAAGoW,EAAEzhG,IAAG,CAAC,EAAI04J,EAAGj3D,EAAEzhG,IAAG,CAAC,EAEjD,IADA0kH,IAAK,GACC1kH,GAAI0kH,IAAGroF,GAAKA,KAAI,EAAKq8H,GAAIr8H,GAAEolE,EAAEzhG,IAAG,GAAG,GAAI,EAC7C,MAAO,CAACq8B,EACT,CAEA,SAASs9H,EAAUzzJ,EAAgBkuG,GAA4B,CAE9D,QADI/3E,GAAI+3E,GAAO,GACPp0G,GAAI,EAAG0kH,GAAIx+G,EAAI,OAAQ3D,EAAI,EAAGH,EAAI,EAAGpC,GAAI0kH,IAChDniH,EAAI2D,EAAI,WAAWlG,IAAG,EACnBuC,EAAI,IACN85B,GAAKA,KAAI,EAAKq8H,GAAIr8H,GAAE95B,GAAG,GAAI,EAClBA,EAAI,MACb85B,GAAKA,KAAI,EAAKq8H,GAAIr8H,IAAK,IAAM95B,GAAG,EAAG,KAAM,GAAI,EAC7C85B,GAAKA,KAAI,EAAKq8H,GAAIr8H,IAAK,IAAK95B,EAAE,KAAM,GAAI,GAC/BA,GAAK,OAAUA,EAAI,OAC5BA,GAAKA,EAAE,MAAM,GAAIH,EAAI8D,EAAI,WAAWlG,IAAG,EAAE,KACzCq8B,GAAKA,KAAI,EAAKq8H,GAAIr8H,IAAK,IAAM95B,GAAG,EAAG,IAAK,GAAI,EAC5C85B,GAAKA,KAAI,EAAKq8H,GAAIr8H,IAAK,IAAM95B,GAAG,EAAG,KAAM,GAAI,EAC7C85B,GAAKA,KAAI,EAAKq8H,GAAIr8H,IAAK,IAAMj6B,GAAG,EAAG,IAAMG,EAAE,IAAI,IAAK,GAAI,EACxD85B,GAAKA,KAAI,EAAKq8H,GAAIr8H,IAAK,IAAKj6B,EAAE,KAAM,GAAI,IAExCi6B,GAAKA,KAAI,EAAKq8H,GAAIr8H,IAAK,IAAM95B,GAAG,GAAI,KAAM,GAAI,EAC9C85B,GAAKA,KAAI,EAAKq8H,GAAIr8H,IAAK,IAAM95B,GAAG,EAAG,KAAM,GAAI,EAC7C85B,GAAKA,KAAI,EAAKq8H,GAAIr8H,IAAK,IAAK95B,EAAE,KAAM,GAAI,GAG1C,MAAO,CAAC85B,EACT,CACA,OAAAm8H,EAAM,MAAQE,EACdF,EAAM,KAAOgB,EACbhB,EAAM,IAAMkB,EACZlB,EAAM,IAAMmB,EACLnB,CACP,IAEI,IAAoB,SAASoB,GAAM,CACvC,IAAIn3J,EAA+B,GACnCA,EAAQ,QAAU,QAElB,SAASo3J,EAAQnrJ,GAAcgF,GAAyB,CAEvD,QADIgxG,GAAIh2G,GAAE,MAAM,GAAG,EAAG6nG,GAAI7iG,GAAE,MAAM,GAAG,EAC7B1T,GAAI,EAAGuC,GAAI,EAAGwuH,GAAI,KAAK,IAAIrM,GAAE,OAAQnO,GAAE,MAAM,EAAGv2G,GAAI+wH,GAAG,EAAE/wH,GAAG,CACnE,GAAIuC,GAAImiH,GAAE1kH,EAAC,EAAE,OAASu2G,GAAEv2G,EAAC,EAAE,OAAS,OAAOuC,GAC3C,GAAGmiH,GAAE1kH,EAAC,GAAKu2G,GAAEv2G,EAAC,EAAG,OAAO0kH,GAAE1kH,EAAC,EAAIu2G,GAAEv2G,EAAC,EAAI,GAAK,CAC3C,CACD,OAAO0kH,GAAE,OAASnO,GAAE,MACrB,CACA,SAASujD,EAAQ7jJ,GAAyB,CACzC,GAAGA,GAAE,OAAOA,GAAE,OAAS,CAAC,GAAK,IAAK,OAAQA,GAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAM,GAAMA,GAAI6jJ,EAAQ7jJ,GAAE,MAAM,EAAG,EAAE,CAAC,EACzG,IAAI1T,GAAI0T,GAAE,YAAY,GAAG,EACzB,OAAQ1T,KAAM,GAAM0T,GAAIA,GAAE,MAAM,EAAG1T,GAAE,CAAC,CACvC,CAEA,SAASw3J,EAAS9jJ,GAAyB,CAC1C,GAAGA,GAAE,OAAOA,GAAE,OAAS,CAAC,GAAK,IAAK,OAAO8jJ,EAAS9jJ,GAAE,MAAM,EAAG,EAAE,CAAC,EAChE,IAAI1T,GAAI0T,GAAE,YAAY,GAAG,EACzB,OAAQ1T,KAAM,GAAM0T,GAAIA,GAAE,MAAM1T,GAAE,CAAC,CACpC,CASA,SAASy3J,EAAez2J,GAAgBunE,GAAsB,CAC1D,OAAOA,IAAS,WAAUA,GAAO,IAAI,KAAKA,EAAI,GACjD,IAAImvF,GAAiBnvF,GAAK,WAC1BmvF,GAAMA,IAAO,EAAInvF,GAAK,WAAU,EAChCmvF,GAAMA,IAAO,EAAKnvF,GAAK,WAAU,IAAK,EACtCvnE,GAAI,YAAY,EAAG02J,EAAG,EACtB,IAAIC,GAAkBpvF,GAAK,YAAa,EAAG,KAC3CovF,GAAMA,IAAO,EAAKpvF,GAAK,SAAQ,EAAG,EAClCovF,GAAMA,IAAO,EAAIpvF,GAAK,QAAO,EAC7BvnE,GAAI,YAAY,EAAG22J,EAAG,CACvB,CAGA,SAASC,EAAe52J,GAAyB,CAChD,IAAI02J,GAAM12J,GAAI,WAAW,CAAC,EAAI,MAC1B22J,GAAM32J,GAAI,WAAW,CAAC,EAAI,MAC1BmD,GAAM,IAAI,KACVtE,GAAI83J,GAAM,GAAMA,MAAS,EAC7B,IAAIn4J,GAAIm4J,GAAM,GAAMA,MAAS,EAC7BxzJ,GAAI,gBAAgB,CAAC,EACrBA,GAAI,YAAYwzJ,GAAM,IAAI,EAC1BxzJ,GAAI,SAAS3E,GAAE,CAAC,EAChB2E,GAAI,QAAQtE,EAAC,EACb,IAAIs0G,GAAIujD,GAAM,GAAMA,MAAS,EAC7B,IAAIhyE,GAAIgyE,GAAM,GAAM,OAAAA,MAAS,EAC7BvzJ,GAAI,SAASuzJ,EAAG,EAChBvzJ,GAAI,WAAWuhF,EAAC,EAChBvhF,GAAI,WAAWgwG,IAAG,CAAC,EACZhwG,EACR,CACA,SAAS0zJ,EAAkBC,GAAyB,CACnD,UAAUA,GAAM,CAAC,EAGjB,QAFIjjI,GAAW,GACXsjB,GAAQ,EACN2/G,GAAK,GAAKA,GAAK,OAAS,GAAG,CAChC,IAAIpvJ,GAAOovJ,GAAK,WAAW,CAAC,EACxBC,GAAKD,GAAK,WAAW,CAAC,EAAGE,GAAMF,GAAK,EAAIC,GACxCrkJ,GAAI,GACR,OAAOhL,GAAI,CAEV,IAAK,OACJyvC,GAAQ2/G,GAAK,WAAW,CAAC,EACtB3/G,GAAQ,IAAGzkC,GAAE,MAAQokJ,GAAK,WAAW,CAAC,GAEtCC,GAAK,IACJ5/G,GAAQ,IAAGzkC,GAAE,MAAQokJ,GAAK,WAAW,CAAC,GACtC3/G,GAAQ,IAAGzkC,GAAE,MAAQokJ,GAAK,WAAW,CAAC,IAEvCpkJ,GAAE,QAAOA,GAAE,GAAK,IAAI,KAAKA,GAAE,MAAM,GAAI,GACvC,MAEF,IAAK,GAAQ,CACZ,IAAIukJ,GAAMH,GAAK,WAAW,CAAC,EAAGI,GAAMJ,GAAK,WAAW,CAAC,EACrDpkJ,GAAE,IAAOwkJ,GAAM,KAAK,IAAI,EAAE,EAAE,EAAID,GAChCA,GAAMH,GAAK,WAAW,CAAC,EAAGI,GAAMJ,GAAK,WAAW,CAAC,EACjDpkJ,GAAE,IAAOwkJ,GAAM,KAAK,IAAI,EAAE,EAAE,EAAID,EAEpC,CAAK,KACF,CACDH,GAAK,EAAIE,GACTnjI,GAAEnsB,EAAI,EAAIgL,EACV,CACD,OAAOmhB,EACR,CACA,IAAIsjI,EACJ,SAASC,GAAS,CAAE,OAAOD,IAAOA,EAAK,IAAO,CAC9C,SAAS1X,EAAM4X,GAAmB9iJ,GAA0C,CAC5E,GAAG8iJ,GAAK,CAAC,GAAK,IAAQA,GAAK,CAAC,GAAK,GAAM,OAAOC,GAAUD,GAAM9iJ,EAAO,EACrE,IAAI8iJ,GAAK,CAAC,EAAI,KAAS,MAASA,GAAK,CAAC,EAAE,KAAS,IAAM,OAAOE,GAAUF,GAAM9iJ,EAAO,EACrF,GAAG8iJ,GAAK,OAAS,IAAK,MAAM,IAAI,MAAM,iBAAmBA,GAAK,OAAS,QAAQ,EAC/E,IAAIG,GAAO,EACPC,GAAM,IACNC,GAAO,EACPC,GAAgB,EAChBC,GAAY,EACZC,GAAgB,EAChBC,GAAc,EAEdC,GAA8B,GAG9BjB,GAAyBO,GAAK,MAAM,EAAE,GAAG,EAC7C,UAAUP,GAAM,CAAC,EAGjB,IAAIkB,GAAKC,EAAenB,EAAI,EAE5B,OADAU,GAAOQ,GAAG,CAAC,EACJR,GAAI,CACV,IAAK,GAAGC,GAAM,IAAK,MAAO,IAAK,GAAGA,GAAM,KAAM,MAC9C,IAAK,GAAG,GAAGO,GAAG,CAAC,GAAK,EAAG,OAAOV,GAAUD,GAAM9iJ,EAAO,EAErD,QAAS,MAAM,IAAI,MAAM,sCAAwCijJ,EAAI,CACtE,CAGGC,KAAQ,MAAOX,GAAcO,GAAK,MAAM,EAAEI,EAAG,EAAe,UAAUX,GAAM,EAAgB,GAE/F,IAAI9/C,GAAsBqgD,GAAK,MAAM,EAAEI,EAAG,EAE1CS,EAAapB,GAAMU,EAAI,EAGvB,IAAIW,GAAqBrB,GAAK,WAAW,EAAG,GAAG,EAC/C,GAAGU,KAAS,GAAKW,KAAY,EAAG,MAAM,IAAI,MAAM,uCAAyCA,EAAO,EAGhGrB,GAAK,GAAK,EAGVc,GAAYd,GAAK,WAAW,EAAG,GAAG,EAGlCA,GAAK,GAAK,EAGVA,GAAK,IAAI,WAAY,2BAA2B,EAGhDe,GAAgBf,GAAK,WAAW,EAAG,GAAG,EAGtCY,GAAOZ,GAAK,WAAW,EAAG,GAAG,EAG7BgB,GAAchB,GAAK,WAAW,EAAG,GAAG,EAGpCa,GAAgBb,GAAK,WAAW,EAAG,GAAG,EAGtC,QAAQtgE,GAAI,GAAI7yF,GAAI,EAAGA,GAAI,MAC1B6yF,GAAIsgE,GAAK,WAAW,EAAG,GAAG,EACvB,EAAAtgE,GAAE,IAF0B,EAAE7yF,GAGjCo0J,GAAUp0J,EAAC,EAAI6yF,GAIhB,IAAI4hE,GAA8BC,EAAUhB,GAAMI,EAAG,EAErDa,EAAWR,GAAaH,GAAeS,GAASX,GAAKM,EAAS,EAG9D,IAAIQ,GAA6BC,EAAiBJ,GAASR,GAAWG,GAAWN,EAAG,EAEjFG,GAAYW,GAAY,SAAQA,GAAYX,EAAS,EAAE,KAAO,cAC9DF,GAAO,GAAKG,KAAkBY,IAAYF,GAAYV,EAAa,EAAE,KAAO,YAC/EU,GAAYR,GAAU,CAAC,CAAC,EAAE,KAAO,OACjCQ,GAAY,UAAYR,GACxBQ,GAAY,IAAMd,GAGlB,IAAIiB,GAAqB,CAAE,EAAEC,GAA0B,GAAIC,GAA6B,CAAE,EAAEC,GAA8B,GAC1HC,EAAelB,GAAWW,GAAaH,GAASO,GAAOjB,GAAMgB,GAAOE,GAAWf,EAAa,EAE5FkB,EAAiBH,GAAWC,GAAWF,EAAK,EAC5CA,GAAM,MAAK,EAEX,IAAI9kI,GAAI,CACP,UAAW+kI,GACX,UAAWC,EACZ,EAGA,OAAGtkJ,IAAWA,GAAQ,MAAKsf,GAAE,IAAM,CAAC,OAAQmjF,GAAQ,QAASohD,EAAO,GAC7DvkI,EACP,CAGA,SAASokI,EAAenB,GAAsC,CAC7D,GAAGA,GAAKA,GAAK,CAAC,GAAK,IAAQA,GAAKA,GAAK,EAAI,CAAC,GAAK,GAAM,MAAO,CAAC,EAAG,CAAC,EAEjEA,GAAK,IAAIkC,EAAkB,oBAAoB,EAI/ClC,GAAK,GAAK,GAGV,IAAIU,GAAkBV,GAAK,WAAW,EAAG,GAAG,EAE5C,MAAO,CAACA,GAAK,WAAW,EAAE,GAAG,EAAGU,EAAI,CACrC,CACA,SAASU,EAAapB,GAAiBU,GAA0B,CAChE,IAAIv0G,GAAQ,EAOZ,OAHA6zG,GAAK,GAAK,EAGF7zG,GAAQ6zG,GAAK,WAAW,CAAC,EAAC,CACjC,IAAK,GAAM,GAAGU,IAAQ,EAAG,MAAM,IAAI,MAAM,gCAAkCv0G,EAAK,EAAG,MACnF,IAAK,IAAM,GAAGu0G,IAAQ,EAAG,MAAM,IAAI,MAAM,iCAAmCv0G,EAAK,EAAG,MACpF,QAAS,MAAM,IAAI,MAAM,sCAAwCA,EAAK,CACtE,CAGD6zG,GAAK,IAAI,OAAQ,qBAAqB,EAGtCA,GAAK,IAAI,eAAgB,YAAY,CACtC,CAGA,SAASuB,EAAUhB,GAAmBI,GAAoC,CAGzE,QAFIwB,GAAW,KAAK,KAAK5B,GAAK,OAAOI,EAAG,EAAE,EACtCW,GAA8B,GAC1B37J,GAAE,EAAGA,GAAIw8J,GAAU,EAAEx8J,GAAG27J,GAAQ37J,GAAE,CAAC,EAAI46J,GAAK,MAAM56J,GAAEg7J,IAAKh7J,GAAE,GAAGg7J,EAAG,EACzE,OAAAW,GAAQa,GAAS,CAAC,EAAI5B,GAAK,MAAM4B,GAASxB,EAAG,EACtCW,EACR,CAGA,SAASW,EAAiBG,GAAqBC,GAAsBR,GAAkC,CAItG,QAHIl8J,GAAI,EAAG0kH,GAAI,EAAGnO,GAAI,EAAGl6E,GAAI,EAAGn1B,GAAI,EAAGy1J,GAAKT,GAAM,OAC9CU,GAAwB,GAAI7iE,GAAsB,GAEhD/5F,GAAI28J,GAAI,EAAE38J,GAAK48J,GAAI58J,EAAC,EAAE+5F,GAAE/5F,EAAC,EAAEA,GAAG08J,GAAG18J,EAAC,EAAEk8J,GAAMl8J,EAAC,EAEjD,KAAMkH,GAAI6yF,GAAE,OAAQ,EAAE7yF,GACrBlH,GAAI+5F,GAAE7yF,EAAC,EACPw9G,GAAI+3C,GAAGz8J,EAAC,EAAE,EAAGu2G,GAAIkmD,GAAGz8J,EAAC,EAAE,EAAGq8B,GAAIogI,GAAGz8J,EAAC,EAAE,EACjC48J,GAAI58J,EAAC,IAAMA,KACV0kH,KAAM,IAAmBk4C,GAAIl4C,EAAC,IAAMA,KAAGk4C,GAAI58J,EAAC,EAAI48J,GAAIl4C,EAAC,GACrDnO,KAAM,IAAMqmD,GAAIrmD,EAAC,IAAMA,KAAGqmD,GAAI58J,EAAC,EAAI48J,GAAIrmD,EAAC,IAEzCl6E,KAAM,KAAiBugI,GAAIvgI,EAAC,EAAIr8B,IAChC0kH,KAAM,IAAM1kH,IAAK48J,GAAI58J,EAAC,IAAK48J,GAAIl4C,EAAC,EAAIk4C,GAAI58J,EAAC,EAAM+5F,GAAE,YAAY2qB,EAAC,EAAIx9G,IAAG6yF,GAAE,KAAK2qB,EAAC,GAC7EnO,KAAM,IAAMv2G,IAAK48J,GAAI58J,EAAC,IAAK48J,GAAIrmD,EAAC,EAAIqmD,GAAI58J,EAAC,EAAM+5F,GAAE,YAAYwc,EAAC,EAAIrvG,IAAG6yF,GAAE,KAAKwc,EAAC,GAEjF,IAAIv2G,GAAE,EAAGA,GAAI28J,GAAI,EAAE38J,GAAM48J,GAAI58J,EAAC,IAAMA,KAChCu2G,KAAM,IAAmBqmD,GAAIrmD,EAAC,IAAMA,GAAGqmD,GAAI58J,EAAC,EAAI48J,GAAIrmD,EAAC,EAChDmO,KAAM,IAAMk4C,GAAIl4C,EAAC,IAAMA,KAAGk4C,GAAI58J,EAAC,EAAI48J,GAAIl4C,EAAC,IAGjD,IAAI1kH,GAAE,EAAGA,GAAI28J,GAAI,EAAE38J,GAClB,GAAGy8J,GAAGz8J,EAAC,EAAE,OAAS,EAElB,IADAkH,GAAIlH,GACDkH,IAAK01J,GAAI11J,EAAC,EAAG,GACfA,GAAI01J,GAAI11J,EAAC,EACTw1J,GAAG18J,EAAC,EAAI08J,GAAGx1J,EAAC,EAAI,IAAMw1J,GAAG18J,EAAC,QAClBkH,KAAM,GAAY01J,GAAI11J,EAAC,IAAZ,IAAiBA,IAAK01J,GAAI11J,EAAC,GAC/C01J,GAAI58J,EAAC,EAAI,GAIV,IADA08J,GAAG,CAAC,GAAK,IACL18J,GAAE,EAAGA,GAAI28J,GAAI,EAAE38J,GACfy8J,GAAGz8J,EAAC,EAAE,OAAS,IAAgB08J,GAAG18J,EAAC,GAAK,IAE7C,CAEA,SAAS68J,EAAe9nJ,GAAoB29C,GAAsBoqG,GAA+B,CAKhG,QAJI37J,GAAQ4T,GAAM,MAAO3Q,GAAO2Q,GAAM,KAElCqiB,GAAI,GACJ+B,GAAMh4B,GACJ27J,IAAQ14J,GAAO,GAAK+0B,IAAO,GAChC/B,GAAE,KAAKs7B,GAAQ,MAAMv5B,GAAM4jI,EAAM5jI,GAAM4jI,EAAOA,CAAI,CAAC,EACnD34J,IAAQ24J,EACR5jI,GAAM,cAAc2jI,GAAM3jI,GAAM,CAAC,EAElC,OAAG/B,GAAE,SAAW,EAAW,QAAQ,CAAC,EAC5B,QAAQA,EAAC,EAAE,MAAM,EAAGriB,GAAM,IAAI,CACvC,CAIA,SAAS8mJ,EAAW1iI,GAAgB6jI,GAAgBrB,GAA6BX,GAAgBM,GAAoB,CACpH,IAAIvhE,GAAeiiE,EACnB,GAAG7iI,KAAQ6iI,GACV,GAAGgB,KAAQ,EAAG,MAAM,IAAI,MAAM,mCAAmC,UACxD7jI,KAAQ,GAAiB,CAClC,IAAI8jI,GAAStB,GAAQxiI,EAAG,EAAGp3B,IAAKi5J,KAAM,GAAG,EACzC,GAAG,CAACiC,GAAQ,OACZ,QAAQj9J,GAAI,EAAGA,GAAI+B,KACdg4F,GAAI,cAAckjE,GAAOj9J,GAAE,CAAC,KAAOg8J,EADlB,EAAEh8J,GAEvBs7J,GAAU,KAAKvhE,EAAC,EAEdijE,IAAO,GAAGnB,EAAW,cAAcoB,GAAOjC,GAAI,CAAC,EAAEgC,GAAM,EAAGrB,GAASX,GAAKM,EAAS,CACpF,CACF,CAGA,SAAS4B,EAAgBvB,GAA6Bx6J,GAAkBm6J,GAA6BN,GAAgBmC,GAA0C,CAC9J,IAAI55J,GAAwB,GAAI65J,GAA2B,GACvDD,KAAMA,GAAO,IACjB,IAAIE,GAAUrC,GAAM,EAAG9zJ,GAAI,EAAGywJ,GAAK,EACnC,IAAIzwJ,GAAE/F,GAAO+F,IAAG,GAAI,CACnBi2J,GAAKj2J,EAAC,EAAI,GACV3D,GAAIA,GAAI,MAAM,EAAI2D,GAClBk2J,GAAU,KAAKzB,GAAQz0J,EAAC,CAAC,EACzB,IAAIynI,GAAO2sB,GAAU,KAAK,MAAMp0J,GAAE,EAAE8zJ,EAAG,CAAC,EAExC,GADArD,GAAOzwJ,GAAE,EAAKm2J,GACXrC,GAAM,EAAIrD,GAAI,MAAM,IAAI,MAAM,yBAA2BzwJ,GAAI,MAAM8zJ,EAAG,EACzE,GAAG,CAACW,GAAQhtB,EAAI,EAAG,MACnBznI,GAAI,cAAcy0J,GAAQhtB,EAAI,EAAGgpB,EAAE,CACnC,CACD,MAAO,CAAC,MAAOp0J,GAAK,KAAK,WAAW,CAAC65J,EAAS,CAAC,CAAC,CACjD,CAGA,SAASrB,EAAiBJ,GAA6BR,GAAsBG,GAA6BN,GAA+B,CACxI,IAAIvyE,GAAKkzE,GAAQ,OAAQG,GAA8B,CAAE,EACrDqB,GAA0B,GAAI55J,GAAwB,GAAI65J,GAAgC,GAC1FC,GAAUrC,GAAM,EAAGh7J,GAAE,EAAGkH,GAAE,EAAGgwB,GAAE,EAAGygI,GAAG,EACzC,IAAI33J,GAAE,EAAGA,GAAIyoF,GAAI,EAAEzoF,GAGlB,GAFAuD,GAAO,CAAE,EACT2zB,GAAKl3B,GAAIm7J,GAAejkI,IAAKuxD,KAAIvxD,IAAGuxD,IACjC,CAAA00E,GAAKjmI,EAAC,EACT,CAAAkmI,GAAY,GACZ,IAAI3mJ,GAAO,GACX,IAAIvP,GAAEgwB,GAAGhwB,IAAG,GAAI,CACfuP,GAAKvP,EAAC,EAAI,GACVi2J,GAAKj2J,EAAC,EAAI,GACV3D,GAAIA,GAAI,MAAM,EAAI2D,GAClBk2J,GAAU,KAAKzB,GAAQz0J,EAAC,CAAC,EACzB,IAAIynI,GAAkB2sB,GAAU,KAAK,MAAMp0J,GAAE,EAAE8zJ,EAAG,CAAC,EAEnD,GADArD,GAAOzwJ,GAAE,EAAKm2J,GACXrC,GAAM,EAAIrD,GAAI,MAAM,IAAI,MAAM,yBAA2BzwJ,GAAI,MAAM8zJ,EAAG,EAGzE,GAFG,CAACW,GAAQhtB,EAAI,IAChBznI,GAAI,cAAcy0J,GAAQhtB,EAAI,EAAGgpB,EAAE,EAChClhJ,GAAKvP,EAAC,GAAG,KACZ,CACD40J,GAAY5kI,EAAC,EAAK,CAAC,MAAO3zB,GAAK,KAAK,WAAW,CAAC65J,EAAS,CAAC,CAAC,EAE5D,OAAOtB,EACR,CAGA,SAASO,EAAelB,GAAsBW,GAA4BH,GAA6BO,GAAyBjB,GAAMgB,GAAOE,GAAWW,GAAM,CAI7J,QAHIQ,GAAgB,EAAGX,GAAMT,GAAM,OAAO,EAAE,EACxCe,GAASnB,GAAYX,EAAS,EAAE,KAChCn7J,GAAI,EAAGu9J,GAAU,EAAGp9J,GAClBH,GAAIi9J,GAAO,OAAQj9J,IAAI,IAAK,CACjC,IAAIq6J,GAAyB4C,GAAO,MAAMj9J,GAAGA,GAAE,GAAG,EAClD,UAAUq6J,GAAM,EAAE,EAClBkD,GAAUlD,GAAK,WAAW,CAAC,EAC3Bl6J,GAAO,UAAUk6J,GAAK,EAAEkD,GAAQZ,EAAE,EAClCT,GAAM,KAAK/7J,EAAI,EACf,IAAIi3B,GAAkB,CACrB,KAAOj3B,GACP,KAAOk6J,GAAK,WAAW,CAAC,EACxB,MAAOA,GAAK,WAAW,CAAC,EACxB,EAAOA,GAAK,WAAW,EAAG,GAAG,EAC7B,EAAOA,GAAK,WAAW,EAAG,GAAG,EAC7B,EAAOA,GAAK,WAAW,EAAG,GAAG,EAC7B,MAAOA,GAAK,WAAW,EAAE,EACzB,MAAOA,GAAK,WAAW,EAAG,GAAG,EAC7B,MAAO,EACP,KAAM,CACT,EACMmD,GAAmBnD,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EACpGmD,KAAU,IAAGpmI,GAAE,GAAKqmI,EAAUpD,GAAMA,GAAK,EAAE,CAAC,GAC/C,IAAIqD,GAAmBrD,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EACpGqD,KAAU,IAAGtmI,GAAE,GAAKqmI,EAAUpD,GAAMA,GAAK,EAAE,CAAC,GAC/CjjI,GAAE,MAAQijI,GAAK,WAAW,EAAG,GAAG,EAChCjjI,GAAE,KAAOijI,GAAK,WAAW,EAAG,GAAG,EAC5BjjI,GAAE,KAAO,GAAKA,GAAE,MAAQ,IAAKA,GAAE,KAAOA,GAAE,KAAO,EAAGA,GAAE,MAAQ4kI,EAAY5kI,GAAE,KAAO,IACjFA,GAAE,OAAS,GACbkmI,GAAgBlmI,GAAE,MACf6jI,GAAO,GAAKqC,KAAkBtB,IAAYF,GAAYwB,EAAa,EAAE,KAAO,gBAEtElmI,GAAE,MAAQ,MACnBA,GAAE,QAAU,MACT0kI,GAAY1kI,GAAE,KAAK,IAAM,SAAW0kI,GAAY1kI,GAAE,KAAK,EAAI8lI,EAAgBvB,GAASvkI,GAAE,MAAO0kI,GAAY,UAAWA,GAAY,GAAG,GACtIA,GAAY1kI,GAAE,KAAK,EAAE,KAAOA,GAAE,KAC9BA,GAAE,QAAW0kI,GAAY1kI,GAAE,KAAK,EAAE,KAAK,MAAM,EAAEA,GAAE,IAAI,IAErDA,GAAE,QAAU,UACTA,GAAE,KAAO,EAAGA,GAAE,KAAO,EAChBkmI,KAAkBtB,GAAc5kI,GAAE,QAAU4kI,GAAcF,GAAYwB,EAAa,IAC1FlmI,GAAE,QAAUylI,EAAezlI,GAAG0kI,GAAYwB,EAAa,EAAE,MAAOxB,GAAYgB,EAAI,GAAG,CAAE,GAAE,IAAI,IAG1F1lI,GAAE,SAAS,UAAUA,GAAE,QAAS,CAAC,EACpC6kI,GAAM97J,EAAI,EAAIi3B,GACd+kI,GAAU,KAAK/kI,EAAC,CAChB,CACF,CAEA,SAASqmI,EAAUpD,GAA0B34J,GAA4B,CACxE,OAAO,IAAI,MAAU,eAAe24J,GAAK34J,GAAO,CAAC,EAAE,IAAK,KAAK,IAAI,EAAE,EAAE,EAAE,eAAe24J,GAAK34J,EAAM,EAAE,IAAQ,aAAa,GAAI,CAC7H,CAEA,SAASi8J,EAAU5D,GAAqBjiJ,GAAyB,CAChE,OAAA6iJ,IACO3X,EAAM0X,EAAG,aAAaX,EAAQ,EAAGjiJ,EAAO,CAChD,CAEA,SAAS/Q,EAAKszJ,GAA0BviJ,GAAyB,CAChE,IAAI7M,GAAO6M,IAAWA,GAAQ,KAI9B,OAHI7M,IACA,SAAWpI,SAAO,SAASw3J,EAAI,IAAGpvJ,GAAO,UAEtCA,IAAQ,SAAQ,CACtB,IAAK,OAA2F,OAAO0yJ,EAAUtD,GAAMviJ,EAAO,EAC9H,IAAK,SAAiH,OAAOkrI,EAAM,IAAI,cAAcqX,EAAI,CAAC,EAAGviJ,EAAO,EACpK,IAAK,SAAkG,OAAOkrI,EAAM,IAAIqX,EAAI,EAAGviJ,EAAO,CACtI,CACD,OAAOkrI,EAAkEqX,GAAMviJ,EAAO,CACvF,CAEA,SAAS8lJ,EAASC,GAAsBj+G,GAAwB,CAC/D,IAAIxoB,GAAIwoB,IAAQ,CAAE,EAAEzmC,GAAOie,GAAE,MAAQ,aAGrC,GAFIymI,GAAI,YAAWA,GAAI,UAAY,IAC/BA,GAAI,YAAWA,GAAI,UAAY,IAChCA,GAAI,UAAU,SAAWA,GAAI,UAAU,OAAQ,MAAM,IAAI,MAAM,4BAA4B,EAC3FA,GAAI,UAAU,SAAW,IAC3BA,GAAI,UAAU,CAAC,EAAI1kJ,GAAO,IAC1B0kJ,GAAI,UAAU,CAAC,EAAK,CAAE,KAAM1kJ,GAAM,KAAM,CAAC,GAEvCie,GAAE,QAAOymI,GAAI,UAAU,CAAC,EAAE,MAAQzmI,GAAE,OACvC0mI,GAASD,EAAG,CACb,CACA,SAASC,GAASD,GAA+B,CAChD,IAAIE,GAAK,WACT,GAAG,KAAI,KAAKF,GAAK,IAAME,EAAE,EACzB,KAAI9nJ,GAAI,QAAQ,CAAC,EAAGA,GAAE,CAAC,EAAI,GAAIA,GAAE,CAAC,EAAIA,GAAE,CAAC,EAAI,GAAIA,GAAE,CAAC,EAAI,GACxD4nJ,GAAI,UAAU,KAAM,CAAE,KAAME,GAAI,KAAM,EAAG,QAAQ9nJ,GAAG,KAAK,EAAG,EAAE,GAAI,EAAE,GAAI,EAAE,EAAE,GAC5E4nJ,GAAI,UAAU,KAAKA,GAAI,UAAU,CAAC,EAAIE,EAAE,EACxCC,GAAYH,EAAG,EAChB,CACA,SAASG,GAAYH,GAAsBhhI,GAAyB,CACnE+gI,EAASC,EAAG,EAEZ,QADII,GAAK,GAAO57J,GAAI,GACZrC,GAAI69J,GAAI,UAAU,OAAS,EAAG79J,IAAK,EAAG,EAAEA,GAAG,CAClD,IAAIk+J,GAAQL,GAAI,UAAU79J,EAAC,EAC3B,OAAOk+J,GAAM,KAAI,CAChB,IAAK,GACD77J,GAAG47J,GAAK,IACJJ,GAAI,UAAU,IAAK,EAAEA,GAAI,UAAU,IAAG,GAC7C,MACD,IAAK,GAAG,IAAK,GAAG,IAAK,GACpBx7J,GAAI,GACD,MAAM67J,GAAM,EAAIA,GAAM,EAAIA,GAAM,CAAC,IAAGD,GAAK,IACzCC,GAAM,EAAI,IAAMA,GAAM,EAAI,IAAMA,GAAM,GAAKA,GAAM,IAAGD,GAAK,IAC5D,MACD,QAASA,GAAK,GAAM,KACpB,CACD,CACD,GAAG,GAACA,IAAM,CAACphI,IAEX,KAAIuhB,GAAM,IAAI,KAAK,KAAM,EAAG,EAAE,EAAGl3C,GAAI,EAEjCi3J,GAAY,OAAO,OAAS,OAAO,OAAO,IAAI,EAAI,GAClDvlJ,GAAqC,GACzC,IAAI5Y,GAAI,EAAGA,GAAI69J,GAAI,UAAU,OAAQ,EAAE79J,GACtCm+J,GAAUN,GAAI,UAAU79J,EAAC,CAAC,EAAI,GAC3B69J,GAAI,UAAU79J,EAAC,EAAE,OAAS,GAC7B4Y,GAAK,KAAK,CAACilJ,GAAI,UAAU79J,EAAC,EAAG69J,GAAI,UAAU79J,EAAC,CAAC,CAAC,EAE/C,IAAIA,GAAI,EAAGA,GAAI4Y,GAAK,OAAQ,EAAE5Y,GAAG,CAChC,IAAI48J,GAAM9C,EAAQlhJ,GAAK5Y,EAAC,EAAE,CAAC,CAAC,EAE5B,IADAqC,GAAI87J,GAAUvB,EAAG,EACX,CAACv6J,IAAG,CACT,KAAMy3J,EAAQ8C,EAAG,GAAK,CAACuB,GAAUrE,EAAQ8C,EAAG,CAAC,GAAGA,GAAM9C,EAAQ8C,EAAG,EAEjEhkJ,GAAK,KAAK,CAACgkJ,GAAM,CAChB,KAAM7C,EAAS6C,EAAG,EAAE,QAAQ,IAAI,EAAE,EAClC,KAAM,EACN,MAAOwB,GACP,GAAIhgH,GAAK,GAAIA,GACb,QAAS,IACT,EAAU,EAGX+/G,GAAUvB,EAAG,EAAI,GAEjBA,GAAM9C,EAAQlhJ,GAAK5Y,EAAC,EAAE,CAAC,CAAC,EACxBqC,GAAI87J,GAAUvB,EAAG,CACjB,CACD,CAID,IAFAhkJ,GAAK,KAAK,SAASpZ,GAAE0F,GAAG,CAAE,OAAO20J,EAAQr6J,GAAE,CAAC,EAAG0F,GAAE,CAAC,CAAC,CAAI,GACvD24J,GAAI,UAAY,CAAE,EAAEA,GAAI,UAAY,GAChC79J,GAAI,EAAGA,GAAI4Y,GAAK,OAAQ,EAAE5Y,GAAK69J,GAAI,UAAU79J,EAAC,EAAI4Y,GAAK5Y,EAAC,EAAE,CAAC,EAAG69J,GAAI,UAAU79J,EAAC,EAAI4Y,GAAK5Y,EAAC,EAAE,CAAC,EAC9F,IAAIA,GAAI,EAAGA,GAAI4Y,GAAK,OAAQ,EAAE5Y,GAAG,CAChC,IAAIq+J,GAAMR,GAAI,UAAU79J,EAAC,EACrB+9J,GAAKF,GAAI,UAAU79J,EAAC,EAOxB,GALAq+J,GAAI,KAAQtE,EAASgE,EAAE,EAAE,QAAQ,IAAI,EAAE,EACvCM,GAAI,EAAIA,GAAI,EAAIA,GAAI,EAAI,EAAEA,GAAI,MAAQ,GACtCA,GAAI,KAAOA,GAAI,QAAUA,GAAI,QAAQ,OAAS,EAC9CA,GAAI,MAAQ,EACZA,GAAI,MAASA,GAAI,OAASD,GACvBp+J,KAAM,EACRq+J,GAAI,EAAIzlJ,GAAK,OAAS,EAAI,EAAI,GAC9BylJ,GAAI,KAAO,EACXA,GAAI,KAAO,UACFN,GAAG,MAAM,EAAE,GAAK,IAAK,CAC9B,IAAI72J,GAAElH,GAAE,EAAEkH,GAAI0R,GAAK,QAAgBkhJ,EAAQ+D,GAAI,UAAU32J,EAAC,CAAC,GAAG62J,GAAnC,EAAE72J,GAAG,CAEhC,IADAm3J,GAAI,EAAIn3J,IAAK0R,GAAK,OAAS,GAAK1R,GAC5BA,GAAElH,GAAE,EAAEkH,GAAI0R,GAAK,QAAgBkhJ,EAAQ+D,GAAI,UAAU32J,EAAC,CAAC,GAAG4yJ,EAAQiE,EAAE,EAA7C,EAAE72J,GAAG,CAChCm3J,GAAI,EAAIn3J,IAAK0R,GAAK,OAAS,GAAK1R,GAChCm3J,GAAI,KAAO,CACd,MACMvE,EAAQ+D,GAAI,UAAU79J,GAAE,CAAC,GAAG,EAAE,GAAK85J,EAAQiE,EAAE,IAAGM,GAAI,EAAIr+J,GAAI,GAC/Dq+J,GAAI,KAAO,CAEZ,EAEF,CAEA,SAASC,GAAOT,GAAsB/lJ,GAA8C,CACnF,IAAIymJ,GAAQzmJ,IAAW,GAEvB,GAAGymJ,GAAM,UAAY,MAAO,OAAOC,GAAUX,GAAKU,EAAK,EAEvD,OADAP,GAAYH,EAAG,EACRU,GAAM,SAAQ,CACpB,IAAK,MAAO,OAAOE,GAAUZ,GAAKU,EAAK,CAEvC,CACD,IAAI75C,GAAK,SAASm5C,GAAuC,CAExD,QADIa,GAAY,EAAGC,GAAW,EACtB3+J,GAAI,EAAGA,GAAI69J,GAAI,UAAU,OAAQ,EAAE79J,GAAG,CAC7C,IAAI46J,GAAOiD,GAAI,UAAU79J,EAAC,EAC1B,GAAI46J,GAAK,QACT,KAAIrD,GAAOqD,GAAK,QAAQ,OACrBrD,GAAO,IACNA,GAAO,KAAQmH,IAAcnH,GAAO,IAAS,EAC3CoH,IAAapH,GAAO,KAAW,GAErC,CAOD,QANImE,GAAWmC,GAAI,UAAU,OAAQ,GAAM,EACvCe,GAAYF,GAAY,GAAM,EAC9BG,GAAYH,GAAY,KAAS,EACjCI,GAAWF,GAAWD,GAAWjD,GAAUmD,GAC3CE,GAAWD,GAAW,KAAS,EAC/BE,GAAYD,IAAW,IAAM,EAAI,KAAK,MAAMA,GAAQ,KAAK,GAAI,EACzDD,GAAWC,GAAUC,GAAY,KAAS,EAAKD,IAASC,GAAY,EAAED,IAAW,IAAM,EAAI,KAAK,MAAMA,GAAQ,KAAK,GAAI,EAC/H,IAAIr6C,GAAK,CAAC,EAAGs6C,GAAWD,GAASF,GAAUnD,GAASiD,GAAUD,GAAW,CAAC,EAC1E,OAAAb,GAAI,UAAU,CAAC,EAAE,KAAOa,IAAa,EACrCh6C,GAAE,CAAC,GAAKm5C,GAAI,UAAU,CAAC,EAAE,MAAMn5C,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAEA,GAAE,CAAC,IAAKA,GAAE,CAAC,EAAE,GAAM,GACpEA,EACP,EAAEm5C,EAAG,EACFzmI,GAAI,QAAQstF,GAAE,CAAC,GAAK,CAAC,EACrB1kH,GAAI,EAAGswF,GAAI,EACf,CACC,IAAItwF,GAAI,EAAGA,GAAI,EAAG,EAAEA,GAAGo3B,GAAE,YAAY,EAAG6nI,EAAWj/J,EAAC,CAAC,EACrD,IAAIA,GAAI,EAAGA,GAAI,EAAG,EAAEA,GAAGo3B,GAAE,YAAY,EAAG,CAAC,EAMzC,IALAA,GAAE,YAAY,EAAG,EAAM,EACvBA,GAAE,YAAY,EAAG,CAAM,EACvBA,GAAE,YAAY,EAAG,KAAM,EACvBA,GAAE,YAAY,EAAG,CAAM,EACvBA,GAAE,YAAY,EAAG,CAAM,EACnBp3B,GAAI,EAAGA,GAAI,EAAG,EAAEA,GAAGo3B,GAAE,YAAY,EAAG,CAAC,EAUzC,IATAA,GAAE,YAAY,EAAG,CAAC,EAClBA,GAAE,YAAY,EAAGstF,GAAE,CAAC,CAAC,EACrBttF,GAAE,YAAY,EAAGstF,GAAE,CAAC,EAAIA,GAAE,CAAC,EAAIA,GAAE,CAAC,EAAIA,GAAE,CAAC,EAAI,CAAC,EAC9CttF,GAAE,YAAY,EAAG,CAAC,EAClBA,GAAE,YAAY,EAAG,IAAK,EACtBA,GAAE,YAAY,EAAGstF,GAAE,CAAC,EAAIA,GAAE,CAAC,EAAIA,GAAE,CAAC,EAAIA,GAAE,CAAC,EAAI,EAAGs3C,CAAU,EAC1D5kI,GAAE,YAAY,EAAGstF,GAAE,CAAC,CAAC,EACrBttF,GAAE,YAAY,GAAIstF,GAAE,CAAC,EAAIA,GAAE,CAAC,EAAI,EAAGs3C,CAAU,EAC7C5kI,GAAE,YAAY,EAAGstF,GAAE,CAAC,CAAC,EACjB1kH,GAAI,EAAGA,GAAI,IAAK,EAAEA,GAAGo3B,GAAE,YAAY,GAAIp3B,GAAI0kH,GAAE,CAAC,EAAIA,GAAE,CAAC,EAAI1kH,GAAI,EAAE,CACnE,CACD,GAAG0kH,GAAE,CAAC,EACL,IAAIp0B,GAAI,EAAGA,GAAIo0B,GAAE,CAAC,EAAG,EAAEp0B,GAAG,CACzB,KAAMtwF,GAAI,IAAMswF,GAAI,IAAK,EAAEtwF,GAAGo3B,GAAE,YAAY,GAAIp3B,GAAI0kH,GAAE,CAAC,EAAIA,GAAE,CAAC,EAAI1kH,GAAI,EAAE,EACxEo3B,GAAE,YAAY,GAAIk5D,KAAMo0B,GAAE,CAAC,EAAI,EAAIs3C,EAAa1rE,GAAI,CAAC,CACrD,CAEF,IAAI4uE,GAAU,SAAStkI,GAAuB,CAC7C,IAAI01D,IAAK11D,GAAG56B,GAAEswF,GAAE,EAAG,EAAEtwF,GAAGo3B,GAAE,YAAY,GAAIp3B,GAAE,CAAC,EAC1C46B,KAAK,EAAE56B,GAAGo3B,GAAE,YAAY,GAAI4kI,CAAU,EAC3C,EAEC,IADA1rE,GAAItwF,GAAI,EACJswF,IAAGo0B,GAAE,CAAC,EAAG1kH,GAAEswF,GAAG,EAAEtwF,GAAGo3B,GAAE,YAAY,GAAI+nI,GAAO,OAAO,EACvD,IAAI7uE,IAAGo0B,GAAE,CAAC,EAAG1kH,GAAEswF,GAAG,EAAEtwF,GAAGo3B,GAAE,YAAY,GAAI+nI,GAAO,OAAO,EACvDD,GAAQx6C,GAAE,CAAC,CAAC,EACZw6C,GAAQx6C,GAAE,CAAC,CAAC,EAGZ,QAFIx9G,GAAe,EAAGqwJ,GAAkB,EACpCqD,GAAoBiD,GAAI,UAAU,CAAC,EACjC32J,GAAI22J,GAAI,UAAU,OAAQ,EAAE32J,GACjC0zJ,GAAOiD,GAAI,UAAU32J,EAAC,EAClB0zJ,GAAK,UAETrD,GAAOqD,GAAK,QAAQ,OACjB,EAAArD,GAAO,QACVqD,GAAK,MAAQtqE,GACb4uE,GAAS3H,GAAO,KAAW,CAAC,IAG7B,IADA2H,GAASx6C,GAAE,CAAC,EAAI,GAAM,CAAC,EACjBttF,GAAE,EAAI,KAAOA,GAAE,YAAY,GAAI+nI,GAAO,UAAU,EAEtD,IADA7uE,GAAItwF,GAAI,EACJkH,GAAI,EAAGA,GAAI22J,GAAI,UAAU,OAAQ,EAAE32J,GACtC0zJ,GAAOiD,GAAI,UAAU32J,EAAC,EAClB0zJ,GAAK,UAETrD,GAAOqD,GAAK,QAAQ,OACjB,GAACrD,IAAQA,IAAQ,QACpBqD,GAAK,MAAQtqE,GACb4uE,GAAS3H,GAAO,IAAS,CAAC,IAE3B,KAAMngI,GAAE,EAAI,KAAOA,GAAE,YAAY,GAAI+nI,GAAO,UAAU,EACtD,IAAIn/J,GAAI,EAAGA,GAAI0kH,GAAE,CAAC,GAAG,EAAG,EAAE1kH,GAAG,CAC5B,IAAI+9J,GAAKF,GAAI,UAAU79J,EAAC,EACxB,GAAG,CAAC+9J,IAAMA,GAAG,SAAW,EAAG,CAC1B,IAAI72J,GAAI,EAAGA,GAAI,GAAI,EAAEA,GAAGkwB,GAAE,YAAY,EAAG,CAAC,EAC1C,IAAIlwB,GAAI,EAAGA,GAAI,EAAG,EAAEA,GAAGkwB,GAAE,YAAY,EAAG,EAAE,EAC1C,IAAIlwB,GAAI,EAAGA,GAAI,GAAI,EAAEA,GAAGkwB,GAAE,YAAY,EAAG,CAAC,EAC1C,QACA,CACDwjI,GAAOiD,GAAI,UAAU79J,EAAC,EACnBA,KAAM,IAAG46J,GAAK,MAAQA,GAAK,KAAOA,GAAK,MAAQ,EAAIoB,GACtD,IAAIoD,GAAkBp/J,KAAM,GAAKu+J,GAAM,MAAS3D,GAAK,KAarD,GAZGwE,GAAI,OAAS,KACf,QAAQ,MAAM,QAAUA,GAAM,yBAA2BA,GAAI,MAAM,EAAE,EAAE,CAAC,EACxEA,GAAMA,GAAI,MAAM,EAAG,EAAE,GAEtB7H,GAAO,GAAG6H,GAAI,OAAO,GACrBhoI,GAAE,YAAY,GAAIgoI,GAAK,SAAS,EAChChoI,GAAE,YAAY,EAAGmgI,EAAI,EACrBngI,GAAE,YAAY,EAAGwjI,GAAK,IAAI,EAC1BxjI,GAAE,YAAY,EAAGwjI,GAAK,KAAK,EAC3BxjI,GAAE,YAAY,GAAIwjI,GAAK,CAAC,EACxBxjI,GAAE,YAAY,GAAIwjI,GAAK,CAAC,EACxBxjI,GAAE,YAAY,GAAIwjI,GAAK,CAAC,EACpBA,GAAK,MACJxjI,GAAE,YAAY,GAAIwjI,GAAK,MAAO,KAAK,MADxB,KAAI1zJ,GAAI,EAAGA,GAAI,EAAG,EAAEA,GAAGkwB,GAAE,YAAY,EAAG,CAAC,EAEzDA,GAAE,YAAY,EAAGwjI,GAAK,OAAS,CAAC,EAChCxjI,GAAE,YAAY,EAAG,CAAC,EAAGA,GAAE,YAAY,EAAG,CAAC,EACvCA,GAAE,YAAY,EAAG,CAAC,EAAGA,GAAE,YAAY,EAAG,CAAC,EACvCA,GAAE,YAAY,EAAGwjI,GAAK,KAAK,EAC3BxjI,GAAE,YAAY,EAAGwjI,GAAK,IAAI,EAAGxjI,GAAE,YAAY,EAAG,CAAC,CAC/C,CACD,IAAIp3B,GAAI,EAAGA,GAAI69J,GAAI,UAAU,OAAQ,EAAE79J,GAGtC,GAFA46J,GAAOiD,GAAI,UAAU79J,EAAC,EAEnB46J,GAAK,MAAQ,KAEf,GADAxjI,GAAE,EAAKwjI,GAAK,MAAM,GAAM,EACpB,SAAW/3J,SAAO,SAAS+3J,GAAK,OAAO,EAC1CA,GAAK,QAAQ,KAAKxjI,GAAGA,GAAE,EAAG,EAAGwjI,GAAK,IAAI,EAEtCxjI,GAAE,GAAMwjI,GAAK,KAAO,IAAO,SACrB,CACN,IAAI1zJ,GAAI,EAAGA,GAAI0zJ,GAAK,KAAM,EAAE1zJ,GAAGkwB,GAAE,YAAY,EAAGwjI,GAAK,QAAQ1zJ,EAAC,CAAC,EAC/D,KAAMA,GAAI,IAAO,EAAEA,GAAGkwB,GAAE,YAAY,EAAG,CAAC,CACxC,CAGH,IAAIp3B,GAAI,EAAGA,GAAI69J,GAAI,UAAU,OAAQ,EAAE79J,GAGtC,GAFA46J,GAAOiD,GAAI,UAAU79J,EAAC,EAEnB46J,GAAK,KAAO,GAAKA,GAAK,KAAO,KAC/B,GAAI,SAAW/3J,SAAO,SAAS+3J,GAAK,OAAO,EAC1CA,GAAK,QAAQ,KAAKxjI,GAAGA,GAAE,EAAG,EAAGwjI,GAAK,IAAI,EAEtCxjI,GAAE,GAAMwjI,GAAK,KAAO,GAAM,QACpB,CACN,IAAI1zJ,GAAI,EAAGA,GAAI0zJ,GAAK,KAAM,EAAE1zJ,GAAGkwB,GAAE,YAAY,EAAGwjI,GAAK,QAAQ1zJ,EAAC,CAAC,EAC/D,KAAMA,GAAI,GAAM,EAAEA,GAAGkwB,GAAE,YAAY,EAAG,CAAC,CACvC,CAGH,GAAI,QACHA,GAAE,EAAIA,GAAE,WAGR,MAAMA,GAAE,EAAIA,GAAE,QAAQA,GAAE,YAAY,EAAG,CAAC,EAEzC,OAAOA,EACR,CAEA,SAASioI,GAAKxB,GAAsBpyI,GAA+B,CAClE,IAAI6zI,GAAgCzB,GAAI,UAAU,IAAI,SAASr+J,GAAG,CAAE,OAAOA,GAAE,YAAa,CAAG,GACzF+/J,GAA4BD,GAAY,IAAI,SAAS9/J,GAAG,CAAE,IAAI0F,GAAI1F,GAAE,MAAM,GAAG,EAAG,OAAO0F,GAAEA,GAAE,QAAU1F,GAAE,MAAM,EAAE,GAAK,IAAM,EAAI,EAAE,CAAI,GACpI03B,GAAgB,GACjBzL,GAAK,WAAW,CAAC,IAAM,IAAgByL,GAAI,GAAMzL,GAAO6zI,GAAY,CAAC,EAAE,MAAM,EAAG,EAAE,EAAI7zI,IACpFyL,GAAIzL,GAAK,QAAQ,GAAG,IAAM,GAC/B,IAAI+zI,GAAoB/zI,GAAK,cACzBmP,GAAe1D,KAAM,GAAOooI,GAAY,QAAQE,EAAM,EAAID,GAAQ,QAAQC,EAAM,EACpF,GAAG5kI,KAAM,GAAI,OAAOijI,GAAI,UAAUjjI,EAAC,EAEnC,IAAI74B,GAAI,CAACy9J,GAAO,MAAM,IAAI,EAG1B,IAFAA,GAASA,GAAO,QAAQ,KAAK,EAAE,EAC5Bz9J,KAAGy9J,GAASA,GAAO,QAAQ,KAAK,GAAG,GAClC5kI,GAAI,EAAGA,GAAI0kI,GAAY,OAAQ,EAAE1kI,GAEpC,IADI74B,GAAIu9J,GAAY1kI,EAAC,EAAE,QAAQ,KAAK,GAAG,EAAI0kI,GAAY1kI,EAAC,GAAG,QAAQ,KAAK,EAAE,GAAK4kI,KAC3Ez9J,GAAIw9J,GAAQ3kI,EAAC,EAAE,QAAQ,KAAK,GAAG,EAAI2kI,GAAQ3kI,EAAC,GAAG,QAAQ,KAAK,EAAE,GAAK4kI,GAAQ,OAAO3B,GAAI,UAAUjjI,EAAC,EAEtG,OAAO,IACR,CAEA,IAAImiI,EAAO,GAGPf,EAAa,GAEbO,EAAmB,mBACnB0C,EAAa,CAAC,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAI,EAC5Db,GAAe,mCACfe,GAAS,CAEZ,WAAY,GACZ,QAAS,GACT,QAAS,GACT,WAAYnD,EACZ,SAAU,GAEV,iBAAkBO,EAClB,qBAAsB,OACtB,UAAW,GACX,SAAU,GACV,aAAc6B,GAEd,WAAY,CAAC,UAAU,UAAU,SAAS,YAAY,WAAW,MAAM,CACxE,EAEA,SAASqB,GAAW5B,GAAsB9D,GAAqBjiJ,GAAmC,CACjG6iJ,IACA,IAAIvjI,GAAIknI,GAAOT,GAAK/lJ,EAAO,EAE3B4iJ,EAAG,cAAcX,GAAU3iI,EAAC,CAC7B,CAEA,SAASsoI,GAAItoI,GAA2B,CAEvC,QADI1uB,GAAM,IAAI,MAAM0uB,GAAE,MAAM,EACpBp3B,GAAI,EAAGA,GAAIo3B,GAAE,OAAQ,EAAEp3B,GAAG0I,GAAI1I,EAAC,EAAI,OAAO,aAAao3B,GAAEp3B,EAAC,CAAC,EACnE,OAAO0I,GAAI,KAAK,EAAE,CACnB,CAEA,SAASi0H,GAAMkhC,GAAsB/lJ,GAA8C,CAClF,IAAIsf,GAAIknI,GAAOT,GAAK/lJ,EAAO,EAC3B,OAAOA,IAAWA,GAAQ,MAAQ,SAAQ,CACzC,IAAK,OAAQ,OAAA6iJ,IAAUD,EAAG,cAAc5iJ,GAAQ,SAAWsf,IAAoBA,GAC/E,IAAK,SAAU,OAAO,OAAOA,IAAK,SAAWA,GAAIsoI,GAAItoI,EAAC,EACtD,IAAK,SAAU,OAAO,cAAc,OAAOA,IAAK,SAAWA,GAAIsoI,GAAItoI,EAAC,CAAC,EACrE,IAAK,SAAU,GAAG,QAAS,OAAOv0B,SAAO,SAASu0B,EAAC,EAAIA,GAAI,YAAYA,EAAC,EAExE,IAAK,QAAS,OAAO,OAAOA,IAAK,SAAW,IAAIA,EAAC,EAAIA,EACrD,CACD,OAAOA,EACR,CAEA,IAAIuoI,GACJ,SAASC,EAASC,GAAM,CAAE,GAAI,CAC7B,IAAIC,GAAaD,GAAK,WAClBE,GAAU,IAAID,GAElB,GADAC,GAAQ,cAAc,IAAI,WAAW,CAAC,EAAG,CAAC,CAAC,EAAGA,GAAQ,gBAAgB,EACnEA,GAAQ,UAAWJ,GAAQE,OACzB,OAAM,IAAI,MAAM,gCAAgC,CACtD,OAAQ/9J,GAAG,CAAC,QAAQ,MAAM,4BAA8BA,GAAE,SAAWA,GAAE,EAAM,CAE7E,SAASk+J,GAAgBttG,GAASutG,GAAK,CACtC,GAAG,CAACN,GAAO,OAAOO,GAASxtG,GAASutG,EAAG,EACvC,IAAIH,GAAaH,GAAM,WACnBI,GAAU,IAAID,GACdp3J,GAAMq3J,GAAQ,cAAcrtG,GAAQ,MAAMA,GAAQ,CAAC,EAAGqtG,GAAQ,gBAAgB,EAClF,OAAArtG,GAAQ,GAAKqtG,GAAQ,UACdr3J,EACR,CAEA,SAASy3J,GAAgBztG,GAAS,CACjC,OAAOitG,GAAQA,GAAM,eAAejtG,EAAO,EAAI0tG,GAAS1tG,EAAO,CAChE,CACA,IAAI2tG,GAAa,CAAE,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,IAG7EC,GAAS,CAAI,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAI,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAGvJC,GAAS,CAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAE7J,SAASC,GAAWv6J,GAAG,CAAE,IAAIsb,IAAStb,IAAG,EAAIA,IAAG,IAAO,QAAcA,IAAG,EAAIA,IAAG,IAAO,OAAY,OAASsb,IAAG,GAAOA,IAAG,EAAIA,IAAG,GAAO,CAKtI,QAHIk/I,GAAmB,OAAO,WAAe,IAEzCC,GAAWD,GAAmB,IAAI,WAAW,GAAI,EAAI,GACjD1mE,GAAI,EAAGA,GAAK,IAAO,EAAEA,GAAG2mE,GAAS3mE,EAAC,EAAIymE,GAAWzmE,EAAC,EAE1D,SAAS4mE,GAAW16J,GAAGhC,GAAG,CACzB,IAAI28J,GAAMF,GAASz6J,GAAI,GAAI,EAC3B,OAAGhC,IAAK,EAAU28J,KAAS,EAAE38J,IAC7B28J,GAAOA,IAAO,EAAKF,GAAUz6J,IAAG,EAAG,GAAI,EACpChC,IAAK,GAAW28J,KAAS,GAAG38J,IAC/B28J,GAAOA,IAAO,EAAKF,GAAUz6J,IAAG,GAAI,GAAI,EACjC26J,KAAS,GAAG38J,IACpB,CAGA,SAAS48J,GAAYt9J,GAAKylF,GAAI,CAAE,IAAIpuD,GAAKouD,GAAG,EAAI5qE,GAAK4qE,KAAK,EAAI,OAASzlF,GAAI6a,EAAC,GAAGwc,IAAK,EAAI,EAAIr3B,GAAI6a,GAAE,CAAC,GAAG,MAAMwc,GAAI,CAAO,CACvH,SAASkmI,GAAYv9J,GAAKylF,GAAI,CAAE,IAAIpuD,GAAKouD,GAAG,EAAI5qE,GAAK4qE,KAAK,EAAI,OAASzlF,GAAI6a,EAAC,GAAGwc,IAAK,EAAI,EAAIr3B,GAAI6a,GAAE,CAAC,GAAG,MAAMwc,GAAI,CAAO,CACvH,SAASmmI,GAAYx9J,GAAKylF,GAAI,CAAE,IAAIpuD,GAAKouD,GAAG,EAAI5qE,GAAK4qE,KAAK,EAAI,OAASzlF,GAAI6a,EAAC,GAAGwc,IAAK,EAAI,EAAIr3B,GAAI6a,GAAE,CAAC,GAAG,MAAMwc,GAAI,EAAO,CACvH,SAASomI,GAAYz9J,GAAKylF,GAAI,CAAE,IAAIpuD,GAAKouD,GAAG,EAAI5qE,GAAK4qE,KAAK,EAAI,OAASzlF,GAAI6a,EAAC,GAAGwc,IAAK,EAAI,EAAIr3B,GAAI6a,GAAE,CAAC,GAAG,MAAMwc,GAAI,EAAO,CACvH,SAASqmI,GAAY19J,GAAKylF,GAAI,CAAE,IAAIpuD,GAAKouD,GAAG,EAAI5qE,GAAK4qE,KAAK,EAAI,OAASzlF,GAAI6a,EAAC,GAAGwc,IAAK,EAAI,EAAIr3B,GAAI6a,GAAE,CAAC,GAAG,MAAMwc,GAAI,GAAO,CAGvH,SAASsmI,GAAY39J,GAAKylF,GAAI/iF,GAAG,CAChC,IAAI20B,GAAKouD,GAAG,EAAI5qE,GAAK4qE,KAAK,EAAInsD,IAAM,GAAG52B,IAAG,EACtCoI,GAAI9K,GAAI6a,EAAC,IAAMwc,GAKnB,OAJG30B,GAAI,EAAI20B,KACXvsB,IAAK9K,GAAI6a,GAAE,CAAC,GAAI,EAAEwc,GACf30B,GAAI,GAAK20B,MACZvsB,IAAK9K,GAAI6a,GAAE,CAAC,GAAI,GAAGwc,GAChB30B,GAAI,GAAK20B,MACZvsB,IAAK9K,GAAI6a,GAAE,CAAC,GAAI,GAAGwc,IACZvsB,GAAIwuB,EACZ,CAGA,SAASskI,GAAa59J,GAAKylF,GAAI36E,GAAG,CAAE,IAAIusB,GAAIouD,GAAK,EAAG5qE,GAAI4qE,KAAO,EAC9D,OAAGpuD,IAAK,EAAGr3B,GAAI6a,EAAC,IAAM/P,GAAI,IAAMusB,IAE/Br3B,GAAI6a,EAAC,GAAM/P,IAAKusB,GAAK,IACrBr3B,GAAI6a,GAAE,CAAC,GAAK/P,GAAE,IAAO,EAAEusB,IAEjBouD,GAAK,CACb,CAEA,SAASo4E,GAAa79J,GAAKylF,GAAI36E,GAAG,CACjC,IAAIusB,GAAIouD,GAAK,EAAG5qE,GAAI4qE,KAAO,EAC3B,OAAA36E,IAAKA,GAAE,IAAMusB,GACbr3B,GAAI6a,EAAC,GAAK/P,GACH26E,GAAK,CACb,CACA,SAASq4E,GAAa99J,GAAKylF,GAAI36E,GAAG,CACjC,IAAIusB,GAAIouD,GAAK,EAAG5qE,GAAI4qE,KAAO,EAC3B,OAAA36E,KAAMusB,GACNr3B,GAAI6a,EAAC,GAAM/P,GAAI,IAAMA,MAAO,EAC5B9K,GAAI6a,GAAE,CAAC,EAAI/P,GACJ26E,GAAK,CACb,CACA,SAASs4E,GAAc/9J,GAAKylF,GAAI36E,GAAG,CAClC,IAAIusB,GAAIouD,GAAK,EAAG5qE,GAAI4qE,KAAO,EAC3B,OAAA36E,KAAMusB,GACNr3B,GAAI6a,EAAC,GAAM/P,GAAI,IAAMA,MAAO,EAC5B9K,GAAI6a,GAAE,CAAC,EAAI/P,GAAI,IACf9K,GAAI6a,GAAE,CAAC,EAAI/P,KAAM,EACV26E,GAAK,EACb,CAGA,SAASu4E,GAAQt9J,GAAGq2J,GAAe,CAClC,IAAI51C,GAAIzgH,GAAE,OAAQgkF,GAAI,EAAEy8B,GAAI41C,GAAK,EAAE51C,GAAI41C,GAAK,EAAGt6J,GAAI,EACnD,GAAG0kH,IAAK41C,GAAI,OAAOr2J,GACnB,GAAG,QAAS,CACX,IAAImzB,GAAI,eAAe6wD,EAAC,EAExB,GAAGhkF,GAAE,KAAMA,GAAE,KAAKmzB,EAAC,MACd,MAAMp3B,GAAIiE,GAAE,OAAQ,EAAEjE,GAAGo3B,GAAEp3B,EAAC,EAAIiE,GAAEjE,EAAC,EACxC,OAAOo3B,EACP,SAASqpI,GAAkB,CAC3B,IAAIx7J,GAAI,IAAI,WAAWgjF,EAAC,EACxB,GAAGhjF,GAAE,IAAKA,GAAE,IAAIhB,EAAC,MACZ,MAAMjE,GAAI0kH,GAAG,EAAE1kH,GAAGiF,GAAEjF,EAAC,EAAIiE,GAAEjE,EAAC,EACjC,OAAOiF,EACP,CACD,OAAAhB,GAAE,OAASgkF,GACJhkF,EACR,CAGA,SAASu9J,GAAgBv7J,GAAG,CAE3B,QADImxB,GAAI,IAAI,MAAMnxB,EAAC,EACXjG,GAAI,EAAGA,GAAIiG,GAAG,EAAEjG,GAAGo3B,GAAEp3B,EAAC,EAAI,EAClC,OAAOo3B,EACR,CAGA,SAASqqI,GAAWC,GAAOC,GAAMC,GAA2B,CAC3D,IAAI3M,GAAS,EAAGr6H,GAAI,EAAG56B,GAAI,EAAGkH,GAAI,EAAG26J,GAAQ,EAAGn9C,GAAIg9C,GAAM,OAEtDI,GAAYrB,GAAmB,IAAI,YAAY,EAAE,EAAIe,GAAgB,EAAE,EAC3E,IAAIxhK,GAAI,EAAGA,GAAI,GAAI,EAAEA,GAAG8hK,GAAS9hK,EAAC,EAAI,EAEtC,IAAIA,GAAI0kH,GAAG1kH,GAAI4hK,GAAK,EAAE5hK,GAAG0hK,GAAM1hK,EAAC,EAAI,EACpC0kH,GAAIg9C,GAAM,OAEV,IAAIK,GAAQtB,GAAmB,IAAI,YAAY/7C,EAAC,EAAI88C,GAAgB98C,EAAC,EAGrE,IAAI1kH,GAAI,EAAGA,GAAI0kH,GAAG,EAAE1kH,GACnB8hK,GAAUlnI,GAAI8mI,GAAM1hK,EAAC,CAAG,IACrBi1J,GAASr6H,KAAGq6H,GAASr6H,IACxBmnI,GAAM/hK,EAAC,EAAI,EAGZ,IADA8hK,GAAS,CAAC,EAAI,EACV9hK,GAAI,EAAGA,IAAKi1J,GAAQ,EAAEj1J,GAAG8hK,GAAS9hK,GAAE,EAAE,EAAK6hK,GAASA,GAAQC,GAAS9hK,GAAE,CAAC,GAAI,EAChF,IAAIA,GAAI,EAAGA,GAAI0kH,GAAG,EAAE1kH,GACnB6hK,GAAQH,GAAM1hK,EAAC,EACZ6hK,IAAS,IAAGE,GAAM/hK,EAAC,EAAI8hK,GAASD,GAAM,EAAE,KAI5C,IAAIG,GAAQ,EACZ,IAAIhiK,GAAI,EAAGA,GAAI0kH,GAAG,EAAE1kH,GAEnB,GADAgiK,GAAQN,GAAM1hK,EAAC,EACZgiK,IAAS,EAEX,IADAH,GAAQlB,GAAWoB,GAAM/hK,EAAC,EAAGi1J,EAAM,GAAIA,GAAO+M,GAC1C96J,IAAK,GAAI+tJ,GAAS,EAAI+M,IAAU,EAAG96J,IAAG,EAAG,EAAEA,GAC9Cy6J,GAAKE,GAAO36J,IAAG86J,EAAM,EAAKA,GAAM,GAAOhiK,IAAG,EAG7C,OAAOi1J,EACR,CAGA,IAAIgN,GAAWxB,GAAmB,IAAI,YAAY,GAAG,EAAIe,GAAgB,GAAG,EACxEU,GAAWzB,GAAmB,IAAI,YAAY,EAAE,EAAKe,GAAgB,EAAE,EAC3E,GAAG,CAACf,GAAkB,CACrB,QAAQzgK,GAAI,EAAGA,GAAI,IAAK,EAAEA,GAAGiiK,GAASjiK,EAAC,EAAI,EAC3C,IAAIA,GAAI,EAAGA,GAAI,GAAI,EAAEA,GAAGkiK,GAASliK,EAAC,EAAI,CACvC,EACC,UAAW,CAGX,QAFImiK,GAA0B,GAC1BniK,GAAI,EACHA,GAAE,GAAIA,KAAKmiK,GAAM,KAAK,CAAC,EAC5BV,GAAWU,GAAOD,GAAU,EAAE,EAE9B,IAAIR,GAA0B,GAE9B,IADA1hK,GAAI,EACEA,IAAG,IAAKA,KAAK0hK,GAAM,KAAK,CAAC,EAC/B,KAAM1hK,IAAG,IAAKA,KAAK0hK,GAAM,KAAK,CAAC,EAC/B,KAAM1hK,IAAG,IAAKA,KAAK0hK,GAAM,KAAK,CAAC,EAC/B,KAAM1hK,IAAG,IAAKA,KAAK0hK,GAAM,KAAK,CAAC,EAC/BD,GAAWC,GAAOO,GAAU,GAAG,CAChC,GAAC,EAAI,IAAIG,GAA4B,UAA2B,CAG/D,QAFIC,GAAY5B,GAAmB,IAAI,WAAW,KAAM,EAAI,GACxDv5J,GAAI,EAAGgwB,GAAI,EACThwB,GAAIq5J,GAAO,OAAS,EAAG,EAAEr5J,GAC9B,KAAMgwB,GAAIqpI,GAAOr5J,GAAE,CAAC,EAAG,EAAEgwB,GAAGmrI,GAAUnrI,EAAC,EAAIhwB,GAE5C,KAAKgwB,GAAI,MAAO,EAAEA,GAAGmrI,GAAUnrI,EAAC,EAAI,GAEpC,IAAIorI,GAAY7B,GAAmB,IAAI,WAAW,GAAK,EAAI,GAC3D,IAAIv5J,GAAI,EAAGgwB,GAAI,EAAGhwB,GAAIo5J,GAAO,OAAS,EAAG,EAAEp5J,GAC1C,KAAMgwB,GAAIopI,GAAOp5J,GAAE,CAAC,EAAG,EAAEgwB,GAAGorI,GAAUprI,EAAC,EAAIhwB,GAG5C,SAASq7J,GAAa3pJ,GAAMlQ,GAAK,CAEhC,QADI85J,GAAO,EACLA,GAAO5pJ,GAAK,QAAQ,CACzB,IAAI8rG,GAAI,KAAK,IAAI,MAAQ9rG,GAAK,OAAS4pJ,EAAI,EACvCpkJ,GAAIokJ,GAAO99C,IAAK9rG,GAAK,OAIzB,IAHAlQ,GAAI,YAAY,EAAG,CAAC0V,EAAC,EACrB1V,GAAI,YAAY,EAAGg8G,EAAC,EACpBh8G,GAAI,YAAY,EAAI,CAACg8G,GAAK,KAAM,EAC1BA,MAAM,GAAGh8G,GAAIA,GAAI,GAAG,EAAIkQ,GAAK4pJ,IAAM,CACzC,CACD,OAAO95J,GAAI,CACX,CAGD,SAAS+5J,GAAiB7pJ,GAAMlQ,GAAK,CAIpC,QAHIsgF,GAAK,EACLw5E,GAAO,EACPE,GAAQjC,GAAmB,IAAI,YAAY,KAAM,EAAI,GACnD+B,GAAO5pJ,GAAK,QAAQ,CACzB,IAAI8rG,GAA8B,KAAK,IAAI,MAAQ9rG,GAAK,OAAS4pJ,EAAI,EAGrE,GAAG99C,GAAI,GAAI,CAMV,IALA17B,GAAKm4E,GAAaz4J,GAAKsgF,GAAI,EAAIw5E,GAAO99C,IAAK9rG,GAAK,OAAO,EACpDowE,GAAK,IAAGA,IAAM,GAAKA,GAAK,IAC3BtgF,GAAI,EAAKsgF,GAAK,EAAK,EACnBtgF,GAAI,YAAY,EAAGg8G,EAAC,EACpBh8G,GAAI,YAAY,EAAI,CAACg8G,GAAK,KAAM,EAC1BA,MAAM,GAAGh8G,GAAIA,GAAI,GAAG,EAAIkQ,GAAK4pJ,IAAM,EACzCx5E,GAAKtgF,GAAI,EAAI,EACb,QACA,CAEDsgF,GAAKm4E,GAAaz4J,GAAKsgF,GAAI,EAAIw5E,GAAO99C,IAAK9rG,GAAK,QAAU,CAAC,EAE3D,QADI4xC,GAAO,EACLk6D,MAAM,GAAG,CACd,IAAItiH,GAAIwW,GAAK4pJ,EAAI,EACjBh4G,IAASA,IAAQ,EAAKpoD,IAAK,MAE3B,IAAI0vB,GAAQ,GAAI6wI,GAAO,EAEvB,IAAI7wI,GAAQ4wI,GAAMl4G,EAAI,KACrB14B,IAAS0wI,GAAO,OACb1wI,GAAQ0wI,KAAM1wI,IAAS,OACvBA,GAAQ0wI,IAAM,KAAM5pJ,GAAKkZ,GAAQ6wI,EAAI,GAAK/pJ,GAAK4pJ,GAAOG,EAAI,GAAKA,GAAO,KAAK,EAAEA,GAGjF,GAAGA,GAAO,EAAG,CAEZvgK,GAAIkgK,GAAUK,EAAI,EACfvgK,IAAK,GAAI4mF,GAAKq4E,GAAa34J,GAAKsgF,GAAI03E,GAASt+J,GAAE,CAAC,GAAG,CAAC,EAAI,GAE1Di/J,GAAa34J,GAAKsgF,GAAI,CAAC,EACvBA,IAAM,EACNq4E,GAAa34J,GAAKsgF,GAAI03E,GAASt+J,GAAE,EAAE,GAAG,CAAC,EACvC4mF,IAAM,GAEP,IAAI45E,GAAUxgK,GAAI,EAAK,EAAMA,GAAI,GAAI,EAClCwgK,GAAS,IACXtB,GAAc54J,GAAKsgF,GAAI25E,GAAOrC,GAAOl+J,EAAC,CAAC,EACvC4mF,IAAM45E,IAGPxgK,GAAIigK,GAAUG,GAAO1wI,EAAK,EAC1Bk3D,GAAKq4E,GAAa34J,GAAKsgF,GAAI03E,GAASt+J,EAAC,GAAG,CAAC,EACzC4mF,IAAM,EAEN,IAAI65E,GAASzgK,GAAI,EAAI,EAAKA,GAAE,GAAI,EAC7BygK,GAAS,IACXvB,GAAc54J,GAAKsgF,GAAIw5E,GAAO1wI,GAAQyuI,GAAOn+J,EAAC,CAAC,EAC/C4mF,IAAM65E,IAEP,QAAQ9oE,GAAI,EAAGA,GAAI4oE,GAAM,EAAE5oE,GAC1B2oE,GAAMl4G,EAAI,EAAIg4G,GAAO,MACrBh4G,IAASA,IAAQ,EAAK5xC,GAAK4pJ,EAAI,GAAK,MACpC,EAAEA,GAEH99C,IAAIi+C,GAAO,CAChB,MAEQvgK,IAAK,IAAKA,GAAIA,GAAI,GAChB4mF,GAAKo4E,GAAa14J,GAAKsgF,GAAI,CAAC,EACjCA,GAAKq4E,GAAa34J,GAAKsgF,GAAI03E,GAASt+J,EAAC,CAAC,EACtCsgK,GAAMl4G,EAAI,EAAIg4G,GAAO,MACrB,EAAEA,EAEH,CAEDx5E,GAAKq4E,GAAa34J,GAAKsgF,GAAI,CAAC,EAAI,CAChC,CACD,OAAAtgF,GAAI,GAAMsgF,GAAK,GAAG,EAAG,EACdtgF,GAAI,CACX,CACD,OAAO,SAAqBkQ,GAAMlQ,GAAK,CACtC,OAAGkQ,GAAK,OAAS,EAAU2pJ,GAAa3pJ,GAAMlQ,EAAG,EAC1C+5J,GAAiB7pJ,GAAMlQ,EAAG,CACnC,CACA,IAEA,SAAS03J,GAASxnJ,GAAM,CACvB,IAAIrV,GAAM,QAAQ,GAAG,KAAK,MAAMqV,GAAK,OAAO,GAAG,CAAC,EAC5C6yC,GAAM22G,GAAYxpJ,GAAMrV,EAAG,EAC/B,OAAOA,GAAI,MAAM,EAAGkoD,EAAG,CACxB,CAGA,IAAIq3G,GAAWrC,GAAmB,IAAI,YAAY,KAAK,EAAIe,GAAgB,KAAK,EAC5EuB,GAAWtC,GAAmB,IAAI,YAAY,KAAK,EAAIe,GAAgB,KAAK,EAC5EwB,GAAWvC,GAAmB,IAAI,YAAY,GAAG,EAAMe,GAAgB,GAAG,EAC1EyB,GAAY,EAAGC,GAAY,EAG/B,SAASC,GAAIvqJ,GAAM4pJ,GAAiB,CAEnC,IAAIY,GAAQpC,GAAYpoJ,GAAM4pJ,EAAI,EAAI,IAAKA,IAAQ,EACnD,IAAIa,GAASrC,GAAYpoJ,GAAM4pJ,EAAI,EAAI,EAAGA,IAAQ,EAClD,IAAIc,GAASvC,GAAYnoJ,GAAM4pJ,EAAI,EAAI,EAAGA,IAAQ,EAUlD,QATI5nI,GAAI,EAGJ8mI,GAAQjB,GAAmB,IAAI,WAAW,EAAE,EAAIe,GAAgB,EAAE,EAClEO,GAAQ,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChE9M,GAAS,EACT6M,GAAYrB,GAAmB,IAAI,WAAW,CAAC,EAAIe,GAAgB,CAAC,EACpE+B,GAAY9C,GAAmB,IAAI,WAAW,CAAC,EAAIe,GAAgB,CAAC,EACpE98C,GAAIg9C,GAAM,OACN1hK,GAAI,EAAGA,GAAIsjK,GAAQ,EAAEtjK,GAC5B0hK,GAAMrB,GAAWrgK,EAAC,CAAC,EAAI46B,GAAIkmI,GAAYloJ,GAAM4pJ,EAAI,EAC9CvN,GAASr6H,KAAGq6H,GAASr6H,IACxBknI,GAASlnI,EAAC,IACV4nI,IAAQ,EAIT,IAAIX,GAAQ,EAEZ,IADAC,GAAS,CAAC,EAAI,EACV9hK,GAAI,EAAGA,IAAKi1J,GAAQ,EAAEj1J,GAAGujK,GAAUvjK,EAAC,EAAI6hK,GAASA,GAAQC,GAAS9hK,GAAE,CAAC,GAAI,EAC7E,IAAIA,GAAI,EAAGA,GAAI0kH,GAAG,EAAE1kH,IAAO6hK,GAAQH,GAAM1hK,EAAC,IAAM,IAAG+hK,GAAM/hK,EAAC,EAAIujK,GAAU1B,EAAK,KAE7E,IAAIG,GAAQ,EACZ,IAAIhiK,GAAI,EAAGA,GAAI0kH,GAAG,EAAE1kH,GAEnB,GADAgiK,GAAQN,GAAM1hK,EAAC,EACZgiK,IAAS,EAAG,CACdH,GAAQnB,GAASqB,GAAM/hK,EAAC,CAAC,GAAI,EAAEgiK,GAC/B,QAAQ96J,IAAK,GAAI,EAAE86J,IAAQ,EAAG96J,IAAG,EAAG,EAAEA,GAAG87J,GAASnB,GAAO36J,IAAG86J,EAAM,EAAKA,GAAM,EAAMhiK,IAAG,CACtF,CAIF,IAAIwjK,GAA2B,GAE/B,IADAvO,GAAS,EACHuO,GAAO,OAASJ,GAAQC,IAG7B,OAFAxB,GAAQmB,GAAS/B,GAAYroJ,GAAM4pJ,EAAI,CAAC,EACxCA,IAAQX,GAAQ,EACRA,MAAW,EAAC,CACnB,IAAK,IAGJ,IAFAjnI,GAAI,EAAIimI,GAAYjoJ,GAAM4pJ,EAAI,EAAGA,IAAQ,EACzCX,GAAQ2B,GAAOA,GAAO,OAAS,CAAC,EAC1B5oI,MAAM,GAAG4oI,GAAO,KAAK3B,EAAK,EAChC,MACD,IAAK,IAEJ,IADAjnI,GAAI,EAAIkmI,GAAYloJ,GAAM4pJ,EAAI,EAAGA,IAAQ,EACnC5nI,MAAM,GAAG4oI,GAAO,KAAK,CAAC,EAC5B,MACD,IAAK,IAEJ,IADA5oI,GAAI,GAAKqmI,GAAYroJ,GAAM4pJ,EAAI,EAAGA,IAAQ,EACpC5nI,MAAO,GAAG4oI,GAAO,KAAK,CAAC,EAC7B,MACD,QACCA,GAAO,KAAK3B,EAAK,EACd5M,GAAS4M,KAAO5M,GAAS4M,IAC5B,KACD,CAIF,IAAI4B,GAAKD,GAAO,MAAM,EAAGJ,EAAK,EAAG7wI,GAAKixI,GAAO,MAAMJ,EAAK,EACxD,IAAIpjK,GAAIojK,GAAOpjK,GAAI,IAAK,EAAEA,GAAGyjK,GAAGzjK,EAAC,EAAI,EACrC,IAAIA,GAAIqjK,GAAQrjK,GAAI,GAAI,EAAEA,GAAGuyB,GAAGvyB,EAAC,EAAI,EACrC,OAAAijK,GAAYxB,GAAWgC,GAAIX,GAAU,GAAG,EACxCI,GAAYzB,GAAWlvI,GAAIwwI,GAAU,EAAE,EAChCP,EACR,CAGA,SAASkB,GAAQ9qJ,GAAMqnJ,GAAgB,CAEtC,GAAGrnJ,GAAK,CAAC,GAAK,GAAK,EAAEA,GAAK,CAAC,EAAI,GAAQ,MAAO,CAAC,YAAYqnJ,EAAG,EAAG,CAAC,EAalE,QAVIuC,GAAO,EAGPjoD,GAAS,EAETopD,GAAS,eAAe1D,IAAa,GAAG,EAAG,EAC3C2D,GAAO,EACPC,GAAKF,GAAO,SAAS,EACrBG,GAAY,EAAGC,GAAY,EAExB,EAAAxpD,GAAO,IAAS,CAEtB,GADAA,GAASumD,GAAYloJ,GAAM4pJ,EAAI,EAAGA,IAAQ,EACtCjoD,KAAW,EAYJA,IAAU,GAAM,GAE1BupD,GAAY,EAAGC,GAAY,IAG3BvB,GAAOW,GAAIvqJ,GAAM4pJ,EAAI,EACrBsB,GAAYb,GAAWc,GAAYb,QAlBZ,CAEpBV,GAAO,IAAGA,IAAQ,GAAKA,GAAK,IAE/B,IAAIlI,GAAK1hJ,GAAK4pJ,KAAO,CAAC,EAAI5pJ,IAAM4pJ,KAAO,GAAG,CAAC,GAAG,EAG9C,GAFAA,IAAQ,GAELlI,GAAK,EAEP,IADG,CAAC2F,IAAO4D,GAAKD,GAAOtJ,KAAMqJ,GAASpC,GAAQoC,GAAQC,GAAOtJ,EAAE,EAAGuJ,GAAKF,GAAO,QACxErJ,MAAO,GAAKqJ,GAAOC,IAAM,EAAIhrJ,GAAK4pJ,KAAO,CAAC,EAAGA,IAAQ,EAE5D,QACA,CAQD,OAAQ,CACJ,CAACvC,IAAQ4D,GAAKD,GAAO,QAAUD,GAASpC,GAAQoC,GAAQC,GAAO,KAAK,EAAGC,GAAKF,GAAO,QAEtF,IAAIl+G,GAAOy7G,GAAYtoJ,GAAM4pJ,GAAMsB,EAAS,EACxCrjK,GAAQ85G,KAAS,GAAM,EAAI0nD,GAASx8G,EAAI,EAAIq9G,GAASr9G,EAAI,EAG7D,GAFA+8G,IAAQ/hK,GAAO,GAAIA,MAAU,EAExB,EAAAA,KAAO,EAAG,KAAakjK,GAAOC,IAAM,EAAInjK,OACxC,IAAGA,IAAQ,IAAK,MAEpBA,IAAQ,IACR,IAAImiK,GAAUniK,GAAO,EAAK,EAAMA,GAAK,GAAI,EAAOmiK,GAAS,IAAGA,GAAS,GACrE,IAAIrI,GAAMqJ,GAAOtD,GAAO7/J,EAAI,EAEzBmiK,GAAS,IACXrI,IAAO2G,GAAYtoJ,GAAM4pJ,GAAMI,EAAM,EACrCJ,IAAQI,IAITn9G,GAAOy7G,GAAYtoJ,GAAM4pJ,GAAMuB,EAAS,EACxCtjK,GAAQ85G,KAAS,GAAM,EAAI2nD,GAASz8G,EAAI,EAAIs9G,GAASt9G,EAAI,EACzD+8G,IAAQ/hK,GAAO,GAAIA,MAAU,EAC7B,IAAIoiK,GAAUpiK,GAAO,EAAI,EAAKA,GAAK,GAAI,EACnC+K,GAAM+0J,GAAO9/J,EAAI,EASrB,IAPGoiK,GAAS,IACXr3J,IAAO01J,GAAYtoJ,GAAM4pJ,GAAMK,EAAM,EACrCL,IAAQK,IAIN,CAAC5C,IAAO4D,GAAKtJ,KAAOoJ,GAASpC,GAAQoC,GAAQpJ,GAAM,GAAG,EAAGsJ,GAAKF,GAAO,QAClEC,GAAOrJ,IAAOoJ,GAAOC,EAAI,EAAID,GAAOC,GAAOp4J,EAAG,EAAG,EAAEo4J,GAE1D,CACD,CACD,OAAG3D,GAAY,CAAC0D,GAASnB,GAAK,IAAK,CAAC,EAC7B,CAACmB,GAAO,MAAM,EAAGC,EAAI,EAAIpB,GAAK,IAAK,CAAC,CAC5C,CAEA,SAAStC,GAASxtG,GAASutG,GAAK,CAC/B,IAAIrnJ,GAAO85C,GAAQ,MAAMA,GAAQ,GAAG,CAAC,EACjChqD,GAAMg7J,GAAQ9qJ,GAAMqnJ,EAAG,EAC3B,OAAAvtG,GAAQ,GAAKhqD,GAAI,CAAC,EACXA,GAAI,CAAC,CACb,CAEA,SAASs7J,GAAcC,GAAKp5J,GAAK,CAChC,GAAGo5J,GAAU,OAAO,QAAY,KAAa,QAAQ,MAAMp5J,EAAG,MACzD,OAAM,IAAI,MAAMA,EAAG,CACzB,CAEA,SAASgwJ,GAAUD,GAAmB9iJ,GAA0C,CAC/E,IAAIuiJ,GAAyBO,GAC7B,UAAUP,GAAM,CAAC,EAEjB,IAAI8B,GAA6B,GAAIC,GAA8B,GAC/DhlI,GAAI,CACP,UAAW+kI,GACX,UAAWC,EACb,EACCwB,EAASxmI,GAAG,CAAE,KAAMtf,GAAQ,IAAM,GAIlC,QADI9X,GAAIq6J,GAAK,OAAS,GACfA,GAAKr6J,EAAC,GAAK,IAAQq6J,GAAKr6J,GAAE,CAAC,GAAK,IAAQq6J,GAAKr6J,GAAE,CAAC,GAAK,GAAQq6J,GAAKr6J,GAAE,CAAC,GAAK,IAASA,IAAK,GAAG,EAAEA,GACpGq6J,GAAK,EAAIr6J,GAAI,EAGbq6J,GAAK,GAAK,EACV,IAAI6J,GAAO7J,GAAK,WAAW,CAAC,EAC5BA,GAAK,GAAK,EACV,IAAI8J,GAAW9J,GAAK,WAAW,CAAC,EAKhC,IAFAA,GAAK,EAAI8J,GAELnkK,GAAI,EAAGA,GAAIkkK,GAAM,EAAElkK,GAAG,CAEzBq6J,GAAK,GAAK,GACV,IAAI+J,GAAM/J,GAAK,WAAW,CAAC,EACvB4F,GAAM5F,GAAK,WAAW,CAAC,EACvBkD,GAAUlD,GAAK,WAAW,CAAC,EAC3BgK,GAAOhK,GAAK,WAAW,CAAC,EACxBiK,GAAOjK,GAAK,WAAW,CAAC,EAC5BA,GAAK,GAAK,EACV,IAAI34J,GAAS24J,GAAK,WAAW,CAAC,EAC1BkK,GAAKnK,EAAyBC,GAAK,MAAMA,GAAK,EAAEkD,GAASlD,GAAK,EAAEkD,GAAQ8G,EAAI,CAAC,EACjFhK,GAAK,GAAKkD,GAAU8G,GAAOC,GAE3B,IAAI5/C,GAAI21C,GAAK,EACbA,GAAK,EAAI34J,GAAS,EAEf6iK,IAAMA,GAAG,CAAM,KACbA,GAAG,CAAM,GAAG,CAAE,GAAE,MAAKtE,GAAMsE,GAAG,CAAM,EAAE,MACtCA,GAAG,CAAM,GAAG,CAAE,GAAE,MAAKH,GAAMG,GAAG,CAAM,EAAE,MAE3CC,GAAiBnK,GAAM+J,GAAKnE,GAAK7oI,GAAGmtI,EAAE,EACtClK,GAAK,EAAI31C,EACT,CAED,OAAOttF,EACR,CAIA,SAASotI,GAAiBnK,GAAiB+J,GAAgBnE,GAAgB7oI,GAAoBmtI,GAAI,CAElGlK,GAAK,GAAK,EACV,IAAI3/G,GAAQ2/G,GAAK,WAAW,CAAC,EACzBoK,GAAOpK,GAAK,WAAW,CAAC,EACxBvvF,GAAOqvF,EAAeE,EAAI,EAE9B,GAAG3/G,GAAQ,KAAQ,MAAM,IAAI,MAAM,4BAA4B,EAShD,QARXgqH,GAAQrK,GAAK,WAAW,CAAC,EACzBsK,GAAOtK,GAAK,WAAW,CAAC,EACxBuK,GAAOvK,GAAK,WAAW,CAAC,EAExBkD,GAAUlD,GAAK,WAAW,CAAC,EAC3BgK,GAAOhK,GAAK,WAAW,CAAC,EAGxBl6J,GAAO,GAAYH,GAAI,EAAGA,GAAIu9J,GAAS,EAAEv9J,GAAGG,IAAQ,OAAO,aAAak6J,GAAKA,GAAK,GAAG,CAAC,EAC1F,GAAGgK,GAAM,CACR,IAAIQ,GAAKzK,EAAyBC,GAAK,MAAMA,GAAK,EAAGA,GAAK,EAAIgK,EAAI,IAC9DQ,GAAG,KAAM,GAAG,CAAE,GAAE,KAAI/5F,GAAO+5F,GAAG,KAAM,EAAE,KACtCA,GAAG,CAAM,GAAG,CAAE,GAAE,MAAKD,GAAOC,GAAG,CAAM,EAAE,MACvCA,GAAG,CAAM,GAAG,CAAE,GAAE,MAAKF,GAAOE,GAAG,CAAM,EAAE,KACxCN,MACEA,GAAG,KAAM,GAAG,CAAE,GAAE,KAAIz5F,GAAOy5F,GAAG,KAAM,EAAE,KACtCA,GAAG,CAAM,GAAG,CAAE,GAAE,MAAKK,GAAOC,GAAG,CAAM,EAAE,MACvCN,GAAG,CAAM,GAAG,CAAE,GAAE,MAAKI,GAAOE,GAAG,CAAM,EAAE,KAE5C,CACDxK,GAAK,GAAKgK,GAKV,IAAIzrJ,GAAOyhJ,GAAK,MAAMA,GAAK,EAAGA,GAAK,EAAIsK,EAAI,EAC3C,OAAOF,GAAI,CACV,IAAK,GAAG7rJ,GAAOonJ,GAAgB3F,GAAMuK,EAAI,EAAG,MAC5C,IAAK,GAAG,MACR,QAAS,MAAM,IAAI,MAAM,sCAAwCH,EAAI,CACrE,CAGD,IAAIR,GAAM,GACPvpH,GAAQ,IACVgqH,GAAQrK,GAAK,WAAW,CAAC,EACtBqK,IAAS,YAAcA,GAAQrK,GAAK,WAAW,CAAC,EAAG4J,GAAM,IAC5DU,GAAOtK,GAAK,WAAW,CAAC,EACxBuK,GAAOvK,GAAK,WAAW,CAAC,GAGtBsK,IAAQP,IAAKJ,GAAcC,GAAK,wBAA0BG,GAAM,OAASO,EAAI,EAC7EC,IAAQ3E,IAAK+D,GAAcC,GAAK,0BAA4BhE,GAAM,OAAS2E,EAAI,EAGlFE,GAAQ1tI,GAAGj3B,GAAMyY,GAAM,CAAC,OAAQ,GAAM,GAAIkyD,EAAI,CAAC,CAChD,CACA,SAAS2zF,GAAUZ,GAAsB/lJ,GAAuC,CAC/E,IAAIymJ,GAAQzmJ,IAAW,GACnBpP,GAAM,GAAIq8J,GAAQ,GAClB3tI,GAAe,QAAQ,CAAC,EACxBxlB,GAAU2sJ,GAAM,YAAc,EAAI,EAAI7jH,GAAQ,EAG9C16C,GAAI,EAAGkH,GAAI,EAEXi9J,GAAW,EAAGD,GAAO,EACrB/qJ,GAAO0kJ,GAAI,UAAU,CAAC,EAAGmH,GAAK7rJ,GAAM8rJ,GAAKpH,GAAI,UAAU,CAAC,EACxDqH,GAAO,GACPC,GAAQ,EAEZ,IAAInlK,GAAI,EAAGA,GAAI69J,GAAI,UAAU,OAAQ,EAAE79J,GAEtC,GADAglK,GAAKnH,GAAI,UAAU79J,EAAC,EAAE,MAAMmZ,GAAK,MAAM,EAAG8rJ,GAAKpH,GAAI,UAAU79J,EAAC,EAC3D,GAACilK,GAAG,MAAQ,CAACA,GAAG,SAAWD,IAAM,YACpC,KAAI7jK,GAAQgjK,GAGRiB,GAAU,QAAQJ,GAAG,MAAM,EAC/B,IAAI99J,GAAI,EAAGA,GAAI89J,GAAG,OAAQ,EAAE99J,GAAGk+J,GAAQ,YAAY,EAAGJ,GAAG,WAAW99J,EAAC,EAAI,GAAI,EAC7Ek+J,GAAUA,GAAQ,MAAM,EAAGA,GAAQ,CAAC,EACpCF,GAAKhB,EAAI,EAAI,OAAOe,GAAG,SAAW,SAAW,MAAM,KAAKA,GAAG,QAAS,CAAC,EAAI,MAAM,IAAYA,GAAG,QAAyB,CAAC,EAExH,IAAItB,GAAS,OAAOsB,GAAG,SAAW,SAAW,IAAIA,GAAG,OAAO,EAAIA,GAAG,QAC/DrzJ,IAAU,IAAG+xJ,GAASxD,GAAgBwD,EAAM,GAG/CvsI,GAAI,QAAQ,EAAE,EACdA,GAAE,YAAY,EAAG,QAAU,EAC3BA,GAAE,YAAY,EAAG,EAAE,EACnBA,GAAE,YAAY,EAAGsjB,EAAK,EACtBtjB,GAAE,YAAY,EAAGxlB,EAAM,EAEpBqzJ,GAAG,GAAIjL,EAAe5iI,GAAG6tI,GAAG,EAAE,EAC5B7tI,GAAE,YAAY,EAAG,CAAC,EACvBA,GAAE,YAAY,GAAsB8tI,GAAKhB,EAAI,CAAC,EAC9C9sI,GAAE,YAAY,EAAsBusI,GAAO,MAAM,EACjDvsI,GAAE,YAAY,EAA6B6tI,GAAG,QAAmB,MAAM,EACvE7tI,GAAE,YAAY,EAAGguI,GAAQ,MAAM,EAC/BhuI,GAAE,YAAY,EAAG,CAAC,EAElB+sI,IAAY/sI,GAAE,OACd1uB,GAAI,KAAK0uB,EAAC,EACV+sI,IAAYiB,GAAQ,OACpB18J,GAAI,KAAK08J,EAAO,EAMhBjB,IAAYR,GAAO,OACnBj7J,GAAI,KAAKi7J,EAAM,EAafvsI,GAAI,QAAQ,EAAE,EACdA,GAAE,YAAY,EAAG,QAAU,EAC3BA,GAAE,YAAY,EAAG,CAAC,EAClBA,GAAE,YAAY,EAAG,EAAE,EACnBA,GAAE,YAAY,EAAGsjB,EAAK,EACtBtjB,GAAE,YAAY,EAAGxlB,EAAM,EACvBwlB,GAAE,YAAY,EAAG,CAAC,EAClBA,GAAE,YAAY,GAAI8tI,GAAKhB,EAAI,CAAC,EAE5B9sI,GAAE,YAAY,EAAGusI,GAAO,MAAM,EAC9BvsI,GAAE,YAAY,EAAU6tI,GAAG,QAAmB,MAAM,EACpD7tI,GAAE,YAAY,EAAGguI,GAAQ,MAAM,EAC/BhuI,GAAE,YAAY,EAAG,CAAC,EAClBA,GAAE,YAAY,EAAG,CAAC,EAClBA,GAAE,YAAY,EAAG,CAAC,EAClBA,GAAE,YAAY,EAAG,CAAC,EAClBA,GAAE,YAAY,EAAG,CAAC,EAClBA,GAAE,YAAY,EAAGj2B,EAAK,EAEtBgkK,IAAS/tI,GAAE,EACX2tI,GAAM,KAAK3tI,EAAC,EACZ+tI,IAASC,GAAQ,OACjBL,GAAM,KAAKK,EAAO,EAClB,EAAElB,GAIH,OAAA9sI,GAAI,QAAQ,EAAE,EACdA,GAAE,YAAY,EAAG,SAAU,EAC3BA,GAAE,YAAY,EAAG,CAAC,EAClBA,GAAE,YAAY,EAAG,CAAC,EAClBA,GAAE,YAAY,EAAG8sI,EAAI,EACrB9sI,GAAE,YAAY,EAAG8sI,EAAI,EACrB9sI,GAAE,YAAY,EAAG+tI,EAAK,EACtB/tI,GAAE,YAAY,EAAG+sI,EAAQ,EACzB/sI,GAAE,YAAY,EAAG,CAAC,EAEX,QAAS,CAAC,QAAS1uB,EAAG,EAAY,QAAQq8J,EAAK,EAAG3tI,EAAC,EAC3D,CACA,IAAIiuI,GAAkB,CACrB,IAAO,YACP,IAAO,WAEP,IAAO,YACP,IAAO,aACP,IAAO,YAEP,IAAO,oBACP,KAAQ,iCACR,QAAW,0BACZ,EAEA,SAASC,GAAiBL,GAAiBD,GAA0B,CACpE,GAAGC,GAAG,MAAO,OAAOA,GAAG,MAEvB,IAAIl8J,GAAMk8J,GAAG,MAAQ,GAAIljK,GAAIgH,GAAI,MAAM,aAAa,EAGpD,OAFGhH,IAAKsjK,GAAetjK,GAAE,CAAC,CAAC,GAExBijK,KACFjjK,IAAKgH,GAAMi8J,IAAI,MAAM,mBAAmB,EACrCjjK,IAAKsjK,GAAetjK,GAAE,CAAC,CAAC,GAAUsjK,GAAetjK,GAAE,CAAC,CAAC,EAGlD,0BACR,CAGA,SAASwjK,GAAgB9L,GAA4B,CAGpD,QAFI7gJ,GAAO,cAAc6gJ,EAAI,EACzBriI,GAAI,GACAp3B,GAAI,EAAGA,GAAI4Y,GAAK,OAAQ5Y,IAAI,GAAIo3B,GAAE,KAAKxe,GAAK,MAAM5Y,GAAGA,GAAE,EAAE,CAAC,EAClE,OAAOo3B,GAAE,KAAK;AAAA,CAAM,EAAI;AAAA,CACzB,CAgBA,SAASouI,GAAuBj1I,GAA4B,CAC3D,IAAIk1I,GAAUl1I,GAAK,QAAQ,0CAA2C,SAAShuB,GAAG,CACjF,IAAIq4B,GAAIr4B,GAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,cACrC,MAAO,KAAOq4B,GAAE,QAAU,EAAI,IAAMA,GAAIA,GAC1C,CAAE,EAED6qI,GAAUA,GAAQ,QAAQ,OAAQ,KAAK,EAAE,QAAQ,QAAS,KAAK,EAE5DA,GAAQ,OAAO,CAAC,GAAK;AAAA,IAAMA,GAAU,MAAQA,GAAQ,MAAM,CAAC,GAC/DA,GAAUA,GAAQ,QAAQ,aAAc,KAAK,EAAE,QAAQ,SAAU;AAAA,IAAO,EAAE,QAAQ,gBAAiB,OAAO,EAG1G,QADIruI,GAAsB,GAAIs0E,GAAQ+5D,GAAQ,MAAM;AAAA,CAAM,EAClDC,GAAK,EAAGA,GAAKh6D,GAAM,OAAQ,EAAEg6D,GAAI,CACxC,IAAIx/J,GAAMwlG,GAAMg6D,EAAE,EAClB,GAAGx/J,GAAI,QAAU,EAAG,CAAEkxB,GAAE,KAAK,EAAE,EAAG,QAAW,CAC7C,QAAQp3B,GAAI,EAAGA,GAAIkG,GAAI,QAAS,CAC/B,IAAI9E,GAAM,GACNN,GAAMoF,GAAI,MAAMlG,GAAGA,GAAIoB,EAAG,EAC3BN,GAAI,OAAOM,GAAM,CAAC,GAAK,IAAKA,KACvBN,GAAI,OAAOM,GAAM,CAAC,GAAK,IAAKA,IAAO,EACnCN,GAAI,OAAOM,GAAM,CAAC,GAAK,MAAKA,IAAO,GAC3CN,GAAMoF,GAAI,MAAMlG,GAAGA,GAAIoB,EAAG,EAC1BpB,IAAKoB,GACFpB,GAAIkG,GAAI,SAAQpF,IAAO,KAC1Bs2B,GAAE,KAAKt2B,EAAG,CACV,CACD,CAED,OAAOs2B,GAAE,KAAK;AAAA,CAAM,CACrB,CACA,SAASuuI,GAAuB/sJ,GAAqC,CAIpE,QAHIwe,GAAI,GAGAwuI,GAAK,EAAGA,GAAKhtJ,GAAK,OAAQ,EAAEgtJ,GAAI,CAEvC,QADIx+H,GAAOxuB,GAAKgtJ,EAAE,EACZA,IAAMhtJ,GAAK,QAAUwuB,GAAK,OAAOA,GAAK,OAAS,CAAC,GAAK,KAAKA,GAAOA,GAAK,MAAM,EAAGA,GAAK,OAAS,CAAC,EAAIxuB,GAAK,EAAEgtJ,EAAE,EACjHxuI,GAAE,KAAKgQ,EAAI,CACX,CAGD,QAAQy+H,GAAK,EAAGA,GAAKzuI,GAAE,OAAQ,EAAEyuI,GAAIzuI,GAAEyuI,EAAE,EAAIzuI,GAAEyuI,EAAE,EAAE,QAAQ,qBAAsB,SAASxP,GAAI,CAAE,OAAO,OAAO,aAAa,SAASA,GAAG,MAAM,CAAC,EAAG,EAAE,CAAC,CAAI,GACxJ,OAAO,IAAIj/H,GAAE,KAAK;AAAA,CAAM,CAAC,CAC1B,CAGA,SAAS0uI,GAAWjI,GAAsBjlJ,GAAwBO,GAA0B,CAG3F,QAFI4sJ,GAAQ,GAAIC,GAAM,GAAIC,GAAQ,GAAIC,GAClCN,GAAK,EACJA,GAAK,GAAI,EAAEA,GAAI,CACnB,IAAIx+H,GAAOxuB,GAAKgtJ,EAAE,EAClB,GAAG,CAACx+H,IAAQA,GAAK,MAAM,OAAO,EAAG,MACjC,IAAIrlC,GAAIqlC,GAAK,MAAM,sBAAsB,EACzC,GAAGrlC,GAAG,OAAOA,GAAE,CAAC,EAAE,YAAa,GAC9B,IAAK,mBAAoBgkK,GAAQhkK,GAAE,CAAC,EAAE,KAAM,EAAE,MAC9C,IAAK,eAAgBkkK,GAAQlkK,GAAE,CAAC,EAAE,KAAM,EAAE,MAC1C,IAAK,4BAA6BikK,GAAMjkK,GAAE,CAAC,EAAE,KAAM,EAAE,KACrD,CACD,CAED,OADA,EAAE6jK,GACKI,GAAI,YAAa,GACvB,IAAK,SAAUE,GAAQ,IAAI,cAActtJ,GAAK,MAAMgtJ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAG,MACpE,IAAK,mBAAoBM,GAAQP,GAAuB/sJ,GAAK,MAAMgtJ,EAAE,CAAC,EAAG,MACzE,QAAS,MAAM,IAAI,MAAM,yCAA2CI,EAAG,CACvE,CACD,IAAIpL,GAAOkK,GAAQjH,GAAKkI,GAAM,MAAM5sJ,GAAK,MAAM,EAAG+sJ,GAAO,CAAC,OAAQ,EAAI,CAAC,EACpED,KAAOrL,GAAK,MAAQqL,GACxB,CAEA,SAASnL,GAAUF,GAAmB9iJ,GAA0C,CAC/E,GAAG4nJ,GAAI9E,GAAK,MAAM,EAAE,EAAE,CAAC,EAAE,YAAW,GAAM,gBAAiB,MAAM,IAAI,MAAM,wBAAwB,EACnG,IAAIzhJ,GAAQrB,IAAWA,GAAQ,MAAQ,GAEnCc,IAAQ,SAAW/V,SAAO,SAAS+3J,EAAI,EAAIA,GAAK,SAAS,QAAQ,EAAI8E,GAAI9E,EAAI,GAAG,MAAM;AAAA,CAAM,EAC5FgL,GAAK,EAAGO,GAAM,GAGlB,IAAIP,GAAK,EAAGA,GAAKhtJ,GAAK,OAAQ,EAAEgtJ,GAE/B,GADAO,GAAMvtJ,GAAKgtJ,EAAE,EACV,EAAC,sBAAsB,KAAKO,EAAG,IAClCA,GAAMA,GAAI,MAAMA,GAAI,QAAQ,MAAM,CAAC,EAC/BhtJ,KAAMA,GAAOgtJ,GAAI,MAAM,EAAGA,GAAI,YAAY,GAAG,EAAI,CAAC,GACnDA,GAAI,MAAM,EAAGhtJ,GAAK,MAAM,GAAKA,IAChC,KAAMA,GAAK,OAAS,IACnBA,GAAOA,GAAK,MAAM,EAAGA,GAAK,OAAS,CAAC,EACpCA,GAAOA,GAAK,MAAM,EAAGA,GAAK,YAAY,GAAG,EAAI,CAAC,EAC3CgtJ,GAAI,MAAM,EAAEhtJ,GAAK,MAAM,GAAKA,KAA/B,CAIF,IAAIitJ,IAAaxtJ,GAAK,CAAC,GAAK,IAAI,MAAM,kBAAkB,EACxD,GAAG,CAACwtJ,GAAW,MAAM,IAAI,MAAM,0BAA0B,EACzD,IAAIC,GAAW,MAAQD,GAAU,CAAC,GAAK,IAEnCjK,GAA6B,GAAIC,GAA8B,GAC/DhlI,GAAI,CACP,UAAW+kI,GACX,UAAWC,EACb,EACCwB,EAASxmI,EAAC,EACV,IAAIkvI,GAAUpC,GAAO,EACrB,IAAI0B,GAAK,EAAGA,GAAKhtJ,GAAK,OAAQ,EAAEgtJ,GAAI,CACnC,IAAIx+H,GAAOxuB,GAAKgtJ,EAAE,EACfx+H,KAASi/H,IAAYj/H,KAASi/H,GAAW,OACzCnC,MAAQ4B,GAAW1uI,GAAGxe,GAAK,MAAM0tJ,GAAUV,EAAE,EAAGzsJ,EAAI,EACvDmtJ,GAAWV,GACX,CACD,OAAOxuI,EACR,CAEA,SAASonI,GAAUX,GAAsB/lJ,GAAqC,CAC7E,IAAI8nC,GAAO9nC,IAAW,GAClBuuJ,GAAWzmH,GAAK,UAAY,UAChCymH,GAAW,UAAYA,GAWvB,QATI39J,GAAM,CACT,oBACA,8CAAgD29J,GAAS,MAAM,CAAC,EAAI,IACpE,GACA,GACA,EACF,EAEKltJ,GAAO0kJ,GAAI,UAAU,CAAC,EAAGmH,GAAK7rJ,GAAM8rJ,GAAKpH,GAAI,UAAU,CAAC,EACpD79J,GAAI,EAAGA,GAAI69J,GAAI,UAAU,OAAQ,EAAE79J,GAG1C,GAFAglK,GAAKnH,GAAI,UAAU79J,EAAC,EAAE,MAAMmZ,GAAK,MAAM,EACvC8rJ,GAAKpH,GAAI,UAAU79J,EAAC,EACjB,GAACilK,GAAG,MAAQ,CAACA,GAAG,SAAWD,IAAM,YAGpC,CAAAA,GAAKA,GAAG,QAAQ,yCAA0C,SAASziK,GAAG,CACrE,MAAO,KAAOA,GAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAI,GAC7C,GAAE,QAAQ,mBAAoB,SAASukB,GAAG,CAC1C,MAAO,KAAOA,GAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAI,GAChD,CAAG,EASD,QANIy/I,GAAKtB,GAAG,QAERuB,GAAO,SAAW3jK,SAAO,SAAS0jK,EAAE,EAAIA,GAAG,SAAS,QAAQ,EAAI7G,GAAI6G,EAAE,EAGtEE,GAAU,EAAG/hD,GAAI,KAAK,IAAI,KAAM8hD,GAAK,MAAM,EAAG3P,GAAK,EAC/C6P,GAAM,EAAGA,IAAOhiD,GAAG,EAAEgiD,IAAS7P,GAAG2P,GAAK,WAAWE,EAAG,IAAM,IAAQ7P,GAAK,KAAM,EAAE4P,GACvF,IAAIE,GAAKF,IAAW/hD,GAAI,EAAI,EAE5Bh8G,GAAI,KAAK29J,EAAQ,EACjB39J,GAAI,KAAK,sBAAwBk3C,GAAK,MAAQ,uBAAyBolH,EAAE,EACzEt8J,GAAI,KAAK,+BAAiCi+J,GAAK,mBAAqB,SAAS,EAC7Ej+J,GAAI,KAAK,iBAAmB48J,GAAiBL,GAAID,EAAE,CAAC,EACpDt8J,GAAI,KAAK,EAAE,EAEXA,GAAI,KAAKi+J,GAAKnB,GAAuBgB,EAAI,EAAIjB,GAAgBiB,EAAI,CAAC,EAEnE,OAAA99J,GAAI,KAAK29J,GAAW;AAAA,CAAQ,EACrB39J,GAAI,KAAK;AAAA,CAAM,CACvB,CACA,SAASk+J,GAAQhnH,GAAgC,CAChD,IAAIxoB,GAAsB,GAC1B,OAAAwmI,EAASxmI,GAAGwoB,EAAI,EACTxoB,EACR,CAEA,SAAS0tI,GAAQjH,GAAsB19J,GAAiBiyB,GAAuBwtB,GAA4B,CAC1G,IAAIinH,GAASjnH,IAAQA,GAAK,OACtBinH,IAAQjJ,EAASC,EAAG,EACxB,IAAIjD,GAAO,CAACiM,IAAU,IAAI,KAAKhJ,GAAK19J,EAAI,EACxC,GAAG,CAACy6J,GAAM,CACT,IAAIkM,GAAmBjJ,GAAI,UAAU,CAAC,EACnC19J,GAAK,MAAM,EAAG2mK,GAAM,MAAM,GAAKA,GAAOA,GAAQ3mK,IAE7C2mK,GAAM,MAAM,EAAE,GAAK,MAAKA,IAAS,KACpCA,IAASA,GAAQ3mK,IAAM,QAAQ,KAAK,GAAG,GAExCy6J,GAAQ,CAAC,KAAMb,EAAS55J,EAAI,EAAG,KAAM,CAAC,EACtC09J,GAAI,UAAU,KAAKjD,EAAI,EACvBiD,GAAI,UAAU,KAAKiJ,EAAK,EACpBD,IAAQ,IAAI,MAAM,OAAOhJ,EAAG,CAChC,CAED,OAAAjD,GAAK,QAAWxoI,GAChBwoI,GAAK,KAAOxoI,GAAUA,GAAQ,OAAS,EACpCwtB,KACCA,GAAK,QAAOg7G,GAAK,MAAQh7G,GAAK,OAC9BA,GAAK,KAAIg7G,GAAK,GAAKh7G,GAAK,IACxBA,GAAK,KAAIg7G,GAAK,GAAKh7G,GAAK,KAErBg7G,EACR,CAEA,SAASmM,GAAQlJ,GAAsB19J,GAA6B,CACnEy9J,EAASC,EAAG,EACZ,IAAIjD,GAAO,IAAI,KAAKiD,GAAK19J,EAAI,EAC7B,GAAGy6J,IAAM,QAAQ1zJ,GAAI,EAAGA,GAAI22J,GAAI,UAAU,OAAQ,EAAE32J,GAAG,GAAG22J,GAAI,UAAU32J,EAAC,GAAK0zJ,GAC7E,OAAAiD,GAAI,UAAU,OAAO32J,GAAG,CAAC,EACzB22J,GAAI,UAAU,OAAO32J,GAAG,CAAC,EAClB,GAER,MAAO,EACR,CAEA,SAAS8/J,GAAQnJ,GAAsBoJ,GAAqBC,GAAiC,CAC5FtJ,EAASC,EAAG,EACZ,IAAIjD,GAAO,IAAI,KAAKiD,GAAKoJ,EAAQ,EACjC,GAAGrM,IAAM,QAAQ1zJ,GAAI,EAAGA,GAAI22J,GAAI,UAAU,OAAQ,EAAE32J,GAAG,GAAG22J,GAAI,UAAU32J,EAAC,GAAK0zJ,GAC7E,OAAAiD,GAAI,UAAU32J,EAAC,EAAE,KAAO6yJ,EAASmN,EAAQ,EACzCrJ,GAAI,UAAU32J,EAAC,EAAIggK,GACZ,GAER,MAAO,EACR,CAEA,SAASC,GAAOtJ,GAA+B,CAAEG,GAAYH,GAAK,EAAI,CAAI,CAE1E,OAAAp7J,EAAQ,KAAO48J,GACf58J,EAAQ,KAAOsE,EACftE,EAAQ,MAAQugJ,EAChBvgJ,EAAQ,MAAQk6H,GAChBl6H,EAAQ,UAAYg9J,GACpBh9J,EAAQ,MAAQ,CACf,QAASmkK,GACT,QAAS9B,GACT,QAASiC,GACT,QAASC,GACT,OAAQG,GACR,UACA,WACA,UACA,QACA,SAAUvH,EACV,YAAaQ,GACb,YAAaF,GACb,OAAQf,EACT,EAEO18J,CACP,IAEI,IACJ,SAAS,OAAOi4J,EAAI,CAAE,IAAMA,CAAK,CAGjC,SAAS,QAAQ9hJ,EAAM,CACtB,OAAG,OAAOA,GAAS,SAAiB,KAAKA,CAAI,EAC1C,MAAM,QAAQA,CAAI,EAAU,IAAIA,CAAI,EAChCA,CACR,CAEA,SAAS,SAASmtJ,EAAkBrzG,EAAiB8tB,EAAiB,CAErE,GAAG,OAAO,IAAQ,KAAe,IAAI,cAAe,OAAOA,EAAM,IAAI,cAAculF,EAAOrzG,EAAS8tB,CAAG,EAAI,IAAI,cAAculF,EAAOrzG,CAAO,EAC1I,GAAG,OAAO,KAAS,IAAa,CAE/B,GAAG8tB,GAAO,OAAO9tB,GAAW,SAAU,OAAO8tB,EAAG,CAC/C,IAAK,OAAQ9tB,EAAU,IAAI,YAAY8tB,CAAG,EAAE,OAAO9tB,CAAO,EAAG,MAC7D,IAAK,SAAUA,EAAU,KAAKA,CAAO,EAAG,MAExC,QAAS,MAAM,IAAI,MAAM,wBAA0B8tB,CAAG,CACtD,CACD,OAAO,KAAK,cAAculF,EAAOrzG,CAAO,CACxC,CACD,IAAI95C,EAAQ4nE,GAAO,OAAU,UAAU9tB,CAAO,EAAIA,EAElD,GAAG,OAAO,YAAgB,IAAa,OAAO,YAAY95C,EAAMmtJ,CAAK,EACrE,GAAG,OAAO,KAAS,IAAa,CAC/B,IAAI1L,EAAO,IAAI,KAAK,CAAC,QAAQzhJ,CAAI,CAAC,EAAG,CAAC,KAAK,0BAA0B,CAAC,EAEtE,GAAG,OAAO,UAAc,KAAe,UAAU,WAAY,OAAO,UAAU,WAAWyhJ,EAAM0L,CAAK,EAEpG,GAAG,OAAO,OAAW,IAAa,OAAO,OAAO1L,EAAM0L,CAAK,EAC3D,GAAG,OAAO,IAAQ,KAAe,OAAO,SAAa,KAAe,SAAS,eAAiB,IAAI,gBAAiB,CAClH,IAAIqB,EAAM,IAAI,gBAAgB/M,CAAI,EAElC,GAAG,OAAO,QAAW,UAAY,OAAQ,OAAO,WAAW,IAAI,UAAY,WAC1E,OAAG,IAAI,iBAAmB,OAAO,WAAe,KAAa,WAAW,UAAW,CAAE,IAAI,gBAAgB+M,CAAG,CAAI,EAAE,GAAK,EAChH,OAAO,UAAU,SAAS,CAAE,IAAKA,EAAK,SAAUrB,EAAO,OAAQ,EAAI,CAAC,EAE5E,IAAI9gK,EAAI,SAAS,cAAc,GAAG,EAClC,GAAGA,EAAE,UAAY,KAEhB,OAAAA,EAAE,SAAW8gK,EAAO9gK,EAAE,KAAOmiK,EAAK,SAAS,KAAK,YAAYniK,CAAC,EAAGA,EAAE,MAAK,EACL,SAAS,KAAK,YAAYA,CAAC,EAC1F,IAAI,iBAAmB,OAAO,WAAe,KAAa,WAAW,UAAW,CAAE,IAAI,gBAAgBmiK,CAAG,CAAI,EAAE,GAAK,EAChHA,CAER,CACD,CAED,GAAG,OAAO,EAAM,KAAe,OAAO,KAAS,KAAe,OAAO,OAAW,IAAa,GAAI,CAEhG,IAAI1+J,EAAM,KAAKq9J,CAAK,EAAG,OAAAr9J,EAAI,KAAK,GAAG,EAAGA,EAAI,SAAW,SAClD,MAAM,QAAQgqD,CAAO,IAAGA,EAAU,IAAIA,CAAO,GAChDhqD,EAAI,MAAMgqD,CAAO,EAAGhqD,EAAI,MAAO,EAASgqD,CACxC,OAAO5wD,EAAG,CAAE,GAAG,CAACA,EAAE,SAAW,CAACA,EAAE,QAAQ,MAAM,UAAU,EAAG,MAAMA,CAAI,CACtE,MAAM,IAAI,MAAM,oBAAsBikK,CAAK,CAC5C,CAGA,SAAS,YAAYt6I,EAAiB,CACrC,GAAG,OAAO,IAAQ,IAAa,OAAO,IAAI,aAAaA,CAAI,EAC3D,GAAG,OAAO,KAAS,IAAa,OAAO,KAAK,aAAaA,CAAI,EAE7D,GAAG,OAAO,EAAM,KAAe,OAAO,KAAS,KAAe,OAAO,OAAW,IAAa,GAAI,CAEhG,IAAI47I,EAAS,KAAK57I,CAAI,EAAG47I,EAAO,KAAK,GAAG,EAAGA,EAAO,SAAW,SAC7D,IAAIzuJ,EAAOyuJ,EAAO,KAAM,EAAE,OAAAA,EAAO,QAC1BzuJ,CACP,OAAO9W,EAAG,CAAE,GAAG,CAACA,EAAE,SAAW,CAACA,EAAE,QAAQ,MAAM,UAAU,EAAG,MAAMA,CAAI,CACtE,MAAM,IAAI,MAAM,sBAAwB2pB,CAAI,CAC7C,CACA,SAASnW,OAAK8hB,EAA0B,CAEvC,QADIkwI,EAAK,OAAO,KAAKlwI,CAAC,EAAGmwI,EAAK,GACtBvnK,EAAI,EAAGA,EAAIsnK,EAAG,OAAQ,EAAEtnK,EAAM,OAAO,UAAU,eAAe,KAAKo3B,EAAGkwI,EAAGtnK,CAAC,CAAC,GAAGunK,EAAG,KAAKD,EAAGtnK,CAAC,CAAC,EACnG,OAAOunK,CACR,CAEA,SAAS,UAAUxiK,EAAa0H,EAA8B,CAE7D,QADI2qB,EAAK,GAAagzD,EAAI90E,OAAKvQ,CAAG,EAC1B/E,EAAI,EAAGA,IAAMoqF,EAAE,OAAQ,EAAEpqF,EAAMo3B,EAAEryB,EAAIqlF,EAAEpqF,CAAC,CAAC,EAAEyM,CAAG,CAAC,GAAK,OAAM2qB,EAAEryB,EAAIqlF,EAAEpqF,CAAC,CAAC,EAAEyM,CAAG,CAAC,EAAI29E,EAAEpqF,CAAC,GACzF,OAAOo3B,CACR,CAEA,SAAS,MAAMryB,EAA2B,CAEzC,QADIqyB,EAAK,GAAagzD,EAAI90E,OAAKvQ,CAAG,EAC1B/E,EAAI,EAAGA,IAAMoqF,EAAE,OAAQ,EAAEpqF,EAAGo3B,EAAEryB,EAAIqlF,EAAEpqF,CAAC,CAAC,CAAC,EAAIoqF,EAAEpqF,CAAC,EACtD,OAAOo3B,CACR,CAEA,SAAS,UAAUryB,EAA8B,CAEhD,QADIqyB,EAAK,GAAagzD,EAAI90E,OAAKvQ,CAAG,EAC1B/E,EAAI,EAAGA,IAAMoqF,EAAE,OAAQ,EAAEpqF,EAAGo3B,EAAEryB,EAAIqlF,EAAEpqF,CAAC,CAAC,CAAC,EAAI,SAASoqF,EAAEpqF,CAAC,EAAE,EAAE,EACnE,OAAOo3B,CACR,CAEA,SAAS,UAAUryB,EAA8B,CAEhD,QADIqyB,EAAsB,GAAagzD,EAAI90E,OAAKvQ,CAAG,EAC3C/E,EAAI,EAAGA,IAAMoqF,EAAE,OAAQ,EAAEpqF,EAC7Bo3B,EAAEryB,EAAIqlF,EAAEpqF,CAAC,CAAC,CAAC,GAAK,OAAMo3B,EAAEryB,EAAIqlF,EAAEpqF,CAAC,CAAC,CAAC,EAAI,IACxCo3B,EAAEryB,EAAIqlF,EAAEpqF,CAAC,CAAC,CAAC,EAAE,KAAKoqF,EAAEpqF,CAAC,CAAC,EAEvB,OAAOo3B,CACR,CAEA,IAAI,SAAwB,IAAI,KAAK,KAAM,GAAI,GAAI,EAAG,EAAG,CAAC,EAC1D,SAAS,QAAQ/oB,EAAYunJ,EAAkC,CAC9D,IAAIC,EAAqBxnJ,EAAE,UACxBunJ,IAAUC,GAAS,KAAK,GAAG,GAAG,GAAG,KACpC,IAAI2R,EAAwB,SAAS,QAAO,GAAmBn5J,EAAE,kBAAiB,EAAkB,SAAS,kBAAmB,GAAI,IACpI,OAAQwnJ,EAAQ2R,IAAa,GAAK,GAAK,GAAK,IAC7C,CACA,IAAI,QAAuB,IAAI,KAC3B,SAAwB,SAAS,QAAO,GAAmB,QAAQ,kBAAiB,EAAkB,SAAS,kBAAmB,GAAI,IACtI,UAAyB,QAAQ,oBACrC,SAAS,QAAQn5J,EAAuB,CACvC,IAAI3F,EAAM,IAAI,KACd,OAAAA,EAAI,QAAQ2F,EAAI,GAAK,GAAK,GAAK,IAAO,QAAQ,EAC1C3F,EAAI,kBAAmB,IAAK,WAC/BA,EAAI,QAAQA,EAAI,QAAS,GAAIA,EAAI,kBAAmB,EAAG,WAAa,GAAK,EAEnEA,CACR,CAGA,SAAS,aAAarG,EAAG,CACxB,IAAIy3G,EAAM,EAAG2tD,EAAK,EAAG1kH,EAAO,GACxBhhD,EAAIM,EAAE,MAAM,4EAA4E,EAC5F,GAAG,CAACN,EAAG,MAAM,IAAI,MAAM,IAAMM,EAAI,8BAA8B,EAC/D,QAAQrC,EAAI,EAAGA,GAAK+B,EAAE,OAAQ,EAAE/B,EAC/B,GAAI+B,EAAE/B,CAAC,EAGP,QAFAynK,EAAK,EACFznK,EAAI,IAAG+iD,EAAO,IACVhhD,EAAE/B,CAAC,EAAE,MAAM+B,EAAE/B,CAAC,EAAE,OAAO,CAAC,EAAC,CAC/B,IAAK,IACJ,MAAM,IAAI,MAAM,mCAAqC+B,EAAE/B,CAAC,EAAE,MAAM+B,EAAE/B,CAAC,EAAE,OAAO,CAAC,CAAC,EAC/E,IAAK,IAAKynK,GAAM,GAEhB,IAAK,IAAKA,GAAM,GAEhB,IAAK,IACJ,GAAI1kH,EACC0kH,GAAM,OADD,OAAM,IAAI,MAAM,mCAAmC,CAI9D,CACD3tD,GAAO2tD,EAAK,SAAS1lK,EAAE/B,CAAC,EAAG,EAAE,EAE9B,OAAO85G,CACR,CAEA,IAAI,eAA8B,IAAI,KAAK,0BAA0B,EACjE,aAA4B,MAAmB,eAAe,YAAW,CAAE,EAAiB,IAAI,KAAK,SAAS,EAAI,eAClH,QAAuB,aAAa,YAAa,GAAI,KAEzD,SAAS,UAAU5zG,EAAqBwhK,EAA8B,CACrE,IAAItlK,EAAI,IAAI,KAAK8D,CAAG,EACpB,GAAG,QAEF,OAAGwhK,EAAU,EAAGtlK,EAAE,QAAQA,EAAE,QAAS,EAAGA,EAAE,kBAAiB,EAAK,GAAK,GAAI,EACjEslK,EAAU,GAAGtlK,EAAE,QAAQA,EAAE,QAAS,EAAGA,EAAE,kBAAiB,EAAK,GAAK,GAAI,EACvEA,EAER,GAAG8D,aAAe,KAAM,OAAOA,EAC/B,GAAG,aAAa,YAAW,GAAM,MAAQ,CAAC,MAAM9D,EAAE,YAAW,CAAE,EAAG,CACjE,IAAIC,EAAID,EAAE,cACV,OAAG8D,EAAI,QAAQ,GAAK7D,CAAC,EAAI,IACzBD,EAAE,YAAYA,EAAE,YAAa,EAAG,GAAG,EAAUA,CAC7C,CACD,IAAI6D,EAAIC,EAAI,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,IAAI,IAAI,GAAG,EACnDwC,EAAM,IAAI,KAAK,CAACzC,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,EAAI,EAAG,CAACA,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,GAAG,EAAK,CAACA,EAAE,CAAC,GAAG,EAAK,CAACA,EAAE,CAAC,GAAG,CAAC,EAC7E,OAAGC,EAAI,QAAQ,GAAG,EAAI,KAAIwC,EAAM,IAAI,KAAKA,EAAI,QAAS,EAAGA,EAAI,kBAAiB,EAAK,GAAK,GAAI,GACrFA,CACR,CAEA,SAAS,OAAO3H,EAAuB4mK,EAAoB,CAC1D,GAAG,SAAW9kK,SAAO,SAAS9B,CAAG,EAAG,CACnC,GAAG4mK,GAAW,YAAa,CAE1B,GAAG5mK,EAAI,CAAC,GAAK,KAAQA,EAAI,CAAC,GAAK,IAAM,OAAO,UAAUA,EAAI,MAAM,CAAC,EAAE,SAAS,SAAS,CAAC,EACtF,GAAGA,EAAI,CAAC,GAAK,KAAQA,EAAI,CAAC,GAAK,IAAM,OAAO,UAAU,YAAYA,EAAI,MAAM,CAAC,EAAE,SAAS,QAAQ,CAAC,CAAC,CAClG,CACD,OAAOA,EAAI,SAAS,QAAQ,CAC5B,CAED,GAAG,OAAO,YAAgB,IAAa,GAAI,CAC1C,GAAG4mK,EAAS,CACX,GAAG5mK,EAAI,CAAC,GAAK,KAAQA,EAAI,CAAC,GAAK,IAAM,OAAO,UAAU,IAAI,YAAY,UAAU,EAAE,OAAOA,EAAI,MAAM,CAAC,CAAC,CAAC,EACtG,GAAGA,EAAI,CAAC,GAAK,KAAQA,EAAI,CAAC,GAAK,IAAM,OAAO,UAAU,IAAI,YAAY,UAAU,EAAE,OAAOA,EAAI,MAAM,CAAC,CAAC,CAAC,CACtG,CACD,IAAI6/J,EAAM,CACT,IAAU,IAAQ,IAAU,IAAQ,EAAU,IAAQ,IAAU,IAChE,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAChE,IAAU,IAAQ,EAAU,IAAQ,IAAU,IAAQ,EAAU,IAChE,EAAU,IAAQ,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAChE,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAChE,IAAU,IAAQ,IAAU,IAAQ,EAAU,IAAQ,IAAU,IAChE,EAAU,IAAQ,EAAU,IAAQ,EAAU,GACjD,EACE,OAAG,MAAM,QAAQ7/J,CAAG,IAAGA,EAAM,IAAI,WAAWA,CAAG,GACxC,IAAI,YAAY,QAAQ,EAAE,OAAOA,CAAG,EAAE,QAAQ,iCAAkC,SAASwB,EAAG,CAAE,OAAOq+J,EAAIr+J,CAAC,GAAKA,CAAE,CAAE,CAC5H,MAAY,CAAE,CAGb,QADI60B,EAAI,GACAp3B,EAAI,EAAGA,GAAKe,EAAI,OAAQ,EAAEf,EAAGo3B,EAAE,KAAK,OAAO,aAAar2B,EAAIf,CAAC,CAAC,CAAC,EACvE,OAAOo3B,EAAE,KAAK,EAAE,CACjB,CAEA,SAAS,IAAIA,EAAmB,CAC/B,GAAG,OAAO,KAAQ,KAAe,CAAC,MAAM,QAAQA,CAAC,EAAG,OAAO,KAAK,MAAM,KAAK,UAAUA,CAAC,CAAC,EACvF,GAAG,OAAOA,GAAK,UAAYA,GAAK,KAAM,OAAOA,EAC7C,GAAGA,aAAa,KAAM,OAAO,IAAI,KAAKA,EAAE,QAAO,CAAE,EACjD,IAAI1uB,EAAM,GACV,QAAQwuB,KAAKE,EAAM,OAAO,UAAU,eAAe,KAAKA,EAAGF,CAAC,IAAGxuB,EAAIwuB,CAAC,EAAI,IAAIE,EAAEF,CAAC,CAAC,GAChF,OAAOxuB,CACR,CAEA,SAAS,KAAKnG,EAAamM,EAAyB,CAAc,QAAR0oB,EAAI,GAAUA,EAAE,OAAS1oB,GAAG0oB,GAAG70B,EAAG,OAAO60B,CAAI,CAGvG,SAAS,SAAS/0B,EAAyB,CAC1C,IAAIgM,EAAe,OAAOhM,CAAC,EAC3B,GAAG,CAAC,MAAMgM,CAAC,EAAG,OAAO,SAASA,CAAC,EAAIA,EAAI,IACvC,GAAG,CAAC,KAAK,KAAKhM,CAAC,EAAG,OAAOgM,EACzB,IAAIu5J,EAAK,EACLx8F,EAAK/oE,EAAE,QAAQ,iBAAiB,MAAM,EAAE,QAAQ,OAAO,EAAE,EAAE,QAAQ,OAAQ,UAAW,CAAE,OAAAulK,GAAM,IAAY,EAAG,CAAC,EAGlH,MAFG,CAAC,MAAMv5J,EAAI,OAAO+8D,CAAE,CAAC,IACxBA,EAAKA,EAAG,QAAQ,aAAa,SAASirF,EAAI9zC,EAAI,CAAE,OAAAqlD,EAAK,CAACA,EAAWrlD,CAAG,CAAC,EAClE,CAAC,MAAMl0G,EAAI,OAAO+8D,CAAE,CAAC,GAAU/8D,EAAIu5J,EAC/Bv5J,CACR,CAGA,IAAI,MAAQ,6FAEZ,SAAS,WAAW45E,EAAa,CAE7B,OAAIA,EAAE,CAAC,EACJA,EAAE,CAAC,EACCA,EAAE,CAAC,EAAU,IAAI,KAAK,KAAK,GAAG,GAAI,CAACA,EAAE,CAAC,EAAE,IAAOA,EAAE,CAAC,GAAK,IAAM,GAAK,GAAI,CAACA,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,EAAG,WAAWA,EAAE,CAAC,CAAC,EAAE,GAAI,EAChG,IAAI,KAAK,KAAK,GAAG,GAAIA,EAAE,CAAC,GAAK,IAAM,GAAK,EAAI,CAACA,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,EAAG,WAAWA,EAAE,CAAC,CAAC,EAAE,GAAI,EAEvFA,EAAE,CAAC,EAAU,IAAI,KAAK,KAAK,GAAG,GAAK,CAACA,EAAE,CAAC,EAAE,IAAOA,EAAE,CAAC,GAAK,IAAM,GAAK,GAAI,CAACA,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAI,WAAWA,EAAE,CAAC,CAAC,EAAI,IAAO,CAAC,EACnH,IAAI,KAAK,KAAK,GAAG,GAAI,CAACA,EAAE,CAAC,EAAE,IAAOA,EAAE,CAAC,GAAK,IAAM,GAAK,GAAI,CAACA,EAAE,CAAC,EAAG,EAAG,CAAC,EAN/D,IAAI,KAAK,KAAK,GAAG,GAAI,CAACA,EAAE,CAAC,EAAE,IAAOA,EAAE,CAAC,GAAK,IAAM,GAAK,GAAI,EAAG,EAAG,CAAC,CAOrF,CACA,IAAI,aAAe,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UAAU,EAC5I,SAAS,UAAU5lF,EAAuB,CACzC,IAAIg8D,EAAQh8D,EAAE,cACVwlK,EAAOxpG,EAAM,QAAQ,OAAQ,GAAG,EAAE,OAClC4pB,EAAI4/E,EAAK,MAAM,KAAK,EACxB,GAAG5/E,EAAG,OAAO,WAAWA,CAAC,EAEzB,IAAI7wD,EAAI,IAAI,KAAK/0B,CAAC,EAAG4D,EAAI,IAAI,KAAK,GAAG,EACjCf,EAAIkyB,EAAE,QAAO,EAAQA,EAAE,SAAQ,EAAI,IAAAh1B,EAAIg1B,EAAE,QAAU,EACvD,GAAG,MAAMh1B,CAAC,EAAG,OAAO6D,EACpB,GAAGo4D,EAAM,MAAM,iDAAiD,GAE/D,GADAA,EAAQA,EAAM,QAAQ,UAAU,EAAE,EAAE,QAAQ,6BAA6B,EAAE,EACxEA,EAAM,OAAS,GAAK,aAAa,QAAQA,CAAK,GAAK,GAAI,OAAOp4D,UACxDo4D,EAAM,QAAQ,SAAU,EAAE,EAAE,MAAM,OAAO,EAAG,OAAOp4D,EAC7D,OAAGf,EAAI,GAAKA,EAAI,MAAQ7C,EAAE,MAAM,eAAe,EAAU4D,EAClDmxB,CACR,CAEA,IAAI,YAA4B,UAAW,CAC1C,IAAI0wI,EAAmB,UAAU,MAAM,QAAQ,EAAE,QAAU,EAC3D,OAAO,SAAqB5hK,EAAgB08D,EAAIh1D,EAAkC,CACjF,GAAGk6J,GAAoB,OAAOllG,GAAM,SAAU,OAAO18D,EAAI,MAAM08D,CAAE,EAEjE,QADI3sD,EAAI/P,EAAI,MAAM08D,CAAE,EAAGxrC,EAAI,CAACnhB,EAAE,CAAC,CAAC,EACxBjW,EAAI,EAAGA,EAAIiW,EAAE,OAAQ,EAAEjW,EAAKo3B,EAAE,KAAKxpB,CAAG,EAAGwpB,EAAE,KAAKnhB,EAAEjW,CAAC,CAAC,EAC5D,OAAOo3B,CACT,CACA,IACA,SAAS,WAAWxe,EAAkB,CACrC,OAAIA,EACDA,EAAK,SAAWA,EAAK,KAAa,OAAOA,EAAK,QAAS,EAAI,EAC3DA,EAAK,KAAa,MAAMA,EAAK,IAAI,EACjCA,EAAK,cAAgB,QAAgB,MAAMA,EAAK,eAAe,SAAS,QAAQ,CAAC,EACjFA,EAAK,SAAiB,MAAMA,EAAK,SAAQ,CAAE,EAC3CA,EAAK,OAASA,EAAK,MAAM,WAAmB,MAAM,OAAO,MAAM,UAAU,MAAM,KAAKA,EAAK,MAAM,aAAa,CAAC,CAAC,CAAC,EAC3G,KANU,IAOlB,CAEA,SAAS,WAAWA,EAAM,CACzB,GAAG,CAACA,EAAM,OAAO,KACjB,GAAGA,EAAK,KAAM,OAAO,WAAWA,EAAK,IAAI,EACzC,GAAGA,EAAK,cAAgB,QAAS,OAAOA,EAAK,aAAY,EACzD,GAAGA,EAAK,OAASA,EAAK,MAAM,WAAY,CACvC,IAAIwe,EAAIxe,EAAK,MAAM,WAAU,EAC7B,OAAG,OAAOwe,GAAK,SAAiB,WAAWA,CAAC,EACrC,MAAM,UAAU,MAAM,KAAKA,CAAC,CACnC,CACD,OAAGxe,EAAK,SAAWA,EAAK,KAAaA,EAAK,QACnC,IACR,CAEA,SAAS,QAAQA,EAAM,CAAE,OAAQA,GAAQA,EAAK,KAAK,MAAM,EAAE,IAAM,OAAU,WAAWA,CAAI,EAAI,WAAWA,CAAI,CAAI,CAIjH,SAAS,eAAemvJ,EAAKnN,EAAiB,CAG7C,QAFI1jI,EAAI6wI,EAAI,WAAazyJ,OAAKyyJ,EAAI,KAAK,EACnClrI,EAAI+9H,EAAK,YAAa,EAAC,QAAQ,QAAS,IAAI,EAAG9pI,EAAI+L,EAAE,QAAQ,MAAM,GAAI,EACnE78B,EAAE,EAAGA,EAAEk3B,EAAE,OAAQ,EAAEl3B,EAAG,CAC7B,IAAIiG,EAAIixB,EAAEl3B,CAAC,EAAE,QAAQ,kBAAkB,EAAE,EAAE,cAC3C,GAAG68B,GAAK52B,GAAK6qB,GAAK7qB,EAAG,OAAO8hK,EAAI,MAAQA,EAAI,MAAM7wI,EAAEl3B,CAAC,CAAC,EAAI+nK,EAAI,UAAU/nK,CAAC,CACzE,CACD,OAAO,IACR,CAEA,SAAS,WAAW+nK,EAAKnN,EAAiB,CACzC,IAAIxjI,EAAI,eAAe2wI,EAAKnN,CAAI,EAChC,GAAGxjI,GAAK,KAAM,MAAM,IAAI,MAAM,oBAAsBwjI,EAAO,SAAS,EACpE,OAAOxjI,CACR,CAEA,SAAS,WAAW2wI,EAAKnN,EAAiBoN,EAA2B,CACpE,GAAG,CAACA,EAAM,OAAO,QAAQ,WAAWD,EAAKnN,CAAI,CAAC,EAC9C,GAAG,CAACA,EAAM,OAAO,KACjB,GAAI,CAAE,OAAO,WAAWmN,EAAKnN,CAAI,CAAI,MAAU,CAAE,OAAO,IAAO,CAChE,CAEA,SAAS,UAAUmN,EAAKnN,EAAiBoN,EAA+B,CACvE,GAAG,CAACA,EAAM,OAAO,WAAW,WAAWD,EAAKnN,CAAI,CAAC,EACjD,GAAG,CAACA,EAAM,OAAO,KACjB,GAAI,CAAE,OAAO,UAAUmN,EAAKnN,CAAI,CAAI,MAAU,CAAE,OAAO,IAAO,CAC/D,CAEA,SAAS,UAAUmN,EAAKnN,EAAiBoN,EAA2B,CACzD,OAAO,WAAW,WAAWD,EAAKnN,CAAI,CAAC,CAGlD,CAEA,SAAS,WAAWmN,EAAK,CAExB,QADI7wI,EAAI6wI,EAAI,WAAazyJ,OAAKyyJ,EAAI,KAAK,EAAG3wI,EAAI,GACtCp3B,EAAI,EAAGA,EAAIk3B,EAAE,OAAQ,EAAEl3B,EAAMk3B,EAAEl3B,CAAC,EAAE,MAAM,EAAE,GAAK,KAAKo3B,EAAE,KAAKF,EAAEl3B,CAAC,EAAE,QAAQ,kBAAmB,EAAE,CAAC,EACtG,OAAOo3B,EAAE,MACV,CAEA,SAAS,aAAa2wI,EAAKt8I,EAAM2G,EAAS,CACzC,GAAG21I,EAAI,UAAW,CACjB,GAAG,OAAO31I,GAAW,SAAU,CAC9B,IAAItqB,EACJ,OAAG,QAASA,EAAM,YAAYsqB,CAAO,EAGhCtqB,EAAM,WAAWsqB,CAAO,EACtB,IAAI,MAAM,QAAQ21I,EAAKt8I,EAAM3jB,CAAG,CACvC,CACD,IAAI,MAAM,QAAQigK,EAAKt8I,EAAM2G,CAAO,CACpC,MACI21I,EAAI,KAAKt8I,EAAM2G,CAAO,CAC5B,CAEA,SAAS,SAAU,CAAE,OAAO,IAAI,MAAM,QAAS,CAAG,CAElD,SAAS,SAAShwB,EAAGg1B,EAAG,CACvB,OAAOA,EAAE,KAAI,CACZ,IAAK,SAAU,OAAO,IAAI,KAAKh1B,EAAG,CAAE,KAAM,QAAQ,CAAE,EACpD,IAAK,SAAU,OAAO,IAAI,KAAKA,EAAG,CAAE,KAAM,QAAQ,CAAE,EACpD,IAAK,SAAU,IAAK,QAAS,OAAO,IAAI,KAAKA,EAAG,CAAE,KAAM,QAAQ,CAAE,CAClE,CACD,MAAM,IAAI,MAAM,qBAAuBg1B,EAAE,IAAI,CAC9C,CAEA,SAAS,aAAa3L,EAAiBpN,EAA4B,CAClE,GAAGoN,EAAK,OAAO,CAAC,GAAK,IAAK,OAAOA,EAAK,MAAM,CAAC,EAC7C,IAAI9a,EAAS0N,EAAK,MAAM,GAAG,EACxBA,EAAK,MAAM,EAAE,GAAK,KAAK1N,EAAO,MAEjC,QADIvK,EAASqlB,EAAK,MAAM,GAAG,EACpBrlB,EAAO,SAAW,GAAG,CAC3B,IAAIynC,EAAOznC,EAAO,QACdynC,IAAS,KAAMl9B,EAAO,IAAG,EACpBk9B,IAAS,KAAKl9B,EAAO,KAAKk9B,CAAI,CACvC,CACD,OAAOl9B,EAAO,KAAK,GAAG,CACvB,CACA,IAAI,WAAa;AAAA,EACb,UAAU,yEACV,UAAU,+FAAgG,UAAY,WACtH,SAAwB,WAAW,MAAM,SAAS,EAAI,UAAY,UAClE,QAAQ,QAAS,SAAW,aAChC,SAAS,YAAYshB,EAAgBg2I,EAAwBC,EAA8B,CAG1F,QAFIjjG,EAAK,GACLkjG,EAAK,EAAG5lK,EAAI,EACV4lK,IAAOl2I,EAAI,QAAkB,GAAA1vB,EAAI0vB,EAAI,WAAWk2I,CAAE,KAAO,IAAM5lK,IAAM,IAAMA,IAAM,IAA9D,EAAE4lK,EAAI,CAE/B,GADIF,IAAWhjG,EAAE,CAAC,EAAIhzC,EAAI,MAAM,EAAGk2I,CAAE,GAClCA,IAAOl2I,EAAI,OAAQ,OAAOgzC,EAC7B,IAAIljE,EAAIkwB,EAAI,MAAM,SAAS,EAAG/qB,EAAE,EAAGmH,EAAE,GAAIrO,EAAE,EAAG+5F,EAAE,GAAI88D,EAAG,GAAIuR,EAAO,EAClE,GAAGrmK,EAAG,IAAI/B,EAAI,EAAGA,GAAK+B,EAAE,OAAQ,EAAE/B,EAAG,CAEpC,IADA62J,EAAK90J,EAAE/B,CAAC,EACJuC,EAAE,EAAGA,GAAKs0J,EAAG,QAAgBA,EAAG,WAAWt0J,CAAC,IAAM,GAA7B,EAAEA,EAAG,CAE9B,IADAw3F,EAAI88D,EAAG,MAAM,EAAEt0J,CAAC,EAAE,OACZs0J,EAAG,WAAWt0J,EAAE,CAAC,GAAK,IAAI,EAAEA,EAGlC,IAFA6lK,GAASD,EAAGtR,EAAG,WAAWt0J,EAAE,CAAC,IAAM,IAAM4lK,GAAM,GAAM,EAAI,EACzD95J,EAAIwoJ,EAAG,MAAMt0J,EAAE,EAAE6lK,EAAMvR,EAAG,OAAOuR,CAAI,EACjClhK,EAAE,EAAEA,GAAG6yF,EAAE,QAAeA,EAAE,WAAW7yF,CAAC,IAAM,GAA5B,EAAEA,EAAG,CACzB,GAAGA,IAAI6yF,EAAE,OACLA,EAAE,QAAQ,GAAG,EAAI,IAAGA,EAAIA,EAAE,MAAM,EAAGA,EAAE,QAAQ,GAAG,CAAC,GACpD90B,EAAE80B,CAAC,EAAI1rF,EACM42D,EAAE80B,EAAE,YAAa,GAAI1rF,MAE9B,CACJ,IAAI6oB,GAAKhwB,IAAI,GAAK6yF,EAAE,MAAM,EAAE,CAAC,IAAI,QAAQ,QAAQ,IAAIA,EAAE,MAAM7yF,EAAE,CAAC,EAChE,GAAG+9D,EAAE/tC,CAAC,GAAK6iE,EAAE,MAAM7yF,EAAE,EAAEA,CAAC,GAAK,MAAO,SACpC+9D,EAAE/tC,CAAC,EAAI7oB,EACM42D,EAAE/tC,EAAE,YAAa,GAAI7oB,CAClC,CACD,CACD,OAAO42D,CACR,CACA,SAAS,SAASzlE,EAAyB,CAAE,OAAOA,EAAE,QAAQ,SAAU,KAAK,CAAI,CAEjF,IAAI,UAAY,CACf,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,QAAS,GACV,EACI,UAAyB,MAAM,SAAS,EAIxC,YAA2C,UAAW,CAEzD,IAAI6oK,EAAW,+CAAgDC,EAAY,uBAC3E,SAASC,EAAgBh4I,EAA4B,CACpD,IAAIluB,EAAIkuB,EAAO,GAAIvwB,EAAIqC,EAAE,QAAQ,WAAW,EAC5C,GAAGrC,GAAK,GAAI,OAAOqC,EAAE,QAAQgmK,EAAU,SAAShS,EAAI9zC,EAAI,CAAE,OAAO,UAAU8zC,CAAE,GAAG,OAAO,aAAa,SAAS9zC,EAAG8zC,EAAG,QAAQ,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAGA,EAAK,EAAE,QAAQiS,EAAU,SAASvmK,EAAEQ,EAAG,CAAC,OAAO,OAAO,aAAa,SAASA,EAAE,EAAE,CAAC,CAAE,CAAC,EAChO,IAAI2E,EAAI7E,EAAE,QAAQ,KAAK,EACvB,OAAOkmK,EAAgBlmK,EAAE,MAAM,EAAGrC,CAAC,CAAC,EAAIqC,EAAE,MAAMrC,EAAE,EAAEkH,CAAC,EAAIqhK,EAAgBlmK,EAAE,MAAM6E,EAAE,CAAC,CAAC,CACrF,CACD,OAAO,SAAqBqpB,EAAiBi4I,EAAkB,CAC9D,IAAI9/J,EAAM6/J,EAAgBh4I,CAAI,EAC9B,OAAOi4I,EAAO9/J,EAAI,QAAQ,QAAS;AAAA,CAAI,EAAIA,CAC7C,CACA,IAEI,SAAS,WAAY,SAAW,6CACpC,SAAS,UAAU6nB,EAA2B,CAC7C,IAAIluB,EAAIkuB,EAAO,GACf,OAAOluB,EAAE,QAAQ,SAAU,SAAS6C,EAAG,CAAE,OAAO,UAAUA,CAAC,CAAE,CAAE,EAAE,QAAQ,SAAS,SAAS7C,EAAG,CAAE,MAAO,MAAQ,MAAMA,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,EAAI,GAAI,CAAC,CACrK,CACA,SAAS,aAAakuB,EAA2B,CAAE,OAAO,UAAUA,CAAI,EAAE,QAAQ,KAAK,SAAS,CAAI,CAEpG,IAAI,aAAe,mBACnB,SAAS,WAAWA,EAA2B,CAC9C,IAAIluB,EAAIkuB,EAAO,GACf,OAAOluB,EAAE,QAAQ,SAAU,SAAS6C,EAAG,CAAE,OAAO,UAAUA,CAAC,CAAE,CAAE,EAAE,QAAQ,MAAO,OAAO,EAAE,QAAQ,aAAa,SAAS7C,EAAG,CAAE,MAAO,OAAS,MAAMA,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,EAAI,GAAI,CAAE,CACnM,CAEA,SAAS,WAAWkuB,EAA2B,CAC9C,IAAIluB,EAAIkuB,EAAO,GACf,OAAOluB,EAAE,QAAQ,SAAU,SAAS6C,EAAG,CAAE,OAAO,UAAUA,CAAC,CAAE,CAAE,EAAE,QAAQ,aAAa,SAAS7C,EAAG,CAAE,MAAO,MAASA,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAG,YAAW,EAAK,GAAM,EACzK,CAGA,IAAI,YAA2C,UAAW,CACzD,IAAIomK,EAAW,YACf,SAASC,EAAQrS,EAAc9zC,EAA0B,CAAE,OAAO,OAAO,aAAa,SAASA,EAAG,EAAE,CAAC,CAAI,CACzG,OAAO,SAAqBr8G,EAA2B,CAAE,OAAOA,EAAI,QAAQuiK,EAASC,CAAO,EAC7F,IACA,SAAS,cAAcxiK,EAA2B,CAAE,OAAOA,EAAI,QAAQ,iBAAiB,OAAQ,CAAI,CAGpG,SAAS,aAAa5D,EAA2B,CAChD,OAAOA,EAAK,CACX,IAAK,GAAG,IAAK,GAAO,IAAK,IAAK,IAAK,OAAS,MAAO,GACnD,IAAK,GAAG,IAAK,GAAO,IAAK,IAAK,IAAK,QAAS,MAAO,EAEnD,CACD,MAAO,EACR,CAEA,SAAS,UAAUqmK,EAA4B,CAE9C,QADIjgK,EAAM,GAAI1I,EAAI,EAAGuC,EAAI,EAAGH,EAAI,EAAGN,EAAI,EAAG+6B,EAAI,EAAGjC,EAAI,EAC9C56B,EAAI2oK,EAAK,QAAQ,CAEvB,GADApmK,EAAIomK,EAAK,WAAW3oK,GAAG,EACnBuC,EAAI,IAAK,CAAEmG,GAAO,OAAO,aAAanG,CAAC,EAAG,QAAW,CAEzD,GADAH,EAAIumK,EAAK,WAAW3oK,GAAG,EACnBuC,EAAE,KAAOA,EAAE,IAAK,CAAEs6B,GAAMt6B,EAAI,KAAO,EAAIs6B,GAAMz6B,EAAI,GAAKsG,GAAO,OAAO,aAAam0B,CAAC,EAAG,QAAW,CAEpG,GADA/6B,EAAI6mK,EAAK,WAAW3oK,GAAG,EACnBuC,EAAI,IAAK,CAAEmG,GAAO,OAAO,cAAenG,EAAI,KAAO,IAAQH,EAAI,KAAO,EAAMN,EAAI,EAAG,EAAG,QAAW,CACrG+6B,EAAI8rI,EAAK,WAAW3oK,GAAG,EACvB46B,IAAOr4B,EAAI,IAAM,IAAQH,EAAI,KAAO,IAAQN,EAAI,KAAO,EAAM+6B,EAAI,IAAK,MACtEn0B,GAAO,OAAO,aAAa,OAAWkyB,IAAI,GAAI,KAAK,EACnDlyB,GAAO,OAAO,aAAa,OAAUkyB,EAAE,KAAK,CAC5C,CACD,OAAOlyB,CACR,CAEA,SAAS,UAAUkQ,EAAM,CACxB,IAAIlQ,EAAM,YAAY,EAAEkQ,EAAK,MAAM,EAAGgiB,EAAG56B,EAAGkH,EAAI,EAAGgwB,EAAI,EAAG0xI,EAAG,EAAGrmK,EAChE,IAAIvC,EAAI,EAAGA,EAAI4Y,EAAK,OAAQ5Y,GAAGkH,EAC9BA,EAAI,GACA3E,EAAEqW,EAAK,WAAW5Y,CAAC,GAAK,IAAK46B,EAAIr4B,EAC7BA,EAAI,KAAOq4B,GAAKr4B,EAAE,IAAI,IAAIqW,EAAK,WAAW5Y,EAAE,CAAC,EAAE,IAAKkH,EAAE,GACtD3E,EAAI,KAAOq4B,GAAGr4B,EAAE,IAAI,MAAMqW,EAAK,WAAW5Y,EAAE,CAAC,EAAE,IAAI,IAAI4Y,EAAK,WAAW5Y,EAAE,CAAC,EAAE,IAAKkH,EAAE,IACpFA,EAAI,EACV0zB,GAAKr4B,EAAI,GAAG,QAAQqW,EAAK,WAAW5Y,EAAE,CAAC,EAAE,IAAI,MAAM4Y,EAAK,WAAW5Y,EAAE,CAAC,EAAE,IAAI,IAAI4Y,EAAK,WAAW5Y,EAAE,CAAC,EAAE,IACrG46B,GAAK,MAAOguI,EAAK,OAAWhuI,IAAI,GAAI,MAAOA,EAAI,OAAUA,EAAE,OAEzDguI,IAAO,IAAKlgK,EAAIwuB,GAAG,EAAI0xI,EAAG,IAAKlgK,EAAIwuB,GAAG,EAAI0xI,IAAK,EAAGA,EAAK,GAC1DlgK,EAAIwuB,GAAG,EAAI0D,EAAE,IAAKlyB,EAAIwuB,GAAG,EAAI0D,IAAI,EAElC,OAAOlyB,EAAI,MAAM,EAAEwuB,CAAC,EAAE,SAAS,MAAM,CACtC,CAEA,SAAS,UAAUte,EAAM,CAAE,OAAO,YAAYA,EAAM,QAAQ,EAAE,SAAS,MAAM,CAAI,CAEjF,IAAI,WAAa,qBACb,SAAW,UAAyB,UAAU,UAAU,GAAkB,UAAU,UAAU,GAAK,WAA0B,UAAU,UAAU,GAAkB,UAAU,UAAU,GAAK,YAAc,UAE1M,UAA2B,QAAU,SAASA,EAAM,CAAE,OAAO,YAAYA,EAAM,MAAM,EAAE,SAAS,QAAQ,CAAI,EAAG,SAAS+vJ,EAA4B,CAEvJ,QADIjgK,EAAwB,CAAE,EAAE1I,EAAI,EAAGuC,EAAI,EAAGH,EAAI,EAC5CpC,EAAI2oK,EAAK,QAEd,OADApmK,EAAIomK,EAAK,WAAW3oK,GAAG,EAChB,GAAI,CACV,KAAKuC,EAAI,IAAKmG,EAAI,KAAK,OAAO,aAAanG,CAAC,CAAC,EAAG,MAChD,KAAKA,EAAI,KACRmG,EAAI,KAAK,OAAO,aAAa,KAAOnG,GAAK,EAAE,CAAC,EAC5CmG,EAAI,KAAK,OAAO,aAAa,KAAOnG,EAAI,GAAG,CAAC,EAC5C,MACD,KAAKA,GAAK,OAASA,EAAI,OACtBA,GAAK,MAAOH,EAAIumK,EAAK,WAAW3oK,GAAG,EAAI,OAASuC,GAAG,IACnDmG,EAAI,KAAK,OAAO,aAAa,KAAQtG,GAAI,GAAM,EAAE,CAAC,EAClDsG,EAAI,KAAK,OAAO,aAAa,KAAQtG,GAAI,GAAM,GAAG,CAAC,EACnDsG,EAAI,KAAK,OAAO,aAAa,KAAQtG,GAAK,EAAK,GAAG,CAAC,EACnDsG,EAAI,KAAK,OAAO,aAAa,KAAOtG,EAAI,GAAG,CAAC,EAC5C,MACD,QACCsG,EAAI,KAAK,OAAO,aAAa,KAAOnG,GAAK,GAAG,CAAC,EAC7CmG,EAAI,KAAK,OAAO,aAAa,KAAQnG,GAAK,EAAK,GAAG,CAAC,EACnDmG,EAAI,KAAK,OAAO,aAAa,KAAOnG,EAAI,GAAG,CAAC,CAC7C,CAEF,OAAOmG,EAAI,KAAK,EAAE,CACnB,EAGI,SAAyB,UAAW,CACvC,IAAImgK,EAAmC,GACvC,OAAO,SAAkBhsI,EAAa/L,EAA0B,CAC/D,IAAIvP,EAAIsb,EAAE,KAAK/L,GAAG,IAClB,OAAG+3I,EAAQtnJ,CAAC,EAAUsnJ,EAAQtnJ,CAAC,EACvBsnJ,EAAQtnJ,CAAC,EAAI,IAAI,OAAO,cAAcsb,EAAE,+DAA+DA,EAAE,IAAM/L,GAAG,EAAE,CAC9H,CACA,IAEI,WAAmD,UAAW,CACjE,IAAIg4I,EAAuC,CAC1C,CAAC,OAAQ,GAAG,EAAG,CAAC,SAAU,GAAG,EAC7B,CAAC,OAAQ,GAAG,EAAG,CAAC,OAAQ,GAAG,EAAG,CAAC,KAAQ,GAAG,EAAG,CAAC,KAAQ,GAAG,EAAG,CAAC,MAAQ,GAAG,CAC1E,EAAG,IAAI,SAAStpK,EAAwB,CAAE,MAAO,CAAC,IAAI,OAAO,IAAMA,EAAE,CAAC,EAAI,IAAK,IAAI,EAAGA,EAAE,CAAC,CAAC,CAAE,CAAE,EAC7F,OAAO,SAAoB0G,EAA2B,CAcrD,QAbIkxB,EAAIlxB,EAEL,QAAQ,cAAe,EAAE,EAEzB,QAAQ,cAAc,EAAE,EAExB,QAAQ,QAAQ,GAAG,EAAE,QAAQ,QAAQ,GAAG,EAExC,QAAQ,cAAe,GAAG,EAE1B,QAAQ,uBAAuB;AAAA,CAAI,EAEnC,QAAQ,WAAW,EAAE,EAChBlG,EAAI,EAAGA,EAAI8oK,EAAS,OAAQ,EAAE9oK,EAAGo3B,EAAIA,EAAE,QAAQ0xI,EAAS9oK,CAAC,EAAE,CAAC,EAAG8oK,EAAS9oK,CAAC,EAAE,CAAC,CAAC,EACrF,OAAOo3B,CACT,CACA,IAEI,QAAwB,UAAU,CAAE,IAAI2xI,EAAW,GACtD,OAAO,SAAkB9/C,EAAI,CAC5B,OAAG8/C,EAAS9/C,CAAE,IAAM,OAAkB8/C,EAAS9/C,CAAE,EACzC8/C,EAAS9/C,CAAE,EAAI,IAAI,OAAO,YAAcA,EAAK,0BAA4BA,EAAK,IAAK,GAAG,CAChG,CAAE,EAAC,EACC,SAAW,wBAAyB,SAAW,6BACnD,SAAS,YAAYrwG,EAAiBgnC,EAAqC,CAC1E,IAAIxhC,EAAI,YAAYxF,CAAI,EAEpBinI,EAA4BjnI,EAAK,MAAM,QAAQwF,EAAE,QAAQ,CAAC,GAAG,GAC7DtW,EAAqB,GACzB,GAAG+3I,EAAQ,QAAUzhI,EAAE,KAAM,CAC5B,GAAGwhC,EAAK,IAAK,MAAM,IAAI,MAAM,4BAA8BigG,EAAQ,OAAS,OAASzhI,EAAE,IAAI,EAC3F,OAAOtW,CACP,CACD,OAAA+3I,EAAQ,QAAQ,SAAS,EAAc,CACtC,IAAIxxI,EAAI,EAAE,QAAQ,SAAS,EAAE,EAAE,MAAM,QAAQ,EAC1CA,GAAGvG,EAAI,KAAK,CAAC,EAAE,SAASuG,EAAE,CAAC,CAAC,EAAG,EAAEA,EAAE,CAAC,CAAC,CAAC,CAC3C,CAAE,EACMvG,CACR,CAEA,IAAI,QAAU,eACd,SAAS,SAAS+0B,EAAa/L,EAAyB,CAAE,MAAO,IAAM+L,GAAK/L,EAAE,MAAM,OAAO,EAAE,wBAA0B,IAAM,IAAMA,EAAI,KAAO+L,EAAI,GAAM,CAExJ,SAAS,WAAWze,EAAc,CAAE,OAAO9I,OAAK8I,CAAC,EAAE,IAAI,SAAS8Y,EAAG,CAAE,MAAO,IAAMA,EAAI,KAAO9Y,EAAE8Y,CAAC,EAAI,GAAI,CAAC,EAAE,KAAK,EAAE,CAAI,CACtH,SAAS,UAAU2F,EAAa/L,EAAc1S,EAAG,CAAE,MAAO,IAAMye,GAAMze,GAAK,KAAQ,WAAWA,CAAC,EAAI,KAAQ0S,GAAK,MAASA,EAAE,MAAM,OAAO,EAAE,wBAA0B,IAAM,IAAMA,EAAI,KAAO+L,EAAI,KAAO,GAAI,CAE1M,SAAS,aAAaz6B,EAAYmf,EAA2B,CAAE,GAAI,CAAE,OAAOnf,EAAE,cAAc,QAAQ,QAAQ,EAAE,CAAI,OAAON,EAAG,CAAE,GAAGyf,EAAG,MAAMzf,CAAE,CAAG,MAAO,EAAK,CAE3J,SAAS,SAASO,EAAGmmK,EAA8B,CAClD,OAAO,OAAOnmK,EAAC,CACd,IAAK,SACJ,IAAI+0B,EAAI,UAAU,YAAa,UAAU/0B,CAAC,CAAC,EAClC,OAAA+0B,EAAIA,EAAE,QAAQ,UAAW,SAAS,EACpCA,EACR,IAAK,SAAU,OAAO,WAAW/0B,EAAE,IAAIA,EAAE,QAAQ,QAAS,UAAU,OAAOA,CAAC,CAAC,CAAC,EAC9E,IAAK,UAAW,OAAO,UAAU,UAAUA,EAAE,OAAO,OAAO,CAC3D,CACD,GAAGA,aAAa,KAAM,OAAO,UAAU,cAAe,aAAaA,CAAC,CAAC,EACrE,MAAM,IAAI,MAAM,uBAAyBA,CAAC,CAC3C,CAEA,SAAS,eAAeD,EAAc,CACrC,GAAG,SAAqFS,SAAO,SAAST,CAAC,EAAG,OAAOA,EAAE,SAAS,MAAM,EACpI,GAAG,OAAOA,GAAM,SAAU,OAAOA,EAEjC,GAAG,OAAO,WAAe,KAAeA,aAAa,WAAY,OAAO,SAAS,IAAI,KAAKA,CAAC,CAAC,CAAC,EAC7F,MAAM,IAAI,MAAM,6CAA6C,CAC9D,CAEA,IAAI,UAAY,4EAGZ,MAAS,CACZ,WAAY,0EACZ,WAAY,0EACZ,UAAW,4EACX,GAAI,+DACJ,KAAM,+DACN,MAAO,0EACP,GAAM,mCACN,QAAW,4BACX,SAAY,+BACZ,GAAM,0DACN,EAAK,sEACL,IAAO,yEACP,GAAM,uEACN,IAAO,4CACP,IAAO,kCACR,EAEI,WAAa,CAChB,4DACA,gDACA,sDACA,kDACD,EAEI,OAAU,CACb,EAAQ,0CACR,EAAQ,yCACR,GAAQ,+CACR,GAAQ,4CACR,GAAQ,yBACR,EAAQ,gCACR,KAAQ,iCACT,EACA,SAAS,eAAe6B,EAAuBk1B,EAA2B,CAIzE,QAHI92B,EAAI,EAAI,GAAK4B,EAAEk1B,EAAM,CAAC,IAAM,GAC5Br3B,IAAMmC,EAAEk1B,EAAM,CAAC,EAAI,MAAS,IAAOl1B,EAAEk1B,EAAM,CAAC,IAAM,EAAK,IACvDp3B,EAAKkC,EAAEk1B,EAAI,CAAC,EAAE,GACVn5B,EAAI,EAAGA,GAAK,EAAG,EAAEA,EAAG+B,EAAIA,EAAI,IAAMkC,EAAEk1B,EAAMn5B,CAAC,EACnD,OAAG8B,GAAK,KAAcC,GAAK,EAAKM,EAAI,MAAY,KAC7CP,GAAK,EAAGA,EAAI,OACRA,GAAK,KAAMC,GAAK,KAAK,IAAI,EAAE,EAAE,GAC7BM,EAAI,KAAK,IAAI,EAAGP,EAAI,EAAE,EAAIC,EAClC,CAEA,SAAS,gBAAgBkC,EAAuBoK,EAAc8qB,EAAgB,CAC7E,IAAIusF,GAASr3G,EAAI,GAAO,EAAEA,GAAK,KAAc,EAAI,IAAM,EAAIvM,EAAI,EAAGC,EAAI,EAClEinK,EAAKtjD,EAAM,CAACr3G,EAAKA,EACjB,SAAS26J,CAAE,EACPA,GAAM,EAAGlnK,EAAIC,EAAI,GAExBD,EAAI,KAAK,MAAM,KAAK,IAAIknK,CAAE,EAAI,KAAK,GAAG,EACtCjnK,EAAIinK,EAAK,KAAK,IAAI,EAAG,GAAKlnK,CAAC,EACvBA,GAAK,QAAW,CAAC,SAASC,CAAC,GAAMA,EAAI,KAAK,IAAI,EAAE,EAAE,GAAOD,EAAI,OAC1DC,GAAK,KAAK,IAAI,EAAE,EAAE,EAAGD,GAAG,QANZA,EAAI,KAAOC,EAAI,MAAMsM,CAAC,EAAI,MAAS,GAQvD,QAAQrO,EAAI,EAAGA,GAAK,EAAG,EAAEA,EAAG+B,GAAG,IAAKkC,EAAEk1B,EAAMn5B,CAAC,EAAI+B,EAAI,IACrDkC,EAAEk1B,EAAM,CAAC,GAAMr3B,EAAI,KAAS,EAAMC,EAAI,GACtCkC,EAAEk1B,EAAM,CAAC,EAAKr3B,GAAK,EAAK4jH,CACzB,CAEA,IAAI,YAAc,SAASsvC,EAA+C,CAAoB,QAAdx1J,EAAE,CAAE,EAACo7B,EAAE,MAAe56B,EAAE,EAAEA,EAAEg1J,EAAK,CAAC,EAAE,OAAO,EAAEh1J,EAAG,GAAGg1J,EAAK,CAAC,EAAEh1J,CAAC,EAAG,QAAQkH,EAAE,EAAEw9G,EAAEswC,EAAK,CAAC,EAAEh1J,CAAC,EAAE,OAAOkH,EAAEw9G,EAAEx9G,GAAG0zB,EAAGp7B,EAAE,KAAK,MAAMA,EAAGw1J,EAAK,CAAC,EAAEh1J,CAAC,EAAE,MAAMkH,EAAEA,EAAE0zB,CAAC,CAAC,EAAG,OAAOp7B,CAAE,EACxO,WAAa,QAAU,SAASw1J,EAAM,CAAE,OAAQA,EAAK,CAAC,EAAE,OAAS,GAAKnyJ,SAAO,SAASmyJ,EAAK,CAAC,EAAE,CAAC,CAAC,EAAKnyJ,SAAO,OAAOmyJ,EAAK,CAAC,EAAE,IAAI,SAASx1J,EAAG,CAAE,OAAOqD,SAAO,SAASrD,CAAC,EAAIA,EAAI,YAAYA,CAAC,CAAE,CAAE,CAAC,EAAI,YAAYw1J,CAAI,CAAE,EAAI,YAEzN,WAAa,SAAS/wJ,EAAsB5B,EAAaP,EAAyB,CAA+B,QAAzBspE,EAAqB,CAAE,EAAUprE,EAAEqC,EAAGrC,EAAE8B,EAAG9B,GAAG,EAAGorE,EAAG,KAAK,OAAO,aAAa,eAAennE,EAAEjE,CAAC,CAAC,CAAC,EAAG,OAAOorE,EAAG,KAAK,EAAE,EAAE,QAAQ,KAAK,EAAE,GAC9N,UAAY,QAAU,SAASnnE,EAAsB5B,EAAaP,EAAyB,CAAE,MAAG,CAACe,SAAO,SAASoB,CAAC,GAAqC,CAAC,YAAoB,WAAWA,EAAE5B,EAAEP,CAAC,EAAUmC,EAAE,SAAS,UAAU5B,EAAEP,CAAC,EAAE,QAAQ,KAAK,EAAE,CAAwB,EAAK,WAE5Q,WAAa,SAASmC,EAAsB5B,EAAaqM,EAAyB,CAA+B,QAAzB08D,EAAqB,CAAE,EAAUprE,EAAEqC,EAAGrC,EAAEqC,EAAEqM,EAAG,EAAE1O,EAAGorE,EAAG,MAAM,IAAMnnE,EAAEjE,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,EAAG,OAAOorE,EAAG,KAAK,EAAE,GACzM,UAAY,QAAU,SAASnnE,EAAsB5B,EAAaqM,EAAyB,CAAE,OAAO7L,SAAO,SAASoB,CAAC,EAAiCA,EAAE,SAAS,MAAM5B,EAAEA,EAAEqM,CAAC,EAAI,WAAWzK,EAAE5B,EAAEqM,CAAC,CAAE,EAAK,WAEvM,QAAU,SAASzK,EAAsB5B,EAAaP,EAAc,CAAa,QAAPspE,EAAG,GAAYprE,EAAEqC,EAAGrC,EAAE8B,EAAG9B,IAAKorE,EAAG,KAAK,OAAO,aAAa,YAAYnnE,EAAEjE,CAAC,CAAC,CAAC,EAAG,OAAOorE,EAAG,KAAK,EAAE,CAAE,EAC3K,OAAS,QAAU,SAAS69F,EAAOhlK,EAAuB5B,EAAcP,EAAc,CAAE,OAAQe,SAAO,SAASoB,CAAC,EAAoCA,EAAE,SAAS,OAAO5B,EAAEP,CAAC,EAAI,QAAQmC,EAAE5B,EAAEP,CAAC,CAAE,EAAK,QAElM,SAAW,SAASmC,EAAsBjE,EAAc,CAAE,IAAIF,EAAM,eAAemE,EAAEjE,CAAC,EAAG,OAAOF,EAAM,EAAI,OAAOmE,EAAGjE,EAAE,EAAEA,EAAE,EAAEF,EAAI,CAAC,EAAI,EAAG,EACxI,QAAU,SAEV,SAAW,SAASmE,EAAsBjE,EAAc,CAAE,IAAIF,EAAM,eAAemE,EAAEjE,CAAC,EAAG,OAAOF,EAAM,EAAI,OAAOmE,EAAGjE,EAAE,EAAEA,EAAE,EAAEF,EAAI,CAAC,EAAI,EAAG,EACxI,QAAU,SAEV,UAAY,SAASmE,EAAsBjE,EAAc,CAAE,IAAIF,EAAM,EAAE,eAAemE,EAAEjE,CAAC,EAAG,OAAOF,EAAM,EAAI,OAAOmE,EAAGjE,EAAE,EAAEA,EAAE,EAAEF,EAAI,CAAC,EAAI,EAAG,EAC3I,SAAW,UAEX,QAAU,SAASopK,EAAMjlK,EAAsBjE,EAAc,CAAE,IAAIF,EAAM,eAAemE,EAAEjE,CAAC,EAAG,OAAOF,EAAM,EAAI,UAAUmE,EAAGjE,EAAE,EAAEA,EAAE,EAAEF,CAAG,EAAI,EAAG,EAC9I,OAAS,QAET,SAAW,SAASmE,EAAsBjE,EAAc,CAAE,IAAIF,EAAM,eAAemE,EAAEjE,CAAC,EAAG,OAAOF,EAAM,EAAI,OAAOmE,EAAGjE,EAAE,EAAEA,EAAE,EAAEF,CAAG,EAAI,EAAG,EACtI,QAAU,SAEV,UAAY,SAASmE,EAAuBk1B,EAAgB,CAAE,OAAO,eAAel1B,EAAGk1B,CAAG,CAAE,EAC5F,SAAW,UAEX,OAAS,SAASgwI,EAASlkK,EAAG,CAAE,OAAO,MAAM,QAAQA,CAAC,GAAM,OAAO,WAAe,KAAeA,aAAa,UAAY,EAE3H,UACF,QAAU,SAAiBhB,EAAuBjE,EAAc,CAAE,GAAG,CAAC6C,SAAO,SAASoB,CAAC,EAAmC,OAAO,SAASA,EAAGjE,CAAC,EAAG,IAAIF,EAAMmE,EAAE,aAAajE,CAAC,EAAG,OAAOF,EAAM,EAAImE,EAAE,SAAS,OAAOjE,EAAE,EAAEA,EAAE,EAAEF,EAAI,CAAC,EAAI,EAAG,EACrO,QAAU,SAAiBmE,EAAuBjE,EAAc,CAAE,GAAG,CAAC6C,SAAO,SAASoB,CAAC,EAAmC,OAAO,SAASA,EAAGjE,CAAC,EAAG,IAAIF,EAAMmE,EAAE,aAAajE,CAAC,EAAG,OAAOF,EAAM,EAAImE,EAAE,SAAS,OAAOjE,EAAE,EAAEA,EAAE,EAAEF,EAAI,CAAC,EAAI,EAAG,EACrO,SAAW,SAAkBmE,EAAuBjE,EAAc,CAAE,GAAG,CAAC6C,SAAO,SAASoB,CAAC,GAAqC,CAAC,YAAa,OAAO,UAAUA,EAAGjE,CAAC,EAAG,IAAIF,EAAM,EAAEmE,EAAE,aAAajE,CAAC,EAAG,OAAOiE,EAAE,SAAS,UAAUjE,EAAE,EAAEA,EAAE,EAAEF,EAAI,CAAC,CAAE,EAC9O,OAAS,SAAgBmE,EAAuBjE,EAAc,CAAE,GAAG,CAAC6C,SAAO,SAASoB,CAAC,GAAqC,CAAC,YAAa,OAAO,QAAQA,EAAGjE,CAAC,EAAG,IAAIF,EAAMmE,EAAE,aAAajE,CAAC,EAAG,OAAOiE,EAAE,SAAS,UAAUjE,EAAE,EAAEA,EAAE,EAAEF,CAAG,CAAE,EACpO,QAAU,SAAiBmE,EAAuBjE,EAAc,CAAE,GAAG,CAAC6C,SAAO,SAASoB,CAAC,EAAmC,OAAO,SAASA,EAAGjE,CAAC,EAAG,IAAIF,EAAMmE,EAAE,aAAajE,CAAC,EAAG,OAAOiE,EAAE,SAAS,OAAOjE,EAAE,EAAEA,EAAE,EAAEF,CAAG,CAAE,EACpN,SAAW,SAAiBmE,EAAuBjE,EAAc,CAAE,OAAG6C,SAAO,SAASoB,CAAC,EAAsCA,EAAE,aAAajE,CAAC,EAAU,UAAUiE,EAAEjE,CAAC,GACpK,OAAS,SAAkBiF,EAAG,CAAE,OAAOpC,SAAO,SAASoC,CAAC,GAAK,MAAM,QAAQA,CAAC,GAAM,OAAO,WAAe,KAAeA,aAAa,aAerI,IAAI,YAAc,SAAShB,EAAuBk1B,EAA2B,CAAE,OAAOl1B,EAAEk1B,CAAG,GACvF,eAAiB,SAASl1B,EAAuBk1B,EAA2B,CAAE,OAAQl1B,EAAEk1B,EAAI,CAAC,EAAG,IAAOl1B,EAAEk1B,CAAG,CAAE,EAC9G,cAAgB,SAASl1B,EAAuBk1B,EAA2B,CAAE,IAAIrS,EAAK7iB,EAAEk1B,EAAI,CAAC,EAAG,IAAOl1B,EAAEk1B,CAAG,EAAG,OAAQrS,EAAI,MAAUA,GAAM,MAASA,EAAI,GAAK,EAAI,EACjK,eAAiB,SAAS7iB,EAAuBk1B,EAA2B,CAAE,OAAOl1B,EAAEk1B,EAAI,CAAC,GAAG,GAAG,KAAKl1B,EAAEk1B,EAAI,CAAC,GAAG,KAAKl1B,EAAEk1B,EAAI,CAAC,GAAG,GAAGl1B,EAAEk1B,CAAG,CAAE,EAC1I,cAAgB,SAASl1B,EAAuBk1B,EAA2B,CAAE,OAAQl1B,EAAEk1B,EAAI,CAAC,GAAG,GAAKl1B,EAAEk1B,EAAI,CAAC,GAAG,GAAKl1B,EAAEk1B,EAAI,CAAC,GAAG,EAAGl1B,EAAEk1B,CAAG,CAAE,EACvI,cAAgB,SAASl1B,EAAuBk1B,EAA2B,CAAE,OAAQl1B,EAAEk1B,CAAG,GAAG,GAAKl1B,EAAEk1B,EAAI,CAAC,GAAG,GAAKl1B,EAAEk1B,EAAI,CAAC,GAAG,EAAGl1B,EAAEk1B,EAAI,CAAC,CAAE,EAE3I,SAAS,UAAU/0B,EAAiBmd,EAAiC,CACpE,IAAI6V,EAAE,GAAIgyI,EAAsBC,EAAIC,EAAG,CAAE,EAAE1uI,EAAGg9H,EAAI53J,EAAGupK,EACrD,OAAOhoJ,EAAC,CACP,IAAK,OAEJ,GADAgoJ,EAAM,KAAK,EACR,SAAW1mK,SAAO,SAAS,IAAI,GAAM,YAAau0B,EAAI,KAAK,MAAM,KAAK,EAAG,KAAK,EAAE,EAAEhzB,CAAI,EAAE,SAAS,SAAS,MACxG,KAAIpE,EAAI,EAAGA,EAAIoE,EAAM,EAAEpE,EAAKo3B,GAAG,OAAO,aAAa,eAAe,KAAMmyI,CAAG,CAAC,EAAGA,GAAK,EACzFnlK,GAAQ,EACR,MAED,IAAK,OAAQgzB,EAAI,OAAO,KAAM,KAAK,EAAG,KAAK,EAAIhzB,CAAI,EAAG,MACtD,IAAK,UAAWA,GAAQ,EAAGgzB,EAAI,UAAU,KAAM,KAAK,EAAG,KAAK,EAAIhzB,CAAI,EAAG,MAEvE,IAAK,OAEC,OAAO,UAAU,KAAK,KAAMA,EAAM,MAAM,EAI9C,IAAK,aAAcgzB,EAAI,QAAQ,KAAM,KAAK,CAAC,EAAGhzB,EAAO,EAAI,eAAe,KAAM,KAAK,CAAC,EAAG,MACvF,IAAK,WAAYgzB,EAAI,QAAQ,KAAM,KAAK,CAAC,EAAGhzB,EAAO,EAAI,eAAe,KAAM,KAAK,CAAC,EAAG,MAErF,IAAK,SAAUgzB,EAAI,SAAS,KAAM,KAAK,CAAC,EAAGhzB,EAAO,EAAI,EAAI,eAAe,KAAM,KAAK,CAAC,EAAG,MAExF,IAAK,OAAQA,EAAO,EAAK,eAAe,KAAM,KAAK,CAAC,EAAGgzB,EAAI,OAAO,KAAM,KAAK,CAAC,EAAMhzB,EAAO,IAAMA,GAAQ,GAAG,MAE5G,IAAK,QAASA,EAAO,EAAK,eAAe,KAAM,KAAK,CAAC,EAAGgzB,EAAI,QAAQ,KAAM,KAAK,CAAC,EAAMhzB,EAAO,IAAMA,GAAQ,GAAKA,EAAO,IAAO,MAE9H,IAAK,OACJ,IADYA,EAAO,EAAGgzB,EAAI,IACnBwD,EAAE,YAAY,KAAM,KAAK,EAAIx2B,GAAM,KAAK,GAAGklK,EAAG,KAAK,SAAS1uI,CAAC,CAAC,EACrExD,EAAIkyI,EAAG,KAAK,EAAE,EAAG,MAClB,IAAK,QACJ,IADallK,EAAO,EAAGgzB,EAAI,IACpBwD,EAAE,eAAe,KAAK,KAAK,EAAGx2B,CAAI,KAAK,GAAGklK,EAAG,KAAK,SAAS1uI,CAAC,CAAC,EAAEx2B,GAAM,EAC5EA,GAAM,EAAGgzB,EAAIkyI,EAAG,KAAK,EAAE,EAAG,MAG3B,IAAK,YACJ,IADiBlyI,EAAI,GAAImyI,EAAM,KAAK,EAChCvpK,EAAI,EAAGA,EAAIoE,EAAM,EAAEpE,EAAG,CACzB,GAAG,KAAK,MAAQ,KAAK,KAAK,QAAQupK,CAAG,IAAM,GAC1C,OAAA3uI,EAAI,YAAY,KAAM2uI,CAAG,EACzB,KAAK,EAAIA,EAAM,EACf3R,EAAK,UAAU,KAAK,KAAMxzJ,EAAKpE,EAAG46B,EAAI,YAAc,WAAW,EACxD0uI,EAAG,KAAK,EAAE,EAAI1R,EAEtB0R,EAAG,KAAK,SAAS,eAAe,KAAMC,CAAG,CAAC,CAAC,EAC3CA,GAAK,CACT,CAAKnyI,EAAIkyI,EAAG,KAAK,EAAE,EAAGllK,GAAQ,EAAG,MAE/B,IAAK,QAML,IAAK,YACJ,IADiBgzB,EAAI,GAAImyI,EAAM,KAAK,EAChCvpK,EAAI,EAAGA,GAAKoE,EAAM,EAAEpE,EAAG,CAC1B,GAAG,KAAK,MAAQ,KAAK,KAAK,QAAQupK,CAAG,IAAM,GAC1C,OAAA3uI,EAAI,YAAY,KAAM2uI,CAAG,EACzB,KAAK,EAAIA,EAAM,EACf3R,EAAK,UAAU,KAAK,KAAMxzJ,EAAKpE,EAAG46B,EAAI,YAAc,WAAW,EACxD0uI,EAAG,KAAK,EAAE,EAAI1R,EAEtB0R,EAAG,KAAK,SAAS,YAAY,KAAMC,CAAG,CAAC,CAAC,EACxCA,GAAK,CACL,CAACnyI,EAAIkyI,EAAG,KAAK,EAAE,EAAG,MAEpB,QACD,OAAOllK,EAAI,CACV,IAAK,GAAG,OAAAglK,EAAK,YAAY,KAAM,KAAK,CAAC,EAAG,KAAK,IAAYA,EACzD,IAAK,GAAG,OAAAA,GAAM7nJ,IAAM,IAAM,cAAgB,gBAAgB,KAAM,KAAK,CAAC,EAAG,KAAK,GAAK,EAAU6nJ,EAC7F,IAAK,GAAG,IAAK,GACZ,OAAG7nJ,IAAM,KAAS,OAAK,KAAK,EAAE,CAAC,EAAI,MAAc6nJ,GAAOhlK,EAAO,EAAK,cAAgB,eAAe,KAAM,KAAK,CAAC,EAAG,KAAK,GAAK,EAAUglK,IAC/HC,EAAK,eAAe,KAAM,KAAK,CAAC,EAAG,KAAK,GAAK,EAAYA,GACjE,IAAK,GAAG,IAAK,GACZ,GAAG9nJ,IAAM,IACR,OAAGnd,GAAQ,EAAGilK,EAAK,SAAS,KAAM,KAAK,CAAC,EACnCA,EAAK,SAAS,CAAC,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC,EAAG,CAAC,EAC/I,KAAK,GAAK,EAAUA,EACdjlK,EAAO,EAEf,IAAK,IAAIgzB,EAAI,UAAU,KAAM,KAAK,EAAGhzB,CAAI,EAAG,KAC9C,CAAE,CACD,YAAK,GAAGA,EAAagzB,CACtB,CAEA,IAAI,gBAAkB,SAASnzB,EAAuByC,EAAgByyB,EAAyB,CAAEl1B,EAAEk1B,CAAG,EAAKzyB,EAAM,IAAOzC,EAAEk1B,EAAI,CAAC,EAAMzyB,IAAQ,EAAK,IAAOzC,EAAEk1B,EAAI,CAAC,EAAMzyB,IAAQ,GAAM,IAAOzC,EAAEk1B,EAAI,CAAC,EAAMzyB,IAAQ,GAAM,KAClN,eAAkB,SAASzC,EAAuByC,EAAgByyB,EAAyB,CAAEl1B,EAAEk1B,CAAG,EAAKzyB,EAAM,IAAOzC,EAAEk1B,EAAI,CAAC,EAAMzyB,GAAO,EAAK,IAAOzC,EAAEk1B,EAAI,CAAC,EAAMzyB,GAAO,GAAM,IAAOzC,EAAEk1B,EAAI,CAAC,EAAMzyB,GAAO,GAAM,KAC/M,gBAAkB,SAASzC,EAAuByC,EAAgByyB,EAAyB,CAAEl1B,EAAEk1B,CAAG,EAAKzyB,EAAM,IAAOzC,EAAEk1B,EAAI,CAAC,EAAMzyB,IAAQ,EAAK,KAElJ,SAAS,WAAW6a,EAAc7a,EAAuBm2B,EAAuB,CAC/E,IAAIz4B,EAAO,EAAGpE,EAAI,EAClB,GAAG68B,IAAM,OAAQ,CAEhB,IAAI78B,EAAI,EAAGA,GAAK0G,EAAI,OAAQ,EAAE1G,EAAG,gBAAgB,KAAM0G,EAAI,WAAW1G,CAAC,EAAG,KAAK,EAAI,EAAIA,CAAC,EACxFoE,EAAO,EAAIsC,EAAI,MACf,SAASm2B,IAAM,QAAUA,GAAK,QAgBvB,CAIN,IAFAn2B,EAAMA,EAAI,QAAQ,gBAAiB,GAAG,EAElC1G,EAAI,EAAGA,GAAK0G,EAAI,OAAQ,EAAE1G,EAAG,KAAK,KAAK,EAAIA,CAAC,EAAK0G,EAAI,WAAW1G,CAAC,EAAI,IACzEoE,EAAOsC,EAAI,MACX,SACQm2B,IAAM,MAAO,CACtB,KAAM78B,EAAIuhB,EAAG,EAAEvhB,EAEd,KAAK,KAAK,GAAG,EAAK,SAAS0G,EAAI,MAAM,EAAE1G,EAAG,EAAEA,EAAE,CAAC,EAAG,EAAE,GAAG,EACtD,OAAO,IACX,SAAW68B,IAAM,UAAW,CAEzB,IAAIz7B,EAAiB,KAAK,IAAI,KAAK,EAAImgB,EAAG,KAAK,MAAM,EACrD,IAAIvhB,EAAI,EAAGA,EAAI,KAAK,IAAI0G,EAAI,OAAQ6a,CAAC,EAAG,EAAEvhB,EAAG,CAC5C,IAAI62J,EAAKnwJ,EAAI,WAAW1G,CAAC,EACzB,KAAK,KAAK,GAAG,EAAK62J,EAAK,IACvB,KAAK,KAAK,GAAG,EAAKA,GAAM,CACxB,CACD,KAAM,KAAK,EAAIz1J,GAAK,KAAK,KAAK,GAAG,EAAI,EACrC,OAAO,IACR,KAA0C,QAAOmgB,EAAC,CAClD,IAAM,GAAGnd,EAAO,EAAG,KAAK,KAAK,CAAC,EAAIsC,EAAI,IAAM,MAC5C,IAAM,GAAGtC,EAAO,EAAG,KAAK,KAAK,CAAC,EAAIsC,EAAI,IAAMA,KAAS,EAAG,KAAK,KAAK,EAAE,CAAC,EAAIA,EAAI,IAAM,MACnF,IAAM,GAAGtC,EAAO,EAAG,KAAK,KAAK,CAAC,EAAIsC,EAAI,IAAMA,KAAS,EAAG,KAAK,KAAK,EAAE,CAAC,EAAIA,EAAI,IAAMA,KAAS,EAAG,KAAK,KAAK,EAAE,CAAC,EAAIA,EAAI,IAAM,MAC1H,IAAM,GAAGtC,EAAO,EAAG,gBAAgB,KAAMsC,EAAK,KAAK,CAAC,EAAG,MACvD,IAAM,GAAa,GAAVtC,EAAO,EAAMy4B,IAAM,IAAK,CAAE,gBAAgB,KAAMn2B,EAAK,KAAK,CAAC,EAAG,KAAQ,CAE/E,IAAK,IAAI,MACT,IAAK,GAAItC,EAAO,EAAG,eAAe,KAAMsC,EAAK,KAAK,CAAC,EAAG,KACtD,CACD,YAAK,GAAKtC,EAAa,IACxB,CAEA,SAAS,WAAWolK,EAAmBC,EAAyB,CAC/D,IAAI1nK,EAAI,UAAU,KAAK,KAAK,EAAEynK,EAAO,QAAQ,CAAC,EAC9C,GAAGznK,IAAMynK,EAAQ,MAAM,IAAI,MAAMC,EAAM,YAAcD,EAAS,QAAUznK,CAAC,EACzE,KAAK,GAAKynK,EAAO,QAAQ,CAC1B,CAEA,SAAS,UAAUnP,EAAMj1J,EAAyB,CACjDi1J,EAAK,EAAIj1J,EACTi1J,EAAK,WAAoB,UACzBA,EAAK,IAAM,WACXA,EAAK,YAAc,UACpB,CAEA,SAAS,UAAUA,EAAM/2J,EAAkC,CAAE+2J,EAAK,GAAK/2J,CAAS,CAEhF,SAAS,QAAQg3J,EAAyB,CACzC,IAAIljI,EAAI,YAAYkjI,CAAE,EACtB,iBAAUljI,EAAG,CAAC,EACPA,CACR,CAGA,SAAS,aAAaxe,EAAMpC,EAAuBopC,EAAe,CACjE,GAAIhnC,EACJ,KAAI8wJ,EAASC,EAASrmK,EACtB,UAAUsV,EAAMA,EAAK,GAAK,CAAC,EAE3B,QADI8rG,EAAI9rG,EAAK,OAAQgxJ,EAAK,EAAGrP,EAAM,EAC7B3hJ,EAAK,EAAI8rG,GAAG,CACjBklD,EAAKhxJ,EAAK,WAAW,CAAC,EACnBgxJ,EAAK,MAAMA,GAAMA,EAAK,OAAUhxJ,EAAK,WAAW,CAAC,EAAI,MAAO,IAC/D,IAAI29F,EAAI,eAAeqzD,CAAE,GAAK,eAAe,KAAM,EAGnD,IAFAF,EAAU9wJ,EAAK,WAAW,CAAC,EAC3BtV,EAASomK,EAAU,IACfC,EAAU,EAAGA,EAAS,GAAMD,EAAU,IAAO,EAAEC,EAASrmK,KAAYomK,EAAU9wJ,EAAK,WAAW,CAAC,GAAK,MAAQ,EAAE+wJ,EAClHpP,EAAM3hJ,EAAK,EAAItV,EACf,IAAIlB,EAAIm0G,EAAE,GAAKA,EAAE,EAAE39F,EAAMtV,EAAQs8C,CAAI,EAErC,GADAhnC,EAAK,EAAI2hJ,EACN/jJ,EAAGpU,EAAGm0G,EAAGqzD,CAAE,EAAG,MACjB,EACF,CAGA,SAAS,WAAyB,CACjC,IAAI5U,EAAwB,GAAI6U,EAAQ,QAAU,IAAM,KACpDC,EAAS,SAAmBxP,EAAyB,CACxD,IAAIljI,EAAe,QAAQkjI,CAAE,EAC7B,iBAAUljI,EAAG,CAAC,EACPA,CACT,EAEK2yI,EAAmBD,EAAOD,CAAK,EAE/BG,EAAS,UAAqB,CAC7BD,IAEDA,EAAO,IACNA,EAAO,OAASA,EAAO,IAAKA,EAASA,EAAO,MAAM,EAAGA,EAAO,CAAC,EAAGA,EAAO,EAAIA,EAAO,QAClFA,EAAO,OAAS,GAAG/U,EAAK,KAAK+U,CAAM,GAEvCA,EAAS,KACX,EAEKtlJ,EAAO,SAAiB61I,EAAyB,CACpD,OAAGyP,GAAWzP,EAAMyP,EAAO,OAASA,EAAO,EAAYA,GACvDC,IACQD,EAASD,EAAO,KAAK,IAAIxP,EAAG,EAAGuP,CAAK,CAAC,EAC/C,EAEKzoK,EAAM,UAAkB,CAC3B,OAAA4oK,IACO,QAAQhV,CAAI,CACrB,EAEKz1G,EAAO,SAAiBh8C,EAAK,CAAEymK,EAAM,EAAID,EAASxmK,EAAQwmK,EAAO,GAAK,OAAMA,EAAO,EAAIA,EAAO,QAAQtlJ,EAAKolJ,CAAK,GAEpH,MAAQ,CAAE,KAAKplJ,EAAM,KAAK86B,EAAM,IAAIn+C,EAAK,MAAM4zJ,EAChD,CAEA,SAAS,aAAaiV,EAAiBh/J,EAAiBynD,EAASpvD,EAAoB,CACpF,IAAIie,EAAe,CAACtW,EAAMyD,EAC1B,GAAG,OAAM6S,CAAC,EACV,CAAIje,IAAQA,EAAS,eAAeie,CAAC,EAAE,IAAMmxC,GAAS,IAAI,QAAU,GACpEhkD,EAAI,GAAK6S,GAAK,IAAO,EAAI,GAAK,EAC3Bje,GAAU,KAAM,EAAEoL,EAAMpL,GAAU,OAAQ,EAAEoL,EAAMpL,GAAU,SAAU,EAAEoL,EAC3E,IAAI0oB,EAAI6yI,EAAG,KAAKv7J,CAAC,EACd6S,GAAK,IAAM6V,EAAE,YAAY,EAAG7V,CAAC,GAE/B6V,EAAE,YAAY,GAAI7V,EAAI,KAAQ,GAAI,EAClC6V,EAAE,YAAY,EAAI7V,GAAK,CAAC,GAEzB,QAAQvhB,EAAI,EAAGA,GAAK,EAAG,EAAEA,EACxB,GAAGsD,GAAU,IAAQ8zB,EAAE,YAAY,GAAI9zB,EAAS,KAAM,GAAI,EAAGA,IAAW,MACnE,CAAE8zB,EAAE,YAAY,EAAG9zB,CAAM,EAAG,KAAQ,CAEfA,EAAS,GAAK,OAAOovD,CAAO,GAAGu3G,EAAG,KAAKv3G,CAAO,EAC1E,CAEA,SAAS,eAAew3G,EAAsB3P,EAAa36G,EAA+B,CACzF,IAAIl3C,EAAM,IAAIwhK,CAAI,EAQlB,GAPG3P,EAAI,GACH7xJ,EAAI,OAAMA,EAAI,GAAK6xJ,EAAI,EAAE,GACzB7xJ,EAAI,OAAMA,EAAI,GAAK6xJ,EAAI,EAAE,KAEzB7xJ,EAAI,OAAMA,EAAI,GAAK6xJ,EAAI,GACvB7xJ,EAAI,OAAMA,EAAI,GAAK6xJ,EAAI,IAExB,CAAC36G,GAAQA,EAAK,KAAO,GAAI,CAC3B,KAAMl3C,EAAI,GAAK,KAAOA,EAAI,GAAK,IAC/B,KAAMA,EAAI,GAAK,OAASA,EAAI,GAAK,KACjC,CACD,OAAOA,CACR,CAEA,SAAS,gBAAgBwhK,EAAMv/J,EAAOi1C,EAAM,CAC3C,IAAIl3C,EAAM,IAAIwhK,CAAI,EAClB,OAAAxhK,EAAI,EAAI,eAAeA,EAAI,EAAGiC,EAAM,EAAGi1C,CAAI,EAC3Cl3C,EAAI,EAAI,eAAeA,EAAI,EAAGiC,EAAM,EAAGi1C,CAAI,EACpCl3C,CACR,CAEA,SAAS,gBAAgBnG,EAAmB4nK,EAA4B,CACvE,GAAG5nK,EAAE,MAAQA,EAAE,EAAI,EAAiB,IAAZA,EAAI,IAAIA,CAAC,EAASA,EAAE,EAAI,GAAGA,EAAE,GAAM4nK,EAAO,EAAK,MAAS,IAChF,GAAG5nK,EAAE,MAAQA,EAAE,EAAI,EAAiB,IAAZA,EAAI,IAAIA,CAAC,EAASA,EAAE,EAAI,GAAGA,EAAE,GAAM4nK,EAAO,EAAK,QAAaA,EAAO,EAAK,MAAU,MAC1G,IAAI9nK,EAAI,YAAYE,CAAC,EACrB,MAAG,CAACA,EAAE,MAAQA,EAAE,MAAQ,OAAMF,EAAI,QAAQA,CAAC,GACxC,CAACE,EAAE,MAAQA,EAAE,MAAQ,OAAMF,EAAI,QAAQA,CAAC,GACpCA,CACR,CAEA,SAAS,iBAAiBqR,EAAGksC,EAAiB,CAC7C,OAAGlsC,EAAE,EAAE,GAAK,GAAK,CAACA,EAAE,EAAE,MAClBA,EAAE,EAAE,IAAMksC,EAAK,MAAQ,GAAK,QAAWA,EAAK,MAAQ,EAAI,MAAU,QAAY,CAAClsC,EAAE,EAAE,MAC7EA,EAAE,EAAE,KAAO,GAAK,KAAO,WAAWA,EAAE,EAAE,CAAC,EAAI,KAAOA,EAAE,EAAE,KAAO,GAAK,KAAO,WAAWA,EAAE,EAAE,CAAC,EAGhGA,EAAE,EAAE,GAAK,GAAK,CAACA,EAAE,EAAE,MAClBA,EAAE,EAAE,IAAMksC,EAAK,MAAQ,GAAK,MAAS,MAAS,CAAClsC,EAAE,EAAE,MAC7CA,EAAE,EAAE,KAAO,GAAK,KAAO,WAAWA,EAAE,EAAE,CAAC,EAAI,KAAOA,EAAE,EAAE,KAAO,GAAK,KAAO,WAAWA,EAAE,EAAE,CAAC,EAG5F,gBAAgBA,EAAE,EAAGksC,EAAK,IAAI,EAAI,IAAM,gBAAgBlsC,EAAE,EAAGksC,EAAK,IAAI,CAC9E,CACA,SAAS,WAAWwqH,EAA8B,CAAE,OAAO,SAAS,UAAUA,CAAM,EAAE,EAAE,EAAI,CAAI,CAChG,SAAS,WAAWjE,EAA2B,CAAE,MAAO,IAAMA,EAAM,EAAK,CACzE,SAAS,QAAQK,EAA4B,CAAE,OAAOA,EAAK,QAAQ,kBAAkB,QAAQ,CAAI,CACjG,SAAS,UAAUA,EAA4B,CAAE,OAAOA,EAAK,QAAQ,WAAW,IAAI,CAAI,CAExF,SAAS,WAAW6D,EAA8B,CAA2C,QAArC9nK,EAAI,UAAU8nK,CAAM,EAAGjoK,EAAI,EAAGpC,EAAI,EAASA,IAAMuC,EAAE,OAAQ,EAAEvC,EAAGoC,EAAI,GAAGA,EAAIG,EAAE,WAAWvC,CAAC,EAAI,GAAI,OAAOoC,EAAI,CAAI,CACxK,SAAS,WAAWkoK,EAA2B,CAAE,GAAGA,EAAM,EAAG,MAAM,IAAI,MAAM,kBAAoBA,CAAG,EAAG,IAAIjoK,EAAE,GAAI,IAAI,EAAEioK,EAAKA,EAAKA,EAAI,KAAK,OAAOA,EAAI,GAAG,EAAE,EAAGjoK,EAAI,OAAO,cAAeioK,EAAI,GAAG,GAAM,EAAE,EAAIjoK,EAAG,OAAOA,CAAI,CACxN,SAAS,QAAQmkK,EAA4B,CAAE,OAAOA,EAAK,QAAQ,WAAW,MAAM,CAAI,CACxF,SAAS,UAAUA,EAA4B,CAAE,OAAOA,EAAK,QAAQ,aAAa,IAAI,CAAI,CAE1F,SAAS,WAAWA,EAAmC,CAAE,OAAOA,EAAK,QAAQ,sBAAsB,OAAO,EAAE,MAAM,GAAG,CAAI,CACzH,SAAS,YAAYA,EAAiC,CAErD,QADIjwD,EAAI,EAAGl6E,EAAI,EACPr8B,EAAI,EAAGA,EAAIwmK,EAAK,OAAQ,EAAExmK,EAAG,CACpC,IAAI62J,EAAK2P,EAAK,WAAWxmK,CAAC,EACvB62J,GAAM,IAAMA,GAAM,GAAItgD,EAAI,GAAKA,GAAKsgD,EAAK,IACpCA,GAAM,IAAMA,GAAM,KAAIx6H,EAAI,GAAKA,GAAKw6H,EAAK,IACjD,CACD,MAAO,CAAE,EAAGx6H,EAAI,EAAG,EAAEk6E,EAAI,EAC1B,CACA,SAAS,YAAY2zD,EAAiC,CAGrD,QAFII,EAAMJ,EAAK,EAAI,EACf7nK,EAAE,GACAioK,EAAKA,GAAMA,EAAI,GAAG,GAAI,EAAGjoK,EAAI,OAAO,cAAeioK,EAAI,GAAG,GAAM,EAAE,EAAIjoK,EAC5E,OAAOA,GAAK6nK,EAAK,EAAI,EACtB,CACA,SAAS,aAAav/J,EAA4B,CACjD,IAAIwuB,EAAMxuB,EAAM,QAAQ,GAAG,EAC3B,OAAGwuB,GAAO,GAAW,CAAE,EAAG,YAAYxuB,CAAK,EAAG,EAAG,YAAYA,CAAK,CAAC,EAC5D,CAAE,EAAG,YAAYA,EAAM,MAAM,EAAGwuB,CAAG,CAAC,EAAG,EAAG,YAAYxuB,EAAM,MAAMwuB,EAAM,CAAC,CAAC,EAClF,CAEA,SAAS,aAAaktF,EAA0BkkD,EAAiC,CAChF,OAAG,OAAOA,EAAO,KAAe,OAAOA,GAAO,SAEtC,aAAalkD,EAAG,EAAGA,EAAG,CAAC,GAG5B,OAAOA,GAAO,WAAUA,EAAK,YAAaA,CAAE,GAC5C,OAAOkkD,GAAO,WAAUA,EAAK,YAAaA,CAAE,GAGxClkD,GAAMkkD,EAAKlkD,EAAKA,EAAK,IAAMkkD,EACnC,CACA,SAAS,UAAUnvH,EAA0B,CAC5C,IAAI/4C,EAAI,aAAa+4C,CAAE,EACvB,MAAO,IAAM,WAAW/4C,EAAE,EAAE,CAAC,EAAI,IAAM,WAAWA,EAAE,EAAE,CAAC,EAAI,KAAO,WAAWA,EAAE,EAAE,CAAC,EAAI,IAAM,WAAWA,EAAE,EAAE,CAAC,CAC7G,CAGA,SAAS,yBAAyBmoK,EAAkB5qH,EAAiB,CACpE,GAAG,CAAC4qH,GAAS,EAAE5qH,GAAQA,EAAK,MAAQ,GAAKA,EAAK,MAAQ,GAAI,MAAM,IAAI,MAAM,kBAAkB,EAC5F,MAAI,kCAAkC,KAAK4qH,CAAK,EAAU,IAAMA,EAAM,QAAQ,KAAM,IAAI,EAAI,IACrFA,CACR,CAEA,SAAS,kBAAkB7/J,EAA4B,CACtD,IAAIysB,EAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAC5B+B,EAAM,EAAGn5B,EAAI,EAAG62J,EAAK,EACrB/2J,EAAM6K,EAAM,OAChB,IAAIwuB,EAAM,EAAGn5B,EAAIF,GACZ,GAAA+2J,EAAGlsJ,EAAM,WAAW3K,CAAC,EAAE,IAAM,GAAK62J,EAAK,IADtB,EAAE72J,EAEvBm5B,EAAM,GAAGA,EAAM09H,EAIhB,IAFAz/H,EAAE,EAAE,EAAI,EAAE+B,EAENA,EAAM,EAAGn5B,EAAIF,GACZ,GAAA+2J,EAAGlsJ,EAAM,WAAW3K,CAAC,EAAE,IAAM,GAAK62J,EAAK,GADtB,EAAE72J,EAEvBm5B,EAAM,GAAGA,EAAM09H,EAIhB,GAFAz/H,EAAE,EAAE,EAAI,EAAE+B,EAEPn5B,IAAMF,GAAO+2J,GAAM,GAAM,OAAAz/H,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAGA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAUA,EAG7D,IAFA,EAAEp3B,EAEEm5B,EAAM,EAAGn5B,GAAKF,GACb,GAAA+2J,EAAGlsJ,EAAM,WAAW3K,CAAC,EAAE,IAAM,GAAK62J,EAAK,IADrB,EAAE72J,EAExBm5B,EAAM,GAAGA,EAAM09H,EAIhB,IAFAz/H,EAAE,EAAE,EAAI,EAAE+B,EAENA,EAAM,EAAGn5B,GAAKF,GACb,GAAA+2J,EAAGlsJ,EAAM,WAAW3K,CAAC,EAAE,IAAM,GAAK62J,EAAK,GADrB,EAAE72J,EAExBm5B,EAAM,GAAGA,EAAM09H,EAEhB,OAAAz/H,EAAE,EAAE,EAAI,EAAE+B,EACH/B,CACR,CAEA,SAAS,iBAAiB8yI,EAAe77J,EAAW,CACnD,IAAI0rF,EAAKmwE,EAAK,GAAK,KAAO77J,aAAa,KACvC,GAAG67J,EAAK,GAAK,KAAM,GAAI,CAAE,OAAQA,EAAK,EAAI,WAAWA,EAAK,EAAGnwE,EAAI,QAAQ1rF,CAAC,EAAIA,CAAC,CAAK,MAAU,CAAG,CACjG,GAAI,CAAE,OAAQ67J,EAAK,EAAI,YAAYA,EAAK,IAAI,CAAE,GAAE,WAAWnwE,EAAI,GAAK,GAAKA,EAAI,QAAQ1rF,CAAC,EAAIA,CAAC,OAAe,CAAE,MAAO,GAAGA,CAAI,CAC3H,CAEA,SAAS,YAAY67J,EAAe77J,EAAW+oB,EAAW,CACzD,OAAG8yI,GAAQ,MAAQA,EAAK,GAAK,MAAQA,EAAK,GAAK,IAAY,GACxDA,EAAK,IAAM,OAAkBA,EAAK,GAClCA,EAAK,GAAK,KAAO,CAACA,EAAK,GAAK9yI,GAAKA,EAAE,SAAQ8yI,EAAK,EAAI9yI,EAAE,QACtD8yI,EAAK,GAAK,IAAY,KAAKA,EAAK,CAAC,GAAKA,EAAK,EAC3C77J,GAAK,KAAkB,iBAAiB67J,EAAMA,EAAK,CAAC,EAChD,iBAAiBA,EAAM77J,CAAC,EAChC,CAEA,SAAS,kBAAkBo8J,EAAqB7qH,EAAmB,CAClE,IAAI35C,EAAI25C,GAAQA,EAAK,MAAQA,EAAK,MAAQ,SACtC8qH,EAAS,GAAI,OAAAA,EAAOzkK,CAAC,EAAIwkK,EACtB,CAAE,WAAY,CAACxkK,CAAC,EAAG,OAAQykK,CAAM,CACzC,CAEA,SAAS,cAAcC,EAAoB/xJ,EAAcgnC,EAA6B,CACrF,IAAIxoB,EAAIwoB,GAAQ,GACZgrH,EAAQD,EAAOA,EAAI,OAAO,GAAK,KAAQvzI,EAAE,MAEzCmpE,EAAmBoqE,GAAQ,GAC5BC,GAAS,CAACrqE,EAAG,OAAO,IAAGA,EAAG,OAAO,EAAI,IACxC,IAAIsqE,EAAK,EAAGC,EAAK,EACjB,GAAGvqE,GAAMnpE,EAAE,QAAU,KAAM,CAC1B,GAAG,OAAOA,EAAE,QAAU,SAAUyzI,EAAKzzI,EAAE,WAClC,CACJ,IAAI2zI,EAA0B,OAAO3zI,EAAE,QAAU,SAAW,YAAYA,EAAE,MAAM,EAAIA,EAAE,OACtFyzI,EAAKE,EAAQ,EAAGD,EAAKC,EAAQ,CAC7B,CACGxqE,EAAG,MAAM,IAAGA,EAAG,MAAM,EAAI,QAC7B,CACD,IAAI51F,EAAmB,CAAC,EAAG,CAAC,EAAE,IAAU,EAAE,GAAQ,EAAG,EAAG,CAAC,EAAE,EAAG,EAAE,CAAC,CAAC,EAClE,GAAG41F,EAAG,MAAM,EAAG,CACd,IAAIyqE,EAAS,kBAAkBzqE,EAAG,MAAM,CAAC,EACzC51F,EAAM,EAAE,EAAIqgK,EAAO,EAAE,EACrBrgK,EAAM,EAAE,EAAIqgK,EAAO,EAAE,EACrBrgK,EAAM,EAAE,EAAI,KAAK,IAAIA,EAAM,EAAE,EAAGqgK,EAAO,EAAE,CAAC,EAC1CrgK,EAAM,EAAE,EAAI,KAAK,IAAIA,EAAM,EAAE,EAAGqgK,EAAO,EAAE,CAAC,EACvCH,GAAM,KAAIlgK,EAAM,EAAE,EAAIkgK,EAAKG,EAAO,EAAE,EAAI,EAC3C,CAED,QADI7E,EAAM,GACF5vD,EAAI,EAAGA,GAAK39F,EAAK,OAAQ,EAAE29F,EAClC,GAAI39F,EAAK29F,CAAC,EACV,IAAG,CAAC,MAAM,QAAQ39F,EAAK29F,CAAC,CAAC,EAAG,MAAM,IAAI,MAAM,yCAAyC,EACrF,IAAI00D,EAAMJ,EAAKt0D,EAAG20D,EAAS,IAAMD,EAAM,GACpCL,IACErqE,EAAG,OAAO,EAAE0qE,CAAG,IAAG1qE,EAAG,OAAO,EAAE0qE,CAAG,EAAI,IACzC9E,EAAM5lE,EAAG,OAAO,EAAE0qE,CAAG,GAEtB,QAAQ5uI,EAAI,EAAGA,GAAKzjB,EAAK29F,CAAC,EAAE,OAAQ,EAAEl6E,EACrC,GAAG,SAAOzjB,EAAK29F,CAAC,EAAEl6E,CAAC,EAAM,KACzB,KAAI6tI,EAAiB,CAAC,EAAGtxJ,EAAK29F,CAAC,EAAEl6E,CAAC,CAAC,EAC/B8uI,EAAML,EAAKzuI,EAKf,GAJG1xB,EAAM,EAAE,EAAIsgK,IAAKtgK,EAAM,EAAE,EAAIsgK,GAC7BtgK,EAAM,EAAE,EAAIwgK,IAAKxgK,EAAM,EAAE,EAAIwgK,GAC7BxgK,EAAM,EAAE,EAAIsgK,IAAKtgK,EAAM,EAAE,EAAIsgK,GAC7BtgK,EAAM,EAAE,EAAIwgK,IAAKxgK,EAAM,EAAE,EAAIwgK,GAC7BvyJ,EAAK29F,CAAC,EAAEl6E,CAAC,GAAK,OAAOzjB,EAAK29F,CAAC,EAAEl6E,CAAC,GAAM,UAAY,CAAC,MAAM,QAAQzjB,EAAK29F,CAAC,EAAEl6E,CAAC,CAAC,GAAK,EAAEzjB,EAAK29F,CAAC,EAAEl6E,CAAC,YAAa,MAAO6tI,EAAOtxJ,EAAK29F,CAAC,EAAEl6E,CAAC,UAE5H,MAAM,QAAQ6tI,EAAK,CAAC,IAAKA,EAAK,EAAItxJ,EAAK29F,CAAC,EAAEl6E,CAAC,EAAE,CAAC,EAAG6tI,EAAK,EAAIA,EAAK,EAAE,CAAC,GAClEA,EAAK,IAAM,KACb,GAAGA,EAAK,EAAGA,EAAK,EAAI,YACZ9yI,EAAE,UAAa8yI,EAAK,EAAI,IAAKA,EAAK,EAAI,UACrC9yI,EAAE,WACN8yI,EAAK,EAAI,QADS,eAGhB,OAAOA,EAAK,GAAM,SAAUA,EAAK,EAAI,IACrC,OAAOA,EAAK,GAAM,UAAWA,EAAK,EAAI,IACtCA,EAAK,aAAa,MACzBA,EAAK,EAAI9yI,EAAE,QAAU,UAAU,EAAE,EAC9BA,EAAE,WAAa8yI,EAAK,EAAI,IAAKA,EAAK,EAAI,WAAWA,EAAK,EAAG,QAAQA,EAAK,EAAG9yI,EAAE,QAAQ,CAAC,IAChF8yI,EAAK,EAAI,IAAKA,EAAK,EAAI,QAAQA,EAAK,EAAG9yI,EAAE,QAAQ,EAAG8yI,EAAK,EAAI,WAAWA,EAAK,EAAGA,EAAK,CAAC,IAEzFA,EAAK,EAAI,IAEf,GAAGU,EACCzE,EAAIgF,CAAG,GAAKhF,EAAIgF,CAAG,EAAE,IAAGjB,EAAK,EAAI/D,EAAIgF,CAAG,EAAE,GAC7ChF,EAAIgF,CAAG,EAAIjB,MACL,CACN,IAAIkB,EAAW,WAAWD,CAAG,EAAID,EAC9B3qE,EAAG6qE,CAAQ,GAAK7qE,EAAG6qE,CAAQ,EAAE,IAAGlB,EAAK,EAAI3pE,EAAG6qE,CAAQ,EAAE,GACzD7qE,EAAG6qE,CAAQ,EAAIlB,CACf,GAGH,OAAGv/J,EAAM,EAAE,EAAI,MAAU41F,EAAG,MAAM,EAAI,aAAa51F,CAAK,GACjD41F,CACR,CACA,SAAS,aAAa3nF,EAAcgnC,EAA6B,CAAE,OAAO,cAAc,KAAMhnC,EAAMgnC,CAAI,CAAI,CAE5G,SAAS,cAAchnC,EAAM,CAC5B,OAAOA,EAAK,WAAW,EAAG,GAAG,CAC9B,CACA,SAAS,eAAepZ,EAAc43B,EAAG,CACxC,OAAKA,IAAGA,EAAI,QAAQ,CAAC,GACrBA,EAAE,YAAY,EAAG53B,CAAC,EACX43B,CACR,CAGA,SAAS,mBAAmBxe,EAA+B,CAC1D,IAAIyyJ,EAAgBzyJ,EAAK,WAAW,CAAC,EACrC,OAAOyyJ,IAAkB,EAAI,GAAKzyJ,EAAK,WAAWyyJ,EAAe,MAAM,CACxE,CACA,SAAS,mBAAmBzyJ,EAAiBwe,EAAG,CAC/C,IAAIk0I,EAAQ,GAAO,OAAIl0I,GAAK,OAAQk0I,EAAQ,GAAMl0I,EAAI,QAAQ,EAAI,EAAIxe,EAAK,MAAM,GACjFwe,EAAE,YAAY,EAAGxe,EAAK,MAAM,EACxBA,EAAK,OAAS,GAAGwe,EAAE,YAAY,EAAGxe,EAAM,MAAM,EAC3C0yJ,EAAQl0I,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAClC,CASA,SAAS,aAAaxe,EAAM,CAC3B,MAAO,CAAE,IAAKA,EAAK,WAAW,CAAC,EAAG,KAAMA,EAAK,WAAW,CAAC,EAC1D,CACA,SAAS,aAAaikC,EAAKzlB,EAAG,CAC7B,OAAKA,IAAGA,EAAI,QAAQ,CAAC,GACrBA,EAAE,YAAY,EAAc,CAAC,EAC7BA,EAAE,YAAY,EAAe,CAAC,EACvBA,CACR,CAGA,SAAS,cAAcxe,EAAMtV,EAAgC,CAC5D,IAAInC,EAAQyX,EAAK,EACb8hC,EAAQ9hC,EAAK,WAAW,CAAC,EACzB1S,EAAM,mBAAmB0S,CAAI,EAC7B2yJ,EAAY,GACZtmG,EAAK,CAAE,EAAG/+D,EAAK,EAAGA,CAAG,EACzB,GAAKw0C,EAAQ,EAAU,CAGtB,QADI8wH,EAAe5yJ,EAAK,WAAW,CAAC,EAC3B5Y,EAAI,EAAGA,GAAKwrK,EAAc,EAAExrK,EAAGurK,EAAU,KAAK,aAAa3yJ,CAAI,CAAC,EACzEqsD,EAAE,EAAIsmG,CACN,MACItmG,EAAE,EAAI,CAAC,CAAE,IAAK,EAAG,KAAM,CAAC,CAAE,EAI/B,OAAArsD,EAAK,EAAIzX,EAAQmC,EACV2hE,CACR,CACA,SAAS,cAAc/+D,EAAkBkxB,EAAwB,CAEhE,IAAIk0I,EAAQ,GAAO,OAAIl0I,GAAK,OAAQk0I,EAAQ,GAAMl0I,EAAI,QAAQ,GAAK,EAAIlxB,EAAI,EAAE,MAAM,GACnFkxB,EAAE,YAAY,EAAG,CAAC,EAClB,mBAAmBlxB,EAAI,EAAGkxB,CAAC,EACpBk0I,EAAQl0I,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAClC,CAEA,IAAI,qBAAuB,cAC3B,SAAS,qBAAqBlxB,EAAkBkxB,EAAwB,CAEvE,IAAIk0I,EAAQ,GAAO,OAAIl0I,GAAK,OAAQk0I,EAAQ,GAAMl0I,EAAI,QAAQ,GAAK,EAAIlxB,EAAI,EAAE,MAAM,GACnFkxB,EAAE,YAAY,EAAG,CAAC,EAClB,mBAAmBlxB,EAAI,EAAGkxB,CAAC,EAC3BA,EAAE,YAAY,EAAG,CAAC,EAClB,aAAa,CAAE,IAAK,EAAG,KAAM,CAAC,EAAIA,CAAC,EAC5Bk0I,EAAQl0I,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAClC,CAGA,SAAS,eAAexe,EAAc,CACrC,IAAI0xJ,EAAM1xJ,EAAK,WAAW,CAAC,EACvB6yJ,EAAY7yJ,EAAK,WAAW,CAAC,EACjC,OAAA6yJ,GAAa7yJ,EAAK,WAAW,CAAC,GAAK,GACnCA,EAAK,IACE,CAAE,EAAG0xJ,EAAK,UAAWmB,CAAS,CACtC,CACA,SAAS,eAAevB,EAAc9yI,EAAc,CACnD,OAAIA,GAAK,OAAMA,EAAI,QAAQ,CAAC,GAC5BA,EAAE,YAAY,GAAI8yI,EAAK,CAAC,EACxB9yI,EAAE,YAAY,EAAG8yI,EAAK,WAAaA,EAAK,CAAC,EACzC9yI,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAGA,SAAS,oBAAoBxe,EAAc,CAC1C,IAAI6yJ,EAAY7yJ,EAAK,WAAW,CAAC,EACjC,OAAA6yJ,GAAa7yJ,EAAK,WAAW,CAAC,GAAI,GAClCA,EAAK,IACE,CAAE,EAAE,GAAI,UAAW6yJ,CAAS,CACpC,CACA,SAAS,oBAAoBvB,EAAc9yI,EAAc,CACxD,OAAGA,GAAK,OAAMA,EAAI,QAAQ,CAAC,GAC3BA,EAAE,YAAY,EAAG8yI,EAAK,WAAaA,EAAK,CAAC,EACzC9yI,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAGA,IAAI,mBAAqB,mBACrB,mBAAqB,mBAGzB,SAAS,2BAA2Bxe,EAA+B,CAClE,IAAIyyJ,EAAgBzyJ,EAAK,WAAW,CAAC,EACrC,OAAOyyJ,IAAkB,GAAKA,IAAkB,WAAa,GAAKzyJ,EAAK,WAAWyyJ,EAAe,MAAM,CACxG,CACA,SAAS,2BAA2BzyJ,EAAiBwe,EAAG,CACvD,IAAIk0I,EAAQ,GAAO,OAAIl0I,GAAK,OAAQk0I,EAAQ,GAAMl0I,EAAI,QAAQ,GAAG,GACjEA,EAAE,YAAY,EAAGxe,EAAK,OAAS,EAAIA,EAAK,OAAS,UAAU,EACvDA,EAAK,OAAS,GAAGwe,EAAE,YAAY,EAAGxe,EAAM,MAAM,EAC3C0yJ,EAAQl0I,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAClC,CAGA,IAAI,uBAAyB,mBAIzB,YAAc,2BACd,YAAc,2BAIlB,SAAS,eAAexe,EAAiB,CACxC,IAAI3U,EAAI2U,EAAK,MAAMA,EAAK,EAAGA,EAAK,EAAI,CAAC,EACjC8yJ,EAASznK,EAAE,CAAC,EAAI,EAAI0nK,EAAQ1nK,EAAE,CAAC,EAAI,EACvC2U,EAAK,GAAK,EACV,IAAIgzJ,EAAKD,IAAS,EAAI,SAAS,CAAC,EAAG,EAAG,EAAG,EAAI1nK,EAAE,CAAC,EAAI,IAAOA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAAG,CAAC,EAAI,cAAcA,EAAG,CAAC,GAAK,EAC1G,OAAOynK,EAASE,EAAK,IAAOA,CAC7B,CACA,SAAS,eAAehzJ,EAAiBwe,EAAG,CACvCA,GAAK,OAAMA,EAAI,QAAQ,CAAC,GAC5B,IAAIs0I,EAAQ,EAAGC,EAAO,EAAGE,EAAOjzJ,EAAO,IAGvC,GAFKA,IAASA,EAAO,IAAQA,GAAQ,EAAE,GAAK,KAASA,EAAQ,GAAK,GAAQ+yJ,EAAO,EACvEE,IAASA,EAAO,IAAQA,GAAQ,EAAE,GAAK,KAASA,EAAQ,GAAK,KAAQF,EAAO,EAAGD,EAAQ,GAC7FC,EAAMv0I,EAAE,YAAY,KAAMs0I,EAAQG,EAAOjzJ,IAAS,IAAM8yJ,EAAQ,EAAE,MACjE,OAAM,IAAI,MAAM,wBAA0B9yJ,CAAI,CACpD,CAIA,SAAS,UAAUA,EAA+B,CACjD,IAAIsxJ,EAAkB,CAAE,EAAG,CAAE,EAAE,EAAG,CAAE,GACpC,OAAAA,EAAK,EAAE,EAAItxJ,EAAK,WAAW,CAAC,EAC5BsxJ,EAAK,EAAE,EAAItxJ,EAAK,WAAW,CAAC,EAC5BsxJ,EAAK,EAAE,EAAItxJ,EAAK,WAAW,CAAC,EAC5BsxJ,EAAK,EAAE,EAAItxJ,EAAK,WAAW,CAAC,EACrBsxJ,CACR,CACA,SAAS,UAAUx2J,EAAa0jB,EAAG,CAClC,OAAKA,IAAGA,EAAI,QAAQ,EAAE,GACtBA,EAAE,YAAY,EAAG1jB,EAAE,EAAE,CAAC,EACtB0jB,EAAE,YAAY,EAAG1jB,EAAE,EAAE,CAAC,EACtB0jB,EAAE,YAAY,EAAG1jB,EAAE,EAAE,CAAC,EACtB0jB,EAAE,YAAY,EAAG1jB,EAAE,EAAE,CAAC,EACf0jB,CACR,CAGA,IAAI,mBAAqB,UACrB,mBAAqB,UAwBzB,SAAS,WAAWxe,EAAoB,CACvC,GAAGA,EAAK,OAASA,EAAK,EAAI,EAAG,KAAM,4BACnC,OAAOA,EAAK,WAAW,EAAG,GAAG,CAC9B,CACA,SAAS,WAAWA,EAAMwe,EAAG,CAAE,OAAQA,GAAK,QAAQ,CAAC,GAAG,YAAY,EAAGxe,EAAM,GAAG,CAAI,CAGpF,SAAS,eAAeA,EAAoB,CAC3C,IAAIlQ,EAAM,GACNtG,EAAIwW,EAAK,WAAW,CAAC,EAGrBkzJ,EAAa1pK,IAAM,EAEnBkZ,EAAQ1C,EAAK,WAAW,CAAC,EACzBmzJ,EAAMnzJ,EAAK,WAAW,EAAG,GAAG,EAC5BozJ,EAAKpzJ,EAAK,WAAW,CAAC,EACtBqzJ,EAAKrzJ,EAAK,WAAW,CAAC,EACtBszJ,EAAKtzJ,EAAK,WAAW,CAAC,EAG1B,OAFAA,EAAK,IAEGkzJ,EAAU,CACjB,IAAK,GAAGpjK,EAAI,KAAO,EAAG,MACtB,IAAK,GACJA,EAAI,MAAQ4S,EACZ,IAAI6wJ,EAAM,OAAO7wJ,CAAK,EAElB6wJ,IAAKzjK,EAAI,IAAM,QAAQyjK,CAAG,GAC9B,MACD,IAAK,GAEJzjK,EAAI,IAAM,QAAQ,CAACsjK,EAAIC,EAAIC,CAAE,CAAC,EAC9B,MACD,IAAK,GAAGxjK,EAAI,MAAQ4S,EAAO,KAC3B,CACD,OAAIywJ,GAAO,IAAGrjK,EAAI,KAAOqjK,EAAM,EAAIA,EAAM,MAAQA,EAAM,OAEhDrjK,CACR,CACA,SAAS,eAAe8zB,EAAOpF,EAAG,CAEjC,GADKA,IAAGA,EAAI,QAAQ,CAAC,GACjB,CAACoF,GAASA,EAAM,KAAQ,OAAApF,EAAE,YAAY,EAAG,CAAC,EAAGA,EAAE,YAAY,EAAG,CAAC,EAAUA,EACzEoF,EAAM,OAAS,MAClBpF,EAAE,YAAY,EAAG,CAAI,EACrBA,EAAE,YAAY,EAAGoF,EAAM,KAAK,GAClBA,EAAM,OAAS,MACzBpF,EAAE,YAAY,EAAG,CAAI,EACrBA,EAAE,YAAY,EAAGoF,EAAM,KAAK,IAE5BpF,EAAE,YAAY,EAAG,CAAI,EACrBA,EAAE,YAAY,EAAG,CAAC,GAEnB,IAAI20I,EAAMvvI,EAAM,MAAQ,EAIxB,GAHIuvI,EAAM,EAAGA,GAAO,MACXA,EAAM,IAAGA,GAAO,OACzB30I,EAAE,YAAY,EAAG20I,CAAG,EAChB,CAACvvI,EAAM,KAAOA,EAAM,OAAS,KAChCpF,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,MACZ,CACN,IAAIkF,EAAOE,EAAM,KAAO,SACpB,OAAOF,GAAO,WAAUA,GAAO,SAAWA,EAAI,SAAS,EAAE,GAAG,MAAM,EAAE,GACxElF,EAAE,YAAY,EAAG,SAASkF,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,CAAC,EAC9ClF,EAAE,YAAY,EAAG,SAASkF,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,CAAC,EAC9ClF,EAAE,YAAY,EAAG,SAASkF,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,CAAC,EAC9ClF,EAAE,YAAY,EAAG,GAAI,CACrB,CACD,OAAOA,CACR,CAGA,SAAS,gBAAgBxe,EAA0B,CAClD,IAAIxW,EAAIwW,EAAK,WAAW,CAAC,EACzBA,EAAK,IACL,IAAIlQ,EAAM,CACT,MAAOtG,EAAI,EACX,QAASA,EAAI,EACb,WAAYA,EAAI,EAChB,WAAYA,EAAI,EAChB,SAAUA,EAAI,GACd,QAASA,EAAI,GACb,UAAWA,EAAI,GACf,QAASA,EAAI,GACf,EACC,OAAOsG,CACR,CACA,SAAS,gBAAgB0jK,EAAMh1I,EAAG,CAC5BA,IAAGA,EAAI,QAAQ,CAAC,GACrB,IAAIi1I,GACFD,EAAK,OAAS,EAAO,IACrBA,EAAK,OAAS,EAAO,IACrBA,EAAK,QAAU,GAAO,IACtBA,EAAK,OAAS,GAAO,IACrBA,EAAK,SAAW,GAAO,IACvBA,EAAK,OAAS,IAAO,GACvB,OAAAh1I,EAAE,YAAY,EAAGi1I,CAAK,EACtBj1I,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAGA,SAAS,8BAA8BA,EAAGwD,EAAyB,CAElE,IAAI0xI,EAAU,CAAE,EAAG,SAAU,EAAG,eAAgB,EAAG,MAAO,GAAI,eAC1DvqK,EAAeq1B,EAAE,WAAW,CAAC,EACjC,OAAQr1B,EAAC,CACR,IAAK,GAAY,MAAO,GACxB,IAAK,YAAY,IAAK,YAAY,OAAOuqK,EAAQl1I,EAAE,WAAW,CAAC,CAAC,GAAK,EACrE,CACD,GAAIr1B,EAAI,IAAO,MAAM,IAAI,MAAM,0BAA4BA,EAAE,SAAS,EAAE,CAAC,EACzE,OAAAq1B,EAAE,GAAK,EACAA,EAAE,WAAW,EAAGwD,GAAK,EAAI,QAAU,QAAQ,CACnD,CACA,SAAS,kCAAkCxD,EAAG,CAAE,OAAO,8BAA8BA,EAAG,CAAC,CAAI,CAC7F,SAAS,qCAAqCA,EAAG,CAAE,OAAO,8BAA8BA,EAAG,CAAC,CAAI,CAMhG,IAAI,MAAc,EACd,MAAc,EAOd,QAAc,GACd,WAAc,GAKd,OAAc,GAOd,YAAc,GACd,QAAc,GAMd,MAAc,GAId,kBAAoB,KACpB,gBAAoB,KAGpB,UAAc,GACd,QAAc,GACd,UAAc,CAAC,UAAW,OAAO,EAGjC,iBAAmB,CACf,EAAa,CAAE,EAAG,WAAY,EAAG,KAAO,EACxC,EAAa,CAAE,EAAG,WAAY,EAAG,SAAW,EAC5C,EAAa,CAAE,EAAG,qBAAsB,EAAG,SAAW,EACtD,EAAa,CAAE,EAAG,YAAa,EAAG,KAAO,EACzC,EAAa,CAAE,EAAG,YAAa,EAAG,KAAO,EACzC,EAAa,CAAE,EAAG,iBAAkB,EAAG,KAAO,EAC9C,EAAa,CAAE,EAAG,aAAc,EAAG,KAAO,EAC1C,EAAa,CAAE,EAAG,YAAa,EAAG,KAAO,EACzC,EAAa,CAAE,EAAG,cAAe,EAAG,KAAO,EAC3C,GAAa,CAAE,EAAG,sBAAuB,EAAG,KAAO,EACnD,GAAa,CAAE,EAAG,YAAa,EAAG,OAAS,EAC3C,GAAa,CAAE,EAAG,eAAgB,EAAG,iBAAgD,EACrF,GAAa,CAAE,EAAG,gBAAiB,EAAG,eAA4C,EAClF,GAAa,CAAE,EAAG,UAAW,EAAG,SAAW,EAC3C,GAAa,CAAE,EAAG,UAAW,EAAG,SAAW,EAC3C,GAAa,CAAE,EAAG,gBAAiB,EAAG,OAAS,EAC/C,GAAa,CAAE,EAAG,iBAAkB,EAAG,KAAO,EAC9C,GAAa,CAAE,EAAG,YAAa,EAAG,OAAS,EAC3C,GAAa,CAAE,EAAG,oBAAqB,EAAG,OAAS,EACnD,GAAa,CAAE,EAAG,aAAc,EAAG,MAAO,EAAG,SAAW,EACxD,GAAa,CAAE,EAAG,SAAU,EAAG,OAAS,EACxC,GAAa,CAAE,EAAG,cAAe,EAAG,SAAW,EAC/C,GAAa,CAAE,EAAG,gBAAiB,EAAG,SAAW,EACjD,GAAa,CAAE,EAAG,WAAY,EAAG,SAAW,EAC5C,GAAa,CAAE,EAAG,UAAW,EAAG,SAAW,EAC3C,IAAa,CAAE,EAEf,WAAmB,CAAE,EAAG,SAAU,EAAG,MAAQ,EAC7C,WAAmB,CAAE,EAAG,WAAY,EAAG,MAAQ,EAC/C,WAAmB,CAAE,CAC7B,EAGI,aAAe,CACX,EAAa,CAAE,EAAG,WAAY,EAAG,KAAO,EACxC,EAAa,CAAE,EAAG,QAAS,EAAG,SAAW,EACzC,EAAa,CAAE,EAAG,UAAW,EAAG,SAAW,EAC3C,EAAa,CAAE,EAAG,SAAU,EAAG,SAAW,EAC1C,EAAa,CAAE,EAAG,WAAY,EAAG,SAAW,EAC5C,EAAa,CAAE,EAAG,WAAY,EAAG,SAAW,EAC5C,EAAa,CAAE,EAAG,WAAY,EAAG,SAAW,EAC5C,EAAa,CAAE,EAAG,aAAc,EAAG,SAAW,EAC9C,EAAa,CAAE,EAAG,YAAa,EAAG,SAAW,EAC7C,GAAa,CAAE,EAAG,WAAY,EAAG,WAAa,EAC9C,GAAa,CAAE,EAAG,cAAe,EAAG,WAAa,EACjD,GAAa,CAAE,EAAG,cAAe,EAAG,WAAa,EACjD,GAAa,CAAE,EAAG,eAAgB,EAAG,WAAa,EAClD,GAAa,CAAE,EAAG,YAAa,EAAG,KAAO,EACzC,GAAa,CAAE,EAAG,YAAa,EAAG,KAAO,EACzC,GAAa,CAAE,EAAG,YAAa,EAAG,KAAO,EACzC,GAAa,CAAE,EAAG,YAAa,EAAG,KAAO,EACzC,GAAa,CAAE,EAAG,cAAe,EAAG,SAAW,EAC/C,GAAa,CAAE,EAAG,cAAe,EAAG,KAAO,EAC3C,IAAa,CAAE,EAEf,WAAmB,CAAE,EAAG,SAAU,EAAG,MAAQ,EAC7C,WAAmB,CAAE,EAAG,WAAY,EAAG,MAAQ,EAC/C,WAAmB,CAAE,CAC7B,EAGI,YAAc,CACV,EAAe,KACf,EAAe,KACf,EAAe,GACf,EAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,MAAe,IACvB,EAGI,eAAiB,CACpB,KACA,QACA,aACA,WACA,YACA,iBACA,eACA,WACA,SACA,WACA,cACA,kBACA,gBACA,YACA,UACA,YACA,eACA,UACA,UACD,EAEA,SAAS,OAAOr2B,EAA2D,CAAE,OAAOA,EAAI,IAAI,SAASvB,EAAG,CAAE,MAAO,CAAEA,GAAG,GAAI,IAAKA,GAAG,EAAG,IAAIA,EAAE,GAAG,CAAI,EAAI,CAItJ,IAAI,QAAwB,OAAO,CAElC,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAGA,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAEA,QACA,MACA,IACA,QACA,QACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,MACA,SAEA,IACA,SACA,SACA,MACA,QACA,QACA,MACA,IACA,MACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,QACA,SACA,SACA,QACA,QAGA,EACA,SACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACD,CA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AAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,cAAe,EAAEC,EAAmB,EACvD,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM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CL,IAAK,cACL,IAAK,oBACL,IAAK,gBACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,cACL,IAAK,qBACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,eACL,IAAK,eACL,IAAK,iBACL,IAAK,eACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,YACL,IAAK,YACL,IAAK,gBACL,IAAK,cACL,IAAK,eACL,IAAK,kBACL,IAAK,oBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,UACL,IAAK,SACL,IAAK,cACL,IAAK,UACL,IAAK,oBACL,IAAK,kBACL,IAAK,QACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,gBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,iBACL,IAAK,YACL,IAAK,cACL,IAAK,eACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,kBACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,YACL,IAAK,oBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,WACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,eACL,IAAK,cACL,IAAK,YACL,IAAK,kBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,aACL,IAAK,oBACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACL,IAAK,yBACL,IAAK,cACL,IAAK,aACL,IAAK,mBACL,IAAK,sBACL,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,aACL,IAAK,iBACL,IAAK,YACL,IAAK,mBACL,IAAK,cACL,IAAK,wBACL,IAAK,kBACL,IAAK,qBACL,IAAK,kBACL,IAAK,kBACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,iBACL,IAAK,eACL,IAAK,mBACL,IAAK,aACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACL,IAAK,0BACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,cACL,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,kBACL,IAAK,mBACL,IAAK,cACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,eACL,IAAK,oBACL,IAAK,sBACL,IAAK,sBACL,IAAK,mBACL,IAAK,qBACL,IAAK,qBACL,IAAK,gBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,gBACL,IAAK,wBACL,IAAK,qBACL,IAAK,SACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,mBACL,IAAK,oBACL,IAAK,eACL,IAAK,oBACL,IAAK,uBACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,qBACL,IAAK,yBACL,IAAK,mBACL,IAAK,WACL,IAAK,iBACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,mBACL,IAAK,mBACL,IAAK,iBACL,IAAK,kBACL,IAAK,oBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,SACL,IAAK,SACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,oBACL,IAAK,sBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,oBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACP,EACI,KAAO,CACT,EAAG,QACH,EAAG,KACH,EAAG,OACH,EAAG,UACH,EAAG,MACH,EAAG,UACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,SACH,GAAI,KACJ,GAAI,MACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,KACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,MACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,QACJ,GAAI,MACJ,GAAI,KACJ,GAAI,MACJ,GAAI,MACJ,GAAI,SACJ,GAAI,OACJ,GAAI,WACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,KACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,OACJ,GAAI,SACJ,GAAI,SACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,SACJ,GAAI,SACJ,GAAI,SACJ,GAAI,WACJ,GAAI,SACJ,GAAI,YACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,WACJ,GAAI,SACJ,GAAI,QACJ,GAAI,UACJ,GAAI,SACJ,GAAI,YACJ,GAAI,cACJ,GAAI,YACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,IAAK,SACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,cACL,IAAK,WACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,UACL,IAAK,aACL,IAAK,OACL,IAAK,QACL,IAAK,YACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,IACL,IAAK,IACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,WACL,IAAK,SACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,gBACL,IAAK,iBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,aACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,aACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,WACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,aACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,SACL,IAAK,aACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,WACL,IAAK,OACL,IAAK,QACL,IAAK,aACL,IAAK,KACL,IAAK,QACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,iBACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,cACL,IAAK,WACL,IAAK,iBACL,IAAK,aACL,IAAK,YACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,MACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,YACL,IAAK,cACL,IAAK,QACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,oBACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,QACL,IAAK,cACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,YACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,MACL,IAAK,YACL,IAAK,aACL,IAAK,qBACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,aACL,IAAK,cACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,SACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,MACL,IAAK,cACL,IAAK,MACL,IAAK,aACL,IAAK,gBACL,IAAK,UACL,IAAK,eACL,IAAK,UACL,IAAK,WACL,IAAK,SACL,IAAK,YACL,IAAK,YACP,EACI,SAAW,CACb,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,I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tB,CAGA,MAAM,QAAU,CACd,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAA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AAC,CAAC,CAAC,CAAC,CAAC,EACL,EACR,CACH,CAAC,ECnGY,IAAM,CACjB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,KAAO,CAClB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,OAAS,CACpB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,WAAa,CACxB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,OAAS,CACpB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,KAAO,CAClB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,UAAY,CACvB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,KAAO,CAClB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,KAAO,CAClB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,MAAQ,CACnB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,WAAa,CACxB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,KAAO,CAClB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,OAAS,CACpB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,MAAQ,CACnB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,OAAS,CACpB,KAAM,UACN,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,SACX,EACa,WAAa,CACxB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GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,iBAAkB,EAClB,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EA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","names":["getDefaultExportFromCjs","x","browser","fun","marker","queue","timeout","len","args","i","array","noop","name","dir","browserExports","buffer","byteLength","lookup","code","b64","validLen","placeHoldersLen","lens","tmp","arr","curByte","num","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","value","c","rt","exports","base64","ieee754$1","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","GlobalUint8Array","GlobalArrayBuffer","GlobalSharedArrayBuffer","typedArraySupport","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","actual","fromArrayLike","arrayView","copy","byteOffset","obj","numberIsNaN","a","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","str","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","type","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","Blob","Buffer$1","File","atob","btoa","constants","process","global","expectsLowerCase","set","isOn","key","extend","el","hasOwnProperty","hasOwn","isArray","isMap","isSet","isFunction","isString","isSymbol","isObject","isPromise","objectToString","isPlainObject","cache","_","oldValue","fns","def","writable","item","normalized","cssText","isRef","_key","entries","val2","v","_a","detached","currentEffectScope","fromParent","l","effect","scope","trigger","scheduler","dep","lastShouldTrack","lastEffect","computed","effect2","trackId","debuggerEventExtraInfo","oldDep","dirtyLevel","tracking","cleanup","depsMap","newValue","oldTarget","deps","newLength","key2","object","instrumentations","_isReadonly","_isShallow","receiver","isReadonly2","isShallow2","targetIsArray","readonly","isOldValueReadonly","hadKey","result","getProto","get","isReadonly","isShallow","rawTarget","rawKey","has2","wrap","has","add","get2","clear","hadItems","callback","thisArg","observed","method","targetIsMap","isPair","isKeyOnly","innerIterator","done","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","shallow","rawType","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","raw","getter","_setter","isSSR","self","getterOrOptions","debugOptions","setter","onlyGetter","ref2","newVal","oldVal","r","ref","rawValue","__v_isShallow","useDirectValue","objectWithRefs","_object","_defaultValue","_getter","source","defaultValue","instance","appWarnHandler","trace","_b","vnode","warnArgs","currentVNode","normalizedStack","parentInstance","logs","entry","recurseCount","postfix","isRoot","open","close","props","keys","err","values","throwInDev","contextVNode","cur","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","nextTick","p","findInsertionIndex","id","middle","middleJob","middleJobId","job","cb","seen","deduped","diff","event","rawArgs","isModelListener","modelArg","modifiersKey","number","trim","handlerName","handler","onceHandler","comp","appContext","asMixin","cached","hasExtends","extendEmits","raw2","normalizedFromExtend","options","prev","ctx","isNonScopedSlot","renderFnWithContext","prevInstance","Component","withProxy","propsOptions","slots","attrs","emit","render","renderCache","data","setupState","inheritAttrs","fallthroughAttrs","proxyToUse","thisProxy","render2","root","shapeFlag","prevVNode","nextVNode","optimized","prevProps","prevChildren","component","nextProps","nextChildren","patchFlag","emits","dynamicProps","emitsOptions","nextKeys","parent","maybeSelfReference","warnMissing","selfName","resolve","registry","suspense","hook","prepend","hooks","wrappedHook","reset","lifecycle","directives","bindings","modifiers","traverse","oldBindings","binding","renderItem","index","defineComponent","extraOptions","state","accessCache","normalizedProps","publicGetter","cssModule","globalProperties","descriptor","publicThis","callHook","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","components","filters","methodHandler","opt","provides","registerLifecycleHook","register","_hook","exposed","checkDuplicateProperties","injected","inject","h","base","mixins","extendsOptions","globalMixins","optionMergeStrategies","resolved","mergeOptions","to","strats","strat","merged","hydrate","rootComponent","rootProps","context","installedPlugins","isMounted","app","version","plugin","mixin","directive","rootContainer","isHydrate","namespace","lastApp","parentProvides","treatDefaultAsFactory","rawProps","isStateful","rawPrevProps","rawCurrentProps","hasAttrsChanged","propsToUpdate","camelizedKey","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","extendProps","normalizedKey","prop","booleanIndex","stringIndex","ctor","expectedTypes","t","normalizeSlot","rawSlot","rawSlots","children","needDeletionCheck","deletionComparisonTarget","rawRef","oldRawRef","parentSuspense","isUnmount","refValue","owner","oldRef","refs","_isString","_isRef","doSet","existing","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","patch","n1","n2","container","anchor","parentComponent","slotScopeIds","getNextHostNode","unmount","processText","processCommentNode","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","nextSibling","next","removeStaticNode","mountElement","patchElement","vnodeHook","transition","dirs","mountChildren","setScopeId","unmountChildren","needCallTransitionHooks","scopeId","subTree","parentVNode","child","dynamicChildren","oldProps","newProps","patchBlockChildren","patchChildren","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","mountComponent","updateComponent","initialVNode","setupRenderEffect","placeholder","updateComponentPreRender","componentUpdateFn","bu","u","nonHydratedAsyncRoot","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateNode","hydrateSubTree","scopedInitialVNode","update","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","nextIndex","move","moveType","leave","delayLeave","afterLeave","remove2","performLeave","doRemove","memoIndex","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","remove","removeFragment","performRemove","bum","um","isFlushing","currentNamespace","allowed","ch1","ch2","arrI","subComponent","immediate","deep","flush","once","onTrack","onTrigger","_cb","unwatch","reactiveGetter","source2","forceTrigger","isMultiSource","onCleanup","baseGetter","ssrCleanup","path","segments","depth","current","keepAliveRoot","enterCbKey","getCurrentInstance","mode","innerChild","enterHooks","oldChild","oldInnerChild","leavingHooks","earlyRemove","delayedLeave","leavingVNodesCache","leavingVNodes","postClone","appear","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","callAsyncHook","hook2","leavingVNode","afterHook","cancelHook","called","cancelled","vnode2","hooks2","keepComment","parentKey","keyedFragmentCount","select","targetSelector","insert","querySelector","createText","createComment","disabled","mainAnchor","targetAnchor","mount","container2","anchor2","wasDisabled","currentContainer","currentAnchor","nextTarget","shouldRemove","isReorder","node","parentNode","hydrateChildren","targetNode","disableTracking","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","cloned","klass","style","extraProps","mergeRef","cloneTransition","mergedProps","text","flag","asBlock","slot","slotFlag","toMerge","incoming","g","registerGlobalSetter","setters","setupResult","setup","setupContext","resolvedResult","compile","skipOptions","template","isCustomElement","compilerOptions","delimiters","componentCompilerOptions","finalCompilerOptions","includeInferred","match","inferFromRegistry","propsOrChildren","tag","is","selector","content","before","wrapper","h2","baseProps","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","durations","enterDuration","leaveDuration","finishEnter","isAppear","finishLeave","makeEnterHook","cls","_vtc","expectedType","explicitTimeout","resolveIfNotStale","propCount","endEvent","ended","onEnd","styles","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","isSVG","transitionClasses","isCssString","hasControlledDisplay","prevStyle","cssVarText","prefixed","rawName","isBoolean","needRemove","prevValue","nextValue","invokers","existingInvoker","invoker","initialValue","originalStop","moveClass","movedChildren","cssTransitionProps","oldPos","newPos","dx","dy","clone","lazy","castToNumber","domValue","elValue","cacheKey","guard","containerOrSelector","defaults","definition","fallback","deepEqual","property","k","unit","o","paths","exclude","rest","include","events","inputEvents","rootAttrs","inputAttrs","debounce","delay","timeoutId","_len","trimmedStr","char","chunked","prefix","arrayFn","sourceProperty","targetProperty","nodes","kebab","propName","_len2","_key2","filterByTabIndex","targets","elements","location","condition","_el","idx","inc","focusable","vnodes","targetDiv","mouseX","mouseY","divRect","divLeft","divTop","divRight","divBottom","isPrintableChar","noModifier","isRtl","side","align","_ref","width","height","rect","tx","ta","sx","sy","w","keyframes","animation","_handler","background","Rtxt","Gtxt","Btxt","Rbg","Gbg","Bbg","Ytxt","Ybg","outputContrast","SAPC","message","original","replacement","fromXYZ","xyz","transform","transformedY","toXYZ","lab","Ln","C","rgb","matrix","color","groups","realValues","hex","hsva","f","hsla","rgba","hsv","sprime","hsl","_ref2","amount","CIELAB.fromXYZ","sRGB.toXYZ","sRGB.fromXYZ","CIELAB.toXYZ","second","l1","light","dark","blackContrast","vm","_getCurrentInstance","uid","injectedDefaults","providedDefaults","newDefaults","scoped","properties","componentDefaults","_props","propValue","_subcomponentDefaults","subComponents","provideSubDefaults","propKeys","setupBindings","exposeDefaults","_defineComponent","suffix","getData","acc","includeHidden","stopAt","hasText","_createVNode","makeTransitionProps","origin","functions","offsetTop","offsetLeft","offsetWidth","offsetHeight","position","top","left","expandedParentClass","sizeProperty","offsetProperty","initialStyle","resetStyles","speed","_mergeProps","els","targetBox","elBox","originX","originY","anchorSide","anchorOffset","offsetX","offsetY","tsx","tsy","maxs","asa","maxHeight","maxWidth","minHeight","minWidth","ratio","aspectStyles","dimensionStyles","colors","classes","backgroundColor","textColor","textColorClasses","textColorStyles","backgroundColorClasses","backgroundColorStyles","rounded","tile","group","customProps","observer","_observe","isIntersecting","observe","intersect","roundedClasses","currentSrc","image","naturalWidth","naturalHeight","normalisedSrc","aspectRatio","init","pollForSize","lazyImg","onError","onLoad","getSrc","img","timer","poll","imgHeight","imgWidth","containClasses","__image","sources","__preloadImage","__placeholder","__error","__gradient","isBooted","stop","responsiveProps","_withDirectives","_Fragment","_resolveDirective","border","elevation","active","transformIn","transformOut","internal","kebabProp","isControlled","model","externalValue","internalValue","params","messages","shortKey","currentLocale","fallbackLocale","provided","i18n","rtl","locale","genDefaults","themes","theme","defaultTheme","parsedOptions","computedThemes","variation","onColor","colorVal","lines","themeName","bgLines","fgLines","getHead","install","head","updateStyles","styleEl","themeClasses","newTheme","line","lightOverlay","darkOverlay","variables","allowedDensities","borderClasses","elevationClasses","rtlClasses","isExtended","contentHeight","extensionHeight","hasTitle","hasImage","extension","box","resizeRef","contentRect","layout","isKeptAlive","layoutItemStyles","layoutItemScrimStyles","positions","layoutSizes","activeItems","previousLayer","layers","layer","parentLayout","rootZIndex","registered","priorities","disabledTransitions","layoutRect","computedOverlaps","map","overlaps","overlap","bottom","topPosition","bottomPosition","topAmount","bottomAmount","uniquePriorities","items","transitionsEnabled","mainRect","mainStyles","getLayoutItem","rootVm","order","layoutSize","elementSize","disableTransitions","absolute","instanceIndex","zIndex","isHorizontal","isOppositeHorizontal","isOppositeVertical","layoutClasses","layoutStyles","canScroll","previousScroll","previousScrollHeight","currentScroll","savedScroll","currentThreshold","isScrollActive","isScrollingUp","scrollThreshold","scrollRatio","onScroll","targetEl","currentScrollHeight","scrollTarget","newTarget","vToolbarRef","isActive","scrollBehavior","behavior","canHide","isCollapsed","isFlat","opacity","ssrBootStyles","toolbarProps","allowedVariants","isClickable","variantClasses","variant","colorClasses","colorStyles","densityClasses","injectKey","required","isSelected","isFirst","isLast","selectedClass","isUnmounted","selected","groupVm","unwrapped","unregister","forceMandatoryValue","step","currentId","currentIndex","newItem","ids","modelValue","itemByIndex","itemIndex","btnGroupProps","aliases","Icon","sets","defaultSet","icons","iconAlias","icon","iconSetName","setName","iconName","sizeClasses","sizeStyles","slotIcon","iconData","slotValue","hasClick","intersectionRef","MAGIC_RADIUS_CONSTANT","CIRCUMFERENCE","underlayColorClasses","underlayColorStyles","normalizedValue","diameter","strokeWidth","strokeDashOffset","opposite","getOffset","progress","locationStyles","bufferColorClasses","bufferColorStyles","barColorClasses","barColorStyles","normalizedBuffer","isReversed","isForcedColorsModeActive","handleClick","right","bar","useLink","RouterLink","isLink","href","linkProps","routerLink","link","route","router","popped","removeBefore","removeAfter","onPopstate","localX","localY","radius","scale","centerX","centerY","ripples","element","wasEnabled","enabled","loaderClasses","positionClasses","variantProps","isDisabled","isElevated","valueAttr","onClick","Tag","hasPrepend","hasAppend","hasIcon","dividerStyles","divider","autoHeight","ssr","userAgent","regexp","android","ios","cordova","electron","chrome","edge","firefox","opera","win","mac","linux","thresholds","mobileBreakpoint","platform","updateSize","xs","sm","md","lg","xl","xxl","breakpointValue","mobile","display","displayClasses","offsetKey","orderKey","propMap","breakpointClass","className","breakpoint","classList","hasColClasses","prefixKey","mandatory","strategy","parents","parentStrategy","singleSelected","_ref3","_ref4","opened","newOpened","on","_ref5","_ref6","childrenIds","everySelected","cid","noneSelected","_ref7","activeStrategy","selectStrategy","openStrategy","getPath","nodeIds","nested","parentId","isGroup","newSelected","newActivated","uidSymbol","computedId","isOpen","_id","activatorProps","toggleIcon","activatorDefaults","_vShow","activate","isActivated","isIndeterminate","isGroupActivator","openOnSelect","roundedProps","lineClasses","slotProps","onKeyDown","hasSubtitle","hasAppendMedia","hasPrependMedia","itemProps","slotsWithItem","listGroupProps","listItemProps","transformItem","title","transformItems","hasNullItem","activeColor","baseColor","isFocused","contentRef","onFocusin","onFocusout","onFocus","focus","onKeydown","onMousedown","scrollToTop","layoutRef","warning","EventEmitter","eventsModule","listener","that","doError","er","listeners","wrapped","originalListener","unwrap","evlistener","emitter","reject","errorListener","resolver","flags","wrapListener","Events","EE","addListener","evt","clearEvent","names","handlers","ee","a1","a2","a3","a4","a5","module","getDOMException","errorMessage","AbortError","getAbortedReason","signal","reason","pTimeout","promise","milliseconds","customTimers","cancelablePromise","timeoutError","TimeoutError","error","lowerBound","comparator","count","it","#queue","run","#carryoverConcurrencyCount","#isIntervalIgnored","#intervalCount","#intervalCap","#interval","#intervalEnd","#intervalId","#timeoutId","#queueClass","#pending","#concurrency","#isPaused","#throwOnTimeout","PriorityQueue","#doesIntervalAllowAnother","#doesConcurrentAllowAnother","#next","#tryToStartAnother","#onResumeInterval","#onInterval","#initializeIntervalIfNeeded","#isIntervalPaused","now","canInitializeInterval","#processQueue","newConcurrency","#throwOnAbort","_resolve","function_","operation","#onEvent","filter","deferred","hwm","getNext","pushable","onNext","drain","waitNext","bufferNext","bufferError","push","_return","_throw","cancel","_pushable","opts","isAsyncIterable","thing","merge","syncSources","duplex","isIterable","stream","sourceWrap","require$$0","retimer","AbortController","ms","DefaultTimeout","ipfs","log","onSynced","libp2p","pubsub","address","headsSyncAddress","pathJoin","PQueue","peers","started","onPeerJoined","peerId","heads","sendHeads","receiveHeads","headBytes","handleReceiveHeads","connection","handlePeerSubscribed","task","remotePeer","subscriptions","subscription","timeoutController","TimeoutController","handleUpdateMessage","topic","stopSync","startSync","inherits_browserModule","superCtor","TempCtor","inherits","require$$1","dist","clock","time","equals","aa","bb","ii","coerce","ALPHABET","BASE_MAP","xc","BASE","LEADER","FACTOR","iFACTOR","encode","zeroes","pbegin","pend","b58","carry","it1","it2","decodeUnsafe","psz","b256","it3","it4","vch","decode","_brrp__multiformats_scope_baseX","baseEncode","baseDecode","decoder","or","decoders","ComposedDecoder","Encoder","Decoder","Codec","baseX","basex","bitsPerChar","codes","bits","written","pad","mask","rfc4648","base32","base58btc","encode_1","MSB","REST","MSBALL","INT","oldOffset","MSB$1","REST$1","shift","counter","N1","N2","N3","N4","N5","N6","N7","N8","N9","varint","_brrp_varint","encodeTo","int","encodingLength","create","digest","sizeOffset","varint.encodingLength","digestOffset","varint.encodeTo","Digest","multihash","varint.decode","equalBytes","format","toStringV0","baseCache","toStringV1","CID","DAG_PB_CODE","SHA_256_CODE","Digest.create","other","unknown","Digest.equals","encodeCID","cidSymbol","Digest.decode","remainder","specs","prefixSize","multihashBytes","digestBytes","Digest.Digest","initialBytes","codec","multihashCode","digestSize","multihashSize","parseCIDtoBytes","codeOffset","hashOffset","Hasher","enumerable","configurable","linksWithin","elementPath","links","treeWithin","tree","part","hasher","hash","Block","typeOf","isBuffer","objectType","objectTypeName","major","terminal","typ","Type","encodedLength","textDecoder","textEncoder","toString","slice","concat","chunks","off","compare","b1","b2","chunkSize","topChunk","chunkPos","byts","chunk","need","_minor","token","uint","nuint","buint","tok1","tok2","uint.readUint8","uint.readUint16","uint.readUint32","uint.readUint64","negint","unsigned","uint.encodeUintValue","uint.uintBoundaries","toToken","minor","_options","totLength","tok","_data","_pos","uint.encodeUint","float","decoded","success","inp","valu32","exponent","mantissa","logicalExponent","ui8a","half","exp","mant","uint.decodeUint8","uint.decodeUint16","uint.decodeUint32","uint.decodeUint64","negint.decodeNegint8","negint.decodeNegint16","negint.decodeNegint32","negint.decodeNegint64","bytes.decodeBytesCompact","bytes.decodeBytes8","bytes.decodeBytes16","bytes.decodeBytes32","bytes.decodeBytes64","string.decodeStringCompact","string.decodeString8","string.decodeString16","string.decodeString32","string.decodeString64","array.decodeArrayCompact","array.decodeArray8","array.decodeArray16","array.decodeArray32","array.decodeArray64","array.decodeArrayIndefinite","map.decodeMapCompact","map.decodeMap8","map.decodeMap16","map.decodeMap32","map.decodeMap64","map.decodeMapIndefinite","tag.decodeTagCompact","tag.decodeTag8","tag.decodeTag16","tag.decodeTag32","tag.decodeTag64","float.decodeUndefined","float.decodeFloat16","float.decodeFloat32","float.decodeFloat64","float.decodeBreak","encoders","stack","_typ","_refStack","_obj","refStack","customTypeEncoder","tokens","typeEncoder","keyToken1","keyToken2","tcmp","quickBytes","encoder","byt","tokeniser","useMaps","tagged","toByteView","cborg.Token","cborg.Type","decodeOptions","cborg.encode","cborg.decode","sha","sha256","hashStringEncoding","identity","payload","Block.encode","signature","identities","isEqual","Block.decode","MemoryStorage","memory","put","DefaultStorage","storage","currentHeads","all","newHeads","iterator","LastWriteWins","First","sortById","resolveConflict","NoZeroes","func","randomId","DefaultAccessController","logId","logHeads","access","entryStorage","headsStorage","indexStorage","sortFn","_entries","_index","_heads","appendQueue","joinQueue","maxTime","append","heads_","nexts","getReferences","join","isLog","joinEntry","verifyEntry","headsHashes","hashesToAdd","hashesToGet","connectedHeads","traverseAndVerify","getEntries","rootEntries","shouldStopFn","useRefs","traversed","toFetch","fetched","notIndexed","fetchEntries","gt","gte","lt","lte","amountToIterate","shouldStopTraversal","useBuffer","LRU","skipFirst","skipLast","endIndex","startIndex","storage1","storage2","reverse","iteratorOptions","pin","block","manifests","manifest","textEndec","ModuleError","formats","Encoding","require$$2","ViewFormat","BufferFormat","view","UTF8Format","encodings","require$$3","Transcoder","maybeType","nextTickBrowser","symbol","common","fromCallback","getOptions","getCallback","kPromise","kCallback","kHandleOne","kHandleMany","kCloseCallbacks","kKeyEncoding","kValueEncoding","emptyOptions","db","legacy","hint","onnext","nextv","onnextv","keyEncoding","keyFormat","mapped","callbacks","subject","cause","AbstractIterator","AbstractKeyIterator","AbstractValueIterator","Iterator","DefaultKeyIterator","DefaultValueIterator","mapEntry","kUndefer","DeferredIterator","DeferredKeyIterator","DeferredValueIterator","kStatus","kOperations","valueEncoding","mappedKey","mappedValue","AbstractChainedBatch","DefaultChainedBatch","rangeOptions","queueMicrotask","kUnfix","kIterator","AbstractSublevelIterator","unfix","AbstractSublevelKeyIterator","AbstractSublevelValueIterator","kPrefix","kUpperBound","kPrefixRange","kParent","AbstractLevel","AbstractSublevel","separator","forward","reserved","mergeManifests","upperBound","MultiFormat","Unfixer","operations","supportsEncoding","prefixLength","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","kOptions","passive","maybeOpened","maybeClosed","pending","sync","resource","valueFormat","mappedKeys","ke","ve","op","valueErr","require$$11","require$$12","abstractLevel","tasks","results","isErrored","isSync","each","lower","upper","lowerExclusive","upperExclusive","deserialize","createKeyRange","kLocation","keyRange","transaction","store","ev","cursor","complete","direction","parallel","req","request","loop","defaultPath","lru","directory","meta","referencesCount","syncAutomatically","onUpdate","addOperation","applyOperation","drop","indexBy","database","doc","del","query","findFn","isPeerId","TopicValidatorResult","FaultTolerance","setMaxListeners","eventTargets","nodeSetMaxListeners","#listeners","detail","CustomEvent","objs","startables","forge","api","baseN","maxline","digits","regex","util","attr","div","oldSetImmediate","rval","isArrayBuffer","isArrayBufferView","growSize","s3","chr1","chr2","chr3","enc1","enc2","enc3","enc4","flg","empty","exception","ex","re","argi","decimals","dec_point","thousands_sep","ip","blanks","zeros","zeroGroups","zeroMaxGroup","blobUrl","st","et","sample","samples","numWorkers","avg","reduce","workers","worker","r1","r2","algorithm","modes","finish","padding","inputLength","partialBytes","iv","additionalData","ivLength","overflow","lengths","z_i","v_i","x_i","lsb","z","ah","multiplier","perInt","shft","mid","m_i","m_j","blockSize","ints","blocks","cipher","_createCipher","inBlock","outBlock","_updateBlock","encryptOp","decrypt","registerAlgorithm","factory","xtime","ei","e4","e8","sx2","me","ime","temp","iNk","Nk","Nr1","m0","m1","m2","m3","wnew","wi","Nr","round","prefixCodePoint","base10","base16","base16upper","base2","alphabetBytesToChars","alphabetCharsToBytes","base256emoji","base32upper","base32pad","base32padupper","base32hex","base32hexupper","base32hexpad","base32hexpadupper","base32z","base36","base36upper","base58flickr","base64pad","base64url","base64urlpad","base8","bases","identityBase","base58","createCodec","ascii","BASES","nativeCrypto","oids","asn1","tagClass","constructed","obj1","obj2","equal","longForm","longFormBytes","byteCount","bitStringContents","savedRead","savedRemaining","unused","subOptions","composed","used","tc","asn1Options","useBitStringContents","lenBytes","oid","valueBytes","utc","date","year","MM","DD","hh","mm","ss","hhoffset","mmoffset","gentime","YYYY","fff","isUTC","capture","level","indentation","indent","subvalues","pc2bytes0","pc2bytes1","pc2bytes2","pc2bytes3","pc2bytes4","pc2bytes5","pc2bytes6","pc2bytes7","pc2bytes8","pc2bytes9","pc2bytes10","pc2bytes11","pc2bytes12","pc2bytes13","iterations","shifts","lefttmp","righttmp","looping","endloop","loopinc","right1","right2","hmac","_md","_ipadding","_opadding","keylen","inner","copyProps","SafeBuffer","MAX_BYTES","MAX_UINT32","oldBrowser","crypto","browserModule","randomBytes","generated","streamBrowser","shams","symObj","symVal","syms","hasSymbols","uri","test","$Object","hasProto","toStr","arrLike","joiner","implementation","bound","binder","boundLength","boundArgs","Empty","bind","undefined","$SyntaxError","$TypeError","expressionSyntax","$gOPD","doEval","gen","$concat","$replace","$exec","quote","subString","allowMissing","intrinsicName","alias","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","desc","GetIntrinsic","$defineProperty","gopd","defineDataProperty","nonEnumerable","nonWritable","nonConfigurable","loose","define","hasDescriptors","gOPD","$floor","functionLengthIsConfigurable","functionLengthIsWritable","setFunctionLength","$apply","$call","$reflectApply","$max","originalFunction","applyBind","callBind","$indexOf","callBound","hasToStringTag","$toString","isArguments","fnToStr","isFnRegex","getGeneratorFunc","GeneratorFunction","generatorFunc","fnStr","isCallable","strClass","forEach","availableTypedArrays","$slice","getPrototypeOf","typedArray","superProto","whichTypedArray","isTypedArray","isArgumentsObject","isGeneratorFunction","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isDataView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","isMapToString","isSetToString","isWeakMapToString","isWeakMap","isWeakSetToString","isWeakSet","isArrayBufferToString","isDataViewToString","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isBoxedPrimitive","isAnyArrayBuffer","getOwnPropertyDescriptors","descriptors","formatRegExp","objects","inspect","isNull","warned","deprecated","debugs","debugEnvRegex","define_process_env_default","debugEnv","pid","stylizeNoColor","isUndefined","stylizeWithColor","formatValue","styleType","arrayToHash","recurseTimes","primitive","formatPrimitive","visibleKeys","isError","formatError","isRegExp","isDate","braces","formatArray","formatProperty","reduceToSingleString","simple","isNumber","ar","isNullOrUndefined","isPrimitive","months","timestamp","kCustomPromisifiedSymbol","promiseResolve","promiseReject","callbackifyOnRejected","newReason","callbackify","callbackified","maybeCb","rej","ownKeys","enumerableOnly","symbols","_objectSpread","_defineProperty","_toPropertyKey","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_toPrimitive","prim","_require","_require2","custom","copyBuffer","BufferList","hasStrings","nb","destroy","_this","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","undestroy","errorOrDestroy","rState","wState","destroy_1","_inheritsLoose","subClass","superClass","createErrorType","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","startsWith","search","endsWith","this_len","includes","determiner","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","isDuplex","duplexKey","getHighWaterMark","deprecate","config","_stream_writable","Writable","CorkedRequest","onCorkedFinish","Duplex","WritableState","internalUtil","Stream","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","destroyImpl","_require$codes","ERR_INVALID_ARG_TYPE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","noDecode","onwrite","realHasInstance","writeAfterEnd","validChunk","isBuf","writeOrBuffer","clearBuffer","decodeChunk","newChunk","doWrite","writev","onwriteError","finishMaybe","onwriteStateUpdate","finished","needFinish","afterWrite","onwriteDrain","holder","allBuffers","endWritable","callFinal","prefinish","corkReq","objectKeys","_stream_duplex","Readable","onend","onEndNT","isEncoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","StringDecoder","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","utf8End","utf8Text","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","total","ERR_STREAM_PREMATURE_CLOSE","isRequest","eos","readable","onlegacyfinish","onfinish","writableEnded","readableEnded","onerror","onclose","onrequest","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","_this2","createReadableStreamAsyncIterator","_Object$create","_stream_readable","ReadableState","EElistenerCount","debugUtil","debug","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","kProxyEvents","prependListener","skipChunkCheck","readableAddChunk","addToFront","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","MAX_HWM","computeNewHighWaterMark","howMuchToRead","nOrig","endReadable","doRead","fromList","emitReadable_","flow","maybeReadMore_","dest","pipeOpts","doEnd","endFn","unpipe","onunpipe","unpipeInfo","ondrain","pipeOnDrain","cleanedUp","ondata","indexOf","dests","nReadingNextTick","updateReadableListening","resume","resume_","paused","endReadableNT","iterable","_stream_transform","Transform","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","rs","err2","_stream_passthrough","PassThrough","ERR_MISSING_ARGS","destroyer","reading","writing","closed","call","pipe","popCallback","streams","pipeline","destroys","throwIfNotStringOrBuffer","HashBase","ARRAY16","MD5","M","fnF","fnG","fnH","fnI","rotl","zl","zr","sl","sr","hl","hr","RIPEMD160","words","al","bl","cl","dl","br","cr","dr","tl","tr","fn1","fn5","fn2","fn4","fn3","Hash","finalSize","accum","assigned","rem","lowBits","highBits","K","W","Sha","rotl5","rotl30","ft","H","Sha1","rotl1","sha1","Sha256","ch","maj","sigma0","sigma1","gamma0","gamma1","T1","T2","Sha224","sha224","Sha512","Ch","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","bh","dh","eh","fh","gh","fl","gl","xh","gamma0l","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","sha512","SHA512","Sha384","sha384","sha_jsModule","Algorithm","didOnEnd","CipherBase","hashMode","inputEnc","outputEnc","outData","fin","alg","ZEROS","blocksize","Hmac","ipad","opad","md5","Legacy","MAX_ALLOC","defaultEncoding","pVersionMajor","toBuffer","checkParameters","sizes","saltLen","getDigest","ipad1","shaFunc","rmd160Func","pbkdf2","password","salt","DK","block1","destPos","hLen","T","U","ZERO_BUF","subtle","toBrowser","checks","checkNative","algo","prom","browserPbkdf2","getNextTick","resolvePromise","resp","utils","inL","inR","outL","outR","pc2table","sTable","sb","permuteTable","assert","Cipher","inputOff","outputOff","DESState","DES","shiftTable","kL","kR","inOff","outOff","lStart","rStart","keyL","keyR","CBCState","instantiate","CBC","cbc","EDEState","k1","k2","k3","EDE","des","modeName","xor","encryptStart","encryptByte","byteParam","bit","shiftIn","getBlock","incr32","chunkNum","modeModules","asUInt32Array","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","t0","t1","t2","t3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","x2","x4","x8","AES","keyWords","keySize","ksRows","invKeySchedule","ik","ksR","tt","ZEROES","toArray","fromArray","GHASH","Vi","Zi","lsbVi","abl","aes","xorTest","calcIv","ck","ghash","toPad","ivBits","tail","StreamCipher","rump","EVP_BytesToKey","keyBits","ivLen","keyLen","keyStart","ivStart","MODES","AuthCipher","ebtk","Splitter","PADDING","setTo","padBuff","createCipheriv","suite","createCipher","Decipher","unpad","autoPadding","padded","createDecipheriv","createDecipher","ciphers","deciphers","getCiphers","aesModes","desModes","BN","endian","parseHex4Bits","parseHexByte","parseLength","parseBase","limbLen","limbPow","mod","word","pow","groupSizes","groupBases","groupSize","groupBase","ArrayType","reqLength","q","toBitArray","wbit","bytesNeeded","bitsLeft","cmp","smallMulTo","ncarry","rword","maxJ","comb10MulTo","a0","al0","ah0","al1","ah1","al2","ah2","al3","ah3","al4","ah4","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","bl1","bh1","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","fftm","FFTM","N","rb","rbt","rws","iws","rtws","itws","rtwdf","itwdf","rtwdf_","itwdf_","ie","ro","io","rx","odd","ws","ph","rwst","iwst","nrws","nrwst","niwst","rmws","carryMask","newCarry","extended","maskedWords","bhi","bhiBits","qj","positive","dm","A","B","D","yp","xp","im","jm","x1","delta","negative","Red","primes","MPrime","rlen","K256","outLen","P224","P192","P25519","prime","mod3","one","nOne","lpow","inv","windowSize","wnd","currentLen","Mont","this","brorandModule","Rand","rand","bn","brorand","MillerRabin","min_bytes","red","rone","rn1","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","sqrt","SEVEN","DH","setPublicKey","pub","setPrivateKey","priv","primeCache","checkPrime","generator","malleable","secret","front","formatReturnValue","generatePrime","getDiffieHellman","ENCODINGS","createDiffieHellman","genc","processNextickArgsModule","isarray","pna","asyncWrite","writableHwm","defaultHwm","valid","readableHwm","needMoreData","increasedAwaitDrain","fromListPartial","copyFromBufferString","copyFromBuffer","allocate","isNegNum","getr","blind","blinder","crt","blinds","blinded","qinv","zero2","toHex","minAssert","minUtils","getNAF","naf","getJSF","jsf","d1","d2","m8","m14","m24","u1","u2","cachedProperty","computer","parseBytes","intFromLE","BaseCurve","conf","adjustCount","doubles","I","repr","nafW","nafPoints","defW","points","coeffs","jacobianResult","wndWidth","comb","ja","jb","zero","BasePoint","curve","compact","power","precomputed","dbl","ShortCurve","beta","lambda","betas","lambdas","basis","vec","tinv","ntinv","aprxSqrt","y1","y2","prevR","len1","v1","v2","p1","p2","q1","q2","isOdd","point","ax","rhs","npoints","ncoeffs","split","Point","isRed","pre","endoMul","obj2point","nx","ny","ys1","dyinv","_precompute","negate","JPoint","zinv","zinv2","ay","pz2","z2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","zz","yyu4","kbase","z3","pz3","zs","MontCurve","da","EdwardsCurve","lhs","nt","zi","isSurrogatePair","htonl","toHex32","zero8","join32","split32","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","ft_1","ch32","p32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","sha1_K","SHA1","sha256_K","SHA256","SHA224","sha512_K","c0_hi","g1_512_hi","c0_lo","g1_512_lo","c1_hi","c1_lo","c2_hi","g0_512_hi","c2_lo","g0_512_lo","c3_hi","c3_lo","s1_512_hi","s1_512_lo","ch64_hi","ch64_lo","c4_hi","c4_lo","T1_hi","T1_lo","s0_512_hi","s0_512_lo","maj64_hi","maj64_lo","T2_hi","T2_lo","yh","yl","zh","SHA384","Ah","Bh","Dh","Eh","rh","Kh","sh","secp256k1","curves","PresetCurve","defineCurve","HmacDRBG","entropy","nonce","pers","seed","kmac","entropyEnc","addEnc","KeyPair","ec","Signature","Position","getLength","initial","octetLen","rmPadding","slen","constructLength","octets","backHalf","EC","drbg","ns2","truncOnly","bkey","ns1","kp","kpX","recoveryParam","sinv","isYOdd","isSecondKey","rInv","Q","Qprime","eddsa","lastIx","sig","EDDSA","R","Rencoded","s_","S","SG","RplusAh","normed","xIsOdd","elliptic","iframe","wEval","wExecScript","winKeys","body","Entity","named","entity","reporter","Reporter","ReporterError","inherited","elem","DecoderBuffer","save","fail","EncoderBuffer","tags","overrided","Node","stateProps","cstate","newKey","present","prevKey","prevObj","explicit","bignum","der","DERDecoder","DERNode","der_1","any","decodedTag","derDecodeTag","derDecodeLen","possibleEnd","numstr","printstr","relative","identifiers","ident","subident","mon","day","hour","sec","oct","tagStr","PEMDecoder","pem","label","DEREncoder","encodedTag","encodeTag","header","lenOctets","objid","two","numArray","dataBuffer","PEMEncoder","asn","Time","AttributeTypeValue","AlgorithmIdentifier","SubjectPublicKeyInfo","RelativeDistinguishedName","RDNSequence","Name","Validity","Extension","TBSCertificate","X509Certificate","asn1_1","RSAPrivateKey","RSAPublicKey","PublicKey","PrivateKeyInfo","EncryptedPrivateKeyInfo","DSAPrivateKey","ECParameters","ECPrivateKey","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherText","cipherKey","match2","aesid","fixProc","compat","iters","parseKeys","stripped","subtype","ndata","createHmac","RSA_PKCS1_PADDING","sign","hashType","signType","ecSign","dsaSign","curveId","bits2int","kv","getKey","makeKey","makeR","toDER","hlen","hbits","bits2octets","obits","signModule","verify","ecVerify","dsaVerify","padNum","pubkey","unpacked","checkValue","montp","createHash","algorithms","Sign","Verify","sigBuffer","createSign","createVerify","ECDH","inenc","otherPub","_priv","i2ops","withPublic","paddedMsg","mgf","publicKey","oaep","pkcs1","iHash","hLen2","ps","dblen","maskedDb","maskedSeed","nonZero","privateKey","zBuffer","status","dif","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","randomFill","randomFillSync","actualFill","ourBuf","algos","algoKeys","hashes","publicEncrypt","rf","dkLen","prf","dk","u_c","u_c1","outer","rMessage","rHeader","rCRLF","li","nl","vi","insertSpace","$1","candidate","_initialized","_init","_state","_input","_w","int32s","_update","finalBlock","_padding","_k","_crypto","pools","increment","formatKey","formatSeed","generate","_reseed","_reseedSync","_seed","needed","_2powK","seedBytes","defaultSeedFile","getRandomValues","globalScope","jQuery","prng_aes","_prng_aes_output","_prng_aes_buffer","spawnPrng","_ctx","_navBytes","effKeyBits","L","T8","TM","encrypt","_finish","_output","_iv","mixRound","mashRound","runPlan","plan","ptr","ctr","BigInteger","mi","km","bs","cbs","ds","pm","pt","nsh","ys","y0","yt","qd","u0","cs","g2","is1","ac","prng","mgf1Md","keyLength","maxLength","lHash","PS","PS_length","DB","dbMask","maskedDB","seedMask","em","lHashPrime","in_ps","is_0","error_mask","maskLength","GCD_30_DELTA","THIRTY","op_or","rng","primeincFindPrime","primeincFindPrimeWithWorkers","primeincFindPrimeWithoutWorkers","generateRandom","deltaIdx","mrTests","getMillerRabinTests","maxBlockTime","_primeinc","workLoad","workerScript","cores","workerMessage","bits1","pki","oidBytes","digestInfo","digestAlgorithm","xq","bt","eb","yhex","ed","ml","xhex","pair","pkcs8","genOp","exportOp","keypair","scheme","schemeOptions","dP","dQ","qInv","rsaKey","padByte","numZeros","padBytes","getPrime","countBytes","encryptionAlgorithm","encryptedData","encOid","cipherFn","prfAlgorithm","saltBytes","encrypted","epki","passBuf","Slen","Plen","P","Inew","dIvLen","digests","prfOid","asUint8Array","arrays","curr","bigIntegerToUintBase64url","uint8ArrayToString","base64urlToBigInteger","base64urlToBuffer","uint8ArrayFromString","isBytes","exists","checkFinished","createView","tick","toBytes","abytes","concatBytes","sum","checkOpts","hashCons","hashC","bytesLength","setBigUint64","_32n","_u32_max","wh","wl","blockLen","outputLen","padOffset","take","dataView","oview","le","lst","Al","_l","_h","Bl","Cl","low","Dl","El","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","CHIh","CHIl","T1ll","T1h","T1l","MAJh","MAJl","All","_0n","_1n","_2n","ai","ensureBytes","expectedLength","hashLen","qByteLen","hmacFn","reseed","pred","validators","optValidators","checkField","fieldName","isOptional","checkVal","_3n","_5n","_8n","modulo","legendreC","Z","p1div4","Fp","Q1div2","ge","nv","field","nums","lastMultiplied","inverted","nBitLength","_nBitLength","nByteLength","ORDER","bitLen","redef","BITS","BYTES","sqrtP","fieldOrder","bitLength","fieldLen","minLen","reduced","constTimeNegate","neg","validateW","windows","elm","window","precomputes","maxNumber","shiftBy","wbits","offset1","offset2","cond1","cond2","scalars","MASK","buckets","lastBits","scalar","resI","sumI","validateOpts","ut.validateObject","curveDef","CURVE","CURVE_ORDER","prehash","cHash","cofactor","modP","Fn","uvRatio","adjustScalarBytes","domain","phflag","aCoordinate","ut.aInRange","assertPoint","toAffineMemo","iz","is0","assertValidMemo","X","Y","X2","Y2","Z2","Z4","aX2","XY","ZT","ey","ez","toInv","wnaf","X1","Y1","Z1","X1Z2","X2Z1","Y1Z2","Y2Z1","x1y1","F","X3","Y3","T3","Z3","zip215","lastByte","ut.bytesToNumberLE","isValid","isXOdd","isLastByteOdd","privKey","getExtendedPublicKey","ut.numberToBytesLE","ut.bytesToHex","modN","modN_LE","hashed","pointBytes","getPublicKey","hashDomainToScalar","msgs","ut.concatBytes","verifyOpts","SB","montgomeryBits","montgomeryBytes","powPminus2","cswap","x_2","x_3","dummy","a24","montgomeryLadder","x_1","z_2","z_3","sw","k_t","AA","BB","DA","CB","dacb","da_cb","encodeUCoordinate","decodeUCoordinate","uEnc","decodeScalar","scalarMult","pointU","_scalar","pu","GuBytes","scalarMultBase","_10n","_20n","_40n","_80n","b10","b20","b40","b80","b160","b240","b250","v3","v7","vx2","root1","root2","useRoot1","useRoot2","noRoot","pow_p_5_8","PUBLIC_KEY_BYTE_LENGTH","PRIVATE_KEY_BYTE_LENGTH","KEYS_BYTE_LENGTH","generateKey","privateKeyRaw","concatKeys","generateKeyFromSeed","hashAndSign","hashAndVerify","derivedEmptyPasswordKey","nonceLength","saltLength","webcrypto","aesGcm","cryptoKey","deriveParams","runtimeDerivedEmptyPassword","ciphertext","plaintext","exporter","encryptedKey","ciphers.create","LongBits","part0","part1","part2","write","indexOutOfRange","reader","writeLength","utf8.read","wireType","decodeMessage","pool","slab","writer","Op","VarintOp","writeVarint64","writeByte","writeFixed32","writeBytes","utf8.length","utf8.write","State","writeVarint32","writeStringBuffer","CODEC_TYPES","findValue","enumValue","KeyType","__KeyTypeValues","_codec","PrivateKey","ensureKey","crypto.publicKeyLength","crypto.hashAndVerify","pbm.PublicKey","pbm.KeyType","uint8ArrayEquals","crypto.privateKeyLength","crypto.hashAndSign","Ed25519PublicKey","pbm.PrivateKey","CodeError","unmarshalEd25519PrivateKey","privateKeyBytes","publicKeyBytes","Ed25519PrivateKey","unmarshalEd25519PublicKey","generateKeyPair","crypto.generateKey","generateKeyPairFromSeed","crypto.generateKeyFromSeed","curveTypes","digestLength","t1_hi","t1_lo","t2_hi","t2_lo","s0_hi","s0_lo","s1_hi","s1_lo","ch_hi","ch_lo","maj_hi","maj_lo","a_hi","a_lo","b_hi","b_lo","c_hi","c_lo","d_hi","d_lo","e_hi","e_lo","f_hi","f_lo","g_hi","g_lo","h_hi","h_lo","randB","convert","types","jwk2priv","jwk2pub","pkcs1ToJwk","jwkToPkcs1","jwk","pkixToJwk","jwkToPkix","exportKey","unmarshalPrivateKey","derivePublicFromPrivate","jwKey","convertKey","handle","fkey","fmsg","fomsg","MAX_KEY_SIZE","crypto.utils.jwkToPkix","crypto.encrypt","crypto.getRandomValues","RsaPublicKey","crypto.decrypt","crypto.utils.jwkToPkcs1","unmarshalRsaPrivateKey","crypto.utils.pkcs1ToJwk","crypto.keySize","crypto.unmarshalPrivateKey","RsaPrivateKey","unmarshalRsaPublicKey","crypto.utils.pkixToJwk","fromJwk","W15","W2","assertHash","assertExists","assertBytes","oHash","endo","dataLen","ut.numberToHexUnpadded","lenLen","isLong","lengthBytes","tlv","ut.abytes","seqBytes","seqLeftBytes","rBytes","rLeftBytes","sBytes","sLeftBytes","seq","mod.Field","_c","_isCompressed","fromBytes","weierstrassEquation","x3","isWithinCurveOrder","ut.inRange","normPrivateKeyToScalar","wrapPrivateKey","ut.isBytes","ut.bytesToNumberBE","mod.mod","assertPrjPoint","px","py","pz","U1","U2","t4","t5","sc","k1neg","k2neg","k1p","k2p","fake","f1p","f2p","isTorsionFree","clearCofactor","isCompressed","_bits","compressedLen","uncompressedLen","invN","mod.invert","cat","sqrtError","numToNByteStr","ut.numberToBytesBE","isBiggerThanHalfOrder","HALF","normalizeS","slcNum","recovery","msgHash","rec","bits2int_modN","radj","ir","ut.hexToBytes","mod.getMinHashLength","mod.mapHashToField","isProbPub","getSharedSecret","privateA","publicB","ORDER_MASK","ut.bitMask","int2octets","prepSig","defaultSigOpts","lowS","ent","h1int","seedArgs","k2sig","kBytes","normS","defaultVerOpts","ut.createHmacDrbg","sg","_sig","derError","defHash","_6n","_11n","_22n","_23n","_44n","_88n","b11","b22","b44","b88","b176","b220","b223","POW_2_128","secp","compressPublicKey","validatePrivateKey","validatePublicKey","computePublicKey","crypto.validatePublicKey","crypto.compressPublicKey","keysProtobuf.PublicKey","keysProtobuf.KeyType","crypto.computePublicKey","crypto.validatePrivateKey","Secp256k1PublicKey","keysProtobuf.PrivateKey","unmarshalSecp256k1PrivateKey","Secp256k1PrivateKey","unmarshalSecp256k1PublicKey","supportedKeys","RSA","Ed25519","Secp256k1","unsupportedKey","supported","typeToKey","keysPBM.PrivateKey","keysPBM.KeyType","unmarshal","crypto.keys.supportedKeys","pubKey","verifiedCache","uint8ArrayCompare","verified","hasKey","storedKey","addKey","crypto.keys.generateKeyPair","crypto.keys.unmarshalPrivateKey","signatures","keystore","identityProvider","verifiedIdentitiesCache","getIdentity","createIdentity","DefaultIdentityProvider","idSignature","publicKeyAndIdSignature","verifyIdentity","verifiedIdentity","identityVerified","signingKey","protocol","accessController","characters","orbitdb","manifestBytes","writerIdentity","canAppend","hasCapability","capabilities","_capabilities","toSet","capability","manifestStore","databases","Database","AccessController","addr","acType","onDatabaseClosed","rnds8","byteToHex","unsafeStringify","randomUUID","v4","native","rnds","vals","Set","entryValue","putValue","_CodeOrName","_Code","strs","addCodeArg","plus","expr","safeStringify","optimize","interpolate","mergeExprItems","strConcat","stringify","getProperty","getEsmExportName","regexpCode","code_1","ValueError","UsedValueState","Scope","prefixes","nameOrPrefix","ng","ValueScopeName","nameStr","ValueScope","valueKey","vs","_name","keyOrRef","scopeName","usedValues","getCode","valueCode","nameSet","scope_1","code_2","scope_2","_names","_constants","Def","varKind","es5","_n","optimizeExpr","Assign","sideEffects","addExprNames","AssignOp","Label","Break","Throw","AnyCode","ParentNode","subtractNames","addNames","BlockNode","Root","Else","If","cond","ns","not","For","ForLoop","iteration","ForRange","ForIter","Func","async","Return","Try","Catch","Finally","CodeGen","extScope","prefixOrName","constant","_constant","keyValues","thenBody","elseBody","forBody","tryBody","catchCode","finallyCode","nodeCount","toClose","funcBody","replaceName","canOptimize","par","andCode","mappend","and","orCode","codegen_1","schema","rules","RULES","topSchemaRef","schemaPath","keyword","$data","mergeNames","mergeToName","mergeValues","resultToName","toName","dataProp","dataPropType","jsPropertySyntax","names_1","util_1","schemaType","reportError","cxt","errorPaths","overrideAllErrors","compositeRule","allErrors","errObj","errorObjectCode","addError","returnErrors","reportExtraError","resetErrorsCount","errsCount","extendErrors","schemaValue","errs","validateName","schemaEnv","createErrors","errorObject","errorInstancePath","errorSchemaPath","extraErrorProps","errorPath","instancePath","instPath","errSchemaPath","parentSchema","schPath","propertyName","errors_1","rule","kwd","applicability_1","DataType","coerceTo","checkTypes","wrongType","coerceTypes","dataType","coerced","coerceSpecificType","parentData","parentDataProperty","strictNums","correct","EQ","numCond","_cond","dataTypes","notObj","schemaCode","ty","sch","childData","util_2","missing","ownProperties","schemaMap","passSchema","dataAndSchema","valCxt","pattern","regExp","validArr","validateItems","notValid","schValid","_sch","schCxt","macroSchema","schemaRef","validate","validateRef","validateKeyword","assignValid","reportErrs","ruleErrs","validateAsync","validateSync","validateErrs","_await","passCxt","allowUndefined","schemaProp","subschema","dpType","dataPathArr","nextData","dataContextProps","_nextData","jtdDiscriminator","jtdMetadata","jsonSchemaTraverseModule","post","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","normalize","baseId","schemaId","uriResolver","schId","baseIds","pathPrefix","localRefs","schemaRefs","fullPath","innerBaseId","addRef","addAnchor","ambiguos","schOrRef","checkAmbiguosRef","sch1","sch2","dataType_1","resolve_1","checkedTypes","rootName","ValidationError","evaluated","typeErrors","groupKeywords","useDefaults","schTs","kwdT","withTypes","successAction","failAction","errorParams","assign","codeBlock","$dataValid","wrong$DataType","invalid$DataSchema","validateSchemaRef","appl","nextContext","schemaCxt","ruleType","dataLevel","dataNames","jsonPointer","matches","up","errorMsg","segment","pointerType","validate_1","env","rootId","_ValidationError","sourceCode","validateCode","schOrFunc","schEnv","refPath","parsedRef","partSchema","$ref","HEX","normalizeIPv4","host","keepZero","strip","tokenCount","isZone","endipv6Encountered","endIpv6","consume","normalizeIPv6","ipv6","newHost","escapedHost","skip","ind","removeDotSegments","normalizeComponentEncoding","esc","recomposeAuthority","uriTokens","ipV4res","ipV6res","wsComponents","secure","urnComponents","urnScheme","schemeHandler","SCHEMES","nid","uriComponents","nss","uuidComponents","wss","parse","baseURI","relativeURI","schemelessOptions","skipNormalization","uriA","uriB","cmpts","authority","gotEncoding","isIP","ipv4result","ipv6result","fastUriModule","uri_1","validation_error_1","ref_error_1","rules_1","compile_1","codegen_2","$dataRefSchema","defaultRegExp","META_IGNORE_OPTIONS","EXT_SCOPE_NAMES","removedOptions","deprecatedOptions","MAX_EXPRESSION","requiredOptions","_d","_e","_f","_g","_j","_m","_o","_p","_q","_r","_s","_t","_u","_v","_x","_y","_z","_0","_optz","Ajv","getLogger","formatOpt","checkOptions","getMetaSchemaOptions","addInitialFormats","addInitialKeywords","addInitialSchemas","_dataRefSchema","schemaKeyRef","_meta","loadSchema","runCompileAsync","_schema","loadMetaSchema","_compileAsync","checkLoaded","loadMissingSchema","missingRef","_loadSchema","_validateSchema","throwOrLogError","$schema","keyRef","getSchEnv","definitions","kwdOrDef","checkKeyword","addRule","keywordMetaschema","dataVar","metaSchema","keywordsJsonPointers","keywords","seg","schemaOrData","schemas","validateSchema","addSchema","currentOpts","optsSchemas","defs","metaOpts","noLogs","logger","KEYWORD_NAME","ruleGroup","addBeforeRule","_rule","$dataRef","callRootRef","schOrEnv","callValidate","inlineRefSchema","schName","$async","callAsyncRef","callSyncRef","addEvaluatedFrom","addErrorsFrom","schEvaluated","core_1","core","prec","invalid","ucs2length_1","missingProperty","useLoop","allErrorsMode","exitOnErrorMode","definedProperties","requiredKey","loopAllRequired","loopUntilMissing","equal_1","itemTypes","validateUniqueItems","loopN","loopN2","indices","eql","getEql","loopEnum","vSchema","equalCode","validation_1","extraItems","schArr","checkStrictTuple","fullTuple","items_1","additionalItems_1","prefixItems","minContains","maxContains","validateItemsWithCount","checkLimits","_valid","depsCount","property_ies","propDeps","schDeps","splitDependencies","validatePropertyDeps","validateSchemaDeps","propertyDeps","schemaDeps","hasProperty","depProp","patProps","checkAdditionalProperties","additionalPropertyCode","isAdditional","definedProp","propsSchema","deleteAdditional","applyAdditionalSchema","additionalProperties_1","allProps","applyPropertySchema","patterns","alwaysValidPatterns","checkProperties","validatePatternProperties","pat","checkMatchingProperties","validateProperties","alwaysValid","passing","validateOneOf","hasThen","hasElse","validateIf","ifClause","validateClause","require$$13","require$$14","require$$15","draft2020","applicator","validate$DataFormat","validateFormat","fmts","fDef","fType","unknownFmt","invalidFmt","callFormat","validData","formatDef","unknownFormat","fmtType","fmtRef","getFormat","validCondition","unknownMsg","fmtDef","fmt","format_2","format_1","DiscrError","discrError","tagName","validateMapping","mapping","getMapping","tagValue","applyTagSchema","oneOfMapping","topRequired","hasRequired","tagRequired","propSch","addMappings","addMapping","draft7_1","discriminator_1","draft7MetaSchema","META_SUPPORT_DATA","META_SCHEMA_ID","validateRoot","compileKeySchema","validateAdditionalProperties","validateKey","getKeyValidator","supportedKey","sfip","dossierOrbite","createOrbitDB","bd","schéma","orbite","Semaphore","existante","idRequête","uuidv4","fOublier","vérifierTypeBd","typeBd","nom","idsRequêtes","idBd","fonction","résultat","arrêterOrbite","fFinale","éléments","é","autorisés","élément","rôle","objAccèsUtilisateur","_rôles","listeRôle","utl","utilisateurs","gestAccès","idAjout","rôleValide","seraÉventuellementUnModérateur","prochains","prochain","prochaineEntrée","gestionnaireOrbite","adresseBdAccès","fOublierBd","événements","gestRôles","fOublierSuiviBdAccès","estAutorisé","_rôle","mods","idsMods","membres","cp","_gc1","_ga1","c3","e3","nbfs","s2a","bufs","maxlen","widx","ridx","mixed","sgn","P_2","P_1","Q_2","Q_1","dow","dout","date1904","epoch","V","ss0","outl","outstr","sfmt","period","fakee","$$","$2","$3","aval","den","rr","myn","myd","cc","dd","_frac","ffmt","ri","ff","oa","lres","rres","in_str","flen","dt","ssm","nstr","jj","vv","myv","ostr","decpt","lasti","retval","thresh","lat","tbl","dateNF","datestr","timestr","CRC32","signed_crc_table","T0","slice_by_16_tables","TT","T4","T5","T6","T7","T9","Ta","Tb","Tc","Td","Te","Tf","crc32_bstr","bstr","crc32_buf","crc32_str","_CFB","namecmp","dirname","filename","write_dos_date","hms","ymd","parse_dos_date","parse_extra_field","blob","sz","tgt","sz1","sz2","fs","get_fs","file","parse_zip","parse_mad","mver","ssz","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","fat_addrs","mv","check_get_mver","check_shifts","dir_cnt","sectors","sectorify","sleuth_fat","sector_list","make_sector_list","ENDOFCHAIN","files","Paths","FileIndex","FullPaths","read_directory","build_full_paths","HEADER_SIGNATURE","nsectors","FI","FP","pl","dad","get_mfat_entry","mini","MSSZ","cnt","sector","get_sector_list","chkd","buf_chain","modulus","minifat_store","namelen","ctime","read_date","mtime","read_file","init_cfb","cfb","seed_cfb","nm","rebuild_cfb","gc","_file","fullPaths","HEADER_CLSID","elt","_write","_opts","write_mad","write_zip","mini_size","fat_size","mini_cnt","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","_nm","find","UCFullPaths","UCPaths","UCPath","write_file","a2s","_zlib","use_zlib","zlib","InflateRaw","InflRaw","_inflateRawSync","usz","_inflate","_deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","read_bits_3","read_bits_4","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","DST_LN_RE","LEN_LN_RE","write_stored","boff","write_huff_fixed","addrs","mlen","len_eb","dst_eb","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","next_code","hcodes","h1","inflate","outbuf","woff","OL","max_len_1","max_len_2","warn_or_throw","wrn","fcnt","start_cd","csz","efsz","fcsz","EF","parse_local_file","meth","crc32","_csz","_usz","ef","cfb_add","cdirs","fp","fi","crcs","sz_cd","namebuf","ContentTypeMap","get_content_type","write_base64_76","write_quoted_printable","encoded","si","parse_quoted_printable","di","oi","parse_mime","fname","cte","ctype","fdata","row","mboundary","boundary","start_di","ca","cstr","dispcnt","csl","qp","cfb_new","unsafe","fpath","cfb_del","cfb_mov","old_name","new_name","cfb_gc","url","infile","ks","o2","dnthresh","mt","fixdate","debomit","wt","lnos","safe_split_regex","zip","safe","skip_root","skip_LC","eq","quot","encregex","coderegex","raw_unescapexml","xlsx","entregex","entrepl","orig","ww","mtcache","entities","vt_cache","av","utf8_b","lpp4_","is_buf_a","oI","oR","oo","loc","hexstr","fld","tmpbyte","cntbyte","RT","blksz","newblk","curbuf","endbuf","ba","cell","biff","rowstr","colstr","col","ce","sname","sheet","sheets","_ws","dense","_R","_C","_origin","_range","__R","__Rstr","__C","cell_ref","cchCharacters","_null","rgsStrRun","dwSizeStrRun","iStyleRef","fX100","fInt","RK","d100","xColorType","nTS","bR","bG","bB","icv","font","grbit","ClipFmt","ct","ctext","type2ct","f1","f2","f3","currentFilePath","rels","rel","canonictarget","rid","rId","relobj","targetmode","Rn","FEtag","rdf","HP","TOP","hp","xml","toks","Props","Custprops","BLACKLIST","dwLowDateTime","dwHighDateTime","stringType","headingString","headerParts","cElements","CodePage","dict","PIDSI","start_addr","NumProps","Dictionary","DictObj","PropID","Offset","PropH","piddsi","oldpos","RE","hdr","piao","pr","pio","pinfo","clsid","NumSets","FMTID0","FMTID1","Offset0","Offset1","SystemIdentifier","CLSID","PSet0","PSet1","entries2","clsid2","ps0","ps1","cch","fHighByte","fExtSt","fRichSt","cRun","cbExtRst","xlstr","otext","accel","extra","cAnti","preamble","ansiPath","unicodePath","sVer","displayName","targetFrameName","moniker","oleMoniker","Loc","guid","fileTime","Target","hashidx","Pretarget","rw","ixfe","iSupBook","itabFirst","itabLast","udfName","rwFirst","rwLast","colFirst","colLast","ot","fts","wb","UserName","hidden","ucnt","sst","extsst","miyRw","fullcalc","xWn","yWn","dxWn","dyWn","iTabCur","iTabFirst","ctabSel","wTabRatio","os","numFmtId","fmtstr","rkrec","rkrecs","lastcol","ixfes","ixfeP","guts","xnum","ctab","virtPath","rgst","chKey","cce","itab","npflen","rgce","cchName","cchComment","comment","cUse","fMTREnabled","fUserSetThreadCount","cUserThreadCount","idObj","stAuthor","merges","cmcs","cmo","cf","texts","controlInfo","cchText","hlink","O","wzTooltip","ccv","coldx","lcb","dbf_codepage_map","dbf_reverse_map","dbf_to_aoa","memo","vfp","l7","nrow","fpos","fields","hend","dbf_to_sheet","dbf_to_workbook","_RLEN","sheet_to_dbf","old_cp","aoa","headers","cols","hcnt","coltypes","colwidths","coldecimals","guess","_guess","hf","hb","rout","sylk_escapes","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa","sylk_to_aoa_str","records","rj","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","d1904","nn","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","cell_t","shrbase","F_seen","sylk_to_workbook","aoasht","outwb","write_ws_cell_sylk","write_ws_cols_sylk","write_ws_rows_sylk","rows","sheet_to_sylk","RS","dif_to_aoa","dif_to_aoa_str","metadata","dif_to_sheet","dif_to_workbook","make_value","make_value_str","sheet_to_dif","eth_to_aoa","eth_to_sheet","eth_to_workbook","sep","sheet_to_eth_data","coord","sheet_to_eth","set_text_arr","prn_to_aoa_str","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","sepcc","startcc","_re","finish_cell","prn_to_sheet_str","prn_to_sheet","prn_to_workbook","sheet_to_prn","OLD_WTF","lotushopper","Enum","WK1Enum","lotus_to_workbook","lotus_to_workbook_buf","next_n","sidx","snames","realnames","sdata","refguess","sheetRows","qpw_to_workbook_buf","tmpcell","WK3Enum","osheets","rnames","sheet_to_wk1","write_BOF_WK1","write_RANGE","max_R","write_INTEGER","write_NUMBER","write_LABEL","book_to_wk3","write_BOF_WK3","write_XFORMAT_SHEETNAME","wsidx","write_NUMBER_17","write_LABEL_16","wscnt","parse_RANGE","parse_cell","parse_LABEL","parse_STRING","parse_INTEGER","parse_NUMBER","parse_FORMULA","wk1_fmla_to_csf","wk1_parse_rc","FuncTab","BinOpTab","argc","argL","argR","parse_cell_3","parse_LABEL_16","parse_NUMBER_18","parse_NUMBER_17","parse_FORMULA_19","parse_NUMBER_25","parse_NUMBER_27","parse_FORMULA_28","parse_SHEETNAMECS","parse_SHEETNAMELP","parse_SHEETINFOQP","parse_XFORMAT","SST","CC","rpr","pass","tregex","rpregex","parse_r","rregex","rend","parse_rs_factory","nlregex","parse_rpr2","intro","outro","r_to_html","terms","html","sitag","comps","vers","verifier","KeyData","Password","Verifier","PasswordArray","PasswordDecoded","PasswordByte","Intermediate1","Intermediate2","Intermediate3","PadArray","InitialCode","XorMatrix","Ror","Byte","XorRor","byte1","byte2","CreateXorKey_Method1","XorKey","CurrentElement","Char","Index","ObfuscationArray","Temp","PasswordLastChar","PadIndex","Data","XorArrayIndex","XorArray","Value","rowtf","rtfre","last_index","H6","L2","h6","tint","chr","collw","_MDW","coll","NF","xf","alignment","cellXfs","make_pstyx","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","stFmtCode","bls","underline","family","bCharSet","sss","fls","ixfeParent","ifmt","defTableStyle","defPivotStyle","Themes","dwThemeVersion","themeXML","extType","cexts","xfext","xfe","mdb","cm","metatype","lastmeta","comments","csize","bbox","_shapeid","_comments","fillopts","fillparm","fillxml","shadata","threaded","people","authors","commentList","authtag","cmnttag","textMatch","iauthor","lastauthor","tcnt","tidx","carr","rootid","tcopts","person","rfx","newcfb","newpath","vba","rcregex","rcbase","rcfunc","cRel","rRel","fstr","$0","$4","$5","rl","area","ixti","bitSemi","bitBaxcel","bitGoto","bitIf","iftab","cparams","tab","nameindex","ptgs","supbooks","XTI","ixtiraw","nameidx","last_sp","sp","fflen","lbl","bookidx","externbook","ixtidata","lp","rp","parsedf","fnd","PtgNonDisp","_left","rgcb","cbf","o1","o3","bf","oint","postamble","lastbang","_str","revarr","wch","margins","fmtid","fillid","data1","data2","mtch","sheetPr","svs","columns","afilter","_merge","tmpref","cname","outlineprops","margin","seencol","coli","colm","colM","sview","oldt","oldv","cellregex","rowregex","isregex","refregex","match_v","match_f","cells","cref","tagr","tagc","sstr","ftag","do_format","arrayf","sharedf","rowobj","rowrite","sheetStubs","marr","marrlen","xlen","rstarti","outa","rslice","___f","_tag","_cell","rdata","_drawing","relc","ncolspan","lcs","caddr","ncell","fBool","bError","isst","relId","tooltip","locidx","fAlwaysCalc","Workbook","af","RR","aii","last_seen","cap","nf","csheet","nc","_good","cn","Sheets","DN","dn","xmlns","dname","dnstart","write_names","workbookPr","strName","Names","viz","vistab","oval","stag","csty","sid","interiors","opening","ishtml","sheetnames","cursheet","sheetname","dtag","didx","fidx","pidx","cstys","wsprops","raw_Rn3","cma","cmd","ssfidx","_col","_NamedRange","_DefinedName","AutoFilter","pagemargins","RecordType","nextrt","ll","Directory","last_formula","cur_sheet","Preamble","lastcell","last_cell","cmnt","rngC","rngR","temp_val","country","XFs","palette","get_rgb","process_cell_style","xfd","addcell","file_depth","afi","last_RT","BIFF2Fmt","BIFF2FmtTable","FilterDatabases","last_lbl","seen_codepage","cpval","tmpri","fakebs8","_fr","_fc","_fe","_arraystart","_ixfe","b4idx","b2idx","noteobj","DSI","DocSummary","SI","Summary","DSEntries","SEntries","CEntries","Keys","DocSummaryRE","SummaryRE","CEntries2","CompObj","WB","WorkbookP","wbpath","HL","_WB","_sheet","MAX_ROWS","_sheets","_wb","blen","mtch2","CS","hd","midx","footer","or_R","or_C","elts","Aelts","Aelti","get_computed_style","fixed","_nfm","number_format_map","NFtag","tNF","etpos","nfidx","sheetag","rowtag","SheetNames","ctag","textp","textpidx","textR","row_ol","mrange","mR","mC","rowpeat","colpeat","atag","_Ref","creator","creatoridx","isstub","intable","baddate","rptR","rpt","xlmlidx","styletag","nrange","ptp","Styles","master_styles","nopts","has_time","np","odsref","write_text_p","null_cell_xml","covered_cell_xml","write_ws","nfs","ROWS","_Fref","text_p","_tgt","write_automatic_styles_ods","cidx","colobj","nfi","fods","u8","u8a","i32","ias","ia","midata","aipayload","clen","u8i","frame","ofmt","nfmt","ver","dur","dstyle","dmin","dmax","auto","autodur","dstr","zstr","lut","dv","zidx","ieee","doff","d128","pb","iwa","orefs","orefidx","rtp","rtpref","mtype","tswpsa","_i","wide_offsets","used_storage_u8","used_storage","used_storage_offsets","offsets","dws","mtype2","_tile","pi","tableref","shapeoffs","sheetoffs","packets","packet","docroot","iwam","wide","tri","new_7","new_4","last_offset","cell_storage","_dv","_last_offset","_cell_storage","celload","_celload","dependents","mess","sheetrefs","ainfo","sheetref","newsheetref","remap","arch","tiaref","sheetroot","sa","drawables","tia","loc2","mlist","parentidx","tmaref","tiaroot","dap","oldtmaref","tma","tmaroot","uuid","new_uuid","srrta","hsoa","hsa","hseadata","hsea","_a2","oldref","newref","newloc","_a3","_b2","row_headers","tspref","tiles","tst","oldtileref","newtileref","oldtile","wsname","sheetidx","rootref","tmafile","trunc","row_header_ref","rowhead","base_bucket","R2","_bucket","col_header_ref","colhead","rbtree","tilestore","tstride","tileref","save_token","mlst","ntiles","newtileid","tiledata","tilerow","newtile","tilecontent","mergeid","sstref","sstroot","sstdata","wbrels","relsPath","sheetRels","stype","dfile","drelsp","draw","chartp","crelsp","tcomments","_zip","index_zip","xlsb","binname","propdata","custprops","wbsheets","wbext","wbrelsi","wbrelsfile","nmode","wsloop","snjseen","snj","dsm","seds","einfo","vbafmt","_sn","wsrels","_type","need_vml","needtc","main","ab","vu","oopts","ftype","bom","_BT","defval","isempty","outi","header_cnt","FS","txt","datarow","endregex","cmds","js","ROW","JS","RC","roll","vis","author","dynamic","rngstr","wsr","BOM","prototype","kind","allOwnKeys","caseless","assignValue","targetKey","constructor","superConstructor","sourceObj","destObj","propFilter","searchString","lastIndex","TypedArray","reducer","reducedDescriptors","arrayOrString","delimiter","ALPHA","visit","reducedValue","setImmediateSupported","postMessageSupported","response","toJSON","axiosError","dots","formData","option","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","exposedHelpers","build","charMap","_encode","serializeFn","serializedParams","hashmarkIndex","fulfilled","rejected","URLSearchParams","FormData","helpers","buildPath","isNumericKey","parser","transformRequest","contentType","hasJSONContentType","isObjectPayload","isFileList","_FormData","transformResponse","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","validateStatus","rawHeaders","normalizeValue","tokensRE","isHeaderNameFilter","accessorName","methodName","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","matcher","deleted","deleteHeader","asStrings","accessors","defineAccessor","headerValue","samplesCount","timestamps","firstSampleTS","chunkLength","startedAt","bytesCount","passed","freq","threshold","lastArgs","invoke","isDownloadStream","bytesNotified","_speedometer","loaded","progressBytes","rate","inRange","throttled","lengthComputable","standardBrowserEnv","msie","urlParsingNode","originURL","resolveURL","requestURL","nonStandardBrowserEnv","expires","cookie","baseURL","relativeURL","requestedURL","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","xsrfValue","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","onloadend","responseHeaders","timeoutErrorMessage","signals","controller","aborted","onabort","unsubscribe","onProgress","onFinish","_onFinish","loadedBytes","duplexAccessed","hasContentType","DEFAULT_CHUNK_SIZE","resolvers","cancelToken","withCredentials","fetchOptions","composedSignal","requestContentLength","_request","contentTypeHeader","isCredentialsSupported","isStreamResponse","responseContentLength","responseData","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","validator","formatMessage","allowUnknown","instanceConfig","configOrUrl","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","onFulfilled","onRejected","forEachMethodNoData","forEachMethodWithData","generateHTTPMethod","isForm","executor","onfulfilled","abort","createInstance","defaultConfig","promises","données","optsXLSX","readXLSX","émetteur","clef","résoudre","nomArgFonction","argsSansF","tâche","messageRetour","fOublierTâche","lorsqueRetour","retour","fonctions","erreur","fSuivre","listeAtributs","_thisArg","mandataireClient","decorators","isArgs","keysShim","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","theKeys","skipProto","skipConstructor","shimObjectKeys","keysWorksWithArguments","supportsDescriptors","defineProperty","predicate","defineProperties","predicates","source1","getSymbols","nextKey","letters","thrower","polyfill","getPolyfill","shim","shimAssign","functionsHaveNames","functionsHaveConfigurableNames","boundFunctionsHaveNames","setFunctionName","calls","shimFlags","bigIntValueOf","gPO","sepRegex","intStr","dec","inspect_","customInspect","numericSeparator","bigIntStr","maxDepth","noIndent","newOpts","symString","mapParts","setParts","isBigInt","protoTag","stringTag","constructorTag","defaultStyle","quoteChar","trailer","joinedEntries","baseIndent","lineJoiner","isArr","symMap","$WeakMap","$Map","$mapGet","$mapHas","getSideChannel","$wm","$m","$o","channel","SLOT","getStopIterationIterator","origIterator","siIterator","tryStringObject","$Set","exported","$setHas","esGetIteratorModule","arraylike","noPrimordialCollections","shimObjectIs","$byteLength","tryDateGetDayCall","isDateObject","isRegex","hasLastIndexDataProperty","tryNumberObject","booleanBrandCheck","isSymbolModule","hasNativeBigInts","isBigintModule","whichBoxedPrimitive","$WeakSet","isWeaksetModule","whichCollection","getIterator","require$$16","require$$17","val1","altValue","curB","looseOpts","key1","item1","actualBoxed","expectedBoxed","hasActual","hasExpected","sentinel","iA","iB","resultA","resultB","item2","aIsArray","bIsArray","aIsError","bIsError","aIsRegex","bIsRegex","aIsDate","bIsDate","aWhich","bWhich","aIsBuffer","bIsBuffer","aIsArrayBuffer","bIsArrayBuffer","aIsSAB","bIsSAB","ka","kb","aCollection","bCollection","isMergeableObject","customMerge","destination","sourceIsArray","sourceAndTargetTypesMatch","deepmergeAll","cjs","promiseExists","globalObject","Obj","symbolExists","mapExists","setExists","weakMapExists","weakSetExists","dataViewExists","symbolIteratorExists","symbolToStringTagExists","setEntriesExists","mapEntriesExists","setIteratorPrototype","mapIteratorPrototype","arrayIteratorExists","arrayIteratorPrototype","stringIteratorExists","stringIteratorPrototype","toStringLeftSliceLength","toStringRightSliceLength","typeDetect","typeofObj","objPrototype","collection","cloneBuffer","customizer","valueType","copyFunction","copiedValue","references","visited","collectionKey","collectionValue","collectionValueType","copiedCollectionValue","require","J","allowAboveRoot","lastSegmentLength","lastSlash","lastSlashIndex","pathObject","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSeparator","joined","fromStart","fromEnd","fromLen","toStart","toEnd","toLen","lastCommonSep","fromCode","toCode","_makeLong","hasRoot","matchedSlash","basename","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","isElectron","isBrowser","trads","langues","langueTrouvée","nImporteLaquelle","fichiersDocs","fichiersSFIP","nomFichier","fichierZip","dossierFichiersSFIP","fichier","contenu","fluxÉcriture","flux","fileSave","idc","fRacine","oublierFSuivre","idBdCible","premièreFois","oublierRacine","nouvelIdBdCible","déjàAppellé","annulerRebours","crono","fListe","fBranche","fIdBdDeBranche","fRéduction","branches","fCode","arbre","dictBranches","prêt","listeDonnées","réduits","verrou","retourRacine","dictÉléments","existants","nouveaux","disparus","changés","idBdBranche","oublierBdRacine","_done","_customDefinitions","allTypes","geoJSONObject","nonGeoTypes","geoTypes","geometryObject","coordinates","multiPoint","lineString","multilineString","_linearRingCoor","polygon","multiPolygon","geometryCollection","feature","featureCollection","estSpécificationHoroDatage","système","date_","cholqij","Cholqij","exts","catégorie","வார்ப்புரு","tableau","விண்மீன்","அட்டவணை_சாபி","குழு_அடையாளம்","மாறிலிகள்","முன்னிருப்பாக_மாறிலிகள்","நகல்","வேண்டிய_அட்டவணை","அட்டவணை","நெடுவரிசை","அ","பேற்றோர்","அட்டவணை_அடையாளம்","அங்கீகரிக்கப்பட்ட_தரவுத்தளம்_வார்ப்புரு","தரவுத்தளம்","செ","fSuivreRacine","பேற்றோர்கள்","உறுப்படிகள்","அடையாளம்","fSuivreBranche","fSuivreBd","சந்ததி","த","இ","பரிந்துரைகள்","பங்கேற்பாளர்","ப","பரிந்துரை","தேதியை_சேரு","உறுப்படி","இறுதியான_செயலி","மீத்தரவு","தரவுத்தள_அடையாளம்","பரிந்துரை_உறுப்படி","இருக்கும்_உறுப்படி","அங்கீ","ஈ","தகவல்கள்","செ_கடைசி","முந்தையானது","தேதி_முந்தையானது","தேதி_புதுசு","செ_மறந்துவிடு","பரிந்துரைக்கப்பட்டவையை_மறந்துவிடு","தீர்வு","மொழி","தகவல்_மொழி","எண்","குறிகள்","அடிமானங்கள்","பிரிப்பு","குறிகள்_","எதிர்","தசம","உரை","முழு","பெட்டியல்","படித்தல்","பெ","ஆ","ஐ","ஊ","கீழ்_","கீழ்","மேல்","மேல்_","அடி","சுற்று","அடுக்குக்குறி","அடிமானம்","அடு","எ","குறி","பி","பிரிவு","மொழிகள்","மொ","வகை","மீதி","மதிப்பு","ம","உ","ச","வரிசைகள்","வ","குறியீடு","தகவல்","things","bufEnd","beginInclusive","endExclusive","bufStart","sliceStartInBuf","sliceEndsInBuf","needle","radix","rightmostPositions","lastPatIndex","currentLength","emitted","newBl","byteLen","postOffset","wire","fieldNum","linksBeforeData","nameBytes","abuf","bbuf","pbl","pbn","__DataTypeValues","UnixTime","Metadata","UnixFS","marshaled","PBData","blockSizes","fanout","persist","blockstore","dagPb","bytesWritten","unixfs","dagPb.encode","InvalidParametersError","previous","leaves","leaf","rawCodec.code","originalPath","bytesRead","currentChunkSize","maxChildrenPerNode","balancedLayout","roots","CID_V0","CID_V1","Dir","hexes","library","_validBytes","_x86Multiply","_x86Rotl","_x86Fmix","_x64Add","_x64Multiply","_x64Rotl","_x64LeftShift","_x64Xor","_x64Fmix","h4","k4","c4","bytes.fromHex","needsSort","finder","noCreate","bytePos","bitPos","previousPopCount","bytePopCount","targetLength","randomIndex","pendingBitsForResultingByte","pendingBitsForNewByte","resultingByte","newByte","usingBits","masked","Bucket","posAtParent","place","asyncMap","asyncReduce","hashValue","bucket","newPlace","onlyChild","mappedChildren","START_MASKS","STOP_MASKS","pendingBits","availableBits","taking","byteBitsToInt","maskFor","wrapHash","hashFn","hashing","InfiniteHash","available","took","availableForUntake","uint8ArrayConcat","ConsumableBuffer","bucketOptions","hamtHashFn","calculateSize","shardRoot","padLength","childrenSize","labelPrefix","shard","subShard","isDir","flushedDir","newDir","oldDir","DirSharded","toPathComponents","pathElems","currentPath","pathElem","rootDir","singleRoot","importer","candidates","wrapWithDirectory","shardSplitThresholdBytes","shardFanoutBits","cidVersion","rawLeaves","leafType","fileImportConcurrency","blockWriteConcurrency","reduceSingleLeafToSelf","chunker","chunkValidator","buildDag","buildTree","NotUnixFSError","recurs","isa","_buf","_token","dp","startPos","swallow","chars","numStr","readu4","u4","readUtf8Char","_decode","cborgJson.Tokenizer","keyToken","valueToken","innerKeyToken","innerValueToken","DagJsonTokenizer","cborgJson.decode","toResolve","subObject","subPath","subObjectCid","dagCbor.decode","dagJson.decode","blockStart","requestedStart","requestedEnd","blockLength","blockEnd","fileSize","rawContent","contentGenerator","mh.decode","json.decode","rootBucket","toPrefix","bucketPath","entryPrefix","entryName","peekable","peek","concurrency","ordered","ops","slotAvailable","defer","resultAvailable","sourceFinished","sourceErr","opErred","valuesAvailable","yieldOrderedValues","yieldUnOrderedValues","yieldDirectoryContent","linkName","linkPath","streamPosition","childOps","childLink","childStart","childEnd","dagPb.code","dagPb.decode","raw.code","childQueue","yieldFileContent","wanted","yieldHamtDirectoryContent","contentFile","contentDirectory","contentHamtShardedDirectory","linkCid","nextName","nextPath","dagPbResolver","rawResolver","dagCbor.code","dagCborResolver","dagJson.code","dagJsonResolver","identifyResolver","json.code","jsonResolver","entryPath","startingDepth","recurse","globalThis","resultIndex","msAbs","isPlural","createDebug","disable","enable","humanize","selectColor","prevTime","enableOverride","namespacesCache","enabledCache","formatter","newDebug","namespaces","toNamespace","lastC","formatters","createDisabledLogger","contents","dagPB.encode","dagPB.prepare","nextSegment","fileName","dagPB.decode","converted","parentLinks","secs","dagPB.code","finalSegment","existingLink","sibling","siblingName","siblingHash","siblingIndex","siblingPrefix","newPrefix","sourceEntry","linkSizes","pblink","mergeOpts","defaultOptions","updatedCid","updatedBlock","parentCid","emptyDirCid","parentBlock","rootNode","tsize","oldUnixfs","dagSize","localFileSize","localDagSize","pbNode","linkResult","helia","UnixFSClass","__extends","extendStatics","__","stream_1","_super","IndexedDbReadStream","dbRequest","dbEvent","IndexedDbWriteStream","__export","objectTypes","freeExports","freeModule","freeGlobal","maxSafeInteger","reOpera","objectProto","capitalize","cleanupOS","forOwn","getClassOf","isHostType","qualify","accumulator","ua","isCustomContext","nav","likeChrome","objectClass","airRuntimeClass","enviroClass","javaClass","phantomClass","java","rhino","operaClass","description","prerelease","useFeatures","isSpecialCasedOS","getLayout","getName","product","getProduct","manufacturer","getManufacturer","getOS","guesses","getVersion","toStringPlatform","CryptoJS","Math","cryptoSecureRandomInt","C_lib","overrides","WordArray","sigBytes","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","doFlush","processedWords","dataWords","dataSigBytes","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","cfg","messageUpdate","C_algo","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","base64Chars","byte3","triplet","paddingChar","base64Str","base64StrLength","reverseMap","paddingIndex","parseLoop","bits2","bitsCombined","adresseFonction","idClient","fOriginale","ceciOriginal","codeCache","fsSuivis","f_","argsAvecF","nomArgTaille","argsSansFOuTaille","taille","infoRequêtes","info","argsComplets","fChangerProfondeur","fChangerN","fOublierRequête","fChangerTailleRequête","tailleAvant","maxTaille","taillePrésente","fChangerTaille","requêtes","argsClefs","texte","_cible","descripteur","recherche","client","licences","infoLicence","idÉlément","suggestion","récursif","fichiers","dépendants","épingles","l_vals","idsOrbite","cids","id_","fOublier_","idCompte","schémaBdPrincipale","MAX_TAILLE_IMAGE","MAX_TAILLE_IMAGE_VIS","idBdProfil","bdProfil","profil","contacts","courriel","contact","idBdContacts","àEffacer","langue","noms","idBdNoms","idImage","saveAs","licence","licenceContenu","ajouter","idBdBd","bdBD","optionsAccès","idBdMétadonnées","idBdDescr","idBdTableaux","idBdMotsClefs","idBdNuées","bdRacine","fOublierRacine","ajouterÀMesBds","copierDonnées","bdBase","idNouvelleBd","nouvelleBd","fOublierNouvelle","bdMétadonnées","fOublierBdNoms","métadonnées","bdNoms","bdDescr","fOublierBdDescr","descriptions","bdMotsClefs","fOublierBdMotsClefs","motsClefs","bdNuées","fOublierBdNuées","nuées","idNouvelleBdTableaux","nouvelleBdTableaux","fOublierNouvelleTableaux","bdTableaux","fOublierBdTableaux","tableaux","idTableau","idNouveauTableau","statut","tb","clefTableau","idColonne","idVariable","optionnelle","règle","copiéDe","fCondition","fSuivreCondition","fFinaleSuivreCondition","motsClefsBd","état","idNuée","nuéesBd","idBdBase","idBd2","obtTableaux","fSuivi","tableauxBase","tableauxBd2","idTableauBaseCorresp","infoTableau","idNuéeUnique","clefStockageLocal","déjàCombinées","bds","idBdLocale","schémaBd","métadonnée","lng","bdBd","idsMotsClefs","idMotClef","idsNuées","infoExistante","idNouvelle","idCompteAuteur","infos","numérateur","dénominateur","fFinaleBranche","règles","colsÉligibles","fOublierCols","fOublierRègles","erreurs","déjàVus","nCellulesÉrronnées","fOublierDonnées","fOublierErreurs","fOublierColonnes","accès","couverture","valide","score","oublierAccès","oublierCouverture","oublierValide","oublierLicence","fsOublier","nomsBd","idCourt","nomBd","fOublierNomsBd","patience","tableauXLSX","formatDoc","dossier","inclureFichiersSFIP","bookType","fichierDoc","writeXLSX","fichiersDeSFIP","writeFile","document","idSousBd","fOublierTableaux","varsÀColonnes","donnéesCatégorie","règleDeLaVariable","colonne","typeRègle","règleTypeBornes","fComp","fOp","typeBornes","manquantes","donnéesCol","borne","règleTypeCatégorique","élément1","élément2","clefs1","clefs2","idBdTableau","bdTableau","idBdDonnées","idBdColonnes","idBdRègles","fOublierNoms","idTableauRéf","différences","cRéf","cCorresp","cTableau","fOublierColonnesTableau","fOublierColonnesRéf","bdColonnes","élémentCol","nouvelÉlément","clefsSelonVariables","colonnes","donnéesFinales","idVar","fSuivreColonnes","oublierColonnes","fSuivreDonnées","oublierDonnées","extraireTraduction","adresseBdTrads","élémentFinal","formaterValeur","nomsTableau","nomsVariables","donnéesFormattées","idCol","nomVar","idCourtTableau","nomTableau","fOublierNomsTableaux","fOublierNomsVariables","bdDonnées","colsIndexe","obtIdIndex","valsIndex","précédent","clefsPermises","clefsFinales","idTableauBase","idTableau2","donnéesTableauBase","colsTableauBase","donnéesTableau2","existant","àAjouter","conversions","importerFichiers","cheminBaseFichiers","donnéesExistantes","idsOrbiteColsChaîne","fichiersDéjàAjoutés","ajouterFichierÀSFIP","chemin","contenuFichier","composantesUrl","cheminAbsolut","cacheRechercheIdOrbite","rechercherIdOrbiteChaîne","valLangue","créerIdOrbiteChaîne","bdNuée","fOublierBdTableau","idOrbite","convertir","conversion","opération","systèmeNumération","convertirValNumérique","valFinale","valNumérique","valObjet","valListe","donnéesTableau","donnéesConverties","catégories","branche","fSuivreBdColonnes","bdRègles","idRègle","dicRègles","fFinaleRèglesTableau","oublierRèglesTableau","oublierRèglesVariable","fFinaleSuivreBranche","règlesColonnes","nouvellesErreurs","fFinaleRègles","fFinaleDonnées","fOublierVarsÀColonnes","règlesTypeBornes","règlesBornesColonnes","règlesBornesVariables","règlesCatégoriquesDynamiques","idBdVariable","bdVariable","fOublierVariable","fOublierBase","bdNouvelle","unités","fOublierBdRègles","idUnité","règleModifiée","fSuivreCatégorie","règleCat","fOublierCatégorie","fSuivreRèglesPropres","rgls","fOublierRèglesPropres","rés","scores","qualité","oublierNoms","oublierDescr","descr","oublierUnités","oublierCatégorie","oublierRègles","baseSum","iteratee","average","variance","mean","covariance","mean_a","mean_b","diff_a","diff_b","ssim","K1","K2","C1","C2","C3","luminance","ux","uy","contrast","sy2","structure","sxy","patRev","minStart","textRev","rm","peq","hIn","pV","mV","hInIsNegative","xV","xH","pH","mH","hOut","maxErrors","bMax","emptyPeq","asciiPeq","charPeq","charCode","maxBlockScore","meilleure","correspTexte","possibilités","corresp","début","imageRef","mssim","fsRecherche","fSuivreRecherche","résultats","fSuivreFinale","fRecherche","de","fRechercher","meilleur","xPlusImportantQueY","ordreImportanceCroissante","iX","iY","xPlusLongQueY","idRecherché","_client","infosCompte","calculerScore","fSuivreNoms","fSuivreImage","fSuivreCourriel","fOublierImage","fOublierCourriel","courrielProfil","fRechercherNoms","fRechercherCourriel","fRechercherId","fRechercherTous","imageCompte","promesses","fÉcoutePubSub","évé","messageGs","promesse","fSuivreConnexions","intervale","idSFIP","sujet","msgBinaire","encrypté","msgSigné","maintenant","dispositifsMembre","encryption","msgEncrypté","clefPubliqueExpéditeur","msgPourDispositif","à","valeur","clefPublique","codeSecret","idDispositif","destinataire","contenuSalut","contenuMessage","effaçables","nEffacer","sigIdValide","sigClefPubliqueValide","bdCompte","bdCompteValide","fiables","bloquésPrivésChaîne","bloqués","privé","bloquésPubliques","listeBloqués","blqs","comptes","tous","relations","confiance","inscrireSuiviAuteurs","favoris","projets","profondeur","idCompteDébut","idCompteDébutFinal","dicRelations","dicOublierRelations","fermer","connectéPar","calcProfondeurCompte","rechercherP","déjàVues","connexions","relationsFinales","suivreRelationsImmédiates","fOublierRelationsImmédiates","fMiseÀJour","oublierRelationsImmédiates","àOublier","àSuivre","maRelation","profondeurCompte","rsPositives","coûtNégatif","dicComptes","fOublierComptesEnLigne","infoMembresEnLigne","fSuivreComptesRéseau","fOublierComptesRéseau","idCompteRéférence","idCompteRéférenceFinal","infoRecherchée","pairs","adresses","moi","fFinaleDispositifs","dispositifs","infoMembre","vuÀ","protocoles","idDispositifFinal","dispositif","nRésultatsDésirés","fConfiance","fQualité","fObjectif","fScore","résultatsParMembre","fsOublierRechercheMembres","DÉLAI_REBOURS","annuler","ajusterProfondeur","débuterReboursAjusterProfondeur","délai","pireScoreInclus","parProfondeur","nScoresInclusParProfondeur","dernierTrois","dernierQuatre","nouvelleProfondeur","résultatsOrdonnés","listeRésultats","suivreRésultatsMembre","membre","objectif","résultatFinalBranche","fSuivreObjectif","fOublierObjectif","fOublierConfiance","fOublierQualité","fOublierRechercheMembre","oublierRésultatsMembre","compte","fSuivreComptes","clefsObsolètes","avant","fOublierSuivreComptes","nouveauN","nDésirésAvant","idItem","auteurs","idsAuteurs","confiances","idAuteur","fRechercheLesMiens","toutLeRéseau","fObjectifFinal","fRechercheFinale","fOublierPropres","propres","fOublierFavoris","fSuivreQualité","fFinaleSuivreQualité","idObjet","objetsMembre","fOublierBranche","idProjet","fListeObjets","favorisDIntérêt","infosMembres","fav","connexionsMembres","idsMembres","fOublierConnexionsMembres","fOublierConnexionsDispositifs","fSuivreFavoris","fListeFavoris","fBrancheFavoris","fSuivreDispositifsMembre","fOublierDispositifsMembre","nBds","fListeListe","fSuivreRacineListe","fBrancheListe","fSuivreDonnéesTableauFinale","donnéesMembre","asymmetric","secretKey","clefPubliqueDestinataire","clefs","randomKey","précédentes","nouvelles","épinglerBd","épinglerFichiers","favorisFinaux","dispositifsFichiers","bdEstÉpinglée","fichiersSontÉpinglés","idBdProjet","bdProjet","fOublierProjet","idBdBds","idNouveauProjet","fOublierDescr","fOublierMotsClefs","bdBds","fOublierBds","motsClefsFinaux","fFinalePropres","mots","fOublierMotsClefsPropres","fOublierMotsClefsBds","fSuivreBds","fSuiviListe","scoresBds","fSuiviBranche","nomsProjet","nomProjet","fOublierNomsProjet","donnéesBd","docs","bdMotClef","fOublierMotClef","idBdDescriptions","idNouveauMotClef","bdDescriptions","fOublierDescriptions","nuéeParent","autorisation","idBdNuée","fOublierNuée","autorisationFinale","ajouterÀMesNuées","idNouvelleNuée","fOublierBdMétadonnées","fParents","hériter","philosophie","idBdAutorisation","idBdMembres","idAutorisation","dicMembres","fFinaleTableaux","lNoms","idNuéeParent","idColonneFinale","stricte","différencesFinales","tableauNuée","fOublierTableauxBd","fOublierTableauxNuée","fFinaleNuée","fOublierDifférencesBd","fOublierDifférencesTableaux","diffs","fSuiviRésultats","annulé","ascendance","suivreParent","fOublierParent","vérifierAutorisation","toujoursInclureLesMiennes","philoAutorisation","idMonCompte","bds_","invités","exclus","fOublierSuivrePhilo","philo","fOublierSuivreMembres","héritage","finaux","fOublierAscendance","finales","fOublierDescendance","fOublierDirectes","empreintes","empreinte","ignorerErreursFormatBd","ignorerErreursFormatTableau","ignorerErreursDonnéesTableau","licencesPermises","donnéesTableaux","conformes","fFinaleBdConforme","conforme","fOublierLicence","fOublierErreursFormatBd","erreursÉléments","auteur","donnéesMembres","fOublierSuivreTableau","fFinaleTableau","fOublierDonnnées","fOublierAuteursBd","nomsNuée","nomNuée","fOublierNomsNuée","idTableauNuée","obtRèglesTableau","générerCols","obligatoire","nomsVariable","fRechercherDescr","nomMotClef","desrcMotClef","descrBd","descrs","nomVariable","descProjet","fRechercherBd","fRechercherVariable","fRechercherMotClef","descrNuée","utils.rechercherSelonId","variable.rechercherVariablesSelonNom","descrVariable","variable.rechercherVariablesSelonDescr","variable.rechercherVariablesSelonTexte","motClef.rechercherMotsClefsSelonNom","descrMotClef","motClef.rechercherMotsClefsSelonDescr","motClef.rechercherMotsClefsSelonTexte","bd.rechercherBdsSelonNom","bd.rechercherBdsSelonDescr","bd.rechercherBdsSelonIdMotClef","bd.rechercherBdsSelonIdVariable","bd.rechercherBdsSelonNomMotClef","bd.rechercherBdsSelonNomVariable","bd.rechercherBdsSelonMotClef","bd.rechercherBdsSelonVariable","bd.rechercherBdsSelonTexte","profil.rechercherProfilsSelonNom","profil.rechercherProfilsSelonImage","profil.rechercherProfilsSelonActivité","profil.rechercherProfilsSelonCourriel","profil.rechercherProfilsSelonTexte","projet.rechercherProjetsSelonNom","descrProjet","projet.rechercherProjetsSelonDescr","projet.rechercherProjetsSelonIdVariable","projet.rechercherProjetsSelonNomVariable","projet.rechercherProjetsSelonVariable","projet.rechercherProjetsSelonIdMotClef","projet.rechercherProjetsSelonNomMotClef","projet.rechercherProjetsSelonMotClef","projet.rechercherProjetsSelonIdBd","projet.rechercherProjetsSelonBd","projet.rechercherProjetsSelonTexte","nuée.rechercherNuéesSelonNom","nuée.rechercherNuéesSelonDescr","nuée.rechercherNuéesSelonIdMotClef","nuée.rechercherNuéesSelonIdVariable","nuée.rechercherNuéesSelonNomMotClef","nuée.rechercherNuéesSelonNomVariable","nuée.rechercherNuéesSelonMotClef","nuée.rechercherNuéesSelonVariable","nuée.rechercherNuéesSelonTexte","feuille","colsInversées","avantDernière","dernièreClef","conteneurBranches","clefsSaufLaDernière","_base","_élémentsFinaux","iNull","clefsAvant","clefsAprès","copieBase","clefsRacine","clefsÉléments","racineDonnéesJSON","élémentJSON","XLSX.set_fs","XLSX.stream","fréq","spéc","ajouterÉtiquetteÀNomFichier","composantes","donnéesExp","donnéesNuée","correspondants","nomsCorrespondent","réf","enTrop","temps","dateModifFichier","résoudreAdresse","adresse","fichierRésolu","idSpéc","fÉtat","fAuto","clefStockageDernièreFois","tempsInterval","idDernièreRequêteOpération","requêteDernièreModifImportée","requêtesDéjàExécutées","fAutoAvecÉtats","requête","nouvelÉtat","fLancer","dicFOublierIntervale","fAutoAvecÉtatsRécursif","dernièreFoisChaîne","dernièreFois","tempsDepuisDernièreFois","chokidar","adresseFichier","adresseFichierRésolue","écouteur","dernièreModif","dernièreImportation","monIdDispositif","autos","automatisationsDavant","ceDispositif","typeSource","formatDonnées","donnéesJson","optionsXLSX","docXLSX","XLSX.readFile","typeObjet","fréquence","nRésultatsDésirésNuée","copies","idAuto","idDossier","autosFinales","autoFinale","adresseRésolue","dossierRésolu","étatsAuto","dossierConstellation","dossierStockageLocal","stockageLocal","isPrime","sqrtN","factor","getFractionalBits","nPrime","gamma0x","gamma1x","ErrClass","errCode","notFoundError","Errors.notFoundError","clean","list1","list2","sorter","puts","dels","onAbort","metrics","priority","wantType","sendDontHave","subsystem","createLogger","valueA","valueB","varint.default","varint.encode","Message","Wantlist","WantType","__WantTypeValues","Entry","BlockPresenceType","__BlockPresenceTypeValues","BlockPresence","hashLoader","isFull","blockPresence","multicodec","hashAlg","full","cidStr","bpType","stats","newIdx","pivot","DefaultTaskMerger","taskMerger","peerTasks","targetMinBytes","pendingSize","existingTask","tasksWithTopic","activeTask","pendingTasks","haveBlock","isWantBlock","newTask","taskData","existingData","network","blockCids","blockTasks","blk","peerIdStr","ledger","want","entrySize","cancels","wants","blocksMap","lengthLength","lengthBuf","encodeLength","maybeYield","ReadMode","dataLength","lengthDecoder","maxLengthLength","maxDataLength","InvalidMessageLengthError","InvalidDataLengthError","dataLengthLength","InvalidDataLengthLengthError","UnexpectedEOFError","varByteSource","DEFAULT_MAX_INBOUND_STREAMS","DEFAULT_MAX_OUTBOUND_STREAMS","bitswap","topology","conn","abortListener","lp.decode","provider","CONSTANTS.maxProvidersPerRequest","peer","stringId","serialized","lp.encode","CONSTANTS.maxListeners","blockEvt","unwantEvt","onUnwant","onBlock","timespan","ma","previousTime","incr","initialCounters","interval","MovingAverage","urgency","latestTime","timeDiff","timeDiffMS","hz","movingAverages","movingAverageInterval","movingAverage","peerStat","peerStats","wait","callFirst","debouncedFn","debounceWrapper","callNow","selfPeerId","otherPeerId","force","CONSTANTS.kMaxPriority","mq","fullwantlist","Network","wasWanted","fetchFromNetwork","promptedNetwork","loadOrFetchFromNetwork","cidsArray","hashers","codecOrName","validateFn","#attempts","#errors","#invalidBlocks","#successes","gwUrl","gatewayOrUrl","sortedGateways","aggregateErrors","gateway","missingBlocks","notifyEach","providers","blocksWereValidated","eventName","removeListeners","eventListener","errorEventListener","recipient","onQueueJobComplete","onQueueError","onQueueIdle","onSignalAbort","datastore","dagWalkers","dagWalker","pinKey","childCid","#walkDag","#updatePinnedBlock","pinnedBlock","withPinnedBlock","blockKey","masterEvent","requestType","releaseType","grantType","requestEvent","releaseEventListener","releaseEvent","responseEvent","masterQueue","readQueue","localReadQueue","readPromise","release","pins","releaseLock","blockBrokers","networkedStorage","baseDecoder","LIBP2P_KEY_CODE","MARSHALLED_ED225519_PUBLIC_KEY_LENGTH","MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH","peerIdFromString","PeerIdImpl","RSAPeerIdImpl","Ed25519PeerIdImpl","Secp256k1PeerIdImpl","peerIdFromBytes","peerIdFromCID","peerIdFromKeys","minute","s64","invalidEncoding","f32","f8b","writeFloat_f32_cpy","writeFloat_f32_rev","readFloat_f32_cpy","readFloat_f32_rev","writeFloat_ieee754","writeUint","readFloat_ieee754","readUint","f64","writeDouble_f64_cpy","writeDouble_f64_rev","readDouble_f64_cpy","readDouble_f64_rev","writeDouble_ieee754","off0","off1","readDouble_ieee754","utf8","SIZE","zeroHash","charCodeAt","sizeOrArray","ifNotSet","newError","CustomError","fieldNames","fieldMap","Writer","BufferWriter","write_uint32","write_int32","write_sint32","write_uint64","write_sint64","write_bool","write_fixed32","write_fixed64","write_float","write_double","writeBytes_set","writeBytes_for","write_bytes","write_string","fork","ldelim","BufferWriter_","write_bytes_buffer","write_string_buffer","Reader","BufferReader","create_typed_array","create_array","read_uint32_setup","read_int32","read_sint32","read_bool","read_fixed32","read_sfixed32","read_float","read_double","read_bytes","nativeBuffer","read_string","BufferReader_","read_string_buffer","rpcImpl","requestDelimited","responseDelimited","rpcCall","requestCtor","responseCtor","endedByRPC","rpc","protobuf","configure","$protobuf","$Reader","$Writer","$util","$root","RPC","$oneOfFields","SubOpts","ControlMessage","ControlIHave","ControlIWant","ControlGraft","ControlPrune","PeerInfo","gossip","historyCapacity","msgIdToStrFn","messageId","validated","msgIdStr","msgId","fromPeerIdStr","topics","msgIdsByTopic","msgIds","originatingPeers","cacheEntry","SignaturePolicy","PublishConfigType","RejectReason","ValidateError","MessageStatus","acceptance","MessageSource","InclusionReason","ChurnReason","ScorePenalty","IHaveIgnoreReason","ScoreThreshold","topicStrToLabel","topicStr","messageRecord","firstSeenTimestampMs","penalty","ihave","idonthave","iwantByTopic","iwantDonthave","iwant","tosendCount","tosendGroupCount","deliveryDelayMs","isLateDelivery","rpcBytes","graft","prune","scoreThresholds","graylist","publish","mesh","wsTopic","scoreByPeer","peersPerTopicLabel","topicLabel","peersInMesh","meshScores","topicScoreParams","superSet","ineed","subset","getDefault","pstats","peerIPs","tstats","topicParams","topicScore","deficit","p3","p3b","p4","p5","peersInIP","numPeersInIP","surplus","p6","excess","p7","peekAt","peekFront","peekBack","unshift","pop","removeOne","removed","del_count","splice","arg_len","arguments_index","leng","isEmpty","_fromArray","capacity","_copyArray","fullCopy","_growArray","newList","_shrinkArray","_nextPowerOf2","log2","nextPow2","DeliveryRecordStatus","Denque","drec","componentLogger","decayToZero","tparams","cacheUntil","penaltyLabel","peersWithIP","validatedTime","ipsToRemove","ipToRemove","peerSet","topicStats","byTopic","topicScores","p1w","p2w","p3w","p3bw","p4w","capF","p5w","p6w","p7w","peerIdStrs","swPeer","swPeerTopic","swTopic","rawStream","errCallback","gossipsubIWantFollowupMs","ix","expireByPeer","brokenPromises","expire","isDuplicate","maxMs","requestMs","_password","_salt","asyncTick","assertNumber","PRF","PRFSalt","prfW","ti","Ti","ui","aView","bView","buffers","uintArray","encodedString","arrayBuffer","binary","formatted","stringLength","resultView","hexString","padCount","inputBuffer","inputBase","internalReserved","biggest","retBuf","retView","views","outputLength","prevLength","condition1","condition2","bigIntBuffer","bigIntView","bigInt","smallIntBuffer","smallIntView","modValue","smallInt","tempBuf","tempView","inputBuffer1","inputBuffer2","view1","view2","inputNumber","fullLength","baseBlock","inputOffset","EMPTY_BUFFER","BaseClass","pvtsutils.BufferSourceConverter","endLength","sizeOnly","pvtsutils.Convert","warnings","valueBeforeDecode","idBlock","firstOctet","encodedBuf","pvutils.utilToBase","encodedView","curView","inputView","intBuffer","tagNumberMask","intTagNumberBuffer","tagNumberBufferMaxLength","tempBufferView","pvutils.utilFromBase","lenBlock","lenOffset","lengthBufferView","optional","primitiveSchema","parameters","valueBlockType","resultOffset","_writer","idBlockBuf","valueBlockBuf","lenBlockBuf","thisRaw","otherRaw","pvutils.isEqualBuffer","stringValueBlockType","isHexOnly","inputObject","newType","newObject","incomingOffset","returnObject","newASN1Type","indefiniteLength","isIndefiniteForm","currentOffset","blockName","octet","pvutils.utilDecodeTC","Boolean","isConstructed","currentBlockName","unusedBits","valueBlock","valueHex","bitsStr","firstView","secondView","firstViewCopy","firstViewCopyLength","secondViewCopy","secondViewCopyLength","pvutils.utilConcatView","pvutils.utilEncodeTC","updatedView","firstBit","bitNumber","currentByte","asn1View","byteNumber","secondInt","integer","valueDec","isFirstSid","sidValue","sidBlock","retBuffers","valueBuf","pos1","pos2","parsedSID","sidStr","inputString","valueView","strLength","valueHexView","codeBuf","codeView","valueDate","inputDate","parserArray","outputArray","pvutils.padNumber","timeString","dateTimeString","fractionPart","hourDifference","minuteDifference","differencePosition","differenceString","fractionPointPosition","fractionPartCheck","fractionResult","tempDate","asn1js.fromBER","asn1js.Sequence","asn1js.Integer","asn1js.ObjectIdentifier","asn1js.Null","asn1js.BitString","keyBuf","asn1js.OctetString","keyArr","encryptionKey","pbkdf2Params","finalWrapperBuf","finalWrapperArr","decryptedResult","keyDerivationFunc","encryptionScheme","encryptionSchemeName","crypto.utils.exportToPem","unmarshalPublicKey","keysPBM.PublicKey","dek","pbkdf2Sync","publishConfig","originalData","transformedData","rpcMsg","signaturePolicy","fromPeerId","rpcMsgPreSign","randInt","seqno","seqnoBytes","maxDigits","allowZeroPrefix","digitCount","leadingChar","hasLeadingZero","maxValue","digit","readGroups","ipv4","headSize","headIp4","tailSize","sections","isv4","v4Buffer","argv","resolvable","ipString","ip.isIP","ip.toBytes","ipBuff","ip.toString","port","mh","mbstr","mb","portBuf","addrBytes","portBytes","Protocol","multiaddr","tuple","GossipStatusCode","constants.GossipsubIDv11","constants.GossipsubIDv10","constants.GossipsubD","constants.GossipsubDlo","constants.GossipsubDhi","constants.GossipsubDscore","constants.GossipsubDout","constants.GossipsubDlazy","constants.GossipsubHeartbeatInterval","constants.GossipsubFanoutTTL","constants.GossipsubHistoryLength","constants.GossipsubHistoryGossip","constants.GossipsubSeenTTL","constants.GossipsubIWantFollowupTime","constants.GossipsubPrunePeers","constants.GossipsubPruneBackoff","constants.GossipsubUnsubscribeBackoff","constants.GossipsubGraftFloodThreshold","constants.GossipsubOpportunisticGraftPeers","constants.GossipsubOpportunisticGraftTicks","constants.GossipsubDirectConnectTicks","constants.FloodsubID","maxMeshMessageDeliveriesWindowMs","topicParam","constants.DEFAULT_METRIC_MESH_MESSAGE_DELIVERIES_WINDOWS","registrar","registrarTopologyIds","heartbeatTimeout","constants.GossipsubHeartbeatInitialDelay","constants.GossipsubDirectConnectInitialDelay","closePromises","outboundStream","inboundStream","priorInboundStream","currentIP","peersInTopic","subOpt","subscribe","handleReceivedMessagePromise","topicSet","validationResult","validationCode","propagationSource","fastMsgIdStr","msgIdCached","topicValidator","constants.ERR_TOPIC_VALIDATOR_IGNORE","constants.ERR_TOPIC_VALIDATOR_REJECT","toPeer","controlMsg","sent","iwantMessageIds","peerhave","constants.GossipsubMaxIHaveMessages","iasked","constants.GossipsubMaxIHaveLength","topicID","messageIDs","iask","iwantList","constants.GossipsubGossipRetransmission","doPX","floodCutoff","onUnsubscribe","backoff","intervalMs","constants.GossipsubPruneBackoffTicks","toconnect","wasSubscribed","toAdd","fanoutPeers","fanoutCount","meshPeers","excludePeers","tosend","newFanoutPeers","rawMsg","startMs","ignoreDuplicatePublishError","willSendToSelf","allowPublishToZeroPeers","batchPublish","durationMs","prefixedData","rejectReason","ctrl","outRpc","tograft","toprune","noPX","pruning","peersToGossipByTopic","gossipIDsByTopic","peersToGossip","candidateToGossip","constants.GossipsubGossipFactor","peerMessageIDs","control","controlIHaveMsgs","backoffMs","xid","peerInfo","msToNextHeartbeat","Dlo","Dhi","Dscore","Dout","fanoutTTL","getScore","candidateMeshPeers","shuffledPeers","peerStreams","prunePeer","graftPeer","peersArray","outbound","rotate","peersList","medianIndex","medianScore","newMeshPeers","lastpb","topicPeers","candidateFanoutPeers","backoffSize","expiredMs","nextResult","readBuffer","abortPromise","originalStream","decodeLength","lengthBuffer","piped","NOISE_MSG_MAX_LENGTH_BYTES","NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG","DUMP_SESSION_KEYS","u32","wrapCipher","bool","u8to16","t6","t7","hibit","r0","r3","r4","r5","r6","r7","r8","r9","h0","h5","h7","h8","h9","d0","d3","d4","d5","d6","d7","d8","d9","aexists","aoutput","opos","wrapConstructorWithKey","poly1305","Poly1305","sigma16","sigma32","sigma16_32","sigma32_32","isAligned32","BLOCK_LEN","BLOCK_LEN32","MAX_COUNTER","U32_EMPTY","runCipher","sigma","rounds","b32","isAligned","d32","o32","pos32","posj","allowShortKeys","extendNonceFn","counterLength","counterRight","anumber","abool","toClean","k32","nonceNcLen","n32","chachaCore","y00","y01","y02","y03","y04","y05","y06","y07","y08","y09","y10","y11","y12","y13","y14","y15","x00","x01","x02","x03","x04","x05","x06","x07","x08","x09","x10","x11","x12","x13","x14","x15","chacha20","ZEROS16","updatePadded","ZEROS32","computeTag","AAD","authKey","_poly1305_aead","xorStream","plength","clength","passedTag","chacha20poly1305","ikm","prk","okm","HMAC","HMACTmp","pureJsCrypto","ad","defaultCrypto","uint16BEEncode","uint8ArrayAllocUnsafe","uint16BEDecode","uint8ArrayAlloc","CHACHA_TAG_LENGTH","encryptStream","handshake","decryptStream","UnexpectedPeerError","InvalidCryptoExchangeError","NoiseExtensions","NoiseHandshakePayload","localPeer","staticPublicKey","extensions","signedPayload","createHandshakePayload","libp2pPublicKey","noiseStaticKey","payloadPeerId","generatedPayload","pk","MIN_NONCE","MAX_NONCE","ERR_MAX_NONCE","emptyKey","encryptedMessage","derivedU8","tempK","Nonce","protocolName","protocolNameBytes","tempk1","tempk2","cs1","cs2","ne","prologue","psk","hs","spk","messageBuffer","valid1","valid2","initiator","session","ephemeral","resultingBuffer","resultingPlaintext","resultingValid","logLocalStaticKeys","keyLogger","logLocalEphemeralKeys","logRemoteStaticKey","logRemoteEphemeralKey","logCipherState","isInitiator","staticKeypair","receivedMessageBuffer","decodedPayload","registerMetrics","staticNoiseKey","prologueBytes","wrappedConnection","user","noise","Noise","FrameType","Flag","GoAwayCode","readStatus","StreamState","toSend","_reject","readData","rtt","CLOSE_TIMEOUT","shutDownListener","streamID","pingId","fmtLong","fmtShort","plural","formatArgs","load","useColors","localstorage","tuples","stringTuples","stringAddr","tup","#string","#tuples","#stringTuples","#path","transport","zone","tcp","udp","ip4","ip6","dns6","ip6zone","addrString","resolvableProto","protos","MultiaddrClass","ERR_IPNS_EXPIRED_RECORD","ERR_UNRECOGNIZED_VALIDITY","ERR_SIGNATURE_VERIFICATION","ERR_UNRECOGNIZED_FORMAT","ERR_UNDEFINED_PARAMETER","ERR_INVALID_RECORD_DATA","ERR_INVALID_VALUE","ERR_INVALID_EMBEDDED_KEY","ERR_RECORD_TOO_LARGE","IpnsEntry","ValidityType","__ValidityTypeValues","IPNS_PREFIX","LIBP2P_CID_CODEC","parseRFC3339","rfc3339Matcher","month","millisecond","extractPublicKey","ERRORS.ERR_UNDEFINED_PARAMETER","ERRORS.ERR_INVALID_EMBEDDED_KEY","ipnsRecordDataForV2Sig","entryData","ERRORS.ERR_SIGNATURE_VERIFICATION","parseCborData","validity","ERRORS.ERR_UNRECOGNIZED_FORMAT","validateCborDataMatchesPbData","peerIdFromRoutingKey","ERRORS.ERR_UNRECOGNIZED_VALIDITY","ERRORS.ERR_INVALID_VALUE","ERRORS.ERR_INVALID_RECORD_DATA","MAX_RECORD_SIZE","dataForSignature","ERRORS.ERR_IPNS_EXPIRED_RECORD","ipnsValidator","marshalledData","ERRORS.ERR_RECORD_TOO_LARGE","receivedRecord","__classPrivateFieldGet","_PQueue_doesIntervalAllowAnother_get","_PQueue_doesConcurrentAllowAnother_get","_PQueue_next","_PQueue_onResumeInterval","_PQueue_isIntervalPaused_get","_PQueue_tryToStartAnother","_PQueue_initializeIntervalIfNeeded","_PQueue_onInterval","_PQueue_processQueue","_PQueue_throwOnAbort","_PQueue_onEvent","defaultValues","onStart","#handleProviderRecords","ndjson","toIt","#handlePeerRecords","Netmask","chr0","chrA","chra","ip2long","long2ip","long","net","lastLong","ipRange","ipAddr","octet34","octet12","PROTOCOL_PREFIX","PROTOCOL_NAME","PROTOCOL_VERSION","TIMEOUT","MAX_INBOUND_STREAMS","MAX_OUTBOUND_STREAMS","MessageType","__MessageTypeValues","ResponseStatus","__ResponseStatusValues","Dial","DialResponse","ourHosts","dialRequest","multiaddrs","isFromSameHost","isPublicIp","isNotOurHost","isSupportedTransport","lastMultiaddr","protocols","addressManager","randomCid","networkSegments","verifyAddress","dialResponse","addrStr","DNS","IP","_WebSockets","WebSockets","_WebSocketsSecure","_WebRTCDirect","WebRTCDirect","_WebTransport","WebTransport","_P2P","_Circuit","Circuit","partialMatch","pnames","peerData","Envelope","envelopeData","Protobuf","payloadType","signData","envelope","domainUint8Array","uint8arraysFromString","domainLength","payloadTypeLength","payloadLength","arrayEquals","sort","PeerRecord","AddressInfo","peerRecord","seqNumber","MAX_CONNECTIONS","HopMessage","__TypeValues","Peer","StopMessage","Reservation","Limit","Status","__StatusValues","ReservationVoucher","expireTimeSeconds","expireTimeMillis","currentTime","bitfield","itemcount","errorRate","itemCount","seeds","fingerprintSize","fnv","fingerprint","uint8Array","fnvPrime","utf8Buffer","fnv1a","fnv1aHash","swapped","inJ","inK","maxItems","bucketSize","filterSize","cuckoo","curSize","remoteAddr","closedRead","closedWrite","streamClose","streamAbort","streamSink","maConn","#removeRelayPeer","relayAddr","relayConn","reservation","had","createListener","#removeRelay","existingReservation","#createReservation","expiration","timeoutDuration","hopstr","hasRelayAddress","relayAddressBytes","errMsg","discoverRelays","destinationAddr","relayId","destinationId","relayPeer","destinationPeer","disconnectOnFailure","relayConnection","pbstr","mafmt.Circuit","remotePeerId","localAddr","defaultClear","settle","rejectFunction","signalListener","delayPromise","HolePunch","certhash","matchers","exactMatch","transportManager","relayedConnection","connectTimer","connect","publicAddresses","IDENTIFY_PROTOCOL_VERSION","MULTICODEC_IDENTIFY_PROTOCOL_NAME","MULTICODEC_IDENTIFY_PROTOCOL_VERSION","Identify","MAX_IDENTIFY_MESSAGE_SIZE","connections","listenAddresses","signedPeerRecord","supportedProtocols","agentVersion","protocolVersion","pushes","IdentifyMessage","observedAddr","cleanObservedAddr","getCleanMultiaddr","#consumeIdentifyMessage","peerRecordEnvelope","existingPeer","storedEnvelope","storedRecord","identify","IdentifyClass","PROTOCOL","Record","seconds","nanoseconds","timeReceived","utils.toRFC3339","recvtime","utils.parseRFC3339","ConnectionType","__ConnectionTypeValues","selectors","keyhash","publicKeyHash","isPrivate","peerRouting","queryManager","logPrefix","dsKey","best","fixupRec","sentCorrection","putEvent","localRec","getValueQuery","routingTable","maybeNotifyPeer","sendEvent","toFind","provs","findProvidersQuery","newProviders","sendTimeout","timeoutSignal","originDhtKey","pd","dhtKey","kadId","uint8ArrayXor","uint8ArrayXorCompare","dhtKeyXor","furthestDistance","peerIds","pkKey","utils.keyForPublicKey","recPeer","keys.marshalPublicKey","foundPeer","findPeerQuery","utils.convertBuffer","tablePeers","getCloserPeersQuery","closerThan","_cache","cacheSize","cleanupInterval","provideValidity","Queue","deleteCount","batch","expired","startingPeer","ourPeerId","pathIndex","numPaths","queryFuncTimeout","peersSeen","connectionManager","queryPeer","peerKadId","peerXor","compoundSignal","closerPeer","closerPeerKadId","closerPeerXor","disjointPaths","queryFunc","stopQueryTimer","queryEarlyExitController","startTime","queryFinished","peersToQuery","removeListener","returnValue","onItem","arguments_","rejectHandler","rejectionEvent","arrayPromise","queryTimeout","array1","array2","countBucket","iterate","firstId","secondId","findBucket","bitIndex","kBuck","utils.convertPeerId","peerStorePeers","kClosest","updatePeerTags","utils.debounce","newClosest","addedPeers","removedPeers","oldContacts","newContact","responded","oldContact","pingJob","refreshInterval","refreshQueryTimeout","refreshCpls","lastRefresh","lastCpl","cpl","maxCommonPrefix","dates","targetCommonPrefixLength","randomData","randomUint16","localKadId","randomPrefix","toggledLocalPrefix","targetPrefix","keyPrefix","keyBuffer","keyView","distance","leadingZeros","closer","providerPeers","closerPeers","peerAfterFilter","idFromKey","rawRecord","deserializedRecord","recordKey","peerInfoMapper","desMessage","dht","kBucketSize","clientMode","querySelfInterval","pingTimeout","pingConcurrency","maxInboundStreams","maxOutboundStreams","providersInit","loggingPrefix","recordValidators","recordSelectors","initialQuerySelfHasRun","KADDHTPeerRouting","KADDHTContentRouting","hasPublicAddress","EventTypes","KadDHTClass","isHighSurrogate","isLowSurrogate","truncate","charLength","curByteLength","getByteLength","prevCodePoint","sanitized","sanitize","dsname","keyInfo","kid","oldName","newName","oldDsname","newDsname","oldInfoName","newInfoName","oldPass","newPass","oldDek","newDek","keyAsPEM","pointsToConsume","rlKey","secDuration","delayMs","msDuration","initPoints","durationSec","msBeforeExpires","MessageTypes","maxMessageSize","maxUnprocessedMessageQueueSize","createStream","send","maxMsgSize","maxBufferSize","PING_LENGTH","PingServiceClass","streamLabel","pack","BrowserInfo","NodeInfo","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","matched","uaMatch","matchedRule","versionParts","searchBotMatch","isNode","drainTimeout","drained","closeListener","initialState","__FlagValues","messageLength","flagField","messageFieldIdType","messageFieldLengthLength","originalOnEnd","_evt","lengthPrefixed.decode","checkBuffer","msgbuf","sendbuf","lengthPrefixed.encode","prefixedBuf","bufferedStream","#onStreamEnd","pc","connectedPromise","candidateInit","rtcConfiguration","dataChannel","baseAddr","shouldCloseConnection","messageStream","peerConnection","muxerFactory","offerSdp","answerMessage","answerSdp","pbOffer","offer","answer","remoteAddress","webRTCConn","destinationIdString","lastProtoInRemote","tempK1","tempK2","cipherLength","encS","consumed","identitySig","payloadBytes","remoteStaticKey","remoteIdentityKey","remoteIdentityKeyBytes","signaturePayload","receivedPayload","localCert","localDescription","sdp","digest.decode","mhdecoded","ufrag","ipVersion","CERTFP","rawConn","remotePeerString","theirPeerId","p.peerIdFromString","remoteCerthash","sdp.decodeCerthash","sdp.certhash","certificate","sdp.toSupportedHashFunction","dataChannelOpenPromise","handshakeDataChannel","handshakeTimeout","mungedOfferSdp","sdp.munge","sdp.fromMultiAddr","myPeerId","fingerprintsPrologue","connectionEncrypter","wrappedChannel","wrappedDuplex","eventListeningName","hashCode","localFingerprint","sdp.getLocalFingerprint","localFpString","localFpArray","uint8arrayFromString","local","remote","sdp.mbdecoder","sniProtoCode","headProtoCode","headProtoVal","restMa","interpreter","restVal","tailProto","maHasTLS","sni","baseVal","decodedValue","socket","handleOpen","handleErr","resolution","rejection","listen","highWaterMark","lowWaterMark","EventIterator","evOptions","connected","isConnected","connError","cleanUp","cont","onOpen","onMessage","connectedSource","remotePort","wsUrl","httpProto","wsProto","WebSocket","testMa","mafmt.WebSockets","mafmt.WebSocketsSecure","metricPrefix","cOpts","errorPromise","rawSocket","toUri","filters.wss","filters.all","bidiStream","streamId","activeStreams","onStreamEnd","streamIDCounter","wtStream","muxer","maybeSubset","otherByteArray","certhashes","cleanUpWTSession","ready","authenticated","metric","remoteExtensions","WebTransportMatcher","aSeq","bSeq","recordAValidityDate","recordBValidityDate","libp2pInfo.name","libp2pInfo.version","Peer$metadataEntry","Peer$tagsEntry","Address","PeerPB","isCertified","b32key","addresses","addressMap","maStr","existingAddr","uint8arrayEquals","metadataEntries","tagsEntries","mergedTags","expiry","base32Str","mortice","existingBuf","#findExistingPeer","peerPb","#saveIfDifferent","peerCache","#emitIfUpdated","expectedPeer","later","observedPeerIdStr","announce","startingConfidence","addrSet","startable","service","serviceCapabilities","gater","isAPrivate","isBPrivate","isACircuit","isBCircuit","publicResult","relayResult","DEFAULT_TYPES","question","httpQueue","fqdn","searchParams","maxSize","hashlru","foundAllAnswers","answers","cachedAnswers","tld","DNSClass","dnsaddrResolver","recursionLimit","hostname","resultingOptions","maPeerIdStr","maPeerId","numConnections","dialQueue","peerValues","peersThatHaveNotFailed","peerAValue","peerBValue","lastDialFailure","lastDialFailureTimestamp","streamProtocols","closableProtocols","sortedConnections","toPrune","connectionALifespan","connectionBLifespan","peerIdOrMultiaddr","existingConnection","existingDial","addrsToDial","dialed","userSignal","resolvedAddresses","peerIdMultiaddr","filteredAddrs","addrPeerId","dedupedAddrs","dedupedMultiaddrs","gatedAdrs","sortedGatedAddrs","minConnections","conns","allStreams","counts","keepAlivePeers","connectionList","storedConns","isNewPeer","storedConn","peerConnections","trackedConnection","statusMap","topologies","couldNotListen","supportedAddrs","multistream.writeAll","multistream.readString","multistream.write","originalSink","originalSource","negotiated","negotiating","doneNegotiating","sentProtocol","sendingProtocol","doneSendingProtocol","readProtocol","readingProtocol","doneReadingProtocol","sink","sentData","protocolString","negotiate","doSendProtocol","doReadProtocol","originalCloseRead","originalCloseWrite","originalClose","newStream","getStreams","streamCount","encrypter","connectionType","connectionGater","encryptedConn","upgradedConn","cryptoProtocol","protectedConn","protector","idStr","multiplexed","transient","muxedStream","mss.handle","incomingLimit","mss.select","outgoingLimit","_timeline","errConnectionNotMultiplexed","muxers","originalDispatch","internalResult","externalResult","pkg.name","pkg.version","peerRouters","contentRouters","#onDiscoveryPeer","createService","peerKey","createLibp2p","selfKey","#encode","#decode","#query","iteratorOpts","nodeInfo","peerStore","listenOnly","encodedPeer","PBPeer","mdns","libp2pWebRTC","configPlateforme","configLibp2p","optionsHelia","xCommeOrbite","envPaths","__vite_default__","chemins","optionsAccèsRacine","nomTypeContrôleurConstellation","fichierVerrou","modifiéÀ","verrifierSiVieux","messageJSON","sfipFinale","orbiteFinale","initOrbite","initSFIP","typeAccès","contrôleurConstellation","idBdNomsDispositifs","bdNomsDispositifs","idCompteFinal","nomsDispositif","empreinteVérification","dateCodeSecret","autorisé","oublierPermission","vérifierSiAutorisé","identité","idBdDicInit","bdDicInit","fOublierInit","idNouvelleBdDic","nouvelleBdDic","bd2","fOublier2","contenuBd2","valBdBase","contenuBdBase","valBd2","valExistant","combiné","lancerSuivi","idSuivi","fSuivreBdRacine","valeurs","renvoyerValeur","typeFinal","schémaObjet","obtTêteBd","calculerEmpreinte","têtes","tête","_fChangerProfondeur","fOublierL","fChangerL","bdsRecherchées","él","parCompte","clefClient","racine","schémaBdRacine","clefRequête","idBdPrécédente","générerContrôleurConstellation","mesRôles","rôlePlusPuissant","fOublierSuivreAccès","listeAccès","dicBds","enleverRequêtesDe","clefsÀExclure","_suivreBdsRécursives","extraireÉléments","obsolètes","fOublierSuiviBd","indexedDbDatabases","ajouterDossierÀZip","fluxFichier","sauvegarderBdIndexeÀZip","dossierZipBd","tableauxBdIndexe","dossierZipIndexe","fMessage","fErreur","fonctionIPA","retourFinal","idMessage","idÉcouteurs","messageErreur","mandataire.générerMandataireProc","closeProps","hasClose","updateHandlers","trueValue","falseValue","isMultiple","currentValue","isFocusVisible","isInteractive","onBlur","onClickLabel","onInput","inputNode","indeterminate","onChange","falseIcon","trueIcon","controlProps","$event","InputIcon","localeKey","focusClasses","blur","isValidating","itemErrorMessages","resetValidation","errorMessages","validationModel","form","internalErrorMessages","isPristine","isDirty","validateOn","validationClasses","silent","messagesId","hasMessages","hasDetails","focused","controlAttrs","inputProps","checkboxProps","getTarget","horizontal","totalOffset","_target","goTo","ease","targetLocation","layoutOffset","startLocation","goToInstance","go","scrollWidth","scrollHeight","containerWidth","containerHeight","selectedElement","containerElement","containerSize","scrollPosition","childrenStartPosition","additionalOffset","containerOffsetSize","childrenOffsetPosition","childrenOffsetSize","scrollLeft","isOverflowing","scrollOffset","contentSize","containerRef","containerRect","goToOptions","firstSelectedIndex","lastSelectedIndex","scrollToChildren","center","scrollToPosition","newPosition","offsetSize","scrollTop","ignoreFocusEvent","onFocusAffixes","toFocus","scrollTo","offsetStep","hasAffixes","hasPrev","hasNext","scrollSize","clientSize","slideGroupProps","hasFilter","hasColor","contentStyles","updateLocation","onResize","contentBox","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","newContentEl","oldContentEl","scrollParents","viewportMargin","viewport","scrollBox","placement","checkOverflow","_placement","targetPoint","contentPoint","flipped","resets","overflows","axis","hasOverflowX","hasOverflowY","newPlacement","flip","newOverflows","offsetParent","scrollElements","scrollbarWidth","scrollableParent","slow","raf","ric","clearDelay","runDelay","isOpening","runOpenDelay","runCloseDelay","isTop","contentEl","activatorEl","isHovered","firstEnter","openOnFocus","openOnClick","cursorTarget","availableEvents","activatorEvents","contentEvents","menu","scrimEvents","activatorRef","targetRef","activator","getActivator","unbindActivatorProps","bindActivatorProps","hasContent","disableGlobalStack","createStackEntry","_zIndex","lastZIndex","globalTop","_isTop","localTop","targetElement","scrimEl","_onAfterLeave","scrimColor","stackStyles","teleportTarget","onClickOutside","animateClick","closeConditional","scrollParent","currentObj","childRefs","overlay","openChildren","onFocusIn","after","onActivatorKeydown","overlayProps","hasLabel","labelRef","floatingLabelRef","controlRef","isPlainOrUnderlined","targetRect","targetWidth","targetStyle","onKeydownClear","isOutlined","hasClear","counterValue","onIntersect","vInputRef","vFieldRef","inputRef","onControlMousedown","onControlClick","onClear","caretPosition","hasCounter","fieldProps","fieldClass","itemHeight","paddingTop","paddingBottom","markerRef","markerOffset","viewportHeight","hasInitialRender","updateTime","targetScrollIndex","getSize","updateOffsets","calculateVisibleItems","scrollToIndex","handleItemResize","prevHeight","prevMinHeight","calculateOffset","calculateIndex","lastScrollTop","scrollVelocity","lastScrollTime","handleScroll","scrollTime","handleScrollend","_calculateVisibleItems","startPx","endPx","topOverflow","bottomOverflow","computedItems","high","handleListeners","listRef","textFieldRef","isScrolling","scrollTimeout","onListScroll","finishScrolling","onListKeydown","ue","vTextFieldRef","vMenuRef","vVirtualScrollRef","_menu","transformed","selectedValues","selection","keyboardLookupPrefix","keyboardLookupLastTime","displayItems","menuDisabled","computedMenuProps","listEvents","onMousedownControl","KEYBOARD_LOOKUP_THRESHOLD","onModelUpdate","hasChips","hasList","textFieldProps","itemRef","onChipClose","hasSlot","slotContent","_createTextVNode","customFiltersLength","customMatches","defaultMatches","filterKeys","keyFilter","defaultMatchesLength","customMatchesLength","filteredItems","filteredMatches","transformedItems","_query","strQuery","originalItems","_filteredItems","_filteredMatches","getMatches","highlightResult","listHasFocus","selectionIndex","filteredItem","hasSelectionSlot","highlightFirst","onMousedownMenuIcon","selectionStart","originalSelectionIndex","onUpdateModelValue","isSelecting","badgeAttrs","density","firstElement","lastElement","contentProps","dialogProps","hasHeader","hasCardItem","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","touch","rootRef","isRtlReverse","transitionCount","transitionHeight","activeIndex","itemsLength","canMoveBack","canMoveForward","arrows","touchOptions","originalEvent","windowRef","slideTimeout","restartTimeout","startTimeout","windowProps","groupItem","isTransitioning","hasTransition","onAfterTransition","onBeforeTransition","onTransitionCancelled","onEnterTransition","imgProps","windowItemProps","hue","isInteracting","canvasRef","canvasWidth","canvasHeight","_dotPosition","dotPosition","dotStyles","updateDotPosition","handleMouseDown","handleMouseMove","handleMouseUp","coords","updateCanvas","canvas","saturationGradient","valueGradient","stripAlpha","enabledModes","inputs","getValue","getColor","vertical","roundValue","clamped","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","indexFromEnd","thumbSize","tickSize","trackSize","numTicks","thumbColor","trackColor","trackFillColor","mousePressed","startOffset","trackContainerRef","activeThumbRef","parseMouseMove","trackStart","trackLength","clickOffset","clickPos","handleStop","handleStart","moveListenerOptions","onMouseMove","onSliderMouseUp","onSliderTouchend","onSliderTouchstart","onSliderMousedown","percentage","showTicks","parsedTicks","hasLabels","slider","thumbLabel","elevationProps","pageup","pagedown","home","down","relevantKeys","multipliers","parseKeydown","_step","positionPercentage","trackFillColorClasses","trackFillColorStyles","trackColorClasses","trackColorStyles","startDir","endDir","backgroundStyles","trackFillWidth","trackFillStyles","computedTicks","directionValue","thumbContainerRef","roundedValue","trackStop","abortController","openEyeDropper","eyeDropper","colorHexValue","swatch","currentColor","externalChange","updateColor","sheetProps","cleared","_search","firstDayOfWeek","weeks","currentWeek","firstDayOfMonth","lastDayOfMonth","firstDayWeekIndex","lastDayWeekIndex","adjacentDay","lastDay","daysFromSunday","weekday","formatString","newDate","customFormat","comparing","d1w1","tv","diffTime","diffDays","internalModel","actionsUsed","actions","expandOnClick","expanded","expand","newExpanded","isExpanded","toggleExpand","disableSort","groupBy","sortBy","sortByWithGroups","isGroupOpen","toggleGroup","extractRows","dive","groupedItems","flatItems","page","itemsPerPage","oldOptions","stopIndex","pageCount","setItemsPerPage","nextPage","prevPage","setPage","paginatedItems","currentPage","allItems","_ref8","_ref9","allSelectable","currentPageSelectable","isSomeSelected","toggleSelect","selectAll","someSelected","allSelected","showSelectAll","mustSort","multiSort","toggleSort","column","newSortBy","isSorted","sortByItems","stringCollator","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","sortBRaw","customResult","selectable","sortedItems","paginatedItemsWithoutGroups","updateRef","maxButtons","firstItem","totalWidth","itemWidth","getMax","totalVisible","minButtons","even","rangeLength","rangeStart","setValue","controls","prevDisabled","nextDisabled","updateFocus","itemsPerPageOptions","paginationProps","added","whole","seenFixed","setFixed","parentFixed","setFixedOffset","fixedOffset","currentDepth","rowSize","fraction","internalHeaders","defaultItem","internalItem","sortFunctions","sortRawFunctions","filterFunctions","flatHeaders","getFixedStyles","getSortIcon","headerCellClasses","VDataTableHeaderCell","noPadding","headerProps","columnSlotName","columnSlotProps","VDataTableMobileHeaderCell","appendIcon","selectGroup","slotName","headerSlotName","cellProps","columnCellProps","displayValue","itemSlotProps","itemColumns","dataTableFooterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","itemsWithoutGroups","disableMonth","disableYear","disablePrev","disableNext","onClickPrev","onClickNext","onClickYear","onClickMonth","onClickAppend","weekDays","weeksInMonth","days","daysInMonth","week","genDays","today","isoDate","isAdjacent","isStart","isEnd","isSame","daysInWeek","weekNumbers","daysRef","rangeStop","isReverse","atMax","onRangeClick","datesInRange","nextDate","onMultipleClick","weekDay","btnProps","years","yearRef","viewMode","isReversing","headerTransition","minDate","maxDate","_date","onUpdateYear","onUpdateMonth","onClickDate","arrBefore","arrAfter","newMonth","newYear","pickerProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","onClickAction","hasActions","hasHeadline","hasMedia","expansionPanel","selectedIndices","isBeforeSelected","selectedIndex","isAfterSelected","expansionPanelTitleProps","expansionPanelTextProps","variantClass","hasPosition","orientation","vFabRef","totalBytes","totalBytesReadable","fileNames","fileCount","onClickPrepend","formRef","onReset","onSubmit","isHovering","rootEl","startStatus","endStatus","setScrollAmount","getScrollAmount","getScrollSize","getContainerSize","setStatus","getStatus","previousScrollSize","handleIntersect","_isIntersecting","intersecting","renderSide","hasStartIntersect","hasEndIntersect","intersectMode","toggle","isSticky","isStuck","stuckPosition","stickyStyles","layoutTop","bodyScroll","work","vprev","vcurr","touches","addMovement","endTouch","getVelocity","newest","absX","absY","oops","isTemporary","touchless","onTouchstart","onTouchmove","onTouchend","maybeDragging","isDragging","dragProgress","getProgress","touchX","touchY","touchZone","inTouchZone","inElement","velocity","vx","vy","dragStyles","isPersistent","scrimStyles","show","focusIndex","isValidNumber","onPaste","clipboardText","displayHeight","scrollPos","translate","sizeScale","startThumbRef","stopThumbRef","stopOffset","rating","increments","hoverIndex","itemState","isFilled","eventState","onMouseenter","onMouseleave","VRatingItem","showStar","createLabel","labelProps","bone","bones","isLoading","loadingProps","slideGroupItem","elapsed","countdown","timerRef","startY","hasLayout","activeTimeout","clearTimeout","onPointerenter","onPointerleave","locationClasses","autoDrawDuration","lineWidth","genBars","minX","maxX","minY","maxY","totalValues","minValue","gridX","gridY","horizonY","parsedLabels","labels","bars","gradientData","isCollinear","radiusForPoint","p0","vector","unitVector","lastLength","genPoints","pathRef","genPath","_genPath","totalHeight","lineProps","menuRef","menuProps","prevSlotProps","nextSlotProps","canEdit","hasError","hasCompleted","_model","_items","completeIcon","editIcon","errorIcon","editable","prevText","nextText","hasWindow","loaderColor","onTrackClick","sliderColorClasses","sliderColorStyles","sliderEl","updateSlider","prevEl","nextEl","prevBox","nextBox","xy","rightBottom","widthHeight","prevPos","initialScale","controlHeight","textareaRef","sizerRef","calculateInputHeight","fieldStyle","lineHeight","newHeight","_vModelText","lineColorClasses","lineColorStyles","dotSize","dotRef","sideClasses","truncateClasses","validation","modifierKeys","mutations","concreteComponent","walk","vuetify","blueprint","audioFile","audioCid","thumbnailFile","thumbnailCid","__awaiter","_arguments","__generator","verb","permits","permitCount","nextResolver","Lock_1","Lock","Semaphore_1","orbiter","siteId","swarmId","variableIds","constellation","trustedSitesSiteIdVariableId","trustedSitesNameVariableId","featuredReleasesReleaseIdVar","featuredReleasesStartTimeVar","featuredReleasesEndTimeVar","blockedReleasesReleaseIdVar","releasesFileVar","releasesThumbnailVar","releasesAuthorVar","releasesMetadataVar","releasesContentNameVar","releasesCategoryVar","releasesStatusVar","collectionsNameVar","collectionsAuthorVar","collectionsMetadataVar","collectionsReleasesVar","collectionsThumbnailVar","collectionsCategoryVar","collectionsStatusVar","releasesDbFormat","tableKey","modDbId","configured","fFinal","swarmSchema","blocked","desiredNResults","releases","collections","featured","siteInfos","lock","blockedCids","fFollowTrustedSites","sites","sitesList","newSites","obsoleteSites","site","fsForgetSite","siteName","fForget","forgetTrustedSites","releaseId","collectionId","collectionReleases","language","accountId","endTime","userId","resolveModType","admin","authId","elementId","orbiterApp","OrbiterApp","VITE_TRUSTED_SITES_SITE_ID_VAR_ID","VITE_TRUSTED_SITES_NAME_VAR_ID","VITE_RELEASES_FILE_VAR_ID","VITE_RELEASES_CATEGORY_VAR_ID","VITE_RELEASES_AUTHOR_VAR_ID","VITE_RELEASES_CONTENT_NAME_VAR_ID","VITE_RELEASES_METADATA_VAR_ID","VITE_RELEASES_THUMBNAIL_VAR_ID","VITE_RELEASES_STATUS_VAR_ID","VITE_COLLECTIONS_AUTHOR_VAR_ID","VITE_COLLECTIONS_METADATA_VAR_ID","VITE_COLLECTIONS_NAME_VAR_ID","VITE_COLLECTIONS_RELEASES_VAR_ID","VITE_COLLECTIONS_THUMBNAIL_VAR_ID","VITE_COLLECTIONS_CATEGORY_VAR_ID","VITE_COLLECTIONS_STATUS_VAR_ID","VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID","VITE_FEATURED_RELEASES_START_TIME_VAR_ID","VITE_FEATURED_RELEASES_END_TIME_VAR_ID","appli","newParams","parseQuery","currentLocation","hashPos","searchPos","stringifyQuery","pathname","aLastIndex","bLastIndex","fromSegments","toSegments","lastToSegment","toPosition","NavigationType","NavigationDirection","baseEl","docRect","elRect","scrollToOptions","positionEl","isIdSelector","scroll","slicePos","pathFromHash","historyState","replace","teardowns","pauseState","popStateHandler","fromState","pauseListeners","teardown","beforeUnloadListener","history","back","replaced","computeScroll","changeLocation","hashIndex","currentState","historyNavigation","historyListeners","triggerListeners","routerHistory","NavigationFailureType","segmentScores","tokenIndex","subSegmentScore","repeatable","subPattern","avoidDuplicatedSlash","param","aScore","bScore","crash","previousState","finalizeSegment","customRe","consumeBuffer","addCharToBuffer","routes","globalOptions","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizedRecords","originalMatcher","normalizedRecord","parentPath","connectingSlash","removeRoute","insertMatcher","matcherRef","getRoutes","parentMatcher","clearRoutes","propsObject","partialOptions","insertionAncestor","ancestor","searchParam","eqPos","normalizedQuery","runWithContext","enterCallbackArray","guardReturn","guardCall","guardType","guards","rawComponent","componentPromise","resolvedComponent","currentRoute","activeRecordIndex","routeMatched","currentMatched","parentRecordPath","isExactActive","navigate","elClass","innerValue","outerValue","propClass","globalClass","defaultClass","injectedRoute","routeToDisplay","injectedDepth","initialDepth","matchedRoute","matchedRouteRef","viewRef","oldInstance","currentName","ViewComponent","routePropsOption","routeProps","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","matcherLocation","targetParams","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","redirect","newTargetLocation","redirectedFrom","shouldRedirect","toLocation","failure","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","installedApps","leavingRecords","updatingRecords","enteringRecords","canceledNavigationCheck","runGuardQueue","beforeEnter","isPush","isFirstNavigation","removeHistoryListener","setupListeners","_from","readyHandlers","errorListeners","isReady","reactiveRoute","unmountApp","recordFrom","recordTo","_hoisted_1","_createElementVNode","_openBlock","_createBlock","_component_v_container","_withCtx","fonc","défaut","stab","dynamique","définis","argsFinaux","profilePic","follow","defaultAvatar","svg","__props","userAvatar","featuredReleases","staticData","siteConfigured","siteNotConfigured","generatingDb","generatedSiteId","generatedVariableIds","generatingEnvFile","generateDb","development","envFileText","trustedSitesSiteIdVar","trustedSitesNameVar","downloadEnvFile","textCopied","copyGeneratedEnvFile","acceptNewModDb","orbiterReady","openAdvanced","contentCID","releaseCategory","releaseName","thumbnailCID","releaseMetadata","musicReleaseMetadata","movieReleaseMetadata","loading","readyToSave","metadataValue","handleOnSubmit","contentCIDValue","authorValue","releaseNameValue","releaseCategoryValue","licenseTypes","musicReleaseTypes","musicFileFormats","musicMediaFormats","movieReleaseTypes","propsComponent","videoPlayerRef","isPlaying","videoDuration","seekingTrack","pause","togglePlay","play","toggleVolume","unmute","mute","updateProgress","toggleFullscreen","canPlay","HomePage","AccountPage","UploadPage","InitPage","ReleasePage","App"],"ignoreList":[0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1766,1767,1768,1769,1776,1778,1779,1786],"sources":["../../../../node_modules/vite-plugin-node-polyfills/shims/process/dist/index.js","../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js","../../index.html?html-proxy&index=0.js","../../../../node_modules/vite-plugin-node-polyfills/shims/global/dist/index.js","../../../../node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../../node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../../node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../../node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../src/constants/navigation.ts","../../../../node_modules/vuetify/lib/util/propsFactory.mjs","../../../../node_modules/vuetify/lib/composables/component.mjs","../../../../node_modules/vuetify/lib/util/globals.mjs","../../../../node_modules/vuetify/lib/util/helpers.mjs","../../../../node_modules/vuetify/lib/util/anchor.mjs","../../../../node_modules/vuetify/lib/util/box.mjs","../../../../node_modules/vuetify/lib/util/animation.mjs","../../../../node_modules/vuetify/lib/util/bindProps.mjs","../../../../node_modules/vuetify/lib/util/color/APCA.mjs","../../../../node_modules/vuetify/lib/util/console.mjs","../../../../node_modules/vuetify/lib/util/color/transformCIELAB.mjs","../../../../node_modules/vuetify/lib/util/color/transformSRGB.mjs","../../../../node_modules/vuetify/lib/util/colorUtils.mjs","../../../../node_modules/vuetify/lib/util/getCurrentInstance.mjs","../../../../node_modules/vuetify/lib/util/injectSelf.mjs","../../../../node_modules/vuetify/lib/composables/defaults.mjs","../../../../node_modules/vuetify/lib/util/defineComponent.mjs","../../../../node_modules/vuetify/lib/util/createSimpleFunctional.mjs","../../../../node_modules/vuetify/lib/util/dom.mjs","../../../../node_modules/vuetify/lib/util/easing.mjs","../../../../node_modules/vuetify/lib/util/events.mjs","../../../../node_modules/vuetify/lib/util/getScrollParent.mjs","../../../../node_modules/vuetify/lib/util/isFixedPosition.mjs","../../../../node_modules/vuetify/lib/util/useRender.mjs","../../../../node_modules/vuetify/lib/composables/tag.mjs","../../../../node_modules/vuetify/lib/components/VToolbar/VToolbarTitle.mjs","../../../../node_modules/vuetify/lib/components/transitions/createTransition.mjs","../../../../node_modules/vuetify/lib/components/transitions/expand-transition.mjs","../../../../node_modules/vuetify/lib/components/transitions/dialog-transition.mjs","../../../../node_modules/vuetify/lib/components/transitions/index.mjs","../../../../node_modules/vuetify/lib/components/VDefaultsProvider/VDefaultsProvider.mjs","../../../../node_modules/vuetify/lib/composables/dimensions.mjs","../../../../node_modules/vuetify/lib/components/VResponsive/VResponsive.mjs","../../../../node_modules/vuetify/lib/composables/color.mjs","../../../../node_modules/vuetify/lib/composables/rounded.mjs","../../../../node_modules/vuetify/lib/composables/transition.mjs","../../../../node_modules/vuetify/lib/directives/intersect/index.mjs","../../../../node_modules/vuetify/lib/components/VImg/VImg.mjs","../../../../node_modules/vuetify/lib/composables/border.mjs","../../../../node_modules/vuetify/lib/composables/elevation.mjs","../../../../node_modules/vuetify/lib/composables/toggleScope.mjs","../../../../node_modules/vuetify/lib/composables/proxiedModel.mjs","../../../../node_modules/vuetify/lib/locale/en.mjs","../../../../node_modules/vuetify/lib/locale/adapters/vuetify.mjs","../../../../node_modules/vuetify/lib/composables/locale.mjs","../../../../node_modules/vuetify/lib/composables/theme.mjs","../../../../node_modules/vuetify/lib/components/VToolbar/VToolbar.mjs","../../../../node_modules/vuetify/lib/composables/resizeObserver.mjs","../../../../node_modules/vuetify/lib/composables/layout.mjs","../../../../node_modules/vuetify/lib/composables/scroll.mjs","../../../../node_modules/vuetify/lib/composables/ssrBoot.mjs","../../../../node_modules/vuetify/lib/components/VAppBar/VAppBar.mjs","../../../../node_modules/vuetify/lib/composables/density.mjs","../../../../node_modules/vuetify/lib/composables/variant.mjs","../../../../node_modules/vuetify/lib/components/VBtnGroup/VBtnGroup.mjs","../../../../node_modules/vuetify/lib/composables/group.mjs","../../../../node_modules/vuetify/lib/components/VBtnToggle/VBtnToggle.mjs","../../../../node_modules/vuetify/lib/iconsets/mdi.mjs","../../../../node_modules/vuetify/lib/composables/icons.mjs","../../../../node_modules/vuetify/lib/composables/size.mjs","../../../../node_modules/vuetify/lib/components/VIcon/VIcon.mjs","../../../../node_modules/vuetify/lib/composables/intersectionObserver.mjs","../../../../node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.mjs","../../../../node_modules/vuetify/lib/composables/location.mjs","../../../../node_modules/vuetify/lib/components/VProgressLinear/VProgressLinear.mjs","../../../../node_modules/vuetify/lib/composables/loader.mjs","../../../../node_modules/vuetify/lib/composables/position.mjs","../../../../node_modules/vuetify/lib/composables/router.mjs","../../../../node_modules/vuetify/lib/composables/selectLink.mjs","../../../../node_modules/vuetify/lib/directives/ripple/index.mjs","../../../../node_modules/vuetify/lib/components/VBtn/VBtn.mjs","../../../../node_modules/vuetify/lib/components/VAppBar/VAppBarNavIcon.mjs","../../../../node_modules/vuetify/lib/components/VAppBar/VAppBarTitle.mjs","../../../../node_modules/vuetify/lib/components/VDivider/VDivider.mjs","../../../../node_modules/vuetify/lib/components/VFooter/VFooter.mjs","../../../../node_modules/vuetify/lib/components/VGrid/VContainer.mjs","../../../../node_modules/vuetify/lib/composables/display.mjs","../../../../node_modules/vuetify/lib/components/VGrid/VCol.mjs","../../../../node_modules/vuetify/lib/components/VGrid/VRow.mjs","../../../../node_modules/vuetify/lib/components/VGrid/VSpacer.mjs","../../../../node_modules/vuetify/lib/components/VList/list.mjs","../../../../node_modules/vuetify/lib/composables/nested/activeStrategies.mjs","../../../../node_modules/vuetify/lib/composables/nested/openStrategies.mjs","../../../../node_modules/vuetify/lib/composables/nested/selectStrategies.mjs","../../../../node_modules/vuetify/lib/composables/nested/nested.mjs","../../../../node_modules/vuetify/lib/components/VList/VListGroup.mjs","../../../../node_modules/vuetify/lib/components/VList/VListItemSubtitle.mjs","../../../../node_modules/vuetify/lib/components/VList/VListItemTitle.mjs","../../../../node_modules/vuetify/lib/components/VAvatar/VAvatar.mjs","../../../../node_modules/vuetify/lib/components/VList/VListItem.mjs","../../../../node_modules/vuetify/lib/components/VList/VListSubheader.mjs","../../../../node_modules/vuetify/lib/components/VList/VListChildren.mjs","../../../../node_modules/vuetify/lib/composables/list-items.mjs","../../../../node_modules/vuetify/lib/components/VList/VList.mjs","../../../../node_modules/vuetify/lib/components/VList/VListImg.mjs","../../../../node_modules/vuetify/lib/components/VList/VListItemAction.mjs","../../../../node_modules/vuetify/lib/components/VList/VListItemMedia.mjs","../../../../node_modules/vuetify/lib/components/VSheet/VSheet.mjs","../../src/components/layout/appFooter.vue","../../../../node_modules/vuetify/lib/components/VApp/VApp.mjs","../../../../node_modules/vuetify/lib/components/VMain/VMain.mjs","../../../../node_modules/events/events.js","../../../../node_modules/eventemitter3/index.js","../../../../node_modules/p-timeout/index.js","../../../../node_modules/p-queue/dist/lower-bound.js","../../../../node_modules/p-queue/dist/priority-queue.js","../../../../node_modules/p-queue/dist/index.js","../../../../node_modules/p-defer/index.js","../../../../node_modules/it-pushable/dist/src/fifo.js","../../../../node_modules/it-pushable/dist/src/index.js","../../../../node_modules/it-merge/dist/src/index.js","../../../../node_modules/it-pipe/dist/src/index.js","../../../../node_modules/retimer/time-browser.js","../../../../node_modules/retimer/retimer.js","../../../../node_modules/timeout-abort-controller/index.js","../../../../node_modules/@orbitdb/core/src/utils/path-join.js","../../../../node_modules/@orbitdb/core/src/sync.js","../../../../node_modules/inherits/inherits_browser.js","../../../../node_modules/lru/index.js","../../../../node_modules/@orbitdb/core/src/oplog/clock.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/bytes.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/vendor/base-x.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/bases/base.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/bases/base32.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/bases/base58.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/vendor/varint.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/varint.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/hashes/digest.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/cid.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/hashes/hasher.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/block.js","../../../../node_modules/cborg/lib/is.js","../../../../node_modules/cborg/lib/token.js","../../../../node_modules/cborg/lib/byte-utils.js","../../../../node_modules/cborg/lib/bl.js","../../../../node_modules/cborg/lib/common.js","../../../../node_modules/cborg/lib/0uint.js","../../../../node_modules/cborg/lib/1negint.js","../../../../node_modules/cborg/lib/2bytes.js","../../../../node_modules/cborg/lib/3string.js","../../../../node_modules/cborg/lib/4array.js","../../../../node_modules/cborg/lib/5map.js","../../../../node_modules/cborg/lib/6tag.js","../../../../node_modules/cborg/lib/7float.js","../../../../node_modules/cborg/lib/jump.js","../../../../node_modules/cborg/lib/encode.js","../../../../node_modules/cborg/lib/decode.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@ipld/dag-cbor/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@ipld/dag-cbor/src/index.js","../../../../node_modules/@orbitdb/core/node_modules/multiformats/src/hashes/sha2-browser.js","../../../../node_modules/@orbitdb/core/src/oplog/entry.js","../../../../node_modules/@orbitdb/core/src/storage/memory.js","../../../../node_modules/@orbitdb/core/src/oplog/heads.js","../../../../node_modules/@orbitdb/core/src/oplog/conflict-resolution.js","../../../../node_modules/@orbitdb/core/src/oplog/log.js","../../../../node_modules/@orbitdb/core/src/storage/composed.js","../../../../node_modules/it-drain/dist/src/index.js","../../../../node_modules/@orbitdb/core/src/storage/ipfs-block.js","../../../../node_modules/level-supports/index.js","../../../../node_modules/module-error/index.js","../../../../node_modules/level-transcoder/lib/text-endec.js","../../../../node_modules/level-transcoder/lib/encoding.js","../../../../node_modules/level-transcoder/lib/formats.js","../../../../node_modules/level-transcoder/lib/encodings.js","../../../../node_modules/level-transcoder/index.js","../../../../node_modules/catering/next-tick-browser.js","../../../../node_modules/catering/index.js","../../../../node_modules/abstract-level/lib/common.js","../../../../node_modules/abstract-level/abstract-iterator.js","../../../../node_modules/abstract-level/lib/default-kv-iterator.js","../../../../node_modules/abstract-level/lib/deferred-iterator.js","../../../../node_modules/abstract-level/abstract-chained-batch.js","../../../../node_modules/abstract-level/lib/default-chained-batch.js","../../../../node_modules/abstract-level/lib/range-options.js","../../../../node_modules/queue-microtask/index.js","../../../../node_modules/abstract-level/lib/next-tick-browser.js","../../../../node_modules/abstract-level/lib/abstract-sublevel-iterator.js","../../../../node_modules/abstract-level/lib/abstract-sublevel.js","../../../../node_modules/abstract-level/abstract-level.js","../../../../node_modules/abstract-level/index.js","../../../../node_modules/run-parallel-limit/index.js","../../../../node_modules/browser-level/util/key-range.js","../../../../node_modules/browser-level/util/deserialize.js","../../../../node_modules/browser-level/iterator.js","../../../../node_modules/browser-level/util/clear.js","../../../../node_modules/browser-level/index.js","../../../../node_modules/level/browser.js","../../../../node_modules/@orbitdb/core/src/storage/level.js","../../../../node_modules/@orbitdb/core/src/storage/lru.js","../../../../node_modules/@orbitdb/core/src/database.js","../../../../node_modules/@orbitdb/core/src/databases/documents.js","../../../../node_modules/@orbitdb/core/src/databases/events.js","../../../../node_modules/@orbitdb/core/src/databases/keyvalue.js","../../../../node_modules/@orbitdb/core/src/databases/index.js","../../../../node_modules/@libp2p/interface/dist/src/connection/index.js","../../../../node_modules/@libp2p/interface/dist/src/content-routing/index.js","../../../../node_modules/@libp2p/interface/dist/src/peer-discovery/index.js","../../../../node_modules/@libp2p/interface/dist/src/peer-id/index.js","../../../../node_modules/@libp2p/interface/dist/src/peer-routing/index.js","../../../../node_modules/@libp2p/interface/dist/src/peer-store/tags.js","../../../../node_modules/@libp2p/interface/dist/src/pubsub/index.js","../../../../node_modules/@libp2p/interface/dist/src/transport/index.js","../../../../node_modules/@libp2p/interface/dist/src/errors.js","../../../../node_modules/@libp2p/interface/dist/src/events.js","../../../../node_modules/@libp2p/interface/dist/src/event-target.js","../../../../node_modules/@libp2p/interface/dist/src/startable.js","../../../../node_modules/@libp2p/interface/dist/src/index.js","../../../../node_modules/node-forge/lib/forge.js","../../../../node_modules/node-forge/lib/baseN.js","../../../../node_modules/node-forge/lib/util.js","../../../../node_modules/node-forge/lib/cipher.js","../../../../node_modules/node-forge/lib/cipherModes.js","../../../../node_modules/node-forge/lib/aes.js","../../../../node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/multiformats/dist/src/bases/base10.js","../../../../node_modules/multiformats/dist/src/bases/base16.js","../../../../node_modules/multiformats/dist/src/bases/base2.js","../../../../node_modules/multiformats/dist/src/bases/base256emoji.js","../../../../node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/multiformats/dist/src/bases/base36.js","../../../../node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/multiformats/dist/src/bases/base8.js","../../../../node_modules/multiformats/dist/src/bases/identity.js","../../../../node_modules/multiformats/dist/src/codecs/json.js","../../../../node_modules/multiformats/dist/src/codecs/raw.js","../../../../node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/multiformats/dist/src/varint.js","../../../../node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/multiformats/dist/src/hashes/identity.js","../../../../node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/multiformats/dist/src/cid.js","../../../../node_modules/multiformats/dist/src/basics.js","../../../../node_modules/uint8arrays/dist/src/alloc.js","../../../../node_modules/uint8arrays/dist/src/util/bases.js","../../../../node_modules/uint8arrays/dist/src/from-string.js","../../../../node_modules/uint8arrays/dist/src/to-string.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/webcrypto.js","../../../../node_modules/node-forge/lib/oids.js","../../../../node_modules/node-forge/lib/asn1.js","../../../../node_modules/node-forge/lib/des.js","../../../../node_modules/node-forge/lib/md.js","../../../../node_modules/node-forge/lib/hmac.js","../../../../node_modules/safe-buffer/index.js","../../../../node_modules/randombytes/browser.js","../../../../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../../../../node_modules/has-symbols/shams.js","../../../../node_modules/has-tostringtag/shams.js","../../../../node_modules/es-errors/index.js","../../../../node_modules/es-errors/eval.js","../../../../node_modules/es-errors/range.js","../../../../node_modules/es-errors/ref.js","../../../../node_modules/es-errors/syntax.js","../../../../node_modules/es-errors/type.js","../../../../node_modules/es-errors/uri.js","../../../../node_modules/has-symbols/index.js","../../../../node_modules/has-proto/index.js","../../../../node_modules/function-bind/implementation.js","../../../../node_modules/function-bind/index.js","../../../../node_modules/hasown/index.js","../../../../node_modules/get-intrinsic/index.js","../../../../node_modules/es-define-property/index.js","../../../../node_modules/gopd/index.js","../../../../node_modules/define-data-property/index.js","../../../../node_modules/has-property-descriptors/index.js","../../../../node_modules/set-function-length/index.js","../../../../node_modules/call-bind/index.js","../../../../node_modules/call-bind/callBound.js","../../../../node_modules/is-arguments/index.js","../../../../node_modules/is-generator-function/index.js","../../../../node_modules/is-callable/index.js","../../../../node_modules/for-each/index.js","../../../../node_modules/possible-typed-array-names/index.js","../../../../node_modules/available-typed-arrays/index.js","../../../../node_modules/which-typed-array/index.js","../../../../node_modules/is-typed-array/index.js","../../../../node_modules/util/support/types.js","../../../../node_modules/util/support/isBufferBrowser.js","../../../../node_modules/util/util.js","../../../../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../../../node_modules/readable-stream/lib/internal/streams/destroy.js","../../../../node_modules/readable-stream/errors-browser.js","../../../../node_modules/readable-stream/lib/internal/streams/state.js","../../../../node_modules/util-deprecate/browser.js","../../../../node_modules/readable-stream/lib/_stream_writable.js","../../../../node_modules/readable-stream/lib/_stream_duplex.js","../../../../node_modules/string_decoder/lib/string_decoder.js","../../../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../../../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../../../../node_modules/readable-stream/lib/internal/streams/from-browser.js","../../../../node_modules/readable-stream/lib/_stream_readable.js","../../../../node_modules/readable-stream/lib/_stream_transform.js","../../../../node_modules/readable-stream/lib/_stream_passthrough.js","../../../../node_modules/readable-stream/lib/internal/streams/pipeline.js","../../../../node_modules/readable-stream/readable-browser.js","../../../../node_modules/hash-base/index.js","../../../../node_modules/md5.js/index.js","../../../../node_modules/ripemd160/index.js","../../../../node_modules/sha.js/hash.js","../../../../node_modules/sha.js/sha.js","../../../../node_modules/sha.js/sha1.js","../../../../node_modules/sha.js/sha256.js","../../../../node_modules/sha.js/sha224.js","../../../../node_modules/sha.js/sha512.js","../../../../node_modules/sha.js/sha384.js","../../../../node_modules/sha.js/index.js","../../../../node_modules/stream-browserify/index.js","../../../../node_modules/cipher-base/index.js","../../../../node_modules/create-hash/browser.js","../../../../node_modules/create-hmac/legacy.js","../../../../node_modules/create-hash/md5.js","../../../../node_modules/create-hmac/browser.js","../../../../node_modules/browserify-sign/algos.js","../../../../node_modules/pbkdf2/lib/precondition.js","../../../../node_modules/pbkdf2/lib/default-encoding.js","../../../../node_modules/pbkdf2/lib/to-buffer.js","../../../../node_modules/pbkdf2/lib/sync-browser.js","../../../../node_modules/pbkdf2/lib/async.js","../../../../node_modules/pbkdf2/browser.js","../../../../node_modules/des.js/lib/des/utils.js","../../../../node_modules/minimalistic-assert/index.js","../../../../node_modules/des.js/lib/des/cipher.js","../../../../node_modules/des.js/lib/des/des.js","../../../../node_modules/des.js/lib/des/cbc.js","../../../../node_modules/des.js/lib/des/ede.js","../../../../node_modules/des.js/lib/des.js","../../../../node_modules/browserify-des/index.js","../../../../node_modules/browserify-aes/modes/ecb.js","../../../../node_modules/buffer-xor/index.js","../../../../node_modules/browserify-aes/modes/cbc.js","../../../../node_modules/browserify-aes/modes/cfb.js","../../../../node_modules/browserify-aes/modes/cfb8.js","../../../../node_modules/browserify-aes/modes/cfb1.js","../../../../node_modules/browserify-aes/modes/ofb.js","../../../../node_modules/browserify-aes/incr32.js","../../../../node_modules/browserify-aes/modes/ctr.js","../../../../node_modules/browserify-aes/modes/index.js","../../../../node_modules/browserify-aes/aes.js","../../../../node_modules/browserify-aes/ghash.js","../../../../node_modules/browserify-aes/authCipher.js","../../../../node_modules/browserify-aes/streamCipher.js","../../../../node_modules/evp_bytestokey/index.js","../../../../node_modules/browserify-aes/encrypter.js","../../../../node_modules/browserify-aes/decrypter.js","../../../../node_modules/browserify-aes/browser.js","../../../../node_modules/browserify-des/modes.js","../../../../node_modules/browserify-cipher/browser.js","../../../../node_modules/bn.js/lib/bn.js","../../../../node_modules/brorand/index.js","../../../../node_modules/miller-rabin/lib/mr.js","../../../../node_modules/diffie-hellman/lib/generatePrime.js","../../../../node_modules/diffie-hellman/lib/dh.js","../../../../node_modules/diffie-hellman/browser.js","../../../../node_modules/process-nextick-args/index.js","../../../../node_modules/browserify-sign/node_modules/isarray/index.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/index.js","../../../../node_modules/core-util-is/lib/util.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/BufferList.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","../../../../node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","../../../../node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js","../../../../node_modules/browserify-rsa/index.js","../../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../../node_modules/elliptic/lib/elliptic/utils.js","../../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../../node_modules/elliptic/lib/elliptic/curve/mont.js","../../../../node_modules/elliptic/lib/elliptic/curve/edwards.js","../../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../../node_modules/hash.js/lib/hash/utils.js","../../../../node_modules/hash.js/lib/hash/common.js","../../../../node_modules/hash.js/lib/hash/sha/common.js","../../../../node_modules/hash.js/lib/hash/sha/1.js","../../../../node_modules/hash.js/lib/hash/sha/256.js","../../../../node_modules/hash.js/lib/hash/sha/224.js","../../../../node_modules/hash.js/lib/hash/sha/512.js","../../../../node_modules/hash.js/lib/hash/sha/384.js","../../../../node_modules/hash.js/lib/hash/sha.js","../../../../node_modules/hash.js/lib/hash/ripemd.js","../../../../node_modules/hash.js/lib/hash/hmac.js","../../../../node_modules/hash.js/lib/hash.js","../../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../../../../node_modules/elliptic/lib/elliptic/curves.js","../../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../../node_modules/elliptic/lib/elliptic/eddsa/key.js","../../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../../../../node_modules/elliptic/lib/elliptic/eddsa/index.js","../../../../node_modules/elliptic/lib/elliptic.js","../../../../node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","../../../../node_modules/vm-browserify/index.js","../../../../node_modules/asn1.js/lib/asn1/api.js","../../../../node_modules/asn1.js/lib/asn1/base/reporter.js","../../../../node_modules/asn1.js/lib/asn1/base/buffer.js","../../../../node_modules/asn1.js/lib/asn1/base/node.js","../../../../node_modules/asn1.js/lib/asn1/base/index.js","../../../../node_modules/asn1.js/lib/asn1/constants/der.js","../../../../node_modules/asn1.js/lib/asn1/constants/index.js","../../../../node_modules/asn1.js/lib/asn1/decoders/der.js","../../../../node_modules/asn1.js/lib/asn1/decoders/pem.js","../../../../node_modules/asn1.js/lib/asn1/decoders/index.js","../../../../node_modules/asn1.js/lib/asn1/encoders/der.js","../../../../node_modules/asn1.js/lib/asn1/encoders/pem.js","../../../../node_modules/asn1.js/lib/asn1/encoders/index.js","../../../../node_modules/asn1.js/lib/asn1.js","../../../../node_modules/parse-asn1/certificate.js","../../../../node_modules/parse-asn1/asn1.js","../../../../node_modules/parse-asn1/fixProc.js","../../../../node_modules/parse-asn1/index.js","../../../../node_modules/browserify-sign/browser/sign.js","../../../../node_modules/browserify-sign/browser/verify.js","../../../../node_modules/browserify-sign/browser/index.js","../../../../node_modules/create-ecdh/browser.js","../../../../node_modules/public-encrypt/mgf.js","../../../../node_modules/public-encrypt/xor.js","../../../../node_modules/public-encrypt/withPublic.js","../../../../node_modules/public-encrypt/publicEncrypt.js","../../../../node_modules/public-encrypt/privateDecrypt.js","../../../../node_modules/public-encrypt/browser.js","../../../../node_modules/randomfill/browser.js","../../../../node_modules/crypto-browserify/index.js","../../../../node_modules/node-forge/lib/pbkdf2.js","../../../../node_modules/node-forge/lib/pem.js","../../../../node_modules/node-forge/lib/sha256.js","../../../../node_modules/node-forge/lib/prng.js","../../../../node_modules/node-forge/lib/random.js","../../../../node_modules/node-forge/lib/rc2.js","../../../../node_modules/node-forge/lib/jsbn.js","../../../../node_modules/node-forge/lib/sha1.js","../../../../node_modules/node-forge/lib/pkcs1.js","../../../../node_modules/node-forge/lib/prime.js","../../../../node_modules/node-forge/lib/rsa.js","../../../../node_modules/node-forge/lib/pbe.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/hashes/identity.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/uint8arrays/dist/src/equals.js","../../../../node_modules/uint8arrays/dist/src/util/as-uint8array.js","../../../../node_modules/uint8arrays/dist/src/concat.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/util.js","../../../../node_modules/@noble/hashes/esm/_assert.js","../../../../node_modules/@noble/hashes/esm/crypto.js","../../../../node_modules/@noble/hashes/esm/utils.js","../../../../node_modules/@noble/hashes/esm/_md.js","../../../../node_modules/@noble/hashes/esm/_u64.js","../../../../node_modules/@noble/hashes/esm/sha512.js","../../../../node_modules/@noble/curves/esm/abstract/utils.js","../../../../node_modules/@noble/curves/esm/abstract/modular.js","../../../../node_modules/@noble/curves/esm/abstract/curve.js","../../../../node_modules/@noble/curves/esm/abstract/edwards.js","../../../../node_modules/@noble/curves/esm/abstract/montgomery.js","../../../../node_modules/@noble/curves/esm/ed25519.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/ed25519-browser.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/ciphers/aes-gcm.browser.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/exporter.js","../../../../node_modules/uint8-varint/dist/src/index.js","../../../../node_modules/protons-runtime/dist/src/utils/float.js","../../../../node_modules/protons-runtime/dist/src/utils/longbits.js","../../../../node_modules/protons-runtime/dist/src/utils/utf8.js","../../../../node_modules/protons-runtime/dist/src/utils/reader.js","../../../../node_modules/protons-runtime/dist/src/decode.js","../../../../node_modules/protons-runtime/dist/src/utils/pool.js","../../../../node_modules/protons-runtime/dist/src/utils/writer.js","../../../../node_modules/protons-runtime/dist/src/encode.js","../../../../node_modules/protons-runtime/dist/src/codec.js","../../../../node_modules/protons-runtime/dist/src/codecs/enum.js","../../../../node_modules/protons-runtime/dist/src/codecs/message.js","../../../../node_modules/protons-runtime/dist/src/index.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/keys.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/ed25519-class.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/ecdh-browser.js","../../../../node_modules/node-forge/lib/sha512.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/random-bytes.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/jwk2pem.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/rsa-utils.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/rsa-browser.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/rsa-class.js","../../../../node_modules/@noble/hashes/esm/sha256.js","../../../../node_modules/@noble/hashes/esm/hmac.js","../../../../node_modules/@noble/curves/esm/abstract/weierstrass.js","../../../../node_modules/@noble/curves/esm/_shortw_utils.js","../../../../node_modules/@noble/curves/esm/secp256k1.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/secp256k1-browser.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/secp256k1-class.js","../../../../node_modules/@orbitdb/core/node_modules/@libp2p/crypto/dist/src/keys/index.js","../../../../node_modules/uint8arrays/dist/src/compare.js","../../../../node_modules/@orbitdb/core/src/key-store.js","../../../../node_modules/@orbitdb/core/src/identities/identity.js","../../../../node_modules/@orbitdb/core/src/identities/providers/publickey.js","../../../../node_modules/@orbitdb/core/src/identities/providers/index.js","../../../../node_modules/@orbitdb/core/src/identities/identities.js","../../../../node_modules/@orbitdb/core/src/address.js","../../../../node_modules/@orbitdb/core/src/manifest-store.js","../../../../node_modules/@orbitdb/core/src/utils/create-id.js","../../../../node_modules/@orbitdb/core/src/access-controllers/ipfs.js","../../../../node_modules/@orbitdb/core/src/access-controllers/orbitdb.js","../../../../node_modules/@orbitdb/core/src/access-controllers/index.js","../../../../node_modules/@orbitdb/core/src/orbitdb.js","../../../../node_modules/uuid/dist/esm-browser/rng.js","../../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../../node_modules/uuid/dist/esm-browser/native.js","../../../../node_modules/uuid/dist/esm-browser/v4.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/block.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/@constl/ipa/dist/accès/consts.js","../../../../node_modules/@orbitdb/feed-db/dist/feed.js","../../../../node_modules/@orbitdb/feed-db/dist/utils.js","../../../../node_modules/@orbitdb/set-db/dist/set.js","../../../../node_modules/@orbitdb/set-db/dist/utils.js","../../../../node_modules/@orbitdb/ordered-keyvalue-db/dist/ordered-keyvalue.js","../../../../node_modules/@orbitdb/ordered-keyvalue-db/dist/utils.js","../../../../node_modules/ajv/dist/compile/codegen/code.js","../../../../node_modules/ajv/dist/compile/codegen/scope.js","../../../../node_modules/ajv/dist/compile/codegen/index.js","../../../../node_modules/ajv/dist/compile/util.js","../../../../node_modules/ajv/dist/compile/names.js","../../../../node_modules/ajv/dist/compile/errors.js","../../../../node_modules/ajv/dist/compile/validate/boolSchema.js","../../../../node_modules/ajv/dist/compile/rules.js","../../../../node_modules/ajv/dist/compile/validate/applicability.js","../../../../node_modules/ajv/dist/compile/validate/dataType.js","../../../../node_modules/ajv/dist/compile/validate/defaults.js","../../../../node_modules/ajv/dist/vocabularies/code.js","../../../../node_modules/ajv/dist/compile/validate/keyword.js","../../../../node_modules/ajv/dist/compile/validate/subschema.js","../../../../node_modules/fast-deep-equal/index.js","../../../../node_modules/json-schema-traverse/index.js","../../../../node_modules/ajv/dist/compile/resolve.js","../../../../node_modules/ajv/dist/compile/validate/index.js","../../../../node_modules/ajv/dist/runtime/validation_error.js","../../../../node_modules/ajv/dist/compile/ref_error.js","../../../../node_modules/ajv/dist/compile/index.js","../../../../node_modules/fast-uri/lib/scopedChars.js","../../../../node_modules/fast-uri/lib/utils.js","../../../../node_modules/fast-uri/lib/schemes.js","../../../../node_modules/fast-uri/index.js","../../../../node_modules/ajv/dist/runtime/uri.js","../../../../node_modules/ajv/dist/core.js","../../../../node_modules/ajv/dist/vocabularies/core/id.js","../../../../node_modules/ajv/dist/vocabularies/core/ref.js","../../../../node_modules/ajv/dist/vocabularies/core/index.js","../../../../node_modules/ajv/dist/vocabularies/validation/limitNumber.js","../../../../node_modules/ajv/dist/vocabularies/validation/multipleOf.js","../../../../node_modules/ajv/dist/runtime/ucs2length.js","../../../../node_modules/ajv/dist/vocabularies/validation/limitLength.js","../../../../node_modules/ajv/dist/vocabularies/validation/pattern.js","../../../../node_modules/ajv/dist/vocabularies/validation/limitProperties.js","../../../../node_modules/ajv/dist/vocabularies/validation/required.js","../../../../node_modules/ajv/dist/vocabularies/validation/limitItems.js","../../../../node_modules/ajv/dist/runtime/equal.js","../../../../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js","../../../../node_modules/ajv/dist/vocabularies/validation/const.js","../../../../node_modules/ajv/dist/vocabularies/validation/enum.js","../../../../node_modules/ajv/dist/vocabularies/validation/index.js","../../../../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js","../../../../node_modules/ajv/dist/vocabularies/applicator/items.js","../../../../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js","../../../../node_modules/ajv/dist/vocabularies/applicator/items2020.js","../../../../node_modules/ajv/dist/vocabularies/applicator/contains.js","../../../../node_modules/ajv/dist/vocabularies/applicator/dependencies.js","../../../../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js","../../../../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js","../../../../node_modules/ajv/dist/vocabularies/applicator/properties.js","../../../../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js","../../../../node_modules/ajv/dist/vocabularies/applicator/not.js","../../../../node_modules/ajv/dist/vocabularies/applicator/anyOf.js","../../../../node_modules/ajv/dist/vocabularies/applicator/oneOf.js","../../../../node_modules/ajv/dist/vocabularies/applicator/allOf.js","../../../../node_modules/ajv/dist/vocabularies/applicator/if.js","../../../../node_modules/ajv/dist/vocabularies/applicator/thenElse.js","../../../../node_modules/ajv/dist/vocabularies/applicator/index.js","../../../../node_modules/ajv/dist/vocabularies/format/format.js","../../../../node_modules/ajv/dist/vocabularies/format/index.js","../../../../node_modules/ajv/dist/vocabularies/metadata.js","../../../../node_modules/ajv/dist/vocabularies/draft7.js","../../../../node_modules/ajv/dist/vocabularies/discriminator/types.js","../../../../node_modules/ajv/dist/vocabularies/discriminator/index.js","../../../../node_modules/ajv/dist/ajv.js","../../../../node_modules/@constl/bohr-db/dist/utils.js","../../../../node_modules/@constl/bohr-db/dist/feed.js","../../../../node_modules/@constl/bohr-db/dist/keyvalue.js","../../../../node_modules/@constl/bohr-db/dist/ordered-keyvalue.js","../../../../node_modules/@constl/bohr-db/dist/set.js","../../../../node_modules/@chriscdn/promise-semaphore/lib/promise-semaphore.modern.js","../../../../node_modules/@constl/ipa/dist/orbite.js","../../../../node_modules/@constl/ipa/dist/accès/gestionnaireUtilisateurs.js","../../../../node_modules/@constl/ipa/dist/accès/utils.js","../../../../node_modules/@constl/ipa/dist/accès/cntrlMod.js","../../../../node_modules/@constl/ipa/dist/accès/cntrlConstellation.js","../../../../node_modules/@constl/ipa/dist/accès/index.js","../../../../node_modules/xlsx/xlsx.mjs","../../../../node_modules/axios/lib/helpers/bind.js","../../../../node_modules/axios/lib/utils.js","../../../../node_modules/axios/lib/core/AxiosError.js","../../../../node_modules/axios/lib/helpers/null.js","../../../../node_modules/axios/lib/helpers/toFormData.js","../../../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../../../node_modules/axios/lib/helpers/buildURL.js","../../../../node_modules/axios/lib/core/InterceptorManager.js","../../../../node_modules/axios/lib/defaults/transitional.js","../../../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../../../node_modules/axios/lib/platform/browser/classes/FormData.js","../../../../node_modules/axios/lib/platform/browser/classes/Blob.js","../../../../node_modules/axios/lib/platform/browser/index.js","../../../../node_modules/axios/lib/platform/common/utils.js","../../../../node_modules/axios/lib/platform/index.js","../../../../node_modules/axios/lib/helpers/toURLEncodedForm.js","../../../../node_modules/axios/lib/helpers/formDataToJSON.js","../../../../node_modules/axios/lib/defaults/index.js","../../../../node_modules/axios/lib/helpers/parseHeaders.js","../../../../node_modules/axios/lib/core/AxiosHeaders.js","../../../../node_modules/axios/lib/core/transformData.js","../../../../node_modules/axios/lib/cancel/isCancel.js","../../../../node_modules/axios/lib/cancel/CanceledError.js","../../../../node_modules/axios/lib/core/settle.js","../../../../node_modules/axios/lib/helpers/parseProtocol.js","../../../../node_modules/axios/lib/helpers/speedometer.js","../../../../node_modules/axios/lib/helpers/throttle.js","../../../../node_modules/axios/lib/helpers/progressEventReducer.js","../../../../node_modules/axios/lib/helpers/isURLSameOrigin.js","../../../../node_modules/axios/lib/helpers/cookies.js","../../../../node_modules/axios/lib/helpers/isAbsoluteURL.js","../../../../node_modules/axios/lib/helpers/combineURLs.js","../../../../node_modules/axios/lib/core/buildFullPath.js","../../../../node_modules/axios/lib/core/mergeConfig.js","../../../../node_modules/axios/lib/helpers/resolveConfig.js","../../../../node_modules/axios/lib/adapters/xhr.js","../../../../node_modules/axios/lib/helpers/composeSignals.js","../../../../node_modules/axios/lib/helpers/trackStream.js","../../../../node_modules/axios/lib/adapters/fetch.js","../../../../node_modules/axios/lib/adapters/adapters.js","../../../../node_modules/axios/lib/core/dispatchRequest.js","../../../../node_modules/axios/lib/env/data.js","../../../../node_modules/axios/lib/helpers/validator.js","../../../../node_modules/axios/lib/core/Axios.js","../../../../node_modules/axios/lib/cancel/CancelToken.js","../../../../node_modules/axios/lib/helpers/spread.js","../../../../node_modules/axios/lib/helpers/isAxiosError.js","../../../../node_modules/axios/lib/helpers/HttpStatusCode.js","../../../../node_modules/axios/lib/axios.js","../../../../node_modules/@constl/ipa/dist/importateur/index.js","../../../../node_modules/@constl/mandataire/node_modules/uuid/dist/esm-browser/stringify.js","../../../../node_modules/@constl/mandataire/node_modules/uuid/dist/esm-browser/rng.js","../../../../node_modules/@constl/mandataire/node_modules/uuid/dist/esm-browser/native.js","../../../../node_modules/@constl/mandataire/node_modules/uuid/dist/esm-browser/v4.js","../../../../node_modules/@constl/mandataire/dist/src/codes.js","../../../../node_modules/@constl/mandataire/dist/src/utils.js","../../../../node_modules/@constl/mandataire/dist/src/mandataire.js","../../../../node_modules/tslib/tslib.es6.mjs","../../../../node_modules/object-keys/isArguments.js","../../../../node_modules/object-keys/implementation.js","../../../../node_modules/object-keys/index.js","../../../../node_modules/define-properties/index.js","../../../../node_modules/object.assign/implementation.js","../../../../node_modules/object.assign/polyfill.js","../../../../node_modules/object.assign/shim.js","../../../../node_modules/object.assign/index.js","../../../../node_modules/functions-have-names/index.js","../../../../node_modules/set-function-name/index.js","../../../../node_modules/regexp.prototype.flags/implementation.js","../../../../node_modules/regexp.prototype.flags/polyfill.js","../../../../node_modules/regexp.prototype.flags/shim.js","../../../../node_modules/regexp.prototype.flags/index.js","../../../../__vite-browser-external","../../../../node_modules/object-inspect/index.js","../../../../node_modules/side-channel/index.js","../../../../node_modules/internal-slot/index.js","../../../../node_modules/stop-iteration-iterator/index.js","../../../../node_modules/isarray/index.js","../../../../node_modules/is-string/index.js","../../../../node_modules/is-map/index.js","../../../../node_modules/is-set/index.js","../../../../node_modules/es-get-iterator/index.js","../../../../node_modules/object-is/implementation.js","../../../../node_modules/object-is/polyfill.js","../../../../node_modules/object-is/shim.js","../../../../node_modules/object-is/index.js","../../../../node_modules/is-array-buffer/index.js","../../../../node_modules/is-date-object/index.js","../../../../node_modules/is-regex/index.js","../../../../node_modules/is-shared-array-buffer/index.js","../../../../node_modules/is-number-object/index.js","../../../../node_modules/is-boolean-object/index.js","../../../../node_modules/is-symbol/index.js","../../../../node_modules/has-bigints/index.js","../../../../node_modules/is-bigint/index.js","../../../../node_modules/which-boxed-primitive/index.js","../../../../node_modules/is-weakmap/index.js","../../../../node_modules/is-weakset/index.js","../../../../node_modules/which-collection/index.js","../../../../node_modules/array-buffer-byte-length/index.js","../../../../node_modules/deep-equal/index.js","../../../../node_modules/deepmerge/dist/cjs.js","../../../../node_modules/deepcopy/node_modules/type-detect/type-detect.js","../../../../node_modules/deepcopy/src/buffer.mjs","../../../../node_modules/deepcopy/src/detector.mjs","../../../../node_modules/deepcopy/src/collection.mjs","../../../../node_modules/deepcopy/src/global.mjs","../../../../node_modules/deepcopy/src/copy_map.mjs","../../../../node_modules/deepcopy/src/copier.mjs","../../../../node_modules/deepcopy/src/index.mjs","../../../../node_modules/jszip/dist/jszip.min.js","../../../../node_modules/browser-fs-access/dist/index.modern.js","../../../../node_modules/path-browserify/index.js","../../../../node_modules/is-electron/index.js","../../../../node_modules/wherearewe/src/index.js","../../../../node_modules/@constl/utils-ipa/dist/src/données.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@constl/utils-ipa/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@constl/utils-ipa/dist/src/sfip.js","../../../../node_modules/@constl/utils-ipa/dist/src/fonctions.js","../../../../node_modules/geojson-validation/index.js","../../../../node_modules/@constl/utils-ipa/dist/src/cholqij.js","../../../../node_modules/@constl/utils-ipa/dist/src/valide.js","../../../../node_modules/@lassi-js/kili/விநியோகம்/மாறிலிகள்.js","../../../../node_modules/@lassi-js/kili/விநியோகம்/கிளி.js","../../../../node_modules/ennikkai/விநியோகம்/மாறிலிகள்.js","../../../../node_modules/ennikkai/விநியோகம்/கிளி.js","../../../../node_modules/ennikkai/விநியோகம்/எண்ணிக்கை.js","../../../../node_modules/it-first/dist/src/index.js","../../../../node_modules/it-batch/dist/src/index.js","../../../../node_modules/it-parallel-batch/dist/src/index.js","../../../../node_modules/uint8arraylist/dist/src/index.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/chunker/fixed-size.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@ipld/dag-pb/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@ipld/dag-pb/src/pb-decode.js","../../../../node_modules/@ipld/dag-pb/src/pb-encode.js","../../../../node_modules/@ipld/dag-pb/src/util.js","../../../../node_modules/@ipld/dag-pb/src/index.js","../../../../node_modules/ipfs-unixfs/dist/src/errors.js","../../../../node_modules/ipfs-unixfs/dist/src/unixfs.js","../../../../node_modules/ipfs-unixfs/dist/src/index.js","../../../../node_modules/progress-events/dist/src/index.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/utils/persist.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dag-builder/buffer-importer.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/errors.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dag-builder/dir.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dag-builder/file.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dag-builder/index.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dag-builder/validate-chunks.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/layout/balanced.js","../../../../node_modules/it-all/dist/src/index.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dir.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dir-flat.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@multiformats/murmur3/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/murmurhash3js-revisited/lib/murmurHash3js.js","../../../../node_modules/murmurhash3js-revisited/index.js","../../../../node_modules/@multiformats/murmur3/src/index.js","../../../../node_modules/sparse-array/index.js","../../../../node_modules/hamt-sharding/dist/src/bucket.js","../../../../node_modules/hamt-sharding/dist/src/consumable-buffer.js","../../../../node_modules/hamt-sharding/dist/src/consumable-hash.js","../../../../node_modules/hamt-sharding/dist/src/index.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/dir-sharded.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/flat-to-shard.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/utils/to-path-components.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/tree-builder.js","../../../../node_modules/ipfs-unixfs-importer/dist/src/index.js","../../../../node_modules/@helia/unixfs/dist/src/commands/add.js","../../../../node_modules/it-last/dist/src/index.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/errors.js","../../../../node_modules/cborg/lib/json/encode.js","../../../../node_modules/cborg/lib/json/decode.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@ipld/dag-json/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/@ipld/dag-json/src/index.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/identity.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/json.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/raw.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.js","../../../../node_modules/it-peekable/dist/src/index.js","../../../../node_modules/it-filter/dist/src/index.js","../../../../node_modules/it-map/dist/src/index.js","../../../../node_modules/it-parallel/dist/src/index.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/resolvers/index.js","../../../../node_modules/ipfs-unixfs-exporter/dist/src/index.js","../../../../node_modules/is-plain-obj/index.js","../../../../node_modules/merge-options/index.js","../../../../node_modules/@helia/unixfs/dist/src/errors.js","../../../../node_modules/weald/node_modules/ms/dist/index.mjs","../../../../node_modules/weald/dist/src/common.js","../../../../node_modules/weald/dist/src/browser.js","../../../../node_modules/@libp2p/logger/dist/src/index.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/consumable-hash.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/hamt-constants.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/persist.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/dir-sharded.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/hamt-utils.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/is-over-shard-threshold.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/add-link.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/cid-to-directory.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/cid-to-pblink.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/resolve.js","../../../../node_modules/@helia/unixfs/dist/src/commands/cat.js","../../../../node_modules/@helia/unixfs/node_modules/multiformats/dist/src/codecs/raw.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/constants.js","../../../../node_modules/@helia/unixfs/dist/src/commands/chmod.js","../../../../node_modules/@helia/unixfs/dist/src/commands/cp.js","../../../../node_modules/@helia/unixfs/dist/src/commands/ls.js","../../../../node_modules/@helia/unixfs/dist/src/commands/mkdir.js","../../../../node_modules/@helia/unixfs/dist/src/commands/utils/remove-link.js","../../../../node_modules/@helia/unixfs/dist/src/commands/rm.js","../../../../node_modules/@helia/unixfs/dist/src/commands/stat.js","../../../../node_modules/@helia/unixfs/dist/src/commands/touch.js","../../../../node_modules/@helia/unixfs/dist/src/unixfs.js","../../../../node_modules/@helia/unixfs/dist/src/index.js","../../../../node_modules/indexed-db-stream/lib/indexed-db-read-stream.js","../../../../node_modules/indexed-db-stream/lib/indexed-db-write-stream.js","../../../../node_modules/indexed-db-stream/lib/index.js","../../../../node_modules/platform/platform.js","../../../../node_modules/crypto-js/core.js","../../../../node_modules/crypto-js/md5.js","../../../../node_modules/crypto-js/enc-base64.js","../../../../node_modules/@constl/ipa/dist/décorateursCache.js","../../../../node_modules/@constl/ipa/dist/licences.js","../../../../node_modules/@constl/ipa/dist/epingles.js","../../../../node_modules/@constl/ipa/dist/types.js","../../../../node_modules/@constl/ipa/dist/composanteClient.js","../../../../node_modules/@constl/ipa/dist/profil.js","../../../../node_modules/it-to-buffer/dist/src/index.js","../../../../node_modules/file-saver/dist/FileSaver.min.js","../../../../node_modules/@constl/ipa/dist/bds.js","../../../../node_modules/@constl/ipa/dist/valid.js","../../../../node_modules/@constl/ipa/dist/dates.js","../../../../node_modules/@constl/ipa/dist/tableaux.js","../../../../node_modules/@constl/ipa/dist/variables.js","../../../../node_modules/lodash/_baseSum.js","../../../../node_modules/lodash/identity.js","../../../../node_modules/lodash/sum.js","../../../../node_modules/average/src/average.js","../../../../node_modules/variance/src/variance.js","../../../../node_modules/covariance/src/covariance.js","../../../../node_modules/ssim/src/ssim.js","../../../../node_modules/approx-string-match/build/src/index.js","../../../../node_modules/@constl/ipa/dist/recherche/utils.js","../../../../node_modules/@constl/ipa/dist/recherche/profil.js","../../../../node_modules/@constl/ipa/dist/reseau.js","../../../../node_modules/@constl/ipa/dist/encryption.js","../../../../node_modules/@constl/ipa/dist/favoris.js","../../../../node_modules/@constl/ipa/dist/projets.js","../../../../node_modules/@constl/ipa/dist/motsClefs.js","../../../../node_modules/@constl/ipa/dist/nuées.js","../../../../node_modules/@constl/ipa/dist/recherche/variable.js","../../../../node_modules/@constl/ipa/dist/recherche/motClef.js","../../../../node_modules/@constl/ipa/dist/recherche/bd.js","../../../../node_modules/@constl/ipa/dist/recherche/projet.js","../../../../node_modules/@constl/ipa/dist/recherche/nuée.js","../../../../node_modules/@constl/ipa/dist/recherche/recherche.js","../../../../node_modules/@constl/ipa/dist/importateur/xlsx.js","../../../../node_modules/@constl/ipa/dist/importateur/json.js","../../../../node_modules/@constl/ipa/dist/automatisation.js","../../../../node_modules/node-stdlib-browser/esm/mock/empty.js","../../../../node_modules/@constl/ipa/dist/stockageLocal.js","../../../../node_modules/crypto-js/sha256.js","../../../../node_modules/@constl/ipa/dist/protocoles.js","../../../../node_modules/err-code/index.js","../../../../node_modules/blockstore-core/dist/src/errors.js","../../../../node_modules/blockstore-core/dist/src/base.js","../../../../node_modules/blockstore-core/dist/src/memory.js","../../../../node_modules/blockstore-core/dist/src/tiered.js","../../../../node_modules/blockstore-core/dist/src/index.js","../../../../node_modules/datastore-core/dist/src/errors.js","../../../../node_modules/interface-datastore/dist/src/key.js","../../../../node_modules/datastore-core/dist/src/shard.js","../../../../node_modules/it-sort/dist/src/index.js","../../../../node_modules/it-take/dist/src/index.js","../../../../node_modules/datastore-core/dist/src/base.js","../../../../node_modules/datastore-core/dist/src/memory.js","../../../../node_modules/datastore-core/dist/src/sharding.js","../../../../node_modules/datastore-core/dist/src/tiered.js","../../../../node_modules/any-signal/dist/src/index.js","../../../../node_modules/it-foreach/dist/src/index.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@libp2p/utils/dist/src/tracked-map.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/ipfs-bitswap/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/varint-decoder/node_modules/varint/encode.js","../../../../node_modules/varint-decoder/node_modules/varint/decode.js","../../../../node_modules/varint-decoder/node_modules/varint/length.js","../../../../node_modules/varint-decoder/node_modules/varint/index.js","../../../../node_modules/varint-decoder/src/index.js","../../../../node_modules/ipfs-bitswap/dist/src/wantlist/entry.js","../../../../node_modules/ipfs-bitswap/dist/src/message/entry.js","../../../../node_modules/ipfs-bitswap/dist/src/utils/index.js","../../../../node_modules/varint/encode.js","../../../../node_modules/varint/decode.js","../../../../node_modules/varint/length.js","../../../../node_modules/varint/index.js","../../../../node_modules/ipfs-bitswap/dist/src/utils/varint-encoder.js","../../../../node_modules/ipfs-bitswap/dist/src/message/message.js","../../../../node_modules/ipfs-bitswap/dist/src/message/index.js","../../../../node_modules/ipfs-bitswap/dist/src/wantlist/index.js","../../../../node_modules/ipfs-bitswap/dist/src/decision-engine/ledger.js","../../../../node_modules/ipfs-bitswap/dist/src/utils/sorted-map.js","../../../../node_modules/ipfs-bitswap/dist/src/decision-engine/req-queue.js","../../../../node_modules/ipfs-bitswap/dist/src/decision-engine/task-merger.js","../../../../node_modules/ipfs-bitswap/dist/src/decision-engine/index.js","../../../../node_modules/it-length-prefixed/dist/src/utils.js","../../../../node_modules/it-length-prefixed/dist/src/encode.js","../../../../node_modules/it-length-prefixed/dist/src/errors.js","../../../../node_modules/it-length-prefixed/dist/src/decode.js","../../../../node_modules/ipfs-bitswap/dist/src/constants.js","../../../../node_modules/ipfs-bitswap/dist/src/network.js","../../../../node_modules/ipfs-bitswap/dist/src/notifications.js","../../../../node_modules/@vascosantos/moving-average/index.js","../../../../node_modules/ipfs-bitswap/dist/src/stats/stat.js","../../../../node_modules/ipfs-bitswap/dist/src/stats/index.js","../../../../node_modules/just-debounce-it/index.mjs","../../../../node_modules/ipfs-bitswap/dist/src/want-manager/msg-queue.js","../../../../node_modules/ipfs-bitswap/dist/src/want-manager/index.js","../../../../node_modules/ipfs-bitswap/dist/src/bitswap.js","../../../../node_modules/ipfs-bitswap/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/block-brokers/dist/src/bitswap.js","../../../../node_modules/@constl/ipa/node_modules/@helia/block-brokers/dist/src/trustless-gateway/trustless-gateway.js","../../../../node_modules/@constl/ipa/node_modules/@helia/block-brokers/dist/src/trustless-gateway/broker.js","../../../../node_modules/@constl/ipa/node_modules/@helia/block-brokers/dist/src/trustless-gateway/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/block-brokers/dist/src/utils/networked-storage.js","../../../../node_modules/race-event/dist/src/index.js","../../../../node_modules/race-signal/dist/src/index.js","../../../../node_modules/@libp2p/utils/dist/src/queue/recipient.js","../../../../node_modules/@libp2p/utils/dist/src/queue/job.js","../../../../node_modules/@libp2p/utils/dist/src/queue/index.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bases/base36.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/codecs/json.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/codecs/raw.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/dag-walkers.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/pins.js","../../../../node_modules/observable-webworkers/dist/src/index.js","../../../../node_modules/mortice/dist/src/constants.js","../../../../node_modules/mortice/dist/src/utils.js","../../../../node_modules/mortice/dist/src/browser.js","../../../../node_modules/mortice/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/storage.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/datastore-version.js","../../../../node_modules/@constl/ipa/node_modules/multiformats/dist/src/hashes/identity.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/default-hashers.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/helia.js","../../../../node_modules/@libp2p/peer-id/dist/src/index.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/constants.js","../../../../node_modules/@protobufjs/aspromise/index.js","../../../../node_modules/@protobufjs/base64/index.js","../../../../node_modules/@protobufjs/eventemitter/index.js","../../../../node_modules/@protobufjs/float/index.js","../../../../node_modules/@protobufjs/inquire/index.js","../../../../node_modules/@protobufjs/utf8/index.js","../../../../node_modules/@protobufjs/pool/index.js","../../../../node_modules/protobufjs/src/util/longbits.js","../../../../node_modules/protobufjs/src/util/minimal.js","../../../../node_modules/protobufjs/src/writer.js","../../../../node_modules/protobufjs/src/writer_buffer.js","../../../../node_modules/protobufjs/src/reader.js","../../../../node_modules/protobufjs/src/reader_buffer.js","../../../../node_modules/protobufjs/src/rpc/service.js","../../../../node_modules/protobufjs/src/rpc.js","../../../../node_modules/protobufjs/src/roots.js","../../../../node_modules/protobufjs/src/index-minimal.js","../../../../node_modules/protobufjs/minimal.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message/decodeRpc.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message/rpc.cjs","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message/rpc.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message-cache.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/types.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/metrics.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/constants.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score-params.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score-thresholds.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/set.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/compute-score.js","../../../../node_modules/denque/index.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/message-deliveries.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/scoreMetrics.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/stream.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/tracer.js","../../../../node_modules/@libp2p/crypto/dist/src/webcrypto-browser.js","../../../../node_modules/@libp2p/crypto/dist/src/util.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/ed25519-browser.js","../../../../node_modules/@libp2p/crypto/dist/src/ciphers/aes-gcm.browser.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/exporter.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/keys.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/ed25519-class.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/importer.js","../../../../node_modules/@libp2p/crypto/dist/src/random-bytes.js","../../../../node_modules/@noble/hashes/esm/pbkdf2.js","../../../../node_modules/pvtsutils/build/index.es.js","../../../../node_modules/pvutils/build/utils.es.js","../../../../node_modules/asn1js/build/index.es.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/rsa-utils.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/rsa-browser.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/rsa-class.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/secp256k1-browser.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/secp256k1-class.js","../../../../node_modules/@libp2p/crypto/dist/src/keys/index.js","../../../../node_modules/@noble/hashes/esm/sha1.js","../../../../node_modules/@libp2p/crypto/dist/src/pbkdf2.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/buildRawMessage.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/shuffle.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/messageIdToString.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/publishConfig.js","../../../../node_modules/@libp2p/pubsub/dist/src/utils.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/msgIdFn.js","../../../../node_modules/@chainsafe/is-ip/lib/parser.js","../../../../node_modules/@chainsafe/is-ip/lib/parse.js","../../../../node_modules/@chainsafe/is-ip/lib/is-ip.js","../../../../node_modules/@multiformats/multiaddr/dist/src/ip.js","../../../../node_modules/@multiformats/multiaddr/dist/src/protocols-table.js","../../../../node_modules/@multiformats/multiaddr/dist/src/convert.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/multiaddr.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/time-cache.js","../../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/index.js","../../../../node_modules/it-queueless-pushable/dist/src/index.js","../../../../node_modules/it-byte-stream/dist/src/errors.js","../../../../node_modules/it-byte-stream/dist/src/index.js","../../../../node_modules/it-length-prefixed-stream/dist/src/errors.js","../../../../node_modules/it-length-prefixed-stream/dist/src/index.js","../../../../node_modules/it-pair/dist/src/index.js","../../../../node_modules/it-pair/dist/src/duplex.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/constants.js","../../../../node_modules/@constl/ipa/node_modules/@noble/ciphers/esm/utils.js","../../../../node_modules/@constl/ipa/node_modules/@noble/ciphers/esm/_assert.js","../../../../node_modules/@constl/ipa/node_modules/@noble/ciphers/esm/_poly1305.js","../../../../node_modules/@constl/ipa/node_modules/@noble/ciphers/esm/_arx.js","../../../../node_modules/@constl/ipa/node_modules/@noble/ciphers/esm/chacha.js","../../../../node_modules/@noble/hashes/esm/hkdf.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/crypto/js.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/crypto/index.browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/encoder.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/crypto/streaming.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/errors.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/util.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/ed25519-browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/webcrypto.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/ciphers/aes-gcm.browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/exporter.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/keys.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/ed25519-class.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/ecdh-browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/random-bytes.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/jwk2pem.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/rsa-utils.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/rsa-browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/rsa-class.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/secp256k1-browser.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/secp256k1-class.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/node_modules/@libp2p/crypto/dist/src/keys/index.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/proto/payload.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/utils.js","../../../../node_modules/uint8arrays/dist/src/xor.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/nonce.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/handshakes/abstract-handshake.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/handshakes/xx.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/logger.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/handshake-xx.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/metrics.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/noise.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@chainsafe/libp2p-noise/dist/src/index.js","../../../../node_modules/get-iterator/dist/src/index.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/constants.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/config.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/frame.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/decode.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/encode.js","../../../../node_modules/@libp2p/utils/dist/src/is-promise.js","../../../../node_modules/@libp2p/utils/dist/src/close-source.js","../../../../node_modules/@libp2p/utils/dist/src/abstract-stream.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/stream.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/muxer.js","../../../../node_modules/@chainsafe/libp2p-yamux/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/interface/dist/src/content-routing/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/interface/dist/src/errors.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/interface/dist/src/events.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/interface/dist/src/peer-routing/index.js","../../../../node_modules/ms/index.js","../../../../node_modules/debug/src/common.js","../../../../node_modules/debug/src/browser.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/vendor/base-x.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bytes.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base32.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base58.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base64.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/logger/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/interface/dist/src/peer-id/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base10.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base16.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base2.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base256emoji.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base36.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/base8.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/bases/identity.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/codecs/json.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/vendor/varint.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/varint.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/hashes/digest.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/hashes/identity.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/hashes/hasher.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/hashes/sha2-browser.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/cid.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/multiformats/src/basics.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/uint8arrays/dist/src/equals.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/@libp2p/peer-id/dist/src/index.js","../../../../node_modules/@multiformats/multiaddr/dist/src/codec.js","../../../../node_modules/@multiformats/multiaddr/dist/src/multiaddr.js","../../../../node_modules/@multiformats/multiaddr/dist/src/index.js","../../../../node_modules/browser-readablestream-to-it/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/interface/dist/src/errors.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/util/as-uint8array.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/vendor/base-x.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bytes.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base10.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base16.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base2.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base256emoji.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base32.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base36.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base58.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base64.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/base8.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/bases/identity.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/codecs/json.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/vendor/varint.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/varint.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/hashes/digest.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/hashes/identity.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/hashes/hasher.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/hashes/sha2-browser.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/cid.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/multiformats/src/basics.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/alloc.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/util/bases.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/from-string.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/equals.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/ed25519-browser.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/concat.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/webcrypto.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/ciphers/aes-gcm.browser.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/exporter.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/keys.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/ed25519-class.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/node_modules/uint8arrays/dist/src/to-string.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/util.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/ecdh-browser.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/random-bytes.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/jwk2pem.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/rsa-utils.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/rsa-browser.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/rsa-class.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/secp256k1.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/secp256k1-class.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/crypto/dist/src/keys/index.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/logger/dist/src/index.js","../../../../node_modules/timestamp-nano/dist/timestamp.min.js","../../../../node_modules/@constl/ipa/node_modules/ipns/dist/src/errors.js","../../../../node_modules/@constl/ipa/node_modules/ipns/dist/src/pb/ipns.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/interface/dist/src/peer-id/index.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/peer-id/node_modules/uint8arrays/dist/src/equals.js","../../../../node_modules/@constl/ipa/node_modules/ipns/node_modules/@libp2p/peer-id/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/ipns/dist/src/utils.js","../../../../node_modules/@constl/ipa/node_modules/ipns/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/ipns/dist/src/validator.js","../../../../node_modules/it-ndjson/dist/src/parse.js","../../../../node_modules/@constl/ipa/node_modules/p-timeout/index.js","../../../../node_modules/@constl/ipa/node_modules/p-queue/dist/lower-bound.js","../../../../node_modules/@constl/ipa/node_modules/p-queue/dist/priority-queue.js","../../../../node_modules/@constl/ipa/node_modules/p-queue/dist/index.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/uint8arrays/dist/src/util/as-uint8array.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/uint8arrays/dist/src/alloc.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/uint8arrays/dist/src/util/bases.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/uint8arrays/dist/src/from-string.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/dist/src/routings.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/dist/src/client.js","../../../../node_modules/@constl/ipa/node_modules/@helia/delegated-routing-v1-http-api-client/dist/src/index.js","../../../../node_modules/@libp2p/peer-id-factory/dist/src/index.js","../../../../node_modules/netmask/lib/netmask.js","../../../../node_modules/@libp2p/utils/dist/src/private-ip.js","../../../../node_modules/@libp2p/autonat/dist/src/constants.js","../../../../node_modules/@libp2p/autonat/dist/src/pb/index.js","../../../../node_modules/@libp2p/autonat/dist/src/autonat.js","../../../../node_modules/@libp2p/autonat/dist/src/index.js","../../../../node_modules/@multiformats/mafmt/dist/src/index.js","../../../../node_modules/@libp2p/bootstrap/dist/src/index.js","../../../../node_modules/@libp2p/peer-record/dist/src/errors.js","../../../../node_modules/@libp2p/peer-record/dist/src/envelope/envelope.js","../../../../node_modules/@libp2p/peer-record/dist/src/envelope/index.js","../../../../node_modules/@libp2p/utils/dist/src/array-equals.js","../../../../node_modules/@libp2p/peer-record/dist/src/peer-record/consts.js","../../../../node_modules/@libp2p/peer-record/dist/src/peer-record/peer-record.js","../../../../node_modules/@libp2p/peer-record/dist/src/peer-record/index.js","../../../../node_modules/it-protobuf-stream/dist/src/index.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/constants.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/pb/index.js","../../../../node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/utils.js","../../../../node_modules/@libp2p/peer-collections/dist/src/util.js","../../../../node_modules/@libp2p/peer-collections/dist/src/map.js","../../../../node_modules/@libp2p/peer-collections/dist/src/set.js","../../../../node_modules/@libp2p/utils/dist/src/filters/bloom-filter.js","../../../../node_modules/@libp2p/utils/dist/src/filters/fingerprint.js","../../../../node_modules/@libp2p/utils/dist/src/filters/utils.js","../../../../node_modules/@libp2p/utils/dist/src/filters/bucket.js","../../../../node_modules/@sindresorhus/fnv1a/index.js","../../../../node_modules/@libp2p/utils/dist/src/filters/hashes.js","../../../../node_modules/@libp2p/utils/dist/src/filters/cuckoo-filter.js","../../../../node_modules/@libp2p/utils/dist/src/filters/scalable-cuckoo-filter.js","../../../../node_modules/@libp2p/peer-collections/dist/src/filter.js","../../../../node_modules/@libp2p/utils/dist/src/stream-to-ma-conn.js","../../../../node_modules/@libp2p/utils/dist/src/peer-queue.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/transport/discovery.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/transport/listener.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/transport/reservation-store.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/transport/transport.js","../../../../node_modules/@libp2p/circuit-relay-v2/dist/src/transport/index.js","../../../../node_modules/delay/index.js","../../../../node_modules/@libp2p/dcutr/dist/src/pb/message.js","../../../../node_modules/@multiformats/multiaddr-matcher/dist/src/index.js","../../../../node_modules/@libp2p/dcutr/dist/src/utils.js","../../../../node_modules/@libp2p/dcutr/dist/src/dcutr.js","../../../../node_modules/@libp2p/dcutr/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@libp2p/identify/dist/src/consts.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@libp2p/identify/dist/src/pb/message.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@libp2p/identify/dist/src/identify.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/@libp2p/identify/dist/src/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/constants.js","../../../../node_modules/@libp2p/record/dist/src/record.js","../../../../node_modules/@libp2p/record/dist/src/utils.js","../../../../node_modules/@libp2p/record/dist/src/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/message/dht.js","../../../../node_modules/@libp2p/kad-dht/dist/src/query/events.js","../../../../node_modules/@libp2p/kad-dht/dist/src/record/selectors.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/@libp2p/kad-dht/dist/src/record/validators.js","../../../../node_modules/@libp2p/kad-dht/dist/src/utils.js","../../../../node_modules/@libp2p/kad-dht/dist/src/content-fetching/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/message/utils.js","../../../../node_modules/@libp2p/kad-dht/dist/src/content-routing/index.js","../../../../node_modules/@libp2p/utils/dist/src/moving-average.js","../../../../node_modules/@libp2p/utils/dist/src/adaptive-timeout.js","../../../../node_modules/@libp2p/kad-dht/dist/src/network.js","../../../../node_modules/uint8arrays/dist/src/xor-compare.js","../../../../node_modules/@libp2p/kad-dht/dist/src/peer-list/peer-distance-list.js","../../../../node_modules/@libp2p/kad-dht/dist/src/peer-routing/index.js","../../../../node_modules/hashlru/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/providers.js","../../../../node_modules/@libp2p/kad-dht/dist/src/query/query-path.js","../../../../node_modules/@libp2p/kad-dht/dist/src/query/manager.js","../../../../node_modules/it-length/dist/src/index.js","../../../../node_modules/p-event/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/query-self.js","../../../../node_modules/@libp2p/kad-dht/dist/src/routing-table/k-bucket.js","../../../../node_modules/@libp2p/kad-dht/dist/src/routing-table/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/routing-table/generated-prefix-list-browser.js","../../../../node_modules/@libp2p/kad-dht/dist/src/routing-table/refresh.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@libp2p/kad-dht/node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/add-provider.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/find-node.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/get-providers.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/get-value.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/ping.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/handlers/put-value.js","../../../../node_modules/@libp2p/kad-dht/dist/src/rpc/index.js","../../../../node_modules/@libp2p/kad-dht/dist/src/topology-listener.js","../../../../node_modules/@libp2p/kad-dht/dist/src/kad-dht.js","../../../../node_modules/@libp2p/kad-dht/dist/src/index.js","../../../../node_modules/truncate-utf8-bytes/lib/truncate.js","../../../../node_modules/utf8-byte-length/browser.js","../../../../node_modules/truncate-utf8-bytes/browser.js","../../../../node_modules/sanitize-filename/index.js","../../../../node_modules/@libp2p/keychain/dist/src/errors.js","../../../../node_modules/@libp2p/keychain/dist/src/keychain.js","../../../../node_modules/@libp2p/keychain/dist/src/index.js","../../../../node_modules/@libp2p/utils/dist/src/rate-limiter.js","../../../../node_modules/@libp2p/mplex/dist/src/message-types.js","../../../../node_modules/@libp2p/mplex/dist/src/decode.js","../../../../node_modules/@libp2p/mplex/dist/src/encode.js","../../../../node_modules/@libp2p/mplex/dist/src/stream.js","../../../../node_modules/@libp2p/mplex/dist/src/mplex.js","../../../../node_modules/@libp2p/mplex/dist/src/index.js","../../../../node_modules/@libp2p/ping/dist/src/constants.js","../../../../node_modules/@libp2p/ping/dist/src/ping.js","../../../../node_modules/@libp2p/ping/dist/src/index.js","../../../../node_modules/@libp2p/webrtc/dist/src/error.js","../../../../node_modules/detect-browser/es/index.js","../../../../node_modules/@libp2p/webrtc/dist/src/constants.js","../../../../node_modules/@libp2p/webrtc/dist/src/util.js","../../../../node_modules/@libp2p/webrtc/dist/src/maconn.js","../../../../node_modules/@libp2p/webrtc/dist/src/pb/message.js","../../../../node_modules/@libp2p/webrtc/dist/src/stream.js","../../../../node_modules/@libp2p/webrtc/dist/src/muxer.js","../../../../node_modules/@libp2p/webrtc/dist/src/webrtc/index.browser.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/pb/message.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/util.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/initiate-connection.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/listener.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/signaling-stream-handler.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-private/transport.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/constants.js","../../../../node_modules/@noble/ciphers/esm/_assert.js","../../../../node_modules/@noble/ciphers/esm/utils.js","../../../../node_modules/@noble/ciphers/esm/_arx.js","../../../../node_modules/@noble/ciphers/esm/_poly1305.js","../../../../node_modules/@noble/ciphers/esm/chacha.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/crypto/js.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/crypto/index.browser.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/crypto.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/encoder.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/metrics.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/logger.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/errors.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/nonce.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/protocol.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/proto/payload.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/utils.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/performHandshake.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/streaming.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/noise.js","../../../../node_modules/@chainsafe/libp2p-noise/dist/src/index.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base10.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base16.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base2.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base256emoji.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base36.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/base8.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/bases/identity.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/codecs/json.js","../../../../node_modules/@libp2p/webrtc/node_modules/multiformats/dist/src/basics.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-public/sdp.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-public/util.js","../../../../node_modules/@libp2p/webrtc/dist/src/private-to-public/transport.js","../../../../node_modules/@libp2p/webrtc/dist/src/index.js","../../../../node_modules/@multiformats/multiaddr-to-uri/dist/src/index.js","../../../../node_modules/it-ws/dist/src/ready.js","../../../../node_modules/it-ws/dist/src/sink.js","../../../../node_modules/event-iterator/lib/event-iterator.js","../../../../node_modules/event-iterator/lib/dom.js","../../../../node_modules/it-ws/dist/src/source.js","../../../../node_modules/it-ws/dist/src/duplex.js","../../../../node_modules/it-ws/dist/src/web-socket.browser.js","../../../../node_modules/it-ws/dist/src/ws-url.js","../../../../node_modules/it-ws/dist/src/client.js","../../../../node_modules/@libp2p/websockets/dist/src/constants.js","../../../../node_modules/@libp2p/websockets/dist/src/filters.js","../../../../node_modules/@libp2p/websockets/dist/src/listener.browser.js","../../../../node_modules/@libp2p/websockets/dist/src/socket-to-conn.js","../../../../node_modules/@libp2p/websockets/dist/src/index.js","../../../../node_modules/@libp2p/webtransport/dist/src/listener.browser.js","../../../../node_modules/@libp2p/webtransport/dist/src/stream.js","../../../../node_modules/@libp2p/webtransport/dist/src/utils/inert-duplex.js","../../../../node_modules/@libp2p/webtransport/dist/src/muxer.js","../../../../node_modules/@libp2p/webtransport/dist/src/utils/is-subset.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base10.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base16.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base2.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base256emoji.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base36.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base64.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/base8.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/bases/identity.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/codecs/json.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/varint.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/@libp2p/webtransport/node_modules/multiformats/dist/src/basics.js","../../../../node_modules/@libp2p/webtransport/dist/src/utils/parse-multiaddr.js","../../../../node_modules/@libp2p/webtransport/dist/src/webtransport.browser.js","../../../../node_modules/@libp2p/webtransport/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/ipns/dist/src/errors.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/ipns/dist/src/pb/ipns.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/ipns/dist/src/utils.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/ipns/dist/src/selector.js","../../../../node_modules/@constl/ipa/node_modules/helia/node_modules/ipns/dist/src/validator.js","../../../../node_modules/libp2p/dist/src/version.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/version.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/bootstrappers.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/libp2p-defaults.browser.js","../../../../node_modules/@libp2p/peer-store/dist/src/errors.js","../../../../node_modules/@libp2p/peer-store/dist/src/pb/peer.js","../../../../node_modules/@libp2p/peer-store/dist/src/utils/bytes-to-peer.js","../../../../node_modules/@libp2p/peer-store/dist/src/utils/peer-id-to-datastore-key.js","../../../../node_modules/@libp2p/peer-store/dist/src/utils/dedupe-addresses.js","../../../../node_modules/@libp2p/peer-store/dist/src/utils/to-peer-pb.js","../../../../node_modules/@libp2p/peer-store/dist/src/store.js","../../../../node_modules/@libp2p/peer-store/dist/src/index.js","../../../../node_modules/libp2p/dist/src/address-manager/utils.js","../../../../node_modules/libp2p/dist/src/address-manager/index.js","../../../../node_modules/libp2p/dist/src/components.js","../../../../node_modules/libp2p/dist/src/config/connection-gater.browser.js","../../../../node_modules/@libp2p/utils/dist/src/multiaddr/is-private.js","../../../../node_modules/@libp2p/utils/dist/src/address-sort.js","../../../../node_modules/@multiformats/dns/dist/src/utils/get-types.js","../../../../node_modules/@multiformats/dns/dist/src/utils/to-dns-response.js","../../../../node_modules/@multiformats/dns/dist/src/resolvers/dns-json-over-https.js","../../../../node_modules/@multiformats/dns/dist/src/resolvers/default.browser.js","../../../../node_modules/@multiformats/dns/dist/src/utils/cache.js","../../../../node_modules/@multiformats/dns/dist/src/dns.js","../../../../node_modules/@multiformats/dns/dist/src/index.js","../../../../node_modules/@multiformats/multiaddr/dist/src/resolvers/dnsaddr.js","../../../../node_modules/libp2p/dist/src/errors.js","../../../../node_modules/libp2p/dist/src/config.js","../../../../node_modules/libp2p/dist/src/get-peer.js","../../../../node_modules/libp2p/dist/src/connection-manager/constants.defaults.js","../../../../node_modules/libp2p/dist/src/connection-manager/constants.browser.js","../../../../node_modules/libp2p/dist/src/connection-manager/auto-dial.js","../../../../node_modules/@libp2p/utils/dist/src/close.js","../../../../node_modules/libp2p/dist/src/connection-manager/connection-pruner.js","../../../../node_modules/@libp2p/utils/dist/src/priority-queue.js","../../../../node_modules/libp2p/dist/src/connection-manager/utils.js","../../../../node_modules/libp2p/dist/src/connection-manager/dial-queue.js","../../../../node_modules/libp2p/dist/src/connection-manager/index.js","../../../../node_modules/libp2p/dist/src/connection-monitor.js","../../../../node_modules/libp2p/dist/src/content-routing.js","../../../../node_modules/libp2p/dist/src/peer-routing.js","../../../../node_modules/libp2p/dist/src/random-walk.js","../../../../node_modules/libp2p/dist/src/registrar.js","../../../../node_modules/libp2p/dist/src/transport-manager.js","../../../../node_modules/@libp2p/multistream-select/dist/src/constants.js","../../../../node_modules/@libp2p/multistream-select/dist/src/multistream.js","../../../../node_modules/@libp2p/multistream-select/dist/src/select.js","../../../../node_modules/@libp2p/multistream-select/dist/src/handle.js","../../../../node_modules/libp2p/dist/src/connection/index.js","../../../../node_modules/libp2p/dist/src/upgrader.js","../../../../node_modules/libp2p/dist/src/libp2p.js","../../../../node_modules/libp2p/dist/src/index.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/utils/libp2p.js","../../../../node_modules/@constl/ipa/node_modules/helia/dist/src/index.js","../../../../node_modules/blockstore-level/dist/src/index.js","../../../../node_modules/@libp2p/identify/dist/src/consts.js","../../../../node_modules/@libp2p/identify/dist/src/pb/message.js","../../../../node_modules/@libp2p/identify/dist/src/utils.js","../../../../node_modules/@libp2p/identify/dist/src/identify.js","../../../../node_modules/@libp2p/identify/dist/src/index.js","../../../../node_modules/@libp2p/pubsub-peer-discovery/dist/src/peer.js","../../../../node_modules/@libp2p/pubsub-peer-discovery/dist/src/index.js","../../../../node_modules/@constl/ipa/dist/sfip/const.js","../../../../node_modules/@constl/ipa/dist/sfip/configNode.js","../../../../node_modules/@constl/ipa/dist/sfip/configÉlectronPrincipal.js","../../../../node_modules/@constl/ipa/dist/sfip/configNavigateur.js","../../../../node_modules/@constl/ipa/dist/sfip/configTravailleur.js","../../../../node_modules/@constl/ipa/dist/sfip/index.js","../../../../node_modules/@constl/ipa/dist/client.js","../../../../node_modules/@constl/ipa/dist/mandataire/enveloppe.js","../../../../node_modules/@constl/ipa/dist/mandataire/ipaProc.js","../../src/utils.ts","../../src/plugins/constellation/browser.ts","../../../../node_modules/vuetify/lib/components/VAlert/VAlertTitle.mjs","../../../../node_modules/vuetify/lib/components/VAlert/VAlert.mjs","../../../../node_modules/vuetify/lib/components/VLabel/VLabel.mjs","../../../../node_modules/vuetify/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs","../../../../node_modules/vuetify/lib/components/VSelectionControl/VSelectionControl.mjs","../../../../node_modules/vuetify/lib/components/VCheckbox/VCheckboxBtn.mjs","../../../../node_modules/vuetify/lib/components/VInput/InputIcon.mjs","../../../../node_modules/vuetify/lib/components/VMessages/VMessages.mjs","../../../../node_modules/vuetify/lib/composables/focus.mjs","../../../../node_modules/vuetify/lib/composables/form.mjs","../../../../node_modules/vuetify/lib/composables/validation.mjs","../../../../node_modules/vuetify/lib/components/VInput/VInput.mjs","../../../../node_modules/vuetify/lib/components/VCheckbox/VCheckbox.mjs","../../../../node_modules/vuetify/lib/composables/goto.mjs","../../../../node_modules/vuetify/lib/components/VSlideGroup/helpers.mjs","../../../../node_modules/vuetify/lib/components/VSlideGroup/VSlideGroup.mjs","../../../../node_modules/vuetify/lib/components/VChipGroup/VChipGroup.mjs","../../../../node_modules/vuetify/lib/components/VChip/VChip.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/util/point.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/locationStrategies.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/requestNewFrame.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/scrollStrategies.mjs","../../../../node_modules/vuetify/lib/components/VMenu/shared.mjs","../../../../node_modules/vuetify/lib/composables/delay.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/useActivator.mjs","../../../../node_modules/vuetify/lib/composables/hydration.mjs","../../../../node_modules/vuetify/lib/composables/lazy.mjs","../../../../node_modules/vuetify/lib/composables/scopeId.mjs","../../../../node_modules/vuetify/lib/composables/stack.mjs","../../../../node_modules/vuetify/lib/composables/teleport.mjs","../../../../node_modules/vuetify/lib/directives/click-outside/index.mjs","../../../../node_modules/vuetify/lib/components/VOverlay/VOverlay.mjs","../../../../node_modules/vuetify/lib/composables/forwardRefs.mjs","../../../../node_modules/vuetify/lib/components/VMenu/VMenu.mjs","../../../../node_modules/vuetify/lib/components/VCounter/VCounter.mjs","../../../../node_modules/vuetify/lib/components/VField/VFieldLabel.mjs","../../../../node_modules/vuetify/lib/components/VField/VField.mjs","../../../../node_modules/vuetify/lib/components/VTextField/VTextField.mjs","../../../../node_modules/vuetify/lib/components/VVirtualScroll/VVirtualScrollItem.mjs","../../../../node_modules/vuetify/lib/composables/virtual.mjs","../../../../node_modules/vuetify/lib/components/VVirtualScroll/VVirtualScroll.mjs","../../../../node_modules/vuetify/lib/components/VSelect/useScrolling.mjs","../../../../node_modules/vuetify/lib/components/VSelect/VSelect.mjs","../../../../node_modules/vuetify/lib/composables/filter.mjs","../../../../node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.mjs","../../../../node_modules/vuetify/lib/components/VBadge/VBadge.mjs","../../../../node_modules/vuetify/lib/components/VBanner/VBannerActions.mjs","../../../../node_modules/vuetify/lib/components/VBanner/VBannerText.mjs","../../../../node_modules/vuetify/lib/components/VBanner/VBanner.mjs","../../../../node_modules/vuetify/lib/components/VBottomNavigation/VBottomNavigation.mjs","../../../../node_modules/vuetify/lib/components/VDialog/VDialog.mjs","../../../../node_modules/vuetify/lib/components/VBottomSheet/VBottomSheet.mjs","../../../../node_modules/vuetify/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs","../../../../node_modules/vuetify/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs","../../../../node_modules/vuetify/lib/components/VBreadcrumbs/VBreadcrumbs.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCardActions.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCardSubtitle.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCardTitle.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCardItem.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCardText.mjs","../../../../node_modules/vuetify/lib/components/VCard/VCard.mjs","../../../../node_modules/vuetify/lib/directives/touch/index.mjs","../../../../node_modules/vuetify/lib/components/VWindow/VWindow.mjs","../../../../node_modules/vuetify/lib/components/VCarousel/VCarousel.mjs","../../../../node_modules/vuetify/lib/components/VWindow/VWindowItem.mjs","../../../../node_modules/vuetify/lib/components/VCarousel/VCarouselItem.mjs","../../../../node_modules/vuetify/lib/components/VCode/index.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/VColorPickerCanvas.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/util/index.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/VColorPickerEdit.mjs","../../../../node_modules/vuetify/lib/components/VSlider/slider.mjs","../../../../node_modules/vuetify/lib/components/VSlider/VSliderThumb.mjs","../../../../node_modules/vuetify/lib/components/VSlider/VSliderTrack.mjs","../../../../node_modules/vuetify/lib/components/VSlider/VSlider.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/VColorPickerPreview.mjs","../../../../node_modules/vuetify/lib/util/colors.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/VColorPickerSwatches.mjs","../../../../node_modules/vuetify/lib/components/VColorPicker/VColorPicker.mjs","../../../../node_modules/vuetify/lib/components/VCombobox/VCombobox.mjs","../../../../node_modules/vuetify/lib/composables/date/adapters/vuetify.mjs","../../../../node_modules/vuetify/lib/composables/date/date.mjs","../../../../node_modules/vuetify/lib/components/VConfirmEdit/VConfirmEdit.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/expand.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/group.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/options.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/paginate.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/select.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/sort.mjs","../../../../node_modules/vuetify/lib/components/VDataIterator/composables/items.mjs","../../../../node_modules/vuetify/lib/components/VDataIterator/VDataIterator.mjs","../../../../node_modules/vuetify/lib/composables/refs.mjs","../../../../node_modules/vuetify/lib/components/VPagination/VPagination.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableFooter.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableColumn.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/headers.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableHeaders.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableGroupHeaderRow.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableRow.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableRows.mjs","../../../../node_modules/vuetify/lib/components/VTable/VTable.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/composables/items.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTable.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableVirtual.mjs","../../../../node_modules/vuetify/lib/components/VDataTable/VDataTableServer.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePickerControls.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePickerHeader.mjs","../../../../node_modules/vuetify/lib/composables/calendar.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePickerMonth.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePickerMonths.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePickerYears.mjs","../../../../node_modules/vuetify/lib/labs/VPicker/VPickerTitle.mjs","../../../../node_modules/vuetify/lib/labs/VPicker/VPicker.mjs","../../../../node_modules/vuetify/lib/components/VDatePicker/VDatePicker.mjs","../../../../node_modules/vuetify/lib/components/VEmptyState/VEmptyState.mjs","../../../../node_modules/vuetify/lib/components/VExpansionPanel/shared.mjs","../../../../node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanelText.mjs","../../../../node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs","../../../../node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanel.mjs","../../../../node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanels.mjs","../../../../node_modules/vuetify/lib/components/VFab/VFab.mjs","../../../../node_modules/vuetify/lib/components/VFileInput/VFileInput.mjs","../../../../node_modules/vuetify/lib/components/VForm/VForm.mjs","../../../../node_modules/vuetify/lib/components/VHover/VHover.mjs","../../../../node_modules/vuetify/lib/components/VInfiniteScroll/VInfiniteScroll.mjs","../../../../node_modules/vuetify/lib/components/VItemGroup/VItemGroup.mjs","../../../../node_modules/vuetify/lib/components/VItemGroup/VItem.mjs","../../../../node_modules/vuetify/lib/components/VKbd/index.mjs","../../../../node_modules/vuetify/lib/components/VLayout/VLayout.mjs","../../../../node_modules/vuetify/lib/components/VLayout/VLayoutItem.mjs","../../../../node_modules/vuetify/lib/components/VLazy/VLazy.mjs","../../../../node_modules/vuetify/lib/components/VLocaleProvider/VLocaleProvider.mjs","../../../../node_modules/vuetify/lib/components/VNavigationDrawer/sticky.mjs","../../../../node_modules/vuetify/lib/composables/touch.mjs","../../../../node_modules/vuetify/lib/components/VNavigationDrawer/touch.mjs","../../../../node_modules/vuetify/lib/components/VNavigationDrawer/VNavigationDrawer.mjs","../../../../node_modules/vuetify/lib/components/VNoSsr/VNoSsr.mjs","../../../../node_modules/vuetify/lib/components/VOtpInput/VOtpInput.mjs","../../../../node_modules/vuetify/lib/components/VParallax/VParallax.mjs","../../../../node_modules/vuetify/lib/components/VRadio/VRadio.mjs","../../../../node_modules/vuetify/lib/components/VRadioGroup/VRadioGroup.mjs","../../../../node_modules/vuetify/lib/components/VRangeSlider/VRangeSlider.mjs","../../../../node_modules/vuetify/lib/components/VRating/VRating.mjs","../../../../node_modules/vuetify/lib/components/VSkeletonLoader/VSkeletonLoader.mjs","../../../../node_modules/vuetify/lib/components/VSlideGroup/VSlideGroupItem.mjs","../../../../node_modules/vuetify/lib/components/VSnackbar/VSnackbar.mjs","../../../../node_modules/vuetify/lib/components/VSparkline/util/line.mjs","../../../../node_modules/vuetify/lib/components/VSparkline/VBarline.mjs","../../../../node_modules/vuetify/lib/components/VSparkline/util/path.mjs","../../../../node_modules/vuetify/lib/components/VSparkline/VTrendline.mjs","../../../../node_modules/vuetify/lib/components/VSparkline/VSparkline.mjs","../../../../node_modules/vuetify/lib/components/VSpeedDial/VSpeedDial.mjs","../../../../node_modules/vuetify/lib/components/VStepper/shared.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepperActions.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepperHeader.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepperItem.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepperWindow.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepperWindowItem.mjs","../../../../node_modules/vuetify/lib/components/VStepper/VStepper.mjs","../../../../node_modules/vuetify/lib/components/VSwitch/VSwitch.mjs","../../../../node_modules/vuetify/lib/components/VSystemBar/VSystemBar.mjs","../../../../node_modules/vuetify/lib/components/VTabs/shared.mjs","../../../../node_modules/vuetify/lib/components/VTabs/VTab.mjs","../../../../node_modules/vuetify/lib/components/VTabs/VTabsWindow.mjs","../../../../node_modules/vuetify/lib/components/VTabs/VTabsWindowItem.mjs","../../../../node_modules/vuetify/lib/components/VTabs/VTabs.mjs","../../../../node_modules/vuetify/lib/components/VTextarea/VTextarea.mjs","../../../../node_modules/vuetify/lib/components/VThemeProvider/VThemeProvider.mjs","../../../../node_modules/vuetify/lib/components/VTimeline/VTimelineDivider.mjs","../../../../node_modules/vuetify/lib/components/VTimeline/VTimelineItem.mjs","../../../../node_modules/vuetify/lib/components/VTimeline/VTimeline.mjs","../../../../node_modules/vuetify/lib/components/VToolbar/VToolbarItems.mjs","../../../../node_modules/vuetify/lib/components/VTooltip/VTooltip.mjs","../../../../node_modules/vuetify/lib/components/VValidation/VValidation.mjs","../../../../node_modules/vuetify/lib/directives/mutate/index.mjs","../../../../node_modules/vuetify/lib/directives/resize/index.mjs","../../../../node_modules/vuetify/lib/directives/scroll/index.mjs","../../../../node_modules/vuetify/lib/composables/directiveComponent.mjs","../../../../node_modules/vuetify/lib/directives/tooltip/index.mjs","../../../../node_modules/vuetify/lib/framework.mjs","../../../../node_modules/vuetify/lib/iconsets/fa.mjs","../../src/plugins/vuetify.ts","../../src/plugins/webfontloader.ts","../../src/plugins/orbiter/consts.ts","../../src/plugins/orbiter/dev/index.ts","../../../../node_modules/tiny-typed-emitter/lib/index.js","../../../../node_modules/semaphore-async-await/dist/Semaphore.js","../../../../node_modules/semaphore-async-await/dist/Lock.js","../../../../node_modules/semaphore-async-await/dist/index.js","../../src/plugins/orbiter/types.ts","../../src/plugins/orbiter/utils.ts","../../src/plugins/orbiter/orbiter.ts","../../src/plugins/orbiter/index.ts","../../src/plugins/inscription/common.ts","../../src/plugins/inscription/browser.ts","../../../../node_modules/vue-router/dist/vue-router.mjs","../../src/views/aboutPage.vue","../../../../node_modules/@constl/vue/dist/utils.js","../../../../node_modules/@constl/vue/dist/suivi.js","../../src/components/users/utils.ts","../../src/views/accountPage.vue","../../src/views/buildingPage.vue","../../src/views/homePage.vue","../../src/components/initiateModDBs.vue","../../src/views/initPage.vue","../../../../node_modules/is-ipfs/dist/src/index.js","../../src/components/releases/newReleaseForm.vue","../../src/components/releases/videoPlayer.vue","../../src/views/releasePage.vue","../../src/plugins/router.ts","../../src/indexWeb.ts"],"sourcesContent":["function getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar browser = {exports: {}};\n\n// shim for using process in browser\nvar process = browser.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ());\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] };\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\nvar browserExports = browser.exports;\nconst process$1 = /*@__PURE__*/getDefaultExportFromCjs(browserExports);\n\nexport { process$1 as default, process$1 as process };\n//# sourceMappingURL=index.js.map\n","var buffer = {};\n\nvar base64Js = {};\n\nbase64Js.byteLength = byteLength;\nbase64Js.toByteArray = toByteArray;\nbase64Js.fromByteArray = fromByteArray;\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens (b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4);\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n var curByte = 0;\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen;\n\n var i;\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = (tmp >> 16) & 0xFF;\n arr[curByte++] = (tmp >> 8) & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[curByte++] = (tmp >> 8) & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n );\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n );\n }\n\n return parts.join('')\n}\n\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\n\nieee754.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = (nBytes * 8) - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n};\n\nieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = (nBytes * 8) - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n(function (exports) {\n\n\tconst base64 = base64Js;\n\tconst ieee754$1 = ieee754;\n\tconst customInspectSymbol =\n\t (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n\t ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n\t : null;\n\n\texports.Buffer = Buffer;\n\texports.SlowBuffer = SlowBuffer;\n\texports.INSPECT_MAX_BYTES = 50;\n\n\tconst K_MAX_LENGTH = 0x7fffffff;\n\texports.kMaxLength = K_MAX_LENGTH;\n\tconst { Uint8Array: GlobalUint8Array, ArrayBuffer: GlobalArrayBuffer, SharedArrayBuffer: GlobalSharedArrayBuffer } = globalThis;\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Print warning and recommend using `buffer` v4.x which has an Object\n\t * implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * We report that the browser does not support typed arrays if the are not subclassable\n\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t * for __proto__ and has a buggy typed array implementation.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t typeof console.error === 'function') {\n\t console.error(\n\t 'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t );\n\t}\n\n\tfunction typedArraySupport () {\n\t // Can typed array instances can be augmented?\n\t try {\n\t const arr = new GlobalUint8Array(1);\n\t const proto = { foo: function () { return 42 } };\n\t Object.setPrototypeOf(proto, GlobalUint8Array.prototype);\n\t Object.setPrototypeOf(arr, proto);\n\t return arr.foo() === 42\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\n\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.buffer\n\t }\n\t});\n\n\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.byteOffset\n\t }\n\t});\n\n\tfunction createBuffer (length) {\n\t if (length > K_MAX_LENGTH) {\n\t throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t }\n\t // Return an augmented `Uint8Array` instance\n\t const buf = new GlobalUint8Array(length);\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\t return buf\n\t}\n\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t if (typeof encodingOrOffset === 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be of type string. Received type number'\n\t )\n\t }\n\t return allocUnsafe(arg)\n\t }\n\t return from(arg, encodingOrOffset, length)\n\t}\n\n\tBuffer.poolSize = 8192; // not used by this implementation\n\n\tfunction from (value, encodingOrOffset, length) {\n\t if (typeof value === 'string') {\n\t return fromString(value, encodingOrOffset)\n\t }\n\n\t if (GlobalArrayBuffer.isView(value)) {\n\t return fromArrayView(value)\n\t }\n\n\t if (value == null) {\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t }\n\n\t if (isInstance(value, GlobalArrayBuffer) ||\n\t (value && isInstance(value.buffer, GlobalArrayBuffer))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof GlobalSharedArrayBuffer !== 'undefined' &&\n\t (isInstance(value, GlobalSharedArrayBuffer) ||\n\t (value && isInstance(value.buffer, GlobalSharedArrayBuffer)))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof value === 'number') {\n\t throw new TypeError(\n\t 'The \"value\" argument must not be of type number. Received type number'\n\t )\n\t }\n\n\t const valueOf = value.valueOf && value.valueOf();\n\t if (valueOf != null && valueOf !== value) {\n\t return Buffer.from(valueOf, encodingOrOffset, length)\n\t }\n\n\t const b = fromObject(value);\n\t if (b) return b\n\n\t if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t typeof value[Symbol.toPrimitive] === 'function') {\n\t return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n\t }\n\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t}\n\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t return from(value, encodingOrOffset, length)\n\t};\n\n\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t// https://github.com/feross/buffer/pull/148\n\tObject.setPrototypeOf(Buffer.prototype, GlobalUint8Array.prototype);\n\tObject.setPrototypeOf(Buffer, GlobalUint8Array);\n\n\tfunction assertSize (size) {\n\t if (typeof size !== 'number') {\n\t throw new TypeError('\"size\" argument must be of type number')\n\t } else if (size < 0) {\n\t throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t }\n\t}\n\n\tfunction alloc (size, fill, encoding) {\n\t assertSize(size);\n\t if (size <= 0) {\n\t return createBuffer(size)\n\t }\n\t if (fill !== undefined) {\n\t // Only pay attention to encoding if it's a string. This\n\t // prevents accidentally sending in a number that would\n\t // be interpreted as a start offset.\n\t return typeof encoding === 'string'\n\t ? createBuffer(size).fill(fill, encoding)\n\t : createBuffer(size).fill(fill)\n\t }\n\t return createBuffer(size)\n\t}\n\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t return alloc(size, fill, encoding)\n\t};\n\n\tfunction allocUnsafe (size) {\n\t assertSize(size);\n\t return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t}\n\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t return allocUnsafe(size)\n\t};\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t return allocUnsafe(size)\n\t};\n\n\tfunction fromString (string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') {\n\t encoding = 'utf8';\n\t }\n\n\t if (!Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\n\t const length = byteLength(string, encoding) | 0;\n\t let buf = createBuffer(length);\n\n\t const actual = buf.write(string, encoding);\n\n\t if (actual !== length) {\n\t // Writing a hex string, for example, that contains invalid characters will\n\t // cause everything after the first invalid character to be ignored. (e.g.\n\t // 'abxxcd' will be treated as 'ab')\n\t buf = buf.slice(0, actual);\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromArrayLike (array) {\n\t const length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t const buf = createBuffer(length);\n\t for (let i = 0; i < length; i += 1) {\n\t buf[i] = array[i] & 255;\n\t }\n\t return buf\n\t}\n\n\tfunction fromArrayView (arrayView) {\n\t if (isInstance(arrayView, GlobalUint8Array)) {\n\t const copy = new GlobalUint8Array(arrayView);\n\t return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n\t }\n\t return fromArrayLike(arrayView)\n\t}\n\n\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t throw new RangeError('\"offset\" is outside of buffer bounds')\n\t }\n\n\t if (array.byteLength < byteOffset + (length || 0)) {\n\t throw new RangeError('\"length\" is outside of buffer bounds')\n\t }\n\n\t let buf;\n\t if (byteOffset === undefined && length === undefined) {\n\t buf = new GlobalUint8Array(array);\n\t } else if (length === undefined) {\n\t buf = new GlobalUint8Array(array, byteOffset);\n\t } else {\n\t buf = new GlobalUint8Array(array, byteOffset, length);\n\t }\n\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t return buf\n\t}\n\n\tfunction fromObject (obj) {\n\t if (Buffer.isBuffer(obj)) {\n\t const len = checked(obj.length) | 0;\n\t const buf = createBuffer(len);\n\n\t if (buf.length === 0) {\n\t return buf\n\t }\n\n\t obj.copy(buf, 0, 0, len);\n\t return buf\n\t }\n\n\t if (obj.length !== undefined) {\n\t if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t return createBuffer(0)\n\t }\n\t return fromArrayLike(obj)\n\t }\n\n\t if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t return fromArrayLike(obj.data)\n\t }\n\t}\n\n\tfunction checked (length) {\n\t // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= K_MAX_LENGTH) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\n\tfunction SlowBuffer (length) {\n\t if (+length != length) { // eslint-disable-line eqeqeq\n\t length = 0;\n\t }\n\t return Buffer.alloc(+length)\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return b != null && b._isBuffer === true &&\n\t b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t};\n\n\tBuffer.compare = function compare (a, b) {\n\t if (isInstance(a, GlobalUint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t if (isInstance(b, GlobalUint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError(\n\t 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t )\n\t }\n\n\t if (a === b) return 0\n\n\t let x = a.length;\n\t let y = b.length;\n\n\t for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n\t if (a[i] !== b[i]) {\n\t x = a[i];\n\t y = b[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t case 'base64':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t if (!Array.isArray(list)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\n\t if (list.length === 0) {\n\t return Buffer.alloc(0)\n\t }\n\n\t let i;\n\t if (length === undefined) {\n\t length = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t length += list[i].length;\n\t }\n\t }\n\n\t const buffer = Buffer.allocUnsafe(length);\n\t let pos = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t let buf = list[i];\n\t if (isInstance(buf, GlobalUint8Array)) {\n\t if (pos + buf.length > buffer.length) {\n\t if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n\t buf.copy(buffer, pos);\n\t } else {\n\t GlobalUint8Array.prototype.set.call(\n\t buffer,\n\t buf,\n\t pos\n\t );\n\t }\n\t } else if (!Buffer.isBuffer(buf)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t } else {\n\t buf.copy(buffer, pos);\n\t }\n\t pos += buf.length;\n\t }\n\t return buffer\n\t};\n\n\tfunction byteLength (string, encoding) {\n\t if (Buffer.isBuffer(string)) {\n\t return string.length\n\t }\n\t if (GlobalArrayBuffer.isView(string) || isInstance(string, GlobalArrayBuffer)) {\n\t return string.byteLength\n\t }\n\t if (typeof string !== 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t 'Received type ' + typeof string\n\t )\n\t }\n\n\t const len = string.length;\n\t const mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t if (!mustMatch && len === 0) return 0\n\n\t // Use a for loop to avoid recursion\n\t let loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return len\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8ToBytes(string).length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return len * 2\n\t case 'hex':\n\t return len >>> 1\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t if (loweredCase) {\n\t return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t }\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\tBuffer.byteLength = byteLength;\n\n\tfunction slowToString (encoding, start, end) {\n\t let loweredCase = false;\n\n\t // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t // property of a typed array.\n\n\t // This behaves neither like String nor Uint8Array in that we set start/end\n\t // to their upper/lower bounds if the value passed is out of range.\n\t // undefined is handled specially as per ECMA-262 6th Edition,\n\t // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t if (start === undefined || start < 0) {\n\t start = 0;\n\t }\n\t // Return early if start > this.length. Done here to prevent potential uint32\n\t // coercion fail below.\n\t if (start > this.length) {\n\t return ''\n\t }\n\n\t if (end === undefined || end > this.length) {\n\t end = this.length;\n\t }\n\n\t if (end <= 0) {\n\t return ''\n\t }\n\n\t // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\t end >>>= 0;\n\t start >>>= 0;\n\n\t if (end <= start) {\n\t return ''\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\n\t case 'latin1':\n\t case 'binary':\n\t return latin1Slice(this, start, end)\n\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\n\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t// reliably in a browserify context because there could be multiple different\n\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t// instances that were created from another copy of the `buffer` package.\n\t// See: https://github.com/feross/buffer/issues/154\n\tBuffer.prototype._isBuffer = true;\n\n\tfunction swap (b, n, m) {\n\t const i = b[n];\n\t b[n] = b[m];\n\t b[m] = i;\n\t}\n\n\tBuffer.prototype.swap16 = function swap16 () {\n\t const len = this.length;\n\t if (len % 2 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t }\n\t for (let i = 0; i < len; i += 2) {\n\t swap(this, i, i + 1);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap32 = function swap32 () {\n\t const len = this.length;\n\t if (len % 4 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t }\n\t for (let i = 0; i < len; i += 4) {\n\t swap(this, i, i + 3);\n\t swap(this, i + 1, i + 2);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap64 = function swap64 () {\n\t const len = this.length;\n\t if (len % 8 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t }\n\t for (let i = 0; i < len; i += 8) {\n\t swap(this, i, i + 7);\n\t swap(this, i + 1, i + 6);\n\t swap(this, i + 2, i + 5);\n\t swap(this, i + 3, i + 4);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.toString = function toString () {\n\t const length = this.length;\n\t if (length === 0) return ''\n\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t return slowToString.apply(this, arguments)\n\t};\n\n\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t};\n\n\tBuffer.prototype.inspect = function inspect () {\n\t let str = '';\n\t const max = exports.INSPECT_MAX_BYTES;\n\t str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t if (this.length > max) str += ' ... ';\n\t return ''\n\t};\n\tif (customInspectSymbol) {\n\t Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t}\n\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t if (isInstance(target, GlobalUint8Array)) {\n\t target = Buffer.from(target, target.offset, target.byteLength);\n\t }\n\t if (!Buffer.isBuffer(target)) {\n\t throw new TypeError(\n\t 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t 'Received type ' + (typeof target)\n\t )\n\t }\n\n\t if (start === undefined) {\n\t start = 0;\n\t }\n\t if (end === undefined) {\n\t end = target ? target.length : 0;\n\t }\n\t if (thisStart === undefined) {\n\t thisStart = 0;\n\t }\n\t if (thisEnd === undefined) {\n\t thisEnd = this.length;\n\t }\n\n\t if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t throw new RangeError('out of range index')\n\t }\n\n\t if (thisStart >= thisEnd && start >= end) {\n\t return 0\n\t }\n\t if (thisStart >= thisEnd) {\n\t return -1\n\t }\n\t if (start >= end) {\n\t return 1\n\t }\n\n\t start >>>= 0;\n\t end >>>= 0;\n\t thisStart >>>= 0;\n\t thisEnd >>>= 0;\n\n\t if (this === target) return 0\n\n\t let x = thisEnd - thisStart;\n\t let y = end - start;\n\t const len = Math.min(x, y);\n\n\t const thisCopy = this.slice(thisStart, thisEnd);\n\t const targetCopy = target.slice(start, end);\n\n\t for (let i = 0; i < len; ++i) {\n\t if (thisCopy[i] !== targetCopy[i]) {\n\t x = thisCopy[i];\n\t y = targetCopy[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t//\n\t// Arguments:\n\t// - buffer - a Buffer to search\n\t// - val - a string, Buffer, or number\n\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t// - encoding - an optional encoding, relevant is val is a string\n\t// - dir - true for indexOf, false for lastIndexOf\n\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t // Empty buffer means no match\n\t if (buffer.length === 0) return -1\n\n\t // Normalize byteOffset\n\t if (typeof byteOffset === 'string') {\n\t encoding = byteOffset;\n\t byteOffset = 0;\n\t } else if (byteOffset > 0x7fffffff) {\n\t byteOffset = 0x7fffffff;\n\t } else if (byteOffset < -0x80000000) {\n\t byteOffset = -0x80000000;\n\t }\n\t byteOffset = +byteOffset; // Coerce to Number.\n\t if (numberIsNaN(byteOffset)) {\n\t // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t byteOffset = dir ? 0 : (buffer.length - 1);\n\t }\n\n\t // Normalize byteOffset: negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t if (byteOffset >= buffer.length) {\n\t if (dir) return -1\n\t else byteOffset = buffer.length - 1;\n\t } else if (byteOffset < 0) {\n\t if (dir) byteOffset = 0;\n\t else return -1\n\t }\n\n\t // Normalize val\n\t if (typeof val === 'string') {\n\t val = Buffer.from(val, encoding);\n\t }\n\n\t // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t if (Buffer.isBuffer(val)) {\n\t // Special case: looking for empty string/buffer always fails\n\t if (val.length === 0) {\n\t return -1\n\t }\n\t return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t } else if (typeof val === 'number') {\n\t val = val & 0xFF; // Search for a byte value [0-255]\n\t if (typeof GlobalUint8Array.prototype.indexOf === 'function') {\n\t if (dir) {\n\t return GlobalUint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t } else {\n\t return GlobalUint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t }\n\t }\n\t return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t }\n\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t let indexSize = 1;\n\t let arrLength = arr.length;\n\t let valLength = val.length;\n\n\t if (encoding !== undefined) {\n\t encoding = String(encoding).toLowerCase();\n\t if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t encoding === 'utf16le' || encoding === 'utf-16le') {\n\t if (arr.length < 2 || val.length < 2) {\n\t return -1\n\t }\n\t indexSize = 2;\n\t arrLength /= 2;\n\t valLength /= 2;\n\t byteOffset /= 2;\n\t }\n\t }\n\n\t function read (buf, i) {\n\t if (indexSize === 1) {\n\t return buf[i]\n\t } else {\n\t return buf.readUInt16BE(i * indexSize)\n\t }\n\t }\n\n\t let i;\n\t if (dir) {\n\t let foundIndex = -1;\n\t for (i = byteOffset; i < arrLength; i++) {\n\t if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t if (foundIndex === -1) foundIndex = i;\n\t if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t } else {\n\t if (foundIndex !== -1) i -= i - foundIndex;\n\t foundIndex = -1;\n\t }\n\t }\n\t } else {\n\t if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t for (i = byteOffset; i >= 0; i--) {\n\t let found = true;\n\t for (let j = 0; j < valLength; j++) {\n\t if (read(arr, i + j) !== read(val, j)) {\n\t found = false;\n\t break\n\t }\n\t }\n\t if (found) return i\n\t }\n\t }\n\n\t return -1\n\t}\n\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t return this.indexOf(val, byteOffset, encoding) !== -1\n\t};\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t};\n\n\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t};\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0;\n\t const remaining = buf.length - offset;\n\t if (!length) {\n\t length = remaining;\n\t } else {\n\t length = Number(length);\n\t if (length > remaining) {\n\t length = remaining;\n\t }\n\t }\n\n\t const strLen = string.length;\n\n\t if (length > strLen / 2) {\n\t length = strLen / 2;\n\t }\n\t let i;\n\t for (i = 0; i < length; ++i) {\n\t const parsed = parseInt(string.substr(i * 2, 2), 16);\n\t if (numberIsNaN(parsed)) return i\n\t buf[offset + i] = parsed;\n\t }\n\t return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8';\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset;\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset >>> 0;\n\t if (isFinite(length)) {\n\t length = length >>> 0;\n\t if (encoding === undefined) encoding = 'utf8';\n\t } else {\n\t encoding = length;\n\t length = undefined;\n\t }\n\t } else {\n\t throw new Error(\n\t 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t )\n\t }\n\n\t const remaining = this.length - offset;\n\t if (length === undefined || length > remaining) length = remaining;\n\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('Attempt to write outside buffer bounds')\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t let loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return asciiWrite(this, string, offset, length)\n\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t};\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t};\n\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t end = Math.min(buf.length, end);\n\t const res = [];\n\n\t let i = start;\n\t while (i < end) {\n\t const firstByte = buf[i];\n\t let codePoint = null;\n\t let bytesPerSequence = (firstByte > 0xEF)\n\t ? 4\n\t : (firstByte > 0xDF)\n\t ? 3\n\t : (firstByte > 0xBF)\n\t ? 2\n\t : 1;\n\n\t if (i + bytesPerSequence <= end) {\n\t let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t switch (bytesPerSequence) {\n\t case 1:\n\t if (firstByte < 0x80) {\n\t codePoint = firstByte;\n\t }\n\t break\n\t case 2:\n\t secondByte = buf[i + 1];\n\t if ((secondByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t if (tempCodePoint > 0x7F) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 3:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 4:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t fourthByte = buf[i + 3];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t }\n\t }\n\n\t if (codePoint === null) {\n\t // we did not generate a valid codePoint so insert a\n\t // replacement char (U+FFFD) and advance only 1 byte\n\t codePoint = 0xFFFD;\n\t bytesPerSequence = 1;\n\t } else if (codePoint > 0xFFFF) {\n\t // encode to utf16 (surrogate pair dance)\n\t codePoint -= 0x10000;\n\t res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t codePoint = 0xDC00 | codePoint & 0x3FF;\n\t }\n\n\t res.push(codePoint);\n\t i += bytesPerSequence;\n\t }\n\n\t return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tconst MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t const len = codePoints.length;\n\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t }\n\n\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t let res = '';\n\t let i = 0;\n\t while (i < len) {\n\t res += String.fromCharCode.apply(\n\t String,\n\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t );\n\t }\n\t return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t let ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (let i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i] & 0x7F);\n\t }\n\t return ret\n\t}\n\n\tfunction latin1Slice (buf, start, end) {\n\t let ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (let i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i]);\n\t }\n\t return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t const len = buf.length;\n\n\t if (!start || start < 0) start = 0;\n\t if (!end || end < 0 || end > len) end = len;\n\n\t let out = '';\n\t for (let i = start; i < end; ++i) {\n\t out += hexSliceLookupTable[buf[i]];\n\t }\n\t return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t const bytes = buf.slice(start, end);\n\t let res = '';\n\t // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\t for (let i = 0; i < bytes.length - 1; i += 2) {\n\t res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t }\n\t return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t const len = this.length;\n\t start = ~~start;\n\t end = end === undefined ? len : ~~end;\n\n\t if (start < 0) {\n\t start += len;\n\t if (start < 0) start = 0;\n\t } else if (start > len) {\n\t start = len;\n\t }\n\n\t if (end < 0) {\n\t end += len;\n\t if (end < 0) end = 0;\n\t } else if (end > len) {\n\t end = len;\n\t }\n\n\t if (end < start) end = start;\n\n\t const newBuf = this.subarray(start, end);\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t return newBuf\n\t};\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUintLE =\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let val = this[offset];\n\t let mul = 1;\n\t let i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUintBE =\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length);\n\t }\n\n\t let val = this[offset + --byteLength];\n\t let mul = 1;\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUint8 =\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t return this[offset]\n\t};\n\n\tBuffer.prototype.readUint16LE =\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return this[offset] | (this[offset + 1] << 8)\n\t};\n\n\tBuffer.prototype.readUint16BE =\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return (this[offset] << 8) | this[offset + 1]\n\t};\n\n\tBuffer.prototype.readUint32LE =\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t};\n\n\tBuffer.prototype.readUint32BE =\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const lo = first +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 24;\n\n\t const hi = this[++offset] +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t last * 2 ** 24;\n\n\t return BigInt(lo) + (BigInt(hi) << BigInt(32))\n\t});\n\n\tBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const hi = first * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset];\n\n\t const lo = this[++offset] * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t last;\n\n\t return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n\t});\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let val = this[offset];\n\t let mul = 1;\n\t let i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let i = byteLength;\n\t let mul = 1;\n\t let val = this[offset + --i];\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t};\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t const val = this[offset] | (this[offset + 1] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t const val = this[offset + 1] | (this[offset] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t};\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const val = this[offset + 4] +\n\t this[offset + 5] * 2 ** 8 +\n\t this[offset + 6] * 2 ** 16 +\n\t (last << 24); // Overflow\n\n\t return (BigInt(val) << BigInt(32)) +\n\t BigInt(first +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 24)\n\t});\n\n\tBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const val = (first << 24) + // Overflow\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset];\n\n\t return (BigInt(val) << BigInt(32)) +\n\t BigInt(this[++offset] * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t last)\n\t});\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754$1.read(this, offset, true, 23, 4)\n\t};\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754$1.read(this, offset, false, 23, 4)\n\t};\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754$1.read(this, offset, true, 52, 8)\n\t};\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754$1.read(this, offset, false, 52, 8)\n\t};\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\n\tBuffer.prototype.writeUintLE =\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t let mul = 1;\n\t let i = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUintBE =\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t let i = byteLength - 1;\n\t let mul = 1;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUint8 =\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeUint16LE =\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint16BE =\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint32LE =\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset + 3] = (value >>> 24);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeUint32BE =\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t let lo = Number(value & BigInt(0xffffffff));\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t return offset\n\t}\n\n\tfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t let lo = Number(value & BigInt(0xffffffff));\n\t buf[offset + 7] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 6] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 5] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 4] = lo;\n\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t buf[offset + 3] = hi;\n\t hi = hi >> 8;\n\t buf[offset + 2] = hi;\n\t hi = hi >> 8;\n\t buf[offset + 1] = hi;\n\t hi = hi >> 8;\n\t buf[offset] = hi;\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n\t return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n\t return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t let i = 0;\n\t let mul = 1;\n\t let sub = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t let i = byteLength - 1;\n\t let mul = 1;\n\t let sub = 0;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n\t if (value < 0) value = 0xff + value + 1;\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 3] = (value >>> 24);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t if (value < 0) value = 0xffffffff + value + 1;\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n\t return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n\t return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4);\n\t }\n\t ieee754$1.write(buf, value, offset, littleEndian, 23, 4);\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t};\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8);\n\t }\n\t ieee754$1.write(buf, value, offset, littleEndian, 52, 8);\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t};\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t if (!start) start = 0;\n\t if (!end && end !== 0) end = this.length;\n\t if (targetStart >= target.length) targetStart = target.length;\n\t if (!targetStart) targetStart = 0;\n\t if (end > 0 && end < start) end = start;\n\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t // Are we oob?\n\t if (end > this.length) end = this.length;\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start;\n\t }\n\n\t const len = end - start;\n\n\t if (this === target && typeof GlobalUint8Array.prototype.copyWithin === 'function') {\n\t // Use built-in when available, missing from IE11\n\t this.copyWithin(targetStart, start, end);\n\t } else {\n\t GlobalUint8Array.prototype.set.call(\n\t target,\n\t this.subarray(start, end),\n\t targetStart\n\t );\n\t }\n\n\t return len\n\t};\n\n\t// Usage:\n\t// buffer.fill(number[, offset[, end]])\n\t// buffer.fill(buffer[, offset[, end]])\n\t// buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t // Handle string cases:\n\t if (typeof val === 'string') {\n\t if (typeof start === 'string') {\n\t encoding = start;\n\t start = 0;\n\t end = this.length;\n\t } else if (typeof end === 'string') {\n\t encoding = end;\n\t end = this.length;\n\t }\n\t if (encoding !== undefined && typeof encoding !== 'string') {\n\t throw new TypeError('encoding must be a string')\n\t }\n\t if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\t if (val.length === 1) {\n\t const code = val.charCodeAt(0);\n\t if ((encoding === 'utf8' && code < 128) ||\n\t encoding === 'latin1') {\n\t // Fast path: If `val` fits into a single byte, use that numeric value.\n\t val = code;\n\t }\n\t }\n\t } else if (typeof val === 'number') {\n\t val = val & 255;\n\t } else if (typeof val === 'boolean') {\n\t val = Number(val);\n\t }\n\n\t // Invalid ranges are not set to a default, so can range check early.\n\t if (start < 0 || this.length < start || this.length < end) {\n\t throw new RangeError('Out of range index')\n\t }\n\n\t if (end <= start) {\n\t return this\n\t }\n\n\t start = start >>> 0;\n\t end = end === undefined ? this.length : end >>> 0;\n\n\t if (!val) val = 0;\n\n\t let i;\n\t if (typeof val === 'number') {\n\t for (i = start; i < end; ++i) {\n\t this[i] = val;\n\t }\n\t } else {\n\t const bytes = Buffer.isBuffer(val)\n\t ? val\n\t : Buffer.from(val, encoding);\n\t const len = bytes.length;\n\t if (len === 0) {\n\t throw new TypeError('The value \"' + val +\n\t '\" is invalid for argument \"value\"')\n\t }\n\t for (i = 0; i < end - start; ++i) {\n\t this[i + start] = bytes[i % len];\n\t }\n\t }\n\n\t return this\n\t};\n\n\t// CUSTOM ERRORS\n\t// =============\n\n\t// Simplified versions from Node, changed for Buffer-only usage\n\tconst errors = {};\n\tfunction E (sym, getMessage, Base) {\n\t errors[sym] = class NodeError extends Base {\n\t constructor () {\n\t super();\n\n\t Object.defineProperty(this, 'message', {\n\t value: getMessage.apply(this, arguments),\n\t writable: true,\n\t configurable: true\n\t });\n\n\t // Add the error code to the name to include it in the stack trace.\n\t this.name = `${this.name} [${sym}]`;\n\t // Access the stack to generate the error message including the error code\n\t // from the name.\n\t this.stack; // eslint-disable-line no-unused-expressions\n\t // Reset the name to the actual name.\n\t delete this.name;\n\t }\n\n\t get code () {\n\t return sym\n\t }\n\n\t set code (value) {\n\t Object.defineProperty(this, 'code', {\n\t configurable: true,\n\t enumerable: true,\n\t value,\n\t writable: true\n\t });\n\t }\n\n\t toString () {\n\t return `${this.name} [${sym}]: ${this.message}`\n\t }\n\t };\n\t}\n\n\tE('ERR_BUFFER_OUT_OF_BOUNDS',\n\t function (name) {\n\t if (name) {\n\t return `${name} is outside of buffer bounds`\n\t }\n\n\t return 'Attempt to access memory outside buffer bounds'\n\t }, RangeError);\n\tE('ERR_INVALID_ARG_TYPE',\n\t function (name, actual) {\n\t return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n\t }, TypeError);\n\tE('ERR_OUT_OF_RANGE',\n\t function (str, range, input) {\n\t let msg = `The value of \"${str}\" is out of range.`;\n\t let received = input;\n\t if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n\t received = addNumericalSeparator(String(input));\n\t } else if (typeof input === 'bigint') {\n\t received = String(input);\n\t if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n\t received = addNumericalSeparator(received);\n\t }\n\t received += 'n';\n\t }\n\t msg += ` It must be ${range}. Received ${received}`;\n\t return msg\n\t }, RangeError);\n\n\tfunction addNumericalSeparator (val) {\n\t let res = '';\n\t let i = val.length;\n\t const start = val[0] === '-' ? 1 : 0;\n\t for (; i >= start + 4; i -= 3) {\n\t res = `_${val.slice(i - 3, i)}${res}`;\n\t }\n\t return `${val.slice(0, i)}${res}`\n\t}\n\n\t// CHECK FUNCTIONS\n\t// ===============\n\n\tfunction checkBounds (buf, offset, byteLength) {\n\t validateNumber(offset, 'offset');\n\t if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n\t boundsError(offset, buf.length - (byteLength + 1));\n\t }\n\t}\n\n\tfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n\t if (value > max || value < min) {\n\t const n = typeof min === 'bigint' ? 'n' : '';\n\t let range;\n\t if (byteLength > 3) {\n\t if (min === 0 || min === BigInt(0)) {\n\t range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n\t } else {\n\t range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n\t `${(byteLength + 1) * 8 - 1}${n}`;\n\t }\n\t } else {\n\t range = `>= ${min}${n} and <= ${max}${n}`;\n\t }\n\t throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n\t }\n\t checkBounds(buf, offset, byteLength);\n\t}\n\n\tfunction validateNumber (value, name) {\n\t if (typeof value !== 'number') {\n\t throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n\t }\n\t}\n\n\tfunction boundsError (value, length, type) {\n\t if (Math.floor(value) !== value) {\n\t validateNumber(value, type);\n\t throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n\t }\n\n\t if (length < 0) {\n\t throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n\t }\n\n\t throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n\t `>= ${type ? 1 : 0} and <= ${length}`,\n\t value)\n\t}\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\tfunction base64clean (str) {\n\t // Node takes equal signs as end of the Base64 encoding\n\t str = str.split('=')[0];\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = str.trim().replace(INVALID_BASE64_RE, '');\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '=';\n\t }\n\t return str\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity;\n\t let codePoint;\n\t const length = string.length;\n\t let leadSurrogate = null;\n\t const bytes = [];\n\n\t for (let i = 0; i < length; ++i) {\n\t codePoint = string.charCodeAt(i);\n\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t }\n\n\t // valid lead\n\t leadSurrogate = codePoint;\n\n\t continue\n\t }\n\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t leadSurrogate = codePoint;\n\t continue\n\t }\n\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t }\n\n\t leadSurrogate = null;\n\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint);\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\n\t return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t const byteArray = [];\n\t for (let i = 0; i < str.length; ++i) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF);\n\t }\n\t return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t let c, hi, lo;\n\t const byteArray = [];\n\t for (let i = 0; i < str.length; ++i) {\n\t if ((units -= 2) < 0) break\n\n\t c = str.charCodeAt(i);\n\t hi = c >> 8;\n\t lo = c % 256;\n\t byteArray.push(lo);\n\t byteArray.push(hi);\n\t }\n\n\t return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t let i;\n\t for (i = 0; i < length; ++i) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i];\n\t }\n\t return i\n\t}\n\n\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t// the `instanceof` check but they should be treated as of that type.\n\t// See: https://github.com/feross/buffer/issues/166\n\tfunction isInstance (obj, type) {\n\t return obj instanceof type ||\n\t (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t obj.constructor.name === type.name)\n\t}\n\tfunction numberIsNaN (obj) {\n\t // For IE11 support\n\t return obj !== obj // eslint-disable-line no-self-compare\n\t}\n\n\t// Create lookup table for `toString('hex')`\n\t// See: https://github.com/feross/buffer/issues/219\n\tconst hexSliceLookupTable = (function () {\n\t const alphabet = '0123456789abcdef';\n\t const table = new Array(256);\n\t for (let i = 0; i < 16; ++i) {\n\t const i16 = i * 16;\n\t for (let j = 0; j < 16; ++j) {\n\t table[i16 + j] = alphabet[i] + alphabet[j];\n\t }\n\t }\n\t return table\n\t})();\n\n\t// Return not function with Error if BigInt not supported\n\tfunction defineBigIntMethod (fn) {\n\t return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n\t}\n\n\tfunction BufferBigIntNotDefined () {\n\t throw new Error('BigInt not supported')\n\t} \n} (buffer));\n\nconst Buffer = buffer.Buffer;\n\nconst Blob = buffer.Blob;\nconst BlobOptions = buffer.BlobOptions;\nconst Buffer$1 = buffer.Buffer;\nconst File = buffer.File;\nconst FileOptions = buffer.FileOptions;\nconst INSPECT_MAX_BYTES = buffer.INSPECT_MAX_BYTES;\nconst SlowBuffer = buffer.SlowBuffer;\nconst TranscodeEncoding = buffer.TranscodeEncoding;\nconst atob = buffer.atob;\nconst btoa = buffer.btoa;\nconst constants = buffer.constants;\nconst isAscii = buffer.isAscii;\nconst isUtf8 = buffer.isUtf8;\nconst kMaxLength = buffer.kMaxLength;\nconst kStringMaxLength = buffer.kStringMaxLength;\nconst resolveObjectURL = buffer.resolveObjectURL;\nconst transcode = buffer.transcode;\nexport { Blob, BlobOptions, Buffer$1 as Buffer, File, FileOptions, INSPECT_MAX_BYTES, SlowBuffer, TranscodeEncoding, atob, btoa, constants, Buffer as default, isAscii, isUtf8, kMaxLength, kStringMaxLength, resolveObjectURL, transcode };\n//# sourceMappingURL=index.js.map\n","\n import process from \"process\";\n import { Buffer } from \"buffer\";\n window.Buffer = Buffer;\n window.process = process;\n ","const global = globalThis || void 0 || self;\n\nexport { global as default, global };\n//# sourceMappingURL=index.js.map\n","/**\n* @vue/shared v3.4.31\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str, expectsLowerCase) {\n const set = new Set(str.split(\",\"));\n return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](...arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"HOISTED\": -1,\n \"-1\": \"HOISTED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n start = Math.max(0, Math.min(start, source.length));\n end = Math.max(0, Math.min(end, source.length));\n if (start > end) return \"\";\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n if (isString(value) || typeof value === \"number\") {\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props) return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>| looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n return !!(val && val.__v_isRef === true);\n};\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (isRef(val)) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.4.31\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { NOOP, extend, isArray, isSymbol, isMap, isIntegerKey, hasOwn, hasChanged, isObject, makeMap, capitalize, toRawType, def, isFunction } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n constructor(fn, trigger, scheduler, scope) {\n this.fn = fn;\n this.trigger = trigger;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n /**\n * @internal\n */\n this._dirtyLevel = 4;\n /**\n * @internal\n */\n this._trackId = 0;\n /**\n * @internal\n */\n this._runnings = 0;\n /**\n * @internal\n */\n this._shouldSchedule = false;\n /**\n * @internal\n */\n this._depsLength = 0;\n recordEffectScope(this, scope);\n }\n get dirty() {\n if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {\n this._dirtyLevel = 1;\n pauseTracking();\n for (let i = 0; i < this._depsLength; i++) {\n const dep = this.deps[i];\n if (dep.computed) {\n triggerComputed(dep.computed);\n if (this._dirtyLevel >= 4) {\n break;\n }\n }\n }\n if (this._dirtyLevel === 1) {\n this._dirtyLevel = 0;\n }\n resetTracking();\n }\n return this._dirtyLevel >= 4;\n }\n set dirty(v) {\n this._dirtyLevel = v ? 4 : 0;\n }\n run() {\n this._dirtyLevel = 0;\n if (!this.active) {\n return this.fn();\n }\n let lastShouldTrack = shouldTrack;\n let lastEffect = activeEffect;\n try {\n shouldTrack = true;\n activeEffect = this;\n this._runnings++;\n preCleanupEffect(this);\n return this.fn();\n } finally {\n postCleanupEffect(this);\n this._runnings--;\n activeEffect = lastEffect;\n shouldTrack = lastShouldTrack;\n }\n }\n stop() {\n if (this.active) {\n preCleanupEffect(this);\n postCleanupEffect(this);\n this.onStop && this.onStop();\n this.active = false;\n }\n }\n}\nfunction triggerComputed(computed) {\n return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n effect2._trackId++;\n effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n if (effect2.deps.length > effect2._depsLength) {\n for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n cleanupDepEffect(effect2.deps[i], effect2);\n }\n effect2.deps.length = effect2._depsLength;\n }\n}\nfunction cleanupDepEffect(dep, effect2) {\n const trackId = dep.get(effect2);\n if (trackId !== void 0 && effect2._trackId !== trackId) {\n dep.delete(effect2);\n if (dep.size === 0) {\n dep.cleanup();\n }\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn, NOOP, () => {\n if (_effect.dirty) {\n _effect.run();\n }\n });\n if (options) {\n extend(_effect, options);\n if (options.scope) recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n pauseScheduleStack++;\n}\nfunction resetScheduling() {\n pauseScheduleStack--;\n while (!pauseScheduleStack && queueEffectSchedulers.length) {\n queueEffectSchedulers.shift()();\n }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n var _a;\n if (dep.get(effect2) !== effect2._trackId) {\n dep.set(effect2, effect2._trackId);\n const oldDep = effect2.deps[effect2._depsLength];\n if (oldDep !== dep) {\n if (oldDep) {\n cleanupDepEffect(oldDep, effect2);\n }\n effect2.deps[effect2._depsLength++] = dep;\n } else {\n effect2._depsLength++;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n var _a;\n pauseScheduling();\n for (const effect2 of dep.keys()) {\n let tracking;\n if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);\n effect2._dirtyLevel = dirtyLevel;\n }\n if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n effect2.trigger();\n if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {\n effect2._shouldSchedule = false;\n if (effect2.scheduler) {\n queueEffectSchedulers.push(effect2.scheduler);\n }\n }\n }\n }\n resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n const dep = /* @__PURE__ */ new Map();\n dep.cleanup = cleanup;\n dep.computed = computed;\n return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n }\n trackEffect(\n activeEffect,\n dep,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key\n } : void 0\n );\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n pauseScheduling();\n for (const dep of deps) {\n if (dep) {\n triggerEffects(\n dep,\n 4,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : void 0\n );\n }\n }\n resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n const depsMap = targetMap.get(object);\n return depsMap && depsMap.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n pauseScheduling();\n const res = toRaw(this)[key].apply(this, args);\n resetScheduling();\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the reciever is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\"];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nconst COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this.getter = getter;\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this.effect = new ReactiveEffect(\n () => getter(this._value),\n () => triggerRefValue(\n this,\n this.effect._dirtyLevel === 2 ? 2 : 3\n )\n );\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {\n triggerRefValue(self, 4);\n }\n trackRefValue(self);\n if (self.effect._dirtyLevel >= 2) {\n if (!!(process.env.NODE_ENV !== \"production\") && this._warnRecursive) {\n warn(COMPUTED_SIDE_EFFECT_WARN, `\n\ngetter: `, this.getter);\n }\n triggerRefValue(self, 2);\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n get _dirty() {\n return this.effect.dirty;\n }\n set _dirty(v) {\n this.effect.dirty = v;\n }\n // #endregion\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nfunction trackRefValue(ref2) {\n var _a;\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n trackEffect(\n activeEffect,\n (_a = ref2.dep) != null ? _a : ref2.dep = createDep(\n () => ref2.dep = void 0,\n ref2 instanceof ComputedRefImpl ? ref2 : void 0\n ),\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"get\",\n key: \"value\"\n } : void 0\n );\n }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 4, newVal, oldVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n triggerEffects(\n dep,\n dirtyLevel,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal,\n oldValue: oldVal\n } : void 0\n );\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n const oldVal = this._rawValue;\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, 4, newVal, oldVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, 4, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst deferredComputed = computed;\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\"\n};\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseScheduling, pauseTracking, proxyRefs, reactive, readonly, ref, resetScheduling, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, track, trigger, triggerRef, unref };\n","/**\n* @vue/runtime-core v3.4.31\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, shallowReadonly, ref, track, reactive, shallowReactive, trigger, ReactiveEffect, isShallow, isReactive, getCurrentScope, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, customRef, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, looseToNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, capitalize, toNumber, isBuiltInDirective, isGloballyAllowed, NO, isReservedProp, EMPTY_ARR, toRawType, makeMap, def, remove, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, invokeArrayFns, hasChanged, isSet, isMap, isPlainObject, isRegExp } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn$1(msg, ...args) {\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n // eslint-disable-next-line no-restricted-syntax\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\")) return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n pauseTracking();\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.pre) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n const cb = activePostFlushCbs[postFlushIndex];\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n if (cb.active !== false) cb();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre) return -1;\n if (b.pre && !a.pre) return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n instance.effect.dirty = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record) return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.add(oldComp);\n }\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n } else if (instance.parent) {\n instance.parent.effect.dirty = true;\n queueJob(() => {\n instance.parent.update();\n hmrDirtyComponents.delete(oldComp);\n });\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n }\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(\n normalizeClassComponent(instance.type)\n );\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n // eslint-disable-next-line no-restricted-syntax\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted) return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx) return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n props,\n data,\n setupState,\n ctx,\n inheritAttrs\n } = instance;\n const prev = setCurrentRenderingInstance(instance);\n let result;\n let fallthroughAttrs;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4) {\n const proxyToUse = withProxy || proxy;\n const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n get(target, key, receiver) {\n warn$1(\n `Property '${String(\n key\n )}' was accessed via 'this'. Avoid using 'this' in templates.`\n );\n return Reflect.get(target, key, receiver);\n }\n }) : proxyToUse;\n result = normalizeVNode(\n render.call(\n thisProxy,\n proxyToUse,\n renderCache,\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n setupState,\n data,\n ctx\n )\n );\n fallthroughAttrs = attrs;\n } else {\n const render2 = Component;\n if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(\n render2.length > 1 ? render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get attrs() {\n markAttrsAccessed();\n return shallowReadonly(attrs);\n },\n slots,\n emit\n } : { attrs, slots, emit }\n ) : render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n null\n )\n );\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1);\n result = createVNode(Comment);\n }\n let root = result;\n let setRoot = void 0;\n if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 | 6)) {\n if (propsOptions && keys.some(isModelListener)) {\n fallthroughAttrs = filterModelListeners(\n fallthroughAttrs,\n propsOptions\n );\n }\n root = cloneVNode(root, fallthroughAttrs, false, true);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n if (!isModelListener(key)) {\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n } else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn$1(\n `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n );\n }\n if (eventAttrs.length) {\n warn$1(\n `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n );\n }\n }\n }\n }\n if (vnode.dirs) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n );\n }\n root = cloneVNode(root, null, false, true);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n if (vnode.transition) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Component inside renders non-element root node that cannot be animated.`\n );\n }\n root.transition = vnode.transition;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n setRoot(root);\n } else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren, false);\n if (!childRoot) {\n return [vnode, void 0];\n } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n return getChildRoot(childRoot);\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n } else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n if (child.type !== Comment || child.children === \"v-if\") {\n if (singleRoot) {\n return;\n } else {\n singleRoot = child;\n if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n return filterSingleRoot(singleRoot.children);\n }\n }\n }\n } else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024) {\n return true;\n }\n if (patchFlag & 16) {\n if (!prevProps) {\n return !!nextProps;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n } else if (patchFlag & 8) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n } else {\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n while (parent) {\n const root = parent.subTree;\n if (root.suspense && root.suspense.activeBranch === vnode) {\n root.el = vnode.el;\n }\n if (root === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n } else {\n break;\n }\n }\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n name: \"Suspense\",\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n if (n1 == null) {\n mountSuspense(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n } else {\n if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n n2.suspense = n1.suspense;\n n2.suspense.vnode = n2;\n n2.el = n1.el;\n return;\n }\n patchSuspense(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n }\n },\n hydrate: hydrateSuspense,\n normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n const {\n p: patch,\n o: { createElement }\n } = rendererInternals;\n const hiddenContainer = createElement(\"div\");\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n container,\n hiddenContainer,\n anchor,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n patch(\n null,\n suspense.pendingBranch = vnode.ssContent,\n hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds\n );\n if (suspense.deps > 0) {\n triggerEvent(vnode, \"onPending\");\n triggerEvent(vnode, \"onFallback\");\n patch(\n null,\n vnode.ssFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds\n );\n setActiveBranch(suspense, vnode.ssFallback);\n } else {\n suspense.resolve(false, true);\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = n2.suspense = n1.suspense;\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n patch(\n pendingBranch,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else if (isInFallback) {\n if (!isHydrating) {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n }\n } else {\n suspense.pendingId = suspenseId++;\n if (isHydrating) {\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n } else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n suspense.deps = 0;\n suspense.effects.length = 0;\n suspense.hiddenContainer = createElement(\"div\");\n if (isInFallback) {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n suspense.resolve(true);\n } else {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n } else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newBranch);\n } else {\n triggerEvent(n2, \"onPending\");\n suspense.pendingBranch = newBranch;\n if (newBranch.shapeFlag & 512) {\n suspense.pendingId = newBranch.component.suspenseId;\n } else {\n suspense.pendingId = suspenseId++;\n }\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n } else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n hasWarned = true;\n console[console.info ? \"info\" : \"log\"](\n ` is an experimental feature and its API will likely change.`\n );\n }\n const {\n p: patch,\n m: move,\n um: unmount,\n n: next,\n o: { parentNode, remove }\n } = rendererInternals;\n let parentSuspenseId;\n const isSuspensible = isVNodeSuspensible(vnode);\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch) {\n parentSuspenseId = parentSuspense.pendingId;\n parentSuspense.deps++;\n }\n }\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const initialAnchor = anchor;\n const suspense = {\n vnode,\n parent: parentSuspense,\n parentComponent,\n namespace,\n container,\n hiddenContainer,\n deps: 0,\n pendingId: suspenseId++,\n timeout: typeof timeout === \"number\" ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: !isHydrating,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false, sync = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(\n `suspense.resolve() is called without a pending branch.`\n );\n }\n if (suspense.isUnmounted) {\n throw new Error(\n `suspense.resolve() is called on an already unmounted suspense boundary.`\n );\n }\n }\n const {\n vnode: vnode2,\n activeBranch,\n pendingBranch,\n pendingId,\n effects,\n parentComponent: parentComponent2,\n container: container2\n } = suspense;\n let delayEnter = false;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n } else if (!resume) {\n delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(\n pendingBranch,\n container2,\n anchor === initialAnchor ? next(activeBranch) : anchor,\n 0\n );\n queuePostFlushCb(effects);\n }\n };\n }\n if (activeBranch) {\n if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {\n anchor = next(activeBranch);\n }\n unmount(activeBranch, parentComponent2, suspense, true);\n }\n if (!delayEnter) {\n move(pendingBranch, container2, anchor, 0);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n if (!hasUnresolvedAncestor && !delayEnter) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0 && !sync) {\n parentSuspense.resolve();\n }\n }\n }\n triggerEvent(vnode2, \"onResolve\");\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n triggerEvent(vnode2, \"onFallback\");\n const anchor2 = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n patch(\n null,\n fallbackVNode,\n container2,\n anchor2,\n parentComponent2,\n null,\n // fallback tree will not have suspense context\n namespace2,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n unmount(\n activeBranch,\n parentComponent2,\n null,\n // no suspense so unmount hooks fire now\n true\n // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container2, anchor2, type) {\n suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n suspense.container = container2;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect, optimized2) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance.asyncDep.catch((err) => {\n handleError(err, instance, 0);\n }).then((asyncSetupResult) => {\n if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n return;\n }\n instance.asyncResolved = true;\n const { vnode: vnode2 } = instance;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(vnode2);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n vnode2.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(\n instance,\n vnode2,\n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el),\n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree),\n suspense,\n namespace,\n optimized2\n );\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode2.el);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense2, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(\n suspense.activeBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n if (suspense.pendingBranch) {\n unmount(\n suspense.pendingBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n node.parentNode,\n // eslint-disable-next-line no-restricted-globals\n document.createElement(\"div\"),\n null,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals,\n true\n );\n const result = hydrateNode(\n node,\n suspense.pendingBranch = vnode.ssContent,\n parentComponent,\n suspense,\n slotScopeIds,\n optimized\n );\n if (suspense.deps === 0) {\n suspense.resolve(false, true);\n }\n return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32;\n vnode.ssContent = normalizeSuspenseSlot(\n isSlotChildren ? children.default : children\n );\n vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n warn$1(` slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter((c) => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n let el = branch.el;\n while (!el && branch.component) {\n branch = branch.component.subTree;\n el = branch.el;\n }\n vnode.el = el;\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\nfunction isVNodeSuspensible(vnode) {\n const suspensible = vnode.props && vnode.props.suspensible;\n return suspensible != null && suspensible !== false;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n injectHook(lifecycle, (...args) => hook(...args), target);\n }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getComponentPublicInstance(currentRenderingInstance);\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res) res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n if (name !== \"default\") props.name = name;\n return createVNode(\"slot\", props, fallback && fallback());\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(\n Fragment,\n {\n key: props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key || `_${name}`\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i) return null;\n if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \n","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VApp.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { createLayout, makeLayoutProps } from \"../../composables/layout.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVAppProps = propsFactory({\n ...makeComponentProps(),\n ...makeLayoutProps({\n fullHeight: true\n }),\n ...makeThemeProps()\n}, 'VApp');\nexport const VApp = genericComponent()({\n name: 'VApp',\n props: makeVAppProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const theme = provideTheme(props);\n const {\n layoutClasses,\n getLayoutItem,\n items,\n layoutRef\n } = createLayout(props);\n const {\n rtlClasses\n } = useRtl();\n useRender(() => _createVNode(\"div\", {\n \"ref\": layoutRef,\n \"class\": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],\n \"style\": [props.style]\n }, [_createVNode(\"div\", {\n \"class\": \"v-application__wrap\"\n }, [slots.default?.()])]));\n return {\n getLayoutItem,\n items,\n theme\n };\n }\n});\n//# sourceMappingURL=VApp.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VMain.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useLayout } from \"../../composables/layout.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVMainProps = propsFactory({\n scrollable: Boolean,\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps({\n tag: 'main'\n })\n}, 'VMain');\nexport const VMain = genericComponent()({\n name: 'VMain',\n props: makeVMainProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n mainStyles\n } = useLayout();\n const {\n ssrBootStyles\n } = useSsrBoot();\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-main', {\n 'v-main--scrollable': props.scrollable\n }, props.class],\n \"style\": [mainStyles.value, ssrBootStyles.value, dimensionStyles.value, props.style]\n }, {\n default: () => [props.scrollable ? _createVNode(\"div\", {\n \"class\": \"v-main__scroller\"\n }, [slots.default?.()]) : slots.default?.()]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VMain.mjs.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined\n\t? new AbortError(errorMessage)\n\t: new DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined\n\t\t? getDOMException('This operation was aborted.')\n\t\t: signal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t} = options;\n\n\tlet timer;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t});\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tpromise.then(resolve, reject);\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t})();\n\t});\n\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n run,\n };\n if (this.size && this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #interval;\n #intervalEnd = 0;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n\n Applies to each future operation.\n */\n timeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = (this.#carryoverConcurrencyCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit('empty');\n if (this.#pending === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n }, { once: true });\n });\n }\n async add(function_, options = {}) {\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options,\n };\n return new Promise((resolve, reject) => {\n this.#queue.enqueue(async () => {\n this.#pending++;\n this.#intervalCount++;\n try {\n options.signal?.throwIfAborted();\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout });\n }\n if (options.signal) {\n operation = Promise.race([operation, this.#throwOnAbort(options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n this.#next();\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n}\n","export default function pDefer() {\n\tconst deferred = {};\n\n\tdeferred.promise = new Promise((resolve, reject) => {\n\t\tdeferred.resolve = resolve;\n\t\tdeferred.reject = reject;\n\t});\n\n\treturn deferred;\n}\n","// ported from https://www.npmjs.com/package/fast-fifo\nclass FixedFIFO {\n buffer;\n mask;\n top;\n btm;\n next;\n constructor(hwm) {\n if (!(hwm > 0) || ((hwm - 1) & hwm) !== 0) {\n throw new Error('Max size for a FixedFIFO should be a power of two');\n }\n this.buffer = new Array(hwm);\n this.mask = hwm - 1;\n this.top = 0;\n this.btm = 0;\n this.next = null;\n }\n push(data) {\n if (this.buffer[this.top] !== undefined) {\n return false;\n }\n this.buffer[this.top] = data;\n this.top = (this.top + 1) & this.mask;\n return true;\n }\n shift() {\n const last = this.buffer[this.btm];\n if (last === undefined) {\n return undefined;\n }\n this.buffer[this.btm] = undefined;\n this.btm = (this.btm + 1) & this.mask;\n return last;\n }\n isEmpty() {\n return this.buffer[this.btm] === undefined;\n }\n}\nexport class FIFO {\n size;\n hwm;\n head;\n tail;\n constructor(options = {}) {\n this.hwm = options.splitLimit ?? 16;\n this.head = new FixedFIFO(this.hwm);\n this.tail = this.head;\n this.size = 0;\n }\n calculateSize(obj) {\n if (obj?.byteLength != null) {\n return obj.byteLength;\n }\n return 1;\n }\n push(val) {\n if (val?.value != null) {\n this.size += this.calculateSize(val.value);\n }\n if (!this.head.push(val)) {\n const prev = this.head;\n this.head = prev.next = new FixedFIFO(2 * this.head.buffer.length);\n this.head.push(val);\n }\n }\n shift() {\n let val = this.tail.shift();\n if (val === undefined && (this.tail.next != null)) {\n const next = this.tail.next;\n this.tail.next = null;\n this.tail = next;\n val = this.tail.shift();\n }\n if (val?.value != null) {\n this.size -= this.calculateSize(val.value);\n }\n return val;\n }\n isEmpty() {\n return this.head.isEmpty();\n }\n}\n//# sourceMappingURL=fifo.js.map","/**\n * @packageDocumentation\n *\n * An iterable that you can push values into.\n *\n * @example\n *\n * ```js\n * import { pushable } from 'it-pushable'\n *\n * const source = pushable()\n *\n * setTimeout(() => source.push('hello'), 100)\n * setTimeout(() => source.push('world'), 200)\n * setTimeout(() => source.end(), 300)\n *\n * const start = Date.now()\n *\n * for await (const value of source) {\n * console.log(`got \"${value}\" after ${Date.now() - start}ms`)\n * }\n * console.log(`done after ${Date.now() - start}ms`)\n *\n * // Output:\n * // got \"hello\" after 105ms\n * // got \"world\" after 207ms\n * // done after 309ms\n * ```\n *\n * @example\n *\n * ```js\n * import { pushableV } from 'it-pushable'\n * import all from 'it-all'\n *\n * const source = pushableV()\n *\n * source.push(1)\n * source.push(2)\n * source.push(3)\n * source.end()\n *\n * console.info(await all(source))\n *\n * // Output:\n * // [ [1, 2, 3] ]\n * ```\n */\nimport deferred from 'p-defer';\nimport { FIFO } from './fifo.js';\nexport class AbortError extends Error {\n type;\n code;\n constructor(message, code) {\n super(message ?? 'The operation was aborted');\n this.type = 'aborted';\n this.code = code ?? 'ABORT_ERR';\n }\n}\nexport function pushable(options = {}) {\n const getNext = (buffer) => {\n const next = buffer.shift();\n if (next == null) {\n return { done: true };\n }\n if (next.error != null) {\n throw next.error;\n }\n return {\n done: next.done === true,\n // @ts-expect-error if done is false, value will be present\n value: next.value\n };\n };\n return _pushable(getNext, options);\n}\nexport function pushableV(options = {}) {\n const getNext = (buffer) => {\n let next;\n const values = [];\n while (!buffer.isEmpty()) {\n next = buffer.shift();\n if (next == null) {\n break;\n }\n if (next.error != null) {\n throw next.error;\n }\n if (next.done === false) {\n // @ts-expect-error if done is false value should be pushed\n values.push(next.value);\n }\n }\n if (next == null) {\n return { done: true };\n }\n return {\n done: next.done === true,\n value: values\n };\n };\n return _pushable(getNext, options);\n}\nfunction _pushable(getNext, options) {\n options = options ?? {};\n let onEnd = options.onEnd;\n let buffer = new FIFO();\n let pushable;\n let onNext;\n let ended;\n let drain = deferred();\n const waitNext = async () => {\n try {\n if (!buffer.isEmpty()) {\n return getNext(buffer);\n }\n if (ended) {\n return { done: true };\n }\n return await new Promise((resolve, reject) => {\n onNext = (next) => {\n onNext = null;\n buffer.push(next);\n try {\n resolve(getNext(buffer));\n }\n catch (err) {\n reject(err);\n }\n return pushable;\n };\n });\n }\n finally {\n if (buffer.isEmpty()) {\n // settle promise in the microtask queue to give consumers a chance to\n // await after calling .push\n queueMicrotask(() => {\n drain.resolve();\n drain = deferred();\n });\n }\n }\n };\n const bufferNext = (next) => {\n if (onNext != null) {\n return onNext(next);\n }\n buffer.push(next);\n return pushable;\n };\n const bufferError = (err) => {\n buffer = new FIFO();\n if (onNext != null) {\n return onNext({ error: err });\n }\n buffer.push({ error: err });\n return pushable;\n };\n const push = (value) => {\n if (ended) {\n return pushable;\n }\n // @ts-expect-error `byteLength` is not declared on PushType\n if (options?.objectMode !== true && value?.byteLength == null) {\n throw new Error('objectMode was not true but tried to push non-Uint8Array value');\n }\n return bufferNext({ done: false, value });\n };\n const end = (err) => {\n if (ended)\n return pushable;\n ended = true;\n return (err != null) ? bufferError(err) : bufferNext({ done: true });\n };\n const _return = () => {\n buffer = new FIFO();\n end();\n return { done: true };\n };\n const _throw = (err) => {\n end(err);\n return { done: true };\n };\n pushable = {\n [Symbol.asyncIterator]() { return this; },\n next: waitNext,\n return: _return,\n throw: _throw,\n push,\n end,\n get readableLength() {\n return buffer.size;\n },\n onEmpty: async (options) => {\n const signal = options?.signal;\n signal?.throwIfAborted();\n if (buffer.isEmpty()) {\n return;\n }\n let cancel;\n let listener;\n if (signal != null) {\n cancel = new Promise((resolve, reject) => {\n listener = () => {\n reject(new AbortError());\n };\n signal.addEventListener('abort', listener);\n });\n }\n try {\n await Promise.race([\n drain.promise,\n cancel\n ]);\n }\n finally {\n if (listener != null && signal != null) {\n signal?.removeEventListener('abort', listener);\n }\n }\n }\n };\n if (onEnd == null) {\n return pushable;\n }\n const _pushable = pushable;\n pushable = {\n [Symbol.asyncIterator]() { return this; },\n next() {\n return _pushable.next();\n },\n throw(err) {\n _pushable.throw(err);\n if (onEnd != null) {\n onEnd(err);\n onEnd = undefined;\n }\n return { done: true };\n },\n return() {\n _pushable.return();\n if (onEnd != null) {\n onEnd();\n onEnd = undefined;\n }\n return { done: true };\n },\n push,\n end(err) {\n _pushable.end(err);\n if (onEnd != null) {\n onEnd(err);\n onEnd = undefined;\n }\n return pushable;\n },\n get readableLength() {\n return _pushable.readableLength;\n },\n onEmpty: (opts) => {\n return _pushable.onEmpty(opts);\n }\n };\n return pushable;\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Merge several (async)iterables into one, yield values as they arrive.\n *\n * Nb. sources are iterated over in parallel so the order of emitted items is not guaranteed.\n *\n * @example\n *\n * ```javascript\n * import merge from 'it-merge'\n * import all from 'it-all'\n *\n * // This can also be an iterator, generator, etc\n * const values1 = [0, 1, 2, 3, 4]\n * const values2 = [5, 6, 7, 8, 9]\n *\n * const arr = all(merge(values1, values2))\n *\n * console.info(arr) // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import merge from 'it-merge'\n * import all from 'it-all'\n *\n * // This can also be an iterator, async iterator, generator, etc\n * const values1 = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n * const values2 = async function * () {\n * yield * [5, 6, 7, 8, 9]\n * }\n *\n * const arr = await all(merge(values1(), values2()))\n *\n * console.info(arr) // 0, 1, 5, 6, 2, 3, 4, 7, 8, 9 <- nb. order is not guaranteed\n * ```\n */\nimport { pushable } from 'it-pushable';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction merge(...sources) {\n const syncSources = [];\n for (const source of sources) {\n if (!isAsyncIterable(source)) {\n syncSources.push(source);\n }\n }\n if (syncSources.length === sources.length) {\n // all sources are synchronous\n return (function* () {\n for (const source of syncSources) {\n yield* source;\n }\n })();\n }\n return (async function* () {\n const output = pushable({\n objectMode: true\n });\n void Promise.resolve().then(async () => {\n try {\n await Promise.all(sources.map(async (source) => {\n for await (const item of source) {\n output.push(item);\n }\n }));\n output.end();\n }\n catch (err) {\n output.end(err);\n }\n });\n yield* output;\n })();\n}\nexport default merge;\n//# sourceMappingURL=index.js.map","import { pushable } from 'it-pushable';\nimport merge from 'it-merge';\nexport function pipe(first, ...rest) {\n if (first == null) {\n throw new Error('Empty pipeline');\n }\n // Duplex at start: wrap in function and return duplex source\n if (isDuplex(first)) {\n const duplex = first;\n first = () => duplex.source;\n // Iterable at start: wrap in function\n }\n else if (isIterable(first) || isAsyncIterable(first)) {\n const source = first;\n first = () => source;\n }\n const fns = [first, ...rest];\n if (fns.length > 1) {\n // Duplex at end: use duplex sink\n if (isDuplex(fns[fns.length - 1])) {\n fns[fns.length - 1] = fns[fns.length - 1].sink;\n }\n }\n if (fns.length > 2) {\n // Duplex in the middle, consume source with duplex sink and return duplex source\n for (let i = 1; i < fns.length - 1; i++) {\n if (isDuplex(fns[i])) {\n fns[i] = duplexPipelineFn(fns[i]);\n }\n }\n }\n return rawPipe(...fns);\n}\nexport const rawPipe = (...fns) => {\n let res;\n while (fns.length > 0) {\n res = fns.shift()(res);\n }\n return res;\n};\nconst isAsyncIterable = (obj) => {\n return obj?.[Symbol.asyncIterator] != null;\n};\nconst isIterable = (obj) => {\n return obj?.[Symbol.iterator] != null;\n};\nconst isDuplex = (obj) => {\n if (obj == null) {\n return false;\n }\n return obj.sink != null && obj.source != null;\n};\nconst duplexPipelineFn = (duplex) => {\n return (source) => {\n const p = duplex.sink(source);\n if (p?.then != null) {\n const stream = pushable({\n objectMode: true\n });\n p.then(() => {\n stream.end();\n }, (err) => {\n stream.end(err);\n });\n let sourceWrap;\n const source = duplex.source;\n if (isAsyncIterable(source)) {\n sourceWrap = async function* () {\n yield* source;\n stream.end();\n };\n }\n else if (isIterable(source)) {\n sourceWrap = function* () {\n yield* source;\n stream.end();\n };\n }\n else {\n throw new Error('Unknown duplex source type - must be Iterable or AsyncIterable');\n }\n return merge(stream, sourceWrap());\n }\n return duplex.source;\n };\n};\n//# sourceMappingURL=index.js.map","'use strict'\n\nmodule.exports = function getTime () {\n return Date.now()\n}\n","'use strict'\n\nconst getTime = require('./time')\n\nclass Retimer {\n constructor (callback, timeout, args) {\n const that = this\n\n this._started = getTime()\n this._rescheduled = 0\n this._scheduled = timeout\n this._args = args\n this._triggered = false\n\n this._timerWrapper = () => {\n if (that._rescheduled > 0) {\n that._scheduled = that._rescheduled - (getTime() - that._started)\n that._schedule(that._scheduled)\n } else {\n that._triggered = true\n callback.apply(null, that._args)\n }\n }\n\n this._timer = setTimeout(this._timerWrapper, timeout)\n }\n\n reschedule (timeout) {\n if (!timeout) {\n timeout = this._scheduled\n }\n const now = getTime()\n if ((now + timeout) - (this._started + this._scheduled) < 0) {\n clearTimeout(this._timer)\n this._schedule(timeout)\n } else if (!this._triggered) {\n this._started = now\n this._rescheduled = timeout\n } else {\n this._schedule(timeout)\n }\n }\n\n _schedule (timeout) {\n this._triggered = false\n this._started = getTime()\n this._rescheduled = 0\n this._scheduled = timeout\n this._timer = setTimeout(this._timerWrapper, timeout)\n }\n\n clear () {\n clearTimeout(this._timer)\n }\n}\n\nfunction retimer () {\n if (typeof arguments[0] !== 'function') {\n throw new Error('callback needed')\n }\n\n if (typeof arguments[1] !== 'number') {\n throw new Error('timeout needed')\n }\n\n let args\n\n if (arguments.length > 0) {\n args = new Array(arguments.length - 2)\n\n /* eslint-disable no-var */\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 2]\n }\n }\n\n return new Retimer(arguments[0], arguments[1], args)\n}\n\nmodule.exports = retimer\n","'use strict'\n\nconst { AbortController } = globalThis\n\n// @ts-expect-error no types\nconst retimer = require('retimer')\n\nclass TimeoutController extends AbortController {\n /**\n * @constructor\n * @param {number} ms milliseconds\n */\n constructor (ms) {\n super()\n this._ms = ms\n this._timer = retimer(() => this.abort(), ms)\n // Patch for safari not supported extending built in classes\n Object.setPrototypeOf(this, TimeoutController.prototype)\n }\n\n /**\n * Aborts the controller and clears the timer\n */\n abort () {\n this._timer.clear()\n return super.abort()\n }\n\n /**\n * Clears the timer\n */\n clear () {\n this._timer.clear()\n }\n\n /**\n * Resets the timer\n */\n reset () {\n this._timer.clear()\n this._timer = retimer(() => this.abort(), this._ms)\n }\n}\n\nmodule.exports = {\n TimeoutController\n}\n","export const posixJoin = (...paths) => paths\n .join('/')\n .replace(/((?<=\\/)\\/+)|(^\\.\\/)|((?<=\\/)\\.\\/)/g, '') || '.'\n\nexport const win32Join = (...paths) => paths\n .join('\\\\')\n .replace(/\\//g, '\\\\')\n .replace(/((?<=\\\\)\\\\+)|(^\\.\\\\)|((?<=\\\\)\\.\\\\)/g, '') || '.'\n\nexport const join = posixJoin\n\nexport default posixJoin\n","import { pipe } from 'it-pipe'\nimport PQueue from 'p-queue'\nimport { EventEmitter } from 'events'\nimport { TimeoutController } from 'timeout-abort-controller'\nimport pathJoin from './utils/path-join.js'\n\nconst DefaultTimeout = 30000 // 30 seconds\n\n/**\n * @module Sync\n * @description\n * The Sync Protocol for OrbitDB synchronizes the database operations {@link module:Log} between multiple peers.\n *\n * The Sync Protocol sends and receives heads between multiple peers,\n * both when opening a database and when a database is updated, ie.\n * new entries are appended to the log.\n *\n * When Sync is started, a peer subscribes to a pubsub topic of the log's id.\n * Upon subscribing to the topic, peers already connected to the topic receive\n * the subscription message and \"dial\" the subscribing peer using a libp2p\n * custom protocol. Once connected to the subscribing peer on a direct\n * peer-to-peer connection, the dialing peer and the subscribing peer exchange * the heads of the Log each peer currently has. Once completed, the peers have * the same \"local state\".\n *\n * Once the initial sync has completed, peers notify one another of updates to\n * the log, ie. updates to the database, using the initially opened pubsub\n * topic subscription. A peer with new heads broadcasts changes to other peers\n * by publishing the updated heads to the pubsub topic. Peers subscribed to the\n * same topic will then receive the update and will update their log's state,\n * the heads, accordingly.\n *\n * The Sync Protocol is eventually consistent. It guarantees that once all\n * messages have been sent and received, peers will observe the same log state\n * and values. The Sync Protocol does not guarantee the order in which messages\n * are received or even that a message is recieved at all, nor any timing on\n * when messages are received.\n *\n * @example\n * // Using defaults\n * const sync = await Sync({ ipfs, log, onSynced: (peerId, heads) => ... })\n *\n * @example\n * // Using all parameters\n * const sync = await Sync({ ipfs, log, events, onSynced: (peerId, heads) => ..., start: false })\n * sync.events.on('join', (peerId, heads) => ...)\n * sync.events.on('leave', (peerId) => ...)\n * sync.events.on('error', (err) => ...)\n * await sync.start()\n */\n\n/**\n * Creates a Sync instance for sychronizing logs between multiple peers.\n *\n * @function\n * @param {Object} params One or more parameters for configuring Sync.\n * @param {IPFS} params.ipfs An IPFS instance.\n * @param {Log} params.log The log instance to sync.\n * @param {EventEmitter} [params.events] An event emitter to use. Events\n * emitted are 'join', 'leave' and 'error'. If the parameter is not provided,\n * an EventEmitter will be created.\n * @param {onSynced} [params.onSynced] A callback function that is called after\n * the peer has received heads from another peer.\n * @param {Boolean} [params.start] True if sync should start automatically,\n * false otherwise. Defaults to true.\n * @return {module:Sync~Sync} sync An instance of the Sync Protocol.\n * @memberof module:Sync\n * @instance\n */\nconst Sync = async ({ ipfs, log, events, onSynced, start, timeout }) => {\n /**\n * @namespace module:Sync~Sync\n * @description The instance returned by {@link module:Sync}.\n */\n\n /**\n * Callback function when new heads have been received from other peers.\n * @callback module:Sync~Sync#onSynced\n * @param {PeerID} peerId PeerID of the peer who we received heads from\n * @param {Entry[]} heads An array of Log entries\n */\n\n /**\n * Event fired when when a peer has connected and the exchange of\n * heads has been completed.\n * @event module:Sync~Sync#join\n * @param {PeerID} peerId PeerID of the peer who we received heads from\n * @param {Entry[]} heads An array of Log entries\n * @example\n * sync.events.on('join', (peerID, heads) => ...)\n */\n\n /**\n * Event fired when a peer leaves the sync protocol.\n * @event module:Sync~Sync#leave\n * @param {PeerID} peerId PeerID of the peer who left\n * @example\n * sync.events.on('leave', (peerID) => ...)\n */\n\n /**\n * Event fired when an error occurs.\n * @event module:Sync~Sync#error\n * @param {Error} error The error that occured\n * @example\n * sync.events.on('error', (error) => ...)\n */\n\n if (!ipfs) throw new Error('An instance of ipfs is required.')\n if (!log) throw new Error('An instance of log is required.')\n\n const libp2p = ipfs.libp2p\n const pubsub = ipfs.libp2p.services.pubsub\n\n const address = log.id\n const headsSyncAddress = pathJoin('/orbitdb/heads/', address)\n\n const queue = new PQueue({ concurrency: 1 })\n\n /**\n * Set of currently connected peers for the log for this Sync instance.\n * @name peers\n * @†ype Set\n * @memberof module:Sync~Sync\n * @instance\n */\n const peers = new Set()\n\n /**\n * Event emitter that emits Sync changes. See Events section for details.\n * @†ype EventEmitter\n * @memberof module:Sync~Sync\n * @instance\n */\n events = events || new EventEmitter()\n\n timeout = timeout || DefaultTimeout\n\n let started = false\n\n const onPeerJoined = async (peerId) => {\n const heads = await log.heads()\n events.emit('join', peerId, heads)\n }\n\n const sendHeads = (source) => {\n return (async function * () {\n const heads = await log.heads()\n for await (const { bytes } of heads) {\n yield bytes\n }\n })()\n }\n\n const receiveHeads = (peerId) => async (source) => {\n for await (const value of source) {\n const headBytes = value.subarray()\n if (headBytes && onSynced) {\n await onSynced(headBytes)\n }\n }\n if (started) {\n await onPeerJoined(peerId)\n }\n }\n\n const handleReceiveHeads = async ({ connection, stream }) => {\n const peerId = String(connection.remotePeer)\n try {\n peers.add(peerId)\n await pipe(stream, receiveHeads(peerId), sendHeads, stream)\n } catch (e) {\n peers.delete(peerId)\n events.emit('error', e)\n }\n }\n\n const handlePeerSubscribed = async (event) => {\n const task = async () => {\n const { peerId: remotePeer, subscriptions } = event.detail\n const peerId = String(remotePeer)\n const subscription = subscriptions.find(e => e.topic === address)\n if (!subscription) {\n return\n }\n if (subscription.subscribe) {\n if (peers.has(peerId)) {\n return\n }\n const timeoutController = new TimeoutController(timeout)\n const { signal } = timeoutController\n try {\n peers.add(peerId)\n const stream = await libp2p.dialProtocol(remotePeer, headsSyncAddress, { signal })\n await pipe(sendHeads, stream, receiveHeads(peerId))\n } catch (e) {\n console.error(e)\n peers.delete(peerId)\n if (e.code === 'ERR_UNSUPPORTED_PROTOCOL') {\n // Skip peer, they don't have this database currently\n } else {\n events.emit('error', e)\n }\n } finally {\n if (timeoutController) {\n timeoutController.clear()\n }\n }\n } else {\n peers.delete(peerId)\n events.emit('leave', peerId)\n }\n }\n queue.add(task)\n }\n\n const handleUpdateMessage = async message => {\n const { topic, data } = message.detail\n\n const task = async () => {\n try {\n if (data && onSynced) {\n await onSynced(data)\n }\n } catch (e) {\n events.emit('error', e)\n }\n }\n\n if (topic === address) {\n queue.add(task)\n }\n }\n\n /**\n * Add a log entry to the Sync Protocol to be sent to peers.\n * @function add\n * @param {Entry} entry Log entry\n * @memberof module:Sync~Sync\n * @instance\n */\n const add = async (entry) => {\n if (started) {\n await pubsub.publish(address, entry.bytes)\n }\n }\n\n /**\n * Stop the Sync Protocol.\n * @function stop\n * @memberof module:Sync~Sync\n * @instance\n */\n const stopSync = async () => {\n if (started) {\n started = false\n await queue.onIdle()\n pubsub.removeEventListener('subscription-change', handlePeerSubscribed)\n pubsub.removeEventListener('message', handleUpdateMessage)\n await libp2p.unhandle(headsSyncAddress)\n await pubsub.unsubscribe(address)\n peers.clear()\n }\n }\n\n /**\n * Start the Sync Protocol.\n * @function start\n * @memberof module:Sync~Sync\n * @instance\n */\n const startSync = async () => {\n if (!started) {\n // Exchange head entries with peers when connected\n await libp2p.handle(headsSyncAddress, handleReceiveHeads)\n pubsub.addEventListener('subscription-change', handlePeerSubscribed)\n pubsub.addEventListener('message', handleUpdateMessage)\n // Subscribe to the pubsub channel for this database through which updates are sent\n await pubsub.subscribe(address)\n started = true\n }\n }\n\n // Start Sync automatically\n if (start !== false) {\n await startSync()\n }\n\n return {\n add,\n stop: stopSync,\n start: startSync,\n events,\n peers\n }\n}\n\nexport { Sync as default }\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","var events = require('events')\nvar inherits = require('inherits')\n\nmodule.exports = LRU\n\nfunction LRU (opts) {\n if (!(this instanceof LRU)) return new LRU(opts)\n if (typeof opts === 'number') opts = {max: opts}\n if (!opts) opts = {}\n events.EventEmitter.call(this)\n this.cache = {}\n this.head = this.tail = null\n this.length = 0\n this.max = opts.max || 1000\n this.maxAge = opts.maxAge || 0\n}\n\ninherits(LRU, events.EventEmitter)\n\nObject.defineProperty(LRU.prototype, 'keys', {\n get: function () { return Object.keys(this.cache) }\n})\n\nLRU.prototype.clear = function () {\n this.cache = {}\n this.head = this.tail = null\n this.length = 0\n}\n\nLRU.prototype.remove = function (key) {\n if (typeof key !== 'string') key = '' + key\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n delete this.cache[key]\n this._unlink(key, element.prev, element.next)\n return element.value\n}\n\nLRU.prototype._unlink = function (key, prev, next) {\n this.length--\n\n if (this.length === 0) {\n this.head = this.tail = null\n } else {\n if (this.head === key) {\n this.head = prev\n this.cache[this.head].next = null\n } else if (this.tail === key) {\n this.tail = next\n this.cache[this.tail].prev = null\n } else {\n this.cache[prev].next = next\n this.cache[next].prev = prev\n }\n }\n}\n\nLRU.prototype.peek = function (key) {\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n\n if (!this._checkAge(key, element)) return\n return element.value\n}\n\nLRU.prototype.set = function (key, value) {\n if (typeof key !== 'string') key = '' + key\n\n var element\n\n if (this.cache.hasOwnProperty(key)) {\n element = this.cache[key]\n element.value = value\n if (this.maxAge) element.modified = Date.now()\n\n // If it's already the head, there's nothing more to do:\n if (key === this.head) return value\n this._unlink(key, element.prev, element.next)\n } else {\n element = {value: value, modified: 0, next: null, prev: null}\n if (this.maxAge) element.modified = Date.now()\n this.cache[key] = element\n\n // Eviction is only possible if the key didn't already exist:\n if (this.length === this.max) this.evict()\n }\n\n this.length++\n element.next = null\n element.prev = this.head\n\n if (this.head) this.cache[this.head].next = key\n this.head = key\n\n if (!this.tail) this.tail = key\n return value\n}\n\nLRU.prototype._checkAge = function (key, element) {\n if (this.maxAge && (Date.now() - element.modified) > this.maxAge) {\n this.remove(key)\n this.emit('evict', {key: key, value: element.value})\n return false\n }\n return true\n}\n\nLRU.prototype.get = function (key) {\n if (typeof key !== 'string') key = '' + key\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n\n if (!this._checkAge(key, element)) return\n\n if (this.head !== key) {\n if (key === this.tail) {\n this.tail = element.next\n this.cache[this.tail].prev = null\n } else {\n // Set prev.next -> element.next:\n this.cache[element.prev].next = element.next\n }\n\n // Set element.next.prev -> element.prev:\n this.cache[element.next].prev = element.prev\n\n // Element is the new head\n this.cache[this.head].next = key\n element.prev = this.head\n element.next = null\n this.head = key\n }\n\n return element.value\n}\n\nLRU.prototype.evict = function () {\n if (!this.tail) return\n var key = this.tail\n var value = this.remove(this.tail)\n this.emit('evict', {key: key, value: value})\n}\n","/**\n * @namespace module:Log~Clock\n * @memberof module:Log\n * @description\n * The lamport clock.\n * @private\n */\n\n/**\n * Compares two clocks by time and then, time is the same, by id.\n *\n * compareClocks should never return zero (0). If it does, a and b refer to the\n * same clock.\n * @param {module:Clock} a The first clock.\n * @param {module:Clock} b The second clock.\n * @return {number} Returns a negative integer if clock a is less than clock b\n * otherwise a positive integer is returned.\n * @memberof module:Log~Clock\n */\nconst compareClocks = (a, b) => {\n // Calculate the \"distance\" based on the clock, ie. lower or greater\n const dist = a.time - b.time\n\n // If the sequence number is the same (concurrent events),\n // and the IDs are different, take the one with a \"lower\" id\n if (dist === 0 && a.id !== b.id) return a.id < b.id ? -1 : 1\n\n return dist\n}\n\n/**\n * Advances a clock's time by 1, returning a new instance of Clock.\n * @param {module:Clock} clock The clock to advance.\n * @return {module:Clock} A new instance of clock with time advanced by 1.\n * @memberof module:Log~Clock\n */\nconst tickClock = (clock) => {\n return Clock(clock.id, ++clock.time)\n}\n\n/**\n * Creates an instance of Clock.\n * @function\n * @param {string} id A unique identifier.\n * @param {number} [time=0] A natural number (including 0).\n * @memberof module:Log~Clock\n * @instance\n */\nconst Clock = (id, time) => {\n time = time || 0\n\n return {\n id,\n time\n }\n}\n\nexport { Clock as default, compareClocks, tickClock }\n","const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) return new Uint8Array(o)\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n","import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase}\n */\n encode (bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.UnibaseDecoder}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\n */\n decode (text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.CombobaseDecoder}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {Prefix} */ (input[0])\n const decoder = this.decoders[prefix]\n if (decoder) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} left\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} right\n * @returns {ComposedDecoder}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec}\n * @implements {API.MultibaseEncoder}\n * @implements {API.MultibaseDecoder}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseEncode, baseDecode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n return from({\n prefix,\n name,\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input) {\n return decode(input, alphabet, bitsPerChar, name)\n }\n })\n}\n","import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n","import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n","var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n \n encode.bytes = offset - oldOffset + 1;\n \n return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length;\n\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\n\n read.bytes = counter - offset;\n\n return res\n}\n\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n};\n\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n","import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n","import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\n const bytes = new Uint8Array(digestOffset + size)\n varint.encodeTo(code, bytes, 0)\n varint.encodeTo(size, bytes, sizeOffset)\n bytes.set(digest, digestOffset)\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n const bytes = coerce(multihash)\n const [code, sizeOffset] = varint.decode(bytes)\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n const digest = bytes.subarray(sizeOffset + digestOffset)\n\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n","import { base32 } from './bases/base32.js'\nimport { base58btc } from './bases/base58.js'\nimport { coerce } from './bytes.js'\nimport * as Digest from './hashes/digest.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\nimport * as varint from './varint.js'\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder} [base]\n * @returns {API.ToString}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID} */ (\n CID.createV0(\n /** @type {API.MultihashDigest} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID}\n */\n toV1 () {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash\n const multihash = Digest.create(code, digest)\n return /** @type {CID} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n /**\n * @returns {API.LinkJSON}\n */\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link|U} input\n * @returns {CID|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} digest - (Multi)hash of the of the content.\n * @returns {CID}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\n } else {\n return new CID(version, code, digest, digest.bytes)\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes)\n return new CID(version, code, digest, bytes)\n }\n default: {\n throw new Error('Invalid version')\n }\n }\n }\n\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest} digest - Multihash.\n * @returns {CID}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest} digest - Miltihash of the content.\n * @returns {CID}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView>} bytes\n * @returns {CID}\n */\n static decode (bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes)\n if (remainder.length) {\n throw new Error('Incorrect length')\n }\n return cid\n }\n\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} bytes\n * @returns {[CID, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n */\n static inspectBytes (initialBytes) {\n let offset = 0\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset))\n offset += length\n return i\n }\n\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {CID}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {[Prefix, API.ByteView>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n const { prefix } = base\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n }\n\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes).slice(1)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n const { prefix } = base\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version)\n const hashOffset = codeOffset + varint.encodingLength(code)\n const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n varint.encodeTo(version, bytes, 0)\n varint.encodeTo(code, bytes, codeOffset)\n bytes.set(multihash, hashOffset)\n return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n","import * as Digest from './digest.js'\n\n/**\n * @template {string} Name\n * @template {number} Code\n * @param {object} options\n * @param {Name} options.name\n * @param {Code} options.code\n * @param {(input: Uint8Array) => Await} options.encode\n */\nexport const from = ({ name, code, encode }) => new Hasher(name, code, encode)\n\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n *\n * @template {string} Name\n * @template {number} Code\n * @class\n * @implements {MultihashHasher}\n */\nexport class Hasher {\n /**\n *\n * @param {Name} name\n * @param {Code} code\n * @param {(input: Uint8Array) => Await} encode\n */\n constructor (name, code, encode) {\n this.name = name\n this.code = code\n this.encode = encode\n }\n\n /**\n * @param {Uint8Array} input\n * @returns {Await>}\n */\n digest (input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input)\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest))\n } else {\n throw Error('Unknown type, must be binary type')\n /* c8 ignore next 1 */\n }\n }\n}\n\n/**\n * @template {number} Alg\n * @typedef {import('./interface.js').MultihashHasher} MultihashHasher\n */\n\n/**\n * @template T\n * @typedef {Promise|T} Await\n */\n","import { bytes as binary, CID } from './index.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\nfunction readonly ({ enumerable = true, configurable = false } = {}) {\n return { enumerable, configurable, writable: false }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<[string, CID]>}\n */\nfunction * linksWithin (path, value) {\n if (value != null && typeof value === 'object') {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index]\n const cid = CID.asCID(element)\n if (cid) {\n yield [elementPath.join('/'), cid]\n } else if (typeof element === 'object') {\n yield * links(element, elementPath)\n }\n }\n } else {\n const cid = CID.asCID(value)\n if (cid) {\n yield [path.join('/'), cid]\n } else {\n yield * links(value, path)\n }\n }\n }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array} base\n * @returns {Iterable<[string, CID]>}\n */\nfunction * links (source, base) {\n if (source == null || source instanceof Uint8Array) {\n return\n }\n const cid = CID.asCID(source)\n if (cid) {\n yield [base.join('/'), cid]\n }\n for (const [key, value] of Object.entries(source)) {\n const path = /** @type {[string|number, string]} */ ([...base, key])\n yield * linksWithin(path, value)\n }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable}\n */\nfunction * treeWithin (path, value) {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index]\n yield elementPath.join('/')\n if (typeof element === 'object' && !CID.asCID(element)) {\n yield * tree(element, elementPath)\n }\n }\n } else {\n yield * tree(value, path)\n }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array} base\n * @returns {Iterable}\n */\nfunction * tree (source, base) {\n if (source == null || typeof source !== 'object') {\n return\n }\n for (const [key, value] of Object.entries(source)) {\n const path = /** @type {[string|number, string]} */ ([...base, key])\n yield path.join('/')\n if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && !CID.asCID(value)) {\n yield * treeWithin(path, value)\n }\n }\n}\n\n/**\n *\n * @template T\n * @param {T} source\n * @param {string[]} path\n * @returns {API.BlockCursorView}\n */\nfunction get (source, path) {\n let node = /** @type {Record} */(source)\n for (const [index, key] of path.entries()) {\n node = node[key]\n if (node == null) {\n throw new Error(`Object has no property at ${path.slice(0, index + 1).map(part => `[${JSON.stringify(part)}]`).join('')}`)\n }\n const cid = CID.asCID(node)\n if (cid) {\n return { value: cid, remaining: path.slice(index + 1).join('/') }\n }\n }\n return { value: node }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} C - multicodec code corresponding to codec used to encode the block\n * @template {number} A - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @implements {API.BlockView}\n */\nclass Block {\n /**\n * @param {object} options\n * @param {CID} options.cid\n * @param {API.ByteView} options.bytes\n * @param {T} options.value\n */\n constructor ({ cid, bytes, value }) {\n if (!cid || !bytes || typeof value === 'undefined') { throw new Error('Missing required argument') }\n\n this.cid = cid\n this.bytes = bytes\n this.value = value\n this.asBlock = this\n\n // Mark all the properties immutable\n Object.defineProperties(this, {\n cid: readonly(),\n bytes: readonly(),\n value: readonly(),\n asBlock: readonly()\n })\n }\n\n links () {\n return links(this.value, [])\n }\n\n tree () {\n return tree(this.value, [])\n }\n\n /**\n *\n * @param {string} [path]\n * @returns {API.BlockCursorView}\n */\n get (path = '/') {\n return get(this.value, path.split('/').filter(Boolean))\n }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {T} options.value\n * @param {API.BlockEncoder} options.codec\n * @param {API.MultihashHasher} options.hasher\n * @returns {Promise>}\n */\nasync function encode ({ value, codec, hasher }) {\n if (typeof value === 'undefined') throw new Error('Missing required argument \"value\"')\n if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n const bytes = codec.encode(value)\n const hash = await hasher.digest(bytes)\n /** @type {CID} */\n const cid = CID.create(\n 1,\n codec.code,\n hash\n )\n\n return new Block({ value, bytes, cid })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {API.ByteView} options.bytes\n * @param {API.BlockDecoder} options.codec\n * @param {API.MultihashHasher} options.hasher\n * @returns {Promise>}\n */\nasync function decode ({ bytes, codec, hasher }) {\n if (!bytes) throw new Error('Missing required argument \"bytes\"')\n if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n const value = codec.decode(bytes)\n const hash = await hasher.digest(bytes)\n /** @type {CID} */\n const cid = CID.create(1, codec.code, hash)\n\n return new Block({ value, bytes, cid })\n}\n\n/**\n * @typedef {object} RequiredCreateOptions\n * @property {CID} options.cid\n */\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {{ cid: API.Link, value:T, codec?: API.BlockDecoder, bytes: API.ByteView }|{cid:API.Link, bytes:API.ByteView, value?:void, codec:API.BlockDecoder}} options\n * @returns {API.BlockView}\n */\nfunction createUnsafe ({ bytes, cid, value: maybeValue, codec }) {\n const value = maybeValue !== undefined\n ? maybeValue\n : (codec && codec.decode(bytes))\n\n if (value === undefined) throw new Error('Missing required argument, must either provide \"value\" or \"codec\"')\n\n return new Block({\n // eslint-disable-next-line object-shorthand\n cid: /** @type {CID} */ (cid),\n bytes,\n value\n })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {object} options\n * @param {API.Link} options.cid\n * @param {API.ByteView} options.bytes\n * @param {API.BlockDecoder} options.codec\n * @param {API.MultihashHasher} options.hasher\n * @returns {Promise>}\n */\nasync function create ({ bytes, cid, hasher, codec }) {\n if (!bytes) throw new Error('Missing required argument \"bytes\"')\n if (!hasher) throw new Error('Missing required argument \"hasher\"')\n const value = codec.decode(bytes)\n const hash = await hasher.digest(bytes)\n if (!binary.equals(cid.multihash.bytes, hash.bytes)) {\n throw new Error('CID hash does not match bytes')\n }\n\n return createUnsafe({\n bytes,\n cid,\n value,\n codec\n })\n}\n\nexport { encode, decode, create, createUnsafe, Block }\n","// This is an unfortunate replacement for @sindresorhus/is that we need to\n// re-implement for performance purposes. In particular the is.observable()\n// check is expensive, and unnecessary for our purposes. The values returned\n// are compatible with @sindresorhus/is, however.\n\nconst typeofs = [\n 'string',\n 'number',\n 'bigint',\n 'symbol'\n]\n\nconst objectTypeNames = [\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'HTMLElement',\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array'\n]\n\n/**\n * @param {any} value\n * @returns {string}\n */\nexport function is (value) {\n if (value === null) {\n return 'null'\n }\n if (value === undefined) {\n return 'undefined'\n }\n if (value === true || value === false) {\n return 'boolean'\n }\n const typeOf = typeof value\n if (typeofs.includes(typeOf)) {\n return typeOf\n }\n /* c8 ignore next 4 */\n // not going to bother testing this, it's not going to be valid anyway\n if (typeOf === 'function') {\n return 'Function'\n }\n if (Array.isArray(value)) {\n return 'Array'\n }\n if (isBuffer(value)) {\n return 'Buffer'\n }\n const objectType = getObjectType(value)\n if (objectType) {\n return objectType\n }\n /* c8 ignore next */\n return 'Object'\n}\n\n/**\n * @param {any} value\n * @returns {boolean}\n */\nfunction isBuffer (value) {\n return value && value.constructor && value.constructor.isBuffer && value.constructor.isBuffer.call(null, value)\n}\n\n/**\n * @param {any} value\n * @returns {string|undefined}\n */\nfunction getObjectType (value) {\n const objectTypeName = Object.prototype.toString.call(value).slice(8, -1)\n if (objectTypeNames.includes(objectTypeName)) {\n return objectTypeName\n }\n /* c8 ignore next */\n return undefined\n}\n","class Type {\n /**\n * @param {number} major\n * @param {string} name\n * @param {boolean} terminal\n */\n constructor (major, name, terminal) {\n this.major = major\n this.majorEncoded = major << 5\n this.name = name\n this.terminal = terminal\n }\n\n /* c8 ignore next 3 */\n toString () {\n return `Type[${this.major}].${this.name}`\n }\n\n /**\n * @param {Type} typ\n * @returns {number}\n */\n compare (typ) {\n /* c8 ignore next 1 */\n return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0\n }\n}\n\n// convert to static fields when better supported\nType.uint = new Type(0, 'uint', true)\nType.negint = new Type(1, 'negint', true)\nType.bytes = new Type(2, 'bytes', true)\nType.string = new Type(3, 'string', true)\nType.array = new Type(4, 'array', false)\nType.map = new Type(5, 'map', false)\nType.tag = new Type(6, 'tag', false) // terminal?\nType.float = new Type(7, 'float', true)\nType.false = new Type(7, 'false', true)\nType.true = new Type(7, 'true', true)\nType.null = new Type(7, 'null', true)\nType.undefined = new Type(7, 'undefined', true)\nType.break = new Type(7, 'break', true)\n// Type.indefiniteLength = new Type(0, 'indefiniteLength', true)\n\nclass Token {\n /**\n * @param {Type} type\n * @param {any} [value]\n * @param {number} [encodedLength]\n */\n constructor (type, value, encodedLength) {\n this.type = type\n this.value = value\n this.encodedLength = encodedLength\n /** @type {Uint8Array|undefined} */\n this.encodedBytes = undefined\n /** @type {Uint8Array|undefined} */\n this.byteValue = undefined\n }\n\n /* c8 ignore next 3 */\n toString () {\n return `Token[${this.type}].${this.value}`\n }\n}\n\nexport { Type, Token }\n","// Use Uint8Array directly in the browser, use Buffer in Node.js but don't\n// speak its name directly to avoid bundlers pulling in the `Buffer` polyfill\n\n// @ts-ignore\nexport const useBuffer = globalThis.process &&\n // @ts-ignore\n !globalThis.process.browser &&\n // @ts-ignore\n globalThis.Buffer &&\n // @ts-ignore\n typeof globalThis.Buffer.isBuffer === 'function'\n\nconst textDecoder = new TextDecoder()\nconst textEncoder = new TextEncoder()\n\n/**\n * @param {Uint8Array} buf\n * @returns {boolean}\n */\nfunction isBuffer (buf) {\n // @ts-ignore\n return useBuffer && globalThis.Buffer.isBuffer(buf)\n}\n\n/**\n * @param {Uint8Array|number[]} buf\n * @returns {Uint8Array}\n */\nexport function asU8A (buf) {\n /* c8 ignore next */\n if (!(buf instanceof Uint8Array)) {\n return Uint8Array.from(buf)\n }\n return isBuffer(buf) ? new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength) : buf\n}\n\nexport const toString = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return end - start > 64\n ? // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(bytes.subarray(start, end)).toString('utf8')\n : utf8Slice(bytes, start, end)\n }\n /* c8 ignore next 11 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return end - start > 64\n ? textDecoder.decode(bytes.subarray(start, end))\n : utf8Slice(bytes, start, end)\n }\n\nexport const fromString = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {string} string\n */\n (string) => {\n return string.length > 64\n ? // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(string)\n : utf8ToBytes(string)\n }\n /* c8 ignore next 7 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {string} string\n */\n (string) => {\n return string.length > 64 ? textEncoder.encode(string) : utf8ToBytes(string)\n }\n\n/**\n * Buffer variant not fast enough for what we need\n * @param {number[]} arr\n * @returns {Uint8Array}\n */\nexport const fromArray = (arr) => {\n return Uint8Array.from(arr)\n}\n\nexport const slice = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n if (isBuffer(bytes)) {\n return new Uint8Array(bytes.subarray(start, end))\n }\n return bytes.slice(start, end)\n }\n /* c8 ignore next 9 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return bytes.slice(start, end)\n }\n\nexport const concat = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\n (chunks, length) => {\n // might get a stray plain Array here\n /* c8 ignore next 1 */\n chunks = chunks.map((c) => c instanceof Uint8Array\n ? c\n // this case is occasionally missed during test runs so becomes coverage-flaky\n /* c8 ignore next 4 */\n : // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(c))\n // @ts-ignore\n return asU8A(globalThis.Buffer.concat(chunks, length))\n }\n /* c8 ignore next 19 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\n (chunks, length) => {\n const out = new Uint8Array(length)\n let off = 0\n for (let b of chunks) {\n if (off + b.length > out.length) {\n // final chunk that's bigger than we need\n b = b.subarray(0, out.length - off)\n }\n out.set(b, off)\n off += b.length\n }\n return out\n }\n\nexport const alloc = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {number} size\n * @returns {Uint8Array}\n */\n (size) => {\n // we always write over the contents we expose so this should be safe\n // @ts-ignore\n return globalThis.Buffer.allocUnsafe(size)\n }\n /* c8 ignore next 8 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {number} size\n * @returns {Uint8Array}\n */\n (size) => {\n return new Uint8Array(size)\n }\n\nexport const toHex = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} d\n * @returns {string}\n */\n (d) => {\n if (typeof d === 'string') {\n return d\n }\n // @ts-ignore\n return globalThis.Buffer.from(toBytes(d)).toString('hex')\n }\n /* c8 ignore next 12 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} d\n * @returns {string}\n */\n (d) => {\n if (typeof d === 'string') {\n return d\n }\n // @ts-ignore not smart enough to figure this out\n return Array.prototype.reduce.call(toBytes(d), (p, c) => `${p}${c.toString(16).padStart(2, '0')}`, '')\n }\n\nexport const fromHex = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {string|Uint8Array} hex\n * @returns {Uint8Array}\n */\n (hex) => {\n if (hex instanceof Uint8Array) {\n return hex\n }\n // @ts-ignore\n return globalThis.Buffer.from(hex, 'hex')\n }\n /* c8 ignore next 17 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {string|Uint8Array} hex\n * @returns {Uint8Array}\n */\n (hex) => {\n if (hex instanceof Uint8Array) {\n return hex\n }\n if (!hex.length) {\n return new Uint8Array(0)\n }\n return new Uint8Array(hex.split('')\n .map((/** @type {string} */ c, /** @type {number} */ i, /** @type {string[]} */ d) => i % 2 === 0 ? `0x${c}${d[i + 1]}` : '')\n .filter(Boolean)\n .map((/** @type {string} */ e) => parseInt(e, 16)))\n }\n\n/**\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} obj\n * @returns {Uint8Array}\n */\nfunction toBytes (obj) {\n if (obj instanceof Uint8Array && obj.constructor.name === 'Uint8Array') {\n return obj\n }\n if (obj instanceof ArrayBuffer) {\n return new Uint8Array(obj)\n }\n if (ArrayBuffer.isView(obj)) {\n return new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength)\n }\n /* c8 ignore next */\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {Uint8Array} b1\n * @param {Uint8Array} b2\n * @returns {number}\n */\nexport function compare (b1, b2) {\n /* c8 ignore next 5 */\n if (isBuffer(b1) && isBuffer(b2)) {\n // probably not possible to get here in the current API\n // @ts-ignore Buffer\n return b1.compare(b2)\n }\n for (let i = 0; i < b1.length; i++) {\n if (b1[i] === b2[i]) {\n continue\n }\n return b1[i] < b2[i] ? -1 : 1\n } /* c8 ignore next 3 */\n return 0\n}\n\n// The below code is taken from https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n// Licensed Apache-2.0.\n\n/**\n * @param {string} str\n * @returns {number[]}\n */\nfunction utf8ToBytes (str) {\n const out = []\n let p = 0\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i)\n if (c < 128) {\n out[p++] = c\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192\n out[p++] = (c & 63) | 128\n } else if (\n ((c & 0xFC00) === 0xD800) && (i + 1) < str.length &&\n ((str.charCodeAt(i + 1) & 0xFC00) === 0xDC00)) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03FF) << 10) + (str.charCodeAt(++i) & 0x03FF)\n out[p++] = (c >> 18) | 240\n out[p++] = ((c >> 12) & 63) | 128\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n } else {\n out[p++] = (c >> 12) | 224\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n }\n }\n return out\n}\n\n// The below code is mostly taken from https://github.com/feross/buffer\n// Licensed MIT. Copyright (c) Feross Aboukhadijeh\n\n/**\n * @param {Uint8Array} buf\n * @param {number} offset\n * @param {number} end\n * @returns {string}\n */\nfunction utf8Slice (buf, offset, end) {\n const res = []\n\n while (offset < end) {\n const firstByte = buf[offset]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xef) ? 4 : (firstByte > 0xdf) ? 3 : (firstByte > 0xbf) ? 2 : 1\n\n if (offset + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[offset + 1]\n if ((secondByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0x1f) << 0x6 | (secondByte & 0x3f)\n if (tempCodePoint > 0x7f) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[offset + 1]\n thirdByte = buf[offset + 2]\n if ((secondByte & 0xc0) === 0x80 && (thirdByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0xf) << 0xc | (secondByte & 0x3f) << 0x6 | (thirdByte & 0x3f)\n /* c8 ignore next 3 */\n if (tempCodePoint > 0x7ff && (tempCodePoint < 0xd800 || tempCodePoint > 0xdfff)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[offset + 1]\n thirdByte = buf[offset + 2]\n fourthByte = buf[offset + 3]\n if ((secondByte & 0xc0) === 0x80 && (thirdByte & 0xc0) === 0x80 && (fourthByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0xf) << 0x12 | (secondByte & 0x3f) << 0xc | (thirdByte & 0x3f) << 0x6 | (fourthByte & 0x3f)\n if (tempCodePoint > 0xffff && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n /* c8 ignore next 5 */\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xfffd\n bytesPerSequence = 1\n } else if (codePoint > 0xffff) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3ff | 0xd800)\n codePoint = 0xdc00 | codePoint & 0x3ff\n }\n\n res.push(codePoint)\n offset += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\n/**\n * @param {number[]} codePoints\n * @returns {string}\n */\nexport function decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n /* c8 ignore next 10 */\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n","/**\n * Bl is a list of byte chunks, similar to https://github.com/rvagg/bl but for\n * writing rather than reading.\n * A Bl object accepts set() operations for individual bytes and copyTo() for\n * inserting byte arrays. These write operations don't automatically increment\n * the internal cursor so its \"length\" won't be changed. Instead, increment()\n * must be called to extend its length to cover the inserted data.\n * The toBytes() call will convert all internal memory to a single Uint8Array of\n * the correct length, truncating any data that is stored but hasn't been\n * included by an increment().\n * get() can retrieve a single byte.\n * All operations (except toBytes()) take an \"offset\" argument that will perform\n * the write at the offset _from the current cursor_. For most operations this\n * will be `0` to write at the current cursor position but it can be ahead of\n * the current cursor. Negative offsets probably work but are untested.\n */\n\n// TODO: ipjs doesn't support this, only for test files: https://github.com/mikeal/ipjs/blob/master/src/package/testFile.js#L39\nimport { alloc, concat, slice } from './byte-utils.js'\n\n// the ts-ignores in this file are almost all for the `Uint8Array|number[]` duality that exists\n// for perf reasons. Consider better approaches to this or removing it entirely, it is quite\n// risky because of some assumptions about small chunks === number[] and everything else === Uint8Array.\n\nconst defaultChunkSize = 256\n\nexport class Bl {\n /**\n * @param {number} [chunkSize]\n */\n constructor (chunkSize = defaultChunkSize) {\n this.chunkSize = chunkSize\n /** @type {number} */\n this.cursor = 0\n /** @type {number} */\n this.maxCursor = -1\n /** @type {(Uint8Array|number[])[]} */\n this.chunks = []\n // keep the first chunk around if we can to save allocations for future encodes\n /** @type {Uint8Array|number[]|null} */\n this._initReuseChunk = null\n }\n\n reset () {\n this.cursor = 0\n this.maxCursor = -1\n if (this.chunks.length) {\n this.chunks = []\n }\n if (this._initReuseChunk !== null) {\n this.chunks.push(this._initReuseChunk)\n this.maxCursor = this._initReuseChunk.length - 1\n }\n }\n\n /**\n * @param {Uint8Array|number[]} bytes\n */\n push (bytes) {\n let topChunk = this.chunks[this.chunks.length - 1]\n const newMax = this.cursor + bytes.length\n if (newMax <= this.maxCursor + 1) {\n // we have at least one chunk and we can fit these bytes into that chunk\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1\n // @ts-ignore\n topChunk.set(bytes, chunkPos)\n } else {\n // can't fit it in\n if (topChunk) {\n // trip the last chunk to `cursor` if we need to\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1\n if (chunkPos < topChunk.length) {\n // @ts-ignore\n this.chunks[this.chunks.length - 1] = topChunk.subarray(0, chunkPos)\n this.maxCursor = this.cursor - 1\n }\n }\n if (bytes.length < 64 && bytes.length < this.chunkSize) {\n // make a new chunk and copy the new one into it\n topChunk = alloc(this.chunkSize)\n this.chunks.push(topChunk)\n this.maxCursor += topChunk.length\n if (this._initReuseChunk === null) {\n this._initReuseChunk = topChunk\n }\n // @ts-ignore\n topChunk.set(bytes, 0)\n } else {\n // push the new bytes in as its own chunk\n this.chunks.push(bytes)\n this.maxCursor += bytes.length\n }\n }\n this.cursor += bytes.length\n }\n\n /**\n * @param {boolean} [reset]\n * @returns {Uint8Array}\n */\n toBytes (reset = false) {\n let byts\n if (this.chunks.length === 1) {\n const chunk = this.chunks[0]\n if (reset && this.cursor > chunk.length / 2) {\n /* c8 ignore next 2 */\n // @ts-ignore\n byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor)\n this._initReuseChunk = null\n this.chunks = []\n } else {\n // @ts-ignore\n byts = slice(chunk, 0, this.cursor)\n }\n } else {\n // @ts-ignore\n byts = concat(this.chunks, this.cursor)\n }\n if (reset) {\n this.reset()\n }\n return byts\n }\n}\n","const decodeErrPrefix = 'CBOR decode error:'\nconst encodeErrPrefix = 'CBOR encode error:'\n\nconst uintMinorPrefixBytes = []\nuintMinorPrefixBytes[23] = 1\nuintMinorPrefixBytes[24] = 2\nuintMinorPrefixBytes[25] = 3\nuintMinorPrefixBytes[26] = 5\nuintMinorPrefixBytes[27] = 9\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} need\n */\nfunction assertEnoughData (data, pos, need) {\n if (data.length - pos < need) {\n throw new Error(`${decodeErrPrefix} not enough data for type`)\n }\n}\n\nexport {\n decodeErrPrefix,\n encodeErrPrefix,\n uintMinorPrefixBytes,\n assertEnoughData\n}\n","/* globals BigInt */\n\nimport { Token, Type } from './token.js'\nimport { decodeErrPrefix, assertEnoughData } from './common.js'\n\nexport const uintBoundaries = [24, 256, 65536, 4294967296, BigInt('18446744073709551616')]\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint8 (data, offset, options) {\n assertEnoughData(data, offset, 1)\n const value = data[offset]\n if (options.strict === true && value < uintBoundaries[0]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint16 (data, offset, options) {\n assertEnoughData(data, offset, 2)\n const value = (data[offset] << 8) | data[offset + 1]\n if (options.strict === true && value < uintBoundaries[1]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint32 (data, offset, options) {\n assertEnoughData(data, offset, 4)\n const value = (data[offset] * 16777216 /* 2 ** 24 */) + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3]\n if (options.strict === true && value < uintBoundaries[2]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number|bigint}\n */\nexport function readUint64 (data, offset, options) {\n // assume BigInt, convert back to Number if within safe range\n assertEnoughData(data, offset, 8)\n const hi = (data[offset] * 16777216 /* 2 ** 24 */) + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3]\n const lo = (data[offset + 4] * 16777216 /* 2 ** 24 */) + (data[offset + 5] << 16) + (data[offset + 6] << 8) + data[offset + 7]\n const value = (BigInt(hi) << BigInt(32)) + BigInt(lo)\n if (options.strict === true && value < uintBoundaries[3]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n if (value <= Number.MAX_SAFE_INTEGER) {\n return Number(value)\n }\n if (options.allowBigInt === true) {\n return value\n }\n throw new Error(`${decodeErrPrefix} integers outside of the safe integer range are not supported`)\n}\n\n/* not required thanks to quick[] list\nconst oneByteTokens = new Array(24).fill(0).map((v, i) => new Token(Type.uint, i, 1))\nexport function decodeUintCompact (data, pos, minor, options) {\n return oneByteTokens[minor]\n}\n*/\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint8 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint16 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint32 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint32(data, pos + 1, options), 5)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint64 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint64(data, pos + 1, options), 9)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeUint (buf, token) {\n return encodeUintValue(buf, 0, token.value)\n}\n\n/**\n * @param {Bl} buf\n * @param {number} major\n * @param {number|bigint} uint\n */\nexport function encodeUintValue (buf, major, uint) {\n if (uint < uintBoundaries[0]) {\n const nuint = Number(uint)\n // pack into one byte, minor=0, additional=value\n buf.push([major | nuint])\n } else if (uint < uintBoundaries[1]) {\n const nuint = Number(uint)\n // pack into two byte, minor=0, additional=24\n buf.push([major | 24, nuint])\n } else if (uint < uintBoundaries[2]) {\n const nuint = Number(uint)\n // pack into three byte, minor=0, additional=25\n buf.push([major | 25, nuint >>> 8, nuint & 0xff])\n } else if (uint < uintBoundaries[3]) {\n const nuint = Number(uint)\n // pack into five byte, minor=0, additional=26\n buf.push([major | 26, (nuint >>> 24) & 0xff, (nuint >>> 16) & 0xff, (nuint >>> 8) & 0xff, nuint & 0xff])\n } else {\n const buint = BigInt(uint)\n if (buint < uintBoundaries[4]) {\n // pack into nine byte, minor=0, additional=27\n const set = [major | 27, 0, 0, 0, 0, 0, 0, 0]\n // simulate bitwise above 32 bits\n let lo = Number(buint & BigInt(0xffffffff))\n let hi = Number(buint >> BigInt(32) & BigInt(0xffffffff))\n set[8] = lo & 0xff\n lo = lo >> 8\n set[7] = lo & 0xff\n lo = lo >> 8\n set[6] = lo & 0xff\n lo = lo >> 8\n set[5] = lo & 0xff\n set[4] = hi & 0xff\n hi = hi >> 8\n set[3] = hi & 0xff\n hi = hi >> 8\n set[2] = hi & 0xff\n hi = hi >> 8\n set[1] = hi & 0xff\n buf.push(set)\n } else {\n throw new Error(`${decodeErrPrefix} encountered BigInt larger than allowable range`)\n }\n }\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeUint.encodedSize = function encodedSize (token) {\n return encodeUintValue.encodedSize(token.value)\n}\n\n/**\n * @param {number} uint\n * @returns {number}\n */\nencodeUintValue.encodedSize = function encodedSize (uint) {\n if (uint < uintBoundaries[0]) {\n return 1\n }\n if (uint < uintBoundaries[1]) {\n return 2\n }\n if (uint < uintBoundaries[2]) {\n return 3\n }\n if (uint < uintBoundaries[3]) {\n return 5\n }\n return 9\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeUint.compareTokens = function compareTokens (tok1, tok2) {\n return tok1.value < tok2.value ? -1 : tok1.value > tok2.value ? 1 : /* c8 ignore next */ 0\n}\n","/* eslint-env es2020 */\n\nimport { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint8 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint16 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint32 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint32(data, pos + 1, options), 5)\n}\n\nconst neg1b = BigInt(-1)\nconst pos1b = BigInt(1)\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint64 (data, pos, _minor, options) {\n const int = uint.readUint64(data, pos + 1, options)\n if (typeof int !== 'bigint') {\n const value = -1 - int\n if (value >= Number.MIN_SAFE_INTEGER) {\n return new Token(Type.negint, value, 9)\n }\n }\n if (options.allowBigInt !== true) {\n throw new Error(`${decodeErrPrefix} integers outside of the safe integer range are not supported`)\n }\n return new Token(Type.negint, neg1b - BigInt(int), 9)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeNegint (buf, token) {\n const negint = token.value\n const unsigned = (typeof negint === 'bigint' ? (negint * neg1b - pos1b) : (negint * -1 - 1))\n uint.encodeUintValue(buf, token.type.majorEncoded, unsigned)\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeNegint.encodedSize = function encodedSize (token) {\n const negint = token.value\n const unsigned = (typeof negint === 'bigint' ? (negint * neg1b - pos1b) : (negint * -1 - 1))\n /* c8 ignore next 4 */\n // handled by quickEncode, we shouldn't get here but it's included for completeness\n if (unsigned < uint.uintBoundaries[0]) {\n return 1\n }\n if (unsigned < uint.uintBoundaries[1]) {\n return 2\n }\n if (unsigned < uint.uintBoundaries[2]) {\n return 3\n }\n if (unsigned < uint.uintBoundaries[3]) {\n return 5\n }\n return 9\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeNegint.compareTokens = function compareTokens (tok1, tok2) {\n // opposite of the uint comparison since we store the uint version in bytes\n return tok1.value < tok2.value ? 1 : tok1.value > tok2.value ? -1 : /* c8 ignore next */ 0\n}\n","import { Token, Type } from './token.js'\nimport { assertEnoughData, decodeErrPrefix } from './common.js'\nimport * as uint from './0uint.js'\nimport { compare, fromString, slice } from './byte-utils.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (data, pos, prefix, length) {\n assertEnoughData(data, pos, prefix + length)\n const buf = slice(data, pos + prefix, pos + prefix + length)\n return new Token(Type.bytes, buf, prefix + length)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeBytesCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer bytes lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * `encodedBytes` allows for caching when we do a byte version of a string\n * for key sorting purposes\n * @param {Token} token\n * @returns {Uint8Array}\n */\nfunction tokenBytes (token) {\n if (token.encodedBytes === undefined) {\n token.encodedBytes = token.type === Type.string ? fromString(token.value) : token.value\n }\n // @ts-ignore c'mon\n return token.encodedBytes\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeBytes (buf, token) {\n const bytes = tokenBytes(token)\n uint.encodeUintValue(buf, token.type.majorEncoded, bytes.length)\n buf.push(bytes)\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeBytes.encodedSize = function encodedSize (token) {\n const bytes = tokenBytes(token)\n return uint.encodeUintValue.encodedSize(bytes.length) + bytes.length\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeBytes.compareTokens = function compareTokens (tok1, tok2) {\n return compareBytes(tokenBytes(tok1), tokenBytes(tok2))\n}\n\n/**\n * @param {Uint8Array} b1\n * @param {Uint8Array} b2\n * @returns {number}\n */\nexport function compareBytes (b1, b2) {\n return b1.length < b2.length ? -1 : b1.length > b2.length ? 1 : compare(b1, b2)\n}\n","import { Token, Type } from './token.js'\nimport { assertEnoughData, decodeErrPrefix } from './common.js'\nimport * as uint from './0uint.js'\nimport { encodeBytes } from './2bytes.js'\nimport { toString, slice } from './byte-utils.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} prefix\n * @param {number} length\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nfunction toToken (data, pos, prefix, length, options) {\n const totLength = prefix + length\n assertEnoughData(data, pos, totLength)\n const tok = new Token(Type.string, toString(data, pos + prefix, pos + totLength), totLength)\n if (options.retainStringBytes === true) {\n tok.byteValue = slice(data, pos + prefix, pos + totLength)\n }\n return tok\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeStringCompact (data, pos, minor, options) {\n return toToken(data, pos, 1, minor, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options), options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options), options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options), options)\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer string lengths not supported`)\n }\n return toToken(data, pos, 9, l, options)\n}\n\nexport const encodeString = encodeBytes\n","import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (_data, _pos, prefix, length) {\n return new Token(Type.array, length, prefix)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeArrayCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer array lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArrayIndefinite (data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return toToken(data, pos, 1, Infinity)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeArray (buf, token) {\n uint.encodeUintValue(buf, Type.array.majorEncoded, token.value)\n}\n\n// using an array as a map key, are you sure about this? we can only sort\n// by map length here, it's up to the encoder to decide to look deeper\nencodeArray.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeArray.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n","import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (_data, _pos, prefix, length) {\n return new Token(Type.map, length, prefix)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeMapCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer map lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMapIndefinite (data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return toToken(data, pos, 1, Infinity)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeMap (buf, token) {\n uint.encodeUintValue(buf, Type.map.majorEncoded, token.value)\n}\n\n// using a map as a map key, are you sure about this? we can only sort\n// by map length here, it's up to the encoder to decide to look deeper\nencodeMap.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeMap.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n","import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeTagCompact (_data, _pos, minor, _options) {\n return new Token(Type.tag, minor, 1)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag8 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag16 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag32 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint32(data, pos + 1, options), 5)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag64 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint64(data, pos + 1, options), 9)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeTag (buf, token) {\n uint.encodeUintValue(buf, Type.tag.majorEncoded, token.value)\n}\n\nencodeTag.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeTag.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n","// TODO: shift some of the bytes logic to bytes-utils so we can use Buffer\n// where possible\n\nimport { Token, Type } from './token.js'\nimport { decodeErrPrefix } from './common.js'\nimport { encodeUint } from './0uint.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n * @typedef {import('../interface').EncodeOptions} EncodeOptions\n */\n\nconst MINOR_FALSE = 20\nconst MINOR_TRUE = 21\nconst MINOR_NULL = 22\nconst MINOR_UNDEFINED = 23\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUndefined (_data, _pos, _minor, options) {\n if (options.allowUndefined === false) {\n throw new Error(`${decodeErrPrefix} undefined values are not supported`)\n } else if (options.coerceUndefinedToNull === true) {\n return new Token(Type.null, null, 1)\n }\n return new Token(Type.undefined, undefined, 1)\n}\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBreak (_data, _pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return new Token(Type.break, undefined, 1)\n}\n\n/**\n * @param {number} value\n * @param {number} bytes\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nfunction createToken (value, bytes, options) {\n if (options) {\n if (options.allowNaN === false && Number.isNaN(value)) {\n throw new Error(`${decodeErrPrefix} NaN values are not supported`)\n }\n if (options.allowInfinity === false && (value === Infinity || value === -Infinity)) {\n throw new Error(`${decodeErrPrefix} Infinity values are not supported`)\n }\n }\n return new Token(Type.float, value, bytes)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat16 (data, pos, _minor, options) {\n return createToken(readFloat16(data, pos + 1), 3, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat32 (data, pos, _minor, options) {\n return createToken(readFloat32(data, pos + 1), 5, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat64 (data, pos, _minor, options) {\n return createToken(readFloat64(data, pos + 1), 9, options)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n * @param {EncodeOptions} options\n */\nexport function encodeFloat (buf, token, options) {\n const float = token.value\n\n if (float === false) {\n buf.push([Type.float.majorEncoded | MINOR_FALSE])\n } else if (float === true) {\n buf.push([Type.float.majorEncoded | MINOR_TRUE])\n } else if (float === null) {\n buf.push([Type.float.majorEncoded | MINOR_NULL])\n } else if (float === undefined) {\n buf.push([Type.float.majorEncoded | MINOR_UNDEFINED])\n } else {\n let decoded\n let success = false\n if (!options || options.float64 !== true) {\n encodeFloat16(float)\n decoded = readFloat16(ui8a, 1)\n if (float === decoded || Number.isNaN(float)) {\n ui8a[0] = 0xf9\n buf.push(ui8a.slice(0, 3))\n success = true\n } else {\n encodeFloat32(float)\n decoded = readFloat32(ui8a, 1)\n if (float === decoded) {\n ui8a[0] = 0xfa\n buf.push(ui8a.slice(0, 5))\n success = true\n }\n }\n }\n if (!success) {\n encodeFloat64(float)\n decoded = readFloat64(ui8a, 1)\n ui8a[0] = 0xfb\n buf.push(ui8a.slice(0, 9))\n }\n }\n}\n\n/**\n * @param {Token} token\n * @param {EncodeOptions} options\n * @returns {number}\n */\nencodeFloat.encodedSize = function encodedSize (token, options) {\n const float = token.value\n\n if (float === false || float === true || float === null || float === undefined) {\n return 1\n }\n\n if (!options || options.float64 !== true) {\n encodeFloat16(float)\n let decoded = readFloat16(ui8a, 1)\n if (float === decoded || Number.isNaN(float)) {\n return 3\n }\n encodeFloat32(float)\n decoded = readFloat32(ui8a, 1)\n if (float === decoded) {\n return 5\n }\n }\n return 9\n}\n\nconst buffer = new ArrayBuffer(9)\nconst dataView = new DataView(buffer, 1)\nconst ui8a = new Uint8Array(buffer, 0)\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat16 (inp) {\n if (inp === Infinity) {\n dataView.setUint16(0, 0x7c00, false)\n } else if (inp === -Infinity) {\n dataView.setUint16(0, 0xfc00, false)\n } else if (Number.isNaN(inp)) {\n dataView.setUint16(0, 0x7e00, false)\n } else {\n dataView.setFloat32(0, inp)\n const valu32 = dataView.getUint32(0)\n const exponent = (valu32 & 0x7f800000) >> 23\n const mantissa = valu32 & 0x7fffff\n\n /* c8 ignore next 6 */\n if (exponent === 0xff) {\n // too big, Infinity, but this should be hard (impossible?) to trigger\n dataView.setUint16(0, 0x7c00, false)\n } else if (exponent === 0x00) {\n // 0.0, -0.0 and subnormals, shouldn't be possible to get here because 0.0 should be counted as an int\n dataView.setUint16(0, ((inp & 0x80000000) >> 16) | (mantissa >> 13), false)\n } else { // standard numbers\n // chunks of logic here borrowed from https://github.com/PJK/libcbor/blob/c78f437182533e3efa8d963ff4b945bb635c2284/src/cbor/encoding.c#L127\n const logicalExponent = exponent - 127\n // Now we know that 2^exponent <= 0 logically\n /* c8 ignore next 6 */\n if (logicalExponent < -24) {\n /* No unambiguous representation exists, this float is not a half float\n and is too small to be represented using a half, round off to zero.\n Consistent with the reference implementation. */\n // should be difficult (impossible?) to get here in JS\n dataView.setUint16(0, 0)\n } else if (logicalExponent < -14) {\n /* Offset the remaining decimal places by shifting the significand, the\n value is lost. This is an implementation decision that works around the\n absence of standard half-float in the language. */\n dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | /* sign bit */ (1 << (24 + logicalExponent)), false)\n } else {\n dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | ((logicalExponent + 15) << 10) | (mantissa >> 13), false)\n }\n }\n }\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat16 (ui8a, pos) {\n if (ui8a.length - pos < 2) {\n throw new Error(`${decodeErrPrefix} not enough data for float16`)\n }\n\n const half = (ui8a[pos] << 8) + ui8a[pos + 1]\n if (half === 0x7c00) {\n return Infinity\n }\n if (half === 0xfc00) {\n return -Infinity\n }\n if (half === 0x7e00) {\n return NaN\n }\n const exp = (half >> 10) & 0x1f\n const mant = half & 0x3ff\n let val\n if (exp === 0) {\n val = mant * (2 ** -24)\n } else if (exp !== 31) {\n val = (mant + 1024) * (2 ** (exp - 25))\n /* c8 ignore next 4 */\n } else {\n // may not be possible to get here\n val = mant === 0 ? Infinity : NaN\n }\n return (half & 0x8000) ? -val : val\n}\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat32 (inp) {\n dataView.setFloat32(0, inp, false)\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat32 (ui8a, pos) {\n if (ui8a.length - pos < 4) {\n throw new Error(`${decodeErrPrefix} not enough data for float32`)\n }\n const offset = (ui8a.byteOffset || 0) + pos\n return new DataView(ui8a.buffer, offset, 4).getFloat32(0, false)\n}\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat64 (inp) {\n dataView.setFloat64(0, inp, false)\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat64 (ui8a, pos) {\n if (ui8a.length - pos < 8) {\n throw new Error(`${decodeErrPrefix} not enough data for float64`)\n }\n const offset = (ui8a.byteOffset || 0) + pos\n return new DataView(ui8a.buffer, offset, 8).getFloat64(0, false)\n}\n\n/**\n * @param {Token} _tok1\n * @param {Token} _tok2\n * @returns {number}\n */\nencodeFloat.compareTokens = encodeUint.compareTokens\n/*\nencodeFloat.compareTokens = function compareTokens (_tok1, _tok2) {\n return _tok1\n throw new Error(`${encodeErrPrefix} cannot use floats as map keys`)\n}\n*/\n","import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport * as negint from './1negint.js'\nimport * as bytes from './2bytes.js'\nimport * as string from './3string.js'\nimport * as array from './4array.js'\nimport * as map from './5map.js'\nimport * as tag from './6tag.js'\nimport * as float from './7float.js'\nimport { decodeErrPrefix } from './common.js'\nimport { fromArray } from './byte-utils.js'\n\n/**\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n */\nfunction invalidMinor (data, pos, minor) {\n throw new Error(`${decodeErrPrefix} encountered invalid minor (${minor}) for major ${data[pos] >>> 5}`)\n}\n\n/**\n * @param {string} msg\n * @returns {()=>any}\n */\nfunction errorer (msg) {\n return () => { throw new Error(`${decodeErrPrefix} ${msg}`) }\n}\n\n/** @type {((data:Uint8Array, pos:number, minor:number, options?:DecodeOptions) => any)[]} */\nexport const jump = []\n\n// unsigned integer, 0x00..0x17 (0..23)\nfor (let i = 0; i <= 0x17; i++) {\n jump[i] = invalidMinor // uint.decodeUintCompact, handled by quick[]\n}\njump[0x18] = uint.decodeUint8 // unsigned integer, one-byte uint8_t follows\njump[0x19] = uint.decodeUint16 // unsigned integer, two-byte uint16_t follows\njump[0x1a] = uint.decodeUint32 // unsigned integer, four-byte uint32_t follows\njump[0x1b] = uint.decodeUint64 // unsigned integer, eight-byte uint64_t follows\njump[0x1c] = invalidMinor\njump[0x1d] = invalidMinor\njump[0x1e] = invalidMinor\njump[0x1f] = invalidMinor\n// negative integer, -1-0x00..-1-0x17 (-1..-24)\nfor (let i = 0x20; i <= 0x37; i++) {\n jump[i] = invalidMinor // negintDecode, handled by quick[]\n}\njump[0x38] = negint.decodeNegint8 // negative integer, -1-n one-byte uint8_t for n follows\njump[0x39] = negint.decodeNegint16 // negative integer, -1-n two-byte uint16_t for n follows\njump[0x3a] = negint.decodeNegint32 // negative integer, -1-n four-byte uint32_t for follows\njump[0x3b] = negint.decodeNegint64 // negative integer, -1-n eight-byte uint64_t for follows\njump[0x3c] = invalidMinor\njump[0x3d] = invalidMinor\njump[0x3e] = invalidMinor\njump[0x3f] = invalidMinor\n// byte string, 0x00..0x17 bytes follow\nfor (let i = 0x40; i <= 0x57; i++) {\n jump[i] = bytes.decodeBytesCompact\n}\njump[0x58] = bytes.decodeBytes8 // byte string, one-byte uint8_t for n, and then n bytes follow\njump[0x59] = bytes.decodeBytes16 // byte string, two-byte uint16_t for n, and then n bytes follow\njump[0x5a] = bytes.decodeBytes32 // byte string, four-byte uint32_t for n, and then n bytes follow\njump[0x5b] = bytes.decodeBytes64 // byte string, eight-byte uint64_t for n, and then n bytes follow\njump[0x5c] = invalidMinor\njump[0x5d] = invalidMinor\njump[0x5e] = invalidMinor\njump[0x5f] = errorer('indefinite length bytes/strings are not supported') // byte string, byte strings follow, terminated by \"break\"\n// UTF-8 string 0x00..0x17 bytes follow\nfor (let i = 0x60; i <= 0x77; i++) {\n jump[i] = string.decodeStringCompact\n}\njump[0x78] = string.decodeString8 // UTF-8 string, one-byte uint8_t for n, and then n bytes follow\njump[0x79] = string.decodeString16 // UTF-8 string, two-byte uint16_t for n, and then n bytes follow\njump[0x7a] = string.decodeString32 // UTF-8 string, four-byte uint32_t for n, and then n bytes follow\njump[0x7b] = string.decodeString64 // UTF-8 string, eight-byte uint64_t for n, and then n bytes follow\njump[0x7c] = invalidMinor\njump[0x7d] = invalidMinor\njump[0x7e] = invalidMinor\njump[0x7f] = errorer('indefinite length bytes/strings are not supported') // UTF-8 strings follow, terminated by \"break\"\n// array, 0x00..0x17 data items follow\nfor (let i = 0x80; i <= 0x97; i++) {\n jump[i] = array.decodeArrayCompact\n}\njump[0x98] = array.decodeArray8 // array, one-byte uint8_t for n, and then n data items follow\njump[0x99] = array.decodeArray16 // array, two-byte uint16_t for n, and then n data items follow\njump[0x9a] = array.decodeArray32 // array, four-byte uint32_t for n, and then n data items follow\njump[0x9b] = array.decodeArray64 // array, eight-byte uint64_t for n, and then n data items follow\njump[0x9c] = invalidMinor\njump[0x9d] = invalidMinor\njump[0x9e] = invalidMinor\njump[0x9f] = array.decodeArrayIndefinite // array, data items follow, terminated by \"break\"\n// map, 0x00..0x17 pairs of data items follow\nfor (let i = 0xa0; i <= 0xb7; i++) {\n jump[i] = map.decodeMapCompact\n}\njump[0xb8] = map.decodeMap8 // map, one-byte uint8_t for n, and then n pairs of data items follow\njump[0xb9] = map.decodeMap16 // map, two-byte uint16_t for n, and then n pairs of data items follow\njump[0xba] = map.decodeMap32 // map, four-byte uint32_t for n, and then n pairs of data items follow\njump[0xbb] = map.decodeMap64 // map, eight-byte uint64_t for n, and then n pairs of data items follow\njump[0xbc] = invalidMinor\njump[0xbd] = invalidMinor\njump[0xbe] = invalidMinor\njump[0xbf] = map.decodeMapIndefinite // map, pairs of data items follow, terminated by \"break\"\n// tags\nfor (let i = 0xc0; i <= 0xd7; i++) {\n jump[i] = tag.decodeTagCompact\n}\njump[0xd8] = tag.decodeTag8\njump[0xd9] = tag.decodeTag16\njump[0xda] = tag.decodeTag32\njump[0xdb] = tag.decodeTag64\njump[0xdc] = invalidMinor\njump[0xdd] = invalidMinor\njump[0xde] = invalidMinor\njump[0xdf] = invalidMinor\n// 0xe0..0xf3 simple values, unsupported\nfor (let i = 0xe0; i <= 0xf3; i++) {\n jump[i] = errorer('simple values are not supported')\n}\njump[0xf4] = invalidMinor // false, handled by quick[]\njump[0xf5] = invalidMinor // true, handled by quick[]\njump[0xf6] = invalidMinor // null, handled by quick[]\njump[0xf7] = float.decodeUndefined // undefined\njump[0xf8] = errorer('simple values are not supported') // simple value, one byte follows, unsupported\njump[0xf9] = float.decodeFloat16 // half-precision float (two-byte IEEE 754)\njump[0xfa] = float.decodeFloat32 // single-precision float (four-byte IEEE 754)\njump[0xfb] = float.decodeFloat64 // double-precision float (eight-byte IEEE 754)\njump[0xfc] = invalidMinor\njump[0xfd] = invalidMinor\njump[0xfe] = invalidMinor\njump[0xff] = float.decodeBreak // \"break\" stop code\n\n/** @type {Token[]} */\nexport const quick = []\n// ints <24\nfor (let i = 0; i < 24; i++) {\n quick[i] = new Token(Type.uint, i, 1)\n}\n// negints >= -24\nfor (let i = -1; i >= -24; i--) {\n quick[31 - i] = new Token(Type.negint, i, 1)\n}\n// empty bytes\nquick[0x40] = new Token(Type.bytes, new Uint8Array(0), 1)\n// empty string\nquick[0x60] = new Token(Type.string, '', 1)\n// empty list\nquick[0x80] = new Token(Type.array, 0, 1)\n// empty map\nquick[0xa0] = new Token(Type.map, 0, 1)\n// false\nquick[0xf4] = new Token(Type.false, false, 1)\n// true\nquick[0xf5] = new Token(Type.true, true, 1)\n// null\nquick[0xf6] = new Token(Type.null, null, 1)\n\n/**\n * @param {Token} token\n * @returns {Uint8Array|undefined}\n */\nexport function quickEncodeToken (token) {\n switch (token.type) {\n case Type.false:\n return fromArray([0xf4])\n case Type.true:\n return fromArray([0xf5])\n case Type.null:\n return fromArray([0xf6])\n case Type.bytes:\n if (!token.value.length) {\n return fromArray([0x40])\n }\n return\n case Type.string:\n if (token.value === '') {\n return fromArray([0x60])\n }\n return\n case Type.array:\n if (token.value === 0) {\n return fromArray([0x80])\n }\n /* c8 ignore next 2 */\n // shouldn't be possible if this were called when there was only one token\n return\n case Type.map:\n if (token.value === 0) {\n return fromArray([0xa0])\n }\n /* c8 ignore next 2 */\n // shouldn't be possible if this were called when there was only one token\n return\n case Type.uint:\n if (token.value < 24) {\n return fromArray([Number(token.value)])\n }\n return\n case Type.negint:\n if (token.value >= -24) {\n return fromArray([31 - Number(token.value)])\n }\n }\n}\n","import { is } from './is.js'\nimport { Token, Type } from './token.js'\nimport { Bl } from './bl.js'\nimport { encodeErrPrefix } from './common.js'\nimport { quickEncodeToken } from './jump.js'\nimport { asU8A } from './byte-utils.js'\n\nimport { encodeUint } from './0uint.js'\nimport { encodeNegint } from './1negint.js'\nimport { encodeBytes } from './2bytes.js'\nimport { encodeString } from './3string.js'\nimport { encodeArray } from './4array.js'\nimport { encodeMap } from './5map.js'\nimport { encodeTag } from './6tag.js'\nimport { encodeFloat } from './7float.js'\n\n/**\n * @typedef {import('../interface').EncodeOptions} EncodeOptions\n * @typedef {import('../interface').OptionalTypeEncoder} OptionalTypeEncoder\n * @typedef {import('../interface').Reference} Reference\n * @typedef {import('../interface').StrictTypeEncoder} StrictTypeEncoder\n * @typedef {import('../interface').TokenTypeEncoder} TokenTypeEncoder\n * @typedef {import('../interface').TokenOrNestedTokens} TokenOrNestedTokens\n */\n\n/** @type {EncodeOptions} */\nconst defaultEncodeOptions = {\n float64: false,\n mapSorter,\n quickEncodeToken\n}\n\n/** @returns {TokenTypeEncoder[]} */\nexport function makeCborEncoders () {\n const encoders = []\n encoders[Type.uint.major] = encodeUint\n encoders[Type.negint.major] = encodeNegint\n encoders[Type.bytes.major] = encodeBytes\n encoders[Type.string.major] = encodeString\n encoders[Type.array.major] = encodeArray\n encoders[Type.map.major] = encodeMap\n encoders[Type.tag.major] = encodeTag\n encoders[Type.float.major] = encodeFloat\n return encoders\n}\n\nconst cborEncoders = makeCborEncoders()\n\nconst buf = new Bl()\n\n/** @implements {Reference} */\nclass Ref {\n /**\n * @param {object|any[]} obj\n * @param {Reference|undefined} parent\n */\n constructor (obj, parent) {\n this.obj = obj\n this.parent = parent\n }\n\n /**\n * @param {object|any[]} obj\n * @returns {boolean}\n */\n includes (obj) {\n /** @type {Reference|undefined} */\n let p = this\n do {\n if (p.obj === obj) {\n return true\n }\n } while (p = p.parent) // eslint-disable-line\n return false\n }\n\n /**\n * @param {Reference|undefined} stack\n * @param {object|any[]} obj\n * @returns {Reference}\n */\n static createCheck (stack, obj) {\n if (stack && stack.includes(obj)) {\n throw new Error(`${encodeErrPrefix} object contains circular references`)\n }\n return new Ref(obj, stack)\n }\n}\n\nconst simpleTokens = {\n null: new Token(Type.null, null),\n undefined: new Token(Type.undefined, undefined),\n true: new Token(Type.true, true),\n false: new Token(Type.false, false),\n emptyArray: new Token(Type.array, 0),\n emptyMap: new Token(Type.map, 0)\n}\n\n/** @type {{[typeName: string]: StrictTypeEncoder}} */\nconst typeEncoders = {\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n number (obj, _typ, _options, _refStack) {\n if (!Number.isInteger(obj) || !Number.isSafeInteger(obj)) {\n return new Token(Type.float, obj)\n } else if (obj >= 0) {\n return new Token(Type.uint, obj)\n } else {\n return new Token(Type.negint, obj)\n }\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n bigint (obj, _typ, _options, _refStack) {\n if (obj >= BigInt(0)) {\n return new Token(Type.uint, obj)\n } else {\n return new Token(Type.negint, obj)\n }\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n Uint8Array (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, obj)\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n string (obj, _typ, _options, _refStack) {\n return new Token(Type.string, obj)\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n boolean (obj, _typ, _options, _refStack) {\n return obj ? simpleTokens.true : simpleTokens.false\n },\n\n /**\n * @param {any} _obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n null (_obj, _typ, _options, _refStack) {\n return simpleTokens.null\n },\n\n /**\n * @param {any} _obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n undefined (_obj, _typ, _options, _refStack) {\n return simpleTokens.undefined\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n ArrayBuffer (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj))\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n DataView (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength))\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} options\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\n Array (obj, _typ, options, refStack) {\n if (!obj.length) {\n if (options.addBreakTokens === true) {\n return [simpleTokens.emptyArray, new Token(Type.break)]\n }\n return simpleTokens.emptyArray\n }\n refStack = Ref.createCheck(refStack, obj)\n const entries = []\n let i = 0\n for (const e of obj) {\n entries[i++] = objectToTokens(e, options, refStack)\n }\n if (options.addBreakTokens) {\n return [new Token(Type.array, obj.length), entries, new Token(Type.break)]\n }\n return [new Token(Type.array, obj.length), entries]\n },\n\n /**\n * @param {any} obj\n * @param {string} typ\n * @param {EncodeOptions} options\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\n Object (obj, typ, options, refStack) {\n // could be an Object or a Map\n const isMap = typ !== 'Object'\n // it's slightly quicker to use Object.keys() than Object.entries()\n const keys = isMap ? obj.keys() : Object.keys(obj)\n const length = isMap ? obj.size : keys.length\n if (!length) {\n if (options.addBreakTokens === true) {\n return [simpleTokens.emptyMap, new Token(Type.break)]\n }\n return simpleTokens.emptyMap\n }\n refStack = Ref.createCheck(refStack, obj)\n /** @type {TokenOrNestedTokens[]} */\n const entries = []\n let i = 0\n for (const key of keys) {\n entries[i++] = [\n objectToTokens(key, options, refStack),\n objectToTokens(isMap ? obj.get(key) : obj[key], options, refStack)\n ]\n }\n sortMapEntries(entries, options)\n if (options.addBreakTokens) {\n return [new Token(Type.map, length), entries, new Token(Type.break)]\n }\n return [new Token(Type.map, length), entries]\n }\n}\n\ntypeEncoders.Map = typeEncoders.Object\ntypeEncoders.Buffer = typeEncoders.Uint8Array\nfor (const typ of 'Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64'.split(' ')) {\n typeEncoders[`${typ}Array`] = typeEncoders.DataView\n}\n\n/**\n * @param {any} obj\n * @param {EncodeOptions} [options]\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\nfunction objectToTokens (obj, options = {}, refStack) {\n const typ = is(obj)\n const customTypeEncoder = (options && options.typeEncoders && /** @type {OptionalTypeEncoder} */ options.typeEncoders[typ]) || typeEncoders[typ]\n if (typeof customTypeEncoder === 'function') {\n const tokens = customTypeEncoder(obj, typ, options, refStack)\n if (tokens != null) {\n return tokens\n }\n }\n const typeEncoder = typeEncoders[typ]\n if (!typeEncoder) {\n throw new Error(`${encodeErrPrefix} unsupported type: ${typ}`)\n }\n return typeEncoder(obj, typ, options, refStack)\n}\n\n/*\nCBOR key sorting is a mess.\n\nThe canonicalisation recommendation from https://tools.ietf.org/html/rfc7049#section-3.9\nincludes the wording:\n\n> The keys in every map must be sorted lowest value to highest.\n> Sorting is performed on the bytes of the representation of the key\n> data items without paying attention to the 3/5 bit splitting for\n> major types.\n> ...\n> * If two keys have different lengths, the shorter one sorts\n earlier;\n> * If two keys have the same length, the one with the lower value\n in (byte-wise) lexical order sorts earlier.\n\n1. It is not clear what \"bytes of the representation of the key\" means: is it\n the CBOR representation, or the binary representation of the object itself?\n Consider the int and uint difference here.\n2. It is not clear what \"without paying attention to\" means: do we include it\n and compare on that? Or do we omit the special prefix byte, (mostly) treating\n the key in its plain binary representation form.\n\nThe FIDO 2.0: Client To Authenticator Protocol spec takes the original CBOR\nwording and clarifies it according to their understanding.\nhttps://fidoalliance.org/specs/fido-v2.0-rd-20170927/fido-client-to-authenticator-protocol-v2.0-rd-20170927.html#message-encoding\n\n> The keys in every map must be sorted lowest value to highest. Sorting is\n> performed on the bytes of the representation of the key data items without\n> paying attention to the 3/5 bit splitting for major types. The sorting rules\n> are:\n> * If the major types are different, the one with the lower value in numerical\n> order sorts earlier.\n> * If two keys have different lengths, the shorter one sorts earlier;\n> * If two keys have the same length, the one with the lower value in\n> (byte-wise) lexical order sorts earlier.\n\nSome other implementations, such as borc, do a full encode then do a\nlength-first, byte-wise-second comparison:\nhttps://github.com/dignifiedquire/borc/blob/b6bae8b0bcde7c3976b0f0f0957208095c392a36/src/encoder.js#L358\nhttps://github.com/dignifiedquire/borc/blob/b6bae8b0bcde7c3976b0f0f0957208095c392a36/src/utils.js#L143-L151\n\nThis has the benefit of being able to easily handle arbitrary keys, including\ncomplex types (maps and arrays).\n\nWe'll opt for the FIDO approach, since it affords some efficies since we don't\nneed a full encode of each key to determine order and can defer to the types\nto determine how to most efficiently order their values (i.e. int and uint\nordering can be done on the numbers, no need for byte-wise, for example).\n\nRecommendation: stick to single key types or you'll get into trouble, and prefer\nstring keys because it's much simpler that way.\n*/\n\n/*\n(UPDATE, Dec 2020)\nhttps://tools.ietf.org/html/rfc8949 is the updated CBOR spec and clarifies some\nof the questions above with a new recommendation for sorting order being much\ncloser to what would be expected in other environments (i.e. no length-first\nweirdness).\nThis new sorting order is not yet implemented here but could be added as an\noption. \"Determinism\" (canonicity) is system dependent and it's difficult to\nchange existing systems that are built with existing expectations. So if a new\nordering is introduced here, the old needs to be kept as well with the user\nhaving the option.\n*/\n\n/**\n * @param {TokenOrNestedTokens[]} entries\n * @param {EncodeOptions} options\n */\nfunction sortMapEntries (entries, options) {\n if (options.mapSorter) {\n entries.sort(options.mapSorter)\n }\n}\n\n/**\n * @param {(Token|Token[])[]} e1\n * @param {(Token|Token[])[]} e2\n * @returns {number}\n */\nfunction mapSorter (e1, e2) {\n // the key position ([0]) could have a single token or an array\n // almost always it'll be a single token but complex key might get involved\n /* c8 ignore next 2 */\n const keyToken1 = Array.isArray(e1[0]) ? e1[0][0] : e1[0]\n const keyToken2 = Array.isArray(e2[0]) ? e2[0][0] : e2[0]\n\n // different key types\n if (keyToken1.type !== keyToken2.type) {\n return keyToken1.type.compare(keyToken2.type)\n }\n\n const major = keyToken1.type.major\n // TODO: handle case where cmp === 0 but there are more keyToken e. complex type)\n const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2)\n /* c8 ignore next 5 */\n if (tcmp === 0) {\n // duplicate key or complex type where the first token matched,\n // i.e. a map or array and we're only comparing the opening token\n console.warn('WARNING: complex key types used, CBOR key sorting guarantees are gone')\n }\n return tcmp\n}\n\n/**\n * @param {Bl} buf\n * @param {TokenOrNestedTokens} tokens\n * @param {TokenTypeEncoder[]} encoders\n * @param {EncodeOptions} options\n */\nfunction tokensToEncoded (buf, tokens, encoders, options) {\n if (Array.isArray(tokens)) {\n for (const token of tokens) {\n tokensToEncoded(buf, token, encoders, options)\n }\n } else {\n encoders[tokens.type.major](buf, tokens, options)\n }\n}\n\n/**\n * @param {any} data\n * @param {TokenTypeEncoder[]} encoders\n * @param {EncodeOptions} options\n * @returns {Uint8Array}\n */\nfunction encodeCustom (data, encoders, options) {\n const tokens = objectToTokens(data, options)\n if (!Array.isArray(tokens) && options.quickEncodeToken) {\n const quickBytes = options.quickEncodeToken(tokens)\n if (quickBytes) {\n return quickBytes\n }\n const encoder = encoders[tokens.type.major]\n if (encoder.encodedSize) {\n const size = encoder.encodedSize(tokens, options)\n const buf = new Bl(size)\n encoder(buf, tokens, options)\n /* c8 ignore next 4 */\n // this would be a problem with encodedSize() functions\n if (buf.chunks.length !== 1) {\n throw new Error(`Unexpected error: pre-calculated length for ${tokens} was wrong`)\n }\n return asU8A(buf.chunks[0])\n }\n }\n buf.reset()\n tokensToEncoded(buf, tokens, encoders, options)\n return buf.toBytes(true)\n}\n\n/**\n * @param {any} data\n * @param {EncodeOptions} [options]\n * @returns {Uint8Array}\n */\nfunction encode (data, options) {\n options = Object.assign({}, defaultEncodeOptions, options)\n return encodeCustom(data, cborEncoders, options)\n}\n\nexport { objectToTokens, encode, encodeCustom, Ref }\n","import { decodeErrPrefix } from './common.js'\nimport { Type } from './token.js'\nimport { jump, quick } from './jump.js'\n\n/**\n * @typedef {import('./token.js').Token} Token\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n * @typedef {import('../interface').DecodeTokenizer} DecodeTokenizer\n */\n\nconst defaultDecodeOptions = {\n strict: false,\n allowIndefinite: true,\n allowUndefined: true,\n allowBigInt: true\n}\n\n/**\n * @implements {DecodeTokenizer}\n */\nclass Tokeniser {\n /**\n * @param {Uint8Array} data\n * @param {DecodeOptions} options\n */\n constructor (data, options = {}) {\n this._pos = 0\n this.data = data\n this.options = options\n }\n\n pos () {\n return this._pos\n }\n\n done () {\n return this._pos >= this.data.length\n }\n\n next () {\n const byt = this.data[this._pos]\n let token = quick[byt]\n if (token === undefined) {\n const decoder = jump[byt]\n /* c8 ignore next 4 */\n // if we're here then there's something wrong with our jump or quick lists!\n if (!decoder) {\n throw new Error(`${decodeErrPrefix} no decoder for major type ${byt >>> 5} (byte 0x${byt.toString(16).padStart(2, '0')})`)\n }\n const minor = byt & 31\n token = decoder(this.data, this._pos, minor, this.options)\n }\n // @ts-ignore we get to assume encodedLength is set (crossing fingers slightly)\n this._pos += token.encodedLength\n return token\n }\n}\n\nconst DONE = Symbol.for('DONE')\nconst BREAK = Symbol.for('BREAK')\n\n/**\n * @param {Token} token\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokenToArray (token, tokeniser, options) {\n const arr = []\n for (let i = 0; i < token.value; i++) {\n const value = tokensToObject(tokeniser, options)\n if (value === BREAK) {\n if (token.value === Infinity) {\n // normal end to indefinite length array\n break\n }\n throw new Error(`${decodeErrPrefix} got unexpected break to lengthed array`)\n }\n if (value === DONE) {\n throw new Error(`${decodeErrPrefix} found array but not enough entries (got ${i}, expected ${token.value})`)\n }\n arr[i] = value\n }\n return arr\n}\n\n/**\n * @param {Token} token\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokenToMap (token, tokeniser, options) {\n const useMaps = options.useMaps === true\n const obj = useMaps ? undefined : {}\n const m = useMaps ? new Map() : undefined\n for (let i = 0; i < token.value; i++) {\n const key = tokensToObject(tokeniser, options)\n if (key === BREAK) {\n if (token.value === Infinity) {\n // normal end to indefinite length map\n break\n }\n throw new Error(`${decodeErrPrefix} got unexpected break to lengthed map`)\n }\n if (key === DONE) {\n throw new Error(`${decodeErrPrefix} found map but not enough entries (got ${i} [no key], expected ${token.value})`)\n }\n if (useMaps !== true && typeof key !== 'string') {\n throw new Error(`${decodeErrPrefix} non-string keys not supported (got ${typeof key})`)\n }\n if (options.rejectDuplicateMapKeys === true) {\n // @ts-ignore\n if ((useMaps && m.has(key)) || (!useMaps && (key in obj))) {\n throw new Error(`${decodeErrPrefix} found repeat map key \"${key}\"`)\n }\n }\n const value = tokensToObject(tokeniser, options)\n if (value === DONE) {\n throw new Error(`${decodeErrPrefix} found map but not enough entries (got ${i} [no value], expected ${token.value})`)\n }\n if (useMaps) {\n // @ts-ignore TODO reconsider this .. maybe needs to be strict about key types\n m.set(key, value)\n } else {\n // @ts-ignore TODO reconsider this .. maybe needs to be strict about key types\n obj[key] = value\n }\n }\n // @ts-ignore c'mon man\n return useMaps ? m : obj\n}\n\n/**\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokensToObject (tokeniser, options) {\n // should we support array as an argument?\n // check for tokenIter[Symbol.iterator] and replace tokenIter with what that returns?\n if (tokeniser.done()) {\n return DONE\n }\n\n const token = tokeniser.next()\n\n if (token.type === Type.break) {\n return BREAK\n }\n\n if (token.type.terminal) {\n return token.value\n }\n\n if (token.type === Type.array) {\n return tokenToArray(token, tokeniser, options)\n }\n\n if (token.type === Type.map) {\n return tokenToMap(token, tokeniser, options)\n }\n\n if (token.type === Type.tag) {\n if (options.tags && typeof options.tags[token.value] === 'function') {\n const tagged = tokensToObject(tokeniser, options)\n return options.tags[token.value](tagged)\n }\n throw new Error(`${decodeErrPrefix} tag not supported (${token.value})`)\n }\n /* c8 ignore next */\n throw new Error('unsupported')\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {[any, Uint8Array]}\n */\nfunction decodeFirst (data, options) {\n if (!(data instanceof Uint8Array)) {\n throw new Error(`${decodeErrPrefix} data to decode must be a Uint8Array`)\n }\n options = Object.assign({}, defaultDecodeOptions, options)\n const tokeniser = options.tokenizer || new Tokeniser(data, options)\n const decoded = tokensToObject(tokeniser, options)\n if (decoded === DONE) {\n throw new Error(`${decodeErrPrefix} did not find any content to decode`)\n }\n if (decoded === BREAK) {\n throw new Error(`${decodeErrPrefix} got unexpected break`)\n }\n return [decoded, data.subarray(tokeniser.pos())]\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {any}\n */\nfunction decode (data, options) {\n const [decoded, remainder] = decodeFirst(data, options)\n if (remainder.length > 0) {\n throw new Error(`${decodeErrPrefix} too many terminals, data makes no sense`)\n }\n return decoded\n}\n\nexport { Tokeniser, tokensToObject, decode, decodeFirst }\n","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import * as cborg from 'cborg'\nimport { CID } from 'multiformats/cid'\n\n// https://github.com/ipfs/go-ipfs/issues/3570#issuecomment-273931692\nconst CID_CBOR_TAG = 42\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView} ByteView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView} ArrayBufferView\n */\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} buf\n * @returns {ByteView}\n */\nexport function toByteView (buf) {\n if (buf instanceof ArrayBuffer) {\n return new Uint8Array(buf, 0, buf.byteLength)\n }\n\n return buf\n}\n\n/**\n * cidEncoder will receive all Objects during encode, it needs to filter out\n * anything that's not a CID and return `null` for that so it's encoded as\n * normal.\n *\n * @param {any} obj\n * @returns {cborg.Token[]|null}\n */\nfunction cidEncoder (obj) {\n if (obj.asCID !== obj && obj['/'] !== obj.bytes) {\n return null // any other kind of object\n }\n const cid = CID.asCID(obj)\n /* c8 ignore next 4 */\n // very unlikely case, and it'll probably throw a recursion error in cborg\n if (!cid) {\n return null\n }\n const bytes = new Uint8Array(cid.bytes.byteLength + 1)\n bytes.set(cid.bytes, 1) // prefix is 0x00, for historical reasons\n return [\n new cborg.Token(cborg.Type.tag, CID_CBOR_TAG),\n new cborg.Token(cborg.Type.bytes, bytes)\n ]\n}\n\n// eslint-disable-next-line jsdoc/require-returns-check\n/**\n * Intercept all `undefined` values from an object walk and reject the entire\n * object if we find one.\n *\n * @returns {null}\n */\nfunction undefinedEncoder () {\n throw new Error('`undefined` is not supported by the IPLD Data Model and cannot be encoded')\n}\n\n/**\n * Intercept all `number` values from an object walk and reject the entire\n * object if we find something that doesn't fit the IPLD data model (NaN &\n * Infinity).\n *\n * @param {number} num\n * @returns {null}\n */\nfunction numberEncoder (num) {\n if (Number.isNaN(num)) {\n throw new Error('`NaN` is not supported by the IPLD Data Model and cannot be encoded')\n }\n if (num === Infinity || num === -Infinity) {\n throw new Error('`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded')\n }\n return null\n}\n\nconst _encodeOptions = {\n float64: true,\n typeEncoders: {\n Object: cidEncoder,\n undefined: undefinedEncoder,\n number: numberEncoder\n }\n}\n\nexport const encodeOptions = {\n ..._encodeOptions,\n typeEncoders: {\n ..._encodeOptions.typeEncoders\n }\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {CID}\n */\nfunction cidDecoder (bytes) {\n if (bytes[0] !== 0) {\n throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00')\n }\n return CID.decode(bytes.subarray(1)) // ignore leading 0x00\n}\n\nconst _decodeOptions = {\n allowIndefinite: false,\n coerceUndefinedToNull: true,\n allowNaN: false,\n allowInfinity: false,\n allowBigInt: true, // this will lead to BigInt for ints outside of\n // safe-integer range, which may surprise users\n strict: true,\n useMaps: false,\n rejectDuplicateMapKeys: true,\n /** @type {import('cborg').TagDecoder[]} */\n tags: []\n}\n_decodeOptions.tags[CID_CBOR_TAG] = cidDecoder\n\nexport const decodeOptions = {\n ..._decodeOptions,\n tags: _decodeOptions.tags.slice()\n}\n\nexport const name = 'dag-cbor'\nexport const code = 0x71\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView}\n */\nexport const encode = (node) => cborg.encode(node, _encodeOptions)\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} data\n * @returns {T}\n */\nexport const decode = (data) => cborg.decode(toByteView(data), _decodeOptions)\n","/* global crypto */\n\nimport { from } from './hasher.js'\n\n/**\n * @param {AlgorithmIdentifier} name\n */\nconst sha = name =>\n /**\n * @param {Uint8Array} data\n */\n async data => new Uint8Array(await crypto.subtle.digest(name, data))\n\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n})\n","import Clock from './clock.js'\nimport * as Block from 'multiformats/block'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport { base58btc } from 'multiformats/bases/base58'\n\nconst codec = dagCbor\nconst hasher = sha256\nconst hashStringEncoding = base58btc\n\n/**\n * @typedef {Object} module:Log~Entry\n * @property {string} id A string linking multiple entries together.\n * @property {*} payload An arbitrary chunk of data.\n * @property {Array} next One or more hashes pointing to the next entries in a chain of\n * entries.\n * @property {Array} refs One or more hashes which reference other entries in the chain.\n * @property {Clock} clock A logical clock. See {@link module:Log~Clock}.\n * @property {integer} v The version of the entry.\n * @property {string} key The public key of the identity.\n * @property {string} identity The identity of the entry's owner.\n * @property {string} sig The signature of the entry signed by the owner.\n */\n\n/**\n * Creates an Entry.\n * @param {module:Identities~Identity} identity The identity instance\n * @param {string} logId The unique identifier for this log\n * @param {*} data Data of the entry to be added. Can be any JSON.stringifyable\n * data.\n * @param {module:Log~Clock} [clock] The clock\n * @param {Array} [next=[]] An array of CIDs as base58btc encoded\n * strings which point to the next entries in a chain of entries.\n * @param {Array} [refs=[]] An array of CIDs as\n * base58btc encoded strings pointing to various entries which come before\n * this entry.\n * @return {Promise} A promise which contains an instance of\n * Entry.\n * Entry consists of the following properties:\n *\n * - id: A string linking multiple entries together,\n * - payload: An arbitrary chunk of data,\n * - next: One or more hashes pointing to the next entries in a chain of\n * entries,\n * - refs: One or more hashes which reference other entries in the chain,\n * - clock: A logical clock. See {@link module:Log~Clock},\n * - v: The version of the entry,\n * - key: The public key of the identity,\n * - identity: The identity of the entry's owner,\n * - sig: The signature of the entry signed by the owner.\n * @memberof module:Log~Entry\n * @example\n * const entry = await Entry.create(identity, 'log1', 'hello')\n * console.log(entry)\n * // { payload: \"hello\", next: [], ... }\n * @private\n */\nconst create = async (identity, id, payload, clock = null, next = [], refs = []) => {\n if (identity == null) throw new Error('Identity is required, cannot create entry')\n if (id == null) throw new Error('Entry requires an id')\n if (payload == null) throw new Error('Entry requires a payload')\n if (next == null || !Array.isArray(next)) throw new Error(\"'next' argument is not an array\")\n\n clock = clock || Clock(identity.publicKey)\n\n const entry = {\n id, // For determining a unique chain\n payload, // Can be any dag-cbor encodeable data\n next, // Array of strings of CIDs\n refs, // Array of strings of CIDs\n clock, // Clock\n v: 2 // To tag the version of this data structure\n }\n\n const { bytes } = await Block.encode({ value: entry, codec, hasher })\n const signature = await identity.sign(identity, bytes)\n\n entry.key = identity.publicKey\n entry.identity = identity.hash\n entry.sig = signature\n\n return encode(entry)\n}\n\n/**\n * Verifies an entry signature.\n * @param {Identities} identities Identities system to use\n * @param {module:Log~Entry} entry The entry being verified\n * @return {Promise} A promise that resolves to a boolean value indicating if\n * the signature is valid.\n * @memberof module:Log~Entry\n * @private\n */\nconst verify = async (identities, entry) => {\n if (!identities) throw new Error('Identities is required, cannot verify entry')\n if (!isEntry(entry)) throw new Error('Invalid Log entry')\n if (!entry.key) throw new Error(\"Entry doesn't have a key\")\n if (!entry.sig) throw new Error(\"Entry doesn't have a signature\")\n\n const value = {\n id: entry.id,\n payload: entry.payload,\n next: entry.next,\n refs: entry.refs,\n clock: entry.clock,\n v: entry.v\n }\n\n const { bytes } = await Block.encode({ value, codec, hasher })\n\n return identities.verify(entry.sig, entry.key, bytes)\n}\n\n/**\n * Checks if an object is an Entry.\n * @param {module:Log~Entry} obj\n * @return {boolean}\n * @memberof module:Log~Entry\n * @private\n */\nconst isEntry = (obj) => {\n return obj && obj.id !== undefined &&\n obj.next !== undefined &&\n obj.payload !== undefined &&\n obj.v !== undefined &&\n obj.clock !== undefined &&\n obj.refs !== undefined\n}\n\n/**\n * Determines whether two entries are equal.\n * @param {module:Log~Entry} a An entry to compare.\n * @param {module:Log~Entry} b An entry to compare.\n * @return {boolean} True if a and b are equal, false otherwise.\n * @memberof module:Log~Entry\n * @private\n */\nconst isEqual = (a, b) => {\n return a && b && a.hash === b.hash\n}\n\n/**\n * Decodes a serialized Entry from bytes\n * @param {Uint8Array} bytes\n * @return {module:Log~Entry}\n * @memberof module:Log~Entry\n * @private\n */\nconst decode = async (bytes) => {\n const { value } = await Block.decode({ bytes, codec, hasher })\n return encode(value)\n}\n\n/**\n * Encodes an Entry and adds bytes field to it\n * @param {Entry} entry\n * @return {module:Log~Entry}\n * @memberof module:Log~Entry\n * @private\n */\nconst encode = async (entry) => {\n const { cid, bytes } = await Block.encode({ value: entry, codec, hasher })\n const hash = cid.toString(hashStringEncoding)\n const clock = Clock(entry.clock.id, entry.clock.time)\n return {\n ...entry,\n clock,\n hash,\n bytes\n }\n}\n\nexport default {\n create,\n verify,\n decode,\n encode,\n isEntry,\n isEqual\n}\n","/**\n * @namespace Storage-Memory\n * @memberof module:Storage\n * @description\n * MemoryStorage stores data in memory.\n */\n\n/**\n * Creates an instance of MemoryStorage.\n * @function\n * @return {module:Storage.Storage-Memory} An instance of MemoryStorage.\n * @memberof module:Storage\n * @instance\n */\nconst MemoryStorage = async () => {\n let memory = {}\n\n /**\n * Puts data to memory.\n * @function\n * @param {string} hash The hash of the data to put.\n * @param {*} data The data to store.\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const put = async (hash, data) => {\n memory[hash] = data\n }\n\n /**\n * Deletes data from memory.\n * @function\n * @param {string} hash The hash of the data to delete.\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const del = async (hash) => {\n delete memory[hash]\n }\n\n /**\n * Gets data from memory.\n * @function\n * @param {string} hash The hash of the data to get.\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const get = async (hash) => {\n return memory[hash]\n }\n\n /**\n * Iterates over records stored in memory.\n * @function\n * @yields [string, string] The next key/value pair from memory.\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const iterator = async function * () {\n for await (const [key, value] of Object.entries(memory)) {\n yield [key, value]\n }\n }\n\n /**\n * Merges data from another source into memory.\n * @function\n * @param {module:Storage} other Another storage instance.\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const merge = async (other) => {\n if (other) {\n for await (const [key, value] of other.iterator()) {\n put(key, value)\n }\n }\n }\n\n /**\n * Clears the contents of memory.\n * @function\n * @memberof module:Storage.Storage-Memory\n * @instance\n */\n const clear = async () => {\n memory = {}\n }\n\n const close = async () => {}\n\n return {\n put,\n del,\n get,\n iterator,\n merge,\n clear,\n close\n }\n}\n\nexport default MemoryStorage\n","/**\n * @namespace module:Log~Heads\n * @memberof module:Log\n * @description The log's heads.\n * @private\n */\nimport Entry from './entry.js'\nimport MemoryStorage from '../storage/memory.js'\n\nconst DefaultStorage = MemoryStorage\n\nconst Heads = async ({ storage, heads }) => {\n storage = storage || await DefaultStorage()\n\n const put = async (heads) => {\n heads = findHeads(heads)\n for (const head of heads) {\n await storage.put(head.hash, head.bytes)\n }\n }\n\n const set = async (heads) => {\n await storage.clear()\n await put(heads)\n }\n\n const add = async (head) => {\n const currentHeads = await all()\n if (currentHeads.find(e => Entry.isEqual(e, head))) {\n return\n }\n const newHeads = findHeads([...currentHeads, head])\n await set(newHeads)\n\n return newHeads\n }\n\n const remove = async (hash) => {\n const currentHeads = await all()\n const newHeads = currentHeads.filter(e => e.hash !== hash)\n await set(newHeads)\n }\n\n const iterator = async function * () {\n const it = storage.iterator()\n for await (const [, bytes] of it) {\n const head = await Entry.decode(bytes)\n yield head\n }\n }\n\n const all = async () => {\n const values = []\n for await (const head of iterator()) {\n values.push(head)\n }\n return values\n }\n\n const clear = async () => {\n await storage.clear()\n }\n\n const close = async () => {\n await storage.close()\n }\n\n // Initialize the heads if given as parameter\n await put(heads || [])\n\n return {\n put,\n set,\n add,\n remove,\n iterator,\n all,\n clear,\n close\n }\n}\n\n/**\n * Find heads from a collection of entries.\n *\n * Finds entries that are the heads of this collection,\n * ie. entries that are not referenced by other entries.\n *\n * This function is private and not exposed in the Log API\n *\n * @param {Array} entries Entries to search heads from\n * @return {Array}\n * @private\n */\nconst findHeads = (entries) => {\n entries = new Set(entries)\n const items = {}\n for (const entry of entries) {\n for (const next of entry.next) {\n items[next] = entry.hash\n }\n }\n\n const res = []\n for (const entry of entries) {\n if (!items[entry.hash]) {\n res.push(entry)\n }\n }\n\n return res\n}\n\nexport default Heads\n","import { compareClocks } from './clock.js'\n\n/**\n * Sort two entries as Last-Write-Wins (LWW).\n *\n * Last Write Wins is a conflict resolution strategy for sorting elements\n * where the element with a greater clock (latest) is chosen as the winner.\n *\n * @param {Entry} a First entry\n * @param {Entry} b Second entry\n * @return {number} 1 if a is latest, -1 if b is latest\n * @private\n */\nfunction LastWriteWins (a, b) {\n // Ultimate conflict resolution (take the first/left arg)\n const First = (a, b) => a\n // Sort two entries by their clock id, if the same always take the first\n const sortById = (a, b) => SortByClockId(a, b, First)\n // Sort two entries by their clock time, if concurrent,\n // determine sorting using provided conflict resolution function\n const sortByEntryClocks = (a, b) => SortByClocks(a, b, sortById)\n // Sort entries by clock time as the primary sort criteria\n return sortByEntryClocks(a, b)\n}\n\n/**\n * Sort two entries by their clock time.\n * @param {Entry} a First entry to compare\n * @param {Entry} b Second entry to compare\n * @param {function(a, b)} resolveConflict A function to call if entries are\n * concurrent (happened at the same time). The function should take in two\n * entries and return 1 if the first entry should be chosen and -1 if the\n * second entry should be chosen.\n * @return {number} 1 if a is greater, -1 if b is greater\n * @private\n */\nfunction SortByClocks (a, b, resolveConflict) {\n // Compare the clocks\n const diff = compareClocks(a.clock, b.clock)\n // If the clocks are concurrent, use the provided\n // conflict resolution function to determine which comes first\n return diff === 0 ? resolveConflict(a, b) : diff\n}\n\n/**\n * Sort two entries by their clock id.\n * @param {Entry} a First entry to compare\n * @param {Entry} b Second entry to compare\n * @param {function(a, b)} resolveConflict A function to call if the clocks ids\n * are the same. The function should take in two entries and return 1 if the\n * first entry should be chosen and -1 if the second entry should be chosen.\n * @return {number} 1 if a is greater, -1 if b is greater\n * @private\n */\nfunction SortByClockId (a, b, resolveConflict) {\n // Sort by ID if clocks are concurrent,\n // take the entry with a \"greater\" clock id\n return a.clock.id === b.clock.id\n ? resolveConflict(a, b)\n : a.clock.id < b.clock.id ? -1 : 1\n}\n\n/**\n * A wrapper function to throw an error if the results of a passed function\n * return zero\n * @param {function(a, b)} [tiebreaker] The tiebreaker function to validate.\n * @return {function(a, b)} 1 if a is greater, -1 if b is greater\n * @throws {Error} if func ever returns 0\n * @private\n */\nfunction NoZeroes (func) {\n const msg = `Your log's tiebreaker function, ${func.name}, has returned zero and therefore cannot be`\n\n const comparator = (a, b) => {\n // Validate by calling the function\n const result = func(a, b)\n if (result === 0) { throw Error(msg) }\n return result\n }\n\n return comparator\n}\n\nexport default {\n SortByClocks,\n SortByClockId,\n LastWriteWins,\n NoZeroes\n}\n","/**\n * @module Log\n * @description\n * Log is a verifiable, append-only log CRDT.\n *\n * Implemented as a Merkle-CRDT as per the paper\n * [\"Merkle-CRDTs: Merkle-DAGs meet CRDTs\"]{@link https://arxiv.org/abs/2004.00107}\n */\nimport LRU from 'lru'\nimport PQueue from 'p-queue'\nimport Entry from './entry.js'\nimport Clock, { tickClock } from './clock.js'\nimport Heads from './heads.js'\nimport ConflictResolution from './conflict-resolution.js'\nimport MemoryStorage from '../storage/memory.js'\n\nconst { LastWriteWins, NoZeroes } = ConflictResolution\n\nconst randomId = () => new Date().getTime().toString()\nconst maxClockTimeReducer = (res, acc) => Math.max(res, acc.clock.time)\n\n// Default storage for storing the Log and its entries. Default: Memory. Options: Memory, LRU, IPFS.\nconst DefaultStorage = MemoryStorage\n\n// Default AccessController for the Log.\n// Default policy is that anyone can write to the Log.\n// Signature of an entry will always be verified regardless of AccessController policy.\n// Any object that implements the function `canAppend()` that returns true|false can be\n// used as an AccessController.\nconst DefaultAccessController = async () => {\n // An AccessController may do any async initialization stuff here...\n return {\n canAppend: async (entry) => true\n }\n}\n\n/**\n * Create a new Log instance\n\n * @function\n * @param {IPFS} ipfs An IPFS instance\n * @param {Object} identity Identity.\n * @param {Object} options\n * @param {string} options.logId ID of the log\n * @param {Array} options.logHeads Set the heads of the log\n * @param {Object} options.access AccessController (./default-access-controller)\n * @param {Array} options.entries An Array of Entries from which to create the log\n * @param {module:Storage} [options.entryStorage] A compatible storage instance\n * for storing log entries. Defaults to MemoryStorage.\n * @param {module:Storage} [options.headsStorage] A compatible storage\n * instance for storing log heads. Defaults to MemoryStorage.\n * @param {module:Storage} [options.indexStorage] A compatible storage\n * instance for storing an index of log entries. Defaults to MemoryStorage.\n * @param {Function} options.sortFn The sort function - by default LastWriteWins\n * @return {module:Log~Log} sync An instance of Log\n * @memberof module:Log\n * @instance\n */\nconst Log = async (identity, { logId, logHeads, access, entryStorage, headsStorage, indexStorage, sortFn } = {}) => {\n /**\n * @namespace Log\n * @description The instance returned by {@link module:Log}\n */\n\n if (identity == null) {\n throw new Error('Identity is required')\n }\n if (logHeads != null && !Array.isArray(logHeads)) {\n throw new Error('\\'logHeads\\' argument must be an array')\n }\n // Set Log's id\n const id = logId || randomId()\n // Access Controller\n access = access || await DefaultAccessController()\n // Oplog entry storage\n const _entries = entryStorage || await DefaultStorage()\n // Entry index for keeping track which entries are already in the log\n const _index = indexStorage || await DefaultStorage()\n // Heads storage\n headsStorage = headsStorage || await DefaultStorage()\n // Add heads to the state storage, ie. init the log state\n const _heads = await Heads({ storage: headsStorage, heads: logHeads })\n // Conflict-resolution sorting function\n sortFn = NoZeroes(sortFn || LastWriteWins)\n // Internal queues for processing appends and joins in their call-order\n const appendQueue = new PQueue({ concurrency: 1 })\n const joinQueue = new PQueue({ concurrency: 1 })\n\n /**\n * Returns the clock of the log.\n * @return {module:Clock}\n * @memberof module:Log~Log\n * @instance\n */\n const clock = async () => {\n // Find the latest clock from the heads\n const maxTime = Math.max(0, (await heads()).reduce(maxClockTimeReducer, 0))\n return Clock(identity.publicKey, maxTime)\n }\n\n /**\n * Returns the current heads of the log\n *\n * @return {Array}\n * @memberof module:Log~Log\n * @instance\n */\n const heads = async () => {\n const res = await _heads.all()\n return res.sort(sortFn).reverse()\n }\n\n /**\n * Returns all entries in the log\n *\n * @return {Array}\n * @memberof module:Log~Log\n * @instance\n */\n const values = async () => {\n const values = []\n for await (const entry of traverse()) {\n values.unshift(entry)\n }\n return values\n }\n\n /**\n * Retrieve an entry\n *\n * @param {string} hash The hash of the entry to retrieve\n * @return {module:Log~Entry}\n * @memberof module:Log~Log\n * @instance\n */\n const get = async (hash) => {\n const bytes = await _entries.get(hash)\n if (bytes) {\n const entry = await Entry.decode(bytes)\n return entry\n }\n }\n\n const has = async (hash) => {\n const entry = await _index.get(hash)\n return entry != null\n }\n\n /**\n * Append an new entry to the log\n *\n * @param {data} data Payload to add to the entry\n * @param {Object} options\n * @param {number} options.referencesCount TODO\n * @return {module:Log~Entry} Entry that was appended\n * @memberof module:Log~Log\n * @instance\n */\n const append = async (data, options = { referencesCount: 0 }) => {\n const task = async () => {\n // 1. Prepare entry\n // 2. Authorize entry\n // 3. Store entry\n // 4. return Entry\n // Get current heads of the log\n const heads_ = await heads()\n // Create the next pointers from heads\n const nexts = heads_.map(entry => entry.hash)\n // Get references (pointers) to multiple entries in the past\n // (skips the heads which are covered by the next field)\n const refs = await getReferences(heads_, options.referencesCount + heads_.length)\n // Create the entry\n const entry = await Entry.create(\n identity,\n id,\n data,\n tickClock(await clock()),\n nexts,\n refs\n )\n // Authorize the entry\n const canAppend = await access.canAppend(entry)\n if (!canAppend) {\n throw new Error(`Could not append entry:\\nKey \"${identity.hash}\" is not allowed to write to the log`)\n }\n\n // The appended entry is now the latest head\n await _heads.set([entry])\n // Add entry to the entry storage\n await _entries.put(entry.hash, entry.bytes)\n // Add entry to the entry index\n await _index.put(entry.hash, true)\n // Return the appended entry\n return entry\n }\n\n return appendQueue.add(task)\n }\n\n /**\n * Join two logs.\n *\n * Joins another log into this one.\n *\n * @param {module:Log~Log} log Log to join with this Log\n *\n * @example\n *\n * await log1.join(log2)\n *\n * @memberof module:Log~Log\n * @instance\n */\n const join = async (log) => {\n if (!log) {\n throw new Error('Log instance not defined')\n }\n if (!isLog(log)) {\n throw new Error('Given argument is not an instance of Log')\n }\n if (_entries.merge) {\n await _entries.merge(log.storage)\n }\n const heads = await log.heads()\n for (const entry of heads) {\n await joinEntry(entry)\n }\n }\n\n /**\n * Join an entry into a log.\n *\n * @param {module:Log~Entry} entry Entry to join with this Log\n *\n * @example\n *\n * await log.joinEntry(entry)\n *\n * @memberof module:Log~Log\n * @instance\n */\n const joinEntry = async (entry) => {\n const task = async () => {\n /* 1. Check if the entry is already in the log and return early if it is */\n const isAlreadyInTheLog = await has(entry.hash)\n if (isAlreadyInTheLog) {\n return false\n }\n\n const verifyEntry = async (entry) => {\n // Check that the Entry belongs to this Log\n if (entry.id !== id) {\n throw new Error(`Entry's id (${entry.id}) doesn't match the log's id (${id}).`)\n }\n // Verify if entry is allowed to be added to the log\n const canAppend = await access.canAppend(entry)\n if (!canAppend) {\n throw new Error(`Could not append entry:\\nKey \"${entry.identity}\" is not allowed to write to the log`)\n }\n // Verify signature for the entry\n const isValid = await Entry.verify(identity, entry)\n if (!isValid) {\n throw new Error(`Could not validate signature for entry \"${entry.hash}\"`)\n }\n }\n\n /* 2. Verify the entry */\n await verifyEntry(entry)\n\n /* 3. Find missing entries and connections (=path in the DAG) to the current heads */\n const headsHashes = (await heads()).map(e => e.hash)\n const hashesToAdd = new Set([entry.hash])\n const hashesToGet = new Set([...entry.next, ...entry.refs])\n const connectedHeads = new Set()\n\n const traverseAndVerify = async () => {\n const getEntries = Array.from(hashesToGet.values()).filter(has).map(get)\n const entries = await Promise.all(getEntries)\n\n for (const e of entries) {\n hashesToGet.delete(e.hash)\n\n await verifyEntry(e)\n\n hashesToAdd.add(e.hash)\n\n for (const hash of [...e.next, ...e.refs]) {\n const isInTheLog = await has(hash)\n\n if (!isInTheLog && !hashesToAdd.has(hash)) {\n hashesToGet.add(hash)\n } else if (headsHashes.includes(hash)) {\n connectedHeads.add(hash)\n }\n }\n }\n\n if (hashesToGet.size > 0) {\n await traverseAndVerify()\n }\n }\n\n await traverseAndVerify()\n\n /* 4. Add missing entries to the index (=to the log) */\n for (const hash of hashesToAdd.values()) {\n await _index.put(hash, true)\n }\n\n /* 5. Remove heads which new entries are connect to */\n for (const hash of connectedHeads.values()) {\n await _heads.remove(hash)\n }\n\n /* 6. Add the new entry to heads (=union with current heads) */\n await _heads.add(entry)\n\n return true\n }\n\n return joinQueue.add(task)\n }\n\n /**\n * TODO\n * @memberof module:Log~Log\n * @instance\n */\n const traverse = async function * (rootEntries, shouldStopFn, useRefs = true) {\n // By default, we don't stop traversal and traverse\n // until the end of the log\n const defaultStopFn = () => false\n shouldStopFn = shouldStopFn || defaultStopFn\n // Start traversal from given entries or from current heads\n rootEntries = rootEntries || (await heads())\n // Sort the given given root entries and use as the starting stack\n let stack = rootEntries.sort(sortFn)\n // Keep a record of all the hashes of entries we've traversed and yielded\n const traversed = {}\n // Keep a record of all the hashes we are fetching or have already fetched\n let toFetch = []\n const fetched = {}\n // A function to check if we've seen a hash\n const notIndexed = (hash) => !(traversed[hash] || fetched[hash])\n // Current entry during traversal\n let entry\n // Start traversal and process stack until it's empty (traversed the full log)\n while (stack.length > 0) {\n stack = stack.sort(sortFn)\n // Get the next entry from the stack\n entry = stack.pop()\n if (entry) {\n const { hash, next, refs } = entry\n // If we have an entry that we haven't traversed yet, process it\n if (!traversed[hash]) {\n // Yield the current entry\n yield entry\n // If we should stop traversing, stop here\n const done = await shouldStopFn(entry)\n if (done === true) {\n break\n }\n // Add to the hash indices\n traversed[hash] = true\n fetched[hash] = true\n // Add the next and refs hashes to the list of hashes to fetch next,\n // filter out traversed and fetched hashes\n toFetch = [...toFetch, ...next, ...(useRefs ? refs : [])].filter(notIndexed)\n // Function to fetch an entry and making sure it's not a duplicate (check the hash indices)\n const fetchEntries = (hash) => {\n if (!traversed[hash] && !fetched[hash]) {\n fetched[hash] = true\n return get(hash)\n }\n }\n // Fetch the next/reference entries\n const nexts = await Promise.all(toFetch.map(fetchEntries))\n\n // Add the next and refs fields from the fetched entries to the next round\n toFetch = nexts\n .filter(e => e !== null && e !== undefined)\n .reduce((res, acc) => Array.from(new Set([...res, ...acc.next, ...(useRefs ? acc.refs : [])])), [])\n .filter(notIndexed)\n // Add the fetched entries to the stack to be processed\n stack = [...nexts, ...stack]\n }\n }\n }\n }\n\n /**\n * Async iterator over the log entries\n *\n * @param {Object} options\n * @param {amount} options.amount Number of entried to return. Default: return all entries.\n * @param {string} options.gt Beginning hash of the iterator, non-inclusive\n * @param {string} options.gte Beginning hash of the iterator, inclusive\n * @param {string} options.lt Ending hash of the iterator, non-inclusive\n * @param {string} options.lte Ending hash of the iterator, inclusive\n * @return {Symbol.asyncIterator} Iterator object of log entries\n *\n * @examples\n *\n * (async () => {\n * log = await Log(testIdentity, { logId: 'X' })\n *\n * for (let i = 0; i <= 100; i++) {\n * await log.append('entry' + i)\n * }\n *\n * let it = log.iterator({\n * lte: 'zdpuApFd5XAPkCTmSx7qWQmQzvtdJPtx2K5p9to6ytCS79bfk',\n * amount: 10\n * })\n *\n * for await (let entry of it) {\n * console.log(entry.payload) // 'entry100', 'entry99', ..., 'entry91'\n * }\n * })()\n *\n * @memberof module:Log~Log\n * @instance\n */\n const iterator = async function * ({ amount = -1, gt, gte, lt, lte } = {}) {\n // TODO: write comments on how the iterator algorithm works\n\n if (amount === 0) {\n return\n }\n\n if (typeof lte === 'string') {\n lte = [await get(lte)]\n }\n\n if (typeof lt === 'string') {\n const entry = await get(lt)\n const nexts = await Promise.all(entry.next.map(n => get(n)))\n lt = nexts\n }\n\n if (lt != null && !Array.isArray(lt)) throw new Error('lt must be a string or an array of Entries')\n if (lte != null && !Array.isArray(lte)) throw new Error('lte must be a string or an array of Entries')\n\n const start = (lt || (lte || await heads())).filter(i => i != null)\n const end = (gt || gte) ? await get(gt || gte) : null\n\n const amountToIterate = (end || amount === -1) ? -1 : amount\n\n let count = 0\n const shouldStopTraversal = async (entry) => {\n count++\n if (!entry) {\n return false\n }\n if (count >= amountToIterate && amountToIterate !== -1) {\n return true\n }\n if (end && Entry.isEqual(entry, end)) {\n return true\n }\n return false\n }\n\n const useBuffer = end && amount !== -1 && !lt && !lte\n const buffer = useBuffer ? new LRU(amount + 2) : null\n let index = 0\n\n const it = traverse(start, shouldStopTraversal)\n\n for await (const entry of it) {\n const skipFirst = (lt && Entry.isEqual(entry, start))\n const skipLast = (gt && Entry.isEqual(entry, end))\n const skip = skipFirst || skipLast\n if (!skip) {\n if (useBuffer) {\n buffer.set(index++, entry.hash)\n } else {\n yield entry\n }\n }\n }\n\n if (useBuffer) {\n const endIndex = buffer.keys.length\n const startIndex = endIndex > amount ? endIndex - amount : 0\n const keys = buffer.keys.slice(startIndex, endIndex)\n for (const key of keys) {\n const hash = buffer.get(key)\n const entry = await get(hash)\n yield entry\n }\n }\n }\n\n /**\n * Clear all entries from the log and the underlying storages\n * @memberof module:Log~Log\n * @instance\n */\n const clear = async () => {\n await _index.clear()\n await _heads.clear()\n await _entries.clear()\n }\n\n /**\n * Close the log and underlying storages\n * @memberof module:Log~Log\n * @instance\n */\n const close = async () => {\n await _index.close()\n await _heads.close()\n await _entries.close()\n }\n\n /**\n * Check if an object is a Log.\n * @param {Log} obj\n * @return {boolean}\n * @memberof module:Log~Log\n * @instance\n */\n const isLog = (obj) => {\n return obj && obj.id !== undefined &&\n obj.clock !== undefined &&\n obj.heads !== undefined &&\n obj.values !== undefined &&\n obj.access !== undefined &&\n obj.identity !== undefined &&\n obj.storage !== undefined\n }\n\n /**\n * Get an array of references to multiple entries in the past.\n * @param {Array} heads An array of Log heads starting rom which the references are collected from.\n * @param {number} amount The number of references to return.\n * @return {Array}\n * @private\n */\n const getReferences = async (heads, amount = 0) => {\n let refs = []\n const shouldStopTraversal = async (entry) => {\n return refs.length >= amount && amount !== -1\n }\n for await (const { hash } of traverse(heads, shouldStopTraversal, false)) {\n refs.push(hash)\n }\n refs = refs.slice(heads.length + 1, amount)\n return refs\n }\n\n return {\n id,\n clock,\n heads,\n values,\n all: values, // Alias for values()\n get,\n has,\n append,\n join,\n joinEntry,\n traverse,\n iterator,\n clear,\n close,\n access,\n identity,\n storage: _entries\n }\n}\n\nexport { Log as default, DefaultAccessController, Clock }\n","/**\n * @namespace Storage-Composed\n * @memberof module:Storage\n * @description\n * ComposedStorage stores data to multiple storage backends.\n * @example Store to LRU and Level\n * await ComposedStorage(await LRUStorage(), await LevelStorage())\n * @example Store to memory and IPFS\n * await ComposedStorage(await MemoryStorage(), await IPFSBlockStorage())\n * @example Store to LRU and a nested ComposedStorage\n * const storage1 = await ComposedStorage(await LRUStorage(), await LevelStorage())\n * await ComposedStorage(storage1, await IPFSBlockStorage())\n */\n\n/**\n * Creates an instance of ComposedStorage.\n * @function\n * @param {module:Storage} storage1 A storage instance.\n * @param {module:Storage} storage2 A storage instance.\n * @return {module:Storage.Storage-Composed} An instance of ComposedStorage.\n * @memberof module:Storage\n * @instance\n */\nconst ComposedStorage = async (storage1, storage2) => {\n /**\n * Puts data to all configured storages.\n * @function\n * @param {string} hash The hash of the data to put.\n * @param {*} data The data to store.\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const put = async (hash, data) => {\n await storage1.put(hash, data)\n await storage2.put(hash, data)\n }\n\n /**\n * Gets data from the composed storage.\n *\n * Get will fetch the data from storage1 first. If no value is found, an\n * attempt is made to fetch the data from storage2. If data exists in\n * storage2 but not in storage1, the data is added to storage1.\n * @function\n * @param {string} hash The hash of the data to get.\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const get = async (hash) => {\n let value = await storage1.get(hash)\n if (!value) {\n value = await storage2.get(hash)\n if (value) {\n await storage1.put(hash, value)\n }\n }\n return value\n }\n\n /**\n * Deletes a value from storage.\n * @function\n * @param {string} hash The hash of the value to delete.\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const del = async (hash) => {\n await storage1.del(hash)\n await storage2.del(hash)\n }\n\n /**\n * Iterates over records stored in both storages.\n * @function\n * @yields [string, string] The next key/value pair from all storages.\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const iterator = async function * ({ amount, reverse } = {}) {\n const keys = []\n const iteratorOptions = { amount: amount || -1, reverse: reverse || false }\n for (const storage of [storage1, storage2]) {\n for await (const [key, value] of storage.iterator(iteratorOptions)) {\n if (!keys[key]) {\n keys[key] = true\n yield [key, value]\n }\n }\n }\n }\n\n /**\n * Merges data from another source into each of the composed storages.\n * @function\n * @param {module:Storage} other Another storage instance.\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const merge = async (other) => {\n await storage1.merge(other)\n await storage2.merge(other)\n await other.merge(storage1)\n await other.merge(storage2)\n }\n\n /**\n * Calls clear on each of the composed storages.\n * @function\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const clear = async () => {\n await storage1.clear()\n await storage2.clear()\n }\n\n /**\n * Calls close on each of the composed storages.\n * @function\n * @memberof module:Storage.Storage-Composed\n * @instance\n */\n const close = async () => {\n await storage1.close()\n await storage2.close()\n }\n\n return {\n put,\n get,\n del,\n iterator,\n merge,\n clear,\n close\n }\n}\n\nexport default ComposedStorage\n","/**\n * @packageDocumentation\n *\n * Mostly useful for tests or when you want to be explicit about consuming an iterable without doing anything with any yielded values.\n *\n * @example\n *\n * ```javascript\n * import drain from 'it-drain'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * drain(values)\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import drain from 'it-drain'\n *\n * const values = async function * {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * await drain(values())\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction drain(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n for await (const _ of source) { } // eslint-disable-line no-unused-vars,no-empty,@typescript-eslint/no-unused-vars\n })();\n }\n else {\n for (const _ of source) { } // eslint-disable-line no-unused-vars,no-empty,@typescript-eslint/no-unused-vars\n }\n}\nexport default drain;\n//# sourceMappingURL=index.js.map","/**\n * @namespace Storage-IPFS\n * @memberof module:Storage\n * @description\n * IPFSBlockStorage uses IPFS to store data as raw blocks.\n */\nimport { CID } from 'multiformats/cid'\nimport { base58btc } from 'multiformats/bases/base58'\nimport { TimeoutController } from 'timeout-abort-controller'\nimport drain from 'it-drain'\n\nconst DefaultTimeout = 30000 // 30 seconds\n\n/**\n * Creates an instance of IPFSBlockStorage.\n * @function\n * @param {Object} params One or more parameters for configuring\n * IPFSBlockStorage.\n * @param {IPFS} params.ipfs An IPFS instance.\n * @param {boolean} [params.pin=false] True, if the block should be pinned,\n * false otherwise.\n * @param {number} [params.timeout=defaultTimeout] A timeout in ms.\n * @return {module:Storage.Storage-IPFS} An instance of IPFSBlockStorage.\n * @memberof module:Storage\n * @throw An instance of ipfs is required if params.ipfs is not specified.\n * @instance\n */\nconst IPFSBlockStorage = async ({ ipfs, pin, timeout } = {}) => {\n if (!ipfs) throw new Error('An instance of ipfs is required.')\n\n /**\n * Puts data to an IPFS block.\n * @function\n * @param {string} hash The hash of the block to put.\n * @param {*} data The data to store in the IPFS block.\n * @memberof module:Storage.Storage-IPFS\n * @instance\n */\n const put = async (hash, data) => {\n const cid = CID.parse(hash, base58btc)\n const { signal } = new TimeoutController(timeout || DefaultTimeout)\n await ipfs.blockstore.put(cid, data, { signal })\n\n if (pin && !(await ipfs.pins.isPinned(cid))) {\n await drain(ipfs.pins.add(cid))\n }\n }\n\n const del = async (hash) => {}\n\n /**\n * Gets data from an IPFS block.\n * @function\n * @param {string} hash The hash of the block to get.\n * @return {Uint8Array} The block.\n * @memberof module:Storage.Storage-IPFS\n * @instance\n */\n const get = async (hash) => {\n const cid = CID.parse(hash, base58btc)\n const { signal } = new TimeoutController(timeout || DefaultTimeout)\n const block = await ipfs.blockstore.get(cid, { signal })\n if (block) {\n return block\n }\n }\n\n const iterator = async function * () {}\n\n const merge = async (other) => {}\n\n const clear = async () => {}\n\n const close = async () => {}\n\n return {\n put,\n del,\n get,\n iterator,\n merge,\n clear,\n close\n }\n}\n\nexport default IPFSBlockStorage\n","'use strict'\n\nexports.supports = function supports (...manifests) {\n const manifest = manifests.reduce((acc, m) => Object.assign(acc, m), {})\n\n return Object.assign(manifest, {\n snapshots: manifest.snapshots || false,\n permanence: manifest.permanence || false,\n seek: manifest.seek || false,\n clear: manifest.clear || false,\n getMany: manifest.getMany || false,\n keyIterator: manifest.keyIterator || false,\n valueIterator: manifest.valueIterator || false,\n iteratorNextv: manifest.iteratorNextv || false,\n iteratorAll: manifest.iteratorAll || false,\n status: manifest.status || false,\n createIfMissing: manifest.createIfMissing || false,\n errorIfExists: manifest.errorIfExists || false,\n deferredOpen: manifest.deferredOpen || false,\n promises: manifest.promises || false,\n streams: manifest.streams || false,\n encodings: Object.assign({}, manifest.encodings),\n events: Object.assign({}, manifest.events),\n additionalMethods: Object.assign({}, manifest.additionalMethods)\n })\n}\n","'use strict'\n\nmodule.exports = class ModuleError extends Error {\n /**\n * @param {string} message Error message\n * @param {{ code?: string, cause?: Error, expected?: boolean, transient?: boolean }} [options]\n */\n constructor (message, options) {\n super(message || '')\n\n if (typeof options === 'object' && options !== null) {\n if (options.code) this.code = String(options.code)\n if (options.expected) this.expected = true\n if (options.transient) this.transient = true\n if (options.cause) this.cause = options.cause\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n }\n}\n","'use strict'\n\n/** @type {{ textEncoder: TextEncoder, textDecoder: TextDecoder }|null} */\nlet lazy = null\n\n/**\n * Get semi-global instances of TextEncoder and TextDecoder.\n * @returns {{ textEncoder: TextEncoder, textDecoder: TextDecoder }}\n */\nmodule.exports = function () {\n if (lazy === null) {\n lazy = {\n textEncoder: new TextEncoder(),\n textDecoder: new TextDecoder()\n }\n }\n\n return lazy\n}\n","'use strict'\n\nconst ModuleError = require('module-error')\nconst formats = new Set(['buffer', 'view', 'utf8'])\n\n/**\n * @template TIn, TFormat, TOut\n * @abstract\n */\nclass Encoding {\n /**\n * @param {IEncoding} options\n */\n constructor (options) {\n /** @type {(data: TIn) => TFormat} */\n this.encode = options.encode || this.encode\n\n /** @type {(data: TFormat) => TOut} */\n this.decode = options.decode || this.decode\n\n /** @type {string} */\n this.name = options.name || this.name\n\n /** @type {string} */\n this.format = options.format || this.format\n\n if (typeof this.encode !== 'function') {\n throw new TypeError(\"The 'encode' property must be a function\")\n }\n\n if (typeof this.decode !== 'function') {\n throw new TypeError(\"The 'decode' property must be a function\")\n }\n\n this.encode = this.encode.bind(this)\n this.decode = this.decode.bind(this)\n\n if (typeof this.name !== 'string' || this.name === '') {\n throw new TypeError(\"The 'name' property must be a string\")\n }\n\n if (typeof this.format !== 'string' || !formats.has(this.format)) {\n throw new TypeError(\"The 'format' property must be one of 'buffer', 'view', 'utf8'\")\n }\n\n if (options.createViewTranscoder) {\n this.createViewTranscoder = options.createViewTranscoder\n }\n\n if (options.createBufferTranscoder) {\n this.createBufferTranscoder = options.createBufferTranscoder\n }\n\n if (options.createUTF8Transcoder) {\n this.createUTF8Transcoder = options.createUTF8Transcoder\n }\n }\n\n get commonName () {\n return /** @type {string} */ (this.name.split('+')[0])\n }\n\n /** @return {BufferFormat} */\n createBufferTranscoder () {\n throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'buffer'`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n\n /** @return {ViewFormat} */\n createViewTranscoder () {\n throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'view'`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n\n /** @return {UTF8Format} */\n createUTF8Transcoder () {\n throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'utf8'`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n}\n\nexports.Encoding = Encoding\n\n/**\n * @typedef {import('./encoding').IEncoding} IEncoding\n * @template TIn, TFormat, TOut\n */\n\n/**\n * @typedef {import('./formats').BufferFormat} BufferFormat\n * @template TIn, TOut\n */\n\n/**\n * @typedef {import('./formats').ViewFormat} ViewFormat\n * @template TIn, TOut\n */\n\n/**\n * @typedef {import('./formats').UTF8Format} UTF8Format\n * @template TIn, TOut\n */\n","'use strict'\n\nconst { Buffer } = require('buffer') || {}\nconst { Encoding } = require('./encoding')\nconst textEndec = require('./text-endec')\n\n/**\n * @template TIn, TOut\n * @extends {Encoding}\n */\nclass BufferFormat extends Encoding {\n /**\n * @param {Omit, 'format'>} options\n */\n constructor (options) {\n super({ ...options, format: 'buffer' })\n }\n\n /** @override */\n createViewTranscoder () {\n return new ViewFormat({\n encode: this.encode, // Buffer is a view (UInt8Array)\n decode: (data) => this.decode(\n Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n ),\n name: `${this.name}+view`\n })\n }\n\n /** @override */\n createBufferTranscoder () {\n return this\n }\n}\n\n/**\n * @extends {Encoding}\n * @template TIn, TOut\n */\nclass ViewFormat extends Encoding {\n /**\n * @param {Omit, 'format'>} options\n */\n constructor (options) {\n super({ ...options, format: 'view' })\n }\n\n /** @override */\n createBufferTranscoder () {\n return new BufferFormat({\n encode: (data) => {\n const view = this.encode(data)\n return Buffer.from(view.buffer, view.byteOffset, view.byteLength)\n },\n decode: this.decode, // Buffer is a view (UInt8Array)\n name: `${this.name}+buffer`\n })\n }\n\n /** @override */\n createViewTranscoder () {\n return this\n }\n}\n\n/**\n * @extends {Encoding}\n * @template TIn, TOut\n */\nclass UTF8Format extends Encoding {\n /**\n * @param {Omit, 'format'>} options\n */\n constructor (options) {\n super({ ...options, format: 'utf8' })\n }\n\n /** @override */\n createBufferTranscoder () {\n return new BufferFormat({\n encode: (data) => Buffer.from(this.encode(data), 'utf8'),\n decode: (data) => this.decode(data.toString('utf8')),\n name: `${this.name}+buffer`\n })\n }\n\n /** @override */\n createViewTranscoder () {\n const { textEncoder, textDecoder } = textEndec()\n\n return new ViewFormat({\n encode: (data) => textEncoder.encode(this.encode(data)),\n decode: (data) => this.decode(textDecoder.decode(data)),\n name: `${this.name}+view`\n })\n }\n\n /** @override */\n createUTF8Transcoder () {\n return this\n }\n}\n\nexports.BufferFormat = BufferFormat\nexports.ViewFormat = ViewFormat\nexports.UTF8Format = UTF8Format\n\n/**\n * @typedef {import('./encoding').IEncoding} IEncoding\n * @template TIn, TFormat, TOut\n */\n","'use strict'\n\nconst { Buffer } = require('buffer') || { Buffer: { isBuffer: () => false } }\nconst { textEncoder, textDecoder } = require('./text-endec')()\nconst { BufferFormat, ViewFormat, UTF8Format } = require('./formats')\n\n/** @type {(v: T) => v} */\nconst identity = (v) => v\n\n/**\n * @type {typeof import('./encodings').utf8}\n */\nexports.utf8 = new UTF8Format({\n encode: function (data) {\n // On node 16.9.1 buffer.toString() is 5x faster than TextDecoder\n return Buffer.isBuffer(data)\n ? data.toString('utf8')\n : ArrayBuffer.isView(data)\n ? textDecoder.decode(data)\n : String(data)\n },\n decode: identity,\n name: 'utf8',\n createViewTranscoder () {\n return new ViewFormat({\n encode: function (data) {\n return ArrayBuffer.isView(data) ? data : textEncoder.encode(data)\n },\n decode: function (data) {\n return textDecoder.decode(data)\n },\n name: `${this.name}+view`\n })\n },\n createBufferTranscoder () {\n return new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data)\n ? data\n : ArrayBuffer.isView(data)\n ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n : Buffer.from(String(data), 'utf8')\n },\n decode: function (data) {\n return data.toString('utf8')\n },\n name: `${this.name}+buffer`\n })\n }\n})\n\n/**\n * @type {typeof import('./encodings').json}\n */\nexports.json = new UTF8Format({\n encode: JSON.stringify,\n decode: JSON.parse,\n name: 'json'\n})\n\n/**\n * @type {typeof import('./encodings').buffer}\n */\nexports.buffer = new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data)\n ? data\n : ArrayBuffer.isView(data)\n ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n : Buffer.from(String(data), 'utf8')\n },\n decode: identity,\n name: 'buffer',\n createViewTranscoder () {\n return new ViewFormat({\n encode: function (data) {\n return ArrayBuffer.isView(data) ? data : Buffer.from(String(data), 'utf8')\n },\n decode: function (data) {\n return Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n },\n name: `${this.name}+view`\n })\n }\n})\n\n/**\n * @type {typeof import('./encodings').view}\n */\nexports.view = new ViewFormat({\n encode: function (data) {\n return ArrayBuffer.isView(data) ? data : textEncoder.encode(data)\n },\n decode: identity,\n name: 'view',\n createBufferTranscoder () {\n return new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data)\n ? data\n : ArrayBuffer.isView(data)\n ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n : Buffer.from(String(data), 'utf8')\n },\n decode: identity,\n name: `${this.name}+buffer`\n })\n }\n})\n\n/**\n * @type {typeof import('./encodings').hex}\n */\nexports.hex = new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data) ? data : Buffer.from(String(data), 'hex')\n },\n decode: function (buffer) {\n return buffer.toString('hex')\n },\n name: 'hex'\n})\n\n/**\n * @type {typeof import('./encodings').base64}\n */\nexports.base64 = new BufferFormat({\n encode: function (data) {\n return Buffer.isBuffer(data) ? data : Buffer.from(String(data), 'base64')\n },\n decode: function (buffer) {\n return buffer.toString('base64')\n },\n name: 'base64'\n})\n","'use strict'\n\nconst ModuleError = require('module-error')\nconst encodings = require('./lib/encodings')\nconst { Encoding } = require('./lib/encoding')\nconst { BufferFormat, ViewFormat, UTF8Format } = require('./lib/formats')\n\nconst kFormats = Symbol('formats')\nconst kEncodings = Symbol('encodings')\nconst validFormats = new Set(['buffer', 'view', 'utf8'])\n\n/** @template T */\nclass Transcoder {\n /**\n * @param {Array<'buffer'|'view'|'utf8'>} formats\n */\n constructor (formats) {\n if (!Array.isArray(formats)) {\n throw new TypeError(\"The first argument 'formats' must be an array\")\n } else if (!formats.every(f => validFormats.has(f))) {\n // Note: we only only support aliases in key- and valueEncoding options (where we already did)\n throw new TypeError(\"Format must be one of 'buffer', 'view', 'utf8'\")\n }\n\n /** @type {Map, Encoding>} */\n this[kEncodings] = new Map()\n this[kFormats] = new Set(formats)\n\n // Register encodings (done early in order to populate encodings())\n for (const k in encodings) {\n try {\n this.encoding(k)\n } catch (err) {\n /* istanbul ignore if: assertion */\n if (err.code !== 'LEVEL_ENCODING_NOT_SUPPORTED') throw err\n }\n }\n }\n\n /**\n * @returns {Array>}\n */\n encodings () {\n return Array.from(new Set(this[kEncodings].values()))\n }\n\n /**\n * @param {string|MixedEncoding} encoding\n * @returns {Encoding}\n */\n encoding (encoding) {\n let resolved = this[kEncodings].get(encoding)\n\n if (resolved === undefined) {\n if (typeof encoding === 'string' && encoding !== '') {\n resolved = lookup[encoding]\n\n if (!resolved) {\n throw new ModuleError(`Encoding '${encoding}' is not found`, {\n code: 'LEVEL_ENCODING_NOT_FOUND'\n })\n }\n } else if (typeof encoding !== 'object' || encoding === null) {\n throw new TypeError(\"First argument 'encoding' must be a string or object\")\n } else {\n resolved = from(encoding)\n }\n\n const { name, format } = resolved\n\n if (!this[kFormats].has(format)) {\n if (this[kFormats].has('view')) {\n resolved = resolved.createViewTranscoder()\n } else if (this[kFormats].has('buffer')) {\n resolved = resolved.createBufferTranscoder()\n } else if (this[kFormats].has('utf8')) {\n resolved = resolved.createUTF8Transcoder()\n } else {\n throw new ModuleError(`Encoding '${name}' cannot be transcoded`, {\n code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n })\n }\n }\n\n for (const k of [encoding, name, resolved.name, resolved.commonName]) {\n this[kEncodings].set(k, resolved)\n }\n }\n\n return resolved\n }\n}\n\nexports.Transcoder = Transcoder\n\n/**\n * @param {MixedEncoding} options\n * @returns {Encoding}\n */\nfunction from (options) {\n if (options instanceof Encoding) {\n return options\n }\n\n // Loosely typed for ecosystem compatibility\n const maybeType = 'type' in options && typeof options.type === 'string' ? options.type : undefined\n const name = options.name || maybeType || `anonymous-${anonymousCount++}`\n\n switch (detectFormat(options)) {\n case 'view': return new ViewFormat({ ...options, name })\n case 'utf8': return new UTF8Format({ ...options, name })\n case 'buffer': return new BufferFormat({ ...options, name })\n default: {\n throw new TypeError(\"Format must be one of 'buffer', 'view', 'utf8'\")\n }\n }\n}\n\n/**\n * If format is not provided, fallback to detecting `level-codec`\n * or `multiformats` encodings, else assume a format of buffer.\n * @param {MixedEncoding} options\n * @returns {string}\n */\nfunction detectFormat (options) {\n if ('format' in options && options.format !== undefined) {\n return options.format\n } else if ('buffer' in options && typeof options.buffer === 'boolean') {\n return options.buffer ? 'buffer' : 'utf8' // level-codec\n } else if ('code' in options && Number.isInteger(options.code)) {\n return 'view' // multiformats\n } else {\n return 'buffer'\n }\n}\n\n/**\n * @typedef {import('./lib/encoding').MixedEncoding} MixedEncoding\n * @template TIn, TFormat, TOut\n */\n\n/**\n * @type {Object.>}\n */\nconst aliases = {\n binary: encodings.buffer,\n 'utf-8': encodings.utf8\n}\n\n/**\n * @type {Object.>}\n */\nconst lookup = {\n ...encodings,\n ...aliases\n}\n\nlet anonymousCount = 0\n","module.exports = typeof queueMicrotask === 'function' ? queueMicrotask : (fn) => Promise.resolve().then(fn)\n","'use strict'\n\nvar nextTick = require('./next-tick')\n\nexports.fromCallback = function (callback, symbol) {\n if (callback === undefined) {\n var promise = new Promise(function (resolve, reject) {\n callback = function (err, res) {\n if (err) reject(err)\n else resolve(res)\n }\n })\n\n callback[symbol !== undefined ? symbol : 'promise'] = promise\n } else if (typeof callback !== 'function') {\n throw new TypeError('Callback must be a function')\n }\n\n return callback\n}\n\nexports.fromPromise = function (promise, callback) {\n if (callback === undefined) return promise\n\n promise\n .then(function (res) { nextTick(() => callback(null, res)) })\n .catch(function (err) { nextTick(() => callback(err)) })\n}\n","'use strict'\n\nexports.getCallback = function (options, callback) {\n return typeof options === 'function' ? options : callback\n}\n\nexports.getOptions = function (options, def) {\n if (typeof options === 'object' && options !== null) {\n return options\n }\n\n if (def !== undefined) {\n return def\n }\n\n return {}\n}\n","'use strict'\n\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { getOptions, getCallback } = require('./lib/common')\n\nconst kPromise = Symbol('promise')\nconst kCallback = Symbol('callback')\nconst kWorking = Symbol('working')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\nconst kAutoClose = Symbol('autoClose')\nconst kFinishWork = Symbol('finishWork')\nconst kReturnMany = Symbol('returnMany')\nconst kClosing = Symbol('closing')\nconst kHandleClose = Symbol('handleClose')\nconst kClosed = Symbol('closed')\nconst kCloseCallbacks = Symbol('closeCallbacks')\nconst kKeyEncoding = Symbol('keyEncoding')\nconst kValueEncoding = Symbol('valueEncoding')\nconst kAbortOnClose = Symbol('abortOnClose')\nconst kLegacy = Symbol('legacy')\nconst kKeys = Symbol('keys')\nconst kValues = Symbol('values')\nconst kLimit = Symbol('limit')\nconst kCount = Symbol('count')\n\nconst emptyOptions = Object.freeze({})\nconst noop = () => {}\nlet warnedEnd = false\n\n// This class is an internal utility for common functionality between AbstractIterator,\n// AbstractKeyIterator and AbstractValueIterator. It's not exported.\nclass CommonIterator {\n constructor (db, options, legacy) {\n if (typeof db !== 'object' || db === null) {\n const hint = db === null ? 'null' : typeof db\n throw new TypeError(`The first argument must be an abstract-level database, received ${hint}`)\n }\n\n if (typeof options !== 'object' || options === null) {\n throw new TypeError('The second argument must be an options object')\n }\n\n this[kClosed] = false\n this[kCloseCallbacks] = []\n this[kWorking] = false\n this[kClosing] = false\n this[kAutoClose] = false\n this[kCallback] = null\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n this[kHandleClose] = this[kHandleClose].bind(this)\n this[kKeyEncoding] = options[kKeyEncoding]\n this[kValueEncoding] = options[kValueEncoding]\n this[kLegacy] = legacy\n this[kLimit] = Number.isInteger(options.limit) && options.limit >= 0 ? options.limit : Infinity\n this[kCount] = 0\n\n // Undocumented option to abort pending work on close(). Used by the\n // many-level module as a temporary solution to a blocked close().\n // TODO (next major): consider making this the default behavior. Native\n // implementations should have their own logic to safely close iterators.\n this[kAbortOnClose] = !!options.abortOnClose\n\n this.db = db\n this.db.attachResource(this)\n this.nextTick = db.nextTick\n }\n\n get count () {\n return this[kCount]\n }\n\n get limit () {\n return this[kLimit]\n }\n\n next (callback) {\n let promise\n\n if (callback === undefined) {\n promise = new Promise((resolve, reject) => {\n callback = (err, key, value) => {\n if (err) reject(err)\n else if (!this[kLegacy]) resolve(key)\n else if (key === undefined && value === undefined) resolve()\n else resolve([key, value])\n }\n })\n } else if (typeof callback !== 'function') {\n throw new TypeError('Callback must be a function')\n }\n\n if (this[kClosing]) {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call next() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n } else if (this[kWorking]) {\n this.nextTick(callback, new ModuleError('Iterator is busy: cannot call next() until previous call has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n }))\n } else {\n this[kWorking] = true\n this[kCallback] = callback\n\n if (this[kCount] >= this[kLimit]) this.nextTick(this[kHandleOne], null)\n else this._next(this[kHandleOne])\n }\n\n return promise\n }\n\n _next (callback) {\n this.nextTick(callback)\n }\n\n nextv (size, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, emptyOptions)\n\n if (!Number.isInteger(size)) {\n this.nextTick(callback, new TypeError(\"The first argument 'size' must be an integer\"))\n return callback[kPromise]\n }\n\n if (this[kClosing]) {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call nextv() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n } else if (this[kWorking]) {\n this.nextTick(callback, new ModuleError('Iterator is busy: cannot call nextv() until previous call has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n }))\n } else {\n if (size < 1) size = 1\n if (this[kLimit] < Infinity) size = Math.min(size, this[kLimit] - this[kCount])\n\n this[kWorking] = true\n this[kCallback] = callback\n\n if (size <= 0) this.nextTick(this[kHandleMany], null, [])\n else this._nextv(size, options, this[kHandleMany])\n }\n\n return callback[kPromise]\n }\n\n _nextv (size, options, callback) {\n const acc = []\n const onnext = (err, key, value) => {\n if (err) {\n return callback(err)\n } else if (this[kLegacy] ? key === undefined && value === undefined : key === undefined) {\n return callback(null, acc)\n }\n\n acc.push(this[kLegacy] ? [key, value] : key)\n\n if (acc.length === size) {\n callback(null, acc)\n } else {\n this._next(onnext)\n }\n }\n\n this._next(onnext)\n }\n\n all (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, emptyOptions)\n\n if (this[kClosing]) {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call all() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n } else if (this[kWorking]) {\n this.nextTick(callback, new ModuleError('Iterator is busy: cannot call all() until previous call has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n }))\n } else {\n this[kWorking] = true\n this[kCallback] = callback\n this[kAutoClose] = true\n\n if (this[kCount] >= this[kLimit]) this.nextTick(this[kHandleMany], null, [])\n else this._all(options, this[kHandleMany])\n }\n\n return callback[kPromise]\n }\n\n _all (options, callback) {\n // Must count here because we're directly calling _nextv()\n let count = this[kCount]\n const acc = []\n\n const nextv = () => {\n // Not configurable, because implementations should optimize _all().\n const size = this[kLimit] < Infinity ? Math.min(1e3, this[kLimit] - count) : 1e3\n\n if (size <= 0) {\n this.nextTick(callback, null, acc)\n } else {\n this._nextv(size, emptyOptions, onnextv)\n }\n }\n\n const onnextv = (err, items) => {\n if (err) {\n callback(err)\n } else if (items.length === 0) {\n callback(null, acc)\n } else {\n acc.push.apply(acc, items)\n count += items.length\n nextv()\n }\n }\n\n nextv()\n }\n\n [kFinishWork] () {\n const cb = this[kCallback]\n\n // Callback will be null if work was aborted on close\n if (this[kAbortOnClose] && cb === null) return noop\n\n this[kWorking] = false\n this[kCallback] = null\n\n if (this[kClosing]) this._close(this[kHandleClose])\n\n return cb\n }\n\n [kReturnMany] (cb, err, items) {\n if (this[kAutoClose]) {\n this.close(cb.bind(null, err, items))\n } else {\n cb(err, items)\n }\n }\n\n seek (target, options) {\n options = getOptions(options, emptyOptions)\n\n if (this[kClosing]) {\n // Don't throw here, to be kind to implementations that wrap\n // another db and don't necessarily control when the db is closed\n } else if (this[kWorking]) {\n throw new ModuleError('Iterator is busy: cannot call seek() until next() has completed', {\n code: 'LEVEL_ITERATOR_BUSY'\n })\n } else {\n const keyEncoding = this.db.keyEncoding(options.keyEncoding || this[kKeyEncoding])\n const keyFormat = keyEncoding.format\n\n if (options.keyEncoding !== keyFormat) {\n options = { ...options, keyEncoding: keyFormat }\n }\n\n const mapped = this.db.prefixKey(keyEncoding.encode(target), keyFormat)\n this._seek(mapped, options)\n }\n }\n\n _seek (target, options) {\n throw new ModuleError('Iterator does not support seek()', {\n code: 'LEVEL_NOT_SUPPORTED'\n })\n }\n\n close (callback) {\n callback = fromCallback(callback, kPromise)\n\n if (this[kClosed]) {\n this.nextTick(callback)\n } else if (this[kClosing]) {\n this[kCloseCallbacks].push(callback)\n } else {\n this[kClosing] = true\n this[kCloseCallbacks].push(callback)\n\n if (!this[kWorking]) {\n this._close(this[kHandleClose])\n } else if (this[kAbortOnClose]) {\n // Don't wait for work to finish. Subsequently ignore the result.\n const cb = this[kFinishWork]()\n\n cb(new ModuleError('Aborted on iterator close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n return callback[kPromise]\n }\n\n _close (callback) {\n this.nextTick(callback)\n }\n\n [kHandleClose] () {\n this[kClosed] = true\n this.db.detachResource(this)\n\n const callbacks = this[kCloseCallbacks]\n this[kCloseCallbacks] = []\n\n for (const cb of callbacks) {\n cb()\n }\n }\n\n async * [Symbol.asyncIterator] () {\n try {\n let item\n\n while ((item = (await this.next())) !== undefined) {\n yield item\n }\n } finally {\n if (!this[kClosed]) await this.close()\n }\n }\n}\n\n// For backwards compatibility this class is not (yet) called AbstractEntryIterator.\nclass AbstractIterator extends CommonIterator {\n constructor (db, options) {\n super(db, options, true)\n this[kKeys] = options.keys !== false\n this[kValues] = options.values !== false\n }\n\n [kHandleOne] (err, key, value) {\n const cb = this[kFinishWork]()\n if (err) return cb(err)\n\n try {\n key = this[kKeys] && key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n value = this[kValues] && value !== undefined ? this[kValueEncoding].decode(value) : undefined\n } catch (err) {\n return cb(new IteratorDecodeError('entry', err))\n }\n\n if (!(key === undefined && value === undefined)) {\n this[kCount]++\n }\n\n cb(null, key, value)\n }\n\n [kHandleMany] (err, entries) {\n const cb = this[kFinishWork]()\n if (err) return this[kReturnMany](cb, err)\n\n try {\n for (const entry of entries) {\n const key = entry[0]\n const value = entry[1]\n\n entry[0] = this[kKeys] && key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n entry[1] = this[kValues] && value !== undefined ? this[kValueEncoding].decode(value) : undefined\n }\n } catch (err) {\n return this[kReturnMany](cb, new IteratorDecodeError('entries', err))\n }\n\n this[kCount] += entries.length\n this[kReturnMany](cb, null, entries)\n }\n\n end (callback) {\n if (!warnedEnd && typeof console !== 'undefined') {\n warnedEnd = true\n console.warn(new ModuleError(\n 'The iterator.end() method was renamed to close() and end() is an alias that will be removed in a future version',\n { code: 'LEVEL_LEGACY' }\n ))\n }\n\n return this.close(callback)\n }\n}\n\nclass AbstractKeyIterator extends CommonIterator {\n constructor (db, options) {\n super(db, options, false)\n }\n\n [kHandleOne] (err, key) {\n const cb = this[kFinishWork]()\n if (err) return cb(err)\n\n try {\n key = key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n } catch (err) {\n return cb(new IteratorDecodeError('key', err))\n }\n\n if (key !== undefined) this[kCount]++\n cb(null, key)\n }\n\n [kHandleMany] (err, keys) {\n const cb = this[kFinishWork]()\n if (err) return this[kReturnMany](cb, err)\n\n try {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n keys[i] = key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n }\n } catch (err) {\n return this[kReturnMany](cb, new IteratorDecodeError('keys', err))\n }\n\n this[kCount] += keys.length\n this[kReturnMany](cb, null, keys)\n }\n}\n\nclass AbstractValueIterator extends CommonIterator {\n constructor (db, options) {\n super(db, options, false)\n }\n\n [kHandleOne] (err, value) {\n const cb = this[kFinishWork]()\n if (err) return cb(err)\n\n try {\n value = value !== undefined ? this[kValueEncoding].decode(value) : undefined\n } catch (err) {\n return cb(new IteratorDecodeError('value', err))\n }\n\n if (value !== undefined) this[kCount]++\n cb(null, value)\n }\n\n [kHandleMany] (err, values) {\n const cb = this[kFinishWork]()\n if (err) return this[kReturnMany](cb, err)\n\n try {\n for (let i = 0; i < values.length; i++) {\n const value = values[i]\n values[i] = value !== undefined ? this[kValueEncoding].decode(value) : undefined\n }\n } catch (err) {\n return this[kReturnMany](cb, new IteratorDecodeError('values', err))\n }\n\n this[kCount] += values.length\n this[kReturnMany](cb, null, values)\n }\n}\n\n// Internal utility, not typed or exported\nclass IteratorDecodeError extends ModuleError {\n constructor (subject, cause) {\n super(`Iterator could not decode ${subject}`, {\n code: 'LEVEL_DECODE_ERROR',\n cause\n })\n }\n}\n\n// To help migrating to abstract-level\nfor (const k of ['_ended property', '_nexting property', '_end method']) {\n Object.defineProperty(AbstractIterator.prototype, k.split(' ')[0], {\n get () { throw new ModuleError(`The ${k} has been removed`, { code: 'LEVEL_LEGACY' }) },\n set () { throw new ModuleError(`The ${k} has been removed`, { code: 'LEVEL_LEGACY' }) }\n })\n}\n\n// Exposed so that AbstractLevel can set these options\nAbstractIterator.keyEncoding = kKeyEncoding\nAbstractIterator.valueEncoding = kValueEncoding\n\nexports.AbstractIterator = AbstractIterator\nexports.AbstractKeyIterator = AbstractKeyIterator\nexports.AbstractValueIterator = AbstractValueIterator\n","'use strict'\n\nconst { AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\n\nconst kIterator = Symbol('iterator')\nconst kCallback = Symbol('callback')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\n\nclass DefaultKeyIterator extends AbstractKeyIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kIterator] = db.iterator({ ...options, keys: true, values: false })\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n }\n}\n\nclass DefaultValueIterator extends AbstractValueIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kIterator] = db.iterator({ ...options, keys: false, values: true })\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n }\n}\n\nfor (const Iterator of [DefaultKeyIterator, DefaultValueIterator]) {\n const keys = Iterator === DefaultKeyIterator\n const mapEntry = keys ? (entry) => entry[0] : (entry) => entry[1]\n\n Iterator.prototype._next = function (callback) {\n this[kCallback] = callback\n this[kIterator].next(this[kHandleOne])\n }\n\n Iterator.prototype[kHandleOne] = function (err, key, value) {\n const callback = this[kCallback]\n if (err) callback(err)\n else callback(null, keys ? key : value)\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n this[kCallback] = callback\n this[kIterator].nextv(size, options, this[kHandleMany])\n }\n\n Iterator.prototype._all = function (options, callback) {\n this[kCallback] = callback\n this[kIterator].all(options, this[kHandleMany])\n }\n\n Iterator.prototype[kHandleMany] = function (err, entries) {\n const callback = this[kCallback]\n if (err) callback(err)\n else callback(null, entries.map(mapEntry))\n }\n\n Iterator.prototype._seek = function (target, options) {\n this[kIterator].seek(target, options)\n }\n\n Iterator.prototype._close = function (callback) {\n this[kIterator].close(callback)\n }\n}\n\n// Internal utilities, should be typed as AbstractKeyIterator and AbstractValueIterator\nexports.DefaultKeyIterator = DefaultKeyIterator\nexports.DefaultValueIterator = DefaultValueIterator\n","'use strict'\n\nconst { AbstractIterator, AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\nconst ModuleError = require('module-error')\n\nconst kNut = Symbol('nut')\nconst kUndefer = Symbol('undefer')\nconst kFactory = Symbol('factory')\n\nclass DeferredIterator extends AbstractIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kNut] = null\n this[kFactory] = () => db.iterator(options)\n\n this.db.defer(() => this[kUndefer]())\n }\n}\n\nclass DeferredKeyIterator extends AbstractKeyIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kNut] = null\n this[kFactory] = () => db.keys(options)\n\n this.db.defer(() => this[kUndefer]())\n }\n}\n\nclass DeferredValueIterator extends AbstractValueIterator {\n constructor (db, options) {\n super(db, options)\n\n this[kNut] = null\n this[kFactory] = () => db.values(options)\n\n this.db.defer(() => this[kUndefer]())\n }\n}\n\nfor (const Iterator of [DeferredIterator, DeferredKeyIterator, DeferredValueIterator]) {\n Iterator.prototype[kUndefer] = function () {\n if (this.db.status === 'open') {\n this[kNut] = this[kFactory]()\n }\n }\n\n Iterator.prototype._next = function (callback) {\n if (this[kNut] !== null) {\n this[kNut].next(callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._next(callback))\n } else {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call next() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n if (this[kNut] !== null) {\n this[kNut].nextv(size, options, callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._nextv(size, options, callback))\n } else {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call nextv() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n Iterator.prototype._all = function (options, callback) {\n if (this[kNut] !== null) {\n this[kNut].all(callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._all(options, callback))\n } else {\n this.nextTick(callback, new ModuleError('Iterator is not open: cannot call all() after close()', {\n code: 'LEVEL_ITERATOR_NOT_OPEN'\n }))\n }\n }\n\n Iterator.prototype._seek = function (target, options) {\n if (this[kNut] !== null) {\n // TODO: explain why we need _seek() rather than seek() here\n this[kNut]._seek(target, options)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._seek(target, options))\n }\n }\n\n Iterator.prototype._close = function (callback) {\n if (this[kNut] !== null) {\n this[kNut].close(callback)\n } else if (this.db.status === 'opening') {\n this.db.defer(() => this._close(callback))\n } else {\n this.nextTick(callback)\n }\n }\n}\n\nexports.DeferredIterator = DeferredIterator\nexports.DeferredKeyIterator = DeferredKeyIterator\nexports.DeferredValueIterator = DeferredValueIterator\n","'use strict'\n\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { getCallback, getOptions } = require('./lib/common')\n\nconst kPromise = Symbol('promise')\nconst kStatus = Symbol('status')\nconst kOperations = Symbol('operations')\nconst kFinishClose = Symbol('finishClose')\nconst kCloseCallbacks = Symbol('closeCallbacks')\n\nclass AbstractChainedBatch {\n constructor (db) {\n if (typeof db !== 'object' || db === null) {\n const hint = db === null ? 'null' : typeof db\n throw new TypeError(`The first argument must be an abstract-level database, received ${hint}`)\n }\n\n this[kOperations] = []\n this[kCloseCallbacks] = []\n this[kStatus] = 'open'\n this[kFinishClose] = this[kFinishClose].bind(this)\n\n this.db = db\n this.db.attachResource(this)\n this.nextTick = db.nextTick\n }\n\n get length () {\n return this[kOperations].length\n }\n\n put (key, value, options) {\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Batch is not open: cannot call put() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n })\n }\n\n const err = this.db._checkKey(key) || this.db._checkValue(value)\n if (err) throw err\n\n const db = options && options.sublevel != null ? options.sublevel : this.db\n const original = options\n const keyEncoding = db.keyEncoding(options && options.keyEncoding)\n const valueEncoding = db.valueEncoding(options && options.valueEncoding)\n const keyFormat = keyEncoding.format\n\n // Forward encoding options\n options = { ...options, keyEncoding: keyFormat, valueEncoding: valueEncoding.format }\n\n // Prevent double prefixing\n if (db !== this.db) {\n options.sublevel = null\n }\n\n const mappedKey = db.prefixKey(keyEncoding.encode(key), keyFormat)\n const mappedValue = valueEncoding.encode(value)\n\n this._put(mappedKey, mappedValue, options)\n this[kOperations].push({ ...original, type: 'put', key, value })\n\n return this\n }\n\n _put (key, value, options) {}\n\n del (key, options) {\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Batch is not open: cannot call del() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n })\n }\n\n const err = this.db._checkKey(key)\n if (err) throw err\n\n const db = options && options.sublevel != null ? options.sublevel : this.db\n const original = options\n const keyEncoding = db.keyEncoding(options && options.keyEncoding)\n const keyFormat = keyEncoding.format\n\n // Forward encoding options\n options = { ...options, keyEncoding: keyFormat }\n\n // Prevent double prefixing\n if (db !== this.db) {\n options.sublevel = null\n }\n\n this._del(db.prefixKey(keyEncoding.encode(key), keyFormat), options)\n this[kOperations].push({ ...original, type: 'del', key })\n\n return this\n }\n\n _del (key, options) {}\n\n clear () {\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Batch is not open: cannot call clear() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n })\n }\n\n this._clear()\n this[kOperations] = []\n\n return this\n }\n\n _clear () {}\n\n write (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options)\n\n if (this[kStatus] !== 'open') {\n this.nextTick(callback, new ModuleError('Batch is not open: cannot call write() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n }))\n } else if (this.length === 0) {\n this.close(callback)\n } else {\n this[kStatus] = 'writing'\n this._write(options, (err) => {\n this[kStatus] = 'closing'\n this[kCloseCallbacks].push(() => callback(err))\n\n // Emit after setting 'closing' status, because event may trigger a\n // db close which in turn triggers (idempotently) closing this batch.\n if (!err) this.db.emit('batch', this[kOperations])\n\n this._close(this[kFinishClose])\n })\n }\n\n return callback[kPromise]\n }\n\n _write (options, callback) {}\n\n close (callback) {\n callback = fromCallback(callback, kPromise)\n\n if (this[kStatus] === 'closing') {\n this[kCloseCallbacks].push(callback)\n } else if (this[kStatus] === 'closed') {\n this.nextTick(callback)\n } else {\n this[kCloseCallbacks].push(callback)\n\n if (this[kStatus] !== 'writing') {\n this[kStatus] = 'closing'\n this._close(this[kFinishClose])\n }\n }\n\n return callback[kPromise]\n }\n\n _close (callback) {\n this.nextTick(callback)\n }\n\n [kFinishClose] () {\n this[kStatus] = 'closed'\n this.db.detachResource(this)\n\n const callbacks = this[kCloseCallbacks]\n this[kCloseCallbacks] = []\n\n for (const cb of callbacks) {\n cb()\n }\n }\n}\n\nexports.AbstractChainedBatch = AbstractChainedBatch\n","'use strict'\n\nconst { AbstractChainedBatch } = require('../abstract-chained-batch')\nconst ModuleError = require('module-error')\nconst kEncoded = Symbol('encoded')\n\n// Functional default for chained batch, with support of deferred open\nclass DefaultChainedBatch extends AbstractChainedBatch {\n constructor (db) {\n super(db)\n this[kEncoded] = []\n }\n\n _put (key, value, options) {\n this[kEncoded].push({ ...options, type: 'put', key, value })\n }\n\n _del (key, options) {\n this[kEncoded].push({ ...options, type: 'del', key })\n }\n\n _clear () {\n this[kEncoded] = []\n }\n\n // Assumes this[kEncoded] cannot change after write()\n _write (options, callback) {\n if (this.db.status === 'opening') {\n this.db.defer(() => this._write(options, callback))\n } else if (this.db.status === 'open') {\n if (this[kEncoded].length === 0) this.nextTick(callback)\n else this.db._batch(this[kEncoded], options, callback)\n } else {\n this.nextTick(callback, new ModuleError('Batch is not open: cannot call write() after write() or close()', {\n code: 'LEVEL_BATCH_NOT_OPEN'\n }))\n }\n }\n}\n\nexports.DefaultChainedBatch = DefaultChainedBatch\n","'use strict'\n\nconst ModuleError = require('module-error')\nconst hasOwnProperty = Object.prototype.hasOwnProperty\nconst rangeOptions = new Set(['lt', 'lte', 'gt', 'gte'])\n\nmodule.exports = function (options, keyEncoding) {\n const result = {}\n\n for (const k in options) {\n if (!hasOwnProperty.call(options, k)) continue\n if (k === 'keyEncoding' || k === 'valueEncoding') continue\n\n if (k === 'start' || k === 'end') {\n throw new ModuleError(`The legacy range option '${k}' has been removed`, {\n code: 'LEVEL_LEGACY'\n })\n } else if (k === 'encoding') {\n // To help migrating to abstract-level\n throw new ModuleError(\"The levelup-style 'encoding' alias has been removed, use 'valueEncoding' instead\", {\n code: 'LEVEL_LEGACY'\n })\n }\n\n if (rangeOptions.has(k)) {\n // Note that we don't reject nullish and empty options here. While\n // those types are invalid as keys, they are valid as range options.\n result[k] = keyEncoding.encode(options[k])\n } else {\n result[k] = options[k]\n }\n }\n\n result.reverse = !!result.reverse\n result.limit = Number.isInteger(result.limit) && result.limit >= 0 ? result.limit : -1\n\n return result\n}\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","'use strict'\n\nconst queueMicrotask = require('queue-microtask')\n\nmodule.exports = function (fn, ...args) {\n if (args.length === 0) {\n queueMicrotask(fn)\n } else {\n queueMicrotask(() => fn(...args))\n }\n}\n","'use strict'\n\nconst { AbstractIterator, AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\n\nconst kUnfix = Symbol('unfix')\nconst kIterator = Symbol('iterator')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\nconst kCallback = Symbol('callback')\n\n// TODO: unfix natively if db supports it\nclass AbstractSublevelIterator extends AbstractIterator {\n constructor (db, options, iterator, unfix) {\n super(db, options)\n\n this[kIterator] = iterator\n this[kUnfix] = unfix\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n this[kCallback] = null\n }\n\n [kHandleOne] (err, key, value) {\n const callback = this[kCallback]\n if (err) return callback(err)\n if (key !== undefined) key = this[kUnfix](key)\n callback(err, key, value)\n }\n\n [kHandleMany] (err, entries) {\n const callback = this[kCallback]\n if (err) return callback(err)\n\n for (const entry of entries) {\n const key = entry[0]\n if (key !== undefined) entry[0] = this[kUnfix](key)\n }\n\n callback(err, entries)\n }\n}\n\nclass AbstractSublevelKeyIterator extends AbstractKeyIterator {\n constructor (db, options, iterator, unfix) {\n super(db, options)\n\n this[kIterator] = iterator\n this[kUnfix] = unfix\n this[kHandleOne] = this[kHandleOne].bind(this)\n this[kHandleMany] = this[kHandleMany].bind(this)\n this[kCallback] = null\n }\n\n [kHandleOne] (err, key) {\n const callback = this[kCallback]\n if (err) return callback(err)\n if (key !== undefined) key = this[kUnfix](key)\n callback(err, key)\n }\n\n [kHandleMany] (err, keys) {\n const callback = this[kCallback]\n if (err) return callback(err)\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (key !== undefined) keys[i] = this[kUnfix](key)\n }\n\n callback(err, keys)\n }\n}\n\nclass AbstractSublevelValueIterator extends AbstractValueIterator {\n constructor (db, options, iterator) {\n super(db, options)\n this[kIterator] = iterator\n }\n}\n\nfor (const Iterator of [AbstractSublevelIterator, AbstractSublevelKeyIterator]) {\n Iterator.prototype._next = function (callback) {\n this[kCallback] = callback\n this[kIterator].next(this[kHandleOne])\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n this[kCallback] = callback\n this[kIterator].nextv(size, options, this[kHandleMany])\n }\n\n Iterator.prototype._all = function (options, callback) {\n this[kCallback] = callback\n this[kIterator].all(options, this[kHandleMany])\n }\n}\n\nfor (const Iterator of [AbstractSublevelValueIterator]) {\n Iterator.prototype._next = function (callback) {\n this[kIterator].next(callback)\n }\n\n Iterator.prototype._nextv = function (size, options, callback) {\n this[kIterator].nextv(size, options, callback)\n }\n\n Iterator.prototype._all = function (options, callback) {\n this[kIterator].all(options, callback)\n }\n}\n\nfor (const Iterator of [AbstractSublevelIterator, AbstractSublevelKeyIterator, AbstractSublevelValueIterator]) {\n Iterator.prototype._seek = function (target, options) {\n this[kIterator].seek(target, options)\n }\n\n Iterator.prototype._close = function (callback) {\n this[kIterator].close(callback)\n }\n}\n\nexports.AbstractSublevelIterator = AbstractSublevelIterator\nexports.AbstractSublevelKeyIterator = AbstractSublevelKeyIterator\nexports.AbstractSublevelValueIterator = AbstractSublevelValueIterator\n","'use strict'\n\nconst ModuleError = require('module-error')\nconst { Buffer } = require('buffer') || {}\nconst {\n AbstractSublevelIterator,\n AbstractSublevelKeyIterator,\n AbstractSublevelValueIterator\n} = require('./abstract-sublevel-iterator')\n\nconst kPrefix = Symbol('prefix')\nconst kUpperBound = Symbol('upperBound')\nconst kPrefixRange = Symbol('prefixRange')\nconst kParent = Symbol('parent')\nconst kUnfix = Symbol('unfix')\n\nconst textEncoder = new TextEncoder()\nconst defaults = { separator: '!' }\n\n// Wrapped to avoid circular dependency\nmodule.exports = function ({ AbstractLevel }) {\n class AbstractSublevel extends AbstractLevel {\n static defaults (options) {\n // To help migrating from subleveldown to abstract-level\n if (typeof options === 'string') {\n throw new ModuleError('The subleveldown string shorthand for { separator } has been removed', {\n code: 'LEVEL_LEGACY'\n })\n } else if (options && options.open) {\n throw new ModuleError('The subleveldown open option has been removed', {\n code: 'LEVEL_LEGACY'\n })\n }\n\n if (options == null) {\n return defaults\n } else if (!options.separator) {\n return { ...options, separator: '!' }\n } else {\n return options\n }\n }\n\n // TODO: add autoClose option, which if true, does parent.attachResource(this)\n constructor (db, name, options) {\n // Don't forward AbstractSublevel options to AbstractLevel\n const { separator, manifest, ...forward } = AbstractSublevel.defaults(options)\n name = trim(name, separator)\n\n // Reserve one character between separator and name to give us an upper bound\n const reserved = separator.charCodeAt(0) + 1\n const parent = db[kParent] || db\n\n // Keys should sort like ['!a!', '!a!!a!', '!a\"', '!aa!', '!b!'].\n // Use ASCII for consistent length between string, Buffer and Uint8Array\n if (!textEncoder.encode(name).every(x => x > reserved && x < 127)) {\n throw new ModuleError(`Prefix must use bytes > ${reserved} < ${127}`, {\n code: 'LEVEL_INVALID_PREFIX'\n })\n }\n\n super(mergeManifests(parent, manifest), forward)\n\n const prefix = (db.prefix || '') + separator + name + separator\n const upperBound = prefix.slice(0, -1) + String.fromCharCode(reserved)\n\n this[kParent] = parent\n this[kPrefix] = new MultiFormat(prefix)\n this[kUpperBound] = new MultiFormat(upperBound)\n this[kUnfix] = new Unfixer()\n\n this.nextTick = parent.nextTick\n }\n\n prefixKey (key, keyFormat) {\n if (keyFormat === 'utf8') {\n return this[kPrefix].utf8 + key\n } else if (key.byteLength === 0) {\n // Fast path for empty key (no copy)\n return this[kPrefix][keyFormat]\n } else if (keyFormat === 'view') {\n const view = this[kPrefix].view\n const result = new Uint8Array(view.byteLength + key.byteLength)\n\n result.set(view, 0)\n result.set(key, view.byteLength)\n\n return result\n } else {\n const buffer = this[kPrefix].buffer\n return Buffer.concat([buffer, key], buffer.byteLength + key.byteLength)\n }\n }\n\n // Not exposed for now.\n [kPrefixRange] (range, keyFormat) {\n if (range.gte !== undefined) {\n range.gte = this.prefixKey(range.gte, keyFormat)\n } else if (range.gt !== undefined) {\n range.gt = this.prefixKey(range.gt, keyFormat)\n } else {\n range.gte = this[kPrefix][keyFormat]\n }\n\n if (range.lte !== undefined) {\n range.lte = this.prefixKey(range.lte, keyFormat)\n } else if (range.lt !== undefined) {\n range.lt = this.prefixKey(range.lt, keyFormat)\n } else {\n range.lte = this[kUpperBound][keyFormat]\n }\n }\n\n get prefix () {\n return this[kPrefix].utf8\n }\n\n get db () {\n return this[kParent]\n }\n\n _open (options, callback) {\n // The parent db must open itself or be (re)opened by the user because\n // a sublevel should not initiate state changes on the rest of the db.\n this[kParent].open({ passive: true }, callback)\n }\n\n _put (key, value, options, callback) {\n this[kParent].put(key, value, options, callback)\n }\n\n _get (key, options, callback) {\n this[kParent].get(key, options, callback)\n }\n\n _getMany (keys, options, callback) {\n this[kParent].getMany(keys, options, callback)\n }\n\n _del (key, options, callback) {\n this[kParent].del(key, options, callback)\n }\n\n _batch (operations, options, callback) {\n this[kParent].batch(operations, options, callback)\n }\n\n _clear (options, callback) {\n // TODO (refactor): move to AbstractLevel\n this[kPrefixRange](options, options.keyEncoding)\n this[kParent].clear(options, callback)\n }\n\n _iterator (options) {\n // TODO (refactor): move to AbstractLevel\n this[kPrefixRange](options, options.keyEncoding)\n const iterator = this[kParent].iterator(options)\n const unfix = this[kUnfix].get(this[kPrefix].utf8.length, options.keyEncoding)\n return new AbstractSublevelIterator(this, options, iterator, unfix)\n }\n\n _keys (options) {\n this[kPrefixRange](options, options.keyEncoding)\n const iterator = this[kParent].keys(options)\n const unfix = this[kUnfix].get(this[kPrefix].utf8.length, options.keyEncoding)\n return new AbstractSublevelKeyIterator(this, options, iterator, unfix)\n }\n\n _values (options) {\n this[kPrefixRange](options, options.keyEncoding)\n const iterator = this[kParent].values(options)\n return new AbstractSublevelValueIterator(this, options, iterator)\n }\n }\n\n return { AbstractSublevel }\n}\n\nconst mergeManifests = function (parent, manifest) {\n return {\n // Inherit manifest of parent db\n ...parent.supports,\n\n // Disable unsupported features\n createIfMissing: false,\n errorIfExists: false,\n\n // Unset additional events because we're not forwarding them\n events: {},\n\n // Unset additional methods (like approximateSize) which we can't support here unless\n // the AbstractSublevel class is overridden by an implementation of `abstract-level`.\n additionalMethods: {},\n\n // Inherit manifest of custom AbstractSublevel subclass. Such a class is not\n // allowed to override encodings.\n ...manifest,\n\n encodings: {\n utf8: supportsEncoding(parent, 'utf8'),\n buffer: supportsEncoding(parent, 'buffer'),\n view: supportsEncoding(parent, 'view')\n }\n }\n}\n\nconst supportsEncoding = function (parent, encoding) {\n // Prefer a non-transcoded encoding for optimal performance\n return parent.supports.encodings[encoding]\n ? parent.keyEncoding(encoding).name === encoding\n : false\n}\n\nclass MultiFormat {\n constructor (key) {\n this.utf8 = key\n this.view = textEncoder.encode(key)\n this.buffer = Buffer ? Buffer.from(this.view.buffer, 0, this.view.byteLength) : {}\n }\n}\n\nclass Unfixer {\n constructor () {\n this.cache = new Map()\n }\n\n get (prefixLength, keyFormat) {\n let unfix = this.cache.get(keyFormat)\n\n if (unfix === undefined) {\n if (keyFormat === 'view') {\n unfix = function (prefixLength, key) {\n // Avoid Uint8Array#slice() because it copies\n return key.subarray(prefixLength)\n }.bind(null, prefixLength)\n } else {\n unfix = function (prefixLength, key) {\n // Avoid Buffer#subarray() because it's slow\n return key.slice(prefixLength)\n }.bind(null, prefixLength)\n }\n\n this.cache.set(keyFormat, unfix)\n }\n\n return unfix\n }\n}\n\nconst trim = function (str, char) {\n let start = 0\n let end = str.length\n\n while (start < end && str[start] === char) start++\n while (end > start && str[end - 1] === char) end--\n\n return str.slice(start, end)\n}\n","'use strict'\n\nconst { supports } = require('level-supports')\nconst { Transcoder } = require('level-transcoder')\nconst { EventEmitter } = require('events')\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { AbstractIterator } = require('./abstract-iterator')\nconst { DefaultKeyIterator, DefaultValueIterator } = require('./lib/default-kv-iterator')\nconst { DeferredIterator, DeferredKeyIterator, DeferredValueIterator } = require('./lib/deferred-iterator')\nconst { DefaultChainedBatch } = require('./lib/default-chained-batch')\nconst { getCallback, getOptions } = require('./lib/common')\nconst rangeOptions = require('./lib/range-options')\n\nconst kPromise = Symbol('promise')\nconst kLanded = Symbol('landed')\nconst kResources = Symbol('resources')\nconst kCloseResources = Symbol('closeResources')\nconst kOperations = Symbol('operations')\nconst kUndefer = Symbol('undefer')\nconst kDeferOpen = Symbol('deferOpen')\nconst kOptions = Symbol('options')\nconst kStatus = Symbol('status')\nconst kDefaultOptions = Symbol('defaultOptions')\nconst kTranscoder = Symbol('transcoder')\nconst kKeyEncoding = Symbol('keyEncoding')\nconst kValueEncoding = Symbol('valueEncoding')\nconst noop = () => {}\n\nclass AbstractLevel extends EventEmitter {\n constructor (manifest, options) {\n super()\n\n if (typeof manifest !== 'object' || manifest === null) {\n throw new TypeError(\"The first argument 'manifest' must be an object\")\n }\n\n options = getOptions(options)\n const { keyEncoding, valueEncoding, passive, ...forward } = options\n\n this[kResources] = new Set()\n this[kOperations] = []\n this[kDeferOpen] = true\n this[kOptions] = forward\n this[kStatus] = 'opening'\n\n this.supports = supports(manifest, {\n status: true,\n promises: true,\n clear: true,\n getMany: true,\n deferredOpen: true,\n\n // TODO (next major): add seek\n snapshots: manifest.snapshots !== false,\n permanence: manifest.permanence !== false,\n\n // TODO: remove from level-supports because it's always supported\n keyIterator: true,\n valueIterator: true,\n iteratorNextv: true,\n iteratorAll: true,\n\n encodings: manifest.encodings || {},\n events: Object.assign({}, manifest.events, {\n opening: true,\n open: true,\n closing: true,\n closed: true,\n put: true,\n del: true,\n batch: true,\n clear: true\n })\n })\n\n this[kTranscoder] = new Transcoder(formats(this))\n this[kKeyEncoding] = this[kTranscoder].encoding(keyEncoding || 'utf8')\n this[kValueEncoding] = this[kTranscoder].encoding(valueEncoding || 'utf8')\n\n // Add custom and transcoder encodings to manifest\n for (const encoding of this[kTranscoder].encodings()) {\n if (!this.supports.encodings[encoding.commonName]) {\n this.supports.encodings[encoding.commonName] = true\n }\n }\n\n this[kDefaultOptions] = {\n empty: Object.freeze({}),\n entry: Object.freeze({\n keyEncoding: this[kKeyEncoding].commonName,\n valueEncoding: this[kValueEncoding].commonName\n }),\n key: Object.freeze({\n keyEncoding: this[kKeyEncoding].commonName\n })\n }\n\n // Let subclass finish its constructor\n this.nextTick(() => {\n if (this[kDeferOpen]) {\n this.open({ passive: false }, noop)\n }\n })\n }\n\n get status () {\n return this[kStatus]\n }\n\n keyEncoding (encoding) {\n return this[kTranscoder].encoding(encoding != null ? encoding : this[kKeyEncoding])\n }\n\n valueEncoding (encoding) {\n return this[kTranscoder].encoding(encoding != null ? encoding : this[kValueEncoding])\n }\n\n open (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n\n options = { ...this[kOptions], ...getOptions(options) }\n\n options.createIfMissing = options.createIfMissing !== false\n options.errorIfExists = !!options.errorIfExists\n\n const maybeOpened = (err) => {\n if (this[kStatus] === 'closing' || this[kStatus] === 'opening') {\n // Wait until pending state changes are done\n this.once(kLanded, err ? () => maybeOpened(err) : maybeOpened)\n } else if (this[kStatus] !== 'open') {\n callback(new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN',\n cause: err\n }))\n } else {\n callback()\n }\n }\n\n if (options.passive) {\n if (this[kStatus] === 'opening') {\n this.once(kLanded, maybeOpened)\n } else {\n this.nextTick(maybeOpened)\n }\n } else if (this[kStatus] === 'closed' || this[kDeferOpen]) {\n this[kDeferOpen] = false\n this[kStatus] = 'opening'\n this.emit('opening')\n\n this._open(options, (err) => {\n if (err) {\n this[kStatus] = 'closed'\n\n // Resources must be safe to close in any db state\n this[kCloseResources](() => {\n this.emit(kLanded)\n maybeOpened(err)\n })\n\n this[kUndefer]()\n return\n }\n\n this[kStatus] = 'open'\n this[kUndefer]()\n this.emit(kLanded)\n\n // Only emit public event if pending state changes are done\n if (this[kStatus] === 'open') this.emit('open')\n\n // TODO (next major): remove this alias\n if (this[kStatus] === 'open') this.emit('ready')\n\n maybeOpened()\n })\n } else if (this[kStatus] === 'open') {\n this.nextTick(maybeOpened)\n } else {\n this.once(kLanded, () => this.open(options, callback))\n }\n\n return callback[kPromise]\n }\n\n _open (options, callback) {\n this.nextTick(callback)\n }\n\n close (callback) {\n callback = fromCallback(callback, kPromise)\n\n const maybeClosed = (err) => {\n if (this[kStatus] === 'opening' || this[kStatus] === 'closing') {\n // Wait until pending state changes are done\n this.once(kLanded, err ? maybeClosed(err) : maybeClosed)\n } else if (this[kStatus] !== 'closed') {\n callback(new ModuleError('Database is not closed', {\n code: 'LEVEL_DATABASE_NOT_CLOSED',\n cause: err\n }))\n } else {\n callback()\n }\n }\n\n if (this[kStatus] === 'open') {\n this[kStatus] = 'closing'\n this.emit('closing')\n\n const cancel = (err) => {\n this[kStatus] = 'open'\n this[kUndefer]()\n this.emit(kLanded)\n maybeClosed(err)\n }\n\n this[kCloseResources](() => {\n this._close((err) => {\n if (err) return cancel(err)\n\n this[kStatus] = 'closed'\n this[kUndefer]()\n this.emit(kLanded)\n\n // Only emit public event if pending state changes are done\n if (this[kStatus] === 'closed') this.emit('closed')\n\n maybeClosed()\n })\n })\n } else if (this[kStatus] === 'closed') {\n this.nextTick(maybeClosed)\n } else {\n this.once(kLanded, () => this.close(callback))\n }\n\n return callback[kPromise]\n }\n\n [kCloseResources] (callback) {\n if (this[kResources].size === 0) {\n return this.nextTick(callback)\n }\n\n let pending = this[kResources].size\n let sync = true\n\n const next = () => {\n if (--pending === 0) {\n // We don't have tests for generic resources, so dezalgo\n if (sync) this.nextTick(callback)\n else callback()\n }\n }\n\n // In parallel so that all resources know they are closed\n for (const resource of this[kResources]) {\n resource.close(next)\n }\n\n sync = false\n this[kResources].clear()\n }\n\n _close (callback) {\n this.nextTick(callback)\n }\n\n get (key, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].entry)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.get(key, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const err = this._checkKey(key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const valueEncoding = this.valueEncoding(options.valueEncoding)\n const keyFormat = keyEncoding.format\n const valueFormat = valueEncoding.format\n\n // Forward encoding options to the underlying store\n if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n // Avoid spread operator because of https://bugs.chromium.org/p/chromium/issues/detail?id=1204540\n options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n }\n\n this._get(this.prefixKey(keyEncoding.encode(key), keyFormat), options, (err, value) => {\n if (err) {\n // Normalize not found error for backwards compatibility with abstract-leveldown and level(up)\n if (err.code === 'LEVEL_NOT_FOUND' || err.notFound || /NotFound/i.test(err)) {\n if (!err.code) err.code = 'LEVEL_NOT_FOUND' // Preferred way going forward\n if (!err.notFound) err.notFound = true // Same as level-errors\n if (!err.status) err.status = 404 // Same as level-errors\n }\n\n return callback(err)\n }\n\n try {\n value = valueEncoding.decode(value)\n } catch (err) {\n return callback(new ModuleError('Could not decode value', {\n code: 'LEVEL_DECODE_ERROR',\n cause: err\n }))\n }\n\n callback(null, value)\n })\n\n return callback[kPromise]\n }\n\n _get (key, options, callback) {\n this.nextTick(callback, new Error('NotFound'))\n }\n\n getMany (keys, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].entry)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.getMany(keys, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n if (!Array.isArray(keys)) {\n this.nextTick(callback, new TypeError(\"The first argument 'keys' must be an array\"))\n return callback[kPromise]\n }\n\n if (keys.length === 0) {\n this.nextTick(callback, null, [])\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const valueEncoding = this.valueEncoding(options.valueEncoding)\n const keyFormat = keyEncoding.format\n const valueFormat = valueEncoding.format\n\n // Forward encoding options\n if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n }\n\n const mappedKeys = new Array(keys.length)\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n const err = this._checkKey(key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n mappedKeys[i] = this.prefixKey(keyEncoding.encode(key), keyFormat)\n }\n\n this._getMany(mappedKeys, options, (err, values) => {\n if (err) return callback(err)\n\n try {\n for (let i = 0; i < values.length; i++) {\n if (values[i] !== undefined) {\n values[i] = valueEncoding.decode(values[i])\n }\n }\n } catch (err) {\n return callback(new ModuleError(`Could not decode one or more of ${values.length} value(s)`, {\n code: 'LEVEL_DECODE_ERROR',\n cause: err\n }))\n }\n\n callback(null, values)\n })\n\n return callback[kPromise]\n }\n\n _getMany (keys, options, callback) {\n this.nextTick(callback, null, new Array(keys.length).fill(undefined))\n }\n\n put (key, value, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].entry)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.put(key, value, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const err = this._checkKey(key) || this._checkValue(value)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const valueEncoding = this.valueEncoding(options.valueEncoding)\n const keyFormat = keyEncoding.format\n const valueFormat = valueEncoding.format\n\n // Forward encoding options\n if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n }\n\n const mappedKey = this.prefixKey(keyEncoding.encode(key), keyFormat)\n const mappedValue = valueEncoding.encode(value)\n\n this._put(mappedKey, mappedValue, options, (err) => {\n if (err) return callback(err)\n this.emit('put', key, value)\n callback()\n })\n\n return callback[kPromise]\n }\n\n _put (key, value, options, callback) {\n this.nextTick(callback)\n }\n\n del (key, options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].key)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.del(key, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const err = this._checkKey(key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n const keyFormat = keyEncoding.format\n\n // Forward encoding options\n if (options.keyEncoding !== keyFormat) {\n options = Object.assign({}, options, { keyEncoding: keyFormat })\n }\n\n this._del(this.prefixKey(keyEncoding.encode(key), keyFormat), options, (err) => {\n if (err) return callback(err)\n this.emit('del', key)\n callback()\n })\n\n return callback[kPromise]\n }\n\n _del (key, options, callback) {\n this.nextTick(callback)\n }\n\n batch (operations, options, callback) {\n if (!arguments.length) {\n if (this[kStatus] === 'opening') return new DefaultChainedBatch(this)\n if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n return this._chainedBatch()\n }\n\n if (typeof operations === 'function') callback = operations\n else callback = getCallback(options, callback)\n\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].empty)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.batch(operations, options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n if (!Array.isArray(operations)) {\n this.nextTick(callback, new TypeError(\"The first argument 'operations' must be an array\"))\n return callback[kPromise]\n }\n\n if (operations.length === 0) {\n this.nextTick(callback)\n return callback[kPromise]\n }\n\n const mapped = new Array(operations.length)\n const { keyEncoding: ke, valueEncoding: ve, ...forward } = options\n\n for (let i = 0; i < operations.length; i++) {\n if (typeof operations[i] !== 'object' || operations[i] === null) {\n this.nextTick(callback, new TypeError('A batch operation must be an object'))\n return callback[kPromise]\n }\n\n const op = Object.assign({}, operations[i])\n\n if (op.type !== 'put' && op.type !== 'del') {\n this.nextTick(callback, new TypeError(\"A batch operation must have a type property that is 'put' or 'del'\"))\n return callback[kPromise]\n }\n\n const err = this._checkKey(op.key)\n\n if (err) {\n this.nextTick(callback, err)\n return callback[kPromise]\n }\n\n const db = op.sublevel != null ? op.sublevel : this\n const keyEncoding = db.keyEncoding(op.keyEncoding || ke)\n const keyFormat = keyEncoding.format\n\n op.key = db.prefixKey(keyEncoding.encode(op.key), keyFormat)\n op.keyEncoding = keyFormat\n\n if (op.type === 'put') {\n const valueErr = this._checkValue(op.value)\n\n if (valueErr) {\n this.nextTick(callback, valueErr)\n return callback[kPromise]\n }\n\n const valueEncoding = db.valueEncoding(op.valueEncoding || ve)\n\n op.value = valueEncoding.encode(op.value)\n op.valueEncoding = valueEncoding.format\n }\n\n // Prevent double prefixing\n if (db !== this) {\n op.sublevel = null\n }\n\n mapped[i] = op\n }\n\n this._batch(mapped, forward, (err) => {\n if (err) return callback(err)\n this.emit('batch', operations)\n callback()\n })\n\n return callback[kPromise]\n }\n\n _batch (operations, options, callback) {\n this.nextTick(callback)\n }\n\n sublevel (name, options) {\n return this._sublevel(name, AbstractSublevel.defaults(options))\n }\n\n _sublevel (name, options) {\n return new AbstractSublevel(this, name, options)\n }\n\n prefixKey (key, keyFormat) {\n return key\n }\n\n clear (options, callback) {\n callback = getCallback(options, callback)\n callback = fromCallback(callback, kPromise)\n options = getOptions(options, this[kDefaultOptions].empty)\n\n if (this[kStatus] === 'opening') {\n this.defer(() => this.clear(options, callback))\n return callback[kPromise]\n }\n\n if (maybeError(this, callback)) {\n return callback[kPromise]\n }\n\n const original = options\n const keyEncoding = this.keyEncoding(options.keyEncoding)\n\n options = rangeOptions(options, keyEncoding)\n options.keyEncoding = keyEncoding.format\n\n if (options.limit === 0) {\n this.nextTick(callback)\n } else {\n this._clear(options, (err) => {\n if (err) return callback(err)\n this.emit('clear', original)\n callback()\n })\n }\n\n return callback[kPromise]\n }\n\n _clear (options, callback) {\n this.nextTick(callback)\n }\n\n iterator (options) {\n const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n options = rangeOptions(options, keyEncoding)\n options.keys = options.keys !== false\n options.values = options.values !== false\n\n // We need the original encoding options in AbstractIterator in order to decode data\n options[AbstractIterator.keyEncoding] = keyEncoding\n options[AbstractIterator.valueEncoding] = valueEncoding\n\n // Forward encoding options to private API\n options.keyEncoding = keyEncoding.format\n options.valueEncoding = valueEncoding.format\n\n if (this[kStatus] === 'opening') {\n return new DeferredIterator(this, options)\n } else if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n\n return this._iterator(options)\n }\n\n _iterator (options) {\n return new AbstractIterator(this, options)\n }\n\n keys (options) {\n // Also include valueEncoding (though unused) because we may fallback to _iterator()\n const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n options = rangeOptions(options, keyEncoding)\n\n // We need the original encoding options in AbstractKeyIterator in order to decode data\n options[AbstractIterator.keyEncoding] = keyEncoding\n options[AbstractIterator.valueEncoding] = valueEncoding\n\n // Forward encoding options to private API\n options.keyEncoding = keyEncoding.format\n options.valueEncoding = valueEncoding.format\n\n if (this[kStatus] === 'opening') {\n return new DeferredKeyIterator(this, options)\n } else if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n\n return this._keys(options)\n }\n\n _keys (options) {\n return new DefaultKeyIterator(this, options)\n }\n\n values (options) {\n const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n options = rangeOptions(options, keyEncoding)\n\n // We need the original encoding options in AbstractValueIterator in order to decode data\n options[AbstractIterator.keyEncoding] = keyEncoding\n options[AbstractIterator.valueEncoding] = valueEncoding\n\n // Forward encoding options to private API\n options.keyEncoding = keyEncoding.format\n options.valueEncoding = valueEncoding.format\n\n if (this[kStatus] === 'opening') {\n return new DeferredValueIterator(this, options)\n } else if (this[kStatus] !== 'open') {\n throw new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n })\n }\n\n return this._values(options)\n }\n\n _values (options) {\n return new DefaultValueIterator(this, options)\n }\n\n defer (fn) {\n if (typeof fn !== 'function') {\n throw new TypeError('The first argument must be a function')\n }\n\n this[kOperations].push(fn)\n }\n\n [kUndefer] () {\n if (this[kOperations].length === 0) {\n return\n }\n\n const operations = this[kOperations]\n this[kOperations] = []\n\n for (const op of operations) {\n op()\n }\n }\n\n // TODO: docs and types\n attachResource (resource) {\n if (typeof resource !== 'object' || resource === null ||\n typeof resource.close !== 'function') {\n throw new TypeError('The first argument must be a resource object')\n }\n\n this[kResources].add(resource)\n }\n\n // TODO: docs and types\n detachResource (resource) {\n this[kResources].delete(resource)\n }\n\n _chainedBatch () {\n return new DefaultChainedBatch(this)\n }\n\n _checkKey (key) {\n if (key === null || key === undefined) {\n return new ModuleError('Key cannot be null or undefined', {\n code: 'LEVEL_INVALID_KEY'\n })\n }\n }\n\n _checkValue (value) {\n if (value === null || value === undefined) {\n return new ModuleError('Value cannot be null or undefined', {\n code: 'LEVEL_INVALID_VALUE'\n })\n }\n }\n}\n\n// Expose browser-compatible nextTick for dependents\n// TODO: after we drop node 10, also use queueMicrotask in node\nAbstractLevel.prototype.nextTick = require('./lib/next-tick')\n\nconst { AbstractSublevel } = require('./lib/abstract-sublevel')({ AbstractLevel })\n\nexports.AbstractLevel = AbstractLevel\nexports.AbstractSublevel = AbstractSublevel\n\nconst maybeError = function (db, callback) {\n if (db[kStatus] !== 'open') {\n db.nextTick(callback, new ModuleError('Database is not open', {\n code: 'LEVEL_DATABASE_NOT_OPEN'\n }))\n return true\n }\n\n return false\n}\n\nconst formats = function (db) {\n return Object.keys(db.supports.encodings)\n .filter(k => !!db.supports.encodings[k])\n}\n","'use strict'\n\nexports.AbstractLevel = require('./abstract-level').AbstractLevel\nexports.AbstractSublevel = require('./abstract-level').AbstractSublevel\nexports.AbstractIterator = require('./abstract-iterator').AbstractIterator\nexports.AbstractKeyIterator = require('./abstract-iterator').AbstractKeyIterator\nexports.AbstractValueIterator = require('./abstract-iterator').AbstractValueIterator\nexports.AbstractChainedBatch = require('./abstract-chained-batch').AbstractChainedBatch\n","/*! run-parallel-limit. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallelLimit\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallelLimit (tasks, limit, cb) {\n if (typeof limit !== 'number') throw new Error('second argument must be a Number')\n let results, len, pending, keys, isErrored\n let isSync = true\n let next\n\n if (Array.isArray(tasks)) {\n results = []\n pending = len = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = len = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (err) isErrored = true\n if (--pending === 0 || err) {\n done(err)\n } else if (!isErrored && next < len) {\n let key\n if (keys) {\n key = keys[next]\n next += 1\n tasks[key](function (err, result) { each(key, err, result) })\n } else {\n key = next\n next += 1\n tasks[key](function (err, result) { each(key, err, result) })\n }\n }\n }\n\n next = limit\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.some(function (key, i) {\n tasks[key](function (err, result) { each(key, err, result) })\n if (i === limit - 1) return true // early return\n return false\n })\n } else {\n // array\n tasks.some(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n if (i === limit - 1) return true // early return\n return false\n })\n }\n\n isSync = false\n}\n","/* global IDBKeyRange */\n\n'use strict'\n\nmodule.exports = function createKeyRange (options) {\n const lower = options.gte !== undefined ? options.gte : options.gt !== undefined ? options.gt : undefined\n const upper = options.lte !== undefined ? options.lte : options.lt !== undefined ? options.lt : undefined\n const lowerExclusive = options.gte === undefined\n const upperExclusive = options.lte === undefined\n\n if (lower !== undefined && upper !== undefined) {\n return IDBKeyRange.bound(lower, upper, lowerExclusive, upperExclusive)\n } else if (lower !== undefined) {\n return IDBKeyRange.lowerBound(lower, lowerExclusive)\n } else if (upper !== undefined) {\n return IDBKeyRange.upperBound(upper, upperExclusive)\n } else {\n return null\n }\n}\n","'use strict'\n\nconst textEncoder = new TextEncoder()\n\nmodule.exports = function (data) {\n if (data instanceof Uint8Array) {\n return data\n } else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data)\n } else {\n // Non-binary data stored with an old version (level-js < 5.0.0)\n return textEncoder.encode(data)\n }\n}\n","'use strict'\n\nconst { AbstractIterator } = require('abstract-level')\nconst createKeyRange = require('./util/key-range')\nconst deserialize = require('./util/deserialize')\n\nconst kCache = Symbol('cache')\nconst kFinished = Symbol('finished')\nconst kOptions = Symbol('options')\nconst kCurrentOptions = Symbol('currentOptions')\nconst kPosition = Symbol('position')\nconst kLocation = Symbol('location')\nconst kFirst = Symbol('first')\nconst emptyOptions = {}\n\nclass Iterator extends AbstractIterator {\n constructor (db, location, options) {\n super(db, options)\n\n this[kCache] = []\n this[kFinished] = this.limit === 0\n this[kOptions] = options\n this[kCurrentOptions] = { ...options }\n this[kPosition] = undefined\n this[kLocation] = location\n this[kFirst] = true\n }\n\n // Note: if called by _all() then size can be Infinity. This is an internal\n // detail; by design AbstractIterator.nextv() does not support Infinity.\n _nextv (size, options, callback) {\n this[kFirst] = false\n\n if (this[kFinished]) {\n return this.nextTick(callback, null, [])\n } else if (this[kCache].length > 0) {\n // TODO: mixing next and nextv is not covered by test suite\n size = Math.min(size, this[kCache].length)\n return this.nextTick(callback, null, this[kCache].splice(0, size))\n }\n\n // Adjust range by what we already visited\n if (this[kPosition] !== undefined) {\n if (this[kOptions].reverse) {\n this[kCurrentOptions].lt = this[kPosition]\n this[kCurrentOptions].lte = undefined\n } else {\n this[kCurrentOptions].gt = this[kPosition]\n this[kCurrentOptions].gte = undefined\n }\n }\n\n let keyRange\n\n try {\n keyRange = createKeyRange(this[kCurrentOptions])\n } catch (_) {\n // The lower key is greater than the upper key.\n // IndexedDB throws an error, but we'll just return 0 results.\n this[kFinished] = true\n return this.nextTick(callback, null, [])\n }\n\n const transaction = this.db.db.transaction([this[kLocation]], 'readonly')\n const store = transaction.objectStore(this[kLocation])\n const entries = []\n\n if (!this[kOptions].reverse) {\n let keys\n let values\n\n const complete = () => {\n // Wait for both requests to complete\n if (keys === undefined || values === undefined) return\n\n const length = Math.max(keys.length, values.length)\n\n if (length === 0 || size === Infinity) {\n this[kFinished] = true\n } else {\n this[kPosition] = keys[length - 1]\n }\n\n // Resize\n entries.length = length\n\n // Merge keys and values\n for (let i = 0; i < length; i++) {\n const key = keys[i]\n const value = values[i]\n\n entries[i] = [\n this[kOptions].keys && key !== undefined ? deserialize(key) : undefined,\n this[kOptions].values && value !== undefined ? deserialize(value) : undefined\n ]\n }\n\n maybeCommit(transaction)\n }\n\n // If keys were not requested and size is Infinity, we don't have to keep\n // track of position and can thus skip getting keys.\n if (this[kOptions].keys || size < Infinity) {\n store.getAllKeys(keyRange, size < Infinity ? size : undefined).onsuccess = (ev) => {\n keys = ev.target.result\n complete()\n }\n } else {\n keys = []\n this.nextTick(complete)\n }\n\n if (this[kOptions].values) {\n store.getAll(keyRange, size < Infinity ? size : undefined).onsuccess = (ev) => {\n values = ev.target.result\n complete()\n }\n } else {\n values = []\n this.nextTick(complete)\n }\n } else {\n // Can't use getAll() in reverse, so use a slower cursor that yields one item at a time\n // TODO: test if all target browsers support openKeyCursor\n const method = !this[kOptions].values && store.openKeyCursor ? 'openKeyCursor' : 'openCursor'\n\n store[method](keyRange, 'prev').onsuccess = (ev) => {\n const cursor = ev.target.result\n\n if (cursor) {\n const { key, value } = cursor\n this[kPosition] = key\n\n entries.push([\n this[kOptions].keys && key !== undefined ? deserialize(key) : undefined,\n this[kOptions].values && value !== undefined ? deserialize(value) : undefined\n ])\n\n if (entries.length < size) {\n cursor.continue()\n } else {\n maybeCommit(transaction)\n }\n } else {\n this[kFinished] = true\n }\n }\n }\n\n // If an error occurs (on the request), the transaction will abort.\n transaction.onabort = () => {\n callback(transaction.error || new Error('aborted by user'))\n callback = null\n }\n\n transaction.oncomplete = () => {\n callback(null, entries)\n callback = null\n }\n }\n\n _next (callback) {\n if (this[kCache].length > 0) {\n const [key, value] = this[kCache].shift()\n this.nextTick(callback, null, key, value)\n } else if (this[kFinished]) {\n this.nextTick(callback)\n } else {\n let size = Math.min(100, this.limit - this.count)\n\n if (this[kFirst]) {\n // It's common to only want one entry initially or after a seek()\n this[kFirst] = false\n size = 1\n }\n\n this._nextv(size, emptyOptions, (err, entries) => {\n if (err) return callback(err)\n this[kCache] = entries\n this._next(callback)\n })\n }\n }\n\n _all (options, callback) {\n this[kFirst] = false\n\n // TODO: mixing next and all is not covered by test suite\n const cache = this[kCache].splice(0, this[kCache].length)\n const size = this.limit - this.count - cache.length\n\n if (size <= 0) {\n return this.nextTick(callback, null, cache)\n }\n\n this._nextv(size, emptyOptions, (err, entries) => {\n if (err) return callback(err)\n if (cache.length > 0) entries = cache.concat(entries)\n callback(null, entries)\n })\n }\n\n _seek (target, options) {\n this[kFirst] = true\n this[kCache] = []\n this[kFinished] = false\n this[kPosition] = undefined\n\n // TODO: not covered by test suite\n this[kCurrentOptions] = { ...this[kOptions] }\n\n let keyRange\n\n try {\n keyRange = createKeyRange(this[kOptions])\n } catch (_) {\n this[kFinished] = true\n return\n }\n\n if (keyRange !== null && !keyRange.includes(target)) {\n this[kFinished] = true\n } else if (this[kOptions].reverse) {\n this[kCurrentOptions].lte = target\n } else {\n this[kCurrentOptions].gte = target\n }\n }\n}\n\nexports.Iterator = Iterator\n\nfunction maybeCommit (transaction) {\n // Commit (meaning close) now instead of waiting for auto-commit\n if (typeof transaction.commit === 'function') {\n transaction.commit()\n }\n}\n","'use strict'\n\nmodule.exports = function clear (db, location, keyRange, options, callback) {\n if (options.limit === 0) return db.nextTick(callback)\n\n const transaction = db.db.transaction([location], 'readwrite')\n const store = transaction.objectStore(location)\n let count = 0\n\n transaction.oncomplete = function () {\n callback()\n }\n\n transaction.onabort = function () {\n callback(transaction.error || new Error('aborted by user'))\n }\n\n // A key cursor is faster (skips reading values) but not supported by IE\n // TODO: we no longer support IE. Test others\n const method = store.openKeyCursor ? 'openKeyCursor' : 'openCursor'\n const direction = options.reverse ? 'prev' : 'next'\n\n store[method](keyRange, direction).onsuccess = function (ev) {\n const cursor = ev.target.result\n\n if (cursor) {\n // Wait for a request to complete before continuing, saving CPU.\n store.delete(cursor.key).onsuccess = function () {\n if (options.limit <= 0 || ++count < options.limit) {\n cursor.continue()\n }\n }\n }\n }\n}\n","/* global indexedDB */\n\n'use strict'\n\nconst { AbstractLevel } = require('abstract-level')\nconst ModuleError = require('module-error')\nconst parallel = require('run-parallel-limit')\nconst { fromCallback } = require('catering')\nconst { Iterator } = require('./iterator')\nconst deserialize = require('./util/deserialize')\nconst clear = require('./util/clear')\nconst createKeyRange = require('./util/key-range')\n\n// Keep as-is for compatibility with existing level-js databases\nconst DEFAULT_PREFIX = 'level-js-'\n\nconst kIDB = Symbol('idb')\nconst kNamePrefix = Symbol('namePrefix')\nconst kLocation = Symbol('location')\nconst kVersion = Symbol('version')\nconst kStore = Symbol('store')\nconst kOnComplete = Symbol('onComplete')\nconst kPromise = Symbol('promise')\n\nclass BrowserLevel extends AbstractLevel {\n constructor (location, options, _) {\n // To help migrating to abstract-level\n if (typeof options === 'function' || typeof _ === 'function') {\n throw new ModuleError('The levelup-style callback argument has been removed', {\n code: 'LEVEL_LEGACY'\n })\n }\n\n const { prefix, version, ...forward } = options || {}\n\n super({\n encodings: { view: true },\n snapshots: false,\n createIfMissing: false,\n errorIfExists: false,\n seek: true\n }, forward)\n\n if (typeof location !== 'string') {\n throw new Error('constructor requires a location string argument')\n }\n\n // TODO (next major): remove default prefix\n this[kLocation] = location\n this[kNamePrefix] = prefix == null ? DEFAULT_PREFIX : prefix\n this[kVersion] = parseInt(version || 1, 10)\n this[kIDB] = null\n }\n\n get location () {\n return this[kLocation]\n }\n\n get namePrefix () {\n return this[kNamePrefix]\n }\n\n get version () {\n return this[kVersion]\n }\n\n // Exposed for backwards compat and unit tests\n get db () {\n return this[kIDB]\n }\n\n get type () {\n return 'browser-level'\n }\n\n _open (options, callback) {\n const req = indexedDB.open(this[kNamePrefix] + this[kLocation], this[kVersion])\n\n req.onerror = function () {\n callback(req.error || new Error('unknown error'))\n }\n\n req.onsuccess = () => {\n this[kIDB] = req.result\n callback()\n }\n\n req.onupgradeneeded = (ev) => {\n const db = ev.target.result\n\n if (!db.objectStoreNames.contains(this[kLocation])) {\n db.createObjectStore(this[kLocation])\n }\n }\n }\n\n [kStore] (mode) {\n const transaction = this[kIDB].transaction([this[kLocation]], mode)\n return transaction.objectStore(this[kLocation])\n }\n\n [kOnComplete] (request, callback) {\n const transaction = request.transaction\n\n // Take advantage of the fact that a non-canceled request error aborts\n // the transaction. I.e. no need to listen for \"request.onerror\".\n transaction.onabort = function () {\n callback(transaction.error || new Error('aborted by user'))\n }\n\n transaction.oncomplete = function () {\n callback(null, request.result)\n }\n }\n\n _get (key, options, callback) {\n const store = this[kStore]('readonly')\n let req\n\n try {\n req = store.get(key)\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, function (err, value) {\n if (err) return callback(err)\n\n if (value === undefined) {\n return callback(new ModuleError('Entry not found', {\n code: 'LEVEL_NOT_FOUND'\n }))\n }\n\n callback(null, deserialize(value))\n })\n }\n\n _getMany (keys, options, callback) {\n const store = this[kStore]('readonly')\n const tasks = keys.map((key) => (next) => {\n let request\n\n try {\n request = store.get(key)\n } catch (err) {\n return next(err)\n }\n\n request.onsuccess = () => {\n const value = request.result\n next(null, value === undefined ? value : deserialize(value))\n }\n\n request.onerror = (ev) => {\n ev.stopPropagation()\n next(request.error)\n }\n })\n\n parallel(tasks, 16, callback)\n }\n\n _del (key, options, callback) {\n const store = this[kStore]('readwrite')\n let req\n\n try {\n req = store.delete(key)\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, callback)\n }\n\n _put (key, value, options, callback) {\n const store = this[kStore]('readwrite')\n let req\n\n try {\n // Will throw a DataError or DataCloneError if the environment\n // does not support serializing the key or value respectively.\n req = store.put(value, key)\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, callback)\n }\n\n // TODO: implement key and value iterators\n _iterator (options) {\n return new Iterator(this, this[kLocation], options)\n }\n\n _batch (operations, options, callback) {\n const store = this[kStore]('readwrite')\n const transaction = store.transaction\n let index = 0\n let error\n\n transaction.onabort = function () {\n callback(error || transaction.error || new Error('aborted by user'))\n }\n\n transaction.oncomplete = function () {\n callback()\n }\n\n // Wait for a request to complete before making the next, saving CPU.\n function loop () {\n const op = operations[index++]\n const key = op.key\n\n let req\n\n try {\n req = op.type === 'del' ? store.delete(key) : store.put(op.value, key)\n } catch (err) {\n error = err\n transaction.abort()\n return\n }\n\n if (index < operations.length) {\n req.onsuccess = loop\n } else if (typeof transaction.commit === 'function') {\n // Commit now instead of waiting for auto-commit\n transaction.commit()\n }\n }\n\n loop()\n }\n\n _clear (options, callback) {\n let keyRange\n let req\n\n try {\n keyRange = createKeyRange(options)\n } catch (e) {\n // The lower key is greater than the upper key.\n // IndexedDB throws an error, but we'll just do nothing.\n return this.nextTick(callback)\n }\n\n if (options.limit >= 0) {\n // IDBObjectStore#delete(range) doesn't have such an option.\n // Fall back to cursor-based implementation.\n return clear(this, this[kLocation], keyRange, options, callback)\n }\n\n try {\n const store = this[kStore]('readwrite')\n req = keyRange ? store.delete(keyRange) : store.clear()\n } catch (err) {\n return this.nextTick(callback, err)\n }\n\n this[kOnComplete](req, callback)\n }\n\n _close (callback) {\n this[kIDB].close()\n this.nextTick(callback)\n }\n}\n\nBrowserLevel.destroy = function (location, prefix, callback) {\n if (typeof prefix === 'function') {\n callback = prefix\n prefix = DEFAULT_PREFIX\n }\n\n callback = fromCallback(callback, kPromise)\n const request = indexedDB.deleteDatabase(prefix + location)\n\n request.onsuccess = function () {\n callback()\n }\n\n request.onerror = function (err) {\n callback(err)\n }\n\n return callback[kPromise]\n}\n\nexports.BrowserLevel = BrowserLevel\n","exports.Level = require('browser-level').BrowserLevel\n","/**\n * @namespace Storage-Level\n * @memberof module:Storage\n * @description\n * LevelStorage stores data to a Level-compatible database.\n *\n * To learn more about Level, see {@link https://github.com/Level/level}.\n */\nimport { Level } from 'level'\n\nconst defaultPath = './level'\nconst defaultValueEncoding = 'view'\n\n/**\n * Creates an instance of LevelStorage.\n * @function\n * @param {Object} [params={}] One or more parameters for configuring\n * LevelStorage.\n * @param {string} [params.path=defaultPath] The Level path.\n * @param {string} [params.valueEncoding=defaultValueEncoding] Value encoding.\n * @return {module:Storage.Storage-Level} An instance of LevelStorage.\n * @memberof module:Storage\n * @instance\n */\nconst LevelStorage = async ({ path, valueEncoding } = {}) => {\n path = path || defaultPath\n valueEncoding = valueEncoding || defaultValueEncoding\n\n const db = new Level(path, { valueEncoding, passive: true })\n await db.open()\n\n /**\n * Puts data to Level.\n * @function\n * @param {string} hash The hash of the data to put.\n * @param {*} data The data to store.\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const put = async (hash, value) => {\n await db.put(hash, value)\n }\n\n /**\n * Deletes data from Level.\n * @function\n * @param {string} hash The hash of the data to delete.\n * @param {*} data The data to store.\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const del = async (hash) => {\n await db.del(hash)\n }\n\n /**\n * Gets data from Level.\n * @function\n * @param {string} hash The hash of the data to get.\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const get = async (hash) => {\n try {\n const value = await db.get(hash)\n if (value) {\n return value\n }\n } catch (e) {\n // LEVEL_NOT_FOUND (ie. key not found)\n }\n }\n\n /**\n * Iterates over records stored in Level.\n * @function\n * @yields [string, string] The next key/value pair from Level.\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const iterator = async function * ({ amount, reverse } = {}) {\n const iteratorOptions = { limit: amount || -1, reverse: reverse || false }\n for await (const [key, value] of db.iterator(iteratorOptions)) {\n yield [key, value]\n }\n }\n const merge = async (other) => {}\n\n /**\n * Clears the contents of the Level db.\n * @function\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const clear = async () => {\n await db.clear()\n }\n\n /**\n * Closes the Level db.\n * @function\n * @memberof module:Storage.Storage-Level\n * @instance\n */\n const close = async () => {\n await db.close()\n }\n\n return {\n put,\n del,\n get,\n iterator,\n merge,\n clear,\n close\n }\n}\n\nexport default LevelStorage\n","/**\n * @namespace Storage-LRU\n * @memberof module:Storage\n * @description\n * LRUStorage stores data in a Least Recently Used (LRU) cache.\n */\nimport LRU from 'lru'\n\nconst defaultSize = 1000000\n\n/**\n * Creates an instance of LRUStorage.\n * @function\n * @param {Object} [params={}] One or more parameters for configuring\n * LRUStorage.\n * @param {string} [params.size=defaultSize] The number of elements to store.\n * @return {module:Storage.Storage-LRU} An instance of LRUStorage.\n * @memberof module:Storage\n * @instance\n */\nconst LRUStorage = async ({ size } = {}) => {\n let lru = new LRU(size || defaultSize)\n\n /**\n * Puts data to the LRU cache.\n * @function\n * @param {string} hash The hash of the data to put.\n * @param {*} data The data to store.\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const put = async (hash, data) => {\n lru.set(hash, data)\n }\n\n /**\n * Deletes data from the LRU cache.\n * @function\n * @param {string} hash The hash of the data to delete.\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const del = async (hash) => {\n lru.remove(hash)\n }\n\n /**\n * Gets data from the LRU cache.\n * @function\n * @param {string} hash The hash of the data to get.\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const get = async (hash) => {\n return lru.get(hash)\n }\n\n /**\n * Iterates over records stored in the LRU cache.\n * @function\n * @yields [string, string] The next key/value pair from the LRU cache.\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const iterator = async function * () {\n for await (const key of lru.keys) {\n const value = lru.get(key)\n yield [key, value]\n }\n }\n\n /**\n * Merges data from another source into the LRU cache.\n * @function\n * @param {module:Storage} other Another storage instance.\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const merge = async (other) => {\n if (other) {\n for await (const [key, value] of other.iterator()) {\n lru.set(key, value)\n }\n }\n }\n\n /**\n * Clears the contents of the LRU cache.\n * @function\n * @memberof module:Storage.Storage-LRU\n * @instance\n */\n const clear = async () => {\n lru = new LRU(size || defaultSize)\n }\n\n const close = async () => {}\n\n return {\n put,\n del,\n get,\n iterator,\n merge,\n clear,\n close\n }\n}\n\nexport default LRUStorage\n","/**\n * @module Database\n * @description\n * Database is the base class for OrbitDB data stores and handles all lower\n * level add operations and database sync-ing using IPFS.\n */\nimport { EventEmitter } from 'events'\nimport PQueue from 'p-queue'\nimport Sync from './sync.js'\nimport { Log, Entry } from './oplog/index.js'\nimport { ComposedStorage, LRUStorage, IPFSBlockStorage, LevelStorage } from './storage/index.js'\nimport pathJoin from './utils/path-join.js'\n\nconst defaultReferencesCount = 16\nconst defaultCacheSize = 1000\n\n/**\n * Creates an instance of Database.\n * @function\n * @param {Object} params One or more parameters for configuring Database.\n * @param {IPFS} params.ipfs An IPFS instance.\n * @param {Identity} [params.identity] An Identity instance.\n * @param {string} [params.address] The address of the database.\n * @param {string} [params.name] The name of the database.\n * @param {module:AccessControllers} [params.access] An AccessController\n * instance.\n * @param {string} [params.directory] A location for storing Database-related\n * data. Defaults to ./orbitdb/[params.address].\n * @param {*} [params.meta={}] The database's metadata.\n * @param {module:Storage} [params.headsStorage] A compatible storage\n * instance for storing log heads. Defaults to ComposedStorage.\n * @param {module:Storage} [params.entryStorage] A compatible storage instance\n * for storing log entries. Defaults to ComposedStorage.\n * @param {module:Storage} [params.indexStorage] A compatible storage\n * instance for storing an index of log entries. Defaults to ComposedStorage.\n * @param {number} [params.referencesCount=16] The maximum distance between\n * references to other entries.\n * @param {boolean} [params.syncAutomatically=false] If true, sync databases\n * automatically. Otherwise, false.\n * @param {function} [params.onUpdate] A function callback. Fired when an\n * entry is added to the oplog.\n * @return {module:Databases~Database} An instance of Database.\n * @instance\n */\nconst Database = async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate }) => {\n /**\n * @namespace module:Databases~Database\n * @description The instance returned by {@link module:Database~Database}.\n */\n\n /**\n * Event fired when an update occurs.\n * @event module:Databases~Database#update\n * @param {module:Entry} entry An entry.\n * @example\n * database.events.on('update', (entry) => ...)\n */\n\n /**\n * Event fired when a close occurs.\n * @event module:Databases~Database#close\n * @example\n * database.events.on('close', () => ...)\n */\n\n /**\n * Event fired when a drop occurs.\n * @event module:Databases~Database#drop\n * @example\n * database.events.on('drop', () => ...)\n */\n\n /** Events inherited from Sync */\n\n /**\n * Event fired when when a peer has connected to the database.\n * @event module:Databases~Database#join\n * @param {PeerID} peerId PeerID of the peer who connected\n * @param {Entry[]} heads An array of Log entries\n * @example\n * database.events.on('join', (peerID, heads) => ...)\n */\n\n /**\n * Event fired when a peer has disconnected from the database.\n * @event module:Databases~Database#leave\n * @param {PeerID} peerId PeerID of the peer who disconnected\n * @example\n * database.events.on('leave', (peerID) => ...)\n */\n\n directory = pathJoin(directory || './orbitdb', `./${address}/`)\n meta = meta || {}\n referencesCount = Number(referencesCount) > -1 ? referencesCount : defaultReferencesCount\n\n entryStorage = entryStorage || await ComposedStorage(\n await LRUStorage({ size: defaultCacheSize }),\n await IPFSBlockStorage({ ipfs, pin: true })\n )\n\n headsStorage = headsStorage || await ComposedStorage(\n await LRUStorage({ size: defaultCacheSize }),\n await LevelStorage({ path: pathJoin(directory, '/log/_heads/') })\n )\n\n indexStorage = indexStorage || await ComposedStorage(\n await LRUStorage({ size: defaultCacheSize }),\n await LevelStorage({ path: pathJoin(directory, '/log/_index/') })\n )\n\n const log = await Log(identity, { logId: address, access, entryStorage, headsStorage, indexStorage })\n\n const events = new EventEmitter()\n\n const queue = new PQueue({ concurrency: 1 })\n\n /**\n * Adds an operation to the oplog.\n * @function addOperation\n * @param {*} op Some operation to add to the oplog.\n * @return {string} The hash of the operation.\n * @memberof module:Databases~Database\n * @instance\n * @async\n */\n const addOperation = async (op) => {\n const task = async () => {\n const entry = await log.append(op, { referencesCount })\n await sync.add(entry)\n if (onUpdate) {\n await onUpdate(log, entry)\n }\n events.emit('update', entry)\n return entry.hash\n }\n const hash = await queue.add(task)\n await queue.onIdle()\n return hash\n }\n\n const applyOperation = async (bytes) => {\n const task = async () => {\n const entry = await Entry.decode(bytes)\n if (entry) {\n const updated = await log.joinEntry(entry)\n if (updated) {\n if (onUpdate) {\n await onUpdate(log, entry)\n }\n events.emit('update', entry)\n }\n }\n }\n await queue.add(task)\n }\n\n /**\n * Closes the database, stopping sync and closing the oplog.\n * @memberof module:Databases~Database\n * @instance\n * @async\n */\n const close = async () => {\n await sync.stop()\n await queue.onIdle()\n await log.close()\n if (access && access.close) {\n await access.close()\n }\n events.emit('close')\n }\n\n /**\n * Drops the database, clearing the oplog.\n * @memberof module:Databases~Database\n * @instance\n * @async\n */\n const drop = async () => {\n await queue.onIdle()\n await log.clear()\n if (access && access.drop) {\n await access.drop()\n }\n events.emit('drop')\n }\n\n const sync = await Sync({ ipfs, log, events, onSynced: applyOperation, start: syncAutomatically })\n\n return {\n /**\n * The address of the database.\n * @†ype string\n * @memberof module:Databases~Database\n * @instance\n */\n address,\n /**\n * The name of the database.\n * @†ype string\n * @memberof module:Databases~Database\n * @instance\n */\n name,\n identity,\n meta,\n close,\n drop,\n addOperation,\n /**\n * The underlying [operations log]{@link module:Log~Log} of the database.\n * @†ype {module:Log~Log}\n * @memberof module:Databases~Database\n * @instance\n */\n log,\n /**\n * A [sync]{@link module:Sync~Sync} instance of the database.\n * @†ype {module:Sync~Sync}\n * @memberof module:Databases~Database\n * @instance\n */\n sync,\n /**\n * Set of currently connected peers for this Database instance.\n * @†ype Set\n * @memberof module:Databases~Database\n * @instance\n */\n peers: sync.peers,\n /**\n * Event emitter that emits Database changes. See Events section for details.\n * @†ype EventEmitter\n * @memberof module:Databases~Database\n * @instance\n */\n events,\n /**\n * The [access controller]{@link module:AccessControllers} instance of the database.\n * @memberof module:Databases~Database\n * @instance\n */\n access\n }\n}\n\nexport default Database\n","/**\n * @namespace Databases-Documents\n * @memberof module:Databases\n * @description Documents database.\n * @example Create documents db with custom index\n * import { createHelia } from 'helia'\n * import { createOrbitDB, Documents } from 'orbitdb'\n *\n * const ipfs = createHelia()\n * const orbitdb = await createOrbitDB({ ipfs })\n * const db = await orbitdb.open('my-docs', { Database: Documents({ indexBy: 'myCustomId'} ) }\n *\n * @augments module:Databases~Database\n */\nimport Database from '../database.js'\n\nconst type = 'documents'\n\nconst DefaultOptions = { indexBy: '_id' }\n\n/**\n * Defines a Documents database.\n * @param {Object} options Various options for configuring the Document store.\n * @param {string} [options.indexBy=_id] An index.\n * @return {module:Databases.Databases-Documents} A Documents function.\n * @memberof module:Databases\n */\nconst Documents = ({ indexBy } = DefaultOptions) => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate }) => {\n const database = await Database({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically })\n\n const { addOperation, log } = database\n\n /**\n * Stores a document to the store.\n * @function\n * @param {Object} doc An object representing a key/value list of fields.\n * @return {string} The hash of the new oplog entry.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const put = async (doc) => {\n const key = doc[indexBy]\n\n if (!key) { throw new Error(`The provided document doesn't contain field '${indexBy}'`) }\n\n return addOperation({ op: 'PUT', key, value: doc })\n }\n\n /**\n * Deletes a document from the store.\n * @function\n * @param {string} key The key of the doc to delete.\n * @return {string} The hash of the new oplog entry.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const del = async (key) => {\n if (!await get(key)) { throw new Error(`No document with key '${key}' in the database`) }\n\n return addOperation({ op: 'DEL', key, value: null })\n }\n\n /**\n * Gets a document from the store by key.\n * @function\n * @param {string} key The key of the doc to get.\n * @return {Object} The doc corresponding to key or null.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const get = async (key) => {\n for await (const doc of iterator()) {\n if (key === doc.key) {\n return doc\n }\n }\n }\n\n /**\n * Queries the document store for documents matching mapper filters.\n * @function\n * @param {function(Object)} findFn A function for querying for specific\n * results.\n *\n * The findFn function's signature takes the form `function(doc)` where doc\n * is a document's value property. The function should return true if the\n * document should be included in the results, false otherwise.\n * @return {Array} Found documents.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const query = async (findFn) => {\n const results = []\n\n for await (const doc of iterator()) {\n if (findFn(doc.value)) {\n results.push(doc.value)\n }\n }\n\n return results\n }\n\n /**\n * Iterates over documents.\n * @function\n * @param {Object} [filters={}] Various filters to apply to the iterator.\n * @param {string} [filters.amount=-1] The number of results to fetch.\n * @yields [string, string, string] The next document as hash/key/value.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const iterator = async function * ({ amount } = {}) {\n const keys = {}\n let count = 0\n for await (const entry of log.iterator()) {\n const { op, key, value } = entry.payload\n if (op === 'PUT' && !keys[key]) {\n keys[key] = true\n count++\n const hash = entry.hash\n yield { hash, key, value }\n } else if (op === 'DEL' && !keys[key]) {\n keys[key] = true\n }\n if (count >= amount) {\n break\n }\n }\n }\n\n /**\n * Returns all documents.\n * @function\n * @return [][string, string, string] An array of documents as hash/key\n * value entries.\n * @memberof module:Databases.Databases-Documents\n * @instance\n */\n const all = async () => {\n const values = []\n for await (const entry of iterator()) {\n values.unshift(entry)\n }\n return values\n }\n\n return {\n ...database,\n type,\n put,\n del,\n get,\n iterator,\n query,\n indexBy,\n all\n }\n}\n\nDocuments.type = type\n\nexport default Documents\n","/**\n * @namespace Databases-Events\n * @memberof module:Databases\n * @description\n * Events database is an immutable, append-only event log database.\n *\n * @augments module:Databases~Database\n */\nimport Database from '../database.js'\n\nconst type = 'events'\n\n/**\n * Defines an Events database.\n * @return {module:Databases.Databases-Events} A Events function.\n * @memberof module:Databases\n */\nconst Events = () => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate }) => {\n const database = await Database({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate })\n\n const { addOperation, log } = database\n\n /**\n * Adds an event to the store.\n * @function\n * @param {*} value The event to be added.\n * @return {string} The hash of the new oplog entry.\n * @memberof module:Databases.Databases-Events\n * @instance\n */\n const add = async (value) => {\n return addOperation({ op: 'ADD', key: null, value })\n }\n\n /**\n * Gets an event from the store by hash.\n * @function\n * @param {string} hash The hash of the event to get.\n * @return {*} The value corresponding to hash or null.\n * @memberof module:Databases.Databases-Events\n * @instance\n */\n const get = async (hash) => {\n const entry = await log.get(hash)\n return entry.payload.value\n }\n\n /**\n * Iterates over events.\n * @function\n * @param {Object} [filters={}] Various filters to apply to the iterator.\n * @param {string} [filters.gt] All events which are greater than the\n * given hash.\n * @param {string} [filters.gte] All events which are greater than or equal\n * to the given hash.\n * @param {string} [filters.lt] All events which are less than the given\n * hash.\n * @param {string} [filters.lte] All events which are less than or equal to\n * the given hash.\n * @param {string} [filters.amount=-1] The number of results to fetch.\n * @yields [string, string] The next event as hash/value.\n * @memberof module:Databases.Databases-Events\n * @instance\n */\n const iterator = async function * ({ gt, gte, lt, lte, amount } = {}) {\n const it = log.iterator({ gt, gte, lt, lte, amount })\n for await (const event of it) {\n const hash = event.hash\n const value = event.payload.value\n yield { hash, value }\n }\n }\n\n /**\n * Returns all events.\n * @function\n * @return [][string, string] An array of events as hash/value entries.\n * @memberof module:Databases.Databases-Events\n * @instance\n */\n const all = async () => {\n const values = []\n for await (const entry of iterator()) {\n values.unshift(entry)\n }\n return values\n }\n\n return {\n ...database,\n type,\n add,\n get,\n iterator,\n all\n }\n}\n\nEvents.type = type\n\nexport default Events\n","/**\n * @namespace Databases-KeyValue\n * @memberof module:Databases\n * @description\n * Key-Value database.\n *\n * @augments module:Databases~Database\n */\nimport Database from '../database.js'\n\nconst type = 'keyvalue'\n\n/**\n * Defines a KeyValue database.\n * @return {module:Databases.Databases-KeyValue} A KeyValue function.\n * @memberof module:Databases\n */\nconst KeyValue = () => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate }) => {\n const database = await Database({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate })\n\n const { addOperation, log } = database\n\n /**\n * Stores a key/value pair to the store.\n * @function\n * @param {string} key The key to store.\n * @param {*} value The value to store.\n * @return {string} The hash of the new oplog entry.\n * @memberof module:Databases.Databases-KeyValue\n * @instance\n */\n const put = async (key, value) => {\n return addOperation({ op: 'PUT', key, value })\n }\n\n /**\n * Deletes a key/value pair from the store.\n * @function\n * @param {string} key The key of the key/value pair to delete.\n * @memberof module:Databases.Databases-KeyValue\n * @instance\n */\n const del = async (key) => {\n return addOperation({ op: 'DEL', key, value: null })\n }\n\n /**\n * Gets a value from the store by key.\n * @function\n * @param {string} key The key of the value to get.\n * @return {*} The value corresponding to key or null.\n * @memberof module:Databases.Databases-KeyValue\n * @instance\n */\n const get = async (key) => {\n for await (const entry of log.traverse()) {\n const { op, key: k, value } = entry.payload\n if (op === 'PUT' && k === key) {\n return value\n } else if (op === 'DEL' && k === key) {\n return\n }\n }\n }\n\n /**\n * Iterates over keyvalue pairs.\n * @function\n * @param {Object} [filters={}] Various filters to apply to the iterator.\n * @param {string} [filters.amount=-1] The number of results to fetch.\n * @yields [string, string, string] The next key/value as key/value/hash.\n * @memberof module:Databases.Databases-KeyValue\n * @instance\n */\n const iterator = async function * ({ amount } = {}) {\n const keys = {}\n let count = 0\n for await (const entry of log.traverse()) {\n const { op, key, value } = entry.payload\n if (op === 'PUT' && !keys[key]) {\n keys[key] = true\n count++\n const hash = entry.hash\n yield { key, value, hash }\n } else if (op === 'DEL' && !keys[key]) {\n keys[key] = true\n }\n if (count >= amount) {\n break\n }\n }\n }\n\n /**\n * Returns all key/value pairs.\n * @function\n * @return [][string, string, string] An array of key/value pairs as\n * key/value/hash entries.\n * @memberof module:Databases.Databases-KeyValue\n * @instance\n */\n const all = async () => {\n const values = []\n for await (const entry of iterator()) {\n values.unshift(entry)\n }\n return values\n }\n\n return {\n ...database,\n type,\n put,\n set: put, // Alias for put()\n del,\n get,\n iterator,\n all\n }\n}\n\nKeyValue.type = type\n\nexport default KeyValue\n","/**\n * @module Databases\n * @description\n * Provides various database structures for storing data.\n */\nimport Documents from './documents.js'\nimport Events from './events.js'\nimport KeyValue from './keyvalue.js'\nimport KeyValueIndexed from './keyvalue-indexed.js'\n/**\n\n * An array of available database types.\n * @name databaseTypes\n * @†ype []\n * @return [] An array of database types.\n * @memberof module:Databases\n */\nconst databaseTypes = {}\n\n/**\n * Add a new database type.\n * @example\n * import { useDatabaseType } from 'orbitdb'\n * const CustomDBTypeModule = async (params) => {\n * const database = await Database(...params)\n * ...\n * }\n * useDatabaseType(CustomDBTypeModule)\n * @function useDatabaseType\n * @param {module:Databases} database A Database-compatible module.\n * @throws Database type does not contain required field \\'type\\'.\n * @throws Database type '${store.type}' already added.\n * @memberof module:Databases\n */\nconst useDatabaseType = (database) => {\n if (!database.type) {\n throw new Error('Database type does not contain required field \\'type\\'.')\n }\n\n databaseTypes[database.type] = database\n}\n\nconst getDatabaseType = (type) => {\n if (!type) {\n throw new Error('Type not specified')\n }\n\n if (!databaseTypes[type]) {\n throw new Error(`Unsupported database type: '${type}'`)\n }\n\n return databaseTypes[type]\n}\n\nuseDatabaseType(Events)\nuseDatabaseType(Documents)\nuseDatabaseType(KeyValue)\n\nexport { useDatabaseType, getDatabaseType, Documents, Events, KeyValue, KeyValueIndexed }\n","export const connectionSymbol = Symbol.for('@libp2p/connection');\nexport function isConnection(other) {\n return other != null && Boolean(other[connectionSymbol]);\n}\n//# sourceMappingURL=index.js.map","/**\n * Any object that implements this Symbol as a property should return a\n * ContentRouting instance as the property value, similar to how\n * `Symbol.Iterable` can be used to return an `Iterable` from an `Iterator`.\n *\n * @example\n *\n * ```TypeScript\n * import { contentRoutingSymbol, ContentRouting } from '@libp2p/content-routing'\n *\n * class MyContentRouter implements ContentRouting {\n * get [contentRoutingSymbol] () {\n * return this\n * }\n *\n * // ...other methods\n * }\n * ```\n */\nexport const contentRoutingSymbol = Symbol.for('@libp2p/content-routing');\n//# sourceMappingURL=index.js.map","/**\n * Any object that implements this Symbol as a property should return a\n * PeerDiscovery instance as the property value, similar to how\n * `Symbol.Iterable` can be used to return an `Iterable` from an `Iterator`.\n *\n * @example\n *\n * ```TypeScript\n * import { peerDiscovery, PeerDiscovery } from '@libp2p/peer-discovery'\n *\n * class MyPeerDiscoverer implements PeerDiscovery {\n * get [peerDiscovery] () {\n * return this\n * }\n *\n * // ...other methods\n * }\n * ```\n */\nexport const peerDiscoverySymbol = Symbol.for('@libp2p/peer-discovery');\n//# sourceMappingURL=index.js.map","export const peerIdSymbol = Symbol.for('@libp2p/peer-id');\nexport function isPeerId(other) {\n return other != null && Boolean(other[peerIdSymbol]);\n}\n//# sourceMappingURL=index.js.map","/**\n * Any object that implements this Symbol as a property should return a\n * PeerRouting instance as the property value, similar to how\n * `Symbol.Iterable` can be used to return an `Iterable` from an `Iterator`.\n *\n * @example\n *\n * ```TypeScript\n * import { peerRouting, PeerRouting } from '@libp2p/peer-routing'\n *\n * class MyPeerRouter implements PeerRouting {\n * get [peerRouting] () {\n * return this\n * }\n *\n * // ...other methods\n * }\n * ```\n */\nexport const peerRoutingSymbol = Symbol.for('@libp2p/peer-routing');\n//# sourceMappingURL=index.js.map","export const KEEP_ALIVE = 'keep-alive';\n//# sourceMappingURL=tags.js.map","/**\n * On the producing side:\n * * Build messages with the signature, key (from may be enough for certain inlineable public key types), from and seqno fields.\n *\n * On the consuming side:\n * * Enforce the fields to be present, reject otherwise.\n * * Propagate only if the fields are valid and signature can be verified, reject otherwise.\n */\nexport const StrictSign = 'StrictSign';\n/**\n * On the producing side:\n * * Build messages without the signature, key, from and seqno fields.\n * * The corresponding protobuf key-value pairs are absent from the marshalled message, not just empty.\n *\n * On the consuming side:\n * * Enforce the fields to be absent, reject otherwise.\n * * Propagate only if the fields are absent, reject otherwise.\n * * A message_id function will not be able to use the above fields, and should instead rely on the data field. A commonplace strategy is to calculate a hash.\n */\nexport const StrictNoSign = 'StrictNoSign';\nexport var TopicValidatorResult;\n(function (TopicValidatorResult) {\n /**\n * The message is considered valid, and it should be delivered and forwarded to the network\n */\n TopicValidatorResult[\"Accept\"] = \"accept\";\n /**\n * The message is neither delivered nor forwarded to the network\n */\n TopicValidatorResult[\"Ignore\"] = \"ignore\";\n /**\n * The message is considered invalid, and it should be rejected\n */\n TopicValidatorResult[\"Reject\"] = \"reject\";\n})(TopicValidatorResult || (TopicValidatorResult = {}));\n//# sourceMappingURL=index.js.map","export const transportSymbol = Symbol.for('@libp2p/transport');\nexport function isTransport(other) {\n return other != null && Boolean(other[transportSymbol]);\n}\n/**\n * Enum Transport Manager Fault Tolerance values\n */\nexport var FaultTolerance;\n(function (FaultTolerance) {\n /**\n * should be used for failing in any listen circumstance\n */\n FaultTolerance[FaultTolerance[\"FATAL_ALL\"] = 0] = \"FATAL_ALL\";\n /**\n * should be used for not failing when not listening\n */\n FaultTolerance[FaultTolerance[\"NO_FATAL\"] = 1] = \"NO_FATAL\";\n})(FaultTolerance || (FaultTolerance = {}));\n//# sourceMappingURL=index.js.map","/**\n * When this error is thrown it means an operation was aborted,\n * usually in response to the `abort` event being emitted by an\n * AbortSignal.\n */\nexport class AbortError extends Error {\n code;\n type;\n constructor(message = 'The operation was aborted') {\n super(message);\n this.name = 'AbortError';\n this.code = AbortError.code;\n this.type = AbortError.type;\n }\n static code = 'ABORT_ERR';\n static type = 'aborted';\n}\nexport class CodeError extends Error {\n code;\n props;\n constructor(message, code, props) {\n super(message);\n this.code = code;\n this.name = props?.name ?? 'CodeError';\n this.props = props ?? {}; // eslint-disable-line @typescript-eslint/consistent-type-assertions\n }\n}\nexport class AggregateCodeError extends AggregateError {\n code;\n props;\n constructor(errors, message, code, props) {\n super(errors, message);\n this.code = code;\n this.name = props?.name ?? 'AggregateCodeError';\n this.props = props ?? {}; // eslint-disable-line @typescript-eslint/consistent-type-assertions\n }\n}\nexport class UnexpectedPeerError extends Error {\n code;\n constructor(message = 'Unexpected Peer') {\n super(message);\n this.name = 'UnexpectedPeerError';\n this.code = UnexpectedPeerError.code;\n }\n static code = 'ERR_UNEXPECTED_PEER';\n}\nexport class InvalidCryptoExchangeError extends Error {\n code;\n constructor(message = 'Invalid crypto exchange') {\n super(message);\n this.name = 'InvalidCryptoExchangeError';\n this.code = InvalidCryptoExchangeError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_EXCHANGE';\n}\nexport class InvalidCryptoTransmissionError extends Error {\n code;\n constructor(message = 'Invalid crypto transmission') {\n super(message);\n this.name = 'InvalidCryptoTransmissionError';\n this.code = InvalidCryptoTransmissionError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_TRANSMISSION';\n}\n// Error codes\nexport const ERR_TIMEOUT = 'ERR_TIMEOUT';\nexport const ERR_INVALID_PARAMETERS = 'ERR_INVALID_PARAMETERS';\nexport const ERR_NOT_FOUND = 'ERR_NOT_FOUND';\nexport const ERR_INVALID_MESSAGE = 'ERR_INVALID_MESSAGE';\n//# sourceMappingURL=errors.js.map","import { setMaxListeners as nodeSetMaxListeners } from 'events';\n// create a setMaxListeners that doesn't break browser usage\nexport const setMaxListeners = (n, ...eventTargets) => {\n try {\n nodeSetMaxListeners(n, ...eventTargets);\n }\n catch {\n // swallow error, gulp\n }\n};\n//# sourceMappingURL=events.js.map","import { setMaxListeners } from './events.js';\n/**\n * An implementation of a typed event target\n * etc\n */\nexport class TypedEventEmitter extends EventTarget {\n #listeners = new Map();\n constructor() {\n super();\n // silence MaxListenersExceededWarning warning on Node.js, this is a red\n // herring almost all of the time\n setMaxListeners(Infinity, this);\n }\n listenerCount(type) {\n const listeners = this.#listeners.get(type);\n if (listeners == null) {\n return 0;\n }\n return listeners.length;\n }\n addEventListener(type, listener, options) {\n super.addEventListener(type, listener, options);\n let list = this.#listeners.get(type);\n if (list == null) {\n list = [];\n this.#listeners.set(type, list);\n }\n list.push({\n callback: listener,\n once: (options !== true && options !== false && options?.once) ?? false\n });\n }\n removeEventListener(type, listener, options) {\n super.removeEventListener(type.toString(), listener ?? null, options);\n let list = this.#listeners.get(type);\n if (list == null) {\n return;\n }\n list = list.filter(({ callback }) => callback !== listener);\n this.#listeners.set(type, list);\n }\n dispatchEvent(event) {\n const result = super.dispatchEvent(event);\n let list = this.#listeners.get(event.type);\n if (list == null) {\n return result;\n }\n list = list.filter(({ once }) => !once);\n this.#listeners.set(event.type, list);\n return result;\n }\n safeDispatchEvent(type, detail = {}) {\n return this.dispatchEvent(new CustomEvent(type, detail));\n }\n}\nexport const CustomEvent = globalThis.CustomEvent;\n//# sourceMappingURL=event-target.js.map","export function isStartable(obj) {\n return obj != null && typeof obj.start === 'function' && typeof obj.stop === 'function';\n}\nexport async function start(...objs) {\n const startables = [];\n for (const obj of objs) {\n if (isStartable(obj)) {\n startables.push(obj);\n }\n }\n await Promise.all(startables.map(async (s) => {\n if (s.beforeStart != null) {\n await s.beforeStart();\n }\n }));\n await Promise.all(startables.map(async (s) => {\n await s.start();\n }));\n await Promise.all(startables.map(async (s) => {\n if (s.afterStart != null) {\n await s.afterStart();\n }\n }));\n}\nexport async function stop(...objs) {\n const startables = [];\n for (const obj of objs) {\n if (isStartable(obj)) {\n startables.push(obj);\n }\n }\n await Promise.all(startables.map(async (s) => {\n if (s.beforeStop != null) {\n await s.beforeStop();\n }\n }));\n await Promise.all(startables.map(async (s) => {\n await s.stop();\n }));\n await Promise.all(startables.map(async (s) => {\n if (s.afterStop != null) {\n await s.afterStop();\n }\n }));\n}\n//# sourceMappingURL=startable.js.map","/**\n * @packageDocumentation\n *\n * Exports a `Libp2p` type for modules to use as a type argument.\n *\n * @example\n *\n * ```typescript\n * import type { Libp2p } from '@libp2p/interface'\n *\n * function doSomethingWithLibp2p (node: Libp2p) {\n * // ...\n * }\n * ```\n */\n/**\n * This symbol is used by libp2p services to define the capabilities they can\n * provide to other libp2p services.\n *\n * The service should define a property with this symbol as the key and the\n * value should be a string array of provided capabilities.\n */\nexport const serviceCapabilities = Symbol.for('@libp2p/service-capabilities');\n/**\n * This symbol is used by libp2p services to define the capabilities they\n * require from other libp2p services.\n *\n * The service should define a property with this symbol as the key and the\n * value should be a string array of required capabilities.\n */\nexport const serviceDependencies = Symbol.for('@libp2p/service-dependencies');\nexport * from './connection/index.js';\nexport * from './connection-encrypter/index.js';\nexport * from './connection-gater/index.js';\nexport * from './content-routing/index.js';\nexport * from './keys/index.js';\nexport * from './metrics/index.js';\nexport * from './peer-discovery/index.js';\nexport * from './peer-id/index.js';\nexport * from './peer-info/index.js';\nexport * from './peer-routing/index.js';\nexport * from './peer-store/index.js';\nexport * from './peer-store/tags.js';\nexport * from './pubsub/index.js';\nexport * from './record/index.js';\nexport * from './stream-handler/index.js';\nexport * from './stream-muxer/index.js';\nexport * from './topology/index.js';\nexport * from './transport/index.js';\nexport * from './errors.js';\nexport * from './event-target.js';\nexport * from './events.js';\nexport * from './startable.js';\n//# sourceMappingURL=index.js.map","/**\n * Node.js module for Forge.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2016 Digital Bazaar, Inc.\n */\nmodule.exports = {\n // default options\n options: {\n usePureJavaScript: false\n }\n};\n","/**\n * Base-N/Base-X encoding/decoding functions.\n *\n * Original implementation from base-x:\n * https://github.com/cryptocoinjs/base-x\n *\n * Which is MIT licensed:\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\nvar api = {};\nmodule.exports = api;\n\n// baseN alphabet indexes\nvar _reverseAlphabets = {};\n\n/**\n * BaseN-encodes a Uint8Array using the given alphabet.\n *\n * @param input the Uint8Array to encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the baseN-encoded output string.\n */\napi.encode = function(input, alphabet, maxline) {\n if(typeof alphabet !== 'string') {\n throw new TypeError('\"alphabet\" must be a string.');\n }\n if(maxline !== undefined && typeof maxline !== 'number') {\n throw new TypeError('\"maxline\" must be a number.');\n }\n\n var output = '';\n\n if(!(input instanceof Uint8Array)) {\n // assume forge byte buffer\n output = _encodeWithByteBuffer(input, alphabet);\n } else {\n var i = 0;\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var digits = [0];\n for(i = 0; i < input.length; ++i) {\n for(var j = 0, carry = input[i]; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % base;\n carry = (carry / base) | 0;\n }\n\n while(carry > 0) {\n digits.push(carry % base);\n carry = (carry / base) | 0;\n }\n }\n\n // deal with leading zeros\n for(i = 0; input[i] === 0 && i < input.length - 1; ++i) {\n output += first;\n }\n // convert digits to a string\n for(i = digits.length - 1; i >= 0; --i) {\n output += alphabet[digits[i]];\n }\n }\n\n if(maxline) {\n var regex = new RegExp('.{1,' + maxline + '}', 'g');\n output = output.match(regex).join('\\r\\n');\n }\n\n return output;\n};\n\n/**\n * Decodes a baseN-encoded (using the given alphabet) string to a\n * Uint8Array.\n *\n * @param input the baseN-encoded input string.\n *\n * @return the Uint8Array.\n */\napi.decode = function(input, alphabet) {\n if(typeof input !== 'string') {\n throw new TypeError('\"input\" must be a string.');\n }\n if(typeof alphabet !== 'string') {\n throw new TypeError('\"alphabet\" must be a string.');\n }\n\n var table = _reverseAlphabets[alphabet];\n if(!table) {\n // compute reverse alphabet\n table = _reverseAlphabets[alphabet] = [];\n for(var i = 0; i < alphabet.length; ++i) {\n table[alphabet.charCodeAt(i)] = i;\n }\n }\n\n // remove whitespace characters\n input = input.replace(/\\s/g, '');\n\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var bytes = [0];\n for(var i = 0; i < input.length; i++) {\n var value = table[input.charCodeAt(i)];\n if(value === undefined) {\n return;\n }\n\n for(var j = 0, carry = value; j < bytes.length; ++j) {\n carry += bytes[j] * base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while(carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for(var k = 0; input[k] === first && k < input.length - 1; ++k) {\n bytes.push(0);\n }\n\n if(typeof Buffer !== 'undefined') {\n return Buffer.from(bytes.reverse());\n }\n\n return new Uint8Array(bytes.reverse());\n};\n\nfunction _encodeWithByteBuffer(input, alphabet) {\n var i = 0;\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var digits = [0];\n for(i = 0; i < input.length(); ++i) {\n for(var j = 0, carry = input.at(i); j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % base;\n carry = (carry / base) | 0;\n }\n\n while(carry > 0) {\n digits.push(carry % base);\n carry = (carry / base) | 0;\n }\n }\n\n var output = '';\n\n // deal with leading zeros\n for(i = 0; input.at(i) === 0 && i < input.length() - 1; ++i) {\n output += first;\n }\n // convert digits to a string\n for(i = digits.length - 1; i >= 0; --i) {\n output += alphabet[digits[i]];\n }\n\n return output;\n}\n","/**\n * Utility functions for web applications.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2018 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nvar baseN = require('./baseN');\n\n/* Utilities API */\nvar util = module.exports = forge.util = forge.util || {};\n\n// define setImmediate and nextTick\n(function() {\n // use native nextTick (unless we're in webpack)\n // webpack (or better node-libs-browser polyfill) sets process.browser.\n // this way we can detect webpack properly\n if(typeof process !== 'undefined' && process.nextTick && !process.browser) {\n util.nextTick = process.nextTick;\n if(typeof setImmediate === 'function') {\n util.setImmediate = setImmediate;\n } else {\n // polyfill setImmediate with nextTick, older versions of node\n // (those w/o setImmediate) won't totally starve IO\n util.setImmediate = util.nextTick;\n }\n return;\n }\n\n // polyfill nextTick with native setImmediate\n if(typeof setImmediate === 'function') {\n util.setImmediate = function() { return setImmediate.apply(undefined, arguments); };\n util.nextTick = function(callback) {\n return setImmediate(callback);\n };\n return;\n }\n\n /* Note: A polyfill upgrade pattern is used here to allow combining\n polyfills. For example, MutationObserver is fast, but blocks UI updates,\n so it needs to allow UI updates periodically, so it falls back on\n postMessage or setTimeout. */\n\n // polyfill with setTimeout\n util.setImmediate = function(callback) {\n setTimeout(callback, 0);\n };\n\n // upgrade polyfill to use postMessage\n if(typeof window !== 'undefined' &&\n typeof window.postMessage === 'function') {\n var msg = 'forge.setImmediate';\n var callbacks = [];\n util.setImmediate = function(callback) {\n callbacks.push(callback);\n // only send message when one hasn't been sent in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n window.postMessage(msg, '*');\n }\n };\n function handler(event) {\n if(event.source === window && event.data === msg) {\n event.stopPropagation();\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }\n }\n window.addEventListener('message', handler, true);\n }\n\n // upgrade polyfill to use MutationObserver\n if(typeof MutationObserver !== 'undefined') {\n // polyfill with MutationObserver\n var now = Date.now();\n var attr = true;\n var div = document.createElement('div');\n var callbacks = [];\n new MutationObserver(function() {\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }).observe(div, {attributes: true});\n var oldSetImmediate = util.setImmediate;\n util.setImmediate = function(callback) {\n if(Date.now() - now > 15) {\n now = Date.now();\n oldSetImmediate(callback);\n } else {\n callbacks.push(callback);\n // only trigger observer when it hasn't been triggered in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n div.setAttribute('a', attr = !attr);\n }\n }\n };\n }\n\n util.nextTick = util.setImmediate;\n})();\n\n// check if running under Node.js\nutil.isNodejs =\n typeof process !== 'undefined' && process.versions && process.versions.node;\n\n\n// 'self' will also work in Web Workers (instance of WorkerGlobalScope) while\n// it will point to `window` in the main thread.\n// To remain compatible with older browsers, we fall back to 'window' if 'self'\n// is not available.\nutil.globalScope = (function() {\n if(util.isNodejs) {\n return global;\n }\n\n return typeof self === 'undefined' ? window : self;\n})();\n\n// define isArray\nutil.isArray = Array.isArray || function(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n};\n\n// define isArrayBuffer\nutil.isArrayBuffer = function(x) {\n return typeof ArrayBuffer !== 'undefined' && x instanceof ArrayBuffer;\n};\n\n// define isArrayBufferView\nutil.isArrayBufferView = function(x) {\n return x && util.isArrayBuffer(x.buffer) && x.byteLength !== undefined;\n};\n\n/**\n * Ensure a bits param is 8, 16, 24, or 32. Used to validate input for\n * algorithms where bit manipulation, JavaScript limitations, and/or algorithm\n * design only allow for byte operations of a limited size.\n *\n * @param n number of bits.\n *\n * Throw Error if n invalid.\n */\nfunction _checkBitsParam(n) {\n if(!(n === 8 || n === 16 || n === 24 || n === 32)) {\n throw new Error('Only 8, 16, 24, or 32 bits supported: ' + n);\n }\n}\n\n// TODO: set ByteBuffer to best available backing\nutil.ByteBuffer = ByteStringBuffer;\n\n/** Buffer w/BinaryString backing */\n\n/**\n * Constructor for a binary string backed byte buffer.\n *\n * @param [b] the bytes to wrap (either encoded as string, one byte per\n * character, or as an ArrayBuffer or Typed Array).\n */\nfunction ByteStringBuffer(b) {\n // TODO: update to match DataBuffer API\n\n // the data in this buffer\n this.data = '';\n // the pointer for reading from this buffer\n this.read = 0;\n\n if(typeof b === 'string') {\n this.data = b;\n } else if(util.isArrayBuffer(b) || util.isArrayBufferView(b)) {\n if(typeof Buffer !== 'undefined' && b instanceof Buffer) {\n this.data = b.toString('binary');\n } else {\n // convert native buffer to forge buffer\n // FIXME: support native buffers internally instead\n var arr = new Uint8Array(b);\n try {\n this.data = String.fromCharCode.apply(null, arr);\n } catch(e) {\n for(var i = 0; i < arr.length; ++i) {\n this.putByte(arr[i]);\n }\n }\n }\n } else if(b instanceof ByteStringBuffer ||\n (typeof b === 'object' && typeof b.data === 'string' &&\n typeof b.read === 'number')) {\n // copy existing buffer\n this.data = b.data;\n this.read = b.read;\n }\n\n // used for v8 optimization\n this._constructedStringLength = 0;\n}\nutil.ByteStringBuffer = ByteStringBuffer;\n\n/* Note: This is an optimization for V8-based browsers. When V8 concatenates\n a string, the strings are only joined logically using a \"cons string\" or\n \"constructed/concatenated string\". These containers keep references to one\n another and can result in very large memory usage. For example, if a 2MB\n string is constructed by concatenating 4 bytes together at a time, the\n memory usage will be ~44MB; so ~22x increase. The strings are only joined\n together when an operation requiring their joining takes place, such as\n substr(). This function is called when adding data to this buffer to ensure\n these types of strings are periodically joined to reduce the memory\n footprint. */\nvar _MAX_CONSTRUCTED_STRING_LENGTH = 4096;\nutil.ByteStringBuffer.prototype._optimizeConstructedString = function(x) {\n this._constructedStringLength += x;\n if(this._constructedStringLength > _MAX_CONSTRUCTED_STRING_LENGTH) {\n // this substr() should cause the constructed string to join\n this.data.substr(0, 1);\n this._constructedStringLength = 0;\n }\n};\n\n/**\n * Gets the number of bytes in this buffer.\n *\n * @return the number of bytes in this buffer.\n */\nutil.ByteStringBuffer.prototype.length = function() {\n return this.data.length - this.read;\n};\n\n/**\n * Gets whether or not this buffer is empty.\n *\n * @return true if this buffer is empty, false if not.\n */\nutil.ByteStringBuffer.prototype.isEmpty = function() {\n return this.length() <= 0;\n};\n\n/**\n * Puts a byte in this buffer.\n *\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putByte = function(b) {\n return this.putBytes(String.fromCharCode(b));\n};\n\n/**\n * Puts a byte in this buffer N times.\n *\n * @param b the byte to put.\n * @param n the number of bytes of value b to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.fillWithByte = function(b, n) {\n b = String.fromCharCode(b);\n var d = this.data;\n while(n > 0) {\n if(n & 1) {\n d += b;\n }\n n >>>= 1;\n if(n > 0) {\n b += b;\n }\n }\n this.data = d;\n this._optimizeConstructedString(n);\n return this;\n};\n\n/**\n * Puts bytes in this buffer.\n *\n * @param bytes the bytes (as a binary encoded string) to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putBytes = function(bytes) {\n this.data += bytes;\n this._optimizeConstructedString(bytes.length);\n return this;\n};\n\n/**\n * Puts a UTF-16 encoded string into this buffer.\n *\n * @param str the string to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putString = function(str) {\n return this.putBytes(util.encodeUtf8(str));\n};\n\n/**\n * Puts a 16-bit integer in this buffer in big-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt16 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 24-bit integer in this buffer in big-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt24 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 32-bit integer in this buffer in big-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt32 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 24 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 16-bit integer in this buffer in little-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt16Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF));\n};\n\n/**\n * Puts a 24-bit integer in this buffer in little-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt24Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF));\n};\n\n/**\n * Puts a 32-bit integer in this buffer in little-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt32Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 24 & 0xFF));\n};\n\n/**\n * Puts an n-bit integer in this buffer in big-endian order.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt = function(i, n) {\n _checkBitsParam(n);\n var bytes = '';\n do {\n n -= 8;\n bytes += String.fromCharCode((i >> n) & 0xFF);\n } while(n > 0);\n return this.putBytes(bytes);\n};\n\n/**\n * Puts a signed n-bit integer in this buffer in big-endian order. Two's\n * complement representation is used.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putSignedInt = function(i, n) {\n // putInt checks n\n if(i < 0) {\n i += 2 << (n - 1);\n }\n return this.putInt(i, n);\n};\n\n/**\n * Puts the given buffer into this buffer.\n *\n * @param buffer the buffer to put into this one.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putBuffer = function(buffer) {\n return this.putBytes(buffer.getBytes());\n};\n\n/**\n * Gets a byte from this buffer and advances the read pointer by 1.\n *\n * @return the byte.\n */\nutil.ByteStringBuffer.prototype.getByte = function() {\n return this.data.charCodeAt(this.read++);\n};\n\n/**\n * Gets a uint16 from this buffer in big-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.ByteStringBuffer.prototype.getInt16 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 8 ^\n this.data.charCodeAt(this.read + 1));\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in big-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.ByteStringBuffer.prototype.getInt24 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 16 ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2));\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in big-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.ByteStringBuffer.prototype.getInt32 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 24 ^\n this.data.charCodeAt(this.read + 1) << 16 ^\n this.data.charCodeAt(this.read + 2) << 8 ^\n this.data.charCodeAt(this.read + 3));\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets a uint16 from this buffer in little-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.ByteStringBuffer.prototype.getInt16Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in little-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.ByteStringBuffer.prototype.getInt24Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2) << 16);\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in little-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.ByteStringBuffer.prototype.getInt32Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2) << 16 ^\n this.data.charCodeAt(this.read + 3) << 24);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets an n-bit integer from this buffer in big-endian order and advances the\n * read pointer by ceil(n/8).\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.ByteStringBuffer.prototype.getInt = function(n) {\n _checkBitsParam(n);\n var rval = 0;\n do {\n // TODO: Use (rval * 0x100) if adding support for 33 to 53 bits.\n rval = (rval << 8) + this.data.charCodeAt(this.read++);\n n -= 8;\n } while(n > 0);\n return rval;\n};\n\n/**\n * Gets a signed n-bit integer from this buffer in big-endian order, using\n * two's complement, and advances the read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.ByteStringBuffer.prototype.getSignedInt = function(n) {\n // getInt checks n\n var x = this.getInt(n);\n var max = 2 << (n - 2);\n if(x >= max) {\n x -= max << 1;\n }\n return x;\n};\n\n/**\n * Reads bytes out as a binary encoded string and clears them from the\n * buffer. Note that the resulting string is binary encoded (in node.js this\n * encoding is referred to as `binary`, it is *not* `utf8`).\n *\n * @param count the number of bytes to read, undefined or null for all.\n *\n * @return a binary encoded string of bytes.\n */\nutil.ByteStringBuffer.prototype.getBytes = function(count) {\n var rval;\n if(count) {\n // read count bytes\n count = Math.min(this.length(), count);\n rval = this.data.slice(this.read, this.read + count);\n this.read += count;\n } else if(count === 0) {\n rval = '';\n } else {\n // read all bytes, optimize to only copy when needed\n rval = (this.read === 0) ? this.data : this.data.slice(this.read);\n this.clear();\n }\n return rval;\n};\n\n/**\n * Gets a binary encoded string of the bytes from this buffer without\n * modifying the read pointer.\n *\n * @param count the number of bytes to get, omit to get all.\n *\n * @return a string full of binary encoded characters.\n */\nutil.ByteStringBuffer.prototype.bytes = function(count) {\n return (typeof(count) === 'undefined' ?\n this.data.slice(this.read) :\n this.data.slice(this.read, this.read + count));\n};\n\n/**\n * Gets a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n *\n * @return the byte.\n */\nutil.ByteStringBuffer.prototype.at = function(i) {\n return this.data.charCodeAt(this.read + i);\n};\n\n/**\n * Puts a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.setAt = function(i, b) {\n this.data = this.data.substr(0, this.read + i) +\n String.fromCharCode(b) +\n this.data.substr(this.read + i + 1);\n return this;\n};\n\n/**\n * Gets the last byte without modifying the read pointer.\n *\n * @return the last byte.\n */\nutil.ByteStringBuffer.prototype.last = function() {\n return this.data.charCodeAt(this.data.length - 1);\n};\n\n/**\n * Creates a copy of this buffer.\n *\n * @return the copy.\n */\nutil.ByteStringBuffer.prototype.copy = function() {\n var c = util.createBuffer(this.data);\n c.read = this.read;\n return c;\n};\n\n/**\n * Compacts this buffer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.compact = function() {\n if(this.read > 0) {\n this.data = this.data.slice(this.read);\n this.read = 0;\n }\n return this;\n};\n\n/**\n * Clears this buffer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.clear = function() {\n this.data = '';\n this.read = 0;\n return this;\n};\n\n/**\n * Shortens this buffer by triming bytes off of the end of this buffer.\n *\n * @param count the number of bytes to trim off.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.truncate = function(count) {\n var len = Math.max(0, this.length() - count);\n this.data = this.data.substr(this.read, len);\n this.read = 0;\n return this;\n};\n\n/**\n * Converts this buffer to a hexadecimal string.\n *\n * @return a hexadecimal string.\n */\nutil.ByteStringBuffer.prototype.toHex = function() {\n var rval = '';\n for(var i = this.read; i < this.data.length; ++i) {\n var b = this.data.charCodeAt(i);\n if(b < 16) {\n rval += '0';\n }\n rval += b.toString(16);\n }\n return rval;\n};\n\n/**\n * Converts this buffer to a UTF-16 string (standard JavaScript string).\n *\n * @return a UTF-16 string.\n */\nutil.ByteStringBuffer.prototype.toString = function() {\n return util.decodeUtf8(this.bytes());\n};\n\n/** End Buffer w/BinaryString backing */\n\n/** Buffer w/UInt8Array backing */\n\n/**\n * FIXME: Experimental. Do not use yet.\n *\n * Constructor for an ArrayBuffer-backed byte buffer.\n *\n * The buffer may be constructed from a string, an ArrayBuffer, DataView, or a\n * TypedArray.\n *\n * If a string is given, its encoding should be provided as an option,\n * otherwise it will default to 'binary'. A 'binary' string is encoded such\n * that each character is one byte in length and size.\n *\n * If an ArrayBuffer, DataView, or TypedArray is given, it will be used\n * *directly* without any copying. Note that, if a write to the buffer requires\n * more space, the buffer will allocate a new backing ArrayBuffer to\n * accommodate. The starting read and write offsets for the buffer may be\n * given as options.\n *\n * @param [b] the initial bytes for this buffer.\n * @param options the options to use:\n * [readOffset] the starting read offset to use (default: 0).\n * [writeOffset] the starting write offset to use (default: the\n * length of the first parameter).\n * [growSize] the minimum amount, in bytes, to grow the buffer by to\n * accommodate writes (default: 1024).\n * [encoding] the encoding ('binary', 'utf8', 'utf16', 'hex') for the\n * first parameter, if it is a string (default: 'binary').\n */\nfunction DataBuffer(b, options) {\n // default options\n options = options || {};\n\n // pointers for read from/write to buffer\n this.read = options.readOffset || 0;\n this.growSize = options.growSize || 1024;\n\n var isArrayBuffer = util.isArrayBuffer(b);\n var isArrayBufferView = util.isArrayBufferView(b);\n if(isArrayBuffer || isArrayBufferView) {\n // use ArrayBuffer directly\n if(isArrayBuffer) {\n this.data = new DataView(b);\n } else {\n // TODO: adjust read/write offset based on the type of view\n // or specify that this must be done in the options ... that the\n // offsets are byte-based\n this.data = new DataView(b.buffer, b.byteOffset, b.byteLength);\n }\n this.write = ('writeOffset' in options ?\n options.writeOffset : this.data.byteLength);\n return;\n }\n\n // initialize to empty array buffer and add any given bytes using putBytes\n this.data = new DataView(new ArrayBuffer(0));\n this.write = 0;\n\n if(b !== null && b !== undefined) {\n this.putBytes(b);\n }\n\n if('writeOffset' in options) {\n this.write = options.writeOffset;\n }\n}\nutil.DataBuffer = DataBuffer;\n\n/**\n * Gets the number of bytes in this buffer.\n *\n * @return the number of bytes in this buffer.\n */\nutil.DataBuffer.prototype.length = function() {\n return this.write - this.read;\n};\n\n/**\n * Gets whether or not this buffer is empty.\n *\n * @return true if this buffer is empty, false if not.\n */\nutil.DataBuffer.prototype.isEmpty = function() {\n return this.length() <= 0;\n};\n\n/**\n * Ensures this buffer has enough empty space to accommodate the given number\n * of bytes. An optional parameter may be given that indicates a minimum\n * amount to grow the buffer if necessary. If the parameter is not given,\n * the buffer will be grown by some previously-specified default amount\n * or heuristic.\n *\n * @param amount the number of bytes to accommodate.\n * @param [growSize] the minimum amount, in bytes, to grow the buffer by if\n * necessary.\n */\nutil.DataBuffer.prototype.accommodate = function(amount, growSize) {\n if(this.length() >= amount) {\n return this;\n }\n growSize = Math.max(growSize || this.growSize, amount);\n\n // grow buffer\n var src = new Uint8Array(\n this.data.buffer, this.data.byteOffset, this.data.byteLength);\n var dst = new Uint8Array(this.length() + growSize);\n dst.set(src);\n this.data = new DataView(dst.buffer);\n\n return this;\n};\n\n/**\n * Puts a byte in this buffer.\n *\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putByte = function(b) {\n this.accommodate(1);\n this.data.setUint8(this.write++, b);\n return this;\n};\n\n/**\n * Puts a byte in this buffer N times.\n *\n * @param b the byte to put.\n * @param n the number of bytes of value b to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.fillWithByte = function(b, n) {\n this.accommodate(n);\n for(var i = 0; i < n; ++i) {\n this.data.setUint8(b);\n }\n return this;\n};\n\n/**\n * Puts bytes in this buffer. The bytes may be given as a string, an\n * ArrayBuffer, a DataView, or a TypedArray.\n *\n * @param bytes the bytes to put.\n * @param [encoding] the encoding for the first parameter ('binary', 'utf8',\n * 'utf16', 'hex'), if it is a string (default: 'binary').\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putBytes = function(bytes, encoding) {\n if(util.isArrayBufferView(bytes)) {\n var src = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n var len = src.byteLength - src.byteOffset;\n this.accommodate(len);\n var dst = new Uint8Array(this.data.buffer, this.write);\n dst.set(src);\n this.write += len;\n return this;\n }\n\n if(util.isArrayBuffer(bytes)) {\n var src = new Uint8Array(bytes);\n this.accommodate(src.byteLength);\n var dst = new Uint8Array(this.data.buffer);\n dst.set(src, this.write);\n this.write += src.byteLength;\n return this;\n }\n\n // bytes is a util.DataBuffer or equivalent\n if(bytes instanceof util.DataBuffer ||\n (typeof bytes === 'object' &&\n typeof bytes.read === 'number' && typeof bytes.write === 'number' &&\n util.isArrayBufferView(bytes.data))) {\n var src = new Uint8Array(bytes.data.byteLength, bytes.read, bytes.length());\n this.accommodate(src.byteLength);\n var dst = new Uint8Array(bytes.data.byteLength, this.write);\n dst.set(src);\n this.write += src.byteLength;\n return this;\n }\n\n if(bytes instanceof util.ByteStringBuffer) {\n // copy binary string and process as the same as a string parameter below\n bytes = bytes.data;\n encoding = 'binary';\n }\n\n // string conversion\n encoding = encoding || 'binary';\n if(typeof bytes === 'string') {\n var view;\n\n // decode from string\n if(encoding === 'hex') {\n this.accommodate(Math.ceil(bytes.length / 2));\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.hex.decode(bytes, view, this.write);\n return this;\n }\n if(encoding === 'base64') {\n this.accommodate(Math.ceil(bytes.length / 4) * 3);\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.base64.decode(bytes, view, this.write);\n return this;\n }\n\n // encode text as UTF-8 bytes\n if(encoding === 'utf8') {\n // encode as UTF-8 then decode string as raw binary\n bytes = util.encodeUtf8(bytes);\n encoding = 'binary';\n }\n\n // decode string as raw binary\n if(encoding === 'binary' || encoding === 'raw') {\n // one byte per character\n this.accommodate(bytes.length);\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.raw.decode(view);\n return this;\n }\n\n // encode text as UTF-16 bytes\n if(encoding === 'utf16') {\n // two bytes per character\n this.accommodate(bytes.length * 2);\n view = new Uint16Array(this.data.buffer, this.write);\n this.write += util.text.utf16.encode(view);\n return this;\n }\n\n throw new Error('Invalid encoding: ' + encoding);\n }\n\n throw Error('Invalid parameter: ' + bytes);\n};\n\n/**\n * Puts the given buffer into this buffer.\n *\n * @param buffer the buffer to put into this one.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putBuffer = function(buffer) {\n this.putBytes(buffer);\n buffer.clear();\n return this;\n};\n\n/**\n * Puts a string into this buffer.\n *\n * @param str the string to put.\n * @param [encoding] the encoding for the string (default: 'utf16').\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putString = function(str) {\n return this.putBytes(str, 'utf16');\n};\n\n/**\n * Puts a 16-bit integer in this buffer in big-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt16 = function(i) {\n this.accommodate(2);\n this.data.setInt16(this.write, i);\n this.write += 2;\n return this;\n};\n\n/**\n * Puts a 24-bit integer in this buffer in big-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt24 = function(i) {\n this.accommodate(3);\n this.data.setInt16(this.write, i >> 8 & 0xFFFF);\n this.data.setInt8(this.write, i >> 16 & 0xFF);\n this.write += 3;\n return this;\n};\n\n/**\n * Puts a 32-bit integer in this buffer in big-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt32 = function(i) {\n this.accommodate(4);\n this.data.setInt32(this.write, i);\n this.write += 4;\n return this;\n};\n\n/**\n * Puts a 16-bit integer in this buffer in little-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt16Le = function(i) {\n this.accommodate(2);\n this.data.setInt16(this.write, i, true);\n this.write += 2;\n return this;\n};\n\n/**\n * Puts a 24-bit integer in this buffer in little-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt24Le = function(i) {\n this.accommodate(3);\n this.data.setInt8(this.write, i >> 16 & 0xFF);\n this.data.setInt16(this.write, i >> 8 & 0xFFFF, true);\n this.write += 3;\n return this;\n};\n\n/**\n * Puts a 32-bit integer in this buffer in little-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt32Le = function(i) {\n this.accommodate(4);\n this.data.setInt32(this.write, i, true);\n this.write += 4;\n return this;\n};\n\n/**\n * Puts an n-bit integer in this buffer in big-endian order.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt = function(i, n) {\n _checkBitsParam(n);\n this.accommodate(n / 8);\n do {\n n -= 8;\n this.data.setInt8(this.write++, (i >> n) & 0xFF);\n } while(n > 0);\n return this;\n};\n\n/**\n * Puts a signed n-bit integer in this buffer in big-endian order. Two's\n * complement representation is used.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putSignedInt = function(i, n) {\n _checkBitsParam(n);\n this.accommodate(n / 8);\n if(i < 0) {\n i += 2 << (n - 1);\n }\n return this.putInt(i, n);\n};\n\n/**\n * Gets a byte from this buffer and advances the read pointer by 1.\n *\n * @return the byte.\n */\nutil.DataBuffer.prototype.getByte = function() {\n return this.data.getInt8(this.read++);\n};\n\n/**\n * Gets a uint16 from this buffer in big-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.DataBuffer.prototype.getInt16 = function() {\n var rval = this.data.getInt16(this.read);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in big-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.DataBuffer.prototype.getInt24 = function() {\n var rval = (\n this.data.getInt16(this.read) << 8 ^\n this.data.getInt8(this.read + 2));\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in big-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.DataBuffer.prototype.getInt32 = function() {\n var rval = this.data.getInt32(this.read);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets a uint16 from this buffer in little-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.DataBuffer.prototype.getInt16Le = function() {\n var rval = this.data.getInt16(this.read, true);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in little-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.DataBuffer.prototype.getInt24Le = function() {\n var rval = (\n this.data.getInt8(this.read) ^\n this.data.getInt16(this.read + 1, true) << 8);\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in little-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.DataBuffer.prototype.getInt32Le = function() {\n var rval = this.data.getInt32(this.read, true);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets an n-bit integer from this buffer in big-endian order and advances the\n * read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.DataBuffer.prototype.getInt = function(n) {\n _checkBitsParam(n);\n var rval = 0;\n do {\n // TODO: Use (rval * 0x100) if adding support for 33 to 53 bits.\n rval = (rval << 8) + this.data.getInt8(this.read++);\n n -= 8;\n } while(n > 0);\n return rval;\n};\n\n/**\n * Gets a signed n-bit integer from this buffer in big-endian order, using\n * two's complement, and advances the read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.DataBuffer.prototype.getSignedInt = function(n) {\n // getInt checks n\n var x = this.getInt(n);\n var max = 2 << (n - 2);\n if(x >= max) {\n x -= max << 1;\n }\n return x;\n};\n\n/**\n * Reads bytes out as a binary encoded string and clears them from the\n * buffer.\n *\n * @param count the number of bytes to read, undefined or null for all.\n *\n * @return a binary encoded string of bytes.\n */\nutil.DataBuffer.prototype.getBytes = function(count) {\n // TODO: deprecate this method, it is poorly named and\n // this.toString('binary') replaces it\n // add a toTypedArray()/toArrayBuffer() function\n var rval;\n if(count) {\n // read count bytes\n count = Math.min(this.length(), count);\n rval = this.data.slice(this.read, this.read + count);\n this.read += count;\n } else if(count === 0) {\n rval = '';\n } else {\n // read all bytes, optimize to only copy when needed\n rval = (this.read === 0) ? this.data : this.data.slice(this.read);\n this.clear();\n }\n return rval;\n};\n\n/**\n * Gets a binary encoded string of the bytes from this buffer without\n * modifying the read pointer.\n *\n * @param count the number of bytes to get, omit to get all.\n *\n * @return a string full of binary encoded characters.\n */\nutil.DataBuffer.prototype.bytes = function(count) {\n // TODO: deprecate this method, it is poorly named, add \"getString()\"\n return (typeof(count) === 'undefined' ?\n this.data.slice(this.read) :\n this.data.slice(this.read, this.read + count));\n};\n\n/**\n * Gets a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n *\n * @return the byte.\n */\nutil.DataBuffer.prototype.at = function(i) {\n return this.data.getUint8(this.read + i);\n};\n\n/**\n * Puts a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.setAt = function(i, b) {\n this.data.setUint8(i, b);\n return this;\n};\n\n/**\n * Gets the last byte without modifying the read pointer.\n *\n * @return the last byte.\n */\nutil.DataBuffer.prototype.last = function() {\n return this.data.getUint8(this.write - 1);\n};\n\n/**\n * Creates a copy of this buffer.\n *\n * @return the copy.\n */\nutil.DataBuffer.prototype.copy = function() {\n return new util.DataBuffer(this);\n};\n\n/**\n * Compacts this buffer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.compact = function() {\n if(this.read > 0) {\n var src = new Uint8Array(this.data.buffer, this.read);\n var dst = new Uint8Array(src.byteLength);\n dst.set(src);\n this.data = new DataView(dst);\n this.write -= this.read;\n this.read = 0;\n }\n return this;\n};\n\n/**\n * Clears this buffer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.clear = function() {\n this.data = new DataView(new ArrayBuffer(0));\n this.read = this.write = 0;\n return this;\n};\n\n/**\n * Shortens this buffer by triming bytes off of the end of this buffer.\n *\n * @param count the number of bytes to trim off.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.truncate = function(count) {\n this.write = Math.max(0, this.length() - count);\n this.read = Math.min(this.read, this.write);\n return this;\n};\n\n/**\n * Converts this buffer to a hexadecimal string.\n *\n * @return a hexadecimal string.\n */\nutil.DataBuffer.prototype.toHex = function() {\n var rval = '';\n for(var i = this.read; i < this.data.byteLength; ++i) {\n var b = this.data.getUint8(i);\n if(b < 16) {\n rval += '0';\n }\n rval += b.toString(16);\n }\n return rval;\n};\n\n/**\n * Converts this buffer to a string, using the given encoding. If no\n * encoding is given, 'utf8' (UTF-8) is used.\n *\n * @param [encoding] the encoding to use: 'binary', 'utf8', 'utf16', 'hex',\n * 'base64' (default: 'utf8').\n *\n * @return a string representation of the bytes in this buffer.\n */\nutil.DataBuffer.prototype.toString = function(encoding) {\n var view = new Uint8Array(this.data, this.read, this.length());\n encoding = encoding || 'utf8';\n\n // encode to string\n if(encoding === 'binary' || encoding === 'raw') {\n return util.binary.raw.encode(view);\n }\n if(encoding === 'hex') {\n return util.binary.hex.encode(view);\n }\n if(encoding === 'base64') {\n return util.binary.base64.encode(view);\n }\n\n // decode to text\n if(encoding === 'utf8') {\n return util.text.utf8.decode(view);\n }\n if(encoding === 'utf16') {\n return util.text.utf16.decode(view);\n }\n\n throw new Error('Invalid encoding: ' + encoding);\n};\n\n/** End Buffer w/UInt8Array backing */\n\n/**\n * Creates a buffer that stores bytes. A value may be given to populate the\n * buffer with data. This value can either be string of encoded bytes or a\n * regular string of characters. When passing a string of binary encoded\n * bytes, the encoding `raw` should be given. This is also the default. When\n * passing a string of characters, the encoding `utf8` should be given.\n *\n * @param [input] a string with encoded bytes to store in the buffer.\n * @param [encoding] (default: 'raw', other: 'utf8').\n */\nutil.createBuffer = function(input, encoding) {\n // TODO: deprecate, use new ByteBuffer() instead\n encoding = encoding || 'raw';\n if(input !== undefined && encoding === 'utf8') {\n input = util.encodeUtf8(input);\n }\n return new util.ByteBuffer(input);\n};\n\n/**\n * Fills a string with a particular value. If you want the string to be a byte\n * string, pass in String.fromCharCode(theByte).\n *\n * @param c the character to fill the string with, use String.fromCharCode\n * to fill the string with a byte value.\n * @param n the number of characters of value c to fill with.\n *\n * @return the filled string.\n */\nutil.fillString = function(c, n) {\n var s = '';\n while(n > 0) {\n if(n & 1) {\n s += c;\n }\n n >>>= 1;\n if(n > 0) {\n c += c;\n }\n }\n return s;\n};\n\n/**\n * Performs a per byte XOR between two byte strings and returns the result as a\n * string of bytes.\n *\n * @param s1 first string of bytes.\n * @param s2 second string of bytes.\n * @param n the number of bytes to XOR.\n *\n * @return the XOR'd result.\n */\nutil.xorBytes = function(s1, s2, n) {\n var s3 = '';\n var b = '';\n var t = '';\n var i = 0;\n var c = 0;\n for(; n > 0; --n, ++i) {\n b = s1.charCodeAt(i) ^ s2.charCodeAt(i);\n if(c >= 10) {\n s3 += t;\n t = '';\n c = 0;\n }\n t += String.fromCharCode(b);\n ++c;\n }\n s3 += t;\n return s3;\n};\n\n/**\n * Converts a hex string into a 'binary' encoded string of bytes.\n *\n * @param hex the hexadecimal string to convert.\n *\n * @return the binary-encoded string of bytes.\n */\nutil.hexToBytes = function(hex) {\n // TODO: deprecate: \"Deprecated. Use util.binary.hex.decode instead.\"\n var rval = '';\n var i = 0;\n if(hex.length & 1 == 1) {\n // odd number of characters, convert first character alone\n i = 1;\n rval += String.fromCharCode(parseInt(hex[0], 16));\n }\n // convert 2 characters (1 byte) at a time\n for(; i < hex.length; i += 2) {\n rval += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n }\n return rval;\n};\n\n/**\n * Converts a 'binary' encoded string of bytes to hex.\n *\n * @param bytes the byte string to convert.\n *\n * @return the string of hexadecimal characters.\n */\nutil.bytesToHex = function(bytes) {\n // TODO: deprecate: \"Deprecated. Use util.binary.hex.encode instead.\"\n return util.createBuffer(bytes).toHex();\n};\n\n/**\n * Converts an 32-bit integer to 4-big-endian byte string.\n *\n * @param i the integer.\n *\n * @return the byte string.\n */\nutil.int32ToBytes = function(i) {\n return (\n String.fromCharCode(i >> 24 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n// base64 characters, reverse mapping\nvar _base64 =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nvar _base64Idx = [\n/*43 -43 = 0*/\n/*'+', 1, 2, 3,'/' */\n 62, -1, -1, -1, 63,\n\n/*'0','1','2','3','4','5','6','7','8','9' */\n 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,\n\n/*15, 16, 17,'=', 19, 20, 21 */\n -1, -1, -1, 64, -1, -1, -1,\n\n/*65 - 43 = 22*/\n/*'A','B','C','D','E','F','G','H','I','J','K','L','M', */\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,\n\n/*'N','O','P','Q','R','S','T','U','V','W','X','Y','Z' */\n 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\n\n/*91 - 43 = 48 */\n/*48, 49, 50, 51, 52, 53 */\n -1, -1, -1, -1, -1, -1,\n\n/*97 - 43 = 54*/\n/*'a','b','c','d','e','f','g','h','i','j','k','l','m' */\n 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,\n\n/*'n','o','p','q','r','s','t','u','v','w','x','y','z' */\n 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51\n];\n\n// base58 characters (Bitcoin alphabet)\nvar _base58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\n/**\n * Base64 encodes a 'binary' encoded string of bytes.\n *\n * @param input the binary encoded string of bytes to base64-encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the base64-encoded output.\n */\nutil.encode64 = function(input, maxline) {\n // TODO: deprecate: \"Deprecated. Use util.binary.base64.encode instead.\"\n var line = '';\n var output = '';\n var chr1, chr2, chr3;\n var i = 0;\n while(i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n // encode 4 character group\n line += _base64.charAt(chr1 >> 2);\n line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));\n if(isNaN(chr2)) {\n line += '==';\n } else {\n line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));\n line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);\n }\n\n if(maxline && line.length > maxline) {\n output += line.substr(0, maxline) + '\\r\\n';\n line = line.substr(maxline);\n }\n }\n output += line;\n return output;\n};\n\n/**\n * Base64 decodes a string into a 'binary' encoded string of bytes.\n *\n * @param input the base64-encoded input.\n *\n * @return the binary encoded string.\n */\nutil.decode64 = function(input) {\n // TODO: deprecate: \"Deprecated. Use util.binary.base64.decode instead.\"\n\n // remove all non-base64 characters\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\n var output = '';\n var enc1, enc2, enc3, enc4;\n var i = 0;\n\n while(i < input.length) {\n enc1 = _base64Idx[input.charCodeAt(i++) - 43];\n enc2 = _base64Idx[input.charCodeAt(i++) - 43];\n enc3 = _base64Idx[input.charCodeAt(i++) - 43];\n enc4 = _base64Idx[input.charCodeAt(i++) - 43];\n\n output += String.fromCharCode((enc1 << 2) | (enc2 >> 4));\n if(enc3 !== 64) {\n // decoded at least 2 bytes\n output += String.fromCharCode(((enc2 & 15) << 4) | (enc3 >> 2));\n if(enc4 !== 64) {\n // decoded 3 bytes\n output += String.fromCharCode(((enc3 & 3) << 6) | enc4);\n }\n }\n }\n\n return output;\n};\n\n/**\n * Encodes the given string of characters (a standard JavaScript\n * string) as a binary encoded string where the bytes represent\n * a UTF-8 encoded string of characters. Non-ASCII characters will be\n * encoded as multiple bytes according to UTF-8.\n *\n * @param str a standard string of characters to encode.\n *\n * @return the binary encoded string.\n */\nutil.encodeUtf8 = function(str) {\n return unescape(encodeURIComponent(str));\n};\n\n/**\n * Decodes a binary encoded string that contains bytes that\n * represent a UTF-8 encoded string of characters -- into a\n * string of characters (a standard JavaScript string).\n *\n * @param str the binary encoded string to decode.\n *\n * @return the resulting standard string of characters.\n */\nutil.decodeUtf8 = function(str) {\n return decodeURIComponent(escape(str));\n};\n\n// binary encoding/decoding tools\n// FIXME: Experimental. Do not use yet.\nutil.binary = {\n raw: {},\n hex: {},\n base64: {},\n base58: {},\n baseN : {\n encode: baseN.encode,\n decode: baseN.decode\n }\n};\n\n/**\n * Encodes a Uint8Array as a binary-encoded string. This encoding uses\n * a value between 0 and 255 for each character.\n *\n * @param bytes the Uint8Array to encode.\n *\n * @return the binary-encoded string.\n */\nutil.binary.raw.encode = function(bytes) {\n return String.fromCharCode.apply(null, bytes);\n};\n\n/**\n * Decodes a binary-encoded string to a Uint8Array. This encoding uses\n * a value between 0 and 255 for each character.\n *\n * @param str the binary-encoded string to decode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.raw.decode = function(str, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length);\n }\n offset = offset || 0;\n var j = offset;\n for(var i = 0; i < str.length; ++i) {\n out[j++] = str.charCodeAt(i);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Encodes a 'binary' string, ArrayBuffer, DataView, TypedArray, or\n * ByteBuffer as a string of hexadecimal characters.\n *\n * @param bytes the bytes to convert.\n *\n * @return the string of hexadecimal characters.\n */\nutil.binary.hex.encode = util.bytesToHex;\n\n/**\n * Decodes a hex-encoded string to a Uint8Array.\n *\n * @param hex the hexadecimal string to convert.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.hex.decode = function(hex, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(Math.ceil(hex.length / 2));\n }\n offset = offset || 0;\n var i = 0, j = offset;\n if(hex.length & 1) {\n // odd number of characters, convert first character alone\n i = 1;\n out[j++] = parseInt(hex[0], 16);\n }\n // convert 2 characters (1 byte) at a time\n for(; i < hex.length; i += 2) {\n out[j++] = parseInt(hex.substr(i, 2), 16);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Base64-encodes a Uint8Array.\n *\n * @param input the Uint8Array to encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the base64-encoded output string.\n */\nutil.binary.base64.encode = function(input, maxline) {\n var line = '';\n var output = '';\n var chr1, chr2, chr3;\n var i = 0;\n while(i < input.byteLength) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n\n // encode 4 character group\n line += _base64.charAt(chr1 >> 2);\n line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));\n if(isNaN(chr2)) {\n line += '==';\n } else {\n line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));\n line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);\n }\n\n if(maxline && line.length > maxline) {\n output += line.substr(0, maxline) + '\\r\\n';\n line = line.substr(maxline);\n }\n }\n output += line;\n return output;\n};\n\n/**\n * Decodes a base64-encoded string to a Uint8Array.\n *\n * @param input the base64-encoded input string.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.base64.decode = function(input, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(Math.ceil(input.length / 4) * 3);\n }\n\n // remove all non-base64 characters\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\n offset = offset || 0;\n var enc1, enc2, enc3, enc4;\n var i = 0, j = offset;\n\n while(i < input.length) {\n enc1 = _base64Idx[input.charCodeAt(i++) - 43];\n enc2 = _base64Idx[input.charCodeAt(i++) - 43];\n enc3 = _base64Idx[input.charCodeAt(i++) - 43];\n enc4 = _base64Idx[input.charCodeAt(i++) - 43];\n\n out[j++] = (enc1 << 2) | (enc2 >> 4);\n if(enc3 !== 64) {\n // decoded at least 2 bytes\n out[j++] = ((enc2 & 15) << 4) | (enc3 >> 2);\n if(enc4 !== 64) {\n // decoded 3 bytes\n out[j++] = ((enc3 & 3) << 6) | enc4;\n }\n }\n }\n\n // make sure result is the exact decoded length\n return output ? (j - offset) : out.subarray(0, j);\n};\n\n// add support for base58 encoding/decoding with Bitcoin alphabet\nutil.binary.base58.encode = function(input, maxline) {\n return util.binary.baseN.encode(input, _base58, maxline);\n};\nutil.binary.base58.decode = function(input, maxline) {\n return util.binary.baseN.decode(input, _base58, maxline);\n};\n\n// text encoding/decoding tools\n// FIXME: Experimental. Do not use yet.\nutil.text = {\n utf8: {},\n utf16: {}\n};\n\n/**\n * Encodes the given string as UTF-8 in a Uint8Array.\n *\n * @param str the string to encode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.text.utf8.encode = function(str, output, offset) {\n str = util.encodeUtf8(str);\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length);\n }\n offset = offset || 0;\n var j = offset;\n for(var i = 0; i < str.length; ++i) {\n out[j++] = str.charCodeAt(i);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Decodes the UTF-8 contents from a Uint8Array.\n *\n * @param bytes the Uint8Array to decode.\n *\n * @return the resulting string.\n */\nutil.text.utf8.decode = function(bytes) {\n return util.decodeUtf8(String.fromCharCode.apply(null, bytes));\n};\n\n/**\n * Encodes the given string as UTF-16 in a Uint8Array.\n *\n * @param str the string to encode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.text.utf16.encode = function(str, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length * 2);\n }\n var view = new Uint16Array(out.buffer);\n offset = offset || 0;\n var j = offset;\n var k = offset;\n for(var i = 0; i < str.length; ++i) {\n view[k++] = str.charCodeAt(i);\n j += 2;\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Decodes the UTF-16 contents from a Uint8Array.\n *\n * @param bytes the Uint8Array to decode.\n *\n * @return the resulting string.\n */\nutil.text.utf16.decode = function(bytes) {\n return String.fromCharCode.apply(null, new Uint16Array(bytes.buffer));\n};\n\n/**\n * Deflates the given data using a flash interface.\n *\n * @param api the flash interface.\n * @param bytes the data.\n * @param raw true to return only raw deflate data, false to include zlib\n * header and trailer.\n *\n * @return the deflated data as a string.\n */\nutil.deflate = function(api, bytes, raw) {\n bytes = util.decode64(api.deflate(util.encode64(bytes)).rval);\n\n // strip zlib header and trailer if necessary\n if(raw) {\n // zlib header is 2 bytes (CMF,FLG) where FLG indicates that\n // there is a 4-byte DICT (alder-32) block before the data if\n // its 5th bit is set\n var start = 2;\n var flg = bytes.charCodeAt(1);\n if(flg & 0x20) {\n start = 6;\n }\n // zlib trailer is 4 bytes of adler-32\n bytes = bytes.substring(start, bytes.length - 4);\n }\n\n return bytes;\n};\n\n/**\n * Inflates the given data using a flash interface.\n *\n * @param api the flash interface.\n * @param bytes the data.\n * @param raw true if the incoming data has no zlib header or trailer and is\n * raw DEFLATE data.\n *\n * @return the inflated data as a string, null on error.\n */\nutil.inflate = function(api, bytes, raw) {\n // TODO: add zlib header and trailer if necessary/possible\n var rval = api.inflate(util.encode64(bytes)).rval;\n return (rval === null) ? null : util.decode64(rval);\n};\n\n/**\n * Sets a storage object.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param obj the storage object, null to remove.\n */\nvar _setStorageObject = function(api, id, obj) {\n if(!api) {\n throw new Error('WebStorage not available.');\n }\n\n var rval;\n if(obj === null) {\n rval = api.removeItem(id);\n } else {\n // json-encode and base64-encode object\n obj = util.encode64(JSON.stringify(obj));\n rval = api.setItem(id, obj);\n }\n\n // handle potential flash error\n if(typeof(rval) !== 'undefined' && rval.rval !== true) {\n var error = new Error(rval.error.message);\n error.id = rval.error.id;\n error.name = rval.error.name;\n throw error;\n }\n};\n\n/**\n * Gets a storage object.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n *\n * @return the storage object entry or null if none exists.\n */\nvar _getStorageObject = function(api, id) {\n if(!api) {\n throw new Error('WebStorage not available.');\n }\n\n // get the existing entry\n var rval = api.getItem(id);\n\n /* Note: We check api.init because we can't do (api == localStorage)\n on IE because of \"Class doesn't support Automation\" exception. Only\n the flash api has an init method so this works too, but we need a\n better solution in the future. */\n\n // flash returns item wrapped in an object, handle special case\n if(api.init) {\n if(rval.rval === null) {\n if(rval.error) {\n var error = new Error(rval.error.message);\n error.id = rval.error.id;\n error.name = rval.error.name;\n throw error;\n }\n // no error, but also no item\n rval = null;\n } else {\n rval = rval.rval;\n }\n }\n\n // handle decoding\n if(rval !== null) {\n // base64-decode and json-decode data\n rval = JSON.parse(util.decode64(rval));\n }\n\n return rval;\n};\n\n/**\n * Stores an item in local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param data the data for the item (any javascript object/primitive).\n */\nvar _setItem = function(api, id, key, data) {\n // get storage object\n var obj = _getStorageObject(api, id);\n if(obj === null) {\n // create a new storage object\n obj = {};\n }\n // update key\n obj[key] = data;\n\n // set storage object\n _setStorageObject(api, id, obj);\n};\n\n/**\n * Gets an item from local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n *\n * @return the item.\n */\nvar _getItem = function(api, id, key) {\n // get storage object\n var rval = _getStorageObject(api, id);\n if(rval !== null) {\n // return data at key\n rval = (key in rval) ? rval[key] : null;\n }\n\n return rval;\n};\n\n/**\n * Removes an item from local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n */\nvar _removeItem = function(api, id, key) {\n // get storage object\n var obj = _getStorageObject(api, id);\n if(obj !== null && key in obj) {\n // remove key\n delete obj[key];\n\n // see if entry has no keys remaining\n var empty = true;\n for(var prop in obj) {\n empty = false;\n break;\n }\n if(empty) {\n // remove entry entirely if no keys are left\n obj = null;\n }\n\n // set storage object\n _setStorageObject(api, id, obj);\n }\n};\n\n/**\n * Clears the local disk storage identified by the given ID.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n */\nvar _clearItems = function(api, id) {\n _setStorageObject(api, id, null);\n};\n\n/**\n * Calls a storage function.\n *\n * @param func the function to call.\n * @param args the arguments for the function.\n * @param location the location argument.\n *\n * @return the return value from the function.\n */\nvar _callStorageFunction = function(func, args, location) {\n var rval = null;\n\n // default storage types\n if(typeof(location) === 'undefined') {\n location = ['web', 'flash'];\n }\n\n // apply storage types in order of preference\n var type;\n var done = false;\n var exception = null;\n for(var idx in location) {\n type = location[idx];\n try {\n if(type === 'flash' || type === 'both') {\n if(args[0] === null) {\n throw new Error('Flash local storage not available.');\n }\n rval = func.apply(this, args);\n done = (type === 'flash');\n }\n if(type === 'web' || type === 'both') {\n args[0] = localStorage;\n rval = func.apply(this, args);\n done = true;\n }\n } catch(ex) {\n exception = ex;\n }\n if(done) {\n break;\n }\n }\n\n if(!done) {\n throw exception;\n }\n\n return rval;\n};\n\n/**\n * Stores an item on local disk.\n *\n * The available types of local storage include 'flash', 'web', and 'both'.\n *\n * The type 'flash' refers to flash local storage (SharedObject). In order\n * to use flash local storage, the 'api' parameter must be valid. The type\n * 'web' refers to WebStorage, if supported by the browser. The type 'both'\n * refers to storing using both 'flash' and 'web', not just one or the\n * other.\n *\n * The location array should list the storage types to use in order of\n * preference:\n *\n * ['flash']: flash only storage\n * ['web']: web only storage\n * ['both']: try to store in both\n * ['flash','web']: store in flash first, but if not available, 'web'\n * ['web','flash']: store in web first, but if not available, 'flash'\n *\n * The location array defaults to: ['web', 'flash']\n *\n * @param api the flash interface, null to use only WebStorage.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param data the data for the item (any javascript object/primitive).\n * @param location an array with the preferred types of storage to use.\n */\nutil.setItem = function(api, id, key, data, location) {\n _callStorageFunction(_setItem, arguments, location);\n};\n\n/**\n * Gets an item on local disk.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface, null to use only WebStorage.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param location an array with the preferred types of storage to use.\n *\n * @return the item.\n */\nutil.getItem = function(api, id, key, location) {\n return _callStorageFunction(_getItem, arguments, location);\n};\n\n/**\n * Removes an item on local disk.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param location an array with the preferred types of storage to use.\n */\nutil.removeItem = function(api, id, key, location) {\n _callStorageFunction(_removeItem, arguments, location);\n};\n\n/**\n * Clears the local disk storage identified by the given ID.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface if flash is available.\n * @param id the storage ID to use.\n * @param location an array with the preferred types of storage to use.\n */\nutil.clearItems = function(api, id, location) {\n _callStorageFunction(_clearItems, arguments, location);\n};\n\n/**\n * Check if an object is empty.\n *\n * Taken from:\n * http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object-from-json/679937#679937\n *\n * @param object the object to check.\n */\nutil.isEmpty = function(obj) {\n for(var prop in obj) {\n if(obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Format with simple printf-style interpolation.\n *\n * %%: literal '%'\n * %s,%o: convert next argument into a string.\n *\n * @param format the string to format.\n * @param ... arguments to interpolate into the format string.\n */\nutil.format = function(format) {\n var re = /%./g;\n // current match\n var match;\n // current part\n var part;\n // current arg index\n var argi = 0;\n // collected parts to recombine later\n var parts = [];\n // last index found\n var last = 0;\n // loop while matches remain\n while((match = re.exec(format))) {\n part = format.substring(last, re.lastIndex - 2);\n // don't add empty strings (ie, parts between %s%s)\n if(part.length > 0) {\n parts.push(part);\n }\n last = re.lastIndex;\n // switch on % code\n var code = match[0][1];\n switch(code) {\n case 's':\n case 'o':\n // check if enough arguments were given\n if(argi < arguments.length) {\n parts.push(arguments[argi++ + 1]);\n } else {\n parts.push('');\n }\n break;\n // FIXME: do proper formating for numbers, etc\n //case 'f':\n //case 'd':\n case '%':\n parts.push('%');\n break;\n default:\n parts.push('<%' + code + '?>');\n }\n }\n // add trailing part of format string\n parts.push(format.substring(last));\n return parts.join('');\n};\n\n/**\n * Formats a number.\n *\n * http://snipplr.com/view/5945/javascript-numberformat--ported-from-php/\n */\nutil.formatNumber = function(number, decimals, dec_point, thousands_sep) {\n // http://kevin.vanzonneveld.net\n // + original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfix by: Michael White (http://crestidg.com)\n // + bugfix by: Benjamin Lupton\n // + bugfix by: Allan Jensen (http://www.winternet.no)\n // + revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\n // * example 1: number_format(1234.5678, 2, '.', '');\n // * returns 1: 1234.57\n\n var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;\n var d = dec_point === undefined ? ',' : dec_point;\n var t = thousands_sep === undefined ?\n '.' : thousands_sep, s = n < 0 ? '-' : '';\n var i = parseInt((n = Math.abs(+n || 0).toFixed(c)), 10) + '';\n var j = (i.length > 3) ? i.length % 3 : 0;\n return s + (j ? i.substr(0, j) + t : '') +\n i.substr(j).replace(/(\\d{3})(?=\\d)/g, '$1' + t) +\n (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '');\n};\n\n/**\n * Formats a byte size.\n *\n * http://snipplr.com/view/5949/format-humanize-file-byte-size-presentation-in-javascript/\n */\nutil.formatSize = function(size) {\n if(size >= 1073741824) {\n size = util.formatNumber(size / 1073741824, 2, '.', '') + ' GiB';\n } else if(size >= 1048576) {\n size = util.formatNumber(size / 1048576, 2, '.', '') + ' MiB';\n } else if(size >= 1024) {\n size = util.formatNumber(size / 1024, 0) + ' KiB';\n } else {\n size = util.formatNumber(size, 0) + ' bytes';\n }\n return size;\n};\n\n/**\n * Converts an IPv4 or IPv6 string representation into bytes (in network order).\n *\n * @param ip the IPv4 or IPv6 address to convert.\n *\n * @return the 4-byte IPv6 or 16-byte IPv6 address or null if the address can't\n * be parsed.\n */\nutil.bytesFromIP = function(ip) {\n if(ip.indexOf('.') !== -1) {\n return util.bytesFromIPv4(ip);\n }\n if(ip.indexOf(':') !== -1) {\n return util.bytesFromIPv6(ip);\n }\n return null;\n};\n\n/**\n * Converts an IPv4 string representation into bytes (in network order).\n *\n * @param ip the IPv4 address to convert.\n *\n * @return the 4-byte address or null if the address can't be parsed.\n */\nutil.bytesFromIPv4 = function(ip) {\n ip = ip.split('.');\n if(ip.length !== 4) {\n return null;\n }\n var b = util.createBuffer();\n for(var i = 0; i < ip.length; ++i) {\n var num = parseInt(ip[i], 10);\n if(isNaN(num)) {\n return null;\n }\n b.putByte(num);\n }\n return b.getBytes();\n};\n\n/**\n * Converts an IPv6 string representation into bytes (in network order).\n *\n * @param ip the IPv6 address to convert.\n *\n * @return the 16-byte address or null if the address can't be parsed.\n */\nutil.bytesFromIPv6 = function(ip) {\n var blanks = 0;\n ip = ip.split(':').filter(function(e) {\n if(e.length === 0) ++blanks;\n return true;\n });\n var zeros = (8 - ip.length + blanks) * 2;\n var b = util.createBuffer();\n for(var i = 0; i < 8; ++i) {\n if(!ip[i] || ip[i].length === 0) {\n b.fillWithByte(0, zeros);\n zeros = 0;\n continue;\n }\n var bytes = util.hexToBytes(ip[i]);\n if(bytes.length < 2) {\n b.putByte(0);\n }\n b.putBytes(bytes);\n }\n return b.getBytes();\n};\n\n/**\n * Converts 4-bytes into an IPv4 string representation or 16-bytes into\n * an IPv6 string representation. The bytes must be in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv4 or IPv6 string representation if 4 or 16 bytes,\n * respectively, are given, otherwise null.\n */\nutil.bytesToIP = function(bytes) {\n if(bytes.length === 4) {\n return util.bytesToIPv4(bytes);\n }\n if(bytes.length === 16) {\n return util.bytesToIPv6(bytes);\n }\n return null;\n};\n\n/**\n * Converts 4-bytes into an IPv4 string representation. The bytes must be\n * in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv4 string representation or null for an invalid # of bytes.\n */\nutil.bytesToIPv4 = function(bytes) {\n if(bytes.length !== 4) {\n return null;\n }\n var ip = [];\n for(var i = 0; i < bytes.length; ++i) {\n ip.push(bytes.charCodeAt(i));\n }\n return ip.join('.');\n};\n\n/**\n * Converts 16-bytes into an IPv16 string representation. The bytes must be\n * in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv16 string representation or null for an invalid # of bytes.\n */\nutil.bytesToIPv6 = function(bytes) {\n if(bytes.length !== 16) {\n return null;\n }\n var ip = [];\n var zeroGroups = [];\n var zeroMaxGroup = 0;\n for(var i = 0; i < bytes.length; i += 2) {\n var hex = util.bytesToHex(bytes[i] + bytes[i + 1]);\n // canonicalize zero representation\n while(hex[0] === '0' && hex !== '0') {\n hex = hex.substr(1);\n }\n if(hex === '0') {\n var last = zeroGroups[zeroGroups.length - 1];\n var idx = ip.length;\n if(!last || idx !== last.end + 1) {\n zeroGroups.push({start: idx, end: idx});\n } else {\n last.end = idx;\n if((last.end - last.start) >\n (zeroGroups[zeroMaxGroup].end - zeroGroups[zeroMaxGroup].start)) {\n zeroMaxGroup = zeroGroups.length - 1;\n }\n }\n }\n ip.push(hex);\n }\n if(zeroGroups.length > 0) {\n var group = zeroGroups[zeroMaxGroup];\n // only shorten group of length > 0\n if(group.end - group.start > 0) {\n ip.splice(group.start, group.end - group.start + 1, '');\n if(group.start === 0) {\n ip.unshift('');\n }\n if(group.end === 7) {\n ip.push('');\n }\n }\n }\n return ip.join(':');\n};\n\n/**\n * Estimates the number of processes that can be run concurrently. If\n * creating Web Workers, keep in mind that the main JavaScript process needs\n * its own core.\n *\n * @param options the options to use:\n * update true to force an update (not use the cached value).\n * @param callback(err, max) called once the operation completes.\n */\nutil.estimateCores = function(options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n if('cores' in util && !options.update) {\n return callback(null, util.cores);\n }\n if(typeof navigator !== 'undefined' &&\n 'hardwareConcurrency' in navigator &&\n navigator.hardwareConcurrency > 0) {\n util.cores = navigator.hardwareConcurrency;\n return callback(null, util.cores);\n }\n if(typeof Worker === 'undefined') {\n // workers not available\n util.cores = 1;\n return callback(null, util.cores);\n }\n if(typeof Blob === 'undefined') {\n // can't estimate, default to 2\n util.cores = 2;\n return callback(null, util.cores);\n }\n\n // create worker concurrency estimation code as blob\n var blobUrl = URL.createObjectURL(new Blob(['(',\n function() {\n self.addEventListener('message', function(e) {\n // run worker for 4 ms\n var st = Date.now();\n var et = st + 4;\n while(Date.now() < et);\n self.postMessage({st: st, et: et});\n });\n }.toString(),\n ')()'], {type: 'application/javascript'}));\n\n // take 5 samples using 16 workers\n sample([], 5, 16);\n\n function sample(max, samples, numWorkers) {\n if(samples === 0) {\n // get overlap average\n var avg = Math.floor(max.reduce(function(avg, x) {\n return avg + x;\n }, 0) / max.length);\n util.cores = Math.max(1, avg);\n URL.revokeObjectURL(blobUrl);\n return callback(null, util.cores);\n }\n map(numWorkers, function(err, results) {\n max.push(reduce(numWorkers, results));\n sample(max, samples - 1, numWorkers);\n });\n }\n\n function map(numWorkers, callback) {\n var workers = [];\n var results = [];\n for(var i = 0; i < numWorkers; ++i) {\n var worker = new Worker(blobUrl);\n worker.addEventListener('message', function(e) {\n results.push(e.data);\n if(results.length === numWorkers) {\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].terminate();\n }\n callback(null, results);\n }\n });\n workers.push(worker);\n }\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].postMessage(i);\n }\n }\n\n function reduce(numWorkers, results) {\n // find overlapping time windows\n var overlaps = [];\n for(var n = 0; n < numWorkers; ++n) {\n var r1 = results[n];\n var overlap = overlaps[n] = [];\n for(var i = 0; i < numWorkers; ++i) {\n if(n === i) {\n continue;\n }\n var r2 = results[i];\n if((r1.st > r2.st && r1.st < r2.et) ||\n (r2.st > r1.st && r2.st < r1.et)) {\n overlap.push(i);\n }\n }\n }\n // get maximum overlaps ... don't include overlapping worker itself\n // as the main JS process was also being scheduled during the work and\n // would have to be subtracted from the estimate anyway\n return overlaps.reduce(function(max, overlap) {\n return Math.max(max, overlap.length);\n }, 0);\n }\n};\n","/**\n * Cipher base API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nmodule.exports = forge.cipher = forge.cipher || {};\n\n// registered algorithms\nforge.cipher.algorithms = forge.cipher.algorithms || {};\n\n/**\n * Creates a cipher object that can be used to encrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createCipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: false\n });\n};\n\n/**\n * Creates a decipher object that can be used to decrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createDecipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: true\n });\n};\n\n/**\n * Registers an algorithm by name. If the name was already registered, the\n * algorithm API object will be overwritten.\n *\n * @param name the name of the algorithm.\n * @param algorithm the algorithm API object.\n */\nforge.cipher.registerAlgorithm = function(name, algorithm) {\n name = name.toUpperCase();\n forge.cipher.algorithms[name] = algorithm;\n};\n\n/**\n * Gets a registered algorithm by name.\n *\n * @param name the name of the algorithm.\n *\n * @return the algorithm, if found, null if not.\n */\nforge.cipher.getAlgorithm = function(name) {\n name = name.toUpperCase();\n if(name in forge.cipher.algorithms) {\n return forge.cipher.algorithms[name];\n }\n return null;\n};\n\nvar BlockCipher = forge.cipher.BlockCipher = function(options) {\n this.algorithm = options.algorithm;\n this.mode = this.algorithm.mode;\n this.blockSize = this.mode.blockSize;\n this._finish = false;\n this._input = null;\n this.output = null;\n this._op = options.decrypt ? this.mode.decrypt : this.mode.encrypt;\n this._decrypt = options.decrypt;\n this.algorithm.initialize(options);\n};\n\n/**\n * Starts or restarts the encryption or decryption process, whichever\n * was previously configured.\n *\n * For non-GCM mode, the IV may be a binary-encoded string of bytes, an array\n * of bytes, a byte buffer, or an array of 32-bit integers. If the IV is in\n * bytes, then it must be Nb (16) bytes in length. If the IV is given in as\n * 32-bit integers, then it must be 4 integers long.\n *\n * Note: an IV is not required or used in ECB mode.\n *\n * For GCM-mode, the IV must be given as a binary-encoded string of bytes or\n * a byte buffer. The number of bytes should be 12 (96 bits) as recommended\n * by NIST SP-800-38D but another length may be given.\n *\n * @param options the options to use:\n * iv the initialization vector to use as a binary-encoded string of\n * bytes, null to reuse the last ciphered block from a previous\n * update() (this \"residue\" method is for legacy support only).\n * additionalData additional authentication data as a binary-encoded\n * string of bytes, for 'GCM' mode, (default: none).\n * tagLength desired length of authentication tag, in bits, for\n * 'GCM' mode (0-128, default: 128).\n * tag the authentication tag to check if decrypting, as a\n * binary-encoded string of bytes.\n * output the output the buffer to write to, null to create one.\n */\nBlockCipher.prototype.start = function(options) {\n options = options || {};\n var opts = {};\n for(var key in options) {\n opts[key] = options[key];\n }\n opts.decrypt = this._decrypt;\n this._finish = false;\n this._input = forge.util.createBuffer();\n this.output = options.output || forge.util.createBuffer();\n this.mode.start(opts);\n};\n\n/**\n * Updates the next block according to the cipher mode.\n *\n * @param input the buffer to read from.\n */\nBlockCipher.prototype.update = function(input) {\n if(input) {\n // input given, so empty it into the input buffer\n this._input.putBuffer(input);\n }\n\n // do cipher operation until it needs more input and not finished\n while(!this._op.call(this.mode, this._input, this.output, this._finish) &&\n !this._finish) {}\n\n // free consumed memory from input buffer\n this._input.compact();\n};\n\n/**\n * Finishes encrypting or decrypting.\n *\n * @param pad a padding function to use in CBC mode, null for default,\n * signature(blockSize, buffer, decrypt).\n *\n * @return true if successful, false on error.\n */\nBlockCipher.prototype.finish = function(pad) {\n // backwards-compatibility w/deprecated padding API\n // Note: will overwrite padding functions even after another start() call\n if(pad && (this.mode.name === 'ECB' || this.mode.name === 'CBC')) {\n this.mode.pad = function(input) {\n return pad(this.blockSize, input, false);\n };\n this.mode.unpad = function(output) {\n return pad(this.blockSize, output, true);\n };\n }\n\n // build options for padding and afterFinish functions\n var options = {};\n options.decrypt = this._decrypt;\n\n // get # of bytes that won't fill a block\n options.overflow = this._input.length() % this.blockSize;\n\n if(!this._decrypt && this.mode.pad) {\n if(!this.mode.pad(this._input, options)) {\n return false;\n }\n }\n\n // do final update\n this._finish = true;\n this.update();\n\n if(this._decrypt && this.mode.unpad) {\n if(!this.mode.unpad(this.output, options)) {\n return false;\n }\n }\n\n if(this.mode.afterFinish) {\n if(!this.mode.afterFinish(this.output, options)) {\n return false;\n }\n }\n\n return true;\n};\n","/**\n * Supported cipher modes.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nforge.cipher = forge.cipher || {};\n\n// supported cipher modes\nvar modes = module.exports = forge.cipher.modes = forge.cipher.modes || {};\n\n/** Electronic codebook (ECB) (Don't use this; it's not secure) **/\n\nmodes.ecb = function(options) {\n options = options || {};\n this.name = 'ECB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.ecb.prototype.start = function(options) {};\n\nmodes.ecb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.ecb.prototype.unpad = function(output, options) {\n // check for error: input data not a multiple of blockSize\n if(options.overflow > 0) {\n return false;\n }\n\n // ensure padding byte count is valid\n var len = output.length();\n var count = output.at(len - 1);\n if(count > (this.blockSize << 2)) {\n return false;\n }\n\n // trim off padding bytes\n output.truncate(count);\n return true;\n};\n\n/** Cipher-block Chaining (CBC) **/\n\nmodes.cbc = function(options) {\n options = options || {};\n this.name = 'CBC';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.cbc.prototype.start = function(options) {\n // Note: legacy support for using IV residue (has security flaws)\n // if IV is null, reuse block from previous processing\n if(options.iv === null) {\n // must have a previous block\n if(!this._prev) {\n throw new Error('Invalid IV parameter.');\n }\n this._iv = this._prev.slice(0);\n } else if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n } else {\n // save IV as \"previous\" block\n this._iv = transformIV(options.iv, this.blockSize);\n this._prev = this._iv.slice(0);\n }\n};\n\nmodes.cbc.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n // CBC XOR's IV (or previous block) with plaintext\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._prev[i] ^ input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output, save previous block\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n this._prev = this._outBlock;\n};\n\nmodes.cbc.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output, save previous ciphered block\n // CBC XOR's IV (or previous block) with ciphertext\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._prev[i] ^ this._outBlock[i]);\n }\n this._prev = this._inBlock.slice(0);\n};\n\nmodes.cbc.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.cbc.prototype.unpad = function(output, options) {\n // check for error: input data not a multiple of blockSize\n if(options.overflow > 0) {\n return false;\n }\n\n // ensure padding byte count is valid\n var len = output.length();\n var count = output.at(len - 1);\n if(count > (this.blockSize << 2)) {\n return false;\n }\n\n // trim off padding bytes\n output.truncate(count);\n return true;\n};\n\n/** Cipher feedback (CFB) **/\n\nmodes.cfb = function(options) {\n options = options || {};\n this.name = 'CFB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output, write input as output\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32() ^ this._outBlock[i];\n output.putInt32(this._inBlock[i]);\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output, write input as partial output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialBlock[i] = input.getInt32() ^ this._outBlock[i];\n this._partialOutput.putInt32(this._partialBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._partialBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block (CFB always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output, write input as output\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n output.putInt32(this._inBlock[i] ^ this._outBlock[i]);\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output, write input as partial output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialBlock[i] = input.getInt32();\n this._partialOutput.putInt32(this._partialBlock[i] ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._partialBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\n/** Output feedback (OFB) **/\n\nmodes.ofb = function(options) {\n options = options || {};\n this.name = 'OFB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(input.length() === 0) {\n return true;\n }\n\n // encrypt block (OFB always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output and update next input\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(input.getInt32() ^ this._outBlock[i]);\n this._inBlock[i] = this._outBlock[i];\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._outBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.decrypt = modes.ofb.prototype.encrypt;\n\n/** Counter (CTR) **/\n\nmodes.ctr = function(options) {\n options = options || {};\n this.name = 'CTR';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.ctr.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.ctr.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block (CTR always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n } else {\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n }\n\n // block complete, increment counter (input block)\n inc32(this._inBlock);\n};\n\nmodes.ctr.prototype.decrypt = modes.ctr.prototype.encrypt;\n\n/** Galois/Counter Mode (GCM) **/\n\nmodes.gcm = function(options) {\n options = options || {};\n this.name = 'GCM';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n\n // R is actually this value concatenated with 120 more zero bits, but\n // we only XOR against R so the other zeros have no effect -- we just\n // apply this value to the first integer in a block\n this._R = 0xE1000000;\n};\n\nmodes.gcm.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // ensure IV is a byte buffer\n var iv = forge.util.createBuffer(options.iv);\n\n // no ciphered data processed yet\n this._cipherLength = 0;\n\n // default additional data is none\n var additionalData;\n if('additionalData' in options) {\n additionalData = forge.util.createBuffer(options.additionalData);\n } else {\n additionalData = forge.util.createBuffer();\n }\n\n // default tag length is 128 bits\n if('tagLength' in options) {\n this._tagLength = options.tagLength;\n } else {\n this._tagLength = 128;\n }\n\n // if tag is given, ensure tag matches tag length\n this._tag = null;\n if(options.decrypt) {\n // save tag to check later\n this._tag = forge.util.createBuffer(options.tag).getBytes();\n if(this._tag.length !== (this._tagLength / 8)) {\n throw new Error('Authentication tag does not match tag length.');\n }\n }\n\n // create tmp storage for hash calculation\n this._hashBlock = new Array(this._ints);\n\n // no tag generated yet\n this.tag = null;\n\n // generate hash subkey\n // (apply block cipher to \"zero\" block)\n this._hashSubkey = new Array(this._ints);\n this.cipher.encrypt([0, 0, 0, 0], this._hashSubkey);\n\n // generate table M\n // use 4-bit tables (32 component decomposition of a 16 byte value)\n // 8-bit tables take more space and are known to have security\n // vulnerabilities (in native implementations)\n this.componentBits = 4;\n this._m = this.generateHashTable(this._hashSubkey, this.componentBits);\n\n // Note: support IV length different from 96 bits? (only supporting\n // 96 bits is recommended by NIST SP-800-38D)\n // generate J_0\n var ivLength = iv.length();\n if(ivLength === 12) {\n // 96-bit IV\n this._j0 = [iv.getInt32(), iv.getInt32(), iv.getInt32(), 1];\n } else {\n // IV is NOT 96-bits\n this._j0 = [0, 0, 0, 0];\n while(iv.length() > 0) {\n this._j0 = this.ghash(\n this._hashSubkey, this._j0,\n [iv.getInt32(), iv.getInt32(), iv.getInt32(), iv.getInt32()]);\n }\n this._j0 = this.ghash(\n this._hashSubkey, this._j0, [0, 0].concat(from64To32(ivLength * 8)));\n }\n\n // generate ICB (initial counter block)\n this._inBlock = this._j0.slice(0);\n inc32(this._inBlock);\n this._partialBytes = 0;\n\n // consume authentication data\n additionalData = forge.util.createBuffer(additionalData);\n // save additional data length as a BE 64-bit number\n this._aDataLength = from64To32(additionalData.length() * 8);\n // pad additional data to 128 bit (16 byte) block size\n var overflow = additionalData.length() % this.blockSize;\n if(overflow) {\n additionalData.fillWithByte(0, this.blockSize - overflow);\n }\n this._s = [0, 0, 0, 0];\n while(additionalData.length() > 0) {\n this._s = this.ghash(this._hashSubkey, this._s, [\n additionalData.getInt32(),\n additionalData.getInt32(),\n additionalData.getInt32(),\n additionalData.getInt32()\n ]);\n }\n};\n\nmodes.gcm.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i] ^= input.getInt32());\n }\n this._cipherLength += this.blockSize;\n } else {\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes <= 0 || finish) {\n // handle overflow prior to hashing\n if(finish) {\n // get block overflow\n var overflow = inputLength % this.blockSize;\n this._cipherLength += overflow;\n // truncate for hash function\n this._partialOutput.truncate(this.blockSize - overflow);\n } else {\n this._cipherLength += this.blockSize;\n }\n\n // get output block for hashing\n for(var i = 0; i < this._ints; ++i) {\n this._outBlock[i] = this._partialOutput.getInt32();\n }\n this._partialOutput.read -= this.blockSize;\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n // block still incomplete, restore input buffer, get partial output,\n // and return early\n input.read -= this.blockSize;\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n }\n\n // update hash block S\n this._s = this.ghash(this._hashSubkey, this._s, this._outBlock);\n\n // increment counter (input block)\n inc32(this._inBlock);\n};\n\nmodes.gcm.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n var inputLength = input.length();\n if(inputLength < this.blockSize && !(finish && inputLength > 0)) {\n return true;\n }\n\n // encrypt block (GCM always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // increment counter (input block)\n inc32(this._inBlock);\n\n // update hash block S\n this._hashBlock[0] = input.getInt32();\n this._hashBlock[1] = input.getInt32();\n this._hashBlock[2] = input.getInt32();\n this._hashBlock[3] = input.getInt32();\n this._s = this.ghash(this._hashSubkey, this._s, this._hashBlock);\n\n // XOR hash input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i] ^ this._hashBlock[i]);\n }\n\n // increment cipher data length\n if(inputLength < this.blockSize) {\n this._cipherLength += inputLength % this.blockSize;\n } else {\n this._cipherLength += this.blockSize;\n }\n};\n\nmodes.gcm.prototype.afterFinish = function(output, options) {\n var rval = true;\n\n // handle overflow\n if(options.decrypt && options.overflow) {\n output.truncate(this.blockSize - options.overflow);\n }\n\n // handle authentication tag\n this.tag = forge.util.createBuffer();\n\n // concatenate additional data length with cipher length\n var lengths = this._aDataLength.concat(from64To32(this._cipherLength * 8));\n\n // include lengths in hash\n this._s = this.ghash(this._hashSubkey, this._s, lengths);\n\n // do GCTR(J_0, S)\n var tag = [];\n this.cipher.encrypt(this._j0, tag);\n for(var i = 0; i < this._ints; ++i) {\n this.tag.putInt32(this._s[i] ^ tag[i]);\n }\n\n // trim tag to length\n this.tag.truncate(this.tag.length() % (this._tagLength / 8));\n\n // check authentication tag\n if(options.decrypt && this.tag.bytes() !== this._tag) {\n rval = false;\n }\n\n return rval;\n};\n\n/**\n * See NIST SP-800-38D 6.3 (Algorithm 1). This function performs Galois\n * field multiplication. The field, GF(2^128), is defined by the polynomial:\n *\n * x^128 + x^7 + x^2 + x + 1\n *\n * Which is represented in little-endian binary form as: 11100001 (0xe1). When\n * the value of a coefficient is 1, a bit is set. The value R, is the\n * concatenation of this value and 120 zero bits, yielding a 128-bit value\n * which matches the block size.\n *\n * This function will multiply two elements (vectors of bytes), X and Y, in\n * the field GF(2^128). The result is initialized to zero. For each bit of\n * X (out of 128), x_i, if x_i is set, then the result is multiplied (XOR'd)\n * by the current value of Y. For each bit, the value of Y will be raised by\n * a power of x (multiplied by the polynomial x). This can be achieved by\n * shifting Y once to the right. If the current value of Y, prior to being\n * multiplied by x, has 0 as its LSB, then it is a 127th degree polynomial.\n * Otherwise, we must divide by R after shifting to find the remainder.\n *\n * @param x the first block to multiply by the second.\n * @param y the second block to multiply by the first.\n *\n * @return the block result of the multiplication.\n */\nmodes.gcm.prototype.multiply = function(x, y) {\n var z_i = [0, 0, 0, 0];\n var v_i = y.slice(0);\n\n // calculate Z_128 (block has 128 bits)\n for(var i = 0; i < 128; ++i) {\n // if x_i is 0, Z_{i+1} = Z_i (unchanged)\n // else Z_{i+1} = Z_i ^ V_i\n // get x_i by finding 32-bit int position, then left shift 1 by remainder\n var x_i = x[(i / 32) | 0] & (1 << (31 - i % 32));\n if(x_i) {\n z_i[0] ^= v_i[0];\n z_i[1] ^= v_i[1];\n z_i[2] ^= v_i[2];\n z_i[3] ^= v_i[3];\n }\n\n // if LSB(V_i) is 1, V_i = V_i >> 1\n // else V_i = (V_i >> 1) ^ R\n this.pow(v_i, v_i);\n }\n\n return z_i;\n};\n\nmodes.gcm.prototype.pow = function(x, out) {\n // if LSB(x) is 1, x = x >>> 1\n // else x = (x >>> 1) ^ R\n var lsb = x[3] & 1;\n\n // always do x >>> 1:\n // starting with the rightmost integer, shift each integer to the right\n // one bit, pulling in the bit from the integer to the left as its top\n // most bit (do this for the last 3 integers)\n for(var i = 3; i > 0; --i) {\n out[i] = (x[i] >>> 1) | ((x[i - 1] & 1) << 31);\n }\n // shift the first integer normally\n out[0] = x[0] >>> 1;\n\n // if lsb was not set, then polynomial had a degree of 127 and doesn't\n // need to divided; otherwise, XOR with R to find the remainder; we only\n // need to XOR the first integer since R technically ends w/120 zero bits\n if(lsb) {\n out[0] ^= this._R;\n }\n};\n\nmodes.gcm.prototype.tableMultiply = function(x) {\n // assumes 4-bit tables are used\n var z = [0, 0, 0, 0];\n for(var i = 0; i < 32; ++i) {\n var idx = (i / 8) | 0;\n var x_i = (x[idx] >>> ((7 - (i % 8)) * 4)) & 0xF;\n var ah = this._m[i][x_i];\n z[0] ^= ah[0];\n z[1] ^= ah[1];\n z[2] ^= ah[2];\n z[3] ^= ah[3];\n }\n return z;\n};\n\n/**\n * A continuing version of the GHASH algorithm that operates on a single\n * block. The hash block, last hash value (Ym) and the new block to hash\n * are given.\n *\n * @param h the hash block.\n * @param y the previous value for Ym, use [0, 0, 0, 0] for a new hash.\n * @param x the block to hash.\n *\n * @return the hashed value (Ym).\n */\nmodes.gcm.prototype.ghash = function(h, y, x) {\n y[0] ^= x[0];\n y[1] ^= x[1];\n y[2] ^= x[2];\n y[3] ^= x[3];\n return this.tableMultiply(y);\n //return this.multiply(y, h);\n};\n\n/**\n * Precomputes a table for multiplying against the hash subkey. This\n * mechanism provides a substantial speed increase over multiplication\n * performed without a table. The table-based multiplication this table is\n * for solves X * H by multiplying each component of X by H and then\n * composing the results together using XOR.\n *\n * This function can be used to generate tables with different bit sizes\n * for the components, however, this implementation assumes there are\n * 32 components of X (which is a 16 byte vector), therefore each component\n * takes 4-bits (so the table is constructed with bits=4).\n *\n * @param h the hash subkey.\n * @param bits the bit size for a component.\n */\nmodes.gcm.prototype.generateHashTable = function(h, bits) {\n // TODO: There are further optimizations that would use only the\n // first table M_0 (or some variant) along with a remainder table;\n // this can be explored in the future\n var multiplier = 8 / bits;\n var perInt = 4 * multiplier;\n var size = 16 * multiplier;\n var m = new Array(size);\n for(var i = 0; i < size; ++i) {\n var tmp = [0, 0, 0, 0];\n var idx = (i / perInt) | 0;\n var shft = ((perInt - 1 - (i % perInt)) * bits);\n tmp[idx] = (1 << (bits - 1)) << shft;\n m[i] = this.generateSubHashTable(this.multiply(tmp, h), bits);\n }\n return m;\n};\n\n/**\n * Generates a table for multiplying against the hash subkey for one\n * particular component (out of all possible component values).\n *\n * @param mid the pre-multiplied value for the middle key of the table.\n * @param bits the bit size for a component.\n */\nmodes.gcm.prototype.generateSubHashTable = function(mid, bits) {\n // compute the table quickly by minimizing the number of\n // POW operations -- they only need to be performed for powers of 2,\n // all other entries can be composed from those powers using XOR\n var size = 1 << bits;\n var half = size >>> 1;\n var m = new Array(size);\n m[half] = mid.slice(0);\n var i = half >>> 1;\n while(i > 0) {\n // raise m0[2 * i] and store in m0[i]\n this.pow(m[2 * i], m[i] = []);\n i >>= 1;\n }\n i = 2;\n while(i < half) {\n for(var j = 1; j < i; ++j) {\n var m_i = m[i];\n var m_j = m[j];\n m[i + j] = [\n m_i[0] ^ m_j[0],\n m_i[1] ^ m_j[1],\n m_i[2] ^ m_j[2],\n m_i[3] ^ m_j[3]\n ];\n }\n i *= 2;\n }\n m[0] = [0, 0, 0, 0];\n /* Note: We could avoid storing these by doing composition during multiply\n calculate top half using composition by speed is preferred. */\n for(i = half + 1; i < size; ++i) {\n var c = m[i ^ half];\n m[i] = [mid[0] ^ c[0], mid[1] ^ c[1], mid[2] ^ c[2], mid[3] ^ c[3]];\n }\n return m;\n};\n\n/** Utility functions */\n\nfunction transformIV(iv, blockSize) {\n if(typeof iv === 'string') {\n // convert iv string into byte buffer\n iv = forge.util.createBuffer(iv);\n }\n\n if(forge.util.isArray(iv) && iv.length > 4) {\n // convert iv byte array into byte buffer\n var tmp = iv;\n iv = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n iv.putByte(tmp[i]);\n }\n }\n\n if(iv.length() < blockSize) {\n throw new Error(\n 'Invalid IV length; got ' + iv.length() +\n ' bytes and expected ' + blockSize + ' bytes.');\n }\n\n if(!forge.util.isArray(iv)) {\n // convert iv byte buffer into 32-bit integer array\n var ints = [];\n var blocks = blockSize / 4;\n for(var i = 0; i < blocks; ++i) {\n ints.push(iv.getInt32());\n }\n iv = ints;\n }\n\n return iv;\n}\n\nfunction inc32(block) {\n // increment last 32 bits of block only\n block[block.length - 1] = (block[block.length - 1] + 1) & 0xFFFFFFFF;\n}\n\nfunction from64To32(num) {\n // convert 64-bit number to two BE Int32s\n return [(num / 0x100000000) | 0, num & 0xFFFFFFFF];\n}\n","/**\n * Advanced Encryption Standard (AES) implementation.\n *\n * This implementation is based on the public domain library 'jscrypto' which\n * was written by:\n *\n * Emily Stark (estark@stanford.edu)\n * Mike Hamburg (mhamburg@stanford.edu)\n * Dan Boneh (dabo@cs.stanford.edu)\n *\n * Parts of this code are based on the OpenSSL implementation of AES:\n * http://www.openssl.org\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./cipher');\nrequire('./cipherModes');\nrequire('./util');\n\n/* AES API */\nmodule.exports = forge.aes = forge.aes || {};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('AES-', key);\n * cipher.start({iv: iv});\n *\n * Creates an AES cipher object to encrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as a string of bytes, an array of bytes,\n * a byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.startEncrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: false,\n mode: mode\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('AES-', key);\n *\n * Creates an AES cipher object to encrypt data using the given symmetric key.\n *\n * The key may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.createEncryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: false,\n mode: mode\n });\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('AES-', key);\n * decipher.start({iv: iv});\n *\n * Creates an AES cipher object to decrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as a string of bytes, an array of bytes,\n * a byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.startDecrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: true,\n mode: mode\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('AES-', key);\n *\n * Creates an AES cipher object to decrypt data using the given symmetric key.\n *\n * The key may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.createDecryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: true,\n mode: mode\n });\n};\n\n/**\n * Creates a new AES cipher algorithm object.\n *\n * @param name the name of the algorithm.\n * @param mode the mode factory function.\n *\n * @return the AES algorithm object.\n */\nforge.aes.Algorithm = function(name, mode) {\n if(!init) {\n initialize();\n }\n var self = this;\n self.name = name;\n self.mode = new mode({\n blockSize: 16,\n cipher: {\n encrypt: function(inBlock, outBlock) {\n return _updateBlock(self._w, inBlock, outBlock, false);\n },\n decrypt: function(inBlock, outBlock) {\n return _updateBlock(self._w, inBlock, outBlock, true);\n }\n }\n });\n self._init = false;\n};\n\n/**\n * Initializes this AES algorithm by expanding its key.\n *\n * @param options the options to use.\n * key the key to use with this algorithm.\n * decrypt true if the algorithm should be initialized for decryption,\n * false for encryption.\n */\nforge.aes.Algorithm.prototype.initialize = function(options) {\n if(this._init) {\n return;\n }\n\n var key = options.key;\n var tmp;\n\n /* Note: The key may be a string of bytes, an array of bytes, a byte\n buffer, or an array of 32-bit integers. If the key is in bytes, then\n it must be 16, 24, or 32 bytes in length. If it is in 32-bit\n integers, it must be 4, 6, or 8 integers long. */\n\n if(typeof key === 'string' &&\n (key.length === 16 || key.length === 24 || key.length === 32)) {\n // convert key string into byte buffer\n key = forge.util.createBuffer(key);\n } else if(forge.util.isArray(key) &&\n (key.length === 16 || key.length === 24 || key.length === 32)) {\n // convert key integer array into byte buffer\n tmp = key;\n key = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n key.putByte(tmp[i]);\n }\n }\n\n // convert key byte buffer into 32-bit integer array\n if(!forge.util.isArray(key)) {\n tmp = key;\n key = [];\n\n // key lengths of 16, 24, 32 bytes allowed\n var len = tmp.length();\n if(len === 16 || len === 24 || len === 32) {\n len = len >>> 2;\n for(var i = 0; i < len; ++i) {\n key.push(tmp.getInt32());\n }\n }\n }\n\n // key must be an array of 32-bit integers by now\n if(!forge.util.isArray(key) ||\n !(key.length === 4 || key.length === 6 || key.length === 8)) {\n throw new Error('Invalid key parameter.');\n }\n\n // encryption operation is always used for these modes\n var mode = this.mode.name;\n var encryptOp = (['CFB', 'OFB', 'CTR', 'GCM'].indexOf(mode) !== -1);\n\n // do key expansion\n this._w = _expandKey(key, options.decrypt && !encryptOp);\n this._init = true;\n};\n\n/**\n * Expands a key. Typically only used for testing.\n *\n * @param key the symmetric key to expand, as an array of 32-bit words.\n * @param decrypt true to expand for decryption, false for encryption.\n *\n * @return the expanded key.\n */\nforge.aes._expandKey = function(key, decrypt) {\n if(!init) {\n initialize();\n }\n return _expandKey(key, decrypt);\n};\n\n/**\n * Updates a single block. Typically only used for testing.\n *\n * @param w the expanded key to use.\n * @param input an array of block-size 32-bit words.\n * @param output an array of block-size 32-bit words.\n * @param decrypt true to decrypt, false to encrypt.\n */\nforge.aes._updateBlock = _updateBlock;\n\n/** Register AES algorithms **/\n\nregisterAlgorithm('AES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('AES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('AES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('AES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('AES-CTR', forge.cipher.modes.ctr);\nregisterAlgorithm('AES-GCM', forge.cipher.modes.gcm);\n\nfunction registerAlgorithm(name, mode) {\n var factory = function() {\n return new forge.aes.Algorithm(name, mode);\n };\n forge.cipher.registerAlgorithm(name, factory);\n}\n\n/** AES implementation **/\n\nvar init = false; // not yet initialized\nvar Nb = 4; // number of words comprising the state (AES = 4)\nvar sbox; // non-linear substitution table used in key expansion\nvar isbox; // inversion of sbox\nvar rcon; // round constant word array\nvar mix; // mix-columns table\nvar imix; // inverse mix-columns table\n\n/**\n * Performs initialization, ie: precomputes tables to optimize for speed.\n *\n * One way to understand how AES works is to imagine that 'addition' and\n * 'multiplication' are interfaces that require certain mathematical\n * properties to hold true (ie: they are associative) but they might have\n * different implementations and produce different kinds of results ...\n * provided that their mathematical properties remain true. AES defines\n * its own methods of addition and multiplication but keeps some important\n * properties the same, ie: associativity and distributivity. The\n * explanation below tries to shed some light on how AES defines addition\n * and multiplication of bytes and 32-bit words in order to perform its\n * encryption and decryption algorithms.\n *\n * The basics:\n *\n * The AES algorithm views bytes as binary representations of polynomials\n * that have either 1 or 0 as the coefficients. It defines the addition\n * or subtraction of two bytes as the XOR operation. It also defines the\n * multiplication of two bytes as a finite field referred to as GF(2^8)\n * (Note: 'GF' means \"Galois Field\" which is a field that contains a finite\n * number of elements so GF(2^8) has 256 elements).\n *\n * This means that any two bytes can be represented as binary polynomials;\n * when they multiplied together and modularly reduced by an irreducible\n * polynomial of the 8th degree, the results are the field GF(2^8). The\n * specific irreducible polynomial that AES uses in hexadecimal is 0x11b.\n * This multiplication is associative with 0x01 as the identity:\n *\n * (b * 0x01 = GF(b, 0x01) = b).\n *\n * The operation GF(b, 0x02) can be performed at the byte level by left\n * shifting b once and then XOR'ing it (to perform the modular reduction)\n * with 0x11b if b is >= 128. Repeated application of the multiplication\n * of 0x02 can be used to implement the multiplication of any two bytes.\n *\n * For instance, multiplying 0x57 and 0x13, denoted as GF(0x57, 0x13), can\n * be performed by factoring 0x13 into 0x01, 0x02, and 0x10. Then these\n * factors can each be multiplied by 0x57 and then added together. To do\n * the multiplication, values for 0x57 multiplied by each of these 3 factors\n * can be precomputed and stored in a table. To add them, the values from\n * the table are XOR'd together.\n *\n * AES also defines addition and multiplication of words, that is 4-byte\n * numbers represented as polynomials of 3 degrees where the coefficients\n * are the values of the bytes.\n *\n * The word [a0, a1, a2, a3] is a polynomial a3x^3 + a2x^2 + a1x + a0.\n *\n * Addition is performed by XOR'ing like powers of x. Multiplication\n * is performed in two steps, the first is an algebriac expansion as\n * you would do normally (where addition is XOR). But the result is\n * a polynomial larger than 3 degrees and thus it cannot fit in a word. So\n * next the result is modularly reduced by an AES-specific polynomial of\n * degree 4 which will always produce a polynomial of less than 4 degrees\n * such that it will fit in a word. In AES, this polynomial is x^4 + 1.\n *\n * The modular product of two polynomials 'a' and 'b' is thus:\n *\n * d(x) = d3x^3 + d2x^2 + d1x + d0\n * with\n * d0 = GF(a0, b0) ^ GF(a3, b1) ^ GF(a2, b2) ^ GF(a1, b3)\n * d1 = GF(a1, b0) ^ GF(a0, b1) ^ GF(a3, b2) ^ GF(a2, b3)\n * d2 = GF(a2, b0) ^ GF(a1, b1) ^ GF(a0, b2) ^ GF(a3, b3)\n * d3 = GF(a3, b0) ^ GF(a2, b1) ^ GF(a1, b2) ^ GF(a0, b3)\n *\n * As a matrix:\n *\n * [d0] = [a0 a3 a2 a1][b0]\n * [d1] [a1 a0 a3 a2][b1]\n * [d2] [a2 a1 a0 a3][b2]\n * [d3] [a3 a2 a1 a0][b3]\n *\n * Special polynomials defined by AES (0x02 == {02}):\n * a(x) = {03}x^3 + {01}x^2 + {01}x + {02}\n * a^-1(x) = {0b}x^3 + {0d}x^2 + {09}x + {0e}.\n *\n * These polynomials are used in the MixColumns() and InverseMixColumns()\n * operations, respectively, to cause each element in the state to affect\n * the output (referred to as diffusing).\n *\n * RotWord() uses: a0 = a1 = a2 = {00} and a3 = {01}, which is the\n * polynomial x3.\n *\n * The ShiftRows() method modifies the last 3 rows in the state (where\n * the state is 4 words with 4 bytes per word) by shifting bytes cyclically.\n * The 1st byte in the second row is moved to the end of the row. The 1st\n * and 2nd bytes in the third row are moved to the end of the row. The 1st,\n * 2nd, and 3rd bytes are moved in the fourth row.\n *\n * More details on how AES arithmetic works:\n *\n * In the polynomial representation of binary numbers, XOR performs addition\n * and subtraction and multiplication in GF(2^8) denoted as GF(a, b)\n * corresponds with the multiplication of polynomials modulo an irreducible\n * polynomial of degree 8. In other words, for AES, GF(a, b) will multiply\n * polynomial 'a' with polynomial 'b' and then do a modular reduction by\n * an AES-specific irreducible polynomial of degree 8.\n *\n * A polynomial is irreducible if its only divisors are one and itself. For\n * the AES algorithm, this irreducible polynomial is:\n *\n * m(x) = x^8 + x^4 + x^3 + x + 1,\n *\n * or {01}{1b} in hexadecimal notation, where each coefficient is a bit:\n * 100011011 = 283 = 0x11b.\n *\n * For example, GF(0x57, 0x83) = 0xc1 because\n *\n * 0x57 = 87 = 01010111 = x^6 + x^4 + x^2 + x + 1\n * 0x85 = 131 = 10000101 = x^7 + x + 1\n *\n * (x^6 + x^4 + x^2 + x + 1) * (x^7 + x + 1)\n * = x^13 + x^11 + x^9 + x^8 + x^7 +\n * x^7 + x^5 + x^3 + x^2 + x +\n * x^6 + x^4 + x^2 + x + 1\n * = x^13 + x^11 + x^9 + x^8 + x^6 + x^5 + x^4 + x^3 + 1 = y\n * y modulo (x^8 + x^4 + x^3 + x + 1)\n * = x^7 + x^6 + 1.\n *\n * The modular reduction by m(x) guarantees the result will be a binary\n * polynomial of less than degree 8, so that it can fit in a byte.\n *\n * The operation to multiply a binary polynomial b with x (the polynomial\n * x in binary representation is 00000010) is:\n *\n * b_7x^8 + b_6x^7 + b_5x^6 + b_4x^5 + b_3x^4 + b_2x^3 + b_1x^2 + b_0x^1\n *\n * To get GF(b, x) we must reduce that by m(x). If b_7 is 0 (that is the\n * most significant bit is 0 in b) then the result is already reduced. If\n * it is 1, then we can reduce it by subtracting m(x) via an XOR.\n *\n * It follows that multiplication by x (00000010 or 0x02) can be implemented\n * by performing a left shift followed by a conditional bitwise XOR with\n * 0x1b. This operation on bytes is denoted by xtime(). Multiplication by\n * higher powers of x can be implemented by repeated application of xtime().\n *\n * By adding intermediate results, multiplication by any constant can be\n * implemented. For instance:\n *\n * GF(0x57, 0x13) = 0xfe because:\n *\n * xtime(b) = (b & 128) ? (b << 1 ^ 0x11b) : (b << 1)\n *\n * Note: We XOR with 0x11b instead of 0x1b because in javascript our\n * datatype for b can be larger than 1 byte, so a left shift will not\n * automatically eliminate bits that overflow a byte ... by XOR'ing the\n * overflow bit with 1 (the extra one from 0x11b) we zero it out.\n *\n * GF(0x57, 0x02) = xtime(0x57) = 0xae\n * GF(0x57, 0x04) = xtime(0xae) = 0x47\n * GF(0x57, 0x08) = xtime(0x47) = 0x8e\n * GF(0x57, 0x10) = xtime(0x8e) = 0x07\n *\n * GF(0x57, 0x13) = GF(0x57, (0x01 ^ 0x02 ^ 0x10))\n *\n * And by the distributive property (since XOR is addition and GF() is\n * multiplication):\n *\n * = GF(0x57, 0x01) ^ GF(0x57, 0x02) ^ GF(0x57, 0x10)\n * = 0x57 ^ 0xae ^ 0x07\n * = 0xfe.\n */\nfunction initialize() {\n init = true;\n\n /* Populate the Rcon table. These are the values given by\n [x^(i-1),{00},{00},{00}] where x^(i-1) are powers of x (and x = 0x02)\n in the field of GF(2^8), where i starts at 1.\n\n rcon[0] = [0x00, 0x00, 0x00, 0x00]\n rcon[1] = [0x01, 0x00, 0x00, 0x00] 2^(1-1) = 2^0 = 1\n rcon[2] = [0x02, 0x00, 0x00, 0x00] 2^(2-1) = 2^1 = 2\n ...\n rcon[9] = [0x1B, 0x00, 0x00, 0x00] 2^(9-1) = 2^8 = 0x1B\n rcon[10] = [0x36, 0x00, 0x00, 0x00] 2^(10-1) = 2^9 = 0x36\n\n We only store the first byte because it is the only one used.\n */\n rcon = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1B, 0x36];\n\n // compute xtime table which maps i onto GF(i, 0x02)\n var xtime = new Array(256);\n for(var i = 0; i < 128; ++i) {\n xtime[i] = i << 1;\n xtime[i + 128] = (i + 128) << 1 ^ 0x11B;\n }\n\n // compute all other tables\n sbox = new Array(256);\n isbox = new Array(256);\n mix = new Array(4);\n imix = new Array(4);\n for(var i = 0; i < 4; ++i) {\n mix[i] = new Array(256);\n imix[i] = new Array(256);\n }\n var e = 0, ei = 0, e2, e4, e8, sx, sx2, me, ime;\n for(var i = 0; i < 256; ++i) {\n /* We need to generate the SubBytes() sbox and isbox tables so that\n we can perform byte substitutions. This requires us to traverse\n all of the elements in GF, find their multiplicative inverses,\n and apply to each the following affine transformation:\n\n bi' = bi ^ b(i + 4) mod 8 ^ b(i + 5) mod 8 ^ b(i + 6) mod 8 ^\n b(i + 7) mod 8 ^ ci\n for 0 <= i < 8, where bi is the ith bit of the byte, and ci is the\n ith bit of a byte c with the value {63} or {01100011}.\n\n It is possible to traverse every possible value in a Galois field\n using what is referred to as a 'generator'. There are many\n generators (128 out of 256): 3,5,6,9,11,82 to name a few. To fully\n traverse GF we iterate 255 times, multiplying by our generator\n each time.\n\n On each iteration we can determine the multiplicative inverse for\n the current element.\n\n Suppose there is an element in GF 'e'. For a given generator 'g',\n e = g^x. The multiplicative inverse of e is g^(255 - x). It turns\n out that if use the inverse of a generator as another generator\n it will produce all of the corresponding multiplicative inverses\n at the same time. For this reason, we choose 5 as our inverse\n generator because it only requires 2 multiplies and 1 add and its\n inverse, 82, requires relatively few operations as well.\n\n In order to apply the affine transformation, the multiplicative\n inverse 'ei' of 'e' can be repeatedly XOR'd (4 times) with a\n bit-cycling of 'ei'. To do this 'ei' is first stored in 's' and\n 'x'. Then 's' is left shifted and the high bit of 's' is made the\n low bit. The resulting value is stored in 's'. Then 'x' is XOR'd\n with 's' and stored in 'x'. On each subsequent iteration the same\n operation is performed. When 4 iterations are complete, 'x' is\n XOR'd with 'c' (0x63) and the transformed value is stored in 'x'.\n For example:\n\n s = 01000001\n x = 01000001\n\n iteration 1: s = 10000010, x ^= s\n iteration 2: s = 00000101, x ^= s\n iteration 3: s = 00001010, x ^= s\n iteration 4: s = 00010100, x ^= s\n x ^= 0x63\n\n This can be done with a loop where s = (s << 1) | (s >> 7). However,\n it can also be done by using a single 16-bit (in this case 32-bit)\n number 'sx'. Since XOR is an associative operation, we can set 'sx'\n to 'ei' and then XOR it with 'sx' left-shifted 1,2,3, and 4 times.\n The most significant bits will flow into the high 8 bit positions\n and be correctly XOR'd with one another. All that remains will be\n to cycle the high 8 bits by XOR'ing them all with the lower 8 bits\n afterwards.\n\n At the same time we're populating sbox and isbox we can precompute\n the multiplication we'll need to do to do MixColumns() later.\n */\n\n // apply affine transformation\n sx = ei ^ (ei << 1) ^ (ei << 2) ^ (ei << 3) ^ (ei << 4);\n sx = (sx >> 8) ^ (sx & 255) ^ 0x63;\n\n // update tables\n sbox[e] = sx;\n isbox[sx] = e;\n\n /* Mixing columns is done using matrix multiplication. The columns\n that are to be mixed are each a single word in the current state.\n The state has Nb columns (4 columns). Therefore each column is a\n 4 byte word. So to mix the columns in a single column 'c' where\n its rows are r0, r1, r2, and r3, we use the following matrix\n multiplication:\n\n [2 3 1 1]*[r0,c]=[r'0,c]\n [1 2 3 1] [r1,c] [r'1,c]\n [1 1 2 3] [r2,c] [r'2,c]\n [3 1 1 2] [r3,c] [r'3,c]\n\n r0, r1, r2, and r3 are each 1 byte of one of the words in the\n state (a column). To do matrix multiplication for each mixed\n column c' we multiply the corresponding row from the left matrix\n with the corresponding column from the right matrix. In total, we\n get 4 equations:\n\n r0,c' = 2*r0,c + 3*r1,c + 1*r2,c + 1*r3,c\n r1,c' = 1*r0,c + 2*r1,c + 3*r2,c + 1*r3,c\n r2,c' = 1*r0,c + 1*r1,c + 2*r2,c + 3*r3,c\n r3,c' = 3*r0,c + 1*r1,c + 1*r2,c + 2*r3,c\n\n As usual, the multiplication is as previously defined and the\n addition is XOR. In order to optimize mixing columns we can store\n the multiplication results in tables. If you think of the whole\n column as a word (it might help to visualize by mentally rotating\n the equations above by counterclockwise 90 degrees) then you can\n see that it would be useful to map the multiplications performed on\n each byte (r0, r1, r2, r3) onto a word as well. For instance, we\n could map 2*r0,1*r0,1*r0,3*r0 onto a word by storing 2*r0 in the\n highest 8 bits and 3*r0 in the lowest 8 bits (with the other two\n respectively in the middle). This means that a table can be\n constructed that uses r0 as an index to the word. We can do the\n same with r1, r2, and r3, creating a total of 4 tables.\n\n To construct a full c', we can just look up each byte of c in\n their respective tables and XOR the results together.\n\n Also, to build each table we only have to calculate the word\n for 2,1,1,3 for every byte ... which we can do on each iteration\n of this loop since we will iterate over every byte. After we have\n calculated 2,1,1,3 we can get the results for the other tables\n by cycling the byte at the end to the beginning. For instance\n we can take the result of table 2,1,1,3 and produce table 3,2,1,1\n by moving the right most byte to the left most position just like\n how you can imagine the 3 moved out of 2,1,1,3 and to the front\n to produce 3,2,1,1.\n\n There is another optimization in that the same multiples of\n the current element we need in order to advance our generator\n to the next iteration can be reused in performing the 2,1,1,3\n calculation. We also calculate the inverse mix column tables,\n with e,9,d,b being the inverse of 2,1,1,3.\n\n When we're done, and we need to actually mix columns, the first\n byte of each state word should be put through mix[0] (2,1,1,3),\n the second through mix[1] (3,2,1,1) and so forth. Then they should\n be XOR'd together to produce the fully mixed column.\n */\n\n // calculate mix and imix table values\n sx2 = xtime[sx];\n e2 = xtime[e];\n e4 = xtime[e2];\n e8 = xtime[e4];\n me =\n (sx2 << 24) ^ // 2\n (sx << 16) ^ // 1\n (sx << 8) ^ // 1\n (sx ^ sx2); // 3\n ime =\n (e2 ^ e4 ^ e8) << 24 ^ // E (14)\n (e ^ e8) << 16 ^ // 9\n (e ^ e4 ^ e8) << 8 ^ // D (13)\n (e ^ e2 ^ e8); // B (11)\n // produce each of the mix tables by rotating the 2,1,1,3 value\n for(var n = 0; n < 4; ++n) {\n mix[n][e] = me;\n imix[n][sx] = ime;\n // cycle the right most byte to the left most position\n // ie: 2,1,1,3 becomes 3,2,1,1\n me = me << 24 | me >>> 8;\n ime = ime << 24 | ime >>> 8;\n }\n\n // get next element and inverse\n if(e === 0) {\n // 1 is the inverse of 1\n e = ei = 1;\n } else {\n // e = 2e + 2*2*2*(10e)) = multiply e by 82 (chosen generator)\n // ei = ei + 2*2*ei = multiply ei by 5 (inverse generator)\n e = e2 ^ xtime[xtime[xtime[e2 ^ e8]]];\n ei ^= xtime[xtime[ei]];\n }\n }\n}\n\n/**\n * Generates a key schedule using the AES key expansion algorithm.\n *\n * The AES algorithm takes the Cipher Key, K, and performs a Key Expansion\n * routine to generate a key schedule. The Key Expansion generates a total\n * of Nb*(Nr + 1) words: the algorithm requires an initial set of Nb words,\n * and each of the Nr rounds requires Nb words of key data. The resulting\n * key schedule consists of a linear array of 4-byte words, denoted [wi ],\n * with i in the range 0 <= i < Nb(Nr + 1).\n *\n * KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk)\n * AES-128 (Nb=4, Nk=4, Nr=10)\n * AES-192 (Nb=4, Nk=6, Nr=12)\n * AES-256 (Nb=4, Nk=8, Nr=14)\n * Note: Nr=Nk+6.\n *\n * Nb is the number of columns (32-bit words) comprising the State (or\n * number of bytes in a block). For AES, Nb=4.\n *\n * @param key the key to schedule (as an array of 32-bit words).\n * @param decrypt true to modify the key schedule to decrypt, false not to.\n *\n * @return the generated key schedule.\n */\nfunction _expandKey(key, decrypt) {\n // copy the key's words to initialize the key schedule\n var w = key.slice(0);\n\n /* RotWord() will rotate a word, moving the first byte to the last\n byte's position (shifting the other bytes left).\n\n We will be getting the value of Rcon at i / Nk. 'i' will iterate\n from Nk to (Nb * Nr+1). Nk = 4 (4 byte key), Nb = 4 (4 words in\n a block), Nr = Nk + 6 (10). Therefore 'i' will iterate from\n 4 to 44 (exclusive). Each time we iterate 4 times, i / Nk will\n increase by 1. We use a counter iNk to keep track of this.\n */\n\n // go through the rounds expanding the key\n var temp, iNk = 1;\n var Nk = w.length;\n var Nr1 = Nk + 6 + 1;\n var end = Nb * Nr1;\n for(var i = Nk; i < end; ++i) {\n temp = w[i - 1];\n if(i % Nk === 0) {\n // temp = SubWord(RotWord(temp)) ^ Rcon[i / Nk]\n temp =\n sbox[temp >>> 16 & 255] << 24 ^\n sbox[temp >>> 8 & 255] << 16 ^\n sbox[temp & 255] << 8 ^\n sbox[temp >>> 24] ^ (rcon[iNk] << 24);\n iNk++;\n } else if(Nk > 6 && (i % Nk === 4)) {\n // temp = SubWord(temp)\n temp =\n sbox[temp >>> 24] << 24 ^\n sbox[temp >>> 16 & 255] << 16 ^\n sbox[temp >>> 8 & 255] << 8 ^\n sbox[temp & 255];\n }\n w[i] = w[i - Nk] ^ temp;\n }\n\n /* When we are updating a cipher block we always use the code path for\n encryption whether we are decrypting or not (to shorten code and\n simplify the generation of look up tables). However, because there\n are differences in the decryption algorithm, other than just swapping\n in different look up tables, we must transform our key schedule to\n account for these changes:\n\n 1. The decryption algorithm gets its key rounds in reverse order.\n 2. The decryption algorithm adds the round key before mixing columns\n instead of afterwards.\n\n We don't need to modify our key schedule to handle the first case,\n we can just traverse the key schedule in reverse order when decrypting.\n\n The second case requires a little work.\n\n The tables we built for performing rounds will take an input and then\n perform SubBytes() and MixColumns() or, for the decrypt version,\n InvSubBytes() and InvMixColumns(). But the decrypt algorithm requires\n us to AddRoundKey() before InvMixColumns(). This means we'll need to\n apply some transformations to the round key to inverse-mix its columns\n so they'll be correct for moving AddRoundKey() to after the state has\n had its columns inverse-mixed.\n\n To inverse-mix the columns of the state when we're decrypting we use a\n lookup table that will apply InvSubBytes() and InvMixColumns() at the\n same time. However, the round key's bytes are not inverse-substituted\n in the decryption algorithm. To get around this problem, we can first\n substitute the bytes in the round key so that when we apply the\n transformation via the InvSubBytes()+InvMixColumns() table, it will\n undo our substitution leaving us with the original value that we\n want -- and then inverse-mix that value.\n\n This change will correctly alter our key schedule so that we can XOR\n each round key with our already transformed decryption state. This\n allows us to use the same code path as the encryption algorithm.\n\n We make one more change to the decryption key. Since the decryption\n algorithm runs in reverse from the encryption algorithm, we reverse\n the order of the round keys to avoid having to iterate over the key\n schedule backwards when running the encryption algorithm later in\n decryption mode. In addition to reversing the order of the round keys,\n we also swap each round key's 2nd and 4th rows. See the comments\n section where rounds are performed for more details about why this is\n done. These changes are done inline with the other substitution\n described above.\n */\n if(decrypt) {\n var tmp;\n var m0 = imix[0];\n var m1 = imix[1];\n var m2 = imix[2];\n var m3 = imix[3];\n var wnew = w.slice(0);\n end = w.length;\n for(var i = 0, wi = end - Nb; i < end; i += Nb, wi -= Nb) {\n // do not sub the first or last round key (round keys are Nb\n // words) as no column mixing is performed before they are added,\n // but do change the key order\n if(i === 0 || i === (end - Nb)) {\n wnew[i] = w[wi];\n wnew[i + 1] = w[wi + 3];\n wnew[i + 2] = w[wi + 2];\n wnew[i + 3] = w[wi + 1];\n } else {\n // substitute each round key byte because the inverse-mix\n // table will inverse-substitute it (effectively cancel the\n // substitution because round key bytes aren't sub'd in\n // decryption mode) and swap indexes 3 and 1\n for(var n = 0; n < Nb; ++n) {\n tmp = w[wi + n];\n wnew[i + (3&-n)] =\n m0[sbox[tmp >>> 24]] ^\n m1[sbox[tmp >>> 16 & 255]] ^\n m2[sbox[tmp >>> 8 & 255]] ^\n m3[sbox[tmp & 255]];\n }\n }\n }\n w = wnew;\n }\n\n return w;\n}\n\n/**\n * Updates a single block (16 bytes) using AES. The update will either\n * encrypt or decrypt the block.\n *\n * @param w the key schedule.\n * @param input the input block (an array of 32-bit words).\n * @param output the updated output block.\n * @param decrypt true to decrypt the block, false to encrypt it.\n */\nfunction _updateBlock(w, input, output, decrypt) {\n /*\n Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])\n begin\n byte state[4,Nb]\n state = in\n AddRoundKey(state, w[0, Nb-1])\n for round = 1 step 1 to Nr-1\n SubBytes(state)\n ShiftRows(state)\n MixColumns(state)\n AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])\n end for\n SubBytes(state)\n ShiftRows(state)\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n out = state\n end\n\n InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])\n begin\n byte state[4,Nb]\n state = in\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n for round = Nr-1 step -1 downto 1\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])\n InvMixColumns(state)\n end for\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[0, Nb-1])\n out = state\n end\n */\n\n // Encrypt: AddRoundKey(state, w[0, Nb-1])\n // Decrypt: AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n var Nr = w.length / 4 - 1;\n var m0, m1, m2, m3, sub;\n if(decrypt) {\n m0 = imix[0];\n m1 = imix[1];\n m2 = imix[2];\n m3 = imix[3];\n sub = isbox;\n } else {\n m0 = mix[0];\n m1 = mix[1];\n m2 = mix[2];\n m3 = mix[3];\n sub = sbox;\n }\n var a, b, c, d, a2, b2, c2;\n a = input[0] ^ w[0];\n b = input[decrypt ? 3 : 1] ^ w[1];\n c = input[2] ^ w[2];\n d = input[decrypt ? 1 : 3] ^ w[3];\n var i = 3;\n\n /* In order to share code we follow the encryption algorithm when both\n encrypting and decrypting. To account for the changes required in the\n decryption algorithm, we use different lookup tables when decrypting\n and use a modified key schedule to account for the difference in the\n order of transformations applied when performing rounds. We also get\n key rounds in reverse order (relative to encryption). */\n for(var round = 1; round < Nr; ++round) {\n /* As described above, we'll be using table lookups to perform the\n column mixing. Each column is stored as a word in the state (the\n array 'input' has one column as a word at each index). In order to\n mix a column, we perform these transformations on each row in c,\n which is 1 byte in each word. The new column for c0 is c'0:\n\n m0 m1 m2 m3\n r0,c'0 = 2*r0,c0 + 3*r1,c0 + 1*r2,c0 + 1*r3,c0\n r1,c'0 = 1*r0,c0 + 2*r1,c0 + 3*r2,c0 + 1*r3,c0\n r2,c'0 = 1*r0,c0 + 1*r1,c0 + 2*r2,c0 + 3*r3,c0\n r3,c'0 = 3*r0,c0 + 1*r1,c0 + 1*r2,c0 + 2*r3,c0\n\n So using mix tables where c0 is a word with r0 being its upper\n 8 bits and r3 being its lower 8 bits:\n\n m0[c0 >> 24] will yield this word: [2*r0,1*r0,1*r0,3*r0]\n ...\n m3[c0 & 255] will yield this word: [1*r3,1*r3,3*r3,2*r3]\n\n Therefore to mix the columns in each word in the state we\n do the following (& 255 omitted for brevity):\n c'0,r0 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r1 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r2 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r3 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n\n However, before mixing, the algorithm requires us to perform\n ShiftRows(). The ShiftRows() transformation cyclically shifts the\n last 3 rows of the state over different offsets. The first row\n (r = 0) is not shifted.\n\n s'_r,c = s_r,(c + shift(r, Nb) mod Nb\n for 0 < r < 4 and 0 <= c < Nb and\n shift(1, 4) = 1\n shift(2, 4) = 2\n shift(3, 4) = 3.\n\n This causes the first byte in r = 1 to be moved to the end of\n the row, the first 2 bytes in r = 2 to be moved to the end of\n the row, the first 3 bytes in r = 3 to be moved to the end of\n the row:\n\n r1: [c0 c1 c2 c3] => [c1 c2 c3 c0]\n r2: [c0 c1 c2 c3] [c2 c3 c0 c1]\n r3: [c0 c1 c2 c3] [c3 c0 c1 c2]\n\n We can make these substitutions inline with our column mixing to\n generate an updated set of equations to produce each word in the\n state (note the columns have changed positions):\n\n c0 c1 c2 c3 => c0 c1 c2 c3\n c0 c1 c2 c3 c1 c2 c3 c0 (cycled 1 byte)\n c0 c1 c2 c3 c2 c3 c0 c1 (cycled 2 bytes)\n c0 c1 c2 c3 c3 c0 c1 c2 (cycled 3 bytes)\n\n Therefore:\n\n c'0 = 2*r0,c0 + 3*r1,c1 + 1*r2,c2 + 1*r3,c3\n c'0 = 1*r0,c0 + 2*r1,c1 + 3*r2,c2 + 1*r3,c3\n c'0 = 1*r0,c0 + 1*r1,c1 + 2*r2,c2 + 3*r3,c3\n c'0 = 3*r0,c0 + 1*r1,c1 + 1*r2,c2 + 2*r3,c3\n\n c'1 = 2*r0,c1 + 3*r1,c2 + 1*r2,c3 + 1*r3,c0\n c'1 = 1*r0,c1 + 2*r1,c2 + 3*r2,c3 + 1*r3,c0\n c'1 = 1*r0,c1 + 1*r1,c2 + 2*r2,c3 + 3*r3,c0\n c'1 = 3*r0,c1 + 1*r1,c2 + 1*r2,c3 + 2*r3,c0\n\n ... and so forth for c'2 and c'3. The important distinction is\n that the columns are cycling, with c0 being used with the m0\n map when calculating c0, but c1 being used with the m0 map when\n calculating c1 ... and so forth.\n\n When performing the inverse we transform the mirror image and\n skip the bottom row, instead of the top one, and move upwards:\n\n c3 c2 c1 c0 => c0 c3 c2 c1 (cycled 3 bytes) *same as encryption\n c3 c2 c1 c0 c1 c0 c3 c2 (cycled 2 bytes)\n c3 c2 c1 c0 c2 c1 c0 c3 (cycled 1 byte) *same as encryption\n c3 c2 c1 c0 c3 c2 c1 c0\n\n If you compare the resulting matrices for ShiftRows()+MixColumns()\n and for InvShiftRows()+InvMixColumns() the 2nd and 4th columns are\n different (in encrypt mode vs. decrypt mode). So in order to use\n the same code to handle both encryption and decryption, we will\n need to do some mapping.\n\n If in encryption mode we let a=c0, b=c1, c=c2, d=c3, and r be\n a row number in the state, then the resulting matrix in encryption\n mode for applying the above transformations would be:\n\n r1: a b c d\n r2: b c d a\n r3: c d a b\n r4: d a b c\n\n If we did the same in decryption mode we would get:\n\n r1: a d c b\n r2: b a d c\n r3: c b a d\n r4: d c b a\n\n If instead we swap d and b (set b=c3 and d=c1), then we get:\n\n r1: a b c d\n r2: d a b c\n r3: c d a b\n r4: b c d a\n\n Now the 1st and 3rd rows are the same as the encryption matrix. All\n we need to do then to make the mapping exactly the same is to swap\n the 2nd and 4th rows when in decryption mode. To do this without\n having to do it on each iteration, we swapped the 2nd and 4th rows\n in the decryption key schedule. We also have to do the swap above\n when we first pull in the input and when we set the final output. */\n a2 =\n m0[a >>> 24] ^\n m1[b >>> 16 & 255] ^\n m2[c >>> 8 & 255] ^\n m3[d & 255] ^ w[++i];\n b2 =\n m0[b >>> 24] ^\n m1[c >>> 16 & 255] ^\n m2[d >>> 8 & 255] ^\n m3[a & 255] ^ w[++i];\n c2 =\n m0[c >>> 24] ^\n m1[d >>> 16 & 255] ^\n m2[a >>> 8 & 255] ^\n m3[b & 255] ^ w[++i];\n d =\n m0[d >>> 24] ^\n m1[a >>> 16 & 255] ^\n m2[b >>> 8 & 255] ^\n m3[c & 255] ^ w[++i];\n a = a2;\n b = b2;\n c = c2;\n }\n\n /*\n Encrypt:\n SubBytes(state)\n ShiftRows(state)\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n\n Decrypt:\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[0, Nb-1])\n */\n // Note: rows are shifted inline\n output[0] =\n (sub[a >>> 24] << 24) ^\n (sub[b >>> 16 & 255] << 16) ^\n (sub[c >>> 8 & 255] << 8) ^\n (sub[d & 255]) ^ w[++i];\n output[decrypt ? 3 : 1] =\n (sub[b >>> 24] << 24) ^\n (sub[c >>> 16 & 255] << 16) ^\n (sub[d >>> 8 & 255] << 8) ^\n (sub[a & 255]) ^ w[++i];\n output[2] =\n (sub[c >>> 24] << 24) ^\n (sub[d >>> 16 & 255] << 16) ^\n (sub[a >>> 8 & 255] << 8) ^\n (sub[b & 255]) ^ w[++i];\n output[decrypt ? 1 : 3] =\n (sub[d >>> 24] << 24) ^\n (sub[a >>> 16 & 255] << 16) ^\n (sub[b >>> 8 & 255] << 8) ^\n (sub[c & 255]) ^ w[++i];\n}\n\n/**\n * Deprecated. Instead, use:\n *\n * forge.cipher.createCipher('AES-', key);\n * forge.cipher.createDecipher('AES-', key);\n *\n * Creates a deprecated AES cipher object. This object's mode will default to\n * CBC (cipher-block-chaining).\n *\n * The key and iv may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param options the options to use.\n * key the symmetric key to use.\n * output the buffer to write to.\n * decrypt true for decryption, false for encryption.\n * mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nfunction _createCipher(options) {\n options = options || {};\n var mode = (options.mode || 'CBC').toUpperCase();\n var algorithm = 'AES-' + mode;\n\n var cipher;\n if(options.decrypt) {\n cipher = forge.cipher.createDecipher(algorithm, options.key);\n } else {\n cipher = forge.cipher.createCipher(algorithm, options.key);\n }\n\n // backwards compatible start API\n var start = cipher.start;\n cipher.start = function(iv, options) {\n // backwards compatibility: support second arg as output buffer\n var output = null;\n if(options instanceof forge.util.ByteBuffer) {\n output = options;\n options = {};\n }\n options = options || {};\n options.output = output;\n options.iv = iv;\n start.call(cipher, options);\n };\n\n return cipher;\n}\n","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n const prefixCodePoint = prefix.codePointAt(0);\n /* c8 ignore next 3 */\n if (prefixCodePoint === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefixCodePoint;\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});\n//# sourceMappingURL=base10.js.map","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});\n//# sourceMappingURL=base16.js.map","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});\n//# sourceMappingURL=base2.js.map","import { from } from './base.js';\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂');\nconst alphabetBytesToChars = (alphabet.reduce((p, c, i) => { p[i] = c; return p; }, ([])));\nconst alphabetCharsToBytes = (alphabet.reduce((p, c, i) => {\n const codePoint = c.codePointAt(0);\n if (codePoint == null) {\n throw new Error(`Invalid character: ${c}`);\n }\n p[codePoint] = i;\n return p;\n}, ([])));\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const codePoint = char.codePointAt(0);\n if (codePoint == null) {\n throw new Error(`Invalid character: ${char}`);\n }\n const byt = alphabetCharsToBytes[codePoint];\n if (byt == null) {\n throw new Error(`Non-base256emoji character: ${char}`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n});\n//# sourceMappingURL=base256emoji.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base36.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});\n//# sourceMappingURL=base8.js.map","import { fromString, toString } from '../bytes.js';\nimport { from } from './base.js';\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n});\n//# sourceMappingURL=identity.js.map","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 0x0200;\nexport function encode(node) {\n return textEncoder.encode(JSON.stringify(node));\n}\nexport function decode(data) {\n return JSON.parse(textDecoder.decode(data));\n}\n//# sourceMappingURL=json.js.map","import { coerce } from '../bytes.js';\nexport const name = 'raw';\nexport const code = 0x55;\nexport function encode(node) {\n return coerce(node);\n}\nexport function decode(data) {\n return coerce(data);\n}\n//# sourceMappingURL=raw.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n/**\n * Used to check that the passed multihash has the passed code\n */\nexport function hasCode(digest, code) {\n return digest.code === code;\n}\n//# sourceMappingURL=digest.js.map","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0x0;\nconst name = 'identity';\nconst encode = coerce;\nfunction digest(input) {\n return Digest.create(code, encode(input));\n}\nexport const identity = { code, name, encode, digest };\n//# sourceMappingURL=identity.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","import { base32 } from './bases/base32.js';\nimport { base36 } from './bases/base36.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n case base36.prefix: {\n const decoder = base ?? base36;\n return [base36.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base2 from './bases/base2.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base8 from './bases/base8.js';\nimport * as identityBase from './bases/identity.js';\nimport * as json from './codecs/json.js';\nimport * as raw from './codecs/raw.js';\nimport * as identity from './hashes/identity.js';\nimport * as sha2 from './hashes/sha2.js';\nimport { CID, hasher, digest, varint, bytes } from './index.js';\nexport const bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji };\nexport const hashes = { ...sha2, ...identity };\nexport const codecs = { raw, json };\nexport { CID, hasher, digest, varint, bytes };\n//# sourceMappingURL=basics.js.map","/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc(size = 0) {\n return new Uint8Array(size);\n}\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe(size = 0) {\n return new Uint8Array(size);\n}\n//# sourceMappingURL=alloc.js.map","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '#alloc';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: {\n decode\n }\n };\n}\nconst string = createCodec('utf8', 'u', (buf) => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, (str) => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', (buf) => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, (str) => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;\n//# sourceMappingURL=bases.js.map","import bases, {} from './util/bases.js';\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n // add multibase prefix\n return base.decoder.decode(`${base.prefix}${string}`); // eslint-disable-line @typescript-eslint/restrict-template-expressions\n}\n//# sourceMappingURL=from-string.js.map","import bases, {} from './util/bases.js';\n/**\n * Turns a `Uint8Array` into a string.\n *\n * Supports `utf8`, `utf-8` and any encoding supported by the multibase module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n // strip multibase prefix\n return base.encoder.encode(array).substring(1);\n}\n//# sourceMappingURL=to-string.js.map","/* eslint-env browser */\n// Check native crypto exists and is enabled (In insecure context `self.crypto`\n// exists but `self.crypto.subtle` does not).\nexport default {\n get(win = globalThis) {\n const nativeCrypto = win.crypto;\n if (nativeCrypto == null || nativeCrypto.subtle == null) {\n throw Object.assign(new Error('Missing Web Crypto API. ' +\n 'The most likely cause of this error is that this page is being accessed ' +\n 'from an insecure context (i.e. not HTTPS). For more information and ' +\n 'possible resolutions see ' +\n 'https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api'), { code: 'ERR_MISSING_WEB_CRYPTO' });\n }\n return nativeCrypto;\n }\n};\n//# sourceMappingURL=webcrypto.js.map","/**\n * Object IDs for ASN.1.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nforge.pki = forge.pki || {};\nvar oids = module.exports = forge.pki.oids = forge.oids = forge.oids || {};\n\n// set id to name mapping and name to id mapping\nfunction _IN(id, name) {\n oids[id] = name;\n oids[name] = id;\n}\n// set id to name mapping only\nfunction _I_(id, name) {\n oids[id] = name;\n}\n\n// algorithm OIDs\n_IN('1.2.840.113549.1.1.1', 'rsaEncryption');\n// Note: md2 & md4 not implemented\n//_IN('1.2.840.113549.1.1.2', 'md2WithRSAEncryption');\n//_IN('1.2.840.113549.1.1.3', 'md4WithRSAEncryption');\n_IN('1.2.840.113549.1.1.4', 'md5WithRSAEncryption');\n_IN('1.2.840.113549.1.1.5', 'sha1WithRSAEncryption');\n_IN('1.2.840.113549.1.1.7', 'RSAES-OAEP');\n_IN('1.2.840.113549.1.1.8', 'mgf1');\n_IN('1.2.840.113549.1.1.9', 'pSpecified');\n_IN('1.2.840.113549.1.1.10', 'RSASSA-PSS');\n_IN('1.2.840.113549.1.1.11', 'sha256WithRSAEncryption');\n_IN('1.2.840.113549.1.1.12', 'sha384WithRSAEncryption');\n_IN('1.2.840.113549.1.1.13', 'sha512WithRSAEncryption');\n// Edwards-curve Digital Signature Algorithm (EdDSA) Ed25519\n_IN('1.3.101.112', 'EdDSA25519');\n\n_IN('1.2.840.10040.4.3', 'dsa-with-sha1');\n\n_IN('1.3.14.3.2.7', 'desCBC');\n\n_IN('1.3.14.3.2.26', 'sha1');\n// Deprecated equivalent of sha1WithRSAEncryption\n_IN('1.3.14.3.2.29', 'sha1WithRSASignature');\n_IN('2.16.840.1.101.3.4.2.1', 'sha256');\n_IN('2.16.840.1.101.3.4.2.2', 'sha384');\n_IN('2.16.840.1.101.3.4.2.3', 'sha512');\n_IN('2.16.840.1.101.3.4.2.4', 'sha224');\n_IN('2.16.840.1.101.3.4.2.5', 'sha512-224');\n_IN('2.16.840.1.101.3.4.2.6', 'sha512-256');\n_IN('1.2.840.113549.2.2', 'md2');\n_IN('1.2.840.113549.2.5', 'md5');\n\n// pkcs#7 content types\n_IN('1.2.840.113549.1.7.1', 'data');\n_IN('1.2.840.113549.1.7.2', 'signedData');\n_IN('1.2.840.113549.1.7.3', 'envelopedData');\n_IN('1.2.840.113549.1.7.4', 'signedAndEnvelopedData');\n_IN('1.2.840.113549.1.7.5', 'digestedData');\n_IN('1.2.840.113549.1.7.6', 'encryptedData');\n\n// pkcs#9 oids\n_IN('1.2.840.113549.1.9.1', 'emailAddress');\n_IN('1.2.840.113549.1.9.2', 'unstructuredName');\n_IN('1.2.840.113549.1.9.3', 'contentType');\n_IN('1.2.840.113549.1.9.4', 'messageDigest');\n_IN('1.2.840.113549.1.9.5', 'signingTime');\n_IN('1.2.840.113549.1.9.6', 'counterSignature');\n_IN('1.2.840.113549.1.9.7', 'challengePassword');\n_IN('1.2.840.113549.1.9.8', 'unstructuredAddress');\n_IN('1.2.840.113549.1.9.14', 'extensionRequest');\n\n_IN('1.2.840.113549.1.9.20', 'friendlyName');\n_IN('1.2.840.113549.1.9.21', 'localKeyId');\n_IN('1.2.840.113549.1.9.22.1', 'x509Certificate');\n\n// pkcs#12 safe bags\n_IN('1.2.840.113549.1.12.10.1.1', 'keyBag');\n_IN('1.2.840.113549.1.12.10.1.2', 'pkcs8ShroudedKeyBag');\n_IN('1.2.840.113549.1.12.10.1.3', 'certBag');\n_IN('1.2.840.113549.1.12.10.1.4', 'crlBag');\n_IN('1.2.840.113549.1.12.10.1.5', 'secretBag');\n_IN('1.2.840.113549.1.12.10.1.6', 'safeContentsBag');\n\n// password-based-encryption for pkcs#12\n_IN('1.2.840.113549.1.5.13', 'pkcs5PBES2');\n_IN('1.2.840.113549.1.5.12', 'pkcs5PBKDF2');\n\n_IN('1.2.840.113549.1.12.1.1', 'pbeWithSHAAnd128BitRC4');\n_IN('1.2.840.113549.1.12.1.2', 'pbeWithSHAAnd40BitRC4');\n_IN('1.2.840.113549.1.12.1.3', 'pbeWithSHAAnd3-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.4', 'pbeWithSHAAnd2-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.5', 'pbeWithSHAAnd128BitRC2-CBC');\n_IN('1.2.840.113549.1.12.1.6', 'pbewithSHAAnd40BitRC2-CBC');\n\n// hmac OIDs\n_IN('1.2.840.113549.2.7', 'hmacWithSHA1');\n_IN('1.2.840.113549.2.8', 'hmacWithSHA224');\n_IN('1.2.840.113549.2.9', 'hmacWithSHA256');\n_IN('1.2.840.113549.2.10', 'hmacWithSHA384');\n_IN('1.2.840.113549.2.11', 'hmacWithSHA512');\n\n// symmetric key algorithm oids\n_IN('1.2.840.113549.3.7', 'des-EDE3-CBC');\n_IN('2.16.840.1.101.3.4.1.2', 'aes128-CBC');\n_IN('2.16.840.1.101.3.4.1.22', 'aes192-CBC');\n_IN('2.16.840.1.101.3.4.1.42', 'aes256-CBC');\n\n// certificate issuer/subject OIDs\n_IN('2.5.4.3', 'commonName');\n_IN('2.5.4.4', 'surname');\n_IN('2.5.4.5', 'serialNumber');\n_IN('2.5.4.6', 'countryName');\n_IN('2.5.4.7', 'localityName');\n_IN('2.5.4.8', 'stateOrProvinceName');\n_IN('2.5.4.9', 'streetAddress');\n_IN('2.5.4.10', 'organizationName');\n_IN('2.5.4.11', 'organizationalUnitName');\n_IN('2.5.4.12', 'title');\n_IN('2.5.4.13', 'description');\n_IN('2.5.4.15', 'businessCategory');\n_IN('2.5.4.17', 'postalCode');\n_IN('2.5.4.42', 'givenName');\n_IN('1.3.6.1.4.1.311.60.2.1.2', 'jurisdictionOfIncorporationStateOrProvinceName');\n_IN('1.3.6.1.4.1.311.60.2.1.3', 'jurisdictionOfIncorporationCountryName');\n\n// X.509 extension OIDs\n_IN('2.16.840.1.113730.1.1', 'nsCertType');\n_IN('2.16.840.1.113730.1.13', 'nsComment'); // deprecated in theory; still widely used\n_I_('2.5.29.1', 'authorityKeyIdentifier'); // deprecated, use .35\n_I_('2.5.29.2', 'keyAttributes'); // obsolete use .37 or .15\n_I_('2.5.29.3', 'certificatePolicies'); // deprecated, use .32\n_I_('2.5.29.4', 'keyUsageRestriction'); // obsolete use .37 or .15\n_I_('2.5.29.5', 'policyMapping'); // deprecated use .33\n_I_('2.5.29.6', 'subtreesConstraint'); // obsolete use .30\n_I_('2.5.29.7', 'subjectAltName'); // deprecated use .17\n_I_('2.5.29.8', 'issuerAltName'); // deprecated use .18\n_I_('2.5.29.9', 'subjectDirectoryAttributes');\n_I_('2.5.29.10', 'basicConstraints'); // deprecated use .19\n_I_('2.5.29.11', 'nameConstraints'); // deprecated use .30\n_I_('2.5.29.12', 'policyConstraints'); // deprecated use .36\n_I_('2.5.29.13', 'basicConstraints'); // deprecated use .19\n_IN('2.5.29.14', 'subjectKeyIdentifier');\n_IN('2.5.29.15', 'keyUsage');\n_I_('2.5.29.16', 'privateKeyUsagePeriod');\n_IN('2.5.29.17', 'subjectAltName');\n_IN('2.5.29.18', 'issuerAltName');\n_IN('2.5.29.19', 'basicConstraints');\n_I_('2.5.29.20', 'cRLNumber');\n_I_('2.5.29.21', 'cRLReason');\n_I_('2.5.29.22', 'expirationDate');\n_I_('2.5.29.23', 'instructionCode');\n_I_('2.5.29.24', 'invalidityDate');\n_I_('2.5.29.25', 'cRLDistributionPoints'); // deprecated use .31\n_I_('2.5.29.26', 'issuingDistributionPoint'); // deprecated use .28\n_I_('2.5.29.27', 'deltaCRLIndicator');\n_I_('2.5.29.28', 'issuingDistributionPoint');\n_I_('2.5.29.29', 'certificateIssuer');\n_I_('2.5.29.30', 'nameConstraints');\n_IN('2.5.29.31', 'cRLDistributionPoints');\n_IN('2.5.29.32', 'certificatePolicies');\n_I_('2.5.29.33', 'policyMappings');\n_I_('2.5.29.34', 'policyConstraints'); // deprecated use .36\n_IN('2.5.29.35', 'authorityKeyIdentifier');\n_I_('2.5.29.36', 'policyConstraints');\n_IN('2.5.29.37', 'extKeyUsage');\n_I_('2.5.29.46', 'freshestCRL');\n_I_('2.5.29.54', 'inhibitAnyPolicy');\n\n// extKeyUsage purposes\n_IN('1.3.6.1.4.1.11129.2.4.2', 'timestampList');\n_IN('1.3.6.1.5.5.7.1.1', 'authorityInfoAccess');\n_IN('1.3.6.1.5.5.7.3.1', 'serverAuth');\n_IN('1.3.6.1.5.5.7.3.2', 'clientAuth');\n_IN('1.3.6.1.5.5.7.3.3', 'codeSigning');\n_IN('1.3.6.1.5.5.7.3.4', 'emailProtection');\n_IN('1.3.6.1.5.5.7.3.8', 'timeStamping');\n","/**\n * Javascript implementation of Abstract Syntax Notation Number One.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n *\n * An API for storing data using the Abstract Syntax Notation Number One\n * format using DER (Distinguished Encoding Rules) encoding. This encoding is\n * commonly used to store data for PKI, i.e. X.509 Certificates, and this\n * implementation exists for that purpose.\n *\n * Abstract Syntax Notation Number One (ASN.1) is used to define the abstract\n * syntax of information without restricting the way the information is encoded\n * for transmission. It provides a standard that allows for open systems\n * communication. ASN.1 defines the syntax of information data and a number of\n * simple data types as well as a notation for describing them and specifying\n * values for them.\n *\n * The RSA algorithm creates public and private keys that are often stored in\n * X.509 or PKCS#X formats -- which use ASN.1 (encoded in DER format). This\n * class provides the most basic functionality required to store and load DSA\n * keys that are encoded according to ASN.1.\n *\n * The most common binary encodings for ASN.1 are BER (Basic Encoding Rules)\n * and DER (Distinguished Encoding Rules). DER is just a subset of BER that\n * has stricter requirements for how data must be encoded.\n *\n * Each ASN.1 structure has a tag (a byte identifying the ASN.1 structure type)\n * and a byte array for the value of this ASN1 structure which may be data or a\n * list of ASN.1 structures.\n *\n * Each ASN.1 structure using BER is (Tag-Length-Value):\n *\n * | byte 0 | bytes X | bytes Y |\n * |--------|---------|----------\n * | tag | length | value |\n *\n * ASN.1 allows for tags to be of \"High-tag-number form\" which allows a tag to\n * be two or more octets, but that is not supported by this class. A tag is\n * only 1 byte. Bits 1-5 give the tag number (ie the data type within a\n * particular 'class'), 6 indicates whether or not the ASN.1 value is\n * constructed from other ASN.1 values, and bits 7 and 8 give the 'class'. If\n * bits 7 and 8 are both zero, the class is UNIVERSAL. If only bit 7 is set,\n * then the class is APPLICATION. If only bit 8 is set, then the class is\n * CONTEXT_SPECIFIC. If both bits 7 and 8 are set, then the class is PRIVATE.\n * The tag numbers for the data types for the class UNIVERSAL are listed below:\n *\n * UNIVERSAL 0 Reserved for use by the encoding rules\n * UNIVERSAL 1 Boolean type\n * UNIVERSAL 2 Integer type\n * UNIVERSAL 3 Bitstring type\n * UNIVERSAL 4 Octetstring type\n * UNIVERSAL 5 Null type\n * UNIVERSAL 6 Object identifier type\n * UNIVERSAL 7 Object descriptor type\n * UNIVERSAL 8 External type and Instance-of type\n * UNIVERSAL 9 Real type\n * UNIVERSAL 10 Enumerated type\n * UNIVERSAL 11 Embedded-pdv type\n * UNIVERSAL 12 UTF8String type\n * UNIVERSAL 13 Relative object identifier type\n * UNIVERSAL 14-15 Reserved for future editions\n * UNIVERSAL 16 Sequence and Sequence-of types\n * UNIVERSAL 17 Set and Set-of types\n * UNIVERSAL 18-22, 25-30 Character string types\n * UNIVERSAL 23-24 Time types\n *\n * The length of an ASN.1 structure is specified after the tag identifier.\n * There is a definite form and an indefinite form. The indefinite form may\n * be used if the encoding is constructed and not all immediately available.\n * The indefinite form is encoded using a length byte with only the 8th bit\n * set. The end of the constructed object is marked using end-of-contents\n * octets (two zero bytes).\n *\n * The definite form looks like this:\n *\n * The length may take up 1 or more bytes, it depends on the length of the\n * value of the ASN.1 structure. DER encoding requires that if the ASN.1\n * structure has a value that has a length greater than 127, more than 1 byte\n * will be used to store its length, otherwise just one byte will be used.\n * This is strict.\n *\n * In the case that the length of the ASN.1 value is less than 127, 1 octet\n * (byte) is used to store the \"short form\" length. The 8th bit has a value of\n * 0 indicating the length is \"short form\" and not \"long form\" and bits 7-1\n * give the length of the data. (The 8th bit is the left-most, most significant\n * bit: also known as big endian or network format).\n *\n * In the case that the length of the ASN.1 value is greater than 127, 2 to\n * 127 octets (bytes) are used to store the \"long form\" length. The first\n * byte's 8th bit is set to 1 to indicate the length is \"long form.\" Bits 7-1\n * give the number of additional octets. All following octets are in base 256\n * with the most significant digit first (typical big-endian binary unsigned\n * integer storage). So, for instance, if the length of a value was 257, the\n * first byte would be set to:\n *\n * 10000010 = 130 = 0x82.\n *\n * This indicates there are 2 octets (base 256) for the length. The second and\n * third bytes (the octets just mentioned) would store the length in base 256:\n *\n * octet 2: 00000001 = 1 * 256^1 = 256\n * octet 3: 00000001 = 1 * 256^0 = 1\n * total = 257\n *\n * The algorithm for converting a js integer value of 257 to base-256 is:\n *\n * var value = 257;\n * var bytes = [];\n * bytes[0] = (value >>> 8) & 0xFF; // most significant byte first\n * bytes[1] = value & 0xFF; // least significant byte last\n *\n * On the ASN.1 UNIVERSAL Object Identifier (OID) type:\n *\n * An OID can be written like: \"value1.value2.value3...valueN\"\n *\n * The DER encoding rules:\n *\n * The first byte has the value 40 * value1 + value2.\n * The following bytes, if any, encode the remaining values. Each value is\n * encoded in base 128, most significant digit first (big endian), with as\n * few digits as possible, and the most significant bit of each byte set\n * to 1 except the last in each value's encoding. For example: Given the\n * OID \"1.2.840.113549\", its DER encoding is (remember each byte except the\n * last one in each encoding is OR'd with 0x80):\n *\n * byte 1: 40 * 1 + 2 = 42 = 0x2A.\n * bytes 2-3: 128 * 6 + 72 = 840 = 6 72 = 6 72 = 0x0648 = 0x8648\n * bytes 4-6: 16384 * 6 + 128 * 119 + 13 = 6 119 13 = 0x06770D = 0x86F70D\n *\n * The final value is: 0x2A864886F70D.\n * The full OID (including ASN.1 tag and length of 6 bytes) is:\n * 0x06062A864886F70D\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./oids');\n\n/* ASN.1 API */\nvar asn1 = module.exports = forge.asn1 = forge.asn1 || {};\n\n/**\n * ASN.1 classes.\n */\nasn1.Class = {\n UNIVERSAL: 0x00,\n APPLICATION: 0x40,\n CONTEXT_SPECIFIC: 0x80,\n PRIVATE: 0xC0\n};\n\n/**\n * ASN.1 types. Not all types are supported by this implementation, only\n * those necessary to implement a simple PKI are implemented.\n */\nasn1.Type = {\n NONE: 0,\n BOOLEAN: 1,\n INTEGER: 2,\n BITSTRING: 3,\n OCTETSTRING: 4,\n NULL: 5,\n OID: 6,\n ODESC: 7,\n EXTERNAL: 8,\n REAL: 9,\n ENUMERATED: 10,\n EMBEDDED: 11,\n UTF8: 12,\n ROID: 13,\n SEQUENCE: 16,\n SET: 17,\n PRINTABLESTRING: 19,\n IA5STRING: 22,\n UTCTIME: 23,\n GENERALIZEDTIME: 24,\n BMPSTRING: 30\n};\n\n/**\n * Creates a new asn1 object.\n *\n * @param tagClass the tag class for the object.\n * @param type the data type (tag number) for the object.\n * @param constructed true if the asn1 object is in constructed form.\n * @param value the value for the object, if it is not constructed.\n * @param [options] the options to use:\n * [bitStringContents] the plain BIT STRING content including padding\n * byte.\n *\n * @return the asn1 object.\n */\nasn1.create = function(tagClass, type, constructed, value, options) {\n /* An asn1 object has a tagClass, a type, a constructed flag, and a\n value. The value's type depends on the constructed flag. If\n constructed, it will contain a list of other asn1 objects. If not,\n it will contain the ASN.1 value as an array of bytes formatted\n according to the ASN.1 data type. */\n\n // remove undefined values\n if(forge.util.isArray(value)) {\n var tmp = [];\n for(var i = 0; i < value.length; ++i) {\n if(value[i] !== undefined) {\n tmp.push(value[i]);\n }\n }\n value = tmp;\n }\n\n var obj = {\n tagClass: tagClass,\n type: type,\n constructed: constructed,\n composed: constructed || forge.util.isArray(value),\n value: value\n };\n if(options && 'bitStringContents' in options) {\n // TODO: copy byte buffer if it's a buffer not a string\n obj.bitStringContents = options.bitStringContents;\n // TODO: add readonly flag to avoid this overhead\n // save copy to detect changes\n obj.original = asn1.copy(obj);\n }\n return obj;\n};\n\n/**\n * Copies an asn1 object.\n *\n * @param obj the asn1 object.\n * @param [options] copy options:\n * [excludeBitStringContents] true to not copy bitStringContents\n *\n * @return the a copy of the asn1 object.\n */\nasn1.copy = function(obj, options) {\n var copy;\n\n if(forge.util.isArray(obj)) {\n copy = [];\n for(var i = 0; i < obj.length; ++i) {\n copy.push(asn1.copy(obj[i], options));\n }\n return copy;\n }\n\n if(typeof obj === 'string') {\n // TODO: copy byte buffer if it's a buffer not a string\n return obj;\n }\n\n copy = {\n tagClass: obj.tagClass,\n type: obj.type,\n constructed: obj.constructed,\n composed: obj.composed,\n value: asn1.copy(obj.value, options)\n };\n if(options && !options.excludeBitStringContents) {\n // TODO: copy byte buffer if it's a buffer not a string\n copy.bitStringContents = obj.bitStringContents;\n }\n return copy;\n};\n\n/**\n * Compares asn1 objects for equality.\n *\n * Note this function does not run in constant time.\n *\n * @param obj1 the first asn1 object.\n * @param obj2 the second asn1 object.\n * @param [options] compare options:\n * [includeBitStringContents] true to compare bitStringContents\n *\n * @return true if the asn1 objects are equal.\n */\nasn1.equals = function(obj1, obj2, options) {\n if(forge.util.isArray(obj1)) {\n if(!forge.util.isArray(obj2)) {\n return false;\n }\n if(obj1.length !== obj2.length) {\n return false;\n }\n for(var i = 0; i < obj1.length; ++i) {\n if(!asn1.equals(obj1[i], obj2[i])) {\n return false;\n }\n }\n return true;\n }\n\n if(typeof obj1 !== typeof obj2) {\n return false;\n }\n\n if(typeof obj1 === 'string') {\n return obj1 === obj2;\n }\n\n var equal = obj1.tagClass === obj2.tagClass &&\n obj1.type === obj2.type &&\n obj1.constructed === obj2.constructed &&\n obj1.composed === obj2.composed &&\n asn1.equals(obj1.value, obj2.value);\n if(options && options.includeBitStringContents) {\n equal = equal && (obj1.bitStringContents === obj2.bitStringContents);\n }\n\n return equal;\n};\n\n/**\n * Gets the length of a BER-encoded ASN.1 value.\n *\n * In case the length is not specified, undefined is returned.\n *\n * @param b the BER-encoded ASN.1 byte buffer, starting with the first\n * length byte.\n *\n * @return the length of the BER-encoded ASN.1 value or undefined.\n */\nasn1.getBerValueLength = function(b) {\n // TODO: move this function and related DER/BER functions to a der.js\n // file; better abstract ASN.1 away from der/ber.\n var b2 = b.getByte();\n if(b2 === 0x80) {\n return undefined;\n }\n\n // see if the length is \"short form\" or \"long form\" (bit 8 set)\n var length;\n var longForm = b2 & 0x80;\n if(!longForm) {\n // length is just the first byte\n length = b2;\n } else {\n // the number of bytes the length is specified in bits 7 through 1\n // and each length byte is in big-endian base-256\n length = b.getInt((b2 & 0x7F) << 3);\n }\n return length;\n};\n\n/**\n * Check if the byte buffer has enough bytes. Throws an Error if not.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the bytes remaining in the current parsing state.\n * @param n the number of bytes the buffer must have.\n */\nfunction _checkBufferLength(bytes, remaining, n) {\n if(n > remaining) {\n var error = new Error('Too few bytes to parse DER.');\n error.available = bytes.length();\n error.remaining = remaining;\n error.requested = n;\n throw error;\n }\n}\n\n/**\n * Gets the length of a BER-encoded ASN.1 value.\n *\n * In case the length is not specified, undefined is returned.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the bytes remaining in the current parsing state.\n *\n * @return the length of the BER-encoded ASN.1 value or undefined.\n */\nvar _getValueLength = function(bytes, remaining) {\n // TODO: move this function and related DER/BER functions to a der.js\n // file; better abstract ASN.1 away from der/ber.\n // fromDer already checked that this byte exists\n var b2 = bytes.getByte();\n remaining--;\n if(b2 === 0x80) {\n return undefined;\n }\n\n // see if the length is \"short form\" or \"long form\" (bit 8 set)\n var length;\n var longForm = b2 & 0x80;\n if(!longForm) {\n // length is just the first byte\n length = b2;\n } else {\n // the number of bytes the length is specified in bits 7 through 1\n // and each length byte is in big-endian base-256\n var longFormBytes = b2 & 0x7F;\n _checkBufferLength(bytes, remaining, longFormBytes);\n length = bytes.getInt(longFormBytes << 3);\n }\n // FIXME: this will only happen for 32 bit getInt with high bit set\n if(length < 0) {\n throw new Error('Negative length: ' + length);\n }\n return length;\n};\n\n/**\n * Parses an asn1 object from a byte buffer in DER format.\n *\n * @param bytes the byte buffer to parse from.\n * @param [strict] true to be strict when checking value lengths, false to\n * allow truncated values (default: true).\n * @param [options] object with options or boolean strict flag\n * [strict] true to be strict when checking value lengths, false to\n * allow truncated values (default: true).\n * [parseAllBytes] true to ensure all bytes are parsed\n * (default: true)\n * [decodeBitStrings] true to attempt to decode the content of\n * BIT STRINGs (not OCTET STRINGs) using strict mode. Note that\n * without schema support to understand the data context this can\n * erroneously decode values that happen to be valid ASN.1. This\n * flag will be deprecated or removed as soon as schema support is\n * available. (default: true)\n *\n * @throws Will throw an error for various malformed input conditions.\n *\n * @return the parsed asn1 object.\n */\nasn1.fromDer = function(bytes, options) {\n if(options === undefined) {\n options = {\n strict: true,\n parseAllBytes: true,\n decodeBitStrings: true\n };\n }\n if(typeof options === 'boolean') {\n options = {\n strict: options,\n parseAllBytes: true,\n decodeBitStrings: true\n };\n }\n if(!('strict' in options)) {\n options.strict = true;\n }\n if(!('parseAllBytes' in options)) {\n options.parseAllBytes = true;\n }\n if(!('decodeBitStrings' in options)) {\n options.decodeBitStrings = true;\n }\n\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n var byteCount = bytes.length();\n var value = _fromDer(bytes, bytes.length(), 0, options);\n if(options.parseAllBytes && bytes.length() !== 0) {\n var error = new Error('Unparsed DER bytes remain after ASN.1 parsing.');\n error.byteCount = byteCount;\n error.remaining = bytes.length();\n throw error;\n }\n return value;\n};\n\n/**\n * Internal function to parse an asn1 object from a byte buffer in DER format.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the number of bytes remaining for this chunk.\n * @param depth the current parsing depth.\n * @param options object with same options as fromDer().\n *\n * @return the parsed asn1 object.\n */\nfunction _fromDer(bytes, remaining, depth, options) {\n // temporary storage for consumption calculations\n var start;\n\n // minimum length for ASN.1 DER structure is 2\n _checkBufferLength(bytes, remaining, 2);\n\n // get the first byte\n var b1 = bytes.getByte();\n // consumed one byte\n remaining--;\n\n // get the tag class\n var tagClass = (b1 & 0xC0);\n\n // get the type (bits 1-5)\n var type = b1 & 0x1F;\n\n // get the variable value length and adjust remaining bytes\n start = bytes.length();\n var length = _getValueLength(bytes, remaining);\n remaining -= start - bytes.length();\n\n // ensure there are enough bytes to get the value\n if(length !== undefined && length > remaining) {\n if(options.strict) {\n var error = new Error('Too few bytes to read ASN.1 value.');\n error.available = bytes.length();\n error.remaining = remaining;\n error.requested = length;\n throw error;\n }\n // Note: be lenient with truncated values and use remaining state bytes\n length = remaining;\n }\n\n // value storage\n var value;\n // possible BIT STRING contents storage\n var bitStringContents;\n\n // constructed flag is bit 6 (32 = 0x20) of the first byte\n var constructed = ((b1 & 0x20) === 0x20);\n if(constructed) {\n // parse child asn1 objects from the value\n value = [];\n if(length === undefined) {\n // asn1 object of indefinite length, read until end tag\n for(;;) {\n _checkBufferLength(bytes, remaining, 2);\n if(bytes.bytes(2) === String.fromCharCode(0, 0)) {\n bytes.getBytes(2);\n remaining -= 2;\n break;\n }\n start = bytes.length();\n value.push(_fromDer(bytes, remaining, depth + 1, options));\n remaining -= start - bytes.length();\n }\n } else {\n // parsing asn1 object of definite length\n while(length > 0) {\n start = bytes.length();\n value.push(_fromDer(bytes, length, depth + 1, options));\n remaining -= start - bytes.length();\n length -= start - bytes.length();\n }\n }\n }\n\n // if a BIT STRING, save the contents including padding\n if(value === undefined && tagClass === asn1.Class.UNIVERSAL &&\n type === asn1.Type.BITSTRING) {\n bitStringContents = bytes.bytes(length);\n }\n\n // determine if a non-constructed value should be decoded as a composed\n // value that contains other ASN.1 objects. BIT STRINGs (and OCTET STRINGs)\n // can be used this way.\n if(value === undefined && options.decodeBitStrings &&\n tagClass === asn1.Class.UNIVERSAL &&\n // FIXME: OCTET STRINGs not yet supported here\n // .. other parts of forge expect to decode OCTET STRINGs manually\n (type === asn1.Type.BITSTRING /*|| type === asn1.Type.OCTETSTRING*/) &&\n length > 1) {\n // save read position\n var savedRead = bytes.read;\n var savedRemaining = remaining;\n var unused = 0;\n if(type === asn1.Type.BITSTRING) {\n /* The first octet gives the number of bits by which the length of the\n bit string is less than the next multiple of eight (this is called\n the \"number of unused bits\").\n\n The second and following octets give the value of the bit string\n converted to an octet string. */\n _checkBufferLength(bytes, remaining, 1);\n unused = bytes.getByte();\n remaining--;\n }\n // if all bits are used, maybe the BIT/OCTET STRING holds ASN.1 objs\n if(unused === 0) {\n try {\n // attempt to parse child asn1 object from the value\n // (stored in array to signal composed value)\n start = bytes.length();\n var subOptions = {\n // enforce strict mode to avoid parsing ASN.1 from plain data\n strict: true,\n decodeBitStrings: true\n };\n var composed = _fromDer(bytes, remaining, depth + 1, subOptions);\n var used = start - bytes.length();\n remaining -= used;\n if(type == asn1.Type.BITSTRING) {\n used++;\n }\n\n // if the data all decoded and the class indicates UNIVERSAL or\n // CONTEXT_SPECIFIC then assume we've got an encapsulated ASN.1 object\n var tc = composed.tagClass;\n if(used === length &&\n (tc === asn1.Class.UNIVERSAL || tc === asn1.Class.CONTEXT_SPECIFIC)) {\n value = [composed];\n }\n } catch(ex) {\n }\n }\n if(value === undefined) {\n // restore read position\n bytes.read = savedRead;\n remaining = savedRemaining;\n }\n }\n\n if(value === undefined) {\n // asn1 not constructed or composed, get raw value\n // TODO: do DER to OID conversion and vice-versa in .toDer?\n\n if(length === undefined) {\n if(options.strict) {\n throw new Error('Non-constructed ASN.1 object of indefinite length.');\n }\n // be lenient and use remaining state bytes\n length = remaining;\n }\n\n if(type === asn1.Type.BMPSTRING) {\n value = '';\n for(; length > 0; length -= 2) {\n _checkBufferLength(bytes, remaining, 2);\n value += String.fromCharCode(bytes.getInt16());\n remaining -= 2;\n }\n } else {\n value = bytes.getBytes(length);\n remaining -= length;\n }\n }\n\n // add BIT STRING contents if available\n var asn1Options = bitStringContents === undefined ? null : {\n bitStringContents: bitStringContents\n };\n\n // create and return asn1 object\n return asn1.create(tagClass, type, constructed, value, asn1Options);\n}\n\n/**\n * Converts the given asn1 object to a buffer of bytes in DER format.\n *\n * @param asn1 the asn1 object to convert to bytes.\n *\n * @return the buffer of bytes.\n */\nasn1.toDer = function(obj) {\n var bytes = forge.util.createBuffer();\n\n // build the first byte\n var b1 = obj.tagClass | obj.type;\n\n // for storing the ASN.1 value\n var value = forge.util.createBuffer();\n\n // use BIT STRING contents if available and data not changed\n var useBitStringContents = false;\n if('bitStringContents' in obj) {\n useBitStringContents = true;\n if(obj.original) {\n useBitStringContents = asn1.equals(obj, obj.original);\n }\n }\n\n if(useBitStringContents) {\n value.putBytes(obj.bitStringContents);\n } else if(obj.composed) {\n // if composed, use each child asn1 object's DER bytes as value\n // turn on 6th bit (0x20 = 32) to indicate asn1 is constructed\n // from other asn1 objects\n if(obj.constructed) {\n b1 |= 0x20;\n } else {\n // type is a bit string, add unused bits of 0x00\n value.putByte(0x00);\n }\n\n // add all of the child DER bytes together\n for(var i = 0; i < obj.value.length; ++i) {\n if(obj.value[i] !== undefined) {\n value.putBuffer(asn1.toDer(obj.value[i]));\n }\n }\n } else {\n // use asn1.value directly\n if(obj.type === asn1.Type.BMPSTRING) {\n for(var i = 0; i < obj.value.length; ++i) {\n value.putInt16(obj.value.charCodeAt(i));\n }\n } else {\n // ensure integer is minimally-encoded\n // TODO: should all leading bytes be stripped vs just one?\n // .. ex '00 00 01' => '01'?\n if(obj.type === asn1.Type.INTEGER &&\n obj.value.length > 1 &&\n // leading 0x00 for positive integer\n ((obj.value.charCodeAt(0) === 0 &&\n (obj.value.charCodeAt(1) & 0x80) === 0) ||\n // leading 0xFF for negative integer\n (obj.value.charCodeAt(0) === 0xFF &&\n (obj.value.charCodeAt(1) & 0x80) === 0x80))) {\n value.putBytes(obj.value.substr(1));\n } else {\n value.putBytes(obj.value);\n }\n }\n }\n\n // add tag byte\n bytes.putByte(b1);\n\n // use \"short form\" encoding\n if(value.length() <= 127) {\n // one byte describes the length\n // bit 8 = 0 and bits 7-1 = length\n bytes.putByte(value.length() & 0x7F);\n } else {\n // use \"long form\" encoding\n // 2 to 127 bytes describe the length\n // first byte: bit 8 = 1 and bits 7-1 = # of additional bytes\n // other bytes: length in base 256, big-endian\n var len = value.length();\n var lenBytes = '';\n do {\n lenBytes += String.fromCharCode(len & 0xFF);\n len = len >>> 8;\n } while(len > 0);\n\n // set first byte to # bytes used to store the length and turn on\n // bit 8 to indicate long-form length is used\n bytes.putByte(lenBytes.length | 0x80);\n\n // concatenate length bytes in reverse since they were generated\n // little endian and we need big endian\n for(var i = lenBytes.length - 1; i >= 0; --i) {\n bytes.putByte(lenBytes.charCodeAt(i));\n }\n }\n\n // concatenate value bytes\n bytes.putBuffer(value);\n return bytes;\n};\n\n/**\n * Converts an OID dot-separated string to a byte buffer. The byte buffer\n * contains only the DER-encoded value, not any tag or length bytes.\n *\n * @param oid the OID dot-separated string.\n *\n * @return the byte buffer.\n */\nasn1.oidToDer = function(oid) {\n // split OID into individual values\n var values = oid.split('.');\n var bytes = forge.util.createBuffer();\n\n // first byte is 40 * value1 + value2\n bytes.putByte(40 * parseInt(values[0], 10) + parseInt(values[1], 10));\n // other bytes are each value in base 128 with 8th bit set except for\n // the last byte for each value\n var last, valueBytes, value, b;\n for(var i = 2; i < values.length; ++i) {\n // produce value bytes in reverse because we don't know how many\n // bytes it will take to store the value\n last = true;\n valueBytes = [];\n value = parseInt(values[i], 10);\n do {\n b = value & 0x7F;\n value = value >>> 7;\n // if value is not last, then turn on 8th bit\n if(!last) {\n b |= 0x80;\n }\n valueBytes.push(b);\n last = false;\n } while(value > 0);\n\n // add value bytes in reverse (needs to be in big endian)\n for(var n = valueBytes.length - 1; n >= 0; --n) {\n bytes.putByte(valueBytes[n]);\n }\n }\n\n return bytes;\n};\n\n/**\n * Converts a DER-encoded byte buffer to an OID dot-separated string. The\n * byte buffer should contain only the DER-encoded value, not any tag or\n * length bytes.\n *\n * @param bytes the byte buffer.\n *\n * @return the OID dot-separated string.\n */\nasn1.derToOid = function(bytes) {\n var oid;\n\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n // first byte is 40 * value1 + value2\n var b = bytes.getByte();\n oid = Math.floor(b / 40) + '.' + (b % 40);\n\n // other bytes are each value in base 128 with 8th bit set except for\n // the last byte for each value\n var value = 0;\n while(bytes.length() > 0) {\n b = bytes.getByte();\n value = value << 7;\n // not the last byte for the value\n if(b & 0x80) {\n value += b & 0x7F;\n } else {\n // last byte\n oid += '.' + (value + b);\n value = 0;\n }\n }\n\n return oid;\n};\n\n/**\n * Converts a UTCTime value to a date.\n *\n * Note: GeneralizedTime has 4 digits for the year and is used for X.509\n * dates past 2049. Parsing that structure hasn't been implemented yet.\n *\n * @param utc the UTCTime value to convert.\n *\n * @return the date.\n */\nasn1.utcTimeToDate = function(utc) {\n /* The following formats can be used:\n\n YYMMDDhhmmZ\n YYMMDDhhmm+hh'mm'\n YYMMDDhhmm-hh'mm'\n YYMMDDhhmmssZ\n YYMMDDhhmmss+hh'mm'\n YYMMDDhhmmss-hh'mm'\n\n Where:\n\n YY is the least significant two digits of the year\n MM is the month (01 to 12)\n DD is the day (01 to 31)\n hh is the hour (00 to 23)\n mm are the minutes (00 to 59)\n ss are the seconds (00 to 59)\n Z indicates that local time is GMT, + indicates that local time is\n later than GMT, and - indicates that local time is earlier than GMT\n hh' is the absolute value of the offset from GMT in hours\n mm' is the absolute value of the offset from GMT in minutes */\n var date = new Date();\n\n // if YY >= 50 use 19xx, if YY < 50 use 20xx\n var year = parseInt(utc.substr(0, 2), 10);\n year = (year >= 50) ? 1900 + year : 2000 + year;\n var MM = parseInt(utc.substr(2, 2), 10) - 1; // use 0-11 for month\n var DD = parseInt(utc.substr(4, 2), 10);\n var hh = parseInt(utc.substr(6, 2), 10);\n var mm = parseInt(utc.substr(8, 2), 10);\n var ss = 0;\n\n // not just YYMMDDhhmmZ\n if(utc.length > 11) {\n // get character after minutes\n var c = utc.charAt(10);\n var end = 10;\n\n // see if seconds are present\n if(c !== '+' && c !== '-') {\n // get seconds\n ss = parseInt(utc.substr(10, 2), 10);\n end += 2;\n }\n }\n\n // update date\n date.setUTCFullYear(year, MM, DD);\n date.setUTCHours(hh, mm, ss, 0);\n\n if(end) {\n // get +/- after end of time\n c = utc.charAt(end);\n if(c === '+' || c === '-') {\n // get hours+minutes offset\n var hhoffset = parseInt(utc.substr(end + 1, 2), 10);\n var mmoffset = parseInt(utc.substr(end + 4, 2), 10);\n\n // calculate offset in milliseconds\n var offset = hhoffset * 60 + mmoffset;\n offset *= 60000;\n\n // apply offset\n if(c === '+') {\n date.setTime(+date - offset);\n } else {\n date.setTime(+date + offset);\n }\n }\n }\n\n return date;\n};\n\n/**\n * Converts a GeneralizedTime value to a date.\n *\n * @param gentime the GeneralizedTime value to convert.\n *\n * @return the date.\n */\nasn1.generalizedTimeToDate = function(gentime) {\n /* The following formats can be used:\n\n YYYYMMDDHHMMSS\n YYYYMMDDHHMMSS.fff\n YYYYMMDDHHMMSSZ\n YYYYMMDDHHMMSS.fffZ\n YYYYMMDDHHMMSS+hh'mm'\n YYYYMMDDHHMMSS.fff+hh'mm'\n YYYYMMDDHHMMSS-hh'mm'\n YYYYMMDDHHMMSS.fff-hh'mm'\n\n Where:\n\n YYYY is the year\n MM is the month (01 to 12)\n DD is the day (01 to 31)\n hh is the hour (00 to 23)\n mm are the minutes (00 to 59)\n ss are the seconds (00 to 59)\n .fff is the second fraction, accurate to three decimal places\n Z indicates that local time is GMT, + indicates that local time is\n later than GMT, and - indicates that local time is earlier than GMT\n hh' is the absolute value of the offset from GMT in hours\n mm' is the absolute value of the offset from GMT in minutes */\n var date = new Date();\n\n var YYYY = parseInt(gentime.substr(0, 4), 10);\n var MM = parseInt(gentime.substr(4, 2), 10) - 1; // use 0-11 for month\n var DD = parseInt(gentime.substr(6, 2), 10);\n var hh = parseInt(gentime.substr(8, 2), 10);\n var mm = parseInt(gentime.substr(10, 2), 10);\n var ss = parseInt(gentime.substr(12, 2), 10);\n var fff = 0;\n var offset = 0;\n var isUTC = false;\n\n if(gentime.charAt(gentime.length - 1) === 'Z') {\n isUTC = true;\n }\n\n var end = gentime.length - 5, c = gentime.charAt(end);\n if(c === '+' || c === '-') {\n // get hours+minutes offset\n var hhoffset = parseInt(gentime.substr(end + 1, 2), 10);\n var mmoffset = parseInt(gentime.substr(end + 4, 2), 10);\n\n // calculate offset in milliseconds\n offset = hhoffset * 60 + mmoffset;\n offset *= 60000;\n\n // apply offset\n if(c === '+') {\n offset *= -1;\n }\n\n isUTC = true;\n }\n\n // check for second fraction\n if(gentime.charAt(14) === '.') {\n fff = parseFloat(gentime.substr(14), 10) * 1000;\n }\n\n if(isUTC) {\n date.setUTCFullYear(YYYY, MM, DD);\n date.setUTCHours(hh, mm, ss, fff);\n\n // apply offset\n date.setTime(+date + offset);\n } else {\n date.setFullYear(YYYY, MM, DD);\n date.setHours(hh, mm, ss, fff);\n }\n\n return date;\n};\n\n/**\n * Converts a date to a UTCTime value.\n *\n * Note: GeneralizedTime has 4 digits for the year and is used for X.509\n * dates past 2049. Converting to a GeneralizedTime hasn't been\n * implemented yet.\n *\n * @param date the date to convert.\n *\n * @return the UTCTime value.\n */\nasn1.dateToUtcTime = function(date) {\n // TODO: validate; currently assumes proper format\n if(typeof date === 'string') {\n return date;\n }\n\n var rval = '';\n\n // create format YYMMDDhhmmssZ\n var format = [];\n format.push(('' + date.getUTCFullYear()).substr(2));\n format.push('' + (date.getUTCMonth() + 1));\n format.push('' + date.getUTCDate());\n format.push('' + date.getUTCHours());\n format.push('' + date.getUTCMinutes());\n format.push('' + date.getUTCSeconds());\n\n // ensure 2 digits are used for each format entry\n for(var i = 0; i < format.length; ++i) {\n if(format[i].length < 2) {\n rval += '0';\n }\n rval += format[i];\n }\n rval += 'Z';\n\n return rval;\n};\n\n/**\n * Converts a date to a GeneralizedTime value.\n *\n * @param date the date to convert.\n *\n * @return the GeneralizedTime value as a string.\n */\nasn1.dateToGeneralizedTime = function(date) {\n // TODO: validate; currently assumes proper format\n if(typeof date === 'string') {\n return date;\n }\n\n var rval = '';\n\n // create format YYYYMMDDHHMMSSZ\n var format = [];\n format.push('' + date.getUTCFullYear());\n format.push('' + (date.getUTCMonth() + 1));\n format.push('' + date.getUTCDate());\n format.push('' + date.getUTCHours());\n format.push('' + date.getUTCMinutes());\n format.push('' + date.getUTCSeconds());\n\n // ensure 2 digits are used for each format entry\n for(var i = 0; i < format.length; ++i) {\n if(format[i].length < 2) {\n rval += '0';\n }\n rval += format[i];\n }\n rval += 'Z';\n\n return rval;\n};\n\n/**\n * Converts a javascript integer to a DER-encoded byte buffer to be used\n * as the value for an INTEGER type.\n *\n * @param x the integer.\n *\n * @return the byte buffer.\n */\nasn1.integerToDer = function(x) {\n var rval = forge.util.createBuffer();\n if(x >= -0x80 && x < 0x80) {\n return rval.putSignedInt(x, 8);\n }\n if(x >= -0x8000 && x < 0x8000) {\n return rval.putSignedInt(x, 16);\n }\n if(x >= -0x800000 && x < 0x800000) {\n return rval.putSignedInt(x, 24);\n }\n if(x >= -0x80000000 && x < 0x80000000) {\n return rval.putSignedInt(x, 32);\n }\n var error = new Error('Integer too large; max is 32-bits.');\n error.integer = x;\n throw error;\n};\n\n/**\n * Converts a DER-encoded byte buffer to a javascript integer. This is\n * typically used to decode the value of an INTEGER type.\n *\n * @param bytes the byte buffer.\n *\n * @return the integer.\n */\nasn1.derToInteger = function(bytes) {\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n var n = bytes.length() * 8;\n if(n > 32) {\n throw new Error('Integer too large; max is 32-bits.');\n }\n return bytes.getSignedInt(n);\n};\n\n/**\n * Validates that the given ASN.1 object is at least a super set of the\n * given ASN.1 structure. Only tag classes and types are checked. An\n * optional map may also be provided to capture ASN.1 values while the\n * structure is checked.\n *\n * To capture an ASN.1 value, set an object in the validator's 'capture'\n * parameter to the key to use in the capture map. To capture the full\n * ASN.1 object, specify 'captureAsn1'. To capture BIT STRING bytes, including\n * the leading unused bits counter byte, specify 'captureBitStringContents'.\n * To capture BIT STRING bytes, without the leading unused bits counter byte,\n * specify 'captureBitStringValue'.\n *\n * Objects in the validator may set a field 'optional' to true to indicate\n * that it isn't necessary to pass validation.\n *\n * @param obj the ASN.1 object to validate.\n * @param v the ASN.1 structure validator.\n * @param capture an optional map to capture values in.\n * @param errors an optional array for storing validation errors.\n *\n * @return true on success, false on failure.\n */\nasn1.validate = function(obj, v, capture, errors) {\n var rval = false;\n\n // ensure tag class and type are the same if specified\n if((obj.tagClass === v.tagClass || typeof(v.tagClass) === 'undefined') &&\n (obj.type === v.type || typeof(v.type) === 'undefined')) {\n // ensure constructed flag is the same if specified\n if(obj.constructed === v.constructed ||\n typeof(v.constructed) === 'undefined') {\n rval = true;\n\n // handle sub values\n if(v.value && forge.util.isArray(v.value)) {\n var j = 0;\n for(var i = 0; rval && i < v.value.length; ++i) {\n rval = v.value[i].optional || false;\n if(obj.value[j]) {\n rval = asn1.validate(obj.value[j], v.value[i], capture, errors);\n if(rval) {\n ++j;\n } else if(v.value[i].optional) {\n rval = true;\n }\n }\n if(!rval && errors) {\n errors.push(\n '[' + v.name + '] ' +\n 'Tag class \"' + v.tagClass + '\", type \"' +\n v.type + '\" expected value length \"' +\n v.value.length + '\", got \"' +\n obj.value.length + '\"');\n }\n }\n }\n\n if(rval && capture) {\n if(v.capture) {\n capture[v.capture] = obj.value;\n }\n if(v.captureAsn1) {\n capture[v.captureAsn1] = obj;\n }\n if(v.captureBitStringContents && 'bitStringContents' in obj) {\n capture[v.captureBitStringContents] = obj.bitStringContents;\n }\n if(v.captureBitStringValue && 'bitStringContents' in obj) {\n var value;\n if(obj.bitStringContents.length < 2) {\n capture[v.captureBitStringValue] = '';\n } else {\n // FIXME: support unused bits with data shifting\n var unused = obj.bitStringContents.charCodeAt(0);\n if(unused !== 0) {\n throw new Error(\n 'captureBitStringValue only supported for zero unused bits');\n }\n capture[v.captureBitStringValue] = obj.bitStringContents.slice(1);\n }\n }\n }\n } else if(errors) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected constructed \"' + v.constructed + '\", got \"' +\n obj.constructed + '\"');\n }\n } else if(errors) {\n if(obj.tagClass !== v.tagClass) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected tag class \"' + v.tagClass + '\", got \"' +\n obj.tagClass + '\"');\n }\n if(obj.type !== v.type) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected type \"' + v.type + '\", got \"' + obj.type + '\"');\n }\n }\n return rval;\n};\n\n// regex for testing for non-latin characters\nvar _nonLatinRegex = /[^\\\\u0000-\\\\u00ff]/;\n\n/**\n * Pretty prints an ASN.1 object to a string.\n *\n * @param obj the object to write out.\n * @param level the level in the tree.\n * @param indentation the indentation to use.\n *\n * @return the string.\n */\nasn1.prettyPrint = function(obj, level, indentation) {\n var rval = '';\n\n // set default level and indentation\n level = level || 0;\n indentation = indentation || 2;\n\n // start new line for deep levels\n if(level > 0) {\n rval += '\\n';\n }\n\n // create indent\n var indent = '';\n for(var i = 0; i < level * indentation; ++i) {\n indent += ' ';\n }\n\n // print class:type\n rval += indent + 'Tag: ';\n switch(obj.tagClass) {\n case asn1.Class.UNIVERSAL:\n rval += 'Universal:';\n break;\n case asn1.Class.APPLICATION:\n rval += 'Application:';\n break;\n case asn1.Class.CONTEXT_SPECIFIC:\n rval += 'Context-Specific:';\n break;\n case asn1.Class.PRIVATE:\n rval += 'Private:';\n break;\n }\n\n if(obj.tagClass === asn1.Class.UNIVERSAL) {\n rval += obj.type;\n\n // known types\n switch(obj.type) {\n case asn1.Type.NONE:\n rval += ' (None)';\n break;\n case asn1.Type.BOOLEAN:\n rval += ' (Boolean)';\n break;\n case asn1.Type.INTEGER:\n rval += ' (Integer)';\n break;\n case asn1.Type.BITSTRING:\n rval += ' (Bit string)';\n break;\n case asn1.Type.OCTETSTRING:\n rval += ' (Octet string)';\n break;\n case asn1.Type.NULL:\n rval += ' (Null)';\n break;\n case asn1.Type.OID:\n rval += ' (Object Identifier)';\n break;\n case asn1.Type.ODESC:\n rval += ' (Object Descriptor)';\n break;\n case asn1.Type.EXTERNAL:\n rval += ' (External or Instance of)';\n break;\n case asn1.Type.REAL:\n rval += ' (Real)';\n break;\n case asn1.Type.ENUMERATED:\n rval += ' (Enumerated)';\n break;\n case asn1.Type.EMBEDDED:\n rval += ' (Embedded PDV)';\n break;\n case asn1.Type.UTF8:\n rval += ' (UTF8)';\n break;\n case asn1.Type.ROID:\n rval += ' (Relative Object Identifier)';\n break;\n case asn1.Type.SEQUENCE:\n rval += ' (Sequence)';\n break;\n case asn1.Type.SET:\n rval += ' (Set)';\n break;\n case asn1.Type.PRINTABLESTRING:\n rval += ' (Printable String)';\n break;\n case asn1.Type.IA5String:\n rval += ' (IA5String (ASCII))';\n break;\n case asn1.Type.UTCTIME:\n rval += ' (UTC time)';\n break;\n case asn1.Type.GENERALIZEDTIME:\n rval += ' (Generalized time)';\n break;\n case asn1.Type.BMPSTRING:\n rval += ' (BMP String)';\n break;\n }\n } else {\n rval += obj.type;\n }\n\n rval += '\\n';\n rval += indent + 'Constructed: ' + obj.constructed + '\\n';\n\n if(obj.composed) {\n var subvalues = 0;\n var sub = '';\n for(var i = 0; i < obj.value.length; ++i) {\n if(obj.value[i] !== undefined) {\n subvalues += 1;\n sub += asn1.prettyPrint(obj.value[i], level + 1, indentation);\n if((i + 1) < obj.value.length) {\n sub += ',';\n }\n }\n }\n rval += indent + 'Sub values: ' + subvalues + sub;\n } else {\n rval += indent + 'Value: ';\n if(obj.type === asn1.Type.OID) {\n var oid = asn1.derToOid(obj.value);\n rval += oid;\n if(forge.pki && forge.pki.oids) {\n if(oid in forge.pki.oids) {\n rval += ' (' + forge.pki.oids[oid] + ') ';\n }\n }\n }\n if(obj.type === asn1.Type.INTEGER) {\n try {\n rval += asn1.derToInteger(obj.value);\n } catch(ex) {\n rval += '0x' + forge.util.bytesToHex(obj.value);\n }\n } else if(obj.type === asn1.Type.BITSTRING) {\n // TODO: shift bits as needed to display without padding\n if(obj.value.length > 1) {\n // remove unused bits field\n rval += '0x' + forge.util.bytesToHex(obj.value.slice(1));\n } else {\n rval += '(none)';\n }\n // show unused bit count\n if(obj.value.length > 0) {\n var unused = obj.value.charCodeAt(0);\n if(unused == 1) {\n rval += ' (1 unused bit shown)';\n } else if(unused > 1) {\n rval += ' (' + unused + ' unused bits shown)';\n }\n }\n } else if(obj.type === asn1.Type.OCTETSTRING) {\n if(!_nonLatinRegex.test(obj.value)) {\n rval += '(' + obj.value + ') ';\n }\n rval += '0x' + forge.util.bytesToHex(obj.value);\n } else if(obj.type === asn1.Type.UTF8) {\n try {\n rval += forge.util.decodeUtf8(obj.value);\n } catch(e) {\n if(e.message === 'URI malformed') {\n rval +=\n '0x' + forge.util.bytesToHex(obj.value) + ' (malformed UTF8)';\n } else {\n throw e;\n }\n }\n } else if(obj.type === asn1.Type.PRINTABLESTRING ||\n obj.type === asn1.Type.IA5String) {\n rval += obj.value;\n } else if(_nonLatinRegex.test(obj.value)) {\n rval += '0x' + forge.util.bytesToHex(obj.value);\n } else if(obj.value.length === 0) {\n rval += '[null]';\n } else {\n rval += obj.value;\n }\n }\n\n return rval;\n};\n","/**\n * DES (Data Encryption Standard) implementation.\n *\n * This implementation supports DES as well as 3DES-EDE in ECB and CBC mode.\n * It is based on the BSD-licensed implementation by Paul Tero:\n *\n * Paul Tero, July 2001\n * http://www.tero.co.uk/des/\n *\n * Optimised for performance with large blocks by\n * Michael Hayworth, November 2001\n * http://www.netdealing.com\n *\n * THIS SOFTWARE IS PROVIDED \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl \n * Copyright (c) 2012-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./cipher');\nrequire('./cipherModes');\nrequire('./util');\n\n/* DES API */\nmodule.exports = forge.des = forge.des || {};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('DES-', key);\n * cipher.start({iv: iv});\n *\n * Creates an DES cipher object to encrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as binary-encoded strings of bytes or\n * byte buffers.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC' if IV is\n * given, 'ECB' if null).\n *\n * @return the cipher.\n */\nforge.des.startEncrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: false,\n mode: mode || (iv === null ? 'ECB' : 'CBC')\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('DES-', key);\n *\n * Creates an DES cipher object to encrypt data using the given symmetric key.\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.des.createEncryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: false,\n mode: mode\n });\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('DES-', key);\n * decipher.start({iv: iv});\n *\n * Creates an DES cipher object to decrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as binary-encoded strings of bytes or\n * byte buffers.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC' if IV is\n * given, 'ECB' if null).\n *\n * @return the cipher.\n */\nforge.des.startDecrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: true,\n mode: mode || (iv === null ? 'ECB' : 'CBC')\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('DES-', key);\n *\n * Creates an DES cipher object to decrypt data using the given symmetric key.\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.des.createDecryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: true,\n mode: mode\n });\n};\n\n/**\n * Creates a new DES cipher algorithm object.\n *\n * @param name the name of the algorithm.\n * @param mode the mode factory function.\n *\n * @return the DES algorithm object.\n */\nforge.des.Algorithm = function(name, mode) {\n var self = this;\n self.name = name;\n self.mode = new mode({\n blockSize: 8,\n cipher: {\n encrypt: function(inBlock, outBlock) {\n return _updateBlock(self._keys, inBlock, outBlock, false);\n },\n decrypt: function(inBlock, outBlock) {\n return _updateBlock(self._keys, inBlock, outBlock, true);\n }\n }\n });\n self._init = false;\n};\n\n/**\n * Initializes this DES algorithm by expanding its key.\n *\n * @param options the options to use.\n * key the key to use with this algorithm.\n * decrypt true if the algorithm should be initialized for decryption,\n * false for encryption.\n */\nforge.des.Algorithm.prototype.initialize = function(options) {\n if(this._init) {\n return;\n }\n\n var key = forge.util.createBuffer(options.key);\n if(this.name.indexOf('3DES') === 0) {\n if(key.length() !== 24) {\n throw new Error('Invalid Triple-DES key size: ' + key.length() * 8);\n }\n }\n\n // do key expansion to 16 or 48 subkeys (single or triple DES)\n this._keys = _createKeys(key);\n this._init = true;\n};\n\n/** Register DES algorithms **/\n\nregisterAlgorithm('DES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('DES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('DES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('DES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('DES-CTR', forge.cipher.modes.ctr);\n\nregisterAlgorithm('3DES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('3DES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('3DES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('3DES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('3DES-CTR', forge.cipher.modes.ctr);\n\nfunction registerAlgorithm(name, mode) {\n var factory = function() {\n return new forge.des.Algorithm(name, mode);\n };\n forge.cipher.registerAlgorithm(name, factory);\n}\n\n/** DES implementation **/\n\nvar spfunction1 = [0x1010400,0,0x10000,0x1010404,0x1010004,0x10404,0x4,0x10000,0x400,0x1010400,0x1010404,0x400,0x1000404,0x1010004,0x1000000,0x4,0x404,0x1000400,0x1000400,0x10400,0x10400,0x1010000,0x1010000,0x1000404,0x10004,0x1000004,0x1000004,0x10004,0,0x404,0x10404,0x1000000,0x10000,0x1010404,0x4,0x1010000,0x1010400,0x1000000,0x1000000,0x400,0x1010004,0x10000,0x10400,0x1000004,0x400,0x4,0x1000404,0x10404,0x1010404,0x10004,0x1010000,0x1000404,0x1000004,0x404,0x10404,0x1010400,0x404,0x1000400,0x1000400,0,0x10004,0x10400,0,0x1010004];\nvar spfunction2 = [-0x7fef7fe0,-0x7fff8000,0x8000,0x108020,0x100000,0x20,-0x7fefffe0,-0x7fff7fe0,-0x7fffffe0,-0x7fef7fe0,-0x7fef8000,-0x80000000,-0x7fff8000,0x100000,0x20,-0x7fefffe0,0x108000,0x100020,-0x7fff7fe0,0,-0x80000000,0x8000,0x108020,-0x7ff00000,0x100020,-0x7fffffe0,0,0x108000,0x8020,-0x7fef8000,-0x7ff00000,0x8020,0,0x108020,-0x7fefffe0,0x100000,-0x7fff7fe0,-0x7ff00000,-0x7fef8000,0x8000,-0x7ff00000,-0x7fff8000,0x20,-0x7fef7fe0,0x108020,0x20,0x8000,-0x80000000,0x8020,-0x7fef8000,0x100000,-0x7fffffe0,0x100020,-0x7fff7fe0,-0x7fffffe0,0x100020,0x108000,0,-0x7fff8000,0x8020,-0x80000000,-0x7fefffe0,-0x7fef7fe0,0x108000];\nvar spfunction3 = [0x208,0x8020200,0,0x8020008,0x8000200,0,0x20208,0x8000200,0x20008,0x8000008,0x8000008,0x20000,0x8020208,0x20008,0x8020000,0x208,0x8000000,0x8,0x8020200,0x200,0x20200,0x8020000,0x8020008,0x20208,0x8000208,0x20200,0x20000,0x8000208,0x8,0x8020208,0x200,0x8000000,0x8020200,0x8000000,0x20008,0x208,0x20000,0x8020200,0x8000200,0,0x200,0x20008,0x8020208,0x8000200,0x8000008,0x200,0,0x8020008,0x8000208,0x20000,0x8000000,0x8020208,0x8,0x20208,0x20200,0x8000008,0x8020000,0x8000208,0x208,0x8020000,0x20208,0x8,0x8020008,0x20200];\nvar spfunction4 = [0x802001,0x2081,0x2081,0x80,0x802080,0x800081,0x800001,0x2001,0,0x802000,0x802000,0x802081,0x81,0,0x800080,0x800001,0x1,0x2000,0x800000,0x802001,0x80,0x800000,0x2001,0x2080,0x800081,0x1,0x2080,0x800080,0x2000,0x802080,0x802081,0x81,0x800080,0x800001,0x802000,0x802081,0x81,0,0,0x802000,0x2080,0x800080,0x800081,0x1,0x802001,0x2081,0x2081,0x80,0x802081,0x81,0x1,0x2000,0x800001,0x2001,0x802080,0x800081,0x2001,0x2080,0x800000,0x802001,0x80,0x800000,0x2000,0x802080];\nvar spfunction5 = [0x100,0x2080100,0x2080000,0x42000100,0x80000,0x100,0x40000000,0x2080000,0x40080100,0x80000,0x2000100,0x40080100,0x42000100,0x42080000,0x80100,0x40000000,0x2000000,0x40080000,0x40080000,0,0x40000100,0x42080100,0x42080100,0x2000100,0x42080000,0x40000100,0,0x42000000,0x2080100,0x2000000,0x42000000,0x80100,0x80000,0x42000100,0x100,0x2000000,0x40000000,0x2080000,0x42000100,0x40080100,0x2000100,0x40000000,0x42080000,0x2080100,0x40080100,0x100,0x2000000,0x42080000,0x42080100,0x80100,0x42000000,0x42080100,0x2080000,0,0x40080000,0x42000000,0x80100,0x2000100,0x40000100,0x80000,0,0x40080000,0x2080100,0x40000100];\nvar spfunction6 = [0x20000010,0x20400000,0x4000,0x20404010,0x20400000,0x10,0x20404010,0x400000,0x20004000,0x404010,0x400000,0x20000010,0x400010,0x20004000,0x20000000,0x4010,0,0x400010,0x20004010,0x4000,0x404000,0x20004010,0x10,0x20400010,0x20400010,0,0x404010,0x20404000,0x4010,0x404000,0x20404000,0x20000000,0x20004000,0x10,0x20400010,0x404000,0x20404010,0x400000,0x4010,0x20000010,0x400000,0x20004000,0x20000000,0x4010,0x20000010,0x20404010,0x404000,0x20400000,0x404010,0x20404000,0,0x20400010,0x10,0x4000,0x20400000,0x404010,0x4000,0x400010,0x20004010,0,0x20404000,0x20000000,0x400010,0x20004010];\nvar spfunction7 = [0x200000,0x4200002,0x4000802,0,0x800,0x4000802,0x200802,0x4200800,0x4200802,0x200000,0,0x4000002,0x2,0x4000000,0x4200002,0x802,0x4000800,0x200802,0x200002,0x4000800,0x4000002,0x4200000,0x4200800,0x200002,0x4200000,0x800,0x802,0x4200802,0x200800,0x2,0x4000000,0x200800,0x4000000,0x200800,0x200000,0x4000802,0x4000802,0x4200002,0x4200002,0x2,0x200002,0x4000000,0x4000800,0x200000,0x4200800,0x802,0x200802,0x4200800,0x802,0x4000002,0x4200802,0x4200000,0x200800,0,0x2,0x4200802,0,0x200802,0x4200000,0x800,0x4000002,0x4000800,0x800,0x200002];\nvar spfunction8 = [0x10001040,0x1000,0x40000,0x10041040,0x10000000,0x10001040,0x40,0x10000000,0x40040,0x10040000,0x10041040,0x41000,0x10041000,0x41040,0x1000,0x40,0x10040000,0x10000040,0x10001000,0x1040,0x41000,0x40040,0x10040040,0x10041000,0x1040,0,0,0x10040040,0x10000040,0x10001000,0x41040,0x40000,0x41040,0x40000,0x10041000,0x1000,0x40,0x10040040,0x1000,0x41040,0x10001000,0x40,0x10000040,0x10040000,0x10040040,0x10000000,0x40000,0x10001040,0,0x10041040,0x40040,0x10000040,0x10040000,0x10001000,0x10001040,0,0x10041040,0x41000,0x41000,0x1040,0x1040,0x40040,0x10000000,0x10041000];\n\n/**\n * Create necessary sub keys.\n *\n * @param key the 64-bit or 192-bit key.\n *\n * @return the expanded keys.\n */\nfunction _createKeys(key) {\n var pc2bytes0 = [0,0x4,0x20000000,0x20000004,0x10000,0x10004,0x20010000,0x20010004,0x200,0x204,0x20000200,0x20000204,0x10200,0x10204,0x20010200,0x20010204],\n pc2bytes1 = [0,0x1,0x100000,0x100001,0x4000000,0x4000001,0x4100000,0x4100001,0x100,0x101,0x100100,0x100101,0x4000100,0x4000101,0x4100100,0x4100101],\n pc2bytes2 = [0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808,0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808],\n pc2bytes3 = [0,0x200000,0x8000000,0x8200000,0x2000,0x202000,0x8002000,0x8202000,0x20000,0x220000,0x8020000,0x8220000,0x22000,0x222000,0x8022000,0x8222000],\n pc2bytes4 = [0,0x40000,0x10,0x40010,0,0x40000,0x10,0x40010,0x1000,0x41000,0x1010,0x41010,0x1000,0x41000,0x1010,0x41010],\n pc2bytes5 = [0,0x400,0x20,0x420,0,0x400,0x20,0x420,0x2000000,0x2000400,0x2000020,0x2000420,0x2000000,0x2000400,0x2000020,0x2000420],\n pc2bytes6 = [0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002,0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002],\n pc2bytes7 = [0,0x10000,0x800,0x10800,0x20000000,0x20010000,0x20000800,0x20010800,0x20000,0x30000,0x20800,0x30800,0x20020000,0x20030000,0x20020800,0x20030800],\n pc2bytes8 = [0,0x40000,0,0x40000,0x2,0x40002,0x2,0x40002,0x2000000,0x2040000,0x2000000,0x2040000,0x2000002,0x2040002,0x2000002,0x2040002],\n pc2bytes9 = [0,0x10000000,0x8,0x10000008,0,0x10000000,0x8,0x10000008,0x400,0x10000400,0x408,0x10000408,0x400,0x10000400,0x408,0x10000408],\n pc2bytes10 = [0,0x20,0,0x20,0x100000,0x100020,0x100000,0x100020,0x2000,0x2020,0x2000,0x2020,0x102000,0x102020,0x102000,0x102020],\n pc2bytes11 = [0,0x1000000,0x200,0x1000200,0x200000,0x1200000,0x200200,0x1200200,0x4000000,0x5000000,0x4000200,0x5000200,0x4200000,0x5200000,0x4200200,0x5200200],\n pc2bytes12 = [0,0x1000,0x8000000,0x8001000,0x80000,0x81000,0x8080000,0x8081000,0x10,0x1010,0x8000010,0x8001010,0x80010,0x81010,0x8080010,0x8081010],\n pc2bytes13 = [0,0x4,0x100,0x104,0,0x4,0x100,0x104,0x1,0x5,0x101,0x105,0x1,0x5,0x101,0x105];\n\n // how many iterations (1 for des, 3 for triple des)\n // changed by Paul 16/6/2007 to use Triple DES for 9+ byte keys\n var iterations = key.length() > 8 ? 3 : 1;\n\n // stores the return keys\n var keys = [];\n\n // now define the left shifts which need to be done\n var shifts = [0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0];\n\n var n = 0, tmp;\n for(var j = 0; j < iterations; j++) {\n var left = key.getInt32();\n var right = key.getInt32();\n\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n tmp = ((right >>> -16) ^ left) & 0x0000ffff;\n left ^= tmp;\n right ^= (tmp << -16);\n\n tmp = ((left >>> 2) ^ right) & 0x33333333;\n right ^= tmp;\n left ^= (tmp << 2);\n\n tmp = ((right >>> -16) ^ left) & 0x0000ffff;\n left ^= tmp;\n right ^= (tmp << -16);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n // right needs to be shifted and OR'd with last four bits of left\n tmp = (left << 8) | ((right >>> 20) & 0x000000f0);\n\n // left needs to be put upside down\n left = ((right << 24) | ((right << 8) & 0xff0000) |\n ((right >>> 8) & 0xff00) | ((right >>> 24) & 0xf0));\n right = tmp;\n\n // now go through and perform these shifts on the left and right keys\n for(var i = 0; i < shifts.length; ++i) {\n //shift the keys either one or two bits to the left\n if(shifts[i]) {\n left = (left << 2) | (left >>> 26);\n right = (right << 2) | (right >>> 26);\n } else {\n left = (left << 1) | (left >>> 27);\n right = (right << 1) | (right >>> 27);\n }\n left &= -0xf;\n right &= -0xf;\n\n // now apply PC-2, in such a way that E is easier when encrypting or\n // decrypting this conversion will look like PC-2 except only the last 6\n // bits of each byte are used rather than 48 consecutive bits and the\n // order of lines will be according to how the S selection functions will\n // be applied: S2, S4, S6, S8, S1, S3, S5, S7\n var lefttmp = (\n pc2bytes0[left >>> 28] | pc2bytes1[(left >>> 24) & 0xf] |\n pc2bytes2[(left >>> 20) & 0xf] | pc2bytes3[(left >>> 16) & 0xf] |\n pc2bytes4[(left >>> 12) & 0xf] | pc2bytes5[(left >>> 8) & 0xf] |\n pc2bytes6[(left >>> 4) & 0xf]);\n var righttmp = (\n pc2bytes7[right >>> 28] | pc2bytes8[(right >>> 24) & 0xf] |\n pc2bytes9[(right >>> 20) & 0xf] | pc2bytes10[(right >>> 16) & 0xf] |\n pc2bytes11[(right >>> 12) & 0xf] | pc2bytes12[(right >>> 8) & 0xf] |\n pc2bytes13[(right >>> 4) & 0xf]);\n tmp = ((righttmp >>> 16) ^ lefttmp) & 0x0000ffff;\n keys[n++] = lefttmp ^ tmp;\n keys[n++] = righttmp ^ (tmp << 16);\n }\n }\n\n return keys;\n}\n\n/**\n * Updates a single block (1 byte) using DES. The update will either\n * encrypt or decrypt the block.\n *\n * @param keys the expanded keys.\n * @param input the input block (an array of 32-bit words).\n * @param output the updated output block.\n * @param decrypt true to decrypt the block, false to encrypt it.\n */\nfunction _updateBlock(keys, input, output, decrypt) {\n // set up loops for single or triple DES\n var iterations = keys.length === 32 ? 3 : 9;\n var looping;\n if(iterations === 3) {\n looping = decrypt ? [30, -2, -2] : [0, 32, 2];\n } else {\n looping = (decrypt ?\n [94, 62, -2, 32, 64, 2, 30, -2, -2] :\n [0, 32, 2, 62, 30, -2, 64, 96, 2]);\n }\n\n var tmp;\n\n var left = input[0];\n var right = input[1];\n\n // first each 64 bit chunk of the message must be permuted according to IP\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n tmp = ((left >>> 16) ^ right) & 0x0000ffff;\n right ^= tmp;\n left ^= (tmp << 16);\n\n tmp = ((right >>> 2) ^ left) & 0x33333333;\n left ^= tmp;\n right ^= (tmp << 2);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n // rotate left 1 bit\n left = ((left << 1) | (left >>> 31));\n right = ((right << 1) | (right >>> 31));\n\n for(var j = 0; j < iterations; j += 3) {\n var endloop = looping[j + 1];\n var loopinc = looping[j + 2];\n\n // now go through and perform the encryption or decryption\n for(var i = looping[j]; i != endloop; i += loopinc) {\n var right1 = right ^ keys[i];\n var right2 = ((right >>> 4) | (right << 28)) ^ keys[i + 1];\n\n // passing these bytes through the S selection functions\n tmp = left;\n left = right;\n right = tmp ^ (\n spfunction2[(right1 >>> 24) & 0x3f] |\n spfunction4[(right1 >>> 16) & 0x3f] |\n spfunction6[(right1 >>> 8) & 0x3f] |\n spfunction8[right1 & 0x3f] |\n spfunction1[(right2 >>> 24) & 0x3f] |\n spfunction3[(right2 >>> 16) & 0x3f] |\n spfunction5[(right2 >>> 8) & 0x3f] |\n spfunction7[right2 & 0x3f]);\n }\n // unreverse left and right\n tmp = left;\n left = right;\n right = tmp;\n }\n\n // rotate right 1 bit\n left = ((left >>> 1) | (left << 31));\n right = ((right >>> 1) | (right << 31));\n\n // now perform IP-1, which is IP in the opposite direction\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((right >>> 2) ^ left) & 0x33333333;\n left ^= tmp;\n right ^= (tmp << 2);\n\n tmp = ((left >>> 16) ^ right) & 0x0000ffff;\n right ^= tmp;\n left ^= (tmp << 16);\n\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n output[0] = left;\n output[1] = right;\n}\n\n/**\n * Deprecated. Instead, use:\n *\n * forge.cipher.createCipher('DES-', key);\n * forge.cipher.createDecipher('DES-', key);\n *\n * Creates a deprecated DES cipher object. This object's mode will default to\n * CBC (cipher-block-chaining).\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param options the options to use.\n * key the symmetric key to use (64 or 192 bits).\n * output the buffer to write to.\n * decrypt true for decryption, false for encryption.\n * mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nfunction _createCipher(options) {\n options = options || {};\n var mode = (options.mode || 'CBC').toUpperCase();\n var algorithm = 'DES-' + mode;\n\n var cipher;\n if(options.decrypt) {\n cipher = forge.cipher.createDecipher(algorithm, options.key);\n } else {\n cipher = forge.cipher.createCipher(algorithm, options.key);\n }\n\n // backwards compatible start API\n var start = cipher.start;\n cipher.start = function(iv, options) {\n // backwards compatibility: support second arg as output buffer\n var output = null;\n if(options instanceof forge.util.ByteBuffer) {\n output = options;\n options = {};\n }\n options = options || {};\n options.output = output;\n options.iv = iv;\n start.call(cipher, options);\n };\n\n return cipher;\n}\n","/**\n * Node.js module for Forge message digests.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2017 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nmodule.exports = forge.md = forge.md || {};\nforge.md.algorithms = forge.md.algorithms || {};\n","/**\n * Hash-based Message Authentication Code implementation. Requires a message\n * digest object that can be obtained, for example, from forge.md.sha1 or\n * forge.md.md5.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2012 Digital Bazaar, Inc. All rights reserved.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\n/* HMAC API */\nvar hmac = module.exports = forge.hmac = forge.hmac || {};\n\n/**\n * Creates an HMAC object that uses the given message digest object.\n *\n * @return an HMAC object.\n */\nhmac.create = function() {\n // the hmac key to use\n var _key = null;\n\n // the message digest to use\n var _md = null;\n\n // the inner padding\n var _ipadding = null;\n\n // the outer padding\n var _opadding = null;\n\n // hmac context\n var ctx = {};\n\n /**\n * Starts or restarts the HMAC with the given key and message digest.\n *\n * @param md the message digest to use, null to reuse the previous one,\n * a string to use builtin 'sha1', 'md5', 'sha256'.\n * @param key the key to use as a string, array of bytes, byte buffer,\n * or null to reuse the previous key.\n */\n ctx.start = function(md, key) {\n if(md !== null) {\n if(typeof md === 'string') {\n // create builtin message digest\n md = md.toLowerCase();\n if(md in forge.md.algorithms) {\n _md = forge.md.algorithms[md].create();\n } else {\n throw new Error('Unknown hash algorithm \"' + md + '\"');\n }\n } else {\n // store message digest\n _md = md;\n }\n }\n\n if(key === null) {\n // reuse previous key\n key = _key;\n } else {\n if(typeof key === 'string') {\n // convert string into byte buffer\n key = forge.util.createBuffer(key);\n } else if(forge.util.isArray(key)) {\n // convert byte array into byte buffer\n var tmp = key;\n key = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n key.putByte(tmp[i]);\n }\n }\n\n // if key is longer than blocksize, hash it\n var keylen = key.length();\n if(keylen > _md.blockLength) {\n _md.start();\n _md.update(key.bytes());\n key = _md.digest();\n }\n\n // mix key into inner and outer padding\n // ipadding = [0x36 * blocksize] ^ key\n // opadding = [0x5C * blocksize] ^ key\n _ipadding = forge.util.createBuffer();\n _opadding = forge.util.createBuffer();\n keylen = key.length();\n for(var i = 0; i < keylen; ++i) {\n var tmp = key.at(i);\n _ipadding.putByte(0x36 ^ tmp);\n _opadding.putByte(0x5C ^ tmp);\n }\n\n // if key is shorter than blocksize, add additional padding\n if(keylen < _md.blockLength) {\n var tmp = _md.blockLength - keylen;\n for(var i = 0; i < tmp; ++i) {\n _ipadding.putByte(0x36);\n _opadding.putByte(0x5C);\n }\n }\n _key = key;\n _ipadding = _ipadding.bytes();\n _opadding = _opadding.bytes();\n }\n\n // digest is done like so: hash(opadding | hash(ipadding | message))\n\n // prepare to do inner hash\n // hash(ipadding | message)\n _md.start();\n _md.update(_ipadding);\n };\n\n /**\n * Updates the HMAC with the given message bytes.\n *\n * @param bytes the bytes to update with.\n */\n ctx.update = function(bytes) {\n _md.update(bytes);\n };\n\n /**\n * Produces the Message Authentication Code (MAC).\n *\n * @return a byte buffer containing the digest value.\n */\n ctx.getMac = function() {\n // digest is done like so: hash(opadding | hash(ipadding | message))\n // here we do the outer hashing\n var inner = _md.digest().bytes();\n _md.start();\n _md.update(_opadding);\n _md.update(inner);\n return _md.digest();\n };\n // alias for getMac\n ctx.digest = ctx.getMac;\n\n return ctx;\n};\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\n/** @type {(O: object) => string} */\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {(receiver: import('.').TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call} Getter */\n/** @type {{ [k in `\\$${import('.').TypedArrayName}`]?: Getter } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict';\n\nmodule.exports = require('./browser/algorithms.json');\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n this.padding = options.padding !== false\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n if (this.padding === false) {\n return false;\n }\n\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n if (this.padding === false) {\n return buffer;\n }\n\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","module.exports = require('events').EventEmitter;\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, { hasUnpiped: false });\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar BN = require('bn.js');\nvar randomBytes = require('randombytes');\nvar Buffer = require('safe-buffer').Buffer;\n\nfunction getr(priv) {\n\tvar len = priv.modulus.byteLength();\n\tvar r;\n\tdo {\n\t\tr = new BN(randomBytes(len));\n\t} while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2));\n\treturn r;\n}\n\nfunction blind(priv) {\n\tvar r = getr(priv);\n\tvar blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();\n\treturn { blinder: blinder, unblinder: r.invm(priv.modulus) };\n}\n\nfunction crt(msg, priv) {\n\tvar blinds = blind(priv);\n\tvar len = priv.modulus.byteLength();\n\tvar blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus);\n\tvar c1 = blinded.toRed(BN.mont(priv.prime1));\n\tvar c2 = blinded.toRed(BN.mont(priv.prime2));\n\tvar qinv = priv.coefficient;\n\tvar p = priv.prime1;\n\tvar q = priv.prime2;\n\tvar m1 = c1.redPow(priv.exponent1).fromRed();\n\tvar m2 = c2.redPow(priv.exponent2).fromRed();\n\tvar h = m1.isub(m2).imul(qinv).umod(p).imul(q);\n\treturn m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len);\n}\ncrt.getr = getr;\n\nmodule.exports = crt;\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var indexOf = function (xs, item) {\n if (xs.indexOf) return xs.indexOf(item);\n else for (var i = 0; i < xs.length; i++) {\n if (xs[i] === item) return i;\n }\n return -1;\n};\nvar Object_keys = function (obj) {\n if (Object.keys) return Object.keys(obj)\n else {\n var res = [];\n for (var key in obj) res.push(key)\n return res;\n }\n};\n\nvar forEach = function (xs, fn) {\n if (xs.forEach) return xs.forEach(fn)\n else for (var i = 0; i < xs.length; i++) {\n fn(xs[i], i, xs);\n }\n};\n\nvar defineProp = (function() {\n try {\n Object.defineProperty({}, '_', {});\n return function(obj, name, value) {\n Object.defineProperty(obj, name, {\n writable: true,\n enumerable: false,\n configurable: true,\n value: value\n })\n };\n } catch(e) {\n return function(obj, name, value) {\n obj[name] = value;\n };\n }\n}());\n\nvar globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',\n'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',\n'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',\n'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',\n'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];\n\nfunction Context() {}\nContext.prototype = {};\n\nvar Script = exports.Script = function NodeScript (code) {\n if (!(this instanceof Script)) return new Script(code);\n this.code = code;\n};\n\nScript.prototype.runInContext = function (context) {\n if (!(context instanceof Context)) {\n throw new TypeError(\"needs a 'context' argument.\");\n }\n \n var iframe = document.createElement('iframe');\n if (!iframe.style) iframe.style = {};\n iframe.style.display = 'none';\n \n document.body.appendChild(iframe);\n \n var win = iframe.contentWindow;\n var wEval = win.eval, wExecScript = win.execScript;\n\n if (!wEval && wExecScript) {\n // win.eval() magically appears when this is called in IE:\n wExecScript.call(win, 'null');\n wEval = win.eval;\n }\n \n forEach(Object_keys(context), function (key) {\n win[key] = context[key];\n });\n forEach(globals, function (key) {\n if (context[key]) {\n win[key] = context[key];\n }\n });\n \n var winKeys = Object_keys(win);\n\n var res = wEval.call(win, this.code);\n \n forEach(Object_keys(win), function (key) {\n // Avoid copying circular objects like `top` and `window` by only\n // updating existing context properties or new properties in the `win`\n // that was only introduced after the eval.\n if (key in context || indexOf(winKeys, key) === -1) {\n context[key] = win[key];\n }\n });\n\n forEach(globals, function (key) {\n if (!(key in context)) {\n defineProp(context, key, win[key]);\n }\n });\n \n document.body.removeChild(iframe);\n \n return res;\n};\n\nScript.prototype.runInThisContext = function () {\n return eval(this.code); // maybe...\n};\n\nScript.prototype.runInNewContext = function (context) {\n var ctx = Script.createContext(context);\n var res = this.runInContext(ctx);\n\n if (context) {\n forEach(Object_keys(ctx), function (key) {\n context[key] = ctx[key];\n });\n }\n\n return res;\n};\n\nforEach(Object_keys(Script.prototype), function (name) {\n exports[name] = Script[name] = function (code) {\n var s = Script(code);\n return s[name].apply(s, [].slice.call(arguments, 1));\n };\n});\n\nexports.isContext = function (context) {\n return context instanceof Context;\n};\n\nexports.createScript = function (code) {\n return exports.Script(code);\n};\n\nexports.createContext = Script.createContext = function (context) {\n var copy = new Context();\n if(typeof context === 'object') {\n forEach(Object_keys(context), function (key) {\n copy[key] = context[key];\n });\n }\n return copy;\n};\n","var asn1 = require('../asn1');\nvar inherits = require('inherits');\n\nvar api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n};\n\nEntity.prototype._createNamed = function createNamed(base) {\n var named;\n try {\n named = require('vm').runInThisContext(\n '(function ' + this.name + '(entity) {\\n' +\n ' this._initNamed(entity);\\n' +\n '})'\n );\n } catch (e) {\n named = function (entity) {\n this._initNamed(entity);\n };\n }\n inherits(named, base);\n named.prototype._initNamed = function initnamed(entity) {\n base.call(this, entity);\n };\n\n return new named(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(asn1.decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(asn1.encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","var inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n var state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n var state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n var state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n var state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n var state = this._reporterState;\n\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n var state = this._reporterState;\n\n var now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n\n var inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n var state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n};\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","var inherits = require('inherits');\nvar Reporter = require('../base').Reporter;\nvar Buffer = require('buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n}\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n var res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n}\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n}\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!(item instanceof EncoderBuffer))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = new Buffer(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","var Reporter = require('../base').Reporter;\nvar EncoderBuffer = require('../base').EncoderBuffer;\nvar DecoderBuffer = require('../base').DecoderBuffer;\nvar assert = require('minimalistic-assert');\n\n// Supported tags\nvar tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nvar methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nvar overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent) {\n var state = {};\n this._baseState = state;\n\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nvar stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n var state = this._baseState;\n var cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n var res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n var state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n var clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n var state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n var state = this._baseState;\n\n // Filter children and args\n var children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n var res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n var value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n var state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n var state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n var state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n var state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n var state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n var state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n var state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n var state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n var result = state['default'];\n var present = true;\n\n var prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n var tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n var save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n var prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n var explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n var start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n if (state.any)\n var save = input.save();\n var body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any)\n result = result;\n else if (state.choice === null)\n result = this._decodeGeneric(state.tag, input, options);\n else\n result = this._decodeChoice(input, options);\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n var data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n var state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n var state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n var state = this._baseState;\n var result = null;\n var match = false;\n\n Object.keys(state.choice).some(function(key) {\n var save = input.save();\n var node = state.choice[key];\n try {\n var value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n var state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n var result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n var result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default']\n else\n return;\n }\n\n // Encode children first\n var content = null;\n var primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n var prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n var res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n var child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n var state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n var result;\n if (!state.any && state.choice === null) {\n var tag = state.implicit !== null ? state.implicit : state.tag;\n var cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n var state = this._baseState;\n\n var node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n var state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n};\n","var base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","var constants = require('../constants');\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = constants._reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = constants._reverse(exports.tag);\n","var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n var res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n var value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","var inherits = require('inherits');\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\nvar bignum = asn1.bignum;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!(data instanceof base.DecoderBuffer))\n data = new base.DecoderBuffer(data, options);\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n var len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n var state = buffer.save();\n var res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n while (true) {\n var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n var res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len)\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n var result = [];\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n var str = '';\n for (var i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n var numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n var printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n var result;\n var identifiers = [];\n var ident = 0;\n while (!buffer.isEmpty()) {\n var subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n var first = (identifiers[0] / 40) | 0;\n var second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n if (tag === 'gentime') {\n var year = str.slice(0, 4) | 0;\n var mon = str.slice(4, 6) | 0;\n var day = str.slice(6, 8) | 0;\n var hour = str.slice(8, 10) | 0;\n var min = str.slice(10, 12) | 0;\n var sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n var year = str.slice(0, 2) | 0;\n var mon = str.slice(2, 4) | 0;\n var day = str.slice(4, 6) | 0;\n var hour = str.slice(6, 8) | 0;\n var min = str.slice(8, 10) | 0;\n var sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull(buffer) {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n var res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n var tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n var num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n var lines = data.toString().split(/[\\r\\n]+/g);\n\n var label = options.label.toUpperCase();\n\n var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n var start = -1;\n var end = -1;\n for (var i = 0; i < lines.length; i++) {\n var match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n var base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9\\+\\/=]+/gi, '');\n\n var input = new Buffer(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","var decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n var header = new Buffer(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n var lenOctets = 1;\n for (var i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n var header = new Buffer(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n var buf = new Buffer(str.length * 2);\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s\\.]+/g);\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n var size = 0;\n for (var i = 0; i < id.length; i++) {\n var ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n var objid = new Buffer(size);\n var offset = objid.length - 1;\n for (var i = id.length - 1; i >= 0; i--) {\n var ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = new Buffer(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n var size = num.length;\n if (num.length === 0)\n size++;\n\n var out = new Buffer(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n var size = 1;\n for (var i = num; i >= 0x100; i >>= 8)\n size++;\n\n var out = new Array(size);\n for (var i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(new Buffer(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null)\n return false;\n\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","var inherits = require('inherits');\n\nvar DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n\n var p = buf.toString('base64');\n var out = [ '-----BEGIN ' + options.label + '-----' ];\n for (var i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","var encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","var asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict';\n\nvar asn = require('asn1.js');\n\nvar Time = asn.define('Time', function () {\n\tthis.choice({\n\t\tutcTime: this.utctime(),\n\t\tgeneralTime: this.gentime()\n\t});\n});\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n\tthis.seq().obj(\n\t\tthis.key('type').objid(),\n\t\tthis.key('value').any()\n\t);\n});\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').objid(),\n\t\tthis.key('parameters').optional(),\n\t\tthis.key('curve').objid().optional()\n\t);\n});\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').use(AlgorithmIdentifier),\n\t\tthis.key('subjectPublicKey').bitstr()\n\t);\n});\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n\tthis.setof(AttributeTypeValue);\n});\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n\tthis.seqof(RelativeDistinguishedName);\n});\n\nvar Name = asn.define('Name', function () {\n\tthis.choice({\n\t\trdnSequence: this.use(RDNSequence)\n\t});\n});\n\nvar Validity = asn.define('Validity', function () {\n\tthis.seq().obj(\n\t\tthis.key('notBefore').use(Time),\n\t\tthis.key('notAfter').use(Time)\n\t);\n});\n\nvar Extension = asn.define('Extension', function () {\n\tthis.seq().obj(\n\t\tthis.key('extnID').objid(),\n\t\tthis.key('critical').bool().def(false),\n\t\tthis.key('extnValue').octstr()\n\t);\n});\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n\tthis.seq().obj(\n\t\tthis.key('version').explicit(0)['int']().optional(),\n\t\tthis.key('serialNumber')['int'](),\n\t\tthis.key('signature').use(AlgorithmIdentifier),\n\t\tthis.key('issuer').use(Name),\n\t\tthis.key('validity').use(Validity),\n\t\tthis.key('subject').use(Name),\n\t\tthis.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n\t\tthis.key('issuerUniqueID').implicit(1).bitstr().optional(),\n\t\tthis.key('subjectUniqueID').implicit(2).bitstr().optional(),\n\t\tthis.key('extensions').explicit(3).seqof(Extension).optional()\n\t);\n});\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n\tthis.seq().obj(\n\t\tthis.key('tbsCertificate').use(TBSCertificate),\n\t\tthis.key('signatureAlgorithm').use(AlgorithmIdentifier),\n\t\tthis.key('signatureValue').bitstr()\n\t);\n});\n\nmodule.exports = X509Certificate;\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n\n'use strict';\n\nvar asn1 = require('asn1.js');\n\nexports.certificate = require('./certificate');\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('modulus')['int'](),\n\t\tthis.key('publicExponent')['int'](),\n\t\tthis.key('privateExponent')['int'](),\n\t\tthis.key('prime1')['int'](),\n\t\tthis.key('prime2')['int'](),\n\t\tthis.key('exponent1')['int'](),\n\t\tthis.key('exponent2')['int'](),\n\t\tthis.key('coefficient')['int']()\n\t);\n});\nexports.RSAPrivateKey = RSAPrivateKey;\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('modulus')['int'](),\n\t\tthis.key('publicExponent')['int']()\n\t);\n});\nexports.RSAPublicKey = RSAPublicKey;\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').objid(),\n\t\tthis.key('none').null_().optional(),\n\t\tthis.key('curve').objid().optional(),\n\t\tthis.key('params').seq().obj(\n\t\t\tthis.key('p')['int'](),\n\t\t\tthis.key('q')['int'](),\n\t\t\tthis.key('g')['int']()\n\t\t).optional()\n\t);\n});\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').use(AlgorithmIdentifier),\n\t\tthis.key('subjectPublicKey').bitstr()\n\t);\n});\nexports.PublicKey = PublicKey;\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('algorithm').use(AlgorithmIdentifier),\n\t\tthis.key('subjectPrivateKey').octstr()\n\t);\n});\nexports.PrivateKey = PrivateKeyInfo;\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').seq().obj(\n\t\t\tthis.key('id').objid(),\n\t\t\tthis.key('decrypt').seq().obj(\n\t\t\t\tthis.key('kde').seq().obj(\n\t\t\t\t\tthis.key('id').objid(),\n\t\t\t\t\tthis.key('kdeparams').seq().obj(\n\t\t\t\t\t\tthis.key('salt').octstr(),\n\t\t\t\t\t\tthis.key('iters')['int']()\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tthis.key('cipher').seq().obj(\n\t\t\t\t\tthis.key('algo').objid(),\n\t\t\t\t\tthis.key('iv').octstr()\n\t\t\t\t)\n\t\t\t)\n\t\t),\n\t\tthis.key('subjectPrivateKey').octstr()\n\t);\n});\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo;\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('p')['int'](),\n\t\tthis.key('q')['int'](),\n\t\tthis.key('g')['int'](),\n\t\tthis.key('pub_key')['int'](),\n\t\tthis.key('priv_key')['int']()\n\t);\n});\nexports.DSAPrivateKey = DSAPrivateKey;\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n\tthis['int']();\n});\n\nvar ECParameters = asn1.define('ECParameters', function () {\n\tthis.choice({\n\t\tnamedCurve: this.objid()\n\t});\n});\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('privateKey').octstr(),\n\t\tthis.key('parameters').optional().explicit(0).use(ECParameters),\n\t\tthis.key('publicKey').optional().explicit(1).bitstr()\n\t);\n});\nexports.ECPrivateKey = ECPrivateKey;\n\nexports.signature = asn1.define('signature', function () {\n\tthis.seq().obj(\n\t\tthis.key('r')['int'](),\n\t\tthis.key('s')['int']()\n\t);\n});\n","'use strict';\n\n// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m;\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m;\nvar evp = require('evp_bytestokey');\nvar ciphers = require('browserify-aes');\nvar Buffer = require('safe-buffer').Buffer;\nmodule.exports = function (okey, password) {\n\tvar key = okey.toString();\n\tvar match = key.match(findProc);\n\tvar decrypted;\n\tif (!match) {\n\t\tvar match2 = key.match(fullRegex);\n\t\tdecrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64');\n\t} else {\n\t\tvar suite = 'aes' + match[1];\n\t\tvar iv = Buffer.from(match[2], 'hex');\n\t\tvar cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64');\n\t\tvar cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;\n\t\tvar out = [];\n\t\tvar cipher = ciphers.createDecipheriv(suite, cipherKey, iv);\n\t\tout.push(cipher.update(cipherText));\n\t\tout.push(cipher['final']());\n\t\tdecrypted = Buffer.concat(out);\n\t}\n\tvar tag = key.match(startRegex)[1];\n\treturn {\n\t\ttag: tag,\n\t\tdata: decrypted\n\t};\n};\n","'use strict';\n\nvar asn1 = require('./asn1');\nvar aesid = require('./aesid.json');\nvar fixProc = require('./fixProc');\nvar ciphers = require('browserify-aes');\nvar compat = require('pbkdf2');\nvar Buffer = require('safe-buffer').Buffer;\n\nfunction decrypt(data, password) {\n\tvar salt = data.algorithm.decrypt.kde.kdeparams.salt;\n\tvar iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);\n\tvar algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')];\n\tvar iv = data.algorithm.decrypt.cipher.iv;\n\tvar cipherText = data.subjectPrivateKey;\n\tvar keylen = parseInt(algo.split('-')[1], 10) / 8;\n\tvar key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1');\n\tvar cipher = ciphers.createDecipheriv(algo, key, iv);\n\tvar out = [];\n\tout.push(cipher.update(cipherText));\n\tout.push(cipher['final']());\n\treturn Buffer.concat(out);\n}\n\nfunction parseKeys(buffer) {\n\tvar password;\n\tif (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n\t\tpassword = buffer.passphrase;\n\t\tbuffer = buffer.key;\n\t}\n\tif (typeof buffer === 'string') {\n\t\tbuffer = Buffer.from(buffer);\n\t}\n\n\tvar stripped = fixProc(buffer, password);\n\n\tvar type = stripped.tag;\n\tvar data = stripped.data;\n\tvar subtype, ndata;\n\tswitch (type) {\n\t\tcase 'CERTIFICATE':\n\t\t\tndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;\n\t\t\t// falls through\n\t\tcase 'PUBLIC KEY':\n\t\t\tif (!ndata) {\n\t\t\t\tndata = asn1.PublicKey.decode(data, 'der');\n\t\t\t}\n\t\t\tsubtype = ndata.algorithm.algorithm.join('.');\n\t\t\tswitch (subtype) {\n\t\t\t\tcase '1.2.840.113549.1.1.1':\n\t\t\t\t\treturn asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');\n\t\t\t\tcase '1.2.840.10045.2.1':\n\t\t\t\t\tndata.subjectPrivateKey = ndata.subjectPublicKey;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'ec',\n\t\t\t\t\t\tdata: ndata\n\t\t\t\t\t};\n\t\t\t\tcase '1.2.840.10040.4.1':\n\t\t\t\t\tndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der');\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'dsa',\n\t\t\t\t\t\tdata: ndata.algorithm.params\n\t\t\t\t\t};\n\t\t\t\tdefault: throw new Error('unknown key id ' + subtype);\n\t\t\t}\n\t\t\t// throw new Error('unknown key type ' + type)\n\t\tcase 'ENCRYPTED PRIVATE KEY':\n\t\t\tdata = asn1.EncryptedPrivateKey.decode(data, 'der');\n\t\t\tdata = decrypt(data, password);\n\t\t\t// falls through\n\t\tcase 'PRIVATE KEY':\n\t\t\tndata = asn1.PrivateKey.decode(data, 'der');\n\t\t\tsubtype = ndata.algorithm.algorithm.join('.');\n\t\t\tswitch (subtype) {\n\t\t\t\tcase '1.2.840.113549.1.1.1':\n\t\t\t\t\treturn asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');\n\t\t\t\tcase '1.2.840.10045.2.1':\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcurve: ndata.algorithm.curve,\n\t\t\t\t\t\tprivateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n\t\t\t\t\t};\n\t\t\t\tcase '1.2.840.10040.4.1':\n\t\t\t\t\tndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der');\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'dsa',\n\t\t\t\t\t\tparams: ndata.algorithm.params\n\t\t\t\t\t};\n\t\t\t\tdefault: throw new Error('unknown key id ' + subtype);\n\t\t\t}\n\t\t\t// throw new Error('unknown key type ' + type)\n\t\tcase 'RSA PUBLIC KEY':\n\t\t\treturn asn1.RSAPublicKey.decode(data, 'der');\n\t\tcase 'RSA PRIVATE KEY':\n\t\t\treturn asn1.RSAPrivateKey.decode(data, 'der');\n\t\tcase 'DSA PRIVATE KEY':\n\t\t\treturn {\n\t\t\t\ttype: 'dsa',\n\t\t\t\tparams: asn1.DSAPrivateKey.decode(data, 'der')\n\t\t\t};\n\t\tcase 'EC PRIVATE KEY':\n\t\t\tdata = asn1.ECPrivateKey.decode(data, 'der');\n\t\t\treturn {\n\t\t\t\tcurve: data.parameters.value,\n\t\t\t\tprivateKey: data.privateKey\n\t\t\t};\n\t\tdefault: throw new Error('unknown key type ' + type);\n\t}\n}\nparseKeys.signature = asn1.signature;\n\nmodule.exports = parseKeys;\n","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar createHmac = require('create-hmac');\nvar crt = require('browserify-rsa');\nvar EC = require('elliptic').ec;\nvar BN = require('bn.js');\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\n\nvar RSA_PKCS1_PADDING = 1;\n\nfunction sign(hash, key, hashType, signType, tag) {\n var priv = parseKeys(key);\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n return ecSign(hash, priv);\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong private key type'); }\n return dsaSign(hash, priv, hashType);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) { throw new Error('illegal or unsupported padding mode'); }\n\n hash = Buffer.concat([tag, hash]);\n var len = priv.modulus.byteLength();\n var pad = [0, 1];\n while (hash.length + pad.length + 1 < len) { pad.push(0xff); }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) { pad.push(hash[i]); }\n\n var out = crt(pad, priv);\n return out;\n}\n\nfunction ecSign(hash, priv) {\n var curveId = curves[priv.curve.join('.')];\n if (!curveId) { throw new Error('unknown curve ' + priv.curve.join('.')); }\n\n var curve = new EC(curveId);\n var key = curve.keyFromPrivate(priv.privateKey);\n var out = key.sign(hash);\n\n return Buffer.from(out.toDER());\n}\n\nfunction dsaSign(hash, priv, algo) {\n var x = priv.params.priv_key;\n var p = priv.params.p;\n var q = priv.params.q;\n var g = priv.params.g;\n var r = new BN(0);\n var k;\n var H = bits2int(hash, q).mod(q);\n var s = false;\n var kv = getKey(x, q, hash, algo);\n while (s === false) {\n k = makeKey(q, kv, algo);\n r = makeR(g, k, p, q);\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q);\n if (s.cmpn(0) === 0) {\n s = false;\n r = new BN(0);\n }\n }\n return toDER(r, s);\n}\n\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray();\n\n // Pad values\n if (r[0] & 0x80) { r = [0].concat(r); }\n if (s[0] & 0x80) { s = [0].concat(s); }\n\n var total = r.length + s.length + 4;\n var res = [\n 0x30, total, 0x02, r.length\n ];\n res = res.concat(r, [0x02, s.length], s);\n return Buffer.from(res);\n}\n\nfunction getKey(x, q, hash, algo) {\n x = Buffer.from(x.toArray());\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length);\n x = Buffer.concat([zeros, x]);\n }\n var hlen = hash.length;\n var hbits = bits2octets(hash, q);\n var v = Buffer.alloc(hlen);\n v.fill(1);\n var k = Buffer.alloc(hlen);\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n return { k: k, v: v };\n}\n\nfunction bits2int(obits, q) {\n var bits = new BN(obits);\n var shift = (obits.length << 3) - q.bitLength();\n if (shift > 0) { bits.ishrn(shift); }\n return bits;\n}\n\nfunction bits2octets(bits, q) {\n bits = bits2int(bits, q);\n bits = bits.mod(q);\n var out = Buffer.from(bits.toArray());\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length);\n out = Buffer.concat([zeros, out]);\n }\n return out;\n}\n\nfunction makeKey(q, kv, algo) {\n var t;\n var k;\n\n do {\n t = Buffer.alloc(0);\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n t = Buffer.concat([t, kv.v]);\n }\n\n k = bits2int(t, q);\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n } while (k.cmp(q) !== -1);\n\n return k;\n}\n\nfunction makeR(g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);\n}\n\nmodule.exports = sign;\nmodule.exports.getKey = getKey;\nmodule.exports.makeKey = makeKey;\n","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\n\nfunction verify(sig, hash, key, signType, tag) {\n var pub = parseKeys(key);\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }\n return ecVerify(sig, hash, pub);\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong public key type'); }\n return dsaVerify(sig, hash, pub);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }\n\n hash = Buffer.concat([tag, hash]);\n var len = pub.modulus.byteLength();\n var pad = [1];\n var padNum = 0;\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff);\n padNum += 1;\n }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n pad = Buffer.from(pad);\n var red = BN.mont(pub.modulus);\n sig = new BN(sig).toRed(red);\n\n sig = sig.redPow(new BN(pub.publicExponent));\n sig = Buffer.from(sig.fromRed().toArray());\n var out = padNum < 8 ? 1 : 0;\n len = Math.min(sig.length, pad.length);\n if (sig.length !== pad.length) { out = 1; }\n\n i = -1;\n while (++i < len) { out |= sig[i] ^ pad[i]; }\n return out === 0;\n}\n\nfunction ecVerify(sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')];\n if (!curveId) { throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')); }\n\n var curve = new EC(curveId);\n var pubkey = pub.data.subjectPrivateKey.data;\n\n return curve.verify(hash, sig, pubkey);\n}\n\nfunction dsaVerify(sig, hash, pub) {\n var p = pub.data.p;\n var q = pub.data.q;\n var g = pub.data.g;\n var y = pub.data.pub_key;\n var unpacked = parseKeys.signature.decode(sig, 'der');\n var s = unpacked.s;\n var r = unpacked.r;\n checkValue(s, q);\n checkValue(r, q);\n var montp = BN.mont(p);\n var w = s.invm(q);\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q);\n return v.cmp(r) === 0;\n}\n\nfunction checkValue(b, q) {\n if (b.cmpn(0) <= 0) { throw new Error('invalid sig'); }\n if (b.cmp(q) >= 0) { throw new Error('invalid sig'); }\n}\n\nmodule.exports = verify;\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar createHash = require('create-hash');\nvar stream = require('readable-stream');\nvar inherits = require('inherits');\nvar sign = require('./sign');\nvar verify = require('./verify');\n\nvar algorithms = require('./algorithms.json');\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');\n algorithms[key.toLowerCase()] = algorithms[key];\n});\n\nfunction Sign(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { throw new Error('Unknown message digest'); }\n\n this._hashType = data.hash;\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Sign, stream.Writable);\n\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nSign.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nSign.prototype.sign = function signMethod(key, enc) {\n this.end();\n var hash = this._hash.digest();\n var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n\n return enc ? sig.toString(enc) : sig;\n};\n\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { throw new Error('Unknown message digest'); }\n\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Verify, stream.Writable);\n\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nVerify.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;\n\n this.end();\n var hash = this._hash.digest();\n return verify(sigBuffer, hash, key, this._signType, this._tag);\n};\n\nfunction createSign(algorithm) {\n return new Sign(algorithm);\n}\n\nfunction createVerify(algorithm) {\n return new Verify(algorithm);\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n};\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","/**\n * Password-Based Key-Derivation Function #2 implementation.\n *\n * See RFC 2898 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./hmac');\nrequire('./md');\nrequire('./util');\n\nvar pkcs5 = forge.pkcs5 = forge.pkcs5 || {};\n\nvar crypto;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript) {\n crypto = require('crypto');\n}\n\n/**\n * Derives a key from a password.\n *\n * @param p the password as a binary-encoded string of bytes.\n * @param s the salt as a binary-encoded string of bytes.\n * @param c the iteration count, a positive integer.\n * @param dkLen the intended length, in bytes, of the derived key,\n * (max: 2^32 - 1) * hash length of the PRF.\n * @param [md] the message digest (or algorithm identifier as a string) to use\n * in the PRF, defaults to SHA-1.\n * @param [callback(err, key)] presence triggers asynchronous version, called\n * once the operation completes.\n *\n * @return the derived key, as a binary-encoded string of bytes, for the\n * synchronous version (if no callback is specified).\n */\nmodule.exports = forge.pbkdf2 = pkcs5.pbkdf2 = function(\n p, s, c, dkLen, md, callback) {\n if(typeof md === 'function') {\n callback = md;\n md = null;\n }\n\n // use native implementation if possible and not disabled, note that\n // some node versions only support SHA-1, others allow digest to be changed\n if(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n crypto.pbkdf2 && (md === null || typeof md !== 'object') &&\n (crypto.pbkdf2Sync.length > 4 || (!md || md === 'sha1'))) {\n if(typeof md !== 'string') {\n // default prf to SHA-1\n md = 'sha1';\n }\n p = Buffer.from(p, 'binary');\n s = Buffer.from(s, 'binary');\n if(!callback) {\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2Sync(p, s, c, dkLen).toString('binary');\n }\n return crypto.pbkdf2Sync(p, s, c, dkLen, md).toString('binary');\n }\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2(p, s, c, dkLen, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n return crypto.pbkdf2(p, s, c, dkLen, md, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n\n if(typeof md === 'undefined' || md === null) {\n // default prf to SHA-1\n md = 'sha1';\n }\n if(typeof md === 'string') {\n if(!(md in forge.md.algorithms)) {\n throw new Error('Unknown hash algorithm: ' + md);\n }\n md = forge.md[md].create();\n }\n\n var hLen = md.digestLength;\n\n /* 1. If dkLen > (2^32 - 1) * hLen, output \"derived key too long\" and\n stop. */\n if(dkLen > (0xFFFFFFFF * hLen)) {\n var err = new Error('Derived key is too long.');\n if(callback) {\n return callback(err);\n }\n throw err;\n }\n\n /* 2. Let len be the number of hLen-octet blocks in the derived key,\n rounding up, and let r be the number of octets in the last\n block:\n\n len = CEIL(dkLen / hLen),\n r = dkLen - (len - 1) * hLen. */\n var len = Math.ceil(dkLen / hLen);\n var r = dkLen - (len - 1) * hLen;\n\n /* 3. For each block of the derived key apply the function F defined\n below to the password P, the salt S, the iteration count c, and\n the block index to compute the block:\n\n T_1 = F(P, S, c, 1),\n T_2 = F(P, S, c, 2),\n ...\n T_len = F(P, S, c, len),\n\n where the function F is defined as the exclusive-or sum of the\n first c iterates of the underlying pseudorandom function PRF\n applied to the password P and the concatenation of the salt S\n and the block index i:\n\n F(P, S, c, i) = u_1 XOR u_2 XOR ... XOR u_c\n\n where\n\n u_1 = PRF(P, S || INT(i)),\n u_2 = PRF(P, u_1),\n ...\n u_c = PRF(P, u_{c-1}).\n\n Here, INT(i) is a four-octet encoding of the integer i, most\n significant octet first. */\n var prf = forge.hmac.create();\n prf.start(md, p);\n var dk = '';\n var xor, u_c, u_c1;\n\n // sync version\n if(!callback) {\n for(var i = 1; i <= len; ++i) {\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n for(var j = 2; j <= c; ++j) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n }\n /* 5. Output the derived key DK. */\n return dk;\n }\n\n // async version\n var i = 1, j;\n function outer() {\n if(i > len) {\n // done\n return callback(null, dk);\n }\n\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n j = 2;\n inner();\n }\n\n function inner() {\n if(j <= c) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n ++j;\n return forge.util.setImmediate(inner);\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n\n ++i;\n outer();\n }\n\n outer();\n};\n","/**\n * Javascript implementation of basic PEM (Privacy Enhanced Mail) algorithms.\n *\n * See: RFC 1421.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2013-2014 Digital Bazaar, Inc.\n *\n * A Forge PEM object has the following fields:\n *\n * type: identifies the type of message (eg: \"RSA PRIVATE KEY\").\n *\n * procType: identifies the type of processing performed on the message,\n * it has two subfields: version and type, eg: 4,ENCRYPTED.\n *\n * contentDomain: identifies the type of content in the message, typically\n * only uses the value: \"RFC822\".\n *\n * dekInfo: identifies the message encryption algorithm and mode and includes\n * any parameters for the algorithm, it has two subfields: algorithm and\n * parameters, eg: DES-CBC,F8143EDE5960C597.\n *\n * headers: contains all other PEM encapsulated headers -- where order is\n * significant (for pairing data like recipient ID + key info).\n *\n * body: the binary-encoded body.\n */\nvar forge = require('./forge');\nrequire('./util');\n\n// shortcut for pem API\nvar pem = module.exports = forge.pem = forge.pem || {};\n\n/**\n * Encodes (serializes) the given PEM object.\n *\n * @param msg the PEM message object to encode.\n * @param options the options to use:\n * maxline the maximum characters per line for the body, (default: 64).\n *\n * @return the PEM-formatted string.\n */\npem.encode = function(msg, options) {\n options = options || {};\n var rval = '-----BEGIN ' + msg.type + '-----\\r\\n';\n\n // encode special headers\n var header;\n if(msg.procType) {\n header = {\n name: 'Proc-Type',\n values: [String(msg.procType.version), msg.procType.type]\n };\n rval += foldHeader(header);\n }\n if(msg.contentDomain) {\n header = {name: 'Content-Domain', values: [msg.contentDomain]};\n rval += foldHeader(header);\n }\n if(msg.dekInfo) {\n header = {name: 'DEK-Info', values: [msg.dekInfo.algorithm]};\n if(msg.dekInfo.parameters) {\n header.values.push(msg.dekInfo.parameters);\n }\n rval += foldHeader(header);\n }\n\n if(msg.headers) {\n // encode all other headers\n for(var i = 0; i < msg.headers.length; ++i) {\n rval += foldHeader(msg.headers[i]);\n }\n }\n\n // terminate header\n if(msg.procType) {\n rval += '\\r\\n';\n }\n\n // add body\n rval += forge.util.encode64(msg.body, options.maxline || 64) + '\\r\\n';\n\n rval += '-----END ' + msg.type + '-----\\r\\n';\n return rval;\n};\n\n/**\n * Decodes (deserializes) all PEM messages found in the given string.\n *\n * @param str the PEM-formatted string to decode.\n *\n * @return the PEM message objects in an array.\n */\npem.decode = function(str) {\n var rval = [];\n\n // split string into PEM messages (be lenient w/EOF on BEGIN line)\n var rMessage = /\\s*-----BEGIN ([A-Z0-9- ]+)-----\\r?\\n?([\\x21-\\x7e\\s]+?(?:\\r?\\n\\r?\\n))?([:A-Za-z0-9+\\/=\\s]+?)-----END \\1-----/g;\n var rHeader = /([\\x21-\\x7e]+):\\s*([\\x21-\\x7e\\s^:]+)/;\n var rCRLF = /\\r?\\n/;\n var match;\n while(true) {\n match = rMessage.exec(str);\n if(!match) {\n break;\n }\n\n // accept \"NEW CERTIFICATE REQUEST\" as \"CERTIFICATE REQUEST\"\n // https://datatracker.ietf.org/doc/html/rfc7468#section-7\n var type = match[1];\n if(type === 'NEW CERTIFICATE REQUEST') {\n type = 'CERTIFICATE REQUEST';\n }\n\n var msg = {\n type: type,\n procType: null,\n contentDomain: null,\n dekInfo: null,\n headers: [],\n body: forge.util.decode64(match[3])\n };\n rval.push(msg);\n\n // no headers\n if(!match[2]) {\n continue;\n }\n\n // parse headers\n var lines = match[2].split(rCRLF);\n var li = 0;\n while(match && li < lines.length) {\n // get line, trim any rhs whitespace\n var line = lines[li].replace(/\\s+$/, '');\n\n // RFC2822 unfold any following folded lines\n for(var nl = li + 1; nl < lines.length; ++nl) {\n var next = lines[nl];\n if(!/\\s/.test(next[0])) {\n break;\n }\n line += next;\n li = nl;\n }\n\n // parse header\n match = line.match(rHeader);\n if(match) {\n var header = {name: match[1], values: []};\n var values = match[2].split(',');\n for(var vi = 0; vi < values.length; ++vi) {\n header.values.push(ltrim(values[vi]));\n }\n\n // Proc-Type must be the first header\n if(!msg.procType) {\n if(header.name !== 'Proc-Type') {\n throw new Error('Invalid PEM formatted message. The first ' +\n 'encapsulated header must be \"Proc-Type\".');\n } else if(header.values.length !== 2) {\n throw new Error('Invalid PEM formatted message. The \"Proc-Type\" ' +\n 'header must have two subfields.');\n }\n msg.procType = {version: values[0], type: values[1]};\n } else if(!msg.contentDomain && header.name === 'Content-Domain') {\n // special-case Content-Domain\n msg.contentDomain = values[0] || '';\n } else if(!msg.dekInfo && header.name === 'DEK-Info') {\n // special-case DEK-Info\n if(header.values.length === 0) {\n throw new Error('Invalid PEM formatted message. The \"DEK-Info\" ' +\n 'header must have at least one subfield.');\n }\n msg.dekInfo = {algorithm: values[0], parameters: values[1] || null};\n } else {\n msg.headers.push(header);\n }\n }\n\n ++li;\n }\n\n if(msg.procType === 'ENCRYPTED' && !msg.dekInfo) {\n throw new Error('Invalid PEM formatted message. The \"DEK-Info\" ' +\n 'header must be present if \"Proc-Type\" is \"ENCRYPTED\".');\n }\n }\n\n if(rval.length === 0) {\n throw new Error('Invalid PEM formatted message.');\n }\n\n return rval;\n};\n\nfunction foldHeader(header) {\n var rval = header.name + ': ';\n\n // ensure values with CRLF are folded\n var values = [];\n var insertSpace = function(match, $1) {\n return ' ' + $1;\n };\n for(var i = 0; i < header.values.length; ++i) {\n values.push(header.values[i].replace(/^(\\S+\\r\\n)/, insertSpace));\n }\n rval += values.join(',') + '\\r\\n';\n\n // do folding\n var length = 0;\n var candidate = -1;\n for(var i = 0; i < rval.length; ++i, ++length) {\n if(length > 65 && candidate !== -1) {\n var insert = rval[candidate];\n if(insert === ',') {\n ++candidate;\n rval = rval.substr(0, candidate) + '\\r\\n ' + rval.substr(candidate);\n } else {\n rval = rval.substr(0, candidate) +\n '\\r\\n' + insert + rval.substr(candidate + 1);\n }\n length = (i - candidate - 1);\n candidate = -1;\n ++i;\n } else if(rval[i] === ' ' || rval[i] === '\\t' || rval[i] === ',') {\n candidate = i;\n }\n }\n\n return rval;\n}\n\nfunction ltrim(str) {\n return str.replace(/^\\s+/, '');\n}\n","/**\n * Secure Hash Algorithm with 256-bit digest (SHA-256) implementation.\n *\n * See FIPS 180-2 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha256 = module.exports = forge.sha256 = forge.sha256 || {};\nforge.md.sha256 = forge.md.algorithms.sha256 = sha256;\n\n/**\n * Creates a SHA-256 message digest object.\n *\n * @return a message digest object.\n */\nsha256.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // SHA-256 state contains eight 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(64);\n\n // message digest object\n var md = {\n algorithm: 'sha256',\n blockLength: 64,\n digestLength: 32,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x6A09E667,\n h1: 0xBB67AE85,\n h2: 0x3C6EF372,\n h3: 0xA54FF53A,\n h4: 0x510E527F,\n h5: 0x9B05688C,\n h6: 0x1F83D9AB,\n h7: 0x5BE0CD19\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-256 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var s2 = {\n h0: _state.h0,\n h1: _state.h1,\n h2: _state.h2,\n h3: _state.h3,\n h4: _state.h4,\n h5: _state.h5,\n h6: _state.h6,\n h7: _state.h7\n };\n _update(s2, _w, finalBlock);\n var rval = forge.util.createBuffer();\n rval.putInt32(s2.h0);\n rval.putInt32(s2.h1);\n rval.putInt32(s2.h2);\n rval.putInt32(s2.h3);\n rval.putInt32(s2.h4);\n rval.putInt32(s2.h5);\n rval.putInt32(s2.h6);\n rval.putInt32(s2.h7);\n return rval;\n };\n\n return md;\n};\n\n// sha-256 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n// table of constants\nvar _k = null;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 64);\n\n // create K table for SHA-256\n _k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-256 state with the given byte buffer.\n *\n * @param s the SHA-256 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (64 byte) chunks\n var t1, t2, s0, s1, ch, maj, i, a, b, c, d, e, f, g, h;\n var len = bytes.length();\n while(len >= 64) {\n // the w array will be populated with sixteen 32-bit big-endian words\n // and then extended into 64 32-bit words according to SHA-256\n for(i = 0; i < 16; ++i) {\n w[i] = bytes.getInt32();\n }\n for(; i < 64; ++i) {\n // XOR word 2 words ago rot right 17, rot right 19, shft right 10\n t1 = w[i - 2];\n t1 =\n ((t1 >>> 17) | (t1 << 15)) ^\n ((t1 >>> 19) | (t1 << 13)) ^\n (t1 >>> 10);\n // XOR word 15 words ago rot right 7, rot right 18, shft right 3\n t2 = w[i - 15];\n t2 =\n ((t2 >>> 7) | (t2 << 25)) ^\n ((t2 >>> 18) | (t2 << 14)) ^\n (t2 >>> 3);\n // sum(t1, word 7 ago, t2, word 16 ago) modulo 2^32\n w[i] = (t1 + w[i - 7] + t2 + w[i - 16]) | 0;\n }\n\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n e = s.h4;\n f = s.h5;\n g = s.h6;\n h = s.h7;\n\n // round function\n for(i = 0; i < 64; ++i) {\n // Sum1(e)\n s1 =\n ((e >>> 6) | (e << 26)) ^\n ((e >>> 11) | (e << 21)) ^\n ((e >>> 25) | (e << 7));\n // Ch(e, f, g) (optimized the same way as SHA-1)\n ch = g ^ (e & (f ^ g));\n // Sum0(a)\n s0 =\n ((a >>> 2) | (a << 30)) ^\n ((a >>> 13) | (a << 19)) ^\n ((a >>> 22) | (a << 10));\n // Maj(a, b, c) (optimized the same way as SHA-1)\n maj = (a & b) | (c & (a ^ b));\n\n // main algorithm\n t1 = h + s1 + ch + _k[i] + w[i];\n t2 = s0 + maj;\n h = g;\n g = f;\n f = e;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n // can't truncate with `| 0`\n e = (d + t1) >>> 0;\n d = c;\n c = b;\n b = a;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n // can't truncate with `| 0`\n a = (t1 + t2) >>> 0;\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n s.h4 = (s.h4 + e) | 0;\n s.h5 = (s.h5 + f) | 0;\n s.h6 = (s.h6 + g) | 0;\n s.h7 = (s.h7 + h) | 0;\n len -= 64;\n }\n}\n","/**\n * A javascript implementation of a cryptographically-secure\n * Pseudo Random Number Generator (PRNG). The Fortuna algorithm is followed\n * here though the use of SHA-256 is not enforced; when generating an\n * a PRNG context, the hashing algorithm and block cipher used for\n * the generator are specified via a plugin.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nvar _crypto = null;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n !process.versions['node-webkit']) {\n _crypto = require('crypto');\n}\n\n/* PRNG API */\nvar prng = module.exports = forge.prng = forge.prng || {};\n\n/**\n * Creates a new PRNG context.\n *\n * A PRNG plugin must be passed in that will provide:\n *\n * 1. A function that initializes the key and seed of a PRNG context. It\n * will be given a 16 byte key and a 16 byte seed. Any key expansion\n * or transformation of the seed from a byte string into an array of\n * integers (or similar) should be performed.\n * 2. The cryptographic function used by the generator. It takes a key and\n * a seed.\n * 3. A seed increment function. It takes the seed and returns seed + 1.\n * 4. An api to create a message digest.\n *\n * For an example, see random.js.\n *\n * @param plugin the PRNG plugin to use.\n */\nprng.create = function(plugin) {\n var ctx = {\n plugin: plugin,\n key: null,\n seed: null,\n time: null,\n // number of reseeds so far\n reseeds: 0,\n // amount of data generated so far\n generated: 0,\n // no initial key bytes\n keyBytes: ''\n };\n\n // create 32 entropy pools (each is a message digest)\n var md = plugin.md;\n var pools = new Array(32);\n for(var i = 0; i < 32; ++i) {\n pools[i] = md.create();\n }\n ctx.pools = pools;\n\n // entropy pools are written to cyclically, starting at index 0\n ctx.pool = 0;\n\n /**\n * Generates random bytes. The bytes may be generated synchronously or\n * asynchronously. Web workers must use the asynchronous interface or\n * else the behavior is undefined.\n *\n * @param count the number of random bytes to generate.\n * @param [callback(err, bytes)] called once the operation completes.\n *\n * @return count random bytes as a string.\n */\n ctx.generate = function(count, callback) {\n // do synchronously\n if(!callback) {\n return ctx.generateSync(count);\n }\n\n // simple generator using counter-based CBC\n var cipher = ctx.plugin.cipher;\n var increment = ctx.plugin.increment;\n var formatKey = ctx.plugin.formatKey;\n var formatSeed = ctx.plugin.formatSeed;\n var b = forge.util.createBuffer();\n\n // paranoid deviation from Fortuna:\n // reset key for every request to protect previously\n // generated random bytes should the key be discovered;\n // there is no 100ms based reseeding because of this\n // forced reseed for every `generate` call\n ctx.key = null;\n\n generate();\n\n function generate(err) {\n if(err) {\n return callback(err);\n }\n\n // sufficient bytes generated\n if(b.length() >= count) {\n return callback(null, b.getBytes(count));\n }\n\n // if amount of data generated is greater than 1 MiB, trigger reseed\n if(ctx.generated > 0xfffff) {\n ctx.key = null;\n }\n\n if(ctx.key === null) {\n // prevent stack overflow\n return forge.util.nextTick(function() {\n _reseed(generate);\n });\n }\n\n // generate the random bytes\n var bytes = cipher(ctx.key, ctx.seed);\n ctx.generated += bytes.length;\n b.putBytes(bytes);\n\n // generate bytes for a new key and seed\n ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));\n ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));\n\n forge.util.setImmediate(generate);\n }\n };\n\n /**\n * Generates random bytes synchronously.\n *\n * @param count the number of random bytes to generate.\n *\n * @return count random bytes as a string.\n */\n ctx.generateSync = function(count) {\n // simple generator using counter-based CBC\n var cipher = ctx.plugin.cipher;\n var increment = ctx.plugin.increment;\n var formatKey = ctx.plugin.formatKey;\n var formatSeed = ctx.plugin.formatSeed;\n\n // paranoid deviation from Fortuna:\n // reset key for every request to protect previously\n // generated random bytes should the key be discovered;\n // there is no 100ms based reseeding because of this\n // forced reseed for every `generateSync` call\n ctx.key = null;\n\n var b = forge.util.createBuffer();\n while(b.length() < count) {\n // if amount of data generated is greater than 1 MiB, trigger reseed\n if(ctx.generated > 0xfffff) {\n ctx.key = null;\n }\n\n if(ctx.key === null) {\n _reseedSync();\n }\n\n // generate the random bytes\n var bytes = cipher(ctx.key, ctx.seed);\n ctx.generated += bytes.length;\n b.putBytes(bytes);\n\n // generate bytes for a new key and seed\n ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));\n ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));\n }\n\n return b.getBytes(count);\n };\n\n /**\n * Private function that asynchronously reseeds a generator.\n *\n * @param callback(err) called once the operation completes.\n */\n function _reseed(callback) {\n if(ctx.pools[0].messageLength >= 32) {\n _seed();\n return callback();\n }\n // not enough seed data...\n var needed = (32 - ctx.pools[0].messageLength) << 5;\n ctx.seedFile(needed, function(err, bytes) {\n if(err) {\n return callback(err);\n }\n ctx.collect(bytes);\n _seed();\n callback();\n });\n }\n\n /**\n * Private function that synchronously reseeds a generator.\n */\n function _reseedSync() {\n if(ctx.pools[0].messageLength >= 32) {\n return _seed();\n }\n // not enough seed data...\n var needed = (32 - ctx.pools[0].messageLength) << 5;\n ctx.collect(ctx.seedFileSync(needed));\n _seed();\n }\n\n /**\n * Private function that seeds a generator once enough bytes are available.\n */\n function _seed() {\n // update reseed count\n ctx.reseeds = (ctx.reseeds === 0xffffffff) ? 0 : ctx.reseeds + 1;\n\n // goal is to update `key` via:\n // key = hash(key + s)\n // where 's' is all collected entropy from selected pools, then...\n\n // create a plugin-based message digest\n var md = ctx.plugin.md.create();\n\n // consume current key bytes\n md.update(ctx.keyBytes);\n\n // digest the entropy of pools whose index k meet the\n // condition 'n mod 2^k == 0' where n is the number of reseeds\n var _2powK = 1;\n for(var k = 0; k < 32; ++k) {\n if(ctx.reseeds % _2powK === 0) {\n md.update(ctx.pools[k].digest().getBytes());\n ctx.pools[k].start();\n }\n _2powK = _2powK << 1;\n }\n\n // get digest for key bytes\n ctx.keyBytes = md.digest().getBytes();\n\n // paranoid deviation from Fortuna:\n // update `seed` via `seed = hash(key)`\n // instead of initializing to zero once and only\n // ever incrementing it\n md.start();\n md.update(ctx.keyBytes);\n var seedBytes = md.digest().getBytes();\n\n // update state\n ctx.key = ctx.plugin.formatKey(ctx.keyBytes);\n ctx.seed = ctx.plugin.formatSeed(seedBytes);\n ctx.generated = 0;\n }\n\n /**\n * The built-in default seedFile. This seedFile is used when entropy\n * is needed immediately.\n *\n * @param needed the number of bytes that are needed.\n *\n * @return the random bytes.\n */\n function defaultSeedFile(needed) {\n // use window.crypto.getRandomValues strong source of entropy if available\n var getRandomValues = null;\n var globalScope = forge.util.globalScope;\n var _crypto = globalScope.crypto || globalScope.msCrypto;\n if(_crypto && _crypto.getRandomValues) {\n getRandomValues = function(arr) {\n return _crypto.getRandomValues(arr);\n };\n }\n\n var b = forge.util.createBuffer();\n if(getRandomValues) {\n while(b.length() < needed) {\n // max byte length is 65536 before QuotaExceededError is thrown\n // http://www.w3.org/TR/WebCryptoAPI/#RandomSource-method-getRandomValues\n var count = Math.max(1, Math.min(needed - b.length(), 65536) / 4);\n var entropy = new Uint32Array(Math.floor(count));\n try {\n getRandomValues(entropy);\n for(var i = 0; i < entropy.length; ++i) {\n b.putInt32(entropy[i]);\n }\n } catch(e) {\n /* only ignore QuotaExceededError */\n if(!(typeof QuotaExceededError !== 'undefined' &&\n e instanceof QuotaExceededError)) {\n throw e;\n }\n }\n }\n }\n\n // be sad and add some weak random data\n if(b.length() < needed) {\n /* Draws from Park-Miller \"minimal standard\" 31 bit PRNG,\n implemented with David G. Carta's optimization: with 32 bit math\n and without division (Public Domain). */\n var hi, lo, next;\n var seed = Math.floor(Math.random() * 0x010000);\n while(b.length() < needed) {\n lo = 16807 * (seed & 0xFFFF);\n hi = 16807 * (seed >> 16);\n lo += (hi & 0x7FFF) << 16;\n lo += hi >> 15;\n lo = (lo & 0x7FFFFFFF) + (lo >> 31);\n seed = lo & 0xFFFFFFFF;\n\n // consume lower 3 bytes of seed\n for(var i = 0; i < 3; ++i) {\n // throw in more pseudo random\n next = seed >>> (i << 3);\n next ^= Math.floor(Math.random() * 0x0100);\n b.putByte(next & 0xFF);\n }\n }\n }\n\n return b.getBytes(needed);\n }\n // initialize seed file APIs\n if(_crypto) {\n // use nodejs async API\n ctx.seedFile = function(needed, callback) {\n _crypto.randomBytes(needed, function(err, bytes) {\n if(err) {\n return callback(err);\n }\n callback(null, bytes.toString());\n });\n };\n // use nodejs sync API\n ctx.seedFileSync = function(needed) {\n return _crypto.randomBytes(needed).toString();\n };\n } else {\n ctx.seedFile = function(needed, callback) {\n try {\n callback(null, defaultSeedFile(needed));\n } catch(e) {\n callback(e);\n }\n };\n ctx.seedFileSync = defaultSeedFile;\n }\n\n /**\n * Adds entropy to a prng ctx's accumulator.\n *\n * @param bytes the bytes of entropy as a string.\n */\n ctx.collect = function(bytes) {\n // iterate over pools distributing entropy cyclically\n var count = bytes.length;\n for(var i = 0; i < count; ++i) {\n ctx.pools[ctx.pool].update(bytes.substr(i, 1));\n ctx.pool = (ctx.pool === 31) ? 0 : ctx.pool + 1;\n }\n };\n\n /**\n * Collects an integer of n bits.\n *\n * @param i the integer entropy.\n * @param n the number of bits in the integer.\n */\n ctx.collectInt = function(i, n) {\n var bytes = '';\n for(var x = 0; x < n; x += 8) {\n bytes += String.fromCharCode((i >> x) & 0xFF);\n }\n ctx.collect(bytes);\n };\n\n /**\n * Registers a Web Worker to receive immediate entropy from the main thread.\n * This method is required until Web Workers can access the native crypto\n * API. This method should be called twice for each created worker, once in\n * the main thread, and once in the worker itself.\n *\n * @param worker the worker to register.\n */\n ctx.registerWorker = function(worker) {\n // worker receives random bytes\n if(worker === self) {\n ctx.seedFile = function(needed, callback) {\n function listener(e) {\n var data = e.data;\n if(data.forge && data.forge.prng) {\n self.removeEventListener('message', listener);\n callback(data.forge.prng.err, data.forge.prng.bytes);\n }\n }\n self.addEventListener('message', listener);\n self.postMessage({forge: {prng: {needed: needed}}});\n };\n } else {\n // main thread sends random bytes upon request\n var listener = function(e) {\n var data = e.data;\n if(data.forge && data.forge.prng) {\n ctx.seedFile(data.forge.prng.needed, function(err, bytes) {\n worker.postMessage({forge: {prng: {err: err, bytes: bytes}}});\n });\n }\n };\n // TODO: do we need to remove the event listener when the worker dies?\n worker.addEventListener('message', listener);\n }\n };\n\n return ctx;\n};\n","/**\n * An API for getting cryptographically-secure random bytes. The bytes are\n * generated using the Fortuna algorithm devised by Bruce Schneier and\n * Niels Ferguson.\n *\n * Getting strong random bytes is not yet easy to do in javascript. The only\n * truish random entropy that can be collected is from the mouse, keyboard, or\n * from timing with respect to page loads, etc. This generator makes a poor\n * attempt at providing random bytes when those sources haven't yet provided\n * enough entropy to initially seed or to reseed the PRNG.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2009-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./sha256');\nrequire('./prng');\nrequire('./util');\n\n(function() {\n\n// forge.random already defined\nif(forge.random && forge.random.getBytes) {\n module.exports = forge.random;\n return;\n}\n\n(function(jQuery) {\n\n// the default prng plugin, uses AES-128\nvar prng_aes = {};\nvar _prng_aes_output = new Array(4);\nvar _prng_aes_buffer = forge.util.createBuffer();\nprng_aes.formatKey = function(key) {\n // convert the key into 32-bit integers\n var tmp = forge.util.createBuffer(key);\n key = new Array(4);\n key[0] = tmp.getInt32();\n key[1] = tmp.getInt32();\n key[2] = tmp.getInt32();\n key[3] = tmp.getInt32();\n\n // return the expanded key\n return forge.aes._expandKey(key, false);\n};\nprng_aes.formatSeed = function(seed) {\n // convert seed into 32-bit integers\n var tmp = forge.util.createBuffer(seed);\n seed = new Array(4);\n seed[0] = tmp.getInt32();\n seed[1] = tmp.getInt32();\n seed[2] = tmp.getInt32();\n seed[3] = tmp.getInt32();\n return seed;\n};\nprng_aes.cipher = function(key, seed) {\n forge.aes._updateBlock(key, seed, _prng_aes_output, false);\n _prng_aes_buffer.putInt32(_prng_aes_output[0]);\n _prng_aes_buffer.putInt32(_prng_aes_output[1]);\n _prng_aes_buffer.putInt32(_prng_aes_output[2]);\n _prng_aes_buffer.putInt32(_prng_aes_output[3]);\n return _prng_aes_buffer.getBytes();\n};\nprng_aes.increment = function(seed) {\n // FIXME: do we care about carry or signed issues?\n ++seed[3];\n return seed;\n};\nprng_aes.md = forge.md.sha256;\n\n/**\n * Creates a new PRNG.\n */\nfunction spawnPrng() {\n var ctx = forge.prng.create(prng_aes);\n\n /**\n * Gets random bytes. If a native secure crypto API is unavailable, this\n * method tries to make the bytes more unpredictable by drawing from data that\n * can be collected from the user of the browser, eg: mouse movement.\n *\n * If a callback is given, this method will be called asynchronously.\n *\n * @param count the number of random bytes to get.\n * @param [callback(err, bytes)] called once the operation completes.\n *\n * @return the random bytes in a string.\n */\n ctx.getBytes = function(count, callback) {\n return ctx.generate(count, callback);\n };\n\n /**\n * Gets random bytes asynchronously. If a native secure crypto API is\n * unavailable, this method tries to make the bytes more unpredictable by\n * drawing from data that can be collected from the user of the browser,\n * eg: mouse movement.\n *\n * @param count the number of random bytes to get.\n *\n * @return the random bytes in a string.\n */\n ctx.getBytesSync = function(count) {\n return ctx.generate(count);\n };\n\n return ctx;\n}\n\n// create default prng context\nvar _ctx = spawnPrng();\n\n// add other sources of entropy only if window.crypto.getRandomValues is not\n// available -- otherwise this source will be automatically used by the prng\nvar getRandomValues = null;\nvar globalScope = forge.util.globalScope;\nvar _crypto = globalScope.crypto || globalScope.msCrypto;\nif(_crypto && _crypto.getRandomValues) {\n getRandomValues = function(arr) {\n return _crypto.getRandomValues(arr);\n };\n}\n\nif(forge.options.usePureJavaScript ||\n (!forge.util.isNodejs && !getRandomValues)) {\n // if this is a web worker, do not use weak entropy, instead register to\n // receive strong entropy asynchronously from the main thread\n if(typeof window === 'undefined' || window.document === undefined) {\n // FIXME:\n }\n\n // get load time entropy\n _ctx.collectInt(+new Date(), 32);\n\n // add some entropy from navigator object\n if(typeof(navigator) !== 'undefined') {\n var _navBytes = '';\n for(var key in navigator) {\n try {\n if(typeof(navigator[key]) == 'string') {\n _navBytes += navigator[key];\n }\n } catch(e) {\n /* Some navigator keys might not be accessible, e.g. the geolocation\n attribute throws an exception if touched in Mozilla chrome://\n context.\n\n Silently ignore this and just don't use this as a source of\n entropy. */\n }\n }\n _ctx.collect(_navBytes);\n _navBytes = null;\n }\n\n // add mouse and keyboard collectors if jquery is available\n if(jQuery) {\n // set up mouse entropy capture\n jQuery().mousemove(function(e) {\n // add mouse coords\n _ctx.collectInt(e.clientX, 16);\n _ctx.collectInt(e.clientY, 16);\n });\n\n // set up keyboard entropy capture\n jQuery().keypress(function(e) {\n _ctx.collectInt(e.charCode, 8);\n });\n }\n}\n\n/* Random API */\nif(!forge.random) {\n forge.random = _ctx;\n} else {\n // extend forge.random with _ctx\n for(var key in _ctx) {\n forge.random[key] = _ctx[key];\n }\n}\n\n// expose spawn PRNG\nforge.random.createInstance = spawnPrng;\n\nmodule.exports = forge.random;\n\n})(typeof(jQuery) !== 'undefined' ? jQuery : null);\n\n})();\n","/**\n * RC2 implementation.\n *\n * @author Stefan Siegl\n *\n * Copyright (c) 2012 Stefan Siegl \n *\n * Information on the RC2 cipher is available from RFC #2268,\n * http://www.ietf.org/rfc/rfc2268.txt\n */\nvar forge = require('./forge');\nrequire('./util');\n\nvar piTable = [\n 0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed, 0x28, 0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d,\n 0xc6, 0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e, 0x62, 0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2,\n 0x17, 0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13, 0x61, 0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32,\n 0xbd, 0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b, 0xf0, 0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82,\n 0x54, 0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c, 0x73, 0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc,\n 0x12, 0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1, 0x42, 0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26,\n 0x6f, 0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57, 0x27, 0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03,\n 0xf8, 0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7, 0x06, 0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7,\n 0x08, 0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7, 0x84, 0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a,\n 0x96, 0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74, 0x4b, 0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec,\n 0xc2, 0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc, 0x24, 0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39,\n 0x99, 0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a, 0xfc, 0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31,\n 0x2d, 0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae, 0x05, 0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9,\n 0xd3, 0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c, 0x63, 0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9,\n 0x0d, 0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0, 0xbb, 0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e,\n 0xc5, 0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77, 0x0a, 0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad\n];\n\nvar s = [1, 2, 3, 5];\n\n/**\n * Rotate a word left by given number of bits.\n *\n * Bits that are shifted out on the left are put back in on the right\n * hand side.\n *\n * @param word The word to shift left.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar rol = function(word, bits) {\n return ((word << bits) & 0xffff) | ((word & 0xffff) >> (16 - bits));\n};\n\n/**\n * Rotate a word right by given number of bits.\n *\n * Bits that are shifted out on the right are put back in on the left\n * hand side.\n *\n * @param word The word to shift right.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar ror = function(word, bits) {\n return ((word & 0xffff) >> bits) | ((word << (16 - bits)) & 0xffff);\n};\n\n/* RC2 API */\nmodule.exports = forge.rc2 = forge.rc2 || {};\n\n/**\n * Perform RC2 key expansion as per RFC #2268, section 2.\n *\n * @param key variable-length user key (between 1 and 128 bytes)\n * @param effKeyBits number of effective key bits (default: 128)\n * @return the expanded RC2 key (ByteBuffer of 128 bytes)\n */\nforge.rc2.expandKey = function(key, effKeyBits) {\n if(typeof key === 'string') {\n key = forge.util.createBuffer(key);\n }\n effKeyBits = effKeyBits || 128;\n\n /* introduce variables that match the names used in RFC #2268 */\n var L = key;\n var T = key.length();\n var T1 = effKeyBits;\n var T8 = Math.ceil(T1 / 8);\n var TM = 0xff >> (T1 & 0x07);\n var i;\n\n for(i = T; i < 128; i++) {\n L.putByte(piTable[(L.at(i - 1) + L.at(i - T)) & 0xff]);\n }\n\n L.setAt(128 - T8, piTable[L.at(128 - T8) & TM]);\n\n for(i = 127 - T8; i >= 0; i--) {\n L.setAt(i, piTable[L.at(i + 1) ^ L.at(i + T8)]);\n }\n\n return L;\n};\n\n/**\n * Creates a RC2 cipher object.\n *\n * @param key the symmetric key to use (as base for key generation).\n * @param bits the number of effective key bits.\n * @param encrypt false for decryption, true for encryption.\n *\n * @return the cipher.\n */\nvar createCipher = function(key, bits, encrypt) {\n var _finish = false, _input = null, _output = null, _iv = null;\n var mixRound, mashRound;\n var i, j, K = [];\n\n /* Expand key and fill into K[] Array */\n key = forge.rc2.expandKey(key, bits);\n for(i = 0; i < 64; i++) {\n K.push(key.getInt16Le());\n }\n\n if(encrypt) {\n /**\n * Perform one mixing round \"in place\".\n *\n * @param R Array of four words to perform mixing on.\n */\n mixRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) +\n ((~R[(i + 3) % 4]) & R[(i + 1) % 4]);\n R[i] = rol(R[i], s[i]);\n j++;\n }\n };\n\n /**\n * Perform one mashing round \"in place\".\n *\n * @param R Array of four words to perform mashing on.\n */\n mashRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[R[(i + 3) % 4] & 63];\n }\n };\n } else {\n /**\n * Perform one r-mixing round \"in place\".\n *\n * @param R Array of four words to perform mixing on.\n */\n mixRound = function(R) {\n for(i = 3; i >= 0; i--) {\n R[i] = ror(R[i], s[i]);\n R[i] -= K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) +\n ((~R[(i + 3) % 4]) & R[(i + 1) % 4]);\n j--;\n }\n };\n\n /**\n * Perform one r-mashing round \"in place\".\n *\n * @param R Array of four words to perform mashing on.\n */\n mashRound = function(R) {\n for(i = 3; i >= 0; i--) {\n R[i] -= K[R[(i + 3) % 4] & 63];\n }\n };\n }\n\n /**\n * Run the specified cipher execution plan.\n *\n * This function takes four words from the input buffer, applies the IV on\n * it (if requested) and runs the provided execution plan.\n *\n * The plan must be put together in form of a array of arrays. Where the\n * outer one is simply a list of steps to perform and the inner one needs\n * to have two elements: the first one telling how many rounds to perform,\n * the second one telling what to do (i.e. the function to call).\n *\n * @param {Array} plan The plan to execute.\n */\n var runPlan = function(plan) {\n var R = [];\n\n /* Get data from input buffer and fill the four words into R */\n for(i = 0; i < 4; i++) {\n var val = _input.getInt16Le();\n\n if(_iv !== null) {\n if(encrypt) {\n /* We're encrypting, apply the IV first. */\n val ^= _iv.getInt16Le();\n } else {\n /* We're decryption, keep cipher text for next block. */\n _iv.putInt16Le(val);\n }\n }\n\n R.push(val & 0xffff);\n }\n\n /* Reset global \"j\" variable as per spec. */\n j = encrypt ? 0 : 63;\n\n /* Run execution plan. */\n for(var ptr = 0; ptr < plan.length; ptr++) {\n for(var ctr = 0; ctr < plan[ptr][0]; ctr++) {\n plan[ptr][1](R);\n }\n }\n\n /* Write back result to output buffer. */\n for(i = 0; i < 4; i++) {\n if(_iv !== null) {\n if(encrypt) {\n /* We're encrypting in CBC-mode, feed back encrypted bytes into\n IV buffer to carry it forward to next block. */\n _iv.putInt16Le(R[i]);\n } else {\n R[i] ^= _iv.getInt16Le();\n }\n }\n\n _output.putInt16Le(R[i]);\n }\n };\n\n /* Create cipher object */\n var cipher = null;\n cipher = {\n /**\n * Starts or restarts the encryption or decryption process, whichever\n * was previously configured.\n *\n * To use the cipher in CBC mode, iv may be given either as a string\n * of bytes, or as a byte buffer. For ECB mode, give null as iv.\n *\n * @param iv the initialization vector to use, null for ECB mode.\n * @param output the output the buffer to write to, null to create one.\n */\n start: function(iv, output) {\n if(iv) {\n /* CBC mode */\n if(typeof iv === 'string') {\n iv = forge.util.createBuffer(iv);\n }\n }\n\n _finish = false;\n _input = forge.util.createBuffer();\n _output = output || new forge.util.createBuffer();\n _iv = iv;\n\n cipher.output = _output;\n },\n\n /**\n * Updates the next block.\n *\n * @param input the buffer to read from.\n */\n update: function(input) {\n if(!_finish) {\n // not finishing, so fill the input buffer with more input\n _input.putBuffer(input);\n }\n\n while(_input.length() >= 8) {\n runPlan([\n [ 5, mixRound ],\n [ 1, mashRound ],\n [ 6, mixRound ],\n [ 1, mashRound ],\n [ 5, mixRound ]\n ]);\n }\n },\n\n /**\n * Finishes encrypting or decrypting.\n *\n * @param pad a padding function to use, null for PKCS#7 padding,\n * signature(blockSize, buffer, decrypt).\n *\n * @return true if successful, false on error.\n */\n finish: function(pad) {\n var rval = true;\n\n if(encrypt) {\n if(pad) {\n rval = pad(8, _input, !encrypt);\n } else {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (_input.length() === 8) ? 8 : (8 - _input.length());\n _input.fillWithByte(padding, padding);\n }\n }\n\n if(rval) {\n // do final update\n _finish = true;\n cipher.update();\n }\n\n if(!encrypt) {\n // check for error: input data not a multiple of block size\n rval = (_input.length() === 0);\n if(rval) {\n if(pad) {\n rval = pad(8, _output, !encrypt);\n } else {\n // ensure padding byte count is valid\n var len = _output.length();\n var count = _output.at(len - 1);\n\n if(count > len) {\n rval = false;\n } else {\n // trim off padding bytes\n _output.truncate(count);\n }\n }\n }\n }\n\n return rval;\n }\n };\n\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to encrypt data in ECB or CBC mode using the\n * given symmetric key. The output will be stored in the 'output' member\n * of the returned cipher.\n *\n * The key and iv may be given as a string of bytes or a byte buffer.\n * The cipher is initialized to use 128 effective key bits.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n *\n * @return the cipher.\n */\nforge.rc2.startEncrypting = function(key, iv, output) {\n var cipher = forge.rc2.createEncryptionCipher(key, 128);\n cipher.start(iv, output);\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to encrypt data in ECB or CBC mode using the\n * given symmetric key.\n *\n * The key may be given as a string of bytes or a byte buffer.\n *\n * To start encrypting call start() on the cipher with an iv and optional\n * output buffer.\n *\n * @param key the symmetric key to use.\n *\n * @return the cipher.\n */\nforge.rc2.createEncryptionCipher = function(key, bits) {\n return createCipher(key, bits, true);\n};\n\n/**\n * Creates an RC2 cipher object to decrypt data in ECB or CBC mode using the\n * given symmetric key. The output will be stored in the 'output' member\n * of the returned cipher.\n *\n * The key and iv may be given as a string of bytes or a byte buffer.\n * The cipher is initialized to use 128 effective key bits.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n *\n * @return the cipher.\n */\nforge.rc2.startDecrypting = function(key, iv, output) {\n var cipher = forge.rc2.createDecryptionCipher(key, 128);\n cipher.start(iv, output);\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to decrypt data in ECB or CBC mode using the\n * given symmetric key.\n *\n * The key may be given as a string of bytes or a byte buffer.\n *\n * To start decrypting call start() on the cipher with an iv and optional\n * output buffer.\n *\n * @param key the symmetric key to use.\n *\n * @return the cipher.\n */\nforge.rc2.createDecryptionCipher = function(key, bits) {\n return createCipher(key, bits, false);\n};\n","// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n/*\nLicensing (LICENSE)\n-------------------\n\nThis software is covered under the following copyright:\n*/\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n/*\nAddress all questions regarding this license to:\n\n Tom Wu\n tjw@cs.Stanford.EDU\n*/\nvar forge = require('./forge');\n\nmodule.exports = forge.jsbn = forge.jsbn || {};\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary&0xffffff)==0xefcafe);\n\n// (public) Constructor\nfunction BigInteger(a,b,c) {\n this.data = [];\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n}\nforge.jsbn.BigInteger = BigInteger;\n\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this.data[i++]+w.data[j]+c;\n c = Math.floor(v/0x4000000);\n w.data[j++] = v&0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this.data[i]&0x7fff;\n var h = this.data[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w.data[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w.data[j++] = l&0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this.data[i]&0x3fff;\n var h = this.data[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w.data[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w.data[j++] = l&0xfffffff;\n }\n return c;\n}\n\n// node.js (no browser)\nif(typeof(navigator) === 'undefined')\n{\n BigInteger.prototype.am = am3;\n dbits = 28;\n} else if(j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else if(j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n} else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1<= 0; --i) r.data[i] = this.data[i];\n r.t = this.t;\n r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this.data[0] = x;\n else if(x < -1) this.data[0] = x+this.DV;\n else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n// (protected) set from string and radix\nfunction bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this.data[this.t++] = x;\n else if(sh+k > this.DB) {\n this.data[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh));\n } else\n this.data[this.t-1] |= x<= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this.data[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this.data[this.t-1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1< 0) {\n if(p < this.DB && (d = this.data[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this.data[i]&((1<>(p+=this.DB-k);\n } else {\n d = (this.data[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n}\n\n// (public) -this\nfunction bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n// (public) |this|\nfunction bnAbs() { return (this.s<0)?this.negate():this; }\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this.data[i]-a.data[i]) != 0) return r;\n return 0;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this.data[this.t-1]^(this.s&this.DM));\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r.data[i+n] = this.data[i];\n for(i = n-1; i >= 0; --i) r.data[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r.data[i-n] = this.data[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r.data[i+ds+1] = (this.data[i]>>cbs)|c;\n c = (this.data[i]&bm)<= 0; --i) r.data[i] = 0;\n r.data[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r.data[i-ds-1] |= (this.data[i]&bm)<>bs;\n }\n if(bs > 0) r.data[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n } else {\n c += this.s;\n while(i < a.t) {\n c -= a.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r.data[i++] = this.DV+c;\n else if(c > 0) r.data[i++] = c;\n r.t = i;\n r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r.data[i] = 0;\n for(i = 0; i < y.t; ++i) r.data[i+x.t] = x.am(0,y.data[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r.data[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x.data[i],r,2*i,0,1);\n if((r.data[i+x.t]+=x.am(i+1,2*x.data[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r.data[i+x.t] -= x.DV;\n r.data[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r.data[r.t-1] += x.am(i,x.data[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm.data[pm.t-1]);\t// normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y.data[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y.data[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r.data[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y);\t// \"negative\" y so we can replace sub with am later\n while(y.t < ys) y.data[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r.data[--i]==y0)?this.DM:Math.floor(r.data[i]*d1+(r.data[i-1]+e)*d2);\n if((r.data[i]+=y.am(0,qd,r,j,0,ys)) < qd) {\t// Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r.data[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r);\t// Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) { this.m = m; }\nfunction cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n}\nfunction cRevert(x) { return x; }\nfunction cReduce(x) { x.divRemTo(this.m,null,x); }\nfunction cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\nfunction cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\nClassic.prototype.convert = cConvert;\nClassic.prototype.revert = cRevert;\nClassic.prototype.reduce = cReduce;\nClassic.prototype.mulTo = cMulTo;\nClassic.prototype.sqrTo = cSqrTo;\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this.data[0];\n if((x&1) == 0) return 0;\n var y = x&3;\t\t// y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf;\t// y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff;\t// y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;\t// y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV;\t\t// y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while(x.t <= this.mt2)\t// pad x so am has enough room later\n x.data[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x.data[i]*mp mod DV\n var j = x.data[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x.data[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x.data[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x.data[j] >= x.DV) { x.data[j] -= x.DV; x.data[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (protected) true iff this is even\nfunction bnpIsEven() { return ((this.t>0)?(this.data[0]&1):this.s) == 0; }\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n}\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.isEven = bnpIsEven;\nBigInteger.prototype.exp = bnpExp;\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.modPowInt = bnModPowInt;\n\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n// jsbn2 lib\n\n//Copyright (c) 2005-2009 Tom Wu\n//All Rights Reserved.\n//See \"LICENSE\" for details (See jsbn.js for LICENSE).\n\n//Extended JavaScript BN functions, required for RSA private ops.\n\n//Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n\n//(public)\nfunction bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n//(public) return value as integer\nfunction bnIntValue() {\nif(this.s < 0) {\n if(this.t == 1) return this.data[0]-this.DV;\n else if(this.t == 0) return -1;\n} else if(this.t == 1) return this.data[0];\nelse if(this.t == 0) return 0;\n// assumes 16 < DB < 32\nreturn ((this.data[1]&((1<<(32-this.DB))-1))<>24; }\n\n//(public) return value as short (assumes DB>=16)\nfunction bnShortValue() { return (this.t==0)?this.s:(this.data[0]<<16)>>16; }\n\n//(protected) return x s.t. r^x < DV\nfunction bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n//(public) 0 if this == 0, 1 if this > 0\nfunction bnSigNum() {\nif(this.s < 0) return -1;\nelse if(this.t <= 0 || (this.t == 1 && this.data[0] <= 0)) return 0;\nelse return 1;\n}\n\n//(protected) convert to radix string\nfunction bnpToRadix(b) {\nif(b == null) b = 10;\nif(this.signum() == 0 || b < 2 || b > 36) return \"0\";\nvar cs = this.chunkSize(b);\nvar a = Math.pow(b,cs);\nvar d = nbv(a), y = nbi(), z = nbi(), r = \"\";\nthis.divRemTo(d,y,z);\nwhile(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n}\nreturn z.intValue().toString(b) + r;\n}\n\n//(protected) convert from radix string\nfunction bnpFromRadix(s,b) {\nthis.fromInt(0);\nif(b == null) b = 10;\nvar cs = this.chunkSize(b);\nvar d = Math.pow(b,cs), mi = false, j = 0, w = 0;\nfor(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n}\nif(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n}\nif(mi) BigInteger.ZERO.subTo(this,this);\n}\n\n//(protected) alternate constructor\nfunction bnpFromNumber(a,b,c) {\nif(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1)) // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n} else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1< 0) {\n if(p < this.DB && (d = this.data[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this.data[i]&((1<>(p+=this.DB-8);\n } else {\n d = (this.data[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n}\nreturn r;\n}\n\nfunction bnEquals(a) { return(this.compareTo(a)==0); }\nfunction bnMin(a) { return(this.compareTo(a)<0)?this:a; }\nfunction bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n//(protected) r = this op a (bitwise)\nfunction bnpBitwiseTo(a,op,r) {\nvar i, f, m = Math.min(a.t,this.t);\nfor(i = 0; i < m; ++i) r.data[i] = op(this.data[i],a.data[i]);\nif(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r.data[i] = op(this.data[i],f);\n r.t = this.t;\n} else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r.data[i] = op(f,a.data[i]);\n r.t = a.t;\n}\nr.s = op(this.s,a.s);\nr.clamp();\n}\n\n//(public) this & a\nfunction op_and(x,y) { return x&y; }\nfunction bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n//(public) this | a\nfunction op_or(x,y) { return x|y; }\nfunction bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n//(public) this ^ a\nfunction op_xor(x,y) { return x^y; }\nfunction bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n//(public) this & ~a\nfunction op_andnot(x,y) { return x&~y; }\nfunction bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n//(public) ~this\nfunction bnNot() {\nvar r = nbi();\nfor(var i = 0; i < this.t; ++i) r.data[i] = this.DM&~this.data[i];\nr.t = this.t;\nr.s = ~this.s;\nreturn r;\n}\n\n//(public) this << n\nfunction bnShiftLeft(n) {\nvar r = nbi();\nif(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\nreturn r;\n}\n\n//(public) this >> n\nfunction bnShiftRight(n) {\nvar r = nbi();\nif(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\nreturn r;\n}\n\n//return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\nif(x == 0) return -1;\nvar r = 0;\nif((x&0xffff) == 0) { x >>= 16; r += 16; }\nif((x&0xff) == 0) { x >>= 8; r += 8; }\nif((x&0xf) == 0) { x >>= 4; r += 4; }\nif((x&3) == 0) { x >>= 2; r += 2; }\nif((x&1) == 0) ++r;\nreturn r;\n}\n\n//(public) returns index of lowest 1-bit (or -1 if none)\nfunction bnGetLowestSetBit() {\nfor(var i = 0; i < this.t; ++i)\n if(this.data[i] != 0) return i*this.DB+lbit(this.data[i]);\nif(this.s < 0) return this.t*this.DB;\nreturn -1;\n}\n\n//return number of 1 bits in x\nfunction cbit(x) {\nvar r = 0;\nwhile(x != 0) { x &= x-1; ++r; }\nreturn r;\n}\n\n//(public) return number of set bits\nfunction bnBitCount() {\nvar r = 0, x = this.s&this.DM;\nfor(var i = 0; i < this.t; ++i) r += cbit(this.data[i]^x);\nreturn r;\n}\n\n//(public) true iff nth bit is set\nfunction bnTestBit(n) {\nvar j = Math.floor(n/this.DB);\nif(j >= this.t) return(this.s!=0);\nreturn((this.data[j]&(1<<(n%this.DB)))!=0);\n}\n\n//(protected) this op (1<>= this.DB;\n}\nif(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n} else {\n c += this.s;\n while(i < a.t) {\n c += a.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n}\nr.s = (c<0)?-1:0;\nif(c > 0) r.data[i++] = c;\nelse if(c < -1) r.data[i++] = this.DV+c;\nr.t = i;\nr.clamp();\n}\n\n//(public) this + a\nfunction bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n//(public) this - a\nfunction bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n//(public) this * a\nfunction bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n//(public) this / a\nfunction bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n//(public) this % a\nfunction bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n//(public) [this/a,this%a]\nfunction bnDivideAndRemainder(a) {\nvar q = nbi(), r = nbi();\nthis.divRemTo(a,q,r);\nreturn new Array(q,r);\n}\n\n//(protected) this *= n, this >= 0, 1 < n < DV\nfunction bnpDMultiply(n) {\nthis.data[this.t] = this.am(0,n-1,this,0,0,this.t);\n++this.t;\nthis.clamp();\n}\n\n//(protected) this += n << w words, this >= 0\nfunction bnpDAddOffset(n,w) {\nif(n == 0) return;\nwhile(this.t <= w) this.data[this.t++] = 0;\nthis.data[w] += n;\nwhile(this.data[w] >= this.DV) {\n this.data[w] -= this.DV;\n if(++w >= this.t) this.data[this.t++] = 0;\n ++this.data[w];\n}\n}\n\n//A \"null\" reducer\nfunction NullExp() {}\nfunction nNop(x) { return x; }\nfunction nMulTo(x,y,r) { x.multiplyTo(y,r); }\nfunction nSqrTo(x,r) { x.squareTo(r); }\n\nNullExp.prototype.convert = nNop;\nNullExp.prototype.revert = nNop;\nNullExp.prototype.mulTo = nMulTo;\nNullExp.prototype.sqrTo = nSqrTo;\n\n//(public) this^e\nfunction bnPow(e) { return this.exp(e,new NullExp()); }\n\n//(protected) r = lower n words of \"this * a\", a.t <= n\n//\"this\" should be the larger one if appropriate.\nfunction bnpMultiplyLowerTo(a,n,r) {\nvar i = Math.min(this.t+a.t,n);\nr.s = 0; // assumes a,this >= 0\nr.t = i;\nwhile(i > 0) r.data[--i] = 0;\nvar j;\nfor(j = r.t-this.t; i < j; ++i) r.data[i+this.t] = this.am(0,a.data[i],r,i,0,this.t);\nfor(j = Math.min(a.t,n); i < j; ++i) this.am(0,a.data[i],r,i,0,n-i);\nr.clamp();\n}\n\n//(protected) r = \"this * a\" without lower n words, n > 0\n//\"this\" should be the larger one if appropriate.\nfunction bnpMultiplyUpperTo(a,n,r) {\n--n;\nvar i = r.t = this.t+a.t-n;\nr.s = 0; // assumes a,this >= 0\nwhile(--i >= 0) r.data[i] = 0;\nfor(i = Math.max(n-this.t,0); i < a.t; ++i)\n r.data[this.t+i-n] = this.am(n-i,a.data[i],r,0,0,this.t+i-n);\nr.clamp();\nr.drShiftTo(1,r);\n}\n\n//Barrett modular reduction\nfunction Barrett(m) {\n// setup Barrett\nthis.r2 = nbi();\nthis.q3 = nbi();\nBigInteger.ONE.dlShiftTo(2*m.t,this.r2);\nthis.mu = this.r2.divide(m);\nthis.m = m;\n}\n\nfunction barrettConvert(x) {\nif(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\nelse if(x.compareTo(this.m) < 0) return x;\nelse { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n}\n\nfunction barrettRevert(x) { return x; }\n\n//x = x mod m (HAC 14.42)\nfunction barrettReduce(x) {\nx.drShiftTo(this.m.t-1,this.r2);\nif(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\nthis.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\nthis.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\nwhile(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\nx.subTo(this.r2,x);\nwhile(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n//r = x^2 mod m; x != r\nfunction barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n//r = x*y mod m; x,y != r\nfunction barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nBarrett.prototype.convert = barrettConvert;\nBarrett.prototype.revert = barrettRevert;\nBarrett.prototype.reduce = barrettReduce;\nBarrett.prototype.mulTo = barrettMulTo;\nBarrett.prototype.sqrTo = barrettSqrTo;\n\n//(public) this^e % m (HAC 14.85)\nfunction bnModPow(e,m) {\nvar i = e.bitLength(), k, r = nbv(1), z;\nif(i <= 0) return r;\nelse if(i < 18) k = 1;\nelse if(i < 48) k = 3;\nelse if(i < 144) k = 4;\nelse if(i < 768) k = 5;\nelse k = 6;\nif(i < 8)\n z = new Classic(m);\nelse if(m.isEven())\n z = new Barrett(m);\nelse\n z = new Montgomery(m);\n\n// precomputation\nvar g = new Array(), n = 3, k1 = k-1, km = (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n}\n\nvar j = e.t-1, w, is1 = true, r2 = nbi(), t;\ni = nbits(e.data[j])-1;\nwhile(j >= 0) {\n if(i >= k1) w = (e.data[j]>>(i-k1))&km;\n else {\n w = (e.data[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e.data[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n } else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e.data[j]&(1< 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n}\nwhile(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n } else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n}\nif(g > 0) y.lShiftTo(g,y);\nreturn y;\n}\n\n//(protected) this % n, n < 2^26\nfunction bnpModInt(n) {\nif(n <= 0) return 0;\nvar d = this.DV%n, r = (this.s<0)?n-1:0;\nif(this.t > 0)\n if(d == 0) r = this.data[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this.data[i])%n;\nreturn r;\n}\n\n//(public) 1/this % m (HAC 14.61)\nfunction bnModInverse(m) {\nvar ac = m.isEven();\nif((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\nvar u = m.clone(), v = this.clone();\nvar a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\nwhile(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n } else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n } else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n } else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n}\nif(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\nif(d.compareTo(m) >= 0) return d.subtract(m);\nif(d.signum() < 0) d.addTo(m,d); else return d;\nif(d.signum() < 0) return d.add(m); else return d;\n}\n\nvar lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509];\nvar lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n//(public) test primality with certainty >= 1-.5^t\nfunction bnIsProbablePrime(t) {\nvar i, x = this.abs();\nif(x.t == 1 && x.data[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x.data[0] == lowprimes[i]) return true;\n return false;\n}\nif(x.isEven()) return false;\ni = 1;\nwhile(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n}\nreturn x.millerRabin(t);\n}\n\n//(protected) true if probably prime (HAC 4.24, Miller-Rabin)\nfunction bnpMillerRabin(t) {\nvar n1 = this.subtract(BigInteger.ONE);\nvar k = n1.getLowestSetBit();\nif(k <= 0) return false;\nvar r = n1.shiftRight(k);\nvar prng = bnGetPrng();\nvar a;\nfor(var i = 0; i < t; ++i) {\n // select witness 'a' at random from between 1 and n1\n do {\n a = new BigInteger(this.bitLength(), prng);\n }\n while(a.compareTo(BigInteger.ONE) <= 0 || a.compareTo(n1) >= 0);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n}\nreturn true;\n}\n\n// get pseudo random number generator\nfunction bnGetPrng() {\n // create prng with api that matches BigInteger secure random\n return {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n for(var i = 0; i < x.length; ++i) {\n x[i] = Math.floor(Math.random() * 0x0100);\n }\n }\n };\n}\n\n//protected\nBigInteger.prototype.chunkSize = bnpChunkSize;\nBigInteger.prototype.toRadix = bnpToRadix;\nBigInteger.prototype.fromRadix = bnpFromRadix;\nBigInteger.prototype.fromNumber = bnpFromNumber;\nBigInteger.prototype.bitwiseTo = bnpBitwiseTo;\nBigInteger.prototype.changeBit = bnpChangeBit;\nBigInteger.prototype.addTo = bnpAddTo;\nBigInteger.prototype.dMultiply = bnpDMultiply;\nBigInteger.prototype.dAddOffset = bnpDAddOffset;\nBigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\nBigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\nBigInteger.prototype.modInt = bnpModInt;\nBigInteger.prototype.millerRabin = bnpMillerRabin;\n\n//public\nBigInteger.prototype.clone = bnClone;\nBigInteger.prototype.intValue = bnIntValue;\nBigInteger.prototype.byteValue = bnByteValue;\nBigInteger.prototype.shortValue = bnShortValue;\nBigInteger.prototype.signum = bnSigNum;\nBigInteger.prototype.toByteArray = bnToByteArray;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.min = bnMin;\nBigInteger.prototype.max = bnMax;\nBigInteger.prototype.and = bnAnd;\nBigInteger.prototype.or = bnOr;\nBigInteger.prototype.xor = bnXor;\nBigInteger.prototype.andNot = bnAndNot;\nBigInteger.prototype.not = bnNot;\nBigInteger.prototype.shiftLeft = bnShiftLeft;\nBigInteger.prototype.shiftRight = bnShiftRight;\nBigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\nBigInteger.prototype.bitCount = bnBitCount;\nBigInteger.prototype.testBit = bnTestBit;\nBigInteger.prototype.setBit = bnSetBit;\nBigInteger.prototype.clearBit = bnClearBit;\nBigInteger.prototype.flipBit = bnFlipBit;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.remainder = bnRemainder;\nBigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\nBigInteger.prototype.modPow = bnModPow;\nBigInteger.prototype.modInverse = bnModInverse;\nBigInteger.prototype.pow = bnPow;\nBigInteger.prototype.gcd = bnGCD;\nBigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n//BigInteger interfaces not implemented in jsbn:\n\n//BigInteger(int signum, byte[] magnitude)\n//double doubleValue()\n//float floatValue()\n//int hashCode()\n//long longValue()\n//static BigInteger valueOf(long val)\n","/**\n * Secure Hash Algorithm with 160-bit digest (SHA-1) implementation.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha1 = module.exports = forge.sha1 = forge.sha1 || {};\nforge.md.sha1 = forge.md.algorithms.sha1 = sha1;\n\n/**\n * Creates a SHA-1 message digest object.\n *\n * @return a message digest object.\n */\nsha1.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // SHA-1 state contains five 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(80);\n\n // message digest object\n var md = {\n algorithm: 'sha1',\n blockLength: 64,\n digestLength: 20,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x67452301,\n h1: 0xEFCDAB89,\n h2: 0x98BADCFE,\n h3: 0x10325476,\n h4: 0xC3D2E1F0\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-1 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var s2 = {\n h0: _state.h0,\n h1: _state.h1,\n h2: _state.h2,\n h3: _state.h3,\n h4: _state.h4\n };\n _update(s2, _w, finalBlock);\n var rval = forge.util.createBuffer();\n rval.putInt32(s2.h0);\n rval.putInt32(s2.h1);\n rval.putInt32(s2.h2);\n rval.putInt32(s2.h3);\n rval.putInt32(s2.h4);\n return rval;\n };\n\n return md;\n};\n\n// sha-1 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 64);\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-1 state with the given byte buffer.\n *\n * @param s the SHA-1 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (64 byte) chunks\n var t, a, b, c, d, e, f, i;\n var len = bytes.length();\n while(len >= 64) {\n // the w array will be populated with sixteen 32-bit big-endian words\n // and then extended into 80 32-bit words according to SHA-1 algorithm\n // and for 32-79 using Max Locktyukhin's optimization\n\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n e = s.h4;\n\n // round 1\n for(i = 0; i < 16; ++i) {\n t = bytes.getInt32();\n w[i] = t;\n f = d ^ (b & (c ^ d));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x5A827999 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n for(; i < 20; ++i) {\n t = (w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n t = (t << 1) | (t >>> 31);\n w[i] = t;\n f = d ^ (b & (c ^ d));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x5A827999 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 2\n for(; i < 32; ++i) {\n t = (w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n t = (t << 1) | (t >>> 31);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0x6ED9EBA1 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n for(; i < 40; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0x6ED9EBA1 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 3\n for(; i < 60; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = (b & c) | (d & (b ^ c));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x8F1BBCDC + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 4\n for(; i < 80; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0xCA62C1D6 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n s.h4 = (s.h4 + e) | 0;\n\n len -= 64;\n }\n}\n","/**\n * Partial implementation of PKCS#1 v2.2: RSA-OEAP\n *\n * Modified but based on the following MIT and BSD licensed code:\n *\n * https://github.com/kjur/jsjws/blob/master/rsa.js:\n *\n * The 'jsjws'(JSON Web Signature JavaScript Library) License\n *\n * Copyright (c) 2012 Kenji Urushima\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * http://webrsa.cvs.sourceforge.net/viewvc/webrsa/Client/RSAES-OAEP.js?content-type=text%2Fplain:\n *\n * RSAES-OAEP.js\n * $Id: RSAES-OAEP.js,v 1.1.1.1 2003/03/19 15:37:20 ellispritchard Exp $\n * JavaScript Implementation of PKCS #1 v2.1 RSA CRYPTOGRAPHY STANDARD (RSA Laboratories, June 14, 2002)\n * Copyright (C) Ellis Pritchard, Guardian Unlimited 2003.\n * Contact: ellis@nukinetics.com\n * Distributed under the BSD License.\n *\n * Official documentation: http://www.rsa.com/rsalabs/node.asp?id=2125\n *\n * @author Evan Jones (http://evanjones.ca/)\n * @author Dave Longley\n *\n * Copyright (c) 2013-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./random');\nrequire('./sha1');\n\n// shortcut for PKCS#1 API\nvar pkcs1 = module.exports = forge.pkcs1 = forge.pkcs1 || {};\n\n/**\n * Encode the given RSAES-OAEP message (M) using key, with optional label (L)\n * and seed.\n *\n * This method does not perform RSA encryption, it only encodes the message\n * using RSAES-OAEP.\n *\n * @param key the RSA key to use.\n * @param message the message to encode.\n * @param options the options to use:\n * label an optional label to use.\n * seed the seed to use.\n * md the message digest object to use, undefined for SHA-1.\n * mgf1 optional mgf1 parameters:\n * md the message digest object to use for MGF1.\n *\n * @return the encoded message bytes.\n */\npkcs1.encode_rsa_oaep = function(key, message, options) {\n // parse arguments\n var label;\n var seed;\n var md;\n var mgf1Md;\n // legacy args (label, seed, md)\n if(typeof options === 'string') {\n label = options;\n seed = arguments[3] || undefined;\n md = arguments[4] || undefined;\n } else if(options) {\n label = options.label || undefined;\n seed = options.seed || undefined;\n md = options.md || undefined;\n if(options.mgf1 && options.mgf1.md) {\n mgf1Md = options.mgf1.md;\n }\n }\n\n // default OAEP to SHA-1 message digest\n if(!md) {\n md = forge.md.sha1.create();\n } else {\n md.start();\n }\n\n // default MGF-1 to same as OAEP\n if(!mgf1Md) {\n mgf1Md = md;\n }\n\n // compute length in bytes and check output\n var keyLength = Math.ceil(key.n.bitLength() / 8);\n var maxLength = keyLength - 2 * md.digestLength - 2;\n if(message.length > maxLength) {\n var error = new Error('RSAES-OAEP input message length is too long.');\n error.length = message.length;\n error.maxLength = maxLength;\n throw error;\n }\n\n if(!label) {\n label = '';\n }\n md.update(label, 'raw');\n var lHash = md.digest();\n\n var PS = '';\n var PS_length = maxLength - message.length;\n for(var i = 0; i < PS_length; i++) {\n PS += '\\x00';\n }\n\n var DB = lHash.getBytes() + PS + '\\x01' + message;\n\n if(!seed) {\n seed = forge.random.getBytes(md.digestLength);\n } else if(seed.length !== md.digestLength) {\n var error = new Error('Invalid RSAES-OAEP seed. The seed length must ' +\n 'match the digest length.');\n error.seedLength = seed.length;\n error.digestLength = md.digestLength;\n throw error;\n }\n\n var dbMask = rsa_mgf1(seed, keyLength - md.digestLength - 1, mgf1Md);\n var maskedDB = forge.util.xorBytes(DB, dbMask, DB.length);\n\n var seedMask = rsa_mgf1(maskedDB, md.digestLength, mgf1Md);\n var maskedSeed = forge.util.xorBytes(seed, seedMask, seed.length);\n\n // return encoded message\n return '\\x00' + maskedSeed + maskedDB;\n};\n\n/**\n * Decode the given RSAES-OAEP encoded message (EM) using key, with optional\n * label (L).\n *\n * This method does not perform RSA decryption, it only decodes the message\n * using RSAES-OAEP.\n *\n * @param key the RSA key to use.\n * @param em the encoded message to decode.\n * @param options the options to use:\n * label an optional label to use.\n * md the message digest object to use for OAEP, undefined for SHA-1.\n * mgf1 optional mgf1 parameters:\n * md the message digest object to use for MGF1.\n *\n * @return the decoded message bytes.\n */\npkcs1.decode_rsa_oaep = function(key, em, options) {\n // parse args\n var label;\n var md;\n var mgf1Md;\n // legacy args\n if(typeof options === 'string') {\n label = options;\n md = arguments[3] || undefined;\n } else if(options) {\n label = options.label || undefined;\n md = options.md || undefined;\n if(options.mgf1 && options.mgf1.md) {\n mgf1Md = options.mgf1.md;\n }\n }\n\n // compute length in bytes\n var keyLength = Math.ceil(key.n.bitLength() / 8);\n\n if(em.length !== keyLength) {\n var error = new Error('RSAES-OAEP encoded message length is invalid.');\n error.length = em.length;\n error.expectedLength = keyLength;\n throw error;\n }\n\n // default OAEP to SHA-1 message digest\n if(md === undefined) {\n md = forge.md.sha1.create();\n } else {\n md.start();\n }\n\n // default MGF-1 to same as OAEP\n if(!mgf1Md) {\n mgf1Md = md;\n }\n\n if(keyLength < 2 * md.digestLength + 2) {\n throw new Error('RSAES-OAEP key is too short for the hash function.');\n }\n\n if(!label) {\n label = '';\n }\n md.update(label, 'raw');\n var lHash = md.digest().getBytes();\n\n // split the message into its parts\n var y = em.charAt(0);\n var maskedSeed = em.substring(1, md.digestLength + 1);\n var maskedDB = em.substring(1 + md.digestLength);\n\n var seedMask = rsa_mgf1(maskedDB, md.digestLength, mgf1Md);\n var seed = forge.util.xorBytes(maskedSeed, seedMask, maskedSeed.length);\n\n var dbMask = rsa_mgf1(seed, keyLength - md.digestLength - 1, mgf1Md);\n var db = forge.util.xorBytes(maskedDB, dbMask, maskedDB.length);\n\n var lHashPrime = db.substring(0, md.digestLength);\n\n // constant time check that all values match what is expected\n var error = (y !== '\\x00');\n\n // constant time check lHash vs lHashPrime\n for(var i = 0; i < md.digestLength; ++i) {\n error |= (lHash.charAt(i) !== lHashPrime.charAt(i));\n }\n\n // \"constant time\" find the 0x1 byte separating the padding (zeros) from the\n // message\n // TODO: It must be possible to do this in a better/smarter way?\n var in_ps = 1;\n var index = md.digestLength;\n for(var j = md.digestLength; j < db.length; j++) {\n var code = db.charCodeAt(j);\n\n var is_0 = (code & 0x1) ^ 0x1;\n\n // non-zero if not 0 or 1 in the ps section\n var error_mask = in_ps ? 0xfffe : 0x0000;\n error |= (code & error_mask);\n\n // latch in_ps to zero after we find 0x1\n in_ps = in_ps & is_0;\n index += in_ps;\n }\n\n if(error || db.charCodeAt(index) !== 0x1) {\n throw new Error('Invalid RSAES-OAEP padding.');\n }\n\n return db.substring(index + 1);\n};\n\nfunction rsa_mgf1(seed, maskLength, hash) {\n // default to SHA-1 message digest\n if(!hash) {\n hash = forge.md.sha1.create();\n }\n var t = '';\n var count = Math.ceil(maskLength / hash.digestLength);\n for(var i = 0; i < count; ++i) {\n var c = String.fromCharCode(\n (i >> 24) & 0xFF, (i >> 16) & 0xFF, (i >> 8) & 0xFF, i & 0xFF);\n hash.start();\n hash.update(seed + c);\n t += hash.digest().getBytes();\n }\n return t.substring(0, maskLength);\n}\n","/**\n * Prime number generation API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./jsbn');\nrequire('./random');\n\n(function() {\n\n// forge.prime already defined\nif(forge.prime) {\n module.exports = forge.prime;\n return;\n}\n\n/* PRIME API */\nvar prime = module.exports = forge.prime = forge.prime || {};\n\nvar BigInteger = forge.jsbn.BigInteger;\n\n// primes are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29\nvar GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];\nvar THIRTY = new BigInteger(null);\nTHIRTY.fromInt(30);\nvar op_or = function(x, y) {return x|y;};\n\n/**\n * Generates a random probable prime with the given number of bits.\n *\n * Alternative algorithms can be specified by name as a string or as an\n * object with custom options like so:\n *\n * {\n * name: 'PRIMEINC',\n * options: {\n * maxBlockTime: ,\n * millerRabinTests: ,\n * workerScript: ,\n * workers: .\n * workLoad: the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * }\n * }\n *\n * @param bits the number of bits for the prime number.\n * @param options the options to use.\n * [algorithm] the algorithm to use (default: 'PRIMEINC').\n * [prng] a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n *\n * @return callback(err, num) called once the operation completes.\n */\nprime.generateProbablePrime = function(bits, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // default to PRIMEINC algorithm\n var algorithm = options.algorithm || 'PRIMEINC';\n if(typeof algorithm === 'string') {\n algorithm = {name: algorithm};\n }\n algorithm.options = algorithm.options || {};\n\n // create prng with api that matches BigInteger secure random\n var prng = options.prng || forge.random;\n var rng = {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n var b = prng.getBytesSync(x.length);\n for(var i = 0; i < x.length; ++i) {\n x[i] = b.charCodeAt(i);\n }\n }\n };\n\n if(algorithm.name === 'PRIMEINC') {\n return primeincFindPrime(bits, rng, algorithm.options, callback);\n }\n\n throw new Error('Invalid prime generation algorithm: ' + algorithm.name);\n};\n\nfunction primeincFindPrime(bits, rng, options, callback) {\n if('workers' in options) {\n return primeincFindPrimeWithWorkers(bits, rng, options, callback);\n }\n return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);\n}\n\nfunction primeincFindPrimeWithoutWorkers(bits, rng, options, callback) {\n // initialize random number\n var num = generateRandom(bits, rng);\n\n /* Note: All primes are of the form 30k+i for i < 30 and gcd(30, i)=1. The\n number we are given is always aligned at 30k + 1. Each time the number is\n determined not to be prime we add to get to the next 'i', eg: if the number\n was at 30k + 1 we add 6. */\n var deltaIdx = 0;\n\n // get required number of MR tests\n var mrTests = getMillerRabinTests(num.bitLength());\n if('millerRabinTests' in options) {\n mrTests = options.millerRabinTests;\n }\n\n // find prime nearest to 'num' for maxBlockTime ms\n // 10 ms gives 5ms of leeway for other calculations before dropping\n // below 60fps (1000/60 == 16.67), but in reality, the number will\n // likely be higher due to an 'atomic' big int modPow\n var maxBlockTime = 10;\n if('maxBlockTime' in options) {\n maxBlockTime = options.maxBlockTime;\n }\n\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n}\n\nfunction _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback) {\n var start = +new Date();\n do {\n // overflow, regenerate random number\n if(num.bitLength() > bits) {\n num = generateRandom(bits, rng);\n }\n // do primality test\n if(num.isProbablePrime(mrTests)) {\n return callback(null, num);\n }\n // get next potential prime\n num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);\n } while(maxBlockTime < 0 || (+new Date() - start < maxBlockTime));\n\n // keep trying later\n forge.util.setImmediate(function() {\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n });\n}\n\n// NOTE: This algorithm is indeterminate in nature because workers\n// run in parallel looking at different segments of numbers. Even if this\n// algorithm is run twice with the same input from a predictable RNG, it\n// may produce different outputs.\nfunction primeincFindPrimeWithWorkers(bits, rng, options, callback) {\n // web workers unavailable\n if(typeof Worker === 'undefined') {\n return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);\n }\n\n // initialize random number\n var num = generateRandom(bits, rng);\n\n // use web workers to generate keys\n var numWorkers = options.workers;\n var workLoad = options.workLoad || 100;\n var range = workLoad * 30 / 8;\n var workerScript = options.workerScript || 'forge/prime.worker.js';\n if(numWorkers === -1) {\n return forge.util.estimateCores(function(err, cores) {\n if(err) {\n // default to 2\n cores = 2;\n }\n numWorkers = cores - 1;\n generate();\n });\n }\n generate();\n\n function generate() {\n // require at least 1 worker\n numWorkers = Math.max(1, numWorkers);\n\n // TODO: consider optimizing by starting workers outside getPrime() ...\n // note that in order to clean up they will have to be made internally\n // asynchronous which may actually be slower\n\n // start workers immediately\n var workers = [];\n for(var i = 0; i < numWorkers; ++i) {\n // FIXME: fix path or use blob URLs\n workers[i] = new Worker(workerScript);\n }\n var running = numWorkers;\n\n // listen for requests from workers and assign ranges to find prime\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].addEventListener('message', workerMessage);\n }\n\n /* Note: The distribution of random numbers is unknown. Therefore, each\n web worker is continuously allocated a range of numbers to check for a\n random number until one is found.\n\n Every 30 numbers will be checked just 8 times, because prime numbers\n have the form:\n\n 30k+i, for i < 30 and gcd(30, i)=1 (there are 8 values of i for this)\n\n Therefore, if we want a web worker to run N checks before asking for\n a new range of numbers, each range must contain N*30/8 numbers.\n\n For 100 checks (workLoad), this is a range of 375. */\n\n var found = false;\n function workerMessage(e) {\n // ignore message, prime already found\n if(found) {\n return;\n }\n\n --running;\n var data = e.data;\n if(data.found) {\n // terminate all workers\n for(var i = 0; i < workers.length; ++i) {\n workers[i].terminate();\n }\n found = true;\n return callback(null, new BigInteger(data.prime, 16));\n }\n\n // overflow, regenerate random number\n if(num.bitLength() > bits) {\n num = generateRandom(bits, rng);\n }\n\n // assign new range to check\n var hex = num.toString(16);\n\n // start prime search\n e.target.postMessage({\n hex: hex,\n workLoad: workLoad\n });\n\n num.dAddOffset(range, 0);\n }\n }\n}\n\n/**\n * Generates a random number using the given number of bits and RNG.\n *\n * @param bits the number of bits for the number.\n * @param rng the random number generator to use.\n *\n * @return the random number.\n */\nfunction generateRandom(bits, rng) {\n var num = new BigInteger(bits, rng);\n // force MSB set\n var bits1 = bits - 1;\n if(!num.testBit(bits1)) {\n num.bitwiseTo(BigInteger.ONE.shiftLeft(bits1), op_or, num);\n }\n // align number on 30k+1 boundary\n num.dAddOffset(31 - num.mod(THIRTY).byteValue(), 0);\n return num;\n}\n\n/**\n * Returns the required number of Miller-Rabin tests to generate a\n * prime with an error probability of (1/2)^80.\n *\n * See Handbook of Applied Cryptography Chapter 4, Table 4.4.\n *\n * @param bits the bit size.\n *\n * @return the required number of iterations.\n */\nfunction getMillerRabinTests(bits) {\n if(bits <= 100) return 27;\n if(bits <= 150) return 18;\n if(bits <= 200) return 15;\n if(bits <= 250) return 12;\n if(bits <= 300) return 9;\n if(bits <= 350) return 8;\n if(bits <= 400) return 7;\n if(bits <= 500) return 6;\n if(bits <= 600) return 5;\n if(bits <= 800) return 4;\n if(bits <= 1250) return 3;\n return 2;\n}\n\n})();\n","/**\n * Javascript implementation of basic RSA algorithms.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n *\n * The only algorithm currently supported for PKI is RSA.\n *\n * An RSA key is often stored in ASN.1 DER format. The SubjectPublicKeyInfo\n * ASN.1 structure is composed of an algorithm of type AlgorithmIdentifier\n * and a subjectPublicKey of type bit string.\n *\n * The AlgorithmIdentifier contains an Object Identifier (OID) and parameters\n * for the algorithm, if any. In the case of RSA, there aren't any.\n *\n * SubjectPublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * subjectPublicKey BIT STRING\n * }\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * For an RSA public key, the subjectPublicKey is:\n *\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n *\n * PrivateKeyInfo ::= SEQUENCE {\n * version Version,\n * privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,\n * privateKey PrivateKey,\n * attributes [0] IMPLICIT Attributes OPTIONAL\n * }\n *\n * Version ::= INTEGER\n * PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier\n * PrivateKey ::= OCTET STRING\n * Attributes ::= SET OF Attribute\n *\n * An RSA private key as the following structure:\n *\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p-1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER -- (inverse of q) mod p\n * }\n *\n * Version ::= INTEGER\n *\n * The OID for the RSA key algorithm is: 1.2.840.113549.1.1.1\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./jsbn');\nrequire('./oids');\nrequire('./pkcs1');\nrequire('./prime');\nrequire('./random');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\nvar _crypto = forge.util.isNodejs ? require('crypto') : null;\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n// shortcut for util API\nvar util = forge.util;\n\n/*\n * RSA encryption and decryption, see RFC 2313.\n */\nforge.pki = forge.pki || {};\nmodule.exports = forge.pki.rsa = forge.rsa = forge.rsa || {};\nvar pki = forge.pki;\n\n// for finding primes, which are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29\nvar GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];\n\n// validator for a PrivateKeyInfo structure\nvar privateKeyValidator = {\n // PrivateKeyInfo\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'PrivateKeyInfo.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // privateKeyAlgorithm\n name: 'PrivateKeyInfo.privateKeyAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'privateKeyOid'\n }]\n }, {\n // PrivateKey\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'privateKey'\n }]\n};\n\n// validator for an RSA private key\nvar rsaPrivateKeyValidator = {\n // RSAPrivateKey\n name: 'RSAPrivateKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'RSAPrivateKey.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // modulus (n)\n name: 'RSAPrivateKey.modulus',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyModulus'\n }, {\n // publicExponent (e)\n name: 'RSAPrivateKey.publicExponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPublicExponent'\n }, {\n // privateExponent (d)\n name: 'RSAPrivateKey.privateExponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrivateExponent'\n }, {\n // prime1 (p)\n name: 'RSAPrivateKey.prime1',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrime1'\n }, {\n // prime2 (q)\n name: 'RSAPrivateKey.prime2',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrime2'\n }, {\n // exponent1 (d mod (p-1))\n name: 'RSAPrivateKey.exponent1',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyExponent1'\n }, {\n // exponent2 (d mod (q-1))\n name: 'RSAPrivateKey.exponent2',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyExponent2'\n }, {\n // coefficient ((inverse of q) mod p)\n name: 'RSAPrivateKey.coefficient',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyCoefficient'\n }]\n};\n\n// validator for an RSA public key\nvar rsaPublicKeyValidator = {\n // RSAPublicKey\n name: 'RSAPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // modulus (n)\n name: 'RSAPublicKey.modulus',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'publicKeyModulus'\n }, {\n // publicExponent (e)\n name: 'RSAPublicKey.exponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'publicKeyExponent'\n }]\n};\n\n// validator for an SubjectPublicKeyInfo structure\n// Note: Currently only works with an RSA public key\nvar publicKeyValidator = forge.pki.rsa.publicKeyValidator = {\n name: 'SubjectPublicKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'subjectPublicKeyInfo',\n value: [{\n name: 'SubjectPublicKeyInfo.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'publicKeyOid'\n }]\n }, {\n // subjectPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n value: [{\n // RSAPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey.RSAPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n captureAsn1: 'rsaPublicKey'\n }]\n }]\n};\n\n// validator for a DigestInfo structure\nvar digestInfoValidator = {\n name: 'DigestInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'DigestInfo.DigestAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'DigestInfo.DigestAlgorithm.algorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'algorithmIdentifier'\n }, {\n // NULL paramters\n name: 'DigestInfo.DigestAlgorithm.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.NULL,\n // captured only to check existence for md2 and md5\n capture: 'parameters',\n optional: true,\n constructed: false\n }]\n }, {\n // digest\n name: 'DigestInfo.digest',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'digest'\n }]\n};\n\n/**\n * Wrap digest in DigestInfo object.\n *\n * This function implements EMSA-PKCS1-v1_5-ENCODE as per RFC 3447.\n *\n * DigestInfo ::= SEQUENCE {\n * digestAlgorithm DigestAlgorithmIdentifier,\n * digest Digest\n * }\n *\n * DigestAlgorithmIdentifier ::= AlgorithmIdentifier\n * Digest ::= OCTET STRING\n *\n * @param md the message digest object with the hash to sign.\n *\n * @return the encoded message (ready for RSA encrytion)\n */\nvar emsaPkcs1v15encode = function(md) {\n // get the oid for the algorithm\n var oid;\n if(md.algorithm in pki.oids) {\n oid = pki.oids[md.algorithm];\n } else {\n var error = new Error('Unknown message digest algorithm.');\n error.algorithm = md.algorithm;\n throw error;\n }\n var oidBytes = asn1.oidToDer(oid).getBytes();\n\n // create the digest info\n var digestInfo = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var digestAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n digestAlgorithm.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OID, false, oidBytes));\n digestAlgorithm.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.NULL, false, ''));\n var digest = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING,\n false, md.digest().getBytes());\n digestInfo.value.push(digestAlgorithm);\n digestInfo.value.push(digest);\n\n // encode digest info\n return asn1.toDer(digestInfo).getBytes();\n};\n\n/**\n * Performs x^c mod n (RSA encryption or decryption operation).\n *\n * @param x the number to raise and mod.\n * @param key the key to use.\n * @param pub true if the key is public, false if private.\n *\n * @return the result of x^c mod n.\n */\nvar _modPow = function(x, key, pub) {\n if(pub) {\n return x.modPow(key.e, key.n);\n }\n\n if(!key.p || !key.q) {\n // allow calculation without CRT params (slow)\n return x.modPow(key.d, key.n);\n }\n\n // pre-compute dP, dQ, and qInv if necessary\n if(!key.dP) {\n key.dP = key.d.mod(key.p.subtract(BigInteger.ONE));\n }\n if(!key.dQ) {\n key.dQ = key.d.mod(key.q.subtract(BigInteger.ONE));\n }\n if(!key.qInv) {\n key.qInv = key.q.modInverse(key.p);\n }\n\n /* Chinese remainder theorem (CRT) states:\n\n Suppose n1, n2, ..., nk are positive integers which are pairwise\n coprime (n1 and n2 have no common factors other than 1). For any\n integers x1, x2, ..., xk there exists an integer x solving the\n system of simultaneous congruences (where ~= means modularly\n congruent so a ~= b mod n means a mod n = b mod n):\n\n x ~= x1 mod n1\n x ~= x2 mod n2\n ...\n x ~= xk mod nk\n\n This system of congruences has a single simultaneous solution x\n between 0 and n - 1. Furthermore, each xk solution and x itself\n is congruent modulo the product n = n1*n2*...*nk.\n So x1 mod n = x2 mod n = xk mod n = x mod n.\n\n The single simultaneous solution x can be solved with the following\n equation:\n\n x = sum(xi*ri*si) mod n where ri = n/ni and si = ri^-1 mod ni.\n\n Where x is less than n, xi = x mod ni.\n\n For RSA we are only concerned with k = 2. The modulus n = pq, where\n p and q are coprime. The RSA decryption algorithm is:\n\n y = x^d mod n\n\n Given the above:\n\n x1 = x^d mod p\n r1 = n/p = q\n s1 = q^-1 mod p\n x2 = x^d mod q\n r2 = n/q = p\n s2 = p^-1 mod q\n\n So y = (x1r1s1 + x2r2s2) mod n\n = ((x^d mod p)q(q^-1 mod p) + (x^d mod q)p(p^-1 mod q)) mod n\n\n According to Fermat's Little Theorem, if the modulus P is prime,\n for any integer A not evenly divisible by P, A^(P-1) ~= 1 mod P.\n Since A is not divisible by P it follows that if:\n N ~= M mod (P - 1), then A^N mod P = A^M mod P. Therefore:\n\n A^N mod P = A^(M mod (P - 1)) mod P. (The latter takes less effort\n to calculate). In order to calculate x^d mod p more quickly the\n exponent d mod (p - 1) is stored in the RSA private key (the same\n is done for x^d mod q). These values are referred to as dP and dQ\n respectively. Therefore we now have:\n\n y = ((x^dP mod p)q(q^-1 mod p) + (x^dQ mod q)p(p^-1 mod q)) mod n\n\n Since we'll be reducing x^dP by modulo p (same for q) we can also\n reduce x by p (and q respectively) before hand. Therefore, let\n\n xp = ((x mod p)^dP mod p), and\n xq = ((x mod q)^dQ mod q), yielding:\n\n y = (xp*q*(q^-1 mod p) + xq*p*(p^-1 mod q)) mod n\n\n This can be further reduced to a simple algorithm that only\n requires 1 inverse (the q inverse is used) to be used and stored.\n The algorithm is called Garner's algorithm. If qInv is the\n inverse of q, we simply calculate:\n\n y = (qInv*(xp - xq) mod p) * q + xq\n\n However, there are two further complications. First, we need to\n ensure that xp > xq to prevent signed BigIntegers from being used\n so we add p until this is true (since we will be mod'ing with\n p anyway). Then, there is a known timing attack on algorithms\n using the CRT. To mitigate this risk, \"cryptographic blinding\"\n should be used. This requires simply generating a random number r\n between 0 and n-1 and its inverse and multiplying x by r^e before\n calculating y and then multiplying y by r^-1 afterwards. Note that\n r must be coprime with n (gcd(r, n) === 1) in order to have an\n inverse.\n */\n\n // cryptographic blinding\n var r;\n do {\n r = new BigInteger(\n forge.util.bytesToHex(forge.random.getBytes(key.n.bitLength() / 8)),\n 16);\n } while(r.compareTo(key.n) >= 0 || !r.gcd(key.n).equals(BigInteger.ONE));\n x = x.multiply(r.modPow(key.e, key.n)).mod(key.n);\n\n // calculate xp and xq\n var xp = x.mod(key.p).modPow(key.dP, key.p);\n var xq = x.mod(key.q).modPow(key.dQ, key.q);\n\n // xp must be larger than xq to avoid signed bit usage\n while(xp.compareTo(xq) < 0) {\n xp = xp.add(key.p);\n }\n\n // do last step\n var y = xp.subtract(xq)\n .multiply(key.qInv).mod(key.p)\n .multiply(key.q).add(xq);\n\n // remove effect of random for cryptographic blinding\n y = y.multiply(r.modInverse(key.n)).mod(key.n);\n\n return y;\n};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED, use 'sign' on a private key object or\n * 'encrypt' on a public key object instead.\n *\n * Performs RSA encryption.\n *\n * The parameter bt controls whether to put padding bytes before the\n * message passed in. Set bt to either true or false to disable padding\n * completely (in order to handle e.g. EMSA-PSS encoding seperately before),\n * signaling whether the encryption operation is a public key operation\n * (i.e. encrypting data) or not, i.e. private key operation (data signing).\n *\n * For PKCS#1 v1.5 padding pass in the block type to use, i.e. either 0x01\n * (for signing) or 0x02 (for encryption). The key operation mode (private\n * or public) is derived from this flag in that case).\n *\n * @param m the message to encrypt as a byte string.\n * @param key the RSA key to use.\n * @param bt for PKCS#1 v1.5 padding, the block type to use\n * (0x01 for private key, 0x02 for public),\n * to disable padding: true = public key, false = private key.\n *\n * @return the encrypted bytes as a string.\n */\npki.rsa.encrypt = function(m, key, bt) {\n var pub = bt;\n var eb;\n\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n if(bt !== false && bt !== true) {\n // legacy, default to PKCS#1 v1.5 padding\n pub = (bt === 0x02);\n eb = _encodePkcs1_v1_5(m, key, bt);\n } else {\n eb = forge.util.createBuffer();\n eb.putBytes(m);\n }\n\n // load encryption block as big integer 'x'\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var x = new BigInteger(eb.toHex(), 16);\n\n // do RSA encryption\n var y = _modPow(x, key, pub);\n\n // convert y into the encrypted data byte string, if y is shorter in\n // bytes than k, then prepend zero bytes to fill up ed\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var yhex = y.toString(16);\n var ed = forge.util.createBuffer();\n var zeros = k - Math.ceil(yhex.length / 2);\n while(zeros > 0) {\n ed.putByte(0x00);\n --zeros;\n }\n ed.putBytes(forge.util.hexToBytes(yhex));\n return ed.getBytes();\n};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED, use 'decrypt' on a private key object or\n * 'verify' on a public key object instead.\n *\n * Performs RSA decryption.\n *\n * The parameter ml controls whether to apply PKCS#1 v1.5 padding\n * or not. Set ml = false to disable padding removal completely\n * (in order to handle e.g. EMSA-PSS later on) and simply pass back\n * the RSA encryption block.\n *\n * @param ed the encrypted data to decrypt in as a byte string.\n * @param key the RSA key to use.\n * @param pub true for a public key operation, false for private.\n * @param ml the message length, if known, false to disable padding.\n *\n * @return the decrypted message as a byte string.\n */\npki.rsa.decrypt = function(ed, key, pub, ml) {\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n // error if the length of the encrypted data ED is not k\n if(ed.length !== k) {\n var error = new Error('Encrypted message length is invalid.');\n error.length = ed.length;\n error.expected = k;\n throw error;\n }\n\n // convert encrypted data into a big integer\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var y = new BigInteger(forge.util.createBuffer(ed).toHex(), 16);\n\n // y must be less than the modulus or it wasn't the result of\n // a previous mod operation (encryption) using that modulus\n if(y.compareTo(key.n) >= 0) {\n throw new Error('Encrypted message is invalid.');\n }\n\n // do RSA decryption\n var x = _modPow(y, key, pub);\n\n // create the encryption block, if x is shorter in bytes than k, then\n // prepend zero bytes to fill up eb\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var xhex = x.toString(16);\n var eb = forge.util.createBuffer();\n var zeros = k - Math.ceil(xhex.length / 2);\n while(zeros > 0) {\n eb.putByte(0x00);\n --zeros;\n }\n eb.putBytes(forge.util.hexToBytes(xhex));\n\n if(ml !== false) {\n // legacy, default to PKCS#1 v1.5 padding\n return _decodePkcs1_v1_5(eb.getBytes(), key, pub);\n }\n\n // return message\n return eb.getBytes();\n};\n\n/**\n * Creates an RSA key-pair generation state object. It is used to allow\n * key-generation to be performed in steps. It also allows for a UI to\n * display progress updates.\n *\n * @param bits the size for the private key in bits, defaults to 2048.\n * @param e the public exponent to use, defaults to 65537 (0x10001).\n * @param [options] the options to use.\n * prng a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n * algorithm the algorithm to use (default: 'PRIMEINC').\n *\n * @return the state object to use to generate the key-pair.\n */\npki.rsa.createKeyPairGenerationState = function(bits, e, options) {\n // TODO: migrate step-based prime generation code to forge.prime\n\n // set default bits\n if(typeof(bits) === 'string') {\n bits = parseInt(bits, 10);\n }\n bits = bits || 2048;\n\n // create prng with api that matches BigInteger secure random\n options = options || {};\n var prng = options.prng || forge.random;\n var rng = {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n var b = prng.getBytesSync(x.length);\n for(var i = 0; i < x.length; ++i) {\n x[i] = b.charCodeAt(i);\n }\n }\n };\n\n var algorithm = options.algorithm || 'PRIMEINC';\n\n // create PRIMEINC algorithm state\n var rval;\n if(algorithm === 'PRIMEINC') {\n rval = {\n algorithm: algorithm,\n state: 0,\n bits: bits,\n rng: rng,\n eInt: e || 65537,\n e: new BigInteger(null),\n p: null,\n q: null,\n qBits: bits >> 1,\n pBits: bits - (bits >> 1),\n pqState: 0,\n num: null,\n keys: null\n };\n rval.e.fromInt(rval.eInt);\n } else {\n throw new Error('Invalid key generation algorithm: ' + algorithm);\n }\n\n return rval;\n};\n\n/**\n * Attempts to runs the key-generation algorithm for at most n seconds\n * (approximately) using the given state. When key-generation has completed,\n * the keys will be stored in state.keys.\n *\n * To use this function to update a UI while generating a key or to prevent\n * causing browser lockups/warnings, set \"n\" to a value other than 0. A\n * simple pattern for generating a key and showing a progress indicator is:\n *\n * var state = pki.rsa.createKeyPairGenerationState(2048);\n * var step = function() {\n * // step key-generation, run algorithm for 100 ms, repeat\n * if(!forge.pki.rsa.stepKeyPairGenerationState(state, 100)) {\n * setTimeout(step, 1);\n * } else {\n * // key-generation complete\n * // TODO: turn off progress indicator here\n * // TODO: use the generated key-pair in \"state.keys\"\n * }\n * };\n * // TODO: turn on progress indicator here\n * setTimeout(step, 0);\n *\n * @param state the state to use.\n * @param n the maximum number of milliseconds to run the algorithm for, 0\n * to run the algorithm to completion.\n *\n * @return true if the key-generation completed, false if not.\n */\npki.rsa.stepKeyPairGenerationState = function(state, n) {\n // set default algorithm if not set\n if(!('algorithm' in state)) {\n state.algorithm = 'PRIMEINC';\n }\n\n // TODO: migrate step-based prime generation code to forge.prime\n // TODO: abstract as PRIMEINC algorithm\n\n // do key generation (based on Tom Wu's rsa.js, see jsbn.js license)\n // with some minor optimizations and designed to run in steps\n\n // local state vars\n var THIRTY = new BigInteger(null);\n THIRTY.fromInt(30);\n var deltaIdx = 0;\n var op_or = function(x, y) {return x | y;};\n\n // keep stepping until time limit is reached or done\n var t1 = +new Date();\n var t2;\n var total = 0;\n while(state.keys === null && (n <= 0 || total < n)) {\n // generate p or q\n if(state.state === 0) {\n /* Note: All primes are of the form:\n\n 30k+i, for i < 30 and gcd(30, i)=1, where there are 8 values for i\n\n When we generate a random number, we always align it at 30k + 1. Each\n time the number is determined not to be prime we add to get to the\n next 'i', eg: if the number was at 30k + 1 we add 6. */\n var bits = (state.p === null) ? state.pBits : state.qBits;\n var bits1 = bits - 1;\n\n // get a random number\n if(state.pqState === 0) {\n state.num = new BigInteger(bits, state.rng);\n // force MSB set\n if(!state.num.testBit(bits1)) {\n state.num.bitwiseTo(\n BigInteger.ONE.shiftLeft(bits1), op_or, state.num);\n }\n // align number on 30k+1 boundary\n state.num.dAddOffset(31 - state.num.mod(THIRTY).byteValue(), 0);\n deltaIdx = 0;\n\n ++state.pqState;\n } else if(state.pqState === 1) {\n // try to make the number a prime\n if(state.num.bitLength() > bits) {\n // overflow, try again\n state.pqState = 0;\n // do primality test\n } else if(state.num.isProbablePrime(\n _getMillerRabinTests(state.num.bitLength()))) {\n ++state.pqState;\n } else {\n // get next potential prime\n state.num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);\n }\n } else if(state.pqState === 2) {\n // ensure number is coprime with e\n state.pqState =\n (state.num.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) === 0) ? 3 : 0;\n } else if(state.pqState === 3) {\n // store p or q\n state.pqState = 0;\n if(state.p === null) {\n state.p = state.num;\n } else {\n state.q = state.num;\n }\n\n // advance state if both p and q are ready\n if(state.p !== null && state.q !== null) {\n ++state.state;\n }\n state.num = null;\n }\n } else if(state.state === 1) {\n // ensure p is larger than q (swap them if not)\n if(state.p.compareTo(state.q) < 0) {\n state.num = state.p;\n state.p = state.q;\n state.q = state.num;\n }\n ++state.state;\n } else if(state.state === 2) {\n // compute phi: (p - 1)(q - 1) (Euler's totient function)\n state.p1 = state.p.subtract(BigInteger.ONE);\n state.q1 = state.q.subtract(BigInteger.ONE);\n state.phi = state.p1.multiply(state.q1);\n ++state.state;\n } else if(state.state === 3) {\n // ensure e and phi are coprime\n if(state.phi.gcd(state.e).compareTo(BigInteger.ONE) === 0) {\n // phi and e are coprime, advance\n ++state.state;\n } else {\n // phi and e aren't coprime, so generate a new p and q\n state.p = null;\n state.q = null;\n state.state = 0;\n }\n } else if(state.state === 4) {\n // create n, ensure n is has the right number of bits\n state.n = state.p.multiply(state.q);\n\n // ensure n is right number of bits\n if(state.n.bitLength() === state.bits) {\n // success, advance\n ++state.state;\n } else {\n // failed, get new q\n state.q = null;\n state.state = 0;\n }\n } else if(state.state === 5) {\n // set keys\n var d = state.e.modInverse(state.phi);\n state.keys = {\n privateKey: pki.rsa.setPrivateKey(\n state.n, state.e, d, state.p, state.q,\n d.mod(state.p1), d.mod(state.q1),\n state.q.modInverse(state.p)),\n publicKey: pki.rsa.setPublicKey(state.n, state.e)\n };\n }\n\n // update timing\n t2 = +new Date();\n total += t2 - t1;\n t1 = t2;\n }\n\n return state.keys !== null;\n};\n\n/**\n * Generates an RSA public-private key pair in a single call.\n *\n * To generate a key-pair in steps (to allow for progress updates and to\n * prevent blocking or warnings in slow browsers) then use the key-pair\n * generation state functions.\n *\n * To generate a key-pair asynchronously (either through web-workers, if\n * available, or by breaking up the work on the main thread), pass a\n * callback function.\n *\n * @param [bits] the size for the private key in bits, defaults to 2048.\n * @param [e] the public exponent to use, defaults to 65537.\n * @param [options] options for key-pair generation, if given then 'bits'\n * and 'e' must *not* be given:\n * bits the size for the private key in bits, (default: 2048).\n * e the public exponent to use, (default: 65537 (0x10001)).\n * workerScript the worker script URL.\n * workers the number of web workers (if supported) to use,\n * (default: 2).\n * workLoad the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * prng a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\". Disables use of native APIs.\n * algorithm the algorithm to use (default: 'PRIMEINC').\n * @param [callback(err, keypair)] called once the operation completes.\n *\n * @return an object with privateKey and publicKey properties.\n */\npki.rsa.generateKeyPair = function(bits, e, options, callback) {\n // (bits), (options), (callback)\n if(arguments.length === 1) {\n if(typeof bits === 'object') {\n options = bits;\n bits = undefined;\n } else if(typeof bits === 'function') {\n callback = bits;\n bits = undefined;\n }\n } else if(arguments.length === 2) {\n // (bits, e), (bits, options), (bits, callback), (options, callback)\n if(typeof bits === 'number') {\n if(typeof e === 'function') {\n callback = e;\n e = undefined;\n } else if(typeof e !== 'number') {\n options = e;\n e = undefined;\n }\n } else {\n options = bits;\n callback = e;\n bits = undefined;\n e = undefined;\n }\n } else if(arguments.length === 3) {\n // (bits, e, options), (bits, e, callback), (bits, options, callback)\n if(typeof e === 'number') {\n if(typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n } else {\n callback = options;\n options = e;\n e = undefined;\n }\n }\n options = options || {};\n if(bits === undefined) {\n bits = options.bits || 2048;\n }\n if(e === undefined) {\n e = options.e || 0x10001;\n }\n\n // use native code if permitted, available, and parameters are acceptable\n if(!forge.options.usePureJavaScript && !options.prng &&\n bits >= 256 && bits <= 16384 && (e === 0x10001 || e === 3)) {\n if(callback) {\n // try native async\n if(_detectNodeCrypto('generateKeyPair')) {\n return _crypto.generateKeyPair('rsa', {\n modulusLength: bits,\n publicExponent: e,\n publicKeyEncoding: {\n type: 'spki',\n format: 'pem'\n },\n privateKeyEncoding: {\n type: 'pkcs8',\n format: 'pem'\n }\n }, function(err, pub, priv) {\n if(err) {\n return callback(err);\n }\n callback(null, {\n privateKey: pki.privateKeyFromPem(priv),\n publicKey: pki.publicKeyFromPem(pub)\n });\n });\n }\n if(_detectSubtleCrypto('generateKey') &&\n _detectSubtleCrypto('exportKey')) {\n // use standard native generateKey\n return util.globalScope.crypto.subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: _intToUint8Array(e),\n hash: {name: 'SHA-256'}\n }, true /* key can be exported*/, ['sign', 'verify'])\n .then(function(pair) {\n return util.globalScope.crypto.subtle.exportKey(\n 'pkcs8', pair.privateKey);\n // avoiding catch(function(err) {...}) to support IE <= 8\n }).then(undefined, function(err) {\n callback(err);\n }).then(function(pkcs8) {\n if(pkcs8) {\n var privateKey = pki.privateKeyFromAsn1(\n asn1.fromDer(forge.util.createBuffer(pkcs8)));\n callback(null, {\n privateKey: privateKey,\n publicKey: pki.setRsaPublicKey(privateKey.n, privateKey.e)\n });\n }\n });\n }\n if(_detectSubtleMsCrypto('generateKey') &&\n _detectSubtleMsCrypto('exportKey')) {\n var genOp = util.globalScope.msCrypto.subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: _intToUint8Array(e),\n hash: {name: 'SHA-256'}\n }, true /* key can be exported*/, ['sign', 'verify']);\n genOp.oncomplete = function(e) {\n var pair = e.target.result;\n var exportOp = util.globalScope.msCrypto.subtle.exportKey(\n 'pkcs8', pair.privateKey);\n exportOp.oncomplete = function(e) {\n var pkcs8 = e.target.result;\n var privateKey = pki.privateKeyFromAsn1(\n asn1.fromDer(forge.util.createBuffer(pkcs8)));\n callback(null, {\n privateKey: privateKey,\n publicKey: pki.setRsaPublicKey(privateKey.n, privateKey.e)\n });\n };\n exportOp.onerror = function(err) {\n callback(err);\n };\n };\n genOp.onerror = function(err) {\n callback(err);\n };\n return;\n }\n } else {\n // try native sync\n if(_detectNodeCrypto('generateKeyPairSync')) {\n var keypair = _crypto.generateKeyPairSync('rsa', {\n modulusLength: bits,\n publicExponent: e,\n publicKeyEncoding: {\n type: 'spki',\n format: 'pem'\n },\n privateKeyEncoding: {\n type: 'pkcs8',\n format: 'pem'\n }\n });\n return {\n privateKey: pki.privateKeyFromPem(keypair.privateKey),\n publicKey: pki.publicKeyFromPem(keypair.publicKey)\n };\n }\n }\n }\n\n // use JavaScript implementation\n var state = pki.rsa.createKeyPairGenerationState(bits, e, options);\n if(!callback) {\n pki.rsa.stepKeyPairGenerationState(state, 0);\n return state.keys;\n }\n _generateKeyPair(state, options, callback);\n};\n\n/**\n * Sets an RSA public key from BigIntegers modulus and exponent.\n *\n * @param n the modulus.\n * @param e the exponent.\n *\n * @return the public key.\n */\npki.setRsaPublicKey = pki.rsa.setPublicKey = function(n, e) {\n var key = {\n n: n,\n e: e\n };\n\n /**\n * Encrypts the given data with this public key. Newer applications\n * should use the 'RSA-OAEP' decryption scheme, 'RSAES-PKCS1-V1_5' is for\n * legacy applications.\n *\n * @param data the byte string to encrypt.\n * @param scheme the encryption scheme to use:\n * 'RSAES-PKCS1-V1_5' (default),\n * 'RSA-OAEP',\n * 'RAW', 'NONE', or null to perform raw RSA encryption,\n * an object with an 'encode' property set to a function\n * with the signature 'function(data, key)' that returns\n * a binary-encoded string representing the encoded data.\n * @param schemeOptions any scheme-specific options.\n *\n * @return the encrypted byte string.\n */\n key.encrypt = function(data, scheme, schemeOptions) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSAES-PKCS1-V1_5';\n }\n\n if(scheme === 'RSAES-PKCS1-V1_5') {\n scheme = {\n encode: function(m, key, pub) {\n return _encodePkcs1_v1_5(m, key, 0x02).getBytes();\n }\n };\n } else if(scheme === 'RSA-OAEP' || scheme === 'RSAES-OAEP') {\n scheme = {\n encode: function(m, key) {\n return forge.pkcs1.encode_rsa_oaep(key, m, schemeOptions);\n }\n };\n } else if(['RAW', 'NONE', 'NULL', null].indexOf(scheme) !== -1) {\n scheme = {encode: function(e) {return e;}};\n } else if(typeof scheme === 'string') {\n throw new Error('Unsupported encryption scheme: \"' + scheme + '\".');\n }\n\n // do scheme-based encoding then rsa encryption\n var e = scheme.encode(data, key, true);\n return pki.rsa.encrypt(e, key, true);\n };\n\n /**\n * Verifies the given signature against the given digest.\n *\n * PKCS#1 supports multiple (currently two) signature schemes:\n * RSASSA-PKCS1-V1_5 and RSASSA-PSS.\n *\n * By default this implementation uses the \"old scheme\", i.e.\n * RSASSA-PKCS1-V1_5, in which case once RSA-decrypted, the\n * signature is an OCTET STRING that holds a DigestInfo.\n *\n * DigestInfo ::= SEQUENCE {\n * digestAlgorithm DigestAlgorithmIdentifier,\n * digest Digest\n * }\n * DigestAlgorithmIdentifier ::= AlgorithmIdentifier\n * Digest ::= OCTET STRING\n *\n * To perform PSS signature verification, provide an instance\n * of Forge PSS object as the scheme parameter.\n *\n * @param digest the message digest hash to compare against the signature,\n * as a binary-encoded string.\n * @param signature the signature to verify, as a binary-encoded string.\n * @param scheme signature verification scheme to use:\n * 'RSASSA-PKCS1-V1_5' or undefined for RSASSA PKCS#1 v1.5,\n * a Forge PSS object for RSASSA-PSS,\n * 'NONE' or null for none, DigestInfo will not be expected, but\n * PKCS#1 v1.5 padding will still be used.\n * @param options optional verify options\n * _parseAllDigestBytes testing flag to control parsing of all\n * digest bytes. Unsupported and not for general usage.\n * (default: true)\n *\n * @return true if the signature was verified, false if not.\n */\n key.verify = function(digest, signature, scheme, options) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSASSA-PKCS1-V1_5';\n }\n if(options === undefined) {\n options = {\n _parseAllDigestBytes: true\n };\n }\n if(!('_parseAllDigestBytes' in options)) {\n options._parseAllDigestBytes = true;\n }\n\n if(scheme === 'RSASSA-PKCS1-V1_5') {\n scheme = {\n verify: function(digest, d) {\n // remove padding\n d = _decodePkcs1_v1_5(d, key, true);\n // d is ASN.1 BER-encoded DigestInfo\n var obj = asn1.fromDer(d, {\n parseAllBytes: options._parseAllDigestBytes\n });\n\n // validate DigestInfo\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, digestInfoValidator, capture, errors)) {\n var error = new Error(\n 'ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 ' +\n 'DigestInfo value.');\n error.errors = errors;\n throw error;\n }\n // check hash algorithm identifier\n // see PKCS1-v1-5DigestAlgorithms in RFC 8017\n // FIXME: add support to vaidator for strict value choices\n var oid = asn1.derToOid(capture.algorithmIdentifier);\n if(!(oid === forge.oids.md2 ||\n oid === forge.oids.md5 ||\n oid === forge.oids.sha1 ||\n oid === forge.oids.sha224 ||\n oid === forge.oids.sha256 ||\n oid === forge.oids.sha384 ||\n oid === forge.oids.sha512 ||\n oid === forge.oids['sha512-224'] ||\n oid === forge.oids['sha512-256'])) {\n var error = new Error(\n 'Unknown RSASSA-PKCS1-v1_5 DigestAlgorithm identifier.');\n error.oid = oid;\n throw error;\n }\n\n // special check for md2 and md5 that NULL parameters exist\n if(oid === forge.oids.md2 || oid === forge.oids.md5) {\n if(!('parameters' in capture)) {\n throw new Error(\n 'ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 ' +\n 'DigestInfo value. ' +\n 'Missing algorithm identifer NULL parameters.');\n }\n }\n\n // compare the given digest to the decrypted one\n return digest === capture.digest;\n }\n };\n } else if(scheme === 'NONE' || scheme === 'NULL' || scheme === null) {\n scheme = {\n verify: function(digest, d) {\n // remove padding\n d = _decodePkcs1_v1_5(d, key, true);\n return digest === d;\n }\n };\n }\n\n // do rsa decryption w/o any decoding, then verify -- which does decoding\n var d = pki.rsa.decrypt(signature, key, true, false);\n return scheme.verify(digest, d, key.n.bitLength());\n };\n\n return key;\n};\n\n/**\n * Sets an RSA private key from BigIntegers modulus, exponent, primes,\n * prime exponents, and modular multiplicative inverse.\n *\n * @param n the modulus.\n * @param e the public exponent.\n * @param d the private exponent ((inverse of e) mod n).\n * @param p the first prime.\n * @param q the second prime.\n * @param dP exponent1 (d mod (p-1)).\n * @param dQ exponent2 (d mod (q-1)).\n * @param qInv ((inverse of q) mod p)\n *\n * @return the private key.\n */\npki.setRsaPrivateKey = pki.rsa.setPrivateKey = function(\n n, e, d, p, q, dP, dQ, qInv) {\n var key = {\n n: n,\n e: e,\n d: d,\n p: p,\n q: q,\n dP: dP,\n dQ: dQ,\n qInv: qInv\n };\n\n /**\n * Decrypts the given data with this private key. The decryption scheme\n * must match the one used to encrypt the data.\n *\n * @param data the byte string to decrypt.\n * @param scheme the decryption scheme to use:\n * 'RSAES-PKCS1-V1_5' (default),\n * 'RSA-OAEP',\n * 'RAW', 'NONE', or null to perform raw RSA decryption.\n * @param schemeOptions any scheme-specific options.\n *\n * @return the decrypted byte string.\n */\n key.decrypt = function(data, scheme, schemeOptions) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSAES-PKCS1-V1_5';\n }\n\n // do rsa decryption w/o any decoding\n var d = pki.rsa.decrypt(data, key, false, false);\n\n if(scheme === 'RSAES-PKCS1-V1_5') {\n scheme = {decode: _decodePkcs1_v1_5};\n } else if(scheme === 'RSA-OAEP' || scheme === 'RSAES-OAEP') {\n scheme = {\n decode: function(d, key) {\n return forge.pkcs1.decode_rsa_oaep(key, d, schemeOptions);\n }\n };\n } else if(['RAW', 'NONE', 'NULL', null].indexOf(scheme) !== -1) {\n scheme = {decode: function(d) {return d;}};\n } else {\n throw new Error('Unsupported encryption scheme: \"' + scheme + '\".');\n }\n\n // decode according to scheme\n return scheme.decode(d, key, false);\n };\n\n /**\n * Signs the given digest, producing a signature.\n *\n * PKCS#1 supports multiple (currently two) signature schemes:\n * RSASSA-PKCS1-V1_5 and RSASSA-PSS.\n *\n * By default this implementation uses the \"old scheme\", i.e.\n * RSASSA-PKCS1-V1_5. In order to generate a PSS signature, provide\n * an instance of Forge PSS object as the scheme parameter.\n *\n * @param md the message digest object with the hash to sign.\n * @param scheme the signature scheme to use:\n * 'RSASSA-PKCS1-V1_5' or undefined for RSASSA PKCS#1 v1.5,\n * a Forge PSS object for RSASSA-PSS,\n * 'NONE' or null for none, DigestInfo will not be used but\n * PKCS#1 v1.5 padding will still be used.\n *\n * @return the signature as a byte string.\n */\n key.sign = function(md, scheme) {\n /* Note: The internal implementation of RSA operations is being\n transitioned away from a PKCS#1 v1.5 hard-coded scheme. Some legacy\n code like the use of an encoding block identifier 'bt' will eventually\n be removed. */\n\n // private key operation\n var bt = false;\n\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n }\n\n if(scheme === undefined || scheme === 'RSASSA-PKCS1-V1_5') {\n scheme = {encode: emsaPkcs1v15encode};\n bt = 0x01;\n } else if(scheme === 'NONE' || scheme === 'NULL' || scheme === null) {\n scheme = {encode: function() {return md;}};\n bt = 0x01;\n }\n\n // encode and then encrypt\n var d = scheme.encode(md, key.n.bitLength());\n return pki.rsa.encrypt(d, key, bt);\n };\n\n return key;\n};\n\n/**\n * Wraps an RSAPrivateKey ASN.1 object in an ASN.1 PrivateKeyInfo object.\n *\n * @param rsaKey the ASN.1 RSAPrivateKey.\n *\n * @return the ASN.1 PrivateKeyInfo.\n */\npki.wrapRsaPrivateKey = function(rsaKey) {\n // PrivateKeyInfo\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version (0)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(0).getBytes()),\n // privateKeyAlgorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.rsaEncryption).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // PrivateKey\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(rsaKey).getBytes())\n ]);\n};\n\n/**\n * Converts a private key from an ASN.1 object.\n *\n * @param obj the ASN.1 representation of a PrivateKeyInfo containing an\n * RSAPrivateKey or an RSAPrivateKey.\n *\n * @return the private key.\n */\npki.privateKeyFromAsn1 = function(obj) {\n // get PrivateKeyInfo\n var capture = {};\n var errors = [];\n if(asn1.validate(obj, privateKeyValidator, capture, errors)) {\n obj = asn1.fromDer(forge.util.createBuffer(capture.privateKey));\n }\n\n // get RSAPrivateKey\n capture = {};\n errors = [];\n if(!asn1.validate(obj, rsaPrivateKeyValidator, capture, errors)) {\n var error = new Error('Cannot read private key. ' +\n 'ASN.1 object does not contain an RSAPrivateKey.');\n error.errors = errors;\n throw error;\n }\n\n // Note: Version is currently ignored.\n // capture.privateKeyVersion\n // FIXME: inefficient, get a BigInteger that uses byte strings\n var n, e, d, p, q, dP, dQ, qInv;\n n = forge.util.createBuffer(capture.privateKeyModulus).toHex();\n e = forge.util.createBuffer(capture.privateKeyPublicExponent).toHex();\n d = forge.util.createBuffer(capture.privateKeyPrivateExponent).toHex();\n p = forge.util.createBuffer(capture.privateKeyPrime1).toHex();\n q = forge.util.createBuffer(capture.privateKeyPrime2).toHex();\n dP = forge.util.createBuffer(capture.privateKeyExponent1).toHex();\n dQ = forge.util.createBuffer(capture.privateKeyExponent2).toHex();\n qInv = forge.util.createBuffer(capture.privateKeyCoefficient).toHex();\n\n // set private key\n return pki.setRsaPrivateKey(\n new BigInteger(n, 16),\n new BigInteger(e, 16),\n new BigInteger(d, 16),\n new BigInteger(p, 16),\n new BigInteger(q, 16),\n new BigInteger(dP, 16),\n new BigInteger(dQ, 16),\n new BigInteger(qInv, 16));\n};\n\n/**\n * Converts a private key to an ASN.1 RSAPrivateKey.\n *\n * @param key the private key.\n *\n * @return the ASN.1 representation of an RSAPrivateKey.\n */\npki.privateKeyToAsn1 = pki.privateKeyToRSAPrivateKey = function(key) {\n // RSAPrivateKey\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version (0 = only 2 primes, 1 multiple primes)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(0).getBytes()),\n // modulus (n)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.n)),\n // publicExponent (e)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.e)),\n // privateExponent (d)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.d)),\n // privateKeyPrime1 (p)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.p)),\n // privateKeyPrime2 (q)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.q)),\n // privateKeyExponent1 (dP)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.dP)),\n // privateKeyExponent2 (dQ)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.dQ)),\n // coefficient (qInv)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.qInv))\n ]);\n};\n\n/**\n * Converts a public key from an ASN.1 SubjectPublicKeyInfo or RSAPublicKey.\n *\n * @param obj the asn1 representation of a SubjectPublicKeyInfo or RSAPublicKey.\n *\n * @return the public key.\n */\npki.publicKeyFromAsn1 = function(obj) {\n // get SubjectPublicKeyInfo\n var capture = {};\n var errors = [];\n if(asn1.validate(obj, publicKeyValidator, capture, errors)) {\n // get oid\n var oid = asn1.derToOid(capture.publicKeyOid);\n if(oid !== pki.oids.rsaEncryption) {\n var error = new Error('Cannot read public key. Unknown OID.');\n error.oid = oid;\n throw error;\n }\n obj = capture.rsaPublicKey;\n }\n\n // get RSA params\n errors = [];\n if(!asn1.validate(obj, rsaPublicKeyValidator, capture, errors)) {\n var error = new Error('Cannot read public key. ' +\n 'ASN.1 object does not contain an RSAPublicKey.');\n error.errors = errors;\n throw error;\n }\n\n // FIXME: inefficient, get a BigInteger that uses byte strings\n var n = forge.util.createBuffer(capture.publicKeyModulus).toHex();\n var e = forge.util.createBuffer(capture.publicKeyExponent).toHex();\n\n // set public key\n return pki.setRsaPublicKey(\n new BigInteger(n, 16),\n new BigInteger(e, 16));\n};\n\n/**\n * Converts a public key to an ASN.1 SubjectPublicKeyInfo.\n *\n * @param key the public key.\n *\n * @return the asn1 representation of a SubjectPublicKeyInfo.\n */\npki.publicKeyToAsn1 = pki.publicKeyToSubjectPublicKeyInfo = function(key) {\n // SubjectPublicKeyInfo\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.rsaEncryption).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // subjectPublicKey\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, [\n pki.publicKeyToRSAPublicKey(key)\n ])\n ]);\n};\n\n/**\n * Converts a public key to an ASN.1 RSAPublicKey.\n *\n * @param key the public key.\n *\n * @return the asn1 representation of a RSAPublicKey.\n */\npki.publicKeyToRSAPublicKey = function(key) {\n // RSAPublicKey\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // modulus (n)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.n)),\n // publicExponent (e)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.e))\n ]);\n};\n\n/**\n * Encodes a message using PKCS#1 v1.5 padding.\n *\n * @param m the message to encode.\n * @param key the RSA key to use.\n * @param bt the block type to use, i.e. either 0x01 (for signing) or 0x02\n * (for encryption).\n *\n * @return the padded byte buffer.\n */\nfunction _encodePkcs1_v1_5(m, key, bt) {\n var eb = forge.util.createBuffer();\n\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n /* use PKCS#1 v1.5 padding */\n if(m.length > (k - 11)) {\n var error = new Error('Message is too long for PKCS#1 v1.5 padding.');\n error.length = m.length;\n error.max = k - 11;\n throw error;\n }\n\n /* A block type BT, a padding string PS, and the data D shall be\n formatted into an octet string EB, the encryption block:\n\n EB = 00 || BT || PS || 00 || D\n\n The block type BT shall be a single octet indicating the structure of\n the encryption block. For this version of the document it shall have\n value 00, 01, or 02. For a private-key operation, the block type\n shall be 00 or 01. For a public-key operation, it shall be 02.\n\n The padding string PS shall consist of k-3-||D|| octets. For block\n type 00, the octets shall have value 00; for block type 01, they\n shall have value FF; and for block type 02, they shall be\n pseudorandomly generated and nonzero. This makes the length of the\n encryption block EB equal to k. */\n\n // build the encryption block\n eb.putByte(0x00);\n eb.putByte(bt);\n\n // create the padding\n var padNum = k - 3 - m.length;\n var padByte;\n // private key op\n if(bt === 0x00 || bt === 0x01) {\n padByte = (bt === 0x00) ? 0x00 : 0xFF;\n for(var i = 0; i < padNum; ++i) {\n eb.putByte(padByte);\n }\n } else {\n // public key op\n // pad with random non-zero values\n while(padNum > 0) {\n var numZeros = 0;\n var padBytes = forge.random.getBytes(padNum);\n for(var i = 0; i < padNum; ++i) {\n padByte = padBytes.charCodeAt(i);\n if(padByte === 0) {\n ++numZeros;\n } else {\n eb.putByte(padByte);\n }\n }\n padNum = numZeros;\n }\n }\n\n // zero followed by message\n eb.putByte(0x00);\n eb.putBytes(m);\n\n return eb;\n}\n\n/**\n * Decodes a message using PKCS#1 v1.5 padding.\n *\n * @param em the message to decode.\n * @param key the RSA key to use.\n * @param pub true if the key is a public key, false if it is private.\n * @param ml the message length, if specified.\n *\n * @return the decoded bytes.\n */\nfunction _decodePkcs1_v1_5(em, key, pub, ml) {\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n /* It is an error if any of the following conditions occurs:\n\n 1. The encryption block EB cannot be parsed unambiguously.\n 2. The padding string PS consists of fewer than eight octets\n or is inconsisent with the block type BT.\n 3. The decryption process is a public-key operation and the block\n type BT is not 00 or 01, or the decryption process is a\n private-key operation and the block type is not 02.\n */\n\n // parse the encryption block\n var eb = forge.util.createBuffer(em);\n var first = eb.getByte();\n var bt = eb.getByte();\n if(first !== 0x00 ||\n (pub && bt !== 0x00 && bt !== 0x01) ||\n (!pub && bt != 0x02) ||\n (pub && bt === 0x00 && typeof(ml) === 'undefined')) {\n throw new Error('Encryption block is invalid.');\n }\n\n var padNum = 0;\n if(bt === 0x00) {\n // check all padding bytes for 0x00\n padNum = k - 3 - ml;\n for(var i = 0; i < padNum; ++i) {\n if(eb.getByte() !== 0x00) {\n throw new Error('Encryption block is invalid.');\n }\n }\n } else if(bt === 0x01) {\n // find the first byte that isn't 0xFF, should be after all padding\n padNum = 0;\n while(eb.length() > 1) {\n if(eb.getByte() !== 0xFF) {\n --eb.read;\n break;\n }\n ++padNum;\n }\n } else if(bt === 0x02) {\n // look for 0x00 byte\n padNum = 0;\n while(eb.length() > 1) {\n if(eb.getByte() === 0x00) {\n --eb.read;\n break;\n }\n ++padNum;\n }\n }\n\n // zero must be 0x00 and padNum must be (k - 3 - message length)\n var zero = eb.getByte();\n if(zero !== 0x00 || padNum !== (k - 3 - eb.length())) {\n throw new Error('Encryption block is invalid.');\n }\n\n return eb.getBytes();\n}\n\n/**\n * Runs the key-generation algorithm asynchronously, either in the background\n * via Web Workers, or using the main thread and setImmediate.\n *\n * @param state the key-pair generation state.\n * @param [options] options for key-pair generation:\n * workerScript the worker script URL.\n * workers the number of web workers (if supported) to use,\n * (default: 2, -1 to use estimated cores minus one).\n * workLoad the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * @param callback(err, keypair) called once the operation completes.\n */\nfunction _generateKeyPair(state, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n var opts = {\n algorithm: {\n name: options.algorithm || 'PRIMEINC',\n options: {\n workers: options.workers || 2,\n workLoad: options.workLoad || 100,\n workerScript: options.workerScript\n }\n }\n };\n if('prng' in options) {\n opts.prng = options.prng;\n }\n\n generate();\n\n function generate() {\n // find p and then q (done in series to simplify)\n getPrime(state.pBits, function(err, num) {\n if(err) {\n return callback(err);\n }\n state.p = num;\n if(state.q !== null) {\n return finish(err, state.q);\n }\n getPrime(state.qBits, finish);\n });\n }\n\n function getPrime(bits, callback) {\n forge.prime.generateProbablePrime(bits, opts, callback);\n }\n\n function finish(err, num) {\n if(err) {\n return callback(err);\n }\n\n // set q\n state.q = num;\n\n // ensure p is larger than q (swap them if not)\n if(state.p.compareTo(state.q) < 0) {\n var tmp = state.p;\n state.p = state.q;\n state.q = tmp;\n }\n\n // ensure p is coprime with e\n if(state.p.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) !== 0) {\n state.p = null;\n generate();\n return;\n }\n\n // ensure q is coprime with e\n if(state.q.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) !== 0) {\n state.q = null;\n getPrime(state.qBits, finish);\n return;\n }\n\n // compute phi: (p - 1)(q - 1) (Euler's totient function)\n state.p1 = state.p.subtract(BigInteger.ONE);\n state.q1 = state.q.subtract(BigInteger.ONE);\n state.phi = state.p1.multiply(state.q1);\n\n // ensure e and phi are coprime\n if(state.phi.gcd(state.e).compareTo(BigInteger.ONE) !== 0) {\n // phi and e aren't coprime, so generate a new p and q\n state.p = state.q = null;\n generate();\n return;\n }\n\n // create n, ensure n is has the right number of bits\n state.n = state.p.multiply(state.q);\n if(state.n.bitLength() !== state.bits) {\n // failed, get new q\n state.q = null;\n getPrime(state.qBits, finish);\n return;\n }\n\n // set keys\n var d = state.e.modInverse(state.phi);\n state.keys = {\n privateKey: pki.rsa.setPrivateKey(\n state.n, state.e, d, state.p, state.q,\n d.mod(state.p1), d.mod(state.q1),\n state.q.modInverse(state.p)),\n publicKey: pki.rsa.setPublicKey(state.n, state.e)\n };\n\n callback(null, state.keys);\n }\n}\n\n/**\n * Converts a positive BigInteger into 2's-complement big-endian bytes.\n *\n * @param b the big integer to convert.\n *\n * @return the bytes.\n */\nfunction _bnToBytes(b) {\n // prepend 0x00 if first byte >= 0x80\n var hex = b.toString(16);\n if(hex[0] >= '8') {\n hex = '00' + hex;\n }\n var bytes = forge.util.hexToBytes(hex);\n\n // ensure integer is minimally-encoded\n if(bytes.length > 1 &&\n // leading 0x00 for positive integer\n ((bytes.charCodeAt(0) === 0 &&\n (bytes.charCodeAt(1) & 0x80) === 0) ||\n // leading 0xFF for negative integer\n (bytes.charCodeAt(0) === 0xFF &&\n (bytes.charCodeAt(1) & 0x80) === 0x80))) {\n return bytes.substr(1);\n }\n return bytes;\n}\n\n/**\n * Returns the required number of Miller-Rabin tests to generate a\n * prime with an error probability of (1/2)^80.\n *\n * See Handbook of Applied Cryptography Chapter 4, Table 4.4.\n *\n * @param bits the bit size.\n *\n * @return the required number of iterations.\n */\nfunction _getMillerRabinTests(bits) {\n if(bits <= 100) return 27;\n if(bits <= 150) return 18;\n if(bits <= 200) return 15;\n if(bits <= 250) return 12;\n if(bits <= 300) return 9;\n if(bits <= 350) return 8;\n if(bits <= 400) return 7;\n if(bits <= 500) return 6;\n if(bits <= 600) return 5;\n if(bits <= 800) return 4;\n if(bits <= 1250) return 3;\n return 2;\n}\n\n/**\n * Performs feature detection on the Node crypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectNodeCrypto(fn) {\n return forge.util.isNodejs && typeof _crypto[fn] === 'function';\n}\n\n/**\n * Performs feature detection on the SubtleCrypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectSubtleCrypto(fn) {\n return (typeof util.globalScope !== 'undefined' &&\n typeof util.globalScope.crypto === 'object' &&\n typeof util.globalScope.crypto.subtle === 'object' &&\n typeof util.globalScope.crypto.subtle[fn] === 'function');\n}\n\n/**\n * Performs feature detection on the deprecated Microsoft Internet Explorer\n * outdated SubtleCrypto interface. This function should only be used after\n * checking for the modern, standard SubtleCrypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectSubtleMsCrypto(fn) {\n return (typeof util.globalScope !== 'undefined' &&\n typeof util.globalScope.msCrypto === 'object' &&\n typeof util.globalScope.msCrypto.subtle === 'object' &&\n typeof util.globalScope.msCrypto.subtle[fn] === 'function');\n}\n\nfunction _intToUint8Array(x) {\n var bytes = forge.util.hexToBytes(x.toString(16));\n var buffer = new Uint8Array(bytes.length);\n for(var i = 0; i < bytes.length; ++i) {\n buffer[i] = bytes.charCodeAt(i);\n }\n return buffer;\n}\n\nfunction _privateKeyFromJwk(jwk) {\n if(jwk.kty !== 'RSA') {\n throw new Error(\n 'Unsupported key algorithm \"' + jwk.kty + '\"; algorithm must be \"RSA\".');\n }\n return pki.setRsaPrivateKey(\n _base64ToBigInt(jwk.n),\n _base64ToBigInt(jwk.e),\n _base64ToBigInt(jwk.d),\n _base64ToBigInt(jwk.p),\n _base64ToBigInt(jwk.q),\n _base64ToBigInt(jwk.dp),\n _base64ToBigInt(jwk.dq),\n _base64ToBigInt(jwk.qi));\n}\n\nfunction _publicKeyFromJwk(jwk) {\n if(jwk.kty !== 'RSA') {\n throw new Error('Key algorithm must be \"RSA\".');\n }\n return pki.setRsaPublicKey(\n _base64ToBigInt(jwk.n),\n _base64ToBigInt(jwk.e));\n}\n\nfunction _base64ToBigInt(b64) {\n return new BigInteger(forge.util.bytesToHex(forge.util.decode64(b64)), 16);\n}\n","/**\n * Password-based encryption functions.\n *\n * @author Dave Longley\n * @author Stefan Siegl \n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl \n *\n * An EncryptedPrivateKeyInfo:\n *\n * EncryptedPrivateKeyInfo ::= SEQUENCE {\n * encryptionAlgorithm EncryptionAlgorithmIdentifier,\n * encryptedData EncryptedData }\n *\n * EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * EncryptedData ::= OCTET STRING\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./md');\nrequire('./oids');\nrequire('./pbkdf2');\nrequire('./pem');\nrequire('./random');\nrequire('./rc2');\nrequire('./rsa');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Password-based encryption implementation. */\nvar pki = forge.pki = forge.pki || {};\nmodule.exports = pki.pbe = forge.pbe = forge.pbe || {};\nvar oids = pki.oids;\n\n// validator for an EncryptedPrivateKeyInfo structure\n// Note: Currently only works w/algorithm params\nvar encryptedPrivateKeyValidator = {\n name: 'EncryptedPrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedPrivateKeyInfo.encryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encryptionOid'\n }, {\n name: 'AlgorithmIdentifier.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'encryptionParams'\n }]\n }, {\n // encryptedData\n name: 'EncryptedPrivateKeyInfo.encryptedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encryptedData'\n }]\n};\n\n// validator for a PBES2Algorithms structure\n// Note: Currently only works w/PBKDF2 + AES encryption schemes\nvar PBES2AlgorithmsValidator = {\n name: 'PBES2Algorithms',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'kdfOid'\n }, {\n name: 'PBES2Algorithms.params',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.params.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'kdfSalt'\n }, {\n name: 'PBES2Algorithms.params.iterationCount',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'kdfIterationCount'\n }, {\n name: 'PBES2Algorithms.params.keyLength',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n optional: true,\n capture: 'keyLength'\n }, {\n // prf\n name: 'PBES2Algorithms.params.prf',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'PBES2Algorithms.params.prf.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'prfOid'\n }]\n }]\n }]\n }, {\n name: 'PBES2Algorithms.encryptionScheme',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.encryptionScheme.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encOid'\n }, {\n name: 'PBES2Algorithms.encryptionScheme.iv',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encIv'\n }]\n }]\n};\n\nvar pkcs12PbeParamsValidator = {\n name: 'pkcs-12PbeParams',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'pkcs-12PbeParams.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'salt'\n }, {\n name: 'pkcs-12PbeParams.iterations',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'iterations'\n }]\n};\n\n/**\n * Encrypts a ASN.1 PrivateKeyInfo object, producing an EncryptedPrivateKeyInfo.\n *\n * PBES2Algorithms ALGORITHM-IDENTIFIER ::=\n * { {PBES2-params IDENTIFIED BY id-PBES2}, ...}\n *\n * id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13}\n *\n * PBES2-params ::= SEQUENCE {\n * keyDerivationFunc AlgorithmIdentifier {{PBES2-KDFs}},\n * encryptionScheme AlgorithmIdentifier {{PBES2-Encs}}\n * }\n *\n * PBES2-KDFs ALGORITHM-IDENTIFIER ::=\n * { {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ... }\n *\n * PBES2-Encs ALGORITHM-IDENTIFIER ::= { ... }\n *\n * PBKDF2-params ::= SEQUENCE {\n * salt CHOICE {\n * specified OCTET STRING,\n * otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}\n * },\n * iterationCount INTEGER (1..MAX),\n * keyLength INTEGER (1..MAX) OPTIONAL,\n * prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT algid-hmacWithSHA1\n * }\n *\n * @param obj the ASN.1 PrivateKeyInfo object.\n * @param password the password to encrypt with.\n * @param options:\n * algorithm the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des'), defaults to 'aes128'.\n * count the iteration count to use.\n * saltSize the salt size to use.\n * prfAlgorithm the PRF message digest algorithm to use\n * ('sha1', 'sha224', 'sha256', 'sha384', 'sha512')\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptPrivateKeyInfo = function(obj, password, options) {\n // set default options\n options = options || {};\n options.saltSize = options.saltSize || 8;\n options.count = options.count || 2048;\n options.algorithm = options.algorithm || 'aes128';\n options.prfAlgorithm = options.prfAlgorithm || 'sha1';\n\n // generate PBE params\n var salt = forge.random.getBytesSync(options.saltSize);\n var count = options.count;\n var countBytes = asn1.integerToDer(count);\n var dkLen;\n var encryptionAlgorithm;\n var encryptedData;\n if(options.algorithm.indexOf('aes') === 0 || options.algorithm === 'des') {\n // do PBES2\n var ivLen, encOid, cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n dkLen = 16;\n ivLen = 16;\n encOid = oids['aes128-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n dkLen = 24;\n ivLen = 16;\n encOid = oids['aes192-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n dkLen = 32;\n ivLen = 16;\n encOid = oids['aes256-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'des':\n dkLen = 8;\n ivLen = 8;\n encOid = oids['desCBC'];\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // get PRF message digest\n var prfAlgorithm = 'hmacWith' + options.prfAlgorithm.toUpperCase();\n var md = prfAlgorithmToMessageDigest(prfAlgorithm);\n\n // encrypt private key using pbe SHA-1 and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = forge.random.getBytesSync(ivLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n // get PBKDF2-params\n var params = createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm);\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBES2']).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // keyDerivationFunc\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBKDF2']).getBytes()),\n // PBKDF2-params\n params\n ]),\n // encryptionScheme\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(encOid).getBytes()),\n // iv\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, iv)\n ])\n ])\n ]);\n } else if(options.algorithm === '3des') {\n // Do PKCS12 PBE\n dkLen = 24;\n\n var saltBytes = new forge.util.ByteBuffer(salt);\n var dk = pki.pbe.generatePkcs12Key(password, saltBytes, 1, count, dkLen);\n var iv = pki.pbe.generatePkcs12Key(password, saltBytes, 2, count, dkLen);\n var cipher = forge.des.createEncryptionCipher(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pbeWithSHAAnd3-KeyTripleDES-CBC']).getBytes()),\n // pkcs-12PbeParams\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ])\n ]);\n } else {\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // EncryptedPrivateKeyInfo\n var rval = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // encryptionAlgorithm\n encryptionAlgorithm,\n // encryptedData\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, encryptedData)\n ]);\n return rval;\n};\n\n/**\n * Decrypts a ASN.1 PrivateKeyInfo object.\n *\n * @param obj the ASN.1 EncryptedPrivateKeyInfo object.\n * @param password the password to decrypt with.\n *\n * @return the ASN.1 PrivateKeyInfo on success, null on failure.\n */\npki.decryptPrivateKeyInfo = function(obj, password) {\n var rval = null;\n\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, encryptedPrivateKeyValidator, capture, errors)) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // get cipher\n var oid = asn1.derToOid(capture.encryptionOid);\n var cipher = pki.pbe.getCipher(oid, capture.encryptionParams, password);\n\n // get encrypted data\n var encrypted = forge.util.createBuffer(capture.encryptedData);\n\n cipher.update(encrypted);\n if(cipher.finish()) {\n rval = asn1.fromDer(cipher.output);\n }\n\n return rval;\n};\n\n/**\n * Converts a EncryptedPrivateKeyInfo to PEM format.\n *\n * @param epki the EncryptedPrivateKeyInfo.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted encrypted private key.\n */\npki.encryptedPrivateKeyToPem = function(epki, maxline) {\n // convert to DER, then PEM-encode\n var msg = {\n type: 'ENCRYPTED PRIVATE KEY',\n body: asn1.toDer(epki).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts a PEM-encoded EncryptedPrivateKeyInfo to ASN.1 format. Decryption\n * is not performed.\n *\n * @param pem the EncryptedPrivateKeyInfo in PEM-format.\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptedPrivateKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY') {\n var error = new Error('Could not convert encrypted private key from PEM; ' +\n 'PEM header type is \"ENCRYPTED PRIVATE KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert encrypted private key from PEM; ' +\n 'PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n return asn1.fromDer(msg.body);\n};\n\n/**\n * Encrypts an RSA private key. By default, the key will be wrapped in\n * a PrivateKeyInfo and encrypted to produce a PKCS#8 EncryptedPrivateKeyInfo.\n * This is the standard, preferred way to encrypt a private key.\n *\n * To produce a non-standard PEM-encrypted private key that uses encapsulated\n * headers to indicate the encryption algorithm (old-style non-PKCS#8 OpenSSL\n * private key encryption), set the 'legacy' option to true. Note: Using this\n * option will cause the iteration count to be forced to 1.\n *\n * Note: The 'des' algorithm is supported, but it is not considered to be\n * secure because it only uses a single 56-bit key. If possible, it is highly\n * recommended that a different algorithm be used.\n *\n * @param rsaKey the RSA key to encrypt.\n * @param password the password to use.\n * @param options:\n * algorithm: the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des', 'des').\n * count: the iteration count to use.\n * saltSize: the salt size to use.\n * legacy: output an old non-PKCS#8 PEM-encrypted+encapsulated\n * headers (DEK-Info) private key.\n *\n * @return the PEM-encoded ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptRsaPrivateKey = function(rsaKey, password, options) {\n // standard PKCS#8\n options = options || {};\n if(!options.legacy) {\n // encrypt PrivateKeyInfo\n var rval = pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(rsaKey));\n rval = pki.encryptPrivateKeyInfo(rval, password, options);\n return pki.encryptedPrivateKeyToPem(rval);\n }\n\n // legacy non-PKCS#8\n var algorithm;\n var iv;\n var dkLen;\n var cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n algorithm = 'AES-128-CBC';\n dkLen = 16;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n algorithm = 'AES-192-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n algorithm = 'AES-256-CBC';\n dkLen = 32;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case '3des':\n algorithm = 'DES-EDE3-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n case 'des':\n algorithm = 'DES-CBC';\n dkLen = 8;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Could not encrypt RSA private key; unsupported ' +\n 'encryption algorithm \"' + options.algorithm + '\".');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // encrypt private key using OpenSSL legacy key derivation\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(pki.privateKeyToAsn1(rsaKey)));\n cipher.finish();\n\n var msg = {\n type: 'RSA PRIVATE KEY',\n procType: {\n version: '4',\n type: 'ENCRYPTED'\n },\n dekInfo: {\n algorithm: algorithm,\n parameters: forge.util.bytesToHex(iv).toUpperCase()\n },\n body: cipher.output.getBytes()\n };\n return forge.pem.encode(msg);\n};\n\n/**\n * Decrypts an RSA private key.\n *\n * @param pem the PEM-formatted EncryptedPrivateKeyInfo to decrypt.\n * @param password the password to use.\n *\n * @return the RSA key on success, null on failure.\n */\npki.decryptRsaPrivateKey = function(pem, password) {\n var rval = null;\n\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY' &&\n msg.type !== 'PRIVATE KEY' &&\n msg.type !== 'RSA PRIVATE KEY') {\n var error = new Error('Could not convert private key from PEM; PEM header type ' +\n 'is not \"ENCRYPTED PRIVATE KEY\", \"PRIVATE KEY\", or \"RSA PRIVATE KEY\".');\n error.headerType = error;\n throw error;\n }\n\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n var dkLen;\n var cipherFn;\n switch(msg.dekInfo.algorithm) {\n case 'DES-CBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'DES-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'AES-128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'RC2-40-CBC':\n dkLen = 5;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 40);\n };\n break;\n case 'RC2-64-CBC':\n dkLen = 8;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 64);\n };\n break;\n case 'RC2-128-CBC':\n dkLen = 16;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 128);\n };\n break;\n default:\n var error = new Error('Could not decrypt private key; unsupported ' +\n 'encryption algorithm \"' + msg.dekInfo.algorithm + '\".');\n error.algorithm = msg.dekInfo.algorithm;\n throw error;\n }\n\n // use OpenSSL legacy key derivation\n var iv = forge.util.hexToBytes(msg.dekInfo.parameters);\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(forge.util.createBuffer(msg.body));\n if(cipher.finish()) {\n rval = cipher.output.getBytes();\n } else {\n return rval;\n }\n } else {\n rval = msg.body;\n }\n\n if(msg.type === 'ENCRYPTED PRIVATE KEY') {\n rval = pki.decryptPrivateKeyInfo(asn1.fromDer(rval), password);\n } else {\n // decryption already performed above\n rval = asn1.fromDer(rval);\n }\n\n if(rval !== null) {\n rval = pki.privateKeyFromAsn1(rval);\n }\n\n return rval;\n};\n\n/**\n * Derives a PKCS#12 key.\n *\n * @param password the password to derive the key material from, null or\n * undefined for none.\n * @param salt the salt, as a ByteBuffer, to use.\n * @param id the PKCS#12 ID byte (1 = key material, 2 = IV, 3 = MAC).\n * @param iter the iteration count.\n * @param n the number of bytes to derive from the password.\n * @param md the message digest to use, defaults to SHA-1.\n *\n * @return a ByteBuffer with the bytes derived from the password.\n */\npki.pbe.generatePkcs12Key = function(password, salt, id, iter, n, md) {\n var j, l;\n\n if(typeof md === 'undefined' || md === null) {\n if(!('sha1' in forge.md)) {\n throw new Error('\"sha1\" hash algorithm unavailable.');\n }\n md = forge.md.sha1.create();\n }\n\n var u = md.digestLength;\n var v = md.blockLength;\n var result = new forge.util.ByteBuffer();\n\n /* Convert password to Unicode byte buffer + trailing 0-byte. */\n var passBuf = new forge.util.ByteBuffer();\n if(password !== null && password !== undefined) {\n for(l = 0; l < password.length; l++) {\n passBuf.putInt16(password.charCodeAt(l));\n }\n passBuf.putInt16(0);\n }\n\n /* Length of salt and password in BYTES. */\n var p = passBuf.length();\n var s = salt.length();\n\n /* 1. Construct a string, D (the \"diversifier\"), by concatenating\n v copies of ID. */\n var D = new forge.util.ByteBuffer();\n D.fillWithByte(id, v);\n\n /* 2. Concatenate copies of the salt together to create a string S of length\n v * ceil(s / v) bytes (the final copy of the salt may be trunacted\n to create S).\n Note that if the salt is the empty string, then so is S. */\n var Slen = v * Math.ceil(s / v);\n var S = new forge.util.ByteBuffer();\n for(l = 0; l < Slen; l++) {\n S.putByte(salt.at(l % s));\n }\n\n /* 3. Concatenate copies of the password together to create a string P of\n length v * ceil(p / v) bytes (the final copy of the password may be\n truncated to create P).\n Note that if the password is the empty string, then so is P. */\n var Plen = v * Math.ceil(p / v);\n var P = new forge.util.ByteBuffer();\n for(l = 0; l < Plen; l++) {\n P.putByte(passBuf.at(l % p));\n }\n\n /* 4. Set I=S||P to be the concatenation of S and P. */\n var I = S;\n I.putBuffer(P);\n\n /* 5. Set c=ceil(n / u). */\n var c = Math.ceil(n / u);\n\n /* 6. For i=1, 2, ..., c, do the following: */\n for(var i = 1; i <= c; i++) {\n /* a) Set Ai=H^r(D||I). (l.e. the rth hash of D||I, H(H(H(...H(D||I)))) */\n var buf = new forge.util.ByteBuffer();\n buf.putBytes(D.bytes());\n buf.putBytes(I.bytes());\n for(var round = 0; round < iter; round++) {\n md.start();\n md.update(buf.getBytes());\n buf = md.digest();\n }\n\n /* b) Concatenate copies of Ai to create a string B of length v bytes (the\n final copy of Ai may be truncated to create B). */\n var B = new forge.util.ByteBuffer();\n for(l = 0; l < v; l++) {\n B.putByte(buf.at(l % u));\n }\n\n /* c) Treating I as a concatenation I0, I1, ..., Ik-1 of v-byte blocks,\n where k=ceil(s / v) + ceil(p / v), modify I by setting\n Ij=(Ij+B+1) mod 2v for each j. */\n var k = Math.ceil(s / v) + Math.ceil(p / v);\n var Inew = new forge.util.ByteBuffer();\n for(j = 0; j < k; j++) {\n var chunk = new forge.util.ByteBuffer(I.getBytes(v));\n var x = 0x1ff;\n for(l = B.length() - 1; l >= 0; l--) {\n x = x >> 8;\n x += B.at(l) + chunk.at(l);\n chunk.setAt(l, x & 0xff);\n }\n Inew.putBuffer(chunk);\n }\n I = Inew;\n\n /* Add Ai to A. */\n result.putBuffer(buf);\n }\n\n result.truncate(result.length() - n);\n return result;\n};\n\n/**\n * Get new Forge cipher object instance.\n *\n * @param oid the OID (in string notation).\n * @param params the ASN.1 params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipher = function(oid, params, password) {\n switch(oid) {\n case pki.oids['pkcs5PBES2']:\n return pki.pbe.getCipherForPBES2(oid, params, password);\n\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n return pki.pbe.getCipherForPKCS12PBE(oid, params, password);\n\n default:\n var error = new Error('Cannot read encrypted PBE data block. Unsupported OID.');\n error.oid = oid;\n error.supportedOids = [\n 'pkcs5PBES2',\n 'pbeWithSHAAnd3-KeyTripleDES-CBC',\n 'pbewithSHAAnd40BitRC2-CBC'\n ];\n throw error;\n }\n};\n\n/**\n * Get new Forge cipher object instance according to PBES2 params block.\n *\n * The returned cipher instance is already started using the IV\n * from PBES2 parameter block.\n *\n * @param oid the PKCS#5 PBKDF2 OID (in string notation).\n * @param params the ASN.1 PBES2-params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipherForPBES2 = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, PBES2AlgorithmsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // check oids\n oid = asn1.derToOid(capture.kdfOid);\n if(oid !== pki.oids['pkcs5PBKDF2']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported key derivation function OID.');\n error.oid = oid;\n error.supportedOids = ['pkcs5PBKDF2'];\n throw error;\n }\n oid = asn1.derToOid(capture.encOid);\n if(oid !== pki.oids['aes128-CBC'] &&\n oid !== pki.oids['aes192-CBC'] &&\n oid !== pki.oids['aes256-CBC'] &&\n oid !== pki.oids['des-EDE3-CBC'] &&\n oid !== pki.oids['desCBC']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported encryption scheme OID.');\n error.oid = oid;\n error.supportedOids = [\n 'aes128-CBC', 'aes192-CBC', 'aes256-CBC', 'des-EDE3-CBC', 'desCBC'];\n throw error;\n }\n\n // set PBE params\n var salt = capture.kdfSalt;\n var count = forge.util.createBuffer(capture.kdfIterationCount);\n count = count.getInt(count.length() << 3);\n var dkLen;\n var cipherFn;\n switch(pki.oids[oid]) {\n case 'aes128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'des-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'desCBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n\n // decrypt private key using pbe with chosen PRF and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = capture.encIv;\n var cipher = cipherFn(dk);\n cipher.start(iv);\n\n return cipher;\n};\n\n/**\n * Get new Forge cipher object instance for PKCS#12 PBE.\n *\n * The returned cipher instance is already started using the key & IV\n * derived from the provided password and PKCS#12 PBE salt.\n *\n * @param oid The PKCS#12 PBE OID (in string notation).\n * @param params The ASN.1 PKCS#12 PBE-params object.\n * @param password The password to decrypt with.\n *\n * @return the new cipher object instance.\n */\npki.pbe.getCipherForPKCS12PBE = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, pkcs12PbeParamsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n var salt = forge.util.createBuffer(capture.salt);\n var count = forge.util.createBuffer(capture.iterations);\n count = count.getInt(count.length() << 3);\n\n var dkLen, dIvLen, cipherFn;\n switch(oid) {\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n dkLen = 24;\n dIvLen = 8;\n cipherFn = forge.des.startDecrypting;\n break;\n\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n dkLen = 5;\n dIvLen = 8;\n cipherFn = function(key, iv) {\n var cipher = forge.rc2.createDecryptionCipher(key, 40);\n cipher.start(iv, null);\n return cipher;\n };\n break;\n\n default:\n var error = new Error('Cannot read PKCS #12 PBE data block. Unsupported OID.');\n error.oid = oid;\n throw error;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n var key = pki.pbe.generatePkcs12Key(password, salt, 1, count, dkLen, md);\n md.start();\n var iv = pki.pbe.generatePkcs12Key(password, salt, 2, count, dIvLen, md);\n\n return cipherFn(key, iv);\n};\n\n/**\n * OpenSSL's legacy key derivation function.\n *\n * See: http://www.openssl.org/docs/crypto/EVP_BytesToKey.html\n *\n * @param password the password to derive the key from.\n * @param salt the salt to use, null for none.\n * @param dkLen the number of bytes needed for the derived key.\n * @param [options] the options to use:\n * [md] an optional message digest object to use.\n */\npki.pbe.opensslDeriveBytes = function(password, salt, dkLen, md) {\n if(typeof md === 'undefined' || md === null) {\n if(!('md5' in forge.md)) {\n throw new Error('\"md5\" hash algorithm unavailable.');\n }\n md = forge.md.md5.create();\n }\n if(salt === null) {\n salt = '';\n }\n var digests = [hash(md, password + salt)];\n for(var length = 16, i = 1; length < dkLen; ++i, length += 16) {\n digests.push(hash(md, digests[i - 1] + password + salt));\n }\n return digests.join('').substr(0, dkLen);\n};\n\nfunction hash(md, bytes) {\n return md.start().update(bytes).digest().getBytes();\n}\n\nfunction prfOidToMessageDigest(prfOid) {\n // get PRF algorithm, default to SHA-1\n var prfAlgorithm;\n if(!prfOid) {\n prfAlgorithm = 'hmacWithSHA1';\n } else {\n prfAlgorithm = pki.oids[asn1.derToOid(prfOid)];\n if(!prfAlgorithm) {\n var error = new Error('Unsupported PRF OID.');\n error.oid = prfOid;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n }\n return prfAlgorithmToMessageDigest(prfAlgorithm);\n}\n\nfunction prfAlgorithmToMessageDigest(prfAlgorithm) {\n var factory = forge.md;\n switch(prfAlgorithm) {\n case 'hmacWithSHA224':\n factory = forge.md.sha512;\n case 'hmacWithSHA1':\n case 'hmacWithSHA256':\n case 'hmacWithSHA384':\n case 'hmacWithSHA512':\n prfAlgorithm = prfAlgorithm.substr(8).toLowerCase();\n break;\n default:\n var error = new Error('Unsupported PRF algorithm.');\n error.algorithm = prfAlgorithm;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n if(!factory || !(prfAlgorithm in factory)) {\n throw new Error('Unknown hash algorithm: ' + prfAlgorithm);\n }\n return factory[prfAlgorithm].create();\n}\n\nfunction createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm) {\n var params = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ]);\n // when PRF algorithm is not SHA-1 default, add key length and PRF algorithm\n if(prfAlgorithm !== 'hmacWithSHA1') {\n params.value.push(\n // key length\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(dkLen.toString(16))),\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids[prfAlgorithm]).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]));\n }\n return params;\n}\n","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0x0;\nconst name = 'identity';\nconst encode = coerce;\nfunction digest(input) {\n return Digest.create(code, encode(input));\n}\nexport const identity = { code, name, encode, digest };\n//# sourceMappingURL=identity.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","/**\n * Returns true if the two passed Uint8Arrays have the same content\n */\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=equals.js.map","/**\n * To guarantee Uint8Array semantics, convert nodejs Buffers\n * into vanilla Uint8Arrays\n */\nexport function asUint8Array(buf) {\n return buf;\n}\n//# sourceMappingURL=as-uint8array.js.map","import { allocUnsafe } from '#alloc';\nimport { asUint8Array } from '#util/as-uint8array';\n/**\n * Returns a new Uint8Array created by concatenating the passed Uint8Arrays\n */\nexport function concat(arrays, length) {\n if (length == null) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return asUint8Array(output);\n}\n//# sourceMappingURL=concat.js.map","import 'node-forge/lib/util.js';\nimport 'node-forge/lib/jsbn.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nexport function bigIntegerToUintBase64url(num, len) {\n // Call `.abs()` to convert to unsigned\n let buf = Uint8Array.from(num.abs().toByteArray()); // toByteArray converts to big endian\n // toByteArray() gives us back a signed array, which will include a leading 0\n // byte if the most significant bit of the number is 1:\n // https://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-integer\n // Our number will always be positive so we should remove the leading padding.\n buf = buf[0] === 0 ? buf.subarray(1) : buf;\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return uint8ArrayToString(buf, 'base64url');\n}\n// Convert a base64url encoded string to a BigInteger\nexport function base64urlToBigInteger(str) {\n const buf = base64urlToBuffer(str);\n return new forge.jsbn.BigInteger(uint8ArrayToString(buf, 'base16'), 16);\n}\nexport function base64urlToBuffer(str, len) {\n let buf = uint8ArrayFromString(str, 'base64urlpad');\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return buf;\n}\nexport function isPromise(thing) {\n if (thing == null) {\n return false;\n }\n return typeof thing.then === 'function' &&\n typeof thing.catch === 'function' &&\n typeof thing.finally === 'function';\n}\n//# sourceMappingURL=util.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`positive integer expected, not ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`boolean expected, not ${b}`);\n}\n// copied from utils\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nfunction bytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(h.outputLen);\n number(h.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { bytes as abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// The rotate left (circular left shift) operation for uint32\nexport const rotl = (word, shift) => (word << shift) | ((word >>> (32 - shift)) >>> 0);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// The byte swap operation for uint32\nexport const byteSwap = (word) => ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\n// Conditionally byte swap if on a big-endian platform\nexport const byteSwapIfBE = isLE ? (n) => n : (n) => byteSwap(n);\n// In place byte swap for Uint32Array\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { exists, output } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n/**\n * Polyfill for Safari 14\n */\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/**\n * Choice: a ? b : c\n */\nexport const Chi = (a, b, c) => (a & b) ^ (~a & c);\n/**\n * Majority function, true if any two inputs is true\n */\nexport const Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_md.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { HashMD } from './_md.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexport class SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nexport class SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nexport class SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nexport function abytes(item) {\n if (!isBytes(item))\n throw new Error('Uint8Array expected');\n}\nexport function abool(title, value) {\n if (typeof value !== 'boolean')\n throw new Error(`${title} must be valid boolean, got \"${value}\".`);\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n abytes(bytes);\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n }\n catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n }\n else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n// Is positive bigint\nconst isPosBig = (n) => typeof n === 'bigint' && _0n <= n;\nexport function inRange(n, min, max) {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title, n, min, max) {\n // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n // consider P=256n, min=0n, max=P\n // - a for min=0 would require -1: `inRange('x', x, -1n, P)`\n // - b would commonly require subtraction: `inRange('x', x, 0n, P - 1n)`\n // - our way is the cleanest: `inRange('x', x, 0n, P)\n if (!inRange(n, min, max))\n throw new Error(`expected valid ${title}: ${min} <= n < ${max}, got ${typeof n} ${n}`);\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_2n << BigInt(n - 1)) - _1n;\n// DRBG\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error(`Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n throw new Error('not implemented');\n};\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(fn) {\n const map = new WeakMap();\n return (arg, ...args) => {\n const val = map.get(arg);\n if (val !== undefined)\n return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n//# sourceMappingURL=utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport { bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, validateObject, } from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num, power, modulo) {\n if (modulo <= _0n || power < _0n)\n throw new Error('Expected power/modulo > 0');\n if (modulo === _1n)\n return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n)\n res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n// Inverses number over modulo\nexport function invert(number, modulo) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n let Q, S, Z;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++)\n ;\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++)\n ;\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp, n) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE))\n throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO))\n return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE))\n break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\nexport function FpSqrt(P) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp, n) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp, n) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f, num, power) {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n)\n throw new Error('Expected power > 0');\n if (power === _0n)\n return f.ONE;\n if (power === _1n)\n return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f, nums) {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\nexport function FpDiv(f, lhs, rhs) {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\nexport function FpLegendre(order) {\n // (a | p) ≡ 1 if a is a square (mod p), quadratic residue\n // (a | p) ≡ -1 if a is not a square (mod p), quadratic non residue\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreConst = (order - _1n) / _2n; // Integer arithmetic\n return (f, x) => f.pow(x, legendreConst);\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f) {\n const legendre = FpLegendre(f.ORDER);\n return (x) => {\n const p = legendre(f, x);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * NOTE: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you doing.\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLen, isLE = false, redef = {}) {\n if (ORDER <= _0n)\n throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048)\n throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n });\n return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { validateField, nLength } from './modular.js';\nimport { validateObject, bitLen } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap(); // This allows use make points immutable (nothing changes inside)\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF(c, bits) {\n const constTimeNegate = (condition, item) => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const validateW = (W) => {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error(`Wrong window size=${W}, should be [1..${bits}]`);\n };\n const opts = (W) => {\n validateW(W);\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm, n) {\n let p = c.ZERO;\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm, W) {\n const { windows, windowSize } = opts(W);\n const points = [];\n let p = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n let p = c.ZERO;\n let f = c.BASE;\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n // Shift number by W bits.\n n >>= shiftBy;\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n wNAFCached(P, n, transform) {\n const W = pointWindowSizes.get(P) || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W);\n if (W !== 1)\n pointPrecomputes.set(P, transform(comp));\n }\n return this.wNAF(W, comp, n);\n },\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n setWindowSize(P, W) {\n validateW(W);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n },\n };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM).\n * MSM is basically (Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster with precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param field field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka private keys / bigints)\n */\nexport function pippenger(c, field, points, scalars) {\n // If we split scalars by some window (let's say 8 bits), every chunk will only\n // take 256 buckets even if there are 4096 scalars, also re-uses double.\n // TODO:\n // - https://eprint.iacr.org/2024/750.pdf\n // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n // 0 is accepted in scalars\n if (!Array.isArray(points) || !Array.isArray(scalars) || scalars.length !== points.length)\n throw new Error('arrays of points and scalars must have equal length');\n scalars.forEach((s, i) => {\n if (!field.isValid(s))\n throw new Error(`wrong scalar at index ${i}`);\n });\n points.forEach((p, i) => {\n if (!(p instanceof c))\n throw new Error(`wrong point at index ${i}`);\n });\n const wbits = bitLen(BigInt(points.length));\n const windowSize = wbits > 12 ? wbits - 3 : wbits > 4 ? wbits - 2 : wbits ? 2 : 1; // in bits\n const MASK = (1 << windowSize) - 1;\n const buckets = new Array(MASK + 1).fill(c.ZERO); // +1 for zero array\n const lastBits = Math.floor((field.BITS - 1) / windowSize) * windowSize;\n let sum = c.ZERO;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(c.ZERO);\n for (let j = 0; j < scalars.length; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & BigInt(MASK));\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = c.ZERO; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = c.ZERO; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0)\n for (let j = 0; j < windowSize; j++)\n sum = sum.double();\n }\n return sum;\n}\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\n//# sourceMappingURL=curve.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Twisted Edwards curve. The formula is: ax² + y² = 1 + dx²y²\nimport { validateBasic, wNAF, pippenger, } from './curve.js';\nimport { mod, Field } from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes, memoized, abool } from './utils.js';\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _8n = BigInt(8);\n// verification rule is either zip215 or rfc8032 / nist186-5. Consult fromHex:\nconst VERIFY_DEFAULT = { zip215: true };\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(curve, {\n hash: 'function',\n a: 'bigint',\n d: 'bigint',\n randomBytes: 'function',\n }, {\n adjustScalarBytes: 'function',\n domain: 'function',\n uvRatio: 'function',\n mapToCurve: 'function',\n });\n // Set defaults\n return Object.freeze({ ...opts });\n}\n/**\n * Creates Twisted Edwards curve with EdDSA signatures.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, d, p, n, Gx, Gy, h\n * const curve = twistedEdwards({ a, d, Fp: Field(p), n, Gx, Gy, h })\n */\nexport function twistedEdwards(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER, prehash: prehash, hash: cHash, randomBytes, nByteLength, h: cofactor, } = CURVE;\n const MASK = _2n << (BigInt(nByteLength * 8) - _1n);\n const modP = Fp.create; // Function overrides\n const Fn = Field(CURVE.n, CURVE.nBitLength);\n // sqrt(u/v)\n const uvRatio = CURVE.uvRatio ||\n ((u, v) => {\n try {\n return { isValid: true, value: Fp.sqrt(u * Fp.inv(v)) };\n }\n catch (e) {\n return { isValid: false, value: _0n };\n }\n });\n const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes) => bytes); // NOOP\n const domain = CURVE.domain ||\n ((data, ctx, phflag) => {\n abool('phflag', phflag);\n if (ctx.length || phflag)\n throw new Error('Contexts/pre-hash are not supported');\n return data;\n }); // NOOP\n // 0 <= n < MASK\n // Coordinates larger than Fp.ORDER are allowed for zip215\n function aCoordinate(title, n) {\n ut.aInRange('coordinate ' + title, n, _0n, MASK);\n }\n function assertPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ExtendedPoint expected');\n }\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n const toAffineMemo = memoized((p, iz) => {\n const { ex: x, ey: y, ez: z } = p;\n const is0 = p.is0();\n if (iz == null)\n iz = is0 ? _8n : Fp.inv(z); // 8 was chosen arbitrarily\n const ax = modP(x * iz);\n const ay = modP(y * iz);\n const zz = modP(z * iz);\n if (is0)\n return { x: _0n, y: _1n };\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n });\n const assertValidMemo = memoized((p) => {\n const { a, d } = CURVE;\n if (p.is0())\n throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { ex: X, ey: Y, ez: Z, et: T } = p;\n const X2 = modP(X * X); // X²\n const Y2 = modP(Y * Y); // Y²\n const Z2 = modP(Z * Z); // Z²\n const Z4 = modP(Z2 * Z2); // Z⁴\n const aX2 = modP(X2 * a); // aX²\n const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²\n const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = modP(X * Y);\n const ZT = modP(Z * T);\n if (XY !== ZT)\n throw new Error('bad point: equation left != right (2)');\n return true;\n });\n // Extended Point works in extended coordinates: (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy).\n // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates\n class Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n aCoordinate('x', ex);\n aCoordinate('y', ey);\n aCoordinate('z', ez);\n aCoordinate('t', et);\n Object.freeze(this);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n static fromAffine(p) {\n if (p instanceof Point)\n throw new Error('extended point not allowed');\n const { x, y } = p || {};\n aCoordinate('x', x);\n aCoordinate('y', y);\n return new Point(x, y, _1n, modP(x * y));\n }\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.ez));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n // Multiscalar Multiplication\n static msm(points, scalars) {\n return pippenger(Point, Fn, points, scalars);\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n wnaf.setWindowSize(this, windowSize);\n }\n // Not required for fromHex(), which always creates valid points.\n // Could be useful for fromAffine().\n assertValidity() {\n assertValidMemo(this);\n }\n // Compare one point to another.\n equals(other) {\n assertPoint(other);\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = other;\n const X1Z2 = modP(X1 * Z2);\n const X2Z1 = modP(X2 * Z1);\n const Y1Z2 = modP(Y1 * Z2);\n const Y2Z1 = modP(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n negate() {\n // Flips point sign to a negative one (-x, y in affine coords)\n return new Point(modP(-this.ex), this.ey, this.ez, modP(-this.et));\n }\n // Fast algo for doubling Extended Point.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n // Cost: 4M + 4S + 1*a + 6add + 1*2.\n double() {\n const { a } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const A = modP(X1 * X1); // A = X12\n const B = modP(Y1 * Y1); // B = Y12\n const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12\n const D = modP(a * A); // D = a*A\n const x1y1 = X1 + Y1;\n const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B\n const G = D + B; // G = D+B\n const F = G - C; // F = G-C\n const H = D - B; // H = D-B\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n // Fast algo for adding 2 Extended Points.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd\n // Cost: 9M + 1*a + 1*d + 7add.\n add(other) {\n assertPoint(other);\n const { a, d } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = other;\n // Faster algo for adding 2 Extended Points when curve's a=-1.\n // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-4\n // Cost: 8M + 8add + 2*2.\n // Note: It does not check whether the `other` point is valid.\n if (a === BigInt(-1)) {\n const A = modP((Y1 - X1) * (Y2 + X2));\n const B = modP((Y1 + X1) * (Y2 - X2));\n const F = modP(B - A);\n if (F === _0n)\n return this.double(); // Same point. Tests say it doesn't affect timing\n const C = modP(Z1 * _2n * T2);\n const D = modP(T1 * _2n * Z2);\n const E = D + C;\n const G = B + A;\n const H = D - C;\n const X3 = modP(E * F);\n const Y3 = modP(G * H);\n const T3 = modP(E * H);\n const Z3 = modP(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n const A = modP(X1 * X2); // A = X1*X2\n const B = modP(Y1 * Y2); // B = Y1*Y2\n const C = modP(T1 * d * T2); // C = T1*d*T2\n const D = modP(Z1 * Z2); // D = Z1*Z2\n const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B\n const F = D - C; // F = D-C\n const G = D + C; // G = D+C\n const H = modP(B - a * A); // H = B-a*A\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, n, Point.normalizeZ);\n }\n // Constant-time multiplication.\n multiply(scalar) {\n const n = scalar;\n ut.aInRange('scalar', n, _1n, CURVE_ORDER); // 1 <= scalar < L\n const { p, f } = this.wNAF(n);\n return Point.normalizeZ([p, f])[0];\n }\n // Non-constant-time multiplication. Uses double-and-add algorithm.\n // It's faster, but should only be used when you don't care about\n // an exposed private key e.g. sig verification.\n // Does NOT allow scalars higher than CURVE.n.\n multiplyUnsafe(scalar) {\n const n = scalar;\n ut.aInRange('scalar', n, _0n, CURVE_ORDER); // 0 <= scalar < L\n if (n === _0n)\n return I;\n if (this.equals(I) || n === _1n)\n return this;\n if (this.equals(G))\n return this.wNAF(n).p;\n return wnaf.unsafeLadder(this, n);\n }\n // Checks if point is of small order.\n // If you add something to small order point, you will have \"dirty\"\n // point with torsion component.\n // Multiplies point by cofactor and checks if the result is 0.\n isSmallOrder() {\n return this.multiplyUnsafe(cofactor).is0();\n }\n // Multiplies point by curve order and checks if the result is 0.\n // Returns `false` is the point is dirty.\n isTorsionFree() {\n return wnaf.unsafeLadder(this, CURVE_ORDER).is0();\n }\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n toAffine(iz) {\n return toAffineMemo(this, iz);\n }\n clearCofactor() {\n const { h: cofactor } = CURVE;\n if (cofactor === _1n)\n return this;\n return this.multiplyUnsafe(cofactor);\n }\n // Converts hash string or Uint8Array to Point.\n // Uses algo from RFC8032 5.1.3.\n static fromHex(hex, zip215 = false) {\n const { d, a } = CURVE;\n const len = Fp.BYTES;\n hex = ensureBytes('pointHex', hex, len); // copy hex to a new array\n abool('zip215', zip215);\n const normed = hex.slice(); // copy again, we'll manipulate it\n const lastByte = hex[len - 1]; // select last byte\n normed[len - 1] = lastByte & ~0x80; // clear last bit\n const y = ut.bytesToNumberLE(normed);\n // RFC8032 prohibits >= p, but ZIP215 doesn't\n // zip215=true: 0 <= y < MASK (2^256 for ed25519)\n // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n const max = zip215 ? MASK : Fp.ORDER;\n ut.aInRange('pointHex.y', y, _0n, max);\n // Ed25519: x² = (y²-1)/(dy²+1) mod p. Ed448: x² = (y²-1)/(dy²-1) mod p. Generic case:\n // ax²+y²=1+dx²y² => y²-1=dx²y²-ax² => y²-1=x²(dy²-a) => x²=(y²-1)/(dy²-a)\n const y2 = modP(y * y); // denominator is always non-0 mod p.\n const u = modP(y2 - _1n); // u = y² - 1\n const v = modP(d * y2 - a); // v = d y² + 1.\n let { isValid, value: x } = uvRatio(u, v); // √(u/v)\n if (!isValid)\n throw new Error('Point.fromHex: invalid y coordinate');\n const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === _0n && isLastByteOdd)\n // if x=0 and x_0 = 1, fail\n throw new Error('Point.fromHex: x=0 and x_0=1');\n if (isLastByteOdd !== isXOdd)\n x = modP(-x); // if x_0 != x mod 2, set x = p-x\n return Point.fromAffine({ x, y });\n }\n static fromPrivateKey(privKey) {\n return getExtendedPublicKey(privKey).point;\n }\n toRawBytes() {\n const { x, y } = this.toAffine();\n const bytes = ut.numberToBytesLE(y, Fp.BYTES); // each y has 2 x values (x, -y)\n bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0; // when compressing, it's enough to store y\n return bytes; // and use the last byte to encode sign of x\n }\n toHex() {\n return ut.bytesToHex(this.toRawBytes()); // Same as toRawBytes, but returns string.\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));\n Point.ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0\n const { BASE: G, ZERO: I } = Point;\n const wnaf = wNAF(Point, nByteLength * 8);\n function modN(a) {\n return mod(a, CURVE_ORDER);\n }\n // Little-endian SHA512 with modulo n\n function modN_LE(hash) {\n return modN(ut.bytesToNumberLE(hash));\n }\n /** Convenience method that creates public key and other stuff. RFC8032 5.1.5 */\n function getExtendedPublicKey(key) {\n const len = nByteLength;\n key = ensureBytes('private key', key, len);\n // Hash private key with curve's hash function to produce uniformingly random input\n // Check byte lengths: ensure(64, h(ensure(32, key)))\n const hashed = ensureBytes('hashed private key', cHash(key), 2 * len);\n const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE\n const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)\n const scalar = modN_LE(head); // The actual private scalar\n const point = G.multiply(scalar); // Point on Edwards curve aka public key\n const pointBytes = point.toRawBytes(); // Uint8Array representation\n return { head, prefix, scalar, point, pointBytes };\n }\n // Calculates EdDSA pub key. RFC8032 5.1.5. Privkey is hashed. Use first half with 3 bits cleared\n function getPublicKey(privKey) {\n return getExtendedPublicKey(privKey).pointBytes;\n }\n // int('LE', SHA512(dom2(F, C) || msgs)) mod N\n function hashDomainToScalar(context = new Uint8Array(), ...msgs) {\n const msg = ut.concatBytes(...msgs);\n return modN_LE(cHash(domain(msg, ensureBytes('context', context), !!prehash)));\n }\n /** Signs message with privateKey. RFC8032 5.1.6 */\n function sign(msg, privKey, options = {}) {\n msg = ensureBytes('message', msg);\n if (prehash)\n msg = prehash(msg); // for ed25519ph etc.\n const { prefix, scalar, pointBytes } = getExtendedPublicKey(privKey);\n const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)\n const R = G.multiply(r).toRawBytes(); // R = rG\n const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)\n const s = modN(r + k * scalar); // S = (r + k * s) mod L\n ut.aInRange('signature.s', s, _0n, CURVE_ORDER); // 0 <= s < l\n const res = ut.concatBytes(R, ut.numberToBytesLE(s, Fp.BYTES));\n return ensureBytes('result', res, nByteLength * 2); // 64-byte signature\n }\n const verifyOpts = VERIFY_DEFAULT;\n function verify(sig, msg, publicKey, options = verifyOpts) {\n const { context, zip215 } = options;\n const len = Fp.BYTES; // Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n sig = ensureBytes('signature', sig, 2 * len); // An extended group equation is checked.\n msg = ensureBytes('message', msg);\n if (zip215 !== undefined)\n abool('zip215', zip215);\n if (prehash)\n msg = prehash(msg); // for ed25519ph, etc\n const s = ut.bytesToNumberLE(sig.slice(len, 2 * len));\n // zip215: true is good for consensus-critical apps and allows points < 2^256\n // zip215: false follows RFC8032 / NIST186-5 and restricts points to CURVE.p\n let A, R, SB;\n try {\n A = Point.fromHex(publicKey, zip215);\n R = Point.fromHex(sig.slice(0, len), zip215);\n SB = G.multiplyUnsafe(s); // 0 <= s < l is done inside\n }\n catch (error) {\n return false;\n }\n if (!zip215 && A.isSmallOrder())\n return false;\n const k = hashDomainToScalar(context, R.toRawBytes(), A.toRawBytes(), msg);\n const RkA = R.add(A.multiplyUnsafe(k));\n // [8][S]B = [8]R + [8][k]A'\n return RkA.subtract(SB).clearCofactor().equals(Point.ZERO);\n }\n G._setWindowSize(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n const utils = {\n getExtendedPublicKey,\n // ed25519 private keys are uniform 32b. No need to check for modulo bias, like in secp256k1.\n randomPrivateKey: () => randomBytes(Fp.BYTES),\n /**\n * We're doing scalar multiplication (used in getPublicKey etc) with precomputed BASE_POINT\n * values. This slows down first getPublicKey() by milliseconds (see Speed section),\n * but allows to speed-up subsequent getPublicKey() calls up to 20x.\n * @param windowSize 2, 4, 8, 16\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3));\n return point;\n },\n };\n return {\n CURVE,\n getPublicKey,\n sign,\n verify,\n ExtendedPoint: Point,\n utils,\n };\n}\n//# sourceMappingURL=edwards.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { mod, pow } from './modular.js';\nimport { aInRange, bytesToNumberLE, ensureBytes, numberToBytesLE, validateObject, } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nfunction validateOpts(curve) {\n validateObject(curve, {\n a: 'bigint',\n }, {\n montgomeryBits: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n adjustScalarBytes: 'function',\n domain: 'function',\n powPminus2: 'function',\n Gu: 'bigint',\n });\n // Set defaults\n return Object.freeze({ ...curve });\n}\n// NOTE: not really montgomery curve, just bunch of very specific methods for X25519/X448 (RFC 7748, https://www.rfc-editor.org/rfc/rfc7748)\n// Uses only one coordinate instead of two\nexport function montgomery(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { P } = CURVE;\n const modP = (n) => mod(n, P);\n const montgomeryBits = CURVE.montgomeryBits;\n const montgomeryBytes = Math.ceil(montgomeryBits / 8);\n const fieldLen = CURVE.nByteLength;\n const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes) => bytes);\n const powPminus2 = CURVE.powPminus2 || ((x) => pow(x, P - BigInt(2), P));\n // cswap from RFC7748. But it is not from RFC7748!\n /*\n cswap(swap, x_2, x_3):\n dummy = mask(swap) AND (x_2 XOR x_3)\n x_2 = x_2 XOR dummy\n x_3 = x_3 XOR dummy\n Return (x_2, x_3)\n Where mask(swap) is the all-1 or all-0 word of the same length as x_2\n and x_3, computed, e.g., as mask(swap) = 0 - swap.\n */\n function cswap(swap, x_2, x_3) {\n const dummy = modP(swap * (x_2 - x_3));\n x_2 = modP(x_2 - dummy);\n x_3 = modP(x_3 + dummy);\n return [x_2, x_3];\n }\n // x25519 from 4\n // The constant a24 is (486662 - 2) / 4 = 121665 for curve25519/X25519\n const a24 = (CURVE.a - BigInt(2)) / BigInt(4);\n /**\n *\n * @param pointU u coordinate (x) on Montgomery Curve 25519\n * @param scalar by which the point would be multiplied\n * @returns new Point on Montgomery curve\n */\n function montgomeryLadder(u, scalar) {\n aInRange('u', u, _0n, P);\n aInRange('scalar', scalar, _0n, P);\n // Section 5: Implementations MUST accept non-canonical values and process them as\n // if they had been reduced modulo the field prime.\n const k = scalar;\n const x_1 = u;\n let x_2 = _1n;\n let z_2 = _0n;\n let x_3 = u;\n let z_3 = _1n;\n let swap = _0n;\n let sw;\n for (let t = BigInt(montgomeryBits - 1); t >= _0n; t--) {\n const k_t = (k >> t) & _1n;\n swap ^= k_t;\n sw = cswap(swap, x_2, x_3);\n x_2 = sw[0];\n x_3 = sw[1];\n sw = cswap(swap, z_2, z_3);\n z_2 = sw[0];\n z_3 = sw[1];\n swap = k_t;\n const A = x_2 + z_2;\n const AA = modP(A * A);\n const B = x_2 - z_2;\n const BB = modP(B * B);\n const E = AA - BB;\n const C = x_3 + z_3;\n const D = x_3 - z_3;\n const DA = modP(D * A);\n const CB = modP(C * B);\n const dacb = DA + CB;\n const da_cb = DA - CB;\n x_3 = modP(dacb * dacb);\n z_3 = modP(x_1 * modP(da_cb * da_cb));\n x_2 = modP(AA * BB);\n z_2 = modP(E * (AA + modP(a24 * E)));\n }\n // (x_2, x_3) = cswap(swap, x_2, x_3)\n sw = cswap(swap, x_2, x_3);\n x_2 = sw[0];\n x_3 = sw[1];\n // (z_2, z_3) = cswap(swap, z_2, z_3)\n sw = cswap(swap, z_2, z_3);\n z_2 = sw[0];\n z_3 = sw[1];\n // z_2^(p - 2)\n const z2 = powPminus2(z_2);\n // Return x_2 * (z_2^(p - 2))\n return modP(x_2 * z2);\n }\n function encodeUCoordinate(u) {\n return numberToBytesLE(modP(u), montgomeryBytes);\n }\n function decodeUCoordinate(uEnc) {\n // Section 5: When receiving such an array, implementations of X25519\n // MUST mask the most significant bit in the final byte.\n const u = ensureBytes('u coordinate', uEnc, montgomeryBytes);\n if (fieldLen === 32)\n u[31] &= 127; // 0b0111_1111\n return bytesToNumberLE(u);\n }\n function decodeScalar(n) {\n const bytes = ensureBytes('scalar', n);\n const len = bytes.length;\n if (len !== montgomeryBytes && len !== fieldLen)\n throw new Error(`Expected ${montgomeryBytes} or ${fieldLen} bytes, got ${len}`);\n return bytesToNumberLE(adjustScalarBytes(bytes));\n }\n function scalarMult(scalar, u) {\n const pointU = decodeUCoordinate(u);\n const _scalar = decodeScalar(scalar);\n const pu = montgomeryLadder(pointU, _scalar);\n // The result was not contributory\n // https://cr.yp.to/ecdh.html#validate\n if (pu === _0n)\n throw new Error('Invalid private or public key received');\n return encodeUCoordinate(pu);\n }\n // Computes public key from private. By doing scalar multiplication of base point.\n const GuBytes = encodeUCoordinate(CURVE.Gu);\n function scalarMultBase(scalar) {\n return scalarMult(scalar, GuBytes);\n }\n return {\n scalarMult,\n scalarMultBase,\n getSharedSecret: (privateKey, publicKey) => scalarMult(privateKey, publicKey),\n getPublicKey: (privateKey) => scalarMultBase(privateKey),\n utils: { randomPrivateKey: () => CURVE.randomBytes(CURVE.nByteLength) },\n GuBytes: GuBytes,\n };\n}\n//# sourceMappingURL=montgomery.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha512';\nimport { concatBytes, randomBytes, utf8ToBytes } from '@noble/hashes/utils';\nimport { twistedEdwards } from './abstract/edwards.js';\nimport { createHasher, expand_message_xmd } from './abstract/hash-to-curve.js';\nimport { Field, FpSqrtEven, isNegativeLE, mod, pow2 } from './abstract/modular.js';\nimport { montgomery } from './abstract/montgomery.js';\nimport { bytesToHex, bytesToNumberLE, ensureBytes, equalBytes, numberToBytesLE, } from './abstract/utils.js';\n/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n */\nconst ED25519_P = BigInt('57896044618658097711785492504343953926634992332820282019728792003956564819949');\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst ED25519_SQRT_M1 = /* @__PURE__ */ BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _5n = BigInt(5), _8n = BigInt(8);\nfunction ed25519_pow_2_252_3(x) {\n // prettier-ignore\n const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\n const P = ED25519_P;\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P; // x^3, 11\n const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n const b10 = (pow2(b5, _5n, P) * b5) % P;\n const b20 = (pow2(b10, _10n, P) * b10) % P;\n const b40 = (pow2(b20, _20n, P) * b20) % P;\n const b80 = (pow2(b40, _40n, P) * b40) % P;\n const b160 = (pow2(b80, _80n, P) * b80) % P;\n const b240 = (pow2(b160, _80n, P) * b80) % P;\n const b250 = (pow2(b240, _10n, P) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n // ^ To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n}\nfunction adjustScalarBytes(bytes) {\n // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n // set the three least significant bits of the first byte\n bytes[0] &= 248; // 0b1111_1000\n // and the most significant bit of the last to zero,\n bytes[31] &= 127; // 0b0111_1111\n // set the second most significant bit of the last byte to 1\n bytes[31] |= 64; // 0b0100_0000\n return bytes;\n}\n// sqrt(u/v)\nfunction uvRatio(u, v) {\n const P = ED25519_P;\n const v3 = mod(v * v * v, P); // v³\n const v7 = mod(v3 * v3 * v, P); // v⁷\n // (p+3)/8 and (p-5)/8\n const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n let x = mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x, P); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx² = -u√(-1)\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if (isNegativeLE(x, P))\n x = mod(-x, P);\n return { isValid: useRoot1 || useRoot2, value: x };\n}\n// Just in case\nexport const ED25519_TORSION_SUBGROUP = [\n '0100000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n '0000000000000000000000000000000000000000000000000000000000000080',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\nconst Fp = /* @__PURE__ */ (() => Field(ED25519_P, undefined, true))();\nconst ed25519Defaults = /* @__PURE__ */ (() => ({\n // Param: a\n a: BigInt(-1), // Fp.create(-1) is proper; our way still works and is faster\n // d is equal to -121665/121666 over finite field.\n // Negative number is P - number, and division is invert(number, P)\n d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n // Finite field 𝔽p over which we'll do calculations; 2n**255n - 19n\n Fp,\n // Subgroup order: how many points curve has\n // 2n**252n + 27742317777372353535851937790883648493n;\n n: BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989'),\n // Cofactor\n h: _8n,\n // Base point (x, y) aka generator point\n Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n hash: sha512,\n randomBytes,\n adjustScalarBytes,\n // dom2\n // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.\n // Constant-time, u/√v\n uvRatio,\n}))();\n/**\n * ed25519 curve with EdDSA signatures.\n */\nexport const ed25519 = /* @__PURE__ */ (() => twistedEdwards(ed25519Defaults))();\nfunction ed25519_domain(data, ctx, phflag) {\n if (ctx.length > 255)\n throw new Error('Context is too big');\n return concatBytes(utf8ToBytes('SigEd25519 no Ed25519 collisions'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);\n}\nexport const ed25519ctx = /* @__PURE__ */ (() => twistedEdwards({\n ...ed25519Defaults,\n domain: ed25519_domain,\n}))();\nexport const ed25519ph = /* @__PURE__ */ (() => twistedEdwards(Object.assign({}, ed25519Defaults, {\n domain: ed25519_domain,\n prehash: sha512,\n})))();\nexport const x25519 = /* @__PURE__ */ (() => montgomery({\n P: ED25519_P,\n a: BigInt(486662),\n montgomeryBits: 255, // n is 253 bits\n nByteLength: 32,\n Gu: BigInt(9),\n powPminus2: (x) => {\n const P = ED25519_P;\n // x^(p-2) aka x^(2^255-21)\n const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n return mod(pow2(pow_p_5_8, _3n, P) * b2, P);\n },\n adjustScalarBytes,\n randomBytes,\n}))();\n/**\n * Converts ed25519 public key to x25519 public key. Uses formula:\n * * `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`\n * * `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`\n * @example\n * const someonesPub = ed25519.getPublicKey(ed25519.utils.randomPrivateKey());\n * const aPriv = x25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(aPriv, edwardsToMontgomeryPub(someonesPub))\n */\nexport function edwardsToMontgomeryPub(edwardsPub) {\n const { y } = ed25519.ExtendedPoint.fromHex(edwardsPub);\n const _1n = BigInt(1);\n return Fp.toBytes(Fp.create((_1n + y) * Fp.inv(_1n - y)));\n}\nexport const edwardsToMontgomery = edwardsToMontgomeryPub; // deprecated\n/**\n * Converts ed25519 secret key to x25519 secret key.\n * @example\n * const someonesPub = x25519.getPublicKey(x25519.utils.randomPrivateKey());\n * const aPriv = ed25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(edwardsToMontgomeryPriv(aPriv), someonesPub)\n */\nexport function edwardsToMontgomeryPriv(edwardsPriv) {\n const hashed = ed25519Defaults.hash(edwardsPriv.subarray(0, 32));\n return ed25519Defaults.adjustScalarBytes(hashed).subarray(0, 32);\n}\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\nconst ELL2_C1 = /* @__PURE__ */ (() => (Fp.ORDER + _3n) / _8n)(); // 1. c1 = (q + 3) / 8 # Integer arithmetic\nconst ELL2_C2 = /* @__PURE__ */ (() => Fp.pow(_2n, ELL2_C1))(); // 2. c2 = 2^c1\nconst ELL2_C3 = /* @__PURE__ */ (() => Fp.sqrt(Fp.neg(Fp.ONE)))(); // 3. c3 = sqrt(-1)\n// prettier-ignore\nfunction map_to_curve_elligator2_curve25519(u) {\n const ELL2_C4 = (Fp.ORDER - _5n) / _8n; // 4. c4 = (q - 5) / 8 # Integer arithmetic\n const ELL2_J = BigInt(486662);\n let tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1\n let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not\n let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)\n let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2\n let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3\n let gx1 = Fp.mul(tv1, ELL2_J); // 7. gx1 = J * tv1 # x1n + J * xd\n gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd\n gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2\n gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2\n tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4\n tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3\n tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3\n tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7\n let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)\n y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3\n tv2 = Fp.sqr(y11); // 19. tv2 = y11^2\n tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd\n let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1\n let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt\n let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd\n let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u\n y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2\n let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3\n let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n tv2 = Fp.sqr(y21); // 28. tv2 = y21^2\n tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd\n let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2\n let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt\n tv2 = Fp.sqr(y1); // 32. tv2 = y1^2\n tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd\n let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1\n let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2\n let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2\n let e4 = Fp.isOdd(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y\n y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)\n return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; // 39. return (xn, xd, y, 1)\n}\nconst ELL2_C1_EDWARDS = /* @__PURE__ */ (() => FpSqrtEven(Fp, Fp.neg(BigInt(486664))))(); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u) {\n const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) =\n // map_to_curve_elligator2_curve25519(u)\n let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd\n xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1\n let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM\n let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd\n let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd\n let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0\n xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)\n xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)\n yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)\n yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)\n const inv = Fp.invertBatch([xd, yd]); // batch division\n return { x: Fp.mul(xn, inv[0]), y: Fp.mul(yn, inv[1]) }; // 13. return (xn, xd, yn, yd)\n}\nconst htf = /* @__PURE__ */ (() => createHasher(ed25519.ExtendedPoint, (scalars) => map_to_curve_elligator2_edwards25519(scalars[0]), {\n DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha512,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\nfunction assertRstPoint(other) {\n if (!(other instanceof RistPoint))\n throw new Error('RistrettoPoint expected');\n}\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// √(ad - 1)\nconst SQRT_AD_MINUS_ONE = /* @__PURE__ */ BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\n// 1 / √(a-d)\nconst INVSQRT_A_MINUS_D = /* @__PURE__ */ BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\n// 1-d²\nconst ONE_MINUS_D_SQ = /* @__PURE__ */ BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\n// (d-1)²\nconst D_MINUS_ONE_SQ = /* @__PURE__ */ BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\n// Calculates 1/√(number)\nconst invertSqrt = (number) => uvRatio(_1n, number);\nconst MAX_255B = /* @__PURE__ */ BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nconst bytes255ToNumberLE = (bytes) => ed25519.CURVE.Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n// Computes Elligator map for Ristretto\n// https://ristretto.group/formulas/elligator.html\nfunction calcElligatorRistrettoMap(r0) {\n const { d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const r = mod(SQRT_M1 * r0 * r0); // 1\n const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n let c = BigInt(-1); // 3\n const D = mod((c - d * r) * mod(r + d)); // 4\n let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n let s_ = mod(s * r0); // 6\n if (!isNegativeLE(s_, P))\n s_ = mod(-s_);\n if (!Ns_D_is_sq)\n s = s_; // 7\n if (!Ns_D_is_sq)\n c = r; // 8\n const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n const s2 = s * s;\n const W0 = mod((s + s) * D); // 10\n const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n const W2 = mod(_1n - s2); // 12\n const W3 = mod(_1n + s2); // 13\n return new ed25519.ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\n/**\n * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,\n * but it should work in its own namespace: do not combine those two.\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-ristretto255-decaf448\n */\nclass RistPoint {\n // Private property to discourage combining ExtendedPoint + RistrettoPoint\n // Always use Ristretto encoding/decoding instead.\n constructor(ep) {\n this.ep = ep;\n }\n static fromAffine(ap) {\n return new RistPoint(ed25519.ExtendedPoint.fromAffine(ap));\n }\n /**\n * Takes uniform output of 64-byte hash function like sha512 and converts it to `RistrettoPoint`.\n * The hash-to-group operation applies Elligator twice and adds the results.\n * **Note:** this is one-way map, there is no conversion from point to hash.\n * https://ristretto.group/formulas/elligator.html\n * @param hex 64-byte output of a hash function\n */\n static hashToCurve(hex) {\n hex = ensureBytes('ristrettoHash', hex, 64);\n const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n const R1 = calcElligatorRistrettoMap(r1);\n const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n const R2 = calcElligatorRistrettoMap(r2);\n return new RistPoint(R1.add(R2));\n }\n /**\n * Converts ristretto-encoded string to ristretto point.\n * https://ristretto.group/formulas/decoding.html\n * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n */\n static fromHex(hex) {\n hex = ensureBytes('ristrettoHex', hex, 32);\n const { a, d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n const s = bytes255ToNumberLE(hex);\n // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n // 3. Check that s is non-negative, or else abort\n if (!equalBytes(numberToBytesLE(s, 32), hex) || isNegativeLE(s, P))\n throw new Error(emsg);\n const s2 = mod(s * s);\n const u1 = mod(_1n + a * s2); // 4 (a is -1)\n const u2 = mod(_1n - a * s2); // 5\n const u1_2 = mod(u1 * u1);\n const u2_2 = mod(u2 * u2);\n const v = mod(a * d * u1_2 - u2_2); // 6\n const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n const Dx = mod(I * u2); // 8\n const Dy = mod(I * Dx * v); // 9\n let x = mod((s + s) * Dx); // 10\n if (isNegativeLE(x, P))\n x = mod(-x); // 10\n const y = mod(u1 * Dy); // 11\n const t = mod(x * y); // 12\n if (!isValid || isNegativeLE(t, P) || y === _0n)\n throw new Error(emsg);\n return new RistPoint(new ed25519.ExtendedPoint(x, y, _1n, t));\n }\n /**\n * Encodes ristretto point to Uint8Array.\n * https://ristretto.group/formulas/encoding.html\n */\n toRawBytes() {\n let { ex: x, ey: y, ez: z, et: t } = this.ep;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const u1 = mod(mod(z + y) * mod(z - y)); // 1\n const u2 = mod(x * y); // 2\n // Square root always exists\n const u2sq = mod(u2 * u2);\n const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n const D1 = mod(invsqrt * u1); // 4\n const D2 = mod(invsqrt * u2); // 5\n const zInv = mod(D1 * D2 * t); // 6\n let D; // 7\n if (isNegativeLE(t * zInv, P)) {\n let _x = mod(y * SQRT_M1);\n let _y = mod(x * SQRT_M1);\n x = _x;\n y = _y;\n D = mod(D1 * INVSQRT_A_MINUS_D);\n }\n else {\n D = D2; // 8\n }\n if (isNegativeLE(x * zInv, P))\n y = mod(-y); // 9\n let s = mod((z - y) * D); // 10 (check footer's note, no sqrt(-a))\n if (isNegativeLE(s, P))\n s = mod(-s);\n return numberToBytesLE(s, 32); // 11\n }\n toHex() {\n return bytesToHex(this.toRawBytes());\n }\n toString() {\n return this.toHex();\n }\n // Compare one point to another.\n equals(other) {\n assertRstPoint(other);\n const { ex: X1, ey: Y1 } = this.ep;\n const { ex: X2, ey: Y2 } = other.ep;\n const mod = ed25519.CURVE.Fp.create;\n // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n const one = mod(X1 * Y2) === mod(Y1 * X2);\n const two = mod(Y1 * Y2) === mod(X1 * X2);\n return one || two;\n }\n add(other) {\n assertRstPoint(other);\n return new RistPoint(this.ep.add(other.ep));\n }\n subtract(other) {\n assertRstPoint(other);\n return new RistPoint(this.ep.subtract(other.ep));\n }\n multiply(scalar) {\n return new RistPoint(this.ep.multiply(scalar));\n }\n multiplyUnsafe(scalar) {\n return new RistPoint(this.ep.multiplyUnsafe(scalar));\n }\n double() {\n return new RistPoint(this.ep.double());\n }\n negate() {\n return new RistPoint(this.ep.negate());\n }\n}\nexport const RistrettoPoint = /* @__PURE__ */ (() => {\n if (!RistPoint.BASE)\n RistPoint.BASE = new RistPoint(ed25519.ExtendedPoint.BASE);\n if (!RistPoint.ZERO)\n RistPoint.ZERO = new RistPoint(ed25519.ExtendedPoint.ZERO);\n return RistPoint;\n})();\n// Hashing to ristretto255. https://www.rfc-editor.org/rfc/rfc9380#appendix-B\nexport const hashToRistretto255 = (msg, options) => {\n const d = options.DST;\n const DST = typeof d === 'string' ? utf8ToBytes(d) : d;\n const uniform_bytes = expand_message_xmd(msg, DST, 64, sha512);\n const P = RistPoint.hashToCurve(uniform_bytes);\n return P;\n};\nexport const hash_to_ristretto255 = hashToRistretto255; // legacy\n//# sourceMappingURL=ed25519.js.map","import { ed25519 as ed } from '@noble/curves/ed25519';\nconst PUBLIC_KEY_BYTE_LENGTH = 32;\nconst PRIVATE_KEY_BYTE_LENGTH = 64; // private key is actually 32 bytes but for historical reasons we concat private and public keys\nconst KEYS_BYTE_LENGTH = 32;\nexport { PUBLIC_KEY_BYTE_LENGTH as publicKeyLength };\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n // the actual private key (32 bytes)\n const privateKeyRaw = ed.utils.randomPrivateKey();\n const publicKey = ed.getPublicKey(privateKeyRaw);\n // concatenated the public key to the private key\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\n/**\n * Generate keypair from a 32 byte uint8array\n */\nexport function generateKeyFromSeed(seed) {\n if (seed.length !== KEYS_BYTE_LENGTH) {\n throw new TypeError('\"seed\" must be 32 bytes in length.');\n }\n else if (!(seed instanceof Uint8Array)) {\n throw new TypeError('\"seed\" must be a node.js Buffer, or Uint8Array.');\n }\n // based on node forges algorithm, the seed is used directly as private key\n const privateKeyRaw = seed;\n const publicKey = ed.getPublicKey(privateKeyRaw);\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\nexport function hashAndSign(privateKey, msg) {\n const privateKeyRaw = privateKey.subarray(0, KEYS_BYTE_LENGTH);\n return ed.sign(msg instanceof Uint8Array ? msg : msg.subarray(), privateKeyRaw);\n}\nexport function hashAndVerify(publicKey, sig, msg) {\n return ed.verify(sig, msg instanceof Uint8Array ? msg : msg.subarray(), publicKey);\n}\nfunction concatKeys(privateKeyRaw, publicKey) {\n const privateKey = new Uint8Array(PRIVATE_KEY_BYTE_LENGTH);\n for (let i = 0; i < KEYS_BYTE_LENGTH; i++) {\n privateKey[i] = privateKeyRaw[i];\n privateKey[KEYS_BYTE_LENGTH + i] = publicKey[i];\n }\n return privateKey;\n}\n//# sourceMappingURL=ed25519-browser.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","import { concat } from 'uint8arrays/concat';\nimport { fromString } from 'uint8arrays/from-string';\nimport webcrypto from '../webcrypto.js';\n// WebKit on Linux does not support deriving a key from an empty PBKDF2 key.\n// So, as a workaround, we provide the generated key as a constant. We test that\n// this generated key is accurate in test/workaround.spec.ts\n// Generated via:\n// await crypto.subtle.exportKey('jwk',\n// await crypto.subtle.deriveKey(\n// { name: 'PBKDF2', salt: new Uint8Array(16), iterations: 32767, hash: { name: 'SHA-256' } },\n// await crypto.subtle.importKey('raw', new Uint8Array(0), { name: 'PBKDF2' }, false, ['deriveKey']),\n// { name: 'AES-GCM', length: 128 }, true, ['encrypt', 'decrypt'])\n// )\nexport const derivedEmptyPasswordKey = { alg: 'A128GCM', ext: true, k: 'scm9jmO_4BJAgdwWGVulLg', key_ops: ['encrypt', 'decrypt'], kty: 'oct' };\n// Based off of code from https://github.com/luke-park/SecureCompatibleEncryptionExamples\nexport function create(opts) {\n const algorithm = opts?.algorithm ?? 'AES-GCM';\n let keyLength = opts?.keyLength ?? 16;\n const nonceLength = opts?.nonceLength ?? 12;\n const digest = opts?.digest ?? 'SHA-256';\n const saltLength = opts?.saltLength ?? 16;\n const iterations = opts?.iterations ?? 32767;\n const crypto = webcrypto.get();\n keyLength *= 8; // Browser crypto uses bits instead of bytes\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to encrypt the data.\n */\n async function encrypt(data, password) {\n const salt = crypto.getRandomValues(new Uint8Array(saltLength));\n const nonce = crypto.getRandomValues(new Uint8Array(nonceLength));\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n }\n }\n else {\n // Derive a key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n // Encrypt the string.\n const ciphertext = await crypto.subtle.encrypt(aesGcm, cryptoKey, data);\n return concat([salt, aesGcm.iv, new Uint8Array(ciphertext)]);\n }\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to decrypt the data. The options used to create\n * this decryption cipher must be the same as those used to create\n * the encryption cipher.\n */\n async function decrypt(data, password) {\n const salt = data.subarray(0, saltLength);\n const nonce = data.subarray(saltLength, saltLength + nonceLength);\n const ciphertext = data.subarray(saltLength + nonceLength);\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['decrypt']);\n }\n }\n else {\n // Derive the key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n // Decrypt the string.\n const plaintext = await crypto.subtle.decrypt(aesGcm, cryptoKey, ciphertext);\n return new Uint8Array(plaintext);\n }\n const cipher = {\n encrypt,\n decrypt\n };\n return cipher;\n}\n//# sourceMappingURL=aes-gcm.browser.js.map","import { base64 } from 'multiformats/bases/base64';\nimport * as ciphers from '../ciphers/aes-gcm.js';\n/**\n * Exports the given PrivateKey as a base64 encoded string.\n * The PrivateKey is encrypted via a password derived PBKDF2 key\n * leveraging the aes-gcm cipher algorithm.\n */\nexport async function exporter(privateKey, password) {\n const cipher = ciphers.create();\n const encryptedKey = await cipher.encrypt(privateKey, password);\n return base64.encode(encryptedKey);\n}\n//# sourceMappingURL=exporter.js.map","/* eslint-disable no-fallthrough */\nimport { allocUnsafe } from 'uint8arrays/alloc';\nconst N1 = Math.pow(2, 7);\nconst N2 = Math.pow(2, 14);\nconst N3 = Math.pow(2, 21);\nconst N4 = Math.pow(2, 28);\nconst N5 = Math.pow(2, 35);\nconst N6 = Math.pow(2, 42);\nconst N7 = Math.pow(2, 49);\n/** Most significant bit of a byte */\nconst MSB = 0x80;\n/** Rest of the bits in a byte */\nconst REST = 0x7f;\nexport function encodingLength(value) {\n if (value < N1) {\n return 1;\n }\n if (value < N2) {\n return 2;\n }\n if (value < N3) {\n return 3;\n }\n if (value < N4) {\n return 4;\n }\n if (value < N5) {\n return 5;\n }\n if (value < N6) {\n return 6;\n }\n if (value < N7) {\n return 7;\n }\n if (Number.MAX_SAFE_INTEGER != null && value > Number.MAX_SAFE_INTEGER) {\n throw new RangeError('Could not encode varint');\n }\n return 8;\n}\nexport function encodeUint8Array(value, buf, offset = 0) {\n switch (encodingLength(value)) {\n case 8: {\n buf[offset++] = (value & 0xFF) | MSB;\n value /= 128;\n }\n case 7: {\n buf[offset++] = (value & 0xFF) | MSB;\n value /= 128;\n }\n case 6: {\n buf[offset++] = (value & 0xFF) | MSB;\n value /= 128;\n }\n case 5: {\n buf[offset++] = (value & 0xFF) | MSB;\n value /= 128;\n }\n case 4: {\n buf[offset++] = (value & 0xFF) | MSB;\n value >>>= 7;\n }\n case 3: {\n buf[offset++] = (value & 0xFF) | MSB;\n value >>>= 7;\n }\n case 2: {\n buf[offset++] = (value & 0xFF) | MSB;\n value >>>= 7;\n }\n case 1: {\n buf[offset++] = (value & 0xFF);\n value >>>= 7;\n break;\n }\n default: throw new Error('unreachable');\n }\n return buf;\n}\nexport function encodeUint8ArrayList(value, buf, offset = 0) {\n switch (encodingLength(value)) {\n case 8: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value /= 128;\n }\n case 7: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value /= 128;\n }\n case 6: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value /= 128;\n }\n case 5: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value /= 128;\n }\n case 4: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value >>>= 7;\n }\n case 3: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value >>>= 7;\n }\n case 2: {\n buf.set(offset++, (value & 0xFF) | MSB);\n value >>>= 7;\n }\n case 1: {\n buf.set(offset++, (value & 0xFF));\n value >>>= 7;\n break;\n }\n default: throw new Error('unreachable');\n }\n return buf;\n}\nexport function decodeUint8Array(buf, offset) {\n let b = buf[offset];\n let res = 0;\n res += b & REST;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 1];\n res += (b & REST) << 7;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 2];\n res += (b & REST) << 14;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 3];\n res += (b & REST) << 21;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 4];\n res += (b & REST) * N4;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 5];\n res += (b & REST) * N5;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 6];\n res += (b & REST) * N6;\n if (b < MSB) {\n return res;\n }\n b = buf[offset + 7];\n res += (b & REST) * N7;\n if (b < MSB) {\n return res;\n }\n throw new RangeError('Could not decode varint');\n}\nexport function decodeUint8ArrayList(buf, offset) {\n let b = buf.get(offset);\n let res = 0;\n res += b & REST;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 1);\n res += (b & REST) << 7;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 2);\n res += (b & REST) << 14;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 3);\n res += (b & REST) << 21;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 4);\n res += (b & REST) * N4;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 5);\n res += (b & REST) * N5;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 6);\n res += (b & REST) * N6;\n if (b < MSB) {\n return res;\n }\n b = buf.get(offset + 7);\n res += (b & REST) * N7;\n if (b < MSB) {\n return res;\n }\n throw new RangeError('Could not decode varint');\n}\nexport function encode(value, buf, offset = 0) {\n if (buf == null) {\n buf = allocUnsafe(encodingLength(value));\n }\n if (buf instanceof Uint8Array) {\n return encodeUint8Array(value, buf, offset);\n }\n else {\n return encodeUint8ArrayList(value, buf, offset);\n }\n}\nexport function decode(buf, offset = 0) {\n if (buf instanceof Uint8Array) {\n return decodeUint8Array(buf, offset);\n }\n else {\n return decodeUint8ArrayList(buf, offset);\n }\n}\n//# sourceMappingURL=index.js.map","const f32 = new Float32Array([-0]);\nconst f8b = new Uint8Array(f32.buffer);\n/**\n * Writes a 32 bit float to a buffer using little endian byte order\n */\nexport function writeFloatLE(val, buf, pos) {\n f32[0] = val;\n buf[pos] = f8b[0];\n buf[pos + 1] = f8b[1];\n buf[pos + 2] = f8b[2];\n buf[pos + 3] = f8b[3];\n}\n/**\n * Writes a 32 bit float to a buffer using big endian byte order\n */\nexport function writeFloatBE(val, buf, pos) {\n f32[0] = val;\n buf[pos] = f8b[3];\n buf[pos + 1] = f8b[2];\n buf[pos + 2] = f8b[1];\n buf[pos + 3] = f8b[0];\n}\n/**\n * Reads a 32 bit float from a buffer using little endian byte order\n */\nexport function readFloatLE(buf, pos) {\n f8b[0] = buf[pos];\n f8b[1] = buf[pos + 1];\n f8b[2] = buf[pos + 2];\n f8b[3] = buf[pos + 3];\n return f32[0];\n}\n/**\n * Reads a 32 bit float from a buffer using big endian byte order\n */\nexport function readFloatBE(buf, pos) {\n f8b[3] = buf[pos];\n f8b[2] = buf[pos + 1];\n f8b[1] = buf[pos + 2];\n f8b[0] = buf[pos + 3];\n return f32[0];\n}\nconst f64 = new Float64Array([-0]);\nconst d8b = new Uint8Array(f64.buffer);\n/**\n * Writes a 64 bit double to a buffer using little endian byte order\n */\nexport function writeDoubleLE(val, buf, pos) {\n f64[0] = val;\n buf[pos] = d8b[0];\n buf[pos + 1] = d8b[1];\n buf[pos + 2] = d8b[2];\n buf[pos + 3] = d8b[3];\n buf[pos + 4] = d8b[4];\n buf[pos + 5] = d8b[5];\n buf[pos + 6] = d8b[6];\n buf[pos + 7] = d8b[7];\n}\n/**\n * Writes a 64 bit double to a buffer using big endian byte order\n */\nexport function writeDoubleBE(val, buf, pos) {\n f64[0] = val;\n buf[pos] = d8b[7];\n buf[pos + 1] = d8b[6];\n buf[pos + 2] = d8b[5];\n buf[pos + 3] = d8b[4];\n buf[pos + 4] = d8b[3];\n buf[pos + 5] = d8b[2];\n buf[pos + 6] = d8b[1];\n buf[pos + 7] = d8b[0];\n}\n/**\n * Reads a 64 bit double from a buffer using little endian byte order\n */\nexport function readDoubleLE(buf, pos) {\n d8b[0] = buf[pos];\n d8b[1] = buf[pos + 1];\n d8b[2] = buf[pos + 2];\n d8b[3] = buf[pos + 3];\n d8b[4] = buf[pos + 4];\n d8b[5] = buf[pos + 5];\n d8b[6] = buf[pos + 6];\n d8b[7] = buf[pos + 7];\n return f64[0];\n}\n/**\n * Reads a 64 bit double from a buffer using big endian byte order\n */\nexport function readDoubleBE(buf, pos) {\n d8b[7] = buf[pos];\n d8b[6] = buf[pos + 1];\n d8b[5] = buf[pos + 2];\n d8b[4] = buf[pos + 3];\n d8b[3] = buf[pos + 4];\n d8b[2] = buf[pos + 5];\n d8b[1] = buf[pos + 6];\n d8b[0] = buf[pos + 7];\n return f64[0];\n}\n//# sourceMappingURL=float.js.map","// the largest BigInt we can safely downcast to a Number\nconst MAX_SAFE_NUMBER_INTEGER = BigInt(Number.MAX_SAFE_INTEGER);\nconst MIN_SAFE_NUMBER_INTEGER = BigInt(Number.MIN_SAFE_INTEGER);\n/**\n * Constructs new long bits.\n *\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @function Object() { [native code] }\n * @param {number} lo - Low 32 bits, unsigned\n * @param {number} hi - High 32 bits, unsigned\n */\nexport class LongBits {\n lo;\n hi;\n constructor(lo, hi) {\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n /**\n * Low bits\n */\n this.lo = lo | 0;\n /**\n * High bits\n */\n this.hi = hi | 0;\n }\n /**\n * Converts this long bits to a possibly unsafe JavaScript number\n */\n toNumber(unsigned = false) {\n if (!unsigned && (this.hi >>> 31) > 0) {\n const lo = ~this.lo + 1 >>> 0;\n let hi = ~this.hi >>> 0;\n if (lo === 0) {\n hi = hi + 1 >>> 0;\n }\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n }\n /**\n * Converts this long bits to a bigint\n */\n toBigInt(unsigned = false) {\n if (unsigned) {\n return BigInt(this.lo >>> 0) + (BigInt(this.hi >>> 0) << 32n);\n }\n if ((this.hi >>> 31) !== 0) {\n const lo = ~this.lo + 1 >>> 0;\n let hi = ~this.hi >>> 0;\n if (lo === 0) {\n hi = hi + 1 >>> 0;\n }\n return -(BigInt(lo) + (BigInt(hi) << 32n));\n }\n return BigInt(this.lo >>> 0) + (BigInt(this.hi >>> 0) << 32n);\n }\n /**\n * Converts this long bits to a string\n */\n toString(unsigned = false) {\n return this.toBigInt(unsigned).toString();\n }\n /**\n * Zig-zag encodes this long bits\n */\n zzEncode() {\n const mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = (this.lo << 1 ^ mask) >>> 0;\n return this;\n }\n /**\n * Zig-zag decodes this long bits\n */\n zzDecode() {\n const mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = (this.hi >>> 1 ^ mask) >>> 0;\n return this;\n }\n /**\n * Calculates the length of this longbits when encoded as a varint.\n */\n length() {\n const part0 = this.lo;\n const part1 = (this.lo >>> 28 | this.hi << 4) >>> 0;\n const part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n }\n /**\n * Constructs new long bits from the specified number\n */\n static fromBigInt(value) {\n if (value === 0n) {\n return zero;\n }\n if (value < MAX_SAFE_NUMBER_INTEGER && value > MIN_SAFE_NUMBER_INTEGER) {\n return this.fromNumber(Number(value));\n }\n const negative = value < 0n;\n if (negative) {\n value = -value;\n }\n let hi = value >> 32n;\n let lo = value - (hi << 32n);\n if (negative) {\n hi = ~hi | 0n;\n lo = ~lo | 0n;\n if (++lo > TWO_32) {\n lo = 0n;\n if (++hi > TWO_32) {\n hi = 0n;\n }\n }\n }\n return new LongBits(Number(lo), Number(hi));\n }\n /**\n * Constructs new long bits from the specified number\n */\n static fromNumber(value) {\n if (value === 0) {\n return zero;\n }\n const sign = value < 0;\n if (sign) {\n value = -value;\n }\n let lo = value >>> 0;\n let hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295) {\n hi = 0;\n }\n }\n }\n return new LongBits(lo, hi);\n }\n /**\n * Constructs new long bits from a number, long or string\n */\n static from(value) {\n if (typeof value === 'number') {\n return LongBits.fromNumber(value);\n }\n if (typeof value === 'bigint') {\n return LongBits.fromBigInt(value);\n }\n if (typeof value === 'string') {\n return LongBits.fromBigInt(BigInt(value));\n }\n return value.low != null || value.high != null ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n }\n}\nconst zero = new LongBits(0, 0);\nzero.toBigInt = function () { return 0n; };\nzero.zzEncode = zero.zzDecode = function () { return this; };\nzero.length = function () { return 1; };\nconst TWO_32 = 4294967296n;\n//# sourceMappingURL=longbits.js.map","/**\n * Calculates the UTF8 byte length of a string\n */\nexport function length(string) {\n let len = 0;\n let c = 0;\n for (let i = 0; i < string.length; ++i) {\n c = string.charCodeAt(i);\n if (c < 128) {\n len += 1;\n }\n else if (c < 2048) {\n len += 2;\n }\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\n ++i;\n len += 4;\n }\n else {\n len += 3;\n }\n }\n return len;\n}\n/**\n * Reads UTF8 bytes as a string\n */\nexport function read(buffer, start, end) {\n const len = end - start;\n if (len < 1) {\n return '';\n }\n let parts;\n const chunk = [];\n let i = 0; // char offset\n let t; // temporary\n while (start < end) {\n t = buffer[start++];\n if (t < 128) {\n chunk[i++] = t;\n }\n else if (t > 191 && t < 224) {\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\n }\n else if (t > 239 && t < 365) {\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\n chunk[i++] = 0xD800 + (t >> 10);\n chunk[i++] = 0xDC00 + (t & 1023);\n }\n else {\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\n }\n if (i > 8191) {\n (parts ?? (parts = [])).push(String.fromCharCode.apply(String, chunk));\n i = 0;\n }\n }\n if (parts != null) {\n if (i > 0) {\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\n }\n return parts.join('');\n }\n return String.fromCharCode.apply(String, chunk.slice(0, i));\n}\n/**\n * Writes a string as UTF8 bytes\n */\nexport function write(string, buffer, offset) {\n const start = offset;\n let c1; // character 1\n let c2; // character 2\n for (let i = 0; i < string.length; ++i) {\n c1 = string.charCodeAt(i);\n if (c1 < 128) {\n buffer[offset++] = c1;\n }\n else if (c1 < 2048) {\n buffer[offset++] = c1 >> 6 | 192;\n buffer[offset++] = c1 & 63 | 128;\n }\n else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n ++i;\n buffer[offset++] = c1 >> 18 | 240;\n buffer[offset++] = c1 >> 12 & 63 | 128;\n buffer[offset++] = c1 >> 6 & 63 | 128;\n buffer[offset++] = c1 & 63 | 128;\n }\n else {\n buffer[offset++] = c1 >> 12 | 224;\n buffer[offset++] = c1 >> 6 & 63 | 128;\n buffer[offset++] = c1 & 63 | 128;\n }\n }\n return offset - start;\n}\n//# sourceMappingURL=utf8.js.map","import { decodeUint8Array, encodingLength } from 'uint8-varint';\nimport { readFloatLE, readDoubleLE } from './float.js';\nimport { LongBits } from './longbits.js';\nimport * as utf8 from './utf8.js';\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(`index out of range: ${reader.pos} + ${writeLength ?? 1} > ${reader.len}`);\n}\nfunction readFixed32End(buf, end) {\n return (buf[end - 4] |\n buf[end - 3] << 8 |\n buf[end - 2] << 16 |\n buf[end - 1] << 24) >>> 0;\n}\n/**\n * Constructs a new reader instance using the specified buffer.\n */\nexport class Uint8ArrayReader {\n buf;\n pos;\n len;\n _slice = Uint8Array.prototype.subarray;\n constructor(buffer) {\n /**\n * Read buffer\n */\n this.buf = buffer;\n /**\n * Read buffer position\n */\n this.pos = 0;\n /**\n * Read buffer length\n */\n this.len = buffer.length;\n }\n /**\n * Reads a varint as an unsigned 32 bit value\n */\n uint32() {\n let value = 4294967295;\n value = (this.buf[this.pos] & 127) >>> 0;\n if (this.buf[this.pos++] < 128)\n return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0;\n if (this.buf[this.pos++] < 128)\n return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0;\n if (this.buf[this.pos++] < 128)\n return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0;\n if (this.buf[this.pos++] < 128)\n return value;\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n }\n /**\n * Reads a varint as a signed 32 bit value\n */\n int32() {\n return this.uint32() | 0;\n }\n /**\n * Reads a zig-zag encoded varint as a signed 32 bit value\n */\n sint32() {\n const value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n }\n /**\n * Reads a varint as a boolean\n */\n bool() {\n return this.uint32() !== 0;\n }\n /**\n * Reads fixed 32 bits as an unsigned 32 bit integer\n */\n fixed32() {\n if (this.pos + 4 > this.len) {\n throw indexOutOfRange(this, 4);\n }\n const res = readFixed32End(this.buf, this.pos += 4);\n return res;\n }\n /**\n * Reads fixed 32 bits as a signed 32 bit integer\n */\n sfixed32() {\n if (this.pos + 4 > this.len) {\n throw indexOutOfRange(this, 4);\n }\n const res = readFixed32End(this.buf, this.pos += 4) | 0;\n return res;\n }\n /**\n * Reads a float (32 bit) as a number\n */\n float() {\n if (this.pos + 4 > this.len) {\n throw indexOutOfRange(this, 4);\n }\n const value = readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n }\n /**\n * Reads a double (64 bit float) as a number\n */\n double() {\n /* istanbul ignore if */\n if (this.pos + 8 > this.len) {\n throw indexOutOfRange(this, 4);\n }\n const value = readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n }\n /**\n * Reads a sequence of bytes preceded by its length as a varint\n */\n bytes() {\n const length = this.uint32();\n const start = this.pos;\n const end = this.pos + length;\n /* istanbul ignore if */\n if (end > this.len) {\n throw indexOutOfRange(this, length);\n }\n this.pos += length;\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\n ? new Uint8Array(0)\n : this.buf.subarray(start, end);\n }\n /**\n * Reads a string preceded by its byte length as a varint\n */\n string() {\n const bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n }\n /**\n * Skips the specified number of bytes if specified, otherwise skips a varint\n */\n skip(length) {\n if (typeof length === 'number') {\n /* istanbul ignore if */\n if (this.pos + length > this.len) {\n throw indexOutOfRange(this, length);\n }\n this.pos += length;\n }\n else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len) {\n throw indexOutOfRange(this);\n }\n } while ((this.buf[this.pos++] & 128) !== 0);\n }\n return this;\n }\n /**\n * Skips the next element of the specified wire type\n */\n skipType(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n /* istanbul ignore next */\n default:\n throw Error(`invalid wire type ${wireType} at offset ${this.pos}`);\n }\n return this;\n }\n readLongVarint() {\n // tends to deopt with local vars for octet etc.\n const bits = new LongBits(0, 0);\n let i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128) {\n return bits;\n }\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128) {\n return bits;\n }\n i = 0;\n }\n else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len) {\n throw indexOutOfRange(this);\n }\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128) {\n return bits;\n }\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128) {\n return bits;\n }\n }\n }\n else {\n for (; i < 5; ++i) {\n if (this.pos >= this.len) {\n throw indexOutOfRange(this);\n }\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128) {\n return bits;\n }\n }\n }\n throw Error('invalid varint encoding');\n }\n readFixed64() {\n if (this.pos + 8 > this.len) {\n throw indexOutOfRange(this, 8);\n }\n const lo = readFixed32End(this.buf, this.pos += 4);\n const hi = readFixed32End(this.buf, this.pos += 4);\n return new LongBits(lo, hi);\n }\n /**\n * Reads a varint as a signed 64 bit value\n */\n int64() {\n return this.readLongVarint().toBigInt();\n }\n /**\n * Reads a varint as a signed 64 bit value returned as a possibly unsafe\n * JavaScript number\n */\n int64Number() {\n return this.readLongVarint().toNumber();\n }\n /**\n * Reads a varint as a signed 64 bit value returned as a string\n */\n int64String() {\n return this.readLongVarint().toString();\n }\n /**\n * Reads a varint as an unsigned 64 bit value\n */\n uint64() {\n return this.readLongVarint().toBigInt(true);\n }\n /**\n * Reads a varint as an unsigned 64 bit value returned as a possibly unsafe\n * JavaScript number\n */\n uint64Number() {\n const value = decodeUint8Array(this.buf, this.pos);\n this.pos += encodingLength(value);\n return value;\n }\n /**\n * Reads a varint as an unsigned 64 bit value returned as a string\n */\n uint64String() {\n return this.readLongVarint().toString(true);\n }\n /**\n * Reads a zig-zag encoded varint as a signed 64 bit value\n */\n sint64() {\n return this.readLongVarint().zzDecode().toBigInt();\n }\n /**\n * Reads a zig-zag encoded varint as a signed 64 bit value returned as a\n * possibly unsafe JavaScript number\n */\n sint64Number() {\n return this.readLongVarint().zzDecode().toNumber();\n }\n /**\n * Reads a zig-zag encoded varint as a signed 64 bit value returned as a\n * string\n */\n sint64String() {\n return this.readLongVarint().zzDecode().toString();\n }\n /**\n * Reads fixed 64 bits\n */\n fixed64() {\n return this.readFixed64().toBigInt();\n }\n /**\n * Reads fixed 64 bits returned as a possibly unsafe JavaScript number\n */\n fixed64Number() {\n return this.readFixed64().toNumber();\n }\n /**\n * Reads fixed 64 bits returned as a string\n */\n fixed64String() {\n return this.readFixed64().toString();\n }\n /**\n * Reads zig-zag encoded fixed 64 bits\n */\n sfixed64() {\n return this.readFixed64().toBigInt();\n }\n /**\n * Reads zig-zag encoded fixed 64 bits returned as a possibly unsafe\n * JavaScript number\n */\n sfixed64Number() {\n return this.readFixed64().toNumber();\n }\n /**\n * Reads zig-zag encoded fixed 64 bits returned as a string\n */\n sfixed64String() {\n return this.readFixed64().toString();\n }\n}\nexport function createReader(buf) {\n return new Uint8ArrayReader(buf instanceof Uint8Array ? buf : buf.subarray());\n}\n//# sourceMappingURL=reader.js.map","import { createReader } from './utils/reader.js';\nexport function decodeMessage(buf, codec, opts) {\n const reader = createReader(buf);\n return codec.decode(reader, undefined, opts);\n}\n//# sourceMappingURL=decode.js.map","import { allocUnsafe } from 'uint8arrays/alloc';\n/**\n * A general purpose buffer pool\n */\nexport default function pool(size) {\n const SIZE = size ?? 8192;\n const MAX = SIZE >>> 1;\n let slab;\n let offset = SIZE;\n return function poolAlloc(size) {\n if (size < 1 || size > MAX) {\n return allocUnsafe(size);\n }\n if (offset + size > SIZE) {\n slab = allocUnsafe(SIZE);\n offset = 0;\n }\n const buf = slab.subarray(offset, offset += size);\n if ((offset & 7) !== 0) {\n // align to 32 bit\n offset = (offset | 7) + 1;\n }\n return buf;\n };\n}\n//# sourceMappingURL=pool.js.map","import { encodeUint8Array, encodingLength } from 'uint8-varint';\nimport { allocUnsafe } from 'uint8arrays/alloc';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { writeFloatLE, writeDoubleLE } from './float.js';\nimport { LongBits } from './longbits.js';\nimport pool from './pool.js';\nimport * as utf8 from './utf8.js';\n/**\n * Constructs a new writer operation instance.\n *\n * @classdesc Scheduled writer operation\n */\nclass Op {\n /**\n * Function to call\n */\n fn;\n /**\n * Value byte length\n */\n len;\n /**\n * Next operation\n */\n next;\n /**\n * Value to write\n */\n val;\n constructor(fn, len, val) {\n this.fn = fn;\n this.len = len;\n this.next = undefined;\n this.val = val; // type varies\n }\n}\n/* istanbul ignore next */\nfunction noop() { } // eslint-disable-line no-empty-function\n/**\n * Constructs a new writer state instance\n */\nclass State {\n /**\n * Current head\n */\n head;\n /**\n * Current tail\n */\n tail;\n /**\n * Current buffer length\n */\n len;\n /**\n * Next state\n */\n next;\n constructor(writer) {\n this.head = writer.head;\n this.tail = writer.tail;\n this.len = writer.len;\n this.next = writer.states;\n }\n}\nconst bufferPool = pool();\n/**\n * Allocates a buffer of the specified size\n */\nfunction alloc(size) {\n if (globalThis.Buffer != null) {\n return allocUnsafe(size);\n }\n return bufferPool(size);\n}\n/**\n * When a value is written, the writer calculates its byte length and puts it into a linked\n * list of operations to perform when finish() is called. This both allows us to allocate\n * buffers of the exact required size and reduces the amount of work we have to do compared\n * to first calculating over objects and then encoding over objects. In our case, the encoding\n * part is just a linked list walk calling operations with already prepared values.\n */\nclass Uint8ArrayWriter {\n /**\n * Current length\n */\n len;\n /**\n * Operations head\n */\n head;\n /**\n * Operations tail\n */\n tail;\n /**\n * Linked forked states\n */\n states;\n constructor() {\n this.len = 0;\n this.head = new Op(noop, 0, 0);\n this.tail = this.head;\n this.states = null;\n }\n /**\n * Pushes a new operation to the queue\n */\n _push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n }\n /**\n * Writes an unsigned 32 bit value as a varint\n */\n uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp((value = value >>> 0) <\n 128\n ? 1\n : value < 16384\n ? 2\n : value < 2097152\n ? 3\n : value < 268435456\n ? 4\n : 5, value)).len;\n return this;\n }\n /**\n * Writes a signed 32 bit value as a varint`\n */\n int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n }\n /**\n * Writes a 32 bit value as a varint, zig-zag encoded\n */\n sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n }\n /**\n * Writes an unsigned 64 bit value as a varint\n */\n uint64(value) {\n const bits = LongBits.fromBigInt(value);\n return this._push(writeVarint64, bits.length(), bits);\n }\n /**\n * Writes an unsigned 64 bit value as a varint\n */\n uint64Number(value) {\n return this._push(encodeUint8Array, encodingLength(value), value);\n }\n /**\n * Writes an unsigned 64 bit value as a varint\n */\n uint64String(value) {\n return this.uint64(BigInt(value));\n }\n /**\n * Writes a signed 64 bit value as a varint\n */\n int64(value) {\n return this.uint64(value);\n }\n /**\n * Writes a signed 64 bit value as a varint\n */\n int64Number(value) {\n return this.uint64Number(value);\n }\n /**\n * Writes a signed 64 bit value as a varint\n */\n int64String(value) {\n return this.uint64String(value);\n }\n /**\n * Writes a signed 64 bit value as a varint, zig-zag encoded\n */\n sint64(value) {\n const bits = LongBits.fromBigInt(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n }\n /**\n * Writes a signed 64 bit value as a varint, zig-zag encoded\n */\n sint64Number(value) {\n const bits = LongBits.fromNumber(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n }\n /**\n * Writes a signed 64 bit value as a varint, zig-zag encoded\n */\n sint64String(value) {\n return this.sint64(BigInt(value));\n }\n /**\n * Writes a boolish value as a varint\n */\n bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n }\n /**\n * Writes an unsigned 32 bit value as fixed 32 bits\n */\n fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n }\n /**\n * Writes a signed 32 bit value as fixed 32 bits\n */\n sfixed32(value) {\n return this.fixed32(value);\n }\n /**\n * Writes an unsigned 64 bit value as fixed 64 bits\n */\n fixed64(value) {\n const bits = LongBits.fromBigInt(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n }\n /**\n * Writes an unsigned 64 bit value as fixed 64 bits\n */\n fixed64Number(value) {\n const bits = LongBits.fromNumber(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n }\n /**\n * Writes an unsigned 64 bit value as fixed 64 bits\n */\n fixed64String(value) {\n return this.fixed64(BigInt(value));\n }\n /**\n * Writes a signed 64 bit value as fixed 64 bits\n */\n sfixed64(value) {\n return this.fixed64(value);\n }\n /**\n * Writes a signed 64 bit value as fixed 64 bits\n */\n sfixed64Number(value) {\n return this.fixed64Number(value);\n }\n /**\n * Writes a signed 64 bit value as fixed 64 bits\n */\n sfixed64String(value) {\n return this.fixed64String(value);\n }\n /**\n * Writes a float (32 bit)\n */\n float(value) {\n return this._push(writeFloatLE, 4, value);\n }\n /**\n * Writes a double (64 bit float).\n *\n * @function\n * @param {number} value - Value to write\n * @returns {Writer} `this`\n */\n double(value) {\n return this._push(writeDoubleLE, 8, value);\n }\n /**\n * Writes a sequence of bytes\n */\n bytes(value) {\n const len = value.length >>> 0;\n if (len === 0) {\n return this._push(writeByte, 1, 0);\n }\n return this.uint32(len)._push(writeBytes, len, value);\n }\n /**\n * Writes a string\n */\n string(value) {\n const len = utf8.length(value);\n return len !== 0\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n }\n /**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n */\n fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n }\n /**\n * Resets this instance to the last state\n */\n reset() {\n if (this.states != null) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n }\n else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n }\n /**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n */\n ldelim() {\n const head = this.head;\n const tail = this.tail;\n const len = this.len;\n this.reset().uint32(len);\n if (len !== 0) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n }\n /**\n * Finishes the write operation\n */\n finish() {\n let head = this.head.next; // skip noop\n const buf = alloc(this.len);\n let pos = 0;\n while (head != null) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n }\n}\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n/**\n * Constructs a new varint writer operation instance.\n *\n * @classdesc Scheduled varint writer operation\n */\nclass VarintOp extends Op {\n next;\n constructor(len, val) {\n super(writeVarint32, len, val);\n this.next = undefined;\n }\n}\nfunction writeVarint64(val, buf, pos) {\n while (val.hi !== 0) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\nfunction writeFixed32(val, buf, pos) {\n buf[pos] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\nfunction writeBytes(val, buf, pos) {\n buf.set(val, pos);\n}\nif (globalThis.Buffer != null) {\n Uint8ArrayWriter.prototype.bytes = function (value) {\n const len = value.length >>> 0;\n this.uint32(len);\n if (len > 0) {\n this._push(writeBytesBuffer, len, value);\n }\n return this;\n };\n Uint8ArrayWriter.prototype.string = function (value) {\n const len = globalThis.Buffer.byteLength(value);\n this.uint32(len);\n if (len > 0) {\n this._push(writeStringBuffer, len, value);\n }\n return this;\n };\n}\nfunction writeBytesBuffer(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n}\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) {\n // plain js is faster for short strings (probably due to redundant assertions)\n utf8.write(val, buf, pos);\n // @ts-expect-error buf isn't a Uint8Array?\n }\n else if (buf.utf8Write != null) {\n // @ts-expect-error buf isn't a Uint8Array?\n buf.utf8Write(val, pos);\n }\n else {\n buf.set(uint8ArrayFromString(val), pos);\n }\n}\n/**\n * Creates a new writer\n */\nexport function createWriter() {\n return new Uint8ArrayWriter();\n}\n//# sourceMappingURL=writer.js.map","import { createWriter } from './utils/writer.js';\nexport function encodeMessage(message, codec) {\n const w = createWriter();\n codec.encode(message, w, {\n lengthDelimited: false\n });\n return w.finish();\n}\n//# sourceMappingURL=encode.js.map","// https://developers.google.com/protocol-buffers/docs/encoding#structure\nexport var CODEC_TYPES;\n(function (CODEC_TYPES) {\n CODEC_TYPES[CODEC_TYPES[\"VARINT\"] = 0] = \"VARINT\";\n CODEC_TYPES[CODEC_TYPES[\"BIT64\"] = 1] = \"BIT64\";\n CODEC_TYPES[CODEC_TYPES[\"LENGTH_DELIMITED\"] = 2] = \"LENGTH_DELIMITED\";\n CODEC_TYPES[CODEC_TYPES[\"START_GROUP\"] = 3] = \"START_GROUP\";\n CODEC_TYPES[CODEC_TYPES[\"END_GROUP\"] = 4] = \"END_GROUP\";\n CODEC_TYPES[CODEC_TYPES[\"BIT32\"] = 5] = \"BIT32\";\n})(CODEC_TYPES || (CODEC_TYPES = {}));\nexport function createCodec(name, type, encode, decode) {\n return {\n name,\n type,\n encode,\n decode\n };\n}\n//# sourceMappingURL=codec.js.map","import { createCodec, CODEC_TYPES } from '../codec.js';\nexport function enumeration(v) {\n function findValue(val) {\n // Use the reverse mapping to look up the enum key for the stored value\n // https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings\n if (v[val.toString()] == null) {\n throw new Error('Invalid enum value');\n }\n return v[val];\n }\n const encode = function enumEncode(val, writer) {\n const enumValue = findValue(val);\n writer.int32(enumValue);\n };\n const decode = function enumDecode(reader) {\n const val = reader.int32();\n return findValue(val);\n };\n // @ts-expect-error yeah yeah\n return createCodec('enum', CODEC_TYPES.VARINT, encode, decode);\n}\n//# sourceMappingURL=enum.js.map","import { createCodec, CODEC_TYPES } from '../codec.js';\nexport function message(encode, decode) {\n return createCodec('message', CODEC_TYPES.LENGTH_DELIMITED, encode, decode);\n}\n//# sourceMappingURL=message.js.map","/**\n * @packageDocumentation\n *\n * This module contains serialization/deserialization code used when encoding/decoding protobufs.\n *\n * It should be declared as a dependency of your project:\n *\n * ```console\n * npm i protons-runtime\n * ```\n */\nexport { decodeMessage } from './decode.js';\nexport { encodeMessage } from './encode.js';\nexport { enumeration } from './codecs/enum.js';\nexport { message } from './codecs/message.js';\nexport { createReader as reader } from './utils/reader.js';\nexport { createWriter as writer } from './utils/writer.js';\n/**\n * This will be removed in a future release\n *\n * @deprecated\n */\nexport class CodeError extends Error {\n code;\n constructor(message, code) {\n super(message);\n this.code = code;\n }\n}\n/**\n * Thrown when a repeated field has too many elements\n */\nexport class MaxLengthError extends Error {\n /**\n * This will be removed in a future release\n *\n * @deprecated use the `.name` property instead\n */\n code = 'ERR_MAX_LENGTH';\n name = 'MaxLengthError';\n}\n/**\n * Thrown when a map has too many elements\n */\nexport class MaxSizeError extends Error {\n /**\n * This will be removed in a future release\n *\n * @deprecated use the `.name` property instead\n */\n code = 'ERR_MAX_SIZE';\n name = 'MaxSizeError';\n}\nexport class ParseError extends Error {\n /**\n * This will be removed in a future release\n *\n * @deprecated use the `.name` property instead\n */\n code = 'ERR_PARSE_ERROR';\n name = 'ParseError';\n}\nexport class NoMessagesFoundError extends Error {\n /**\n * This will be removed in a future release\n *\n * @deprecated use the `.name` property instead\n */\n code = 'ERR_NO_MESSAGES_FOUND';\n name = 'NoMessagesFoundError';\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var KeyType;\n(function (KeyType) {\n KeyType[\"RSA\"] = \"RSA\";\n KeyType[\"Ed25519\"] = \"Ed25519\";\n KeyType[\"Secp256k1\"] = \"Secp256k1\";\n})(KeyType || (KeyType = {}));\nvar __KeyTypeValues;\n(function (__KeyTypeValues) {\n __KeyTypeValues[__KeyTypeValues[\"RSA\"] = 0] = \"RSA\";\n __KeyTypeValues[__KeyTypeValues[\"Ed25519\"] = 1] = \"Ed25519\";\n __KeyTypeValues[__KeyTypeValues[\"Secp256k1\"] = 2] = \"Secp256k1\";\n})(__KeyTypeValues || (__KeyTypeValues = {}));\n(function (KeyType) {\n KeyType.codec = () => {\n return enumeration(__KeyTypeValues);\n };\n})(KeyType || (KeyType = {}));\nexport var PublicKey;\n(function (PublicKey) {\n let _codec;\n PublicKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PublicKey.encode = (obj) => {\n return encodeMessage(obj, PublicKey.codec());\n };\n PublicKey.decode = (buf) => {\n return decodeMessage(buf, PublicKey.codec());\n };\n})(PublicKey || (PublicKey = {}));\nexport var PrivateKey;\n(function (PrivateKey) {\n let _codec;\n PrivateKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PrivateKey.encode = (obj) => {\n return encodeMessage(obj, PrivateKey.codec());\n };\n PrivateKey.decode = (buf) => {\n return decodeMessage(buf, PrivateKey.codec());\n };\n})(PrivateKey || (PrivateKey = {}));\n//# sourceMappingURL=keys.js.map","import { CodeError } from '@libp2p/interface';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { isPromise } from '../util.js';\nimport * as crypto from './ed25519.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nexport class Ed25519PublicKey {\n _key;\n constructor(key) {\n this._key = ensureKey(key, crypto.publicKeyLength);\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class Ed25519PrivateKey {\n _key;\n _publicKey;\n // key - 64 byte Uint8Array containing private key\n // publicKey - 32 byte Uint8Array containing public key\n constructor(key, publicKey) {\n this._key = ensureKey(key, crypto.privateKeyLength);\n this._publicKey = ensureKey(publicKey, crypto.publicKeyLength);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Ed25519PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the identity multihash containing its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n *\n * @returns {Promise}\n */\n async id() {\n const encoding = identity.digest(this.public.bytes);\n return base58btc.encode(encoding.bytes).substring(1);\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalEd25519PrivateKey(bytes) {\n // Try the old, redundant public key version\n if (bytes.length > crypto.privateKeyLength) {\n bytes = ensureKey(bytes, crypto.privateKeyLength + crypto.publicKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.privateKeyLength, bytes.length);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n }\n bytes = ensureKey(bytes, crypto.privateKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.publicKeyLength);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n}\nexport function unmarshalEd25519PublicKey(bytes) {\n bytes = ensureKey(bytes, crypto.publicKeyLength);\n return new Ed25519PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const { privateKey, publicKey } = crypto.generateKey();\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nexport async function generateKeyPairFromSeed(seed) {\n const { privateKey, publicKey } = crypto.generateKeyFromSeed(seed);\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nfunction ensureKey(key, length) {\n key = Uint8Array.from(key ?? []);\n if (key.length !== length) {\n throw new CodeError(`Key must be a Uint8Array of length ${length}, got ${key.length}`, 'ERR_INVALID_KEY_TYPE');\n }\n return key;\n}\n//# sourceMappingURL=ed25519-class.js.map","import { CodeError } from '@libp2p/interface';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { base64urlToBuffer } from '../util.js';\nimport webcrypto from '../webcrypto.js';\nconst bits = {\n 'P-256': 256,\n 'P-384': 384,\n 'P-521': 521\n};\nconst curveTypes = Object.keys(bits);\nconst names = curveTypes.join(' / ');\nexport async function generateEphmeralKeyPair(curve) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'ECDH',\n namedCurve: curve\n }, true, ['deriveBits']);\n // forcePrivate is used for testing only\n const genSharedKey = async (theirPub, forcePrivate) => {\n let privateKey;\n if (forcePrivate != null) {\n privateKey = await webcrypto.get().subtle.importKey('jwk', unmarshalPrivateKey(curve, forcePrivate), {\n name: 'ECDH',\n namedCurve: curve\n }, false, ['deriveBits']);\n }\n else {\n privateKey = pair.privateKey;\n }\n const key = await webcrypto.get().subtle.importKey('jwk', unmarshalPublicKey(curve, theirPub), {\n name: 'ECDH',\n namedCurve: curve\n }, false, []);\n const buffer = await webcrypto.get().subtle.deriveBits({\n name: 'ECDH',\n // @ts-expect-error namedCurve is missing from the types\n namedCurve: curve,\n public: key\n }, privateKey, bits[curve]);\n return new Uint8Array(buffer, 0, buffer.byteLength);\n };\n const publicKey = await webcrypto.get().subtle.exportKey('jwk', pair.publicKey);\n const ecdhKey = {\n key: marshalPublicKey(publicKey),\n genSharedKey\n };\n return ecdhKey;\n}\nconst curveLengths = {\n 'P-256': 32,\n 'P-384': 48,\n 'P-521': 66\n};\n// Marshal converts a jwk encoded ECDH public key into the\n// form specified in section 4.3.6 of ANSI X9.62. (This is the format\n// go-ipfs uses)\nfunction marshalPublicKey(jwk) {\n if (jwk.crv == null || jwk.x == null || jwk.y == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n if (jwk.crv !== 'P-256' && jwk.crv !== 'P-384' && jwk.crv !== 'P-521') {\n throw new CodeError(`Unknown curve: ${jwk.crv}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[jwk.crv];\n return uint8ArrayConcat([\n Uint8Array.from([4]), // uncompressed point\n base64urlToBuffer(jwk.x, byteLen),\n base64urlToBuffer(jwk.y, byteLen)\n ], 1 + byteLen * 2);\n}\n// Unmarshal converts a point, serialized by Marshal, into an jwk encoded key\nfunction unmarshalPublicKey(curve, key) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[curve];\n if (!uint8ArrayEquals(key.subarray(0, 1), Uint8Array.from([4]))) {\n throw new CodeError('Cannot unmarshal public key - invalid key format', 'ERR_INVALID_KEY_FORMAT');\n }\n return {\n kty: 'EC',\n crv: curve,\n x: uint8ArrayToString(key.subarray(1, byteLen + 1), 'base64url'),\n y: uint8ArrayToString(key.subarray(1 + byteLen), 'base64url'),\n ext: true\n };\n}\nconst unmarshalPrivateKey = (curve, key) => ({\n ...unmarshalPublicKey(curve, key.public),\n d: uint8ArrayToString(key.private, 'base64url')\n});\n//# sourceMappingURL=ecdh-browser.js.map","/**\n * Secure Hash Algorithm with a 1024-bit block size implementation.\n *\n * This includes: SHA-512, SHA-384, SHA-512/224, and SHA-512/256. For\n * SHA-256 (block size 512 bits), see sha256.js.\n *\n * See FIPS 180-4 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha512 = module.exports = forge.sha512 = forge.sha512 || {};\n\n// SHA-512\nforge.md.sha512 = forge.md.algorithms.sha512 = sha512;\n\n// SHA-384\nvar sha384 = forge.sha384 = forge.sha512.sha384 = forge.sha512.sha384 || {};\nsha384.create = function() {\n return sha512.create('SHA-384');\n};\nforge.md.sha384 = forge.md.algorithms.sha384 = sha384;\n\n// SHA-512/256\nforge.sha512.sha256 = forge.sha512.sha256 || {\n create: function() {\n return sha512.create('SHA-512/256');\n }\n};\nforge.md['sha512/256'] = forge.md.algorithms['sha512/256'] =\n forge.sha512.sha256;\n\n// SHA-512/224\nforge.sha512.sha224 = forge.sha512.sha224 || {\n create: function() {\n return sha512.create('SHA-512/224');\n }\n};\nforge.md['sha512/224'] = forge.md.algorithms['sha512/224'] =\n forge.sha512.sha224;\n\n/**\n * Creates a SHA-2 message digest object.\n *\n * @param algorithm the algorithm to use (SHA-512, SHA-384, SHA-512/224,\n * SHA-512/256).\n *\n * @return a message digest object.\n */\nsha512.create = function(algorithm) {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n if(typeof algorithm === 'undefined') {\n algorithm = 'SHA-512';\n }\n\n if(!(algorithm in _states)) {\n throw new Error('Invalid SHA-512 algorithm: ' + algorithm);\n }\n\n // SHA-512 state contains eight 64-bit integers (each as two 32-bit ints)\n var _state = _states[algorithm];\n var _h = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for 64-bit word storage\n var _w = new Array(80);\n for(var wi = 0; wi < 80; ++wi) {\n _w[wi] = new Array(2);\n }\n\n // determine digest length by algorithm name (default)\n var digestLength = 64;\n switch(algorithm) {\n case 'SHA-384':\n digestLength = 48;\n break;\n case 'SHA-512/256':\n digestLength = 32;\n break;\n case 'SHA-512/224':\n digestLength = 28;\n break;\n }\n\n // message digest object\n var md = {\n // SHA-512 => sha512\n algorithm: algorithm.replace('-', '').toLowerCase(),\n blockLength: 128,\n digestLength: digestLength,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 16\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength128 for backwards-compatibility)\n md.fullMessageLength = md.messageLength128 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _h = new Array(_state.length);\n for(var i = 0; i < _state.length; ++i) {\n _h[i] = _state[i].slice(0);\n }\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_h, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-512 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 896 mod 1024. In other words,\n the data to be digested must be a multiple of 1024 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 16 bytes (128\n bits), that means that the last segment of the data must have 112 bytes\n (896 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 896 mod 1024 because\n 1024 - 128 = 896.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 896 mod 1024, then 1024 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var h = new Array(_h.length);\n for(var i = 0; i < _h.length; ++i) {\n h[i] = _h[i].slice(0);\n }\n _update(h, _w, finalBlock);\n var rval = forge.util.createBuffer();\n var hlen;\n if(algorithm === 'SHA-512') {\n hlen = h.length;\n } else if(algorithm === 'SHA-384') {\n hlen = h.length - 2;\n } else {\n hlen = h.length - 4;\n }\n for(var i = 0; i < hlen; ++i) {\n rval.putInt32(h[i][0]);\n if(i !== hlen - 1 || algorithm !== 'SHA-512/224') {\n rval.putInt32(h[i][1]);\n }\n }\n return rval;\n };\n\n return md;\n};\n\n// sha-512 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n// table of constants\nvar _k = null;\n\n// initial hash states\nvar _states = null;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 128);\n\n // create K table for SHA-512\n _k = [\n [0x428a2f98, 0xd728ae22], [0x71374491, 0x23ef65cd],\n [0xb5c0fbcf, 0xec4d3b2f], [0xe9b5dba5, 0x8189dbbc],\n [0x3956c25b, 0xf348b538], [0x59f111f1, 0xb605d019],\n [0x923f82a4, 0xaf194f9b], [0xab1c5ed5, 0xda6d8118],\n [0xd807aa98, 0xa3030242], [0x12835b01, 0x45706fbe],\n [0x243185be, 0x4ee4b28c], [0x550c7dc3, 0xd5ffb4e2],\n [0x72be5d74, 0xf27b896f], [0x80deb1fe, 0x3b1696b1],\n [0x9bdc06a7, 0x25c71235], [0xc19bf174, 0xcf692694],\n [0xe49b69c1, 0x9ef14ad2], [0xefbe4786, 0x384f25e3],\n [0x0fc19dc6, 0x8b8cd5b5], [0x240ca1cc, 0x77ac9c65],\n [0x2de92c6f, 0x592b0275], [0x4a7484aa, 0x6ea6e483],\n [0x5cb0a9dc, 0xbd41fbd4], [0x76f988da, 0x831153b5],\n [0x983e5152, 0xee66dfab], [0xa831c66d, 0x2db43210],\n [0xb00327c8, 0x98fb213f], [0xbf597fc7, 0xbeef0ee4],\n [0xc6e00bf3, 0x3da88fc2], [0xd5a79147, 0x930aa725],\n [0x06ca6351, 0xe003826f], [0x14292967, 0x0a0e6e70],\n [0x27b70a85, 0x46d22ffc], [0x2e1b2138, 0x5c26c926],\n [0x4d2c6dfc, 0x5ac42aed], [0x53380d13, 0x9d95b3df],\n [0x650a7354, 0x8baf63de], [0x766a0abb, 0x3c77b2a8],\n [0x81c2c92e, 0x47edaee6], [0x92722c85, 0x1482353b],\n [0xa2bfe8a1, 0x4cf10364], [0xa81a664b, 0xbc423001],\n [0xc24b8b70, 0xd0f89791], [0xc76c51a3, 0x0654be30],\n [0xd192e819, 0xd6ef5218], [0xd6990624, 0x5565a910],\n [0xf40e3585, 0x5771202a], [0x106aa070, 0x32bbd1b8],\n [0x19a4c116, 0xb8d2d0c8], [0x1e376c08, 0x5141ab53],\n [0x2748774c, 0xdf8eeb99], [0x34b0bcb5, 0xe19b48a8],\n [0x391c0cb3, 0xc5c95a63], [0x4ed8aa4a, 0xe3418acb],\n [0x5b9cca4f, 0x7763e373], [0x682e6ff3, 0xd6b2b8a3],\n [0x748f82ee, 0x5defb2fc], [0x78a5636f, 0x43172f60],\n [0x84c87814, 0xa1f0ab72], [0x8cc70208, 0x1a6439ec],\n [0x90befffa, 0x23631e28], [0xa4506ceb, 0xde82bde9],\n [0xbef9a3f7, 0xb2c67915], [0xc67178f2, 0xe372532b],\n [0xca273ece, 0xea26619c], [0xd186b8c7, 0x21c0c207],\n [0xeada7dd6, 0xcde0eb1e], [0xf57d4f7f, 0xee6ed178],\n [0x06f067aa, 0x72176fba], [0x0a637dc5, 0xa2c898a6],\n [0x113f9804, 0xbef90dae], [0x1b710b35, 0x131c471b],\n [0x28db77f5, 0x23047d84], [0x32caab7b, 0x40c72493],\n [0x3c9ebe0a, 0x15c9bebc], [0x431d67c4, 0x9c100d4c],\n [0x4cc5d4be, 0xcb3e42b6], [0x597f299c, 0xfc657e2a],\n [0x5fcb6fab, 0x3ad6faec], [0x6c44198c, 0x4a475817]\n ];\n\n // initial hash states\n _states = {};\n _states['SHA-512'] = [\n [0x6a09e667, 0xf3bcc908],\n [0xbb67ae85, 0x84caa73b],\n [0x3c6ef372, 0xfe94f82b],\n [0xa54ff53a, 0x5f1d36f1],\n [0x510e527f, 0xade682d1],\n [0x9b05688c, 0x2b3e6c1f],\n [0x1f83d9ab, 0xfb41bd6b],\n [0x5be0cd19, 0x137e2179]\n ];\n _states['SHA-384'] = [\n [0xcbbb9d5d, 0xc1059ed8],\n [0x629a292a, 0x367cd507],\n [0x9159015a, 0x3070dd17],\n [0x152fecd8, 0xf70e5939],\n [0x67332667, 0xffc00b31],\n [0x8eb44a87, 0x68581511],\n [0xdb0c2e0d, 0x64f98fa7],\n [0x47b5481d, 0xbefa4fa4]\n ];\n _states['SHA-512/256'] = [\n [0x22312194, 0xFC2BF72C],\n [0x9F555FA3, 0xC84C64C2],\n [0x2393B86B, 0x6F53B151],\n [0x96387719, 0x5940EABD],\n [0x96283EE2, 0xA88EFFE3],\n [0xBE5E1E25, 0x53863992],\n [0x2B0199FC, 0x2C85B8AA],\n [0x0EB72DDC, 0x81C52CA2]\n ];\n _states['SHA-512/224'] = [\n [0x8C3D37C8, 0x19544DA2],\n [0x73E19966, 0x89DCD4D6],\n [0x1DFAB7AE, 0x32FF9C82],\n [0x679DD514, 0x582F9FCF],\n [0x0F6D2B69, 0x7BD44DA8],\n [0x77E36F73, 0x04C48942],\n [0x3F9D85A8, 0x6A1D36C8],\n [0x1112E6AD, 0x91D692A1]\n ];\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-512 state with the given byte buffer.\n *\n * @param s the SHA-512 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (128 byte) chunks\n var t1_hi, t1_lo;\n var t2_hi, t2_lo;\n var s0_hi, s0_lo;\n var s1_hi, s1_lo;\n var ch_hi, ch_lo;\n var maj_hi, maj_lo;\n var a_hi, a_lo;\n var b_hi, b_lo;\n var c_hi, c_lo;\n var d_hi, d_lo;\n var e_hi, e_lo;\n var f_hi, f_lo;\n var g_hi, g_lo;\n var h_hi, h_lo;\n var i, hi, lo, w2, w7, w15, w16;\n var len = bytes.length();\n while(len >= 128) {\n // the w array will be populated with sixteen 64-bit big-endian words\n // and then extended into 64 64-bit words according to SHA-512\n for(i = 0; i < 16; ++i) {\n w[i][0] = bytes.getInt32() >>> 0;\n w[i][1] = bytes.getInt32() >>> 0;\n }\n for(; i < 80; ++i) {\n // for word 2 words ago: ROTR 19(x) ^ ROTR 61(x) ^ SHR 6(x)\n w2 = w[i - 2];\n hi = w2[0];\n lo = w2[1];\n\n // high bits\n t1_hi = (\n ((hi >>> 19) | (lo << 13)) ^ // ROTR 19\n ((lo >>> 29) | (hi << 3)) ^ // ROTR 61/(swap + ROTR 29)\n (hi >>> 6)) >>> 0; // SHR 6\n // low bits\n t1_lo = (\n ((hi << 13) | (lo >>> 19)) ^ // ROTR 19\n ((lo << 3) | (hi >>> 29)) ^ // ROTR 61/(swap + ROTR 29)\n ((hi << 26) | (lo >>> 6))) >>> 0; // SHR 6\n\n // for word 15 words ago: ROTR 1(x) ^ ROTR 8(x) ^ SHR 7(x)\n w15 = w[i - 15];\n hi = w15[0];\n lo = w15[1];\n\n // high bits\n t2_hi = (\n ((hi >>> 1) | (lo << 31)) ^ // ROTR 1\n ((hi >>> 8) | (lo << 24)) ^ // ROTR 8\n (hi >>> 7)) >>> 0; // SHR 7\n // low bits\n t2_lo = (\n ((hi << 31) | (lo >>> 1)) ^ // ROTR 1\n ((hi << 24) | (lo >>> 8)) ^ // ROTR 8\n ((hi << 25) | (lo >>> 7))) >>> 0; // SHR 7\n\n // sum(t1, word 7 ago, t2, word 16 ago) modulo 2^64 (carry lo overflow)\n w7 = w[i - 7];\n w16 = w[i - 16];\n lo = (t1_lo + w7[1] + t2_lo + w16[1]);\n w[i][0] = (t1_hi + w7[0] + t2_hi + w16[0] +\n ((lo / 0x100000000) >>> 0)) >>> 0;\n w[i][1] = lo >>> 0;\n }\n\n // initialize hash value for this chunk\n a_hi = s[0][0];\n a_lo = s[0][1];\n b_hi = s[1][0];\n b_lo = s[1][1];\n c_hi = s[2][0];\n c_lo = s[2][1];\n d_hi = s[3][0];\n d_lo = s[3][1];\n e_hi = s[4][0];\n e_lo = s[4][1];\n f_hi = s[5][0];\n f_lo = s[5][1];\n g_hi = s[6][0];\n g_lo = s[6][1];\n h_hi = s[7][0];\n h_lo = s[7][1];\n\n // round function\n for(i = 0; i < 80; ++i) {\n // Sum1(e) = ROTR 14(e) ^ ROTR 18(e) ^ ROTR 41(e)\n s1_hi = (\n ((e_hi >>> 14) | (e_lo << 18)) ^ // ROTR 14\n ((e_hi >>> 18) | (e_lo << 14)) ^ // ROTR 18\n ((e_lo >>> 9) | (e_hi << 23))) >>> 0; // ROTR 41/(swap + ROTR 9)\n s1_lo = (\n ((e_hi << 18) | (e_lo >>> 14)) ^ // ROTR 14\n ((e_hi << 14) | (e_lo >>> 18)) ^ // ROTR 18\n ((e_lo << 23) | (e_hi >>> 9))) >>> 0; // ROTR 41/(swap + ROTR 9)\n\n // Ch(e, f, g) (optimized the same way as SHA-1)\n ch_hi = (g_hi ^ (e_hi & (f_hi ^ g_hi))) >>> 0;\n ch_lo = (g_lo ^ (e_lo & (f_lo ^ g_lo))) >>> 0;\n\n // Sum0(a) = ROTR 28(a) ^ ROTR 34(a) ^ ROTR 39(a)\n s0_hi = (\n ((a_hi >>> 28) | (a_lo << 4)) ^ // ROTR 28\n ((a_lo >>> 2) | (a_hi << 30)) ^ // ROTR 34/(swap + ROTR 2)\n ((a_lo >>> 7) | (a_hi << 25))) >>> 0; // ROTR 39/(swap + ROTR 7)\n s0_lo = (\n ((a_hi << 4) | (a_lo >>> 28)) ^ // ROTR 28\n ((a_lo << 30) | (a_hi >>> 2)) ^ // ROTR 34/(swap + ROTR 2)\n ((a_lo << 25) | (a_hi >>> 7))) >>> 0; // ROTR 39/(swap + ROTR 7)\n\n // Maj(a, b, c) (optimized the same way as SHA-1)\n maj_hi = ((a_hi & b_hi) | (c_hi & (a_hi ^ b_hi))) >>> 0;\n maj_lo = ((a_lo & b_lo) | (c_lo & (a_lo ^ b_lo))) >>> 0;\n\n // main algorithm\n // t1 = (h + s1 + ch + _k[i] + _w[i]) modulo 2^64 (carry lo overflow)\n lo = (h_lo + s1_lo + ch_lo + _k[i][1] + w[i][1]);\n t1_hi = (h_hi + s1_hi + ch_hi + _k[i][0] + w[i][0] +\n ((lo / 0x100000000) >>> 0)) >>> 0;\n t1_lo = lo >>> 0;\n\n // t2 = s0 + maj modulo 2^64 (carry lo overflow)\n lo = s0_lo + maj_lo;\n t2_hi = (s0_hi + maj_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n t2_lo = lo >>> 0;\n\n h_hi = g_hi;\n h_lo = g_lo;\n\n g_hi = f_hi;\n g_lo = f_lo;\n\n f_hi = e_hi;\n f_lo = e_lo;\n\n // e = (d + t1) modulo 2^64 (carry lo overflow)\n lo = d_lo + t1_lo;\n e_hi = (d_hi + t1_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n e_lo = lo >>> 0;\n\n d_hi = c_hi;\n d_lo = c_lo;\n\n c_hi = b_hi;\n c_lo = b_lo;\n\n b_hi = a_hi;\n b_lo = a_lo;\n\n // a = (t1 + t2) modulo 2^64 (carry lo overflow)\n lo = t1_lo + t2_lo;\n a_hi = (t1_hi + t2_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n a_lo = lo >>> 0;\n }\n\n // update hash state (additional modulo 2^64)\n lo = s[0][1] + a_lo;\n s[0][0] = (s[0][0] + a_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[0][1] = lo >>> 0;\n\n lo = s[1][1] + b_lo;\n s[1][0] = (s[1][0] + b_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[1][1] = lo >>> 0;\n\n lo = s[2][1] + c_lo;\n s[2][0] = (s[2][0] + c_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[2][1] = lo >>> 0;\n\n lo = s[3][1] + d_lo;\n s[3][0] = (s[3][0] + d_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[3][1] = lo >>> 0;\n\n lo = s[4][1] + e_lo;\n s[4][0] = (s[4][0] + e_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[4][1] = lo >>> 0;\n\n lo = s[5][1] + f_lo;\n s[5][0] = (s[5][0] + f_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[5][1] = lo >>> 0;\n\n lo = s[6][1] + g_lo;\n s[6][0] = (s[6][0] + g_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[6][1] = lo >>> 0;\n\n lo = s[7][1] + h_lo;\n s[7][0] = (s[7][0] + h_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[7][1] = lo >>> 0;\n\n len -= 128;\n }\n}\n","import { CodeError } from '@libp2p/interface';\nimport { randomBytes as randB } from '@noble/hashes/utils';\n/**\n * Generates a Uint8Array with length `number` populated by random bytes\n */\nexport default function randomBytes(length) {\n if (isNaN(length) || length <= 0) {\n throw new CodeError('random bytes length must be a Number bigger than 0', 'ERR_INVALID_LENGTH');\n }\n return randB(length);\n}\n//# sourceMappingURL=random-bytes.js.map","import 'node-forge/lib/rsa.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { base64urlToBigInteger } from '../util.js';\nfunction convert(key, types) {\n return types.map(t => base64urlToBigInteger(key[t]));\n}\nexport function jwk2priv(key) {\n return forge.pki.setRsaPrivateKey(...convert(key, ['n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi']));\n}\nexport function jwk2pub(key) {\n return forge.pki.setRsaPublicKey(...convert(key, ['n', 'e']));\n}\n//# sourceMappingURL=jwk2pem.js.map","import 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/rsa.js';\nimport { CodeError } from '@libp2p/interface';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { bigIntegerToUintBase64url, base64urlToBigInteger } from './../util.js';\n// Convert a PKCS#1 in ASN1 DER format to a JWK key\nexport function pkcs1ToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n // https://tools.ietf.org/html/rfc7518#section-6.3.1\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(privateKey.n),\n e: bigIntegerToUintBase64url(privateKey.e),\n d: bigIntegerToUintBase64url(privateKey.d),\n p: bigIntegerToUintBase64url(privateKey.p),\n q: bigIntegerToUintBase64url(privateKey.q),\n dp: bigIntegerToUintBase64url(privateKey.dP),\n dq: bigIntegerToUintBase64url(privateKey.dQ),\n qi: bigIntegerToUintBase64url(privateKey.qInv),\n alg: 'RS256'\n };\n}\n// Convert a JWK key into PKCS#1 in ASN1 DER format\nexport function jwkToPkcs1(jwk) {\n if (jwk.n == null || jwk.e == null || jwk.d == null || jwk.p == null || jwk.q == null || jwk.dp == null || jwk.dq == null || jwk.qi == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.privateKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e),\n d: base64urlToBigInteger(jwk.d),\n p: base64urlToBigInteger(jwk.p),\n q: base64urlToBigInteger(jwk.q),\n dP: base64urlToBigInteger(jwk.dp),\n dQ: base64urlToBigInteger(jwk.dq),\n qInv: base64urlToBigInteger(jwk.qi)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n// Convert a PKCIX in ASN1 DER format to a JWK key\nexport function pkixToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const publicKey = forge.pki.publicKeyFromAsn1(asn1);\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(publicKey.n),\n e: bigIntegerToUintBase64url(publicKey.e)\n };\n}\n// Convert a JWK key to PKCIX in ASN1 DER format\nexport function jwkToPkix(jwk) {\n if (jwk.n == null || jwk.e == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.publicKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n//# sourceMappingURL=rsa-utils.js.map","import { CodeError } from '@libp2p/interface';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport randomBytes from '../random-bytes.js';\nimport webcrypto from '../webcrypto.js';\nimport { jwk2pub, jwk2priv } from './jwk2pem.js';\nimport * as utils from './rsa-utils.js';\nexport { utils };\nexport async function generateKey(bits) {\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: 'SHA-256' }\n }, true, ['sign', 'verify']);\n const keys = await exportKey(pair);\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\n// Takes a jwk key\nexport async function unmarshalPrivateKey(key) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['sign']);\n const pair = [\n privateKey,\n await derivePublicFromPrivate(key)\n ];\n const keys = await exportKey({\n privateKey: pair[0],\n publicKey: pair[1]\n });\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\nexport { randomBytes as getRandomValues };\nexport async function hashAndSign(key, msg) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['sign']);\n const sig = await webcrypto.get().subtle.sign({ name: 'RSASSA-PKCS1-v1_5' }, privateKey, msg instanceof Uint8Array ? msg : msg.subarray());\n return new Uint8Array(sig, 0, sig.byteLength);\n}\nexport async function hashAndVerify(key, sig, msg) {\n const publicKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['verify']);\n return webcrypto.get().subtle.verify({ name: 'RSASSA-PKCS1-v1_5' }, publicKey, sig, msg instanceof Uint8Array ? msg : msg.subarray());\n}\nasync function exportKey(pair) {\n if (pair.privateKey == null || pair.publicKey == null) {\n throw new CodeError('Private and public key are required', 'ERR_INVALID_PARAMETERS');\n }\n return Promise.all([\n webcrypto.get().subtle.exportKey('jwk', pair.privateKey),\n webcrypto.get().subtle.exportKey('jwk', pair.publicKey)\n ]);\n}\nasync function derivePublicFromPrivate(jwKey) {\n return webcrypto.get().subtle.importKey('jwk', {\n kty: jwKey.kty,\n n: jwKey.n,\n e: jwKey.e\n }, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['verify']);\n}\n/*\n\nRSA encryption/decryption for the browser with webcrypto workaround\n\"bloody dark magic. webcrypto's why.\"\n\nExplanation:\n - Convert JWK to nodeForge\n - Convert msg Uint8Array to nodeForge buffer: ByteBuffer is a \"binary-string backed buffer\", so let's make our Uint8Array a binary string\n - Convert resulting nodeForge buffer to Uint8Array: it returns a binary string, turn that into a Uint8Array\n\n*/\nfunction convertKey(key, pub, msg, handle) {\n const fkey = pub ? jwk2pub(key) : jwk2priv(key);\n const fmsg = uint8ArrayToString(msg instanceof Uint8Array ? msg : msg.subarray(), 'ascii');\n const fomsg = handle(fmsg, fkey);\n return uint8ArrayFromString(fomsg, 'ascii');\n}\nexport function encrypt(key, msg) {\n return convertKey(key, true, msg, (msg, key) => key.encrypt(msg));\n}\nexport function decrypt(key, msg) {\n return convertKey(key, false, msg, (msg, key) => key.decrypt(msg));\n}\nexport function keySize(jwk) {\n if (jwk.kty !== 'RSA') {\n throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE');\n }\n else if (jwk.n == null) {\n throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS');\n }\n const bytes = uint8ArrayFromString(jwk.n, 'base64url');\n return bytes.length * 8;\n}\n//# sourceMappingURL=rsa-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport 'node-forge/lib/sha512.js';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nimport * as crypto from './rsa.js';\nexport const MAX_KEY_SIZE = 8192;\nexport class RsaPublicKey {\n _key;\n constructor(key) {\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.utils.jwkToPkix(this._key);\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n encrypt(bytes) {\n return crypto.encrypt(this._key, bytes);\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class RsaPrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey;\n }\n genSecret() {\n return crypto.getRandomValues(16);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n if (this._publicKey == null) {\n throw new CodeError('public key not provided', 'ERR_PUBKEY_NOT_PROVIDED');\n }\n return new RsaPublicKey(this._publicKey);\n }\n decrypt(bytes) {\n return crypto.decrypt(this._key, bytes);\n }\n marshal() {\n return crypto.utils.jwkToPkcs1(this._key);\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected PEM format\n */\n async export(password, format = 'pkcs-8') {\n if (format === 'pkcs-8') {\n const buffer = new forge.util.ByteBuffer(this.marshal());\n const asn1 = forge.asn1.fromDer(buffer);\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n const options = {\n algorithm: 'aes256',\n count: 10000,\n saltSize: 128 / 8,\n prfAlgorithm: 'sha512'\n };\n return forge.pki.encryptRsaPrivateKey(privateKey, password, options);\n }\n else if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport async function unmarshalRsaPrivateKey(bytes) {\n const jwk = crypto.utils.pkcs1ToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport function unmarshalRsaPublicKey(bytes) {\n const jwk = crypto.utils.pkixToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n return new RsaPublicKey(jwk);\n}\nexport async function fromJwk(jwk) {\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport async function generateKeyPair(bits) {\n if (bits > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.generateKey(bits);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\n//# sourceMappingURL=rsa-class.js.map","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state:\n// first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19\n// prettier-ignore\nconst SHA256_IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\n/**\n * SHA2-224 hash function\n */\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","import { hash as assertHash, bytes as assertBytes, exists as assertExists } from './_assert.js';\nimport { Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nexport class HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n assertExists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n assertExists(this);\n assertBytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Short Weierstrass curve. The formula is: y² = x³ + ax + b\nimport { validateBasic, wNAF, pippenger, } from './curve.js';\nimport * as mod from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes, memoized, abool } from './utils.js';\nfunction validateSigVerOpts(opts) {\n if (opts.lowS !== undefined)\n abool('lowS', opts.lowS);\n if (opts.prehash !== undefined)\n abool('prehash', opts.prehash);\n}\nfunction validatePointOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n a: 'field',\n b: 'field',\n }, {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n });\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('Endomorphism can only be defined for Koblitz curves that have a=0');\n }\n if (typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function') {\n throw new Error('Expected endomorphism with beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts });\n}\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n * [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER = {\n // asn.1 DER encoding utils\n Err: class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n },\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag, data) => {\n const { Err: E } = DER;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length & 1)\n throw new E('tlv.encode: unpadded data');\n const dataLen = data.length / 2;\n const len = ut.numberToHexUnpadded(dataLen);\n if ((len.length / 2) & 128)\n throw new E('tlv.encode: long form length too big');\n // length of length with long form flag\n const lenLen = dataLen > 127 ? ut.numberToHexUnpadded((len.length / 2) | 128) : '';\n return `${ut.numberToHexUnpadded(tag)}${lenLen}${len}${data}`;\n },\n // v - value, l - left bytes (unparsed)\n decode(tag, data) {\n const { Err: E } = DER;\n let pos = 0;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length < 2 || data[pos++] !== tag)\n throw new E('tlv.decode: wrong tlv');\n const first = data[pos++];\n const isLong = !!(first & 128); // First bit of first length byte is flag for short/long form\n let length = 0;\n if (!isLong)\n length = first;\n else {\n // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n const lenLen = first & 127;\n if (!lenLen)\n throw new E('tlv.decode(long): indefinite length not supported');\n if (lenLen > 4)\n throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n const lengthBytes = data.subarray(pos, pos + lenLen);\n if (lengthBytes.length !== lenLen)\n throw new E('tlv.decode: length bytes not complete');\n if (lengthBytes[0] === 0)\n throw new E('tlv.decode(long): zero leftmost byte');\n for (const b of lengthBytes)\n length = (length << 8) | b;\n pos += lenLen;\n if (length < 128)\n throw new E('tlv.decode(long): not minimal encoding');\n }\n const v = data.subarray(pos, pos + length);\n if (v.length !== length)\n throw new E('tlv.decode: wrong value length');\n return { v, l: data.subarray(pos + length) };\n },\n },\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n _int: {\n encode(num) {\n const { Err: E } = DER;\n if (num < _0n)\n throw new E('integer: negative integers are not allowed');\n let hex = ut.numberToHexUnpadded(num);\n // Pad with zero byte if negative flag is present\n if (Number.parseInt(hex[0], 16) & 0b1000)\n hex = '00' + hex;\n if (hex.length & 1)\n throw new E('unexpected assertion');\n return hex;\n },\n decode(data) {\n const { Err: E } = DER;\n if (data[0] & 128)\n throw new E('Invalid signature integer: negative');\n if (data[0] === 0x00 && !(data[1] & 128))\n throw new E('Invalid signature integer: unnecessary leading zero');\n return b2n(data);\n },\n },\n toSig(hex) {\n // parse DER signature\n const { Err: E, _int: int, _tlv: tlv } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n ut.abytes(data);\n const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n if (seqLeftBytes.length)\n throw new E('Invalid signature: left bytes after parsing');\n const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n if (sLeftBytes.length)\n throw new E('Invalid signature: left bytes after parsing');\n return { r: int.decode(rBytes), s: int.decode(sBytes) };\n },\n hexFromSig(sig) {\n const { _tlv: tlv, _int: int } = DER;\n const seq = `${tlv.encode(0x02, int.encode(sig.r))}${tlv.encode(0x02, int.encode(sig.s))}`;\n return tlv.encode(0x30, seq);\n },\n};\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\nexport function weierstrassPoints(opts) {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n const Fn = mod.Field(CURVE.n, CURVE.nBitLength);\n const toBytes = CURVE.toBytes ||\n ((_c, point, _isCompressed) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes = CURVE.fromBytes ||\n ((bytes) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x) {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num) {\n return ut.inRange(num, _1n, CURVE.n);\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key) {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n: N } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (ut.isBytes(key))\n key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length))\n throw new Error('Invalid key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n }\n catch (error) {\n throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);\n }\n if (wrapPrivateKey)\n num = mod.mod(num, N); // disabled by default, enabled for BLS\n ut.aInRange('private key', num, _1n, N); // num in range [1..N-1]\n return num;\n }\n function assertPrjPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ProjectivePoint expected');\n }\n // Memoized toAffine / validity check. They are heavy. Points are immutable.\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n const toAffineMemo = memoized((p, iz) => {\n const { px: x, py: y, pz: z } = p;\n // Fast-path for normalized points\n if (Fp.eql(z, Fp.ONE))\n return { x, y };\n const is0 = p.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null)\n iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0)\n return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE))\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n });\n // NOTE: on exception this will crash 'cached' and no value will be set.\n // Otherwise true will be return\n const assertValidMemo = memoized((p) => {\n if (p.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is wrong representation of ZERO and is always invalid.\n if (CURVE.allowInfinityPoint && !Fp.is0(p.py))\n return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = p.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right))\n throw new Error('bad point: equation left != right');\n if (!p.isTorsionFree())\n throw new Error('bad point: not in prime-order subgroup');\n return true;\n });\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point {\n constructor(px, py, pz) {\n this.px = px;\n this.py = py;\n this.pz = pz;\n if (px == null || !Fp.isValid(px))\n throw new Error('x required');\n if (py == null || !Fp.isValid(py))\n throw new Error('y required');\n if (pz == null || !Fp.isValid(pz))\n throw new Error('z required');\n Object.freeze(this);\n }\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p) {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('invalid affine point');\n if (p instanceof Point)\n throw new Error('projective point not allowed');\n const is0 = (i) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y))\n return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex) {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n // Multiscalar Multiplication\n static msm(points, scalars) {\n return pippenger(Point, Fn, points, scalars);\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n wnaf.setWindowSize(this, windowSize);\n }\n // A point on curve is valid if it conforms to equation.\n assertValidity() {\n assertValidMemo(this);\n }\n hasEvenY() {\n const { y } = this.toAffine();\n if (Fp.isOdd)\n return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n /**\n * Compare one point to another.\n */\n equals(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate() {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, n, Point.normalizeZ);\n }\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(sc) {\n ut.aInRange('scalar', sc, _0n, CURVE.n);\n const I = Point.ZERO;\n if (sc === _0n)\n return I;\n if (sc === _1n)\n return this;\n const { endo } = CURVE;\n if (!endo)\n return wnaf.unsafeLadder(this, sc);\n // Apply endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(sc);\n let k1p = I;\n let k2p = I;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar) {\n const { endo, n: N } = CURVE;\n ut.aInRange('scalar', scalar, _1n, N);\n let point, fake; // Fake point is used to const-time mult\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(scalar);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(scalar);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q, a, b) {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (P, a // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz) {\n return toAffineMemo(this, iz);\n }\n isTorsionFree() {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n)\n return true; // No subgroups, always torsion-free\n if (isTorsionFree)\n return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor() {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n)\n return this; // Fast-path\n if (clearCofactor)\n return clearCofactor(Point, this);\n return this.multiplyUnsafe(CURVE.h);\n }\n toRawBytes(isCompressed = true) {\n abool('isCompressed', isCompressed);\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n toHex(isCompressed = true) {\n abool('isCompressed', isCompressed);\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n }, {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n });\n return Object.freeze({ lowS: true, ...opts });\n}\n/**\n * Creates short weierstrass curve and ECDSA signature methods for it.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, b, p, n, Gx, Gy\n * const curve = weierstrass({ a, b, Fp: Field(p), n, Gx, Gy, h: 1n })\n */\nexport function weierstrass(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n function modN(a) {\n return mod.mod(a, CURVE_ORDER);\n }\n function invN(a) {\n return mod.invert(a, CURVE_ORDER);\n }\n const { ProjectivePoint: Point, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder, } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed) {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n abool('isCompressed', isCompressed);\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n }\n else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!ut.inRange(x, _1n, Fp.ORDER))\n throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y;\n try {\n y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n }\n catch (sqrtError) {\n const suffix = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('Point is not on curve' + suffix);\n }\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd)\n y = Fp.neg(y);\n return { x, y };\n }\n else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n }\n else {\n throw new Error(`Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`);\n }\n },\n });\n const numToNByteStr = (num) => ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n function isBiggerThanHalfOrder(number) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function normalizeS(s) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b, from, to) => ut.bytesToNumberBE(b.slice(from, to));\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature {\n constructor(r, s, recovery) {\n this.r = r;\n this.s = s;\n this.recovery = recovery;\n this.assertValidity();\n }\n // pair (bytes of r, bytes of s)\n static fromCompact(hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n assertValidity() {\n ut.aInRange('r', this.r, _1n, CURVE_ORDER); // r in [1..N]\n ut.aInRange('s', this.s, _1n, CURVE_ORDER); // s in [1..N]\n }\n addRecoveryBit(recovery) {\n return new Signature(this.r, this.s, recovery);\n }\n recoverPublicKey(msgHash) {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec))\n throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER)\n throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q)\n throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n // Signatures should be low-s, to prevent malleability.\n hasHighS() {\n return isBiggerThanHalfOrder(this.s);\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: () => {\n const length = mod.getMinHashLength(CURVE.n);\n return mod.mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey, isCompressed = true) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item) {\n const arr = ut.isBytes(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === compressedLen || len === uncompressedLen;\n if (str)\n return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point)\n return true;\n return false;\n }\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA, publicB, isCompressed = true) {\n if (isProbPub(privateA))\n throw new Error('first arg must be private key');\n if (!isProbPub(publicB))\n throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int = CURVE.bits2int ||\n function (bytes) {\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN = CURVE.bits2int_modN ||\n function (bytes) {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num) {\n ut.aInRange(`num < 2^${CURVE.nBitLength}`, num, _0n, ORDER_MASK);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order, this will be wrong at least for P521.\n // Also it can be bigger for P224 + SHA256\n function prepSig(msgHash, privateKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null)\n lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n validateSigVerOpts(opts);\n if (prehash)\n msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null && ent !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes) {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k))\n return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n)\n return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n)\n return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery); // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts = { lowS: CURVE.lowS, prehash: false };\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash, privKey, opts = defaultSigOpts) {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = ut.createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n if ('strict' in opts)\n throw new Error('options.strict was renamed to lowS');\n validateSigVerOpts(opts);\n const { lowS, prehash } = opts;\n let _sig = undefined;\n let P;\n try {\n if (typeof sg === 'string' || ut.isBytes(sg)) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n _sig = Signature.fromDER(sg);\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n _sig = Signature.fromCompact(sg);\n }\n }\n else if (typeof sg === 'object' && typeof sg.r === 'bigint' && typeof sg.s === 'bigint') {\n const { r, s } = sg;\n _sig = new Signature(r, s);\n }\n else {\n throw new Error('PARSE');\n }\n P = Point.fromHex(publicKey);\n }\n catch (error) {\n if (error.message === 'PARSE')\n throw new Error(`signature must be Signature instance, Uint8Array or hex string`);\n return false;\n }\n if (lowS && _sig.hasHighS())\n return false;\n if (prehash)\n msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R)\n return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u, v) => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u, v) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n mod.validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd)\n throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u) => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n//# sourceMappingURL=weierstrass.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { weierstrass } from './abstract/weierstrass.js';\n// connects noble-curves to noble-hashes\nexport function getHash(hash) {\n return {\n hash,\n hmac: (key, ...msgs) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\nexport function createCurve(curveDef, defHash) {\n const create = (hash) => weierstrass({ ...curveDef, ...getHash(hash) });\n return Object.freeze({ ...create(defHash), create });\n}\n//# sourceMappingURL=_shortw_utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { createCurve } from './_shortw_utils.js';\nimport { createHasher, isogenyMap } from './abstract/hash-to-curve.js';\nimport { Field, mod, pow2 } from './abstract/modular.js';\nimport { inRange, aInRange, bytesToNumberBE, concatBytes, ensureBytes, numberToBytesBE, } from './abstract/utils.js';\nimport { mapToCurveSimpleSWU } from './abstract/weierstrass.js';\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a, b) => (a + b / _2n) / b;\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n const P = secp256k1P;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fp.eql(Fp.sqr(root), y))\n throw new Error('Cannot find square root');\n return root;\n}\nconst Fp = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\n/**\n * secp256k1 short weierstrass curve and ECDSA signatures over it.\n */\nexport const secp256k1 = createCurve({\n a: BigInt(0), // equation params: a, b\n b: BigInt(7), // Seem to be rigid: bitcointalk.org/index.php?topic=289795.msg3183975#msg3183975\n Fp, // Field's prime: 2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n\n n: secp256k1N, // Curve order, total count of valid points in the field\n // Base point (x, y) aka generator point\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n h: BigInt(1), // Cofactor\n lowS: true, // Allow only low-S signatures by default in sign() and verify()\n /**\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * Explanation: https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066\n */\n endo: {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar: (k) => {\n const n = secp256k1N;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalar: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n },\n}, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\nconst _0n = BigInt(0);\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n) => numberToBytesBE(n, 32);\nconst modP = (x) => mod(x, secp256k1P);\nconst modN = (x) => mod(x, secp256k1N);\nconst Point = secp256k1.ProjectivePoint;\nconst GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = p.hasEvenY() ? d_ : modN(-d_);\n return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n aInRange('x', x, _1n, secp256k1P); // Fail if x ≥ p.\n const xx = modP(x * x);\n const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n if (y % _2n !== _0n)\n y = modP(-y); // Return the unique point P such that x(P) = x and\n const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n p.assertValidity();\n return p;\n}\nconst num = bytesToNumberBE;\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n return modN(num(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey) {\n return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, privateKey, auxRand = randomBytes(32)) {\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = numTo32b(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n const k_ = modN(num(rand)); // Let k' = int(rand) mod n\n if (k_ === _0n)\n throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(numTo32b(modN(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px))\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!inRange(r, _1n, secp256k1P))\n return false;\n const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!inRange(s, _1n, secp256k1N))\n return false;\n const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P\n if (!R || !R.hasEvenY() || R.toAffine().x !== r)\n return false; // -eP == (n-e)P\n return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n }\n catch (error) {\n return false;\n }\n}\n/**\n * Schnorr signatures over secp256k1.\n */\nexport const schnorr = /* @__PURE__ */ (() => ({\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n utils: {\n randomPrivateKey: secp256k1.utils.randomPrivateKey,\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n taggedHash,\n mod,\n },\n}))();\nconst isoMap = /* @__PURE__ */ (() => isogenyMap(Fp, [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n].map((i) => i.map((j) => BigInt(j)))))();\nconst mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fp, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fp.create(BigInt('-11')),\n}))();\nconst htf = /* @__PURE__ */ (() => createHasher(secp256k1.ProjectivePoint, (scalars) => {\n const { x, y } = mapSWU(Fp.create(scalars[0]));\n return isoMap(x, y);\n}, {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\n//# sourceMappingURL=secp256k1.js.map","import { CodeError } from '@libp2p/interface';\nimport { secp256k1 as secp } from '@noble/curves/secp256k1';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { isPromise } from '../util.js';\nconst PRIVATE_KEY_BYTE_LENGTH = 32;\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n return secp.utils.randomPrivateKey();\n}\n/**\n * Hash and sign message with private key\n */\nexport function hashAndSign(key, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.sign(digest, key).toDERRawBytes())\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.sign(p.digest, key).toDERRawBytes();\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\n/**\n * Hash message and verify signature with public key\n */\nexport function hashAndVerify(key, sig, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.verify(sig, digest, key))\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.verify(sig, p.digest, key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\nexport function compressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(true);\n return point;\n}\nexport function decompressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(false);\n return point;\n}\nexport function validatePrivateKey(key) {\n try {\n secp.getPublicKey(key, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\nexport function validatePublicKey(key) {\n try {\n secp.ProjectivePoint.fromHex(key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PUBLIC_KEY');\n }\n}\nexport function computePublicKey(privateKey) {\n try {\n return secp.getPublicKey(privateKey, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\n//# sourceMappingURL=secp256k1-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as keysProtobuf from './keys.js';\nimport * as crypto from './secp256k1.js';\nexport class Secp256k1PublicKey {\n _key;\n constructor(key) {\n crypto.validatePublicKey(key);\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.compressPublicKey(this._key);\n }\n get bytes() {\n return keysProtobuf.PublicKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n}\nexport class Secp256k1PrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey ?? crypto.computePublicKey(key);\n crypto.validatePrivateKey(this._key);\n crypto.validatePublicKey(this._publicKey);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Secp256k1PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return keysProtobuf.PrivateKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalSecp256k1PrivateKey(bytes) {\n return new Secp256k1PrivateKey(bytes);\n}\nexport function unmarshalSecp256k1PublicKey(bytes) {\n return new Secp256k1PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const privateKeyBytes = crypto.generateKey();\n return new Secp256k1PrivateKey(privateKeyBytes);\n}\n//# sourceMappingURL=secp256k1-class.js.map","/**\n * @packageDocumentation\n *\n * **Supported Key Types**\n *\n * The {@link generateKeyPair}, {@link marshalPublicKey}, and {@link marshalPrivateKey} functions accept a string `type` argument.\n *\n * Currently the `'RSA'`, `'ed25519'`, and `secp256k1` types are supported, although ed25519 and secp256k1 keys support only signing and verification of messages.\n *\n * For encryption / decryption support, RSA keys should be used.\n */\nimport 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/pbe.js';\nimport { CodeError } from '@libp2p/interface';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport * as Ed25519 from './ed25519-class.js';\nimport generateEphemeralKeyPair from './ephemeral-keys.js';\nimport { importer } from './importer.js';\nimport { keyStretcher } from './key-stretcher.js';\nimport * as keysPBM from './keys.js';\nimport * as RSA from './rsa-class.js';\nimport * as Secp256k1 from './secp256k1-class.js';\nexport { keyStretcher };\nexport { generateEphemeralKeyPair };\nexport { keysPBM };\nexport const supportedKeys = {\n rsa: RSA,\n ed25519: Ed25519,\n secp256k1: Secp256k1\n};\nfunction unsupportedKey(type) {\n const supported = Object.keys(supportedKeys).join(' / ');\n return new CodeError(`invalid or unsupported key type ${type}. Must be ${supported}`, 'ERR_UNSUPPORTED_KEY_TYPE');\n}\nfunction typeToKey(type) {\n type = type.toLowerCase();\n if (type === 'rsa' || type === 'ed25519' || type === 'secp256k1') {\n return supportedKeys[type];\n }\n throw unsupportedKey(type);\n}\n/**\n * Generates a keypair of the given type and bitsize\n *\n * @param type\n * @param bits - Minimum of 1024\n */\nexport async function generateKeyPair(type, bits) {\n return typeToKey(type).generateKeyPair(bits ?? 2048);\n}\n/**\n * Generates a keypair of the given type and bitsize.\n *\n * Seed is a 32 byte uint8array\n */\nexport async function generateKeyPairFromSeed(type, seed, bits) {\n if (type.toLowerCase() !== 'ed25519') {\n throw new CodeError('Seed key derivation is unimplemented for RSA or secp256k1', 'ERR_UNSUPPORTED_KEY_DERIVATION_TYPE');\n }\n return Ed25519.generateKeyPairFromSeed(seed);\n}\n/**\n * Converts a protobuf serialized public key into its representative object\n */\nexport function unmarshalPublicKey(buf) {\n const decoded = keysPBM.PublicKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPublicKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PublicKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PublicKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'unknown');\n }\n}\n/**\n * Converts a public key object into a protobuf serialized public key\n */\nexport function marshalPublicKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts a protobuf serialized private key into its representative object\n */\nexport async function unmarshalPrivateKey(buf) {\n const decoded = keysPBM.PrivateKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPrivateKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PrivateKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'RSA');\n }\n}\n/**\n * Converts a private key object into a protobuf serialized private key\n */\nexport function marshalPrivateKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts an exported private key into its representative object.\n *\n * Supported formats are 'pem' (RSA only) and 'libp2p-key'.\n */\nexport async function importKey(encryptedKey, password) {\n try {\n const key = await importer(encryptedKey, password);\n return await unmarshalPrivateKey(key);\n }\n catch (_) {\n // Ignore and try the old pem decrypt\n }\n // Only rsa supports pem right now\n const key = forge.pki.decryptRsaPrivateKey(encryptedKey, password);\n if (key === null) {\n throw new CodeError('Cannot read the key, most likely the password is wrong or not a RSA key', 'ERR_CANNOT_DECRYPT_PEM');\n }\n let der = forge.asn1.toDer(forge.pki.privateKeyToAsn1(key));\n der = uint8ArrayFromString(der.getBytes(), 'ascii');\n return supportedKeys.rsa.unmarshalRsaPrivateKey(der);\n}\n//# sourceMappingURL=index.js.map","/**\n * Can be used with Array.sort to sort and array with Uint8Array entries\n */\nexport function compare(a, b) {\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] < b[i]) {\n return -1;\n }\n if (a[i] > b[i]) {\n return 1;\n }\n }\n if (a.byteLength > b.byteLength) {\n return 1;\n }\n if (a.byteLength < b.byteLength) {\n return -1;\n }\n return 0;\n}\n//# sourceMappingURL=compare.js.map","/**\n* @module KeyStore\n* @description\n* Provides a local key manager for OrbitDB.\n* @example Create a keystore with defaults.\n* const keystore = await KeyStore()\n* @example Create a keystore with custom storage.\n* const storage = await MemoryStorage()\n* const keystore = await KeyStore({ storage })\n*/\nimport * as crypto from '@libp2p/crypto'\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string'\nimport { compare as uint8ArrayCompare } from 'uint8arrays/compare'\nimport ComposedStorage from './storage/composed.js'\nimport LevelStorage from './storage/level.js'\nimport LRUStorage from './storage/lru.js'\n\nconst unmarshal = crypto.keys.supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey\nconst unmarshalPubKey = crypto.keys.supportedKeys.secp256k1.unmarshalSecp256k1PublicKey\n\nconst verifySignature = async (signature, publicKey, data) => {\n if (!signature) {\n throw new Error('No signature given')\n }\n if (!publicKey) {\n throw new Error('Given publicKey was undefined')\n }\n if (!data) {\n throw new Error('Given input data was undefined')\n }\n\n if (!(data instanceof Uint8Array)) {\n data = typeof data === 'string' ? uint8ArrayFromString(data) : new Uint8Array(data)\n }\n\n const isValid = (key, msg, sig) => key.verify(msg, sig)\n\n let res = false\n try {\n const pubKey = unmarshalPubKey(uint8ArrayFromString(publicKey, 'base16'))\n res = await isValid(pubKey, data, uint8ArrayFromString(signature, 'base16'))\n } catch (e) {\n // Catch error: sig length wrong\n }\n\n return Promise.resolve(res)\n}\n\n/**\n * Signs data using a key pair.\n * @param {Secp256k1PrivateKey} key The key to use for signing data.\n * @param {string|Uint8Array} data The data to sign.\n * @return {string} A signature.\n * @throws No signing key given if no key is provided.\n * @throws Given input data was undefined if no data is provided.\n * @static\n * @private\n */\nconst signMessage = async (key, data) => {\n if (!key) {\n throw new Error('No signing key given')\n }\n\n if (!data) {\n throw new Error('Given input data was undefined')\n }\n\n if (!(data instanceof Uint8Array)) {\n data = typeof data === 'string' ? uint8ArrayFromString(data) : new Uint8Array(data)\n }\n\n return uint8ArrayToString(await key.sign(data), 'base16')\n}\n\nconst verifiedCachePromise = LRUStorage({ size: 1000 })\n\n/**\n * Verifies input data against a cached version of the signed message.\n * @param {string} signature The generated signature.\n * @param {string} publicKey The derived public key of the key pair.\n * @param {string} data The data to be verified.\n * @return {boolean} True if the the data and cache match, false otherwise.\n * @static\n * @private\n */\nconst verifyMessage = async (signature, publicKey, data) => {\n const verifiedCache = await verifiedCachePromise\n const cached = await verifiedCache.get(signature)\n\n let res = false\n\n if (!cached) {\n const verified = await verifySignature(signature, publicKey, data)\n res = verified\n if (verified) {\n await verifiedCache.put(signature, { publicKey, data })\n }\n } else {\n const compare = (cached, data) => {\n const match = data instanceof Uint8Array ? uint8ArrayCompare(cached, data) === 0 : cached.toString() === data.toString()\n return match\n }\n res = cached.publicKey === publicKey && compare(cached.data, data)\n }\n return res\n}\n\nconst defaultPath = './keystore'\n\n/**\n * Creates an instance of KeyStore.\n * @param {Object} params One or more parameters for configuring KeyStore.\n * @param {Object} [params.storage] An instance of a storage class. Can be one\n * of ComposedStorage, IPFSBlockStorage, LevelStorage, etc. Defaults to\n * ComposedStorage.\n * @param {string} [params.path=./keystore] The path to a valid storage.\n * @return {module:KeyStore~KeyStore} An instance of KeyStore.\n * @instance\n */\nconst KeyStore = async ({ storage, path } = {}) => {\n /**\n * @namespace module:KeyStore~KeyStore\n * @description The instance returned by {@link module:KeyStore}.\n */\n storage = storage || await ComposedStorage(await LRUStorage({ size: 1000 }), await LevelStorage({ path: path || defaultPath }))\n\n /**\n * Closes the KeyStore's underlying storage.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const close = async () => {\n await storage.close()\n }\n\n /**\n * Clears the KeyStore's underlying storage.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const clear = async () => {\n await storage.clear()\n }\n\n /**\n * Checks if a key exists in the key store .\n * @param {string} id The id of an [Identity]{@link module:Identities~Identity} to check the key for.\n * @return {boolean} True if the key exists, false otherwise.\n * @throws id needed to check a key if no id is specified.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const hasKey = async (id) => {\n if (!id) {\n throw new Error('id needed to check a key')\n }\n\n let hasKey = false\n try {\n const storedKey = await storage.get('private_' + id)\n hasKey = storedKey !== undefined && storedKey !== null\n } catch (e) {\n // Catches 'Error: ENOENT: no such file or directory, open '\n console.error('Error: ENOENT: no such file or directory')\n }\n\n return hasKey\n }\n\n /**\n * Adds a private key to the keystore.\n * @param {string} id An id of the [Identity]{@link module:Identities~Identity} to whom the key belongs to.\n * @param {Uint8Array} key The private key to store.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const addKey = async (id, key) => {\n await storage.put('private_' + id, key.privateKey)\n }\n\n /**\n * Creates a key pair and stores it to the keystore.\n * @param {string} id An id of the [Identity]{@link module:Identities~Identity} to generate the key pair for.\n * @throws id needed to create a key if no id is specified.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const createKey = async (id) => {\n if (!id) {\n throw new Error('id needed to create a key')\n }\n\n // Generate a private key\n const pair = await crypto.keys.generateKeyPair('secp256k1')\n const keys = await crypto.keys.unmarshalPrivateKey(pair.bytes)\n const pubKey = keys.public.marshal()\n\n const key = {\n publicKey: pubKey,\n privateKey: keys.marshal()\n }\n\n await addKey(id, key)\n\n return keys\n }\n\n /**\n * Gets a key from keystore.\n * @param {string} id An id of the [Identity]{@link module:Identities~Identity} whose key to retrieve.\n * @return {Uint8Array} The key specified by id.\n * @throws id needed to get a key if no id is specified.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const getKey = async (id) => {\n if (!id) {\n throw new Error('id needed to get a key')\n }\n\n let storedKey\n try {\n storedKey = await storage.get('private_' + id)\n } catch (e) {\n // ignore ENOENT error\n }\n\n if (!storedKey) {\n return\n }\n\n return unmarshal(storedKey)\n }\n\n /**\n * Gets the serialized public key from a key pair.\n * @param {*} keys A key pair.\n * @param {Object} options One or more options.\n * @param {Object} [options.format=hex] The format the public key should be\n * returned in.\n * @return {Uint8Array|String} The public key.\n * @throws Supported formats are `hex` and `buffer` if an invalid format is\n * passed in options.\n * @memberof module:KeyStore~KeyStore\n * @async\n * @instance\n */\n const getPublic = (keys, options = {}) => {\n const formats = ['hex', 'buffer']\n const format = options.format || 'hex'\n if (formats.indexOf(format) === -1) {\n throw new Error('Supported formats are `hex` and `buffer`')\n }\n\n const pubKey = keys.public.marshal()\n\n return format === 'buffer' ? pubKey : uint8ArrayToString(pubKey, 'base16')\n }\n\n return {\n clear,\n close,\n hasKey,\n addKey,\n createKey,\n getKey,\n getPublic\n }\n}\n\nexport {\n KeyStore as default,\n verifyMessage,\n signMessage\n}\n","import * as Block from 'multiformats/block'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport { base58btc } from 'multiformats/bases/base58'\n\nconst codec = dagCbor\nconst hasher = sha256\nconst hashStringEncoding = base58btc\n\n/**\n * @typedef {Object} module:Identities~Identity\n * @property {string} id A unique identifer for the identity.\n * @property {object} publicKey A public key.\n * @property {object} signatures A signed identity id and public key.\n * @property {string} type The type of identity provider.\n * @property {function} sign A sign function to sign data using this identity.\n * @property {function} verify A verify function to verify data signed by this identity.\n */\nconst Identity = async ({ id, publicKey, signatures, type, sign, verify } = {}) => {\n /**\n * @description The Identity instance. Returned by\n * [Identities.createIdentity()]{@link module:Identities~Identities#createIdentity}.\n */\n if (!id) throw new Error('Identity id is required')\n if (!publicKey) throw new Error('Invalid public key')\n if (!signatures) throw new Error('Signatures object is required')\n if (!signatures.id) throw new Error('Signature of id is required')\n if (!signatures.publicKey) throw new Error('Signature of publicKey+id is required')\n if (!type) throw new Error('Identity type is required')\n\n signatures = Object.assign({}, signatures)\n\n const identity = {\n id,\n publicKey,\n signatures,\n type,\n sign,\n verify\n }\n\n const { hash, bytes } = await _encodeIdentity(identity)\n identity.hash = hash\n identity.bytes = bytes\n\n return identity\n}\n\nconst _encodeIdentity = async (identity) => {\n const { id, publicKey, signatures, type } = identity\n const value = { id, publicKey, signatures, type }\n const { cid, bytes } = await Block.encode({ value, codec, hasher })\n const hash = cid.toString(hashStringEncoding)\n return { hash, bytes: Uint8Array.from(bytes) }\n}\n\nconst decodeIdentity = async (bytes) => {\n const { value } = await Block.decode({ bytes, codec, hasher })\n return Identity({ ...value })\n}\n\n/**\n * Verifies whether an identity is valid.\n * @param {Identity} identity The identity to verify.\n * @return {boolean} True if the identity is valid, false otherwise.\n * @static\n * @private\n */\nconst isIdentity = (identity) => {\n return Boolean(identity.id &&\n identity.hash &&\n identity.bytes &&\n identity.publicKey &&\n identity.signatures &&\n identity.signatures.id &&\n identity.signatures.publicKey &&\n identity.type)\n}\n\n/**\n * Evaluates whether two identities are equal.\n * @param {Identity} a First identity.\n * @param {Identity} b Second identity.\n * @return {boolean} True if identity a and b are equal, false otherwise.\n * @static\n * @private\n */\nconst isEqual = (a, b) => {\n return a.id === b.id &&\n a.hash === b.hash &&\n a.type === b.type &&\n a.publicKey === b.publicKey &&\n a.signatures.id === b.signatures.id &&\n a.signatures.publicKey === b.signatures.publicKey\n}\n\nexport { Identity as default, isEqual, isIdentity, decodeIdentity }\n","/**\n * @memberof module:IdentityProviders\n * @description\n * The PublicKey Identity Provider signs and verifies an identity using the\n * public key of a private/public key pair.\n */\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string'\nimport { signMessage, verifyMessage } from '../../key-store.js'\n\nconst type = 'publickey'\n\n/**\n * Verifies an identity using the identity's id.\n * @param {module:Identity} identity\n * @return {boolean} True if the identity is valid, false otherwise.\n * @static\n * @private\n */\nconst verifyIdentity = async identity => {\n const { id, publicKey, signatures } = identity\n return verifyMessage(signatures.publicKey, id, publicKey + signatures.id)\n}\n\n/**\n * Instantiates the publickey identity provider.\n * @return {module:IdentityProviders.IdentityProvider-PublicKey} A public key\n * identity provider function.\n * @private\n */\nconst PublicKeyIdentityProvider = ({ keystore }) => async () => {\n /**\n * @namespace module:IdentityProviders.IdentityProvider-PublicKey\n * @memberof module:IdentityProviders\n * @description The instance returned by {@link module:IdentityProviders.IdentityProvider-PublicKey}.\n * @private\n */\n\n if (!keystore) {\n throw new Error('PublicKeyIdentityProvider requires a keystore parameter')\n }\n\n /**\n * Gets the id.\n * @memberof module:IdentityProviders.IdentityProvider-PublicKey\n * @param {string} id The id to retrieve.\n * @return {string} The identity's id.\n * @instance\n */\n const getId = async ({ id } = {}) => {\n if (!id) {\n throw new Error('id is required')\n }\n\n const key = await keystore.getKey(id) || await keystore.createKey(id)\n return uint8ArrayToString(key.public.marshal(), 'base16')\n }\n\n /**\n * Signs an identity using the identity's id.\n * @memberof module:IdentityProviders.IdentityProvider-PublicKey\n * @param {*} data The identity data to sign.\n * @param {Object} params One or more parameters for configuring Database.\n * @param {string} [params.id] The identity's id.\n * @return {string} A signature.\n * @instance\n */\n const signIdentity = async (data, { id } = {}) => {\n if (!id) {\n throw new Error('id is required')\n }\n\n const key = await keystore.getKey(id)\n if (!key) {\n throw new Error(`Signing key for '${id}' not found`)\n }\n\n return signMessage(key, data)\n }\n\n return {\n type,\n getId,\n signIdentity\n }\n}\n\nPublicKeyIdentityProvider.verifyIdentity = verifyIdentity\nPublicKeyIdentityProvider.type = type\n\nexport default PublicKeyIdentityProvider\n","import PublicKeyIdentityProvider from './publickey.js'\n\nconst identityProviders = {}\n\nconst isProviderSupported = (type) => {\n return Object.keys(identityProviders).includes(type)\n}\n\nconst getIdentityProvider = (type) => {\n if (!isProviderSupported(type)) {\n throw new Error(`IdentityProvider type '${type}' is not supported`)\n }\n\n return identityProviders[type]\n}\n\n/**\n * Adds an identity provider.\n * @param {IdentityProvider} identityProvider The identity provider to add.\n * @throws Given IdentityProvider doesn\\'t have a field \\'type\\'.\n * @throws Given IdentityProvider doesn\\'t have a function \\'verifyIdentity\\'.\n * @throws IdentityProvider ${IdentityProvider.type} already added.\n * @static\n * @memberof module:Identities\n */\nconst useIdentityProvider = (identityProvider) => {\n if (!identityProvider.type ||\n typeof identityProvider.type !== 'string') {\n throw new Error('Given IdentityProvider doesn\\'t have a field \\'type\\'.')\n }\n\n if (!identityProvider.verifyIdentity) {\n throw new Error('Given IdentityProvider doesn\\'t have a function \\'verifyIdentity\\'.')\n }\n\n identityProviders[identityProvider.type] = identityProvider\n}\n\nuseIdentityProvider(PublicKeyIdentityProvider)\n\nexport { useIdentityProvider, getIdentityProvider, PublicKeyIdentityProvider }\n","/**\n * @module Identities\n * @description\n * Identities provides a framework for generating and managing identity\n * details and providers.\n */\nimport Identity, { isIdentity, isEqual, decodeIdentity } from './identity.js'\nimport { getIdentityProvider } from './providers/index.js'\n// import DIDIdentityProvider from './identity-providers/did.js'\n// import EthIdentityProvider from './identity-providers/ethereum.js'\nimport KeyStore, { signMessage, verifyMessage } from '../key-store.js'\nimport { LRUStorage, IPFSBlockStorage, MemoryStorage, ComposedStorage } from '../storage/index.js'\nimport pathJoin from '../utils/path-join.js'\n\nconst DefaultIdentityKeysPath = pathJoin('./orbitdb', 'identities')\n\n/**\n * Creates an instance of Identities.\n * @function\n * @param {Object} params One or more parameters for configuring Identities.\n * @param {module:KeyStore} [params.keystore] A preconfigured KeyStore.\n * A KeyStore will be created in the path defined by the path param. If neither\n * Keystore nor path are defined, a new KeyStore is stored in ./orbitdb\n * identities.\n * @param {string} [params.path] The path to a KeyStore. If no path is\n * provided, the default is ./orbitdb/identities.\n * @param {module:Storage} [params.storage] An instance of a compatible storage\n * module.\n * @param {IPFS} [params.ipfs] An instance of IPFS. This param is not required\n * if storage is provided.\n * @return {module:Identities~Identities} An instance of Identities.\n * @instance\n */\nconst Identities = async ({ keystore, path, storage, ipfs } = {}) => {\n /**\n * @namespace module:Identities~Identities\n * @description The instance returned by {@link module:Identities}.\n */\n\n keystore = keystore || await KeyStore({ path: path || DefaultIdentityKeysPath })\n\n if (!storage) {\n storage = ipfs\n ? await ComposedStorage(await LRUStorage({ size: 1000 }), await IPFSBlockStorage({ ipfs, pin: true }))\n : await MemoryStorage()\n }\n\n const verifiedIdentitiesCache = await LRUStorage({ size: 1000 })\n\n /**\n * Gets an identity by hash.\n * @param {string} hash An identity hash.\n * @return {module:Identities~Identity} An instance of identity.\n * @memberof module:Identities~Identities\n * @instance\n */\n const getIdentity = async (hash) => {\n const bytes = await storage.get(hash)\n if (bytes) {\n return decodeIdentity(bytes)\n }\n }\n\n /**\n * Creates an identity, adding it to storage.\n * @param {Object} options Various options for configuring a new identity.\n * @param {Function} [options.provider=PublicKeyIdentityProvider()] An instance of the Provider to use for generating an identity, e.g. PublicKeyIdentityProvider({ keystore })\n * @return {module:Identities~Identity} An instance of identity.\n * @memberof module:Identities~Identities\n * @instance\n */\n const createIdentity = async (options = {}) => {\n options.keystore = keystore\n const DefaultIdentityProvider = getIdentityProvider('publickey')\n const identityProviderInit = options.provider || DefaultIdentityProvider({ keystore })\n\n const identityProvider = await identityProviderInit()\n\n if (!getIdentityProvider(identityProvider.type)) {\n throw new Error('Identity provider is unknown. Use useIdentityProvider(provider) to register the identity provider')\n }\n\n const id = await identityProvider.getId(options)\n const privateKey = await keystore.getKey(id) || await keystore.createKey(id)\n const publicKey = keystore.getPublic(privateKey)\n const idSignature = await signMessage(privateKey, id)\n const publicKeyAndIdSignature = await identityProvider.signIdentity(publicKey + idSignature, options)\n const signatures = {\n id: idSignature,\n publicKey: publicKeyAndIdSignature\n }\n\n const identity = await Identity({ id, publicKey, signatures, type: identityProvider.type, sign, verify })\n\n await storage.put(identity.hash, identity.bytes)\n\n return identity\n }\n\n /**\n * Verifies an identity using the identity's provider.\n * @param {module:Identities~Identity} identity The identity to verify.\n * @return {boolean} True the identity is valid, false otherwise.\n * @memberof module:Identities~Identities\n */\n const verifyIdentity = async (identity) => {\n if (!isIdentity(identity)) {\n return false\n }\n\n const { id, publicKey, signatures } = identity\n\n const idSignatureVerified = await verify(signatures.id, publicKey, id)\n if (!idSignatureVerified) {\n return false\n }\n\n const verifiedIdentity = await verifiedIdentitiesCache.get(signatures.id)\n if (verifiedIdentity) {\n return isEqual(identity, verifiedIdentity)\n }\n\n const Provider = getIdentityProvider(identity.type)\n\n const identityVerified = await Provider.verifyIdentity(identity)\n if (identityVerified) {\n await verifiedIdentitiesCache.put(signatures.id, identity)\n }\n\n return identityVerified\n }\n\n /**\n * Signs data using an identity.\n * @param {module:Identities~Identity} identity The identity to use for\n * signing.\n * @param {string} data The data to sign.\n * @return {string} The signed data.\n * @throws Private signing key not found from KeyStore when no signing key can\n * be retrieved.\n * @memberof module:Identities~Identities\n * @instance\n * @private\n */\n const sign = async (identity, data) => {\n const signingKey = await keystore.getKey(identity.id)\n\n if (!signingKey) {\n throw new Error('Private signing key not found from KeyStore')\n }\n\n return await signMessage(signingKey, data)\n }\n\n /**\n * Verifies data using a valid signature and publicKey.\n * @param {string} signature A signature.\n * @param {string} publicKey A public key.\n * @param {string} data The data to be verified.\n * @return {boolean} True if the the data is signed by the publicKey, false\n * otherwise.\n * @memberof module:Identities~Identities\n * @instance\n * @private\n */\n const verify = async (signature, publicKey, data) => {\n return await verifyMessage(signature, publicKey, data)\n }\n\n return {\n createIdentity,\n verifyIdentity,\n getIdentity,\n sign,\n verify,\n keystore\n }\n}\n\nexport {\n Identities as default\n}\n","/**\n * @module Address\n * @description OrbitDB database address verification.\n */\nimport { CID } from 'multiformats/cid'\nimport { base58btc } from 'multiformats/bases/base58'\nimport { posixJoin } from './utils/path-join.js'\n\n/**\n * Validates an OrbitDB database address.\n * @function\n * @param {module:Address~OrbitDBAddress|string} address An OrbitDB database address.\n * @return {boolean} True if the address is a valid OrbitDB database address,\n * false otherwise.\n * @static\n */\nconst isValidAddress = (address) => {\n address = address.toString()\n\n if (!address.startsWith('/orbitdb') && !address.startsWith('\\\\orbitdb')) {\n return false\n }\n\n address = address.replaceAll('/orbitdb/', '')\n address = address.replaceAll('\\\\orbitdb\\\\', '')\n address = address.replaceAll('/', '')\n address = address.replaceAll('\\\\', '')\n\n let cid\n try {\n cid = CID.parse(address, base58btc)\n } catch (e) {\n return false\n }\n\n return cid !== undefined\n}\n\n/**\n * Parses an OrbitDB database address.\n * @function\n * @param {module:Address~OrbitDBAddress|string} address A valid OrbitDB database address.\n * @return {module:Address~OrbitDBAddress} An instance of OrbitDBAddress.\n * @throws Not a valid OrbitDB address if no address if provided.\n * @throws Not a valid OrbitDB address if address is invalid.\n * @static\n */\nconst parseAddress = (address) => {\n if (!address) {\n throw new Error(`Not a valid OrbitDB address: ${address}`)\n }\n\n if (!isValidAddress(address)) {\n throw new Error(`Not a valid OrbitDB address: ${address}`)\n }\n\n return OrbitDBAddress(address)\n}\n\n/**\n * @typedef {Object} OrbitDBAddress\n * @property {string} protocol Protocol prefix \"/orbitdb/\".\n * @property {string} hash The hash of the database manifest.\n * @property {string} address The full database address.\n */\nconst OrbitDBAddress = (address) => {\n if (address && address.protocol === 'orbitdb' && address.hash) {\n return address\n }\n\n const protocol = 'orbitdb'\n\n const hash = address.replace('/orbitdb/', '').replace('\\\\orbitdb\\\\', '')\n\n /**\n * Returns address as a string.\n * @typedef {Function} toString\n * @returns {string} Address as a string.\n */\n const toString = () => {\n return posixJoin('/', protocol, hash)\n }\n\n return {\n protocol,\n hash,\n address,\n toString\n }\n}\n\nexport { OrbitDBAddress as default, isValidAddress, parseAddress }\n","import * as Block from 'multiformats/block'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport { base58btc } from 'multiformats/bases/base58'\nimport { ComposedStorage, IPFSBlockStorage, LRUStorage } from './storage/index.js'\n\nconst codec = dagCbor\nconst hasher = sha256\nconst hashStringEncoding = base58btc\n\nconst ManifestStore = async ({ ipfs, storage } = {}) => {\n /**\n * @namespace module:Manifest~Manifest\n * @description The instance returned by {@link module:Manifest~Manifest}.\n * @private\n */\n\n storage = storage || await ComposedStorage(\n await LRUStorage({ size: 1000 }),\n await IPFSBlockStorage({ ipfs, pin: true })\n )\n\n const get = async (address) => {\n const bytes = await storage.get(address)\n const { value } = await Block.decode({ bytes, codec, hasher })\n return value\n }\n\n const create = async ({ name, type, accessController, meta }) => {\n if (!name) throw new Error('name is required')\n if (!type) throw new Error('type is required')\n if (!accessController) throw new Error('accessController is required')\n\n const manifest = Object.assign(\n {\n name,\n type,\n accessController\n },\n // meta field is only added to manifest if meta parameter is defined\n meta !== undefined ? { meta } : {}\n )\n\n const { cid, bytes } = await Block.encode({ value: manifest, codec, hasher })\n const hash = cid.toString(hashStringEncoding)\n await storage.put(hash, bytes)\n\n return {\n hash,\n manifest\n }\n }\n\n const close = async () => {\n await storage.close()\n }\n\n return {\n get,\n create,\n close\n }\n}\n\nexport default ManifestStore\n","const createId = async (length = 32) => {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n let result = ''\n let counter = 0\n while (counter < length) {\n result += characters.charAt(Math.floor(Math.random() * characters.length))\n counter += 1\n }\n return result\n}\n\nexport default createId\n","/**\n * @namespace AccessControllers-IPFS\n * @memberof module:AccessControllers\n */\nimport { IPFSBlockStorage, LRUStorage, ComposedStorage } from '../storage/index.js'\nimport * as Block from 'multiformats/block'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport { base58btc } from 'multiformats/bases/base58'\nimport pathJoin from '../utils/path-join.js'\n\nconst codec = dagCbor\nconst hasher = sha256\nconst hashStringEncoding = base58btc\n\nconst AccessControlList = async ({ storage, type, params }) => {\n const manifest = {\n type,\n ...params\n }\n const { cid, bytes } = await Block.encode({ value: manifest, codec, hasher })\n const hash = cid.toString(hashStringEncoding)\n await storage.put(hash, bytes)\n return hash\n}\n\nconst type = 'ipfs'\n\n/**\n * Creates an instance of IPFSAccessController.\n * @callback IPFSAccessController\n * @param {Object} params Various parameters for configuring the access\n * controller.\n * @param {module:OrbitDB} params.orbitdb An OrbitDB instance.\n * @param {module:Identities} params.identities An Identities instance.\n * @param {string} [params.address] The address of the database.\n * @function\n * @instance\n * @async\n * @memberof module:AccessControllers.AccessControllers-IPFS\n * @private\n */\n\n/**\n * Defines an IPFS access controller.\n * @param {Object} options Various options for configuring the\n * IPFSAccessController.\n * @param {Array} [params.write] An array of identity ids who can write to the\n * database.\n * @param {module:Storage} [params.storage] An instance of a compatible storage.\n * @return {module:AccessControllers.AccessControllers-IPFS} An\n * IPFSAccessController function.\n * @memberof module:AccessControllers\n */\nconst IPFSAccessController = ({ write, storage } = {}) => async ({ orbitdb, identities, address }) => {\n storage = storage || await ComposedStorage(\n await LRUStorage({ size: 1000 }),\n await IPFSBlockStorage({ ipfs: orbitdb.ipfs, pin: true })\n )\n write = write || [orbitdb.identity.id]\n\n if (address) {\n const manifestBytes = await storage.get(address.replaceAll('/ipfs/', ''))\n const { value } = await Block.decode({ bytes: manifestBytes, codec, hasher })\n write = value.write\n } else {\n address = await AccessControlList({ storage, type, params: { write } })\n address = pathJoin('/', type, address)\n }\n\n /**\n * Verifies the write permission of an entry.\n * @param {module:Log~Entry} entry An entry to verify.\n * @return {boolean} True if the entry's identity has write permission,\n * false otherwise.\n * @memberof module:AccessControllers.AccessControllers-IPFS\n */\n const canAppend = async (entry) => {\n const writerIdentity = await identities.getIdentity(entry.identity)\n if (!writerIdentity) {\n return false\n }\n const { id } = writerIdentity\n // Allow if the write access list contain the writer's id or is '*'\n if (write.includes(id) || write.includes('*')) {\n // Check that the identity is valid\n return identities.verifyIdentity(writerIdentity)\n }\n return false\n }\n\n return {\n type,\n address,\n write,\n canAppend\n }\n}\n\nIPFSAccessController.type = type\n\nexport default IPFSAccessController\n","/**\n * @namespace AccessControllers-OrbitDB\n * @memberof module:AccessControllers\n */\nimport IPFSAccessController from './ipfs.js'\nimport { createId } from '../utils/index.js'\n\nconst type = 'orbitdb'\n\n/**\n * Creates an instance of OrbitDBAccessController.\n * @callback OrbitDBAccessController\n * @param {Object} params Various parameters for configuring the access\n * controller.\n * @param {module:OrbitDB} params.orbitdb An OrbitDB instance.\n * @param {module:Identities} params.identities An Identities instance.\n * @param {string} [params.address] The address of the database.\n * @function\n * @instance\n * @async\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @private\n */\n\n/**\n * Defines an OrbitDB access controller.\n * @param {Object} options Various options for configuring the\n * IPFSAccessController.\n * @param {Array} [params.write] An array of ids of identities who can write to the\n * database.\n * @return {module:AccessControllers.AccessControllers-OrbitDB} An\n * IPFSAccessController function.\n * @memberof module:AccessControllers\n */\nconst OrbitDBAccessController = ({ write } = {}) => async ({ orbitdb, identities, address, name }) => {\n address = address || name || await createId(64)\n write = write || [orbitdb.identity.id]\n\n // Open the database used for access information\n const db = await orbitdb.open(address, { type: 'keyvalue', AccessController: IPFSAccessController({ write }) })\n address = db.address\n\n /**\n * Verifies the write permission of an entry.\n * @param {module:Log~Entry} entry An entry to verify.\n * @return {boolean} True if the entry's identity has write permission,\n * false otherwise.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const canAppend = async (entry) => {\n const writerIdentity = await identities.getIdentity(entry.identity)\n if (!writerIdentity) {\n return false\n }\n\n const { id } = writerIdentity\n // If the ACL contains the writer's public key or it contains '*'\n const hasWriteAccess = await hasCapability('write', id) || await hasCapability('admin', id)\n if (hasWriteAccess) {\n return identities.verifyIdentity(writerIdentity)\n }\n\n return false\n }\n\n /**\n * Gets the access capabilities of the OrbitDB access controller.\n *\n * The returned capabilities will be a mixture of admin and write access\n * addresses.\n * @return {Array} A list of ids of identities with admin and write access.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const capabilities = async () => {\n const _capabilities = []\n for await (const entry of db.iterator()) {\n _capabilities[entry.key] = entry.value\n }\n\n const toSet = (e) => {\n const key = e[0]\n _capabilities[key] = new Set([...(_capabilities[key] || []), ...e[1]])\n }\n\n // Merge with the access controller of the database\n // and make sure all values are Sets\n Object.entries({\n ..._capabilities,\n // Add the root access controller's 'write' access list\n // as admins on this controller\n ...{ admin: new Set([...(_capabilities.admin || []), ...db.access.write]) }\n }).forEach(toSet)\n\n return _capabilities\n }\n\n /**\n * Gets a list of identities with the specified capability.\n * @param {string} capability A capability (e.g. write).\n * @return {Array} One or more addresses with the spcified capability.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const get = async (capability) => {\n const _capabilities = await capabilities()\n return _capabilities[capability] || new Set([])\n }\n\n /**\n * Close the underlying access control database.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const close = async () => {\n await db.close()\n }\n\n /**\n * Drop the underlying access control database.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const drop = async () => {\n await db.drop()\n }\n\n /**\n * Checks whether an identity has a capability.\n * @param {string} capability A capability (e.g. write).\n * @param {string} key An id of an identity.\n * @return {boolean} True if the identity has the capability, false\n * otherwise.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const hasCapability = async (capability, key) => {\n // Write keys and admins keys are allowed\n const access = new Set(await get(capability))\n return access.has(key) || access.has('*')\n }\n\n /**\n * Grants a capability to an identity, storing it to the access control\n * database.\n * @param {string} capability A capability (e.g. write).\n * @param {string} key An id of an identity.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const grant = async (capability, key) => {\n // Merge current keys with the new key\n const capabilities = new Set([...(await db.get(capability) || []), ...[key]])\n await db.put(capability, Array.from(capabilities.values()))\n }\n\n /**\n * Revokes a capability from an identity, removing it from the access control\n * database.\n * @param {string} capability A capability (e.g. write).\n * @param {string} key An id of an identity.\n * @memberof module:AccessControllers.AccessControllers-OrbitDB\n * @instance\n */\n const revoke = async (capability, key) => {\n const capabilities = new Set(await db.get(capability) || [])\n capabilities.delete(key)\n if (capabilities.size > 0) {\n await db.put(capability, Array.from(capabilities.values()))\n } else {\n await db.del(capability)\n }\n }\n\n return {\n type,\n address,\n write,\n canAppend,\n capabilities,\n get,\n grant,\n revoke,\n close,\n drop,\n events: db.events\n }\n}\n\nOrbitDBAccessController.type = type\n\nexport default OrbitDBAccessController\n","/**\n * @module AccessControllers\n * @description\n * Provides a system for managing access controllers. Supported access\n * controllers can be added and removed from the access controller list, and\n * can load the associated module if they are supported.\n */\nimport IPFSAccessController from './ipfs.js'\nimport OrbitDBAccessController from './orbitdb.js'\n\nconst accessControllers = {}\n\n/**\n * Gets an access controller module specified by type.\n * @param {string} type A valid access controller type.\n * @return {AccessController} The access controller module.\n * @private\n */\nconst getAccessController = (type) => {\n if (!accessControllers[type]) {\n throw new Error(`AccessController type '${type}' is not supported`)\n }\n return accessControllers[type]\n}\n\n/**\n * Adds an access controller module to the list of supported access controller.\n * @param {AccessController} accessController A compatible access controller\n * module.\n * @throws AccessController does not contain required field \\'type\\'.\n * @throws AccessController '${accessController.type}' already added.\n * @static\n */\nconst useAccessController = (accessController) => {\n if (!accessController.type) {\n throw new Error('AccessController does not contain required field \\'type\\'.')\n }\n\n accessControllers[accessController.type] = accessController\n}\n\nuseAccessController(IPFSAccessController)\nuseAccessController(OrbitDBAccessController)\n\nexport {\n getAccessController,\n useAccessController,\n IPFSAccessController,\n OrbitDBAccessController\n}\n","/**\n* @module OrbitDB\n* @description Provides an interface for users to interact with OrbitDB.\n*/\nimport { getDatabaseType } from './databases/index.js'\nimport KeyStore from './key-store.js'\nimport { Identities } from './identities/index.js'\nimport OrbitDBAddress, { isValidAddress } from './address.js'\nimport ManifestStore from './manifest-store.js'\nimport { createId } from './utils/index.js'\nimport pathJoin from './utils/path-join.js'\nimport { getAccessController } from './access-controllers/index.js'\nimport IPFSAccessController from './access-controllers/ipfs.js'\n\nconst DefaultDatabaseType = 'events'\n\nconst DefaultAccessController = IPFSAccessController\n\n/**\n * Creates an instance of OrbitDB.\n * @function createOrbitDB\n * @param {Object} params One or more parameters for configuring OrbitDB.\n * @param {IPFS} params.ipfs An IPFS instance.\n * @param {string} [params.id] The id of the identity to use for this OrbitDB instance.\n * @param {module:Identity|Object} [params.identity] An identity instance or an object containing an Identity Provider instance and any additional params required to create the identity using the specified provider.\n * @param {Function} [params.identity.provider] An initialized identity provider.\n * @param {module:Identities} [params.identities] An Identities system instance.\n * @param {string} [params.directory] A location for storing OrbitDB data.\n * @return {module:OrbitDB~OrbitDB} An instance of OrbitDB.\n * @throws \"IPFS instance is required argument\" if no IPFS instance is provided.\n * @instance\n */\nconst OrbitDB = async ({ ipfs, id, identity, identities, directory } = {}) => {\n /**\n * @namespace module:OrbitDB~OrbitDB\n * @description The instance returned by {@link module:OrbitDB}.\n */\n\n if (ipfs == null) {\n throw new Error('IPFS instance is a required argument.')\n }\n\n id = id || await createId()\n const peerId = ipfs.libp2p.peerId\n directory = directory || './orbitdb'\n\n let keystore\n\n if (identities) {\n keystore = identities.keystore\n } else {\n keystore = await KeyStore({ path: pathJoin(directory, './keystore') })\n identities = await Identities({ ipfs, keystore })\n }\n\n if (identity) {\n if (identity.provider) {\n identity = await identities.createIdentity({ ...identity })\n }\n } else {\n identity = await identities.createIdentity({ id })\n }\n\n const manifestStore = await ManifestStore({ ipfs })\n\n let databases = {}\n\n /**\n * Open a database or create one if it does not already exist.\n *\n * By default, OrbitDB will create a database of type [DefaultDatabaseType]{@link module:OrbitDB~DefaultDatabaseType}:\n * ```\n * const mydb = await orbitdb.open('mydb')\n * ```\n * To create a database of a different type, specify the type param:\n * ```\n * const mydb = await orbitdb.open('mydb', {type: 'documents'})\n * ```\n * The type must be listed in [databaseTypes]{@link module:OrbitDB.databaseTypes} or an error is thrown.\n * To open an existing database, pass its address to the `open` function:\n * ```\n * const existingDB = await orbitdb.open(dbAddress)\n * ```\n * The address of a newly created database can be retrieved using\n * `db.address`.\n * @function\n * @param {string} address The address of an existing database to open, or\n * the name of a new database.\n * @param {Object} params One or more database configuration parameters.\n * @param {string} [params.type=events] The database's type.\n * @param {*} [params.meta={}] The database's metadata. Only applies when\n * creating a database and is not used when opening an existing database.\n * @param {boolean} [params.sync=true] If true, sync databases automatically.\n * Otherwise, false.\n * @param {module:Database} [params.Database=[Events]{@link module:Database.Database-Events}] A Database-compatible\n * module.\n * @param {module:AccessControllers}\n * [params.AccessController=[IPFSAccessController]{@link module:AccessControllers.AccessControllers-IPFS}]\n * An AccessController-compatible module.\n * @param {module:Storage} [params.headsStorage=[ComposedStorage]{@link module:Storage.Storage-Composed}] A compatible storage instance for storing\n * log heads. Defaults to ComposedStorage(LRUStorage, LevelStorage).\n * @param {module:Storage} [params.entryStorage=[ComposedStorage]{@link module:Storage.Storage-Composed}] A compatible storage instance for storing\n * log entries. Defaults to ComposedStorage(LRUStorage, IPFSBlockStorage).\n * @param {module:Storage} [params.indexStorage=[ComposedStorage]{@link module:Storage.Storage-Composed}] A compatible storage instance for storing an \" index of log entries. Defaults to ComposedStorage(LRUStorage, LevelStorage).\n * @param {number} [params.referencesCount] The number of references to\n * use for [Log]{@link module:Log} entries.\n * @memberof module:OrbitDB\n * @return {module:Database} A database instance.\n * @throws \"Unsupported database type\" if the type specified is not in the list\n * of known databaseTypes.\n * @memberof module:OrbitDB~OrbitDB\n * @instance\n * @async\n */\n const open = async (address, { type, meta, sync, Database, AccessController, headsStorage, entryStorage, indexStorage, referencesCount } = {}) => {\n let name, manifest, accessController\n\n if (databases[address]) {\n return databases[address]\n }\n\n if (isValidAddress(address)) {\n // If the address given was a valid OrbitDB address, eg. '/orbitdb/zdpuAuK3BHpS7NvMBivynypqciYCuy2UW77XYBPUYRnLjnw13'\n const addr = OrbitDBAddress(address)\n manifest = await manifestStore.get(addr.hash)\n const acType = manifest.accessController.split('/', 2).pop()\n AccessController = getAccessController(acType)()\n accessController = await AccessController({ orbitdb: { open, identity, ipfs }, identities, address: manifest.accessController })\n name = manifest.name\n type = type || manifest.type\n meta = manifest.meta\n } else {\n // If the address given was not valid, eg. just the name of the database\n type = type || DefaultDatabaseType\n AccessController = AccessController || DefaultAccessController()\n accessController = await AccessController({ orbitdb: { open, identity, ipfs }, identities, name: address })\n const m = await manifestStore.create({ name: address, type, accessController: accessController.address, meta })\n manifest = m.manifest\n address = OrbitDBAddress(m.hash)\n name = manifest.name\n meta = manifest.meta\n // Check if we already have the database open and return if it is\n if (databases[address]) {\n return databases[address]\n }\n }\n\n Database = Database || getDatabaseType(type)()\n\n if (!Database) {\n throw new Error(`Unsupported database type: '${type}'`)\n }\n\n address = address.toString()\n\n const db = await Database({ ipfs, identity, address, name, access: accessController, directory, meta, syncAutomatically: sync, headsStorage, entryStorage, indexStorage, referencesCount })\n\n db.events.on('close', onDatabaseClosed(address))\n\n databases[address] = db\n\n return db\n }\n\n const onDatabaseClosed = (address) => () => {\n delete databases[address]\n }\n\n /**\n * Stops OrbitDB, closing the underlying keystore and manifest store.\n * @function stop\n * @memberof module:OrbitDB~OrbitDB\n * @instance\n * @async\n */\n const stop = async () => {\n for (const db of Object.values(databases)) {\n await db.close()\n }\n if (keystore) {\n await keystore.close()\n }\n if (manifestStore) {\n await manifestStore.close()\n }\n databases = {}\n }\n\n return {\n id,\n open,\n stop,\n ipfs,\n directory,\n keystore,\n identity,\n peerId\n }\n}\n\nexport { OrbitDB as default, OrbitDBAddress }\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","import { bytes as binary, CID } from './index.js';\nfunction readonly({ enumerable = true, configurable = false } = {}) {\n return { enumerable, configurable, writable: false };\n}\nfunction* linksWithin(path, value) {\n if (value != null && typeof value === 'object') {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index];\n const cid = CID.asCID(element);\n if (cid != null) {\n yield [elementPath.join('/'), cid];\n }\n else if (typeof element === 'object') {\n yield* links(element, elementPath);\n }\n }\n }\n else {\n const cid = CID.asCID(value);\n if (cid != null) {\n yield [path.join('/'), cid];\n }\n else {\n yield* links(value, path);\n }\n }\n }\n}\nfunction* links(source, base) {\n if (source == null || source instanceof Uint8Array) {\n return;\n }\n const cid = CID.asCID(source);\n if (cid != null) {\n yield [base.join('/'), cid];\n }\n for (const [key, value] of Object.entries(source)) {\n const path = [...base, key];\n yield* linksWithin(path, value);\n }\n}\nfunction* treeWithin(path, value) {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index];\n yield elementPath.join('/');\n if (typeof element === 'object' && (CID.asCID(element) == null)) {\n yield* tree(element, elementPath);\n }\n }\n }\n else {\n yield* tree(value, path);\n }\n}\nfunction* tree(source, base) {\n if (source == null || typeof source !== 'object') {\n return;\n }\n for (const [key, value] of Object.entries(source)) {\n const path = [...base, key];\n yield path.join('/');\n if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && (CID.asCID(value) == null)) {\n yield* treeWithin(path, value);\n }\n }\n}\nfunction get(source, path) {\n let node = source;\n for (const [index, key] of path.entries()) {\n node = node[key];\n if (node == null) {\n throw new Error(`Object has no property at ${path.slice(0, index + 1).map(part => `[${JSON.stringify(part)}]`).join('')}`);\n }\n const cid = CID.asCID(node);\n if (cid != null) {\n return { value: cid, remaining: path.slice(index + 1).join('/') };\n }\n }\n return { value: node };\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template C - multicodec code corresponding to codec used to encode the block\n * @template A - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template V - CID version\n */\nexport class Block {\n cid;\n bytes;\n value;\n asBlock;\n constructor({ cid, bytes, value }) {\n if (cid == null || bytes == null || typeof value === 'undefined') {\n throw new Error('Missing required argument');\n }\n this.cid = cid;\n this.bytes = bytes;\n this.value = value;\n this.asBlock = this;\n // Mark all the properties immutable\n Object.defineProperties(this, {\n cid: readonly(),\n bytes: readonly(),\n value: readonly(),\n asBlock: readonly()\n });\n }\n links() {\n return links(this.value, []);\n }\n tree() {\n return tree(this.value, []);\n }\n get(path = '/') {\n return get(this.value, path.split('/').filter(Boolean));\n }\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n */\nexport async function encode({ value, codec, hasher }) {\n if (typeof value === 'undefined')\n throw new Error('Missing required argument \"value\"');\n if (codec == null || hasher == null)\n throw new Error('Missing required argument: codec or hasher');\n const bytes = codec.encode(value);\n const hash = await hasher.digest(bytes);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const cid = CID.create(1, codec.code, hash);\n return new Block({ value, bytes, cid });\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n */\nexport async function decode({ bytes, codec, hasher }) {\n if (bytes == null)\n throw new Error('Missing required argument \"bytes\"');\n if (codec == null || hasher == null)\n throw new Error('Missing required argument: codec or hasher');\n const value = codec.decode(bytes);\n const hash = await hasher.digest(bytes);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const cid = CID.create(1, codec.code, hash);\n return new Block({ value, bytes, cid });\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template V - CID version\n */\nexport function createUnsafe({ bytes, cid, value: maybeValue, codec }) {\n const value = maybeValue !== undefined\n ? maybeValue\n : (codec?.decode(bytes));\n if (value === undefined)\n throw new Error('Missing required argument, must either provide \"value\" or \"codec\"');\n return new Block({\n cid: cid,\n bytes,\n value\n });\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template V - CID version\n */\nexport async function create({ bytes, cid, hasher, codec }) {\n if (bytes == null)\n throw new Error('Missing required argument \"bytes\"');\n if (hasher == null)\n throw new Error('Missing required argument \"hasher\"');\n const value = codec.decode(bytes);\n const hash = await hasher.digest(bytes);\n if (!binary.equals(cid.multihash.bytes, hash.bytes)) {\n throw new Error('CID hash does not match bytes');\n }\n return createUnsafe({\n bytes,\n cid,\n value,\n codec\n });\n}\n//# sourceMappingURL=block.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","export const MODÉRATEUR = \"MODÉRATEUR\";\nexport const MEMBRE = \"MEMBRE\";\nexport const rôles = [MODÉRATEUR, MEMBRE];\n//# sourceMappingURL=consts.js.map","import { Database, } from \"@orbitdb/core\";\nconst type = \"feed\";\nconst Feed = () => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate, }) => {\n const database = await Database({\n ipfs,\n identity,\n address,\n name,\n access,\n directory,\n meta,\n headsStorage,\n entryStorage,\n indexStorage,\n referencesCount,\n syncAutomatically,\n onUpdate,\n });\n const { addOperation, log } = database;\n const add = async (value) => {\n return addOperation({ op: \"ADD\", key: null, value });\n };\n const remove = async (hash) => {\n return addOperation({ op: \"DEL\", key: null, value: hash });\n };\n const iterator = async function* ({ amount, } = {}) {\n const vals = {};\n let count = 0;\n for await (const entry of log.traverse()) {\n const { op, value } = entry.payload;\n const { hash } = entry;\n if (op === \"ADD\" && !vals[hash]) {\n count++;\n const hash = entry.hash;\n vals[hash] = true;\n yield { value, hash };\n }\n else if (op === \"DEL\" && !vals[value]) {\n vals[value] = true;\n }\n if (amount !== undefined && count >= amount) {\n break;\n }\n }\n };\n const all = async () => {\n const values = [];\n for await (const entry of iterator()) {\n values.unshift(entry);\n }\n return values;\n };\n return {\n ...database,\n type,\n add,\n remove,\n iterator,\n all,\n };\n};\nFeed.type = type;\nexport default Feed;\n//# sourceMappingURL=feed.js.map","import { useDatabaseType } from \"@orbitdb/core\";\nimport Feed from \"./feed.js\";\nexport const registerFeed = () => useDatabaseType(Feed);\n//# sourceMappingURL=utils.js.map","import { Database, } from \"@orbitdb/core\";\nconst type = \"set\";\nconst Set = () => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate, }) => {\n const database = await Database({\n ipfs,\n identity,\n address,\n name,\n access,\n directory,\n meta,\n headsStorage,\n entryStorage,\n indexStorage,\n referencesCount,\n syncAutomatically,\n onUpdate,\n });\n const { addOperation, log } = database;\n const add = async (value) => {\n return addOperation({ op: \"ADD\", key: null, value });\n };\n const del = async (value) => {\n return addOperation({ op: \"DEL\", key: null, value });\n };\n const iterator = async function* ({ amount, } = {}) {\n const vals = {};\n let count = 0;\n for await (const entry of log.traverse()) {\n const { op, value } = entry.payload;\n const key = JSON.stringify(value);\n if (op === \"ADD\" && !vals[key]) {\n vals[key] = true;\n count++;\n const hash = entry.hash;\n yield { value, hash };\n }\n else if (op === \"DEL\" && !vals[key]) {\n vals[key] = true;\n }\n if (amount !== undefined && count >= amount) {\n break;\n }\n }\n };\n const all = async () => {\n const values = [];\n for await (const entry of iterator()) {\n values.unshift(entry);\n }\n return values;\n };\n return {\n ...database,\n type,\n add,\n del,\n iterator,\n all,\n };\n};\nSet.type = type;\nexport default Set;\n//# sourceMappingURL=set.js.map","import { useDatabaseType } from \"@orbitdb/core\";\nimport Set from \"./set.js\";\nexport const registerSet = () => useDatabaseType(Set);\n//# sourceMappingURL=utils.js.map","import { Database, } from \"@orbitdb/core\";\nconst type = \"ordered-keyvalue\";\nconst OrderedKeyValue = () => async ({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate, }) => {\n const database = await Database({\n ipfs,\n identity,\n address,\n name,\n access,\n directory,\n meta,\n headsStorage,\n entryStorage,\n indexStorage,\n referencesCount,\n syncAutomatically,\n onUpdate,\n });\n const { addOperation, log } = database;\n const put = async (key, value, position) => {\n const entryValue = { value };\n if (position !== undefined) {\n entryValue.position = position;\n }\n return addOperation({ op: \"PUT\", key, value: entryValue });\n };\n const move = async (key, position) => {\n return addOperation({ op: \"MOVE\", key, value: position });\n };\n const del = async (key) => {\n return addOperation({ op: \"DEL\", key, value: null });\n };\n const get = async (key) => {\n for await (const entry of log.traverse()) {\n const { op, key: k, value } = entry.payload;\n if (op === \"PUT\" && k === key) {\n return value;\n }\n else if (op === \"DEL\" && k === key) {\n return undefined;\n }\n }\n return undefined;\n };\n const iterator = async function* ({ amount, } = {}) {\n const keys = {};\n const positions = {};\n let count = 0;\n for await (const entry of log.traverse()) {\n const { op, key, value } = entry.payload;\n if (!key)\n return;\n if (op === \"PUT\" && !keys[key]) {\n keys[key] = true;\n const putValue = value;\n const hash = entry.hash;\n const position = positions[key] !== undefined\n ? positions[key]\n : putValue.position !== undefined\n ? putValue.position\n : 0;\n positions[key] = position;\n count++;\n yield { key, value: putValue.value, position, hash };\n }\n else if (op === \"MOVE\" && !keys[key]) {\n positions[key] = value;\n }\n else if (op === \"DEL\" && !keys[key]) {\n keys[key] = true;\n }\n if (amount !== undefined && count >= amount) {\n break;\n }\n }\n };\n const all = async () => {\n const values = [];\n for await (const entry of iterator()) {\n values.unshift(entry);\n }\n return values\n .sort((a, b) => a.position > b.position ? 1 : a.position === b.position ? 0 : -1)\n .map((x) => ({\n key: x.key,\n value: x.value,\n hash: x.hash,\n }));\n };\n return {\n ...database,\n type,\n put,\n set: put, // Alias for put()\n del,\n move,\n get,\n iterator,\n all,\n };\n};\nOrderedKeyValue.type = type;\nexport default OrderedKeyValue;\n//# sourceMappingURL=ordered-keyvalue.js.map","import { useDatabaseType } from \"@orbitdb/core\";\nimport OrderedKeyValue from \"./ordered-keyvalue.js\";\nexport const registerOrderedKeyValue = () => useDatabaseType(OrderedKeyValue);\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nclass _CodeOrName {\n}\nexports._CodeOrName = _CodeOrName;\nexports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nclass Name extends _CodeOrName {\n constructor(s) {\n super();\n if (!exports.IDENTIFIER.test(s))\n throw new Error(\"CodeGen: name must be a valid identifier\");\n this.str = s;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n return false;\n }\n get names() {\n return { [this.str]: 1 };\n }\n}\nexports.Name = Name;\nclass _Code extends _CodeOrName {\n constructor(code) {\n super();\n this._items = typeof code === \"string\" ? [code] : code;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n if (this._items.length > 1)\n return false;\n const item = this._items[0];\n return item === \"\" || item === '\"\"';\n }\n get str() {\n var _a;\n return ((_a = this._str) !== null && _a !== void 0 ? _a : (this._str = this._items.reduce((s, c) => `${s}${c}`, \"\")));\n }\n get names() {\n var _a;\n return ((_a = this._names) !== null && _a !== void 0 ? _a : (this._names = this._items.reduce((names, c) => {\n if (c instanceof Name)\n names[c.str] = (names[c.str] || 0) + 1;\n return names;\n }, {})));\n }\n}\nexports._Code = _Code;\nexports.nil = new _Code(\"\");\nfunction _(strs, ...args) {\n const code = [strs[0]];\n let i = 0;\n while (i < args.length) {\n addCodeArg(code, args[i]);\n code.push(strs[++i]);\n }\n return new _Code(code);\n}\nexports._ = _;\nconst plus = new _Code(\"+\");\nfunction str(strs, ...args) {\n const expr = [safeStringify(strs[0])];\n let i = 0;\n while (i < args.length) {\n expr.push(plus);\n addCodeArg(expr, args[i]);\n expr.push(plus, safeStringify(strs[++i]));\n }\n optimize(expr);\n return new _Code(expr);\n}\nexports.str = str;\nfunction addCodeArg(code, arg) {\n if (arg instanceof _Code)\n code.push(...arg._items);\n else if (arg instanceof Name)\n code.push(arg);\n else\n code.push(interpolate(arg));\n}\nexports.addCodeArg = addCodeArg;\nfunction optimize(expr) {\n let i = 1;\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1]);\n if (res !== undefined) {\n expr.splice(i - 1, 3, res);\n continue;\n }\n expr[i++] = \"+\";\n }\n i++;\n }\n}\nfunction mergeExprItems(a, b) {\n if (b === '\"\"')\n return a;\n if (a === '\"\"')\n return b;\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"')\n return;\n if (typeof b != \"string\")\n return `${a.slice(0, -1)}${b}\"`;\n if (b[0] === '\"')\n return a.slice(0, -1) + b.slice(1);\n return;\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name))\n return `\"${a}${b.slice(1)}`;\n return;\n}\nfunction strConcat(c1, c2) {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str `${c1}${c2}`;\n}\nexports.strConcat = strConcat;\n// TODO do not allow arrays here\nfunction interpolate(x) {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x);\n}\nfunction stringify(x) {\n return new _Code(safeStringify(x));\n}\nexports.stringify = stringify;\nfunction safeStringify(x) {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\nexports.safeStringify = safeStringify;\nfunction getProperty(key) {\n return typeof key == \"string\" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _ `[${key}]`;\n}\nexports.getProperty = getProperty;\n//Does best effort to format the name properly\nfunction getEsmExportName(key) {\n if (typeof key == \"string\" && exports.IDENTIFIER.test(key)) {\n return new _Code(`${key}`);\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`);\n}\nexports.getEsmExportName = getEsmExportName;\nfunction regexpCode(rx) {\n return new _Code(rx.toString());\n}\nexports.regexpCode = regexpCode;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0;\nconst code_1 = require(\"./code\");\nclass ValueError extends Error {\n constructor(name) {\n super(`CodeGen: \"code\" for ${name} not defined`);\n this.value = name.value;\n }\n}\nvar UsedValueState;\n(function (UsedValueState) {\n UsedValueState[UsedValueState[\"Started\"] = 0] = \"Started\";\n UsedValueState[UsedValueState[\"Completed\"] = 1] = \"Completed\";\n})(UsedValueState || (exports.UsedValueState = UsedValueState = {}));\nexports.varKinds = {\n const: new code_1.Name(\"const\"),\n let: new code_1.Name(\"let\"),\n var: new code_1.Name(\"var\"),\n};\nclass Scope {\n constructor({ prefixes, parent } = {}) {\n this._names = {};\n this._prefixes = prefixes;\n this._parent = parent;\n }\n toName(nameOrPrefix) {\n return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix);\n }\n name(prefix) {\n return new code_1.Name(this._newName(prefix));\n }\n _newName(prefix) {\n const ng = this._names[prefix] || this._nameGroup(prefix);\n return `${prefix}${ng.index++}`;\n }\n _nameGroup(prefix) {\n var _a, _b;\n if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`);\n }\n return (this._names[prefix] = { prefix, index: 0 });\n }\n}\nexports.Scope = Scope;\nclass ValueScopeName extends code_1.Name {\n constructor(prefix, nameStr) {\n super(nameStr);\n this.prefix = prefix;\n }\n setValue(value, { property, itemIndex }) {\n this.value = value;\n this.scopePath = (0, code_1._) `.${new code_1.Name(property)}[${itemIndex}]`;\n }\n}\nexports.ValueScopeName = ValueScopeName;\nconst line = (0, code_1._) `\\n`;\nclass ValueScope extends Scope {\n constructor(opts) {\n super(opts);\n this._values = {};\n this._scope = opts.scope;\n this.opts = { ...opts, _n: opts.lines ? line : code_1.nil };\n }\n get() {\n return this._scope;\n }\n name(prefix) {\n return new ValueScopeName(prefix, this._newName(prefix));\n }\n value(nameOrPrefix, value) {\n var _a;\n if (value.ref === undefined)\n throw new Error(\"CodeGen: ref must be passed in value\");\n const name = this.toName(nameOrPrefix);\n const { prefix } = name;\n const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref;\n let vs = this._values[prefix];\n if (vs) {\n const _name = vs.get(valueKey);\n if (_name)\n return _name;\n }\n else {\n vs = this._values[prefix] = new Map();\n }\n vs.set(valueKey, name);\n const s = this._scope[prefix] || (this._scope[prefix] = []);\n const itemIndex = s.length;\n s[itemIndex] = value.ref;\n name.setValue(value, { property: prefix, itemIndex });\n return name;\n }\n getValue(prefix, keyOrRef) {\n const vs = this._values[prefix];\n if (!vs)\n return;\n return vs.get(keyOrRef);\n }\n scopeRefs(scopeName, values = this._values) {\n return this._reduceValues(values, (name) => {\n if (name.scopePath === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return (0, code_1._) `${scopeName}${name.scopePath}`;\n });\n }\n scopeCode(values = this._values, usedValues, getCode) {\n return this._reduceValues(values, (name) => {\n if (name.value === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return name.value.code;\n }, usedValues, getCode);\n }\n _reduceValues(values, valueCode, usedValues = {}, getCode) {\n let code = code_1.nil;\n for (const prefix in values) {\n const vs = values[prefix];\n if (!vs)\n continue;\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map());\n vs.forEach((name) => {\n if (nameSet.has(name))\n return;\n nameSet.set(name, UsedValueState.Started);\n let c = valueCode(name);\n if (c) {\n const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const;\n code = (0, code_1._) `${code}${def} ${name} = ${c};${this.opts._n}`;\n }\n else if ((c = getCode === null || getCode === void 0 ? void 0 : getCode(name))) {\n code = (0, code_1._) `${code}${c}${this.opts._n}`;\n }\n else {\n throw new ValueError(name);\n }\n nameSet.set(name, UsedValueState.Completed);\n });\n }\n return code;\n }\n}\nexports.ValueScope = ValueScope;\n//# sourceMappingURL=scope.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;\nconst code_1 = require(\"./code\");\nconst scope_1 = require(\"./scope\");\nvar code_2 = require(\"./code\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return code_2._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return code_2.str; } });\nObject.defineProperty(exports, \"strConcat\", { enumerable: true, get: function () { return code_2.strConcat; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return code_2.nil; } });\nObject.defineProperty(exports, \"getProperty\", { enumerable: true, get: function () { return code_2.getProperty; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return code_2.stringify; } });\nObject.defineProperty(exports, \"regexpCode\", { enumerable: true, get: function () { return code_2.regexpCode; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return code_2.Name; } });\nvar scope_2 = require(\"./scope\");\nObject.defineProperty(exports, \"Scope\", { enumerable: true, get: function () { return scope_2.Scope; } });\nObject.defineProperty(exports, \"ValueScope\", { enumerable: true, get: function () { return scope_2.ValueScope; } });\nObject.defineProperty(exports, \"ValueScopeName\", { enumerable: true, get: function () { return scope_2.ValueScopeName; } });\nObject.defineProperty(exports, \"varKinds\", { enumerable: true, get: function () { return scope_2.varKinds; } });\nexports.operators = {\n GT: new code_1._Code(\">\"),\n GTE: new code_1._Code(\">=\"),\n LT: new code_1._Code(\"<\"),\n LTE: new code_1._Code(\"<=\"),\n EQ: new code_1._Code(\"===\"),\n NEQ: new code_1._Code(\"!==\"),\n NOT: new code_1._Code(\"!\"),\n OR: new code_1._Code(\"||\"),\n AND: new code_1._Code(\"&&\"),\n ADD: new code_1._Code(\"+\"),\n};\nclass Node {\n optimizeNodes() {\n return this;\n }\n optimizeNames(_names, _constants) {\n return this;\n }\n}\nclass Def extends Node {\n constructor(varKind, name, rhs) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.rhs = rhs;\n }\n render({ es5, _n }) {\n const varKind = es5 ? scope_1.varKinds.var : this.varKind;\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`;\n return `${varKind} ${this.name}${rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (!names[this.name.str])\n return;\n if (this.rhs)\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {};\n }\n}\nclass Assign extends Node {\n constructor(lhs, rhs, sideEffects) {\n super();\n this.lhs = lhs;\n this.rhs = rhs;\n this.sideEffects = sideEffects;\n }\n render({ _n }) {\n return `${this.lhs} = ${this.rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)\n return;\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names };\n return addExprNames(names, this.rhs);\n }\n}\nclass AssignOp extends Assign {\n constructor(lhs, op, rhs, sideEffects) {\n super(lhs, rhs, sideEffects);\n this.op = op;\n }\n render({ _n }) {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n;\n }\n}\nclass Label extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n return `${this.label}:` + _n;\n }\n}\nclass Break extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n const label = this.label ? ` ${this.label}` : \"\";\n return `break${label};` + _n;\n }\n}\nclass Throw extends Node {\n constructor(error) {\n super();\n this.error = error;\n }\n render({ _n }) {\n return `throw ${this.error};` + _n;\n }\n get names() {\n return this.error.names;\n }\n}\nclass AnyCode extends Node {\n constructor(code) {\n super();\n this.code = code;\n }\n render({ _n }) {\n return `${this.code};` + _n;\n }\n optimizeNodes() {\n return `${this.code}` ? this : undefined;\n }\n optimizeNames(names, constants) {\n this.code = optimizeExpr(this.code, names, constants);\n return this;\n }\n get names() {\n return this.code instanceof code_1._CodeOrName ? this.code.names : {};\n }\n}\nclass ParentNode extends Node {\n constructor(nodes = []) {\n super();\n this.nodes = nodes;\n }\n render(opts) {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\");\n }\n optimizeNodes() {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n const n = nodes[i].optimizeNodes();\n if (Array.isArray(n))\n nodes.splice(i, 1, ...n);\n else if (n)\n nodes[i] = n;\n else\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n optimizeNames(names, constants) {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i];\n if (n.optimizeNames(names, constants))\n continue;\n subtractNames(names, n.names);\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n get names() {\n return this.nodes.reduce((names, n) => addNames(names, n.names), {});\n }\n}\nclass BlockNode extends ParentNode {\n render(opts) {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n;\n }\n}\nclass Root extends ParentNode {\n}\nclass Else extends BlockNode {\n}\nElse.kind = \"else\";\nclass If extends BlockNode {\n constructor(condition, nodes) {\n super(nodes);\n this.condition = condition;\n }\n render(opts) {\n let code = `if(${this.condition})` + super.render(opts);\n if (this.else)\n code += \"else \" + this.else.render(opts);\n return code;\n }\n optimizeNodes() {\n super.optimizeNodes();\n const cond = this.condition;\n if (cond === true)\n return this.nodes; // else is ignored here\n let e = this.else;\n if (e) {\n const ns = e.optimizeNodes();\n e = this.else = Array.isArray(ns) ? new Else(ns) : ns;\n }\n if (e) {\n if (cond === false)\n return e instanceof If ? e : e.nodes;\n if (this.nodes.length)\n return this;\n return new If(not(cond), e instanceof If ? [e] : e.nodes);\n }\n if (cond === false || !this.nodes.length)\n return undefined;\n return this;\n }\n optimizeNames(names, constants) {\n var _a;\n this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n if (!(super.optimizeNames(names, constants) || this.else))\n return;\n this.condition = optimizeExpr(this.condition, names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n addExprNames(names, this.condition);\n if (this.else)\n addNames(names, this.else.names);\n return names;\n }\n}\nIf.kind = \"if\";\nclass For extends BlockNode {\n}\nFor.kind = \"for\";\nclass ForLoop extends For {\n constructor(iteration) {\n super();\n this.iteration = iteration;\n }\n render(opts) {\n return `for(${this.iteration})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iteration = optimizeExpr(this.iteration, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iteration.names);\n }\n}\nclass ForRange extends For {\n constructor(varKind, name, from, to) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.from = from;\n this.to = to;\n }\n render(opts) {\n const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind;\n const { name, from, to } = this;\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts);\n }\n get names() {\n const names = addExprNames(super.names, this.from);\n return addExprNames(names, this.to);\n }\n}\nclass ForIter extends For {\n constructor(loop, varKind, name, iterable) {\n super();\n this.loop = loop;\n this.varKind = varKind;\n this.name = name;\n this.iterable = iterable;\n }\n render(opts) {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iterable = optimizeExpr(this.iterable, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iterable.names);\n }\n}\nclass Func extends BlockNode {\n constructor(name, args, async) {\n super();\n this.name = name;\n this.args = args;\n this.async = async;\n }\n render(opts) {\n const _async = this.async ? \"async \" : \"\";\n return `${_async}function ${this.name}(${this.args})` + super.render(opts);\n }\n}\nFunc.kind = \"func\";\nclass Return extends ParentNode {\n render(opts) {\n return \"return \" + super.render(opts);\n }\n}\nReturn.kind = \"return\";\nclass Try extends BlockNode {\n render(opts) {\n let code = \"try\" + super.render(opts);\n if (this.catch)\n code += this.catch.render(opts);\n if (this.finally)\n code += this.finally.render(opts);\n return code;\n }\n optimizeNodes() {\n var _a, _b;\n super.optimizeNodes();\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes();\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes();\n return this;\n }\n optimizeNames(names, constants) {\n var _a, _b;\n super.optimizeNames(names, constants);\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n if (this.catch)\n addNames(names, this.catch.names);\n if (this.finally)\n addNames(names, this.finally.names);\n return names;\n }\n}\nclass Catch extends BlockNode {\n constructor(error) {\n super();\n this.error = error;\n }\n render(opts) {\n return `catch(${this.error})` + super.render(opts);\n }\n}\nCatch.kind = \"catch\";\nclass Finally extends BlockNode {\n render(opts) {\n return \"finally\" + super.render(opts);\n }\n}\nFinally.kind = \"finally\";\nclass CodeGen {\n constructor(extScope, opts = {}) {\n this._values = {};\n this._blockStarts = [];\n this._constants = {};\n this.opts = { ...opts, _n: opts.lines ? \"\\n\" : \"\" };\n this._extScope = extScope;\n this._scope = new scope_1.Scope({ parent: extScope });\n this._nodes = [new Root()];\n }\n toString() {\n return this._root.render(this.opts);\n }\n // returns unique name in the internal scope\n name(prefix) {\n return this._scope.name(prefix);\n }\n // reserves unique name in the external scope\n scopeName(prefix) {\n return this._extScope.name(prefix);\n }\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName, value) {\n const name = this._extScope.value(prefixOrName, value);\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set());\n vs.add(name);\n return name;\n }\n getScopeValue(prefix, keyOrRef) {\n return this._extScope.getValue(prefix, keyOrRef);\n }\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName) {\n return this._extScope.scopeRefs(scopeName, this._values);\n }\n scopeCode() {\n return this._extScope.scopeCode(this._values);\n }\n _def(varKind, nameOrPrefix, rhs, constant) {\n const name = this._scope.toName(nameOrPrefix);\n if (rhs !== undefined && constant)\n this._constants[name.str] = rhs;\n this._leafNode(new Def(varKind, name, rhs));\n return name;\n }\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant);\n }\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant);\n }\n // `var` declaration with optional assignment\n var(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant);\n }\n // assignment code\n assign(lhs, rhs, sideEffects) {\n return this._leafNode(new Assign(lhs, rhs, sideEffects));\n }\n // `+=` code\n add(lhs, rhs) {\n return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs));\n }\n // appends passed SafeExpr to code or executes Block\n code(c) {\n if (typeof c == \"function\")\n c();\n else if (c !== code_1.nil)\n this._leafNode(new AnyCode(c));\n return this;\n }\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues) {\n const code = [\"{\"];\n for (const [key, value] of keyValues) {\n if (code.length > 1)\n code.push(\",\");\n code.push(key);\n if (key !== value || this.opts.es5) {\n code.push(\":\");\n (0, code_1.addCodeArg)(code, value);\n }\n }\n code.push(\"}\");\n return new code_1._Code(code);\n }\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition, thenBody, elseBody) {\n this._blockNode(new If(condition));\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf();\n }\n else if (thenBody) {\n this.code(thenBody).endIf();\n }\n else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body');\n }\n return this;\n }\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition) {\n return this._elseNode(new If(condition));\n }\n // `else` clause - only valid after `if` or `else if` clauses\n else() {\n return this._elseNode(new Else());\n }\n // end `if` statement (needed if gen.if was used only with condition)\n endIf() {\n return this._endBlockNode(If, Else);\n }\n _for(node, forBody) {\n this._blockNode(node);\n if (forBody)\n this.code(forBody).endFor();\n return this;\n }\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration, forBody) {\n return this._for(new ForLoop(iteration), forBody);\n }\n // `for` statement for a range of values\n forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) {\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name));\n }\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) {\n const name = this._scope.toName(nameOrPrefix);\n if (this.opts.es5) {\n const arr = iterable instanceof code_1.Name ? iterable : this.var(\"_arr\", iterable);\n return this.forRange(\"_i\", 0, (0, code_1._) `${arr}.length`, (i) => {\n this.var(name, (0, code_1._) `${arr}[${i}]`);\n forBody(name);\n });\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name));\n }\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, (0, code_1._) `Object.keys(${obj})`, forBody);\n }\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name));\n }\n // end `for` loop\n endFor() {\n return this._endBlockNode(For);\n }\n // `label` statement\n label(label) {\n return this._leafNode(new Label(label));\n }\n // `break` statement\n break(label) {\n return this._leafNode(new Break(label));\n }\n // `return` statement\n return(value) {\n const node = new Return();\n this._blockNode(node);\n this.code(value);\n if (node.nodes.length !== 1)\n throw new Error('CodeGen: \"return\" should have one node');\n return this._endBlockNode(Return);\n }\n // `try` statement\n try(tryBody, catchCode, finallyCode) {\n if (!catchCode && !finallyCode)\n throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"');\n const node = new Try();\n this._blockNode(node);\n this.code(tryBody);\n if (catchCode) {\n const error = this.name(\"e\");\n this._currNode = node.catch = new Catch(error);\n catchCode(error);\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally();\n this.code(finallyCode);\n }\n return this._endBlockNode(Catch, Finally);\n }\n // `throw` statement\n throw(error) {\n return this._leafNode(new Throw(error));\n }\n // start self-balancing block\n block(body, nodeCount) {\n this._blockStarts.push(this._nodes.length);\n if (body)\n this.code(body).endBlock(nodeCount);\n return this;\n }\n // end the current self-balancing block\n endBlock(nodeCount) {\n const len = this._blockStarts.pop();\n if (len === undefined)\n throw new Error(\"CodeGen: not in self-balancing block\");\n const toClose = this._nodes.length - len;\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);\n }\n this._nodes.length = len;\n return this;\n }\n // `function` heading (or definition if funcBody is passed)\n func(name, args = code_1.nil, async, funcBody) {\n this._blockNode(new Func(name, args, async));\n if (funcBody)\n this.code(funcBody).endFunc();\n return this;\n }\n // end function definition\n endFunc() {\n return this._endBlockNode(Func);\n }\n optimize(n = 1) {\n while (n-- > 0) {\n this._root.optimizeNodes();\n this._root.optimizeNames(this._root.names, this._constants);\n }\n }\n _leafNode(node) {\n this._currNode.nodes.push(node);\n return this;\n }\n _blockNode(node) {\n this._currNode.nodes.push(node);\n this._nodes.push(node);\n }\n _endBlockNode(N1, N2) {\n const n = this._currNode;\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop();\n return this;\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`);\n }\n _elseNode(node) {\n const n = this._currNode;\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"');\n }\n this._currNode = n.else = node;\n return this;\n }\n get _root() {\n return this._nodes[0];\n }\n get _currNode() {\n const ns = this._nodes;\n return ns[ns.length - 1];\n }\n set _currNode(node) {\n const ns = this._nodes;\n ns[ns.length - 1] = node;\n }\n}\nexports.CodeGen = CodeGen;\nfunction addNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) + (from[n] || 0);\n return names;\n}\nfunction addExprNames(names, from) {\n return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;\n}\nfunction optimizeExpr(expr, names, constants) {\n if (expr instanceof code_1.Name)\n return replaceName(expr);\n if (!canOptimize(expr))\n return expr;\n return new code_1._Code(expr._items.reduce((items, c) => {\n if (c instanceof code_1.Name)\n c = replaceName(c);\n if (c instanceof code_1._Code)\n items.push(...c._items);\n else\n items.push(c);\n return items;\n }, []));\n function replaceName(n) {\n const c = constants[n.str];\n if (c === undefined || names[n.str] !== 1)\n return n;\n delete names[n.str];\n return c;\n }\n function canOptimize(e) {\n return (e instanceof code_1._Code &&\n e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== undefined));\n }\n}\nfunction subtractNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) - (from[n] || 0);\n}\nfunction not(x) {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : (0, code_1._) `!${par(x)}`;\n}\nexports.not = not;\nconst andCode = mappend(exports.operators.AND);\n// boolean AND (&&) expression with the passed arguments\nfunction and(...args) {\n return args.reduce(andCode);\n}\nexports.and = and;\nconst orCode = mappend(exports.operators.OR);\n// boolean OR (||) expression with the passed arguments\nfunction or(...args) {\n return args.reduce(orCode);\n}\nexports.or = or;\nfunction mappend(op) {\n return (x, y) => (x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._) `${par(x)} ${op} ${par(y)}`);\n}\nfunction par(x) {\n return x instanceof code_1.Name ? x : (0, code_1._) `(${x})`;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst code_1 = require(\"./codegen/code\");\n// TODO refactor to use Set\nfunction toHash(arr) {\n const hash = {};\n for (const item of arr)\n hash[item] = true;\n return hash;\n}\nexports.toHash = toHash;\nfunction alwaysValidSchema(it, schema) {\n if (typeof schema == \"boolean\")\n return schema;\n if (Object.keys(schema).length === 0)\n return true;\n checkUnknownRules(it, schema);\n return !schemaHasRules(schema, it.self.RULES.all);\n}\nexports.alwaysValidSchema = alwaysValidSchema;\nfunction checkUnknownRules(it, schema = it.schema) {\n const { opts, self } = it;\n if (!opts.strictSchema)\n return;\n if (typeof schema === \"boolean\")\n return;\n const rules = self.RULES.keywords;\n for (const key in schema) {\n if (!rules[key])\n checkStrictMode(it, `unknown keyword: \"${key}\"`);\n }\n}\nexports.checkUnknownRules = checkUnknownRules;\nfunction schemaHasRules(schema, rules) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (rules[key])\n return true;\n return false;\n}\nexports.schemaHasRules = schemaHasRules;\nfunction schemaHasRulesButRef(schema, RULES) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (key !== \"$ref\" && RULES.all[key])\n return true;\n return false;\n}\nexports.schemaHasRulesButRef = schemaHasRulesButRef;\nfunction schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\")\n return schema;\n if (typeof schema == \"string\")\n return (0, codegen_1._) `${schema}`;\n }\n return (0, codegen_1._) `${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`;\n}\nexports.schemaRefOrVal = schemaRefOrVal;\nfunction unescapeFragment(str) {\n return unescapeJsonPointer(decodeURIComponent(str));\n}\nexports.unescapeFragment = unescapeFragment;\nfunction escapeFragment(str) {\n return encodeURIComponent(escapeJsonPointer(str));\n}\nexports.escapeFragment = escapeFragment;\nfunction escapeJsonPointer(str) {\n if (typeof str == \"number\")\n return `${str}`;\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nexports.escapeJsonPointer = escapeJsonPointer;\nfunction unescapeJsonPointer(str) {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\nexports.unescapeJsonPointer = unescapeJsonPointer;\nfunction eachItem(xs, f) {\n if (Array.isArray(xs)) {\n for (const x of xs)\n f(x);\n }\n else {\n f(xs);\n }\n}\nexports.eachItem = eachItem;\nfunction makeMergeEvaluated({ mergeNames, mergeToName, mergeValues, resultToName, }) {\n return (gen, from, to, toName) => {\n const res = to === undefined\n ? from\n : to instanceof codegen_1.Name\n ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof codegen_1.Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to);\n return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res;\n };\n}\nexports.mergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => {\n gen.if((0, codegen_1._) `${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._) `${to} || {}`).code((0, codegen_1._) `Object.assign(${to}, ${from})`));\n }),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true);\n }\n else {\n gen.assign(to, (0, codegen_1._) `${to} || {}`);\n setEvaluated(gen, to, from);\n }\n }),\n mergeValues: (from, to) => (from === true ? true : { ...from, ...to }),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._) `${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._) `${to} > ${from} ? ${to} : ${from}`)),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n};\nfunction evaluatedPropsToName(gen, ps) {\n if (ps === true)\n return gen.var(\"props\", true);\n const props = gen.var(\"props\", (0, codegen_1._) `{}`);\n if (ps !== undefined)\n setEvaluated(gen, props, ps);\n return props;\n}\nexports.evaluatedPropsToName = evaluatedPropsToName;\nfunction setEvaluated(gen, props, ps) {\n Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._) `${props}${(0, codegen_1.getProperty)(p)}`, true));\n}\nexports.setEvaluated = setEvaluated;\nconst snippets = {};\nfunction useFunc(gen, f) {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)),\n });\n}\nexports.useFunc = useFunc;\nvar Type;\n(function (Type) {\n Type[Type[\"Num\"] = 0] = \"Num\";\n Type[Type[\"Str\"] = 1] = \"Str\";\n})(Type || (exports.Type = Type = {}));\nfunction getErrorPath(dataProp, dataPropType, jsPropertySyntax) {\n // let path\n if (dataProp instanceof codegen_1.Name) {\n const isNumber = dataPropType === Type.Num;\n return jsPropertySyntax\n ? isNumber\n ? (0, codegen_1._) `\"[\" + ${dataProp} + \"]\"`\n : (0, codegen_1._) `\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? (0, codegen_1._) `\"/\" + ${dataProp}`\n : (0, codegen_1._) `\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")`; // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp);\n}\nexports.getErrorPath = getErrorPath;\nfunction checkStrictMode(it, msg, mode = it.opts.strictSchema) {\n if (!mode)\n return;\n msg = `strict mode: ${msg}`;\n if (mode === true)\n throw new Error(msg);\n it.self.logger.warn(msg);\n}\nexports.checkStrictMode = checkStrictMode;\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"./codegen\");\nconst names = {\n // validation function arguments\n data: new codegen_1.Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new codegen_1.Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new codegen_1.Name(\"instancePath\"),\n parentData: new codegen_1.Name(\"parentData\"),\n parentDataProperty: new codegen_1.Name(\"parentDataProperty\"),\n rootData: new codegen_1.Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new codegen_1.Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new codegen_1.Name(\"vErrors\"), // null or array of validation errors\n errors: new codegen_1.Name(\"errors\"), // counter of validation errors\n this: new codegen_1.Name(\"this\"),\n // \"globals\"\n self: new codegen_1.Name(\"self\"),\n scope: new codegen_1.Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new codegen_1.Name(\"json\"),\n jsonPos: new codegen_1.Name(\"jsonPos\"),\n jsonLen: new codegen_1.Name(\"jsonLen\"),\n jsonPart: new codegen_1.Name(\"jsonPart\"),\n};\nexports.default = names;\n//# sourceMappingURL=names.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst util_1 = require(\"./util\");\nconst names_1 = require(\"./names\");\nexports.keywordError = {\n message: ({ keyword }) => (0, codegen_1.str) `must pass \"${keyword}\" keyword validation`,\n};\nexports.keyword$DataError = {\n message: ({ keyword, schemaType }) => schemaType\n ? (0, codegen_1.str) `\"${keyword}\" keyword must be ${schemaType} ($data)`\n : (0, codegen_1.str) `\"${keyword}\" keyword is invalid ($data)`,\n};\nfunction reportError(cxt, error = exports.keywordError, errorPaths, overrideAllErrors) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : (compositeRule || allErrors)) {\n addError(gen, errObj);\n }\n else {\n returnErrors(it, (0, codegen_1._) `[${errObj}]`);\n }\n}\nexports.reportError = reportError;\nfunction reportExtraError(cxt, error = exports.keywordError, errorPaths) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n addError(gen, errObj);\n if (!(compositeRule || allErrors)) {\n returnErrors(it, names_1.default.vErrors);\n }\n}\nexports.reportExtraError = reportExtraError;\nfunction resetErrorsCount(gen, errsCount) {\n gen.assign(names_1.default.errors, errsCount);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._) `${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null)));\n}\nexports.resetErrorsCount = resetErrorsCount;\nfunction extendErrors({ gen, keyword, schemaValue, data, errsCount, it, }) {\n /* istanbul ignore if */\n if (errsCount === undefined)\n throw new Error(\"ajv implementation error\");\n const err = gen.name(\"err\");\n gen.forRange(\"i\", errsCount, names_1.default.errors, (i) => {\n gen.const(err, (0, codegen_1._) `${names_1.default.vErrors}[${i}]`);\n gen.if((0, codegen_1._) `${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._) `${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath)));\n gen.assign((0, codegen_1._) `${err}.schemaPath`, (0, codegen_1.str) `${it.errSchemaPath}/${keyword}`);\n if (it.opts.verbose) {\n gen.assign((0, codegen_1._) `${err}.schema`, schemaValue);\n gen.assign((0, codegen_1._) `${err}.data`, data);\n }\n });\n}\nexports.extendErrors = extendErrors;\nfunction addError(gen, errObj) {\n const err = gen.const(\"err\", errObj);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._) `[${err}]`), (0, codegen_1._) `${names_1.default.vErrors}.push(${err})`);\n gen.code((0, codegen_1._) `${names_1.default.errors}++`);\n}\nfunction returnErrors(it, errs) {\n const { gen, validateName, schemaEnv } = it;\n if (schemaEnv.$async) {\n gen.throw((0, codegen_1._) `new ${it.ValidationError}(${errs})`);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, errs);\n gen.return(false);\n }\n}\nconst E = {\n keyword: new codegen_1.Name(\"keyword\"),\n schemaPath: new codegen_1.Name(\"schemaPath\"), // also used in JTD errors\n params: new codegen_1.Name(\"params\"),\n propertyName: new codegen_1.Name(\"propertyName\"),\n message: new codegen_1.Name(\"message\"),\n schema: new codegen_1.Name(\"schema\"),\n parentSchema: new codegen_1.Name(\"parentSchema\"),\n};\nfunction errorObjectCode(cxt, error, errorPaths) {\n const { createErrors } = cxt.it;\n if (createErrors === false)\n return (0, codegen_1._) `{}`;\n return errorObject(cxt, error, errorPaths);\n}\nfunction errorObject(cxt, error, errorPaths = {}) {\n const { gen, it } = cxt;\n const keyValues = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ];\n extraErrorProps(cxt, error, keyValues);\n return gen.object(...keyValues);\n}\nfunction errorInstancePath({ errorPath }, { instancePath }) {\n const instPath = instancePath\n ? (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}`\n : errorPath;\n return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)];\n}\nfunction errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) {\n let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str) `${errSchemaPath}/${keyword}`;\n if (schemaPath) {\n schPath = (0, codegen_1.str) `${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`;\n }\n return [E.schemaPath, schPath];\n}\nfunction extraErrorProps(cxt, { params, message }, keyValues) {\n const { keyword, data, schemaValue, it } = cxt;\n const { opts, propertyName, topSchemaRef, schemaPath } = it;\n keyValues.push([E.keyword, keyword], [E.params, typeof params == \"function\" ? params(cxt) : params || (0, codegen_1._) `{}`]);\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message]);\n }\n if (opts.verbose) {\n keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._) `${topSchemaRef}${schemaPath}`], [names_1.default.data, data]);\n }\n if (propertyName)\n keyValues.push([E.propertyName, propertyName]);\n}\n//# sourceMappingURL=errors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0;\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst boolError = {\n message: \"boolean schema is false\",\n};\nfunction topBoolOrEmptySchema(it) {\n const { gen, schema, validateName } = it;\n if (schema === false) {\n falseSchemaError(it, false);\n }\n else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(names_1.default.data);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, null);\n gen.return(true);\n }\n}\nexports.topBoolOrEmptySchema = topBoolOrEmptySchema;\nfunction boolOrEmptySchema(it, valid) {\n const { gen, schema } = it;\n if (schema === false) {\n gen.var(valid, false); // TODO var\n falseSchemaError(it);\n }\n else {\n gen.var(valid, true); // TODO var\n }\n}\nexports.boolOrEmptySchema = boolOrEmptySchema;\nfunction falseSchemaError(it, overrideAllErrors) {\n const { gen, data } = it;\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n };\n (0, errors_1.reportError)(cxt, boolError, undefined, overrideAllErrors);\n}\n//# sourceMappingURL=boolSchema.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRules = exports.isJSONType = void 0;\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"];\nconst jsonTypes = new Set(_jsonTypes);\nfunction isJSONType(x) {\n return typeof x == \"string\" && jsonTypes.has(x);\n}\nexports.isJSONType = isJSONType;\nfunction getRules() {\n const groups = {\n number: { type: \"number\", rules: [] },\n string: { type: \"string\", rules: [] },\n array: { type: \"array\", rules: [] },\n object: { type: \"object\", rules: [] },\n };\n return {\n types: { ...groups, integer: true, boolean: true, null: true },\n rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object],\n post: { rules: [] },\n all: {},\n keywords: {},\n };\n}\nexports.getRules = getRules;\n//# sourceMappingURL=rules.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0;\nfunction schemaHasRulesForType({ schema, self }, type) {\n const group = self.RULES.types[type];\n return group && group !== true && shouldUseGroup(schema, group);\n}\nexports.schemaHasRulesForType = schemaHasRulesForType;\nfunction shouldUseGroup(schema, group) {\n return group.rules.some((rule) => shouldUseRule(schema, rule));\n}\nexports.shouldUseGroup = shouldUseGroup;\nfunction shouldUseRule(schema, rule) {\n var _a;\n return (schema[rule.keyword] !== undefined ||\n ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== undefined)));\n}\nexports.shouldUseRule = shouldUseRule;\n//# sourceMappingURL=applicability.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0;\nconst rules_1 = require(\"../rules\");\nconst applicability_1 = require(\"./applicability\");\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nvar DataType;\n(function (DataType) {\n DataType[DataType[\"Correct\"] = 0] = \"Correct\";\n DataType[DataType[\"Wrong\"] = 1] = \"Wrong\";\n})(DataType || (exports.DataType = DataType = {}));\nfunction getSchemaTypes(schema) {\n const types = getJSONTypes(schema.type);\n const hasNull = types.includes(\"null\");\n if (hasNull) {\n if (schema.nullable === false)\n throw new Error(\"type: null contradicts nullable: false\");\n }\n else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"');\n }\n if (schema.nullable === true)\n types.push(\"null\");\n }\n return types;\n}\nexports.getSchemaTypes = getSchemaTypes;\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nfunction getJSONTypes(ts) {\n const types = Array.isArray(ts) ? ts : ts ? [ts] : [];\n if (types.every(rules_1.isJSONType))\n return types;\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"));\n}\nexports.getJSONTypes = getJSONTypes;\nfunction coerceAndCheckDataType(it, types) {\n const { gen, data, opts } = it;\n const coerceTo = coerceToTypes(types, opts.coerceTypes);\n const checkTypes = types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0]));\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong);\n gen.if(wrongType, () => {\n if (coerceTo.length)\n coerceData(it, types, coerceTo);\n else\n reportTypeError(it);\n });\n }\n return checkTypes;\n}\nexports.coerceAndCheckDataType = coerceAndCheckDataType;\nconst COERCIBLE = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"]);\nfunction coerceToTypes(types, coerceTypes) {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : [];\n}\nfunction coerceData(it, types, coerceTo) {\n const { gen, data, opts } = it;\n const dataType = gen.let(\"dataType\", (0, codegen_1._) `typeof ${data}`);\n const coerced = gen.let(\"coerced\", (0, codegen_1._) `undefined`);\n if (opts.coerceTypes === \"array\") {\n gen.if((0, codegen_1._) `${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen\n .assign(data, (0, codegen_1._) `${data}[0]`)\n .assign(dataType, (0, codegen_1._) `typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data)));\n }\n gen.if((0, codegen_1._) `${coerced} !== undefined`);\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t);\n }\n }\n gen.else();\n reportTypeError(it);\n gen.endIf();\n gen.if((0, codegen_1._) `${coerced} !== undefined`, () => {\n gen.assign(data, coerced);\n assignParentData(it, coerced);\n });\n function coerceSpecificType(t) {\n switch (t) {\n case \"string\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, (0, codegen_1._) `\"\" + ${data}`)\n .elseIf((0, codegen_1._) `${data} === null`)\n .assign(coerced, (0, codegen_1._) `\"\"`);\n return;\n case \"number\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"integer\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"boolean\":\n gen\n .elseIf((0, codegen_1._) `${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf((0, codegen_1._) `${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true);\n return;\n case \"null\":\n gen.elseIf((0, codegen_1._) `${data} === \"\" || ${data} === 0 || ${data} === false`);\n gen.assign(coerced, null);\n return;\n case \"array\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`)\n .assign(coerced, (0, codegen_1._) `[${data}]`);\n }\n }\n}\nfunction assignParentData({ gen, parentData, parentDataProperty }, expr) {\n // TODO use gen.property\n gen.if((0, codegen_1._) `${parentData} !== undefined`, () => gen.assign((0, codegen_1._) `${parentData}[${parentDataProperty}]`, expr));\n}\nfunction checkDataType(dataType, data, strictNums, correct = DataType.Correct) {\n const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ;\n let cond;\n switch (dataType) {\n case \"null\":\n return (0, codegen_1._) `${data} ${EQ} null`;\n case \"array\":\n cond = (0, codegen_1._) `Array.isArray(${data})`;\n break;\n case \"object\":\n cond = (0, codegen_1._) `${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`;\n break;\n case \"integer\":\n cond = numCond((0, codegen_1._) `!(${data} % 1) && !isNaN(${data})`);\n break;\n case \"number\":\n cond = numCond();\n break;\n default:\n return (0, codegen_1._) `typeof ${data} ${EQ} ${dataType}`;\n }\n return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond);\n function numCond(_cond = codegen_1.nil) {\n return (0, codegen_1.and)((0, codegen_1._) `typeof ${data} == \"number\"`, _cond, strictNums ? (0, codegen_1._) `isFinite(${data})` : codegen_1.nil);\n }\n}\nexports.checkDataType = checkDataType;\nfunction checkDataTypes(dataTypes, data, strictNums, correct) {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct);\n }\n let cond;\n const types = (0, util_1.toHash)(dataTypes);\n if (types.array && types.object) {\n const notObj = (0, codegen_1._) `typeof ${data} != \"object\"`;\n cond = types.null ? notObj : (0, codegen_1._) `!${data} || ${notObj}`;\n delete types.null;\n delete types.array;\n delete types.object;\n }\n else {\n cond = codegen_1.nil;\n }\n if (types.number)\n delete types.integer;\n for (const t in types)\n cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct));\n return cond;\n}\nexports.checkDataTypes = checkDataTypes;\nconst typeError = {\n message: ({ schema }) => `must be ${schema}`,\n params: ({ schema, schemaValue }) => typeof schema == \"string\" ? (0, codegen_1._) `{type: ${schema}}` : (0, codegen_1._) `{type: ${schemaValue}}`,\n};\nfunction reportTypeError(it) {\n const cxt = getTypeErrorContext(it);\n (0, errors_1.reportError)(cxt, typeError);\n}\nexports.reportTypeError = reportTypeError;\nfunction getTypeErrorContext(it) {\n const { gen, data, schema } = it;\n const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, \"type\");\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n };\n}\n//# sourceMappingURL=dataType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assignDefaults = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction assignDefaults(it, ty) {\n const { properties, items } = it.schema;\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default);\n }\n }\n else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i) => assignDefault(it, i, sch.default));\n }\n}\nexports.assignDefaults = assignDefaults;\nfunction assignDefault(it, prop, defaultValue) {\n const { gen, compositeRule, data, opts } = it;\n if (defaultValue === undefined)\n return;\n const childData = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(prop)}`;\n if (compositeRule) {\n (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`);\n return;\n }\n let condition = (0, codegen_1._) `${childData} === undefined`;\n if (opts.useDefaults === \"empty\") {\n condition = (0, codegen_1._) `${condition} || ${childData} === null || ${childData} === \"\"`;\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, (0, codegen_1._) `${childData} = ${(0, codegen_1.stringify)(defaultValue)}`);\n}\n//# sourceMappingURL=defaults.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0;\nconst codegen_1 = require(\"../compile/codegen\");\nconst util_1 = require(\"../compile/util\");\nconst names_1 = require(\"../compile/names\");\nconst util_2 = require(\"../compile/util\");\nfunction checkReportMissingProp(cxt, prop) {\n const { gen, data, it } = cxt;\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({ missingProperty: (0, codegen_1._) `${prop}` }, true);\n cxt.error();\n });\n}\nexports.checkReportMissingProp = checkReportMissingProp;\nfunction checkMissingProp({ gen, data, it: { opts } }, properties, missing) {\n return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._) `${missing} = ${prop}`)));\n}\nexports.checkMissingProp = checkMissingProp;\nfunction reportMissingProp(cxt, missing) {\n cxt.setParams({ missingProperty: missing }, true);\n cxt.error();\n}\nexports.reportMissingProp = reportMissingProp;\nfunction hasPropFunc(gen) {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: (0, codegen_1._) `Object.prototype.hasOwnProperty`,\n });\n}\nexports.hasPropFunc = hasPropFunc;\nfunction isOwnProperty(gen, data, property) {\n return (0, codegen_1._) `${hasPropFunc(gen)}.call(${data}, ${property})`;\n}\nexports.isOwnProperty = isOwnProperty;\nfunction propertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} !== undefined`;\n return ownProperties ? (0, codegen_1._) `${cond} && ${isOwnProperty(gen, data, property)}` : cond;\n}\nexports.propertyInData = propertyInData;\nfunction noPropertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} === undefined`;\n return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond;\n}\nexports.noPropertyInData = noPropertyInData;\nfunction allSchemaProperties(schemaMap) {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : [];\n}\nexports.allSchemaProperties = allSchemaProperties;\nfunction schemaProperties(it, schemaMap) {\n return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p]));\n}\nexports.schemaProperties = schemaProperties;\nfunction callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) {\n const dataAndSchema = passSchema ? (0, codegen_1._) `${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data;\n const valCxt = [\n [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)],\n [names_1.default.parentData, it.parentData],\n [names_1.default.parentDataProperty, it.parentDataProperty],\n [names_1.default.rootData, names_1.default.rootData],\n ];\n if (it.opts.dynamicRef)\n valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]);\n const args = (0, codegen_1._) `${dataAndSchema}, ${gen.object(...valCxt)}`;\n return context !== codegen_1.nil ? (0, codegen_1._) `${func}.call(${context}, ${args})` : (0, codegen_1._) `${func}(${args})`;\n}\nexports.callValidateCode = callValidateCode;\nconst newRegExp = (0, codegen_1._) `new RegExp`;\nfunction usePattern({ gen, it: { opts } }, pattern) {\n const u = opts.unicodeRegExp ? \"u\" : \"\";\n const { regExp } = opts.code;\n const rx = regExp(pattern, u);\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: (0, codegen_1._) `${regExp.code === \"new RegExp\" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})`,\n });\n}\nexports.usePattern = usePattern;\nfunction validateArray(cxt) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true);\n validateItems(() => gen.assign(validArr, false));\n return validArr;\n }\n gen.var(valid, true);\n validateItems(() => gen.break());\n return valid;\n function validateItems(notValid) {\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword,\n dataProp: i,\n dataPropType: util_1.Type.Num,\n }, valid);\n gen.if((0, codegen_1.not)(valid), notValid);\n });\n }\n}\nexports.validateArray = validateArray;\nfunction validateUnion(cxt) {\n const { gen, schema, keyword, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch));\n if (alwaysValid && !it.opts.unevaluated)\n return;\n const valid = gen.let(\"valid\", false);\n const schValid = gen.name(\"_valid\");\n gen.block(() => schema.forEach((_sch, i) => {\n const schCxt = cxt.subschema({\n keyword,\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n gen.assign(valid, (0, codegen_1._) `${valid} || ${schValid}`);\n const merged = cxt.mergeValidEvaluated(schCxt, schValid);\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged)\n gen.if((0, codegen_1.not)(valid));\n }));\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n}\nexports.validateUnion = validateUnion;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst code_1 = require(\"../../vocabularies/code\");\nconst errors_1 = require(\"../errors\");\nfunction macroKeywordCode(cxt, def) {\n const { gen, keyword, schema, parentSchema, it } = cxt;\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it);\n const schemaRef = useKeyword(gen, keyword, macroSchema);\n if (it.opts.validateSchema !== false)\n it.self.validateSchema(macroSchema, true);\n const valid = gen.name(\"valid\");\n cxt.subschema({\n schema: macroSchema,\n schemaPath: codegen_1.nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n }, valid);\n cxt.pass(valid, () => cxt.error(true));\n}\nexports.macroKeywordCode = macroKeywordCode;\nfunction funcKeywordCode(cxt, def) {\n var _a;\n const { gen, keyword, schema, parentSchema, $data, it } = cxt;\n checkAsyncKeyword(it, def);\n const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate;\n const validateRef = useKeyword(gen, keyword, validate);\n const valid = gen.let(\"valid\");\n cxt.block$data(valid, validateKeyword);\n cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid);\n function validateKeyword() {\n if (def.errors === false) {\n assignValid();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => cxt.error());\n }\n else {\n const ruleErrs = def.async ? validateAsync() : validateSync();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => addErrs(cxt, ruleErrs));\n }\n }\n function validateAsync() {\n const ruleErrs = gen.let(\"ruleErrs\", null);\n gen.try(() => assignValid((0, codegen_1._) `await `), (e) => gen.assign(valid, false).if((0, codegen_1._) `${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._) `${e}.errors`), () => gen.throw(e)));\n return ruleErrs;\n }\n function validateSync() {\n const validateErrs = (0, codegen_1._) `${validateRef}.errors`;\n gen.assign(validateErrs, null);\n assignValid(codegen_1.nil);\n return validateErrs;\n }\n function assignValid(_await = def.async ? (0, codegen_1._) `await ` : codegen_1.nil) {\n const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self;\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false);\n gen.assign(valid, (0, codegen_1._) `${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying);\n }\n function reportErrs(errors) {\n var _a;\n gen.if((0, codegen_1.not)((_a = def.valid) !== null && _a !== void 0 ? _a : valid), errors);\n }\n}\nexports.funcKeywordCode = funcKeywordCode;\nfunction modifyData(cxt) {\n const { gen, data, it } = cxt;\n gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._) `${it.parentData}[${it.parentDataProperty}]`));\n}\nfunction addErrs(cxt, errs) {\n const { gen } = cxt;\n gen.if((0, codegen_1._) `Array.isArray(${errs})`, () => {\n gen\n .assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`)\n .assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n (0, errors_1.extendErrors)(cxt);\n }, () => cxt.error());\n}\nfunction checkAsyncKeyword({ schemaEnv }, def) {\n if (def.async && !schemaEnv.$async)\n throw new Error(\"async keyword in sync schema\");\n}\nfunction useKeyword(gen, keyword, result) {\n if (result === undefined)\n throw new Error(`keyword \"${keyword}\" failed to compile`);\n return gen.scopeValue(\"keyword\", typeof result == \"function\" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) });\n}\nfunction validSchemaType(schema, schemaType, allowUndefined = false) {\n // TODO add tests\n return (!schemaType.length ||\n schemaType.some((st) => st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")));\n}\nexports.validSchemaType = validSchemaType;\nfunction validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\");\n }\n const deps = def.dependencies;\n if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`);\n }\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword]);\n if (!valid) {\n const msg = `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors);\n if (opts.validateSchema === \"log\")\n self.logger.error(msg);\n else\n throw new Error(msg);\n }\n }\n}\nexports.validateKeywordUsage = validateKeywordUsage;\n//# sourceMappingURL=keyword.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed');\n }\n if (keyword !== undefined) {\n const sch = it.schema[keyword];\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}`,\n };\n }\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"');\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n };\n }\n throw new Error('either \"keyword\" or \"schema\" must be passed');\n}\nexports.getSubschema = getSubschema;\nfunction extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed');\n }\n const { gen } = it;\n if (dataProp !== undefined) {\n const { errorPath, dataPathArr, opts } = it;\n const nextData = gen.let(\"data\", (0, codegen_1._) `${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true);\n dataContextProps(nextData);\n subschema.errorPath = (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`;\n subschema.parentDataProperty = (0, codegen_1._) `${dataProp}`;\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty];\n }\n if (data !== undefined) {\n const nextData = data instanceof codegen_1.Name ? data : gen.let(\"data\", data, true); // replaceable if used once?\n dataContextProps(nextData);\n if (propertyName !== undefined)\n subschema.propertyName = propertyName;\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n if (dataTypes)\n subschema.dataTypes = dataTypes;\n function dataContextProps(_nextData) {\n subschema.data = _nextData;\n subschema.dataLevel = it.dataLevel + 1;\n subschema.dataTypes = [];\n it.definedProperties = new Set();\n subschema.parentData = it.data;\n subschema.dataNames = [...it.dataNames, _nextData];\n }\n}\nexports.extendSubschemaData = extendSubschemaData;\nfunction extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) {\n if (compositeRule !== undefined)\n subschema.compositeRule = compositeRule;\n if (createErrors !== undefined)\n subschema.createErrors = createErrors;\n if (allErrors !== undefined)\n subschema.allErrors = allErrors;\n subschema.jtdDiscriminator = jtdDiscriminator; // not inherited\n subschema.jtdMetadata = jtdMetadata; // not inherited\n}\nexports.extendSubschemaMode = extendSubschemaMode;\n//# sourceMappingURL=subschema.js.map","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i (count += countKeys(sch)));\n }\n if (count === Infinity)\n return Infinity;\n }\n return count;\n}\nfunction getFullPath(resolver, id = \"\", normalize) {\n if (normalize !== false)\n id = normalizeId(id);\n const p = resolver.parse(id);\n return _getFullPath(resolver, p);\n}\nexports.getFullPath = getFullPath;\nfunction _getFullPath(resolver, p) {\n const serialized = resolver.serialize(p);\n return serialized.split(\"#\")[0] + \"#\";\n}\nexports._getFullPath = _getFullPath;\nconst TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\";\n}\nexports.normalizeId = normalizeId;\nfunction resolveUrl(resolver, baseId, id) {\n id = normalizeId(id);\n return resolver.resolve(baseId, id);\n}\nexports.resolveUrl = resolveUrl;\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i;\nfunction getSchemaRefs(schema, baseId) {\n if (typeof schema == \"boolean\")\n return {};\n const { schemaId, uriResolver } = this.opts;\n const schId = normalizeId(schema[schemaId] || baseId);\n const baseIds = { \"\": schId };\n const pathPrefix = getFullPath(uriResolver, schId, false);\n const localRefs = {};\n const schemaRefs = new Set();\n traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined)\n return;\n const fullPath = pathPrefix + jsonPtr;\n let innerBaseId = baseIds[parentJsonPtr];\n if (typeof sch[schemaId] == \"string\")\n innerBaseId = addRef.call(this, sch[schemaId]);\n addAnchor.call(this, sch.$anchor);\n addAnchor.call(this, sch.$dynamicAnchor);\n baseIds[jsonPtr] = innerBaseId;\n function addRef(ref) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve;\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref);\n if (schemaRefs.has(ref))\n throw ambiguos(ref);\n schemaRefs.add(ref);\n let schOrRef = this.refs[ref];\n if (typeof schOrRef == \"string\")\n schOrRef = this.refs[schOrRef];\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref);\n }\n else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref);\n localRefs[ref] = sch;\n }\n else {\n this.refs[ref] = fullPath;\n }\n }\n return ref;\n }\n function addAnchor(anchor) {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor))\n throw new Error(`invalid anchor \"${anchor}\"`);\n addRef.call(this, `#${anchor}`);\n }\n }\n });\n return localRefs;\n function checkAmbiguosRef(sch1, sch2, ref) {\n if (sch2 !== undefined && !equal(sch1, sch2))\n throw ambiguos(ref);\n }\n function ambiguos(ref) {\n return new Error(`reference \"${ref}\" resolves to more than one schema`);\n }\n}\nexports.getSchemaRefs = getSchemaRefs;\n//# sourceMappingURL=resolve.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0;\nconst boolSchema_1 = require(\"./boolSchema\");\nconst dataType_1 = require(\"./dataType\");\nconst applicability_1 = require(\"./applicability\");\nconst dataType_2 = require(\"./dataType\");\nconst defaults_1 = require(\"./defaults\");\nconst keyword_1 = require(\"./keyword\");\nconst subschema_1 = require(\"./subschema\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst resolve_1 = require(\"../resolve\");\nconst util_1 = require(\"../util\");\nconst errors_1 = require(\"../errors\");\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nfunction validateFunctionCode(it) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it);\n return;\n }\n }\n validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it));\n}\nexports.validateFunctionCode = validateFunctionCode;\nfunction validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) {\n if (opts.code.es5) {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => {\n gen.code((0, codegen_1._) `\"use strict\"; ${funcSourceUrl(schema, opts)}`);\n destructureValCxtES5(gen, opts);\n gen.code(body);\n });\n }\n else {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body));\n }\n}\nfunction destructureValCxt(opts) {\n return (0, codegen_1._) `{${names_1.default.instancePath}=\"\", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._) `, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`;\n}\nfunction destructureValCxtES5(gen, opts) {\n gen.if(names_1.default.valCxt, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.instancePath}`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentData}`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentDataProperty}`);\n gen.var(names_1.default.rootData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.rootData}`);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`);\n }, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `\"\"`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.rootData, names_1.default.data);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `{}`);\n });\n}\nfunction topSchemaObjCode(it) {\n const { schema, opts, gen } = it;\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n checkNoDefault(it);\n gen.let(names_1.default.vErrors, null);\n gen.let(names_1.default.errors, 0);\n if (opts.unevaluated)\n resetEvaluated(it);\n typeAndKeywords(it);\n returnResults(it);\n });\n return;\n}\nfunction resetEvaluated(it) {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const { gen, validateName } = it;\n it.evaluated = gen.const(\"evaluated\", (0, codegen_1._) `${validateName}.evaluated`);\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._) `${it.evaluated}.props`, (0, codegen_1._) `undefined`));\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._) `${it.evaluated}.items`, (0, codegen_1._) `undefined`));\n}\nfunction funcSourceUrl(schema, opts) {\n const schId = typeof schema == \"object\" && schema[opts.schemaId];\n return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._) `/*# sourceURL=${schId} */` : codegen_1.nil;\n}\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it, valid) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid);\n return;\n }\n }\n (0, boolSchema_1.boolOrEmptySchema)(it, valid);\n}\nfunction schemaCxtHasRules({ schema, self }) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (self.RULES.all[key])\n return true;\n return false;\n}\nfunction isSchemaObj(it) {\n return typeof it.schema != \"boolean\";\n}\nfunction subSchemaObjCode(it, valid) {\n const { schema, gen, opts } = it;\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n updateContext(it);\n checkAsyncSchema(it);\n const errsCount = gen.const(\"_errs\", names_1.default.errors);\n typeAndKeywords(it, errsCount);\n // TODO var\n gen.var(valid, (0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n}\nfunction checkKeywords(it) {\n (0, util_1.checkUnknownRules)(it);\n checkRefsAndKeywords(it);\n}\nfunction typeAndKeywords(it, errsCount) {\n if (it.opts.jtd)\n return schemaKeywords(it, [], false, errsCount);\n const types = (0, dataType_1.getSchemaTypes)(it.schema);\n const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types);\n schemaKeywords(it, types, !checkedTypes, errsCount);\n}\nfunction checkRefsAndKeywords(it) {\n const { schema, errSchemaPath, opts, self } = it;\n if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`);\n }\n}\nfunction checkNoDefault(it) {\n const { schema, opts } = it;\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n (0, util_1.checkStrictMode)(it, \"default is ignored in the schema root\");\n }\n}\nfunction updateContext(it) {\n const schId = it.schema[it.opts.schemaId];\n if (schId)\n it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId);\n}\nfunction checkAsyncSchema(it) {\n if (it.schema.$async && !it.schemaEnv.$async)\n throw new Error(\"async schema in sync schema\");\n}\nfunction commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) {\n const msg = schema.$comment;\n if (opts.$comment === true) {\n gen.code((0, codegen_1._) `${names_1.default.self}.logger.log(${msg})`);\n }\n else if (typeof opts.$comment == \"function\") {\n const schemaPath = (0, codegen_1.str) `${errSchemaPath}/$comment`;\n const rootName = gen.scopeValue(\"root\", { ref: schemaEnv.root });\n gen.code((0, codegen_1._) `${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`);\n }\n}\nfunction returnResults(it) {\n const { gen, schemaEnv, validateName, ValidationError, opts } = it;\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if((0, codegen_1._) `${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._) `new ${ValidationError}(${names_1.default.vErrors})`));\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, names_1.default.vErrors);\n if (opts.unevaluated)\n assignEvaluated(it);\n gen.return((0, codegen_1._) `${names_1.default.errors} === 0`);\n }\n}\nfunction assignEvaluated({ gen, evaluated, props, items }) {\n if (props instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.props`, props);\n if (items instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.items`, items);\n}\nfunction schemaKeywords(it, types, typeErrors, errsCount) {\n const { gen, schema, data, allErrors, opts, self } = it;\n const { RULES } = self;\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", RULES.all.$ref.definition)); // TODO typecast\n return;\n }\n if (!opts.jtd)\n checkStrictTypes(it, types);\n gen.block(() => {\n for (const group of RULES.rules)\n groupKeywords(group);\n groupKeywords(RULES.post);\n });\n function groupKeywords(group) {\n if (!(0, applicability_1.shouldUseGroup)(schema, group))\n return;\n if (group.type) {\n gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers));\n iterateKeywords(it, group);\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else();\n (0, dataType_2.reportTypeError)(it);\n }\n gen.endIf();\n }\n else {\n iterateKeywords(it, group);\n }\n // TODO make it \"ok\" call?\n if (!allErrors)\n gen.if((0, codegen_1._) `${names_1.default.errors} === ${errsCount || 0}`);\n }\n}\nfunction iterateKeywords(it, group) {\n const { gen, schema, opts: { useDefaults }, } = it;\n if (useDefaults)\n (0, defaults_1.assignDefaults)(it, group.type);\n gen.block(() => {\n for (const rule of group.rules) {\n if ((0, applicability_1.shouldUseRule)(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type);\n }\n }\n });\n}\nfunction checkStrictTypes(it, types) {\n if (it.schemaEnv.meta || !it.opts.strictTypes)\n return;\n checkContextTypes(it, types);\n if (!it.opts.allowUnionTypes)\n checkMultipleTypes(it, types);\n checkKeywordTypes(it, it.dataTypes);\n}\nfunction checkContextTypes(it, types) {\n if (!types.length)\n return;\n if (!it.dataTypes.length) {\n it.dataTypes = types;\n return;\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`);\n }\n });\n narrowSchemaTypes(it, types);\n}\nfunction checkMultipleTypes(it, ts) {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\");\n }\n}\nfunction checkKeywordTypes(it, ts) {\n const rules = it.self.RULES.all;\n for (const keyword in rules) {\n const rule = rules[keyword];\n if (typeof rule == \"object\" && (0, applicability_1.shouldUseRule)(it.schema, rule)) {\n const { type } = rule.definition;\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`);\n }\n }\n }\n}\nfunction hasApplicableType(schTs, kwdT) {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"));\n}\nfunction includesType(ts, t) {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"));\n}\nfunction narrowSchemaTypes(it, withTypes) {\n const ts = [];\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t))\n ts.push(t);\n else if (withTypes.includes(\"integer\") && t === \"number\")\n ts.push(\"integer\");\n }\n it.dataTypes = ts;\n}\nfunction strictTypesError(it, msg) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n msg += ` at \"${schemaPath}\" (strictTypes)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes);\n}\nclass KeywordCxt {\n constructor(it, def, keyword) {\n (0, keyword_1.validateKeywordUsage)(it, def, keyword);\n this.gen = it.gen;\n this.allErrors = it.allErrors;\n this.keyword = keyword;\n this.data = it.data;\n this.schema = it.schema[keyword];\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data;\n this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data);\n this.schemaType = def.schemaType;\n this.parentSchema = it.schema;\n this.params = {};\n this.it = it;\n this.def = def;\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it));\n }\n else {\n this.schemaCode = this.schemaValue;\n if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);\n }\n }\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", names_1.default.errors);\n }\n }\n result(condition, successAction, failAction) {\n this.failResult((0, codegen_1.not)(condition), successAction, failAction);\n }\n failResult(condition, successAction, failAction) {\n this.gen.if(condition);\n if (failAction)\n failAction();\n else\n this.error();\n if (successAction) {\n this.gen.else();\n successAction();\n if (this.allErrors)\n this.gen.endIf();\n }\n else {\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n }\n pass(condition, failAction) {\n this.failResult((0, codegen_1.not)(condition), undefined, failAction);\n }\n fail(condition) {\n if (condition === undefined) {\n this.error();\n if (!this.allErrors)\n this.gen.if(false); // this branch will be removed by gen.optimize\n return;\n }\n this.gen.if(condition);\n this.error();\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n fail$data(condition) {\n if (!this.$data)\n return this.fail(condition);\n const { schemaCode } = this;\n this.fail((0, codegen_1._) `${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`);\n }\n error(append, errorParams, errorPaths) {\n if (errorParams) {\n this.setParams(errorParams);\n this._error(append, errorPaths);\n this.setParams({});\n return;\n }\n this._error(append, errorPaths);\n }\n _error(append, errorPaths) {\n ;\n (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths);\n }\n $dataError() {\n (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError);\n }\n reset() {\n if (this.errsCount === undefined)\n throw new Error('add \"trackErrors\" to keyword definition');\n (0, errors_1.resetErrorsCount)(this.gen, this.errsCount);\n }\n ok(cond) {\n if (!this.allErrors)\n this.gen.if(cond);\n }\n setParams(obj, assign) {\n if (assign)\n Object.assign(this.params, obj);\n else\n this.params = obj;\n }\n block$data(valid, codeBlock, $dataValid = codegen_1.nil) {\n this.gen.block(() => {\n this.check$data(valid, $dataValid);\n codeBlock();\n });\n }\n check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {\n if (!this.$data)\n return;\n const { gen, schemaCode, schemaType, def } = this;\n gen.if((0, codegen_1.or)((0, codegen_1._) `${schemaCode} === undefined`, $dataValid));\n if (valid !== codegen_1.nil)\n gen.assign(valid, true);\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data());\n this.$dataError();\n if (valid !== codegen_1.nil)\n gen.assign(valid, false);\n }\n gen.else();\n }\n invalid$data() {\n const { gen, schemaCode, schemaType, def, it } = this;\n return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema());\n function wrong$DataType() {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof codegen_1.Name))\n throw new Error(\"ajv implementation error\");\n const st = Array.isArray(schemaType) ? schemaType : [schemaType];\n return (0, codegen_1._) `${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`;\n }\n return codegen_1.nil;\n }\n function invalid$DataSchema() {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", { ref: def.validateSchema }); // TODO value.code for standalone\n return (0, codegen_1._) `!${validateSchemaRef}(${schemaCode})`;\n }\n return codegen_1.nil;\n }\n }\n subschema(appl, valid) {\n const subschema = (0, subschema_1.getSubschema)(this.it, appl);\n (0, subschema_1.extendSubschemaData)(subschema, this.it, appl);\n (0, subschema_1.extendSubschemaMode)(subschema, appl);\n const nextContext = { ...this.it, ...subschema, items: undefined, props: undefined };\n subschemaCode(nextContext, valid);\n return nextContext;\n }\n mergeEvaluated(schemaCxt, toName) {\n const { it, gen } = this;\n if (!it.opts.unevaluated)\n return;\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName);\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName);\n }\n }\n mergeValidEvaluated(schemaCxt, valid) {\n const { it, gen } = this;\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name));\n return true;\n }\n }\n}\nexports.KeywordCxt = KeywordCxt;\nfunction keywordCode(it, keyword, def, ruleType) {\n const cxt = new KeywordCxt(it, def, keyword);\n if (\"code\" in def) {\n def.code(cxt, ruleType);\n }\n else if (cxt.$data && def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n else if (\"macro\" in def) {\n (0, keyword_1.macroKeywordCode)(cxt, def);\n }\n else if (def.compile || def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n}\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, { dataLevel, dataNames, dataPathArr }) {\n let jsonPointer;\n let data;\n if ($data === \"\")\n return names_1.default.rootData;\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data))\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n jsonPointer = $data;\n data = names_1.default.rootData;\n }\n else {\n const matches = RELATIVE_JSON_POINTER.exec($data);\n if (!matches)\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n const up = +matches[1];\n jsonPointer = matches[2];\n if (jsonPointer === \"#\") {\n if (up >= dataLevel)\n throw new Error(errorMsg(\"property/index\", up));\n return dataPathArr[dataLevel - up];\n }\n if (up > dataLevel)\n throw new Error(errorMsg(\"data\", up));\n data = dataNames[dataLevel - up];\n if (!jsonPointer)\n return data;\n }\n let expr = data;\n const segments = jsonPointer.split(\"/\");\n for (const segment of segments) {\n if (segment) {\n data = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`;\n expr = (0, codegen_1._) `${expr} && ${data}`;\n }\n }\n return expr;\n function errorMsg(pointerType, up) {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`;\n }\n}\nexports.getData = getData;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass ValidationError extends Error {\n constructor(errors) {\n super(\"validation failed\");\n this.errors = errors;\n this.ajv = this.validation = true;\n }\n}\nexports.default = ValidationError;\n//# sourceMappingURL=validation_error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst resolve_1 = require(\"./resolve\");\nclass MissingRefError extends Error {\n constructor(resolver, baseId, ref, msg) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`);\n this.missingRef = (0, resolve_1.resolveUrl)(resolver, baseId, ref);\n this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(resolver, this.missingRef));\n }\n}\nexports.default = MissingRefError;\n//# sourceMappingURL=ref_error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst validation_error_1 = require(\"../runtime/validation_error\");\nconst names_1 = require(\"./names\");\nconst resolve_1 = require(\"./resolve\");\nconst util_1 = require(\"./util\");\nconst validate_1 = require(\"./validate\");\nclass SchemaEnv {\n constructor(env) {\n var _a;\n this.refs = {};\n this.dynamicAnchors = {};\n let schema;\n if (typeof env.schema == \"object\")\n schema = env.schema;\n this.schema = env.schema;\n this.schemaId = env.schemaId;\n this.root = env.root || this;\n this.baseId = (_a = env.baseId) !== null && _a !== void 0 ? _a : (0, resolve_1.normalizeId)(schema === null || schema === void 0 ? void 0 : schema[env.schemaId || \"$id\"]);\n this.schemaPath = env.schemaPath;\n this.localRefs = env.localRefs;\n this.meta = env.meta;\n this.$async = schema === null || schema === void 0 ? void 0 : schema.$async;\n this.refs = {};\n }\n}\nexports.SchemaEnv = SchemaEnv;\n// let codeSize = 0\n// let nodeCount = 0\n// Compiles schema in SchemaEnv\nfunction compileSchema(sch) {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch);\n if (_sch)\n return _sch;\n const rootId = (0, resolve_1.getFullPath)(this.opts.uriResolver, sch.root.baseId); // TODO if getFullPath removed 1 tests fails\n const { es5, lines } = this.opts.code;\n const { ownProperties } = this.opts;\n const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties });\n let _ValidationError;\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: validation_error_1.default,\n code: (0, codegen_1._) `require(\"ajv/dist/runtime/validation_error\").default`,\n });\n }\n const validateName = gen.scopeName(\"validate\");\n sch.validateName = validateName;\n const schemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: names_1.default.data,\n parentData: names_1.default.parentData,\n parentDataProperty: names_1.default.parentDataProperty,\n dataNames: [names_1.default.data],\n dataPathArr: [codegen_1.nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set(),\n topSchemaRef: gen.scopeValue(\"schema\", this.opts.code.source === true\n ? { ref: sch.schema, code: (0, codegen_1.stringify)(sch.schema) }\n : { ref: sch.schema }),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: codegen_1.nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: (0, codegen_1._) `\"\"`,\n opts: this.opts,\n self: this,\n };\n let sourceCode;\n try {\n this._compilations.add(sch);\n (0, validate_1.validateFunctionCode)(schemaCxt);\n gen.optimize(this.opts.code.optimize);\n // gen.optimize(1)\n const validateCode = gen.toString();\n sourceCode = `${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`;\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process)\n sourceCode = this.opts.code.process(sourceCode, sch);\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode);\n const validate = makeValidate(this, this.scope.get());\n this.scope.value(validateName, { ref: validate });\n validate.errors = null;\n validate.schema = sch.schema;\n validate.schemaEnv = sch;\n if (sch.$async)\n validate.$async = true;\n if (this.opts.code.source === true) {\n validate.source = { validateName, validateCode, scopeValues: gen._values };\n }\n if (this.opts.unevaluated) {\n const { props, items } = schemaCxt;\n validate.evaluated = {\n props: props instanceof codegen_1.Name ? undefined : props,\n items: items instanceof codegen_1.Name ? undefined : items,\n dynamicProps: props instanceof codegen_1.Name,\n dynamicItems: items instanceof codegen_1.Name,\n };\n if (validate.source)\n validate.source.evaluated = (0, codegen_1.stringify)(validate.evaluated);\n }\n sch.validate = validate;\n return sch;\n }\n catch (e) {\n delete sch.validate;\n delete sch.validateName;\n if (sourceCode)\n this.logger.error(\"Error compiling schema, function code:\", sourceCode);\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e;\n }\n finally {\n this._compilations.delete(sch);\n }\n}\nexports.compileSchema = compileSchema;\nfunction resolveRef(root, baseId, ref) {\n var _a;\n ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, ref);\n const schOrFunc = root.refs[ref];\n if (schOrFunc)\n return schOrFunc;\n let _sch = resolve.call(this, root, ref);\n if (_sch === undefined) {\n const schema = (_a = root.localRefs) === null || _a === void 0 ? void 0 : _a[ref]; // TODO maybe localRefs should hold SchemaEnv\n const { schemaId } = this.opts;\n if (schema)\n _sch = new SchemaEnv({ schema, schemaId, root, baseId });\n }\n if (_sch === undefined)\n return;\n return (root.refs[ref] = inlineOrCompile.call(this, _sch));\n}\nexports.resolveRef = resolveRef;\nfunction inlineOrCompile(sch) {\n if ((0, resolve_1.inlineRef)(sch.schema, this.opts.inlineRefs))\n return sch.schema;\n return sch.validate ? sch : compileSchema.call(this, sch);\n}\n// Index of schema compilation in the currently compiled list\nfunction getCompilingSchema(schEnv) {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv))\n return sch;\n }\n}\nexports.getCompilingSchema = getCompilingSchema;\nfunction sameSchemaEnv(s1, s2) {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;\n}\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(root, // information about the root schema for the current schema\nref // reference to resolve\n) {\n let sch;\n while (typeof (sch = this.refs[ref]) == \"string\")\n ref = sch;\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref);\n}\n// Resolve schema, its root and baseId\nfunction resolveSchema(root, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\nref // reference to resolve\n) {\n const p = this.opts.uriResolver.parse(ref);\n const refPath = (0, resolve_1._getFullPath)(this.opts.uriResolver, p);\n let baseId = (0, resolve_1.getFullPath)(this.opts.uriResolver, root.baseId, undefined);\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root);\n }\n const id = (0, resolve_1.normalizeId)(refPath);\n const schOrRef = this.refs[id] || this.schemas[id];\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef);\n if (typeof (sch === null || sch === void 0 ? void 0 : sch.schema) !== \"object\")\n return;\n return getJsonPointer.call(this, p, sch);\n }\n if (typeof (schOrRef === null || schOrRef === void 0 ? void 0 : schOrRef.schema) !== \"object\")\n return;\n if (!schOrRef.validate)\n compileSchema.call(this, schOrRef);\n if (id === (0, resolve_1.normalizeId)(ref)) {\n const { schema } = schOrRef;\n const { schemaId } = this.opts;\n const schId = schema[schemaId];\n if (schId)\n baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);\n return new SchemaEnv({ schema, schemaId, root, baseId });\n }\n return getJsonPointer.call(this, p, schOrRef);\n}\nexports.resolveSchema = resolveSchema;\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n]);\nfunction getJsonPointer(parsedRef, { baseId, schema, root }) {\n var _a;\n if (((_a = parsedRef.fragment) === null || _a === void 0 ? void 0 : _a[0]) !== \"/\")\n return;\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\")\n return;\n const partSchema = schema[(0, util_1.unescapeFragment)(part)];\n if (partSchema === undefined)\n return;\n schema = partSchema;\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId];\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);\n }\n }\n let env;\n if (typeof schema != \"boolean\" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) {\n const $ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schema.$ref);\n env = resolveSchema.call(this, root, $ref);\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const { schemaId } = this.opts;\n env = env || new SchemaEnv({ schema, schemaId, root, baseId });\n if (env.schema !== env.root.schema)\n return env;\n return undefined;\n}\n//# sourceMappingURL=index.js.map","'use strict'\n\nconst HEX = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n a: 10,\n A: 10,\n b: 11,\n B: 11,\n c: 12,\n C: 12,\n d: 13,\n D: 13,\n e: 14,\n E: 14,\n f: 15,\n F: 15\n}\n\nmodule.exports = {\n HEX\n}\n","'use strict'\n\nconst { HEX } = require('./scopedChars')\n\nfunction normalizeIPv4 (host) {\n if (findToken(host, '.') < 3) { return { host, isIPV4: false } }\n const matches = host.match(/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/u) || []\n const [address] = matches\n if (address) {\n return { host: stripLeadingZeros(address, '.'), isIPV4: true }\n } else {\n return { host, isIPV4: false }\n }\n}\n\n/**\n * @param {string[]} input\n * @param {boolean} [keepZero=false]\n * @returns {string|undefined}\n */\nfunction stringArrayToHexStripped (input, keepZero = false) {\n let acc = ''\n let strip = true\n for (const c of input) {\n if (HEX[c] === undefined) return undefined\n if (c !== '0' && strip === true) strip = false\n if (!strip) acc += c\n }\n if (keepZero && acc.length === 0) acc = '0'\n return acc\n}\n\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n const address = []\n const buffer = []\n let isZone = false\n let endipv6Encountered = false\n let endIpv6 = false\n\n function consume () {\n if (buffer.length) {\n if (isZone === false) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== undefined) {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n }\n buffer.length = 0\n }\n return true\n }\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume()) { break }\n tokenCount++\n address.push(':')\n if (tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i - 1 >= 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n continue\n } else if (cursor === '%') {\n if (!consume()) { break }\n // switch to zone detection\n isZone = true\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (isZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\nfunction normalizeIPv6 (host, opts = {}) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, escapedHost, isIPV6: true }\n } else {\n return { host, isIPV6: false }\n }\n}\n\nfunction stripLeadingZeros (str, token) {\n let out = ''\n let skip = true\n const l = str.length\n for (let i = 0; i < l; i++) {\n const c = str[i]\n if (c === '0' && skip) {\n if ((i + 1 <= l && str[i + 1] === token) || i + 1 === l) {\n out += c\n skip = false\n }\n } else {\n if (c === token) {\n skip = true\n } else {\n skip = false\n }\n out += c\n }\n }\n return out\n}\n\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\nconst RDS1 = /^\\.\\.?\\//u\nconst RDS2 = /^\\/\\.(?:\\/|$)/u\nconst RDS3 = /^\\/\\.\\.(?:\\/|$)/u\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/u\n\nfunction removeDotSegments (input) {\n const output = []\n\n while (input.length) {\n if (input.match(RDS1)) {\n input = input.replace(RDS1, '')\n } else if (input.match(RDS2)) {\n input = input.replace(RDS2, '/')\n } else if (input.match(RDS3)) {\n input = input.replace(RDS3, '/')\n output.pop()\n } else if (input === '.' || input === '..') {\n input = ''\n } else {\n const im = input.match(RDS5)\n if (im) {\n const s = im[0]\n input = input.slice(s.length)\n output.push(s)\n } else {\n throw new Error('Unexpected dot segment condition')\n }\n }\n }\n return output.join('')\n}\n\nfunction normalizeComponentEncoding (components, esc) {\n const func = esc !== true ? escape : unescape\n if (components.scheme !== undefined) {\n components.scheme = func(components.scheme)\n }\n if (components.userinfo !== undefined) {\n components.userinfo = func(components.userinfo)\n }\n if (components.host !== undefined) {\n components.host = func(components.host)\n }\n if (components.path !== undefined) {\n components.path = func(components.path)\n }\n if (components.query !== undefined) {\n components.query = func(components.query)\n }\n if (components.fragment !== undefined) {\n components.fragment = func(components.fragment)\n }\n return components\n}\n\nfunction recomposeAuthority (components, options) {\n const uriTokens = []\n\n if (components.userinfo !== undefined) {\n uriTokens.push(components.userinfo)\n uriTokens.push('@')\n }\n\n if (components.host !== undefined) {\n let host = unescape(components.host)\n const ipV4res = normalizeIPv4(host)\n\n if (ipV4res.isIPV4) {\n host = ipV4res.host\n } else {\n const ipV6res = normalizeIPv6(ipV4res.host, { isIPV4: false })\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = components.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof components.port === 'number' || typeof components.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(components.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n normalizeIPv4,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst UUID_REG = /^[\\da-f]{8}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{12}$/iu\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nfunction isSecure (wsComponents) {\n return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === 'wss'\n}\n\nfunction httpParse (components) {\n if (!components.host) {\n components.error = components.error || 'HTTP URIs must have a host.'\n }\n\n return components\n}\n\nfunction httpSerialize (components) {\n const secure = String(components.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (components.port === (secure ? 443 : 80) || components.port === '') {\n components.port = undefined\n }\n\n // normalize the empty path\n if (!components.path) {\n components.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return components\n}\n\nfunction wsParse (wsComponents) {\n// indicate if the secure flag is set\n wsComponents.secure = isSecure(wsComponents)\n\n // construct resouce name\n wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '')\n wsComponents.path = undefined\n wsComponents.query = undefined\n\n return wsComponents\n}\n\nfunction wsSerialize (wsComponents) {\n// normalize the default port\n if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === '') {\n wsComponents.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponents.secure === 'boolean') {\n wsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws')\n wsComponents.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponents.resourceName) {\n const [path, query] = wsComponents.resourceName.split('?')\n wsComponents.path = (path && path !== '/' ? path : undefined)\n wsComponents.query = query\n wsComponents.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponents.fragment = undefined\n\n return wsComponents\n}\n\nfunction urnParse (urnComponents, options) {\n if (!urnComponents.path) {\n urnComponents.error = 'URN can not be parsed'\n return urnComponents\n }\n const matches = urnComponents.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponents.scheme || 'urn'\n urnComponents.nid = matches[1].toLowerCase()\n urnComponents.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponents.nid}`\n const schemeHandler = SCHEMES[urnScheme]\n urnComponents.path = undefined\n\n if (schemeHandler) {\n urnComponents = schemeHandler.parse(urnComponents, options)\n }\n } else {\n urnComponents.error = urnComponents.error || 'URN can not be parsed.'\n }\n\n return urnComponents\n}\n\nfunction urnSerialize (urnComponents, options) {\n const scheme = options.scheme || urnComponents.scheme || 'urn'\n const nid = urnComponents.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = SCHEMES[urnScheme]\n\n if (schemeHandler) {\n urnComponents = schemeHandler.serialize(urnComponents, options)\n }\n\n const uriComponents = urnComponents\n const nss = urnComponents.nss\n uriComponents.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponents\n}\n\nfunction urnuuidParse (urnComponents, options) {\n const uuidComponents = urnComponents\n uuidComponents.uuid = uuidComponents.nss\n uuidComponents.nss = undefined\n\n if (!options.tolerant && (!uuidComponents.uuid || !UUID_REG.test(uuidComponents.uuid))) {\n uuidComponents.error = uuidComponents.error || 'UUID is not valid.'\n }\n\n return uuidComponents\n}\n\nfunction urnuuidSerialize (uuidComponents) {\n const urnComponents = uuidComponents\n // normalize UUID\n urnComponents.nss = (uuidComponents.uuid || '').toLowerCase()\n return urnComponents\n}\n\nconst http = {\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n}\n\nconst https = {\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n}\n\nconst ws = {\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n}\n\nconst wss = {\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n}\n\nconst urn = {\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n}\n\nconst urnuuid = {\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n}\n\nconst SCHEMES = {\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n}\n\nmodule.exports = SCHEMES\n","'use strict'\n\nconst { normalizeIPv6, normalizeIPv4, removeDotSegments, recomposeAuthority, normalizeComponentEncoding } = require('./lib/utils')\nconst SCHEMES = require('./lib/schemes')\n\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = serialize(parse(uri, options), options)\n } else if (typeof uri === 'object') {\n uri = parse(serialize(uri, options), options)\n }\n return uri\n}\n\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = Object.assign({ scheme: 'null' }, options)\n const resolved = resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n return serialize(resolved, { ...schemelessOptions, skipEscape: true })\n}\n\nfunction resolveComponents (base, relative, options, skipNormalization) {\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base components\n relative = parse(serialize(relative, options), options) // normalize relative components\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path.charAt(0) === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\nfunction serialize (cmpts, opts) {\n const components = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = SCHEMES[(options.scheme || components.scheme || '').toLowerCase()]\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options)\n\n if (components.path !== undefined) {\n if (!options.skipEscape) {\n components.path = escape(components.path)\n\n if (components.scheme !== undefined) {\n components.path = components.path.split('%3A').join(':')\n }\n } else {\n components.path = unescape(components.path)\n }\n }\n\n if (options.reference !== 'suffix' && components.scheme) {\n uriTokens.push(components.scheme, ':')\n }\n\n const authority = recomposeAuthority(components, options)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (components.path && components.path.charAt(0) !== '/') {\n uriTokens.push('/')\n }\n }\n if (components.path !== undefined) {\n let s = components.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (authority === undefined) {\n s = s.replace(/^\\/\\//u, '/%2F') // don't allow the path to start with \"//\"\n }\n\n uriTokens.push(s)\n }\n\n if (components.query !== undefined) {\n uriTokens.push('?', components.query)\n }\n\n if (components.fragment !== undefined) {\n uriTokens.push('#', components.fragment)\n }\n return uriTokens.join('')\n}\n\nconst hexLookUp = Array.from({ length: 127 }, (v, k) => /[^!\"$&'()*+,\\-.;=_`a-z{}~]/u.test(String.fromCharCode(k)))\n\nfunction nonSimpleDomain (value) {\n let code = 0\n for (let i = 0, len = value.length; i < len; ++i) {\n code = value.charCodeAt(i)\n if (code > 126 || hexLookUp[code]) {\n return true\n }\n }\n return false\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n const gotEncoding = uri.indexOf('%') !== -1\n let isIP = false\n if (options.reference === 'suffix') uri = (options.scheme ? options.scheme + ':' : '') + '//' + uri\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = normalizeIPv4(parsed.host)\n if (ipv4result.isIPV4 === false) {\n const ipv6result = normalizeIPv6(ipv4result.host, { isIPV4: false })\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n parsed.host = ipv4result.host\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && !parsed.path && parsed.query === undefined) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = SCHEMES[(options.scheme || parsed.scheme || '').toLowerCase()]\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (gotEncoding && parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (gotEncoding && parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n if (parsed.path !== undefined && parsed.path.length) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment !== undefined && parsed.fragment.length) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponents,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst uri = require(\"fast-uri\");\nuri.code = 'require(\"ajv/dist/runtime/uri\").default';\nexports.default = uri;\n//# sourceMappingURL=uri.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;\nvar validate_1 = require(\"./compile/validate\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });\nvar codegen_1 = require(\"./compile/codegen\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return codegen_1._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return codegen_1.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return codegen_1.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return codegen_1.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return codegen_1.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return codegen_1.CodeGen; } });\nconst validation_error_1 = require(\"./runtime/validation_error\");\nconst ref_error_1 = require(\"./compile/ref_error\");\nconst rules_1 = require(\"./compile/rules\");\nconst compile_1 = require(\"./compile\");\nconst codegen_2 = require(\"./compile/codegen\");\nconst resolve_1 = require(\"./compile/resolve\");\nconst dataType_1 = require(\"./compile/validate/dataType\");\nconst util_1 = require(\"./compile/util\");\nconst $dataRefSchema = require(\"./refs/data.json\");\nconst uri_1 = require(\"./runtime/uri\");\nconst defaultRegExp = (str, flags) => new RegExp(str, flags);\ndefaultRegExp.code = \"new RegExp\";\nconst META_IGNORE_OPTIONS = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"];\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n]);\nconst removedOptions = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n};\nconst deprecatedOptions = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n};\nconst MAX_EXPRESSION = 200;\n// eslint-disable-next-line complexity\nfunction requiredOptions(o) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;\n const s = o.strict;\n const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize;\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0;\n const regExp = (_c = (_b = o.code) === null || _b === void 0 ? void 0 : _b.regExp) !== null && _c !== void 0 ? _c : defaultRegExp;\n const uriResolver = (_d = o.uriResolver) !== null && _d !== void 0 ? _d : uri_1.default;\n return {\n strictSchema: (_f = (_e = o.strictSchema) !== null && _e !== void 0 ? _e : s) !== null && _f !== void 0 ? _f : true,\n strictNumbers: (_h = (_g = o.strictNumbers) !== null && _g !== void 0 ? _g : s) !== null && _h !== void 0 ? _h : true,\n strictTypes: (_k = (_j = o.strictTypes) !== null && _j !== void 0 ? _j : s) !== null && _k !== void 0 ? _k : \"log\",\n strictTuples: (_m = (_l = o.strictTuples) !== null && _l !== void 0 ? _l : s) !== null && _m !== void 0 ? _m : \"log\",\n strictRequired: (_p = (_o = o.strictRequired) !== null && _o !== void 0 ? _o : s) !== null && _p !== void 0 ? _p : false,\n code: o.code ? { ...o.code, optimize, regExp } : { optimize, regExp },\n loopRequired: (_q = o.loopRequired) !== null && _q !== void 0 ? _q : MAX_EXPRESSION,\n loopEnum: (_r = o.loopEnum) !== null && _r !== void 0 ? _r : MAX_EXPRESSION,\n meta: (_s = o.meta) !== null && _s !== void 0 ? _s : true,\n messages: (_t = o.messages) !== null && _t !== void 0 ? _t : true,\n inlineRefs: (_u = o.inlineRefs) !== null && _u !== void 0 ? _u : true,\n schemaId: (_v = o.schemaId) !== null && _v !== void 0 ? _v : \"$id\",\n addUsedSchema: (_w = o.addUsedSchema) !== null && _w !== void 0 ? _w : true,\n validateSchema: (_x = o.validateSchema) !== null && _x !== void 0 ? _x : true,\n validateFormats: (_y = o.validateFormats) !== null && _y !== void 0 ? _y : true,\n unicodeRegExp: (_z = o.unicodeRegExp) !== null && _z !== void 0 ? _z : true,\n int32range: (_0 = o.int32range) !== null && _0 !== void 0 ? _0 : true,\n uriResolver: uriResolver,\n };\n}\nclass Ajv {\n constructor(opts = {}) {\n this.schemas = {};\n this.refs = {};\n this.formats = {};\n this._compilations = new Set();\n this._loading = {};\n this._cache = new Map();\n opts = this.opts = { ...opts, ...requiredOptions(opts) };\n const { es5, lines } = this.opts.code;\n this.scope = new codegen_2.ValueScope({ scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines });\n this.logger = getLogger(opts.logger);\n const formatOpt = opts.validateFormats;\n opts.validateFormats = false;\n this.RULES = (0, rules_1.getRules)();\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\");\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\");\n this._metaOpts = getMetaSchemaOptions.call(this);\n if (opts.formats)\n addInitialFormats.call(this);\n this._addVocabularies();\n this._addDefaultMetaSchema();\n if (opts.keywords)\n addInitialKeywords.call(this, opts.keywords);\n if (typeof opts.meta == \"object\")\n this.addMetaSchema(opts.meta);\n addInitialSchemas.call(this);\n opts.validateFormats = formatOpt;\n }\n _addVocabularies() {\n this.addKeyword(\"$async\");\n }\n _addDefaultMetaSchema() {\n const { $data, meta, schemaId } = this.opts;\n let _dataRefSchema = $dataRefSchema;\n if (schemaId === \"id\") {\n _dataRefSchema = { ...$dataRefSchema };\n _dataRefSchema.id = _dataRefSchema.$id;\n delete _dataRefSchema.$id;\n }\n if (meta && $data)\n this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false);\n }\n defaultMeta() {\n const { meta, schemaId } = this.opts;\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined);\n }\n validate(schemaKeyRef, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data // to be validated\n ) {\n let v;\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema(schemaKeyRef);\n if (!v)\n throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`);\n }\n else {\n v = this.compile(schemaKeyRef);\n }\n const valid = v(data);\n if (!(\"$async\" in v))\n this.errors = v.errors;\n return valid;\n }\n compile(schema, _meta) {\n const sch = this._addSchema(schema, _meta);\n return (sch.validate || this._compileSchemaEnv(sch));\n }\n compileAsync(schema, meta) {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\");\n }\n const { loadSchema } = this.opts;\n return runCompileAsync.call(this, schema, meta);\n async function runCompileAsync(_schema, _meta) {\n await loadMetaSchema.call(this, _schema.$schema);\n const sch = this._addSchema(_schema, _meta);\n return sch.validate || _compileAsync.call(this, sch);\n }\n async function loadMetaSchema($ref) {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, { $ref }, true);\n }\n }\n async function _compileAsync(sch) {\n try {\n return this._compileSchemaEnv(sch);\n }\n catch (e) {\n if (!(e instanceof ref_error_1.default))\n throw e;\n checkLoaded.call(this, e);\n await loadMissingSchema.call(this, e.missingSchema);\n return _compileAsync.call(this, sch);\n }\n }\n function checkLoaded({ missingSchema: ref, missingRef }) {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`);\n }\n }\n async function loadMissingSchema(ref) {\n const _schema = await _loadSchema.call(this, ref);\n if (!this.refs[ref])\n await loadMetaSchema.call(this, _schema.$schema);\n if (!this.refs[ref])\n this.addSchema(_schema, ref, meta);\n }\n async function _loadSchema(ref) {\n const p = this._loading[ref];\n if (p)\n return p;\n try {\n return await (this._loading[ref] = loadSchema(ref));\n }\n finally {\n delete this._loading[ref];\n }\n }\n }\n // Adds schema to the instance\n addSchema(schema, // If array is passed, `key` will be ignored\n key, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ) {\n if (Array.isArray(schema)) {\n for (const sch of schema)\n this.addSchema(sch, undefined, _meta, _validateSchema);\n return this;\n }\n let id;\n if (typeof schema === \"object\") {\n const { schemaId } = this.opts;\n id = schema[schemaId];\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`);\n }\n }\n key = (0, resolve_1.normalizeId)(key || id);\n this._checkUnique(key);\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true);\n return this;\n }\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(schema, key, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ) {\n this.addSchema(schema, key, true, _validateSchema);\n return this;\n }\n // Validate schema against its meta-schema\n validateSchema(schema, throwOrLogError) {\n if (typeof schema == \"boolean\")\n return true;\n let $schema;\n $schema = schema.$schema;\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\");\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta();\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\");\n this.errors = null;\n return true;\n }\n const valid = this.validate($schema, schema);\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText();\n if (this.opts.validateSchema === \"log\")\n this.logger.error(message);\n else\n throw new Error(message);\n }\n return valid;\n }\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema(keyRef) {\n let sch;\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\")\n keyRef = sch;\n if (sch === undefined) {\n const { schemaId } = this.opts;\n const root = new compile_1.SchemaEnv({ schema: {}, schemaId });\n sch = compile_1.resolveSchema.call(this, root, keyRef);\n if (!sch)\n return;\n this.refs[keyRef] = sch;\n }\n return (sch.validate || this._compileSchemaEnv(sch));\n }\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef) {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef);\n this._removeAllSchemas(this.refs, schemaKeyRef);\n return this;\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas);\n this._removeAllSchemas(this.refs);\n this._cache.clear();\n return this;\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef);\n if (typeof sch == \"object\")\n this._cache.delete(sch.schema);\n delete this.schemas[schemaKeyRef];\n delete this.refs[schemaKeyRef];\n return this;\n }\n case \"object\": {\n const cacheKey = schemaKeyRef;\n this._cache.delete(cacheKey);\n let id = schemaKeyRef[this.opts.schemaId];\n if (id) {\n id = (0, resolve_1.normalizeId)(id);\n delete this.schemas[id];\n delete this.refs[id];\n }\n return this;\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\");\n }\n }\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions) {\n for (const def of definitions)\n this.addKeyword(def);\n return this;\n }\n addKeyword(kwdOrDef, def // deprecated\n ) {\n let keyword;\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef;\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\");\n def.keyword = keyword;\n }\n }\n else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef;\n keyword = def.keyword;\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\");\n }\n }\n else {\n throw new Error(\"invalid addKeywords parameters\");\n }\n checkKeyword.call(this, keyword, def);\n if (!def) {\n (0, util_1.eachItem)(keyword, (kwd) => addRule.call(this, kwd));\n return this;\n }\n keywordMetaschema.call(this, def);\n const definition = {\n ...def,\n type: (0, dataType_1.getJSONTypes)(def.type),\n schemaType: (0, dataType_1.getJSONTypes)(def.schemaType),\n };\n (0, util_1.eachItem)(keyword, definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t)));\n return this;\n }\n getKeyword(keyword) {\n const rule = this.RULES.all[keyword];\n return typeof rule == \"object\" ? rule.definition : !!rule;\n }\n // Remove keyword\n removeKeyword(keyword) {\n // TODO return type should be Ajv\n const { RULES } = this;\n delete RULES.keywords[keyword];\n delete RULES.all[keyword];\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword);\n if (i >= 0)\n group.rules.splice(i, 1);\n }\n return this;\n }\n // Add format\n addFormat(name, format) {\n if (typeof format == \"string\")\n format = new RegExp(format);\n this.formats[name] = format;\n return this;\n }\n errorsText(errors = this.errors, // optional array of validation errors\n { separator = \", \", dataVar = \"data\" } = {} // optional options with properties `separator` and `dataVar`\n ) {\n if (!errors || errors.length === 0)\n return \"No errors\";\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg);\n }\n $dataMetaSchema(metaSchema, keywordsJsonPointers) {\n const rules = this.RULES.all;\n metaSchema = JSON.parse(JSON.stringify(metaSchema));\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1); // first segment is an empty string\n let keywords = metaSchema;\n for (const seg of segments)\n keywords = keywords[seg];\n for (const key in rules) {\n const rule = rules[key];\n if (typeof rule != \"object\")\n continue;\n const { $data } = rule.definition;\n const schema = keywords[key];\n if ($data && schema)\n keywords[key] = schemaOrData(schema);\n }\n }\n return metaSchema;\n }\n _removeAllSchemas(schemas, regex) {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef];\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef];\n }\n else if (sch && !sch.meta) {\n this._cache.delete(sch.schema);\n delete schemas[keyRef];\n }\n }\n }\n }\n _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) {\n let id;\n const { schemaId } = this.opts;\n if (typeof schema == \"object\") {\n id = schema[schemaId];\n }\n else {\n if (this.opts.jtd)\n throw new Error(\"schema must be object\");\n else if (typeof schema != \"boolean\")\n throw new Error(\"schema must be object or boolean\");\n }\n let sch = this._cache.get(schema);\n if (sch !== undefined)\n return sch;\n baseId = (0, resolve_1.normalizeId)(id || baseId);\n const localRefs = resolve_1.getSchemaRefs.call(this, schema, baseId);\n sch = new compile_1.SchemaEnv({ schema, schemaId, meta, baseId, localRefs });\n this._cache.set(sch.schema, sch);\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId)\n this._checkUnique(baseId);\n this.refs[baseId] = sch;\n }\n if (validateSchema)\n this.validateSchema(schema, true);\n return sch;\n }\n _checkUnique(id) {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`);\n }\n }\n _compileSchemaEnv(sch) {\n if (sch.meta)\n this._compileMetaSchema(sch);\n else\n compile_1.compileSchema.call(this, sch);\n /* istanbul ignore if */\n if (!sch.validate)\n throw new Error(\"ajv implementation error\");\n return sch.validate;\n }\n _compileMetaSchema(sch) {\n const currentOpts = this.opts;\n this.opts = this._metaOpts;\n try {\n compile_1.compileSchema.call(this, sch);\n }\n finally {\n this.opts = currentOpts;\n }\n }\n}\nAjv.ValidationError = validation_error_1.default;\nAjv.MissingRefError = ref_error_1.default;\nexports.default = Ajv;\nfunction checkOptions(checkOpts, options, msg, log = \"error\") {\n for (const key in checkOpts) {\n const opt = key;\n if (opt in options)\n this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`);\n }\n}\nfunction getSchEnv(keyRef) {\n keyRef = (0, resolve_1.normalizeId)(keyRef); // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef];\n}\nfunction addInitialSchemas() {\n const optsSchemas = this.opts.schemas;\n if (!optsSchemas)\n return;\n if (Array.isArray(optsSchemas))\n this.addSchema(optsSchemas);\n else\n for (const key in optsSchemas)\n this.addSchema(optsSchemas[key], key);\n}\nfunction addInitialFormats() {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name];\n if (format)\n this.addFormat(name, format);\n }\n}\nfunction addInitialKeywords(defs) {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs);\n return;\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\");\n for (const keyword in defs) {\n const def = defs[keyword];\n if (!def.keyword)\n def.keyword = keyword;\n this.addKeyword(def);\n }\n}\nfunction getMetaSchemaOptions() {\n const metaOpts = { ...this.opts };\n for (const opt of META_IGNORE_OPTIONS)\n delete metaOpts[opt];\n return metaOpts;\n}\nconst noLogs = { log() { }, warn() { }, error() { } };\nfunction getLogger(logger) {\n if (logger === false)\n return noLogs;\n if (logger === undefined)\n return console;\n if (logger.log && logger.warn && logger.error)\n return logger;\n throw new Error(\"logger must implement log, warn and error methods\");\n}\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i;\nfunction checkKeyword(keyword, def) {\n const { RULES } = this;\n (0, util_1.eachItem)(keyword, (kwd) => {\n if (RULES.keywords[kwd])\n throw new Error(`Keyword ${kwd} is already defined`);\n if (!KEYWORD_NAME.test(kwd))\n throw new Error(`Keyword ${kwd} has invalid name`);\n });\n if (!def)\n return;\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function');\n }\n}\nfunction addRule(keyword, definition, dataType) {\n var _a;\n const post = definition === null || definition === void 0 ? void 0 : definition.post;\n if (dataType && post)\n throw new Error('keyword with \"post\" flag cannot have \"type\"');\n const { RULES } = this;\n let ruleGroup = post ? RULES.post : RULES.rules.find(({ type: t }) => t === dataType);\n if (!ruleGroup) {\n ruleGroup = { type: dataType, rules: [] };\n RULES.rules.push(ruleGroup);\n }\n RULES.keywords[keyword] = true;\n if (!definition)\n return;\n const rule = {\n keyword,\n definition: {\n ...definition,\n type: (0, dataType_1.getJSONTypes)(definition.type),\n schemaType: (0, dataType_1.getJSONTypes)(definition.schemaType),\n },\n };\n if (definition.before)\n addBeforeRule.call(this, ruleGroup, rule, definition.before);\n else\n ruleGroup.rules.push(rule);\n RULES.all[keyword] = rule;\n (_a = definition.implements) === null || _a === void 0 ? void 0 : _a.forEach((kwd) => this.addKeyword(kwd));\n}\nfunction addBeforeRule(ruleGroup, rule, before) {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before);\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule);\n }\n else {\n ruleGroup.rules.push(rule);\n this.logger.warn(`rule ${before} is not defined`);\n }\n}\nfunction keywordMetaschema(def) {\n let { metaSchema } = def;\n if (metaSchema === undefined)\n return;\n if (def.$data && this.opts.$data)\n metaSchema = schemaOrData(metaSchema);\n def.validateSchema = this.compile(metaSchema, true);\n}\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n};\nfunction schemaOrData(schema) {\n return { anyOf: [schema, $dataRef] };\n}\n//# sourceMappingURL=core.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst def = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID');\n },\n};\nexports.default = def;\n//# sourceMappingURL=id.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callRef = exports.getValidate = void 0;\nconst ref_error_1 = require(\"../../compile/ref_error\");\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst compile_1 = require(\"../../compile\");\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt) {\n const { gen, schema: $ref, it } = cxt;\n const { baseId, schemaEnv: env, validateName, opts, self } = it;\n const { root } = env;\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId)\n return callRootRef();\n const schOrEnv = compile_1.resolveRef.call(self, root, baseId, $ref);\n if (schOrEnv === undefined)\n throw new ref_error_1.default(it.opts.uriResolver, baseId, $ref);\n if (schOrEnv instanceof compile_1.SchemaEnv)\n return callValidate(schOrEnv);\n return inlineRefSchema(schOrEnv);\n function callRootRef() {\n if (env === root)\n return callRef(cxt, validateName, env, env.$async);\n const rootName = gen.scopeValue(\"root\", { ref: root });\n return callRef(cxt, (0, codegen_1._) `${rootName}.validate`, root, root.$async);\n }\n function callValidate(sch) {\n const v = getValidate(cxt, sch);\n callRef(cxt, v, sch, sch.$async);\n }\n function inlineRefSchema(sch) {\n const schName = gen.scopeValue(\"schema\", opts.code.source === true ? { ref: sch, code: (0, codegen_1.stringify)(sch) } : { ref: sch });\n const valid = gen.name(\"valid\");\n const schCxt = cxt.subschema({\n schema: sch,\n dataTypes: [],\n schemaPath: codegen_1.nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n }, valid);\n cxt.mergeEvaluated(schCxt);\n cxt.ok(valid);\n }\n },\n};\nfunction getValidate(cxt, sch) {\n const { gen } = cxt;\n return sch.validate\n ? gen.scopeValue(\"validate\", { ref: sch.validate })\n : (0, codegen_1._) `${gen.scopeValue(\"wrapper\", { ref: sch })}.validate`;\n}\nexports.getValidate = getValidate;\nfunction callRef(cxt, v, sch, $async) {\n const { gen, it } = cxt;\n const { allErrors, schemaEnv: env, opts } = it;\n const passCxt = opts.passContext ? names_1.default.this : codegen_1.nil;\n if ($async)\n callAsyncRef();\n else\n callSyncRef();\n function callAsyncRef() {\n if (!env.$async)\n throw new Error(\"async schema referenced by sync schema\");\n const valid = gen.let(\"valid\");\n gen.try(() => {\n gen.code((0, codegen_1._) `await ${(0, code_1.callValidateCode)(cxt, v, passCxt)}`);\n addEvaluatedFrom(v); // TODO will not work with async, it has to be returned with the result\n if (!allErrors)\n gen.assign(valid, true);\n }, (e) => {\n gen.if((0, codegen_1._) `!(${e} instanceof ${it.ValidationError})`, () => gen.throw(e));\n addErrorsFrom(e);\n if (!allErrors)\n gen.assign(valid, false);\n });\n cxt.ok(valid);\n }\n function callSyncRef() {\n cxt.result((0, code_1.callValidateCode)(cxt, v, passCxt), () => addEvaluatedFrom(v), () => addErrorsFrom(v));\n }\n function addErrorsFrom(source) {\n const errs = (0, codegen_1._) `${source}.errors`;\n gen.assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`); // TODO tagged\n gen.assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n }\n function addEvaluatedFrom(source) {\n var _a;\n if (!it.opts.unevaluated)\n return;\n const schEvaluated = (_a = sch === null || sch === void 0 ? void 0 : sch.validate) === null || _a === void 0 ? void 0 : _a.evaluated;\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schEvaluated.props, it.props);\n }\n }\n else {\n const props = gen.var(\"props\", (0, codegen_1._) `${source}.evaluated.props`);\n it.props = util_1.mergeEvaluated.props(gen, props, it.props, codegen_1.Name);\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schEvaluated.items, it.items);\n }\n }\n else {\n const items = gen.var(\"items\", (0, codegen_1._) `${source}.evaluated.items`);\n it.items = util_1.mergeEvaluated.items(gen, items, it.items, codegen_1.Name);\n }\n }\n }\n}\nexports.callRef = callRef;\nexports.default = def;\n//# sourceMappingURL=ref.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst id_1 = require(\"./id\");\nconst ref_1 = require(\"./ref\");\nconst core = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n { keyword: \"$comment\" },\n \"definitions\",\n id_1.default,\n ref_1.default,\n];\nexports.default = core;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst ops = codegen_1.operators;\nconst KWDs = {\n maximum: { okStr: \"<=\", ok: ops.LTE, fail: ops.GT },\n minimum: { okStr: \">=\", ok: ops.GTE, fail: ops.LT },\n exclusiveMaximum: { okStr: \"<\", ok: ops.LT, fail: ops.GTE },\n exclusiveMinimum: { okStr: \">\", ok: ops.GT, fail: ops.LTE },\n};\nconst error = {\n message: ({ keyword, schemaCode }) => (0, codegen_1.str) `must be ${KWDs[keyword].okStr} ${schemaCode}`,\n params: ({ keyword, schemaCode }) => (0, codegen_1._) `{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n cxt.fail$data((0, codegen_1._) `${data} ${KWDs[keyword].fail} ${schemaCode} || isNaN(${data})`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitNumber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must be multiple of ${schemaCode}`,\n params: ({ schemaCode }) => (0, codegen_1._) `{multipleOf: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, schemaCode, it } = cxt;\n // const bdt = bad$DataType(schemaCode, def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision;\n const res = gen.let(\"res\");\n const invalid = prec\n ? (0, codegen_1._) `Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : (0, codegen_1._) `${res} !== parseInt(${res})`;\n cxt.fail$data((0, codegen_1._) `(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=multipleOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nfunction ucs2length(str) {\n const len = str.length;\n let length = 0;\n let pos = 0;\n let value;\n while (pos < len) {\n length++;\n value = str.charCodeAt(pos++);\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xfc00) === 0xdc00)\n pos++; // low surrogate\n }\n }\n return length;\n}\nexports.default = ucs2length;\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default';\n//# sourceMappingURL=ucs2length.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst ucs2length_1 = require(\"../../runtime/ucs2length\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} characters`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode, it } = cxt;\n const op = keyword === \"maxLength\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n const len = it.opts.unicode === false ? (0, codegen_1._) `${data}.length` : (0, codegen_1._) `${(0, util_1.useFunc)(cxt.gen, ucs2length_1.default)}(${data})`;\n cxt.fail$data((0, codegen_1._) `${len} ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitLength.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must match pattern \"${schemaCode}\"`,\n params: ({ schemaCode }) => (0, codegen_1._) `{pattern: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const { data, $data, schema, schemaCode, it } = cxt;\n // TODO regexp should be wrapped in try/catchs\n const u = it.opts.unicodeRegExp ? \"u\" : \"\";\n const regExp = $data ? (0, codegen_1._) `(new RegExp(${schemaCode}, ${u}))` : (0, code_1.usePattern)(cxt, schema);\n cxt.fail$data((0, codegen_1._) `!${regExp}.test(${data})`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=pattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} properties`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n const op = keyword === \"maxProperties\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n cxt.fail$data((0, codegen_1._) `Object.keys(${data}).length ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { missingProperty } }) => (0, codegen_1.str) `must have required property '${missingProperty}'`,\n params: ({ params: { missingProperty } }) => (0, codegen_1._) `{missingProperty: ${missingProperty}}`,\n};\nconst def = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt) {\n const { gen, schema, schemaCode, data, $data, it } = cxt;\n const { opts } = it;\n if (!$data && schema.length === 0)\n return;\n const useLoop = schema.length >= opts.loopRequired;\n if (it.allErrors)\n allErrorsMode();\n else\n exitOnErrorMode();\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties;\n const { definedProperties } = cxt.it;\n for (const requiredKey of schema) {\n if ((props === null || props === void 0 ? void 0 : props[requiredKey]) === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictRequired);\n }\n }\n }\n function allErrorsMode() {\n if (useLoop || $data) {\n cxt.block$data(codegen_1.nil, loopAllRequired);\n }\n else {\n for (const prop of schema) {\n (0, code_1.checkReportMissingProp)(cxt, prop);\n }\n }\n }\n function exitOnErrorMode() {\n const missing = gen.let(\"missing\");\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true);\n cxt.block$data(valid, () => loopUntilMissing(missing, valid));\n cxt.ok(valid);\n }\n else {\n gen.if((0, code_1.checkMissingProp)(cxt, schema, missing));\n (0, code_1.reportMissingProp)(cxt, missing);\n gen.else();\n }\n }\n function loopAllRequired() {\n gen.forOf(\"prop\", schemaCode, (prop) => {\n cxt.setParams({ missingProperty: prop });\n gen.if((0, code_1.noPropertyInData)(gen, data, prop, opts.ownProperties), () => cxt.error());\n });\n }\n function loopUntilMissing(missing, valid) {\n cxt.setParams({ missingProperty: missing });\n gen.forOf(missing, schemaCode, () => {\n gen.assign(valid, (0, code_1.propertyInData)(gen, data, missing, opts.ownProperties));\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.error();\n gen.break();\n });\n }, codegen_1.nil);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=required.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} items`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n const op = keyword === \"maxItems\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n cxt.fail$data((0, codegen_1._) `${data}.length ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://github.com/ajv-validator/ajv/issues/889\nconst equal = require(\"fast-deep-equal\");\nequal.code = 'require(\"ajv/dist/runtime/equal\").default';\nexports.default = equal;\n//# sourceMappingURL=equal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dataType_1 = require(\"../../compile/validate/dataType\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: ({ params: { i, j } }) => (0, codegen_1.str) `must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({ params: { i, j } }) => (0, codegen_1._) `{i: ${i}, j: ${j}}`,\n};\nconst def = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, parentSchema, schemaCode, it } = cxt;\n if (!$data && !schema)\n return;\n const valid = gen.let(\"valid\");\n const itemTypes = parentSchema.items ? (0, dataType_1.getSchemaTypes)(parentSchema.items) : [];\n cxt.block$data(valid, validateUniqueItems, (0, codegen_1._) `${schemaCode} === false`);\n cxt.ok(valid);\n function validateUniqueItems() {\n const i = gen.let(\"i\", (0, codegen_1._) `${data}.length`);\n const j = gen.let(\"j\");\n cxt.setParams({ i, j });\n gen.assign(valid, true);\n gen.if((0, codegen_1._) `${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j));\n }\n function canOptimize() {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\");\n }\n function loopN(i, j) {\n const item = gen.name(\"item\");\n const wrongType = (0, dataType_1.checkDataTypes)(itemTypes, item, it.opts.strictNumbers, dataType_1.DataType.Wrong);\n const indices = gen.const(\"indices\", (0, codegen_1._) `{}`);\n gen.for((0, codegen_1._) `;${i}--;`, () => {\n gen.let(item, (0, codegen_1._) `${data}[${i}]`);\n gen.if(wrongType, (0, codegen_1._) `continue`);\n if (itemTypes.length > 1)\n gen.if((0, codegen_1._) `typeof ${item} == \"string\"`, (0, codegen_1._) `${item} += \"_\"`);\n gen\n .if((0, codegen_1._) `typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, (0, codegen_1._) `${indices}[${item}]`);\n cxt.error();\n gen.assign(valid, false).break();\n })\n .code((0, codegen_1._) `${indices}[${item}] = ${i}`);\n });\n }\n function loopN2(i, j) {\n const eql = (0, util_1.useFunc)(gen, equal_1.default);\n const outer = gen.name(\"outer\");\n gen.label(outer).for((0, codegen_1._) `;${i}--;`, () => gen.for((0, codegen_1._) `${j} = ${i}; ${j}--;`, () => gen.if((0, codegen_1._) `${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error();\n gen.assign(valid, false).break(outer);\n })));\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=uniqueItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: \"must be equal to constant\",\n params: ({ schemaCode }) => (0, codegen_1._) `{allowedValue: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schemaCode, schema } = cxt;\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data((0, codegen_1._) `!${(0, util_1.useFunc)(gen, equal_1.default)}(${data}, ${schemaCode})`);\n }\n else {\n cxt.fail((0, codegen_1._) `${schema} !== ${data}`);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=const.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: \"must be equal to one of the allowed values\",\n params: ({ schemaCode }) => (0, codegen_1._) `{allowedValues: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n if (!$data && schema.length === 0)\n throw new Error(\"enum must have non-empty array\");\n const useLoop = schema.length >= it.opts.loopEnum;\n let eql;\n const getEql = () => (eql !== null && eql !== void 0 ? eql : (eql = (0, util_1.useFunc)(gen, equal_1.default)));\n let valid;\n if (useLoop || $data) {\n valid = gen.let(\"valid\");\n cxt.block$data(valid, loopEnum);\n }\n else {\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const vSchema = gen.const(\"vSchema\", schemaCode);\n valid = (0, codegen_1.or)(...schema.map((_x, i) => equalCode(vSchema, i)));\n }\n cxt.pass(valid);\n function loopEnum() {\n gen.assign(valid, false);\n gen.forOf(\"v\", schemaCode, (v) => gen.if((0, codegen_1._) `${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break()));\n }\n function equalCode(vSchema, i) {\n const sch = schema[i];\n return typeof sch === \"object\" && sch !== null\n ? (0, codegen_1._) `${getEql()}(${data}, ${vSchema}[${i}])`\n : (0, codegen_1._) `${data} === ${sch}`;\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=enum.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst limitNumber_1 = require(\"./limitNumber\");\nconst multipleOf_1 = require(\"./multipleOf\");\nconst limitLength_1 = require(\"./limitLength\");\nconst pattern_1 = require(\"./pattern\");\nconst limitProperties_1 = require(\"./limitProperties\");\nconst required_1 = require(\"./required\");\nconst limitItems_1 = require(\"./limitItems\");\nconst uniqueItems_1 = require(\"./uniqueItems\");\nconst const_1 = require(\"./const\");\nconst enum_1 = require(\"./enum\");\nconst validation = [\n // number\n limitNumber_1.default,\n multipleOf_1.default,\n // string\n limitLength_1.default,\n pattern_1.default,\n // object\n limitProperties_1.default,\n required_1.default,\n // array\n limitItems_1.default,\n uniqueItems_1.default,\n // any\n { keyword: \"type\", schemaType: [\"string\", \"array\"] },\n { keyword: \"nullable\", schemaType: \"boolean\" },\n const_1.default,\n enum_1.default,\n];\nexports.default = validation;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateAdditionalItems = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`,\n params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`,\n};\nconst def = {\n keyword: \"additionalItems\",\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt) {\n const { parentSchema, it } = cxt;\n const { items } = parentSchema;\n if (!Array.isArray(items)) {\n (0, util_1.checkStrictMode)(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas');\n return;\n }\n validateAdditionalItems(cxt, items);\n },\n};\nfunction validateAdditionalItems(cxt, items) {\n const { gen, schema, data, keyword, it } = cxt;\n it.items = true;\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n if (schema === false) {\n cxt.setParams({ len: items.length });\n cxt.pass((0, codegen_1._) `${len} <= ${items.length}`);\n }\n else if (typeof schema == \"object\" && !(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.var(\"valid\", (0, codegen_1._) `${len} <= ${items.length}`); // TODO var\n gen.if((0, codegen_1.not)(valid), () => validateItems(valid));\n cxt.ok(valid);\n }\n function validateItems(valid) {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({ keyword, dataProp: i, dataPropType: util_1.Type.Num }, valid);\n if (!it.allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n });\n }\n}\nexports.validateAdditionalItems = validateAdditionalItems;\nexports.default = def;\n//# sourceMappingURL=additionalItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateTuple = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nconst def = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt) {\n const { schema, it } = cxt;\n if (Array.isArray(schema))\n return validateTuple(cxt, \"additionalItems\", schema);\n it.items = true;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n cxt.ok((0, code_1.validateArray)(cxt));\n },\n};\nfunction validateTuple(cxt, extraItems, schArr = cxt.schema) {\n const { gen, parentSchema, data, keyword, it } = cxt;\n checkStrictTuple(parentSchema);\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = util_1.mergeEvaluated.items(gen, schArr.length, it.items);\n }\n const valid = gen.name(\"valid\");\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n schArr.forEach((sch, i) => {\n if ((0, util_1.alwaysValidSchema)(it, sch))\n return;\n gen.if((0, codegen_1._) `${len} > ${i}`, () => cxt.subschema({\n keyword,\n schemaProp: i,\n dataProp: i,\n }, valid));\n cxt.ok(valid);\n });\n function checkStrictTuple(sch) {\n const { opts, errSchemaPath } = it;\n const l = schArr.length;\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false);\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`;\n (0, util_1.checkStrictMode)(it, msg, opts.strictTuples);\n }\n }\n}\nexports.validateTuple = validateTuple;\nexports.default = def;\n//# sourceMappingURL=items.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst items_1 = require(\"./items\");\nconst def = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => (0, items_1.validateTuple)(cxt, \"items\"),\n};\nexports.default = def;\n//# sourceMappingURL=prefixItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nconst additionalItems_1 = require(\"./additionalItems\");\nconst error = {\n message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`,\n params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`,\n};\nconst def = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt) {\n const { schema, parentSchema, it } = cxt;\n const { prefixItems } = parentSchema;\n it.items = true;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n if (prefixItems)\n (0, additionalItems_1.validateAdditionalItems)(cxt, prefixItems);\n else\n cxt.ok((0, code_1.validateArray)(cxt));\n },\n};\nexports.default = def;\n//# sourceMappingURL=items2020.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { min, max } }) => max === undefined\n ? (0, codegen_1.str) `must contain at least ${min} valid item(s)`\n : (0, codegen_1.str) `must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({ params: { min, max } }) => max === undefined ? (0, codegen_1._) `{minContains: ${min}}` : (0, codegen_1._) `{minContains: ${min}, maxContains: ${max}}`,\n};\nconst def = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, data, it } = cxt;\n let min;\n let max;\n const { minContains, maxContains } = parentSchema;\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains;\n max = maxContains;\n }\n else {\n min = 1;\n }\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n cxt.setParams({ min, max });\n if (max === undefined && min === 0) {\n (0, util_1.checkStrictMode)(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`);\n return;\n }\n if (max !== undefined && min > max) {\n (0, util_1.checkStrictMode)(it, `\"minContains\" > \"maxContains\" is always invalid`);\n cxt.fail();\n return;\n }\n if ((0, util_1.alwaysValidSchema)(it, schema)) {\n let cond = (0, codegen_1._) `${len} >= ${min}`;\n if (max !== undefined)\n cond = (0, codegen_1._) `${cond} && ${len} <= ${max}`;\n cxt.pass(cond);\n return;\n }\n it.items = true;\n const valid = gen.name(\"valid\");\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()));\n }\n else if (min === 0) {\n gen.let(valid, true);\n if (max !== undefined)\n gen.if((0, codegen_1._) `${data}.length > 0`, validateItemsWithCount);\n }\n else {\n gen.let(valid, false);\n validateItemsWithCount();\n }\n cxt.result(valid, () => cxt.reset());\n function validateItemsWithCount() {\n const schValid = gen.name(\"_valid\");\n const count = gen.let(\"count\", 0);\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)));\n }\n function validateItems(_valid, block) {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword: \"contains\",\n dataProp: i,\n dataPropType: util_1.Type.Num,\n compositeRule: true,\n }, _valid);\n block();\n });\n }\n function checkLimits(count) {\n gen.code((0, codegen_1._) `${count}++`);\n if (max === undefined) {\n gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true).break());\n }\n else {\n gen.if((0, codegen_1._) `${count} > ${max}`, () => gen.assign(valid, false).break());\n if (min === 1)\n gen.assign(valid, true);\n else\n gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true));\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=contains.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateSchemaDeps = exports.validatePropertyDeps = exports.error = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nexports.error = {\n message: ({ params: { property, depsCount, deps } }) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\";\n return (0, codegen_1.str) `must have ${property_ies} ${deps} when property ${property} is present`;\n },\n params: ({ params: { property, depsCount, deps, missingProperty } }) => (0, codegen_1._) `{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n};\nconst def = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error: exports.error,\n code(cxt) {\n const [propDeps, schDeps] = splitDependencies(cxt);\n validatePropertyDeps(cxt, propDeps);\n validateSchemaDeps(cxt, schDeps);\n },\n};\nfunction splitDependencies({ schema }) {\n const propertyDeps = {};\n const schemaDeps = {};\n for (const key in schema) {\n if (key === \"__proto__\")\n continue;\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps;\n deps[key] = schema[key];\n }\n return [propertyDeps, schemaDeps];\n}\nfunction validatePropertyDeps(cxt, propertyDeps = cxt.schema) {\n const { gen, data, it } = cxt;\n if (Object.keys(propertyDeps).length === 0)\n return;\n const missing = gen.let(\"missing\");\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop];\n if (deps.length === 0)\n continue;\n const hasProperty = (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties);\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n });\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n (0, code_1.checkReportMissingProp)(cxt, depProp);\n }\n });\n }\n else {\n gen.if((0, codegen_1._) `${hasProperty} && (${(0, code_1.checkMissingProp)(cxt, deps, missing)})`);\n (0, code_1.reportMissingProp)(cxt, missing);\n gen.else();\n }\n }\n}\nexports.validatePropertyDeps = validatePropertyDeps;\nfunction validateSchemaDeps(cxt, schemaDeps = cxt.schema) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n for (const prop in schemaDeps) {\n if ((0, util_1.alwaysValidSchema)(it, schemaDeps[prop]))\n continue;\n gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties), () => {\n const schCxt = cxt.subschema({ keyword, schemaProp: prop }, valid);\n cxt.mergeValidEvaluated(schCxt, valid);\n }, () => gen.var(valid, true) // TODO var\n );\n cxt.ok(valid);\n }\n}\nexports.validateSchemaDeps = validateSchemaDeps;\nexports.default = def;\n//# sourceMappingURL=dependencies.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"property name must be valid\",\n params: ({ params }) => (0, codegen_1._) `{propertyName: ${params.propertyName}}`,\n};\nconst def = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt) {\n const { gen, schema, data, it } = cxt;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n const valid = gen.name(\"valid\");\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({ propertyName: key });\n cxt.subschema({\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n }, valid);\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.error(true);\n if (!it.allErrors)\n gen.break();\n });\n });\n cxt.ok(valid);\n },\n};\nexports.default = def;\n//# sourceMappingURL=propertyNames.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"must NOT have additional properties\",\n params: ({ params }) => (0, codegen_1._) `{additionalProperty: ${params.additionalProperty}}`,\n};\nconst def = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, data, errsCount, it } = cxt;\n /* istanbul ignore if */\n if (!errsCount)\n throw new Error(\"ajv implementation error\");\n const { allErrors, opts } = it;\n it.props = true;\n if (opts.removeAdditional !== \"all\" && (0, util_1.alwaysValidSchema)(it, schema))\n return;\n const props = (0, code_1.allSchemaProperties)(parentSchema.properties);\n const patProps = (0, code_1.allSchemaProperties)(parentSchema.patternProperties);\n checkAdditionalProperties();\n cxt.ok((0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n function checkAdditionalProperties() {\n gen.forIn(\"key\", data, (key) => {\n if (!props.length && !patProps.length)\n additionalPropertyCode(key);\n else\n gen.if(isAdditional(key), () => additionalPropertyCode(key));\n });\n }\n function isAdditional(key) {\n let definedProp;\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = (0, util_1.schemaRefOrVal)(it, parentSchema.properties, \"properties\");\n definedProp = (0, code_1.isOwnProperty)(gen, propsSchema, key);\n }\n else if (props.length) {\n definedProp = (0, codegen_1.or)(...props.map((p) => (0, codegen_1._) `${key} === ${p}`));\n }\n else {\n definedProp = codegen_1.nil;\n }\n if (patProps.length) {\n definedProp = (0, codegen_1.or)(definedProp, ...patProps.map((p) => (0, codegen_1._) `${(0, code_1.usePattern)(cxt, p)}.test(${key})`));\n }\n return (0, codegen_1.not)(definedProp);\n }\n function deleteAdditional(key) {\n gen.code((0, codegen_1._) `delete ${data}[${key}]`);\n }\n function additionalPropertyCode(key) {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key);\n return;\n }\n if (schema === false) {\n cxt.setParams({ additionalProperty: key });\n cxt.error();\n if (!allErrors)\n gen.break();\n return;\n }\n if (typeof schema == \"object\" && !(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.name(\"valid\");\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false);\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.reset();\n deleteAdditional(key);\n });\n }\n else {\n applyAdditionalSchema(key, valid);\n if (!allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n }\n }\n }\n function applyAdditionalSchema(key, valid, errors) {\n const subschema = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: util_1.Type.Str,\n };\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n });\n }\n cxt.subschema(subschema, valid);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=additionalProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validate_1 = require(\"../../compile/validate\");\nconst code_1 = require(\"../code\");\nconst util_1 = require(\"../../compile/util\");\nconst additionalProperties_1 = require(\"./additionalProperties\");\nconst def = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt) {\n const { gen, schema, parentSchema, data, it } = cxt;\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n additionalProperties_1.default.code(new validate_1.KeywordCxt(it, additionalProperties_1.default, \"additionalProperties\"));\n }\n const allProps = (0, code_1.allSchemaProperties)(schema);\n for (const prop of allProps) {\n it.definedProperties.add(prop);\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = util_1.mergeEvaluated.props(gen, (0, util_1.toHash)(allProps), it.props);\n }\n const properties = allProps.filter((p) => !(0, util_1.alwaysValidSchema)(it, schema[p]));\n if (properties.length === 0)\n return;\n const valid = gen.name(\"valid\");\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop);\n }\n else {\n gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties));\n applyPropertySchema(prop);\n if (!it.allErrors)\n gen.else().var(valid, true);\n gen.endIf();\n }\n cxt.it.definedProperties.add(prop);\n cxt.ok(valid);\n }\n function hasDefault(prop) {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined;\n }\n function applyPropertySchema(prop) {\n cxt.subschema({\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n }, valid);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=properties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst util_2 = require(\"../../compile/util\");\nconst def = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt) {\n const { gen, schema, data, parentSchema, it } = cxt;\n const { opts } = it;\n const patterns = (0, code_1.allSchemaProperties)(schema);\n const alwaysValidPatterns = patterns.filter((p) => (0, util_1.alwaysValidSchema)(it, schema[p]));\n if (patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))) {\n return;\n }\n const checkProperties = opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties;\n const valid = gen.name(\"valid\");\n if (it.props !== true && !(it.props instanceof codegen_1.Name)) {\n it.props = (0, util_2.evaluatedPropsToName)(gen, it.props);\n }\n const { props } = it;\n validatePatternProperties();\n function validatePatternProperties() {\n for (const pat of patterns) {\n if (checkProperties)\n checkMatchingProperties(pat);\n if (it.allErrors) {\n validateProperties(pat);\n }\n else {\n gen.var(valid, true); // TODO var\n validateProperties(pat);\n gen.if(valid);\n }\n }\n }\n function checkMatchingProperties(pat) {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n (0, util_1.checkStrictMode)(it, `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`);\n }\n }\n }\n function validateProperties(pat) {\n gen.forIn(\"key\", data, (key) => {\n gen.if((0, codegen_1._) `${(0, code_1.usePattern)(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat);\n if (!alwaysValid) {\n cxt.subschema({\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: util_2.Type.Str,\n }, valid);\n }\n if (it.opts.unevaluated && props !== true) {\n gen.assign((0, codegen_1._) `${props}[${key}]`, true);\n }\n else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n }\n });\n });\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=patternProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt) {\n const { gen, schema, it } = cxt;\n if ((0, util_1.alwaysValidSchema)(it, schema)) {\n cxt.fail();\n return;\n }\n const valid = gen.name(\"valid\");\n cxt.subschema({\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n }, valid);\n cxt.failResult(valid, () => cxt.reset(), () => cxt.error());\n },\n error: { message: \"must NOT be valid\" },\n};\nexports.default = def;\n//# sourceMappingURL=not.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst def = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: code_1.validateUnion,\n error: { message: \"must match a schema in anyOf\" },\n};\nexports.default = def;\n//# sourceMappingURL=anyOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"must match exactly one schema in oneOf\",\n params: ({ params }) => (0, codegen_1._) `{passingSchemas: ${params.passing}}`,\n};\nconst def = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n if (it.opts.discriminator && parentSchema.discriminator)\n return;\n const schArr = schema;\n const valid = gen.let(\"valid\", false);\n const passing = gen.let(\"passing\", null);\n const schValid = gen.name(\"_valid\");\n cxt.setParams({ passing });\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n gen.block(validateOneOf);\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n function validateOneOf() {\n schArr.forEach((sch, i) => {\n let schCxt;\n if ((0, util_1.alwaysValidSchema)(it, sch)) {\n gen.var(schValid, true);\n }\n else {\n schCxt = cxt.subschema({\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n }\n if (i > 0) {\n gen\n .if((0, codegen_1._) `${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, (0, codegen_1._) `[${passing}, ${i}]`)\n .else();\n }\n gen.if(schValid, () => {\n gen.assign(valid, true);\n gen.assign(passing, i);\n if (schCxt)\n cxt.mergeEvaluated(schCxt, codegen_1.Name);\n });\n });\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=oneOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt) {\n const { gen, schema, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const valid = gen.name(\"valid\");\n schema.forEach((sch, i) => {\n if ((0, util_1.alwaysValidSchema)(it, sch))\n return;\n const schCxt = cxt.subschema({ keyword: \"allOf\", schemaProp: i }, valid);\n cxt.ok(valid);\n cxt.mergeEvaluated(schCxt);\n });\n },\n};\nexports.default = def;\n//# sourceMappingURL=allOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params }) => (0, codegen_1.str) `must match \"${params.ifClause}\" schema`,\n params: ({ params }) => (0, codegen_1._) `{failingKeyword: ${params.ifClause}}`,\n};\nconst def = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, parentSchema, it } = cxt;\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n (0, util_1.checkStrictMode)(it, '\"if\" without \"then\" and \"else\" is ignored');\n }\n const hasThen = hasSchema(it, \"then\");\n const hasElse = hasSchema(it, \"else\");\n if (!hasThen && !hasElse)\n return;\n const valid = gen.let(\"valid\", true);\n const schValid = gen.name(\"_valid\");\n validateIf();\n cxt.reset();\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\");\n cxt.setParams({ ifClause });\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause));\n }\n else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"));\n }\n else {\n gen.if((0, codegen_1.not)(schValid), validateClause(\"else\"));\n }\n cxt.pass(valid, () => cxt.error(true));\n function validateIf() {\n const schCxt = cxt.subschema({\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n }, schValid);\n cxt.mergeEvaluated(schCxt);\n }\n function validateClause(keyword, ifClause) {\n return () => {\n const schCxt = cxt.subschema({ keyword }, schValid);\n gen.assign(valid, schValid);\n cxt.mergeValidEvaluated(schCxt, valid);\n if (ifClause)\n gen.assign(ifClause, (0, codegen_1._) `${keyword}`);\n else\n cxt.setParams({ ifClause: keyword });\n };\n }\n },\n};\nfunction hasSchema(it, keyword) {\n const schema = it.schema[keyword];\n return schema !== undefined && !(0, util_1.alwaysValidSchema)(it, schema);\n}\nexports.default = def;\n//# sourceMappingURL=if.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({ keyword, parentSchema, it }) {\n if (parentSchema.if === undefined)\n (0, util_1.checkStrictMode)(it, `\"${keyword}\" without \"if\" is ignored`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=thenElse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst additionalItems_1 = require(\"./additionalItems\");\nconst prefixItems_1 = require(\"./prefixItems\");\nconst items_1 = require(\"./items\");\nconst items2020_1 = require(\"./items2020\");\nconst contains_1 = require(\"./contains\");\nconst dependencies_1 = require(\"./dependencies\");\nconst propertyNames_1 = require(\"./propertyNames\");\nconst additionalProperties_1 = require(\"./additionalProperties\");\nconst properties_1 = require(\"./properties\");\nconst patternProperties_1 = require(\"./patternProperties\");\nconst not_1 = require(\"./not\");\nconst anyOf_1 = require(\"./anyOf\");\nconst oneOf_1 = require(\"./oneOf\");\nconst allOf_1 = require(\"./allOf\");\nconst if_1 = require(\"./if\");\nconst thenElse_1 = require(\"./thenElse\");\nfunction getApplicator(draft2020 = false) {\n const applicator = [\n // any\n not_1.default,\n anyOf_1.default,\n oneOf_1.default,\n allOf_1.default,\n if_1.default,\n thenElse_1.default,\n // object\n propertyNames_1.default,\n additionalProperties_1.default,\n dependencies_1.default,\n properties_1.default,\n patternProperties_1.default,\n ];\n // array\n if (draft2020)\n applicator.push(prefixItems_1.default, items2020_1.default);\n else\n applicator.push(additionalItems_1.default, items_1.default);\n applicator.push(contains_1.default);\n return applicator;\n}\nexports.default = getApplicator;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must match format \"${schemaCode}\"`,\n params: ({ schemaCode }) => (0, codegen_1._) `{format: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt, ruleType) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n const { opts, errSchemaPath, schemaEnv, self } = it;\n if (!opts.validateFormats)\n return;\n if ($data)\n validate$DataFormat();\n else\n validateFormat();\n function validate$DataFormat() {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n });\n const fDef = gen.const(\"fDef\", (0, codegen_1._) `${fmts}[${schemaCode}]`);\n const fType = gen.let(\"fType\");\n const format = gen.let(\"format\");\n // TODO simplify\n gen.if((0, codegen_1._) `typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1._) `${fDef}.type || \"string\"`).assign(format, (0, codegen_1._) `${fDef}.validate`), () => gen.assign(fType, (0, codegen_1._) `\"string\"`).assign(format, fDef));\n cxt.fail$data((0, codegen_1.or)(unknownFmt(), invalidFmt()));\n function unknownFmt() {\n if (opts.strictSchema === false)\n return codegen_1.nil;\n return (0, codegen_1._) `${schemaCode} && !${format}`;\n }\n function invalidFmt() {\n const callFormat = schemaEnv.$async\n ? (0, codegen_1._) `(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : (0, codegen_1._) `${format}(${data})`;\n const validData = (0, codegen_1._) `(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`;\n return (0, codegen_1._) `${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`;\n }\n }\n function validateFormat() {\n const formatDef = self.formats[schema];\n if (!formatDef) {\n unknownFormat();\n return;\n }\n if (formatDef === true)\n return;\n const [fmtType, format, fmtRef] = getFormat(formatDef);\n if (fmtType === ruleType)\n cxt.pass(validCondition());\n function unknownFormat() {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg());\n return;\n }\n throw new Error(unknownMsg());\n function unknownMsg() {\n return `unknown format \"${schema}\" ignored in schema at path \"${errSchemaPath}\"`;\n }\n }\n function getFormat(fmtDef) {\n const code = fmtDef instanceof RegExp\n ? (0, codegen_1.regexpCode)(fmtDef)\n : opts.code.formats\n ? (0, codegen_1._) `${opts.code.formats}${(0, codegen_1.getProperty)(schema)}`\n : undefined;\n const fmt = gen.scopeValue(\"formats\", { key: schema, ref: fmtDef, code });\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, (0, codegen_1._) `${fmt}.validate`];\n }\n return [\"string\", fmtDef, fmt];\n }\n function validCondition() {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async)\n throw new Error(\"async format in sync schema\");\n return (0, codegen_1._) `await ${fmtRef}(${data})`;\n }\n return typeof format == \"function\" ? (0, codegen_1._) `${fmtRef}(${data})` : (0, codegen_1._) `${fmtRef}.test(${data})`;\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=format.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst format_1 = require(\"./format\");\nconst format = [format_1.default];\nexports.default = format;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.contentVocabulary = exports.metadataVocabulary = void 0;\nexports.metadataVocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n];\nexports.contentVocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n];\n//# sourceMappingURL=metadata.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core_1 = require(\"./core\");\nconst validation_1 = require(\"./validation\");\nconst applicator_1 = require(\"./applicator\");\nconst format_1 = require(\"./format\");\nconst metadata_1 = require(\"./metadata\");\nconst draft7Vocabularies = [\n core_1.default,\n validation_1.default,\n (0, applicator_1.default)(),\n format_1.default,\n metadata_1.metadataVocabulary,\n metadata_1.contentVocabulary,\n];\nexports.default = draft7Vocabularies;\n//# sourceMappingURL=draft7.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiscrError = void 0;\nvar DiscrError;\n(function (DiscrError) {\n DiscrError[\"Tag\"] = \"tag\";\n DiscrError[\"Mapping\"] = \"mapping\";\n})(DiscrError || (exports.DiscrError = DiscrError = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst types_1 = require(\"../discriminator/types\");\nconst compile_1 = require(\"../../compile\");\nconst ref_error_1 = require(\"../../compile/ref_error\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({ params: { discrError, tag, tagName } }) => (0, codegen_1._) `{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n};\nconst def = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt) {\n const { gen, data, schema, parentSchema, it } = cxt;\n const { oneOf } = parentSchema;\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\");\n }\n const tagName = schema.propertyName;\n if (typeof tagName != \"string\")\n throw new Error(\"discriminator: requires propertyName\");\n if (schema.mapping)\n throw new Error(\"discriminator: mapping is not supported\");\n if (!oneOf)\n throw new Error(\"discriminator: requires oneOf keyword\");\n const valid = gen.let(\"valid\", false);\n const tag = gen.const(\"tag\", (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(tagName)}`);\n gen.if((0, codegen_1._) `typeof ${tag} == \"string\"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName }));\n cxt.ok(valid);\n function validateMapping() {\n const mapping = getMapping();\n gen.if(false);\n for (const tagValue in mapping) {\n gen.elseIf((0, codegen_1._) `${tag} === ${tagValue}`);\n gen.assign(valid, applyTagSchema(mapping[tagValue]));\n }\n gen.else();\n cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName });\n gen.endIf();\n }\n function applyTagSchema(schemaProp) {\n const _valid = gen.name(\"valid\");\n const schCxt = cxt.subschema({ keyword: \"oneOf\", schemaProp }, _valid);\n cxt.mergeEvaluated(schCxt, codegen_1.Name);\n return _valid;\n }\n function getMapping() {\n var _a;\n const oneOfMapping = {};\n const topRequired = hasRequired(parentSchema);\n let tagRequired = true;\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i];\n if ((sch === null || sch === void 0 ? void 0 : sch.$ref) && !(0, util_1.schemaHasRulesButRef)(sch, it.self.RULES)) {\n const ref = sch.$ref;\n sch = compile_1.resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref);\n if (sch instanceof compile_1.SchemaEnv)\n sch = sch.schema;\n if (sch === undefined)\n throw new ref_error_1.default(it.opts.uriResolver, it.baseId, ref);\n }\n const propSch = (_a = sch === null || sch === void 0 ? void 0 : sch.properties) === null || _a === void 0 ? void 0 : _a[tagName];\n if (typeof propSch != \"object\") {\n throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`);\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch));\n addMappings(propSch, i);\n }\n if (!tagRequired)\n throw new Error(`discriminator: \"${tagName}\" must be required`);\n return oneOfMapping;\n function hasRequired({ required }) {\n return Array.isArray(required) && required.includes(tagName);\n }\n function addMappings(sch, i) {\n if (sch.const) {\n addMapping(sch.const, i);\n }\n else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i);\n }\n }\n else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`);\n }\n }\n function addMapping(tagValue, i) {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`);\n }\n oneOfMapping[tagValue] = i;\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv = void 0;\nconst core_1 = require(\"./core\");\nconst draft7_1 = require(\"./vocabularies/draft7\");\nconst discriminator_1 = require(\"./vocabularies/discriminator\");\nconst draft7MetaSchema = require(\"./refs/json-schema-draft-07.json\");\nconst META_SUPPORT_DATA = [\"/properties\"];\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\";\nclass Ajv extends core_1.default {\n _addVocabularies() {\n super._addVocabularies();\n draft7_1.default.forEach((v) => this.addVocabulary(v));\n if (this.opts.discriminator)\n this.addKeyword(discriminator_1.default);\n }\n _addDefaultMetaSchema() {\n super._addDefaultMetaSchema();\n if (!this.opts.meta)\n return;\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema;\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false);\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID;\n }\n defaultMeta() {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined));\n }\n}\nexports.Ajv = Ajv;\nmodule.exports = exports = Ajv;\nmodule.exports.Ajv = Ajv;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Ajv;\nvar validate_1 = require(\"./compile/validate\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });\nvar codegen_1 = require(\"./compile/codegen\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return codegen_1._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return codegen_1.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return codegen_1.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return codegen_1.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return codegen_1.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return codegen_1.CodeGen; } });\nvar validation_error_1 = require(\"./runtime/validation_error\");\nObject.defineProperty(exports, \"ValidationError\", { enumerable: true, get: function () { return validation_error_1.default; } });\nvar ref_error_1 = require(\"./compile/ref_error\");\nObject.defineProperty(exports, \"MissingRefError\", { enumerable: true, get: function () { return ref_error_1.default; } });\n//# sourceMappingURL=ajv.js.map","import Ajv from \"ajv\";\nconst ajv = new Ajv({ allowUnionTypes: true });\nexport const generateListValidator = (schema) => {\n const validate = ajv.compile(schema);\n return {\n validate,\n };\n};\nexport const generateDictValidator = (schema) => {\n const validateRoot = ajv.compile(schema);\n const compileKeySchema = (s) => {\n // Apparently necessary to avoid AJV error if `nullable: true` and value is `undefined`\n if (s === true) {\n return () => true;\n }\n return ajv.compile(s);\n };\n const validators = Object.fromEntries(Object.entries(schema.properties || {}).map(([c, p]) => [c, compileKeySchema(p)]));\n const validateAdditionalProperties = schema.additionalProperties\n ? compileKeySchema(schema.additionalProperties)\n : () => false;\n const validateKey = (v, key) => {\n const vld = getKeyValidator(key);\n return vld(v);\n };\n const getKeyValidator = (key) => {\n return validators[key] || validateAdditionalProperties;\n };\n const supportedKey = (key) => {\n return !!validators[key] || !!schema.additionalProperties;\n };\n return {\n validateRoot,\n validateKey,\n getKeyValidator,\n supportedKey,\n };\n};\n//# sourceMappingURL=utils.js.map","import { generateListValidator } from \"./utils.js\";\nexport const typedFeed = ({ db, schema, }) => {\n const { validate } = generateListValidator(schema);\n return new Proxy(db, {\n get(target, prop) {\n if (prop === \"all\") {\n return async () => {\n const all = await target[prop]();\n const valid = all.filter((x) => validate(x.value));\n return valid;\n };\n }\n else if (prop === \"add\") {\n return async (data) => {\n const valid = validate(data);\n if (valid) {\n return await target.add(data);\n }\n throw new Error(data.toString() + JSON.stringify(validate.errors, undefined, 2));\n };\n }\n else {\n return target[prop];\n }\n },\n });\n};\n//# sourceMappingURL=feed.js.map","import { generateDictValidator } from \"./utils.js\";\nexport const typedKeyValue = ({ db, schema, }) => {\n const { validateRoot, validateKey, getKeyValidator, supportedKey } = generateDictValidator(schema);\n return new Proxy(db, {\n get(target, prop) {\n if (prop === \"get\") {\n return async (key) => {\n if (!supportedKey(key))\n throw new Error(`Unsupported key ${key}.`);\n const val = await target.get(key);\n if (val === undefined)\n return val;\n const valide = validateKey(val, key);\n return valide ? val : undefined;\n };\n }\n else if (prop === \"put\" || prop === \"set\") {\n return async (key, value) => {\n if (!supportedKey(key))\n throw new Error(`Unsupported key ${key}.`);\n const valid = validateKey(value, key);\n if (valid)\n return await target.put(key, value);\n else\n throw new Error(JSON.stringify(getKeyValidator(key).errors, undefined, 2));\n };\n }\n else if (prop === \"all\") {\n return async () => {\n const all = await target.all();\n return all.filter((x) => validateKey(x.value, x.key));\n };\n }\n else if (prop === \"allAsJSON\") {\n return async () => {\n const all = await target.all();\n const data = Object.fromEntries(all.map((x) => [x.key, x.value]));\n const valid = validateRoot(data);\n if (valid) {\n return data;\n }\n else {\n throw new Error(JSON.stringify(validateRoot.errors, undefined, 2));\n }\n };\n }\n else {\n return target[prop];\n }\n },\n });\n};\n//# sourceMappingURL=keyvalue.js.map","import { generateDictValidator } from \"./utils.js\";\nexport const typedOrderedKeyValue = ({ db, schema, }) => {\n const { validateKey, getKeyValidator, supportedKey } = generateDictValidator(schema);\n return new Proxy(db, {\n get(target, prop) {\n if (prop === \"get\") {\n return async (key) => {\n if (!supportedKey(key))\n throw new Error(`Unsupported key ${key}.`);\n const val = await target.get(key);\n if (val === undefined)\n return val;\n const { value, position } = val;\n const valid = validateKey(value, key);\n return valid ? { value: value, position } : undefined;\n };\n }\n else if (prop === \"move\") {\n return async (key, position) => {\n if (!supportedKey(key))\n throw new Error(`Unsupported key ${key}.`);\n return await target.move(key, position);\n };\n }\n else if (prop === \"put\" || prop === \"set\") {\n return async (key, value, position) => {\n if (!supportedKey(key))\n throw new Error(`Unsupported key ${key}.`);\n const valid = validateKey(value, key);\n if (valid)\n return await target.put(key, value, position);\n else\n throw new Error(JSON.stringify(getKeyValidator(key).errors, undefined, 2));\n };\n }\n else if (prop === \"all\") {\n return async () => {\n const all = await target.all();\n return all.filter((x) => validateKey(x.value, x.key));\n };\n }\n else {\n return target[prop];\n }\n },\n });\n};\n//# sourceMappingURL=ordered-keyvalue.js.map","import { generateListValidator } from \"./utils.js\";\nexport const typedSet = ({ db, schema, }) => {\n const { validate } = generateListValidator(schema);\n return new Proxy(db, {\n get(target, prop) {\n if (prop === \"all\") {\n return async () => {\n const tous = await target[prop]();\n const valides = tous.filter((x) => validate(x.value));\n return valides;\n };\n }\n else if (prop === \"add\") {\n return async (data) => {\n const valid = validate(data);\n if (valid) {\n return await target.add(data);\n }\n throw new Error(data.toString() + JSON.stringify(validate.errors, undefined, 2));\n };\n }\n else {\n return target[prop];\n }\n },\n });\n};\n//# sourceMappingURL=set.js.map","class e{constructor(e){this.queue=void 0,this.maxConcurrent=void 0,this.count=void 0,this.queue=[],this.maxConcurrent=e,this.count=0}get canAcquire(){return this.countthis.queue.push(e))}release(){const e=this.queue.shift();e?setTimeout(e,0):this.count--}}const t=\"_default\";class s{constructor(e=1){this.semaphoreInstances=void 0,this.maxConcurrent=void 0,this.semaphoreInstances={},this.maxConcurrent=e}hasSemaphoreInstance(e=t){return Boolean(this.semaphoreInstances[e])}getSemaphoreInstance(s=t){return this.hasSemaphoreInstance(s)||(this.semaphoreInstances[s]=new e(this.maxConcurrent)),this.semaphoreInstances[s]}tidy(e=t){this.hasSemaphoreInstance(e)&&0===this.getSemaphoreInstance(e).count&&delete this.semaphoreInstances[e]}canAcquire(e=t){return this.getSemaphoreInstance(e).canAcquire}acquire(e=t){return this.getSemaphoreInstance(e).acquire()}release(e=t){this.getSemaphoreInstance(e).release(),this.tidy(e)}count(e=t){return this.hasSemaphoreInstance(e)?this.getSemaphoreInstance(e).count:0}hasTasks(e=t){return this.count(e)>0}async request(e,s=t){try{return await this.acquire(s),await e()}finally{this.release(s)}}async requestIfAvailable(e,s=t){return this.canAcquire(s)?this.request(e,s):null}}export{s as default};\n//# sourceMappingURL=promise-semaphore.modern.js.map\n","import { v4 as uuidv4 } from \"uuid\";\nimport { createOrbitDB, } from \"@orbitdb/core\";\nimport { registerFeed } from \"@orbitdb/feed-db\";\nimport { registerSet } from \"@orbitdb/set-db\";\nimport { registerOrderedKeyValue, } from \"@orbitdb/ordered-keyvalue-db\";\nimport { enregistrerContrôleurs } from \"./acc\\u00E8s/index.js\";\nimport { typedFeed, typedKeyValue, typedOrderedKeyValue, typedSet, } from \"@constl/bohr-db\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nexport const préparerOrbite = () => {\n registerFeed();\n registerSet();\n registerOrderedKeyValue();\n enregistrerContrôleurs();\n};\nexport async function initOrbite({ sfip, dossierOrbite, }) {\n préparerOrbite();\n const orbite = await createOrbitDB({\n ipfs: sfip,\n id: \"constellation\",\n directory: dossierOrbite,\n });\n return orbite;\n}\nconst typerBd = ({ bd, schéma, }) => {\n switch (bd.type) {\n case \"feed\":\n return typedFeed({\n db: bd,\n schema: schéma,\n });\n case \"set\":\n return typedSet({\n db: bd,\n schema: schéma,\n });\n case \"keyvalue\":\n return typedKeyValue({\n db: bd,\n // @ts-expect-error Je ne sais pas pourquoi\n schema: schéma,\n });\n case \"ordered-keyvalue\":\n return typedOrderedKeyValue({\n db: bd,\n // @ts-expect-error Je ne sais pas pourquoi\n schema: schéma,\n });\n default:\n throw new Error(\"Type de bd non reconnu.\");\n }\n};\nexport class GestionnaireOrbite {\n orbite;\n _bdsOrbite;\n verrouOuvertureBd;\n _oublierNettoyageBdsOuvertes;\n constructor(orbite) {\n this.orbite = orbite;\n this._bdsOrbite = {};\n this.verrouOuvertureBd = new Semaphore();\n this._oublierNettoyageBdsOuvertes = this.lancerNettoyageBdsOuvertes();\n }\n get identity() {\n return this.orbite.identity;\n }\n async ouvrirBd({ id, type, options, }) {\n // Nous avons besoin d'un verrou afin d'éviter la concurrence\n await this.verrouOuvertureBd.acquire(id);\n const existante = this._bdsOrbite[id];\n const idRequête = uuidv4();\n const fOublier = async () => {\n // Si la BD a été effacée entre-temps par `client.effacerBd`,\n // elle ne sera plus disponible ici\n if (!this._bdsOrbite[id])\n return;\n this._bdsOrbite[id].idsRequêtes.delete(idRequête);\n };\n // Fonction utilitaire pour vérifier le type de la bd\n const vérifierTypeBd = (bd) => {\n const { type: typeBd } = bd;\n if (type === undefined)\n return true;\n return typeBd === type;\n };\n if (existante) {\n this._bdsOrbite[id].idsRequêtes.add(idRequête);\n this.verrouOuvertureBd.release(id);\n if (!vérifierTypeBd(existante.bd))\n throw new Error(`La bd est de type ${existante.bd.type}, et non ${type}.`);\n return {\n bd: existante.bd,\n fOublier,\n };\n }\n try {\n const bd = (await this.orbite.open(id, { type, ...options }));\n this._bdsOrbite[id] = { bd, idsRequêtes: new Set([idRequête]) };\n // Maintenant que la BD a été créée, on peut relâcher le verrou\n this.verrouOuvertureBd.release(id);\n return {\n bd,\n fOublier,\n };\n }\n catch (e) {\n console.error(e.toString());\n throw e;\n }\n }\n async ouvrirBdTypée({ id, type, schéma, options, }) {\n const { bd, fOublier } = await this.ouvrirBd({\n id,\n type,\n options,\n });\n return {\n bd: typerBd({ bd, schéma }),\n fOublier,\n };\n }\n async créerBdIndépendante({ type, options, nom, }) {\n const bd = (await this.orbite.open(nom || uuidv4(), {\n type,\n ...options,\n }));\n const { address } = bd;\n this._bdsOrbite[address] = { bd, idsRequêtes: new Set() };\n return address;\n }\n async effacerBd({ id }) {\n const { bd } = await this.ouvrirBd({ id });\n await bd.drop();\n delete this._bdsOrbite[id];\n }\n lancerNettoyageBdsOuvertes() {\n const fNettoyer = async () => {\n await Promise.all(Object.keys(this._bdsOrbite).map(async (id) => {\n const { bd, idsRequêtes } = this._bdsOrbite[id];\n if (!idsRequêtes.size) {\n delete this._bdsOrbite[id];\n await bd.close();\n }\n }));\n };\n const i = setInterval(fNettoyer, 1000 * 60 * 5);\n return async () => clearInterval(i);\n }\n async appliquerFonctionBdOrbite({ idBd, fonction, args, }) {\n const { bd, fOublier } = await this.ouvrirBd({ id: idBd });\n // @ts-expect-error L'inférence de types marche mal ici\n const résultat = await bd[fonction](...args);\n await fOublier();\n return résultat;\n }\n async fermer({ arrêterOrbite }) {\n if (this._oublierNettoyageBdsOuvertes)\n this._oublierNettoyageBdsOuvertes();\n if (arrêterOrbite) {\n await this.orbite.stop();\n }\n }\n}\nexport class GestionnaireOrbiteGénéral {\n gestionnaires;\n constructor() {\n this.gestionnaires = {};\n }\n obtGestionnaireOrbite({ orbite }) {\n if (!this.gestionnaires[orbite.identity.id]) {\n this.gestionnaires[orbite.identity.id] = new GestionnaireOrbite(orbite);\n }\n return this.gestionnaires[orbite.identity.id];\n }\n async fermer({ orbite, arrêterOrbite, }) {\n const gestionnaireOrbite = this.obtGestionnaireOrbite({ orbite });\n await gestionnaireOrbite.fermer({ arrêterOrbite });\n delete this.gestionnaires[orbite.identity.id];\n }\n}\nexport const gestionnaireOrbiteGénéral = new GestionnaireOrbiteGénéral();\n//# sourceMappingURL=orbite.js.map","import { isValidAddress } from \"@orbitdb/core\";\nimport { EventEmitter, once } from \"events\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { MODÉRATEUR, MEMBRE } from \"./consts.js\";\nimport { gestionnaireOrbiteGénéral } from \"../orbite.js\";\nexport const suivreBdAccès = async (bd, f) => {\n const fFinale = async () => {\n const éléments = await bd.all();\n await f(éléments.map((é) => é.value));\n };\n bd.events.setMaxListeners(100);\n bd.events.on(\"update\", fFinale);\n await fFinale();\n const oublier = async () => {\n bd.events.off(\"update\", fFinale);\n };\n return oublier;\n};\nclass AccèsUtilisateur extends EventEmitter {\n orbite;\n idBd;\n idBdAccès;\n bdAccès;\n fOublierBd;\n oublierSuivi;\n autorisés;\n accès;\n idRequête;\n prêt;\n constructor(orbite, idBd) {\n super();\n this.orbite = gestionnaireOrbiteGénéral.obtGestionnaireOrbite({ orbite });\n this.idBd = idBd;\n this.autorisés = [];\n this.idRequête = uuidv4();\n this.prêt = false;\n }\n async initialiser() {\n const { bd, fOublier } = await this.orbite.ouvrirBd({ id: this.idBd });\n this.fOublierBd = fOublier;\n this.accès = bd.access;\n this.bdAccès = this.accès.bd;\n this.idBdAccès = this.bdAccès?.address;\n await this._miseÀJour([]);\n this.oublierSuivi = await suivreBdAccès(this.bdAccès, async (éléments) => {\n await this._miseÀJour(éléments);\n });\n this.prêt = true;\n }\n async _miseÀJour(éléments) {\n const autorisés = [];\n éléments = [\n {\n id: this.accès.write,\n rôle: MODÉRATEUR,\n },\n ...éléments,\n ];\n éléments.forEach((é) => {\n autorisés.push(é.id);\n });\n this.autorisés = autorisés;\n this.emit(\"misÀJour\");\n }\n async fermer() {\n if (this.oublierSuivi)\n await this.oublierSuivi();\n await this.fOublierBd?.();\n }\n}\nexport class GestionnaireAccès extends EventEmitter {\n _rôles;\n _rôlesIdOrbite;\n _rôlesUtilisateurs;\n _miseÀJourEnCours;\n orbite;\n constructor(orbite) {\n super();\n this._rôles = { [MODÉRATEUR]: [], [MEMBRE]: [] };\n this._rôlesIdOrbite = { [MODÉRATEUR]: [], [MEMBRE]: [] };\n this._rôlesUtilisateurs = { [MODÉRATEUR]: {}, [MEMBRE]: {} };\n this._miseÀJourEnCours = false;\n this.orbite = orbite;\n }\n async estUnMembre(id) {\n if (this._miseÀJourEnCours)\n await once(this, \"misÀJour\");\n return this._rôles[MEMBRE].includes(id);\n }\n async estUnModérateur(id) {\n if (this._miseÀJourEnCours)\n await once(this, \"misÀJour\");\n return this._rôles[MODÉRATEUR].includes(id);\n }\n async estAutorisé(id) {\n return (await this.estUnModérateur(id)) || (await this.estUnMembre(id));\n }\n async ajouterÉléments(éléments) {\n this._miseÀJourEnCours = true;\n await Promise.all(éléments.map(async (élément) => {\n const { rôle, id } = élément;\n if (isValidAddress(id)) {\n if (!this._rôlesUtilisateurs[rôle][id]) {\n const objAccèsUtilisateur = new AccèsUtilisateur(this.orbite, id);\n objAccèsUtilisateur.on(\"misÀJour\", () => this._mettreRôlesÀJour());\n this._rôlesUtilisateurs[rôle][id] = objAccèsUtilisateur;\n await objAccèsUtilisateur.initialiser();\n }\n }\n else {\n if (!this._rôlesIdOrbite[rôle].includes(id)) {\n this._rôlesIdOrbite[rôle].push(id);\n this._mettreRôlesÀJour();\n }\n }\n }));\n this._miseÀJourEnCours = false;\n this._mettreRôlesÀJour();\n this.emit(\"misÀJour\");\n }\n _mettreRôlesÀJour() {\n const _rôles = { MODÉRATEUR: [], MEMBRE: [] };\n for (const [rôle, ids] of Object.entries(this._rôlesIdOrbite)) {\n const listeRôle = _rôles[rôle];\n ids.forEach((id) => {\n if (!listeRôle.includes(id))\n listeRôle.push(id);\n });\n }\n for (const [rôle, utl] of Object.entries(this._rôlesUtilisateurs)) {\n const listeRôle = _rôles[rôle];\n Object.values(utl).forEach((u) => {\n u.autorisés.forEach((id) => {\n if (!listeRôle.includes(id))\n listeRôle.push(id);\n });\n });\n }\n this._rôles = _rôles;\n }\n async fermer() {\n const utilisateurs = Object.values(this._rôlesUtilisateurs)\n .map((l) => Object.values(l))\n .flat();\n await Promise.all(utilisateurs.map((u) => u.fermer()));\n }\n}\n//# sourceMappingURL=gestionnaireUtilisateurs.js.map","import { nomType } from \"./cntrlConstellation.js\";\nexport const pathJoin = (...paths) => paths.join(\"/\").replace(/((?<=\\/)\\/+)|(^\\.\\/)|((?<=\\/)\\.\\/)/g, \"\") || \".\";\nexport const estUnContrôleurConstellation = (x) => {\n return x.type === nomType;\n};\n//# sourceMappingURL=utils.js.map","import { IPFSBlockStorage, ComposedStorage, LRUStorage, Entry, } from \"@orbitdb/core\";\nimport * as Block from \"multiformats/block\";\nimport * as dagCbor from \"@ipld/dag-cbor\";\nimport { sha256 } from \"multiformats/hashes/sha2\";\nimport { base58btc } from \"multiformats/bases/base58\";\nimport { GestionnaireAccès } from \"./gestionnaireUtilisateurs.js\";\nimport { MODÉRATEUR, rôles } from \"./consts.js\";\nimport { pathJoin } from \"./utils.js\";\nconst type = \"contrôleur-accès-constellation\";\nconst codec = dagCbor;\nconst hasher = sha256;\nconst hashStringEncoding = base58btc;\nconst PremierModérateur = async ({ storage, type, params, }) => {\n const manifest = {\n type,\n ...params,\n };\n const { cid, bytes } = await Block.encode({ value: manifest, codec, hasher });\n const hash = cid.toString(hashStringEncoding);\n await storage.put(hash, bytes);\n return hash;\n};\nconst ContrôleurAccès = ({ write, storage } = {}) => async ({ orbitdb, identities, address, }) => {\n storage =\n storage ||\n (await ComposedStorage(await LRUStorage({ size: 1000 }), await IPFSBlockStorage({ ipfs: orbitdb.ipfs, pin: true })));\n write = write || orbitdb.identity.id;\n const gestAccès = new GestionnaireAccès(orbitdb);\n if (address) {\n const manifestBytes = await storage.get(address.replaceAll(\"/contrôleur-accès-constellation/\", \"\"));\n const { value } = await Block.decode({\n bytes: manifestBytes,\n codec,\n hasher,\n });\n ({ write } = value);\n }\n else {\n address = await PremierModérateur({\n storage,\n type,\n params: { write: write },\n });\n address = pathJoin(\"/\", type, address);\n }\n // Ajouter le premier modérateur\n await gestAccès.ajouterÉléments([{ id: write, rôle: MODÉRATEUR }]);\n const canAppend = async (entry) => {\n // Pour l'instant, on ne peut qu'ajouter des membres\n if (entry.payload.op !== \"ADD\" || !entry.payload.value)\n return false;\n const { rôle, id: idAjout } = entry.payload.value;\n const rôleValide = rôles.includes(rôle);\n const writerIdentity = await identities.getIdentity(entry.identity);\n if (!writerIdentity) {\n return false;\n }\n const { id } = writerIdentity;\n if (rôleValide &&\n (await seraÉventuellementUnModérateur(id, entry)) &&\n identities.verifyIdentity(writerIdentity)) {\n if (rôle === MODÉRATEUR) {\n await gestAccès.ajouterÉléments([{ id: idAjout, rôle: MODÉRATEUR }]);\n }\n return true;\n }\n return false;\n };\n const seraÉventuellementUnModérateur = async (id, entry) => {\n if (await gestAccès.estUnModérateur(id))\n return true;\n const prochains = entry.next;\n for (const prochain of prochains) {\n const octets = await storage?.get(prochain);\n const prochaineEntrée = await Entry.decode(octets);\n const prochaineValide = await canAppend(prochaineEntrée);\n if (prochaineValide) {\n if (await gestAccès.estUnModérateur(id))\n return true;\n }\n }\n return false;\n };\n return {\n type,\n address,\n write,\n canAppend,\n };\n};\nContrôleurAccès.type = type;\nexport { ContrôleurAccès };\n//# sourceMappingURL=cntrlMod.js.map","import { IPFSBlockStorage, LRUStorage, ComposedStorage, } from \"@orbitdb/core\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport * as Block from \"multiformats/block\";\nimport * as dagCbor from \"@ipld/dag-cbor\";\nimport { sha256 } from \"multiformats/hashes/sha2\";\nimport { base58btc } from \"multiformats/bases/base58\";\nimport { GestionnaireAccès, suivreBdAccès, } from \"./gestionnaireUtilisateurs.js\";\nimport { MODÉRATEUR, MEMBRE, rôles } from \"./consts.js\";\nimport { gestionnaireOrbiteGénéral } from \"../orbite.js\";\nimport { EventEmitter } from \"events\";\nimport { ContrôleurAccès } from \"./cntrlMod.js\";\nimport { pathJoin } from \"./utils.js\";\n/* Fortement inspirée du contrôleur Orbit-DB de 3Box\nMIT License\n\nCopyright (c) 2019 3Box Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\nexport const nomType = \"contrôleur-constellation\";\nconst codec = dagCbor;\nconst hasher = sha256;\nconst hashStringEncoding = base58btc;\nconst schémaBdAccès = {\n type: \"object\",\n properties: {\n rôle: {\n type: \"string\",\n },\n id: {\n type: \"string\",\n },\n },\n required: [\"rôle\", \"id\"],\n};\nconst ManifestContrôleurConstellation = async ({ storage, type, params, }) => {\n const manifest = {\n type,\n ...params,\n };\n const { cid, bytes } = await Block.encode({ value: manifest, codec, hasher });\n const hash = cid.toString(hashStringEncoding);\n await storage.put(hash, bytes);\n return hash;\n};\nconst ContrôleurConstellation = ({ write, nom, storage, } = {}) => async ({ orbitdb, identities, address, }) => {\n write = write || orbitdb.identity.id;\n nom = nom || uuidv4();\n storage =\n storage ||\n (await ComposedStorage(await LRUStorage({ size: 1000 }), await IPFSBlockStorage({ ipfs: orbitdb.ipfs, pin: true })));\n // À faire : vérifier si toujours nécessaire avec bd-orbite 1,0\n const gestionnaireOrbite = gestionnaireOrbiteGénéral.obtGestionnaireOrbite({\n orbite: orbitdb,\n });\n let adresseBdAccès;\n let bd;\n let fOublierBd;\n if (address) {\n const manifestBytes = await storage.get(address.replaceAll(`/${nomType}/`, \"\"));\n const { value } = await Block.decode({\n bytes: manifestBytes,\n codec,\n hasher,\n });\n ({ write, nom, adresseBdAccès } = value);\n ({ bd, fOublier: fOublierBd } = await gestionnaireOrbite.ouvrirBdTypée({\n id: adresseBdAccès,\n type: \"set\",\n schéma: schémaBdAccès,\n options: {\n syncAutomatically: true,\n },\n }));\n }\n else {\n ({ bd, fOublier: fOublierBd } = await gestionnaireOrbite.ouvrirBdTypée({\n id: nom, // Je pense qu'on peut faire ça, tant que le nom reste unique...\n type: \"set\",\n schéma: schémaBdAccès,\n options: {\n AccessController: ContrôleurAccès({ write, storage }),\n syncAutomatically: true,\n },\n }));\n adresseBdAccès = bd.address;\n address = await ManifestContrôleurConstellation({\n storage,\n type: nomType,\n params: { write: write, nom, adresseBdAccès },\n });\n address = pathJoin(\"/\", nomType, address);\n }\n const événements = new EventEmitter();\n const gestRôles = new GestionnaireAccès(orbitdb);\n gestRôles.on(\"misÀJour\", () => événements.emit(\"misÀJour\"));\n const miseÀJourBdAccès = async (éléments) => {\n éléments = [{ rôle: MODÉRATEUR, id: write }, ...éléments];\n await gestRôles.ajouterÉléments(éléments);\n };\n const fOublierSuiviBdAccès = await suivreBdAccès(bd, miseÀJourBdAccès);\n const estAutorisé = async (id) => {\n return await gestRôles.estAutorisé(id);\n };\n const estUnModérateur = async (id) => {\n return await gestRôles.estUnModérateur(id);\n };\n const estUnMembre = async (id) => {\n return await gestRôles.estUnMembre(id);\n };\n const canAppend = async (entry) => {\n const writerIdentity = await identities.getIdentity(entry.identity);\n if (!writerIdentity) {\n return false;\n }\n const { id } = writerIdentity;\n // Pour implémenter la révocation des permissions, garder compte ici\n // des entrées approuvées par utilisatrice\n return (identities.verifyIdentity(writerIdentity) && (await estAutorisé(id)));\n };\n const grant = async (rôle, id) => {\n if (!rôles.includes(rôle)) {\n throw new Error(`Erreur: Le rôle ${rôle} n'existe pas.`);\n }\n if (gestRôles._rôles[rôle].includes(id)) {\n return;\n }\n try {\n const entry = { rôle, id };\n await bd.add(entry);\n }\n catch (_e) {\n const e = _e;\n if (e.toString().includes(\"not append entry\")) {\n throw new Error(`Erreur : Le rôle ${rôle} ne peut pas être octroyé à ${id}.`);\n }\n throw e;\n }\n };\n const revoke = async (_rôle, _id) => {\n throw new Error(\"C'est très difficile à implémenter...avez-vous des idées ?\");\n };\n const close = async () => {\n await fOublierSuiviBdAccès();\n await fOublierBd();\n await gestRôles.fermer();\n };\n const drop = async () => {\n // Désactivé pour l'instant. Si nous avons plus qu'une bd qui partage le même contrôleur,\n // la destruction de la bd du contrôleur pourrait causer des ennuis.\n // await bd.drop();\n };\n const suivreUtilisateursAutorisés = async (f) => {\n const fFinale = async () => {\n const mods = Object.keys(gestRôles._rôlesUtilisateurs[MODÉRATEUR]).map((m) => {\n return {\n idCompte: m,\n rôle: MODÉRATEUR,\n };\n });\n const idsMods = mods.map((m) => m.idCompte);\n const membres = Object.keys(gestRôles._rôlesUtilisateurs[MEMBRE])\n .map((m) => {\n return {\n idCompte: m,\n rôle: MEMBRE,\n };\n })\n .filter((m) => !idsMods.includes(m.idCompte));\n const utilisateurs = [...mods, ...membres];\n await f(utilisateurs);\n };\n gestRôles.on(\"misÀJour\", fFinale);\n await fFinale();\n const fOublier = async () => {\n gestRôles.off(\"misÀJour\", fFinale);\n };\n return fOublier;\n };\n const suivreIdsOrbiteAutoriséesÉcriture = async (f) => {\n const fFinale = async () => {\n await f([...gestRôles._rôles.MEMBRE, ...gestRôles._rôles.MODÉRATEUR]);\n };\n gestRôles.on(\"misÀJour\", fFinale);\n await fFinale();\n const fOublier = async () => {\n gestRôles.off(\"misÀJour\", fFinale);\n };\n return fOublier;\n };\n return {\n type: nomType,\n address,\n adresseBdAccès,\n write,\n grant,\n revoke,\n canAppend,\n close,\n drop,\n suivreUtilisateursAutorisés,\n suivreIdsOrbiteAutoriséesÉcriture,\n gestRôles,\n estAutorisé,\n estUnMembre,\n estUnModérateur,\n bd,\n };\n};\nContrôleurConstellation.type = nomType;\nexport { ContrôleurConstellation };\n//# sourceMappingURL=cntrlConstellation.js.map","import { useAccessController } from \"@orbitdb/core\";\nimport { ContrôleurConstellation } from \"./cntrlConstellation.js\";\nimport { ContrôleurAccès } from \"./cntrlMod.js\";\nimport { registerSet } from \"@orbitdb/set-db\";\nexport const enregistrerContrôleurs = () => {\n registerSet();\n useAccessController(ContrôleurConstellation);\n useAccessController(ContrôleurAccès);\n};\nexport * as cntrlConstellation from \"./cntrlConstellation.js\";\nexport * as cntrlMod from \"./cntrlMod.js\";\nexport * from \"./consts.js\";\n//# sourceMappingURL=index.js.map","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.19.1';\nvar current_codepage = 1200, current_ansi = 1252;\n/*:: declare var cptable:any; */\n/*global cptable:true, window */\nvar $cptable;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/: 1252, /* ANSI */\n\t/*::[*/1/*::]*/: 65001, /* DEFAULT */\n\t/*::[*/2/*::]*/: 65001, /* SYMBOL */\n\t/*::[*/77/*::]*/: 10000, /* MAC */\n\t/*::[*/128/*::]*/: 932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/: 949, /* HANGUL */\n\t/*::[*/130/*::]*/: 1361, /* JOHAB */\n\t/*::[*/134/*::]*/: 936, /* GB2312 */\n\t/*::[*/136/*::]*/: 950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/: 1253, /* GREEK */\n\t/*::[*/162/*::]*/: 1254, /* TURKISH */\n\t/*::[*/163/*::]*/: 1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/: 1255, /* HEBREW */\n\t/*::[*/178/*::]*/: 1256, /* ARABIC */\n\t/*::[*/186/*::]*/: 1257, /* BALTIC */\n\t/*::[*/204/*::]*/: 1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/: 874, /* THAI */\n\t/*::[*/238/*::]*/: 1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/: 1252, /* OEM */\n\t/*::[*/69/*::]*/: 6969 /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array*/ { var o/*:Array*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_encode_pass(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n if (c1 > 255)\n c1 = 95;\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n if (c2 > 255)\n c2 = 95;\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n if (c3 > 255)\n c3 = 95;\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_decode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n input = input.replace(/^data:([^\\/]+\\/[^\\/]+)?;base64\\,/, \"\").replace(/[^\\w\\+\\/\\=]/g, \"\");\n for (var i = 0; i < input.length; ) {\n e1 = Base64_map.indexOf(input.charAt(i++));\n e2 = Base64_map.indexOf(input.charAt(i++));\n c1 = e1 << 2 | e2 >> 4;\n o += String.fromCharCode(c1);\n e3 = Base64_map.indexOf(input.charAt(i++));\n c2 = (e2 & 15) << 4 | e3 >> 2;\n if (e3 !== 64) {\n o += String.fromCharCode(c2);\n }\n e4 = Base64_map.indexOf(input.charAt(i++));\n c3 = (e3 & 3) << 6 | e4;\n if (e4 !== 64) {\n o += String.fromCharCode(c3);\n }\n }\n return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\nvar buf_utf16le = /*#__PURE__*/(function() {\n\tif(typeof Buffer === 'undefined') return false;\n\tvar x = Buffer_from([65,0]);\n\tif(!x) return false;\n\tvar o = x.toString(\"utf16le\");\n\treturn o.length == 1;\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") o.set(new Uint8Array(s2a(bufs[i])), maxlen);\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]= 'General';\n\tt[1]= '0';\n\tt[2]= '0.00';\n\tt[3]= '#,##0';\n\tt[4]= '#,##0.00';\n\tt[9]= '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0: 'General',\n\t1: '0',\n\t2: '0.00',\n\t3: '#,##0',\n\t4: '#,##0.00',\n\t9: '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40\n\n\t23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4\n\n\t67: 9, 68: 10, // 67 -> 9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47\n\t82: 0 // 82 -> 0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t// 5 -- Currency, 0 decimal, black negative\n\t5: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t// 6 -- Currency, 0 decimal, red negative\n\t6: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t// 7 -- Currency, 2 decimal, black negative\n\t7: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 8 -- Currency, 2 decimal, red negative\n\t8: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $ Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $ Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n /* TODO: properly adjust y/m/d and */\n o[0] -= 581;\n var dow = date.getDay();\n if(date < 60) dow = (dow + 6) % 7;\n return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri*/ {\n\tvar out/*:Array*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? fmt.charAt(i+2) : c; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\": if(v == thresh) return true; break;\n\t\tcase \">\": if(v > thresh) return true; break;\n\t\tcase \"<\": if(v < thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/* table of bad formats written by third-party tools */\nvar bad_formats = {\n\t\"d.m\": \"d\\\\.m\" // Issue #2571 Google Sheets writes invalid format 'd.m', correct format is 'd\".\"m' or 'd\\\\.m'\n};\n\nfunction SSF__load(fmt, idx) {\n\treturn SSF_load(bad_formats[fmt] || fmt, idx);\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports/*:CFBModule*/ = /*::(*/{}/*:: :any)*/;\nexports.version = '1.2.2';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n add 1980 to stored year\n stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t} break;\n\t\t\t/* ZIP64 Extended Information Field */\n\t\t\tcase 0x0001: {\n\t\t\t\tvar sz1 = blob.read_shift(4), sz2 = blob.read_shift(4);\n\t\t\t\tp.usz = (sz2 * Math.pow(2,32) + sz1);\n\t\t\t\tsz1 = blob.read_shift(4); sz2 = blob.read_shift(4);\n\t\t\t\tp.csz = (sz2 * Math.pow(2,32) + sz1);\n\t\t\t\t// NOTE: volume fields are skipped\n\t\t\t} break;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = _fs); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nif(dir_start < sector_list.length) sector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Array*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array*/ = [], q/*:Array*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tif(cnt >= 1) sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array*/, start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/, chkd/*:?Array*/)/*:SectorEntry*/ {\n\tvar buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array*/, dir_start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array*/ = [], buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array*/, Paths/*:Array*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname: name,\n\t\t\ttype: blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL: blob.read_shift(4, 'i'),\n\t\t\tR: blob.read_shift(4, 'i'),\n\t\t\tC: blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\twhile(!s) {\n\t\t\twhile(dirname(dad) && !fullPaths[dirname(dad)]) dad = dirname(dad);\n\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\n\t\t\tdad = dirname(data[i][0]);\n\t\t\ts = fullPaths[dad];\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name = filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tif(_nm.length > 32) {\n\t\t\tconsole.error(\"Name \" + _nm + \" will be truncated to \" + _nm.slice(0,32));\n\t\t\t_nm = _nm.slice(0, 32);\n\t\t}\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ];\n\n/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */\nvar DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\t/* ZIP64 lengths */\n\t\tif(EF && EF[0x0001]) {\n\t\t\tif((EF[0x0001]||{}).usz) usz = EF[0x0001].usz;\n\t\t\tif((EF[0x0001]||{}).csz) csz = EF[0x0001].csz;\n\t\t}\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif((ef[0x0001]||{}).usz) _usz = ef[0x0001].usz;\n\t\tif((ef[0x0001]||{}).csz) _csz = ef[0x0001].csz;\n\t\tif(EF) {\n\t\t\tif((EF[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t\t\tif((EF[0x0001]||{}).usz) _usz = ef[0x0001].usz;\n\t\t\tif((EF[0x0001]||{}).csz) _csz = ef[0x0001].csz;\n\t\t}\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = typeof fi.content == \"string\" ? CRC32.bstr(fi.content, 0) : CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = typeof fi.content == \"string\" ? s2a(fi.content) : fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4, (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nvar _fs;\nfunction set_fs(fs) { _fs = fs; }\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit && buf_utf16le) {\n\t\t\t// TODO: temporary patch\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\n\n/* NOTE: Chrome rejects bare times like 1:23 PM */\nvar FDRE1 = /^(0?\\d|1[0-2])(?:|:([0-5]?\\d)(?:|(\\.\\d+)(?:|:([0-5]?\\d))|:([0-5]?\\d)(|\\.\\d+)))\\s+([ap])m?$/;\n\nfunction fuzzytime1(M) /*:Date*/ {\n /* TODO: 1904 adjustment, keep in sync with base date */\n if(!M[2]) return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), 0, 0, 0);\n if(M[3]) {\n if(M[4]) return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], +M[4], parseFloat(M[3])*1000);\n else return new Date(1899,11,30,(M[7] == \"p\" ? 12 : 0), +M[1], +M[2], parseFloat(M[3])*1000);\n }\n else if(M[5]) return new Date(1899,11,30, (+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], +M[5], M[6] ? parseFloat(M[6]) * 1000 : 0);\n else return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], 0, 0);\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar lower = s.toLowerCase();\n\tvar lnos = lower.replace(/\\s+/g, \" \").trim();\n\tvar M = lnos.match(FDRE1);\n\tif(M) return fuzzytime1(M);\n\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.replace(/[ap]m?/, \"\").match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099 || s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'"': '\"',\n\t''': \"'\",\n\t'>': '>',\n\t'<': '<',\n\t'&': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\tfunction raw_unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn raw_unescapexml(s.slice(0, i)) + s.slice(i+9,j) + raw_unescapexml(s.slice(j+3));\n\t}\n\treturn function unescapexml(text/*:string*/, xlsx/*:boolean*/) {\n\t\tvar out = raw_unescapexml(text);\n\t\treturn xlsx ? out.replace(/\\r\\n/g, \"\\n\") : out;\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f\\uFFFE-\\uFFFF]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"
\").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); }\n\n/* note: xsd:boolean valid values: true / 1 / false / 0 */\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': return true;\n\t\tcase 0: case false: case '0': case 'false': return false;\n\t\t//default: throw new Error(\"Invalid xsd:boolean \" + value);\n\t}\n\treturn false;\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches ... extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+ tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + ''; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/"/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?>:\\/]+)(?:[\\s?:\\/](?:[^>=]|=\"[^\"]*?\")*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o': 'urn:schemas-microsoft-com:office:office',\n\t'x': 'urn:schemas-microsoft-com:office:excel',\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv': 'http://macVmlSchemaUri',\n\t'v': 'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array*/=[]; for(var i=s; i*/=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/ || !buf_utf16le) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/ || !buf_utf16le) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this) && buf_utf16le) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs' || f == 'cpstr') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cpp = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cpp[0];\n\t\t\t}\n\t\t\tsize = val.length;\n\t\t} else if(typeof $cptable !== 'undefined' && f == 'cpstr') {\n\t\t\tcpp = $cptable.utils.encode(current_codepage, val);\n\t\t\t/* replace null bytes with _ when relevant */\n if(cpp.length == val.length) for(i = 0; i < val.length; ++i) if(cpp[i] == 0 && val.charCodeAt(i) != 0) cpp[i] = 0x5F;\n if(cpp.length == 2 * val.length) for(i = 0; i < val.length; ++i) if(cpp[2*i] == 0 && cpp[2*i+1] == 0 && val.charCodeAt(i) != 0) cpp[2*i] = 0x5F;\n\t\t\tfor(i = 0; i < cpp.length; ++i) this[this.l + i] = cpp[i];\n\t\t\tsize = cpp.length;\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t\tsize = val.length;\n\t\t}\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\t// workaround for new Buffer(3).slice(0,0) bug in bun 0.1.3\n\t\tif(curbuf.l) {\n\t\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\t}\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range. If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\nfunction fix_range(a1/*:string*/)/*:string*/ {\n\tvar s = decode_range(a1);\n\treturn \"$\" + encode_col(s.s.c) + \"$\" + encode_row(s.s.r) + \":$\" + encode_col(s.e.c) + \"$\" + encode_row(s.e.r);\n}\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname.replace(/'/g, \"''\") + \"'\";\n\treturn sname;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? (_ws[\"!data\"] != null) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tif(dense && !ws[\"!data\"]) ws[\"!data\"] = [];\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tvar row = [];\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tvar __R = _R + R, __Rstr = \"\" + (__R + 1);\n\t\tif(dense) {\n\t\t\tif(!ws[\"!data\"][__R]) ws[\"!data\"][__R] = [];\n\t\t\trow = ws[\"!data\"][__R];\n\t\t}\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v, o.date1904)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v, o.date1904); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(row[__C] && row[__C].z) cell.z = row[__C].z;\n\t\t\t\trow[__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_col(__C) + __Rstr/*:any*/;\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY = 0x0000;\n//var VT_NULL = 0x0001;\nvar VT_I2 = 0x0002;\nvar VT_I4 = 0x0003;\n//var VT_R4 = 0x0004;\n//var VT_R8 = 0x0005;\n//var VT_CY = 0x0006;\n//var VT_DATE = 0x0007;\n//var VT_BSTR = 0x0008;\n//var VT_ERROR = 0x000A;\nvar VT_BOOL = 0x000B;\nvar VT_VARIANT = 0x000C;\n//var VT_DECIMAL = 0x000E;\n//var VT_I1 = 0x0010;\n//var VT_UI1 = 0x0011;\n//var VT_UI2 = 0x0012;\nvar VT_UI4 = 0x0013;\n//var VT_I8 = 0x0014;\n//var VT_UI8 = 0x0015;\n//var VT_INT = 0x0016;\n//var VT_UINT = 0x0017;\n//var VT_LPSTR = 0x001E;\n//var VT_LPWSTR = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB = 0x0041;\n//var VT_STREAM = 0x0042;\n//var VT_STORAGE = 0x0043;\n//var VT_STREAMED_Object = 0x0044;\n//var VT_STORED_Object = 0x0045;\n//var VT_BLOB_Object = 0x0046;\nvar VT_CF = 0x0047;\n//var VT_CLSID = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\n//var VT_VECTOR = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR = 0x101E;\n//var VT_ARRAY = 0x2000;\n\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\" // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0x000000, /* 0x40 icvForeground ?? */\n\t0xFFFFFF, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\": 0x00,\n\t\"#DIV/0!\": 0x07,\n\t\"#VALUE!\": 0x0F,\n\t\"#REF!\": 0x17,\n\t\"#NAME?\": 0x1D,\n\t\"#NUM!\": 0x24,\n\t\"#N/A\": 0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\": 0xFF\n};\n\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary */\n/* 14.2 Part Summary */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\tworkbooks: {\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t},\n\tstrs: { /* Shared Strings */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t},\n\tcomments: { /* Comments */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t},\n\tsheets: { /* Worksheet */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t},\n\tcharts: { /* Chartsheet */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t},\n\tdialogs: { /* Dialogsheet */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t},\n\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t},\n\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t},\n\tstyles: { /* Styles */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts, raw)/*:string*/ {\n\tvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array*/ = [], v;\n\n\tif(!raw) {\n\t\to[o.length] = (XML_HEADER);\n\t\to[o.length] = writextag('Types', null, {\n\t\t\t'xmlns': XMLNS.CT,\n\t\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t\t'xmlns:xsi': XMLNS.xsi\n\t\t});\n\t\to = o.concat([\n\t\t\t['xml', 'application/xml'],\n\t\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t\t/* from test files */\n\t\t\t['bmp', 'image/bmp'],\n\t\t\t['png', 'image/png'],\n\t\t\t['gif', 'image/gif'],\n\t\t\t['emf', 'image/x-emf'],\n\t\t\t['wmf', 'image/x-wmf'],\n\t\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t\t['pdf', 'application/pdf'],\n\t\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t\t].map(function(x) {\n\t\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t\t}));\n\t}\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(!raw && o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tCONN: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/connections\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 \n\t\tcase 'file-entry': // 4.3 \n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 \n\t\tcase 'algorithm': // 4.5 \n\t\tcase 'start-key-generation': // 4.6 \n\t\tcase 'key-derivation': // 4.7 \n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\to.push(' \\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' \\n');\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn 'Sheet' + 'JS ' + XLSX.version + '';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\", \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': name = null; break;\n\t\t\tdefault: if (x.indexOf('');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tif(Props[i][0] == 0 && Props.length > i+1 && Props[i][1] == Props[i+1][1]) continue; // R9\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ];\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip, /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip, /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip, /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip, /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf, /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip, /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip, /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip, /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip, /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip, /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts, /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip, /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip, /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip, /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip, /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip, /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip, /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip, /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array*/ {\n\tvar merges/*:Array*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865,\n\t/*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850,\n\t/*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437,\n\t/*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437,\n\t/*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437,\n\t/*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932,\n\t/*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437,\n\t/*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865,\n\t/*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437,\n\t/*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437,\n\t/*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850,\n\t/*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852,\n\t/*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860,\n\t/*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866,\n\t/*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852,\n\t/*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949,\n\t/*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874,\n\t/*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252,\n\t/*::[*/0x59/*::]*/: 1252, /*::[*/0x6C/*::]*/: 863,\n\t/*::[*/0x86/*::]*/: 737, /*::[*/0x87/*::]*/: 852,\n\t/*::[*/0x88/*::]*/: 857, /*::[*/0xCC/*::]*/: 1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = (typeof $cptable !== \"undefined\" ? $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)) : a2s(d.slice(d.l, d.l + ww))).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = typeof $cptable !== \"undefined\" ? $cptable.utils.decode(current_cp, dd) : a2s(dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write ' / / ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \" . \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry {\n\t\tvar o = sheet_to_workbook(dbf_to_sheet(buf, opts), opts);\n\t\to.bookType = \"dbf\";\n\t\treturn o;\n\t} catch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar old_cp = current_codepage;\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array*/ = [];\n\tvar colwidths/*:Array*/ = [];\n\tvar coldecimals/*:Array*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\t/* TODO: cache the values instead of encoding twice */\n\t\t\tmaxlen = Math.max(maxlen, (typeof $cptable !== \"undefined\" && typeof col[j] == \"string\" ? $cptable.utils.encode(current_ansi, col[j]): String(col[j])).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\tvar cp = +dbf_reverse_map[/*::String(*/current_codepage/*::)*/] || 0x03;\n\th.write_shift(4, 0x00000000 | (cp<<8));\n\tif(dbf_codepage_map[cp] != +o.codepage) {\n\t\tif(o.codepage) console.error(\"DBF Unsupported codepage \" + current_codepage + \", using 1252\");\n\t\tcurrent_codepage = 1252;\n\t}\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\t/* TODO: test how applications handle non-ASCII field names */\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j colwidths[j]) _n = _n.slice(0, colwidths[j]); // addresses decimal > width\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_n.length; ++hcnt) rout.write_shift(1, 0x20);\n\t\t\t\t\trout.write_shift(1, _n, \"sbcs\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(!data[i][j]) rout.write_shift(8, \"00000000\", \"sbcs\");\n\t\t\t\t\telse {\n\t\t\t\t\t\trout.write_shift(4, (\"0000\"+data[i][j].getFullYear()).slice(-4), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+(data[i][j].getMonth()+1)).slice(-2), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+data[i][j].getDate()).slice(-2), \"sbcs\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C':\n\t\t\t\t\tvar _l = rout.l;\n\t\t\t\t\tvar _s = String(data[i][j] != null ? data[i][j] : \"\").slice(0, colwidths[j]);\n\t\t\t\t\trout.write_shift(1, _s, \"cpstr\");\n\t\t\t\t\t_l += colwidths[j] - rout.l;\n\t\t\t\t\tfor(hcnt=0; hcnt < _l; ++hcnt) rout.write_shift(1, 0x20); break;\n\t\t\t}\n\t\t}\n\t\t// data\n\t}\n\tcurrent_codepage = old_cp;\n\tba.next(1).write_shift(1, 0x1A);\n\treturn ba.end();\n}\n\treturn {\n\t\tto_workbook: dbf_to_workbook,\n\t\tto_sheet: dbf_to_sheet,\n\t\tfrom_sheet: sheet_to_dbf\n\t};\n})();\n\nvar SYLK = /*#__PURE__*/(function() {\n\t/* TODO: stress test sequences */\n\tvar sylk_escapes = ({\n\t\tAA:'À', BA:'Á', CA:'Â', DA:195, HA:'Ä', JA:197,\n\t\tAE:'È', BE:'É', CE:'Ê', HE:'Ë',\n\t\tAI:'Ì', BI:'Í', CI:'Î', HI:'Ï',\n\t\tAO:'Ò', BO:'Ó', CO:'Ô', DO:213, HO:'Ö',\n\t\tAU:'Ù', BU:'Ú', CU:'Û', HU:'Ü',\n\t\tAa:'à', Ba:'á', Ca:'â', Da:227, Ha:'ä', Ja:229,\n\t\tAe:'è', Be:'é', Ce:'ê', He:'ë',\n\t\tAi:'ì', Bi:'í', Ci:'î', Hi:'ï',\n\t\tAo:'ò', Bo:'ó', Co:'ô', Do:245, Ho:'ö',\n\t\tAu:'ù', Bu:'ú', Cu:'û', Hu:'ü',\n\t\tKC:'Ç', Kc:'ç', q:'æ', z:'œ', a:'Æ', j:'Œ',\n\t\tDN:209, Dn:241, Hy:255,\n\t\tS:169, c:170, R:174, \"B \":180,\n\t\t/*::[*/0/*::]*/:176, /*::[*/1/*::]*/:177, /*::[*/2/*::]*/:178,\n\t\t/*::[*/3/*::]*/:179, /*::[*/5/*::]*/:181, /*::[*/6/*::]*/:182,\n\t\t/*::[*/7/*::]*/:183, Q:185, k:186, b:208, i:216, l:222, s:240, y:248,\n\t\t\"!\":161, '\"':162, \"#\":163, \"(\":164, \"%\":165, \"'\":167, \"H \":168,\n\t\t\"+\":171, \";\":187, \"<\":188, \"=\":189, \">\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* https://oss.sheetjs.com/notes/sylk/ for more details */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array*/ = [], colinfo/*:Array*/ = [], cw/*:Array*/ = [];\n\t\tvar Mval = 0, j;\n\t\tvar wb = { Workbook: { WBProps: {}, Names: [] } };\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': /* workbook options */\n\t\t\tfor(rj=1; rj= 5 or < 0\n\t\t\t\t\tif(d1904 >= 1 && d1904 <= 4) wb.Workbook.WBProps.date1904 = true;\n\t\t\t\t} break;\n\t\t\t} break;\n\t\t\tcase 'W': break; /* window */\n\t\t\tcase 'P':\n\t\t\t\tswitch(record[1].charAt(0)){\n\t\t\t\t\tcase 'P': formats.push(rstr.slice(3).replace(/;;/g, \";\")); break;\n\t\t\t\t} break;\n\t\t\tcase 'NN': { /* defined name */\n\t\t\t\tvar nn = {Sheet: 0};\n\t\t\t\tfor(rj=1; rj -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tformula = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tif(formula) {\n\t\t\t\tif(!arr[R][C]) arr[R][C] = { t: 'n', f: formula };\n\t\t\t\telse arr[R][C].f = formula;\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F': /* Format */\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\t// case 'K': // ??\n\t\t\t\t// case 'E': // ??\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tcolinfo.forEach(function(col) { process_col(col); });\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht, wb];\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1], wb = aoasht[2];\n\t\tvar _opts = dup(opts); _opts.date1904 = (((wb||{}).Workbook || {}).WBProps || {}).date1904;\n\t\tvar o = aoa_to_sheet(aoa, _opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\tvar outwb = sheet_to_workbook(o, opts);\n\t\tkeys(wb).forEach(function(k) { outwb[k] = wb[k]; });\n\t\toutwb.bookType = \"sylk\";\n\t\treturn outwb;\n\t}\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + (cell.v == null ? \"\" : String(cell.v)).replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array*/, rows/*:Array*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/, wb/*:?WorkBook*/)/*:string*/ {\n\t\t/* TODO: codepage */\n\t\tvar preamble/*:Array*/ = [\"ID;PSheetJS;N;E\"], o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tvar RS = \"\\r\\n\";\n\t\tvar d1904 = (((wb||{}).Workbook||{}).WBProps||{}).date1904;\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tpreamble.push(\"O;L;D;B\" + (d1904 ? \";V4\" : \"\") + \";K47;G100 0.001\");\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tif(dense && !ws[\"!data\"][R]) continue;\n\t\t\tvar p = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcell = dense ? ws[\"!data\"][R][C] : ws[encode_col(C) + encode_row(R)];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\tp.push(write_ws_cell_sylk(cell, ws, R, C, opts)); // TODO: pass date1904 info\n\t\t\t}\n\t\t\to.push(p.join(RS));\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\t\tvar o = sheet_to_workbook(dif_to_sheet(str, opts), opts);\n\t\to.bookType = \"dif\";\n\t\treturn o;\n\t}\n\n\tfunction make_value(v/*:number*/, s/*:string*/)/*:string*/ { return \"0,\" + String(v) + \"\\r\\n\" + s; }\n\tfunction make_value_str(s/*:string*/)/*:string*/ { return \"1,0\\r\\n\\\"\" + s.replace(/\"/g,'\"\"') + '\"'; }\n\tfunction sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar _DIF_XL = DIF_XL;\n\t\tvar r = safe_decode_range(ws['!ref']);\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tvar o/*:Array*/ = [\n\t\t\t\"TABLE\\r\\n0,1\\r\\n\\\"sheetjs\\\"\\r\\n\",\n\t\t\t\"VECTORS\\r\\n0,\" + (r.e.r - r.s.r + 1) + \"\\r\\n\\\"\\\"\\r\\n\",\n\t\t\t\"TUPLES\\r\\n0,\" + (r.e.c - r.s.c + 1) + \"\\r\\n\\\"\\\"\\r\\n\",\n\t\t\t\"DATA\\r\\n0,0\\r\\n\\\"\\\"\\r\\n\"\n\t\t];\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar row = dense ? ws[\"!data\"][R] : [];\n\t\t\tvar p = \"-1,0\\r\\nBOT\\r\\n\";\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar cell/*:Cell*/ = dense ? (row && row[C]) : ws[encode_cell({r:R,c:C})];\n\t\t\t\tif(cell == null) { p +=(\"1,0\\r\\n\\\"\\\"\\r\\n\"); continue;}\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(_DIF_XL) {\n\t\t\t\t\t\t\tif(cell.w != null) p +=(\"0,\" + cell.w + \"\\r\\nV\");\n\t\t\t\t\t\t\telse if(cell.v != null) p +=(make_value(cell.v, \"V\")); // TODO: should this call SSF_format?\n\t\t\t\t\t\t\telse if(cell.f != null && !cell.F) p +=(make_value_str(\"=\" + cell.f));\n\t\t\t\t\t\t\telse p +=(\"1,0\\r\\n\\\"\\\"\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif(cell.v == null) p +=(\"1,0\\r\\n\\\"\\\"\");\n\t\t\t\t\t\t\telse p +=(make_value(cell.v, \"V\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\tp +=(cell.v ? make_value(1, \"TRUE\") : make_value(0, \"FALSE\"));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's':\n\t\t\t\t\t\tp +=(make_value_str((!_DIF_XL || isNaN(+cell.v)) ? cell.v : '=\"' + cell.v + '\"'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\tif(_DIF_XL) p +=(make_value(cell.w, \"V\"));\n\t\t\t\t\t\telse p +=(make_value_str(cell.w));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: p +=(\"1,0\\r\\n\\\"\\\"\");\n\t\t\t\t}\n\t\t\t\tp += \"\\r\\n\";\n\t\t\t}\n\t\t\to.push(p);\n\t\t}\n\t\treturn o.join(\"\") + \"-1,0\\r\\nEOD\";\n\t}\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array*/ = [], oo/*:Array*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[\"!data\"][R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = ({}/*:any*/);\n\t\tif(o.dense) ws[\"!data\"] = [];\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end); if(s.slice(-1) == \"\\r\") s = s.slice(0, -1);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN((v = fuzzydate(s)).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; v = parseDate(s, k); }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = v; }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(v); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[\"!data\"][R]) ws[\"!data\"][R] = []; ws[\"!data\"][R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase 0x0d:\n\t\t\t\tif(instr) break;\n\t\t\t\tif(str.charCodeAt(end+1) == 0x0a) ++end;\n\t\t\t\t/* falls through */\n\t\t\tcase sepcc: case 0x0a: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[\"!data\"][R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ({}/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [], sdata = [];\n\t\tif(o.dense) sdata = s[\"!data\"] = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[4] == 0x51 && d[5] == 0x50 && d[6] == 0x57) return qpw_to_workbook_buf(d, opts);\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0xFF: /* BOF (works 3+) */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\to.works = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif((!o.qpro && !o.works || RT == 0x33) && val[1].v.charCodeAt(0) < 0x30) val[1].v = val[1].v.slice(1);\n\t\t\t\t\tif(o.works || o.works2) val[1].v = val[1].v.replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = ({}/*:any*/); if(o.dense) sdata = s[\"!data\"] = [];\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (sdata[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!sdata[val[0].r]) sdata[val[0].r] = [];\n\t\t\t\t\t\tsdata[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x5405: o.works2 = true; break;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tif(val[1].v.charCodeAt(0) < 0x30) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t// TODO: R9 appears to encode control codes this way -- verify against other versions\n\t\t\t\t\tval[1].v = val[1].v.replace(/\\x0F./g, function($$) { return String.fromCharCode($$.charCodeAt(1) - 0x20); }).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = ({}/*:any*/); if(o.dense) sdata = s[\"!data\"] = [];\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!sdata[val[0].r]) sdata[val[0].r] = [];\n\t\t\t\t\t\tsdata[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[cols[C] + rr];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = ws[\"!data\"] != null;\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else if(opts.works) { // TODO: verify with more complex works3-4 examples\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t\to[2] = blob.read_shift(2);\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\tfunction parse_STRING(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x1F: [\"NA\", 0],\n\t\t// 0x20: [\"ERR\", 0],\n\t\t0x21: [\"ABS\", 1],\n\t\t0x22: [\"TRUNC\", 1],\n\t\t0x23: [\"SQRT\", 1],\n\t\t0x24: [\"LOG\", 1],\n\t\t0x25: [\"LN\", 1],\n\t\t0x26: [\"PI\", 0],\n\t\t0x27: [\"SIN\", 1],\n\t\t0x28: [\"COS\", 1],\n\t\t0x29: [\"TAN\", 1],\n\t\t0x2A: [\"ATAN2\", 2],\n\t\t0x2B: [\"ATAN\", 1],\n\t\t0x2C: [\"ASIN\", 1],\n\t\t0x2D: [\"ACOS\", 1],\n\t\t0x2E: [\"EXP\", 1],\n\t\t0x2F: [\"MOD\", 2],\n\t\t// 0x30\n\t\t0x31: [\"ISNA\", 1],\n\t\t0x32: [\"ISERR\", 1],\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x35: [\"RAND\", 0],\n\t\t// 0x36 DATE\n\t\t// 0x37 NOW\n\t\t// 0x38 PMT\n\t\t// 0x39 PV\n\t\t// 0x3A FV\n\t\t// 0x3B IF\n\t\t// 0x3C DAY\n\t\t// 0x3D MONTH\n\t\t// 0x3E YEAR\n\t\t0x3F: [\"ROUND\", 2],\n\t\t// 0x40 TIME\n\t\t// 0x41 HOUR\n\t\t// 0x42 MINUTE\n\t\t// 0x43 SECOND\n\t\t0x44: [\"ISNUMBER\", 1],\n\t\t0x45: [\"ISTEXT\", 1],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x47: [\"VALUE\", 1],\n\t\t// 0x48: [\"FIXED\", ?? 1],\n\t\t0x49: [\"MID\", 3],\n\t\t0x4A: [\"CHAR\", 1],\n\t\t// 0x4B\n\t\t// 0x4C FIND\n\t\t// 0x4D DATEVALUE\n\t\t// 0x4E TIMEVALUE\n\t\t// 0x4F CELL\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t// 0x55 VLOOKUP\n\t\t// 0x56 NPV\n\t\t// 0x57 VAR\n\t\t// 0x58 STD\n\t\t// 0x59 IRR\n\t\t// 0x5A HLOOKUP\n\t\t// 0x5B DSUM\n\t\t// 0x5C DAVERAGE\n\t\t// 0x5D DCOUNTA\n\t\t// 0x5E DMIN\n\t\t// 0x5F DMAX\n\t\t// 0x60 DVARP\n\t\t// 0x61 DSTDEVP\n\t\t// 0x62 INDEX\n\t\t// 0x63 COLS\n\t\t// 0x64 ROWS\n\t\t// 0x65 REPEAT\n\t\t0x66: [\"UPPER\", 1],\n\t\t0x67: [\"LOWER\", 1],\n\t\t// 0x68 LEFT\n\t\t// 0x69 RIGHT\n\t\t// 0x6A REPLACE\n\t\t0x6B: [\"PROPER\", 1],\n\t\t// 0x6C CELL\n\t\t0x6D: [\"TRIM\", 1],\n\t\t// 0x6E CLEAN\n\t\t0x6F: [\"T\", 1]\n\t\t// 0x70 V\n\t};\n\tvar BinOpTab = [\n\t\t \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"\", \"+\", \"-\", \"*\", \"/\", \"^\", \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\", \"<\", \">\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\", \"\", \"\", \"\", \"\", \"\", \"\", \"\" // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 12);\n\t\tblob.l += length - 12; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_STRING },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0x00FF/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\t/* QPW uses a different set of record types */\n\tfunction qpw_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tprep_blob(d, 0);\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ({}/*:any*/); if(o.dense) s[\"!data\"] = [];\n\t\tvar SST = [], sname = \"\", formulae = [];\n\t\tvar range = {s:{r:-1,c:-1}, e:{r:-1,c:-1}};\n\t\tvar cnt = 0, type = 0, C = 0, R = 0;\n\t\tvar wb = { SheetNames: [], Sheets: {} };\n\t\touter: while(d.l < d.length) {\n\t\t\tvar RT = d.read_shift(2), length = d.read_shift(2);\n\t\t\tvar p = d.slice(d.l, d.l + length);\n\t\t\tprep_blob(p, 0);\n\t\t\tswitch(RT) {\n\t\t\t\tcase 0x01: /* BOF */\n\t\t\t\t\tif(p.read_shift(4) != 0x39575051) throw \"Bad QPW9 BOF!\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x02: /* EOF */ break outer;\n\n\t\t\t\t/* TODO: The behavior here should be consistent with Numbers: QP Notebook ~ .TN.SheetArchive, QP Sheet ~ .TST.TableModelArchive */\n\t\t\t\tcase 0x0401: /* BON */ break;\n\t\t\t\tcase 0x0402: /* EON */ /* TODO: backfill missing sheets based on BON cnt */ break;\n\n\t\t\t\tcase 0x0407: { /* SST */\n\t\t\t\t\tp.l += 12;\n\t\t\t\t\twhile(p.l < p.length) {\n\t\t\t\t\t\tcnt = p.read_shift(2);\n\t\t\t\t\t\ttype = p.read_shift(1);\n\t\t\t\t\t\tSST.push(p.read_shift(cnt, 'cstr'));\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0408: { /* FORMULAE */\n\t\t\t\t\t//p.l += 12;\n\t\t\t\t\t//while(p.l < p.length) {\n\t\t\t\t\t//\tcnt = p.read_shift(2);\n\t\t\t\t\t//\tformulae.push(p.slice(p.l, p.l + cnt + 1)); p.l += cnt + 1;\n\t\t\t\t\t//}\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x0601: { /* BOS */\n\t\t\t\t\tvar sidx = p.read_shift(2);\n\t\t\t\t\ts = ({}/*:any*/); if(o.dense) s[\"!data\"] = [];\n\t\t\t\t\trange.s.c = p.read_shift(2);\n\t\t\t\t\trange.e.c = p.read_shift(2);\n\t\t\t\t\trange.s.r = p.read_shift(4);\n\t\t\t\t\trange.e.r = p.read_shift(4);\n\t\t\t\t\tp.l += 4;\n\t\t\t\t\tif(p.l + 2 < p.length) {\n\t\t\t\t\t\tcnt = p.read_shift(2);\n\t\t\t\t\t\ttype = p.read_shift(1);\n\t\t\t\t\t\tsname = cnt == 0 ? \"\" : p.read_shift(cnt, 'cstr');\n\t\t\t\t\t}\n\t\t\t\t\tif(!sname) sname = encode_col(sidx);\n\t\t\t\t\t/* TODO: backfill empty sheets */\n\t\t\t\t} break;\n\t\t\t\tcase 0x0602: { /* EOS */\n\t\t\t\t\t/* NOTE: QP valid range A1:IV1000000 */\n\t\t\t\t\tif(range.s.c > 0xFF || range.s.r > 999999) break;\n\t\t\t\t\tif(range.e.c < range.s.c) range.e.c = range.s.c;\n\t\t\t\t\tif(range.e.r < range.s.r) range.e.r = range.s.r;\n\t\t\t\t\ts[\"!ref\"] = encode_range(range);\n\t\t\t\t\tbook_append_sheet(wb, s, sname); // TODO: a barrel roll\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x0A01: { /* COL (like XLS Row, modulo the layout transposition) */\n\t\t\t\t\tC = p.read_shift(2);\n\t\t\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\t\t\tif(range.s.c > C) range.s.c = C;\n\t\t\t\t\tR = p.read_shift(4);\n\t\t\t\t\tif(range.s.r > R) range.s.r = R;\n\t\t\t\t\tR = p.read_shift(4);\n\t\t\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x0C01: { /* MulCells (like XLS MulRK, but takes advantage of common column data patterns) */\n\t\t\t\t\tR = p.read_shift(4), cnt = p.read_shift(4);\n\t\t\t\t\tif(range.s.r > R) range.s.r = R;\n\t\t\t\t\tif(range.e.r < R + cnt - 1) range.e.r = R + cnt - 1;\n\t\t\t\t\tvar CC = encode_col(C);\n\t\t\t\t\twhile(p.l < p.length) {\n\t\t\t\t\t\tvar cell = { t: \"z\" };\n\t\t\t\t\t\tvar flags = p.read_shift(1);\n\t\t\t\t\t\tif(flags & 0x80) p.l += 2;\n\t\t\t\t\t\tvar mul = (flags & 0x40) ? p.read_shift(2) - 1: 0;\n\t\t\t\t\t\tswitch(flags & 0x1F) {\n\t\t\t\t\t\t\tcase 1: break;\n\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: p.read_shift(2) }; break;\n\t\t\t\t\t\t\tcase 3: cell = { t: \"n\", v: p.read_shift(2, 'i') }; break;\n\t\t\t\t\t\t\tcase 5: cell = { t: \"n\", v: p.read_shift(8, 'f') }; break;\n\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = p.read_shift(4) - 1] }; break;\n\t\t\t\t\t\t\tcase 8: cell = { t: \"n\", v: p.read_shift(8, 'f') }; p.l += 2; /* cell.f = formulae[p.read_shift(4)]; */ p.l += 4; break;\n\t\t\t\t\t\t\tdefault: throw \"Unrecognized QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar delta = 0;\n\t\t\t\t\t\tif(flags & 0x20) switch(flags & 0x1F) {\n\t\t\t\t\t\t\tcase 2: delta = p.read_shift(2); break;\n\t\t\t\t\t\t\tcase 3: delta = p.read_shift(2, 'i'); break;\n\t\t\t\t\t\t\tcase 7: delta = p.read_shift(2); break;\n\t\t\t\t\t\t\tdefault: throw \"Unsupported delta for QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(!(!o.sheetStubs && cell.t == \"z\")) {\n\t\t\t\t\t\t\tif(s[\"!data\"] != null) {\n\t\t\t\t\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\t\t\t\t\ts[\"!data\"][R][C] = cell;\n\t\t\t\t\t\t\t} else s[CC + encode_row(R)] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t++R; --cnt;\n\t\t\t\t\t\twhile(mul-- > 0 && cnt >= 0) {\n\t\t\t\t\t\t\tif(flags & 0x20) switch(flags & 0x1F) {\n\t\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: (cell.v + delta) & 0xFFFF }; break;\n\t\t\t\t\t\t\t\tcase 3: cell = { t: \"n\", v: (cell.v + delta) & 0xFFFF }; if(cell.v > 0x7FFF) cell.v -= 0x10000; break;\n\t\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = (type + delta) >>> 0] }; break;\n\t\t\t\t\t\t\t\tdefault: throw \"Cannot apply delta for QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t\t} else switch(flags & 0x1F) {\n\t\t\t\t\t\t\t\tcase 1: cell = { t: \"z\" }; break;\n\t\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: p.read_shift(2) }; break;\n\t\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = p.read_shift(4) - 1] }; break;\n\t\t\t\t\t\t\t\tdefault: throw \"Cannot apply repeat for QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!(!o.sheetStubs && cell.t == \"z\")) {\n\t\t\t\t\t\t\t\tif(s[\"!data\"] != null) {\n\t\t\t\t\t\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\t\t\t\t\t\ts[\"!data\"][R][C] = cell;\n\t\t\t\t\t\t\t\t} else s[CC + encode_row(R)] = cell;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t++R; --cnt;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\tdefault: break;\n\t\t\t}\n\t\t\td.l += length;\n\t\t}\n\t\treturn wb;\n\t}\n\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '':\n\t\t\tcase '': font.shadow = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '':\n\t\t\tcase '': font.outline = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '':\n\t\t\tcase '': font.strike = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '':\n\t\t\tcase '': font.u = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '':\n\t\t\tcase '': font.b = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '':\n\t\t\tcase '': font.i = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('');\n\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\n\n\t\toutro.push(\"\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array, string, Array]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"), true);\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")), true);\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\n\t\t}\n\t\tsitag += \"\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array*/ {\n\tvar o/*:Array*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\tcase '': break;\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nfunction rtf_to_sheet(d, opts) {\n switch (opts.type) {\n case \"base64\":\n return rtf_to_sheet_str(Base64_decode(d), opts);\n case \"binary\":\n return rtf_to_sheet_str(d, opts);\n case \"buffer\":\n return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString(\"binary\") : a2s(d), opts);\n case \"array\":\n return rtf_to_sheet_str(cc2str(d), opts);\n }\n throw new Error(\"Unrecognized type \" + opts.type);\n}\nfunction rtf_to_sheet_str(str, opts) {\n var o = opts || {};\n var ws = {};\n var dense = o.dense;\n if (dense)\n ws[\"!data\"] = [];\n var rows = str.match(/\\\\trowd[\\s\\S]*?\\\\row\\b/g);\n if (!rows)\n throw new Error(\"RTF missing table\");\n var range = { s: { c: 0, r: 0 }, e: { c: 0, r: rows.length - 1 } };\n var row = [];\n rows.forEach(function(rowtf, R) {\n if (dense)\n row = ws[\"!data\"][R] = [];\n var rtfre = /\\\\[\\w\\-]+\\b/g;\n var last_index = 0;\n var res;\n var C = -1;\n var payload = [];\n while ((res = rtfre.exec(rowtf)) != null) {\n var data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n if (data.charCodeAt(0) == 32)\n data = data.slice(1);\n if (data.length)\n payload.push(data);\n switch (res[0]) {\n case \"\\\\cell\":\n ++C;\n if (payload.length) {\n var cell = { v: payload.join(\"\"), t: \"s\" };\n if (cell.v == \"TRUE\" || cell.v == \"FALSE\") {\n cell.v = cell.v == \"TRUE\";\n cell.t = \"b\";\n } else if (!isNaN(fuzzynum(cell.v))) {\n cell.t = \"n\";\n if (o.cellText !== false)\n cell.w = cell.v;\n cell.v = fuzzynum(cell.v);\n }\n if (dense)\n row[C] = cell;\n else\n ws[encode_cell({ r: R, c: C })] = cell;\n }\n payload = [];\n break;\n case \"\\\\par\":\n payload.push(\"\\n\");\n break;\n }\n last_index = rtfre.lastIndex;\n }\n if (C > range.e.c)\n range.e.c = C;\n });\n ws[\"!ref\"] = encode_range(range);\n return ws;\n}\nfunction rtf_to_workbook(d, opts) {\n var wb = sheet_to_workbook(rtf_to_sheet(d, opts), opts);\n wb.bookType = \"rtf\";\n return wb;\n}\nfunction sheet_to_rtf(ws, opts) {\n var o = [\"{\\\\rtf1\\\\ansi\"];\n if (!ws[\"!ref\"])\n return o[0] + \"}\";\n var r = safe_decode_range(ws[\"!ref\"]), cell;\n var dense = ws[\"!data\"] != null, row = [];\n for (var R = r.s.r; R <= r.e.r; ++R) {\n o.push(\"\\\\trowd\\\\trautofit1\");\n for (var C = r.s.c; C <= r.e.c; ++C)\n o.push(\"\\\\cellx\" + (C + 1));\n o.push(\"\\\\pard\\\\intbl\");\n if (dense)\n row = ws[\"!data\"][R] || [];\n for (C = r.s.c; C <= r.e.c; ++C) {\n var coord = encode_cell({ r: R, c: C });\n cell = dense ? row[C] : ws[coord];\n if (!cell || cell.v == null && (!cell.f || cell.F)) {\n o.push(\" \\\\cell\");\n continue;\n }\n o.push(\" \" + (cell.w || (format_cell(cell), cell.w) || \"\").replace(/[\\r\\n]/g, \"\\\\par \"));\n o.push(\"\\\\cell\");\n }\n o.push(\"\\\\pard\\\\intbl\\\\row\");\n }\n return o.join(\"\") + \"}\";\n}\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '': case '':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '':\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '': case '':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '': break;\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '': break;\n\t\t\tcase '': case '':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\t\t\tcase '0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF__load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5 borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF__load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId: 0,\n\t\tfillId: 0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'', '', '', '',\n\t'', '', '',\n\t'', '', '',\n\t'', ''\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n return {\n flags: data.read_shift(4),\n version: data.read_shift(4),\n name: parse_XLWideString(data, length - 8)\n };\n}\nfunction write_BrtMdtinfo(data) {\n var o = new_buf(12 + 2 * data.name.length);\n o.write_shift(4, data.flags);\n o.write_shift(4, data.version);\n write_XLWideString(data.name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n var out = [];\n var cnt = data.read_shift(4);\n while (cnt-- > 0)\n out.push([data.read_shift(4), data.read_shift(4)]);\n return out;\n}\nfunction write_BrtMdb(mdb) {\n var o = new_buf(4 + 8 * mdb.length);\n o.write_shift(4, mdb.length);\n for (var i = 0; i < mdb.length; ++i) {\n o.write_shift(4, mdb[i][0]);\n o.write_shift(4, mdb[i][1]);\n }\n return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n var o = new_buf(8 + 2 * name.length);\n o.write_shift(4, cnt);\n write_XLWideString(name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n data.l += 4;\n return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n var o = new_buf(8);\n o.write_shift(4, cnt);\n o.write_shift(4, cm ? 1 : 0);\n return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n var out = { Types: [], Cell: [], Value: [] };\n var opts = _opts || {};\n var state = [];\n var pass = false;\n var metatype = 2;\n recordhopper(data, function(val, R, RT) {\n switch (RT) {\n case 335:\n out.Types.push({ name: val.name });\n break;\n case 51:\n val.forEach(function(r) {\n if (metatype == 1)\n out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n else if (metatype == 0)\n out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n });\n break;\n case 337:\n metatype = val ? 1 : 0;\n break;\n case 338:\n metatype = 2;\n break;\n case 35:\n state.push(RT);\n pass = true;\n break;\n case 36:\n state.pop();\n pass = false;\n break;\n default:\n if (R.T) {\n } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n }\n });\n return out;\n}\nfunction write_xlmeta_bin() {\n var ba = buf_array();\n write_record(ba, 332);\n write_record(ba, 334, write_UInt32LE(1));\n write_record(ba, 335, write_BrtMdtinfo({\n name: \"XLDAPR\",\n version: 12e4,\n flags: 3496657072\n }));\n write_record(ba, 336);\n write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n write_record(ba, 52);\n write_record(ba, 35, write_UInt32LE(514));\n write_record(ba, 4096, write_UInt32LE(0));\n write_record(ba, 4097, writeuint16(1));\n write_record(ba, 36);\n write_record(ba, 53);\n write_record(ba, 340);\n write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n write_record(ba, 51, write_BrtMdb([[1, 0]]));\n write_record(ba, 338);\n write_record(ba, 333);\n return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n var out = { Types: [], Cell: [], Value: [] };\n if (!data)\n return out;\n var pass = false;\n var metatype = 2;\n var lastmeta;\n data.replace(tagregex, function(x) {\n var y = parsexmltag(x);\n switch (strip_ns(y[0])) {\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n case \"\":\n case \"\":\n break;\n case \"\":\n pass = false;\n break;\n case \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n');\n return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase ']*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nfunction write_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"})\n\t];\n\n\tvar _shapeid = 65536 * rId;\n\n\tvar _comments = comments || [];\n\tif(_comments.length > 0) o.push(writextag(\"v:shapetype\", [\n\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t].join(\"\"), {id:\"_x0000_t202\", coordsize:csize.join(\",\"), 'o:spt':202, path:bbox}));\n\n\t_comments.forEach(function(x) { ++_shapeid; o.push(write_vml_comment(x, _shapeid)); });\n\to.push('');\n\treturn o.join(\"\");\n}\n\nfunction write_vml_comment(x, _shapeid)/*:string*/ {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\n\treturn [\n\t'',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'
',\n\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '',\n\t\t'',\n\t''\n\t].join(\"\");\n}\nfunction sheet_insert_comments(sheet/*:WorkSheet*/, comments/*:Array*/, threaded/*:boolean*/, people/*:?Array*/) {\n\tvar dense = sheet[\"!data\"] != null;\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[\"!data\"][r.r]) sheet[\"!data\"][r.r] = [];\n\t\t\tcell = sheet[\"!data\"][r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[\"!data\"][r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tsheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array*/ = [];\n\tvar commentList/*:Array*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array*/ = [];\n\to.push(\"\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"\" + a + \"\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"\" + \"tc=\" + w.ID + \"\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"SheetJ5\"); }\n\to.push(\"\");\n\to.push(\"\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [], tcnt = 0;\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\td[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tif(c.T) ++tcnt;\n\t\t\tts.push(c.t == null ? \"\" : escapexml(c.t));\n\t\t});\n\t\tif(tcnt === 0) {\n\t\t\td[1].forEach(function(c) {\n\t\t\t\to.push('');\n\t\t\t\to.push(writetag(\"t\", c.t == null ? \"\" : escapexml(c.t)));\n\t\t\t\to.push('');\n\t\t\t});\n\t\t} else {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\to.push('');\n\t\t\tvar t = \"Comment:\\n \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t\to.push('');\n\t\t}\n\t});\n\to.push(\"\");\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '': case '': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '': pass = true; break;\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '
': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array*/ {\n\tvar out/*:Array*/ = [];\n\tvar authors/*:Array*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n cfb.FullPaths.forEach(function(p, i) {\n if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n return;\n var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n });\n return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n vba.FullPaths.forEach(function(p, i) {\n if (i == 0)\n return;\n var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n if (newpath.slice(-1) !== \"/\")\n CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = $4 == \"$\" ? (r+1) : (r == 0 ? \"\" : \"[\" + r + \"]\");\n\t\t\tvar C = $2 == \"$\" ? (c+1) : (c == 0 ? \"\" : \"[\" + c + \"]\");\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array>*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// TODO: explore space\nfunction make_3d_range(start, end) {\n\tvar s = start.lastIndexOf(\"!\"), e = end.lastIndexOf(\"!\");\n\tif(s == -1 && e == -1) return start + \":\" + end;\n\tif(s > 0 && e > 0 && start.slice(0, s).toLowerCase() == end.slice(0, e).toLowerCase()) return start + \":\" + end.slice(e+1);\n\tconsole.error(\"Cannot hydrate range\", start, end);\n\treturn start + \":\" + end;\n}\n\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(make_3d_range(e2,e1));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\tif(stack[0] == \"TRUE\") return true; if(stack[0] == \"FALSE\") return false;\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\n\n/* Writes a PtgNum or PtgInt */\nfunction write_XLSBFormulaNum(val/*:number*/) {\n\tif((val | 0) == val && val < Math.pow(2,16) && val >= 0) {\n\t\tvar oint = new_buf(11);\n\t\toint.write_shift(4, 3);\n\t\toint.write_shift(1, 0x1e);\n\t\toint.write_shift(2, val);\n\t\toint.write_shift(4, 0);\n\t\treturn oint;\n\t}\n\n\tvar num = new_buf(17);\n\tnum.write_shift(4, 11);\n\tnum.write_shift(1, 0x1f);\n\tnum.write_shift(8, val);\n\tnum.write_shift(4, 0);\n\treturn num;\n}\n/* Writes a PtgErr */\nfunction write_XLSBFormulaErr(val/*:number*/) {\n\tvar oint = new_buf(10);\n\toint.write_shift(4, 2);\n\toint.write_shift(1, 0x1C);\n\toint.write_shift(1, val);\n\toint.write_shift(4, 0);\n\treturn oint;\n}\n/* Writes a PtgBool */\nfunction write_XLSBFormulaBool(val/*:boolean*/) {\n\tvar oint = new_buf(10);\n\toint.write_shift(4, 2);\n\toint.write_shift(1, 0x1D);\n\toint.write_shift(1, val?1:0);\n\toint.write_shift(4, 0);\n\treturn oint;\n}\n\n/* Writes a PtgStr */\nfunction write_XLSBFormulaStr(val/*:string*/) {\n\tvar preamble = new_buf(7);\n\tpreamble.write_shift(4, 3 + 2 * val.length);\n\tpreamble.write_shift(1, 0x17);\n\tpreamble.write_shift(2, val.length);\n\n\tvar body = new_buf(2 * val.length);\n\tbody.write_shift(2 * val.length, val, \"utf16le\");\n\n\tvar postamble = new_buf(4);\n\tpostamble.write_shift(4, 0);\n\n\treturn bconcat([preamble, body, postamble]);\n}\n\n/* Writes a PtgRef */\nfunction write_XLSBFormulaRef(str) {\n\tvar cell = decode_cell(str);\n\tvar out = new_buf(15);\n\tout.write_shift(4, 7);\n\tout.write_shift(1, 0x04 | ((1)<<5));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a PtgRef3d */\nfunction write_XLSBFormulaRef3D(str, wb) {\n\tvar lastbang = str.lastIndexOf(\"!\");\n\tvar sname = str.slice(0, lastbang);\n\tstr = str.slice(lastbang+1);\n\tvar cell = decode_cell(str);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\n\tvar out = new_buf(17);\n\tout.write_shift(4, 9);\n\tout.write_shift(1, 0x1A | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a PtgRefErr3d */\nfunction write_XLSBFormulaRefErr3D(str, wb) {\n\tvar lastbang = str.lastIndexOf(\"!\");\n\tvar sname = str.slice(0, lastbang);\n\tstr = str.slice(lastbang+1);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\n\tvar out = new_buf(17);\n\tout.write_shift(4, 9);\n\tout.write_shift(1, 0x1C | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, 0);\n\tout.write_shift(2, 0); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a single sheet range [PtgRef PtgRef PtgRange] */\nfunction write_XLSBFormulaRange(_str) {\n\tvar parts = _str.split(\":\"), str = parts[0];\n\n\tvar out = new_buf(23);\n\tout.write_shift(4, 15);\n\n\t/* start cell */\n\tstr = parts[0]; var cell = decode_cell(str);\n\tout.write_shift(1, 0x04 | ((1)<<5));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\t/* end cell */\n\tstr = parts[1]; cell = decode_cell(str);\n\tout.write_shift(1, 0x04 | ((1)<<5));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\t/* PtgRange */\n\tout.write_shift(1, 0x11);\n\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a range with explicit sheet name [PtgRef3D PtgRef3D PtgRange] */\nfunction write_XLSBFormulaRangeWS(_str, wb) {\n\tvar lastbang = _str.lastIndexOf(\"!\");\n\tvar sname = _str.slice(0, lastbang);\n\t_str = _str.slice(lastbang+1);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\tvar parts = _str.split(\":\"); str = parts[0];\n\n\tvar out = new_buf(27);\n\tout.write_shift(4, 19);\n\n\t/* start cell */\n\tvar str = parts[0], cell = decode_cell(str);\n\tout.write_shift(1, 0x1A | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\n\t/* end cell */\n\tstr = parts[1]; cell = decode_cell(str);\n\tout.write_shift(1, 0x1A | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\n\t/* PtgRange */\n\tout.write_shift(1, 0x11);\n\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a range with explicit sheet name [PtgArea3d] */\nfunction write_XLSBFormulaArea3D(_str, wb) {\n\tvar lastbang = _str.lastIndexOf(\"!\");\n\tvar sname = _str.slice(0, lastbang);\n\t_str = _str.slice(lastbang+1);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\tvar range = decode_range(_str);\n\n\tvar out = new_buf(23);\n\tout.write_shift(4, 15);\n\n\tout.write_shift(1, 0x1B | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, range.s.r);\n\tout.write_shift(4, range.e.r);\n\tout.write_shift(2, range.s.c);\n\tout.write_shift(2, range.e.c);\n\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n\n/* General Formula */\nfunction write_XLSBFormula(val/*:string|number*/, wb) {\n\tif(typeof val == \"number\") return write_XLSBFormulaNum(val);\n\tif(typeof val == \"boolean\") return write_XLSBFormulaBool(val);\n\tif(/^#(DIV\\/0!|GETTING_DATA|N\\/A|NAME\\?|NULL!|NUM!|REF!|VALUE!)$/.test(val)) return write_XLSBFormulaErr(+RBErr[val]);\n\tif(val.match(/^\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRef(val);\n\tif(val.match(/^\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRange(val);\n\tif(val.match(/^#REF!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaArea3D(val, wb);\n\tif(val.match(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRef3D(val, wb);\n\tif(val.match(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRangeWS(val, wb);\n\tif(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!#REF!$/.test(val)) return write_XLSBFormulaRefErr3D(val, wb);\n\tif(/^\".*\"$/.test(val)) return write_XLSBFormulaStr(val);\n\tif(/^[+-]\\d+$/.test(val)) return write_XLSBFormulaNum(parseInt(val, 10));\n\tthrow \"Formula |\" + val + \"| not supported for XLSB\";\n}\nvar write_XLSBNameParsedFormula = write_XLSBFormula;\nvar Cetab = {\n 0: \"BEEP\",\n 1: \"OPEN\",\n 2: \"OPEN.LINKS\",\n 3: \"CLOSE.ALL\",\n 4: \"SAVE\",\n 5: \"SAVE.AS\",\n 6: \"FILE.DELETE\",\n 7: \"PAGE.SETUP\",\n 8: \"PRINT\",\n 9: \"PRINTER.SETUP\",\n 10: \"QUIT\",\n 11: \"NEW.WINDOW\",\n 12: \"ARRANGE.ALL\",\n 13: \"WINDOW.SIZE\",\n 14: \"WINDOW.MOVE\",\n 15: \"FULL\",\n 16: \"CLOSE\",\n 17: \"RUN\",\n 22: \"SET.PRINT.AREA\",\n 23: \"SET.PRINT.TITLES\",\n 24: \"SET.PAGE.BREAK\",\n 25: \"REMOVE.PAGE.BREAK\",\n 26: \"FONT\",\n 27: \"DISPLAY\",\n 28: \"PROTECT.DOCUMENT\",\n 29: \"PRECISION\",\n 30: \"A1.R1C1\",\n 31: \"CALCULATE.NOW\",\n 32: \"CALCULATION\",\n 34: \"DATA.FIND\",\n 35: \"EXTRACT\",\n 36: \"DATA.DELETE\",\n 37: \"SET.DATABASE\",\n 38: \"SET.CRITERIA\",\n 39: \"SORT\",\n 40: \"DATA.SERIES\",\n 41: \"TABLE\",\n 42: \"FORMAT.NUMBER\",\n 43: \"ALIGNMENT\",\n 44: \"STYLE\",\n 45: \"BORDER\",\n 46: \"CELL.PROTECTION\",\n 47: \"COLUMN.WIDTH\",\n 48: \"UNDO\",\n 49: \"CUT\",\n 50: \"COPY\",\n 51: \"PASTE\",\n 52: \"CLEAR\",\n 53: \"PASTE.SPECIAL\",\n 54: \"EDIT.DELETE\",\n 55: \"INSERT\",\n 56: \"FILL.RIGHT\",\n 57: \"FILL.DOWN\",\n 61: \"DEFINE.NAME\",\n 62: \"CREATE.NAMES\",\n 63: \"FORMULA.GOTO\",\n 64: \"FORMULA.FIND\",\n 65: \"SELECT.LAST.CELL\",\n 66: \"SHOW.ACTIVE.CELL\",\n 67: \"GALLERY.AREA\",\n 68: \"GALLERY.BAR\",\n 69: \"GALLERY.COLUMN\",\n 70: \"GALLERY.LINE\",\n 71: \"GALLERY.PIE\",\n 72: \"GALLERY.SCATTER\",\n 73: \"COMBINATION\",\n 74: \"PREFERRED\",\n 75: \"ADD.OVERLAY\",\n 76: \"GRIDLINES\",\n 77: \"SET.PREFERRED\",\n 78: \"AXES\",\n 79: \"LEGEND\",\n 80: \"ATTACH.TEXT\",\n 81: \"ADD.ARROW\",\n 82: \"SELECT.CHART\",\n 83: \"SELECT.PLOT.AREA\",\n 84: \"PATTERNS\",\n 85: \"MAIN.CHART\",\n 86: \"OVERLAY\",\n 87: \"SCALE\",\n 88: \"FORMAT.LEGEND\",\n 89: \"FORMAT.TEXT\",\n 90: \"EDIT.REPEAT\",\n 91: \"PARSE\",\n 92: \"JUSTIFY\",\n 93: \"HIDE\",\n 94: \"UNHIDE\",\n 95: \"WORKSPACE\",\n 96: \"FORMULA\",\n 97: \"FORMULA.FILL\",\n 98: \"FORMULA.ARRAY\",\n 99: \"DATA.FIND.NEXT\",\n 100: \"DATA.FIND.PREV\",\n 101: \"FORMULA.FIND.NEXT\",\n 102: \"FORMULA.FIND.PREV\",\n 103: \"ACTIVATE\",\n 104: \"ACTIVATE.NEXT\",\n 105: \"ACTIVATE.PREV\",\n 106: \"UNLOCKED.NEXT\",\n 107: \"UNLOCKED.PREV\",\n 108: \"COPY.PICTURE\",\n 109: \"SELECT\",\n 110: \"DELETE.NAME\",\n 111: \"DELETE.FORMAT\",\n 112: \"VLINE\",\n 113: \"HLINE\",\n 114: \"VPAGE\",\n 115: \"HPAGE\",\n 116: \"VSCROLL\",\n 117: \"HSCROLL\",\n 118: \"ALERT\",\n 119: \"NEW\",\n 120: \"CANCEL.COPY\",\n 121: \"SHOW.CLIPBOARD\",\n 122: \"MESSAGE\",\n 124: \"PASTE.LINK\",\n 125: \"APP.ACTIVATE\",\n 126: \"DELETE.ARROW\",\n 127: \"ROW.HEIGHT\",\n 128: \"FORMAT.MOVE\",\n 129: \"FORMAT.SIZE\",\n 130: \"FORMULA.REPLACE\",\n 131: \"SEND.KEYS\",\n 132: \"SELECT.SPECIAL\",\n 133: \"APPLY.NAMES\",\n 134: \"REPLACE.FONT\",\n 135: \"FREEZE.PANES\",\n 136: \"SHOW.INFO\",\n 137: \"SPLIT\",\n 138: \"ON.WINDOW\",\n 139: \"ON.DATA\",\n 140: \"DISABLE.INPUT\",\n 142: \"OUTLINE\",\n 143: \"LIST.NAMES\",\n 144: \"FILE.CLOSE\",\n 145: \"SAVE.WORKBOOK\",\n 146: \"DATA.FORM\",\n 147: \"COPY.CHART\",\n 148: \"ON.TIME\",\n 149: \"WAIT\",\n 150: \"FORMAT.FONT\",\n 151: \"FILL.UP\",\n 152: \"FILL.LEFT\",\n 153: \"DELETE.OVERLAY\",\n 155: \"SHORT.MENUS\",\n 159: \"SET.UPDATE.STATUS\",\n 161: \"COLOR.PALETTE\",\n 162: \"DELETE.STYLE\",\n 163: \"WINDOW.RESTORE\",\n 164: \"WINDOW.MAXIMIZE\",\n 166: \"CHANGE.LINK\",\n 167: \"CALCULATE.DOCUMENT\",\n 168: \"ON.KEY\",\n 169: \"APP.RESTORE\",\n 170: \"APP.MOVE\",\n 171: \"APP.SIZE\",\n 172: \"APP.MINIMIZE\",\n 173: \"APP.MAXIMIZE\",\n 174: \"BRING.TO.FRONT\",\n 175: \"SEND.TO.BACK\",\n 185: \"MAIN.CHART.TYPE\",\n 186: \"OVERLAY.CHART.TYPE\",\n 187: \"SELECT.END\",\n 188: \"OPEN.MAIL\",\n 189: \"SEND.MAIL\",\n 190: \"STANDARD.FONT\",\n 191: \"CONSOLIDATE\",\n 192: \"SORT.SPECIAL\",\n 193: \"GALLERY.3D.AREA\",\n 194: \"GALLERY.3D.COLUMN\",\n 195: \"GALLERY.3D.LINE\",\n 196: \"GALLERY.3D.PIE\",\n 197: \"VIEW.3D\",\n 198: \"GOAL.SEEK\",\n 199: \"WORKGROUP\",\n 200: \"FILL.GROUP\",\n 201: \"UPDATE.LINK\",\n 202: \"PROMOTE\",\n 203: \"DEMOTE\",\n 204: \"SHOW.DETAIL\",\n 206: \"UNGROUP\",\n 207: \"OBJECT.PROPERTIES\",\n 208: \"SAVE.NEW.OBJECT\",\n 209: \"SHARE\",\n 210: \"SHARE.NAME\",\n 211: \"DUPLICATE\",\n 212: \"APPLY.STYLE\",\n 213: \"ASSIGN.TO.OBJECT\",\n 214: \"OBJECT.PROTECTION\",\n 215: \"HIDE.OBJECT\",\n 216: \"SET.EXTRACT\",\n 217: \"CREATE.PUBLISHER\",\n 218: \"SUBSCRIBE.TO\",\n 219: \"ATTRIBUTES\",\n 220: \"SHOW.TOOLBAR\",\n 222: \"PRINT.PREVIEW\",\n 223: \"EDIT.COLOR\",\n 224: \"SHOW.LEVELS\",\n 225: \"FORMAT.MAIN\",\n 226: \"FORMAT.OVERLAY\",\n 227: \"ON.RECALC\",\n 228: \"EDIT.SERIES\",\n 229: \"DEFINE.STYLE\",\n 240: \"LINE.PRINT\",\n 243: \"ENTER.DATA\",\n 249: \"GALLERY.RADAR\",\n 250: \"MERGE.STYLES\",\n 251: \"EDITION.OPTIONS\",\n 252: \"PASTE.PICTURE\",\n 253: \"PASTE.PICTURE.LINK\",\n 254: \"SPELLING\",\n 256: \"ZOOM\",\n 259: \"INSERT.OBJECT\",\n 260: \"WINDOW.MINIMIZE\",\n 265: \"SOUND.NOTE\",\n 266: \"SOUND.PLAY\",\n 267: \"FORMAT.SHAPE\",\n 268: \"EXTEND.POLYGON\",\n 269: \"FORMAT.AUTO\",\n 272: \"GALLERY.3D.BAR\",\n 273: \"GALLERY.3D.SURFACE\",\n 274: \"FILL.AUTO\",\n 276: \"CUSTOMIZE.TOOLBAR\",\n 277: \"ADD.TOOL\",\n 278: \"EDIT.OBJECT\",\n 279: \"ON.DOUBLECLICK\",\n 280: \"ON.ENTRY\",\n 281: \"WORKBOOK.ADD\",\n 282: \"WORKBOOK.MOVE\",\n 283: \"WORKBOOK.COPY\",\n 284: \"WORKBOOK.OPTIONS\",\n 285: \"SAVE.WORKSPACE\",\n 288: \"CHART.WIZARD\",\n 289: \"DELETE.TOOL\",\n 290: \"MOVE.TOOL\",\n 291: \"WORKBOOK.SELECT\",\n 292: \"WORKBOOK.ACTIVATE\",\n 293: \"ASSIGN.TO.TOOL\",\n 295: \"COPY.TOOL\",\n 296: \"RESET.TOOL\",\n 297: \"CONSTRAIN.NUMERIC\",\n 298: \"PASTE.TOOL\",\n 302: \"WORKBOOK.NEW\",\n 305: \"SCENARIO.CELLS\",\n 306: \"SCENARIO.DELETE\",\n 307: \"SCENARIO.ADD\",\n 308: \"SCENARIO.EDIT\",\n 309: \"SCENARIO.SHOW\",\n 310: \"SCENARIO.SHOW.NEXT\",\n 311: \"SCENARIO.SUMMARY\",\n 312: \"PIVOT.TABLE.WIZARD\",\n 313: \"PIVOT.FIELD.PROPERTIES\",\n 314: \"PIVOT.FIELD\",\n 315: \"PIVOT.ITEM\",\n 316: \"PIVOT.ADD.FIELDS\",\n 318: \"OPTIONS.CALCULATION\",\n 319: \"OPTIONS.EDIT\",\n 320: \"OPTIONS.VIEW\",\n 321: \"ADDIN.MANAGER\",\n 322: \"MENU.EDITOR\",\n 323: \"ATTACH.TOOLBARS\",\n 324: \"VBAActivate\",\n 325: \"OPTIONS.CHART\",\n 328: \"VBA.INSERT.FILE\",\n 330: \"VBA.PROCEDURE.DEFINITION\",\n 336: \"ROUTING.SLIP\",\n 338: \"ROUTE.DOCUMENT\",\n 339: \"MAIL.LOGON\",\n 342: \"INSERT.PICTURE\",\n 343: \"EDIT.TOOL\",\n 344: \"GALLERY.DOUGHNUT\",\n 350: \"CHART.TREND\",\n 352: \"PIVOT.ITEM.PROPERTIES\",\n 354: \"WORKBOOK.INSERT\",\n 355: \"OPTIONS.TRANSITION\",\n 356: \"OPTIONS.GENERAL\",\n 370: \"FILTER.ADVANCED\",\n 373: \"MAIL.ADD.MAILER\",\n 374: \"MAIL.DELETE.MAILER\",\n 375: \"MAIL.REPLY\",\n 376: \"MAIL.REPLY.ALL\",\n 377: \"MAIL.FORWARD\",\n 378: \"MAIL.NEXT.LETTER\",\n 379: \"DATA.LABEL\",\n 380: \"INSERT.TITLE\",\n 381: \"FONT.PROPERTIES\",\n 382: \"MACRO.OPTIONS\",\n 383: \"WORKBOOK.HIDE\",\n 384: \"WORKBOOK.UNHIDE\",\n 385: \"WORKBOOK.DELETE\",\n 386: \"WORKBOOK.NAME\",\n 388: \"GALLERY.CUSTOM\",\n 390: \"ADD.CHART.AUTOFORMAT\",\n 391: \"DELETE.CHART.AUTOFORMAT\",\n 392: \"CHART.ADD.DATA\",\n 393: \"AUTO.OUTLINE\",\n 394: \"TAB.ORDER\",\n 395: \"SHOW.DIALOG\",\n 396: \"SELECT.ALL\",\n 397: \"UNGROUP.SHEETS\",\n 398: \"SUBTOTAL.CREATE\",\n 399: \"SUBTOTAL.REMOVE\",\n 400: \"RENAME.OBJECT\",\n 412: \"WORKBOOK.SCROLL\",\n 413: \"WORKBOOK.NEXT\",\n 414: \"WORKBOOK.PREV\",\n 415: \"WORKBOOK.TAB.SPLIT\",\n 416: \"FULL.SCREEN\",\n 417: \"WORKBOOK.PROTECT\",\n 420: \"SCROLLBAR.PROPERTIES\",\n 421: \"PIVOT.SHOW.PAGES\",\n 422: \"TEXT.TO.COLUMNS\",\n 423: \"FORMAT.CHARTTYPE\",\n 424: \"LINK.FORMAT\",\n 425: \"TRACER.DISPLAY\",\n 430: \"TRACER.NAVIGATE\",\n 431: \"TRACER.CLEAR\",\n 432: \"TRACER.ERROR\",\n 433: \"PIVOT.FIELD.GROUP\",\n 434: \"PIVOT.FIELD.UNGROUP\",\n 435: \"CHECKBOX.PROPERTIES\",\n 436: \"LABEL.PROPERTIES\",\n 437: \"LISTBOX.PROPERTIES\",\n 438: \"EDITBOX.PROPERTIES\",\n 439: \"PIVOT.REFRESH\",\n 440: \"LINK.COMBO\",\n 441: \"OPEN.TEXT\",\n 442: \"HIDE.DIALOG\",\n 443: \"SET.DIALOG.FOCUS\",\n 444: \"ENABLE.OBJECT\",\n 445: \"PUSHBUTTON.PROPERTIES\",\n 446: \"SET.DIALOG.DEFAULT\",\n 447: \"FILTER\",\n 448: \"FILTER.SHOW.ALL\",\n 449: \"CLEAR.OUTLINE\",\n 450: \"FUNCTION.WIZARD\",\n 451: \"ADD.LIST.ITEM\",\n 452: \"SET.LIST.ITEM\",\n 453: \"REMOVE.LIST.ITEM\",\n 454: \"SELECT.LIST.ITEM\",\n 455: \"SET.CONTROL.VALUE\",\n 456: \"SAVE.COPY.AS\",\n 458: \"OPTIONS.LISTS.ADD\",\n 459: \"OPTIONS.LISTS.DELETE\",\n 460: \"SERIES.AXES\",\n 461: \"SERIES.X\",\n 462: \"SERIES.Y\",\n 463: \"ERRORBAR.X\",\n 464: \"ERRORBAR.Y\",\n 465: \"FORMAT.CHART\",\n 466: \"SERIES.ORDER\",\n 467: \"MAIL.LOGOFF\",\n 468: \"CLEAR.ROUTING.SLIP\",\n 469: \"APP.ACTIVATE.MICROSOFT\",\n 470: \"MAIL.EDIT.MAILER\",\n 471: \"ON.SHEET\",\n 472: \"STANDARD.WIDTH\",\n 473: \"SCENARIO.MERGE\",\n 474: \"SUMMARY.INFO\",\n 475: \"FIND.FILE\",\n 476: \"ACTIVE.CELL.FONT\",\n 477: \"ENABLE.TIPWIZARD\",\n 478: \"VBA.MAKE.ADDIN\",\n 480: \"INSERTDATATABLE\",\n 481: \"WORKGROUP.OPTIONS\",\n 482: \"MAIL.SEND.MAILER\",\n 485: \"AUTOCORRECT\",\n 489: \"POST.DOCUMENT\",\n 491: \"PICKLIST\",\n 493: \"VIEW.SHOW\",\n 494: \"VIEW.DEFINE\",\n 495: \"VIEW.DELETE\",\n 509: \"SHEET.BACKGROUND\",\n 510: \"INSERT.MAP.OBJECT\",\n 511: \"OPTIONS.MENONO\",\n 517: \"MSOCHECKS\",\n 518: \"NORMAL\",\n 519: \"LAYOUT\",\n 520: \"RM.PRINT.AREA\",\n 521: \"CLEAR.PRINT.AREA\",\n 522: \"ADD.PRINT.AREA\",\n 523: \"MOVE.BRK\",\n 545: \"HIDECURR.NOTE\",\n 546: \"HIDEALL.NOTES\",\n 547: \"DELETE.NOTE\",\n 548: \"TRAVERSE.NOTES\",\n 549: \"ACTIVATE.NOTES\",\n 620: \"PROTECT.REVISIONS\",\n 621: \"UNPROTECT.REVISIONS\",\n 647: \"OPTIONS.ME\",\n 653: \"WEB.PUBLISH\",\n 667: \"NEWWEBQUERY\",\n 673: \"PIVOT.TABLE.CHART\",\n 753: \"OPTIONS.SAVE\",\n 755: \"OPTIONS.SPELL\",\n 808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n 0: \"COUNT\",\n 1: \"IF\",\n 2: \"ISNA\",\n 3: \"ISERROR\",\n 4: \"SUM\",\n 5: \"AVERAGE\",\n 6: \"MIN\",\n 7: \"MAX\",\n 8: \"ROW\",\n 9: \"COLUMN\",\n 10: \"NA\",\n 11: \"NPV\",\n 12: \"STDEV\",\n 13: \"DOLLAR\",\n 14: \"FIXED\",\n 15: \"SIN\",\n 16: \"COS\",\n 17: \"TAN\",\n 18: \"ATAN\",\n 19: \"PI\",\n 20: \"SQRT\",\n 21: \"EXP\",\n 22: \"LN\",\n 23: \"LOG10\",\n 24: \"ABS\",\n 25: \"INT\",\n 26: \"SIGN\",\n 27: \"ROUND\",\n 28: \"LOOKUP\",\n 29: \"INDEX\",\n 30: \"REPT\",\n 31: \"MID\",\n 32: \"LEN\",\n 33: \"VALUE\",\n 34: \"TRUE\",\n 35: \"FALSE\",\n 36: \"AND\",\n 37: \"OR\",\n 38: \"NOT\",\n 39: \"MOD\",\n 40: \"DCOUNT\",\n 41: \"DSUM\",\n 42: \"DAVERAGE\",\n 43: \"DMIN\",\n 44: \"DMAX\",\n 45: \"DSTDEV\",\n 46: \"VAR\",\n 47: \"DVAR\",\n 48: \"TEXT\",\n 49: \"LINEST\",\n 50: \"TREND\",\n 51: \"LOGEST\",\n 52: \"GROWTH\",\n 53: \"GOTO\",\n 54: \"HALT\",\n 55: \"RETURN\",\n 56: \"PV\",\n 57: \"FV\",\n 58: \"NPER\",\n 59: \"PMT\",\n 60: \"RATE\",\n 61: \"MIRR\",\n 62: \"IRR\",\n 63: \"RAND\",\n 64: \"MATCH\",\n 65: \"DATE\",\n 66: \"TIME\",\n 67: \"DAY\",\n 68: \"MONTH\",\n 69: \"YEAR\",\n 70: \"WEEKDAY\",\n 71: \"HOUR\",\n 72: \"MINUTE\",\n 73: \"SECOND\",\n 74: \"NOW\",\n 75: \"AREAS\",\n 76: \"ROWS\",\n 77: \"COLUMNS\",\n 78: \"OFFSET\",\n 79: \"ABSREF\",\n 80: \"RELREF\",\n 81: \"ARGUMENT\",\n 82: \"SEARCH\",\n 83: \"TRANSPOSE\",\n 84: \"ERROR\",\n 85: \"STEP\",\n 86: \"TYPE\",\n 87: \"ECHO\",\n 88: \"SET.NAME\",\n 89: \"CALLER\",\n 90: \"DEREF\",\n 91: \"WINDOWS\",\n 92: \"SERIES\",\n 93: \"DOCUMENTS\",\n 94: \"ACTIVE.CELL\",\n 95: \"SELECTION\",\n 96: \"RESULT\",\n 97: \"ATAN2\",\n 98: \"ASIN\",\n 99: \"ACOS\",\n 100: \"CHOOSE\",\n 101: \"HLOOKUP\",\n 102: \"VLOOKUP\",\n 103: \"LINKS\",\n 104: \"INPUT\",\n 105: \"ISREF\",\n 106: \"GET.FORMULA\",\n 107: \"GET.NAME\",\n 108: \"SET.VALUE\",\n 109: \"LOG\",\n 110: \"EXEC\",\n 111: \"CHAR\",\n 112: \"LOWER\",\n 113: \"UPPER\",\n 114: \"PROPER\",\n 115: \"LEFT\",\n 116: \"RIGHT\",\n 117: \"EXACT\",\n 118: \"TRIM\",\n 119: \"REPLACE\",\n 120: \"SUBSTITUTE\",\n 121: \"CODE\",\n 122: \"NAMES\",\n 123: \"DIRECTORY\",\n 124: \"FIND\",\n 125: \"CELL\",\n 126: \"ISERR\",\n 127: \"ISTEXT\",\n 128: \"ISNUMBER\",\n 129: \"ISBLANK\",\n 130: \"T\",\n 131: \"N\",\n 132: \"FOPEN\",\n 133: \"FCLOSE\",\n 134: \"FSIZE\",\n 135: \"FREADLN\",\n 136: \"FREAD\",\n 137: \"FWRITELN\",\n 138: \"FWRITE\",\n 139: \"FPOS\",\n 140: \"DATEVALUE\",\n 141: \"TIMEVALUE\",\n 142: \"SLN\",\n 143: \"SYD\",\n 144: \"DDB\",\n 145: \"GET.DEF\",\n 146: \"REFTEXT\",\n 147: \"TEXTREF\",\n 148: \"INDIRECT\",\n 149: \"REGISTER\",\n 150: \"CALL\",\n 151: \"ADD.BAR\",\n 152: \"ADD.MENU\",\n 153: \"ADD.COMMAND\",\n 154: \"ENABLE.COMMAND\",\n 155: \"CHECK.COMMAND\",\n 156: \"RENAME.COMMAND\",\n 157: \"SHOW.BAR\",\n 158: \"DELETE.MENU\",\n 159: \"DELETE.COMMAND\",\n 160: \"GET.CHART.ITEM\",\n 161: \"DIALOG.BOX\",\n 162: \"CLEAN\",\n 163: \"MDETERM\",\n 164: \"MINVERSE\",\n 165: \"MMULT\",\n 166: \"FILES\",\n 167: \"IPMT\",\n 168: \"PPMT\",\n 169: \"COUNTA\",\n 170: \"CANCEL.KEY\",\n 171: \"FOR\",\n 172: \"WHILE\",\n 173: \"BREAK\",\n 174: \"NEXT\",\n 175: \"INITIATE\",\n 176: \"REQUEST\",\n 177: \"POKE\",\n 178: \"EXECUTE\",\n 179: \"TERMINATE\",\n 180: \"RESTART\",\n 181: \"HELP\",\n 182: \"GET.BAR\",\n 183: \"PRODUCT\",\n 184: \"FACT\",\n 185: \"GET.CELL\",\n 186: \"GET.WORKSPACE\",\n 187: \"GET.WINDOW\",\n 188: \"GET.DOCUMENT\",\n 189: \"DPRODUCT\",\n 190: \"ISNONTEXT\",\n 191: \"GET.NOTE\",\n 192: \"NOTE\",\n 193: \"STDEVP\",\n 194: \"VARP\",\n 195: \"DSTDEVP\",\n 196: \"DVARP\",\n 197: \"TRUNC\",\n 198: \"ISLOGICAL\",\n 199: \"DCOUNTA\",\n 200: \"DELETE.BAR\",\n 201: \"UNREGISTER\",\n 204: \"USDOLLAR\",\n 205: \"FINDB\",\n 206: \"SEARCHB\",\n 207: \"REPLACEB\",\n 208: \"LEFTB\",\n 209: \"RIGHTB\",\n 210: \"MIDB\",\n 211: \"LENB\",\n 212: \"ROUNDUP\",\n 213: \"ROUNDDOWN\",\n 214: \"ASC\",\n 215: \"DBCS\",\n 216: \"RANK\",\n 219: \"ADDRESS\",\n 220: \"DAYS360\",\n 221: \"TODAY\",\n 222: \"VDB\",\n 223: \"ELSE\",\n 224: \"ELSE.IF\",\n 225: \"END.IF\",\n 226: \"FOR.CELL\",\n 227: \"MEDIAN\",\n 228: \"SUMPRODUCT\",\n 229: \"SINH\",\n 230: \"COSH\",\n 231: \"TANH\",\n 232: \"ASINH\",\n 233: \"ACOSH\",\n 234: \"ATANH\",\n 235: \"DGET\",\n 236: \"CREATE.OBJECT\",\n 237: \"VOLATILE\",\n 238: \"LAST.ERROR\",\n 239: \"CUSTOM.UNDO\",\n 240: \"CUSTOM.REPEAT\",\n 241: \"FORMULA.CONVERT\",\n 242: \"GET.LINK.INFO\",\n 243: \"TEXT.BOX\",\n 244: \"INFO\",\n 245: \"GROUP\",\n 246: \"GET.OBJECT\",\n 247: \"DB\",\n 248: \"PAUSE\",\n 251: \"RESUME\",\n 252: \"FREQUENCY\",\n 253: \"ADD.TOOLBAR\",\n 254: \"DELETE.TOOLBAR\",\n 255: \"User\",\n 256: \"RESET.TOOLBAR\",\n 257: \"EVALUATE\",\n 258: \"GET.TOOLBAR\",\n 259: \"GET.TOOL\",\n 260: \"SPELLING.CHECK\",\n 261: \"ERROR.TYPE\",\n 262: \"APP.TITLE\",\n 263: \"WINDOW.TITLE\",\n 264: \"SAVE.TOOLBAR\",\n 265: \"ENABLE.TOOL\",\n 266: \"PRESS.TOOL\",\n 267: \"REGISTER.ID\",\n 268: \"GET.WORKBOOK\",\n 269: \"AVEDEV\",\n 270: \"BETADIST\",\n 271: \"GAMMALN\",\n 272: \"BETAINV\",\n 273: \"BINOMDIST\",\n 274: \"CHIDIST\",\n 275: \"CHIINV\",\n 276: \"COMBIN\",\n 277: \"CONFIDENCE\",\n 278: \"CRITBINOM\",\n 279: \"EVEN\",\n 280: \"EXPONDIST\",\n 281: \"FDIST\",\n 282: \"FINV\",\n 283: \"FISHER\",\n 284: \"FISHERINV\",\n 285: \"FLOOR\",\n 286: \"GAMMADIST\",\n 287: \"GAMMAINV\",\n 288: \"CEILING\",\n 289: \"HYPGEOMDIST\",\n 290: \"LOGNORMDIST\",\n 291: \"LOGINV\",\n 292: \"NEGBINOMDIST\",\n 293: \"NORMDIST\",\n 294: \"NORMSDIST\",\n 295: \"NORMINV\",\n 296: \"NORMSINV\",\n 297: \"STANDARDIZE\",\n 298: \"ODD\",\n 299: \"PERMUT\",\n 300: \"POISSON\",\n 301: \"TDIST\",\n 302: \"WEIBULL\",\n 303: \"SUMXMY2\",\n 304: \"SUMX2MY2\",\n 305: \"SUMX2PY2\",\n 306: \"CHITEST\",\n 307: \"CORREL\",\n 308: \"COVAR\",\n 309: \"FORECAST\",\n 310: \"FTEST\",\n 311: \"INTERCEPT\",\n 312: \"PEARSON\",\n 313: \"RSQ\",\n 314: \"STEYX\",\n 315: \"SLOPE\",\n 316: \"TTEST\",\n 317: \"PROB\",\n 318: \"DEVSQ\",\n 319: \"GEOMEAN\",\n 320: \"HARMEAN\",\n 321: \"SUMSQ\",\n 322: \"KURT\",\n 323: \"SKEW\",\n 324: \"ZTEST\",\n 325: \"LARGE\",\n 326: \"SMALL\",\n 327: \"QUARTILE\",\n 328: \"PERCENTILE\",\n 329: \"PERCENTRANK\",\n 330: \"MODE\",\n 331: \"TRIMMEAN\",\n 332: \"TINV\",\n 334: \"MOVIE.COMMAND\",\n 335: \"GET.MOVIE\",\n 336: \"CONCATENATE\",\n 337: \"POWER\",\n 338: \"PIVOT.ADD.DATA\",\n 339: \"GET.PIVOT.TABLE\",\n 340: \"GET.PIVOT.FIELD\",\n 341: \"GET.PIVOT.ITEM\",\n 342: \"RADIANS\",\n 343: \"DEGREES\",\n 344: \"SUBTOTAL\",\n 345: \"SUMIF\",\n 346: \"COUNTIF\",\n 347: \"COUNTBLANK\",\n 348: \"SCENARIO.GET\",\n 349: \"OPTIONS.LISTS.GET\",\n 350: \"ISPMT\",\n 351: \"DATEDIF\",\n 352: \"DATESTRING\",\n 353: \"NUMBERSTRING\",\n 354: \"ROMAN\",\n 355: \"OPEN.DIALOG\",\n 356: \"SAVE.DIALOG\",\n 357: \"VIEW.GET\",\n 358: \"GETPIVOTDATA\",\n 359: \"HYPERLINK\",\n 360: \"PHONETIC\",\n 361: \"AVERAGEA\",\n 362: \"MAXA\",\n 363: \"MINA\",\n 364: \"STDEVPA\",\n 365: \"VARPA\",\n 366: \"STDEVA\",\n 367: \"VARA\",\n 368: \"BAHTTEXT\",\n 369: \"THAIDAYOFWEEK\",\n 370: \"THAIDIGIT\",\n 371: \"THAIMONTHOFYEAR\",\n 372: \"THAINUMSOUND\",\n 373: \"THAINUMSTRING\",\n 374: \"THAISTRINGLENGTH\",\n 375: \"ISTHAIDIGIT\",\n 376: \"ROUNDBAHTDOWN\",\n 377: \"ROUNDBAHTUP\",\n 378: \"THAIYEAR\",\n 379: \"RTD\",\n 380: \"CUBEVALUE\",\n 381: \"CUBEMEMBER\",\n 382: \"CUBEMEMBERPROPERTY\",\n 383: \"CUBERANKEDMEMBER\",\n 384: \"HEX2BIN\",\n 385: \"HEX2DEC\",\n 386: \"HEX2OCT\",\n 387: \"DEC2BIN\",\n 388: \"DEC2HEX\",\n 389: \"DEC2OCT\",\n 390: \"OCT2BIN\",\n 391: \"OCT2HEX\",\n 392: \"OCT2DEC\",\n 393: \"BIN2DEC\",\n 394: \"BIN2OCT\",\n 395: \"BIN2HEX\",\n 396: \"IMSUB\",\n 397: \"IMDIV\",\n 398: \"IMPOWER\",\n 399: \"IMABS\",\n 400: \"IMSQRT\",\n 401: \"IMLN\",\n 402: \"IMLOG2\",\n 403: \"IMLOG10\",\n 404: \"IMSIN\",\n 405: \"IMCOS\",\n 406: \"IMEXP\",\n 407: \"IMARGUMENT\",\n 408: \"IMCONJUGATE\",\n 409: \"IMAGINARY\",\n 410: \"IMREAL\",\n 411: \"COMPLEX\",\n 412: \"IMSUM\",\n 413: \"IMPRODUCT\",\n 414: \"SERIESSUM\",\n 415: \"FACTDOUBLE\",\n 416: \"SQRTPI\",\n 417: \"QUOTIENT\",\n 418: \"DELTA\",\n 419: \"GESTEP\",\n 420: \"ISEVEN\",\n 421: \"ISODD\",\n 422: \"MROUND\",\n 423: \"ERF\",\n 424: \"ERFC\",\n 425: \"BESSELJ\",\n 426: \"BESSELK\",\n 427: \"BESSELY\",\n 428: \"BESSELI\",\n 429: \"XIRR\",\n 430: \"XNPV\",\n 431: \"PRICEMAT\",\n 432: \"YIELDMAT\",\n 433: \"INTRATE\",\n 434: \"RECEIVED\",\n 435: \"DISC\",\n 436: \"PRICEDISC\",\n 437: \"YIELDDISC\",\n 438: \"TBILLEQ\",\n 439: \"TBILLPRICE\",\n 440: \"TBILLYIELD\",\n 441: \"PRICE\",\n 442: \"YIELD\",\n 443: \"DOLLARDE\",\n 444: \"DOLLARFR\",\n 445: \"NOMINAL\",\n 446: \"EFFECT\",\n 447: \"CUMPRINC\",\n 448: \"CUMIPMT\",\n 449: \"EDATE\",\n 450: \"EOMONTH\",\n 451: \"YEARFRAC\",\n 452: \"COUPDAYBS\",\n 453: \"COUPDAYS\",\n 454: \"COUPDAYSNC\",\n 455: \"COUPNCD\",\n 456: \"COUPNUM\",\n 457: \"COUPPCD\",\n 458: \"DURATION\",\n 459: \"MDURATION\",\n 460: \"ODDLPRICE\",\n 461: \"ODDLYIELD\",\n 462: \"ODDFPRICE\",\n 463: \"ODDFYIELD\",\n 464: \"RANDBETWEEN\",\n 465: \"WEEKNUM\",\n 466: \"AMORDEGRC\",\n 467: \"AMORLINC\",\n 468: \"CONVERT\",\n 724: \"SHEETJS\",\n 469: \"ACCRINT\",\n 470: \"ACCRINTM\",\n 471: \"WORKDAY\",\n 472: \"NETWORKDAYS\",\n 473: \"GCD\",\n 474: \"MULTINOMIAL\",\n 475: \"LCM\",\n 476: \"FVSCHEDULE\",\n 477: \"CUBEKPIMEMBER\",\n 478: \"CUBESET\",\n 479: \"CUBESETCOUNT\",\n 480: \"IFERROR\",\n 481: \"COUNTIFS\",\n 482: \"SUMIFS\",\n 483: \"AVERAGEIF\",\n 484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n 2: 1,\n 3: 1,\n 10: 0,\n 15: 1,\n 16: 1,\n 17: 1,\n 18: 1,\n 19: 0,\n 20: 1,\n 21: 1,\n 22: 1,\n 23: 1,\n 24: 1,\n 25: 1,\n 26: 1,\n 27: 2,\n 30: 2,\n 31: 3,\n 32: 1,\n 33: 1,\n 34: 0,\n 35: 0,\n 38: 1,\n 39: 2,\n 40: 3,\n 41: 3,\n 42: 3,\n 43: 3,\n 44: 3,\n 45: 3,\n 47: 3,\n 48: 2,\n 53: 1,\n 61: 3,\n 63: 0,\n 65: 3,\n 66: 3,\n 67: 1,\n 68: 1,\n 69: 1,\n 70: 1,\n 71: 1,\n 72: 1,\n 73: 1,\n 74: 0,\n 75: 1,\n 76: 1,\n 77: 1,\n 79: 2,\n 80: 2,\n 83: 1,\n 85: 0,\n 86: 1,\n 89: 0,\n 90: 1,\n 94: 0,\n 95: 0,\n 97: 2,\n 98: 1,\n 99: 1,\n 101: 3,\n 102: 3,\n 105: 1,\n 106: 1,\n 108: 2,\n 111: 1,\n 112: 1,\n 113: 1,\n 114: 1,\n 117: 2,\n 118: 1,\n 119: 4,\n 121: 1,\n 126: 1,\n 127: 1,\n 128: 1,\n 129: 1,\n 130: 1,\n 131: 1,\n 133: 1,\n 134: 1,\n 135: 1,\n 136: 2,\n 137: 2,\n 138: 2,\n 140: 1,\n 141: 1,\n 142: 3,\n 143: 4,\n 144: 4,\n 161: 1,\n 162: 1,\n 163: 1,\n 164: 1,\n 165: 2,\n 172: 1,\n 175: 2,\n 176: 2,\n 177: 3,\n 178: 2,\n 179: 1,\n 184: 1,\n 186: 1,\n 189: 3,\n 190: 1,\n 195: 3,\n 196: 3,\n 197: 1,\n 198: 1,\n 199: 3,\n 201: 1,\n 207: 4,\n 210: 3,\n 211: 1,\n 212: 2,\n 213: 2,\n 214: 1,\n 215: 1,\n 225: 0,\n 229: 1,\n 230: 1,\n 231: 1,\n 232: 1,\n 233: 1,\n 234: 1,\n 235: 3,\n 244: 1,\n 247: 4,\n 252: 2,\n 257: 1,\n 261: 1,\n 271: 1,\n 273: 4,\n 274: 2,\n 275: 2,\n 276: 2,\n 277: 3,\n 278: 3,\n 279: 1,\n 280: 3,\n 281: 3,\n 282: 3,\n 283: 1,\n 284: 1,\n 285: 2,\n 286: 4,\n 287: 3,\n 288: 2,\n 289: 4,\n 290: 3,\n 291: 3,\n 292: 3,\n 293: 4,\n 294: 1,\n 295: 3,\n 296: 1,\n 297: 3,\n 298: 1,\n 299: 2,\n 300: 3,\n 301: 3,\n 302: 4,\n 303: 2,\n 304: 2,\n 305: 2,\n 306: 2,\n 307: 2,\n 308: 2,\n 309: 3,\n 310: 2,\n 311: 2,\n 312: 2,\n 313: 2,\n 314: 2,\n 315: 2,\n 316: 4,\n 325: 2,\n 326: 2,\n 327: 2,\n 328: 2,\n 331: 2,\n 332: 2,\n 337: 2,\n 342: 1,\n 343: 1,\n 346: 2,\n 347: 1,\n 350: 4,\n 351: 3,\n 352: 1,\n 353: 2,\n 360: 1,\n 368: 1,\n 369: 1,\n 370: 1,\n 371: 1,\n 372: 1,\n 373: 1,\n 374: 1,\n 375: 1,\n 376: 1,\n 377: 1,\n 378: 1,\n 382: 3,\n 385: 1,\n 392: 1,\n 393: 1,\n 396: 2,\n 397: 2,\n 398: 2,\n 399: 1,\n 400: 1,\n 401: 1,\n 402: 1,\n 403: 1,\n 404: 1,\n 405: 1,\n 406: 1,\n 407: 1,\n 408: 1,\n 409: 1,\n 410: 1,\n 414: 4,\n 415: 1,\n 416: 1,\n 417: 2,\n 420: 1,\n 421: 1,\n 422: 2,\n 424: 1,\n 425: 2,\n 426: 2,\n 427: 2,\n 428: 2,\n 430: 3,\n 438: 3,\n 439: 3,\n 440: 3,\n 443: 2,\n 444: 2,\n 445: 2,\n 446: 2,\n 447: 6,\n 448: 6,\n 449: 2,\n 450: 2,\n 464: 2,\n 468: 3,\n 476: 2,\n 479: 1,\n 480: 2,\n 65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\tf = f.replace(/\\$'([^']|'')+'/g, function($$) { return $$.slice(1); });\n\tf = f.replace(/\\$([^\\]\\. #$]+)/g, function($$, $1) { return ($1).match(/^([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])?(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})?$/) ? $$ : $1; });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tr = r.replace(/\\$'([^']|'')+'/g, function($$) { return $$.slice(1); });\n\tr = r.replace(/\\$([^\\]\\. #$]+)/g, function($$, $1) { return ($1).match(/^([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])?(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})?$/) ? $$ : $1; });\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/!/,\".\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left == null) margins.left = defs[0];\n\tif(margins.right == null) margins.right = defs[1];\n\tif(margins.top == null) margins.top = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF__load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF__load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = ({}/*:any*/); if(opts.dense) s[\"!data\"] = [];\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref && !(opts && opts.nodim)) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(opts && opts.nodim) refguess.s.c = refguess.s.r = 0;\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '';\n\tfor(var i = 0; i != merges.length; ++i) o += '';\n\treturn o + '';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array*/, rels) {\n\tvar dense = s[\"!data\"] != null;\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_col(C) + encode_row(R);\n\t\t\tif(dense) {\n\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\tif(!s[\"!data\"][R][C]) s[\"!data\"][R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[\"!data\"][R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref); break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/g;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(tag.rightToLeft && parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif((cell.v === undefined || cell.t === \"z\" && !(opts||{}).sheetStubs) && typeof cell.f !== \"string\" && typeof cell.z == \"undefined\") return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = (cell.t == \"z\" || cell.v == null)? \"\" : writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\telse o.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) {\n\t\tcell.l.display = escapexml(vv);\n\t\tws['!links'].push([ref, cell.l]);\n\t}\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array*/ = [], cref/*:?Array*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = s[\"!data\"] != null;\n\tvar rows/*:Array*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden && parsexmlbool(tag.hidden)) { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(!opts.nodim) {\n\t\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\t\t}\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden && parsexmlbool(tag.hidden)) { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1]), true);\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? unescapexml(utf8read(p.v), true) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tvar _r;\n\t\t\tif(opts.nodim) {\n\t\t\t\t_r = decode_cell(tag.r);\n\t\t\t\tif(guess.s.r > _r.r) guess.s.r = _r.r;\n\t\t\t\tif(guess.e.r < _r.r) guess.e.r = _r.r;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\t_r = decode_cell(tag.r);\n\t\t\t\tif(!s[\"!data\"][_r.r]) s[\"!data\"][_r.r] = [];\n\t\t\t\ts[\"!data\"][_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array*/ = [], r/*:Array*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = ws[\"!data\"] != null;\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[\"!data\"][R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\trel.display = l[1].display;\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tvar dense = ws[\"!data\"] != null;\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = dense ? (ws[\"!data\"][caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left) f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tvar data = cell.v == null ? \"\" : String(cell.v);\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(data, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tvar data = cell.v == null ? \"\" : String(cell.v);\n\tif(o == null) o = new_buf(8 + 4 * data.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(data, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\", false], // fObjects\n\t\t[\"scenarios\", false], // fScenarios\n\t\t[\"formatCells\", true], // fFormatCells\n\t\t[\"formatColumns\", true], // fFormatColumns\n\t\t[\"formatRows\", true], // fFormatRows\n\t\t[\"insertColumns\", true], // fInsertColumns\n\t\t[\"insertRows\", true], // fInsertRows\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\n\t\t[\"deleteColumns\", true], // fDeleteColumns\n\t\t[\"deleteRows\", true], // fDeleteRows\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\n\t\t[\"sort\", true], // fSort\n\t\t[\"autoFilter\", true], // fAutoFilter\n\t\t[\"pivotTables\", true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = ({}); if(opts.dense) s[\"!data\"] = [];\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[\"!data\"][R]) s[\"!data\"][R] = []; s[\"!data\"][R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[\"!data\"][R]) s[\"!data\"][R] = []; s[\"!data\"][R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\t\t\tif(!s[\"!data\"][R][C]) s[\"!data\"][R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[\"!data\"][R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_col(C) + encode_row(R);\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[\"!data\"][R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[\"!data\"][R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v == null ? \"\" : String(cell.v)/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = ws[\"!data\"] != null;\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref); break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref) });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array, string, ?string]*/ {\n\tvar col/*:Array*/ = [];\n\tvar num = data.match(/^/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tif(cs[\"!data\"]) {\n\t\t\t\tif(!cs[\"!data\"][i]) cs[\"!data\"][i] = [];\n\t\t\t\tcs[\"!data\"][i][C] = {t:'n', v:n, z:cache[1] };\n\t\t\t} else cs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\n//function write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n//\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n//\t\t'xmlns': XMLNS_main[0],\n//\t\t'xmlns:r': XMLNS.r\n//\t})];\n//\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n//\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n//\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n//\treturn o.join(\"\");\n//}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\n//function write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n//\tvar ba = buf_array();\n//\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n//\t/* [BrtCsProp] */\n//\t/* CSVIEWS */\n//\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n//\t/* [USERCSVIEWS] */\n//\t/* [BrtMargins] */\n//\t/* [BrtCsPageSetup] */\n//\t/* [HEADERFOOTER] */\n//\t/* BrtDrawing */\n//\t/* [BrtLegacyDrawing] */\n//\t/* [BrtLegacyDrawingHF] */\n//\t/* [BrtBkHim] */\n//\t/* [WEBPUBITEMS] */\n//\t/* FRTCHARTSHEET */\n//\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n//\treturn ba.end();\n//}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery', false, \"bool\"],\n\t['autoCompressPictures', true, \"bool\"],\n\t['backupFile', false, \"bool\"],\n\t['checkCompatibility', false, \"bool\"],\n\t['CodeName', ''],\n\t['date1904', false, \"bool\"],\n\t['defaultThemeVersion', 0, \"int\"],\n\t['filterPrivacy', false, \"bool\"],\n\t['hidePivotFieldList', false, \"bool\"],\n\t['promptedSolutions', false, \"bool\"],\n\t['publishItems', false, \"bool\"],\n\t['refreshAllConnections', false, \"bool\"],\n\t['saveExternalLinkValues', true, \"bool\"],\n\t['showBorderUnselectedTables', true, \"bool\"],\n\t['showInkAnnotation', true, \"bool\"],\n\t['showObjects', 'all'],\n\t['showPivotChartFilter', false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab', 0, \"int\"],\n\t['autoFilterDateGrouping', true, \"bool\"],\n\t['firstSheet', 0, \"int\"],\n\t['minimized', false, \"bool\"],\n\t['showHorizontalScroll', true, \"bool\"],\n\t['showSheetTabs', true, \"bool\"],\n\t['showVerticalScroll', true, \"bool\"],\n\t['tabRatio', 600, \"int\"],\n\t['visibility', 'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2 (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\":][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\twb.SheetNames.forEach(function(n, i) {\n\t\tvar ws = wb.Sheets[n];\n\t\tif(!ws || !ws[\"!autofilter\"]) return;\n\t\tvar DN;\n\t\tif(!wb.Workbook) wb.Workbook = {};\n\t\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\t\twb.Workbook.Names.forEach(function(dn) { if(dn.Name == \"_xlnm._FilterDatabase\" && dn.Sheet == i) DN = dn; });\n\t\tvar nn = formula_quote_sheet_name(n) + \"!\" + fix_range(ws[\"!autofilter\"].ref);\n\t\tif(DN) DN.Ref = nn;\n\t\telse wb.Workbook.Names.push({Name: \"_xlnm._FilterDatabase\", Sheet: i, Ref: nn});\n\t});\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '': case '': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '': pass=true; break;\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase ' 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '';\n\t\to[o.length] = \"\";\n\t}\n\n\to[o.length] = \"\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.date1904) flags |= 0x01;\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tvar flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\tif(flags & 0x20) name = \"_xlnm.\" + name;\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula, Flags: flags}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\nfunction write_BrtName(name, wb) {\n\tvar o = new_buf(9);\n\tvar flags = 0;\n\tvar dname = name.Name;\n\tif(XLSLblBuiltIn.indexOf(dname) > -1) { flags |= 0x20; dname = dname.slice(6); }\n\to.write_shift(4, flags); // flags\n\to.write_shift(1, 0); // chKey\n\to.write_shift(4, name.Sheet == null ? 0xFFFFFFFF : name.Sheet);\n\n\tvar arr = [\n\t\to,\n\t\twrite_XLWideString(dname),\n\t\twrite_XLSBNameParsedFormula(name.Ref, wb)\n\t];\n\tif(name.Comment) arr.push(write_XLNullableWideString(name.Comment));\n\telse {\n\t\tvar x = new_buf(4);\n\t\tx.write_shift(4, 0xFFFFFFFF);\n\t\tarr.push(x);\n\t}\n\n\t// if macro (flags & 0x0F):\n\t// write_shift(4, 0xFFFFFFFF);\n\t// write_XLNullableWideString(description)\n\t// write_XLNullableWideString(helpTopic)\n\t// write_shift(4, 0xFFFFFFFF);\n\n\treturn bconcat(arr);\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4, 28800);\n\to.write_shift(4, 17600);\n\to.write_shift(4, 500);\n\to.write_shift(4, idx);\n\to.write_shift(4, idx);\n\tvar flags = 0x78;\n\to.write_shift(1, flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\nfunction write_BRTNAMES(ba, wb) {\n\tif(!wb.Workbook || !wb.Workbook.Names) return;\n\twb.Workbook.Names.forEach(function(name) { try {\n\t\tif(name.Flags & 0x0e) return; // TODO: macro name write\n\t\twrite_record(ba, 0x0027 /* BrtName */, write_BrtName(name, wb));\n\t} catch(e) {\n\t\tconsole.error(\"Could not serialize defined name \" + JSON.stringify(name));\n\t} });\n}\n\nfunction write_SELF_EXTERNS_xlsb(wb) {\n\tvar L = wb.SheetNames.length;\n\tvar o = new_buf(12 * L + 28);\n\to.write_shift(4, L + 2);\n\to.write_shift(4, 0); o.write_shift(4, -2); o.write_shift(4, -2); // workbook-level reference\n\to.write_shift(4, 0); o.write_shift(4, -1); o.write_shift(4, -1); // #REF!...\n\tfor(var i = 0; i < L; ++i) {\n\t\to.write_shift(4, 0); o.write_shift(4, i); o.write_shift(4, i);\n\t}\n\treturn o;\n}\nfunction write_EXTERNALS_xlsb(ba, wb) {\n\twrite_record(ba, 0x0161 /* BrtBeginExternals */);\n\twrite_record(ba, 0x0165 /* BrtSupSelf */);\n\twrite_record(ba, 0x016A /* BrtExternSheet */, write_SELF_EXTERNS_xlsb(wb, 0));\n\twrite_record(ba, 0x0162 /* BrtEndExternals */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\twrite_EXTERNALS_xlsb(ba, wb);\n\tif((wb.Workbook||{}).Names) write_BRTNAMES(ba, wb);\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_prefix_dname(dname) {\n\treturn XLSLblBuiltIn.indexOf(\"_xlnm.\" + dname) > -1 ? \"_xlnm.\" + dname : dname;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array*/ = [], cursheet/*:Worksheet*/ = ({}), sheetname = \"\"; if(opts.dense) cursheet[\"!data\"] = [];\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== void 0) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[\"!data\"][r]) cursheet[\"!data\"][r] = [];\n\t\t\t\t\t\tcursheet[\"!data\"][r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tif(cc > c || rr > r) merges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[\"!data\"][cmd]) cursheet[\"!data\"][cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[\"!data\"][cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = ({}); if(opts.dense) cursheet[\"!data\"] = [];\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF__load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: xlml_prefix_dname(_NamedRange.Name),\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\tout.bookType = \"xlml\";\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(wb/*::, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\tif((((wb||{}).Workbook||{}).WBProps||{}).date1904) return '';\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array*/ = [''];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name.slice(0,6) == \"_xlnm.\" ? n.Name.slice(6) : n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('' + _v + '');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = ws[\"!data\"] != null;\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_col(C) + encode_row(R), cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"
\" + t + \"
\");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\tif(ws[\"!autofilter\"]) o.push('');\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns': XLMLNS.ss,\n\t\t'xmlns:o': XLMLNS.o,\n\t\t'xmlns:x': XLMLNS.x,\n\t\t'xmlns:ss': XLMLNS.ss,\n\t\t'xmlns:dt': XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue 0x003c\n\t- 2.4.59 ContinueBigName 0x043c\n\t- 2.4.60 ContinueFrt 0x0812\n\t- 2.4.61 ContinueFrt11 0x0875\n\t- 2.4.62 ContinueFrt12 0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002F /* FilePass */: case 0x0195 /* FileLock */: case 0x00E1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ({}/*:any*/); if(options.dense) out[\"!data\"] = [];\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[\"!data\"][cell.r]) out[\"!data\"][cell.r] = [];\n\t\t\t\tout[\"!data\"][cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(RecordType) == -1 /* BOF */) break;\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* BOF */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval = 1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ({}/*:any*/); if(options.dense) out[\"!data\"] = [];\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ({}/*:any*/); if(options.dense) out[\"!data\"] = [];\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[\"!data\"][val.r]||[])[val.c]: out[encode_col(val.c) + encode_row(val.r)]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[\"!data\"][_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[\"!data\"][val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[\"!data\"][last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF__load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF__load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF__load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[\"!data\"][rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[\"!data\"][rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[\"!data\"][val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[\"!data\"][val[0].r]) out[\"!data\"][val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[\"!data\"][val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/* --- multiplan 4 records --- */\n\t/*::[*/0x0065/*::]*/: { /* n:\"\", */ }, // one per window\n\t/*::[*/0x0066/*::]*/: { /* n:\"\", */ }, // calc settings\n\t/*::[*/0x0069/*::]*/: { /* n:\"\", */ }, // print header\n\t/*::[*/0x006a/*::]*/: { /* n:\"\", */ }, // print footer\n\t/*::[*/0x006b/*::]*/: { /* n:\"\", */ }, // print settings\n\t/*::[*/0x006d/*::]*/: { /* n:\"\", */ }, // one per window\n\t/*::[*/0x0070/*::]*/: { /* n:\"\", */ }, // includes default col width\n\t/*::[*/0x0072/*::]*/: { /* n:\"\", */ }, // includes selected cell\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, cell.v == null ? \"\" : String(cell.v).slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = ws[\"!data\"] != null;\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t}\n\tvar row = [];\n\tfor(var C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tif(dense) row = ws[\"!data\"][R] || [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar cell = dense ? row[C] : ws[cols[C] + rr];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x0200 /* Dimensions */, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tvar comments = [];\n\tvar row = [];\n\tfor(var C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tif(dense) row = ws[\"!data\"][R] || [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? row[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t\tif(b8 && cell.c) comments.push([ref, cell.c]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\t// if(b8) comments.forEach(function(comment) { write_biff_rec(ba, 0x001c /* Note */, write_NoteSh(comment)); });\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C /* Country */, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC /* SST */, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255). Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar dense = (opts.dense != null) ? opts.dense : DENSE;\n\tvar ws/*:Worksheet*/ = ({}/*:any*/); if(dense) ws[\"!data\"] = [];\n\tstr = str.replace(//g, \"\");\n\tvar mtch/*:any*/ = str.match(/\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(dense) { if(!ws[\"!data\"][R]) ws[\"!data\"][R] = []; ws[\"!data\"][R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array*/ = [];\n\tvar sp = ({}/*:any*/);\n\tvar dense = ws[\"!data\"] != null;\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_col(C) + encode_row(R);\n\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tsp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '' + w + '';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '' + w + '';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"\";\n\treturn preamble + oo.join(\"\") + \"\";\n}\n\nvar HTML_BEGIN = 'SheetJS Table Export';\nvar HTML_END = '';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find
\");\n\tif(mtch.length == 1) {\n\t\tvar w = sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\t\tw.bookType = \"html\";\n\t\treturn w;\n\t}\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\twb.bookType = \"html\";\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\treturn out.join(\"\") + '';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"
\" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar rows/*:HTMLCollection*/ = table.rows;\n\tif(!rows) {\n\t\t/* not an HTML TABLE */\n\t\tthrow \"Unsupported origin when \" + table.tagName + \" is not a TABLE\";\n\t}\n\n\tvar opts = _opts || {};\n\tvar dense = ws[\"!data\"] != null;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array*/ = [], midx = 0;\n\tvar rowinfo/*:Array*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection*/ = (row.cells);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used. Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\" &&\tl.slice(0, 11).toLowerCase() != 'javascript:') o.l = ({ Target: l });\n\t\t\tif(dense) { if(!ws[\"!data\"][R + or_R]) ws[\"!data\"][R + or_R] = []; ws[\"!data\"][R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = ({}/*:any*/); if(opts.dense) ws[\"!data\"] = [];\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\tvar o = sheet_to_workbook(parse_dom_table(table, opts), opts);\n\t//o.bookType = \"dom\"; // TODO: define a type for this\n\treturn o;\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(//g,\" \")\n\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/]*\\/>/g,\"\\t\")\n\t\t.replace(//g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\n/* Note: ODS can stick styles in content.xml or styles.xml, FODS blurs lines */\nfunction parse_ods_styles(d/*:string*/, _opts, _nfm) {\n\tvar number_format_map = _nfm || {};\n\tvar str = xlml_normalize(d);\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\tvar Rn, NFtag, NF = \"\", tNF = \"\", y, etpos = 0, tidx = -1, infmt = false, payload = \"\";\n\twhile((Rn = xlmlregex.exec(str))) {\n\t\tswitch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\t\t/* Number Format Definitions */\n\t\tcase 'number-style': // 16.29.2\n\t\tcase 'currency-style': // 16.29.8\n\t\tcase 'percentage-style': // 16.29.10\n\t\tcase 'date-style': // 16.29.11\n\t\tcase 'time-style': // 16.29.19\n\t\tcase 'text-style': // 16.29.26\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tinfmt = false;\n\t\t\t\tif(NFtag['truncate-on-overflow'] == \"false\") {\n\t\t\t\t\tif(NF.match(/h/)) NF = NF.replace(/h+/, \"[$&]\");\n\t\t\t\t\telse if(NF.match(/m/)) NF = NF.replace(/m+/, \"[$&]\");\n\t\t\t\t\telse if(NF.match(/s/)) NF = NF.replace(/s+/, \"[$&]\");\n\t\t\t\t}\n\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\tNF = \"\";\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tinfmt = true;\n\t\t\t\tNF = \"\";\n\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t} break;\n\n\t\t// LibreOffice bug https://bugs.documentfoundation.org/show_bug.cgi?id=149484\n\t\tcase 'boolean-style': // 16.29.24\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tinfmt = false;\n\t\t\t\tnumber_format_map[NFtag.name] = \"General\";\n\t\t\t\tNF = \"\";\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tinfmt = true;\n\t\t\t\tNF = \"\";\n\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t} break;\n\n\t\t/* Number Format Elements */\n\t\tcase 'boolean': // 16.29.25\n\t\t\tNF += \"General\"; // ODF spec is unfortunately underspecified here\n\t\t\tbreak;\n\n\t\tcase 'text': // 16.29.27\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tpayload = str.slice(tidx, xlmlregex.lastIndex - Rn[0].length);\n\t\t\t\t// NOTE: Excel has a different interpretation of \"%%\" and friends\n\t\t\t\tif(payload == \"%\" && NFtag[0] == ' 16.29.12\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"d\"; break;\n\t\t\t\tcase \"long\": NF += \"dd\"; break;\n\t\t\t\tdefault: NF += \"dd\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'day-of-week': { // 16.29.16\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"ddd\"; break;\n\t\t\t\tcase \"long\": NF += \"dddd\"; break;\n\t\t\t\tdefault: NF += \"ddd\"; break;\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'era': { // 16.29.15 TODO: proper mapping\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"ee\"; break;\n\t\t\t\tcase \"long\": NF += \"eeee\"; break;\n\t\t\t\tdefault: NF += \"eeee\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'hours': { // 16.29.20\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"h\"; break;\n\t\t\t\tcase \"long\": NF += \"hh\"; break;\n\t\t\t\tdefault: NF += \"hh\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'minutes': { // 16.29.21\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"m\"; break;\n\t\t\t\tcase \"long\": NF += \"mm\"; break;\n\t\t\t\tdefault: NF += \"mm\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'month': { // 16.29.13\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tif(y[\"textual\"]) NF += \"mm\";\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"m\"; break;\n\t\t\t\tcase \"long\": NF += \"mm\"; break;\n\t\t\t\tdefault: NF += \"m\"; break;\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'seconds': { // 16.29.22\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"s\"; break;\n\t\t\t\tcase \"long\": NF += \"ss\"; break;\n\t\t\t\tdefault: NF += \"ss\"; break; // TODO: error condition\n\t\t\t}\n\t\t\tif(y[\"decimal-places\"]) NF += \".\" + fill(\"0\", +y[\"decimal-places\"]);\n\t\t} break;\n\n\t\tcase 'year': { // 16.29.14\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"yy\"; break;\n\t\t\t\tcase \"long\": NF += \"yyyy\"; break;\n\t\t\t\tdefault: NF += \"yy\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'am-pm': // 16.29.23\n\t\t\tNF += \"AM/PM\"; // LO autocorrects A/P -> AM/PM\n\t\t\tbreak;\n\n\t\tcase 'week-of-year': // 16.29.17\n\t\tcase 'quarter': // 16.29.18\n\t\t\tconsole.error(\"Excel does not support ODS format token \" + Rn[3]);\n\t\t\tbreak;\n\n\t\tcase 'fill-character': // 16.29.5\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tpayload = str.slice(tidx, xlmlregex.lastIndex - Rn[0].length);\n\t\t\t\t// NOTE: Excel has a different interpretation of \"%%\" and friends\n\t\t\t\tNF += '\"' + payload.replace(/\"/g, '\"\"') + '\"*';\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\ttidx = xlmlregex.lastIndex;\n\t\t\t} break;\n\n\t\tcase 'scientific-number': // 16.29.6\n\t\t\t// TODO: find a mapping for all parameters\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tNF += \"0.\" + fill(\"0\", +y[\"min-decimal-places\"] || +y[\"decimal-places\"] || 2) + fill(\"?\", +y[\"decimal-places\"] - +y[\"min-decimal-places\"] || 0) + \"E\" + (parsexmlbool(y[\"forced-exponent-sign\"]) ? \"+\" : \"\") + fill(\"0\", +y[\"min-exponent-digits\"] || 2);\n\t\t\tbreak;\n\n\t\tcase 'fraction': // 16.29.7\n\t\t\t// TODO: find a mapping for all parameters\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tif(!+y[\"min-integer-digits\"]) NF += \"#\";\n\t\t\telse NF += fill(\"0\", +y[\"min-integer-digits\"]);\n\t\t\tNF += \" \";\n\t\t\tNF += fill(\"?\", +y[\"min-numerator-digits\"] || 1);\n\t\t\tNF += \"/\";\n\t\t\tif(+y[\"denominator-value\"]) NF += y[\"denominator-value\"];\n\t\t\telse NF += fill(\"?\", +y[\"min-denominator-digits\"] || 1);\n\t\t\tbreak;\n\n\t\tcase 'currency-symbol': // 16.29.9\n\t\t\t// TODO: localization with [$-...]\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tNF += '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"';\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\ttidx = xlmlregex.lastIndex;\n\t\t\t} else NF += \"$\";\n\t\t\tbreak;\n\n\t\tcase 'text-properties': // 16.29.29\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch((y[\"color\"]||\"\").toLowerCase().replace(\"#\", \"\")) {\n\t\t\t\tcase \"ff0000\": case \"red\": NF = \"[Red]\" + NF; break;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'text-content': // 16.29.28\n\t\t\tNF += \"@\";\n\t\t\tbreak;\n\n\t\tcase 'map': // 16.3\n\t\t\t// TODO: handle more complex maps\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tif(unescapexml(y[\"condition\"]) == \"value()>=0\") NF = number_format_map[y[\"apply-style-name\"]] + \";\" + NF;\n\t\t\telse console.error(\"ODS number format may be incorrect: \" + y[\"condition\"]);\n\t\t\tbreak;\n\n\t\tcase 'number': // 16.29.3\n\t\t\t// TODO: handle all the attributes\n\t\t\tif(Rn[1]==='/') break;\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\ttNF = \"\";\n\t\t\ttNF += fill(\"0\", +y[\"min-integer-digits\"] || 1);\n\t\t\tif(parsexmlbool(y[\"grouping\"])) tNF = commaify(fill(\"#\", Math.max(0, 4 - tNF.length)) + tNF);\n\t\t\tif(+y[\"min-decimal-places\"] || +y[\"decimal-places\"]) tNF += \".\";\n\t\t\tif(+y[\"min-decimal-places\"]) tNF += fill(\"0\", +y[\"min-decimal-places\"] || 1);\n\t\t\tif(+y[\"decimal-places\"] - (+y[\"min-decimal-places\"]||0)) tNF += fill(\"0\", +y[\"decimal-places\"] - (+y[\"min-decimal-places\"]||0)); // TODO: should this be \"#\" ?\n\t\t\tNF += tNF;\n\t\t\tbreak;\n\n\t\tcase 'embedded-text': // 16.29.4\n\t\t\t// TODO: verify interplay with grouping et al\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tif(etpos == 0) NF += '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"';\n\t\t\t\telse NF = NF.slice(0, etpos) + '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"' + NF.slice(etpos);\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\ttidx = xlmlregex.lastIndex;\n\t\t\t\tetpos = -+parsexmltag(Rn[0], false)[\"position\"] || 0;\n\t\t\t} break;\n\n\t}}\n\treturn number_format_map;\n}\n\nfunction parse_content_xml(d/*:string*/, _opts, _nfm)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar nfidx, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array*/ = [];\n\t\tvar ws = ({}/*:any*/); if(opts.dense) ws[\"!data\"] = [];\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = _nfm || {}, styles = {};\n\t\tvar merges/*:Array*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[], WBProps:{}};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\tvar baddate = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 \n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = ({}/*:any*/); if(opts.dense) ws[\"!data\"] = []; merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 \n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 \n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 \n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[\"!data\"][R]) ws[\"!data\"][R] = []; ws[\"!data\"][R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif(ctag[\"style-name\"] && styles[ctag[\"style-name\"]]) q.z = styles[ctag[\"style-name\"]];\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[\"!data\"][R]) ws[\"!data\"][R] = [];\n\t\t\t\t\t\t\tws[\"!data\"][R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_col(C) + encode_row(R)] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag[\"style-name\"] && styles[ctag[\"style-name\"]]) q.z = styles[ctag[\"style-name\"]];\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']) || (+ctag['boolean-value'] >= 1); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v, WB.WBProps.date1904) - baddate; }\n\t\t\t\t\t\t\tif(!q.z) q.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tif(!q.z) q.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[\"!data\"][R + rpt]) ws[\"!data\"][R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[\"!data\"][R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[\"!data\"][R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 \n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \n\t\t\tcase 'scripts': // 3.12 \n\t\t\tcase 'styles': // TODO \n\t\t\tcase 'font-face-decls': // 3.14 \n\t\t\tcase 'master-styles': // 3.15.4 -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 \n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\n\t\t\tcase 'settings': // TODO: \n\t\t\tcase 'config-item-set': // TODO: \n\t\t\tcase 'config-item-map-indexed': // TODO: \n\t\t\tcase 'config-item-map-entry': // TODO: \n\t\t\tcase 'config-item-map-named': // TODO: \n\t\t\tcase 'shapes': // 9.2.8 \n\t\t\tcase 'frame': // 10.4.2 \n\t\t\tcase 'text-box': // 10.4.3 \n\t\t\tcase 'image': // 10.4.4 \n\t\t\tcase 'data-pilot-tables': // 9.6.2 \n\t\t\tcase 'list-style': // 16.30 \n\t\t\tcase 'form': // 13.13 \n\t\t\tcase 'dde-links': // 9.8 \n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // \n\t\t\tcase 'currency-symbol': // \n\t\t\tcase 'fill-character': // 16.29.5 \n\t\t\t\tbreak;\n\n\t\t\tcase 'text-style': // 16.27.25 \n\t\t\tcase 'boolean-style': // 16.27.23 \n\t\t\tcase 'number-style': // 16.27.2 \n\t\t\tcase 'currency-style': // 16.29.8 \n\t\t\tcase 'percentage-style': // 16.27.9 \n\t\t\tcase 'date-style': // 16.27.10 \n\t\t\tcase 'time-style': // 16.27.18 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tvar xlmlidx = xlmlregex.lastIndex;\n\t\t\t\t\tparse_ods_styles(str.slice(nfidx, xlmlregex.lastIndex), _opts, number_format_map);\n\t\t\t\t\txlmlregex.lastIndex = xlmlidx;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tnfidx = xlmlregex.lastIndex - Rn[0].length;\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 \n\t\t\tcase 'libraries': break; // TODO: \n\t\t\tcase 'automatic-styles': break; // 3.15.3 \n\n\t\t\tcase 'default-style': // TODO: \n\t\t\tcase 'page-layout': break; // TODO: \n\t\t\tcase 'style': { // 16.2 \n\t\t\t\tvar styletag = parsexmltag(Rn[0], false);\n\t\t\t\tif(styletag[\"family\"] == \"table-cell\" && number_format_map[styletag[\"data-style-name\"]]) styles[styletag[\"name\"]] = number_format_map[styletag[\"data-style-name\"]];\n\t\t\t} break;\n\t\t\tcase 'map': break; // 16.3 \n\t\t\tcase 'font-face': break; // 16.21 \n\n\t\t\tcase 'paragraph-properties': break; // 17.6 \n\t\t\tcase 'table-properties': break; // 17.15 \n\t\t\tcase 'table-column-properties': break; // 17.16 \n\t\t\tcase 'table-row-properties': break; // 17.17 \n\t\t\tcase 'table-cell-properties': break; // 17.18 \n\n\t\t\tcase 'number': // 16.27.3 \n\t\t\t\tbreak;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \n\n\t\t\tcase 'day': // 16.27.11 \n\t\t\tcase 'month': // 16.27.12 \n\t\t\tcase 'year': // 16.27.13 \n\t\t\tcase 'era': // 16.27.14 \n\t\t\tcase 'day-of-week': // 16.27.15 \n\t\t\tcase 'week-of-year': // 16.27.16 \n\t\t\tcase 'quarter': // 16.27.17 \n\t\t\tcase 'hours': // 16.27.19 \n\t\t\tcase 'minutes': // 16.27.20 \n\t\t\tcase 'seconds': // 16.27.21 \n\t\t\tcase 'am-pm': // 16.27.22 \n\t\t\t\tbreak;\n\n\t\t\tcase 'boolean': break; // 16.27.24 \n\t\t\tcase 'text': // 16.27.26 \n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 \n\t\t\tcase 'text-properties': break; // 16.27.27 \n\t\t\tcase 'embedded-text': break; // 16.27.4 \n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 \n\t\t\tcase 'table-header-rows': break; // 9.1.7 \n\t\t\tcase 'table-rows': break; // 9.1.12 \n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 \n\t\t\tcase 'table-header-columns': break; // 9.1.11 \n\t\t\tcase 'table-columns': break; // 9.1.12 \n\n\t\t\tcase 'null-date': // 9.4.2 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\tswitch(tag[\"date-value\"]) {\n\t\t\t\t\tcase \"1904-01-01\": WB.WBProps.date1904 = true;\n\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase \"1900-01-01\": baddate = 0;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'graphic-properties': break; // 17.21 \n\t\t\tcase 'calculation-settings': break; // 9.4.1 \n\t\t\tcase 'named-expressions': break; // 9.4.11 \n\t\t\tcase 'label-range': break; // 9.4.9 \n\t\t\tcase 'label-ranges': break; // 9.4.10 \n\t\t\tcase 'named-expression': break; // 9.4.13 \n\t\t\tcase 'sort': break; // 9.4.19 \n\t\t\tcase 'sort-by': break; // 9.4.20 \n\t\t\tcase 'sort-groups': break; // 9.4.22 \n\n\t\t\tcase 'tab': break; // 6.1.4 \n\t\t\tcase 'line-break': break; // 6.1.5 \n\t\t\tcase 'span': break; // 6.1.7 \n\t\t\tcase 'p': case '文本串': // 5.1.3 \n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // \n\t\t\tcase 's': break; // \n\n\t\t\tcase 'database-range': // 9.4.15 \n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 \n\t\t\tcase 'title': case '标题': break; // <*:title> OR \n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 \n\t\t\tcase 'content-validations': break; // 9.4.4 \n\t\t\tcase 'filter': break; // 9.5.2 \n\t\t\tcase 'filter-and': break; // 9.5.3 \n\t\t\tcase 'filter-or': break; // 9.5.4 \n\t\t\tcase 'filter-condition': break; // 9.5.5 \n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \n\t\t\tcase 'page-count': break; // TODO \n\t\t\tcase 'time': break; // TODO \n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \n\t\t\tcase 'property': break; // 13.8 \n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // ',\n\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t'',\n\t\t''\n\t].join(\"\");\n\n\tvar payload = '' + master_styles + '';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\n\n// TODO: find out if anyone actually read the spec. LO has some wild errors\nfunction write_number_format_ods(nf/*:string*/, nfidx/*:string*/)/*:string*/ {\n\tvar type = \"number\", payload = \"\", nopts = { \"style:name\": nfidx }, c = \"\", i = 0;\n\tnf = nf.replace(/\"[$]\"/g, \"$\");\n\t/* TODO: replace with an actual parser based on a real grammar */\n\tj: {\n\t\t// TODO: support style maps\n\t\tif(nf.indexOf(\";\") > -1) {\n\t\t\tconsole.error(\"Unsupported ODS Style Map exported. Using first branch of \" + nf);\n\t\t\tnf = nf.slice(0, nf.indexOf(\";\"));\n\t\t}\n\n\t\tif(nf == \"@\") { type = \"text\"; payload = \"\"; break j; }\n\n\t\t/* currency flag */\n\t\tif(nf.indexOf(/\\$/) > -1) { type = \"currency\"; }\n\n\t\t/* opening string literal */\n\t\tif(nf[i] == '\"') {\n\t\t\tc = \"\";\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\tif(nf[i+1] == \"*\") {\n\t\t\t\ti++;\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t} else {\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t}\n\t\t\tnf = nf.slice(i+1); i = 0;\n\t\t}\n\n\t\t/* fractions */\n\t\tvar t = nf.match(/# (\\?+)\\/(\\?+)/);\n\t\tif(t) { payload += writextag(\"number:fraction\", null, {\"number:min-integer-digits\":0, \"number:min-numerator-digits\": t[1].length, \"number:max-denominator-value\": Math.max(+(t[1].replace(/./g, \"9\")), +(t[2].replace(/./g, \"9\"))) }); break j; }\n\t\tif((t=nf.match(/# (\\?+)\\/(\\d+)/))) { payload += writextag(\"number:fraction\", null, {\"number:min-integer-digits\":0, \"number:min-numerator-digits\": t[1].length, \"number:denominator-value\": +t[2]}); break j; }\n\n\t\t/* percentages */\n\t\tif((t=nf.match(/(\\d+)(|\\.\\d+)%/))) { type = \"percentage\"; payload += writextag(\"number:number\", null, {\"number:decimal-places\": t[2] && t.length - 1 || 0, \"number:min-decimal-places\": t[2] && t.length - 1 || 0, \"number:min-integer-digits\": t[1].length }) + \"%\"; break j; }\n\n\t\t/* datetime */\n\t\tvar has_time = false;\n\t\tif([\"y\",\"m\",\"d\"].indexOf(nf[0]) > -1) {\n\t\t\ttype = \"date\";\n\t\t\tk: for(; i < nf.length; ++i) switch((c = nf[i].toLowerCase())) {\n\t\t\t\tcase \"h\": case \"s\": has_time = true; --i; break k;\n\t\t\t\tcase \"m\":\n\t\t\t\t\tl: for(var h = i+1; h < nf.length; ++h) switch(nf[h]) {\n\t\t\t\t\t\tcase \"y\": case \"d\": break l;\n\t\t\t\t\t\tcase \"h\": case \"s\": has_time = true; --i; break k;\n\t\t\t\t\t}\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"y\": case \"d\":\n\t\t\t\t\twhile((nf[++i]||\"\").toLowerCase() == c[0]) c += c[0]; --i;\n\t\t\t\t\tswitch(c) {\n\t\t\t\t\t\tcase \"y\": case \"yy\": payload += \"\"; break;\n\t\t\t\t\t\tcase \"yyy\": case \"yyyy\": payload += ''; break;\n\t\t\t\t\t\tcase \"mmmmm\": console.error(\"ODS has no equivalent of format |mmmmm|\");\n\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\tcase \"m\": case \"mm\": case \"mmm\": case \"mmmm\":\n\t\t\t\t\t\t\tpayload += '= 3 ? \"true\" : \"false\") + '\"/>';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"d\": case \"dd\": payload += ''; break;\n\t\t\t\t\t\tcase \"ddd\": case \"dddd\": payload += ''; break;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase '\"':\n\t\t\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\t\t\tpayload += '' + escapexml(c.slice(1).replace(/\"\"/g, '\"')) + '';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '/': payload += '' + escapexml(c) + ''; break;\n\t\t\t\tdefault: console.error(\"unrecognized character \" + c + \" in ODF format \" + nf);\n\t\t\t}\n\t\t\tif(!has_time) break j;\n\t\t\tnf = nf.slice(i+1); i = 0;\n\t\t}\n\t\tif(nf.match(/^\\[?[hms]/)) {\n\t\t\tif(type == \"number\") type = \"time\";\n\t\t\tif(nf.match(/\\[/)) {\n\t\t\t\tnf = nf.replace(/[\\[\\]]/g, \"\");\n\t\t\t\tnopts['number:truncate-on-overflow'] = \"false\";\n\t\t\t}\n\t\t\tfor(; i < nf.length; ++i) switch((c = nf[i].toLowerCase())) {\n\t\t\t\tcase \"h\": case \"m\": case \"s\":\n\t\t\t\t\twhile((nf[++i]||\"\").toLowerCase() == c[0]) c += c[0]; --i;\n\t\t\t\t\tswitch(c) {\n\t\t\t\t\t\tcase \"h\": case \"hh\": payload += ''; break;\n\t\t\t\t\t\tcase \"m\": case \"mm\": payload += ''; break;\n\t\t\t\t\t\tcase \"s\": case \"ss\":\n\t\t\t\t\t\t\tif(nf[i+1] == \".\") do { c += nf[i+1]; ++i; } while(nf[i+1] == \"0\");\n\t\t\t\t\t\t\tpayload += ''; break;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase '\"':\n\t\t\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\t\t\tpayload += '' + escapexml(c.slice(1).replace(/\"\"/g, '\"')) + '';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '/': payload += '' + escapexml(c) + ''; break;\n\t\t\t\tcase \"a\":\n\t\t\t\t\tif(nf.slice(i, i+3).toLowerCase() == \"a/p\") { payload += ''; i += 2; break; } // Note: ODF does not support A/P\n\t\t\t\t\tif(nf.slice(i, i+5).toLowerCase() == \"am/pm\") { payload += ''; i += 4; break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: console.error(\"unrecognized character \" + c + \" in ODF format \" + nf);\n\t\t\t}\n\t\t\tbreak j;\n\t\t}\n\n\t\t/* currency flag */\n\t\tif(nf.indexOf(/\\$/) > -1) { type = \"currency\"; }\n\n\t\t/* should be in a char loop */\n\t\tif(nf[0] == \"$\") { payload += '$'; nf = nf.slice(1); i = 0; }\n\t\ti = 0; if(nf[i] == '\"') {\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\tif(nf[i+1] == \"*\") {\n\t\t\t\ti++;\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t} else {\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t}\n\t\t\tnf = nf.slice(i+1); i = 0;\n\t\t}\n\n\t\t/* number TODO: interstitial text e.g. 000)000-0000 */\n\t\tvar np = nf.match(/([#0][0#,]*)(\\.[0#]*|)(E[+]?0*|)/i);\n\t\tif(!np || !np[0]) console.error(\"Could not find numeric part of \" + nf);\n\t\telse {\n\t\t\tvar base = np[1].replace(/,/g, \"\");\n\t\t\tpayload += ' -1 ? ' number:grouping=\"true\"' : \"\") +\n\t\t\t\t(np[2] && ' number:decimal-places=\"' + (np[2].length - 1) + '\"' || ' number:decimal-places=\"0\"') +\n\t\t\t\t(np[3] && np[3].indexOf(\"+\") > -1 ? ' number:forced-exponent-sign=\"true\"' : \"\" ) +\n\t\t\t\t(np[3] ? ' number:min-exponent-digits=\"' + np[3].match(/0+/)[0].length + '\"' : \"\" ) +\n\t\t\t\t'>' +\n\t\t\t\t/* TODO: interstitial text placeholders */\n\t\t\t\t'';\n\t\t\ti = np.index + np[0].length;\n\t\t}\n\n\t\t/* residual text */\n\t\tif(nf[i] == '\"') {\n\t\t\tc = \"\";\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t}\n\t}\n\n\tif(!payload) { console.error(\"Could not generate ODS number format for |\" + nf + \"|\"); return \"\"; }\n\treturn writextag(\"number:\" + type + \"-style\", payload, nopts);\n}\n\nfunction write_names_ods(Names, SheetNames, idx) {\n\tvar scoped = Names.filter(function(name) { return name.Sheet == (idx == -1 ? null : idx); });\n\tif(!scoped.length) return \"\";\n\treturn \" \\n\" + scoped.map(function(name) {\n\t\tvar odsref = csf_to_ods_3D(name.Ref);\n\t\treturn \" \" + writextag(\"table:named-range\", null, {\n\t\t\t\"table:name\": name.Name,\n\t\t\t\"table:cell-range-address\": odsref,\n\t\t\t\"table:base-cell-address\": odsref.replace(/[\\.]?[^\\.]*$/, \".$A$1\")\n\t\t});\n\t}).join(\"\\n\") + \"\\n \\n\";\n}\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/ +/g, function($$){return '';})\n\t\t\t.replace(/\\t/g, \"\")\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\n\t};\n\n\tvar null_cell_xml = ' \\n';\n\tvar covered_cell_xml = ' \\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*/, opts, nfs)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array*/ = [];\n\t\to.push(' \\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push(' \\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[\"!data\"][R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&\")});\n\t\t\t\t}\n\t\t\t\tif(nfs[cell.z]) ct[\"table:style-name\"] = \"ce\" + nfs[cell.z].slice(1);\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push(' \\n');\n\t\t}\n\t\tif((wb.Workbook||{}).Names) o.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, i));\n\t\to.push(' \\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array*/, wb) {\n\t\to.push(' \\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* number formats, table cells, text */\n\t\tvar nfs = {};\n\t\tvar nfi = 69;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tvar dense = (ws[\"!data\"] != null);\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tfor(var R = 0; R <= range.e.r; ++R) for(var C = 0; C <= range.e.c; ++C) {\n\t\t\t\tvar c = dense ? (ws[\"!data\"][R]||[])[C] : ws[encode_cell({r:R,c:C})];\n\t\t\t\tif(!c || !c.z || c.z.toLowerCase() == \"general\") continue;\n\t\t\t\tif(!nfs[c.z]) {\n\t\t\t\t\tvar out = write_number_format_ods(c.z, \"N\" + nfi);\n\t\t\t\t\tif(out) { nfs[c.z] = \"N\" + nfi; ++nfi; o.push(out + \"\\n\"); }\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\to.push(' \\n');\n\t\tkeys(nfs).forEach(function(nf) {\n\t\t\to.push('\\n');\n\t\t});\n\n\t\t/* page-layout */\n\n\t\to.push(' \\n');\n\t\treturn nfs;\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version': \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('\\n');\n\t\t\to.push(write_meta_ods().replace(//, \"\").replace(/<\\/office:document-meta>/, \"\") + \"\\n\");\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('\\n');\n\t\t// o.push(' \\n');\n\t\tvar nfs = write_automatic_styles_ods(o, wb);\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(((wb.Workbook||{}).WBProps||{}).date1904) o.push(' \\n \\n \\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts, nfs));\n\t\tif((wb.Workbook||{}).Names) o.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, -1));\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(opts.bookType == \"fods\") o.push('');\n\t\telse o.push('');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nvar subarray = function() {\n try {\n if (typeof Uint8Array == \"undefined\")\n return \"slice\";\n if (typeof Uint8Array.prototype.subarray == \"undefined\")\n return \"slice\";\n if (typeof Buffer !== \"undefined\") {\n if (typeof Buffer.prototype.subarray == \"undefined\")\n return \"slice\";\n if ((typeof Buffer.from == \"function\" ? Buffer.from([72, 62]) : new Buffer([72, 62])) instanceof Uint8Array)\n return \"subarray\";\n return \"slice\";\n }\n return \"subarray\";\n } catch (e) {\n return \"slice\";\n }\n}();\nfunction u8_to_dataview(array) {\n return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8concat(u8a) {\n var len = 0;\n for (var i = 0; i < u8a.length; ++i)\n len += u8a[i].length;\n var out = new Uint8Array(len);\n var off = 0;\n for (i = 0; i < u8a.length; ++i) {\n var u8 = u8a[i], L = u8.length;\n if (L < 250) {\n for (var j = 0; j < L; ++j)\n out[off++] = u8[j];\n } else {\n out.set(u8, off);\n off += L;\n }\n }\n return out;\n}\nfunction popcnt(x) {\n x -= x >> 1 & 1431655765;\n x = (x & 858993459) + (x >> 2 & 858993459);\n return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n var mantissa = buf[offset + 14] & 1;\n for (var j = offset + 13; j >= offset; --j)\n mantissa = mantissa * 256 + buf[j];\n return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 16;\n var mantissa = value / Math.pow(10, exp - 6176);\n buf[offset + 15] |= exp >> 7;\n buf[offset + 14] |= (exp & 127) << 1;\n for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n buf[offset + i] = mantissa & 255;\n buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n var l = ptr.l;\n var usz = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n usz |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 28);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 35);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 42);\n ++l;\n if (buf[l++] < 128)\n break varint;\n }\n ptr.l = l;\n return usz;\n}\nfunction write_varint49(v) {\n var usz = new Uint8Array(7);\n usz[0] = v & 127;\n var L = 1;\n sz:\n if (v > 127) {\n usz[L - 1] |= 128;\n usz[L] = v >> 7 & 127;\n ++L;\n if (v <= 16383)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 14 & 127;\n ++L;\n if (v <= 2097151)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 21 & 127;\n ++L;\n if (v <= 268435455)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 256 >>> 21 & 127;\n ++L;\n if (v <= 34359738367)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 65536 >>> 21 & 127;\n ++L;\n if (v <= 4398046511103)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 16777216 >>> 21 & 127;\n ++L;\n }\n return usz[subarray](0, L);\n}\nfunction parse_packed_varints(buf) {\n var ptr = { l: 0 };\n var out = [];\n while (ptr.l < buf.length)\n out.push(parse_varint49(buf, ptr));\n return out;\n}\nfunction write_packed_varints(nums) {\n return u8concat(nums.map(function(x) {\n return write_varint49(x);\n }));\n}\nfunction varint_to_i32(buf) {\n var l = 0, i32 = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n i32 |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 28;\n }\n return i32;\n}\nfunction varint_to_u64(buf) {\n var l = 0, lo = buf[l] & 127, hi = 0;\n varint:\n if (buf[l++] >= 128) {\n lo |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n lo |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n lo |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n lo |= (buf[l] & 127) << 28;\n hi = buf[l] >> 4 & 7;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 3;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 10;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 17;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 24;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 31;\n }\n return [lo >>> 0, hi >>> 0];\n}\nfunction parse_shallow(buf) {\n var out = [], ptr = { l: 0 };\n while (ptr.l < buf.length) {\n var off = ptr.l;\n var num = parse_varint49(buf, ptr);\n var type = num & 7;\n num = num / 8 | 0;\n var data;\n var l = ptr.l;\n switch (type) {\n case 0:\n {\n while (buf[l++] >= 128)\n ;\n data = buf[subarray](ptr.l, l);\n ptr.l = l;\n }\n break;\n case 1:\n {\n data = buf[subarray](l, l + 8);\n ptr.l = l + 8;\n }\n break;\n case 2:\n {\n var len = parse_varint49(buf, ptr);\n data = buf[subarray](ptr.l, ptr.l + len);\n ptr.l += len;\n }\n break;\n case 5:\n {\n data = buf[subarray](l, l + 4);\n ptr.l = l + 4;\n }\n break;\n default:\n throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n }\n var v = { data: data, type: type };\n if (out[num] == null)\n out[num] = [];\n out[num].push(v);\n }\n return out;\n}\nfunction write_shallow(proto) {\n var out = [];\n proto.forEach(function(field, idx) {\n if (idx == 0)\n return;\n field.forEach(function(item) {\n if (!item.data)\n return;\n out.push(write_varint49(idx * 8 + item.type));\n if (item.type == 2)\n out.push(write_varint49(item.data.length));\n out.push(item.data);\n });\n });\n return u8concat(out);\n}\nfunction mappa(data, cb) {\n return (data == null ? void 0 : data.map(function(d) {\n return cb(d.data);\n })) || [];\n}\nfunction parse_iwa_file(buf) {\n var _a;\n var out = [], ptr = { l: 0 };\n while (ptr.l < buf.length) {\n var len = parse_varint49(buf, ptr);\n var ai = parse_shallow(buf[subarray](ptr.l, ptr.l + len));\n ptr.l += len;\n var res = {\n id: varint_to_i32(ai[1][0].data),\n messages: []\n };\n ai[2].forEach(function(b) {\n var mi = parse_shallow(b.data);\n var fl = varint_to_i32(mi[3][0].data);\n res.messages.push({\n meta: mi,\n data: buf[subarray](ptr.l, ptr.l + fl)\n });\n ptr.l += fl;\n });\n if ((_a = ai[3]) == null ? void 0 : _a[0])\n res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n out.push(res);\n }\n return out;\n}\nfunction write_iwa_file(ias) {\n var bufs = [];\n ias.forEach(function(ia) {\n var ai = [\n [],\n [{ data: write_varint49(ia.id), type: 0 }],\n []\n ];\n if (ia.merge != null)\n ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n var midata = [];\n ia.messages.forEach(function(mi) {\n midata.push(mi.data);\n mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n });\n var aipayload = write_shallow(ai);\n bufs.push(write_varint49(aipayload.length));\n bufs.push(aipayload);\n midata.forEach(function(mid) {\n return bufs.push(mid);\n });\n });\n return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n if (type != 0)\n throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n var ptr = { l: 0 };\n var usz = parse_varint49(buf, ptr);\n var chunks = [];\n var l = ptr.l;\n while (l < buf.length) {\n var tag = buf[l] & 3;\n if (tag == 0) {\n var len = buf[l++] >> 2;\n if (len < 60)\n ++len;\n else {\n var c = len - 59;\n len = buf[l];\n if (c > 1)\n len |= buf[l + 1] << 8;\n if (c > 2)\n len |= buf[l + 2] << 16;\n if (c > 3)\n len |= buf[l + 3] << 24;\n len >>>= 0;\n len++;\n l += c;\n }\n chunks.push(buf[subarray](l, l + len));\n l += len;\n continue;\n } else {\n var offset = 0, length = 0;\n if (tag == 1) {\n length = (buf[l] >> 2 & 7) + 4;\n offset = (buf[l++] & 224) << 3;\n offset |= buf[l++];\n } else {\n length = (buf[l++] >> 2) + 1;\n if (tag == 2) {\n offset = buf[l] | buf[l + 1] << 8;\n l += 2;\n } else {\n offset = (buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16 | buf[l + 3] << 24) >>> 0;\n l += 4;\n }\n }\n if (offset == 0)\n throw new Error(\"Invalid offset 0\");\n var j = chunks.length - 1, off = offset;\n while (j >= 0 && off >= chunks[j].length) {\n off -= chunks[j].length;\n --j;\n }\n if (j < 0) {\n if (off == 0)\n off = chunks[j = 0].length;\n else\n throw new Error(\"Invalid offset beyond length\");\n }\n if (length < off)\n chunks.push(chunks[j][subarray](chunks[j].length - off, chunks[j].length - off + length));\n else {\n if (off > 0) {\n chunks.push(chunks[j][subarray](chunks[j].length - off));\n length -= off;\n }\n ++j;\n while (length >= chunks[j].length) {\n chunks.push(chunks[j]);\n length -= chunks[j].length;\n ++j;\n }\n if (length)\n chunks.push(chunks[j][subarray](0, length));\n }\n if (chunks.length > 25)\n chunks = [u8concat(chunks)];\n }\n }\n var clen = 0;\n for (var u8i = 0; u8i < chunks.length; ++u8i)\n clen += chunks[u8i].length;\n if (clen != usz)\n throw new Error(\"Unexpected length: \".concat(clen, \" != \").concat(usz));\n return chunks;\n}\nfunction decompress_iwa_file(buf) {\n if (Array.isArray(buf))\n buf = new Uint8Array(buf);\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var t = buf[l++];\n var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n l += 3;\n out.push.apply(out, parse_snappy_chunk(t, buf[subarray](l, l + len)));\n l += len;\n }\n if (l !== buf.length)\n throw new Error(\"data is not a valid framed stream!\");\n return out.length == 1 ? out[0] : u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var c = Math.min(buf.length - l, 268435455);\n var frame = new Uint8Array(4);\n out.push(frame);\n var usz = write_varint49(c);\n var L = usz.length;\n out.push(usz);\n if (c <= 60) {\n L++;\n out.push(new Uint8Array([c - 1 << 2]));\n } else if (c <= 256) {\n L += 2;\n out.push(new Uint8Array([240, c - 1 & 255]));\n } else if (c <= 65536) {\n L += 3;\n out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n } else if (c <= 16777216) {\n L += 4;\n out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n } else if (c <= 4294967296) {\n L += 5;\n out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n }\n out.push(buf[subarray](l, l + c));\n L += c;\n frame[0] = 0;\n frame[1] = L & 255;\n frame[2] = L >> 8 & 255;\n frame[3] = L >> 16 & 255;\n l += c;\n }\n return u8concat(out);\n}\nvar numbers_lut_new = function() {\n return { sst: [], rsst: [], ofmt: [], nfmt: [] };\n};\nfunction numbers_format_cell(cell, t, flags, ofmt, nfmt) {\n var _a, _b, _c, _d;\n var ctype = t & 255, ver = t >> 8;\n var fmt = ver >= 5 ? nfmt : ofmt;\n dur:\n if (flags & (ver > 4 ? 8 : 4) && cell.t == \"n\" && ctype == 7) {\n var dstyle = ((_a = fmt[7]) == null ? void 0 : _a[0]) ? varint_to_i32(fmt[7][0].data) : -1;\n if (dstyle == -1)\n break dur;\n var dmin = ((_b = fmt[15]) == null ? void 0 : _b[0]) ? varint_to_i32(fmt[15][0].data) : -1;\n var dmax = ((_c = fmt[16]) == null ? void 0 : _c[0]) ? varint_to_i32(fmt[16][0].data) : -1;\n var auto = ((_d = fmt[40]) == null ? void 0 : _d[0]) ? varint_to_i32(fmt[40][0].data) : -1;\n var d = cell.v, dd = d;\n autodur:\n if (auto) {\n if (d == 0) {\n dmin = dmax = 2;\n break autodur;\n }\n if (d >= 604800)\n dmin = 1;\n else if (d >= 86400)\n dmin = 2;\n else if (d >= 3600)\n dmin = 4;\n else if (d >= 60)\n dmin = 8;\n else if (d >= 1)\n dmin = 16;\n else\n dmin = 32;\n if (Math.floor(d) != d)\n dmax = 32;\n else if (d % 60)\n dmax = 16;\n else if (d % 3600)\n dmax = 8;\n else if (d % 86400)\n dmax = 4;\n else if (d % 604800)\n dmax = 2;\n if (dmax < dmin)\n dmax = dmin;\n }\n if (dmin == -1 || dmax == -1)\n break dur;\n var dstr = [], zstr = [];\n if (dmin == 1) {\n dd = d / 604800;\n if (dmax == 1) {\n zstr.push('d\"d\"');\n } else {\n dd |= 0;\n d -= 604800 * dd;\n }\n dstr.push(dd + (dstyle == 2 ? \" week\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"w\" : \"\"));\n }\n if (dmin <= 2 && dmax >= 2) {\n dd = d / 86400;\n if (dmax > 2) {\n dd |= 0;\n d -= 86400 * dd;\n }\n zstr.push('d\"d\"');\n dstr.push(dd + (dstyle == 2 ? \" day\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"d\" : \"\"));\n }\n if (dmin <= 4 && dmax >= 4) {\n dd = d / 3600;\n if (dmax > 4) {\n dd |= 0;\n d -= 3600 * dd;\n }\n zstr.push((dmin >= 4 ? \"[h]\" : \"h\") + '\"h\"');\n dstr.push(dd + (dstyle == 2 ? \" hour\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"h\" : \"\"));\n }\n if (dmin <= 8 && dmax >= 8) {\n dd = d / 60;\n if (dmax > 8) {\n dd |= 0;\n d -= 60 * dd;\n }\n zstr.push((dmin >= 8 ? \"[m]\" : \"m\") + '\"m\"');\n if (dstyle == 0)\n dstr.push((dmin == 8 && dmax == 8 || dd >= 10 ? \"\" : \"0\") + dd);\n else\n dstr.push(dd + (dstyle == 2 ? \" minute\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"m\" : \"\"));\n }\n if (dmin <= 16 && dmax >= 16) {\n dd = d;\n if (dmax > 16) {\n dd |= 0;\n d -= dd;\n }\n zstr.push((dmin >= 16 ? \"[s]\" : \"s\") + '\"s\"');\n if (dstyle == 0)\n dstr.push((dmax == 16 && dmin == 16 || dd >= 10 ? \"\" : \"0\") + dd);\n else\n dstr.push(dd + (dstyle == 2 ? \" second\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"s\" : \"\"));\n }\n if (dmax >= 32) {\n dd = Math.round(1e3 * d);\n if (dmin < 32)\n zstr.push('.000\"ms\"');\n if (dstyle == 0)\n dstr.push((dd >= 100 ? \"\" : dd >= 10 ? \"0\" : \"00\") + dd);\n else\n dstr.push(dd + (dstyle == 2 ? \" millisecond\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"ms\" : \"\"));\n }\n cell.w = dstr.join(dstyle == 0 ? \":\" : \" \");\n cell.z = zstr.join(dstyle == 0 ? '\":\"' : \" \");\n if (dstyle == 0)\n cell.w = cell.w.replace(/:(\\d\\d\\d)$/, \".$1\");\n }\n}\nfunction parse_old_storage(buf, lut, v) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var ridx = -1, sidx = -1, zidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n var doff = v > 1 ? 12 : 8;\n if (flags & 2) {\n zidx = dv.getUint32(doff, true);\n doff += 4;\n }\n doff += popcnt(flags & (v > 1 ? 3468 : 396)) * 4;\n if (flags & 512) {\n ridx = dv.getUint32(doff, true);\n doff += 4;\n }\n doff += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n if (flags & 16) {\n sidx = dv.getUint32(doff, true);\n doff += 4;\n }\n if (flags & 32) {\n ieee = dv.getFloat64(doff, true);\n doff += 8;\n }\n if (flags & 64) {\n dt.setTime(dt.getTime() + dv.getFloat64(doff, true) * 1e3);\n doff += 8;\n }\n if (v > 1) {\n flags = dv.getUint32(8, true) >>> 16;\n if (flags & 255) {\n if (zidx == -1)\n zidx = dv.getUint32(doff, true);\n doff += 4;\n }\n }\n var ret;\n var t = buf[v >= 4 ? 1 : 2];\n switch (t) {\n case 0:\n return void 0;\n case 2:\n ret = { t: \"n\", v: ieee };\n break;\n case 3:\n ret = { t: \"s\", v: lut.sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: lut.rsst[ridx] };\n else\n throw new Error(\"Unsupported cell type \".concat(buf[subarray](0, 4)));\n }\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[subarray](0, 4)));\n }\n if (zidx > -1)\n numbers_format_cell(ret, t | v << 8, flags, lut.ofmt[zidx], lut.nfmt[zidx]);\n if (t == 7)\n ret.v /= 86400;\n return ret;\n}\nfunction parse_new_storage(buf, lut) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var fields = dv.getUint32(8, true);\n var doff = 12;\n var ridx = -1, sidx = -1, zidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n if (fields & 1) {\n d128 = readDecimal128LE(buf, doff);\n doff += 16;\n }\n if (fields & 2) {\n ieee = dv.getFloat64(doff, true);\n doff += 8;\n }\n if (fields & 4) {\n dt.setTime(dt.getTime() + dv.getFloat64(doff, true) * 1e3);\n doff += 8;\n }\n if (fields & 8) {\n sidx = dv.getUint32(doff, true);\n doff += 4;\n }\n if (fields & 16) {\n ridx = dv.getUint32(doff, true);\n doff += 4;\n }\n var ret;\n var t = buf[1];\n switch (t) {\n case 0:\n return void 0;\n case 2:\n ret = { t: \"n\", v: d128 };\n break;\n case 3:\n ret = { t: \"s\", v: lut.sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n ret = { t: \"s\", v: lut.rsst[ridx] };\n break;\n case 10:\n ret = { t: \"n\", v: d128 };\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(fields & 31, \" : \").concat(buf[subarray](0, 4)));\n }\n doff += popcnt(fields & 8160) * 4;\n if (fields & 516096) {\n if (zidx == -1)\n zidx = dv.getUint32(doff, true);\n doff += 4;\n }\n if (zidx > -1)\n numbers_format_cell(ret, t | 5 << 8, fields >> 13, lut.ofmt[zidx], lut.nfmt[zidx]);\n if (t == 7)\n ret.v /= 86400;\n return ret;\n}\nfunction write_new_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 5;\n switch (cell.t) {\n case \"n\":\n out[1] = 2;\n writeDecimal128LE(out, l, cell.v);\n flags |= 1;\n l += 16;\n break;\n case \"b\":\n out[1] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 2;\n l += 8;\n break;\n case \"s\":\n var s = cell.v == null ? \"\" : String(cell.v);\n var isst = sst.indexOf(s);\n if (isst == -1)\n sst[isst = sst.length] = s;\n out[1] = 3;\n dv.setUint32(l, isst, true);\n flags |= 8;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out[subarray](0, l);\n}\nfunction write_old_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 4;\n switch (cell.t) {\n case \"n\":\n out[2] = 2;\n dv.setFloat64(l, cell.v, true);\n flags |= 32;\n l += 8;\n break;\n case \"b\":\n out[2] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 32;\n l += 8;\n break;\n case \"s\":\n var s = cell.v == null ? \"\" : String(cell.v);\n var isst = sst.indexOf(s);\n if (isst == -1)\n sst[isst = sst.length] = s;\n out[2] = 3;\n dv.setUint32(l, isst, true);\n flags |= 16;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out[subarray](0, l);\n}\nfunction parse_cell_storage(buf, lut) {\n switch (buf[0]) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n return parse_old_storage(buf, lut, buf[0]);\n case 5:\n return parse_new_storage(buf, lut);\n default:\n throw new Error(\"Unsupported payload version \".concat(buf[0]));\n }\n}\nfunction parse_TSP_Reference(buf) {\n var pb = parse_shallow(buf);\n return varint_to_i32(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n return write_shallow([\n [],\n [{ type: 0, data: write_varint49(idx) }]\n ]);\n}\nfunction numbers_add_oref(iwa, ref) {\n var _a;\n var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];\n var orefidx = orefs.indexOf(ref);\n if (orefidx == -1) {\n orefs.push(ref);\n iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];\n }\n}\nfunction numbers_del_oref(iwa, ref) {\n var _a;\n var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];\n iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs.filter(function(r) {\n return r != ref;\n })) }];\n}\nfunction parse_TST_TableDataList(M, root) {\n var pb = parse_shallow(root.data);\n var type = varint_to_i32(pb[1][0].data);\n var entries = pb[3];\n var data = [];\n (entries || []).forEach(function(entry) {\n var le = parse_shallow(entry.data);\n if (!le[1])\n return;\n var key = varint_to_i32(le[1][0].data) >>> 0;\n switch (type) {\n case 1:\n data[key] = u8str(le[3][0].data);\n break;\n case 8:\n {\n var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n var rtp = parse_shallow(rt.data);\n var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n var mtype = varint_to_i32(rtpref.meta[1][0].data);\n if (mtype != 2001)\n throw new Error(\"2000 unexpected reference to \".concat(mtype));\n var tswpsa = parse_shallow(rtpref.data);\n data[key] = tswpsa[3].map(function(x) {\n return u8str(x.data);\n }).join(\"\");\n }\n break;\n case 2:\n data[key] = parse_shallow(le[6][0].data);\n break;\n default:\n throw type;\n }\n });\n return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n var pb = parse_shallow(u8);\n var R = varint_to_i32(pb[1][0].data) >>> 0;\n var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n var used_storage_u8, used_storage;\n if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n } else\n throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n var width = wide_offsets ? 4 : 1;\n var used_storage_offsets = u8_to_dataview(used_storage_u8);\n var offsets = [];\n for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n var off = used_storage_offsets.getUint16(C * 2, true);\n if (off < 65535)\n offsets.push([C, off]);\n }\n if (offsets.length != cnt)\n throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n var cells = [];\n for (C = 0; C < offsets.length - 1; ++C)\n cells[offsets[C][0]] = used_storage[subarray](offsets[C][1] * width, offsets[C + 1][1] * width);\n if (offsets.length >= 1)\n cells[offsets[offsets.length - 1][0]] = used_storage[subarray](offsets[offsets.length - 1][1] * width);\n return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var storage = -1;\n if ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) {\n if (varint_to_i32(pb[7][0].data) >>> 0)\n storage = 1;\n else\n storage = 0;\n }\n var ri = mappa(pb[5], function(u8) {\n return parse_TST_TileRowInfo(u8, storage);\n });\n return {\n nrows: varint_to_i32(pb[4][0].data) >>> 0,\n data: ri.reduce(function(acc, x) {\n if (!acc[x.R])\n acc[x.R] = [];\n x.cells.forEach(function(cell, C) {\n if (acc[x.R][C])\n throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n acc[x.R][C] = cell;\n });\n return acc;\n }, [])\n };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n var _a, _b, _c, _d, _e, _f;\n var pb = parse_shallow(root.data);\n var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n if (range.e.r < 0)\n throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n if (range.e.c < 0)\n throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n ws[\"!ref\"] = encode_range(range);\n var dense = ws[\"!data\"] != null, dws = ws;\n var store = parse_shallow(pb[4][0].data);\n var lut = numbers_lut_new();\n if ((_a = store[4]) == null ? void 0 : _a[0])\n lut.sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n if ((_b = store[11]) == null ? void 0 : _b[0])\n lut.ofmt = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[11][0].data)][0]);\n if ((_c = store[17]) == null ? void 0 : _c[0])\n lut.rsst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]);\n if ((_d = store[22]) == null ? void 0 : _d[0])\n lut.nfmt = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[22][0].data)][0]);\n var tile = parse_shallow(store[3][0].data);\n var _R = 0;\n tile[1].forEach(function(t) {\n var tl = parse_shallow(t.data);\n var ref2 = M[parse_TSP_Reference(tl[2][0].data)][0];\n var mtype2 = varint_to_i32(ref2.meta[1][0].data);\n if (mtype2 != 6002)\n throw new Error(\"6001 unexpected reference to \".concat(mtype2));\n var _tile = parse_TST_Tile(M, ref2);\n _tile.data.forEach(function(row, R) {\n row.forEach(function(buf, C) {\n var res = parse_cell_storage(buf, lut);\n if (res) {\n if (dense) {\n if (!dws[\"!data\"][_R + R])\n dws[\"!data\"][_R + R] = [];\n dws[\"!data\"][_R + R][C] = res;\n } else {\n ws[encode_col(C) + encode_row(_R + R)] = res;\n }\n }\n });\n });\n _R += _tile.nrows;\n });\n if ((_e = store[13]) == null ? void 0 : _e[0]) {\n var ref = M[parse_TSP_Reference(store[13][0].data)][0];\n var mtype = varint_to_i32(ref.meta[1][0].data);\n if (mtype != 6144)\n throw new Error(\"Expected merge type 6144, found \".concat(mtype));\n ws[\"!merges\"] = (_f = parse_shallow(ref.data)) == null ? void 0 : _f[1].map(function(pi) {\n var merge = parse_shallow(pi.data);\n var origin = u8_to_dataview(parse_shallow(merge[1][0].data)[1][0].data), size = u8_to_dataview(parse_shallow(merge[2][0].data)[1][0].data);\n return {\n s: { r: origin.getUint16(0, true), c: origin.getUint16(2, true) },\n e: {\n r: origin.getUint16(0, true) + size.getUint16(0, true) - 1,\n c: origin.getUint16(2, true) + size.getUint16(2, true) - 1\n }\n };\n });\n }\n}\nfunction parse_TST_TableInfoArchive(M, root, opts) {\n var pb = parse_shallow(root.data);\n var out = { \"!ref\": \"A1\" };\n if (opts == null ? void 0 : opts.dense)\n out[\"!data\"] = [];\n var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n if (mtype != 6001)\n throw new Error(\"6000 unexpected reference to \".concat(mtype));\n parse_TST_TableModelArchive(M, tableref[0], out);\n return out;\n}\nfunction parse_TN_SheetArchive(M, root, opts) {\n var _a;\n var pb = parse_shallow(root.data);\n var out = {\n name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n sheets: []\n };\n var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n shapeoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 6e3)\n out.sheets.push(parse_TST_TableInfoArchive(M, m, opts));\n });\n });\n return out;\n}\nfunction parse_TN_DocumentArchive(M, root, opts) {\n var _a;\n var out = book_new();\n var pb = parse_shallow(root.data);\n if ((_a = pb[2]) == null ? void 0 : _a[0])\n throw new Error(\"Keynote presentations are not supported\");\n var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n sheetoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 2) {\n var root2 = parse_TN_SheetArchive(M, m, opts);\n root2.sheets.forEach(function(sheet, idx) {\n book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n });\n }\n });\n });\n if (out.SheetNames.length == 0)\n throw new Error(\"Empty NUMBERS file\");\n out.bookType = \"numbers\";\n return out;\n}\nfunction parse_numbers_iwa(cfb, opts) {\n var _a, _b, _c, _d, _e, _f, _g;\n var M = {}, indices = [];\n cfb.FullPaths.forEach(function(p) {\n if (p.match(/\\.iwpv2/))\n throw new Error(\"Unsupported password protection\");\n });\n cfb.FileIndex.forEach(function(s) {\n if (!s.name.match(/\\.iwa$/))\n return;\n if (s.content[0] != 0)\n return;\n var o;\n try {\n o = decompress_iwa_file(s.content);\n } catch (e) {\n return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n }\n var packets;\n try {\n packets = parse_iwa_file(o);\n } catch (e) {\n return console.log(\"## \" + (e.message || e));\n }\n packets.forEach(function(packet) {\n M[packet.id] = packet.messages;\n indices.push(packet.id);\n });\n });\n if (!indices.length)\n throw new Error(\"File has no messages\");\n if (((_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0].meta) == null ? void 0 : _b[1]) == null ? void 0 : _c[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)\n throw new Error(\"Pages documents are not supported\");\n var docroot = ((_g = (_f = (_e = (_d = M == null ? void 0 : M[1]) == null ? void 0 : _d[0]) == null ? void 0 : _e.meta) == null ? void 0 : _f[1]) == null ? void 0 : _g[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n if (!docroot)\n indices.forEach(function(idx) {\n M[idx].forEach(function(iwam) {\n var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n if (mtype == 1) {\n if (!docroot)\n docroot = iwam;\n else\n throw new Error(\"Document has multiple roots\");\n }\n });\n });\n if (!docroot)\n throw new Error(\"Cannot find Document root\");\n return parse_TN_DocumentArchive(M, docroot, opts);\n}\nfunction write_TST_TileRowInfo(data, SST, wide) {\n var _a, _b;\n var tri = [\n [],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 2, data: new Uint8Array([]) }],\n [{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {\n return 255;\n })) }],\n [{ type: 0, data: write_varint49(5) }],\n [{ type: 2, data: new Uint8Array([]) }],\n [{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {\n return 255;\n })) }],\n [{ type: 0, data: write_varint49(1) }]\n ];\n if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n throw \"Mutation only works on post-BNC storages!\";\n var cnt = 0;\n if (tri[7][0].data.length < 2 * data.length) {\n var new_7 = new Uint8Array(2 * data.length);\n new_7.set(tri[7][0].data);\n tri[7][0].data = new_7;\n }\n if (tri[4][0].data.length < 2 * data.length) {\n var new_4 = new Uint8Array(2 * data.length);\n new_4.set(tri[4][0].data);\n tri[4][0].data = new_4;\n }\n var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n var width = wide ? 4 : 1;\n for (var C = 0; C < data.length; ++C) {\n if (data[C] == null) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535);\n continue;\n }\n dv.setUint16(C * 2, last_offset / width, true);\n _dv.setUint16(C * 2, _last_offset / width, true);\n var celload, _celload;\n switch (typeof data[C]) {\n case \"string\":\n celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n break;\n case \"number\":\n celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n break;\n case \"boolean\":\n celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n break;\n default:\n if (data[C] instanceof Date) {\n celload = write_new_storage({ t: \"s\", v: data[C].toISOString() }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C].toISOString() }, SST);\n break;\n }\n throw new Error(\"Unsupported value \" + data[C]);\n }\n cell_storage.push(celload);\n last_offset += celload.length;\n {\n _cell_storage.push(_celload);\n _last_offset += _celload.length;\n }\n ++cnt;\n }\n tri[2][0].data = write_varint49(cnt);\n tri[5][0].data = write_varint49(5);\n for (; C < tri[7][0].data.length / 2; ++C) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535, true);\n }\n tri[6][0].data = u8concat(cell_storage);\n tri[3][0].data = u8concat(_cell_storage);\n tri[8] = [{ type: 0, data: write_varint49(wide ? 1 : 0) }];\n return tri;\n}\nfunction write_iwam(type, payload) {\n return {\n meta: [\n [],\n [{ type: 0, data: write_varint49(type) }]\n ],\n data: payload\n };\n}\nfunction get_unique_msgid(dep, dependents) {\n if (!dependents.last)\n dependents.last = 927262;\n for (var i = dependents.last; i < 2e6; ++i)\n if (!dependents[i]) {\n dependents[dependents.last = i] = dep;\n return i;\n }\n throw new Error(\"Too many messages\");\n}\nfunction build_numbers_deps(cfb) {\n var dependents = {};\n var indices = [];\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (fi.type != 2)\n return;\n if (!fi.name.match(/\\.iwa/))\n return;\n if (fi.content[0] != 0)\n return;\n parse_iwa_file(decompress_iwa_file(fi.content)).forEach(function(packet) {\n indices.push(packet.id);\n dependents[packet.id] = { deps: [], location: fp, type: varint_to_i32(packet.messages[0].meta[1][0].data) };\n });\n });\n cfb.FileIndex.forEach(function(fi) {\n if (!fi.name.match(/\\.iwa/))\n return;\n if (fi.content[0] != 0)\n return;\n parse_iwa_file(decompress_iwa_file(fi.content)).forEach(function(ia) {\n ia.messages.forEach(function(mess) {\n [5, 6].forEach(function(f) {\n if (!mess.meta[f])\n return;\n mess.meta[f].forEach(function(x) {\n dependents[ia.id].deps.push(varint_to_i32(x.data));\n });\n });\n });\n });\n });\n return dependents;\n}\nfunction write_numbers_iwa(wb, opts) {\n if (!opts || !opts.numbers)\n throw new Error(\"Must pass a `numbers` option -- check the README\");\n var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n var deps = build_numbers_deps(cfb);\n var docroot = numbers_iwa_find(cfb, deps, 1);\n if (docroot == null)\n throw \"Could not find message \".concat(1, \" in Numbers template\");\n var sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);\n if (sheetrefs.length > 1)\n throw new Error(\"Template NUMBERS file must have exactly one sheet\");\n wb.SheetNames.forEach(function(name, idx) {\n if (idx >= 1) {\n numbers_add_ws(cfb, deps, idx + 1);\n docroot = numbers_iwa_find(cfb, deps, 1);\n sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);\n }\n write_numbers_ws(cfb, deps, wb.Sheets[name], name, idx, sheetrefs[idx]);\n });\n return cfb;\n}\nfunction numbers_iwa_doit(cfb, deps, id, cb) {\n var entry = CFB.find(cfb, deps[id].location);\n if (!entry)\n throw \"Could not find \".concat(deps[id].location, \" in Numbers template\");\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var ainfo = x.find(function(packet) {\n return packet.id == id;\n });\n cb(ainfo, x);\n entry.content = compress_iwa_file(write_iwa_file(x));\n entry.size = entry.content.length;\n}\nfunction numbers_iwa_find(cfb, deps, id) {\n var entry = CFB.find(cfb, deps[id].location);\n if (!entry)\n throw \"Could not find \".concat(deps[id].location, \" in Numbers template\");\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var ainfo = x.find(function(packet) {\n return packet.id == id;\n });\n return ainfo;\n}\nfunction numbers_add_ws(cfb, deps, wsidx) {\n var sheetref = -1, newsheetref = -1;\n var remap = {};\n numbers_iwa_doit(cfb, deps, 1, function(docroot, arch) {\n var doc = parse_shallow(docroot.messages[0].data);\n sheetref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n newsheetref = get_unique_msgid({ deps: [1], location: deps[sheetref].location, type: 2 }, deps);\n remap[sheetref] = newsheetref;\n numbers_add_oref(docroot, newsheetref);\n doc[1].push({ type: 2, data: write_TSP_Reference(newsheetref) });\n var sheet = numbers_iwa_find(cfb, deps, sheetref);\n sheet.id = newsheetref;\n if (deps[1].location == deps[newsheetref].location)\n arch.push(sheet);\n else\n numbers_iwa_doit(cfb, deps, newsheetref, function(_, x) {\n return x.push(sheet);\n });\n docroot.messages[0].data = write_shallow(doc);\n });\n var tiaref = -1;\n numbers_iwa_doit(cfb, deps, newsheetref, function(sheetroot, arch) {\n var sa = parse_shallow(sheetroot.messages[0].data);\n for (var i = 3; i <= 69; ++i)\n delete sa[i];\n var drawables = mappa(sa[2], parse_TSP_Reference);\n drawables.forEach(function(n) {\n return numbers_del_oref(sheetroot, n);\n });\n tiaref = get_unique_msgid({ deps: [newsheetref], location: deps[drawables[0]].location, type: deps[drawables[0]].type }, deps);\n numbers_add_oref(sheetroot, tiaref);\n remap[drawables[0]] = tiaref;\n sa[2] = [{ type: 2, data: write_TSP_Reference(tiaref) }];\n var tia = numbers_iwa_find(cfb, deps, drawables[0]);\n tia.id = tiaref;\n if (deps[drawables[0]].location == deps[newsheetref].location)\n arch.push(tia);\n else {\n var loc2 = deps[newsheetref].location;\n loc2 = loc2.replace(/^Root Entry\\//, \"\");\n loc2 = loc2.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc2;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc2)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(tiaref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_iwa_doit(cfb, deps, tiaref, function(_, x) {\n return x.push(tia);\n });\n }\n sheetroot.messages[0].data = write_shallow(sa);\n });\n var tmaref = -1;\n numbers_iwa_doit(cfb, deps, tiaref, function(tiaroot, arch) {\n var tia = parse_shallow(tiaroot.messages[0].data);\n var da = parse_shallow(tia[1][0].data);\n for (var i = 3; i <= 69; ++i)\n delete da[i];\n var dap = parse_TSP_Reference(da[2][0].data);\n da[2][0].data = write_TSP_Reference(remap[dap]);\n tia[1][0].data = write_shallow(da);\n var oldtmaref = parse_TSP_Reference(tia[2][0].data);\n numbers_del_oref(tiaroot, oldtmaref);\n tmaref = get_unique_msgid({ deps: [tiaref], location: deps[oldtmaref].location, type: deps[oldtmaref].type }, deps);\n numbers_add_oref(tiaroot, tmaref);\n remap[oldtmaref] = tmaref;\n tia[2][0].data = write_TSP_Reference(tmaref);\n var tma = numbers_iwa_find(cfb, deps, oldtmaref);\n tma.id = tmaref;\n if (deps[tiaref].location == deps[tmaref].location)\n arch.push(tma);\n else\n numbers_iwa_doit(cfb, deps, tmaref, function(_, x) {\n return x.push(tma);\n });\n tiaroot.messages[0].data = write_shallow(tia);\n });\n var loc = deps[tmaref].location;\n loc = loc.replace(/^Root Entry\\//, \"\");\n loc = loc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, tmaref, function(tmaroot, arch) {\n var _a, _b;\n var tma = parse_shallow(tmaroot.messages[0].data);\n var uuid = u8str(tma[1][0].data), new_uuid = uuid.replace(/-[A-Z0-9]*/, \"-\".concat(wsidx.toString(16).padStart(4, \"0\")));\n tma[1][0].data = stru8(new_uuid);\n [12, 13, 29, 31, 32, 33, 39, 44, 47, 81, 82, 84].forEach(function(n) {\n return delete tma[n];\n });\n if (tma[45]) {\n var srrta = parse_shallow(tma[45][0].data);\n var ref = parse_TSP_Reference(srrta[1][0].data);\n numbers_del_oref(tmaroot, ref);\n delete tma[45];\n }\n if (tma[70]) {\n var hsoa = parse_shallow(tma[70][0].data);\n (_a = hsoa[2]) == null ? void 0 : _a.forEach(function(item) {\n var hsa = parse_shallow(item.data);\n [2, 3].map(function(n) {\n return hsa[n][0];\n }).forEach(function(hseadata) {\n var hsea = parse_shallow(hseadata.data);\n if (!hsea[8])\n return;\n var ref2 = parse_TSP_Reference(hsea[8][0].data);\n numbers_del_oref(tmaroot, ref2);\n });\n });\n delete tma[70];\n }\n [\n 46,\n 30,\n 34,\n 35,\n 36,\n 38,\n 48,\n 49,\n 60,\n 61,\n 62,\n 63,\n 64,\n 71,\n 72,\n 73,\n 74,\n 75,\n 85,\n 86,\n 87,\n 88,\n 89\n ].forEach(function(n) {\n if (!tma[n])\n return;\n var ref2 = parse_TSP_Reference(tma[n][0].data);\n delete tma[n];\n numbers_del_oref(tmaroot, ref2);\n });\n var store = parse_shallow(tma[4][0].data);\n {\n [2, 4, 5, 6, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22].forEach(function(n) {\n var _a2;\n if (!((_a2 = store[n]) == null ? void 0 : _a2[0]))\n return;\n var oldref = parse_TSP_Reference(store[n][0].data);\n var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);\n numbers_del_oref(tmaroot, oldref);\n numbers_add_oref(tmaroot, newref);\n remap[oldref] = newref;\n var msg = numbers_iwa_find(cfb, deps, oldref);\n msg.id = newref;\n if (deps[oldref].location == deps[tmaref].location)\n arch.push(msg);\n else {\n deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());\n if (deps[newref].location == deps[oldref].location)\n deps[newref].location = deps[newref].location.replace(/\\.iwa/, \"-\".concat(newref, \".iwa\"));\n CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));\n var newloc = deps[newref].location;\n newloc = newloc.replace(/^Root Entry\\//, \"\");\n newloc = newloc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }],\n [{ type: 2, data: stru8(newloc.replace(/-.*$/, \"\")) }],\n [{ type: 2, data: stru8(newloc) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(0) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a3, _b2;\n var mm = parse_shallow(m.data);\n if ((_a3 = mm[3]) == null ? void 0 : _a3[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n }\n store[n][0].data = write_TSP_Reference(newref);\n });\n var row_headers = parse_shallow(store[1][0].data);\n {\n (_b = row_headers[2]) == null ? void 0 : _b.forEach(function(tspref) {\n var oldref = parse_TSP_Reference(tspref.data);\n var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);\n numbers_del_oref(tmaroot, oldref);\n numbers_add_oref(tmaroot, newref);\n remap[oldref] = newref;\n var msg = numbers_iwa_find(cfb, deps, oldref);\n msg.id = newref;\n if (deps[oldref].location == deps[tmaref].location) {\n arch.push(msg);\n } else {\n deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());\n if (deps[newref].location == deps[oldref].location)\n deps[newref].location = deps[newref].location.replace(/\\.iwa/, \"-\".concat(newref, \".iwa\"));\n CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));\n var newloc = deps[newref].location;\n newloc = newloc.replace(/^Root Entry\\//, \"\");\n newloc = newloc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }],\n [{ type: 2, data: stru8(newloc.replace(/-.*$/, \"\")) }],\n [{ type: 2, data: stru8(newloc) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(0) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a2, _b2;\n var mm = parse_shallow(m.data);\n if ((_a2 = mm[3]) == null ? void 0 : _a2[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n }\n tspref.data = write_TSP_Reference(newref);\n });\n }\n store[1][0].data = write_shallow(row_headers);\n var tiles = parse_shallow(store[3][0].data);\n {\n tiles[1].forEach(function(t) {\n var tst = parse_shallow(t.data);\n var oldtileref = parse_TSP_Reference(tst[2][0].data);\n var newtileref = remap[oldtileref];\n if (!remap[oldtileref]) {\n newtileref = get_unique_msgid({ deps: [tmaref], location: \"\", type: deps[oldtileref].type }, deps);\n deps[newtileref].location = \"Root Entry/Index/Tables/Tile-\".concat(newtileref, \".iwa\");\n remap[oldtileref] = newtileref;\n var oldtile = numbers_iwa_find(cfb, deps, oldtileref);\n oldtile.id = newtileref;\n numbers_del_oref(tmaroot, oldtileref);\n numbers_add_oref(tmaroot, newtileref);\n CFB.utils.cfb_add(cfb, \"/Index/Tables/Tile-\".concat(newtileref, \".iwa\"), compress_iwa_file(write_iwa_file([oldtile])));\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileref) }],\n [{ type: 2, data: stru8(\"Tables/Tile\") }],\n [{ type: 2, data: stru8(\"Tables/Tile-\".concat(newtileref)) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(0) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileref + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a2, _b2;\n var mm = parse_shallow(m.data);\n if ((_a2 = mm[3]) == null ? void 0 : _a2[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n }\n tst[2][0].data = write_TSP_Reference(newtileref);\n t.data = write_shallow(tst);\n });\n }\n store[3][0].data = write_shallow(tiles);\n }\n tma[4][0].data = write_shallow(store);\n tmaroot.messages[0].data = write_shallow(tma);\n });\n}\nfunction write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {\n var drawables = [];\n numbers_iwa_doit(cfb, deps, rootref, function(docroot) {\n var sheetref = parse_shallow(docroot.messages[0].data);\n {\n sheetref[1] = [{ type: 2, data: stru8(wsname) }];\n drawables = mappa(sheetref[2], parse_TSP_Reference);\n }\n docroot.messages[0].data = write_shallow(sheetref);\n });\n var tia = numbers_iwa_find(cfb, deps, drawables[0]);\n var tmaref = parse_TSP_Reference(parse_shallow(tia.messages[0].data)[2][0].data);\n numbers_iwa_doit(cfb, deps, tmaref, function(docroot, x) {\n return write_numbers_tma(cfb, deps, ws, docroot, x, tmaref);\n });\n}\nvar USE_WIDE_ROWS = true;\nfunction write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {\n var range = decode_range(ws[\"!ref\"]);\n range.s.r = range.s.c = 0;\n var trunc = false;\n if (range.e.c > 999) {\n trunc = true;\n range.e.c = 999;\n }\n if (range.e.r > 999999) {\n trunc = true;\n range.e.r = 999999;\n }\n if (trunc)\n console.error(\"Truncating to \".concat(encode_range(range)));\n var data = sheet_to_json(ws, { range: range, header: 1 });\n var SST = [\"~Sh33tJ5~\"];\n var loc = deps[tmaref].location;\n loc = loc.replace(/^Root Entry\\//, \"\");\n loc = loc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n var pb = parse_shallow(tmaroot.messages[0].data);\n {\n pb[6][0].data = write_varint49(range.e.r + 1);\n pb[7][0].data = write_varint49(range.e.c + 1);\n delete pb[46];\n var store = parse_shallow(pb[4][0].data);\n {\n var row_header_ref = parse_TSP_Reference(parse_shallow(store[1][0].data)[2][0].data);\n numbers_iwa_doit(cfb, deps, row_header_ref, function(rowhead, _x) {\n var _a;\n var base_bucket = parse_shallow(rowhead.messages[0].data);\n if ((_a = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a[0])\n for (var R2 = 0; R2 < data.length; ++R2) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(R2);\n _bucket[4][0].data = write_varint49(data[R2].length);\n base_bucket[2][R2] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n rowhead.messages[0].data = write_shallow(base_bucket);\n });\n var col_header_ref = parse_TSP_Reference(store[2][0].data);\n numbers_iwa_doit(cfb, deps, col_header_ref, function(colhead, _x) {\n var base_bucket = parse_shallow(colhead.messages[0].data);\n for (var C = 0; C <= range.e.c; ++C) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(C);\n _bucket[4][0].data = write_varint49(range.e.r + 1);\n base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n colhead.messages[0].data = write_shallow(base_bucket);\n });\n var rbtree = parse_shallow(store[9][0].data);\n rbtree[1] = [];\n var tilestore = parse_shallow(store[3][0].data);\n {\n var tstride = 256;\n tilestore[2] = [{ type: 0, data: write_varint49(tstride) }];\n var tileref = parse_TSP_Reference(parse_shallow(tilestore[1][0].data)[2][0].data);\n var save_token = function() {\n var metadata = numbers_iwa_find(cfb, deps, 2);\n var mlist = parse_shallow(metadata.messages[0].data);\n var mlst = mlist[3].filter(function(m) {\n return varint_to_i32(parse_shallow(m.data)[1][0].data) == tileref;\n });\n return (mlst == null ? void 0 : mlst.length) ? varint_to_i32(parse_shallow(mlst[0].data)[12][0].data) : 0;\n }();\n {\n CFB.utils.cfb_del(cfb, deps[tileref].location);\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3] = mlist[3].filter(function(m) {\n return varint_to_i32(parse_shallow(m.data)[1][0].data) != tileref;\n });\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6] = parent[6].filter(function(m) {\n return varint_to_i32(parse_shallow(m.data)[1][0].data) != tileref;\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_del_oref(tmaroot, tileref);\n }\n tilestore[1] = [];\n var ntiles = Math.ceil((range.e.r + 1) / tstride);\n for (var tidx = 0; tidx < ntiles; ++tidx) {\n var newtileid = get_unique_msgid({\n deps: [],\n location: \"\",\n type: 6002\n }, deps);\n deps[newtileid].location = \"Root Entry/Index/Tables/Tile-\".concat(newtileid, \".iwa\");\n var tiledata = [\n [],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 0, data: write_varint49(Math.min(range.e.r + 1, (tidx + 1) * tstride)) }],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 0, data: write_varint49(Math.min((tidx + 1) * tstride, range.e.r + 1) - tidx * tstride) }],\n [],\n [{ type: 0, data: write_varint49(5) }],\n [{ type: 0, data: write_varint49(1) }],\n [{ type: 0, data: write_varint49(USE_WIDE_ROWS ? 1 : 0) }]\n ];\n for (var R = tidx * tstride; R <= Math.min(range.e.r, (tidx + 1) * tstride - 1); ++R) {\n var tilerow = write_TST_TileRowInfo(data[R], SST, USE_WIDE_ROWS);\n tilerow[1][0].data = write_varint49(R - tidx * tstride);\n tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n }\n tilestore[1].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(tidx) }],\n [{ type: 2, data: write_TSP_Reference(newtileid) }]\n ]) });\n var newtile = {\n id: newtileid,\n messages: [write_iwam(6002, write_shallow(tiledata))]\n };\n var tilecontent = compress_iwa_file(write_iwa_file([newtile]));\n CFB.utils.cfb_add(cfb, \"/Index/Tables/Tile-\".concat(newtileid, \".iwa\"), tilecontent);\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileid) }],\n [{ type: 2, data: stru8(\"Tables/Tile\") }],\n [{ type: 2, data: stru8(\"Tables/Tile-\".concat(newtileid)) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(save_token) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileid + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileid) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_add_oref(tmaroot, newtileid);\n rbtree[1].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(tidx * tstride) }],\n [{ type: 0, data: write_varint49(tidx) }]\n ]) });\n }\n }\n store[3][0].data = write_shallow(tilestore);\n store[9][0].data = write_shallow(rbtree);\n store[10] = [{ type: 2, data: new Uint8Array([]) }];\n if (ws[\"!merges\"]) {\n var mergeid = get_unique_msgid({\n type: 6144,\n deps: [tmaref],\n location: deps[tmaref].location\n }, deps);\n tmafile.push({\n id: mergeid,\n messages: [write_iwam(6144, write_shallow([\n [],\n ws[\"!merges\"].map(function(m) {\n return { type: 2, data: write_shallow([\n [],\n [{ type: 2, data: write_shallow([\n [],\n [{ type: 5, data: new Uint8Array(new Uint16Array([m.s.r, m.s.c]).buffer) }]\n ]) }],\n [{ type: 2, data: write_shallow([\n [],\n [{ type: 5, data: new Uint8Array(new Uint16Array([m.e.r - m.s.r + 1, m.e.c - m.s.c + 1]).buffer) }]\n ]) }]\n ]) };\n })\n ]))]\n });\n store[13] = [{ type: 2, data: write_TSP_Reference(mergeid) }];\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(mergeid) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_add_oref(tmaroot, mergeid);\n } else\n delete store[13];\n var sstref = parse_TSP_Reference(store[4][0].data);\n numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {\n var sstdata = parse_shallow(sstroot.messages[0].data);\n {\n sstdata[3] = [];\n SST.forEach(function(str, i) {\n if (i == 0)\n return;\n sstdata[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(i) }],\n [{ type: 0, data: write_varint49(1) }],\n [{ type: 2, data: stru8(str) }]\n ]) });\n });\n }\n sstroot.messages[0].data = write_shallow(sstdata);\n });\n }\n pb[4][0].data = write_shallow(store);\n }\n tmaroot.messages[0].data = write_shallow(pb);\n}\nfunction fix_opts_func(defaults/*:Array >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar comments = [], tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tcomments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip, opts);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip, opts);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tvar index_zip = CFB.find(zip, 'Index.zip');\n\t\tif(index_zip) {\n\t\t\topts = dup(opts);\n\t\t\tdelete opts.type;\n\t\t\tif(typeof index_zip.content == \"string\") opts.type = \"binary\";\n\t\t\t// TODO: Bun buffer bug\n\t\t\tif(typeof Bun !== \"undefined\" && Buffer.isBuffer(index_zip.content)) return readSync(new Uint8Array(index_zip.content), opts);\n\t\t\treturn readSync(index_zip.content, opts);\n\t\t}\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme_xml(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\", opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\t// TODO: pass back content types metdata for xlsm/xlsx resolution\n\tout.bookType = xlsb ? \"xlsb\" : \"xlsx\";\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip_xlsb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"bin\";\n\tvar vbafmt = true;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_bin(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_bin(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_bin(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_bin(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tvar ww = write_theme(wb.Themes, opts);\n\tzip_add_file(zip, f, ww);\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_bin(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_bin());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".xml\";\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".xml\", RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = typeof $cptable !== \"undefined\" ? $cptable.utils.decode(1200, d.slice(2), 'str') : utf16leread(d.slice(2));\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(o.codepage && typeof $cptable === \"undefined\") console.error(\"Codepage tables are not loaded. Non-ASCII characters may not give expected results\");\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return rtf_to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t\tcase 0x08: if(n[1] === 0xE7) throw new Error(\"Unsupported Multiplan 1.x file!\"); break;\n\t\tcase 0x0C:\n\t\t\tif(n[1] === 0xEC) throw new Error(\"Unsupported Multiplan 2.x file!\");\n\t\t\tif(n[1] === 0xED) throw new Error(\"Unsupported Multiplan 3.x file!\");\n\t\t\tbreak;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tswitch(opts.bookType) {\n\t\tcase \"ods\": return write_ods(wb, opts);\n\t\tcase \"numbers\": return write_numbers_iwa(wb, opts);\n\t\tcase \"xlsb\": return write_zip_xlsb(wb, opts);\n\t\tdefault: return write_zip_xlsx(wb, opts);\n\t}\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode_pass(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o, wb), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(sheet_to_rtf(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, header/*:number*/, hdr/*:Array*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true, dense = (sheet[\"!data\"] != null);\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[\"!data\"][R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? (sheet[\"!data\"][R]||[])[C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar out/*:Array*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = sheet[\"!data\"] != null;\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[\"!data\"][R]) sheet[\"!data\"][R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[\"!data\"][R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array*/ = [], txt = \"\", rr = encode_row(R);\n\tvar dense = sheet[\"!data\"] != null;\n\tvar datarow = dense && sheet[\"!data\"][R] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = dense ? datarow[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array*/ = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array*/ = [], C;\n\tvar cmds/*:Array*/ = [];\n\tvar dense = sheet[\"!data\"] != null;\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[\"!data\"][R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? (_ws[\"!data\"] != null) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({});\n\tif(!_ws && dense) ws[\"!data\"] = [];\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array*/ = o.header || [], C = 0;\n\tvar ROW = [];\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tif(dense && !ws[\"!data\"][_R + R + offset]) ws[\"!data\"][_R + R + offset] = [];\n\t\tif(dense) ROW = ws[\"!data\"][_R + R + offset];\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = dense ? \"\" : (encode_col(_C + C) + encode_row(_R + R + offset));\n\t\t\tvar cell/*:Cell*/ = dense ? ROW[_C + C] : ws[ref];\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tif(dense) ROW[_C + C] = v;\n\t\t\t\telse ws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (cell != null && cell.z && fmt_is_date(cell.z)) ? cell.z : (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) {\n\t\t\t\t\tif(!dense) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\t\telse ROW[_C + C] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\t} else {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(dense && !ws[\"!data\"][_R]) ws[\"!data\"][_R] = [];\n\tif(offset) for(C = 0; C < hdr.length; ++C) {\n\t\tif(dense) ws[\"!data\"][_R][C + _C] = {t:'s', v:hdr[C]};\n\t\telse ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\t}\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\tif(ws[\"!data\"] != null) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[\"!data\"][RC.r]) ws[\"!data\"][RC.r] = [];\n\t\t\treturn ws[\"!data\"][RC.r][RC.c] || (ws[\"!data\"][RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_col(C||0) + encode_row(R));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\tvar wsr = decode_range(ws[\"!ref\"]);\n\tif(wsr.s.r > rng.s.r) wsr.s.r = rng.s.r;\n\tif(wsr.s.c > rng.s.c) wsr.s.c = rng.s.c;\n\tif(wsr.e.r < rng.e.r) wsr.e.r = rng.e.r;\n\tif(wsr.e.c < rng.e.c) wsr.e.c = rng.e.c;\n\tws[\"!ref\"] = encode_range(wsr);\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array*/ = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar counter = 0;\n\tvar dense = sheet[\"!data\"] != null;\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[\"!data\"][R]) sheet[\"!data\"][R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[\"!data\"][R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n\tset_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\tset_fs,\n\tset_cptable,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\nexport default {\n\tparse_xlscfb,\n\tparse_zip,\n\tread: readSync,\n\treadFile: readFileSync,\n\treadFileSync,\n\twrite: writeSync,\n\twriteFile: writeFileSync,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteXLSX: writeSyncXLSX,\n\twriteFileXLSX: writeFileSyncXLSX,\n\tutils,\n\tset_fs,\n\tset_cptable,\n\tstream: __stream,\n\tSSF,\n\tCFB\n}\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import { read as readXLSX } from \"xlsx\";\nimport axios from \"axios\";\nexport async function importerJSONdURL(url) {\n const réponse = await axios.get(url);\n const données = await réponse.data;\n return données;\n}\nexport async function importerFeuilleCalculDURL(url, options) {\n const réponse = await axios.get(url, { responseType: \"arraybuffer\" });\n const données = réponse.data;\n const optionsParDéfault = {\n type: \"buffer\",\n cellDates: true,\n };\n const optsXLSX = Object.assign(optionsParDéfault, options || {});\n return readXLSX(données, optsXLSX);\n}\n//# sourceMappingURL=index.js.map","import validate from './validate.js';\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n var uuid = unsafeStringify(arr, offset);\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n return getRandomValues(rnds8);\n}","var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;","export const ERREUR_MESSAGE_INCONNU = \"messageInconnu\";\nexport const ERREUR_FORMAT_ARGUMENTS = \"formatArguments\";\nexport const ERREUR_FONCTION_MANQUANTE = \"nomFonctionManquant\";\nexport const ERREUR_MULTIPLES_FONCTIONS = \"multiplesFonctions\";\nexport const ERREUR_PAS_UNE_FONCTION = \"pasUneFonction\";\nexport const ERREUR_EXÉCUTION_IPA = \"exécutionIpa\";\nexport const ERREUR_INIT_IPA = \"initIpa\";\nexport const ERREUR_INIT_IPA_DÉJÀ_LANCÉ = \"initIpaDéjàLancé\";\n//# sourceMappingURL=codes.js.map","export const lorsque = async (émetteur, clef) => {\n return new Promise((résoudre) => {\n return émetteur.once(clef, résoudre);\n });\n};\n//# sourceMappingURL=utils.js.map","import { v4 as uuidv4 } from \"uuid\";\nimport { EventEmitter } from \"events\";\nimport { ERREUR_EXÉCUTION_IPA, ERREUR_FONCTION_MANQUANTE, ERREUR_FORMAT_ARGUMENTS, ERREUR_INIT_IPA, ERREUR_INIT_IPA_DÉJÀ_LANCÉ, ERREUR_MESSAGE_INCONNU, ERREUR_MULTIPLES_FONCTIONS, ERREUR_PAS_UNE_FONCTION, } from \"./codes.js\";\nimport { lorsque } from \"./utils.js\";\nclass Callable extends Function {\n // Code obtenu de https://hackernoon.com/creating-callable-objects-in-javascript-d21l3te1\n //@ts-expect-error On ne peut pas appeller super() d'une fonction dans un contexte navigateur sécuritaire\n constructor() {\n const closure = function () {\n // Rien faire. Je ne comprends pas tout ça mais ça fonctionne.\n };\n return Object.setPrototypeOf(closure, new.target.prototype);\n }\n}\nexport class Mandatairifiable extends Callable {\n dernièreErreur;\n événements;\n événementsInternes;\n tâches;\n constructor() {\n super();\n this.événements = new EventEmitter();\n this.événementsInternes = new EventEmitter();\n this.tâches = {};\n }\n __call__(fonction, args = {}) {\n if (typeof args !== \"object\")\n this.erreur({\n code: ERREUR_FORMAT_ARGUMENTS,\n erreur: `La fonction ${fonction.join(\".\")} fut appelée avec arguments ${args}. \n Toute fonction mandataire Constellation doit être appelée avec un seul argument en format d'objet (dictionnaire).`,\n });\n const id = uuidv4();\n const nomArgFonction = Object.entries(args).find((x) => typeof x[1] === \"function\")?.[0];\n if (nomArgFonction) {\n return this.appelerFonctionSuivre(id, fonction, args, nomArgFonction);\n }\n else {\n return this.appelerFonctionAction(id, fonction, args);\n }\n }\n async appelerFonctionSuivre(id, fonction, args, nomArgFonction) {\n const f = args[nomArgFonction];\n const argsSansF = Object.fromEntries(Object.entries(args).filter((x) => typeof x[1] !== \"function\"));\n // Vérifier format paramètres\n if (f === undefined) {\n this.erreur({\n code: ERREUR_FONCTION_MANQUANTE,\n erreur: \"Aucun argument de nom \" +\n nomArgFonction +\n \" n'a été donnée pour \" +\n fonction.join(\".\"),\n id,\n });\n }\n if (Object.keys(args).length > Object.keys(argsSansF).length + 1) {\n this.erreur({\n code: ERREUR_MULTIPLES_FONCTIONS,\n erreur: \"Plus d'un argument pour \" +\n fonction.join(\".\") +\n \" est une fonction : \" +\n JSON.stringify(args),\n id,\n });\n }\n else if (typeof f !== \"function\") {\n this.erreur({\n code: ERREUR_PAS_UNE_FONCTION,\n erreur: \"Argument \" + nomArgFonction + \"n'est pas une fonction : \",\n id,\n });\n }\n const message = {\n type: \"suivre\",\n id,\n fonction,\n args: argsSansF,\n nomArgFonction,\n };\n const fRetour = async (fonction, args) => {\n const messageRetour = {\n type: \"retour\",\n id,\n fonction,\n args,\n };\n this.envoyerMessageÀIpa(messageRetour);\n };\n const tâche = {\n id,\n fSuivre: f,\n fRetour,\n };\n this.tâches[id] = tâche;\n const fOublierTâche = async () => {\n await this.oublierTâche(id);\n };\n const lorsqueRetour = lorsque(this.événementsInternes, id);\n this.envoyerMessageÀIpa(message);\n const retour = await lorsqueRetour;\n if (retour.type === \"erreur\") {\n this.erreur({\n erreur: retour.erreur,\n id,\n code: retour.codeErreur || ERREUR_EXÉCUTION_IPA,\n });\n }\n if (retour.type === \"suivrePrêt\") {\n const { fonctions } = retour;\n if (fonctions && fonctions[0]) {\n const retour = {\n fOublier: fOublierTâche,\n };\n for (const f of fonctions) {\n retour[f] = async (...args) => {\n await this.tâches[id]?.fRetour(f, args);\n };\n }\n return retour;\n }\n }\n return fOublierTâche;\n }\n async appelerFonctionAction(id, fonction, args) {\n const message = {\n type: \"action\",\n id,\n fonction,\n args: args,\n };\n const lorsqueRetour = lorsque(this.événementsInternes, id);\n this.envoyerMessageÀIpa(message);\n const retour = await lorsqueRetour;\n if (retour.type === \"action\") {\n return retour.résultat;\n }\n else if (retour.type === \"erreur\") {\n this.erreur({\n erreur: retour.erreur,\n id,\n code: retour.codeErreur || ERREUR_EXÉCUTION_IPA,\n });\n }\n else {\n this.erreur({\n erreur: `Type de retour ${retour} non reconnu.`,\n id,\n code: ERREUR_EXÉCUTION_IPA,\n });\n }\n throw new Error(\"On ne devrait jamais arriver ici.\");\n }\n erreur({ erreur, code, id, }) {\n // Si l'IPA n'a pas bien été initialisée, toutes les autres erreurs sont pas très importantes\n if (this.dernièreErreur?.code !== ERREUR_INIT_IPA &&\n this.dernièreErreur?.code !== ERREUR_INIT_IPA_DÉJÀ_LANCÉ) {\n this.dernièreErreur = { erreur, id, code };\n }\n this.événements.emit(\"erreur\", this.dernièreErreur);\n throw new Error(JSON.stringify(this.dernièreErreur));\n }\n async oublierTâche(id) {\n const tâche = this.tâches[id];\n if (tâche)\n await tâche.fRetour(\"fOublier\");\n delete this.tâches[id];\n }\n async recevoirMessageDIpa(message) {\n const { type } = message;\n switch (type) {\n case \"suivre\": {\n const { id, données } = message;\n if (!this.tâches[id])\n return;\n const { fSuivre } = this.tâches[id];\n fSuivre(données);\n break;\n }\n case \"action\":\n case \"suivrePrêt\":\n case \"erreur\": {\n if (message.type === \"erreur\" && !message.id) {\n this.erreur({\n erreur: message.erreur,\n code: message.erreur || ERREUR_EXÉCUTION_IPA,\n });\n break;\n }\n this.événementsInternes.emit(message.id, message);\n break;\n }\n default: {\n this.erreur({\n code: ERREUR_MESSAGE_INCONNU,\n erreur: `Type inconnu ${type} du message ${message}.`,\n id: message.id,\n });\n }\n }\n }\n // Fonctions publiques\n suivreErreurs({ f }) {\n this.événements.on(\"erreur\", f);\n f(this.dernièreErreur);\n return () => this.événements.off(\"erreur\", f);\n }\n}\nclass Handler {\n listeAtributs;\n constructor(listeAtributs) {\n this.listeAtributs = listeAtributs || [];\n }\n get(obj, prop) {\n // Inscrire ici les fonctions publiques du mandataire qui ne\n // doivent pas être envoyées à Constellation\n const directes = [\"suivreErreurs\"];\n if (directes.includes(prop)) {\n return obj[prop].bind(obj);\n }\n else {\n const listeAtributs = [...this.listeAtributs, prop];\n const h = new Handler(listeAtributs);\n return new Proxy(obj, h);\n }\n }\n apply(target, _thisArg, args) {\n return target.__call__(this.listeAtributs, args[0]);\n }\n}\nexport const générerMandataire = (mandataireClient) => {\n const handler = new Handler();\n return new Proxy(mandataireClient, handler);\n};\n//# sourceMappingURL=mandataire.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = toObject(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = toObject(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind.apply(getPolyfill());\n// eslint-disable-next-line no-unused-vars\nvar bound = function assign(target, source1) {\n\treturn polyfill(Object, arguments);\n};\n\ndefineProperties(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar setFunctionName = require('set-function-name');\nvar $TypeError = require('es-errors/type');\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","export default {}","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (\n (typeof globalThis !== 'undefined' && obj === globalThis)\n || (typeof global !== 'undefined' && obj === global)\n ) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap} */ var $wm;\n\t/** @type {Map} */ var $m;\n\t/** @type {import('.').RootNode} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar hasOwn = require('hasown');\nvar channel = require('side-channel')();\n\nvar $TypeError = require('es-errors/type');\n\nvar SLOT = {\n\tassert: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tchannel.assert(O);\n\t\tif (!SLOT.has(O, slot)) {\n\t\t\tthrow new $TypeError('`' + slot + '` is not present on `O`');\n\t\t}\n\t},\n\tget: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn slots && slots['$' + slot];\n\t},\n\thas: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn !!slots && hasOwn(slots, '$' + slot);\n\t},\n\tset: function (O, slot, V) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\tif (!slots) {\n\t\t\tslots = {};\n\t\t\tchannel.set(O, slots);\n\t\t}\n\t\tslots['$' + slot] = V;\n\t}\n};\n\nif (Object.freeze) {\n\tObject.freeze(SLOT);\n}\n\nmodule.exports = SLOT;\n","'use strict';\n\nvar SLOT = require('internal-slot');\n\nvar $SyntaxError = SyntaxError;\nvar $StopIteration = typeof StopIteration === 'object' ? StopIteration : null;\n\nmodule.exports = function getStopIterationIterator(origIterator) {\n\tif (!$StopIteration) {\n\t\tthrow new $SyntaxError('this environment lacks StopIteration');\n\t}\n\n\tSLOT.set(origIterator, '[[Done]]', false);\n\n\tvar siIterator = {\n\t\tnext: function next() {\n\t\t\tvar iterator = SLOT.get(this, '[[Iterator]]');\n\t\t\tvar done = SLOT.get(iterator, '[[Done]]');\n\t\t\ttry {\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: done ? void undefined : iterator.next()\n\t\t\t\t};\n\t\t\t} catch (e) {\n\t\t\t\tSLOT.set(iterator, '[[Done]]', true);\n\t\t\t\tif (e !== $StopIteration) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\tSLOT.set(siIterator, '[[Iterator]]', origIterator);\n\n\treturn siIterator;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n","'use strict';\n\n/** @const */\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Map is always truthy here\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Set is always truthy here\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\n/* eslint global-require: 0 */\n// the code is structured this way so that bundlers can\n// alias out `has-symbols` to `() => true` or `() => false` if your target\n// environments' Symbol capabilities are known, and then use\n// dead code elimination on the rest of this module.\n//\n// Similarly, `isarray` can be aliased to `Array.isArray` if\n// available in all target environments.\n\nvar isArguments = require('is-arguments');\nvar getStopIterationIterator = require('stop-iteration-iterator');\n\nif (require('has-symbols')() || require('has-symbols/shams')()) {\n\tvar $iterator = Symbol.iterator;\n\t// Symbol is available natively or shammed\n\t// natively:\n\t// - Chrome >= 38\n\t// - Edge 12-14?, Edge >= 15 for sure\n\t// - FF >= 36\n\t// - Safari >= 9\n\t// - node >= 0.12\n\tmodule.exports = function getIterator(iterable) {\n\t\t// alternatively, `iterable[$iterator]?.()`\n\t\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\t\treturn iterable[$iterator]();\n\t\t}\n\t\tif (isArguments(iterable)) {\n\t\t\t// arguments objects lack Symbol.iterator\n\t\t\t// - node 0.12\n\t\t\treturn Array.prototype[$iterator].call(iterable);\n\t\t}\n\t};\n} else {\n\t// Symbol is not available, native or shammed\n\tvar isArray = require('isarray');\n\tvar isString = require('is-string');\n\tvar GetIntrinsic = require('get-intrinsic');\n\tvar $Map = GetIntrinsic('%Map%', true);\n\tvar $Set = GetIntrinsic('%Set%', true);\n\tvar callBound = require('call-bind/callBound');\n\tvar $arrayPush = callBound('Array.prototype.push');\n\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\tvar $stringSlice = callBound('String.prototype.slice');\n\n\tvar advanceStringIndex = function advanceStringIndex(S, index) {\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t};\n\n\tvar getArrayIterator = function getArrayIterator(arraylike) {\n\t\tvar i = 0;\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tvar done = i >= arraylike.length;\n\t\t\t\tvar value;\n\t\t\t\tif (!done) {\n\t\t\t\t\tvalue = arraylike[i];\n\t\t\t\t\ti += 1;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable, noPrimordialCollections) {\n\t\tif (isArray(iterable) || isArguments(iterable)) {\n\t\t\treturn getArrayIterator(iterable);\n\t\t}\n\t\tif (isString(iterable)) {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function next() {\n\t\t\t\t\tvar nextIndex = advanceStringIndex(iterable, i);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// es6-shim and es-shims' es-map use a string \"_es6-shim iterator_\" property on different iterables, such as MapIterator.\n\t\tif (noPrimordialCollections && typeof iterable['_es6-shim iterator_'] !== 'undefined') {\n\t\t\treturn iterable['_es6-shim iterator_']();\n\t\t}\n\t};\n\n\tif (!$Map && !$Set) {\n\t\t// the only language iterables are Array, String, arguments\n\t\t// - Safari <= 6.0\n\t\t// - Chrome < 38\n\t\t// - node < 0.12\n\t\t// - FF < 13\n\t\t// - IE < 11\n\t\t// - Edge < 11\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\tif (iterable != null) {\n\t\t\t\treturn getNonCollectionIterator(iterable, true);\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// either Map or Set are available, but Symbol is not\n\t\t// - es6-shim on an ES5 browser\n\t\t// - Safari 6.2 (maybe 6.1?)\n\t\t// - FF v[13, 36)\n\t\t// - IE 11\n\t\t// - Edge 11\n\t\t// - Safari v[6, 9)\n\n\t\tvar isMap = require('is-map');\n\t\tvar isSet = require('is-set');\n\n\t\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\n\t\tvar $mapForEach = callBound('Map.prototype.forEach', true);\n\t\tvar $setForEach = callBound('Set.prototype.forEach', true);\n\t\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \"if is not node\"\n\n\t\t\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\n\t\t\t// returns a value, or throws a StopIteration object. These browsers\n\t\t\t// do not have any other mechanism for iteration.\n\t\t\tvar $mapIterator = callBound('Map.prototype.iterator', true);\n\t\t\tvar $setIterator = callBound('Set.prototype.iterator', true);\n\t\t}\n\t\t// Firefox 27-35, and some older es6-shim versions, use a string \"@@iterator\" property\n\t\t// this returns a proper iterator object, so we should use it instead of forEach.\n\t\t// newer es6-shim versions use a string \"_es6-shim iterator_\" property.\n\t\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\n\t\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\n\n\t\tvar getCollectionIterator = function getCollectionIterator(iterable) {\n\t\t\tif (isMap(iterable)) {\n\t\t\t\tif ($mapIterator) {\n\t\t\t\t\treturn getStopIterationIterator($mapIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($mapAtAtIterator) {\n\t\t\t\t\treturn $mapAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($mapForEach) {\n\t\t\t\t\tvar entries = [];\n\t\t\t\t\t$mapForEach(iterable, function (v, k) {\n\t\t\t\t\t\t$arrayPush(entries, [k, v]);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(entries);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isSet(iterable)) {\n\t\t\t\tif ($setIterator) {\n\t\t\t\t\treturn getStopIterationIterator($setIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($setAtAtIterator) {\n\t\t\t\t\treturn $setAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($setForEach) {\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$setForEach(iterable, function (v) {\n\t\t\t\t\t\t$arrayPush(values, v);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(values);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\n\t\t};\n\t}\n}\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $ArrayBuffer = GetIntrinsic('%ArrayBuffer%', true);\n/** @type {undefined | ((receiver: ArrayBuffer) => number) | ((receiver: unknown) => never)} */\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\nvar $toString = callBound('Object.prototype.toString');\n\n// in node 0.10, ArrayBuffers have no prototype methods, but have an own slot-checking `slice` method\nvar abSlice = !!$ArrayBuffer && !$byteLength && new $ArrayBuffer(0).slice;\nvar $abSlice = !!abSlice && callBind(abSlice);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength || $abSlice\n\t? function isArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tif ($byteLength) {\n\t\t\t\t// @ts-expect-error no idea why TS can't handle the overload\n\t\t\t\t$byteLength(obj);\n\t\t\t} else {\n\t\t\t\t// @ts-expect-error TS chooses not to type-narrow inside a closure\n\t\t\t\t$abSlice(obj, 0);\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: $ArrayBuffer\n\t\t// in node 0.8, ArrayBuffers have no prototype or own methods, but also no Symbol.toStringTag\n\t\t? function isArrayBuffer(obj) {\n\t\t\treturn $toString(obj) === '[object ArrayBuffer]';\n\t\t}\n\t\t: function isArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\t\treturn false;\n\t\t};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\n\nvar $byteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength\n\t? function isSharedArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$byteLength(obj);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: function isSharedArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\treturn false;\n\t};\n","'use strict';\n\nvar numToStr = Number.prototype.toString;\nvar tryNumberObject = function tryNumberObject(value) {\n\ttry {\n\t\tnumToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar numClass = '[object Number]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isNumberObject(value) {\n\tif (typeof value === 'number') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $boolToStr = callBound('Boolean.prototype.toString');\nvar $toString = callBound('Object.prototype.toString');\n\nvar tryBooleanObject = function booleanBrandCheck(value) {\n\ttry {\n\t\t$boolToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar boolClass = '[object Boolean]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isBoolean(value) {\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : $toString(value) === boolClass;\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = require('has-symbols')();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar $BigInt = typeof BigInt !== 'undefined' && BigInt;\n\nmodule.exports = function hasNativeBigInts() {\n\treturn typeof $BigInt === 'function'\n\t\t&& typeof BigInt === 'function'\n\t\t&& typeof $BigInt(42) === 'bigint' // eslint-disable-line no-magic-numbers\n\t\t&& typeof BigInt(42) === 'bigint'; // eslint-disable-line no-magic-numbers\n};\n","'use strict';\n\nvar hasBigInts = require('has-bigints')();\n\nif (hasBigInts) {\n\tvar bigIntValueOf = BigInt.prototype.valueOf;\n\tvar tryBigInt = function tryBigIntObject(value) {\n\t\ttry {\n\t\t\tbigIntValueOf.call(value);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t}\n\t\treturn false;\n\t};\n\n\tmodule.exports = function isBigInt(value) {\n\t\tif (\n\t\t\tvalue === null\n\t\t\t|| typeof value === 'undefined'\n\t\t\t|| typeof value === 'boolean'\n\t\t\t|| typeof value === 'string'\n\t\t\t|| typeof value === 'number'\n\t\t\t|| typeof value === 'symbol'\n\t\t\t|| typeof value === 'function'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof value === 'bigint') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn tryBigInt(value);\n\t};\n} else {\n\tmodule.exports = function isBigInt(value) {\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar isString = require('is-string');\nvar isNumber = require('is-number-object');\nvar isBoolean = require('is-boolean-object');\nvar isSymbol = require('is-symbol');\nvar isBigInt = require('is-bigint');\n\n// eslint-disable-next-line consistent-return\nmodule.exports = function whichBoxedPrimitive(value) {\n\t// eslint-disable-next-line eqeqeq\n\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\treturn null;\n\t}\n\tif (isString(value)) {\n\t\treturn 'String';\n\t}\n\tif (isNumber(value)) {\n\t\treturn 'Number';\n\t}\n\tif (isBoolean(value)) {\n\t\treturn 'Boolean';\n\t}\n\tif (isSymbol(value)) {\n\t\treturn 'Symbol';\n\t}\n\tif (isBigInt(value)) {\n\t\treturn 'BigInt';\n\t}\n};\n","'use strict';\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isWeakMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x, $mapHas);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x, $setHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $WeakMap is always truthy here\n\t\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\n\nvar $WeakSet = GetIntrinsic('%WeakSet%', true);\n\nvar $setHas = callBound('WeakSet.prototype.has', true);\n\nif ($setHas) {\n\tvar $mapHas = callBound('WeakMap.prototype.has', true);\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isWeakSet(x) {\n\t\tif (!x || typeof x !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$setHas(x, $setHas);\n\t\t\tif ($mapHas) {\n\t\t\t\ttry {\n\t\t\t\t\t$mapHas(x, $mapHas);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't figure out that $WeakSet is always truthy here\n\t\t\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\n\t\t} catch (e) {}\n\t\treturn false;\n\t};\n} else {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\tmodule.exports = function isWeakSet(x) {\n\t\t// `WeakSet` does not exist, or does not have a `has` method\n\t\treturn false;\n\t};\n}\n","'use strict';\n\nvar isMap = require('is-map');\nvar isSet = require('is-set');\nvar isWeakMap = require('is-weakmap');\nvar isWeakSet = require('is-weakset');\n\n/** @type {import('.')} */\nmodule.exports = function whichCollection(/** @type {unknown} */ value) {\n\tif (value && typeof value === 'object') {\n\t\tif (isMap(value)) {\n\t\t\treturn 'Map';\n\t\t}\n\t\tif (isSet(value)) {\n\t\t\treturn 'Set';\n\t\t}\n\t\tif (isWeakMap(value)) {\n\t\t\treturn 'WeakMap';\n\t\t}\n\t\tif (isWeakSet(value)) {\n\t\t\treturn 'WeakSet';\n\t\t}\n\t}\n\treturn false;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\n\nvar isArrayBuffer = require('is-array-buffer');\n\n/** @type {import('.')} */\nmodule.exports = function byteLength(ab) {\n\tif (!isArrayBuffer(ab)) {\n\t\treturn NaN;\n\t}\n\treturn $byteLength ? $byteLength(ab) : ab.byteLength;\n}; // in node < 0.11, byteLength is an own nonconfigurable property\n","'use strict';\n\nvar assign = require('object.assign');\nvar callBound = require('call-bind/callBound');\nvar flags = require('regexp.prototype.flags');\nvar GetIntrinsic = require('get-intrinsic');\nvar getIterator = require('es-get-iterator');\nvar getSideChannel = require('side-channel');\nvar is = require('object-is');\nvar isArguments = require('is-arguments');\nvar isArray = require('isarray');\nvar isArrayBuffer = require('is-array-buffer');\nvar isDate = require('is-date-object');\nvar isRegex = require('is-regex');\nvar isSharedArrayBuffer = require('is-shared-array-buffer');\nvar objectKeys = require('object-keys');\nvar whichBoxedPrimitive = require('which-boxed-primitive');\nvar whichCollection = require('which-collection');\nvar whichTypedArray = require('which-typed-array');\nvar byteLength = require('array-buffer-byte-length');\n\nvar sabByteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\nvar $getTime = callBound('Date.prototype.getTime');\nvar gPO = Object.getPrototypeOf;\nvar $objToString = callBound('Object.prototype.toString');\n\nvar $Set = GetIntrinsic('%Set%', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSize = callBound('Map.prototype.size', true);\nvar $setAdd = callBound('Set.prototype.add', true);\nvar $setDelete = callBound('Set.prototype.delete', true);\nvar $setHas = callBound('Set.prototype.has', true);\nvar $setSize = callBound('Set.prototype.size', true);\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\nfunction setHasEqualElement(set, val1, opts, channel) {\n var i = getIterator(set);\n var result;\n while ((result = i.next()) && !result.done) {\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\n // Remove the matching element to make sure we do not check that again.\n $setDelete(set, result.value);\n return true;\n }\n }\n\n return false;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\nfunction findLooseMatchingPrimitives(prim) {\n if (typeof prim === 'undefined') {\n return null;\n }\n if (typeof prim === 'object') { // Only pass in null as object!\n return void 0;\n }\n if (typeof prim === 'symbol') {\n return false;\n }\n if (typeof prim === 'string' || typeof prim === 'number') {\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\n }\n return true;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = $mapGet(b, altValue);\n var looseOpts = assign({}, opts, { strict: false });\n if (\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\n // eslint-disable-next-line no-use-before-define\n || !internalDeepEqual(item, curB, looseOpts, channel)\n ) {\n return false;\n }\n // eslint-disable-next-line no-use-before-define\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n\n return $setHas(b, altValue) && !$setHas(a, altValue);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\n var i = getIterator(set);\n var result;\n var key2;\n while ((result = i.next()) && !result.done) {\n key2 = result.value;\n if (\n // eslint-disable-next-line no-use-before-define\n internalDeepEqual(key1, key2, opts, channel)\n // eslint-disable-next-line no-use-before-define\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\n ) {\n $setDelete(set, key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction internalDeepEqual(actual, expected, options, channel) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n var actualBoxed = whichBoxedPrimitive(actual);\n var expectedBoxed = whichBoxedPrimitive(expected);\n if (actualBoxed !== expectedBoxed) {\n return false;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\n\n var hasActual = channel.has(actual);\n var hasExpected = channel.has(expected);\n var sentinel;\n if (hasActual && hasExpected) {\n if (channel.get(actual) === channel.get(expected)) {\n return true;\n }\n } else {\n sentinel = {};\n }\n if (!hasActual) { channel.set(actual, sentinel); }\n if (!hasExpected) { channel.set(expected, sentinel); }\n\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts, channel);\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\n}\n\nfunction setEquiv(a, b, opts, channel) {\n if ($setSize(a) !== $setSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n while ((resultA = iA.next()) && !resultA.done) {\n if (resultA.value && typeof resultA.value === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n } else if (!$setHas(b, resultA.value)) {\n if (opts.strict) { return false; }\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n }\n }\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\n if (resultB.value && typeof resultB.value === 'object') {\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && !$setHas(a, resultB.value)\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction mapEquiv(a, b, opts, channel) {\n if ($mapSize(a) !== $mapSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n var key;\n var item1;\n var item2;\n while ((resultA = iA.next()) && !resultA.done) {\n key = resultA.value[0];\n item1 = resultA.value[1];\n if (key && typeof key === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n } else {\n item2 = $mapGet(b, key);\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\n if (opts.strict) {\n return false;\n }\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n }\n }\n }\n\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n key = resultB.value[0];\n item2 = resultB.value[1];\n if (key && typeof key === 'object') {\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts, channel) {\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5], max-lines: [2, 400] */\n var i, key;\n\n if (typeof a !== typeof b) { return false; }\n if (a == null || b == null) { return false; }\n\n if ($objToString(a) !== $objToString(b)) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsArray = isArray(a);\n var bIsArray = isArray(b);\n if (aIsArray !== bIsArray) { return false; }\n\n // TODO: replace when a cross-realm brand check is available\n var aIsError = a instanceof Error;\n var bIsError = b instanceof Error;\n if (aIsError !== bIsError) { return false; }\n if (aIsError || bIsError) {\n if (a.name !== b.name || a.message !== b.message) { return false; }\n }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\n return false;\n }\n\n var aIsDate = isDate(a);\n var bIsDate = isDate(b);\n if (aIsDate !== bIsDate) { return false; }\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\n if ($getTime(a) !== $getTime(b)) { return false; }\n }\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\n\n var aWhich = whichTypedArray(a);\n var bWhich = whichTypedArray(b);\n if (aWhich !== bWhich) {\n return false;\n }\n if (aWhich || bWhich) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsArrayBuffer = isArrayBuffer(a);\n var bIsArrayBuffer = isArrayBuffer(b);\n if (aIsArrayBuffer !== bIsArrayBuffer) { return false; }\n if (aIsArrayBuffer || bIsArrayBuffer) { // && would work too, because both are true or both false here\n if (byteLength(a) !== byteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n var aIsSAB = isSharedArrayBuffer(a);\n var bIsSAB = isSharedArrayBuffer(b);\n if (aIsSAB !== bIsSAB) { return false; }\n if (aIsSAB || bIsSAB) { // && would work too, because both are true or both false here\n if (sabByteLength(a) !== sabByteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n if (typeof a !== typeof b) { return false; }\n\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; } // eslint-disable-line eqeqeq\n }\n\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\n }\n\n var aCollection = whichCollection(a);\n var bCollection = whichCollection(b);\n if (aCollection !== bCollection) {\n return false;\n }\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\n return setEquiv(a, b, opts, channel);\n }\n if (aCollection === 'Map') { // aCollection === bCollection\n return mapEquiv(a, b, opts, channel);\n }\n\n return true;\n}\n\nmodule.exports = function deepEqual(a, b, opts) {\n return internalDeepEqual(a, b, opts, getSideChannel());\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.typeDetect = factory());\n})(this, (function () { 'use strict';\n\n var promiseExists = typeof Promise === 'function';\n var globalObject = (function (Obj) {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Obj, 'typeDetectGlobalObject', {\n get: function get() {\n return this;\n },\n configurable: true,\n });\n var global = typeDetectGlobalObject;\n delete Obj.typeDetectGlobalObject;\n return global;\n })(Object.prototype);\n var symbolExists = typeof Symbol !== 'undefined';\n var mapExists = typeof Map !== 'undefined';\n var setExists = typeof Set !== 'undefined';\n var weakMapExists = typeof WeakMap !== 'undefined';\n var weakSetExists = typeof WeakSet !== 'undefined';\n var dataViewExists = typeof DataView !== 'undefined';\n var symbolIteratorExists = symbolExists && typeof Symbol.iterator !== 'undefined';\n var symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== 'undefined';\n var setEntriesExists = setExists && typeof Set.prototype.entries === 'function';\n var mapEntriesExists = mapExists && typeof Map.prototype.entries === 'function';\n var setIteratorPrototype = setEntriesExists && Object.getPrototypeOf(new Set().entries());\n var mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf(new Map().entries());\n var arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === 'function';\n var arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]());\n var stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === 'function';\n var stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(''[Symbol.iterator]());\n var toStringLeftSliceLength = 8;\n var toStringRightSliceLength = -1;\n function typeDetect(obj) {\n var typeofObj = typeof obj;\n if (typeofObj !== 'object') {\n return typeofObj;\n }\n if (obj === null) {\n return 'null';\n }\n if (obj === globalObject) {\n return 'global';\n }\n if (Array.isArray(obj) &&\n (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))) {\n return 'Array';\n }\n if (typeof window === 'object' && window !== null) {\n if (typeof window.location === 'object' && obj === window.location) {\n return 'Location';\n }\n if (typeof window.document === 'object' && obj === window.document) {\n return 'Document';\n }\n if (typeof window.navigator === 'object') {\n if (typeof window.navigator.mimeTypes === 'object' &&\n obj === window.navigator.mimeTypes) {\n return 'MimeTypeArray';\n }\n if (typeof window.navigator.plugins === 'object' &&\n obj === window.navigator.plugins) {\n return 'PluginArray';\n }\n }\n if ((typeof window.HTMLElement === 'function' ||\n typeof window.HTMLElement === 'object') &&\n obj instanceof window.HTMLElement) {\n if (obj.tagName === 'BLOCKQUOTE') {\n return 'HTMLQuoteElement';\n }\n if (obj.tagName === 'TD') {\n return 'HTMLTableDataCellElement';\n }\n if (obj.tagName === 'TH') {\n return 'HTMLTableHeaderCellElement';\n }\n }\n }\n var stringTag = (symbolToStringTagExists && obj[Symbol.toStringTag]);\n if (typeof stringTag === 'string') {\n return stringTag;\n }\n var objPrototype = Object.getPrototypeOf(obj);\n if (objPrototype === RegExp.prototype) {\n return 'RegExp';\n }\n if (objPrototype === Date.prototype) {\n return 'Date';\n }\n if (promiseExists && objPrototype === Promise.prototype) {\n return 'Promise';\n }\n if (setExists && objPrototype === Set.prototype) {\n return 'Set';\n }\n if (mapExists && objPrototype === Map.prototype) {\n return 'Map';\n }\n if (weakSetExists && objPrototype === WeakSet.prototype) {\n return 'WeakSet';\n }\n if (weakMapExists && objPrototype === WeakMap.prototype) {\n return 'WeakMap';\n }\n if (dataViewExists && objPrototype === DataView.prototype) {\n return 'DataView';\n }\n if (mapExists && objPrototype === mapIteratorPrototype) {\n return 'Map Iterator';\n }\n if (setExists && objPrototype === setIteratorPrototype) {\n return 'Set Iterator';\n }\n if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) {\n return 'Array Iterator';\n }\n if (stringIteratorExists && objPrototype === stringIteratorPrototype) {\n return 'String Iterator';\n }\n if (objPrototype === null) {\n return 'Object';\n }\n return Object\n .prototype\n .toString\n .call(obj)\n .slice(toStringLeftSliceLength, toStringRightSliceLength);\n }\n\n return typeDetect;\n\n}));\n","const isBufferExists = typeof Buffer !== 'undefined';\nconst isBufferFromExists = isBufferExists && typeof Buffer.from !== 'undefined';\n\nexport const isBuffer = isBufferExists\n ? /**\n * is value is Buffer?\n *\n * @param {*} value\n * @return {boolean}\n */\n function isBuffer(value) {\n return Buffer.isBuffer(value);\n }\n : /**\n * return false\n *\n * NOTE: for Buffer unsupported\n *\n * @return {boolean}\n */\n function isBuffer() {\n return false;\n };\n\nexport const copy = isBufferFromExists\n ? /**\n * copy Buffer\n *\n * @param {Buffer} value\n * @return {Buffer}\n */\n function copy(value) {\n return Buffer.from(value);\n }\n : isBufferExists\n ? /**\n * copy Buffer\n *\n * NOTE: for old node.js\n *\n * @param {Buffer} value\n * @return {Buffer}\n */\n function copy(value) {\n return new Buffer(value);\n }\n : /**\n * shallow copy\n *\n * NOTE: for Buffer unsupported\n *\n * @param {*}\n * @return {*}\n */\n function copy(value) {\n return value;\n };\n","import typeDetect from 'type-detect';\n\nimport { isBuffer } from './buffer.mjs';\n\n/**\n * detect type of value\n *\n * @param {*} value\n * @return {string}\n */\nexport function detectType(value) {\n // NOTE: isBuffer must execute before type-detect,\n // because type-detect returns 'Uint8Array'.\n if (isBuffer(value)) {\n return 'Buffer';\n }\n\n return typeDetect(value);\n}\n","import { detectType } from './detector.mjs';\n\n/**\n * collection types\n */\nconst collectionTypeSet = new Set([\n 'Arguments',\n 'Array',\n 'Map',\n 'Object',\n 'Set'\n]);\n\n/**\n * get value from collection\n *\n * @param {Array|Object|Map|Set} collection\n * @param {string|number|symbol} key\n * @param {string} [type=null]\n * @return {*}\n */\nexport function get(collection, key, type = null) {\n const valueType = type || detectType(collection);\n\n switch (valueType) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n return collection[key];\n case 'Map':\n return collection.get(key);\n case 'Set':\n // NOTE: Set.prototype.keys is alias of Set.prototype.values\n // it means key is equals value\n return key;\n default:\n }\n}\n\n/**\n * check to type string is collection\n *\n * @param {string} type\n */\nexport function isCollection(type) {\n return collectionTypeSet.has(type);\n}\n\n/**\n * set value to collection\n *\n * @param {Array|Object|Map|Set} collection\n * @param {string|number|symbol} key\n * @param {*} value\n * @param {string} [type=null]\n * @return {Array|Object|Map|Set}\n */\nexport function set(collection, key, value, type = null) {\n const valueType = type || detectType(collection);\n\n switch (valueType) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n collection[key] = value;\n break;\n case 'Map':\n collection.set(key, value);\n break;\n case 'Set':\n collection.add(value);\n break;\n default:\n }\n\n return collection;\n}\n","const freeGlobalThis =\n typeof globalThis !== 'undefined' &&\n globalThis !== null &&\n globalThis.Object === Object &&\n globalThis;\n\nconst freeGlobal =\n typeof global !== 'undefined' &&\n global !== null &&\n global.Object === Object &&\n global;\n\nconst freeSelf =\n typeof self !== 'undefined' &&\n self !== null &&\n self.Object === Object &&\n self;\n\nexport const globalObject =\n freeGlobalThis || freeGlobal || freeSelf || Function('return this')();\n","import { copy as cloneBuffer } from './buffer.mjs';\nimport { globalObject } from './global.mjs';\n\n/**\n * copy ArrayBuffer\n *\n * @param {ArrayBuffer} value\n * @return {ArrayBuffer}\n */\nfunction copyArrayBuffer(value) {\n return value.slice(0);\n}\n\n/**\n * copy Boolean\n *\n * @param {Boolean} value\n * @return {Boolean}\n */\nfunction copyBoolean(value) {\n return new Boolean(value.valueOf());\n}\n\n/**\n * copy DataView\n *\n * @param {DataView} value\n * @return {DataView}\n */\nfunction copyDataView(value) {\n // TODO: copy ArrayBuffer?\n return new DataView(value.buffer);\n}\n\n/**\n * copy Buffer\n *\n * @param {Buffer} value\n * @return {Buffer}\n */\nfunction copyBuffer(value) {\n return cloneBuffer(value);\n}\n\n/**\n * copy Date\n *\n * @param {Date} value\n * @return {Date}\n */\nfunction copyDate(value) {\n return new Date(value.getTime());\n}\n\n/**\n * copy Number\n *\n * @param {Number} value\n * @return {Number}\n */\nfunction copyNumber(value) {\n return new Number(value);\n}\n\n/**\n * copy RegExp\n *\n * @param {RegExp} value\n * @return {RegExp}\n */\nfunction copyRegExp(value) {\n return new RegExp(value.source, value.flags);\n}\n\n/**\n * copy String\n *\n * @param {String} value\n * @return {String}\n */\nfunction copyString(value) {\n return new String(value);\n}\n\n/**\n * copy TypedArray\n *\n * @param {*} value\n * @return {*}\n */\nfunction copyTypedArray(value, type) {\n const typedArray = globalObject[type];\n\n if (typedArray.from) {\n return globalObject[type].from(value);\n }\n\n return new globalObject[type](value);\n}\n\n/**\n * shallow copy\n *\n * @param {*} value\n * @return {*}\n */\nfunction shallowCopy(value) {\n return value;\n}\n\n/**\n * get empty Array\n *\n * @return {Array}\n */\nfunction getEmptyArray() {\n return [];\n}\n\n/**\n * get empty Map\n *\n * @return {Map}\n */\nfunction getEmptyMap() {\n return new Map();\n}\n\n/**\n * get empty Object\n *\n * @return {Object}\n */\nfunction getEmptyObject() {\n return {};\n}\n\n/**\n * get empty Set\n *\n * @return {Set}\n */\nfunction getEmptySet() {\n return new Set();\n}\n\nexport default new Map([\n // deep copy\n ['ArrayBuffer', copyArrayBuffer],\n ['Boolean', copyBoolean],\n ['Buffer', copyBuffer],\n ['DataView', copyDataView],\n ['Date', copyDate],\n ['Number', copyNumber],\n ['RegExp', copyRegExp],\n ['String', copyString],\n\n // typed arrays\n // TODO: pass bound function\n ['Float32Array', copyTypedArray],\n ['Float64Array', copyTypedArray],\n ['Int16Array', copyTypedArray],\n ['Int32Array', copyTypedArray],\n ['Int8Array', copyTypedArray],\n ['Uint16Array', copyTypedArray],\n ['Uint32Array', copyTypedArray],\n ['Uint8Array', copyTypedArray],\n ['Uint8ClampedArray', copyTypedArray],\n\n // shallow copy\n ['Array Iterator', shallowCopy],\n ['Map Iterator', shallowCopy],\n ['Promise', shallowCopy],\n ['Set Iterator', shallowCopy],\n ['String Iterator', shallowCopy],\n ['function', shallowCopy],\n ['global', shallowCopy],\n // NOTE: WeakMap and WeakSet cannot get entries\n ['WeakMap', shallowCopy],\n ['WeakSet', shallowCopy],\n\n // primitives\n ['boolean', shallowCopy],\n ['null', shallowCopy],\n ['number', shallowCopy],\n ['string', shallowCopy],\n ['symbol', shallowCopy],\n ['undefined', shallowCopy],\n\n // collections\n // NOTE: return empty value, because recursively copy later.\n ['Arguments', getEmptyArray],\n ['Array', getEmptyArray],\n ['Map', getEmptyMap],\n ['Object', getEmptyObject],\n ['Set', getEmptySet]\n\n // NOTE: type-detect returns following types\n // 'Location'\n // 'Document'\n // 'MimeTypeArray'\n // 'PluginArray'\n // 'HTMLQuoteElement'\n // 'HTMLTableDataCellElement'\n // 'HTMLTableHeaderCellElement'\n\n // TODO: is type-detect never return 'object'?\n // 'object'\n]);\n","import copyMap from './copy_map.mjs';\nimport { detectType } from './detector.mjs';\n\n/**\n * no operation\n */\nfunction noop() {}\n\n/**\n * copy value\n *\n * @param {*} value\n * @param {string} [type=null]\n * @param {Function} [customizer=noop]\n * @return {*}\n */\nexport function copy(value, type = null, customizer = noop) {\n if (arguments.length === 2 && typeof type === 'function') {\n customizer = type;\n type = null;\n }\n\n const valueType = type || detectType(value);\n const copyFunction = copyMap.get(valueType);\n\n if (valueType === 'Object') {\n const result = customizer(value, valueType);\n\n if (result !== undefined) {\n return result;\n }\n }\n\n // NOTE: TypedArray needs pass type to argument\n return copyFunction ? copyFunction(value, valueType) : value;\n}\n","import { detectType } from './detector.mjs';\nimport { get, isCollection, set } from './collection.mjs';\nimport { copy } from './copier.mjs';\n\n/**\n * deepcopy function\n *\n * @param {*} value\n * @param {Object|Function} [options]\n * @return {*}\n */\nexport default function deepcopy(value, options = {}) {\n if (typeof options === 'function') {\n options = {\n customizer: options\n };\n }\n\n const {\n // TODO: before/after customizer\n customizer\n // TODO: max depth\n // depth = Infinity,\n } = options;\n\n const valueType = detectType(value);\n\n if (!isCollection(valueType)) {\n return recursiveCopy(value, null, null, null, customizer);\n }\n\n const copiedValue = copy(value, valueType, customizer);\n\n const references = new WeakMap([[value, copiedValue]]);\n const visited = new WeakSet([value]);\n\n return recursiveCopy(value, copiedValue, references, visited, customizer);\n}\n\n/**\n * recursively copy\n *\n * @param {*} value target value\n * @param {*} clone clone of value\n * @param {WeakMap} references visited references of clone\n * @param {WeakSet} visited visited references of value\n * @param {Function} customizer user customize function\n * @return {*}\n */\nfunction recursiveCopy(value, clone, references, visited, customizer) {\n const type = detectType(value);\n const copiedValue = copy(value, type);\n\n // return if not a collection value\n if (!isCollection(type)) {\n return copiedValue;\n }\n\n let keys;\n\n switch (type) {\n case 'Arguments':\n case 'Array':\n keys = Object.keys(value);\n break;\n case 'Object':\n keys = Object.keys(value);\n keys.push(...Object.getOwnPropertySymbols(value));\n break;\n case 'Map':\n case 'Set':\n keys = value.keys();\n break;\n default:\n }\n\n // walk within collection with iterator\n for (let collectionKey of keys) {\n const collectionValue = get(value, collectionKey, type);\n\n if (visited.has(collectionValue)) {\n // for [Circular]\n set(clone, collectionKey, references.get(collectionValue), type);\n } else {\n const collectionValueType = detectType(collectionValue);\n const copiedCollectionValue = copy(collectionValue, collectionValueType);\n\n // save reference if value is collection\n if (isCollection(collectionValueType)) {\n references.set(collectionValue, copiedCollectionValue);\n visited.add(collectionValue);\n }\n\n set(\n clone,\n collectionKey,\n recursiveCopy(\n collectionValue,\n copiedCollectionValue,\n references,\n visited,\n customizer\n ),\n type\n );\n }\n }\n\n // TODO: isSealed/isFrozen/isExtensible\n\n return clone;\n}\n","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r{if(\"undefined\"==typeof self)return!1;if(\"top\"in self&&self!==top)try{top.window.document._=0}catch(e){return!1}return\"showOpenFilePicker\"in self})(),t=e?Promise.resolve().then(function(){return l}):Promise.resolve().then(function(){return v});async function n(...e){return(await t).default(...e)}const r=e?Promise.resolve().then(function(){return y}):Promise.resolve().then(function(){return b});async function i(...e){return(await r).default(...e)}const a=e?Promise.resolve().then(function(){return m}):Promise.resolve().then(function(){return k});async function o(...e){return(await a).default(...e)}const s=async e=>{const t=await e.getFile();return t.handle=e,t};var c=async(e=[{}])=>{Array.isArray(e)||(e=[e]);const t=[];e.forEach((e,n)=>{t[n]={description:e.description||\"Files\",accept:{}},e.mimeTypes?e.mimeTypes.map(r=>{t[n].accept[r]=e.extensions||[]}):t[n].accept[\"*/*\"]=e.extensions||[]});const n=await window.showOpenFilePicker({id:e[0].id,startIn:e[0].startIn,types:t,multiple:e[0].multiple||!1,excludeAcceptAllOption:e[0].excludeAcceptAllOption||!1}),r=await Promise.all(n.map(s));return e[0].multiple?r:r[0]},l={__proto__:null,default:c};function u(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+\" is not an object.\"));var t=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:t}})}return u=function(e){this.s=e,this.n=e.next},u.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new u(e)}const p=async(e,t,n=e.name,r)=>{const i=[],a=[];var o,s=!1,c=!1;try{for(var l,d=function(e){var t,n,r,i=2;for(\"undefined\"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);i--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new u(t.call(e));n=\"@@asyncIterator\",r=\"@@iterator\"}throw new TypeError(\"Object is not async iterable\")}(e.values());s=!(l=await d.next()).done;s=!1){const o=l.value,s=`${n}/${o.name}`;\"file\"===o.kind?a.push(o.getFile().then(t=>(t.directoryHandle=e,t.handle=o,Object.defineProperty(t,\"webkitRelativePath\",{configurable:!0,enumerable:!0,get:()=>s})))):\"directory\"!==o.kind||!t||r&&r(o)||i.push(p(o,t,s,r))}}catch(e){c=!0,o=e}finally{try{s&&null!=d.return&&await d.return()}finally{if(c)throw o}}return[...(await Promise.all(i)).flat(),...await Promise.all(a)]};var d=async(e={})=>{e.recursive=e.recursive||!1,e.mode=e.mode||\"read\";const t=await window.showDirectoryPicker({id:e.id,startIn:e.startIn,mode:e.mode});return(await(await t.values()).next()).done?[t]:p(t,e.recursive,void 0,e.skipDirectory)},y={__proto__:null,default:d},f=async(e,t=[{}],n=null,r=!1,i=null)=>{Array.isArray(t)||(t=[t]),t[0].fileName=t[0].fileName||\"Untitled\";const a=[];let o=null;if(e instanceof Blob&&e.type?o=e.type:e.headers&&e.headers.get(\"content-type\")&&(o=e.headers.get(\"content-type\")),t.forEach((e,t)=>{a[t]={description:e.description||\"Files\",accept:{}},e.mimeTypes?(0===t&&o&&e.mimeTypes.push(o),e.mimeTypes.map(n=>{a[t].accept[n]=e.extensions||[]})):o?a[t].accept[o]=e.extensions||[]:a[t].accept[\"*/*\"]=e.extensions||[]}),n)try{await n.getFile()}catch(e){if(n=null,r)throw e}const s=n||await window.showSaveFilePicker({suggestedName:t[0].fileName,id:t[0].id,startIn:t[0].startIn,types:a,excludeAcceptAllOption:t[0].excludeAcceptAllOption||!1});!n&&i&&i(s);const c=await s.createWritable();if(\"stream\"in e){const t=e.stream();return await t.pipeTo(c),s}return\"body\"in e?(await e.body.pipeTo(c),s):(await c.write(await e),await c.close(),s)},m={__proto__:null,default:f},w=async(e=[{}])=>(Array.isArray(e)||(e=[e]),new Promise((t,n)=>{const r=document.createElement(\"input\");r.type=\"file\";const i=[...e.map(e=>e.mimeTypes||[]),...e.map(e=>e.extensions||[])].join();r.multiple=e[0].multiple||!1,r.accept=i||\"\",r.style.display=\"none\",document.body.append(r);const a=e=>{\"function\"==typeof o&&o(),t(e)},o=e[0].legacySetup&&e[0].legacySetup(a,()=>o(n),r),s=()=>{window.removeEventListener(\"focus\",s),r.remove()};r.addEventListener(\"click\",()=>{window.addEventListener(\"focus\",s)}),r.addEventListener(\"change\",()=>{window.removeEventListener(\"focus\",s),r.remove(),a(r.multiple?Array.from(r.files):r.files[0])}),\"showPicker\"in HTMLInputElement.prototype?r.showPicker():r.click()})),v={__proto__:null,default:w},h=async(e=[{}])=>(Array.isArray(e)||(e=[e]),e[0].recursive=e[0].recursive||!1,new Promise((t,n)=>{const r=document.createElement(\"input\");r.type=\"file\",r.webkitdirectory=!0;const i=e=>{\"function\"==typeof a&&a(),t(e)},a=e[0].legacySetup&&e[0].legacySetup(i,()=>a(n),r);r.addEventListener(\"change\",()=>{let t=Array.from(r.files);e[0].recursive?e[0].recursive&&e[0].skipDirectory&&(t=t.filter(t=>t.webkitRelativePath.split(\"/\").every(t=>!e[0].skipDirectory({name:t,kind:\"directory\"})))):t=t.filter(e=>2===e.webkitRelativePath.split(\"/\").length),i(t)}),\"showPicker\"in HTMLInputElement.prototype?r.showPicker():r.click()})),b={__proto__:null,default:h},P=async(e,t={})=>{Array.isArray(t)&&(t=t[0]);const n=document.createElement(\"a\");let r=e;\"body\"in e&&(r=await async function(e,t){const n=e.getReader(),r=new ReadableStream({start:e=>async function t(){return n.read().then(({done:n,value:r})=>{if(!n)return e.enqueue(r),t();e.close()})}()}),i=new Response(r),a=await i.blob();return n.releaseLock(),new Blob([a],{type:t})}(e.body,e.headers.get(\"content-type\"))),n.download=t.fileName||\"Untitled\",n.href=URL.createObjectURL(await r);const i=()=>{\"function\"==typeof a&&a()},a=t.legacySetup&&t.legacySetup(i,()=>a(),n);return n.addEventListener(\"click\",()=>{setTimeout(()=>URL.revokeObjectURL(n.href),3e4),i()}),n.click(),null},k={__proto__:null,default:P};export{i as directoryOpen,h as directoryOpenLegacy,d as directoryOpenModern,n as fileOpen,w as fileOpenLegacy,c as fileOpenModern,o as fileSave,P as fileSaveLegacy,f as fileSaveModern,e as supported};\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","// https://github.com/electron/electron/issues/2288\nfunction isElectron() {\n // Renderer process\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\n return true;\n }\n\n // Main process\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) {\n return true;\n }\n\n // Detect the user agent when the `nodeIntegration` option is set to false\n if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isElectron;\n","import detectElectron from 'is-electron'\n\nexport const isEnvWithDom = typeof window === 'object' && typeof document === 'object' && document.nodeType === 9\nexport const isElectron = detectElectron()\n\n/**\n * Detects browser main thread **NOT** web worker or service worker\n */\nexport const isBrowser = isEnvWithDom && !isElectron\nexport const isElectronMain = isElectron && !isEnvWithDom\nexport const isElectronRenderer = isElectron && isEnvWithDom\nexport const isNode = typeof globalThis.process !== 'undefined' && typeof globalThis.process.release !== 'undefined' && globalThis.process.release.name === 'node' && !isElectron\n// @ts-ignore\n// eslint-disable-next-line no-undef\nexport const isWebWorker = typeof importScripts === 'function' && typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope\n\n// defeat bundlers replacing process.env.NODE_ENV with \"development\" or whatever\nexport const isTest = typeof globalThis.process !== 'undefined' && typeof globalThis.process.env !== 'undefined' && globalThis.process.env['NODE' + (() => '_')() + 'ENV'] === 'test'\nexport const isReactNative = typeof navigator !== 'undefined' && navigator.product === 'ReactNative'\n","import JSZip from \"jszip\";\nimport { fileSave } from \"browser-fs-access\";\nimport path from \"path\";\nimport { isNode, isElectronMain } from \"wherearewe\";\nexport function traduire(trads, langues) {\n const langueTrouvée = langues.find((l) => trads[l] !== undefined);\n const nImporteLaquelle = Object.values(trads)[0];\n const trad = langueTrouvée ? trads[langueTrouvée] : nImporteLaquelle;\n return trad;\n}\nexport async function zipper(fichiersDocs, fichiersSFIP, nomFichier) {\n if (!nomFichier.endsWith(\".zip\"))\n nomFichier = `${nomFichier}.zip`;\n const fichierZip = new JSZip();\n for (const doc of fichiersDocs) {\n fichierZip.file(doc.nom, doc.octets);\n }\n const dossierFichiersSFIP = fichierZip.folder(\"sfip\");\n for (const fichier of fichiersSFIP) {\n dossierFichiersSFIP.file(fichier.nom, fichier.octets);\n }\n await sauvegarderFichierZip({ fichierZip, nomFichier });\n}\nexport async function sauvegarderFichierZip({ fichierZip, nomFichier, }) {\n if (isNode || isElectronMain) {\n const fs = await import(\"fs\");\n const contenu = fichierZip.generateNodeStream();\n fs.mkdirSync(path.dirname(nomFichier), { recursive: true });\n const fluxÉcriture = fs.createWriteStream(nomFichier);\n const flux = contenu.pipe(fluxÉcriture);\n return new Promise((résoudre) => flux.on(\"finish\", résoudre));\n }\n else {\n const contenu = await fichierZip.generateAsync({ type: \"blob\" });\n await fileSave(contenu, { fileName: nomFichier });\n }\n}\n//# sourceMappingURL=donn%C3%A9es.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import { CID } from \"multiformats/cid\";\nimport { concat } from \"uint8arrays/concat\";\nexport function idcValide(idc) {\n if (typeof idc === \"string\") {\n try {\n CID.parse(idc);\n return true;\n }\n catch {\n return false;\n }\n }\n return false;\n}\n// Identique à it-to-buffer, mais avec option de maximum de taille\nexport async function toBuffer(stream, max) {\n let buffer = new Uint8Array(0);\n for await (const buf of stream) {\n buffer = concat([buffer, buf], buffer.length + buf.length);\n if (max !== undefined && buffer.length > max)\n return null;\n }\n return buffer;\n}\n//# sourceMappingURL=sfip.js.map","import { EventEmitter, once } from \"events\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nimport deepEqual from \"deep-equal\";\nclass ÉmetteurUneFois extends EventEmitter {\n condition;\n résultatPrêt;\n fOublier;\n résultat;\n f;\n constructor(f, condition) {\n super();\n this.condition = condition || (() => true);\n this.résultatPrêt = false;\n this.f = f;\n this.initialiser();\n }\n async initialiser() {\n const fSuivre = async (résultat) => {\n if (await this.condition(résultat)) {\n this.résultat = résultat;\n this.résultatPrêt = true;\n if (this.fOublier)\n this.lorsquePrêt();\n }\n };\n this.fOublier = await this.f(fSuivre);\n this.lorsquePrêt();\n }\n lorsquePrêt() {\n if (this.résultatPrêt) {\n if (!this.fOublier)\n throw new Error(\"Fuite !!\");\n if (this.fOublier)\n this.fOublier();\n this.emit(\"fini\", this.résultat);\n }\n }\n}\nexport const suivreBdDeFonction = async ({ fRacine, f, fSuivre, }) => {\n let oublierFSuivre;\n let idBdCible;\n let premièreFois = true;\n const oublierRacine = await fRacine({\n fSuivreRacine: async (nouvelIdBdCible) => {\n if (nouvelIdBdCible === undefined && premièreFois) {\n premièreFois = false;\n await f(undefined);\n }\n if (nouvelIdBdCible !== idBdCible) {\n idBdCible = nouvelIdBdCible;\n if (oublierFSuivre)\n await oublierFSuivre();\n if (idBdCible) {\n oublierFSuivre = await fSuivre({ id: idBdCible, fSuivreBd: f });\n }\n else {\n await f(undefined);\n oublierFSuivre = undefined;\n }\n }\n },\n });\n return async () => {\n await oublierRacine();\n if (oublierFSuivre)\n await oublierFSuivre();\n };\n};\nexport const uneFois = async function (f, condition) {\n const émetteur = new ÉmetteurUneFois(f, condition);\n const résultat = (await once(émetteur, \"fini\"));\n return résultat[0];\n};\nexport const faisRien = async () => {\n // Rien à faire\n};\nexport const ignorerNonDéfinis = (f) => {\n return async (x) => {\n if (x !== undefined) {\n return await f(x);\n }\n };\n};\nexport const attendreStabilité = (n) => {\n let déjàAppellé = false;\n let val = undefined;\n let annulerRebours = faisRien;\n return (v) => new Promise((résoudre) => {\n if (déjàAppellé && JSON.stringify(v) === val)\n return;\n déjàAppellé = true;\n annulerRebours();\n val = JSON.stringify(v);\n const crono = setTimeout(() => résoudre(true), n);\n annulerRebours = () => {\n clearTimeout(crono);\n résoudre(false);\n };\n });\n};\nexport const suivreBdsDeFonctionListe = async ({ fListe, f, fBranche, fIdBdDeBranche = (b) => b, fRéduction = (branches) => [...new Set(branches.flat())], fCode = (é) => é, }) => {\n const arbre = {};\n const dictBranches = {};\n let prêt = false; // Afin d'éviter d'appeler fFinale() avant que toutes les branches aient été évaluées 1 fois\n const fFinale = async () => {\n if (!prêt)\n return;\n // Arrêter si aucune des branches n'a encore donnée son premier résultat\n if (Object.values(arbre).length &&\n Object.values(arbre).every((x) => !x.déjàÉvaluée))\n return;\n const listeDonnées = Object.values(arbre)\n .map((x) => x.données)\n .filter((d) => d !== undefined);\n const réduits = fRéduction(listeDonnées);\n await f(réduits);\n };\n const verrou = new Semaphore();\n const fSuivreRacine = async (éléments) => {\n await verrou.acquire(\"racine\");\n if (éléments.some((x) => typeof fCode(x) !== \"string\")) {\n console.error(\"Définir fCode si les éléments ne sont pas en format texte (chaînes).\");\n throw new Error(\"Définir fCode si les éléments ne sont pas en format texte (chaînes).\");\n }\n const dictÉléments = Object.fromEntries(éléments.map((é) => [fCode(é), é]));\n const existants = Object.keys(arbre);\n let nouveaux = Object.keys(dictÉléments).filter((é) => !existants.includes(é));\n const disparus = existants.filter((é) => !Object.keys(dictÉléments).includes(é));\n const changés = Object.entries(dictÉléments)\n .filter((é) => {\n return !deepEqual(dictBranches[é[0]], é[1]);\n })\n .map((é) => é[0]);\n nouveaux.push(...changés);\n nouveaux = [...new Set(nouveaux)];\n await Promise.all(changés.map(async (c) => {\n if (arbre[c]) {\n const fOublier = arbre[c].fOublier;\n if (fOublier)\n await fOublier();\n delete arbre[c];\n }\n }));\n await Promise.all(disparus.map(async (d) => {\n const fOublier = arbre[d].fOublier;\n if (fOublier)\n await fOublier();\n delete arbre[d];\n }));\n await Promise.all(nouveaux.map(async (n) => {\n arbre[n] = {\n déjàÉvaluée: false,\n };\n const élément = dictÉléments[n];\n dictBranches[n] = élément;\n const idBdBranche = fIdBdDeBranche(élément);\n const fSuivreBranche = async (données) => {\n arbre[n].données = données;\n arbre[n].déjàÉvaluée = true;\n await fFinale();\n };\n const fOublier = await fBranche(idBdBranche, fSuivreBranche, élément);\n arbre[n].fOublier = fOublier;\n }));\n prêt = true;\n await fFinale();\n verrou.release(\"racine\");\n };\n const retourRacine = await fListe(fSuivreRacine);\n let oublierBdRacine;\n const fOublier = async () => {\n await oublierBdRacine();\n await Promise.all(Object.values(arbre).map((x) => x.fOublier && x.fOublier()));\n };\n if (typeof retourRacine === \"function\") {\n oublierBdRacine = retourRacine;\n return fOublier;\n }\n else {\n oublierBdRacine = retourRacine.fOublier;\n return Object.assign({}, retourRacine, { fOublier });\n }\n};\n//# sourceMappingURL=fonctions.js.map","/**\n * geoJSON validation according to the GeoJSON spefication Version 1\n * @module geoJSONValidation\n * @class Main\n * @exports {GJV}\n */\n\nconst definitions = {}\n\n/**\n * Test an object to see if it is a function\n * @method isFunction\n * @param object {Object}\n * @return {Boolean}\n */\nfunction isFunction (object) {\n return typeof (object) === 'function'\n}\n\n/**\n * A truthy test for objects\n * @method isObject\n * @param {Object}\n * @return {Boolean}\n */\nfunction isObject (object) {\n return object === Object(object)\n}\n\n/**\n * Formats error messages, calls the callback\n * @method done\n * @private\n * @param trace {Boolean} Whether or not to return the trace\n * @param [message]\n * @return {Boolean} is the object valid or not?\n */\nfunction _done (trace, message) {\n let valid = false\n\n if (typeof message === 'string') {\n message = [message]\n } else if (Object.prototype.toString.call(message) === '[object Array]') {\n if (message.length === 0) {\n valid = true\n }\n } else {\n valid = true\n }\n\n if (trace) {\n return message\n } else {\n return valid\n }\n}\n\n/**\n * calls a custom definition if one is avalible for the given type\n * @method _customDefinitions\n * @private\n * @param type {'String'} a GeoJSON object type\n * @param object {Object} the Object being tested\n * @return {Array} an array of errors\n */\nfunction _customDefinitions (type, object) {\n let errors\n\n if (isFunction(definitions[type])) {\n try {\n errors = definitions[type](object)\n } catch (e) {\n errors = ['Problem with custom definition for '+type+': '+e]\n }\n if (typeof result === 'string') {\n errors = [errors]\n }\n if (Object.prototype.toString.call(errors) === '[object Array]') {\n return errors\n }\n }\n return []\n}\n\n/**\n * Define a custom validation function for one of GeoJSON objects\n * @method define\n * @param type {GeoJSON Type} the type\n * @param definition {Function} A validation function\n * @return {Boolean} Return true if the function was loaded corectly else false\n */\nexports.define = (type, definition) => {\n if ((type in allTypes) && isFunction(definition)) {\n // TODO: check to see if the type is valid\n definitions[type] = definition\n return true\n } else {\n return false\n }\n}\n\n/**\n * Determines if an object is a position or not\n * @method isPosition\n * @param position {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isPosition = (position, trace = false) => {\n let errors = []\n\n // It must be an array\n if (Array.isArray(position)) {\n // and the array must have more than one element\n if (position.length <= 1) {\n errors.push('Position must be at least two elements')\n }\n\n position.forEach((pos, index) => {\n if (typeof pos !== 'number') {\n errors.push('Position must only contain numbers. Item '+pos+' at index '+index+' is invalid.')\n }\n })\n } else {\n errors.push('Position must be an array')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('Position', position))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a GeoJSON Object or not\n * @method isGeoJSONObject|valid\n * @param geoJSONObject {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isGeoJSONObject = exports.valid = (geoJSONObject, trace = false) => {\n if (!isObject(geoJSONObject)) {\n return _done(trace, ['must be a JSON Object'])\n } else {\n let errors = []\n if ('type' in geoJSONObject) {\n if (nonGeoTypes[geoJSONObject.type]) {\n return nonGeoTypes[geoJSONObject.type](geoJSONObject, trace)\n } else if (geoTypes[geoJSONObject.type]) {\n return geoTypes[geoJSONObject.type](geoJSONObject, trace)\n } else {\n errors.push('type must be one of: \"Point\", \"MultiPoint\", \"LineString\", \"MultiLineString\", \"Polygon\", \"MultiPolygon\", \"GeometryCollection\", \"Feature\", or \"FeatureCollection\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('GeoJSONObject', geoJSONObject))\n return _done(trace, errors)\n }\n}\n\n/**\n * Determines if an object is a Geometry Object or not\n * @method isGeometryObject\n * @param geometryObject {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isGeometryObject = (geometryObject, trace = false) => {\n if (!isObject(geometryObject)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('type' in geometryObject) {\n if (geoTypes[geometryObject.type]) {\n return geoTypes[geometryObject.type](geometryObject, trace)\n } else {\n errors.push('type must be one of: \"Point\", \"MultiPoint\", \"LineString\", \"MultiLineString\", \"Polygon\", \"MultiPolygon\" or \"GeometryCollection\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('GeometryObject', geometryObject))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a Point or not\n * @method isPoint\n * @param point {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isPoint = (point, trace = false) => {\n if (!isObject(point)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in point) {\n const t = exports.isBbox(point.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in point) {\n if (point.type !== 'Point') {\n errors.push('type must be \"Point\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in point) {\n const t = exports.isPosition(point.coordinates, true)\n if (t.length) {\n\terrors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('Point', point))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array can be interperted as coordinates for a MultiPoint\n * @method isMultiPointCoor\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiPointCoor = (coordinates, trace = false) => {\n let errors = []\n\n if (Array.isArray(coordinates)) {\n coordinates.forEach((val, index) => {\n const t = exports.isPosition(val, true)\n if (t.length) {\n // modify the err msg from \"isPosition\" to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalide positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('coordinates must be an array')\n }\n return _done(trace, errors)\n}\n/**\n * Determines if an object is a MultiPoint or not\n * @method isMultiPoint\n * @param position {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiPoint = (multiPoint, trace = false) => {\n if (!isObject(multiPoint)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in multiPoint) {\n const t = exports.isBbox(multiPoint.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in multiPoint) {\n if (multiPoint.type !== 'MultiPoint') {\n errors.push('type must be \"MultiPoint\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in multiPoint) {\n const t = exports.isMultiPointCoor(multiPoint.coordinates, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('MultiPoint', multiPoint))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array can be interperted as coordinates for a lineString\n * @method isLineStringCoor\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isLineStringCoor = (coordinates, trace = false) => {\n let errors = []\n if (Array.isArray(coordinates)) {\n if (coordinates.length > 1) {\n coordinates.forEach((val, index) => {\n const t = exports.isPosition(val, true)\n if (t.length) {\n // modify the err msg from 'isPosition' to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalide positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('coordinates must have at least two elements')\n }\n } else {\n errors.push('coordinates must be an array')\n }\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a lineString or not\n * @method isLineString\n * @param lineString {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isLineString = (lineString, trace = false) => {\n if (!isObject(lineString)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in lineString) {\n const t = exports.isBbox(lineString.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in lineString) {\n if (lineString.type !== 'LineString') {\n errors.push('type must be \"LineString\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in lineString) {\n const t = exports.isLineStringCoor(lineString.coordinates, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('LineString', lineString))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array can be interperted as coordinates for a MultiLineString\n * @method isMultiLineStringCoor\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiLineStringCoor = (coordinates, trace = false) => {\n let errors = []\n if (Array.isArray(coordinates)) {\n\tcoordinates.forEach((val, index) => {\n\t const t = exports.isLineStringCoor(val, true)\n\t if (t.length) {\n\t\t// modify the err msg from 'isPosition' to note the element number\n\t\tt[0] = 'at ' + index + ': '.concat(t[0])\n\t\t// build a list of invalide positions\n\t\terrors = errors.concat(t)\n\t }\n\t})\n } else {\n\terrors.push('coordinates must be an array')\n }\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a MultiLine String or not\n * @method isMultiLineString\n * @param multilineString {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiLineString = (multilineString, trace = false) => {\n if (!isObject(multilineString)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in multilineString) {\n const t = exports.isBbox(multilineString.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in multilineString) {\n if (multilineString.type !== 'MultiLineString') {\n errors.push('type must be \"MultiLineString\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in multilineString) {\n const t = exports.isMultiLineStringCoor(multilineString.coordinates, true)\n\n if (t.length) {\n errors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('MultiPoint', multilineString))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array is a linear Ring String or not\n * @method isMultiLineString\n * @private\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nfunction _linearRingCoor (coordinates, trace) {\n let errors = []\n if (Array.isArray(coordinates)) {\n // 4 or more positions\n coordinates.forEach((val, index) => {\n const t = exports.isPosition(val, true)\n if (t.length) {\n\t// modify the err msg from 'isPosition' to note the element number\n\tt[0] = 'at ' + index + ': '.concat(t[0])\n\t// build a list of invalide positions\n\terrors = errors.concat(t)\n }\n })\n\n // check the first and last positions to see if they are equivalent\n // TODO: maybe better checking?\n if (coordinates[0].toString() !== coordinates[coordinates.length - 1].toString()) {\n errors.push('The first and last positions must be equivalent')\n }\n\n if (coordinates.length < 4) {\n errors.push('coordinates must have at least four positions')\n }\n } else {\n errors.push('coordinates must be an array')\n }\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array is valid Polygon Coordinates or not\n * @method _polygonCoor\n * @private\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isPolygonCoor = (coordinates, trace = false) => {\n let errors = []\n if (Array.isArray(coordinates)) {\n coordinates.forEach((val, index) => {\n const t = _linearRingCoor(val, true)\n\n if (t.length) {\n // modify the err msg from 'isPosition' to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalid positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('coordinates must be an array')\n }\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid Polygon\n * @method isPolygon\n * @param polygon {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isPolygon = (polygon, trace = false) => {\n if (!isObject(polygon)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n\n if ('bbox' in polygon) {\n const t = exports.isBbox(polygon.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in polygon) {\n if (polygon.type !== 'Polygon') {\n errors.push('type must be \"Polygon\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in polygon) {\n const t = exports.isPolygonCoor(polygon.coordinates, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('Polygon', polygon))\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an array can be interperted as coordinates for a MultiPolygon\n * @method isMultiPolygonCoor\n * @param coordinates {Array}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiPolygonCoor = (coordinates, trace = false) => {\n let errors = []\n if (Array.isArray(coordinates)) {\n coordinates.forEach((val, index) => {\n const t = exports.isPolygonCoor(val, true)\n if (t.length) {\n // modify the err msg from 'isPosition' to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalide positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('coordinates must be an array')\n }\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid MultiPolygon\n * @method isMultiPolygon\n * @param multiPolygon {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isMultiPolygon = (multiPolygon, trace = false) => {\n if (!isObject(multiPolygon)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in multiPolygon) {\n const t = exports.isBbox(multiPolygon.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in multiPolygon) {\n if (multiPolygon.type !== 'MultiPolygon') {\n errors.push('type must be \"MultiPolygon\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('coordinates' in multiPolygon) {\n const t = exports.isMultiPolygonCoor(multiPolygon.coordinates, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n } else {\n errors.push('must have a member with the name \"coordinates\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('MultiPolygon', multiPolygon))\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid Geometry Collection\n * @method isGeometryCollection\n * @param geometryCollection {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isGeometryCollection = (geometryCollection, trace = false) => {\n if (!isObject(geometryCollection)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in geometryCollection) {\n const t = exports.isBbox(geometryCollection.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in geometryCollection) {\n if (geometryCollection.type !== 'GeometryCollection') {\n errors.push('type must be \"GeometryCollection\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('geometries' in geometryCollection) {\n if (Array.isArray(geometryCollection.geometries)) {\n geometryCollection.geometries.forEach((val, index) => {\n const t = exports.isGeometryObject(val, true)\n if (t.length) {\n // modify the err msg from 'isPosition' to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalide positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('\"geometries\" must be an array')\n }\n } else {\n errors.push('must have a member with the name \"geometries\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('GeometryCollection', geometryCollection))\n\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid Feature\n * @method isFeature\n * @param feature {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isFeature = (feature, trace = false) => {\n if (!isObject(feature)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in feature) {\n const t = exports.isBbox(feature.bbox, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n\n if ('type' in feature) {\n if (feature.type !== 'Feature') {\n errors.push('type must be \"Feature\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if (!('properties' in feature)) {\n errors.push('must have a member with the name \"properties\"')\n }\n\n if ('geometry' in feature) {\n if (feature.geometry !== null) {\n const t = exports.isGeometryObject(feature.geometry, true)\n if (t.length) {\n errors = errors.concat(t)\n }\n }\n } else {\n errors.push('must have a member with the name \"geometry\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('Feature', feature))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid Feature Collection\n * @method isFeatureCollection\n * @param featureCollection {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isFeatureCollection = (featureCollection, trace = false) => {\n if (!isObject(featureCollection)) {\n return _done(trace, ['must be a JSON Object'])\n }\n\n let errors = []\n if ('bbox' in featureCollection) {\n const t = exports.isBbox(featureCollection.bbox, true)\n if (t.length) {\n errors = t\n }\n }\n\n if ('type' in featureCollection) {\n if (featureCollection.type !== 'FeatureCollection') {\n errors.push('type must be \"FeatureCollection\"')\n }\n } else {\n errors.push('must have a member with the name \"type\"')\n }\n\n if ('features' in featureCollection) {\n if (Array.isArray(featureCollection.features)) {\n featureCollection.features.forEach((val, index) => {\n const t = exports.isFeature(val, true)\n if (t.length) {\n\n // modify the err msg from 'isPosition' to note the element number\n t[0] = 'at ' + index + ': '.concat(t[0])\n // build a list of invalide positions\n errors = errors.concat(t)\n }\n })\n } else {\n errors.push('\"Features\" must be an array')\n }\n } else {\n errors.push('must have a member with the name \"Features\"')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('FeatureCollection', featureCollection))\n return _done(trace, errors)\n}\n\n/**\n * Determines if an object is a valid Bounding Box\n * @method isBbox\n * @param bbox {Object}\n * @param [trace] {Boolean}\n * @return {Boolean}\n */\nexports.isBbox = (bbox, trace = false) => {\n let errors = []\n if (Array.isArray(bbox)) {\n if (bbox.length % 2 !== 0) {\n errors.push('bbox, must be a 2*n array')\n }\n } else {\n errors.push('bbox must be an array')\n }\n\n // run custom checks\n errors = errors.concat(_customDefinitions('Bbox', bbox))\n return _done(trace, errors)\n}\n\nconst nonGeoTypes = {\n 'Feature': exports.isFeature,\n 'FeatureCollection': exports.isFeatureCollection\n}\n\nconst geoTypes = {\n 'Point': exports.isPoint,\n 'MultiPoint': exports.isMultiPoint,\n 'LineString': exports.isLineString,\n 'MultiLineString': exports.isMultiLineString,\n 'Polygon': exports.isPolygon,\n 'MultiPolygon': exports.isMultiPolygon,\n 'GeometryCollection': exports.isGeometryCollection\n}\n\nconst allTypes = {\n 'Feature': exports.isFeature,\n 'FeatureCollection': exports.isFeatureCollection,\n 'Point': exports.isPoint,\n 'MultiPoint': exports.isMultiPoint,\n 'LineString': exports.isLineString,\n 'MultiLineString': exports.isMultiLineString,\n 'Polygon': exports.isPolygon,\n 'MultiPolygon': exports.isMultiPolygon,\n 'GeometryCollection': exports.isGeometryCollection,\n 'Bbox': exports.isBbox,\n 'Position': exports.isPosition,\n 'GeoJSON': exports.isGeoJSONObject,\n 'GeometryObject': exports.isGeometryObject\n}\n\nexports.allTypes = allTypes\n","export const estSpécificationHoroDatage = (val) => {\n return (!!val &&\n typeof val.système === \"string\" &&\n typeof val.val === \"string\");\n};\nexport class Cholqij {\n lireDate(date) {\n const { système, val } = date;\n switch (système) {\n case \"dateJS\":\n case \"grégorien\": {\n const date_ = new Date(val);\n if (isNaN(date_.valueOf()))\n throw new Error(val);\n return date_;\n }\n default:\n throw new Error(système);\n }\n }\n dateValide(val) {\n if (!estSpécificationHoroDatage(val))\n return false;\n try {\n this.lireDate(val);\n return true;\n }\n catch {\n return false;\n }\n }\n}\nexport const cholqij = new Cholqij();\n//# sourceMappingURL=cholqij.js.map","import { CID } from 'multiformats/cid';\nimport { base58btc } from 'multiformats/bases/base58';\nimport gjv from 'geojson-validation';\nimport { idcValide } from './sfip.js';\nimport { cholqij } from \"./cholqij.js\";\nexport const adresseOrbiteValide = (address) => {\n // Code de @orbitdb/core\n address = address.toString();\n if (!address.startsWith('/orbitdb') && !address.startsWith('\\\\orbitdb')) {\n return false;\n }\n address = address.replaceAll('/orbitdb/', '');\n address = address.replaceAll('\\\\orbitdb\\\\', '');\n address = address.replaceAll('/', '');\n address = address.replaceAll('\\\\', '');\n let idc;\n try {\n idc = CID.parse(address, base58btc);\n }\n catch (e) {\n return false;\n }\n return idc !== undefined;\n};\nexport const formatsFichiers = {\n images: [\n 'webp',\n 'svg',\n 'png',\n 'jpg',\n 'jpeg',\n 'jfif',\n 'pjpeg',\n 'pjp',\n 'gif',\n 'avif',\n 'apng',\n ],\n vidéo: ['mp4'],\n audio: ['mp3', 'ogg', 'm4a'],\n};\nexport const idcEtExt = (val) => {\n try {\n const [id, fichier] = val.split('/');\n if (idcValide(id)) {\n const ext = fichier.split('.').pop();\n if (ext) {\n return {\n ext,\n fichier,\n id,\n };\n }\n }\n }\n catch {\n // Rien à faire\n }\n return undefined;\n};\nexport const devinerCatégorie = (val) => {\n if (typeof val === 'boolean')\n return 'booléen';\n else if (typeof val === 'string') {\n try {\n const [id, fichier] = val.split('/');\n if (idcValide(id)) {\n const ext = fichier.split('.').pop();\n if (ext && formatsFichiers.images.includes(ext))\n return 'image';\n else if (ext && formatsFichiers.vidéo.includes(ext))\n return 'vidéo';\n else if (ext && formatsFichiers.audio.includes(ext))\n return 'audio';\n else if (ext)\n return 'fichier';\n }\n }\n catch {\n // Rien à faire\n }\n return adresseOrbiteValide(val) ? 'chaîne' : 'chaîneNonTraductible';\n }\n else if (typeof val === 'number') {\n if (val > 100000000000) {\n return 'horoDatage';\n }\n else {\n return 'numérique';\n }\n }\n else if (Array.isArray(val)) {\n if (val.length === 2 && val.every(x => typeof x === 'number' && x > 100000000000)) {\n return 'intervaleTemps';\n }\n else {\n return undefined;\n }\n }\n else if (gjv.valid(val)) {\n return 'géojson';\n }\n return undefined;\n};\nexport const estUnHoroDatage = (val) => {\n if ([\"number\", \"string\"].includes(typeof val)) {\n const date = new Date(val);\n return !isNaN(date.valueOf());\n }\n else {\n return cholqij.dateValide(val);\n }\n};\nexport const validFichier = (val, exts) => {\n if (typeof val !== \"string\")\n return false;\n let id;\n let fichier;\n try {\n [id, fichier] = val.split(\"/\");\n }\n catch {\n return false;\n }\n if (!fichier)\n return false;\n if (!idcValide(id))\n return false;\n if (exts) {\n const ext = fichier.split(\".\").pop();\n return !!ext && exts.includes(ext);\n }\n return true;\n};\nexport const validerCatégorieBase = ({ catégorie, val, }) => {\n switch (catégorie) {\n case \"numérique\":\n return typeof val === \"number\";\n case \"horoDatage\": {\n return estUnHoroDatage(val);\n }\n case \"intervaleTemps\":\n if (!Array.isArray(val))\n return false;\n if (val.length !== 2)\n return false;\n return val.every((d) => estUnHoroDatage(d));\n case \"chaîne\":\n return typeof val === \"string\" && adresseOrbiteValide(val);\n case \"chaîneNonTraductible\":\n return typeof val === \"string\";\n case \"booléen\":\n return typeof val === \"boolean\";\n case \"géojson\":\n if (!(typeof val === \"object\"))\n return false;\n return gjv.valid(val);\n case \"vidéo\":\n return validFichier(val, formatsFichiers.vidéo);\n case \"audio\":\n return validFichier(val, formatsFichiers.audio);\n case \"image\":\n return validFichier(val, formatsFichiers.images);\n case \"fichier\":\n return validFichier(val);\n default:\n return false;\n }\n};\nexport function validerCatégorieVal({ val, catégorie, }) {\n if (val === undefined)\n return true; // Permettre les valeurs manquantes\n if (catégorie.type === \"simple\") {\n return validerCatégorieBase({ catégorie: catégorie.catégorie, val });\n }\n else {\n if (Array.isArray(val)) {\n return val.every((v) => validerCatégorieBase({ catégorie: catégorie.catégorie, val: v }));\n }\n else {\n return false;\n }\n }\n}\n//# sourceMappingURL=valide.js.map","export const அங்கீகார_தத_மீதரவு_சாபி = \"அங்கீகறிக்கப்பட்ட தரவுகள்\";\nexport const பங்கேற்பாளர்_நெடுவரிசை_அடையாளம் = \"பங்கேற்பாளர்\";\nexport const பங்கேற்பாளர்_மாறி_அடையாளம் = \"/orbitdb/zdpuAunUaEc6CRX8wAjNixNioB6hF5SYvwJytx4ynm5wQx1vH\";\nexport const தேதி_நெடுவரிசை_அடையாளம் = \"தேதி\";\nexport const தேதி_மாறி_அடையாளம் = \"/orbitdb/zdpuAkz4jAZW5EM3rK7huQoZAE6L26dtpoVd4UYGGyaQkDmTx\";\nexport const மாறிலிகள் = {\n அங்கீகார_தத_மீதரவு_சாபி,\n பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்,\n பங்கேற்பாளர்_மாறி_அடையாளம்,\n தேதி_நெடுவரிசை_அடையாளம்,\n தேதி_மாறி_அடையாளம்,\n};\n//# sourceMappingURL=%E0%AE%AE%E0%AE%BE%E0%AE%B1%E0%AE%BF%E0%AE%B2%E0%AE%BF%E0%AE%95%E0%AE%B3%E0%AF%8D.js.map","import deepcopy from \"deepcopy\";\nimport { ignorerNonDéfinis, suivreBdDeFonction, uneFois, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { மாறிலிகள் as முன்னிருப்பாக_மாறிலிகள், தேதி_நெடுவரிசை_அடையாளம், தேதி_மாறி_அடையாளம், பங்கேற்பாளர்_நெடுவரிசை_அடையாளம், பங்கேற்பாளர்_மாறி_அடையாளம், அங்கீகார_தத_மீதரவு_சாபி, } from \"./\\u0BAE\\u0BBE\\u0BB1\\u0BBF\\u0BB2\\u0BBF\\u0B95\\u0BB3\\u0BCD.js\";\nconst குறியீட்டு_இல்லாமல்_வார்ப்புரு = (வார்ப்புரு) => {\n வார்ப்புரு = deepcopy(வார்ப்புரு);\n வார்ப்புரு.tableaux = வார்ப்புரு.tableaux.map((tableau) => ({\n clef: tableau.clef,\n cols: tableau.cols.map((col) => ({\n idColonne: col.idColonne,\n idVariable: col.idVariable,\n optionnelle: col.optionnelle,\n })),\n }));\n return வார்ப்புரு;\n};\nexport class கிளி {\n விண்மீன்;\n அட்டவணை_சாபி;\n குழு_அடையாளம்;\n வார்ப்புரு;\n மாறிலிகள்;\n constructor({ விண்மீன், அட்டவணை_சாபி, குழு_அடையாளம், வார்ப்புரு, மாறிலிகள், }) {\n this.விண்மீன் = விண்மீன்;\n this.அட்டவணை_சாபி = அட்டவணை_சாபி;\n this.குழு_அடையாளம் = குழு_அடையாளம்;\n வார்ப்புரு = கிளி.வார்ப்புரு_தயாரிப்பு({\n வார்ப்புரு,\n அட்டவணை_சாபி,\n குழு_அடையாளம்,\n மாறிலிகள்,\n });\n this.வார்ப்புரு = குறியீட்டு_இல்லாமல்_வார்ப்புரு(வார்ப்புரு);\n this.மாறிலிகள் = Object.assign({}, முன்னிருப்பாக_மாறிலிகள், மாறிலிகள்);\n }\n static வார்ப்புரு_தயாரிப்பு({ வார்ப்புரு, அட்டவணை_சாபி, குழு_அடையாளம், மாறிலிகள், }) {\n const நகல் = deepcopy(வார்ப்புரு);\n const வேண்டிய_அட்டவணை = நகல்.tableaux.find((அட்டவணை) => அட்டவணை.clef === அட்டவணை_சாபி);\n if (!வேண்டிய_அட்டவணை)\n throw new Error(\"அட்டவணை சாபி அட்டவணை வார்ப்புரில் கிடைத்ததில்லை.\");\n const தேதி_நெடுவரிசை_உள்ளதா = வேண்டிய_அட்டவணை.cols.find((நெடுவரிசை) => நெடுவரிசை.idColonne ===\n (மாறிலிகள்?.தேதி_நெடுவரிசை_அடையாளம் || தேதி_நெடுவரிசை_அடையாளம்));\n if (!தேதி_நெடுவரிசை_உள்ளதா) {\n வேண்டிய_அட்டவணை.cols.push({\n idVariable: மாறிலிகள்?.தேதி_மாறி_அடையாளம் || தேதி_மாறி_அடையாளம்,\n idColonne: மாறிலிகள்?.தேதி_நெடுவரிசை_அடையாளம் || தேதி_நெடுவரிசை_அடையாளம்,\n });\n நகல்.tableaux = நகல்.tableaux.map((அ) => {\n if (அ.clef === அட்டவணை_சாபி) {\n return வேண்டிய_அட்டவணை;\n }\n else {\n return அ;\n }\n });\n }\n if (!நகல்.nuées) {\n நகல்.nuées = [];\n }\n if (!நகல்.nuées.includes(குழு_அடையாளம்)) {\n நகல்.nuées.push(குழு_அடையாளம்);\n }\n return நகல்;\n }\n static async உருவாக்கு({ விண்மீன், வார்ப்புரு, அட்டவணை_சாபி, பேற்றோர், மாறிலிகள், }) {\n if (!விண்மீன்.nuées || !விண்மீன்.bds)\n throw new Error(\"விண்மீன் தயராரானதில்லை\");\n const குழு_அடையாளம் = await விண்மீன்.nuées.créerNuée({\n nuéeParent: பேற்றோர்,\n });\n வார்ப்புரு = this.வார்ப்புரு_தயாரிப்பு({\n வார்ப்புரு,\n அட்டவணை_சாபி,\n குழு_அடையாளம்,\n மாறிலிகள்,\n });\n for (const அட்டவணை of வார்ப்புரு.tableaux) {\n const அட்டவணை_அடையாளம் = await விண்மீன்.nuées.ajouterTableauNuée({\n idNuée: குழு_அடையாளம்,\n clefTableau: அட்டவணை.clef,\n });\n for (const நெடுவரிசை of அட்டவணை.cols) {\n await விண்மீன்.nuées.ajouterColonneTableauNuée({\n idTableau: அட்டவணை_அடையாளம்,\n idVariable: நெடுவரிசை.idVariable,\n idColonne: நெடுவரிசை.idColonne,\n });\n if (நெடுவரிசை.index) {\n /*await விண்மீன்.nuées.changerColIndexTableauNuée({\n idTableau: அட்டவணை_அடையாளம்,\n idColonne: நெடுவரிசை.idColonne,\n val: true,\n });*/\n }\n }\n if (வார்ப்புரு.motsClefs) {\n await விண்மீன்.nuées.ajouterMotsClefsNuée({\n idNuée: குழு_அடையாளம்,\n idsMotsClefs: வார்ப்புரு.motsClefs,\n });\n }\n }\n const அங்கீகரிக்கப்பட்ட_தரவுத்தளம்_வார்ப்புரு = {\n licence: வார்ப்புரு.licence,\n motsClefs: வார்ப்புரு.motsClefs,\n tableaux: வார்ப்புரு.tableaux.map((அட்டவணை) => {\n if (அட்டவணை.clef === அட்டவணை_சாபி) {\n return {\n clef: அட்டவணை.clef,\n cols: [\n ...அட்டவணை.cols,\n {\n idColonne: மாறிலிகள்?.பங்கேற்பாளர்_நெடுவரிசை_அடையாளம் ||\n பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்,\n idVariable: மாறிலிகள்?.பங்கேற்பாளர்_மாறி_அடையாளம் ||\n பங்கேற்பாளர்_மாறி_அடையாளம்,\n },\n ],\n };\n }\n else {\n return அட்டவணை;\n }\n }),\n };\n const தரவுத்தளம் = await விண்மீன்.bds.créerBdDeSchéma({\n schéma: அங்கீகரிக்கப்பட்ட_தரவுத்தளம்_வார்ப்புரு,\n });\n await விண்மீன்.nuées.sauvegarderMétadonnéeNuée({\n idNuée: குழு_அடையாளம்,\n clef: அங்கீகார_தத_மீதரவு_சாபி,\n valeur: தரவுத்தளம்,\n });\n return குழு_அடையாளம்;\n }\n async அங்கீகரிக்கப்பட்ட_உறுப்படிகளை_கேள்ளு({ செ, }) {\n return await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.விண்மீன்.nuées.suivreNuéesParents({\n idNuée: this.குழு_அடையாளம்,\n f: (பேற்றோர்கள்) => fSuivreRacine([this.குழு_அடையாளம், ...பேற்றோர்கள்].reverse()),\n });\n },\n f: async (உறுப்படிகள்) => {\n return await செ(உறுப்படிகள்);\n },\n fBranche: async (அடையாளம், fSuivreBranche) => {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine, }) => {\n return await this.அங்கீகார_தரவுத்தள்ளத்தைப்_கேள்ளு({\n செ: fSuivreRacine,\n அடையாளம்,\n });\n },\n f: ignorerNonDéfinis(fSuivreBranche),\n fSuivre: async ({ id, fSuivreBd, }) => {\n return await this.விண்மீன்.bds.suivreDonnéesDeTableauParClef({\n idBd: id,\n clefTableau: this.அட்டவணை_சாபி,\n f: fSuivreBd,\n });\n },\n });\n },\n });\n }\n async பரிந்துரைகளை_கேள்ளு({ செ, சந்ததி = true, }) {\n return await this.விண்மீன்.nuées.suivreDonnéesTableauNuée({\n idNuée: this.குழு_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n héritage: சந்ததி ? [\"descendance\", \"ascendance\"] : [\"ascendance\"],\n f: async (த) => {\n await செ(த.map((இ) => {\n return {\n பங்கேற்பாளர்: இ.idCompte,\n அடையாளம்: இ.élément.id,\n பரிந்துரை: இ.élément.données,\n };\n }));\n },\n nRésultatsDésirés: 1000,\n });\n }\n async என்_பரிந்துரைகளை_கேள்ளு({ செ, }) {\n return await this.விண்மீன்.bds.suivreDonnéesDeTableauUnique({\n schémaBd: this.வார்ப்புரு,\n idNuéeUnique: this.குழு_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n f: async (பரிந்துரைகள்) => {\n const பங்கேற்பாளர் = await this.விண்மீன்.obtIdCompte();\n await செ(பரிந்துரைகள்.map((ப) => {\n return {\n பங்கேற்பாளர்,\n அடையாளம்: ப.id,\n பரிந்துரை: ப.données,\n };\n }));\n },\n });\n }\n async பரிந்துரையு({ பரிந்துரை }) {\n const தேதியை_சேரு = (உறுப்படி) => {\n if (!உறுப்படி[this.மாறிலிகள்.தேதி_நெடுவரிசை_அடையாளம்]) {\n return {\n ...உறுப்படி,\n [this.மாறிலிகள்.தேதி_நெடுவரிசை_அடையாளம்]: Date.now(),\n };\n }\n return உறுப்படி;\n };\n const அடையாளம் = await this.விண்மீன்.bds.ajouterÉlémentÀTableauUnique({\n schémaBd: this.வார்ப்புரு,\n idNuéeUnique: this.குழு_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n vals: தேதியை_சேரு(பரிந்துரை),\n });\n return அடையாளம்[0];\n }\n async பரிந்துரையை_நீக்கு({ அடையாளம் }) {\n return await this.விண்மீன்.bds.effacerÉlémentDeTableauUnique({\n schémaBd: this.வார்ப்புரு,\n idNuéeUnique: this.குழு_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n idÉlément: அடையாளம்,\n });\n }\n async பரிந்துரையை_திருத்து({ பரிந்துரை, அடையாளம், }) {\n await this.விண்மீன்.bds.modifierÉlémentDeTableauUnique({\n schémaBd: this.வார்ப்புரு,\n idNuéeUnique: this.குழு_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n vals: பரிந்துரை,\n idÉlément: அடையாளம்,\n });\n }\n async அங்கீகார_தரவுத்தள்ளத்தைப்_கேள்ளு({ செ, அடையாளம், }) {\n const இறுதியான_செயலி = async (மீத்தரவு) => {\n const தரவுத்தள_அடையாளம் = மீத்தரவு[this.மாறிலிகள்.அங்கீகார_தத_மீதரவு_சாபி];\n if (typeof தரவுத்தள_அடையாளம் === \"string\")\n return await செ(தரவுத்தள_அடையாளம்);\n };\n return await this.விண்மீன்.nuées.suivreMétadonnéesNuée({\n idNuée: அடையாளம் || this.குழு_அடையாளம்,\n f: இறுதியான_செயலி,\n hériter: false,\n });\n }\n async அங்கீகார_தரவுத்தள்ளத்தைப்_பெறு() {\n const தரவுத்தள_அடையாளம் = await uneFois(async (செ) => {\n return await this.அங்கீகார_தரவுத்தள்ளத்தைப்_கேள்ளு({ செ });\n });\n return தரவுத்தள_அடையாளம்;\n }\n async அங்கீகரி({ பரிந்துரை, }) {\n const தரவுத்தள_அடையாளம் = await this.அங்கீகார_தரவுத்தள்ளத்தைப்_பெறு();\n const பரிந்துரை_உறுப்படி = Object.assign({}, பரிந்துரை.பரிந்துரை, {\n [this.மாறிலிகள்.பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்]: பரிந்துரை.பங்கேற்பாளர்,\n });\n const ஏற்கனவே_அங்கீகரிக்கப்பட்டவை = await uneFois(async (செ) => {\n return await this.அங்கீகரிக்கப்பட்ட_உறுப்படிகளை_கேள்ளு({ செ });\n });\n const இருக்கும்_உறுப்படி = ஏற்கனவே_அங்கீகரிக்கப்பட்டவை.find((அங்கீ) => this.குறியீட்டு_நெடுவரிசைகள்_சமம்(அங்கீ.données, பரிந்துரை_உறுப்படி));\n if (இருக்கும்_உறுப்படி) {\n // இந்த குறியீட்டு நெடுவரிசைகளின் மதிப்புகளுடன் இன்னொரு அங்கீகரிக்கப்பட்ட பரிந்துரை ஏற்கனவே இருந்தால், அதை திருத்தவும்.\n // விண்மீனின் bds.ajouterÉlément என்று செயலிக்கு சமீபத்தில் வரும் மாற்றங்களுடன் ஒரு வேளை இது இனிமேல் தேவைப்படாது.\n await this.அங்கீகரிக்கப்பட்ட_உறுப்படியை_திருத்து({\n பரிந்துரை,\n அடையாளம்: இருக்கும்_உறுப்படி.id,\n });\n return இருக்கும்_உறுப்படி.id;\n }\n else {\n return (await this.விண்மீன்.bds.ajouterÉlémentÀTableauParClef({\n idBd: தரவுத்தள_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n vals: பரிந்துரை_உறுப்படி,\n }))[0];\n }\n }\n async அங்கீகரிக்கப்பட்ட_உறுப்படியை_நீக்கு({ அடையாளம், }) {\n const தரவுத்தள_அடையாளம் = await this.அங்கீகார_தரவுத்தள்ளத்தைப்_பெறு();\n await this.விண்மீன்.bds.effacerÉlémentDeTableauParClef({\n idBd: தரவுத்தள_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n idÉlément: அடையாளம்,\n });\n }\n async அங்கீகரிக்கப்பட்ட_உறுப்படியை_திருத்து({ பரிந்துரை, அடையாளம், }) {\n const தரவுத்தள_அடையாளம் = await this.அங்கீகார_தரவுத்தள்ளத்தைப்_பெறு();\n await this.விண்மீன்.bds.modifierÉlémentDeTableauParClef({\n idBd: தரவுத்தள_அடையாளம்,\n clefTableau: this.அட்டவணை_சாபி,\n idÉlément: அடையாளம்,\n vals: {\n ...பரிந்துரை.பரிந்துரை,\n [this.மாறிலிகள்.பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்]: பரிந்துரை.பங்கேற்பாளர்,\n },\n });\n }\n குறியீட்டு_நெடுவரிசைகள்_சமம்(இ, ஈ) {\n const குறியீட்டு_நெடுவரிசைகள் = this.வார்ப்புரு.tableaux\n .find((அட்டவணை) => அட்டவணை.clef === this.அட்டவணை_சாபி)\n ?.cols.filter((நெடுவரிசை) => நெடுவரிசை.index)\n .map((நெடுவரிசை) => நெடுவரிசை.idColonne) || [];\n return குறியீட்டு_நெடுவரிசைகள்.every((நெடுவரிசை) => இ[நெடுவரிசை] === ஈ[நெடுவரிசை]);\n }\n async உறுப்படிகளை_கேள்ளு({ செ, பரிந்துரைகள் = \"எனது\", }) {\n const தகவல்கள் = {\n அங்கீகரிக்கப்பட்டவை: [],\n பந்திருரைக்கப்பட்டவை: [],\n };\n const செ_கடைசி = async () => {\n const உறுப்படிகள் = [];\n for (const ப of தகவல்கள்.பந்திருரைக்கப்பட்டவை) {\n const முந்தையானது = உறுப்படிகள்.find((இ) => this.குறியீட்டு_நெடுவரிசைகள்_சமம்(இ, ப));\n if (முந்தையானது) {\n // எல்லோரை விட புதுமையான பரிந்துரையை மட்டும் உள்ளிடவும்\n const தேதி_முந்தையானது = முந்தையானது[this.மாறிலிகள்.தேதி_நெடுவரிசை_அடையாளம்];\n const தேதி_புதுசு = ப[this.மாறிலிகள்.தேதி_நெடுவரிசை_அடையாளம்];\n if (தேதி_முந்தையானது &&\n தேதி_புதுசு &&\n தேதி_புதுசு > தேதி_முந்தையானது) {\n உறுப்படிகள்.splice(உறுப்படிகள்.indexOf(முந்தையானது), 1);\n உறுப்படிகள்.push(ப);\n }\n }\n else {\n உறுப்படிகள்.push(ப);\n }\n }\n for (const ப of தகவல்கள்.அங்கீகரிக்கப்பட்டவை) {\n const முந்தையானது = உறுப்படிகள்.find((இ) => this.குறியீட்டு_நெடுவரிசைகள்_சமம்(இ, ப));\n if (முந்தையானது) {\n உறுப்படிகள்.splice(உறுப்படிகள்.indexOf(முந்தையானது), 1);\n }\n உறுப்படிகள்.push(ப);\n }\n return await செ(உறுப்படிகள்);\n };\n const அங்கீகரிக்கப்பட்டவையை_மறந்துவிடு = await this.அங்கீகரிக்கப்பட்ட_உறுப்படிகளை_கேள்ளு({\n செ: async (இ) => {\n தகவல்கள்.அங்கீகரிக்கப்பட்டவை = இ.map((ஈ) => ஈ.données);\n await செ_கடைசி();\n },\n });\n const செ_மறந்துவிடு = [அங்கீகரிக்கப்பட்டவையை_மறந்துவிடு];\n if (பரிந்துரைகள் === \"அனைத்தும்\") {\n const பரிந்துரைக்கப்பட்டவையை_மறந்துவிடு = await this.பரிந்துரைகளை_கேள்ளு({\n செ: async (இ) => {\n தகவல்கள்.பந்திருரைக்கப்பட்டவை = இ.map((ஈ) => {\n return {\n [this.மாறிலிகள்.பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்]: ஈ.பங்கேற்பாளர்,\n ...ஈ.பரிந்துரை,\n };\n });\n await செ_கடைசி();\n },\n });\n செ_மறந்துவிடு.push(பரிந்துரைக்கப்பட்டவையை_மறந்துவிடு.fOublier);\n }\n else if (பரிந்துரைகள் === \"எனது\") {\n const பரிந்துரைக்கப்பட்டவையை_மறந்துவிடு = await this.என்_பரிந்துரைகளை_கேள்ளு({\n செ: async (இ) => {\n தகவல்கள்.பந்திருரைக்கப்பட்டவை = இ.map((ஈ) => {\n return {\n [this.மாறிலிகள்.பங்கேற்பாளர்_நெடுவரிசை_அடையாளம்]: ஈ.பங்கேற்பாளர்,\n ...ஈ.பரிந்துரை,\n };\n });\n await செ_கடைசி();\n },\n });\n செ_மறந்துவிடு.push(பரிந்துரைக்கப்பட்டவையை_மறந்துவிடு);\n }\n return async () => {\n await Promise.all(செ_மறந்துவிடு.map((செ) => செ()));\n };\n }\n}\n//# sourceMappingURL=%E0%AE%95%E0%AE%BF%E0%AE%B3%E0%AE%BF.js.map","export const அட்டவணை_சாபி = \"முறைமைகள்\";\n// சுற்றுப்பாதை அடையாளங்களை அனைத்தையும் மாற்றவும்\nexport const கிளி_குழு_அடையாளம் = \"/orbitdb/zdpuB2ZNKMRPnn8kwwL9UDY6VNdXxqxTUiEanjJ4Z6HuxEgWU\";\nexport const எண்ணிக்கை_சிறப்பு_சொல் = \"/orbitdb/zdpuAwiHHcXVqXtC5d2zTBC3kP8LkpMxHyp1BjjxVCboH6nPb\";\n// நெடுவரிசைகள்\nexport const முறைமை_குறியீடு_நெடுவரிசை_குறியீடு = \"குறியீடு\";\nexport const முறைமை_வகை_நெடுவரிசை_குறியீடு = \"வகை\";\nexport const முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு = \"ஒருங்குறி\";\nexport const முறைமை_குறிகள்_நெடுவரிசை_குறியீடு = \"குறிகள்\";\nexport const முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு = \"அடுக்குக்குறி\";\nexport const முறைமை_அடிமானங்கள்_நெடுவரிசை_குறியீடு = \"அடிமானங்கள்\";\nexport const முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு = \"பிரிப்பு\";\nexport const முறைமை_குறியீடு_மாறி_குறியீடு = \"/orbitdb/zdpuAx2asNr8YFLvEy8nP5u16SshcbMAhyHkZQm3hqEX2CEP6\";\nexport const முறைமை_வகை_மாறி_குறியீடு = \"/orbitdb/zdpuAmMYvS8f9WH95y3tyxDPgLsWjXu2zoB2bAy78JNsMkCWn\";\nexport const முறைமை_ஒருங்குறி_குறியீடு_மாறி_குறியீடு = \"/orbitdb/zdpuApW3gaGcGNtppzQQyzuzygfKiQ1WVtVpjQa21ALjqRUNo\";\nexport const முறைமை_குறிகள்_மாறி_குறியீடு = \"/orbitdb/zdpuAzeaU4DA5WCaKBr1B23UA9gtvMoRiUtPgA1PsuRJvtA6k\";\nexport const முறைமை_அடுக்குக்குறி_மாறி_குறியீடு = \"/orbitdb/zdpuB2xXUJ3kcsmzqhqbvUDNRrRH63dLoj6jw238Xu85oSVJp\";\nexport const முறைமை_அடிமானங்கள்_மாறி_குறியீடு = \"/orbitdb/zdpuAq1CqRxiFvcy7sUuB9wLPJ5Ex9Vrp6uFiyP7YB8G3T74s\";\nexport const முறைமை_பிரிப்பு_மாறி_குறியீடு = \"/orbitdb/zdpuAwi62CTtS6Tpu8Zf2pBFKEUGo3F27QZXCib4CVGXyBPVa\";\n//# sourceMappingURL=%E0%AE%AE%E0%AE%BE%E0%AE%B1%E0%AE%BF%E0%AE%B2%E0%AE%BF%E0%AE%95%E0%AE%B3%E0%AF%8D.js.map","import { கிளி } from \"@lassi-js/kili\";\nimport { எண்ணிக்கை_சிறப்பு_சொல், அட்டவணை_சாபி, முறைமை_குறியீடு_நெடுவரிசை_குறியீடு, முறைமை_வகை_நெடுவரிசை_குறியீடு, முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு, முறைமை_குறிகள்_நெடுவரிசை_குறியீடு, முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு, முறைமை_அடிமானங்கள்_நெடுவரிசை_குறியீடு, முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு, முறைமை_குறியீடு_மாறி_குறியீடு, முறைமை_வகை_மாறி_குறியீடு, முறைமை_ஒருங்குறி_குறியீடு_மாறி_குறியீடு, முறைமை_குறிகள்_மாறி_குறியீடு, முறைமை_அடுக்குக்குறி_மாறி_குறியீடு, முறைமை_அடிமானங்கள்_மாறி_குறியீடு, முறைமை_பிரிப்பு_மாறி_குறியீடு, கிளி_குழு_அடையாளம், } from \"./\\u0BAE\\u0BBE\\u0BB1\\u0BBF\\u0BB2\\u0BBF\\u0B95\\u0BB3\\u0BCD.js\";\nconst தரவுத்தள_வார்ப்புரு = {\n licence: \"ODbl-1_0\",\n motsClefs: [எண்ணிக்கை_சிறப்பு_சொல்],\n tableaux: [\n {\n cols: [\n {\n idColonne: முறைமை_குறியீடு_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_குறியீடு_மாறி_குறியீடு,\n index: true,\n },\n {\n idColonne: முறைமை_வகை_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_வகை_மாறி_குறியீடு,\n },\n {\n idColonne: முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_ஒருங்குறி_குறியீடு_மாறி_குறியீடு,\n },\n {\n idColonne: முறைமை_குறிகள்_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_குறிகள்_மாறி_குறியீடு,\n },\n {\n idColonne: முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_அடுக்குக்குறி_மாறி_குறியீடு,\n },\n {\n idColonne: முறைமை_அடிமானங்கள்_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_அடிமானங்கள்_மாறி_குறியீடு,\n },\n {\n idColonne: முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு,\n idVariable: முறைமை_பிரிப்பு_மாறி_குறியீடு,\n },\n ],\n clef: அட்டவணை_சாபி,\n },\n ],\n};\nexport const கிளி_தயாரிப்பு = ({ விண்மீன், }) => {\n return new கிளி({\n விண்மீன்: விண்மீன்,\n அட்டவணை_சாபி,\n வார்ப்புரு: தரவுத்தள_வார்ப்புரு,\n குழு_அடையாளம்: கிளி_குழு_அடையாளம்,\n });\n};\n//# sourceMappingURL=%E0%AE%95%E0%AE%BF%E0%AE%B3%E0%AE%BF.js.map","import merge from \"deepmerge\";\nimport { EventEmitter } from \"events\";\nimport _தகவல்கள் from \"./\\u0BA4\\u0B95\\u0BB5\\u0BB2\\u0BCD\\u0B95\\u0BB3\\u0BCD.json\" with { type: \"json\" };\nimport { கிளி_தயாரிப்பு } from \"./\\u0B95\\u0BBF\\u0BB3\\u0BBF.js\";\nimport { முறைமை_அடிமானங்கள்_நெடுவரிசை_குறியீடு, முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு, முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு, முறைமை_குறிகள்_நெடுவரிசை_குறியீடு, முறைமை_குறியீடு_நெடுவரிசை_குறியீடு, முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு, முறைமை_வகை_நெடுவரிசை_குறியீடு, } from \"./\\u0BAE\\u0BBE\\u0BB1\\u0BBF\\u0BB2\\u0BBF\\u0B95\\u0BB3\\u0BCD.js\";\nexport class எண்ணிக்கை {\n விண்மீன்_தகவல்கள்;\n விண்மீன்;\n கிளி;\n நடவடிக்கைகள்;\n கிளியை_மறந்துவிடு;\n constructor({ விண்மீன் }) {\n this.விண்மீன் = விண்மீன்;\n this.விண்மீன்_தகவல்கள் = {};\n this.நடவடிக்கைகள் =\n new EventEmitter();\n this._கிளி_தயாரிப்பு();\n }\n async கிளியைப்_பெறு() {\n return (this.கிளி ||\n (await new Promise((தீர்வு) => this.நடவடிக்கைகள்.once(\"கிளி தயார்\", தீர்வு))));\n }\n async _கிளி_தயாரிப்பு() {\n if (this.விண்மீன்) {\n this.கிளி = கிளி_தயாரிப்பு({\n விண்மீன்: this.விண்மீன்,\n });\n this.கிளியை_மறந்துவிடு =\n await this.கிளி.அங்கீகரிக்கப்பட்ட_உறுப்படிகளை_கேள்ளு({\n செ: (தகவல்கள்) => {\n this.விண்மீன்_தகவல்கள் =\n எண்ணிக்கை_தகவல்கள்_வடிவூட்டத்துக்கு_மாறு(தகவல்கள்);\n this.மாற்றம்_வந்துவிட்டது();\n },\n });\n this.நடவடிக்கைகள்.emit(\"கிளி தயார்\", this.கிளி);\n }\n }\n மாற்றம்_வந்துவிட்டது() {\n this.நடவடிக்கைகள்.emit(\"மாற்றம்\");\n }\n get தகவல்கள்() {\n return merge(_தகவல்கள், this.விண்மீன்_தகவல்கள்);\n }\n get முறைமைகள்() {\n return Object.keys(this.தகவல்கள்);\n }\n தகவல்களை_பெறு({ மொழி }) {\n const தகவல்_மொழி = this.தகவல்கள்[மொழி];\n if (!தகவல்_மொழி) {\n throw Error(`தெரியாத எண்ணுரு முறைமை ${மொழி}`);\n }\n return தகவல்_மொழி;\n }\n உரைக்கு_அடிமானம்({ எண், தகவல்_மொழி, }) {\n const { குறிகள், அடிமானங்கள் } = தகவல்_மொழி;\n const பிரிப்பு = தகவல்_மொழி.பிரிப்பு || \".\";\n const குறிகள்_ = [...குறிகள்];\n const எதிர் = எண் < 0;\n எண் = Math.abs(எண்);\n const தசம = எண்.toString().split(\".\")[1];\n let உரை = this._அடிமானம்_எழுதல்(எண், குறிகள்_, அடிமானங்கள்);\n if (உரை.length === 0) {\n உரை = குறிகள்_[0];\n }\n if (எதிர்) {\n உரை = \"-\" + உரை;\n }\n if (தசம) {\n உரை += பிரிப்பு[0] + [...தசம].map((த) => குறிகள்[parseInt(த)]).join(\"\");\n }\n return உரை;\n }\n எண்ணுக்கு_அடிமானம்({ உரை, தகவல்_மொழி, }) {\n if (RegExp(`[${தகவல்_மொழி.குறிகள்}${தகவல்_மொழி.பிரிப்பு || '\\.'}]+`, 'g').exec(உரை)?.[0] === உரை) {\n this.எண்ணுக்கு_அடிமானம்({ உரை, தகவல்_மொழி });\n }\n const அடிமானங்கள் = தகவல்_மொழி.அடிமானங்கள்;\n const குறிகள் = [...தகவல்_மொழி.குறிகள்];\n const பிரிப்பு = தகவல்_மொழி.பிரிப்பு || \".\";\n const எதிர் = உரை[0] === \"-\";\n if (எதிர்) {\n உரை = உரை.slice(1);\n }\n else {\n உரை = உரை.replace(/^\\++/, \"\");\n }\n const [முழு, தசம] = உரை.split(பிரிப்பு[0]);\n let எண் = 0;\n if (முழு) {\n const பெட்டியல் = [...முழு]\n .map((இ) => அடிமானங்கள்[இ] || குறிகள்.indexOf(இ))\n .reverse();\n if (பெட்டியல்.some(இ => இ < 0))\n throw new Error();\n const படித்தல் = (பெ) => {\n const ஆ = பெ[0];\n const ஐ = பெ.slice(1).find((ஈ) => ஈ > ஆ);\n const ஊ = (ஐ ? பெ.slice(1).indexOf(ஐ) : பெ.slice(1).length) + 1;\n const கீழ்_ = பெ.slice(1, ஊ);\n const கீழ் = கீழ்_.length ? படித்தல்(கீழ்_) : 1;\n const மேல் = பெ.slice(ஊ);\n const மேல்_ = மேல்.length ? படித்தல்(மேல்) : 0;\n return ஆ * கீழ் + மேல்_;\n };\n எண் = படித்தல்(பெட்டியல்);\n }\n if (தசம !== undefined) {\n if (தசம.length) {\n எண் += parseFloat(\".\" + [...தசம].map((இ) => குறிகள்.indexOf(இ).toString()).join(\"\"));\n }\n }\n if (எதிர்) {\n எண் *= -1;\n }\n return எண்;\n }\n உரைக்கு_இடஞ்சார்({ எண், தகவல்_மொழி, }) {\n const குறிகள் = [...தகவல்_மொழி[\"குறிகள்\"]];\n const அடி = குறிகள்.length;\n const பிரிப்பு = (தகவல்_மொழி[\"பிரிப்பு\"] || \".\")[0];\n if (அடி === 10) {\n let உரை = எண்.toString();\n if (உரை.includes(\".\")) {\n உரை = உரை.replace(\".\", பிரிப்பு);\n }\n return Array.prototype.map\n .call(உரை, (x) => (x === பிரிப்பு ? x : குறிகள்[parseInt(x)]))\n .join(\"\");\n }\n if (எண் === 0) {\n return குறிகள்[0];\n }\n const எதிர் = எண் < 0;\n let தசம = எண் % 1;\n தசம = parseFloat(தசம.toFixed(எ_சுற்று(எண்)));\n எண் = Math.abs(எண்);\n let உரை = \"\";\n while (எண்) {\n உரை = குறிகள்[Math.floor(எண் % அடி)] + உரை;\n எண் = Math.floor(எண் / அடி);\n }\n if (தசம) {\n உரை += பிரிப்பு;\n }\n let சுற்று;\n while (தசம !== 0) {\n சுற்று = எ_சுற்று(தசம);\n தசம *= அடி;\n உரை += குறிகள்[Math.floor(தசம)];\n தசம -= Math.floor(தசம);\n தசம = parseFloat(தசம.toFixed(சுற்று));\n }\n if (எதிர்) {\n உரை = \"-\" + உரை;\n }\n return உரை;\n }\n எண்ணுக்கு_இடஞ்சார்({ உரை, மொழி, தகவல்_மொழி, }) {\n const குறிகள் = [...தகவல்_மொழி[\"குறிகள்\"]];\n const அடுக்குக்குறி = தகவல்_மொழி[\"அடுக்குக்குறி\"] || \"eE\";\n const அடிமானம் = குறிகள்.length;\n const பிரிப்பு = தகவல்_மொழி[\"பிரிப்பு\"] || \".\";\n உரை = உரை.replace(/^\\++/, \"\");\n if (அடுக்குக்குறி.split(\"\").some((அடு) => உரை.includes(அடு))) {\n const [எண், அடு] = உரை.split(RegExp(அடுக்குக்குறி));\n return (this.எண்ணுக்கு_இடஞ்சார்({ உரை: எண், மொழி, தகவல்_மொழி }) *\n அடிமானம் ** this.எண்ணுக்கு({ உரை: அடு, மொழி }));\n }\n if (அடிமானம் === 10) {\n for (const [எ, குறி] of குறிகள்.entries()) {\n உரை = உரை.replace(குறி, எ.toString());\n }\n for (const பி of பிரிப்பு.split(\"\")) {\n உரை = உரை.replace(பி, \".\");\n }\n return parseFloat(உரை);\n }\n else {\n let எண் = 0;\n const பிரிவு = உரை.split(/\\./);\n let முழு = பிரிவு[0];\n const தசம = பிரிவு[1];\n const எதிர் = முழு[0] === \"-\";\n முழு = முழு.replace(/^-+/, \"\");\n if (முழு) {\n for (const அ of முழு) {\n எண் *= அடிமானம்;\n const இடம் = குறிகள்.indexOf(அ);\n if (இடம் === -1)\n throw new Error();\n எண் += குறிகள்.indexOf(அ);\n }\n }\n if (தசம) {\n let த = அடிமானம்;\n for (const அ of தசம) {\n எண் += குறிகள்.indexOf(அ) / த;\n எண் = parseFloat(எண்.toFixed(எ_சுற்று(1 / த)));\n த *= அடிமானம்;\n }\n }\n எண் = எதிர் ? -எண் : எண்;\n return எண்;\n }\n }\n உரைக்கு({ எண், மொழி }) {\n const தகவல்_மொழி = this.தகவல்களை_பெறு({ மொழி });\n if (தகவல்_மொழி.வகை === \"இடஞ்சார்\") {\n return this.உரைக்கு_இடஞ்சார்({ எண், தகவல்_மொழி });\n }\n else {\n return this.உரைக்கு_அடிமானம்({\n எண்,\n தகவல்_மொழி,\n });\n }\n }\n எண்ணுக்கு({ உரை, மொழி }) {\n const மொழிகள் = மொழி ? [மொழி] : this.முறைமைகள்;\n for (const மொ of மொழிகள்) {\n try {\n const தகவல்_மொழி = this.தகவல்களை_பெறு({ மொழி: மொ });\n const எண் = this.தகவல்களுடன்_எண்ணுக்கு({ உரை, மொழி: மொ, தகவல்_மொழி });\n if (!isNaN(எண்))\n return எண்;\n }\n catch {\n continue;\n }\n }\n throw new Error(`${உரை} என்று எண்ணை படிக்க முடியவில்லை.`);\n }\n தகவல்களுடன்_எண்ணுக்கு({ உரை, மொழி, தகவல்_மொழி, }) {\n const வகை = தகவல்_மொழி[\"வகை\"];\n if (வகை === \"இடஞ்சார்\") {\n return this.எண்ணுக்கு_இடஞ்சார்({ உரை, மொழி, தகவல்_மொழி });\n }\n else if (வகை === \"அடிமானம்\") {\n return this.எண்ணுக்கு_அடிமானம்({ உரை, தகவல்_மொழி });\n }\n else {\n throw Error(`தெரியாத எண்ணுரு முறைமை வகை ${வகை}`);\n }\n }\n _அடிமானம்_எழுதல்(எண், குறிகள், அடிமானங்கள்) {\n let மீதி = எண்;\n let உரை = \"\";\n for (const [அடி, மதிப்பு] of Object.entries(அடிமானங்கள்).sort((a, b) => b[1] - a[1])) {\n const ம = Math.floor(மீதி / மதிப்பு);\n if (ம) {\n மீதி -= ம * மதிப்பு;\n if (ம !== 1) {\n உரை += this._அடிமானம்_எழுதல்(ம, குறிகள், அடிமானங்கள்);\n }\n உரை += அடி;\n }\n }\n if (மீதி) {\n உரை = உரை + குறிகள்[Math.floor(மீதி)];\n }\n return உரை;\n }\n // ஒத்திசைவற்ற செயல்பாடுகள்\n பின்பற்று(செ) {\n this.நடவடிக்கைகள்.on(\"மாற்றம்\", செ);\n செ();\n return () => {\n this.நடவடிக்கைகள்.off(\"மாற்றம்\", செ);\n };\n }\n முறைமைகளை_பின்பற்று({ செ, }) {\n return this.பின்பற்று(() => செ(this.முறைமைகள்));\n }\n உரைக்கு_பின்பற்று({ எண், மொழி, செ, }) {\n return this.பின்பற்று(() => செ(this.உரைக்கு({ எண், மொழி })));\n }\n எணுக்கு_பின்பற்று({ உரை, மொழி, செ, }) {\n return this.பின்பற்று(() => செ(this.எண்ணுக்கு({ உரை, மொழி })));\n }\n async பரிந்துரையு(பரிந்துரை) {\n return (await this.கிளியைப்_பெறு()).பரிந்துரையு({ பரிந்துரை });\n }\n async அங்கீகரி(பரிந்துரை) {\n return (await this.கிளியைப்_பெறு()).அங்கீகரி({ பரிந்துரை });\n }\n async முடி() {\n if (this.கிளியை_மறந்துவிடு)\n await this.கிளியை_மறந்துவிடு();\n }\n}\nfunction எ_சுற்று(எண்) {\n const உ = எண்.toString();\n if (உ.includes(\"e\")) {\n const [ச, த] = உ.split(\"e-\");\n return parseInt(த) + ச.length;\n }\n else {\n return உ.length;\n }\n}\nfunction எண்ணிக்கை_தகவல்கள்_வடிவூட்டத்துக்கு_மாறு(வரிசைகள்) {\n const தகவல்கள் = {};\n for (const வ of வரிசைகள்) {\n const வகை = வ.données[முறைமை_வகை_நெடுவரிசை_குறியீடு];\n const குறியீடு = வ.données[முறைமை_குறியீடு_நெடுவரிசை_குறியீடு];\n if (வகை === \"இடஞ்சார்\") {\n const தகவல் = {\n வகை,\n குறிகள்: வ.données[முறைமை_குறிகள்_நெடுவரிசை_குறியீடு],\n ஒருங்குறி: வ.données[முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு],\n அடுக்குக்குறி: வ.données[முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு],\n பிரிப்பு: வ.données[முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு],\n };\n தகவல்கள்[குறியீடு] = தகவல்;\n }\n else if (வகை === \"அடிமானம்\") {\n const அடிமானங்கள் = வ.données[முறைமை_அடிமானங்கள்_நெடுவரிசை_குறியீடு];\n if (!அடிமானங்கள்)\n throw new Error(`${குறியீடு} என்று எண்ணுரு முறைமைக்காக அடிமானங்கள் தேவை.`);\n const தகவல் = {\n வகை,\n குறிகள்: வ.données[முறைமை_குறிகள்_நெடுவரிசை_குறியீடு],\n ஒருங்குறி: வ.données[முறைமை_ஒருங்குறி_குறியீடு_நெடுவரிசை_குறியீடு],\n அடுக்குக்குறி: வ.données[முறைமை_அடுக்குக்குறி_நெடுவரிசை_குறியீடு],\n அடிமானங்கள்: JSON.parse(அடிமானங்கள்),\n பிரிப்பு: வ.données[முறைமை_பிரிப்பு_நெடுவரிசை_குறியீடு],\n };\n தகவல்கள்[குறியீடு] = தகவல்;\n }\n }\n return தகவல்கள்;\n}\n//# sourceMappingURL=%E0%AE%8E%E0%AE%A3%E0%AF%8D%E0%AE%A3%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%88.js.map","/**\n * @packageDocumentation\n *\n * Return the first value in an (async)iterable\n *\n * @example\n *\n * ```javascript\n * import first from 'it-first'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const res = first(values)\n *\n * console.info(res) // 0\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import first from 'it-first'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const res = await first(values())\n *\n * console.info(res) // 0\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction first(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n for await (const entry of source) { // eslint-disable-line no-unreachable-loop\n return entry;\n }\n return undefined;\n })();\n }\n for (const entry of source) { // eslint-disable-line no-unreachable-loop\n return entry;\n }\n return undefined;\n}\nexport default first;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * The final batch may be smaller than the max.\n *\n * @example\n *\n * ```javascript\n * import batch from 'it-batch'\n * import all from 'it-all'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n * const batchSize = 2\n *\n * const result = all(batch(values, batchSize))\n *\n * console.info(result) // [0, 1], [2, 3], [4]\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import batch from 'it-batch'\n * import all from 'it-all'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const batchSize = 2\n * const result = await all(batch(values(), batchSize))\n *\n * console.info(result) // [0, 1], [2, 3], [4]\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction batch(source, size = 1) {\n size = Number(size);\n if (isAsyncIterable(source)) {\n return (async function* () {\n let things = [];\n if (size < 1) {\n size = 1;\n }\n if (size !== Math.round(size)) {\n throw new Error('Batch size must be an integer');\n }\n for await (const thing of source) {\n things.push(thing);\n while (things.length >= size) {\n yield things.slice(0, size);\n things = things.slice(size);\n }\n }\n while (things.length > 0) {\n yield things.slice(0, size);\n things = things.slice(size);\n }\n }());\n }\n return (function* () {\n let things = [];\n if (size < 1) {\n size = 1;\n }\n if (size !== Math.round(size)) {\n throw new Error('Batch size must be an integer');\n }\n for (const thing of source) {\n things.push(thing);\n while (things.length >= size) {\n yield things.slice(0, size);\n things = things.slice(size);\n }\n }\n while (things.length > 0) {\n yield things.slice(0, size);\n things = things.slice(size);\n }\n }());\n}\nexport default batch;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Takes an async iterator that emits promise-returning functions, invokes them in parallel and emits the results in the same order as the input.\n *\n * The final batch may be smaller than the batch size.\n *\n * @example\n *\n * ```javascript\n * import parallelBatch from 'it-parallel-batch'\n * import all from 'it-all'\n * import delay from 'delay'\n *\n * // This can also be an iterator, async iterator, generator, etc\n * const input = [\n * async () => {\n * await delay(500)\n *\n * return 1\n * },\n * async () => {\n * await delay(200)\n *\n * return 2\n * },\n * async () => {\n * await delay(100)\n *\n * return 3\n * }\n * ]\n *\n * const batchSize = 2\n *\n * const result = await all(parallelBatch(input, batchSize))\n *\n * console.info(result) // [1, 2, 3]\n * ```\n */\nimport batch from 'it-batch';\n/**\n * Takes an (async) iterator that emits promise-returning functions,\n * invokes them in parallel and emits the results as they become available but\n * in the same order as the input\n */\nexport default async function* parallelBatch(source, size = 1) {\n for await (const tasks of batch(source, size)) {\n const things = tasks.map(async (p) => {\n return p().then(value => ({ ok: true, value }), err => ({ ok: false, err }));\n });\n for (let i = 0; i < things.length; i++) {\n const result = await things[i];\n if (result.ok) {\n yield result.value;\n }\n else {\n throw result.err;\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * A class that lets you do operations over a list of Uint8Arrays without\n * copying them.\n *\n * ```js\n * import { Uint8ArrayList } from 'uint8arraylist'\n *\n * const list = new Uint8ArrayList()\n * list.append(Uint8Array.from([0, 1, 2]))\n * list.append(Uint8Array.from([3, 4, 5]))\n *\n * list.subarray()\n * // -> Uint8Array([0, 1, 2, 3, 4, 5])\n *\n * list.consume(3)\n * list.subarray()\n * // -> Uint8Array([3, 4, 5])\n *\n * // you can also iterate over the list\n * for (const buf of list) {\n * // ..do something with `buf`\n * }\n *\n * list.subarray(0, 1)\n * // -> Uint8Array([0])\n * ```\n *\n * ## Converting Uint8ArrayLists to Uint8Arrays\n *\n * There are two ways to turn a `Uint8ArrayList` into a `Uint8Array` - `.slice` and `.subarray` and one way to turn a `Uint8ArrayList` into a `Uint8ArrayList` with different contents - `.sublist`.\n *\n * ### slice\n *\n * Slice follows the same semantics as [Uint8Array.slice](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/slice) in that it creates a new `Uint8Array` and copies bytes into it using an optional offset & length.\n *\n * ```js\n * const list = new Uint8ArrayList()\n * list.append(Uint8Array.from([0, 1, 2]))\n * list.append(Uint8Array.from([3, 4, 5]))\n *\n * list.slice(0, 1)\n * // -> Uint8Array([0])\n * ```\n *\n * ### subarray\n *\n * Subarray attempts to follow the same semantics as [Uint8Array.subarray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/subarray) with one important different - this is a no-copy operation, unless the requested bytes span two internal buffers in which case it is a copy operation.\n *\n * ```js\n * const list = new Uint8ArrayList()\n * list.append(Uint8Array.from([0, 1, 2]))\n * list.append(Uint8Array.from([3, 4, 5]))\n *\n * list.subarray(0, 1)\n * // -> Uint8Array([0]) - no-copy\n *\n * list.subarray(2, 5)\n * // -> Uint8Array([2, 3, 4]) - copy\n * ```\n *\n * ### sublist\n *\n * Sublist creates and returns a new `Uint8ArrayList` that shares the underlying buffers with the original so is always a no-copy operation.\n *\n * ```js\n * const list = new Uint8ArrayList()\n * list.append(Uint8Array.from([0, 1, 2]))\n * list.append(Uint8Array.from([3, 4, 5]))\n *\n * list.sublist(0, 1)\n * // -> Uint8ArrayList([0]) - no-copy\n *\n * list.sublist(2, 5)\n * // -> Uint8ArrayList([2], [3, 4]) - no-copy\n * ```\n *\n * ## Inspiration\n *\n * Borrows liberally from [bl](https://www.npmjs.com/package/bl) but only uses native JS types.\n */\nimport { allocUnsafe, alloc } from 'uint8arrays/alloc';\nimport { concat } from 'uint8arrays/concat';\nimport { equals } from 'uint8arrays/equals';\nconst symbol = Symbol.for('@achingbrain/uint8arraylist');\nfunction findBufAndOffset(bufs, index) {\n if (index == null || index < 0) {\n throw new RangeError('index is out of bounds');\n }\n let offset = 0;\n for (const buf of bufs) {\n const bufEnd = offset + buf.byteLength;\n if (index < bufEnd) {\n return {\n buf,\n index: index - offset\n };\n }\n offset = bufEnd;\n }\n throw new RangeError('index is out of bounds');\n}\n/**\n * Check if object is a CID instance\n *\n * @example\n *\n * ```js\n * import { isUint8ArrayList, Uint8ArrayList } from 'uint8arraylist'\n *\n * isUint8ArrayList(true) // false\n * isUint8ArrayList([]) // false\n * isUint8ArrayList(new Uint8ArrayList()) // true\n * ```\n */\nexport function isUint8ArrayList(value) {\n return Boolean(value?.[symbol]);\n}\nexport class Uint8ArrayList {\n bufs;\n length;\n [symbol] = true;\n constructor(...data) {\n this.bufs = [];\n this.length = 0;\n if (data.length > 0) {\n this.appendAll(data);\n }\n }\n *[Symbol.iterator]() {\n yield* this.bufs;\n }\n get byteLength() {\n return this.length;\n }\n /**\n * Add one or more `bufs` to the end of this Uint8ArrayList\n */\n append(...bufs) {\n this.appendAll(bufs);\n }\n /**\n * Add all `bufs` to the end of this Uint8ArrayList\n */\n appendAll(bufs) {\n let length = 0;\n for (const buf of bufs) {\n if (buf instanceof Uint8Array) {\n length += buf.byteLength;\n this.bufs.push(buf);\n }\n else if (isUint8ArrayList(buf)) {\n length += buf.byteLength;\n this.bufs.push(...buf.bufs);\n }\n else {\n throw new Error('Could not append value, must be an Uint8Array or a Uint8ArrayList');\n }\n }\n this.length += length;\n }\n /**\n * Add one or more `bufs` to the start of this Uint8ArrayList\n */\n prepend(...bufs) {\n this.prependAll(bufs);\n }\n /**\n * Add all `bufs` to the start of this Uint8ArrayList\n */\n prependAll(bufs) {\n let length = 0;\n for (const buf of bufs.reverse()) {\n if (buf instanceof Uint8Array) {\n length += buf.byteLength;\n this.bufs.unshift(buf);\n }\n else if (isUint8ArrayList(buf)) {\n length += buf.byteLength;\n this.bufs.unshift(...buf.bufs);\n }\n else {\n throw new Error('Could not prepend value, must be an Uint8Array or a Uint8ArrayList');\n }\n }\n this.length += length;\n }\n /**\n * Read the value at `index`\n */\n get(index) {\n const res = findBufAndOffset(this.bufs, index);\n return res.buf[res.index];\n }\n /**\n * Set the value at `index` to `value`\n */\n set(index, value) {\n const res = findBufAndOffset(this.bufs, index);\n res.buf[res.index] = value;\n }\n /**\n * Copy bytes from `buf` to the index specified by `offset`\n */\n write(buf, offset = 0) {\n if (buf instanceof Uint8Array) {\n for (let i = 0; i < buf.length; i++) {\n this.set(offset + i, buf[i]);\n }\n }\n else if (isUint8ArrayList(buf)) {\n for (let i = 0; i < buf.length; i++) {\n this.set(offset + i, buf.get(i));\n }\n }\n else {\n throw new Error('Could not write value, must be an Uint8Array or a Uint8ArrayList');\n }\n }\n /**\n * Remove bytes from the front of the pool\n */\n consume(bytes) {\n // first, normalize the argument, in accordance with how Buffer does it\n bytes = Math.trunc(bytes);\n // do nothing if not a positive number\n if (Number.isNaN(bytes) || bytes <= 0) {\n return;\n }\n // if consuming all bytes, skip iterating\n if (bytes === this.byteLength) {\n this.bufs = [];\n this.length = 0;\n return;\n }\n while (this.bufs.length > 0) {\n if (bytes >= this.bufs[0].byteLength) {\n bytes -= this.bufs[0].byteLength;\n this.length -= this.bufs[0].byteLength;\n this.bufs.shift();\n }\n else {\n this.bufs[0] = this.bufs[0].subarray(bytes);\n this.length -= bytes;\n break;\n }\n }\n }\n /**\n * Extracts a section of an array and returns a new array.\n *\n * This is a copy operation as it is with Uint8Arrays and Arrays\n * - note this is different to the behaviour of Node Buffers.\n */\n slice(beginInclusive, endExclusive) {\n const { bufs, length } = this._subList(beginInclusive, endExclusive);\n return concat(bufs, length);\n }\n /**\n * Returns a alloc from the given start and end element index.\n *\n * In the best case where the data extracted comes from a single Uint8Array\n * internally this is a no-copy operation otherwise it is a copy operation.\n */\n subarray(beginInclusive, endExclusive) {\n const { bufs, length } = this._subList(beginInclusive, endExclusive);\n if (bufs.length === 1) {\n return bufs[0];\n }\n return concat(bufs, length);\n }\n /**\n * Returns a allocList from the given start and end element index.\n *\n * This is a no-copy operation.\n */\n sublist(beginInclusive, endExclusive) {\n const { bufs, length } = this._subList(beginInclusive, endExclusive);\n const list = new Uint8ArrayList();\n list.length = length;\n // don't loop, just set the bufs\n list.bufs = [...bufs];\n return list;\n }\n _subList(beginInclusive, endExclusive) {\n beginInclusive = beginInclusive ?? 0;\n endExclusive = endExclusive ?? this.length;\n if (beginInclusive < 0) {\n beginInclusive = this.length + beginInclusive;\n }\n if (endExclusive < 0) {\n endExclusive = this.length + endExclusive;\n }\n if (beginInclusive < 0 || endExclusive > this.length) {\n throw new RangeError('index is out of bounds');\n }\n if (beginInclusive === endExclusive) {\n return { bufs: [], length: 0 };\n }\n if (beginInclusive === 0 && endExclusive === this.length) {\n return { bufs: this.bufs, length: this.length };\n }\n const bufs = [];\n let offset = 0;\n for (let i = 0; i < this.bufs.length; i++) {\n const buf = this.bufs[i];\n const bufStart = offset;\n const bufEnd = bufStart + buf.byteLength;\n // for next loop\n offset = bufEnd;\n if (beginInclusive >= bufEnd) {\n // start after this buf\n continue;\n }\n const sliceStartInBuf = beginInclusive >= bufStart && beginInclusive < bufEnd;\n const sliceEndsInBuf = endExclusive > bufStart && endExclusive <= bufEnd;\n if (sliceStartInBuf && sliceEndsInBuf) {\n // slice is wholly contained within this buffer\n if (beginInclusive === bufStart && endExclusive === bufEnd) {\n // requested whole buffer\n bufs.push(buf);\n break;\n }\n // requested part of buffer\n const start = beginInclusive - bufStart;\n bufs.push(buf.subarray(start, start + (endExclusive - beginInclusive)));\n break;\n }\n if (sliceStartInBuf) {\n // slice starts in this buffer\n if (beginInclusive === 0) {\n // requested whole buffer\n bufs.push(buf);\n continue;\n }\n // requested part of buffer\n bufs.push(buf.subarray(beginInclusive - bufStart));\n continue;\n }\n if (sliceEndsInBuf) {\n if (endExclusive === bufEnd) {\n // requested whole buffer\n bufs.push(buf);\n break;\n }\n // requested part of buffer\n bufs.push(buf.subarray(0, endExclusive - bufStart));\n break;\n }\n // slice started before this buffer and ends after it\n bufs.push(buf);\n }\n return { bufs, length: endExclusive - beginInclusive };\n }\n indexOf(search, offset = 0) {\n if (!isUint8ArrayList(search) && !(search instanceof Uint8Array)) {\n throw new TypeError('The \"value\" argument must be a Uint8ArrayList or Uint8Array');\n }\n const needle = search instanceof Uint8Array ? search : search.subarray();\n offset = Number(offset ?? 0);\n if (isNaN(offset)) {\n offset = 0;\n }\n if (offset < 0) {\n offset = this.length + offset;\n }\n if (offset < 0) {\n offset = 0;\n }\n if (search.length === 0) {\n return offset > this.length ? this.length : offset;\n }\n // https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string-search_algorithm\n const M = needle.byteLength;\n if (M === 0) {\n throw new TypeError('search must be at least 1 byte long');\n }\n // radix\n const radix = 256;\n const rightmostPositions = new Int32Array(radix);\n // position of the rightmost occurrence of the byte c in the pattern\n for (let c = 0; c < radix; c++) {\n // -1 for bytes not in pattern\n rightmostPositions[c] = -1;\n }\n for (let j = 0; j < M; j++) {\n // rightmost position for bytes in pattern\n rightmostPositions[needle[j]] = j;\n }\n // Return offset of first match, -1 if no match\n const right = rightmostPositions;\n const lastIndex = this.byteLength - needle.byteLength;\n const lastPatIndex = needle.byteLength - 1;\n let skip;\n for (let i = offset; i <= lastIndex; i += skip) {\n skip = 0;\n for (let j = lastPatIndex; j >= 0; j--) {\n const char = this.get(i + j);\n if (needle[j] !== char) {\n skip = Math.max(1, j - right[char]);\n break;\n }\n }\n if (skip === 0) {\n return i;\n }\n }\n return -1;\n }\n getInt8(byteOffset) {\n const buf = this.subarray(byteOffset, byteOffset + 1);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getInt8(0);\n }\n setInt8(byteOffset, value) {\n const buf = allocUnsafe(1);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setInt8(0, value);\n this.write(buf, byteOffset);\n }\n getInt16(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 2);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getInt16(0, littleEndian);\n }\n setInt16(byteOffset, value, littleEndian) {\n const buf = alloc(2);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setInt16(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getInt32(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getInt32(0, littleEndian);\n }\n setInt32(byteOffset, value, littleEndian) {\n const buf = alloc(4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setInt32(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getBigInt64(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getBigInt64(0, littleEndian);\n }\n setBigInt64(byteOffset, value, littleEndian) {\n const buf = alloc(8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setBigInt64(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getUint8(byteOffset) {\n const buf = this.subarray(byteOffset, byteOffset + 1);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getUint8(0);\n }\n setUint8(byteOffset, value) {\n const buf = allocUnsafe(1);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setUint8(0, value);\n this.write(buf, byteOffset);\n }\n getUint16(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 2);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getUint16(0, littleEndian);\n }\n setUint16(byteOffset, value, littleEndian) {\n const buf = alloc(2);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setUint16(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getUint32(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getUint32(0, littleEndian);\n }\n setUint32(byteOffset, value, littleEndian) {\n const buf = alloc(4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setUint32(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getBigUint64(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getBigUint64(0, littleEndian);\n }\n setBigUint64(byteOffset, value, littleEndian) {\n const buf = alloc(8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setBigUint64(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getFloat32(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getFloat32(0, littleEndian);\n }\n setFloat32(byteOffset, value, littleEndian) {\n const buf = alloc(4);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setFloat32(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n getFloat64(byteOffset, littleEndian) {\n const buf = this.subarray(byteOffset, byteOffset + 8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n return view.getFloat64(0, littleEndian);\n }\n setFloat64(byteOffset, value, littleEndian) {\n const buf = alloc(8);\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n view.setFloat64(0, value, littleEndian);\n this.write(buf, byteOffset);\n }\n equals(other) {\n if (other == null) {\n return false;\n }\n if (!(other instanceof Uint8ArrayList)) {\n return false;\n }\n if (other.bufs.length !== this.bufs.length) {\n return false;\n }\n for (let i = 0; i < this.bufs.length; i++) {\n if (!equals(this.bufs[i], other.bufs[i])) {\n return false;\n }\n }\n return true;\n }\n /**\n * Create a Uint8ArrayList from a pre-existing list of Uint8Arrays. Use this\n * method if you know the total size of all the Uint8Arrays ahead of time.\n */\n static fromUint8Arrays(bufs, length) {\n const list = new Uint8ArrayList();\n list.bufs = bufs;\n if (length == null) {\n length = bufs.reduce((acc, curr) => acc + curr.byteLength, 0);\n }\n list.length = length;\n return list;\n }\n}\n/*\nfunction indexOf (needle: Uint8Array, haystack: Uint8Array, offset = 0) {\n for (let i = offset; i < haystack.byteLength; i++) {\n for (let j = 0; j < needle.length; j++) {\n if (haystack[i + j] !== needle[j]) {\n break\n }\n\n if (j === needle.byteLength -1) {\n return i\n }\n }\n\n if (haystack.byteLength - i < needle.byteLength) {\n break\n }\n }\n\n return -1\n}\n*/\n//# sourceMappingURL=index.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nconst DEFAULT_CHUNK_SIZE = 262144;\nexport const fixedSize = (options = {}) => {\n const chunkSize = options.chunkSize ?? DEFAULT_CHUNK_SIZE;\n return async function* fixedSizeChunker(source) {\n let list = new Uint8ArrayList();\n let currentLength = 0;\n let emitted = false;\n for await (const buffer of source) {\n list.append(buffer);\n currentLength += buffer.length;\n while (currentLength >= chunkSize) {\n yield list.slice(0, chunkSize);\n emitted = true;\n // throw away consumed bytes\n if (chunkSize === list.length) {\n list = new Uint8ArrayList();\n currentLength = 0;\n }\n else {\n const newBl = new Uint8ArrayList();\n newBl.append(list.sublist(chunkSize));\n list = newBl;\n // update our offset\n currentLength -= chunkSize;\n }\n }\n }\n if (!emitted || currentLength > 0) {\n // return any remaining bytes\n yield list.subarray(0, currentLength);\n }\n };\n};\n//# sourceMappingURL=fixed-size.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","const textDecoder = new TextDecoder()\n\n/**\n * @typedef {import('./interface.js').RawPBLink} RawPBLink\n */\n\n/**\n * @typedef {import('./interface.js').RawPBNode} RawPBNode\n */\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @returns {[number, number]}\n */\nfunction decodeVarint (bytes, offset) {\n let v = 0\n\n for (let shift = 0; ; shift += 7) {\n /* c8 ignore next 3 */\n if (shift >= 64) {\n throw new Error('protobuf: varint overflow')\n }\n /* c8 ignore next 3 */\n if (offset >= bytes.length) {\n throw new Error('protobuf: unexpected end of data')\n }\n\n const b = bytes[offset++]\n v += shift < 28 ? (b & 0x7f) << shift : (b & 0x7f) * (2 ** shift)\n if (b < 0x80) {\n break\n }\n }\n return [v, offset]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @returns {[Uint8Array, number]}\n */\nfunction decodeBytes (bytes, offset) {\n let byteLen\n ;[byteLen, offset] = decodeVarint(bytes, offset)\n const postOffset = offset + byteLen\n\n /* c8 ignore next 3 */\n if (byteLen < 0 || postOffset < 0) {\n throw new Error('protobuf: invalid length')\n }\n /* c8 ignore next 3 */\n if (postOffset > bytes.length) {\n throw new Error('protobuf: unexpected end of data')\n }\n\n return [bytes.subarray(offset, postOffset), postOffset]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} index\n * @returns {[number, number, number]}\n */\nfunction decodeKey (bytes, index) {\n let wire\n ;[wire, index] = decodeVarint(bytes, index)\n // [wireType, fieldNum, newIndex]\n return [wire & 0x7, wire >> 3, index]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {RawPBLink}\n */\nfunction decodeLink (bytes) {\n /** @type {RawPBLink} */\n const link = {}\n const l = bytes.length\n let index = 0\n\n while (index < l) {\n let wireType, fieldNum\n ;[wireType, fieldNum, index] = decodeKey(bytes, index)\n\n if (fieldNum === 1) {\n if (link.Hash) {\n throw new Error('protobuf: (PBLink) duplicate Hash section')\n }\n if (wireType !== 2) {\n throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Hash`)\n }\n if (link.Name !== undefined) {\n throw new Error('protobuf: (PBLink) invalid order, found Name before Hash')\n }\n if (link.Tsize !== undefined) {\n throw new Error('protobuf: (PBLink) invalid order, found Tsize before Hash')\n }\n\n [link.Hash, index] = decodeBytes(bytes, index)\n } else if (fieldNum === 2) {\n if (link.Name !== undefined) {\n throw new Error('protobuf: (PBLink) duplicate Name section')\n }\n if (wireType !== 2) {\n throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Name`)\n }\n if (link.Tsize !== undefined) {\n throw new Error('protobuf: (PBLink) invalid order, found Tsize before Name')\n }\n\n let byts\n ;[byts, index] = decodeBytes(bytes, index)\n link.Name = textDecoder.decode(byts)\n } else if (fieldNum === 3) {\n if (link.Tsize !== undefined) {\n throw new Error('protobuf: (PBLink) duplicate Tsize section')\n }\n if (wireType !== 0) {\n throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Tsize`)\n }\n\n [link.Tsize, index] = decodeVarint(bytes, index)\n } else {\n throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${fieldNum}`)\n }\n }\n\n /* c8 ignore next 3 */\n if (index > l) {\n throw new Error('protobuf: (PBLink) unexpected end of data')\n }\n\n return link\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {RawPBNode}\n */\nexport function decodeNode (bytes) {\n const l = bytes.length\n let index = 0\n /** @type {RawPBLink[]|void} */\n let links = undefined // eslint-disable-line no-undef-init\n let linksBeforeData = false\n /** @type {Uint8Array|void} */\n let data = undefined // eslint-disable-line no-undef-init\n\n while (index < l) {\n let wireType, fieldNum\n ;[wireType, fieldNum, index] = decodeKey(bytes, index)\n\n if (wireType !== 2) {\n throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${wireType}`)\n }\n\n if (fieldNum === 1) {\n if (data) {\n throw new Error('protobuf: (PBNode) duplicate Data section')\n }\n\n [data, index] = decodeBytes(bytes, index)\n if (links) {\n linksBeforeData = true\n }\n } else if (fieldNum === 2) {\n if (linksBeforeData) { // interleaved Links/Data/Links\n throw new Error('protobuf: (PBNode) duplicate Links section')\n } else if (!links) {\n links = []\n }\n let byts\n ;[byts, index] = decodeBytes(bytes, index)\n links.push(decodeLink(byts))\n } else {\n throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${fieldNum}`)\n }\n }\n\n /* c8 ignore next 3 */\n if (index > l) {\n throw new Error('protobuf: (PBNode) unexpected end of data')\n }\n\n /** @type {RawPBNode} */\n const node = {}\n if (data) {\n node.Data = data\n }\n node.Links = links || []\n return node\n}\n","const textEncoder = new TextEncoder()\nconst maxInt32 = 2 ** 32\nconst maxUInt32 = 2 ** 31\n\n/**\n * @typedef {import('./interface.js').RawPBLink} RawPBLink\n */\n\n/**\n * @typedef {import('./interface.js').RawPBNode} RawPBNode\n */\n\n// the encoders work backward from the end of the bytes array\n\n/**\n * encodeLink() is passed a slice of the parent byte array that ends where this\n * link needs to end, so it packs to the right-most part of the passed `bytes`\n *\n * @param {RawPBLink} link\n * @param {Uint8Array} bytes\n * @returns {number}\n */\nfunction encodeLink (link, bytes) {\n let i = bytes.length\n\n if (typeof link.Tsize === 'number') {\n if (link.Tsize < 0) {\n throw new Error('Tsize cannot be negative')\n }\n if (!Number.isSafeInteger(link.Tsize)) {\n throw new Error('Tsize too large for encoding')\n }\n i = encodeVarint(bytes, i, link.Tsize) - 1\n bytes[i] = 0x18\n }\n\n if (typeof link.Name === 'string') {\n const nameBytes = textEncoder.encode(link.Name)\n i -= nameBytes.length\n bytes.set(nameBytes, i)\n i = encodeVarint(bytes, i, nameBytes.length) - 1\n bytes[i] = 0x12\n }\n\n if (link.Hash) {\n i -= link.Hash.length\n bytes.set(link.Hash, i)\n i = encodeVarint(bytes, i, link.Hash.length) - 1\n bytes[i] = 0xa\n }\n\n return bytes.length - i\n}\n\n/**\n * Encodes a PBNode into a new byte array of precisely the correct size\n *\n * @param {RawPBNode} node\n * @returns {Uint8Array}\n */\nexport function encodeNode (node) {\n const size = sizeNode(node)\n const bytes = new Uint8Array(size)\n let i = size\n\n if (node.Data) {\n i -= node.Data.length\n bytes.set(node.Data, i)\n i = encodeVarint(bytes, i, node.Data.length) - 1\n bytes[i] = 0xa\n }\n\n if (node.Links) {\n for (let index = node.Links.length - 1; index >= 0; index--) {\n const size = encodeLink(node.Links[index], bytes.subarray(0, i))\n i -= size\n i = encodeVarint(bytes, i, size) - 1\n bytes[i] = 0x12\n }\n }\n\n return bytes\n}\n\n/**\n * work out exactly how many bytes this link takes up\n *\n * @param {RawPBLink} link\n * @returns\n */\nfunction sizeLink (link) {\n let n = 0\n\n if (link.Hash) {\n const l = link.Hash.length\n n += 1 + l + sov(l)\n }\n\n if (typeof link.Name === 'string') {\n const l = textEncoder.encode(link.Name).length\n n += 1 + l + sov(l)\n }\n\n if (typeof link.Tsize === 'number') {\n n += 1 + sov(link.Tsize)\n }\n\n return n\n}\n\n/**\n * Work out exactly how many bytes this node takes up\n *\n * @param {RawPBNode} node\n * @returns {number}\n */\nfunction sizeNode (node) {\n let n = 0\n\n if (node.Data) {\n const l = node.Data.length\n n += 1 + l + sov(l)\n }\n\n if (node.Links) {\n for (const link of node.Links) {\n const l = sizeLink(link)\n n += 1 + l + sov(l)\n }\n }\n\n return n\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @param {number} v\n * @returns {number}\n */\nfunction encodeVarint (bytes, offset, v) {\n offset -= sov(v)\n const base = offset\n\n while (v >= maxUInt32) {\n bytes[offset++] = (v & 0x7f) | 0x80\n v /= 128\n }\n\n while (v >= 128) {\n bytes[offset++] = (v & 0x7f) | 0x80\n v >>>= 7\n }\n\n bytes[offset] = v\n\n return base\n}\n\n/**\n * size of varint\n *\n * @param {number} x\n * @returns {number}\n */\nfunction sov (x) {\n if (x % 2 === 0) {\n x++\n }\n return Math.floor((len64(x) + 6) / 7)\n}\n\n/**\n * golang math/bits, how many bits does it take to represent this integer?\n *\n * @param {number} x\n * @returns {number}\n */\nfunction len64 (x) {\n let n = 0\n if (x >= maxInt32) {\n x = Math.floor(x / maxInt32)\n n = 32\n }\n if (x >= (1 << 16)) {\n x >>>= 16\n n += 16\n }\n if (x >= (1 << 8)) {\n x >>>= 8\n n += 8\n }\n return n + len8tab[x]\n}\n\n// golang math/bits\nconst len8tab = [\n 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8\n]\n","import { CID } from 'multiformats/cid'\n\n/**\n * @typedef {import('./interface.js').PBLink} PBLink\n * @typedef {import('./interface.js').PBNode} PBNode\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView} ByteView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView} ArrayBufferView\n */\n\nconst pbNodeProperties = ['Data', 'Links']\nconst pbLinkProperties = ['Hash', 'Name', 'Tsize']\n\nconst textEncoder = new TextEncoder()\n\n/**\n * @param {PBLink} a\n * @param {PBLink} b\n * @returns {number}\n */\nfunction linkComparator (a, b) {\n if (a === b) {\n return 0\n }\n\n const abuf = a.Name ? textEncoder.encode(a.Name) : []\n const bbuf = b.Name ? textEncoder.encode(b.Name) : []\n\n let x = abuf.length\n let y = bbuf.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (abuf[i] !== bbuf[i]) {\n x = abuf[i]\n y = bbuf[i]\n break\n }\n }\n\n return x < y ? -1 : y < x ? 1 : 0\n}\n\n/**\n * @param {any} node\n * @param {string[]} properties\n * @returns {boolean}\n */\nfunction hasOnlyProperties (node, properties) {\n return !Object.keys(node).some((p) => !properties.includes(p))\n}\n\n/**\n * Converts a CID, or a PBLink-like object to a PBLink\n *\n * @param {any} link\n * @returns {PBLink}\n */\nfunction asLink (link) {\n if (typeof link.asCID === 'object') {\n const Hash = CID.asCID(link)\n if (!Hash) {\n throw new TypeError('Invalid DAG-PB form')\n }\n return { Hash }\n }\n\n if (typeof link !== 'object' || Array.isArray(link)) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n const pbl = {}\n\n if (link.Hash) {\n let cid = CID.asCID(link.Hash)\n try {\n if (!cid) {\n if (typeof link.Hash === 'string') {\n cid = CID.parse(link.Hash)\n } else if (link.Hash instanceof Uint8Array) {\n cid = CID.decode(link.Hash)\n }\n }\n } catch (/** @type {any} */ e) {\n throw new TypeError(`Invalid DAG-PB form: ${e.message}`)\n }\n\n if (cid) {\n pbl.Hash = cid\n }\n }\n\n if (!pbl.Hash) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n if (typeof link.Name === 'string') {\n pbl.Name = link.Name\n }\n\n if (typeof link.Tsize === 'number') {\n pbl.Tsize = link.Tsize\n }\n\n return pbl\n}\n\n/**\n * @param {any} node\n * @returns {PBNode}\n */\nexport function prepare (node) {\n if (node instanceof Uint8Array || typeof node === 'string') {\n node = { Data: node }\n }\n\n if (typeof node !== 'object' || Array.isArray(node)) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n /** @type {PBNode} */\n const pbn = {}\n\n if (node.Data !== undefined) {\n if (typeof node.Data === 'string') {\n pbn.Data = textEncoder.encode(node.Data)\n } else if (node.Data instanceof Uint8Array) {\n pbn.Data = node.Data\n } else {\n throw new TypeError('Invalid DAG-PB form')\n }\n }\n\n if (node.Links !== undefined) {\n if (Array.isArray(node.Links)) {\n pbn.Links = node.Links.map(asLink)\n pbn.Links.sort(linkComparator)\n } else {\n throw new TypeError('Invalid DAG-PB form')\n }\n } else {\n pbn.Links = []\n }\n\n return pbn\n}\n\n/**\n * @param {PBNode} node\n */\nexport function validate (node) {\n /*\n type PBLink struct {\n Hash optional Link\n Name optional String\n Tsize optional Int\n }\n\n type PBNode struct {\n Links [PBLink]\n Data optional Bytes\n }\n */\n // @ts-ignore private property for TS\n if (!node || typeof node !== 'object' || Array.isArray(node) || node instanceof Uint8Array || (node['/'] && node['/'] === node.bytes)) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n if (!hasOnlyProperties(node, pbNodeProperties)) {\n throw new TypeError('Invalid DAG-PB form (extraneous properties)')\n }\n\n if (node.Data !== undefined && !(node.Data instanceof Uint8Array)) {\n throw new TypeError('Invalid DAG-PB form (Data must be bytes)')\n }\n\n if (!Array.isArray(node.Links)) {\n throw new TypeError('Invalid DAG-PB form (Links must be a list)')\n }\n\n for (let i = 0; i < node.Links.length; i++) {\n const link = node.Links[i]\n // @ts-ignore private property for TS\n if (!link || typeof link !== 'object' || Array.isArray(link) || link instanceof Uint8Array || (link['/'] && link['/'] === link.bytes)) {\n throw new TypeError('Invalid DAG-PB form (bad link)')\n }\n\n if (!hasOnlyProperties(link, pbLinkProperties)) {\n throw new TypeError('Invalid DAG-PB form (extraneous properties on link)')\n }\n\n if (link.Hash === undefined) {\n throw new TypeError('Invalid DAG-PB form (link must have a Hash)')\n }\n\n // @ts-ignore private property for TS\n if (link.Hash == null || !link.Hash['/'] || link.Hash['/'] !== link.Hash.bytes) {\n throw new TypeError('Invalid DAG-PB form (link Hash must be a CID)')\n }\n\n if (link.Name !== undefined && typeof link.Name !== 'string') {\n throw new TypeError('Invalid DAG-PB form (link Name must be a string)')\n }\n\n if (link.Tsize !== undefined) {\n if (typeof link.Tsize !== 'number' || link.Tsize % 1 !== 0) {\n throw new TypeError('Invalid DAG-PB form (link Tsize must be an integer)')\n }\n if (link.Tsize < 0) {\n throw new TypeError('Invalid DAG-PB form (link Tsize cannot be negative)')\n }\n }\n\n if (i > 0 && linkComparator(link, node.Links[i - 1]) === -1) {\n throw new TypeError('Invalid DAG-PB form (links must be sorted by Name bytes)')\n }\n }\n}\n\n/**\n * @param {Uint8Array} data\n * @param {PBLink[]} [links=[]]\n * @returns {PBNode}\n */\nexport function createNode (data, links = []) {\n return prepare({ Data: data, Links: links })\n}\n\n/**\n * @param {string} name\n * @param {number} size\n * @param {CID} cid\n * @returns {PBLink}\n */\nexport function createLink (name, size, cid) {\n return asLink({ Hash: cid, Name: name, Tsize: size })\n}\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} buf\n * @returns {ByteView}\n */\nexport function toByteView (buf) {\n if (buf instanceof ArrayBuffer) {\n return new Uint8Array(buf, 0, buf.byteLength)\n }\n\n return buf\n}\n","import { CID } from 'multiformats/cid'\nimport { decodeNode } from './pb-decode.js'\nimport { encodeNode } from './pb-encode.js'\nimport { prepare, validate, createNode, createLink, toByteView } from './util.js'\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView} ByteView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView} ArrayBufferView\n */\n\n/**\n * @typedef {import('./interface.js').PBLink} PBLink\n * @typedef {import('./interface.js').PBNode} PBNode\n */\n\nexport const name = 'dag-pb'\nexport const code = 0x70\n\n/**\n * @param {PBNode} node\n * @returns {ByteView}\n */\nexport function encode (node) {\n validate(node)\n\n const pbn = {}\n if (node.Links) {\n pbn.Links = node.Links.map((l) => {\n const link = {}\n if (l.Hash) {\n link.Hash = l.Hash.bytes // cid -> bytes\n }\n if (l.Name !== undefined) {\n link.Name = l.Name\n }\n if (l.Tsize !== undefined) {\n link.Tsize = l.Tsize\n }\n return link\n })\n }\n if (node.Data) {\n pbn.Data = node.Data\n }\n\n return encodeNode(pbn)\n}\n\n/**\n * @param {ByteView | ArrayBufferView} bytes\n * @returns {PBNode}\n */\nexport function decode (bytes) {\n const buf = toByteView(bytes)\n const pbn = decodeNode(buf)\n\n const node = {}\n\n if (pbn.Data) {\n node.Data = pbn.Data\n }\n\n if (pbn.Links) {\n node.Links = pbn.Links.map((l) => {\n const link = {}\n try {\n link.Hash = CID.decode(l.Hash)\n } catch (e) {}\n if (!link.Hash) {\n throw new Error('Invalid Hash field found in link, expected CID')\n }\n if (l.Name !== undefined) {\n link.Name = l.Name\n }\n if (l.Tsize !== undefined) {\n link.Tsize = l.Tsize\n }\n return link\n })\n }\n\n return node\n}\n\nexport { prepare, validate, createNode, createLink }\n","export class InvalidTypeError extends Error {\n static name = 'InvalidTypeError';\n static code = 'ERR_INVALID_TYPE';\n name = InvalidTypeError.name;\n code = InvalidTypeError.code;\n constructor(message = 'Invalid type') {\n super(message);\n }\n}\n//# sourceMappingURL=errors.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Data;\n(function (Data) {\n let DataType;\n (function (DataType) {\n DataType[\"Raw\"] = \"Raw\";\n DataType[\"Directory\"] = \"Directory\";\n DataType[\"File\"] = \"File\";\n DataType[\"Metadata\"] = \"Metadata\";\n DataType[\"Symlink\"] = \"Symlink\";\n DataType[\"HAMTShard\"] = \"HAMTShard\";\n })(DataType = Data.DataType || (Data.DataType = {}));\n let __DataTypeValues;\n (function (__DataTypeValues) {\n __DataTypeValues[__DataTypeValues[\"Raw\"] = 0] = \"Raw\";\n __DataTypeValues[__DataTypeValues[\"Directory\"] = 1] = \"Directory\";\n __DataTypeValues[__DataTypeValues[\"File\"] = 2] = \"File\";\n __DataTypeValues[__DataTypeValues[\"Metadata\"] = 3] = \"Metadata\";\n __DataTypeValues[__DataTypeValues[\"Symlink\"] = 4] = \"Symlink\";\n __DataTypeValues[__DataTypeValues[\"HAMTShard\"] = 5] = \"HAMTShard\";\n })(__DataTypeValues || (__DataTypeValues = {}));\n (function (DataType) {\n DataType.codec = () => {\n return enumeration(__DataTypeValues);\n };\n })(DataType = Data.DataType || (Data.DataType = {}));\n let _codec;\n Data.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n Data.DataType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (obj.filesize != null) {\n w.uint32(24);\n w.uint64(obj.filesize);\n }\n if (obj.blocksizes != null) {\n for (const value of obj.blocksizes) {\n w.uint32(32);\n w.uint64(value);\n }\n }\n if (obj.hashType != null) {\n w.uint32(40);\n w.uint64(obj.hashType);\n }\n if (obj.fanout != null) {\n w.uint32(48);\n w.uint64(obj.fanout);\n }\n if (obj.mode != null) {\n w.uint32(56);\n w.uint32(obj.mode);\n }\n if (obj.mtime != null) {\n w.uint32(66);\n UnixTime.codec().encode(obj.mtime, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n blocksizes: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = Data.DataType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n case 3:\n obj.filesize = reader.uint64();\n break;\n case 4:\n obj.blocksizes.push(reader.uint64());\n break;\n case 5:\n obj.hashType = reader.uint64();\n break;\n case 6:\n obj.fanout = reader.uint64();\n break;\n case 7:\n obj.mode = reader.uint32();\n break;\n case 8:\n obj.mtime = UnixTime.codec().decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Data.encode = (obj) => {\n return encodeMessage(obj, Data.codec());\n };\n Data.decode = (buf) => {\n return decodeMessage(buf, Data.codec());\n };\n})(Data || (Data = {}));\nexport var UnixTime;\n(function (UnixTime) {\n let _codec;\n UnixTime.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Seconds != null) {\n w.uint32(8);\n w.int64(obj.Seconds);\n }\n if (obj.FractionalNanoseconds != null) {\n w.uint32(21);\n w.fixed32(obj.FractionalNanoseconds);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Seconds = reader.int64();\n break;\n case 2:\n obj.FractionalNanoseconds = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n UnixTime.encode = (obj) => {\n return encodeMessage(obj, UnixTime.codec());\n };\n UnixTime.decode = (buf) => {\n return decodeMessage(buf, UnixTime.codec());\n };\n})(UnixTime || (UnixTime = {}));\nexport var Metadata;\n(function (Metadata) {\n let _codec;\n Metadata.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.MimeType != null) {\n w.uint32(10);\n w.string(obj.MimeType);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.MimeType = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Metadata.encode = (obj) => {\n return encodeMessage(obj, Metadata.codec());\n };\n Metadata.decode = (buf) => {\n return decodeMessage(buf, Metadata.codec());\n };\n})(Metadata || (Metadata = {}));\n//# sourceMappingURL=unixfs.js.map","/**\n * @packageDocumentation\n *\n * This module contains the protobuf definition of the UnixFS data structure found at the root of all UnixFS DAGs.\n *\n * The UnixFS spec can be found in the [ipfs/specs repository](http://github.com/ipfs/specs)\n *\n * @example Create a file composed of several blocks\n *\n * ```JavaScript\n * const data = new UnixFS({ type: 'file' })\n * data.addBlockSize(256) // add the size of each block\n * data.addBlockSize(256)\n * // ...\n * ```\n *\n * @example Create a directory that contains several files\n *\n * Creating a directory that contains several files is achieve by creating a unixfs element that identifies a MerkleDAG node as a directory. The links of that MerkleDAG node are the files that are contained in this directory.\n *\n * ```JavaScript\n * const data = new UnixFS({ type: 'directory' })\n * ```\n *\n * @example Create an unixfs Data element\n *\n * ```JavaScript\n * const data = new UnixFS([options])\n * ```\n *\n * `options` is an optional object argument that might include the following keys:\n *\n * - type (string, default `file`): The type of UnixFS entry. Can be:\n * - `raw`\n * - `directory`\n * - `file`\n * - `metadata`\n * - `symlink`\n * - `hamt-sharded-directory`\n * - data (Uint8Array): The optional data field for this node\n * - blockSizes (Array, default: `[]`): If this is a `file` node that is made up of multiple blocks, `blockSizes` is a list numbers that represent the size of the file chunks stored in each child node. It is used to calculate the total file size.\n * - mode (Number, default `0644` for files, `0755` for directories/hamt-sharded-directories) file mode\n * - mtime (`Date`, `{ secs, nsecs }`, `{ Seconds, FractionalNanoseconds }`, `[ secs, nsecs ]`): The modification time of this node\n *\n * @example Add and remove a block size to the block size list\n *\n * ```JavaScript\n * data.addBlockSize()\n * ```\n *\n * ```JavaScript\n * data.removeBlockSize()\n * ```\n *\n * @example Get total fileSize\n *\n * ```JavaScript\n * data.fileSize() // => size in bytes\n * ```\n *\n * @example Marshal and unmarshal\n *\n * ```javascript\n * const marshaled = data.marshal()\n * const unmarshaled = Unixfs.unmarshal(marshaled)\n * ```\n *\n * @example Is this UnixFS entry a directory?\n *\n * ```JavaScript\n * const dir = new Data({ type: 'directory' })\n * dir.isDirectory() // true\n *\n * const file = new Data({ type: 'file' })\n * file.isDirectory() // false\n * ```\n *\n * @example Has an mtime been set?\n *\n * If no modification time has been set, no `mtime` property will be present on the `Data` instance:\n *\n * ```JavaScript\n * const file = new Data({ type: 'file' })\n * file.mtime // undefined\n *\n * Object.prototype.hasOwnProperty.call(file, 'mtime') // false\n *\n * const dir = new Data({ type: 'dir', mtime: new Date() })\n * dir.mtime // { secs: Number, nsecs: Number }\n * ```\n */\nimport { InvalidTypeError } from './errors.js';\nimport { Data as PBData } from './unixfs.js';\nconst types = {\n Raw: 'raw',\n Directory: 'directory',\n File: 'file',\n Metadata: 'metadata',\n Symlink: 'symlink',\n HAMTShard: 'hamt-sharded-directory'\n};\nconst dirTypes = [\n 'directory',\n 'hamt-sharded-directory'\n];\nconst DEFAULT_FILE_MODE = parseInt('0644', 8);\nconst DEFAULT_DIRECTORY_MODE = parseInt('0755', 8);\nclass UnixFS {\n /**\n * Decode from protobuf https://github.com/ipfs/specs/blob/master/UNIXFS.md\n */\n static unmarshal(marshaled) {\n const message = PBData.decode(marshaled);\n const data = new UnixFS({\n type: types[message.Type != null ? message.Type.toString() : 'File'],\n data: message.Data,\n blockSizes: message.blocksizes,\n mode: message.mode,\n mtime: message.mtime != null\n ? {\n secs: message.mtime.Seconds ?? 0n,\n nsecs: message.mtime.FractionalNanoseconds\n }\n : undefined,\n fanout: message.fanout\n });\n // make sure we honour the original mode\n data._originalMode = message.mode ?? 0;\n return data;\n }\n type;\n data;\n blockSizes;\n hashType;\n fanout;\n mtime;\n _mode;\n _originalMode;\n constructor(options = {\n type: 'file'\n }) {\n const { type, data, blockSizes, hashType, fanout, mtime, mode } = options;\n if (type != null && !Object.values(types).includes(type)) {\n throw new InvalidTypeError('Type: ' + type + ' is not valid');\n }\n this.type = type ?? 'file';\n this.data = data;\n this.hashType = hashType;\n this.fanout = fanout;\n this.blockSizes = blockSizes ?? [];\n this._originalMode = 0;\n this.mode = mode;\n this.mtime = mtime;\n }\n set mode(mode) {\n if (mode == null) {\n this._mode = this.isDirectory() ? DEFAULT_DIRECTORY_MODE : DEFAULT_FILE_MODE;\n }\n else {\n this._mode = (mode & 0xFFF);\n }\n }\n get mode() {\n return this._mode;\n }\n isDirectory() {\n return dirTypes.includes(this.type);\n }\n addBlockSize(size) {\n this.blockSizes.push(size);\n }\n removeBlockSize(index) {\n this.blockSizes.splice(index, 1);\n }\n /**\n * Returns `0n` for directories or `data.length + sum(blockSizes)` for everything else\n */\n fileSize() {\n if (this.isDirectory()) {\n // dirs don't have file size\n return 0n;\n }\n let sum = 0n;\n this.blockSizes.forEach((size) => {\n sum += size;\n });\n if (this.data != null) {\n sum += BigInt(this.data.length);\n }\n return sum;\n }\n /**\n * encode to protobuf Uint8Array\n */\n marshal() {\n let type;\n switch (this.type) {\n case 'raw':\n type = PBData.DataType.Raw;\n break;\n case 'directory':\n type = PBData.DataType.Directory;\n break;\n case 'file':\n type = PBData.DataType.File;\n break;\n case 'metadata':\n type = PBData.DataType.Metadata;\n break;\n case 'symlink':\n type = PBData.DataType.Symlink;\n break;\n case 'hamt-sharded-directory':\n type = PBData.DataType.HAMTShard;\n break;\n default:\n throw new InvalidTypeError(`Type: ${type} is not valid`);\n }\n let data = this.data;\n if (this.data == null || this.data.length === 0) {\n data = undefined;\n }\n let mode;\n if (this.mode != null) {\n mode = (this._originalMode & 0xFFFFF000) | (this.mode ?? 0);\n if (mode === DEFAULT_FILE_MODE && !this.isDirectory()) {\n mode = undefined;\n }\n if (mode === DEFAULT_DIRECTORY_MODE && this.isDirectory()) {\n mode = undefined;\n }\n }\n let mtime;\n if (this.mtime != null) {\n mtime = {\n Seconds: this.mtime.secs,\n FractionalNanoseconds: this.mtime.nsecs\n };\n }\n return PBData.encode({\n Type: type,\n Data: data,\n filesize: this.isDirectory() ? undefined : this.fileSize(),\n blocksizes: this.blockSizes,\n hashType: this.hashType,\n fanout: this.fanout,\n mode,\n mtime\n });\n }\n}\nexport { UnixFS };\nexport * from './errors.js';\n//# sourceMappingURL=index.js.map","/**\n * An implementation of the ProgressEvent interface, this is essentially\n * a typed `CustomEvent` with a `type` property that lets us disambiguate\n * events passed to `progress` callbacks.\n */\nexport class CustomProgressEvent extends Event {\n type;\n detail;\n constructor(type, detail) {\n super(type);\n this.type = type;\n // @ts-expect-error detail may be undefined\n this.detail = detail;\n }\n}\n//# sourceMappingURL=index.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\nexport const persist = async (buffer, blockstore, options) => {\n if (options.codec == null) {\n options.codec = dagPb;\n }\n const multihash = await sha256.digest(buffer);\n const cid = CID.create(options.cidVersion, options.codec.code, multihash);\n await blockstore.put(cid, buffer, options);\n return cid;\n};\n//# sourceMappingURL=persist.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport * as raw from 'multiformats/codecs/raw';\nimport { CustomProgressEvent } from 'progress-events';\nimport { persist } from '../utils/persist.js';\nexport function defaultBufferImporter(options) {\n return async function* bufferImporter(file, blockstore) {\n let bytesWritten = 0n;\n for await (let block of file.content) {\n yield async () => {\n let unixfs;\n const opts = {\n codec: dagPb,\n cidVersion: options.cidVersion,\n onProgress: options.onProgress\n };\n if (options.rawLeaves) {\n opts.codec = raw;\n opts.cidVersion = 1;\n }\n else {\n unixfs = new UnixFS({\n type: options.leafType,\n data: block\n });\n block = dagPb.encode({\n Data: unixfs.marshal(),\n Links: []\n });\n }\n const cid = await persist(block, blockstore, opts);\n bytesWritten += BigInt(block.byteLength);\n options.onProgress?.(new CustomProgressEvent('unixfs:importer:progress:file:write', {\n bytesWritten,\n cid,\n path: file.path\n }));\n return {\n cid,\n unixfs,\n size: BigInt(block.length),\n block\n };\n };\n }\n };\n}\n//# sourceMappingURL=buffer-importer.js.map","export class InvalidParametersError extends Error {\n static name = 'InvalidParametersError';\n static code = 'ERR_INVALID_PARAMS';\n name = InvalidParametersError.name;\n code = InvalidParametersError.code;\n constructor(message = 'Invalid parameters') {\n super(message);\n }\n}\nexport class InvalidAvgChunkSizeError extends Error {\n static name = 'InvalidAvgChunkSizeError';\n static code = 'ERR_INVALID_AVG_CHUNK_SIZE';\n name = InvalidAvgChunkSizeError.name;\n code = InvalidAvgChunkSizeError.code;\n constructor(message = 'Invalid avg chunk size') {\n super(message);\n }\n}\nexport class InvalidChunkSizeError extends Error {\n static name = 'InvalidChunkSizeError';\n static code = 'ERR_INVALID_CHUNK_SIZE';\n name = InvalidChunkSizeError.name;\n code = InvalidChunkSizeError.code;\n constructor(message = 'Invalid chunk size') {\n super(message);\n }\n}\nexport class InvalidMinChunkSizeError extends Error {\n static name = 'InvalidMinChunkSizeError';\n static code = 'ERR_INVALID_MIN_CHUNK_SIZE';\n name = InvalidMinChunkSizeError.name;\n code = InvalidMinChunkSizeError.code;\n constructor(message = 'Invalid min chunk size') {\n super(message);\n }\n}\nexport class InvalidContentError extends Error {\n static name = 'InvalidContentError';\n static code = 'ERR_INVALID_CONTENT';\n name = InvalidContentError.name;\n code = InvalidContentError.code;\n constructor(message = 'Invalid content') {\n super(message);\n }\n}\n//# sourceMappingURL=errors.js.map","import { encode, prepare } from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { persist } from '../utils/persist.js';\nexport const dirBuilder = async (dir, blockstore, options) => {\n const unixfs = new UnixFS({\n type: 'directory',\n mtime: dir.mtime,\n mode: dir.mode\n });\n const block = encode(prepare({ Data: unixfs.marshal() }));\n const cid = await persist(block, blockstore, options);\n const path = dir.path;\n return {\n cid,\n path,\n unixfs,\n size: BigInt(block.length),\n originalPath: dir.originalPath,\n block\n };\n};\n//# sourceMappingURL=dir.js.map","import { encode, prepare } from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport parallelBatch from 'it-parallel-batch';\nimport * as rawCodec from 'multiformats/codecs/raw';\nimport { CustomProgressEvent } from 'progress-events';\nimport { persist } from '../utils/persist.js';\nasync function* buildFileBatch(file, blockstore, options) {\n let count = -1;\n let previous;\n for await (const entry of parallelBatch(options.bufferImporter(file, blockstore), options.blockWriteConcurrency)) {\n count++;\n if (count === 0) {\n // cache the first entry if case there aren't any more\n previous = {\n ...entry,\n single: true\n };\n continue;\n }\n else if (count === 1 && (previous != null)) {\n // we have the second block of a multiple block import so yield the first\n yield {\n ...previous,\n block: undefined,\n single: undefined\n };\n previous = undefined;\n }\n // yield the second or later block of a multiple block import\n yield {\n ...entry,\n block: undefined\n };\n }\n if (previous != null) {\n yield previous;\n }\n}\nfunction isSingleBlockImport(result) {\n return result.single === true;\n}\nconst reduce = (file, blockstore, options) => {\n const reducer = async function (leaves) {\n if (leaves.length === 1 && isSingleBlockImport(leaves[0]) && options.reduceSingleLeafToSelf) {\n const leaf = leaves[0];\n let node = leaf.block;\n if (isSingleBlockImport(leaf) && (file.mtime !== undefined || file.mode !== undefined)) {\n // only one leaf node which is a raw leaf - we have metadata so convert it into a\n // UnixFS entry otherwise we'll have nowhere to store the metadata\n leaf.unixfs = new UnixFS({\n type: 'file',\n mtime: file.mtime,\n mode: file.mode,\n data: leaf.block\n });\n node = { Data: leaf.unixfs.marshal(), Links: [] };\n leaf.block = encode(prepare(node));\n leaf.cid = await persist(leaf.block, blockstore, {\n ...options,\n cidVersion: options.cidVersion\n });\n leaf.size = BigInt(leaf.block.length);\n }\n options.onProgress?.(new CustomProgressEvent('unixfs:importer:progress:file:layout', {\n cid: leaf.cid,\n path: leaf.originalPath\n }));\n return {\n cid: leaf.cid,\n path: file.path,\n unixfs: leaf.unixfs,\n size: leaf.size,\n originalPath: leaf.originalPath\n };\n }\n // create a parent node and add all the leaves\n const f = new UnixFS({\n type: 'file',\n mtime: file.mtime,\n mode: file.mode\n });\n const links = leaves\n .filter(leaf => {\n if (leaf.cid.code === rawCodec.code && leaf.size > 0) {\n return true;\n }\n if ((leaf.unixfs != null) && (leaf.unixfs.data == null) && leaf.unixfs.fileSize() > 0n) {\n return true;\n }\n return Boolean(leaf.unixfs?.data?.length);\n })\n .map((leaf) => {\n if (leaf.cid.code === rawCodec.code) {\n // node is a leaf buffer\n f.addBlockSize(leaf.size);\n return {\n Name: '',\n Tsize: Number(leaf.size),\n Hash: leaf.cid\n };\n }\n if ((leaf.unixfs?.data == null)) {\n // node is an intermediate node\n f.addBlockSize(leaf.unixfs?.fileSize() ?? 0n);\n }\n else {\n // node is a unixfs 'file' leaf node\n f.addBlockSize(BigInt(leaf.unixfs.data.length));\n }\n return {\n Name: '',\n Tsize: Number(leaf.size),\n Hash: leaf.cid\n };\n });\n const node = {\n Data: f.marshal(),\n Links: links\n };\n const block = encode(prepare(node));\n const cid = await persist(block, blockstore, options);\n options.onProgress?.(new CustomProgressEvent('unixfs:importer:progress:file:layout', {\n cid,\n path: file.originalPath\n }));\n return {\n cid,\n path: file.path,\n unixfs: f,\n size: BigInt(block.length + node.Links.reduce((acc, curr) => acc + (curr.Tsize ?? 0), 0)),\n originalPath: file.originalPath,\n block\n };\n };\n return reducer;\n};\nexport const fileBuilder = async (file, block, options) => {\n return options.layout(buildFileBatch(file, block, options), reduce(file, block, options));\n};\n//# sourceMappingURL=file.js.map","import { CustomProgressEvent } from 'progress-events';\nimport { InvalidContentError } from '../errors.js';\nimport { dirBuilder } from './dir.js';\nimport { fileBuilder } from './file.js';\nfunction isIterable(thing) {\n return Symbol.iterator in thing;\n}\nfunction isAsyncIterable(thing) {\n return Symbol.asyncIterator in thing;\n}\nfunction contentAsAsyncIterable(content) {\n try {\n if (content instanceof Uint8Array) {\n return (async function* () {\n yield content;\n }());\n }\n else if (isIterable(content)) {\n return (async function* () {\n yield* content;\n }());\n }\n else if (isAsyncIterable(content)) {\n return content;\n }\n }\n catch {\n throw new InvalidContentError('Content was invalid');\n }\n throw new InvalidContentError('Content was invalid');\n}\nexport function defaultDagBuilder(options) {\n return async function* dagBuilder(source, blockstore) {\n for await (const entry of source) {\n let originalPath;\n if (entry.path != null) {\n originalPath = entry.path;\n entry.path = entry.path\n .split('/')\n .filter(path => path != null && path !== '.')\n .join('/');\n }\n if (isFileCandidate(entry)) {\n const file = {\n path: entry.path,\n mtime: entry.mtime,\n mode: entry.mode,\n content: (async function* () {\n let bytesRead = 0n;\n for await (const chunk of options.chunker(options.chunkValidator(contentAsAsyncIterable(entry.content)))) {\n const currentChunkSize = BigInt(chunk.byteLength);\n bytesRead += currentChunkSize;\n options.onProgress?.(new CustomProgressEvent('unixfs:importer:progress:file:read', {\n bytesRead,\n chunkSize: currentChunkSize,\n path: entry.path\n }));\n yield chunk;\n }\n })(),\n originalPath\n };\n yield async () => fileBuilder(file, blockstore, options);\n }\n else if (entry.path != null) {\n const dir = {\n path: entry.path,\n mtime: entry.mtime,\n mode: entry.mode,\n originalPath\n };\n yield async () => dirBuilder(dir, blockstore, options);\n }\n else {\n throw new Error('Import candidate must have content or path or both');\n }\n }\n };\n}\nfunction isFileCandidate(entry) {\n return entry.content != null;\n}\n//# sourceMappingURL=index.js.map","import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { InvalidContentError } from '../errors.js';\nexport const defaultChunkValidator = () => {\n return async function* validateChunks(source) {\n for await (const content of source) {\n if (content.length === undefined) {\n throw new InvalidContentError('Content was invalid');\n }\n if (typeof content === 'string' || content instanceof String) {\n yield uint8ArrayFromString(content.toString());\n }\n else if (Array.isArray(content)) {\n yield Uint8Array.from(content);\n }\n else if (content instanceof Uint8Array) {\n yield content;\n }\n else {\n throw new InvalidContentError('Content was invalid');\n }\n }\n };\n};\n//# sourceMappingURL=validate-chunks.js.map","import batch from 'it-batch';\nconst DEFAULT_MAX_CHILDREN_PER_NODE = 174;\nexport function balanced(options) {\n const maxChildrenPerNode = options?.maxChildrenPerNode ?? DEFAULT_MAX_CHILDREN_PER_NODE;\n return async function balancedLayout(source, reduce) {\n const roots = [];\n for await (const chunked of batch(source, maxChildrenPerNode)) {\n roots.push(await reduce(chunked));\n }\n if (roots.length > 1) {\n return balancedLayout(roots, reduce);\n }\n return roots[0];\n };\n}\n//# sourceMappingURL=balanced.js.map","/**\n * @packageDocumentation\n *\n * For when you need a one-liner to collect iterable values.\n *\n * @example\n *\n * ```javascript\n * import all from 'it-all'\n *\n * // This can also be an iterator, etc\n * const values = function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const arr = all(values)\n *\n * console.info(arr) // 0, 1, 2, 3, 4\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const arr = await all(values())\n *\n * console.info(arr) // 0, 1, 2, 3, 4\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction all(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n const arr = [];\n for await (const entry of source) {\n arr.push(entry);\n }\n return arr;\n })();\n }\n const arr = [];\n for (const entry of source) {\n arr.push(entry);\n }\n return arr;\n}\nexport default all;\n//# sourceMappingURL=index.js.map","import { CID } from 'multiformats/cid';\nexport class Dir {\n options;\n root;\n dir;\n path;\n dirty;\n flat;\n parent;\n parentKey;\n unixfs;\n mode;\n mtime;\n cid;\n size;\n nodeSize;\n constructor(props, options) {\n this.options = options ?? {};\n this.root = props.root;\n this.dir = props.dir;\n this.path = props.path;\n this.dirty = props.dirty;\n this.flat = props.flat;\n this.parent = props.parent;\n this.parentKey = props.parentKey;\n this.unixfs = props.unixfs;\n this.mode = props.mode;\n this.mtime = props.mtime;\n }\n}\n// we use these to calculate the node size to use as a check for whether a directory\n// should be sharded or not. Since CIDs have a constant length and We're only\n// interested in the data length and not the actual content identifier we can use\n// any old CID instead of having to hash the data which is expensive.\nexport const CID_V0 = CID.parse('QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn');\nexport const CID_V1 = CID.parse('zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi');\n//# sourceMappingURL=dir.js.map","import { encode, prepare } from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { Dir, CID_V0, CID_V1 } from './dir.js';\nimport { persist } from './utils/persist.js';\nexport class DirFlat extends Dir {\n _children;\n constructor(props, options) {\n super(props, options);\n this._children = new Map();\n }\n async put(name, value) {\n this.cid = undefined;\n this.size = undefined;\n this.nodeSize = undefined;\n this._children.set(name, value);\n }\n async get(name) {\n return Promise.resolve(this._children.get(name));\n }\n childCount() {\n return this._children.size;\n }\n directChildrenCount() {\n return this.childCount();\n }\n onlyChild() {\n return this._children.values().next().value;\n }\n async *eachChildSeries() {\n for (const [key, child] of this._children.entries()) {\n yield {\n key,\n child\n };\n }\n }\n estimateNodeSize() {\n if (this.nodeSize !== undefined) {\n return this.nodeSize;\n }\n this.nodeSize = 0;\n // estimate size only based on DAGLink name and CID byte lengths\n // https://github.com/ipfs/go-unixfsnode/blob/37b47f1f917f1b2f54c207682f38886e49896ef9/data/builder/directory.go#L81-L96\n for (const [name, child] of this._children.entries()) {\n if (child.size != null && (child.cid != null)) {\n this.nodeSize += name.length + (this.options.cidVersion === 1 ? CID_V1.bytes.byteLength : CID_V0.bytes.byteLength);\n }\n }\n return this.nodeSize;\n }\n async *flush(block) {\n const links = [];\n for (const [name, child] of this._children.entries()) {\n let result = child;\n if (child instanceof Dir) {\n for await (const entry of child.flush(block)) {\n result = entry;\n yield entry;\n }\n }\n if (result.size != null && (result.cid != null)) {\n links.push({\n Name: name,\n Tsize: Number(result.size),\n Hash: result.cid\n });\n }\n }\n const unixfs = new UnixFS({\n type: 'directory',\n mtime: this.mtime,\n mode: this.mode\n });\n const node = { Data: unixfs.marshal(), Links: links };\n const buffer = encode(prepare(node));\n const cid = await persist(buffer, block, this.options);\n const size = buffer.length + node.Links.reduce(\n /**\n * @param {number} acc\n * @param {PBLink} curr\n */\n (acc, curr) => acc + (curr.Tsize ?? 0), 0);\n this.cid = cid;\n this.size = size;\n yield {\n cid,\n unixfs,\n path: this.path,\n size: BigInt(size)\n };\n }\n}\n//# sourceMappingURL=dir-flat.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* jshint -W086: true */\n// +----------------------------------------------------------------------+\n// | murmurHash3js.js v3.0.1 // https://github.com/pid/murmurHash3js\n// | A javascript implementation of MurmurHash3's x86 hashing algorithms. |\n// |----------------------------------------------------------------------|\n// | Copyright (c) 2012-2015 Karan Lyons |\n// | https://github.com/karanlyons/murmurHash3.js/blob/c1778f75792abef7bdd74bc85d2d4e1a3d25cfe9/murmurHash3.js |\n// | Freely distributable under the MIT license. |\n// +----------------------------------------------------------------------+\n\n;(function (root, undefined) {\n 'use strict';\n\n // Create a local object that'll be exported or referenced globally.\n var library = {\n 'version': '3.0.0',\n 'x86': {},\n 'x64': {},\n 'inputValidation': true\n };\n\n // PRIVATE FUNCTIONS\n // -----------------\n\n function _validBytes(bytes) {\n // check the input is an array or a typed array\n if (!Array.isArray(bytes) && !ArrayBuffer.isView(bytes)) {\n return false;\n }\n\n // check all bytes are actually bytes\n for (var i = 0; i < bytes.length; i++) {\n if (!Number.isInteger(bytes[i]) || bytes[i] < 0 || bytes[i] > 255) {\n return false;\n }\n }\n return true;\n }\n\n function _x86Multiply(m, n) {\n //\n // Given two 32bit ints, returns the two multiplied together as a\n // 32bit int.\n //\n\n return ((m & 0xffff) * n) + ((((m >>> 16) * n) & 0xffff) << 16);\n }\n\n function _x86Rotl(m, n) {\n //\n // Given a 32bit int and an int representing a number of bit positions,\n // returns the 32bit int rotated left by that number of positions.\n //\n\n return (m << n) | (m >>> (32 - n));\n }\n\n function _x86Fmix(h) {\n //\n // Given a block, returns murmurHash3's final x86 mix of that block.\n //\n\n h ^= h >>> 16;\n h = _x86Multiply(h, 0x85ebca6b);\n h ^= h >>> 13;\n h = _x86Multiply(h, 0xc2b2ae35);\n h ^= h >>> 16;\n\n return h;\n }\n\n function _x64Add(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // added together as a 64bit int (as an array of two 32bit ints).\n //\n\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n var o = [0, 0, 0, 0];\n\n o[3] += m[3] + n[3];\n o[2] += o[3] >>> 16;\n o[3] &= 0xffff;\n\n o[2] += m[2] + n[2];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[1] += m[1] + n[1];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[0] += m[0] + n[0];\n o[0] &= 0xffff;\n\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n }\n\n function _x64Multiply(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // multiplied together as a 64bit int (as an array of two 32bit ints).\n //\n\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n var o = [0, 0, 0, 0];\n\n o[3] += m[3] * n[3];\n o[2] += o[3] >>> 16;\n o[3] &= 0xffff;\n\n o[2] += m[2] * n[3];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[2] += m[3] * n[2];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[1] += m[1] * n[3];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[1] += m[2] * n[2];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[1] += m[3] * n[1];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0]);\n o[0] &= 0xffff;\n\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n }\n\n function _x64Rotl(m, n) {\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) rotated left by that number of positions.\n //\n\n n %= 64;\n\n if (n === 32) {\n return [m[1], m[0]];\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))];\n } else {\n n -= 32;\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))];\n }\n }\n\n function _x64LeftShift(m, n) {\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) shifted left by that number of positions.\n //\n\n n %= 64;\n\n if (n === 0) {\n return m;\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n];\n } else {\n return [m[1] << (n - 32), 0];\n }\n }\n\n function _x64Xor(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // xored together as a 64bit int (as an array of two 32bit ints).\n //\n\n return [m[0] ^ n[0], m[1] ^ n[1]];\n }\n\n function _x64Fmix(h) {\n //\n // Given a block, returns murmurHash3's final x64 mix of that block.\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n // only place where we need to right shift 64bit ints.)\n //\n\n h = _x64Xor(h, [0, h[0] >>> 1]);\n h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]);\n h = _x64Xor(h, [0, h[0] >>> 1]);\n h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]);\n h = _x64Xor(h, [0, h[0] >>> 1]);\n\n return h;\n }\n\n // PUBLIC FUNCTIONS\n // ----------------\n\n library.x86.hash32 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 32 bit hash\n // using the x86 flavor of MurmurHash3, as an unsigned int.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n seed = seed || 0;\n\n var remainder = bytes.length % 4;\n var blocks = bytes.length - remainder;\n\n var h1 = seed;\n\n var k1 = 0;\n\n var c1 = 0xcc9e2d51;\n var c2 = 0x1b873593;\n\n for (var i = 0; i < blocks; i = i + 4) {\n k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n\n h1 ^= k1;\n h1 = _x86Rotl(h1, 13);\n h1 = _x86Multiply(h1, 5) + 0xe6546b64;\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3:\n k1 ^= bytes[i + 2] << 16;\n\n case 2:\n k1 ^= bytes[i + 1] << 8;\n\n case 1:\n k1 ^= bytes[i];\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n }\n\n h1 ^= bytes.length;\n h1 = _x86Fmix(h1);\n\n return h1 >>> 0;\n };\n\n library.x86.hash128 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x86 flavor of MurmurHash3, as an unsigned hex.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n\n seed = seed || 0;\n var remainder = bytes.length % 16;\n var blocks = bytes.length - remainder;\n\n var h1 = seed;\n var h2 = seed;\n var h3 = seed;\n var h4 = seed;\n\n var k1 = 0;\n var k2 = 0;\n var k3 = 0;\n var k4 = 0;\n\n var c1 = 0x239b961b;\n var c2 = 0xab0e9789;\n var c3 = 0x38b34ae5;\n var c4 = 0xa1e38b93;\n\n for (var i = 0; i < blocks; i = i + 16) {\n k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n k2 = (bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24);\n k3 = (bytes[i + 8]) | (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24);\n k4 = (bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24);\n\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n\n h1 = _x86Rotl(h1, 19);\n h1 += h2;\n h1 = _x86Multiply(h1, 5) + 0x561ccd1b;\n\n k2 = _x86Multiply(k2, c2);\n k2 = _x86Rotl(k2, 16);\n k2 = _x86Multiply(k2, c3);\n h2 ^= k2;\n\n h2 = _x86Rotl(h2, 17);\n h2 += h3;\n h2 = _x86Multiply(h2, 5) + 0x0bcaa747;\n\n k3 = _x86Multiply(k3, c3);\n k3 = _x86Rotl(k3, 17);\n k3 = _x86Multiply(k3, c4);\n h3 ^= k3;\n\n h3 = _x86Rotl(h3, 15);\n h3 += h4;\n h3 = _x86Multiply(h3, 5) + 0x96cd1c35;\n\n k4 = _x86Multiply(k4, c4);\n k4 = _x86Rotl(k4, 18);\n k4 = _x86Multiply(k4, c1);\n h4 ^= k4;\n\n h4 = _x86Rotl(h4, 13);\n h4 += h1;\n h4 = _x86Multiply(h4, 5) + 0x32ac3b17;\n }\n\n k1 = 0;\n k2 = 0;\n k3 = 0;\n k4 = 0;\n\n switch (remainder) {\n case 15:\n k4 ^= bytes[i + 14] << 16;\n\n case 14:\n k4 ^= bytes[i + 13] << 8;\n\n case 13:\n k4 ^= bytes[i + 12];\n k4 = _x86Multiply(k4, c4);\n k4 = _x86Rotl(k4, 18);\n k4 = _x86Multiply(k4, c1);\n h4 ^= k4;\n\n case 12:\n k3 ^= bytes[i + 11] << 24;\n\n case 11:\n k3 ^= bytes[i + 10] << 16;\n\n case 10:\n k3 ^= bytes[i + 9] << 8;\n\n case 9:\n k3 ^= bytes[i + 8];\n k3 = _x86Multiply(k3, c3);\n k3 = _x86Rotl(k3, 17);\n k3 = _x86Multiply(k3, c4);\n h3 ^= k3;\n\n case 8:\n k2 ^= bytes[i + 7] << 24;\n\n case 7:\n k2 ^= bytes[i + 6] << 16;\n\n case 6:\n k2 ^= bytes[i + 5] << 8;\n\n case 5:\n k2 ^= bytes[i + 4];\n k2 = _x86Multiply(k2, c2);\n k2 = _x86Rotl(k2, 16);\n k2 = _x86Multiply(k2, c3);\n h2 ^= k2;\n\n case 4:\n k1 ^= bytes[i + 3] << 24;\n\n case 3:\n k1 ^= bytes[i + 2] << 16;\n\n case 2:\n k1 ^= bytes[i + 1] << 8;\n\n case 1:\n k1 ^= bytes[i];\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n }\n\n h1 ^= bytes.length;\n h2 ^= bytes.length;\n h3 ^= bytes.length;\n h4 ^= bytes.length;\n\n h1 += h2;\n h1 += h3;\n h1 += h4;\n h2 += h1;\n h3 += h1;\n h4 += h1;\n\n h1 = _x86Fmix(h1);\n h2 = _x86Fmix(h2);\n h3 = _x86Fmix(h3);\n h4 = _x86Fmix(h4);\n\n h1 += h2;\n h1 += h3;\n h1 += h4;\n h2 += h1;\n h3 += h1;\n h4 += h1;\n\n return (\"00000000\" + (h1 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h3 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h4 >>> 0).toString(16)).slice(-8);\n };\n\n library.x64.hash128 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n seed = seed || 0;\n\n var remainder = bytes.length % 16;\n var blocks = bytes.length - remainder;\n\n var h1 = [0, seed];\n var h2 = [0, seed];\n\n var k1 = [0, 0];\n var k2 = [0, 0];\n\n var c1 = [0x87c37b91, 0x114253d5];\n var c2 = [0x4cf5ad43, 0x2745937f];\n\n for (var i = 0; i < blocks; i = i + 16) {\n k1 = [(bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24), (bytes[i]) |\n (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24)];\n k2 = [(bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24), (bytes[i + 8]) |\n (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24)];\n\n k1 = _x64Multiply(k1, c1);\n k1 = _x64Rotl(k1, 31);\n k1 = _x64Multiply(k1, c2);\n h1 = _x64Xor(h1, k1);\n\n h1 = _x64Rotl(h1, 27);\n h1 = _x64Add(h1, h2);\n h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]);\n\n k2 = _x64Multiply(k2, c2);\n k2 = _x64Rotl(k2, 33);\n k2 = _x64Multiply(k2, c1);\n h2 = _x64Xor(h2, k2);\n\n h2 = _x64Rotl(h2, 31);\n h2 = _x64Add(h2, h1);\n h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]);\n }\n\n k1 = [0, 0];\n k2 = [0, 0];\n\n switch (remainder) {\n case 15:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 14]], 48));\n\n case 14:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 13]], 40));\n\n case 13:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 12]], 32));\n\n case 12:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 11]], 24));\n\n case 11:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 10]], 16));\n\n case 10:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 9]], 8));\n\n case 9:\n k2 = _x64Xor(k2, [0, bytes[i + 8]]);\n k2 = _x64Multiply(k2, c2);\n k2 = _x64Rotl(k2, 33);\n k2 = _x64Multiply(k2, c1);\n h2 = _x64Xor(h2, k2);\n\n case 8:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 7]], 56));\n\n case 7:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 6]], 48));\n\n case 6:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 5]], 40));\n\n case 5:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 4]], 32));\n\n case 4:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 3]], 24));\n\n case 3:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 2]], 16));\n\n case 2:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 1]], 8));\n\n case 1:\n k1 = _x64Xor(k1, [0, bytes[i]]);\n k1 = _x64Multiply(k1, c1);\n k1 = _x64Rotl(k1, 31);\n k1 = _x64Multiply(k1, c2);\n h1 = _x64Xor(h1, k1);\n }\n\n h1 = _x64Xor(h1, [0, bytes.length]);\n h2 = _x64Xor(h2, [0, bytes.length]);\n\n h1 = _x64Add(h1, h2);\n h2 = _x64Add(h2, h1);\n\n h1 = _x64Fmix(h1);\n h2 = _x64Fmix(h2);\n\n h1 = _x64Add(h1, h2);\n h2 = _x64Add(h2, h1);\n\n return (\"00000000\" + (h1[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h1[1] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[1] >>> 0).toString(16)).slice(-8);\n };\n\n // INITIALIZATION\n // --------------\n\n // Export murmurHash3 for CommonJS, either as an AMD module or just as part\n // of the global object.\n if (typeof exports !== 'undefined') {\n\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = library;\n }\n\n exports.murmurHash3 = library;\n\n } else if (typeof define === 'function' && define.amd) {\n\n define([], function () {\n return library;\n });\n } else {\n\n // Use murmurHash3.noConflict to restore `murmurHash3` back to its\n // original value. Returns a reference to the library object, to allow\n // it to be used under a different name.\n library._murmurHash3 = root.murmurHash3;\n\n library.noConflict = function () {\n root.murmurHash3 = library._murmurHash3;\n library._murmurHash3 = undefined;\n library.noConflict = undefined;\n\n return library;\n };\n\n root.murmurHash3 = library;\n }\n})(this);\n","module.exports = require('./lib/murmurHash3js');\n","import { bytes } from 'multiformats'\nimport { from } from 'multiformats/hashes/hasher'\n// @ts-expect-error no types\nimport mur from 'murmurhash3js-revisited'\n\n/**\n * @param {number} number\n * @returns {Uint8Array}\n */\nfunction fromNumberTo32BitBuf (number) {\n const bytes = new Array(4)\n for (let i = 0; i < 4; i++) {\n bytes[i] = number & 0xff\n number = number >> 8\n }\n return new Uint8Array(bytes)\n}\n\nexport const murmur332 = from({\n name: 'murmur3-32',\n code: 0x23,\n encode: (input) => fromNumberTo32BitBuf(mur.x86.hash32(input))\n})\n\nexport const murmur3128 = from({\n name: 'murmur3-128',\n code: 0x22,\n encode: (input) => bytes.fromHex(mur.x64.hash128(input))\n})\n\n// A special-use 0x22 that truncates 64 bits, specifically for use in the UnixFS HAMT\nexport const murmur364 = from({\n name: 'murmur3-x64-64',\n code: 0x22,\n encode: (input) => bytes.fromHex(mur.x64.hash128(input)).subarray(0, 8)\n})\n","'use strict'\n\n// JS treats subjects of bitwise operators as SIGNED 32 bit numbers,\n// which means the maximum amount of bits we can store inside each byte\n// is 7..\nconst BITS_PER_BYTE = 7\n\nmodule.exports = class SparseArray {\n constructor () {\n this._bitArrays = []\n this._data = []\n this._length = 0\n this._changedLength = false\n this._changedData = false\n }\n\n set (index, value) {\n let pos = this._internalPositionFor(index, false)\n if (value === undefined) {\n // unsetting\n if (pos !== -1) {\n // remove item from bit array and array itself\n this._unsetInternalPos(pos)\n this._unsetBit(index)\n this._changedLength = true\n this._changedData = true\n }\n } else {\n let needsSort = false\n if (pos === -1) {\n pos = this._data.length\n this._setBit(index)\n this._changedData = true\n } else {\n needsSort = true\n }\n this._setInternalPos(pos, index, value, needsSort)\n this._changedLength = true\n }\n }\n\n unset (index) {\n this.set(index, undefined)\n }\n\n get (index) {\n this._sortData()\n const pos = this._internalPositionFor(index, true)\n if (pos === -1) {\n return undefined\n }\n return this._data[pos][1]\n }\n\n push (value) {\n this.set(this.length, value)\n return this.length\n }\n\n get length () {\n this._sortData()\n if (this._changedLength) {\n const last = this._data[this._data.length - 1]\n this._length = last ? last[0] + 1 : 0\n this._changedLength = false\n }\n return this._length\n }\n\n forEach (iterator) {\n let i = 0\n while(i < this.length) {\n iterator(this.get(i), i, this)\n i++\n }\n }\n\n map (iterator) {\n let i = 0\n let mapped = new Array(this.length)\n while(i < this.length) {\n mapped[i] = iterator(this.get(i), i, this)\n i++\n }\n return mapped\n }\n\n reduce (reducer, initialValue) {\n let i = 0\n let acc = initialValue\n while(i < this.length) {\n const value = this.get(i)\n acc = reducer(acc, value, i)\n i++\n }\n return acc\n }\n\n find (finder) {\n let i = 0, found, last\n while ((i < this.length) && !found) {\n last = this.get(i)\n found = finder(last)\n i++\n }\n return found ? last : undefined\n }\n\n _internalPositionFor (index, noCreate) {\n const bytePos = this._bytePosFor(index, noCreate)\n if (bytePos >= this._bitArrays.length) {\n return -1\n }\n const byte = this._bitArrays[bytePos]\n const bitPos = index - bytePos * BITS_PER_BYTE\n const exists = (byte & (1 << bitPos)) > 0\n if (!exists) {\n return -1\n }\n const previousPopCount = this._bitArrays.slice(0, bytePos).reduce(popCountReduce, 0)\n\n const mask = ~(0xffffffff << (bitPos + 1))\n const bytePopCount = popCount(byte & mask)\n const arrayPos = previousPopCount + bytePopCount - 1\n return arrayPos\n }\n\n _bytePosFor (index, noCreate) {\n const bytePos = Math.floor(index / BITS_PER_BYTE)\n const targetLength = bytePos + 1\n while (!noCreate && this._bitArrays.length < targetLength) {\n this._bitArrays.push(0)\n }\n return bytePos\n }\n\n _setBit (index) {\n const bytePos = this._bytePosFor(index, false)\n this._bitArrays[bytePos] |= (1 << (index - (bytePos * BITS_PER_BYTE)))\n }\n\n _unsetBit(index) {\n const bytePos = this._bytePosFor(index, false)\n this._bitArrays[bytePos] &= ~(1 << (index - (bytePos * BITS_PER_BYTE)))\n }\n\n _setInternalPos(pos, index, value, needsSort) {\n const data =this._data\n const elem = [index, value]\n if (needsSort) {\n this._sortData()\n data[pos] = elem\n } else {\n // new element. just shove it into the array\n // but be nice about where we shove it\n // in order to make sorting it later easier\n if (data.length) {\n if (data[data.length - 1][0] >= index) {\n data.push(elem)\n } else if (data[0][0] <= index) {\n data.unshift(elem)\n } else {\n const randomIndex = Math.round(data.length / 2)\n this._data = data.slice(0, randomIndex).concat(elem).concat(data.slice(randomIndex))\n }\n } else {\n this._data.push(elem)\n }\n this._changedData = true\n this._changedLength = true\n }\n }\n\n _unsetInternalPos (pos) {\n this._data.splice(pos, 1)\n }\n\n _sortData () {\n if (this._changedData) {\n this._data.sort(sortInternal)\n }\n\n this._changedData = false\n }\n\n bitField () {\n const bytes = []\n let pendingBitsForResultingByte = 8\n let pendingBitsForNewByte = 0\n let resultingByte = 0\n let newByte\n const pending = this._bitArrays.slice()\n while (pending.length || pendingBitsForNewByte) {\n if (pendingBitsForNewByte === 0) {\n newByte = pending.shift()\n pendingBitsForNewByte = 7\n }\n\n const usingBits = Math.min(pendingBitsForNewByte, pendingBitsForResultingByte)\n const mask = ~(0b11111111 << usingBits)\n const masked = newByte & mask\n resultingByte |= masked << (8 - pendingBitsForResultingByte)\n newByte = newByte >>> usingBits\n pendingBitsForNewByte -= usingBits\n pendingBitsForResultingByte -= usingBits\n\n if (!pendingBitsForResultingByte || (!pendingBitsForNewByte && !pending.length)) {\n bytes.push(resultingByte)\n resultingByte = 0\n pendingBitsForResultingByte = 8\n }\n }\n\n // remove trailing zeroes\n for(var i = bytes.length - 1; i > 0; i--) {\n const value = bytes[i]\n if (value === 0) {\n bytes.pop()\n } else {\n break\n }\n }\n\n return bytes\n }\n\n compactArray () {\n this._sortData()\n return this._data.map(valueOnly)\n }\n}\n\nfunction popCountReduce (count, byte) {\n return count + popCount(byte)\n}\n\nfunction popCount(_v) {\n let v = _v\n v = v - ((v >> 1) & 0x55555555) // reuse input as temporary\n v = (v & 0x33333333) + ((v >> 2) & 0x33333333) // temp\n return ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24\n}\n\nfunction sortInternal (a, b) {\n return a[0] - b[0]\n}\n\nfunction valueOnly (elem) {\n return elem[1]\n}","// @ts-expect-error no types\nimport SparseArray from 'sparse-array';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nexport class Bucket {\n _options;\n _popCount;\n _parent;\n _posAtParent;\n _children;\n key;\n constructor(options, parent, posAtParent = 0) {\n this._options = options;\n this._popCount = 0;\n this._parent = parent;\n this._posAtParent = posAtParent;\n this._children = new SparseArray();\n this.key = null;\n }\n async put(key, value) {\n const place = await this._findNewBucketAndPos(key);\n place.bucket._putAt(place, key, value);\n }\n async get(key) {\n const child = await this._findChild(key);\n if (child != null) {\n return child.value;\n }\n }\n async del(key) {\n const place = await this._findPlace(key);\n const child = place.bucket._at(place.pos);\n if (child != null && child.key === key) {\n place.bucket._delAt(place.pos);\n }\n }\n leafCount() {\n const children = this._children.compactArray();\n return children.reduce((acc, child) => {\n if (child instanceof Bucket) {\n return acc + child.leafCount();\n }\n return acc + 1;\n }, 0);\n }\n childrenCount() {\n return this._children.length;\n }\n onlyChild() {\n return this._children.get(0);\n }\n *eachLeafSeries() {\n const children = this._children.compactArray();\n for (const child of children) {\n if (child instanceof Bucket) {\n yield* child.eachLeafSeries();\n }\n else {\n yield child;\n }\n }\n }\n serialize(map, reduce) {\n const acc = [];\n // serialize to a custom non-sparse representation\n return reduce(this._children.reduce((acc, child, index) => {\n if (child != null) {\n if (child instanceof Bucket) {\n acc.push(child.serialize(map, reduce));\n }\n else {\n acc.push(map(child, index));\n }\n }\n return acc;\n }, acc));\n }\n async asyncTransform(asyncMap, asyncReduce) {\n return asyncTransformBucket(this, asyncMap, asyncReduce);\n }\n toJSON() {\n return this.serialize(mapNode, reduceNodes);\n }\n prettyPrint() {\n return JSON.stringify(this.toJSON(), null, ' ');\n }\n tableSize() {\n return Math.pow(2, this._options.bits);\n }\n async _findChild(key) {\n const result = await this._findPlace(key);\n const child = result.bucket._at(result.pos);\n if (child instanceof Bucket) {\n // should not be possible, this._findPlace should always\n // return a location for a child, not a bucket\n return undefined;\n }\n if (child != null && child.key === key) {\n return child;\n }\n }\n async _findPlace(key) {\n const hashValue = this._options.hash(typeof key === 'string' ? uint8ArrayFromString(key) : key);\n const index = await hashValue.take(this._options.bits);\n const child = this._children.get(index);\n if (child instanceof Bucket) {\n return child._findPlace(hashValue);\n }\n return {\n bucket: this,\n pos: index,\n hash: hashValue,\n existingChild: child\n };\n }\n async _findNewBucketAndPos(key) {\n const place = await this._findPlace(key);\n if ((place.existingChild != null) && place.existingChild.key !== key) {\n // conflict\n const bucket = new Bucket(this._options, place.bucket, place.pos);\n place.bucket._putObjectAt(place.pos, bucket);\n // put the previous value\n const newPlace = await bucket._findPlace(place.existingChild.hash);\n newPlace.bucket._putAt(newPlace, place.existingChild.key, place.existingChild.value);\n return bucket._findNewBucketAndPos(place.hash);\n }\n // no conflict, we found the place\n return place;\n }\n _putAt(place, key, value) {\n this._putObjectAt(place.pos, {\n key,\n value,\n hash: place.hash\n });\n }\n _putObjectAt(pos, object) {\n if (this._children.get(pos) == null) {\n this._popCount++;\n }\n this._children.set(pos, object);\n }\n _delAt(pos) {\n if (pos === -1) {\n throw new Error('Invalid position');\n }\n if (this._children.get(pos) != null) {\n this._popCount--;\n }\n this._children.unset(pos);\n this._level();\n }\n _level() {\n if (this._parent != null && this._popCount <= 1) {\n if (this._popCount === 1) {\n // remove myself from parent, replacing me with my only child\n const onlyChild = this._children.find(exists);\n if ((onlyChild != null) && !(onlyChild instanceof Bucket)) {\n const hash = onlyChild.hash;\n hash.untake(this._options.bits);\n const place = {\n pos: this._posAtParent,\n hash,\n bucket: this._parent\n };\n this._parent._putAt(place, onlyChild.key, onlyChild.value);\n }\n }\n else {\n this._parent._delAt(this._posAtParent);\n }\n }\n }\n _at(index) {\n return this._children.get(index);\n }\n}\nfunction exists(o) {\n return Boolean(o);\n}\nfunction mapNode(node, _) {\n return node.key;\n}\nfunction reduceNodes(nodes) {\n return nodes;\n}\nasync function asyncTransformBucket(bucket, asyncMap, asyncReduce) {\n const output = [];\n for (const child of bucket._children.compactArray()) {\n if (child instanceof Bucket) {\n await asyncTransformBucket(child, asyncMap, asyncReduce);\n }\n else {\n const mappedChildren = await asyncMap(child);\n output.push({\n bitField: bucket._children.bitField(),\n children: mappedChildren\n });\n }\n }\n return asyncReduce(output);\n}\n//# sourceMappingURL=bucket.js.map","const START_MASKS = [\n 0b11111111,\n 0b11111110,\n 0b11111100,\n 0b11111000,\n 0b11110000,\n 0b11100000,\n 0b11000000,\n 0b10000000\n];\nconst STOP_MASKS = [\n 0b00000001,\n 0b00000011,\n 0b00000111,\n 0b00001111,\n 0b00011111,\n 0b00111111,\n 0b01111111,\n 0b11111111\n];\nexport class ConsumableBuffer {\n _value;\n _currentBytePos;\n _currentBitPos;\n constructor(value) {\n this._value = value;\n this._currentBytePos = value.length - 1;\n this._currentBitPos = 7;\n }\n availableBits() {\n return this._currentBitPos + 1 + this._currentBytePos * 8;\n }\n totalBits() {\n return this._value.length * 8;\n }\n take(bits) {\n let pendingBits = bits;\n let result = 0;\n while (pendingBits > 0 && this._haveBits()) {\n const byte = this._value[this._currentBytePos];\n const availableBits = this._currentBitPos + 1;\n const taking = Math.min(availableBits, pendingBits);\n const value = byteBitsToInt(byte, availableBits - taking, taking);\n result = (result << taking) + value;\n pendingBits -= taking;\n this._currentBitPos -= taking;\n if (this._currentBitPos < 0) {\n this._currentBitPos = 7;\n this._currentBytePos--;\n }\n }\n return result;\n }\n untake(bits) {\n this._currentBitPos += bits;\n while (this._currentBitPos > 7) {\n this._currentBitPos -= 8;\n this._currentBytePos += 1;\n }\n }\n _haveBits() {\n return this._currentBytePos >= 0;\n }\n}\nfunction byteBitsToInt(byte, start, length) {\n const mask = maskFor(start, length);\n return (byte & mask) >>> start;\n}\nfunction maskFor(start, length) {\n return START_MASKS[start] & STOP_MASKS[Math.min(length + start - 1, 7)];\n}\n//# sourceMappingURL=consumable-buffer.js.map","import { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { ConsumableBuffer } from './consumable-buffer.js';\nexport function wrapHash(hashFn) {\n function hashing(value) {\n if (value instanceof InfiniteHash) {\n // already a hash. return it\n return value;\n }\n else {\n return new InfiniteHash(value, hashFn);\n }\n }\n return hashing;\n}\nexport class InfiniteHash {\n _value;\n _hashFn;\n _depth;\n _availableBits;\n _currentBufferIndex;\n _buffers;\n constructor(value, hashFn) {\n if (!(value instanceof Uint8Array)) {\n throw new Error('can only hash Uint8Arrays');\n }\n this._value = value;\n this._hashFn = hashFn;\n this._depth = -1;\n this._availableBits = 0;\n this._currentBufferIndex = 0;\n this._buffers = [];\n }\n async take(bits) {\n let pendingBits = bits;\n while (this._availableBits < pendingBits) {\n await this._produceMoreBits();\n }\n let result = 0;\n while (pendingBits > 0) {\n const hash = this._buffers[this._currentBufferIndex];\n const available = Math.min(hash.availableBits(), pendingBits);\n const took = hash.take(available);\n result = (result << available) + took;\n pendingBits -= available;\n this._availableBits -= available;\n if (hash.availableBits() === 0) {\n this._currentBufferIndex++;\n }\n }\n return result;\n }\n untake(bits) {\n let pendingBits = bits;\n while (pendingBits > 0) {\n const hash = this._buffers[this._currentBufferIndex];\n const availableForUntake = Math.min(hash.totalBits() - hash.availableBits(), pendingBits);\n hash.untake(availableForUntake);\n pendingBits -= availableForUntake;\n this._availableBits += availableForUntake;\n if (this._currentBufferIndex > 0 && hash.totalBits() === hash.availableBits()) {\n this._depth--;\n this._currentBufferIndex--;\n }\n }\n }\n async _produceMoreBits() {\n this._depth++;\n const value = this._depth > 0 ? uint8ArrayConcat([this._value, Uint8Array.from([this._depth])]) : this._value;\n const hashValue = await this._hashFn(value);\n const buffer = new ConsumableBuffer(hashValue);\n this._buffers.push(buffer);\n this._availableBits += buffer.availableBits();\n }\n}\n//# sourceMappingURL=consumable-hash.js.map","/**\n * @packageDocumentation\n *\n * A [Hash Mapped Trie](https://en.wikipedia.org/wiki/Hash_array_mapped_trie) implementation for JavaScript.\n *\n * This is used by [@helia/unixfs](https://www.npmjs.com/package/@helia/unixfs) for it's HAMT-sharded directory implementation.\n *\n * @example\n *\n * ```TypeScript\n * import { createHAMT } from 'hamt-sharding'\n * import crypto from 'crypto-promise'\n *\n * // decide how to hash buffers made from keys, can return a Promise\n * const hashFn = async (buf) => {\n * return crypto\n * .createHash('sha256')\n * .update(buf)\n * .digest()\n * }\n *\n * const bucket = createHAMT({\n * hashFn: hashFn\n * })\n *\n * await bucket.put('key', 'value')\n *\n * const output = await bucket.get('key')\n * // output === 'value'\n * ```\n */\nimport { Bucket } from './bucket.js';\nimport { wrapHash } from './consumable-hash.js';\nexport function createHAMT(options) {\n if (options == null || options.hashFn == null) {\n throw new Error('please define an options.hashFn');\n }\n const bucketOptions = {\n bits: options.bits ?? 8,\n hash: wrapHash(options.hashFn)\n };\n return new Bucket(bucketOptions);\n}\nexport { Bucket };\n//# sourceMappingURL=index.js.map","import { encode, prepare } from '@ipld/dag-pb';\nimport { murmur3128 } from '@multiformats/murmur3';\nimport { createHAMT, Bucket } from 'hamt-sharding';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { Dir, CID_V0, CID_V1 } from './dir.js';\nimport { persist } from './utils/persist.js';\nasync function hamtHashFn(buf) {\n return (await murmur3128.encode(buf))\n // Murmur3 outputs 128 bit but, accidentally, IPFS Go's\n // implementation only uses the first 64, so we must do the same\n // for parity..\n .slice(0, 8)\n // Invert buffer because that's how Go impl does it\n .reverse();\n}\nconst HAMT_HASH_CODE = BigInt(0x22);\nconst DEFAULT_FANOUT_BITS = 8;\nclass DirSharded extends Dir {\n _bucket;\n constructor(props, options) {\n super(props, options);\n this._bucket = createHAMT({\n hashFn: hamtHashFn,\n bits: options.shardFanoutBits ?? DEFAULT_FANOUT_BITS\n });\n }\n async put(name, value) {\n this.cid = undefined;\n this.size = undefined;\n this.nodeSize = undefined;\n await this._bucket.put(name, value);\n }\n async get(name) {\n return this._bucket.get(name);\n }\n childCount() {\n return this._bucket.leafCount();\n }\n directChildrenCount() {\n return this._bucket.childrenCount();\n }\n onlyChild() {\n return this._bucket.onlyChild();\n }\n async *eachChildSeries() {\n for await (const { key, value } of this._bucket.eachLeafSeries()) {\n yield {\n key,\n child: value\n };\n }\n }\n estimateNodeSize() {\n if (this.nodeSize !== undefined) {\n return this.nodeSize;\n }\n this.nodeSize = calculateSize(this._bucket, this, this.options);\n return this.nodeSize;\n }\n async *flush(blockstore) {\n for await (const entry of flush(this._bucket, blockstore, this, this.options)) {\n yield {\n ...entry,\n path: this.path\n };\n }\n }\n}\nexport default DirSharded;\nasync function* flush(bucket, blockstore, shardRoot, options) {\n const children = bucket._children;\n const padLength = (bucket.tableSize() - 1).toString(16).length;\n const links = [];\n let childrenSize = 0n;\n for (let i = 0; i < children.length; i++) {\n const child = children.get(i);\n if (child == null) {\n continue;\n }\n const labelPrefix = i.toString(16).toUpperCase().padStart(padLength, '0');\n if (child instanceof Bucket) {\n let shard;\n for await (const subShard of flush(child, blockstore, null, options)) {\n shard = subShard;\n }\n if (shard == null) {\n throw new Error('Could not flush sharded directory, no subshard found');\n }\n links.push({\n Name: labelPrefix,\n Tsize: Number(shard.size),\n Hash: shard.cid\n });\n childrenSize += shard.size;\n }\n else if (isDir(child.value)) {\n const dir = child.value;\n let flushedDir;\n for await (const entry of dir.flush(blockstore)) {\n flushedDir = entry;\n yield flushedDir;\n }\n if (flushedDir == null) {\n throw new Error('Did not flush dir');\n }\n const label = labelPrefix + child.key;\n links.push({\n Name: label,\n Tsize: Number(flushedDir.size),\n Hash: flushedDir.cid\n });\n childrenSize += flushedDir.size;\n }\n else {\n const value = child.value;\n if (value.cid == null) {\n continue;\n }\n const label = labelPrefix + child.key;\n const size = value.size;\n links.push({\n Name: label,\n Tsize: Number(size),\n Hash: value.cid\n });\n childrenSize += BigInt(size ?? 0);\n }\n }\n // go-ipfs uses little endian, that's why we have to\n // reverse the bit field before storing it\n const data = Uint8Array.from(children.bitField().reverse());\n const dir = new UnixFS({\n type: 'hamt-sharded-directory',\n data,\n fanout: BigInt(bucket.tableSize()),\n hashType: HAMT_HASH_CODE,\n mtime: shardRoot?.mtime,\n mode: shardRoot?.mode\n });\n const node = {\n Data: dir.marshal(),\n Links: links\n };\n const buffer = encode(prepare(node));\n const cid = await persist(buffer, blockstore, options);\n const size = BigInt(buffer.byteLength) + childrenSize;\n yield {\n cid,\n unixfs: dir,\n size\n };\n}\nfunction isDir(obj) {\n return typeof obj.flush === 'function';\n}\nfunction calculateSize(bucket, shardRoot, options) {\n const children = bucket._children;\n const padLength = (bucket.tableSize() - 1).toString(16).length;\n const links = [];\n for (let i = 0; i < children.length; i++) {\n const child = children.get(i);\n if (child == null) {\n continue;\n }\n const labelPrefix = i.toString(16).toUpperCase().padStart(padLength, '0');\n if (child instanceof Bucket) {\n const size = calculateSize(child, null, options);\n links.push({\n Name: labelPrefix,\n Tsize: Number(size),\n Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n });\n }\n else if (typeof child.value.flush === 'function') {\n const dir = child.value;\n const size = dir.nodeSize();\n links.push({\n Name: labelPrefix + child.key,\n Tsize: Number(size),\n Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n });\n }\n else {\n const value = child.value;\n if (value.cid == null) {\n continue;\n }\n const label = labelPrefix + child.key;\n const size = value.size;\n links.push({\n Name: label,\n Tsize: Number(size),\n Hash: value.cid\n });\n }\n }\n // go-ipfs uses little endian, that's why we have to\n // reverse the bit field before storing it\n const data = Uint8Array.from(children.bitField().reverse());\n const dir = new UnixFS({\n type: 'hamt-sharded-directory',\n data,\n fanout: BigInt(bucket.tableSize()),\n hashType: HAMT_HASH_CODE,\n mtime: shardRoot?.mtime,\n mode: shardRoot?.mode\n });\n const buffer = encode(prepare({\n Data: dir.marshal(),\n Links: links\n }));\n return buffer.length;\n}\n//# sourceMappingURL=dir-sharded.js.map","import { DirFlat } from './dir-flat.js';\nimport DirSharded, {} from './dir-sharded.js';\nexport async function flatToShard(child, dir, threshold, options) {\n let newDir = dir;\n if (dir instanceof DirFlat && dir.estimateNodeSize() > threshold) {\n newDir = await convertToShard(dir, options);\n }\n const parent = newDir.parent;\n if (parent != null) {\n if (newDir !== dir) {\n if (child != null) {\n child.parent = newDir;\n }\n if (newDir.parentKey == null) {\n throw new Error('No parent key found');\n }\n await parent.put(newDir.parentKey, newDir);\n }\n return flatToShard(newDir, parent, threshold, options);\n }\n return newDir;\n}\nasync function convertToShard(oldDir, options) {\n const newDir = new DirSharded({\n root: oldDir.root,\n dir: true,\n parent: oldDir.parent,\n parentKey: oldDir.parentKey,\n path: oldDir.path,\n dirty: oldDir.dirty,\n flat: false,\n mtime: oldDir.mtime,\n mode: oldDir.mode\n }, options);\n for await (const { key, child } of oldDir.eachChildSeries()) {\n await newDir.put(key, child);\n }\n return newDir;\n}\n//# sourceMappingURL=flat-to-shard.js.map","export const toPathComponents = (path = '') => {\n // split on / unless escaped with \\\n return path.split(/(? 1)) {\n yield* flushAndYield(tree, block);\n }\n else {\n for await (const unwrapped of tree.eachChildSeries()) {\n if (unwrapped == null) {\n continue;\n }\n yield* flushAndYield(unwrapped.child, block);\n }\n }\n };\n}\n//# sourceMappingURL=tree-builder.js.map","/**\n * @packageDocumentation\n *\n * @example\n *\n * Let's create a little directory to import:\n *\n * ```console\n * > cd /tmp\n * > mkdir foo\n * > echo 'hello' > foo/bar\n * > echo 'world' > foo/quux\n * ```\n *\n * And write the importing logic:\n *\n * ```js\n * import { importer } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core/memory'\n * import * as fs from 'node:fs'\n *\n * // Where the blocks will be stored\n * const blockstore = new MemoryBlockstore()\n *\n * // Import path /tmp/foo/\n * const source = [{\n * path: '/tmp/foo/bar',\n * content: fs.createReadStream('/tmp/foo/bar')\n * }, {\n * path: '/tmp/foo/quxx',\n * content: fs.createReadStream('/tmp/foo/quux')\n * }]\n *\n * for await (const entry of importer(source, blockstore)) {\n * console.info(entry)\n * }\n * ```\n *\n * When run, metadata about DAGNodes in the created tree is printed until the root:\n *\n * ```js\n * {\n * cid: CID, // see https://github.com/multiformats/js-cid\n * path: 'tmp/foo/bar',\n * unixfs: UnixFS // see https://github.com/ipfs/js-ipfs-unixfs\n * }\n * {\n * cid: CID, // see https://github.com/multiformats/js-cid\n * path: 'tmp/foo/quxx',\n * unixfs: UnixFS // see https://github.com/ipfs/js-ipfs-unixfs\n * }\n * {\n * cid: CID, // see https://github.com/multiformats/js-cid\n * path: 'tmp/foo',\n * unixfs: UnixFS // see https://github.com/ipfs/js-ipfs-unixfs\n * }\n * {\n * cid: CID, // see https://github.com/multiformats/js-cid\n * path: 'tmp',\n * unixfs: UnixFS // see https://github.com/ipfs/js-ipfs-unixfs\n * }\n * ```\n */\nimport first from 'it-first';\nimport parallelBatch from 'it-parallel-batch';\nimport { fixedSize } from './chunker/fixed-size.js';\nimport { defaultBufferImporter } from './dag-builder/buffer-importer.js';\nimport { defaultDagBuilder } from './dag-builder/index.js';\nimport { defaultChunkValidator } from './dag-builder/validate-chunks.js';\nimport { InvalidParametersError } from './errors.js';\nimport { balanced } from './layout/index.js';\nimport { defaultTreeBuilder } from './tree-builder.js';\nexport * from './errors.js';\n/**\n * The importer creates UnixFS DAGs and stores the blocks that make\n * them up in the passed blockstore.\n *\n * @example\n *\n * ```typescript\n * import { importer } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = [{\n * path: './foo.txt',\n * content: Uint8Array.from([0, 1, 2, 3, 4])\n * }, {\n * path: './bar.txt',\n * content: Uint8Array.from([0, 1, 2, 3, 4])\n * }]\n *\n * for await (const entry of importer(input, blockstore)) {\n * console.info(entry)\n * // { cid: CID(), ... }\n * }\n * ```\n */\nexport async function* importer(source, blockstore, options = {}) {\n let candidates;\n if (Symbol.asyncIterator in source || Symbol.iterator in source) {\n candidates = source;\n }\n else {\n candidates = [source];\n }\n const wrapWithDirectory = options.wrapWithDirectory ?? false;\n const shardSplitThresholdBytes = options.shardSplitThresholdBytes ?? 262144;\n const shardFanoutBits = options.shardFanoutBits ?? 8;\n const cidVersion = options.cidVersion ?? 1;\n const rawLeaves = options.rawLeaves ?? true;\n const leafType = options.leafType ?? 'file';\n const fileImportConcurrency = options.fileImportConcurrency ?? 50;\n const blockWriteConcurrency = options.blockWriteConcurrency ?? 10;\n const reduceSingleLeafToSelf = options.reduceSingleLeafToSelf ?? true;\n const chunker = options.chunker ?? fixedSize();\n const chunkValidator = options.chunkValidator ?? defaultChunkValidator();\n const buildDag = options.dagBuilder ?? defaultDagBuilder({\n chunker,\n chunkValidator,\n wrapWithDirectory,\n layout: options.layout ?? balanced(),\n bufferImporter: options.bufferImporter ?? defaultBufferImporter({\n cidVersion,\n rawLeaves,\n leafType,\n onProgress: options.onProgress\n }),\n blockWriteConcurrency,\n reduceSingleLeafToSelf,\n cidVersion,\n onProgress: options.onProgress\n });\n const buildTree = options.treeBuilder ?? defaultTreeBuilder({\n wrapWithDirectory,\n shardSplitThresholdBytes,\n shardFanoutBits,\n cidVersion,\n onProgress: options.onProgress\n });\n for await (const entry of buildTree(parallelBatch(buildDag(candidates, blockstore), fileImportConcurrency), blockstore)) {\n yield {\n cid: entry.cid,\n path: entry.path,\n unixfs: entry.unixfs,\n size: entry.size\n };\n }\n}\n/**\n * `importFile` is similar to `importer` except it accepts a single\n * `FileCandidate` and returns a promise of a single `ImportResult`\n * instead of a stream of results.\n *\n * @example\n *\n * ```typescript\n * import { importFile } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input: FileCandidate = {\n * path: './foo.txt',\n * content: Uint8Array.from([0, 1, 2, 3, 4])\n * }\n *\n * const entry = await importFile(input, blockstore)\n * ```\n */\nexport async function importFile(content, blockstore, options = {}) {\n const result = await first(importer([content], blockstore, options));\n if (result == null) {\n throw new InvalidParametersError('Nothing imported');\n }\n return result;\n}\n/**\n * `importDir` is similar to `importer` except it accepts a single\n * `DirectoryCandidate` and returns a promise of a single `ImportResult`\n * instead of a stream of results.\n *\n * @example\n *\n * ```typescript\n * import { importDirectory } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input: DirectoryCandidate = {\n * path: './foo.txt'\n * }\n *\n * const entry = await importDirectory(input, blockstore)\n * ```\n */\nexport async function importDirectory(content, blockstore, options = {}) {\n const result = await first(importer([content], blockstore, options));\n if (result == null) {\n throw new InvalidParametersError('Nothing imported');\n }\n return result;\n}\n/**\n * `importBytes` accepts a single Uint8Array and returns a promise\n * of a single `ImportResult`.\n *\n * @example\n *\n * ```typescript\n * import { importBytes } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = Uint8Array.from([0, 1, 2, 3, 4])\n *\n * const entry = await importBytes(input, blockstore)\n * ```\n */\nexport async function importBytes(buf, blockstore, options = {}) {\n return importFile({\n content: buf\n }, blockstore, options);\n}\n/**\n * `importByteStream` accepts a single stream of Uint8Arrays and\n * returns a promise of a single `ImportResult`.\n *\n * @example\n *\n * ```typescript\n * import { importByteStream } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = [\n * Uint8Array.from([0, 1, 2, 3, 4]),\n * Uint8Array.from([5, 6, 7, 8, 9])\n * ]\n *\n * const entry = await importByteStream(input, blockstore)\n * ```\n */\nexport async function importByteStream(bufs, blockstore, options = {}) {\n return importFile({\n content: bufs\n }, blockstore, options);\n}\n//# sourceMappingURL=index.js.map","import { importBytes, importByteStream, importDirectory, importer, importFile } from 'ipfs-unixfs-importer';\nimport { fixedSize } from 'ipfs-unixfs-importer/chunker';\nimport { balanced } from 'ipfs-unixfs-importer/layout';\n/**\n * Default importer settings match Filecoin\n */\nconst defaultImporterSettings = {\n cidVersion: 1,\n rawLeaves: true,\n layout: balanced({\n maxChildrenPerNode: 1024\n }),\n chunker: fixedSize({\n chunkSize: 1048576\n })\n};\nexport async function* addAll(source, blockstore, options = {}) {\n yield* importer(source, blockstore, {\n ...defaultImporterSettings,\n ...options\n });\n}\nexport async function addBytes(bytes, blockstore, options = {}) {\n const { cid } = await importBytes(bytes, blockstore, {\n ...defaultImporterSettings,\n ...options\n });\n return cid;\n}\nexport async function addByteStream(bytes, blockstore, options = {}) {\n const { cid } = await importByteStream(bytes, blockstore, {\n ...defaultImporterSettings,\n ...options\n });\n return cid;\n}\nexport async function addFile(file, blockstore, options = {}) {\n const { cid } = await importFile(file, blockstore, {\n ...defaultImporterSettings,\n ...options\n });\n return cid;\n}\nexport async function addDirectory(dir, blockstore, options = {}) {\n const { cid } = await importDirectory({\n ...dir,\n path: dir.path ?? '-'\n }, blockstore, {\n ...defaultImporterSettings,\n ...options\n });\n return cid;\n}\n//# sourceMappingURL=add.js.map","/**\n * @packageDocumentation\n *\n * Return the last value from an (async)iterable.\n *\n * @example\n *\n * ```javascript\n * import last from 'it-last'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const res = last(values)\n *\n * console.info(res) // 4\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import last from 'it-last'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const res = await last(values())\n *\n * console.info(res) // 4\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction last(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n let res;\n for await (const entry of source) {\n res = entry;\n }\n return res;\n })();\n }\n let res;\n for (const entry of source) {\n res = entry;\n }\n return res;\n}\nexport default last;\n//# sourceMappingURL=index.js.map","export class BadPathError extends Error {\n static name = 'BadPathError';\n static code = 'ERR_BAD_PATH';\n name = BadPathError.name;\n code = BadPathError.code;\n constructor(message = 'Bad path') {\n super(message);\n }\n}\nexport class NotFoundError extends Error {\n static name = 'NotFoundError';\n static code = 'ERR_NOT_FOUND';\n name = NotFoundError.name;\n code = NotFoundError.code;\n constructor(message = 'Not found') {\n super(message);\n }\n}\nexport class NoResolverError extends Error {\n static name = 'NoResolverError';\n static code = 'ERR_NO_RESOLVER';\n name = NoResolverError.name;\n code = NoResolverError.code;\n constructor(message = 'No resolver') {\n super(message);\n }\n}\nexport class NotUnixFSError extends Error {\n static name = 'NotUnixFSError';\n static code = 'ERR_NOT_UNIXFS';\n name = NotUnixFSError.name;\n code = NotUnixFSError.code;\n constructor(message = 'Not UnixFS') {\n super(message);\n }\n}\nexport class OverReadError extends Error {\n static name = 'OverReadError';\n static code = 'ERR_OVER_READ';\n name = OverReadError.name;\n code = OverReadError.code;\n constructor(message = 'Over read') {\n super(message);\n }\n}\nexport class UnderReadError extends Error {\n static name = 'UnderReadError';\n static code = 'ERR_UNDER_READ';\n name = UnderReadError.name;\n code = UnderReadError.code;\n constructor(message = 'Under read') {\n super(message);\n }\n}\nexport class NoPropError extends Error {\n static name = 'NoPropError';\n static code = 'ERR_NO_PROP';\n name = NoPropError.name;\n code = NoPropError.code;\n constructor(message = 'No Property found') {\n super(message);\n }\n}\nexport class InvalidParametersError extends Error {\n static name = 'InvalidParametersError';\n static code = 'ERR_INVALID_PARAMS';\n name = InvalidParametersError.name;\n code = InvalidParametersError.code;\n constructor(message = 'Invalid parameters') {\n super(message);\n }\n}\n//# sourceMappingURL=errors.js.map","import { Type } from '../token.js'\nimport { encodeCustom } from '../encode.js'\nimport { encodeErrPrefix } from '../common.js'\nimport { asU8A, fromString } from '../byte-utils.js'\n\n/**\n * @typedef {import('../../interface').EncodeOptions} EncodeOptions\n * @typedef {import('../token').Token} Token\n * @typedef {import('../bl').Bl} Bl\n */\n\nclass JSONEncoder extends Array {\n constructor () {\n super()\n /** @type {{type:Type,elements:number}[]} */\n this.inRecursive = []\n }\n\n /**\n * @param {Bl} buf\n */\n prefix (buf) {\n const recurs = this.inRecursive[this.inRecursive.length - 1]\n if (recurs) {\n if (recurs.type === Type.array) {\n recurs.elements++\n if (recurs.elements !== 1) { // >first\n buf.push([44]) // ','\n }\n }\n if (recurs.type === Type.map) {\n recurs.elements++\n if (recurs.elements !== 1) { // >first\n if (recurs.elements % 2 === 1) { // key\n buf.push([44]) // ','\n } else {\n buf.push([58]) // ':'\n }\n }\n }\n }\n }\n\n /**\n * @param {Bl} buf\n * @param {Token} token\n */\n [Type.uint.major] (buf, token) {\n this.prefix(buf)\n const is = String(token.value)\n const isa = []\n for (let i = 0; i < is.length; i++) {\n isa[i] = is.charCodeAt(i)\n }\n buf.push(isa)\n }\n\n /**\n * @param {Bl} buf\n * @param {Token} token\n */\n [Type.negint.major] (buf, token) {\n // @ts-ignore hack\n this[Type.uint.major](buf, token)\n }\n\n /**\n * @param {Bl} _buf\n * @param {Token} _token\n */\n [Type.bytes.major] (_buf, _token) {\n throw new Error(`${encodeErrPrefix} unsupported type: Uint8Array`)\n }\n\n /**\n * @param {Bl} buf\n * @param {Token} token\n */\n [Type.string.major] (buf, token) {\n this.prefix(buf)\n // buf.push(34) // '\"'\n // encodeUtf8(token.value, byts)\n // buf.push(34) // '\"'\n const byts = fromString(JSON.stringify(token.value))\n buf.push(byts.length > 32 ? asU8A(byts) : byts)\n }\n\n /**\n * @param {Bl} buf\n * @param {Token} _token\n */\n [Type.array.major] (buf, _token) {\n this.prefix(buf)\n this.inRecursive.push({ type: Type.array, elements: 0 })\n buf.push([91]) // '['\n }\n\n /**\n * @param {Bl} buf\n * @param {Token} _token\n */\n [Type.map.major] (buf, _token) {\n this.prefix(buf)\n this.inRecursive.push({ type: Type.map, elements: 0 })\n buf.push([123]) // '{'\n }\n\n /**\n * @param {Bl} _buf\n * @param {Token} _token\n */\n [Type.tag.major] (_buf, _token) {}\n\n /**\n * @param {Bl} buf\n * @param {Token} token\n */\n [Type.float.major] (buf, token) {\n if (token.type.name === 'break') {\n const recurs = this.inRecursive.pop()\n if (recurs) {\n if (recurs.type === Type.array) {\n buf.push([93]) // ']'\n } else if (recurs.type === Type.map) {\n buf.push([125]) // '}'\n /* c8 ignore next 3 */\n } else {\n throw new Error('Unexpected recursive type; this should not happen!')\n }\n return\n }\n /* c8 ignore next 2 */\n throw new Error('Unexpected break; this should not happen!')\n }\n if (token.value === undefined) {\n throw new Error(`${encodeErrPrefix} unsupported type: undefined`)\n }\n\n this.prefix(buf)\n if (token.type.name === 'true') {\n buf.push([116, 114, 117, 101]) // 'true'\n return\n } else if (token.type.name === 'false') {\n buf.push([102, 97, 108, 115, 101]) // 'false'\n return\n } else if (token.type.name === 'null') {\n buf.push([110, 117, 108, 108]) // 'null'\n return\n }\n\n // number\n const is = String(token.value)\n const isa = []\n let dp = false\n for (let i = 0; i < is.length; i++) {\n isa[i] = is.charCodeAt(i)\n if (!dp && (isa[i] === 46 || isa[i] === 101 || isa[i] === 69)) { // '[.eE]'\n dp = true\n }\n }\n if (!dp) { // need a decimal point for floats\n isa.push(46) // '.'\n isa.push(48) // '0'\n }\n buf.push(isa)\n }\n}\n\n// The below code is mostly taken and modified from https://github.com/feross/buffer\n// Licensed MIT. Copyright (c) Feross Aboukhadijeh\n// function encodeUtf8 (string, byts) {\n// let codePoint\n// const length = string.length\n// let leadSurrogate = null\n\n// for (let i = 0; i < length; ++i) {\n// codePoint = string.charCodeAt(i)\n\n// // is surrogate component\n// if (codePoint > 0xd7ff && codePoint < 0xe000) {\n// // last char was a lead\n// if (!leadSurrogate) {\n// // no lead yet\n// /* c8 ignore next 9 */\n// if (codePoint > 0xdbff) {\n// // unexpected trail\n// byts.push(0xef, 0xbf, 0xbd)\n// continue\n// } else if (i + 1 === length) {\n// // unpaired lead\n// byts.push(0xef, 0xbf, 0xbd)\n// continue\n// }\n\n// // valid lead\n// leadSurrogate = codePoint\n\n// continue\n// }\n\n// // 2 leads in a row\n// /* c8 ignore next 5 */\n// if (codePoint < 0xdc00) {\n// byts.push(0xef, 0xbf, 0xbd)\n// leadSurrogate = codePoint\n// continue\n// }\n\n// // valid surrogate pair\n// codePoint = (leadSurrogate - 0xd800 << 10 | codePoint - 0xdc00) + 0x10000\n// /* c8 ignore next 4 */\n// } else if (leadSurrogate) {\n// // valid bmp char, but last char was a lead\n// byts.push(0xef, 0xbf, 0xbd)\n// }\n\n// leadSurrogate = null\n\n// // encode utf8\n// if (codePoint < 0x80) {\n// // special JSON escapes\n// switch (codePoint) {\n// case 8: // '\\b'\n// byts.push(92, 98) // '\\\\b'\n// continue\n// case 9: // '\\t'\n// byts.push(92, 116) // '\\\\t'\n// continue\n// case 10: // '\\n'\n// byts.push(92, 110) // '\\\\n'\n// continue\n// case 12: // '\\f'\n// byts.push(92, 102) // '\\\\f'\n// continue\n// case 13: // '\\r'\n// byts.push(92, 114) // '\\\\r'\n// continue\n// case 34: // '\"'\n// byts.push(92, 34) // '\\\\\"'\n// continue\n// case 92: // '\\\\'\n// byts.push(92, 92) // '\\\\\\\\'\n// continue\n// }\n\n// byts.push(codePoint)\n// } else if (codePoint < 0x800) {\n// /* c8 ignore next 1 */\n// byts.push(\n// codePoint >> 0x6 | 0xc0,\n// codePoint & 0x3f | 0x80\n// )\n// } else if (codePoint < 0x10000) {\n// /* c8 ignore next 1 */\n// byts.push(\n// codePoint >> 0xc | 0xe0,\n// codePoint >> 0x6 & 0x3f | 0x80,\n// codePoint & 0x3f | 0x80\n// )\n// /* c8 ignore next 9 */\n// } else if (codePoint < 0x110000) {\n// byts.push(\n// codePoint >> 0x12 | 0xf0,\n// codePoint >> 0xc & 0x3f | 0x80,\n// codePoint >> 0x6 & 0x3f | 0x80,\n// codePoint & 0x3f | 0x80\n// )\n// } else {\n// /* c8 ignore next 2 */\n// throw new Error('Invalid code point')\n// }\n// }\n// }\n\n/**\n * @param {(Token|Token[])[]} e1\n * @param {(Token|Token[])[]} e2\n * @returns {number}\n */\nfunction mapSorter (e1, e2) {\n if (Array.isArray(e1[0]) || Array.isArray(e2[0])) {\n throw new Error(`${encodeErrPrefix} complex map keys are not supported`)\n }\n const keyToken1 = e1[0]\n const keyToken2 = e2[0]\n if (keyToken1.type !== Type.string || keyToken2.type !== Type.string) {\n throw new Error(`${encodeErrPrefix} non-string map keys are not supported`)\n }\n if (keyToken1 < keyToken2) {\n return -1\n }\n if (keyToken1 > keyToken2) {\n return 1\n }\n /* c8 ignore next 1 */\n throw new Error(`${encodeErrPrefix} unexpected duplicate map keys, this is not supported`)\n}\n\nconst defaultEncodeOptions = { addBreakTokens: true, mapSorter }\n\n/**\n * @param {any} data\n * @param {EncodeOptions} [options]\n * @returns {Uint8Array}\n */\nfunction encode (data, options) {\n options = Object.assign({}, defaultEncodeOptions, options)\n return encodeCustom(data, new JSONEncoder(), options)\n}\n\nexport { encode }\n","import { decode as _decode, decodeFirst as _decodeFirst } from '../decode.js'\nimport { Token, Type } from '../token.js'\nimport { decodeCodePointsArray } from '../byte-utils.js'\nimport { decodeErrPrefix } from '../common.js'\n\n/**\n * @typedef {import('../../interface').DecodeOptions} DecodeOptions\n * @typedef {import('../../interface').DecodeTokenizer} DecodeTokenizer\n */\n\n/**\n * @implements {DecodeTokenizer}\n */\nclass Tokenizer {\n /**\n * @param {Uint8Array} data\n * @param {DecodeOptions} options\n */\n constructor (data, options = {}) {\n this._pos = 0\n this.data = data\n this.options = options\n /** @type {string[]} */\n this.modeStack = ['value']\n this.lastToken = ''\n }\n\n pos () {\n return this._pos\n }\n\n /**\n * @returns {boolean}\n */\n done () {\n return this._pos >= this.data.length\n }\n\n /**\n * @returns {number}\n */\n ch () {\n return this.data[this._pos]\n }\n\n /**\n * @returns {string}\n */\n currentMode () {\n return this.modeStack[this.modeStack.length - 1]\n }\n\n skipWhitespace () {\n let c = this.ch()\n // @ts-ignore\n while (c === 32 /* ' ' */ || c === 9 /* '\\t' */ || c === 13 /* '\\r' */ || c === 10 /* '\\n' */) {\n c = this.data[++this._pos]\n }\n }\n\n /**\n * @param {number[]} str\n */\n expect (str) {\n if (this.data.length - this._pos < str.length) {\n throw new Error(`${decodeErrPrefix} unexpected end of input at position ${this._pos}`)\n }\n for (let i = 0; i < str.length; i++) {\n if (this.data[this._pos++] !== str[i]) {\n throw new Error(`${decodeErrPrefix} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...str)}'`)\n }\n }\n }\n\n parseNumber () {\n const startPos = this._pos\n let negative = false\n let float = false\n\n /**\n * @param {number[]} chars\n */\n const swallow = (chars) => {\n while (!this.done()) {\n const ch = this.ch()\n if (chars.includes(ch)) {\n this._pos++\n } else {\n break\n }\n }\n }\n\n // lead\n if (this.ch() === 45) { // '-'\n negative = true\n this._pos++\n }\n if (this.ch() === 48) { // '0'\n this._pos++\n if (this.ch() === 46) { // '.'\n this._pos++\n float = true\n } else {\n return new Token(Type.uint, 0, this._pos - startPos)\n }\n }\n swallow([48, 49, 50, 51, 52, 53, 54, 55, 56, 57]) // DIGIT\n if (negative && this._pos === startPos + 1) {\n throw new Error(`${decodeErrPrefix} unexpected token at position ${this._pos}`)\n }\n if (!this.done() && this.ch() === 46) { // '.'\n if (float) {\n throw new Error(`${decodeErrPrefix} unexpected token at position ${this._pos}`)\n }\n float = true\n this._pos++\n swallow([48, 49, 50, 51, 52, 53, 54, 55, 56, 57]) // DIGIT\n }\n if (!this.done() && (this.ch() === 101 || this.ch() === 69)) { // '[eE]'\n float = true\n this._pos++\n if (!this.done() && (this.ch() === 43 || this.ch() === 45)) { // '+', '-'\n this._pos++\n }\n swallow([48, 49, 50, 51, 52, 53, 54, 55, 56, 57]) // DIGIT\n }\n // @ts-ignore\n const numStr = String.fromCharCode.apply(null, this.data.subarray(startPos, this._pos))\n const num = parseFloat(numStr)\n if (float) {\n return new Token(Type.float, num, this._pos - startPos)\n }\n if (this.options.allowBigInt !== true || Number.isSafeInteger(num)) {\n return new Token(num >= 0 ? Type.uint : Type.negint, num, this._pos - startPos)\n }\n return new Token(num >= 0 ? Type.uint : Type.negint, BigInt(numStr), this._pos - startPos)\n }\n\n /**\n * @returns {Token}\n */\n parseString () {\n /* c8 ignore next 4 */\n if (this.ch() !== 34) { // '\"'\n // this would be a programming error\n throw new Error(`${decodeErrPrefix} unexpected character at position ${this._pos}; this shouldn't happen`)\n }\n this._pos++\n\n // check for simple fast-path, all printable ascii, no escapes\n // >0x10000 elements may fail fn.apply() (http://stackoverflow.com/a/22747272/680742)\n for (let i = this._pos, l = 0; i < this.data.length && l < 0x10000; i++, l++) {\n const ch = this.data[i]\n if (ch === 92 || ch < 32 || ch >= 128) { // '\\', ' ', control-chars or non-trivial\n break\n }\n if (ch === 34) { // '\"'\n // @ts-ignore\n const str = String.fromCharCode.apply(null, this.data.subarray(this._pos, i))\n this._pos = i + 1\n return new Token(Type.string, str, l)\n }\n }\n\n const startPos = this._pos\n const chars = []\n\n const readu4 = () => {\n if (this._pos + 4 >= this.data.length) {\n throw new Error(`${decodeErrPrefix} unexpected end of unicode escape sequence at position ${this._pos}`)\n }\n let u4 = 0\n for (let i = 0; i < 4; i++) {\n let ch = this.ch()\n if (ch >= 48 && ch <= 57) { // '0' && '9'\n ch -= 48\n } else if (ch >= 97 && ch <= 102) { // 'a' && 'f'\n ch = ch - 97 + 10\n } else if (ch >= 65 && ch <= 70) { // 'A' && 'F'\n ch = ch - 65 + 10\n } else {\n throw new Error(`${decodeErrPrefix} unexpected unicode escape character at position ${this._pos}`)\n }\n u4 = u4 * 16 + ch\n this._pos++\n }\n return u4\n }\n\n // mostly taken from feross/buffer and adjusted to fit\n const readUtf8Char = () => {\n const firstByte = this.ch()\n let codePoint = null\n /* c8 ignore next 1 */\n let bytesPerSequence = (firstByte > 0xef) ? 4 : (firstByte > 0xdf) ? 3 : (firstByte > 0xbf) ? 2 : 1\n\n if (this._pos + bytesPerSequence > this.data.length) {\n throw new Error(`${decodeErrPrefix} unexpected unicode sequence at position ${this._pos}`)\n }\n\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n /* c8 ignore next 6 */\n // this case is dealt with by the caller function\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = this.data[this._pos + 1]\n if ((secondByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0x1f) << 0x6 | (secondByte & 0x3f)\n if (tempCodePoint > 0x7f) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = this.data[this._pos + 1]\n thirdByte = this.data[this._pos + 2]\n if ((secondByte & 0xc0) === 0x80 && (thirdByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0xf) << 0xc | (secondByte & 0x3f) << 0x6 | (thirdByte & 0x3f)\n /* c8 ignore next 3 */\n if (tempCodePoint > 0x7ff && (tempCodePoint < 0xd800 || tempCodePoint > 0xdfff)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = this.data[this._pos + 1]\n thirdByte = this.data[this._pos + 2]\n fourthByte = this.data[this._pos + 3]\n if ((secondByte & 0xc0) === 0x80 && (thirdByte & 0xc0) === 0x80 && (fourthByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0xf) << 0x12 | (secondByte & 0x3f) << 0xc | (thirdByte & 0x3f) << 0x6 | (fourthByte & 0x3f)\n if (tempCodePoint > 0xffff && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n\n /* c8 ignore next 5 */\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xfffd\n bytesPerSequence = 1\n } else if (codePoint > 0xffff) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n chars.push(codePoint >>> 10 & 0x3ff | 0xd800)\n codePoint = 0xdc00 | codePoint & 0x3ff\n }\n\n chars.push(codePoint)\n this._pos += bytesPerSequence\n }\n\n // TODO: could take the approach of a quick first scan for special chars like encoding/json/decode.go#unquoteBytes\n // and converting all of the ascii chars from the base array in bulk\n while (!this.done()) {\n const ch = this.ch()\n let ch1\n switch (ch) {\n case 92: // '\\'\n this._pos++\n if (this.done()) {\n throw new Error(`${decodeErrPrefix} unexpected string termination at position ${this._pos}`)\n }\n ch1 = this.ch()\n this._pos++\n switch (ch1) {\n case 34: // '\"'\n case 39: // '\\''\n case 92: // '\\'\n case 47: // '/'\n chars.push(ch1)\n break\n case 98: // 'b'\n chars.push(8)\n break\n case 116: // 't'\n chars.push(9)\n break\n case 110: // 'n'\n chars.push(10)\n break\n case 102: // 'f'\n chars.push(12)\n break\n case 114: // 'r'\n chars.push(13)\n break\n case 117: // 'u'\n chars.push(readu4())\n break\n default:\n throw new Error(`${decodeErrPrefix} unexpected string escape character at position ${this._pos}`)\n }\n break\n case 34: // '\"'\n this._pos++\n return new Token(Type.string, decodeCodePointsArray(chars), this._pos - startPos)\n default:\n if (ch < 32) { // ' '\n throw new Error(`${decodeErrPrefix} invalid control character at position ${this._pos}`)\n } else if (ch < 0x80) {\n chars.push(ch)\n this._pos++\n } else {\n readUtf8Char()\n }\n }\n }\n\n throw new Error(`${decodeErrPrefix} unexpected end of string at position ${this._pos}`)\n }\n\n /**\n * @returns {Token}\n */\n parseValue () {\n switch (this.ch()) {\n case 123: // '{'\n this.modeStack.push('obj-start')\n this._pos++\n return new Token(Type.map, Infinity, 1)\n case 91: // '['\n this.modeStack.push('array-start')\n this._pos++\n return new Token(Type.array, Infinity, 1)\n case 34: { // '\"'\n return this.parseString()\n }\n case 110: // 'n' / null\n this.expect([110, 117, 108, 108]) // 'null'\n return new Token(Type.null, null, 4)\n case 102: // 'f' / // false\n this.expect([102, 97, 108, 115, 101]) // 'false'\n return new Token(Type.false, false, 5)\n case 116: // 't' / // true\n this.expect([116, 114, 117, 101]) // 'true'\n return new Token(Type.true, true, 4)\n case 45: // '-'\n case 48: // '0'\n case 49: // '1'\n case 50: // '2'\n case 51: // '3'\n case 52: // '4'\n case 53: // '5'\n case 54: // '6'\n case 55: // '7'\n case 56: // '8'\n case 57: // '9'\n return this.parseNumber()\n default:\n throw new Error(`${decodeErrPrefix} unexpected character at position ${this._pos}`)\n }\n }\n\n /**\n * @returns {Token}\n */\n next () {\n this.skipWhitespace()\n switch (this.currentMode()) {\n case 'value':\n this.modeStack.pop()\n return this.parseValue()\n case 'array-value': {\n this.modeStack.pop()\n if (this.ch() === 93) { // ']'\n this._pos++\n this.skipWhitespace()\n return new Token(Type.break, undefined, 1)\n }\n if (this.ch() !== 44) { // ','\n throw new Error(`${decodeErrPrefix} unexpected character at position ${this._pos}, was expecting array delimiter but found '${String.fromCharCode(this.ch())}'`)\n }\n this._pos++\n this.modeStack.push('array-value')\n this.skipWhitespace()\n return this.parseValue()\n }\n case 'array-start': {\n this.modeStack.pop()\n if (this.ch() === 93) { // ']'\n this._pos++\n this.skipWhitespace()\n return new Token(Type.break, undefined, 1)\n }\n this.modeStack.push('array-value')\n this.skipWhitespace()\n return this.parseValue()\n }\n // @ts-ignore\n case 'obj-key':\n if (this.ch() === 125) { // '}'\n this.modeStack.pop()\n this._pos++\n this.skipWhitespace()\n return new Token(Type.break, undefined, 1)\n }\n if (this.ch() !== 44) { // ','\n throw new Error(`${decodeErrPrefix} unexpected character at position ${this._pos}, was expecting object delimiter but found '${String.fromCharCode(this.ch())}'`)\n }\n this._pos++\n this.skipWhitespace()\n case 'obj-start': { // eslint-disable-line no-fallthrough\n this.modeStack.pop()\n if (this.ch() === 125) { // '}'\n this._pos++\n this.skipWhitespace()\n return new Token(Type.break, undefined, 1)\n }\n const token = this.parseString()\n this.skipWhitespace()\n if (this.ch() !== 58) { // ':'\n throw new Error(`${decodeErrPrefix} unexpected character at position ${this._pos}, was expecting key/value delimiter ':' but found '${String.fromCharCode(this.ch())}'`)\n }\n this._pos++\n this.modeStack.push('obj-value')\n return token\n }\n case 'obj-value': {\n this.modeStack.pop()\n this.modeStack.push('obj-key')\n this.skipWhitespace()\n return this.parseValue()\n }\n /* c8 ignore next 2 */\n default:\n throw new Error(`${decodeErrPrefix} unexpected parse state at position ${this._pos}; this shouldn't happen`)\n }\n }\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {any}\n */\nfunction decode (data, options) {\n options = Object.assign({ tokenizer: new Tokenizer(data, options) }, options)\n return _decode(data, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {[any, Uint8Array]}\n */\nfunction decodeFirst (data, options) {\n options = Object.assign({ tokenizer: new Tokenizer(data, options) }, options)\n return _decodeFirst(data, options)\n}\n\nexport { decode, decodeFirst, Tokenizer }\n","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","/* eslint max-depth: [\"error\", 7] */\nimport { Token, Type } from 'cborg'\nimport * as cborgJson from 'cborg/json'\nimport { CID } from 'multiformats'\nimport { base64 } from 'multiformats/bases/base64'\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView} ByteView\n */\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView} ArrayBufferView\n */\n/**\n * @template T\n * @typedef {import('multiformats').ToString} ToString\n */\n/**\n * @typedef {import('cborg/interface').DecodeTokenizer} DecodeTokenizer\n */\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} buf\n * @returns {ByteView}\n */\nfunction toByteView (buf) {\n if (buf instanceof ArrayBuffer) {\n return new Uint8Array(buf, 0, buf.byteLength)\n }\n\n return buf\n}\n\n/**\n * cidEncoder will receive all Objects during encode, it needs to filter out\n * anything that's not a CID and return `null` for that so it's encoded as\n * normal. Encoding a CID means replacing it with a `{\"/\":\"}`\n * object as per the DAG-JSON spec.\n *\n * @param {any} obj\n * @returns {Token[]|null}\n */\nfunction cidEncoder (obj) {\n if (obj.asCID !== obj && obj['/'] !== obj.bytes) {\n return null // any other kind of object\n }\n const cid = CID.asCID(obj)\n /* c8 ignore next 4 */\n // very unlikely case, and it'll probably throw a recursion error in cborg\n if (!cid) {\n return null\n }\n const cidString = cid.toString()\n\n return [\n new Token(Type.map, Infinity, 1),\n new Token(Type.string, '/', 1), // key\n new Token(Type.string, cidString, cidString.length), // value\n new Token(Type.break, undefined, 1)\n ]\n}\n\n/**\n * bytesEncoder will receive all Uint8Arrays (and friends) during encode, it\n * needs to replace it with a `{\"/\":{\"bytes\":\"Base64ByteString\"}}` object as\n * per the DAG-JSON spec.\n *\n * @param {Uint8Array} bytes\n * @returns {Token[]|null}\n */\nfunction bytesEncoder (bytes) {\n const bytesString = base64.encode(bytes).slice(1) // no mbase prefix\n return [\n new Token(Type.map, Infinity, 1),\n new Token(Type.string, '/', 1), // key\n new Token(Type.map, Infinity, 1), // value\n new Token(Type.string, 'bytes', 5), // inner key\n new Token(Type.string, bytesString, bytesString.length), // inner value\n new Token(Type.break, undefined, 1),\n new Token(Type.break, undefined, 1)\n ]\n}\n\n/**\n * taBytesEncoder wraps bytesEncoder() but for the more exotic typed arrays so\n * that we access the underlying ArrayBuffer data\n *\n * @param {Int8Array|Uint16Array|Int16Array|Uint32Array|Int32Array|Float32Array|Float64Array|Uint8ClampedArray|BigInt64Array|BigUint64Array} obj\n * @returns {Token[]|null}\n */\nfunction taBytesEncoder (obj) {\n return bytesEncoder(new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength))\n}\n\n/**\n * abBytesEncoder wraps bytesEncoder() but for plain ArrayBuffers\n *\n * @param {ArrayBuffer} ab\n * @returns {Token[]|null}\n */\nfunction abBytesEncoder (ab) {\n return bytesEncoder(new Uint8Array(ab))\n}\n\n// eslint-disable-next-line jsdoc/require-returns-check\n/**\n * Intercept all `undefined` values from an object walk and reject the entire\n * object if we find one.\n *\n * @returns {null}\n */\nfunction undefinedEncoder () {\n throw new Error('`undefined` is not supported by the IPLD Data Model and cannot be encoded')\n}\n\n/**\n * Intercept all `number` values from an object walk and reject the entire\n * object if we find something that doesn't fit the IPLD data model (NaN &\n * Infinity).\n *\n * @param {number} num\n * @returns {null}\n */\nfunction numberEncoder (num) {\n if (Number.isNaN(num)) {\n throw new Error('`NaN` is not supported by the IPLD Data Model and cannot be encoded')\n }\n if (num === Infinity || num === -Infinity) {\n throw new Error('`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded')\n }\n return null // process with standard number encoder\n}\n\nconst encodeOptions = {\n typeEncoders: {\n Object: cidEncoder,\n Buffer: bytesEncoder,\n Uint8Array: bytesEncoder,\n Int8Array: taBytesEncoder,\n Uint16Array: taBytesEncoder,\n Int16Array: taBytesEncoder,\n Uint32Array: taBytesEncoder,\n Int32Array: taBytesEncoder,\n Float32Array: taBytesEncoder,\n Float64Array: taBytesEncoder,\n Uint8ClampedArray: taBytesEncoder,\n BigInt64Array: taBytesEncoder,\n BigUint64Array: taBytesEncoder,\n DataView: taBytesEncoder,\n ArrayBuffer: abBytesEncoder,\n undefined: undefinedEncoder,\n number: numberEncoder\n }\n}\n\n/**\n * @implements {DecodeTokenizer}\n */\nclass DagJsonTokenizer extends cborgJson.Tokenizer {\n /**\n * @param {Uint8Array} data\n * @param {object} [options]\n */\n constructor (data, options) {\n super(data, options)\n /** @type {Token[]} */\n this.tokenBuffer = []\n }\n\n /**\n * @returns {boolean}\n */\n done () {\n return this.tokenBuffer.length === 0 && super.done()\n }\n\n /**\n * @returns {Token}\n */\n _next () {\n if (this.tokenBuffer.length > 0) {\n // @ts-ignore https://github.com/Microsoft/TypeScript/issues/30406\n return this.tokenBuffer.pop()\n }\n return super.next()\n }\n\n /**\n * Implements rules outlined in https://github.com/ipld/specs/pull/356\n *\n * @returns {Token}\n */\n next () {\n const token = this._next()\n\n if (token.type === Type.map) {\n const keyToken = this._next()\n if (keyToken.type === Type.string && keyToken.value === '/') {\n const valueToken = this._next()\n if (valueToken.type === Type.string) { // *must* be a CID\n const breakToken = this._next() // swallow the end-of-map token\n if (breakToken.type !== Type.break) {\n throw new Error('Invalid encoded CID form')\n }\n this.tokenBuffer.push(valueToken) // CID.parse will pick this up after our tag token\n return new Token(Type.tag, 42, 0)\n }\n if (valueToken.type === Type.map) {\n const innerKeyToken = this._next()\n if (innerKeyToken.type === Type.string && innerKeyToken.value === 'bytes') {\n const innerValueToken = this._next()\n if (innerValueToken.type === Type.string) { // *must* be Bytes\n for (let i = 0; i < 2; i++) {\n const breakToken = this._next() // swallow two end-of-map tokens\n if (breakToken.type !== Type.break) {\n throw new Error('Invalid encoded Bytes form')\n }\n }\n const bytes = base64.decode(`m${innerValueToken.value}`)\n return new Token(Type.bytes, bytes, innerValueToken.value.length)\n }\n this.tokenBuffer.push(innerValueToken) // bail\n }\n this.tokenBuffer.push(innerKeyToken) // bail\n }\n this.tokenBuffer.push(valueToken) // bail\n }\n this.tokenBuffer.push(keyToken) // bail\n }\n return token\n }\n}\n\nconst decodeOptions = {\n allowIndefinite: false,\n allowUndefined: false,\n allowNaN: false,\n allowInfinity: false,\n allowBigInt: true, // this will lead to BigInt for ints outside of\n // safe-integer range, which may surprise users\n strict: true,\n useMaps: false,\n rejectDuplicateMapKeys: true,\n /** @type {import('cborg').TagDecoder[]} */\n tags: []\n}\n\n// we're going to get TAG(42)STRING(\"bafy...\") from the tokenizer so we only need\n// to deal with the STRING(\"bafy...\") at this point\ndecodeOptions.tags[42] = CID.parse\n\nexport const name = 'dag-json'\nexport const code = 0x0129\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView}\n */\nexport const encode = (node) => cborgJson.encode(node, encodeOptions)\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} data\n * @returns {T}\n */\nexport const decode = (data) => {\n const buf = toByteView(data)\n // the tokenizer is stateful so we need a single instance of it\n const options = Object.assign(decodeOptions, { tokenizer: new DagJsonTokenizer(buf, decodeOptions) })\n return cborgJson.decode(buf, options)\n}\n\n/**\n * @template T\n * @param {T} node\n * @returns {ToString}\n */\nexport const format = (node) => utf8Decoder.decode(encode(node))\nexport { format as stringify }\nconst utf8Decoder = new TextDecoder()\n\n/**\n * @template T\n * @param {ToString} data\n * @returns {T}\n */\nexport const parse = (data) => decode(utf8Encoder.encode(data))\nconst utf8Encoder = new TextEncoder()\n","import { CID } from 'multiformats/cid';\nimport { NoPropError } from '../errors.js';\nexport function resolveObjectPath(object, block, cid, name, path, toResolve, depth) {\n let subObject = object;\n let subPath = path;\n while (toResolve.length > 0) {\n const prop = toResolve[0];\n if (prop in subObject) {\n // remove the bit of the path we have resolved\n toResolve.shift();\n subPath = `${subPath}/${prop}`;\n const subObjectCid = CID.asCID(subObject[prop]);\n if (subObjectCid != null) {\n return {\n entry: {\n type: 'object',\n name,\n path,\n cid,\n node: block,\n depth,\n size: BigInt(block.length),\n content: async function* () {\n yield object;\n }\n },\n next: {\n cid: subObjectCid,\n name: prop,\n path: subPath,\n toResolve\n }\n };\n }\n subObject = subObject[prop];\n }\n else {\n // cannot resolve further\n throw new NoPropError(`No property named ${prop} found in node ${cid}`);\n }\n }\n return {\n entry: {\n type: 'object',\n name,\n path,\n cid,\n node: block,\n depth,\n size: BigInt(block.length),\n content: async function* () {\n yield object;\n }\n }\n };\n}\n//# sourceMappingURL=resolve-object-path.js.map","import * as dagCbor from '@ipld/dag-cbor';\nimport { resolveObjectPath } from '../utils/resolve-object-path.js';\nconst resolve = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n const block = await blockstore.get(cid, options);\n const object = dagCbor.decode(block);\n return resolveObjectPath(object, block, cid, name, path, toResolve, depth);\n};\nexport default resolve;\n//# sourceMappingURL=dag-cbor.js.map","import * as dagJson from '@ipld/dag-json';\nimport { resolveObjectPath } from '../utils/resolve-object-path.js';\nconst resolve = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n const block = await blockstore.get(cid, options);\n const object = dagJson.decode(block);\n return resolveObjectPath(object, block, cid, name, path, toResolve, depth);\n};\nexport default resolve;\n//# sourceMappingURL=dag-json.js.map","function extractDataFromBlock(block, blockStart, requestedStart, requestedEnd) {\n const blockLength = BigInt(block.length);\n const blockEnd = BigInt(blockStart + blockLength);\n if (requestedStart >= blockEnd || requestedEnd < blockStart) {\n // If we are looking for a byte range that is starts after the start of the block,\n // return an empty block. This can happen when internal nodes contain data\n return new Uint8Array(0);\n }\n if (requestedEnd >= blockStart && requestedEnd < blockEnd) {\n // If the end byte is in the current block, truncate the block to the end byte\n block = block.subarray(0, Number(requestedEnd - blockStart));\n }\n if (requestedStart >= blockStart && requestedStart < blockEnd) {\n // If the start byte is in the current block, skip to the start byte\n block = block.subarray(Number(requestedStart - blockStart));\n }\n return block;\n}\nexport default extractDataFromBlock;\n//# sourceMappingURL=extract-data-from-block.js.map","import { InvalidParametersError } from '../errors.js';\nconst validateOffsetAndLength = (size, offset = 0, length = size) => {\n const fileSize = BigInt(size);\n const start = BigInt(offset ?? 0);\n let end = BigInt(length);\n if (end !== fileSize) {\n end = start + end;\n }\n if (end > fileSize) {\n end = fileSize;\n }\n if (start < 0n) {\n throw new InvalidParametersError('Offset must be greater than or equal to 0');\n }\n if (start > fileSize) {\n throw new InvalidParametersError('Offset must be less than the file size');\n }\n if (end < 0n) {\n throw new InvalidParametersError('Length must be greater than or equal to 0');\n }\n if (end > fileSize) {\n throw new InvalidParametersError('Length must be less than the file size');\n }\n return {\n start,\n end\n };\n};\nexport default validateOffsetAndLength;\n//# sourceMappingURL=validate-offset-and-length.js.map","import * as mh from 'multiformats/hashes/digest';\nimport { CustomProgressEvent } from 'progress-events';\nimport { NotFoundError } from '../errors.js';\nimport extractDataFromBlock from '../utils/extract-data-from-block.js';\nimport validateOffsetAndLength from '../utils/validate-offset-and-length.js';\nconst rawContent = (node) => {\n async function* contentGenerator(options = {}) {\n const { start, end } = validateOffsetAndLength(node.length, options.offset, options.length);\n const buf = extractDataFromBlock(node, 0n, start, end);\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:progress:identity', {\n bytesRead: BigInt(buf.byteLength),\n totalBytes: end - start,\n fileSize: BigInt(node.byteLength)\n }));\n yield buf;\n }\n return contentGenerator;\n};\nconst resolve = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n if (toResolve.length > 0) {\n throw new NotFoundError(`No link named ${path} found in raw node ${cid}`);\n }\n const buf = mh.decode(cid.multihash.bytes);\n return {\n entry: {\n type: 'identity',\n name,\n path,\n cid,\n content: rawContent(buf.digest),\n depth,\n size: BigInt(buf.digest.length),\n node: buf.digest\n }\n };\n};\nexport default resolve;\n//# sourceMappingURL=identity.js.map","import * as json from 'multiformats/codecs/json';\nimport { resolveObjectPath } from '../utils/resolve-object-path.js';\nconst resolve = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n const block = await blockstore.get(cid, options);\n const object = json.decode(block);\n return resolveObjectPath(object, block, cid, name, path, toResolve, depth);\n};\nexport default resolve;\n//# sourceMappingURL=json.js.map","import { CustomProgressEvent } from 'progress-events';\nimport { NotFoundError } from '../errors.js';\nimport extractDataFromBlock from '../utils/extract-data-from-block.js';\nimport validateOffsetAndLength from '../utils/validate-offset-and-length.js';\nconst rawContent = (node) => {\n async function* contentGenerator(options = {}) {\n const { start, end } = validateOffsetAndLength(node.length, options.offset, options.length);\n const buf = extractDataFromBlock(node, 0n, start, end);\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:progress:raw', {\n bytesRead: BigInt(buf.byteLength),\n totalBytes: end - start,\n fileSize: BigInt(node.byteLength)\n }));\n yield buf;\n }\n return contentGenerator;\n};\nconst resolve = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n if (toResolve.length > 0) {\n throw new NotFoundError(`No link named ${path} found in raw node ${cid}`);\n }\n const block = await blockstore.get(cid, options);\n return {\n entry: {\n type: 'raw',\n name,\n path,\n cid,\n content: rawContent(block),\n depth,\n size: BigInt(block.length),\n node: block\n }\n };\n};\nexport default resolve;\n//# sourceMappingURL=raw.js.map","import { decode } from '@ipld/dag-pb';\nimport { murmur3128 } from '@multiformats/murmur3';\nimport { Bucket, createHAMT } from 'hamt-sharding';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { NotUnixFSError } from '../errors.js';\n// FIXME: this is copy/pasted from ipfs-unixfs-importer/src/options.js\nconst hashFn = async function (buf) {\n return (await murmur3128.encode(buf))\n // Murmur3 outputs 128 bit but, accidentally, IPFS Go's\n // implementation only uses the first 64, so we must do the same\n // for parity..\n .slice(0, 8)\n // Invert buffer because that's how Go impl does it\n .reverse();\n};\nconst addLinksToHamtBucket = async (links, bucket, rootBucket) => {\n const padLength = (bucket.tableSize() - 1).toString(16).length;\n await Promise.all(links.map(async (link) => {\n if (link.Name == null) {\n // TODO(@rvagg): what do? this is technically possible\n throw new Error('Unexpected Link without a Name');\n }\n if (link.Name.length === padLength) {\n const pos = parseInt(link.Name, 16);\n bucket._putObjectAt(pos, new Bucket({\n hash: rootBucket._options.hash,\n bits: rootBucket._options.bits\n }, bucket, pos));\n return;\n }\n await rootBucket.put(link.Name.substring(2), true);\n }));\n};\nconst toPrefix = (position, padLength) => {\n return position\n .toString(16)\n .toUpperCase()\n .padStart(padLength, '0')\n .substring(0, padLength);\n};\nconst toBucketPath = (position) => {\n let bucket = position.bucket;\n const path = [];\n while (bucket._parent != null) {\n path.push(bucket);\n bucket = bucket._parent;\n }\n path.push(bucket);\n return path.reverse();\n};\nconst findShardCid = async (node, name, blockstore, context, options) => {\n if (context == null) {\n if (node.Data == null) {\n throw new NotUnixFSError('no data in PBNode');\n }\n let dir;\n try {\n dir = UnixFS.unmarshal(node.Data);\n }\n catch (err) {\n throw new NotUnixFSError(err.message);\n }\n if (dir.type !== 'hamt-sharded-directory') {\n throw new NotUnixFSError('not a HAMT');\n }\n if (dir.fanout == null) {\n throw new NotUnixFSError('missing fanout');\n }\n const rootBucket = createHAMT({\n hashFn,\n bits: Math.log2(Number(dir.fanout))\n });\n context = {\n rootBucket,\n hamtDepth: 1,\n lastBucket: rootBucket\n };\n }\n const padLength = (context.lastBucket.tableSize() - 1).toString(16).length;\n await addLinksToHamtBucket(node.Links, context.lastBucket, context.rootBucket);\n const position = await context.rootBucket._findNewBucketAndPos(name);\n let prefix = toPrefix(position.pos, padLength);\n const bucketPath = toBucketPath(position);\n if (bucketPath.length > context.hamtDepth) {\n context.lastBucket = bucketPath[context.hamtDepth];\n prefix = toPrefix(context.lastBucket._posAtParent, padLength);\n }\n const link = node.Links.find(link => {\n if (link.Name == null) {\n return false;\n }\n const entryPrefix = link.Name.substring(0, padLength);\n const entryName = link.Name.substring(padLength);\n if (entryPrefix !== prefix) {\n // not the entry or subshard we're looking for\n return false;\n }\n if (entryName !== '' && entryName !== name) {\n // not the entry we're looking for\n return false;\n }\n return true;\n });\n if (link == null) {\n return;\n }\n if (link.Name != null && link.Name.substring(padLength) === name) {\n return link.Hash;\n }\n context.hamtDepth++;\n const block = await blockstore.get(link.Hash, options);\n node = decode(block);\n return findShardCid(node, name, blockstore, context, options);\n};\nexport default findShardCid;\n//# sourceMappingURL=find-cid-in-shard.js.map","/**\n * @packageDocumentation\n *\n * Lets you look at the contents of an async iterator and decide what to do\n *\n * @example\n *\n * ```javascript\n * import peekable from 'it-peekable'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const it = peekable(value)\n *\n * const first = it.peek()\n *\n * console.info(first) // 0\n *\n * it.push(first)\n *\n * console.info([...it])\n * // [ 0, 1, 2, 3, 4 ]\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import peekable from 'it-peekable'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const it = peekable(values())\n *\n * const first = await it.peek()\n *\n * console.info(first) // 0\n *\n * it.push(first)\n *\n * console.info(await all(it))\n * // [ 0, 1, 2, 3, 4 ]\n * ```\n */\nfunction peekable(iterable) {\n // @ts-expect-error can't use Symbol.asyncIterator to index iterable since it might be Iterable\n const [iterator, symbol] = iterable[Symbol.asyncIterator] != null\n // @ts-expect-error can't use Symbol.asyncIterator to index iterable since it might be Iterable\n ? [iterable[Symbol.asyncIterator](), Symbol.asyncIterator]\n // @ts-expect-error can't use Symbol.iterator to index iterable since it might be AsyncIterable\n : [iterable[Symbol.iterator](), Symbol.iterator];\n const queue = [];\n // @ts-expect-error can't use symbol to index peekable\n return {\n peek: () => {\n return iterator.next();\n },\n push: (value) => {\n queue.push(value);\n },\n next: () => {\n if (queue.length > 0) {\n return {\n done: false,\n value: queue.shift()\n };\n }\n return iterator.next();\n },\n [symbol]() {\n return this;\n }\n };\n}\nexport default peekable;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Filter values out of an (async)iterable\n *\n * @example\n *\n * ```javascript\n * import all from 'it-all'\n * import filter from 'it-filter'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const fn = (val, index) => val > 2 // Return boolean to keep item\n *\n * const arr = all(filter(values, fn))\n *\n * console.info(arr) // 3, 4\n * ```\n *\n * Async sources and filter functions must be awaited:\n *\n * ```javascript\n * import all from 'it-all'\n * import filter from 'it-filter'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const fn = async val => (val, index) > 2 // Return boolean or promise of boolean to keep item\n *\n * const arr = await all(filter(values, fn))\n *\n * console.info(arr) // 3, 4\n * ```\n */\nimport peek from 'it-peekable';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction filter(source, fn) {\n let index = 0;\n if (isAsyncIterable(source)) {\n return (async function* () {\n for await (const entry of source) {\n if (await fn(entry, index++)) {\n yield entry;\n }\n }\n })();\n }\n // if mapping function returns a promise we have to return an async generator\n const peekable = peek(source);\n const { value, done } = peekable.next();\n if (done === true) {\n return (function* () { }());\n }\n const res = fn(value, index++);\n // @ts-expect-error .then is not present on O\n if (typeof res.then === 'function') {\n return (async function* () {\n if (await res) {\n yield value;\n }\n for await (const entry of peekable) {\n if (await fn(entry, index++)) {\n yield entry;\n }\n }\n })();\n }\n const func = fn;\n return (function* () {\n if (res === true) {\n yield value;\n }\n for (const entry of peekable) {\n if (func(entry, index++)) {\n yield entry;\n }\n }\n })();\n}\nexport default filter;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Convert one value from an (async)iterator into another.\n *\n * @example\n *\n * ```javascript\n * import map from 'it-map'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const result = map(values, (val, index) => val++)\n *\n * console.info(result) // [1, 2, 3, 4, 5]\n * ```\n *\n * Async sources and transforms must be awaited:\n *\n * ```javascript\n * import map from 'it-map'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const result = await map(values(), async (val, index) => val++)\n *\n * console.info(result) // [1, 2, 3, 4, 5]\n * ```\n */\nimport peek from 'it-peekable';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction map(source, func) {\n let index = 0;\n if (isAsyncIterable(source)) {\n return (async function* () {\n for await (const val of source) {\n yield func(val, index++);\n }\n })();\n }\n // if mapping function returns a promise we have to return an async generator\n const peekable = peek(source);\n const { value, done } = peekable.next();\n if (done === true) {\n return (function* () { }());\n }\n const res = func(value, index++);\n // @ts-expect-error .then is not present on O\n if (typeof res.then === 'function') {\n return (async function* () {\n yield await res;\n for await (const val of peekable) {\n yield func(val, index++);\n }\n })();\n }\n const fn = func;\n return (function* () {\n yield res;\n for (const val of peekable) {\n yield fn(val, index++);\n }\n })();\n}\nexport default map;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Takes an (async) iterable that emits promise-returning functions, invokes them in parallel up to the concurrency limit and emits the results as they become available, optionally in the same order as the input\n *\n * @example\n *\n * ```javascript\n * import parallel from 'it-parallel'\n * import all from 'it-all'\n * import delay from 'delay'\n *\n * // This can also be an iterator, async iterator, generator, etc\n * const input = [\n * async () => {\n * console.info('start 1')\n * await delay(500)\n *\n * console.info('end 1')\n * return 1\n * },\n * async () => {\n * console.info('start 2')\n * await delay(200)\n *\n * console.info('end 2')\n * return 2\n * },\n * async () => {\n * console.info('start 3')\n * await delay(100)\n *\n * console.info('end 3')\n * return 3\n * }\n * ]\n *\n * const result = await all(parallel(input, {\n * concurrency: 2\n * }))\n *\n * // output:\n * // start 1\n * // start 2\n * // end 2\n * // start 3\n * // end 3\n * // end 1\n *\n * console.info(result) // [2, 3, 1]\n * ```\n *\n * If order is important, pass `ordered: true` as an option:\n *\n * ```javascript\n * const result = await all(parallel(input, {\n * concurrency: 2,\n * ordered: true\n * }))\n *\n * // output:\n * // start 1\n * // start 2\n * // end 2\n * // start 3\n * // end 3\n * // end 1\n *\n * console.info(result) // [1, 2, 3]\n * ```\n */\nimport defer from 'p-defer';\nconst CustomEvent = globalThis.CustomEvent ?? Event;\n/**\n * Takes an (async) iterator that emits promise-returning functions,\n * invokes them in parallel and emits the results as they become available but\n * in the same order as the input\n */\nexport default async function* parallel(source, options = {}) {\n let concurrency = options.concurrency ?? Infinity;\n if (concurrency < 1) {\n concurrency = Infinity;\n }\n const ordered = options.ordered == null ? false : options.ordered;\n const emitter = new EventTarget();\n const ops = [];\n let slotAvailable = defer();\n let resultAvailable = defer();\n let sourceFinished = false;\n let sourceErr;\n let opErred = false;\n emitter.addEventListener('task-complete', () => {\n resultAvailable.resolve();\n });\n void Promise.resolve().then(async () => {\n try {\n for await (const task of source) {\n if (ops.length === concurrency) {\n slotAvailable = defer();\n await slotAvailable.promise;\n }\n if (opErred) {\n break;\n }\n const op = {\n done: false\n };\n ops.push(op);\n task()\n .then(result => {\n op.done = true;\n op.ok = true;\n op.value = result;\n emitter.dispatchEvent(new CustomEvent('task-complete'));\n }, err => {\n op.done = true;\n op.err = err;\n emitter.dispatchEvent(new CustomEvent('task-complete'));\n });\n }\n sourceFinished = true;\n emitter.dispatchEvent(new CustomEvent('task-complete'));\n }\n catch (err) {\n sourceErr = err;\n emitter.dispatchEvent(new CustomEvent('task-complete'));\n }\n });\n function valuesAvailable() {\n if (ordered) {\n return ops[0]?.done;\n }\n return Boolean(ops.find(op => op.done));\n }\n function* yieldOrderedValues() {\n while ((ops.length > 0) && ops[0].done) {\n const op = ops[0];\n ops.shift();\n if (op.ok) {\n yield op.value;\n }\n else {\n // allow the source to exit\n opErred = true;\n slotAvailable.resolve();\n throw op.err;\n }\n slotAvailable.resolve();\n }\n }\n function* yieldUnOrderedValues() {\n // more values can become available while we wait for `yield`\n // to return control to this function\n while (valuesAvailable()) {\n for (let i = 0; i < ops.length; i++) {\n if (ops[i].done) {\n const op = ops[i];\n ops.splice(i, 1);\n i--;\n if (op.ok) {\n yield op.value;\n }\n else {\n opErred = true;\n slotAvailable.resolve();\n throw op.err;\n }\n slotAvailable.resolve();\n }\n }\n }\n }\n while (true) {\n if (!valuesAvailable()) {\n resultAvailable = defer();\n await resultAvailable.promise;\n }\n if (sourceErr != null) {\n // the source threw an error, propagate it\n throw sourceErr;\n }\n if (ordered) {\n yield* yieldOrderedValues();\n }\n else {\n yield* yieldUnOrderedValues();\n }\n if (sourceFinished && ops.length === 0) {\n // not waiting for any results and no more tasks so we are done\n break;\n }\n }\n}\n//# sourceMappingURL=index.js.map","import filter from 'it-filter';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { CustomProgressEvent } from 'progress-events';\nconst directoryContent = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n async function* yieldDirectoryContent(options = {}) {\n const offset = options.offset ?? 0;\n const length = options.length ?? node.Links.length;\n const links = node.Links.slice(offset, length);\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:walk:directory', {\n cid\n }));\n yield* pipe(links, source => map(source, link => {\n return async () => {\n const linkName = link.Name ?? '';\n const linkPath = `${path}/${linkName}`;\n const result = await resolve(link.Hash, linkName, linkPath, [], depth + 1, blockstore, options);\n return result.entry;\n };\n }), source => parallel(source, {\n ordered: true,\n concurrency: options.blockReadConcurrency\n }), source => filter(source, entry => entry != null));\n }\n return yieldDirectoryContent;\n};\nexport default directoryContent;\n//# sourceMappingURL=directory.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { pushable } from 'it-pushable';\nimport * as raw from 'multiformats/codecs/raw';\nimport PQueue from 'p-queue';\nimport { CustomProgressEvent } from 'progress-events';\nimport { NotUnixFSError, OverReadError, UnderReadError } from '../../../errors.js';\nimport extractDataFromBlock from '../../../utils/extract-data-from-block.js';\nimport validateOffsetAndLength from '../../../utils/validate-offset-and-length.js';\nasync function walkDAG(blockstore, node, queue, streamPosition, start, end, options) {\n // a `raw` node\n if (node instanceof Uint8Array) {\n const buf = extractDataFromBlock(node, streamPosition, start, end);\n queue.push(buf);\n return;\n }\n if (node.Data == null) {\n throw new NotUnixFSError('no data in PBNode');\n }\n let file;\n try {\n file = UnixFS.unmarshal(node.Data);\n }\n catch (err) {\n throw new NotUnixFSError(err.message);\n }\n // might be a unixfs `raw` node or have data on intermediate nodes\n if (file.data != null) {\n const data = file.data;\n const buf = extractDataFromBlock(data, streamPosition, start, end);\n queue.push(buf);\n streamPosition += BigInt(buf.byteLength);\n }\n const childOps = [];\n if (node.Links.length !== file.blockSizes.length) {\n throw new NotUnixFSError('Inconsistent block sizes and dag links');\n }\n for (let i = 0; i < node.Links.length; i++) {\n const childLink = node.Links[i];\n const childStart = streamPosition; // inclusive\n const childEnd = childStart + file.blockSizes[i]; // exclusive\n if ((start >= childStart && start < childEnd) || // child has offset byte\n (end >= childStart && end <= childEnd) || // child has end byte\n (start < childStart && end > childEnd)) { // child is between offset and end bytes\n childOps.push({\n link: childLink,\n blockStart: streamPosition\n });\n }\n streamPosition = childEnd;\n if (streamPosition > end) {\n break;\n }\n }\n await pipe(childOps, (source) => map(source, (op) => {\n return async () => {\n const block = await blockstore.get(op.link.Hash, options);\n return {\n ...op,\n block\n };\n };\n }), (source) => parallel(source, {\n ordered: true,\n concurrency: options.blockReadConcurrency\n }), async (source) => {\n for await (const { link, block, blockStart } of source) {\n let child;\n switch (link.Hash.code) {\n case dagPb.code:\n child = dagPb.decode(block);\n break;\n case raw.code:\n child = block;\n break;\n default:\n queue.end(new NotUnixFSError(`Unsupported codec: ${link.Hash.code}`));\n return;\n }\n // create a queue for this child - we use a queue instead of recursion\n // to avoid overflowing the stack\n const childQueue = new PQueue({\n concurrency: 1\n });\n // if any of the child jobs error, end the read queue with the error\n childQueue.on('error', error => {\n queue.end(error);\n });\n // if the job rejects the 'error' event will be emitted on the child queue\n void childQueue.add(async () => {\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:walk:file', {\n cid: link.Hash\n }));\n await walkDAG(blockstore, child, queue, blockStart, start, end, options);\n });\n // wait for this child to complete before moving on to the next\n await childQueue.onIdle();\n }\n });\n if (streamPosition >= end) {\n queue.end();\n }\n}\nconst fileContent = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n async function* yieldFileContent(options = {}) {\n const fileSize = unixfs.fileSize();\n if (fileSize === undefined) {\n throw new Error('File was a directory');\n }\n const { start, end } = validateOffsetAndLength(fileSize, options.offset, options.length);\n if (end === 0n) {\n return;\n }\n let read = 0n;\n const wanted = end - start;\n const queue = pushable();\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:walk:file', {\n cid\n }));\n void walkDAG(blockstore, node, queue, 0n, start, end, options)\n .catch(err => {\n queue.end(err);\n });\n for await (const buf of queue) {\n if (buf == null) {\n continue;\n }\n read += BigInt(buf.byteLength);\n if (read > wanted) {\n queue.end();\n throw new OverReadError('Read too many bytes - the file size reported by the UnixFS data in the root node may be incorrect');\n }\n if (read === wanted) {\n queue.end();\n }\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:progress:unixfs:file', {\n bytesRead: read,\n totalBytes: wanted,\n fileSize\n }));\n yield buf;\n }\n if (read < wanted) {\n throw new UnderReadError('Traversed entire DAG but did not read enough bytes');\n }\n }\n return yieldFileContent;\n};\nexport default fileContent;\n//# sourceMappingURL=file.js.map","import { decode } from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { CustomProgressEvent } from 'progress-events';\nimport { NotUnixFSError } from '../../../errors.js';\nconst hamtShardedDirectoryContent = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n function yieldHamtDirectoryContent(options = {}) {\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:walk:hamt-sharded-directory', {\n cid\n }));\n return listDirectory(node, path, resolve, depth, blockstore, options);\n }\n return yieldHamtDirectoryContent;\n};\nasync function* listDirectory(node, path, resolve, depth, blockstore, options) {\n const links = node.Links;\n if (node.Data == null) {\n throw new NotUnixFSError('no data in PBNode');\n }\n let dir;\n try {\n dir = UnixFS.unmarshal(node.Data);\n }\n catch (err) {\n throw new NotUnixFSError(err.message);\n }\n if (dir.fanout == null) {\n throw new NotUnixFSError('missing fanout');\n }\n const padLength = (dir.fanout - 1n).toString(16).length;\n const results = pipe(links, source => map(source, link => {\n return async () => {\n const name = link.Name != null ? link.Name.substring(padLength) : null;\n if (name != null && name !== '') {\n const result = await resolve(link.Hash, name, `${path}/${name}`, [], depth + 1, blockstore, options);\n return { entries: result.entry == null ? [] : [result.entry] };\n }\n else {\n // descend into subshard\n const block = await blockstore.get(link.Hash, options);\n node = decode(block);\n options.onProgress?.(new CustomProgressEvent('unixfs:exporter:walk:hamt-sharded-directory', {\n cid: link.Hash\n }));\n return { entries: listDirectory(node, path, resolve, depth, blockstore, options) };\n }\n };\n }), source => parallel(source, {\n ordered: true,\n concurrency: options.blockReadConcurrency\n }));\n for await (const { entries } of results) {\n yield* entries;\n }\n}\nexport default hamtShardedDirectoryContent;\n//# sourceMappingURL=hamt-sharded-directory.js.map","import { decode } from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { NotFoundError, NotUnixFSError } from '../../errors.js';\nimport findShardCid from '../../utils/find-cid-in-shard.js';\nimport contentDirectory from './content/directory.js';\nimport contentFile from './content/file.js';\nimport contentHamtShardedDirectory from './content/hamt-sharded-directory.js';\nconst findLinkCid = (node, name) => {\n const link = node.Links.find(link => link.Name === name);\n return link?.Hash;\n};\nconst contentExporters = {\n raw: contentFile,\n file: contentFile,\n directory: contentDirectory,\n 'hamt-sharded-directory': contentHamtShardedDirectory,\n metadata: (cid, node, unixfs, path, resolve, depth, blockstore) => {\n return () => [];\n },\n symlink: (cid, node, unixfs, path, resolve, depth, blockstore) => {\n return () => [];\n }\n};\n// @ts-expect-error types are wrong\nconst unixFsResolver = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n const block = await blockstore.get(cid, options);\n const node = decode(block);\n let unixfs;\n let next;\n if (name == null) {\n name = cid.toString();\n }\n if (node.Data == null) {\n throw new NotUnixFSError('no data in PBNode');\n }\n try {\n unixfs = UnixFS.unmarshal(node.Data);\n }\n catch (err) {\n // non-UnixFS dag-pb node? It could happen.\n throw new NotUnixFSError(err.message);\n }\n if (path == null) {\n path = name;\n }\n if (toResolve.length > 0) {\n let linkCid;\n if (unixfs?.type === 'hamt-sharded-directory') {\n // special case - unixfs v1 hamt shards\n linkCid = await findShardCid(node, toResolve[0], blockstore);\n }\n else {\n linkCid = findLinkCid(node, toResolve[0]);\n }\n if (linkCid == null) {\n throw new NotFoundError('file does not exist');\n }\n // remove the path component we have resolved\n const nextName = toResolve.shift();\n const nextPath = `${path}/${nextName}`;\n next = {\n cid: linkCid,\n toResolve,\n name: nextName ?? '',\n path: nextPath\n };\n }\n const content = contentExporters[unixfs.type](cid, node, unixfs, path, resolve, depth, blockstore);\n if (content == null) {\n throw new NotFoundError('could not find content exporter');\n }\n if (unixfs.isDirectory()) {\n return {\n entry: {\n type: 'directory',\n name,\n path,\n cid,\n content,\n unixfs,\n depth,\n node,\n size: unixfs.fileSize()\n },\n next\n };\n }\n return {\n entry: {\n type: 'file',\n name,\n path,\n cid,\n content,\n unixfs,\n depth,\n node,\n size: unixfs.fileSize()\n },\n next\n };\n};\nexport default unixFsResolver;\n//# sourceMappingURL=index.js.map","import * as dagCbor from '@ipld/dag-cbor';\nimport * as dagJson from '@ipld/dag-json';\nimport * as dagPb from '@ipld/dag-pb';\nimport * as json from 'multiformats/codecs/json';\nimport * as raw from 'multiformats/codecs/raw';\nimport { identity } from 'multiformats/hashes/identity';\nimport { NoResolverError } from '../errors.js';\nimport dagCborResolver from './dag-cbor.js';\nimport dagJsonResolver from './dag-json.js';\nimport identifyResolver from './identity.js';\nimport jsonResolver from './json.js';\nimport rawResolver from './raw.js';\nimport dagPbResolver from './unixfs-v1/index.js';\nconst resolvers = {\n [dagPb.code]: dagPbResolver,\n [raw.code]: rawResolver,\n [dagCbor.code]: dagCborResolver,\n [dagJson.code]: dagJsonResolver,\n [identity.code]: identifyResolver,\n [json.code]: jsonResolver\n};\nconst resolve = async (cid, name, path, toResolve, depth, blockstore, options) => {\n const resolver = resolvers[cid.code];\n if (resolver == null) {\n throw new NoResolverError(`No resolver for code ${cid.code}`);\n }\n return resolver(cid, name, path, toResolve, resolve, depth, blockstore, options);\n};\nexport default resolve;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * The UnixFS Exporter provides a means to read DAGs from a blockstore given a CID.\n *\n * @example\n *\n * ```js\n * // import a file and export it again\n * import { importer } from 'ipfs-unixfs-importer'\n * import { exporter } from 'ipfs-unixfs-exporter'\n * import { MemoryBlockstore } from 'blockstore-core/memory'\n *\n * // Should contain the blocks we are trying to export\n * const blockstore = new MemoryBlockstore()\n * const files = []\n *\n * for await (const file of importer([{\n * path: '/foo/bar.txt',\n * content: new Uint8Array([0, 1, 2, 3])\n * }], blockstore)) {\n * files.push(file)\n * }\n *\n * console.info(files[0].cid) // Qmbaz\n *\n * const entry = await exporter(files[0].cid, blockstore)\n *\n * console.info(entry.cid) // Qmqux\n * console.info(entry.path) // Qmbaz/foo/bar.txt\n * console.info(entry.name) // bar.txt\n * console.info(entry.unixfs.fileSize()) // 4\n *\n * // stream content from unixfs node\n * const size = entry.unixfs.fileSize()\n * const bytes = new Uint8Array(size)\n * let offset = 0\n *\n * for await (const buf of entry.content()) {\n * bytes.set(buf, offset)\n * offset += chunk.length\n * }\n *\n * console.info(bytes) // 0, 1, 2, 3\n * ```\n */\nimport last from 'it-last';\nimport { CID } from 'multiformats/cid';\nimport { BadPathError, NotFoundError } from './errors.js';\nimport resolve from './resolvers/index.js';\nexport * from './errors.js';\nconst toPathComponents = (path = '') => {\n // split on / unless escaped with \\\n return (path\n .trim()\n .match(/([^\\\\^/]|\\\\\\/)+/g) ?? [])\n .filter(Boolean);\n};\nconst cidAndRest = (path) => {\n if (path instanceof Uint8Array) {\n return {\n cid: CID.decode(path),\n toResolve: []\n };\n }\n const cid = CID.asCID(path);\n if (cid != null) {\n return {\n cid,\n toResolve: []\n };\n }\n if (typeof path === 'string') {\n if (path.indexOf('/ipfs/') === 0) {\n path = path.substring(6);\n }\n const output = toPathComponents(path);\n return {\n cid: CID.parse(output[0]),\n toResolve: output.slice(1)\n };\n }\n throw new BadPathError(`Unknown path type ${path}`);\n};\n/**\n * Returns an async iterator that yields entries for all segments in a path\n *\n * @example\n *\n * ```javascript\n * import { walkPath } from 'ipfs-unixfs-exporter'\n *\n * const entries = []\n *\n * for await (const entry of walkPath('Qmfoo/foo/bar/baz.txt', blockstore)) {\n * entries.push(entry)\n * }\n *\n * // entries contains 4x `entry` objects\n * ```\n */\nexport async function* walkPath(path, blockstore, options = {}) {\n let { cid, toResolve } = cidAndRest(path);\n let name = cid.toString();\n let entryPath = name;\n const startingDepth = toResolve.length;\n while (true) {\n const result = await resolve(cid, name, entryPath, toResolve, startingDepth, blockstore, options);\n if (result.entry == null && result.next == null) {\n throw new NotFoundError(`Could not resolve ${path}`);\n }\n if (result.entry != null) {\n yield result.entry;\n }\n if (result.next == null) {\n return;\n }\n // resolve further parts\n toResolve = result.next.toResolve;\n cid = result.next.cid;\n name = result.next.name;\n entryPath = result.next.path;\n }\n}\n/**\n * Uses the given blockstore instance to fetch an IPFS node by a CID or path.\n *\n * Returns a {@link Promise} which resolves to a {@link UnixFSEntry}.\n *\n * @example\n *\n * ```typescript\n * import { exporter } from 'ipfs-unixfs-exporter'\n * import { CID } from 'multiformats/cid'\n *\n * const cid = CID.parse('QmFoo')\n *\n * const entry = await exporter(cid, blockstore, {\n * signal: AbortSignal.timeout(50000)\n * })\n *\n * if (entry.type === 'file') {\n * for await (const chunk of entry.content()) {\n * // chunk is a Uint8Array\n * }\n * }\n * ```\n */\nexport async function exporter(path, blockstore, options = {}) {\n const result = await last(walkPath(path, blockstore, options));\n if (result == null) {\n throw new NotFoundError(`Could not resolve ${path}`);\n }\n return result;\n}\n/**\n * Returns an async iterator that yields all entries beneath a given CID or IPFS\n * path, as well as the containing directory.\n *\n * @example\n *\n * ```typescript\n * import { recursive } from 'ipfs-unixfs-exporter'\n *\n * const entries = []\n *\n * for await (const child of recursive('Qmfoo/foo/bar', blockstore)) {\n * entries.push(entry)\n * }\n *\n * // entries contains all children of the `Qmfoo/foo/bar` directory and it's children\n * ```\n */\nexport async function* recursive(path, blockstore, options = {}) {\n const node = await exporter(path, blockstore, options);\n if (node == null) {\n return;\n }\n yield node;\n if (node.type === 'directory') {\n for await (const child of recurse(node, options)) {\n yield child;\n }\n }\n async function* recurse(node, options) {\n for await (const file of node.content(options)) {\n yield file;\n if (file instanceof Uint8Array) {\n continue;\n }\n if (file.type === 'directory') {\n yield* recurse(file, options);\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","'use strict';\n\nmodule.exports = value => {\n\tif (Object.prototype.toString.call(value) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || prototype === Object.prototype;\n};\n","'use strict';\nconst isOptionObject = require('is-plain-obj');\n\nconst {hasOwnProperty} = Object.prototype;\nconst {propertyIsEnumerable} = Object;\nconst defineProperty = (object, name, value) => Object.defineProperty(object, name, {\n\tvalue,\n\twritable: true,\n\tenumerable: true,\n\tconfigurable: true\n});\n\nconst globalThis = this;\nconst defaultMergeOptions = {\n\tconcatArrays: false,\n\tignoreUndefined: false\n};\n\nconst getEnumerableOwnPropertyKeys = value => {\n\tconst keys = [];\n\n\tfor (const key in value) {\n\t\tif (hasOwnProperty.call(value, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\n\t/* istanbul ignore else */\n\tif (Object.getOwnPropertySymbols) {\n\t\tconst symbols = Object.getOwnPropertySymbols(value);\n\n\t\tfor (const symbol of symbols) {\n\t\t\tif (propertyIsEnumerable.call(value, symbol)) {\n\t\t\t\tkeys.push(symbol);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn keys;\n};\n\nfunction clone(value) {\n\tif (Array.isArray(value)) {\n\t\treturn cloneArray(value);\n\t}\n\n\tif (isOptionObject(value)) {\n\t\treturn cloneOptionObject(value);\n\t}\n\n\treturn value;\n}\n\nfunction cloneArray(array) {\n\tconst result = array.slice(0, 0);\n\n\tgetEnumerableOwnPropertyKeys(array).forEach(key => {\n\t\tdefineProperty(result, key, clone(array[key]));\n\t});\n\n\treturn result;\n}\n\nfunction cloneOptionObject(object) {\n\tconst result = Object.getPrototypeOf(object) === null ? Object.create(null) : {};\n\n\tgetEnumerableOwnPropertyKeys(object).forEach(key => {\n\t\tdefineProperty(result, key, clone(object[key]));\n\t});\n\n\treturn result;\n}\n\n/**\n * @param {*} merged already cloned\n * @param {*} source something to merge\n * @param {string[]} keys keys to merge\n * @param {Object} config Config Object\n * @returns {*} cloned Object\n */\nconst mergeKeys = (merged, source, keys, config) => {\n\tkeys.forEach(key => {\n\t\tif (typeof source[key] === 'undefined' && config.ignoreUndefined) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do not recurse into prototype chain of merged\n\t\tif (key in merged && merged[key] !== Object.getPrototypeOf(merged)) {\n\t\t\tdefineProperty(merged, key, merge(merged[key], source[key], config));\n\t\t} else {\n\t\t\tdefineProperty(merged, key, clone(source[key]));\n\t\t}\n\t});\n\n\treturn merged;\n};\n\n/**\n * @param {*} merged already cloned\n * @param {*} source something to merge\n * @param {Object} config Config Object\n * @returns {*} cloned Object\n *\n * see [Array.prototype.concat ( ...arguments )](http://www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.concat)\n */\nconst concatArrays = (merged, source, config) => {\n\tlet result = merged.slice(0, 0);\n\tlet resultIndex = 0;\n\n\t[merged, source].forEach(array => {\n\t\tconst indices = [];\n\n\t\t// `result.concat(array)` with cloning\n\t\tfor (let k = 0; k < array.length; k++) {\n\t\t\tif (!hasOwnProperty.call(array, k)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tindices.push(String(k));\n\n\t\t\tif (array === merged) {\n\t\t\t\t// Already cloned\n\t\t\t\tdefineProperty(result, resultIndex++, array[k]);\n\t\t\t} else {\n\t\t\t\tdefineProperty(result, resultIndex++, clone(array[k]));\n\t\t\t}\n\t\t}\n\n\t\t// Merge non-index keys\n\t\tresult = mergeKeys(result, array, getEnumerableOwnPropertyKeys(array).filter(key => !indices.includes(key)), config);\n\t});\n\n\treturn result;\n};\n\n/**\n * @param {*} merged already cloned\n * @param {*} source something to merge\n * @param {Object} config Config Object\n * @returns {*} cloned Object\n */\nfunction merge(merged, source, config) {\n\tif (config.concatArrays && Array.isArray(merged) && Array.isArray(source)) {\n\t\treturn concatArrays(merged, source, config);\n\t}\n\n\tif (!isOptionObject(source) || !isOptionObject(merged)) {\n\t\treturn clone(source);\n\t}\n\n\treturn mergeKeys(merged, source, getEnumerableOwnPropertyKeys(source), config);\n}\n\nmodule.exports = function (...options) {\n\tconst config = merge(clone(defaultMergeOptions), (this !== globalThis && this) || {}, defaultMergeOptions);\n\tlet merged = {_: {}};\n\n\tfor (const option of options) {\n\t\tif (option === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!isOptionObject(option)) {\n\t\t\tthrow new TypeError('`' + option + '` is not an Option Object');\n\t\t}\n\n\t\tmerged = merge(merged, {_: option}, config);\n\t}\n\n\treturn merged._;\n};\n","export class UnixFSError extends Error {\n name;\n code;\n constructor(message, name, code) {\n super(message);\n this.name = name;\n this.code = code;\n }\n}\nexport class NotUnixFSError extends UnixFSError {\n constructor(message = 'not a Unixfs node') {\n super(message, 'NotUnixFSError', 'ERR_NOT_UNIXFS');\n }\n}\nexport class InvalidPBNodeError extends UnixFSError {\n constructor(message = 'invalid PBNode') {\n super(message, 'InvalidPBNodeError', 'ERR_INVALID_PBNODE');\n }\n}\nexport class UnknownError extends UnixFSError {\n constructor(message = 'unknown error') {\n super(message, 'InvalidPBNodeError', 'ERR_UNKNOWN_ERROR');\n }\n}\nexport class AlreadyExistsError extends UnixFSError {\n constructor(message = 'path already exists') {\n super(message, 'AlreadyExistsError', 'ERR_ALREADY_EXISTS');\n }\n}\nexport class DoesNotExistError extends UnixFSError {\n constructor(message = 'path does not exist') {\n super(message, 'DoesNotExistError', 'ERR_DOES_NOT_EXIST');\n }\n}\nexport class NoContentError extends UnixFSError {\n constructor(message = 'no content') {\n super(message, 'NoContentError', 'ERR_NO_CONTENT');\n }\n}\nexport class NotAFileError extends UnixFSError {\n constructor(message = 'not a file') {\n super(message, 'NotAFileError', 'ERR_NOT_A_FILE');\n }\n}\nexport class NotADirectoryError extends UnixFSError {\n constructor(message = 'not a directory') {\n super(message, 'NotADirectoryError', 'ERR_NOT_A_DIRECTORY');\n }\n}\nexport class InvalidParametersError extends UnixFSError {\n constructor(message = 'invalid parameters') {\n super(message, 'InvalidParametersError', 'ERR_INVALID_PARAMETERS');\n }\n}\n//# sourceMappingURL=errors.js.map","// Helpers.\nconst s = 1000;\nconst m = s * 60;\nconst h = m * 60;\nconst d = h * 24;\nconst w = d * 7;\nconst y = d * 365.25;\nfunction ms(value, options) {\n try {\n if (typeof value === 'string' && value.length > 0) {\n return parse(value);\n }\n else if (typeof value === 'number' && isFinite(value)) {\n return options?.long ? fmtLong(value) : fmtShort(value);\n }\n throw new Error('Value is not a string or number.');\n }\n catch (error) {\n const message = isError(error)\n ? `${error.message}. value=${JSON.stringify(value)}`\n : 'An unknown error has occured.';\n throw new Error(message);\n }\n}\n/**\n * Parse the given `str` and return milliseconds.\n */\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n throw new Error('Value exceeds the maximum length of 100 characters.');\n }\n const match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);\n if (!match) {\n return NaN;\n }\n const n = parseFloat(match[1]);\n const type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n // This should never occur.\n throw new Error(`The unit ${type} was matched, but no matching case exists.`);\n }\n}\nexport default ms;\n/**\n * Short format for `ms`.\n */\nfunction fmtShort(ms) {\n const msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return `${Math.round(ms / d)}d`;\n }\n if (msAbs >= h) {\n return `${Math.round(ms / h)}h`;\n }\n if (msAbs >= m) {\n return `${Math.round(ms / m)}m`;\n }\n if (msAbs >= s) {\n return `${Math.round(ms / s)}s`;\n }\n return `${ms}ms`;\n}\n/**\n * Long format for `ms`.\n */\nfunction fmtLong(ms) {\n const msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return `${ms} ms`;\n}\n/**\n * Pluralization helper.\n */\nfunction plural(ms, msAbs, n, name) {\n const isPlural = msAbs >= n * 1.5;\n return `${Math.round(ms / n)} ${name}${isPlural ? 's' : ''}`;\n}\n/**\n * A type guard for errors.\n */\nfunction isError(error) {\n return typeof error === 'object' && error !== null && 'message' in error;\n}\n","/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nimport humanize from 'ms';\nexport default function setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = humanize;\n createDebug.destroy = destroy;\n Object.keys(env).forEach(key => {\n // @ts-expect-error cannot use string to index type\n createDebug[key] = env[key];\n });\n /**\n * The currently active debug mode names, and names to skip.\n */\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n *\n * @param {string} namespace - The namespace string for the debug instance to be colored\n * @returns {number | string} An ANSI color code for the given namespace\n */\n function selectColor(namespace) {\n let hash = 0;\n for (let i = 0; i < namespace.length; i++) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n // @ts-expect-error colors is not in the types\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {string} namespace\n * @returns {Function}\n */\n function createDebug(namespace) {\n let prevTime;\n let enableOverride = null;\n let namespacesCache;\n let enabledCache;\n function debug(...args) {\n // Disabled?\n // @ts-expect-error enabled is not in the types\n if (!debug.enabled) {\n return;\n }\n const self = debug;\n // Set `diff` timestamp\n const curr = Number(new Date());\n const ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n }\n // Apply any `formatters` transformations\n let index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return '%';\n }\n index++;\n // @ts-expect-error formatters is not in the types\n const formatter = createDebug.formatters[format];\n if (typeof formatter === 'function') {\n const val = args[index];\n match = formatter.call(self, val);\n // Now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n // Apply env-specific formatting (colors, etc.)\n // @ts-expect-error formatArgs is not in the types\n createDebug.formatArgs.call(self, args);\n // @ts-expect-error log is not in the types\n const logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n debug.namespace = namespace;\n // @ts-expect-error useColors is not in the types\n debug.useColors = createDebug.useColors();\n debug.color = createDebug.selectColor(namespace);\n debug.extend = extend;\n debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n Object.defineProperty(debug, 'enabled', {\n enumerable: true,\n configurable: false,\n get: () => {\n if (enableOverride !== null) {\n return enableOverride;\n }\n // @ts-expect-error namespaces is not in the types\n if (namespacesCache !== createDebug.namespaces) {\n // @ts-expect-error namespaces is not in the types\n namespacesCache = createDebug.namespaces;\n enabledCache = createDebug.enabled(namespace);\n }\n return enabledCache;\n },\n set: v => {\n enableOverride = v;\n }\n });\n // Env-specific initialization logic for debug instances\n // @ts-expect-error init is not in the types\n if (typeof createDebug.init === 'function') {\n // @ts-expect-error init is not in the types\n createDebug.init(debug);\n }\n // @ts-expect-error some properties are added dynamically\n return debug;\n }\n function extend(namespace, delimiter) {\n const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n newDebug.log = this.log;\n return newDebug;\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {string} namespaces\n */\n function enable(namespaces) {\n // @ts-expect-error save is not in the types\n createDebug.save(namespaces);\n // @ts-expect-error namespaces is not in the types\n createDebug.namespaces = namespaces;\n createDebug.names = [];\n createDebug.skips = [];\n let i;\n const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n const len = split.length;\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n }\n else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n }\n /**\n * Disable debug output.\n *\n * @returns {string} namespaces\n */\n function disable() {\n const namespaces = [\n ...createDebug.names.map(toNamespace),\n ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n ].join(',');\n createDebug.enable('');\n return namespaces;\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {string} name\n * @returns {boolean}\n */\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n let i;\n let len;\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Convert regexp to namespace\n */\n function toNamespace(regexp) {\n return regexp.toString()\n .substring(2, regexp.toString().length - 2)\n .replace(/\\.\\*\\?$/, '*');\n }\n /**\n * Coerce `val`.\n */\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack ?? val.message;\n }\n return val;\n }\n /**\n * XXX DO NOT USE. This is a temporary stub function.\n * XXX It WILL be removed in the next major release.\n */\n function destroy() {\n console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n }\n // @ts-expect-error setupFormatters is not in the types\n createDebug.setupFormatters(createDebug.formatters);\n // @ts-expect-error load is not in the types\n createDebug.enable(createDebug.load());\n // @ts-expect-error some properties are added dynamically\n return createDebug;\n}\n//# sourceMappingURL=common.js.map","/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/restrict-plus-operands */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\n/* eslint-env browser */\n/**\n * This is the web browser implementation of `debug()`.\n */\nimport humanize from 'ms';\nimport setup from './common.js';\nconst storage = localstorage();\n/**\n * Colors.\n */\nconst colors = [\n '#0000CC',\n '#0000FF',\n '#0033CC',\n '#0033FF',\n '#0066CC',\n '#0066FF',\n '#0099CC',\n '#0099FF',\n '#00CC00',\n '#00CC33',\n '#00CC66',\n '#00CC99',\n '#00CCCC',\n '#00CCFF',\n '#3300CC',\n '#3300FF',\n '#3333CC',\n '#3333FF',\n '#3366CC',\n '#3366FF',\n '#3399CC',\n '#3399FF',\n '#33CC00',\n '#33CC33',\n '#33CC66',\n '#33CC99',\n '#33CCCC',\n '#33CCFF',\n '#6600CC',\n '#6600FF',\n '#6633CC',\n '#6633FF',\n '#66CC00',\n '#66CC33',\n '#9900CC',\n '#9900FF',\n '#9933CC',\n '#9933FF',\n '#99CC00',\n '#99CC33',\n '#CC0000',\n '#CC0033',\n '#CC0066',\n '#CC0099',\n '#CC00CC',\n '#CC00FF',\n '#CC3300',\n '#CC3333',\n '#CC3366',\n '#CC3399',\n '#CC33CC',\n '#CC33FF',\n '#CC6600',\n '#CC6633',\n '#CC9900',\n '#CC9933',\n '#CCCC00',\n '#CCCC33',\n '#FF0000',\n '#FF0033',\n '#FF0066',\n '#FF0099',\n '#FF00CC',\n '#FF00FF',\n '#FF3300',\n '#FF3333',\n '#FF3366',\n '#FF3399',\n '#FF33CC',\n '#FF33FF',\n '#FF6600',\n '#FF6633',\n '#FF9900',\n '#FF9933',\n '#FFCC00',\n '#FFCC33'\n];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n // @ts-expect-error window.process.type and window.process.__nwjs are not in the types\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n }\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && (navigator.userAgent?.toLowerCase().match(/(edge|trident)\\/(\\d+)/) != null)) {\n return false;\n }\n // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n // @ts-expect-error document.documentElement.style.WebkitAppearance is not in the types\n return (typeof document !== 'undefined' && document.documentElement?.style?.WebkitAppearance) ||\n // Is firebug? http://stackoverflow.com/a/398120/376773\n // @ts-expect-error window.console.firebug and window.console.exception are not in the types\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && (navigator.userAgent?.toLowerCase().match(/firefox\\/(\\d+)/) != null) && parseInt(RegExp.$1, 10) >= 31) ||\n // Double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent?.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n/**\n * Colorize log arguments if enabled.\n */\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') +\n this.namespace +\n (this.useColors ? ' %c' : ' ') +\n args[0] +\n (this.useColors ? '%c ' : ' ') +\n '+' + humanize(this.diff);\n if (!this.useColors) {\n return;\n }\n const c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit');\n // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n let index = 0;\n let lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, (match) => {\n if (match === '%%') {\n return;\n }\n index++;\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n */\nconst log = console.debug ?? console.log ?? (() => { });\n/**\n * Save `namespaces`.\n *\n * @param {string} namespaces\n */\nfunction save(namespaces) {\n try {\n if (namespaces) {\n storage?.setItem('debug', namespaces);\n }\n else {\n storage?.removeItem('debug');\n }\n }\n catch (error) {\n // Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @returns {string} returns the previously persisted debug modes\n */\nfunction load() {\n let r;\n try {\n r = storage?.getItem('debug');\n }\n catch (error) {\n // Swallow\n // XXX (@Qix-) should we be logging these?\n }\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n */\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n }\n catch (error) {\n // Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\nfunction setupFormatters(formatters) {\n /**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n formatters.j = function (v) {\n try {\n return JSON.stringify(v);\n }\n catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n };\n}\nexport default setup({ formatArgs, save, load, useColors, setupFormatters, colors, storage, log });\n//# sourceMappingURL=browser.js.map","/**\n * @packageDocumentation\n *\n * A logger for libp2p based on the venerable [debug](https://www.npmjs.com/package/debug) module.\n *\n * @example\n *\n * ```TypeScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('libp2p:my:component:name')\n *\n * try {\n * // an operation\n * log('something happened: %s', 'it was ok')\n * } catch (err) {\n * log.error('something bad happened: %o', err)\n * }\n *\n * log('with this peer: %p', {})\n * log('and this base58btc: %b', Uint8Array.from([0, 1, 2, 3]))\n * log('and this base32: %t', Uint8Array.from([4, 5, 6, 7]))\n * ```\n *\n * ```console\n * $ DEBUG=libp2p:* node index.js\n * something happened: it was ok\n * something bad happened: \n * with this peer: 12D3Foo\n * with this base58btc: Qmfoo\n * with this base32: bafyfoo\n * ```\n */\nimport { base32 } from 'multiformats/bases/base32';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { base64 } from 'multiformats/bases/base64';\nimport debug from 'weald';\nimport { truncatePeerId } from './utils.js';\n// Add a formatter for converting to a base58 string\ndebug.formatters.b = (v) => {\n return v == null ? 'undefined' : base58btc.baseEncode(v);\n};\n// Add a formatter for converting to a base32 string\ndebug.formatters.t = (v) => {\n return v == null ? 'undefined' : base32.baseEncode(v);\n};\n// Add a formatter for converting to a base64 string\ndebug.formatters.m = (v) => {\n return v == null ? 'undefined' : base64.baseEncode(v);\n};\n// Add a formatter for stringifying peer ids\ndebug.formatters.p = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying CIDs\ndebug.formatters.c = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Datastore keys\ndebug.formatters.k = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Multiaddrs\ndebug.formatters.a = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\nfunction createDisabledLogger(namespace) {\n const logger = () => { };\n logger.enabled = false;\n logger.color = '';\n logger.diff = 0;\n logger.log = () => { };\n logger.namespace = namespace;\n logger.destroy = () => true;\n logger.extend = () => logger;\n return logger;\n}\n/**\n * Create a component logger that will prefix any log messages with a truncated\n * peer id.\n *\n * @example\n *\n * ```TypeScript\n * import { peerLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const peerId = peerIdFromString('12D3FooBar')\n * const logger = peerLogger(peerId)\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"12…oBar:my-component hello world\"\n * ```\n */\nexport function peerLogger(peerId, options = {}) {\n return prefixLogger(truncatePeerId(peerId, options));\n}\n/**\n * Create a component logger that will prefix any log messages with the passed\n * string.\n *\n * @example\n *\n * ```TypeScript\n * import { prefixLogger } from '@libp2p/logger'\n *\n * const logger = prefixLogger('my-node')\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-node:my-component hello world\"\n * ```\n */\nexport function prefixLogger(prefix) {\n return {\n forComponent(name) {\n return logger(`${prefix}:${name}`);\n }\n };\n}\n/**\n * Create a component logger\n *\n * @example\n *\n * ```TypeScript\n * import { defaultLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const logger = defaultLogger()\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function defaultLogger() {\n return {\n forComponent(name) {\n return logger(name);\n }\n };\n}\n/**\n * Creates a logger for the passed component name.\n *\n * @example\n *\n * ```TypeScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function logger(name) {\n // trace logging is a no-op by default\n let trace = createDisabledLogger(`${name}:trace`);\n // look at all the debug names and see if trace logging has explicitly been enabled\n if (debug.enabled(`${name}:trace`) && debug.names.map((r) => r.toString()).find((n) => n.includes(':trace')) != null) {\n trace = debug(`${name}:trace`);\n }\n return Object.assign(debug(name), {\n error: debug(`${name}:error`),\n trace\n });\n}\nexport function disable() {\n debug.disable();\n}\nexport function enable(namespaces) {\n debug.enable(namespaces);\n}\nexport function enabled(namespaces) {\n return debug.enabled(namespaces);\n}\n//# sourceMappingURL=index.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","import { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nexport function wrapHash(hashFn) {\n function hashing(value) {\n if (value instanceof InfiniteHash) {\n // already a hash. return it\n return value;\n }\n else {\n return new InfiniteHash(value, hashFn);\n }\n }\n return hashing;\n}\nexport class InfiniteHash {\n _value;\n _hashFn;\n _depth;\n _availableBits;\n _currentBufferIndex;\n _buffers;\n constructor(value, hashFn) {\n if (!(value instanceof Uint8Array)) {\n throw new Error('can only hash Uint8Arrays');\n }\n this._value = value;\n this._hashFn = hashFn;\n this._depth = -1;\n this._availableBits = 0;\n this._currentBufferIndex = 0;\n this._buffers = [];\n }\n async take(bits) {\n let pendingBits = bits;\n while (this._availableBits < pendingBits) {\n await this._produceMoreBits();\n }\n let result = 0;\n while (pendingBits > 0) {\n const hash = this._buffers[this._currentBufferIndex];\n const available = Math.min(hash.availableBits(), pendingBits);\n const took = hash.take(available);\n result = (result << available) + took;\n pendingBits -= available;\n this._availableBits -= available;\n if (hash.availableBits() === 0) {\n this._currentBufferIndex++;\n }\n }\n return result;\n }\n untake(bits) {\n let pendingBits = bits;\n while (pendingBits > 0) {\n const hash = this._buffers[this._currentBufferIndex];\n const availableForUntake = Math.min(hash.totalBits() - hash.availableBits(), pendingBits);\n hash.untake(availableForUntake);\n pendingBits -= availableForUntake;\n this._availableBits += availableForUntake;\n if (this._currentBufferIndex > 0 && hash.totalBits() === hash.availableBits()) {\n this._depth--;\n this._currentBufferIndex--;\n }\n }\n }\n async _produceMoreBits() {\n this._depth++;\n const value = this._depth > 0 ? uint8ArrayConcat([this._value, Uint8Array.from([this._depth])]) : this._value;\n const hashValue = await this._hashFn(value);\n const buffer = new ConsumableBuffer(hashValue);\n this._buffers.push(buffer);\n this._availableBits += buffer.availableBits();\n }\n}\nconst START_MASKS = [\n 0b11111111,\n 0b11111110,\n 0b11111100,\n 0b11111000,\n 0b11110000,\n 0b11100000,\n 0b11000000,\n 0b10000000\n];\nconst STOP_MASKS = [\n 0b00000001,\n 0b00000011,\n 0b00000111,\n 0b00001111,\n 0b00011111,\n 0b00111111,\n 0b01111111,\n 0b11111111\n];\nexport class ConsumableBuffer {\n _value;\n _currentBytePos;\n _currentBitPos;\n constructor(value) {\n this._value = value;\n this._currentBytePos = value.length - 1;\n this._currentBitPos = 7;\n }\n availableBits() {\n return this._currentBitPos + 1 + this._currentBytePos * 8;\n }\n totalBits() {\n return this._value.length * 8;\n }\n take(bits) {\n let pendingBits = bits;\n let result = 0;\n while (pendingBits > 0 && this._haveBits()) {\n const byte = this._value[this._currentBytePos];\n const availableBits = this._currentBitPos + 1;\n const taking = Math.min(availableBits, pendingBits);\n const value = byteBitsToInt(byte, availableBits - taking, taking);\n result = (result << taking) + value;\n pendingBits -= taking;\n this._currentBitPos -= taking;\n if (this._currentBitPos < 0) {\n this._currentBitPos = 7;\n this._currentBytePos--;\n }\n }\n return result;\n }\n untake(bits) {\n this._currentBitPos += bits;\n while (this._currentBitPos > 7) {\n this._currentBitPos -= 8;\n this._currentBytePos += 1;\n }\n }\n _haveBits() {\n return this._currentBytePos >= 0;\n }\n}\nfunction byteBitsToInt(byte, start, length) {\n const mask = maskFor(start, length);\n return (byte & mask) >>> start;\n}\nfunction maskFor(start, length) {\n return START_MASKS[start] & STOP_MASKS[Math.min(length + start - 1, 7)];\n}\n//# sourceMappingURL=consumable-hash.js.map","import { murmur3128 } from '@multiformats/murmur3';\nexport const hamtHashCode = BigInt(murmur3128.code);\nexport const hamtBucketBits = 8;\nexport async function hamtHashFn(buf) {\n return (await murmur3128.encode(buf))\n // Murmur3 outputs 128 bit but, accidentally, IPFS Go's\n // implementation only uses the first 64, so we must do the same\n // for parity..\n .subarray(0, 8)\n // Invert buffer because that's how Go impl does it\n .reverse();\n}\n//# sourceMappingURL=hamt-constants.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\nexport const persist = async (buffer, blockstore, options) => {\n if (options.codec == null) {\n options.codec = dagPb;\n }\n const multihash = await sha256.digest(buffer);\n const cid = CID.create(options.cidVersion, options.codec.code, multihash);\n await blockstore.put(cid, buffer, {\n ...options,\n signal: options.signal\n });\n return cid;\n};\n//# sourceMappingURL=persist.js.map","import { encode, prepare } from '@ipld/dag-pb';\nimport { createHAMT, Bucket } from 'hamt-sharding';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { CID } from 'multiformats/cid';\nimport { hamtHashCode, hamtHashFn } from './hamt-constants.js';\nimport { persist } from './persist.js';\nclass Dir {\n options;\n root;\n dir;\n path;\n dirty;\n flat;\n parent;\n parentKey;\n unixfs;\n mode;\n mtime;\n cid;\n size;\n nodeSize;\n constructor(props, options) {\n this.options = options ?? {};\n this.root = props.root;\n this.dir = props.dir;\n this.path = props.path;\n this.dirty = props.dirty;\n this.flat = props.flat;\n this.parent = props.parent;\n this.parentKey = props.parentKey;\n this.unixfs = props.unixfs;\n this.mode = props.mode;\n this.mtime = props.mtime;\n }\n}\nexport class DirSharded extends Dir {\n _bucket;\n constructor(props, options) {\n super(props, options);\n this._bucket = createHAMT({\n hashFn: hamtHashFn,\n bits: 8\n });\n }\n async put(name, value) {\n this.cid = undefined;\n this.size = undefined;\n this.nodeSize = undefined;\n await this._bucket.put(name, value);\n }\n async get(name) {\n return this._bucket.get(name);\n }\n childCount() {\n return this._bucket.leafCount();\n }\n directChildrenCount() {\n return this._bucket.childrenCount();\n }\n onlyChild() {\n return this._bucket.onlyChild();\n }\n async *eachChildSeries() {\n for await (const { key, value } of this._bucket.eachLeafSeries()) {\n yield {\n key,\n child: value\n };\n }\n }\n estimateNodeSize() {\n if (this.nodeSize !== undefined) {\n return this.nodeSize;\n }\n this.nodeSize = calculateSize(this._bucket, this, this.options);\n return this.nodeSize;\n }\n async *flush(blockstore) {\n for await (const entry of flush(this._bucket, blockstore, this, this.options)) {\n yield {\n ...entry,\n path: this.path\n };\n }\n }\n}\nasync function* flush(bucket, blockstore, shardRoot, options) {\n const children = bucket._children;\n const links = [];\n let childrenSize = 0n;\n for (let i = 0; i < children.length; i++) {\n const child = children.get(i);\n if (child == null) {\n continue;\n }\n const labelPrefix = i.toString(16).toUpperCase().padStart(2, '0');\n if (child instanceof Bucket) {\n let shard;\n for await (const subShard of flush(child, blockstore, null, options)) {\n shard = subShard;\n }\n if (shard == null) {\n throw new Error('Could not flush sharded directory, no subshard found');\n }\n links.push({\n Name: labelPrefix,\n Tsize: Number(shard.size),\n Hash: shard.cid\n });\n childrenSize += shard.size;\n }\n else if (isDir(child.value)) {\n const dir = child.value;\n let flushedDir;\n for await (const entry of dir.flush(blockstore)) {\n flushedDir = entry;\n yield flushedDir;\n }\n if (flushedDir == null) {\n throw new Error('Did not flush dir');\n }\n const label = labelPrefix + child.key;\n links.push({\n Name: label,\n Tsize: Number(flushedDir.size),\n Hash: flushedDir.cid\n });\n childrenSize += flushedDir.size;\n }\n else {\n const value = child.value;\n if (value.cid == null) {\n continue;\n }\n const label = labelPrefix + child.key;\n const size = value.size;\n links.push({\n Name: label,\n Tsize: Number(size),\n Hash: value.cid\n });\n childrenSize += BigInt(size ?? 0);\n }\n }\n // go-ipfs uses little endian, that's why we have to\n // reverse the bit field before storing it\n const data = Uint8Array.from(children.bitField().reverse());\n const dir = new UnixFS({\n type: 'hamt-sharded-directory',\n data,\n fanout: BigInt(bucket.tableSize()),\n hashType: hamtHashCode,\n mtime: shardRoot?.mtime,\n mode: shardRoot?.mode\n });\n const node = {\n Data: dir.marshal(),\n Links: links\n };\n const buffer = encode(prepare(node));\n const cid = await persist(buffer, blockstore, options);\n const size = BigInt(buffer.byteLength) + childrenSize;\n yield {\n cid,\n unixfs: dir,\n size\n };\n}\nfunction isDir(obj) {\n return typeof obj.flush === 'function';\n}\nfunction calculateSize(bucket, shardRoot, options) {\n const children = bucket._children;\n const links = [];\n for (let i = 0; i < children.length; i++) {\n const child = children.get(i);\n if (child == null) {\n continue;\n }\n const labelPrefix = i.toString(16).toUpperCase().padStart(2, '0');\n if (child instanceof Bucket) {\n const size = calculateSize(child, null, options);\n links.push({\n Name: labelPrefix,\n Tsize: Number(size),\n Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n });\n }\n else if (typeof child.value.flush === 'function') {\n const dir = child.value;\n const size = dir.nodeSize();\n links.push({\n Name: labelPrefix + child.key,\n Tsize: Number(size),\n Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n });\n }\n else {\n const value = child.value;\n if (value.cid == null) {\n continue;\n }\n const label = labelPrefix + child.key;\n const size = value.size;\n links.push({\n Name: label,\n Tsize: Number(size),\n Hash: value.cid\n });\n }\n }\n // go-ipfs uses little endian, that's why we have to\n // reverse the bit field before storing it\n const data = Uint8Array.from(children.bitField().reverse());\n const dir = new UnixFS({\n type: 'hamt-sharded-directory',\n data,\n fanout: BigInt(bucket.tableSize()),\n hashType: hamtHashCode,\n mtime: shardRoot?.mtime,\n mode: shardRoot?.mode\n });\n const buffer = encode(prepare({\n Data: dir.marshal(),\n Links: links\n }));\n return buffer.length;\n}\n// we use these to calculate the node size to use as a check for whether a directory\n// should be sharded or not. Since CIDs have a constant length and We're only\n// interested in the data length and not the actual content identifier we can use\n// any old CID instead of having to hash the data which is expensive.\nexport const CID_V0 = CID.parse('QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn');\nexport const CID_V1 = CID.parse('zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi');\n//# sourceMappingURL=dir-sharded.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport last from 'it-last';\n// @ts-expect-error no types\nimport SparseArray from 'sparse-array';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { wrapHash } from './consumable-hash.js';\nimport { DirSharded } from './dir-sharded.js';\nimport { hamtHashCode, hamtHashFn, hamtBucketBits } from './hamt-constants.js';\nimport { persist } from './persist.js';\nconst log = logger('helia:unixfs:commands:utils:hamt-utils');\nexport const toPrefix = (position) => {\n return position\n .toString(16)\n .toUpperCase()\n .padStart(2, '0')\n .substring(0, 2);\n};\nexport const createShard = async (blockstore, contents, options) => {\n const shard = new DirSharded({\n root: true,\n dir: true,\n parent: undefined,\n parentKey: undefined,\n path: '',\n dirty: true,\n flat: false,\n mtime: options.mtime,\n mode: options.mode\n }, options);\n for (let i = 0; i < contents.length; i++) {\n await shard._bucket.put(contents[i].name, {\n size: contents[i].size,\n cid: contents[i].cid\n });\n }\n const res = await last(shard.flush(blockstore));\n if (res == null) {\n throw new Error('Flushing shard yielded no result');\n }\n return res;\n};\nexport const updateShardedDirectory = async (path, blockstore, options) => {\n // persist any metadata on the shard root\n const shardRoot = UnixFS.unmarshal(path[0].node.Data ?? new Uint8Array(0));\n // this is always the same\n const fanout = BigInt(Math.pow(2, hamtBucketBits));\n // start from the leaf and ascend to the root\n path.reverse();\n let cid;\n let node;\n for (let i = 0; i < path.length; i++) {\n const isRoot = i === path.length - 1;\n const segment = path[i];\n // go-ipfs uses little endian, that's why we have to\n // reverse the bit field before storing it\n const data = Uint8Array.from(segment.children.bitField().reverse());\n const dir = new UnixFS({\n type: 'hamt-sharded-directory',\n data,\n fanout,\n hashType: hamtHashCode\n });\n if (isRoot) {\n dir.mtime = shardRoot.mtime;\n dir.mode = shardRoot.mode;\n }\n node = {\n Data: dir.marshal(),\n Links: segment.node.Links\n };\n const block = dagPB.encode(dagPB.prepare(node));\n cid = await persist(block, blockstore, options);\n if (!isRoot) {\n // update link in parent sub-shard\n const nextSegment = path[i + 1];\n if (nextSegment == null) {\n throw new Error('Was not operating on shard root but also had no parent?');\n }\n log('updating link in parent sub-shard with prefix %s', nextSegment.prefix);\n nextSegment.node.Links = nextSegment.node.Links.filter(l => l.Name !== nextSegment.prefix);\n nextSegment.node.Links.push({\n Name: nextSegment.prefix,\n Hash: cid,\n Tsize: segment.node.Links.reduce((acc, curr) => acc + (curr.Tsize ?? 0), block.byteLength)\n });\n }\n }\n if (cid == null || node == null) {\n throw new Error('Noting persisted');\n }\n return { cid, node };\n};\nexport const recreateShardedDirectory = async (cid, fileName, blockstore, options) => {\n const wrapped = wrapHash(hamtHashFn);\n const hash = wrapped(uint8ArrayFromString(fileName));\n const path = [];\n // descend the HAMT, loading each layer as we head towards the target child\n while (true) {\n const block = await blockstore.get(cid, options);\n const node = dagPB.decode(block);\n const children = new SparseArray();\n const index = await hash.take(hamtBucketBits);\n const prefix = toPrefix(index);\n path.push({\n prefix,\n children,\n node\n });\n let childLink;\n // update sparsearray child layout - the bitfield is used as the data field for the\n // intermediate DAG node so this is required to generate consistent hashes\n for (const link of node.Links) {\n const linkName = link.Name ?? '';\n if (linkName.length < 2) {\n throw new Error('Invalid HAMT - link name was too short');\n }\n const position = parseInt(linkName.substring(0, 2), 16);\n children.set(position, true);\n // we found the child we are looking for\n if (linkName.startsWith(prefix)) {\n childLink = link;\n }\n }\n if (childLink == null) {\n log('no link found with prefix %s for %s', prefix, fileName);\n // hash.untake(hamtBucketBits)\n break;\n }\n const linkName = childLink.Name ?? '';\n if (linkName.length < 2) {\n throw new Error('Invalid HAMT - link name was too short');\n }\n if (linkName.length === 2) {\n // found sub-shard\n cid = childLink.Hash;\n log('descend into sub-shard with prefix %s', linkName);\n continue;\n }\n break;\n }\n return { path, hash };\n};\n//# sourceMappingURL=hamt-utils.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { CID_V0, CID_V1 } from './dir-sharded.js';\n/**\n * Estimate node size only based on DAGLink name and CID byte lengths\n * https://github.com/ipfs/go-unixfsnode/blob/37b47f1f917f1b2f54c207682f38886e49896ef9/data/builder/directory.go#L81-L96\n *\n * If the node is a hamt sharded directory the calculation is based on if it was a regular directory.\n */\nexport async function isOverShardThreshold(node, blockstore, threshold, options) {\n if (node.Data == null) {\n throw new Error('DagPB node had no data');\n }\n const unixfs = UnixFS.unmarshal(node.Data);\n let size;\n if (unixfs.type === 'directory') {\n size = estimateNodeSize(node);\n }\n else if (unixfs.type === 'hamt-sharded-directory') {\n size = await estimateShardSize(node, 0, threshold, blockstore, options);\n }\n else {\n throw new Error('Can only estimate the size of directories or shards');\n }\n return size > threshold;\n}\nfunction estimateNodeSize(node) {\n let size = 0;\n // estimate size only based on DAGLink name and CID byte lengths\n // https://github.com/ipfs/go-unixfsnode/blob/37b47f1f917f1b2f54c207682f38886e49896ef9/data/builder/directory.go#L81-L96\n for (const link of node.Links) {\n size += (link.Name ?? '').length;\n size += link.Hash.version === 1 ? CID_V1.bytes.byteLength : CID_V0.bytes.byteLength;\n }\n return size;\n}\nasync function estimateShardSize(node, current, max, blockstore, options) {\n if (current > max) {\n return max;\n }\n if (node.Data == null) {\n return current;\n }\n const unixfs = UnixFS.unmarshal(node.Data);\n if (!unixfs.isDirectory()) {\n return current;\n }\n for (const link of node.Links) {\n let name = link.Name ?? '';\n // remove hamt hash prefix from name\n name = name.substring(2);\n current += name.length;\n current += link.Hash.bytes.byteLength;\n if (link.Hash.code === dagPb.code) {\n const block = await blockstore.get(link.Hash, options);\n const node = dagPb.decode(block);\n current += await estimateShardSize(node, current, max, blockstore, options);\n }\n }\n return current;\n}\n//# sourceMappingURL=is-over-shard-threshold.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\n// @ts-expect-error no types\nimport SparseArray from 'sparse-array';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { AlreadyExistsError, InvalidParametersError, InvalidPBNodeError } from '../../errors.js';\nimport { wrapHash } from './consumable-hash.js';\nimport { hamtBucketBits, hamtHashFn } from './hamt-constants.js';\nimport { createShard, recreateShardedDirectory, toPrefix, updateShardedDirectory } from './hamt-utils.js';\nimport { isOverShardThreshold } from './is-over-shard-threshold.js';\nconst log = logger('helia:unixfs:components:utils:add-link');\nexport async function addLink(parent, child, blockstore, options) {\n if (parent.node.Data == null) {\n throw new InvalidParametersError('Invalid parent passed to addLink');\n }\n const meta = UnixFS.unmarshal(parent.node.Data);\n if (meta.type === 'hamt-sharded-directory') {\n log('adding link to sharded directory');\n return addToShardedDirectory(parent, child, blockstore, options);\n }\n log(`adding ${child.Name} (${child.Hash}) to regular directory`);\n const result = await addToDirectory(parent, child, blockstore, options);\n if (await isOverShardThreshold(result.node, blockstore, options.shardSplitThresholdBytes, options)) {\n log('converting directory to sharded directory');\n const converted = await convertToShardedDirectory(result, blockstore);\n result.cid = converted.cid;\n result.node = dagPB.decode(await blockstore.get(converted.cid, options));\n }\n return result;\n}\nconst convertToShardedDirectory = async (parent, blockstore) => {\n if (parent.node.Data == null) {\n throw new InvalidParametersError('Invalid parent passed to convertToShardedDirectory');\n }\n const unixfs = UnixFS.unmarshal(parent.node.Data);\n const result = await createShard(blockstore, parent.node.Links.map(link => ({\n name: (link.Name ?? ''),\n size: BigInt(link.Tsize ?? 0),\n cid: link.Hash\n })), {\n mode: unixfs.mode,\n mtime: unixfs.mtime,\n cidVersion: parent.cid.version\n });\n log(`converted directory to sharded directory ${result.cid}`);\n return result;\n};\nconst addToDirectory = async (parent, child, blockstore, options) => {\n // Remove existing link if it exists\n const parentLinks = parent.node.Links.filter((link) => {\n const matches = link.Name === child.Name;\n if (matches && !options.allowOverwriting) {\n throw new AlreadyExistsError();\n }\n return !matches;\n });\n parentLinks.push(child);\n if (parent.node.Data == null) {\n throw new InvalidPBNodeError('Parent node with no data passed to addToDirectory');\n }\n const node = UnixFS.unmarshal(parent.node.Data);\n let data;\n if (node.mtime != null) {\n // Update mtime if previously set\n const ms = Date.now();\n const secs = Math.floor(ms / 1000);\n node.mtime = {\n secs: BigInt(secs),\n nsecs: (ms - (secs * 1000)) * 1000\n };\n data = node.marshal();\n }\n else {\n data = parent.node.Data;\n }\n parent.node = dagPB.prepare({\n Data: data,\n Links: parentLinks\n });\n // Persist the new parent PbNode\n const buf = dagPB.encode(parent.node);\n const hash = await sha256.digest(buf);\n const cid = CID.create(parent.cid.version, dagPB.code, hash);\n await blockstore.put(cid, buf);\n return {\n node: parent.node,\n cid\n };\n};\nconst addToShardedDirectory = async (parent, child, blockstore, options) => {\n const { path, hash } = await recreateShardedDirectory(parent.cid, child.Name, blockstore, options);\n const finalSegment = path[path.length - 1];\n if (finalSegment == null) {\n throw new Error('Invalid HAMT, could not generate path');\n }\n // find the next prefix\n // const index = await hash.take(hamtBucketBits)\n const prefix = finalSegment.prefix;\n const index = parseInt(prefix, 16);\n log('next prefix for %s is %s', child.Name, prefix);\n const linkName = `${prefix}${child.Name}`;\n const existingLink = finalSegment.node.Links.find(l => (l.Name ?? '').startsWith(prefix));\n if (existingLink != null) {\n log('link %s was present in shard', linkName);\n // link is already present in shard\n if (existingLink.Name === linkName) {\n // file with same name is already present in shard\n if (!options.allowOverwriting) {\n throw new AlreadyExistsError();\n }\n log('overwriting %s in subshard', child.Name);\n finalSegment.node.Links = finalSegment.node.Links.filter(l => l.Name !== linkName);\n finalSegment.node.Links.push({\n Name: linkName,\n Hash: child.Hash,\n Tsize: child.Tsize\n });\n }\n else if (existingLink.Name?.length === 2) {\n throw new Error('Existing link was subshard?!');\n }\n else {\n // conflict, add a new HAMT segment\n log('prefix %s already exists, creating new subshard', prefix);\n // find the sibling we are going to replace\n const index = finalSegment.node.Links.findIndex(l => l.Name?.startsWith(prefix));\n const sibling = finalSegment.node.Links.splice(index, 1)[0];\n // give the sibling a new HAMT prefix\n const siblingName = (sibling.Name ?? '').substring(2);\n const wrapped = wrapHash(hamtHashFn);\n const siblingHash = wrapped(uint8ArrayFromString(siblingName));\n // discard hash bits until we reach the subshard depth\n for (let i = 0; i < path.length; i++) {\n await siblingHash.take(hamtBucketBits);\n }\n while (true) {\n const siblingIndex = await siblingHash.take(hamtBucketBits);\n const siblingPrefix = toPrefix(siblingIndex);\n sibling.Name = `${siblingPrefix}${siblingName}`;\n // calculate the target file's HAMT prefix in the new sub-shard\n const newIndex = await hash.take(hamtBucketBits);\n const newPrefix = toPrefix(newIndex);\n if (siblingPrefix === newPrefix) {\n // the two sibling names have caused another conflict - add an intermediate node to\n // the HAMT and try again\n // create the child locations\n const children = new SparseArray();\n children.set(newIndex, true);\n path.push({\n prefix: newPrefix,\n children,\n node: {\n Links: []\n }\n });\n continue;\n }\n // create the child locations\n const children = new SparseArray();\n children.set(newIndex, true);\n children.set(siblingIndex, true);\n // add our new segment\n path.push({\n prefix,\n children,\n node: {\n Links: [\n sibling, {\n Name: `${newPrefix}${child.Name}`,\n Hash: child.Hash,\n Tsize: child.Tsize\n }\n ]\n }\n });\n break;\n }\n }\n }\n else {\n log('link %s was not present in sub-shard', linkName);\n // add new link to shard\n child.Name = linkName;\n finalSegment.node.Links.push(child);\n finalSegment.children.set(index, true);\n log('adding %s to existing sub-shard', linkName);\n }\n return updateShardedDirectory(path, blockstore, options);\n};\n//# sourceMappingURL=add-link.js.map","import { exporter } from 'ipfs-unixfs-exporter';\nimport { NotADirectoryError } from '../../errors.js';\nexport async function cidToDirectory(cid, blockstore, options = {}) {\n const entry = await exporter(cid, blockstore, options);\n if (entry.type !== 'directory') {\n throw new NotADirectoryError(`${cid.toString()} was not a UnixFS directory`);\n }\n return {\n cid,\n node: entry.node\n };\n}\n//# sourceMappingURL=cid-to-directory.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { exporter } from 'ipfs-unixfs-exporter';\nimport { NotUnixFSError } from '../../errors.js';\nexport async function cidToPBLink(cid, name, blockstore, options) {\n const sourceEntry = await exporter(cid, blockstore, options);\n if (sourceEntry.type !== 'directory' && sourceEntry.type !== 'file' && sourceEntry.type !== 'raw') {\n throw new NotUnixFSError(`${cid.toString()} was not a UnixFS node`);\n }\n return {\n Name: name,\n Tsize: sourceEntry.node instanceof Uint8Array ? sourceEntry.node.byteLength : dagNodeTsize(sourceEntry.node),\n Hash: cid\n };\n}\nfunction dagNodeTsize(node) {\n const linkSizes = node.Links.reduce((acc, curr) => acc + (curr.Tsize ?? 0), 0);\n return dagPb.encode(node).byteLength + linkSizes;\n}\n//# sourceMappingURL=cid-to-pblink.js.map","import { logger } from '@libp2p/logger';\nimport { walkPath } from 'ipfs-unixfs-exporter';\nimport all from 'it-all';\nimport { DoesNotExistError } from '../../errors.js';\nimport { addLink } from './add-link.js';\nimport { cidToDirectory } from './cid-to-directory.js';\nimport { cidToPBLink } from './cid-to-pblink.js';\nconst log = logger('helia:unixfs:components:utils:resolve');\nexport async function resolve(cid, path, blockstore, options) {\n if (path == null || path === '') {\n return { cid };\n }\n const p = `/ipfs/${cid}${path == null ? '' : `/${path}`}`;\n const segments = await all(walkPath(p, blockstore, options));\n if (segments.length === 0) {\n throw new DoesNotExistError('Could not find path in directory');\n }\n log('resolved %s to %c', path, cid);\n return {\n cid: segments[segments.length - 1].cid,\n path,\n segments\n };\n}\n/**\n * Where we have descended into a DAG to update a child node, ascend up the DAG creating\n * new hashes and blocks for the changed content\n */\nexport async function updatePathCids(cid, result, blockstore, options) {\n if (result.segments == null || result.segments.length === 0) {\n return cid;\n }\n let child = result.segments.pop();\n if (child == null) {\n throw new Error('Insufficient segments');\n }\n child.cid = cid;\n result.segments.reverse();\n for (const parent of result.segments) {\n const [directory, pblink] = await Promise.all([\n cidToDirectory(parent.cid, blockstore, options),\n cidToPBLink(child.cid, child.name, blockstore, options)\n ]);\n const result = await addLink(directory, pblink, blockstore, {\n ...options,\n allowOverwriting: true,\n cidVersion: cid.version\n });\n cid = result.cid;\n parent.cid = cid;\n child = parent;\n }\n return cid;\n}\n//# sourceMappingURL=resolve.js.map","import { exporter } from 'ipfs-unixfs-exporter';\nimport mergeOpts from 'merge-options';\nimport { NoContentError, NotAFileError } from '../errors.js';\nimport { resolve } from './utils/resolve.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst defaultOptions = {};\nexport async function* cat(cid, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n const resolved = await resolve(cid, opts.path, blockstore, opts);\n const result = await exporter(resolved.cid, blockstore, opts);\n if (result.type !== 'file' && result.type !== 'raw') {\n throw new NotAFileError();\n }\n if (result.content == null) {\n throw new NoContentError();\n }\n yield* result.content(opts);\n}\n//# sourceMappingURL=cat.js.map","import { coerce } from '../bytes.js';\nexport const name = 'raw';\nexport const code = 0x55;\nexport function encode(node) {\n return coerce(node);\n}\nexport function decode(data) {\n return coerce(data);\n}\n//# sourceMappingURL=raw.js.map","export const SHARD_SPLIT_THRESHOLD_BYTES = 262144;\n//# sourceMappingURL=constants.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { recursive } from 'ipfs-unixfs-exporter';\nimport { importer } from 'ipfs-unixfs-importer';\nimport last from 'it-last';\nimport { pipe } from 'it-pipe';\nimport mergeOpts from 'merge-options';\nimport { CID } from 'multiformats/cid';\nimport * as raw from 'multiformats/codecs/raw';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { InvalidPBNodeError, NotUnixFSError, UnknownError } from '../errors.js';\nimport { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js';\nimport { persist } from './utils/persist.js';\nimport { resolve, updatePathCids } from './utils/resolve.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:chmod');\nconst defaultOptions = {\n recursive: false,\n shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES\n};\nexport async function chmod(cid, mode, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n const resolved = await resolve(cid, opts.path, blockstore, options);\n log('chmod %c %d', resolved.cid, mode);\n if (opts.recursive) {\n // recursively export from root CID, change perms of each entry then reimport\n // but do not reimport files, only manipulate dag-pb nodes\n const root = await pipe(async function* () {\n for await (const entry of recursive(resolved.cid, blockstore, options)) {\n let metadata;\n let links = [];\n if (entry.type === 'raw') {\n // convert to UnixFS\n metadata = new UnixFS({ type: 'file', data: entry.node });\n }\n else if (entry.type === 'file' || entry.type === 'directory') {\n metadata = entry.unixfs;\n links = entry.node.Links;\n }\n else {\n throw new NotUnixFSError();\n }\n metadata.mode = mode;\n const node = {\n Data: metadata.marshal(),\n Links: links\n };\n yield {\n path: entry.path,\n content: node\n };\n }\n }, \n // @ts-expect-error cannot combine progress types\n (source) => importer(source, blockstore, {\n ...opts,\n dagBuilder: async function* (source, block) {\n for await (const entry of source) {\n yield async function () {\n // @ts-expect-error cannot derive type\n const node = entry.content;\n const buf = dagPB.encode(node);\n const updatedCid = await persist(buf, block, {\n ...opts,\n cidVersion: cid.version\n });\n if (node.Data == null) {\n throw new InvalidPBNodeError(`${updatedCid} had no data`);\n }\n const unixfs = UnixFS.unmarshal(node.Data);\n return {\n cid: updatedCid,\n size: BigInt(buf.length),\n path: entry.path,\n unixfs\n };\n };\n }\n }\n }), async (nodes) => last(nodes));\n if (root == null) {\n throw new UnknownError(`Could not chmod ${resolved.cid.toString()}`);\n }\n return updatePathCids(root.cid, resolved, blockstore, opts);\n }\n const block = await blockstore.get(resolved.cid, options);\n let metadata;\n let links = [];\n if (resolved.cid.code === raw.code) {\n // convert to UnixFS\n metadata = new UnixFS({ type: 'file', data: block });\n }\n else {\n const node = dagPB.decode(block);\n if (node.Data == null) {\n throw new InvalidPBNodeError(`${resolved.cid.toString()} had no data`);\n }\n links = node.Links;\n metadata = UnixFS.unmarshal(node.Data);\n }\n metadata.mode = mode;\n const updatedBlock = dagPB.encode({\n Data: metadata.marshal(),\n Links: links\n });\n const hash = await sha256.digest(updatedBlock);\n const updatedCid = CID.create(resolved.cid.version, dagPB.code, hash);\n await blockstore.put(updatedCid, updatedBlock);\n return updatePathCids(updatedCid, resolved, blockstore, opts);\n}\n//# sourceMappingURL=chmod.js.map","import { logger } from '@libp2p/logger';\nimport mergeOpts from 'merge-options';\nimport { InvalidParametersError } from '../errors.js';\nimport { addLink } from './utils/add-link.js';\nimport { cidToDirectory } from './utils/cid-to-directory.js';\nimport { cidToPBLink } from './utils/cid-to-pblink.js';\nimport { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:cp');\nconst defaultOptions = {\n force: false,\n shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES\n};\nexport async function cp(source, target, name, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n if (name.includes('/')) {\n throw new InvalidParametersError('Name must not have slashes');\n }\n const [directory, pblink] = await Promise.all([\n cidToDirectory(target, blockstore, opts),\n cidToPBLink(source, name, blockstore, opts)\n ]);\n log('Adding %c as \"%s\" to %c', source, name, target);\n const result = await addLink(directory, pblink, blockstore, {\n allowOverwriting: opts.force,\n cidVersion: target.version,\n ...opts\n });\n return result.cid;\n}\n//# sourceMappingURL=cp.js.map","import { exporter } from 'ipfs-unixfs-exporter';\nimport mergeOpts from 'merge-options';\nimport { NoContentError, NotADirectoryError } from '../errors.js';\nimport { resolve } from './utils/resolve.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst defaultOptions = {};\nexport async function* ls(cid, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n const resolved = await resolve(cid, opts.path, blockstore, opts);\n const result = await exporter(resolved.cid, blockstore);\n if (result.type === 'file' || result.type === 'raw') {\n yield result;\n return;\n }\n if (result.content == null) {\n throw new NoContentError();\n }\n if (result.type !== 'directory') {\n throw new NotADirectoryError();\n }\n yield* result.content({\n offset: options.offset,\n length: options.length\n });\n}\n//# sourceMappingURL=ls.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { exporter } from 'ipfs-unixfs-exporter';\nimport mergeOpts from 'merge-options';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { InvalidParametersError, NotADirectoryError } from '../errors.js';\nimport { addLink } from './utils/add-link.js';\nimport { cidToDirectory } from './utils/cid-to-directory.js';\nimport { cidToPBLink } from './utils/cid-to-pblink.js';\nimport { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:mkdir');\nconst defaultOptions = {\n cidVersion: 1,\n force: false,\n shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES\n};\nexport async function mkdir(parentCid, dirname, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n if (dirname.includes('/')) {\n throw new InvalidParametersError('Path must not have slashes');\n }\n const entry = await exporter(parentCid, blockstore, options);\n if (entry.type !== 'directory') {\n throw new NotADirectoryError(`${parentCid.toString()} was not a UnixFS directory`);\n }\n log('creating %s', dirname);\n const metadata = new UnixFS({\n type: 'directory',\n mode: opts.mode,\n mtime: opts.mtime\n });\n // Persist the new parent PBNode\n const node = {\n Data: metadata.marshal(),\n Links: []\n };\n const buf = dagPB.encode(node);\n const hash = await sha256.digest(buf);\n const emptyDirCid = CID.create(opts.cidVersion, dagPB.code, hash);\n await blockstore.put(emptyDirCid, buf);\n const [directory, pblink] = await Promise.all([\n cidToDirectory(parentCid, blockstore, opts),\n cidToPBLink(emptyDirCid, dirname, blockstore, opts)\n ]);\n log('adding empty dir called %s to %c', dirname, parentCid);\n const result = await addLink(directory, pblink, blockstore, {\n ...opts,\n allowOverwriting: opts.force\n });\n return result.cid;\n}\n//# sourceMappingURL=mkdir.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { exporter } from 'ipfs-unixfs-exporter';\nimport { InvalidParametersError, InvalidPBNodeError } from '../../errors.js';\nimport { recreateShardedDirectory, updateShardedDirectory } from './hamt-utils.js';\nimport { isOverShardThreshold } from './is-over-shard-threshold.js';\nimport { persist } from './persist.js';\nconst log = logger('helia:unixfs:utils:remove-link');\nexport async function removeLink(parent, name, blockstore, options) {\n if (parent.node.Data == null) {\n throw new InvalidPBNodeError('Parent node had no data');\n }\n const meta = UnixFS.unmarshal(parent.node.Data);\n if (meta.type === 'hamt-sharded-directory') {\n log(`removing ${name} from sharded directory`);\n const result = await removeFromShardedDirectory(parent, name, blockstore, options);\n if (!(await isOverShardThreshold(result.node, blockstore, options.shardSplitThresholdBytes, options))) {\n log('converting shard to flat directory %c', parent.cid);\n return convertToFlatDirectory(result, blockstore, options);\n }\n return result;\n }\n log(`removing link ${name} regular directory`);\n return removeFromDirectory(parent, name, blockstore, options);\n}\nconst removeFromDirectory = async (parent, name, blockstore, options) => {\n // Remove existing link if it exists\n parent.node.Links = parent.node.Links.filter((link) => {\n return link.Name !== name;\n });\n const parentBlock = dagPB.encode(parent.node);\n const parentCid = await persist(parentBlock, blockstore, {\n ...options,\n cidVersion: parent.cid.version\n });\n log(`Updated regular directory ${parentCid}`);\n return {\n node: parent.node,\n cid: parentCid\n };\n};\nconst removeFromShardedDirectory = async (parent, name, blockstore, options) => {\n const { path } = await recreateShardedDirectory(parent.cid, name, blockstore, options);\n const finalSegment = path[path.length - 1];\n if (finalSegment == null) {\n throw new Error('Invalid HAMT, could not generate path');\n }\n const linkName = finalSegment.node.Links.filter(l => (l.Name ?? '').substring(2) === name).map(l => l.Name).pop();\n if (linkName == null) {\n throw new Error('File not found');\n }\n const prefix = linkName.substring(0, 2);\n const index = parseInt(prefix, 16);\n // remove the file from the shard\n finalSegment.node.Links = finalSegment.node.Links.filter(link => link.Name !== linkName);\n finalSegment.children.unset(index);\n if (finalSegment.node.Links.length === 1) {\n // replace the subshard with the last remaining file in the parent\n while (true) {\n if (path.length === 1) {\n break;\n }\n const segment = path[path.length - 1];\n if (segment == null || segment.node.Links.length > 1) {\n break;\n }\n // remove final segment\n path.pop();\n const nextSegment = path[path.length - 1];\n if (nextSegment == null) {\n break;\n }\n const link = segment.node.Links[0];\n nextSegment.node.Links = nextSegment.node.Links.filter(l => !(l.Name ?? '').startsWith(nextSegment.prefix));\n nextSegment.node.Links.push({\n Hash: link.Hash,\n Name: `${nextSegment.prefix}${(link.Name ?? '').substring(2)}`,\n Tsize: link.Tsize\n });\n }\n }\n return updateShardedDirectory(path, blockstore, options);\n};\nconst convertToFlatDirectory = async (parent, blockstore, options) => {\n if (parent.node.Data == null) {\n throw new InvalidParametersError('Invalid parent passed to convertToFlatDirectory');\n }\n const rootNode = {\n Links: []\n };\n const dir = await exporter(parent.cid, blockstore);\n if (dir.type !== 'directory') {\n throw new Error('Unexpected node type');\n }\n for await (const entry of dir.content()) {\n let tsize = 0;\n if (entry.node instanceof Uint8Array) {\n tsize = entry.node.byteLength;\n }\n else {\n tsize = dagPB.encode(entry.node).length;\n }\n rootNode.Links.push({\n Hash: entry.cid,\n Name: entry.name,\n Tsize: tsize\n });\n }\n // copy mode/mtime over if set\n const oldUnixfs = UnixFS.unmarshal(parent.node.Data);\n rootNode.Data = new UnixFS({ type: 'directory', mode: oldUnixfs.mode, mtime: oldUnixfs.mtime }).marshal();\n const block = dagPB.encode(dagPB.prepare(rootNode));\n const cid = await persist(block, blockstore, {\n codec: dagPB,\n cidVersion: parent.cid.version,\n signal: options.signal\n });\n return {\n cid,\n node: rootNode\n };\n};\n//# sourceMappingURL=remove-link.js.map","import { logger } from '@libp2p/logger';\nimport mergeOpts from 'merge-options';\nimport { InvalidParametersError } from '../errors.js';\nimport { cidToDirectory } from './utils/cid-to-directory.js';\nimport { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js';\nimport { removeLink } from './utils/remove-link.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:rm');\nconst defaultOptions = {\n shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES\n};\nexport async function rm(target, name, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n if (name.includes('/')) {\n throw new InvalidParametersError('Name must not have slashes');\n }\n const directory = await cidToDirectory(target, blockstore, opts);\n log('Removing %s from %c', name, target);\n const result = await removeLink(directory, name, blockstore, {\n ...opts,\n cidVersion: target.version\n });\n return result.cid;\n}\n//# sourceMappingURL=rm.js.map","import * as dagPb from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { exporter } from 'ipfs-unixfs-exporter';\nimport mergeOpts from 'merge-options';\nimport * as raw from 'multiformats/codecs/raw';\nimport { InvalidPBNodeError, NotUnixFSError, UnknownError } from '../errors.js';\nimport { resolve } from './utils/resolve.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:stat');\nconst defaultOptions = {};\nexport async function stat(cid, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n const resolved = await resolve(cid, options.path, blockstore, opts);\n log('stat %c', resolved.cid);\n const result = await exporter(resolved.cid, blockstore, opts);\n if (result.type !== 'file' && result.type !== 'directory' && result.type !== 'raw') {\n throw new NotUnixFSError();\n }\n let fileSize = 0n;\n let dagSize = 0n;\n let localFileSize = 0n;\n let localDagSize = 0n;\n let blocks = 0;\n let mode;\n let mtime;\n const type = result.type;\n let unixfs;\n if (result.type === 'raw') {\n fileSize = BigInt(result.node.byteLength);\n dagSize = BigInt(result.node.byteLength);\n localFileSize = BigInt(result.node.byteLength);\n localDagSize = BigInt(result.node.byteLength);\n blocks = 1;\n }\n if (result.type === 'directory') {\n fileSize = 0n;\n dagSize = BigInt(result.unixfs.marshal().byteLength);\n localFileSize = 0n;\n localDagSize = dagSize;\n blocks = 1;\n mode = result.unixfs.mode;\n mtime = result.unixfs.mtime;\n unixfs = result.unixfs;\n }\n if (result.type === 'file') {\n const results = await inspectDag(resolved.cid, blockstore, opts);\n fileSize = result.unixfs.fileSize();\n dagSize = BigInt((result.node.Data?.byteLength ?? 0) + result.node.Links.reduce((acc, curr) => acc + (curr.Tsize ?? 0), 0));\n localFileSize = BigInt(results.localFileSize);\n localDagSize = BigInt(results.localDagSize);\n blocks = results.blocks;\n mode = result.unixfs.mode;\n mtime = result.unixfs.mtime;\n unixfs = result.unixfs;\n }\n return {\n cid: resolved.cid,\n mode,\n mtime,\n fileSize,\n dagSize,\n localFileSize,\n localDagSize,\n blocks,\n type,\n unixfs\n };\n}\nasync function inspectDag(cid, blockstore, options) {\n const results = {\n localFileSize: 0,\n localDagSize: 0,\n blocks: 0\n };\n if (await blockstore.has(cid, options)) {\n const block = await blockstore.get(cid, options);\n results.blocks++;\n results.localDagSize += block.byteLength;\n if (cid.code === raw.code) {\n results.localFileSize += block.byteLength;\n }\n else if (cid.code === dagPb.code) {\n const pbNode = dagPb.decode(block);\n if (pbNode.Links.length > 0) {\n // intermediate node\n for (const link of pbNode.Links) {\n const linkResult = await inspectDag(link.Hash, blockstore, options);\n results.localFileSize += linkResult.localFileSize;\n results.localDagSize += linkResult.localDagSize;\n results.blocks += linkResult.blocks;\n }\n }\n else {\n // leaf node\n if (pbNode.Data == null) {\n throw new InvalidPBNodeError(`PBNode ${cid.toString()} had no data`);\n }\n const unixfs = UnixFS.unmarshal(pbNode.Data);\n if (unixfs.data == null) {\n throw new InvalidPBNodeError(`UnixFS node ${cid.toString()} had no data`);\n }\n results.localFileSize += unixfs.data.byteLength ?? 0;\n }\n }\n else {\n throw new UnknownError(`${cid.toString()} was neither DAG_PB nor RAW`);\n }\n }\n return results;\n}\n//# sourceMappingURL=stat.js.map","import * as dagPB from '@ipld/dag-pb';\nimport { logger } from '@libp2p/logger';\nimport { UnixFS } from 'ipfs-unixfs';\nimport { recursive } from 'ipfs-unixfs-exporter';\nimport { importer } from 'ipfs-unixfs-importer';\nimport last from 'it-last';\nimport { pipe } from 'it-pipe';\nimport mergeOpts from 'merge-options';\nimport { CID } from 'multiformats/cid';\nimport * as raw from 'multiformats/codecs/raw';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { InvalidPBNodeError, NotUnixFSError, UnknownError } from '../errors.js';\nimport { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js';\nimport { persist } from './utils/persist.js';\nimport { resolve, updatePathCids } from './utils/resolve.js';\nconst mergeOptions = mergeOpts.bind({ ignoreUndefined: true });\nconst log = logger('helia:unixfs:touch');\nconst defaultOptions = {\n recursive: false,\n shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES\n};\nexport async function touch(cid, blockstore, options = {}) {\n const opts = mergeOptions(defaultOptions, options);\n const resolved = await resolve(cid, opts.path, blockstore, opts);\n const mtime = opts.mtime ?? {\n secs: BigInt(Math.round(Date.now() / 1000)),\n nsecs: 0\n };\n log('touch %c %o', resolved.cid, mtime);\n if (opts.recursive) {\n // recursively export from root CID, change perms of each entry then reimport\n // but do not reimport files, only manipulate dag-pb nodes\n const root = await pipe(async function* () {\n for await (const entry of recursive(resolved.cid, blockstore)) {\n let metadata;\n let links;\n if (entry.type === 'raw') {\n metadata = new UnixFS({ data: entry.node });\n links = [];\n }\n else if (entry.type === 'file' || entry.type === 'directory') {\n metadata = entry.unixfs;\n links = entry.node.Links;\n }\n else {\n throw new NotUnixFSError();\n }\n metadata.mtime = mtime;\n const node = {\n Data: metadata.marshal(),\n Links: links\n };\n yield {\n path: entry.path,\n content: node\n };\n }\n }, \n // @ts-expect-error blockstore types are incompatible\n (source) => importer(source, blockstore, {\n ...opts,\n dagBuilder: async function* (source, block) {\n for await (const entry of source) {\n yield async function () {\n // @ts-expect-error cannot derive type\n const node = entry.content;\n const buf = dagPB.encode(node);\n const updatedCid = await persist(buf, block, {\n ...opts,\n cidVersion: cid.version\n });\n if (node.Data == null) {\n throw new InvalidPBNodeError(`${updatedCid} had no data`);\n }\n const unixfs = UnixFS.unmarshal(node.Data);\n return {\n cid: updatedCid,\n size: BigInt(buf.length),\n path: entry.path,\n unixfs\n };\n };\n }\n }\n }), async (nodes) => last(nodes));\n if (root == null) {\n throw new UnknownError(`Could not chmod ${resolved.cid.toString()}`);\n }\n return updatePathCids(root.cid, resolved, blockstore, opts);\n }\n const block = await blockstore.get(resolved.cid, options);\n let metadata;\n let links = [];\n if (resolved.cid.code === raw.code) {\n metadata = new UnixFS({ data: block });\n }\n else {\n const node = dagPB.decode(block);\n links = node.Links;\n if (node.Data == null) {\n throw new InvalidPBNodeError(`${resolved.cid.toString()} had no data`);\n }\n metadata = UnixFS.unmarshal(node.Data);\n }\n metadata.mtime = mtime;\n const updatedBlock = dagPB.encode({\n Data: metadata.marshal(),\n Links: links\n });\n const hash = await sha256.digest(updatedBlock);\n const updatedCid = CID.create(resolved.cid.version, dagPB.code, hash);\n await blockstore.put(updatedCid, updatedBlock);\n return updatePathCids(updatedCid, resolved, blockstore, opts);\n}\n//# sourceMappingURL=touch.js.map","import { addAll, addBytes, addByteStream, addDirectory, addFile } from './commands/add.js';\nimport { cat } from './commands/cat.js';\nimport { chmod } from './commands/chmod.js';\nimport { cp } from './commands/cp.js';\nimport { ls } from './commands/ls.js';\nimport { mkdir } from './commands/mkdir.js';\nimport { rm } from './commands/rm.js';\nimport { stat } from './commands/stat.js';\nimport { touch } from './commands/touch.js';\nexport class UnixFS {\n components;\n constructor(components) {\n this.components = components;\n }\n async *addAll(source, options = {}) {\n yield* addAll(source, this.components.blockstore, options);\n }\n async addBytes(bytes, options = {}) {\n return addBytes(bytes, this.components.blockstore, options);\n }\n async addByteStream(bytes, options = {}) {\n return addByteStream(bytes, this.components.blockstore, options);\n }\n async addFile(file, options = {}) {\n return addFile(file, this.components.blockstore, options);\n }\n async addDirectory(dir = {}, options = {}) {\n return addDirectory(dir, this.components.blockstore, options);\n }\n async *cat(cid, options = {}) {\n yield* cat(cid, this.components.blockstore, options);\n }\n async chmod(cid, mode, options = {}) {\n return chmod(cid, mode, this.components.blockstore, options);\n }\n async cp(source, target, name, options = {}) {\n return cp(source, target, name, this.components.blockstore, options);\n }\n async *ls(cid, options = {}) {\n yield* ls(cid, this.components.blockstore, options);\n }\n async mkdir(cid, dirname, options = {}) {\n return mkdir(cid, dirname, this.components.blockstore, options);\n }\n async rm(cid, path, options = {}) {\n return rm(cid, path, this.components.blockstore, options);\n }\n async stat(cid, options = {}) {\n return stat(cid, this.components.blockstore, options);\n }\n async touch(cid, options = {}) {\n return touch(cid, this.components.blockstore, options);\n }\n}\n//# sourceMappingURL=unixfs.js.map","/**\n * @packageDocumentation\n *\n * `@helia/unixfs` is an implementation of a {@link https://github.com/ipfs/specs/blob/main/UNIXFS.md UnixFS filesystem} compatible with {@link https://github.com/ipfs/helia Helia}.\n *\n * See the [API docs](https://ipfs.github.io/helia/modules/_helia_unixfs.html) for all available operations.\n *\n * @example Creating files and directories\n *\n * ```typescript\n * import { createHelia } from 'helia'\n * import { unixfs } from '@helia/unixfs'\n *\n * const helia = createHelia({\n * // ... helia config\n * })\n * const fs = unixfs(helia)\n *\n * // create an empty dir and a file, then add the file to the dir\n * const emptyDirCid = await fs.addDirectory()\n * const fileCid = await fs.addBytes(Uint8Array.from([0, 1, 2, 3]))\n * const updateDirCid = await fs.cp(fileCid, emptyDirCid, 'foo.txt')\n *\n * // or doing the same thing as a stream\n * for await (const entry of fs.addAll([{\n * path: 'foo.txt',\n * content: Uint8Array.from([0, 1, 2, 3])\n * }])) {\n * console.info(entry)\n * }\n * ```\n *\n * @example Recursively adding a directory\n *\n * Node.js-compatibly environments only:\n *\n * ```typescript\n * import { globSource } from '@helia/unixfs'\n *\n * for await (const entry of fs.addAll(globSource('path/to/containing/dir', 'glob-pattern'))) {\n * console.info(entry)\n * }\n * ```\n */\nimport { UnixFS as UnixFSClass } from './unixfs.js';\n/**\n * Create a {@link UnixFS} instance for use with {@link https://github.com/ipfs/helia Helia}\n */\nexport function unixfs(helia) {\n return new UnixFSClass(helia);\n}\nexport { globSource } from './utils/glob-source.js';\nexport { urlSource } from './utils/url-source.js';\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar stream_1 = require(\"stream\");\n/**\n * Readable IndexedDB stream\n */\nvar IndexedDbReadStream = (function (_super) {\n __extends(IndexedDbReadStream, _super);\n function IndexedDbReadStream(options) {\n var _this = _super.call(this, { objectMode: true }) || this;\n var dbRequest = indexedDB.open(options.databaseName, options.databaseVersion);\n dbRequest.addEventListener(\"success\", function (dbEvent) {\n var tx;\n try {\n var store = dbEvent.target.result.transaction([options.objectStoreName])\n .objectStore(options.objectStoreName);\n if (options.indexName) {\n store = store.index(options.indexName);\n }\n tx = store.openCursor(options.range, options.cursorDirection);\n }\n catch (err) {\n return _this.emit(\"error\", err);\n }\n tx.addEventListener(\"success\", function (event) {\n if (event.target.result) {\n _this.push(event.target.result.value);\n return event.target.result.continue();\n }\n _this.push(null);\n });\n tx.addEventListener(\"error\", function (event) {\n _this.emit(\"error\", event.target.result);\n });\n });\n dbRequest.addEventListener(\"error\", function (event) {\n _this.emit(\"error\", event.target.result);\n });\n return _this;\n }\n IndexedDbReadStream.prototype._read = function () {\n return;\n };\n return IndexedDbReadStream;\n}(stream_1.Readable));\nexports.IndexedDbReadStream = IndexedDbReadStream;\n//# sourceMappingURL=indexed-db-read-stream.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar stream_1 = require(\"stream\");\n/* tslint:enable */\n/**\n * writable IndexedDB stream\n */\nvar IndexedDbWriteStream = (function (_super) {\n __extends(IndexedDbWriteStream, _super);\n function IndexedDbWriteStream(options) {\n var _this = _super.call(this, { objectMode: true }) || this;\n _this.options = options;\n return _this;\n }\n IndexedDbWriteStream.prototype._write = function (chunk, encoding, next) {\n var _this = this;\n var dbRequest = indexedDB.open(this.options.databaseName, this.options.databaseVersion);\n dbRequest.addEventListener(\"success\", function (dbEvent) {\n var tx;\n try {\n tx = dbEvent.target.result.transaction([_this.options.objectStoreName], \"readwrite\")\n .objectStore(_this.options.objectStoreName)\n .add(chunk);\n }\n catch (err) {\n _this.emit(\"error\", err);\n return;\n }\n tx.addEventListener(\"success\", function () {\n next();\n });\n tx.addEventListener(\"error\", function (event) {\n _this.emit(\"error\", event.target.error);\n });\n });\n dbRequest.addEventListener(\"error\", function (event) {\n // This can not tested well, but can be fired in browsers incognito mode!\n _this.emit(\"error\", event.target.error);\n });\n };\n return IndexedDbWriteStream;\n}(stream_1.Writable));\nexports.IndexedDbWriteStream = IndexedDbWriteStream;\n//# sourceMappingURL=indexed-db-write-stream.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./indexed-db-read-stream\"));\n__export(require(\"./indexed-db-write-stream\"));\n//# sourceMappingURL=index.js.map","/*!\n * Platform.js v1.3.6\n * Copyright 2014-2020 Benjamin Tan\n * Copyright 2011-2013 John-David Dalton\n * Available under MIT license\n */\n;(function() {\n 'use strict';\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Used as a reference to the global object. */\n var root = (objectTypes[typeof window] && window) || this;\n\n /** Backup possible global object. */\n var oldRoot = root;\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n root = freeGlobal;\n }\n\n /**\n * Used as the maximum length of an array-like object.\n * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n * for more details.\n */\n var maxSafeInteger = Math.pow(2, 53) - 1;\n\n /** Regular expression to detect Opera. */\n var reOpera = /\\bOpera/;\n\n /** Possible global object. */\n var thisBinding = this;\n\n /** Used for native method references. */\n var objectProto = Object.prototype;\n\n /** Used to check for own properties of an object. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to resolve the internal `[[Class]]` of values. */\n var toString = objectProto.toString;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Capitalizes a string value.\n *\n * @private\n * @param {string} string The string to capitalize.\n * @returns {string} The capitalized string.\n */\n function capitalize(string) {\n string = String(string);\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n /**\n * A utility function to clean up the OS name.\n *\n * @private\n * @param {string} os The OS name to clean up.\n * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n * @param {string} [label] A label for the OS.\n */\n function cleanupOS(os, pattern, label) {\n // Platform tokens are defined at:\n // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n var data = {\n '10.0': '10',\n '6.4': '10 Technical Preview',\n '6.3': '8.1',\n '6.2': '8',\n '6.1': 'Server 2008 R2 / 7',\n '6.0': 'Server 2008 / Vista',\n '5.2': 'Server 2003 / XP 64-bit',\n '5.1': 'XP',\n '5.01': '2000 SP1',\n '5.0': '2000',\n '4.0': 'NT',\n '4.90': 'ME'\n };\n // Detect Windows version from platform tokens.\n if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n (data = data[/[\\d.]+$/.exec(os)])) {\n os = 'Windows ' + data;\n }\n // Correct character case and cleanup string.\n os = String(os);\n\n if (pattern && label) {\n os = os.replace(RegExp(pattern, 'i'), label);\n }\n\n os = format(\n os.replace(/ ce$/i, ' CE')\n .replace(/\\bhpw/i, 'web')\n .replace(/\\bMacintosh\\b/, 'Mac OS')\n .replace(/_PowerPC\\b/i, ' OS')\n .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n .replace(/\\bMac (OS X)\\b/, '$1')\n .replace(/\\/(\\d)/, ' $1')\n .replace(/_/g, '.')\n .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n .replace(/\\b(Windows Phone) OS\\b/, '$1')\n .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n .split(' on ')[0]\n );\n\n return os;\n }\n\n /**\n * An iteration utility for arrays and objects.\n *\n * @private\n * @param {Array|Object} object The object to iterate over.\n * @param {Function} callback The function called per iteration.\n */\n function each(object, callback) {\n var index = -1,\n length = object ? object.length : 0;\n\n if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n while (++index < length) {\n callback(object[index], index, object);\n }\n } else {\n forOwn(object, callback);\n }\n }\n\n /**\n * Trim and conditionally capitalize string values.\n *\n * @private\n * @param {string} string The string to format.\n * @returns {string} The formatted string.\n */\n function format(string) {\n string = trim(string);\n return /^(?:webOS|i(?:OS|P))/.test(string)\n ? string\n : capitalize(string);\n }\n\n /**\n * Iterates over an object's own properties, executing the `callback` for each.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} callback The function executed per own property.\n */\n function forOwn(object, callback) {\n for (var key in object) {\n if (hasOwnProperty.call(object, key)) {\n callback(object[key], key, object);\n }\n }\n }\n\n /**\n * Gets the internal `[[Class]]` of a value.\n *\n * @private\n * @param {*} value The value.\n * @returns {string} The `[[Class]]`.\n */\n function getClassOf(value) {\n return value == null\n ? capitalize(value)\n : toString.call(value).slice(8, -1);\n }\n\n /**\n * Host objects can return type values that are different from their actual\n * data type. The objects we are concerned with usually return non-primitive\n * types of \"object\", \"function\", or \"unknown\".\n *\n * @private\n * @param {*} object The owner of the property.\n * @param {string} property The property to check.\n * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n */\n function isHostType(object, property) {\n var type = object != null ? typeof object[property] : 'number';\n return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n (type == 'object' ? !!object[property] : true);\n }\n\n /**\n * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n *\n * @private\n * @param {string} string The string to qualify.\n * @returns {string} The qualified string.\n */\n function qualify(string) {\n return String(string).replace(/([ -])(?!$)/g, '$1?');\n }\n\n /**\n * A bare-bones `Array#reduce` like utility function.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function called per iteration.\n * @returns {*} The accumulated result.\n */\n function reduce(array, callback) {\n var accumulator = null;\n each(array, function(value, index) {\n accumulator = callback(accumulator, value, index, array);\n });\n return accumulator;\n }\n\n /**\n * Removes leading and trailing whitespace from a string.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} The trimmed string.\n */\n function trim(string) {\n return String(string).replace(/^ +| +$/g, '');\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a new platform object.\n *\n * @memberOf platform\n * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n * context object.\n * @returns {Object} A platform object.\n */\n function parse(ua) {\n\n /** The environment context object. */\n var context = root;\n\n /** Used to flag when a custom context is provided. */\n var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n // Juggle arguments.\n if (isCustomContext) {\n context = ua;\n ua = null;\n }\n\n /** Browser navigator object. */\n var nav = context.navigator || {};\n\n /** Browser user agent string. */\n var userAgent = nav.userAgent || '';\n\n ua || (ua = userAgent);\n\n /** Used to flag when `thisBinding` is the [ModuleScope]. */\n var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n /** Used to detect if browser is like Chrome. */\n var likeChrome = isCustomContext\n ? !!nav.likeChrome\n : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n /** Internal `[[Class]]` value shortcuts. */\n var objectClass = 'Object',\n airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n enviroClass = isCustomContext ? objectClass : 'Environment',\n javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n /** Detect Java environments. */\n var java = /\\bJava/.test(javaClass) && context.java;\n\n /** Detect Rhino. */\n var rhino = java && getClassOf(context.environment) == enviroClass;\n\n /** A character to represent alpha. */\n var alpha = java ? 'a' : '\\u03b1';\n\n /** A character to represent beta. */\n var beta = java ? 'b' : '\\u03b2';\n\n /** Browser document object. */\n var doc = context.document || {};\n\n /**\n * Detect Opera browser (Presto-based).\n * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n */\n var opera = context.operamini || context.opera;\n\n /** Opera `[[Class]]`. */\n var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n ? operaClass\n : (opera = null);\n\n /*------------------------------------------------------------------------*/\n\n /** Temporary variable used over the script's lifetime. */\n var data;\n\n /** The CPU architecture. */\n var arch = ua;\n\n /** Platform description array. */\n var description = [];\n\n /** Platform alpha/beta indicator. */\n var prerelease = null;\n\n /** A flag to indicate that environment features should be used to resolve the platform. */\n var useFeatures = ua == userAgent;\n\n /** The browser/environment version. */\n var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n /** A flag to indicate if the OS ends with \"/ Version\" */\n var isSpecialCasedOS;\n\n /* Detectable layout engines (order is important). */\n var layout = getLayout([\n { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n 'Trident',\n { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n 'iCab',\n 'Presto',\n 'NetFront',\n 'Tasman',\n 'KHTML',\n 'Gecko'\n ]);\n\n /* Detectable browser names (order is important). */\n var name = getName([\n 'Adobe AIR',\n 'Arora',\n 'Avant Browser',\n 'Breach',\n 'Camino',\n 'Electron',\n 'Epiphany',\n 'Fennec',\n 'Flock',\n 'Galeon',\n 'GreenBrowser',\n 'iCab',\n 'Iceweasel',\n 'K-Meleon',\n 'Konqueror',\n 'Lunascape',\n 'Maxthon',\n { 'label': 'Microsoft Edge', 'pattern': '(?:Edge|Edg|EdgA|EdgiOS)' },\n 'Midori',\n 'Nook Browser',\n 'PaleMoon',\n 'PhantomJS',\n 'Raven',\n 'Rekonq',\n 'RockMelt',\n { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n 'SeaMonkey',\n { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Sleipnir',\n 'SlimBrowser',\n { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n 'Sunrise',\n 'Swiftfox',\n 'Vivaldi',\n 'Waterfox',\n 'WebPositive',\n { 'label': 'Yandex Browser', 'pattern': 'YaBrowser' },\n { 'label': 'UC Browser', 'pattern': 'UCBrowser' },\n 'Opera Mini',\n { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n 'Opera',\n { 'label': 'Opera', 'pattern': 'OPR' },\n 'Chromium',\n 'Chrome',\n { 'label': 'Chrome', 'pattern': '(?:HeadlessChrome)' },\n { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n { 'label': 'IE', 'pattern': 'IEMobile' },\n { 'label': 'IE', 'pattern': 'MSIE' },\n 'Safari'\n ]);\n\n /* Detectable products (order is important). */\n var product = getProduct([\n { 'label': 'BlackBerry', 'pattern': 'BB10' },\n 'BlackBerry',\n { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n 'Google TV',\n 'Lumia',\n 'iPad',\n 'iPod',\n 'iPhone',\n 'Kindle',\n { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Nexus',\n 'Nook',\n 'PlayBook',\n 'PlayStation Vita',\n 'PlayStation',\n 'TouchPad',\n 'Transformer',\n { 'label': 'Wii U', 'pattern': 'WiiU' },\n 'Wii',\n 'Xbox One',\n { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n 'Xoom'\n ]);\n\n /* Detectable manufacturers. */\n var manufacturer = getManufacturer({\n 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n 'Alcatel': {},\n 'Archos': {},\n 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n 'Asus': { 'Transformer': 1 },\n 'Barnes & Noble': { 'Nook': 1 },\n 'BlackBerry': { 'PlayBook': 1 },\n 'Google': { 'Google TV': 1, 'Nexus': 1 },\n 'HP': { 'TouchPad': 1 },\n 'HTC': {},\n 'Huawei': {},\n 'Lenovo': {},\n 'LG': {},\n 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n 'Motorola': { 'Xoom': 1 },\n 'Nintendo': { 'Wii U': 1, 'Wii': 1 },\n 'Nokia': { 'Lumia': 1 },\n 'Oppo': {},\n 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n 'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 },\n 'Xiaomi': { 'Mi': 1, 'Redmi': 1 }\n });\n\n /* Detectable operating systems (order is important). */\n var os = getOS([\n 'Windows Phone',\n 'KaiOS',\n 'Android',\n 'CentOS',\n { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n 'Debian',\n { 'label': 'DragonFly BSD', 'pattern': 'DragonFly' },\n 'Fedora',\n 'FreeBSD',\n 'Gentoo',\n 'Haiku',\n 'Kubuntu',\n 'Linux Mint',\n 'OpenBSD',\n 'Red Hat',\n 'SuSE',\n 'Ubuntu',\n 'Xubuntu',\n 'Cygwin',\n 'Symbian OS',\n 'hpwOS',\n 'webOS ',\n 'webOS',\n 'Tablet OS',\n 'Tizen',\n 'Linux',\n 'Mac OS X',\n 'Macintosh',\n 'Mac',\n 'Windows 98;',\n 'Windows '\n ]);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Picks the layout engine from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected layout engine.\n */\n function getLayout(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the manufacturer from an array of guesses.\n *\n * @private\n * @param {Array} guesses An object of guesses.\n * @returns {null|string} The detected manufacturer.\n */\n function getManufacturer(guesses) {\n return reduce(guesses, function(result, value, key) {\n // Lookup the manufacturer by product or scan the UA for the manufacturer.\n return result || (\n value[product] ||\n value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n ) && key;\n });\n }\n\n /**\n * Picks the browser name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected browser name.\n */\n function getName(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the OS name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected OS name.\n */\n function getOS(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n )) {\n result = cleanupOS(result, pattern, guess.label || guess);\n }\n return result;\n });\n }\n\n /**\n * Picks the product name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected product name.\n */\n function getProduct(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n )) {\n // Split by forward slash and append product version if needed.\n if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n result[0] += ' ' + result[1];\n }\n // Correct character case and cleanup string.\n guess = guess.label || guess;\n result = format(result[0]\n .replace(RegExp(pattern, 'i'), guess)\n .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n }\n return result;\n });\n }\n\n /**\n * Resolves the version using an array of UA patterns.\n *\n * @private\n * @param {Array} patterns An array of UA patterns.\n * @returns {null|string} The detected version.\n */\n function getVersion(patterns) {\n return reduce(patterns, function(result, pattern) {\n return result || (RegExp(pattern +\n '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n });\n }\n\n /**\n * Returns `platform.description` when the platform object is coerced to a string.\n *\n * @name toString\n * @memberOf platform\n * @returns {string} Returns `platform.description` if available, else an empty string.\n */\n function toStringPlatform() {\n return this.description || '';\n }\n\n /*------------------------------------------------------------------------*/\n\n // Convert layout to an array so we can add extra details.\n layout && (layout = [layout]);\n\n // Detect Android products.\n // Browsers on Android devices typically provide their product IDS after \"Android;\"\n // up to \"Build\" or \") AppleWebKit\".\n // Example:\n // \"Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36\n // (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36\"\n if (/\\bAndroid\\b/.test(os) && !product &&\n (data = /\\bAndroid[^;]*;(.*?)(?:Build|\\) AppleWebKit)\\b/i.exec(ua))) {\n product = trim(data[1])\n // Replace any language codes (eg. \"en-US\").\n .replace(/^[a-z]{2}-[a-z]{2};\\s*/i, '')\n || null;\n }\n // Detect product names that contain their manufacturer's name.\n if (manufacturer && !product) {\n product = getProduct([manufacturer]);\n } else if (manufacturer && product) {\n product = product\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.\\\\s]', 'i'), manufacturer + ' ')\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.]?(\\\\w)', 'i'), manufacturer + ' $2');\n }\n // Clean up Google TV.\n if ((data = /\\bGoogle TV\\b/.exec(product))) {\n product = data[0];\n }\n // Detect simulators.\n if (/\\bSimulator\\b/i.test(ua)) {\n product = (product ? product + ' ' : '') + 'Simulator';\n }\n // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n description.push('running in Turbo/Uncompressed mode');\n }\n // Detect IE Mobile 11.\n if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n data = parse(ua.replace(/like iPhone OS/, ''));\n manufacturer = data.manufacturer;\n product = data.product;\n }\n // Detect iOS.\n else if (/^iP/.test(product)) {\n name || (name = 'Safari');\n os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n ? ' ' + data[1].replace(/_/g, '.')\n : '');\n }\n // Detect Kubuntu.\n else if (name == 'Konqueror' && /^Linux\\b/i.test(os)) {\n os = 'Kubuntu';\n }\n // Detect Android browsers.\n else if ((manufacturer && manufacturer != 'Google' &&\n ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n name = 'Android Browser';\n os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n }\n // Detect Silk desktop/accelerated modes.\n else if (name == 'Silk') {\n if (!/\\bMobi/i.test(ua)) {\n os = 'Android';\n description.unshift('desktop mode');\n }\n if (/Accelerated *= *true/i.test(ua)) {\n description.unshift('accelerated');\n }\n }\n // Detect UC Browser speed mode.\n else if (name == 'UC Browser' && /\\bUCWEB\\b/.test(ua)) {\n description.push('speed mode');\n }\n // Detect PaleMoon identifying as Firefox.\n else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n description.push('identifying as Firefox ' + data[1]);\n }\n // Detect Firefox OS and products running Firefox.\n else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n os || (os = 'Firefox OS');\n product || (product = data[1]);\n }\n // Detect false positives for Firefox/Safari.\n else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n // Escape the `/` for Firefox 1.\n if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n // Clear name of false positives.\n name = null;\n }\n // Reassign a generic name.\n if ((data = product || manufacturer || os) &&\n (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n }\n }\n // Add Chrome version to description for Electron.\n else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n description.push('Chromium ' + data);\n }\n // Detect non-Opera (Presto-based) versions (order is important).\n if (!version) {\n version = getVersion([\n '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$)|UCBrowser|YaBrowser)',\n 'Version',\n qualify(name),\n '(?:Firefox|Minefield|NetFront)'\n ]);\n }\n // Detect stubborn layout engines.\n if ((data =\n layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n )) {\n layout = [data];\n }\n // Detect Windows Phone 7 desktop mode.\n if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n name += ' Mobile';\n os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n description.unshift('desktop mode');\n }\n // Detect Windows Phone 8.x desktop mode.\n else if (/\\bWPDesktop\\b/i.test(ua)) {\n name = 'IE Mobile';\n os = 'Windows Phone 8.x';\n description.unshift('desktop mode');\n version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n }\n // Detect IE 11 identifying as other browsers.\n else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n if (name) {\n description.push('identifying as ' + name + (version ? ' ' + version : ''));\n }\n name = 'IE';\n version = data[1];\n }\n // Leverage environment features.\n if (useFeatures) {\n // Detect server-side environments.\n // Rhino has a global function while others have a global object.\n if (isHostType(context, 'global')) {\n if (java) {\n data = java.lang.System;\n arch = data.getProperty('os.arch');\n os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n }\n if (rhino) {\n try {\n version = context.require('ringo/engine').version.join('.');\n name = 'RingoJS';\n } catch(e) {\n if ((data = context.system) && data.global.system == context.system) {\n name = 'Narwhal';\n os || (os = data[0].os || null);\n }\n }\n if (!name) {\n name = 'Rhino';\n }\n }\n else if (\n typeof context.process == 'object' && !context.process.browser &&\n (data = context.process)\n ) {\n if (typeof data.versions == 'object') {\n if (typeof data.versions.electron == 'string') {\n description.push('Node ' + data.versions.node);\n name = 'Electron';\n version = data.versions.electron;\n } else if (typeof data.versions.nw == 'string') {\n description.push('Chromium ' + version, 'Node ' + data.versions.node);\n name = 'NW.js';\n version = data.versions.nw;\n }\n }\n if (!name) {\n name = 'Node.js';\n arch = data.arch;\n os = data.platform;\n version = /[\\d.]+/.exec(data.version);\n version = version ? version[0] : null;\n }\n }\n }\n // Detect Adobe AIR.\n else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n name = 'Adobe AIR';\n os = data.flash.system.Capabilities.os;\n }\n // Detect PhantomJS.\n else if (getClassOf((data = context.phantom)) == phantomClass) {\n name = 'PhantomJS';\n version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n }\n // Detect IE compatibility modes.\n else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n // We're in compatibility mode when the Trident version + 4 doesn't\n // equal the document mode.\n version = [version, doc.documentMode];\n if ((data = +data[1] + 4) != version[1]) {\n description.push('IE ' + version[1] + ' mode');\n layout && (layout[1] = '');\n version[1] = data;\n }\n version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n }\n // Detect IE 11 masking as other browsers.\n else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n description.push('masking as ' + name + ' ' + version);\n name = 'IE';\n version = '11.0';\n layout = ['Trident'];\n os = 'Windows';\n }\n os = os && format(os);\n }\n // Detect prerelease phases.\n if (version && (data =\n /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n /\\bMinefield\\b/i.test(ua) && 'a'\n )) {\n prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n version = version.replace(RegExp(data + '\\\\+?$'), '') +\n (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n }\n // Detect Firefox Mobile.\n if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS|KaiOS)\\b/.test(os)) {\n name = 'Firefox Mobile';\n }\n // Obscure Maxthon's unreliable version.\n else if (name == 'Maxthon' && version) {\n version = version.replace(/\\.[\\d.]+/, '.x');\n }\n // Detect Xbox 360 and Xbox One.\n else if (/\\bXbox\\b/i.test(product)) {\n if (product == 'Xbox 360') {\n os = null;\n }\n if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n description.unshift('mobile mode');\n }\n }\n // Add mobile postfix.\n else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n (os == 'Windows CE' || /Mobi/i.test(ua))) {\n name += ' Mobile';\n }\n // Detect IE platform preview.\n else if (name == 'IE' && useFeatures) {\n try {\n if (context.external === null) {\n description.unshift('platform preview');\n }\n } catch(e) {\n description.unshift('embedded');\n }\n }\n // Detect BlackBerry OS version.\n // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n version\n )) {\n data = [data, /BB10/.test(ua)];\n os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n version = null;\n }\n // Detect Opera identifying/masking itself as another browser.\n // http://www.opera.com/support/kb/view/843/\n else if (this != forOwn && product != 'Wii' && (\n (useFeatures && opera) ||\n (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n (name == 'IE' && (\n (os && !/^Win/.test(os) && version > 5.5) ||\n /\\bWindows XP\\b/.test(os) && version > 8 ||\n version == 8 && !/\\bTrident\\b/.test(ua)\n ))\n ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n // When \"identifying\", the UA contains both Opera and the other browser's name.\n data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n if (reOpera.test(name)) {\n if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n os = null;\n }\n data = 'identify' + data;\n }\n // When \"masking\", the UA contains only the other browser's name.\n else {\n data = 'mask' + data;\n if (operaClass) {\n name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n } else {\n name = 'Opera';\n }\n if (/\\bIE\\b/.test(data)) {\n os = null;\n }\n if (!useFeatures) {\n version = null;\n }\n }\n layout = ['Presto'];\n description.push(data);\n }\n // Detect WebKit Nightly and approximate Chrome/Safari versions.\n if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n // Correct build number for numeric comparison.\n // (e.g. \"532.5\" becomes \"532.05\")\n data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n // Nightly builds are postfixed with a \"+\".\n if (name == 'Safari' && data[1].slice(-1) == '+') {\n name = 'WebKit Nightly';\n prerelease = 'alpha';\n version = data[1].slice(0, -1);\n }\n // Clear incorrect browser versions.\n else if (version == data[1] ||\n version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n version = null;\n }\n // Use the full Chrome version when available.\n data[1] = (/\\b(?:Headless)?Chrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n // Detect Blink layout engine.\n if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n layout = ['Blink'];\n }\n // Detect JavaScriptCore.\n // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n if (!useFeatures || (!likeChrome && !data[1])) {\n layout && (layout[1] = 'like Safari');\n data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : data < 602 ? 9 : data < 604 ? 10 : data < 606 ? 11 : data < 608 ? 12 : '12');\n } else {\n layout && (layout[1] = 'like Chrome');\n data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n }\n // Add the postfix of \".x\" or \"+\" for approximate versions.\n layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n // Obscure version for some Safari 1-2 releases.\n if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n version = data;\n } else if (name == 'Chrome' && /\\bHeadlessChrome/i.test(ua)) {\n description.unshift('headless');\n }\n }\n // Detect Opera desktop modes.\n if (name == 'Opera' && (data = /\\bzbov|zvav$/.exec(os))) {\n name += ' ';\n description.unshift('desktop mode');\n if (data == 'zvav') {\n name += 'Mini';\n version = null;\n } else {\n name += 'Mobile';\n }\n os = os.replace(RegExp(' *' + data + '$'), '');\n }\n // Detect Chrome desktop mode.\n else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n description.unshift('desktop mode');\n name = 'Chrome Mobile';\n version = null;\n\n if (/\\bOS X\\b/.test(os)) {\n manufacturer = 'Apple';\n os = 'iOS 4.3+';\n } else {\n os = null;\n }\n }\n // Newer versions of SRWare Iron uses the Chrome tag to indicate its version number.\n else if (/\\bSRWare Iron\\b/.test(name) && !version) {\n version = getVersion('Chrome');\n }\n // Strip incorrect OS versions.\n if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n ua.indexOf('/' + data + '-') > -1) {\n os = trim(os.replace(data, ''));\n }\n // Ensure OS does not include the browser name.\n if (os && os.indexOf(name) != -1 && !RegExp(name + ' OS').test(os)) {\n os = os.replace(RegExp(' *' + qualify(name) + ' *'), '');\n }\n // Add layout engine.\n if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n /Browser|Lunascape|Maxthon/.test(name) ||\n name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name) && layout[1])) {\n // Don't add layout details to description if they are falsey.\n (data = layout[layout.length - 1]) && description.push(data);\n }\n // Combine contextual information.\n if (description.length) {\n description = ['(' + description.join('; ') + ')'];\n }\n // Append manufacturer to description.\n if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n description.push('on ' + manufacturer);\n }\n // Append product to description.\n if (product) {\n description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n }\n // Parse the OS into an object.\n if (os) {\n data = / ([\\d.+]+)$/.exec(os);\n isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n os = {\n 'architecture': 32,\n 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n 'version': data ? data[1] : null,\n 'toString': function() {\n var version = this.version;\n return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n }\n };\n }\n // Add browser/OS architecture.\n if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n if (os) {\n os.architecture = 64;\n os.family = os.family.replace(RegExp(' *' + data), '');\n }\n if (\n name && (/\\bWOW64\\b/i.test(ua) ||\n (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n ) {\n description.unshift('32-bit');\n }\n }\n // Chrome 39 and above on OS X is always 64-bit.\n else if (\n os && /^OS X/.test(os.family) &&\n name == 'Chrome' && parseFloat(version) >= 39\n ) {\n os.architecture = 64;\n }\n\n ua || (ua = null);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The platform object.\n *\n * @name platform\n * @type Object\n */\n var platform = {};\n\n /**\n * The platform description.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.description = ua;\n\n /**\n * The name of the browser's layout engine.\n *\n * The list of common layout engines include:\n * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.layout = layout && layout[0];\n\n /**\n * The name of the product's manufacturer.\n *\n * The list of manufacturers include:\n * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n * \"Nokia\", \"Samsung\" and \"Sony\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.manufacturer = manufacturer;\n\n /**\n * The name of the browser/environment.\n *\n * The list of common browser names include:\n * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n * \"Opera Mini\" and \"Opera\"\n *\n * Mobile versions of some browsers have \"Mobile\" appended to their name:\n * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.name = name;\n\n /**\n * The alpha/beta release indicator.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.prerelease = prerelease;\n\n /**\n * The name of the product hosting the browser.\n *\n * The list of common products include:\n *\n * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.product = product;\n\n /**\n * The browser's user agent string.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.ua = ua;\n\n /**\n * The browser/environment version.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.version = name && version;\n\n /**\n * The name of the operating system.\n *\n * @memberOf platform\n * @type Object\n */\n platform.os = os || {\n\n /**\n * The CPU architecture the OS is built for.\n *\n * @memberOf platform.os\n * @type number|null\n */\n 'architecture': null,\n\n /**\n * The family of the OS.\n *\n * Common values include:\n * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n * \"Windows XP\", \"OS X\", \"Linux\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\",\n * \"SuSE\", \"Android\", \"iOS\" and \"Windows Phone\"\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'family': null,\n\n /**\n * The version of the OS.\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'version': null,\n\n /**\n * Returns the OS string.\n *\n * @memberOf platform.os\n * @returns {string} The OS string.\n */\n 'toString': function() { return 'null'; }\n };\n\n platform.parse = parse;\n platform.toString = toStringPlatform;\n\n if (platform.version) {\n description.unshift(version);\n }\n if (platform.name) {\n description.unshift(name);\n }\n if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n description.push(product ? '(' + os + ')' : 'on ' + os);\n }\n if (description.length) {\n platform.description = description.join(' ');\n }\n return platform;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Export platform.\n var platform = parse();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose platform on the global object to prevent errors when platform is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n root.platform = platform;\n\n // Define as an anonymous module so platform can be aliased through path mapping.\n define(function() {\n return platform;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n else if (freeExports && freeModule) {\n // Export for CommonJS support.\n forOwn(platform, function(value, key) {\n freeExports[key] = value;\n });\n }\n else {\n // Export to the global object.\n root.platform = platform;\n }\n}.call(this));\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));","import Semaphore from \"@chriscdn/promise-semaphore\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport md5 from \"crypto-js/md5.js\";\nimport Base64 from \"crypto-js/enc-base64.js\";\nimport deepEqual from \"deep-equal\";\nexport class CacheSuivi {\n verrou;\n _cacheSuivi;\n _cacheRecherche;\n constructor() {\n this.verrou = new Semaphore();\n this._cacheSuivi = {};\n this._cacheRecherche = {};\n }\n async suivre({ adresseFonction, idClient, fOriginale, args, ceciOriginal, }) {\n // Extraire la fonction de suivi\n const nomArgFonction = Object.entries(args).find((x) => typeof x[1] === \"function\")?.[0];\n if (!nomArgFonction)\n throw new Error(`Aucun argument n'est une fonction.`);\n const f = args[nomArgFonction];\n const argsSansF = Object.fromEntries(Object.entries(args).filter((x) => typeof x[1] !== \"function\"));\n if (Object.keys(args).length !== Object.keys(argsSansF).length + 1) {\n throw new Error(\"Plus d'un argument pour \" +\n adresseFonction +\n \" est une fonction : \" +\n JSON.stringify(args));\n }\n const codeCache = this.générerCodeCache({\n adresseFonction,\n idClient,\n argsClefs: argsSansF,\n });\n const idRequête = uuidv4();\n await this.verrou.acquire(codeCache);\n // Vérifier si déjà en cache\n if (!this._cacheSuivi[codeCache]) {\n // Si pas en cache, générer\n this._cacheSuivi[codeCache] = {\n requêtes: { [idRequête]: f },\n };\n const fFinale = async (x) => {\n if (!this._cacheSuivi[codeCache])\n return; // Si on a déjà annulé la requête\n if (Object.keys(this._cacheSuivi[codeCache]).includes(\"val\") &&\n deepEqual(this._cacheSuivi[codeCache].val, x, { strict: true }))\n return; // Ignorer si c'est la même valeur qu'avant\n this._cacheSuivi[codeCache].val = x;\n const fsSuivis = Object.values(this._cacheSuivi[codeCache].requêtes);\n await Promise.all(fsSuivis.map((f_) => f_(x)));\n };\n const argsAvecF = { ...argsSansF, [nomArgFonction]: fFinale };\n const fOublier = await fOriginale.apply(ceciOriginal, [argsAvecF]);\n this._cacheSuivi[codeCache].fOublier = fOublier;\n this.verrou.release(codeCache);\n }\n else {\n this.verrou.release(codeCache);\n // Sinon, ajouter f à la liste de fonctions de rappel\n this._cacheSuivi[codeCache].requêtes[idRequête] = f;\n if (Object.keys(this._cacheSuivi[codeCache]).includes(\"val\"))\n await f(this._cacheSuivi[codeCache].val);\n }\n const fOublierRequête = async () => {\n await this.oublierSuivi({ codeCache, idRequête });\n };\n return fOublierRequête;\n }\n async suivreRecherche({ adresseFonction, nomArgTaille, idClient, fOriginale, args, ceciOriginal, par, }) {\n // Extraire la fonction de suivi\n const nomArgFonction = Object.entries(args).find((x) => typeof x[1] === \"function\")?.[0];\n if (!nomArgFonction)\n throw new Error(`Aucun argument n'est une fonction.`);\n const f = args[nomArgFonction];\n const argsSansF = Object.fromEntries(Object.entries(args).filter((x) => typeof x[1] !== \"function\"));\n if (Object.keys(args).length !== Object.keys(argsSansF).length + 1) {\n throw new Error(\"Plus d'un argument pour \" +\n adresseFonction +\n \" est une fonction : \" +\n JSON.stringify(args));\n }\n const argsSansFOuTaille = Object.fromEntries(Object.entries(args).filter((x) => x[0] !== nomArgTaille));\n let taille = args[nomArgTaille];\n if (taille === undefined)\n taille = Infinity;\n if (typeof taille !== \"number\")\n throw new Error(`Argument ${nomArgTaille} n'est pas un nombre dans la fonction ${adresseFonction}.`);\n const codeCache = this.générerCodeCache({\n adresseFonction,\n idClient,\n argsClefs: argsSansFOuTaille,\n });\n const idRequête = uuidv4();\n await this.verrou.acquire(codeCache);\n const fFinale = (val) => {\n if (!this._cacheRecherche[codeCache])\n return; // Si on a déjà annulé la requête\n this._cacheRecherche[codeCache].val = val;\n const infoRequêtes = Object.values(this._cacheRecherche[codeCache].requêtes);\n if (par === \"profondeur\") {\n infoRequêtes.forEach((info) => info.f(val.filter((x) => x.profondeur <= info.taille)));\n }\n else {\n infoRequêtes.forEach((info) => info.f(val.slice(0, info.taille)));\n }\n };\n // Vérifier si déjà en cache\n if (!this._cacheRecherche[codeCache]) {\n // Si pas en cache, générer\n this._cacheRecherche[codeCache] = {\n requêtes: { [idRequête]: { f, taille } },\n taillePrésente: taille,\n };\n const argsComplets = {\n ...argsSansFOuTaille,\n [nomArgFonction]: fFinale,\n [nomArgTaille]: taille,\n };\n if (par === \"profondeur\") {\n const { fOublier, fChangerProfondeur } = (await fOriginale.apply(ceciOriginal, [argsComplets]));\n this._cacheRecherche[codeCache].fs = {\n fOublier,\n fChangerTaille: fChangerProfondeur,\n };\n }\n else {\n const { fOublier, fChangerN } = (await fOriginale.apply(ceciOriginal, [\n argsComplets,\n ]));\n this._cacheRecherche[codeCache].fs = {\n fOublier,\n fChangerTaille: fChangerN,\n };\n }\n }\n else {\n // Sinon, ajouter f à la liste de fonctions de rappel\n this._cacheRecherche[codeCache].requêtes[idRequête] = { f, taille };\n if (Object.keys(this._cacheRecherche[codeCache]).includes(\"val\")) {\n const { val } = this._cacheRecherche[codeCache];\n if (val)\n fFinale(val);\n }\n }\n const fOublierRequête = async () => {\n await this.oublierRecherche({ codeCache, idRequête });\n };\n const fChangerTailleRequête = (taille) => {\n const tailleAvant = this._cacheRecherche[codeCache].requêtes[idRequête].taille;\n if (taille === tailleAvant)\n return;\n this._cacheRecherche[codeCache].requêtes[idRequête].taille = taille;\n const { val } = this._cacheRecherche[codeCache];\n if (val)\n fFinale(val);\n const maxTaille = Math.max(...Object.values(this._cacheRecherche[codeCache].requêtes).map((r) => r.taille));\n const { taillePrésente } = this._cacheRecherche[codeCache];\n const { fChangerTaille } = this._cacheRecherche[codeCache].fs;\n if (maxTaille !== taillePrésente) {\n this._cacheRecherche[codeCache].taillePrésente = maxTaille;\n fChangerTaille(maxTaille);\n }\n };\n this.verrou.release(codeCache);\n return {\n fOublier: fOublierRequête,\n [par === \"profondeur\" ? \"fChangerProfondeur\" : \"fChangerN\"]: fChangerTailleRequête,\n };\n }\n async oublierSuivi({ codeCache, idRequête, }) {\n await this.verrou.acquire(codeCache);\n if (this._cacheSuivi[codeCache] === undefined)\n return;\n const { requêtes, fOublier } = this._cacheSuivi[codeCache];\n delete requêtes[idRequête];\n if (!Object.keys(requêtes).length) {\n fOublier && (await fOublier());\n delete this._cacheSuivi[codeCache];\n }\n this.verrou.release(codeCache);\n }\n async oublierRecherche({ codeCache, idRequête, }) {\n await this.verrou.acquire(codeCache);\n if (this._cacheRecherche[codeCache] === undefined)\n return;\n const { requêtes, fs } = this._cacheRecherche[codeCache];\n delete requêtes[idRequête];\n if (!Object.keys(requêtes).length) {\n fs && (await fs.fOublier());\n delete this._cacheRecherche[codeCache];\n }\n this.verrou.release(codeCache);\n }\n générerCodeCache({ adresseFonction, idClient, argsClefs, }) {\n const texte = adresseFonction + \"-\" + idClient + \"-\" + JSON.stringify(argsClefs);\n return Base64.stringify(md5(texte));\n }\n}\nexport const cacheSuivi = (_cible, nom, descripteur) => {\n return envelopper({ nom, descripteur });\n};\nexport const cacheRechercheParNRésultats = (_cible, nom, descripteur) => {\n return envelopper({ nom, descripteur, recherche: \"nRésultats\" });\n};\nexport const cacheRechercheParProfondeur = (_cible, nom, descripteur) => {\n return envelopper({ nom, descripteur, recherche: \"profondeur\" });\n};\nexport const envelopper = ({ nom, descripteur, recherche, nomArgTaille, }) => {\n const original = descripteur.value;\n if (typeof original === \"function\") {\n descripteur.value = function (...args) {\n if (args.length > 1)\n throw new Error(\"Args trop longs\");\n const client = this.client ? this.client : this;\n try {\n if (recherche) {\n nomArgTaille = nomArgTaille\n ? nomArgTaille\n : recherche === \"profondeur\"\n ? \"profondeur\"\n : \"nRésultatsDésirés\";\n return cache.suivreRecherche({\n adresseFonction: this.constructor.name + \".\" + nom,\n idClient: client.idCompte,\n fOriginale: original,\n args: args[0],\n ceciOriginal: this,\n par: recherche,\n nomArgTaille,\n });\n }\n else {\n return cache.suivre({\n adresseFonction: this.constructor.name + \".\" + nom,\n idClient: client.idCompte,\n fOriginale: original,\n args: args[0],\n ceciOriginal: this,\n });\n }\n }\n catch (e) {\n console.error(`Erreur: ${e}`);\n throw e;\n }\n };\n }\n else {\n throw new Error(\"L'objet décoré n'est pas une fonction\");\n }\n return descripteur;\n};\nexport const cache = new CacheSuivi();\n//# sourceMappingURL=d%C3%A9corateursCache.js.map","import { __decorate } from \"tslib\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { faisRien } from \"@constl/utils-ipa\";\nimport { CLEF_TABLEAU_LICENCES_APPROUVÉES, ID_NUÉE_LICENCES, SCHÉMA_BD_LICENCES, } from \"./const.js\";\nimport { கிளி, } from \"@lassi-js/kili\";\nimport EventEmitter from \"events\";\nimport { mandatairifier } from \"./mandataire/index.js\";\n// https://github.com/github/choosealicense.com\nexport const conditions = {\n ATTR: \"attribution\",\n ÉGAL: \"partageÉgal\",\n INCL: \"inclureDroitDauteur\",\n CHNG: \"indiquerChangements\",\n SRCE: \"partagerCodeSource\",\n USGR: \"usagereseau\",\n};\nexport const droits = {\n PRTG: \"partager\",\n ADPT: \"adapter\",\n CMRC: \"usageComercial\",\n PRV: \"usagePrivé\",\n BREV: \"usageBrevets\",\n};\nexport const limitations = {\n RSP: \"aucuneResponsabilité\",\n GRNT: \"aucuneGarantie\",\n MRCM: \"marqueCommerce\",\n BREV: \"brevetExclu\",\n SOUS: \"sousLicence\",\n};\nexport const catégories = {\n BD: \"basesDeDonnées\",\n ART: \"artistique\",\n CODE: \"codeInformatique\",\n AUTRE: \"autre\",\n};\nexport const infoLicences = {\n // Licences pour BD\n \"ODbl-1_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.PRV, droits.ADPT],\n conditions: [conditions.ATTR, conditions.ÉGAL, conditions.INCL],\n limitations: [\n limitations.RSP,\n limitations.BREV,\n limitations.MRCM,\n limitations.GRNT,\n ],\n catégorie: catégories.BD,\n },\n \"ODC-BY-1_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.PRV, droits.ADPT],\n conditions: [conditions.ATTR, conditions.INCL],\n limitations: [\n limitations.RSP,\n limitations.GRNT,\n limitations.MRCM,\n limitations.BREV,\n ],\n catégorie: catégories.BD,\n },\n PDDL: {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.PRV],\n conditions: [],\n limitations: [\n limitations.RSP,\n limitations.GRNT,\n limitations.MRCM,\n limitations.BREV,\n ],\n catégorie: catégories.BD,\n },\n \"rvca-open\": {\n droits: [droits.PRV, droits.CMRC, droits.ADPT, droits.PRTG],\n conditions: [conditions.INCL, conditions.ATTR],\n limitations: [limitations.SOUS, limitations.RSP],\n catégorie: catégories.BD,\n spécialisée: true,\n },\n // Licences créatives\n \"CC-BY-SA-4_0\": {\n droits: [droits.PRTG, droits.ADPT, droits.CMRC, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG, conditions.ÉGAL],\n limitations: [\n limitations.RSP,\n limitations.MRCM,\n limitations.BREV,\n limitations.GRNT,\n ],\n catégorie: catégories.ART,\n },\n \"CC-BY-4_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.PRV],\n conditions: [conditions.ATTR, conditions.CHNG],\n limitations: [\n limitations.RSP,\n limitations.MRCM,\n limitations.BREV,\n limitations.GRNT,\n ],\n catégorie: catégories.ART,\n },\n \"CC-0-1_0\": {\n droits: [droits.PRTG, droits.ADPT, droits.CMRC, droits.PRV],\n conditions: [],\n limitations: [\n limitations.RSP,\n limitations.MRCM,\n limitations.BREV,\n limitations.GRNT,\n ],\n catégorie: catégories.ART,\n },\n // Licences code informatique\n \"0bsd\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.PRV],\n conditions: [],\n limitations: [],\n catégorie: catégories.CODE,\n },\n \"afl-3_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.PRV, droits.BREV],\n conditions: [conditions.INCL, conditions.CHNG],\n limitations: [limitations.MRCM, limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"agpl-3_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.CHNG,\n conditions.SRCE,\n conditions.USGR,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"apache-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG],\n limitations: [limitations.MRCM, limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"artistic-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG],\n limitations: [limitations.RSP, limitations.MRCM, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"bsd-2-clause\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"bsd-3-clause-clear\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.BREV, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"bsd-3-clause\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"bsd-4-clause\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"bsl-1_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"cecill-2_1\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV, droits.BREV],\n conditions: [conditions.INCL, conditions.SRCE, conditions.ÉGAL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"ecl-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG],\n limitations: [limitations.BREV, limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"epl-1_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.BREV, droits.PRV],\n conditions: [conditions.SRCE, conditions.INCL, conditions.ÉGAL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"epl-2_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.BREV, droits.PRV],\n conditions: [conditions.SRCE, conditions.INCL, conditions.ÉGAL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"eupl-1_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.SRCE,\n conditions.CHNG,\n conditions.USGR,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.MRCM, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"eupl-1_2\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.SRCE,\n conditions.CHNG,\n conditions.USGR,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.MRCM, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"gpl-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.CHNG,\n conditions.SRCE,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"gpl-3_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRV, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.CHNG,\n conditions.SRCE,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n isc: {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"lgpl-2_1\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.SRCE,\n conditions.CHNG,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"lgpl-3_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.SRCE,\n conditions.CHNG,\n conditions.ÉGAL,\n ],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"lppl-1_3c\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG, conditions.SRCE],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"mit-0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n mit: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"mpl-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.SRCE, conditions.INCL, conditions.ÉGAL],\n limitations: [limitations.RSP, limitations.MRCM, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"ms-pl\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.GRNT, limitations.MRCM],\n catégorie: catégories.CODE,\n },\n \"ms-rl\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.SRCE, conditions.INCL, conditions.ÉGAL],\n limitations: [limitations.GRNT, limitations.MRCM],\n catégorie: catégories.CODE,\n },\n \"mulanpsl-2_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.MRCM, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n ncsa: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"osl-3_0\": {\n droits: [droits.CMRC, droits.PRTG, droits.ADPT, droits.BREV, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.SRCE,\n conditions.CHNG,\n conditions.USGR,\n conditions.ÉGAL,\n ],\n limitations: [limitations.MRCM, limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n postgresql: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n unlicence: {\n droits: [droits.PRV, droits.CMRC, droits.ADPT, droits.PRTG],\n conditions: [],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n \"upl-1_0\": {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.BREV, droits.PRV],\n conditions: [conditions.INCL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n vim: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [\n conditions.INCL,\n conditions.CHNG,\n conditions.SRCE,\n conditions.ÉGAL,\n ],\n limitations: [],\n catégorie: catégories.CODE,\n },\n wtfpl: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [],\n limitations: [],\n catégorie: catégories.CODE,\n },\n zlib: {\n droits: [droits.CMRC, droits.ADPT, droits.PRTG, droits.PRV],\n conditions: [conditions.INCL, conditions.CHNG],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.CODE,\n },\n // Autres\n \"ofl-1_1\": {\n droits: [droits.PRV, droits.CMRC, droits.ADPT, droits.PRTG],\n conditions: [conditions.INCL, conditions.ÉGAL],\n limitations: [limitations.RSP, limitations.GRNT],\n catégorie: catégories.AUTRE,\n },\n};\nexport const licences = Object.keys(infoLicences);\nexport class Licences {\n client;\n événements;\n prêt;\n perroquet;\n constructor({ client }) {\n this.client = client;\n this.prêt = false;\n this.événements = new EventEmitter();\n this.initialiser();\n }\n async initialiser() {\n if (SCHÉMA_BD_LICENCES &&\n CLEF_TABLEAU_LICENCES_APPROUVÉES &&\n ID_NUÉE_LICENCES) {\n this.perroquet = new கிளி({\n // À faire: arranger types\n விண்மீன்: mandatairifier(this.client),\n அட்டவணை_சாபி: CLEF_TABLEAU_LICENCES_APPROUVÉES,\n குழு_அடையாளம்: ID_NUÉE_LICENCES,\n வார்ப்புரு: SCHÉMA_BD_LICENCES,\n });\n }\n this.prêt = true;\n this.événements.emit(\"prêt\");\n }\n async attendrePrêt() {\n if (this.prêt)\n return;\n return new Promise((résoudre) => {\n const fFinale = () => {\n résoudre();\n this.événements.off(\"prêt\", fFinale);\n };\n this.événements.on(\"prêt\", fFinale);\n });\n }\n async suivreLicences({ f, }) {\n await f(infoLicences);\n await this.attendrePrêt();\n if (this.perroquet) {\n const fFinale = async (licences) => {\n return await f(Object.fromEntries(licences.map((l) => [l.code, l])));\n };\n return await this.perroquet.உறுப்படிகளை_கேள்ளு({\n செ: fFinale,\n பரிந்துரைகள்: \"எனது\",\n });\n }\n // Pour l'instant. Plus tard, on pourra le connecter avec une nuée Kili\n return faisRien;\n }\n async suggérerLicence({ code, infoLicence, }) {\n await this.attendrePrêt();\n if (this.perroquet) {\n await this.perroquet.பரிந்துரையு({\n பரிந்துரை: {\n code,\n ...infoLicence,\n },\n });\n }\n }\n async effacerSuggestionLicence({ idÉlément, }) {\n await this.attendrePrêt();\n if (this.perroquet) {\n await this.perroquet.பரிந்துரையை_நீக்கு({ அடையாளம்: idÉlément });\n }\n }\n async suivreSuggestionsLicences({ f, }) {\n await this.attendrePrêt();\n if (this.perroquet) {\n return await this.perroquet.பரிந்துரைகளை_கேள்ளு({ செ: f });\n }\n return { fOublier: faisRien, fChangerProfondeur: faisRien };\n }\n async approuverLicence({ suggestion, }) {\n await this.attendrePrêt();\n if (this.perroquet) {\n await this.perroquet.அங்கீகரி({ பரிந்துரை: suggestion });\n }\n }\n}\n__decorate([\n cacheSuivi\n], Licences.prototype, \"suivreLicences\", null);\n//# sourceMappingURL=licences.js.map","import { idcValide } from \"@constl/utils-ipa\";\nimport { isValidAddress } from \"@orbitdb/core\";\nimport { EventEmitter } from \"events\";\nimport { CID } from \"multiformats\";\nexport const cidEtFichierValide = (val) => {\n let cid;\n let fichier;\n try {\n [cid, fichier] = val.split(\"/\");\n }\n catch {\n return false;\n }\n if (!fichier)\n return false;\n if (!idcValide(cid))\n return false;\n return { cid, fichier };\n};\nexport class Épingles {\n client;\n requêtes;\n fsOublier;\n événements;\n constructor({ client }) {\n this.client = client;\n this.requêtes = [];\n this.fsOublier = {};\n this.événements = new EventEmitter();\n }\n async épinglerBd({ id, récursif = false, fichiers = true, }) {\n if (await this.directementÉpinglée({ id }))\n return;\n await this._épingler({ id, récursif, fichiers });\n }\n async désépinglerBd({ id }) {\n await Promise.all(this.requêtes\n .filter((r) => r.id === id)\n .map(async (r) => await r.fOublier()));\n const dépendants = this.requêtes.filter((r) => r.parent === id);\n this.requêtes = this.requêtes.filter((r) => r.id !== id);\n this.requêtes = this.requêtes.filter((r) => r.parent !== id);\n await Promise.all(dépendants.map(async (d) => {\n if (!this.requêtes.filter((r) => r.id === d.id && r.parent !== id).length) {\n await this.désépinglerBd({ id: d.id });\n }\n }));\n this.événements.emit(\"changement épingles\");\n }\n async épinglée({ id }) {\n return this.requêtes.some((r) => r.id === id);\n }\n async épingléeParParent({ id, parent, }) {\n return this.requêtes.some((r) => r.id === id && r.parent === parent);\n }\n async directementÉpinglée({ id }) {\n return await this.épingléeParParent({ id });\n }\n async épingles() {\n return new Set(this.requêtes.map((r) => r.id));\n }\n async suivreÉpingles({ f, }) {\n const fFinale = async () => {\n const épingles = await this.épingles();\n return await f(épingles);\n };\n this.événements.on(\"changement épingles\", fFinale);\n return async () => {\n this.événements.off(\"changement épingles\", fFinale);\n };\n }\n async _épingler({ id, récursif, fichiers, parent, }) {\n if (await this.épingléeParParent({ id, parent }))\n return;\n const { bd, fOublier } = await this.client.ouvrirBd({ id });\n this.requêtes.push({ id, parent, fOublier });\n this.événements.emit(\"changement épingles\");\n if (récursif) {\n const fSuivre = async (vals) => {\n // Cette fonction détectera les éléments d'une liste ou d'un dictionnaire\n // (à un niveau de profondeur) qui représentent une adresse de BD Orbit.\n let l_vals = [];\n if (typeof vals === \"object\") {\n l_vals = Object.values(vals).filter((v) => typeof v === \"string\");\n l_vals.push(...Object.keys(vals).filter((v) => typeof v === \"string\"));\n }\n else if (Array.isArray(vals)) {\n l_vals = vals;\n }\n else if (typeof vals === \"string\") {\n l_vals = [vals];\n }\n const idsOrbite = l_vals.filter((v) => isValidAddress(v));\n if (fichiers) {\n // Épingler les fichiers si nécessaire\n const cids = l_vals.filter((v) => cidEtFichierValide(v) && !idsOrbite.includes(v));\n const { sfip } = await this.client.attendreSfipEtOrbite();\n cids.forEach(async (id_) => {\n for await (const _ of sfip.pins.add(CID.parse(id_.split(\"/\")[0]))) {\n // rien à faire... assurer que ceci ne bloque pas tout le programme en attendant de trouver le contenu sur le réseau SFIP !\n }\n const fOublier_ = async () => {\n // rm par contre peut être async\n try {\n await sfip.pins.rm(CID.parse(id_));\n }\n catch {\n // Ignorer erreur si id_ n'était pas épinglé sur SFIP\n }\n };\n this.requêtes.push({ id: id_, parent: id, fOublier: fOublier_ });\n this.événements.emit(\"changement épingles\");\n });\n }\n await Promise.all(idsOrbite.map(async (id_) => await this._épingler({ id: id_, récursif, fichiers, parent: id })));\n };\n if (bd.type === \"keyvalue\") {\n const fOublierBd = await this.client.suivreBdDic({\n id,\n f: fSuivre,\n });\n this.fsOublier[id] = fOublierBd;\n }\n else if (bd.type === \"ordered-keyvalue\") {\n const fOublierBd = await this.client.suivreBdDicOrdonnée({\n id,\n f: fSuivre,\n });\n this.fsOublier[id] = fOublierBd;\n }\n else if (bd.type === \"set\") {\n const fOublierBd = await this.client.suivreBdListe({ id, f: fSuivre });\n this.fsOublier[id] = fOublierBd;\n }\n }\n }\n async toutDésépingler() {\n const épingles = await this.épingles();\n await Promise.all([...épingles].map(async (id) => {\n await this.désépinglerBd({ id });\n }));\n }\n async fermer() {\n await Promise.all(Object.values(this.fsOublier).map((f) => f()));\n }\n}\n//# sourceMappingURL=epingles.js.map","export const schémaStructureBdNoms = {\n type: \"object\",\n additionalProperties: {\n type: \"string\",\n },\n required: [],\n};\nexport const schémaStructureBdMétadonnées = {\n type: \"object\",\n additionalProperties: true,\n required: [],\n};\n//# sourceMappingURL=types.js.map","import { __decorate } from \"tslib\";\nimport { schémaStructureBdCompte, } from \"./client.js\";\nimport { suivreBdDeFonction } from \"@constl/utils-ipa\";\nimport { cacheSuivi } from \"./décorateursCache.js\";\nimport { faisRien, ignorerNonDéfinis } from \"@constl/utils-ipa\";\nexport class ComposanteClient {\n client;\n clef;\n typeBd;\n constructor({ client, clef, typeBd, }) {\n this.client = client;\n this.clef = clef;\n this.typeBd = typeBd;\n }\n async obtIdBd() {\n const { idCompte } = await this.client.attendreInitialisée();\n const idBd = await this.client.obtIdBd({\n nom: this.clef,\n racine: idCompte,\n type: this.typeBd,\n });\n if (!idBd)\n throw new Error(\"Mal initialisé\");\n return idBd;\n }\n}\nexport class ComposanteClientDic extends ComposanteClient {\n schémaBdPrincipale;\n constructor({ client, clef, schémaBdPrincipale, }) {\n super({\n client,\n clef,\n typeBd: \"keyvalue\",\n });\n this.schémaBdPrincipale = schémaBdPrincipale;\n }\n async obtBd() {\n const id = await this.obtIdBd();\n return await this.client.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: this.schémaBdPrincipale,\n });\n }\n async suivreBdPrincipale({ idCompte, f, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.suivreIdBd({ f: fSuivreRacine, idCompte });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBdDic({\n id,\n schéma: this.schémaBdPrincipale,\n f: fSuivreBd,\n });\n },\n });\n }\n async suivreSousBdDic({ idCompte, clef, schéma, f, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.suivreIdBd({ f: fSuivreRacine, idCompte });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBdDicDeClef({\n id,\n clef,\n schéma,\n f: fSuivreBd,\n });\n },\n });\n }\n async suivreSousBdListe({ idCompte, clef, schéma, f, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.suivreIdBd({ f: fSuivreRacine, idCompte });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBdListeDeClef({\n id,\n clef: clef,\n f: fSuivreBd,\n schéma,\n renvoyerValeur: true,\n });\n },\n });\n }\n async suivreIdBd({ f, idCompte, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n if (idCompte) {\n await fSuivreRacine(idCompte);\n return faisRien;\n }\n else {\n return await this.client.suivreIdCompte({ f: fSuivreRacine });\n }\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBd({\n id,\n type: \"keyvalue\",\n f: async (bd) => {\n const idBd = await this.client.obtIdBd({\n nom: this.clef,\n racine: bd,\n type: \"keyvalue\",\n });\n return await fSuivreBd(idBd);\n },\n });\n },\n });\n }\n}\n__decorate([\n cacheSuivi\n], ComposanteClientDic.prototype, \"suivreBdPrincipale\", null);\n__decorate([\n cacheSuivi\n], ComposanteClientDic.prototype, \"suivreSousBdDic\", null);\n__decorate([\n cacheSuivi\n], ComposanteClientDic.prototype, \"suivreSousBdListe\", null);\n__decorate([\n cacheSuivi\n], ComposanteClientDic.prototype, \"suivreIdBd\", null);\nexport class ComposanteClientListe extends ComposanteClient {\n schémaBdPrincipale;\n constructor({ client, clef, schémaBdPrincipale, }) {\n super({\n client,\n clef,\n typeBd: \"set\",\n });\n this.schémaBdPrincipale = schémaBdPrincipale;\n }\n async obtBd() {\n const id = await this.obtIdBd();\n return await this.client.ouvrirBdTypée({\n id,\n type: \"set\",\n schéma: this.schémaBdPrincipale,\n });\n }\n async suivreBdPrincipale({ idCompte, f, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.suivreIdBd({ f: fSuivreRacine, idCompte });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBdListe({\n id,\n f: fSuivreBd,\n schéma: this.schémaBdPrincipale,\n renvoyerValeur: true,\n });\n },\n });\n }\n async suivreIdBd({ f, idCompte, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n if (idCompte) {\n await fSuivreRacine(idCompte);\n return faisRien;\n }\n else {\n return await this.client.suivreIdCompte({ f: fSuivreRacine });\n }\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBd({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdCompte,\n f: async () => {\n const idBd = await this.client.obtIdBd({\n nom: this.clef,\n racine: id,\n type: \"set\",\n });\n return await fSuivreBd(idBd);\n },\n });\n },\n });\n }\n}\n__decorate([\n cacheSuivi\n], ComposanteClientListe.prototype, \"suivreBdPrincipale\", null);\n__decorate([\n cacheSuivi\n], ComposanteClientListe.prototype, \"suivreIdBd\", null);\n//# sourceMappingURL=composanteClient.js.map","import { __decorate } from \"tslib\";\nimport { schémaStructureBdNoms, } from \"./types.js\";\nimport { ignorerNonDéfinis } from \"@constl/utils-ipa\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { ComposanteClientDic } from \"./composanteClient.js\";\nimport { suivreBdDeFonction } from \"@constl/utils-ipa\";\nexport const MAX_TAILLE_IMAGE = 500 * 1000; // 500 kilooctets\nexport const MAX_TAILLE_IMAGE_VIS = 1500 * 1000; // 1,5 megaoctets\nconst schémaStructureBdProfil = {\n type: \"object\",\n properties: {\n initialisé: {\n type: \"boolean\",\n nullable: true,\n },\n image: {\n type: \"string\",\n nullable: true,\n },\n contacts: {\n type: \"string\",\n nullable: true,\n },\n noms: {\n type: \"string\",\n nullable: true,\n },\n },\n required: [],\n};\nconst schémaContactProfil = {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n contact: { type: \"string\" },\n },\n required: [\"contact\", \"type\"],\n};\nexport class Profil extends ComposanteClientDic {\n constructor({ client }) {\n super({\n client,\n clef: \"profil\",\n schémaBdPrincipale: schémaStructureBdProfil,\n });\n }\n async épingler() {\n const idBdProfil = await this.obtIdBd();\n await this.client.épingles.épinglerBd({\n id: idBdProfil,\n récursif: true,\n fichiers: true,\n });\n }\n async initialiser() {\n const idBdProfil = await this.obtIdBd();\n const { bd: bdProfil, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdProfil,\n type: \"keyvalue\",\n schéma: schémaStructureBdProfil,\n });\n await bdProfil.set(\"initialisé\", true);\n await fOublier();\n }\n async suivreInitialisé({ f, idCompte, }) {\n return await this.suivreBdPrincipale({\n idCompte,\n f: async (profil) => await f(!!profil.initialisé),\n });\n }\n async suivreCourriel({ f, idCompte, }) {\n return await this.suivreContacts({\n idCompte,\n f: async (contacts) => await f(contacts.find((c) => c.type == \"courriel\")?.contact || null),\n });\n }\n async sauvegarderCourriel({ courriel }) {\n await this.sauvegarderContact({ type: \"courriel\", contact: courriel });\n }\n async effacerCourriel() {\n await this.effacerContact({ type: \"courriel\" });\n }\n async suivreContacts({ f, idCompte, }) {\n return await this.suivreSousBdListe({\n idCompte,\n clef: \"contacts\",\n schéma: schémaContactProfil,\n f,\n });\n }\n async sauvegarderContact({ type, contact, }) {\n const idBdProfil = await this.obtIdBd();\n const idBdContacts = await this.client.obtIdBd({\n nom: \"contacts\",\n racine: idBdProfil,\n type: \"set\",\n });\n if (!idBdContacts) {\n throw new Error(`Permission de modification refusée pour BD ${idBdProfil}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdContacts,\n type: \"set\",\n schéma: schémaContactProfil,\n });\n await bd.add({ type, contact });\n await fOublier();\n }\n async effacerContact({ type, contact, }) {\n const idBdProfil = await this.obtIdBd();\n const idBdContacts = await this.client.obtIdBd({\n nom: \"contacts\",\n racine: idBdProfil,\n type: \"set\",\n });\n if (!idBdContacts) {\n throw new Error(`Permission de modification refusée pour BD ${idBdProfil}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdContacts,\n type: \"set\",\n schéma: schémaContactProfil,\n });\n const tous = await bd.all();\n const àEffacer = tous.filter((x) => x.value.type === type &&\n (contact === undefined || x.value.contact === contact));\n await Promise.all(àEffacer.map(async (c) => await bd.del(c.value)));\n await fOublier();\n }\n async suivreNoms({ f, idCompte, }) {\n return await this.suivreSousBdDic({\n idCompte,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async sauvegarderNom({ langue, nom, }) {\n return await this.sauvegarderNoms({ noms: { [langue]: nom } });\n }\n async sauvegarderNoms({ noms, }) {\n const idBdProfil = await this.obtIdBd();\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idBdProfil,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour BD ${idBdProfil}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const [langue, nom] of Object.entries(noms)) {\n await bd.set(langue, nom);\n }\n await fOublier();\n }\n async effacerNom({ langue }) {\n const idBdProfil = await this.obtIdBd();\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idBdProfil,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour BD ${idBdProfil}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bd.del(langue);\n await fOublier();\n }\n async sauvegarderImage({ image, }) {\n if (image.contenu.byteLength > MAX_TAILLE_IMAGE) {\n throw new Error(\"Taille maximale excédée\");\n }\n const idImage = await this.client.ajouterÀSFIP(image);\n const { bd, fOublier } = await this.obtBd();\n await bd.set(\"image\", idImage);\n await fOublier();\n }\n async effacerImage() {\n const { bd, fOublier } = await this.obtBd();\n await bd.del(\"image\");\n await fOublier();\n }\n async suivreImage({ f, idCompte, }) {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.suivreIdBd({ f: fSuivreRacine, idCompte });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({ id, fSuivreBd }) => {\n return await this.client.suivreBd({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdProfil,\n f: async (bd) => {\n const idImage = await bd.get(\"image\");\n if (!idImage) {\n return await fSuivreBd(null);\n }\n else {\n const image = await this.client.obtFichierSFIP({\n id: idImage,\n max: MAX_TAILLE_IMAGE_VIS,\n });\n return await fSuivreBd(image);\n }\n },\n });\n },\n });\n }\n}\n__decorate([\n cacheSuivi\n], Profil.prototype, \"suivreCourriel\", null);\n__decorate([\n cacheSuivi\n], Profil.prototype, \"suivreContacts\", null);\n__decorate([\n cacheSuivi\n], Profil.prototype, \"suivreNoms\", null);\n__decorate([\n cacheSuivi\n], Profil.prototype, \"suivreImage\", null);\n//# sourceMappingURL=profil.js.map","/**\n * @packageDocumentation\n *\n * Collects all `Uint8Array` values from an (async)iterable and returns them as a single `Uint8Array`.\n *\n * @example\n *\n * ```javascript\n * import toBuffer from 'it-to-buffer'\n *\n * // This can also be an iterator, generator, etc\n * const values = [Buffer.from([0, 1]), Buffer.from([2, 3])]\n *\n * const result = toBuffer(values)\n *\n * console.info(result) // Buffer[0, 1, 2, 3]\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import toBuffer from 'it-to-buffer'\n *\n * const values = async function * () {\n * yield Buffer.from([0, 1])\n * yield Buffer.from([2, 3])\n * }\n *\n * const result = await toBuffer(values())\n *\n * console.info(result) // Buffer[0, 1, 2, 3]\n * ```\n */\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction toBuffer(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n let buffer = new Uint8Array(0);\n for await (const buf of source) {\n buffer = uint8ArrayConcat([buffer, buf], buffer.length + buf.length);\n }\n return buffer;\n })();\n }\n const bufs = [];\n let length = 0;\n for (const buf of source) {\n bufs.push(buf);\n length += buf.byteLength;\n }\n return uint8ArrayConcat(bufs, length);\n}\nexport default toBuffer;\n//# sourceMappingURL=index.js.map","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { __decorate } from \"tslib\";\nimport { utils, writeFile, write as writeXLSX } from \"xlsx\";\nimport toBuffer from \"it-to-buffer\";\nimport path from \"path\";\nimport { isBrowser, isElectronMain, isNode, isWebWorker } from \"wherearewe\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { attendreStabilité, suivreBdDeFonction, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { schémaStructureBdMétadonnées, schémaStructureBdNoms, } from \"./types.js\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nimport { traduire, zipper, uneFois, faisRien, ignorerNonDéfinis, } from \"@constl/utils-ipa\";\nimport { ComposanteClientListe } from \"./composanteClient.js\";\nimport pkg from \"file-saver\";\nconst { saveAs } = pkg;\nconst schémaStructureBdBd = {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n métadonnées: { type: \"string\", nullable: true },\n licence: { type: \"string\" },\n licenceContenu: { type: \"string\", nullable: true },\n image: { type: \"string\", nullable: true },\n noms: { type: \"string\" },\n descriptions: { type: \"string\" },\n tableaux: { type: \"string\" },\n motsClefs: { type: \"string\" },\n nuées: { type: \"string\" },\n statut: {\n type: \"object\",\n properties: {\n statut: { type: \"string\" },\n idNouvelle: { type: \"string\", nullable: true },\n },\n required: [\"statut\"],\n },\n copiéDe: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n },\n required: [\"id\"],\n },\n },\n required: [\n \"type\",\n \"licence\",\n \"noms\",\n \"descriptions\",\n \"tableaux\",\n \"motsClefs\",\n \"nuées\",\n \"statut\",\n \"copiéDe\",\n ],\n};\nexport const schémaInfoTableau = {\n type: \"object\",\n properties: {\n clef: { type: \"string\" },\n },\n required: [\"clef\"],\n};\nexport const schémaBdTableauxDeBd = {\n type: \"object\",\n additionalProperties: schémaInfoTableau,\n required: [],\n};\nconst schémaBdPrincipale = { type: \"string\" };\nconst schémaStructureBdMotsClefs = { type: \"string\" };\nconst schémaStructureBdNuées = { type: \"string\" };\nexport const MAX_TAILLE_IMAGE = 500 * 1000; // 500 kilooctets\nexport const MAX_TAILLE_IMAGE_VIS = 1500 * 1000; // 1,5 megaoctets\nexport class BDs extends ComposanteClientListe {\n verrouBdUnique;\n constructor({ client }) {\n super({ client, clef: \"bds\", schémaBdPrincipale });\n this.verrouBdUnique = new Semaphore();\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async suivreBds({ f, idCompte, }) {\n return await this.suivreBdPrincipale({ idCompte, f });\n }\n async créerBd({ licence, licenceContenu, ajouter = true, }) {\n const idBdBd = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n address: undefined,\n write: await this.client.obtIdCompte(),\n },\n });\n const { bd: bdBD, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n await bdBD.set(\"type\", \"bd\");\n await bdBD.set(\"licence\", licence);\n if (licenceContenu)\n await bdBD.set(\"licenceContenu\", licenceContenu);\n const accès = bdBD.access;\n const optionsAccès = { address: accès.address };\n const idBdMétadonnées = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdBD.set(\"métadonnées\", idBdMétadonnées);\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdBD.set(\"noms\", idBdNoms);\n const idBdDescr = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdBD.set(\"descriptions\", idBdDescr);\n const idBdTableaux = await this.client.créerBdIndépendante({\n type: \"ordered-keyvalue\",\n optionsAccès,\n });\n await bdBD.set(\"tableaux\", idBdTableaux);\n const idBdMotsClefs = await this.client.créerBdIndépendante({\n type: \"set\",\n optionsAccès,\n });\n await bdBD.set(\"motsClefs\", idBdMotsClefs);\n const idBdNuées = await this.client.créerBdIndépendante({\n type: \"set\",\n optionsAccès,\n });\n await bdBD.set(\"nuées\", idBdNuées);\n await bdBD.set(\"statut\", { statut: \"active\" });\n if (ajouter) {\n const { bd: bdRacine, fOublier: fOublierRacine } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bdRacine.add(idBdBd);\n fOublierRacine();\n }\n await fOublier();\n return idBdBd;\n }\n async ajouterÀMesBds({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bd.add(idBd);\n await fOublier();\n }\n async enleverDeMesBds({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bd.del(idBd);\n await fOublier();\n }\n async copierBd({ idBd, ajouterÀMesBds = true, copierDonnées = true, }) {\n const { bd: bdBase, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n const licence = await bdBase.get(\"licence\");\n const licenceContenu = await bdBase.get(\"licenceContenu\");\n if (!licence)\n throw new Error(`Aucune licence trouvée sur la BD source ${idBd}.`);\n const idNouvelleBd = await this.créerBd({\n licence,\n licenceContenu,\n ajouter: ajouterÀMesBds,\n });\n const { bd: nouvelleBd, fOublier: fOublierNouvelle } = await this.client.ouvrirBdTypée({\n id: idNouvelleBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n const idBdMétadonnées = await bdBase.get(\"métadonnées\");\n if (idBdMétadonnées) {\n const { bd: bdMétadonnées, fOublier: fOublierBdNoms } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n const métadonnées = await bdMétadonnées.allAsJSON();\n await fOublierBdNoms();\n await this.sauvegarderMétadonnéesBd({ idBd: idNouvelleBd, métadonnées });\n }\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierBdNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await fOublierBdNoms();\n await this.sauvegarderNomsBd({ idBd: idNouvelleBd, noms });\n }\n const idBdDescr = await bdBase.get(\"descriptions\");\n if (idBdDescr) {\n const { bd: bdDescr, fOublier: fOublierBdDescr } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const descriptions = await bdDescr.allAsJSON();\n await fOublierBdDescr();\n await this.sauvegarderDescriptionsBd({\n idBd: idNouvelleBd,\n descriptions,\n });\n }\n const idBdMotsClefs = await bdBase.get(\"motsClefs\");\n if (idBdMotsClefs) {\n const { bd: bdMotsClefs, fOublier: fOublierBdMotsClefs } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaStructureBdMotsClefs,\n });\n const motsClefs = (await bdMotsClefs.all()).map((x) => x.value);\n await fOublierBdMotsClefs();\n await this.ajouterMotsClefsBd({\n idBd: idNouvelleBd,\n idsMotsClefs: motsClefs,\n });\n }\n const idBdNuées = await bdBase.get(\"nuées\");\n if (idBdNuées) {\n const { bd: bdNuées, fOublier: fOublierBdNuées } = await this.client.ouvrirBdTypée({\n id: idBdNuées,\n type: \"set\",\n schéma: schémaStructureBdNuées,\n });\n const nuées = (await bdNuées.all()).map((x) => x.value);\n await fOublierBdNuées();\n await this.rejoindreNuées({\n idBd: idNouvelleBd,\n idsNuées: nuées,\n });\n }\n const idBdTableaux = await bdBase.get(\"tableaux\");\n const idNouvelleBdTableaux = await nouvelleBd.get(\"tableaux\");\n if (!idNouvelleBdTableaux)\n throw new Error(\"Erreur d'initialisation.\");\n const { bd: nouvelleBdTableaux, fOublier: fOublierNouvelleTableaux } = await this.client.ouvrirBdTypée({\n id: idNouvelleBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n if (idBdTableaux) {\n const { bd: bdTableaux, fOublier: fOublierBdTableaux } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const tableaux = await bdTableaux.all();\n await fOublierBdTableaux();\n for (const { key: idTableau, value: tableau } of tableaux) {\n const idNouveauTableau = await this.client.tableaux.copierTableau({\n id: idTableau,\n idBd: idNouvelleBd,\n copierDonnées,\n });\n await nouvelleBdTableaux.set(idNouveauTableau, tableau);\n }\n }\n const statut = (await bdBase.get(\"statut\")) || {\n statut: \"active\",\n };\n await nouvelleBd.set(\"statut\", statut);\n const image = await bdBase.get(\"image\");\n if (image)\n await nouvelleBd.set(\"image\", image);\n await nouvelleBd.set(\"copiéDe\", { id: idBd });\n await Promise.all([\n fOublier(),\n fOublierNouvelleTableaux(),\n fOublierNouvelle(),\n ]);\n return idNouvelleBd;\n }\n async créerBdDeSchéma({ schéma, }) {\n const { tableaux, motsClefs, nuées, licence, licenceContenu, statut } = schéma;\n // On n'ajoutera la BD que lorsqu'elle sera prête\n const idBd = await this.créerBd({\n licence,\n licenceContenu,\n ajouter: false,\n });\n if (motsClefs) {\n await this.ajouterMotsClefsBd({ idBd, idsMotsClefs: motsClefs });\n }\n if (nuées) {\n await this.rejoindreNuées({ idBd, idsNuées: nuées });\n }\n if (statut) {\n await this.changerStatutBd({ idBd, statut });\n }\n for (const tb of tableaux) {\n const { cols, clef: clefTableau } = tb;\n const idTableau = await this.ajouterTableauBd({ idBd, clefTableau });\n for (const c of cols) {\n const { idColonne, idVariable, index, optionnelle } = c;\n await this.client.tableaux.ajouterColonneTableau({\n idTableau,\n idVariable,\n idColonne,\n });\n if (index) {\n await this.client.tableaux.changerColIndex({\n idTableau,\n idColonne,\n val: true,\n });\n }\n if (!optionnelle) {\n const règle = {\n typeRègle: \"existe\",\n détails: {},\n };\n await this.client.tableaux.ajouterRègleTableau({\n idTableau,\n idColonne,\n règle,\n });\n }\n }\n }\n // Maintenant on peut l'annoncer !\n await this.ajouterÀMesBds({ idBd });\n return idBd;\n }\n async suivreParent({ idBd, f, }) {\n return await this.client.suivreBd({\n id: idBd,\n f: async (bd) => {\n const copiéDe = await bd.get(\"copiéDe\");\n await f(copiéDe);\n },\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n }\n async suivreNuéesBd({ idBd, f, }) {\n return await this.client.suivreBdListeDeClef({\n id: idBd,\n clef: \"nuées\",\n schéma: { type: \"string\" },\n f,\n });\n }\n async rechercherBdsParMotsClefs({ motsClefs, f, idCompte, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBds({ f: fSuivreRacine, idCompte });\n };\n const fCondition = async (id, fSuivreCondition) => {\n const fFinaleSuivreCondition = (motsClefsBd) => {\n const état = motsClefs.every((m) => motsClefsBd.includes(m));\n fSuivreCondition(état);\n };\n return await this.suivreMotsClefsBd({\n idBd: id,\n f: fFinaleSuivreCondition,\n });\n };\n return await this.client.suivreBdsSelonCondition({ fListe, fCondition, f });\n }\n async rechercherBdsParNuée({ idNuée, f, idCompte, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBds({ f: fSuivreRacine, idCompte });\n };\n const fCondition = async (id, fSuivreCondition) => {\n const fFinaleSuivreCondition = async (nuéesBd) => {\n fSuivreCondition(!!nuéesBd && nuéesBd.includes(idNuée));\n };\n return await this.suivreNuéesBd({\n idBd: id,\n f: fFinaleSuivreCondition,\n });\n };\n return await this.client.suivreBdsSelonCondition({ fListe, fCondition, f });\n }\n async combinerBds({ idBdBase, idBd2, }) {\n const obtTableaux = async (idBd) => {\n return await uneFois(async (fSuivi) => {\n return await this.suivreTableauxBd({ idBd, f: fSuivi });\n });\n };\n const tableauxBase = await obtTableaux(idBdBase);\n const tableauxBd2 = await obtTableaux(idBd2);\n for (const info of tableauxBd2) {\n const { id: idTableau, clef } = info;\n if (clef) {\n const idTableauBaseCorresp = tableauxBase.find((t) => t.clef === clef)?.id;\n if (idTableauBaseCorresp) {\n await this.client.tableaux.combinerDonnées({\n idTableauBase: idTableauBaseCorresp,\n idTableau2: idTableau,\n });\n }\n }\n }\n }\n async suivreIdTableauParClef({ idBd, clef, f, }) {\n const fFinale = async (tableaux) => {\n const infoTableau = tableaux.find((t) => t.clef === clef);\n await f(infoTableau?.id);\n };\n return await this.suivreTableauxBd({ idBd, f: fFinale });\n }\n async suivreBdUnique({ schéma, idNuéeUnique, f, }) {\n const clefStockageLocal = \"bdUnique: \" + idNuéeUnique;\n const déjàCombinées = new Set();\n const fFinale = async (bds) => {\n let idBd;\n await this.verrouBdUnique.acquire(idNuéeUnique);\n const idBdLocale = await this.client.obtDeStockageLocal({\n clef: clefStockageLocal,\n });\n switch (bds.length) {\n case 0: {\n if (idBdLocale) {\n idBd = idBdLocale;\n }\n else {\n idBd = await this.créerBdDeSchéma({ schéma });\n await this.client.sauvegarderAuStockageLocal({\n clef: clefStockageLocal,\n val: idBd,\n });\n }\n break;\n }\n case 1: {\n idBd = bds[0];\n await this.client.sauvegarderAuStockageLocal({\n clef: clefStockageLocal,\n val: idBd,\n });\n if (idBdLocale && idBd !== idBdLocale) {\n await this.combinerBds({ idBdBase: idBd, idBd2: idBdLocale });\n await this.effacerBd({ idBd: idBdLocale });\n }\n break;\n }\n default: {\n if (idBdLocale)\n bds = [...new Set([...bds, idBdLocale])];\n idBd = bds.sort()[0];\n await this.client.sauvegarderAuStockageLocal({\n clef: clefStockageLocal,\n val: idBd,\n });\n for (const bd of bds.slice(1)) {\n if (déjàCombinées.has(bd))\n continue;\n déjàCombinées.add(bd);\n await this.combinerBds({ idBdBase: idBd, idBd2: bd });\n await this.effacerBd({ idBd: bd });\n }\n break;\n }\n }\n this.verrouBdUnique.release(idNuéeUnique);\n await f(idBd);\n };\n const fOublier = await this.rechercherBdsParNuée({\n idNuée: idNuéeUnique,\n f: fFinale,\n });\n return fOublier;\n }\n async suivreIdTableauParClefDeBdUnique({ schémaBd, idNuéeUnique, clefTableau, f, }) {\n const fRacine = async ({ fSuivreRacine, }) => {\n return await this.suivreBdUnique({\n schéma: schémaBd,\n idNuéeUnique,\n f: fSuivreRacine,\n });\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreIdTableauParClef({\n idBd: id,\n clef: clefTableau,\n f: fSuivreBd,\n });\n };\n return await suivreBdDeFonction({\n fRacine,\n f,\n fSuivre,\n });\n }\n async suivreDonnéesDeTableauUnique({ schémaBd, idNuéeUnique, clefTableau, f, }) {\n const fFinale = async (données) => {\n return await f(données || []);\n };\n const fSuivreDonnéesDeTableau = async ({ id, fSuivreBd, }) => {\n return await this.client.tableaux.suivreDonnées({\n idTableau: id,\n f: fSuivreBd,\n });\n };\n const fSuivreTableau = async ({ fSuivreRacine, }) => {\n return await this.suivreIdTableauParClefDeBdUnique({\n schémaBd,\n idNuéeUnique,\n clefTableau,\n f: async (idTableau) => {\n if (idTableau)\n await fSuivreRacine(idTableau);\n },\n });\n };\n return await suivreBdDeFonction({\n fRacine: fSuivreTableau,\n f: fFinale,\n fSuivre: fSuivreDonnéesDeTableau,\n });\n }\n async ajouterÉlémentÀTableauUnique({ schémaBd, idNuéeUnique, clefTableau, vals, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClefDeBdUnique({\n schémaBd,\n idNuéeUnique,\n clefTableau,\n f: ignorerNonDéfinis(fSuivi),\n });\n });\n return await this.client.tableaux.ajouterÉlément({\n idTableau: idTableau,\n vals,\n });\n }\n async modifierÉlémentDeTableauUnique({ vals, schémaBd, idNuéeUnique, clefTableau, idÉlément, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClefDeBdUnique({\n schémaBd,\n idNuéeUnique,\n clefTableau,\n f: (id) => {\n if (id)\n fSuivi(id);\n },\n });\n }, (x) => !!x);\n return await this.client.tableaux.modifierÉlément({\n idTableau: idTableau,\n vals,\n idÉlément,\n });\n }\n async effacerÉlémentDeTableauUnique({ schémaBd, idNuéeUnique, clefTableau, idÉlément, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClefDeBdUnique({\n schémaBd,\n idNuéeUnique,\n clefTableau,\n f: (id) => {\n if (id)\n fSuivi(id);\n },\n });\n }, (x) => !!x);\n return await this.client.tableaux.effacerÉlément({\n idTableau: idTableau,\n idÉlément,\n });\n }\n async suivreDonnéesDeTableauParClef({ idBd, clefTableau, f, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClef({\n idBd,\n clef: clefTableau,\n f: ignorerNonDéfinis(fSuivi),\n });\n }, (x) => !!x);\n return await this.client.tableaux.suivreDonnées({\n idTableau,\n f,\n });\n }\n async ajouterÉlémentÀTableauParClef({ idBd, clefTableau, vals, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClef({\n idBd,\n clef: clefTableau,\n f: ignorerNonDéfinis(fSuivi),\n });\n });\n return await this.client.tableaux.ajouterÉlément({\n idTableau,\n vals,\n });\n }\n async modifierÉlémentDeTableauParClef({ idBd, clefTableau, idÉlément, vals, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClef({\n idBd,\n clef: clefTableau,\n f: ignorerNonDéfinis(fSuivi),\n });\n });\n return await this.client.tableaux.modifierÉlément({\n idTableau,\n vals,\n idÉlément,\n });\n }\n async effacerÉlémentDeTableauParClef({ idBd, clefTableau, idÉlément, }) {\n const idTableau = await uneFois(async (fSuivi) => {\n return await this.suivreIdTableauParClef({\n idBd,\n clef: clefTableau,\n f: ignorerNonDéfinis(fSuivi),\n });\n });\n this.client.tableaux.effacerÉlément({\n idTableau,\n idÉlément,\n });\n }\n async sauvegarderMétadonnéesBd({ idBd, métadonnées, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n for (const clef in métadonnées) {\n await bdMétadonnées.set(clef, métadonnées[clef]);\n }\n await fOublier();\n }\n async sauvegarderMétadonnéeBd({ idBd, clef, métadonnée, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n await bdMétadonnées.set(clef, métadonnée);\n await fOublier();\n }\n async effacerMétadonnéeBd({ idBd, clef, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n await bdMétadonnées.del(clef);\n await fOublier();\n }\n async suivreMétadonnéesBd({ idBd, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idBd,\n clef: \"métadonnées\",\n schéma: schémaStructureBdMétadonnées,\n f,\n });\n }\n async sauvegarderNomsBd({ idBd, noms, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async sauvegarderNomBd({ idBd, langue, nom, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async effacerNomBd({ idBd, langue, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.del(langue);\n await fOublier();\n }\n async sauvegarderDescriptionsBd({ idBd, descriptions, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in descriptions) {\n await bdDescr.set(lng, descriptions[lng]);\n }\n await fOublier();\n }\n async sauvegarderDescriptionBd({ idBd, langue, description, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.set(langue, description);\n await fOublier();\n }\n async effacerDescriptionBd({ idBd, langue, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idBd,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.del(langue);\n await fOublier();\n }\n async changerLicenceBd({ idBd, licence, }) {\n const { bd: bdBd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n await bdBd.set(\"licence\", licence);\n await fOublier();\n }\n async changerLicenceContenuBd({ idBd, licenceContenu, }) {\n const { bd: bdBd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n if (licenceContenu) {\n await bdBd.set(\"licenceContenu\", licenceContenu);\n }\n else {\n await bdBd.del(\"licenceContenu\");\n }\n await fOublier();\n }\n async ajouterMotsClefsBd({ idBd, idsMotsClefs, }) {\n if (!Array.isArray(idsMotsClefs))\n idsMotsClefs = [idsMotsClefs];\n const idBdMotsClefs = await this.client.obtIdBd({\n nom: \"motsClefs\",\n racine: idBd,\n type: \"set\",\n });\n if (!idBdMotsClefs) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdMotsClefs, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaStructureBdMotsClefs,\n });\n for (const id of idsMotsClefs) {\n const motsClefsExistants = (await bdMotsClefs.all()).map((x) => x.value);\n if (!motsClefsExistants.includes(id))\n await bdMotsClefs.add(id);\n }\n await fOublier();\n }\n async effacerMotClefBd({ idBd, idMotClef, }) {\n const idBdMotsClefs = await this.client.obtIdBd({\n nom: \"motsClefs\",\n racine: idBd,\n type: \"set\",\n });\n if (!idBdMotsClefs) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdMotsClefs, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaStructureBdMotsClefs,\n });\n await bdMotsClefs.del(idMotClef);\n await fOublier();\n }\n async rejoindreNuées({ idBd, idsNuées, }) {\n if (!Array.isArray(idsNuées))\n idsNuées = [idsNuées];\n const idBdNuées = await this.client.obtIdBd({\n nom: \"nuées\",\n racine: idBd,\n type: \"set\",\n });\n if (!idBdNuées) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdNuées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNuées,\n type: \"set\",\n schéma: schémaStructureBdNuées,\n });\n for (const id of idsNuées) {\n const nuéesExistantes = (await bdNuées.all()).map((x) => x.value);\n if (!nuéesExistantes.includes(id))\n await bdNuées.add(id);\n }\n await fOublier();\n }\n async quitterNuée({ idBd, idNuée, }) {\n const idBdNuées = await this.client.obtIdBd({\n nom: \"nuée\",\n racine: idBd,\n type: \"set\",\n });\n if (!idBdNuées) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdNuées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNuées,\n type: \"set\",\n schéma: schémaStructureBdNuées,\n });\n await bdNuées.del(idNuée);\n await fOublier();\n }\n async ajouterTableauBd({ idBd, clefTableau, }) {\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idBd,\n type: \"ordered-keyvalue\",\n });\n if (!idBdTableaux) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdTableaux, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n clefTableau = clefTableau || uuidv4();\n const idTableau = await this.client.tableaux.créerTableau({ idBd });\n await bdTableaux.set(idTableau, {\n clef: clefTableau,\n });\n await fOublier();\n return idTableau;\n }\n async effacerTableauBd({ idBd, idTableau, }) {\n // D'abord effacer l'entrée dans notre liste de tableaux\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idBd,\n type: \"ordered-keyvalue\",\n });\n if (!idBdTableaux) {\n throw new Error(`Permission de modification refusée pour BD ${idBd}.`);\n }\n const { bd: bdTableaux, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n await bdTableaux.del(idTableau);\n await fOublier();\n // Enfin, effacer les données et le tableau lui-même\n await this.client.tableaux.effacerTableau({ idTableau });\n }\n async spécifierClefTableau({ idBd, idTableau, clef, }) {\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idBd,\n type: \"ordered-keyvalue\",\n });\n if (!idBdTableaux)\n throw new Error(\"Id Bd Tableau non obtenable.\");\n const { bd: bdTableaux, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const infoExistante = await bdTableaux.get(idTableau);\n if (infoExistante) {\n infoExistante.value.clef = clef;\n bdTableaux.set(idTableau, infoExistante.value);\n }\n await fOublier();\n }\n async changerStatutBd({ idBd, statut, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n bd.set(\"statut\", statut);\n await fOublier();\n }\n async suivreStatutBd({ idBd, f, }) {\n return await this.client.suivreBdDic({\n id: idBd,\n schéma: schémaStructureBdBd,\n f: async (x) => {\n if (x[\"statut\"])\n return await f(x[\"statut\"]);\n },\n });\n }\n async marquerObsolète({ idBd, idNouvelle, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n bd.set(\"statut\", { statut: \"obsolète\", idNouvelle });\n await fOublier();\n }\n async marquerActive({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n bd.set(\"statut\", { statut: \"active\" });\n await fOublier();\n }\n async marquerJouet({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n bd.set(\"statut\", { statut: \"jouet\" });\n await fOublier();\n }\n async marquerInterne({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n bd.set(\"statut\", { statut: \"interne\" });\n await fOublier();\n }\n async suivreLicenceBd({ idBd, f, }) {\n return await this.client.suivreBd({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n f: async (bd) => {\n const licence = await bd.get(\"licence\");\n if (licence)\n await f(licence);\n },\n });\n }\n async suivreLicenceContenuBd({ idBd, f, }) {\n return await this.client.suivreBd({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n f: async (bd) => {\n const licenceContenu = await bd.get(\"licenceContenu\");\n await f(licenceContenu);\n },\n });\n }\n async inviterAuteur({ idBd, idCompteAuteur, rôle, }) {\n await this.client.donnerAccès({ idBd, identité: idCompteAuteur, rôle });\n }\n async sauvegarderImage({ idBd, image, }) {\n if (image.contenu.byteLength > MAX_TAILLE_IMAGE) {\n throw new Error(\"Taille maximale excédée\");\n }\n const idImage = await this.client.ajouterÀSFIP(image);\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n await bd.set(\"image\", idImage);\n await fOublier();\n }\n async effacerImage({ idBd }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n });\n await bd.del(\"image\");\n await fOublier();\n }\n async suivreImage({ idBd, f, }) {\n return await this.client.suivreBd({\n id: idBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdBd,\n f: async (bd) => {\n const idImage = await bd.get(\"image\");\n if (!idImage) {\n await f(null);\n }\n else {\n const image = await this.client.obtFichierSFIP({\n id: idImage,\n max: MAX_TAILLE_IMAGE_VIS,\n });\n await f(image);\n }\n },\n });\n }\n async suivreNomsBd({ idBd, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idBd,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreDescriptionsBd({ idBd, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idBd,\n clef: \"descriptions\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreMotsClefsBd({ idBd, f, }) {\n return await this.client.suivreBdListeDeClef({\n id: idBd,\n clef: \"motsClefs\",\n schéma: { type: \"string\" },\n f,\n });\n }\n async suivreTableauxBd({ idBd, f, }) {\n const fFinale = async (infos) => {\n const tableaux = infos.map((info) => {\n return {\n id: info.key,\n ...info.value,\n };\n });\n await f(tableaux);\n };\n return await this.client.suivreBdDicOrdonnéeDeClef({\n id: idBd,\n clef: \"tableaux\",\n schéma: schémaBdTableauxDeBd,\n f: fFinale,\n });\n }\n async suivreScoreAccèsBd({ idBd, f, }) {\n // À faire\n f(Number.parseInt(idBd));\n return faisRien;\n }\n async suivreScoreCouvertureBd({ idBd, f, }) {\n const fFinale = async (branches) => {\n const numérateur = branches.reduce((a, b) => a + b.numérateur, 0);\n const dénominateur = branches.reduce((a, b) => a + b.dénominateur, 0);\n await f(dénominateur === 0 ? undefined : numérateur / dénominateur);\n };\n const fBranche = async (idTableau, f) => {\n const info = {};\n const fFinaleBranche = async () => {\n const { cols, règles } = info;\n if (cols !== undefined && règles !== undefined) {\n const colsÉligibles = cols.filter((c) => c.catégorie &&\n [\"numérique\", \"catégorique\"].includes(c.catégorie.catégorie));\n const dénominateur = colsÉligibles.length;\n const numérateur = colsÉligibles.filter((c) => règles.some((r) => r.règle.règle.typeRègle !== \"catégorie\" && r.colonne === c.id)).length;\n await f({ numérateur, dénominateur });\n }\n };\n const fOublierCols = await this.client.tableaux.suivreColonnesTableau({\n idTableau,\n f: async (cols) => {\n info.cols = cols;\n await fFinaleBranche();\n },\n catégories: true,\n });\n const fOublierRègles = await this.client.tableaux.suivreRègles({\n idTableau,\n f: async (règles) => {\n info.règles = règles;\n await fFinaleBranche();\n },\n });\n return async () => {\n await fOublierCols();\n await fOublierRègles();\n };\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreTableauxBd({\n idBd,\n f: (tableaux) => fSuivreRacine(tableaux.map((x) => x.id)),\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreScoreValideBd({ idBd, f, }) {\n const fFinale = async (branches) => {\n const numérateur = branches.reduce((a, b) => a + b.numérateur, 0);\n const dénominateur = branches.reduce((a, b) => a + b.dénominateur, 0);\n await f(dénominateur === 0 ? undefined : numérateur / dénominateur);\n };\n const fBranche = async (idTableau, f) => {\n const info = {};\n const fFinaleBranche = () => {\n const { données, erreurs, cols } = info;\n if (données !== undefined &&\n erreurs !== undefined &&\n cols !== undefined) {\n const colsÉligibles = cols.filter((c) => c.catégorie &&\n [\"numérique\", \"catégorique\"].includes(c.catégorie.catégorie));\n const déjàVus = [];\n const nCellulesÉrronnées = erreurs\n .map((e) => {\n return {\n id: e.id,\n idColonne: e.erreur.règle.colonne,\n };\n })\n .filter((x) => {\n const déjàVu = déjàVus.find((y) => y.id === x.id && y.idColonne === x.idColonne);\n if (déjàVu) {\n return false;\n }\n else {\n déjàVus.push(x);\n return true;\n }\n }).length;\n const dénominateur = données\n .map((d) => colsÉligibles.filter((c) => d.données[c.id] !== undefined)\n .length)\n .reduce((a, b) => a + b, 0);\n const numérateur = dénominateur - nCellulesÉrronnées;\n f({ numérateur, dénominateur });\n }\n };\n const fOublierDonnées = await this.client.tableaux.suivreDonnées({\n idTableau,\n f: (données) => {\n info.données = données;\n fFinaleBranche();\n },\n });\n const fOublierErreurs = await this.client.tableaux.suivreValidDonnées({\n idTableau,\n f: (erreurs) => {\n info.erreurs = erreurs;\n fFinaleBranche();\n },\n });\n const fOublierColonnes = await this.client.tableaux.suivreColonnesTableau({\n idTableau,\n f: (cols) => {\n info.cols = cols;\n fFinaleBranche();\n },\n catégories: true,\n });\n return async () => {\n await fOublierDonnées();\n await fOublierErreurs();\n await fOublierColonnes();\n };\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreTableauxBd({\n idBd,\n f: (tableaux) => fSuivreRacine(tableaux.map((t) => t.id)),\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreQualitéBd({ idBd, f, }) {\n const info = {};\n const fFinale = async () => {\n const { accès, couverture, valide, licence } = info;\n const score = {\n // Score impitoyable de 0 pour BDs sans licence\n total: licence\n ? ((accès || 0) + (couverture || 0) + (valide || 0)) / 3\n : 0,\n accès,\n couverture,\n valide,\n licence,\n };\n await f(score);\n };\n const oublierAccès = await this.suivreScoreAccèsBd({\n idBd,\n f: async (accès) => {\n info.accès = accès;\n await fFinale();\n },\n });\n const oublierCouverture = await this.suivreScoreCouvertureBd({\n idBd,\n f: async (couverture) => {\n info.couverture = couverture;\n await fFinale();\n },\n });\n const oublierValide = await this.suivreScoreValideBd({\n idBd,\n f: async (valide) => {\n info.valide = valide;\n await fFinale();\n },\n });\n const oublierLicence = await this.suivreLicenceBd({\n idBd,\n f: async (licence) => {\n info.licence = licence ? 1 : 0;\n await fFinale();\n },\n });\n return async () => {\n await Promise.all([\n oublierAccès,\n oublierCouverture,\n oublierValide,\n oublierLicence,\n ]);\n };\n }\n async suivreVariablesBd({ idBd, f, }) {\n const fFinale = async (variables) => {\n return await f(variables || []);\n };\n const fBranche = async (id, f) => {\n return await this.client.tableaux.suivreVariables({ idTableau: id, f });\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreTableauxBd({\n idBd,\n f: (x) => fSuivreRacine(x.map((x) => x.id)),\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreDonnéesExportation({ idBd, langues, f, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n const { nomsBd, données } = info;\n if (!données)\n return;\n const idCourt = idBd.split(\"/\").pop();\n const nomBd = nomsBd && langues ? traduire(nomsBd, langues) || idCourt : idCourt;\n await f({\n nomBd,\n tableaux: données,\n });\n };\n const fOublierDonnées = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.suivreTableauxBd({ idBd, f: fSuivreRacine });\n },\n f: async (données) => {\n info.données = données;\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.client.tableaux.suivreDonnéesExportation({\n idTableau: id,\n langues,\n f: async (données) => {\n return await fSuivreBranche(données);\n },\n });\n },\n fIdBdDeBranche: (x) => x.id,\n fCode: (x) => x.id,\n });\n fsOublier.push(fOublierDonnées);\n if (langues) {\n const fOublierNomsBd = await this.suivreNomsBd({\n idBd,\n f: async (noms) => {\n info.nomsBd = noms;\n await fFinale();\n },\n });\n fsOublier.push(fOublierNomsBd);\n }\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n }\n async exporterDonnées({ idBd, langues, nomFichier, patience = 500, }) {\n const doc = utils.book_new();\n const données = await uneFois(async (fSuivi) => {\n return await this.suivreDonnéesExportation({\n idBd,\n langues,\n f: fSuivi,\n });\n }, attendreStabilité(patience));\n nomFichier = nomFichier || données.nomBd;\n const fichiersSFIP = new Set();\n for (const tableau of données.tableaux) {\n tableau.fichiersSFIP.forEach((x) => fichiersSFIP.add(x));\n /* Créer le tableau */\n const tableauXLSX = utils.json_to_sheet(tableau.données);\n /* Ajouter la feuille au document. XLSX n'accepte pas les noms de colonne > 31 caractères */\n utils.book_append_sheet(doc, tableauXLSX, tableau.nomTableau.slice(0, 30));\n }\n return { doc, fichiersSFIP, nomFichier };\n }\n async exporterDocumentDonnées({ données, formatDoc, dossier = \"\", inclureFichiersSFIP = true, }) {\n const { doc, fichiersSFIP, nomFichier } = données;\n const conversionsTypes = {\n xls: \"biff8\",\n };\n const bookType = conversionsTypes[formatDoc] || formatDoc;\n // Créer le dossier si nécessaire. Sinon, xlsx n'écrit rien, et ce, sans se plaindre.\n if (!(isBrowser || isWebWorker)) {\n const fs = await import(\"fs\");\n if (!fs.existsSync(dossier)) {\n // Mais juste si on n'est pas dans le navigateur ! Dans le navigateur, ça télécharge sans problème.\n fs.mkdirSync(dossier, { recursive: true });\n }\n }\n if (inclureFichiersSFIP) {\n const fichierDoc = {\n octets: writeXLSX(doc, { bookType, type: \"buffer\" }),\n nom: `${nomFichier}.${formatDoc}`,\n };\n const fichiersDeSFIP = await Promise.all([...fichiersSFIP].map(async (fichier) => {\n return {\n nom: fichier.replace(\"/\", \"-\"),\n octets: await toBuffer(await this.client.obtItérableAsyncSFIP({ id: fichier })),\n };\n }));\n await zipper([fichierDoc], fichiersDeSFIP, path.join(dossier, nomFichier));\n return path.join(dossier, `${nomFichier}.zip`);\n }\n else {\n if (isNode || isElectronMain) {\n writeFile(doc, path.join(dossier, `${nomFichier}.${formatDoc}`), {\n bookType,\n });\n }\n else {\n const document = writeXLSX(doc, {\n bookType,\n type: \"buffer\",\n });\n saveAs(new Blob([new Uint8Array(document)]), `${nomFichier}.${formatDoc}`);\n }\n return path.join(dossier, `${nomFichier}.${formatDoc}`);\n }\n }\n async effacerBd({ idBd }) {\n // D'abord effacer l'entrée dans notre liste de BDs\n const { bd: bdRacine, fOublier } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bdRacine.del(idBd);\n await fOublier();\n // Et puis maintenant aussi effacer les données et la BD elle-même\n for (const clef of [\"noms\", \"descriptions\", \"motsClefs\"]) {\n const idSousBd = await this.client.obtIdBd({\n nom: clef,\n racine: idBd,\n });\n if (idSousBd)\n await this.client.effacerBd({ id: idSousBd });\n }\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idBd,\n type: \"ordered-keyvalue\",\n });\n if (idBdTableaux) {\n const { bd: bdTableaux, fOublier: fOublierTableaux } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const tableaux = Object.keys(bdTableaux.all);\n for (const t of tableaux) {\n await this.client.tableaux.effacerTableau({ idTableau: t });\n }\n fOublierTableaux();\n await this.client.effacerBd({ id: idBdTableaux });\n }\n await this.enleverDeMesBds({ idBd });\n await this.client.effacerBd({ id: idBd });\n }\n}\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreBds\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreParent\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreNu\\u00E9esBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"rechercherBdsParMotsClefs\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"rechercherBdsParNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreIdTableauParClef\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreBdUnique\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreIdTableauParClefDeBdUnique\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreDonn\\u00E9esDeTableauUnique\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreDonn\\u00E9esDeTableauParClef\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreM\\u00E9tadonn\\u00E9esBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreLicenceBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreLicenceContenuBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreImage\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreNomsBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreDescriptionsBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreMotsClefsBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreTableauxBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreScoreAcc\\u00E8sBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreScoreCouvertureBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreScoreValideBd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreQualit\\u00E9Bd\", null);\n__decorate([\n cacheSuivi\n], BDs.prototype, \"suivreVariablesBd\", null);\n//# sourceMappingURL=bds.js.map","import { validerCatégorieVal } from \"@constl/utils-ipa\";\nexport function générerFonctionRègle({ règle, varsÀColonnes, donnéesCatégorie, }) {\n const règleDeLaVariable = règle.règle;\n const { colonne } = règle;\n const { typeRègle } = règleDeLaVariable.règle;\n switch (typeRègle) {\n case \"existe\": {\n return (vals) => {\n const nonValides = vals.filter((v) => v.données[colonne] === undefined);\n return nonValides.map((v) => {\n const { id } = v;\n const erreur = {\n id,\n erreur: { règle },\n };\n return erreur;\n });\n };\n }\n case \"catégorie\": {\n return (vals) => {\n const catégorie = règleDeLaVariable.règle.détails\n .catégorie;\n const nonValides = vals.filter((v) => !validerCatégorieVal({ val: v.données[colonne], catégorie }));\n return nonValides.map((v) => {\n const { id } = v;\n const erreur = {\n id,\n erreur: { règle },\n };\n return erreur;\n });\n };\n }\n case \"bornes\": {\n const règleTypeBornes = règleDeLaVariable;\n let fComp;\n let fOp;\n const { val, op, type: typeBornes } = règleTypeBornes.règle.détails;\n const manquantes = (v1, v2) => {\n return v1 === undefined || v2 === undefined;\n };\n switch (op) {\n case \">\":\n fOp = (v1, v2) => manquantes(v1, v2) || v1 > v2;\n break;\n case \"<\":\n fOp = (v1, v2) => manquantes(v1, v2) || v1 < v2;\n break;\n case \"≥\":\n case \">=\":\n fOp = (v1, v2) => manquantes(v1, v2) || v1 >= v2;\n break;\n case \"≤\":\n case \"<=\":\n fOp = (v1, v2) => manquantes(v1, v2) || v1 <= v2;\n break;\n }\n if (typeBornes === \"fixe\") {\n fComp = (v) => {\n const donnéesCol = v.données[colonne];\n return Array.isArray(donnéesCol)\n ? donnéesCol.every((x) => fOp(x, val))\n : fOp(donnéesCol, val);\n };\n }\n else {\n fComp = (v) => {\n const donnéesCol = v.données[colonne];\n // Vérifier s'il s'agit d'une variable ou d'une colonne et s'ajuster en fonction\n const borne = (typeBornes === \"dynamiqueVariable\"\n ? v.données[varsÀColonnes[val]]\n : v.données[val]);\n return Array.isArray(donnéesCol)\n ? donnéesCol.every((x) => fOp(x, borne))\n : fOp(donnéesCol, borne);\n };\n }\n return (vals) => {\n const nonValides = vals.filter((v) => !validerBorneVal({ val: v, fComp }));\n return nonValides.map((v) => {\n const { id } = v;\n const erreur = {\n id,\n erreur: { règle },\n };\n return erreur;\n });\n };\n }\n case \"valeurCatégorique\": {\n const règleTypeCatégorique = règleDeLaVariable.règle;\n const options = règleTypeCatégorique.détails.type === \"fixe\"\n ? règleTypeCatégorique.détails.options\n : donnéesCatégorie;\n if (!options)\n throw new Error(\"Options non spécifiées\");\n return (vals) => {\n const nonValides = vals.filter((v) => v.données[colonne] !== undefined &&\n !options.includes(v.données[colonne]));\n return nonValides.map((v) => {\n const { id } = v;\n return {\n id,\n colonne,\n erreur: { règle },\n };\n });\n };\n }\n default:\n throw Error(`Catégorie ${typeRègle} inconnue.`);\n }\n}\nconst validerBorneVal = ({ val, fComp, }) => {\n if (Array.isArray(val)) {\n return val.every((v) => fComp(v));\n }\n else {\n return fComp(val);\n }\n};\n//# sourceMappingURL=valid.js.map","export const estSpécificationHoroDatage = (val) => {\n return (!!val &&\n typeof val.système === \"string\" &&\n typeof val.val === \"string\");\n};\nexport class Cholqij {\n lireDate(date) {\n const { système, val } = date;\n switch (système) {\n case \"dateJS\":\n case \"grégorien\": {\n const date_ = new Date(val);\n if (isNaN(date_.valueOf()))\n throw new Error(val);\n return date_;\n }\n default:\n throw new Error(système);\n }\n }\n dateValide(val) {\n if (!estSpécificationHoroDatage(val))\n return false;\n try {\n this.lireDate(val);\n return true;\n }\n catch {\n return false;\n }\n }\n}\nexport const cholqij = new Cholqij();\n//# sourceMappingURL=dates.js.map","import { __decorate } from \"tslib\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { utils } from \"xlsx\";\nimport { schémaStructureBdNoms, } from \"./types.js\";\nimport { uneFois, faisRien, traduire, attendreStabilité, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { générerFonctionRègle, } from \"./valid.js\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { cholqij } from \"./dates.js\";\nimport { isElectronMain, isNode } from \"wherearewe\";\nimport { isValidAddress } from \"@orbitdb/core\";\nimport { cidEtFichierValide } from \"./epingles.js\";\nimport axios from \"axios\";\nimport md5 from \"crypto-js/md5.js\";\nimport Base64 from \"crypto-js/enc-base64.js\";\nconst schémaBdInfoColAvecCatégorie = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n properties: {\n catégorie: {\n type: \"object\",\n nullable: true,\n properties: {\n catégorie: { type: \"string\" },\n type: { type: \"string\" },\n },\n required: [\"catégorie\", \"type\"],\n },\n id: { type: \"string\" },\n variable: {\n type: \"string\",\n },\n index: {\n type: \"boolean\",\n nullable: true,\n },\n },\n required: [\"id\", \"variable\"],\n },\n required: [],\n};\nconst schémaBdDonnéesTableau = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n additionalProperties: true,\n required: [],\n },\n required: [],\n};\nexport const schémaBdRègles = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n properties: {\n colonne: { type: \"string\" },\n source: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n type: { type: \"string\" },\n },\n required: [\"id\", \"type\"],\n },\n règle: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n règle: {\n type: \"object\",\n properties: {\n détails: {\n type: \"object\",\n required: [],\n },\n typeRègle: { type: \"string\" },\n },\n required: [\"détails\", \"typeRègle\"],\n },\n },\n required: [\"id\", \"règle\"],\n },\n },\n required: [\"colonne\", \"règle\", \"source\"],\n },\n required: [],\n};\nexport function élémentsÉgaux(élément1, élément2) {\n const clefs1 = Object.keys(élément1).filter((x) => x !== \"id\");\n const clefs2 = Object.keys(élément2).filter((x) => x !== \"id\");\n if (!clefs1.every((x) => élément1[x] === élément2[x]))\n return false;\n if (!clefs2.every((x) => élément1[x] === élément2[x]))\n return false;\n return true;\n}\nexport function indexÉlémentsÉgaux(élément1, élément2, index) {\n if (!index.every((x) => élément1[x] === élément2[x]))\n return false;\n return true;\n}\nconst schémaStructureBdTableau = {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n noms: { type: \"string\" },\n données: { type: \"string\" },\n colonnes: { type: \"string\" },\n règles: { type: \"string\" },\n },\n required: [\"données\", \"colonnes\", \"noms\", \"règles\", \"type\"],\n};\nexport class Tableaux {\n client;\n constructor({ client }) {\n this.client = client;\n }\n async créerTableau({ idBd }) {\n const optionsAccès = await this.client.obtOpsAccès({ idBd });\n const idBdTableau = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n const { bd: bdTableau, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableau,\n type: \"keyvalue\",\n schéma: schémaStructureBdTableau,\n });\n await bdTableau.set(\"type\", \"tableau\");\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdTableau.set(\"noms\", idBdNoms);\n const idBdDonnées = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdTableau.set(\"données\", idBdDonnées);\n const idBdColonnes = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdTableau.set(\"colonnes\", idBdColonnes);\n const idBdRègles = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdTableau.set(\"règles\", idBdRègles);\n await fOublier();\n return idBdTableau;\n }\n async copierTableau({ id, idBd, copierDonnées = true, }) {\n const { bd: bdBase, fOublier } = await this.client.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdTableau,\n });\n const idNouveauTableau = await this.créerTableau({ idBd });\n const { bd: nouvelleBd, fOublier: fOublierNouvelle } = await this.client.ouvrirBdTypée({\n id: idNouveauTableau,\n type: \"keyvalue\",\n schéma: schémaStructureBdTableau,\n });\n // Copier les noms\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await fOublierNoms();\n await this.sauvegarderNomsTableau({ idTableau: idNouveauTableau, noms });\n }\n // Copier les colonnes\n await this.client.copierContenuBdDic({\n bdBase,\n nouvelleBd,\n clef: \"colonnes\",\n schéma: schémaBdInfoColAvecCatégorie,\n });\n // Copier les règles\n await this.client.copierContenuBdDic({\n bdBase,\n nouvelleBd,\n clef: \"règles\",\n schéma: schémaBdRègles,\n });\n if (copierDonnées) {\n // Copier les données\n await this.client.copierContenuBdDic({\n bdBase,\n nouvelleBd,\n clef: \"données\",\n schéma: schémaBdDonnéesTableau,\n });\n }\n await Promise.all([fOublier(), fOublierNouvelle()]);\n return idNouveauTableau;\n }\n async suivreDifférencesAvecTableau({ idTableau, idTableauRéf, f, }) {\n const info = {};\n const fFinale = async () => {\n if (!info.colonnesTableau || !info.colonnesTableauRéf)\n return;\n const différences = [];\n for (const cRéf of info.colonnesTableauRéf) {\n const cCorresp = info.colonnesTableau.find((c) => c.id === cRéf.id);\n if (cCorresp) {\n if (cCorresp.variable !== cRéf.variable) {\n const dif = {\n type: \"variableColonne\",\n sévère: true,\n idCol: cCorresp.id,\n varColTableau: cCorresp.variable,\n varColTableauLiée: cRéf.variable,\n };\n différences.push(dif);\n }\n if (cCorresp.index !== cRéf.index) {\n const dif = {\n type: \"indexColonne\",\n sévère: true,\n idCol: cCorresp.id,\n colTableauIndexée: !!cCorresp.index,\n };\n différences.push(dif);\n }\n }\n else {\n const dif = {\n type: \"colonneManquante\",\n sévère: true,\n idManquante: cRéf.id,\n };\n différences.push(dif);\n }\n }\n for (const cTableau of info.colonnesTableau) {\n const cLiée = info.colonnesTableauRéf.find((c) => c.id === cTableau.id);\n if (!cLiée) {\n const dif = {\n type: \"colonneSupplémentaire\",\n sévère: false,\n idExtra: cTableau.id,\n };\n différences.push(dif);\n }\n }\n await f(différences);\n };\n const fOublierColonnesTableau = await this.suivreColonnesTableau({\n idTableau,\n f: async (x) => {\n info.colonnesTableau = x;\n await fFinale();\n },\n catégories: false,\n });\n const fOublierColonnesRéf = await this.suivreColonnesTableau({\n idTableau: idTableauRéf,\n f: async (x) => {\n info.colonnesTableauRéf = x;\n await fFinale();\n },\n catégories: false,\n });\n return async () => {\n await Promise.all([fOublierColonnesTableau, fOublierColonnesRéf]);\n };\n }\n async changerColIndex({ idTableau, idColonne, val, }) {\n const idBdColonnes = await this.client.obtIdBd({\n nom: \"colonnes\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdColonnes) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdColonnes, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdColonnes,\n type: \"keyvalue\",\n schéma: schémaBdInfoColAvecCatégorie,\n });\n const éléments = await bdColonnes.all();\n const élémentCol = éléments.find((x) => x.value.id === idColonne);\n // Changer uniquement si la colonne existe et n'était pas déjà sous le même statut que `val`\n if (élémentCol && Boolean(élémentCol.value.index) !== val) {\n const { value } = élémentCol;\n const nouvelÉlément = Object.assign(value, { index: val });\n await bdColonnes.put(idColonne, nouvelÉlément);\n }\n await fOublier();\n }\n async suivreIndex({ idTableau, f, }) {\n const fFinale = async (cols) => {\n const indexes = cols.filter((c) => c.index).map((c) => c.id);\n await f(indexes);\n };\n return await this.suivreColonnesTableau({\n idTableau,\n f: fFinale,\n catégories: false,\n });\n }\n async suivreDonnées({ idTableau, f, clefsSelonVariables = false, }) {\n const info = {};\n const fFinale = async () => {\n const { données, colonnes } = info;\n if (données && colonnes) {\n const donnéesFinales = Object.entries(données).map(([id, élément]) => {\n const données = clefsSelonVariables\n ? Object.keys(élément).reduce((acc, elem) => {\n // Convertir au nom de la variable si souhaité\n const idVar = elem === \"id\" ? \"id\" : colonnes[elem];\n acc[idVar] = élément[elem];\n return acc;\n }, {})\n : élément;\n return { données, id };\n });\n await f(donnéesFinales);\n }\n };\n const fSuivreColonnes = async (colonnes) => {\n info.colonnes = Object.fromEntries(colonnes.map((c) => [c.id, c.variable]));\n await fFinale();\n };\n const oublierColonnes = await this.suivreColonnesTableau({\n idTableau,\n f: fSuivreColonnes,\n catégories: false,\n });\n const fSuivreDonnées = async (données) => {\n info.données = données;\n await fFinale();\n };\n const oublierDonnées = await this.client.suivreBdDicDeClef({\n id: idTableau,\n clef: \"données\",\n f: fSuivreDonnées,\n // @ts-expect-error Il faudrait implémenter un schéma dynamique selon T\n schéma: schémaBdDonnéesTableau,\n });\n return async () => {\n await oublierDonnées();\n await oublierColonnes();\n };\n }\n async formaterÉlément({ é, colonnes, fichiersSFIP, langues, }) {\n const extraireTraduction = async ({ adresseBdTrads, langues, }) => {\n const trads = await uneFois((f) => this.client.suivreBdDic({ id: adresseBdTrads, f }));\n return traduire(trads, langues || []) || adresseBdTrads;\n };\n const élémentFinal = {};\n const formaterValeur = async (v, catégorie) => {\n switch (typeof v) {\n case \"object\": {\n return JSON.stringify(v);\n }\n case \"boolean\":\n return v.toString();\n case \"number\":\n return v;\n case \"string\":\n if ([\"audio\", \"image\", \"vidéo\", \"fichier\"].includes(catégorie)) {\n fichiersSFIP.add(v);\n return v;\n }\n else if (catégorie === \"chaîne\" && isValidAddress(v)) {\n return await extraireTraduction({ adresseBdTrads: v, langues });\n }\n return v;\n default:\n return;\n }\n };\n for (const col of Object.keys(é)) {\n const colonne = colonnes.find((c) => c.id === col);\n if (!colonne)\n continue;\n const { catégorie } = colonne;\n let val = undefined;\n const élément = é[col];\n if (catégorie?.type === \"simple\") {\n val = await formaterValeur(élément, catégorie.catégorie);\n }\n else if (catégorie?.type === \"liste\") {\n if (Array.isArray(élément)) {\n val = JSON.stringify(await Promise.all(élément.map((x) => formaterValeur(x, catégorie.catégorie))));\n }\n }\n if (val !== undefined)\n élémentFinal[col] = val;\n }\n return élémentFinal;\n }\n async suivreDonnéesExportation({ idTableau, langues, f, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n const { colonnes, données, nomsTableau, nomsVariables } = info;\n if (colonnes && données && (!langues || (nomsTableau && nomsVariables))) {\n const fichiersSFIP = new Set();\n let donnéesFormattées = await Promise.all(données.map((d) => this.formaterÉlément({\n é: d.données,\n fichiersSFIP,\n colonnes,\n langues,\n })));\n donnéesFormattées = donnéesFormattées.map((d) => Object.keys(d).reduce((acc, idCol) => {\n const idVar = colonnes.find((c) => c.id === idCol)?.variable;\n if (!idVar)\n throw new Error(`Colonnne avec id ${idCol} non trouvée parmis les colonnnes :\\n${JSON.stringify(colonnes, undefined, 2)}.`);\n const nomVar = langues && nomsVariables?.[idVar]\n ? traduire(nomsVariables[idVar], langues) || idCol\n : idCol;\n acc[nomVar] = d[idCol];\n return acc;\n }, {}));\n const idCourtTableau = idTableau.split(\"/\").pop();\n const nomTableau = langues && nomsTableau\n ? traduire(nomsTableau, langues) || idCourtTableau\n : idCourtTableau;\n return await f({\n nomTableau,\n données: donnéesFormattées,\n fichiersSFIP,\n });\n }\n };\n if (langues) {\n const fOublierNomsTableaux = await this.suivreNomsTableau({\n idTableau,\n f: async (noms) => {\n info.nomsTableau = noms;\n await fFinale();\n },\n });\n fsOublier.push(fOublierNomsTableaux);\n const fOublierNomsVariables = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => this.suivreVariables({ idTableau, f: fSuivreRacine }),\n f: async (noms) => {\n info.nomsVariables = Object.fromEntries(noms.map((n) => [n.idVar, n.noms]));\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.client.variables.suivreNomsVariable({\n idVariable: id,\n f: async (noms) => await fSuivreBranche({ idVar: id, noms }),\n });\n },\n });\n fsOublier.push(fOublierNomsVariables);\n }\n const fOublierColonnes = await this.suivreColonnesTableau({\n idTableau,\n f: async (cols) => {\n info.colonnes = cols;\n await fFinale();\n },\n catégories: true,\n });\n fsOublier.push(fOublierColonnes);\n const fOublierDonnées = await this.suivreDonnées({\n idTableau,\n f: async (données) => {\n info.données = données;\n await fFinale();\n },\n });\n fsOublier.push(fOublierDonnées);\n return async () => {\n Promise.all(fsOublier.map((f) => f()));\n };\n }\n async exporterDonnées({ idTableau, langues, doc, nomFichier, patience = 500, }) {\n /* Créer le document si nécessaire */\n doc = doc || utils.book_new();\n const données = await uneFois(async (fSuivi) => {\n return await this.suivreDonnéesExportation({\n idTableau,\n langues,\n f: fSuivi,\n });\n }, attendreStabilité(patience));\n /* Créer le tableau */\n const tableau = utils.json_to_sheet(données.données);\n /* Ajouter la feuille au document. XLSX n'accepte pas les noms de colonne > 31 caractères */\n utils.book_append_sheet(doc, tableau, données.nomTableau.slice(0, 30));\n nomFichier = nomFichier || données.nomTableau;\n return { doc, fichiersSFIP: données.fichiersSFIP, nomFichier };\n }\n async ajouterÉlément({ idTableau, vals, }) {\n if (!Array.isArray(vals)) {\n vals = [vals];\n }\n const idBdDonnées = await this.client.obtIdBd({\n nom: \"données\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdDonnées) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdDonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDonnées,\n type: \"keyvalue\",\n schéma: schémaBdDonnéesTableau,\n });\n // Éviter, autant que possible, de dédoubler des colonnes indexes\n const colsIndexe = (await uneFois((f) => this.suivreColonnesTableau({ idTableau, f, catégories: false })))\n .filter((c) => c.index)\n .map((c) => c.id);\n const obtIdIndex = (v) => {\n const valsIndex = Object.fromEntries(Object.entries(v).filter((x) => colsIndexe.includes(x[0])));\n return Base64.stringify(md5(JSON.stringify(valsIndex)));\n };\n const ids = [];\n for (const val of vals) {\n const id = colsIndexe.length ? obtIdIndex(val) : uuidv4();\n await bdDonnées.put(id, val);\n ids.push(id);\n }\n await fOublier();\n return ids;\n }\n async modifierÉlément({ idTableau, vals, idÉlément, }) {\n const idBdDonnées = await this.client.obtIdBd({\n nom: \"données\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdDonnées) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdDonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDonnées,\n type: \"keyvalue\",\n schéma: schémaBdDonnéesTableau,\n });\n const précédent = await bdDonnées.get(idÉlément);\n if (!précédent)\n throw new Error(`Id élément ${idÉlément} n'existe pas.`);\n const élément = Object.assign({}, précédent, vals);\n Object.keys(vals).map((c) => {\n if (vals[c] === undefined)\n delete élément[c];\n });\n if (!élémentsÉgaux(élément, précédent)) {\n await bdDonnées.put(idÉlément, élément);\n }\n await fOublier();\n }\n async vérifierClefsÉlément({ idTableau, élément, }) {\n const idBdColonnes = await this.client.obtIdBd({\n nom: \"colonnes\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdColonnes) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdColonnes, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdColonnes,\n type: \"keyvalue\",\n schéma: schémaBdInfoColAvecCatégorie,\n });\n const idsColonnes = (await bdColonnes.all()).map((e) => e.value.id);\n const clefsPermises = [...idsColonnes, \"id\"];\n const clefsFinales = Object.keys(élément).filter((x) => clefsPermises.includes(x));\n await fOublier();\n return Object.fromEntries(clefsFinales.map((x) => [x, élément[x]]));\n }\n async effacerÉlément({ idTableau, idÉlément, }) {\n const idBdDonnées = await this.client.obtIdBd({\n nom: \"données\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdDonnées) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdDonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDonnées,\n type: \"keyvalue\",\n schéma: schémaBdDonnéesTableau,\n });\n await bdDonnées.del(idÉlément);\n await fOublier();\n }\n async combinerDonnées({ idTableauBase, idTableau2, }) {\n const donnéesTableauBase = await uneFois(async (fSuivi) => {\n return await this.suivreDonnées({\n idTableau: idTableauBase,\n f: fSuivi,\n });\n });\n const colsTableauBase = await uneFois(async (fSuivi) => {\n return await this.suivreColonnesTableau({\n idTableau: idTableauBase,\n f: fSuivi,\n catégories: false,\n });\n }, \n // Il faut attendre que toutes les colonnes soient présentes\n (colonnes) => colonnes !== undefined &&\n [\n ...new Set(donnéesTableauBase\n .map((d) => Object.keys(d.données).filter((c) => c !== \"id\"))\n .flat()),\n ].length <= colonnes.length);\n const donnéesTableau2 = await uneFois(async (fSuivi) => {\n return await this.suivreDonnées({ idTableau: idTableau2, f: fSuivi });\n });\n const indexes = colsTableauBase.filter((c) => c.index).map((c) => c.id);\n for (const nouvelÉlément of donnéesTableau2) {\n const existant = donnéesTableauBase.find((d) => indexÉlémentsÉgaux(d.données, nouvelÉlément.données, indexes));\n if (existant) {\n const àAjouter = {};\n for (const col of colsTableauBase) {\n if (existant.données[col.id] === undefined &&\n nouvelÉlément.données[col.id] !== undefined) {\n àAjouter[col.id] = nouvelÉlément.données[col.id];\n }\n }\n if (Object.keys(àAjouter).length) {\n await this.effacerÉlément({\n idTableau: idTableauBase,\n idÉlément: existant.id,\n });\n await this.ajouterÉlément({\n idTableau: idTableauBase,\n vals: Object.assign({}, existant.données, àAjouter),\n });\n }\n }\n else {\n await this.ajouterÉlément({\n idTableau: idTableauBase,\n vals: nouvelÉlément.données,\n });\n }\n }\n }\n async convertirDonnées({ idTableau, données, conversions = {}, importerFichiers, cheminBaseFichiers, donnéesExistantes, }) {\n const colonnes = await uneFois(async (fSuivi) => {\n return await this.suivreColonnesTableau({\n idTableau,\n f: fSuivi,\n catégories: true,\n });\n });\n const idsOrbiteColsChaîne = new Set(donnéesExistantes\n ?.map((d) => {\n return colonnes\n .filter((c) => c.catégorie?.catégorie === \"chaîne\")\n .map((c) => (c.catégorie?.type === \"simple\" ? [d[c.id]] : d[c.id]))\n .flat()\n .filter((x) => typeof x === \"string\");\n })\n .flat() || []);\n const fichiersDéjàAjoutés = {};\n const ajouterFichierÀSFIP = async ({ chemin, }) => {\n try {\n new URL(chemin);\n if (fichiersDéjàAjoutés[chemin])\n return fichiersDéjàAjoutés[chemin];\n const contenuFichier = (await axios.get(chemin)).data;\n const composantesUrl = chemin.split(\"/\");\n const nomFichier = composantesUrl.pop() || composantesUrl.pop();\n if (!nomFichier)\n throw new Error(\"Nom de fichier manquant.\");\n const cid = await this.client.ajouterÀSFIP({\n nomFichier,\n contenu: contenuFichier,\n });\n fichiersDéjàAjoutés[chemin] = cid;\n }\n catch {\n // Rien à faire;\n }\n if (isNode || isElectronMain) {\n const fs = await import(\"fs\");\n const path = await import(\"path\");\n const cheminAbsolut = cheminBaseFichiers\n ? path.resolve(cheminBaseFichiers, chemin)\n : chemin;\n if (!fs.existsSync(cheminAbsolut))\n return;\n if (fichiersDéjàAjoutés[cheminAbsolut])\n return fichiersDéjàAjoutés[cheminAbsolut];\n const contenuFichier = fs.readFileSync(cheminAbsolut);\n const cid = await this.client.ajouterÀSFIP({\n nomFichier: path.basename(cheminAbsolut),\n contenu: contenuFichier,\n });\n fichiersDéjàAjoutés[chemin] = cid;\n return cid;\n }\n return undefined;\n };\n const cacheRechercheIdOrbite = {};\n const rechercherIdOrbiteChaîne = async ({ val, langue, }) => {\n if (cacheRechercheIdOrbite[langue]?.[val])\n return cacheRechercheIdOrbite[langue][val];\n for (const id of idsOrbiteColsChaîne) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const valLangue = await bd.get(langue);\n await fOublier();\n if (valLangue === val) {\n if (!cacheRechercheIdOrbite[langue])\n cacheRechercheIdOrbite[langue] = {};\n cacheRechercheIdOrbite[langue][val] = id;\n return id;\n }\n }\n return undefined;\n };\n const créerIdOrbiteChaîne = async ({ val, langue, }) => {\n const { bd: bdNuée, fOublier: fOublierBdTableau } = await this.client.ouvrirBdTypée({\n id: idTableau,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const accès = bdNuée.access;\n const optionsAccès = { address: accès.address };\n await fOublierBdTableau();\n const idOrbite = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idOrbite,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bd.set(langue, val);\n await fOublier();\n idsOrbiteColsChaîne.add(idOrbite);\n return idOrbite;\n };\n const convertir = async ({ val, catégorie, conversion, }) => {\n switch (catégorie) {\n case \"audio\":\n case \"image\":\n case \"vidéo\":\n case \"fichier\": {\n if (typeof val === \"string\" && importerFichiers) {\n if (cidEtFichierValide(val))\n return val;\n const infoFichier = await ajouterFichierÀSFIP({ chemin: val });\n return infoFichier || val;\n }\n return val;\n }\n case \"booléen\":\n return typeof val === \"string\" ? val.toLowerCase() === \"true\" : val;\n case \"numérique\": {\n let opération = undefined;\n let systèmeNumération = undefined;\n if (conversion?.type === \"numérique\") {\n ({ opération, systèmeNumération } = conversion);\n }\n const convertirValNumérique = ({ val, ops, }) => {\n if (!ops)\n return val;\n let valFinale = val;\n for (const op of ops) {\n switch (op.op) {\n case \"+\":\n valFinale = val + op.val;\n break;\n case \"-\":\n valFinale = val - op.val;\n break;\n case \"*\":\n valFinale = val * op.val;\n break;\n case \"/\":\n valFinale = val / op.val;\n break;\n case \"^\":\n valFinale = val ** op.val;\n break;\n default:\n throw new Error(op.op);\n }\n }\n return valFinale;\n };\n let valNumérique = undefined;\n if (typeof val === \"string\") {\n try {\n valNumérique = this.client.ennikkai.எண்ணுக்கு({\n உரை: val,\n மொழி: systèmeNumération,\n });\n }\n catch {\n // Rien à faire...\n }\n }\n else if (typeof val === \"number\") {\n valNumérique = val;\n }\n return valNumérique !== undefined\n ? convertirValNumérique({\n val: valNumérique,\n ops: Array.isArray(opération) || typeof opération === \"undefined\"\n ? opération\n : [opération],\n })\n : val;\n }\n case \"horoDatage\": {\n if (conversion?.type === \"horoDatage\" && typeof val === \"string\") {\n const { système, format } = conversion;\n const date = cholqij.lireDate({ système, val, format });\n return {\n système: \"dateJS\",\n val: date.valueOf(),\n };\n }\n else {\n if ([\"number\", \"string\"].includes(typeof val)) {\n const date = new Date(val);\n return isNaN(date.valueOf())\n ? val\n : {\n système: \"dateJS\",\n val: date.valueOf(),\n };\n }\n return val;\n }\n }\n case \"intervaleTemps\": {\n const valObjet = typeof val === \"string\" ? JSON.parse(val) : val;\n if (Array.isArray(valObjet)) {\n return await Promise.all(valObjet.map(async (v) => await convertir({\n val: v,\n catégorie: \"horoDatage\",\n conversion,\n })));\n }\n return valObjet;\n }\n case \"chaîneNonTraductible\":\n return val;\n case \"chaîne\": {\n if (typeof val !== \"string\")\n return val;\n if (isValidAddress(val))\n return val;\n else {\n if (conversion?.type === \"chaîne\") {\n const { langue } = conversion;\n const idOrbiteExistante = await rechercherIdOrbiteChaîne({\n val,\n langue,\n });\n return (idOrbiteExistante ||\n (await créerIdOrbiteChaîne({ val, langue })));\n }\n return val;\n }\n }\n case \"géojson\":\n return typeof val === \"string\" ? JSON.parse(val) : val;\n default:\n return val;\n }\n };\n for (const élément of données) {\n for (const c of colonnes) {\n if (c.catégorie) {\n const { type, catégorie } = c.catégorie;\n const val = élément[c.id];\n if (val === undefined)\n continue;\n const conversion = conversions[c.id];\n if (type === \"simple\") {\n élément[c.id] = await convertir({ val, catégorie, conversion });\n }\n else {\n const valListe = typeof val === \"string\" ? JSON.parse(val) : val;\n élément[c.id] = Array.isArray(valListe)\n ? await Promise.all(valListe.map(async (v) => await convertir({ val: v, catégorie, conversion })))\n : [await convertir({ val: valListe, catégorie, conversion })];\n }\n }\n }\n }\n return données;\n }\n async importerDonnées({ idTableau, données, conversions = {}, cheminBaseFichiers, }) {\n const donnéesTableau = await uneFois(async (fSuivi) => {\n return await this.suivreDonnées({ idTableau, f: fSuivi });\n });\n const donnéesConverties = await this.convertirDonnées({\n idTableau,\n données,\n conversions,\n importerFichiers: true,\n cheminBaseFichiers,\n donnéesExistantes: donnéesTableau.map((x) => x.données),\n });\n const nouveaux = [];\n for (const élément of donnéesConverties) {\n if (!donnéesTableau.some((x) => élémentsÉgaux(x.données, élément))) {\n nouveaux.push(élément);\n }\n }\n const àEffacer = [];\n for (const élément of donnéesTableau) {\n if (!donnéesConverties.some((x) => élémentsÉgaux(x, élément.données))) {\n àEffacer.push(élément.id);\n }\n }\n for (const id of àEffacer) {\n await this.effacerÉlément({ idTableau, idÉlément: id });\n }\n for (const n of nouveaux) {\n await this.ajouterÉlément({ idTableau, vals: n });\n }\n }\n async sauvegarderNomsTableau({ idTableau, noms, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async sauvegarderNomTableau({ idTableau, langue, nom, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async effacerNomTableau({ idTableau, langue, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.del(langue);\n await fOublier();\n }\n async suivreNomsTableau({ idTableau, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idTableau,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async ajouterColonneTableau({ idTableau, idVariable, idColonne, }) {\n const idBdColonnes = await this.client.obtIdBd({\n nom: \"colonnes\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdColonnes) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdColonnes, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdColonnes,\n type: \"keyvalue\",\n schéma: schémaBdInfoColAvecCatégorie,\n });\n idColonne = idColonne || uuidv4();\n const élément = {\n id: idColonne,\n variable: idVariable,\n };\n await bdColonnes.put(idColonne, élément);\n await fOublier();\n return idColonne;\n }\n async effacerColonneTableau({ idTableau, idColonne, }) {\n const idBdColonnes = await this.client.obtIdBd({\n nom: \"colonnes\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdColonnes) {\n throw new Error(`Permission de modification refusée pour BD ${idTableau}.`);\n }\n const { bd: bdColonnes, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdColonnes,\n type: \"keyvalue\",\n schéma: schémaBdInfoColAvecCatégorie,\n });\n await bdColonnes.del(idColonne);\n await fOublier();\n }\n async suivreColonnesTableau({ idTableau, f, catégories = false, }) {\n const fFinale = async (colonnes) => {\n if (colonnes)\n return await f(colonnes);\n };\n const fBranche = async (id, fSuivi, branche) => {\n if (!id)\n return faisRien;\n return await this.client.variables.suivreCatégorieVariable({\n idVariable: id,\n f: async (catégorie) => {\n const col = Object.assign({ catégorie }, branche);\n await fSuivi(col);\n },\n });\n };\n const fIdBdDeBranche = (x) => x.variable;\n const fCode = (x) => x.id;\n const fSuivreBdColonnes = async ({ id, fSuivreBd, }) => {\n return await this.client.suivreBdsDeBdDic({\n id,\n f: fSuivreBd,\n fBranche,\n fIdBdDeBranche,\n fCode,\n });\n };\n if (catégories) {\n return await this.client.suivreBdDeClef({\n id: idTableau,\n clef: \"colonnes\",\n f: fFinale,\n fSuivre: fSuivreBdColonnes,\n });\n }\n else {\n return await this.client.suivreBdDicDeClef({\n id: idTableau,\n clef: \"colonnes\",\n schéma: schémaBdInfoColAvecCatégorie,\n f: async (cols) => fFinale(Object.values(cols)),\n });\n }\n }\n async suivreVariables({ idTableau, f, }) {\n const fFinale = async (variables) => {\n await f((variables || []).filter((v) => v && isValidAddress(v)));\n };\n const fSuivreBdColonnes = async ({ id, fSuivreBd, }) => {\n return await this.client.suivreBdListe({\n id,\n f: (cols) => fSuivreBd(cols.map((c) => c.variable)),\n });\n };\n return await this.client.suivreBdDeClef({\n id: idTableau,\n clef: \"colonnes\",\n f: fFinale,\n fSuivre: fSuivreBdColonnes,\n });\n }\n async ajouterRègleTableau({ idTableau, idColonne, règle, }) {\n const idBdRègles = await this.client.obtIdBd({\n nom: \"règles\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdRègles) {\n throw new Error(`Permission de modification refusée pour tableau ${idTableau}.`);\n }\n const { bd: bdRègles, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdRègles,\n type: \"keyvalue\",\n schéma: schémaBdRègles,\n });\n const id = uuidv4();\n const règleAvecId = {\n id,\n règle,\n };\n const élément = {\n règle: règleAvecId,\n source: { type: \"tableau\", id: idTableau },\n colonne: idColonne,\n };\n await bdRègles.put(id, élément);\n await fOublier();\n return id;\n }\n async effacerRègleTableau({ idTableau, idRègle, }) {\n const idBdRègles = await this.client.obtIdBd({\n nom: \"règles\",\n racine: idTableau,\n type: \"keyvalue\",\n });\n if (!idBdRègles) {\n throw new Error(`Permission de modification refusée pour tableau ${idTableau}.`);\n }\n const { bd: bdRègles, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdRègles,\n type: \"keyvalue\",\n schéma: schémaBdRègles,\n });\n await bdRègles.del(idRègle);\n await fOublier();\n }\n async suivreRègles({ idTableau, f, }) {\n const dicRègles = {};\n const fFinale = async () => {\n if (!dicRègles.tableau || !dicRègles.variable)\n return;\n return await f([...dicRègles.tableau, ...dicRègles.variable]);\n };\n // Suivre les règles spécifiées dans le tableau\n const fFinaleRèglesTableau = async (règles) => {\n dicRègles.tableau = Object.values(règles);\n return await fFinale();\n };\n const oublierRèglesTableau = await this.client.suivreBdDicDeClef({\n id: idTableau,\n clef: \"règles\",\n schéma: schémaBdRègles,\n f: fFinaleRèglesTableau,\n });\n // Suivre les règles spécifiées dans les variables\n const fListe = async (fSuivreRacine) => {\n return await this.suivreColonnesTableau({\n idTableau,\n f: fSuivreRacine,\n catégories: false,\n });\n };\n const fFinaleRèglesVariables = async (règles) => {\n dicRègles.variable = règles;\n return await fFinale();\n };\n const fBranche = async (idVariable, fSuivreBranche, branche) => {\n const fFinaleSuivreBranche = (règles) => {\n const règlesColonnes = règles.map((r) => {\n return {\n règle: r,\n source: { type: \"variable\", id: idVariable },\n colonne: branche.id,\n };\n });\n return fSuivreBranche(règlesColonnes);\n };\n return await this.client.variables.suivreRèglesVariable({\n idVariable,\n f: fFinaleSuivreBranche,\n });\n };\n const fIdBdDeBranche = (b) => b.variable;\n const fCode = (b) => b.id;\n const oublierRèglesVariable = await suivreBdsDeFonctionListe({\n fListe,\n f: fFinaleRèglesVariables,\n fBranche,\n fIdBdDeBranche,\n fCode,\n });\n // Tout oublier\n const fOublier = async () => {\n await oublierRèglesTableau();\n await oublierRèglesVariable();\n };\n return fOublier;\n }\n async suivreValidDonnées({ idTableau, f, }) {\n const info = {};\n const fFinale = async () => {\n if (!info.données || !info.règles)\n return;\n let erreurs = [];\n for (const r of info.règles) {\n const nouvellesErreurs = r(info.données);\n erreurs = [...erreurs, ...nouvellesErreurs.flat()];\n }\n await f(erreurs);\n };\n const fFinaleRègles = async (règles) => {\n if (info.varsÀColonnes) {\n info.règles = règles.map((r) => générerFonctionRègle({\n règle: r.règle,\n varsÀColonnes: info.varsÀColonnes,\n donnéesCatégorie: r.donnéesCatégorie,\n }));\n await fFinale();\n }\n };\n const fFinaleDonnées = async (données) => {\n info.données = données;\n await fFinale();\n };\n const fOublierVarsÀColonnes = await this.suivreColonnesTableau({\n idTableau,\n f: async (cols) => {\n const varsÀColonnes = cols.reduce((o, c) => ({ ...o, [c.variable]: c.id }), {});\n info.varsÀColonnes = varsÀColonnes;\n await fFinale();\n },\n catégories: false,\n });\n const fListeRègles = async (fSuivreRacine) => {\n return await this.suivreRègles({ idTableau, f: fSuivreRacine });\n };\n const fBrancheRègles = async (_id, fSuivreBranche, règle) => {\n if (règle.règle.règle.typeRègle === \"valeurCatégorique\" &&\n règle.règle.règle.détails.type === \"dynamique\") {\n const { tableau, colonne } = règle.règle.règle.détails;\n return await this.suivreDonnées({\n idTableau: tableau,\n f: async (données) => await fSuivreBranche({\n règle,\n donnéesCatégorie: données.map((d) => d.données[colonne]),\n }),\n });\n }\n else {\n await fSuivreBranche({ règle });\n return faisRien;\n }\n };\n const fIdDeBranche = (b) => b.règle.id;\n const fCode = (b) => b.règle.id;\n const fOublierRègles = await suivreBdsDeFonctionListe({\n fListe: fListeRègles,\n f: fFinaleRègles,\n fBranche: fBrancheRègles,\n fIdBdDeBranche: fIdDeBranche,\n fCode,\n });\n const fOublierDonnées = await this.suivreDonnées({\n idTableau,\n f: fFinaleDonnées,\n });\n const fOublier = async () => {\n await fOublierRègles();\n await fOublierDonnées();\n await fOublierVarsÀColonnes();\n };\n return fOublier;\n }\n async suivreValidRègles({ idTableau, f, }) {\n const info = {};\n const fFinale = async () => {\n if (!info.colonnes || !info.règles)\n return;\n const erreurs = [];\n const règlesTypeBornes = info.règles\n .map((r) => r.règle)\n .filter((r) => r.règle.règle.typeRègle === \"bornes\");\n const règlesBornesColonnes = règlesTypeBornes.filter((r) => r.règle.règle.détails.type === \"dynamiqueColonne\");\n const règlesBornesVariables = règlesTypeBornes.filter((r) => r.règle.règle.détails.type === \"dynamiqueVariable\");\n const règlesCatégoriquesDynamiques = info.règles.filter((r) => r.règle.règle.règle.typeRègle === \"valeurCatégorique\" &&\n r.règle.règle.règle.détails.type === \"dynamique\");\n for (const r of règlesBornesColonnes) {\n const colRéfRègle = info.colonnes.find((c) => c.id === r.règle.règle.détails.val);\n if (!colRéfRègle) {\n const erreur = {\n règle: r,\n détails: \"colonneBornesInexistante\",\n };\n erreurs.push(erreur);\n }\n }\n for (const r of règlesBornesVariables) {\n const varRéfRègle = info.colonnes.find((c) => c.variable === r.règle.règle.détails.val);\n if (!varRéfRègle) {\n const erreur = {\n règle: r,\n détails: \"variableBornesNonPrésente\",\n };\n erreurs.push(erreur);\n }\n }\n for (const r of règlesCatégoriquesDynamiques) {\n const colRéfRègle = r.colsTableauRéf?.find((c) => c.id === r.règle.règle.règle.détails.colonne);\n if (!colRéfRègle) {\n const erreur = {\n règle: r.règle,\n détails: \"colonneCatégInexistante\",\n };\n erreurs.push(erreur);\n }\n }\n await f(erreurs);\n };\n const fFinaleRègles = async (règles) => {\n info.règles = règles;\n return await fFinale();\n };\n const fOublierColonnes = await this.suivreColonnesTableau({\n idTableau,\n f: async (cols) => {\n info.colonnes = cols;\n return await fFinale();\n },\n catégories: false,\n });\n const fListeRègles = async (fSuivreRacine) => {\n return await this.suivreRègles({ idTableau, f: fSuivreRacine });\n };\n const fBrancheRègles = async (_id, fSuivreBranche, règle) => {\n if (règle.règle.règle.typeRègle === \"valeurCatégorique\" &&\n règle.règle.règle.détails.type === \"dynamique\") {\n const { tableau } = règle.règle.règle.détails;\n return await this.suivreColonnesTableau({\n idTableau: tableau,\n f: (cols) => fSuivreBranche({\n règle,\n colsTableauRéf: cols,\n }),\n catégories: false,\n });\n }\n else {\n await fSuivreBranche({ règle });\n return faisRien;\n }\n };\n const fIdDeBranche = (b) => b.règle.id;\n const fCode = (b) => b.règle.id;\n const fOublierRègles = await suivreBdsDeFonctionListe({\n fListe: fListeRègles,\n f: fFinaleRègles,\n fBranche: fBrancheRègles,\n fIdBdDeBranche: fIdDeBranche,\n fCode,\n });\n const fOublier = async () => {\n await fOublierRègles();\n await fOublierColonnes();\n };\n return fOublier;\n }\n async effacerTableau({ idTableau }) {\n // Effacer toutes les composantes du tableau\n for (const clef of [\"noms\", \"données\", \"colonnes\", \"règles\"]) {\n const idBd = await this.client.obtIdBd({\n nom: clef,\n racine: idTableau,\n });\n if (idBd)\n await this.client.effacerBd({ id: idBd });\n }\n // Effacer le tableau lui-même\n await this.client.effacerBd({ id: idTableau });\n }\n}\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreDiff\\u00E9rencesAvecTableau\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreIndex\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreDonn\\u00E9es\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreNomsTableau\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreColonnesTableau\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreVariables\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreR\\u00E8gles\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreValidDonn\\u00E9es\", null);\n__decorate([\n cacheSuivi\n], Tableaux.prototype, \"suivreValidR\\u00E8gles\", null);\n//# sourceMappingURL=tableaux.js.map","import { __decorate } from \"tslib\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { schémaStructureBdNoms, } from \"./types.js\";\nimport { ComposanteClientListe } from \"./composanteClient.js\";\nimport { estUnContrôleurConstellation } from \"./accès/utils.js\";\nconst schémaBdPrincipale = {\n type: \"string\",\n};\nconst schémaStructureBdVariable = {\n type: \"object\",\n properties: {\n type: { type: \"string\", nullable: true },\n catégorie: {\n type: \"object\",\n properties: {\n catégorie: { type: \"string\", nullable: true },\n type: { type: \"string\", nullable: true },\n },\n required: [],\n nullable: true,\n },\n noms: { type: \"string\", nullable: true },\n descriptions: { type: \"string\", nullable: true },\n unités: { type: \"string\", nullable: true },\n règles: { type: \"string\", nullable: true },\n statut: {\n type: \"object\",\n properties: {\n idNouvelle: { type: \"string\", nullable: true },\n statut: { type: \"string\", nullable: true },\n },\n required: [],\n nullable: true,\n },\n },\n required: [],\n};\nexport const schémaBdRèglesVariable = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n properties: {\n typeRègle: { type: \"string\" },\n détails: {\n type: \"object\",\n required: [],\n additionalProperties: true,\n },\n },\n required: [\"détails\", \"typeRègle\"],\n },\n required: [],\n};\nexport class Variables extends ComposanteClientListe {\n constructor({ client }) {\n super({ client, clef: \"variables\", schémaBdPrincipale });\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async suivreVariables({ f, idCompte, }) {\n return await this.suivreBdPrincipale({ idCompte, f });\n }\n async créerVariable({ catégorie, }) {\n const idBdVariable = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n address: undefined,\n write: await this.client.obtIdCompte(),\n },\n });\n await this.ajouterÀMesVariables({ idVariable: idBdVariable });\n const { bd: bdVariable, fOublier: fOublierVariable } = await this.client.ouvrirBdTypée({\n id: idBdVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n const accès = bdVariable.access;\n if (!estUnContrôleurConstellation(accès))\n throw Error(\"Contrôleur de type non reconnu.\");\n const optionsAccès = { address: accès.address };\n await bdVariable.set(\"type\", \"variable\");\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdVariable.set(\"noms\", idBdNoms);\n const idBdDescr = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdVariable.set(\"descriptions\", idBdDescr);\n const idBdRègles = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdVariable.set(\"règles\", idBdRègles);\n await bdVariable.set(\"catégorie\", this.standardiserCatégorieVariable(catégorie));\n await this.établirStatut({\n id: idBdVariable,\n statut: { statut: \"active\" },\n });\n fOublierVariable();\n return idBdVariable;\n }\n async ajouterÀMesVariables({ idVariable, }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.add(idVariable);\n await fOublier();\n }\n async enleverDeMesVariables({ idVariable, }) {\n const { bd: bdRacine, fOublier } = await this.obtBd();\n await bdRacine.del(idVariable);\n await fOublier();\n }\n async copierVariable({ idVariable, }) {\n const { bd: bdBase, fOublier: fOublierBase } = await this.client.ouvrirBdTypée({\n id: idVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n const catégorie = (await bdBase.get(\"catégorie\"));\n const idNouvelleBd = await this.créerVariable({ catégorie });\n const { bd: bdNouvelle, fOublier: fOublierNouvelle } = await this.client.ouvrirBdTypée({\n id: idNouvelleBd,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierBdNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await fOublierBdNoms();\n await this.sauvegarderNomsVariable({ idVariable: idNouvelleBd, noms });\n }\n const idBdDescr = await bdBase.get(\"descriptions\");\n if (idBdDescr) {\n const { bd: bdDescr, fOublier: fOublierBdDescr } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const descriptions = await bdDescr.allAsJSON();\n await fOublierBdDescr();\n await this.sauvegarderDescriptionsVariable({\n idVariable: idNouvelleBd,\n descriptions,\n });\n }\n const unités = await bdBase.get(\"unités\");\n if (unités)\n await bdNouvelle.put(\"unités\", unités);\n const idBdRègles = await bdBase.get(\"règles\");\n if (idBdRègles) {\n const { bd: bdRègles, fOublier: fOublierBdRègles } = await this.client.ouvrirBdTypée({\n id: idBdRègles,\n type: \"keyvalue\",\n schéma: schémaBdRèglesVariable,\n });\n const règles = await bdRègles.allAsJSON();\n await fOublierBdRègles();\n await Promise.all(Object.entries(règles).map(async ([id, r]) => {\n await this.ajouterRègleVariable({\n idVariable: idNouvelleBd,\n règle: r,\n idRègle: id,\n });\n }));\n }\n const statut = (await bdBase.get(\"statut\")) || {\n statut: \"active\",\n };\n await this.établirStatut({ id: idNouvelleBd, statut });\n await Promise.all([fOublierBase(), fOublierNouvelle()]);\n return idNouvelleBd;\n }\n async inviterAuteur({ idVariable, idCompteAuteur, rôle, }) {\n await this.client.donnerAccès({\n idBd: idVariable,\n identité: idCompteAuteur,\n rôle,\n });\n }\n async sauvegarderNomsVariable({ idVariable, noms, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour Variable ${idVariable}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async sauvegarderNomVariable({ idVariable, langue, nom, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour variable ${idVariable}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async effacerNomVariable({ idVariable, langue, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour Variable ${idVariable}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.del(langue);\n await fOublier();\n }\n async sauvegarderDescriptionsVariable({ idVariable, descriptions, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour Variable ${idVariable}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in descriptions) {\n await bdDescr.set(lng, descriptions[lng]);\n }\n await fOublier();\n }\n async sauvegarderDescriptionVariable({ idVariable, langue, description, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour Variable ${idVariable}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.set(langue, description);\n await fOublier();\n }\n async effacerDescriptionVariable({ idVariable, langue, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour Variable ${idVariable}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.del(langue);\n await fOublier();\n }\n async sauvegarderCatégorieVariable({ idVariable, catégorie, }) {\n const { bd: bdVariable, fOublier } = await this.client.ouvrirBdTypée({\n id: idVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n await bdVariable.set(\"catégorie\", this.standardiserCatégorieVariable(catégorie));\n await fOublier();\n }\n standardiserCatégorieVariable(catégorie) {\n return typeof catégorie === \"string\"\n ? { type: \"simple\", catégorie }\n : catégorie;\n }\n async sauvegarderUnitésVariable({ idVariable, idUnité, }) {\n const { bd: bdVariable, fOublier } = await this.client.ouvrirBdTypée({\n id: idVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n await bdVariable.set(\"unités\", idUnité);\n await fOublier();\n }\n async ajouterRègleVariable({ idVariable, règle, idRègle, }) {\n const idBdRègles = await this.client.obtIdBd({\n nom: \"règles\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdRègles) {\n throw new Error(`Permission de modification refusée pour variable ${idVariable}.`);\n }\n idRègle = idRègle || uuidv4();\n const { bd: bdRègles, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdRègles,\n type: \"keyvalue\",\n schéma: schémaBdRèglesVariable,\n });\n await bdRègles.put(idRègle, règle);\n await fOublier();\n return idRègle;\n }\n async effacerRègleVariable({ idVariable, idRègle, }) {\n const idBdRègles = await this.client.obtIdBd({\n nom: \"règles\",\n racine: idVariable,\n type: \"keyvalue\",\n });\n if (!idBdRègles) {\n throw new Error(`Permission de modification refusée pour variable ${idVariable}.`);\n }\n const { bd: bdRègles, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdRègles,\n type: \"keyvalue\",\n schéma: schémaBdRèglesVariable,\n });\n await bdRègles.del(idRègle);\n await fOublier();\n }\n async modifierRègleVariable({ idVariable, règleModifiée, idRègle, }) {\n await this.effacerRègleVariable({ idVariable, idRègle });\n await this.ajouterRègleVariable({\n idVariable,\n règle: règleModifiée,\n idRègle,\n });\n }\n async suivreNomsVariable({ idVariable, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idVariable,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreDescriptionsVariable({ idVariable, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idVariable,\n clef: \"descriptions\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreCatégorieVariable({ idVariable, f, }) {\n return await this.client.suivreBd({\n id: idVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n f: async (bd) => {\n const catégorie = await bd.get(\"catégorie\");\n if (catégorie && catégorie.catégorie && catégorie.type)\n await f(this.standardiserCatégorieVariable(catégorie));\n },\n });\n }\n async suivreUnitésVariable({ idVariable, f, }) {\n return await this.client.suivreBd({\n id: idVariable,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n f: async (bd) => {\n const unités = await bd.get(\"unités\");\n await f(unités || null);\n },\n });\n }\n async suivreRèglesVariable({ idVariable, f, }) {\n const règles = {\n catégorie: {},\n propres: {},\n };\n const fFinale = async () => {\n await f(Object.entries(Object.assign({}, règles.catégorie, règles.propres)).map(([id, r]) => ({ id, règle: r })));\n };\n const fSuivreCatégorie = async (catégorie) => {\n const règleCat = {\n [uuidv4()]: {\n typeRègle: \"catégorie\",\n détails: { catégorie },\n },\n };\n règles.catégorie = règleCat;\n await fFinale();\n };\n const fOublierCatégorie = await this.suivreCatégorieVariable({\n idVariable,\n f: fSuivreCatégorie,\n });\n const fSuivreRèglesPropres = async (rgls) => {\n règles.propres = rgls;\n await fFinale();\n };\n const fOublierRèglesPropres = await this.client.suivreBdDicDeClef({\n id: idVariable,\n clef: \"règles\",\n schéma: schémaBdRèglesVariable,\n f: fSuivreRèglesPropres,\n });\n const fOublier = async () => {\n await fOublierCatégorie();\n await fOublierRèglesPropres();\n };\n return fOublier;\n }\n async suivreQualitéVariable({ idVariable, f, }) {\n const rés = {\n noms: {},\n descr: {},\n règles: [],\n };\n const fFinale = async () => {\n const scores = [\n Object.keys(rés.noms).length ? 1 : 0,\n Object.keys(rés.descr).length ? 1 : 0,\n ];\n if (rés.catégorie?.catégorie === \"numérique\") {\n scores.push(rés.unités ? 1 : 0);\n }\n if (rés.catégorie?.catégorie === \"numérique\") {\n scores.push(rés.règles.length >= 1 ? 1 : 0);\n }\n const qualité = scores.reduce((a, b) => a + b, 0) / scores.length;\n await f(qualité);\n };\n const oublierNoms = await this.suivreNomsVariable({\n idVariable,\n f: async (noms) => {\n rés.noms = noms;\n await fFinale();\n },\n });\n const oublierDescr = await this.suivreDescriptionsVariable({\n idVariable,\n f: async (descr) => {\n rés.descr = descr;\n await fFinale();\n },\n });\n const oublierUnités = await this.suivreUnitésVariable({\n idVariable,\n f: async (unités) => {\n rés.unités = unités;\n await fFinale();\n },\n });\n const oublierCatégorie = await this.suivreCatégorieVariable({\n idVariable,\n f: async (catégorie) => {\n rés.catégorie = catégorie;\n await fFinale();\n },\n });\n const oublierRègles = await this.suivreRèglesVariable({\n idVariable,\n f: async (règles) => {\n rés.règles = règles;\n await fFinale();\n },\n });\n const fOublier = async () => {\n await Promise.all([\n oublierNoms(),\n oublierDescr(),\n oublierUnités(),\n oublierCatégorie(),\n oublierRègles(),\n ]);\n };\n return fOublier;\n }\n async établirStatut({ id, statut, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n await bd.set(\"statut\", statut);\n await fOublier();\n }\n async marquerObsolète({ id, idNouvelle, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdVariable,\n });\n bd.set(\"statut\", { statut: \"obsolète\", idNouvelle });\n await fOublier();\n }\n async effacerVariable({ idVariable }) {\n // Effacer l'entrée dans notre liste de variables\n await this.enleverDeMesVariables({ idVariable });\n // Effacer la variable elle-même\n for (const clef of [\"noms\", \"descriptions\", \"règles\"]) {\n const idBd = await this.client.obtIdBd({\n nom: clef,\n racine: idVariable,\n });\n if (idBd)\n await this.client.effacerBd({ id: idBd });\n }\n await this.client.effacerBd({ id: idVariable });\n }\n}\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreVariables\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreNomsVariable\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreDescriptionsVariable\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreCat\\u00E9gorieVariable\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreUnit\\u00E9sVariable\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreR\\u00E8glesVariable\", null);\n__decorate([\n cacheSuivi\n], Variables.prototype, \"suivreQualit\\u00E9Variable\", null);\n//# sourceMappingURL=variables.js.map","/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n}\n\nmodule.exports = baseSum;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseSum = require('./_baseSum'),\n identity = require('./identity');\n\n/**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\nfunction sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n}\n\nmodule.exports = sum;\n","module.exports = function average(values) {\n 'use strict';\n \n return values.reduce(sum, 0) / values.length;\n};\n\nfunction sum(a, b) {\n return a + b;\n}","var average = require('average');\n\nmodule.exports = function variance(values) {\n 'use strict';\n \n var mean = average(values);\n \n function sum(a, b) {\n var diff = b - mean;\n return a + (diff * diff);\n }\n\n return values.reduce(sum, 0) / values.length;\n};","var average = require('average');\n\nmodule.exports = function covariance(a, b) {\n 'use strict';\n\n var length = a.length;\n var i = 0;\n\n var mean_a = average(a);\n var mean_b = average(b);\n var values = [];\n\n for ( ; i < length; i += 1) {\n var diff_a = a[i] - mean_a;\n var diff_b = b[i] - mean_b;\n values.push(diff_a * diff_b);\n }\n\n return average(values);\n};","var average = require('average');\nvar variance = require('variance');\nvar covariance = require('covariance');\n\n// http://en.wikipedia.org/wiki/Structural_similarity\nmodule.exports = function ssim(x, y, options) {\n options = options || {};\n\n var K1 = 'K1' in options ? options.K1 : 0.01;\n var K2 = 'K2' in options ? options.K2 : 0.03;\n var L = 'L' in options ? options.L : 255;\n var alpha = 'alpha' in options ? options.alpha : 1;\n var beta = 'beta' in options ? options.beta : 1;\n var gamma = 'gamma' in options ? options.gamma : 1;\n\n var C1 = (K1 * L) * (K1 * L);\n var C2 = (K2 * L) * (K2 * L);\n var C3 = C2 / 2;\n\n function luminance(x, y) {\n var ux = average(x);\n var uy = average(y);\n\n return (2 * ux * uy + C1) / ((ux * ux) + (uy * uy) + C1);\n }\n\n function contrast(x, y) {\n var sx2 = variance(x);\n var sy2 = variance(y);\n var sx = Math.sqrt(sx2);\n var sy = Math.sqrt(sy2);\n\n return (2 * sx * sy + C2) / (sx2 + sy2 + C2);\n }\n\n function structure(x, y) {\n var sx = Math.sqrt(variance(x));\n var sy = Math.sqrt(variance(y));\n var sxy = covariance(x, y);\n\n return (sxy + C3) / (sx * sy + C3); \n }\n\n var l = Math.pow(luminance(x, y), alpha);\n var c = Math.pow(contrast(x, y), beta);\n var s = Math.pow(structure(x, y), gamma);\n\n return l * c * s;\n};","/**\n * Implementation of Myers' online approximate string matching algorithm [1],\n * with additional optimizations suggested by [2].\n *\n * This has O((k/w) * n) expected-time where `n` is the length of the\n * text, `k` is the maximum number of errors allowed (always <= the pattern\n * length) and `w` is the word size. Because JS only supports bitwise operations\n * on 32 bit integers, `w` is 32.\n *\n * As far as I am aware, there aren't any online algorithms which are\n * significantly better for a wide range of input parameters. The problem can be\n * solved faster using \"filter then verify\" approaches which first filter out\n * regions of the text that cannot match using a \"cheap\" check and then verify\n * the remaining potential matches. The verify step requires an algorithm such\n * as this one however.\n *\n * The algorithm's approach is essentially to optimize the classic dynamic\n * programming solution to the problem by computing columns of the matrix in\n * word-sized chunks (ie. dealing with 32 chars of the pattern at a time) and\n * avoiding calculating regions of the matrix where the minimum error count is\n * guaranteed to exceed the input threshold.\n *\n * The paper consists of two parts, the first describes the core algorithm for\n * matching patterns <= the size of a word (implemented by `advanceBlock` here).\n * The second uses the core algorithm as part of a larger block-based algorithm\n * to handle longer patterns.\n *\n * [1] G. Myers, “A Fast Bit-Vector Algorithm for Approximate String Matching\n * Based on Dynamic Programming,” vol. 46, no. 3, pp. 395–415, 1999.\n *\n * [2] Šošić, M. (2014). An simd dynamic programming c/c++ library (Doctoral\n * dissertation, Fakultet Elektrotehnike i računarstva, Sveučilište u Zagrebu).\n */\nfunction reverse(s) {\n return s.split(\"\").reverse().join(\"\");\n}\n/**\n * Given the ends of approximate matches for `pattern` in `text`, find\n * the start of the matches.\n *\n * @param findEndFn - Function for finding the end of matches in\n * text.\n * @return Matches with the `start` property set.\n */\nfunction findMatchStarts(text, pattern, matches) {\n const patRev = reverse(pattern);\n return matches.map((m) => {\n // Find start of each match by reversing the pattern and matching segment\n // of text and searching for an approx match with the same number of\n // errors.\n const minStart = Math.max(0, m.end - pattern.length - m.errors);\n const textRev = reverse(text.slice(minStart, m.end));\n // If there are multiple possible start points, choose the one that\n // maximizes the length of the match.\n const start = findMatchEnds(textRev, patRev, m.errors).reduce((min, rm) => {\n if (m.end - rm.end < min) {\n return m.end - rm.end;\n }\n return min;\n }, m.end);\n return {\n start,\n end: m.end,\n errors: m.errors,\n };\n });\n}\n/**\n * Return 1 if a number is non-zero or zero otherwise, without using\n * conditional operators.\n *\n * This should get inlined into `advanceBlock` below by the JIT.\n *\n * Adapted from https://stackoverflow.com/a/3912218/434243\n */\nfunction oneIfNotZero(n) {\n return ((n | -n) >> 31) & 1;\n}\n/**\n * Block calculation step of the algorithm.\n *\n * From Fig 8. on p. 408 of [1], additionally optimized to replace conditional\n * checks with bitwise operations as per Section 4.2.3 of [2].\n *\n * @param ctx - The pattern context object\n * @param peq - The `peq` array for the current character (`ctx.peq.get(ch)`)\n * @param b - The block level\n * @param hIn - Horizontal input delta ∈ {1,0,-1}\n * @return Horizontal output delta ∈ {1,0,-1}\n */\nfunction advanceBlock(ctx, peq, b, hIn) {\n let pV = ctx.P[b];\n let mV = ctx.M[b];\n const hInIsNegative = hIn >>> 31; // 1 if hIn < 0 or 0 otherwise.\n const eq = peq[b] | hInIsNegative;\n // Step 1: Compute horizontal deltas.\n const xV = eq | mV;\n const xH = (((eq & pV) + pV) ^ pV) | eq;\n let pH = mV | ~(xH | pV);\n let mH = pV & xH;\n // Step 2: Update score (value of last row of this block).\n const hOut = oneIfNotZero(pH & ctx.lastRowMask[b]) -\n oneIfNotZero(mH & ctx.lastRowMask[b]);\n // Step 3: Update vertical deltas for use when processing next char.\n pH <<= 1;\n mH <<= 1;\n mH |= hInIsNegative;\n pH |= oneIfNotZero(hIn) - hInIsNegative; // set pH[0] if hIn > 0\n pV = mH | ~(xV | pH);\n mV = pH & xV;\n ctx.P[b] = pV;\n ctx.M[b] = mV;\n return hOut;\n}\n/**\n * Find the ends and error counts for matches of `pattern` in `text`.\n *\n * Only the matches with the lowest error count are reported. Other matches\n * with error counts <= maxErrors are discarded.\n *\n * This is the block-based search algorithm from Fig. 9 on p.410 of [1].\n */\nfunction findMatchEnds(text, pattern, maxErrors) {\n if (pattern.length === 0) {\n return [];\n }\n // Clamp error count so we can rely on the `maxErrors` and `pattern.length`\n // rows being in the same block below.\n maxErrors = Math.min(maxErrors, pattern.length);\n const matches = [];\n // Word size.\n const w = 32;\n // Index of maximum block level.\n const bMax = Math.ceil(pattern.length / w) - 1;\n // Context used across block calculations.\n const ctx = {\n P: new Uint32Array(bMax + 1),\n M: new Uint32Array(bMax + 1),\n lastRowMask: new Uint32Array(bMax + 1),\n };\n ctx.lastRowMask.fill(1 << 31);\n ctx.lastRowMask[bMax] = 1 << (pattern.length - 1) % w;\n // Dummy \"peq\" array for chars in the text which do not occur in the pattern.\n const emptyPeq = new Uint32Array(bMax + 1);\n // Map of UTF-16 character code to bit vector indicating positions in the\n // pattern that equal that character.\n const peq = new Map();\n // Version of `peq` that only stores mappings for small characters. This\n // allows faster lookups when iterating through the text because a simple\n // array lookup can be done instead of a hash table lookup.\n const asciiPeq = [];\n for (let i = 0; i < 256; i++) {\n asciiPeq.push(emptyPeq);\n }\n // Calculate `ctx.peq` - a map of character values to bitmasks indicating\n // positions of that character within the pattern, where each bit represents\n // a position in the pattern.\n for (let c = 0; c < pattern.length; c += 1) {\n const val = pattern.charCodeAt(c);\n if (peq.has(val)) {\n // Duplicate char in pattern.\n continue;\n }\n const charPeq = new Uint32Array(bMax + 1);\n peq.set(val, charPeq);\n if (val < asciiPeq.length) {\n asciiPeq[val] = charPeq;\n }\n for (let b = 0; b <= bMax; b += 1) {\n charPeq[b] = 0;\n // Set all the bits where the pattern matches the current char (ch).\n // For indexes beyond the end of the pattern, always set the bit as if the\n // pattern contained a wildcard char in that position.\n for (let r = 0; r < w; r += 1) {\n const idx = b * w + r;\n if (idx >= pattern.length) {\n continue;\n }\n const match = pattern.charCodeAt(idx) === val;\n if (match) {\n charPeq[b] |= 1 << r;\n }\n }\n }\n }\n // Index of last-active block level in the column.\n let y = Math.max(0, Math.ceil(maxErrors / w) - 1);\n // Initialize maximum error count at bottom of each block.\n const score = new Uint32Array(bMax + 1);\n for (let b = 0; b <= y; b += 1) {\n score[b] = (b + 1) * w;\n }\n score[bMax] = pattern.length;\n // Initialize vertical deltas for each block.\n for (let b = 0; b <= y; b += 1) {\n ctx.P[b] = ~0;\n ctx.M[b] = 0;\n }\n // Process each char of the text, computing the error count for `w` chars of\n // the pattern at a time.\n for (let j = 0; j < text.length; j += 1) {\n // Lookup the bitmask representing the positions of the current char from\n // the text within the pattern.\n const charCode = text.charCodeAt(j);\n let charPeq;\n if (charCode < asciiPeq.length) {\n // Fast array lookup.\n charPeq = asciiPeq[charCode];\n }\n else {\n // Slower hash table lookup.\n charPeq = peq.get(charCode);\n if (typeof charPeq === \"undefined\") {\n charPeq = emptyPeq;\n }\n }\n // Calculate error count for blocks that we definitely have to process for\n // this column.\n let carry = 0;\n for (let b = 0; b <= y; b += 1) {\n carry = advanceBlock(ctx, charPeq, b, carry);\n score[b] += carry;\n }\n // Check if we also need to compute an additional block, or if we can reduce\n // the number of blocks processed for the next column.\n if (score[y] - carry <= maxErrors &&\n y < bMax &&\n (charPeq[y + 1] & 1 || carry < 0)) {\n // Error count for bottom block is under threshold, increase the number of\n // blocks processed for this column & next by 1.\n y += 1;\n ctx.P[y] = ~0;\n ctx.M[y] = 0;\n let maxBlockScore;\n if (y === bMax) {\n const remainder = pattern.length % w;\n maxBlockScore = remainder === 0 ? w : remainder;\n }\n else {\n maxBlockScore = w;\n }\n score[y] =\n score[y - 1] +\n maxBlockScore -\n carry +\n advanceBlock(ctx, charPeq, y, carry);\n }\n else {\n // Error count for bottom block exceeds threshold, reduce the number of\n // blocks processed for the next column.\n while (y > 0 && score[y] >= maxErrors + w) {\n y -= 1;\n }\n }\n // If error count is under threshold, report a match.\n if (y === bMax && score[y] <= maxErrors) {\n if (score[y] < maxErrors) {\n // Discard any earlier, worse matches.\n matches.splice(0, matches.length);\n }\n matches.push({\n start: -1,\n end: j + 1,\n errors: score[y],\n });\n // Because `search` only reports the matches with the lowest error count,\n // we can \"ratchet down\" the max error threshold whenever a match is\n // encountered and thereby save a small amount of work for the remainder\n // of the text.\n maxErrors = score[y];\n }\n }\n return matches;\n}\n/**\n * Search for matches for `pattern` in `text` allowing up to `maxErrors` errors.\n *\n * Returns the start, and end positions and error counts for each lowest-cost\n * match. Only the \"best\" matches are returned.\n */\nexport default function search(text, pattern, maxErrors) {\n const matches = findMatchEnds(text, pattern, maxErrors);\n return findMatchStarts(text, pattern, matches);\n}\n","import ssim from \"ssim\";\nimport correspTexte from \"approx-string-match\";\nimport { faisRien, suivreBdsDeFonctionListe } from \"@constl/utils-ipa\";\nexport const rechercherDansTexte = (schéma, texte) => {\n // Une alternative - https://www.npmjs.com/package/js-levenshtein\n const correspondances = correspTexte(texte, schéma, Math.ceil(schéma.length / 4));\n const meilleure = correspondances.sort((a, b) => a.errors > b.errors ? 1 : -1)[0];\n if (meilleure) {\n const score = 1 / (meilleure.errors + 1);\n return { type: \"texte\", score, début: meilleure.start, fin: meilleure.end };\n }\n return undefined;\n};\nexport const similTexte = (texte, possibilités) => {\n if (Array.isArray(possibilités)) {\n possibilités = Object.fromEntries(possibilités.map((x) => [x, x]));\n }\n const similairités = Object.entries(possibilités).map(([clef, val]) => {\n const corresp = rechercherDansTexte(texte, val);\n if (corresp) {\n const { score, début, fin } = corresp;\n return {\n type: \"résultat\",\n score,\n clef,\n info: { type: \"texte\", texte: val, début, fin },\n };\n }\n return undefined;\n });\n const meilleure = similairités\n .filter((x) => x)\n .sort((a, b) => (a.score > b.score ? -1 : 1))[0];\n return meilleure;\n};\nexport const similImages = (image, imageRef) => {\n if (!imageRef) {\n return 0;\n }\n const { mssim } = ssim(image, imageRef);\n return mssim;\n};\nexport const combinerRecherches = async (fsRecherche, client, id, fSuivreRecherche) => {\n const fsOublier = [];\n const résultats = Object.fromEntries(Object.keys(fsRecherche).map((x) => [x, undefined]));\n const fSuivreFinale = () => {\n const résultat = Object.values(résultats)\n .filter((x) => x)\n .sort((a, b) => (aMieuxQueB(a, b) ? -1 : 1))[0];\n fSuivreRecherche(résultat);\n };\n await Promise.all(Object.entries(fsRecherche).map(async ([clef, fRecherche]) => {\n const fSuivre = async (résultat) => {\n résultats[clef] = résultat;\n fSuivreFinale();\n };\n fsOublier.push(await fRecherche(client, id, fSuivre));\n }));\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n};\nexport const sousRecherche = async (de, fListe, fRechercher, client, fSuivreRecherche) => {\n const fBranche = async (idBd, f) => {\n return await fRechercher(client, idBd, async (résultat) => {\n if (résultat)\n f({ id: idBd, résultat });\n });\n };\n const fFinale = async (résultats) => {\n const meilleur = meilleurRésultat(résultats);\n if (meilleur) {\n const résultat = {\n type: \"résultat\",\n de,\n clef: meilleur.id,\n score: meilleur.résultat.score,\n info: {\n type: \"résultat\",\n de: meilleur.résultat.de,\n info: meilleur.résultat.info,\n },\n };\n if (meilleur.résultat.clef) {\n résultat.info.clef = meilleur.résultat.clef;\n }\n await fSuivreRecherche(résultat);\n }\n };\n const fOublier = await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n return fOublier;\n};\nconst aMieuxQueB = (a, b) => {\n const xPlusImportantQueY = (x, y) => {\n while (x.type === \"résultat\")\n x = x.info;\n while (y.type === \"résultat\")\n y = y.info;\n const ordreImportanceCroissante = [\"vide\", \"texte\"];\n const iX = ordreImportanceCroissante.indexOf(x.type);\n const iY = ordreImportanceCroissante.indexOf(y.type);\n return iX > iY;\n };\n const xPlusLongQueY = (x, y) => {\n while (x.type === \"résultat\")\n x = x.info;\n while (y.type === \"résultat\")\n y = y.info;\n switch (x.type) {\n case \"texte\":\n if (y.type === \"texte\") {\n return x.fin - x.début > y.fin - y.début;\n }\n else {\n return false;\n }\n default:\n return false;\n }\n };\n return a.score > b.score\n ? true\n : a.score < b.score\n ? false\n : xPlusLongQueY(a.info, b.info)\n ? true\n : xPlusImportantQueY(a.info, b.info);\n};\nconst meilleurRésultat = (résultats) => {\n const meilleur = Object.values(résultats)\n .filter((x) => x)\n .sort((a, b) => (aMieuxQueB(a.résultat, b.résultat) ? -1 : 1))[0];\n return meilleur;\n};\nexport const rechercherSelonId = (idRecherché) => {\n return async (_client, id, fSuivreRecherche) => {\n const résultat = rechercherDansTexte(idRecherché, id);\n if (résultat) {\n const { score, début, fin } = résultat;\n await fSuivreRecherche({\n score,\n type: \"résultat\",\n de: \"id\",\n info: {\n type: \"texte\",\n début,\n fin,\n texte: id,\n },\n });\n }\n else {\n await fSuivreRecherche();\n }\n return faisRien;\n };\n};\nexport const rechercherTous = () => {\n return async (_client, _id, fSuivreRecherche) => {\n await fSuivreRecherche({\n type: \"résultat\",\n score: 1,\n de: \"*\",\n info: { type: \"vide\" },\n });\n return faisRien;\n };\n};\nexport const rechercherTousSiVide = (texte) => {\n return async (_client, _id, fSuivreRecherche) => {\n if (texte === \"\")\n await fSuivreRecherche({\n type: \"résultat\",\n score: 1,\n de: \"*\",\n info: { type: \"vide\" },\n });\n return faisRien;\n };\n};\n//# sourceMappingURL=utils.js.map","import { similImages, similTexte, rechercherDansTexte, combinerRecherches, rechercherSelonId, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherProfilsSelonActivité = () => {\n return async (client, idCompte, fSuivreRecherche) => {\n const infosCompte = {\n noms: undefined,\n image: undefined,\n courriel: undefined,\n };\n const calculerScore = () => {\n const score = [\n Object.keys(infosCompte.noms || {}).length > 0,\n infosCompte.image,\n infosCompte.courriel,\n ].filter(Boolean).length / 3;\n return {\n type: \"résultat\",\n score,\n de: \"activité\",\n info: { type: \"vide\" },\n };\n };\n const fSuivreNoms = (noms) => {\n infosCompte.noms = noms;\n fSuivreRecherche(calculerScore());\n };\n const fSuivreImage = (image) => {\n infosCompte.image = image;\n fSuivreRecherche(calculerScore());\n };\n const fSuivreCourriel = (courriel) => {\n infosCompte.courriel = courriel;\n fSuivreRecherche(calculerScore());\n };\n const fOublierNoms = await client.profil.suivreNoms({\n idCompte,\n f: fSuivreNoms,\n });\n const fOublierImage = await client.profil.suivreImage({\n idCompte,\n f: fSuivreImage,\n });\n const fOublierCourriel = await client.profil.suivreCourriel({\n idCompte,\n f: fSuivreCourriel,\n });\n const fOublier = async () => {\n await Promise.all([\n fOublierNoms(),\n fOublierImage(),\n fOublierCourriel(),\n ]);\n };\n return fOublier;\n };\n};\nexport const rechercherProfilsSelonNom = (nom) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fSuivre = (noms) => {\n const corresp = similTexte(nom, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"nom\",\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.profil.suivreNoms({\n idCompte,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherProfilsSelonCourriel = (courriel) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fSuivre = (courrielProfil) => {\n const corresp = courrielProfil\n ? rechercherDansTexte(courriel, courrielProfil)\n : undefined;\n if (corresp && courrielProfil) {\n const { score, début, fin } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n de: \"courriel\",\n info: { type: \"texte\", début, fin, texte: courrielProfil },\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.profil.suivreCourriel({\n idCompte,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherProfilsSelonTexte = (texte) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fRechercherNoms = rechercherProfilsSelonNom(texte);\n const fRechercherCourriel = rechercherProfilsSelonCourriel(texte);\n const fRechercherId = rechercherSelonId(texte);\n const fRechercherTous = rechercherTousSiVide(texte);\n return await combinerRecherches({\n noms: fRechercherNoms,\n courriel: fRechercherCourriel,\n id: fRechercherId,\n vide: fRechercherTous,\n }, client, idCompte, fSuivreRecherche);\n };\n};\nexport const rechercherProfilsSelonImage = (image) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fSuivre = (imageCompte) => {\n const score = similImages(image, imageCompte);\n fSuivreRecherche({\n type: \"résultat\",\n score,\n de: \"image\",\n info: { type: \"vide\" },\n });\n };\n const fOublier = await client.profil.suivreImage({\n idCompte,\n f: fSuivre,\n });\n return fOublier;\n };\n};\n//# sourceMappingURL=profil.js.map","import { __decorate } from \"tslib\";\nimport { isValidAddress } from \"@orbitdb/core\";\nimport { EventEmitter } from \"events\";\nimport sum from \"lodash/sum.js\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nimport { schémaStructureBdCompte, } from \"./client.js\";\nimport { faisRien, suivreBdsDeFonctionListe } from \"@constl/utils-ipa\";\nimport { rechercherProfilsSelonActivité } from \"./recherche/profil.js\";\nimport { rechercherTous } from \"./recherche/utils.js\";\nimport { cacheRechercheParNRésultats, cacheRechercheParProfondeur, cacheSuivi, } from \"./d\\u00E9corateursCache.js\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { ComposanteClientDic } from \"./composanteClient.js\";\nimport { suivreBdDeFonction } from \"@constl/utils-ipa\";\nimport { estUnContrôleurConstellation } from \"./accès/utils.js\";\nconst schémaBdPrincipaleRéseau = {\n type: \"object\",\n additionalProperties: {\n type: \"string\",\n },\n required: [],\n};\nconst INTERVALE_SALUT = 1000 * 10;\nconst FACTEUR_ATÉNUATION_CONFIANCE = 0.8;\nconst FACTEUR_ATÉNUATION_BLOQUÉS = 0.9;\nconst CONFIANCE_DE_COAUTEUR = 0.9;\nconst CONFIANCE_DE_FAVORIS = 0.7;\nconst DÉLAI_SESOUVENIR_MEMBRES_EN_LIGNE = 1000 * 60 * 60 * 24 * 30;\nconst N_DÉSIRÉ_SOUVENIR_MEMBRES_EN_LIGNE = 50;\nexport class Réseau extends ComposanteClientDic {\n client;\n bloquésPrivés;\n _fermé;\n dispositifsEnLigne;\n fsOublier;\n événements;\n constructor({ client }) {\n super({\n client,\n clef: \"réseau\",\n schémaBdPrincipale: schémaBdPrincipaleRéseau,\n });\n this.client = client;\n this.bloquésPrivés = new Set();\n this.dispositifsEnLigne = {};\n this.fsOublier = [];\n this._fermé = false;\n this.événements = new EventEmitter();\n }\n async initialiser() {\n const { sfip } = await this.client.attendreSfipEtOrbite();\n const promesses = {};\n const pubsub = sfip.libp2p.services.pubsub;\n pubsub.subscribe(this.client.sujet_réseau);\n const fÉcoutePubSub = (évé) => {\n const messageGs = évé.detail.msg;\n const id = uuidv4();\n if (messageGs.topic === this.client.sujet_réseau) {\n try {\n const promesse = this.messageReçu({\n msg: JSON.parse(new TextDecoder().decode(messageGs.data)),\n });\n promesses[id] = promesse;\n promesse.then(() => {\n delete promesses[id];\n });\n }\n catch (e) {\n console.error(e.toString());\n console.error(e.stack.toString());\n }\n }\n };\n pubsub.addEventListener(\"gossipsub:message\", fÉcoutePubSub);\n this.fsOublier.push(async () => {\n pubsub.unsubscribe(this.client.sujet_réseau);\n pubsub.removeEventListener(\"gossipsub:message\", fÉcoutePubSub);\n await Promise.all(Object.values(promesses));\n });\n const libp2p = sfip.libp2p;\n const fSuivreConnexions = () => {\n this.événements.emit(\"changementConnexions\");\n };\n const événements = [\n \"peer:discovery\",\n \"peer:connect\",\n \"peer:disconnect\",\n ];\n for (const é of événements) {\n libp2p.addEventListener(é, fSuivreConnexions);\n }\n this.fsOublier.push(...événements.map((é) => {\n return async () => libp2p.removeEventListener(é, fSuivreConnexions);\n }));\n const intervale = setInterval(() => {\n this.direSalut({});\n }, INTERVALE_SALUT);\n this.fsOublier.unshift(async () => clearInterval(intervale));\n await this.direSalut({});\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async envoyerMessageAuDispositif({ msg, idSFIP, }) {\n if (idSFIP) {\n msg.destinataire = idSFIP;\n }\n const sujet = this.client.sujet_réseau;\n const { sfip } = await this.client.attendreSfipEtOrbite();\n const pubsub = sfip.libp2p.services.pubsub;\n const msgBinaire = Buffer.from(JSON.stringify(msg));\n await pubsub.publish(sujet, msgBinaire);\n }\n async envoyerMessageAuMembre({ msg, idCompte, encrypté = true, }) {\n const signature = await this.client.signer({\n message: JSON.stringify(msg),\n });\n const msgSigné = {\n signature,\n valeur: msg,\n };\n const maintenant = Date.now();\n const dispositifsMembre = Object.values(this.dispositifsEnLigne)\n .filter((d) => d.infoDispositif.idCompte === idCompte)\n .filter((d) => d.vuÀ && maintenant - d.vuÀ < INTERVALE_SALUT + 1000 * 30);\n if (!dispositifsMembre.length)\n throw new Error(`Aucun dispositif présentement en ligne pour membre ${idCompte}`);\n await Promise.all(dispositifsMembre.map(async (d) => {\n const { idSFIP, encryption } = d.infoDispositif;\n if (encrypté) {\n // Arrêter si le dispositif n'a pas la même encryption que nous\n if (encryption?.type !== this.client.encryption.nom)\n return;\n const msgEncrypté = await this.client.encryption.encrypter({\n message: JSON.stringify(msgSigné),\n clefPubliqueDestinataire: encryption.clefPublique,\n });\n const { publique: clefPubliqueExpéditeur } = await this.client.encryption.obtClefs();\n const msgPourDispositif = {\n encrypté: true,\n clefPubliqueExpéditeur,\n données: msgEncrypté,\n };\n await this.envoyerMessageAuDispositif({\n msg: msgPourDispositif,\n idSFIP,\n });\n }\n else {\n const msgPourDispositif = {\n encrypté: false,\n données: msgSigné,\n };\n await this.envoyerMessageAuDispositif({\n msg: msgPourDispositif,\n idSFIP,\n });\n }\n }));\n }\n async direSalut({ à }) {\n const valeur = {\n type: \"Salut !\",\n contenu: {\n idSFIP: (await this.client.obtIdSFIP()).toString(),\n idDispositif: this.client.orbite.identity.id,\n clefPublique: this.client.orbite.identity.publicKey,\n signatures: this.client.orbite.identity.signatures,\n idCompte: await this.client.obtIdCompte(),\n },\n };\n const { publique: clefPublique } = await this.client.encryption.obtClefs();\n if (this.client.encryption) {\n valeur.contenu.encryption = {\n type: this.client.encryption.nom,\n clefPublique,\n };\n }\n const signature = await this.client.signer({\n message: JSON.stringify(valeur),\n });\n const message = {\n encrypté: false,\n données: {\n signature,\n valeur,\n },\n };\n try {\n await this.envoyerMessageAuDispositif({ msg: message, idSFIP: à });\n }\n catch (e) {\n // On peut avoir cette erreur si l'autre poste s'est déconnecté entre-temps\n if (!e.toString().includes(\"PublishError.InsufficientPeers\")) {\n throw e;\n }\n }\n }\n async envoyerDemandeRejoindreCompte({ idCompte, codeSecret, }) {\n const idDispositif = await this.client.obtIdDispositif();\n const msg = {\n type: \"Je veux rejoindre ce compte\",\n contenu: {\n idDispositif,\n empreinteVérification: this.client.empreinteInvitation({\n idDispositif,\n codeSecret,\n }),\n },\n };\n await this.envoyerMessageAuMembre({ msg, idCompte });\n }\n async messageReçu({ msg }) {\n if (this._fermé)\n return;\n const { encrypté, destinataire } = msg;\n if (destinataire &&\n destinataire !== (await this.client.obtIdSFIP()).toString())\n return;\n const données = encrypté\n ? JSON.parse(await this.client.encryption.décrypter({\n message: msg.données,\n clefPubliqueExpéditeur: msg\n .clefPubliqueExpéditeur,\n }))\n : msg.données;\n const { valeur, signature } = données;\n // Ignorer la plupart des messages de nous-mêmes\n if (signature.clefPublique === this.client.orbite.identity.publicKey &&\n valeur.type !== \"Salut !\") {\n return;\n }\n // Assurer que la signature est valide (message envoyé par détenteur de idDispositif)\n const signatureValide = await this.client.vérifierSignature({\n signature,\n message: JSON.stringify(valeur),\n });\n if (!signatureValide)\n return;\n const contenu = valeur.contenu;\n switch (valeur.type) {\n case \"Salut !\": {\n const contenuSalut = contenu;\n const { clefPublique } = contenuSalut;\n // S'assurer que idDispositif est la même que celle sur la signature\n if (clefPublique !== signature.clefPublique)\n return;\n await this.recevoirSalut({ message: contenuSalut });\n if (!destinataire)\n await this.direSalut({ à: contenuSalut.idSFIP }); // Renvoyer le message, si ce n'était pas déjà fait\n break;\n }\n case \"Je veux rejoindre ce compte\": {\n const contenuMessage = contenu;\n await this.client.considérerRequêteRejoindreCompte({\n requête: contenuMessage,\n });\n break;\n }\n }\n // this.écouteursMessages[valeur.type]?.(contenu);\n }\n async recevoirSalut({ message, }) {\n const dispositifValid = await this._validerInfoMembre({ info: message });\n if (!dispositifValid)\n return;\n // Peut-être possible de convertir à une méthode peer.onDisconnect pour détecter vuÀ ?\n this.dispositifsEnLigne[message.idDispositif] = {\n infoDispositif: message,\n vuÀ: message.idDispositif === (await this.client.obtIdDispositif())\n ? undefined\n : new Date().getTime(),\n };\n this.événements.emit(\"membreVu\");\n await this._sauvegarderDispositifsEnLigne();\n }\n _nettoyerDispositifsEnLigne() {\n const maintenant = new Date().getTime();\n const effaçables = Object.values(this.dispositifsEnLigne)\n .filter((d) => maintenant - (d.vuÀ || 0) > DÉLAI_SESOUVENIR_MEMBRES_EN_LIGNE)\n .sort((a, b) => ((a.vuÀ || 0) < (b.vuÀ || 0) ? -1 : 1))\n .map((d) => d.infoDispositif.idDispositif);\n const nEffacer = Object.keys(this.dispositifsEnLigne).length -\n N_DÉSIRÉ_SOUVENIR_MEMBRES_EN_LIGNE;\n const àEffacer = effaçables.slice(effaçables.length - nEffacer);\n àEffacer.forEach((m) => delete this.dispositifsEnLigne[m]);\n }\n async _sauvegarderDispositifsEnLigne() {\n this._nettoyerDispositifsEnLigne();\n await this.client.sauvegarderAuStockageLocal({\n clef: \"dispositifsEnLigne\",\n val: JSON.stringify(this.dispositifsEnLigne),\n });\n }\n async _validerInfoMembre({ info, }) {\n const { idCompte, signatures, clefPublique, idDispositif } = info;\n if (!(idCompte && signatures && clefPublique && idDispositif))\n return false;\n const sigIdValide = await this.client.vérifierSignature({\n signature: {\n signature: signatures.id,\n clefPublique: clefPublique,\n },\n message: idDispositif,\n });\n const sigClefPubliqueValide = await this.client.vérifierSignature({\n signature: {\n signature: signatures.publicKey,\n clefPublique: idDispositif,\n },\n message: clefPublique + signatures.id,\n });\n if (!isValidAddress(idCompte))\n return false;\n const { bd: bdCompte, fOublier } = await this.client.orbite.ouvrirBd({\n id: idCompte,\n });\n if (!estUnContrôleurConstellation(bdCompte.access))\n return false;\n const bdCompteValide = bdCompte.access.estAutorisé(idDispositif);\n await fOublier();\n return sigIdValide && sigClefPubliqueValide && bdCompteValide;\n }\n async faireConfianceAuMembre({ idCompte, }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.set(idCompte, \"FIABLE\");\n await fOublier();\n }\n async nePlusFaireConfianceAuMembre({ idCompte, }) {\n const { bd, fOublier } = await this.obtBd();\n if (Object.keys(await bd.allAsJSON()).includes(idCompte) &&\n (await bd.get(idCompte)) === \"FIABLE\") {\n await bd.del(idCompte);\n }\n await fOublier();\n }\n async suivreFiables({ f, idCompte, }) {\n const fFinale = async (membres) => {\n const fiables = Object.keys(membres).filter((m) => membres[m] === \"FIABLE\");\n return await f(fiables);\n };\n return await this.suivreBdPrincipale({\n idCompte,\n f: fFinale,\n });\n }\n async _initaliserBloquésPrivés() {\n const bloquésPrivésChaîne = await this.client.obtDeStockageLocal({\n clef: \"membresBloqués\",\n });\n if (bloquésPrivésChaîne) {\n JSON.parse(bloquésPrivésChaîne).forEach((b) => this.bloquésPrivés.add(b));\n this.événements.emit(\"changementMembresBloqués\");\n }\n }\n async _sauvegarderBloquésPrivés() {\n const bloqués = [...this.bloquésPrivés];\n this.client.sauvegarderAuStockageLocal({\n clef: \"membresBloqués\",\n val: JSON.stringify(bloqués),\n });\n }\n async bloquerMembre({ idCompte, privé = false, }) {\n if (privé) {\n await this.débloquerMembre({ idCompte }); // Enlever du régistre publique s'il y est déjà\n this.bloquésPrivés.add(idCompte);\n await this._sauvegarderBloquésPrivés();\n }\n else {\n const { bd, fOublier } = await this.obtBd();\n // Enlever du régistre privé s'il y existe\n await this.débloquerMembre({ idCompte });\n await bd.set(idCompte, \"BLOQUÉ\");\n await fOublier();\n }\n this.événements.emit(\"changementMembresBloqués\");\n }\n async débloquerMembre({ idCompte }) {\n const { bd, fOublier } = await this.obtBd();\n if (Object.keys(await bd.allAsJSON()).includes(idCompte) &&\n (await bd.get(idCompte)) === \"BLOQUÉ\") {\n await bd.del(idCompte);\n }\n await fOublier();\n if (this.bloquésPrivés.has(idCompte)) {\n this.bloquésPrivés.delete(idCompte);\n await this._sauvegarderBloquésPrivés();\n }\n this.événements.emit(\"changementMembresBloqués\");\n }\n async suivreBloquésPubliques({ f, idCompte, }) {\n const fFinale = async (membres) => {\n const bloqués = Object.keys(membres).filter((m) => membres[m] === \"BLOQUÉ\");\n return await f(bloqués);\n };\n return await this.suivreBdPrincipale({\n idCompte,\n f: fFinale,\n });\n }\n async suivreBloqués({ f, idCompte, }) {\n const fsOublier = [];\n let bloquésPubliques = [];\n const fFinale = async () => {\n const listeBloqués = [\n ...new Set([\n ...[...this.bloquésPrivés].map((m) => {\n return { idCompte: m, privé: true };\n }),\n ...bloquésPubliques.map((m) => {\n return { idCompte: m, privé: false };\n }),\n ]),\n ];\n return await f(listeBloqués);\n };\n fsOublier.push(await this.suivreBloquésPubliques({\n f: async (blqs) => {\n bloquésPubliques = blqs;\n return await fFinale();\n },\n idCompte,\n }));\n if (idCompte === undefined || idCompte === this.client.idCompte) {\n await this._initaliserBloquésPrivés();\n this.événements.on(\"changementMembresBloqués\", fFinale);\n fsOublier.push(async () => {\n this.événements.off(\"changementMembresBloqués\", fFinale);\n });\n await fFinale();\n }\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n }\n async suivreRelationsImmédiates({ f, idCompte, }) {\n idCompte = idCompte ? idCompte : this.client.idCompte;\n const fsOublier = [];\n const comptes = {\n suivis: [],\n favoris: [],\n coauteursBds: [],\n coauteursProjets: [],\n coauteursVariables: [],\n coauteursMotsClefs: [],\n };\n let bloqués = [];\n const fFinale = async () => {\n const tous = [\n ...comptes.suivis,\n ...comptes.favoris,\n ...comptes.coauteursBds,\n ...comptes.coauteursProjets,\n ...comptes.coauteursVariables,\n ...comptes.coauteursMotsClefs,\n ...bloqués.map((b) => {\n return { idCompte: b, confiance: -1 };\n }),\n ];\n const membresUniques = [...new Set(tous)];\n const relations = membresUniques.map((m) => {\n const { idCompte } = m;\n if (bloqués.includes(idCompte)) {\n return { idCompte, confiance: -1 };\n }\n const points = tous\n .filter((x) => x.idCompte === idCompte)\n .map((x) => x.confiance);\n const confiance = 1 - points.map((p) => 1 - p).reduce((total, c) => c * total, 1);\n return { idCompte, confiance };\n });\n return await f(relations);\n };\n fsOublier.push(await this.suivreBloqués({\n f: async (blqs) => {\n bloqués = blqs.map((b) => b.idCompte);\n await fFinale();\n },\n idCompte: idCompte,\n }));\n fsOublier.push(await this.client.suivreBdDicDeClef({\n id: idCompte,\n clef: \"réseau\",\n schéma: schémaBdPrincipaleRéseau,\n f: async (membres) => {\n comptes.suivis = Object.entries(membres)\n .filter(([_, statut]) => statut === \"FIABLE\")\n .map(([id, _]) => {\n return { idCompte: id, confiance: 1 };\n });\n return await fFinale();\n },\n }));\n const inscrireSuiviAuteurs = async (fListe, clef, confiance) => {\n fsOublier.push(await suivreBdsDeFonctionListe({\n fListe,\n f: async (membres) => {\n comptes[clef] = membres.map((idCompte) => {\n return { idCompte, confiance };\n });\n return await fFinale();\n },\n fBranche: async (id, fSuivi) => {\n return await this.client.suivreAccèsBd({\n id,\n // Enlever nous-même de la liste des coauteurs\n f: (accès) => fSuivi(accès.map((a) => a.idCompte).filter((id) => id !== idCompte)),\n });\n },\n }));\n };\n const fSuivreFavoris = async (fSuivreRacine) => {\n return await this.suivreFavorisMembre({\n idCompte: idCompte,\n f: (favoris) => {\n return fSuivreRacine((favoris || []).map((f) => f.idObjet));\n },\n });\n };\n await inscrireSuiviAuteurs(fSuivreFavoris, \"favoris\", CONFIANCE_DE_FAVORIS);\n const fSuivreBds = async (fSuivreRacine) => {\n return await this.suivreBdsMembre({\n idCompte: idCompte,\n f: (bds) => fSuivreRacine(bds || []),\n });\n };\n await inscrireSuiviAuteurs(fSuivreBds, \"coauteursBds\", CONFIANCE_DE_COAUTEUR);\n const fSuivreProjets = async (fSuivreRacine) => {\n return await this.suivreProjetsMembre({\n idCompte: idCompte,\n f: (projets) => fSuivreRacine(projets || []),\n });\n };\n await inscrireSuiviAuteurs(fSuivreProjets, \"coauteursProjets\", CONFIANCE_DE_COAUTEUR);\n const fSuivreVariables = async (fSuivreRacine) => {\n return await this.suivreVariablesMembre({\n idCompte: idCompte,\n f: (variables) => fSuivreRacine(variables || []),\n });\n };\n await inscrireSuiviAuteurs(fSuivreVariables, \"coauteursVariables\", CONFIANCE_DE_COAUTEUR);\n const fSuivreMotsClefs = async (fSuivreRacine) => {\n return await this.suivreMotsClefsMembre({\n idCompte: idCompte,\n f: (motsClefs) => fSuivreRacine(motsClefs || []),\n });\n };\n await inscrireSuiviAuteurs(fSuivreMotsClefs, \"coauteursMotsClefs\", CONFIANCE_DE_COAUTEUR);\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n }\n async suivreRelationsConfiance({ f, profondeur = Infinity, idCompteDébut, }) {\n const idCompteDébutFinal = idCompteDébut || (await this.client.obtIdCompte());\n const dicRelations = {};\n const dicOublierRelations = {};\n const verrou = new Semaphore();\n let fermer = false;\n const connectéPar = (id) => {\n return Object.entries(dicRelations)\n .filter(([_, info]) => info.relations.map((r) => r.idCompte).includes(id))\n .map(([de, _]) => de);\n };\n const calcProfondeurCompte = (id) => {\n if (id === idCompteDébutFinal)\n return 0;\n const rechercherP = ({ ids, p = 1, déjàVues = new Set(), }) => {\n const connexions = ids\n .map((id_) => connectéPar(id_).filter((x) => !déjàVues.has(x)))\n .flat();\n if (connexions.includes(idCompteDébutFinal)) {\n return p;\n }\n else if (connexions.length) {\n déjàVues = new Set(...déjàVues, ...connexions);\n return rechercherP({\n ids: connexions,\n p: p + 1,\n déjàVues,\n });\n }\n else {\n return Infinity; // Indique compte qui n'est plus connecté à `idCompteDébutFinal`\n }\n };\n return rechercherP({ ids: [id] });\n };\n const fFinale = async () => {\n const relationsFinales = [];\n for (const [de, info] of Object.entries(dicRelations)) {\n for (const r of info.relations) {\n const p = calcProfondeurCompte(de) + 1;\n relationsFinales.push({\n de,\n pour: r.idCompte,\n confiance: r.confiance,\n profondeur: p,\n });\n }\n }\n return await f(relationsFinales);\n };\n const suivreRelationsImmédiates = async (idCompte) => {\n dicRelations[idCompte] = { relations: [] };\n const fOublierRelationsImmédiates = await this.suivreRelationsImmédiates({\n f: (relations) => {\n if (dicRelations[idCompte]) {\n dicRelations[idCompte].relations = relations;\n fMiseÀJour();\n }\n },\n idCompte: idCompte,\n });\n dicOublierRelations[idCompte] = fOublierRelationsImmédiates;\n };\n const oublierRelationsImmédiates = async (idCompte) => {\n await dicOublierRelations[idCompte]();\n delete dicOublierRelations[idCompte];\n delete dicRelations[idCompte];\n };\n const fMiseÀJour = async () => {\n if (fermer)\n return;\n await verrou.acquire(\"modification\");\n const àOublier = Object.keys(dicRelations).filter((r) => calcProfondeurCompte(r) >= profondeur);\n const àSuivre = [\n ...new Set(Object.entries(dicRelations)\n .filter(([de, _]) => calcProfondeurCompte(de) + 1 < profondeur)\n .map(([_, info]) => info.relations.map((r) => r.idCompte))\n .flat()),\n ].filter((id) => !Object.keys(dicRelations).includes(id));\n await Promise.all(àOublier.map((id) => oublierRelationsImmédiates(id)));\n await Promise.all(àSuivre.map((id) => suivreRelationsImmédiates(id)));\n await fFinale();\n verrou.release(\"modification\");\n };\n await suivreRelationsImmédiates(idCompteDébutFinal);\n const fChangerProfondeur = async (p) => {\n profondeur = p;\n await fMiseÀJour();\n };\n const fOublier = async () => {\n fermer = true;\n await Promise.all(Object.values(dicOublierRelations).map((f) => f()));\n };\n return { fOublier, fChangerProfondeur };\n }\n async suivreComptesRéseau({ f, profondeur, idCompteDébut, }) {\n const fSuivi = async (relations) => {\n // S'ajouter soi-même\n relations.push({\n de: this.client.idCompte,\n pour: this.client.idCompte,\n confiance: 1,\n profondeur: 0,\n });\n const dicRelations = {};\n relations.forEach((r) => {\n if (!Object.keys(dicRelations).includes(r.pour)) {\n dicRelations[r.pour] = [];\n }\n dicRelations[r.pour].push(r);\n });\n const comptes = Object.entries(dicRelations).map(([idCompte, rs]) => {\n const maRelation = rs.find((r) => r.de === this.client.idCompte);\n if (maRelation?.confiance === 1 || maRelation?.confiance === -1) {\n return {\n idCompte,\n profondeur: maRelation.pour === this.client.idCompte ? 0 : 1,\n confiance: maRelation.confiance,\n };\n }\n const profondeurCompte = Math.min(...rs.map((r) => r.profondeur));\n const rsPositives = rs.filter((r) => r.confiance >= 0);\n const rsNégatives = rs.filter((r) => r.confiance < 0);\n const coûtNégatif = 1 -\n rsNégatives\n .map((r) => 1 +\n r.confiance *\n Math.pow(FACTEUR_ATÉNUATION_BLOQUÉS, r.profondeur - 1))\n .reduce((total, c) => c * total, 1);\n const confiance = 1 -\n rsPositives\n .map((r) => 1 -\n r.confiance *\n Math.pow(FACTEUR_ATÉNUATION_CONFIANCE, r.profondeur - 1))\n .reduce((total, c) => c * total, 1) -\n coûtNégatif;\n return {\n idCompte,\n profondeur: profondeurCompte,\n confiance,\n };\n });\n return await f(comptes);\n };\n return await this.suivreRelationsConfiance({\n f: fSuivi,\n profondeur,\n idCompteDébut,\n });\n }\n async suivreComptesRéseauEtEnLigne({ f, profondeur, idCompteDébut, }) {\n // Ne PAS mettre cette fonction en cache ! Ça ne fonctionne pas avec les\n // tailles=Infinity de suivreConnexionsMembres\n const dicComptes = {\n réseau: [],\n enLigne: [],\n };\n const fFinale = async () => {\n const membres = [...dicComptes.réseau];\n dicComptes.enLigne.forEach((c) => {\n if (!membres.find((m) => m.idCompte === c.idCompte)) {\n membres.push(c);\n }\n });\n return await f(membres);\n };\n const fOublierComptesEnLigne = await this.suivreConnexionsMembres({\n f: async (membres) => {\n const infoMembresEnLigne = membres\n .filter((m) => m.infoMembre.idCompte !== this.client.idCompte)\n .map((m) => {\n return {\n idCompte: m.infoMembre.idCompte,\n profondeur: Infinity,\n confiance: 0,\n };\n });\n dicComptes.enLigne = infoMembresEnLigne;\n return await fFinale();\n },\n });\n const fSuivreComptesRéseau = async (comptes) => {\n dicComptes.réseau = comptes;\n return await fFinale();\n };\n const { fOublier: fOublierComptesRéseau, fChangerProfondeur } = await this.suivreComptesRéseau({\n f: fSuivreComptesRéseau,\n profondeur,\n idCompteDébut,\n });\n const fOublier = async () => {\n await fOublierComptesEnLigne();\n await fOublierComptesRéseau();\n };\n return { fOublier, fChangerProfondeur };\n }\n async suivreConfianceMonRéseauPourMembre({ idCompte, f, profondeur, idCompteRéférence, }) {\n /*\n Note : Ne PAS envelopper cette fonction avec un `@cacheRechercheParProfondeur` !\n Elle retourne un nombre, pas une liste de résultat, et ça va bien sûr planter\n si on essaie de l'envelopper.\n */\n const idCompteRéférenceFinal = idCompteRéférence || (await this.client.obtIdCompte());\n const fFinale = async (membres) => {\n const infoRecherchée = membres.find((m) => m.idCompte === idCompte);\n return await f(infoRecherchée?.confiance || 0);\n };\n return await this.suivreComptesRéseau({\n f: fFinale,\n profondeur,\n idCompteDébut: idCompteRéférenceFinal,\n });\n }\n async suivreConnexionsPostesSFIP({ f, }) {\n const fFinale = async () => {\n const { sfip } = await this.client.attendreSfipEtOrbite();\n const pairs = sfip.libp2p.getPeers();\n const connexions = sfip.libp2p.getConnections();\n return await f(pairs.map((p) => {\n const pair = p.toString();\n const adresses = connexions\n .filter((c) => c.remotePeer.toString() === pair)\n .map((a) => a.remoteAddr.toString());\n return { pair, adresses };\n }));\n };\n this.événements.on(\"changementConnexions\", fFinale);\n await fFinale();\n const oublier = async () => {\n this.événements.off(\"changementConnexions\", fFinale);\n };\n return oublier;\n }\n async suivreConnexionsDispositifs({ f, }) {\n const moi = {\n infoDispositif: {\n idSFIP: (await this.client.obtIdSFIP()).toString(),\n idDispositif: await this.client.obtIdDispositif(),\n idCompte: await this.client.obtIdCompte(),\n clefPublique: (await this.client.obtIdentitéOrbite()).publicKey,\n encryption: {\n type: await this.client.encryption.obtNom(),\n clefPublique: (await this.client.encryption.obtClefs()).publique,\n },\n signatures: (await this.client.obtIdentitéOrbite()).signatures,\n },\n };\n const fFinale = async () => {\n return await f([...Object.values(this.dispositifsEnLigne), moi]);\n };\n this.événements.on(\"membreVu\", fFinale);\n await fFinale();\n const oublier = async () => {\n this.événements.off(\"membreVu\", fFinale);\n };\n return oublier;\n }\n async suivreConnexionsMembres({ f, }) {\n const fListe = async (fSuivreRacine) => {\n const fFinaleDispositifs = async (dispositifs) => {\n const membres = {};\n for (const d of dispositifs) {\n const { idCompte } = d.infoDispositif;\n if (!membres[idCompte]) {\n membres[idCompte] = {\n infoMembre: {\n idCompte: idCompte,\n dispositifs: [],\n },\n };\n }\n const { infoMembre, vuÀ } = membres[idCompte];\n infoMembre.dispositifs.push(d.infoDispositif);\n membres[idCompte].vuÀ = vuÀ\n ? d.vuÀ\n ? Math.max(vuÀ, d.vuÀ)\n : vuÀ\n : d.vuÀ;\n }\n return await fSuivreRacine(Object.values(membres));\n };\n return await this.suivreConnexionsDispositifs({ f: fFinaleDispositifs });\n };\n const fBranche = async (id, fSuivreBranche, branche) => {\n return await this.suivreProtocolesMembre({\n idCompte: id,\n f: (protocoles) => {\n fSuivreBranche({\n infoMembre: {\n ...branche.infoMembre,\n protocoles: Object.values(protocoles).flat(),\n },\n vuÀ: branche.vuÀ,\n });\n },\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f,\n fBranche,\n fIdBdDeBranche: (x) => x.infoMembre.idCompte,\n fCode: (x) => x.infoMembre.idCompte,\n });\n }\n async suivreProtocolesMembre({ f, idCompte, }) {\n return await this.client.suivreBdDicDeClef({\n id: idCompte || (await this.client.obtIdCompte()),\n clef: \"protocoles\",\n // @ts-expect-error Je ne sais pas pourquoi\n schéma: schémaStructureBdCompte,\n f,\n });\n }\n async suivreProtocolesDispositif({ idDispositif, f, }) {\n const idDispositifFinal = idDispositif || (await this.client.obtIdDispositif());\n const fRacine = async ({ fSuivreRacine, }) => {\n return await this.suivreConnexionsDispositifs({\n f: async (dispositifs) => {\n const dispositif = dispositifs.find((d) => d.infoDispositif.idDispositif === idDispositifFinal);\n if (dispositif) {\n const { idCompte } = dispositif.infoDispositif;\n return await fSuivreRacine(idCompte);\n }\n else {\n return await fSuivreRacine(undefined);\n }\n },\n });\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreProtocolesMembre({\n f: fSuivreBd,\n idCompte: id,\n });\n };\n const fFinale = async (protocoles) => {\n if (protocoles)\n return await f(protocoles[idDispositifFinal]);\n };\n return await suivreBdDeFonction({\n fRacine,\n f: fFinale,\n fSuivre,\n });\n }\n async rechercher({ f, nRésultatsDésirés = Infinity, fRecherche, fConfiance, fQualité, fObjectif, fScore, }) {\n if (!fScore) {\n fScore = (x) => {\n return (x.confiance + x.qualité + x.objectif.score) / 3;\n };\n }\n // Il y a probablement une meilleure façon de faire ça, mais pour l'instant ça passe\n fObjectif =\n fObjectif ||\n rechercherTous();\n const résultatsParMembre = {};\n const fsOublierRechercheMembres = {};\n const DÉLAI_REBOURS = 3000;\n let annulerRebours;\n let profondeur = 3;\n let annuler = false;\n const ajusterProfondeur = async (p) => {\n profondeur = p;\n if (fChangerProfondeur)\n await fChangerProfondeur(p);\n if (annulerRebours)\n clearTimeout(annulerRebours);\n };\n const débuterReboursAjusterProfondeur = (délai = DÉLAI_REBOURS) => {\n if (annuler)\n return;\n if (annulerRebours)\n clearTimeout(annulerRebours);\n const scores = Object.values(résultatsParMembre)\n .map((r) => r.résultats)\n .flat()\n .map((r) => r.résultatObjectif.score);\n const pireScoreInclus = scores.length >= nRésultatsDésirés\n ? Math.min(...scores.slice(0, nRésultatsDésirés))\n : 0;\n const parProfondeur = Object.values(résultatsParMembre).reduce(function (r, a) {\n r[String(a.membre.profondeur)] = r[String(a.membre.profondeur)] || [];\n r[String(a.membre.profondeur)].push(...a.résultats);\n return r;\n }, {});\n const lParProfondeur = Object.entries(parProfondeur)\n .sort((a, b) => (Number(a[0]) < Number(b[0]) ? -1 : 1))\n .map((p) => p[1]);\n const nScoresInclusParProfondeur = lParProfondeur.map((rs) => rs.filter((r) => r.résultatObjectif.score >= pireScoreInclus).length);\n const dernierTrois = nScoresInclusParProfondeur.slice(nScoresInclusParProfondeur.length - 3);\n const dernierQuatre = nScoresInclusParProfondeur.slice(nScoresInclusParProfondeur.length - 4);\n const nouvelleProfondeur = Math.max(3, sum(dernierTrois)\n ? profondeur + 1\n : sum(dernierQuatre)\n ? profondeur\n : profondeur - 1);\n if (nouvelleProfondeur > profondeur) {\n annulerRebours = setTimeout(() => ajusterProfondeur(nouvelleProfondeur), délai);\n }\n else if (nouvelleProfondeur < profondeur) {\n ajusterProfondeur(nouvelleProfondeur);\n }\n };\n const fFinale = async () => {\n const résultats = Object.values(résultatsParMembre)\n .map((listeRésultats) => listeRésultats.résultats)\n .flat();\n const résultatsOrdonnés = résultats.sort((a, b) => a.résultatObjectif.score < b.résultatObjectif.score ? 1 : -1);\n await f(résultatsOrdonnés.slice(0, nRésultatsDésirés));\n débuterReboursAjusterProfondeur();\n };\n const suivreRésultatsMembre = async (membre) => {\n const { idCompte } = membre;\n const fListe = async (fSuivreRacine) => {\n return await fRecherche({\n idCompte: membre.idCompte,\n fSuivi: async (résultats) => await fSuivreRacine(résultats || []),\n });\n };\n const fSuivi = async (résultats) => {\n résultatsParMembre[idCompte].résultats = résultats;\n return await fFinale();\n };\n const fBranche = async (id, fSuivreBranche) => {\n const rés = {\n id,\n };\n const fFinaleSuivreBranche = async () => {\n const { objectif, confiance, qualité } = rés;\n if (objectif && confiance !== undefined && qualité !== undefined) {\n const résultatFinalBranche = {\n id,\n résultatObjectif: {\n ...objectif,\n score: fScore(rés),\n },\n };\n return await fSuivreBranche(résultatFinalBranche);\n }\n else {\n return await fSuivreBranche(undefined);\n }\n };\n const fSuivreObjectif = async (objectif) => {\n rés.objectif = objectif;\n return await fFinaleSuivreBranche();\n };\n const fOublierObjectif = await fObjectif(this.client, id, fSuivreObjectif);\n const fSuivreConfiance = async (confiance) => {\n rés.confiance = confiance;\n return await fFinaleSuivreBranche();\n };\n const fOublierConfiance = await fConfiance(id, fSuivreConfiance);\n const fSuivreQualité = async (qualité) => {\n rés.qualité = qualité;\n return await fFinaleSuivreBranche();\n };\n const fOublierQualité = await fQualité(id, fSuivreQualité);\n const fOublierBranche = async () => {\n await Promise.all([\n fOublierObjectif(),\n fOublierConfiance(),\n fOublierQualité(),\n ]);\n };\n return fOublierBranche;\n };\n résultatsParMembre[idCompte] = {\n résultats: [],\n membre,\n mettreÀJour: fFinale,\n };\n const fOublierRechercheMembre = await suivreBdsDeFonctionListe({\n fListe,\n f: fSuivi,\n fBranche,\n });\n fsOublierRechercheMembres[idCompte] = fOublierRechercheMembre;\n };\n const oublierRésultatsMembre = async (compte) => {\n await fsOublierRechercheMembres[compte]();\n delete résultatsParMembre[compte];\n delete fsOublierRechercheMembres[compte];\n await fFinale();\n };\n const verrou = new Semaphore();\n const fSuivreComptes = async (comptes) => {\n await verrou.acquire(\"rechercher\");\n comptes = comptes.filter((c) => c.confiance >= 0); // Enlever les membres bloqués\n const nouveaux = comptes.filter((c) => !résultatsParMembre[c.idCompte]);\n const clefsObsolètes = Object.keys(résultatsParMembre).filter((m) => !comptes.find((c) => c.idCompte === m));\n const changés = comptes.filter((c) => {\n const avant = résultatsParMembre[c.idCompte];\n return (avant &&\n (c.confiance !== avant.membre.confiance ||\n c.profondeur !== avant.membre.profondeur));\n });\n await Promise.all(nouveaux.map(suivreRésultatsMembre));\n await Promise.all(changés.map(async (c) => await résultatsParMembre[c.idCompte].mettreÀJour(c)));\n await Promise.all(clefsObsolètes.map((o) => oublierRésultatsMembre(o)));\n verrou.release(\"rechercher\");\n };\n const { fChangerProfondeur, fOublier: fOublierSuivreComptes } = await this.suivreComptesRéseauEtEnLigne({\n f: fSuivreComptes,\n profondeur,\n });\n const fChangerN = async (nouveauN = Infinity) => {\n const nDésirésAvant = nRésultatsDésirés;\n nRésultatsDésirés = nouveauN;\n if (nouveauN !== nDésirésAvant) {\n await fFinale();\n débuterReboursAjusterProfondeur(0);\n }\n };\n const fOublier = async () => {\n annuler = true;\n if (annulerRebours)\n clearTimeout(annulerRebours);\n await fOublierSuivreComptes();\n await Promise.all(Object.values(fsOublierRechercheMembres).map((f) => f()));\n };\n return { fChangerN, fOublier };\n }\n async rechercherMembres({ f, nRésultatsDésirés, fObjectif, }) {\n const fConfiance = async (idCompte, fSuivi) => {\n const { fOublier } = await this.suivreConfianceMonRéseauPourMembre({\n idCompte: idCompte,\n f: fSuivi,\n profondeur: 4,\n });\n return fOublier;\n };\n const fRecherche = async ({ idCompte, fSuivi, }) => {\n await fSuivi([idCompte]); // Rien à faire parce que nous ne recherchons que le compte\n return faisRien;\n };\n const fQualité = async (idCompte, fSuivi) => {\n const fRechercherSelonActivité = rechercherProfilsSelonActivité();\n return await fRechercherSelonActivité(this.client, idCompte, async (résultat) => {\n await fSuivi(résultat?.score || 0);\n });\n };\n return await this.rechercher({\n f,\n nRésultatsDésirés,\n fRecherche,\n fConfiance,\n fQualité,\n fObjectif,\n });\n }\n async suivreConfianceAuteurs({ idItem, clef, f, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.suivreAuteursObjet({\n idObjet: idItem,\n clef,\n f: async (auteurs) => {\n const idsAuteurs = auteurs\n .filter((a) => a.accepté)\n .map((a) => a.idCompte);\n return await fSuivreRacine(idsAuteurs);\n },\n });\n };\n const fBranche = async (idAuteur, fSuivreBranche) => {\n const { fOublier } = await this.suivreConfianceMonRéseauPourMembre({\n idCompte: idAuteur,\n f: fSuivreBranche,\n profondeur: 4,\n });\n return fOublier;\n };\n const fFinale = async (confiances) => {\n const confiance = confiances.reduce((a, b) => a + b, 0);\n await f(confiance);\n };\n const fRéduction = (branches) => branches.flat();\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n fRéduction,\n });\n }\n async rechercherObjets({ f, clef, nRésultatsDésirés, fRecherche, fRechercheLesMiens, fQualité, fObjectif, toutLeRéseau = true, }) {\n if (!toutLeRéseau) {\n // Il y a probablement une meilleure façon de faire ça, mais pour l'instant ça passe\n const fObjectifFinal = fObjectif ||\n rechercherTous();\n return await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return {\n fOublier: await fRechercheLesMiens(fSuivreRacine),\n fChangerN: () => Promise.resolve(),\n }; // À faire : implémenter fChangerN ?\n },\n f,\n fBranche: async (id, fSuivreBranche) => await fObjectifFinal(this.client, id, async (résultat) => {\n if (résultat)\n return await fSuivreBranche({\n id,\n résultatObjectif: résultat,\n });\n }),\n });\n }\n const fRechercheFinale = async ({ idCompte, fSuivi, }) => {\n const résultats = {\n propres: [],\n favoris: [],\n };\n const fFinale = async () => {\n const tous = [...new Set([...résultats.propres, ...résultats.favoris])];\n await fSuivi(tous);\n };\n const fOublierPropres = await fRecherche({\n idCompte,\n f: async (propres) => {\n résultats.propres = propres || [];\n await fFinale();\n },\n });\n const fOublierFavoris = await this.suivreFavorisMembre({\n idCompte,\n f: async (favoris) => {\n résultats.favoris = favoris ? favoris.map((f) => f.idObjet) : [];\n await fFinale();\n },\n });\n return async () => {\n await fOublierPropres();\n await fOublierFavoris();\n };\n };\n const fConfiance = async (id, f) => {\n return await this.suivreConfianceAuteurs({ idItem: id, clef, f });\n };\n return await this.rechercher({\n f,\n nRésultatsDésirés,\n fRecherche: fRechercheFinale,\n fConfiance,\n fQualité,\n fObjectif,\n });\n }\n async rechercherNuées({ f, nRésultatsDésirés, fObjectif, toutLeRéseau = true, }) {\n const fRecherche = this.suivreNuéesMembre.bind(this);\n const fQualité = async (id, fSuivreQualité) => {\n return await this.client.nuées.suivreQualitéNuée({\n idNuée: id,\n f: fSuivreQualité,\n });\n };\n const fRechercheLesMiens = async (fSuivreRacine) => await this.client.nuées.suivreNuées({ f: fSuivreRacine });\n return await this.rechercherObjets({\n f,\n clef: \"nuées\",\n nRésultatsDésirés,\n fRecherche,\n fRechercheLesMiens,\n fQualité,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBds({ f, nRésultatsDésirés, fObjectif, toutLeRéseau = true, }) {\n const fRecherche = this.suivreBdsMembre.bind(this);\n const fQualité = async (id, fSuivreQualité) => {\n const fFinaleSuivreQualité = async (score) => {\n return await fSuivreQualité(score.total);\n };\n return await this.client.bds.suivreQualitéBd({\n idBd: id,\n f: fFinaleSuivreQualité,\n });\n };\n const fRechercheLesMiens = async (fSuivreRacine) => await this.client.bds.suivreBds({ f: fSuivreRacine });\n return await this.rechercherObjets({\n f,\n clef: \"bds\",\n nRésultatsDésirés,\n fRecherche,\n fRechercheLesMiens,\n fQualité,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherVariables({ f, nRésultatsDésirés, fObjectif, toutLeRéseau = true, }) {\n const fRecherche = this.suivreVariablesMembre.bind(this);\n const fQualité = async (id, fSuivreQualité) => {\n return await this.client.variables.suivreQualitéVariable({\n idVariable: id,\n f: fSuivreQualité,\n });\n };\n const fRechercheLesMiens = async (fSuivreRacine) => await this.client.variables.suivreVariables({\n f: fSuivreRacine,\n });\n return await this.rechercherObjets({\n f,\n clef: \"variables\",\n nRésultatsDésirés,\n fRecherche,\n fRechercheLesMiens,\n fQualité,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefs({ f, nRésultatsDésirés, fObjectif, toutLeRéseau = true, }) {\n const fRecherche = this.suivreMotsClefsMembre.bind(this);\n const fQualité = async (id, fSuivreQualité) => {\n return await this.client.motsClefs.suivreQualitéMotClef({\n idMotClef: id,\n f: fSuivreQualité,\n });\n };\n const fRechercheLesMiens = async (fSuivreRacine) => await this.client.motsClefs.suivreMotsClefs({\n f: fSuivreRacine,\n });\n return await this.rechercherObjets({\n f,\n clef: \"motsClefs\",\n nRésultatsDésirés,\n fRecherche,\n fRechercheLesMiens,\n fQualité,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjets({ f, nRésultatsDésirés, fObjectif, toutLeRéseau = true, }) {\n const fRecherche = this.suivreProjetsMembre.bind(this);\n const fQualité = async (id, fSuivreQualité) => {\n return await this.client.projets.suivreQualitéProjet({\n idProjet: id,\n f: fSuivreQualité,\n });\n };\n const fRechercheLesMiens = async (fSuivreRacine) => await this.client.projets.suivreProjets({ f: fSuivreRacine });\n return await this.rechercherObjets({\n f,\n clef: \"projets\",\n nRésultatsDésirés,\n fRecherche,\n fRechercheLesMiens,\n fQualité,\n fObjectif,\n toutLeRéseau,\n });\n }\n async suivreAuteursObjet({ idObjet, clef, f, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.client.suivreAccèsBd({ id: idObjet, f: fSuivreRacine });\n };\n const fBranche = async (idCompte, fSuivreBranche, branche) => {\n const fFinaleSuivreBranche = async (objetsMembre) => {\n objetsMembre = objetsMembre || [];\n return fSuivreBranche([\n {\n idCompte: branche.idCompte,\n rôle: branche.rôle,\n accepté: objetsMembre.includes(idObjet),\n },\n ]);\n };\n let fOublierBranche = undefined;\n switch (clef) {\n case \"motsClefs\":\n fOublierBranche = await this.client.motsClefs.suivreMotsClefs({\n f: fFinaleSuivreBranche,\n idCompte,\n });\n break;\n case \"variables\":\n fOublierBranche = await this.client.variables.suivreVariables({\n f: fFinaleSuivreBranche,\n idCompte,\n });\n break;\n case \"bds\":\n fOublierBranche = await this.client.bds.suivreBds({\n f: fFinaleSuivreBranche,\n idCompte,\n });\n break;\n case \"nuées\":\n fOublierBranche = await this.client.nuées.suivreNuées({\n f: fFinaleSuivreBranche,\n idCompte,\n });\n break;\n case \"projets\":\n fOublierBranche = await this.client.projets.suivreProjets({\n f: fFinaleSuivreBranche,\n idCompte,\n });\n break;\n default:\n throw new Error(clef);\n }\n return fOublierBranche;\n };\n const fIdBdDeBranche = (x) => x.idCompte;\n const fCode = (x) => x.idCompte;\n const fOublier = await suivreBdsDeFonctionListe({\n fListe,\n f,\n fBranche,\n fIdBdDeBranche,\n fCode,\n });\n return fOublier;\n }\n async suivreAuteursMotClef({ idMotClef, f, }) {\n return await this.suivreAuteursObjet({\n idObjet: idMotClef,\n clef: \"motsClefs\",\n f,\n });\n }\n async suivreAuteursVariable({ idVariable, f, }) {\n return await this.suivreAuteursObjet({\n idObjet: idVariable,\n clef: \"variables\",\n f,\n });\n }\n async suivreAuteursBd({ idBd, f, }) {\n return await this.suivreAuteursObjet({ idObjet: idBd, clef: \"bds\", f });\n }\n async suivreAuteursProjet({ idProjet, f, }) {\n return await this.suivreAuteursObjet({\n idObjet: idProjet,\n clef: \"projets\",\n f,\n });\n }\n async suivreAuteursNuée({ idNuée, f, }) {\n return await this.suivreAuteursObjet({\n idObjet: idNuée,\n clef: \"nuées\",\n f,\n });\n }\n async suivreObjetsMembre({ idCompte, fListeObjets, fSuivi, }) {\n return await this.client.suivreBdsSelonCondition({\n fListe: fListeObjets,\n fCondition: async (id, fSuivreCondition) => {\n return await this.client.suivreAccèsBd({\n id,\n f: (autorisés) => fSuivreCondition(autorisés.map((a) => a.idCompte).includes(idCompte)),\n });\n },\n f: fSuivi,\n });\n }\n async suivreBdsMembre({ idCompte, f, }) {\n return await this.suivreObjetsMembre({\n idCompte,\n fListeObjets: async (fSuivre) => await this.client.bds.suivreBds({ f: fSuivre, idCompte }),\n fSuivi: f,\n });\n }\n async suivreProjetsMembre({ idCompte, f, }) {\n return await this.suivreObjetsMembre({\n idCompte,\n fListeObjets: async (fSuivi) => await this.client.projets.suivreProjets({\n f: fSuivi,\n idCompte,\n }),\n fSuivi: f,\n });\n }\n async suivreFavorisMembre({ idCompte, f, }) {\n // suivreFavoris est différent parce qu'on n'a pas besoin de vérifier l'autorisation du membre\n return await this.client.favoris.suivreFavoris({\n f,\n idCompte,\n });\n }\n async suivreVariablesMembre({ idCompte, f, }) {\n return await this.suivreObjetsMembre({\n idCompte,\n fListeObjets: async (fSuivi) => await this.client.variables.suivreVariables({\n f: fSuivi,\n idCompte,\n }),\n fSuivi: f,\n });\n }\n async suivreMotsClefsMembre({ idCompte, f, }) {\n return await this.suivreObjetsMembre({\n idCompte,\n fListeObjets: async (fSuivi) => await this.client.motsClefs.suivreMotsClefs({\n f: fSuivi,\n idCompte,\n }),\n fSuivi: f,\n });\n }\n async suivreNuéesMembre({ idCompte, f, }) {\n return await this.suivreObjetsMembre({\n idCompte,\n fListeObjets: async (fSuivi) => await this.client.nuées.suivreNuées({\n f: fSuivi,\n idCompte,\n }),\n fSuivi: f,\n });\n }\n async suivreFavorisObjet({ idObjet, f, profondeur, }) {\n const fFinale = async (favoris) => {\n const favorisDIntérêt = favoris.filter((f) => f.idObjet === idObjet);\n await f(favorisDIntérêt);\n };\n const fListe = async (fSuivreRacine) => {\n const fSuivreComptes = async (infosMembres) => {\n // On s'ajoute à la liste des favoris\n return await fSuivreRacine([\n this.client.idCompte,\n ...infosMembres.map((i) => i.idCompte),\n ]);\n };\n return await this.suivreComptesRéseauEtEnLigne({\n f: fSuivreComptes,\n profondeur,\n idCompteDébut: this.client.idCompte,\n });\n };\n const fBranche = async (idCompte, fSuivreBranche) => {\n return await this.suivreFavorisMembre({\n idCompte: idCompte,\n f: (favoris) => fSuivreBranche(favoris\n ? favoris.map((fav) => {\n return { idCompte, ...fav };\n })\n : undefined),\n });\n };\n return await this.client.suivreBdsDeFonctionRecherche({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreRéplications({ idObjet, f, profondeur, }) {\n const résultats = { connexionsMembres: [], connexionsDispositifs: [], favoris: [] };\n const fFinale = async () => {\n const { connexionsMembres, favoris } = résultats;\n const idsMembres = favoris.map((fav) => fav.favoris.idCompte);\n const membres = connexionsMembres.filter((c) => idsMembres.includes(c.infoMembre.idCompte));\n const dispositifs = (await Promise.all(favoris.map(async (fav) => {\n const { favoris, dispositifs } = fav;\n return await Promise.all(dispositifs.map(async (d) => {\n const vuÀ = résultats.connexionsDispositifs.find((c) => c.infoDispositif.idDispositif === d)?.vuÀ;\n const idCompte = résultats.connexionsDispositifs.find((c) => c.infoDispositif.idDispositif === d)?.infoDispositif.idCompte;\n const dispositifsRéplication = {\n idObjet,\n idDispositif: d,\n idCompte,\n bd: await this.client.favoris.estÉpingléSurDispositif({\n dispositifs: favoris.dispositifs,\n idDispositif: d,\n }),\n fichiers: await this.client.favoris.estÉpingléSurDispositif({\n dispositifs: favoris.dispositifsFichiers,\n idDispositif: d,\n }),\n récursif: favoris.récursif,\n vuÀ,\n };\n return dispositifsRéplication;\n }));\n }))).flat();\n const réplications = {\n membres,\n dispositifs,\n };\n return await f(réplications);\n };\n const fOublierConnexionsMembres = await this.suivreConnexionsMembres({\n f: async (connexions) => {\n résultats.connexionsMembres = connexions;\n return await fFinale();\n },\n });\n const fOublierConnexionsDispositifs = await this.suivreConnexionsDispositifs({\n f: async (connexions) => {\n résultats.connexionsDispositifs = connexions;\n return await fFinale();\n },\n });\n const fSuivreFavoris = async (favoris) => {\n résultats.favoris = favoris;\n return await fFinale();\n };\n const fListeFavoris = async (fSuivreRacine) => {\n return await this.suivreFavorisObjet({\n idObjet,\n f: fSuivreRacine,\n profondeur,\n });\n };\n const fBrancheFavoris = async (id, fSuivreBranche, branche) => {\n const fSuivreDispositifsMembre = async (dispositifs) => {\n return await fSuivreBranche({ favoris: branche, dispositifs });\n };\n const fOublierDispositifsMembre = await this.client.suivreDispositifs({\n f: fSuivreDispositifsMembre,\n idCompte: id,\n });\n return async () => {\n await fOublierDispositifsMembre();\n };\n };\n const fIdBdDeBranche = (x) => x.idCompte;\n const fCode = (x) => x.idCompte;\n const { fOublier: fOublierFavoris, fChangerProfondeur } = await this.client.suivreBdsDeFonctionRecherche({\n fListe: fListeFavoris,\n f: fSuivreFavoris,\n fBranche: fBrancheFavoris,\n fIdBdDeBranche,\n fCode,\n });\n const fOublier = async () => {\n await fOublierFavoris();\n await fOublierConnexionsMembres();\n await fOublierConnexionsDispositifs();\n };\n return { fOublier, fChangerProfondeur };\n }\n async suivreBdsDeNuée({ idNuée, f, nRésultatsDésirés, }) {\n const fBranche = async (idCompte, f) => {\n return await this.client.bds.rechercherBdsParNuée({\n idNuée,\n f,\n idCompte,\n });\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreComptesRéseauEtEnLigne({\n f: async (résultats) => await fSuivreRacine(résultats.map((r) => r.idCompte)),\n profondeur: nRésultatsDésirés,\n });\n };\n return await this.client.suivreBdsDeFonctionRecherche({\n fListe,\n f,\n fBranche,\n });\n }\n async suivreÉlémentsDeTableauxUniques({ idNuéeUnique, clef, f, nBds = 100, }) {\n const fListe = async (fSuivreRacine) => {\n const fListeListe = async (fSuivreRacineListe) => {\n return await this.suivreBdsDeNuée({\n idNuée: idNuéeUnique,\n f: fSuivreRacineListe,\n nRésultatsDésirés: nBds,\n });\n };\n const fBrancheListe = async (idBd, f) => {\n return await this.suivreAuteursBd({\n idBd,\n f: async (auteurs) => {\n const idCompte = auteurs.find((a) => a.accepté)?.idCompte;\n const infoBdDeMembre = idCompte\n ? {\n bd: idBd,\n idCompte,\n }\n : undefined;\n return await f(infoBdDeMembre);\n },\n });\n };\n return await this.client.suivreBdsDeFonctionRecherche({\n fListe: fListeListe,\n f: fSuivreRacine,\n fBranche: fBrancheListe,\n });\n };\n const fBranche = async (idBd, f, branche) => {\n const { idCompte } = branche;\n const fSuivreTableaux = async ({ fSuivreRacine, }) => {\n return await this.client.bds.suivreIdTableauParClef({\n idBd,\n clef,\n f: (idTableau) => {\n if (idTableau)\n fSuivreRacine(idTableau);\n },\n });\n };\n const fSuivreDonnéesDeTableau = async ({ id, fSuivreBd, }) => {\n const fSuivreDonnéesTableauFinale = async (données) => {\n const donnéesMembre = données.map((d) => {\n return {\n idCompte,\n élément: d,\n };\n });\n return await fSuivreBd(donnéesMembre);\n };\n return await this.client.tableaux.suivreDonnées({\n idTableau: id,\n f: fSuivreDonnéesTableauFinale,\n });\n };\n const fFinale = async (données) => {\n return await f(données || []);\n };\n return await suivreBdDeFonction({\n fRacine: fSuivreTableaux,\n f: fFinale,\n fSuivre: fSuivreDonnéesDeTableau,\n });\n };\n const fIdBdDeBranche = (b) => b.bd;\n const fCode = (b) => b.bd;\n return await this.client.suivreBdsDeFonctionRecherche({\n fListe,\n f,\n fBranche,\n fIdBdDeBranche,\n fCode,\n });\n }\n async fermer() {\n this._fermé = true;\n await Promise.all(this.fsOublier.map((f) => f()));\n }\n}\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreFiables\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreBloqu\\u00E9sPubliques\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreBloqu\\u00E9s\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreRelationsImm\\u00E9diates\", null);\n__decorate([\n cacheRechercheParProfondeur\n], Réseau.prototype, \"suivreRelationsConfiance\", null);\n__decorate([\n cacheRechercheParProfondeur\n], Réseau.prototype, \"suivreComptesR\\u00E9seau\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreConnexionsPostesSFIP\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreConnexionsDispositifs\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreConnexionsMembres\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreProtocolesMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreProtocolesDispositif\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreAuteursObjet\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreBdsMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreProjetsMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreFavorisMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreVariablesMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreMotsClefsMembre\", null);\n__decorate([\n cacheSuivi\n], Réseau.prototype, \"suivreNu\\u00E9esMembre\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Réseau.prototype, \"suivreBdsDeNu\\u00E9e\", null);\n//# sourceMappingURL=reseau.js.map","import Semaphore from \"@chriscdn/promise-semaphore\";\nimport EventEmitter from \"events\";\nconst importationAuth = import(\"@localfirst/auth\");\nconst importationCrypto = import(\"@localfirst/crypto\");\nconst verrouImportation = new Semaphore();\nlet auth;\nconst obtAuth = async () => {\n await verrouImportation.acquire(\"auth\");\n if (!auth)\n auth = await importationAuth;\n verrouImportation.release(\"auth\");\n return auth;\n};\nlet crypto;\nconst obtCrypto = async () => {\n await verrouImportation.acquire(\"crypto\");\n if (!crypto)\n crypto = await importationCrypto;\n verrouImportation.release(\"crypto\");\n return crypto;\n};\nexport class EncryptionLocalFirst {\n événements;\n clefs;\n nom = \"local-first-auth\";\n constructor() {\n this.événements =\n new EventEmitter();\n obtAuth().then(({ asymmetric }) => {\n const { publicKey, secretKey } = asymmetric.keyPair();\n this.clefs = { secrète: secretKey, publique: publicKey };\n this.événements.emit(\"clefs\", this.clefs);\n });\n }\n async obtClefs() {\n const clefs = this.clefs ||\n (await new Promise((résoudre) => {\n this.événements.once(\"clefs\", résoudre);\n }));\n return clefs;\n }\n async encrypter({ message, clefPubliqueDestinataire, }) {\n const { asymmetric } = await obtAuth();\n const clefs = await this.obtClefs();\n return asymmetric\n .encrypt({\n secret: message,\n recipientPublicKey: clefPubliqueDestinataire,\n senderSecretKey: clefs.secrète,\n })\n .toString();\n }\n async décrypter({ message, clefPubliqueExpéditeur, }) {\n const { asymmetric } = await obtAuth();\n const clefs = await this.obtClefs();\n return asymmetric.decrypt({\n cipher: message,\n recipientSecretKey: clefs.secrète,\n senderPublicKey: clefPubliqueExpéditeur,\n });\n }\n async clefAléatoire(n = 6) {\n const { randomKey } = await obtCrypto();\n return randomKey(n);\n }\n async obtNom() {\n return this.nom;\n }\n}\n//# sourceMappingURL=encryption.js.map","import { __decorate } from \"tslib\";\nimport { isNode, isElectronMain } from \"wherearewe\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { ComposanteClientDic } from \"./composanteClient.js\";\nconst schémaBdPrincipale = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n properties: {\n dispositifs: {\n anyOf: [\n {\n type: \"array\",\n items: { type: \"string\" },\n },\n { type: \"string\" },\n ],\n },\n dispositifsFichiers: {\n type: [\"array\", \"string\"],\n anyOf: [\n {\n type: \"array\",\n items: { type: \"string\" },\n nullable: true,\n },\n {\n type: \"string\",\n nullable: true,\n },\n ],\n nullable: true,\n },\n récursif: { type: \"boolean\" },\n },\n required: [\"dispositifs\", \"récursif\"],\n },\n required: [],\n};\nexport class Favoris extends ComposanteClientDic {\n _promesseInit;\n oublierÉpingler;\n constructor({ client }) {\n super({ client, clef: \"favoris\", schémaBdPrincipale });\n this._promesseInit = this._épinglerFavoris();\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async _épinglerFavoris() {\n let précédentes = [];\n const fFinale = async (favoris) => {\n const nouvelles = [];\n await Promise.all(Object.entries(favoris).map(async ([id, fav]) => {\n const épinglerBd = await this.estÉpingléSurDispositif({\n dispositifs: fav.dispositifs,\n });\n const épinglerFichiers = await this.estÉpingléSurDispositif({\n dispositifs: fav.dispositifsFichiers,\n });\n if (épinglerBd)\n await this.client.épingles.épinglerBd({\n id,\n récursif: fav.récursif,\n fichiers: épinglerFichiers,\n });\n nouvelles.push(id);\n }));\n const àOublier = précédentes.filter((id) => !nouvelles.includes(id));\n await Promise.all(àOublier.map(async (id) => await this.client.épingles.désépinglerBd({ id })));\n précédentes = nouvelles;\n };\n const fOublier = await this.suivreBdPrincipale({\n f: fFinale,\n });\n this.oublierÉpingler = fOublier;\n }\n async suivreFavoris({ f, idCompte, }) {\n const fFinale = async (favoris) => {\n const favorisFinaux = Object.entries(favoris).map(([idObjet, élément]) => {\n return {\n idObjet,\n ...élément,\n };\n });\n await f(favorisFinaux);\n };\n return await this.suivreBdPrincipale({\n idCompte,\n f: fFinale,\n });\n }\n async épinglerFavori({ idObjet, dispositifs = \"TOUS\", dispositifsFichiers = \"INSTALLÉ\", récursif = true, }) {\n const { bd, fOublier } = await this.obtBd();\n const élément = {\n récursif,\n dispositifs,\n };\n if (dispositifsFichiers)\n élément.dispositifsFichiers = dispositifsFichiers;\n await bd.put(idObjet, élément);\n await fOublier();\n }\n async désépinglerFavori({ idObjet }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.del(idObjet);\n await fOublier();\n }\n async suivreÉtatFavori({ idObjet, f, }) {\n return await this.suivreBdPrincipale({\n f: (favoris) => f(favoris[idObjet]),\n });\n }\n async suivreEstÉpingléSurDispositif({ idObjet, f, idDispositif, }) {\n const fFinale = async (élément) => {\n const bdEstÉpinglée = await this.estÉpingléSurDispositif({\n dispositifs: élément?.dispositifs,\n idDispositif,\n });\n const fichiersSontÉpinglés = await this.estÉpingléSurDispositif({\n dispositifs: élément?.dispositifsFichiers,\n idDispositif,\n });\n return await f({\n idObjet,\n bd: bdEstÉpinglée,\n fichiers: fichiersSontÉpinglés,\n récursif: élément?.récursif || false,\n });\n };\n return await this.suivreÉtatFavori({ idObjet, f: fFinale });\n }\n async estÉpingléSurDispositif({ dispositifs, idDispositif, }) {\n idDispositif = idDispositif || (await this.client.obtIdDispositif());\n if (dispositifs === undefined) {\n return false;\n }\n else if (dispositifs === \"TOUS\") {\n return true;\n }\n else if (dispositifs === \"INSTALLÉ\") {\n if (idDispositif === (await this.client.obtIdDispositif())) {\n return isNode || isElectronMain;\n }\n else {\n return false; // En réalité, inconnu. Mais on ne peut pas magiquement deviner la plateforme d'un autre paire.\n }\n }\n else if (typeof dispositifs === \"string\") {\n return dispositifs === idDispositif;\n }\n else {\n return dispositifs.includes(idDispositif);\n }\n }\n async fermer() {\n await this._promesseInit;\n if (this.oublierÉpingler)\n await this.oublierÉpingler();\n }\n}\n__decorate([\n cacheSuivi\n], Favoris.prototype, \"suivreFavoris\", null);\n__decorate([\n cacheSuivi\n], Favoris.prototype, \"suivre\\u00C9tatFavori\", null);\n__decorate([\n cacheSuivi\n], Favoris.prototype, \"suivreEst\\u00C9pingl\\u00E9SurDispositif\", null);\n//# sourceMappingURL=favoris.js.map","import { __decorate } from \"tslib\";\nimport { write as writeXLSX, utils } from \"xlsx\";\nimport toBuffer from \"it-to-buffer\";\nimport path from \"path\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { schémaStructureBdNoms, } from \"./types.js\";\nimport { traduire, zipper, uneFois, attendreStabilité, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { ComposanteClientListe } from \"./composanteClient.js\";\nimport { estUnContrôleurConstellation } from \"./accès/utils.js\";\nconst schémaStructureBdMotsClefsdeProjet = {\n type: \"string\",\n};\nconst schémaStuctureBdsDeProjet = { type: \"string\" };\nexport const MAX_TAILLE_IMAGE = 500 * 1000; // 500 kilooctets\nexport const MAX_TAILLE_IMAGE_VIS = 1500 * 1000; // 1,5 megaoctets\nconst schémaBdPrincipale = { type: \"string\" };\nconst schémaStructureBdProjet = {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n noms: { type: \"string\" },\n descriptions: { type: \"string\" },\n bds: { type: \"string\" },\n image: { type: \"string\", nullable: true },\n motsClefs: { type: \"string\" },\n statut: {\n type: \"object\",\n properties: {\n statut: { type: \"string\" },\n idNouvelle: { type: \"string\", nullable: true },\n },\n required: [\"statut\"],\n },\n copiéDe: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n },\n required: [\"id\"],\n },\n },\n required: [\"noms\", \"descriptions\", \"statut\", \"type\", \"bds\", \"copiéDe\"],\n};\nexport class Projets extends ComposanteClientListe {\n constructor({ client }) {\n super({ client, clef: \"projets\", schémaBdPrincipale: schémaBdPrincipale });\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async suivreProjets({ f, idCompte, }) {\n return await this.suivreBdPrincipale({\n idCompte,\n f,\n });\n }\n async créerProjet() {\n const { bd: bdRacine, fOublier: fOublierRacine } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n const idBdProjet = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n address: undefined,\n write: await this.client.obtIdCompte(),\n },\n });\n const { bd: bdProjet, fOublier: fOublierProjet } = await this.client.ouvrirBdTypée({\n id: idBdProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n const accès = bdProjet.access;\n if (!estUnContrôleurConstellation(accès))\n throw Error(\"Contrôleur de type non reconnu.\");\n const optionsAccès = { address: accès.address };\n await bdProjet.set(\"type\", \"projet\");\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdProjet.set(\"noms\", idBdNoms);\n const idBdDescr = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdProjet.set(\"descriptions\", idBdDescr);\n const idBdBds = await this.client.créerBdIndépendante({\n type: \"set\",\n optionsAccès,\n });\n await bdProjet.set(\"bds\", idBdBds);\n const idBdMotsClefs = await this.client.créerBdIndépendante({\n type: \"set\",\n optionsAccès,\n });\n await bdProjet.set(\"motsClefs\", idBdMotsClefs);\n await bdProjet.set(\"statut\", { statut: \"active\" });\n await bdRacine.add(idBdProjet);\n await Promise.all([fOublierRacine(), fOublierProjet()]);\n return idBdProjet;\n }\n async copierProjet({ idProjet }) {\n const { bd: bdBase, fOublier: fOublierBase } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n const idNouveauProjet = await this.créerProjet();\n const { bd: nouvelleBd, fOublier: fOublierNouvelle } = await this.client.ouvrirBdTypée({\n id: idNouveauProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await fOublierNoms();\n await this.sauvegarderNomsProjet({ idProjet: idNouveauProjet, noms });\n }\n const idBdDescr = await bdBase.get(\"descriptions\");\n if (idBdDescr) {\n const { bd: bdDescr, fOublier: fOublierDescr } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const descriptions = await bdDescr.allAsJSON();\n await fOublierDescr();\n await this.sauvegarderDescriptionsProjet({\n idProjet: idNouveauProjet,\n descriptions,\n });\n }\n const idBdMotsClefs = await bdBase.get(\"motsClefs\");\n if (idBdMotsClefs) {\n const { bd: bdMotsClefs, fOublier: fOublierMotsClefs } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaStructureBdMotsClefsdeProjet,\n });\n const idsMotsClefs = (await bdMotsClefs.all()).map((x) => x.value);\n await fOublierMotsClefs();\n await this.ajouterMotsClefsProjet({\n idProjet: idNouveauProjet,\n idsMotsClefs,\n });\n }\n const idBdBds = await bdBase.get(\"bds\");\n if (idBdBds) {\n const { bd: bdBds, fOublier: fOublierBds } = await this.client.ouvrirBdTypée({\n id: idBdBds,\n type: \"set\",\n schéma: schémaStuctureBdsDeProjet,\n });\n const bds = (await bdBds.all()).map((x) => x.value);\n await fOublierBds();\n await Promise.all(bds.map(async (idBd) => {\n await this.ajouterBdProjet({ idProjet: idNouveauProjet, idBd });\n }));\n }\n const statut = (await bdBase.get(\"statut\")) || {\n statut: \"active\",\n };\n await nouvelleBd.set(\"statut\", statut);\n const image = await bdBase.get(\"image\");\n if (image)\n await nouvelleBd.set(\"image\", image);\n await nouvelleBd.set(\"copiéDe\", { id: idProjet });\n await Promise.all([fOublierBase(), fOublierNouvelle()]);\n return idNouveauProjet;\n }\n async ajouterÀMesProjets({ idProjet }) {\n const { bd: bdRacine, fOublier } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bdRacine.add(idProjet);\n await fOublier();\n }\n async enleverDeMesProjets({ idProjet }) {\n const { bd: bdRacine, fOublier } = await this.client.ouvrirBdTypée({\n id: await this.obtIdBd(),\n type: \"set\",\n schéma: schémaBdPrincipale,\n });\n await bdRacine.del(idProjet);\n await fOublier();\n }\n async inviterAuteur({ idProjet, idCompteAuteur, rôle, }) {\n await this.client.donnerAccès({\n idBd: idProjet,\n identité: idCompteAuteur,\n rôle,\n });\n }\n async _obtBdNoms({ idProjet }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idProjet,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour Projet ${idProjet}.`);\n }\n return await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n }\n async sauvegarderNomsProjet({ idProjet, noms, }) {\n const { bd: bdNoms, fOublier } = await this._obtBdNoms({ idProjet });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async sauvegarderNomProjet({ idProjet, langue, nom, }) {\n const { bd: bdNoms, fOublier } = await this._obtBdNoms({ idProjet });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async effacerNomProjet({ idProjet, langue, }) {\n const { bd: bdNoms, fOublier } = await this._obtBdNoms({ idProjet });\n await bdNoms.del(langue);\n await fOublier();\n }\n async _obtBdDescr({ idProjet }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idProjet,\n type: \"keyvalue\",\n });\n if (!idBdDescr) {\n throw new Error(`Permission de modification refusée pour Projet ${idProjet}.`);\n }\n return await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n }\n async sauvegarderDescriptionsProjet({ idProjet, descriptions, }) {\n const { bd: bdDescr, fOublier } = await this._obtBdDescr({ idProjet });\n for (const lng in descriptions) {\n await bdDescr.set(lng, descriptions[lng]);\n }\n await fOublier();\n }\n async sauvegarderDescriptionProjet({ idProjet, langue, description, }) {\n const { bd: bdDescr, fOublier } = await this._obtBdDescr({ idProjet });\n await bdDescr.set(langue, description);\n await fOublier();\n }\n async effacerDescriptionProjet({ idProjet, langue, }) {\n const { bd: bdDescr, fOublier } = await this._obtBdDescr({ idProjet });\n await bdDescr.del(langue);\n await fOublier();\n }\n async _obtBdMotsClefs({ idProjet, }) {\n const idBdMotsClefs = await this.client.obtIdBd({\n nom: \"motsClefs\",\n racine: idProjet,\n type: \"set\",\n });\n if (!idBdMotsClefs) {\n throw new Error(`Permission de modification refusée pour projet ${idProjet}.`);\n }\n return await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaStructureBdMotsClefsdeProjet,\n });\n }\n async ajouterMotsClefsProjet({ idProjet, idsMotsClefs, }) {\n if (!Array.isArray(idsMotsClefs))\n idsMotsClefs = [idsMotsClefs];\n const { bd: bdMotsClefs, fOublier } = await this._obtBdMotsClefs({\n idProjet,\n });\n await Promise.all(idsMotsClefs.map(async (id) => {\n const motsClefsExistants = (await bdMotsClefs.all()).map((x) => x.value);\n if (!motsClefsExistants.includes(id))\n await bdMotsClefs.add(id);\n }));\n await fOublier();\n }\n async effacerMotClefProjet({ idProjet, idMotClef, }) {\n const { bd: bdMotsClefs, fOublier } = await this._obtBdMotsClefs({\n idProjet,\n });\n await bdMotsClefs.del(idMotClef);\n await fOublier();\n }\n async _obtBdBds({ idProjet, }) {\n const idBdBds = await this.client.obtIdBd({\n nom: \"bds\",\n racine: idProjet,\n type: \"set\",\n });\n if (!idBdBds)\n throw new Error(`Permission de modification refusée pour Projet ${idProjet}.`);\n return await this.client.ouvrirBdTypée({\n id: idBdBds,\n type: \"set\",\n schéma: schémaStructureBdMotsClefsdeProjet,\n });\n }\n async ajouterBdProjet({ idProjet, idBd, }) {\n const { bd: bdBds, fOublier } = await this._obtBdBds({ idProjet });\n await bdBds.add(idBd);\n await fOublier();\n }\n async effacerBdProjet({ idProjet, idBd, }) {\n const { bd: bdBds, fOublier } = await this._obtBdBds({ idProjet });\n // Effacer l'entrée dans notre liste de bds (n'efface pas la BD elle-même)\n await bdBds.del(idBd);\n await fOublier();\n }\n async marquerObsolète({ idProjet, idNouvelle, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n bd.set(\"statut\", { statut: \"obsolète\", idNouvelle });\n await fOublier();\n }\n async changerStatutProjet({ idProjet, statut, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n bd.set(\"statut\", statut);\n await fOublier();\n }\n async marquerActif({ idProjet }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n bd.set(\"statut\", { statut: \"active\" });\n await fOublier();\n }\n async marquerJouet({ idProjet }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n bd.set(\"statut\", { statut: \"jouet\" });\n await fOublier();\n }\n async marquerInterne({ idProjet }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n bd.set(\"statut\", { statut: \"interne\" });\n await fOublier();\n }\n async sauvegarderImage({ idProjet, image, }) {\n if (image.contenu.byteLength > MAX_TAILLE_IMAGE) {\n throw new Error(\"Taille maximale excédée\");\n }\n const idImage = await this.client.ajouterÀSFIP(image);\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n await bd.set(\"image\", idImage);\n await fOublier();\n }\n async effacerImage({ idProjet }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n });\n await bd.del(\"image\");\n await fOublier();\n }\n async suivreImage({ idProjet, f, }) {\n return await this.client.suivreBd({\n id: idProjet,\n type: \"keyvalue\",\n schéma: schémaStructureBdProjet,\n f: async (bd) => {\n const idImage = await bd.get(\"image\");\n if (!idImage) {\n return await f(null);\n }\n else {\n const image = await this.client.obtFichierSFIP({\n id: idImage,\n max: MAX_TAILLE_IMAGE_VIS,\n });\n return await f(image);\n }\n },\n });\n }\n async suivreNomsProjet({ idProjet, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idProjet,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreDescriptionsProjet({ idProjet, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idProjet,\n clef: \"descriptions\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async suivreMotsClefsProjet({ idProjet, f, }) {\n const motsClefs = {};\n const fFinale = async () => {\n if (motsClefs.propres && motsClefs.bds) {\n const motsClefsFinaux = [\n ...motsClefs.propres.map((idMotClef) => ({\n idMotClef,\n source: \"projet\",\n })),\n ...motsClefs.bds.map((idMotClef) => ({ idMotClef, source: \"bds\" })),\n ];\n return await f(motsClefsFinaux);\n }\n };\n const fFinalePropres = async (mots) => {\n motsClefs.propres = mots;\n return await fFinale();\n };\n const fOublierMotsClefsPropres = await this.client.suivreBdListeDeClef({\n id: idProjet,\n clef: \"motsClefs\",\n schéma: { type: \"string\" },\n f: fFinalePropres,\n });\n const fFinaleBds = async (mots) => {\n motsClefs.bds = mots;\n return await fFinale();\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBdsProjet({ idProjet, f: fSuivreRacine });\n };\n const fBranche = async (idBd, fSuivi) => {\n return await this.client.bds.suivreMotsClefsBd({ idBd, f: fSuivi });\n };\n const fOublierMotsClefsBds = await suivreBdsDeFonctionListe({\n fListe,\n f: fFinaleBds,\n fBranche,\n });\n return async () => {\n await fOublierMotsClefsPropres();\n await fOublierMotsClefsBds();\n };\n }\n async suivreBdsProjet({ idProjet, f, }) {\n return await this.client.suivreBdListeDeClef({\n id: idProjet,\n clef: \"bds\",\n schéma: { type: \"string\" },\n f,\n });\n }\n async suivreVariablesProjet({ idProjet, f, }) {\n const fFinale = async (variables) => {\n return await f(variables || []);\n };\n const fBranche = async (idBd, f) => {\n return await this.client.bds.suivreVariablesBd({ idBd, f });\n };\n const fSuivreBds = async ({ id, fSuivreBd, }) => {\n return await this.client.suivreBdsDeBdListe({\n id,\n f: fSuivreBd,\n fBranche,\n });\n };\n return await this.client.suivreBdDeClef({\n id: idProjet,\n clef: \"bds\",\n f: fFinale,\n fSuivre: fSuivreBds,\n });\n }\n async suivreQualitéProjet({ idProjet, f, }) {\n const fFinale = async (scoresBds) => {\n return await f(scoresBds.length\n ? scoresBds.reduce((a, b) => a + b, 0) / scoresBds.length\n : 0);\n };\n const fListe = async (fSuiviListe) => {\n return await this.suivreBdsProjet({ idProjet, f: fSuiviListe });\n };\n const fBranche = async (idBd, fSuiviBranche) => {\n return await this.client.bds.suivreQualitéBd({\n idBd,\n f: (score) => fSuiviBranche(score.total),\n });\n };\n const fRéduction = (scores) => {\n return scores.flat();\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n fRéduction,\n });\n }\n async suivreDonnéesExportation({ idProjet, langues, f, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n const { nomsProjet, données } = info;\n if (!données)\n return;\n const idCourt = idProjet.split(\"/\").pop();\n const nomProjet = nomsProjet && langues\n ? traduire(nomsProjet, langues) || idCourt\n : idCourt;\n return await f({\n nomProjet,\n bds: données,\n });\n };\n const fOublierDonnées = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.suivreBdsProjet({ idProjet, f: fSuivreRacine });\n },\n f: async (données) => {\n info.données = données;\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.client.bds.suivreDonnéesExportation({\n idBd: id,\n langues,\n f: fSuivreBranche,\n });\n },\n });\n fsOublier.push(fOublierDonnées);\n if (langues) {\n const fOublierNomsProjet = await this.suivreNomsProjet({\n idProjet,\n f: async (noms) => {\n info.nomsProjet = noms;\n await fFinale();\n },\n });\n fsOublier.push(fOublierNomsProjet);\n }\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n }\n async exporterDonnées({ idProjet, langues, nomFichier, patience = 500, }) {\n const données = await uneFois(async (fSuivi) => {\n return await this.suivreDonnéesExportation({\n idProjet,\n langues,\n f: fSuivi,\n });\n }, attendreStabilité(patience));\n nomFichier = nomFichier || données.nomProjet;\n const fichiersSFIP = new Set();\n données.bds.forEach((bd) => {\n bd.tableaux.forEach((t) => t.fichiersSFIP.forEach((x) => fichiersSFIP.add(x)));\n });\n return {\n docs: données.bds.map((donnéesBd) => {\n const doc = utils.book_new();\n for (const tableau of donnéesBd.tableaux) {\n /* Créer le tableau */\n const tableauXLSX = utils.json_to_sheet(tableau.données);\n /* Ajouter la feuille au document. XLSX n'accepte pas les noms de colonne > 31 caractères */\n utils.book_append_sheet(doc, tableauXLSX, tableau.nomTableau.slice(0, 30));\n }\n return { doc, nom: donnéesBd.nomBd };\n }),\n fichiersSFIP,\n nomFichier,\n };\n }\n async exporterDocumentDonnées({ données, formatDoc, dossier = \"\", inclureFichiersSFIP = true, }) {\n const { docs, fichiersSFIP, nomFichier } = données;\n const conversionsTypes = {\n xls: \"biff8\",\n };\n const bookType = conversionsTypes[formatDoc] || formatDoc;\n const fichiersDocs = docs.map((d) => {\n return {\n nom: `${d.nom}.${formatDoc}`,\n octets: writeXLSX(d.doc, { bookType, type: \"buffer\" }),\n };\n });\n const fichiersDeSFIP = inclureFichiersSFIP\n ? await Promise.all([...fichiersSFIP].map(async (fichier) => {\n return {\n nom: fichier.replace(\"/\", \"-\"),\n octets: await toBuffer(await this.client.obtItérableAsyncSFIP({ id: fichier })),\n };\n }))\n : [];\n await zipper(fichiersDocs, fichiersDeSFIP, path.join(dossier, nomFichier));\n }\n async effacerProjet({ idProjet }) {\n // D'abord effacer l'entrée dans notre liste de projets\n await this.enleverDeMesProjets({ idProjet });\n // Et puis maintenant aussi effacer les données et le projet lui-même\n for (const clef of [\"noms\", \"descriptions\", \"motsClefs\", \"bds\"]) {\n const idBd = await this.client.obtIdBd({\n nom: clef,\n racine: idProjet,\n });\n if (idBd)\n await this.client.effacerBd({ id: idBd });\n }\n await this.client.effacerBd({ id: idProjet });\n }\n}\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreProjets\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreImage\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreNomsProjet\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreDescriptionsProjet\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreMotsClefsProjet\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreBdsProjet\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreVariablesProjet\", null);\n__decorate([\n cacheSuivi\n], Projets.prototype, \"suivreQualit\\u00E9Projet\", null);\n//# sourceMappingURL=projets.js.map","import { __decorate } from \"tslib\";\nimport { schémaStructureBdNoms, } from \"./types.js\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { ComposanteClientListe } from \"./composanteClient.js\";\nconst schémaBdPrincipale = { type: \"string\" };\nconst schémaBdMotClef = {\n type: \"object\",\n properties: {\n type: { type: \"string\", nullable: true },\n noms: { type: \"string\", nullable: true },\n descriptions: { type: \"string\", nullable: true },\n },\n required: [],\n};\nexport class MotsClefs extends ComposanteClientListe {\n constructor({ client }) {\n super({ client, clef: \"motsClefs\", schémaBdPrincipale });\n }\n async épingler() {\n const idBd = await this.obtIdBd();\n await this.client.épingles.épinglerBd({\n id: idBd,\n récursif: false,\n fichiers: false,\n });\n }\n async suivreMotsClefs({ f, idCompte, }) {\n return await this.suivreBdPrincipale({ idCompte, f });\n }\n async créerMotClef() {\n const idMotClef = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n address: undefined,\n write: await this.client.obtIdCompte(),\n },\n });\n await this.ajouterÀMesMotsClefs({ idMotClef });\n const { bd: bdMotClef, fOublier: fOublierMotClef } = await this.client.ouvrirBdTypée({\n id: idMotClef,\n type: \"keyvalue\",\n schéma: schémaBdMotClef,\n });\n const accès = bdMotClef.access;\n const optionsAccès = { address: accès.address };\n await bdMotClef.set(\"type\", \"motClef\");\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdMotClef.set(\"noms\", idBdNoms);\n const idBdDescriptions = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdMotClef.set(\"descriptions\", idBdDescriptions);\n await fOublierMotClef();\n return idMotClef;\n }\n async ajouterÀMesMotsClefs({ idMotClef, }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.add(idMotClef);\n await fOublier();\n }\n async enleverDeMesMotsClefs({ idMotClef, }) {\n const { bd: bdRacine, fOublier } = await this.obtBd();\n await bdRacine.del(idMotClef);\n await fOublier();\n }\n async copierMotClef({ idMotClef }) {\n const { bd: bdBase, fOublier: fOublierBase } = await this.client.ouvrirBdTypée({\n id: idMotClef,\n type: \"keyvalue\",\n schéma: schémaBdMotClef,\n });\n const idNouveauMotClef = await this.créerMotClef();\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await this.sauvegarderNomsMotClef({ idMotClef: idNouveauMotClef, noms });\n await fOublierNoms();\n }\n const idBdDescriptions = await bdBase.get(\"descriptions\");\n if (idBdDescriptions) {\n const { bd: bdDescriptions, fOublier: fOublierDescriptions } = await this.client.ouvrirBdTypée({\n id: idBdDescriptions,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const descriptions = await bdDescriptions.allAsJSON();\n await this.sauvegarderDescriptionsMotClef({\n idMotClef: idNouveauMotClef,\n descriptions,\n });\n await fOublierDescriptions();\n }\n await fOublierBase();\n return idNouveauMotClef;\n }\n async inviterAuteur({ idMotClef, idCompteAuteur, rôle, }) {\n await this.client.donnerAccès({\n idBd: idMotClef,\n identité: idCompteAuteur,\n rôle,\n });\n }\n async sauvegarderNomsMotClef({ idMotClef, noms, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idMotClef,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour mot clef ${idMotClef}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async sauvegarderNomMotClef({ idMotClef, langue, nom, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idMotClef,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour mot clef ${idMotClef}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async effacerNomMotClef({ idMotClef, langue, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idMotClef,\n type: \"keyvalue\",\n });\n if (!idBdNoms) {\n throw new Error(`Permission de modification refusée pour mot clef ${idMotClef}.`);\n }\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.del(langue);\n await fOublier();\n }\n async suivreNomsMotClef({ idMotClef, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idMotClef,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async sauvegarderDescriptionsMotClef({ idMotClef, descriptions, }) {\n const idBdDescriptions = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idMotClef,\n type: \"keyvalue\",\n });\n if (!idBdDescriptions) {\n throw new Error(`Permission de modification refusée pour mot clef ${idMotClef}.`);\n }\n const { bd: bdDescriptions, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescriptions,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in descriptions) {\n await bdDescriptions.set(lng, descriptions[lng]);\n }\n await fOublier();\n }\n async sauvegarderDescriptionMotClef({ idMotClef, langue, description, }) {\n const idBdDescriptions = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idMotClef,\n type: \"keyvalue\",\n });\n if (!idBdDescriptions) {\n throw new Error(`Permission de modification refusée pour mot clef ${idMotClef}.`);\n }\n const { bd: bdDescriptions, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescriptions,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescriptions.set(langue, description);\n await fOublier();\n }\n async effacerDescriptionMotClef({ id, langue, }) {\n const idBdDescriptions = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: id,\n type: \"keyvalue\",\n });\n if (!idBdDescriptions) {\n throw new Error(`Permission de modification refusée pour mot clef ${id}.`);\n }\n const { bd: bdDescriptions, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescriptions,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescriptions.del(langue);\n await fOublier();\n }\n async suivreDescriptionsMotClef({ idMotClef, f, }) {\n return await this.client.suivreBdDicDeClef({\n id: idMotClef,\n clef: \"descriptions\",\n schéma: schémaStructureBdNoms,\n f,\n });\n }\n async effacerMotClef({ idMotClef }) {\n // Effacer l'entrée dans notre liste de mots clefs\n await this.enleverDeMesMotsClefs({ idMotClef });\n // Effacer le mot-clef lui-même\n for (const clef of [\"noms\"]) {\n const idBd = await this.client.obtIdBd({\n nom: clef,\n racine: idMotClef,\n });\n if (idBd)\n await this.client.effacerBd({ id: idBd });\n }\n await this.client.effacerBd({ id: idMotClef });\n }\n async suivreQualitéMotClef({ idMotClef, f, }) {\n return await this.suivreNomsMotClef({\n idMotClef,\n f: (noms) => f(Object.keys(noms).length ? 1 : 0),\n });\n }\n}\n__decorate([\n cacheSuivi\n], MotsClefs.prototype, \"suivreMotsClefs\", null);\n__decorate([\n cacheSuivi\n], MotsClefs.prototype, \"suivreNomsMotClef\", null);\n__decorate([\n cacheSuivi\n], MotsClefs.prototype, \"suivreDescriptionsMotClef\", null);\n__decorate([\n cacheSuivi\n], MotsClefs.prototype, \"suivreQualit\\u00E9MotClef\", null);\n//# sourceMappingURL=motsClefs.js.map","import { __decorate } from \"tslib\";\nimport { schémaStructureBdNoms, schémaStructureBdMétadonnées, } from \"./types.js\";\nimport { faisRien, uneFois, ignorerNonDéfinis, traduire, attendreStabilité, suivreBdDeFonction, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { cacheRechercheParNRésultats, cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { schémaBdTableauxDeBd, } from \"./bds.js\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { ComposanteClientListe } from \"./composanteClient.js\";\nimport Base64 from \"crypto-js/enc-base64.js\";\nimport md5 from \"crypto-js/md5.js\";\nimport { utils } from \"xlsx\";\nimport { isValidAddress } from \"@orbitdb/core\";\nexport const MAX_TAILLE_IMAGE = 500 * 1000; // 500 kilooctets\nexport const MAX_TAILLE_IMAGE_VIS = 1500 * 1000; // 1,5 megaoctets\nconst schémaBdAutorisations = {\n type: \"object\",\n additionalProperties: {\n type: \"string\",\n },\n required: [],\n};\nconst schémaStructureBdNuée = {\n type: \"object\",\n properties: {\n type: { type: \"string\", nullable: true },\n métadonnées: { type: \"string\", nullable: true },\n noms: { type: \"string\", nullable: true },\n descriptions: { type: \"string\", nullable: true },\n motsClefs: { type: \"string\", nullable: true },\n image: { type: \"string\", nullable: true },\n tableaux: { type: \"string\", nullable: true },\n autorisation: { type: \"string\", nullable: true },\n statut: {\n type: \"object\",\n properties: {\n idNouvelle: { type: \"string\", nullable: true },\n statut: { type: \"string\", nullable: true },\n },\n required: [],\n nullable: true,\n },\n parent: { type: \"string\", nullable: true },\n copiéDe: { type: \"string\", nullable: true },\n },\n required: [],\n};\nconst schémaStructureBdAuthorisation = {\n type: \"object\",\n properties: {\n philosophie: { type: \"string\", nullable: true },\n membres: { type: \"string\", nullable: true },\n },\n required: [],\n};\nconst schémaBdMotsClefsNuée = {\n type: \"string\",\n};\nexport class Nuées extends ComposanteClientListe {\n constructor({ client }) {\n super({ client, clef: \"nuées\", schémaBdPrincipale: { type: \"string\" } });\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async créerNuée({ nuéeParent, autorisation = \"IJPC\", ajouter = true, } = {}) {\n const idBdNuée = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n address: undefined,\n write: await this.client.obtIdCompte(),\n },\n });\n if (ajouter)\n await this.ajouterÀMesNuées({ idNuée: idBdNuée });\n const { bd: bdNuée, fOublier: fOublierNuée } = await this.client.ouvrirBdTypée({\n id: idBdNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n const accès = bdNuée.access;\n const optionsAccès = { address: accès.address };\n await bdNuée.set(\"type\", \"nuée\");\n let autorisationFinale;\n if (isValidAddress(autorisation)) {\n autorisationFinale = autorisation;\n }\n else if (autorisation === \"CJPI\" || autorisation === \"IJPC\") {\n autorisationFinale = await this.générerGestionnaireAutorisations({\n philosophie: autorisation,\n });\n }\n else {\n throw new Error(`Autorisation non valide : ${autorisation}`);\n }\n await bdNuée.set(\"autorisation\", autorisationFinale);\n if (autorisation === \"CJPI\") {\n await this.accepterMembreNuée({\n idNuée: idBdNuée,\n idCompte: await this.client.obtIdCompte(),\n });\n }\n const idBdNoms = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdNuée.set(\"noms\", idBdNoms);\n const idBdDescr = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdNuée.set(\"descriptions\", idBdDescr);\n const idBdTableaux = await this.client.créerBdIndépendante({\n type: \"ordered-keyvalue\",\n optionsAccès,\n });\n await bdNuée.set(\"tableaux\", idBdTableaux);\n const idBdMétadonnées = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bdNuée.set(\"métadonnées\", idBdMétadonnées);\n const idBdMotsClefs = await this.client.créerBdIndépendante({\n type: \"set\",\n optionsAccès,\n });\n await bdNuée.set(\"motsClefs\", idBdMotsClefs);\n await bdNuée.set(\"statut\", { statut: \"active\" });\n if (nuéeParent) {\n await bdNuée.set(\"parent\", nuéeParent);\n }\n fOublierNuée();\n return idBdNuée;\n }\n async ajouterÀMesNuées({ idNuée }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.add(idNuée);\n await fOublier();\n }\n async enleverDeMesNuées({ idNuée }) {\n const { bd: bdRacine, fOublier } = await this.obtBd();\n await bdRacine.del(idNuée);\n await fOublier();\n }\n async copierNuée({ idNuée, ajouterÀMesNuées = true, }) {\n const { bd: bdBase, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n const nuéeParent = await bdBase.get(\"parent\");\n const idNouvelleNuée = await this.créerNuée({\n nuéeParent,\n ajouter: ajouterÀMesNuées,\n });\n const { bd: nouvelleBd, fOublier: fOublierNouvelle } = await this.client.ouvrirBdTypée({\n id: idNouvelleNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n const idBdMétadonnées = await bdBase.get(\"métadonnées\");\n if (idBdMétadonnées) {\n const { bd: bdMétadonnées, fOublier: fOublierBdMétadonnées } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const métadonnées = await bdMétadonnées.allAsJSON();\n await fOublierBdMétadonnées();\n await this.sauvegarderMétadonnéesNuée({\n idNuée: idNouvelleNuée,\n métadonnées,\n });\n }\n const idBdNoms = await bdBase.get(\"noms\");\n if (idBdNoms) {\n const { bd: bdNoms, fOublier: fOublierBdNoms } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const noms = await bdNoms.allAsJSON();\n await fOublierBdNoms();\n await this.sauvegarderNomsNuée({ idNuée: idNouvelleNuée, noms });\n }\n const idBdDescr = await bdBase.get(\"descriptions\");\n if (idBdDescr) {\n const { bd: bdDescr, fOublier: fOublierBdDescr } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n const descriptions = await bdDescr.allAsJSON();\n await fOublierBdDescr();\n await this.sauvegarderDescriptionsNuée({\n idNuée: idNouvelleNuée,\n descriptions,\n });\n }\n const idBdMotsClefs = await bdBase.get(\"motsClefs\");\n if (idBdMotsClefs) {\n const { bd: bdMotsClefs, fOublier: fOublierBdMotsClefs } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaBdMotsClefsNuée,\n });\n const motsClefs = (await bdMotsClefs.all()).map((x) => x.value);\n await fOublierBdMotsClefs();\n await this.ajouterMotsClefsNuée({\n idNuée: idNouvelleNuée,\n idsMotsClefs: motsClefs,\n });\n }\n const idBdTableaux = await bdBase.get(\"tableaux\");\n const idNouvelleBdTableaux = await nouvelleBd.get(\"tableaux\");\n if (!idNouvelleBdTableaux)\n throw new Error(\"Erreur initialisation.\");\n if (idBdTableaux) {\n const { bd: nouvelleBdTableaux, fOublier: fOublierNouvelleTableaux } = await this.client.ouvrirBdTypée({\n id: idNouvelleBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const { bd: bdTableaux, fOublier: fOublierBdTableaux } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const tableaux = await bdTableaux.all();\n await fOublierBdTableaux();\n for (const tableau of tableaux) {\n const idNouveauTableau = await this.client.tableaux.copierTableau({\n id: tableau.key,\n idBd: idNouvelleNuée,\n copierDonnées: false,\n });\n await nouvelleBdTableaux.set(idNouveauTableau, tableau.value);\n }\n await fOublierNouvelleTableaux();\n }\n const statut = (await bdBase.get(\"statut\")) || {\n statut: \"active\",\n };\n await nouvelleBd.set(\"statut\", statut);\n const image = await bdBase.get(\"image\");\n if (image)\n await nouvelleBd.set(\"image\", image);\n await nouvelleBd.set(\"copiéDe\", idNuée);\n await Promise.all([fOublier(), fOublierNouvelle()]);\n return idNouvelleNuée;\n }\n async suivreNuées({ f, idCompte, }) {\n return await this.suivreBdPrincipale({\n f,\n idCompte,\n });\n }\n async suivreDeParents({ idNuée, f, fParents, }) {\n return await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.suivreNuéesParents({\n idNuée,\n f: (parents) => fSuivreRacine([idNuée, ...parents].reverse()),\n });\n },\n f,\n fBranche: fParents,\n fRéduction: (x) => x,\n });\n }\n async sauvegarderMétadonnéeNuée({ idNuée, clef, valeur, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n await bdMétadonnées.set(clef, valeur);\n await fOublier();\n }\n async sauvegarderMétadonnéesNuée({ idNuée, métadonnées, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n for (const clef in métadonnées) {\n await bdMétadonnées.set(clef, métadonnées[clef]);\n }\n await fOublier();\n }\n async effacerMétadonnéeNuée({ idNuée, clef, }) {\n const idBdMétadonnées = await this.client.obtIdBd({\n nom: \"métadonnées\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdMétadonnées)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdMétadonnées, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMétadonnées,\n type: \"keyvalue\",\n schéma: schémaStructureBdMétadonnées,\n });\n await bdMétadonnées.del(clef);\n await fOublier();\n }\n async suivreMétadonnéesNuée({ idNuée, f, hériter = true, }) {\n if (hériter) {\n const fFinale = async (métadonnées) => {\n await f(Object.assign({}, ...métadonnées));\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents: async (id, fSuivreBranche) => {\n return await this.client.suivreBdDicDeClef({\n id,\n clef: \"métadonnées\",\n schéma: schémaStructureBdMétadonnées,\n f: fSuivreBranche,\n });\n },\n });\n }\n else {\n return await this.client.suivreBdDicDeClef({\n id: idNuée,\n clef: \"métadonnées\",\n schéma: schémaStructureBdMétadonnées,\n f,\n });\n }\n }\n async sauvegarderNomNuée({ idNuée, langue, nom, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.set(langue, nom);\n await fOublier();\n }\n async sauvegarderNomsNuée({ idNuée, noms, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in noms) {\n await bdNoms.set(lng, noms[lng]);\n }\n await fOublier();\n }\n async effacerNomNuée({ idNuée, langue, }) {\n const idBdNoms = await this.client.obtIdBd({\n nom: \"noms\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdNoms)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdNoms, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdNoms,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdNoms.del(langue);\n await fOublier();\n }\n async suivreNomsNuée({ idNuée, f, }) {\n const fFinale = async (noms) => {\n await f(Object.assign({}, ...noms));\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents: async (id, fSuivreBranche) => {\n return await this.client.suivreBdDicDeClef({\n id,\n clef: \"noms\",\n schéma: schémaStructureBdNoms,\n f: fSuivreBranche,\n });\n },\n });\n }\n async sauvegarderDescriptionNuée({ idNuée, langue, description, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.set(langue, description);\n await fOublier();\n }\n async sauvegarderDescriptionsNuée({ idNuée, descriptions, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour BD ${idNuée}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n for (const lng in descriptions) {\n await bdDescr.set(lng, descriptions[lng]);\n }\n await fOublier();\n }\n async effacerDescriptionNuée({ idNuée, langue, }) {\n const idBdDescr = await this.client.obtIdBd({\n nom: \"descriptions\",\n racine: idNuée,\n type: \"keyvalue\",\n });\n if (!idBdDescr)\n throw new Error(`Permission de modification refusée pour BD ${idNuée}.`);\n const { bd: bdDescr, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdDescr,\n type: \"keyvalue\",\n schéma: schémaStructureBdNoms,\n });\n await bdDescr.del(langue);\n await fOublier();\n }\n async suivreDescriptionsNuée({ idNuée, f, }) {\n const fFinale = async (noms) => {\n await f(Object.assign({}, ...noms));\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents: async (id, fSuivreBranche) => {\n return await this.client.suivreBdDicDeClef({\n id,\n clef: \"descriptions\",\n schéma: schémaStructureBdNoms,\n f: fSuivreBranche,\n });\n },\n });\n }\n async sauvegarderImage({ idNuée, image, }) {\n if (image.contenu.byteLength > MAX_TAILLE_IMAGE) {\n throw new Error(\"Taille maximale excédée\");\n }\n const idImage = await this.client.ajouterÀSFIP(image);\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n await bd.set(\"image\", idImage);\n await fOublier();\n }\n async effacerImage({ idNuée }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n await bd.del(\"image\");\n await fOublier();\n }\n async suivreImage({ idNuée, f, }) {\n return await this.client.suivreBd({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n f: async (bd) => {\n const idImage = await bd.get(\"image\");\n if (!idImage) {\n await f(null);\n }\n else {\n const image = await this.client.obtFichierSFIP({\n id: idImage,\n max: MAX_TAILLE_IMAGE_VIS,\n });\n await f(image);\n }\n },\n });\n }\n async ajouterMotsClefsNuée({ idNuée, idsMotsClefs, }) {\n if (!Array.isArray(idsMotsClefs))\n idsMotsClefs = [idsMotsClefs];\n const idBdMotsClefs = await this.client.obtIdBd({\n nom: \"motsClefs\",\n racine: idNuée,\n type: \"set\",\n });\n if (!idBdMotsClefs) {\n throw new Error(`Permission de modification refusée pour BD ${idNuée}.`);\n }\n const { bd: bdMotsClefs, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaBdMotsClefsNuée,\n });\n for (const id of idsMotsClefs) {\n const motsClefsExistants = (await bdMotsClefs.all()).map((x) => x.value);\n if (!motsClefsExistants.includes(id))\n await bdMotsClefs.add(id);\n }\n await fOublier();\n }\n async effacerMotClefNuée({ idNuée, idMotClef, }) {\n const idBdMotsClefs = await this.client.obtIdBd({\n nom: \"motsClefs\",\n racine: idNuée,\n type: \"set\",\n });\n if (!idBdMotsClefs) {\n throw new Error(`Permission de modification refusée pour BD ${idNuée}.`);\n }\n const { bd: bdMotsClefs, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMotsClefs,\n type: \"set\",\n schéma: schémaBdMotsClefsNuée,\n });\n await bdMotsClefs.del(idMotClef);\n await fOublier();\n }\n async suivreMotsClefsNuée({ idNuée, f, }) {\n const fFinale = async (motsClefs) => {\n await f([...new Set(motsClefs.flat())]);\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents: async (id, fSuivreBranche) => {\n return await this.client.suivreBdListeDeClef({\n id,\n clef: \"motsClefs\",\n schéma: { type: \"string\" },\n f: fSuivreBranche,\n });\n },\n });\n }\n async changerStatutNuée({ idNuée, statut, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"statut\", statut);\n await fOublier();\n }\n async suivreStatutNuée({ idNuée, f, }) {\n return await this.client.suivreBdDic({\n id: idNuée,\n f: async (x) => {\n if (x[\"statut\"])\n return await f(x[\"statut\"]);\n },\n schéma: schémaStructureBdNuée,\n });\n }\n async marquerObsolète({ idNuée, idNouvelle, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"statut\", { statut: \"obsolète\", idNouvelle });\n await fOublier();\n }\n async marquerActive({ idNuée }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"statut\", { statut: \"active\" });\n await fOublier();\n }\n async marquerJouet({ idNuée }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"statut\", { statut: \"jouet\" });\n await fOublier();\n }\n async marquerInterne({ idNuée }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"statut\", { statut: \"interne\" });\n await fOublier();\n }\n async inviterAuteur({ idNuée, idCompteAuteur, rôle, }) {\n await this.client.donnerAccès({\n idBd: idNuée,\n identité: idCompteAuteur,\n rôle,\n });\n }\n async générerGestionnaireAutorisations({ philosophie = \"IJPC\", }) {\n const idBdAutorisation = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: {\n write: await this.client.obtIdCompte(),\n },\n });\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdAutorisation,\n type: \"keyvalue\",\n schéma: schémaStructureBdAuthorisation,\n });\n await bd.set(\"philosophie\", philosophie);\n const accès = bd.access;\n const optionsAccès = { address: accès.address };\n const idBdMembres = await this.client.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès,\n });\n await bd.set(\"membres\", idBdMembres);\n fOublier();\n return idBdAutorisation;\n }\n async changerPhisolophieAutorisation({ idAutorisation, philosophie, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idAutorisation,\n type: \"keyvalue\",\n schéma: schémaStructureBdAuthorisation,\n });\n await bd.set(\"philosophie\", philosophie);\n fOublier();\n }\n async suivrePhilosophieAutorisation({ idNuée, f, }) {\n const fFinale = async (bd) => {\n if (!bd)\n return;\n const philosophie = await bd.get(\"philosophie\");\n if (philosophie && [\"IJPC\", \"CJPI\"].includes(philosophie)) {\n await f(philosophie);\n }\n };\n const fRacine = async ({ fSuivreRacine, }) => {\n return await this.suivreGestionnaireAutorisations({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.client.suivreBd({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdAuthorisation,\n f: fSuivreBd,\n });\n };\n return await suivreBdDeFonction({\n fRacine,\n f: fFinale,\n fSuivre,\n });\n }\n async accepterMembreAutorisation({ idAutorisation, idCompte, }) {\n const idBdMembres = await this.client.obtIdBd({\n nom: \"membres\",\n racine: idAutorisation,\n type: \"keyvalue\",\n });\n if (!idBdMembres) {\n throw new Error(`Permission de modification refusée pour groupe d'autorisation ${idAutorisation}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMembres,\n type: \"keyvalue\",\n schéma: schémaBdAutorisations,\n });\n await bd.set(idCompte, \"accepté\");\n fOublier();\n }\n async accepterMembreNuée({ idNuée, idCompte, }) {\n const idAutorisation = await this.obtGestionnaireAutorisationsDeNuée({\n idNuée,\n });\n return await this.accepterMembreAutorisation({\n idAutorisation,\n idCompte,\n });\n }\n async exclureMembreAutorisation({ idAutorisation, idCompte, }) {\n const idBdMembres = await this.client.obtIdBd({\n nom: \"membres\",\n racine: idAutorisation,\n type: \"keyvalue\",\n });\n if (!idBdMembres) {\n throw new Error(`Permission de modification refusée pour groupe d'autorisation ${idAutorisation}.`);\n }\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdMembres,\n type: \"keyvalue\",\n schéma: schémaBdAutorisations,\n });\n await bd.set(idCompte, \"exclus\");\n fOublier();\n }\n async exclureMembreDeNuée({ idNuée, idCompte, }) {\n const idAutorisation = await this.obtGestionnaireAutorisationsDeNuée({\n idNuée,\n });\n return await this.exclureMembreAutorisation({\n idAutorisation,\n idCompte,\n });\n }\n async suivreGestionnaireAutorisations({ idNuée, f, }) {\n return await this.client.suivreBd({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n f: async (bd) => {\n const idAutorisation = await bd.get(\"autorisation\");\n await f(idAutorisation);\n },\n });\n }\n async changerGestionnaireAutorisations({ idNuée, idAutorisation, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n await bd.set(\"autorisation\", idAutorisation);\n fOublier();\n }\n async obtGestionnaireAutorisationsDeNuée({ idNuée, }) {\n return await uneFois(async (fSuivi) => {\n return await this.suivreGestionnaireAutorisations({\n idNuée,\n f: ignorerNonDéfinis(fSuivi),\n });\n });\n }\n async suivreAutorisationsMembresDeGestionnaire({ idAutorisation, f, }) {\n const fFinale = async (dicMembres) => {\n const membres = Object.entries(dicMembres).map(([idCompte, statut]) => {\n return {\n idCompte,\n statut,\n };\n });\n await f(membres);\n };\n return await this.client.suivreBdDicDeClef({\n id: idAutorisation,\n clef: \"membres\",\n schéma: schémaBdAutorisations,\n f: fFinale,\n });\n }\n async suivreAutorisationsMembresDeNuée({ idNuée, f, }) {\n const fRacine = async ({ fSuivreRacine, }) => {\n return await this.suivreGestionnaireAutorisations({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreAutorisationsMembresDeGestionnaire({\n idAutorisation: id,\n f: fSuivreBd,\n });\n };\n return await suivreBdDeFonction({\n fRacine,\n f: ignorerNonDéfinis(f),\n fSuivre,\n });\n }\n async ajouterTableauNuée({ idNuée, clefTableau, }) {\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idNuée,\n type: \"ordered-keyvalue\",\n });\n if (!idBdTableaux) {\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n }\n const { bd: bdTableaux, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n clefTableau = clefTableau || uuidv4();\n const idTableau = await this.client.tableaux.créerTableau({\n idBd: idNuée,\n });\n await bdTableaux.set(idTableau, {\n clef: clefTableau,\n });\n await fOublier();\n return idTableau;\n }\n async effacerTableauNuée({ idNuée, idTableau, }) {\n // D'abord effacer l'entrée dans notre liste de tableaux\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idNuée,\n type: \"ordered-keyvalue\",\n });\n if (!idBdTableaux) {\n throw new Error(`Permission de modification refusée pour Nuée ${idNuée}.`);\n }\n const { bd: bdTableaux, fOublier } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n await bdTableaux.del(idTableau);\n await fOublier();\n // Enfin, effacer les données et le tableau lui-même\n await this.client.tableaux.effacerTableau({ idTableau });\n }\n async suivreTableauxNuée({ idNuée, f, }) {\n const fFinale = async (tableaux) => {\n await f(tableaux.flat());\n };\n const fParents = async (id, fSuivreBranche) => {\n const fFinaleTableaux = (infos) => {\n const tableaux = infos.map((info) => {\n return {\n id: info.key,\n ...info.value,\n };\n });\n fSuivreBranche(tableaux);\n };\n return await this.client.suivreBdDicOrdonnéeDeClef({\n id,\n clef: \"tableaux\",\n schéma: schémaBdTableauxDeBd,\n f: fFinaleTableaux,\n });\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents,\n });\n }\n async ajouterNomsTableauNuée({ idTableau, noms, }) {\n return await this.client.tableaux.sauvegarderNomsTableau({\n idTableau,\n noms,\n });\n }\n async effacerNomsTableauNuée({ idTableau, langue, }) {\n return await this.client.tableaux.effacerNomTableau({ idTableau, langue });\n }\n async suivreNomsTableauNuée({ idNuée, clefTableau, f, }) {\n const fFinale = async (lNoms) => {\n await f(Object.assign({}, ...lNoms));\n };\n const fParents = async (idNuéeParent, fSuivreBranche) => {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine, }) => {\n return await this.client.bds.suivreIdTableauParClef({\n idBd: idNuéeParent,\n clef: clefTableau,\n f: fSuivreRacine,\n });\n },\n f: ignorerNonDéfinis(fSuivreBranche),\n fSuivre: async ({ id: idTableau, fSuivreBd, }) => {\n return await this.client.tableaux.suivreNomsTableau({\n idTableau,\n f: fSuivreBd,\n });\n },\n });\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents,\n });\n }\n async ajouterColonneTableauNuée({ idTableau, idVariable, idColonne, index, }) {\n const idColonneFinale = await this.client.tableaux.ajouterColonneTableau({\n idTableau,\n idVariable,\n idColonne,\n });\n if (index) {\n await this.changerColIndexTableauNuée({\n idTableau,\n idColonne: idColonneFinale,\n val: true,\n });\n }\n return idColonneFinale;\n }\n async effacerColonneTableauNuée({ idTableau, idColonne, }) {\n return await this.client.tableaux.effacerColonneTableau({\n idTableau,\n idColonne,\n });\n }\n async changerColIndexTableauNuée({ idTableau, idColonne, val, }) {\n return await this.client.tableaux.changerColIndex({\n idTableau,\n idColonne,\n val,\n });\n }\n async suivreColonnesTableauNuée({ idNuée, clefTableau, f, catégories = true, }) {\n const fFinale = async (colonnes) => {\n await f(colonnes.flat());\n };\n const fParents = async (idNuéeParent, fSuivreBranche) => {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine, }) => {\n return await this.client.bds.suivreIdTableauParClef({\n idBd: idNuéeParent,\n clef: clefTableau,\n f: fSuivreRacine,\n });\n },\n f: ignorerNonDéfinis(fSuivreBranche),\n fSuivre: async ({ id: idTableau, fSuivreBd, }) => {\n return await this.client.tableaux.suivreColonnesTableau({\n idTableau,\n f: fSuivreBd,\n catégories,\n });\n },\n });\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents,\n });\n }\n async ajouterRègleTableauNuée({ idTableau, idColonne, règle, }) {\n return await this.client.tableaux.ajouterRègleTableau({\n idTableau,\n idColonne,\n règle,\n });\n }\n async effacerRègleTableauNuée({ idTableau, idRègle, }) {\n return await this.client.tableaux.effacerRègleTableau({\n idTableau,\n idRègle,\n });\n }\n async suivreRèglesTableauNuée({ idNuée, clefTableau, f, }) {\n const fFinale = async (règles) => {\n await f(règles.flat());\n };\n const fParents = async (idNuéeParent, fSuivreBranche) => {\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine, }) => {\n return await this.client.bds.suivreIdTableauParClef({\n idBd: idNuéeParent,\n clef: clefTableau,\n f: fSuivreRacine,\n });\n },\n f: ignorerNonDéfinis(fSuivreBranche),\n fSuivre: async ({ id: idTableau, fSuivreBd, }) => {\n return await this.client.tableaux.suivreRègles({\n idTableau,\n f: fSuivreBd,\n });\n },\n });\n };\n return await this.suivreDeParents({\n idNuée,\n f: fFinale,\n fParents,\n });\n }\n async suivreVariablesNuée({ idNuée, f, }) {\n const fFinale = async (variables) => {\n return await f(variables || []);\n };\n const fBranche = async (id, f) => {\n return await this.client.tableaux.suivreVariables({ idTableau: id, f });\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreTableauxNuée({\n idNuée,\n f: (x) => fSuivreRacine(x.map((x) => x.id)),\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreQualitéNuée({ idNuée, f, }) {\n const rés = {\n noms: {},\n descr: {},\n };\n const fFinale = async () => {\n const scores = [\n Object.keys(rés.noms).length ? 1 : 0,\n Object.keys(rés.descr).length ? 1 : 0,\n ];\n const qualité = scores.reduce((a, b) => a + b, 0) / scores.length;\n await f(qualité);\n };\n const oublierNoms = await this.suivreNomsNuée({\n idNuée,\n f: (noms) => {\n rés.noms = noms;\n fFinale();\n },\n });\n const oublierDescr = await this.suivreDescriptionsNuée({\n idNuée,\n f: (descr) => {\n rés.descr = descr;\n fFinale();\n },\n });\n const fOublier = async () => {\n await oublierNoms();\n await oublierDescr();\n };\n return fOublier;\n }\n async suivreDifférencesNuéeEtTableau({ idNuée, clefTableau, idTableau, f, stricte = true, }) {\n const fFinale = async (différences) => {\n const différencesFinales = différences.filter((d) => stricte || d.sévère);\n await f(différencesFinales);\n };\n const fRacine = async ({ fSuivreRacine, }) => {\n // On peut traiter la nuée comme une BD\n return await this.client.bds.suivreIdTableauParClef({\n idBd: idNuée,\n clef: clefTableau,\n f: fSuivreRacine,\n });\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.client.tableaux.suivreDifférencesAvecTableau({\n idTableau,\n idTableauRéf: id,\n f: fSuivreBd,\n });\n };\n return await suivreBdDeFonction({\n fRacine,\n f: ignorerNonDéfinis(fFinale),\n fSuivre,\n });\n }\n async suivreDifférencesNuéeEtBd({ idNuée, idBd, f, }) {\n const info = {};\n const fFinale = async () => {\n const différences = [];\n if (info.tableauxNuée && info.tableauxBd) {\n for (const tableauNuée of info.tableauxNuée) {\n const tableau = info.tableauxNuée.find((t) => t.clef === tableauNuée.clef);\n if (!tableau) {\n const dif = {\n type: \"tableauManquant\",\n sévère: true,\n clefManquante: tableauNuée.clef,\n };\n différences.push(dif);\n }\n }\n for (const tableau of info.tableauxBd) {\n const tableauLié = info.tableauxNuée.find((t) => t.clef === tableau.clef);\n if (!tableauLié) {\n const dif = {\n type: \"tableauSupplémentaire\",\n sévère: false,\n clefExtra: tableau.clef,\n };\n différences.push(dif);\n }\n }\n }\n await f(différences);\n };\n const fOublierTableauxBd = await this.client.bds.suivreTableauxBd({\n idBd,\n f: (tableaux) => {\n info.tableauxBd = tableaux;\n fFinale();\n },\n });\n const fOublierTableauxNuée = await this.suivreTableauxNuée({\n idNuée,\n f: (tableaux) => {\n info.tableauxNuée = tableaux;\n fFinale();\n },\n });\n return async () => {\n await fOublierTableauxBd();\n await fOublierTableauxNuée();\n };\n }\n async suivreCorrespondanceBd({ idBd, f, }) {\n const fSuivreNuéesDeBd = async (fSuivreRacine) => {\n return await this.client.bds.suivreNuéesBd({\n idBd,\n f: fSuivreRacine,\n });\n };\n const fSuivreNuée = async (idNuée, fSuivreBd) => {\n const info = {\n différencesBds: [],\n différencesTableaux: [],\n };\n const fFinaleNuée = async () => {\n fSuivreBd([...info.différencesBds, ...info.différencesTableaux]);\n };\n const fOublierDifférencesBd = await this.suivreDifférencesNuéeEtBd({\n idNuée,\n idBd,\n f: async (différences) => {\n info.différencesBds = différences;\n await fFinaleNuée();\n },\n });\n const fBranche = async (id, fSuivreBranche, branche) => {\n return await this.suivreDifférencesNuéeEtTableau({\n idNuée,\n clefTableau: branche.clef,\n idTableau: id,\n f: async (diffs) => {\n await fSuivreBranche(diffs.map((d) => {\n return {\n type: \"tableau\",\n sévère: d.sévère,\n idTableau: id,\n différence: d,\n };\n }));\n },\n });\n };\n const fOublierDifférencesTableaux = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.client.bds.suivreTableauxBd({\n idBd,\n f: fSuivreRacine,\n });\n },\n f: async (diffs) => {\n info.différencesTableaux = diffs;\n await fFinaleNuée();\n },\n fBranche,\n fCode: (t) => t.id,\n fIdBdDeBranche: (t) => t.id,\n });\n return async () => {\n await Promise.all([fOublierDifférencesBd, fOublierDifférencesTableaux]);\n };\n };\n return await suivreBdsDeFonctionListe({\n fListe: fSuivreNuéesDeBd,\n f,\n fBranche: fSuivreNuée,\n });\n }\n async rechercherNuéesDéscendantes({ idNuée, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fFinale = async (résultats) => {\n f(résultats.map((r) => r.id));\n };\n return await this.client.réseau.rechercherNuées({\n f: fFinale,\n fObjectif: async (client, id, fSuiviRésultats) => {\n return await client.nuées.suivreNuéesParents({\n idNuée: id,\n f: (parents) => {\n if (parents.includes(idNuée))\n fSuiviRésultats({\n type: \"résultat\",\n score: 1,\n de: \"*\",\n info: {\n type: \"vide\",\n },\n });\n },\n });\n },\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async préciserParent({ idNuée, idNuéeParent, }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.set(\"parent\", idNuéeParent);\n await fOublier();\n }\n async enleverParent({ idNuée }) {\n const { bd, fOublier } = await this.client.ouvrirBdTypée({\n id: idNuée,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n });\n bd.del(\"parent\");\n await fOublier();\n }\n async suivreNuéesParents({ idNuée, f, }) {\n let annulé = false;\n const ascendance = {};\n const fFinale = async () => {\n await f(Object.values(Object.values(ascendance).map((a) => a.parent)));\n };\n const suivreParent = async ({ id, }) => {\n return await this.client.suivreBd({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdNuée,\n f: async (bd) => {\n if (annulé)\n return;\n const parent = await bd.get(\"parent\");\n if (ascendance[id]?.parent === parent) {\n if (!parent)\n await fFinale();\n return;\n }\n await ascendance[id]?.fOublier();\n if (parent) {\n const fOublierParent = await suivreParent({ id: parent });\n ascendance[id] = {\n parent,\n fOublier: async () => {\n await fOublierParent();\n await ascendance[parent]?.fOublier();\n delete ascendance[id];\n await fFinale();\n },\n };\n }\n else {\n delete ascendance[id];\n }\n await fFinale();\n },\n });\n };\n const fOublier = await suivreParent({ id: idNuée });\n return async () => {\n annulé = true;\n await fOublier();\n await Promise.all(Object.values(ascendance).map((a) => a.fOublier()));\n };\n }\n async suivreBdsCorrespondantesDUneNuée({ idNuée, f, nRésultatsDésirés, vérifierAutorisation = true, toujoursInclureLesMiennes = true, }) {\n if (vérifierAutorisation) {\n const info = {};\n const fFinale = async () => {\n const { philoAutorisation, membres, bds } = info;\n if (!bds)\n return;\n if (!philoAutorisation) {\n if (toujoursInclureLesMiennes) {\n return await f(bds\n .filter((bd) => bd.auteurs.some((c) => c === this.client.idCompte))\n .map((x) => x.idBd));\n }\n return;\n }\n if (!membres)\n return;\n const idMonCompte = await this.client.obtIdCompte();\n const filtrerAutorisation = (bds_) => {\n if (philoAutorisation === \"CJPI\") {\n const invités = membres\n .filter((m) => m.statut === \"accepté\")\n .map((m) => m.idCompte);\n return bds_\n .filter((x) => x.auteurs.some((c) => invités.includes(c)) ||\n (toujoursInclureLesMiennes &&\n x.auteurs.includes(idMonCompte)))\n .map((x) => x.idBd);\n }\n else if (philoAutorisation === \"IJPC\") {\n const exclus = membres\n .filter((m) => m.statut === \"exclus\")\n .map((m) => m.idCompte);\n return bds_\n .filter((x) => !x.auteurs.some((c) => exclus.includes(c)))\n .map((x) => x.idBd);\n }\n else {\n throw new Error(philoAutorisation);\n }\n };\n return await f(filtrerAutorisation(bds));\n };\n const fOublierSuivrePhilo = await this.suivrePhilosophieAutorisation({\n idNuée,\n f: async (philo) => {\n info.philoAutorisation = philo;\n await fFinale();\n },\n });\n const fOublierSuivreMembres = await this.suivreAutorisationsMembresDeNuée({\n idNuée,\n f: async (membres) => {\n info.membres = membres;\n await fFinale();\n },\n });\n const fSuivreBds = async (bds) => {\n info.bds = bds;\n await fFinale();\n };\n const fListe = async (fSuivreRacine) => {\n return await this.client.réseau.suivreBdsDeNuée({\n idNuée,\n f: fSuivreRacine,\n nRésultatsDésirés,\n });\n };\n const fBranche = async (idBd, fSuivreBranche) => {\n const fFinaleSuivreBranche = async (auteurs) => {\n return await fSuivreBranche({\n idBd,\n auteurs: auteurs\n .filter((x) => x.accepté) // Uniquement considérer les auteurs qui ont accepté l'invitation.\n .map((x) => x.idCompte),\n });\n };\n return await this.client.réseau.suivreAuteursBd({\n idBd,\n f: fFinaleSuivreBranche,\n });\n };\n const { fOublier: fOublierBds, fChangerProfondeur } = await suivreBdsDeFonctionListe({\n fListe,\n f: fSuivreBds,\n fBranche,\n });\n const fOublier = async () => {\n await Promise.all([fOublierBds, fOublierSuivreMembres, fOublierSuivrePhilo].map((f) => f()));\n };\n return {\n fOublier,\n fChangerProfondeur,\n };\n }\n else {\n return await this.client.réseau.suivreBdsDeNuée({\n idNuée,\n f,\n nRésultatsDésirés,\n });\n }\n }\n async suivreBdsCorrespondantes({ idNuée, f, nRésultatsDésirés, héritage, vérifierAutorisation = true, toujoursInclureLesMiennes = true, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n if (!info.directes)\n return;\n const finaux = [\n ...new Set([\n ...(info.ascendance || []),\n ...(info.descendance || []),\n ...info.directes,\n ]),\n ];\n return await f(finaux);\n };\n if (héritage && héritage.includes(\"ascendance\")) {\n const fOublierAscendance = await this.suivreDeParents({\n idNuée,\n f: async (bds) => {\n const finales = [];\n bds.forEach((l) => l.forEach((bd) => {\n !finales.includes(bd) && finales.push(bd);\n }));\n info.ascendance = finales;\n await fFinale();\n },\n fParents: async (id, fSuivreBranche) => {\n return (await this.suivreBdsCorrespondantesDUneNuée({\n idNuée: id,\n f: fSuivreBranche,\n nRésultatsDésirés,\n vérifierAutorisation,\n toujoursInclureLesMiennes,\n })).fOublier;\n },\n });\n fsOublier.push(fOublierAscendance);\n }\n if (héritage && héritage.includes(\"descendance\")) {\n const { fOublier: fOublierDescendance } = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.rechercherNuéesDéscendantes({\n idNuée,\n f: (parents) => fSuivreRacine([idNuée, ...parents].reverse()),\n });\n },\n f: async (bds) => {\n info.descendance = bds;\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return (await this.suivreBdsCorrespondantesDUneNuée({\n idNuée: id,\n f: fSuivreBranche,\n nRésultatsDésirés,\n vérifierAutorisation,\n toujoursInclureLesMiennes,\n })).fOublier;\n },\n });\n fsOublier.push(fOublierDescendance);\n }\n const { fOublier: fOublierDirectes, fChangerProfondeur } = await this.suivreBdsCorrespondantesDUneNuée({\n idNuée,\n f: async (bds) => {\n info.directes = bds;\n await fFinale();\n },\n nRésultatsDésirés,\n vérifierAutorisation,\n toujoursInclureLesMiennes,\n });\n fsOublier.push(fOublierDirectes);\n return {\n fOublier: async () => {\n await Promise.all(fsOublier.map((f) => f()));\n },\n fChangerProfondeur,\n };\n }\n async suivreEmpreinteTêtesBdsNuée({ idNuée, f, héritage, }) {\n return await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n const { fOublier } = await this.suivreBdsCorrespondantes({\n idNuée,\n f: async (bds) => fSuivreRacine([idNuée, ...bds]),\n héritage,\n });\n return fOublier;\n },\n f: async (empreintes) => {\n const empreinte = Base64.stringify(md5(empreintes.join(\":\")));\n return await f(empreinte);\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.client.suivreEmpreinteTêtesBdRécursive({\n idBd: id,\n f: fSuivreBranche,\n });\n },\n });\n }\n async suivreDonnéesTableauNuée({ idNuée, clefTableau, f, nRésultatsDésirés, héritage, ignorerErreursFormatBd = true, ignorerErreursFormatTableau = false, ignorerErreursDonnéesTableau = true, licencesPermises = undefined, toujoursInclureLesMiennes = true, clefsSelonVariables = false, }) {\n const fFinale = async (donnéesTableaux) => {\n const éléments = donnéesTableaux.flat();\n await f(éléments);\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBdsCorrespondantes({\n idNuée,\n f: async (bds) => {\n return await fSuivreRacine(bds);\n },\n nRésultatsDésirés,\n héritage,\n toujoursInclureLesMiennes,\n });\n };\n const fSuivreBdsConformes = async (fSuivreRacine) => {\n const fCondition = async (idBd, fSuivreCondition) => {\n const conformes = {\n licence: false,\n formatBd: true, // Ça doit être vrai par défaut, en attendant de rejoindre la nuée distante\n };\n const fsOublier = [];\n const fFinaleBdConforme = async () => {\n const conforme = Object.values(conformes).every((x) => x);\n await fSuivreCondition(conforme);\n };\n if (licencesPermises) {\n const fOublierLicence = await this.client.bds.suivreLicenceBd({\n idBd,\n f: async (licence) => {\n conformes.licence = licencesPermises.includes(licence);\n return await fFinaleBdConforme();\n },\n });\n fsOublier.push(fOublierLicence);\n }\n else {\n conformes.licence = true;\n }\n if (ignorerErreursFormatBd) {\n conformes.formatBd = true;\n }\n else {\n const fOublierErreursFormatBd = await this.suivreDifférencesNuéeEtBd({\n idBd,\n idNuée,\n f: async (différences) => {\n conformes.formatBd = !différences.length;\n return await fFinaleBdConforme();\n },\n });\n fsOublier.push(fOublierErreursFormatBd);\n }\n await fFinaleBdConforme();\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n };\n return await this.client.suivreBdsSelonCondition({\n fListe,\n fCondition,\n f: fSuivreRacine,\n });\n };\n const fBranche = async (idBd, fSuivreBranche) => {\n const info = {};\n const fFinaleBranche = async () => {\n const { données, erreursÉléments, auteurs } = info;\n if (données && erreursÉléments && auteurs && auteurs.length) {\n const auteur = auteurs.find((a) => a.accepté)?.idCompte;\n if (!auteur)\n return;\n const donnéesMembres = données\n .map((d) => {\n return {\n idCompte: auteur,\n élément: d,\n valid: erreursÉléments.filter((e) => e.id == d.id),\n };\n })\n .filter((d) => ignorerErreursDonnéesTableau || !d.valid.length);\n await fSuivreBranche(donnéesMembres);\n }\n };\n const fSuivreTableau = async ({ id, fSuivreBd, }) => {\n const infoTableau = {};\n const fsOublier = [];\n const fFinaleTableau = async () => {\n const { données, erreurs } = infoTableau;\n if (données) {\n await fSuivreBd({ données, erreurs: erreurs || [] });\n }\n };\n const fOublierDonnnées = await this.client.tableaux.suivreDonnées({\n idTableau: id,\n f: async (données) => {\n infoTableau.données = données;\n await fFinaleTableau();\n },\n clefsSelonVariables,\n });\n fsOublier.push(fOublierDonnnées);\n const fOublierErreurs = await this.client.tableaux.suivreValidDonnées({\n idTableau: id,\n f: async (erreurs) => {\n infoTableau.erreurs = erreurs;\n await fFinaleTableau();\n },\n });\n fsOublier.push(fOublierErreurs);\n return async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n };\n const fOublierSuivreTableau = await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => {\n return await this.client.suivreBdSelonCondition({\n fRacine: async (fSuivreRacineListe) => {\n return await this.client.bds.suivreIdTableauParClef({\n idBd,\n clef: clefTableau,\n f: ignorerNonDéfinis(fSuivreRacineListe),\n });\n },\n fCondition: async (idTableau, fSuivreCondition) => {\n if (ignorerErreursFormatTableau) {\n await fSuivreCondition(true);\n return faisRien;\n }\n else {\n // Il faut envoyer une condition vraie par défaut au début au cas où la nuée ne serait pas rejoignable\n await fSuivreCondition(true);\n return await this.suivreDifférencesNuéeEtTableau({\n idNuée,\n clefTableau,\n idTableau,\n f: async (différences) => await fSuivreCondition(!différences.length),\n stricte: false,\n });\n }\n },\n f: fSuivreRacine,\n });\n },\n f: async (x) => {\n info.données = x?.données;\n info.erreursÉléments = x?.erreurs;\n await fFinaleBranche();\n },\n fSuivre: fSuivreTableau,\n });\n const fOublierAuteursBd = await this.client.réseau.suivreAuteursBd({\n idBd,\n f: async (auteurs) => {\n info.auteurs = auteurs;\n await fFinaleBranche();\n },\n });\n return async () => {\n await Promise.all([fOublierSuivreTableau, fOublierAuteursBd]);\n };\n };\n return await suivreBdsDeFonctionListe({\n fListe: fSuivreBdsConformes,\n f: fFinale,\n fBranche,\n });\n }\n async suivreDonnéesExportationTableau({ clefTableau, idNuée, langues, f, nRésultatsDésirés, héritage, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n const { colonnes, données, nomsTableau, nomsVariables } = info;\n if (colonnes && données && (!langues || (nomsTableau && nomsVariables))) {\n const fichiersSFIP = new Set();\n let donnéesFormattées = await Promise.all(données.map(async (d) => {\n const élémentFormatté = await this.client.tableaux.formaterÉlément({\n é: d.élément.données,\n colonnes,\n fichiersSFIP,\n langues,\n });\n return { ...élémentFormatté, auteur: d.idCompte };\n }));\n donnéesFormattées = donnéesFormattées.map((d) => Object.keys(d).reduce((acc, idCol) => {\n if (idCol === \"auteur\") {\n acc[idCol] = d[idCol];\n }\n else {\n const idVar = colonnes.find((c) => c.id === idCol)?.variable;\n if (!idVar)\n throw new Error(`Colonnne avec id ${idCol} non trouvée parmis les colonnnes :\\n${JSON.stringify(colonnes, undefined, 2)}.`);\n const nomVar = langues && nomsVariables?.[idVar]\n ? traduire(nomsVariables[idVar], langues) || idCol\n : idCol;\n acc[nomVar] = d[idCol];\n }\n return acc;\n }, {}));\n const idCourtTableau = clefTableau.split(\"/\").pop();\n const nomTableau = langues && nomsTableau\n ? traduire(nomsTableau, langues) || idCourtTableau\n : idCourtTableau;\n return await f({\n nomTableau,\n données: donnéesFormattées,\n fichiersSFIP,\n });\n }\n };\n if (langues) {\n const fOublierNomsTableaux = await this.suivreNomsTableauNuée({\n idNuée,\n clefTableau,\n f: async (noms) => {\n info.nomsTableau = noms;\n await fFinale();\n },\n });\n fsOublier.push(fOublierNomsTableaux);\n const fOublierNomsVariables = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => this.suivreVariablesNuée({ idNuée, f: fSuivreRacine }),\n f: async (noms) => {\n info.nomsVariables = Object.fromEntries(noms.map((n) => [n.idVar, n.noms]));\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.client.variables.suivreNomsVariable({\n idVariable: id,\n f: async (noms) => await fSuivreBranche({\n idVar: id,\n noms,\n }),\n });\n },\n });\n fsOublier.push(fOublierNomsVariables);\n }\n const fOublierColonnes = await this.suivreColonnesTableauNuée({\n idNuée,\n clefTableau,\n f: async (cols) => {\n info.colonnes = cols;\n await fFinale();\n },\n catégories: true,\n });\n fsOublier.push(fOublierColonnes);\n const { fOublier: fOublierDonnées } = await this.suivreDonnéesTableauNuée({\n idNuée,\n clefTableau,\n nRésultatsDésirés,\n héritage,\n f: async (données) => {\n info.données = données;\n await fFinale();\n },\n });\n fsOublier.push(fOublierDonnées);\n return async () => {\n Promise.all(fsOublier.map((f) => f()));\n };\n }\n async suivreDonnéesExportation({ idNuée, langues, f, nRésultatsDésirés, héritage, }) {\n const info = {};\n const fsOublier = [];\n const fFinale = async () => {\n const { nomsNuée, données } = info;\n if (!données)\n return;\n const idCourt = idNuée.split(\"/\").pop();\n const nomNuée = nomsNuée && langues ? traduire(nomsNuée, langues) || idCourt : idCourt;\n await f({\n nomNuée,\n tableaux: données,\n });\n };\n const fOublierTableaux = await suivreBdsDeFonctionListe({\n fListe: async (fSuivreRacine) => {\n return await this.suivreTableauxNuée({ idNuée, f: fSuivreRacine });\n },\n f: async (données) => {\n info.données = données;\n await fFinale();\n },\n fBranche: async (id, fSuivreBranche) => {\n return await this.suivreDonnéesExportationTableau({\n idNuée,\n clefTableau: id,\n langues,\n nRésultatsDésirés,\n héritage,\n f: async (données) => {\n return await fSuivreBranche(données);\n },\n });\n },\n fIdBdDeBranche: (x) => x.clef,\n fCode: (x) => x.clef,\n });\n fsOublier.push(fOublierTableaux);\n if (langues) {\n const fOublierNomsNuée = await this.suivreNomsNuée({\n idNuée,\n f: async (noms) => {\n info.nomsNuée = noms;\n await fFinale();\n },\n });\n fsOublier.push(fOublierNomsNuée);\n }\n const fOublier = async () => {\n await Promise.all(fsOublier.map((f) => f()));\n };\n return fOublier;\n }\n async exporterDonnéesNuée({ idNuée, langues, nomFichier, nRésultatsDésirés, héritage, patience = 500, }) {\n const doc = utils.book_new();\n const fichiersSFIP = new Set();\n const données = await uneFois(async (fSuivi) => {\n return await this.suivreDonnéesExportation({\n idNuée,\n langues,\n f: fSuivi,\n héritage,\n nRésultatsDésirés,\n });\n }, attendreStabilité(patience));\n nomFichier = nomFichier || données.nomNuée;\n for (const tableau of données.tableaux) {\n tableau.fichiersSFIP.forEach((x) => fichiersSFIP.add(x));\n /* Créer le tableau */\n const tableauXLSX = utils.json_to_sheet(tableau.données);\n /* Ajouter la feuille au document. XLSX n'accepte pas les noms de colonne > 31 caractères */\n utils.book_append_sheet(doc, tableauXLSX, tableau.nomTableau.slice(0, 30));\n }\n return { doc, fichiersSFIP, nomFichier };\n }\n async générerDeBd({ idBd, patience = 500, }) {\n const idNuée = await this.créerNuée({});\n const [noms, descriptions, idsMotsClefs, tableaux] = await Promise.all([\n // Noms\n uneFois(async (fSuivi) => {\n return await this.client.bds.suivreNomsBd({ idBd, f: fSuivi });\n }, attendreStabilité(patience)),\n // Descriptions\n uneFois(async (fSuivi) => {\n return await this.client.bds.suivreDescriptionsBd({\n idBd,\n f: fSuivi,\n });\n }, attendreStabilité(patience)),\n // Mots-clefs\n uneFois(async (fSuivi) => {\n return await this.client.bds.suivreMotsClefsBd({\n idBd,\n f: fSuivi,\n });\n }, attendreStabilité(patience)),\n // Tableaux\n uneFois(async (fSuivi) => {\n return await this.client.bds.suivreTableauxBd({ idBd, f: fSuivi });\n }, attendreStabilité(patience)),\n ]);\n await Promise.all([\n this.sauvegarderNomsNuée({\n idNuée,\n noms,\n }),\n await this.sauvegarderDescriptionsNuée({\n idNuée,\n descriptions,\n }),\n await this.ajouterMotsClefsNuée({\n idNuée,\n idsMotsClefs,\n }),\n ]);\n await Promise.all(tableaux.map(async (tableau) => {\n const idTableau = tableau.id;\n const idTableauNuée = await this.ajouterTableauNuée({\n idNuée,\n clefTableau: tableau.clef,\n });\n // Colonnes\n const colonnes = await uneFois(async (fSuivi) => {\n return await this.client.tableaux.suivreColonnesTableau({\n idTableau,\n f: fSuivi,\n catégories: false,\n });\n }, attendreStabilité(patience));\n for (const col of colonnes) {\n await this.ajouterColonneTableauNuée({\n idTableau: idTableauNuée,\n idVariable: col.variable,\n idColonne: col.id,\n index: col.index,\n });\n // Indexes\n await this.changerColIndexTableauNuée({\n idTableau: idTableauNuée,\n idColonne: col.id,\n val: !!col.index,\n });\n // Règles\n const règles = await uneFois(async (fSuivi) => {\n return await this.client.tableaux.suivreRègles({\n idTableau,\n f: fSuivi,\n });\n }, attendreStabilité(patience));\n for (const règle of règles) {\n if (règle.source.type === \"tableau\") {\n await this.ajouterRègleTableauNuée({\n idTableau: idTableauNuée,\n idColonne: col.id,\n règle: règle.règle.règle,\n });\n }\n }\n }\n }));\n return idNuée;\n }\n async générerSchémaBdNuée({ idNuée, licence, patience = 500, }) {\n const [idsMotsClefs, tableaux] = await Promise.all([\n uneFois(async (fSuivi) => {\n return await this.suivreMotsClefsNuée({\n idNuée,\n f: fSuivi,\n });\n }, attendreStabilité(patience)),\n uneFois(async (fSuivi) => {\n return await this.suivreTableauxNuée({\n idNuée,\n f: fSuivi,\n });\n }, attendreStabilité(patience)),\n ]);\n const obtRèglesTableau = async (clefTableau) => {\n return await uneFois(async (fSuivi) => {\n return await this.suivreRèglesTableauNuée({\n idNuée,\n clefTableau,\n f: fSuivi,\n });\n }, attendreStabilité(patience));\n };\n const générerCols = async (clefTableau) => {\n return await uneFois(async (fSuivi) => {\n return await this.suivreColonnesTableauNuée({\n idNuée,\n clefTableau,\n f: fSuivi,\n catégories: false,\n });\n }, attendreStabilité(patience));\n };\n const schéma = {\n licence,\n nuées: [idNuée],\n motsClefs: idsMotsClefs,\n tableaux: await Promise.all(tableaux.map(async (t) => {\n const [cols, règles] = await Promise.all([\n générerCols(t.clef),\n obtRèglesTableau(t.clef),\n ]);\n return {\n cols: cols.map((c) => {\n const obligatoire = règles.some((r) => r.colonne === c.id && r.règle.règle.typeRègle === \"existe\");\n return {\n idColonne: c.id,\n idVariable: c.variable,\n index: !!c.index,\n optionnelle: !obligatoire,\n };\n }),\n clef: t.clef,\n };\n })),\n };\n return schéma;\n }\n async effacerNuée({ idNuée }) {\n // D'abord effacer l'entrée dans notre liste de BDs\n const { bd: bdRacine, fOublier } = await this.obtBd();\n await bdRacine.del(idNuée);\n await fOublier();\n // Et puis maintenant aussi effacer les tableaux et la Nuée elle-même\n for (const clef of [\"noms\", \"descriptions\", \"motsClefs\"]) {\n const idBd = await this.client.obtIdBd({\n nom: clef,\n racine: idNuée,\n });\n if (idBd)\n await this.client.effacerBd({ id: idBd });\n }\n const idBdTableaux = await this.client.obtIdBd({\n nom: \"tableaux\",\n racine: idNuée,\n type: \"ordered-keyvalue\",\n });\n if (idBdTableaux) {\n const { bd: bdTableaux, fOublier: fOublierTableaux } = await this.client.ouvrirBdTypée({\n id: idBdTableaux,\n type: \"ordered-keyvalue\",\n schéma: schémaBdTableauxDeBd,\n });\n const tableaux = Object.keys(bdTableaux.all);\n for (const t of tableaux) {\n await this.client.tableaux.effacerTableau({ idTableau: t });\n }\n fOublierTableaux();\n await this.client.effacerBd({ id: idBdTableaux });\n }\n await this.enleverDeMesNuées({ idNuée });\n await this.client.effacerBd({ id: idNuée });\n }\n}\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreDescriptionsNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreImage\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreMotsClefsNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreNomsTableauNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreColonnesTableauNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreR\\u00E8glesTableauNu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreQualit\\u00E9Nu\\u00E9e\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreDiff\\u00E9rencesNu\\u00E9eEtTableau\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreDiff\\u00E9rencesNu\\u00E9eEtBd\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreCorrespondanceBd\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Nuées.prototype, \"rechercherNu\\u00E9esD\\u00E9scendantes\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreNu\\u00E9esParents\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Nuées.prototype, \"suivreBdsCorrespondantesDUneNu\\u00E9e\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Nuées.prototype, \"suivreBdsCorrespondantes\", null);\n__decorate([\n cacheSuivi\n], Nuées.prototype, \"suivreEmpreinteT\\u00EAtesBdsNu\\u00E9e\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Nuées.prototype, \"suivreDonn\\u00E9esTableauNu\\u00E9e\", null);\n//# sourceMappingURL=nu%C3%A9es.js.map","import { similTexte, combinerRecherches, rechercherSelonId, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherVariablesSelonNom = (nom) => {\n return async (client, idVariable, fSuivreRecherche) => {\n const fSuivre = async (nomsVariable) => {\n const résultat = similTexte(nom, nomsVariable);\n if (résultat) {\n const { score, clef, info } = résultat;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n de: \"nom\",\n clef,\n info,\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.variables.suivreNomsVariable({\n idVariable,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherVariablesSelonDescr = (descr) => {\n return async (client, idVariable, fSuivreRecherche) => {\n const fSuivre = async (nomsVariable) => {\n const résultat = similTexte(descr, nomsVariable);\n if (résultat) {\n const { score, clef, info } = résultat;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n de: \"descr\",\n clef,\n info,\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.variables.suivreDescriptionsVariable({\n idVariable,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherVariablesSelonTexte = (texte) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fRechercherNoms = rechercherVariablesSelonNom(texte);\n const fRechercherDescr = rechercherVariablesSelonDescr(texte);\n const fRechercherId = rechercherSelonId(texte);\n const fRechercherTous = rechercherTousSiVide(texte);\n return await combinerRecherches({\n noms: fRechercherNoms,\n descr: fRechercherDescr,\n id: fRechercherId,\n vide: fRechercherTous,\n }, client, idCompte, fSuivreRecherche);\n };\n};\n//# sourceMappingURL=variable.js.map","import { similTexte, combinerRecherches, rechercherSelonId, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherMotsClefsSelonNom = (nomMotClef) => {\n return async (client, idMotClef, fSuivreRecherche) => {\n const fSuivre = async (noms) => {\n const corresp = similTexte(nomMotClef, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"nom\",\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.motsClefs.suivreNomsMotClef({\n idMotClef,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherMotsClefsSelonDescr = (desrcMotClef) => {\n return async (client, idMotClef, fSuivreRecherche) => {\n const fSuivre = async (noms) => {\n const corresp = similTexte(desrcMotClef, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"descr\",\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.motsClefs.suivreDescriptionsMotClef({\n idMotClef,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherMotsClefsSelonTexte = (texte) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fRechercherNoms = rechercherMotsClefsSelonNom(texte);\n const fRechercherDescr = rechercherMotsClefsSelonDescr(texte);\n const fRechercherId = rechercherSelonId(texte);\n const fRechercherTous = rechercherTousSiVide(texte);\n return await combinerRecherches({\n noms: fRechercherNoms,\n id: fRechercherId,\n descr: fRechercherDescr,\n vide: fRechercherTous,\n }, client, idCompte, fSuivreRecherche);\n };\n};\n//# sourceMappingURL=motClef.js.map","import { rechercherVariablesSelonNom } from \"./variable.js\";\nimport { rechercherMotsClefsSelonNom } from \"./motClef.js\";\nimport { combinerRecherches, sousRecherche, rechercherSelonId, similTexte, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherBdsSelonNom = (nomBd) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fSuivre = async (noms) => {\n const corresp = similTexte(nomBd, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"nom\",\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.bds.suivreNomsBd({ idBd, f: fSuivre });\n return fOublier;\n };\n};\nexport const rechercherBdsSelonDescr = (descrBd) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fSuivre = async (descrs) => {\n const corresp = similTexte(descrBd, descrs);\n if (corresp) {\n const { score, clef, info } = corresp;\n return await fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"descr\",\n });\n }\n else {\n return await fSuivreRecherche();\n }\n };\n const fOublier = await client.bds.suivreDescriptionsBd({\n idBd,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherBdsSelonIdVariable = (idVariable) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.bds.suivreVariablesBd({\n idBd,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonNomVariable = (nomVariable) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.bds.suivreVariablesBd({\n idBd,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherVariablesSelonNom(nomVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonVariable = (texte) => {\n return async (client, idBd, fSuivreRecherche) => {\n return await combinerRecherches({\n id: rechercherBdsSelonIdVariable(texte),\n nom: rechercherBdsSelonNomVariable(texte),\n }, client, idBd, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonIdMotClef = (idMotClef) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.bds.suivreMotsClefsBd({\n idBd,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonNomMotClef = (nomMotClef) => {\n return async (client, idBd, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.bds.suivreMotsClefsBd({\n idBd,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherMotsClefsSelonNom(nomMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonMotClef = (texte) => {\n return async (client, idBd, fSuivreRecherche) => {\n return await combinerRecherches({\n id: rechercherBdsSelonIdMotClef(texte),\n nom: rechercherBdsSelonNomMotClef(texte),\n }, client, idBd, fSuivreRecherche);\n };\n};\nexport const rechercherBdsSelonTexte = (texte) => {\n return async (client, idBd, fSuivreRecherche) => {\n return await combinerRecherches({\n nom: rechercherBdsSelonNom(texte),\n descr: rechercherBdsSelonDescr(texte),\n variables: rechercherBdsSelonVariable(texte),\n motsClefs: rechercherBdsSelonMotClef(texte),\n id: rechercherSelonId(texte),\n vide: rechercherTousSiVide(texte),\n }, client, idBd, fSuivreRecherche);\n };\n};\n//# sourceMappingURL=bd.js.map","import { rechercherBdsSelonTexte } from \"./bd.js\";\nimport { rechercherVariablesSelonTexte, rechercherVariablesSelonNom, } from \"./variable.js\";\nimport { rechercherMotsClefsSelonTexte, rechercherMotsClefsSelonNom, } from \"./motClef.js\";\nimport { similTexte, combinerRecherches, sousRecherche, rechercherSelonId, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherProjetsSelonNom = (nomProjet) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fSuivre = (noms) => {\n const corresp = similTexte(nomProjet, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"nom\",\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.projets.suivreNomsProjet({\n idProjet,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherProjetsSelonDescr = (descProjet) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fSuivre = (descrs) => {\n const corresp = similTexte(descProjet, descrs);\n if (corresp) {\n const { score, clef, info } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"descr\",\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.projets.suivreDescriptionsProjet({\n idProjet,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherProjetsSelonIdBd = (idBd) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreBdsProjet({\n idProjet,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idBd);\n return await sousRecherche(\"bd\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonBd = (texte) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreBdsProjet({\n idProjet,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherBdsSelonTexte(texte);\n return await sousRecherche(\"bd\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonIdVariable = (idVariable) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreVariablesProjet({\n idProjet,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonNomVariable = (nomVariable) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreVariablesProjet({\n idProjet,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherVariablesSelonNom(nomVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonVariable = (texte) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreVariablesProjet({\n idProjet,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherVariablesSelonTexte(texte);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonIdMotClef = (idMotClef) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreMotsClefsProjet({\n idProjet,\n f: (motsClefs) => fSuivreRacine(motsClefs.map((m) => m.idMotClef)),\n });\n };\n const fRechercher = rechercherSelonId(idMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonNomMotClef = (nomMotClef) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreMotsClefsProjet({\n idProjet,\n f: (motsClefs) => fSuivreRacine(motsClefs.map((m) => m.idMotClef)),\n });\n };\n const fRechercher = rechercherMotsClefsSelonNom(nomMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonMotClef = (texte) => {\n return async (client, idProjet, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.projets.suivreMotsClefsProjet({\n idProjet,\n f: (motsClefs) => fSuivreRacine(motsClefs.map((m) => m.idMotClef)),\n });\n };\n const fRechercher = rechercherMotsClefsSelonTexte(texte);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherProjetsSelonTexte = (texte) => {\n return async (client, idCompte, fSuivreRecherche) => {\n const fRechercherNoms = rechercherProjetsSelonNom(texte);\n const fRechercherDescr = rechercherProjetsSelonDescr(texte);\n const fRechercherBd = rechercherProjetsSelonBd(texte);\n const fRechercherVariable = rechercherProjetsSelonVariable(texte);\n const fRechercherMotClef = rechercherProjetsSelonMotClef(texte);\n const fRechercherId = rechercherSelonId(texte);\n const fRechercherTous = rechercherTousSiVide(texte);\n return await combinerRecherches({\n noms: fRechercherNoms,\n descr: fRechercherDescr,\n bd: fRechercherBd,\n variable: fRechercherVariable,\n motClef: fRechercherMotClef,\n id: fRechercherId,\n tous: fRechercherTous,\n }, client, idCompte, fSuivreRecherche);\n };\n};\n//# sourceMappingURL=projet.js.map","import { rechercherVariablesSelonNom } from \"./variable.js\";\nimport { rechercherMotsClefsSelonNom } from \"./motClef.js\";\nimport { combinerRecherches, sousRecherche, rechercherSelonId, similTexte, rechercherTousSiVide, } from \"./utils.js\";\nexport const rechercherNuéesSelonNom = (nomNuée) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fSuivre = (noms) => {\n const corresp = similTexte(nomNuée, noms);\n if (corresp) {\n const { score, clef, info } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"nom\",\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.nuées.suivreNomsNuée({ idNuée, f: fSuivre });\n return fOublier;\n };\n};\nexport const rechercherNuéesSelonDescr = (descrNuée) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fSuivre = (descrs) => {\n const corresp = similTexte(descrNuée, descrs);\n if (corresp) {\n const { score, clef, info } = corresp;\n fSuivreRecherche({\n type: \"résultat\",\n score,\n clef,\n info,\n de: \"descr\",\n });\n }\n else {\n fSuivreRecherche();\n }\n };\n const fOublier = await client.nuées.suivreDescriptionsNuée({\n idNuée,\n f: fSuivre,\n });\n return fOublier;\n };\n};\nexport const rechercherNuéesSelonIdVariable = (idVariable) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.nuées.suivreVariablesNuée({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonNomVariable = (nomVariable) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.nuées.suivreVariablesNuée({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherVariablesSelonNom(nomVariable);\n return await sousRecherche(\"variable\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonVariable = (texte) => {\n return async (client, idNuée, fSuivreRecherche) => {\n return await combinerRecherches({\n id: rechercherNuéesSelonIdVariable(texte),\n nom: rechercherNuéesSelonNomVariable(texte),\n }, client, idNuée, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonIdMotClef = (idMotClef) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.nuées.suivreMotsClefsNuée({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherSelonId(idMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonNomMotClef = (nomMotClef) => {\n return async (client, idNuée, fSuivreRecherche) => {\n const fListe = async (fSuivreRacine) => {\n return await client.nuées.suivreMotsClefsNuée({\n idNuée,\n f: fSuivreRacine,\n });\n };\n const fRechercher = rechercherMotsClefsSelonNom(nomMotClef);\n return await sousRecherche(\"motClef\", fListe, fRechercher, client, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonMotClef = (texte) => {\n return async (client, idNuée, fSuivreRecherche) => {\n return await combinerRecherches({\n id: rechercherNuéesSelonIdMotClef(texte),\n nom: rechercherNuéesSelonNomMotClef(texte),\n }, client, idNuée, fSuivreRecherche);\n };\n};\nexport const rechercherNuéesSelonTexte = (texte) => {\n return async (client, idNuée, fSuivreRecherche) => {\n return await combinerRecherches({\n nom: rechercherNuéesSelonNom(texte),\n descr: rechercherNuéesSelonDescr(texte),\n variables: rechercherNuéesSelonVariable(texte),\n motsClefs: rechercherNuéesSelonMotClef(texte),\n id: rechercherSelonId(texte),\n tous: rechercherTousSiVide(texte),\n }, client, idNuée, fSuivreRecherche);\n };\n};\n//# sourceMappingURL=nu%C3%A9e.js.map","import { __decorate } from \"tslib\";\nimport * as bd from \"./bd.js\";\nimport * as motClef from \"./motClef.js\";\nimport * as profil from \"./profil.js\";\nimport * as projet from \"./projet.js\";\nimport * as variable from \"./variable.js\";\nimport * as nuée from \"./nu\\u00E9e.js\";\nimport * as utils from \"./utils.js\";\nimport { cacheRechercheParNRésultats } from \"../d\\u00E9corateursCache.js\";\nexport class Recherche {\n client;\n constructor({ client }) {\n this.client = client;\n }\n async rechercherVariables({ f, nRésultatsDésirés, toutLeRéseau = true, }) {\n return await this.client.réseau.rechercherVariables({\n f,\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async rechercherVariablesSelonId({ idVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = utils.rechercherSelonId(idVariable);\n return await this.client.réseau.rechercherVariables({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherVariablesSelonNom({ nomVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = variable.rechercherVariablesSelonNom(nomVariable);\n return await this.client.réseau.rechercherVariables({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherVariablesSelonDescr({ descrVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = variable.rechercherVariablesSelonDescr(descrVariable);\n return await this.client.réseau.rechercherVariables({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherVariablesSelonTexte({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = variable.rechercherVariablesSelonTexte(texte);\n return await this.client.réseau.rechercherVariables({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefs({ f, nRésultatsDésirés, toutLeRéseau = true, }) {\n return await this.client.réseau.rechercherMotsClefs({\n f,\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefsSelonId({ idMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = utils.rechercherSelonId(idMotClef);\n return await this.client.réseau.rechercherMotsClefs({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefsSelonNom({ nomMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = motClef.rechercherMotsClefsSelonNom(nomMotClef);\n return await this.client.réseau.rechercherMotsClefs({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefsSelonDescr({ descrMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = motClef.rechercherMotsClefsSelonDescr(descrMotClef);\n return await this.client.réseau.rechercherMotsClefs({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherMotsClefsSelonTexte({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = motClef.rechercherMotsClefsSelonTexte(texte);\n return await this.client.réseau.rechercherMotsClefs({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBds({ f, nRésultatsDésirés, toutLeRéseau = true, }) {\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonId({ idBd, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = utils.rechercherSelonId(idBd);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonNom({ nomBd, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonNom(nomBd);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonDescr({ descrBd, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonDescr(descrBd);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonIdMotClef({ idMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonIdMotClef(idMotClef);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonIdVariable({ idVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonIdVariable(idVariable);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonNomMotClef({ nomMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonNomMotClef(nomMotClef);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonNomVariable({ nomVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonNomVariable(nomVariable);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonMotClef({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonMotClef(texte);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonVariable({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonVariable(texte);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherBdsSelonTexte({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = bd.rechercherBdsSelonTexte(texte);\n return await this.client.réseau.rechercherBds({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProfilsSelonId({ idCompte, f, nRésultatsDésirés, }) {\n const fObjectif = utils.rechercherSelonId(idCompte);\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProfilsSelonNom({ nom, f, nRésultatsDésirés, }) {\n const fObjectif = profil.rechercherProfilsSelonNom(nom);\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProfilsSelonImage({ image, f, nRésultatsDésirés, }) {\n const fObjectif = profil.rechercherProfilsSelonImage(image);\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProfilsSelonActivité({ f, nRésultatsDésirés, }) {\n const fObjectif = profil.rechercherProfilsSelonActivité();\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProfilsSelonCourriel({ courriel, f, nRésultatsDésirés, }) {\n const fObjectif = profil.rechercherProfilsSelonCourriel(courriel);\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProfilsSelonTexte({ texte, f, nRésultatsDésirés, }) {\n const fObjectif = profil.rechercherProfilsSelonTexte(texte);\n return await this.client.réseau.rechercherMembres({\n f,\n nRésultatsDésirés,\n fObjectif,\n });\n }\n async rechercherProjets({ f, nRésultatsDésirés, toutLeRéseau = true, }) {\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonId({ idProjet, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = utils.rechercherSelonId(idProjet);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonNom({ nomProjet, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonNom(nomProjet);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonDescr({ descrProjet, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonDescr(descrProjet);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonIdVariable({ idVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonIdVariable(idVariable);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonNomVariable({ nomVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonNomVariable(nomVariable);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonVariable({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonVariable(texte);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonIdMotClef({ idMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonIdMotClef(idMotClef);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonNomMotClef({ nomMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonNomMotClef(nomMotClef);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonMotClef({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonMotClef(texte);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonIdBd({ idBd, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonIdBd(idBd);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonBd({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonBd(texte);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherProjetsSelonTexte({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = projet.rechercherProjetsSelonTexte(texte);\n return await this.client.réseau.rechercherProjets({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuées({ f, nRésultatsDésirés, toutLeRéseau = true, }) {\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonId({ idNuée, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = utils.rechercherSelonId(idNuée);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonNom({ nomNuée, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonNom(nomNuée);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonDescr({ descrNuée, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonDescr(descrNuée);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonIdMotClef({ idMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonIdMotClef(idMotClef);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonIdVariable({ idVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonIdVariable(idVariable);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonNomMotClef({ nomMotClef, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonNomMotClef(nomMotClef);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonNomVariable({ nomVariable, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonNomVariable(nomVariable);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonMotClef({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonMotClef(texte);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonVariable({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonVariable(texte);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n async rechercherNuéesSelonTexte({ texte, f, nRésultatsDésirés, toutLeRéseau = true, }) {\n const fObjectif = nuée.rechercherNuéesSelonTexte(texte);\n return await this.client.réseau.rechercherNuées({\n f,\n nRésultatsDésirés,\n fObjectif,\n toutLeRéseau,\n });\n }\n}\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherVariables\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherVariablesSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherVariablesSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherVariablesSelonDescr\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherVariablesSelonTexte\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherMotsClefs\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherMotsClefsSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherMotsClefsSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherMotsClefsSelonDescr\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherMotsClefsSelonTexte\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBds\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonDescr\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonIdMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonIdVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonNomMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonNomVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherBdsSelonTexte\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonImage\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonActivit\\u00E9\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonCourriel\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProfilsSelonTexte\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjets\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonDescr\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonIdVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonNomVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonIdMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonNomMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonIdBd\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonBd\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherProjetsSelonTexte\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9es\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonId\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonNom\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonDescr\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonIdMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonIdVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonNomMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonNomVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonMotClef\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonVariable\", null);\n__decorate([\n cacheRechercheParNRésultats\n], Recherche.prototype, \"rechercherNu\\u00E9esSelonTexte\", null);\n//# sourceMappingURL=recherche.js.map","import { utils } from \"xlsx\";\nexport class ImportateurFeuilleCalcul {\n doc;\n constructor(données) {\n this.doc = données;\n }\n obtNomsTableaux() {\n return this.doc.SheetNames;\n }\n obtColsTableau(nomTableau) {\n const feuille = this.doc.Sheets[nomTableau];\n const données = utils.sheet_to_json(feuille, { header: 1 });\n return (données[0] || []).map((c) => c.toString());\n }\n obtDonnées(nomTableau, cols) {\n const feuille = this.doc.Sheets[nomTableau];\n const données = utils.sheet_to_json(feuille);\n if (Array.isArray(cols)) {\n return données.map((d) => Object.fromEntries(Object.keys(d)\n .filter((c) => cols.includes(c))\n .map((c) => [c, d[c]])));\n }\n else {\n const colsInversées = Object.fromEntries(Object.entries(cols).map(([c, v]) => [v, c]));\n return données.map((d) => Object.fromEntries(Object.keys(d)\n .filter((c) => Object.keys(colsInversées).includes(c))\n .map((c) => [colsInversées[c], d[c]])));\n }\n }\n}\n//# sourceMappingURL=xlsx.js.map","const copieProfonde = (données) => {\n return JSON.parse(JSON.stringify(données));\n};\nconst estUnDic = (x) => typeof x === \"object\" && !Array.isArray(x);\nconst estUneListe = (x) => Array.isArray(x);\nconst extraireBranches = (données, clefs) => {\n let branches;\n if (!clefs.length) {\n branches = estUnDic(données)\n ? Object.values(données)\n : données;\n return { base: {}, branches };\n }\n const avantDernière = extraireDonnées(données, clefs.slice(0, clefs.length - 1));\n const dernièreClef = clefs[clefs.length - 1];\n let conteneurBranches;\n if (typeof dernièreClef === \"number\") {\n if (estUneListe(avantDernière)) {\n const x = avantDernière[dernièreClef];\n if (typeof x !== \"object\")\n throw new Error(x.toString());\n conteneurBranches = x;\n delete avantDernière[dernièreClef];\n }\n else {\n throw new Error(`${dernièreClef} ne peut pas indexer une liste.`);\n }\n }\n else if (typeof dernièreClef === \"string\") {\n if (estUnDic(avantDernière)) {\n const x = avantDernière[dernièreClef];\n if (typeof x !== \"object\")\n throw new Error(x.toString());\n conteneurBranches = x;\n delete avantDernière[dernièreClef];\n }\n else {\n throw new Error(`${dernièreClef} ne peut pas indexer un objet.`);\n }\n }\n else {\n throw new Error(`${dernièreClef} n'est pas une clef valide.`);\n }\n if (estUnDic(conteneurBranches)) {\n branches = Object.values(conteneurBranches);\n }\n else if (estUneListe(conteneurBranches)) {\n branches = conteneurBranches;\n }\n else {\n throw Error(JSON.stringify(conteneurBranches));\n }\n return { base: données, branches };\n};\nconst injecterBranche = (base, clefs, branche) => {\n if (!clefs.length) {\n Object.assign(base, branche);\n }\n else {\n const clefsSaufLaDernière = clefs.slice(1, clefs.length);\n const avantDernière = extraireDonnées(base, clefsSaufLaDernière);\n const dernièreClef = clefs[clefs.length - 1];\n if (typeof dernièreClef === \"number\") {\n if (estUneListe(avantDernière)) {\n avantDernière[dernièreClef] = branche;\n }\n else {\n throw new Error(`${dernièreClef} ne peut pas indexer une liste.`);\n }\n }\n else if (typeof dernièreClef === \"string\") {\n if (estUnDic(avantDernière)) {\n avantDernière[dernièreClef] = branche;\n }\n else {\n throw new Error(`${dernièreClef} ne peut pas indexer un objet.`);\n }\n }\n else {\n throw new Error(`${dernièreClef} n'est pas une clef valide.`);\n }\n }\n};\nexport const aplatirDonnées = (données, clefs = [], _base, _élémentsFinaux = []) => {\n if (clefs[clefs.length - 1] !== -1)\n clefs.push(-1);\n const iNull = clefs.indexOf(-1);\n const clefsAvant = clefs.slice(0, iNull);\n const clefsAprès = clefs.slice(iNull + 1, clefs.length);\n const { base, branches } = extraireBranches(données, clefsAvant);\n for (const branche of branches) {\n if (typeof branche !== \"object\")\n throw new Error(branche.toString());\n const copieBase = copieProfonde(base);\n injecterBranche(copieBase, clefsAvant, branche);\n if (clefsAprès.length) {\n aplatirDonnées(branche, clefsAprès, copieBase, _élémentsFinaux);\n }\n else {\n _élémentsFinaux.push(copieBase);\n }\n }\n return _élémentsFinaux;\n};\nexport const extraireDonnées = (données, clefs) => {\n let donnéesFinales = données;\n for (const c of clefs) {\n if (typeof c === \"number\") {\n if (estUneListe(donnéesFinales)) {\n donnéesFinales = donnéesFinales[c];\n }\n else {\n throw new Error(`${c} ne peut pas indexer une liste.`);\n }\n }\n else if (typeof c === \"string\") {\n if (estUnDic(donnéesFinales)) {\n donnéesFinales = donnéesFinales[c];\n }\n else {\n throw new Error(`${c} ne peut pas indexer un objet.`);\n }\n }\n else {\n throw new Error(`Clef de type non indexable : ${c}`); // eslint-disable-line no-irregular-whitespace\n }\n }\n return donnéesFinales;\n};\nexport class ImportateurDonnéesJSON {\n // Exemple: https://coordinates.native-land.ca/indigenousLanguageson\n donnéesJSON;\n constructor(données) {\n this.donnéesJSON = données;\n }\n obtDonnées(clefsRacine, clefsÉléments, cols) {\n let données = [];\n let racineDonnéesJSON = extraireDonnées(this.donnéesJSON, clefsRacine);\n if (typeof racineDonnéesJSON !== \"object\") {\n throw new Error(`Type de données erroné : ${racineDonnéesJSON.toString()}`);\n }\n racineDonnéesJSON = aplatirDonnées(racineDonnéesJSON, clefsÉléments);\n for (const élémentJSON of racineDonnéesJSON) {\n if (typeof élémentJSON !== \"object\")\n throw new Error(`Élément de type non supporté : ${élémentJSON}`); // eslint-disable-line no-irregular-whitespace\n const élément = Object.fromEntries(Object.keys(cols)\n .map((c) => {\n const clefs = cols[c];\n let val;\n try {\n val = extraireDonnées(élémentJSON, clefs);\n }\n catch (e) {\n val = undefined;\n }\n return [c, val];\n })\n .filter((x) => x[1] !== undefined));\n données = [élément, ...données];\n }\n return données;\n }\n}\n//# sourceMappingURL=json.js.map","import { EventEmitter } from \"events\";\nimport * as XLSX from \"xlsx\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nimport { isNode, isElectronMain } from \"wherearewe\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport deepcopy from \"deepcopy\";\nimport { faisRien } from \"@constl/utils-ipa\";\nimport { importerFeuilleCalculDURL, importerJSONdURL, } from \"./importateur/index.js\";\nimport { ImportateurFeuilleCalcul } from \"./importateur/xlsx.js\";\nimport { ImportateurDonnéesJSON } from \"./importateur/json.js\";\nimport { ComposanteClientDic } from \"./composanteClient.js\";\nif (isElectronMain || isNode) {\n import(\"fs\").then((fs) => XLSX.set_fs(fs));\n import(\"stream\").then((stream) => XLSX.stream.set_readable(stream.Readable));\n}\nconst MESSAGE_NON_DISPO_NAVIGATEUR = \"L'automatisation de l'importation des fichiers locaux n'est pas disponible sur la version apli internet de Constellation.\";\nconst schémaBdAutomatisations = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n anyOf: [\n {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n id: { type: \"string\" },\n fréquence: {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n détails: {\n type: \"object\",\n properties: {\n n: { type: \"number\" },\n unités: { type: \"string\" },\n },\n nullable: true,\n },\n },\n },\n idObjet: { type: \"string\" },\n typeObjet: { type: \"string\" },\n formatDoc: { type: \"string\" },\n dossier: { type: \"string\", nullable: true },\n langues: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n nullable: true,\n },\n dispositifs: {\n type: \"array\",\n items: { type: \"string\" },\n },\n inclureFichiersSFIP: {\n type: \"boolean\",\n },\n nRésultatsDésirésNuée: {\n type: \"integer\",\n nullable: true,\n },\n },\n required: [\n \"type\",\n \"idObjet\",\n \"typeObjet\",\n \"formatDoc\",\n \"dispositifs\",\n \"fréquence\",\n \"inclureFichiersSFIP\",\n ],\n },\n {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n fréquence: {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n détails: {\n type: \"object\",\n properties: {\n n: { type: \"number\" },\n unités: { type: \"string\" },\n },\n nullable: true,\n },\n },\n },\n idTableau: { type: \"string\" },\n dispositif: { type: \"string\" },\n source: {\n type: \"object\",\n properties: {\n typeSource: { type: \"string\" },\n adresseFichier: { type: \"string\", nullable: true },\n info: {\n type: \"object\",\n additionalProperties: true,\n required: [],\n },\n },\n required: [\"info\", \"typeSource\"],\n },\n conversions: {\n type: \"object\",\n nullable: true,\n additionalProperties: true,\n required: [],\n },\n },\n required: [\"id\", \"idTableau\", \"dispositif\", \"source\"],\n },\n ],\n required: [\"id\", \"type\"],\n },\n required: [],\n};\nconst obtTempsInterval = (fréq) => {\n const { n, unités } = fréq.détails;\n switch (unités) {\n case \"années\":\n return n * 365.25 * 24 * 60 * 60 * 1000;\n case \"mois\":\n return n * 30 * 24 * 60 * 60 * 1000;\n case \"semaines\":\n return n * 7 * 24 * 60 * 60 * 1000;\n case \"jours\":\n return n * 24 * 60 * 60 * 1000;\n case \"heures\":\n return n * 60 * 60 * 1000;\n case \"minutes\":\n return n * 60 * 1000;\n case \"secondes\":\n return n * 1000;\n case \"millisecondes\":\n return n;\n default:\n throw new Error(unités);\n }\n};\nconst générerFExportation = (spéc, client) => {\n return async () => {\n const os = await import(\"os\");\n const path = await import(\"path\");\n const fs = await import(\"fs\");\n const dossier = spéc.dossier\n ? await client.automatisations.résoudreAdressePrivéeFichier({\n clef: spéc.dossier,\n })\n : path.join(os.homedir(), \"constellation\");\n if (!dossier)\n throw new Error(\"Dossier introuvable\");\n let nomFichier;\n const ajouterÉtiquetteÀNomFichier = (nom) => {\n const composantes = nom.split(\".\");\n return `${composantes[0]}-${Date.now()}.${composantes[1]}`;\n };\n switch (spéc.typeObjet) {\n case \"tableau\": {\n const donnéesExp = await client.tableaux.exporterDonnées({\n idTableau: spéc.idObjet,\n langues: spéc.langues,\n });\n nomFichier = donnéesExp.nomFichier;\n if (spéc.copies)\n nomFichier = ajouterÉtiquetteÀNomFichier(nomFichier);\n await client.bds.exporterDocumentDonnées({\n données: donnéesExp,\n formatDoc: spéc.formatDoc,\n dossier,\n inclureFichiersSFIP: spéc.inclureFichiersSFIP,\n });\n break;\n }\n case \"bd\": {\n const donnéesExp = await client.bds.exporterDonnées({\n idBd: spéc.idObjet,\n langues: spéc.langues,\n });\n nomFichier = donnéesExp.nomFichier;\n if (spéc.copies)\n nomFichier = ajouterÉtiquetteÀNomFichier(nomFichier);\n await client.bds.exporterDocumentDonnées({\n données: donnéesExp,\n formatDoc: spéc.formatDoc,\n dossier,\n inclureFichiersSFIP: spéc.inclureFichiersSFIP,\n });\n break;\n }\n case \"projet\": {\n const donnéesExp = await client.projets.exporterDonnées({\n idProjet: spéc.idObjet,\n langues: spéc.langues,\n });\n nomFichier = donnéesExp.nomFichier;\n if (spéc.copies)\n nomFichier = ajouterÉtiquetteÀNomFichier(nomFichier);\n await client.projets.exporterDocumentDonnées({\n données: donnéesExp,\n formatDoc: spéc.formatDoc,\n dossier,\n inclureFichiersSFIP: spéc.inclureFichiersSFIP,\n });\n break;\n }\n case \"nuée\": {\n const donnéesNuée = await client.nuées.exporterDonnéesNuée({\n idNuée: spéc.idObjet,\n langues: spéc.langues,\n nRésultatsDésirés: spéc.nRésultatsDésirésNuée || 1000,\n héritage: spéc.héritage,\n });\n nomFichier = donnéesNuée.nomFichier;\n if (spéc.copies)\n nomFichier = ajouterÉtiquetteÀNomFichier(nomFichier);\n await client.bds.exporterDocumentDonnées({\n données: donnéesNuée,\n formatDoc: spéc.formatDoc,\n dossier,\n inclureFichiersSFIP: spéc.inclureFichiersSFIP,\n });\n break;\n }\n default:\n throw new Error(spéc.typeObjet);\n }\n // Effacer les sauvegardes plus vieilles si nécessaire\n const correspondants = fs.readdirSync(dossier).filter((x) => {\n try {\n return (fs.statSync(x).isFile() &&\n nomsCorrespondent(path.basename(x), nomFichier));\n }\n catch {\n return false;\n }\n });\n const nomsCorrespondent = (nom, réf) => {\n const ext = nom.split(\".\").pop() || \"\";\n const nomBase = nom\n .slice(0, -(ext?.length + 1))\n .split(\"-\")\n .slice(0, -1)\n .join(\"\");\n return `${nomBase}.${ext}` === réf;\n };\n if (spéc.copies) {\n if (spéc.copies.type === \"n\") {\n const enTrop = spéc.copies.n - correspondants.length;\n if (enTrop > 0) {\n const fichiersAvecTempsModif = correspondants.map((fichier) => ({\n temps: new Date(fs.statSync(fichier).mtime).valueOf(),\n fichier,\n }));\n const fichiersOrdreModif = fichiersAvecTempsModif.sort((a, b) => a.temps > b.temps ? 1 : -1);\n const àEffacer = fichiersOrdreModif\n .slice(enTrop)\n .map((x) => x.fichier);\n àEffacer.forEach((fichier) => fs.rmSync(fichier));\n }\n }\n else if (spéc.copies.type === \"temps\") {\n const maintenant = Date.now();\n const { temps } = spéc.copies;\n const àEffacer = correspondants.filter((fichier) => {\n const dateModifFichier = new Date(fs.statSync(fichier).mtime).valueOf();\n return maintenant - dateModifFichier < obtTempsInterval(temps);\n });\n àEffacer.forEach((fichier) => fs.rmSync(fichier));\n }\n }\n };\n};\nconst générerFAuto = (spéc, client) => {\n switch (spéc.type) {\n case \"importation\": {\n return async () => {\n const résoudreAdresse = async (adresse) => {\n return ((await client.automatisations.résoudreAdressePrivéeFichier({\n clef: adresse,\n })) || undefined);\n };\n const données = await client.automatisations.obtDonnéesImportation(spéc, résoudreAdresse);\n // Adresse base des fichiers pour résoudre les entrées fichiers, si applicable. Fonctionne uniquement\n // sur Node et le processus principal d'Électron.\n const path = await import(\"path\");\n let cheminBaseFichiers = undefined;\n if (spéc.source.typeSource === \"fichier\" &&\n spéc.source.adresseFichier) {\n const fichierRésolu = await résoudreAdresse(spéc.source.adresseFichier);\n if (fichierRésolu)\n cheminBaseFichiers = path.dirname(fichierRésolu);\n }\n await client.tableaux.importerDonnées({\n idTableau: spéc.idTableau,\n données,\n conversions: spéc.conversions,\n cheminBaseFichiers,\n });\n };\n }\n case \"exportation\": {\n return générerFExportation(spéc, client);\n }\n default:\n throw new Error(spéc);\n }\n};\nconst lancerAutomatisation = async ({ spéc, idSpéc, client, fÉtat, }) => {\n const fAuto = générerFAuto(spéc, client);\n const clefStockageDernièreFois = `auto: ${idSpéc}`;\n const tempsInterval = spéc.fréquence?.type === \"fixe\"\n ? obtTempsInterval(spéc.fréquence)\n : undefined;\n const verrou = new Semaphore();\n let idDernièreRequêteOpération = \"\";\n const requêteDernièreModifImportée = await client.obtDeStockageLocal({\n clef: clefStockageDernièreFois,\n });\n const requêtesDéjàExécutées = new Set([requêteDernièreModifImportée]);\n const fAutoAvecÉtats = async (requête) => {\n if (requêtesDéjàExécutées.has(requête))\n return;\n idDernièreRequêteOpération = requête;\n await verrou.acquire(\"opération\");\n if (requête !== idDernièreRequêteOpération ||\n requêtesDéjàExécutées.has(requête)) {\n verrou.release(\"opération\");\n return;\n }\n await client.sauvegarderAuStockageLocal({\n clef: clefStockageDernièreFois,\n val: requête,\n });\n requêtesDéjàExécutées.add(requête);\n const nouvelÉtat = {\n type: \"sync\",\n depuis: new Date().getTime(),\n };\n fÉtat(nouvelÉtat);\n try {\n await fAuto();\n if (tempsInterval) {\n const nouvelÉtat = {\n type: \"programmée\",\n à: Date.now() + tempsInterval,\n };\n fÉtat(nouvelÉtat);\n }\n else {\n const nouvelÉtat = {\n type: \"écoute\",\n };\n fÉtat(nouvelÉtat);\n }\n }\n catch (e) {\n const nouvelÉtat = {\n type: \"erreur\",\n erreur: JSON.stringify({\n nom: e.name,\n message: e.message,\n pile: e.stack,\n cause: e.cause,\n }, undefined, 2),\n prochaineProgramméeÀ: tempsInterval\n ? Date.now() + tempsInterval\n : undefined,\n };\n fÉtat(nouvelÉtat);\n }\n verrou.release(\"opération\");\n };\n const fLancer = async () => await fAutoAvecÉtats(uuidv4());\n if (spéc.fréquence.type === \"fixe\") {\n const nouvelÉtat = {\n type: \"programmée\",\n à: tempsInterval,\n };\n fÉtat(nouvelÉtat);\n const dicFOublierIntervale = {};\n const fAutoAvecÉtatsRécursif = async () => {\n const maintenant = new Date().getTime();\n await fAutoAvecÉtats(maintenant.toString());\n const crono = setTimeout(fAutoAvecÉtatsRécursif, tempsInterval);\n dicFOublierIntervale.f = async () => clearTimeout(crono);\n };\n const maintenant = new Date().getTime();\n const dernièreFoisChaîne = await client.obtDeStockageLocal({\n clef: clefStockageDernièreFois,\n });\n const dernièreFois = dernièreFoisChaîne\n ? parseInt(dernièreFoisChaîne)\n : -Infinity;\n const tempsDepuisDernièreFois = maintenant - dernièreFois;\n const crono = setTimeout(fAutoAvecÉtatsRécursif, Math.max(tempsInterval - tempsDepuisDernièreFois, 0));\n dicFOublierIntervale.f = async () => clearTimeout(crono);\n const fOublier = async () => {\n if (dicFOublierIntervale.f)\n await dicFOublierIntervale.f();\n };\n return { fOublier, fLancer };\n }\n else if (spéc.fréquence.type === \"dynamique\") {\n const nouvelÉtat = {\n type: \"écoute\",\n };\n fÉtat(nouvelÉtat);\n switch (spéc.type) {\n case \"exportation\": {\n if (spéc.typeObjet === \"nuée\") {\n const fOublier = await client.nuées.suivreEmpreinteTêtesBdsNuée({\n idNuée: spéc.idObjet,\n f: fAutoAvecÉtats,\n });\n return { fOublier, fLancer };\n }\n else {\n const fOublier = await client.suivreEmpreinteTêtesBdRécursive({\n idBd: spéc.idObjet,\n f: fAutoAvecÉtats,\n });\n return { fOublier, fLancer };\n }\n }\n case \"importation\": {\n switch (spéc.source.typeSource) {\n case \"fichier\": {\n if (!isNode && !isElectronMain) {\n throw new Error(MESSAGE_NON_DISPO_NAVIGATEUR);\n }\n const chokidar = await import(\"chokidar\");\n const fs = await import(\"fs\");\n const { adresseFichier } = spéc.source;\n const adresseFichierRésolue = await client.automatisations.résoudreAdressePrivéeFichier({\n clef: adresseFichier,\n });\n if (!adresseFichierRésolue || !fs.existsSync(adresseFichierRésolue))\n throw new Error(`Fichier ${adresseFichier} introuvable.`);\n const écouteur = chokidar.watch(adresseFichierRésolue);\n écouteur.on(\"change\", async () => {\n const maintenant = new Date().getTime().toString();\n fAutoAvecÉtats(maintenant);\n });\n const dernièreModif = fs\n .statSync(adresseFichierRésolue)\n .mtime.getTime();\n const dernièreImportation = await client.obtDeStockageLocal({\n clef: clefStockageDernièreFois,\n });\n const fichierModifié = dernièreImportation\n ? dernièreModif > parseInt(dernièreImportation)\n : true;\n if (fichierModifié) {\n const maintenant = new Date().getTime().toString();\n fAutoAvecÉtats(maintenant);\n }\n const fOublier = async () => await écouteur.close();\n return { fOublier, fLancer };\n }\n case \"url\": {\n const étatErreur = {\n type: \"erreur\",\n erreur: \"La fréquence d'une automatisation d'importation d'URL doit être spécifiée.\",\n prochaineProgramméeÀ: undefined,\n };\n fÉtat(étatErreur);\n return { fOublier: faisRien, fLancer: faisRien };\n }\n default:\n throw new Error(spéc.source);\n }\n }\n default:\n throw new Error(spéc);\n }\n }\n else if (spéc.fréquence.type === \"manuelle\") {\n return {\n fOublier: faisRien,\n fLancer,\n };\n }\n else {\n throw new Error(spéc.fréquence);\n }\n};\nclass AutomatisationActive extends EventEmitter {\n client;\n état;\n fOublier;\n fLancer;\n constructor(spéc, idSpéc, client) {\n super();\n this.client = client;\n lancerAutomatisation({\n spéc,\n idSpéc,\n client: this.client,\n fÉtat: (état) => {\n this.état = état;\n this.emit(\"misÀJour\");\n },\n }).then(({ fOublier, fLancer }) => {\n this.fOublier = fOublier;\n this.fLancer = fLancer;\n this.emit(\"prêt\");\n });\n }\n async relancer() {\n if (!this.fOublier) {\n await new Promise((résoudre) => {\n this.once(\"prêt\", () => {\n résoudre();\n });\n });\n }\n await this.fLancer?.();\n }\n async fermer() {\n if (!this.fOublier) {\n await new Promise((résoudre) => {\n this.once(\"prêt\", () => {\n résoudre();\n });\n });\n }\n await this.fOublier?.();\n }\n}\nconst activePourCeDispositif = (spéc, monIdDispositif) => {\n switch (spéc.type) {\n case \"importation\": {\n return spéc.dispositif === monIdDispositif;\n }\n case \"exportation\": {\n return spéc.dispositifs.includes(monIdDispositif);\n }\n default:\n throw new Error(spéc);\n }\n};\nconst verrou = new Semaphore();\nexport class Automatisations extends ComposanteClientDic {\n automatisations;\n événements;\n fOublier;\n constructor({ client }) {\n super({\n client,\n clef: \"automatisations\",\n schémaBdPrincipale: schémaBdAutomatisations,\n });\n this.automatisations = {};\n this.événements = new EventEmitter();\n this.initialiser();\n }\n async initialiser() {\n this.fOublier = await this.suivreBdPrincipale({\n f: (autos) => this.mettreAutosÀJour(Object.values(autos)),\n });\n }\n async épingler() {\n await this.client.épingles.épinglerBd({\n id: await this.obtIdBd(),\n récursif: false,\n fichiers: false,\n });\n }\n async mettreAutosÀJour(autos) {\n await verrou.acquire(\"miseÀJour\");\n const automatisationsDavant = Object.keys(this.automatisations);\n for (const id of automatisationsDavant) {\n if (!autos.find((a) => a.id === id))\n await this.fermerAuto(id);\n }\n const ceDispositif = await this.client.obtIdDispositif();\n for (const a of autos) {\n if (activePourCeDispositif(a, ceDispositif)) {\n if (!Object.keys(this.automatisations).includes(a.id)) {\n const auto = new AutomatisationActive(a, a.id, this.client);\n auto.on(\"misÀJour\", () => this.événements.emit(\"misÀJour\"));\n this.automatisations[a.id] = auto;\n }\n }\n else {\n const autoActif = this.automatisations[a.id];\n if (autoActif) {\n await this.fermerAuto(a.id);\n }\n }\n }\n verrou.release(\"miseÀJour\");\n }\n async obtDonnéesImportation(spéc, résoudreAdresse = async (x) => x) {\n const { typeSource } = spéc.source;\n const { formatDonnées } = spéc.source.info;\n switch (typeSource) {\n case \"url\": {\n const { url } = spéc.source;\n switch (formatDonnées) {\n case \"json\": {\n const { clefsRacine, clefsÉléments, cols } = spéc.source.info;\n // À faire : inclure code pour importations \"spéciales\" comme epicollect, etc.\n const donnéesJson = await importerJSONdURL(url);\n const importateur = new ImportateurDonnéesJSON(donnéesJson);\n return importateur.obtDonnées(clefsRacine, clefsÉléments, cols);\n }\n case \"feuilleCalcul\": {\n const { nomTableau, cols, optionsXLSX } = spéc.source.info;\n const docXLSX = await importerFeuilleCalculDURL(url, optionsXLSX);\n const importateur = new ImportateurFeuilleCalcul(docXLSX);\n return importateur.obtDonnées(nomTableau, cols);\n }\n default:\n throw new Error(formatDonnées);\n }\n }\n case \"fichier\": {\n if (!isElectronMain && !isNode)\n throw new Error(MESSAGE_NON_DISPO_NAVIGATEUR);\n const fs = await import(\"fs\");\n const { adresseFichier } = spéc.source;\n const adresseFichierRésolue = await résoudreAdresse(adresseFichier);\n if (!adresseFichierRésolue || !fs.existsSync(adresseFichierRésolue))\n throw new Error(`Fichier ${adresseFichierRésolue} introuvable.`);\n switch (formatDonnées) {\n case \"json\": {\n const { clefsRacine, clefsÉléments, cols } = spéc.source.info;\n const contenuFichier = await fs.promises.readFile(adresseFichierRésolue);\n const donnéesJson = JSON.parse(contenuFichier.toString());\n const importateur = new ImportateurDonnéesJSON(donnéesJson);\n return importateur.obtDonnées(clefsRacine, clefsÉléments, cols);\n }\n case \"feuilleCalcul\": {\n const { nomTableau, cols } = spéc.source.info;\n const docXLSX = XLSX.readFile(adresseFichierRésolue);\n const importateur = new ImportateurFeuilleCalcul(docXLSX);\n return importateur.obtDonnées(nomTableau, cols);\n }\n default:\n throw new Error(formatDonnées);\n }\n }\n default:\n throw new Error(typeSource);\n }\n }\n async ajouterAutomatisationExporter({ id, typeObjet, formatDoc, inclureFichiersSFIP, dossier, langues, fréquence, dispositifs, nRésultatsDésirésNuée, héritage, copies, }) {\n const { orbite } = await this.client.attendreSfipEtOrbite();\n dispositifs = dispositifs || [orbite.identity.id];\n const idAuto = uuidv4();\n const idDossier = await this.sauvegarderAdressePrivéeFichier({\n fichier: dossier,\n });\n const élément = {\n type: \"exportation\",\n id: idAuto,\n idObjet: id,\n typeObjet,\n dispositifs,\n fréquence,\n formatDoc,\n langues,\n inclureFichiersSFIP,\n dossier: idDossier, // Pour des raisons de sécurité, on ne sauvegarde pas le nom du dossier directement\n nRésultatsDésirésNuée,\n héritage,\n copies,\n };\n // Enlever les options qui n'existent pas. (DLIP n'aime pas `undefined`.)\n Object.keys(élément).forEach((clef) => {\n if (élément[clef] === undefined) {\n delete élément[clef];\n }\n });\n const { bd, fOublier } = await this.obtBd();\n await bd.put(idAuto, élément);\n await fOublier();\n return idAuto;\n }\n async ajouterAutomatisationImporter({ idTableau, source, fréquence, dispositif, }) {\n const { bd, fOublier } = await this.obtBd();\n const { orbite } = await this.client.attendreSfipEtOrbite();\n dispositif = dispositif || orbite.identity.id;\n const id = uuidv4();\n if (source.typeSource === \"fichier\") {\n source.adresseFichier = await this.sauvegarderAdressePrivéeFichier({\n fichier: source.adresseFichier,\n });\n }\n const élément = {\n type: \"importation\",\n id,\n idTableau,\n dispositif,\n fréquence,\n source,\n };\n // Enlever les options qui n'existent pas. (DLIP n'aime pas `undefined`.)\n Object.keys(élément).forEach((clef) => {\n if (élément[clef] === undefined) {\n delete élément[clef];\n }\n });\n await bd.put(id, élément);\n await fOublier();\n return id;\n }\n async annulerAutomatisation({ id }) {\n const { bd, fOublier } = await this.obtBd();\n await bd.del(id);\n await fOublier();\n }\n async résoudreAdressePrivéeFichier({ clef, }) {\n return clef ? await this.client.obtDeStockageLocal({ clef }) : null;\n }\n async sauvegarderAdressePrivéeFichier({ fichier, }) {\n const clef = \"dossier.\" + uuidv4();\n await this.client.sauvegarderAuStockageLocal({ clef, val: fichier });\n return clef;\n }\n async suivreAutomatisations({ f, idCompte, }) {\n const fFinale = async (autos) => {\n const autosFinales = await Promise.all(Object.values(autos).map(async (a) => {\n const autoFinale = deepcopy(a);\n if (autoFinale.type === \"importation\" &&\n autoFinale.source.typeSource === \"fichier\") {\n const { adresseFichier } = autoFinale.source;\n if (adresseFichier) {\n const adresseRésolue = await this.résoudreAdressePrivéeFichier({\n clef: adresseFichier,\n });\n if (adresseRésolue) {\n autoFinale.source.adresseFichier = adresseRésolue;\n }\n else {\n delete autoFinale.source.adresseFichier;\n }\n }\n }\n else if (autoFinale.type === \"exportation\") {\n const { dossier } = autoFinale;\n if (dossier) {\n const dossierRésolu = await this.résoudreAdressePrivéeFichier({\n clef: dossier,\n });\n if (dossierRésolu) {\n autoFinale.dossier = dossierRésolu;\n }\n else {\n delete autoFinale.dossier;\n }\n }\n }\n return autoFinale;\n }));\n await f(autosFinales);\n };\n return await this.suivreBdPrincipale({\n idCompte,\n f: fFinale,\n });\n }\n async suivreÉtatAutomatisations({ f, }) {\n const fFinale = async () => {\n const étatsAuto = Object.fromEntries(Object.keys(this.automatisations)\n .map((a) => [a, this.automatisations[a].état])\n .filter((x) => x[1]));\n await f(étatsAuto);\n };\n this.événements.on(\"misÀJour\", fFinale);\n return async () => {\n this.événements.off(\"misÀJour\", fFinale);\n };\n }\n async lancerManuellement({ id }) {\n await this.automatisations[id]?.relancer();\n }\n async fermerAuto(id) {\n await this.automatisations[id].fermer();\n delete this.automatisations[id];\n }\n async fermer() {\n await Promise.all(Object.keys(this.automatisations).map((a) => {\n this.fermerAuto(a);\n }));\n await this.fOublier?.();\n }\n}\n//# sourceMappingURL=automatisation.js.map","var empty = null;\n\nexport { empty as default };\n//# sourceMappingURL=empty.js.map\n","import { v4 as uuidv4 } from \"uuid\";\nimport { EventEmitter } from \"events\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nconst stockagesLocaux = {};\nclass LocalStorage {\n fichier;\n _données;\n _événements;\n _idRequêteSauvegarde;\n verrou;\n fOublier;\n constructor(dossier) {\n this.fichier = path.join(dossier, \"données.json\");\n this._événements = new EventEmitter();\n this.verrou = new Semaphore();\n if (!fs.existsSync(dossier)) {\n fs.mkdirSync(dossier, { recursive: true });\n }\n try {\n this._données = JSON.parse(fs.readFileSync(this.fichier).toString());\n }\n catch {\n this._données = {};\n }\n const fSuivre = () => {\n const id = uuidv4();\n this._idRequêteSauvegarde = id;\n this.sauvegarder(id);\n };\n this._événements.on(\"sauvegarder\", fSuivre);\n this.fOublier = () => this._événements.off(\"sauvegarder\", fSuivre);\n }\n getItem(clef) {\n return this._données[clef];\n }\n setItem(clef, val) {\n this._données[clef] = val;\n this.demanderSauvegarde();\n }\n demanderSauvegarde() {\n this._événements.emit(\"sauvegarder\");\n }\n removeItem(clef) {\n delete this._données[clef];\n this.demanderSauvegarde();\n }\n clear() {\n this._données = {};\n fs.rmSync(this.fichier);\n }\n async sauvegarder(id) {\n await this.verrou.acquire(\"sauvegarder\");\n if (this._idRequêteSauvegarde !== id) {\n this.verrou.release(\"sauvegarder\");\n return;\n }\n await fs.promises.writeFile(this.fichier, JSON.stringify(this._données));\n this.verrou.release(\"sauvegarder\");\n }\n async fermer() {\n await this.verrou.acquire(\"sauvegarder\");\n this.fOublier && this.fOublier();\n this.verrou.release(\"sauvegarder\");\n }\n}\nexport const obtStockageLocal = async (dossierConstellation) => {\n if (typeof localStorage === \"undefined\" || localStorage === null) {\n const dossierStockageLocal = path.join(dossierConstellation, \"stockageLocal\");\n if (!stockagesLocaux[dossierStockageLocal]) {\n stockagesLocaux[dossierStockageLocal] = new LocalStorage(dossierStockageLocal);\n }\n return stockagesLocaux[dossierStockageLocal];\n }\n else {\n return localStorage;\n }\n};\nexport default obtStockageLocal;\nexport const exporterStockageLocal = async (dossierConstellation) => {\n const stockageLocal = await obtStockageLocal(dossierConstellation);\n if (stockageLocal instanceof LocalStorage) {\n return JSON.stringify(stockageLocal._données);\n }\n else {\n return JSON.stringify(stockageLocal);\n }\n};\n//# sourceMappingURL=stockageLocal.js.map",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","import { __decorate } from \"tslib\";\nimport { ComposanteClientDic } from \"./composanteClient.js\";\nimport { cacheSuivi } from \"./décorateursCache.js\";\nexport const schémaStructureBdProtocoles = {\n type: \"object\",\n additionalProperties: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n required: [],\n};\nexport class Protocoles extends ComposanteClientDic {\n constructor({ client }) {\n super({\n client,\n clef: \"protocoles\",\n schémaBdPrincipale: schémaStructureBdProtocoles,\n });\n }\n async établirProtocoles({ protocoles, idDispositif, }) {\n idDispositif = idDispositif || (await this.client.obtIdDispositif());\n const { bd, fOublier } = await this.obtBd();\n const existants = (await bd.allAsJSON())[idDispositif] || [];\n if (protocoles) {\n if (protocoles.some((p) => !existants.includes(p)) ||\n existants.some((p) => !protocoles.includes(p))) {\n await bd.put(idDispositif, protocoles);\n }\n }\n else if (existants.length) {\n await bd.del(idDispositif);\n }\n await fOublier();\n }\n async suivreProtocoles({ f, idCompte, }) {\n return await this.suivreBdPrincipale({\n idCompte,\n f,\n });\n }\n}\n__decorate([\n cacheSuivi\n], Protocoles.prototype, \"suivreProtocoles\", null);\n//# sourceMappingURL=protocoles.js.map","'use strict';\n\n/**\n * @typedef {{ [key: string]: any }} Extensions\n * @typedef {Error} Err\n * @property {string} message\n */\n\n/**\n *\n * @param {Error} obj\n * @param {Extensions} props\n * @returns {Error & Extensions}\n */\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\n/**\n *\n * @param {any} err - An Error\n * @param {string|Extensions} code - A string code or props to set on the error\n * @param {Extensions} [props] - Props to set on the error\n * @returns {Error & Extensions}\n */\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = '';\n }\n\n if (code) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n // @ts-ignore\n const output = assign(new ErrClass(), props);\n\n return output;\n }\n}\n\nmodule.exports = createError;\n","import errCode from 'err-code';\nexport function openFailedError(err) {\n err = err ?? new Error('Open failed');\n return errCode(err, 'ERR_OPEN_FAILED');\n}\nexport function closeFailedError(err) {\n err = err ?? new Error('Close failed');\n return errCode(err, 'ERR_CLOSE_FAILED');\n}\nexport function putFailedError(err) {\n err = err ?? new Error('Put failed');\n return errCode(err, 'ERR_PUT_FAILED');\n}\nexport function getFailedError(err) {\n err = err ?? new Error('Get failed');\n return errCode(err, 'ERR_GET_FAILED');\n}\nexport function deleteFailedError(err) {\n err = err ?? new Error('Delete failed');\n return errCode(err, 'ERR_DELETE_FAILED');\n}\nexport function hasFailedError(err) {\n err = err ?? new Error('Has failed');\n return errCode(err, 'ERR_HAS_FAILED');\n}\nexport function notFoundError(err) {\n err = err ?? new Error('Not Found');\n return errCode(err, 'ERR_NOT_FOUND');\n}\nexport function abortedError(err) {\n err = err ?? new Error('Aborted');\n return errCode(err, 'ERR_ABORTED');\n}\n//# sourceMappingURL=errors.js.map","export class BaseBlockstore {\n has(key, options) {\n return Promise.reject(new Error('.has is not implemented'));\n }\n put(key, val, options) {\n return Promise.reject(new Error('.put is not implemented'));\n }\n async *putMany(source, options) {\n for await (const { cid, block } of source) {\n await this.put(cid, block, options);\n yield cid;\n }\n }\n get(key, options) {\n return Promise.reject(new Error('.get is not implemented'));\n }\n async *getMany(source, options) {\n for await (const key of source) {\n yield {\n cid: key,\n block: await this.get(key, options)\n };\n }\n }\n delete(key, options) {\n return Promise.reject(new Error('.delete is not implemented'));\n }\n async *deleteMany(source, options) {\n for await (const key of source) {\n await this.delete(key, options);\n yield key;\n }\n }\n /**\n * Extending classes should override `query` or implement this method\n */\n async *getAll(options) {\n throw new Error('.getAll is not implemented');\n }\n}\n//# sourceMappingURL=base.js.map","import { base32 } from 'multiformats/bases/base32';\nimport { CID } from 'multiformats/cid';\nimport * as raw from 'multiformats/codecs/raw';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { BaseBlockstore } from './base.js';\nimport * as Errors from './errors.js';\nexport class MemoryBlockstore extends BaseBlockstore {\n data;\n constructor() {\n super();\n this.data = new Map();\n }\n put(key, val) {\n this.data.set(base32.encode(key.multihash.bytes), val);\n return key;\n }\n get(key) {\n const buf = this.data.get(base32.encode(key.multihash.bytes));\n if (buf == null) {\n throw Errors.notFoundError();\n }\n return buf;\n }\n has(key) {\n return this.data.has(base32.encode(key.multihash.bytes));\n }\n async delete(key) {\n this.data.delete(base32.encode(key.multihash.bytes));\n }\n async *getAll() {\n for (const [key, value] of this.data.entries()) {\n yield {\n cid: CID.createV1(raw.code, Digest.decode(base32.decode(key))),\n block: value\n };\n }\n }\n}\n//# sourceMappingURL=memory.js.map","import { logger } from '@libp2p/logger';\nimport drain from 'it-drain';\nimport filter from 'it-filter';\nimport merge from 'it-merge';\nimport { pushable } from 'it-pushable';\nimport { BaseBlockstore } from './base.js';\nimport * as Errors from './errors.js';\nconst log = logger('blockstore:core:tiered');\n/**\n * A blockstore that can combine multiple stores. Puts and deletes\n * will write through to all blockstores. Has and get will\n * try each store sequentially. getAll will use every store but also\n * deduplicate any yielded pairs.\n */\nexport class TieredBlockstore extends BaseBlockstore {\n stores;\n constructor(stores) {\n super();\n this.stores = stores.slice();\n }\n async put(key, value, options) {\n try {\n await Promise.all(this.stores.map(async (store) => { await store.put(key, value, options); }));\n return key;\n }\n catch (err) {\n throw Errors.putFailedError(err);\n }\n }\n async get(key, options) {\n for (const store of this.stores) {\n try {\n const res = await store.get(key, options);\n if (res != null)\n return res;\n }\n catch (err) {\n log.error(err);\n }\n }\n throw Errors.notFoundError();\n }\n async has(key, options) {\n for (const s of this.stores) {\n if (await s.has(key, options)) {\n return true;\n }\n }\n return false;\n }\n async delete(key, options) {\n try {\n await Promise.all(this.stores.map(async (store) => { await store.delete(key, options); }));\n }\n catch (err) {\n throw Errors.deleteFailedError(err);\n }\n }\n async *putMany(source, options = {}) {\n let error;\n const pushables = this.stores.map(store => {\n const source = pushable({\n objectMode: true\n });\n drain(store.putMany(source, options))\n .catch(err => {\n // store threw while putting, make sure we bubble the error up\n error = err;\n });\n return source;\n });\n try {\n for await (const pair of source) {\n if (error != null) {\n throw error;\n }\n pushables.forEach(p => p.push(pair));\n yield pair.cid;\n }\n }\n finally {\n pushables.forEach(p => p.end());\n }\n }\n async *deleteMany(source, options = {}) {\n let error;\n const pushables = this.stores.map(store => {\n const source = pushable({\n objectMode: true\n });\n drain(store.deleteMany(source, options))\n .catch(err => {\n // store threw while deleting, make sure we bubble the error up\n error = err;\n });\n return source;\n });\n try {\n for await (const key of source) {\n if (error != null) {\n throw error;\n }\n pushables.forEach(p => p.push(key));\n yield key;\n }\n }\n finally {\n pushables.forEach(p => p.end());\n }\n }\n async *getAll(options) {\n // deduplicate yielded pairs\n const seen = new Set();\n yield* filter(merge(...this.stores.map(s => s.getAll(options))), (pair) => {\n const cidStr = pair.cid.toString();\n if (seen.has(cidStr)) {\n return false;\n }\n seen.add(cidStr);\n return true;\n });\n }\n}\n//# sourceMappingURL=tiered.js.map","/**\n * @packageDocumentation\n *\n * Various Blockstore implementations are available.\n *\n * ## Implementations\n *\n * - Base: [`src/base`](src/base.ts)\n * - Memory: [`src/memory`](src/memory.ts)\n * - BlackHole: ['src/black-hole](src/black-hole.ts)\n * - Tiered: ['src/tiered](src/tiered.ts)\n *\n * @example BaseBlockstore\n *\n * Provides a complete implementation of the Blockstore interface. You must implement `.get`, `.put`, etc.\n *\n * ```js\n * import { BaseBlockstore } from 'blockstore-core/base'\n *\n * class MyCustomBlockstore extends BaseBlockstore {\n * put (key, val, options) {\n * // store a block\n * }\n *\n * get (key, options) {\n * // retrieve a block\n * }\n *\n * // ...etc\n * }\n * ```\n *\n * @example MemoryBlockstore\n *\n * A simple Blockstore that stores blocks in memory.\n *\n * ```js\n * import { MemoryBlockstore } from 'blockstore-core/memory'\n *\n * const store = new MemoryBlockstore()\n * ```\n *\n * @example BlackHoleBlockstore\n *\n * A Blockstore that does not store any blocks.\n *\n * ```js\n * import { BlackHoleBlockstore } from 'blockstore-core/black-hole'\n *\n * const store = new BlackHoleBlockstore()\n * ```\n *\n * @example TieredBlockstore\n *\n * A tiered blockstore wraps one or more blockstores and will query each in parallel to retrieve a block - the operation will succeed if any wrapped store has the block.\n *\n * Writes are invoked on all wrapped blockstores.\n *\n * ```js\n * import { TieredBlockstore } from 'blockstore-core/tiered'\n *\n * const store = new TieredBlockstore([\n * store1,\n * store2,\n * // ...etc\n * ])\n * ```\n *\n * @example IdentityBlockstore\n *\n * An identity blockstore is one that deals exclusively in Identity CIDs - this is a special CID with the codec [0x00](https://github.com/multiformats/multicodec/blob/d06fc6194710e8909bac64273c43f16b56ca4c34/table.csv#L2) where the multihash digest is the data that makes up the block.\n *\n * ```TypeScript\n * import { IdentityBlockstore } from 'blockstore-core/identity'\n * import { CID } from 'multiformats/cid'\n *\n * const blockstore = new IdentityBlockstore()\n *\n * blockstore.has(CID.parse('QmFoo')) // false\n *\n * blockstore.has(CID.parse('bafkqac3imvwgy3zao5xxe3de')) // true\n * ```\n */\nimport * as ErrorsImport from './errors.js';\nexport { BaseBlockstore } from './base.js';\nexport { MemoryBlockstore } from './memory.js';\nexport { BlackHoleBlockstore } from './black-hole.js';\nexport { TieredBlockstore } from './tiered.js';\nexport const Errors = {\n ...ErrorsImport\n};\n//# sourceMappingURL=index.js.map","import errCode from 'err-code';\nexport function dbOpenFailedError(err) {\n err = err ?? new Error('Cannot open database');\n return errCode(err, 'ERR_DB_OPEN_FAILED');\n}\nexport function dbDeleteFailedError(err) {\n err = err ?? new Error('Delete failed');\n return errCode(err, 'ERR_DB_DELETE_FAILED');\n}\nexport function dbWriteFailedError(err) {\n err = err ?? new Error('Write failed');\n return errCode(err, 'ERR_DB_WRITE_FAILED');\n}\nexport function dbReadFailedError(err) {\n err = err ?? new Error('Read failed');\n return errCode(err, 'ERR_DB_READ_FAILED');\n}\nexport function notFoundError(err) {\n err = err ?? new Error('Not Found');\n return errCode(err, 'ERR_NOT_FOUND');\n}\nexport function abortedError(err) {\n err = err ?? new Error('Aborted');\n return errCode(err, 'ERR_ABORTED');\n}\n//# sourceMappingURL=errors.js.map","import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nconst pathSepS = '/';\nconst pathSepB = new TextEncoder().encode(pathSepS);\nconst pathSep = pathSepB[0];\n/**\n * A Key represents the unique identifier of an object.\n * Our Key scheme is inspired by file systems and Google App Engine key model.\n * Keys are meant to be unique across a system. Keys are hierarchical,\n * incorporating more and more specific namespaces. Thus keys can be deemed\n * 'children' or 'ancestors' of other keys:\n * - `new Key('/Comedy')`\n * - `new Key('/Comedy/MontyPython')`\n * Also, every namespace can be parametrized to embed relevant object\n * information. For example, the Key `name` (most specific namespace) could\n * include the object type:\n * - `new Key('/Comedy/MontyPython/Actor:JohnCleese')`\n * - `new Key('/Comedy/MontyPython/Sketch:CheeseShop')`\n * - `new Key('/Comedy/MontyPython/Sketch:CheeseShop/Character:Mousebender')`\n *\n */\nexport class Key {\n _buf;\n /**\n * @param {string | Uint8Array} s\n * @param {boolean} [clean]\n */\n constructor(s, clean) {\n if (typeof s === 'string') {\n this._buf = uint8ArrayFromString(s);\n }\n else if (s instanceof Uint8Array) {\n this._buf = s;\n }\n else {\n throw new Error('Invalid key, should be String of Uint8Array');\n }\n if (clean == null) {\n clean = true;\n }\n if (clean) {\n this.clean();\n }\n if (this._buf.byteLength === 0 || this._buf[0] !== pathSep) {\n throw new Error('Invalid key');\n }\n }\n /**\n * Convert to the string representation\n *\n * @param {import('uint8arrays/to-string').SupportedEncodings} [encoding='utf8'] - The encoding to use.\n * @returns {string}\n */\n toString(encoding = 'utf8') {\n return uint8ArrayToString(this._buf, encoding);\n }\n /**\n * Return the Uint8Array representation of the key\n *\n * @returns {Uint8Array}\n */\n uint8Array() {\n return this._buf;\n }\n /**\n * Return string representation of the key\n *\n * @returns {string}\n */\n get [Symbol.toStringTag]() {\n return `Key(${this.toString()})`;\n }\n /**\n * Constructs a key out of a namespace array.\n *\n * @param {Array} list - The array of namespaces\n * @returns {Key}\n *\n * @example\n * ```js\n * Key.withNamespaces(['one', 'two'])\n * // => Key('/one/two')\n * ```\n */\n static withNamespaces(list) {\n return new Key(list.join(pathSepS));\n }\n /**\n * Returns a randomly (uuid) generated key.\n *\n * @returns {Key}\n *\n * @example\n * ```js\n * Key.random()\n * // => Key('/344502982398')\n * ```\n */\n static random() {\n return new Key(Math.random().toString().substring(2));\n }\n /**\n * @param {*} other\n */\n static asKey(other) {\n if (other instanceof Uint8Array || typeof other === 'string') {\n // we can create a key from this\n return new Key(other);\n }\n if (typeof other.uint8Array === 'function') {\n // this is an older version or may have crossed the esm/cjs boundary\n return new Key(other.uint8Array());\n }\n return null;\n }\n /**\n * Cleanup the current key\n *\n * @returns {void}\n */\n clean() {\n if (this._buf == null || this._buf.byteLength === 0) {\n this._buf = pathSepB;\n }\n if (this._buf[0] !== pathSep) {\n const bytes = new Uint8Array(this._buf.byteLength + 1);\n bytes.fill(pathSep, 0, 1);\n bytes.set(this._buf, 1);\n this._buf = bytes;\n }\n // normalize does not remove trailing slashes\n while (this._buf.byteLength > 1 && this._buf[this._buf.byteLength - 1] === pathSep) {\n this._buf = this._buf.subarray(0, -1);\n }\n }\n /**\n * Check if the given key is sorted lower than ourself.\n *\n * @param {Key} key - The other Key to check against\n * @returns {boolean}\n */\n less(key) {\n const list1 = this.list();\n const list2 = key.list();\n for (let i = 0; i < list1.length; i++) {\n if (list2.length < i + 1) {\n return false;\n }\n const c1 = list1[i];\n const c2 = list2[i];\n if (c1 < c2) {\n return true;\n }\n else if (c1 > c2) {\n return false;\n }\n }\n return list1.length < list2.length;\n }\n /**\n * Returns the key with all parts in reversed order.\n *\n * @returns {Key}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').reverse()\n * // => Key('/Actor:JohnCleese/MontyPython/Comedy')\n * ```\n */\n reverse() {\n return Key.withNamespaces(this.list().slice().reverse());\n }\n /**\n * Returns the `namespaces` making up this Key.\n *\n * @returns {Array}\n */\n namespaces() {\n return this.list();\n }\n /** Returns the \"base\" namespace of this key.\n *\n * @returns {string}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').baseNamespace()\n * // => 'Actor:JohnCleese'\n * ```\n */\n baseNamespace() {\n const ns = this.namespaces();\n return ns[ns.length - 1];\n }\n /**\n * Returns the `list` representation of this key.\n *\n * @returns {Array}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').list()\n * // => ['Comedy', 'MontyPythong', 'Actor:JohnCleese']\n * ```\n */\n list() {\n return this.toString().split(pathSepS).slice(1);\n }\n /**\n * Returns the \"type\" of this key (value of last namespace).\n *\n * @returns {string}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').type()\n * // => 'Actor'\n * ```\n */\n type() {\n return namespaceType(this.baseNamespace());\n }\n /**\n * Returns the \"name\" of this key (field of last namespace).\n *\n * @returns {string}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').name()\n * // => 'JohnCleese'\n * ```\n */\n name() {\n return namespaceValue(this.baseNamespace());\n }\n /**\n * Returns an \"instance\" of this type key (appends value to namespace).\n *\n * @param {string} s - The string to append.\n * @returns {Key}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor').instance('JohnClesse')\n * // => Key('/Comedy/MontyPython/Actor:JohnCleese')\n * ```\n */\n instance(s) {\n return new Key(this.toString() + ':' + s);\n }\n /**\n * Returns the \"path\" of this key (parent + type).\n *\n * @returns {Key}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').path()\n * // => Key('/Comedy/MontyPython/Actor')\n * ```\n */\n path() {\n let p = this.parent().toString();\n if (!p.endsWith(pathSepS)) {\n p += pathSepS;\n }\n p += this.type();\n return new Key(p);\n }\n /**\n * Returns the `parent` Key of this Key.\n *\n * @returns {Key}\n *\n * @example\n * ```js\n * new Key(\"/Comedy/MontyPython/Actor:JohnCleese\").parent()\n * // => Key(\"/Comedy/MontyPython\")\n * ```\n */\n parent() {\n const list = this.list();\n if (list.length === 1) {\n return new Key(pathSepS);\n }\n return new Key(list.slice(0, -1).join(pathSepS));\n }\n /**\n * Returns the `child` Key of this Key.\n *\n * @param {Key} key - The child Key to add\n * @returns {Key}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython').child(new Key('Actor:JohnCleese'))\n * // => Key('/Comedy/MontyPython/Actor:JohnCleese')\n * ```\n */\n child(key) {\n if (this.toString() === pathSepS) {\n return key;\n }\n else if (key.toString() === pathSepS) {\n return this;\n }\n return new Key(this.toString() + key.toString(), false);\n }\n /**\n * Returns whether this key is a prefix of `other`\n *\n * @param {Key} other - The other key to test against\n * @returns {boolean}\n *\n * @example\n * ```js\n * new Key('/Comedy').isAncestorOf('/Comedy/MontyPython')\n * // => true\n * ```\n */\n isAncestorOf(other) {\n if (other.toString() === this.toString()) {\n return false;\n }\n return other.toString().startsWith(this.toString());\n }\n /**\n * Returns whether this key is a contains another as prefix.\n *\n * @param {Key} other - The other Key to test against\n * @returns {boolean}\n *\n * @example\n * ```js\n * new Key('/Comedy/MontyPython').isDecendantOf('/Comedy')\n * // => true\n * ```\n */\n isDecendantOf(other) {\n if (other.toString() === this.toString()) {\n return false;\n }\n return this.toString().startsWith(other.toString());\n }\n /**\n * Checks if this key has only one namespace.\n *\n * @returns {boolean}\n */\n isTopLevel() {\n return this.list().length === 1;\n }\n /**\n * Concats one or more Keys into one new Key.\n *\n * @param {Array} keys - The array of keys to concatenate\n * @returns {Key}\n */\n concat(...keys) {\n return Key.withNamespaces([...this.namespaces(), ...flatten(keys.map(key => key.namespaces()))]);\n }\n}\n/**\n * The first component of a namespace. `foo` in `foo:bar`\n *\n * @param {string} ns\n * @returns {string}\n */\nfunction namespaceType(ns) {\n const parts = ns.split(':');\n if (parts.length < 2) {\n return '';\n }\n return parts.slice(0, -1).join(':');\n}\n/**\n * The last component of a namespace, `baz` in `foo:bar:baz`.\n *\n * @param {string} ns\n * @returns {string}\n */\nfunction namespaceValue(ns) {\n const parts = ns.split(':');\n return parts[parts.length - 1];\n}\n/**\n * Flatten array of arrays (only one level)\n *\n * @template T\n * @param {Array} arr\n * @returns {T[]}\n */\nfunction flatten(arr) {\n return ([]).concat(...arr);\n}\n//# sourceMappingURL=key.js.map","import { Key } from 'interface-datastore/key';\nexport const PREFIX = '/repo/flatfs/shard/';\nexport const SHARDING_FN = 'SHARDING';\nexport class ShardBase {\n param;\n name;\n _padding;\n constructor(param) {\n this.param = param;\n this.name = 'base';\n this._padding = '';\n }\n fun(s) {\n return 'implement me';\n }\n toString() {\n return `${PREFIX}v1/${this.name}/${this.param}`;\n }\n}\nexport class Prefix extends ShardBase {\n constructor(prefixLen) {\n super(prefixLen);\n this._padding = ''.padStart(prefixLen, '_');\n this.name = 'prefix';\n }\n fun(noslash) {\n return (noslash + this._padding).slice(0, this.param);\n }\n}\nexport class Suffix extends ShardBase {\n constructor(suffixLen) {\n super(suffixLen);\n this._padding = ''.padStart(suffixLen, '_');\n this.name = 'suffix';\n }\n fun(noslash) {\n const s = this._padding + noslash;\n return s.slice(s.length - this.param);\n }\n}\nexport class NextToLast extends ShardBase {\n constructor(suffixLen) {\n super(suffixLen);\n this._padding = ''.padStart(suffixLen + 1, '_');\n this.name = 'next-to-last';\n }\n fun(noslash) {\n const s = this._padding + noslash;\n const offset = s.length - this.param - 1;\n return s.slice(offset, offset + this.param);\n }\n}\n/**\n * Convert a given string to the matching sharding function\n */\nexport function parseShardFun(str) {\n str = str.trim();\n if (str.length === 0) {\n throw new Error('empty shard string');\n }\n if (!str.startsWith(PREFIX)) {\n throw new Error(`invalid or no path prefix: ${str}`);\n }\n const parts = str.slice(PREFIX.length).split('/');\n const version = parts[0];\n if (version !== 'v1') {\n throw new Error(`expect 'v1' version, got '${version}'`);\n }\n const name = parts[1];\n if (parts[2] == null || parts[2] === '') {\n throw new Error('missing param');\n }\n const param = parseInt(parts[2], 10);\n switch (name) {\n case 'prefix':\n return new Prefix(param);\n case 'suffix':\n return new Suffix(param);\n case 'next-to-last':\n return new NextToLast(param);\n default:\n throw new Error(`unkown sharding function: ${name}`);\n }\n}\nexport const readShardFun = async (path, store) => {\n const key = new Key(path).child(new Key(SHARDING_FN));\n // @ts-expect-error not all stores have this\n const get = typeof store.getRaw === 'function' ? store.getRaw.bind(store) : store.get.bind(store);\n const res = await get(key);\n return parseShardFun(new TextDecoder().decode(res ?? '').trim());\n};\n//# sourceMappingURL=shard.js.map","/**\n * @packageDocumentation\n *\n * Consumes all values from an (async)iterable and returns them sorted by the passed sort function.\n *\n * @example\n *\n * ```javascript\n * import sort from 'it-sort'\n * import all from 'it-all'\n *\n * const sorter = (a, b) => {\n * return a.localeCompare(b)\n * }\n *\n * // This can also be an iterator, generator, etc\n * const values = ['foo', 'bar']\n *\n * const arr = all(sort(values, sorter))\n *\n * console.info(arr) // 'bar', 'foo'\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import sort from 'it-sort'\n * import all from 'it-all'\n *\n * const sorter = (a, b) => {\n * return a.localeCompare(b)\n * }\n *\n * const values = async function * () {\n * yield * ['foo', 'bar']\n * }\n *\n * const arr = await all(sort(values, sorter))\n *\n * console.info(arr) // 'bar', 'foo'\n * ```\n */\nimport all from 'it-all';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction sort(source, sorter) {\n if (isAsyncIterable(source)) {\n return (async function* () {\n const arr = await all(source);\n yield* arr.sort(sorter);\n })();\n }\n return (function* () {\n const arr = all(source);\n yield* arr.sort(sorter);\n })();\n}\nexport default sort;\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * For when you only want a few values out of an (async)iterable.\n *\n * @example\n *\n * ```javascript\n * import take from 'it-take'\n * import all from 'it-all'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const arr = all(take(values, 2))\n *\n * console.info(arr) // 0, 1\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import take from 'it-take'\n * import all from 'it-all'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const arr = await all(take(values(), 2))\n *\n * console.info(arr) // 0, 1\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction take(source, limit) {\n if (isAsyncIterable(source)) {\n return (async function* () {\n let items = 0;\n if (limit < 1) {\n return;\n }\n for await (const entry of source) {\n yield entry;\n items++;\n if (items === limit) {\n return;\n }\n }\n })();\n }\n return (function* () {\n let items = 0;\n if (limit < 1) {\n return;\n }\n for (const entry of source) {\n yield entry;\n items++;\n if (items === limit) {\n return;\n }\n }\n })();\n}\nexport default take;\n//# sourceMappingURL=index.js.map","import drain from 'it-drain';\nimport filter from 'it-filter';\nimport sort from 'it-sort';\nimport take from 'it-take';\nexport class BaseDatastore {\n put(key, val, options) {\n return Promise.reject(new Error('.put is not implemented'));\n }\n get(key, options) {\n return Promise.reject(new Error('.get is not implemented'));\n }\n has(key, options) {\n return Promise.reject(new Error('.has is not implemented'));\n }\n delete(key, options) {\n return Promise.reject(new Error('.delete is not implemented'));\n }\n async *putMany(source, options = {}) {\n for await (const { key, value } of source) {\n await this.put(key, value, options);\n yield key;\n }\n }\n async *getMany(source, options = {}) {\n for await (const key of source) {\n yield {\n key,\n value: await this.get(key, options)\n };\n }\n }\n async *deleteMany(source, options = {}) {\n for await (const key of source) {\n await this.delete(key, options);\n yield key;\n }\n }\n batch() {\n let puts = [];\n let dels = [];\n return {\n put(key, value) {\n puts.push({ key, value });\n },\n delete(key) {\n dels.push(key);\n },\n commit: async (options) => {\n await drain(this.putMany(puts, options));\n puts = [];\n await drain(this.deleteMany(dels, options));\n dels = [];\n }\n };\n }\n /**\n * Extending classes should override `query` or implement this method\n */\n // eslint-disable-next-line require-yield\n async *_all(q, options) {\n throw new Error('._all is not implemented');\n }\n /**\n * Extending classes should override `queryKeys` or implement this method\n */\n // eslint-disable-next-line require-yield\n async *_allKeys(q, options) {\n throw new Error('._allKeys is not implemented');\n }\n query(q, options) {\n let it = this._all(q, options);\n if (q.prefix != null) {\n const prefix = q.prefix;\n it = filter(it, (e) => e.key.toString().startsWith(prefix));\n }\n if (Array.isArray(q.filters)) {\n it = q.filters.reduce((it, f) => filter(it, f), it);\n }\n if (Array.isArray(q.orders)) {\n it = q.orders.reduce((it, f) => sort(it, f), it);\n }\n if (q.offset != null) {\n let i = 0;\n const offset = q.offset;\n it = filter(it, () => i++ >= offset);\n }\n if (q.limit != null) {\n it = take(it, q.limit);\n }\n return it;\n }\n queryKeys(q, options) {\n let it = this._allKeys(q, options);\n if (q.prefix != null) {\n const prefix = q.prefix;\n it = filter(it, (key) => key.toString().startsWith(prefix));\n }\n if (Array.isArray(q.filters)) {\n it = q.filters.reduce((it, f) => filter(it, f), it);\n }\n if (Array.isArray(q.orders)) {\n it = q.orders.reduce((it, f) => sort(it, f), it);\n }\n if (q.offset != null) {\n const offset = q.offset;\n let i = 0;\n it = filter(it, () => i++ >= offset);\n }\n if (q.limit != null) {\n it = take(it, q.limit);\n }\n return it;\n }\n}\n//# sourceMappingURL=base.js.map","import { Key } from 'interface-datastore/key';\nimport { BaseDatastore } from './base.js';\nimport * as Errors from './errors.js';\nexport class MemoryDatastore extends BaseDatastore {\n data;\n constructor() {\n super();\n this.data = new Map();\n }\n put(key, val) {\n this.data.set(key.toString(), val);\n return key;\n }\n get(key) {\n const result = this.data.get(key.toString());\n if (result == null) {\n throw Errors.notFoundError();\n }\n return result;\n }\n has(key) {\n return this.data.has(key.toString());\n }\n delete(key) {\n this.data.delete(key.toString());\n }\n *_all() {\n for (const [key, value] of this.data.entries()) {\n yield { key: new Key(key), value };\n }\n }\n *_allKeys() {\n for (const key of this.data.keys()) {\n yield new Key(key);\n }\n }\n}\n//# sourceMappingURL=memory.js.map","import { Key } from 'interface-datastore';\nimport { BaseDatastore } from './base.js';\nimport * as Errors from './errors.js';\nimport { KeyTransformDatastore } from './keytransform.js';\nimport { readShardFun, SHARDING_FN } from './shard.js';\nconst shardKey = new Key(SHARDING_FN);\n/**\n * Backend independent abstraction of go-ds-flatfs.\n *\n * Wraps another datastore such that all values are stored\n * sharded according to the given sharding function.\n */\nexport class ShardingDatastore extends BaseDatastore {\n child;\n shard;\n constructor(store, shard) {\n super();\n this.child = new KeyTransformDatastore(store, {\n convert: this._convertKey.bind(this),\n invert: this._invertKey.bind(this)\n });\n this.shard = shard;\n }\n async open() {\n this.shard = await ShardingDatastore.create(this.child, this.shard);\n }\n _convertKey(key) {\n const s = key.toString();\n if (s === shardKey.toString()) {\n return key;\n }\n const parent = new Key(this.shard.fun(s));\n return parent.child(key);\n }\n _invertKey(key) {\n const s = key.toString();\n if (s === shardKey.toString()) {\n return key;\n }\n return Key.withNamespaces(key.list().slice(1));\n }\n static async create(store, shard) {\n const hasShard = await store.has(shardKey);\n if (!hasShard) {\n if (shard == null) {\n throw Errors.dbOpenFailedError(Error('Shard is required when datastore doesn\\'t have a shard key already.'));\n }\n await store.put(shardKey, new TextEncoder().encode(shard.toString() + '\\n'));\n }\n if (shard == null) {\n shard = await readShardFun('/', store);\n }\n // test shards\n const diskShard = await readShardFun('/', store);\n const a = diskShard.toString();\n const b = shard.toString();\n if (a !== b) {\n throw new Error(`specified fun ${b} does not match repo shard fun ${a}`);\n }\n return diskShard;\n }\n async put(key, val, options) {\n await this.child.put(key, val, options);\n return key;\n }\n async get(key, options) {\n return this.child.get(key, options);\n }\n async has(key, options) {\n return this.child.has(key, options);\n }\n async delete(key, options) {\n await this.child.delete(key, options);\n }\n async *putMany(source, options = {}) {\n yield* this.child.putMany(source, options);\n }\n async *getMany(source, options = {}) {\n yield* this.child.getMany(source, options);\n }\n async *deleteMany(source, options = {}) {\n yield* this.child.deleteMany(source, options);\n }\n batch() {\n return this.child.batch();\n }\n query(q, options) {\n const omitShard = ({ key }) => key.toString() !== shardKey.toString();\n const tq = {\n ...q,\n filters: [\n omitShard\n ].concat(q.filters ?? [])\n };\n return this.child.query(tq, options);\n }\n queryKeys(q, options) {\n const omitShard = (key) => key.toString() !== shardKey.toString();\n const tq = {\n ...q,\n filters: [\n omitShard\n ].concat(q.filters ?? [])\n };\n return this.child.queryKeys(tq, options);\n }\n}\n//# sourceMappingURL=sharding.js.map","import { logger } from '@libp2p/logger';\nimport drain from 'it-drain';\nimport { pushable } from 'it-pushable';\nimport { BaseDatastore } from './base.js';\nimport * as Errors from './errors.js';\nconst log = logger('datastore:core:tiered');\n/**\n * A datastore that can combine multiple stores. Puts and deletes\n * will write through to all datastores. Has and get will\n * try each store sequentially. Query will always try the\n * last one first.\n *\n */\nexport class TieredDatastore extends BaseDatastore {\n stores;\n constructor(stores) {\n super();\n this.stores = stores.slice();\n }\n async put(key, value, options) {\n try {\n await Promise.all(this.stores.map(async (store) => { await store.put(key, value, options); }));\n return key;\n }\n catch (err) {\n throw Errors.dbWriteFailedError(err);\n }\n }\n async get(key, options) {\n for (const store of this.stores) {\n try {\n const res = await store.get(key, options);\n if (res != null)\n return res;\n }\n catch (err) {\n log.error(err);\n }\n }\n throw Errors.notFoundError();\n }\n async has(key, options) {\n for (const s of this.stores) {\n if (await s.has(key, options)) {\n return true;\n }\n }\n return false;\n }\n async delete(key, options) {\n try {\n await Promise.all(this.stores.map(async (store) => { await store.delete(key, options); }));\n }\n catch (err) {\n throw Errors.dbDeleteFailedError(err);\n }\n }\n async *putMany(source, options = {}) {\n let error;\n const pushables = this.stores.map(store => {\n const source = pushable({\n objectMode: true\n });\n drain(store.putMany(source, options))\n .catch(err => {\n // store threw while putting, make sure we bubble the error up\n error = err;\n });\n return source;\n });\n try {\n for await (const pair of source) {\n if (error != null) {\n throw error;\n }\n pushables.forEach(p => p.push(pair));\n yield pair.key;\n }\n }\n finally {\n pushables.forEach(p => p.end());\n }\n }\n async *deleteMany(source, options = {}) {\n let error;\n const pushables = this.stores.map(store => {\n const source = pushable({\n objectMode: true\n });\n drain(store.deleteMany(source, options))\n .catch(err => {\n // store threw while deleting, make sure we bubble the error up\n error = err;\n });\n return source;\n });\n try {\n for await (const key of source) {\n if (error != null) {\n throw error;\n }\n pushables.forEach(p => p.push(key));\n yield key;\n }\n }\n finally {\n pushables.forEach(p => p.end());\n }\n }\n batch() {\n const batches = this.stores.map(store => store.batch());\n return {\n put: (key, value) => {\n batches.forEach(b => { b.put(key, value); });\n },\n delete: (key) => {\n batches.forEach(b => { b.delete(key); });\n },\n commit: async (options) => {\n for (const batch of batches) {\n await batch.commit(options);\n }\n }\n };\n }\n query(q, options) {\n return this.stores[this.stores.length - 1].query(q, options);\n }\n queryKeys(q, options) {\n return this.stores[this.stores.length - 1].queryKeys(q, options);\n }\n}\n//# sourceMappingURL=tiered.js.map","/**\n * Takes an array of AbortSignals and returns a single signal.\n * If any signals are aborted, the returned signal will be aborted.\n */\nexport function anySignal(signals) {\n const controller = new globalThis.AbortController();\n function onAbort() {\n controller.abort();\n for (const signal of signals) {\n if (signal?.removeEventListener != null) {\n signal.removeEventListener('abort', onAbort);\n }\n }\n }\n for (const signal of signals) {\n if (signal?.aborted === true) {\n onAbort();\n break;\n }\n if (signal?.addEventListener != null) {\n signal.addEventListener('abort', onAbort);\n }\n }\n function clear() {\n for (const signal of signals) {\n if (signal?.removeEventListener != null) {\n signal.removeEventListener('abort', onAbort);\n }\n }\n }\n const signal = controller.signal;\n signal.clear = clear;\n return signal;\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Calls a function for each value in an (async)iterable.\n *\n * The function can be sync or async.\n *\n * Async functions can be awaited on so may slow down processing of the (async)iterable.\n *\n * @example\n *\n * ```javascript\n * import each from 'it-foreach'\n * import drain from 'it-drain'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * // prints [0, 0], [1, 1], [2, 2], [3, 3], [4, 4]\n * const arr = drain(\n * each(values, console.info)\n * )\n * ```\n *\n * Async sources and callbacks must be awaited:\n *\n * ```javascript\n * import each from 'it-foreach'\n * import drain from 'it-drain'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * // prints [0, 0], [1, 1], [2, 2], [3, 3], [4, 4]\n * const arr = await drain(\n * each(values(), console.info)\n * )\n * ```\n */\nimport peek from 'it-peekable';\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction isPromise(thing) {\n return thing?.then != null;\n}\nfunction forEach(source, fn) {\n let index = 0;\n if (isAsyncIterable(source)) {\n return (async function* () {\n for await (const val of source) {\n const res = fn(val, index++);\n if (isPromise(res)) {\n await res;\n }\n yield val;\n }\n })();\n }\n // if fn function returns a promise we have to return an async generator\n const peekable = peek(source);\n const { value, done } = peekable.next();\n if (done === true) {\n return (function* () { }());\n }\n const res = fn(value, index++);\n if (typeof res?.then === 'function') {\n return (async function* () {\n yield value;\n for await (const val of peekable) {\n const res = fn(val, index++);\n if (isPromise(res)) {\n await res;\n }\n yield val;\n }\n })();\n }\n const func = fn;\n return (function* () {\n yield value;\n for (const val of peekable) {\n func(val, index++);\n yield val;\n }\n })();\n}\nexport default forEach;\n//# sourceMappingURL=index.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","class TrackedMap extends Map {\n metric;\n constructor(init) {\n super();\n const { name, metrics } = init;\n this.metric = metrics.registerMetric(name);\n this.updateComponentMetric();\n }\n set(key, value) {\n super.set(key, value);\n this.updateComponentMetric();\n return this;\n }\n delete(key) {\n const deleted = super.delete(key);\n this.updateComponentMetric();\n return deleted;\n }\n clear() {\n super.clear();\n this.updateComponentMetric();\n }\n updateComponentMetric() {\n this.metric.update(this.size);\n }\n}\nexport function trackedMap(config) {\n const { name, metrics } = config;\n let map;\n if (metrics != null) {\n map = new TrackedMap({ name, metrics });\n }\n else {\n map = new Map();\n }\n return map;\n}\n//# sourceMappingURL=tracked-map.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n","module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n","\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n","module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n","'use strict'\n\nconst varint = require('varint')\n\nmodule.exports = (buf) => {\n if (!(buf instanceof Uint8Array)) {\n throw new Error('arg needs to be a Uint8Array')\n }\n\n const result = []\n\n while (buf.length > 0) {\n const num = varint.decode(buf)\n result.push(num)\n buf = buf.slice(varint.decode.bytes)\n }\n\n return result\n}\n","import { base58btc } from 'multiformats/bases/base58';\nexport class WantListEntry {\n _refCounter;\n cid;\n priority;\n wantType;\n constructor(cid, priority, wantType) {\n // Keep track of how many requests we have for this key\n this._refCounter = 1;\n this.cid = cid;\n this.priority = priority ?? 1;\n this.wantType = wantType;\n }\n inc() {\n this._refCounter += 1;\n }\n dec() {\n this._refCounter = Math.max(0, this._refCounter - 1);\n }\n hasRefs() {\n return this._refCounter > 0;\n }\n // So that console.log prints a nice description of this object\n get [Symbol.toStringTag]() {\n const cidStr = this.cid.toString(base58btc);\n return `WantlistEntry `;\n }\n equals(other) {\n return (this._refCounter === other._refCounter) &&\n this.cid.equals(other.cid) &&\n this.priority === other.priority &&\n this.wantType === other.wantType;\n }\n}\n//# sourceMappingURL=entry.js.map","import { base58btc } from 'multiformats/bases/base58';\nimport { WantListEntry } from '../wantlist/entry.js';\nexport class BitswapMessageEntry {\n entry;\n cancel;\n sendDontHave;\n constructor(cid, priority, wantType, cancel, sendDontHave) {\n this.entry = new WantListEntry(cid, priority, wantType);\n this.cancel = Boolean(cancel);\n this.sendDontHave = Boolean(sendDontHave);\n }\n get cid() {\n return this.entry.cid;\n }\n set cid(cid) {\n this.entry.cid = cid;\n }\n get priority() {\n return this.entry.priority;\n }\n set priority(val) {\n this.entry.priority = val;\n }\n get wantType() {\n return this.entry.wantType;\n }\n set wantType(val) {\n this.entry.wantType = val;\n }\n get [Symbol.toStringTag]() {\n const cidStr = this.cid.toString(base58btc);\n return `BitswapMessageEntry ${cidStr} `;\n }\n equals(other) {\n return (this.cancel === other.cancel) &&\n (this.sendDontHave === other.sendDontHave) &&\n (this.wantType === other.wantType) &&\n this.entry.equals(other.entry);\n }\n}\n//# sourceMappingURL=entry.js.map","import { logger as createLogger } from '@libp2p/logger';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { BitswapMessageEntry } from '../message/entry.js';\n/**\n * Creates a logger for the given subsystem\n */\nexport const logger = (id, subsystem) => {\n const name = ['bitswap'];\n if (subsystem != null) {\n name.push(subsystem);\n }\n if (id != null) {\n name.push(`${id.toString().slice(0, 8)}`);\n }\n return createLogger(name.join(':'));\n};\nexport const includesWith = (pred, x, list) => {\n let idx = 0;\n const len = list.length;\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n idx += 1;\n }\n return false;\n};\nexport const uniqWith = (pred, list) => {\n let idx = 0;\n const len = list.length;\n const result = [];\n let item;\n while (idx < len) {\n item = list[idx];\n if (!includesWith(pred, item, result)) {\n result[result.length] = item;\n }\n idx += 1;\n }\n return result;\n};\nexport const groupBy = (pred, list) => {\n // @ts-expect-error cannot use {} as record with these key types?\n const output = {};\n return list.reduce((acc, v) => {\n const k = pred(v);\n if (acc[k] != null) {\n acc[k].push(v);\n }\n else {\n acc[k] = [v];\n }\n return acc;\n }, output);\n};\nexport const pullAllWith = (pred, list, values) => {\n return list.filter(i => {\n return !includesWith(pred, i, values);\n });\n};\nexport const sortBy = (fn, list) => {\n return Array.prototype.slice.call(list, 0).sort((a, b) => {\n const aa = fn(a);\n const bb = fn(b);\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n });\n};\n/**\n * Is equal for Maps of BitswapMessageEntry or Uint8Arrays\n */\nexport const isMapEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, valueA] of a) {\n const valueB = b.get(key);\n if (valueB === undefined) {\n return false;\n }\n // TODO: revisit this\n // Support Blocks\n if (valueA instanceof Uint8Array && valueB instanceof Uint8Array && !uint8ArrayEquals(valueA, valueB)) {\n return false;\n }\n // Support BitswapMessageEntry\n if (valueA instanceof BitswapMessageEntry && valueB instanceof BitswapMessageEntry && !valueA.equals(valueB)) {\n return false;\n }\n }\n return true;\n};\n//# sourceMappingURL=index.js.map","module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {\n encode.bytes = 0\n throw new RangeError('Could not encode varint')\n }\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n","module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l || shift > 49) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n","\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n","module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n","import * as varint from 'varint';\nfunction varintEncoder(buf) {\n let out = new Uint8Array(buf.reduce((acc, curr) => {\n // @ts-expect-error types are wrong\n return acc + varint.default.encodingLength(curr); // eslint-disable-line @typescript-eslint/restrict-plus-operands\n }, 0));\n let offset = 0;\n for (const num of buf) {\n out = varint.encode(num, out, offset);\n // @ts-expect-error types are wrong\n offset += varint.default.encodingLength(num); // eslint-disable-line @typescript-eslint/restrict-plus-operands\n }\n return out;\n}\nexport default varintEncoder;\n//# sourceMappingURL=varint-encoder.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Message;\n(function (Message) {\n let Wantlist;\n (function (Wantlist) {\n let WantType;\n (function (WantType) {\n WantType[\"Block\"] = \"Block\";\n WantType[\"Have\"] = \"Have\";\n })(WantType = Wantlist.WantType || (Wantlist.WantType = {}));\n let __WantTypeValues;\n (function (__WantTypeValues) {\n __WantTypeValues[__WantTypeValues[\"Block\"] = 0] = \"Block\";\n __WantTypeValues[__WantTypeValues[\"Have\"] = 1] = \"Have\";\n })(__WantTypeValues || (__WantTypeValues = {}));\n (function (WantType) {\n WantType.codec = () => {\n return enumeration(__WantTypeValues);\n };\n })(WantType = Wantlist.WantType || (Wantlist.WantType = {}));\n let Entry;\n (function (Entry) {\n let _codec;\n Entry.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.block != null && obj.block.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.block);\n }\n if ((obj.priority != null && obj.priority !== 0)) {\n w.uint32(16);\n w.int32(obj.priority);\n }\n if ((obj.cancel != null && obj.cancel !== false)) {\n w.uint32(24);\n w.bool(obj.cancel);\n }\n if (obj.wantType != null && __WantTypeValues[obj.wantType] !== 0) {\n w.uint32(32);\n Message.Wantlist.WantType.codec().encode(obj.wantType, w);\n }\n if ((obj.sendDontHave != null && obj.sendDontHave !== false)) {\n w.uint32(40);\n w.bool(obj.sendDontHave);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n block: new Uint8Array(0),\n priority: 0,\n cancel: false,\n wantType: WantType.Block,\n sendDontHave: false\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.block = reader.bytes();\n break;\n case 2:\n obj.priority = reader.int32();\n break;\n case 3:\n obj.cancel = reader.bool();\n break;\n case 4:\n obj.wantType = Message.Wantlist.WantType.codec().decode(reader);\n break;\n case 5:\n obj.sendDontHave = reader.bool();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Entry.encode = (obj) => {\n return encodeMessage(obj, Entry.codec());\n };\n Entry.decode = (buf) => {\n return decodeMessage(buf, Entry.codec());\n };\n })(Entry = Wantlist.Entry || (Wantlist.Entry = {}));\n let _codec;\n Wantlist.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.entries != null) {\n for (const value of obj.entries) {\n w.uint32(10);\n Message.Wantlist.Entry.codec().encode(value, w);\n }\n }\n if ((obj.full != null && obj.full !== false)) {\n w.uint32(16);\n w.bool(obj.full);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n entries: [],\n full: false\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.entries.push(Message.Wantlist.Entry.codec().decode(reader, reader.uint32()));\n break;\n case 2:\n obj.full = reader.bool();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Wantlist.encode = (obj) => {\n return encodeMessage(obj, Wantlist.codec());\n };\n Wantlist.decode = (buf) => {\n return decodeMessage(buf, Wantlist.codec());\n };\n })(Wantlist = Message.Wantlist || (Message.Wantlist = {}));\n let Block;\n (function (Block) {\n let _codec;\n Block.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.prefix != null && obj.prefix.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.prefix);\n }\n if ((obj.data != null && obj.data.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n prefix: new Uint8Array(0),\n data: new Uint8Array(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.prefix = reader.bytes();\n break;\n case 2:\n obj.data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Block.encode = (obj) => {\n return encodeMessage(obj, Block.codec());\n };\n Block.decode = (buf) => {\n return decodeMessage(buf, Block.codec());\n };\n })(Block = Message.Block || (Message.Block = {}));\n let BlockPresenceType;\n (function (BlockPresenceType) {\n BlockPresenceType[\"Have\"] = \"Have\";\n BlockPresenceType[\"DontHave\"] = \"DontHave\";\n })(BlockPresenceType = Message.BlockPresenceType || (Message.BlockPresenceType = {}));\n let __BlockPresenceTypeValues;\n (function (__BlockPresenceTypeValues) {\n __BlockPresenceTypeValues[__BlockPresenceTypeValues[\"Have\"] = 0] = \"Have\";\n __BlockPresenceTypeValues[__BlockPresenceTypeValues[\"DontHave\"] = 1] = \"DontHave\";\n })(__BlockPresenceTypeValues || (__BlockPresenceTypeValues = {}));\n (function (BlockPresenceType) {\n BlockPresenceType.codec = () => {\n return enumeration(__BlockPresenceTypeValues);\n };\n })(BlockPresenceType = Message.BlockPresenceType || (Message.BlockPresenceType = {}));\n let BlockPresence;\n (function (BlockPresence) {\n let _codec;\n BlockPresence.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.cid != null && obj.cid.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.cid);\n }\n if (obj.type != null && __BlockPresenceTypeValues[obj.type] !== 0) {\n w.uint32(16);\n Message.BlockPresenceType.codec().encode(obj.type, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n cid: new Uint8Array(0),\n type: BlockPresenceType.Have\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.cid = reader.bytes();\n break;\n case 2:\n obj.type = Message.BlockPresenceType.codec().decode(reader);\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n BlockPresence.encode = (obj) => {\n return encodeMessage(obj, BlockPresence.codec());\n };\n BlockPresence.decode = (buf) => {\n return decodeMessage(buf, BlockPresence.codec());\n };\n })(BlockPresence = Message.BlockPresence || (Message.BlockPresence = {}));\n let _codec;\n Message.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.wantlist != null) {\n w.uint32(10);\n Message.Wantlist.codec().encode(obj.wantlist, w);\n }\n if (obj.blocks != null) {\n for (const value of obj.blocks) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (obj.payload != null) {\n for (const value of obj.payload) {\n w.uint32(26);\n Message.Block.codec().encode(value, w);\n }\n }\n if (obj.blockPresences != null) {\n for (const value of obj.blockPresences) {\n w.uint32(34);\n Message.BlockPresence.codec().encode(value, w);\n }\n }\n if ((obj.pendingBytes != null && obj.pendingBytes !== 0)) {\n w.uint32(40);\n w.int32(obj.pendingBytes);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n blocks: [],\n payload: [],\n blockPresences: [],\n pendingBytes: 0\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.wantlist = Message.Wantlist.codec().decode(reader, reader.uint32());\n break;\n case 2:\n obj.blocks.push(reader.bytes());\n break;\n case 3:\n obj.payload.push(Message.Block.codec().decode(reader, reader.uint32()));\n break;\n case 4:\n obj.blockPresences.push(Message.BlockPresence.codec().decode(reader, reader.uint32()));\n break;\n case 5:\n obj.pendingBytes = reader.int32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Message.encode = (obj) => {\n return encodeMessage(obj, Message.codec());\n };\n Message.decode = (buf) => {\n return decodeMessage(buf, Message.codec());\n };\n})(Message || (Message = {}));\n//# sourceMappingURL=message.js.map","import { CodeError } from '@libp2p/interface';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\n// @ts-expect-error no types\nimport vd from 'varint-decoder';\nimport { isMapEqual } from '../utils/index.js';\nimport ve from '../utils/varint-encoder.js';\nimport { BitswapMessageEntry as Entry } from './entry.js';\nimport { Message } from './message.js';\nexport class BitswapMessage {\n static Entry = Entry;\n static WantType = {\n Block: Message.Wantlist.WantType.Block,\n Have: Message.Wantlist.WantType.Have\n };\n static BlockPresenceType = {\n Have: Message.BlockPresenceType.Have,\n DontHave: Message.BlockPresenceType.DontHave\n };\n static deserialize = async (raw, hashLoader) => {\n const decoded = Message.decode(raw);\n const isFull = decoded.wantlist?.full === true;\n const msg = new BitswapMessage(isFull);\n decoded.wantlist?.entries.forEach((entry) => {\n if (entry.block == null) {\n return;\n }\n // note: entry.block is the CID here\n const cid = CID.decode(entry.block);\n msg.addEntry(cid, entry.priority ?? 0, entry.wantType, Boolean(entry.cancel), Boolean(entry.sendDontHave));\n });\n decoded.blockPresences.forEach((blockPresence) => {\n if (blockPresence.cid == null) {\n return;\n }\n const cid = CID.decode(blockPresence.cid);\n if (blockPresence.type === BitswapMessage.BlockPresenceType.Have) {\n msg.addHave(cid);\n }\n else {\n msg.addDontHave(cid);\n }\n });\n // Bitswap 1.0.0\n // decoded.blocks are just the byte arrays\n if (decoded.blocks.length > 0) {\n await Promise.all(decoded.blocks.map(async (b) => {\n const hash = await sha256.digest(b);\n const cid = CID.createV0(hash);\n msg.addBlock(cid, b);\n }));\n return msg;\n }\n // Bitswap 1.1.0\n if (decoded.payload.length > 0) {\n await Promise.all(decoded.payload.map(async (p) => {\n if (p.prefix == null || p.data == null) {\n return;\n }\n const values = vd(p.prefix);\n const cidVersion = values[0];\n const multicodec = values[1];\n const hashAlg = values[2];\n const hasher = hashAlg === sha256.code ? sha256 : await hashLoader?.getHasher(hashAlg);\n if (hasher == null) {\n throw new CodeError('Unknown hash algorithm', 'ERR_UNKNOWN_HASH_ALG');\n }\n // const hashLen = values[3] // We haven't need to use this so far\n const hash = await hasher.digest(p.data);\n const cid = CID.create(cidVersion, multicodec, hash);\n msg.addBlock(cid, p.data);\n }));\n msg.setPendingBytes(decoded.pendingBytes);\n return msg;\n }\n return msg;\n };\n static blockPresenceSize = (cid) => {\n // It's ok if this is not exactly right: it's used to estimate the size of\n // the HAVE / DONT_HAVE on the wire, but when doing that calculation we leave\n // plenty of padding under the maximum message size.\n // (It's more important for this to be fast).\n return cid.bytes.length + 1;\n };\n full;\n wantlist;\n blocks;\n blockPresences;\n pendingBytes;\n constructor(full) {\n this.full = full;\n this.wantlist = new Map();\n this.blocks = new Map();\n this.blockPresences = new Map();\n this.pendingBytes = 0;\n }\n get empty() {\n return this.blocks.size === 0 &&\n this.wantlist.size === 0 &&\n this.blockPresences.size === 0;\n }\n addEntry(cid, priority, wantType, cancel, sendDontHave) {\n if (wantType == null) {\n wantType = BitswapMessage.WantType.Block;\n }\n const cidStr = cid.toString(base58btc);\n const entry = this.wantlist.get(cidStr);\n if (entry != null) {\n // Only change priority if want is of the same type\n if (entry.wantType === wantType) {\n entry.priority = priority;\n }\n // Only change from \"dont cancel\" to \"do cancel\"\n if (cancel === true) {\n entry.cancel = Boolean(cancel);\n }\n // Only change from \"dont send\" to \"do send\" DONT_HAVE\n if (sendDontHave === true) {\n entry.sendDontHave = Boolean(sendDontHave);\n }\n // want-block overrides existing want-have\n if (wantType === BitswapMessage.WantType.Block && entry.wantType === BitswapMessage.WantType.Have) {\n entry.wantType = wantType;\n }\n }\n else {\n this.wantlist.set(cidStr, new Entry(cid, priority, wantType, cancel, sendDontHave));\n }\n }\n addBlock(cid, block) {\n const cidStr = cid.toString(base58btc);\n this.blocks.set(cidStr, block);\n }\n addHave(cid) {\n const cidStr = cid.toString(base58btc);\n if (!this.blockPresences.has(cidStr)) {\n this.blockPresences.set(cidStr, BitswapMessage.BlockPresenceType.Have);\n }\n }\n addDontHave(cid) {\n const cidStr = cid.toString(base58btc);\n if (!this.blockPresences.has(cidStr)) {\n this.blockPresences.set(cidStr, BitswapMessage.BlockPresenceType.DontHave);\n }\n }\n cancel(cid) {\n const cidStr = cid.toString(base58btc);\n this.wantlist.delete(cidStr);\n this.addEntry(cid, 0, BitswapMessage.WantType.Block, true, false);\n }\n setPendingBytes(size) {\n this.pendingBytes = size;\n }\n /**\n * Serializes to Bitswap Message protobuf of\n * version 1.0.0\n */\n serializeToBitswap100() {\n return Message.encode({\n wantlist: {\n entries: Array.from(this.wantlist.values()).map((entry) => {\n return {\n block: entry.cid.bytes, // cid\n priority: Number(entry.priority),\n cancel: Boolean(entry.cancel),\n wantType: Message.Wantlist.WantType.Block,\n sendDontHave: false\n };\n }),\n full: Boolean(this.full)\n },\n blocks: Array.from(this.blocks.values())\n });\n }\n /**\n * Serializes to Bitswap Message protobuf of\n * version 1.1.0\n */\n serializeToBitswap110() {\n const msg = {\n wantlist: {\n entries: Array.from(this.wantlist.values()).map((entry) => {\n return {\n block: entry.cid.bytes, // cid\n priority: Number(entry.priority),\n wantType: entry.wantType,\n cancel: Boolean(entry.cancel),\n sendDontHave: Boolean(entry.sendDontHave)\n };\n }),\n full: Boolean(this.full)\n },\n blockPresences: [],\n payload: [],\n pendingBytes: this.pendingBytes,\n blocks: []\n };\n for (const [cidStr, data] of this.blocks.entries()) {\n const cid = CID.parse(cidStr);\n const version = cid.version;\n const codec = cid.code;\n const multihash = cid.multihash.code;\n const digestLength = cid.multihash.digest.length;\n const prefix = ve([\n version, codec, multihash, digestLength\n ]);\n msg.payload.push({\n prefix,\n data\n });\n }\n for (const [cidStr, bpType] of this.blockPresences) {\n msg.blockPresences.push({\n cid: CID.parse(cidStr).bytes,\n type: bpType\n });\n }\n if (this.pendingBytes > 0) {\n msg.pendingBytes = this.pendingBytes;\n }\n return Message.encode(msg);\n }\n equals(other) {\n if (this.full !== other.full ||\n this.pendingBytes !== other.pendingBytes ||\n !isMapEqual(this.wantlist, other.wantlist) ||\n !isMapEqual(this.blocks, other.blocks) ||\n // @TODO - Is this a bug ?\n // @ts-expect-error - isMap equals map values to be objects not numbers\n !isMapEqual(this.blockPresences, other.blockPresences)) {\n return false;\n }\n return true;\n }\n get [Symbol.toStringTag]() {\n const list = Array.from(this.wantlist.keys());\n const blocks = Array.from(this.blocks.keys());\n return `BitswapMessage `;\n }\n}\n//# sourceMappingURL=index.js.map","import { trackedMap } from '@libp2p/utils/tracked-map';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { Message } from '../message/message.js';\nimport { WantListEntry as Entry } from './entry.js';\nconst WantType = {\n Block: Message.Wantlist.WantType.Block,\n Have: Message.Wantlist.WantType.Have\n};\nconst sortBy = (fn, list) => {\n return Array.prototype.slice.call(list, 0).sort((a, b) => {\n const aa = fn(a);\n const bb = fn(b);\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n });\n};\nexport class Wantlist {\n static Entry = Entry;\n set;\n _stats;\n constructor(stats, libp2p) {\n this.set = (libp2p != null)\n ? trackedMap({\n name: 'ipfs_bitswap_wantlist',\n metrics: libp2p.metrics\n })\n : new Map();\n this._stats = stats;\n }\n get length() {\n return this.set.size;\n }\n add(cid, priority, wantType) {\n const cidStr = cid.toString(base58btc);\n const entry = this.set.get(cidStr);\n if (entry != null) {\n entry.inc();\n entry.priority = priority;\n // We can only overwrite want-have with want-block\n if (entry.wantType === WantType.Have && wantType === WantType.Block) {\n entry.wantType = wantType;\n }\n }\n else {\n this.set.set(cidStr, new Entry(cid, priority, wantType));\n if (this._stats != null) {\n this._stats.push(undefined, 'wantListSize', 1);\n }\n }\n }\n remove(cid) {\n const cidStr = cid.toString(base58btc);\n const entry = this.set.get(cidStr);\n if (entry == null) {\n return;\n }\n entry.dec();\n // only delete when no refs are held\n if (entry.hasRefs()) {\n return;\n }\n this.set.delete(cidStr);\n if (this._stats != null) {\n this._stats.push(undefined, 'wantListSize', -1);\n }\n }\n removeForce(cidStr) {\n if (this.set.has(cidStr)) {\n this.set.delete(cidStr);\n }\n }\n forEach(fn) {\n this.set.forEach(fn);\n }\n entries() {\n return this.set.entries();\n }\n sortedEntries() {\n // TODO: Figure out if this is an actual bug.\n // @ts-expect-error - Property 'key' does not exist on type 'WantListEntry'\n return new Map(sortBy(o => o[1].key, Array.from(this.set.entries())));\n }\n contains(cid) {\n const cidStr = cid.toString(base58btc);\n return this.set.has(cidStr);\n }\n get(cid) {\n const cidStr = cid.toString(base58btc);\n return this.set.get(cidStr);\n }\n}\n//# sourceMappingURL=index.js.map","import { Wantlist } from '../wantlist/index.js';\nexport class Ledger {\n partner;\n wantlist;\n exchangeCount;\n accounting;\n lastExchange;\n constructor(peerId) {\n this.partner = peerId;\n this.wantlist = new Wantlist();\n this.exchangeCount = 0;\n this.accounting = {\n bytesSent: 0,\n bytesRecv: 0\n };\n }\n sentBytes(n) {\n this.exchangeCount++;\n this.lastExchange = (new Date()).getTime();\n this.accounting.bytesSent += n;\n }\n receivedBytes(n) {\n this.exchangeCount++;\n this.lastExchange = (new Date()).getTime();\n this.accounting.bytesRecv += n;\n }\n wants(cid, priority, wantType) {\n this.wantlist.add(cid, priority, wantType);\n }\n /**\n * @param {CID} cid\n * @returns {void}\n */\n cancelWant(cid) {\n this.wantlist.remove(cid);\n }\n wantlistContains(cid) {\n return this.wantlist.get(cid);\n }\n debtRatio() {\n return (this.accounting.bytesSent / (this.accounting.bytesRecv + 1)); // +1 is to prevent division by zero\n }\n}\n//# sourceMappingURL=ledger.js.map","/**\n * SortedMap is a Map whose iterator order can be defined by the user\n */\nexport class SortedMap extends Map {\n _cmp;\n _keys;\n constructor(entries, cmp) {\n super();\n this._cmp = cmp ?? this._defaultSort;\n this._keys = [];\n for (const [k, v] of entries ?? []) {\n this.set(k, v);\n }\n }\n /**\n * Call update to update the position of the key when it should change.\n * For example if the compare function sorts by the priority field, and the\n * priority changes, call update.\n * Call indexOf() to get the index _before_ the change happens.\n */\n update(i) {\n if (i < 0 || i >= this._keys.length) {\n return;\n }\n const k = this._keys[i];\n this._keys.splice(i, 1);\n const newIdx = this._find(k);\n this._keys.splice(newIdx, 0, k);\n }\n set(k, v) {\n // If the key is already in the map, remove it from the ordering and\n // re-insert it below\n if (this.has(k)) {\n const i = this.indexOf(k);\n this._keys.splice(i, 1);\n }\n // Update / insert the k/v into the map\n super.set(k, v);\n // Find the correct position of the newly inserted k/v in the order\n const i = this._find(k);\n this._keys.splice(i, 0, k);\n return this;\n }\n clear() {\n super.clear();\n this._keys = [];\n }\n delete(k) {\n if (!this.has(k)) {\n return false;\n }\n const i = this.indexOf(k);\n this._keys.splice(i, 1);\n return super.delete(k);\n }\n indexOf(k) {\n if (!this.has(k)) {\n return -1;\n }\n const i = this._find(k);\n if (this._keys[i] === k) {\n return i;\n }\n // There may be more than one key with the same ordering\n // eg { k1: , k2: }\n // so scan outwards until the key matches\n for (let j = 1; j < this._keys.length; j++) {\n if (this._keys[i + j] === k)\n return i + j;\n if (this._keys[i - j] === k)\n return i - j;\n }\n return -1; // should never happen for existing key\n }\n _find(k) {\n let lower = 0;\n let upper = this._keys.length;\n while (lower < upper) {\n const pivot = (lower + upper) >>> 1; // lower + (upper - lower) / 2\n const cmp = this._kCmp(this._keys[pivot], k);\n // console.log(` _find ${lower}:${upper}[${pivot}] ${cmp}`)\n if (cmp < 0) { // pivot < k\n lower = pivot + 1;\n }\n else if (cmp > 0) { // pivot > k\n upper = pivot;\n }\n else { // pivot == k\n return pivot;\n }\n }\n return lower;\n }\n *keys() {\n for (const k of this._keys) {\n yield k;\n }\n return undefined;\n }\n *values() {\n for (const k of this._keys) {\n // @ts-expect-error - return of `this.get(k)` is `Value|undefined` which is\n // incompatible with `Value`. Typechecker can't that this contains values\n // for all the `_keys`. ts(2322)\n yield this.get(k);\n }\n return undefined;\n }\n *entries() {\n for (const k of this._keys) {\n // @ts-expect-error - return of `this.get(k)` is `Value|undefined` which is\n // incompatible with `Value`. Typechecker can't that this contains values\n // for all the `_keys`. ts(2322)\n yield [k, this.get(k)];\n }\n return undefined;\n }\n *[Symbol.iterator]() {\n yield* this.entries();\n }\n // @ts-expect-error - Callback in Map forEach is (V, K, Map) => void\n forEach(cb, thisArg = this) {\n if (cb == null) {\n return;\n }\n for (const k of this._keys) {\n const val = this.get(k);\n if (val == null) {\n throw new Error('Value cannot be undefined');\n }\n cb.apply(thisArg, [[k, val]]);\n }\n }\n _defaultSort(a, b) {\n if (a[0] < b[0])\n return -1;\n if (b[0] < a[0])\n return 1;\n return 0;\n }\n _kCmp(a, b) {\n return this._cmp(\n // @ts-expect-error - get may return undefined\n [a, this.get(a)], [b, this.get(b)]);\n }\n}\n//# sourceMappingURL=sorted-map.js.map","import { SortedMap } from '../utils/sorted-map.js';\n/**\n * The task merger that is used by default.\n * Assumes that new tasks do not add any information over existing tasks,\n * and doesn't try to merge.\n */\nconst DefaultTaskMerger = {\n hasNewInfo() {\n return false;\n },\n merge() { }\n};\n/**\n * Queue of requests to be processed by the engine.\n * The requests from each peer are added to the peer's queue, sorted by\n * priority.\n * Tasks are popped in priority order from the best peer - see popTasks()\n * for more details.\n */\nexport class RequestQueue {\n _taskMerger;\n _byPeer;\n constructor(taskMerger = DefaultTaskMerger) {\n this._taskMerger = taskMerger;\n this._byPeer = new SortedMap([], PeerTasks.compare);\n }\n /**\n * Push tasks onto the queue for the given peer\n */\n pushTasks(peerId, tasks) {\n let peerTasks = this._byPeer.get(peerId.toString());\n if (peerTasks == null) {\n peerTasks = new PeerTasks(peerId, this._taskMerger);\n }\n peerTasks.pushTasks(tasks);\n this._byPeer.set(peerId.toString(), peerTasks);\n }\n /**\n * Choose the peer with the least active work (or if all have the same active\n * work, the most pending tasks) and pop off the highest priority tasks until\n * the total size is at least targetMinBytes.\n * This puts the popped tasks into the \"active\" state, meaning they are\n * actively being processed (and cannot be modified).\n */\n popTasks(targetMinBytes) {\n // Get the queue of tasks for the best peer and pop off tasks up to\n // targetMinBytes\n const peerTasks = this._head();\n if (peerTasks === undefined) {\n return { tasks: [], pendingSize: 0 };\n }\n const { tasks, pendingSize } = peerTasks.popTasks(targetMinBytes);\n if (tasks.length === 0) {\n return { tasks, pendingSize };\n }\n const peerId = peerTasks.peerId;\n if (peerTasks.isIdle()) {\n // If there are no more tasks for the peer, free up its memory\n this._byPeer.delete(peerId.toString());\n }\n else {\n // If there are still tasks remaining, update the sort order of peerTasks\n // (because it depends on the number of pending tasks)\n this._byPeer.update(0);\n }\n return {\n peerId, tasks, pendingSize\n };\n }\n _head() {\n // Shortcut\n if (this._byPeer.size === 0) {\n return undefined;\n }\n // eslint-disable-next-line no-unreachable-loop\n for (const [, v] of this._byPeer) {\n return v;\n }\n return undefined;\n }\n /**\n * Remove the task with the given topic for the given peer.\n */\n remove(topic, peerId) {\n const peerTasks = this._byPeer.get(peerId.toString());\n peerTasks?.remove(topic);\n }\n /**\n * Called when the tasks for the given peer complete.\n */\n tasksDone(peerId, tasks) {\n const peerTasks = this._byPeer.get(peerId.toString());\n if (peerTasks == null) {\n return;\n }\n const i = this._byPeer.indexOf(peerId.toString());\n for (const task of tasks) {\n peerTasks.taskDone(task);\n }\n // Marking the tasks as done takes them out of the \"active\" state, and the\n // sort order depends on the size of the active tasks, so we need to update\n // the order.\n this._byPeer.update(i);\n }\n}\n/**\n * Queue of tasks for a particular peer, sorted by priority.\n */\nclass PeerTasks {\n peerId;\n _taskMerger;\n _activeTotalSize;\n _pending;\n _active;\n constructor(peerId, taskMerger) {\n this.peerId = peerId;\n this._taskMerger = taskMerger;\n this._activeTotalSize = 0;\n this._pending = new PendingTasks();\n this._active = new Set();\n }\n /**\n * Push tasks onto the queue\n */\n pushTasks(tasks) {\n for (const t of tasks) {\n this._pushTask(t);\n }\n }\n _pushTask(task) {\n // If the new task doesn't add any more information over what we\n // already have in the active queue, then we can skip the new task\n if (!this._taskHasMoreInfoThanActiveTasks(task)) {\n return;\n }\n // If there is already a non-active (pending) task with this topic\n const existingTask = this._pending.get(task.topic);\n if (existingTask != null) {\n // If the new task has a higher priority than the old task,\n if (task.priority > existingTask.priority) {\n // Update the priority and the task's position in the queue\n this._pending.updatePriority(task.topic, task.priority);\n }\n // Merge the information from the new task into the existing task\n this._taskMerger.merge(task, existingTask);\n // A task with the topic exists, so we don't need to add\n // the new task to the queue\n return;\n }\n // Push the new task onto the queue\n this._pending.add(task);\n }\n /**\n * Indicates whether the new task adds any more information over tasks that are\n * already in the active task queue\n */\n _taskHasMoreInfoThanActiveTasks(task) {\n const tasksWithTopic = [];\n for (const activeTask of this._active) {\n if (activeTask.topic === task.topic) {\n tasksWithTopic.push(activeTask);\n }\n }\n // No tasks with that topic, so the new task adds information\n if (tasksWithTopic.length === 0) {\n return true;\n }\n return this._taskMerger.hasNewInfo(task, tasksWithTopic);\n }\n /**\n * Pop tasks off the queue such that the total size is at least targetMinBytes\n */\n popTasks(targetMinBytes) {\n let size = 0;\n const tasks = [];\n // Keep popping tasks until we get up to targetMinBytes (or one item over\n // targetMinBytes)\n const pendingTasks = this._pending.tasks();\n for (let i = 0; i < pendingTasks.length && size < targetMinBytes; i++) {\n const task = pendingTasks[i];\n tasks.push(task);\n size += task.size;\n // Move tasks from pending to active\n this._pending.delete(task.topic);\n this._activeTotalSize += task.size;\n this._active.add(task);\n }\n return {\n tasks, pendingSize: this._pending.totalSize\n };\n }\n /**\n * Called when a task completes.\n * Note: must be the same reference as returned from popTasks.\n */\n taskDone(task) {\n if (this._active.has(task)) {\n this._activeTotalSize -= task.size;\n this._active.delete(task);\n }\n }\n /**\n * Remove pending tasks with the given topic\n */\n remove(topic) {\n this._pending.delete(topic);\n }\n /**\n * No work to be done, this PeerTasks object can be freed.\n */\n isIdle() {\n return this._pending.length === 0 && this._active.size === 0;\n }\n /**\n * Compare PeerTasks\n */\n static compare(a, b) {\n // Move peers with no pending tasks to the back of the queue\n if (a[1]._pending.length === 0) {\n return 1;\n }\n if (b[1]._pending.length === 0) {\n return -1;\n }\n // If the amount of active work is the same\n if (a[1]._activeTotalSize === b[1]._activeTotalSize) {\n // Choose the peer with the most pending work\n return b[1]._pending.length - a[1]._pending.length;\n }\n // Choose the peer with the least amount of active work (\"keep peers busy\")\n return a[1]._activeTotalSize - b[1]._activeTotalSize;\n }\n}\n/**\n * Queue of pending tasks for a particular peer, sorted by priority.\n */\nclass PendingTasks {\n _tasks;\n constructor() {\n this._tasks = new SortedMap([], this._compare);\n }\n get length() {\n return this._tasks.size;\n }\n /**\n * Sum of the size of all pending tasks\n **/\n get totalSize() {\n return [...this._tasks.values()].reduce((a, t) => a + t.task.size, 0);\n }\n get(topic) {\n return this._tasks?.get(topic)?.task;\n }\n add(task) {\n this._tasks.set(task.topic, {\n created: Date.now(),\n task\n });\n }\n delete(topic) {\n this._tasks.delete(topic);\n }\n // All pending tasks, in priority order\n tasks() {\n return [...this._tasks.values()].map(i => i.task);\n }\n /**\n * Update the priority of the task with the given topic, and update the order\n **/\n updatePriority(topic, priority) {\n const obj = this._tasks.get(topic);\n if (obj == null) {\n return;\n }\n const i = this._tasks.indexOf(topic);\n obj.task.priority = priority;\n this._tasks.update(i);\n }\n /**\n * Sort by priority desc then FIFO\n */\n _compare(a, b) {\n if (a[1].task.priority === b[1].task.priority) {\n // FIFO\n return a[1].created - b[1].created;\n }\n // Priority high -> low\n return b[1].task.priority - a[1].task.priority;\n }\n}\n//# sourceMappingURL=req-queue.js.map","export const DefaultTaskMerger = {\n /**\n * Indicates whether the given task has newer information than the active\n * tasks with the same topic.\n *\n * @param {Task} task\n * @param {Task[]} tasksWithTopic\n * @returns {boolean}\n */\n hasNewInfo(task, tasksWithTopic) {\n let haveBlock = false;\n let isWantBlock = false;\n for (const existing of tasksWithTopic) {\n if (existing.data.haveBlock) {\n haveBlock = true;\n }\n if (existing.data.isWantBlock) {\n isWantBlock = true;\n }\n }\n // If there is no active want-block and the new task is a want-block,\n // the new task is better\n if (!isWantBlock && task.data.isWantBlock) {\n return true;\n }\n // If we didn't have the block, and the new task indicates that we now\n // do have the block, then we must also have size information for the\n // block, so the new task has new information.\n if (!haveBlock && task.data.haveBlock) {\n return true;\n }\n return false;\n },\n /**\n * Merge the information from the given task into the existing task (with the\n * same topic)\n */\n merge(newTask, existingTask) {\n // The merge function ignores the topic and priority as these don't change.\n //\n // We may receive new information about a want before the want has been\n // popped from the queue in the following scenarios:\n //\n // - Replace want type:\n // 1. Client sends want-have CID1\n // 2. Client sends want-block CID1\n // In this case we should replace want-have with want-block, including\n // updating the task size to be the block size.\n //\n // - Replace DONT_HAVE with want:\n // 1. Client sends want-have CID1 or want-block CID1\n // 2. Local node doesn't have block for CID1\n // 3. Local node receives block for CID1 from peer\n // In this case we should replace DONT_HAVE with the want, including\n // updating the task size and block size.\n const taskData = newTask.data;\n const existingData = existingTask.data;\n // If we didn't have block size information (because we didn't have the\n // block) and we receive the block from a peer, update the task with the\n // new block size\n if (!existingData.haveBlock && taskData.haveBlock) {\n existingData.haveBlock = taskData.haveBlock;\n existingData.blockSize = taskData.blockSize;\n }\n // If replacing a want-have with a want-block\n if (!existingData.isWantBlock && taskData.isWantBlock) {\n // Change the type from want-have to want-block\n existingData.isWantBlock = true;\n // If the want-have was a DONT_HAVE, or the want-block has a size\n if (!existingData.haveBlock || taskData.haveBlock) {\n // Update the entry size\n existingData.haveBlock = taskData.haveBlock;\n existingTask.size = newTask.size;\n }\n }\n // If the task is a want-block, make sure the entry size is equal\n // to the block size (because we will send the whole block)\n if (existingData.isWantBlock && existingData.haveBlock) {\n existingTask.size = existingData.blockSize;\n }\n }\n};\n//# sourceMappingURL=task-merger.js.map","import { trackedMap } from '@libp2p/utils/tracked-map';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { CID } from 'multiformats/cid';\nimport { BitswapMessage as Message } from '../message/index.js';\nimport { logger } from '../utils/index.js';\nimport { Wantlist } from '../wantlist/index.js';\nimport { Ledger } from './ledger.js';\nimport { RequestQueue } from './req-queue.js';\nimport { DefaultTaskMerger } from './task-merger.js';\nconst WantType = Message.WantType;\n// The ideal size of the batched payload. We try to pop this much data off the\n// request queue, but\n// - if there isn't any more data in the queue we send whatever we have\n// - if there are several small items in the queue (eg HAVE response) followed\n// by one big item (eg a block) that would exceed this target size, we\n// include the big item in the message\nconst TARGET_MESSAGE_SIZE = 16 * 1024;\n// If the client sends a want-have, and the engine has the corresponding block,\n// we check the size of the block and if it's small enough we send the block\n// itself, rather than sending a HAVE.\n// This constant defines the maximum size up to which we replace a HAVE with\n// a block.\nconst MAX_SIZE_REPLACE_HAS_WITH_BLOCK = 1024;\nexport class DecisionEngine {\n _log;\n blockstore;\n network;\n _stats;\n _opts;\n ledgerMap;\n _running;\n _requestQueue;\n constructor(peerId, blockstore, network, stats, libp2p, opts = {}) {\n this._log = logger(peerId, 'engine');\n this.blockstore = blockstore;\n this.network = network;\n this._stats = stats;\n this._opts = this._processOpts(opts);\n // A list of of ledgers by their partner id\n this.ledgerMap = trackedMap({\n name: 'ipfs_bitswap_ledger_map',\n metrics: libp2p.metrics\n });\n this._running = false;\n // Queue of want-have / want-block per peer\n this._requestQueue = new RequestQueue(DefaultTaskMerger);\n }\n _processOpts(opts) {\n return {\n maxSizeReplaceHasWithBlock: MAX_SIZE_REPLACE_HAS_WITH_BLOCK,\n targetMessageSize: TARGET_MESSAGE_SIZE,\n ...opts\n };\n }\n _scheduleProcessTasks() {\n setTimeout(() => {\n this._processTasks().catch(err => {\n this._log.error('error processing stats', err);\n });\n });\n }\n /**\n * Pull tasks off the request queue and send a message to the corresponding\n * peer\n */\n async _processTasks() {\n if (!this._running) {\n return;\n }\n const { peerId, tasks, pendingSize } = this._requestQueue.popTasks(this._opts.targetMessageSize);\n if (tasks.length === 0) {\n return;\n }\n // Create a new message\n const msg = new Message(false);\n // Amount of data in the request queue still waiting to be popped\n msg.setPendingBytes(pendingSize);\n // Split out want-blocks, want-haves and DONT_HAVEs\n const blockCids = [];\n const blockTasks = new Map();\n for (const task of tasks) {\n const cid = CID.parse(task.topic);\n if (task.data.haveBlock) {\n if (task.data.isWantBlock) {\n blockCids.push(cid);\n blockTasks.set(task.topic, task.data);\n }\n else {\n // Add HAVES to the message\n msg.addHave(cid);\n }\n }\n else {\n // Add DONT_HAVEs to the message\n msg.addDontHave(cid);\n }\n }\n const blocks = await this._getBlocks(blockCids);\n for (const [topic, taskData] of blockTasks) {\n const cid = CID.parse(topic);\n const blk = blocks.get(topic);\n // If the block was found (it has not been removed)\n if (blk != null) {\n // Add the block to the message\n msg.addBlock(cid, blk);\n }\n else {\n // The block was not found. If the client requested DONT_HAVE,\n // add DONT_HAVE to the message.\n if (taskData.sendDontHave) {\n msg.addDontHave(cid);\n }\n }\n }\n // If there's nothing in the message, bail out\n if (msg.empty) {\n (peerId != null) && this._requestQueue.tasksDone(peerId, tasks);\n // Trigger the next round of task processing\n this._scheduleProcessTasks();\n return;\n }\n try {\n // Send the message\n (peerId != null) && await this.network.sendMessage(peerId, msg);\n // Peform sent message accounting\n for (const [cidStr, block] of blocks.entries()) {\n (peerId != null) && this.messageSent(peerId, CID.parse(cidStr), block);\n }\n }\n catch (err) {\n this._log.error(err);\n }\n // Free the tasks up from the request queue\n (peerId != null) && this._requestQueue.tasksDone(peerId, tasks);\n // Trigger the next round of task processing\n this._scheduleProcessTasks();\n }\n wantlistForPeer(peerId) {\n const peerIdStr = peerId.toString();\n const ledger = this.ledgerMap.get(peerIdStr);\n return (ledger != null) ? ledger.wantlist.sortedEntries() : new Map();\n }\n ledgerForPeer(peerId) {\n const peerIdStr = peerId.toString();\n const ledger = this.ledgerMap.get(peerIdStr);\n if (ledger == null) {\n return undefined;\n }\n return {\n peer: ledger.partner,\n value: ledger.debtRatio(),\n sent: ledger.accounting.bytesSent,\n recv: ledger.accounting.bytesRecv,\n exchanged: ledger.exchangeCount\n };\n }\n peers() {\n return Array.from(this.ledgerMap.values()).map((l) => l.partner);\n }\n /**\n * Receive blocks either from an incoming message from the network, or from\n * blocks being added by the client on the localhost (eg IPFS add)\n */\n receivedBlocks(blocks) {\n if (blocks.length === 0) {\n return;\n }\n // For each connected peer, check if it wants the block we received\n for (const ledger of this.ledgerMap.values()) {\n for (const { cid, block } of blocks) {\n // Filter out blocks that we don't want\n const want = ledger.wantlistContains(cid);\n if (want == null) {\n continue;\n }\n // If the block is small enough, just send the block, even if the\n // client asked for a HAVE\n const blockSize = block.length;\n const isWantBlock = this._sendAsBlock(want.wantType, blockSize);\n let entrySize = blockSize;\n if (!isWantBlock) {\n entrySize = Message.blockPresenceSize(want.cid);\n }\n this._requestQueue.pushTasks(ledger.partner, [{\n topic: want.cid.toString(base58btc),\n priority: want.priority,\n size: entrySize,\n data: {\n blockSize,\n isWantBlock,\n haveBlock: true,\n sendDontHave: false\n }\n }]);\n }\n }\n this._scheduleProcessTasks();\n }\n /**\n * Handle incoming messages\n */\n async messageReceived(peerId, msg) {\n const ledger = this._findOrCreate(peerId);\n if (msg.empty) {\n return;\n }\n // If the message has a full wantlist, clear the current wantlist\n if (msg.full) {\n ledger.wantlist = new Wantlist();\n }\n // Record the amount of block data received\n this._updateBlockAccounting(msg.blocks, ledger);\n if (msg.wantlist.size === 0) {\n this._scheduleProcessTasks();\n return;\n }\n // Clear cancelled wants and add new wants to the ledger\n const cancels = [];\n const wants = [];\n msg.wantlist.forEach((entry) => {\n if (entry.cancel) {\n ledger.cancelWant(entry.cid);\n cancels.push(entry.cid);\n }\n else {\n ledger.wants(entry.cid, entry.priority, entry.wantType);\n wants.push(entry);\n }\n });\n this._cancelWants(peerId, cancels);\n await this._addWants(peerId, wants);\n this._scheduleProcessTasks();\n }\n _cancelWants(peerId, cids) {\n for (const c of cids) {\n this._requestQueue.remove(c.toString(base58btc), peerId);\n }\n }\n async _addWants(peerId, wants) {\n // Get the size of each wanted block\n const blockSizes = await this._getBlockSizes(wants.map(w => w.cid));\n const tasks = [];\n for (const want of wants) {\n const id = want.cid.toString(base58btc);\n const blockSize = blockSizes.get(id);\n // If the block was not found\n if (blockSize == null) {\n // Only add the task to the queue if the requester wants a DONT_HAVE\n if (want.sendDontHave) {\n tasks.push({\n topic: id,\n priority: want.priority,\n size: Message.blockPresenceSize(want.cid),\n data: {\n isWantBlock: want.wantType === WantType.Block,\n blockSize: 0,\n haveBlock: false,\n sendDontHave: want.sendDontHave\n }\n });\n }\n }\n else {\n // The block was found, add it to the queue\n // If the block is small enough, just send the block, even if the\n // client asked for a HAVE\n const isWantBlock = this._sendAsBlock(want.wantType, blockSize);\n // entrySize is the amount of space the entry takes up in the\n // message we send to the recipient. If we're sending a block, the\n // entrySize is the size of the block. Otherwise it's the size of\n // a block presence entry.\n let entrySize = blockSize;\n if (!isWantBlock) {\n entrySize = Message.blockPresenceSize(want.cid);\n }\n tasks.push({\n topic: id,\n priority: want.priority,\n size: entrySize,\n data: {\n isWantBlock,\n blockSize,\n haveBlock: true,\n sendDontHave: want.sendDontHave\n }\n });\n }\n this._requestQueue.pushTasks(peerId, tasks);\n }\n }\n _sendAsBlock(wantType, blockSize) {\n return wantType === WantType.Block ||\n blockSize <= this._opts.maxSizeReplaceHasWithBlock;\n }\n async _getBlockSizes(cids) {\n const blocks = await this._getBlocks(cids);\n return new Map([...blocks].map(([k, v]) => [k, v.length]));\n }\n async _getBlocks(cids) {\n const res = new Map();\n await Promise.all(cids.map(async (cid) => {\n try {\n const block = await this.blockstore.get(cid);\n res.set(cid.toString(base58btc), block);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n this._log.error('failed to query blockstore for %s: %s', cid, err);\n }\n }\n }));\n return res;\n }\n _updateBlockAccounting(blocksMap, ledger) {\n for (const block of blocksMap.values()) {\n this._log('got block (%s bytes)', block.length);\n ledger.receivedBytes(block.length);\n }\n }\n /**\n * Clear up all accounting things after message was sent\n */\n messageSent(peerId, cid, block) {\n const ledger = this._findOrCreate(peerId);\n ledger.sentBytes(block.length);\n ledger.wantlist.remove(cid);\n }\n numBytesSentTo(peerId) {\n return this._findOrCreate(peerId).accounting.bytesSent;\n }\n numBytesReceivedFrom(peerId) {\n return this._findOrCreate(peerId).accounting.bytesRecv;\n }\n peerDisconnected(peerId) {\n this.ledgerMap.delete(peerId.toString());\n }\n _findOrCreate(peerId) {\n const peerIdStr = peerId.toString();\n const ledger = this.ledgerMap.get(peerIdStr);\n if (ledger != null) {\n return ledger;\n }\n const l = new Ledger(peerId);\n this.ledgerMap.set(peerIdStr, l);\n if (this._stats != null) {\n this._stats.push(peerIdStr, 'peerCount', 1);\n }\n return l;\n }\n start() {\n this._running = true;\n }\n stop() {\n this._running = false;\n }\n}\n//# sourceMappingURL=index.js.map","export function isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\n//# sourceMappingURL=utils.js.map","import * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { allocUnsafe } from 'uint8arrays/alloc';\nimport { isAsyncIterable } from './utils.js';\nconst defaultEncoder = (length) => {\n const lengthLength = varint.encodingLength(length);\n const lengthBuf = allocUnsafe(lengthLength);\n varint.encode(length, lengthBuf);\n defaultEncoder.bytes = lengthLength;\n return lengthBuf;\n};\ndefaultEncoder.bytes = 0;\nexport function encode(source, options) {\n options = options ?? {};\n const encodeLength = options.lengthEncoder ?? defaultEncoder;\n function* maybeYield(chunk) {\n // length + data\n const length = encodeLength(chunk.byteLength);\n // yield only Uint8Arrays\n if (length instanceof Uint8Array) {\n yield length;\n }\n else {\n yield* length;\n }\n // yield only Uint8Arrays\n if (chunk instanceof Uint8Array) {\n yield chunk;\n }\n else {\n yield* chunk;\n }\n }\n if (isAsyncIterable(source)) {\n return (async function* () {\n for await (const chunk of source) {\n yield* maybeYield(chunk);\n }\n })();\n }\n return (function* () {\n for (const chunk of source) {\n yield* maybeYield(chunk);\n }\n })();\n}\nencode.single = (chunk, options) => {\n options = options ?? {};\n const encodeLength = options.lengthEncoder ?? defaultEncoder;\n return new Uint8ArrayList(encodeLength(chunk.byteLength), chunk);\n};\n//# sourceMappingURL=encode.js.map","/**\n * The reported length of the next data message was not a positive integer\n */\nexport class InvalidMessageLengthError extends Error {\n name = 'InvalidMessageLengthError';\n code = 'ERR_INVALID_MSG_LENGTH';\n}\n/**\n * The reported length of the next data message was larger than the configured\n * max allowable value\n */\nexport class InvalidDataLengthError extends Error {\n name = 'InvalidDataLengthError';\n code = 'ERR_MSG_DATA_TOO_LONG';\n}\n/**\n * The varint used to specify the length of the next data message contained more\n * bytes than the configured max allowable value\n */\nexport class InvalidDataLengthLengthError extends Error {\n name = 'InvalidDataLengthLengthError';\n code = 'ERR_MSG_LENGTH_TOO_LONG';\n}\n/**\n * The incoming stream ended before the expected number of bytes were read\n */\nexport class UnexpectedEOFError extends Error {\n name = 'UnexpectedEOFError';\n code = 'ERR_UNEXPECTED_EOF';\n}\n//# sourceMappingURL=errors.js.map","/* eslint max-depth: [\"error\", 6] */\nimport * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { InvalidDataLengthError, InvalidDataLengthLengthError, InvalidMessageLengthError, UnexpectedEOFError } from './errors.js';\nimport { isAsyncIterable } from './utils.js';\n// Maximum length of the length section of the message\nexport const MAX_LENGTH_LENGTH = 8; // Varint.encode(Number.MAX_SAFE_INTEGER).length\n// Maximum length of the data section of the message\nexport const MAX_DATA_LENGTH = 1024 * 1024 * 4;\nvar ReadMode;\n(function (ReadMode) {\n ReadMode[ReadMode[\"LENGTH\"] = 0] = \"LENGTH\";\n ReadMode[ReadMode[\"DATA\"] = 1] = \"DATA\";\n})(ReadMode || (ReadMode = {}));\nconst defaultDecoder = (buf) => {\n const length = varint.decode(buf);\n defaultDecoder.bytes = varint.encodingLength(length);\n return length;\n};\ndefaultDecoder.bytes = 0;\nexport function decode(source, options) {\n const buffer = new Uint8ArrayList();\n let mode = ReadMode.LENGTH;\n let dataLength = -1;\n const lengthDecoder = options?.lengthDecoder ?? defaultDecoder;\n const maxLengthLength = options?.maxLengthLength ?? MAX_LENGTH_LENGTH;\n const maxDataLength = options?.maxDataLength ?? MAX_DATA_LENGTH;\n function* maybeYield() {\n while (buffer.byteLength > 0) {\n if (mode === ReadMode.LENGTH) {\n // read length, ignore errors for short reads\n try {\n dataLength = lengthDecoder(buffer);\n if (dataLength < 0) {\n throw new InvalidMessageLengthError('Invalid message length');\n }\n if (dataLength > maxDataLength) {\n throw new InvalidDataLengthError('Message length too long');\n }\n const dataLengthLength = lengthDecoder.bytes;\n buffer.consume(dataLengthLength);\n if (options?.onLength != null) {\n options.onLength(dataLength);\n }\n mode = ReadMode.DATA;\n }\n catch (err) {\n if (err instanceof RangeError) {\n if (buffer.byteLength > maxLengthLength) {\n throw new InvalidDataLengthLengthError('Message length length too long');\n }\n break;\n }\n throw err;\n }\n }\n if (mode === ReadMode.DATA) {\n if (buffer.byteLength < dataLength) {\n // not enough data, wait for more\n break;\n }\n const data = buffer.sublist(0, dataLength);\n buffer.consume(dataLength);\n if (options?.onData != null) {\n options.onData(data);\n }\n yield data;\n mode = ReadMode.LENGTH;\n }\n }\n }\n if (isAsyncIterable(source)) {\n return (async function* () {\n for await (const buf of source) {\n buffer.append(buf);\n yield* maybeYield();\n }\n if (buffer.byteLength > 0) {\n throw new UnexpectedEOFError('Unexpected end of input');\n }\n })();\n }\n return (function* () {\n for (const buf of source) {\n buffer.append(buf);\n yield* maybeYield();\n }\n if (buffer.byteLength > 0) {\n throw new UnexpectedEOFError('Unexpected end of input');\n }\n })();\n}\ndecode.fromReader = (reader, options) => {\n let byteLength = 1; // Read single byte chunks until the length is known\n const varByteSource = (async function* () {\n while (true) {\n try {\n const { done, value } = await reader.next(byteLength);\n if (done === true) {\n return;\n }\n if (value != null) {\n yield value;\n }\n }\n catch (err) {\n if (err.code === 'ERR_UNDER_READ') {\n return { done: true, value: null };\n }\n throw err;\n }\n finally {\n // Reset the byteLength so we continue to check for varints\n byteLength = 1;\n }\n }\n }());\n /**\n * Once the length has been parsed, read chunk for that length\n */\n const onLength = (l) => { byteLength = l; };\n return decode(varByteSource, {\n ...(options ?? {}),\n onLength\n });\n};\n//# sourceMappingURL=decode.js.map","const SECOND = 1000;\nexport const maxProvidersPerRequest = 3;\nexport const providerRequestTimeout = 10 * SECOND;\nexport const hasBlockTimeout = 15 * SECOND;\nexport const provideTimeout = 15 * SECOND;\nexport const kMaxPriority = Math.pow(2, 31) - 1;\nexport const maxListeners = 1000;\nexport const wantlistSendDebounceMs = 1;\n//# sourceMappingURL=constants.js.map","import { CodeError } from '@libp2p/interface';\nimport drain from 'it-drain';\nimport * as lp from 'it-length-prefixed';\nimport map from 'it-map';\nimport { pipe } from 'it-pipe';\nimport take from 'it-take';\nimport { CustomProgressEvent } from 'progress-events';\nimport { TimeoutController } from 'timeout-abort-controller';\nimport * as CONSTANTS from './constants.js';\nimport { BitswapMessage as Message } from './message/index.js';\nimport { logger } from './utils/index.js';\nconst BITSWAP100 = '/ipfs/bitswap/1.0.0';\nconst BITSWAP110 = '/ipfs/bitswap/1.1.0';\nconst BITSWAP120 = '/ipfs/bitswap/1.2.0';\nconst DEFAULT_MAX_INBOUND_STREAMS = 1024;\nconst DEFAULT_MAX_OUTBOUND_STREAMS = 1024;\nconst DEFAULT_INCOMING_STREAM_TIMEOUT = 30000;\nexport class Network {\n _log;\n _libp2p;\n _bitswap;\n _protocols;\n _stats;\n _running;\n _hashLoader;\n _maxInboundStreams;\n _maxOutboundStreams;\n _incomingStreamTimeout;\n _registrarIds;\n constructor(libp2p, bitswap, stats, options = {}) {\n this._log = logger(libp2p.peerId, 'network');\n this._libp2p = libp2p;\n this._bitswap = bitswap;\n this._protocols = [BITSWAP100];\n if (options.b100Only !== true) {\n // Latest bitswap first\n this._protocols.unshift(BITSWAP110);\n this._protocols.unshift(BITSWAP120);\n }\n this._stats = stats;\n this._running = false;\n // bind event listeners\n this._onPeerConnect = this._onPeerConnect.bind(this);\n this._onPeerDisconnect = this._onPeerDisconnect.bind(this);\n this._onConnection = this._onConnection.bind(this);\n this._hashLoader = options.hashLoader ?? {\n async getHasher() {\n throw new Error('Not implemented');\n }\n };\n this._maxInboundStreams = options.maxInboundStreams ?? DEFAULT_MAX_INBOUND_STREAMS;\n this._maxOutboundStreams = options.maxOutboundStreams ?? DEFAULT_MAX_OUTBOUND_STREAMS;\n this._incomingStreamTimeout = options.incomingStreamTimeout ?? DEFAULT_INCOMING_STREAM_TIMEOUT;\n }\n async start() {\n this._running = true;\n await this._libp2p.handle(this._protocols, this._onConnection, {\n maxInboundStreams: this._maxInboundStreams,\n maxOutboundStreams: this._maxOutboundStreams\n });\n // register protocol with topology\n const topology = {\n onConnect: this._onPeerConnect,\n onDisconnect: this._onPeerDisconnect\n };\n /** @type {string[]} */\n this._registrarIds = [];\n for (const protocol of this._protocols) {\n this._registrarIds.push(await this._libp2p.register(protocol, topology));\n }\n // All existing connections are like new ones for us\n this._libp2p.getConnections().forEach(conn => {\n this._onPeerConnect(conn.remotePeer);\n });\n }\n async stop() {\n this._running = false;\n // Unhandle both, libp2p doesn't care if it's not already handled\n await this._libp2p.unhandle(this._protocols);\n // unregister protocol and handlers\n if (this._registrarIds != null) {\n for (const id of this._registrarIds) {\n this._libp2p.unregister(id);\n }\n this._registrarIds = [];\n }\n }\n /**\n * Handles both types of incoming bitswap messages\n */\n _onConnection(info) {\n if (!this._running) {\n return;\n }\n const { stream, connection } = info;\n const controller = new TimeoutController(this._incomingStreamTimeout);\n Promise.resolve().then(async () => {\n this._log('incoming new bitswap %s connection from %p', stream.protocol, connection.remotePeer);\n const abortListener = () => {\n stream.abort(new CodeError('Incoming Bitswap stream timed out', 'ERR_TIMEOUT'));\n };\n let signal = AbortSignal.timeout(this._incomingStreamTimeout);\n signal.addEventListener('abort', abortListener);\n await pipe(stream, (source) => lp.decode(source), async (source) => {\n for await (const data of source) {\n try {\n const message = await Message.deserialize(data.subarray(), this._hashLoader);\n await this._bitswap._receiveMessage(connection.remotePeer, message);\n }\n catch (err) {\n this._bitswap._receiveError(err);\n break;\n }\n // we have received some data so reset the timeout controller\n signal.removeEventListener('abort', abortListener);\n signal = AbortSignal.timeout(this._incomingStreamTimeout);\n signal.addEventListener('abort', abortListener);\n }\n });\n await stream.close({\n signal\n });\n })\n .catch(err => {\n this._log(err);\n stream.abort(err);\n })\n .finally(() => {\n controller.clear();\n });\n }\n _onPeerConnect(peerId) {\n this._bitswap._onPeerConnected(peerId);\n }\n _onPeerDisconnect(peerId) {\n this._bitswap._onPeerDisconnected(peerId);\n }\n /**\n * Find providers given a `cid`.\n */\n findProviders(cid, options = {}) {\n options.onProgress?.(new CustomProgressEvent('bitswap:network:find-providers', cid));\n return this._libp2p.contentRouting.findProviders(cid, options);\n }\n /**\n * Find the providers of a given `cid` and connect to them.\n */\n async findAndConnect(cid, options) {\n await drain(take(map(this.findProviders(cid, options), async (provider) => this.connectTo(provider.id, options)\n .catch(err => {\n // Prevent unhandled promise rejection\n this._log.error(err);\n })), CONSTANTS.maxProvidersPerRequest))\n .catch(err => {\n this._log.error(err);\n });\n }\n /**\n * Tell the network we can provide content for the passed CID\n */\n async provide(cid, options = {}) {\n options.onProgress?.(new CustomProgressEvent('bitswap:network:provide', cid));\n await this._libp2p.contentRouting.provide(cid, options);\n }\n /**\n * Connect to the given peer\n * Send the given msg (instance of Message) to the given peer\n */\n async sendMessage(peer, msg, options = {}) {\n if (!this._running)\n throw new Error('network isn\\'t running');\n const stringId = peer.toString();\n this._log('sendMessage to %s', stringId, msg);\n options.onProgress?.(new CustomProgressEvent('bitswap:network:send-wantlist', peer));\n await this._writeMessage(peer, msg, options);\n this._updateSentStats(peer, msg.blocks);\n }\n /**\n * Connects to another peer\n */\n async connectTo(peer, options = {}) {\n if (!this._running) {\n throw new Error('network isn\\'t running');\n }\n options.onProgress?.(new CustomProgressEvent('bitswap:network:dial', peer));\n return this._libp2p.dial(peer, options);\n }\n _updateSentStats(peer, blocks) {\n const peerId = peer.toString();\n if (this._stats != null) {\n for (const block of blocks.values()) {\n this._stats.push(peerId, 'dataSent', block.length);\n }\n this._stats.push(peerId, 'blocksSent', blocks.size);\n }\n }\n async _writeMessage(peerId, msg, options = {}) {\n const stream = await this._libp2p.dialProtocol(peerId, [BITSWAP120, BITSWAP110, BITSWAP100]);\n try {\n /** @type {Uint8Array} */\n let serialized;\n switch (stream.protocol) {\n case BITSWAP100:\n serialized = msg.serializeToBitswap100();\n break;\n case BITSWAP110:\n case BITSWAP120:\n serialized = msg.serializeToBitswap110();\n break;\n default:\n throw new Error(`Unknown protocol: ${stream.protocol}`);\n }\n await pipe([serialized], (source) => lp.encode(source), stream);\n await stream.close();\n }\n catch (err) {\n options.onProgress?.(new CustomProgressEvent('bitswap:network:send-wantlist:error', { peer: peerId, error: err }));\n this._log(err);\n stream.abort(err);\n }\n }\n}\n//# sourceMappingURL=network.js.map","import { EventEmitter } from 'events';\nimport { CustomProgressEvent } from 'progress-events';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport * as CONSTANTS from './constants.js';\nimport { logger } from './utils/index.js';\nconst unwantEvent = (cid) => `unwant:${uint8ArrayToString(cid.multihash.bytes, 'base64')}`;\nconst blockEvent = (cid) => `block:${uint8ArrayToString(cid.multihash.bytes, 'base64')}`;\nexport class Notifications extends EventEmitter {\n _log;\n /**\n * Internal module used to track events about incoming blocks,\n * wants and unwants.\n */\n constructor(peerId) {\n super();\n this.setMaxListeners(CONSTANTS.maxListeners);\n this._log = logger(peerId, 'notif');\n }\n /**\n * Signal the system that we received `block`.\n */\n hasBlock(cid, block) {\n const event = blockEvent(cid);\n this._log(event);\n this.emit(event, block);\n }\n /**\n * Signal the system that we are waiting to receive the\n * block associated with the given `cid`.\n * Returns a Promise that resolves to the block when it is received,\n * or undefined when the block is unwanted.\n */\n async wantBlock(cid, options = {}) {\n if (cid == null) {\n throw new Error('Not a valid cid');\n }\n const blockEvt = blockEvent(cid);\n const unwantEvt = unwantEvent(cid);\n this._log(`wantBlock:${cid}`);\n return new Promise((resolve, reject) => {\n const onUnwant = () => {\n this.removeListener(blockEvt, onBlock);\n options.onProgress?.(new CustomProgressEvent('bitswap:want-block:unwant', cid));\n reject(new Error(`Block for ${cid} unwanted`));\n };\n const onBlock = (data) => {\n this.removeListener(unwantEvt, onUnwant);\n options.onProgress?.(new CustomProgressEvent('bitswap:want-block:block', cid));\n resolve(data);\n };\n this.once(unwantEvt, onUnwant);\n this.once(blockEvt, onBlock);\n options.signal?.addEventListener('abort', () => {\n this.removeListener(blockEvt, onBlock);\n this.removeListener(unwantEvt, onUnwant);\n reject(new Error(`Want for ${cid} aborted`));\n });\n });\n }\n /**\n * Signal that the block is not wanted anymore\n */\n unwantBlock(cid) {\n const event = unwantEvent(cid);\n this._log(event);\n this.emit(event);\n }\n}\n//# sourceMappingURL=notifications.js.map","'use strict'\n\nconst exp = Math.exp\n\nexports =\nmodule.exports =\nfunction MovingAverage (timespan) {\n if (typeof timespan !== 'number') { throw new Error('must provide a timespan to the moving average constructor') }\n\n if (timespan <= 0) { throw new Error('must provide a timespan > 0 to the moving average constructor') }\n\n let ma // moving average\n let v = 0 // variance\n let d = 0 // deviation\n let f = 0 // forecast\n\n let previousTime\n\n let ret = {}\n\n function alpha (t, pt) {\n return 1 - (exp(-(t - pt) / timespan))\n }\n\n ret.push =\n function push (time, value) {\n if (previousTime) {\n // calculate moving average\n const a = alpha(time, previousTime)\n const diff = value - ma\n const incr = a * diff\n ma = a * value + (1 - a) * ma\n // calculate variance & deviation\n v = (1 - a) * (v + diff * incr)\n d = Math.sqrt(v)\n // calculate forecast\n f = ma + a * diff\n } else {\n ma = value\n }\n previousTime = time\n }\n\n // Exponential Moving Average\n\n ret.movingAverage =\n function movingAverage () {\n return ma\n }\n\n // Variance\n ret.variance =\n function variance () {\n return v\n }\n\n ret.deviation =\n function deviation () {\n return d\n }\n\n ret.forecast =\n function forecast () {\n return f\n }\n\n return ret\n}\n","import { EventEmitter } from 'events';\nimport MovingAverage, {} from '@vascosantos/moving-average';\nexport class Stat extends EventEmitter {\n _options;\n _queue;\n _stats;\n _frequencyLastTime;\n _frequencyAccumulators;\n _movingAverages;\n _enabled;\n _timeout;\n constructor(initialCounters, options) {\n super();\n this._options = options;\n this._queue = [];\n this._stats = {};\n this._frequencyLastTime = Date.now();\n this._frequencyAccumulators = {};\n this._movingAverages = {};\n this._update = this._update.bind(this);\n initialCounters.forEach((key) => {\n this._stats[key] = BigInt(0);\n this._movingAverages[key] = {};\n this._options.movingAverageIntervals.forEach((interval) => {\n const ma = this._movingAverages[key][interval] = MovingAverage(interval);\n ma.push(this._frequencyLastTime, 0);\n });\n });\n this._enabled = this._options.enabled;\n }\n enable() {\n this._enabled = true;\n }\n disable() {\n this._enabled = false;\n }\n stop() {\n if (this._timeout != null) {\n clearTimeout(this._timeout);\n }\n }\n get snapshot() {\n return Object.assign({}, this._stats);\n }\n get movingAverages() {\n return Object.assign({}, this._movingAverages);\n }\n push(counter, inc) {\n if (this._enabled) {\n this._queue.push([counter, inc, Date.now()]);\n this._resetComputeTimeout();\n }\n }\n _resetComputeTimeout() {\n if (this._timeout != null) {\n clearTimeout(this._timeout);\n }\n this._timeout = setTimeout(this._update, this._nextTimeout());\n }\n _nextTimeout() {\n // calculate the need for an update, depending on the queue length\n const urgency = this._queue.length / this._options.computeThrottleMaxQueueSize;\n return Math.max(this._options.computeThrottleTimeout * (1 - urgency), 0);\n }\n _update() {\n this._timeout = undefined;\n if (this._queue.length > 0) {\n let last;\n while (this._queue.length > 0) {\n const op = last = this._queue.shift();\n (op != null) && this._applyOp(op);\n }\n (last != null) && this._updateFrequency(last[2]); // contains timestamp of last op\n this.emit('update', this._stats);\n }\n }\n _updateFrequency(latestTime) {\n const timeDiff = latestTime - this._frequencyLastTime;\n if (timeDiff > 0) {\n Object.keys(this._stats).forEach((key) => {\n this._updateFrequencyFor(key, timeDiff, latestTime);\n });\n }\n this._frequencyLastTime = latestTime;\n }\n _updateFrequencyFor(key, timeDiffMS, latestTime) {\n const count = this._frequencyAccumulators[key] ?? 0;\n this._frequencyAccumulators[key] = 0;\n const hz = (count / timeDiffMS) * 1000;\n let movingAverages = this._movingAverages[key];\n if (movingAverages == null) {\n movingAverages = this._movingAverages[key] = {};\n }\n this._options.movingAverageIntervals.forEach((movingAverageInterval) => {\n let movingAverage = movingAverages[movingAverageInterval];\n if (movingAverage == null) {\n movingAverage = movingAverages[movingAverageInterval] = MovingAverage(movingAverageInterval);\n }\n movingAverage.push(latestTime, hz);\n });\n }\n _applyOp(op) {\n const key = op[0];\n const inc = op[1];\n if (typeof inc !== 'number') {\n throw new Error(`invalid increment number: ${inc}`);\n }\n if (!Object.prototype.hasOwnProperty.call(this._stats, key)) {\n this._stats[key] = BigInt(0);\n }\n this._stats[key] = BigInt(this._stats[key]) + BigInt(inc);\n if (this._frequencyAccumulators[key] == null) {\n this._frequencyAccumulators[key] = 0;\n }\n this._frequencyAccumulators[key] += inc;\n }\n}\n//# sourceMappingURL=stat.js.map","import { EventEmitter } from 'events';\nimport { trackedMap } from '@libp2p/utils/tracked-map';\nimport { Stat } from './stat.js';\nconst defaultOptions = {\n enabled: false,\n computeThrottleTimeout: 1000,\n computeThrottleMaxQueueSize: 1000,\n movingAverageIntervals: [\n 60 * 1000, // 1 minute\n 5 * 60 * 1000, // 5 minutes\n 15 * 60 * 1000 // 15 minutes\n ]\n};\nexport class Stats extends EventEmitter {\n _initialCounters;\n _options;\n _enabled;\n _global;\n _peers;\n constructor(libp2p, initialCounters = [], _options = defaultOptions) {\n super();\n const options = Object.assign({}, defaultOptions, _options);\n if (typeof options.computeThrottleTimeout !== 'number') {\n throw new Error('need computeThrottleTimeout');\n }\n if (typeof options.computeThrottleMaxQueueSize !== 'number') {\n throw new Error('need computeThrottleMaxQueueSize');\n }\n this._initialCounters = initialCounters;\n this._options = options;\n this._enabled = this._options.enabled;\n this._global = new Stat(initialCounters, options);\n this._global.on('update', (stats) => this.emit('update', stats));\n this._peers = trackedMap({\n name: 'ipfs_bitswap_stats_peers',\n metrics: libp2p.metrics\n });\n }\n enable() {\n this._enabled = true;\n this._options.enabled = true;\n this._global.enable();\n }\n disable() {\n this._enabled = false;\n this._options.enabled = false;\n this._global.disable();\n }\n stop() {\n this._enabled = false;\n this._global.stop();\n for (const peerStat of this._peers) {\n peerStat[1].stop();\n }\n }\n get snapshot() {\n return this._global.snapshot;\n }\n get movingAverages() {\n return this._global.movingAverages;\n }\n forPeer(peerId) {\n const peerIdStr = peerId.toString();\n return this._peers.get(peerIdStr);\n }\n push(peer, counter, inc) {\n if (this._enabled) {\n this._global.push(counter, inc);\n if (peer != null) {\n let peerStats = this._peers.get(peer);\n if (peerStats == null) {\n peerStats = new Stat(this._initialCounters, this._options);\n this._peers.set(peer, peerStats);\n }\n peerStats.push(counter, inc);\n }\n }\n }\n disconnected(peer) {\n const peerId = peer.toString();\n const peerStats = this._peers.get(peerId);\n if (peerStats != null) {\n peerStats.stop();\n this._peers.delete(peerId);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var functionDebounce = debounce;\n\nfunction debounce(fn, wait, callFirst) {\n var timeout = null;\n var debouncedFn = null;\n\n var clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n\n debouncedFn = null;\n timeout = null;\n }\n };\n\n var flush = function() {\n var call = debouncedFn;\n clear();\n\n if (call) {\n call();\n }\n };\n\n var debounceWrapper = function() {\n if (!wait) {\n return fn.apply(this, arguments);\n }\n\n var context = this;\n var args = arguments;\n var callNow = callFirst && !timeout;\n clear();\n\n debouncedFn = function() {\n fn.apply(context, args);\n };\n\n timeout = setTimeout(function() {\n timeout = null;\n\n if (!callNow) {\n var call = debouncedFn;\n debouncedFn = null;\n\n return call();\n }\n }, wait);\n\n if (callNow) {\n return debouncedFn();\n }\n };\n\n debounceWrapper.cancel = clear;\n debounceWrapper.flush = flush;\n\n return debounceWrapper;\n}\n\nexport {functionDebounce as default};\n","import debounce from 'just-debounce-it';\nimport { wantlistSendDebounceMs } from '../constants.js';\nimport { BitswapMessage as Message } from '../message/index.js';\nimport { logger } from '../utils/index.js';\nexport class MsgQueue {\n peerId;\n refcnt;\n network;\n _entries;\n _log;\n constructor(selfPeerId, otherPeerId, network) {\n this.peerId = otherPeerId;\n this.network = network;\n this.refcnt = 1;\n this._entries = [];\n this._log = logger(selfPeerId, 'msgqueue');\n this.sendEntries = debounce(this.sendEntries.bind(this), wantlistSendDebounceMs);\n }\n addMessage(msg, options = {}) {\n if (msg.empty) {\n return;\n }\n void this.send(msg, options);\n }\n addEntries(entries, options = {}) {\n this._entries = this._entries.concat(entries);\n this.sendEntries(options);\n }\n sendEntries(options = {}) {\n if (this._entries.length === 0) {\n return;\n }\n const msg = new Message(false);\n this._entries.forEach((entry) => {\n if (entry.cancel === true) {\n msg.cancel(entry.cid);\n }\n else {\n msg.addEntry(entry.cid, entry.priority);\n }\n });\n this._entries = [];\n this.addMessage(msg, options);\n }\n async send(msg, options = {}) {\n try {\n await this.network.connectTo(this.peerId, options);\n }\n catch (err) {\n this._log.error('cant connect to peer %p: %s', this.peerId, err.message);\n return;\n }\n this._log('sending message to peer %p', this.peerId);\n // Note: Don't wait for sendMessage() to complete\n this.network.sendMessage(this.peerId, msg, options).catch((err) => {\n this._log.error('send error', err);\n });\n }\n}\n//# sourceMappingURL=msg-queue.js.map","import { trackedMap } from '@libp2p/utils/tracked-map';\nimport { base58btc } from 'multiformats/bases/base58';\nimport * as CONSTANTS from '../constants.js';\nimport { BitswapMessage as Message } from '../message/index.js';\nimport { logger } from '../utils/index.js';\nimport { Wantlist } from '../wantlist/index.js';\nimport { MsgQueue } from './msg-queue.js';\nexport class WantManager {\n peers;\n wantlist;\n network;\n _peerId;\n _log;\n constructor(peerId, network, stats, libp2p) {\n this.peers = trackedMap({\n name: 'ipfs_bitswap_want_manager_peers',\n metrics: libp2p.metrics\n });\n this.wantlist = new Wantlist(stats, libp2p);\n this.network = network;\n this._peerId = peerId;\n this._log = logger(peerId, 'want');\n }\n _addEntries(cids, cancel, force, options = {}) {\n const entries = cids.map((cid, i) => {\n return new Message.Entry(cid, CONSTANTS.kMaxPriority - i, Message.WantType.Block, cancel);\n });\n entries.forEach((e) => {\n // add changes to our wantlist\n if (e.cancel) {\n if (force === true) {\n this.wantlist.removeForce(e.cid.toString(base58btc));\n }\n else {\n this.wantlist.remove(e.cid);\n }\n }\n else {\n this._log('adding to wantlist');\n // TODO: Figure out the wantType\n // @ts-expect-error - requires wantType\n this.wantlist.add(e.cid, e.priority);\n }\n });\n // broadcast changes\n for (const p of this.peers.values()) {\n p.addEntries(entries, options);\n }\n }\n _startPeerHandler(peerId) {\n let mq = this.peers.get(peerId.toString());\n if (mq != null) {\n mq.refcnt++;\n return;\n }\n mq = new MsgQueue(this._peerId, peerId, this.network);\n // new peer, give them the full wantlist\n const fullwantlist = new Message(true);\n for (const entry of this.wantlist.entries()) {\n fullwantlist.addEntry(entry[1].cid, entry[1].priority);\n }\n mq.addMessage(fullwantlist);\n this.peers.set(peerId.toString(), mq);\n return mq;\n }\n _stopPeerHandler(peerId) {\n const mq = this.peers.get(peerId.toString());\n if (mq == null) {\n return;\n }\n mq.refcnt--;\n if (mq.refcnt > 0) {\n return;\n }\n this.peers.delete(peerId.toString());\n }\n /**\n * add all the cids to the wantlist\n */\n wantBlocks(cids, options = {}) {\n this._addEntries(cids, false, false, options);\n options.signal?.addEventListener('abort', () => {\n this.cancelWants(cids);\n });\n }\n /**\n * Remove blocks of all the given keys without respecting refcounts\n */\n unwantBlocks(cids) {\n this._log('unwant blocks: %s', cids.length);\n this._addEntries(cids, true, true);\n }\n /**\n * Cancel wanting all of the given keys\n */\n cancelWants(cids) {\n this._log('cancel wants: %s', cids.length);\n this._addEntries(cids, true);\n }\n /**\n * Returns a list of all currently connected peers\n */\n connectedPeers() {\n return Array.from(this.peers.keys());\n }\n connected(peerId) {\n this._startPeerHandler(peerId);\n }\n disconnected(peerId) {\n this._stopPeerHandler(peerId);\n }\n start() {\n }\n stop() {\n this.peers.forEach((mq) => { this.disconnected(mq.peerId); });\n }\n}\n//# sourceMappingURL=index.js.map","import { anySignal } from 'any-signal';\nimport forEach from 'it-foreach';\nimport { CID } from 'multiformats/cid';\nimport { DecisionEngine } from './decision-engine/index.js';\nimport { Network } from './network.js';\nimport { Notifications } from './notifications.js';\nimport { Stats } from './stats/index.js';\nimport { logger } from './utils/index.js';\nimport { WantManager } from './want-manager/index.js';\nconst hashLoader = {\n async getHasher() {\n throw new Error('Not implemented');\n }\n};\nconst defaultOptions = {\n maxInboundStreams: 1024,\n maxOutboundStreams: 1024,\n incomingStreamTimeout: 30000,\n hashLoader,\n statsEnabled: false,\n statsComputeThrottleTimeout: 1000,\n statsComputeThrottleMaxQueueSize: 1000\n};\nconst statsKeys = [\n 'blocksReceived',\n 'dataReceived',\n 'dupBlksReceived',\n 'dupDataReceived',\n 'blocksSent',\n 'dataSent',\n 'providesBufferLength',\n 'wantListLength',\n 'peerCount'\n];\n/**\n * JavaScript implementation of the Bitswap 'data exchange' protocol\n * used by IPFS.\n */\nexport class DefaultBitswap {\n _libp2p;\n _log;\n stats;\n network;\n blockstore;\n engine;\n wm;\n notifications;\n started;\n constructor(libp2p, blockstore, options = {}) {\n this._libp2p = libp2p;\n this._log = logger(this.peerId);\n options = Object.assign({}, defaultOptions, options);\n // stats\n this.stats = new Stats(libp2p, statsKeys, {\n enabled: options.statsEnabled,\n computeThrottleTimeout: options.statsComputeThrottleTimeout,\n computeThrottleMaxQueueSize: options.statsComputeThrottleMaxQueueSize\n });\n // the network delivers messages\n this.network = new Network(libp2p, this, this.stats, {\n hashLoader: options.hashLoader,\n maxInboundStreams: options.maxInboundStreams,\n maxOutboundStreams: options.maxOutboundStreams,\n incomingStreamTimeout: options.incomingStreamTimeout\n });\n // local database\n this.blockstore = blockstore;\n this.engine = new DecisionEngine(this.peerId, blockstore, this.network, this.stats, libp2p);\n // handle message sending\n this.wm = new WantManager(this.peerId, this.network, this.stats, libp2p);\n this.notifications = new Notifications(this.peerId);\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n get peerId() {\n return this._libp2p.peerId;\n }\n /**\n * handle messages received through the network\n */\n async _receiveMessage(peerId, incoming) {\n try {\n // Note: this allows the engine to respond to any wants in the message.\n // Processing of the blocks in the message happens below, after the\n // blocks have been added to the blockstore.\n await this.engine.messageReceived(peerId, incoming);\n }\n catch (err) {\n // Log instead of throwing an error so as to process as much as\n // possible of the message. Currently `messageReceived` does not\n // throw any errors, but this could change in the future.\n this._log('failed to receive message', incoming);\n }\n if (incoming.blocks.size === 0) {\n return;\n }\n /** @type { { cid: CID, wasWanted: boolean, data: Uint8Array }[] } */\n const received = [];\n for (const [cidStr, data] of incoming.blocks.entries()) {\n const cid = CID.parse(cidStr);\n received.push({\n wasWanted: this.wm.wantlist.contains(cid),\n cid,\n data\n });\n }\n // quickly send out cancels, reduces chances of duplicate block receives\n this.wm.cancelWants(received\n .filter(({ wasWanted }) => wasWanted)\n .map(({ cid }) => cid));\n await Promise.all(received.map(async ({ cid, wasWanted, data }) => { await this._handleReceivedBlock(peerId, cid, data, wasWanted); }));\n }\n async _handleReceivedBlock(peerId, cid, data, wasWanted) {\n this._log('received block');\n const has = await this.blockstore.has(cid);\n this._updateReceiveCounters(peerId.toString(), cid, data, has);\n if (!wasWanted) {\n return;\n }\n await this.put(cid, data);\n }\n _updateReceiveCounters(peerIdStr, cid, data, exists) {\n this.stats.push(peerIdStr, 'blocksReceived', 1);\n this.stats.push(peerIdStr, 'dataReceived', data.length);\n if (exists) {\n this.stats.push(peerIdStr, 'dupBlksReceived', 1);\n this.stats.push(peerIdStr, 'dupDataReceived', data.length);\n }\n }\n /**\n * handle errors on the receiving channel\n */\n _receiveError(err) {\n this._log.error('ReceiveError', err);\n }\n /**\n * handle new peers\n */\n _onPeerConnected(peerId) {\n this.wm.connected(peerId);\n }\n /**\n * handle peers being disconnected\n */\n _onPeerDisconnected(peerId) {\n this.wm.disconnected(peerId);\n this.engine.peerDisconnected(peerId);\n this.stats.disconnected(peerId);\n }\n enableStats() {\n this.stats.enable();\n }\n disableStats() {\n this.stats.disable();\n }\n /**\n * Return the current wantlist for a given `peerId`\n */\n wantlistForPeer(peerId, _options) {\n return this.engine.wantlistForPeer(peerId);\n }\n /**\n * Return ledger information for a given `peerId`\n */\n ledgerForPeer(peerId) {\n return this.engine.ledgerForPeer(peerId);\n }\n /**\n * Fetch a given block by cid. If the block is in the local\n * blockstore it is returned, otherwise the block is added to the wantlist and returned once another node sends it to us.\n */\n async want(cid, options = {}) {\n const fetchFromNetwork = async (cid, options) => {\n // add it to the want list - n.b. later we will abort the AbortSignal\n // so no need to remove the blocks from the wantlist after we have it\n this.wm.wantBlocks([cid], options);\n return this.notifications.wantBlock(cid, options);\n };\n let promptedNetwork = false;\n const loadOrFetchFromNetwork = async (cid, options) => {\n try {\n // have to await here as we want to handle ERR_NOT_FOUND\n const block = await this.blockstore.get(cid, options);\n return block;\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n if (!promptedNetwork) {\n promptedNetwork = true;\n this.network.findAndConnect(cid, options)\n .catch((err) => { this._log.error(err); });\n }\n // we don't have the block locally so fetch it from the network\n return await fetchFromNetwork(cid, options);\n }\n };\n // depending on implementation it's possible for blocks to come in while\n // we do the async operations to get them from the blockstore leading to\n // a race condition, so register for incoming block notifications as well\n // as trying to get it from the datastore\n const controller = new AbortController();\n const signal = anySignal([controller.signal, options.signal]);\n try {\n const block = await Promise.race([\n this.notifications.wantBlock(cid, {\n ...options,\n signal\n }),\n loadOrFetchFromNetwork(cid, {\n ...options,\n signal\n })\n ]);\n return block;\n }\n finally {\n // since we have the block we can now abort any outstanding attempts to\n // fetch it\n controller.abort();\n signal.clear();\n }\n }\n /**\n * Removes the given CIDs from the wantlist independent of any ref counts.\n *\n * This will cause all outstanding promises for a given block to reject.\n *\n * If you want to cancel the want for a block without doing that, pass an\n * AbortSignal in to `.get` or `.getMany` and abort it.\n */\n unwant(cids) {\n const cidsArray = Array.isArray(cids) ? cids : [cids];\n this.wm.unwantBlocks(cidsArray);\n cidsArray.forEach((cid) => { this.notifications.unwantBlock(cid); });\n }\n /**\n * Removes the given keys from the want list. This may cause pending promises\n * for blocks to never resolve. If you wish these promises to abort instead\n * call `unwant(cids)` instead.\n */\n cancelWants(cids) {\n this.wm.cancelWants(Array.isArray(cids) ? cids : [cids]);\n }\n /**\n * Put the given block to the underlying blockstore and\n * send it to nodes that have it in their wantlist.\n */\n async put(cid, block, _options) {\n await this.blockstore.put(cid, block);\n this.notify(cid, block);\n }\n /**\n * Put the given blocks to the underlying blockstore and\n * send it to nodes that have it them their wantlist.\n */\n async *putMany(source, options) {\n yield* this.blockstore.putMany(forEach(source, ({ cid, block }) => {\n this.notify(cid, block);\n }), options);\n }\n /**\n * Sends notifications about the arrival of a block\n */\n notify(cid, block, options = {}) {\n this.notifications.hasBlock(cid, block);\n this.engine.receivedBlocks([{ cid, block }]);\n // Note: Don't wait for provide to finish before returning\n this.network.provide(cid, options).catch((err) => {\n this._log.error('Failed to provide: %s', err.message);\n });\n }\n /**\n * Get the current list of wants\n */\n getWantlist() {\n return this.wm.wantlist.entries();\n }\n /**\n * Get the current list of partners\n */\n get peers() {\n return this.engine.peers();\n }\n /**\n * Start the bitswap node\n */\n async start() {\n this.wm.start();\n await this.network.start();\n this.engine.start();\n this.started = true;\n }\n /**\n * Stop the bitswap node\n */\n async stop() {\n this.stats.stop();\n this.wm.stop();\n await this.network.stop();\n this.engine.stop();\n this.started = false;\n }\n}\n//# sourceMappingURL=bitswap.js.map","/**\n * @packageDocumentation\n *\n * This module implements the [Bitswap protocol](https://docs.ipfs.tech/concepts/bitswap/) in TypeScript.\n */\nimport { DefaultBitswap } from './bitswap.js';\nexport const createBitswap = (libp2p, blockstore, options = {}) => {\n return new DefaultBitswap(libp2p, blockstore, options);\n};\n//# sourceMappingURL=index.js.map","import { createBitswap } from 'ipfs-bitswap';\nclass BitswapBlockBroker {\n bitswap;\n started;\n constructor(components, init = {}) {\n const { libp2p, blockstore, hashers } = components;\n this.bitswap = createBitswap(libp2p, blockstore, {\n hashLoader: {\n getHasher: async (codecOrName) => {\n const hasher = hashers.find(hasher => {\n return hasher.code === codecOrName || hasher.name === codecOrName;\n });\n if (hasher != null) {\n return hasher;\n }\n throw new Error(`Could not load hasher for code/name \"${codecOrName}\"`);\n }\n },\n ...init\n });\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n async start() {\n await this.bitswap.start();\n this.started = true;\n }\n async stop() {\n await this.bitswap.stop();\n this.started = false;\n }\n announce(cid, block, options) {\n this.bitswap.notify(cid, block, options);\n }\n async retrieve(cid, { validateFn, ...options } = {}) {\n return this.bitswap.want(cid, options);\n }\n}\n/**\n * A helper factory for users who want to override Helia `blockBrokers` but\n * still want to use the default `BitswapBlockBroker`.\n */\nexport function bitswap(init = {}) {\n return (components) => new BitswapBlockBroker(components, init);\n}\n//# sourceMappingURL=bitswap.js.map","/**\n * A `TrustlessGateway` keeps track of the number of attempts, errors, and\n * successes for a given gateway url so that we can prioritize gateways that\n * have been more reliable in the past, and ensure that requests are distributed\n * across all gateways within a given `TrustlessGatewayBlockBroker` instance.\n */\nexport class TrustlessGateway {\n url;\n /**\n * The number of times this gateway has been attempted to be used to fetch a\n * block. This includes successful, errored, and aborted attempts. By counting\n * even aborted attempts, slow gateways that are out-raced by others will be\n * considered less reliable.\n */\n #attempts = 0;\n /**\n * The number of times this gateway has errored while attempting to fetch a\n * block. This includes `response.ok === false` and any other errors that\n * throw while attempting to fetch a block. This does not include aborted\n * attempts.\n */\n #errors = 0;\n /**\n * The number of times this gateway has returned an invalid block. A gateway\n * that returns the wrong blocks for a CID should be considered for removal\n * from the list of gateways to fetch blocks from.\n */\n #invalidBlocks = 0;\n /**\n * The number of times this gateway has successfully fetched a block.\n */\n #successes = 0;\n constructor(url) {\n this.url = url instanceof URL ? url : new URL(url);\n }\n /**\n * Fetch a raw block from `this.url` following the specification defined at\n * https://specs.ipfs.tech/http-gateways/trustless-gateway/\n */\n async getRawBlock(cid, signal) {\n const gwUrl = this.url;\n gwUrl.pathname = `/ipfs/${cid.toString()}`;\n // necessary as not every gateway supports dag-cbor, but every should support\n // sending raw block as-is\n gwUrl.search = '?format=raw';\n if (signal?.aborted === true) {\n throw new Error(`Signal to fetch raw block for CID ${cid} from gateway ${this.url} was aborted prior to fetch`);\n }\n try {\n this.#attempts++;\n const res = await fetch(gwUrl.toString(), {\n signal,\n headers: {\n // also set header, just in case ?format= is filtered out by some\n // reverse proxy\n Accept: 'application/vnd.ipld.raw'\n },\n cache: 'force-cache'\n });\n if (!res.ok) {\n this.#errors++;\n throw new Error(`unable to fetch raw block for CID ${cid} from gateway ${this.url}`);\n }\n this.#successes++;\n return new Uint8Array(await res.arrayBuffer());\n }\n catch (cause) {\n // @ts-expect-error - TS thinks signal?.aborted can only be false now\n // because it was checked for true above.\n if (signal?.aborted === true) {\n throw new Error(`fetching raw block for CID ${cid} from gateway ${this.url} was aborted`);\n }\n this.#errors++;\n throw new Error(`unable to fetch raw block for CID ${cid}`);\n }\n }\n /**\n * Encapsulate the logic for determining whether a gateway is considered\n * reliable, for prioritization. This is based on the number of successful attempts made\n * and the number of errors encountered.\n *\n * Unused gateways have 100% reliability; They will be prioritized over\n * gateways with a 100% success rate to ensure that we attempt all gateways.\n */\n reliability() {\n /**\n * if we have never tried to use this gateway, it is considered the most\n * reliable until we determine otherwise (prioritize unused gateways)\n */\n if (this.#attempts === 0) {\n return 1;\n }\n if (this.#invalidBlocks > 0) {\n // this gateway may not be trustworthy..\n return -Infinity;\n }\n /**\n * We have attempted the gateway, so we need to calculate the reliability\n * based on the number of attempts, errors, and successes. Gateways that\n * return a single error should drop their reliability score more than a\n * single success increases it.\n *\n * Play around with the below reliability function at https://www.desmos.com/calculator/d6hfhf5ukm\n */\n return this.#successes / (this.#attempts + (this.#errors * 3));\n }\n /**\n * Increment the number of invalid blocks returned by this gateway.\n */\n incrementInvalidBlocks() {\n this.#invalidBlocks++;\n }\n}\n//# sourceMappingURL=trustless-gateway.js.map","import { TrustlessGateway } from './trustless-gateway.js';\nimport { DEFAULT_TRUSTLESS_GATEWAYS } from './index.js';\n/**\n * A class that accepts a list of trustless gateways that are queried\n * for blocks.\n */\nexport class TrustlessGatewayBlockBroker {\n gateways;\n log;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('helia:trustless-gateway-block-broker');\n this.gateways = (init.gateways ?? DEFAULT_TRUSTLESS_GATEWAYS)\n .map((gatewayOrUrl) => {\n return new TrustlessGateway(gatewayOrUrl);\n });\n }\n async retrieve(cid, options = {}) {\n // Loop through the gateways until we get a block or run out of gateways\n // TODO: switch to toSorted when support is better\n const sortedGateways = this.gateways.sort((a, b) => b.reliability() - a.reliability());\n const aggregateErrors = [];\n for (const gateway of sortedGateways) {\n this.log('getting block for %c from %s', cid, gateway.url);\n try {\n const block = await gateway.getRawBlock(cid, options.signal);\n this.log.trace('got block for %c from %s', cid, gateway.url);\n try {\n await options.validateFn?.(block);\n }\n catch (err) {\n this.log.error('failed to validate block for %c from %s', cid, gateway.url, err);\n gateway.incrementInvalidBlocks();\n throw new Error(`unable to validate block for CID ${cid} from gateway ${gateway.url}`);\n }\n return block;\n }\n catch (err) {\n this.log.error('failed to get block for %c from %s', cid, gateway.url, err);\n if (err instanceof Error) {\n aggregateErrors.push(err);\n }\n else {\n aggregateErrors.push(new Error(`unable to fetch raw block for CID ${cid} from gateway ${gateway.url}`));\n }\n // if signal was aborted, exit the loop\n if (options.signal?.aborted === true) {\n this.log.trace('request aborted while fetching raw block for CID %c from gateway %s', cid, gateway.url);\n break;\n }\n }\n }\n throw new AggregateError(aggregateErrors, `unable to fetch raw block for CID ${cid} from any gateway`);\n }\n}\n//# sourceMappingURL=broker.js.map","import { TrustlessGatewayBlockBroker } from './broker.js';\nexport const DEFAULT_TRUSTLESS_GATEWAYS = [\n // 2023-10-03: IPNS, Origin, and Block/CAR support from https://ipfs-public-gateway-checker.on.fleek.co/\n 'https://dweb.link',\n // 2023-10-03: IPNS, Origin, and Block/CAR support from https://ipfs-public-gateway-checker.on.fleek.co/\n 'https://cf-ipfs.com',\n // 2023-10-03: IPNS, Origin, and Block/CAR support from https://ipfs-public-gateway-checker.on.fleek.co/\n 'https://4everland.io'\n];\nexport function trustlessGateway(init = {}) {\n return (components) => new TrustlessGatewayBlockBroker(components, init);\n}\n//# sourceMappingURL=index.js.map","import { CodeError, start, stop } from '@libp2p/interface';\nimport { anySignal } from 'any-signal';\nimport filter from 'it-filter';\nimport forEach from 'it-foreach';\nimport { CustomProgressEvent } from 'progress-events';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nfunction isBlockRetriever(b) {\n return typeof b.retrieve === 'function';\n}\nfunction isBlockAnnouncer(b) {\n return typeof b.announce === 'function';\n}\n/**\n * Networked storage wraps a regular blockstore - when getting blocks if the\n * blocks are not present Bitswap will be used to fetch them from network peers.\n */\nexport class NetworkedStorage {\n child;\n blockRetrievers;\n blockAnnouncers;\n hashers;\n started;\n log;\n /**\n * Create a new BlockStorage\n */\n constructor(components, init) {\n this.log = components.logger.forComponent('helia:networked-storage');\n this.child = components.blockstore;\n this.blockRetrievers = (init.blockBrokers ?? []).filter(isBlockRetriever);\n this.blockAnnouncers = (init.blockBrokers ?? []).filter(isBlockAnnouncer);\n this.hashers = init.hashers ?? [];\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n async start() {\n await start(this.child, ...new Set([...this.blockRetrievers, ...this.blockAnnouncers]));\n this.started = true;\n }\n async stop() {\n await stop(this.child, ...new Set([...this.blockRetrievers, ...this.blockAnnouncers]));\n this.started = false;\n }\n unwrap() {\n return this.child;\n }\n /**\n * Put a block to the underlying datastore\n */\n async put(cid, block, options = {}) {\n if (await this.child.has(cid)) {\n options.onProgress?.(new CustomProgressEvent('blocks:put:duplicate', cid));\n return cid;\n }\n options.onProgress?.(new CustomProgressEvent('blocks:put:providers:notify', cid));\n this.blockAnnouncers.forEach(provider => {\n provider.announce(cid, block, options);\n });\n options.onProgress?.(new CustomProgressEvent('blocks:put:blockstore:put', cid));\n return this.child.put(cid, block, options);\n }\n /**\n * Put a multiple blocks to the underlying datastore\n */\n async *putMany(blocks, options = {}) {\n const missingBlocks = filter(blocks, async ({ cid }) => {\n const has = await this.child.has(cid);\n if (has) {\n options.onProgress?.(new CustomProgressEvent('blocks:put-many:duplicate', cid));\n }\n return !has;\n });\n const notifyEach = forEach(missingBlocks, ({ cid, block }) => {\n options.onProgress?.(new CustomProgressEvent('blocks:put-many:providers:notify', cid));\n this.blockAnnouncers.forEach(provider => {\n provider.announce(cid, block, options);\n });\n });\n options.onProgress?.(new CustomProgressEvent('blocks:put-many:blockstore:put-many'));\n yield* this.child.putMany(notifyEach, options);\n }\n /**\n * Get a block by cid\n */\n async get(cid, options = {}) {\n if (options.offline !== true && !(await this.child.has(cid))) {\n // we do not have the block locally, get it from a block provider\n options.onProgress?.(new CustomProgressEvent('blocks:get:providers:get', cid));\n const block = await raceBlockRetrievers(cid, this.blockRetrievers, this.hashers, {\n ...options,\n log: this.log\n });\n options.onProgress?.(new CustomProgressEvent('blocks:get:blockstore:put', cid));\n await this.child.put(cid, block, options);\n // notify other block providers of the new block\n options.onProgress?.(new CustomProgressEvent('blocks:get:providers:notify', cid));\n this.blockAnnouncers.forEach(provider => {\n provider.announce(cid, block, options);\n });\n return block;\n }\n options.onProgress?.(new CustomProgressEvent('blocks:get:blockstore:get', cid));\n return this.child.get(cid, options);\n }\n /**\n * Get multiple blocks back from an (async) iterable of cids\n */\n async *getMany(cids, options = {}) {\n options.onProgress?.(new CustomProgressEvent('blocks:get-many:blockstore:get-many'));\n yield* this.child.getMany(forEach(cids, async (cid) => {\n if (options.offline !== true && !(await this.child.has(cid))) {\n // we do not have the block locally, get it from a block provider\n options.onProgress?.(new CustomProgressEvent('blocks:get-many:providers:get', cid));\n const block = await raceBlockRetrievers(cid, this.blockRetrievers, this.hashers, {\n ...options,\n log: this.log\n });\n options.onProgress?.(new CustomProgressEvent('blocks:get-many:blockstore:put', cid));\n await this.child.put(cid, block, options);\n // notify other block providers of the new block\n options.onProgress?.(new CustomProgressEvent('blocks:get-many:providers:notify', cid));\n this.blockAnnouncers.forEach(provider => {\n provider.announce(cid, block, options);\n });\n }\n }));\n }\n /**\n * Delete a block from the blockstore\n */\n async delete(cid, options = {}) {\n options.onProgress?.(new CustomProgressEvent('blocks:delete:blockstore:delete', cid));\n await this.child.delete(cid, options);\n }\n /**\n * Delete multiple blocks from the blockstore\n */\n async *deleteMany(cids, options = {}) {\n options.onProgress?.(new CustomProgressEvent('blocks:delete-many:blockstore:delete-many'));\n yield* this.child.deleteMany((async function* () {\n for await (const cid of cids) {\n yield cid;\n }\n }()), options);\n }\n async has(cid, options = {}) {\n return this.child.has(cid, options);\n }\n async *getAll(options = {}) {\n options.onProgress?.(new CustomProgressEvent('blocks:get-all:blockstore:get-many'));\n yield* this.child.getAll(options);\n }\n}\nexport const getCidBlockVerifierFunction = (cid, hashers) => {\n const hasher = hashers.find(hasher => hasher.code === cid.multihash.code);\n if (hasher == null) {\n throw new CodeError(`No hasher configured for multihash code 0x${cid.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`, 'ERR_UNKNOWN_HASH_ALG');\n }\n return async (block) => {\n // verify block\n const hash = await hasher.digest(block);\n if (!uint8ArrayEquals(hash.digest, cid.multihash.digest)) {\n // if a hash mismatch occurs for a TrustlessGatewayBlockBroker, we should try another gateway\n throw new CodeError('Hash of downloaded block did not match multihash from passed CID', 'ERR_HASH_MISMATCH');\n }\n };\n};\n/**\n * Race block providers cancelling any pending requests once the block has been\n * found.\n */\nasync function raceBlockRetrievers(cid, providers, hashers, options) {\n const validateFn = getCidBlockVerifierFunction(cid, hashers);\n const controller = new AbortController();\n const signal = anySignal([controller.signal, options.signal]);\n try {\n return await Promise.any(providers.map(async (provider) => {\n try {\n let blocksWereValidated = false;\n const block = await provider.retrieve(cid, {\n ...options,\n signal,\n validateFn: async (block) => {\n await validateFn(block);\n blocksWereValidated = true;\n }\n });\n if (!blocksWereValidated) {\n // the blockBroker either did not throw an error when attempting to validate the block\n // or did not call the validateFn at all. We should validate the block ourselves\n await validateFn(block);\n }\n return block;\n }\n catch (err) {\n options.log.error('could not retrieve verified block for %c', cid, err);\n throw err;\n }\n }));\n }\n finally {\n signal.clear();\n }\n}\n//# sourceMappingURL=networked-storage.js.map","/**\n * @packageDocumentation\n *\n * Race an event against an AbortSignal, taking care to remove any event\n * listeners that were added.\n *\n * @example Getting started\n *\n * ```TypeScript\n * import { raceEvent } from 'race-event'\n *\n * const controller = new AbortController()\n * const emitter = new EventTarget()\n *\n * setTimeout(() => {\n * controller.abort()\n * }, 500)\n *\n * setTimeout(() => {\n * // too late\n * emitter.dispatchEvent(new CustomEvent('event'))\n * }, 1000)\n *\n * // throws an AbortError\n * const resolve = await raceEvent(emitter, 'event', controller.signal)\n * ```\n *\n * @example Aborting the promise with an error event\n *\n * ```TypeScript\n * import { raceEvent } from 'race-event'\n *\n * const emitter = new EventTarget()\n *\n * setTimeout(() => {\n * emitter.dispatchEvent(new CustomEvent('failure', {\n * detail: new Error('Oh no!')\n * }))\n * }, 1000)\n *\n * // throws 'Oh no!' error\n * const resolve = await raceEvent(emitter, 'success', AbortSignal.timeout(5000), {\n * errorEvent: 'failure'\n * })\n * ```\n *\n * @example Customising the thrown AbortError\n *\n * The error message and `.code` property of the thrown `AbortError` can be\n * specified by passing options:\n *\n * ```TypeScript\n * import { raceEvent } from 'race-event'\n *\n * const controller = new AbortController()\n * const emitter = new EventTarget()\n *\n * setTimeout(() => {\n * controller.abort()\n * }, 500)\n *\n * // throws a Error: Oh no!\n * const resolve = await raceEvent(emitter, 'event', controller.signal, {\n * errorMessage: 'Oh no!',\n * errorCode: 'ERR_OH_NO'\n * })\n * ```\n *\n * @example Only resolving on specific events\n *\n * Where multiple events with the same type are emitted, a `filter` function can\n * be passed to only resolve on one of them:\n *\n * ```TypeScript\n * import { raceEvent } from 'race-event'\n *\n * const controller = new AbortController()\n * const emitter = new EventTarget()\n *\n * // throws a Error: Oh no!\n * const resolve = await raceEvent(emitter, 'event', controller.signal, {\n * filter: (evt: Event) => {\n * return evt.detail.foo === 'bar'\n * }\n * })\n * ```\n *\n * @example Terminating early by throwing from the filter\n *\n * You can cause listening for the event to cease and all event listeners to be\n * removed by throwing from the filter:\n *\n * ```TypeScript\n * import { raceEvent } from 'race-event'\n *\n * const controller = new AbortController()\n * const emitter = new EventTarget()\n *\n * // throws Error: Cannot continue\n * const resolve = await raceEvent(emitter, 'event', controller.signal, {\n * filter: (evt) => {\n * if (...reasons) {\n * throw new Error('Cannot continue')\n * }\n *\n * return true\n * }\n * })\n * ```\n */\n/**\n * An abort error class that extends error\n */\nexport class AbortError extends Error {\n type;\n code;\n constructor(message, code) {\n super(message ?? 'The operation was aborted');\n this.type = 'aborted';\n this.name = 'AbortError';\n this.code = code ?? 'ABORT_ERR';\n }\n}\n/**\n * Race a promise against an abort signal\n */\nexport async function raceEvent(emitter, eventName, signal, opts) {\n // create the error here so we have more context in the stack trace\n const error = new AbortError(opts?.errorMessage, opts?.errorCode);\n if (signal?.aborted === true) {\n return Promise.reject(error);\n }\n return new Promise((resolve, reject) => {\n function removeListeners() {\n signal?.removeEventListener('abort', abortListener);\n emitter.removeEventListener(eventName, eventListener);\n if (opts?.errorEvent != null) {\n emitter.removeEventListener(opts.errorEvent, errorEventListener);\n }\n }\n const eventListener = (evt) => {\n try {\n if (opts?.filter?.(evt) === false) {\n return;\n }\n }\n catch (err) {\n removeListeners();\n reject(err);\n return;\n }\n removeListeners();\n resolve(evt);\n };\n const errorEventListener = (evt) => {\n removeListeners();\n reject(evt.detail);\n };\n const abortListener = () => {\n removeListeners();\n reject(error);\n };\n signal?.addEventListener('abort', abortListener);\n emitter.addEventListener(eventName, eventListener);\n if (opts?.errorEvent != null) {\n emitter.addEventListener(opts.errorEvent, errorEventListener);\n }\n });\n}\n//# sourceMappingURL=index.js.map","/**\n * An abort error class that extends error\n */\nexport class AbortError extends Error {\n type;\n code;\n constructor(message, code, name) {\n super(message ?? 'The operation was aborted');\n this.type = 'aborted';\n this.name = name ?? 'AbortError';\n this.code = code ?? 'ABORT_ERR';\n }\n}\n/**\n * Race a promise against an abort signal\n */\nexport async function raceSignal(promise, signal, opts) {\n if (signal == null) {\n return promise;\n }\n if (signal.aborted) {\n return Promise.reject(new AbortError(opts?.errorMessage, opts?.errorCode, opts?.errorName));\n }\n let listener;\n // create the error here so we have more context in the stack trace\n const error = new AbortError(opts?.errorMessage, opts?.errorCode, opts?.errorName);\n try {\n return await Promise.race([\n promise,\n new Promise((resolve, reject) => {\n listener = () => {\n reject(error);\n };\n signal.addEventListener('abort', listener);\n })\n ]);\n }\n finally {\n if (listener != null) {\n signal.removeEventListener('abort', listener);\n }\n }\n}\n//# sourceMappingURL=index.js.map","import { AbortError } from '@libp2p/interface';\nimport pDefer from 'p-defer';\nexport class JobRecipient {\n deferred;\n signal;\n constructor(signal) {\n this.signal = signal;\n this.deferred = pDefer();\n this.onAbort = this.onAbort.bind(this);\n this.signal?.addEventListener('abort', this.onAbort);\n }\n onAbort() {\n this.deferred.reject(this.signal?.reason ?? new AbortError());\n }\n cleanup() {\n this.signal?.removeEventListener('abort', this.onAbort);\n }\n}\n//# sourceMappingURL=recipient.js.map","import { AbortError, setMaxListeners } from '@libp2p/interface';\nimport { raceSignal } from 'race-signal';\nimport { JobRecipient } from './recipient.js';\n/**\n * Returns a random string\n */\nfunction randomId() {\n return `${(parseInt(String(Math.random() * 1e9), 10)).toString()}${Date.now()}`;\n}\nexport class Job {\n id;\n fn;\n options;\n recipients;\n status;\n timeline;\n controller;\n constructor(fn, options) {\n this.id = randomId();\n this.status = 'queued';\n this.fn = fn;\n this.options = options;\n this.recipients = [];\n this.timeline = {\n created: Date.now()\n };\n this.controller = new AbortController();\n setMaxListeners(Infinity, this.controller.signal);\n this.onAbort = this.onAbort.bind(this);\n }\n abort(err) {\n this.controller.abort(err);\n }\n onAbort() {\n const allAborted = this.recipients.reduce((acc, curr) => {\n return acc && (curr.signal?.aborted === true);\n }, true);\n // if all recipients have aborted the job, actually abort the job\n if (allAborted) {\n this.controller.abort(new AbortError());\n this.cleanup();\n }\n }\n async join(options = {}) {\n const recipient = new JobRecipient(options.signal);\n this.recipients.push(recipient);\n options.signal?.addEventListener('abort', this.onAbort);\n return recipient.deferred.promise;\n }\n async run() {\n this.status = 'running';\n this.timeline.started = Date.now();\n try {\n this.controller.signal.throwIfAborted();\n const result = await raceSignal(this.fn({\n ...(this.options ?? {}),\n signal: this.controller.signal\n }), this.controller.signal);\n this.recipients.forEach(recipient => {\n recipient.deferred.resolve(result);\n });\n this.status = 'complete';\n }\n catch (err) {\n this.recipients.forEach(recipient => {\n recipient.deferred.reject(err);\n });\n this.status = 'errored';\n }\n finally {\n this.timeline.finished = Date.now();\n this.cleanup();\n }\n }\n cleanup() {\n this.recipients.forEach(recipient => {\n recipient.cleanup();\n recipient.signal?.removeEventListener('abort', this.onAbort);\n });\n }\n}\n//# sourceMappingURL=job.js.map","import { AbortError, CodeError, TypedEventEmitter } from '@libp2p/interface';\nimport { pushable } from 'it-pushable';\nimport { raceEvent } from 'race-event';\nimport { Job } from './job.js';\n/**\n * Heavily influence by `p-queue` with the following differences:\n *\n * 1. Items remain at the head of the queue while they are running so `queue.size` includes `queue.pending` items - this is so interested parties can join the results of a queue item while it is running\n * 2. The options for a job are stored separately to the job in order for them to be modified while they are still in the queue\n */\nexport class Queue extends TypedEventEmitter {\n concurrency;\n queue;\n pending;\n sort;\n constructor(init = {}) {\n super();\n this.concurrency = init.concurrency ?? Number.POSITIVE_INFINITY;\n this.pending = 0;\n if (init.metricName != null) {\n init.metrics?.registerMetricGroup(init.metricName, {\n calculate: () => {\n return {\n size: this.queue.length,\n running: this.pending,\n queued: this.queue.length - this.pending\n };\n }\n });\n }\n this.sort = init.sort;\n this.queue = [];\n }\n tryToStartAnother() {\n if (this.size === 0) {\n // do this in the microtask queue so all job recipients receive the\n // result before the \"empty\" event fires\n queueMicrotask(() => {\n this.safeDispatchEvent('empty');\n });\n if (this.running === 0) {\n // do this in the microtask queue so all job recipients receive the\n // result before the \"idle\" event fires\n queueMicrotask(() => {\n this.safeDispatchEvent('idle');\n });\n }\n return false;\n }\n if (this.pending < this.concurrency) {\n let job;\n for (const j of this.queue) {\n if (j.status === 'queued') {\n job = j;\n break;\n }\n }\n if (job == null) {\n return false;\n }\n this.safeDispatchEvent('active');\n this.pending++;\n void job.run()\n .finally(() => {\n // remove the job from the queue\n for (let i = 0; i < this.queue.length; i++) {\n if (this.queue[i] === job) {\n this.queue.splice(i, 1);\n break;\n }\n }\n this.pending--;\n this.tryToStartAnother();\n this.safeDispatchEvent('next');\n });\n return true;\n }\n return false;\n }\n enqueue(job) {\n this.queue.push(job);\n if (this.sort != null) {\n this.queue.sort(this.sort);\n }\n }\n /**\n * Adds a sync or async task to the queue. Always returns a promise.\n */\n async add(fn, options) {\n options?.signal?.throwIfAborted();\n const job = new Job(fn, options);\n this.enqueue(job);\n this.safeDispatchEvent('add');\n this.tryToStartAnother();\n return job.join(options)\n .then(result => {\n this.safeDispatchEvent('completed', { detail: result });\n this.safeDispatchEvent('success', { detail: { job, result } });\n return result;\n })\n .catch(err => {\n if (job.status === 'queued') {\n // job was aborted before it started - remove the job from the queue\n for (let i = 0; i < this.queue.length; i++) {\n if (this.queue[i] === job) {\n this.queue.splice(i, 1);\n break;\n }\n }\n }\n this.safeDispatchEvent('error', { detail: err });\n this.safeDispatchEvent('failure', { detail: { job, error: err } });\n throw err;\n });\n }\n /**\n * Clear the queue\n */\n clear() {\n this.queue.splice(0, this.queue.length);\n }\n /**\n * Abort all jobs in the queue and clear it\n */\n abort() {\n this.queue.forEach(job => {\n job.abort(new AbortError());\n });\n this.clear();\n }\n /**\n * Can be called multiple times. Useful if you for example add additional items at a later time.\n *\n * @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty(options) {\n // Instantly resolve if the queue is empty\n if (this.size === 0) {\n return;\n }\n await raceEvent(this, 'empty', options?.signal);\n }\n /**\n * @returns A promise that settles when the queue size is less than the given\n * limit: `queue.size < limit`.\n *\n * If you want to avoid having the queue grow beyond a certain size you can\n * `await queue.onSizeLessThan()` before adding a new item.\n *\n * Note that this only limits the number of items waiting to start. There\n * could still be up to `concurrency` jobs already running that this call does\n * not include in its calculation.\n */\n async onSizeLessThan(limit, options) {\n // Instantly resolve if the queue is empty.\n if (this.size < limit) {\n return;\n }\n await raceEvent(this, 'next', options?.signal, {\n filter: () => this.size < limit\n });\n }\n /**\n * The difference with `.onEmpty` is that `.onIdle` guarantees that all work\n * from the queue has finished. `.onEmpty` merely signals that the queue is\n * empty, but it could mean that some promises haven't completed yet.\n *\n * @returns A promise that settles when the queue becomes empty, and all\n * promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle(options) {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.pending === 0 && this.size === 0) {\n return;\n }\n await raceEvent(this, 'idle', options?.signal);\n }\n /**\n * Size of the queue including running items\n */\n get size() {\n return this.queue.length;\n }\n /**\n * The number of queued items waiting to run.\n */\n get queued() {\n return this.queue.length - this.pending;\n }\n /**\n * The number of items currently running.\n */\n get running() {\n return this.pending;\n }\n /**\n * Returns an async generator that makes it easy to iterate over the results\n * of jobs added to the queue.\n *\n * The generator will end when the queue becomes idle, that is there are no\n * jobs running and no jobs that have yet to run.\n *\n * If you need to keep the queue open indefinitely, consider using it-pushable\n * instead.\n */\n async *toGenerator(options) {\n options?.signal?.throwIfAborted();\n const stream = pushable({\n objectMode: true\n });\n const cleanup = (err) => {\n if (err != null) {\n this.abort();\n }\n else {\n this.clear();\n }\n stream.end(err);\n };\n const onQueueJobComplete = (evt) => {\n if (evt.detail != null) {\n stream.push(evt.detail);\n }\n };\n const onQueueError = (evt) => {\n cleanup(evt.detail);\n };\n const onQueueIdle = () => {\n cleanup();\n };\n // clear the queue and throw if the query is aborted\n const onSignalAbort = () => {\n cleanup(new CodeError('Queue aborted', 'ERR_QUEUE_ABORTED'));\n };\n // add listeners\n this.addEventListener('completed', onQueueJobComplete);\n this.addEventListener('error', onQueueError);\n this.addEventListener('idle', onQueueIdle);\n options?.signal?.addEventListener('abort', onSignalAbort);\n try {\n yield* stream;\n }\n finally {\n // remove listeners\n this.removeEventListener('completed', onQueueJobComplete);\n this.removeEventListener('error', onQueueError);\n this.removeEventListener('idle', onQueueIdle);\n options?.signal?.removeEventListener('abort', onSignalAbort);\n // empty the queue for when the user has broken out of a loop early\n cleanup();\n }\n }\n}\n//# sourceMappingURL=index.js.map","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base36.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 0x0200;\nexport function encode(node) {\n return textEncoder.encode(JSON.stringify(node));\n}\nexport function decode(data) {\n return JSON.parse(textDecoder.decode(data));\n}\n//# sourceMappingURL=json.js.map","import { coerce } from '../bytes.js';\nexport const name = 'raw';\nexport const code = 0x55;\nexport function encode(node) {\n return coerce(node);\n}\nexport function decode(data) {\n return coerce(data);\n}\n//# sourceMappingURL=raw.js.map","/* eslint max-depth: [\"error\", 7] */\nimport * as dagCbor from '@ipld/dag-cbor';\nimport * as dagJson from '@ipld/dag-json';\nimport * as dagPb from '@ipld/dag-pb';\nimport * as cborg from 'cborg';\nimport { Type, Token } from 'cborg';\nimport * as cborgJson from 'cborg/json';\nimport { CID } from 'multiformats';\nimport { base64 } from 'multiformats/bases/base64';\nimport * as json from 'multiformats/codecs/json';\nimport * as raw from 'multiformats/codecs/raw';\n/**\n * Dag walker for dag-pb CIDs\n */\nexport const dagPbWalker = {\n codec: dagPb.code,\n *walk(block) {\n const node = dagPb.decode(block);\n yield* node.Links.map(l => l.Hash);\n }\n};\n/**\n * Dag walker for raw CIDs\n */\nexport const rawWalker = {\n codec: raw.code,\n *walk() {\n // no embedded CIDs in a raw block\n }\n};\n// https://github.com/ipfs/go-ipfs/issues/3570#issuecomment-273931692\nconst CID_TAG = 42;\n/**\n * Dag walker for dag-cbor CIDs. Does not actually use dag-cbor since\n * all we are interested in is extracting the the CIDs from the block\n * so we can just use cborg for that.\n */\nexport const dagCborWalker = {\n codec: dagCbor.code,\n *walk(block) {\n const cids = [];\n const tags = [];\n tags[CID_TAG] = (bytes) => {\n if (bytes[0] !== 0) {\n throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00');\n }\n const cid = CID.decode(bytes.subarray(1)); // ignore leading 0x00\n cids.push(cid);\n return cid;\n };\n cborg.decode(block, {\n tags\n });\n yield* cids;\n }\n};\n/**\n * Borrowed from @ipld/dag-json\n */\nclass DagJsonTokenizer extends cborgJson.Tokenizer {\n tokenBuffer;\n constructor(data, options) {\n super(data, options);\n this.tokenBuffer = [];\n }\n done() {\n return this.tokenBuffer.length === 0 && super.done();\n }\n _next() {\n if (this.tokenBuffer.length > 0) {\n // @ts-expect-error https://github.com/Microsoft/TypeScript/issues/30406\n return this.tokenBuffer.pop();\n }\n return super.next();\n }\n /**\n * Implements rules outlined in https://github.com/ipld/specs/pull/356\n */\n next() {\n const token = this._next();\n if (token.type === Type.map) {\n const keyToken = this._next();\n if (keyToken.type === Type.string && keyToken.value === '/') {\n const valueToken = this._next();\n if (valueToken.type === Type.string) { // *must* be a CID\n const breakToken = this._next(); // swallow the end-of-map token\n if (breakToken.type !== Type.break) {\n throw new Error('Invalid encoded CID form');\n }\n this.tokenBuffer.push(valueToken); // CID.parse will pick this up after our tag token\n return new Token(Type.tag, 42, 0);\n }\n if (valueToken.type === Type.map) {\n const innerKeyToken = this._next();\n if (innerKeyToken.type === Type.string && innerKeyToken.value === 'bytes') {\n const innerValueToken = this._next();\n if (innerValueToken.type === Type.string) { // *must* be Bytes\n for (let i = 0; i < 2; i++) {\n const breakToken = this._next(); // swallow two end-of-map tokens\n if (breakToken.type !== Type.break) {\n throw new Error('Invalid encoded Bytes form');\n }\n }\n const bytes = base64.decode(`m${innerValueToken.value}`);\n return new Token(Type.bytes, bytes, innerValueToken.value.length);\n }\n this.tokenBuffer.push(innerValueToken); // bail\n }\n this.tokenBuffer.push(innerKeyToken); // bail\n }\n this.tokenBuffer.push(valueToken); // bail\n }\n this.tokenBuffer.push(keyToken); // bail\n }\n return token;\n }\n}\n/**\n * Dag walker for dag-json CIDs. Does not actually use dag-json since\n * all we are interested in is extracting the the CIDs from the block\n * so we can just use cborg/json for that.\n */\nexport const dagJsonWalker = {\n codec: dagJson.code,\n *walk(block) {\n const cids = [];\n const tags = [];\n tags[CID_TAG] = (string) => {\n const cid = CID.parse(string);\n cids.push(cid);\n return cid;\n };\n cborgJson.decode(block, {\n tags,\n tokenizer: new DagJsonTokenizer(block, {\n tags,\n allowIndefinite: true,\n allowUndefined: true,\n allowNaN: true,\n allowInfinity: true,\n allowBigInt: true,\n strict: false,\n rejectDuplicateMapKeys: false\n })\n });\n yield* cids;\n }\n};\n/**\n * Dag walker for json CIDs. JSON has no facility for linking to\n * external blocks so the walker is a no-op.\n */\nexport const jsonWalker = {\n codec: json.code,\n *walk() { }\n};\n//# sourceMappingURL=dag-walkers.js.map","import { Queue } from '@libp2p/utils/queue';\nimport * as cborg from 'cborg';\nimport { Key } from 'interface-datastore';\nimport { base36 } from 'multiformats/bases/base36';\nimport { CID } from 'multiformats/cid';\nimport { CustomProgressEvent } from 'progress-events';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { dagCborWalker, dagJsonWalker, dagPbWalker, jsonWalker, rawWalker } from './utils/dag-walkers.js';\nconst DEFAULT_DAG_WALKERS = [\n rawWalker,\n dagPbWalker,\n dagCborWalker,\n dagJsonWalker,\n jsonWalker\n];\nconst DATASTORE_PIN_PREFIX = '/pin/';\nconst DATASTORE_BLOCK_PREFIX = '/pinned-block/';\nconst DATASTORE_ENCODING = base36;\nconst DAG_WALK_QUEUE_CONCURRENCY = 1;\nfunction toDSKey(cid) {\n if (cid.version === 0) {\n cid = cid.toV1();\n }\n return new Key(`${DATASTORE_PIN_PREFIX}${cid.toString(DATASTORE_ENCODING)}`);\n}\nexport class PinsImpl {\n datastore;\n blockstore;\n dagWalkers;\n constructor(datastore, blockstore, dagWalkers) {\n this.datastore = datastore;\n this.blockstore = blockstore;\n this.dagWalkers = {};\n [...DEFAULT_DAG_WALKERS, ...dagWalkers].forEach(dagWalker => {\n this.dagWalkers[dagWalker.codec] = dagWalker;\n });\n }\n async *add(cid, options = {}) {\n const pinKey = toDSKey(cid);\n if (await this.datastore.has(pinKey)) {\n throw new Error('Already pinned');\n }\n const depth = Math.round(options.depth ?? Infinity);\n if (depth < 0) {\n throw new Error('Depth must be greater than or equal to 0');\n }\n // use a queue to walk the DAG instead of recursion so we can traverse very large DAGs\n const queue = new Queue({\n concurrency: DAG_WALK_QUEUE_CONCURRENCY\n });\n for await (const childCid of this.#walkDag(cid, queue, {\n ...options,\n depth\n })) {\n await this.#updatePinnedBlock(childCid, (pinnedBlock) => {\n // do not update pinned block if this block is already pinned by this CID\n if (pinnedBlock.pinnedBy.find(c => uint8ArrayEquals(c, cid.bytes)) != null) {\n return false;\n }\n pinnedBlock.pinCount++;\n pinnedBlock.pinnedBy.push(cid.bytes);\n return true;\n }, options);\n yield childCid;\n }\n const pin = {\n depth,\n metadata: options.metadata ?? {}\n };\n await this.datastore.put(pinKey, cborg.encode(pin), options);\n }\n /**\n * Walk a DAG in an iterable fashion\n */\n async *#walkDag(cid, queue, options) {\n if (options.depth === -1) {\n return;\n }\n const dagWalker = this.dagWalkers[cid.code];\n if (dagWalker == null) {\n throw new Error(`No dag walker found for cid codec ${cid.code}`);\n }\n const block = await this.blockstore.get(cid, options);\n yield cid;\n // walk dag, ensure all blocks are present\n for await (const cid of dagWalker.walk(block)) {\n yield* await queue.add(async () => {\n return this.#walkDag(cid, queue, {\n ...options,\n depth: options.depth - 1\n });\n });\n }\n }\n /**\n * Update the pin count for the CID\n */\n async #updatePinnedBlock(cid, withPinnedBlock, options) {\n const blockKey = new Key(`${DATASTORE_BLOCK_PREFIX}${DATASTORE_ENCODING.encode(cid.multihash.bytes)}`);\n let pinnedBlock = {\n pinCount: 0,\n pinnedBy: []\n };\n try {\n pinnedBlock = cborg.decode(await this.datastore.get(blockKey, options));\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n const shouldContinue = withPinnedBlock(pinnedBlock);\n if (!shouldContinue) {\n return;\n }\n if (pinnedBlock.pinCount === 0) {\n if (await this.datastore.has(blockKey)) {\n await this.datastore.delete(blockKey);\n return;\n }\n }\n await this.datastore.put(blockKey, cborg.encode(pinnedBlock), options);\n options.onProgress?.(new CustomProgressEvent('helia:pin:add', cid));\n }\n async *rm(cid, options = {}) {\n const pinKey = toDSKey(cid);\n const buf = await this.datastore.get(pinKey, options);\n const pin = cborg.decode(buf);\n await this.datastore.delete(pinKey, options);\n // use a queue to walk the DAG instead of recursion so we can traverse very large DAGs\n const queue = new Queue({\n concurrency: DAG_WALK_QUEUE_CONCURRENCY\n });\n for await (const childCid of this.#walkDag(cid, queue, {\n ...options,\n depth: pin.depth\n })) {\n await this.#updatePinnedBlock(childCid, (pinnedBlock) => {\n pinnedBlock.pinCount--;\n pinnedBlock.pinnedBy = pinnedBlock.pinnedBy.filter(c => uint8ArrayEquals(c, cid.bytes));\n return true;\n }, {\n ...options,\n depth: pin.depth\n });\n yield childCid;\n }\n }\n async *ls(options = {}) {\n for await (const { key, value } of this.datastore.query({\n prefix: DATASTORE_PIN_PREFIX + (options.cid != null ? `${options.cid.toString(base36)}` : '')\n }, options)) {\n const cid = CID.parse(key.toString().substring(5), base36);\n const pin = cborg.decode(value);\n yield {\n cid,\n ...pin\n };\n }\n }\n async isPinned(cid, options = {}) {\n const blockKey = new Key(`${DATASTORE_BLOCK_PREFIX}${DATASTORE_ENCODING.encode(cid.multihash.bytes)}`);\n return this.datastore.has(blockKey, options);\n }\n}\n//# sourceMappingURL=pins.js.map","const events = {};\nconst observable = (worker) => {\n worker.addEventListener('message', (event) => {\n observable.dispatchEvent('message', worker, event);\n });\n if (worker.port != null) {\n worker.port.addEventListener('message', (event) => {\n observable.dispatchEvent('message', worker, event);\n });\n }\n};\nobservable.addEventListener = (type, fn) => {\n if (events[type] == null) {\n events[type] = [];\n }\n events[type].push(fn);\n};\nobservable.removeEventListener = (type, fn) => {\n if (events[type] == null) {\n return;\n }\n events[type] = events[type]\n .filter(listener => listener === fn);\n};\nobservable.dispatchEvent = function (type, worker, event) {\n if (events[type] == null) {\n return;\n }\n events[type].forEach(fn => fn(worker, event));\n};\nexport default observable;\n//# sourceMappingURL=index.js.map","export const WORKER_REQUEST_READ_LOCK = 'lock:worker:request-read';\nexport const WORKER_RELEASE_READ_LOCK = 'lock:worker:release-read';\nexport const MASTER_GRANT_READ_LOCK = 'lock:master:grant-read';\nexport const WORKER_REQUEST_WRITE_LOCK = 'lock:worker:request-write';\nexport const WORKER_RELEASE_WRITE_LOCK = 'lock:worker:release-write';\nexport const MASTER_GRANT_WRITE_LOCK = 'lock:master:grant-write';\n//# sourceMappingURL=constants.js.map","export const nanoid = (size = 21) => {\n return Math.random().toString().substring(2);\n};\n//# sourceMappingURL=utils.js.map","import observer from 'observable-webworkers';\nimport { WORKER_REQUEST_READ_LOCK, WORKER_RELEASE_READ_LOCK, MASTER_GRANT_READ_LOCK, WORKER_REQUEST_WRITE_LOCK, WORKER_RELEASE_WRITE_LOCK, MASTER_GRANT_WRITE_LOCK } from './constants.js';\nimport { nanoid } from './utils.js';\nconst handleWorkerLockRequest = (emitter, masterEvent, requestType, releaseType, grantType) => {\n return (worker, event) => {\n if (event.data.type !== requestType) {\n return;\n }\n const requestEvent = {\n type: event.data.type,\n name: event.data.name,\n identifier: event.data.identifier\n };\n emitter.dispatchEvent(new MessageEvent(masterEvent, {\n data: {\n name: requestEvent.name,\n handler: async () => {\n // grant lock to worker\n worker.postMessage({\n type: grantType,\n name: requestEvent.name,\n identifier: requestEvent.identifier\n });\n // wait for worker to finish\n await new Promise((resolve) => {\n const releaseEventListener = (event) => {\n if (event == null || event.data == null) {\n return;\n }\n const releaseEvent = {\n type: event.data.type,\n name: event.data.name,\n identifier: event.data.identifier\n };\n if (releaseEvent.type === releaseType && releaseEvent.identifier === requestEvent.identifier) {\n worker.removeEventListener('message', releaseEventListener);\n resolve();\n }\n };\n worker.addEventListener('message', releaseEventListener);\n });\n }\n }\n }));\n };\n};\nconst makeWorkerLockRequest = (name, requestType, grantType, releaseType) => {\n return async () => {\n const id = nanoid();\n globalThis.postMessage({\n type: requestType,\n identifier: id,\n name\n });\n return new Promise((resolve) => {\n const listener = (event) => {\n if (event == null || event.data == null) {\n return;\n }\n const responseEvent = {\n type: event.data.type,\n identifier: event.data.identifier\n };\n if (responseEvent.type === grantType && responseEvent.identifier === id) {\n globalThis.removeEventListener('message', listener);\n // grant lock\n resolve(() => {\n // release lock\n globalThis.postMessage({\n type: releaseType,\n identifier: id,\n name\n });\n });\n }\n };\n globalThis.addEventListener('message', listener);\n });\n };\n};\nconst defaultOptions = {\n singleProcess: false\n};\nexport default (options) => {\n options = Object.assign({}, defaultOptions, options);\n const isPrimary = Boolean(globalThis.document) || options.singleProcess;\n if (isPrimary) {\n const emitter = new EventTarget();\n observer.addEventListener('message', handleWorkerLockRequest(emitter, 'requestReadLock', WORKER_REQUEST_READ_LOCK, WORKER_RELEASE_READ_LOCK, MASTER_GRANT_READ_LOCK));\n observer.addEventListener('message', handleWorkerLockRequest(emitter, 'requestWriteLock', WORKER_REQUEST_WRITE_LOCK, WORKER_RELEASE_WRITE_LOCK, MASTER_GRANT_WRITE_LOCK));\n return emitter;\n }\n return {\n isWorker: true,\n readLock: (name) => makeWorkerLockRequest(name, WORKER_REQUEST_READ_LOCK, MASTER_GRANT_READ_LOCK, WORKER_RELEASE_READ_LOCK),\n writeLock: (name) => makeWorkerLockRequest(name, WORKER_REQUEST_WRITE_LOCK, MASTER_GRANT_WRITE_LOCK, WORKER_RELEASE_WRITE_LOCK)\n };\n};\n//# sourceMappingURL=browser.js.map","/**\n * @packageDocumentation\n *\n * - Reads occur concurrently\n * - Writes occur one at a time\n * - No reads occur while a write operation is in progress\n * - Locks can be created with different names\n * - Reads/writes can time out\n *\n * ## Usage\n *\n * ```javascript\n * import mortice from 'mortice'\n * import delay from 'delay'\n *\n * // the lock name & options objects are both optional\n * const mutex = mortice('my-lock', {\n *\n * // how long before write locks time out (default: 24 hours)\n * timeout: 30000,\n *\n * // control how many read operations are executed concurrently (default: Infinity)\n * concurrency: 5,\n *\n * // by default the the lock will be held on the main thread, set this to true if the\n * // a lock should reside on each worker (default: false)\n * singleProcess: false\n * })\n *\n * Promise.all([\n * (async () => {\n * const release = await mutex.readLock()\n *\n * try {\n * console.info('read 1')\n * } finally {\n * release()\n * }\n * })(),\n * (async () => {\n * const release = await mutex.readLock()\n *\n * try {\n * console.info('read 2')\n * } finally {\n * release()\n * }\n * })(),\n * (async () => {\n * const release = await mutex.writeLock()\n *\n * try {\n * await delay(1000)\n *\n * console.info('write 1')\n * } finally {\n * release()\n * }\n * })(),\n * (async () => {\n * const release = await mutex.readLock()\n *\n * try {\n * console.info('read 3')\n * } finally {\n * release()\n * }\n * })()\n * ])\n * ```\n *\n * read 1\n * read 2\n * \n * write 1\n * read 3\n *\n * ## Browser\n *\n * Because there's no global way to evesdrop on messages sent by Web Workers, please pass all created Web Workers to the [`observable-webworkers`](https://npmjs.org/package/observable-webworkers) module:\n *\n * ```javascript\n * // main.js\n * import mortice from 'mortice'\n * import observe from 'observable-webworkers'\n *\n * // create our lock on the main thread, it will be held here\n * const mutex = mortice()\n *\n * const worker = new Worker('worker.js')\n *\n * observe(worker)\n * ```\n *\n * ```javascript\n * // worker.js\n * import mortice from 'mortice'\n * import delay from 'delay'\n *\n * const mutex = mortice()\n *\n * let release = await mutex.readLock()\n * // read something\n * release()\n *\n * release = await mutex.writeLock()\n * // write something\n * release()\n * ```\n */\nimport PQueue from 'p-queue';\nimport pTimeout from 'p-timeout';\nimport impl from './node.js';\nconst mutexes = {};\nlet implementation;\nasync function createReleaseable(queue, options) {\n let res;\n const p = new Promise((resolve) => {\n res = resolve;\n });\n void queue.add(async () => pTimeout((async () => {\n await new Promise((resolve) => {\n res(() => {\n resolve();\n });\n });\n })(), {\n milliseconds: options.timeout\n }));\n return p;\n}\nconst createMutex = (name, options) => {\n if (implementation.isWorker === true) {\n return {\n readLock: implementation.readLock(name, options),\n writeLock: implementation.writeLock(name, options)\n };\n }\n const masterQueue = new PQueue({ concurrency: 1 });\n let readQueue;\n return {\n async readLock() {\n // If there's already a read queue, just add the task to it\n if (readQueue != null) {\n return createReleaseable(readQueue, options);\n }\n // Create a new read queue\n readQueue = new PQueue({\n concurrency: options.concurrency,\n autoStart: false\n });\n const localReadQueue = readQueue;\n // Add the task to the read queue\n const readPromise = createReleaseable(readQueue, options);\n void masterQueue.add(async () => {\n // Start the task only once the master queue has completed processing\n // any previous tasks\n localReadQueue.start();\n // Once all the tasks in the read queue have completed, remove it so\n // that the next read lock will occur after any write locks that were\n // started in the interim\n await localReadQueue.onIdle()\n .then(() => {\n if (readQueue === localReadQueue) {\n readQueue = null;\n }\n });\n });\n return readPromise;\n },\n async writeLock() {\n // Remove the read queue reference, so that any later read locks will be\n // added to a new queue that starts after this write lock has been\n // released\n readQueue = null;\n return createReleaseable(masterQueue, options);\n }\n };\n};\nconst defaultOptions = {\n name: 'lock',\n concurrency: Infinity,\n timeout: 84600000,\n singleProcess: false\n};\nexport default function createMortice(options) {\n const opts = Object.assign({}, defaultOptions, options);\n if (implementation == null) {\n implementation = impl(opts);\n if (implementation.isWorker !== true) {\n // we are master, set up worker requests\n implementation.addEventListener('requestReadLock', (event) => {\n if (mutexes[event.data.name] == null) {\n return;\n }\n void mutexes[event.data.name].readLock()\n .then(async (release) => event.data.handler().finally(() => { release(); }));\n });\n implementation.addEventListener('requestWriteLock', async (event) => {\n if (mutexes[event.data.name] == null) {\n return;\n }\n void mutexes[event.data.name].writeLock()\n .then(async (release) => event.data.handler().finally(() => { release(); }));\n });\n }\n }\n if (mutexes[opts.name] == null) {\n mutexes[opts.name] = createMutex(opts.name, opts);\n }\n return mutexes[opts.name];\n}\n//# sourceMappingURL=index.js.map","import { start, stop } from '@libp2p/interface';\nimport createMortice from 'mortice';\n/**\n * BlockStorage is a hybrid blockstore that puts/gets blocks from a configured\n * blockstore (that may be on disk, s3, or something else). If the blocks are\n * not present Bitswap will be used to fetch them from network peers.\n */\nexport class BlockStorage {\n lock;\n child;\n pins;\n started;\n /**\n * Create a new BlockStorage\n */\n constructor(blockstore, pins, options = {}) {\n this.child = blockstore;\n this.pins = pins;\n this.lock = createMortice({\n singleProcess: options.holdGcLock\n });\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n async start() {\n await start(this.child);\n this.started = true;\n }\n async stop() {\n await stop(this.child);\n this.started = false;\n }\n unwrap() {\n return this.child;\n }\n /**\n * Put a block to the underlying datastore\n */\n async put(cid, block, options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n return await this.child.put(cid, block, options);\n }\n finally {\n releaseLock();\n }\n }\n /**\n * Put a multiple blocks to the underlying datastore\n */\n async *putMany(blocks, options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n yield* this.child.putMany(blocks, options);\n }\n finally {\n releaseLock();\n }\n }\n /**\n * Get a block by cid\n */\n async get(cid, options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n return await this.child.get(cid, options);\n }\n finally {\n releaseLock();\n }\n }\n /**\n * Get multiple blocks back from an (async) iterable of cids\n */\n async *getMany(cids, options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n yield* this.child.getMany(cids, options);\n }\n finally {\n releaseLock();\n }\n }\n /**\n * Delete a block from the blockstore\n */\n async delete(cid, options = {}) {\n const releaseLock = await this.lock.writeLock();\n try {\n if (await this.pins.isPinned(cid)) {\n throw new Error('CID was pinned');\n }\n await this.child.delete(cid, options);\n }\n finally {\n releaseLock();\n }\n }\n /**\n * Delete multiple blocks from the blockstore\n */\n async *deleteMany(cids, options = {}) {\n const releaseLock = await this.lock.writeLock();\n try {\n const storage = this;\n yield* this.child.deleteMany((async function* () {\n for await (const cid of cids) {\n if (await storage.pins.isPinned(cid)) {\n throw new Error('CID was pinned');\n }\n yield cid;\n }\n }()), options);\n }\n finally {\n releaseLock();\n }\n }\n async has(cid, options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n return await this.child.has(cid, options);\n }\n finally {\n releaseLock();\n }\n }\n async *getAll(options = {}) {\n const releaseLock = await this.lock.readLock();\n try {\n yield* this.child.getAll(options);\n }\n finally {\n releaseLock();\n }\n }\n}\n//# sourceMappingURL=storage.js.map","import { Key } from 'interface-datastore';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nconst DS_VERSION_KEY = new Key('/version');\nconst CURRENT_VERSION = 1;\nexport async function assertDatastoreVersionIsCurrent(datastore) {\n if (!(await datastore.has(DS_VERSION_KEY))) {\n await datastore.put(DS_VERSION_KEY, uint8ArrayFromString(`${CURRENT_VERSION}`));\n return;\n }\n const buf = await datastore.get(DS_VERSION_KEY);\n const str = uint8ArrayToString(buf);\n const version = parseInt(str, 10);\n if (version !== CURRENT_VERSION) {\n // TODO: write migrations when we break compatibility - for an example, see https://github.com/ipfs/js-ipfs-repo/tree/master/packages/ipfs-repo-migrations\n throw new Error('Unknown datastore version, a datastore migration may be required');\n }\n}\n//# sourceMappingURL=datastore-version.js.map","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0x0;\nconst name = 'identity';\nconst encode = coerce;\nfunction digest(input) {\n return Digest.create(code, encode(input));\n}\nexport const identity = { code, name, encode, digest };\n//# sourceMappingURL=identity.js.map","import { identity } from 'multiformats/hashes/identity';\nimport { sha256, sha512 } from 'multiformats/hashes/sha2';\nexport function defaultHashers(hashers = []) {\n return [\n sha256,\n sha512,\n identity,\n ...hashers\n ];\n}\n//# sourceMappingURL=default-hashers.js.map","import { bitswap, trustlessGateway, NetworkedStorage } from '@helia/block-brokers';\nimport { start, stop } from '@libp2p/interface';\nimport drain from 'it-drain';\nimport { CustomProgressEvent } from 'progress-events';\nimport { PinsImpl } from './pins.js';\nimport { BlockStorage } from './storage.js';\nimport { assertDatastoreVersionIsCurrent } from './utils/datastore-version.js';\nimport { defaultHashers } from './utils/default-hashers.js';\nexport class HeliaImpl {\n libp2p;\n blockstore;\n datastore;\n pins;\n logger;\n log;\n constructor(init) {\n this.logger = init.libp2p.logger;\n this.log = this.logger.forComponent('helia');\n const hashers = defaultHashers(init.hashers);\n const components = {\n blockstore: init.blockstore,\n datastore: init.datastore,\n libp2p: init.libp2p,\n hashers,\n logger: init.libp2p.logger\n };\n const blockBrokers = init.blockBrokers?.map((fn) => {\n return fn(components);\n }) ?? [\n bitswap()(components),\n trustlessGateway()(components)\n ];\n const networkedStorage = new NetworkedStorage(components, {\n blockBrokers,\n hashers\n });\n this.pins = new PinsImpl(init.datastore, networkedStorage, init.dagWalkers ?? []);\n this.libp2p = init.libp2p;\n this.blockstore = new BlockStorage(networkedStorage, this.pins, {\n holdGcLock: init.holdGcLock\n });\n this.datastore = init.datastore;\n }\n async start() {\n await assertDatastoreVersionIsCurrent(this.datastore);\n await start(this.blockstore);\n await this.libp2p.start();\n }\n async stop() {\n await this.libp2p.stop();\n await stop(this.blockstore);\n }\n async gc(options = {}) {\n const releaseLock = await this.blockstore.lock.writeLock();\n try {\n const helia = this;\n const blockstore = this.blockstore.unwrap();\n this.log('gc start');\n await drain(blockstore.deleteMany((async function* () {\n for await (const { cid } of blockstore.getAll()) {\n try {\n if (await helia.pins.isPinned(cid, options)) {\n continue;\n }\n yield cid;\n options.onProgress?.(new CustomProgressEvent('helia:gc:deleted', cid));\n }\n catch (err) {\n helia.log.error('Error during gc', err);\n options.onProgress?.(new CustomProgressEvent('helia:gc:error', err));\n }\n }\n }())));\n }\n finally {\n releaseLock();\n }\n this.log('gc finished');\n }\n}\n//# sourceMappingURL=helia.js.map","/**\n * @packageDocumentation\n *\n * An implementation of a peer id\n *\n * @example\n *\n * ```TypeScript\n * import { peerIdFromString } from '@libp2p/peer-id'\n * const peer = peerIdFromString('k51qzi5uqu5dkwkqm42v9j9kqcam2jiuvloi16g72i4i4amoo2m8u3ol3mqu6s')\n *\n * console.log(peer.toCID()) // CID(bafzaa...)\n * console.log(peer.toString()) // \"12D3K...\"\n * ```\n */\nimport { CodeError } from '@libp2p/interface';\nimport { peerIdSymbol } from '@libp2p/interface';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { bases } from 'multiformats/basics';\nimport { CID } from 'multiformats/cid';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nconst inspect = Symbol.for('nodejs.util.inspect.custom');\nconst baseDecoder = Object\n .values(bases)\n .map(codec => codec.decoder)\n // @ts-expect-error https://github.com/multiformats/js-multiformats/issues/141\n .reduce((acc, curr) => acc.or(curr), bases.identity.decoder);\n// these values are from https://github.com/multiformats/multicodec/blob/master/table.csv\nconst LIBP2P_KEY_CODE = 0x72;\nconst MARSHALLED_ED225519_PUBLIC_KEY_LENGTH = 36;\nconst MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH = 37;\nclass PeerIdImpl {\n type;\n multihash;\n privateKey;\n publicKey;\n string;\n constructor(init) {\n this.type = init.type;\n this.multihash = init.multihash;\n this.privateKey = init.privateKey;\n // mark string cache as non-enumerable\n Object.defineProperty(this, 'string', {\n enumerable: false,\n writable: true\n });\n }\n get [Symbol.toStringTag]() {\n return `PeerId(${this.toString()})`;\n }\n [peerIdSymbol] = true;\n toString() {\n if (this.string == null) {\n this.string = base58btc.encode(this.multihash.bytes).slice(1);\n }\n return this.string;\n }\n // return self-describing String representation\n // in default format from RFC 0001: https://github.com/libp2p/specs/pull/209\n toCID() {\n return CID.createV1(LIBP2P_KEY_CODE, this.multihash);\n }\n toBytes() {\n return this.multihash.bytes;\n }\n /**\n * Returns Multiaddr as a JSON string\n */\n toJSON() {\n return this.toString();\n }\n /**\n * Checks the equality of `this` peer against a given PeerId\n */\n equals(id) {\n if (id == null) {\n return false;\n }\n if (id instanceof Uint8Array) {\n return uint8ArrayEquals(this.multihash.bytes, id);\n }\n else if (typeof id === 'string') {\n return peerIdFromString(id).equals(this);\n }\n else if (id?.multihash?.bytes != null) {\n return uint8ArrayEquals(this.multihash.bytes, id.multihash.bytes);\n }\n else {\n throw new Error('not valid Id');\n }\n }\n /**\n * Returns PeerId as a human-readable string\n * https://nodejs.org/api/util.html#utilinspectcustom\n *\n * @example\n * ```TypeScript\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * console.info(peerIdFromString('QmFoo'))\n * // 'PeerId(QmFoo)'\n * ```\n */\n [inspect]() {\n return `PeerId(${this.toString()})`;\n }\n}\nclass RSAPeerIdImpl extends PeerIdImpl {\n type = 'RSA';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'RSA' });\n this.publicKey = init.publicKey;\n }\n}\nclass Ed25519PeerIdImpl extends PeerIdImpl {\n type = 'Ed25519';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'Ed25519' });\n this.publicKey = init.multihash.digest;\n }\n}\nclass Secp256k1PeerIdImpl extends PeerIdImpl {\n type = 'secp256k1';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'secp256k1' });\n this.publicKey = init.multihash.digest;\n }\n}\n// these values are from https://github.com/multiformats/multicodec/blob/master/table.csv\nconst TRANSPORT_IPFS_GATEWAY_HTTP_CODE = 0x0920;\nclass URLPeerIdImpl {\n type = 'url';\n multihash;\n privateKey;\n publicKey;\n url;\n constructor(url) {\n this.url = url.toString();\n this.multihash = identity.digest(uint8ArrayFromString(this.url));\n }\n [inspect]() {\n return `PeerId(${this.url})`;\n }\n [peerIdSymbol] = true;\n toString() {\n return this.toCID().toString();\n }\n toCID() {\n return CID.createV1(TRANSPORT_IPFS_GATEWAY_HTTP_CODE, this.multihash);\n }\n toBytes() {\n return this.toCID().bytes;\n }\n equals(other) {\n if (other == null) {\n return false;\n }\n if (other instanceof Uint8Array) {\n other = uint8ArrayToString(other);\n }\n return other.toString() === this.toString();\n }\n}\nexport function createPeerId(init) {\n if (init.type === 'RSA') {\n return new RSAPeerIdImpl(init);\n }\n if (init.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(init);\n }\n if (init.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(init);\n }\n throw new CodeError('Type must be \"RSA\", \"Ed25519\" or \"secp256k1\"', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromPeerId(other) {\n if (other.type === 'RSA') {\n return new RSAPeerIdImpl(other);\n }\n if (other.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(other);\n }\n if (other.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(other);\n }\n throw new CodeError('Not a PeerId', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromString(str, decoder) {\n decoder = decoder ?? baseDecoder;\n if (str.charAt(0) === '1' || str.charAt(0) === 'Q') {\n // identity hash ed25519/secp256k1 key or sha2-256 hash of\n // rsa public key - base58btc encoded either way\n const multihash = Digest.decode(base58btc.decode(`z${str}`));\n if (str.startsWith('12D')) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (str.startsWith('16U')) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n else {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n return peerIdFromBytes(baseDecoder.decode(str));\n}\nexport function peerIdFromBytes(buf) {\n try {\n const multihash = Digest.decode(buf);\n if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n }\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n catch {\n return peerIdFromCID(CID.decode(buf));\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\nexport function peerIdFromCID(cid) {\n if (cid?.multihash == null || cid.version == null || (cid.version === 1 && (cid.code !== LIBP2P_KEY_CODE) && cid.code !== TRANSPORT_IPFS_GATEWAY_HTTP_CODE)) {\n throw new Error('Supplied PeerID CID is invalid');\n }\n if (cid.code === TRANSPORT_IPFS_GATEWAY_HTTP_CODE) {\n const url = uint8ArrayToString(cid.multihash.digest);\n return new URLPeerIdImpl(new URL(url));\n }\n const multihash = cid.multihash;\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: cid.multihash });\n }\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\n/**\n * @param publicKey - A marshalled public key\n * @param privateKey - A marshalled private key\n */\nexport async function peerIdFromKeys(publicKey, privateKey) {\n if (publicKey.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n if (publicKey.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n return new RSAPeerIdImpl({ multihash: await sha256.digest(publicKey), publicKey, privateKey });\n}\n//# sourceMappingURL=index.js.map","export const second = 1000;\nexport const minute = 60 * second;\n// Protocol identifiers\nexport const FloodsubID = '/floodsub/1.0.0';\n/**\n * The protocol ID for version 1.0.0 of the Gossipsub protocol\n * It is advertised along with GossipsubIDv11 for backwards compatability\n */\nexport const GossipsubIDv10 = '/meshsub/1.0.0';\n/**\n * The protocol ID for version 1.1.0 of the Gossipsub protocol\n * See the spec for details about how v1.1.0 compares to v1.0.0:\n * https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md\n */\nexport const GossipsubIDv11 = '/meshsub/1.1.0';\n// Overlay parameters\n/**\n * GossipsubD sets the optimal degree for a Gossipsub topic mesh. For example, if GossipsubD == 6,\n * each peer will want to have about six peers in their mesh for each topic they're subscribed to.\n * GossipsubD should be set somewhere between GossipsubDlo and GossipsubDhi.\n */\nexport const GossipsubD = 6;\n/**\n * GossipsubDlo sets the lower bound on the number of peers we keep in a Gossipsub topic mesh.\n * If we have fewer than GossipsubDlo peers, we will attempt to graft some more into the mesh at\n * the next heartbeat.\n */\nexport const GossipsubDlo = 4;\n/**\n * GossipsubDhi sets the upper bound on the number of peers we keep in a Gossipsub topic mesh.\n * If we have more than GossipsubDhi peers, we will select some to prune from the mesh at the next heartbeat.\n */\nexport const GossipsubDhi = 12;\n/**\n * GossipsubDscore affects how peers are selected when pruning a mesh due to over subscription.\n * At least GossipsubDscore of the retained peers will be high-scoring, while the remainder are\n * chosen randomly.\n */\nexport const GossipsubDscore = 4;\n/**\n * GossipsubDout sets the quota for the number of outbound connections to maintain in a topic mesh.\n * When the mesh is pruned due to over subscription, we make sure that we have outbound connections\n * to at least GossipsubDout of the survivor peers. This prevents sybil attackers from overwhelming\n * our mesh with incoming connections.\n *\n * GossipsubDout must be set below GossipsubDlo, and must not exceed GossipsubD / 2.\n */\nexport const GossipsubDout = 2;\n// Gossip parameters\n/**\n * GossipsubHistoryLength controls the size of the message cache used for gossip.\n * The message cache will remember messages for GossipsubHistoryLength heartbeats.\n */\nexport const GossipsubHistoryLength = 5;\n/**\n * GossipsubHistoryGossip controls how many cached message ids we will advertise in\n * IHAVE gossip messages. When asked for our seen message IDs, we will return\n * only those from the most recent GossipsubHistoryGossip heartbeats. The slack between\n * GossipsubHistoryGossip and GossipsubHistoryLength allows us to avoid advertising messages\n * that will be expired by the time they're requested.\n *\n * GossipsubHistoryGossip must be less than or equal to GossipsubHistoryLength to\n * avoid a runtime panic.\n */\nexport const GossipsubHistoryGossip = 3;\n/**\n * GossipsubDlazy affects how many peers we will emit gossip to at each heartbeat.\n * We will send gossip to at least GossipsubDlazy peers outside our mesh. The actual\n * number may be more, depending on GossipsubGossipFactor and how many peers we're\n * connected to.\n */\nexport const GossipsubDlazy = 6;\n/**\n * GossipsubGossipFactor affects how many peers we will emit gossip to at each heartbeat.\n * We will send gossip to GossipsubGossipFactor * (total number of non-mesh peers), or\n * GossipsubDlazy, whichever is greater.\n */\nexport const GossipsubGossipFactor = 0.25;\n/**\n * GossipsubGossipRetransmission controls how many times we will allow a peer to request\n * the same message id through IWANT gossip before we start ignoring them. This is designed\n * to prevent peers from spamming us with requests and wasting our resources.\n */\nexport const GossipsubGossipRetransmission = 3;\n// Heartbeat interval\n/**\n * GossipsubHeartbeatInitialDelay is the short delay before the heartbeat timer begins\n * after the router is initialized.\n */\nexport const GossipsubHeartbeatInitialDelay = 100;\n/**\n * GossipsubHeartbeatInterval controls the time between heartbeats.\n */\nexport const GossipsubHeartbeatInterval = second;\n/**\n * GossipsubFanoutTTL controls how long we keep track of the fanout state. If it's been\n * GossipsubFanoutTTL since we've published to a topic that we're not subscribed to,\n * we'll delete the fanout map for that topic.\n */\nexport const GossipsubFanoutTTL = minute;\n/**\n * GossipsubPrunePeers controls the number of peers to include in prune Peer eXchange.\n * When we prune a peer that's eligible for PX (has a good score, etc), we will try to\n * send them signed peer records for up to GossipsubPrunePeers other peers that we\n * know of.\n */\nexport const GossipsubPrunePeers = 16;\n/**\n * GossipsubPruneBackoff controls the backoff time for pruned peers. This is how long\n * a peer must wait before attempting to graft into our mesh again after being pruned.\n * When pruning a peer, we send them our value of GossipsubPruneBackoff so they know\n * the minimum time to wait. Peers running older versions may not send a backoff time,\n * so if we receive a prune message without one, we will wait at least GossipsubPruneBackoff\n * before attempting to re-graft.\n */\nexport const GossipsubPruneBackoff = minute;\n/**\n * Backoff to use when unsuscribing from a topic. Should not resubscribe to this topic before it expired.\n */\nexport const GossipsubUnsubscribeBackoff = 10 * second;\n/**\n * GossipsubPruneBackoffTicks is the number of heartbeat ticks for attempting to prune expired\n * backoff timers.\n */\nexport const GossipsubPruneBackoffTicks = 15;\n/**\n * GossipsubConnectors controls the number of active connection attempts for peers obtained through PX.\n */\nexport const GossipsubConnectors = 8;\n/**\n * GossipsubMaxPendingConnections sets the maximum number of pending connections for peers attempted through px.\n */\nexport const GossipsubMaxPendingConnections = 128;\n/**\n * GossipsubConnectionTimeout controls the timeout for connection attempts.\n */\nexport const GossipsubConnectionTimeout = 30 * second;\n/**\n * GossipsubDirectConnectTicks is the number of heartbeat ticks for attempting to reconnect direct peers\n * that are not currently connected.\n */\nexport const GossipsubDirectConnectTicks = 300;\n/**\n * GossipsubDirectConnectInitialDelay is the initial delay before opening connections to direct peers\n */\nexport const GossipsubDirectConnectInitialDelay = second;\n/**\n * GossipsubOpportunisticGraftTicks is the number of heartbeat ticks for attempting to improve the mesh\n * with opportunistic grafting. Every GossipsubOpportunisticGraftTicks we will attempt to select some\n * high-scoring mesh peers to replace lower-scoring ones, if the median score of our mesh peers falls\n * below a threshold\n */\nexport const GossipsubOpportunisticGraftTicks = 60;\n/**\n * GossipsubOpportunisticGraftPeers is the number of peers to opportunistically graft.\n */\nexport const GossipsubOpportunisticGraftPeers = 2;\n/**\n * If a GRAFT comes before GossipsubGraftFloodThreshold has elapsed since the last PRUNE,\n * then there is an extra score penalty applied to the peer through P7.\n */\nexport const GossipsubGraftFloodThreshold = 10 * second;\n/**\n * GossipsubMaxIHaveLength is the maximum number of messages to include in an IHAVE message.\n * Also controls the maximum number of IHAVE ids we will accept and request with IWANT from a\n * peer within a heartbeat, to protect from IHAVE floods. You should adjust this value from the\n * default if your system is pushing more than 5000 messages in GossipsubHistoryGossip heartbeats;\n * with the defaults this is 1666 messages/s.\n */\nexport const GossipsubMaxIHaveLength = 5000;\n/**\n * GossipsubMaxIHaveMessages is the maximum number of IHAVE messages to accept from a peer within a heartbeat.\n */\nexport const GossipsubMaxIHaveMessages = 10;\n/**\n * Time to wait for a message requested through IWANT following an IHAVE advertisement.\n * If the message is not received within this window, a broken promise is declared and\n * the router may apply bahavioural penalties.\n */\nexport const GossipsubIWantFollowupTime = 3 * second;\n/**\n * Time in milliseconds to keep message ids in the seen cache\n */\nexport const GossipsubSeenTTL = 2 * minute;\nexport const TimeCacheDuration = 120 * 1000;\nexport const ERR_TOPIC_VALIDATOR_REJECT = 'ERR_TOPIC_VALIDATOR_REJECT';\nexport const ERR_TOPIC_VALIDATOR_IGNORE = 'ERR_TOPIC_VALIDATOR_IGNORE';\n/**\n * If peer score is better than this, we accept messages from this peer\n * within ACCEPT_FROM_WHITELIST_DURATION_MS from the last time computing score.\n **/\nexport const ACCEPT_FROM_WHITELIST_THRESHOLD_SCORE = 0;\n/**\n * If peer score >= ACCEPT_FROM_WHITELIST_THRESHOLD_SCORE, accept up to this\n * number of messages from that peer.\n */\nexport const ACCEPT_FROM_WHITELIST_MAX_MESSAGES = 128;\n/**\n * If peer score >= ACCEPT_FROM_WHITELIST_THRESHOLD_SCORE, accept messages from\n * this peer up to this time duration.\n */\nexport const ACCEPT_FROM_WHITELIST_DURATION_MS = 1000;\n/**\n * The default MeshMessageDeliveriesWindow to be used in metrics.\n */\nexport const DEFAULT_METRIC_MESH_MESSAGE_DELIVERIES_WINDOWS = 1000;\n/** Wait for 1 more heartbeats before clearing a backoff */\nexport const BACKOFF_SLACK = 1;\n//# sourceMappingURL=constants.js.map","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n","\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.} dst Destination object\n * @param {Object.} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n CustomError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n enumerable: false,\n configurable: true,\n },\n name: {\n get: function get() { return name; },\n set: undefined,\n enumerable: false,\n // configurable: false would accurately preserve the behavior of\n // the original, but I'm guessing that was not intentional.\n // For an actual error subclass, this property would\n // be configurable.\n configurable: true,\n },\n toString: {\n value: function value() { return this.name + \": \" + this.message; },\n writable: true,\n enumerable: false,\n configurable: true,\n },\n });\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message\n * @constructor\n * @param {string} message Error message\n * @param {Object.} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n","\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n","\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n","\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n var nativeBuffer = util.Buffer;\n return nativeBuffer\n ? nativeBuffer.alloc(0)\n : new this.buf.constructor(0);\n }\n return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n","\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n","\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message\n * @template TRes extends Message\n * @type {function}\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\n * @param {Constructor} requestCtor Request constructor\n * @param {Constructor} responseCtor Response constructor\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message\n * @template TRes extends Message\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n","\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n","\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n","\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n","// minimal library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-minimal\");\n","import protobuf from 'protobufjs/minimal.js';\nexport const defaultDecodeRpcLimits = {\n maxSubscriptions: Infinity,\n maxMessages: Infinity,\n maxIhaveMessageIDs: Infinity,\n maxIwantMessageIDs: Infinity,\n maxControlMessages: Infinity,\n maxPeerInfos: Infinity\n};\n/**\n * Copied code from src/message/rpc.cjs but with decode limits to prevent OOM attacks\n */\nexport function decodeRpc(bytes, opts) {\n // Mutate to use the option as stateful counter. Must limit the total count of messageIDs across all IWANT, IHAVE\n // else one count put 100 messageIDs into each 100 IWANT and \"get around\" the limit\n opts = { ...opts };\n const r = protobuf.Reader.create(bytes);\n const l = bytes.length;\n const c = l === undefined ? r.len : r.pos + l;\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!((m.subscriptions != null) && (m.subscriptions.length > 0)))\n m.subscriptions = [];\n if (m.subscriptions.length < opts.maxSubscriptions)\n m.subscriptions.push(decodeSubOpts(r, r.uint32()));\n else\n r.skipType(t & 7);\n break;\n case 2:\n if (!((m.messages != null) && (m.messages.length > 0)))\n m.messages = [];\n if (m.messages.length < opts.maxMessages)\n m.messages.push(decodeMessage(r, r.uint32()));\n else\n r.skipType(t & 7);\n break;\n case 3:\n m.control = decodeControlMessage(r, r.uint32(), opts);\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeSubOpts(r, l) {\n const c = l === undefined ? r.len : r.pos + l;\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.subscribe = r.bool();\n break;\n case 2:\n m.topic = r.string();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeMessage(r, l) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.from = r.bytes();\n break;\n case 2:\n m.data = r.bytes();\n break;\n case 3:\n m.seqno = r.bytes();\n break;\n case 4:\n m.topic = r.string();\n break;\n case 5:\n m.signature = r.bytes();\n break;\n case 6:\n m.key = r.bytes();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!m.topic)\n throw Error(\"missing required 'topic'\");\n return m;\n}\nfunction decodeControlMessage(r, l, opts) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!((m.ihave != null) && (m.ihave.length > 0)))\n m.ihave = [];\n if (m.ihave.length < opts.maxControlMessages)\n m.ihave.push(decodeControlIHave(r, r.uint32(), opts));\n else\n r.skipType(t & 7);\n break;\n case 2:\n if (!((m.iwant != null) && (m.iwant.length > 0)))\n m.iwant = [];\n if (m.iwant.length < opts.maxControlMessages)\n m.iwant.push(decodeControlIWant(r, r.uint32(), opts));\n else\n r.skipType(t & 7);\n break;\n case 3:\n if (!((m.graft != null) && (m.graft.length > 0)))\n m.graft = [];\n if (m.graft.length < opts.maxControlMessages)\n m.graft.push(decodeControlGraft(r, r.uint32()));\n else\n r.skipType(t & 7);\n break;\n case 4:\n if (!((m.prune != null) && (m.prune.length > 0)))\n m.prune = [];\n if (m.prune.length < opts.maxControlMessages)\n m.prune.push(decodeControlPrune(r, r.uint32(), opts));\n else\n r.skipType(t & 7);\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeControlIHave(r, l, opts) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n case 2:\n if (!((m.messageIDs != null) && (m.messageIDs.length > 0)))\n m.messageIDs = [];\n if (opts.maxIhaveMessageIDs-- > 0)\n m.messageIDs.push(r.bytes());\n else\n r.skipType(t & 7);\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeControlIWant(r, l, opts) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!((m.messageIDs != null) && (m.messageIDs.length > 0)))\n m.messageIDs = [];\n if (opts.maxIwantMessageIDs-- > 0)\n m.messageIDs.push(r.bytes());\n else\n r.skipType(t & 7);\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeControlGraft(r, l) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodeControlPrune(r, l, opts) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n case 2:\n if (!((m.peers != null) && (m.peers.length > 0)))\n m.peers = [];\n if (opts.maxPeerInfos-- > 0)\n m.peers.push(decodePeerInfo(r, r.uint32()));\n else\n r.skipType(t & 7);\n break;\n case 3:\n m.backoff = r.uint64();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\nfunction decodePeerInfo(r, l) {\n const c = l === undefined ? r.len : r.pos + l;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const m = {};\n while (r.pos < c) {\n const t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.peerID = r.bytes();\n break;\n case 2:\n m.signedPeerRecord = r.bytes();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n}\n//# sourceMappingURL=decodeRpc.js.map","// @ts-nocheck\n/*eslint-disable*/\n(function(global, factory) { /* global define, require, module */\n\n /* AMD */ if (typeof define === 'function' && define.amd)\n define([\"protobufjs/minimal\"], factory);\n\n /* CommonJS */ else if (typeof require === 'function' && typeof module === 'object' && module && module.exports)\n module.exports = factory(require(\"protobufjs/minimal\"));\n\n})(this, function($protobuf) {\n \"use strict\";\n\n // Common aliases\n var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n // Exported root namespace\n var $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\n $root.RPC = (function() {\n\n /**\n * Properties of a RPC.\n * @exports IRPC\n * @interface IRPC\n * @property {Array.|null} [subscriptions] RPC subscriptions\n * @property {Array.|null} [messages] RPC messages\n * @property {RPC.IControlMessage|null} [control] RPC control\n */\n\n /**\n * Constructs a new RPC.\n * @exports RPC\n * @classdesc Represents a RPC.\n * @implements IRPC\n * @constructor\n * @param {IRPC=} [p] Properties to set\n */\n function RPC(p) {\n this.subscriptions = [];\n this.messages = [];\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * RPC subscriptions.\n * @member {Array.} subscriptions\n * @memberof RPC\n * @instance\n */\n RPC.prototype.subscriptions = $util.emptyArray;\n\n /**\n * RPC messages.\n * @member {Array.} messages\n * @memberof RPC\n * @instance\n */\n RPC.prototype.messages = $util.emptyArray;\n\n /**\n * RPC control.\n * @member {RPC.IControlMessage|null|undefined} control\n * @memberof RPC\n * @instance\n */\n RPC.prototype.control = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * RPC _control.\n * @member {\"control\"|undefined} _control\n * @memberof RPC\n * @instance\n */\n Object.defineProperty(RPC.prototype, \"_control\", {\n get: $util.oneOfGetter($oneOfFields = [\"control\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified RPC message. Does not implicitly {@link RPC.verify|verify} messages.\n * @function encode\n * @memberof RPC\n * @static\n * @param {IRPC} m RPC message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n RPC.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.subscriptions != null && m.subscriptions.length) {\n for (var i = 0; i < m.subscriptions.length; ++i)\n $root.RPC.SubOpts.encode(m.subscriptions[i], w.uint32(10).fork()).ldelim();\n }\n if (m.messages != null && m.messages.length) {\n for (var i = 0; i < m.messages.length; ++i)\n $root.RPC.Message.encode(m.messages[i], w.uint32(18).fork()).ldelim();\n }\n if (m.control != null && Object.hasOwnProperty.call(m, \"control\"))\n $root.RPC.ControlMessage.encode(m.control, w.uint32(26).fork()).ldelim();\n return w;\n };\n\n /**\n * Decodes a RPC message from the specified reader or buffer.\n * @function decode\n * @memberof RPC\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC} RPC\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n RPC.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!(m.subscriptions && m.subscriptions.length))\n m.subscriptions = [];\n m.subscriptions.push($root.RPC.SubOpts.decode(r, r.uint32()));\n break;\n case 2:\n if (!(m.messages && m.messages.length))\n m.messages = [];\n m.messages.push($root.RPC.Message.decode(r, r.uint32()));\n break;\n case 3:\n m.control = $root.RPC.ControlMessage.decode(r, r.uint32());\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a RPC message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC} RPC\n */\n RPC.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC)\n return d;\n var m = new $root.RPC();\n if (d.subscriptions) {\n if (!Array.isArray(d.subscriptions))\n throw TypeError(\".RPC.subscriptions: array expected\");\n m.subscriptions = [];\n for (var i = 0; i < d.subscriptions.length; ++i) {\n if (typeof d.subscriptions[i] !== \"object\")\n throw TypeError(\".RPC.subscriptions: object expected\");\n m.subscriptions[i] = $root.RPC.SubOpts.fromObject(d.subscriptions[i]);\n }\n }\n if (d.messages) {\n if (!Array.isArray(d.messages))\n throw TypeError(\".RPC.messages: array expected\");\n m.messages = [];\n for (var i = 0; i < d.messages.length; ++i) {\n if (typeof d.messages[i] !== \"object\")\n throw TypeError(\".RPC.messages: object expected\");\n m.messages[i] = $root.RPC.Message.fromObject(d.messages[i]);\n }\n }\n if (d.control != null) {\n if (typeof d.control !== \"object\")\n throw TypeError(\".RPC.control: object expected\");\n m.control = $root.RPC.ControlMessage.fromObject(d.control);\n }\n return m;\n };\n\n /**\n * Creates a plain object from a RPC message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC\n * @static\n * @param {RPC} m RPC\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n RPC.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.arrays || o.defaults) {\n d.subscriptions = [];\n d.messages = [];\n }\n if (m.subscriptions && m.subscriptions.length) {\n d.subscriptions = [];\n for (var j = 0; j < m.subscriptions.length; ++j) {\n d.subscriptions[j] = $root.RPC.SubOpts.toObject(m.subscriptions[j], o);\n }\n }\n if (m.messages && m.messages.length) {\n d.messages = [];\n for (var j = 0; j < m.messages.length; ++j) {\n d.messages[j] = $root.RPC.Message.toObject(m.messages[j], o);\n }\n }\n if (m.control != null && m.hasOwnProperty(\"control\")) {\n d.control = $root.RPC.ControlMessage.toObject(m.control, o);\n if (o.oneofs)\n d._control = \"control\";\n }\n return d;\n };\n\n /**\n * Converts this RPC to JSON.\n * @function toJSON\n * @memberof RPC\n * @instance\n * @returns {Object.} JSON object\n */\n RPC.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n RPC.SubOpts = (function() {\n\n /**\n * Properties of a SubOpts.\n * @memberof RPC\n * @interface ISubOpts\n * @property {boolean|null} [subscribe] SubOpts subscribe\n * @property {string|null} [topic] SubOpts topic\n */\n\n /**\n * Constructs a new SubOpts.\n * @memberof RPC\n * @classdesc Represents a SubOpts.\n * @implements ISubOpts\n * @constructor\n * @param {RPC.ISubOpts=} [p] Properties to set\n */\n function SubOpts(p) {\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * SubOpts subscribe.\n * @member {boolean|null|undefined} subscribe\n * @memberof RPC.SubOpts\n * @instance\n */\n SubOpts.prototype.subscribe = null;\n\n /**\n * SubOpts topic.\n * @member {string|null|undefined} topic\n * @memberof RPC.SubOpts\n * @instance\n */\n SubOpts.prototype.topic = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * SubOpts _subscribe.\n * @member {\"subscribe\"|undefined} _subscribe\n * @memberof RPC.SubOpts\n * @instance\n */\n Object.defineProperty(SubOpts.prototype, \"_subscribe\", {\n get: $util.oneOfGetter($oneOfFields = [\"subscribe\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * SubOpts _topic.\n * @member {\"topic\"|undefined} _topic\n * @memberof RPC.SubOpts\n * @instance\n */\n Object.defineProperty(SubOpts.prototype, \"_topic\", {\n get: $util.oneOfGetter($oneOfFields = [\"topic\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified SubOpts message. Does not implicitly {@link RPC.SubOpts.verify|verify} messages.\n * @function encode\n * @memberof RPC.SubOpts\n * @static\n * @param {RPC.ISubOpts} m SubOpts message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SubOpts.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.subscribe != null && Object.hasOwnProperty.call(m, \"subscribe\"))\n w.uint32(8).bool(m.subscribe);\n if (m.topic != null && Object.hasOwnProperty.call(m, \"topic\"))\n w.uint32(18).string(m.topic);\n return w;\n };\n\n /**\n * Decodes a SubOpts message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.SubOpts\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.SubOpts} SubOpts\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SubOpts.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.SubOpts();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.subscribe = r.bool();\n break;\n case 2:\n m.topic = r.string();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a SubOpts message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.SubOpts\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.SubOpts} SubOpts\n */\n SubOpts.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.SubOpts)\n return d;\n var m = new $root.RPC.SubOpts();\n if (d.subscribe != null) {\n m.subscribe = Boolean(d.subscribe);\n }\n if (d.topic != null) {\n m.topic = String(d.topic);\n }\n return m;\n };\n\n /**\n * Creates a plain object from a SubOpts message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.SubOpts\n * @static\n * @param {RPC.SubOpts} m SubOpts\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n SubOpts.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (m.subscribe != null && m.hasOwnProperty(\"subscribe\")) {\n d.subscribe = m.subscribe;\n if (o.oneofs)\n d._subscribe = \"subscribe\";\n }\n if (m.topic != null && m.hasOwnProperty(\"topic\")) {\n d.topic = m.topic;\n if (o.oneofs)\n d._topic = \"topic\";\n }\n return d;\n };\n\n /**\n * Converts this SubOpts to JSON.\n * @function toJSON\n * @memberof RPC.SubOpts\n * @instance\n * @returns {Object.} JSON object\n */\n SubOpts.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return SubOpts;\n })();\n\n RPC.Message = (function() {\n\n /**\n * Properties of a Message.\n * @memberof RPC\n * @interface IMessage\n * @property {Uint8Array|null} [from] Message from\n * @property {Uint8Array|null} [data] Message data\n * @property {Uint8Array|null} [seqno] Message seqno\n * @property {string} topic Message topic\n * @property {Uint8Array|null} [signature] Message signature\n * @property {Uint8Array|null} [key] Message key\n */\n\n /**\n * Constructs a new Message.\n * @memberof RPC\n * @classdesc Represents a Message.\n * @implements IMessage\n * @constructor\n * @param {RPC.IMessage=} [p] Properties to set\n */\n function Message(p) {\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * Message from.\n * @member {Uint8Array|null|undefined} from\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.from = null;\n\n /**\n * Message data.\n * @member {Uint8Array|null|undefined} data\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.data = null;\n\n /**\n * Message seqno.\n * @member {Uint8Array|null|undefined} seqno\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.seqno = null;\n\n /**\n * Message topic.\n * @member {string} topic\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.topic = \"\";\n\n /**\n * Message signature.\n * @member {Uint8Array|null|undefined} signature\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.signature = null;\n\n /**\n * Message key.\n * @member {Uint8Array|null|undefined} key\n * @memberof RPC.Message\n * @instance\n */\n Message.prototype.key = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * Message _from.\n * @member {\"from\"|undefined} _from\n * @memberof RPC.Message\n * @instance\n */\n Object.defineProperty(Message.prototype, \"_from\", {\n get: $util.oneOfGetter($oneOfFields = [\"from\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Message _data.\n * @member {\"data\"|undefined} _data\n * @memberof RPC.Message\n * @instance\n */\n Object.defineProperty(Message.prototype, \"_data\", {\n get: $util.oneOfGetter($oneOfFields = [\"data\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Message _seqno.\n * @member {\"seqno\"|undefined} _seqno\n * @memberof RPC.Message\n * @instance\n */\n Object.defineProperty(Message.prototype, \"_seqno\", {\n get: $util.oneOfGetter($oneOfFields = [\"seqno\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Message _signature.\n * @member {\"signature\"|undefined} _signature\n * @memberof RPC.Message\n * @instance\n */\n Object.defineProperty(Message.prototype, \"_signature\", {\n get: $util.oneOfGetter($oneOfFields = [\"signature\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Message _key.\n * @member {\"key\"|undefined} _key\n * @memberof RPC.Message\n * @instance\n */\n Object.defineProperty(Message.prototype, \"_key\", {\n get: $util.oneOfGetter($oneOfFields = [\"key\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified Message message. Does not implicitly {@link RPC.Message.verify|verify} messages.\n * @function encode\n * @memberof RPC.Message\n * @static\n * @param {RPC.IMessage} m Message message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Message.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.from != null && Object.hasOwnProperty.call(m, \"from\"))\n w.uint32(10).bytes(m.from);\n if (m.data != null && Object.hasOwnProperty.call(m, \"data\"))\n w.uint32(18).bytes(m.data);\n if (m.seqno != null && Object.hasOwnProperty.call(m, \"seqno\"))\n w.uint32(26).bytes(m.seqno);\n w.uint32(34).string(m.topic);\n if (m.signature != null && Object.hasOwnProperty.call(m, \"signature\"))\n w.uint32(42).bytes(m.signature);\n if (m.key != null && Object.hasOwnProperty.call(m, \"key\"))\n w.uint32(50).bytes(m.key);\n return w;\n };\n\n /**\n * Decodes a Message message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.Message\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.Message} Message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Message.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.Message();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.from = r.bytes();\n break;\n case 2:\n m.data = r.bytes();\n break;\n case 3:\n m.seqno = r.bytes();\n break;\n case 4:\n m.topic = r.string();\n break;\n case 5:\n m.signature = r.bytes();\n break;\n case 6:\n m.key = r.bytes();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n if (!m.hasOwnProperty(\"topic\"))\n throw $util.ProtocolError(\"missing required 'topic'\", { instance: m });\n return m;\n };\n\n /**\n * Creates a Message message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.Message\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.Message} Message\n */\n Message.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.Message)\n return d;\n var m = new $root.RPC.Message();\n if (d.from != null) {\n if (typeof d.from === \"string\")\n $util.base64.decode(d.from, m.from = $util.newBuffer($util.base64.length(d.from)), 0);\n else if (d.from.length)\n m.from = d.from;\n }\n if (d.data != null) {\n if (typeof d.data === \"string\")\n $util.base64.decode(d.data, m.data = $util.newBuffer($util.base64.length(d.data)), 0);\n else if (d.data.length)\n m.data = d.data;\n }\n if (d.seqno != null) {\n if (typeof d.seqno === \"string\")\n $util.base64.decode(d.seqno, m.seqno = $util.newBuffer($util.base64.length(d.seqno)), 0);\n else if (d.seqno.length)\n m.seqno = d.seqno;\n }\n if (d.topic != null) {\n m.topic = String(d.topic);\n }\n if (d.signature != null) {\n if (typeof d.signature === \"string\")\n $util.base64.decode(d.signature, m.signature = $util.newBuffer($util.base64.length(d.signature)), 0);\n else if (d.signature.length)\n m.signature = d.signature;\n }\n if (d.key != null) {\n if (typeof d.key === \"string\")\n $util.base64.decode(d.key, m.key = $util.newBuffer($util.base64.length(d.key)), 0);\n else if (d.key.length)\n m.key = d.key;\n }\n return m;\n };\n\n /**\n * Creates a plain object from a Message message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.Message\n * @static\n * @param {RPC.Message} m Message\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n Message.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.defaults) {\n d.topic = \"\";\n }\n if (m.from != null && m.hasOwnProperty(\"from\")) {\n d.from = o.bytes === String ? $util.base64.encode(m.from, 0, m.from.length) : o.bytes === Array ? Array.prototype.slice.call(m.from) : m.from;\n if (o.oneofs)\n d._from = \"from\";\n }\n if (m.data != null && m.hasOwnProperty(\"data\")) {\n d.data = o.bytes === String ? $util.base64.encode(m.data, 0, m.data.length) : o.bytes === Array ? Array.prototype.slice.call(m.data) : m.data;\n if (o.oneofs)\n d._data = \"data\";\n }\n if (m.seqno != null && m.hasOwnProperty(\"seqno\")) {\n d.seqno = o.bytes === String ? $util.base64.encode(m.seqno, 0, m.seqno.length) : o.bytes === Array ? Array.prototype.slice.call(m.seqno) : m.seqno;\n if (o.oneofs)\n d._seqno = \"seqno\";\n }\n if (m.topic != null && m.hasOwnProperty(\"topic\")) {\n d.topic = m.topic;\n }\n if (m.signature != null && m.hasOwnProperty(\"signature\")) {\n d.signature = o.bytes === String ? $util.base64.encode(m.signature, 0, m.signature.length) : o.bytes === Array ? Array.prototype.slice.call(m.signature) : m.signature;\n if (o.oneofs)\n d._signature = \"signature\";\n }\n if (m.key != null && m.hasOwnProperty(\"key\")) {\n d.key = o.bytes === String ? $util.base64.encode(m.key, 0, m.key.length) : o.bytes === Array ? Array.prototype.slice.call(m.key) : m.key;\n if (o.oneofs)\n d._key = \"key\";\n }\n return d;\n };\n\n /**\n * Converts this Message to JSON.\n * @function toJSON\n * @memberof RPC.Message\n * @instance\n * @returns {Object.} JSON object\n */\n Message.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Message;\n })();\n\n RPC.ControlMessage = (function() {\n\n /**\n * Properties of a ControlMessage.\n * @memberof RPC\n * @interface IControlMessage\n * @property {Array.|null} [ihave] ControlMessage ihave\n * @property {Array.|null} [iwant] ControlMessage iwant\n * @property {Array.|null} [graft] ControlMessage graft\n * @property {Array.|null} [prune] ControlMessage prune\n */\n\n /**\n * Constructs a new ControlMessage.\n * @memberof RPC\n * @classdesc Represents a ControlMessage.\n * @implements IControlMessage\n * @constructor\n * @param {RPC.IControlMessage=} [p] Properties to set\n */\n function ControlMessage(p) {\n this.ihave = [];\n this.iwant = [];\n this.graft = [];\n this.prune = [];\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * ControlMessage ihave.\n * @member {Array.} ihave\n * @memberof RPC.ControlMessage\n * @instance\n */\n ControlMessage.prototype.ihave = $util.emptyArray;\n\n /**\n * ControlMessage iwant.\n * @member {Array.} iwant\n * @memberof RPC.ControlMessage\n * @instance\n */\n ControlMessage.prototype.iwant = $util.emptyArray;\n\n /**\n * ControlMessage graft.\n * @member {Array.} graft\n * @memberof RPC.ControlMessage\n * @instance\n */\n ControlMessage.prototype.graft = $util.emptyArray;\n\n /**\n * ControlMessage prune.\n * @member {Array.} prune\n * @memberof RPC.ControlMessage\n * @instance\n */\n ControlMessage.prototype.prune = $util.emptyArray;\n\n /**\n * Encodes the specified ControlMessage message. Does not implicitly {@link RPC.ControlMessage.verify|verify} messages.\n * @function encode\n * @memberof RPC.ControlMessage\n * @static\n * @param {RPC.IControlMessage} m ControlMessage message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ControlMessage.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.ihave != null && m.ihave.length) {\n for (var i = 0; i < m.ihave.length; ++i)\n $root.RPC.ControlIHave.encode(m.ihave[i], w.uint32(10).fork()).ldelim();\n }\n if (m.iwant != null && m.iwant.length) {\n for (var i = 0; i < m.iwant.length; ++i)\n $root.RPC.ControlIWant.encode(m.iwant[i], w.uint32(18).fork()).ldelim();\n }\n if (m.graft != null && m.graft.length) {\n for (var i = 0; i < m.graft.length; ++i)\n $root.RPC.ControlGraft.encode(m.graft[i], w.uint32(26).fork()).ldelim();\n }\n if (m.prune != null && m.prune.length) {\n for (var i = 0; i < m.prune.length; ++i)\n $root.RPC.ControlPrune.encode(m.prune[i], w.uint32(34).fork()).ldelim();\n }\n return w;\n };\n\n /**\n * Decodes a ControlMessage message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.ControlMessage\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.ControlMessage} ControlMessage\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ControlMessage.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.ControlMessage();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!(m.ihave && m.ihave.length))\n m.ihave = [];\n m.ihave.push($root.RPC.ControlIHave.decode(r, r.uint32()));\n break;\n case 2:\n if (!(m.iwant && m.iwant.length))\n m.iwant = [];\n m.iwant.push($root.RPC.ControlIWant.decode(r, r.uint32()));\n break;\n case 3:\n if (!(m.graft && m.graft.length))\n m.graft = [];\n m.graft.push($root.RPC.ControlGraft.decode(r, r.uint32()));\n break;\n case 4:\n if (!(m.prune && m.prune.length))\n m.prune = [];\n m.prune.push($root.RPC.ControlPrune.decode(r, r.uint32()));\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a ControlMessage message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.ControlMessage\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.ControlMessage} ControlMessage\n */\n ControlMessage.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.ControlMessage)\n return d;\n var m = new $root.RPC.ControlMessage();\n if (d.ihave) {\n if (!Array.isArray(d.ihave))\n throw TypeError(\".RPC.ControlMessage.ihave: array expected\");\n m.ihave = [];\n for (var i = 0; i < d.ihave.length; ++i) {\n if (typeof d.ihave[i] !== \"object\")\n throw TypeError(\".RPC.ControlMessage.ihave: object expected\");\n m.ihave[i] = $root.RPC.ControlIHave.fromObject(d.ihave[i]);\n }\n }\n if (d.iwant) {\n if (!Array.isArray(d.iwant))\n throw TypeError(\".RPC.ControlMessage.iwant: array expected\");\n m.iwant = [];\n for (var i = 0; i < d.iwant.length; ++i) {\n if (typeof d.iwant[i] !== \"object\")\n throw TypeError(\".RPC.ControlMessage.iwant: object expected\");\n m.iwant[i] = $root.RPC.ControlIWant.fromObject(d.iwant[i]);\n }\n }\n if (d.graft) {\n if (!Array.isArray(d.graft))\n throw TypeError(\".RPC.ControlMessage.graft: array expected\");\n m.graft = [];\n for (var i = 0; i < d.graft.length; ++i) {\n if (typeof d.graft[i] !== \"object\")\n throw TypeError(\".RPC.ControlMessage.graft: object expected\");\n m.graft[i] = $root.RPC.ControlGraft.fromObject(d.graft[i]);\n }\n }\n if (d.prune) {\n if (!Array.isArray(d.prune))\n throw TypeError(\".RPC.ControlMessage.prune: array expected\");\n m.prune = [];\n for (var i = 0; i < d.prune.length; ++i) {\n if (typeof d.prune[i] !== \"object\")\n throw TypeError(\".RPC.ControlMessage.prune: object expected\");\n m.prune[i] = $root.RPC.ControlPrune.fromObject(d.prune[i]);\n }\n }\n return m;\n };\n\n /**\n * Creates a plain object from a ControlMessage message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.ControlMessage\n * @static\n * @param {RPC.ControlMessage} m ControlMessage\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n ControlMessage.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.arrays || o.defaults) {\n d.ihave = [];\n d.iwant = [];\n d.graft = [];\n d.prune = [];\n }\n if (m.ihave && m.ihave.length) {\n d.ihave = [];\n for (var j = 0; j < m.ihave.length; ++j) {\n d.ihave[j] = $root.RPC.ControlIHave.toObject(m.ihave[j], o);\n }\n }\n if (m.iwant && m.iwant.length) {\n d.iwant = [];\n for (var j = 0; j < m.iwant.length; ++j) {\n d.iwant[j] = $root.RPC.ControlIWant.toObject(m.iwant[j], o);\n }\n }\n if (m.graft && m.graft.length) {\n d.graft = [];\n for (var j = 0; j < m.graft.length; ++j) {\n d.graft[j] = $root.RPC.ControlGraft.toObject(m.graft[j], o);\n }\n }\n if (m.prune && m.prune.length) {\n d.prune = [];\n for (var j = 0; j < m.prune.length; ++j) {\n d.prune[j] = $root.RPC.ControlPrune.toObject(m.prune[j], o);\n }\n }\n return d;\n };\n\n /**\n * Converts this ControlMessage to JSON.\n * @function toJSON\n * @memberof RPC.ControlMessage\n * @instance\n * @returns {Object.} JSON object\n */\n ControlMessage.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ControlMessage;\n })();\n\n RPC.ControlIHave = (function() {\n\n /**\n * Properties of a ControlIHave.\n * @memberof RPC\n * @interface IControlIHave\n * @property {string|null} [topicID] ControlIHave topicID\n * @property {Array.|null} [messageIDs] ControlIHave messageIDs\n */\n\n /**\n * Constructs a new ControlIHave.\n * @memberof RPC\n * @classdesc Represents a ControlIHave.\n * @implements IControlIHave\n * @constructor\n * @param {RPC.IControlIHave=} [p] Properties to set\n */\n function ControlIHave(p) {\n this.messageIDs = [];\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * ControlIHave topicID.\n * @member {string|null|undefined} topicID\n * @memberof RPC.ControlIHave\n * @instance\n */\n ControlIHave.prototype.topicID = null;\n\n /**\n * ControlIHave messageIDs.\n * @member {Array.} messageIDs\n * @memberof RPC.ControlIHave\n * @instance\n */\n ControlIHave.prototype.messageIDs = $util.emptyArray;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * ControlIHave _topicID.\n * @member {\"topicID\"|undefined} _topicID\n * @memberof RPC.ControlIHave\n * @instance\n */\n Object.defineProperty(ControlIHave.prototype, \"_topicID\", {\n get: $util.oneOfGetter($oneOfFields = [\"topicID\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified ControlIHave message. Does not implicitly {@link RPC.ControlIHave.verify|verify} messages.\n * @function encode\n * @memberof RPC.ControlIHave\n * @static\n * @param {RPC.IControlIHave} m ControlIHave message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ControlIHave.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.topicID != null && Object.hasOwnProperty.call(m, \"topicID\"))\n w.uint32(10).string(m.topicID);\n if (m.messageIDs != null && m.messageIDs.length) {\n for (var i = 0; i < m.messageIDs.length; ++i)\n w.uint32(18).bytes(m.messageIDs[i]);\n }\n return w;\n };\n\n /**\n * Decodes a ControlIHave message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.ControlIHave\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.ControlIHave} ControlIHave\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ControlIHave.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.ControlIHave();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n case 2:\n if (!(m.messageIDs && m.messageIDs.length))\n m.messageIDs = [];\n m.messageIDs.push(r.bytes());\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a ControlIHave message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.ControlIHave\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.ControlIHave} ControlIHave\n */\n ControlIHave.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.ControlIHave)\n return d;\n var m = new $root.RPC.ControlIHave();\n if (d.topicID != null) {\n m.topicID = String(d.topicID);\n }\n if (d.messageIDs) {\n if (!Array.isArray(d.messageIDs))\n throw TypeError(\".RPC.ControlIHave.messageIDs: array expected\");\n m.messageIDs = [];\n for (var i = 0; i < d.messageIDs.length; ++i) {\n if (typeof d.messageIDs[i] === \"string\")\n $util.base64.decode(d.messageIDs[i], m.messageIDs[i] = $util.newBuffer($util.base64.length(d.messageIDs[i])), 0);\n else if (d.messageIDs[i].length)\n m.messageIDs[i] = d.messageIDs[i];\n }\n }\n return m;\n };\n\n /**\n * Creates a plain object from a ControlIHave message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.ControlIHave\n * @static\n * @param {RPC.ControlIHave} m ControlIHave\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n ControlIHave.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.arrays || o.defaults) {\n d.messageIDs = [];\n }\n if (m.topicID != null && m.hasOwnProperty(\"topicID\")) {\n d.topicID = m.topicID;\n if (o.oneofs)\n d._topicID = \"topicID\";\n }\n if (m.messageIDs && m.messageIDs.length) {\n d.messageIDs = [];\n for (var j = 0; j < m.messageIDs.length; ++j) {\n d.messageIDs[j] = o.bytes === String ? $util.base64.encode(m.messageIDs[j], 0, m.messageIDs[j].length) : o.bytes === Array ? Array.prototype.slice.call(m.messageIDs[j]) : m.messageIDs[j];\n }\n }\n return d;\n };\n\n /**\n * Converts this ControlIHave to JSON.\n * @function toJSON\n * @memberof RPC.ControlIHave\n * @instance\n * @returns {Object.} JSON object\n */\n ControlIHave.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ControlIHave;\n })();\n\n RPC.ControlIWant = (function() {\n\n /**\n * Properties of a ControlIWant.\n * @memberof RPC\n * @interface IControlIWant\n * @property {Array.|null} [messageIDs] ControlIWant messageIDs\n */\n\n /**\n * Constructs a new ControlIWant.\n * @memberof RPC\n * @classdesc Represents a ControlIWant.\n * @implements IControlIWant\n * @constructor\n * @param {RPC.IControlIWant=} [p] Properties to set\n */\n function ControlIWant(p) {\n this.messageIDs = [];\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * ControlIWant messageIDs.\n * @member {Array.} messageIDs\n * @memberof RPC.ControlIWant\n * @instance\n */\n ControlIWant.prototype.messageIDs = $util.emptyArray;\n\n /**\n * Encodes the specified ControlIWant message. Does not implicitly {@link RPC.ControlIWant.verify|verify} messages.\n * @function encode\n * @memberof RPC.ControlIWant\n * @static\n * @param {RPC.IControlIWant} m ControlIWant message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ControlIWant.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.messageIDs != null && m.messageIDs.length) {\n for (var i = 0; i < m.messageIDs.length; ++i)\n w.uint32(10).bytes(m.messageIDs[i]);\n }\n return w;\n };\n\n /**\n * Decodes a ControlIWant message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.ControlIWant\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.ControlIWant} ControlIWant\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ControlIWant.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.ControlIWant();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n if (!(m.messageIDs && m.messageIDs.length))\n m.messageIDs = [];\n m.messageIDs.push(r.bytes());\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a ControlIWant message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.ControlIWant\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.ControlIWant} ControlIWant\n */\n ControlIWant.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.ControlIWant)\n return d;\n var m = new $root.RPC.ControlIWant();\n if (d.messageIDs) {\n if (!Array.isArray(d.messageIDs))\n throw TypeError(\".RPC.ControlIWant.messageIDs: array expected\");\n m.messageIDs = [];\n for (var i = 0; i < d.messageIDs.length; ++i) {\n if (typeof d.messageIDs[i] === \"string\")\n $util.base64.decode(d.messageIDs[i], m.messageIDs[i] = $util.newBuffer($util.base64.length(d.messageIDs[i])), 0);\n else if (d.messageIDs[i].length)\n m.messageIDs[i] = d.messageIDs[i];\n }\n }\n return m;\n };\n\n /**\n * Creates a plain object from a ControlIWant message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.ControlIWant\n * @static\n * @param {RPC.ControlIWant} m ControlIWant\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n ControlIWant.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.arrays || o.defaults) {\n d.messageIDs = [];\n }\n if (m.messageIDs && m.messageIDs.length) {\n d.messageIDs = [];\n for (var j = 0; j < m.messageIDs.length; ++j) {\n d.messageIDs[j] = o.bytes === String ? $util.base64.encode(m.messageIDs[j], 0, m.messageIDs[j].length) : o.bytes === Array ? Array.prototype.slice.call(m.messageIDs[j]) : m.messageIDs[j];\n }\n }\n return d;\n };\n\n /**\n * Converts this ControlIWant to JSON.\n * @function toJSON\n * @memberof RPC.ControlIWant\n * @instance\n * @returns {Object.} JSON object\n */\n ControlIWant.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ControlIWant;\n })();\n\n RPC.ControlGraft = (function() {\n\n /**\n * Properties of a ControlGraft.\n * @memberof RPC\n * @interface IControlGraft\n * @property {string|null} [topicID] ControlGraft topicID\n */\n\n /**\n * Constructs a new ControlGraft.\n * @memberof RPC\n * @classdesc Represents a ControlGraft.\n * @implements IControlGraft\n * @constructor\n * @param {RPC.IControlGraft=} [p] Properties to set\n */\n function ControlGraft(p) {\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * ControlGraft topicID.\n * @member {string|null|undefined} topicID\n * @memberof RPC.ControlGraft\n * @instance\n */\n ControlGraft.prototype.topicID = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * ControlGraft _topicID.\n * @member {\"topicID\"|undefined} _topicID\n * @memberof RPC.ControlGraft\n * @instance\n */\n Object.defineProperty(ControlGraft.prototype, \"_topicID\", {\n get: $util.oneOfGetter($oneOfFields = [\"topicID\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified ControlGraft message. Does not implicitly {@link RPC.ControlGraft.verify|verify} messages.\n * @function encode\n * @memberof RPC.ControlGraft\n * @static\n * @param {RPC.IControlGraft} m ControlGraft message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ControlGraft.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.topicID != null && Object.hasOwnProperty.call(m, \"topicID\"))\n w.uint32(10).string(m.topicID);\n return w;\n };\n\n /**\n * Decodes a ControlGraft message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.ControlGraft\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.ControlGraft} ControlGraft\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ControlGraft.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.ControlGraft();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a ControlGraft message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.ControlGraft\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.ControlGraft} ControlGraft\n */\n ControlGraft.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.ControlGraft)\n return d;\n var m = new $root.RPC.ControlGraft();\n if (d.topicID != null) {\n m.topicID = String(d.topicID);\n }\n return m;\n };\n\n /**\n * Creates a plain object from a ControlGraft message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.ControlGraft\n * @static\n * @param {RPC.ControlGraft} m ControlGraft\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n ControlGraft.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (m.topicID != null && m.hasOwnProperty(\"topicID\")) {\n d.topicID = m.topicID;\n if (o.oneofs)\n d._topicID = \"topicID\";\n }\n return d;\n };\n\n /**\n * Converts this ControlGraft to JSON.\n * @function toJSON\n * @memberof RPC.ControlGraft\n * @instance\n * @returns {Object.} JSON object\n */\n ControlGraft.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ControlGraft;\n })();\n\n RPC.ControlPrune = (function() {\n\n /**\n * Properties of a ControlPrune.\n * @memberof RPC\n * @interface IControlPrune\n * @property {string|null} [topicID] ControlPrune topicID\n * @property {Array.|null} [peers] ControlPrune peers\n * @property {number|null} [backoff] ControlPrune backoff\n */\n\n /**\n * Constructs a new ControlPrune.\n * @memberof RPC\n * @classdesc Represents a ControlPrune.\n * @implements IControlPrune\n * @constructor\n * @param {RPC.IControlPrune=} [p] Properties to set\n */\n function ControlPrune(p) {\n this.peers = [];\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * ControlPrune topicID.\n * @member {string|null|undefined} topicID\n * @memberof RPC.ControlPrune\n * @instance\n */\n ControlPrune.prototype.topicID = null;\n\n /**\n * ControlPrune peers.\n * @member {Array.} peers\n * @memberof RPC.ControlPrune\n * @instance\n */\n ControlPrune.prototype.peers = $util.emptyArray;\n\n /**\n * ControlPrune backoff.\n * @member {number|null|undefined} backoff\n * @memberof RPC.ControlPrune\n * @instance\n */\n ControlPrune.prototype.backoff = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * ControlPrune _topicID.\n * @member {\"topicID\"|undefined} _topicID\n * @memberof RPC.ControlPrune\n * @instance\n */\n Object.defineProperty(ControlPrune.prototype, \"_topicID\", {\n get: $util.oneOfGetter($oneOfFields = [\"topicID\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * ControlPrune _backoff.\n * @member {\"backoff\"|undefined} _backoff\n * @memberof RPC.ControlPrune\n * @instance\n */\n Object.defineProperty(ControlPrune.prototype, \"_backoff\", {\n get: $util.oneOfGetter($oneOfFields = [\"backoff\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified ControlPrune message. Does not implicitly {@link RPC.ControlPrune.verify|verify} messages.\n * @function encode\n * @memberof RPC.ControlPrune\n * @static\n * @param {RPC.IControlPrune} m ControlPrune message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ControlPrune.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.topicID != null && Object.hasOwnProperty.call(m, \"topicID\"))\n w.uint32(10).string(m.topicID);\n if (m.peers != null && m.peers.length) {\n for (var i = 0; i < m.peers.length; ++i)\n $root.RPC.PeerInfo.encode(m.peers[i], w.uint32(18).fork()).ldelim();\n }\n if (m.backoff != null && Object.hasOwnProperty.call(m, \"backoff\"))\n w.uint32(24).uint64(m.backoff);\n return w;\n };\n\n /**\n * Decodes a ControlPrune message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.ControlPrune\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.ControlPrune} ControlPrune\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ControlPrune.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.ControlPrune();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.topicID = r.string();\n break;\n case 2:\n if (!(m.peers && m.peers.length))\n m.peers = [];\n m.peers.push($root.RPC.PeerInfo.decode(r, r.uint32()));\n break;\n case 3:\n m.backoff = r.uint64();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a ControlPrune message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.ControlPrune\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.ControlPrune} ControlPrune\n */\n ControlPrune.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.ControlPrune)\n return d;\n var m = new $root.RPC.ControlPrune();\n if (d.topicID != null) {\n m.topicID = String(d.topicID);\n }\n if (d.peers) {\n if (!Array.isArray(d.peers))\n throw TypeError(\".RPC.ControlPrune.peers: array expected\");\n m.peers = [];\n for (var i = 0; i < d.peers.length; ++i) {\n if (typeof d.peers[i] !== \"object\")\n throw TypeError(\".RPC.ControlPrune.peers: object expected\");\n m.peers[i] = $root.RPC.PeerInfo.fromObject(d.peers[i]);\n }\n }\n if (d.backoff != null) {\n if ($util.Long)\n (m.backoff = $util.Long.fromValue(d.backoff)).unsigned = true;\n else if (typeof d.backoff === \"string\")\n m.backoff = parseInt(d.backoff, 10);\n else if (typeof d.backoff === \"number\")\n m.backoff = d.backoff;\n else if (typeof d.backoff === \"object\")\n m.backoff = new $util.LongBits(d.backoff.low >>> 0, d.backoff.high >>> 0).toNumber(true);\n }\n return m;\n };\n\n /**\n * Creates a plain object from a ControlPrune message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.ControlPrune\n * @static\n * @param {RPC.ControlPrune} m ControlPrune\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n ControlPrune.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.arrays || o.defaults) {\n d.peers = [];\n }\n if (m.topicID != null && m.hasOwnProperty(\"topicID\")) {\n d.topicID = m.topicID;\n if (o.oneofs)\n d._topicID = \"topicID\";\n }\n if (m.peers && m.peers.length) {\n d.peers = [];\n for (var j = 0; j < m.peers.length; ++j) {\n d.peers[j] = $root.RPC.PeerInfo.toObject(m.peers[j], o);\n }\n }\n if (m.backoff != null && m.hasOwnProperty(\"backoff\")) {\n if (typeof m.backoff === \"number\")\n d.backoff = o.longs === String ? String(m.backoff) : m.backoff;\n else\n d.backoff = o.longs === String ? $util.Long.prototype.toString.call(m.backoff) : o.longs === Number ? new $util.LongBits(m.backoff.low >>> 0, m.backoff.high >>> 0).toNumber(true) : m.backoff;\n if (o.oneofs)\n d._backoff = \"backoff\";\n }\n return d;\n };\n\n /**\n * Converts this ControlPrune to JSON.\n * @function toJSON\n * @memberof RPC.ControlPrune\n * @instance\n * @returns {Object.} JSON object\n */\n ControlPrune.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ControlPrune;\n })();\n\n RPC.PeerInfo = (function() {\n\n /**\n * Properties of a PeerInfo.\n * @memberof RPC\n * @interface IPeerInfo\n * @property {Uint8Array|null} [peerID] PeerInfo peerID\n * @property {Uint8Array|null} [signedPeerRecord] PeerInfo signedPeerRecord\n */\n\n /**\n * Constructs a new PeerInfo.\n * @memberof RPC\n * @classdesc Represents a PeerInfo.\n * @implements IPeerInfo\n * @constructor\n * @param {RPC.IPeerInfo=} [p] Properties to set\n */\n function PeerInfo(p) {\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * PeerInfo peerID.\n * @member {Uint8Array|null|undefined} peerID\n * @memberof RPC.PeerInfo\n * @instance\n */\n PeerInfo.prototype.peerID = null;\n\n /**\n * PeerInfo signedPeerRecord.\n * @member {Uint8Array|null|undefined} signedPeerRecord\n * @memberof RPC.PeerInfo\n * @instance\n */\n PeerInfo.prototype.signedPeerRecord = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * PeerInfo _peerID.\n * @member {\"peerID\"|undefined} _peerID\n * @memberof RPC.PeerInfo\n * @instance\n */\n Object.defineProperty(PeerInfo.prototype, \"_peerID\", {\n get: $util.oneOfGetter($oneOfFields = [\"peerID\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * PeerInfo _signedPeerRecord.\n * @member {\"signedPeerRecord\"|undefined} _signedPeerRecord\n * @memberof RPC.PeerInfo\n * @instance\n */\n Object.defineProperty(PeerInfo.prototype, \"_signedPeerRecord\", {\n get: $util.oneOfGetter($oneOfFields = [\"signedPeerRecord\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Encodes the specified PeerInfo message. Does not implicitly {@link RPC.PeerInfo.verify|verify} messages.\n * @function encode\n * @memberof RPC.PeerInfo\n * @static\n * @param {RPC.IPeerInfo} m PeerInfo message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PeerInfo.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.peerID != null && Object.hasOwnProperty.call(m, \"peerID\"))\n w.uint32(10).bytes(m.peerID);\n if (m.signedPeerRecord != null && Object.hasOwnProperty.call(m, \"signedPeerRecord\"))\n w.uint32(18).bytes(m.signedPeerRecord);\n return w;\n };\n\n /**\n * Decodes a PeerInfo message from the specified reader or buffer.\n * @function decode\n * @memberof RPC.PeerInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {RPC.PeerInfo} PeerInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PeerInfo.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.RPC.PeerInfo();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.peerID = r.bytes();\n break;\n case 2:\n m.signedPeerRecord = r.bytes();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a PeerInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof RPC.PeerInfo\n * @static\n * @param {Object.} d Plain object\n * @returns {RPC.PeerInfo} PeerInfo\n */\n PeerInfo.fromObject = function fromObject(d) {\n if (d instanceof $root.RPC.PeerInfo)\n return d;\n var m = new $root.RPC.PeerInfo();\n if (d.peerID != null) {\n if (typeof d.peerID === \"string\")\n $util.base64.decode(d.peerID, m.peerID = $util.newBuffer($util.base64.length(d.peerID)), 0);\n else if (d.peerID.length)\n m.peerID = d.peerID;\n }\n if (d.signedPeerRecord != null) {\n if (typeof d.signedPeerRecord === \"string\")\n $util.base64.decode(d.signedPeerRecord, m.signedPeerRecord = $util.newBuffer($util.base64.length(d.signedPeerRecord)), 0);\n else if (d.signedPeerRecord.length)\n m.signedPeerRecord = d.signedPeerRecord;\n }\n return m;\n };\n\n /**\n * Creates a plain object from a PeerInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof RPC.PeerInfo\n * @static\n * @param {RPC.PeerInfo} m PeerInfo\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n PeerInfo.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (m.peerID != null && m.hasOwnProperty(\"peerID\")) {\n d.peerID = o.bytes === String ? $util.base64.encode(m.peerID, 0, m.peerID.length) : o.bytes === Array ? Array.prototype.slice.call(m.peerID) : m.peerID;\n if (o.oneofs)\n d._peerID = \"peerID\";\n }\n if (m.signedPeerRecord != null && m.hasOwnProperty(\"signedPeerRecord\")) {\n d.signedPeerRecord = o.bytes === String ? $util.base64.encode(m.signedPeerRecord, 0, m.signedPeerRecord.length) : o.bytes === Array ? Array.prototype.slice.call(m.signedPeerRecord) : m.signedPeerRecord;\n if (o.oneofs)\n d._signedPeerRecord = \"signedPeerRecord\";\n }\n return d;\n };\n\n /**\n * Converts this PeerInfo to JSON.\n * @function toJSON\n * @memberof RPC.PeerInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PeerInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PeerInfo;\n })();\n\n return RPC;\n })();\n\n return $root;\n});\n","import cjs from \"./rpc.cjs\"\n\nexport const {RPC} = cjs\n","export class MessageCache {\n gossip;\n msgs = new Map();\n msgIdToStrFn;\n history = [];\n /** Track with accounting of messages in the mcache that are not yet validated */\n notValidatedCount = 0;\n /**\n * Holds history of messages in timebounded history arrays\n */\n constructor(\n /**\n * The number of indices in the cache history used for gossiping. That means that a message\n * won't get gossiped anymore when shift got called `gossip` many times after inserting the\n * message in the cache.\n */\n gossip, historyCapacity, msgIdToStrFn) {\n this.gossip = gossip;\n this.msgIdToStrFn = msgIdToStrFn;\n for (let i = 0; i < historyCapacity; i++) {\n this.history[i] = [];\n }\n }\n get size() {\n return this.msgs.size;\n }\n /**\n * Adds a message to the current window and the cache\n * Returns true if the message is not known and is inserted in the cache\n */\n put(messageId, msg, validated = false) {\n const { msgIdStr } = messageId;\n // Don't add duplicate entries to the cache.\n if (this.msgs.has(msgIdStr)) {\n return false;\n }\n this.msgs.set(msgIdStr, {\n message: msg,\n validated,\n originatingPeers: new Set(),\n iwantCounts: new Map()\n });\n this.history[0].push({ ...messageId, topic: msg.topic });\n if (!validated) {\n this.notValidatedCount++;\n }\n return true;\n }\n observeDuplicate(msgId, fromPeerIdStr) {\n const entry = this.msgs.get(msgId);\n if ((entry != null) &&\n // if the message is already validated, we don't need to store extra peers sending us\n // duplicates as the message has already been forwarded\n !entry.validated) {\n entry.originatingPeers.add(fromPeerIdStr);\n }\n }\n /**\n * Retrieves a message from the cache by its ID, if it is still present\n */\n get(msgId) {\n return this.msgs.get(this.msgIdToStrFn(msgId))?.message;\n }\n /**\n * Increases the iwant count for the given message by one and returns the message together\n * with the iwant if the message exists.\n */\n getWithIWantCount(msgIdStr, p) {\n const msg = this.msgs.get(msgIdStr);\n if (msg == null) {\n return null;\n }\n const count = (msg.iwantCounts.get(p) ?? 0) + 1;\n msg.iwantCounts.set(p, count);\n return { msg: msg.message, count };\n }\n /**\n * Retrieves a list of message IDs for a set of topics\n */\n getGossipIDs(topics) {\n const msgIdsByTopic = new Map();\n for (let i = 0; i < this.gossip; i++) {\n this.history[i].forEach((entry) => {\n const msg = this.msgs.get(entry.msgIdStr);\n if ((msg?.validated ?? false) && topics.has(entry.topic)) {\n let msgIds = msgIdsByTopic.get(entry.topic);\n if (msgIds == null) {\n msgIds = [];\n msgIdsByTopic.set(entry.topic, msgIds);\n }\n msgIds.push(entry.msgId);\n }\n });\n }\n return msgIdsByTopic;\n }\n /**\n * Gets a message with msgId and tags it as validated.\n * This function also returns the known peers that have sent us this message. This is used to\n * prevent us sending redundant messages to peers who have already propagated it.\n */\n validate(msgId) {\n const entry = this.msgs.get(msgId);\n if (entry == null) {\n return null;\n }\n if (!entry.validated) {\n this.notValidatedCount--;\n }\n const { message, originatingPeers } = entry;\n entry.validated = true;\n // Clear the known peers list (after a message is validated, it is forwarded and we no\n // longer need to store the originating peers).\n entry.originatingPeers = new Set();\n return { message, originatingPeers };\n }\n /**\n * Shifts the current window, discarding messages older than this.history.length of the cache\n */\n shift() {\n const lastCacheEntries = this.history[this.history.length - 1];\n lastCacheEntries.forEach((cacheEntry) => {\n const entry = this.msgs.get(cacheEntry.msgIdStr);\n if (entry != null) {\n this.msgs.delete(cacheEntry.msgIdStr);\n if (!entry.validated) {\n this.notValidatedCount--;\n }\n }\n });\n this.history.pop();\n this.history.unshift([]);\n }\n remove(msgId) {\n const entry = this.msgs.get(msgId);\n if (entry == null) {\n return null;\n }\n // Keep the message on the history vector, it will be dropped on a shift()\n this.msgs.delete(msgId);\n return entry;\n }\n}\n//# sourceMappingURL=message-cache.js.map","import { TopicValidatorResult } from '@libp2p/interface';\nexport var SignaturePolicy;\n(function (SignaturePolicy) {\n /**\n * On the producing side:\n * - Build messages with the signature, key (from may be enough for certain inlineable public key types), from and seqno fields.\n *\n * On the consuming side:\n * - Enforce the fields to be present, reject otherwise.\n * - Propagate only if the fields are valid and signature can be verified, reject otherwise.\n */\n SignaturePolicy[\"StrictSign\"] = \"StrictSign\";\n /**\n * On the producing side:\n * - Build messages without the signature, key, from and seqno fields.\n * - The corresponding protobuf key-value pairs are absent from the marshalled message, not just empty.\n *\n * On the consuming side:\n * - Enforce the fields to be absent, reject otherwise.\n * - Propagate only if the fields are absent, reject otherwise.\n * - A message_id function will not be able to use the above fields, and should instead rely on the data field. A commonplace strategy is to calculate a hash.\n */\n SignaturePolicy[\"StrictNoSign\"] = \"StrictNoSign\";\n})(SignaturePolicy || (SignaturePolicy = {}));\nexport var PublishConfigType;\n(function (PublishConfigType) {\n PublishConfigType[PublishConfigType[\"Signing\"] = 0] = \"Signing\";\n PublishConfigType[PublishConfigType[\"Anonymous\"] = 1] = \"Anonymous\";\n})(PublishConfigType || (PublishConfigType = {}));\nexport var RejectReason;\n(function (RejectReason) {\n /**\n * The message failed the configured validation during decoding.\n * SelfOrigin is considered a ValidationError\n */\n RejectReason[\"Error\"] = \"error\";\n /**\n * Custom validator fn reported status IGNORE.\n */\n RejectReason[\"Ignore\"] = \"ignore\";\n /**\n * Custom validator fn reported status REJECT.\n */\n RejectReason[\"Reject\"] = \"reject\";\n /**\n * The peer that sent the message OR the source from field is blacklisted.\n * Causes messages to be ignored, not penalized, neither do score record creation.\n */\n RejectReason[\"Blacklisted\"] = \"blacklisted\";\n})(RejectReason || (RejectReason = {}));\nexport var ValidateError;\n(function (ValidateError) {\n /// The message has an invalid signature,\n ValidateError[\"InvalidSignature\"] = \"invalid_signature\";\n /// The sequence number was the incorrect size\n ValidateError[\"InvalidSeqno\"] = \"invalid_seqno\";\n /// The PeerId was invalid\n ValidateError[\"InvalidPeerId\"] = \"invalid_peerid\";\n /// Signature existed when validation has been sent to\n /// [`crate::behaviour::MessageAuthenticity::Anonymous`].\n ValidateError[\"SignaturePresent\"] = \"signature_present\";\n /// Sequence number existed when validation has been sent to\n /// [`crate::behaviour::MessageAuthenticity::Anonymous`].\n ValidateError[\"SeqnoPresent\"] = \"seqno_present\";\n /// Message source existed when validation has been sent to\n /// [`crate::behaviour::MessageAuthenticity::Anonymous`].\n ValidateError[\"FromPresent\"] = \"from_present\";\n /// The data transformation failed.\n ValidateError[\"TransformFailed\"] = \"transform_failed\";\n})(ValidateError || (ValidateError = {}));\nexport var MessageStatus;\n(function (MessageStatus) {\n MessageStatus[\"duplicate\"] = \"duplicate\";\n MessageStatus[\"invalid\"] = \"invalid\";\n MessageStatus[\"valid\"] = \"valid\";\n})(MessageStatus || (MessageStatus = {}));\n/**\n * Typesafe conversion of MessageAcceptance -> RejectReason. TS ensures all values covered\n */\nexport function rejectReasonFromAcceptance(acceptance) {\n switch (acceptance) {\n case TopicValidatorResult.Ignore:\n return RejectReason.Ignore;\n case TopicValidatorResult.Reject:\n return RejectReason.Reject;\n default:\n throw new Error('Unreachable');\n }\n}\n//# sourceMappingURL=types.js.map","import { TopicValidatorResult } from '@libp2p/interface';\nimport { MessageStatus, RejectReason } from './types.js';\nexport var MessageSource;\n(function (MessageSource) {\n MessageSource[\"forward\"] = \"forward\";\n MessageSource[\"publish\"] = \"publish\";\n})(MessageSource || (MessageSource = {}));\nexport var InclusionReason;\n(function (InclusionReason) {\n /** Peer was a fanaout peer. */\n InclusionReason[\"Fanout\"] = \"fanout\";\n /** Included from random selection. */\n InclusionReason[\"Random\"] = \"random\";\n /** Peer subscribed. */\n InclusionReason[\"Subscribed\"] = \"subscribed\";\n /** On heartbeat, peer was included to fill the outbound quota. */\n InclusionReason[\"Outbound\"] = \"outbound\";\n /** On heartbeat, not enough peers in mesh */\n InclusionReason[\"NotEnough\"] = \"not_enough\";\n /** On heartbeat opportunistic grafting due to low mesh score */\n InclusionReason[\"Opportunistic\"] = \"opportunistic\";\n})(InclusionReason || (InclusionReason = {}));\n/// Reasons why a peer was removed from the mesh.\nexport var ChurnReason;\n(function (ChurnReason) {\n /// Peer disconnected.\n ChurnReason[\"Dc\"] = \"disconnected\";\n /// Peer had a bad score.\n ChurnReason[\"BadScore\"] = \"bad_score\";\n /// Peer sent a PRUNE.\n ChurnReason[\"Prune\"] = \"prune\";\n /// Too many peers.\n ChurnReason[\"Excess\"] = \"excess\";\n})(ChurnReason || (ChurnReason = {}));\n/// Kinds of reasons a peer's score has been penalized\nexport var ScorePenalty;\n(function (ScorePenalty) {\n /// A peer grafted before waiting the back-off time.\n ScorePenalty[\"GraftBackoff\"] = \"graft_backoff\";\n /// A Peer did not respond to an IWANT request in time.\n ScorePenalty[\"BrokenPromise\"] = \"broken_promise\";\n /// A Peer did not send enough messages as expected.\n ScorePenalty[\"MessageDeficit\"] = \"message_deficit\";\n /// Too many peers under one IP address.\n ScorePenalty[\"IPColocation\"] = \"IP_colocation\";\n})(ScorePenalty || (ScorePenalty = {}));\nexport var IHaveIgnoreReason;\n(function (IHaveIgnoreReason) {\n IHaveIgnoreReason[\"LowScore\"] = \"low_score\";\n IHaveIgnoreReason[\"MaxIhave\"] = \"max_ihave\";\n IHaveIgnoreReason[\"MaxIasked\"] = \"max_iasked\";\n})(IHaveIgnoreReason || (IHaveIgnoreReason = {}));\nexport var ScoreThreshold;\n(function (ScoreThreshold) {\n ScoreThreshold[\"graylist\"] = \"graylist\";\n ScoreThreshold[\"publish\"] = \"publish\";\n ScoreThreshold[\"gossip\"] = \"gossip\";\n ScoreThreshold[\"mesh\"] = \"mesh\";\n})(ScoreThreshold || (ScoreThreshold = {}));\n/**\n * A collection of metrics used throughout the Gossipsub behaviour.\n * NOTE: except for special reasons, do not add more than 1 label for frequent metrics,\n * there's a performance penalty as of June 2023.\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type\nexport function getMetrics(register, topicStrToLabel, opts) {\n // Using function style instead of class to prevent having to re-declare all MetricsPrometheus types.\n return {\n /* Metrics for static config */\n protocolsEnabled: register.gauge({\n name: 'gossipsub_protocol',\n help: 'Status of enabled protocols',\n labelNames: ['protocol']\n }),\n /* Metrics per known topic */\n /**\n * Status of our subscription to this topic. This metric allows analyzing other topic metrics\n * filtered by our current subscription status.\n * = rust-libp2p `topic_subscription_status` */\n topicSubscriptionStatus: register.gauge({\n name: 'gossipsub_topic_subscription_status',\n help: 'Status of our subscription to this topic',\n labelNames: ['topicStr']\n }),\n /** Number of peers subscribed to each topic. This allows us to analyze a topic's behaviour\n * regardless of our subscription status. */\n topicPeersCount: register.gauge({\n name: 'gossipsub_topic_peer_count',\n help: 'Number of peers subscribed to each topic',\n labelNames: ['topicStr']\n }),\n /* Metrics regarding mesh state */\n /**\n * Number of peers in our mesh. This metric should be updated with the count of peers for a\n * topic in the mesh regardless of inclusion and churn events.\n * = rust-libp2p `mesh_peer_counts` */\n meshPeerCounts: register.gauge({\n name: 'gossipsub_mesh_peer_count',\n help: 'Number of peers in our mesh',\n labelNames: ['topicStr']\n }),\n /**\n * Number of times we include peers in a topic mesh for different reasons.\n * = rust-libp2p `mesh_peer_inclusion_events` */\n meshPeerInclusionEventsFanout: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_fanout_total',\n help: 'Number of times we include peers in a topic mesh for fanout reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsRandom: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_random_total',\n help: 'Number of times we include peers in a topic mesh for random reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsSubscribed: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_subscribed_total',\n help: 'Number of times we include peers in a topic mesh for subscribed reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsOutbound: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_outbound_total',\n help: 'Number of times we include peers in a topic mesh for outbound reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsNotEnough: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_not_enough_total',\n help: 'Number of times we include peers in a topic mesh for not_enough reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsOpportunistic: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_opportunistic_total',\n help: 'Number of times we include peers in a topic mesh for opportunistic reasons',\n labelNames: ['topic']\n }),\n meshPeerInclusionEventsUnknown: register.gauge({\n name: 'gossipsub_mesh_peer_inclusion_events_unknown_total',\n help: 'Number of times we include peers in a topic mesh for unknown reasons',\n labelNames: ['topic']\n }),\n /**\n * Number of times we remove peers in a topic mesh for different reasons.\n * = rust-libp2p `mesh_peer_churn_events` */\n meshPeerChurnEventsDisconnected: register.gauge({\n name: 'gossipsub_peer_churn_events_disconnected_total',\n help: 'Number of times we remove peers in a topic mesh for disconnected reasons',\n labelNames: ['topic']\n }),\n meshPeerChurnEventsBadScore: register.gauge({\n name: 'gossipsub_peer_churn_events_bad_score_total',\n help: 'Number of times we remove peers in a topic mesh for bad_score reasons',\n labelNames: ['topic']\n }),\n meshPeerChurnEventsPrune: register.gauge({\n name: 'gossipsub_peer_churn_events_prune_total',\n help: 'Number of times we remove peers in a topic mesh for prune reasons',\n labelNames: ['topic']\n }),\n meshPeerChurnEventsExcess: register.gauge({\n name: 'gossipsub_peer_churn_events_excess_total',\n help: 'Number of times we remove peers in a topic mesh for excess reasons',\n labelNames: ['topic']\n }),\n meshPeerChurnEventsUnknown: register.gauge({\n name: 'gossipsub_peer_churn_events_unknown_total',\n help: 'Number of times we remove peers in a topic mesh for unknown reasons',\n labelNames: ['topic']\n }),\n /* General Metrics */\n /**\n * Gossipsub supports floodsub, gossipsub v1.0 and gossipsub v1.1. Peers are classified based\n * on which protocol they support. This metric keeps track of the number of peers that are\n * connected of each type. */\n peersPerProtocol: register.gauge({\n name: 'gossipsub_peers_per_protocol_count',\n help: 'Peers connected for each topic',\n labelNames: ['protocol']\n }),\n /** The time it takes to complete one iteration of the heartbeat. */\n heartbeatDuration: register.histogram({\n name: 'gossipsub_heartbeat_duration_seconds',\n help: 'The time it takes to complete one iteration of the heartbeat',\n // Should take <10ms, over 1s it's a huge issue that needs debugging, since a heartbeat will be cancelled\n buckets: [0.01, 0.1, 1]\n }),\n /** Heartbeat run took longer than heartbeat interval so next is skipped */\n heartbeatSkipped: register.gauge({\n name: 'gossipsub_heartbeat_skipped',\n help: 'Heartbeat run took longer than heartbeat interval so next is skipped'\n }),\n /**\n * Message validation results for each topic.\n * Invalid == Reject?\n * = rust-libp2p `invalid_messages`, `accepted_messages`, `ignored_messages`, `rejected_messages` */\n acceptedMessagesTotal: register.gauge({\n name: 'gossipsub_accepted_messages_total',\n help: 'Total accepted messages for each topic',\n labelNames: ['topic']\n }),\n ignoredMessagesTotal: register.gauge({\n name: 'gossipsub_ignored_messages_total',\n help: 'Total ignored messages for each topic',\n labelNames: ['topic']\n }),\n rejectedMessagesTotal: register.gauge({\n name: 'gossipsub_rejected_messages_total',\n help: 'Total rejected messages for each topic',\n labelNames: ['topic']\n }),\n unknownValidationResultsTotal: register.gauge({\n name: 'gossipsub_unknown_validation_results_total',\n help: 'Total unknown validation results for each topic',\n labelNames: ['topic']\n }),\n /**\n * When the user validates a message, it tries to re propagate it to its mesh peers. If the\n * message expires from the memcache before it can be validated, we count this a cache miss\n * and it is an indicator that the memcache size should be increased.\n * = rust-libp2p `mcache_misses` */\n asyncValidationMcacheHit: register.gauge({\n name: 'gossipsub_async_validation_mcache_hit_total',\n help: 'Async validation result reported by the user layer',\n labelNames: ['hit']\n }),\n asyncValidationDelayFromFirstSeenSec: register.histogram({\n name: 'gossipsub_async_validation_delay_from_first_seen',\n help: 'Async validation report delay from first seen in second',\n buckets: [0.01, 0.03, 0.1, 0.3, 1, 3, 10]\n }),\n asyncValidationUnknownFirstSeen: register.gauge({\n name: 'gossipsub_async_validation_unknown_first_seen_count_total',\n help: 'Async validation report unknown first seen value for message'\n }),\n // peer stream\n peerReadStreamError: register.gauge({\n name: 'gossipsub_peer_read_stream_err_count_total',\n help: 'Peer read stream error'\n }),\n // RPC outgoing. Track byte length + data structure sizes\n rpcRecvBytes: register.gauge({ name: 'gossipsub_rpc_recv_bytes_total', help: 'RPC recv' }),\n rpcRecvCount: register.gauge({ name: 'gossipsub_rpc_recv_count_total', help: 'RPC recv' }),\n rpcRecvSubscription: register.gauge({ name: 'gossipsub_rpc_recv_subscription_total', help: 'RPC recv' }),\n rpcRecvMessage: register.gauge({ name: 'gossipsub_rpc_recv_message_total', help: 'RPC recv' }),\n rpcRecvControl: register.gauge({ name: 'gossipsub_rpc_recv_control_total', help: 'RPC recv' }),\n rpcRecvIHave: register.gauge({ name: 'gossipsub_rpc_recv_ihave_total', help: 'RPC recv' }),\n rpcRecvIWant: register.gauge({ name: 'gossipsub_rpc_recv_iwant_total', help: 'RPC recv' }),\n rpcRecvGraft: register.gauge({ name: 'gossipsub_rpc_recv_graft_total', help: 'RPC recv' }),\n rpcRecvPrune: register.gauge({ name: 'gossipsub_rpc_recv_prune_total', help: 'RPC recv' }),\n rpcDataError: register.gauge({ name: 'gossipsub_rpc_data_err_count_total', help: 'RPC data error' }),\n rpcRecvError: register.gauge({ name: 'gossipsub_rpc_recv_err_count_total', help: 'RPC recv error' }),\n /** Total count of RPC dropped because acceptFrom() == false */\n rpcRecvNotAccepted: register.gauge({\n name: 'gossipsub_rpc_rcv_not_accepted_total',\n help: 'Total count of RPC dropped because acceptFrom() == false'\n }),\n // RPC incoming. Track byte length + data structure sizes\n rpcSentBytes: register.gauge({ name: 'gossipsub_rpc_sent_bytes_total', help: 'RPC sent' }),\n rpcSentCount: register.gauge({ name: 'gossipsub_rpc_sent_count_total', help: 'RPC sent' }),\n rpcSentSubscription: register.gauge({ name: 'gossipsub_rpc_sent_subscription_total', help: 'RPC sent' }),\n rpcSentMessage: register.gauge({ name: 'gossipsub_rpc_sent_message_total', help: 'RPC sent' }),\n rpcSentControl: register.gauge({ name: 'gossipsub_rpc_sent_control_total', help: 'RPC sent' }),\n rpcSentIHave: register.gauge({ name: 'gossipsub_rpc_sent_ihave_total', help: 'RPC sent' }),\n rpcSentIWant: register.gauge({ name: 'gossipsub_rpc_sent_iwant_total', help: 'RPC sent' }),\n rpcSentGraft: register.gauge({ name: 'gossipsub_rpc_sent_graft_total', help: 'RPC sent' }),\n rpcSentPrune: register.gauge({ name: 'gossipsub_rpc_sent_prune_total', help: 'RPC sent' }),\n // publish message. Track peers sent to and bytes\n /** Total count of msg published by topic */\n msgPublishCount: register.gauge({\n name: 'gossipsub_msg_publish_count_total',\n help: 'Total count of msg published by topic',\n labelNames: ['topic']\n }),\n /** Total count of peers that we publish a msg to */\n msgPublishPeersByTopic: register.gauge({\n name: 'gossipsub_msg_publish_peers_total',\n help: 'Total count of peers that we publish a msg to',\n labelNames: ['topic']\n }),\n /** Total count of peers (by group) that we publish a msg to */\n directPeersPublishedTotal: register.gauge({\n name: 'gossipsub_direct_peers_published_total',\n help: 'Total direct peers that we publish a msg to',\n labelNames: ['topic']\n }),\n floodsubPeersPublishedTotal: register.gauge({\n name: 'gossipsub_floodsub_peers_published_total',\n help: 'Total floodsub peers that we publish a msg to',\n labelNames: ['topic']\n }),\n meshPeersPublishedTotal: register.gauge({\n name: 'gossipsub_mesh_peers_published_total',\n help: 'Total mesh peers that we publish a msg to',\n labelNames: ['topic']\n }),\n fanoutPeersPublishedTotal: register.gauge({\n name: 'gossipsub_fanout_peers_published_total',\n help: 'Total fanout peers that we publish a msg to',\n labelNames: ['topic']\n }),\n /** Total count of msg publish data.length bytes */\n msgPublishBytes: register.gauge({\n name: 'gossipsub_msg_publish_bytes_total',\n help: 'Total count of msg publish data.length bytes',\n labelNames: ['topic']\n }),\n /** Total time in seconds to publish a message */\n msgPublishTime: register.histogram({\n name: 'gossipsub_msg_publish_seconds',\n help: 'Total time in seconds to publish a message',\n buckets: [0.001, 0.002, 0.005, 0.01, 0.1, 0.5, 1],\n labelNames: ['topic']\n }),\n /** Total count of msg forwarded by topic */\n msgForwardCount: register.gauge({\n name: 'gossipsub_msg_forward_count_total',\n help: 'Total count of msg forwarded by topic',\n labelNames: ['topic']\n }),\n /** Total count of peers that we forward a msg to */\n msgForwardPeers: register.gauge({\n name: 'gossipsub_msg_forward_peers_total',\n help: 'Total count of peers that we forward a msg to',\n labelNames: ['topic']\n }),\n /** Total count of recv msgs before any validation */\n msgReceivedPreValidation: register.gauge({\n name: 'gossipsub_msg_received_prevalidation_total',\n help: 'Total count of recv msgs before any validation',\n labelNames: ['topic']\n }),\n /** Total count of recv msgs error */\n msgReceivedError: register.gauge({\n name: 'gossipsub_msg_received_error_total',\n help: 'Total count of recv msgs error',\n labelNames: ['topic']\n }),\n /** Tracks distribution of recv msgs by duplicate, invalid, valid */\n prevalidationInvalidTotal: register.gauge({\n name: 'gossipsub_pre_validation_invalid_total',\n help: 'Total count of invalid messages received',\n labelNames: ['topic']\n }),\n prevalidationValidTotal: register.gauge({\n name: 'gossipsub_pre_validation_valid_total',\n help: 'Total count of valid messages received',\n labelNames: ['topic']\n }),\n prevalidationDuplicateTotal: register.gauge({\n name: 'gossipsub_pre_validation_duplicate_total',\n help: 'Total count of duplicate messages received',\n labelNames: ['topic']\n }),\n prevalidationUnknownTotal: register.gauge({\n name: 'gossipsub_pre_validation_unknown_status_total',\n help: 'Total count of unknown_status messages received',\n labelNames: ['topic']\n }),\n /** Tracks specific reason of invalid */\n msgReceivedInvalid: register.gauge({\n name: 'gossipsub_msg_received_invalid_total',\n help: 'Tracks specific reason of invalid',\n labelNames: ['error']\n }),\n msgReceivedInvalidByTopic: register.gauge({\n name: 'gossipsub_msg_received_invalid_by_topic_total',\n help: 'Tracks specific invalid message by topic',\n labelNames: ['topic']\n }),\n /** Track duplicate message delivery time */\n duplicateMsgDeliveryDelay: register.histogram({\n name: 'gossisub_duplicate_msg_delivery_delay_seconds',\n help: 'Time since the 1st duplicated message validated',\n labelNames: ['topic'],\n buckets: [\n 0.25 * opts.maxMeshMessageDeliveriesWindowSec,\n 0.5 * opts.maxMeshMessageDeliveriesWindowSec,\n Number(opts.maxMeshMessageDeliveriesWindowSec),\n 2 * opts.maxMeshMessageDeliveriesWindowSec,\n 4 * opts.maxMeshMessageDeliveriesWindowSec\n ]\n }),\n /** Total count of late msg delivery total by topic */\n duplicateMsgLateDelivery: register.gauge({\n name: 'gossisub_duplicate_msg_late_delivery_total',\n help: 'Total count of late duplicate message delivery by topic, which triggers P3 penalty',\n labelNames: ['topic']\n }),\n duplicateMsgIgnored: register.gauge({\n name: 'gossisub_ignored_published_duplicate_msgs_total',\n help: 'Total count of published duplicate message ignored by topic',\n labelNames: ['topic']\n }),\n /* Metrics related to scoring */\n /** Total times score() is called */\n scoreFnCalls: register.gauge({\n name: 'gossipsub_score_fn_calls_total',\n help: 'Total times score() is called'\n }),\n /** Total times score() call actually computed computeScore(), no cache */\n scoreFnRuns: register.gauge({\n name: 'gossipsub_score_fn_runs_total',\n help: 'Total times score() call actually computed computeScore(), no cache'\n }),\n scoreCachedDelta: register.histogram({\n name: 'gossipsub_score_cache_delta',\n help: 'Delta of score between cached values that expired',\n buckets: [10, 100, 1000]\n }),\n /** Current count of peers by score threshold */\n peersByScoreThreshold: register.gauge({\n name: 'gossipsub_peers_by_score_threshold_count',\n help: 'Current count of peers by score threshold',\n labelNames: ['threshold']\n }),\n score: register.avgMinMax({\n name: 'gossipsub_score',\n help: 'Avg min max of gossip scores'\n }),\n /**\n * Separate score weights\n * Need to use 2-label metrics in this case to debug the score weights\n **/\n scoreWeights: register.avgMinMax({\n name: 'gossipsub_score_weights',\n help: 'Separate score weights',\n labelNames: ['topic', 'p']\n }),\n /** Histogram of the scores for each mesh topic. */\n // TODO: Not implemented\n scorePerMesh: register.avgMinMax({\n name: 'gossipsub_score_per_mesh',\n help: 'Histogram of the scores for each mesh topic',\n labelNames: ['topic']\n }),\n /** A counter of the kind of penalties being applied to peers. */\n // TODO: Not fully implemented\n scoringPenalties: register.gauge({\n name: 'gossipsub_scoring_penalties_total',\n help: 'A counter of the kind of penalties being applied to peers',\n labelNames: ['penalty']\n }),\n behaviourPenalty: register.histogram({\n name: 'gossipsub_peer_stat_behaviour_penalty',\n help: 'Current peer stat behaviour_penalty at each scrape',\n buckets: [\n 0.25 * opts.behaviourPenaltyThreshold,\n 0.5 * opts.behaviourPenaltyThreshold,\n Number(opts.behaviourPenaltyThreshold),\n 2 * opts.behaviourPenaltyThreshold,\n 4 * opts.behaviourPenaltyThreshold\n ]\n }),\n // TODO:\n // - iasked per peer (on heartbeat)\n // - when promise is resolved, track messages from promises\n /** Total received IHAVE messages that we ignore for some reason */\n ihaveRcvIgnored: register.gauge({\n name: 'gossipsub_ihave_rcv_ignored_total',\n help: 'Total received IHAVE messages that we ignore for some reason',\n labelNames: ['reason']\n }),\n /** Total received IHAVE messages by topic */\n ihaveRcvMsgids: register.gauge({\n name: 'gossipsub_ihave_rcv_msgids_total',\n help: 'Total received IHAVE messages by topic',\n labelNames: ['topic']\n }),\n /**\n * Total messages per topic we don't have. Not actual requests.\n * The number of times we have decided that an IWANT control message is required for this\n * topic. A very high metric might indicate an underperforming network.\n * = rust-libp2p `topic_iwant_msgs` */\n ihaveRcvNotSeenMsgids: register.gauge({\n name: 'gossipsub_ihave_rcv_not_seen_msgids_total',\n help: 'Total messages per topic we do not have, not actual requests',\n labelNames: ['topic']\n }),\n /** Total received IWANT messages by topic */\n iwantRcvMsgids: register.gauge({\n name: 'gossipsub_iwant_rcv_msgids_total',\n help: 'Total received IWANT messages by topic',\n labelNames: ['topic']\n }),\n /** Total requested messageIDs that we don't have */\n iwantRcvDonthaveMsgids: register.gauge({\n name: 'gossipsub_iwant_rcv_dont_have_msgids_total',\n help: 'Total requested messageIDs that we do not have'\n }),\n iwantPromiseStarted: register.gauge({\n name: 'gossipsub_iwant_promise_sent_total',\n help: 'Total count of started IWANT promises'\n }),\n /** Total count of resolved IWANT promises */\n iwantPromiseResolved: register.gauge({\n name: 'gossipsub_iwant_promise_resolved_total',\n help: 'Total count of resolved IWANT promises'\n }),\n /** Total count of resolved IWANT promises from duplicate messages */\n iwantPromiseResolvedFromDuplicate: register.gauge({\n name: 'gossipsub_iwant_promise_resolved_from_duplicate_total',\n help: 'Total count of resolved IWANT promises from duplicate messages'\n }),\n /** Total count of peers we have asked IWANT promises that are resolved */\n iwantPromiseResolvedPeers: register.gauge({\n name: 'gossipsub_iwant_promise_resolved_peers',\n help: 'Total count of peers we have asked IWANT promises that are resolved'\n }),\n iwantPromiseBroken: register.gauge({\n name: 'gossipsub_iwant_promise_broken',\n help: 'Total count of broken IWANT promises'\n }),\n iwantMessagePruned: register.gauge({\n name: 'gossipsub_iwant_message_pruned',\n help: 'Total count of pruned IWANT messages'\n }),\n /** Histogram of delivery time of resolved IWANT promises */\n iwantPromiseDeliveryTime: register.histogram({\n name: 'gossipsub_iwant_promise_delivery_seconds',\n help: 'Histogram of delivery time of resolved IWANT promises',\n buckets: [\n 0.5 * opts.gossipPromiseExpireSec,\n Number(opts.gossipPromiseExpireSec),\n 2 * opts.gossipPromiseExpireSec,\n 4 * opts.gossipPromiseExpireSec\n ]\n }),\n iwantPromiseUntracked: register.gauge({\n name: 'gossip_iwant_promise_untracked',\n help: 'Total count of untracked IWANT promise'\n }),\n /** Backoff time */\n connectedPeersBackoffSec: register.histogram({\n name: 'gossipsub_connected_peers_backoff_seconds',\n help: 'Backoff time in seconds',\n // Using 1 seconds as minimum as that's close to the heartbeat duration, no need for more resolution.\n // As per spec, backoff times are 10 seconds for UnsubscribeBackoff and 60 seconds for PruneBackoff.\n // Higher values of 60 seconds should not occur, but we add 120 seconds just in case\n // https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md#overview-of-new-parameters\n buckets: [1, 2, 4, 10, 20, 60, 120]\n }),\n /* Data structure sizes */\n /** Unbounded cache sizes */\n cacheSize: register.gauge({\n name: 'gossipsub_cache_size',\n help: 'Unbounded cache sizes',\n labelNames: ['cache']\n }),\n /** Current mcache msg count */\n mcacheSize: register.gauge({\n name: 'gossipsub_mcache_size',\n help: 'Current mcache msg count'\n }),\n mcacheNotValidatedCount: register.gauge({\n name: 'gossipsub_mcache_not_validated_count',\n help: 'Current mcache msg count not validated'\n }),\n fastMsgIdCacheCollision: register.gauge({\n name: 'gossipsub_fastmsgid_cache_collision_total',\n help: 'Total count of key collisions on fastmsgid cache put'\n }),\n newConnectionCount: register.gauge({\n name: 'gossipsub_new_connection_total',\n help: 'Total new connection by status',\n labelNames: ['status']\n }),\n topicStrToLabel,\n toTopic(topicStr) {\n return this.topicStrToLabel.get(topicStr) ?? topicStr;\n },\n /** We joined a topic */\n onJoin(topicStr) {\n this.topicSubscriptionStatus.set({ topicStr }, 1);\n this.meshPeerCounts.set({ topicStr }, 0); // Reset count\n },\n /** We left a topic */\n onLeave(topicStr) {\n this.topicSubscriptionStatus.set({ topicStr }, 0);\n this.meshPeerCounts.set({ topicStr }, 0); // Reset count\n },\n /** Register the inclusion of peers in our mesh due to some reason. */\n onAddToMesh(topicStr, reason, count) {\n const topic = this.toTopic(topicStr);\n switch (reason) {\n case InclusionReason.Fanout:\n this.meshPeerInclusionEventsFanout.inc({ topic }, count);\n break;\n case InclusionReason.Random:\n this.meshPeerInclusionEventsRandom.inc({ topic }, count);\n break;\n case InclusionReason.Subscribed:\n this.meshPeerInclusionEventsSubscribed.inc({ topic }, count);\n break;\n case InclusionReason.Outbound:\n this.meshPeerInclusionEventsOutbound.inc({ topic }, count);\n break;\n case InclusionReason.NotEnough:\n this.meshPeerInclusionEventsNotEnough.inc({ topic }, count);\n break;\n case InclusionReason.Opportunistic:\n this.meshPeerInclusionEventsOpportunistic.inc({ topic }, count);\n break;\n default:\n this.meshPeerInclusionEventsUnknown.inc({ topic }, count);\n break;\n }\n },\n /** Register the removal of peers in our mesh due to some reason */\n // - remove_peer_from_mesh()\n // - heartbeat() Churn::BadScore\n // - heartbeat() Churn::Excess\n // - on_disconnect() Churn::Ds\n onRemoveFromMesh(topicStr, reason, count) {\n const topic = this.toTopic(topicStr);\n switch (reason) {\n case ChurnReason.Dc:\n this.meshPeerChurnEventsDisconnected.inc({ topic }, count);\n break;\n case ChurnReason.BadScore:\n this.meshPeerChurnEventsBadScore.inc({ topic }, count);\n break;\n case ChurnReason.Prune:\n this.meshPeerChurnEventsPrune.inc({ topic }, count);\n break;\n case ChurnReason.Excess:\n this.meshPeerChurnEventsExcess.inc({ topic }, count);\n break;\n default:\n this.meshPeerChurnEventsUnknown.inc({ topic }, count);\n break;\n }\n },\n /**\n * Update validation result to metrics\n *\n * @param messageRecord - null means the message's mcache record was not known at the time of acceptance report\n */\n onReportValidation(messageRecord, acceptance, firstSeenTimestampMs) {\n this.asyncValidationMcacheHit.inc({ hit: messageRecord != null ? 'hit' : 'miss' });\n if (messageRecord != null) {\n const topic = this.toTopic(messageRecord.message.topic);\n switch (acceptance) {\n case TopicValidatorResult.Accept:\n this.acceptedMessagesTotal.inc({ topic });\n break;\n case TopicValidatorResult.Ignore:\n this.ignoredMessagesTotal.inc({ topic });\n break;\n case TopicValidatorResult.Reject:\n this.rejectedMessagesTotal.inc({ topic });\n break;\n default:\n this.unknownValidationResultsTotal.inc({ topic });\n break;\n }\n }\n if (firstSeenTimestampMs != null) {\n this.asyncValidationDelayFromFirstSeenSec.observe((Date.now() - firstSeenTimestampMs) / 1000);\n }\n else {\n this.asyncValidationUnknownFirstSeen.inc();\n }\n },\n /**\n * - in handle_graft() Penalty::GraftBackoff\n * - in apply_iwant_penalties() Penalty::BrokenPromise\n * - in metric_score() P3 Penalty::MessageDeficit\n * - in metric_score() P6 Penalty::IPColocation\n */\n onScorePenalty(penalty) {\n // Can this be labeled by topic too?\n this.scoringPenalties.inc({ penalty }, 1);\n },\n onIhaveRcv(topicStr, ihave, idonthave) {\n const topic = this.toTopic(topicStr);\n this.ihaveRcvMsgids.inc({ topic }, ihave);\n this.ihaveRcvNotSeenMsgids.inc({ topic }, idonthave);\n },\n onIwantRcv(iwantByTopic, iwantDonthave) {\n for (const [topicStr, iwant] of iwantByTopic) {\n const topic = this.toTopic(topicStr);\n this.iwantRcvMsgids.inc({ topic }, iwant);\n }\n this.iwantRcvDonthaveMsgids.inc(iwantDonthave);\n },\n onForwardMsg(topicStr, tosendCount) {\n const topic = this.toTopic(topicStr);\n this.msgForwardCount.inc({ topic }, 1);\n this.msgForwardPeers.inc({ topic }, tosendCount);\n },\n onPublishMsg(topicStr, tosendGroupCount, tosendCount, dataLen, ms) {\n const topic = this.toTopic(topicStr);\n this.msgPublishCount.inc({ topic }, 1);\n this.msgPublishBytes.inc({ topic }, tosendCount * dataLen);\n this.msgPublishPeersByTopic.inc({ topic }, tosendCount);\n this.directPeersPublishedTotal.inc({ topic }, tosendGroupCount.direct);\n this.floodsubPeersPublishedTotal.inc({ topic }, tosendGroupCount.floodsub);\n this.meshPeersPublishedTotal.inc({ topic }, tosendGroupCount.mesh);\n this.fanoutPeersPublishedTotal.inc({ topic }, tosendGroupCount.fanout);\n this.msgPublishTime.observe({ topic }, ms / 1000);\n },\n onMsgRecvPreValidation(topicStr) {\n const topic = this.toTopic(topicStr);\n this.msgReceivedPreValidation.inc({ topic }, 1);\n },\n onMsgRecvError(topicStr) {\n const topic = this.toTopic(topicStr);\n this.msgReceivedError.inc({ topic }, 1);\n },\n onPrevalidationResult(topicStr, status) {\n const topic = this.toTopic(topicStr);\n switch (status) {\n case MessageStatus.duplicate:\n this.prevalidationDuplicateTotal.inc({ topic });\n break;\n case MessageStatus.invalid:\n this.prevalidationInvalidTotal.inc({ topic });\n break;\n case MessageStatus.valid:\n this.prevalidationValidTotal.inc({ topic });\n break;\n default:\n this.prevalidationUnknownTotal.inc({ topic });\n break;\n }\n },\n onMsgRecvInvalid(topicStr, reason) {\n const topic = this.toTopic(topicStr);\n const error = reason.reason === RejectReason.Error ? reason.error : reason.reason;\n this.msgReceivedInvalid.inc({ error }, 1);\n this.msgReceivedInvalidByTopic.inc({ topic }, 1);\n },\n onDuplicateMsgDelivery(topicStr, deliveryDelayMs, isLateDelivery) {\n const topic = this.toTopic(topicStr);\n this.duplicateMsgDeliveryDelay.observe({ topic }, deliveryDelayMs / 1000);\n if (isLateDelivery) {\n this.duplicateMsgLateDelivery.inc({ topic }, 1);\n }\n },\n onPublishDuplicateMsg(topicStr) {\n const topic = this.toTopic(topicStr);\n this.duplicateMsgIgnored.inc({ topic }, 1);\n },\n onPeerReadStreamError() {\n this.peerReadStreamError.inc(1);\n },\n onRpcRecvError() {\n this.rpcRecvError.inc(1);\n },\n onRpcDataError() {\n this.rpcDataError.inc(1);\n },\n onRpcRecv(rpc, rpcBytes) {\n this.rpcRecvBytes.inc(rpcBytes);\n this.rpcRecvCount.inc(1);\n if (rpc.subscriptions != null)\n this.rpcRecvSubscription.inc(rpc.subscriptions.length);\n if (rpc.messages != null)\n this.rpcRecvMessage.inc(rpc.messages.length);\n if (rpc.control != null) {\n this.rpcRecvControl.inc(1);\n if (rpc.control.ihave != null)\n this.rpcRecvIHave.inc(rpc.control.ihave.length);\n if (rpc.control.iwant != null)\n this.rpcRecvIWant.inc(rpc.control.iwant.length);\n if (rpc.control.graft != null)\n this.rpcRecvGraft.inc(rpc.control.graft.length);\n if (rpc.control.prune != null)\n this.rpcRecvPrune.inc(rpc.control.prune.length);\n }\n },\n onRpcSent(rpc, rpcBytes) {\n this.rpcSentBytes.inc(rpcBytes);\n this.rpcSentCount.inc(1);\n if (rpc.subscriptions != null)\n this.rpcSentSubscription.inc(rpc.subscriptions.length);\n if (rpc.messages != null)\n this.rpcSentMessage.inc(rpc.messages.length);\n if (rpc.control != null) {\n const ihave = rpc.control.ihave?.length ?? 0;\n const iwant = rpc.control.iwant?.length ?? 0;\n const graft = rpc.control.graft?.length ?? 0;\n const prune = rpc.control.prune?.length ?? 0;\n if (ihave > 0)\n this.rpcSentIHave.inc(ihave);\n if (iwant > 0)\n this.rpcSentIWant.inc(iwant);\n if (graft > 0)\n this.rpcSentGraft.inc(graft);\n if (prune > 0)\n this.rpcSentPrune.inc(prune);\n if (ihave > 0 || iwant > 0 || graft > 0 || prune > 0)\n this.rpcSentControl.inc(1);\n }\n },\n registerScores(scores, scoreThresholds) {\n let graylist = 0;\n let publish = 0;\n let gossip = 0;\n let mesh = 0;\n for (const score of scores) {\n if (score >= scoreThresholds.graylistThreshold)\n graylist++;\n if (score >= scoreThresholds.publishThreshold)\n publish++;\n if (score >= scoreThresholds.gossipThreshold)\n gossip++;\n if (score >= 0)\n mesh++;\n }\n this.peersByScoreThreshold.set({ threshold: ScoreThreshold.graylist }, graylist);\n this.peersByScoreThreshold.set({ threshold: ScoreThreshold.publish }, publish);\n this.peersByScoreThreshold.set({ threshold: ScoreThreshold.gossip }, gossip);\n this.peersByScoreThreshold.set({ threshold: ScoreThreshold.mesh }, mesh);\n // Register full score too\n this.score.set(scores);\n },\n registerScoreWeights(sw) {\n for (const [topic, wsTopic] of sw.byTopic) {\n this.scoreWeights.set({ topic, p: 'p1' }, wsTopic.p1w);\n this.scoreWeights.set({ topic, p: 'p2' }, wsTopic.p2w);\n this.scoreWeights.set({ topic, p: 'p3' }, wsTopic.p3w);\n this.scoreWeights.set({ topic, p: 'p3b' }, wsTopic.p3bw);\n this.scoreWeights.set({ topic, p: 'p4' }, wsTopic.p4w);\n }\n this.scoreWeights.set({ p: 'p5' }, sw.p5w);\n this.scoreWeights.set({ p: 'p6' }, sw.p6w);\n this.scoreWeights.set({ p: 'p7' }, sw.p7w);\n },\n registerScorePerMesh(mesh, scoreByPeer) {\n const peersPerTopicLabel = new Map();\n mesh.forEach((peers, topicStr) => {\n // Aggregate by known topicLabel or throw to 'unknown'. This prevent too high cardinality\n const topicLabel = this.topicStrToLabel.get(topicStr) ?? 'unknown';\n let peersInMesh = peersPerTopicLabel.get(topicLabel);\n if (peersInMesh == null) {\n peersInMesh = new Set();\n peersPerTopicLabel.set(topicLabel, peersInMesh);\n }\n peers.forEach((p) => peersInMesh?.add(p));\n });\n for (const [topic, peers] of peersPerTopicLabel) {\n const meshScores = [];\n peers.forEach((peer) => {\n meshScores.push(scoreByPeer.get(peer) ?? 0);\n });\n this.scorePerMesh.set({ topic }, meshScores);\n }\n }\n };\n}\n//# sourceMappingURL=metrics.js.map","export const ERR_INVALID_PEER_SCORE_PARAMS = 'ERR_INVALID_PEER_SCORE_PARAMS';\nexport const ERR_INVALID_PEER_SCORE_THRESHOLDS = 'ERR_INVALID_PEER_SCORE_THRESHOLDS';\n//# sourceMappingURL=constants.js.map","import { CodeError } from '@libp2p/interface';\nimport { ERR_INVALID_PEER_SCORE_PARAMS } from './constants.js';\nexport const defaultPeerScoreParams = {\n topics: {},\n topicScoreCap: 10.0,\n appSpecificScore: () => 0.0,\n appSpecificWeight: 10.0,\n IPColocationFactorWeight: -5.0,\n IPColocationFactorThreshold: 10.0,\n IPColocationFactorWhitelist: new Set(),\n behaviourPenaltyWeight: -10.0,\n behaviourPenaltyThreshold: 0.0,\n behaviourPenaltyDecay: 0.2,\n decayInterval: 1000.0,\n decayToZero: 0.1,\n retainScore: 3600 * 1000\n};\nexport const defaultTopicScoreParams = {\n topicWeight: 0.5,\n timeInMeshWeight: 1,\n timeInMeshQuantum: 1,\n timeInMeshCap: 3600,\n firstMessageDeliveriesWeight: 1,\n firstMessageDeliveriesDecay: 0.5,\n firstMessageDeliveriesCap: 2000,\n meshMessageDeliveriesWeight: -1,\n meshMessageDeliveriesDecay: 0.5,\n meshMessageDeliveriesCap: 100,\n meshMessageDeliveriesThreshold: 20,\n meshMessageDeliveriesWindow: 10,\n meshMessageDeliveriesActivation: 5000,\n meshFailurePenaltyWeight: -1,\n meshFailurePenaltyDecay: 0.5,\n invalidMessageDeliveriesWeight: -1,\n invalidMessageDeliveriesDecay: 0.3\n};\nexport function createPeerScoreParams(p = {}) {\n return {\n ...defaultPeerScoreParams,\n ...p,\n topics: (p.topics != null)\n ? Object.entries(p.topics).reduce((topics, [topic, topicScoreParams]) => {\n topics[topic] = createTopicScoreParams(topicScoreParams);\n return topics;\n }, {})\n : {}\n };\n}\nexport function createTopicScoreParams(p = {}) {\n return {\n ...defaultTopicScoreParams,\n ...p\n };\n}\n// peer score parameter validation\nexport function validatePeerScoreParams(p) {\n for (const [topic, params] of Object.entries(p.topics)) {\n try {\n validateTopicScoreParams(params);\n }\n catch (e) {\n throw new CodeError(`invalid score parameters for topic ${topic}: ${e.message}`, ERR_INVALID_PEER_SCORE_PARAMS);\n }\n }\n // check that the topic score is 0 or something positive\n if (p.topicScoreCap < 0) {\n throw new CodeError('invalid topic score cap; must be positive (or 0 for no cap)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check that we have an app specific score; the weight can be anything (but expected positive)\n if (p.appSpecificScore === null || p.appSpecificScore === undefined) {\n throw new CodeError('missing application specific score function', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check the IP colocation factor\n if (p.IPColocationFactorWeight > 0) {\n throw new CodeError('invalid IPColocationFactorWeight; must be negative (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.IPColocationFactorWeight !== 0 && p.IPColocationFactorThreshold < 1) {\n throw new CodeError('invalid IPColocationFactorThreshold; must be at least 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check the behaviour penalty\n if (p.behaviourPenaltyWeight > 0) {\n throw new CodeError('invalid BehaviourPenaltyWeight; must be negative (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.behaviourPenaltyWeight !== 0 && (p.behaviourPenaltyDecay <= 0 || p.behaviourPenaltyDecay >= 1)) {\n throw new CodeError('invalid BehaviourPenaltyDecay; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check the decay parameters\n if (p.decayInterval < 1000) {\n throw new CodeError('invalid DecayInterval; must be at least 1s', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.decayToZero <= 0 || p.decayToZero >= 1) {\n throw new CodeError('invalid DecayToZero; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // no need to check the score retention; a value of 0 means that we don't retain scores\n}\n// eslint-disable-next-line complexity\nexport function validateTopicScoreParams(p) {\n // make sure we have a sane topic weight\n if (p.topicWeight < 0) {\n throw new CodeError('invalid topic weight; must be >= 0', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check P1\n if (p.timeInMeshQuantum === 0) {\n throw new CodeError('invalid TimeInMeshQuantum; must be non zero', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.timeInMeshWeight < 0) {\n throw new CodeError('invalid TimeInMeshWeight; must be positive (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.timeInMeshWeight !== 0 && p.timeInMeshQuantum <= 0) {\n throw new CodeError('invalid TimeInMeshQuantum; must be positive', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.timeInMeshWeight !== 0 && p.timeInMeshCap <= 0) {\n throw new CodeError('invalid TimeInMeshCap; must be positive', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check P2\n if (p.firstMessageDeliveriesWeight < 0) {\n throw new CodeError('invallid FirstMessageDeliveriesWeight; must be positive (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.firstMessageDeliveriesWeight !== 0 &&\n (p.firstMessageDeliveriesDecay <= 0 || p.firstMessageDeliveriesDecay >= 1)) {\n throw new CodeError('invalid FirstMessageDeliveriesDecay; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.firstMessageDeliveriesWeight !== 0 && p.firstMessageDeliveriesCap <= 0) {\n throw new CodeError('invalid FirstMessageDeliveriesCap; must be positive', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check P3\n if (p.meshMessageDeliveriesWeight > 0) {\n throw new CodeError('invalid MeshMessageDeliveriesWeight; must be negative (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshMessageDeliveriesWeight !== 0 && (p.meshMessageDeliveriesDecay <= 0 || p.meshMessageDeliveriesDecay >= 1)) {\n throw new CodeError('invalid MeshMessageDeliveriesDecay; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshMessageDeliveriesWeight !== 0 && p.meshMessageDeliveriesCap <= 0) {\n throw new CodeError('invalid MeshMessageDeliveriesCap; must be positive', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshMessageDeliveriesWeight !== 0 && p.meshMessageDeliveriesThreshold <= 0) {\n throw new CodeError('invalid MeshMessageDeliveriesThreshold; must be positive', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshMessageDeliveriesWindow < 0) {\n throw new CodeError('invalid MeshMessageDeliveriesWindow; must be non-negative', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshMessageDeliveriesWeight !== 0 && p.meshMessageDeliveriesActivation < 1000) {\n throw new CodeError('invalid MeshMessageDeliveriesActivation; must be at least 1s', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check P3b\n if (p.meshFailurePenaltyWeight > 0) {\n throw new CodeError('invalid MeshFailurePenaltyWeight; must be negative (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.meshFailurePenaltyWeight !== 0 && (p.meshFailurePenaltyDecay <= 0 || p.meshFailurePenaltyDecay >= 1)) {\n throw new CodeError('invalid MeshFailurePenaltyDecay; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n // check P4\n if (p.invalidMessageDeliveriesWeight > 0) {\n throw new CodeError('invalid InvalidMessageDeliveriesWeight; must be negative (or 0 to disable)', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n if (p.invalidMessageDeliveriesDecay <= 0 || p.invalidMessageDeliveriesDecay >= 1) {\n throw new CodeError('invalid InvalidMessageDeliveriesDecay; must be between 0 and 1', ERR_INVALID_PEER_SCORE_PARAMS);\n }\n}\n//# sourceMappingURL=peer-score-params.js.map","import { CodeError } from '@libp2p/interface';\nimport { ERR_INVALID_PEER_SCORE_THRESHOLDS } from './constants.js';\nexport const defaultPeerScoreThresholds = {\n gossipThreshold: -10,\n publishThreshold: -50,\n graylistThreshold: -80,\n acceptPXThreshold: 10,\n opportunisticGraftThreshold: 20\n};\nexport function createPeerScoreThresholds(p = {}) {\n return {\n ...defaultPeerScoreThresholds,\n ...p\n };\n}\nexport function validatePeerScoreThresholds(p) {\n if (p.gossipThreshold > 0) {\n throw new CodeError('invalid gossip threshold; it must be <= 0', ERR_INVALID_PEER_SCORE_THRESHOLDS);\n }\n if (p.publishThreshold > 0 || p.publishThreshold > p.gossipThreshold) {\n throw new CodeError('invalid publish threshold; it must be <= 0 and <= gossip threshold', ERR_INVALID_PEER_SCORE_THRESHOLDS);\n }\n if (p.graylistThreshold > 0 || p.graylistThreshold > p.publishThreshold) {\n throw new CodeError('invalid graylist threshold; it must be <= 0 and <= publish threshold', ERR_INVALID_PEER_SCORE_THRESHOLDS);\n }\n if (p.acceptPXThreshold < 0) {\n throw new CodeError('invalid accept PX threshold; it must be >= 0', ERR_INVALID_PEER_SCORE_THRESHOLDS);\n }\n if (p.opportunisticGraftThreshold < 0) {\n throw new CodeError('invalid opportunistic grafting threshold; it must be >= 0', ERR_INVALID_PEER_SCORE_THRESHOLDS);\n }\n}\n//# sourceMappingURL=peer-score-thresholds.js.map","/**\n * Exclude up to `ineed` items from a set if item meets condition `cond`\n */\nexport function removeItemsFromSet(superSet, ineed, cond = () => true) {\n const subset = new Set();\n if (ineed <= 0)\n return subset;\n for (const id of superSet) {\n if (subset.size >= ineed)\n break;\n if (cond(id)) {\n subset.add(id);\n superSet.delete(id);\n }\n }\n return subset;\n}\n/**\n * Exclude up to `ineed` items from a set\n */\nexport function removeFirstNItemsFromSet(superSet, ineed) {\n return removeItemsFromSet(superSet, ineed, () => true);\n}\nexport class MapDef extends Map {\n getDefault;\n constructor(getDefault) {\n super();\n this.getDefault = getDefault;\n }\n getOrDefault(key) {\n let value = super.get(key);\n if (value === undefined) {\n value = this.getDefault();\n this.set(key, value);\n }\n return value;\n }\n}\n//# sourceMappingURL=set.js.map","export function computeScore(peer, pstats, params, peerIPs) {\n let score = 0;\n // topic stores\n Object.entries(pstats.topics).forEach(([topic, tstats]) => {\n // the topic parameters\n const topicParams = params.topics[topic];\n if (topicParams === undefined) {\n // we are not scoring this topic\n return;\n }\n let topicScore = 0;\n // P1: time in Mesh\n if (tstats.inMesh) {\n let p1 = tstats.meshTime / topicParams.timeInMeshQuantum;\n if (p1 > topicParams.timeInMeshCap) {\n p1 = topicParams.timeInMeshCap;\n }\n topicScore += p1 * topicParams.timeInMeshWeight;\n }\n // P2: first message deliveries\n let p2 = tstats.firstMessageDeliveries;\n if (p2 > topicParams.firstMessageDeliveriesCap) {\n p2 = topicParams.firstMessageDeliveriesCap;\n }\n topicScore += p2 * topicParams.firstMessageDeliveriesWeight;\n // P3: mesh message deliveries\n if (tstats.meshMessageDeliveriesActive &&\n tstats.meshMessageDeliveries < topicParams.meshMessageDeliveriesThreshold) {\n const deficit = topicParams.meshMessageDeliveriesThreshold - tstats.meshMessageDeliveries;\n const p3 = deficit * deficit;\n topicScore += p3 * topicParams.meshMessageDeliveriesWeight;\n }\n // P3b:\n // NOTE: the weight of P3b is negative (validated in validateTopicScoreParams) so this detracts\n const p3b = tstats.meshFailurePenalty;\n topicScore += p3b * topicParams.meshFailurePenaltyWeight;\n // P4: invalid messages\n // NOTE: the weight of P4 is negative (validated in validateTopicScoreParams) so this detracts\n const p4 = tstats.invalidMessageDeliveries * tstats.invalidMessageDeliveries;\n topicScore += p4 * topicParams.invalidMessageDeliveriesWeight;\n // update score, mixing with topic weight\n score += topicScore * topicParams.topicWeight;\n });\n // apply the topic score cap, if any\n if (params.topicScoreCap > 0 && score > params.topicScoreCap) {\n score = params.topicScoreCap;\n }\n // P5: application-specific score\n const p5 = params.appSpecificScore(peer);\n score += p5 * params.appSpecificWeight;\n // P6: IP colocation factor\n pstats.knownIPs.forEach((ip) => {\n if (params.IPColocationFactorWhitelist.has(ip)) {\n return;\n }\n // P6 has a cliff (IPColocationFactorThreshold)\n // It's only applied if at least that many peers are connected to us from that source IP addr.\n // It is quadratic, and the weight is negative (validated in validatePeerScoreParams)\n const peersInIP = peerIPs.get(ip);\n const numPeersInIP = (peersInIP != null) ? peersInIP.size : 0;\n if (numPeersInIP > params.IPColocationFactorThreshold) {\n const surplus = numPeersInIP - params.IPColocationFactorThreshold;\n const p6 = surplus * surplus;\n score += p6 * params.IPColocationFactorWeight;\n }\n });\n // P7: behavioural pattern penalty\n if (pstats.behaviourPenalty > params.behaviourPenaltyThreshold) {\n const excess = pstats.behaviourPenalty - params.behaviourPenaltyThreshold;\n const p7 = excess * excess;\n score += p7 * params.behaviourPenaltyWeight;\n }\n return score;\n}\n//# sourceMappingURL=compute-score.js.map","'use strict';\n\n/**\n * Custom implementation of a double ended queue.\n */\nfunction Denque(array, options) {\n var options = options || {};\n this._capacity = options.capacity;\n\n this._head = 0;\n this._tail = 0;\n\n if (Array.isArray(array)) {\n this._fromArray(array);\n } else {\n this._capacityMask = 0x3;\n this._list = new Array(4);\n }\n}\n\n/**\n * --------------\n * PUBLIC API\n * -------------\n */\n\n/**\n * Returns the item at the specified index from the list.\n * 0 is the first element, 1 is the second, and so on...\n * Elements at negative values are that many from the end: -1 is one before the end\n * (the last element), -2 is two before the end (one before last), etc.\n * @param index\n * @returns {*}\n */\nDenque.prototype.peekAt = function peekAt(index) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n var len = this.size();\n if (i >= len || i < -len) return undefined;\n if (i < 0) i += len;\n i = (this._head + i) & this._capacityMask;\n return this._list[i];\n};\n\n/**\n * Alias for peekAt()\n * @param i\n * @returns {*}\n */\nDenque.prototype.get = function get(i) {\n return this.peekAt(i);\n};\n\n/**\n * Returns the first item in the list without removing it.\n * @returns {*}\n */\nDenque.prototype.peek = function peek() {\n if (this._head === this._tail) return undefined;\n return this._list[this._head];\n};\n\n/**\n * Alias for peek()\n * @returns {*}\n */\nDenque.prototype.peekFront = function peekFront() {\n return this.peek();\n};\n\n/**\n * Returns the item that is at the back of the queue without removing it.\n * Uses peekAt(-1)\n */\nDenque.prototype.peekBack = function peekBack() {\n return this.peekAt(-1);\n};\n\n/**\n * Returns the current length of the queue\n * @return {Number}\n */\nObject.defineProperty(Denque.prototype, 'length', {\n get: function length() {\n return this.size();\n }\n});\n\n/**\n * Return the number of items on the list, or 0 if empty.\n * @returns {number}\n */\nDenque.prototype.size = function size() {\n if (this._head === this._tail) return 0;\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Add an item at the beginning of the list.\n * @param item\n */\nDenque.prototype.unshift = function unshift(item) {\n if (arguments.length === 0) return this.size();\n var len = this._list.length;\n this._head = (this._head - 1 + len) & this._capacityMask;\n this._list[this._head] = item;\n if (this._tail === this._head) this._growArray();\n if (this._capacity && this.size() > this._capacity) this.pop();\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Remove and return the first item on the list,\n * Returns undefined if the list is empty.\n * @returns {*}\n */\nDenque.prototype.shift = function shift() {\n var head = this._head;\n if (head === this._tail) return undefined;\n var item = this._list[head];\n this._list[head] = undefined;\n this._head = (head + 1) & this._capacityMask;\n if (head < 2 && this._tail > 10000 && this._tail <= this._list.length >>> 2) this._shrinkArray();\n return item;\n};\n\n/**\n * Add an item to the bottom of the list.\n * @param item\n */\nDenque.prototype.push = function push(item) {\n if (arguments.length === 0) return this.size();\n var tail = this._tail;\n this._list[tail] = item;\n this._tail = (tail + 1) & this._capacityMask;\n if (this._tail === this._head) {\n this._growArray();\n }\n if (this._capacity && this.size() > this._capacity) {\n this.shift();\n }\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Remove and return the last item on the list.\n * Returns undefined if the list is empty.\n * @returns {*}\n */\nDenque.prototype.pop = function pop() {\n var tail = this._tail;\n if (tail === this._head) return undefined;\n var len = this._list.length;\n this._tail = (tail - 1 + len) & this._capacityMask;\n var item = this._list[this._tail];\n this._list[this._tail] = undefined;\n if (this._head < 2 && tail > 10000 && tail <= len >>> 2) this._shrinkArray();\n return item;\n};\n\n/**\n * Remove and return the item at the specified index from the list.\n * Returns undefined if the list is empty.\n * @param index\n * @returns {*}\n */\nDenque.prototype.removeOne = function removeOne(index) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n if (this._head === this._tail) return void 0;\n var size = this.size();\n var len = this._list.length;\n if (i >= size || i < -size) return void 0;\n if (i < 0) i += size;\n i = (this._head + i) & this._capacityMask;\n var item = this._list[i];\n var k;\n if (index < size / 2) {\n for (k = index; k > 0; k--) {\n this._list[i] = this._list[i = (i - 1 + len) & this._capacityMask];\n }\n this._list[i] = void 0;\n this._head = (this._head + 1 + len) & this._capacityMask;\n } else {\n for (k = size - 1 - index; k > 0; k--) {\n this._list[i] = this._list[i = (i + 1 + len) & this._capacityMask];\n }\n this._list[i] = void 0;\n this._tail = (this._tail - 1 + len) & this._capacityMask;\n }\n return item;\n};\n\n/**\n * Remove number of items from the specified index from the list.\n * Returns array of removed items.\n * Returns undefined if the list is empty.\n * @param index\n * @param count\n * @returns {array}\n */\nDenque.prototype.remove = function remove(index, count) {\n var i = index;\n var removed;\n var del_count = count;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n if (this._head === this._tail) return void 0;\n var size = this.size();\n var len = this._list.length;\n if (i >= size || i < -size || count < 1) return void 0;\n if (i < 0) i += size;\n if (count === 1 || !count) {\n removed = new Array(1);\n removed[0] = this.removeOne(i);\n return removed;\n }\n if (i === 0 && i + count >= size) {\n removed = this.toArray();\n this.clear();\n return removed;\n }\n if (i + count > size) count = size - i;\n var k;\n removed = new Array(count);\n for (k = 0; k < count; k++) {\n removed[k] = this._list[(this._head + i + k) & this._capacityMask];\n }\n i = (this._head + i) & this._capacityMask;\n if (index + count === size) {\n this._tail = (this._tail - count + len) & this._capacityMask;\n for (k = count; k > 0; k--) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n }\n return removed;\n }\n if (index === 0) {\n this._head = (this._head + count + len) & this._capacityMask;\n for (k = count - 1; k > 0; k--) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n }\n return removed;\n }\n if (i < size / 2) {\n this._head = (this._head + index + count + len) & this._capacityMask;\n for (k = index; k > 0; k--) {\n this.unshift(this._list[i = (i - 1 + len) & this._capacityMask]);\n }\n i = (this._head - 1 + len) & this._capacityMask;\n while (del_count > 0) {\n this._list[i = (i - 1 + len) & this._capacityMask] = void 0;\n del_count--;\n }\n if (index < 0) this._tail = i;\n } else {\n this._tail = i;\n i = (i + count + len) & this._capacityMask;\n for (k = size - (count + index); k > 0; k--) {\n this.push(this._list[i++]);\n }\n i = this._tail;\n while (del_count > 0) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n del_count--;\n }\n }\n if (this._head < 2 && this._tail > 10000 && this._tail <= len >>> 2) this._shrinkArray();\n return removed;\n};\n\n/**\n * Native splice implementation.\n * Remove number of items from the specified index from the list and/or add new elements.\n * Returns array of removed items or empty array if count == 0.\n * Returns undefined if the list is empty.\n *\n * @param index\n * @param count\n * @param {...*} [elements]\n * @returns {array}\n */\nDenque.prototype.splice = function splice(index, count) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n var size = this.size();\n if (i < 0) i += size;\n if (i > size) return void 0;\n if (arguments.length > 2) {\n var k;\n var temp;\n var removed;\n var arg_len = arguments.length;\n var len = this._list.length;\n var arguments_index = 2;\n if (!size || i < size / 2) {\n temp = new Array(i);\n for (k = 0; k < i; k++) {\n temp[k] = this._list[(this._head + k) & this._capacityMask];\n }\n if (count === 0) {\n removed = [];\n if (i > 0) {\n this._head = (this._head + i + len) & this._capacityMask;\n }\n } else {\n removed = this.remove(i, count);\n this._head = (this._head + i + len) & this._capacityMask;\n }\n while (arg_len > arguments_index) {\n this.unshift(arguments[--arg_len]);\n }\n for (k = i; k > 0; k--) {\n this.unshift(temp[k - 1]);\n }\n } else {\n temp = new Array(size - (i + count));\n var leng = temp.length;\n for (k = 0; k < leng; k++) {\n temp[k] = this._list[(this._head + i + count + k) & this._capacityMask];\n }\n if (count === 0) {\n removed = [];\n if (i != size) {\n this._tail = (this._head + i + len) & this._capacityMask;\n }\n } else {\n removed = this.remove(i, count);\n this._tail = (this._tail - leng + len) & this._capacityMask;\n }\n while (arguments_index < arg_len) {\n this.push(arguments[arguments_index++]);\n }\n for (k = 0; k < leng; k++) {\n this.push(temp[k]);\n }\n }\n return removed;\n } else {\n return this.remove(i, count);\n }\n};\n\n/**\n * Soft clear - does not reset capacity.\n */\nDenque.prototype.clear = function clear() {\n this._list = new Array(this._list.length);\n this._head = 0;\n this._tail = 0;\n};\n\n/**\n * Returns true or false whether the list is empty.\n * @returns {boolean}\n */\nDenque.prototype.isEmpty = function isEmpty() {\n return this._head === this._tail;\n};\n\n/**\n * Returns an array of all queue items.\n * @returns {Array}\n */\nDenque.prototype.toArray = function toArray() {\n return this._copyArray(false);\n};\n\n/**\n * -------------\n * INTERNALS\n * -------------\n */\n\n/**\n * Fills the queue with items from an array\n * For use in the constructor\n * @param array\n * @private\n */\nDenque.prototype._fromArray = function _fromArray(array) {\n var length = array.length;\n var capacity = this._nextPowerOf2(length);\n\n this._list = new Array(capacity);\n this._capacityMask = capacity - 1;\n this._tail = length;\n\n for (var i = 0; i < length; i++) this._list[i] = array[i];\n};\n\n/**\n *\n * @param fullCopy\n * @param size Initialize the array with a specific size. Will default to the current list size\n * @returns {Array}\n * @private\n */\nDenque.prototype._copyArray = function _copyArray(fullCopy, size) {\n var src = this._list;\n var capacity = src.length;\n var length = this.length;\n size = size | length;\n\n // No prealloc requested and the buffer is contiguous\n if (size == length && this._head < this._tail) {\n // Simply do a fast slice copy\n return this._list.slice(this._head, this._tail);\n }\n\n var dest = new Array(size);\n\n var k = 0;\n var i;\n if (fullCopy || this._head > this._tail) {\n for (i = this._head; i < capacity; i++) dest[k++] = src[i];\n for (i = 0; i < this._tail; i++) dest[k++] = src[i];\n } else {\n for (i = this._head; i < this._tail; i++) dest[k++] = src[i];\n }\n\n return dest;\n}\n\n/**\n * Grows the internal list array.\n * @private\n */\nDenque.prototype._growArray = function _growArray() {\n if (this._head != 0) {\n // double array size and copy existing data, head to end, then beginning to tail.\n var newList = this._copyArray(true, this._list.length << 1);\n\n this._tail = this._list.length;\n this._head = 0;\n\n this._list = newList;\n } else {\n this._tail = this._list.length;\n this._list.length <<= 1;\n }\n\n this._capacityMask = (this._capacityMask << 1) | 1;\n};\n\n/**\n * Shrinks the internal list array.\n * @private\n */\nDenque.prototype._shrinkArray = function _shrinkArray() {\n this._list.length >>>= 1;\n this._capacityMask >>>= 1;\n};\n\n/**\n * Find the next power of 2, at least 4\n * @private\n * @param {number} num \n * @returns {number}\n */\nDenque.prototype._nextPowerOf2 = function _nextPowerOf2(num) {\n var log2 = Math.log(num) / Math.log(2);\n var nextPow2 = 1 << (log2 + 1);\n\n return Math.max(nextPow2, 4);\n}\n\nmodule.exports = Denque;\n","import Denque from 'denque';\nimport { TimeCacheDuration } from '../constants.js';\nexport var DeliveryRecordStatus;\n(function (DeliveryRecordStatus) {\n /**\n * we don't know (yet) if the message is valid\n */\n DeliveryRecordStatus[DeliveryRecordStatus[\"unknown\"] = 0] = \"unknown\";\n /**\n * we know the message is valid\n */\n DeliveryRecordStatus[DeliveryRecordStatus[\"valid\"] = 1] = \"valid\";\n /**\n * we know the message is invalid\n */\n DeliveryRecordStatus[DeliveryRecordStatus[\"invalid\"] = 2] = \"invalid\";\n /**\n * we were instructed by the validator to ignore the message\n */\n DeliveryRecordStatus[DeliveryRecordStatus[\"ignored\"] = 3] = \"ignored\";\n})(DeliveryRecordStatus || (DeliveryRecordStatus = {}));\n/**\n * Map of canonical message ID to DeliveryRecord\n *\n * Maintains an internal queue for efficient gc of old messages\n */\nexport class MessageDeliveries {\n records;\n queue;\n constructor() {\n this.records = new Map();\n this.queue = new Denque();\n }\n getRecord(msgIdStr) {\n return this.records.get(msgIdStr);\n }\n ensureRecord(msgIdStr) {\n let drec = this.records.get(msgIdStr);\n if (drec != null) {\n return drec;\n }\n // record doesn't exist yet\n // create record\n drec = {\n status: DeliveryRecordStatus.unknown,\n firstSeenTsMs: Date.now(),\n validated: 0,\n peers: new Set()\n };\n this.records.set(msgIdStr, drec);\n // and add msgId to the queue\n const entry = {\n msgId: msgIdStr,\n expire: Date.now() + TimeCacheDuration\n };\n this.queue.push(entry);\n return drec;\n }\n gc() {\n const now = Date.now();\n // queue is sorted by expiry time\n // remove expired messages, remove from queue until first un-expired message found\n let head = this.queue.peekFront();\n while ((head != null) && head.expire < now) {\n this.records.delete(head.msgId);\n this.queue.shift();\n head = this.queue.peekFront();\n }\n }\n clear() {\n this.records.clear();\n this.queue.clear();\n }\n}\n//# sourceMappingURL=message-deliveries.js.map","import { RejectReason } from '../types.js';\nimport { MapDef } from '../utils/set.js';\nimport { computeScore } from './compute-score.js';\nimport { MessageDeliveries, DeliveryRecordStatus } from './message-deliveries.js';\nimport { validatePeerScoreParams } from './peer-score-params.js';\nexport class PeerScore {\n params;\n metrics;\n /**\n * Per-peer stats for score calculation\n */\n peerStats = new Map();\n /**\n * IP colocation tracking; maps IP => set of peers.\n */\n peerIPs = new MapDef(() => new Set());\n /**\n * Cache score up to decayInterval if topic stats are unchanged.\n */\n scoreCache = new Map();\n /**\n * Recent message delivery timing/participants\n */\n deliveryRecords = new MessageDeliveries();\n _backgroundInterval;\n scoreCacheValidityMs;\n computeScore;\n log;\n constructor(params, metrics, componentLogger, opts) {\n this.params = params;\n this.metrics = metrics;\n validatePeerScoreParams(params);\n this.scoreCacheValidityMs = opts.scoreCacheValidityMs;\n this.computeScore = opts.computeScore ?? computeScore;\n this.log = componentLogger.forComponent('libp2p:gossipsub:score');\n }\n get size() {\n return this.peerStats.size;\n }\n /**\n * Start PeerScore instance\n */\n start() {\n if (this._backgroundInterval != null) {\n this.log('Peer score already running');\n return;\n }\n this._backgroundInterval = setInterval(() => { this.background(); }, this.params.decayInterval);\n this.log('started');\n }\n /**\n * Stop PeerScore instance\n */\n stop() {\n if (this._backgroundInterval == null) {\n this.log('Peer score already stopped');\n return;\n }\n clearInterval(this._backgroundInterval);\n delete this._backgroundInterval;\n this.peerIPs.clear();\n this.peerStats.clear();\n this.deliveryRecords.clear();\n this.log('stopped');\n }\n /**\n * Periodic maintenance\n */\n background() {\n this.refreshScores();\n this.deliveryRecords.gc();\n }\n dumpPeerScoreStats() {\n return Object.fromEntries(Array.from(this.peerStats.entries()).map(([peer, stats]) => [peer, stats]));\n }\n messageFirstSeenTimestampMs(msgIdStr) {\n const drec = this.deliveryRecords.getRecord(msgIdStr);\n return (drec != null) ? drec.firstSeenTsMs : null;\n }\n /**\n * Decays scores, and purges score records for disconnected peers once their expiry has elapsed.\n */\n refreshScores() {\n const now = Date.now();\n const decayToZero = this.params.decayToZero;\n this.peerStats.forEach((pstats, id) => {\n if (!pstats.connected) {\n // has the retention period expired?\n if (now > pstats.expire) {\n // yes, throw it away (but clean up the IP tracking first)\n this.removeIPsForPeer(id, pstats.knownIPs);\n this.peerStats.delete(id);\n this.scoreCache.delete(id);\n }\n // we don't decay retained scores, as the peer is not active.\n // this way the peer cannot reset a negative score by simply disconnecting and reconnecting,\n // unless the retention period has elapsed.\n // similarly, a well behaved peer does not lose its score by getting disconnected.\n return;\n }\n Object.entries(pstats.topics).forEach(([topic, tstats]) => {\n const tparams = this.params.topics[topic];\n if (tparams === undefined) {\n // we are not scoring this topic\n // should be unreachable, we only add scored topics to pstats\n return;\n }\n // decay counters\n tstats.firstMessageDeliveries *= tparams.firstMessageDeliveriesDecay;\n if (tstats.firstMessageDeliveries < decayToZero) {\n tstats.firstMessageDeliveries = 0;\n }\n tstats.meshMessageDeliveries *= tparams.meshMessageDeliveriesDecay;\n if (tstats.meshMessageDeliveries < decayToZero) {\n tstats.meshMessageDeliveries = 0;\n }\n tstats.meshFailurePenalty *= tparams.meshFailurePenaltyDecay;\n if (tstats.meshFailurePenalty < decayToZero) {\n tstats.meshFailurePenalty = 0;\n }\n tstats.invalidMessageDeliveries *= tparams.invalidMessageDeliveriesDecay;\n if (tstats.invalidMessageDeliveries < decayToZero) {\n tstats.invalidMessageDeliveries = 0;\n }\n // update mesh time and activate mesh message delivery parameter if need be\n if (tstats.inMesh) {\n tstats.meshTime = now - tstats.graftTime;\n if (tstats.meshTime > tparams.meshMessageDeliveriesActivation) {\n tstats.meshMessageDeliveriesActive = true;\n }\n }\n });\n // decay P7 counter\n pstats.behaviourPenalty *= this.params.behaviourPenaltyDecay;\n if (pstats.behaviourPenalty < decayToZero) {\n pstats.behaviourPenalty = 0;\n }\n });\n }\n /**\n * Return the score for a peer\n */\n score(id) {\n this.metrics?.scoreFnCalls.inc();\n const pstats = this.peerStats.get(id);\n if (pstats == null) {\n return 0;\n }\n const now = Date.now();\n const cacheEntry = this.scoreCache.get(id);\n // Found cached score within validity period\n if ((cacheEntry != null) && cacheEntry.cacheUntil > now) {\n return cacheEntry.score;\n }\n this.metrics?.scoreFnRuns.inc();\n const score = this.computeScore(id, pstats, this.params, this.peerIPs);\n const cacheUntil = now + this.scoreCacheValidityMs;\n if (cacheEntry != null) {\n this.metrics?.scoreCachedDelta.observe(Math.abs(score - cacheEntry.score));\n cacheEntry.score = score;\n cacheEntry.cacheUntil = cacheUntil;\n }\n else {\n this.scoreCache.set(id, { score, cacheUntil });\n }\n return score;\n }\n /**\n * Apply a behavioural penalty to a peer\n */\n addPenalty(id, penalty, penaltyLabel) {\n const pstats = this.peerStats.get(id);\n if (pstats != null) {\n pstats.behaviourPenalty += penalty;\n this.metrics?.onScorePenalty(penaltyLabel);\n }\n }\n addPeer(id) {\n // create peer stats (not including topic stats for each topic to be scored)\n // topic stats will be added as needed\n const pstats = {\n connected: true,\n expire: 0,\n topics: {},\n knownIPs: new Set(),\n behaviourPenalty: 0\n };\n this.peerStats.set(id, pstats);\n }\n /** Adds a new IP to a peer, if the peer is not known the update is ignored */\n addIP(id, ip) {\n const pstats = this.peerStats.get(id);\n if (pstats != null) {\n pstats.knownIPs.add(ip);\n }\n this.peerIPs.getOrDefault(ip).add(id);\n }\n /** Remove peer association with IP */\n removeIP(id, ip) {\n const pstats = this.peerStats.get(id);\n if (pstats != null) {\n pstats.knownIPs.delete(ip);\n }\n const peersWithIP = this.peerIPs.get(ip);\n if (peersWithIP != null) {\n peersWithIP.delete(id);\n if (peersWithIP.size === 0) {\n this.peerIPs.delete(ip);\n }\n }\n }\n removePeer(id) {\n const pstats = this.peerStats.get(id);\n if (pstats == null) {\n return;\n }\n // decide whether to retain the score; this currently only retains non-positive scores\n // to dissuade attacks on the score function.\n if (this.score(id) > 0) {\n this.removeIPsForPeer(id, pstats.knownIPs);\n this.peerStats.delete(id);\n return;\n }\n // furthermore, when we decide to retain the score, the firstMessageDelivery counters are\n // reset to 0 and mesh delivery penalties applied.\n Object.entries(pstats.topics).forEach(([topic, tstats]) => {\n tstats.firstMessageDeliveries = 0;\n const threshold = this.params.topics[topic].meshMessageDeliveriesThreshold;\n if (tstats.inMesh && tstats.meshMessageDeliveriesActive && tstats.meshMessageDeliveries < threshold) {\n const deficit = threshold - tstats.meshMessageDeliveries;\n tstats.meshFailurePenalty += deficit * deficit;\n }\n tstats.inMesh = false;\n tstats.meshMessageDeliveriesActive = false;\n });\n pstats.connected = false;\n pstats.expire = Date.now() + this.params.retainScore;\n }\n /** Handles scoring functionality as a peer GRAFTs to a topic. */\n graft(id, topic) {\n const pstats = this.peerStats.get(id);\n if (pstats != null) {\n const tstats = this.getPtopicStats(pstats, topic);\n if (tstats != null) {\n // if we are scoring the topic, update the mesh status.\n tstats.inMesh = true;\n tstats.graftTime = Date.now();\n tstats.meshTime = 0;\n tstats.meshMessageDeliveriesActive = false;\n }\n }\n }\n /** Handles scoring functionality as a peer PRUNEs from a topic. */\n prune(id, topic) {\n const pstats = this.peerStats.get(id);\n if (pstats != null) {\n const tstats = this.getPtopicStats(pstats, topic);\n if (tstats != null) {\n // sticky mesh delivery rate failure penalty\n const threshold = this.params.topics[topic].meshMessageDeliveriesThreshold;\n if (tstats.meshMessageDeliveriesActive && tstats.meshMessageDeliveries < threshold) {\n const deficit = threshold - tstats.meshMessageDeliveries;\n tstats.meshFailurePenalty += deficit * deficit;\n }\n tstats.meshMessageDeliveriesActive = false;\n tstats.inMesh = false;\n // TODO: Consider clearing score cache on important penalties\n // this.scoreCache.delete(id)\n }\n }\n }\n validateMessage(msgIdStr) {\n this.deliveryRecords.ensureRecord(msgIdStr);\n }\n deliverMessage(from, msgIdStr, topic) {\n this.markFirstMessageDelivery(from, topic);\n const drec = this.deliveryRecords.ensureRecord(msgIdStr);\n const now = Date.now();\n // defensive check that this is the first delivery trace -- delivery status should be unknown\n if (drec.status !== DeliveryRecordStatus.unknown) {\n this.log('unexpected delivery: message from %s was first seen %s ago and has delivery status %s', from, now - drec.firstSeenTsMs, DeliveryRecordStatus[drec.status]);\n return;\n }\n // mark the message as valid and reward mesh peers that have already forwarded it to us\n drec.status = DeliveryRecordStatus.valid;\n drec.validated = now;\n drec.peers.forEach((p) => {\n // this check is to make sure a peer can't send us a message twice and get a double count\n // if it is a first delivery.\n if (p !== from.toString()) {\n this.markDuplicateMessageDelivery(p, topic);\n }\n });\n }\n /**\n * Similar to `rejectMessage` except does not require the message id or reason for an invalid message.\n */\n rejectInvalidMessage(from, topic) {\n this.markInvalidMessageDelivery(from, topic);\n }\n rejectMessage(from, msgIdStr, topic, reason) {\n // eslint-disable-next-line default-case\n switch (reason) {\n // these messages are not tracked, but the peer is penalized as they are invalid\n case RejectReason.Error:\n this.markInvalidMessageDelivery(from, topic);\n return;\n // we ignore those messages, so do nothing.\n case RejectReason.Blacklisted:\n return;\n // the rest are handled after record creation\n }\n const drec = this.deliveryRecords.ensureRecord(msgIdStr);\n // defensive check that this is the first rejection -- delivery status should be unknown\n if (drec.status !== DeliveryRecordStatus.unknown) {\n this.log('unexpected rejection: message from %s was first seen %s ago and has delivery status %d', from, Date.now() - drec.firstSeenTsMs, DeliveryRecordStatus[drec.status]);\n return;\n }\n if (reason === RejectReason.Ignore) {\n // we were explicitly instructed by the validator to ignore the message but not penalize the peer\n drec.status = DeliveryRecordStatus.ignored;\n drec.peers.clear();\n return;\n }\n // mark the message as invalid and penalize peers that have already forwarded it.\n drec.status = DeliveryRecordStatus.invalid;\n this.markInvalidMessageDelivery(from, topic);\n drec.peers.forEach((p) => {\n this.markInvalidMessageDelivery(p, topic);\n });\n // release the delivery time tracking map to free some memory early\n drec.peers.clear();\n }\n duplicateMessage(from, msgIdStr, topic) {\n const drec = this.deliveryRecords.ensureRecord(msgIdStr);\n if (drec.peers.has(from)) {\n // we have already seen this duplicate\n return;\n }\n // eslint-disable-next-line default-case\n switch (drec.status) {\n case DeliveryRecordStatus.unknown:\n // the message is being validated; track the peer delivery and wait for\n // the Deliver/Reject/Ignore notification.\n drec.peers.add(from);\n break;\n case DeliveryRecordStatus.valid:\n // mark the peer delivery time to only count a duplicate delivery once.\n drec.peers.add(from);\n this.markDuplicateMessageDelivery(from, topic, drec.validated);\n break;\n case DeliveryRecordStatus.invalid:\n // we no longer track delivery time\n this.markInvalidMessageDelivery(from, topic);\n break;\n case DeliveryRecordStatus.ignored:\n // the message was ignored; do nothing (we don't know if it was valid)\n break;\n }\n }\n /**\n * Increments the \"invalid message deliveries\" counter for all scored topics the message is published in.\n */\n markInvalidMessageDelivery(from, topic) {\n const pstats = this.peerStats.get(from);\n if (pstats != null) {\n const tstats = this.getPtopicStats(pstats, topic);\n if (tstats != null) {\n tstats.invalidMessageDeliveries += 1;\n }\n }\n }\n /**\n * Increments the \"first message deliveries\" counter for all scored topics the message is published in,\n * as well as the \"mesh message deliveries\" counter, if the peer is in the mesh for the topic.\n * Messages already known (with the seenCache) are counted with markDuplicateMessageDelivery()\n */\n markFirstMessageDelivery(from, topic) {\n const pstats = this.peerStats.get(from);\n if (pstats != null) {\n const tstats = this.getPtopicStats(pstats, topic);\n if (tstats != null) {\n let cap = this.params.topics[topic].firstMessageDeliveriesCap;\n tstats.firstMessageDeliveries = Math.min(cap, tstats.firstMessageDeliveries + 1);\n if (tstats.inMesh) {\n cap = this.params.topics[topic].meshMessageDeliveriesCap;\n tstats.meshMessageDeliveries = Math.min(cap, tstats.meshMessageDeliveries + 1);\n }\n }\n }\n }\n /**\n * Increments the \"mesh message deliveries\" counter for messages we've seen before,\n * as long the message was received within the P3 window.\n */\n markDuplicateMessageDelivery(from, topic, validatedTime) {\n const pstats = this.peerStats.get(from);\n if (pstats != null) {\n const now = validatedTime !== undefined ? Date.now() : 0;\n const tstats = this.getPtopicStats(pstats, topic);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (tstats != null && tstats.inMesh) {\n const tparams = this.params.topics[topic];\n // check against the mesh delivery window -- if the validated time is passed as 0, then\n // the message was received before we finished validation and thus falls within the mesh\n // delivery window.\n if (validatedTime !== undefined) {\n const deliveryDelayMs = now - validatedTime;\n const isLateDelivery = deliveryDelayMs > tparams.meshMessageDeliveriesWindow;\n this.metrics?.onDuplicateMsgDelivery(topic, deliveryDelayMs, isLateDelivery);\n if (isLateDelivery) {\n return;\n }\n }\n const cap = tparams.meshMessageDeliveriesCap;\n tstats.meshMessageDeliveries = Math.min(cap, tstats.meshMessageDeliveries + 1);\n }\n }\n }\n /**\n * Removes an IP list from the tracking list for a peer.\n */\n removeIPsForPeer(id, ipsToRemove) {\n for (const ipToRemove of ipsToRemove) {\n const peerSet = this.peerIPs.get(ipToRemove);\n if (peerSet != null) {\n peerSet.delete(id);\n if (peerSet.size === 0) {\n this.peerIPs.delete(ipToRemove);\n }\n }\n }\n }\n /**\n * Returns topic stats if they exist, otherwise if the supplied parameters score the\n * topic, inserts the default stats and returns a reference to those. If neither apply, returns None.\n */\n getPtopicStats(pstats, topic) {\n let topicStats = pstats.topics[topic];\n if (topicStats !== undefined) {\n return topicStats;\n }\n if (this.params.topics[topic] !== undefined) {\n topicStats = {\n inMesh: false,\n graftTime: 0,\n meshTime: 0,\n firstMessageDeliveries: 0,\n meshMessageDeliveries: 0,\n meshMessageDeliveriesActive: false,\n meshFailurePenalty: 0,\n invalidMessageDeliveries: 0\n };\n pstats.topics[topic] = topicStats;\n return topicStats;\n }\n return null;\n }\n}\n//# sourceMappingURL=peer-score.js.map","export function computeScoreWeights(peer, pstats, params, peerIPs, topicStrToLabel) {\n let score = 0;\n const byTopic = new Map();\n // topic stores\n Object.entries(pstats.topics).forEach(([topic, tstats]) => {\n // the topic parameters\n // Aggregate by known topicLabel or throw to 'unknown'. This prevent too high cardinality\n const topicLabel = topicStrToLabel.get(topic) ?? 'unknown';\n const topicParams = params.topics[topic];\n if (topicParams === undefined) {\n // we are not scoring this topic\n return;\n }\n let topicScores = byTopic.get(topicLabel);\n if (topicScores == null) {\n topicScores = {\n p1w: 0,\n p2w: 0,\n p3w: 0,\n p3bw: 0,\n p4w: 0\n };\n byTopic.set(topicLabel, topicScores);\n }\n let p1w = 0;\n let p2w = 0;\n let p3w = 0;\n let p3bw = 0;\n let p4w = 0;\n // P1: time in Mesh\n if (tstats.inMesh) {\n const p1 = Math.max(tstats.meshTime / topicParams.timeInMeshQuantum, topicParams.timeInMeshCap);\n p1w += p1 * topicParams.timeInMeshWeight;\n }\n // P2: first message deliveries\n let p2 = tstats.firstMessageDeliveries;\n if (p2 > topicParams.firstMessageDeliveriesCap) {\n p2 = topicParams.firstMessageDeliveriesCap;\n }\n p2w += p2 * topicParams.firstMessageDeliveriesWeight;\n // P3: mesh message deliveries\n if (tstats.meshMessageDeliveriesActive &&\n tstats.meshMessageDeliveries < topicParams.meshMessageDeliveriesThreshold) {\n const deficit = topicParams.meshMessageDeliveriesThreshold - tstats.meshMessageDeliveries;\n const p3 = deficit * deficit;\n p3w += p3 * topicParams.meshMessageDeliveriesWeight;\n }\n // P3b:\n // NOTE: the weight of P3b is negative (validated in validateTopicScoreParams) so this detracts\n const p3b = tstats.meshFailurePenalty;\n p3bw += p3b * topicParams.meshFailurePenaltyWeight;\n // P4: invalid messages\n // NOTE: the weight of P4 is negative (validated in validateTopicScoreParams) so this detracts\n const p4 = tstats.invalidMessageDeliveries * tstats.invalidMessageDeliveries;\n p4w += p4 * topicParams.invalidMessageDeliveriesWeight;\n // update score, mixing with topic weight\n score += (p1w + p2w + p3w + p3bw + p4w) * topicParams.topicWeight;\n topicScores.p1w += p1w;\n topicScores.p2w += p2w;\n topicScores.p3w += p3w;\n topicScores.p3bw += p3bw;\n topicScores.p4w += p4w;\n });\n // apply the topic score cap, if any\n if (params.topicScoreCap > 0 && score > params.topicScoreCap) {\n score = params.topicScoreCap;\n // Proportionally apply cap to all individual contributions\n const capF = params.topicScoreCap / score;\n for (const ws of byTopic.values()) {\n ws.p1w *= capF;\n ws.p2w *= capF;\n ws.p3w *= capF;\n ws.p3bw *= capF;\n ws.p4w *= capF;\n }\n }\n let p5w = 0;\n let p6w = 0;\n let p7w = 0;\n // P5: application-specific score\n const p5 = params.appSpecificScore(peer);\n p5w += p5 * params.appSpecificWeight;\n // P6: IP colocation factor\n pstats.knownIPs.forEach((ip) => {\n if (params.IPColocationFactorWhitelist.has(ip)) {\n return;\n }\n // P6 has a cliff (IPColocationFactorThreshold)\n // It's only applied if at least that many peers are connected to us from that source IP addr.\n // It is quadratic, and the weight is negative (validated in validatePeerScoreParams)\n const peersInIP = peerIPs.get(ip);\n const numPeersInIP = (peersInIP != null) ? peersInIP.size : 0;\n if (numPeersInIP > params.IPColocationFactorThreshold) {\n const surplus = numPeersInIP - params.IPColocationFactorThreshold;\n const p6 = surplus * surplus;\n p6w += p6 * params.IPColocationFactorWeight;\n }\n });\n // P7: behavioural pattern penalty\n const p7 = pstats.behaviourPenalty * pstats.behaviourPenalty;\n p7w += p7 * params.behaviourPenaltyWeight;\n score += p5w + p6w + p7w;\n return {\n byTopic,\n p5w,\n p6w,\n p7w,\n score\n };\n}\nexport function computeAllPeersScoreWeights(peerIdStrs, peerStats, params, peerIPs, topicStrToLabel) {\n const sw = {\n byTopic: new Map(),\n p5w: [],\n p6w: [],\n p7w: [],\n score: []\n };\n for (const peerIdStr of peerIdStrs) {\n const pstats = peerStats.get(peerIdStr);\n if (pstats != null) {\n const swPeer = computeScoreWeights(peerIdStr, pstats, params, peerIPs, topicStrToLabel);\n for (const [topic, swPeerTopic] of swPeer.byTopic) {\n let swTopic = sw.byTopic.get(topic);\n if (swTopic == null) {\n swTopic = {\n p1w: [],\n p2w: [],\n p3w: [],\n p3bw: [],\n p4w: []\n };\n sw.byTopic.set(topic, swTopic);\n }\n swTopic.p1w.push(swPeerTopic.p1w);\n swTopic.p2w.push(swPeerTopic.p2w);\n swTopic.p3w.push(swPeerTopic.p3w);\n swTopic.p3bw.push(swPeerTopic.p3bw);\n swTopic.p4w.push(swPeerTopic.p4w);\n }\n sw.p5w.push(swPeer.p5w);\n sw.p6w.push(swPeer.p6w);\n sw.p7w.push(swPeer.p7w);\n sw.score.push(swPeer.score);\n }\n else {\n sw.p5w.push(0);\n sw.p6w.push(0);\n sw.p7w.push(0);\n sw.score.push(0);\n }\n }\n return sw;\n}\n//# sourceMappingURL=scoreMetrics.js.map","import { encode, decode } from 'it-length-prefixed';\nimport { pipe } from 'it-pipe';\nimport { pushable } from 'it-pushable';\nexport class OutboundStream {\n rawStream;\n pushable;\n closeController;\n maxBufferSize;\n constructor(rawStream, errCallback, opts) {\n this.rawStream = rawStream;\n this.pushable = pushable();\n this.closeController = new AbortController();\n this.maxBufferSize = opts.maxBufferSize ?? Infinity;\n this.closeController.signal.addEventListener('abort', () => {\n rawStream.close()\n .catch(err => {\n rawStream.abort(err);\n });\n });\n pipe(this.pushable, this.rawStream).catch(errCallback);\n }\n get protocol() {\n // TODO remove this non-nullish assertion after https://github.com/libp2p/js-libp2p-interfaces/pull/265 is incorporated\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.rawStream.protocol;\n }\n push(data) {\n if (this.pushable.readableLength > this.maxBufferSize) {\n throw Error(`OutboundStream buffer full, size > ${this.maxBufferSize}`);\n }\n this.pushable.push(encode.single(data));\n }\n /**\n * Same to push() but this is prefixed data so no need to encode length prefixed again\n */\n pushPrefixed(data) {\n if (this.pushable.readableLength > this.maxBufferSize) {\n throw Error(`OutboundStream buffer full, size > ${this.maxBufferSize}`);\n }\n this.pushable.push(data);\n }\n async close() {\n this.closeController.abort();\n // similar to pushable.end() but clear the internal buffer\n await this.pushable.return();\n }\n}\nexport class InboundStream {\n source;\n rawStream;\n closeController;\n constructor(rawStream, opts = {}) {\n this.rawStream = rawStream;\n this.closeController = new AbortController();\n this.closeController.signal.addEventListener('abort', () => {\n rawStream.close()\n .catch(err => {\n rawStream.abort(err);\n });\n });\n this.source = pipe(this.rawStream, (source) => decode(source, opts));\n }\n async close() {\n this.closeController.abort();\n }\n}\n//# sourceMappingURL=stream.js.map","import { RejectReason } from './types.js';\n/**\n * IWantTracer is an internal tracer that tracks IWANT requests in order to penalize\n * peers who don't follow up on IWANT requests after an IHAVE advertisement.\n * The tracking of promises is probabilistic to avoid using too much memory.\n *\n * Note: Do not confuse these 'promises' with JS Promise objects.\n * These 'promises' are merely expectations of a peer's behavior.\n */\nexport class IWantTracer {\n gossipsubIWantFollowupMs;\n msgIdToStrFn;\n metrics;\n /**\n * Promises to deliver a message\n * Map per message id, per peer, promise expiration time\n */\n promises = new Map();\n /**\n * First request time by msgId. Used for metrics to track expire times.\n * Necessary to know if peers are actually breaking promises or simply sending them a bit later\n */\n requestMsByMsg = new Map();\n requestMsByMsgExpire;\n constructor(gossipsubIWantFollowupMs, msgIdToStrFn, metrics) {\n this.gossipsubIWantFollowupMs = gossipsubIWantFollowupMs;\n this.msgIdToStrFn = msgIdToStrFn;\n this.metrics = metrics;\n this.requestMsByMsgExpire = 10 * gossipsubIWantFollowupMs;\n }\n get size() {\n return this.promises.size;\n }\n get requestMsByMsgSize() {\n return this.requestMsByMsg.size;\n }\n /**\n * Track a promise to deliver a message from a list of msgIds we are requesting\n */\n addPromise(from, msgIds) {\n // pick msgId randomly from the list\n const ix = Math.floor(Math.random() * msgIds.length);\n const msgId = msgIds[ix];\n const msgIdStr = this.msgIdToStrFn(msgId);\n let expireByPeer = this.promises.get(msgIdStr);\n if (expireByPeer == null) {\n expireByPeer = new Map();\n this.promises.set(msgIdStr, expireByPeer);\n }\n const now = Date.now();\n // If a promise for this message id and peer already exists we don't update the expiry\n if (!expireByPeer.has(from)) {\n expireByPeer.set(from, now + this.gossipsubIWantFollowupMs);\n if (this.metrics != null) {\n this.metrics.iwantPromiseStarted.inc(1);\n if (!this.requestMsByMsg.has(msgIdStr)) {\n this.requestMsByMsg.set(msgIdStr, now);\n }\n }\n }\n }\n /**\n * Returns the number of broken promises for each peer who didn't follow up on an IWANT request.\n *\n * This should be called not too often relative to the expire times, since it iterates over the whole data.\n */\n getBrokenPromises() {\n const now = Date.now();\n const result = new Map();\n let brokenPromises = 0;\n this.promises.forEach((expireByPeer, msgId) => {\n expireByPeer.forEach((expire, p) => {\n // the promise has been broken\n if (expire < now) {\n // add 1 to result\n result.set(p, (result.get(p) ?? 0) + 1);\n // delete from tracked promises\n expireByPeer.delete(p);\n // for metrics\n brokenPromises++;\n }\n });\n // clean up empty promises for a msgId\n if (expireByPeer.size === 0) {\n this.promises.delete(msgId);\n }\n });\n this.metrics?.iwantPromiseBroken.inc(brokenPromises);\n return result;\n }\n /**\n * Someone delivered a message, stop tracking promises for it\n */\n deliverMessage(msgIdStr, isDuplicate = false) {\n this.trackMessage(msgIdStr);\n const expireByPeer = this.promises.get(msgIdStr);\n // Expired promise, check requestMsByMsg\n if (expireByPeer != null) {\n this.promises.delete(msgIdStr);\n if (this.metrics != null) {\n this.metrics.iwantPromiseResolved.inc(1);\n if (isDuplicate)\n this.metrics.iwantPromiseResolvedFromDuplicate.inc(1);\n this.metrics.iwantPromiseResolvedPeers.inc(expireByPeer.size);\n }\n }\n }\n /**\n * A message got rejected, so we can stop tracking promises and let the score penalty apply from invalid message delivery,\n * unless its an obviously invalid message.\n */\n rejectMessage(msgIdStr, reason) {\n this.trackMessage(msgIdStr);\n // A message got rejected, so we can stop tracking promises and let the score penalty apply.\n // With the expection of obvious invalid messages\n switch (reason) {\n case RejectReason.Error:\n return;\n default:\n break;\n }\n this.promises.delete(msgIdStr);\n }\n clear() {\n this.promises.clear();\n }\n prune() {\n const maxMs = Date.now() - this.requestMsByMsgExpire;\n let count = 0;\n for (const [k, v] of this.requestMsByMsg.entries()) {\n if (v < maxMs) {\n // messages that stay too long in the requestMsByMsg map, delete\n this.requestMsByMsg.delete(k);\n count++;\n }\n else {\n // recent messages, keep them\n // sort by insertion order\n break;\n }\n }\n this.metrics?.iwantMessagePruned.inc(count);\n }\n trackMessage(msgIdStr) {\n if (this.metrics != null) {\n const requestMs = this.requestMsByMsg.get(msgIdStr);\n if (requestMs !== undefined) {\n this.metrics.iwantPromiseDeliveryTime.observe((Date.now() - requestMs) / 1000);\n this.requestMsByMsg.delete(msgIdStr);\n }\n }\n }\n}\n//# sourceMappingURL=tracer.js.map","/* eslint-env browser */\n// Check native crypto exists and is enabled (In insecure context `self.crypto`\n// exists but `self.crypto.subtle` does not).\nexport default {\n get(win = globalThis) {\n const nativeCrypto = win.crypto;\n if (nativeCrypto?.subtle == null) {\n throw Object.assign(new Error('Missing Web Crypto API. ' +\n 'The most likely cause of this error is that this page is being accessed ' +\n 'from an insecure context (i.e. not HTTPS). For more information and ' +\n 'possible resolutions see ' +\n 'https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api'), { code: 'ERR_MISSING_WEB_CRYPTO' });\n }\n return nativeCrypto;\n }\n};\n//# sourceMappingURL=webcrypto-browser.js.map","import { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nexport function base64urlToBuffer(str, len) {\n let buf = uint8ArrayFromString(str, 'base64urlpad');\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return buf;\n}\nexport function isPromise(thing) {\n if (thing == null) {\n return false;\n }\n return typeof thing.then === 'function' &&\n typeof thing.catch === 'function' &&\n typeof thing.finally === 'function';\n}\n//# sourceMappingURL=util.js.map","import { ed25519 as ed } from '@noble/curves/ed25519';\nconst PUBLIC_KEY_BYTE_LENGTH = 32;\nconst PRIVATE_KEY_BYTE_LENGTH = 64; // private key is actually 32 bytes but for historical reasons we concat private and public keys\nconst KEYS_BYTE_LENGTH = 32;\nexport { PUBLIC_KEY_BYTE_LENGTH as publicKeyLength };\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n // the actual private key (32 bytes)\n const privateKeyRaw = ed.utils.randomPrivateKey();\n const publicKey = ed.getPublicKey(privateKeyRaw);\n // concatenated the public key to the private key\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\n/**\n * Generate keypair from a 32 byte uint8array\n */\nexport function generateKeyFromSeed(seed) {\n if (seed.length !== KEYS_BYTE_LENGTH) {\n throw new TypeError('\"seed\" must be 32 bytes in length.');\n }\n else if (!(seed instanceof Uint8Array)) {\n throw new TypeError('\"seed\" must be a node.js Buffer, or Uint8Array.');\n }\n // based on node forges algorithm, the seed is used directly as private key\n const privateKeyRaw = seed;\n const publicKey = ed.getPublicKey(privateKeyRaw);\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\nexport function hashAndSign(privateKey, msg) {\n const privateKeyRaw = privateKey.subarray(0, KEYS_BYTE_LENGTH);\n return ed.sign(msg instanceof Uint8Array ? msg : msg.subarray(), privateKeyRaw);\n}\nexport function hashAndVerify(publicKey, sig, msg) {\n return ed.verify(sig, msg instanceof Uint8Array ? msg : msg.subarray(), publicKey);\n}\nfunction concatKeys(privateKeyRaw, publicKey) {\n const privateKey = new Uint8Array(PRIVATE_KEY_BYTE_LENGTH);\n for (let i = 0; i < KEYS_BYTE_LENGTH; i++) {\n privateKey[i] = privateKeyRaw[i];\n privateKey[KEYS_BYTE_LENGTH + i] = publicKey[i];\n }\n return privateKey;\n}\n//# sourceMappingURL=ed25519-browser.js.map","import { concat } from 'uint8arrays/concat';\nimport { fromString } from 'uint8arrays/from-string';\nimport webcrypto from '../webcrypto.js';\n// WebKit on Linux does not support deriving a key from an empty PBKDF2 key.\n// So, as a workaround, we provide the generated key as a constant. We test that\n// this generated key is accurate in test/workaround.spec.ts\n// Generated via:\n// await crypto.subtle.exportKey('jwk',\n// await crypto.subtle.deriveKey(\n// { name: 'PBKDF2', salt: new Uint8Array(16), iterations: 32767, hash: { name: 'SHA-256' } },\n// await crypto.subtle.importKey('raw', new Uint8Array(0), { name: 'PBKDF2' }, false, ['deriveKey']),\n// { name: 'AES-GCM', length: 128 }, true, ['encrypt', 'decrypt'])\n// )\nexport const derivedEmptyPasswordKey = { alg: 'A128GCM', ext: true, k: 'scm9jmO_4BJAgdwWGVulLg', key_ops: ['encrypt', 'decrypt'], kty: 'oct' };\n// Based off of code from https://github.com/luke-park/SecureCompatibleEncryptionExamples\nexport function create(opts) {\n const algorithm = opts?.algorithm ?? 'AES-GCM';\n let keyLength = opts?.keyLength ?? 16;\n const nonceLength = opts?.nonceLength ?? 12;\n const digest = opts?.digest ?? 'SHA-256';\n const saltLength = opts?.saltLength ?? 16;\n const iterations = opts?.iterations ?? 32767;\n const crypto = webcrypto.get();\n keyLength *= 8; // Browser crypto uses bits instead of bytes\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to encrypt the data.\n */\n async function encrypt(data, password) {\n const salt = crypto.getRandomValues(new Uint8Array(saltLength));\n const nonce = crypto.getRandomValues(new Uint8Array(nonceLength));\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n }\n }\n else {\n // Derive a key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n // Encrypt the string.\n const ciphertext = await crypto.subtle.encrypt(aesGcm, cryptoKey, data);\n return concat([salt, aesGcm.iv, new Uint8Array(ciphertext)]);\n }\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to decrypt the data. The options used to create\n * this decryption cipher must be the same as those used to create\n * the encryption cipher.\n */\n async function decrypt(data, password) {\n const salt = data.subarray(0, saltLength);\n const nonce = data.subarray(saltLength, saltLength + nonceLength);\n const ciphertext = data.subarray(saltLength + nonceLength);\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['decrypt']);\n }\n }\n else {\n // Derive the key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n // Decrypt the string.\n const plaintext = await crypto.subtle.decrypt(aesGcm, cryptoKey, ciphertext);\n return new Uint8Array(plaintext);\n }\n const cipher = {\n encrypt,\n decrypt\n };\n return cipher;\n}\n//# sourceMappingURL=aes-gcm.browser.js.map","import { base64 } from 'multiformats/bases/base64';\nimport * as ciphers from '../ciphers/aes-gcm.js';\n/**\n * Exports the given PrivateKey as a base64 encoded string.\n * The PrivateKey is encrypted via a password derived PBKDF2 key\n * leveraging the aes-gcm cipher algorithm.\n */\nexport async function exporter(privateKey, password) {\n const cipher = ciphers.create();\n const encryptedKey = await cipher.encrypt(privateKey, password);\n return base64.encode(encryptedKey);\n}\n//# sourceMappingURL=exporter.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var KeyType;\n(function (KeyType) {\n KeyType[\"RSA\"] = \"RSA\";\n KeyType[\"Ed25519\"] = \"Ed25519\";\n KeyType[\"Secp256k1\"] = \"Secp256k1\";\n})(KeyType || (KeyType = {}));\nvar __KeyTypeValues;\n(function (__KeyTypeValues) {\n __KeyTypeValues[__KeyTypeValues[\"RSA\"] = 0] = \"RSA\";\n __KeyTypeValues[__KeyTypeValues[\"Ed25519\"] = 1] = \"Ed25519\";\n __KeyTypeValues[__KeyTypeValues[\"Secp256k1\"] = 2] = \"Secp256k1\";\n})(__KeyTypeValues || (__KeyTypeValues = {}));\n(function (KeyType) {\n KeyType.codec = () => {\n return enumeration(__KeyTypeValues);\n };\n})(KeyType || (KeyType = {}));\nexport var PublicKey;\n(function (PublicKey) {\n let _codec;\n PublicKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PublicKey.encode = (obj) => {\n return encodeMessage(obj, PublicKey.codec());\n };\n PublicKey.decode = (buf) => {\n return decodeMessage(buf, PublicKey.codec());\n };\n})(PublicKey || (PublicKey = {}));\nexport var PrivateKey;\n(function (PrivateKey) {\n let _codec;\n PrivateKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PrivateKey.encode = (obj) => {\n return encodeMessage(obj, PrivateKey.codec());\n };\n PrivateKey.decode = (buf) => {\n return decodeMessage(buf, PrivateKey.codec());\n };\n})(PrivateKey || (PrivateKey = {}));\n//# sourceMappingURL=keys.js.map","import { CodeError } from '@libp2p/interface';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { isPromise } from '../util.js';\nimport * as crypto from './ed25519.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nexport class Ed25519PublicKey {\n _key;\n constructor(key) {\n this._key = ensureKey(key, crypto.publicKeyLength);\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class Ed25519PrivateKey {\n _key;\n _publicKey;\n // key - 64 byte Uint8Array containing private key\n // publicKey - 32 byte Uint8Array containing public key\n constructor(key, publicKey) {\n this._key = ensureKey(key, crypto.privateKeyLength);\n this._publicKey = ensureKey(publicKey, crypto.publicKeyLength);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Ed25519PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the identity multihash containing its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n *\n * @returns {Promise}\n */\n async id() {\n const encoding = identity.digest(this.public.bytes);\n return base58btc.encode(encoding.bytes).substring(1);\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalEd25519PrivateKey(bytes) {\n // Try the old, redundant public key version\n if (bytes.length > crypto.privateKeyLength) {\n bytes = ensureKey(bytes, crypto.privateKeyLength + crypto.publicKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.privateKeyLength, bytes.length);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n }\n bytes = ensureKey(bytes, crypto.privateKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.publicKeyLength);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n}\nexport function unmarshalEd25519PublicKey(bytes) {\n bytes = ensureKey(bytes, crypto.publicKeyLength);\n return new Ed25519PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const { privateKey, publicKey } = crypto.generateKey();\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nexport async function generateKeyPairFromSeed(seed) {\n const { privateKey, publicKey } = crypto.generateKeyFromSeed(seed);\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nfunction ensureKey(key, length) {\n key = Uint8Array.from(key ?? []);\n if (key.length !== length) {\n throw new CodeError(`Key must be a Uint8Array of length ${length}, got ${key.length}`, 'ERR_INVALID_KEY_TYPE');\n }\n return key;\n}\n//# sourceMappingURL=ed25519-class.js.map","import { base64 } from 'multiformats/bases/base64';\nimport * as ciphers from '../ciphers/aes-gcm.js';\n/**\n * Attempts to decrypt a base64 encoded PrivateKey string\n * with the given password. The privateKey must have been exported\n * using the same password and underlying cipher (aes-gcm)\n */\nexport async function importer(privateKey, password) {\n const encryptedKey = base64.decode(privateKey);\n const cipher = ciphers.create();\n return cipher.decrypt(encryptedKey, password);\n}\n//# sourceMappingURL=importer.js.map","import { CodeError } from '@libp2p/interface';\nimport { randomBytes as randB } from '@noble/hashes/utils';\n/**\n * Generates a Uint8Array with length `number` populated by random bytes\n */\nexport default function randomBytes(length) {\n if (isNaN(length) || length <= 0) {\n throw new CodeError('random bytes length must be a Number bigger than 0', 'ERR_INVALID_LENGTH');\n }\n return randB(length);\n}\n//# sourceMappingURL=random-bytes.js.map","import { hash as assertHash, number as assertNumber } from './_assert.js';\nimport { hmac } from './hmac.js';\nimport { createView, toBytes, checkOpts, asyncLoop } from './utils.js';\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n assertHash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n assertNumber(c);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = toBytes(_password);\n const salt = toBytes(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nexport function pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexport async function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, () => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n//# sourceMappingURL=pbkdf2.js.map","/*!\n * MIT License\n * \n * Copyright (c) 2017-2022 Peculiar Ventures, LLC\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n */\n\nconst ARRAY_BUFFER_NAME = \"[object ArrayBuffer]\";\nclass BufferSourceConverter {\n static isArrayBuffer(data) {\n return Object.prototype.toString.call(data) === ARRAY_BUFFER_NAME;\n }\n static toArrayBuffer(data) {\n if (this.isArrayBuffer(data)) {\n return data;\n }\n if (data.byteLength === data.buffer.byteLength) {\n return data.buffer;\n }\n if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {\n return data.buffer;\n }\n return this.toUint8Array(data.buffer)\n .slice(data.byteOffset, data.byteOffset + data.byteLength)\n .buffer;\n }\n static toUint8Array(data) {\n return this.toView(data, Uint8Array);\n }\n static toView(data, type) {\n if (data.constructor === type) {\n return data;\n }\n if (this.isArrayBuffer(data)) {\n return new type(data);\n }\n if (this.isArrayBufferView(data)) {\n return new type(data.buffer, data.byteOffset, data.byteLength);\n }\n throw new TypeError(\"The provided value is not of type '(ArrayBuffer or ArrayBufferView)'\");\n }\n static isBufferSource(data) {\n return this.isArrayBufferView(data)\n || this.isArrayBuffer(data);\n }\n static isArrayBufferView(data) {\n return ArrayBuffer.isView(data)\n || (data && this.isArrayBuffer(data.buffer));\n }\n static isEqual(a, b) {\n const aView = BufferSourceConverter.toUint8Array(a);\n const bView = BufferSourceConverter.toUint8Array(b);\n if (aView.length !== bView.byteLength) {\n return false;\n }\n for (let i = 0; i < aView.length; i++) {\n if (aView[i] !== bView[i]) {\n return false;\n }\n }\n return true;\n }\n static concat(...args) {\n let buffers;\n if (Array.isArray(args[0]) && !(args[1] instanceof Function)) {\n buffers = args[0];\n }\n else if (Array.isArray(args[0]) && args[1] instanceof Function) {\n buffers = args[0];\n }\n else {\n if (args[args.length - 1] instanceof Function) {\n buffers = args.slice(0, args.length - 1);\n }\n else {\n buffers = args;\n }\n }\n let size = 0;\n for (const buffer of buffers) {\n size += buffer.byteLength;\n }\n const res = new Uint8Array(size);\n let offset = 0;\n for (const buffer of buffers) {\n const view = this.toUint8Array(buffer);\n res.set(view, offset);\n offset += view.length;\n }\n if (args[args.length - 1] instanceof Function) {\n return this.toView(res, args[args.length - 1]);\n }\n return res.buffer;\n }\n}\n\nconst STRING_TYPE = \"string\";\nconst HEX_REGEX = /^[0-9a-f]+$/i;\nconst BASE64_REGEX = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\nconst BASE64URL_REGEX = /^[a-zA-Z0-9-_]+$/;\nclass Utf8Converter {\n static fromString(text) {\n const s = unescape(encodeURIComponent(text));\n const uintArray = new Uint8Array(s.length);\n for (let i = 0; i < s.length; i++) {\n uintArray[i] = s.charCodeAt(i);\n }\n return uintArray.buffer;\n }\n static toString(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n let encodedString = \"\";\n for (let i = 0; i < buf.length; i++) {\n encodedString += String.fromCharCode(buf[i]);\n }\n const decodedString = decodeURIComponent(escape(encodedString));\n return decodedString;\n }\n}\nclass Utf16Converter {\n static toString(buffer, littleEndian = false) {\n const arrayBuffer = BufferSourceConverter.toArrayBuffer(buffer);\n const dataView = new DataView(arrayBuffer);\n let res = \"\";\n for (let i = 0; i < arrayBuffer.byteLength; i += 2) {\n const code = dataView.getUint16(i, littleEndian);\n res += String.fromCharCode(code);\n }\n return res;\n }\n static fromString(text, littleEndian = false) {\n const res = new ArrayBuffer(text.length * 2);\n const dataView = new DataView(res);\n for (let i = 0; i < text.length; i++) {\n dataView.setUint16(i * 2, text.charCodeAt(i), littleEndian);\n }\n return res;\n }\n}\nclass Convert {\n static isHex(data) {\n return typeof data === STRING_TYPE\n && HEX_REGEX.test(data);\n }\n static isBase64(data) {\n return typeof data === STRING_TYPE\n && BASE64_REGEX.test(data);\n }\n static isBase64Url(data) {\n return typeof data === STRING_TYPE\n && BASE64URL_REGEX.test(data);\n }\n static ToString(buffer, enc = \"utf8\") {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n switch (enc.toLowerCase()) {\n case \"utf8\":\n return this.ToUtf8String(buf);\n case \"binary\":\n return this.ToBinary(buf);\n case \"hex\":\n return this.ToHex(buf);\n case \"base64\":\n return this.ToBase64(buf);\n case \"base64url\":\n return this.ToBase64Url(buf);\n case \"utf16le\":\n return Utf16Converter.toString(buf, true);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.toString(buf);\n default:\n throw new Error(`Unknown type of encoding '${enc}'`);\n }\n }\n static FromString(str, enc = \"utf8\") {\n if (!str) {\n return new ArrayBuffer(0);\n }\n switch (enc.toLowerCase()) {\n case \"utf8\":\n return this.FromUtf8String(str);\n case \"binary\":\n return this.FromBinary(str);\n case \"hex\":\n return this.FromHex(str);\n case \"base64\":\n return this.FromBase64(str);\n case \"base64url\":\n return this.FromBase64Url(str);\n case \"utf16le\":\n return Utf16Converter.fromString(str, true);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.fromString(str);\n default:\n throw new Error(`Unknown type of encoding '${enc}'`);\n }\n }\n static ToBase64(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n if (typeof btoa !== \"undefined\") {\n const binary = this.ToString(buf, \"binary\");\n return btoa(binary);\n }\n else {\n return Buffer.from(buf).toString(\"base64\");\n }\n }\n static FromBase64(base64) {\n const formatted = this.formatString(base64);\n if (!formatted) {\n return new ArrayBuffer(0);\n }\n if (!Convert.isBase64(formatted)) {\n throw new TypeError(\"Argument 'base64Text' is not Base64 encoded\");\n }\n if (typeof atob !== \"undefined\") {\n return this.FromBinary(atob(formatted));\n }\n else {\n return new Uint8Array(Buffer.from(formatted, \"base64\")).buffer;\n }\n }\n static FromBase64Url(base64url) {\n const formatted = this.formatString(base64url);\n if (!formatted) {\n return new ArrayBuffer(0);\n }\n if (!Convert.isBase64Url(formatted)) {\n throw new TypeError(\"Argument 'base64url' is not Base64Url encoded\");\n }\n return this.FromBase64(this.Base64Padding(formatted.replace(/\\-/g, \"+\").replace(/\\_/g, \"/\")));\n }\n static ToBase64Url(data) {\n return this.ToBase64(data).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/\\=/g, \"\");\n }\n static FromUtf8String(text, encoding = Convert.DEFAULT_UTF8_ENCODING) {\n switch (encoding) {\n case \"ascii\":\n return this.FromBinary(text);\n case \"utf8\":\n return Utf8Converter.fromString(text);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.fromString(text);\n case \"utf16le\":\n case \"usc2\":\n return Utf16Converter.fromString(text, true);\n default:\n throw new Error(`Unknown type of encoding '${encoding}'`);\n }\n }\n static ToUtf8String(buffer, encoding = Convert.DEFAULT_UTF8_ENCODING) {\n switch (encoding) {\n case \"ascii\":\n return this.ToBinary(buffer);\n case \"utf8\":\n return Utf8Converter.toString(buffer);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.toString(buffer);\n case \"utf16le\":\n case \"usc2\":\n return Utf16Converter.toString(buffer, true);\n default:\n throw new Error(`Unknown type of encoding '${encoding}'`);\n }\n }\n static FromBinary(text) {\n const stringLength = text.length;\n const resultView = new Uint8Array(stringLength);\n for (let i = 0; i < stringLength; i++) {\n resultView[i] = text.charCodeAt(i);\n }\n return resultView.buffer;\n }\n static ToBinary(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n let res = \"\";\n for (let i = 0; i < buf.length; i++) {\n res += String.fromCharCode(buf[i]);\n }\n return res;\n }\n static ToHex(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n let result = \"\";\n const len = buf.length;\n for (let i = 0; i < len; i++) {\n const byte = buf[i];\n if (byte < 16) {\n result += \"0\";\n }\n result += byte.toString(16);\n }\n return result;\n }\n static FromHex(hexString) {\n let formatted = this.formatString(hexString);\n if (!formatted) {\n return new ArrayBuffer(0);\n }\n if (!Convert.isHex(formatted)) {\n throw new TypeError(\"Argument 'hexString' is not HEX encoded\");\n }\n if (formatted.length % 2) {\n formatted = `0${formatted}`;\n }\n const res = new Uint8Array(formatted.length / 2);\n for (let i = 0; i < formatted.length; i = i + 2) {\n const c = formatted.slice(i, i + 2);\n res[i / 2] = parseInt(c, 16);\n }\n return res.buffer;\n }\n static ToUtf16String(buffer, littleEndian = false) {\n return Utf16Converter.toString(buffer, littleEndian);\n }\n static FromUtf16String(text, littleEndian = false) {\n return Utf16Converter.fromString(text, littleEndian);\n }\n static Base64Padding(base64) {\n const padCount = 4 - (base64.length % 4);\n if (padCount < 4) {\n for (let i = 0; i < padCount; i++) {\n base64 += \"=\";\n }\n }\n return base64;\n }\n static formatString(data) {\n return (data === null || data === void 0 ? void 0 : data.replace(/[\\n\\r\\t ]/g, \"\")) || \"\";\n }\n}\nConvert.DEFAULT_UTF8_ENCODING = \"utf8\";\n\nfunction assign(target, ...sources) {\n const res = arguments[0];\n for (let i = 1; i < arguments.length; i++) {\n const obj = arguments[i];\n for (const prop in obj) {\n res[prop] = obj[prop];\n }\n }\n return res;\n}\nfunction combine(...buf) {\n const totalByteLength = buf.map((item) => item.byteLength).reduce((prev, cur) => prev + cur);\n const res = new Uint8Array(totalByteLength);\n let currentPos = 0;\n buf.map((item) => new Uint8Array(item)).forEach((arr) => {\n for (const item2 of arr) {\n res[currentPos++] = item2;\n }\n });\n return res.buffer;\n}\nfunction isEqual(bytes1, bytes2) {\n if (!(bytes1 && bytes2)) {\n return false;\n }\n if (bytes1.byteLength !== bytes2.byteLength) {\n return false;\n }\n const b1 = new Uint8Array(bytes1);\n const b2 = new Uint8Array(bytes2);\n for (let i = 0; i < bytes1.byteLength; i++) {\n if (b1[i] !== b2[i]) {\n return false;\n }\n }\n return true;\n}\n\nexport { BufferSourceConverter, Convert, assign, combine, isEqual };\n","/*!\n Copyright (c) Peculiar Ventures, LLC\n*/\n\nfunction getUTCDate(date) {\r\n return new Date(date.getTime() + (date.getTimezoneOffset() * 60000));\r\n}\r\nfunction getParametersValue(parameters, name, defaultValue) {\r\n var _a;\r\n if ((parameters instanceof Object) === false) {\r\n return defaultValue;\r\n }\r\n return (_a = parameters[name]) !== null && _a !== void 0 ? _a : defaultValue;\r\n}\r\nfunction bufferToHexCodes(inputBuffer, inputOffset = 0, inputLength = (inputBuffer.byteLength - inputOffset), insertSpace = false) {\r\n let result = \"\";\r\n for (const item of (new Uint8Array(inputBuffer, inputOffset, inputLength))) {\r\n const str = item.toString(16).toUpperCase();\r\n if (str.length === 1) {\r\n result += \"0\";\r\n }\r\n result += str;\r\n if (insertSpace) {\r\n result += \" \";\r\n }\r\n }\r\n return result.trim();\r\n}\r\nfunction checkBufferParams(baseBlock, inputBuffer, inputOffset, inputLength) {\r\n if (!(inputBuffer instanceof ArrayBuffer)) {\r\n baseBlock.error = \"Wrong parameter: inputBuffer must be \\\"ArrayBuffer\\\"\";\r\n return false;\r\n }\r\n if (!inputBuffer.byteLength) {\r\n baseBlock.error = \"Wrong parameter: inputBuffer has zero length\";\r\n return false;\r\n }\r\n if (inputOffset < 0) {\r\n baseBlock.error = \"Wrong parameter: inputOffset less than zero\";\r\n return false;\r\n }\r\n if (inputLength < 0) {\r\n baseBlock.error = \"Wrong parameter: inputLength less than zero\";\r\n return false;\r\n }\r\n if ((inputBuffer.byteLength - inputOffset - inputLength) < 0) {\r\n baseBlock.error = \"End of input reached before message was fully decoded (inconsistent offset and length values)\";\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction utilFromBase(inputBuffer, inputBase) {\r\n let result = 0;\r\n if (inputBuffer.length === 1) {\r\n return inputBuffer[0];\r\n }\r\n for (let i = (inputBuffer.length - 1); i >= 0; i--) {\r\n result += inputBuffer[(inputBuffer.length - 1) - i] * Math.pow(2, inputBase * i);\r\n }\r\n return result;\r\n}\r\nfunction utilToBase(value, base, reserved = (-1)) {\r\n const internalReserved = reserved;\r\n let internalValue = value;\r\n let result = 0;\r\n let biggest = Math.pow(2, base);\r\n for (let i = 1; i < 8; i++) {\r\n if (value < biggest) {\r\n let retBuf;\r\n if (internalReserved < 0) {\r\n retBuf = new ArrayBuffer(i);\r\n result = i;\r\n }\r\n else {\r\n if (internalReserved < i) {\r\n return (new ArrayBuffer(0));\r\n }\r\n retBuf = new ArrayBuffer(internalReserved);\r\n result = internalReserved;\r\n }\r\n const retView = new Uint8Array(retBuf);\r\n for (let j = (i - 1); j >= 0; j--) {\r\n const basis = Math.pow(2, j * base);\r\n retView[result - j - 1] = Math.floor(internalValue / basis);\r\n internalValue -= (retView[result - j - 1]) * basis;\r\n }\r\n return retBuf;\r\n }\r\n biggest *= Math.pow(2, base);\r\n }\r\n return new ArrayBuffer(0);\r\n}\r\nfunction utilConcatBuf(...buffers) {\r\n let outputLength = 0;\r\n let prevLength = 0;\r\n for (const buffer of buffers) {\r\n outputLength += buffer.byteLength;\r\n }\r\n const retBuf = new ArrayBuffer(outputLength);\r\n const retView = new Uint8Array(retBuf);\r\n for (const buffer of buffers) {\r\n retView.set(new Uint8Array(buffer), prevLength);\r\n prevLength += buffer.byteLength;\r\n }\r\n return retBuf;\r\n}\r\nfunction utilConcatView(...views) {\r\n let outputLength = 0;\r\n let prevLength = 0;\r\n for (const view of views) {\r\n outputLength += view.length;\r\n }\r\n const retBuf = new ArrayBuffer(outputLength);\r\n const retView = new Uint8Array(retBuf);\r\n for (const view of views) {\r\n retView.set(view, prevLength);\r\n prevLength += view.length;\r\n }\r\n return retView;\r\n}\r\nfunction utilDecodeTC() {\r\n const buf = new Uint8Array(this.valueHex);\r\n if (this.valueHex.byteLength >= 2) {\r\n const condition1 = (buf[0] === 0xFF) && (buf[1] & 0x80);\r\n const condition2 = (buf[0] === 0x00) && ((buf[1] & 0x80) === 0x00);\r\n if (condition1 || condition2) {\r\n this.warnings.push(\"Needlessly long format\");\r\n }\r\n }\r\n const bigIntBuffer = new ArrayBuffer(this.valueHex.byteLength);\r\n const bigIntView = new Uint8Array(bigIntBuffer);\r\n for (let i = 0; i < this.valueHex.byteLength; i++) {\r\n bigIntView[i] = 0;\r\n }\r\n bigIntView[0] = (buf[0] & 0x80);\r\n const bigInt = utilFromBase(bigIntView, 8);\r\n const smallIntBuffer = new ArrayBuffer(this.valueHex.byteLength);\r\n const smallIntView = new Uint8Array(smallIntBuffer);\r\n for (let j = 0; j < this.valueHex.byteLength; j++) {\r\n smallIntView[j] = buf[j];\r\n }\r\n smallIntView[0] &= 0x7F;\r\n const smallInt = utilFromBase(smallIntView, 8);\r\n return (smallInt - bigInt);\r\n}\r\nfunction utilEncodeTC(value) {\r\n const modValue = (value < 0) ? (value * (-1)) : value;\r\n let bigInt = 128;\r\n for (let i = 1; i < 8; i++) {\r\n if (modValue <= bigInt) {\r\n if (value < 0) {\r\n const smallInt = bigInt - modValue;\r\n const retBuf = utilToBase(smallInt, 8, i);\r\n const retView = new Uint8Array(retBuf);\r\n retView[0] |= 0x80;\r\n return retBuf;\r\n }\r\n let retBuf = utilToBase(modValue, 8, i);\r\n let retView = new Uint8Array(retBuf);\r\n if (retView[0] & 0x80) {\r\n const tempBuf = retBuf.slice(0);\r\n const tempView = new Uint8Array(tempBuf);\r\n retBuf = new ArrayBuffer(retBuf.byteLength + 1);\r\n retView = new Uint8Array(retBuf);\r\n for (let k = 0; k < tempBuf.byteLength; k++) {\r\n retView[k + 1] = tempView[k];\r\n }\r\n retView[0] = 0x00;\r\n }\r\n return retBuf;\r\n }\r\n bigInt *= Math.pow(2, 8);\r\n }\r\n return (new ArrayBuffer(0));\r\n}\r\nfunction isEqualBuffer(inputBuffer1, inputBuffer2) {\r\n if (inputBuffer1.byteLength !== inputBuffer2.byteLength) {\r\n return false;\r\n }\r\n const view1 = new Uint8Array(inputBuffer1);\r\n const view2 = new Uint8Array(inputBuffer2);\r\n for (let i = 0; i < view1.length; i++) {\r\n if (view1[i] !== view2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction padNumber(inputNumber, fullLength) {\r\n const str = inputNumber.toString(10);\r\n if (fullLength < str.length) {\r\n return \"\";\r\n }\r\n const dif = fullLength - str.length;\r\n const padding = new Array(dif);\r\n for (let i = 0; i < dif; i++) {\r\n padding[i] = \"0\";\r\n }\r\n const paddingString = padding.join(\"\");\r\n return paddingString.concat(str);\r\n}\r\nconst base64Template = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\nconst base64UrlTemplate = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=\";\r\nfunction toBase64(input, useUrlTemplate = false, skipPadding = false, skipLeadingZeros = false) {\r\n let i = 0;\r\n let flag1 = 0;\r\n let flag2 = 0;\r\n let output = \"\";\r\n const template = (useUrlTemplate) ? base64UrlTemplate : base64Template;\r\n if (skipLeadingZeros) {\r\n let nonZeroPosition = 0;\r\n for (let i = 0; i < input.length; i++) {\r\n if (input.charCodeAt(i) !== 0) {\r\n nonZeroPosition = i;\r\n break;\r\n }\r\n }\r\n input = input.slice(nonZeroPosition);\r\n }\r\n while (i < input.length) {\r\n const chr1 = input.charCodeAt(i++);\r\n if (i >= input.length) {\r\n flag1 = 1;\r\n }\r\n const chr2 = input.charCodeAt(i++);\r\n if (i >= input.length) {\r\n flag2 = 1;\r\n }\r\n const chr3 = input.charCodeAt(i++);\r\n const enc1 = chr1 >> 2;\r\n const enc2 = ((chr1 & 0x03) << 4) | (chr2 >> 4);\r\n let enc3 = ((chr2 & 0x0F) << 2) | (chr3 >> 6);\r\n let enc4 = chr3 & 0x3F;\r\n if (flag1 === 1) {\r\n enc3 = enc4 = 64;\r\n }\r\n else {\r\n if (flag2 === 1) {\r\n enc4 = 64;\r\n }\r\n }\r\n if (skipPadding) {\r\n if (enc3 === 64) {\r\n output += `${template.charAt(enc1)}${template.charAt(enc2)}`;\r\n }\r\n else {\r\n if (enc4 === 64) {\r\n output += `${template.charAt(enc1)}${template.charAt(enc2)}${template.charAt(enc3)}`;\r\n }\r\n else {\r\n output += `${template.charAt(enc1)}${template.charAt(enc2)}${template.charAt(enc3)}${template.charAt(enc4)}`;\r\n }\r\n }\r\n }\r\n else {\r\n output += `${template.charAt(enc1)}${template.charAt(enc2)}${template.charAt(enc3)}${template.charAt(enc4)}`;\r\n }\r\n }\r\n return output;\r\n}\r\nfunction fromBase64(input, useUrlTemplate = false, cutTailZeros = false) {\r\n const template = (useUrlTemplate) ? base64UrlTemplate : base64Template;\r\n function indexOf(toSearch) {\r\n for (let i = 0; i < 64; i++) {\r\n if (template.charAt(i) === toSearch)\r\n return i;\r\n }\r\n return 64;\r\n }\r\n function test(incoming) {\r\n return ((incoming === 64) ? 0x00 : incoming);\r\n }\r\n let i = 0;\r\n let output = \"\";\r\n while (i < input.length) {\r\n const enc1 = indexOf(input.charAt(i++));\r\n const enc2 = (i >= input.length) ? 0x00 : indexOf(input.charAt(i++));\r\n const enc3 = (i >= input.length) ? 0x00 : indexOf(input.charAt(i++));\r\n const enc4 = (i >= input.length) ? 0x00 : indexOf(input.charAt(i++));\r\n const chr1 = (test(enc1) << 2) | (test(enc2) >> 4);\r\n const chr2 = ((test(enc2) & 0x0F) << 4) | (test(enc3) >> 2);\r\n const chr3 = ((test(enc3) & 0x03) << 6) | test(enc4);\r\n output += String.fromCharCode(chr1);\r\n if (enc3 !== 64) {\r\n output += String.fromCharCode(chr2);\r\n }\r\n if (enc4 !== 64) {\r\n output += String.fromCharCode(chr3);\r\n }\r\n }\r\n if (cutTailZeros) {\r\n const outputLength = output.length;\r\n let nonZeroStart = (-1);\r\n for (let i = (outputLength - 1); i >= 0; i--) {\r\n if (output.charCodeAt(i) !== 0) {\r\n nonZeroStart = i;\r\n break;\r\n }\r\n }\r\n if (nonZeroStart !== (-1)) {\r\n output = output.slice(0, nonZeroStart + 1);\r\n }\r\n else {\r\n output = \"\";\r\n }\r\n }\r\n return output;\r\n}\r\nfunction arrayBufferToString(buffer) {\r\n let resultString = \"\";\r\n const view = new Uint8Array(buffer);\r\n for (const element of view) {\r\n resultString += String.fromCharCode(element);\r\n }\r\n return resultString;\r\n}\r\nfunction stringToArrayBuffer(str) {\r\n const stringLength = str.length;\r\n const resultBuffer = new ArrayBuffer(stringLength);\r\n const resultView = new Uint8Array(resultBuffer);\r\n for (let i = 0; i < stringLength; i++) {\r\n resultView[i] = str.charCodeAt(i);\r\n }\r\n return resultBuffer;\r\n}\r\nconst log2 = Math.log(2);\r\nfunction nearestPowerOf2(length) {\r\n const base = (Math.log(length) / log2);\r\n const floor = Math.floor(base);\r\n const round = Math.round(base);\r\n return ((floor === round) ? floor : round);\r\n}\r\nfunction clearProps(object, propsArray) {\r\n for (const prop of propsArray) {\r\n delete object[prop];\r\n }\r\n}\n\nexport { arrayBufferToString, bufferToHexCodes, checkBufferParams, clearProps, fromBase64, getParametersValue, getUTCDate, isEqualBuffer, nearestPowerOf2, padNumber, stringToArrayBuffer, toBase64, utilConcatBuf, utilConcatView, utilDecodeTC, utilEncodeTC, utilFromBase, utilToBase };\n","/*!\n * Copyright (c) 2014, GMO GlobalSign\n * Copyright (c) 2015-2022, Peculiar Ventures\n * All rights reserved.\n * \n * Author 2014-2019, Yury Strozhevsky\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * * Redistributions in binary form must reproduce the above copyright notice, this\n * list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * \n * * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\n * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n */\n\nimport * as pvtsutils from 'pvtsutils';\nimport * as pvutils from 'pvutils';\n\nfunction assertBigInt() {\r\n if (typeof BigInt === \"undefined\") {\r\n throw new Error(\"BigInt is not defined. Your environment doesn't implement BigInt.\");\r\n }\r\n}\r\nfunction concat(buffers) {\r\n let outputLength = 0;\r\n let prevLength = 0;\r\n for (let i = 0; i < buffers.length; i++) {\r\n const buffer = buffers[i];\r\n outputLength += buffer.byteLength;\r\n }\r\n const retView = new Uint8Array(outputLength);\r\n for (let i = 0; i < buffers.length; i++) {\r\n const buffer = buffers[i];\r\n retView.set(new Uint8Array(buffer), prevLength);\r\n prevLength += buffer.byteLength;\r\n }\r\n return retView.buffer;\r\n}\r\nfunction checkBufferParams(baseBlock, inputBuffer, inputOffset, inputLength) {\r\n if (!(inputBuffer instanceof Uint8Array)) {\r\n baseBlock.error = \"Wrong parameter: inputBuffer must be 'Uint8Array'\";\r\n return false;\r\n }\r\n if (!inputBuffer.byteLength) {\r\n baseBlock.error = \"Wrong parameter: inputBuffer has zero length\";\r\n return false;\r\n }\r\n if (inputOffset < 0) {\r\n baseBlock.error = \"Wrong parameter: inputOffset less than zero\";\r\n return false;\r\n }\r\n if (inputLength < 0) {\r\n baseBlock.error = \"Wrong parameter: inputLength less than zero\";\r\n return false;\r\n }\r\n if ((inputBuffer.byteLength - inputOffset - inputLength) < 0) {\r\n baseBlock.error = \"End of input reached before message was fully decoded (inconsistent offset and length values)\";\r\n return false;\r\n }\r\n return true;\r\n}\n\nclass ViewWriter {\r\n constructor() {\r\n this.items = [];\r\n }\r\n write(buf) {\r\n this.items.push(buf);\r\n }\r\n final() {\r\n return concat(this.items);\r\n }\r\n}\n\nconst powers2 = [new Uint8Array([1])];\r\nconst digitsString = \"0123456789\";\r\nconst NAME = \"name\";\r\nconst VALUE_HEX_VIEW = \"valueHexView\";\r\nconst IS_HEX_ONLY = \"isHexOnly\";\r\nconst ID_BLOCK = \"idBlock\";\r\nconst TAG_CLASS = \"tagClass\";\r\nconst TAG_NUMBER = \"tagNumber\";\r\nconst IS_CONSTRUCTED = \"isConstructed\";\r\nconst FROM_BER = \"fromBER\";\r\nconst TO_BER = \"toBER\";\r\nconst LOCAL = \"local\";\r\nconst EMPTY_STRING = \"\";\r\nconst EMPTY_BUFFER = new ArrayBuffer(0);\r\nconst EMPTY_VIEW = new Uint8Array(0);\r\nconst END_OF_CONTENT_NAME = \"EndOfContent\";\r\nconst OCTET_STRING_NAME = \"OCTET STRING\";\r\nconst BIT_STRING_NAME = \"BIT STRING\";\n\nfunction HexBlock(BaseClass) {\r\n var _a;\r\n return _a = class Some extends BaseClass {\r\n constructor(...args) {\r\n var _a;\r\n super(...args);\r\n const params = args[0] || {};\r\n this.isHexOnly = (_a = params.isHexOnly) !== null && _a !== void 0 ? _a : false;\r\n this.valueHexView = params.valueHex ? pvtsutils.BufferSourceConverter.toUint8Array(params.valueHex) : EMPTY_VIEW;\r\n }\r\n get valueHex() {\r\n return this.valueHexView.slice().buffer;\r\n }\r\n set valueHex(value) {\r\n this.valueHexView = new Uint8Array(value);\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const view = inputBuffer instanceof ArrayBuffer ? new Uint8Array(inputBuffer) : inputBuffer;\r\n if (!checkBufferParams(this, view, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n const endLength = inputOffset + inputLength;\r\n this.valueHexView = view.subarray(inputOffset, endLength);\r\n if (!this.valueHexView.length) {\r\n this.warnings.push(\"Zero buffer length\");\r\n return inputOffset;\r\n }\r\n this.blockLength = inputLength;\r\n return endLength;\r\n }\r\n toBER(sizeOnly = false) {\r\n if (!this.isHexOnly) {\r\n this.error = \"Flag 'isHexOnly' is not set, abort\";\r\n return EMPTY_BUFFER;\r\n }\r\n if (sizeOnly) {\r\n return new ArrayBuffer(this.valueHexView.byteLength);\r\n }\r\n return (this.valueHexView.byteLength === this.valueHexView.buffer.byteLength)\r\n ? this.valueHexView.buffer\r\n : this.valueHexView.slice().buffer;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n isHexOnly: this.isHexOnly,\r\n valueHex: pvtsutils.Convert.ToHex(this.valueHexView),\r\n };\r\n }\r\n },\r\n _a.NAME = \"hexBlock\",\r\n _a;\r\n}\n\nclass LocalBaseBlock {\r\n constructor({ blockLength = 0, error = EMPTY_STRING, warnings = [], valueBeforeDecode = EMPTY_VIEW, } = {}) {\r\n this.blockLength = blockLength;\r\n this.error = error;\r\n this.warnings = warnings;\r\n this.valueBeforeDecodeView = pvtsutils.BufferSourceConverter.toUint8Array(valueBeforeDecode);\r\n }\r\n static blockName() {\r\n return this.NAME;\r\n }\r\n get valueBeforeDecode() {\r\n return this.valueBeforeDecodeView.slice().buffer;\r\n }\r\n set valueBeforeDecode(value) {\r\n this.valueBeforeDecodeView = new Uint8Array(value);\r\n }\r\n toJSON() {\r\n return {\r\n blockName: this.constructor.NAME,\r\n blockLength: this.blockLength,\r\n error: this.error,\r\n warnings: this.warnings,\r\n valueBeforeDecode: pvtsutils.Convert.ToHex(this.valueBeforeDecodeView),\r\n };\r\n }\r\n}\r\nLocalBaseBlock.NAME = \"baseBlock\";\n\nclass ValueBlock extends LocalBaseBlock {\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n throw TypeError(\"User need to make a specific function in a class which extends 'ValueBlock'\");\r\n }\r\n toBER(sizeOnly, writer) {\r\n throw TypeError(\"User need to make a specific function in a class which extends 'ValueBlock'\");\r\n }\r\n}\r\nValueBlock.NAME = \"valueBlock\";\n\nclass LocalIdentificationBlock extends HexBlock(LocalBaseBlock) {\r\n constructor({ idBlock = {}, } = {}) {\r\n var _a, _b, _c, _d;\r\n super();\r\n if (idBlock) {\r\n this.isHexOnly = (_a = idBlock.isHexOnly) !== null && _a !== void 0 ? _a : false;\r\n this.valueHexView = idBlock.valueHex ? pvtsutils.BufferSourceConverter.toUint8Array(idBlock.valueHex) : EMPTY_VIEW;\r\n this.tagClass = (_b = idBlock.tagClass) !== null && _b !== void 0 ? _b : -1;\r\n this.tagNumber = (_c = idBlock.tagNumber) !== null && _c !== void 0 ? _c : -1;\r\n this.isConstructed = (_d = idBlock.isConstructed) !== null && _d !== void 0 ? _d : false;\r\n }\r\n else {\r\n this.tagClass = -1;\r\n this.tagNumber = -1;\r\n this.isConstructed = false;\r\n }\r\n }\r\n toBER(sizeOnly = false) {\r\n let firstOctet = 0;\r\n switch (this.tagClass) {\r\n case 1:\r\n firstOctet |= 0x00;\r\n break;\r\n case 2:\r\n firstOctet |= 0x40;\r\n break;\r\n case 3:\r\n firstOctet |= 0x80;\r\n break;\r\n case 4:\r\n firstOctet |= 0xC0;\r\n break;\r\n default:\r\n this.error = \"Unknown tag class\";\r\n return EMPTY_BUFFER;\r\n }\r\n if (this.isConstructed)\r\n firstOctet |= 0x20;\r\n if (this.tagNumber < 31 && !this.isHexOnly) {\r\n const retView = new Uint8Array(1);\r\n if (!sizeOnly) {\r\n let number = this.tagNumber;\r\n number &= 0x1F;\r\n firstOctet |= number;\r\n retView[0] = firstOctet;\r\n }\r\n return retView.buffer;\r\n }\r\n if (!this.isHexOnly) {\r\n const encodedBuf = pvutils.utilToBase(this.tagNumber, 7);\r\n const encodedView = new Uint8Array(encodedBuf);\r\n const size = encodedBuf.byteLength;\r\n const retView = new Uint8Array(size + 1);\r\n retView[0] = (firstOctet | 0x1F);\r\n if (!sizeOnly) {\r\n for (let i = 0; i < (size - 1); i++)\r\n retView[i + 1] = encodedView[i] | 0x80;\r\n retView[size] = encodedView[size - 1];\r\n }\r\n return retView.buffer;\r\n }\r\n const retView = new Uint8Array(this.valueHexView.byteLength + 1);\r\n retView[0] = (firstOctet | 0x1F);\r\n if (!sizeOnly) {\r\n const curView = this.valueHexView;\r\n for (let i = 0; i < (curView.length - 1); i++)\r\n retView[i + 1] = curView[i] | 0x80;\r\n retView[this.valueHexView.byteLength] = curView[curView.length - 1];\r\n }\r\n return retView.buffer;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const inputView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, inputView, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength);\r\n if (intBuffer.length === 0) {\r\n this.error = \"Zero buffer length\";\r\n return -1;\r\n }\r\n const tagClassMask = intBuffer[0] & 0xC0;\r\n switch (tagClassMask) {\r\n case 0x00:\r\n this.tagClass = (1);\r\n break;\r\n case 0x40:\r\n this.tagClass = (2);\r\n break;\r\n case 0x80:\r\n this.tagClass = (3);\r\n break;\r\n case 0xC0:\r\n this.tagClass = (4);\r\n break;\r\n default:\r\n this.error = \"Unknown tag class\";\r\n return -1;\r\n }\r\n this.isConstructed = (intBuffer[0] & 0x20) === 0x20;\r\n this.isHexOnly = false;\r\n const tagNumberMask = intBuffer[0] & 0x1F;\r\n if (tagNumberMask !== 0x1F) {\r\n this.tagNumber = (tagNumberMask);\r\n this.blockLength = 1;\r\n }\r\n else {\r\n let count = 1;\r\n let intTagNumberBuffer = this.valueHexView = new Uint8Array(255);\r\n let tagNumberBufferMaxLength = 255;\r\n while (intBuffer[count] & 0x80) {\r\n intTagNumberBuffer[count - 1] = intBuffer[count] & 0x7F;\r\n count++;\r\n if (count >= intBuffer.length) {\r\n this.error = \"End of input reached before message was fully decoded\";\r\n return -1;\r\n }\r\n if (count === tagNumberBufferMaxLength) {\r\n tagNumberBufferMaxLength += 255;\r\n const tempBufferView = new Uint8Array(tagNumberBufferMaxLength);\r\n for (let i = 0; i < intTagNumberBuffer.length; i++)\r\n tempBufferView[i] = intTagNumberBuffer[i];\r\n intTagNumberBuffer = this.valueHexView = new Uint8Array(tagNumberBufferMaxLength);\r\n }\r\n }\r\n this.blockLength = (count + 1);\r\n intTagNumberBuffer[count - 1] = intBuffer[count] & 0x7F;\r\n const tempBufferView = new Uint8Array(count);\r\n for (let i = 0; i < count; i++)\r\n tempBufferView[i] = intTagNumberBuffer[i];\r\n intTagNumberBuffer = this.valueHexView = new Uint8Array(count);\r\n intTagNumberBuffer.set(tempBufferView);\r\n if (this.blockLength <= 9)\r\n this.tagNumber = pvutils.utilFromBase(intTagNumberBuffer, 7);\r\n else {\r\n this.isHexOnly = true;\r\n this.warnings.push(\"Tag too long, represented as hex-coded\");\r\n }\r\n }\r\n if (((this.tagClass === 1)) &&\r\n (this.isConstructed)) {\r\n switch (this.tagNumber) {\r\n case 1:\r\n case 2:\r\n case 5:\r\n case 6:\r\n case 9:\r\n case 13:\r\n case 14:\r\n case 23:\r\n case 24:\r\n case 31:\r\n case 32:\r\n case 33:\r\n case 34:\r\n this.error = \"Constructed encoding used for primitive type\";\r\n return -1;\r\n }\r\n }\r\n return (inputOffset + this.blockLength);\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n tagClass: this.tagClass,\r\n tagNumber: this.tagNumber,\r\n isConstructed: this.isConstructed,\r\n };\r\n }\r\n}\r\nLocalIdentificationBlock.NAME = \"identificationBlock\";\n\nclass LocalLengthBlock extends LocalBaseBlock {\r\n constructor({ lenBlock = {}, } = {}) {\r\n var _a, _b, _c;\r\n super();\r\n this.isIndefiniteForm = (_a = lenBlock.isIndefiniteForm) !== null && _a !== void 0 ? _a : false;\r\n this.longFormUsed = (_b = lenBlock.longFormUsed) !== null && _b !== void 0 ? _b : false;\r\n this.length = (_c = lenBlock.length) !== null && _c !== void 0 ? _c : 0;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const view = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, view, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n const intBuffer = view.subarray(inputOffset, inputOffset + inputLength);\r\n if (intBuffer.length === 0) {\r\n this.error = \"Zero buffer length\";\r\n return -1;\r\n }\r\n if (intBuffer[0] === 0xFF) {\r\n this.error = \"Length block 0xFF is reserved by standard\";\r\n return -1;\r\n }\r\n this.isIndefiniteForm = intBuffer[0] === 0x80;\r\n if (this.isIndefiniteForm) {\r\n this.blockLength = 1;\r\n return (inputOffset + this.blockLength);\r\n }\r\n this.longFormUsed = !!(intBuffer[0] & 0x80);\r\n if (this.longFormUsed === false) {\r\n this.length = (intBuffer[0]);\r\n this.blockLength = 1;\r\n return (inputOffset + this.blockLength);\r\n }\r\n const count = intBuffer[0] & 0x7F;\r\n if (count > 8) {\r\n this.error = \"Too big integer\";\r\n return -1;\r\n }\r\n if ((count + 1) > intBuffer.length) {\r\n this.error = \"End of input reached before message was fully decoded\";\r\n return -1;\r\n }\r\n const lenOffset = inputOffset + 1;\r\n const lengthBufferView = view.subarray(lenOffset, lenOffset + count);\r\n if (lengthBufferView[count - 1] === 0x00)\r\n this.warnings.push(\"Needlessly long encoded length\");\r\n this.length = pvutils.utilFromBase(lengthBufferView, 8);\r\n if (this.longFormUsed && (this.length <= 127))\r\n this.warnings.push(\"Unnecessary usage of long length form\");\r\n this.blockLength = count + 1;\r\n return (inputOffset + this.blockLength);\r\n }\r\n toBER(sizeOnly = false) {\r\n let retBuf;\r\n let retView;\r\n if (this.length > 127)\r\n this.longFormUsed = true;\r\n if (this.isIndefiniteForm) {\r\n retBuf = new ArrayBuffer(1);\r\n if (sizeOnly === false) {\r\n retView = new Uint8Array(retBuf);\r\n retView[0] = 0x80;\r\n }\r\n return retBuf;\r\n }\r\n if (this.longFormUsed) {\r\n const encodedBuf = pvutils.utilToBase(this.length, 8);\r\n if (encodedBuf.byteLength > 127) {\r\n this.error = \"Too big length\";\r\n return (EMPTY_BUFFER);\r\n }\r\n retBuf = new ArrayBuffer(encodedBuf.byteLength + 1);\r\n if (sizeOnly)\r\n return retBuf;\r\n const encodedView = new Uint8Array(encodedBuf);\r\n retView = new Uint8Array(retBuf);\r\n retView[0] = encodedBuf.byteLength | 0x80;\r\n for (let i = 0; i < encodedBuf.byteLength; i++)\r\n retView[i + 1] = encodedView[i];\r\n return retBuf;\r\n }\r\n retBuf = new ArrayBuffer(1);\r\n if (sizeOnly === false) {\r\n retView = new Uint8Array(retBuf);\r\n retView[0] = this.length;\r\n }\r\n return retBuf;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n isIndefiniteForm: this.isIndefiniteForm,\r\n longFormUsed: this.longFormUsed,\r\n length: this.length,\r\n };\r\n }\r\n}\r\nLocalLengthBlock.NAME = \"lengthBlock\";\n\nconst typeStore = {};\n\nclass BaseBlock extends LocalBaseBlock {\r\n constructor({ name = EMPTY_STRING, optional = false, primitiveSchema, ...parameters } = {}, valueBlockType) {\r\n super(parameters);\r\n this.name = name;\r\n this.optional = optional;\r\n if (primitiveSchema) {\r\n this.primitiveSchema = primitiveSchema;\r\n }\r\n this.idBlock = new LocalIdentificationBlock(parameters);\r\n this.lenBlock = new LocalLengthBlock(parameters);\r\n this.valueBlock = valueBlockType ? new valueBlockType(parameters) : new ValueBlock(parameters);\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const resultOffset = this.valueBlock.fromBER(inputBuffer, inputOffset, (this.lenBlock.isIndefiniteForm) ? inputLength : this.lenBlock.length);\r\n if (resultOffset === -1) {\r\n this.error = this.valueBlock.error;\r\n return resultOffset;\r\n }\r\n if (!this.idBlock.error.length)\r\n this.blockLength += this.idBlock.blockLength;\r\n if (!this.lenBlock.error.length)\r\n this.blockLength += this.lenBlock.blockLength;\r\n if (!this.valueBlock.error.length)\r\n this.blockLength += this.valueBlock.blockLength;\r\n return resultOffset;\r\n }\r\n toBER(sizeOnly, writer) {\r\n const _writer = writer || new ViewWriter();\r\n if (!writer) {\r\n prepareIndefiniteForm(this);\r\n }\r\n const idBlockBuf = this.idBlock.toBER(sizeOnly);\r\n _writer.write(idBlockBuf);\r\n if (this.lenBlock.isIndefiniteForm) {\r\n _writer.write(new Uint8Array([0x80]).buffer);\r\n this.valueBlock.toBER(sizeOnly, _writer);\r\n _writer.write(new ArrayBuffer(2));\r\n }\r\n else {\r\n const valueBlockBuf = this.valueBlock.toBER(sizeOnly);\r\n this.lenBlock.length = valueBlockBuf.byteLength;\r\n const lenBlockBuf = this.lenBlock.toBER(sizeOnly);\r\n _writer.write(lenBlockBuf);\r\n _writer.write(valueBlockBuf);\r\n }\r\n if (!writer) {\r\n return _writer.final();\r\n }\r\n return EMPTY_BUFFER;\r\n }\r\n toJSON() {\r\n const object = {\r\n ...super.toJSON(),\r\n idBlock: this.idBlock.toJSON(),\r\n lenBlock: this.lenBlock.toJSON(),\r\n valueBlock: this.valueBlock.toJSON(),\r\n name: this.name,\r\n optional: this.optional,\r\n };\r\n if (this.primitiveSchema)\r\n object.primitiveSchema = this.primitiveSchema.toJSON();\r\n return object;\r\n }\r\n toString(encoding = \"ascii\") {\r\n if (encoding === \"ascii\") {\r\n return this.onAsciiEncoding();\r\n }\r\n return pvtsutils.Convert.ToHex(this.toBER());\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${pvtsutils.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`;\r\n }\r\n isEqual(other) {\r\n if (this === other) {\r\n return true;\r\n }\r\n if (!(other instanceof this.constructor)) {\r\n return false;\r\n }\r\n const thisRaw = this.toBER();\r\n const otherRaw = other.toBER();\r\n return pvutils.isEqualBuffer(thisRaw, otherRaw);\r\n }\r\n}\r\nBaseBlock.NAME = \"BaseBlock\";\r\nfunction prepareIndefiniteForm(baseBlock) {\r\n if (baseBlock instanceof typeStore.Constructed) {\r\n for (const value of baseBlock.valueBlock.value) {\r\n if (prepareIndefiniteForm(value)) {\r\n baseBlock.lenBlock.isIndefiniteForm = true;\r\n }\r\n }\r\n }\r\n return !!baseBlock.lenBlock.isIndefiniteForm;\r\n}\n\nclass BaseStringBlock extends BaseBlock {\r\n constructor({ value = EMPTY_STRING, ...parameters } = {}, stringValueBlockType) {\r\n super(parameters, stringValueBlockType);\r\n if (value) {\r\n this.fromString(value);\r\n }\r\n }\r\n getValue() {\r\n return this.valueBlock.value;\r\n }\r\n setValue(value) {\r\n this.valueBlock.value = value;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const resultOffset = this.valueBlock.fromBER(inputBuffer, inputOffset, (this.lenBlock.isIndefiniteForm) ? inputLength : this.lenBlock.length);\r\n if (resultOffset === -1) {\r\n this.error = this.valueBlock.error;\r\n return resultOffset;\r\n }\r\n this.fromBuffer(this.valueBlock.valueHexView);\r\n if (!this.idBlock.error.length)\r\n this.blockLength += this.idBlock.blockLength;\r\n if (!this.lenBlock.error.length)\r\n this.blockLength += this.lenBlock.blockLength;\r\n if (!this.valueBlock.error.length)\r\n this.blockLength += this.valueBlock.blockLength;\r\n return resultOffset;\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : '${this.valueBlock.value}'`;\r\n }\r\n}\r\nBaseStringBlock.NAME = \"BaseStringBlock\";\n\nclass LocalPrimitiveValueBlock extends HexBlock(ValueBlock) {\r\n constructor({ isHexOnly = true, ...parameters } = {}) {\r\n super(parameters);\r\n this.isHexOnly = isHexOnly;\r\n }\r\n}\r\nLocalPrimitiveValueBlock.NAME = \"PrimitiveValueBlock\";\n\nvar _a$w;\r\nclass Primitive extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalPrimitiveValueBlock);\r\n this.idBlock.isConstructed = false;\r\n }\r\n}\r\n_a$w = Primitive;\r\n(() => {\r\n typeStore.Primitive = _a$w;\r\n})();\r\nPrimitive.NAME = \"PRIMITIVE\";\n\nfunction localChangeType(inputObject, newType) {\r\n if (inputObject instanceof newType) {\r\n return inputObject;\r\n }\r\n const newObject = new newType();\r\n newObject.idBlock = inputObject.idBlock;\r\n newObject.lenBlock = inputObject.lenBlock;\r\n newObject.warnings = inputObject.warnings;\r\n newObject.valueBeforeDecodeView = inputObject.valueBeforeDecodeView;\r\n return newObject;\r\n}\r\nfunction localFromBER(inputBuffer, inputOffset = 0, inputLength = inputBuffer.length) {\r\n const incomingOffset = inputOffset;\r\n let returnObject = new BaseBlock({}, ValueBlock);\r\n const baseBlock = new LocalBaseBlock();\r\n if (!checkBufferParams(baseBlock, inputBuffer, inputOffset, inputLength)) {\r\n returnObject.error = baseBlock.error;\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n const intBuffer = inputBuffer.subarray(inputOffset, inputOffset + inputLength);\r\n if (!intBuffer.length) {\r\n returnObject.error = \"Zero buffer length\";\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n let resultOffset = returnObject.idBlock.fromBER(inputBuffer, inputOffset, inputLength);\r\n if (returnObject.idBlock.warnings.length) {\r\n returnObject.warnings.concat(returnObject.idBlock.warnings);\r\n }\r\n if (resultOffset === -1) {\r\n returnObject.error = returnObject.idBlock.error;\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n inputOffset = resultOffset;\r\n inputLength -= returnObject.idBlock.blockLength;\r\n resultOffset = returnObject.lenBlock.fromBER(inputBuffer, inputOffset, inputLength);\r\n if (returnObject.lenBlock.warnings.length) {\r\n returnObject.warnings.concat(returnObject.lenBlock.warnings);\r\n }\r\n if (resultOffset === -1) {\r\n returnObject.error = returnObject.lenBlock.error;\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n inputOffset = resultOffset;\r\n inputLength -= returnObject.lenBlock.blockLength;\r\n if (!returnObject.idBlock.isConstructed &&\r\n returnObject.lenBlock.isIndefiniteForm) {\r\n returnObject.error = \"Indefinite length form used for primitive encoding form\";\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n let newASN1Type = BaseBlock;\r\n switch (returnObject.idBlock.tagClass) {\r\n case 1:\r\n if ((returnObject.idBlock.tagNumber >= 37) &&\r\n (returnObject.idBlock.isHexOnly === false)) {\r\n returnObject.error = \"UNIVERSAL 37 and upper tags are reserved by ASN.1 standard\";\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n switch (returnObject.idBlock.tagNumber) {\r\n case 0:\r\n if ((returnObject.idBlock.isConstructed) &&\r\n (returnObject.lenBlock.length > 0)) {\r\n returnObject.error = \"Type [UNIVERSAL 0] is reserved\";\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n }\r\n newASN1Type = typeStore.EndOfContent;\r\n break;\r\n case 1:\r\n newASN1Type = typeStore.Boolean;\r\n break;\r\n case 2:\r\n newASN1Type = typeStore.Integer;\r\n break;\r\n case 3:\r\n newASN1Type = typeStore.BitString;\r\n break;\r\n case 4:\r\n newASN1Type = typeStore.OctetString;\r\n break;\r\n case 5:\r\n newASN1Type = typeStore.Null;\r\n break;\r\n case 6:\r\n newASN1Type = typeStore.ObjectIdentifier;\r\n break;\r\n case 10:\r\n newASN1Type = typeStore.Enumerated;\r\n break;\r\n case 12:\r\n newASN1Type = typeStore.Utf8String;\r\n break;\r\n case 13:\r\n newASN1Type = typeStore.RelativeObjectIdentifier;\r\n break;\r\n case 14:\r\n newASN1Type = typeStore.TIME;\r\n break;\r\n case 15:\r\n returnObject.error = \"[UNIVERSAL 15] is reserved by ASN.1 standard\";\r\n return {\r\n offset: -1,\r\n result: returnObject\r\n };\r\n case 16:\r\n newASN1Type = typeStore.Sequence;\r\n break;\r\n case 17:\r\n newASN1Type = typeStore.Set;\r\n break;\r\n case 18:\r\n newASN1Type = typeStore.NumericString;\r\n break;\r\n case 19:\r\n newASN1Type = typeStore.PrintableString;\r\n break;\r\n case 20:\r\n newASN1Type = typeStore.TeletexString;\r\n break;\r\n case 21:\r\n newASN1Type = typeStore.VideotexString;\r\n break;\r\n case 22:\r\n newASN1Type = typeStore.IA5String;\r\n break;\r\n case 23:\r\n newASN1Type = typeStore.UTCTime;\r\n break;\r\n case 24:\r\n newASN1Type = typeStore.GeneralizedTime;\r\n break;\r\n case 25:\r\n newASN1Type = typeStore.GraphicString;\r\n break;\r\n case 26:\r\n newASN1Type = typeStore.VisibleString;\r\n break;\r\n case 27:\r\n newASN1Type = typeStore.GeneralString;\r\n break;\r\n case 28:\r\n newASN1Type = typeStore.UniversalString;\r\n break;\r\n case 29:\r\n newASN1Type = typeStore.CharacterString;\r\n break;\r\n case 30:\r\n newASN1Type = typeStore.BmpString;\r\n break;\r\n case 31:\r\n newASN1Type = typeStore.DATE;\r\n break;\r\n case 32:\r\n newASN1Type = typeStore.TimeOfDay;\r\n break;\r\n case 33:\r\n newASN1Type = typeStore.DateTime;\r\n break;\r\n case 34:\r\n newASN1Type = typeStore.Duration;\r\n break;\r\n default: {\r\n const newObject = returnObject.idBlock.isConstructed\r\n ? new typeStore.Constructed()\r\n : new typeStore.Primitive();\r\n newObject.idBlock = returnObject.idBlock;\r\n newObject.lenBlock = returnObject.lenBlock;\r\n newObject.warnings = returnObject.warnings;\r\n returnObject = newObject;\r\n }\r\n }\r\n break;\r\n case 2:\r\n case 3:\r\n case 4:\r\n default: {\r\n newASN1Type = returnObject.idBlock.isConstructed\r\n ? typeStore.Constructed\r\n : typeStore.Primitive;\r\n }\r\n }\r\n returnObject = localChangeType(returnObject, newASN1Type);\r\n resultOffset = returnObject.fromBER(inputBuffer, inputOffset, returnObject.lenBlock.isIndefiniteForm ? inputLength : returnObject.lenBlock.length);\r\n returnObject.valueBeforeDecodeView = inputBuffer.subarray(incomingOffset, incomingOffset + returnObject.blockLength);\r\n return {\r\n offset: resultOffset,\r\n result: returnObject\r\n };\r\n}\r\nfunction fromBER(inputBuffer) {\r\n if (!inputBuffer.byteLength) {\r\n const result = new BaseBlock({}, ValueBlock);\r\n result.error = \"Input buffer has zero length\";\r\n return {\r\n offset: -1,\r\n result\r\n };\r\n }\r\n return localFromBER(pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer).slice(), 0, inputBuffer.byteLength);\r\n}\n\nfunction checkLen(indefiniteLength, length) {\r\n if (indefiniteLength) {\r\n return 1;\r\n }\r\n return length;\r\n}\r\nclass LocalConstructedValueBlock extends ValueBlock {\r\n constructor({ value = [], isIndefiniteForm = false, ...parameters } = {}) {\r\n super(parameters);\r\n this.value = value;\r\n this.isIndefiniteForm = isIndefiniteForm;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const view = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, view, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n this.valueBeforeDecodeView = view.subarray(inputOffset, inputOffset + inputLength);\r\n if (this.valueBeforeDecodeView.length === 0) {\r\n this.warnings.push(\"Zero buffer length\");\r\n return inputOffset;\r\n }\r\n let currentOffset = inputOffset;\r\n while (checkLen(this.isIndefiniteForm, inputLength) > 0) {\r\n const returnObject = localFromBER(view, currentOffset, inputLength);\r\n if (returnObject.offset === -1) {\r\n this.error = returnObject.result.error;\r\n this.warnings.concat(returnObject.result.warnings);\r\n return -1;\r\n }\r\n currentOffset = returnObject.offset;\r\n this.blockLength += returnObject.result.blockLength;\r\n inputLength -= returnObject.result.blockLength;\r\n this.value.push(returnObject.result);\r\n if (this.isIndefiniteForm && returnObject.result.constructor.NAME === END_OF_CONTENT_NAME) {\r\n break;\r\n }\r\n }\r\n if (this.isIndefiniteForm) {\r\n if (this.value[this.value.length - 1].constructor.NAME === END_OF_CONTENT_NAME) {\r\n this.value.pop();\r\n }\r\n else {\r\n this.warnings.push(\"No EndOfContent block encoded\");\r\n }\r\n }\r\n return currentOffset;\r\n }\r\n toBER(sizeOnly, writer) {\r\n const _writer = writer || new ViewWriter();\r\n for (let i = 0; i < this.value.length; i++) {\r\n this.value[i].toBER(sizeOnly, _writer);\r\n }\r\n if (!writer) {\r\n return _writer.final();\r\n }\r\n return EMPTY_BUFFER;\r\n }\r\n toJSON() {\r\n const object = {\r\n ...super.toJSON(),\r\n isIndefiniteForm: this.isIndefiniteForm,\r\n value: [],\r\n };\r\n for (const value of this.value) {\r\n object.value.push(value.toJSON());\r\n }\r\n return object;\r\n }\r\n}\r\nLocalConstructedValueBlock.NAME = \"ConstructedValueBlock\";\n\nvar _a$v;\r\nclass Constructed extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalConstructedValueBlock);\r\n this.idBlock.isConstructed = true;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm;\r\n const resultOffset = this.valueBlock.fromBER(inputBuffer, inputOffset, (this.lenBlock.isIndefiniteForm) ? inputLength : this.lenBlock.length);\r\n if (resultOffset === -1) {\r\n this.error = this.valueBlock.error;\r\n return resultOffset;\r\n }\r\n if (!this.idBlock.error.length)\r\n this.blockLength += this.idBlock.blockLength;\r\n if (!this.lenBlock.error.length)\r\n this.blockLength += this.lenBlock.blockLength;\r\n if (!this.valueBlock.error.length)\r\n this.blockLength += this.valueBlock.blockLength;\r\n return resultOffset;\r\n }\r\n onAsciiEncoding() {\r\n const values = [];\r\n for (const value of this.valueBlock.value) {\r\n values.push(value.toString(\"ascii\").split(\"\\n\").map(o => ` ${o}`).join(\"\\n\"));\r\n }\r\n const blockName = this.idBlock.tagClass === 3\r\n ? `[${this.idBlock.tagNumber}]`\r\n : this.constructor.NAME;\r\n return values.length\r\n ? `${blockName} :\\n${values.join(\"\\n\")}`\r\n : `${blockName} :`;\r\n }\r\n}\r\n_a$v = Constructed;\r\n(() => {\r\n typeStore.Constructed = _a$v;\r\n})();\r\nConstructed.NAME = \"CONSTRUCTED\";\n\nclass LocalEndOfContentValueBlock extends ValueBlock {\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n return inputOffset;\r\n }\r\n toBER(sizeOnly) {\r\n return EMPTY_BUFFER;\r\n }\r\n}\r\nLocalEndOfContentValueBlock.override = \"EndOfContentValueBlock\";\n\nvar _a$u;\r\nclass EndOfContent extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalEndOfContentValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 0;\r\n }\r\n}\r\n_a$u = EndOfContent;\r\n(() => {\r\n typeStore.EndOfContent = _a$u;\r\n})();\r\nEndOfContent.NAME = END_OF_CONTENT_NAME;\n\nvar _a$t;\r\nclass Null extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, ValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 5;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n if (this.lenBlock.length > 0)\r\n this.warnings.push(\"Non-zero length of value block for Null type\");\r\n if (!this.idBlock.error.length)\r\n this.blockLength += this.idBlock.blockLength;\r\n if (!this.lenBlock.error.length)\r\n this.blockLength += this.lenBlock.blockLength;\r\n this.blockLength += inputLength;\r\n if ((inputOffset + inputLength) > inputBuffer.byteLength) {\r\n this.error = \"End of input reached before message was fully decoded (inconsistent offset and length values)\";\r\n return -1;\r\n }\r\n return (inputOffset + inputLength);\r\n }\r\n toBER(sizeOnly, writer) {\r\n const retBuf = new ArrayBuffer(2);\r\n if (!sizeOnly) {\r\n const retView = new Uint8Array(retBuf);\r\n retView[0] = 0x05;\r\n retView[1] = 0x00;\r\n }\r\n if (writer) {\r\n writer.write(retBuf);\r\n }\r\n return retBuf;\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME}`;\r\n }\r\n}\r\n_a$t = Null;\r\n(() => {\r\n typeStore.Null = _a$t;\r\n})();\r\nNull.NAME = \"NULL\";\n\nclass LocalBooleanValueBlock extends HexBlock(ValueBlock) {\r\n constructor({ value, ...parameters } = {}) {\r\n super(parameters);\r\n if (parameters.valueHex) {\r\n this.valueHexView = pvtsutils.BufferSourceConverter.toUint8Array(parameters.valueHex);\r\n }\r\n else {\r\n this.valueHexView = new Uint8Array(1);\r\n }\r\n if (value) {\r\n this.value = value;\r\n }\r\n }\r\n get value() {\r\n for (const octet of this.valueHexView) {\r\n if (octet > 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n set value(value) {\r\n this.valueHexView[0] = value ? 0xFF : 0x00;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const inputView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, inputView, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n this.valueHexView = inputView.subarray(inputOffset, inputOffset + inputLength);\r\n if (inputLength > 1)\r\n this.warnings.push(\"Boolean value encoded in more then 1 octet\");\r\n this.isHexOnly = true;\r\n pvutils.utilDecodeTC.call(this);\r\n this.blockLength = inputLength;\r\n return (inputOffset + inputLength);\r\n }\r\n toBER() {\r\n return this.valueHexView.slice();\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n value: this.value,\r\n };\r\n }\r\n}\r\nLocalBooleanValueBlock.NAME = \"BooleanValueBlock\";\n\nvar _a$s;\r\nclass Boolean extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalBooleanValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 1;\r\n }\r\n getValue() {\r\n return this.valueBlock.value;\r\n }\r\n setValue(value) {\r\n this.valueBlock.value = value;\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${this.getValue}`;\r\n }\r\n}\r\n_a$s = Boolean;\r\n(() => {\r\n typeStore.Boolean = _a$s;\r\n})();\r\nBoolean.NAME = \"BOOLEAN\";\n\nclass LocalOctetStringValueBlock extends HexBlock(LocalConstructedValueBlock) {\r\n constructor({ isConstructed = false, ...parameters } = {}) {\r\n super(parameters);\r\n this.isConstructed = isConstructed;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n let resultOffset = 0;\r\n if (this.isConstructed) {\r\n this.isHexOnly = false;\r\n resultOffset = LocalConstructedValueBlock.prototype.fromBER.call(this, inputBuffer, inputOffset, inputLength);\r\n if (resultOffset === -1)\r\n return resultOffset;\r\n for (let i = 0; i < this.value.length; i++) {\r\n const currentBlockName = this.value[i].constructor.NAME;\r\n if (currentBlockName === END_OF_CONTENT_NAME) {\r\n if (this.isIndefiniteForm)\r\n break;\r\n else {\r\n this.error = \"EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only\";\r\n return -1;\r\n }\r\n }\r\n if (currentBlockName !== OCTET_STRING_NAME) {\r\n this.error = \"OCTET STRING may consists of OCTET STRINGs only\";\r\n return -1;\r\n }\r\n }\r\n }\r\n else {\r\n this.isHexOnly = true;\r\n resultOffset = super.fromBER(inputBuffer, inputOffset, inputLength);\r\n this.blockLength = inputLength;\r\n }\r\n return resultOffset;\r\n }\r\n toBER(sizeOnly, writer) {\r\n if (this.isConstructed)\r\n return LocalConstructedValueBlock.prototype.toBER.call(this, sizeOnly, writer);\r\n return sizeOnly\r\n ? new ArrayBuffer(this.valueHexView.byteLength)\r\n : this.valueHexView.slice().buffer;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n isConstructed: this.isConstructed,\r\n };\r\n }\r\n}\r\nLocalOctetStringValueBlock.NAME = \"OctetStringValueBlock\";\n\nvar _a$r;\r\nclass OctetString extends BaseBlock {\r\n constructor({ idBlock = {}, lenBlock = {}, ...parameters } = {}) {\r\n var _b, _c;\r\n (_b = parameters.isConstructed) !== null && _b !== void 0 ? _b : (parameters.isConstructed = !!((_c = parameters.value) === null || _c === void 0 ? void 0 : _c.length));\r\n super({\r\n idBlock: {\r\n isConstructed: parameters.isConstructed,\r\n ...idBlock,\r\n },\r\n lenBlock: {\r\n ...lenBlock,\r\n isIndefiniteForm: !!parameters.isIndefiniteForm,\r\n },\r\n ...parameters,\r\n }, LocalOctetStringValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 4;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n this.valueBlock.isConstructed = this.idBlock.isConstructed;\r\n this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm;\r\n if (inputLength === 0) {\r\n if (this.idBlock.error.length === 0)\r\n this.blockLength += this.idBlock.blockLength;\r\n if (this.lenBlock.error.length === 0)\r\n this.blockLength += this.lenBlock.blockLength;\r\n return inputOffset;\r\n }\r\n if (!this.valueBlock.isConstructed) {\r\n const view = inputBuffer instanceof ArrayBuffer ? new Uint8Array(inputBuffer) : inputBuffer;\r\n const buf = view.subarray(inputOffset, inputOffset + inputLength);\r\n try {\r\n if (buf.byteLength) {\r\n const asn = localFromBER(buf, 0, buf.byteLength);\r\n if (asn.offset !== -1 && asn.offset === inputLength) {\r\n this.valueBlock.value = [asn.result];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return super.fromBER(inputBuffer, inputOffset, inputLength);\r\n }\r\n onAsciiEncoding() {\r\n if (this.valueBlock.isConstructed || (this.valueBlock.value && this.valueBlock.value.length)) {\r\n return Constructed.prototype.onAsciiEncoding.call(this);\r\n }\r\n return `${this.constructor.NAME} : ${pvtsutils.Convert.ToHex(this.valueBlock.valueHexView)}`;\r\n }\r\n getValue() {\r\n if (!this.idBlock.isConstructed) {\r\n return this.valueBlock.valueHexView.slice().buffer;\r\n }\r\n const array = [];\r\n for (const content of this.valueBlock.value) {\r\n if (content instanceof OctetString) {\r\n array.push(content.valueBlock.valueHexView);\r\n }\r\n }\r\n return pvtsutils.BufferSourceConverter.concat(array);\r\n }\r\n}\r\n_a$r = OctetString;\r\n(() => {\r\n typeStore.OctetString = _a$r;\r\n})();\r\nOctetString.NAME = OCTET_STRING_NAME;\n\nclass LocalBitStringValueBlock extends HexBlock(LocalConstructedValueBlock) {\r\n constructor({ unusedBits = 0, isConstructed = false, ...parameters } = {}) {\r\n super(parameters);\r\n this.unusedBits = unusedBits;\r\n this.isConstructed = isConstructed;\r\n this.blockLength = this.valueHexView.byteLength;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n if (!inputLength) {\r\n return inputOffset;\r\n }\r\n let resultOffset = -1;\r\n if (this.isConstructed) {\r\n resultOffset = LocalConstructedValueBlock.prototype.fromBER.call(this, inputBuffer, inputOffset, inputLength);\r\n if (resultOffset === -1)\r\n return resultOffset;\r\n for (const value of this.value) {\r\n const currentBlockName = value.constructor.NAME;\r\n if (currentBlockName === END_OF_CONTENT_NAME) {\r\n if (this.isIndefiniteForm)\r\n break;\r\n else {\r\n this.error = \"EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only\";\r\n return -1;\r\n }\r\n }\r\n if (currentBlockName !== BIT_STRING_NAME) {\r\n this.error = \"BIT STRING may consists of BIT STRINGs only\";\r\n return -1;\r\n }\r\n const valueBlock = value.valueBlock;\r\n if ((this.unusedBits > 0) && (valueBlock.unusedBits > 0)) {\r\n this.error = \"Using of \\\"unused bits\\\" inside constructive BIT STRING allowed for least one only\";\r\n return -1;\r\n }\r\n this.unusedBits = valueBlock.unusedBits;\r\n }\r\n return resultOffset;\r\n }\r\n const inputView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, inputView, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength);\r\n this.unusedBits = intBuffer[0];\r\n if (this.unusedBits > 7) {\r\n this.error = \"Unused bits for BitString must be in range 0-7\";\r\n return -1;\r\n }\r\n if (!this.unusedBits) {\r\n const buf = intBuffer.subarray(1);\r\n try {\r\n if (buf.byteLength) {\r\n const asn = localFromBER(buf, 0, buf.byteLength);\r\n if (asn.offset !== -1 && asn.offset === (inputLength - 1)) {\r\n this.value = [asn.result];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n }\r\n }\r\n this.valueHexView = intBuffer.subarray(1);\r\n this.blockLength = intBuffer.length;\r\n return (inputOffset + inputLength);\r\n }\r\n toBER(sizeOnly, writer) {\r\n if (this.isConstructed) {\r\n return LocalConstructedValueBlock.prototype.toBER.call(this, sizeOnly, writer);\r\n }\r\n if (sizeOnly) {\r\n return new ArrayBuffer(this.valueHexView.byteLength + 1);\r\n }\r\n if (!this.valueHexView.byteLength) {\r\n return EMPTY_BUFFER;\r\n }\r\n const retView = new Uint8Array(this.valueHexView.length + 1);\r\n retView[0] = this.unusedBits;\r\n retView.set(this.valueHexView, 1);\r\n return retView.buffer;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n unusedBits: this.unusedBits,\r\n isConstructed: this.isConstructed,\r\n };\r\n }\r\n}\r\nLocalBitStringValueBlock.NAME = \"BitStringValueBlock\";\n\nvar _a$q;\r\nclass BitString extends BaseBlock {\r\n constructor({ idBlock = {}, lenBlock = {}, ...parameters } = {}) {\r\n var _b, _c;\r\n (_b = parameters.isConstructed) !== null && _b !== void 0 ? _b : (parameters.isConstructed = !!((_c = parameters.value) === null || _c === void 0 ? void 0 : _c.length));\r\n super({\r\n idBlock: {\r\n isConstructed: parameters.isConstructed,\r\n ...idBlock,\r\n },\r\n lenBlock: {\r\n ...lenBlock,\r\n isIndefiniteForm: !!parameters.isIndefiniteForm,\r\n },\r\n ...parameters,\r\n }, LocalBitStringValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 3;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n this.valueBlock.isConstructed = this.idBlock.isConstructed;\r\n this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm;\r\n return super.fromBER(inputBuffer, inputOffset, inputLength);\r\n }\r\n onAsciiEncoding() {\r\n if (this.valueBlock.isConstructed || (this.valueBlock.value && this.valueBlock.value.length)) {\r\n return Constructed.prototype.onAsciiEncoding.call(this);\r\n }\r\n else {\r\n const bits = [];\r\n const valueHex = this.valueBlock.valueHexView;\r\n for (const byte of valueHex) {\r\n bits.push(byte.toString(2).padStart(8, \"0\"));\r\n }\r\n const bitsStr = bits.join(\"\");\r\n return `${this.constructor.NAME} : ${bitsStr.substring(0, bitsStr.length - this.valueBlock.unusedBits)}`;\r\n }\r\n }\r\n}\r\n_a$q = BitString;\r\n(() => {\r\n typeStore.BitString = _a$q;\r\n})();\r\nBitString.NAME = BIT_STRING_NAME;\n\nvar _a$p;\r\nfunction viewAdd(first, second) {\r\n const c = new Uint8Array([0]);\r\n const firstView = new Uint8Array(first);\r\n const secondView = new Uint8Array(second);\r\n let firstViewCopy = firstView.slice(0);\r\n const firstViewCopyLength = firstViewCopy.length - 1;\r\n const secondViewCopy = secondView.slice(0);\r\n const secondViewCopyLength = secondViewCopy.length - 1;\r\n let value = 0;\r\n const max = (secondViewCopyLength < firstViewCopyLength) ? firstViewCopyLength : secondViewCopyLength;\r\n let counter = 0;\r\n for (let i = max; i >= 0; i--, counter++) {\r\n switch (true) {\r\n case (counter < secondViewCopy.length):\r\n value = firstViewCopy[firstViewCopyLength - counter] + secondViewCopy[secondViewCopyLength - counter] + c[0];\r\n break;\r\n default:\r\n value = firstViewCopy[firstViewCopyLength - counter] + c[0];\r\n }\r\n c[0] = value / 10;\r\n switch (true) {\r\n case (counter >= firstViewCopy.length):\r\n firstViewCopy = pvutils.utilConcatView(new Uint8Array([value % 10]), firstViewCopy);\r\n break;\r\n default:\r\n firstViewCopy[firstViewCopyLength - counter] = value % 10;\r\n }\r\n }\r\n if (c[0] > 0)\r\n firstViewCopy = pvutils.utilConcatView(c, firstViewCopy);\r\n return firstViewCopy;\r\n}\r\nfunction power2(n) {\r\n if (n >= powers2.length) {\r\n for (let p = powers2.length; p <= n; p++) {\r\n const c = new Uint8Array([0]);\r\n let digits = (powers2[p - 1]).slice(0);\r\n for (let i = (digits.length - 1); i >= 0; i--) {\r\n const newValue = new Uint8Array([(digits[i] << 1) + c[0]]);\r\n c[0] = newValue[0] / 10;\r\n digits[i] = newValue[0] % 10;\r\n }\r\n if (c[0] > 0)\r\n digits = pvutils.utilConcatView(c, digits);\r\n powers2.push(digits);\r\n }\r\n }\r\n return powers2[n];\r\n}\r\nfunction viewSub(first, second) {\r\n let b = 0;\r\n const firstView = new Uint8Array(first);\r\n const secondView = new Uint8Array(second);\r\n const firstViewCopy = firstView.slice(0);\r\n const firstViewCopyLength = firstViewCopy.length - 1;\r\n const secondViewCopy = secondView.slice(0);\r\n const secondViewCopyLength = secondViewCopy.length - 1;\r\n let value;\r\n let counter = 0;\r\n for (let i = secondViewCopyLength; i >= 0; i--, counter++) {\r\n value = firstViewCopy[firstViewCopyLength - counter] - secondViewCopy[secondViewCopyLength - counter] - b;\r\n switch (true) {\r\n case (value < 0):\r\n b = 1;\r\n firstViewCopy[firstViewCopyLength - counter] = value + 10;\r\n break;\r\n default:\r\n b = 0;\r\n firstViewCopy[firstViewCopyLength - counter] = value;\r\n }\r\n }\r\n if (b > 0) {\r\n for (let i = (firstViewCopyLength - secondViewCopyLength + 1); i >= 0; i--, counter++) {\r\n value = firstViewCopy[firstViewCopyLength - counter] - b;\r\n if (value < 0) {\r\n b = 1;\r\n firstViewCopy[firstViewCopyLength - counter] = value + 10;\r\n }\r\n else {\r\n b = 0;\r\n firstViewCopy[firstViewCopyLength - counter] = value;\r\n break;\r\n }\r\n }\r\n }\r\n return firstViewCopy.slice();\r\n}\r\nclass LocalIntegerValueBlock extends HexBlock(ValueBlock) {\r\n constructor({ value, ...parameters } = {}) {\r\n super(parameters);\r\n this._valueDec = 0;\r\n if (parameters.valueHex) {\r\n this.setValueHex();\r\n }\r\n if (value !== undefined) {\r\n this.valueDec = value;\r\n }\r\n }\r\n setValueHex() {\r\n if (this.valueHexView.length >= 4) {\r\n this.warnings.push(\"Too big Integer for decoding, hex only\");\r\n this.isHexOnly = true;\r\n this._valueDec = 0;\r\n }\r\n else {\r\n this.isHexOnly = false;\r\n if (this.valueHexView.length > 0) {\r\n this._valueDec = pvutils.utilDecodeTC.call(this);\r\n }\r\n }\r\n }\r\n set valueDec(v) {\r\n this._valueDec = v;\r\n this.isHexOnly = false;\r\n this.valueHexView = new Uint8Array(pvutils.utilEncodeTC(v));\r\n }\r\n get valueDec() {\r\n return this._valueDec;\r\n }\r\n fromDER(inputBuffer, inputOffset, inputLength, expectedLength = 0) {\r\n const offset = this.fromBER(inputBuffer, inputOffset, inputLength);\r\n if (offset === -1)\r\n return offset;\r\n const view = this.valueHexView;\r\n if ((view[0] === 0x00) && ((view[1] & 0x80) !== 0)) {\r\n this.valueHexView = view.subarray(1);\r\n }\r\n else {\r\n if (expectedLength !== 0) {\r\n if (view.length < expectedLength) {\r\n if ((expectedLength - view.length) > 1)\r\n expectedLength = view.length + 1;\r\n this.valueHexView = view.subarray(expectedLength - view.length);\r\n }\r\n }\r\n }\r\n return offset;\r\n }\r\n toDER(sizeOnly = false) {\r\n const view = this.valueHexView;\r\n switch (true) {\r\n case ((view[0] & 0x80) !== 0):\r\n {\r\n const updatedView = new Uint8Array(this.valueHexView.length + 1);\r\n updatedView[0] = 0x00;\r\n updatedView.set(view, 1);\r\n this.valueHexView = updatedView;\r\n }\r\n break;\r\n case ((view[0] === 0x00) && ((view[1] & 0x80) === 0)):\r\n {\r\n this.valueHexView = this.valueHexView.subarray(1);\r\n }\r\n break;\r\n }\r\n return this.toBER(sizeOnly);\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const resultOffset = super.fromBER(inputBuffer, inputOffset, inputLength);\r\n if (resultOffset === -1) {\r\n return resultOffset;\r\n }\r\n this.setValueHex();\r\n return resultOffset;\r\n }\r\n toBER(sizeOnly) {\r\n return sizeOnly\r\n ? new ArrayBuffer(this.valueHexView.length)\r\n : this.valueHexView.slice().buffer;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n valueDec: this.valueDec,\r\n };\r\n }\r\n toString() {\r\n const firstBit = (this.valueHexView.length * 8) - 1;\r\n let digits = new Uint8Array((this.valueHexView.length * 8) / 3);\r\n let bitNumber = 0;\r\n let currentByte;\r\n const asn1View = this.valueHexView;\r\n let result = \"\";\r\n let flag = false;\r\n for (let byteNumber = (asn1View.byteLength - 1); byteNumber >= 0; byteNumber--) {\r\n currentByte = asn1View[byteNumber];\r\n for (let i = 0; i < 8; i++) {\r\n if ((currentByte & 1) === 1) {\r\n switch (bitNumber) {\r\n case firstBit:\r\n digits = viewSub(power2(bitNumber), digits);\r\n result = \"-\";\r\n break;\r\n default:\r\n digits = viewAdd(digits, power2(bitNumber));\r\n }\r\n }\r\n bitNumber++;\r\n currentByte >>= 1;\r\n }\r\n }\r\n for (let i = 0; i < digits.length; i++) {\r\n if (digits[i])\r\n flag = true;\r\n if (flag)\r\n result += digitsString.charAt(digits[i]);\r\n }\r\n if (flag === false)\r\n result += digitsString.charAt(0);\r\n return result;\r\n }\r\n}\r\n_a$p = LocalIntegerValueBlock;\r\nLocalIntegerValueBlock.NAME = \"IntegerValueBlock\";\r\n(() => {\r\n Object.defineProperty(_a$p.prototype, \"valueHex\", {\r\n set: function (v) {\r\n this.valueHexView = new Uint8Array(v);\r\n this.setValueHex();\r\n },\r\n get: function () {\r\n return this.valueHexView.slice().buffer;\r\n },\r\n });\r\n})();\n\nvar _a$o;\r\nclass Integer extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalIntegerValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 2;\r\n }\r\n toBigInt() {\r\n assertBigInt();\r\n return BigInt(this.valueBlock.toString());\r\n }\r\n static fromBigInt(value) {\r\n assertBigInt();\r\n const bigIntValue = BigInt(value);\r\n const writer = new ViewWriter();\r\n const hex = bigIntValue.toString(16).replace(/^-/, \"\");\r\n const view = new Uint8Array(pvtsutils.Convert.FromHex(hex));\r\n if (bigIntValue < 0) {\r\n const first = new Uint8Array(view.length + (view[0] & 0x80 ? 1 : 0));\r\n first[0] |= 0x80;\r\n const firstInt = BigInt(`0x${pvtsutils.Convert.ToHex(first)}`);\r\n const secondInt = firstInt + bigIntValue;\r\n const second = pvtsutils.BufferSourceConverter.toUint8Array(pvtsutils.Convert.FromHex(secondInt.toString(16)));\r\n second[0] |= 0x80;\r\n writer.write(second);\r\n }\r\n else {\r\n if (view[0] & 0x80) {\r\n writer.write(new Uint8Array([0]));\r\n }\r\n writer.write(view);\r\n }\r\n const res = new Integer({\r\n valueHex: writer.final(),\r\n });\r\n return res;\r\n }\r\n convertToDER() {\r\n const integer = new Integer({ valueHex: this.valueBlock.valueHexView });\r\n integer.valueBlock.toDER();\r\n return integer;\r\n }\r\n convertFromDER() {\r\n return new Integer({\r\n valueHex: this.valueBlock.valueHexView[0] === 0\r\n ? this.valueBlock.valueHexView.subarray(1)\r\n : this.valueBlock.valueHexView,\r\n });\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${this.valueBlock.toString()}`;\r\n }\r\n}\r\n_a$o = Integer;\r\n(() => {\r\n typeStore.Integer = _a$o;\r\n})();\r\nInteger.NAME = \"INTEGER\";\n\nvar _a$n;\r\nclass Enumerated extends Integer {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 10;\r\n }\r\n}\r\n_a$n = Enumerated;\r\n(() => {\r\n typeStore.Enumerated = _a$n;\r\n})();\r\nEnumerated.NAME = \"ENUMERATED\";\n\nclass LocalSidValueBlock extends HexBlock(ValueBlock) {\r\n constructor({ valueDec = -1, isFirstSid = false, ...parameters } = {}) {\r\n super(parameters);\r\n this.valueDec = valueDec;\r\n this.isFirstSid = isFirstSid;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n if (!inputLength) {\r\n return inputOffset;\r\n }\r\n const inputView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, inputView, inputOffset, inputLength)) {\r\n return -1;\r\n }\r\n const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength);\r\n this.valueHexView = new Uint8Array(inputLength);\r\n for (let i = 0; i < inputLength; i++) {\r\n this.valueHexView[i] = intBuffer[i] & 0x7F;\r\n this.blockLength++;\r\n if ((intBuffer[i] & 0x80) === 0x00)\r\n break;\r\n }\r\n const tempView = new Uint8Array(this.blockLength);\r\n for (let i = 0; i < this.blockLength; i++) {\r\n tempView[i] = this.valueHexView[i];\r\n }\r\n this.valueHexView = tempView;\r\n if ((intBuffer[this.blockLength - 1] & 0x80) !== 0x00) {\r\n this.error = \"End of input reached before message was fully decoded\";\r\n return -1;\r\n }\r\n if (this.valueHexView[0] === 0x00)\r\n this.warnings.push(\"Needlessly long format of SID encoding\");\r\n if (this.blockLength <= 8)\r\n this.valueDec = pvutils.utilFromBase(this.valueHexView, 7);\r\n else {\r\n this.isHexOnly = true;\r\n this.warnings.push(\"Too big SID for decoding, hex only\");\r\n }\r\n return (inputOffset + this.blockLength);\r\n }\r\n set valueBigInt(value) {\r\n assertBigInt();\r\n let bits = BigInt(value).toString(2);\r\n while (bits.length % 7) {\r\n bits = \"0\" + bits;\r\n }\r\n const bytes = new Uint8Array(bits.length / 7);\r\n for (let i = 0; i < bytes.length; i++) {\r\n bytes[i] = parseInt(bits.slice(i * 7, i * 7 + 7), 2) + (i + 1 < bytes.length ? 0x80 : 0);\r\n }\r\n this.fromBER(bytes.buffer, 0, bytes.length);\r\n }\r\n toBER(sizeOnly) {\r\n if (this.isHexOnly) {\r\n if (sizeOnly)\r\n return (new ArrayBuffer(this.valueHexView.byteLength));\r\n const curView = this.valueHexView;\r\n const retView = new Uint8Array(this.blockLength);\r\n for (let i = 0; i < (this.blockLength - 1); i++)\r\n retView[i] = curView[i] | 0x80;\r\n retView[this.blockLength - 1] = curView[this.blockLength - 1];\r\n return retView.buffer;\r\n }\r\n const encodedBuf = pvutils.utilToBase(this.valueDec, 7);\r\n if (encodedBuf.byteLength === 0) {\r\n this.error = \"Error during encoding SID value\";\r\n return EMPTY_BUFFER;\r\n }\r\n const retView = new Uint8Array(encodedBuf.byteLength);\r\n if (!sizeOnly) {\r\n const encodedView = new Uint8Array(encodedBuf);\r\n const len = encodedBuf.byteLength - 1;\r\n for (let i = 0; i < len; i++)\r\n retView[i] = encodedView[i] | 0x80;\r\n retView[len] = encodedView[len];\r\n }\r\n return retView;\r\n }\r\n toString() {\r\n let result = \"\";\r\n if (this.isHexOnly)\r\n result = pvtsutils.Convert.ToHex(this.valueHexView);\r\n else {\r\n if (this.isFirstSid) {\r\n let sidValue = this.valueDec;\r\n if (this.valueDec <= 39)\r\n result = \"0.\";\r\n else {\r\n if (this.valueDec <= 79) {\r\n result = \"1.\";\r\n sidValue -= 40;\r\n }\r\n else {\r\n result = \"2.\";\r\n sidValue -= 80;\r\n }\r\n }\r\n result += sidValue.toString();\r\n }\r\n else\r\n result = this.valueDec.toString();\r\n }\r\n return result;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n valueDec: this.valueDec,\r\n isFirstSid: this.isFirstSid,\r\n };\r\n }\r\n}\r\nLocalSidValueBlock.NAME = \"sidBlock\";\n\nclass LocalObjectIdentifierValueBlock extends ValueBlock {\r\n constructor({ value = EMPTY_STRING, ...parameters } = {}) {\r\n super(parameters);\r\n this.value = [];\r\n if (value) {\r\n this.fromString(value);\r\n }\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n let resultOffset = inputOffset;\r\n while (inputLength > 0) {\r\n const sidBlock = new LocalSidValueBlock();\r\n resultOffset = sidBlock.fromBER(inputBuffer, resultOffset, inputLength);\r\n if (resultOffset === -1) {\r\n this.blockLength = 0;\r\n this.error = sidBlock.error;\r\n return resultOffset;\r\n }\r\n if (this.value.length === 0)\r\n sidBlock.isFirstSid = true;\r\n this.blockLength += sidBlock.blockLength;\r\n inputLength -= sidBlock.blockLength;\r\n this.value.push(sidBlock);\r\n }\r\n return resultOffset;\r\n }\r\n toBER(sizeOnly) {\r\n const retBuffers = [];\r\n for (let i = 0; i < this.value.length; i++) {\r\n const valueBuf = this.value[i].toBER(sizeOnly);\r\n if (valueBuf.byteLength === 0) {\r\n this.error = this.value[i].error;\r\n return EMPTY_BUFFER;\r\n }\r\n retBuffers.push(valueBuf);\r\n }\r\n return concat(retBuffers);\r\n }\r\n fromString(string) {\r\n this.value = [];\r\n let pos1 = 0;\r\n let pos2 = 0;\r\n let sid = \"\";\r\n let flag = false;\r\n do {\r\n pos2 = string.indexOf(\".\", pos1);\r\n if (pos2 === -1)\r\n sid = string.substring(pos1);\r\n else\r\n sid = string.substring(pos1, pos2);\r\n pos1 = pos2 + 1;\r\n if (flag) {\r\n const sidBlock = this.value[0];\r\n let plus = 0;\r\n switch (sidBlock.valueDec) {\r\n case 0:\r\n break;\r\n case 1:\r\n plus = 40;\r\n break;\r\n case 2:\r\n plus = 80;\r\n break;\r\n default:\r\n this.value = [];\r\n return;\r\n }\r\n const parsedSID = parseInt(sid, 10);\r\n if (isNaN(parsedSID))\r\n return;\r\n sidBlock.valueDec = parsedSID + plus;\r\n flag = false;\r\n }\r\n else {\r\n const sidBlock = new LocalSidValueBlock();\r\n if (sid > Number.MAX_SAFE_INTEGER) {\r\n assertBigInt();\r\n const sidValue = BigInt(sid);\r\n sidBlock.valueBigInt = sidValue;\r\n }\r\n else {\r\n sidBlock.valueDec = parseInt(sid, 10);\r\n if (isNaN(sidBlock.valueDec))\r\n return;\r\n }\r\n if (!this.value.length) {\r\n sidBlock.isFirstSid = true;\r\n flag = true;\r\n }\r\n this.value.push(sidBlock);\r\n }\r\n } while (pos2 !== -1);\r\n }\r\n toString() {\r\n let result = \"\";\r\n let isHexOnly = false;\r\n for (let i = 0; i < this.value.length; i++) {\r\n isHexOnly = this.value[i].isHexOnly;\r\n let sidStr = this.value[i].toString();\r\n if (i !== 0)\r\n result = `${result}.`;\r\n if (isHexOnly) {\r\n sidStr = `{${sidStr}}`;\r\n if (this.value[i].isFirstSid)\r\n result = `2.{${sidStr} - 80}`;\r\n else\r\n result += sidStr;\r\n }\r\n else\r\n result += sidStr;\r\n }\r\n return result;\r\n }\r\n toJSON() {\r\n const object = {\r\n ...super.toJSON(),\r\n value: this.toString(),\r\n sidArray: [],\r\n };\r\n for (let i = 0; i < this.value.length; i++) {\r\n object.sidArray.push(this.value[i].toJSON());\r\n }\r\n return object;\r\n }\r\n}\r\nLocalObjectIdentifierValueBlock.NAME = \"ObjectIdentifierValueBlock\";\n\nvar _a$m;\r\nclass ObjectIdentifier extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalObjectIdentifierValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 6;\r\n }\r\n getValue() {\r\n return this.valueBlock.toString();\r\n }\r\n setValue(value) {\r\n this.valueBlock.fromString(value);\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${this.valueBlock.toString() || \"empty\"}`;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n value: this.getValue(),\r\n };\r\n }\r\n}\r\n_a$m = ObjectIdentifier;\r\n(() => {\r\n typeStore.ObjectIdentifier = _a$m;\r\n})();\r\nObjectIdentifier.NAME = \"OBJECT IDENTIFIER\";\n\nclass LocalRelativeSidValueBlock extends HexBlock(LocalBaseBlock) {\r\n constructor({ valueDec = 0, ...parameters } = {}) {\r\n super(parameters);\r\n this.valueDec = valueDec;\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n if (inputLength === 0)\r\n return inputOffset;\r\n const inputView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n if (!checkBufferParams(this, inputView, inputOffset, inputLength))\r\n return -1;\r\n const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength);\r\n this.valueHexView = new Uint8Array(inputLength);\r\n for (let i = 0; i < inputLength; i++) {\r\n this.valueHexView[i] = intBuffer[i] & 0x7F;\r\n this.blockLength++;\r\n if ((intBuffer[i] & 0x80) === 0x00)\r\n break;\r\n }\r\n const tempView = new Uint8Array(this.blockLength);\r\n for (let i = 0; i < this.blockLength; i++)\r\n tempView[i] = this.valueHexView[i];\r\n this.valueHexView = tempView;\r\n if ((intBuffer[this.blockLength - 1] & 0x80) !== 0x00) {\r\n this.error = \"End of input reached before message was fully decoded\";\r\n return -1;\r\n }\r\n if (this.valueHexView[0] === 0x00)\r\n this.warnings.push(\"Needlessly long format of SID encoding\");\r\n if (this.blockLength <= 8)\r\n this.valueDec = pvutils.utilFromBase(this.valueHexView, 7);\r\n else {\r\n this.isHexOnly = true;\r\n this.warnings.push(\"Too big SID for decoding, hex only\");\r\n }\r\n return (inputOffset + this.blockLength);\r\n }\r\n toBER(sizeOnly) {\r\n if (this.isHexOnly) {\r\n if (sizeOnly)\r\n return (new ArrayBuffer(this.valueHexView.byteLength));\r\n const curView = this.valueHexView;\r\n const retView = new Uint8Array(this.blockLength);\r\n for (let i = 0; i < (this.blockLength - 1); i++)\r\n retView[i] = curView[i] | 0x80;\r\n retView[this.blockLength - 1] = curView[this.blockLength - 1];\r\n return retView.buffer;\r\n }\r\n const encodedBuf = pvutils.utilToBase(this.valueDec, 7);\r\n if (encodedBuf.byteLength === 0) {\r\n this.error = \"Error during encoding SID value\";\r\n return EMPTY_BUFFER;\r\n }\r\n const retView = new Uint8Array(encodedBuf.byteLength);\r\n if (!sizeOnly) {\r\n const encodedView = new Uint8Array(encodedBuf);\r\n const len = encodedBuf.byteLength - 1;\r\n for (let i = 0; i < len; i++)\r\n retView[i] = encodedView[i] | 0x80;\r\n retView[len] = encodedView[len];\r\n }\r\n return retView.buffer;\r\n }\r\n toString() {\r\n let result = \"\";\r\n if (this.isHexOnly)\r\n result = pvtsutils.Convert.ToHex(this.valueHexView);\r\n else {\r\n result = this.valueDec.toString();\r\n }\r\n return result;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n valueDec: this.valueDec,\r\n };\r\n }\r\n}\r\nLocalRelativeSidValueBlock.NAME = \"relativeSidBlock\";\n\nclass LocalRelativeObjectIdentifierValueBlock extends ValueBlock {\r\n constructor({ value = EMPTY_STRING, ...parameters } = {}) {\r\n super(parameters);\r\n this.value = [];\r\n if (value) {\r\n this.fromString(value);\r\n }\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n let resultOffset = inputOffset;\r\n while (inputLength > 0) {\r\n const sidBlock = new LocalRelativeSidValueBlock();\r\n resultOffset = sidBlock.fromBER(inputBuffer, resultOffset, inputLength);\r\n if (resultOffset === -1) {\r\n this.blockLength = 0;\r\n this.error = sidBlock.error;\r\n return resultOffset;\r\n }\r\n this.blockLength += sidBlock.blockLength;\r\n inputLength -= sidBlock.blockLength;\r\n this.value.push(sidBlock);\r\n }\r\n return resultOffset;\r\n }\r\n toBER(sizeOnly, writer) {\r\n const retBuffers = [];\r\n for (let i = 0; i < this.value.length; i++) {\r\n const valueBuf = this.value[i].toBER(sizeOnly);\r\n if (valueBuf.byteLength === 0) {\r\n this.error = this.value[i].error;\r\n return EMPTY_BUFFER;\r\n }\r\n retBuffers.push(valueBuf);\r\n }\r\n return concat(retBuffers);\r\n }\r\n fromString(string) {\r\n this.value = [];\r\n let pos1 = 0;\r\n let pos2 = 0;\r\n let sid = \"\";\r\n do {\r\n pos2 = string.indexOf(\".\", pos1);\r\n if (pos2 === -1)\r\n sid = string.substring(pos1);\r\n else\r\n sid = string.substring(pos1, pos2);\r\n pos1 = pos2 + 1;\r\n const sidBlock = new LocalRelativeSidValueBlock();\r\n sidBlock.valueDec = parseInt(sid, 10);\r\n if (isNaN(sidBlock.valueDec))\r\n return true;\r\n this.value.push(sidBlock);\r\n } while (pos2 !== -1);\r\n return true;\r\n }\r\n toString() {\r\n let result = \"\";\r\n let isHexOnly = false;\r\n for (let i = 0; i < this.value.length; i++) {\r\n isHexOnly = this.value[i].isHexOnly;\r\n let sidStr = this.value[i].toString();\r\n if (i !== 0)\r\n result = `${result}.`;\r\n if (isHexOnly) {\r\n sidStr = `{${sidStr}}`;\r\n result += sidStr;\r\n }\r\n else\r\n result += sidStr;\r\n }\r\n return result;\r\n }\r\n toJSON() {\r\n const object = {\r\n ...super.toJSON(),\r\n value: this.toString(),\r\n sidArray: [],\r\n };\r\n for (let i = 0; i < this.value.length; i++)\r\n object.sidArray.push(this.value[i].toJSON());\r\n return object;\r\n }\r\n}\r\nLocalRelativeObjectIdentifierValueBlock.NAME = \"RelativeObjectIdentifierValueBlock\";\n\nvar _a$l;\r\nclass RelativeObjectIdentifier extends BaseBlock {\r\n constructor(parameters = {}) {\r\n super(parameters, LocalRelativeObjectIdentifierValueBlock);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 13;\r\n }\r\n getValue() {\r\n return this.valueBlock.toString();\r\n }\r\n setValue(value) {\r\n this.valueBlock.fromString(value);\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${this.valueBlock.toString() || \"empty\"}`;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n value: this.getValue(),\r\n };\r\n }\r\n}\r\n_a$l = RelativeObjectIdentifier;\r\n(() => {\r\n typeStore.RelativeObjectIdentifier = _a$l;\r\n})();\r\nRelativeObjectIdentifier.NAME = \"RelativeObjectIdentifier\";\n\nvar _a$k;\r\nclass Sequence extends Constructed {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 16;\r\n }\r\n}\r\n_a$k = Sequence;\r\n(() => {\r\n typeStore.Sequence = _a$k;\r\n})();\r\nSequence.NAME = \"SEQUENCE\";\n\nvar _a$j;\r\nclass Set extends Constructed {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 17;\r\n }\r\n}\r\n_a$j = Set;\r\n(() => {\r\n typeStore.Set = _a$j;\r\n})();\r\nSet.NAME = \"SET\";\n\nclass LocalStringValueBlock extends HexBlock(ValueBlock) {\r\n constructor({ ...parameters } = {}) {\r\n super(parameters);\r\n this.isHexOnly = true;\r\n this.value = EMPTY_STRING;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n value: this.value,\r\n };\r\n }\r\n}\r\nLocalStringValueBlock.NAME = \"StringValueBlock\";\n\nclass LocalSimpleStringValueBlock extends LocalStringValueBlock {\r\n}\r\nLocalSimpleStringValueBlock.NAME = \"SimpleStringValueBlock\";\n\nclass LocalSimpleStringBlock extends BaseStringBlock {\r\n constructor({ ...parameters } = {}) {\r\n super(parameters, LocalSimpleStringValueBlock);\r\n }\r\n fromBuffer(inputBuffer) {\r\n this.valueBlock.value = String.fromCharCode.apply(null, pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer));\r\n }\r\n fromString(inputString) {\r\n const strLen = inputString.length;\r\n const view = this.valueBlock.valueHexView = new Uint8Array(strLen);\r\n for (let i = 0; i < strLen; i++)\r\n view[i] = inputString.charCodeAt(i);\r\n this.valueBlock.value = inputString;\r\n }\r\n}\r\nLocalSimpleStringBlock.NAME = \"SIMPLE STRING\";\n\nclass LocalUtf8StringValueBlock extends LocalSimpleStringBlock {\r\n fromBuffer(inputBuffer) {\r\n this.valueBlock.valueHexView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n try {\r\n this.valueBlock.value = pvtsutils.Convert.ToUtf8String(inputBuffer);\r\n }\r\n catch (ex) {\r\n this.warnings.push(`Error during \"decodeURIComponent\": ${ex}, using raw string`);\r\n this.valueBlock.value = pvtsutils.Convert.ToBinary(inputBuffer);\r\n }\r\n }\r\n fromString(inputString) {\r\n this.valueBlock.valueHexView = new Uint8Array(pvtsutils.Convert.FromUtf8String(inputString));\r\n this.valueBlock.value = inputString;\r\n }\r\n}\r\nLocalUtf8StringValueBlock.NAME = \"Utf8StringValueBlock\";\n\nvar _a$i;\r\nclass Utf8String extends LocalUtf8StringValueBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 12;\r\n }\r\n}\r\n_a$i = Utf8String;\r\n(() => {\r\n typeStore.Utf8String = _a$i;\r\n})();\r\nUtf8String.NAME = \"UTF8String\";\n\nclass LocalBmpStringValueBlock extends LocalSimpleStringBlock {\r\n fromBuffer(inputBuffer) {\r\n this.valueBlock.value = pvtsutils.Convert.ToUtf16String(inputBuffer);\r\n this.valueBlock.valueHexView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer);\r\n }\r\n fromString(inputString) {\r\n this.valueBlock.value = inputString;\r\n this.valueBlock.valueHexView = new Uint8Array(pvtsutils.Convert.FromUtf16String(inputString));\r\n }\r\n}\r\nLocalBmpStringValueBlock.NAME = \"BmpStringValueBlock\";\n\nvar _a$h;\r\nclass BmpString extends LocalBmpStringValueBlock {\r\n constructor({ ...parameters } = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 30;\r\n }\r\n}\r\n_a$h = BmpString;\r\n(() => {\r\n typeStore.BmpString = _a$h;\r\n})();\r\nBmpString.NAME = \"BMPString\";\n\nclass LocalUniversalStringValueBlock extends LocalSimpleStringBlock {\r\n fromBuffer(inputBuffer) {\r\n const copyBuffer = ArrayBuffer.isView(inputBuffer) ? inputBuffer.slice().buffer : inputBuffer.slice(0);\r\n const valueView = new Uint8Array(copyBuffer);\r\n for (let i = 0; i < valueView.length; i += 4) {\r\n valueView[i] = valueView[i + 3];\r\n valueView[i + 1] = valueView[i + 2];\r\n valueView[i + 2] = 0x00;\r\n valueView[i + 3] = 0x00;\r\n }\r\n this.valueBlock.value = String.fromCharCode.apply(null, new Uint32Array(copyBuffer));\r\n }\r\n fromString(inputString) {\r\n const strLength = inputString.length;\r\n const valueHexView = this.valueBlock.valueHexView = new Uint8Array(strLength * 4);\r\n for (let i = 0; i < strLength; i++) {\r\n const codeBuf = pvutils.utilToBase(inputString.charCodeAt(i), 8);\r\n const codeView = new Uint8Array(codeBuf);\r\n if (codeView.length > 4)\r\n continue;\r\n const dif = 4 - codeView.length;\r\n for (let j = (codeView.length - 1); j >= 0; j--)\r\n valueHexView[i * 4 + j + dif] = codeView[j];\r\n }\r\n this.valueBlock.value = inputString;\r\n }\r\n}\r\nLocalUniversalStringValueBlock.NAME = \"UniversalStringValueBlock\";\n\nvar _a$g;\r\nclass UniversalString extends LocalUniversalStringValueBlock {\r\n constructor({ ...parameters } = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 28;\r\n }\r\n}\r\n_a$g = UniversalString;\r\n(() => {\r\n typeStore.UniversalString = _a$g;\r\n})();\r\nUniversalString.NAME = \"UniversalString\";\n\nvar _a$f;\r\nclass NumericString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 18;\r\n }\r\n}\r\n_a$f = NumericString;\r\n(() => {\r\n typeStore.NumericString = _a$f;\r\n})();\r\nNumericString.NAME = \"NumericString\";\n\nvar _a$e;\r\nclass PrintableString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 19;\r\n }\r\n}\r\n_a$e = PrintableString;\r\n(() => {\r\n typeStore.PrintableString = _a$e;\r\n})();\r\nPrintableString.NAME = \"PrintableString\";\n\nvar _a$d;\r\nclass TeletexString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 20;\r\n }\r\n}\r\n_a$d = TeletexString;\r\n(() => {\r\n typeStore.TeletexString = _a$d;\r\n})();\r\nTeletexString.NAME = \"TeletexString\";\n\nvar _a$c;\r\nclass VideotexString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 21;\r\n }\r\n}\r\n_a$c = VideotexString;\r\n(() => {\r\n typeStore.VideotexString = _a$c;\r\n})();\r\nVideotexString.NAME = \"VideotexString\";\n\nvar _a$b;\r\nclass IA5String extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 22;\r\n }\r\n}\r\n_a$b = IA5String;\r\n(() => {\r\n typeStore.IA5String = _a$b;\r\n})();\r\nIA5String.NAME = \"IA5String\";\n\nvar _a$a;\r\nclass GraphicString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 25;\r\n }\r\n}\r\n_a$a = GraphicString;\r\n(() => {\r\n typeStore.GraphicString = _a$a;\r\n})();\r\nGraphicString.NAME = \"GraphicString\";\n\nvar _a$9;\r\nclass VisibleString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 26;\r\n }\r\n}\r\n_a$9 = VisibleString;\r\n(() => {\r\n typeStore.VisibleString = _a$9;\r\n})();\r\nVisibleString.NAME = \"VisibleString\";\n\nvar _a$8;\r\nclass GeneralString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 27;\r\n }\r\n}\r\n_a$8 = GeneralString;\r\n(() => {\r\n typeStore.GeneralString = _a$8;\r\n})();\r\nGeneralString.NAME = \"GeneralString\";\n\nvar _a$7;\r\nclass CharacterString extends LocalSimpleStringBlock {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 29;\r\n }\r\n}\r\n_a$7 = CharacterString;\r\n(() => {\r\n typeStore.CharacterString = _a$7;\r\n})();\r\nCharacterString.NAME = \"CharacterString\";\n\nvar _a$6;\r\nclass UTCTime extends VisibleString {\r\n constructor({ value, valueDate, ...parameters } = {}) {\r\n super(parameters);\r\n this.year = 0;\r\n this.month = 0;\r\n this.day = 0;\r\n this.hour = 0;\r\n this.minute = 0;\r\n this.second = 0;\r\n if (value) {\r\n this.fromString(value);\r\n this.valueBlock.valueHexView = new Uint8Array(value.length);\r\n for (let i = 0; i < value.length; i++)\r\n this.valueBlock.valueHexView[i] = value.charCodeAt(i);\r\n }\r\n if (valueDate) {\r\n this.fromDate(valueDate);\r\n this.valueBlock.valueHexView = new Uint8Array(this.toBuffer());\r\n }\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 23;\r\n }\r\n fromBuffer(inputBuffer) {\r\n this.fromString(String.fromCharCode.apply(null, pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer)));\r\n }\r\n toBuffer() {\r\n const str = this.toString();\r\n const buffer = new ArrayBuffer(str.length);\r\n const view = new Uint8Array(buffer);\r\n for (let i = 0; i < str.length; i++)\r\n view[i] = str.charCodeAt(i);\r\n return buffer;\r\n }\r\n fromDate(inputDate) {\r\n this.year = inputDate.getUTCFullYear();\r\n this.month = inputDate.getUTCMonth() + 1;\r\n this.day = inputDate.getUTCDate();\r\n this.hour = inputDate.getUTCHours();\r\n this.minute = inputDate.getUTCMinutes();\r\n this.second = inputDate.getUTCSeconds();\r\n }\r\n toDate() {\r\n return (new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second)));\r\n }\r\n fromString(inputString) {\r\n const parser = /(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})Z/ig;\r\n const parserArray = parser.exec(inputString);\r\n if (parserArray === null) {\r\n this.error = \"Wrong input string for conversion\";\r\n return;\r\n }\r\n const year = parseInt(parserArray[1], 10);\r\n if (year >= 50)\r\n this.year = 1900 + year;\r\n else\r\n this.year = 2000 + year;\r\n this.month = parseInt(parserArray[2], 10);\r\n this.day = parseInt(parserArray[3], 10);\r\n this.hour = parseInt(parserArray[4], 10);\r\n this.minute = parseInt(parserArray[5], 10);\r\n this.second = parseInt(parserArray[6], 10);\r\n }\r\n toString(encoding = \"iso\") {\r\n if (encoding === \"iso\") {\r\n const outputArray = new Array(7);\r\n outputArray[0] = pvutils.padNumber(((this.year < 2000) ? (this.year - 1900) : (this.year - 2000)), 2);\r\n outputArray[1] = pvutils.padNumber(this.month, 2);\r\n outputArray[2] = pvutils.padNumber(this.day, 2);\r\n outputArray[3] = pvutils.padNumber(this.hour, 2);\r\n outputArray[4] = pvutils.padNumber(this.minute, 2);\r\n outputArray[5] = pvutils.padNumber(this.second, 2);\r\n outputArray[6] = \"Z\";\r\n return outputArray.join(\"\");\r\n }\r\n return super.toString(encoding);\r\n }\r\n onAsciiEncoding() {\r\n return `${this.constructor.NAME} : ${this.toDate().toISOString()}`;\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n year: this.year,\r\n month: this.month,\r\n day: this.day,\r\n hour: this.hour,\r\n minute: this.minute,\r\n second: this.second,\r\n };\r\n }\r\n}\r\n_a$6 = UTCTime;\r\n(() => {\r\n typeStore.UTCTime = _a$6;\r\n})();\r\nUTCTime.NAME = \"UTCTime\";\n\nvar _a$5;\r\nclass GeneralizedTime extends UTCTime {\r\n constructor(parameters = {}) {\r\n var _b;\r\n super(parameters);\r\n (_b = this.millisecond) !== null && _b !== void 0 ? _b : (this.millisecond = 0);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 24;\r\n }\r\n fromDate(inputDate) {\r\n super.fromDate(inputDate);\r\n this.millisecond = inputDate.getUTCMilliseconds();\r\n }\r\n toDate() {\r\n return (new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)));\r\n }\r\n fromString(inputString) {\r\n let isUTC = false;\r\n let timeString = \"\";\r\n let dateTimeString = \"\";\r\n let fractionPart = 0;\r\n let parser;\r\n let hourDifference = 0;\r\n let minuteDifference = 0;\r\n if (inputString[inputString.length - 1] === \"Z\") {\r\n timeString = inputString.substring(0, inputString.length - 1);\r\n isUTC = true;\r\n }\r\n else {\r\n const number = new Number(inputString[inputString.length - 1]);\r\n if (isNaN(number.valueOf()))\r\n throw new Error(\"Wrong input string for conversion\");\r\n timeString = inputString;\r\n }\r\n if (isUTC) {\r\n if (timeString.indexOf(\"+\") !== -1)\r\n throw new Error(\"Wrong input string for conversion\");\r\n if (timeString.indexOf(\"-\") !== -1)\r\n throw new Error(\"Wrong input string for conversion\");\r\n }\r\n else {\r\n let multiplier = 1;\r\n let differencePosition = timeString.indexOf(\"+\");\r\n let differenceString = \"\";\r\n if (differencePosition === -1) {\r\n differencePosition = timeString.indexOf(\"-\");\r\n multiplier = -1;\r\n }\r\n if (differencePosition !== -1) {\r\n differenceString = timeString.substring(differencePosition + 1);\r\n timeString = timeString.substring(0, differencePosition);\r\n if ((differenceString.length !== 2) && (differenceString.length !== 4))\r\n throw new Error(\"Wrong input string for conversion\");\r\n let number = parseInt(differenceString.substring(0, 2), 10);\r\n if (isNaN(number.valueOf()))\r\n throw new Error(\"Wrong input string for conversion\");\r\n hourDifference = multiplier * number;\r\n if (differenceString.length === 4) {\r\n number = parseInt(differenceString.substring(2, 4), 10);\r\n if (isNaN(number.valueOf()))\r\n throw new Error(\"Wrong input string for conversion\");\r\n minuteDifference = multiplier * number;\r\n }\r\n }\r\n }\r\n let fractionPointPosition = timeString.indexOf(\".\");\r\n if (fractionPointPosition === -1)\r\n fractionPointPosition = timeString.indexOf(\",\");\r\n if (fractionPointPosition !== -1) {\r\n const fractionPartCheck = new Number(`0${timeString.substring(fractionPointPosition)}`);\r\n if (isNaN(fractionPartCheck.valueOf()))\r\n throw new Error(\"Wrong input string for conversion\");\r\n fractionPart = fractionPartCheck.valueOf();\r\n dateTimeString = timeString.substring(0, fractionPointPosition);\r\n }\r\n else\r\n dateTimeString = timeString;\r\n switch (true) {\r\n case (dateTimeString.length === 8):\r\n parser = /(\\d{4})(\\d{2})(\\d{2})/ig;\r\n if (fractionPointPosition !== -1)\r\n throw new Error(\"Wrong input string for conversion\");\r\n break;\r\n case (dateTimeString.length === 10):\r\n parser = /(\\d{4})(\\d{2})(\\d{2})(\\d{2})/ig;\r\n if (fractionPointPosition !== -1) {\r\n let fractionResult = 60 * fractionPart;\r\n this.minute = Math.floor(fractionResult);\r\n fractionResult = 60 * (fractionResult - this.minute);\r\n this.second = Math.floor(fractionResult);\r\n fractionResult = 1000 * (fractionResult - this.second);\r\n this.millisecond = Math.floor(fractionResult);\r\n }\r\n break;\r\n case (dateTimeString.length === 12):\r\n parser = /(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})/ig;\r\n if (fractionPointPosition !== -1) {\r\n let fractionResult = 60 * fractionPart;\r\n this.second = Math.floor(fractionResult);\r\n fractionResult = 1000 * (fractionResult - this.second);\r\n this.millisecond = Math.floor(fractionResult);\r\n }\r\n break;\r\n case (dateTimeString.length === 14):\r\n parser = /(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})/ig;\r\n if (fractionPointPosition !== -1) {\r\n const fractionResult = 1000 * fractionPart;\r\n this.millisecond = Math.floor(fractionResult);\r\n }\r\n break;\r\n default:\r\n throw new Error(\"Wrong input string for conversion\");\r\n }\r\n const parserArray = parser.exec(dateTimeString);\r\n if (parserArray === null)\r\n throw new Error(\"Wrong input string for conversion\");\r\n for (let j = 1; j < parserArray.length; j++) {\r\n switch (j) {\r\n case 1:\r\n this.year = parseInt(parserArray[j], 10);\r\n break;\r\n case 2:\r\n this.month = parseInt(parserArray[j], 10);\r\n break;\r\n case 3:\r\n this.day = parseInt(parserArray[j], 10);\r\n break;\r\n case 4:\r\n this.hour = parseInt(parserArray[j], 10) + hourDifference;\r\n break;\r\n case 5:\r\n this.minute = parseInt(parserArray[j], 10) + minuteDifference;\r\n break;\r\n case 6:\r\n this.second = parseInt(parserArray[j], 10);\r\n break;\r\n default:\r\n throw new Error(\"Wrong input string for conversion\");\r\n }\r\n }\r\n if (isUTC === false) {\r\n const tempDate = new Date(this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\r\n this.year = tempDate.getUTCFullYear();\r\n this.month = tempDate.getUTCMonth();\r\n this.day = tempDate.getUTCDay();\r\n this.hour = tempDate.getUTCHours();\r\n this.minute = tempDate.getUTCMinutes();\r\n this.second = tempDate.getUTCSeconds();\r\n this.millisecond = tempDate.getUTCMilliseconds();\r\n }\r\n }\r\n toString(encoding = \"iso\") {\r\n if (encoding === \"iso\") {\r\n const outputArray = [];\r\n outputArray.push(pvutils.padNumber(this.year, 4));\r\n outputArray.push(pvutils.padNumber(this.month, 2));\r\n outputArray.push(pvutils.padNumber(this.day, 2));\r\n outputArray.push(pvutils.padNumber(this.hour, 2));\r\n outputArray.push(pvutils.padNumber(this.minute, 2));\r\n outputArray.push(pvutils.padNumber(this.second, 2));\r\n if (this.millisecond !== 0) {\r\n outputArray.push(\".\");\r\n outputArray.push(pvutils.padNumber(this.millisecond, 3));\r\n }\r\n outputArray.push(\"Z\");\r\n return outputArray.join(\"\");\r\n }\r\n return super.toString(encoding);\r\n }\r\n toJSON() {\r\n return {\r\n ...super.toJSON(),\r\n millisecond: this.millisecond,\r\n };\r\n }\r\n}\r\n_a$5 = GeneralizedTime;\r\n(() => {\r\n typeStore.GeneralizedTime = _a$5;\r\n})();\r\nGeneralizedTime.NAME = \"GeneralizedTime\";\n\nvar _a$4;\r\nclass DATE extends Utf8String {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 31;\r\n }\r\n}\r\n_a$4 = DATE;\r\n(() => {\r\n typeStore.DATE = _a$4;\r\n})();\r\nDATE.NAME = \"DATE\";\n\nvar _a$3;\r\nclass TimeOfDay extends Utf8String {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 32;\r\n }\r\n}\r\n_a$3 = TimeOfDay;\r\n(() => {\r\n typeStore.TimeOfDay = _a$3;\r\n})();\r\nTimeOfDay.NAME = \"TimeOfDay\";\n\nvar _a$2;\r\nclass DateTime extends Utf8String {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 33;\r\n }\r\n}\r\n_a$2 = DateTime;\r\n(() => {\r\n typeStore.DateTime = _a$2;\r\n})();\r\nDateTime.NAME = \"DateTime\";\n\nvar _a$1;\r\nclass Duration extends Utf8String {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 34;\r\n }\r\n}\r\n_a$1 = Duration;\r\n(() => {\r\n typeStore.Duration = _a$1;\r\n})();\r\nDuration.NAME = \"Duration\";\n\nvar _a;\r\nclass TIME extends Utf8String {\r\n constructor(parameters = {}) {\r\n super(parameters);\r\n this.idBlock.tagClass = 1;\r\n this.idBlock.tagNumber = 14;\r\n }\r\n}\r\n_a = TIME;\r\n(() => {\r\n typeStore.TIME = _a;\r\n})();\r\nTIME.NAME = \"TIME\";\n\nclass Any {\r\n constructor({ name = EMPTY_STRING, optional = false, } = {}) {\r\n this.name = name;\r\n this.optional = optional;\r\n }\r\n}\n\nclass Choice extends Any {\r\n constructor({ value = [], ...parameters } = {}) {\r\n super(parameters);\r\n this.value = value;\r\n }\r\n}\n\nclass Repeated extends Any {\r\n constructor({ value = new Any(), local = false, ...parameters } = {}) {\r\n super(parameters);\r\n this.value = value;\r\n this.local = local;\r\n }\r\n}\n\nclass RawData {\r\n constructor({ data = EMPTY_VIEW } = {}) {\r\n this.dataView = pvtsutils.BufferSourceConverter.toUint8Array(data);\r\n }\r\n get data() {\r\n return this.dataView.slice().buffer;\r\n }\r\n set data(value) {\r\n this.dataView = pvtsutils.BufferSourceConverter.toUint8Array(value);\r\n }\r\n fromBER(inputBuffer, inputOffset, inputLength) {\r\n const endLength = inputOffset + inputLength;\r\n this.dataView = pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer).subarray(inputOffset, endLength);\r\n return endLength;\r\n }\r\n toBER(sizeOnly) {\r\n return this.dataView.slice().buffer;\r\n }\r\n}\n\nfunction compareSchema(root, inputData, inputSchema) {\r\n if (inputSchema instanceof Choice) {\r\n for (let j = 0; j < inputSchema.value.length; j++) {\r\n const result = compareSchema(root, inputData, inputSchema.value[j]);\r\n if (result.verified) {\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n }\r\n }\r\n {\r\n const _result = {\r\n verified: false,\r\n result: {\r\n error: \"Wrong values for Choice type\"\r\n },\r\n };\r\n if (inputSchema.hasOwnProperty(NAME))\r\n _result.name = inputSchema.name;\r\n return _result;\r\n }\r\n }\r\n if (inputSchema instanceof Any) {\r\n if (inputSchema.hasOwnProperty(NAME))\r\n root[inputSchema.name] = inputData;\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n }\r\n if ((root instanceof Object) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong root object\" }\r\n };\r\n }\r\n if ((inputData instanceof Object) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 data\" }\r\n };\r\n }\r\n if ((inputSchema instanceof Object) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if ((ID_BLOCK in inputSchema) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if ((FROM_BER in inputSchema.idBlock) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if ((TO_BER in inputSchema.idBlock) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n const encodedId = inputSchema.idBlock.toBER(false);\r\n if (encodedId.byteLength === 0) {\r\n return {\r\n verified: false,\r\n result: { error: \"Error encoding idBlock for ASN.1 schema\" }\r\n };\r\n }\r\n const decodedOffset = inputSchema.idBlock.fromBER(encodedId, 0, encodedId.byteLength);\r\n if (decodedOffset === -1) {\r\n return {\r\n verified: false,\r\n result: { error: \"Error decoding idBlock for ASN.1 schema\" }\r\n };\r\n }\r\n if (inputSchema.idBlock.hasOwnProperty(TAG_CLASS) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if (inputSchema.idBlock.tagClass !== inputData.idBlock.tagClass) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n if (inputSchema.idBlock.hasOwnProperty(TAG_NUMBER) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if (inputSchema.idBlock.tagNumber !== inputData.idBlock.tagNumber) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n if (inputSchema.idBlock.hasOwnProperty(IS_CONSTRUCTED) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if (inputSchema.idBlock.isConstructed !== inputData.idBlock.isConstructed) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n if (!(IS_HEX_ONLY in inputSchema.idBlock)) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n if (inputSchema.idBlock.isHexOnly !== inputData.idBlock.isHexOnly) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n if (inputSchema.idBlock.isHexOnly) {\r\n if ((VALUE_HEX_VIEW in inputSchema.idBlock) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema\" }\r\n };\r\n }\r\n const schemaView = inputSchema.idBlock.valueHexView;\r\n const asn1View = inputData.idBlock.valueHexView;\r\n if (schemaView.length !== asn1View.length) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n for (let i = 0; i < schemaView.length; i++) {\r\n if (schemaView[i] !== asn1View[1]) {\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n }\r\n }\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name)\r\n root[inputSchema.name] = inputData;\r\n }\r\n if (inputSchema instanceof typeStore.Constructed) {\r\n let admission = 0;\r\n let result = {\r\n verified: false,\r\n result: {\r\n error: \"Unknown error\",\r\n }\r\n };\r\n let maxLength = inputSchema.valueBlock.value.length;\r\n if (maxLength > 0) {\r\n if (inputSchema.valueBlock.value[0] instanceof Repeated) {\r\n maxLength = inputData.valueBlock.value.length;\r\n }\r\n }\r\n if (maxLength === 0) {\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n }\r\n if ((inputData.valueBlock.value.length === 0) &&\r\n (inputSchema.valueBlock.value.length !== 0)) {\r\n let _optional = true;\r\n for (let i = 0; i < inputSchema.valueBlock.value.length; i++)\r\n _optional = _optional && (inputSchema.valueBlock.value[i].optional || false);\r\n if (_optional) {\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n }\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name)\r\n delete root[inputSchema.name];\r\n }\r\n root.error = \"Inconsistent object length\";\r\n return {\r\n verified: false,\r\n result: root\r\n };\r\n }\r\n for (let i = 0; i < maxLength; i++) {\r\n if ((i - admission) >= inputData.valueBlock.value.length) {\r\n if (inputSchema.valueBlock.value[i].optional === false) {\r\n const _result = {\r\n verified: false,\r\n result: root\r\n };\r\n root.error = \"Inconsistent length between ASN.1 data and schema\";\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name) {\r\n delete root[inputSchema.name];\r\n _result.name = inputSchema.name;\r\n }\r\n }\r\n return _result;\r\n }\r\n }\r\n else {\r\n if (inputSchema.valueBlock.value[0] instanceof Repeated) {\r\n result = compareSchema(root, inputData.valueBlock.value[i], inputSchema.valueBlock.value[0].value);\r\n if (result.verified === false) {\r\n if (inputSchema.valueBlock.value[0].optional)\r\n admission++;\r\n else {\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name)\r\n delete root[inputSchema.name];\r\n }\r\n return result;\r\n }\r\n }\r\n if ((NAME in inputSchema.valueBlock.value[0]) && (inputSchema.valueBlock.value[0].name.length > 0)) {\r\n let arrayRoot = {};\r\n if ((LOCAL in inputSchema.valueBlock.value[0]) && (inputSchema.valueBlock.value[0].local))\r\n arrayRoot = inputData;\r\n else\r\n arrayRoot = root;\r\n if (typeof arrayRoot[inputSchema.valueBlock.value[0].name] === \"undefined\")\r\n arrayRoot[inputSchema.valueBlock.value[0].name] = [];\r\n arrayRoot[inputSchema.valueBlock.value[0].name].push(inputData.valueBlock.value[i]);\r\n }\r\n }\r\n else {\r\n result = compareSchema(root, inputData.valueBlock.value[i - admission], inputSchema.valueBlock.value[i]);\r\n if (result.verified === false) {\r\n if (inputSchema.valueBlock.value[i].optional)\r\n admission++;\r\n else {\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name)\r\n delete root[inputSchema.name];\r\n }\r\n return result;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (result.verified === false) {\r\n const _result = {\r\n verified: false,\r\n result: root\r\n };\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name) {\r\n delete root[inputSchema.name];\r\n _result.name = inputSchema.name;\r\n }\r\n }\r\n return _result;\r\n }\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n }\r\n if (inputSchema.primitiveSchema &&\r\n (VALUE_HEX_VIEW in inputData.valueBlock)) {\r\n const asn1 = localFromBER(inputData.valueBlock.valueHexView);\r\n if (asn1.offset === -1) {\r\n const _result = {\r\n verified: false,\r\n result: asn1.result\r\n };\r\n if (inputSchema.name) {\r\n inputSchema.name = inputSchema.name.replace(/^\\s+|\\s+$/g, EMPTY_STRING);\r\n if (inputSchema.name) {\r\n delete root[inputSchema.name];\r\n _result.name = inputSchema.name;\r\n }\r\n }\r\n return _result;\r\n }\r\n return compareSchema(root, asn1.result, inputSchema.primitiveSchema);\r\n }\r\n return {\r\n verified: true,\r\n result: root\r\n };\r\n}\r\nfunction verifySchema(inputBuffer, inputSchema) {\r\n if ((inputSchema instanceof Object) === false) {\r\n return {\r\n verified: false,\r\n result: { error: \"Wrong ASN.1 schema type\" }\r\n };\r\n }\r\n const asn1 = localFromBER(pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer));\r\n if (asn1.offset === -1) {\r\n return {\r\n verified: false,\r\n result: asn1.result\r\n };\r\n }\r\n return compareSchema(asn1.result, asn1.result, inputSchema);\r\n}\n\nexport { Any, BaseBlock, BaseStringBlock, BitString, BmpString, Boolean, CharacterString, Choice, Constructed, DATE, DateTime, Duration, EndOfContent, Enumerated, GeneralString, GeneralizedTime, GraphicString, HexBlock, IA5String, Integer, Null, NumericString, ObjectIdentifier, OctetString, Primitive, PrintableString, RawData, RelativeObjectIdentifier, Repeated, Sequence, Set, TIME, TeletexString, TimeOfDay, UTCTime, UniversalString, Utf8String, ValueBlock, VideotexString, ViewWriter, VisibleString, compareSchema, fromBER, verifySchema };\n","import { CodeError } from '@libp2p/interface';\nimport { pbkdf2Async } from '@noble/hashes/pbkdf2';\nimport { sha512 } from '@noble/hashes/sha512';\nimport * as asn1js from 'asn1js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport randomBytes from '../random-bytes.js';\nimport webcrypto from '../webcrypto.js';\nimport { unmarshalRsaPrivateKey } from './rsa-class.js';\n/**\n * Convert a PKCS#1 in ASN1 DER format to a JWK key\n */\nexport function pkcs1ToJwk(bytes) {\n const { result } = asn1js.fromBER(bytes);\n // @ts-expect-error this looks fragile but DER is a canonical format so we are\n // safe to have deeply property chains like this\n const values = result.valueBlock.value;\n const key = {\n n: uint8ArrayToString(bnToBuf(values[1].toBigInt()), 'base64url'),\n e: uint8ArrayToString(bnToBuf(values[2].toBigInt()), 'base64url'),\n d: uint8ArrayToString(bnToBuf(values[3].toBigInt()), 'base64url'),\n p: uint8ArrayToString(bnToBuf(values[4].toBigInt()), 'base64url'),\n q: uint8ArrayToString(bnToBuf(values[5].toBigInt()), 'base64url'),\n dp: uint8ArrayToString(bnToBuf(values[6].toBigInt()), 'base64url'),\n dq: uint8ArrayToString(bnToBuf(values[7].toBigInt()), 'base64url'),\n qi: uint8ArrayToString(bnToBuf(values[8].toBigInt()), 'base64url'),\n kty: 'RSA',\n alg: 'RS256'\n };\n return key;\n}\n/**\n * Convert a JWK key into PKCS#1 in ASN1 DER format\n */\nexport function jwkToPkcs1(jwk) {\n if (jwk.n == null || jwk.e == null || jwk.d == null || jwk.p == null || jwk.q == null || jwk.dp == null || jwk.dq == null || jwk.qi == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const root = new asn1js.Sequence({\n value: [\n new asn1js.Integer({ value: 0 }),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.n, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.e, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.d, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.p, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.q, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.dp, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.dq, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.qi, 'base64url')))\n ]\n });\n const der = root.toBER();\n return new Uint8Array(der, 0, der.byteLength);\n}\n/**\n * Convert a PKCIX in ASN1 DER format to a JWK key\n */\nexport function pkixToJwk(bytes) {\n const { result } = asn1js.fromBER(bytes);\n // @ts-expect-error this looks fragile but DER is a canonical format so we are\n // safe to have deeply property chains like this\n const values = result.valueBlock.value[1].valueBlock.value[0].valueBlock.value;\n return {\n kty: 'RSA',\n n: uint8ArrayToString(bnToBuf(values[0].toBigInt()), 'base64url'),\n e: uint8ArrayToString(bnToBuf(values[1].toBigInt()), 'base64url')\n };\n}\n/**\n * Convert a JWK key to PKCIX in ASN1 DER format\n */\nexport function jwkToPkix(jwk) {\n if (jwk.n == null || jwk.e == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const root = new asn1js.Sequence({\n value: [\n new asn1js.Sequence({\n value: [\n // rsaEncryption\n new asn1js.ObjectIdentifier({\n value: '1.2.840.113549.1.1.1'\n }),\n new asn1js.Null()\n ]\n }),\n // this appears to be a bug in asn1js.js - this should really be a Sequence\n // and not a BitString but it generates the same bytes as node-forge so 🤷‍♂️\n new asn1js.BitString({\n valueHex: new asn1js.Sequence({\n value: [\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.n, 'base64url'))),\n asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.e, 'base64url')))\n ]\n }).toBER()\n })\n ]\n });\n const der = root.toBER();\n return new Uint8Array(der, 0, der.byteLength);\n}\nfunction bnToBuf(bn) {\n let hex = bn.toString(16);\n if (hex.length % 2 > 0) {\n hex = `0${hex}`;\n }\n const len = hex.length / 2;\n const u8 = new Uint8Array(len);\n let i = 0;\n let j = 0;\n while (i < len) {\n u8[i] = parseInt(hex.slice(j, j + 2), 16);\n i += 1;\n j += 2;\n }\n return u8;\n}\nfunction bufToBn(u8) {\n const hex = [];\n u8.forEach(function (i) {\n let h = i.toString(16);\n if (h.length % 2 > 0) {\n h = `0${h}`;\n }\n hex.push(h);\n });\n return BigInt('0x' + hex.join(''));\n}\nconst SALT_LENGTH = 16;\nconst KEY_SIZE = 32;\nconst ITERATIONS = 10000;\nexport async function exportToPem(privateKey, password) {\n const crypto = webcrypto.get();\n // PrivateKeyInfo\n const keyWrapper = new asn1js.Sequence({\n value: [\n // version (0)\n new asn1js.Integer({ value: 0 }),\n // privateKeyAlgorithm\n new asn1js.Sequence({\n value: [\n // rsaEncryption OID\n new asn1js.ObjectIdentifier({\n value: '1.2.840.113549.1.1.1'\n }),\n new asn1js.Null()\n ]\n }),\n // PrivateKey\n new asn1js.OctetString({\n valueHex: privateKey.marshal()\n })\n ]\n });\n const keyBuf = keyWrapper.toBER();\n const keyArr = new Uint8Array(keyBuf, 0, keyBuf.byteLength);\n const salt = randomBytes(SALT_LENGTH);\n const encryptionKey = await pbkdf2Async(sha512, password, salt, {\n c: ITERATIONS,\n dkLen: KEY_SIZE\n });\n const iv = randomBytes(16);\n const cryptoKey = await crypto.subtle.importKey('raw', encryptionKey, 'AES-CBC', false, ['encrypt']);\n const encrypted = await crypto.subtle.encrypt({\n name: 'AES-CBC',\n iv\n }, cryptoKey, keyArr);\n const pbkdf2Params = new asn1js.Sequence({\n value: [\n // salt\n new asn1js.OctetString({ valueHex: salt }),\n // iteration count\n new asn1js.Integer({ value: ITERATIONS }),\n // key length\n new asn1js.Integer({ value: KEY_SIZE }),\n // AlgorithmIdentifier\n new asn1js.Sequence({\n value: [\n // hmacWithSHA512\n new asn1js.ObjectIdentifier({ value: '1.2.840.113549.2.11' }),\n new asn1js.Null()\n ]\n })\n ]\n });\n const encryptionAlgorithm = new asn1js.Sequence({\n value: [\n // pkcs5PBES2\n new asn1js.ObjectIdentifier({\n value: '1.2.840.113549.1.5.13'\n }),\n new asn1js.Sequence({\n value: [\n // keyDerivationFunc\n new asn1js.Sequence({\n value: [\n // pkcs5PBKDF2\n new asn1js.ObjectIdentifier({\n value: '1.2.840.113549.1.5.12'\n }),\n // PBKDF2-params\n pbkdf2Params\n ]\n }),\n // encryptionScheme\n new asn1js.Sequence({\n value: [\n // aes256-CBC\n new asn1js.ObjectIdentifier({\n value: '2.16.840.1.101.3.4.1.42'\n }),\n // iv\n new asn1js.OctetString({\n valueHex: iv\n })\n ]\n })\n ]\n })\n ]\n });\n const finalWrapper = new asn1js.Sequence({\n value: [\n encryptionAlgorithm,\n new asn1js.OctetString({ valueHex: encrypted })\n ]\n });\n const finalWrapperBuf = finalWrapper.toBER();\n const finalWrapperArr = new Uint8Array(finalWrapperBuf, 0, finalWrapperBuf.byteLength);\n return [\n '-----BEGIN ENCRYPTED PRIVATE KEY-----',\n ...uint8ArrayToString(finalWrapperArr, 'base64pad').split(/(.{64})/).filter(Boolean),\n '-----END ENCRYPTED PRIVATE KEY-----'\n ].join('\\n');\n}\nexport async function importFromPem(pem, password) {\n const crypto = webcrypto.get();\n let plaintext;\n if (pem.includes('-----BEGIN ENCRYPTED PRIVATE KEY-----')) {\n const key = uint8ArrayFromString(pem\n .replace('-----BEGIN ENCRYPTED PRIVATE KEY-----', '')\n .replace('-----END ENCRYPTED PRIVATE KEY-----', '')\n .replace(/\\n/g, '')\n .trim(), 'base64pad');\n const { result } = asn1js.fromBER(key);\n const { iv, salt, iterations, keySize, cipherText } = findEncryptedPEMData(result);\n const encryptionKey = await pbkdf2Async(sha512, password, salt, {\n c: iterations,\n dkLen: keySize\n });\n const cryptoKey = await crypto.subtle.importKey('raw', encryptionKey, 'AES-CBC', false, ['decrypt']);\n const decrypted = toUint8Array(await crypto.subtle.decrypt({\n name: 'AES-CBC',\n iv\n }, cryptoKey, cipherText));\n const { result: decryptedResult } = asn1js.fromBER(decrypted);\n plaintext = findPEMData(decryptedResult);\n }\n else if (pem.includes('-----BEGIN PRIVATE KEY-----')) {\n const key = uint8ArrayFromString(pem\n .replace('-----BEGIN PRIVATE KEY-----', '')\n .replace('-----END PRIVATE KEY-----', '')\n .replace(/\\n/g, '')\n .trim(), 'base64pad');\n const { result } = asn1js.fromBER(key);\n plaintext = findPEMData(result);\n }\n else {\n throw new CodeError('Could not parse private key from PEM data', 'ERR_INVALID_PARAMETERS');\n }\n return unmarshalRsaPrivateKey(plaintext);\n}\nfunction findEncryptedPEMData(root) {\n const encryptionAlgorithm = root.valueBlock.value[0];\n const scheme = encryptionAlgorithm.valueBlock.value[0].toString();\n if (scheme !== 'OBJECT IDENTIFIER : 1.2.840.113549.1.5.13') {\n throw new CodeError('Only pkcs5PBES2 encrypted private keys are supported', 'ERR_INVALID_PARAMS');\n }\n const keyDerivationFunc = encryptionAlgorithm.valueBlock.value[1].valueBlock.value[0];\n const keyDerivationFuncName = keyDerivationFunc.valueBlock.value[0].toString();\n if (keyDerivationFuncName !== 'OBJECT IDENTIFIER : 1.2.840.113549.1.5.12') {\n throw new CodeError('Only pkcs5PBKDF2 key derivation functions are supported', 'ERR_INVALID_PARAMS');\n }\n const pbkdf2Params = keyDerivationFunc.valueBlock.value[1];\n const salt = toUint8Array(pbkdf2Params.valueBlock.value[0].getValue());\n let iterations = ITERATIONS;\n let keySize = KEY_SIZE;\n if (pbkdf2Params.valueBlock.value.length === 3) {\n iterations = Number(pbkdf2Params.valueBlock.value[1].toBigInt());\n keySize = Number((pbkdf2Params.valueBlock.value[2]).toBigInt());\n }\n else if (pbkdf2Params.valueBlock.value.length === 2) {\n throw new CodeError('Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key', 'ERR_INVALID_PARAMS');\n }\n const encryptionScheme = encryptionAlgorithm.valueBlock.value[1].valueBlock.value[1];\n const encryptionSchemeName = encryptionScheme.valueBlock.value[0].toString();\n if (encryptionSchemeName === 'OBJECT IDENTIFIER : 1.2.840.113549.3.7') {\n // des-EDE3-CBC\n }\n else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 1.3.14.3.2.7') {\n // des-CBC\n }\n else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2') {\n // aes128-CBC\n }\n else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22') {\n // aes192-CBC\n }\n else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42') {\n // aes256-CBC\n }\n else {\n throw new CodeError('Only AES-CBC encryption schemes are supported', 'ERR_INVALID_PARAMS');\n }\n const iv = toUint8Array(encryptionScheme.valueBlock.value[1].getValue());\n return {\n cipherText: toUint8Array(root.valueBlock.value[1].getValue()),\n salt,\n iterations,\n keySize,\n iv\n };\n}\nfunction findPEMData(seq) {\n return toUint8Array(seq.valueBlock.value[2].getValue());\n}\nfunction toUint8Array(buf) {\n return new Uint8Array(buf, 0, buf.byteLength);\n}\n//# sourceMappingURL=rsa-utils.js.map","import { CodeError } from '@libp2p/interface';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport randomBytes from '../random-bytes.js';\nimport webcrypto from '../webcrypto.js';\nimport * as utils from './rsa-utils.js';\nexport { utils };\nexport async function generateKey(bits) {\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: 'SHA-256' }\n }, true, ['sign', 'verify']);\n const keys = await exportKey(pair);\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\n// Takes a jwk key\nexport async function unmarshalPrivateKey(key) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['sign']);\n const pair = [\n privateKey,\n await derivePublicFromPrivate(key)\n ];\n const keys = await exportKey({\n privateKey: pair[0],\n publicKey: pair[1]\n });\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\nexport { randomBytes as getRandomValues };\nexport async function hashAndSign(key, msg) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['sign']);\n const sig = await webcrypto.get().subtle.sign({ name: 'RSASSA-PKCS1-v1_5' }, privateKey, msg instanceof Uint8Array ? msg : msg.subarray());\n return new Uint8Array(sig, 0, sig.byteLength);\n}\nexport async function hashAndVerify(key, sig, msg) {\n const publicKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['verify']);\n return webcrypto.get().subtle.verify({ name: 'RSASSA-PKCS1-v1_5' }, publicKey, sig, msg instanceof Uint8Array ? msg : msg.subarray());\n}\nasync function exportKey(pair) {\n if (pair.privateKey == null || pair.publicKey == null) {\n throw new CodeError('Private and public key are required', 'ERR_INVALID_PARAMETERS');\n }\n return Promise.all([\n webcrypto.get().subtle.exportKey('jwk', pair.privateKey),\n webcrypto.get().subtle.exportKey('jwk', pair.publicKey)\n ]);\n}\nasync function derivePublicFromPrivate(jwKey) {\n return webcrypto.get().subtle.importKey('jwk', {\n kty: jwKey.kty,\n n: jwKey.n,\n e: jwKey.e\n }, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['verify']);\n}\nexport function keySize(jwk) {\n if (jwk.kty !== 'RSA') {\n throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE');\n }\n else if (jwk.n == null) {\n throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS');\n }\n const bytes = uint8ArrayFromString(jwk.n, 'base64url');\n return bytes.length * 8;\n}\n//# sourceMappingURL=rsa-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nimport * as crypto from './rsa.js';\nexport const MAX_RSA_KEY_SIZE = 8192;\nexport class RsaPublicKey {\n _key;\n constructor(key) {\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.utils.jwkToPkix(this._key);\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class RsaPrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey;\n }\n genSecret() {\n return crypto.getRandomValues(16);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n if (this._publicKey == null) {\n throw new CodeError('public key not provided', 'ERR_PUBKEY_NOT_PROVIDED');\n }\n return new RsaPublicKey(this._publicKey);\n }\n marshal() {\n return crypto.utils.jwkToPkcs1(this._key);\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key as libp2p-key - a aes-gcm encrypted value with the key\n * derived from the password.\n *\n * To export it as a password protected PEM file, please use the `exportPEM`\n * function from `@libp2p/rsa`.\n */\n async export(password, format = 'pkcs-8') {\n if (format === 'pkcs-8') {\n return crypto.utils.exportToPem(this, password);\n }\n else if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport async function unmarshalRsaPrivateKey(bytes) {\n const jwk = crypto.utils.pkcs1ToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_RSA_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport function unmarshalRsaPublicKey(bytes) {\n const jwk = crypto.utils.pkixToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_RSA_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n return new RsaPublicKey(jwk);\n}\nexport async function fromJwk(jwk) {\n if (crypto.keySize(jwk) > MAX_RSA_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport async function generateKeyPair(bits) {\n if (bits > MAX_RSA_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.generateKey(bits);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\n//# sourceMappingURL=rsa-class.js.map","import { CodeError } from '@libp2p/interface';\nimport { secp256k1 as secp } from '@noble/curves/secp256k1';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { isPromise } from '../util.js';\nconst PRIVATE_KEY_BYTE_LENGTH = 32;\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n return secp.utils.randomPrivateKey();\n}\n/**\n * Hash and sign message with private key\n */\nexport function hashAndSign(key, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.sign(digest, key).toDERRawBytes())\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.sign(p.digest, key).toDERRawBytes();\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\n/**\n * Hash message and verify signature with public key\n */\nexport function hashAndVerify(key, sig, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.verify(sig, digest, key))\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.verify(sig, p.digest, key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\nexport function compressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(true);\n return point;\n}\nexport function decompressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(false);\n return point;\n}\nexport function validatePrivateKey(key) {\n try {\n secp.getPublicKey(key, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\nexport function validatePublicKey(key) {\n try {\n secp.ProjectivePoint.fromHex(key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PUBLIC_KEY');\n }\n}\nexport function computePublicKey(privateKey) {\n try {\n return secp.getPublicKey(privateKey, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\n//# sourceMappingURL=secp256k1-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as keysProtobuf from './keys.js';\nimport * as crypto from './secp256k1.js';\nexport class Secp256k1PublicKey {\n _key;\n constructor(key) {\n crypto.validatePublicKey(key);\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.compressPublicKey(this._key);\n }\n get bytes() {\n return keysProtobuf.PublicKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n}\nexport class Secp256k1PrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey ?? crypto.computePublicKey(key);\n crypto.validatePrivateKey(this._key);\n crypto.validatePublicKey(this._publicKey);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Secp256k1PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return keysProtobuf.PrivateKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalSecp256k1PrivateKey(bytes) {\n return new Secp256k1PrivateKey(bytes);\n}\nexport function unmarshalSecp256k1PublicKey(bytes) {\n return new Secp256k1PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const privateKeyBytes = crypto.generateKey();\n return new Secp256k1PrivateKey(privateKeyBytes);\n}\n//# sourceMappingURL=secp256k1-class.js.map","/**\n * @packageDocumentation\n *\n * **Supported Key Types**\n *\n * The {@link generateKeyPair}, {@link marshalPublicKey}, and {@link marshalPrivateKey} functions accept a string `type` argument.\n *\n * Currently the `'RSA'`, `'ed25519'`, and `secp256k1` types are supported, although ed25519 and secp256k1 keys support only signing and verification of messages.\n *\n * For encryption / decryption support, RSA keys should be used.\n */\nimport { CodeError } from '@libp2p/interface';\nimport * as Ed25519 from './ed25519-class.js';\nimport generateEphemeralKeyPair from './ephemeral-keys.js';\nimport { importer } from './importer.js';\nimport { keyStretcher } from './key-stretcher.js';\nimport * as keysPBM from './keys.js';\nimport * as RSA from './rsa-class.js';\nimport { importFromPem } from './rsa-utils.js';\nimport * as Secp256k1 from './secp256k1-class.js';\nexport { keyStretcher };\nexport { generateEphemeralKeyPair };\nexport { keysPBM };\nexport { RsaPrivateKey, RsaPublicKey, MAX_RSA_KEY_SIZE } from './rsa-class.js';\nexport { Ed25519PrivateKey, Ed25519PublicKey } from './ed25519-class.js';\nexport { Secp256k1PrivateKey, Secp256k1PublicKey } from './secp256k1-class.js';\nexport const supportedKeys = {\n rsa: RSA,\n ed25519: Ed25519,\n secp256k1: Secp256k1\n};\nfunction unsupportedKey(type) {\n const supported = Object.keys(supportedKeys).join(' / ');\n return new CodeError(`invalid or unsupported key type ${type}. Must be ${supported}`, 'ERR_UNSUPPORTED_KEY_TYPE');\n}\nfunction typeToKey(type) {\n type = type.toLowerCase();\n if (type === 'rsa' || type === 'ed25519' || type === 'secp256k1') {\n return supportedKeys[type];\n }\n throw unsupportedKey(type);\n}\n/**\n * Generates a keypair of the given type and bitsize\n */\nexport async function generateKeyPair(type, bits) {\n return typeToKey(type).generateKeyPair(bits ?? 2048);\n}\n/**\n * Generates a keypair of the given type and bitsize.\n *\n * Seed is a 32 byte uint8array\n */\nexport async function generateKeyPairFromSeed(type, seed, bits) {\n if (type.toLowerCase() !== 'ed25519') {\n throw new CodeError('Seed key derivation is unimplemented for RSA or secp256k1', 'ERR_UNSUPPORTED_KEY_DERIVATION_TYPE');\n }\n return Ed25519.generateKeyPairFromSeed(seed);\n}\n/**\n * Converts a protobuf serialized public key into its representative object\n */\nexport function unmarshalPublicKey(buf) {\n const decoded = keysPBM.PublicKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPublicKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PublicKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PublicKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'unknown');\n }\n}\n/**\n * Converts a public key object into a protobuf serialized public key\n */\nexport function marshalPublicKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts a protobuf serialized private key into its representative object\n */\nexport async function unmarshalPrivateKey(buf) {\n const decoded = keysPBM.PrivateKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPrivateKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PrivateKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'RSA');\n }\n}\n/**\n * Converts a private key object into a protobuf serialized private key\n */\nexport function marshalPrivateKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts an exported private key into its representative object.\n *\n * Supported formats are 'pem' (RSA only) and 'libp2p-key'.\n */\nexport async function importKey(encryptedKey, password) {\n try {\n const key = await importer(encryptedKey, password);\n return await unmarshalPrivateKey(key);\n }\n catch (_) {\n // Ignore and try the old pem decrypt\n }\n if (!encryptedKey.includes('BEGIN')) {\n throw new CodeError('Encrypted key was not a libp2p-key or a PEM file', 'ERR_INVALID_IMPORT_FORMAT');\n }\n return importFromPem(encryptedKey, password);\n}\n//# sourceMappingURL=index.js.map","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotl, wrapConstructor } from './utils.js';\n// SHA1 (RFC 3174). It was cryptographically broken: prefer newer algorithms.\n// Initial state\nconst SHA1_IV = /* @__PURE__ */ new Uint32Array([\n 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA1_W = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA1 extends HashMD {\n constructor() {\n super(64, 20, 8, false);\n this.A = SHA1_IV[0] | 0;\n this.B = SHA1_IV[1] | 0;\n this.C = SHA1_IV[2] | 0;\n this.D = SHA1_IV[3] | 0;\n this.E = SHA1_IV[4] | 0;\n }\n get() {\n const { A, B, C, D, E } = this;\n return [A, B, C, D, E];\n }\n set(A, B, C, D, E) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n SHA1_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 80; i++)\n SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);\n // Compression function main loop, 80 rounds\n let { A, B, C, D, E } = this;\n for (let i = 0; i < 80; i++) {\n let F, K;\n if (i < 20) {\n F = Chi(B, C, D);\n K = 0x5a827999;\n }\n else if (i < 40) {\n F = B ^ C ^ D;\n K = 0x6ed9eba1;\n }\n else if (i < 60) {\n F = Maj(B, C, D);\n K = 0x8f1bbcdc;\n }\n else {\n F = B ^ C ^ D;\n K = 0xca62c1d6;\n }\n const T = (rotl(A, 5) + F + E + K + SHA1_W[i]) | 0;\n E = D;\n D = C;\n C = rotl(B, 30);\n B = A;\n A = T;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n this.set(A, B, C, D, E);\n }\n roundClean() {\n SHA1_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * SHA1 (RFC 3174) hash function.\n * It was cryptographically broken: prefer newer algorithms.\n * @param message - data that would be hashed\n */\nexport const sha1 = /* @__PURE__ */ wrapConstructor(() => new SHA1());\n//# sourceMappingURL=sha1.js.map","import { CodeError } from '@libp2p/interface';\nimport { pbkdf2 as pbkdf2Sync } from '@noble/hashes/pbkdf2';\nimport { sha1 } from '@noble/hashes/sha1';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { sha512 } from '@noble/hashes/sha512';\nimport { base64 } from 'multiformats/bases/base64';\n/**\n * Maps an IPFS hash name to its @noble/hashes equivalent.\n *\n * See https://github.com/multiformats/multihash/blob/master/hashtable.csv\n *\n * @private\n */\nconst hashName = {\n sha1,\n 'sha2-256': sha256,\n 'sha2-512': sha512\n};\n/**\n * Computes the Password-Based Key Derivation Function 2.\n */\nexport default function pbkdf2(password, salt, iterations, keySize, hash) {\n if (hash !== 'sha1' && hash !== 'sha2-256' && hash !== 'sha2-512') {\n const types = Object.keys(hashName).join(' / ');\n throw new CodeError(`Hash '${hash}' is unknown or not supported. Must be ${types}`, 'ERR_UNSUPPORTED_HASH_TYPE');\n }\n const hasher = hashName[hash];\n const dek = pbkdf2Sync(hasher, password, salt, {\n c: iterations,\n dkLen: keySize\n });\n return base64.encode(dek).substring(1);\n}\n//# sourceMappingURL=pbkdf2.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { marshalPublicKey, unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { StrictSign, StrictNoSign } from '@libp2p/interface';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { RPC } from '../message/rpc.js';\nimport { PublishConfigType, ValidateError } from '../types.js';\nexport const SignPrefix = uint8ArrayFromString('libp2p-pubsub:');\nexport async function buildRawMessage(publishConfig, topic, originalData, transformedData) {\n switch (publishConfig.type) {\n case PublishConfigType.Signing: {\n const rpcMsg = {\n from: publishConfig.author.toBytes(),\n data: transformedData,\n seqno: randomBytes(8),\n topic,\n signature: undefined, // Exclude signature field for signing\n key: undefined // Exclude key field for signing\n };\n // Get the message in bytes, and prepend with the pubsub prefix\n // the signature is over the bytes \"libp2p-pubsub:\"\n const bytes = uint8ArrayConcat([SignPrefix, RPC.Message.encode(rpcMsg).finish()]);\n rpcMsg.signature = await publishConfig.privateKey.sign(bytes);\n rpcMsg.key = publishConfig.key;\n const msg = {\n type: 'signed',\n from: publishConfig.author,\n data: originalData,\n sequenceNumber: BigInt(`0x${uint8ArrayToString(rpcMsg.seqno, 'base16')}`),\n topic,\n signature: rpcMsg.signature,\n key: rpcMsg.key\n };\n return {\n raw: rpcMsg,\n msg\n };\n }\n case PublishConfigType.Anonymous: {\n return {\n raw: {\n from: undefined,\n data: transformedData,\n seqno: undefined,\n topic,\n signature: undefined,\n key: undefined\n },\n msg: {\n type: 'unsigned',\n data: originalData,\n topic\n }\n };\n }\n default:\n throw new Error('Unreachable');\n }\n}\nexport async function validateToRawMessage(signaturePolicy, msg) {\n // If strict-sign, verify all\n // If anonymous (no-sign), ensure no preven\n switch (signaturePolicy) {\n case StrictNoSign:\n if (msg.signature != null)\n return { valid: false, error: ValidateError.SignaturePresent };\n if (msg.seqno != null)\n return { valid: false, error: ValidateError.SeqnoPresent };\n if (msg.key != null)\n return { valid: false, error: ValidateError.FromPresent };\n return { valid: true, message: { type: 'unsigned', topic: msg.topic, data: msg.data ?? new Uint8Array(0) } };\n case StrictSign: {\n // Verify seqno\n if (msg.seqno == null)\n return { valid: false, error: ValidateError.InvalidSeqno };\n if (msg.seqno.length !== 8) {\n return { valid: false, error: ValidateError.InvalidSeqno };\n }\n if (msg.signature == null)\n return { valid: false, error: ValidateError.InvalidSignature };\n if (msg.from == null)\n return { valid: false, error: ValidateError.InvalidPeerId };\n let fromPeerId;\n try {\n // TODO: Fix PeerId types\n fromPeerId = peerIdFromBytes(msg.from);\n }\n catch (e) {\n return { valid: false, error: ValidateError.InvalidPeerId };\n }\n // - check from defined\n // - transform source to PeerId\n // - parse signature\n // - get .key, else from source\n // - check key == source if present\n // - verify sig\n let publicKey;\n if (msg.key != null) {\n publicKey = unmarshalPublicKey(msg.key);\n // TODO: Should `fromPeerId.pubKey` be optional?\n if (fromPeerId.publicKey !== undefined && !uint8ArrayEquals(publicKey.bytes, fromPeerId.publicKey)) {\n return { valid: false, error: ValidateError.InvalidPeerId };\n }\n }\n else {\n if (fromPeerId.publicKey == null) {\n return { valid: false, error: ValidateError.InvalidPeerId };\n }\n publicKey = unmarshalPublicKey(fromPeerId.publicKey);\n }\n const rpcMsgPreSign = {\n from: msg.from,\n data: msg.data,\n seqno: msg.seqno,\n topic: msg.topic,\n signature: undefined, // Exclude signature field for signing\n key: undefined // Exclude key field for signing\n };\n // Get the message in bytes, and prepend with the pubsub prefix\n // the signature is over the bytes \"libp2p-pubsub:\"\n const bytes = uint8ArrayConcat([SignPrefix, RPC.Message.encode(rpcMsgPreSign).finish()]);\n if (!(await publicKey.verify(bytes, msg.signature))) {\n return { valid: false, error: ValidateError.InvalidSignature };\n }\n return {\n valid: true,\n message: {\n type: 'signed',\n from: fromPeerId,\n data: msg.data ?? new Uint8Array(0),\n sequenceNumber: BigInt(`0x${uint8ArrayToString(msg.seqno, 'base16')}`),\n topic: msg.topic,\n signature: msg.signature,\n key: msg.key ?? marshalPublicKey(publicKey)\n }\n };\n }\n default:\n throw new Error('Unreachable');\n }\n}\n//# sourceMappingURL=buildRawMessage.js.map","/**\n * Pseudo-randomly shuffles an array\n *\n * Mutates the input array\n */\nexport function shuffle(arr) {\n if (arr.length <= 1) {\n return arr;\n }\n const randInt = () => {\n return Math.floor(Math.random() * Math.floor(arr.length));\n };\n for (let i = 0; i < arr.length; i++) {\n const j = randInt();\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n }\n return arr;\n}\n//# sourceMappingURL=shuffle.js.map","import { toString } from 'uint8arrays/to-string';\n/**\n * Browser friendly function to convert Uint8Array message id to base64 string.\n */\nexport function messageIdToString(msgId) {\n return toString(msgId, 'base64');\n}\n//# sourceMappingURL=messageIdToString.js.map","import { unmarshalPrivateKey } from '@libp2p/crypto/keys';\nimport { StrictSign, StrictNoSign } from '@libp2p/interface';\nimport { PublishConfigType } from '../types.js';\n/**\n * Prepare a PublishConfig object from a PeerId.\n */\nexport async function getPublishConfigFromPeerId(signaturePolicy, peerId) {\n switch (signaturePolicy) {\n case StrictSign: {\n if (peerId == null) {\n throw Error('Must provide PeerId');\n }\n if (peerId.privateKey == null) {\n throw Error('Cannot sign message, no private key present');\n }\n if (peerId.publicKey == null) {\n throw Error('Cannot sign message, no public key present');\n }\n // Transform privateKey once at initialization time instead of once per message\n const privateKey = await unmarshalPrivateKey(peerId.privateKey);\n return {\n type: PublishConfigType.Signing,\n author: peerId,\n key: peerId.publicKey,\n privateKey\n };\n }\n case StrictNoSign:\n return {\n type: PublishConfigType.Anonymous\n };\n default:\n throw new Error(`Unknown signature policy \"${signaturePolicy}\"`);\n }\n}\n//# sourceMappingURL=publishConfig.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { CodeError } from '@libp2p/interface';\nimport { peerIdFromBytes, peerIdFromKeys } from '@libp2p/peer-id';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { codes } from './errors.js';\n/**\n * Generate a random sequence number\n */\nexport function randomSeqno() {\n return BigInt(`0x${uint8ArrayToString(randomBytes(8), 'base16')}`);\n}\n/**\n * Generate a message id, based on the `key` and `seqno`\n */\nexport const msgId = (key, seqno) => {\n const seqnoBytes = uint8ArrayFromString(seqno.toString(16).padStart(16, '0'), 'base16');\n const msgId = new Uint8Array(key.length + seqnoBytes.length);\n msgId.set(key, 0);\n msgId.set(seqnoBytes, key.length);\n return msgId;\n};\n/**\n * Generate a message id, based on message `data`\n */\nexport const noSignMsgId = (data) => {\n return sha256.encode(data);\n};\n/**\n * Check if any member of the first set is also a member\n * of the second set\n */\nexport const anyMatch = (a, b) => {\n let bHas;\n if (Array.isArray(b)) {\n bHas = (val) => b.includes(val);\n }\n else {\n bHas = (val) => b.has(val);\n }\n for (const val of a) {\n if (bHas(val)) {\n return true;\n }\n }\n return false;\n};\n/**\n * Make everything an array\n */\nexport const ensureArray = function (maybeArray) {\n if (!Array.isArray(maybeArray)) {\n return [maybeArray];\n }\n return maybeArray;\n};\nconst isSigned = async (message) => {\n if ((message.sequenceNumber == null) || (message.from == null) || (message.signature == null)) {\n return false;\n }\n // if a public key is present in the `from` field, the message should be signed\n const fromID = peerIdFromBytes(message.from);\n if (fromID.publicKey != null) {\n return true;\n }\n if (message.key != null) {\n const signingID = await peerIdFromKeys(message.key);\n return signingID.equals(fromID);\n }\n return false;\n};\nexport const toMessage = async (message) => {\n if (message.from == null) {\n throw new CodeError('RPC message was missing from', codes.ERR_MISSING_FROM);\n }\n if (!await isSigned(message)) {\n return {\n type: 'unsigned',\n topic: message.topic ?? '',\n data: message.data ?? new Uint8Array(0)\n };\n }\n const from = peerIdFromBytes(message.from);\n const msg = {\n type: 'signed',\n from: peerIdFromBytes(message.from),\n topic: message.topic ?? '',\n sequenceNumber: bigIntFromBytes(message.sequenceNumber ?? new Uint8Array(0)),\n data: message.data ?? new Uint8Array(0),\n signature: message.signature ?? new Uint8Array(0),\n key: message.key ?? from.publicKey ?? new Uint8Array(0)\n };\n if (msg.key.length === 0) {\n throw new CodeError('Signed RPC message was missing key', codes.ERR_MISSING_KEY);\n }\n return msg;\n};\nexport const toRpcMessage = (message) => {\n if (message.type === 'signed') {\n return {\n from: message.from.multihash.bytes,\n data: message.data,\n sequenceNumber: bigIntToBytes(message.sequenceNumber),\n topic: message.topic,\n signature: message.signature,\n key: message.key\n };\n }\n return {\n data: message.data,\n topic: message.topic\n };\n};\nexport const bigIntToBytes = (num) => {\n let str = num.toString(16);\n if (str.length % 2 !== 0) {\n str = `0${str}`;\n }\n return uint8ArrayFromString(str, 'base16');\n};\nexport const bigIntFromBytes = (num) => {\n return BigInt(`0x${uint8ArrayToString(num, 'base16')}`);\n};\n//# sourceMappingURL=utils.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","import { msgId } from '@libp2p/pubsub/utils';\nimport { sha256 } from 'multiformats/hashes/sha2';\n/**\n * Generate a message id, based on the `key` and `seqno`\n */\nexport function msgIdFnStrictSign(msg) {\n if (msg.type !== 'signed') {\n throw new Error('expected signed message type');\n }\n // Should never happen\n if (msg.sequenceNumber == null)\n throw Error('missing seqno field');\n // TODO: Should use .from here or key?\n return msgId(msg.from.toBytes(), msg.sequenceNumber);\n}\n/**\n * Generate a message id, based on message `data`\n */\nexport async function msgIdFnStrictNoSign(msg) {\n return sha256.encode(msg.data);\n}\n//# sourceMappingURL=msgIdFn.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\nexport class Parser {\n index = 0;\n input = \"\";\n new(input) {\n this.index = 0;\n this.input = input;\n return this;\n }\n /** Run a parser, and restore the pre-parse state if it fails. */\n readAtomically(fn) {\n const index = this.index;\n const result = fn();\n if (result === undefined) {\n this.index = index;\n }\n return result;\n }\n /** Run a parser, but fail if the entire input wasn't consumed. Doesn't run atomically. */\n parseWith(fn) {\n const result = fn();\n if (this.index !== this.input.length) {\n return undefined;\n }\n return result;\n }\n /** Peek the next character from the input */\n peekChar() {\n if (this.index >= this.input.length) {\n return undefined;\n }\n return this.input[this.index];\n }\n /** Read the next character from the input */\n readChar() {\n if (this.index >= this.input.length) {\n return undefined;\n }\n return this.input[this.index++];\n }\n /** Read the next character from the input if it matches the target. */\n readGivenChar(target) {\n return this.readAtomically(() => {\n const char = this.readChar();\n if (char !== target) {\n return undefined;\n }\n return char;\n });\n }\n /**\n * Helper for reading separators in an indexed loop. Reads the separator\n * character iff index > 0, then runs the parser. When used in a loop,\n * the separator character will only be read on index > 0 (see\n * readIPv4Addr for an example)\n */\n readSeparator(sep, index, inner) {\n return this.readAtomically(() => {\n if (index > 0) {\n if (this.readGivenChar(sep) === undefined) {\n return undefined;\n }\n }\n return inner();\n });\n }\n /**\n * Read a number off the front of the input in the given radix, stopping\n * at the first non-digit character or eof. Fails if the number has more\n * digits than max_digits or if there is no number.\n */\n readNumber(radix, maxDigits, allowZeroPrefix, maxBytes) {\n return this.readAtomically(() => {\n let result = 0;\n let digitCount = 0;\n const leadingChar = this.peekChar();\n if (leadingChar === undefined) {\n return undefined;\n }\n const hasLeadingZero = leadingChar === \"0\";\n const maxValue = 2 ** (8 * maxBytes) - 1;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const digit = this.readAtomically(() => {\n const char = this.readChar();\n if (char === undefined) {\n return undefined;\n }\n const num = Number.parseInt(char, radix);\n if (Number.isNaN(num)) {\n return undefined;\n }\n return num;\n });\n if (digit === undefined) {\n break;\n }\n result *= radix;\n result += digit;\n if (result > maxValue) {\n return undefined;\n }\n digitCount += 1;\n if (maxDigits !== undefined) {\n if (digitCount > maxDigits) {\n return undefined;\n }\n }\n }\n if (digitCount === 0) {\n return undefined;\n }\n else if (!allowZeroPrefix && hasLeadingZero && digitCount > 1) {\n return undefined;\n }\n else {\n return result;\n }\n });\n }\n /** Read an IPv4 address. */\n readIPv4Addr() {\n return this.readAtomically(() => {\n const out = new Uint8Array(4);\n for (let i = 0; i < out.length; i++) {\n const ix = this.readSeparator(\".\", i, () => this.readNumber(10, 3, false, 1));\n if (ix === undefined) {\n return undefined;\n }\n out[i] = ix;\n }\n return out;\n });\n }\n /** Read an IPv6 Address. */\n readIPv6Addr() {\n /**\n * Read a chunk of an IPv6 address into `groups`. Returns the number\n * of groups read, along with a bool indicating if an embedded\n * trailing IPv4 address was read. Specifically, read a series of\n * colon-separated IPv6 groups (0x0000 - 0xFFFF), with an optional\n * trailing embedded IPv4 address.\n */\n const readGroups = (groups) => {\n for (let i = 0; i < groups.length / 2; i++) {\n const ix = i * 2;\n // Try to read a trailing embedded IPv4 address. There must be at least 4 groups left.\n if (i < groups.length - 3) {\n const ipv4 = this.readSeparator(\":\", i, () => this.readIPv4Addr());\n if (ipv4 !== undefined) {\n groups[ix] = ipv4[0];\n groups[ix + 1] = ipv4[1];\n groups[ix + 2] = ipv4[2];\n groups[ix + 3] = ipv4[3];\n return [ix + 4, true];\n }\n }\n const group = this.readSeparator(\":\", i, () => this.readNumber(16, 4, true, 2));\n if (group === undefined) {\n return [ix, false];\n }\n groups[ix] = group >> 8;\n groups[ix + 1] = group & 255;\n }\n return [groups.length, false];\n };\n return this.readAtomically(() => {\n // Read the front part of the address; either the whole thing, or up to the first ::\n const head = new Uint8Array(16);\n const [headSize, headIp4] = readGroups(head);\n if (headSize === 16) {\n return head;\n }\n // IPv4 part is not allowed before `::`\n if (headIp4) {\n return undefined;\n }\n // Read `::` if previous code parsed less than 8 groups.\n // `::` indicates one or more groups of 16 bits of zeros.\n if (this.readGivenChar(\":\") === undefined) {\n return undefined;\n }\n if (this.readGivenChar(\":\") === undefined) {\n return undefined;\n }\n // Read the back part of the address. The :: must contain at least one\n // set of zeroes, so our max length is 7.\n const tail = new Uint8Array(14);\n const limit = 16 - (headSize + 2);\n const [tailSize] = readGroups(tail.subarray(0, limit));\n // Concat the head and tail of the IP address\n head.set(tail.subarray(0, tailSize), 16 - tailSize);\n return head;\n });\n }\n /** Read an IP Address, either IPv4 or IPv6. */\n readIPAddr() {\n return this.readIPv4Addr() ?? this.readIPv6Addr();\n }\n}\n//# sourceMappingURL=parser.js.map","import { Parser } from \"./parser.js\";\n// See https://stackoverflow.com/questions/166132/maximum-length-of-the-textual-representation-of-an-ipv6-address\nconst MAX_IPV6_LENGTH = 45;\nconst MAX_IPV4_LENGTH = 15;\nconst parser = new Parser();\n/** Parse `input` into IPv4 bytes. */\nexport function parseIPv4(input) {\n if (input.length > MAX_IPV4_LENGTH) {\n return undefined;\n }\n return parser.new(input).parseWith(() => parser.readIPv4Addr());\n}\n/** Parse `input` into IPv6 bytes. */\nexport function parseIPv6(input) {\n // strip zone index if it is present\n if (input.includes(\"%\")) {\n input = input.split(\"%\")[0];\n }\n if (input.length > MAX_IPV6_LENGTH) {\n return undefined;\n }\n return parser.new(input).parseWith(() => parser.readIPv6Addr());\n}\n/** Parse `input` into IPv4 or IPv6 bytes. */\nexport function parseIP(input) {\n // strip zone index if it is present\n if (input.includes(\"%\")) {\n input = input.split(\"%\")[0];\n }\n if (input.length > MAX_IPV6_LENGTH) {\n return undefined;\n }\n return parser.new(input).parseWith(() => parser.readIPAddr());\n}\n//# sourceMappingURL=parse.js.map","import { parseIP, parseIPv4, parseIPv6 } from \"./parse.js\";\n/** Check if `input` is IPv4. */\nexport function isIPv4(input) {\n return Boolean(parseIPv4(input));\n}\n/** Check if `input` is IPv6. */\nexport function isIPv6(input) {\n return Boolean(parseIPv6(input));\n}\n/** Check if `input` is IPv4 or IPv6. */\nexport function isIP(input) {\n return Boolean(parseIP(input));\n}\n/**\n * @returns `6` if `input` is IPv6, `4` if `input` is IPv4, or `undefined` if `input` is neither.\n */\nexport function ipVersion(input) {\n if (isIPv4(input)) {\n return 4;\n }\n else if (isIPv6(input)) {\n return 6;\n }\n else {\n return undefined;\n }\n}\n//# sourceMappingURL=is-ip.js.map","import { isIPv4, isIPv6 } from '@chainsafe/is-ip';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nexport { isIP } from '@chainsafe/is-ip';\nexport const isV4 = isIPv4;\nexport const isV6 = isIPv6;\n// Copied from https://github.com/indutny/node-ip/blob/master/lib/ip.js#L7\n// but with buf/offset args removed because we don't use them\nexport const toBytes = function (ip) {\n let offset = 0;\n ip = ip.toString().trim();\n if (isV4(ip)) {\n const bytes = new Uint8Array(offset + 4);\n ip.split(/\\./g).forEach((byte) => {\n bytes[offset++] = parseInt(byte, 10) & 0xff;\n });\n return bytes;\n }\n if (isV6(ip)) {\n const sections = ip.split(':', 8);\n let i;\n for (i = 0; i < sections.length; i++) {\n const isv4 = isV4(sections[i]);\n let v4Buffer;\n if (isv4) {\n v4Buffer = toBytes(sections[i]);\n sections[i] = uint8ArrayToString(v4Buffer.slice(0, 2), 'base16');\n }\n if (v4Buffer != null && ++i < 8) {\n sections.splice(i, 0, uint8ArrayToString(v4Buffer.slice(2, 4), 'base16'));\n }\n }\n if (sections[0] === '') {\n while (sections.length < 8)\n sections.unshift('0');\n }\n else if (sections[sections.length - 1] === '') {\n while (sections.length < 8)\n sections.push('0');\n }\n else if (sections.length < 8) {\n for (i = 0; i < sections.length && sections[i] !== ''; i++)\n ;\n const argv = [i, 1];\n for (i = 9 - sections.length; i > 0; i--) {\n argv.push('0');\n }\n sections.splice.apply(sections, argv);\n }\n const bytes = new Uint8Array(offset + 16);\n for (i = 0; i < sections.length; i++) {\n const word = parseInt(sections[i], 16);\n bytes[offset++] = (word >> 8) & 0xff;\n bytes[offset++] = word & 0xff;\n }\n return bytes;\n }\n throw new Error('invalid ip address');\n};\n// Copied from https://github.com/indutny/node-ip/blob/master/lib/ip.js#L63\nexport const toString = function (buf, offset = 0, length) {\n offset = ~~offset;\n length = length ?? (buf.length - offset);\n const view = new DataView(buf.buffer);\n if (length === 4) {\n const result = [];\n // IPv4\n for (let i = 0; i < length; i++) {\n result.push(buf[offset + i]);\n }\n return result.join('.');\n }\n if (length === 16) {\n const result = [];\n // IPv6\n for (let i = 0; i < length; i += 2) {\n result.push(view.getUint16(offset + i).toString(16));\n }\n return result.join(':')\n .replace(/(^|:)0(:0)*:0(:|$)/, '$1::$3')\n .replace(/:{3,4}/, '::');\n }\n return '';\n};\n//# sourceMappingURL=ip.js.map","const V = -1;\nexport const names = {};\nexport const codes = {};\nexport const table = [\n [4, 32, 'ip4'],\n [6, 16, 'tcp'],\n [33, 16, 'dccp'],\n [41, 128, 'ip6'],\n [42, V, 'ip6zone'],\n [43, 8, 'ipcidr'],\n [53, V, 'dns', true],\n [54, V, 'dns4', true],\n [55, V, 'dns6', true],\n [56, V, 'dnsaddr', true],\n [132, 16, 'sctp'],\n [273, 16, 'udp'],\n [275, 0, 'p2p-webrtc-star'],\n [276, 0, 'p2p-webrtc-direct'],\n [277, 0, 'p2p-stardust'],\n [280, 0, 'webrtc-direct'],\n [281, 0, 'webrtc'],\n [290, 0, 'p2p-circuit'],\n [301, 0, 'udt'],\n [302, 0, 'utp'],\n [400, V, 'unix', false, true],\n // `ipfs` is added before `p2p` for legacy support.\n // All text representations will default to `p2p`, but `ipfs` will\n // still be supported\n [421, V, 'ipfs'],\n // `p2p` is the preferred name for 421, and is now the default\n [421, V, 'p2p'],\n [443, 0, 'https'],\n [444, 96, 'onion'],\n [445, 296, 'onion3'],\n [446, V, 'garlic64'],\n [448, 0, 'tls'],\n [449, V, 'sni'],\n [460, 0, 'quic'],\n [461, 0, 'quic-v1'],\n [465, 0, 'webtransport'],\n [466, V, 'certhash'],\n [477, 0, 'ws'],\n [478, 0, 'wss'],\n [479, 0, 'p2p-websocket-star'],\n [480, 0, 'http'],\n [481, V, 'http-path'],\n [777, V, 'memory']\n];\n// populate tables\ntable.forEach(row => {\n const proto = createProtocol(...row);\n codes[proto.code] = proto;\n names[proto.name] = proto;\n});\nexport function createProtocol(code, size, name, resolvable, path) {\n return {\n code,\n size,\n name,\n resolvable: Boolean(resolvable),\n path: Boolean(path)\n };\n}\n/**\n * For the passed proto string or number, return a {@link Protocol}\n *\n * @example\n *\n * ```js\n * import { protocol } from '@multiformats/multiaddr'\n *\n * console.info(protocol(4))\n * // { code: 4, size: 32, name: 'ip4', resolvable: false, path: false }\n * ```\n */\nexport function getProtocol(proto) {\n if (typeof proto === 'number') {\n if (codes[proto] != null) {\n return codes[proto];\n }\n throw new Error(`no protocol with code: ${proto}`);\n }\n else if (typeof proto === 'string') {\n if (names[proto] != null) {\n return names[proto];\n }\n throw new Error(`no protocol with name: ${proto}`);\n }\n throw new Error(`invalid protocol id type: ${typeof proto}`);\n}\n//# sourceMappingURL=protocols-table.js.map","/**\n * @packageDocumentation\n *\n * Provides methods for converting\n */\nimport { IpNet } from '@chainsafe/netmask';\nimport { base32 } from 'multiformats/bases/base32';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { bases } from 'multiformats/basics';\nimport { CID } from 'multiformats/cid';\nimport * as Digest from 'multiformats/hashes/digest';\nimport * as varint from 'uint8-varint';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport * as ip from './ip.js';\nimport { getProtocol } from './protocols-table.js';\nconst ip4Protocol = getProtocol('ip4');\nconst ip6Protocol = getProtocol('ip6');\nconst ipcidrProtocol = getProtocol('ipcidr');\nexport function convert(proto, a) {\n if (a instanceof Uint8Array) {\n return convertToString(proto, a);\n }\n else {\n return convertToBytes(proto, a);\n }\n}\n/**\n * Convert [code,Uint8Array] to string\n */\nexport function convertToString(proto, buf) {\n const protocol = getProtocol(proto);\n switch (protocol.code) {\n case 4: // ipv4\n case 41: // ipv6\n return bytes2ip(buf);\n case 42: // ipv6zone\n return bytes2str(buf);\n case 6: // tcp\n case 273: // udp\n case 33: // dccp\n case 132: // sctp\n return bytes2port(buf).toString();\n case 53: // dns\n case 54: // dns4\n case 55: // dns6\n case 56: // dnsaddr\n case 400: // unix\n case 449: // sni\n case 777: // memory\n return bytes2str(buf);\n case 421: // ipfs\n return bytes2mh(buf);\n case 444: // onion\n return bytes2onion(buf);\n case 445: // onion3\n return bytes2onion(buf);\n case 466: // certhash\n return bytes2mb(buf);\n case 481: // http-path\n return globalThis.encodeURIComponent(bytes2str(buf));\n default:\n return uint8ArrayToString(buf, 'base16'); // no clue. convert to hex\n }\n}\nexport function convertToBytes(proto, str) {\n const protocol = getProtocol(proto);\n switch (protocol.code) {\n case 4: // ipv4\n return ip2bytes(str);\n case 41: // ipv6\n return ip2bytes(str);\n case 42: // ipv6zone\n return str2bytes(str);\n case 6: // tcp\n case 273: // udp\n case 33: // dccp\n case 132: // sctp\n return port2bytes(parseInt(str, 10));\n case 53: // dns\n case 54: // dns4\n case 55: // dns6\n case 56: // dnsaddr\n case 400: // unix\n case 449: // sni\n case 777: // memory\n return str2bytes(str);\n case 421: // ipfs\n return mh2bytes(str);\n case 444: // onion\n return onion2bytes(str);\n case 445: // onion3\n return onion32bytes(str);\n case 466: // certhash\n return mb2bytes(str);\n case 481: // http-path\n return str2bytes(globalThis.decodeURIComponent(str));\n default:\n return uint8ArrayFromString(str, 'base16'); // no clue. convert from hex\n }\n}\nexport function convertToIpNet(multiaddr) {\n let mask;\n let addr;\n multiaddr.stringTuples().forEach(([code, value]) => {\n if (code === ip4Protocol.code || code === ip6Protocol.code) {\n addr = value;\n }\n if (code === ipcidrProtocol.code) {\n mask = value;\n }\n });\n if (mask == null || addr == null) {\n throw new Error('Invalid multiaddr');\n }\n return new IpNet(addr, mask);\n}\nconst decoders = Object.values(bases).map((c) => c.decoder);\nconst anybaseDecoder = (function () {\n let acc = decoders[0].or(decoders[1]);\n decoders.slice(2).forEach((d) => (acc = acc.or(d)));\n return acc;\n})();\nfunction ip2bytes(ipString) {\n if (!ip.isIP(ipString)) {\n throw new Error('invalid ip address');\n }\n return ip.toBytes(ipString);\n}\nfunction bytes2ip(ipBuff) {\n const ipString = ip.toString(ipBuff, 0, ipBuff.length);\n if (ipString == null) {\n throw new Error('ipBuff is required');\n }\n if (!ip.isIP(ipString)) {\n throw new Error('invalid ip address');\n }\n return ipString;\n}\nfunction port2bytes(port) {\n const buf = new ArrayBuffer(2);\n const view = new DataView(buf);\n view.setUint16(0, port);\n return new Uint8Array(buf);\n}\nfunction bytes2port(buf) {\n const view = new DataView(buf.buffer);\n return view.getUint16(buf.byteOffset);\n}\nfunction str2bytes(str) {\n const buf = uint8ArrayFromString(str);\n const size = Uint8Array.from(varint.encode(buf.length));\n return uint8ArrayConcat([size, buf], size.length + buf.length);\n}\nfunction bytes2str(buf) {\n const size = varint.decode(buf);\n buf = buf.slice(varint.encodingLength(size));\n if (buf.length !== size) {\n throw new Error('inconsistent lengths');\n }\n return uint8ArrayToString(buf);\n}\nfunction mh2bytes(hash) {\n let mh;\n if (hash[0] === 'Q' || hash[0] === '1') {\n mh = Digest.decode(base58btc.decode(`z${hash}`)).bytes;\n }\n else {\n mh = CID.parse(hash).multihash.bytes;\n }\n // the address is a varint prefixed multihash string representation\n const size = Uint8Array.from(varint.encode(mh.length));\n return uint8ArrayConcat([size, mh], size.length + mh.length);\n}\nfunction mb2bytes(mbstr) {\n const mb = anybaseDecoder.decode(mbstr);\n const size = Uint8Array.from(varint.encode(mb.length));\n return uint8ArrayConcat([size, mb], size.length + mb.length);\n}\nfunction bytes2mb(buf) {\n const size = varint.decode(buf);\n const hash = buf.slice(varint.encodingLength(size));\n if (hash.length !== size) {\n throw new Error('inconsistent lengths');\n }\n return 'u' + uint8ArrayToString(hash, 'base64url');\n}\n/**\n * Converts bytes to bas58btc string\n */\nfunction bytes2mh(buf) {\n const size = varint.decode(buf);\n const address = buf.slice(varint.encodingLength(size));\n if (address.length !== size) {\n throw new Error('inconsistent lengths');\n }\n return uint8ArrayToString(address, 'base58btc');\n}\nfunction onion2bytes(str) {\n const addr = str.split(':');\n if (addr.length !== 2) {\n throw new Error(`failed to parse onion addr: [\"'${addr.join('\", \"')}'\"]' does not contain a port number`);\n }\n if (addr[0].length !== 16) {\n throw new Error(`failed to parse onion addr: ${addr[0]} not a Tor onion address.`);\n }\n // onion addresses do not include the multibase prefix, add it before decoding\n const buf = base32.decode('b' + addr[0]);\n // onion port number\n const port = parseInt(addr[1], 10);\n if (port < 1 || port > 65536) {\n throw new Error('Port number is not in range(1, 65536)');\n }\n const portBuf = port2bytes(port);\n return uint8ArrayConcat([buf, portBuf], buf.length + portBuf.length);\n}\nfunction onion32bytes(str) {\n const addr = str.split(':');\n if (addr.length !== 2) {\n throw new Error(`failed to parse onion addr: [\"'${addr.join('\", \"')}'\"]' does not contain a port number`);\n }\n if (addr[0].length !== 56) {\n throw new Error(`failed to parse onion addr: ${addr[0]} not a Tor onion3 address.`);\n }\n // onion addresses do not include the multibase prefix, add it before decoding\n const buf = base32.decode(`b${addr[0]}`);\n // onion port number\n const port = parseInt(addr[1], 10);\n if (port < 1 || port > 65536) {\n throw new Error('Port number is not in range(1, 65536)');\n }\n const portBuf = port2bytes(port);\n return uint8ArrayConcat([buf, portBuf], buf.length + portBuf.length);\n}\nfunction bytes2onion(buf) {\n const addrBytes = buf.slice(0, buf.length - 2);\n const portBytes = buf.slice(buf.length - 2);\n const addr = uint8ArrayToString(addrBytes, 'base32');\n const port = bytes2port(portBytes);\n return `${addr}:${port}`;\n}\n//# sourceMappingURL=convert.js.map","import { convertToString } from '@multiformats/multiaddr/convert';\n// Protocols https://github.com/multiformats/multiaddr/blob/master/protocols.csv\n// code size name\n// 4 32 ip4\n// 41 128 ip6\nvar Protocol;\n(function (Protocol) {\n Protocol[Protocol[\"ip4\"] = 4] = \"ip4\";\n Protocol[Protocol[\"ip6\"] = 41] = \"ip6\";\n})(Protocol || (Protocol = {}));\nexport function multiaddrToIPStr(multiaddr) {\n for (const tuple of multiaddr.tuples()) {\n switch (tuple[0]) {\n case Protocol.ip4:\n case Protocol.ip6:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return convertToString(tuple[0], tuple[1]);\n default:\n break;\n }\n }\n return null;\n}\n//# sourceMappingURL=multiaddr.js.map","/**\n * This is similar to https://github.com/daviddias/time-cache/blob/master/src/index.js\n * for our own need, we don't use lodash throttle to improve performance.\n * This gives 4x - 5x performance gain compared to npm TimeCache\n */\nexport class SimpleTimeCache {\n entries = new Map();\n validityMs;\n constructor(opts) {\n this.validityMs = opts.validityMs;\n // allow negative validityMs so that this does not cache anything, spec test compliance.spec.js\n // sends duplicate messages and expect peer to receive all. Application likely uses positive validityMs\n }\n get size() {\n return this.entries.size;\n }\n /** Returns true if there was a key collision and the entry is dropped */\n put(key, value) {\n if (this.entries.has(key)) {\n // Key collisions break insertion order in the entries cache, which break prune logic.\n // prune relies on each iterated entry to have strictly ascending validUntilMs, else it\n // won't prune expired entries and SimpleTimeCache will grow unexpectedly.\n // As of Oct 2022 NodeJS v16, inserting the same key twice with different value does not\n // change the key position in the iterator stream. A unit test asserts this behaviour.\n return true;\n }\n this.entries.set(key, { value, validUntilMs: Date.now() + this.validityMs });\n return false;\n }\n prune() {\n const now = Date.now();\n for (const [k, v] of this.entries.entries()) {\n if (v.validUntilMs < now) {\n this.entries.delete(k);\n }\n else {\n // Entries are inserted with strictly ascending validUntilMs.\n // Stop early to save iterations\n break;\n }\n }\n }\n has(key) {\n return this.entries.has(key);\n }\n get(key) {\n const value = this.entries.get(key);\n return (value != null) && value.validUntilMs >= Date.now() ? value.value : undefined;\n }\n clear() {\n this.entries.clear();\n }\n}\n//# sourceMappingURL=time-cache.js.map","import { CustomEvent, TypedEventEmitter, StrictSign, StrictNoSign, TopicValidatorResult } from '@libp2p/interface';\nimport { peerIdFromBytes, peerIdFromString } from '@libp2p/peer-id';\nimport { encode } from 'it-length-prefixed';\nimport { pipe } from 'it-pipe';\nimport { pushable } from 'it-pushable';\nimport * as constants from './constants.js';\nimport { ACCEPT_FROM_WHITELIST_DURATION_MS, ACCEPT_FROM_WHITELIST_MAX_MESSAGES, ACCEPT_FROM_WHITELIST_THRESHOLD_SCORE, BACKOFF_SLACK } from './constants.js';\nimport { decodeRpc, defaultDecodeRpcLimits } from './message/decodeRpc.js';\nimport { RPC } from './message/rpc.js';\nimport { MessageCache } from './message-cache.js';\nimport { ChurnReason, getMetrics, IHaveIgnoreReason, InclusionReason, ScorePenalty } from './metrics.js';\nimport { PeerScore, createPeerScoreParams, createPeerScoreThresholds } from './score/index.js';\nimport { computeAllPeersScoreWeights } from './score/scoreMetrics.js';\nimport { InboundStream, OutboundStream } from './stream.js';\nimport { IWantTracer } from './tracer.js';\nimport { ValidateError, MessageStatus, RejectReason, rejectReasonFromAcceptance } from './types.js';\nimport { buildRawMessage, validateToRawMessage } from './utils/buildRawMessage.js';\nimport { shuffle, messageIdToString } from './utils/index.js';\nimport { msgIdFnStrictNoSign, msgIdFnStrictSign } from './utils/msgIdFn.js';\nimport { multiaddrToIPStr } from './utils/multiaddr.js';\nimport { getPublishConfigFromPeerId } from './utils/publishConfig.js';\nimport { removeFirstNItemsFromSet, removeItemsFromSet } from './utils/set.js';\nimport { SimpleTimeCache } from './utils/time-cache.js';\nexport const multicodec = constants.GossipsubIDv11;\nvar GossipStatusCode;\n(function (GossipStatusCode) {\n GossipStatusCode[GossipStatusCode[\"started\"] = 0] = \"started\";\n GossipStatusCode[GossipStatusCode[\"stopped\"] = 1] = \"stopped\";\n})(GossipStatusCode || (GossipStatusCode = {}));\nexport class GossipSub extends TypedEventEmitter {\n /**\n * The signature policy to follow by default\n */\n globalSignaturePolicy;\n multicodecs = [constants.GossipsubIDv11, constants.GossipsubIDv10];\n publishConfig;\n dataTransform;\n // State\n peers = new Set();\n streamsInbound = new Map();\n streamsOutbound = new Map();\n /** Ensures outbound streams are created sequentially */\n outboundInflightQueue = pushable({ objectMode: true });\n /** Direct peers */\n direct = new Set();\n /** Floodsub peers */\n floodsubPeers = new Set();\n /** Cache of seen messages */\n seenCache;\n /**\n * Map of peer id and AcceptRequestWhileListEntry\n */\n acceptFromWhitelist = new Map();\n /**\n * Map of topics to which peers are subscribed to\n */\n topics = new Map();\n /**\n * List of our subscriptions\n */\n subscriptions = new Set();\n /**\n * Map of topic meshes\n * topic => peer id set\n */\n mesh = new Map();\n /**\n * Map of topics to set of peers. These mesh peers are the ones to which we are publishing without a topic membership\n * topic => peer id set\n */\n fanout = new Map();\n /**\n * Map of last publish time for fanout topics\n * topic => last publish time\n */\n fanoutLastpub = new Map();\n /**\n * Map of pending messages to gossip\n * peer id => control messages\n */\n gossip = new Map();\n /**\n * Map of control messages\n * peer id => control message\n */\n control = new Map();\n /**\n * Number of IHAVEs received from peer in the last heartbeat\n */\n peerhave = new Map();\n /** Number of messages we have asked from peer in the last heartbeat */\n iasked = new Map();\n /** Prune backoff map */\n backoff = new Map();\n /**\n * Connection direction cache, marks peers with outbound connections\n * peer id => direction\n */\n outbound = new Map();\n msgIdFn;\n /**\n * A fast message id function used for internal message de-duplication\n */\n fastMsgIdFn;\n msgIdToStrFn;\n /** Maps fast message-id to canonical message-id */\n fastMsgIdCache;\n /**\n * Short term cache for published message ids. This is used for penalizing peers sending\n * our own messages back if the messages are anonymous or use a random author.\n */\n publishedMessageIds;\n /**\n * A message cache that contains the messages for last few heartbeat ticks\n */\n mcache;\n /** Peer score tracking */\n score;\n /**\n * Custom validator function per topic.\n * Must return or resolve quickly (< 100ms) to prevent causing penalties for late messages.\n * If you need to apply validation that may require longer times use `asyncValidation` option and callback the\n * validation result through `Gossipsub.reportValidationResult`\n */\n topicValidators = new Map();\n /**\n * Make this protected so child class may want to redirect to its own log.\n */\n log;\n /**\n * Number of heartbeats since the beginning of time\n * This allows us to amortize some resource cleanup -- eg: backoff cleanup\n */\n heartbeatTicks = 0;\n /**\n * Tracks IHAVE/IWANT promises broken by peers\n */\n gossipTracer;\n components;\n directPeerInitial = null;\n static multicodec = constants.GossipsubIDv11;\n // Options\n opts;\n decodeRpcLimits;\n metrics;\n status = { code: GossipStatusCode.stopped };\n maxInboundStreams;\n maxOutboundStreams;\n runOnTransientConnection;\n allowedTopics;\n heartbeatTimer = null;\n constructor(components, options = {}) {\n super();\n const opts = {\n fallbackToFloodsub: true,\n floodPublish: true,\n batchPublish: false,\n doPX: false,\n directPeers: [],\n D: constants.GossipsubD,\n Dlo: constants.GossipsubDlo,\n Dhi: constants.GossipsubDhi,\n Dscore: constants.GossipsubDscore,\n Dout: constants.GossipsubDout,\n Dlazy: constants.GossipsubDlazy,\n heartbeatInterval: constants.GossipsubHeartbeatInterval,\n fanoutTTL: constants.GossipsubFanoutTTL,\n mcacheLength: constants.GossipsubHistoryLength,\n mcacheGossip: constants.GossipsubHistoryGossip,\n seenTTL: constants.GossipsubSeenTTL,\n gossipsubIWantFollowupMs: constants.GossipsubIWantFollowupTime,\n prunePeers: constants.GossipsubPrunePeers,\n pruneBackoff: constants.GossipsubPruneBackoff,\n unsubcribeBackoff: constants.GossipsubUnsubscribeBackoff,\n graftFloodThreshold: constants.GossipsubGraftFloodThreshold,\n opportunisticGraftPeers: constants.GossipsubOpportunisticGraftPeers,\n opportunisticGraftTicks: constants.GossipsubOpportunisticGraftTicks,\n directConnectTicks: constants.GossipsubDirectConnectTicks,\n ...options,\n scoreParams: createPeerScoreParams(options.scoreParams),\n scoreThresholds: createPeerScoreThresholds(options.scoreThresholds)\n };\n this.components = components;\n this.decodeRpcLimits = opts.decodeRpcLimits ?? defaultDecodeRpcLimits;\n this.globalSignaturePolicy = opts.globalSignaturePolicy ?? StrictSign;\n // Also wants to get notified of peers connected using floodsub\n if (opts.fallbackToFloodsub) {\n this.multicodecs.push(constants.FloodsubID);\n }\n // From pubsub\n this.log = components.logger.forComponent(opts.debugName ?? 'libp2p:gossipsub');\n // Gossipsub\n this.opts = opts;\n this.direct = new Set(opts.directPeers.map((p) => p.id.toString()));\n this.seenCache = new SimpleTimeCache({ validityMs: opts.seenTTL });\n this.publishedMessageIds = new SimpleTimeCache({ validityMs: opts.seenTTL });\n if (options.msgIdFn != null) {\n // Use custom function\n this.msgIdFn = options.msgIdFn;\n }\n else {\n switch (this.globalSignaturePolicy) {\n case StrictSign:\n this.msgIdFn = msgIdFnStrictSign;\n break;\n case StrictNoSign:\n this.msgIdFn = msgIdFnStrictNoSign;\n break;\n default:\n throw new Error(`Invalid globalSignaturePolicy: ${this.globalSignaturePolicy}`);\n }\n }\n if (options.fastMsgIdFn != null) {\n this.fastMsgIdFn = options.fastMsgIdFn;\n this.fastMsgIdCache = new SimpleTimeCache({ validityMs: opts.seenTTL });\n }\n // By default, gossipsub only provide a browser friendly function to convert Uint8Array message id to string.\n this.msgIdToStrFn = options.msgIdToStrFn ?? messageIdToString;\n this.mcache = options.messageCache ?? new MessageCache(opts.mcacheGossip, opts.mcacheLength, this.msgIdToStrFn);\n if (options.dataTransform != null) {\n this.dataTransform = options.dataTransform;\n }\n if (options.metricsRegister != null) {\n if (options.metricsTopicStrToLabel == null) {\n throw Error('Must set metricsTopicStrToLabel with metrics');\n }\n // in theory, each topic has its own meshMessageDeliveriesWindow param\n // however in lodestar, we configure it mostly the same so just pick the max of positive ones\n // (some topics have meshMessageDeliveriesWindow as 0)\n const maxMeshMessageDeliveriesWindowMs = Math.max(...Object.values(opts.scoreParams.topics).map((topicParam) => topicParam.meshMessageDeliveriesWindow), constants.DEFAULT_METRIC_MESH_MESSAGE_DELIVERIES_WINDOWS);\n const metrics = getMetrics(options.metricsRegister, options.metricsTopicStrToLabel, {\n gossipPromiseExpireSec: this.opts.gossipsubIWantFollowupMs / 1000,\n behaviourPenaltyThreshold: opts.scoreParams.behaviourPenaltyThreshold,\n maxMeshMessageDeliveriesWindowSec: maxMeshMessageDeliveriesWindowMs / 1000\n });\n metrics.mcacheSize.addCollect(() => { this.onScrapeMetrics(metrics); });\n for (const protocol of this.multicodecs) {\n metrics.protocolsEnabled.set({ protocol }, 1);\n }\n this.metrics = metrics;\n }\n else {\n this.metrics = null;\n }\n this.gossipTracer = new IWantTracer(this.opts.gossipsubIWantFollowupMs, this.msgIdToStrFn, this.metrics);\n /**\n * libp2p\n */\n this.score = new PeerScore(this.opts.scoreParams, this.metrics, this.components.logger, {\n scoreCacheValidityMs: opts.heartbeatInterval\n });\n this.maxInboundStreams = options.maxInboundStreams;\n this.maxOutboundStreams = options.maxOutboundStreams;\n this.runOnTransientConnection = options.runOnTransientConnection;\n this.allowedTopics = (opts.allowedTopics != null) ? new Set(opts.allowedTopics) : null;\n }\n getPeers() {\n return [...this.peers.keys()].map((str) => peerIdFromString(str));\n }\n isStarted() {\n return this.status.code === GossipStatusCode.started;\n }\n // LIFECYCLE METHODS\n /**\n * Mounts the gossipsub protocol onto the libp2p node and sends our\n * our subscriptions to every peer connected\n */\n async start() {\n // From pubsub\n if (this.isStarted()) {\n return;\n }\n this.log('starting');\n this.publishConfig = await getPublishConfigFromPeerId(this.globalSignaturePolicy, this.components.peerId);\n // Create the outbound inflight queue\n // This ensures that outbound stream creation happens sequentially\n this.outboundInflightQueue = pushable({ objectMode: true });\n pipe(this.outboundInflightQueue, async (source) => {\n for await (const { peerId, connection } of source) {\n await this.createOutboundStream(peerId, connection);\n }\n }).catch((e) => { this.log.error('outbound inflight queue error', e); });\n // set direct peer addresses in the address book\n await Promise.all(this.opts.directPeers.map(async (p) => {\n await this.components.peerStore.merge(p.id, {\n multiaddrs: p.addrs\n });\n }));\n const registrar = this.components.registrar;\n // Incoming streams\n // Called after a peer dials us\n await Promise.all(this.multicodecs.map(async (multicodec) => registrar.handle(multicodec, this.onIncomingStream.bind(this), {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams,\n runOnTransientConnection: this.runOnTransientConnection\n })));\n // # How does Gossipsub interact with libp2p? Rough guide from Mar 2022\n //\n // ## Setup:\n // Gossipsub requests libp2p to callback, TBD\n //\n // `this.libp2p.handle()` registers a handler for `/meshsub/1.1.0` and other Gossipsub protocols\n // The handler callback is registered in libp2p Upgrader.protocols map.\n //\n // Upgrader receives an inbound connection from some transport and (`Upgrader.upgradeInbound`):\n // - Adds encryption (NOISE in our case)\n // - Multiplex stream\n // - Create a muxer and register that for each new stream call Upgrader.protocols handler\n //\n // ## Topology\n // - new instance of Topology (unlinked to libp2p) with handlers\n // - registar.register(topology)\n // register protocol with topology\n // Topology callbacks called on connection manager changes\n const topology = {\n onConnect: this.onPeerConnected.bind(this),\n onDisconnect: this.onPeerDisconnected.bind(this),\n notifyOnTransient: this.runOnTransientConnection\n };\n const registrarTopologyIds = await Promise.all(this.multicodecs.map(async (multicodec) => registrar.register(multicodec, topology)));\n // Schedule to start heartbeat after `GossipsubHeartbeatInitialDelay`\n const heartbeatTimeout = setTimeout(this.runHeartbeat, constants.GossipsubHeartbeatInitialDelay);\n // Then, run heartbeat every `heartbeatInterval` offset by `GossipsubHeartbeatInitialDelay`\n this.status = {\n code: GossipStatusCode.started,\n registrarTopologyIds,\n heartbeatTimeout,\n hearbeatStartMs: Date.now() + constants.GossipsubHeartbeatInitialDelay\n };\n this.score.start();\n // connect to direct peers\n this.directPeerInitial = setTimeout(() => {\n Promise.resolve()\n .then(async () => {\n await Promise.all(Array.from(this.direct).map(async (id) => this.connect(id)));\n })\n .catch((err) => {\n this.log(err);\n });\n }, constants.GossipsubDirectConnectInitialDelay);\n this.log('started');\n }\n /**\n * Unmounts the gossipsub protocol and shuts down every connection\n */\n async stop() {\n this.log('stopping');\n // From pubsub\n if (this.status.code !== GossipStatusCode.started) {\n return;\n }\n const { registrarTopologyIds } = this.status;\n this.status = { code: GossipStatusCode.stopped };\n // unregister protocol and handlers\n const registrar = this.components.registrar;\n await Promise.all(this.multicodecs.map(async (multicodec) => registrar.unhandle(multicodec)));\n registrarTopologyIds.forEach((id) => { registrar.unregister(id); });\n this.outboundInflightQueue.end();\n const closePromises = [];\n for (const outboundStream of this.streamsOutbound.values()) {\n closePromises.push(outboundStream.close());\n }\n this.streamsOutbound.clear();\n for (const inboundStream of this.streamsInbound.values()) {\n closePromises.push(inboundStream.close());\n }\n this.streamsInbound.clear();\n await Promise.all(closePromises);\n this.peers.clear();\n this.subscriptions.clear();\n // Gossipsub\n if (this.heartbeatTimer != null) {\n this.heartbeatTimer.cancel();\n this.heartbeatTimer = null;\n }\n this.score.stop();\n this.mesh.clear();\n this.fanout.clear();\n this.fanoutLastpub.clear();\n this.gossip.clear();\n this.control.clear();\n this.peerhave.clear();\n this.iasked.clear();\n this.backoff.clear();\n this.outbound.clear();\n this.gossipTracer.clear();\n this.seenCache.clear();\n if (this.fastMsgIdCache != null)\n this.fastMsgIdCache.clear();\n if (this.directPeerInitial != null)\n clearTimeout(this.directPeerInitial);\n this.log('stopped');\n }\n /** FOR DEBUG ONLY - Dump peer stats for all peers. Data is cloned, safe to mutate */\n dumpPeerScoreStats() {\n return this.score.dumpPeerScoreStats();\n }\n /**\n * On an inbound stream opened\n */\n onIncomingStream({ stream, connection }) {\n if (!this.isStarted()) {\n return;\n }\n const peerId = connection.remotePeer;\n // add peer to router\n this.addPeer(peerId, connection.direction, connection.remoteAddr);\n // create inbound stream\n this.createInboundStream(peerId, stream);\n // attempt to create outbound stream\n this.outboundInflightQueue.push({ peerId, connection });\n }\n /**\n * Registrar notifies an established connection with pubsub protocol\n */\n onPeerConnected(peerId, connection) {\n this.metrics?.newConnectionCount.inc({ status: connection.status });\n // libp2p may emit a closed connection and never issue peer:disconnect event\n // see https://github.com/ChainSafe/js-libp2p-gossipsub/issues/398\n if (!this.isStarted() || connection.status !== 'open') {\n return;\n }\n this.addPeer(peerId, connection.direction, connection.remoteAddr);\n this.outboundInflightQueue.push({ peerId, connection });\n }\n /**\n * Registrar notifies a closing connection with pubsub protocol\n */\n onPeerDisconnected(peerId) {\n this.log('connection ended %p', peerId);\n this.removePeer(peerId);\n }\n async createOutboundStream(peerId, connection) {\n if (!this.isStarted()) {\n return;\n }\n const id = peerId.toString();\n if (!this.peers.has(id)) {\n return;\n }\n // TODO make this behavior more robust\n // This behavior is different than for inbound streams\n // If an outbound stream already exists, don't create a new stream\n if (this.streamsOutbound.has(id)) {\n return;\n }\n try {\n const stream = new OutboundStream(await connection.newStream(this.multicodecs, {\n runOnTransientConnection: this.runOnTransientConnection\n }), (e) => { this.log.error('outbound pipe error', e); }, { maxBufferSize: this.opts.maxOutboundBufferSize });\n this.log('create outbound stream %p', peerId);\n this.streamsOutbound.set(id, stream);\n const protocol = stream.protocol;\n if (protocol === constants.FloodsubID) {\n this.floodsubPeers.add(id);\n }\n this.metrics?.peersPerProtocol.inc({ protocol }, 1);\n // Immediately send own subscriptions via the newly attached stream\n if (this.subscriptions.size > 0) {\n this.log('send subscriptions to', id);\n this.sendSubscriptions(id, Array.from(this.subscriptions), true);\n }\n }\n catch (e) {\n this.log.error('createOutboundStream error', e);\n }\n }\n createInboundStream(peerId, stream) {\n if (!this.isStarted()) {\n return;\n }\n const id = peerId.toString();\n if (!this.peers.has(id)) {\n return;\n }\n // TODO make this behavior more robust\n // This behavior is different than for outbound streams\n // If a peer initiates a new inbound connection\n // we assume that one is the new canonical inbound stream\n const priorInboundStream = this.streamsInbound.get(id);\n if (priorInboundStream !== undefined) {\n this.log('replacing existing inbound steam %s', id);\n priorInboundStream.close().catch((err) => { this.log.error(err); });\n }\n this.log('create inbound stream %s', id);\n const inboundStream = new InboundStream(stream, { maxDataLength: this.opts.maxInboundDataLength });\n this.streamsInbound.set(id, inboundStream);\n this.pipePeerReadStream(peerId, inboundStream.source).catch((err) => { this.log(err); });\n }\n /**\n * Add a peer to the router\n */\n addPeer(peerId, direction, addr) {\n const id = peerId.toString();\n if (!this.peers.has(id)) {\n this.log('new peer %p', peerId);\n this.peers.add(id);\n // Add to peer scoring\n this.score.addPeer(id);\n const currentIP = multiaddrToIPStr(addr);\n if (currentIP !== null) {\n this.score.addIP(id, currentIP);\n }\n else {\n this.log('Added peer has no IP in current address %s %s', id, addr.toString());\n }\n // track the connection direction. Don't allow to unset outbound\n if (!this.outbound.has(id)) {\n this.outbound.set(id, direction === 'outbound');\n }\n }\n }\n /**\n * Removes a peer from the router\n */\n removePeer(peerId) {\n const id = peerId.toString();\n if (!this.peers.has(id)) {\n return;\n }\n // delete peer\n this.log('delete peer %p', peerId);\n this.peers.delete(id);\n const outboundStream = this.streamsOutbound.get(id);\n const inboundStream = this.streamsInbound.get(id);\n if (outboundStream != null) {\n this.metrics?.peersPerProtocol.inc({ protocol: outboundStream.protocol }, -1);\n }\n // close streams\n outboundStream?.close().catch((err) => { this.log.error(err); });\n inboundStream?.close().catch((err) => { this.log.error(err); });\n // remove streams\n this.streamsOutbound.delete(id);\n this.streamsInbound.delete(id);\n // remove peer from topics map\n for (const peers of this.topics.values()) {\n peers.delete(id);\n }\n // Remove this peer from the mesh\n for (const [topicStr, peers] of this.mesh) {\n if (peers.delete(id)) {\n this.metrics?.onRemoveFromMesh(topicStr, ChurnReason.Dc, 1);\n }\n }\n // Remove this peer from the fanout\n for (const peers of this.fanout.values()) {\n peers.delete(id);\n }\n // Remove from floodsubPeers\n this.floodsubPeers.delete(id);\n // Remove from gossip mapping\n this.gossip.delete(id);\n // Remove from control mapping\n this.control.delete(id);\n // Remove from backoff mapping\n this.outbound.delete(id);\n // Remove from peer scoring\n this.score.removePeer(id);\n this.acceptFromWhitelist.delete(id);\n }\n // API METHODS\n get started() {\n return this.status.code === GossipStatusCode.started;\n }\n /**\n * Get a the peer-ids in a topic mesh\n */\n getMeshPeers(topic) {\n const peersInTopic = this.mesh.get(topic);\n return (peersInTopic != null) ? Array.from(peersInTopic) : [];\n }\n /**\n * Get a list of the peer-ids that are subscribed to one topic.\n */\n getSubscribers(topic) {\n const peersInTopic = this.topics.get(topic);\n return ((peersInTopic != null) ? Array.from(peersInTopic) : []).map((str) => peerIdFromString(str));\n }\n /**\n * Get the list of topics which the peer is subscribed to.\n */\n getTopics() {\n return Array.from(this.subscriptions);\n }\n // TODO: Reviewing Pubsub API\n // MESSAGE METHODS\n /**\n * Responsible for processing each RPC message received by other peers.\n */\n async pipePeerReadStream(peerId, stream) {\n try {\n await pipe(stream, async (source) => {\n for await (const data of source) {\n try {\n // TODO: Check max gossip message size, before decodeRpc()\n const rpcBytes = data.subarray();\n // Note: This function may throw, it must be wrapped in a try {} catch {} to prevent closing the stream.\n // TODO: What should we do if the entire RPC is invalid?\n const rpc = decodeRpc(rpcBytes, this.decodeRpcLimits);\n this.metrics?.onRpcRecv(rpc, rpcBytes.length);\n // Since processRpc may be overridden entirely in unsafe ways,\n // the simplest/safest option here is to wrap in a function and capture all errors\n // to prevent a top-level unhandled exception\n // This processing of rpc messages should happen without awaiting full validation/execution of prior messages\n if (this.opts.awaitRpcHandler) {\n try {\n await this.handleReceivedRpc(peerId, rpc);\n }\n catch (err) {\n this.metrics?.onRpcRecvError();\n this.log(err);\n }\n }\n else {\n this.handleReceivedRpc(peerId, rpc).catch((err) => {\n this.metrics?.onRpcRecvError();\n this.log(err);\n });\n }\n }\n catch (e) {\n this.metrics?.onRpcDataError();\n this.log(e);\n }\n }\n });\n }\n catch (err) {\n this.metrics?.onPeerReadStreamError();\n this.handlePeerReadStreamError(err, peerId);\n }\n }\n /**\n * Handle error when read stream pipe throws, less of the functional use but more\n * to for testing purposes to spy on the error handling\n * */\n handlePeerReadStreamError(err, peerId) {\n this.log.error(err);\n this.onPeerDisconnected(peerId);\n }\n /**\n * Handles an rpc request from a peer\n */\n async handleReceivedRpc(from, rpc) {\n // Check if peer is graylisted in which case we ignore the event\n if (!this.acceptFrom(from.toString())) {\n this.log('received message from unacceptable peer %p', from);\n this.metrics?.rpcRecvNotAccepted.inc();\n return;\n }\n const subscriptions = (rpc.subscriptions != null) ? rpc.subscriptions.length : 0;\n const messages = (rpc.messages != null) ? rpc.messages.length : 0;\n let ihave = 0;\n let iwant = 0;\n let graft = 0;\n let prune = 0;\n if (rpc.control != null) {\n if (rpc.control.ihave != null)\n ihave = rpc.control.ihave.length;\n if (rpc.control.iwant != null)\n iwant = rpc.control.iwant.length;\n if (rpc.control.graft != null)\n graft = rpc.control.graft.length;\n if (rpc.control.prune != null)\n prune = rpc.control.prune.length;\n }\n this.log(`rpc.from ${from.toString()} subscriptions ${subscriptions} messages ${messages} ihave ${ihave} iwant ${iwant} graft ${graft} prune ${prune}`);\n // Handle received subscriptions\n if ((rpc.subscriptions != null) && rpc.subscriptions.length > 0) {\n // update peer subscriptions\n const subscriptions = [];\n rpc.subscriptions.forEach((subOpt) => {\n const topic = subOpt.topic;\n const subscribe = subOpt.subscribe === true;\n if (topic != null) {\n if ((this.allowedTopics != null) && !this.allowedTopics.has(topic)) {\n // Not allowed: subscription data-structures are not bounded by topic count\n // TODO: Should apply behaviour penalties?\n return;\n }\n this.handleReceivedSubscription(from, topic, subscribe);\n subscriptions.push({ topic, subscribe });\n }\n });\n this.safeDispatchEvent('subscription-change', {\n detail: { peerId: from, subscriptions }\n });\n }\n // Handle messages\n // TODO: (up to limit)\n if (rpc.messages != null) {\n for (const message of rpc.messages) {\n if ((this.allowedTopics != null) && !this.allowedTopics.has(message.topic)) {\n // Not allowed: message cache data-structures are not bounded by topic count\n // TODO: Should apply behaviour penalties?\n continue;\n }\n const handleReceivedMessagePromise = this.handleReceivedMessage(from, message)\n // Should never throw, but handle just in case\n .catch((err) => {\n this.metrics?.onMsgRecvError(message.topic);\n this.log(err);\n });\n if (this.opts.awaitRpcMessageHandler) {\n await handleReceivedMessagePromise;\n }\n }\n }\n // Handle control messages\n if (rpc.control != null) {\n await this.handleControlMessage(from.toString(), rpc.control);\n }\n }\n /**\n * Handles a subscription change from a peer\n */\n handleReceivedSubscription(from, topic, subscribe) {\n this.log('subscription update from %p topic %s', from, topic);\n let topicSet = this.topics.get(topic);\n if (topicSet == null) {\n topicSet = new Set();\n this.topics.set(topic, topicSet);\n }\n if (subscribe) {\n // subscribe peer to new topic\n topicSet.add(from.toString());\n }\n else {\n // unsubscribe from existing topic\n topicSet.delete(from.toString());\n }\n // TODO: rust-libp2p has A LOT more logic here\n }\n /**\n * Handles a newly received message from an RPC.\n * May forward to all peers in the mesh.\n */\n async handleReceivedMessage(from, rpcMsg) {\n this.metrics?.onMsgRecvPreValidation(rpcMsg.topic);\n const validationResult = await this.validateReceivedMessage(from, rpcMsg);\n this.metrics?.onPrevalidationResult(rpcMsg.topic, validationResult.code);\n const validationCode = validationResult.code;\n switch (validationCode) {\n case MessageStatus.duplicate:\n // Report the duplicate\n this.score.duplicateMessage(from.toString(), validationResult.msgIdStr, rpcMsg.topic);\n // due to the collision of fastMsgIdFn, 2 different messages may end up the same fastMsgId\n // so we need to also mark the duplicate message as delivered or the promise is not resolved\n // and peer gets penalized. See https://github.com/ChainSafe/js-libp2p-gossipsub/pull/385\n this.gossipTracer.deliverMessage(validationResult.msgIdStr, true);\n this.mcache.observeDuplicate(validationResult.msgIdStr, from.toString());\n return;\n case MessageStatus.invalid:\n // invalid messages received\n // metrics.register_invalid_message(&raw_message.topic)\n // Tell peer_score about reject\n // Reject the original source, and any duplicates we've seen from other peers.\n if (validationResult.msgIdStr != null) {\n const msgIdStr = validationResult.msgIdStr;\n this.score.rejectMessage(from.toString(), msgIdStr, rpcMsg.topic, validationResult.reason);\n this.gossipTracer.rejectMessage(msgIdStr, validationResult.reason);\n }\n else {\n this.score.rejectInvalidMessage(from.toString(), rpcMsg.topic);\n }\n this.metrics?.onMsgRecvInvalid(rpcMsg.topic, validationResult);\n return;\n case MessageStatus.valid:\n // Tells score that message arrived (but is maybe not fully validated yet).\n // Consider the message as delivered for gossip promises.\n this.score.validateMessage(validationResult.messageId.msgIdStr);\n this.gossipTracer.deliverMessage(validationResult.messageId.msgIdStr);\n // Add the message to our memcache\n // if no validation is required, mark the message as validated\n this.mcache.put(validationResult.messageId, rpcMsg, !this.opts.asyncValidation);\n // Dispatch the message to the user if we are subscribed to the topic\n if (this.subscriptions.has(rpcMsg.topic)) {\n const isFromSelf = this.components.peerId.equals(from);\n if (!isFromSelf || this.opts.emitSelf) {\n super.dispatchEvent(new CustomEvent('gossipsub:message', {\n detail: {\n propagationSource: from,\n msgId: validationResult.messageId.msgIdStr,\n msg: validationResult.msg\n }\n }));\n // TODO: Add option to switch between emit per topic or all messages in one\n super.dispatchEvent(new CustomEvent('message', { detail: validationResult.msg }));\n }\n }\n // Forward the message to mesh peers, if no validation is required\n // If asyncValidation is ON, expect the app layer to call reportMessageValidationResult(), then forward\n if (!this.opts.asyncValidation) {\n // TODO: in rust-libp2p\n // .forward_msg(&msg_id, raw_message, Some(propagation_source))\n this.forwardMessage(validationResult.messageId.msgIdStr, rpcMsg, from.toString());\n }\n break;\n default:\n throw new Error(`Invalid validation result: ${validationCode}`);\n }\n }\n /**\n * Handles a newly received message from an RPC.\n * May forward to all peers in the mesh.\n */\n async validateReceivedMessage(propagationSource, rpcMsg) {\n // Fast message ID stuff\n const fastMsgIdStr = this.fastMsgIdFn?.(rpcMsg);\n const msgIdCached = fastMsgIdStr !== undefined ? this.fastMsgIdCache?.get(fastMsgIdStr) : undefined;\n if (msgIdCached != null) {\n // This message has been seen previously. Ignore it\n return { code: MessageStatus.duplicate, msgIdStr: msgIdCached };\n }\n // Perform basic validation on message and convert to RawGossipsubMessage for fastMsgIdFn()\n const validationResult = await validateToRawMessage(this.globalSignaturePolicy, rpcMsg);\n if (!validationResult.valid) {\n return { code: MessageStatus.invalid, reason: RejectReason.Error, error: validationResult.error };\n }\n const msg = validationResult.message;\n // Try and perform the data transform to the message. If it fails, consider it invalid.\n try {\n if (this.dataTransform != null) {\n msg.data = this.dataTransform.inboundTransform(rpcMsg.topic, msg.data);\n }\n }\n catch (e) {\n this.log('Invalid message, transform failed', e);\n return { code: MessageStatus.invalid, reason: RejectReason.Error, error: ValidateError.TransformFailed };\n }\n // TODO: Check if message is from a blacklisted source or propagation origin\n // - Reject any message from a blacklisted peer\n // - Also reject any message that originated from a blacklisted peer\n // - reject messages claiming to be from ourselves but not locally published\n // Calculate the message id on the transformed data.\n const msgId = await this.msgIdFn(msg);\n const msgIdStr = this.msgIdToStrFn(msgId);\n const messageId = { msgId, msgIdStr };\n // Add the message to the duplicate caches\n if (fastMsgIdStr !== undefined && (this.fastMsgIdCache != null)) {\n const collision = this.fastMsgIdCache.put(fastMsgIdStr, msgIdStr);\n if (collision) {\n this.metrics?.fastMsgIdCacheCollision.inc();\n }\n }\n if (this.seenCache.has(msgIdStr)) {\n return { code: MessageStatus.duplicate, msgIdStr };\n }\n else {\n this.seenCache.put(msgIdStr);\n }\n // (Optional) Provide custom validation here with dynamic validators per topic\n // NOTE: This custom topicValidator() must resolve fast (< 100ms) to allow scores\n // to not penalize peers for long validation times.\n const topicValidator = this.topicValidators.get(rpcMsg.topic);\n if (topicValidator != null) {\n let acceptance;\n // Use try {} catch {} in case topicValidator() is synchronous\n try {\n acceptance = await topicValidator(propagationSource, msg);\n }\n catch (e) {\n const errCode = e.code;\n if (errCode === constants.ERR_TOPIC_VALIDATOR_IGNORE)\n acceptance = TopicValidatorResult.Ignore;\n if (errCode === constants.ERR_TOPIC_VALIDATOR_REJECT)\n acceptance = TopicValidatorResult.Reject;\n else\n acceptance = TopicValidatorResult.Ignore;\n }\n if (acceptance !== TopicValidatorResult.Accept) {\n return { code: MessageStatus.invalid, reason: rejectReasonFromAcceptance(acceptance), msgIdStr };\n }\n }\n return { code: MessageStatus.valid, messageId, msg };\n }\n /**\n * Return score of a peer.\n */\n getScore(peerId) {\n return this.score.score(peerId);\n }\n /**\n * Send an rpc object to a peer with subscriptions\n */\n sendSubscriptions(toPeer, topics, subscribe) {\n this.sendRpc(toPeer, {\n subscriptions: topics.map((topic) => ({ topic, subscribe }))\n });\n }\n /**\n * Handles an rpc control message from a peer\n */\n async handleControlMessage(id, controlMsg) {\n if (controlMsg === undefined) {\n return;\n }\n const iwant = (controlMsg.ihave != null) ? this.handleIHave(id, controlMsg.ihave) : [];\n const ihave = (controlMsg.iwant != null) ? this.handleIWant(id, controlMsg.iwant) : [];\n const prune = (controlMsg.graft != null) ? await this.handleGraft(id, controlMsg.graft) : [];\n (controlMsg.prune != null) && (await this.handlePrune(id, controlMsg.prune));\n if ((iwant.length === 0) && (ihave.length === 0) && (prune.length === 0)) {\n return;\n }\n const sent = this.sendRpc(id, { messages: ihave, control: { iwant, prune } });\n const iwantMessageIds = iwant[0]?.messageIDs;\n if (iwantMessageIds != null) {\n if (sent) {\n this.gossipTracer.addPromise(id, iwantMessageIds);\n }\n else {\n this.metrics?.iwantPromiseUntracked.inc(1);\n }\n }\n }\n /**\n * Whether to accept a message from a peer\n */\n acceptFrom(id) {\n if (this.direct.has(id)) {\n return true;\n }\n const now = Date.now();\n const entry = this.acceptFromWhitelist.get(id);\n if ((entry != null) && entry.messagesAccepted < ACCEPT_FROM_WHITELIST_MAX_MESSAGES && entry.acceptUntil >= now) {\n entry.messagesAccepted += 1;\n return true;\n }\n const score = this.score.score(id);\n if (score >= ACCEPT_FROM_WHITELIST_THRESHOLD_SCORE) {\n // peer is unlikely to be able to drop its score to `graylistThreshold`\n // after 128 messages or 1s\n this.acceptFromWhitelist.set(id, {\n messagesAccepted: 0,\n acceptUntil: now + ACCEPT_FROM_WHITELIST_DURATION_MS\n });\n }\n else {\n this.acceptFromWhitelist.delete(id);\n }\n return score >= this.opts.scoreThresholds.graylistThreshold;\n }\n /**\n * Handles IHAVE messages\n */\n handleIHave(id, ihave) {\n if (ihave.length === 0) {\n return [];\n }\n // we ignore IHAVE gossip from any peer whose score is below the gossips threshold\n const score = this.score.score(id);\n if (score < this.opts.scoreThresholds.gossipThreshold) {\n this.log('IHAVE: ignoring peer %s with score below threshold [ score = %d ]', id, score);\n this.metrics?.ihaveRcvIgnored.inc({ reason: IHaveIgnoreReason.LowScore });\n return [];\n }\n // IHAVE flood protection\n const peerhave = (this.peerhave.get(id) ?? 0) + 1;\n this.peerhave.set(id, peerhave);\n if (peerhave > constants.GossipsubMaxIHaveMessages) {\n this.log('IHAVE: peer %s has advertised too many times (%d) within this heartbeat interval; ignoring', id, peerhave);\n this.metrics?.ihaveRcvIgnored.inc({ reason: IHaveIgnoreReason.MaxIhave });\n return [];\n }\n const iasked = this.iasked.get(id) ?? 0;\n if (iasked >= constants.GossipsubMaxIHaveLength) {\n this.log('IHAVE: peer %s has already advertised too many messages (%d); ignoring', id, iasked);\n this.metrics?.ihaveRcvIgnored.inc({ reason: IHaveIgnoreReason.MaxIasked });\n return [];\n }\n // string msgId => msgId\n const iwant = new Map();\n ihave.forEach(({ topicID, messageIDs }) => {\n if (topicID == null || (messageIDs == null) || !this.mesh.has(topicID)) {\n return;\n }\n let idonthave = 0;\n messageIDs.forEach((msgId) => {\n const msgIdStr = this.msgIdToStrFn(msgId);\n if (!this.seenCache.has(msgIdStr)) {\n iwant.set(msgIdStr, msgId);\n idonthave++;\n }\n });\n this.metrics?.onIhaveRcv(topicID, messageIDs.length, idonthave);\n });\n if (iwant.size === 0) {\n return [];\n }\n let iask = iwant.size;\n if (iask + iasked > constants.GossipsubMaxIHaveLength) {\n iask = constants.GossipsubMaxIHaveLength - iasked;\n }\n this.log('IHAVE: Asking for %d out of %d messages from %s', iask, iwant.size, id);\n let iwantList = Array.from(iwant.values());\n // ask in random order\n shuffle(iwantList);\n // truncate to the messages we are actually asking for and update the iasked counter\n iwantList = iwantList.slice(0, iask);\n this.iasked.set(id, iasked + iask);\n // do not add gossipTracer promise here until a successful sendRpc()\n return [\n {\n messageIDs: iwantList\n }\n ];\n }\n /**\n * Handles IWANT messages\n * Returns messages to send back to peer\n */\n handleIWant(id, iwant) {\n if (iwant.length === 0) {\n return [];\n }\n // we don't respond to IWANT requests from any per whose score is below the gossip threshold\n const score = this.score.score(id);\n if (score < this.opts.scoreThresholds.gossipThreshold) {\n this.log('IWANT: ignoring peer %s with score below threshold [score = %d]', id, score);\n return [];\n }\n const ihave = new Map();\n const iwantByTopic = new Map();\n let iwantDonthave = 0;\n iwant.forEach(({ messageIDs }) => {\n messageIDs?.forEach((msgId) => {\n const msgIdStr = this.msgIdToStrFn(msgId);\n const entry = this.mcache.getWithIWantCount(msgIdStr, id);\n if (entry == null) {\n iwantDonthave++;\n return;\n }\n iwantByTopic.set(entry.msg.topic, 1 + (iwantByTopic.get(entry.msg.topic) ?? 0));\n if (entry.count > constants.GossipsubGossipRetransmission) {\n this.log('IWANT: Peer %s has asked for message %s too many times: ignoring request', id, msgId);\n return;\n }\n ihave.set(msgIdStr, entry.msg);\n });\n });\n this.metrics?.onIwantRcv(iwantByTopic, iwantDonthave);\n if (ihave.size === 0) {\n this.log('IWANT: Could not provide any wanted messages to %s', id);\n return [];\n }\n this.log('IWANT: Sending %d messages to %s', ihave.size, id);\n return Array.from(ihave.values());\n }\n /**\n * Handles Graft messages\n */\n async handleGraft(id, graft) {\n const prune = [];\n const score = this.score.score(id);\n const now = Date.now();\n let doPX = this.opts.doPX;\n graft.forEach(({ topicID }) => {\n if (topicID == null) {\n return;\n }\n const peersInMesh = this.mesh.get(topicID);\n if (peersInMesh == null) {\n // don't do PX when there is an unknown topic to avoid leaking our peers\n doPX = false;\n // spam hardening: ignore GRAFTs for unknown topics\n return;\n }\n // check if peer is already in the mesh; if so do nothing\n if (peersInMesh.has(id)) {\n return;\n }\n // we don't GRAFT to/from direct peers; complain loudly if this happens\n if (this.direct.has(id)) {\n this.log('GRAFT: ignoring request from direct peer %s', id);\n // this is possibly a bug from a non-reciprical configuration; send a PRUNE\n prune.push(topicID);\n // but don't px\n doPX = false;\n return;\n }\n // make sure we are not backing off that peer\n const expire = this.backoff.get(topicID)?.get(id);\n if (typeof expire === 'number' && now < expire) {\n this.log('GRAFT: ignoring backed off peer %s', id);\n // add behavioral penalty\n this.score.addPenalty(id, 1, ScorePenalty.GraftBackoff);\n // no PX\n doPX = false;\n // check the flood cutoff -- is the GRAFT coming too fast?\n const floodCutoff = expire + this.opts.graftFloodThreshold - this.opts.pruneBackoff;\n if (now < floodCutoff) {\n // extra penalty\n this.score.addPenalty(id, 1, ScorePenalty.GraftBackoff);\n }\n // refresh the backoff\n this.addBackoff(id, topicID);\n prune.push(topicID);\n return;\n }\n // check the score\n if (score < 0) {\n // we don't GRAFT peers with negative score\n this.log('GRAFT: ignoring peer %s with negative score: score=%d, topic=%s', id, score, topicID);\n // we do send them PRUNE however, because it's a matter of protocol correctness\n prune.push(topicID);\n // but we won't PX to them\n doPX = false;\n // add/refresh backoff so that we don't reGRAFT too early even if the score decays\n this.addBackoff(id, topicID);\n return;\n }\n // check the number of mesh peers; if it is at (or over) Dhi, we only accept grafts\n // from peers with outbound connections; this is a defensive check to restrict potential\n // mesh takeover attacks combined with love bombing\n if (peersInMesh.size >= this.opts.Dhi && !(this.outbound.get(id) ?? false)) {\n prune.push(topicID);\n this.addBackoff(id, topicID);\n return;\n }\n this.log('GRAFT: Add mesh link from %s in %s', id, topicID);\n this.score.graft(id, topicID);\n peersInMesh.add(id);\n this.metrics?.onAddToMesh(topicID, InclusionReason.Subscribed, 1);\n });\n if (prune.length === 0) {\n return [];\n }\n const onUnsubscribe = false;\n return Promise.all(prune.map(async (topic) => this.makePrune(id, topic, doPX, onUnsubscribe)));\n }\n /**\n * Handles Prune messages\n */\n async handlePrune(id, prune) {\n const score = this.score.score(id);\n for (const { topicID, backoff, peers } of prune) {\n if (topicID == null) {\n continue;\n }\n const peersInMesh = this.mesh.get(topicID);\n if (peersInMesh == null) {\n return;\n }\n this.log('PRUNE: Remove mesh link to %s in %s', id, topicID);\n this.score.prune(id, topicID);\n if (peersInMesh.has(id)) {\n peersInMesh.delete(id);\n this.metrics?.onRemoveFromMesh(topicID, ChurnReason.Prune, 1);\n }\n // is there a backoff specified by the peer? if so obey it\n if (typeof backoff === 'number' && backoff > 0) {\n this.doAddBackoff(id, topicID, backoff * 1000);\n }\n else {\n this.addBackoff(id, topicID);\n }\n // PX\n if ((peers != null) && (peers.length > 0)) {\n // we ignore PX from peers with insufficient scores\n if (score < this.opts.scoreThresholds.acceptPXThreshold) {\n this.log('PRUNE: ignoring PX from peer %s with insufficient score [score = %d, topic = %s]', id, score, topicID);\n continue;\n }\n await this.pxConnect(peers);\n }\n }\n }\n /**\n * Add standard backoff log for a peer in a topic\n */\n addBackoff(id, topic) {\n this.doAddBackoff(id, topic, this.opts.pruneBackoff);\n }\n /**\n * Add backoff expiry interval for a peer in a topic\n *\n * @param id\n * @param topic\n * @param intervalMs - backoff duration in milliseconds\n */\n doAddBackoff(id, topic, intervalMs) {\n let backoff = this.backoff.get(topic);\n if (backoff == null) {\n backoff = new Map();\n this.backoff.set(topic, backoff);\n }\n const expire = Date.now() + intervalMs;\n const existingExpire = backoff.get(id) ?? 0;\n if (existingExpire < expire) {\n backoff.set(id, expire);\n }\n }\n /**\n * Apply penalties from broken IHAVE/IWANT promises\n */\n applyIwantPenalties() {\n this.gossipTracer.getBrokenPromises().forEach((count, p) => {\n this.log(\"peer %s didn't follow up in %d IWANT requests; adding penalty\", p, count);\n this.score.addPenalty(p, count, ScorePenalty.BrokenPromise);\n });\n }\n /**\n * Clear expired backoff expiries\n */\n clearBackoff() {\n // we only clear once every GossipsubPruneBackoffTicks ticks to avoid iterating over the maps too much\n if (this.heartbeatTicks % constants.GossipsubPruneBackoffTicks !== 0) {\n return;\n }\n const now = Date.now();\n this.backoff.forEach((backoff, topic) => {\n backoff.forEach((expire, id) => {\n // add some slack time to the expiration, see https://github.com/libp2p/specs/pull/289\n if (expire + BACKOFF_SLACK * this.opts.heartbeatInterval < now) {\n backoff.delete(id);\n }\n });\n if (backoff.size === 0) {\n this.backoff.delete(topic);\n }\n });\n }\n /**\n * Maybe reconnect to direct peers\n */\n async directConnect() {\n const toconnect = [];\n this.direct.forEach((id) => {\n if (!this.streamsOutbound.has(id)) {\n toconnect.push(id);\n }\n });\n await Promise.all(toconnect.map(async (id) => this.connect(id)));\n }\n /**\n * Maybe attempt connection given signed peer records\n */\n async pxConnect(peers) {\n if (peers.length > this.opts.prunePeers) {\n shuffle(peers);\n peers = peers.slice(0, this.opts.prunePeers);\n }\n const toconnect = [];\n await Promise.all(peers.map(async (pi) => {\n if (pi.peerID == null) {\n return;\n }\n const peer = peerIdFromBytes(pi.peerID);\n const p = peer.toString();\n if (this.peers.has(p)) {\n return;\n }\n if (pi.signedPeerRecord == null) {\n toconnect.push(p);\n return;\n }\n // The peer sent us a signed record\n // This is not a record from the peer who sent the record, but another peer who is connected with it\n // Ensure that it is valid\n try {\n if (!(await this.components.peerStore.consumePeerRecord(pi.signedPeerRecord, peer))) {\n this.log('bogus peer record obtained through px: could not add peer record to address book');\n return;\n }\n toconnect.push(p);\n }\n catch (e) {\n this.log('bogus peer record obtained through px: invalid signature or not a peer record');\n }\n }));\n if (toconnect.length === 0) {\n return;\n }\n await Promise.all(toconnect.map(async (id) => this.connect(id)));\n }\n /**\n * Connect to a peer using the gossipsub protocol\n */\n async connect(id) {\n this.log('Initiating connection with %s', id);\n const peerId = peerIdFromString(id);\n const connection = await this.components.connectionManager.openConnection(peerId);\n for (const multicodec of this.multicodecs) {\n for (const topology of this.components.registrar.getTopologies(multicodec)) {\n topology.onConnect?.(peerId, connection);\n }\n }\n }\n /**\n * Subscribes to a topic\n */\n subscribe(topic) {\n if (this.status.code !== GossipStatusCode.started) {\n throw new Error('Pubsub has not started');\n }\n if (!this.subscriptions.has(topic)) {\n this.subscriptions.add(topic);\n for (const peerId of this.peers.keys()) {\n this.sendSubscriptions(peerId, [topic], true);\n }\n }\n this.join(topic);\n }\n /**\n * Unsubscribe to a topic\n */\n unsubscribe(topic) {\n if (this.status.code !== GossipStatusCode.started) {\n throw new Error('Pubsub is not started');\n }\n const wasSubscribed = this.subscriptions.delete(topic);\n this.log('unsubscribe from %s - am subscribed %s', topic, wasSubscribed);\n if (wasSubscribed) {\n for (const peerId of this.peers.keys()) {\n this.sendSubscriptions(peerId, [topic], false);\n }\n }\n this.leave(topic);\n }\n /**\n * Join topic\n */\n join(topic) {\n if (this.status.code !== GossipStatusCode.started) {\n throw new Error('Gossipsub has not started');\n }\n // if we are already in the mesh, return\n if (this.mesh.has(topic)) {\n return;\n }\n this.log('JOIN %s', topic);\n this.metrics?.onJoin(topic);\n const toAdd = new Set();\n const backoff = this.backoff.get(topic);\n // check if we have mesh_n peers in fanout[topic] and add them to the mesh if we do,\n // removing the fanout entry.\n const fanoutPeers = this.fanout.get(topic);\n if (fanoutPeers != null) {\n // Remove fanout entry and the last published time\n this.fanout.delete(topic);\n this.fanoutLastpub.delete(topic);\n // remove explicit peers, peers with negative scores, and backoffed peers\n fanoutPeers.forEach((id) => {\n if (!this.direct.has(id) && this.score.score(id) >= 0 && ((backoff == null) || !backoff.has(id))) {\n toAdd.add(id);\n }\n });\n this.metrics?.onAddToMesh(topic, InclusionReason.Fanout, toAdd.size);\n }\n // check if we need to get more peers, which we randomly select\n if (toAdd.size < this.opts.D) {\n const fanoutCount = toAdd.size;\n const newPeers = this.getRandomGossipPeers(topic, this.opts.D, (id) => \n // filter direct peers and peers with negative score\n !toAdd.has(id) && !this.direct.has(id) && this.score.score(id) >= 0 && ((backoff == null) || !backoff.has(id)));\n newPeers.forEach((peer) => {\n toAdd.add(peer);\n });\n this.metrics?.onAddToMesh(topic, InclusionReason.Random, toAdd.size - fanoutCount);\n }\n this.mesh.set(topic, toAdd);\n toAdd.forEach((id) => {\n this.log('JOIN: Add mesh link to %s in %s', id, topic);\n this.sendGraft(id, topic);\n // rust-libp2p\n // - peer_score.graft()\n // - Self::control_pool_add()\n // - peer_added_to_mesh()\n });\n }\n /**\n * Leave topic\n */\n leave(topic) {\n if (this.status.code !== GossipStatusCode.started) {\n throw new Error('Gossipsub has not started');\n }\n this.log('LEAVE %s', topic);\n this.metrics?.onLeave(topic);\n // Send PRUNE to mesh peers\n const meshPeers = this.mesh.get(topic);\n if (meshPeers != null) {\n Promise.all(Array.from(meshPeers).map(async (id) => {\n this.log('LEAVE: Remove mesh link to %s in %s', id, topic);\n await this.sendPrune(id, topic);\n })).catch((err) => {\n this.log('Error sending prunes to mesh peers', err);\n });\n this.mesh.delete(topic);\n }\n }\n selectPeersToForward(topic, propagationSource, excludePeers) {\n const tosend = new Set();\n // Add explicit peers\n const peersInTopic = this.topics.get(topic);\n if (peersInTopic != null) {\n this.direct.forEach((peer) => {\n if (peersInTopic.has(peer) && propagationSource !== peer && !(excludePeers?.has(peer) ?? false)) {\n tosend.add(peer);\n }\n });\n // As of Mar 2022, spec + golang-libp2p include this while rust-libp2p does not\n // rust-libp2p: https://github.com/libp2p/rust-libp2p/blob/6cc3b4ec52c922bfcf562a29b5805c3150e37c75/protocols/gossipsub/src/behaviour.rs#L2693\n // spec: https://github.com/libp2p/specs/blob/10712c55ab309086a52eec7d25f294df4fa96528/pubsub/gossipsub/gossipsub-v1.0.md?plain=1#L361\n this.floodsubPeers.forEach((peer) => {\n if (peersInTopic.has(peer) &&\n propagationSource !== peer &&\n !(excludePeers?.has(peer) ?? false) &&\n this.score.score(peer) >= this.opts.scoreThresholds.publishThreshold) {\n tosend.add(peer);\n }\n });\n }\n // add mesh peers\n const meshPeers = this.mesh.get(topic);\n if ((meshPeers != null) && meshPeers.size > 0) {\n meshPeers.forEach((peer) => {\n if (propagationSource !== peer && !(excludePeers?.has(peer) ?? false)) {\n tosend.add(peer);\n }\n });\n }\n return tosend;\n }\n selectPeersToPublish(topic) {\n const tosend = new Set();\n const tosendCount = {\n direct: 0,\n floodsub: 0,\n mesh: 0,\n fanout: 0\n };\n const peersInTopic = this.topics.get(topic);\n if (peersInTopic != null) {\n // flood-publish behavior\n // send to direct peers and _all_ peers meeting the publishThreshold\n if (this.opts.floodPublish) {\n peersInTopic.forEach((id) => {\n if (this.direct.has(id)) {\n tosend.add(id);\n tosendCount.direct++;\n }\n else if (this.score.score(id) >= this.opts.scoreThresholds.publishThreshold) {\n tosend.add(id);\n tosendCount.floodsub++;\n }\n });\n }\n else {\n // non-flood-publish behavior\n // send to direct peers, subscribed floodsub peers\n // and some mesh peers above publishThreshold\n // direct peers (if subscribed)\n this.direct.forEach((id) => {\n if (peersInTopic.has(id)) {\n tosend.add(id);\n tosendCount.direct++;\n }\n });\n // floodsub peers\n // Note: if there are no floodsub peers, we save a loop through peersInTopic Map\n this.floodsubPeers.forEach((id) => {\n if (peersInTopic.has(id) && this.score.score(id) >= this.opts.scoreThresholds.publishThreshold) {\n tosend.add(id);\n tosendCount.floodsub++;\n }\n });\n // Gossipsub peers handling\n const meshPeers = this.mesh.get(topic);\n if ((meshPeers != null) && meshPeers.size > 0) {\n meshPeers.forEach((peer) => {\n tosend.add(peer);\n tosendCount.mesh++;\n });\n // eslint-disable-next-line @typescript-eslint/brace-style\n }\n // We are not in the mesh for topic, use fanout peers\n else {\n const fanoutPeers = this.fanout.get(topic);\n if ((fanoutPeers != null) && fanoutPeers.size > 0) {\n fanoutPeers.forEach((peer) => {\n tosend.add(peer);\n tosendCount.fanout++;\n });\n // eslint-disable-next-line @typescript-eslint/brace-style\n }\n // We have no fanout peers, select mesh_n of them and add them to the fanout\n else {\n // If we are not in the fanout, then pick peers in topic above the publishThreshold\n const newFanoutPeers = this.getRandomGossipPeers(topic, this.opts.D, (id) => {\n return this.score.score(id) >= this.opts.scoreThresholds.publishThreshold;\n });\n // eslint-disable-next-line max-depth\n if (newFanoutPeers.size > 0) {\n this.fanout.set(topic, newFanoutPeers);\n newFanoutPeers.forEach((peer) => {\n tosend.add(peer);\n tosendCount.fanout++;\n });\n }\n }\n // We are publishing to fanout peers - update the time we published\n this.fanoutLastpub.set(topic, Date.now());\n }\n }\n }\n return { tosend, tosendCount };\n }\n /**\n * Forwards a message from our peers.\n *\n * For messages published by us (the app layer), this class uses `publish`\n */\n forwardMessage(msgIdStr, rawMsg, propagationSource, excludePeers) {\n // message is fully validated inform peer_score\n if (propagationSource != null) {\n this.score.deliverMessage(propagationSource, msgIdStr, rawMsg.topic);\n }\n const tosend = this.selectPeersToForward(rawMsg.topic, propagationSource, excludePeers);\n // Note: Don't throw if tosend is empty, we can have a mesh with a single peer\n // forward the message to peers\n tosend.forEach((id) => {\n // sendRpc may mutate RPC message on piggyback, create a new message for each peer\n this.sendRpc(id, { messages: [rawMsg] });\n });\n this.metrics?.onForwardMsg(rawMsg.topic, tosend.size);\n }\n /**\n * App layer publishes a message to peers, return number of peers this message is published to\n * Note: `async` due to crypto only if `StrictSign`, otherwise it's a sync fn.\n *\n * For messages not from us, this class uses `forwardMessage`.\n */\n async publish(topic, data, opts) {\n const startMs = Date.now();\n const transformedData = (this.dataTransform != null) ? this.dataTransform.outboundTransform(topic, data) : data;\n if (this.publishConfig == null) {\n throw Error('PublishError.Uninitialized');\n }\n // Prepare raw message with user's publishConfig\n const { raw: rawMsg, msg } = await buildRawMessage(this.publishConfig, topic, data, transformedData);\n // calculate the message id from the un-transformed data\n const msgId = await this.msgIdFn(msg);\n const msgIdStr = this.msgIdToStrFn(msgId);\n // Current publish opt takes precedence global opts, while preserving false value\n const ignoreDuplicatePublishError = opts?.ignoreDuplicatePublishError ?? this.opts.ignoreDuplicatePublishError;\n if (this.seenCache.has(msgIdStr)) {\n // This message has already been seen. We don't re-publish messages that have already\n // been published on the network.\n if (ignoreDuplicatePublishError) {\n this.metrics?.onPublishDuplicateMsg(topic);\n return { recipients: [] };\n }\n throw Error('PublishError.Duplicate');\n }\n const { tosend, tosendCount } = this.selectPeersToPublish(topic);\n const willSendToSelf = this.opts.emitSelf && this.subscriptions.has(topic);\n // Current publish opt takes precedence global opts, while preserving false value\n const allowPublishToZeroPeers = opts?.allowPublishToZeroPeers ?? this.opts.allowPublishToZeroPeers;\n if (tosend.size === 0 && !allowPublishToZeroPeers && !willSendToSelf) {\n throw Error('PublishError.InsufficientPeers');\n }\n // If the message isn't a duplicate and we have sent it to some peers add it to the\n // duplicate cache and memcache.\n this.seenCache.put(msgIdStr);\n // all published messages are valid\n this.mcache.put({ msgId, msgIdStr }, rawMsg, true);\n // If the message is anonymous or has a random author add it to the published message ids cache.\n this.publishedMessageIds.put(msgIdStr);\n const batchPublish = opts?.batchPublish ?? this.opts.batchPublish;\n const rpc = { messages: [rawMsg] };\n if (batchPublish) {\n this.sendRpcInBatch(tosend, rpc);\n }\n else {\n // Send to set of peers aggregated from direct, mesh, fanout\n for (const id of tosend) {\n // sendRpc may mutate RPC message on piggyback, create a new message for each peer\n const sent = this.sendRpc(id, rpc);\n // did not actually send the message\n if (!sent) {\n tosend.delete(id);\n }\n }\n }\n const durationMs = Date.now() - startMs;\n this.metrics?.onPublishMsg(topic, tosendCount, tosend.size, rawMsg.data != null ? rawMsg.data.length : 0, durationMs);\n // Dispatch the message to the user if we are subscribed to the topic\n if (willSendToSelf) {\n tosend.add(this.components.peerId.toString());\n super.dispatchEvent(new CustomEvent('gossipsub:message', {\n detail: {\n propagationSource: this.components.peerId,\n msgId: msgIdStr,\n msg\n }\n }));\n // TODO: Add option to switch between emit per topic or all messages in one\n super.dispatchEvent(new CustomEvent('message', { detail: msg }));\n }\n return {\n recipients: Array.from(tosend.values()).map((str) => peerIdFromString(str))\n };\n }\n /**\n * Send the same data in batch to tosend list without considering cached control messages\n * This is not only faster but also avoid allocating memory for each peer\n * see https://github.com/ChainSafe/js-libp2p-gossipsub/issues/344\n */\n sendRpcInBatch(tosend, rpc) {\n const rpcBytes = RPC.encode(rpc).finish();\n const prefixedData = encode.single(rpcBytes);\n for (const id of tosend) {\n const outboundStream = this.streamsOutbound.get(id);\n if (outboundStream == null) {\n this.log(`Cannot send RPC to ${id} as there is no open stream to it available`);\n tosend.delete(id);\n continue;\n }\n try {\n outboundStream.pushPrefixed(prefixedData);\n }\n catch (e) {\n tosend.delete(id);\n this.log.error(`Cannot send rpc to ${id}`, e);\n }\n this.metrics?.onRpcSent(rpc, rpcBytes.length);\n }\n }\n /**\n * This function should be called when `asyncValidation` is `true` after\n * the message got validated by the caller. Messages are stored in the `mcache` and\n * validation is expected to be fast enough that the messages should still exist in the cache.\n * There are three possible validation outcomes and the outcome is given in acceptance.\n *\n * If acceptance = `MessageAcceptance.Accept` the message will get propagated to the\n * network. The `propagation_source` parameter indicates who the message was received by and\n * will not be forwarded back to that peer.\n *\n * If acceptance = `MessageAcceptance.Reject` the message will be deleted from the memcache\n * and the P₄ penalty will be applied to the `propagationSource`.\n *\n * If acceptance = `MessageAcceptance.Ignore` the message will be deleted from the memcache\n * but no P₄ penalty will be applied.\n *\n * This function will return true if the message was found in the cache and false if was not\n * in the cache anymore.\n *\n * This should only be called once per message.\n */\n reportMessageValidationResult(msgId, propagationSource, acceptance) {\n let cacheEntry;\n if (acceptance === TopicValidatorResult.Accept) {\n cacheEntry = this.mcache.validate(msgId);\n if (cacheEntry != null) {\n const { message: rawMsg, originatingPeers } = cacheEntry;\n // message is fully validated inform peer_score\n this.score.deliverMessage(propagationSource, msgId, rawMsg.topic);\n this.forwardMessage(msgId, cacheEntry.message, propagationSource, originatingPeers);\n }\n // else, Message not in cache. Ignoring forwarding\n // eslint-disable-next-line @typescript-eslint/brace-style\n }\n // Not valid\n else {\n cacheEntry = this.mcache.remove(msgId);\n if (cacheEntry != null) {\n const rejectReason = rejectReasonFromAcceptance(acceptance);\n const { message: rawMsg, originatingPeers } = cacheEntry;\n // Tell peer_score about reject\n // Reject the original source, and any duplicates we've seen from other peers.\n this.score.rejectMessage(propagationSource, msgId, rawMsg.topic, rejectReason);\n for (const peer of originatingPeers) {\n this.score.rejectMessage(peer, msgId, rawMsg.topic, rejectReason);\n }\n }\n // else, Message not in cache. Ignoring forwarding\n }\n const firstSeenTimestampMs = this.score.messageFirstSeenTimestampMs(msgId);\n this.metrics?.onReportValidation(cacheEntry, acceptance, firstSeenTimestampMs);\n }\n /**\n * Sends a GRAFT message to a peer\n */\n sendGraft(id, topic) {\n const graft = [\n {\n topicID: topic\n }\n ];\n this.sendRpc(id, { control: { graft } });\n }\n /**\n * Sends a PRUNE message to a peer\n */\n async sendPrune(id, topic) {\n // this is only called from leave() function\n const onUnsubscribe = true;\n const prune = [await this.makePrune(id, topic, this.opts.doPX, onUnsubscribe)];\n this.sendRpc(id, { control: { prune } });\n }\n /**\n * Send an rpc object to a peer\n */\n sendRpc(id, rpc) {\n const outboundStream = this.streamsOutbound.get(id);\n if (outboundStream == null) {\n this.log(`Cannot send RPC to ${id} as there is no open stream to it available`);\n return false;\n }\n // piggyback control message retries\n const ctrl = this.control.get(id);\n if (ctrl != null) {\n this.piggybackControl(id, rpc, ctrl);\n this.control.delete(id);\n }\n // piggyback gossip\n const ihave = this.gossip.get(id);\n if (ihave != null) {\n this.piggybackGossip(id, rpc, ihave);\n this.gossip.delete(id);\n }\n const rpcBytes = RPC.encode(rpc).finish();\n try {\n outboundStream.push(rpcBytes);\n }\n catch (e) {\n this.log.error(`Cannot send rpc to ${id}`, e);\n // if the peer had control messages or gossip, re-attach\n if (ctrl != null) {\n this.control.set(id, ctrl);\n }\n if (ihave != null) {\n this.gossip.set(id, ihave);\n }\n return false;\n }\n this.metrics?.onRpcSent(rpc, rpcBytes.length);\n return true;\n }\n /** Mutates `outRpc` adding graft and prune control messages */\n piggybackControl(id, outRpc, ctrl) {\n if (ctrl.graft != null) {\n if (outRpc.control == null)\n outRpc.control = {};\n if (outRpc.control.graft == null)\n outRpc.control.graft = [];\n for (const graft of ctrl.graft) {\n if (graft.topicID != null && (this.mesh.get(graft.topicID)?.has(id) ?? false)) {\n outRpc.control.graft.push(graft);\n }\n }\n }\n if (ctrl.prune != null) {\n if (outRpc.control == null)\n outRpc.control = {};\n if (outRpc.control.prune == null)\n outRpc.control.prune = [];\n for (const prune of ctrl.prune) {\n if (prune.topicID != null && !(this.mesh.get(prune.topicID)?.has(id) ?? false)) {\n outRpc.control.prune.push(prune);\n }\n }\n }\n }\n /** Mutates `outRpc` adding ihave control messages */\n piggybackGossip(id, outRpc, ihave) {\n if (outRpc.control == null)\n outRpc.control = {};\n outRpc.control.ihave = ihave;\n }\n /**\n * Send graft and prune messages\n *\n * @param tograft - peer id => topic[]\n * @param toprune - peer id => topic[]\n */\n async sendGraftPrune(tograft, toprune, noPX) {\n const doPX = this.opts.doPX;\n const onUnsubscribe = false;\n for (const [id, topics] of tograft) {\n const graft = topics.map((topicID) => ({ topicID }));\n let prune = [];\n // If a peer also has prunes, process them now\n const pruning = toprune.get(id);\n if (pruning != null) {\n prune = await Promise.all(pruning.map(async (topicID) => this.makePrune(id, topicID, doPX && !(noPX.get(id) ?? false), onUnsubscribe)));\n toprune.delete(id);\n }\n this.sendRpc(id, { control: { graft, prune } });\n }\n for (const [id, topics] of toprune) {\n const prune = await Promise.all(topics.map(async (topicID) => this.makePrune(id, topicID, doPX && !(noPX.get(id) ?? false), onUnsubscribe)));\n this.sendRpc(id, { control: { prune } });\n }\n }\n /**\n * Emits gossip - Send IHAVE messages to a random set of gossip peers\n */\n emitGossip(peersToGossipByTopic) {\n const gossipIDsByTopic = this.mcache.getGossipIDs(new Set(peersToGossipByTopic.keys()));\n for (const [topic, peersToGossip] of peersToGossipByTopic) {\n this.doEmitGossip(topic, peersToGossip, gossipIDsByTopic.get(topic) ?? []);\n }\n }\n /**\n * Send gossip messages to GossipFactor peers above threshold with a minimum of D_lazy\n * Peers are randomly selected from the heartbeat which exclude mesh + fanout peers\n * We also exclude direct peers, as there is no reason to emit gossip to them\n *\n * @param topic\n * @param candidateToGossip - peers to gossip\n * @param messageIDs - message ids to gossip\n */\n doEmitGossip(topic, candidateToGossip, messageIDs) {\n if (messageIDs.length === 0) {\n return;\n }\n // shuffle to emit in random order\n shuffle(messageIDs);\n // if we are emitting more than GossipsubMaxIHaveLength ids, truncate the list\n if (messageIDs.length > constants.GossipsubMaxIHaveLength) {\n // we do the truncation (with shuffling) per peer below\n this.log('too many messages for gossip; will truncate IHAVE list (%d messages)', messageIDs.length);\n }\n if (candidateToGossip.size === 0)\n return;\n let target = this.opts.Dlazy;\n const factor = constants.GossipsubGossipFactor * candidateToGossip.size;\n let peersToGossip = candidateToGossip;\n if (factor > target) {\n target = factor;\n }\n if (target > peersToGossip.size) {\n target = peersToGossip.size;\n }\n else {\n // only shuffle if needed\n peersToGossip = shuffle(Array.from(peersToGossip)).slice(0, target);\n }\n // Emit the IHAVE gossip to the selected peers up to the target\n peersToGossip.forEach((id) => {\n let peerMessageIDs = messageIDs;\n if (messageIDs.length > constants.GossipsubMaxIHaveLength) {\n // shuffle and slice message IDs per peer so that we emit a different set for each peer\n // we have enough reduncancy in the system that this will significantly increase the message\n // coverage when we do truncate\n peerMessageIDs = shuffle(peerMessageIDs.slice()).slice(0, constants.GossipsubMaxIHaveLength);\n }\n this.pushGossip(id, {\n topicID: topic,\n messageIDs: peerMessageIDs\n });\n });\n }\n /**\n * Flush gossip and control messages\n */\n flush() {\n // send gossip first, which will also piggyback control\n for (const [peer, ihave] of this.gossip.entries()) {\n this.gossip.delete(peer);\n this.sendRpc(peer, { control: { ihave } });\n }\n // send the remaining control messages\n for (const [peer, control] of this.control.entries()) {\n this.control.delete(peer);\n this.sendRpc(peer, { control: { graft: control.graft, prune: control.prune } });\n }\n }\n /**\n * Adds new IHAVE messages to pending gossip\n */\n pushGossip(id, controlIHaveMsgs) {\n this.log('Add gossip to %s', id);\n const gossip = this.gossip.get(id) ?? [];\n this.gossip.set(id, gossip.concat(controlIHaveMsgs));\n }\n /**\n * Make a PRUNE control message for a peer in a topic\n */\n async makePrune(id, topic, doPX, onUnsubscribe) {\n this.score.prune(id, topic);\n if (this.streamsOutbound.get(id)?.protocol === constants.GossipsubIDv10) {\n // Gossipsub v1.0 -- no backoff, the peer won't be able to parse it anyway\n return {\n topicID: topic,\n peers: []\n };\n }\n // backoff is measured in seconds\n // GossipsubPruneBackoff and GossipsubUnsubscribeBackoff are measured in milliseconds\n // The protobuf has it as a uint64\n const backoffMs = onUnsubscribe ? this.opts.unsubcribeBackoff : this.opts.pruneBackoff;\n const backoff = backoffMs / 1000;\n this.doAddBackoff(id, topic, backoffMs);\n if (!doPX) {\n return {\n topicID: topic,\n peers: [],\n backoff\n };\n }\n // select peers for Peer eXchange\n const peers = this.getRandomGossipPeers(topic, this.opts.prunePeers, (xid) => {\n return xid !== id && this.score.score(xid) >= 0;\n });\n const px = await Promise.all(Array.from(peers).map(async (peerId) => {\n // see if we have a signed record to send back; if we don't, just send\n // the peer ID and let the pruned peer find them in the DHT -- we can't trust\n // unsigned address records through PX anyways\n // Finding signed records in the DHT is not supported at the time of writing in js-libp2p\n const id = peerIdFromString(peerId);\n let peerInfo;\n try {\n peerInfo = await this.components.peerStore.get(id);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n return {\n peerID: id.toBytes(),\n signedPeerRecord: peerInfo?.peerRecordEnvelope\n };\n }));\n return {\n topicID: topic,\n peers: px,\n backoff\n };\n }\n runHeartbeat = () => {\n const timer = this.metrics?.heartbeatDuration.startTimer();\n this.heartbeat()\n .catch((err) => {\n this.log('Error running heartbeat', err);\n })\n .finally(() => {\n if (timer != null) {\n timer();\n }\n // Schedule the next run if still in started status\n if (this.status.code === GossipStatusCode.started) {\n // Clear previous timeout before overwriting `status.heartbeatTimeout`, it should be completed tho.\n clearTimeout(this.status.heartbeatTimeout);\n // NodeJS setInterval function is innexact, calls drift by a few miliseconds on each call.\n // To run the heartbeat precisely setTimeout() must be used recomputing the delay on every loop.\n let msToNextHeartbeat = this.opts.heartbeatInterval - ((Date.now() - this.status.hearbeatStartMs) % this.opts.heartbeatInterval);\n // If too close to next heartbeat, skip one\n if (msToNextHeartbeat < this.opts.heartbeatInterval * 0.25) {\n msToNextHeartbeat += this.opts.heartbeatInterval;\n this.metrics?.heartbeatSkipped.inc();\n }\n this.status.heartbeatTimeout = setTimeout(this.runHeartbeat, msToNextHeartbeat);\n }\n });\n };\n /**\n * Maintains the mesh and fanout maps in gossipsub.\n */\n async heartbeat() {\n const { D, Dlo, Dhi, Dscore, Dout, fanoutTTL } = this.opts;\n this.heartbeatTicks++;\n // cache scores throught the heartbeat\n const scores = new Map();\n const getScore = (id) => {\n let s = scores.get(id);\n if (s === undefined) {\n s = this.score.score(id);\n scores.set(id, s);\n }\n return s;\n };\n // peer id => topic[]\n const tograft = new Map();\n // peer id => topic[]\n const toprune = new Map();\n // peer id => don't px\n const noPX = new Map();\n // clean up expired backoffs\n this.clearBackoff();\n // clean up peerhave/iasked counters\n this.peerhave.clear();\n this.metrics?.cacheSize.set({ cache: 'iasked' }, this.iasked.size);\n this.iasked.clear();\n // apply IWANT request penalties\n this.applyIwantPenalties();\n // ensure direct peers are connected\n if (this.heartbeatTicks % this.opts.directConnectTicks === 0) {\n // we only do this every few ticks to allow pending connections to complete and account for restarts/downtime\n await this.directConnect();\n }\n // EXTRA: Prune caches\n this.fastMsgIdCache?.prune();\n this.seenCache.prune();\n this.gossipTracer.prune();\n this.publishedMessageIds.prune();\n /**\n * Instead of calling getRandomGossipPeers multiple times to:\n * + get more mesh peers\n * + more outbound peers\n * + oppportunistic grafting\n * + emitGossip\n *\n * We want to loop through the topic peers only a single time and prepare gossip peers for all topics to improve the performance\n */\n const peersToGossipByTopic = new Map();\n // maintain the mesh for topics we have joined\n // eslint-disable-next-line complexity\n this.mesh.forEach((peers, topic) => {\n const peersInTopic = this.topics.get(topic);\n const candidateMeshPeers = new Set();\n const peersToGossip = new Set();\n peersToGossipByTopic.set(topic, peersToGossip);\n if (peersInTopic != null) {\n const shuffledPeers = shuffle(Array.from(peersInTopic));\n const backoff = this.backoff.get(topic);\n for (const id of shuffledPeers) {\n const peerStreams = this.streamsOutbound.get(id);\n if ((peerStreams != null) &&\n this.multicodecs.includes(peerStreams.protocol) &&\n !peers.has(id) &&\n !this.direct.has(id)) {\n const score = getScore(id);\n if (((backoff == null) || !backoff.has(id)) && score >= 0)\n candidateMeshPeers.add(id);\n // instead of having to find gossip peers after heartbeat which require another loop\n // we prepare peers to gossip in a topic within heartbeat to improve performance\n if (score >= this.opts.scoreThresholds.gossipThreshold)\n peersToGossip.add(id);\n }\n }\n }\n // prune/graft helper functions (defined per topic)\n const prunePeer = (id, reason) => {\n this.log('HEARTBEAT: Remove mesh link to %s in %s', id, topic);\n // no need to update peer score here as we do it in makePrune\n // add prune backoff record\n this.addBackoff(id, topic);\n // remove peer from mesh\n peers.delete(id);\n // after pruning a peer from mesh, we want to gossip topic to it if its score meet the gossip threshold\n if (getScore(id) >= this.opts.scoreThresholds.gossipThreshold)\n peersToGossip.add(id);\n this.metrics?.onRemoveFromMesh(topic, reason, 1);\n // add to toprune\n const topics = toprune.get(id);\n if (topics == null) {\n toprune.set(id, [topic]);\n }\n else {\n topics.push(topic);\n }\n };\n const graftPeer = (id, reason) => {\n this.log('HEARTBEAT: Add mesh link to %s in %s', id, topic);\n // update peer score\n this.score.graft(id, topic);\n // add peer to mesh\n peers.add(id);\n // when we add a new mesh peer, we don't want to gossip messages to it\n peersToGossip.delete(id);\n this.metrics?.onAddToMesh(topic, reason, 1);\n // add to tograft\n const topics = tograft.get(id);\n if (topics == null) {\n tograft.set(id, [topic]);\n }\n else {\n topics.push(topic);\n }\n };\n // drop all peers with negative score, without PX\n peers.forEach((id) => {\n const score = getScore(id);\n // Record the score\n if (score < 0) {\n this.log('HEARTBEAT: Prune peer %s with negative score: score=%d, topic=%s', id, score, topic);\n prunePeer(id, ChurnReason.BadScore);\n noPX.set(id, true);\n }\n });\n // do we have enough peers?\n if (peers.size < Dlo) {\n const ineed = D - peers.size;\n // slice up to first `ineed` items and remove them from candidateMeshPeers\n // same to `const newMeshPeers = candidateMeshPeers.slice(0, ineed)`\n const newMeshPeers = removeFirstNItemsFromSet(candidateMeshPeers, ineed);\n newMeshPeers.forEach((p) => {\n graftPeer(p, InclusionReason.NotEnough);\n });\n }\n // do we have to many peers?\n if (peers.size > Dhi) {\n let peersArray = Array.from(peers);\n // sort by score\n peersArray.sort((a, b) => getScore(b) - getScore(a));\n // We keep the first D_score peers by score and the remaining up to D randomly\n // under the constraint that we keep D_out peers in the mesh (if we have that many)\n peersArray = peersArray.slice(0, Dscore).concat(shuffle(peersArray.slice(Dscore)));\n // count the outbound peers we are keeping\n let outbound = 0;\n peersArray.slice(0, D).forEach((p) => {\n if (this.outbound.get(p) ?? false) {\n outbound++;\n }\n });\n // if it's less than D_out, bubble up some outbound peers from the random selection\n if (outbound < Dout) {\n const rotate = (i) => {\n // rotate the peersArray to the right and put the ith peer in the front\n const p = peersArray[i];\n for (let j = i; j > 0; j--) {\n peersArray[j] = peersArray[j - 1];\n }\n peersArray[0] = p;\n };\n // first bubble up all outbound peers already in the selection to the front\n if (outbound > 0) {\n let ihave = outbound;\n for (let i = 1; i < D && ihave > 0; i++) {\n // eslint-disable-next-line max-depth\n if (this.outbound.get(peersArray[i]) ?? false) {\n rotate(i);\n ihave--;\n }\n }\n }\n // now bubble up enough outbound peers outside the selection to the front\n let ineed = D - outbound;\n for (let i = D; i < peersArray.length && ineed > 0; i++) {\n if (this.outbound.get(peersArray[i]) ?? false) {\n rotate(i);\n ineed--;\n }\n }\n }\n // prune the excess peers\n peersArray.slice(D).forEach((p) => {\n prunePeer(p, ChurnReason.Excess);\n });\n }\n // do we have enough outbound peers?\n if (peers.size >= Dlo) {\n // count the outbound peers we have\n let outbound = 0;\n peers.forEach((p) => {\n if (this.outbound.get(p) ?? false) {\n outbound++;\n }\n });\n // if it's less than D_out, select some peers with outbound connections and graft them\n if (outbound < Dout) {\n const ineed = Dout - outbound;\n const newMeshPeers = removeItemsFromSet(candidateMeshPeers, ineed, (id) => this.outbound.get(id) === true);\n newMeshPeers.forEach((p) => {\n graftPeer(p, InclusionReason.Outbound);\n });\n }\n }\n // should we try to improve the mesh with opportunistic grafting?\n if (this.heartbeatTicks % this.opts.opportunisticGraftTicks === 0 && peers.size > 1) {\n // Opportunistic grafting works as follows: we check the median score of peers in the\n // mesh; if this score is below the opportunisticGraftThreshold, we select a few peers at\n // random with score over the median.\n // The intention is to (slowly) improve an underperforming mesh by introducing good\n // scoring peers that may have been gossiping at us. This allows us to get out of sticky\n // situations where we are stuck with poor peers and also recover from churn of good peers.\n // now compute the median peer score in the mesh\n const peersList = Array.from(peers).sort((a, b) => getScore(a) - getScore(b));\n const medianIndex = Math.floor(peers.size / 2);\n const medianScore = getScore(peersList[medianIndex]);\n // if the median score is below the threshold, select a better peer (if any) and GRAFT\n if (medianScore < this.opts.scoreThresholds.opportunisticGraftThreshold) {\n const ineed = this.opts.opportunisticGraftPeers;\n const newMeshPeers = removeItemsFromSet(candidateMeshPeers, ineed, (id) => getScore(id) > medianScore);\n for (const id of newMeshPeers) {\n this.log('HEARTBEAT: Opportunistically graft peer %s on topic %s', id, topic);\n graftPeer(id, InclusionReason.Opportunistic);\n }\n }\n }\n });\n // expire fanout for topics we haven't published to in a while\n const now = Date.now();\n this.fanoutLastpub.forEach((lastpb, topic) => {\n if (lastpb + fanoutTTL < now) {\n this.fanout.delete(topic);\n this.fanoutLastpub.delete(topic);\n }\n });\n // maintain our fanout for topics we are publishing but we have not joined\n this.fanout.forEach((fanoutPeers, topic) => {\n // checks whether our peers are still in the topic and have a score above the publish threshold\n const topicPeers = this.topics.get(topic);\n fanoutPeers.forEach((id) => {\n if (!(topicPeers?.has(id) ?? false) || getScore(id) < this.opts.scoreThresholds.publishThreshold) {\n fanoutPeers.delete(id);\n }\n });\n const peersInTopic = this.topics.get(topic);\n const candidateFanoutPeers = [];\n // the fanout map contains topics to which we are not subscribed.\n const peersToGossip = new Set();\n peersToGossipByTopic.set(topic, peersToGossip);\n if (peersInTopic != null) {\n const shuffledPeers = shuffle(Array.from(peersInTopic));\n for (const id of shuffledPeers) {\n const peerStreams = this.streamsOutbound.get(id);\n if ((peerStreams != null) &&\n this.multicodecs.includes(peerStreams.protocol) &&\n !fanoutPeers.has(id) &&\n !this.direct.has(id)) {\n const score = getScore(id);\n if (score >= this.opts.scoreThresholds.publishThreshold)\n candidateFanoutPeers.push(id);\n // instead of having to find gossip peers after heartbeat which require another loop\n // we prepare peers to gossip in a topic within heartbeat to improve performance\n if (score >= this.opts.scoreThresholds.gossipThreshold)\n peersToGossip.add(id);\n }\n }\n }\n // do we need more peers?\n if (fanoutPeers.size < D) {\n const ineed = D - fanoutPeers.size;\n candidateFanoutPeers.slice(0, ineed).forEach((id) => {\n fanoutPeers.add(id);\n peersToGossip?.delete(id);\n });\n }\n });\n this.emitGossip(peersToGossipByTopic);\n // send coalesced GRAFT/PRUNE messages (will piggyback gossip)\n await this.sendGraftPrune(tograft, toprune, noPX);\n // flush pending gossip that wasn't piggybacked above\n this.flush();\n // advance the message history window\n this.mcache.shift();\n this.dispatchEvent(new CustomEvent('gossipsub:heartbeat'));\n }\n /**\n * Given a topic, returns up to count peers subscribed to that topic\n * that pass an optional filter function\n *\n * @param topic\n * @param count\n * @param filter - a function to filter acceptable peers\n */\n getRandomGossipPeers(topic, count, filter = () => true) {\n const peersInTopic = this.topics.get(topic);\n if (peersInTopic == null) {\n return new Set();\n }\n // Adds all peers using our protocol\n // that also pass the filter function\n let peers = [];\n peersInTopic.forEach((id) => {\n const peerStreams = this.streamsOutbound.get(id);\n if (peerStreams == null) {\n return;\n }\n if (this.multicodecs.includes(peerStreams.protocol) && filter(id)) {\n peers.push(id);\n }\n });\n // Pseudo-randomly shuffles peers\n peers = shuffle(peers);\n if (count > 0 && peers.length > count) {\n peers = peers.slice(0, count);\n }\n return new Set(peers);\n }\n onScrapeMetrics(metrics) {\n /* Data structure sizes */\n metrics.mcacheSize.set(this.mcache.size);\n metrics.mcacheNotValidatedCount.set(this.mcache.notValidatedCount);\n // Arbitrary size\n metrics.cacheSize.set({ cache: 'direct' }, this.direct.size);\n metrics.cacheSize.set({ cache: 'seenCache' }, this.seenCache.size);\n metrics.cacheSize.set({ cache: 'fastMsgIdCache' }, this.fastMsgIdCache?.size ?? 0);\n metrics.cacheSize.set({ cache: 'publishedMessageIds' }, this.publishedMessageIds.size);\n metrics.cacheSize.set({ cache: 'mcache' }, this.mcache.size);\n metrics.cacheSize.set({ cache: 'score' }, this.score.size);\n metrics.cacheSize.set({ cache: 'gossipTracer.promises' }, this.gossipTracer.size);\n metrics.cacheSize.set({ cache: 'gossipTracer.requests' }, this.gossipTracer.requestMsByMsgSize);\n // Bounded by topic\n metrics.cacheSize.set({ cache: 'topics' }, this.topics.size);\n metrics.cacheSize.set({ cache: 'subscriptions' }, this.subscriptions.size);\n metrics.cacheSize.set({ cache: 'mesh' }, this.mesh.size);\n metrics.cacheSize.set({ cache: 'fanout' }, this.fanout.size);\n // Bounded by peer\n metrics.cacheSize.set({ cache: 'peers' }, this.peers.size);\n metrics.cacheSize.set({ cache: 'streamsOutbound' }, this.streamsOutbound.size);\n metrics.cacheSize.set({ cache: 'streamsInbound' }, this.streamsInbound.size);\n metrics.cacheSize.set({ cache: 'acceptFromWhitelist' }, this.acceptFromWhitelist.size);\n metrics.cacheSize.set({ cache: 'gossip' }, this.gossip.size);\n metrics.cacheSize.set({ cache: 'control' }, this.control.size);\n metrics.cacheSize.set({ cache: 'peerhave' }, this.peerhave.size);\n metrics.cacheSize.set({ cache: 'outbound' }, this.outbound.size);\n // 2D nested data structure\n let backoffSize = 0;\n const now = Date.now();\n metrics.connectedPeersBackoffSec.reset();\n for (const backoff of this.backoff.values()) {\n backoffSize += backoff.size;\n for (const [peer, expiredMs] of backoff.entries()) {\n if (this.peers.has(peer)) {\n metrics.connectedPeersBackoffSec.observe(Math.max(0, expiredMs - now) / 1000);\n }\n }\n }\n metrics.cacheSize.set({ cache: 'backoff' }, backoffSize);\n // Peer counts\n for (const [topicStr, peers] of this.topics) {\n metrics.topicPeersCount.set({ topicStr }, peers.size);\n }\n for (const [topicStr, peers] of this.mesh) {\n metrics.meshPeerCounts.set({ topicStr }, peers.size);\n }\n // Peer scores\n const scores = [];\n const scoreByPeer = new Map();\n metrics.behaviourPenalty.reset();\n for (const peerIdStr of this.peers.keys()) {\n const score = this.score.score(peerIdStr);\n scores.push(score);\n scoreByPeer.set(peerIdStr, score);\n metrics.behaviourPenalty.observe(this.score.peerStats.get(peerIdStr)?.behaviourPenalty ?? 0);\n }\n metrics.registerScores(scores, this.opts.scoreThresholds);\n // Breakdown score per mesh topicLabel\n metrics.registerScorePerMesh(this.mesh, scoreByPeer);\n // Breakdown on each score weight\n const sw = computeAllPeersScoreWeights(this.peers.keys(), this.score.peerStats, this.score.params, this.score.peerIPs, metrics.topicStrToLabel);\n metrics.registerScoreWeights(sw);\n }\n}\nexport function gossipsub(init = {}) {\n return (components) => new GossipSub(components, init);\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * A pushable async generator that waits until the current value is consumed\n * before allowing a new value to be pushed.\n *\n * Useful for when you don't want to keep memory usage under control and/or\n * allow a downstream consumer to dictate how fast data flows through a pipe,\n * but you want to be able to apply a transform to that data.\n *\n * @example\n *\n * ```typescript\n * import { queuelessPushable } from 'it-queueless-pushable'\n *\n * const pushable = queuelessPushable()\n *\n * // run asynchronously\n * Promise.resolve().then(async () => {\n * // push a value - the returned promise will not resolve until the value is\n * // read from the pushable\n * await pushable.push('hello')\n * })\n *\n * // read a value\n * const result = await pushable.next()\n * console.info(result) // { done: false, value: 'hello' }\n * ```\n */\nimport deferred, {} from 'p-defer';\nimport { raceSignal } from 'race-signal';\nclass QueuelessPushable {\n readNext;\n haveNext;\n ended;\n nextResult;\n constructor() {\n this.ended = false;\n this.readNext = deferred();\n this.haveNext = deferred();\n }\n [Symbol.asyncIterator]() {\n return this;\n }\n async next() {\n if (this.nextResult == null) {\n // wait for the supplier to push a value\n await this.haveNext.promise;\n }\n if (this.nextResult == null) {\n throw new Error('HaveNext promise resolved but nextResult was undefined');\n }\n const nextResult = this.nextResult;\n this.nextResult = undefined;\n // signal to the supplier that we read the value\n this.readNext.resolve();\n this.readNext = deferred();\n return nextResult;\n }\n async throw(err) {\n this.ended = true;\n if (err != null) {\n // this can cause unhandled promise rejections if nothing is awaiting the\n // next value so attach a dummy catch listener to the promise\n this.haveNext.promise.catch(() => { });\n this.haveNext.reject(err);\n }\n const result = {\n done: true,\n value: undefined\n };\n return result;\n }\n async return() {\n const result = {\n done: true,\n value: undefined\n };\n await this._push(undefined);\n return result;\n }\n async push(value, options) {\n await this._push(value, options);\n }\n async end(err, options) {\n if (err != null) {\n await this.throw(err);\n }\n else {\n // abortable return\n await this._push(undefined, options);\n }\n }\n async _push(value, options) {\n if (value != null && this.ended) {\n throw new Error('Cannot push value onto an ended pushable');\n }\n // wait for all values to be read\n while (this.nextResult != null) {\n await this.readNext.promise;\n }\n if (value != null) {\n this.nextResult = { done: false, value };\n }\n else {\n this.ended = true;\n this.nextResult = { done: true, value: undefined };\n }\n // let the consumer know we have a new value\n this.haveNext.resolve();\n this.haveNext = deferred();\n // wait for the consumer to have finished processing the value and requested\n // the next one or for the passed signal to abort the waiting\n await raceSignal(this.readNext.promise, options?.signal, options);\n }\n}\nexport function queuelessPushable() {\n return new QueuelessPushable();\n}\n//# sourceMappingURL=index.js.map","/**\n * The incoming stream ended before the expected number of bytes were read\n */\nexport class UnexpectedEOFError extends Error {\n name = 'UnexpectedEOFError';\n code = 'ERR_UNEXPECTED_EOF';\n}\n//# sourceMappingURL=errors.js.map","/**\n * @packageDocumentation\n *\n * This module makes it easy to send and receive bytes over streams.\n *\n * @example\n *\n * ```typescript\n * import { byteStream } from 'it-byte-stream'\n *\n * const stream = byteStream(duplex)\n *\n * // read the next chunk\n * const bytes = await stream.read()\n *\n * // read the next five bytes\n * const fiveBytes = await stream.read(5)\n *\n * // write bytes into the stream\n * await stream.write(Uint8Array.from([0, 1, 2, 3, 4]))\n * ```\n */\nimport { queuelessPushable } from 'it-queueless-pushable';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { UnexpectedEOFError } from './errors.js';\n/**\n * @deprecated This will not be exported in a future release\n */\nexport class CodeError extends Error {\n code;\n constructor(message, code) {\n super(message);\n this.code = code;\n }\n}\n/**\n * @deprecated This will not be exported in a future release\n */\nexport class AbortError extends CodeError {\n type;\n constructor(message) {\n super(message, 'ABORT_ERR');\n this.type = 'aborted';\n this.name = 'AbortError';\n }\n}\nexport function byteStream(duplex, opts) {\n const write = queuelessPushable();\n duplex.sink(write).catch(async (err) => {\n await write.end(err);\n });\n duplex.sink = async (source) => {\n for await (const buf of source) {\n await write.push(buf);\n }\n await write.end();\n };\n let source = duplex.source;\n if (duplex.source[Symbol.iterator] != null) {\n source = duplex.source[Symbol.iterator]();\n }\n else if (duplex.source[Symbol.asyncIterator] != null) {\n source = duplex.source[Symbol.asyncIterator]();\n }\n const readBuffer = new Uint8ArrayList();\n const W = {\n read: async (bytes, options) => {\n options?.signal?.throwIfAborted();\n let listener;\n const abortPromise = new Promise((resolve, reject) => {\n listener = () => {\n reject(new AbortError('Read aborted'));\n };\n options?.signal?.addEventListener('abort', listener);\n });\n try {\n if (bytes == null) {\n // just read whatever arrives\n const { done, value } = await Promise.race([\n source.next(),\n abortPromise\n ]);\n if (done === true) {\n return new Uint8ArrayList();\n }\n return value;\n }\n while (readBuffer.byteLength < bytes) {\n const { value, done } = await Promise.race([\n source.next(),\n abortPromise\n ]);\n if (done === true) {\n throw new UnexpectedEOFError('unexpected end of input');\n }\n readBuffer.append(value);\n }\n const buf = readBuffer.sublist(0, bytes);\n readBuffer.consume(bytes);\n return buf;\n }\n finally {\n if (listener != null) {\n options?.signal?.removeEventListener('abort', listener);\n }\n }\n },\n write: async (data, options) => {\n options?.signal?.throwIfAborted();\n // just write\n if (data instanceof Uint8Array) {\n await write.push(data, options);\n }\n else {\n await write.push(data.subarray(), options);\n }\n },\n unwrap: () => {\n if (readBuffer.byteLength > 0) {\n const originalStream = duplex.source;\n duplex.source = (async function* () {\n if (opts?.yieldBytes === false) {\n yield readBuffer;\n }\n else {\n yield* readBuffer;\n }\n yield* originalStream;\n }());\n }\n return duplex;\n }\n };\n return W;\n}\n//# sourceMappingURL=index.js.map","/**\n * The reported length of the next data message was not a positive integer\n */\nexport class InvalidMessageLengthError extends Error {\n name = 'InvalidMessageLengthError';\n code = 'ERR_INVALID_MSG_LENGTH';\n}\n/**\n * The reported length of the next data message was larger than the configured\n * max allowable value\n */\nexport class InvalidDataLengthError extends Error {\n name = 'InvalidDataLengthError';\n code = 'ERR_MSG_DATA_TOO_LONG';\n}\n/**\n * The varint used to specify the length of the next data message contained more\n * bytes than the configured max allowable value\n */\nexport class InvalidDataLengthLengthError extends Error {\n name = 'InvalidDataLengthLengthError';\n code = 'ERR_MSG_LENGTH_TOO_LONG';\n}\n//# sourceMappingURL=errors.js.map","/**\n * @packageDocumentation\n *\n * This module makes it easy to send and receive length-prefixed byte arrays over streams.\n *\n * @example\n *\n * ```typescript\n * import { lpStream } from 'it-length-prefixed-stream'\n *\n * const stream = lpStream(duplex)\n *\n * // read the next length-prefixed chunk\n * const bytes = await stream.read()\n *\n * // write a length-prefixed chunk\n * await stream.write(Uint8Array.from([0, 1, 2, 3, 4]))\n *\n * // write several chunks, all individually length-prefixed\n * await stream.writeV([\n * Uint8Array.from([0, 1, 2, 3, 4]),\n * Uint8Array.from([5, 6, 7, 8, 9])\n * ])\n * ```\n */\nimport { byteStream } from 'it-byte-stream';\nimport * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { InvalidDataLengthError, InvalidDataLengthLengthError, InvalidMessageLengthError } from './errors.js';\nexport function lpStream(duplex, opts = {}) {\n const bytes = byteStream(duplex, opts);\n if (opts.maxDataLength != null && opts.maxLengthLength == null) {\n // if max data length is set but max length length is not, calculate the\n // max length length needed to encode max data length\n opts.maxLengthLength = varint.encodingLength(opts.maxDataLength);\n }\n const decodeLength = opts?.lengthDecoder ?? varint.decode;\n const encodeLength = opts?.lengthEncoder ?? varint.encode;\n const W = {\n read: async (options) => {\n let dataLength = -1;\n const lengthBuffer = new Uint8ArrayList();\n while (true) {\n // read one byte at a time until we can decode a varint\n lengthBuffer.append(await bytes.read(1, options));\n try {\n dataLength = decodeLength(lengthBuffer);\n }\n catch (err) {\n if (err instanceof RangeError) {\n continue;\n }\n throw err;\n }\n if (dataLength < 0) {\n throw new InvalidMessageLengthError('Invalid message length');\n }\n if (opts?.maxLengthLength != null && lengthBuffer.byteLength > opts.maxLengthLength) {\n throw new InvalidDataLengthLengthError('message length length too long');\n }\n if (dataLength > -1) {\n break;\n }\n }\n if (opts?.maxDataLength != null && dataLength > opts.maxDataLength) {\n throw new InvalidDataLengthError('message length too long');\n }\n return bytes.read(dataLength, options);\n },\n write: async (data, options) => {\n // encode, write\n await bytes.write(new Uint8ArrayList(encodeLength(data.byteLength), data), options);\n },\n writeV: async (data, options) => {\n const list = new Uint8ArrayList(...data.flatMap(buf => ([encodeLength(buf.byteLength), buf])));\n // encode, write\n await bytes.write(list, options);\n },\n unwrap: () => {\n return bytes.unwrap();\n }\n };\n return W;\n}\n//# sourceMappingURL=index.js.map","import defer from 'p-defer';\n/**\n * A pair of streams where one drains from the other\n */\nexport function pair() {\n const deferred = defer();\n let piped = false;\n return {\n sink: async (source) => {\n if (piped) {\n throw new Error('already piped');\n }\n piped = true;\n deferred.resolve(source);\n },\n source: (async function* () {\n const source = await deferred.promise;\n yield* source;\n }())\n };\n}\n//# sourceMappingURL=index.js.map","import { pair } from './index.js';\n/**\n * Two duplex streams that are attached to each other\n */\nexport function duplexPair() {\n const a = pair();\n const b = pair();\n return [\n {\n source: a.source,\n sink: b.sink\n },\n {\n source: b.source,\n sink: a.sink\n }\n ];\n}\n//# sourceMappingURL=duplex.js.map","export const NOISE_MSG_MAX_LENGTH_BYTES = 65535;\nexport const NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG = NOISE_MSG_MAX_LENGTH_BYTES - 16;\nexport const DUMP_SESSION_KEYS = Boolean(globalThis.process?.env?.DUMP_SESSION_KEYS);\n//# sourceMappingURL=constants.js.map","/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u16 = (arr) => new Uint16Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 2));\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// big-endian hardware is rare. Just in case someone still decides to run ciphers:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!isBytes(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\nexport function bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n else if (isBytes(data))\n data = data.slice();\n else\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n if (!isBytes(a))\n throw new Error('Uint8Array expected');\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n throw new Error('options must be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function ensureBytes(b, len) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (typeof len === 'number')\n if (b.length !== len)\n throw new Error(`Uint8Array length ${len} expected`);\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n// For runtime check if class implements interface\nexport class Hash {\n}\nexport const wrapCipher = (params, c) => {\n Object.assign(c, params);\n return c;\n};\n// Polyfill for Safari 14\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\nexport function u64Lengths(ciphertext, AAD) {\n const num = new Uint8Array(16);\n const view = createView(num);\n setBigUint64(view, 0, BigInt(AAD ? AAD.length : 0), true);\n setBigUint64(view, 8, BigInt(ciphertext.length), true);\n return num;\n}\n//# sourceMappingURL=utils.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`boolean expected, not ${b}`);\n}\n// TODO: merge with utils\nfunction isBytes(a) {\n return (a != null &&\n typeof a === 'object' &&\n (a instanceof Uint8Array || a.constructor.name === 'Uint8Array'));\n}\nfunction bytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('hash must be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","import { exists as aexists, output as aoutput } from './_assert.js';\nimport { ensureBytes, toBytes } from './utils.js';\n// Poly1305 is a fast and parallel secret-key message-authentication code.\n// https://cr.yp.to/mac.html, https://cr.yp.to/mac/poly1305-20050329.pdf\n// https://datatracker.ietf.org/doc/html/rfc8439\n// Based on Public Domain poly1305-donna https://github.com/floodyberry/poly1305-donna\nconst u8to16 = (a, i) => (a[i++] & 0xff) | ((a[i++] & 0xff) << 8);\nclass Poly1305 {\n constructor(key) {\n this.blockLen = 16;\n this.outputLen = 16;\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.pos = 0;\n this.finished = false;\n key = toBytes(key);\n ensureBytes(key, 32);\n const t0 = u8to16(key, 0);\n const t1 = u8to16(key, 2);\n const t2 = u8to16(key, 4);\n const t3 = u8to16(key, 6);\n const t4 = u8to16(key, 8);\n const t5 = u8to16(key, 10);\n const t6 = u8to16(key, 12);\n const t7 = u8to16(key, 14);\n // https://github.com/floodyberry/poly1305-donna/blob/e6ad6e091d30d7f4ec2d4f978be1fcfcbce72781/poly1305-donna-16.h#L47\n this.r[0] = t0 & 0x1fff;\n this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = (t4 >>> 1) & 0x1ffe;\n this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = (t7 >>> 5) & 0x007f;\n for (let i = 0; i < 8; i++)\n this.pad[i] = u8to16(key, 16 + 2 * i);\n }\n process(data, offset, isLast = false) {\n const hibit = isLast ? 0 : 1 << 11;\n const { h, r } = this;\n const r0 = r[0];\n const r1 = r[1];\n const r2 = r[2];\n const r3 = r[3];\n const r4 = r[4];\n const r5 = r[5];\n const r6 = r[6];\n const r7 = r[7];\n const r8 = r[8];\n const r9 = r[9];\n const t0 = u8to16(data, offset + 0);\n const t1 = u8to16(data, offset + 2);\n const t2 = u8to16(data, offset + 4);\n const t3 = u8to16(data, offset + 6);\n const t4 = u8to16(data, offset + 8);\n const t5 = u8to16(data, offset + 10);\n const t6 = u8to16(data, offset + 12);\n const t7 = u8to16(data, offset + 14);\n let h0 = h[0] + (t0 & 0x1fff);\n let h1 = h[1] + (((t0 >>> 13) | (t1 << 3)) & 0x1fff);\n let h2 = h[2] + (((t1 >>> 10) | (t2 << 6)) & 0x1fff);\n let h3 = h[3] + (((t2 >>> 7) | (t3 << 9)) & 0x1fff);\n let h4 = h[4] + (((t3 >>> 4) | (t4 << 12)) & 0x1fff);\n let h5 = h[5] + ((t4 >>> 1) & 0x1fff);\n let h6 = h[6] + (((t4 >>> 14) | (t5 << 2)) & 0x1fff);\n let h7 = h[7] + (((t5 >>> 11) | (t6 << 5)) & 0x1fff);\n let h8 = h[8] + (((t6 >>> 8) | (t7 << 8)) & 0x1fff);\n let h9 = h[9] + ((t7 >>> 5) | hibit);\n let c = 0;\n let d0 = c + h0 * r0 + h1 * (5 * r9) + h2 * (5 * r8) + h3 * (5 * r7) + h4 * (5 * r6);\n c = d0 >>> 13;\n d0 &= 0x1fff;\n d0 += h5 * (5 * r5) + h6 * (5 * r4) + h7 * (5 * r3) + h8 * (5 * r2) + h9 * (5 * r1);\n c += d0 >>> 13;\n d0 &= 0x1fff;\n let d1 = c + h0 * r1 + h1 * r0 + h2 * (5 * r9) + h3 * (5 * r8) + h4 * (5 * r7);\n c = d1 >>> 13;\n d1 &= 0x1fff;\n d1 += h5 * (5 * r6) + h6 * (5 * r5) + h7 * (5 * r4) + h8 * (5 * r3) + h9 * (5 * r2);\n c += d1 >>> 13;\n d1 &= 0x1fff;\n let d2 = c + h0 * r2 + h1 * r1 + h2 * r0 + h3 * (5 * r9) + h4 * (5 * r8);\n c = d2 >>> 13;\n d2 &= 0x1fff;\n d2 += h5 * (5 * r7) + h6 * (5 * r6) + h7 * (5 * r5) + h8 * (5 * r4) + h9 * (5 * r3);\n c += d2 >>> 13;\n d2 &= 0x1fff;\n let d3 = c + h0 * r3 + h1 * r2 + h2 * r1 + h3 * r0 + h4 * (5 * r9);\n c = d3 >>> 13;\n d3 &= 0x1fff;\n d3 += h5 * (5 * r8) + h6 * (5 * r7) + h7 * (5 * r6) + h8 * (5 * r5) + h9 * (5 * r4);\n c += d3 >>> 13;\n d3 &= 0x1fff;\n let d4 = c + h0 * r4 + h1 * r3 + h2 * r2 + h3 * r1 + h4 * r0;\n c = d4 >>> 13;\n d4 &= 0x1fff;\n d4 += h5 * (5 * r9) + h6 * (5 * r8) + h7 * (5 * r7) + h8 * (5 * r6) + h9 * (5 * r5);\n c += d4 >>> 13;\n d4 &= 0x1fff;\n let d5 = c + h0 * r5 + h1 * r4 + h2 * r3 + h3 * r2 + h4 * r1;\n c = d5 >>> 13;\n d5 &= 0x1fff;\n d5 += h5 * r0 + h6 * (5 * r9) + h7 * (5 * r8) + h8 * (5 * r7) + h9 * (5 * r6);\n c += d5 >>> 13;\n d5 &= 0x1fff;\n let d6 = c + h0 * r6 + h1 * r5 + h2 * r4 + h3 * r3 + h4 * r2;\n c = d6 >>> 13;\n d6 &= 0x1fff;\n d6 += h5 * r1 + h6 * r0 + h7 * (5 * r9) + h8 * (5 * r8) + h9 * (5 * r7);\n c += d6 >>> 13;\n d6 &= 0x1fff;\n let d7 = c + h0 * r7 + h1 * r6 + h2 * r5 + h3 * r4 + h4 * r3;\n c = d7 >>> 13;\n d7 &= 0x1fff;\n d7 += h5 * r2 + h6 * r1 + h7 * r0 + h8 * (5 * r9) + h9 * (5 * r8);\n c += d7 >>> 13;\n d7 &= 0x1fff;\n let d8 = c + h0 * r8 + h1 * r7 + h2 * r6 + h3 * r5 + h4 * r4;\n c = d8 >>> 13;\n d8 &= 0x1fff;\n d8 += h5 * r3 + h6 * r2 + h7 * r1 + h8 * r0 + h9 * (5 * r9);\n c += d8 >>> 13;\n d8 &= 0x1fff;\n let d9 = c + h0 * r9 + h1 * r8 + h2 * r7 + h3 * r6 + h4 * r5;\n c = d9 >>> 13;\n d9 &= 0x1fff;\n d9 += h5 * r4 + h6 * r3 + h7 * r2 + h8 * r1 + h9 * r0;\n c += d9 >>> 13;\n d9 &= 0x1fff;\n c = ((c << 2) + c) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = c >>> 13;\n d1 += c;\n h[0] = d0;\n h[1] = d1;\n h[2] = d2;\n h[3] = d3;\n h[4] = d4;\n h[5] = d5;\n h[6] = d6;\n h[7] = d7;\n h[8] = d8;\n h[9] = d9;\n }\n finalize() {\n const { h, pad } = this;\n const g = new Uint16Array(10);\n let c = h[1] >>> 13;\n h[1] &= 0x1fff;\n for (let i = 2; i < 10; i++) {\n h[i] += c;\n c = h[i] >>> 13;\n h[i] &= 0x1fff;\n }\n h[0] += c * 5;\n c = h[0] >>> 13;\n h[0] &= 0x1fff;\n h[1] += c;\n c = h[1] >>> 13;\n h[1] &= 0x1fff;\n h[2] += c;\n g[0] = h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (let i = 1; i < 10; i++) {\n g[i] = h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= 1 << 13;\n let mask = (c ^ 1) - 1;\n for (let i = 0; i < 10; i++)\n g[i] &= mask;\n mask = ~mask;\n for (let i = 0; i < 10; i++)\n h[i] = (h[i] & mask) | g[i];\n h[0] = (h[0] | (h[1] << 13)) & 0xffff;\n h[1] = ((h[1] >>> 3) | (h[2] << 10)) & 0xffff;\n h[2] = ((h[2] >>> 6) | (h[3] << 7)) & 0xffff;\n h[3] = ((h[3] >>> 9) | (h[4] << 4)) & 0xffff;\n h[4] = ((h[4] >>> 12) | (h[5] << 1) | (h[6] << 14)) & 0xffff;\n h[5] = ((h[6] >>> 2) | (h[7] << 11)) & 0xffff;\n h[6] = ((h[7] >>> 5) | (h[8] << 8)) & 0xffff;\n h[7] = ((h[8] >>> 8) | (h[9] << 5)) & 0xffff;\n let f = h[0] + pad[0];\n h[0] = f & 0xffff;\n for (let i = 1; i < 8; i++) {\n f = (((h[i] + pad[i]) | 0) + (f >>> 16)) | 0;\n h[i] = f & 0xffff;\n }\n }\n update(data) {\n aexists(this);\n const { buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input\n if (take === blockLen) {\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(data, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(buffer, 0, false);\n this.pos = 0;\n }\n }\n return this;\n }\n destroy() {\n this.h.fill(0);\n this.r.fill(0);\n this.buffer.fill(0);\n this.pad.fill(0);\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n const { buffer, h } = this;\n let { pos } = this;\n if (pos) {\n buffer[pos++] = 1;\n // buffer.subarray(pos).fill(0);\n for (; pos < 16; pos++)\n buffer[pos] = 0;\n this.process(buffer, 0, true);\n }\n this.finalize();\n let opos = 0;\n for (let i = 0; i < 8; i++) {\n out[opos++] = h[i] >>> 0;\n out[opos++] = h[i] >>> 8;\n }\n return out;\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n}\nexport function wrapConstructorWithKey(hashCons) {\n const hashC = (msg, key) => hashCons(key).update(toBytes(msg)).digest();\n const tmp = hashCons(new Uint8Array(32));\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (key) => hashCons(key);\n return hashC;\n}\nexport const poly1305 = wrapConstructorWithKey((key) => new Poly1305(key));\n//# sourceMappingURL=_poly1305.js.map","// Basic utils for ARX (add-rotate-xor) salsa and chacha ciphers.\nimport { number as anumber, bytes as abytes, bool as abool } from './_assert.js';\nimport { checkOpts, u32, utf8ToBytes } from './utils.js';\n/*\nRFC8439 requires multi-step cipher stream, where\nauthKey starts with counter: 0, actual msg with counter: 1.\n\nFor this, we need a way to re-use nonce / counter:\n\n const counter = new Uint8Array(4);\n chacha(..., counter, ...); // counter is now 1\n chacha(..., counter, ...); // counter is now 2\n\nThis is complicated:\n\n- 32-bit counters are enough, no need for 64-bit: max ArrayBuffer size in JS is 4GB\n- Original papers don't allow mutating counters\n- Counter overflow is undefined [^1]\n- Idea A: allow providing (nonce | counter) instead of just nonce, re-use it\n- Caveat: Cannot be re-used through all cases:\n- * chacha has (counter | nonce)\n- * xchacha has (nonce16 | counter | nonce16)\n- Idea B: separate nonce / counter and provide separate API for counter re-use\n- Caveat: there are different counter sizes depending on an algorithm.\n- salsa & chacha also differ in structures of key & sigma:\n salsa20: s[0] | k(4) | s[1] | nonce(2) | ctr(2) | s[2] | k(4) | s[3]\n chacha: s(4) | k(8) | ctr(1) | nonce(3)\n chacha20orig: s(4) | k(8) | ctr(2) | nonce(2)\n- Idea C: helper method such as `setSalsaState(key, nonce, sigma, data)`\n- Caveat: we can't re-use counter array\n\nxchacha [^2] uses the subkey and remaining 8 byte nonce with ChaCha20 as normal\n(prefixed by 4 NUL bytes, since [RFC8439] specifies a 12-byte nonce).\n\n[^1]: https://mailarchive.ietf.org/arch/msg/cfrg/gsOnTJzcbgG6OqD8Sc0GO5aR_tU/\n[^2]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha#appendix-A.2\n*/\nconst sigma16 = utf8ToBytes('expand 16-byte k');\nconst sigma32 = utf8ToBytes('expand 32-byte k');\nconst sigma16_32 = u32(sigma16);\nconst sigma32_32 = u32(sigma32);\nexport function rotl(a, b) {\n return (a << b) | (a >>> (32 - b));\n}\n// Is byte array aligned to 4 byte offset (u32)?\nfunction isAligned32(b) {\n return b.byteOffset % 4 === 0;\n}\n// Salsa and Chacha block length is always 512-bit\nconst BLOCK_LEN = 64;\nconst BLOCK_LEN32 = 16;\n// new Uint32Array([2**32]) // => Uint32Array(1) [ 0 ]\n// new Uint32Array([2**32-1]) // => Uint32Array(1) [ 4294967295 ]\nconst MAX_COUNTER = 2 ** 32 - 1;\nconst U32_EMPTY = new Uint32Array();\nfunction runCipher(core, sigma, key, nonce, data, output, counter, rounds) {\n const len = data.length;\n const block = new Uint8Array(BLOCK_LEN);\n const b32 = u32(block);\n // Make sure that buffers aligned to 4 bytes\n const isAligned = isAligned32(data) && isAligned32(output);\n const d32 = isAligned ? u32(data) : U32_EMPTY;\n const o32 = isAligned ? u32(output) : U32_EMPTY;\n for (let pos = 0; pos < len; counter++) {\n core(sigma, key, nonce, b32, counter, rounds);\n if (counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n const take = Math.min(BLOCK_LEN, len - pos);\n // aligned to 4 bytes\n if (isAligned && take === BLOCK_LEN) {\n const pos32 = pos / 4;\n if (pos % 4 !== 0)\n throw new Error('arx: invalid block position');\n for (let j = 0, posj; j < BLOCK_LEN32; j++) {\n posj = pos32 + j;\n o32[posj] = d32[posj] ^ b32[j];\n }\n pos += BLOCK_LEN;\n continue;\n }\n for (let j = 0, posj; j < take; j++) {\n posj = pos + j;\n output[posj] = data[posj] ^ block[j];\n }\n pos += take;\n }\n}\nexport function createCipher(core, opts) {\n const { allowShortKeys, extendNonceFn, counterLength, counterRight, rounds } = checkOpts({ allowShortKeys: false, counterLength: 8, counterRight: false, rounds: 20 }, opts);\n if (typeof core !== 'function')\n throw new Error('core must be a function');\n anumber(counterLength);\n anumber(rounds);\n abool(counterRight);\n abool(allowShortKeys);\n return (key, nonce, data, output, counter = 0) => {\n abytes(key);\n abytes(nonce);\n abytes(data);\n const len = data.length;\n if (!output)\n output = new Uint8Array(len);\n abytes(output);\n anumber(counter);\n if (counter < 0 || counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n if (output.length < len)\n throw new Error(`arx: output (${output.length}) is shorter than data (${len})`);\n const toClean = [];\n // Key & sigma\n // key=16 -> sigma16, k=key|key\n // key=32 -> sigma32, k=key\n let l = key.length, k, sigma;\n if (l === 32) {\n k = key.slice();\n toClean.push(k);\n sigma = sigma32_32;\n }\n else if (l === 16 && allowShortKeys) {\n k = new Uint8Array(32);\n k.set(key);\n k.set(key, 16);\n sigma = sigma16_32;\n toClean.push(k);\n }\n else {\n throw new Error(`arx: invalid 32-byte key, got length=${l}`);\n }\n // Nonce\n // salsa20: 8 (8-byte counter)\n // chacha20orig: 8 (8-byte counter)\n // chacha20: 12 (4-byte counter)\n // xsalsa20: 24 (16 -> hsalsa, 8 -> old nonce)\n // xchacha20: 24 (16 -> hchacha, 8 -> old nonce)\n // Align nonce to 4 bytes\n if (!isAligned32(nonce)) {\n nonce = nonce.slice();\n toClean.push(nonce);\n }\n const k32 = u32(k);\n // hsalsa & hchacha: handle extended nonce\n if (extendNonceFn) {\n if (nonce.length !== 24)\n throw new Error(`arx: extended nonce must be 24 bytes`);\n extendNonceFn(sigma, k32, u32(nonce.subarray(0, 16)), k32);\n nonce = nonce.subarray(16);\n }\n // Handle nonce counter\n const nonceNcLen = 16 - counterLength;\n if (nonceNcLen !== nonce.length)\n throw new Error(`arx: nonce must be ${nonceNcLen} or 16 bytes`);\n // Pad counter when nonce is 64 bit\n if (nonceNcLen !== 12) {\n const nc = new Uint8Array(12);\n nc.set(nonce, counterRight ? 0 : 12 - nonce.length);\n nonce = nc;\n toClean.push(nonce);\n }\n const n32 = u32(nonce);\n runCipher(core, sigma, k32, n32, data, output, counter, rounds);\n while (toClean.length > 0)\n toClean.pop().fill(0);\n return output;\n };\n}\n//# sourceMappingURL=_arx.js.map","import { wrapCipher, createView, ensureBytes, equalBytes, setBigUint64, } from './utils.js';\nimport { poly1305 } from './_poly1305.js';\nimport { createCipher, rotl } from './_arx.js';\n// ChaCha20 stream cipher was released in 2008. ChaCha aims to increase\n// the diffusion per round, but had slightly less cryptanalysis.\n// https://cr.yp.to/chacha.html, http://cr.yp.to/chacha/chacha-20080128.pdf\n/**\n * ChaCha core function.\n */\n// prettier-ignore\nfunction chachaCore(s, k, n, out, cnt, rounds = 20) {\n let y00 = s[0], y01 = s[1], y02 = s[2], y03 = s[3], // \"expa\" \"nd 3\" \"2-by\" \"te k\"\n y04 = k[0], y05 = k[1], y06 = k[2], y07 = k[3], // Key Key Key Key\n y08 = k[4], y09 = k[5], y10 = k[6], y11 = k[7], // Key Key Key Key\n y12 = cnt, y13 = n[0], y14 = n[1], y15 = n[2]; // Counter Counter\tNonce Nonce\n // Save state to temporary variables\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n for (let r = 0; r < rounds; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n // Write output\n let oi = 0;\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\n/**\n * hchacha helper method, used primarily in xchacha, to hash\n * key and nonce into key' and nonce'.\n * Same as chachaCore, but there doesn't seem to be a way to move the block\n * out without 25% performance hit.\n */\n// prettier-ignore\nexport function hchacha(s, k, i, o32) {\n let x00 = s[0], x01 = s[1], x02 = s[2], x03 = s[3], x04 = k[0], x05 = k[1], x06 = k[2], x07 = k[3], x08 = k[4], x09 = k[5], x10 = k[6], x11 = k[7], x12 = i[0], x13 = i[1], x14 = i[2], x15 = i[3];\n for (let r = 0; r < 20; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n let oi = 0;\n o32[oi++] = x00;\n o32[oi++] = x01;\n o32[oi++] = x02;\n o32[oi++] = x03;\n o32[oi++] = x12;\n o32[oi++] = x13;\n o32[oi++] = x14;\n o32[oi++] = x15;\n}\n/**\n * Original, non-RFC chacha20 from DJB. 8-byte nonce, 8-byte counter.\n */\nexport const chacha20orig = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n allowShortKeys: true,\n});\n/**\n * ChaCha stream cipher. Conforms to RFC 8439 (IETF, TLS). 12-byte nonce, 4-byte counter.\n * With 12-byte nonce, it's not safe to use fill it with random (CSPRNG), due to collision chance.\n */\nexport const chacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n allowShortKeys: false,\n});\n/**\n * XChaCha eXtended-nonce ChaCha. 24-byte nonce.\n * With 24-byte nonce, it's safe to use fill it with random (CSPRNG).\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha\n */\nexport const xchacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n extendNonceFn: hchacha,\n allowShortKeys: false,\n});\n/**\n * Reduced 8-round chacha, described in original paper.\n */\nexport const chacha8 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 8,\n});\n/**\n * Reduced 12-round chacha, described in original paper.\n */\nexport const chacha12 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 12,\n});\nconst ZEROS16 = /* @__PURE__ */ new Uint8Array(16);\n// Pad to digest size with zeros\nconst updatePadded = (h, msg) => {\n h.update(msg);\n const left = msg.length % 16;\n if (left)\n h.update(ZEROS16.subarray(left));\n};\nconst ZEROS32 = /* @__PURE__ */ new Uint8Array(32);\nfunction computeTag(fn, key, nonce, data, AAD) {\n const authKey = fn(key, nonce, ZEROS32);\n const h = poly1305.create(authKey);\n if (AAD)\n updatePadded(h, AAD);\n updatePadded(h, data);\n const num = new Uint8Array(16);\n const view = createView(num);\n setBigUint64(view, 0, BigInt(AAD ? AAD.length : 0), true);\n setBigUint64(view, 8, BigInt(data.length), true);\n h.update(num);\n const res = h.digest();\n authKey.fill(0);\n return res;\n}\n/**\n * AEAD algorithm from RFC 8439.\n * Salsa20 and chacha (RFC 8439) use poly1305 differently.\n * We could have composed them similar to:\n * https://github.com/paulmillr/scure-base/blob/b266c73dde977b1dd7ef40ef7a23cc15aab526b3/index.ts#L250\n * But it's hard because of authKey:\n * In salsa20, authKey changes position in salsa stream.\n * In chacha, authKey can't be computed inside computeTag, it modifies the counter.\n */\nexport const _poly1305_aead = (xorStream) => (key, nonce, AAD) => {\n const tagLength = 16;\n ensureBytes(key, 32);\n ensureBytes(nonce);\n return {\n encrypt: (plaintext, output) => {\n const plength = plaintext.length;\n const clength = plength + tagLength;\n if (output) {\n ensureBytes(output, clength);\n }\n else {\n output = new Uint8Array(clength);\n }\n xorStream(key, nonce, plaintext, output, 1);\n const tag = computeTag(xorStream, key, nonce, output.subarray(0, -tagLength), AAD);\n output.set(tag, plength); // append tag\n return output;\n },\n decrypt: (ciphertext, output) => {\n const clength = ciphertext.length;\n const plength = clength - tagLength;\n if (clength < tagLength)\n throw new Error(`encrypted data must be at least ${tagLength} bytes`);\n if (output) {\n ensureBytes(output, plength);\n }\n else {\n output = new Uint8Array(plength);\n }\n const data = ciphertext.subarray(0, -tagLength);\n const passedTag = ciphertext.subarray(-tagLength);\n const tag = computeTag(xorStream, key, nonce, data, AAD);\n if (!equalBytes(passedTag, tag))\n throw new Error('invalid tag');\n xorStream(key, nonce, data, output, 1);\n return output;\n },\n };\n};\n/**\n * ChaCha20-Poly1305 from RFC 8439.\n * With 12-byte nonce, it's not safe to use fill it with random (CSPRNG), due to collision chance.\n */\nexport const chacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 12, tagLength: 16 }, _poly1305_aead(chacha20));\n/**\n * XChaCha20-Poly1305 extended-nonce chacha.\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha\n * With 24-byte nonce, it's safe to use fill it with random (CSPRNG).\n */\nexport const xchacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 24, tagLength: 16 }, _poly1305_aead(xchacha20));\n//# sourceMappingURL=chacha.js.map","import { hash as assertHash, number as assertNumber } from './_assert.js';\nimport { toBytes } from './utils.js';\nimport { hmac } from './hmac.js';\n// HKDF (RFC 5869)\n// https://soatok.blog/2021/11/17/understanding-hkdf/\n/**\n * HKDF-Extract(IKM, salt) -> PRK\n * Arguments position differs from spec (IKM is first one, since it is not optional)\n * @param hash\n * @param ikm\n * @param salt\n * @returns\n */\nexport function extract(hash, ikm, salt) {\n assertHash(hash);\n // NOTE: some libraries treat zero-length array as 'not provided';\n // we don't, since we have undefined as 'not provided'\n // https://github.com/RustCrypto/KDFs/issues/15\n if (salt === undefined)\n salt = new Uint8Array(hash.outputLen); // if not provided, it is set to a string of HashLen zeros\n return hmac(hash, toBytes(salt), toBytes(ikm));\n}\n// HKDF-Expand(PRK, info, L) -> OKM\nconst HKDF_COUNTER = /* @__PURE__ */ new Uint8Array([0]);\nconst EMPTY_BUFFER = /* @__PURE__ */ new Uint8Array();\n/**\n * HKDF-expand from the spec.\n * @param prk - a pseudorandom key of at least HashLen octets (usually, the output from the extract step)\n * @param info - optional context and application specific information (can be a zero-length string)\n * @param length - length of output keying material in octets\n */\nexport function expand(hash, prk, info, length = 32) {\n assertHash(hash);\n assertNumber(length);\n if (length > 255 * hash.outputLen)\n throw new Error('Length should be <= 255*HashLen');\n const blocks = Math.ceil(length / hash.outputLen);\n if (info === undefined)\n info = EMPTY_BUFFER;\n // first L(ength) octets of T\n const okm = new Uint8Array(blocks * hash.outputLen);\n // Re-use HMAC instance between blocks\n const HMAC = hmac.create(hash, prk);\n const HMACTmp = HMAC._cloneInto();\n const T = new Uint8Array(HMAC.outputLen);\n for (let counter = 0; counter < blocks; counter++) {\n HKDF_COUNTER[0] = counter + 1;\n // T(0) = empty string (zero length)\n // T(N) = HMAC-Hash(PRK, T(N-1) | info | N)\n HMACTmp.update(counter === 0 ? EMPTY_BUFFER : T)\n .update(info)\n .update(HKDF_COUNTER)\n .digestInto(T);\n okm.set(T, hash.outputLen * counter);\n HMAC._cloneInto(HMACTmp);\n }\n HMAC.destroy();\n HMACTmp.destroy();\n T.fill(0);\n HKDF_COUNTER.fill(0);\n return okm.slice(0, length);\n}\n/**\n * HKDF (RFC 5869): extract + expand in one step.\n * @param hash - hash function that would be used (e.g. sha256)\n * @param ikm - input keying material, the initial key\n * @param salt - optional salt value (a non-secret random value)\n * @param info - optional context and application specific information\n * @param length - length of output keying material in octets\n */\nexport const hkdf = (hash, ikm, salt, info, length) => expand(hash, extract(hash, ikm, salt), info, length);\n//# sourceMappingURL=hkdf.js.map","import { chacha20poly1305 } from '@noble/ciphers/chacha';\nimport { x25519 } from '@noble/curves/ed25519';\nimport { extract, expand } from '@noble/hashes/hkdf';\nimport { sha256 } from '@noble/hashes/sha256';\nexport const pureJsCrypto = {\n hashSHA256(data) {\n return sha256(data.subarray());\n },\n getHKDF(ck, ikm) {\n const prk = extract(sha256, ikm, ck);\n const okmU8Array = expand(sha256, prk, undefined, 96);\n const okm = okmU8Array;\n const k1 = okm.subarray(0, 32);\n const k2 = okm.subarray(32, 64);\n const k3 = okm.subarray(64, 96);\n return [k1, k2, k3];\n },\n generateX25519KeyPair() {\n const secretKey = x25519.utils.randomPrivateKey();\n const publicKey = x25519.getPublicKey(secretKey);\n return {\n publicKey,\n privateKey: secretKey\n };\n },\n generateX25519KeyPairFromSeed(seed) {\n const publicKey = x25519.getPublicKey(seed);\n return {\n publicKey,\n privateKey: seed\n };\n },\n generateX25519SharedKey(privateKey, publicKey) {\n return x25519.getSharedSecret(privateKey.subarray(), publicKey.subarray());\n },\n chaCha20Poly1305Encrypt(plaintext, nonce, ad, k) {\n return chacha20poly1305(k, nonce, ad).encrypt(plaintext.subarray());\n },\n chaCha20Poly1305Decrypt(ciphertext, nonce, ad, k, dst) {\n return chacha20poly1305(k, nonce, ad).decrypt(ciphertext.subarray(), dst);\n }\n};\n//# sourceMappingURL=js.js.map","import { pureJsCrypto } from './js.js';\nexport const defaultCrypto = pureJsCrypto;\n//# sourceMappingURL=index.browser.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { alloc as uint8ArrayAlloc, allocUnsafe as uint8ArrayAllocUnsafe } from 'uint8arrays/alloc';\nexport const uint16BEEncode = (value) => {\n const target = uint8ArrayAllocUnsafe(2);\n new DataView(target.buffer, target.byteOffset, target.byteLength).setUint16(0, value, false);\n return target;\n};\nuint16BEEncode.bytes = 2;\nexport const uint16BEDecode = (data) => {\n if (data.length < 2)\n throw RangeError('Could not decode int16BE');\n if (data instanceof Uint8Array) {\n return new DataView(data.buffer, data.byteOffset, data.byteLength).getUint16(0, false);\n }\n return data.getUint16(0);\n};\nuint16BEDecode.bytes = 2;\n// Note: IK and XX encoder usage is opposite (XX uses in stages encode0 where IK uses encode1)\nexport function encode0(message) {\n return new Uint8ArrayList(message.ne, message.ciphertext);\n}\nexport function encode1(message) {\n return new Uint8ArrayList(message.ne, message.ns, message.ciphertext);\n}\nexport function encode2(message) {\n return new Uint8ArrayList(message.ns, message.ciphertext);\n}\nexport function decode0(input) {\n if (input.length < 32) {\n throw new Error('Cannot decode stage 0 MessageBuffer: length less than 32 bytes.');\n }\n return {\n ne: input.subarray(0, 32),\n ciphertext: input.subarray(32, input.length),\n ns: uint8ArrayAlloc(0)\n };\n}\nexport function decode1(input) {\n if (input.length < 80) {\n throw new Error('Cannot decode stage 1 MessageBuffer: length less than 80 bytes.');\n }\n return {\n ne: input.subarray(0, 32),\n ns: input.subarray(32, 80),\n ciphertext: input.subarray(80, input.length)\n };\n}\nexport function decode2(input) {\n if (input.length < 48) {\n throw new Error('Cannot decode stage 2 MessageBuffer: length less than 48 bytes.');\n }\n return {\n ne: uint8ArrayAlloc(0),\n ns: input.subarray(0, 48),\n ciphertext: input.subarray(48, input.length)\n };\n}\n//# sourceMappingURL=encoder.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { NOISE_MSG_MAX_LENGTH_BYTES, NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG } from '../constants.js';\nimport { uint16BEEncode } from '../encoder.js';\nconst CHACHA_TAG_LENGTH = 16;\n// Returns generator that encrypts payload from the user\nexport function encryptStream(handshake, metrics) {\n return async function* (source) {\n for await (const chunk of source) {\n for (let i = 0; i < chunk.length; i += NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG) {\n let end = i + NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG;\n if (end > chunk.length) {\n end = chunk.length;\n }\n let data;\n if (chunk instanceof Uint8Array) {\n data = handshake.encrypt(chunk.subarray(i, end), handshake.session);\n }\n else {\n data = handshake.encrypt(chunk.sublist(i, end), handshake.session);\n }\n metrics?.encryptedPackets.increment();\n yield new Uint8ArrayList(uint16BEEncode(data.byteLength), data);\n }\n }\n };\n}\n// Decrypt received payload to the user\nexport function decryptStream(handshake, metrics) {\n return async function* (source) {\n for await (const chunk of source) {\n for (let i = 0; i < chunk.length; i += NOISE_MSG_MAX_LENGTH_BYTES) {\n let end = i + NOISE_MSG_MAX_LENGTH_BYTES;\n if (end > chunk.length) {\n end = chunk.length;\n }\n if (end - CHACHA_TAG_LENGTH < i) {\n throw new Error('Invalid chunk');\n }\n const encrypted = chunk.sublist(i, end);\n // memory allocation is not cheap so reuse the encrypted Uint8Array\n // see https://github.com/ChainSafe/js-libp2p-noise/pull/242#issue-1422126164\n // this is ok because chacha20 reads bytes one by one and don't reread after that\n // it's also tested in https://github.com/ChainSafe/as-chacha20poly1305/pull/1/files#diff-25252846b58979dcaf4e41d47b3eadd7e4f335e7fb98da6c049b1f9cd011f381R48\n const dst = chunk.subarray(i, end - CHACHA_TAG_LENGTH);\n const { plaintext: decrypted, valid } = handshake.decrypt(encrypted, handshake.session, dst);\n if (!valid) {\n metrics?.decryptErrors.increment();\n throw new Error('Failed to validate decrypted chunk');\n }\n metrics?.decryptedPackets.increment();\n yield decrypted;\n }\n }\n };\n}\n//# sourceMappingURL=streaming.js.map","export class UnexpectedPeerError extends Error {\n code;\n constructor(message = 'Unexpected Peer') {\n super(message);\n this.code = UnexpectedPeerError.code;\n }\n static code = 'ERR_UNEXPECTED_PEER';\n}\nexport class InvalidCryptoExchangeError extends Error {\n code;\n constructor(message = 'Invalid crypto exchange') {\n super(message);\n this.code = InvalidCryptoExchangeError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_EXCHANGE';\n}\n//# sourceMappingURL=errors.js.map","import 'node-forge/lib/util.js';\nimport 'node-forge/lib/jsbn.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nexport function bigIntegerToUintBase64url(num, len) {\n // Call `.abs()` to convert to unsigned\n let buf = Uint8Array.from(num.abs().toByteArray()); // toByteArray converts to big endian\n // toByteArray() gives us back a signed array, which will include a leading 0\n // byte if the most significant bit of the number is 1:\n // https://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-integer\n // Our number will always be positive so we should remove the leading padding.\n buf = buf[0] === 0 ? buf.subarray(1) : buf;\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return uint8ArrayToString(buf, 'base64url');\n}\n// Convert a base64url encoded string to a BigInteger\nexport function base64urlToBigInteger(str) {\n const buf = base64urlToBuffer(str);\n return new forge.jsbn.BigInteger(uint8ArrayToString(buf, 'base16'), 16);\n}\nexport function base64urlToBuffer(str, len) {\n let buf = uint8ArrayFromString(str, 'base64urlpad');\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return buf;\n}\nexport function isPromise(thing) {\n if (thing == null) {\n return false;\n }\n return typeof thing.then === 'function' &&\n typeof thing.catch === 'function' &&\n typeof thing.finally === 'function';\n}\n//# sourceMappingURL=util.js.map","import { ed25519 as ed } from '@noble/curves/ed25519';\nconst PUBLIC_KEY_BYTE_LENGTH = 32;\nconst PRIVATE_KEY_BYTE_LENGTH = 64; // private key is actually 32 bytes but for historical reasons we concat private and public keys\nconst KEYS_BYTE_LENGTH = 32;\nexport { PUBLIC_KEY_BYTE_LENGTH as publicKeyLength };\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n // the actual private key (32 bytes)\n const privateKeyRaw = ed.utils.randomPrivateKey();\n const publicKey = ed.getPublicKey(privateKeyRaw);\n // concatenated the public key to the private key\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\n/**\n * Generate keypair from a 32 byte uint8array\n */\nexport function generateKeyFromSeed(seed) {\n if (seed.length !== KEYS_BYTE_LENGTH) {\n throw new TypeError('\"seed\" must be 32 bytes in length.');\n }\n else if (!(seed instanceof Uint8Array)) {\n throw new TypeError('\"seed\" must be a node.js Buffer, or Uint8Array.');\n }\n // based on node forges algorithm, the seed is used directly as private key\n const privateKeyRaw = seed;\n const publicKey = ed.getPublicKey(privateKeyRaw);\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\nexport function hashAndSign(privateKey, msg) {\n const privateKeyRaw = privateKey.subarray(0, KEYS_BYTE_LENGTH);\n return ed.sign(msg instanceof Uint8Array ? msg : msg.subarray(), privateKeyRaw);\n}\nexport function hashAndVerify(publicKey, sig, msg) {\n return ed.verify(sig, msg instanceof Uint8Array ? msg : msg.subarray(), publicKey);\n}\nfunction concatKeys(privateKeyRaw, publicKey) {\n const privateKey = new Uint8Array(PRIVATE_KEY_BYTE_LENGTH);\n for (let i = 0; i < KEYS_BYTE_LENGTH; i++) {\n privateKey[i] = privateKeyRaw[i];\n privateKey[KEYS_BYTE_LENGTH + i] = publicKey[i];\n }\n return privateKey;\n}\n//# sourceMappingURL=ed25519-browser.js.map","/* eslint-env browser */\n// Check native crypto exists and is enabled (In insecure context `self.crypto`\n// exists but `self.crypto.subtle` does not).\nexport default {\n get(win = globalThis) {\n const nativeCrypto = win.crypto;\n if (nativeCrypto == null || nativeCrypto.subtle == null) {\n throw Object.assign(new Error('Missing Web Crypto API. ' +\n 'The most likely cause of this error is that this page is being accessed ' +\n 'from an insecure context (i.e. not HTTPS). For more information and ' +\n 'possible resolutions see ' +\n 'https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api'), { code: 'ERR_MISSING_WEB_CRYPTO' });\n }\n return nativeCrypto;\n }\n};\n//# sourceMappingURL=webcrypto.js.map","import { concat } from 'uint8arrays/concat';\nimport { fromString } from 'uint8arrays/from-string';\nimport webcrypto from '../webcrypto.js';\n// WebKit on Linux does not support deriving a key from an empty PBKDF2 key.\n// So, as a workaround, we provide the generated key as a constant. We test that\n// this generated key is accurate in test/workaround.spec.ts\n// Generated via:\n// await crypto.subtle.exportKey('jwk',\n// await crypto.subtle.deriveKey(\n// { name: 'PBKDF2', salt: new Uint8Array(16), iterations: 32767, hash: { name: 'SHA-256' } },\n// await crypto.subtle.importKey('raw', new Uint8Array(0), { name: 'PBKDF2' }, false, ['deriveKey']),\n// { name: 'AES-GCM', length: 128 }, true, ['encrypt', 'decrypt'])\n// )\nexport const derivedEmptyPasswordKey = { alg: 'A128GCM', ext: true, k: 'scm9jmO_4BJAgdwWGVulLg', key_ops: ['encrypt', 'decrypt'], kty: 'oct' };\n// Based off of code from https://github.com/luke-park/SecureCompatibleEncryptionExamples\nexport function create(opts) {\n const algorithm = opts?.algorithm ?? 'AES-GCM';\n let keyLength = opts?.keyLength ?? 16;\n const nonceLength = opts?.nonceLength ?? 12;\n const digest = opts?.digest ?? 'SHA-256';\n const saltLength = opts?.saltLength ?? 16;\n const iterations = opts?.iterations ?? 32767;\n const crypto = webcrypto.get();\n keyLength *= 8; // Browser crypto uses bits instead of bytes\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to encrypt the data.\n */\n async function encrypt(data, password) {\n const salt = crypto.getRandomValues(new Uint8Array(saltLength));\n const nonce = crypto.getRandomValues(new Uint8Array(nonceLength));\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n }\n }\n else {\n // Derive a key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n // Encrypt the string.\n const ciphertext = await crypto.subtle.encrypt(aesGcm, cryptoKey, data);\n return concat([salt, aesGcm.iv, new Uint8Array(ciphertext)]);\n }\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to decrypt the data. The options used to create\n * this decryption cipher must be the same as those used to create\n * the encryption cipher.\n */\n async function decrypt(data, password) {\n const salt = data.subarray(0, saltLength);\n const nonce = data.subarray(saltLength, saltLength + nonceLength);\n const ciphertext = data.subarray(saltLength + nonceLength);\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['decrypt']);\n }\n }\n else {\n // Derive the key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n // Decrypt the string.\n const plaintext = await crypto.subtle.decrypt(aesGcm, cryptoKey, ciphertext);\n return new Uint8Array(plaintext);\n }\n const cipher = {\n encrypt,\n decrypt\n };\n return cipher;\n}\n//# sourceMappingURL=aes-gcm.browser.js.map","import { base64 } from 'multiformats/bases/base64';\nimport * as ciphers from '../ciphers/aes-gcm.js';\n/**\n * Exports the given PrivateKey as a base64 encoded string.\n * The PrivateKey is encrypted via a password derived PBKDF2 key\n * leveraging the aes-gcm cipher algorithm.\n */\nexport async function exporter(privateKey, password) {\n const cipher = ciphers.create();\n const encryptedKey = await cipher.encrypt(privateKey, password);\n return base64.encode(encryptedKey);\n}\n//# sourceMappingURL=exporter.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var KeyType;\n(function (KeyType) {\n KeyType[\"RSA\"] = \"RSA\";\n KeyType[\"Ed25519\"] = \"Ed25519\";\n KeyType[\"Secp256k1\"] = \"Secp256k1\";\n})(KeyType || (KeyType = {}));\nvar __KeyTypeValues;\n(function (__KeyTypeValues) {\n __KeyTypeValues[__KeyTypeValues[\"RSA\"] = 0] = \"RSA\";\n __KeyTypeValues[__KeyTypeValues[\"Ed25519\"] = 1] = \"Ed25519\";\n __KeyTypeValues[__KeyTypeValues[\"Secp256k1\"] = 2] = \"Secp256k1\";\n})(__KeyTypeValues || (__KeyTypeValues = {}));\n(function (KeyType) {\n KeyType.codec = () => {\n return enumeration(__KeyTypeValues);\n };\n})(KeyType || (KeyType = {}));\nexport var PublicKey;\n(function (PublicKey) {\n let _codec;\n PublicKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PublicKey.encode = (obj) => {\n return encodeMessage(obj, PublicKey.codec());\n };\n PublicKey.decode = (buf) => {\n return decodeMessage(buf, PublicKey.codec());\n };\n})(PublicKey || (PublicKey = {}));\nexport var PrivateKey;\n(function (PrivateKey) {\n let _codec;\n PrivateKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PrivateKey.encode = (obj) => {\n return encodeMessage(obj, PrivateKey.codec());\n };\n PrivateKey.decode = (buf) => {\n return decodeMessage(buf, PrivateKey.codec());\n };\n})(PrivateKey || (PrivateKey = {}));\n//# sourceMappingURL=keys.js.map","import { CodeError } from '@libp2p/interface';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { isPromise } from '../util.js';\nimport * as crypto from './ed25519.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nexport class Ed25519PublicKey {\n _key;\n constructor(key) {\n this._key = ensureKey(key, crypto.publicKeyLength);\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class Ed25519PrivateKey {\n _key;\n _publicKey;\n // key - 64 byte Uint8Array containing private key\n // publicKey - 32 byte Uint8Array containing public key\n constructor(key, publicKey) {\n this._key = ensureKey(key, crypto.privateKeyLength);\n this._publicKey = ensureKey(publicKey, crypto.publicKeyLength);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Ed25519PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the identity multihash containing its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n *\n * @returns {Promise}\n */\n async id() {\n const encoding = identity.digest(this.public.bytes);\n return base58btc.encode(encoding.bytes).substring(1);\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalEd25519PrivateKey(bytes) {\n // Try the old, redundant public key version\n if (bytes.length > crypto.privateKeyLength) {\n bytes = ensureKey(bytes, crypto.privateKeyLength + crypto.publicKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.privateKeyLength, bytes.length);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n }\n bytes = ensureKey(bytes, crypto.privateKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.publicKeyLength);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n}\nexport function unmarshalEd25519PublicKey(bytes) {\n bytes = ensureKey(bytes, crypto.publicKeyLength);\n return new Ed25519PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const { privateKey, publicKey } = crypto.generateKey();\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nexport async function generateKeyPairFromSeed(seed) {\n const { privateKey, publicKey } = crypto.generateKeyFromSeed(seed);\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nfunction ensureKey(key, length) {\n key = Uint8Array.from(key ?? []);\n if (key.length !== length) {\n throw new CodeError(`Key must be a Uint8Array of length ${length}, got ${key.length}`, 'ERR_INVALID_KEY_TYPE');\n }\n return key;\n}\n//# sourceMappingURL=ed25519-class.js.map","import { CodeError } from '@libp2p/interface';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { base64urlToBuffer } from '../util.js';\nimport webcrypto from '../webcrypto.js';\nconst bits = {\n 'P-256': 256,\n 'P-384': 384,\n 'P-521': 521\n};\nconst curveTypes = Object.keys(bits);\nconst names = curveTypes.join(' / ');\nexport async function generateEphmeralKeyPair(curve) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'ECDH',\n namedCurve: curve\n }, true, ['deriveBits']);\n // forcePrivate is used for testing only\n const genSharedKey = async (theirPub, forcePrivate) => {\n let privateKey;\n if (forcePrivate != null) {\n privateKey = await webcrypto.get().subtle.importKey('jwk', unmarshalPrivateKey(curve, forcePrivate), {\n name: 'ECDH',\n namedCurve: curve\n }, false, ['deriveBits']);\n }\n else {\n privateKey = pair.privateKey;\n }\n const key = await webcrypto.get().subtle.importKey('jwk', unmarshalPublicKey(curve, theirPub), {\n name: 'ECDH',\n namedCurve: curve\n }, false, []);\n const buffer = await webcrypto.get().subtle.deriveBits({\n name: 'ECDH',\n // @ts-expect-error namedCurve is missing from the types\n namedCurve: curve,\n public: key\n }, privateKey, bits[curve]);\n return new Uint8Array(buffer, 0, buffer.byteLength);\n };\n const publicKey = await webcrypto.get().subtle.exportKey('jwk', pair.publicKey);\n const ecdhKey = {\n key: marshalPublicKey(publicKey),\n genSharedKey\n };\n return ecdhKey;\n}\nconst curveLengths = {\n 'P-256': 32,\n 'P-384': 48,\n 'P-521': 66\n};\n// Marshal converts a jwk encoded ECDH public key into the\n// form specified in section 4.3.6 of ANSI X9.62. (This is the format\n// go-ipfs uses)\nfunction marshalPublicKey(jwk) {\n if (jwk.crv == null || jwk.x == null || jwk.y == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n if (jwk.crv !== 'P-256' && jwk.crv !== 'P-384' && jwk.crv !== 'P-521') {\n throw new CodeError(`Unknown curve: ${jwk.crv}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[jwk.crv];\n return uint8ArrayConcat([\n Uint8Array.from([4]), // uncompressed point\n base64urlToBuffer(jwk.x, byteLen),\n base64urlToBuffer(jwk.y, byteLen)\n ], 1 + byteLen * 2);\n}\n// Unmarshal converts a point, serialized by Marshal, into an jwk encoded key\nfunction unmarshalPublicKey(curve, key) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[curve];\n if (!uint8ArrayEquals(key.subarray(0, 1), Uint8Array.from([4]))) {\n throw new CodeError('Cannot unmarshal public key - invalid key format', 'ERR_INVALID_KEY_FORMAT');\n }\n return {\n kty: 'EC',\n crv: curve,\n x: uint8ArrayToString(key.subarray(1, byteLen + 1), 'base64url'),\n y: uint8ArrayToString(key.subarray(1 + byteLen), 'base64url'),\n ext: true\n };\n}\nconst unmarshalPrivateKey = (curve, key) => ({\n ...unmarshalPublicKey(curve, key.public),\n d: uint8ArrayToString(key.private, 'base64url')\n});\n//# sourceMappingURL=ecdh-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { randomBytes as randB } from '@noble/hashes/utils';\n/**\n * Generates a Uint8Array with length `number` populated by random bytes\n */\nexport default function randomBytes(length) {\n if (isNaN(length) || length <= 0) {\n throw new CodeError('random bytes length must be a Number bigger than 0', 'ERR_INVALID_LENGTH');\n }\n return randB(length);\n}\n//# sourceMappingURL=random-bytes.js.map","import 'node-forge/lib/rsa.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { base64urlToBigInteger } from '../util.js';\nfunction convert(key, types) {\n return types.map(t => base64urlToBigInteger(key[t]));\n}\nexport function jwk2priv(key) {\n return forge.pki.setRsaPrivateKey(...convert(key, ['n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi']));\n}\nexport function jwk2pub(key) {\n return forge.pki.setRsaPublicKey(...convert(key, ['n', 'e']));\n}\n//# sourceMappingURL=jwk2pem.js.map","import 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/rsa.js';\nimport { CodeError } from '@libp2p/interface';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { bigIntegerToUintBase64url, base64urlToBigInteger } from './../util.js';\n// Convert a PKCS#1 in ASN1 DER format to a JWK key\nexport function pkcs1ToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n // https://tools.ietf.org/html/rfc7518#section-6.3.1\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(privateKey.n),\n e: bigIntegerToUintBase64url(privateKey.e),\n d: bigIntegerToUintBase64url(privateKey.d),\n p: bigIntegerToUintBase64url(privateKey.p),\n q: bigIntegerToUintBase64url(privateKey.q),\n dp: bigIntegerToUintBase64url(privateKey.dP),\n dq: bigIntegerToUintBase64url(privateKey.dQ),\n qi: bigIntegerToUintBase64url(privateKey.qInv),\n alg: 'RS256'\n };\n}\n// Convert a JWK key into PKCS#1 in ASN1 DER format\nexport function jwkToPkcs1(jwk) {\n if (jwk.n == null || jwk.e == null || jwk.d == null || jwk.p == null || jwk.q == null || jwk.dp == null || jwk.dq == null || jwk.qi == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.privateKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e),\n d: base64urlToBigInteger(jwk.d),\n p: base64urlToBigInteger(jwk.p),\n q: base64urlToBigInteger(jwk.q),\n dP: base64urlToBigInteger(jwk.dp),\n dQ: base64urlToBigInteger(jwk.dq),\n qInv: base64urlToBigInteger(jwk.qi)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n// Convert a PKCIX in ASN1 DER format to a JWK key\nexport function pkixToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const publicKey = forge.pki.publicKeyFromAsn1(asn1);\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(publicKey.n),\n e: bigIntegerToUintBase64url(publicKey.e)\n };\n}\n// Convert a JWK key to PKCIX in ASN1 DER format\nexport function jwkToPkix(jwk) {\n if (jwk.n == null || jwk.e == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.publicKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n//# sourceMappingURL=rsa-utils.js.map","import { CodeError } from '@libp2p/interface';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport randomBytes from '../random-bytes.js';\nimport webcrypto from '../webcrypto.js';\nimport { jwk2pub, jwk2priv } from './jwk2pem.js';\nimport * as utils from './rsa-utils.js';\nexport { utils };\nexport async function generateKey(bits) {\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: 'SHA-256' }\n }, true, ['sign', 'verify']);\n const keys = await exportKey(pair);\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\n// Takes a jwk key\nexport async function unmarshalPrivateKey(key) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['sign']);\n const pair = [\n privateKey,\n await derivePublicFromPrivate(key)\n ];\n const keys = await exportKey({\n privateKey: pair[0],\n publicKey: pair[1]\n });\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\nexport { randomBytes as getRandomValues };\nexport async function hashAndSign(key, msg) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['sign']);\n const sig = await webcrypto.get().subtle.sign({ name: 'RSASSA-PKCS1-v1_5' }, privateKey, msg instanceof Uint8Array ? msg : msg.subarray());\n return new Uint8Array(sig, 0, sig.byteLength);\n}\nexport async function hashAndVerify(key, sig, msg) {\n const publicKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['verify']);\n return webcrypto.get().subtle.verify({ name: 'RSASSA-PKCS1-v1_5' }, publicKey, sig, msg instanceof Uint8Array ? msg : msg.subarray());\n}\nasync function exportKey(pair) {\n if (pair.privateKey == null || pair.publicKey == null) {\n throw new CodeError('Private and public key are required', 'ERR_INVALID_PARAMETERS');\n }\n return Promise.all([\n webcrypto.get().subtle.exportKey('jwk', pair.privateKey),\n webcrypto.get().subtle.exportKey('jwk', pair.publicKey)\n ]);\n}\nasync function derivePublicFromPrivate(jwKey) {\n return webcrypto.get().subtle.importKey('jwk', {\n kty: jwKey.kty,\n n: jwKey.n,\n e: jwKey.e\n }, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['verify']);\n}\n/*\n\nRSA encryption/decryption for the browser with webcrypto workaround\n\"bloody dark magic. webcrypto's why.\"\n\nExplanation:\n - Convert JWK to nodeForge\n - Convert msg Uint8Array to nodeForge buffer: ByteBuffer is a \"binary-string backed buffer\", so let's make our Uint8Array a binary string\n - Convert resulting nodeForge buffer to Uint8Array: it returns a binary string, turn that into a Uint8Array\n\n*/\nfunction convertKey(key, pub, msg, handle) {\n const fkey = pub ? jwk2pub(key) : jwk2priv(key);\n const fmsg = uint8ArrayToString(msg instanceof Uint8Array ? msg : msg.subarray(), 'ascii');\n const fomsg = handle(fmsg, fkey);\n return uint8ArrayFromString(fomsg, 'ascii');\n}\nexport function encrypt(key, msg) {\n return convertKey(key, true, msg, (msg, key) => key.encrypt(msg));\n}\nexport function decrypt(key, msg) {\n return convertKey(key, false, msg, (msg, key) => key.decrypt(msg));\n}\nexport function keySize(jwk) {\n if (jwk.kty !== 'RSA') {\n throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE');\n }\n else if (jwk.n == null) {\n throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS');\n }\n const bytes = uint8ArrayFromString(jwk.n, 'base64url');\n return bytes.length * 8;\n}\n//# sourceMappingURL=rsa-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport 'node-forge/lib/sha512.js';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nimport * as crypto from './rsa.js';\nexport const MAX_KEY_SIZE = 8192;\nexport class RsaPublicKey {\n _key;\n constructor(key) {\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.utils.jwkToPkix(this._key);\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n encrypt(bytes) {\n return crypto.encrypt(this._key, bytes);\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n}\nexport class RsaPrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey;\n }\n genSecret() {\n return crypto.getRandomValues(16);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n if (this._publicKey == null) {\n throw new CodeError('public key not provided', 'ERR_PUBKEY_NOT_PROVIDED');\n }\n return new RsaPublicKey(this._publicKey);\n }\n decrypt(bytes) {\n return crypto.decrypt(this._key, bytes);\n }\n marshal() {\n return crypto.utils.jwkToPkcs1(this._key);\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected PEM format\n */\n async export(password, format = 'pkcs-8') {\n if (format === 'pkcs-8') {\n const buffer = new forge.util.ByteBuffer(this.marshal());\n const asn1 = forge.asn1.fromDer(buffer);\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n const options = {\n algorithm: 'aes256',\n count: 10000,\n saltSize: 128 / 8,\n prfAlgorithm: 'sha512'\n };\n return forge.pki.encryptRsaPrivateKey(privateKey, password, options);\n }\n else if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport async function unmarshalRsaPrivateKey(bytes) {\n const jwk = crypto.utils.pkcs1ToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport function unmarshalRsaPublicKey(bytes) {\n const jwk = crypto.utils.pkixToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n return new RsaPublicKey(jwk);\n}\nexport async function fromJwk(jwk) {\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport async function generateKeyPair(bits) {\n if (bits > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.generateKey(bits);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\n//# sourceMappingURL=rsa-class.js.map","import { CodeError } from '@libp2p/interface';\nimport { secp256k1 as secp } from '@noble/curves/secp256k1';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { isPromise } from '../util.js';\nconst PRIVATE_KEY_BYTE_LENGTH = 32;\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n return secp.utils.randomPrivateKey();\n}\n/**\n * Hash and sign message with private key\n */\nexport function hashAndSign(key, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.sign(digest, key).toDERRawBytes())\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.sign(p.digest, key).toDERRawBytes();\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\n/**\n * Hash message and verify signature with public key\n */\nexport function hashAndVerify(key, sig, msg) {\n const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());\n if (isPromise(p)) {\n return p.then(({ digest }) => secp.verify(sig, digest, key))\n .catch(err => {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n });\n }\n try {\n return secp.verify(sig, p.digest, key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\nexport function compressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(true);\n return point;\n}\nexport function decompressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(false);\n return point;\n}\nexport function validatePrivateKey(key) {\n try {\n secp.getPublicKey(key, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\nexport function validatePublicKey(key) {\n try {\n secp.ProjectivePoint.fromHex(key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PUBLIC_KEY');\n }\n}\nexport function computePublicKey(privateKey) {\n try {\n return secp.getPublicKey(privateKey, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\n//# sourceMappingURL=secp256k1-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isPromise } from '../util.js';\nimport { exporter } from './exporter.js';\nimport * as keysProtobuf from './keys.js';\nimport * as crypto from './secp256k1.js';\nexport class Secp256k1PublicKey {\n _key;\n constructor(key) {\n crypto.validatePublicKey(key);\n this._key = key;\n }\n verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.compressPublicKey(this._key);\n }\n get bytes() {\n return keysProtobuf.PublicKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const p = sha256.digest(this.bytes);\n let bytes;\n if (isPromise(p)) {\n ({ bytes } = await p);\n }\n else {\n bytes = p.bytes;\n }\n return bytes;\n }\n}\nexport class Secp256k1PrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey ?? crypto.computePublicKey(key);\n crypto.validatePrivateKey(this._key);\n crypto.validatePublicKey(this._publicKey);\n }\n sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Secp256k1PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return keysProtobuf.PrivateKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n hash() {\n const p = sha256.digest(this.bytes);\n if (isPromise(p)) {\n return p.then(({ bytes }) => bytes);\n }\n return p.bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalSecp256k1PrivateKey(bytes) {\n return new Secp256k1PrivateKey(bytes);\n}\nexport function unmarshalSecp256k1PublicKey(bytes) {\n return new Secp256k1PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const privateKeyBytes = crypto.generateKey();\n return new Secp256k1PrivateKey(privateKeyBytes);\n}\n//# sourceMappingURL=secp256k1-class.js.map","/**\n * @packageDocumentation\n *\n * **Supported Key Types**\n *\n * The {@link generateKeyPair}, {@link marshalPublicKey}, and {@link marshalPrivateKey} functions accept a string `type` argument.\n *\n * Currently the `'RSA'`, `'ed25519'`, and `secp256k1` types are supported, although ed25519 and secp256k1 keys support only signing and verification of messages.\n *\n * For encryption / decryption support, RSA keys should be used.\n */\nimport 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/pbe.js';\nimport { CodeError } from '@libp2p/interface';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport * as Ed25519 from './ed25519-class.js';\nimport generateEphemeralKeyPair from './ephemeral-keys.js';\nimport { importer } from './importer.js';\nimport { keyStretcher } from './key-stretcher.js';\nimport * as keysPBM from './keys.js';\nimport * as RSA from './rsa-class.js';\nimport * as Secp256k1 from './secp256k1-class.js';\nexport { keyStretcher };\nexport { generateEphemeralKeyPair };\nexport { keysPBM };\nexport const supportedKeys = {\n rsa: RSA,\n ed25519: Ed25519,\n secp256k1: Secp256k1\n};\nfunction unsupportedKey(type) {\n const supported = Object.keys(supportedKeys).join(' / ');\n return new CodeError(`invalid or unsupported key type ${type}. Must be ${supported}`, 'ERR_UNSUPPORTED_KEY_TYPE');\n}\nfunction typeToKey(type) {\n type = type.toLowerCase();\n if (type === 'rsa' || type === 'ed25519' || type === 'secp256k1') {\n return supportedKeys[type];\n }\n throw unsupportedKey(type);\n}\n/**\n * Generates a keypair of the given type and bitsize\n *\n * @param type\n * @param bits - Minimum of 1024\n */\nexport async function generateKeyPair(type, bits) {\n return typeToKey(type).generateKeyPair(bits ?? 2048);\n}\n/**\n * Generates a keypair of the given type and bitsize.\n *\n * Seed is a 32 byte uint8array\n */\nexport async function generateKeyPairFromSeed(type, seed, bits) {\n if (type.toLowerCase() !== 'ed25519') {\n throw new CodeError('Seed key derivation is unimplemented for RSA or secp256k1', 'ERR_UNSUPPORTED_KEY_DERIVATION_TYPE');\n }\n return Ed25519.generateKeyPairFromSeed(seed);\n}\n/**\n * Converts a protobuf serialized public key into its representative object\n */\nexport function unmarshalPublicKey(buf) {\n const decoded = keysPBM.PublicKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPublicKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PublicKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PublicKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'unknown');\n }\n}\n/**\n * Converts a public key object into a protobuf serialized public key\n */\nexport function marshalPublicKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts a protobuf serialized private key into its representative object\n */\nexport async function unmarshalPrivateKey(buf) {\n const decoded = keysPBM.PrivateKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPrivateKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PrivateKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'RSA');\n }\n}\n/**\n * Converts a private key object into a protobuf serialized private key\n */\nexport function marshalPrivateKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts an exported private key into its representative object.\n *\n * Supported formats are 'pem' (RSA only) and 'libp2p-key'.\n */\nexport async function importKey(encryptedKey, password) {\n try {\n const key = await importer(encryptedKey, password);\n return await unmarshalPrivateKey(key);\n }\n catch (_) {\n // Ignore and try the old pem decrypt\n }\n // Only rsa supports pem right now\n const key = forge.pki.decryptRsaPrivateKey(encryptedKey, password);\n if (key === null) {\n throw new CodeError('Cannot read the key, most likely the password is wrong or not a RSA key', 'ERR_CANNOT_DECRYPT_PEM');\n }\n let der = forge.asn1.toDer(forge.pki.privateKeyToAsn1(key));\n der = uint8ArrayFromString(der.getBytes(), 'ascii');\n return supportedKeys.rsa.unmarshalRsaPrivateKey(der);\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { decodeMessage, encodeMessage, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var NoiseExtensions;\n(function (NoiseExtensions) {\n let _codec;\n NoiseExtensions.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.webtransportCerthashes != null) {\n for (const value of obj.webtransportCerthashes) {\n w.uint32(10);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n webtransportCerthashes: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.webtransportCerthashes.push(reader.bytes());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n NoiseExtensions.encode = (obj) => {\n return encodeMessage(obj, NoiseExtensions.codec());\n };\n NoiseExtensions.decode = (buf) => {\n return decodeMessage(buf, NoiseExtensions.codec());\n };\n})(NoiseExtensions || (NoiseExtensions = {}));\nexport var NoiseHandshakePayload;\n(function (NoiseHandshakePayload) {\n let _codec;\n NoiseHandshakePayload.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.identityKey != null && obj.identityKey.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.identityKey);\n }\n if ((obj.identitySig != null && obj.identitySig.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.identitySig);\n }\n if (obj.extensions != null) {\n w.uint32(34);\n NoiseExtensions.codec().encode(obj.extensions, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n identityKey: uint8ArrayAlloc(0),\n identitySig: uint8ArrayAlloc(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.identityKey = reader.bytes();\n break;\n }\n case 2: {\n obj.identitySig = reader.bytes();\n break;\n }\n case 4: {\n obj.extensions = NoiseExtensions.codec().decode(reader, reader.uint32());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n NoiseHandshakePayload.encode = (obj) => {\n return encodeMessage(obj, NoiseHandshakePayload.codec());\n };\n NoiseHandshakePayload.decode = (buf) => {\n return decodeMessage(buf, NoiseHandshakePayload.codec());\n };\n})(NoiseHandshakePayload || (NoiseHandshakePayload = {}));\n//# sourceMappingURL=payload.js.map","import { unmarshalPublicKey, unmarshalPrivateKey } from '@libp2p/crypto/keys';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { isUint8ArrayList } from 'uint8arraylist';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { NoiseHandshakePayload } from './proto/payload.js';\nexport async function getPayload(localPeer, staticPublicKey, extensions) {\n const signedPayload = await signPayload(localPeer, getHandshakePayload(staticPublicKey));\n if (localPeer.publicKey == null) {\n throw new Error('PublicKey was missing from local PeerId');\n }\n return createHandshakePayload(localPeer.publicKey, signedPayload, extensions);\n}\nexport function createHandshakePayload(libp2pPublicKey, signedPayload, extensions) {\n return NoiseHandshakePayload.encode({\n identityKey: libp2pPublicKey,\n identitySig: signedPayload,\n extensions: extensions ?? { webtransportCerthashes: [] }\n }).subarray();\n}\nexport async function signPayload(peerId, payload) {\n if (peerId.privateKey == null) {\n throw new Error('PrivateKey was missing from PeerId');\n }\n const privateKey = await unmarshalPrivateKey(peerId.privateKey);\n return privateKey.sign(payload);\n}\nexport async function getPeerIdFromPayload(payload) {\n return peerIdFromKeys(payload.identityKey);\n}\nexport function decodePayload(payload) {\n return NoiseHandshakePayload.decode(payload);\n}\nexport function getHandshakePayload(publicKey) {\n const prefix = uint8ArrayFromString('noise-libp2p-static-key:');\n if (publicKey instanceof Uint8Array) {\n return uint8ArrayConcat([prefix, publicKey], prefix.length + publicKey.length);\n }\n publicKey.prepend(prefix);\n return publicKey;\n}\n/**\n * Verifies signed payload, throws on any irregularities.\n *\n * @param {bytes} noiseStaticKey - owner's noise static key\n * @param {bytes} payload - decoded payload\n * @param {PeerId} remotePeer - owner's libp2p peer ID\n * @returns {Promise} - peer ID of payload owner\n */\nexport async function verifySignedPayload(noiseStaticKey, payload, remotePeer) {\n // Unmarshaling from PublicKey protobuf\n const payloadPeerId = await peerIdFromKeys(payload.identityKey);\n if (!payloadPeerId.equals(remotePeer)) {\n throw new Error(`Payload identity key ${payloadPeerId.toString()} does not match expected remote peer ${remotePeer.toString()}`);\n }\n const generatedPayload = getHandshakePayload(noiseStaticKey);\n if (payloadPeerId.publicKey == null) {\n throw new Error('PublicKey was missing from PeerId');\n }\n if (payload.identitySig == null) {\n throw new Error('Signature was missing from message');\n }\n const publicKey = unmarshalPublicKey(payloadPeerId.publicKey);\n const valid = await publicKey.verify(generatedPayload, payload.identitySig);\n if (!valid) {\n throw new Error(\"Static key doesn't match to peer that signed payload!\");\n }\n return payloadPeerId;\n}\nexport function isValidPublicKey(pk) {\n if (!(pk instanceof Uint8Array) && !(isUint8ArrayList(pk))) {\n return false;\n }\n if (pk.byteLength !== 32) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=utils.js.map","import { allocUnsafe } from '#alloc';\nimport { asUint8Array } from '#util/as-uint8array';\n/**\n * Returns the xor distance between two Uint8Arrays\n */\nexport function xor(a, b) {\n if (a.length !== b.length) {\n throw new Error('Inputs should have the same length');\n }\n const result = allocUnsafe(a.length);\n for (let i = 0; i < a.length; i++) {\n result[i] = a[i] ^ b[i];\n }\n return asUint8Array(result);\n}\n//# sourceMappingURL=xor.js.map","import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport const MIN_NONCE = 0;\n// For performance reasons, the nonce is represented as a JS `number`\n// Although JS `number` can safely represent integers up to 2 ** 53 - 1, we choose to only use\n// 4 bytes to store the data for performance reason.\n// This is a slight deviation from the noise spec, which describes the max nonce as 2 ** 64 - 2\n// The effect is that this implementation will need a new handshake to be performed after fewer messages are exchanged than other implementations with full uint64 nonces.\n// this MAX_NONCE is still a large number of messages, so the practical effect of this is negligible.\nexport const MAX_NONCE = 0xffffffff;\nconst ERR_MAX_NONCE = 'Cipherstate has reached maximum n, a new handshake must be performed';\n/**\n * The nonce is an uint that's increased over time.\n * Maintaining different representations help improve performance.\n */\nexport class Nonce {\n n;\n bytes;\n view;\n constructor(n = MIN_NONCE) {\n this.n = n;\n this.bytes = uint8ArrayAlloc(12);\n this.view = new DataView(this.bytes.buffer, this.bytes.byteOffset, this.bytes.byteLength);\n this.view.setUint32(4, n, true);\n }\n increment() {\n this.n++;\n // Even though we're treating the nonce as 8 bytes, RFC7539 specifies 12 bytes for a nonce.\n this.view.setUint32(4, this.n, true);\n }\n getBytes() {\n return this.bytes;\n }\n getUint64() {\n return this.n;\n }\n assertValue() {\n if (this.n > MAX_NONCE) {\n throw new Error(ERR_MAX_NONCE);\n }\n }\n}\n//# sourceMappingURL=nonce.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { Nonce } from '../nonce.js';\nexport class AbstractHandshake {\n crypto;\n log;\n constructor(components, crypto) {\n this.log = components.logger.forComponent('libp2p:noise:abstract-handshake');\n this.crypto = crypto;\n }\n encryptWithAd(cs, ad, plaintext) {\n const e = this.encrypt(cs.k, cs.n, ad, plaintext);\n cs.n.increment();\n return e;\n }\n decryptWithAd(cs, ad, ciphertext, dst) {\n const { plaintext, valid } = this.decrypt(cs.k, cs.n, ad, ciphertext, dst);\n if (valid)\n cs.n.increment();\n return { plaintext, valid };\n }\n // Cipher state related\n hasKey(cs) {\n return !this.isEmptyKey(cs.k);\n }\n createEmptyKey() {\n return uint8ArrayAlloc(32);\n }\n isEmptyKey(k) {\n const emptyKey = this.createEmptyKey();\n return uint8ArrayEquals(emptyKey, k);\n }\n encrypt(k, n, ad, plaintext) {\n n.assertValue();\n return this.crypto.chaCha20Poly1305Encrypt(plaintext, n.getBytes(), ad, k);\n }\n encryptAndHash(ss, plaintext) {\n let ciphertext;\n if (this.hasKey(ss.cs)) {\n ciphertext = this.encryptWithAd(ss.cs, ss.h, plaintext);\n }\n else {\n ciphertext = plaintext;\n }\n this.mixHash(ss, ciphertext);\n return ciphertext;\n }\n decrypt(k, n, ad, ciphertext, dst) {\n n.assertValue();\n const encryptedMessage = this.crypto.chaCha20Poly1305Decrypt(ciphertext, n.getBytes(), ad, k, dst);\n if (encryptedMessage) {\n return {\n plaintext: encryptedMessage,\n valid: true\n };\n }\n else {\n return {\n plaintext: uint8ArrayAlloc(0),\n valid: false\n };\n }\n }\n decryptAndHash(ss, ciphertext) {\n let plaintext;\n let valid = true;\n if (this.hasKey(ss.cs)) {\n ({ plaintext, valid } = this.decryptWithAd(ss.cs, ss.h, ciphertext));\n }\n else {\n plaintext = ciphertext;\n }\n this.mixHash(ss, ciphertext);\n return { plaintext, valid };\n }\n dh(privateKey, publicKey) {\n try {\n const derivedU8 = this.crypto.generateX25519SharedKey(privateKey, publicKey);\n if (derivedU8.length === 32) {\n return derivedU8;\n }\n return derivedU8.subarray(0, 32);\n }\n catch (e) {\n const err = e;\n this.log.error('error deriving shared key', err);\n return uint8ArrayAlloc(32);\n }\n }\n mixHash(ss, data) {\n ss.h = this.getHash(ss.h, data);\n }\n getHash(a, b) {\n const u = this.crypto.hashSHA256(new Uint8ArrayList(a, b));\n return u;\n }\n mixKey(ss, ikm) {\n const [ck, tempK] = this.crypto.getHKDF(ss.ck, ikm);\n ss.cs = this.initializeKey(tempK);\n ss.ck = ck;\n }\n initializeKey(k) {\n return { k, n: new Nonce() };\n }\n // Symmetric state related\n initializeSymmetric(protocolName) {\n const protocolNameBytes = uint8ArrayFromString(protocolName, 'utf-8');\n const h = this.hashProtocolName(protocolNameBytes);\n const ck = h;\n const key = this.createEmptyKey();\n const cs = this.initializeKey(key);\n return { cs, ck, h };\n }\n hashProtocolName(protocolName) {\n if (protocolName.length <= 32) {\n const h = uint8ArrayAlloc(32);\n h.set(protocolName);\n return h;\n }\n else {\n return this.getHash(protocolName, uint8ArrayAlloc(0));\n }\n }\n split(ss) {\n const [tempk1, tempk2] = this.crypto.getHKDF(ss.ck, uint8ArrayAlloc(0));\n const cs1 = this.initializeKey(tempk1);\n const cs2 = this.initializeKey(tempk2);\n return { cs1, cs2 };\n }\n writeMessageRegular(cs, payload) {\n const ciphertext = this.encryptWithAd(cs, uint8ArrayAlloc(0), payload);\n const ne = this.createEmptyKey();\n const ns = uint8ArrayAlloc(0);\n return { ne, ns, ciphertext };\n }\n readMessageRegular(cs, message) {\n return this.decryptWithAd(cs, uint8ArrayAlloc(0), message.ciphertext);\n }\n}\n//# sourceMappingURL=abstract-handshake.js.map","import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { isValidPublicKey } from '../utils.js';\nimport { AbstractHandshake } from './abstract-handshake.js';\nexport class XX extends AbstractHandshake {\n initializeInitiator(prologue, s, rs, psk) {\n const name = 'Noise_XX_25519_ChaChaPoly_SHA256';\n const ss = this.initializeSymmetric(name);\n this.mixHash(ss, prologue);\n const re = uint8ArrayAlloc(32);\n return { ss, s, rs, psk, re };\n }\n initializeResponder(prologue, s, rs, psk) {\n const name = 'Noise_XX_25519_ChaChaPoly_SHA256';\n const ss = this.initializeSymmetric(name);\n this.mixHash(ss, prologue);\n const re = uint8ArrayAlloc(32);\n return { ss, s, rs, psk, re };\n }\n writeMessageA(hs, payload, e) {\n const ns = uint8ArrayAlloc(0);\n if (e !== undefined) {\n hs.e = e;\n }\n else {\n hs.e = this.crypto.generateX25519KeyPair();\n }\n const ne = hs.e.publicKey;\n this.mixHash(hs.ss, ne);\n const ciphertext = this.encryptAndHash(hs.ss, payload);\n return { ne, ns, ciphertext };\n }\n writeMessageB(hs, payload) {\n hs.e = this.crypto.generateX25519KeyPair();\n const ne = hs.e.publicKey;\n this.mixHash(hs.ss, ne);\n this.mixKey(hs.ss, this.dh(hs.e.privateKey, hs.re));\n const spk = hs.s.publicKey;\n const ns = this.encryptAndHash(hs.ss, spk);\n this.mixKey(hs.ss, this.dh(hs.s.privateKey, hs.re));\n const ciphertext = this.encryptAndHash(hs.ss, payload);\n return { ne, ns, ciphertext };\n }\n writeMessageC(hs, payload) {\n const spk = hs.s.publicKey;\n const ns = this.encryptAndHash(hs.ss, spk);\n this.mixKey(hs.ss, this.dh(hs.s.privateKey, hs.re));\n const ciphertext = this.encryptAndHash(hs.ss, payload);\n const ne = this.createEmptyKey();\n const messageBuffer = { ne, ns, ciphertext };\n const { cs1, cs2 } = this.split(hs.ss);\n return { h: hs.ss.h, messageBuffer, cs1, cs2 };\n }\n readMessageA(hs, message) {\n if (isValidPublicKey(message.ne)) {\n hs.re = message.ne;\n }\n this.mixHash(hs.ss, hs.re);\n return this.decryptAndHash(hs.ss, message.ciphertext);\n }\n readMessageB(hs, message) {\n if (isValidPublicKey(message.ne)) {\n hs.re = message.ne;\n }\n this.mixHash(hs.ss, hs.re);\n if (!hs.e) {\n throw new Error('Handshake state `e` param is missing.');\n }\n this.mixKey(hs.ss, this.dh(hs.e.privateKey, hs.re));\n const { plaintext: ns, valid: valid1 } = this.decryptAndHash(hs.ss, message.ns);\n if (valid1 && isValidPublicKey(ns)) {\n hs.rs = ns;\n }\n this.mixKey(hs.ss, this.dh(hs.e.privateKey, hs.rs));\n const { plaintext, valid: valid2 } = this.decryptAndHash(hs.ss, message.ciphertext);\n return { plaintext, valid: (valid1 && valid2) };\n }\n readMessageC(hs, message) {\n const { plaintext: ns, valid: valid1 } = this.decryptAndHash(hs.ss, message.ns);\n if (valid1 && isValidPublicKey(ns)) {\n hs.rs = ns;\n }\n if (!hs.e) {\n throw new Error('Handshake state `e` param is missing.');\n }\n this.mixKey(hs.ss, this.dh(hs.e.privateKey, hs.rs));\n const { plaintext, valid: valid2 } = this.decryptAndHash(hs.ss, message.ciphertext);\n const { cs1, cs2 } = this.split(hs.ss);\n return { h: hs.ss.h, plaintext, valid: (valid1 && valid2), cs1, cs2 };\n }\n initSession(initiator, prologue, s) {\n const psk = this.createEmptyKey();\n const rs = uint8ArrayAlloc(32); // no static key yet\n let hs;\n if (initiator) {\n hs = this.initializeInitiator(prologue, s, rs, psk);\n }\n else {\n hs = this.initializeResponder(prologue, s, rs, psk);\n }\n return {\n hs,\n i: initiator,\n mc: 0\n };\n }\n sendMessage(session, message, ephemeral) {\n let messageBuffer;\n if (session.mc === 0) {\n messageBuffer = this.writeMessageA(session.hs, message, ephemeral);\n }\n else if (session.mc === 1) {\n messageBuffer = this.writeMessageB(session.hs, message);\n }\n else if (session.mc === 2) {\n const { h, messageBuffer: resultingBuffer, cs1, cs2 } = this.writeMessageC(session.hs, message);\n messageBuffer = resultingBuffer;\n session.h = h;\n session.cs1 = cs1;\n session.cs2 = cs2;\n }\n else if (session.mc > 2) {\n if (session.i) {\n if (!session.cs1) {\n throw new Error('CS1 (cipher state) is not defined');\n }\n messageBuffer = this.writeMessageRegular(session.cs1, message);\n }\n else {\n if (!session.cs2) {\n throw new Error('CS2 (cipher state) is not defined');\n }\n messageBuffer = this.writeMessageRegular(session.cs2, message);\n }\n }\n else {\n throw new Error('Session invalid.');\n }\n session.mc++;\n return messageBuffer;\n }\n recvMessage(session, message) {\n let plaintext = uint8ArrayAlloc(0);\n let valid = false;\n if (session.mc === 0) {\n ({ plaintext, valid } = this.readMessageA(session.hs, message));\n }\n else if (session.mc === 1) {\n ({ plaintext, valid } = this.readMessageB(session.hs, message));\n }\n else if (session.mc === 2) {\n const { h, plaintext: resultingPlaintext, valid: resultingValid, cs1, cs2 } = this.readMessageC(session.hs, message);\n plaintext = resultingPlaintext;\n valid = resultingValid;\n session.h = h;\n session.cs1 = cs1;\n session.cs2 = cs2;\n }\n session.mc++;\n return { plaintext, valid };\n }\n}\n//# sourceMappingURL=xx.js.map","import { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { DUMP_SESSION_KEYS } from './constants.js';\nexport function logLocalStaticKeys(s, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n keyLogger(`LOCAL_STATIC_PUBLIC_KEY ${uint8ArrayToString(s.publicKey, 'hex')}`);\n keyLogger(`LOCAL_STATIC_PRIVATE_KEY ${uint8ArrayToString(s.privateKey, 'hex')}`);\n}\nexport function logLocalEphemeralKeys(e, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (e) {\n keyLogger(`LOCAL_PUBLIC_EPHEMERAL_KEY ${uint8ArrayToString(e.publicKey, 'hex')}`);\n keyLogger(`LOCAL_PRIVATE_EPHEMERAL_KEY ${uint8ArrayToString(e.privateKey, 'hex')}`);\n }\n else {\n keyLogger('Missing local ephemeral keys.');\n }\n}\nexport function logRemoteStaticKey(rs, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n keyLogger(`REMOTE_STATIC_PUBLIC_KEY ${uint8ArrayToString(rs.subarray(), 'hex')}`);\n}\nexport function logRemoteEphemeralKey(re, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n keyLogger(`REMOTE_EPHEMERAL_PUBLIC_KEY ${uint8ArrayToString(re.subarray(), 'hex')}`);\n}\nexport function logCipherState(session, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (session.cs1 && session.cs2) {\n keyLogger(`CIPHER_STATE_1 ${session.cs1.n.getUint64()} ${uint8ArrayToString(session.cs1.k, 'hex')}`);\n keyLogger(`CIPHER_STATE_2 ${session.cs2.n.getUint64()} ${uint8ArrayToString(session.cs2.k, 'hex')}`);\n }\n else {\n keyLogger('Missing cipher state.');\n }\n}\n//# sourceMappingURL=logger.js.map","import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { decode0, decode1, decode2, encode0, encode1, encode2 } from './encoder.js';\nimport { InvalidCryptoExchangeError, UnexpectedPeerError } from './errors.js';\nimport { XX } from './handshakes/xx.js';\nimport { logLocalStaticKeys, logLocalEphemeralKeys, logRemoteEphemeralKey, logRemoteStaticKey, logCipherState } from './logger.js';\nimport { decodePayload, getPeerIdFromPayload, verifySignedPayload } from './utils.js';\nexport class XXHandshake {\n isInitiator;\n session;\n remotePeer;\n remoteExtensions = { webtransportCerthashes: [] };\n payload;\n connection;\n xx;\n staticKeypair;\n prologue;\n log;\n constructor(components, isInitiator, payload, prologue, crypto, staticKeypair, connection, remotePeer, handshake) {\n this.log = components.logger.forComponent('libp2p:noise:xxhandshake');\n this.isInitiator = isInitiator;\n this.payload = payload;\n this.prologue = prologue;\n this.staticKeypair = staticKeypair;\n this.connection = connection;\n if (remotePeer) {\n this.remotePeer = remotePeer;\n }\n this.xx = handshake ?? new XX(components, crypto);\n this.session = this.xx.initSession(this.isInitiator, this.prologue, this.staticKeypair);\n }\n // stage 0\n async propose() {\n logLocalStaticKeys(this.session.hs.s, this.log);\n if (this.isInitiator) {\n this.log.trace('Stage 0 - Initiator starting to send first message.');\n const messageBuffer = this.xx.sendMessage(this.session, uint8ArrayAlloc(0));\n await this.connection.write(encode0(messageBuffer));\n this.log.trace('Stage 0 - Initiator finished sending first message.');\n logLocalEphemeralKeys(this.session.hs.e, this.log);\n }\n else {\n this.log.trace('Stage 0 - Responder waiting to receive first message...');\n const receivedMessageBuffer = decode0((await this.connection.read()).subarray());\n const { valid } = this.xx.recvMessage(this.session, receivedMessageBuffer);\n if (!valid) {\n throw new InvalidCryptoExchangeError('xx handshake stage 0 validation fail');\n }\n this.log.trace('Stage 0 - Responder received first message.');\n logRemoteEphemeralKey(this.session.hs.re, this.log);\n }\n }\n // stage 1\n async exchange() {\n if (this.isInitiator) {\n this.log.trace('Stage 1 - Initiator waiting to receive first message from responder...');\n const receivedMessageBuffer = decode1((await this.connection.read()).subarray());\n const { plaintext, valid } = this.xx.recvMessage(this.session, receivedMessageBuffer);\n if (!valid) {\n throw new InvalidCryptoExchangeError('xx handshake stage 1 validation fail');\n }\n this.log.trace('Stage 1 - Initiator received the message.');\n logRemoteEphemeralKey(this.session.hs.re, this.log);\n logRemoteStaticKey(this.session.hs.rs, this.log);\n this.log.trace(\"Initiator going to check remote's signature...\");\n try {\n const decodedPayload = decodePayload(plaintext);\n this.remotePeer = this.remotePeer || await getPeerIdFromPayload(decodedPayload);\n await verifySignedPayload(this.session.hs.rs, decodedPayload, this.remotePeer);\n this.setRemoteNoiseExtension(decodedPayload.extensions);\n }\n catch (e) {\n const err = e;\n throw new UnexpectedPeerError(`Error occurred while verifying signed payload: ${err.message}`);\n }\n this.log.trace('All good with the signature!');\n }\n else {\n this.log.trace('Stage 1 - Responder sending out first message with signed payload and static key.');\n const messageBuffer = this.xx.sendMessage(this.session, this.payload);\n await this.connection.write(encode1(messageBuffer));\n this.log.trace('Stage 1 - Responder sent the second handshake message with signed payload.');\n logLocalEphemeralKeys(this.session.hs.e, this.log);\n }\n }\n // stage 2\n async finish() {\n if (this.isInitiator) {\n this.log.trace('Stage 2 - Initiator sending third handshake message.');\n const messageBuffer = this.xx.sendMessage(this.session, this.payload);\n await this.connection.write(encode2(messageBuffer));\n this.log.trace('Stage 2 - Initiator sent message with signed payload.');\n }\n else {\n this.log.trace('Stage 2 - Responder waiting for third handshake message...');\n const receivedMessageBuffer = decode2((await this.connection.read()).subarray());\n const { plaintext, valid } = this.xx.recvMessage(this.session, receivedMessageBuffer);\n if (!valid) {\n throw new InvalidCryptoExchangeError('xx handshake stage 2 validation fail');\n }\n this.log.trace('Stage 2 - Responder received the message, finished handshake.');\n try {\n const decodedPayload = decodePayload(plaintext);\n this.remotePeer = this.remotePeer || await getPeerIdFromPayload(decodedPayload);\n await verifySignedPayload(this.session.hs.rs, decodedPayload, this.remotePeer);\n this.setRemoteNoiseExtension(decodedPayload.extensions);\n }\n catch (e) {\n const err = e;\n throw new UnexpectedPeerError(`Error occurred while verifying signed payload: ${err.message}`);\n }\n }\n logCipherState(this.session, this.log);\n }\n encrypt(plaintext, session) {\n const cs = this.getCS(session);\n return this.xx.encryptWithAd(cs, uint8ArrayAlloc(0), plaintext);\n }\n decrypt(ciphertext, session, dst) {\n const cs = this.getCS(session, false);\n return this.xx.decryptWithAd(cs, uint8ArrayAlloc(0), ciphertext, dst);\n }\n getRemoteStaticKey() {\n return this.session.hs.rs;\n }\n getCS(session, encryption = true) {\n if (!session.cs1 || !session.cs2) {\n throw new InvalidCryptoExchangeError('Handshake not completed properly, cipher state does not exist.');\n }\n if (this.isInitiator) {\n return encryption ? session.cs1 : session.cs2;\n }\n else {\n return encryption ? session.cs2 : session.cs1;\n }\n }\n setRemoteNoiseExtension(e) {\n if (e) {\n this.remoteExtensions = e;\n }\n }\n}\n//# sourceMappingURL=handshake-xx.js.map","export function registerMetrics(metrics) {\n return {\n xxHandshakeSuccesses: metrics.registerCounter('libp2p_noise_xxhandshake_successes_total', {\n help: 'Total count of noise xxHandshakes successes_'\n }),\n xxHandshakeErrors: metrics.registerCounter('libp2p_noise_xxhandshake_error_total', {\n help: 'Total count of noise xxHandshakes errors'\n }),\n encryptedPackets: metrics.registerCounter('libp2p_noise_encrypted_packets_total', {\n help: 'Total count of noise encrypted packets successfully'\n }),\n decryptedPackets: metrics.registerCounter('libp2p_noise_decrypted_packets_total', {\n help: 'Total count of noise decrypted packets'\n }),\n decryptErrors: metrics.registerCounter('libp2p_noise_decrypt_errors_total', {\n help: 'Total count of noise decrypt errors'\n })\n };\n}\n//# sourceMappingURL=metrics.js.map","import { decode } from 'it-length-prefixed';\nimport { lpStream } from 'it-length-prefixed-stream';\nimport { duplexPair } from 'it-pair/duplex';\nimport { pipe } from 'it-pipe';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { NOISE_MSG_MAX_LENGTH_BYTES } from './constants.js';\nimport { defaultCrypto } from './crypto/index.js';\nimport { decryptStream, encryptStream } from './crypto/streaming.js';\nimport { uint16BEDecode, uint16BEEncode } from './encoder.js';\nimport { XXHandshake } from './handshake-xx.js';\nimport { registerMetrics } from './metrics.js';\nimport { getPayload } from './utils.js';\nexport class Noise {\n protocol = '/noise';\n crypto;\n prologue;\n staticKeys;\n extensions;\n metrics;\n components;\n constructor(components, init = {}) {\n const { staticNoiseKey, extensions, crypto, prologueBytes } = init;\n const { metrics } = components;\n this.components = components;\n this.crypto = crypto ?? defaultCrypto;\n this.extensions = extensions;\n this.metrics = metrics ? registerMetrics(metrics) : undefined;\n if (staticNoiseKey) {\n // accepts x25519 private key of length 32\n this.staticKeys = this.crypto.generateX25519KeyPairFromSeed(staticNoiseKey);\n }\n else {\n this.staticKeys = this.crypto.generateX25519KeyPair();\n }\n this.prologue = prologueBytes ?? uint8ArrayAlloc(0);\n }\n /**\n * Encrypt outgoing data to the remote party (handshake as initiator)\n *\n * @param {PeerId} localPeer - PeerId of the receiving peer\n * @param {Stream} connection - streaming iterable duplex that will be encrypted\n * @param {PeerId} remotePeer - PeerId of the remote peer. Used to validate the integrity of the remote peer.\n * @returns {Promise>}\n */\n async secureOutbound(localPeer, connection, remotePeer) {\n const wrappedConnection = lpStream(connection, {\n lengthEncoder: uint16BEEncode,\n lengthDecoder: uint16BEDecode,\n maxDataLength: NOISE_MSG_MAX_LENGTH_BYTES\n });\n const handshake = await this.performHandshake({\n connection: wrappedConnection,\n isInitiator: true,\n localPeer,\n remotePeer\n });\n const conn = await this.createSecureConnection(wrappedConnection, handshake);\n connection.source = conn.source;\n connection.sink = conn.sink;\n return {\n conn: connection,\n remoteExtensions: handshake.remoteExtensions,\n remotePeer: handshake.remotePeer\n };\n }\n /**\n * Decrypt incoming data (handshake as responder).\n *\n * @param {PeerId} localPeer - PeerId of the receiving peer.\n * @param {Stream} connection - streaming iterable duplex that will be encrypted.\n * @param {PeerId} remotePeer - optional PeerId of the initiating peer, if known. This may only exist during transport upgrades.\n * @returns {Promise>}\n */\n async secureInbound(localPeer, connection, remotePeer) {\n const wrappedConnection = lpStream(connection, {\n lengthEncoder: uint16BEEncode,\n lengthDecoder: uint16BEDecode,\n maxDataLength: NOISE_MSG_MAX_LENGTH_BYTES\n });\n const handshake = await this.performHandshake({\n connection: wrappedConnection,\n isInitiator: false,\n localPeer,\n remotePeer\n });\n const conn = await this.createSecureConnection(wrappedConnection, handshake);\n connection.source = conn.source;\n connection.sink = conn.sink;\n return {\n conn: connection,\n remotePeer: handshake.remotePeer,\n remoteExtensions: handshake.remoteExtensions\n };\n }\n /**\n * If Noise pipes supported, tries IK handshake first with XX as fallback if it fails.\n * If noise pipes disabled or remote peer static key is unknown, use XX.\n *\n * @param {HandshakeParams} params\n */\n async performHandshake(params) {\n const payload = await getPayload(params.localPeer, this.staticKeys.publicKey, this.extensions);\n // run XX handshake\n return this.performXXHandshake(params, payload);\n }\n async performXXHandshake(params, payload) {\n const { isInitiator, remotePeer, connection } = params;\n const handshake = new XXHandshake(this.components, isInitiator, payload, this.prologue, this.crypto, this.staticKeys, connection, remotePeer);\n try {\n await handshake.propose();\n await handshake.exchange();\n await handshake.finish();\n this.metrics?.xxHandshakeSuccesses.increment();\n }\n catch (e) {\n this.metrics?.xxHandshakeErrors.increment();\n if (e instanceof Error) {\n e.message = `Error occurred during XX handshake: ${e.message}`;\n throw e;\n }\n }\n return handshake;\n }\n async createSecureConnection(connection, handshake) {\n // Create encryption box/unbox wrapper\n const [secure, user] = duplexPair();\n const network = connection.unwrap();\n await pipe(secure, // write to wrapper\n encryptStream(handshake, this.metrics), // encrypt data + prefix with message length\n network, // send to the remote peer\n (source) => decode(source, { lengthDecoder: uint16BEDecode }), // read message length prefix\n decryptStream(handshake, this.metrics), // decrypt the incoming data\n secure // pipe to the wrapper\n );\n return user;\n }\n}\n//# sourceMappingURL=noise.js.map","import { Noise } from './noise.js';\nexport { pureJsCrypto } from './crypto/js.js';\nexport function noise(init = {}) {\n return (components) => new Noise(components, init);\n}\n//# sourceMappingURL=index.js.map","export function getIterator(obj) {\n if (obj != null) {\n if (typeof obj[Symbol.iterator] === 'function') {\n return obj[Symbol.iterator]();\n }\n if (typeof obj[Symbol.asyncIterator] === 'function') {\n return obj[Symbol.asyncIterator]();\n }\n if (typeof obj.next === 'function') {\n return obj; // probably an iterator\n }\n }\n throw new Error('argument is not an iterator or iterable');\n}\n//# sourceMappingURL=index.js.map","// Protocol violation errors\nexport const ERR_INVALID_FRAME = 'ERR_INVALID_FRAME';\nexport const ERR_UNREQUESTED_PING = 'ERR_UNREQUESTED_PING';\nexport const ERR_NOT_MATCHING_PING = 'ERR_NOT_MATCHING_PING';\nexport const ERR_STREAM_ALREADY_EXISTS = 'ERR_STREAM_ALREADY_EXISTS';\nexport const ERR_DECODE_INVALID_VERSION = 'ERR_DECODE_INVALID_VERSION';\nexport const ERR_BOTH_CLIENTS = 'ERR_BOTH_CLIENTS';\nexport const ERR_RECV_WINDOW_EXCEEDED = 'ERR_RECV_WINDOW_EXCEEDED';\nexport const PROTOCOL_ERRORS = new Set([\n ERR_INVALID_FRAME,\n ERR_UNREQUESTED_PING,\n ERR_NOT_MATCHING_PING,\n ERR_STREAM_ALREADY_EXISTS,\n ERR_DECODE_INVALID_VERSION,\n ERR_BOTH_CLIENTS,\n ERR_RECV_WINDOW_EXCEEDED\n]);\n// local errors\nexport const ERR_INVALID_CONFIG = 'ERR_INVALID_CONFIG';\nexport const ERR_MUXER_LOCAL_CLOSED = 'ERR_MUXER_LOCAL_CLOSED';\nexport const ERR_MUXER_REMOTE_CLOSED = 'ERR_MUXER_REMOTE_CLOSED';\nexport const ERR_STREAM_RESET = 'ERR_STREAM_RESET';\nexport const ERR_STREAM_ABORT = 'ERR_STREAM_ABORT';\nexport const ERR_MAX_OUTBOUND_STREAMS_EXCEEDED = 'ERROR_MAX_OUTBOUND_STREAMS_EXCEEDED';\nexport const ERR_DECODE_IN_PROGRESS = 'ERR_DECODE_IN_PROGRESS';\n/**\n * INITIAL_STREAM_WINDOW is the initial stream window size.\n *\n * Not an implementation choice, this is defined in the specification\n */\nexport const INITIAL_STREAM_WINDOW = 256 * 1024;\n/**\n * Default max stream window\n */\nexport const MAX_STREAM_WINDOW = 16 * 1024 * 1024;\n//# sourceMappingURL=constants.js.map","import { CodeError } from '@libp2p/interface';\nimport { ERR_INVALID_CONFIG, INITIAL_STREAM_WINDOW, MAX_STREAM_WINDOW } from './constants.js';\nexport const defaultConfig = {\n enableKeepAlive: true,\n keepAliveInterval: 30000,\n maxInboundStreams: 1000,\n maxOutboundStreams: 1000,\n initialStreamWindowSize: INITIAL_STREAM_WINDOW,\n maxStreamWindowSize: MAX_STREAM_WINDOW,\n maxMessageSize: 64 * 1024\n};\nexport function verifyConfig(config) {\n if (config.keepAliveInterval <= 0) {\n throw new CodeError('keep-alive interval must be positive', ERR_INVALID_CONFIG);\n }\n if (config.maxInboundStreams < 0) {\n throw new CodeError('max inbound streams must be larger or equal 0', ERR_INVALID_CONFIG);\n }\n if (config.maxOutboundStreams < 0) {\n throw new CodeError('max outbound streams must be larger or equal 0', ERR_INVALID_CONFIG);\n }\n if (config.initialStreamWindowSize < INITIAL_STREAM_WINDOW) {\n throw new CodeError('InitialStreamWindowSize must be larger or equal 256 kB', ERR_INVALID_CONFIG);\n }\n if (config.maxStreamWindowSize < config.initialStreamWindowSize) {\n throw new CodeError('MaxStreamWindowSize must be larger than the InitialStreamWindowSize', ERR_INVALID_CONFIG);\n }\n if (config.maxStreamWindowSize > 2 ** 32 - 1) {\n throw new CodeError('MaxStreamWindowSize must be less than equal MAX_UINT32', ERR_INVALID_CONFIG);\n }\n if (config.maxMessageSize < 1024) {\n throw new CodeError('MaxMessageSize must be greater than a kilobyte', ERR_INVALID_CONFIG);\n }\n}\n//# sourceMappingURL=config.js.map","export var FrameType;\n(function (FrameType) {\n /** Used to transmit data. May transmit zero length payloads depending on the flags. */\n FrameType[FrameType[\"Data\"] = 0] = \"Data\";\n /** Used to updated the senders receive window size. This is used to implement per-session flow control. */\n FrameType[FrameType[\"WindowUpdate\"] = 1] = \"WindowUpdate\";\n /** Used to measure RTT. It can also be used to heart-beat and do keep-alives over TCP. */\n FrameType[FrameType[\"Ping\"] = 2] = \"Ping\";\n /** Used to close a session. */\n FrameType[FrameType[\"GoAway\"] = 3] = \"GoAway\";\n})(FrameType || (FrameType = {}));\nexport var Flag;\n(function (Flag) {\n /** Signals the start of a new stream. May be sent with a data or window update message. Also sent with a ping to indicate outbound. */\n Flag[Flag[\"SYN\"] = 1] = \"SYN\";\n /** Acknowledges the start of a new stream. May be sent with a data or window update message. Also sent with a ping to indicate response. */\n Flag[Flag[\"ACK\"] = 2] = \"ACK\";\n /** Performs a half-close of a stream. May be sent with a data message or window update. */\n Flag[Flag[\"FIN\"] = 4] = \"FIN\";\n /** Reset a stream immediately. May be sent with a data or window update message. */\n Flag[Flag[\"RST\"] = 8] = \"RST\";\n})(Flag || (Flag = {}));\nconst flagCodes = Object.values(Flag).filter((x) => typeof x !== 'string');\nexport const YAMUX_VERSION = 0;\nexport var GoAwayCode;\n(function (GoAwayCode) {\n GoAwayCode[GoAwayCode[\"NormalTermination\"] = 0] = \"NormalTermination\";\n GoAwayCode[GoAwayCode[\"ProtocolError\"] = 1] = \"ProtocolError\";\n GoAwayCode[GoAwayCode[\"InternalError\"] = 2] = \"InternalError\";\n})(GoAwayCode || (GoAwayCode = {}));\nexport const HEADER_LENGTH = 12;\nexport function stringifyHeader(header) {\n const flags = flagCodes.filter(f => (header.flag & f) === f).map(f => Flag[f]).join('|');\n return `streamID=${header.streamID} type=${FrameType[header.type]} flag=${flags} length=${header.length}`;\n}\n//# sourceMappingURL=frame.js.map","import { CodeError } from '@libp2p/interface';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { ERR_DECODE_INVALID_VERSION, ERR_DECODE_IN_PROGRESS } from './constants.js';\nimport { FrameType, HEADER_LENGTH, YAMUX_VERSION } from './frame.js';\n// used to bitshift in decoding\n// native bitshift can overflow into a negative number, so we bitshift by multiplying by a power of 2\nconst twoPow24 = 2 ** 24;\n/**\n * Decode a header from the front of a buffer\n *\n * @param data - Assumed to have enough bytes for a header\n */\nexport function decodeHeader(data) {\n if (data[0] !== YAMUX_VERSION) {\n throw new CodeError('Invalid frame version', ERR_DECODE_INVALID_VERSION);\n }\n return {\n type: data[1],\n flag: (data[2] << 8) + data[3],\n streamID: (data[4] * twoPow24) + (data[5] << 16) + (data[6] << 8) + data[7],\n length: (data[8] * twoPow24) + (data[9] << 16) + (data[10] << 8) + data[11]\n };\n}\n/**\n * Decodes yamux frames from a source\n */\nexport class Decoder {\n source;\n /** Buffer for in-progress frames */\n buffer;\n /** Used to sanity check against decoding while in an inconsistent state */\n frameInProgress;\n constructor(source) {\n // Normally, when entering a for-await loop with an iterable/async iterable, the only ways to exit the loop are:\n // 1. exhaust the iterable\n // 2. throw an error - slow, undesirable if there's not actually an error\n // 3. break or return - calls the iterable's `return` method, finalizing the iterable, no more iteration possible\n //\n // In this case, we want to enter (and exit) a for-await loop per chunked data frame and continue processing the iterable.\n // To do this, we strip the `return` method from the iterator and can now `break` early and continue iterating.\n // Exiting the main for-await is still possible via 1. and 2.\n this.source = returnlessSource(source);\n this.buffer = new Uint8ArrayList();\n this.frameInProgress = false;\n }\n /**\n * Emits frames from the decoder source.\n *\n * Note: If `readData` is emitted, it _must_ be called before the next iteration\n * Otherwise an error is thrown\n */\n async *emitFrames() {\n for await (const chunk of this.source) {\n this.buffer.append(chunk);\n // Loop to consume as many bytes from the buffer as possible\n // Eg: when a single chunk contains several frames\n while (true) {\n const header = this.readHeader();\n if (header === undefined) {\n break;\n }\n const { type, length } = header;\n if (type === FrameType.Data) {\n // This is a data frame, the frame body must still be read\n // `readData` must be called before the next iteration here\n this.frameInProgress = true;\n yield {\n header,\n readData: this.readBytes.bind(this, length)\n };\n }\n else {\n yield { header };\n }\n }\n }\n }\n readHeader() {\n // Sanity check to ensure a header isn't read when another frame is partially decoded\n // In practice this shouldn't happen\n if (this.frameInProgress) {\n throw new CodeError('decoding frame already in progress', ERR_DECODE_IN_PROGRESS);\n }\n if (this.buffer.length < HEADER_LENGTH) {\n // not enough data yet\n return;\n }\n const header = decodeHeader(this.buffer.subarray(0, HEADER_LENGTH));\n this.buffer.consume(HEADER_LENGTH);\n return header;\n }\n async readBytes(length) {\n if (this.buffer.length < length) {\n for await (const chunk of this.source) {\n this.buffer.append(chunk);\n if (this.buffer.length >= length) {\n // see note above, the iterator is not `return`ed here\n break;\n }\n }\n }\n const out = this.buffer.sublist(0, length);\n this.buffer.consume(length);\n // The next frame can now be decoded\n this.frameInProgress = false;\n return out;\n }\n}\n/**\n * Strip the `return` method from a `Source`\n */\nexport function returnlessSource(source) {\n if (source[Symbol.iterator] !== undefined) {\n const iterator = source[Symbol.iterator]();\n iterator.return = undefined;\n return {\n [Symbol.iterator]() { return iterator; }\n };\n }\n else if (source[Symbol.asyncIterator] !== undefined) {\n const iterator = source[Symbol.asyncIterator]();\n iterator.return = undefined;\n return {\n [Symbol.asyncIterator]() { return iterator; }\n };\n }\n else {\n throw new Error('a source must be either an iterable or an async iterable');\n }\n}\n//# sourceMappingURL=decode.js.map","import { HEADER_LENGTH } from './frame.js';\nexport function encodeHeader(header) {\n const frame = new Uint8Array(HEADER_LENGTH);\n // always assume version 0\n // frameView.setUint8(0, header.version)\n frame[1] = header.type;\n frame[2] = header.flag >>> 8;\n frame[3] = header.flag;\n frame[4] = header.streamID >>> 24;\n frame[5] = header.streamID >>> 16;\n frame[6] = header.streamID >>> 8;\n frame[7] = header.streamID;\n frame[8] = header.length >>> 24;\n frame[9] = header.length >>> 16;\n frame[10] = header.length >>> 8;\n frame[11] = header.length;\n return frame;\n}\n//# sourceMappingURL=encode.js.map","export function isPromise(thing) {\n if (thing == null) {\n return false;\n }\n return typeof thing.then === 'function' &&\n typeof thing.catch === 'function' &&\n typeof thing.finally === 'function';\n}\n//# sourceMappingURL=is-promise.js.map","import { getIterator } from 'get-iterator';\nimport { isPromise } from './is-promise.js';\nexport function closeSource(source, log) {\n const res = getIterator(source).return?.();\n if (isPromise(res)) {\n res.catch(err => {\n log.error('could not cause iterator to return', err);\n });\n }\n}\n//# sourceMappingURL=close-source.js.map","import { CodeError } from '@libp2p/interface';\nimport { pushable } from 'it-pushable';\nimport defer, {} from 'p-defer';\nimport pDefer from 'p-defer';\nimport { raceSignal } from 'race-signal';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { closeSource } from './close-source.js';\nconst ERR_STREAM_RESET = 'ERR_STREAM_RESET';\nconst ERR_SINK_INVALID_STATE = 'ERR_SINK_INVALID_STATE';\nconst DEFAULT_SEND_CLOSE_WRITE_TIMEOUT = 5000;\nfunction isPromise(thing) {\n if (thing == null) {\n return false;\n }\n return typeof thing.then === 'function' &&\n typeof thing.catch === 'function' &&\n typeof thing.finally === 'function';\n}\nexport class AbstractStream {\n id;\n direction;\n timeline;\n protocol;\n metadata;\n source;\n status;\n readStatus;\n writeStatus;\n log;\n sinkController;\n sinkEnd;\n closed;\n endErr;\n streamSource;\n onEnd;\n onCloseRead;\n onCloseWrite;\n onReset;\n onAbort;\n sendCloseWriteTimeout;\n sendingData;\n constructor(init) {\n this.sinkController = new AbortController();\n this.sinkEnd = defer();\n this.closed = defer();\n this.log = init.log;\n // stream status\n this.status = 'open';\n this.readStatus = 'ready';\n this.writeStatus = 'ready';\n this.id = init.id;\n this.metadata = init.metadata ?? {};\n this.direction = init.direction;\n this.timeline = {\n open: Date.now()\n };\n this.sendCloseWriteTimeout = init.sendCloseWriteTimeout ?? DEFAULT_SEND_CLOSE_WRITE_TIMEOUT;\n this.onEnd = init.onEnd;\n this.onCloseRead = init?.onCloseRead;\n this.onCloseWrite = init?.onCloseWrite;\n this.onReset = init?.onReset;\n this.onAbort = init?.onAbort;\n this.source = this.streamSource = pushable({\n onEnd: (err) => {\n if (err != null) {\n this.log.trace('source ended with error', err);\n }\n else {\n this.log.trace('source ended');\n }\n this.onSourceEnd(err);\n }\n });\n // necessary because the libp2p upgrader wraps the sink function\n this.sink = this.sink.bind(this);\n }\n async sink(source) {\n if (this.writeStatus !== 'ready') {\n throw new CodeError(`writable end state is \"${this.writeStatus}\" not \"ready\"`, ERR_SINK_INVALID_STATE);\n }\n try {\n this.writeStatus = 'writing';\n const options = {\n signal: this.sinkController.signal\n };\n if (this.direction === 'outbound') { // If initiator, open a new stream\n const res = this.sendNewStream(options);\n if (isPromise(res)) {\n await res;\n }\n }\n const abortListener = () => {\n closeSource(source, this.log);\n };\n try {\n this.sinkController.signal.addEventListener('abort', abortListener);\n this.log.trace('sink reading from source');\n for await (let data of source) {\n data = data instanceof Uint8Array ? new Uint8ArrayList(data) : data;\n const res = this.sendData(data, options);\n if (isPromise(res)) {\n this.sendingData = pDefer();\n await res;\n this.sendingData.resolve();\n this.sendingData = undefined;\n }\n }\n }\n finally {\n this.sinkController.signal.removeEventListener('abort', abortListener);\n }\n this.log.trace('sink finished reading from source, write status is \"%s\"', this.writeStatus);\n if (this.writeStatus === 'writing') {\n this.writeStatus = 'closing';\n this.log.trace('send close write to remote');\n await this.sendCloseWrite({\n signal: AbortSignal.timeout(this.sendCloseWriteTimeout)\n });\n this.writeStatus = 'closed';\n }\n this.onSinkEnd();\n }\n catch (err) {\n this.log.trace('sink ended with error, calling abort with error', err);\n this.abort(err);\n throw err;\n }\n finally {\n this.log.trace('resolve sink end');\n this.sinkEnd.resolve();\n }\n }\n onSourceEnd(err) {\n if (this.timeline.closeRead != null) {\n return;\n }\n this.timeline.closeRead = Date.now();\n this.readStatus = 'closed';\n if (err != null && this.endErr == null) {\n this.endErr = err;\n }\n this.onCloseRead?.();\n if (this.timeline.closeWrite != null) {\n this.log.trace('source and sink ended');\n this.timeline.close = Date.now();\n if (this.status !== 'aborted' && this.status !== 'reset') {\n this.status = 'closed';\n }\n if (this.onEnd != null) {\n this.onEnd(this.endErr);\n }\n this.closed.resolve();\n }\n else {\n this.log.trace('source ended, waiting for sink to end');\n }\n }\n onSinkEnd(err) {\n if (this.timeline.closeWrite != null) {\n return;\n }\n this.timeline.closeWrite = Date.now();\n this.writeStatus = 'closed';\n if (err != null && this.endErr == null) {\n this.endErr = err;\n }\n this.onCloseWrite?.();\n if (this.timeline.closeRead != null) {\n this.log.trace('sink and source ended');\n this.timeline.close = Date.now();\n if (this.status !== 'aborted' && this.status !== 'reset') {\n this.status = 'closed';\n }\n if (this.onEnd != null) {\n this.onEnd(this.endErr);\n }\n this.closed.resolve();\n }\n else {\n this.log.trace('sink ended, waiting for source to end');\n }\n }\n // Close for both Reading and Writing\n async close(options) {\n this.log.trace('closing gracefully');\n this.status = 'closing';\n // wait for read and write ends to close\n await raceSignal(Promise.all([\n this.closeWrite(options),\n this.closeRead(options),\n this.closed.promise\n ]), options?.signal);\n this.status = 'closed';\n this.log.trace('closed gracefully');\n }\n async closeRead(options = {}) {\n if (this.readStatus === 'closing' || this.readStatus === 'closed') {\n return;\n }\n this.log.trace('closing readable end of stream with starting read status \"%s\"', this.readStatus);\n const readStatus = this.readStatus;\n this.readStatus = 'closing';\n if (this.status !== 'reset' && this.status !== 'aborted' && this.timeline.closeRead == null) {\n this.log.trace('send close read to remote');\n await this.sendCloseRead(options);\n }\n if (readStatus === 'ready') {\n this.log.trace('ending internal source queue with %d queued bytes', this.streamSource.readableLength);\n this.streamSource.end();\n }\n this.log.trace('closed readable end of stream');\n }\n async closeWrite(options = {}) {\n if (this.writeStatus === 'closing' || this.writeStatus === 'closed') {\n return;\n }\n this.log.trace('closing writable end of stream with starting write status \"%s\"', this.writeStatus);\n if (this.writeStatus === 'ready') {\n this.log.trace('sink was never sunk, sink an empty array');\n await raceSignal(this.sink([]), options.signal);\n }\n if (this.writeStatus === 'writing') {\n // try to let sending outgoing data succeed\n if (this.sendingData != null) {\n await raceSignal(this.sendingData.promise, options.signal);\n }\n // stop reading from the source passed to `.sink`\n this.log.trace('aborting source passed to .sink');\n this.sinkController.abort();\n await raceSignal(this.sinkEnd.promise, options.signal);\n }\n this.writeStatus = 'closed';\n this.log.trace('closed writable end of stream');\n }\n /**\n * Close immediately for reading and writing and send a reset message (local\n * error)\n */\n abort(err) {\n if (this.status === 'closed' || this.status === 'aborted' || this.status === 'reset') {\n return;\n }\n this.log('abort with error', err);\n // try to send a reset message\n this.log('try to send reset to remote');\n const res = this.sendReset();\n if (isPromise(res)) {\n res.catch((err) => {\n this.log.error('error sending reset message', err);\n });\n }\n this.status = 'aborted';\n this.timeline.abort = Date.now();\n this._closeSinkAndSource(err);\n this.onAbort?.(err);\n }\n /**\n * Receive a reset message - close immediately for reading and writing (remote\n * error)\n */\n reset() {\n if (this.status === 'closed' || this.status === 'aborted' || this.status === 'reset') {\n return;\n }\n const err = new CodeError('stream reset', ERR_STREAM_RESET);\n this.status = 'reset';\n this.timeline.reset = Date.now();\n this._closeSinkAndSource(err);\n this.onReset?.();\n }\n _closeSinkAndSource(err) {\n this._closeSink(err);\n this._closeSource(err);\n }\n _closeSink(err) {\n // if the sink function is running, cause it to end\n if (this.writeStatus === 'writing') {\n this.log.trace('end sink source');\n this.sinkController.abort();\n }\n this.onSinkEnd(err);\n }\n _closeSource(err) {\n // if the source is not ending, end it\n if (this.readStatus !== 'closing' && this.readStatus !== 'closed') {\n this.log.trace('ending source with %d bytes to be read by consumer', this.streamSource.readableLength);\n this.readStatus = 'closing';\n this.streamSource.end(err);\n }\n }\n /**\n * The remote closed for writing so we should expect to receive no more\n * messages\n */\n remoteCloseWrite() {\n if (this.readStatus === 'closing' || this.readStatus === 'closed') {\n this.log('received remote close write but local source is already closed');\n return;\n }\n this.log.trace('remote close write');\n this._closeSource();\n }\n /**\n * The remote closed for reading so we should not send any more\n * messages\n */\n remoteCloseRead() {\n if (this.writeStatus === 'closing' || this.writeStatus === 'closed') {\n this.log('received remote close read but local sink is already closed');\n return;\n }\n this.log.trace('remote close read');\n this._closeSink();\n }\n /**\n * The underlying muxer has closed, no more messages can be sent or will\n * be received, close immediately to free up resources\n */\n destroy() {\n if (this.status === 'closed' || this.status === 'aborted' || this.status === 'reset') {\n this.log('received destroy but we are already closed');\n return;\n }\n this.log.trace('stream destroyed');\n this._closeSinkAndSource();\n }\n /**\n * When an extending class reads data from it's implementation-specific source,\n * call this method to allow the stream consumer to read the data.\n */\n sourcePush(data) {\n this.streamSource.push(data);\n }\n /**\n * Returns the amount of unread data - can be used to prevent large amounts of\n * data building up when the stream consumer is too slow.\n */\n sourceReadableLength() {\n return this.streamSource.readableLength;\n }\n}\n//# sourceMappingURL=abstract-stream.js.map","import { CodeError } from '@libp2p/interface';\nimport { AbstractStream } from '@libp2p/utils/abstract-stream';\nimport each from 'it-foreach';\nimport { ERR_RECV_WINDOW_EXCEEDED, ERR_STREAM_ABORT, INITIAL_STREAM_WINDOW } from './constants.js';\nimport { Flag, FrameType, HEADER_LENGTH } from './frame.js';\nexport var StreamState;\n(function (StreamState) {\n StreamState[StreamState[\"Init\"] = 0] = \"Init\";\n StreamState[StreamState[\"SYNSent\"] = 1] = \"SYNSent\";\n StreamState[StreamState[\"SYNReceived\"] = 2] = \"SYNReceived\";\n StreamState[StreamState[\"Established\"] = 3] = \"Established\";\n StreamState[StreamState[\"Finished\"] = 4] = \"Finished\";\n})(StreamState || (StreamState = {}));\n/** YamuxStream is used to represent a logical stream within a session */\nexport class YamuxStream extends AbstractStream {\n name;\n state;\n config;\n _id;\n /** The number of available bytes to send */\n sendWindowCapacity;\n /** Callback to notify that the sendWindowCapacity has been updated */\n sendWindowCapacityUpdate;\n /** The number of bytes available to receive in a full window */\n recvWindow;\n /** The number of available bytes to receive */\n recvWindowCapacity;\n /**\n * An 'epoch' is the time it takes to process and read data\n *\n * Used in conjunction with RTT to determine whether to increase the recvWindow\n */\n epochStart;\n getRTT;\n sendFrame;\n constructor(init) {\n super({\n ...init,\n onEnd: (err) => {\n this.state = StreamState.Finished;\n init.onEnd?.(err);\n }\n });\n this.config = init.config;\n this._id = parseInt(init.id, 10);\n this.name = init.name;\n this.state = init.state;\n this.sendWindowCapacity = INITIAL_STREAM_WINDOW;\n this.recvWindow = this.config.initialStreamWindowSize;\n this.recvWindowCapacity = this.recvWindow;\n this.epochStart = Date.now();\n this.getRTT = init.getRTT;\n this.sendFrame = init.sendFrame;\n this.source = each(this.source, () => {\n this.sendWindowUpdate();\n });\n }\n /**\n * Send a message to the remote muxer informing them a new stream is being\n * opened.\n *\n * This is a noop for Yamux because the first window update is sent when\n * .newStream is called on the muxer which opens the stream on the remote.\n */\n async sendNewStream() {\n }\n /**\n * Send a data message to the remote muxer\n */\n async sendData(buf, options = {}) {\n buf = buf.sublist();\n // send in chunks, waiting for window updates\n while (buf.byteLength !== 0) {\n // wait for the send window to refill\n if (this.sendWindowCapacity === 0) {\n this.log?.trace('wait for send window capacity, status %s', this.status);\n await this.waitForSendWindowCapacity(options);\n // check we didn't close while waiting for send window capacity\n if (this.status === 'closed' || this.status === 'aborted' || this.status === 'reset') {\n this.log?.trace('%s while waiting for send window capacity', this.status);\n return;\n }\n }\n // send as much as we can\n const toSend = Math.min(this.sendWindowCapacity, this.config.maxMessageSize - HEADER_LENGTH, buf.length);\n const flags = this.getSendFlags();\n this.sendFrame({\n type: FrameType.Data,\n flag: flags,\n streamID: this._id,\n length: toSend\n }, buf.sublist(0, toSend));\n this.sendWindowCapacity -= toSend;\n buf.consume(toSend);\n }\n }\n /**\n * Send a reset message to the remote muxer\n */\n async sendReset() {\n this.sendFrame({\n type: FrameType.WindowUpdate,\n flag: Flag.RST,\n streamID: this._id,\n length: 0\n });\n }\n /**\n * Send a message to the remote muxer, informing them no more data messages\n * will be sent by this end of the stream\n */\n async sendCloseWrite() {\n const flags = this.getSendFlags() | Flag.FIN;\n this.sendFrame({\n type: FrameType.WindowUpdate,\n flag: flags,\n streamID: this._id,\n length: 0\n });\n }\n /**\n * Send a message to the remote muxer, informing them no more data messages\n * will be read by this end of the stream\n */\n async sendCloseRead() {\n }\n /**\n * Wait for the send window to be non-zero\n *\n * Will throw with ERR_STREAM_ABORT if the stream gets aborted\n */\n async waitForSendWindowCapacity(options = {}) {\n if (this.sendWindowCapacity > 0) {\n return;\n }\n let resolve;\n let reject;\n const abort = () => {\n if (this.status === 'open' || this.status === 'closing') {\n reject(new CodeError('stream aborted', ERR_STREAM_ABORT));\n }\n else {\n // the stream was closed already, ignore the failure to send\n resolve();\n }\n };\n options.signal?.addEventListener('abort', abort);\n try {\n await new Promise((_resolve, _reject) => {\n this.sendWindowCapacityUpdate = () => {\n _resolve();\n };\n reject = _reject;\n resolve = _resolve;\n });\n }\n finally {\n options.signal?.removeEventListener('abort', abort);\n }\n }\n /**\n * handleWindowUpdate is called when the stream receives a window update frame\n */\n handleWindowUpdate(header) {\n this.log?.trace('stream received window update id=%s', this._id);\n this.processFlags(header.flag);\n // increase send window\n const available = this.sendWindowCapacity;\n this.sendWindowCapacity += header.length;\n // if the update increments a 0 availability, notify the stream that sending can resume\n if (available === 0 && header.length > 0) {\n this.sendWindowCapacityUpdate?.();\n }\n }\n /**\n * handleData is called when the stream receives a data frame\n */\n async handleData(header, readData) {\n this.log?.trace('stream received data id=%s', this._id);\n this.processFlags(header.flag);\n // check that our recv window is not exceeded\n if (this.recvWindowCapacity < header.length) {\n throw new CodeError('receive window exceeded', ERR_RECV_WINDOW_EXCEEDED, { available: this.recvWindowCapacity, recv: header.length });\n }\n const data = await readData();\n this.recvWindowCapacity -= header.length;\n this.sourcePush(data);\n }\n /**\n * processFlags is used to update the state of the stream based on set flags, if any.\n */\n processFlags(flags) {\n if ((flags & Flag.ACK) === Flag.ACK) {\n if (this.state === StreamState.SYNSent) {\n this.state = StreamState.Established;\n }\n }\n if ((flags & Flag.FIN) === Flag.FIN) {\n this.remoteCloseWrite();\n }\n if ((flags & Flag.RST) === Flag.RST) {\n this.reset();\n }\n }\n /**\n * getSendFlags determines any flags that are appropriate\n * based on the current stream state.\n *\n * The state is updated as a side-effect.\n */\n getSendFlags() {\n switch (this.state) {\n case StreamState.Init:\n this.state = StreamState.SYNSent;\n return Flag.SYN;\n case StreamState.SYNReceived:\n this.state = StreamState.Established;\n return Flag.ACK;\n default:\n return 0;\n }\n }\n /**\n * potentially sends a window update enabling further writes to take place.\n */\n sendWindowUpdate() {\n // determine the flags if any\n const flags = this.getSendFlags();\n // If the stream has already been established\n // and we've processed data within the time it takes for 4 round trips\n // then we (up to) double the recvWindow\n const now = Date.now();\n const rtt = this.getRTT();\n if (flags === 0 && rtt > -1 && now - this.epochStart < rtt * 4) {\n // we've already validated that maxStreamWindowSize can't be more than MAX_UINT32\n this.recvWindow = Math.min(this.recvWindow * 2, this.config.maxStreamWindowSize);\n }\n if (this.recvWindowCapacity >= this.recvWindow && flags === 0) {\n // a window update isn't needed\n return;\n }\n // update the receive window\n const delta = this.recvWindow - this.recvWindowCapacity;\n this.recvWindowCapacity = this.recvWindow;\n // update the epoch start\n this.epochStart = now;\n // send window update\n this.sendFrame({\n type: FrameType.WindowUpdate,\n flag: flags,\n streamID: this._id,\n length: delta\n });\n }\n}\n//# sourceMappingURL=stream.js.map","import { CodeError, setMaxListeners } from '@libp2p/interface';\nimport { getIterator } from 'get-iterator';\nimport { pushable } from 'it-pushable';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { defaultConfig, verifyConfig } from './config.js';\nimport { ERR_BOTH_CLIENTS, ERR_INVALID_FRAME, ERR_MAX_OUTBOUND_STREAMS_EXCEEDED, ERR_MUXER_LOCAL_CLOSED, ERR_MUXER_REMOTE_CLOSED, ERR_NOT_MATCHING_PING, ERR_STREAM_ALREADY_EXISTS, ERR_UNREQUESTED_PING, PROTOCOL_ERRORS } from './constants.js';\nimport { Decoder } from './decode.js';\nimport { encodeHeader } from './encode.js';\nimport { Flag, FrameType, GoAwayCode } from './frame.js';\nimport { StreamState, YamuxStream } from './stream.js';\nconst YAMUX_PROTOCOL_ID = '/yamux/1.0.0';\nconst CLOSE_TIMEOUT = 500;\nexport class Yamux {\n protocol = YAMUX_PROTOCOL_ID;\n _components;\n _init;\n constructor(components, init = {}) {\n this._components = components;\n this._init = init;\n }\n createStreamMuxer(init) {\n return new YamuxMuxer(this._components, {\n ...this._init,\n ...init\n });\n }\n}\nexport class YamuxMuxer {\n protocol = YAMUX_PROTOCOL_ID;\n source;\n sink;\n config;\n log;\n logger;\n /** Used to close the muxer from either the sink or source */\n closeController;\n /** The next stream id to be used when initiating a new stream */\n nextStreamID;\n /** Primary stream mapping, streamID => stream */\n _streams;\n /** The next ping id to be used when pinging */\n nextPingID;\n /** Tracking info for the currently active ping */\n activePing;\n /** Round trip time */\n rtt;\n /** True if client, false if server */\n client;\n localGoAway;\n remoteGoAway;\n /** Number of tracked inbound streams */\n numInboundStreams;\n /** Number of tracked outbound streams */\n numOutboundStreams;\n onIncomingStream;\n onStreamEnd;\n constructor(components, init) {\n this.client = init.direction === 'outbound';\n this.config = { ...defaultConfig, ...init };\n this.logger = components.logger;\n this.log = this.logger.forComponent('libp2p:yamux');\n verifyConfig(this.config);\n this.closeController = new AbortController();\n setMaxListeners(Infinity, this.closeController.signal);\n this.onIncomingStream = init.onIncomingStream;\n this.onStreamEnd = init.onStreamEnd;\n this._streams = new Map();\n this.source = pushable({\n onEnd: () => {\n this.log?.trace('muxer source ended');\n this._streams.forEach(stream => {\n stream.destroy();\n });\n }\n });\n this.sink = async (source) => {\n const shutDownListener = () => {\n const iterator = getIterator(source);\n if (iterator.return != null) {\n const res = iterator.return();\n if (isPromise(res)) {\n res.catch(err => {\n this.log?.('could not cause sink source to return', err);\n });\n }\n }\n };\n let reason, error;\n try {\n const decoder = new Decoder(source);\n try {\n this.closeController.signal.addEventListener('abort', shutDownListener);\n for await (const frame of decoder.emitFrames()) {\n await this.handleFrame(frame.header, frame.readData);\n }\n }\n finally {\n this.closeController.signal.removeEventListener('abort', shutDownListener);\n }\n reason = GoAwayCode.NormalTermination;\n }\n catch (err) {\n // either a protocol or internal error\n const errCode = err.code;\n if (PROTOCOL_ERRORS.has(errCode)) {\n this.log?.error('protocol error in sink', err);\n reason = GoAwayCode.ProtocolError;\n }\n else {\n this.log?.error('internal error in sink', err);\n reason = GoAwayCode.InternalError;\n }\n error = err;\n }\n this.log?.trace('muxer sink ended');\n if (error != null) {\n this.abort(error, reason);\n }\n else {\n await this.close({ reason });\n }\n };\n this.numInboundStreams = 0;\n this.numOutboundStreams = 0;\n // client uses odd streamIDs, server uses even streamIDs\n this.nextStreamID = this.client ? 1 : 2;\n this.nextPingID = 0;\n this.rtt = -1;\n this.log?.trace('muxer created');\n if (this.config.enableKeepAlive) {\n this.keepAliveLoop().catch(e => this.log?.error('keepalive error: %s', e));\n }\n // send an initial ping to establish RTT\n this.ping().catch(e => this.log?.error('ping error: %s', e));\n }\n get streams() {\n return Array.from(this._streams.values());\n }\n newStream(name) {\n if (this.remoteGoAway !== undefined) {\n throw new CodeError('muxer closed remotely', ERR_MUXER_REMOTE_CLOSED);\n }\n if (this.localGoAway !== undefined) {\n throw new CodeError('muxer closed locally', ERR_MUXER_LOCAL_CLOSED);\n }\n const id = this.nextStreamID;\n this.nextStreamID += 2;\n // check against our configured maximum number of outbound streams\n if (this.numOutboundStreams >= this.config.maxOutboundStreams) {\n throw new CodeError('max outbound streams exceeded', ERR_MAX_OUTBOUND_STREAMS_EXCEEDED);\n }\n this.log?.trace('new outgoing stream id=%s', id);\n const stream = this._newStream(id, name, StreamState.Init, 'outbound');\n this._streams.set(id, stream);\n this.numOutboundStreams++;\n // send a window update to open the stream on the receiver end\n stream.sendWindowUpdate();\n return stream;\n }\n /**\n * Initiate a ping and wait for a response\n *\n * Note: only a single ping will be initiated at a time.\n * If a ping is already in progress, a new ping will not be initiated.\n *\n * @returns the round-trip-time in milliseconds\n */\n async ping() {\n if (this.remoteGoAway !== undefined) {\n throw new CodeError('muxer closed remotely', ERR_MUXER_REMOTE_CLOSED);\n }\n if (this.localGoAway !== undefined) {\n throw new CodeError('muxer closed locally', ERR_MUXER_LOCAL_CLOSED);\n }\n // An active ping does not yet exist, handle the process here\n if (this.activePing === undefined) {\n // create active ping\n let _resolve = () => { };\n this.activePing = {\n id: this.nextPingID++,\n // this promise awaits resolution or the close controller aborting\n promise: new Promise((resolve, reject) => {\n const closed = () => {\n reject(new CodeError('muxer closed locally', ERR_MUXER_LOCAL_CLOSED));\n };\n this.closeController.signal.addEventListener('abort', closed, { once: true });\n _resolve = () => {\n this.closeController.signal.removeEventListener('abort', closed);\n resolve();\n };\n }),\n resolve: _resolve\n };\n // send ping\n const start = Date.now();\n this.sendPing(this.activePing.id);\n // await pong\n try {\n await this.activePing.promise;\n }\n finally {\n // clean-up active ping\n delete this.activePing;\n }\n // update rtt\n const end = Date.now();\n this.rtt = end - start;\n }\n else {\n // an active ping is already in progress, piggyback off that\n await this.activePing.promise;\n }\n return this.rtt;\n }\n /**\n * Get the ping round trip time\n *\n * Note: Will return 0 if no successful ping has yet been completed\n *\n * @returns the round-trip-time in milliseconds\n */\n getRTT() {\n return this.rtt;\n }\n /**\n * Close the muxer\n */\n async close(options = {}) {\n if (this.closeController.signal.aborted) {\n // already closed\n return;\n }\n const reason = options?.reason ?? GoAwayCode.NormalTermination;\n this.log?.trace('muxer close reason=%s', reason);\n if (options.signal == null) {\n const signal = AbortSignal.timeout(CLOSE_TIMEOUT);\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n try {\n await Promise.all([...this._streams.values()].map(async (s) => s.close(options)));\n // send reason to the other side, allow the other side to close gracefully\n this.sendGoAway(reason);\n this._closeMuxer();\n }\n catch (err) {\n this.abort(err);\n }\n }\n abort(err, reason) {\n if (this.closeController.signal.aborted) {\n // already closed\n return;\n }\n reason = reason ?? GoAwayCode.InternalError;\n // If reason was provided, use that, otherwise use the presence of `err` to determine the reason\n this.log?.error('muxer abort reason=%s error=%s', reason, err);\n // Abort all underlying streams\n for (const stream of this._streams.values()) {\n stream.abort(err);\n }\n // send reason to the other side, allow the other side to close gracefully\n this.sendGoAway(reason);\n this._closeMuxer();\n }\n isClosed() {\n return this.closeController.signal.aborted;\n }\n /**\n * Called when either the local or remote shuts down the muxer\n */\n _closeMuxer() {\n // stop the sink and any other processes\n this.closeController.abort();\n // stop the source\n this.source.end();\n }\n /** Create a new stream */\n _newStream(id, name, state, direction) {\n if (this._streams.get(id) != null) {\n throw new CodeError('Stream already exists', ERR_STREAM_ALREADY_EXISTS, { id });\n }\n const stream = new YamuxStream({\n id: id.toString(),\n name,\n state,\n direction,\n sendFrame: this.sendFrame.bind(this),\n onEnd: () => {\n this.closeStream(id);\n this.onStreamEnd?.(stream);\n },\n log: this.logger.forComponent(`libp2p:yamux:${direction}:${id}`),\n config: this.config,\n getRTT: this.getRTT.bind(this)\n });\n return stream;\n }\n /**\n * closeStream is used to close a stream once both sides have\n * issued a close.\n */\n closeStream(id) {\n if (this.client === (id % 2 === 0)) {\n this.numInboundStreams--;\n }\n else {\n this.numOutboundStreams--;\n }\n this._streams.delete(id);\n }\n async keepAliveLoop() {\n const abortPromise = new Promise((_resolve, reject) => { this.closeController.signal.addEventListener('abort', reject, { once: true }); });\n this.log?.trace('muxer keepalive enabled interval=%s', this.config.keepAliveInterval);\n while (true) {\n let timeoutId;\n try {\n await Promise.race([\n abortPromise,\n new Promise((resolve) => {\n timeoutId = setTimeout(resolve, this.config.keepAliveInterval);\n })\n ]);\n this.ping().catch(e => this.log?.error('ping error: %s', e));\n }\n catch (e) {\n // closed\n clearInterval(timeoutId);\n return;\n }\n }\n }\n async handleFrame(header, readData) {\n const { streamID, type, length } = header;\n this.log?.trace('received frame %o', header);\n if (streamID === 0) {\n switch (type) {\n case FrameType.Ping:\n {\n this.handlePing(header);\n return;\n }\n case FrameType.GoAway:\n {\n this.handleGoAway(length);\n return;\n }\n default:\n // Invalid state\n throw new CodeError('Invalid frame type', ERR_INVALID_FRAME, { header });\n }\n }\n else {\n switch (header.type) {\n case FrameType.Data:\n case FrameType.WindowUpdate:\n {\n await this.handleStreamMessage(header, readData);\n return;\n }\n default:\n // Invalid state\n throw new CodeError('Invalid frame type', ERR_INVALID_FRAME, { header });\n }\n }\n }\n handlePing(header) {\n // If the ping is initiated by the sender, send a response\n if (header.flag === Flag.SYN) {\n this.log?.trace('received ping request pingId=%s', header.length);\n this.sendPing(header.length, Flag.ACK);\n }\n else if (header.flag === Flag.ACK) {\n this.log?.trace('received ping response pingId=%s', header.length);\n this.handlePingResponse(header.length);\n }\n else {\n // Invalid state\n throw new CodeError('Invalid frame flag', ERR_INVALID_FRAME, { header });\n }\n }\n handlePingResponse(pingId) {\n if (this.activePing === undefined) {\n // this ping was not requested\n throw new CodeError('ping not requested', ERR_UNREQUESTED_PING);\n }\n if (this.activePing.id !== pingId) {\n // this ping doesn't match our active ping request\n throw new CodeError('ping doesn\\'t match our id', ERR_NOT_MATCHING_PING);\n }\n // valid ping response\n this.activePing.resolve();\n }\n handleGoAway(reason) {\n this.log?.trace('received GoAway reason=%s', GoAwayCode[reason] ?? 'unknown');\n this.remoteGoAway = reason;\n // If the other side is friendly, they would have already closed all streams before sending a GoAway\n // In case they weren't, reset all streams\n for (const stream of this._streams.values()) {\n stream.reset();\n }\n this._closeMuxer();\n }\n async handleStreamMessage(header, readData) {\n const { streamID, flag, type } = header;\n if ((flag & Flag.SYN) === Flag.SYN) {\n this.incomingStream(streamID);\n }\n const stream = this._streams.get(streamID);\n if (stream === undefined) {\n if (type === FrameType.Data) {\n this.log?.('discarding data for stream id=%s', streamID);\n if (readData === undefined) {\n throw new Error('unreachable');\n }\n await readData();\n }\n else {\n this.log?.('frame for missing stream id=%s', streamID);\n }\n return;\n }\n switch (type) {\n case FrameType.WindowUpdate: {\n stream.handleWindowUpdate(header);\n return;\n }\n case FrameType.Data: {\n if (readData === undefined) {\n throw new Error('unreachable');\n }\n await stream.handleData(header, readData);\n return;\n }\n default:\n throw new Error('unreachable');\n }\n }\n incomingStream(id) {\n if (this.client !== (id % 2 === 0)) {\n throw new CodeError('both endpoints are clients', ERR_BOTH_CLIENTS);\n }\n if (this._streams.has(id)) {\n return;\n }\n this.log?.trace('new incoming stream id=%s', id);\n if (this.localGoAway !== undefined) {\n // reject (reset) immediately if we are doing a go away\n this.sendFrame({\n type: FrameType.WindowUpdate,\n flag: Flag.RST,\n streamID: id,\n length: 0\n });\n return;\n }\n // check against our configured maximum number of inbound streams\n if (this.numInboundStreams >= this.config.maxInboundStreams) {\n this.log?.('maxIncomingStreams exceeded, forcing stream reset');\n this.sendFrame({\n type: FrameType.WindowUpdate,\n flag: Flag.RST,\n streamID: id,\n length: 0\n });\n return;\n }\n // allocate a new stream\n const stream = this._newStream(id, undefined, StreamState.SYNReceived, 'inbound');\n this.numInboundStreams++;\n // the stream should now be tracked\n this._streams.set(id, stream);\n this.onIncomingStream?.(stream);\n }\n sendFrame(header, data) {\n this.log?.trace('sending frame %o', header);\n if (header.type === FrameType.Data) {\n if (data === undefined) {\n throw new CodeError('invalid frame', ERR_INVALID_FRAME);\n }\n this.source.push(new Uint8ArrayList(encodeHeader(header), data));\n }\n else {\n this.source.push(encodeHeader(header));\n }\n }\n sendPing(pingId, flag = Flag.SYN) {\n if (flag === Flag.SYN) {\n this.log?.trace('sending ping request pingId=%s', pingId);\n }\n else {\n this.log?.trace('sending ping response pingId=%s', pingId);\n }\n this.sendFrame({\n type: FrameType.Ping,\n flag,\n streamID: 0,\n length: pingId\n });\n }\n sendGoAway(reason = GoAwayCode.NormalTermination) {\n this.log?.('sending GoAway reason=%s', GoAwayCode[reason]);\n this.localGoAway = reason;\n this.sendFrame({\n type: FrameType.GoAway,\n flag: 0,\n streamID: 0,\n length: reason\n });\n }\n}\nfunction isPromise(thing) {\n return thing != null && typeof thing.then === 'function';\n}\n//# sourceMappingURL=muxer.js.map","/**\n * @packageDocumentation\n *\n * This module is a JavaScript implementation of [Yamux from Hashicorp](https://github.com/hashicorp/yamux/blob/master/spec.md) designed to be used with [js-libp2p](https://github.com/libp2p/js-libp2p).\n *\n * @example Configure libp2p with Yamux\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { yamux } from '@chainsafe/libp2p-yamux'\n *\n * const node = await createLibp2p({\n * // ... other options\n * streamMuxers: [\n * yamux()\n * ]\n * })\n * ```\n *\n * @example Using the low-level API\n *\n * ```js\n * import { yamux } from '@chainsafe/libp2p-yamux'\n * import { pipe } from 'it-pipe'\n * import { duplexPair } from 'it-pair/duplex'\n * import all from 'it-all'\n *\n * // Connect two yamux muxers to demo basic stream multiplexing functionality\n *\n * const clientMuxer = yamux({\n * client: true,\n * onIncomingStream: stream => {\n * // echo data on incoming streams\n * pipe(stream, stream)\n * },\n * onStreamEnd: stream => {\n * // do nothing\n * }\n * })()\n *\n * const serverMuxer = yamux({\n * client: false,\n * onIncomingStream: stream => {\n * // echo data on incoming streams\n * pipe(stream, stream)\n * },\n * onStreamEnd: stream => {\n * // do nothing\n * }\n * })()\n *\n * // `p` is our \"connections\", what we use to connect the two sides\n * // In a real application, a connection is usually to a remote computer\n * const p = duplexPair()\n *\n * // connect the muxers together\n * pipe(p[0], clientMuxer, p[0])\n * pipe(p[1], serverMuxer, p[1])\n *\n * // now either side can open streams\n * const stream0 = clientMuxer.newStream()\n * const stream1 = serverMuxer.newStream()\n *\n * // Send some data to the other side\n * const encoder = new TextEncoder()\n * const data = [encoder.encode('hello'), encoder.encode('world')]\n * pipe(data, stream0)\n *\n * // Receive data back\n * const result = await pipe(stream0, all)\n *\n * // close a stream\n * stream1.close()\n *\n * // close the muxer\n * clientMuxer.close()\n * ```\n */\nimport { Yamux } from './muxer.js';\nexport { GoAwayCode } from './frame.js';\nexport function yamux(init = {}) {\n return (components) => new Yamux(components, init);\n}\n//# sourceMappingURL=index.js.map","/**\n * Any object that implements this Symbol as a property should return a\n * ContentRouting instance as the property value, similar to how\n * `Symbol.Iterable` can be used to return an `Iterable` from an `Iterator`.\n *\n * @example\n *\n * ```js\n * import { contentRouting, ContentRouting } from '@libp2p/content-routing'\n *\n * class MyContentRouter implements ContentRouting {\n * get [contentRouting] () {\n * return this\n * }\n *\n * // ...other methods\n * }\n * ```\n */\nexport const contentRouting = Symbol.for('@libp2p/content-routing');\n//# sourceMappingURL=index.js.map","/**\n * When this error is thrown it means an operation was aborted,\n * usually in response to the `abort` event being emitted by an\n * AbortSignal.\n */\nexport class AbortError extends Error {\n code;\n type;\n constructor(message = 'The operation was aborted') {\n super(message);\n this.code = AbortError.code;\n this.type = AbortError.type;\n }\n static code = 'ABORT_ERR';\n static type = 'aborted';\n}\nexport class CodeError extends Error {\n code;\n props;\n constructor(message, code, props) {\n super(message);\n this.code = code;\n this.name = props?.name ?? 'CodeError';\n this.props = props ?? {}; // eslint-disable-line @typescript-eslint/consistent-type-assertions\n }\n}\nexport class UnexpectedPeerError extends Error {\n code;\n constructor(message = 'Unexpected Peer') {\n super(message);\n this.code = UnexpectedPeerError.code;\n }\n static code = 'ERR_UNEXPECTED_PEER';\n}\nexport class InvalidCryptoExchangeError extends Error {\n code;\n constructor(message = 'Invalid crypto exchange') {\n super(message);\n this.code = InvalidCryptoExchangeError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_EXCHANGE';\n}\nexport class InvalidCryptoTransmissionError extends Error {\n code;\n constructor(message = 'Invalid crypto transmission') {\n super(message);\n this.code = InvalidCryptoTransmissionError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_TRANSMISSION';\n}\n//# sourceMappingURL=errors.js.map","import { setMaxListeners as nodeSetMaxListeners } from 'events';\n/**\n * An implementation of a typed event target\n * etc\n */\nexport class TypedEventEmitter extends EventTarget {\n #listeners = new Map();\n listenerCount(type) {\n const listeners = this.#listeners.get(type);\n if (listeners == null) {\n return 0;\n }\n return listeners.length;\n }\n addEventListener(type, listener, options) {\n super.addEventListener(type, listener, options);\n let list = this.#listeners.get(type);\n if (list == null) {\n list = [];\n this.#listeners.set(type, list);\n }\n list.push({\n callback: listener,\n once: (options !== true && options !== false && options?.once) ?? false\n });\n }\n removeEventListener(type, listener, options) {\n super.removeEventListener(type.toString(), listener ?? null, options);\n let list = this.#listeners.get(type);\n if (list == null) {\n return;\n }\n list = list.filter(({ callback }) => callback !== listener);\n this.#listeners.set(type, list);\n }\n dispatchEvent(event) {\n const result = super.dispatchEvent(event);\n let list = this.#listeners.get(event.type);\n if (list == null) {\n return result;\n }\n list = list.filter(({ once }) => !once);\n this.#listeners.set(event.type, list);\n return result;\n }\n safeDispatchEvent(type, detail) {\n return this.dispatchEvent(new CustomEvent(type, detail));\n }\n}\n/**\n * CustomEvent is a standard event but it's not supported by node.\n *\n * Remove this when https://github.com/nodejs/node/issues/40678 is closed.\n *\n * Ref: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent\n */\nclass CustomEventPolyfill extends Event {\n /** Returns any custom data event was created with. Typically used for synthetic events. */\n detail;\n constructor(message, data) {\n super(message, data);\n // @ts-expect-error could be undefined\n this.detail = data?.detail;\n }\n}\nexport const CustomEvent = globalThis.CustomEvent ?? CustomEventPolyfill;\n// TODO: remove this in v1\nexport { TypedEventEmitter as EventEmitter };\n// create a setMaxListeners that doesn't break browser usage\nexport const setMaxListeners = (n, ...eventTargets) => {\n try {\n nodeSetMaxListeners(n, ...eventTargets);\n }\n catch {\n // swallow error, gulp\n }\n};\n//# sourceMappingURL=events.js.map","/**\n * Any object that implements this Symbol as a property should return a\n * PeerRouting instance as the property value, similar to how\n * `Symbol.Iterable` can be used to return an `Iterable` from an `Iterator`.\n *\n * @example\n *\n * ```js\n * import { peerRouting, PeerRouting } from '@libp2p/peer-routing'\n *\n * class MyPeerRouter implements PeerRouting {\n * get [peerRouting] () {\n * return this\n * }\n *\n * // ...other methods\n * }\n * ```\n */\nexport const peerRouting = Symbol.for('@libp2p/peer-routing');\n//# sourceMappingURL=index.js.map","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n","const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) return new Uint8Array(o)\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n","import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase}\n */\n encode (bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.UnibaseDecoder}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\n */\n decode (text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.CombobaseDecoder}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {Prefix} */ (input[0])\n const decoder = this.decoders[prefix]\n if (decoder) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} left\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} right\n * @returns {ComposedDecoder}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec}\n * @implements {API.MultibaseEncoder}\n * @implements {API.MultibaseDecoder}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseEncode, baseDecode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n return from({\n prefix,\n name,\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input) {\n return decode(input, alphabet, bitsPerChar, name)\n }\n })\n}\n","import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n","import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n})\n\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n})\n\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n})\n\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n})\n","/**\n * @packageDocumentation\n *\n * A logger for libp2p based on the venerable [debug](https://www.npmjs.com/package/debug)\n * module.\n *\n * @example\n *\n * ```JavaScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('libp2p:my:component:name')\n *\n * log('something happened: %s', 'it was ok')\n * log.error('something bad happened: %o', err)\n *\n * log('with this peer: %p', aPeerId)\n * log('and this base58btc: %b', aUint8Array)\n * log('and this base32: %t', aUint8Array)\n * ```\n * ```console\n * $ DEBUG=libp2p:* node index.js\n * something happened: it was ok\n * something bad happened: \n * with this peer: 12D3Foo\n * with this base58btc: Qmfoo\n * with this base32: bafyfoo\n * ```\n */\nimport debug from 'debug';\nimport { base32 } from 'multiformats/bases/base32';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { base64 } from 'multiformats/bases/base64';\nimport { truncatePeerId } from './utils.js';\n// Add a formatter for converting to a base58 string\ndebug.formatters.b = (v) => {\n return v == null ? 'undefined' : base58btc.baseEncode(v);\n};\n// Add a formatter for converting to a base32 string\ndebug.formatters.t = (v) => {\n return v == null ? 'undefined' : base32.baseEncode(v);\n};\n// Add a formatter for converting to a base64 string\ndebug.formatters.m = (v) => {\n return v == null ? 'undefined' : base64.baseEncode(v);\n};\n// Add a formatter for stringifying peer ids\ndebug.formatters.p = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying CIDs\ndebug.formatters.c = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Datastore keys\ndebug.formatters.k = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Multiaddrs\ndebug.formatters.a = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\nfunction createDisabledLogger(namespace) {\n const logger = () => { };\n logger.enabled = false;\n logger.color = '';\n logger.diff = 0;\n logger.log = () => { };\n logger.namespace = namespace;\n logger.destroy = () => true;\n logger.extend = () => logger;\n return logger;\n}\n/**\n * Create a component logger that will prefix any log messages with a truncated\n * peer id.\n *\n * @example\n *\n * ```TypeScript\n * import { peerLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const peerId = peerIdFromString('12D3FooBar')\n * const logger = peerLogger(peerId)\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"12…oBar:my-component hello world\"\n * ```\n */\nexport function peerLogger(peerId, options = {}) {\n return prefixLogger(truncatePeerId(peerId, options));\n}\n/**\n * Create a component logger that will prefix any log messages with the passed\n * string.\n *\n * @example\n *\n * ```TypeScript\n * import { prefixLogger } from '@libp2p/logger'\n *\n * const logger = prefixLogger('my-node')\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-node:my-component hello world\"\n * ```\n */\nexport function prefixLogger(prefix) {\n return {\n forComponent(name) {\n return logger(`${prefix}:${name}`);\n }\n };\n}\n/**\n * Create a component logger\n *\n * @example\n *\n * ```TypeScript\n * import { defaultLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const logger = defaultLogger()\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function defaultLogger() {\n return {\n forComponent(name) {\n return logger(name);\n }\n };\n}\n/**\n * Creates a logger for the passed component name.\n *\n * @example\n *\n * ```TypeScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function logger(name) {\n // trace logging is a no-op by default\n let trace = createDisabledLogger(`${name}:trace`);\n // look at all the debug names and see if trace logging has explicitly been enabled\n if (debug.enabled(`${name}:trace`) && debug.names.map(r => r.toString()).find(n => n.includes(':trace')) != null) {\n trace = debug(`${name}:trace`);\n }\n return Object.assign(debug(name), {\n error: debug(`${name}:error`),\n trace\n });\n}\nexport function disable() {\n debug.disable();\n}\nexport function enable(namespaces) {\n debug.enable(namespaces);\n}\nexport function enabled(namespaces) {\n return debug.enabled(namespaces);\n}\n//# sourceMappingURL=index.js.map","export const symbol = Symbol.for('@libp2p/peer-id');\nexport function isPeerId(other) {\n return other != null && Boolean(other[symbol]);\n}\n//# sourceMappingURL=index.js.map","import { baseX } from './base.js'\n\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n})\n\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n})\n","import { from } from './base.js'\n\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂')\nconst alphabetBytesToChars = /** @type {string[]} */ (alphabet.reduce((p, c, i) => { p[i] = c; return p }, /** @type {string[]} */([])))\nconst alphabetCharsToBytes = /** @type {number[]} */ (alphabet.reduce((p, c, i) => { p[/** @type {number} */ (c.codePointAt(0))] = i; return p }, /** @type {number[]} */([])))\n\n/**\n * @param {Uint8Array} data\n * @returns {string}\n */\nfunction encode (data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c]\n return p\n }, '')\n}\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nfunction decode (str) {\n const byts = []\n for (const char of str) {\n const byt = alphabetCharsToBytes[/** @type {number} */ (char.codePointAt(0))]\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${char}`)\n }\n byts.push(byt)\n }\n return new Uint8Array(byts)\n}\n\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n})\n","import { baseX } from './base.js'\n\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n})\n\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n})\n","// @ts-check\n\nimport { fromString, toString } from '../bytes.js'\nimport { from } from './base.js'\n\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n})\n","// @ts-check\n\n/**\n * @template T\n * @typedef {import('./interface.js').ByteView} ByteView\n */\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nexport const name = 'json'\nexport const code = 0x0200\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView}\n */\nexport const encode = (node) => textEncoder.encode(JSON.stringify(node))\n\n/**\n * @template T\n * @param {ByteView} data\n * @returns {T}\n */\nexport const decode = (data) => JSON.parse(textDecoder.decode(data))\n","var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n \n encode.bytes = offset - oldOffset + 1;\n \n return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length;\n\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\n\n read.bytes = counter - offset;\n\n return res\n}\n\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n};\n\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n","import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n","import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\n const bytes = new Uint8Array(digestOffset + size)\n varint.encodeTo(code, bytes, 0)\n varint.encodeTo(size, bytes, sizeOffset)\n bytes.set(digest, digestOffset)\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n const bytes = coerce(multihash)\n const [code, sizeOffset] = varint.decode(bytes)\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n const digest = bytes.subarray(sizeOffset + digestOffset)\n\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n","import { coerce } from '../bytes.js'\nimport * as Digest from './digest.js'\n\nconst code = 0x0\nconst name = 'identity'\n\n/** @type {(input:Uint8Array) => Uint8Array} */\nconst encode = coerce\n\n/**\n * @param {Uint8Array} input\n * @returns {Digest.Digest}\n */\nconst digest = (input) => Digest.create(code, encode(input))\n\nexport const identity = { code, name, encode, digest }\n","import * as Digest from './digest.js'\n\n/**\n * @template {string} Name\n * @template {number} Code\n * @param {object} options\n * @param {Name} options.name\n * @param {Code} options.code\n * @param {(input: Uint8Array) => Await} options.encode\n */\nexport const from = ({ name, code, encode }) => new Hasher(name, code, encode)\n\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n *\n * @template {string} Name\n * @template {number} Code\n * @class\n * @implements {MultihashHasher}\n */\nexport class Hasher {\n /**\n *\n * @param {Name} name\n * @param {Code} code\n * @param {(input: Uint8Array) => Await} encode\n */\n constructor (name, code, encode) {\n this.name = name\n this.code = code\n this.encode = encode\n }\n\n /**\n * @param {Uint8Array} input\n * @returns {Await>}\n */\n digest (input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input)\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest))\n } else {\n throw Error('Unknown type, must be binary type')\n /* c8 ignore next 1 */\n }\n }\n}\n\n/**\n * @template {number} Alg\n * @typedef {import('./interface.js').MultihashHasher} MultihashHasher\n */\n\n/**\n * @template T\n * @typedef {Promise|T} Await\n */\n","/* global crypto */\n\nimport { from } from './hasher.js'\n\n/**\n * @param {AlgorithmIdentifier} name\n */\nconst sha = name =>\n /**\n * @param {Uint8Array} data\n */\n async data => new Uint8Array(await crypto.subtle.digest(name, data))\n\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n})\n","import { base32 } from './bases/base32.js'\nimport { base58btc } from './bases/base58.js'\nimport { coerce } from './bytes.js'\nimport * as Digest from './hashes/digest.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\nimport * as varint from './varint.js'\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder} [base]\n * @returns {API.ToString}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID} */ (\n CID.createV0(\n /** @type {API.MultihashDigest} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID}\n */\n toV1 () {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash\n const multihash = Digest.create(code, digest)\n return /** @type {CID} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n /**\n * @returns {API.LinkJSON}\n */\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link|U} input\n * @returns {CID|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} digest - (Multi)hash of the of the content.\n * @returns {CID}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\n } else {\n return new CID(version, code, digest, digest.bytes)\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes)\n return new CID(version, code, digest, bytes)\n }\n default: {\n throw new Error('Invalid version')\n }\n }\n }\n\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest} digest - Multihash.\n * @returns {CID}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest} digest - Miltihash of the content.\n * @returns {CID}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView>} bytes\n * @returns {CID}\n */\n static decode (bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes)\n if (remainder.length) {\n throw new Error('Incorrect length')\n }\n return cid\n }\n\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} bytes\n * @returns {[CID, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n */\n static inspectBytes (initialBytes) {\n let offset = 0\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset))\n offset += length\n return i\n }\n\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {CID}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {[Prefix, API.ByteView>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n const { prefix } = base\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n }\n\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes).slice(1)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n const { prefix } = base\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version)\n const hashOffset = codeOffset + varint.encodingLength(code)\n const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n varint.encodeTo(version, bytes, 0)\n varint.encodeTo(code, bytes, codeOffset)\n bytes.set(multihash, hashOffset)\n return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n","// @ts-check\n\nimport * as base10 from './bases/base10.js'\nimport * as base16 from './bases/base16.js'\nimport * as base2 from './bases/base2.js'\nimport * as base256emoji from './bases/base256emoji.js'\nimport * as base32 from './bases/base32.js'\nimport * as base36 from './bases/base36.js'\nimport * as base58 from './bases/base58.js'\nimport * as base64 from './bases/base64.js'\nimport * as base8 from './bases/base8.js'\nimport * as identityBase from './bases/identity.js'\nimport * as json from './codecs/json.js'\nimport * as raw from './codecs/raw.js'\nimport * as identity from './hashes/identity.js'\nimport * as sha2 from './hashes/sha2.js'\nimport { CID, hasher, digest, varint, bytes } from './index.js'\n\nconst bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji }\nconst hashes = { ...sha2, ...identity }\nconst codecs = { raw, json }\n\nexport { CID, hasher, digest, varint, bytes, hashes, bases, codecs }\n","/**\n * Returns true if the two passed Uint8Arrays have the same content\n */\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=equals.js.map","/**\n * @packageDocumentation\n *\n * An implementation of a peer id\n *\n * @example\n *\n * ```JavaScript\n * import { peerIdFromString } from '@libp2p/peer-id'\n * const peer = peerIdFromString('k51qzi5uqu5dkwkqm42v9j9kqcam2jiuvloi16g72i4i4amoo2m8u3ol3mqu6s')\n *\n * console.log(peer.toCid()) // CID(bafzaa...)\n * console.log(peer.toString()) // \"12D3K...\"\n * ```\n */\nimport { CodeError } from '@libp2p/interface/errors';\nimport { symbol } from '@libp2p/interface/peer-id';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { bases } from 'multiformats/basics';\nimport { CID } from 'multiformats/cid';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nconst inspect = Symbol.for('nodejs.util.inspect.custom');\nconst baseDecoder = Object\n .values(bases)\n .map(codec => codec.decoder)\n // @ts-expect-error https://github.com/multiformats/js-multiformats/issues/141\n .reduce((acc, curr) => acc.or(curr), bases.identity.decoder);\n// these values are from https://github.com/multiformats/multicodec/blob/master/table.csv\nconst LIBP2P_KEY_CODE = 0x72;\nconst MARSHALLED_ED225519_PUBLIC_KEY_LENGTH = 36;\nconst MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH = 37;\nclass PeerIdImpl {\n type;\n multihash;\n privateKey;\n publicKey;\n string;\n constructor(init) {\n this.type = init.type;\n this.multihash = init.multihash;\n this.privateKey = init.privateKey;\n // mark string cache as non-enumerable\n Object.defineProperty(this, 'string', {\n enumerable: false,\n writable: true\n });\n }\n get [Symbol.toStringTag]() {\n return `PeerId(${this.toString()})`;\n }\n [symbol] = true;\n toString() {\n if (this.string == null) {\n this.string = base58btc.encode(this.multihash.bytes).slice(1);\n }\n return this.string;\n }\n // return self-describing String representation\n // in default format from RFC 0001: https://github.com/libp2p/specs/pull/209\n toCID() {\n return CID.createV1(LIBP2P_KEY_CODE, this.multihash);\n }\n toBytes() {\n return this.multihash.bytes;\n }\n /**\n * Returns Multiaddr as a JSON string\n */\n toJSON() {\n return this.toString();\n }\n /**\n * Checks the equality of `this` peer against a given PeerId\n */\n equals(id) {\n if (id instanceof Uint8Array) {\n return uint8ArrayEquals(this.multihash.bytes, id);\n }\n else if (typeof id === 'string') {\n return peerIdFromString(id).equals(this);\n }\n else if (id?.multihash?.bytes != null) {\n return uint8ArrayEquals(this.multihash.bytes, id.multihash.bytes);\n }\n else {\n throw new Error('not valid Id');\n }\n }\n /**\n * Returns PeerId as a human-readable string\n * https://nodejs.org/api/util.html#utilinspectcustom\n *\n * @example\n * ```js\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * console.info(peerIdFromString('QmFoo'))\n * // 'PeerId(QmFoo)'\n * ```\n */\n [inspect]() {\n return `PeerId(${this.toString()})`;\n }\n}\nclass RSAPeerIdImpl extends PeerIdImpl {\n type = 'RSA';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'RSA' });\n this.publicKey = init.publicKey;\n }\n}\nclass Ed25519PeerIdImpl extends PeerIdImpl {\n type = 'Ed25519';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'Ed25519' });\n this.publicKey = init.multihash.digest;\n }\n}\nclass Secp256k1PeerIdImpl extends PeerIdImpl {\n type = 'secp256k1';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'secp256k1' });\n this.publicKey = init.multihash.digest;\n }\n}\nexport function createPeerId(init) {\n if (init.type === 'RSA') {\n return new RSAPeerIdImpl(init);\n }\n if (init.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(init);\n }\n if (init.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(init);\n }\n throw new CodeError('Type must be \"RSA\", \"Ed25519\" or \"secp256k1\"', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromPeerId(other) {\n if (other.type === 'RSA') {\n return new RSAPeerIdImpl(other);\n }\n if (other.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(other);\n }\n if (other.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(other);\n }\n throw new CodeError('Not a PeerId', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromString(str, decoder) {\n decoder = decoder ?? baseDecoder;\n if (str.charAt(0) === '1' || str.charAt(0) === 'Q') {\n // identity hash ed25519/secp256k1 key or sha2-256 hash of\n // rsa public key - base58btc encoded either way\n const multihash = Digest.decode(base58btc.decode(`z${str}`));\n if (str.startsWith('12D')) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (str.startsWith('16U')) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n else {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n return peerIdFromBytes(baseDecoder.decode(str));\n}\nexport function peerIdFromBytes(buf) {\n try {\n const multihash = Digest.decode(buf);\n if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n }\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n catch {\n return peerIdFromCID(CID.decode(buf));\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\nexport function peerIdFromCID(cid) {\n if (cid == null || cid.multihash == null || cid.version == null || (cid.version === 1 && cid.code !== LIBP2P_KEY_CODE)) {\n throw new Error('Supplied PeerID CID is invalid');\n }\n const multihash = cid.multihash;\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: cid.multihash });\n }\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\n/**\n * @param publicKey - A marshalled public key\n * @param privateKey - A marshalled private key\n */\nexport async function peerIdFromKeys(publicKey, privateKey) {\n if (publicKey.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n if (publicKey.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n return new RSAPeerIdImpl({ multihash: await sha256.digest(publicKey), publicKey, privateKey });\n}\n//# sourceMappingURL=index.js.map","import * as varint from 'uint8-varint';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { convertToBytes, convertToString } from './convert.js';\nimport { getProtocol } from './protocols-table.js';\nexport function stringToMultiaddrParts(str) {\n str = cleanPath(str);\n const tuples = [];\n const stringTuples = [];\n let path = null;\n const parts = str.split('/').slice(1);\n if (parts.length === 1 && parts[0] === '') {\n return {\n bytes: new Uint8Array(),\n string: '/',\n tuples: [],\n stringTuples: [],\n path: null\n };\n }\n for (let p = 0; p < parts.length; p++) {\n const part = parts[p];\n const proto = getProtocol(part);\n if (proto.size === 0) {\n tuples.push([proto.code]);\n stringTuples.push([proto.code]);\n // eslint-disable-next-line no-continue\n continue;\n }\n p++; // advance addr part\n if (p >= parts.length) {\n throw ParseError('invalid address: ' + str);\n }\n // if it's a path proto, take the rest\n if (proto.path === true) {\n // should we need to check each path part to see if it's a proto?\n // This would allow for other protocols to be added after a unix path,\n // however it would have issues if the path had a protocol name in the path\n path = cleanPath(parts.slice(p).join('/'));\n tuples.push([proto.code, convertToBytes(proto.code, path)]);\n stringTuples.push([proto.code, path]);\n break;\n }\n const bytes = convertToBytes(proto.code, parts[p]);\n tuples.push([proto.code, bytes]);\n stringTuples.push([proto.code, convertToString(proto.code, bytes)]);\n }\n return {\n string: stringTuplesToString(stringTuples),\n bytes: tuplesToBytes(tuples),\n tuples,\n stringTuples,\n path\n };\n}\nexport function bytesToMultiaddrParts(bytes) {\n const tuples = [];\n const stringTuples = [];\n let path = null;\n let i = 0;\n while (i < bytes.length) {\n const code = varint.decode(bytes, i);\n const n = varint.encodingLength(code);\n const p = getProtocol(code);\n const size = sizeForAddr(p, bytes.slice(i + n));\n if (size === 0) {\n tuples.push([code]);\n stringTuples.push([code]);\n i += n;\n // eslint-disable-next-line no-continue\n continue;\n }\n const addr = bytes.slice(i + n, i + n + size);\n i += (size + n);\n if (i > bytes.length) { // did not end _exactly_ at buffer.length\n throw ParseError('Invalid address Uint8Array: ' + uint8ArrayToString(bytes, 'base16'));\n }\n // ok, tuple seems good.\n tuples.push([code, addr]);\n const stringAddr = convertToString(code, addr);\n stringTuples.push([code, stringAddr]);\n if (p.path === true) {\n // should we need to check each path part to see if it's a proto?\n // This would allow for other protocols to be added after a unix path,\n // however it would have issues if the path had a protocol name in the path\n path = stringAddr;\n break;\n }\n }\n return {\n bytes: Uint8Array.from(bytes),\n string: stringTuplesToString(stringTuples),\n tuples,\n stringTuples,\n path\n };\n}\n/**\n * [[str name, str addr]... ] -> string\n */\nfunction stringTuplesToString(tuples) {\n const parts = [];\n tuples.map((tup) => {\n const proto = getProtocol(tup[0]);\n parts.push(proto.name);\n if (tup.length > 1 && tup[1] != null) {\n parts.push(tup[1]);\n }\n return null;\n });\n return cleanPath(parts.join('/'));\n}\n/**\n * [[int code, Uint8Array ]... ] -> Uint8Array\n */\nexport function tuplesToBytes(tuples) {\n return uint8ArrayConcat(tuples.map((tup) => {\n const proto = getProtocol(tup[0]);\n let buf = Uint8Array.from(varint.encode(proto.code));\n if (tup.length > 1 && tup[1] != null) {\n buf = uint8ArrayConcat([buf, tup[1]]); // add address buffer\n }\n return buf;\n }));\n}\n/**\n * For the passed address, return the serialized size\n */\nfunction sizeForAddr(p, addr) {\n if (p.size > 0) {\n return p.size / 8;\n }\n else if (p.size === 0) {\n return 0;\n }\n else {\n const size = varint.decode(addr instanceof Uint8Array ? addr : Uint8Array.from(addr));\n return size + varint.encodingLength(size);\n }\n}\nexport function bytesToTuples(buf) {\n const tuples = [];\n let i = 0;\n while (i < buf.length) {\n const code = varint.decode(buf, i);\n const n = varint.encodingLength(code);\n const p = getProtocol(code);\n const size = sizeForAddr(p, buf.slice(i + n));\n if (size === 0) {\n tuples.push([code]);\n i += n;\n // eslint-disable-next-line no-continue\n continue;\n }\n const addr = buf.slice(i + n, i + n + size);\n i += (size + n);\n if (i > buf.length) { // did not end _exactly_ at buffer.length\n throw ParseError('Invalid address Uint8Array: ' + uint8ArrayToString(buf, 'base16'));\n }\n // ok, tuple seems good.\n tuples.push([code, addr]);\n }\n return tuples;\n}\nexport function cleanPath(str) {\n return '/' + str.trim().split('/').filter((a) => a).join('/');\n}\nexport function ParseError(str) {\n return new Error('Error parsing address: ' + str);\n}\n//# sourceMappingURL=codec.js.map","/**\n * @packageDocumentation\n *\n * An implementation of a Multiaddr in JavaScript\n *\n * @example\n *\n * ```js\n * import { multiaddr } from '@multiformats/multiaddr'\n *\n * const ma = multiaddr('/ip4/127.0.0.1/tcp/1234')\n * ```\n */\nimport { base58btc } from 'multiformats/bases/base58';\nimport { CID } from 'multiformats/cid';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { bytesToMultiaddrParts, stringToMultiaddrParts, tuplesToBytes } from './codec.js';\nimport { getProtocol, names } from './protocols-table.js';\nimport { isMultiaddr, multiaddr, resolvers } from './index.js';\nconst inspect = Symbol.for('nodejs.util.inspect.custom');\nexport const symbol = Symbol.for('@multiformats/js-multiaddr/multiaddr');\nconst DNS_CODES = [\n getProtocol('dns').code,\n getProtocol('dns4').code,\n getProtocol('dns6').code,\n getProtocol('dnsaddr').code\n];\nclass NoAvailableResolverError extends Error {\n constructor(message = 'No available resolver') {\n super(message);\n this.name = 'NoAvailableResolverError';\n }\n}\n/**\n * Creates a {@link Multiaddr} from a {@link MultiaddrInput}\n */\nexport class Multiaddr {\n bytes;\n #string;\n #tuples;\n #stringTuples;\n #path;\n [symbol] = true;\n constructor(addr) {\n // default\n if (addr == null) {\n addr = '';\n }\n let parts;\n if (addr instanceof Uint8Array) {\n parts = bytesToMultiaddrParts(addr);\n }\n else if (typeof addr === 'string') {\n if (addr.length > 0 && addr.charAt(0) !== '/') {\n throw new Error(`multiaddr \"${addr}\" must start with a \"/\"`);\n }\n parts = stringToMultiaddrParts(addr);\n }\n else if (isMultiaddr(addr)) { // Multiaddr\n parts = bytesToMultiaddrParts(addr.bytes);\n }\n else {\n throw new Error('addr must be a string, Buffer, or another Multiaddr');\n }\n this.bytes = parts.bytes;\n this.#string = parts.string;\n this.#tuples = parts.tuples;\n this.#stringTuples = parts.stringTuples;\n this.#path = parts.path;\n }\n toString() {\n return this.#string;\n }\n toJSON() {\n return this.toString();\n }\n toOptions() {\n let family;\n let transport;\n let host;\n let port;\n let zone = '';\n const tcp = getProtocol('tcp');\n const udp = getProtocol('udp');\n const ip4 = getProtocol('ip4');\n const ip6 = getProtocol('ip6');\n const dns6 = getProtocol('dns6');\n const ip6zone = getProtocol('ip6zone');\n for (const [code, value] of this.stringTuples()) {\n if (code === ip6zone.code) {\n zone = `%${value ?? ''}`;\n }\n // default to https when protocol & port are omitted from DNS addrs\n if (DNS_CODES.includes(code)) {\n transport = tcp.name;\n port = 443;\n host = `${value ?? ''}${zone}`;\n family = code === dns6.code ? 6 : 4;\n }\n if (code === tcp.code || code === udp.code) {\n transport = getProtocol(code).name;\n port = parseInt(value ?? '');\n }\n if (code === ip4.code || code === ip6.code) {\n transport = getProtocol(code).name;\n host = `${value ?? ''}${zone}`;\n family = code === ip6.code ? 6 : 4;\n }\n }\n if (family == null || transport == null || host == null || port == null) {\n throw new Error('multiaddr must have a valid format: \"/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}\".');\n }\n const opts = {\n family,\n host,\n transport,\n port\n };\n return opts;\n }\n protos() {\n return this.#tuples.map(([code]) => Object.assign({}, getProtocol(code)));\n }\n protoCodes() {\n return this.#tuples.map(([code]) => code);\n }\n protoNames() {\n return this.#tuples.map(([code]) => getProtocol(code).name);\n }\n tuples() {\n return this.#tuples;\n }\n stringTuples() {\n return this.#stringTuples;\n }\n encapsulate(addr) {\n addr = new Multiaddr(addr);\n return new Multiaddr(this.toString() + addr.toString());\n }\n decapsulate(addr) {\n const addrString = addr.toString();\n const s = this.toString();\n const i = s.lastIndexOf(addrString);\n if (i < 0) {\n throw new Error(`Address ${this.toString()} does not contain subaddress: ${addr.toString()}`);\n }\n return new Multiaddr(s.slice(0, i));\n }\n decapsulateCode(code) {\n const tuples = this.tuples();\n for (let i = tuples.length - 1; i >= 0; i--) {\n if (tuples[i][0] === code) {\n return new Multiaddr(tuplesToBytes(tuples.slice(0, i)));\n }\n }\n return this;\n }\n getPeerId() {\n try {\n let tuples = [];\n this.stringTuples().forEach(([code, name]) => {\n if (code === names.p2p.code) {\n tuples.push([code, name]);\n }\n // if this is a p2p-circuit address, return the target peer id if present\n // not the peer id of the relay\n if (code === names['p2p-circuit'].code) {\n tuples = [];\n }\n });\n // Get the last ipfs tuple ['p2p', 'peerid string']\n const tuple = tuples.pop();\n if (tuple?.[1] != null) {\n const peerIdStr = tuple[1];\n // peer id is base58btc encoded string but not multibase encoded so add the `z`\n // prefix so we can validate that it is correctly encoded\n if (peerIdStr[0] === 'Q' || peerIdStr[0] === '1') {\n return uint8ArrayToString(base58btc.decode(`z${peerIdStr}`), 'base58btc');\n }\n // try to parse peer id as CID\n return uint8ArrayToString(CID.parse(peerIdStr).multihash.bytes, 'base58btc');\n }\n return null;\n }\n catch (e) {\n return null;\n }\n }\n getPath() {\n return this.#path;\n }\n equals(addr) {\n return uint8ArrayEquals(this.bytes, addr.bytes);\n }\n async resolve(options) {\n const resolvableProto = this.protos().find((p) => p.resolvable);\n // Multiaddr is not resolvable?\n if (resolvableProto == null) {\n return [this];\n }\n const resolver = resolvers.get(resolvableProto.name);\n if (resolver == null) {\n throw new NoAvailableResolverError(`no available resolver for ${resolvableProto.name}`);\n }\n const result = await resolver(this, options);\n return result.map(str => multiaddr(str));\n }\n nodeAddress() {\n const options = this.toOptions();\n if (options.transport !== 'tcp' && options.transport !== 'udp') {\n throw new Error(`multiaddr must have a valid format - no protocol with name: \"${options.transport}\". Must have a valid transport protocol: \"{tcp, udp}\"`);\n }\n return {\n family: options.family,\n address: options.host,\n port: options.port\n };\n }\n isThinWaistAddress(addr) {\n const protos = (addr ?? this).protos();\n if (protos.length !== 2) {\n return false;\n }\n if (protos[0].code !== 4 && protos[0].code !== 41) {\n return false;\n }\n if (protos[1].code !== 6 && protos[1].code !== 273) {\n return false;\n }\n return true;\n }\n /**\n * Returns Multiaddr as a human-readable string\n * https://nodejs.org/api/util.html#utilinspectcustom\n *\n * @example\n * ```js\n * import { multiaddr } from '@multiformats/multiaddr'\n *\n * console.info(multiaddr('/ip4/127.0.0.1/tcp/4001'))\n * // 'Multiaddr(/ip4/127.0.0.1/tcp/4001)'\n * ```\n */\n [inspect]() {\n return `Multiaddr(${this.#string})`;\n }\n}\n//# sourceMappingURL=multiaddr.js.map","/**\n * @packageDocumentation\n *\n * A standard way to represent addresses that\n *\n * - support any standard network protocol\n * - are self-describing\n * - have a binary packed format\n * - have a nice string representation\n * - encapsulate well\n *\n * @example\n *\n * ```TypeScript\n * import { multiaddr } from '@multiformats/multiaddr'\n * const addr = multiaddr(\"/ip4/127.0.0.1/udp/1234\")\n * // Multiaddr(/ip4/127.0.0.1/udp/1234)\n *\n * const addr = multiaddr(\"/ip4/127.0.0.1/udp/1234\")\n * // Multiaddr(/ip4/127.0.0.1/udp/1234)\n *\n * addr.bytes\n * // \n *\n * addr.toString()\n * // '/ip4/127.0.0.1/udp/1234'\n *\n * addr.protos()\n * // [\n * // {code: 4, name: 'ip4', size: 32},\n * // {code: 273, name: 'udp', size: 16}\n * // ]\n *\n * // gives you an object that is friendly with what Node.js core modules expect for addresses\n * addr.nodeAddress()\n * // {\n * // family: 4,\n * // port: 1234,\n * // address: \"127.0.0.1\"\n * // }\n *\n * addr.encapsulate('/sctp/5678')\n * // Multiaddr(/ip4/127.0.0.1/udp/1234/sctp/5678)\n * ```\n *\n * ## Resolving DNSADDR addresses\n *\n * [DNSADDR](https://github.com/multiformats/multiaddr/blob/master/protocols/DNSADDR.md) is a spec that allows storing a TXT DNS record that contains a Multiaddr.\n *\n * To resolve DNSADDR addresses, call the `.resolve()` function the multiaddr, optionally passing a `DNS` resolver.\n *\n * DNSADDR addresses can resolve to multiple multiaddrs, since there is no limit to the number of TXT records that can be stored.\n *\n * @example Resolving DNSADDR Multiaddrs\n *\n * ```TypeScript\n * import { multiaddr, resolvers } from '@multiformats/multiaddr'\n * import { dnsaddr } from '@multiformats/multiaddr/resolvers'\n *\n * resolvers.set('dnsaddr', dnsaddr)\n *\n * const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io')\n *\n * // resolve with a 5s timeout\n * const resolved = await ma.resolve({\n * signal: AbortSignal.timeout(5000)\n * })\n *\n * console.info(await ma.resolve(resolved)\n * // [Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...')...]\n * ```\n *\n * @example Using a custom DNS resolver to resolve DNSADDR Multiaddrs\n *\n * See the docs for [@multiformats/dns](https://www.npmjs.com/package/@multiformats/dns) for a full breakdown of how to specify multiple resolvers or resolvers that can be used for specific TLDs.\n *\n * ```TypeScript\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { dns } from '@multiformats/dns'\n * import { dnsJsonOverHttps } from '@multiformats/dns/resolvers'\n *\n * const resolver = dns({\n * '.': dnsJsonOverHttps('https://cloudflare-dns.com/dns-query')\n * })\n *\n * const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io')\n * const resolved = await ma.resolve({\n * dns: resolver\n * })\n *\n * console.info(resolved)\n * // [Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...')...]\n * ```\n */\nimport { Multiaddr as MultiaddrClass, symbol } from './multiaddr.js';\nimport { getProtocol } from './protocols-table.js';\n/**\n * All configured {@link Resolver}s\n */\nexport const resolvers = new Map();\nexport { MultiaddrFilter } from './filter/multiaddr-filter.js';\n/**\n * Creates a Multiaddr from a node-friendly address object\n *\n * @example\n * ```js\n * import { fromNodeAddress } from '@multiformats/multiaddr'\n *\n * fromNodeAddress({address: '127.0.0.1', port: '4001'}, 'tcp')\n * // Multiaddr(/ip4/127.0.0.1/tcp/4001)\n * ```\n */\nexport function fromNodeAddress(addr, transport) {\n if (addr == null) {\n throw new Error('requires node address object');\n }\n if (transport == null) {\n throw new Error('requires transport protocol');\n }\n let ip;\n let host = addr.address;\n switch (addr.family) {\n case 4:\n ip = 'ip4';\n break;\n case 6:\n ip = 'ip6';\n if (host.includes('%')) {\n const parts = host.split('%');\n if (parts.length !== 2) {\n throw Error('Multiple ip6 zones in multiaddr');\n }\n host = parts[0];\n const zone = parts[1];\n ip = `/ip6zone/${zone}/ip6`;\n }\n break;\n default:\n throw Error('Invalid addr family, should be 4 or 6.');\n }\n return new MultiaddrClass('/' + [ip, host, transport, addr.port].join('/'));\n}\n/**\n * Returns if something is a {@link Multiaddr} that is a resolvable name\n *\n * @example\n *\n * ```js\n * import { isName, multiaddr } from '@multiformats/multiaddr'\n *\n * isName(multiaddr('/ip4/127.0.0.1'))\n * // false\n * isName(multiaddr('/dns/ipfs.io'))\n * // true\n * ```\n */\nexport function isName(addr) {\n if (!isMultiaddr(addr)) {\n return false;\n }\n // if a part of the multiaddr is resolvable, then return true\n return addr.protos().some((proto) => proto.resolvable);\n}\n/**\n * Check if object is a {@link Multiaddr} instance\n *\n * @example\n *\n * ```js\n * import { isMultiaddr, multiaddr } from '@multiformats/multiaddr'\n *\n * isMultiaddr(5)\n * // false\n * isMultiaddr(multiaddr('/ip4/127.0.0.1'))\n * // true\n * ```\n */\nexport function isMultiaddr(value) {\n return Boolean(value?.[symbol]);\n}\n/**\n * A function that takes a {@link MultiaddrInput} and returns a {@link Multiaddr}\n *\n * @example\n * ```js\n * import { multiaddr } from '@libp2p/multiaddr'\n *\n * multiaddr('/ip4/127.0.0.1/tcp/4001')\n * // Multiaddr(/ip4/127.0.0.1/tcp/4001)\n * ```\n *\n * @param {MultiaddrInput} [addr] - If String or Uint8Array, needs to adhere to the address format of a [multiaddr](https://github.com/multiformats/multiaddr#string-format)\n */\nexport function multiaddr(addr) {\n return new MultiaddrClass(addr);\n}\nexport { getProtocol as protocols };\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Allows treating a browser readable stream as an async iterator.\n *\n * @example\n *\n * ```javascript\n * import toIt from 'browser-readablestream-to-it'\n * import all from 'it-all'\n *\n * const content = [0, 1, 2, 3, 4]\n *\n * const stream = new ReadableStream({\n * start(controller) {\n * for (let i = 0; i < content.length; i++) {\n * controller.enqueue(content[i])\n * }\n *\n * controller.close()\n * }\n * })\n *\n * const arr = await all(toIt(stream))\n *\n * console.info(arr) // 0, 1, 2, 3, 4\n * ```\n *\n * ## preventCancel\n *\n * By default a readable stream will have [.cancel](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/cancel) called on it once it has ended or\n * reading has stopped prematurely.\n *\n * To prevent this behaviour, pass `preventCancel: true` as an option:\n *\n * ```javascript\n * const arr = await all(toIt(stream, { preventCancel: true }))\n *\n * console.info(arr) // 0, 1, 2, 3, 4\n * ```\n */\n/**\n * Turns a browser readable stream into an async iterable. Async iteration over\n * returned iterable will lock give stream, preventing any other consumer from\n * acquiring a reader. The lock will be released if iteration loop is broken. To\n * prevent stream cancelling optional `{ preventCancel: true }` could be passed\n * as a second argument.\n */\nexport default async function* browserReadableStreamToIt(stream, options = {}) {\n const reader = stream.getReader();\n try {\n while (true) {\n const result = await reader.read();\n if (result.done) {\n return;\n }\n yield result.value;\n }\n }\n finally {\n if (options.preventCancel !== true) {\n await reader.cancel();\n }\n reader.releaseLock();\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * When this error is thrown it means an operation was aborted,\n * usually in response to the `abort` event being emitted by an\n * AbortSignal.\n */\nexport class AbortError extends Error {\n code;\n type;\n constructor(message = 'The operation was aborted') {\n super(message);\n this.code = AbortError.code;\n this.type = AbortError.type;\n }\n static code = 'ABORT_ERR';\n static type = 'aborted';\n}\nexport class CodeError extends Error {\n code;\n props;\n constructor(message, code, props) {\n super(message);\n this.code = code;\n this.name = props?.name ?? 'CodeError';\n this.props = props ?? {}; // eslint-disable-line @typescript-eslint/consistent-type-assertions\n }\n}\nexport class UnexpectedPeerError extends Error {\n code;\n constructor(message = 'Unexpected Peer') {\n super(message);\n this.code = UnexpectedPeerError.code;\n }\n static code = 'ERR_UNEXPECTED_PEER';\n}\nexport class InvalidCryptoExchangeError extends Error {\n code;\n constructor(message = 'Invalid crypto exchange') {\n super(message);\n this.code = InvalidCryptoExchangeError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_EXCHANGE';\n}\nexport class InvalidCryptoTransmissionError extends Error {\n code;\n constructor(message = 'Invalid crypto transmission') {\n super(message);\n this.code = InvalidCryptoTransmissionError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_TRANSMISSION';\n}\n//# sourceMappingURL=errors.js.map","/**\n * To guarantee Uint8Array semantics, convert nodejs Buffers\n * into vanilla Uint8Arrays\n */\nexport function asUint8Array(buf) {\n if (globalThis.Buffer != null) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n return buf;\n}\n//# sourceMappingURL=as-uint8array.js.map","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n","const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) return new Uint8Array(o)\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n","import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase}\n */\n encode (bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.UnibaseDecoder}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\n */\n decode (text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder}\n * @implements {API.CombobaseDecoder}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder|ComposedDecoder} decoder\n * @returns {ComposedDecoder}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {Prefix} */ (input[0])\n const decoder = this.decoders[prefix]\n if (decoder) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} left\n * @param {API.UnibaseDecoder|API.CombobaseDecoder} right\n * @returns {ComposedDecoder}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec}\n * @implements {API.MultibaseEncoder}\n * @implements {API.MultibaseDecoder}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseEncode, baseDecode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n return from({\n prefix,\n name,\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input) {\n return decode(input, alphabet, bitsPerChar, name)\n }\n })\n}\n","import { baseX } from './base.js'\n\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n})\n\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n})\n","import { from } from './base.js'\n\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂')\nconst alphabetBytesToChars = /** @type {string[]} */ (alphabet.reduce((p, c, i) => { p[i] = c; return p }, /** @type {string[]} */([])))\nconst alphabetCharsToBytes = /** @type {number[]} */ (alphabet.reduce((p, c, i) => { p[/** @type {number} */ (c.codePointAt(0))] = i; return p }, /** @type {number[]} */([])))\n\n/**\n * @param {Uint8Array} data\n * @returns {string}\n */\nfunction encode (data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c]\n return p\n }, '')\n}\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nfunction decode (str) {\n const byts = []\n for (const char of str) {\n const byt = alphabetCharsToBytes[/** @type {number} */ (char.codePointAt(0))]\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${char}`)\n }\n byts.push(byt)\n }\n return new Uint8Array(byts)\n}\n\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n})\n","import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n","import { baseX } from './base.js'\n\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n})\n\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n})\n","import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n})\n\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n})\n\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n})\n\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n})\n","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n})\n","// @ts-check\n\nimport { fromString, toString } from '../bytes.js'\nimport { from } from './base.js'\n\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n})\n","// @ts-check\n\n/**\n * @template T\n * @typedef {import('./interface.js').ByteView} ByteView\n */\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nexport const name = 'json'\nexport const code = 0x0200\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView}\n */\nexport const encode = (node) => textEncoder.encode(JSON.stringify(node))\n\n/**\n * @template T\n * @param {ByteView} data\n * @returns {T}\n */\nexport const decode = (data) => JSON.parse(textDecoder.decode(data))\n","var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n \n encode.bytes = offset - oldOffset + 1;\n \n return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length;\n\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\n\n read.bytes = counter - offset;\n\n return res\n}\n\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n};\n\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n","import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n","import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\n const bytes = new Uint8Array(digestOffset + size)\n varint.encodeTo(code, bytes, 0)\n varint.encodeTo(size, bytes, sizeOffset)\n bytes.set(digest, digestOffset)\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n const bytes = coerce(multihash)\n const [code, sizeOffset] = varint.decode(bytes)\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n const digest = bytes.subarray(sizeOffset + digestOffset)\n\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n","import { coerce } from '../bytes.js'\nimport * as Digest from './digest.js'\n\nconst code = 0x0\nconst name = 'identity'\n\n/** @type {(input:Uint8Array) => Uint8Array} */\nconst encode = coerce\n\n/**\n * @param {Uint8Array} input\n * @returns {Digest.Digest}\n */\nconst digest = (input) => Digest.create(code, encode(input))\n\nexport const identity = { code, name, encode, digest }\n","import * as Digest from './digest.js'\n\n/**\n * @template {string} Name\n * @template {number} Code\n * @param {object} options\n * @param {Name} options.name\n * @param {Code} options.code\n * @param {(input: Uint8Array) => Await} options.encode\n */\nexport const from = ({ name, code, encode }) => new Hasher(name, code, encode)\n\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n *\n * @template {string} Name\n * @template {number} Code\n * @class\n * @implements {MultihashHasher}\n */\nexport class Hasher {\n /**\n *\n * @param {Name} name\n * @param {Code} code\n * @param {(input: Uint8Array) => Await} encode\n */\n constructor (name, code, encode) {\n this.name = name\n this.code = code\n this.encode = encode\n }\n\n /**\n * @param {Uint8Array} input\n * @returns {Await>}\n */\n digest (input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input)\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest))\n } else {\n throw Error('Unknown type, must be binary type')\n /* c8 ignore next 1 */\n }\n }\n}\n\n/**\n * @template {number} Alg\n * @typedef {import('./interface.js').MultihashHasher} MultihashHasher\n */\n\n/**\n * @template T\n * @typedef {Promise|T} Await\n */\n","/* global crypto */\n\nimport { from } from './hasher.js'\n\n/**\n * @param {AlgorithmIdentifier} name\n */\nconst sha = name =>\n /**\n * @param {Uint8Array} data\n */\n async data => new Uint8Array(await crypto.subtle.digest(name, data))\n\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n})\n","import { base32 } from './bases/base32.js'\nimport { base58btc } from './bases/base58.js'\nimport { coerce } from './bytes.js'\nimport * as Digest from './hashes/digest.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\nimport * as varint from './varint.js'\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder} [base]\n * @returns {API.ToString}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID} */ (\n CID.createV0(\n /** @type {API.MultihashDigest} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID}\n */\n toV1 () {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash\n const multihash = Digest.create(code, digest)\n return /** @type {CID} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n /**\n * @returns {API.LinkJSON}\n */\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link|U} input\n * @returns {CID|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest} digest - (Multi)hash of the of the content.\n * @returns {CID}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\n } else {\n return new CID(version, code, digest, digest.bytes)\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes)\n return new CID(version, code, digest, bytes)\n }\n default: {\n throw new Error('Invalid version')\n }\n }\n }\n\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest} digest - Multihash.\n * @returns {CID}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest} digest - Miltihash of the content.\n * @returns {CID}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView>} bytes\n * @returns {CID}\n */\n static decode (bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes)\n if (remainder.length) {\n throw new Error('Incorrect length')\n }\n return cid\n }\n\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} bytes\n * @returns {[CID, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n */\n static inspectBytes (initialBytes) {\n let offset = 0\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset))\n offset += length\n return i\n }\n\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {CID}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString, Prefix>} source\n * @param {API.MultibaseDecoder} [base]\n * @returns {[Prefix, API.ByteView>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n const { prefix } = base\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n }\n\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes).slice(1)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map} cache\n * @param {API.MultibaseEncoder} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n const { prefix } = base\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version)\n const hashOffset = codeOffset + varint.encodingLength(code)\n const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n varint.encodeTo(version, bytes, 0)\n varint.encodeTo(code, bytes, codeOffset)\n bytes.set(multihash, hashOffset)\n return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n","// @ts-check\n\nimport * as base10 from './bases/base10.js'\nimport * as base16 from './bases/base16.js'\nimport * as base2 from './bases/base2.js'\nimport * as base256emoji from './bases/base256emoji.js'\nimport * as base32 from './bases/base32.js'\nimport * as base36 from './bases/base36.js'\nimport * as base58 from './bases/base58.js'\nimport * as base64 from './bases/base64.js'\nimport * as base8 from './bases/base8.js'\nimport * as identityBase from './bases/identity.js'\nimport * as json from './codecs/json.js'\nimport * as raw from './codecs/raw.js'\nimport * as identity from './hashes/identity.js'\nimport * as sha2 from './hashes/sha2.js'\nimport { CID, hasher, digest, varint, bytes } from './index.js'\n\nconst bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji }\nconst hashes = { ...sha2, ...identity }\nconst codecs = { raw, json }\n\nexport { CID, hasher, digest, varint, bytes, hashes, bases, codecs }\n","import { asUint8Array } from './util/as-uint8array.js';\n/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc(size = 0) {\n if (globalThis.Buffer?.alloc != null) {\n return asUint8Array(globalThis.Buffer.alloc(size));\n }\n return new Uint8Array(size);\n}\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer?.allocUnsafe != null) {\n return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n }\n return new Uint8Array(size);\n}\n//# sourceMappingURL=alloc.js.map","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: {\n decode\n }\n };\n}\nconst string = createCodec('utf8', 'u', (buf) => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, (str) => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', (buf) => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, (str) => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;\n//# sourceMappingURL=bases.js.map","import { asUint8Array } from './util/as-uint8array.js';\nimport bases, {} from './util/bases.js';\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n }\n // add multibase prefix\n return base.decoder.decode(`${base.prefix}${string}`); // eslint-disable-line @typescript-eslint/restrict-template-expressions\n}\n//# sourceMappingURL=from-string.js.map","/**\n * Returns true if the two passed Uint8Arrays have the same content\n */\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=equals.js.map","import { ed25519 as ed } from '@noble/curves/ed25519';\nconst PUBLIC_KEY_BYTE_LENGTH = 32;\nconst PRIVATE_KEY_BYTE_LENGTH = 64; // private key is actually 32 bytes but for historical reasons we concat private and public keys\nconst KEYS_BYTE_LENGTH = 32;\nexport { PUBLIC_KEY_BYTE_LENGTH as publicKeyLength };\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport async function generateKey() {\n // the actual private key (32 bytes)\n const privateKeyRaw = ed.utils.randomPrivateKey();\n const publicKey = ed.getPublicKey(privateKeyRaw);\n // concatenated the public key to the private key\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\n/**\n * Generate keypair from a 32 byte uint8array\n */\nexport async function generateKeyFromSeed(seed) {\n if (seed.length !== KEYS_BYTE_LENGTH) {\n throw new TypeError('\"seed\" must be 32 bytes in length.');\n }\n else if (!(seed instanceof Uint8Array)) {\n throw new TypeError('\"seed\" must be a node.js Buffer, or Uint8Array.');\n }\n // based on node forges algorithm, the seed is used directly as private key\n const privateKeyRaw = seed;\n const publicKey = ed.getPublicKey(privateKeyRaw);\n const privateKey = concatKeys(privateKeyRaw, publicKey);\n return {\n privateKey,\n publicKey\n };\n}\nexport async function hashAndSign(privateKey, msg) {\n const privateKeyRaw = privateKey.subarray(0, KEYS_BYTE_LENGTH);\n return ed.sign(msg, privateKeyRaw);\n}\nexport async function hashAndVerify(publicKey, sig, msg) {\n return ed.verify(sig, msg, publicKey);\n}\nfunction concatKeys(privateKeyRaw, publicKey) {\n const privateKey = new Uint8Array(PRIVATE_KEY_BYTE_LENGTH);\n for (let i = 0; i < KEYS_BYTE_LENGTH; i++) {\n privateKey[i] = privateKeyRaw[i];\n privateKey[KEYS_BYTE_LENGTH + i] = publicKey[i];\n }\n return privateKey;\n}\n//# sourceMappingURL=ed25519-browser.js.map","import { allocUnsafe } from './alloc.js';\nimport { asUint8Array } from './util/as-uint8array.js';\n/**\n * Returns a new Uint8Array created by concatenating the passed ArrayLikes\n */\nexport function concat(arrays, length) {\n if (length == null) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return asUint8Array(output);\n}\n//# sourceMappingURL=concat.js.map","/* eslint-env browser */\n// Check native crypto exists and is enabled (In insecure context `self.crypto`\n// exists but `self.crypto.subtle` does not).\nexport default {\n get(win = globalThis) {\n const nativeCrypto = win.crypto;\n if (nativeCrypto == null || nativeCrypto.subtle == null) {\n throw Object.assign(new Error('Missing Web Crypto API. ' +\n 'The most likely cause of this error is that this page is being accessed ' +\n 'from an insecure context (i.e. not HTTPS). For more information and ' +\n 'possible resolutions see ' +\n 'https://github.com/libp2p/js-libp2p-crypto/blob/master/README.md#web-crypto-api'), { code: 'ERR_MISSING_WEB_CRYPTO' });\n }\n return nativeCrypto;\n }\n};\n//# sourceMappingURL=webcrypto.js.map","import { concat } from 'uint8arrays/concat';\nimport { fromString } from 'uint8arrays/from-string';\nimport webcrypto from '../webcrypto.js';\n// WebKit on Linux does not support deriving a key from an empty PBKDF2 key.\n// So, as a workaround, we provide the generated key as a constant. We test that\n// this generated key is accurate in test/workaround.spec.ts\n// Generated via:\n// await crypto.subtle.exportKey('jwk',\n// await crypto.subtle.deriveKey(\n// { name: 'PBKDF2', salt: new Uint8Array(16), iterations: 32767, hash: { name: 'SHA-256' } },\n// await crypto.subtle.importKey('raw', new Uint8Array(0), { name: 'PBKDF2' }, false, ['deriveKey']),\n// { name: 'AES-GCM', length: 128 }, true, ['encrypt', 'decrypt'])\n// )\nexport const derivedEmptyPasswordKey = { alg: 'A128GCM', ext: true, k: 'scm9jmO_4BJAgdwWGVulLg', key_ops: ['encrypt', 'decrypt'], kty: 'oct' };\n// Based off of code from https://github.com/luke-park/SecureCompatibleEncryptionExamples\nexport function create(opts) {\n const algorithm = opts?.algorithm ?? 'AES-GCM';\n let keyLength = opts?.keyLength ?? 16;\n const nonceLength = opts?.nonceLength ?? 12;\n const digest = opts?.digest ?? 'SHA-256';\n const saltLength = opts?.saltLength ?? 16;\n const iterations = opts?.iterations ?? 32767;\n const crypto = webcrypto.get();\n keyLength *= 8; // Browser crypto uses bits instead of bytes\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to encrypt the data.\n */\n async function encrypt(data, password) {\n const salt = crypto.getRandomValues(new Uint8Array(saltLength));\n const nonce = crypto.getRandomValues(new Uint8Array(nonceLength));\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['encrypt']);\n }\n }\n else {\n // Derive a key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['encrypt']);\n }\n // Encrypt the string.\n const ciphertext = await crypto.subtle.encrypt(aesGcm, cryptoKey, data);\n return concat([salt, aesGcm.iv, new Uint8Array(ciphertext)]);\n }\n /**\n * Uses the provided password to derive a pbkdf2 key. The key\n * will then be used to decrypt the data. The options used to create\n * this decryption cipher must be the same as those used to create\n * the encryption cipher.\n */\n async function decrypt(data, password) {\n const salt = data.subarray(0, saltLength);\n const nonce = data.subarray(saltLength, saltLength + nonceLength);\n const ciphertext = data.subarray(saltLength + nonceLength);\n const aesGcm = { name: algorithm, iv: nonce };\n if (typeof password === 'string') {\n password = fromString(password);\n }\n let cryptoKey;\n if (password.length === 0) {\n try {\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const runtimeDerivedEmptyPassword = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, runtimeDerivedEmptyPassword, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n catch {\n cryptoKey = await crypto.subtle.importKey('jwk', derivedEmptyPasswordKey, { name: 'AES-GCM' }, true, ['decrypt']);\n }\n }\n else {\n // Derive the key using PBKDF2.\n const deriveParams = { name: 'PBKDF2', salt, iterations, hash: { name: digest } };\n const rawKey = await crypto.subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveKey']);\n cryptoKey = await crypto.subtle.deriveKey(deriveParams, rawKey, { name: algorithm, length: keyLength }, true, ['decrypt']);\n }\n // Decrypt the string.\n const plaintext = await crypto.subtle.decrypt(aesGcm, cryptoKey, ciphertext);\n return new Uint8Array(plaintext);\n }\n const cipher = {\n encrypt,\n decrypt\n };\n return cipher;\n}\n//# sourceMappingURL=aes-gcm.browser.js.map","import { base64 } from 'multiformats/bases/base64';\nimport * as ciphers from '../ciphers/aes-gcm.js';\n/**\n * Exports the given PrivateKey as a base64 encoded string.\n * The PrivateKey is encrypted via a password derived PBKDF2 key\n * leveraging the aes-gcm cipher algorithm.\n */\nexport async function exporter(privateKey, password) {\n const cipher = ciphers.create();\n const encryptedKey = await cipher.encrypt(privateKey, password);\n return base64.encode(encryptedKey);\n}\n//# sourceMappingURL=exporter.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var KeyType;\n(function (KeyType) {\n KeyType[\"RSA\"] = \"RSA\";\n KeyType[\"Ed25519\"] = \"Ed25519\";\n KeyType[\"Secp256k1\"] = \"Secp256k1\";\n})(KeyType || (KeyType = {}));\nvar __KeyTypeValues;\n(function (__KeyTypeValues) {\n __KeyTypeValues[__KeyTypeValues[\"RSA\"] = 0] = \"RSA\";\n __KeyTypeValues[__KeyTypeValues[\"Ed25519\"] = 1] = \"Ed25519\";\n __KeyTypeValues[__KeyTypeValues[\"Secp256k1\"] = 2] = \"Secp256k1\";\n})(__KeyTypeValues || (__KeyTypeValues = {}));\n(function (KeyType) {\n KeyType.codec = () => {\n return enumeration(__KeyTypeValues);\n };\n})(KeyType || (KeyType = {}));\nexport var PublicKey;\n(function (PublicKey) {\n let _codec;\n PublicKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PublicKey.encode = (obj) => {\n return encodeMessage(obj, PublicKey.codec());\n };\n PublicKey.decode = (buf) => {\n return decodeMessage(buf, PublicKey.codec());\n };\n})(PublicKey || (PublicKey = {}));\nexport var PrivateKey;\n(function (PrivateKey) {\n let _codec;\n PrivateKey.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.Type != null) {\n w.uint32(8);\n KeyType.codec().encode(obj.Type, w);\n }\n if (obj.Data != null) {\n w.uint32(18);\n w.bytes(obj.Data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.Type = KeyType.codec().decode(reader);\n break;\n case 2:\n obj.Data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PrivateKey.encode = (obj) => {\n return encodeMessage(obj, PrivateKey.codec());\n };\n PrivateKey.decode = (buf) => {\n return decodeMessage(buf, PrivateKey.codec());\n };\n})(PrivateKey || (PrivateKey = {}));\n//# sourceMappingURL=keys.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport * as crypto from './ed25519.js';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nexport class Ed25519PublicKey {\n _key;\n constructor(key) {\n this._key = ensureKey(key, crypto.publicKeyLength);\n }\n async verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n}\nexport class Ed25519PrivateKey {\n _key;\n _publicKey;\n // key - 64 byte Uint8Array containing private key\n // publicKey - 32 byte Uint8Array containing public key\n constructor(key, publicKey) {\n this._key = ensureKey(key, crypto.privateKeyLength);\n this._publicKey = ensureKey(publicKey, crypto.publicKeyLength);\n }\n async sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Ed25519PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.Ed25519,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the identity multihash containing its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n *\n * @returns {Promise}\n */\n async id() {\n const encoding = identity.digest(this.public.bytes);\n return base58btc.encode(encoding.bytes).substring(1);\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalEd25519PrivateKey(bytes) {\n // Try the old, redundant public key version\n if (bytes.length > crypto.privateKeyLength) {\n bytes = ensureKey(bytes, crypto.privateKeyLength + crypto.publicKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.privateKeyLength, bytes.length);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n }\n bytes = ensureKey(bytes, crypto.privateKeyLength);\n const privateKeyBytes = bytes.subarray(0, crypto.privateKeyLength);\n const publicKeyBytes = bytes.subarray(crypto.publicKeyLength);\n return new Ed25519PrivateKey(privateKeyBytes, publicKeyBytes);\n}\nexport function unmarshalEd25519PublicKey(bytes) {\n bytes = ensureKey(bytes, crypto.publicKeyLength);\n return new Ed25519PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const { privateKey, publicKey } = await crypto.generateKey();\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nexport async function generateKeyPairFromSeed(seed) {\n const { privateKey, publicKey } = await crypto.generateKeyFromSeed(seed);\n return new Ed25519PrivateKey(privateKey, publicKey);\n}\nfunction ensureKey(key, length) {\n key = Uint8Array.from(key ?? []);\n if (key.length !== length) {\n throw new CodeError(`Key must be a Uint8Array of length ${length}, got ${key.length}`, 'ERR_INVALID_KEY_TYPE');\n }\n return key;\n}\n//# sourceMappingURL=ed25519-class.js.map","import bases, {} from './util/bases.js';\n/**\n * Turns a `Uint8Array` into a string.\n *\n * Supports `utf8`, `utf-8` and any encoding supported by the multibase module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n // strip multibase prefix\n return base.encoder.encode(array).substring(1);\n}\n//# sourceMappingURL=to-string.js.map","import 'node-forge/lib/util.js';\nimport 'node-forge/lib/jsbn.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nexport function bigIntegerToUintBase64url(num, len) {\n // Call `.abs()` to convert to unsigned\n let buf = Uint8Array.from(num.abs().toByteArray()); // toByteArray converts to big endian\n // toByteArray() gives us back a signed array, which will include a leading 0\n // byte if the most significant bit of the number is 1:\n // https://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-integer\n // Our number will always be positive so we should remove the leading padding.\n buf = buf[0] === 0 ? buf.subarray(1) : buf;\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return uint8ArrayToString(buf, 'base64url');\n}\n// Convert a base64url encoded string to a BigInteger\nexport function base64urlToBigInteger(str) {\n const buf = base64urlToBuffer(str);\n return new forge.jsbn.BigInteger(uint8ArrayToString(buf, 'base16'), 16);\n}\nexport function base64urlToBuffer(str, len) {\n let buf = uint8ArrayFromString(str, 'base64urlpad');\n if (len != null) {\n if (buf.length > len)\n throw new Error('byte array longer than desired length');\n buf = uint8ArrayConcat([new Uint8Array(len - buf.length), buf]);\n }\n return buf;\n}\n//# sourceMappingURL=util.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { base64urlToBuffer } from '../util.js';\nimport webcrypto from '../webcrypto.js';\nconst bits = {\n 'P-256': 256,\n 'P-384': 384,\n 'P-521': 521\n};\nconst curveTypes = Object.keys(bits);\nconst names = curveTypes.join(' / ');\nexport async function generateEphmeralKeyPair(curve) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'ECDH',\n namedCurve: curve\n }, true, ['deriveBits']);\n // forcePrivate is used for testing only\n const genSharedKey = async (theirPub, forcePrivate) => {\n let privateKey;\n if (forcePrivate != null) {\n privateKey = await webcrypto.get().subtle.importKey('jwk', unmarshalPrivateKey(curve, forcePrivate), {\n name: 'ECDH',\n namedCurve: curve\n }, false, ['deriveBits']);\n }\n else {\n privateKey = pair.privateKey;\n }\n const key = await webcrypto.get().subtle.importKey('jwk', unmarshalPublicKey(curve, theirPub), {\n name: 'ECDH',\n namedCurve: curve\n }, false, []);\n const buffer = await webcrypto.get().subtle.deriveBits({\n name: 'ECDH',\n // @ts-expect-error namedCurve is missing from the types\n namedCurve: curve,\n public: key\n }, privateKey, bits[curve]);\n return new Uint8Array(buffer, 0, buffer.byteLength);\n };\n const publicKey = await webcrypto.get().subtle.exportKey('jwk', pair.publicKey);\n const ecdhKey = {\n key: marshalPublicKey(publicKey),\n genSharedKey\n };\n return ecdhKey;\n}\nconst curveLengths = {\n 'P-256': 32,\n 'P-384': 48,\n 'P-521': 66\n};\n// Marshal converts a jwk encoded ECDH public key into the\n// form specified in section 4.3.6 of ANSI X9.62. (This is the format\n// go-ipfs uses)\nfunction marshalPublicKey(jwk) {\n if (jwk.crv == null || jwk.x == null || jwk.y == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n if (jwk.crv !== 'P-256' && jwk.crv !== 'P-384' && jwk.crv !== 'P-521') {\n throw new CodeError(`Unknown curve: ${jwk.crv}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[jwk.crv];\n return uint8ArrayConcat([\n Uint8Array.from([4]),\n base64urlToBuffer(jwk.x, byteLen),\n base64urlToBuffer(jwk.y, byteLen)\n ], 1 + byteLen * 2);\n}\n// Unmarshal converts a point, serialized by Marshal, into an jwk encoded key\nfunction unmarshalPublicKey(curve, key) {\n if (curve !== 'P-256' && curve !== 'P-384' && curve !== 'P-521') {\n throw new CodeError(`Unknown curve: ${curve}. Must be ${names}`, 'ERR_INVALID_CURVE');\n }\n const byteLen = curveLengths[curve];\n if (!uint8ArrayEquals(key.subarray(0, 1), Uint8Array.from([4]))) {\n throw new CodeError('Cannot unmarshal public key - invalid key format', 'ERR_INVALID_KEY_FORMAT');\n }\n return {\n kty: 'EC',\n crv: curve,\n x: uint8ArrayToString(key.subarray(1, byteLen + 1), 'base64url'),\n y: uint8ArrayToString(key.subarray(1 + byteLen), 'base64url'),\n ext: true\n };\n}\nconst unmarshalPrivateKey = (curve, key) => ({\n ...unmarshalPublicKey(curve, key.public),\n d: uint8ArrayToString(key.private, 'base64url')\n});\n//# sourceMappingURL=ecdh-browser.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { randomBytes as randB } from '@noble/hashes/utils';\n/**\n * Generates a Uint8Array with length `number` populated by random bytes\n */\nexport default function randomBytes(length) {\n if (isNaN(length) || length <= 0) {\n throw new CodeError('random bytes length must be a Number bigger than 0', 'ERR_INVALID_LENGTH');\n }\n return randB(length);\n}\n//# sourceMappingURL=random-bytes.js.map","import 'node-forge/lib/rsa.js';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { base64urlToBigInteger } from '../util.js';\nfunction convert(key, types) {\n return types.map(t => base64urlToBigInteger(key[t]));\n}\nexport function jwk2priv(key) {\n return forge.pki.setRsaPrivateKey(...convert(key, ['n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi']));\n}\nexport function jwk2pub(key) {\n return forge.pki.setRsaPublicKey(...convert(key, ['n', 'e']));\n}\n//# sourceMappingURL=jwk2pem.js.map","import 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/rsa.js';\nimport { CodeError } from '@libp2p/interface/errors';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { bigIntegerToUintBase64url, base64urlToBigInteger } from './../util.js';\n// Convert a PKCS#1 in ASN1 DER format to a JWK key\nexport function pkcs1ToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n // https://tools.ietf.org/html/rfc7518#section-6.3.1\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(privateKey.n),\n e: bigIntegerToUintBase64url(privateKey.e),\n d: bigIntegerToUintBase64url(privateKey.d),\n p: bigIntegerToUintBase64url(privateKey.p),\n q: bigIntegerToUintBase64url(privateKey.q),\n dp: bigIntegerToUintBase64url(privateKey.dP),\n dq: bigIntegerToUintBase64url(privateKey.dQ),\n qi: bigIntegerToUintBase64url(privateKey.qInv),\n alg: 'RS256'\n };\n}\n// Convert a JWK key into PKCS#1 in ASN1 DER format\nexport function jwkToPkcs1(jwk) {\n if (jwk.n == null || jwk.e == null || jwk.d == null || jwk.p == null || jwk.q == null || jwk.dp == null || jwk.dq == null || jwk.qi == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.privateKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e),\n d: base64urlToBigInteger(jwk.d),\n p: base64urlToBigInteger(jwk.p),\n q: base64urlToBigInteger(jwk.q),\n dP: base64urlToBigInteger(jwk.dp),\n dQ: base64urlToBigInteger(jwk.dq),\n qInv: base64urlToBigInteger(jwk.qi)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n// Convert a PKCIX in ASN1 DER format to a JWK key\nexport function pkixToJwk(bytes) {\n const asn1 = forge.asn1.fromDer(uint8ArrayToString(bytes, 'ascii'));\n const publicKey = forge.pki.publicKeyFromAsn1(asn1);\n return {\n kty: 'RSA',\n n: bigIntegerToUintBase64url(publicKey.n),\n e: bigIntegerToUintBase64url(publicKey.e)\n };\n}\n// Convert a JWK key to PKCIX in ASN1 DER format\nexport function jwkToPkix(jwk) {\n if (jwk.n == null || jwk.e == null) {\n throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');\n }\n const asn1 = forge.pki.publicKeyToAsn1({\n n: base64urlToBigInteger(jwk.n),\n e: base64urlToBigInteger(jwk.e)\n });\n return uint8ArrayFromString(forge.asn1.toDer(asn1).getBytes(), 'ascii');\n}\n//# sourceMappingURL=rsa-utils.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport randomBytes from '../random-bytes.js';\nimport webcrypto from '../webcrypto.js';\nimport { jwk2pub, jwk2priv } from './jwk2pem.js';\nimport * as utils from './rsa-utils.js';\nexport { utils };\nexport async function generateKey(bits) {\n const pair = await webcrypto.get().subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: 'SHA-256' }\n }, true, ['sign', 'verify']);\n const keys = await exportKey(pair);\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\n// Takes a jwk key\nexport async function unmarshalPrivateKey(key) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['sign']);\n const pair = [\n privateKey,\n await derivePublicFromPrivate(key)\n ];\n const keys = await exportKey({\n privateKey: pair[0],\n publicKey: pair[1]\n });\n return {\n privateKey: keys[0],\n publicKey: keys[1]\n };\n}\nexport { randomBytes as getRandomValues };\nexport async function hashAndSign(key, msg) {\n const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['sign']);\n const sig = await webcrypto.get().subtle.sign({ name: 'RSASSA-PKCS1-v1_5' }, privateKey, Uint8Array.from(msg));\n return new Uint8Array(sig, 0, sig.byteLength);\n}\nexport async function hashAndVerify(key, sig, msg) {\n const publicKey = await webcrypto.get().subtle.importKey('jwk', key, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, false, ['verify']);\n return webcrypto.get().subtle.verify({ name: 'RSASSA-PKCS1-v1_5' }, publicKey, sig, msg);\n}\nasync function exportKey(pair) {\n if (pair.privateKey == null || pair.publicKey == null) {\n throw new CodeError('Private and public key are required', 'ERR_INVALID_PARAMETERS');\n }\n return Promise.all([\n webcrypto.get().subtle.exportKey('jwk', pair.privateKey),\n webcrypto.get().subtle.exportKey('jwk', pair.publicKey)\n ]);\n}\nasync function derivePublicFromPrivate(jwKey) {\n return webcrypto.get().subtle.importKey('jwk', {\n kty: jwKey.kty,\n n: jwKey.n,\n e: jwKey.e\n }, {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n }, true, ['verify']);\n}\n/*\n\nRSA encryption/decryption for the browser with webcrypto workaround\n\"bloody dark magic. webcrypto's why.\"\n\nExplanation:\n - Convert JWK to nodeForge\n - Convert msg Uint8Array to nodeForge buffer: ByteBuffer is a \"binary-string backed buffer\", so let's make our Uint8Array a binary string\n - Convert resulting nodeForge buffer to Uint8Array: it returns a binary string, turn that into a Uint8Array\n\n*/\nfunction convertKey(key, pub, msg, handle) {\n const fkey = pub ? jwk2pub(key) : jwk2priv(key);\n const fmsg = uint8ArrayToString(Uint8Array.from(msg), 'ascii');\n const fomsg = handle(fmsg, fkey);\n return uint8ArrayFromString(fomsg, 'ascii');\n}\nexport function encrypt(key, msg) {\n return convertKey(key, true, msg, (msg, key) => key.encrypt(msg));\n}\nexport function decrypt(key, msg) {\n return convertKey(key, false, msg, (msg, key) => key.decrypt(msg));\n}\nexport function keySize(jwk) {\n if (jwk.kty !== 'RSA') {\n throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE');\n }\n else if (jwk.n == null) {\n throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS');\n }\n const bytes = uint8ArrayFromString(jwk.n, 'base64url');\n return bytes.length * 8;\n}\n//# sourceMappingURL=rsa-browser.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { sha256 } from 'multiformats/hashes/sha2';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport 'node-forge/lib/sha512.js';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { exporter } from './exporter.js';\nimport * as pbm from './keys.js';\nimport * as crypto from './rsa.js';\nexport const MAX_KEY_SIZE = 8192;\nexport class RsaPublicKey {\n _key;\n constructor(key) {\n this._key = key;\n }\n async verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.utils.jwkToPkix(this._key);\n }\n get bytes() {\n return pbm.PublicKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n encrypt(bytes) {\n return crypto.encrypt(this._key, bytes);\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n}\nexport class RsaPrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey;\n }\n genSecret() {\n return crypto.getRandomValues(16);\n }\n async sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n if (this._publicKey == null) {\n throw new CodeError('public key not provided', 'ERR_PUBKEY_NOT_PROVIDED');\n }\n return new RsaPublicKey(this._publicKey);\n }\n decrypt(bytes) {\n return crypto.decrypt(this._key, bytes);\n }\n marshal() {\n return crypto.utils.jwkToPkcs1(this._key);\n }\n get bytes() {\n return pbm.PrivateKey.encode({\n Type: pbm.KeyType.RSA,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected PEM format\n */\n async export(password, format = 'pkcs-8') {\n if (format === 'pkcs-8') {\n const buffer = new forge.util.ByteBuffer(this.marshal());\n const asn1 = forge.asn1.fromDer(buffer);\n const privateKey = forge.pki.privateKeyFromAsn1(asn1);\n const options = {\n algorithm: 'aes256',\n count: 10000,\n saltSize: 128 / 8,\n prfAlgorithm: 'sha512'\n };\n return forge.pki.encryptRsaPrivateKey(privateKey, password, options);\n }\n else if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport async function unmarshalRsaPrivateKey(bytes) {\n const jwk = crypto.utils.pkcs1ToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport function unmarshalRsaPublicKey(bytes) {\n const jwk = crypto.utils.pkixToJwk(bytes);\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n return new RsaPublicKey(jwk);\n}\nexport async function fromJwk(jwk) {\n if (crypto.keySize(jwk) > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.unmarshalPrivateKey(jwk);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\nexport async function generateKeyPair(bits) {\n if (bits > MAX_KEY_SIZE) {\n throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');\n }\n const keys = await crypto.generateKey(bits);\n return new RsaPrivateKey(keys.privateKey, keys.publicKey);\n}\n//# sourceMappingURL=rsa-class.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { secp256k1 as secp } from '@noble/curves/secp256k1';\nimport { sha256 } from 'multiformats/hashes/sha2';\nconst PRIVATE_KEY_BYTE_LENGTH = 32;\nexport { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };\nexport function generateKey() {\n return secp.utils.randomPrivateKey();\n}\n/**\n * Hash and sign message with private key\n */\nexport async function hashAndSign(key, msg) {\n const { digest } = await sha256.digest(msg);\n try {\n const signature = secp.sign(digest, key);\n return signature.toDERRawBytes();\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\n/**\n * Hash message and verify signature with public key\n */\nexport async function hashAndVerify(key, sig, msg) {\n try {\n const { digest } = await sha256.digest(msg);\n return secp.verify(sig, digest, key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_INPUT');\n }\n}\nexport function compressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(true);\n return point;\n}\nexport function decompressPublicKey(key) {\n const point = secp.ProjectivePoint.fromHex(key).toRawBytes(false);\n return point;\n}\nexport function validatePrivateKey(key) {\n try {\n secp.getPublicKey(key, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\nexport function validatePublicKey(key) {\n try {\n secp.ProjectivePoint.fromHex(key);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PUBLIC_KEY');\n }\n}\nexport function computePublicKey(privateKey) {\n try {\n return secp.getPublicKey(privateKey, true);\n }\n catch (err) {\n throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');\n }\n}\n//# sourceMappingURL=secp256k1.js.map","import { CodeError } from '@libp2p/interface/errors';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { exporter } from './exporter.js';\nimport * as keysProtobuf from './keys.js';\nimport * as crypto from './secp256k1.js';\nexport class Secp256k1PublicKey {\n _key;\n constructor(key) {\n crypto.validatePublicKey(key);\n this._key = key;\n }\n async verify(data, sig) {\n return crypto.hashAndVerify(this._key, sig, data);\n }\n marshal() {\n return crypto.compressPublicKey(this._key);\n }\n get bytes() {\n return keysProtobuf.PublicKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n}\nexport class Secp256k1PrivateKey {\n _key;\n _publicKey;\n constructor(key, publicKey) {\n this._key = key;\n this._publicKey = publicKey ?? crypto.computePublicKey(key);\n crypto.validatePrivateKey(this._key);\n crypto.validatePublicKey(this._publicKey);\n }\n async sign(message) {\n return crypto.hashAndSign(this._key, message);\n }\n get public() {\n return new Secp256k1PublicKey(this._publicKey);\n }\n marshal() {\n return this._key;\n }\n get bytes() {\n return keysProtobuf.PrivateKey.encode({\n Type: keysProtobuf.KeyType.Secp256k1,\n Data: this.marshal()\n }).subarray();\n }\n equals(key) {\n return uint8ArrayEquals(this.bytes, key.bytes);\n }\n async hash() {\n const { bytes } = await sha256.digest(this.bytes);\n return bytes;\n }\n /**\n * Gets the ID of the key.\n *\n * The key id is the base58 encoding of the SHA-256 multihash of its public key.\n * The public key is a protobuf encoding containing a type and the DER encoding\n * of the PKCS SubjectPublicKeyInfo.\n */\n async id() {\n const hash = await this.public.hash();\n return uint8ArrayToString(hash, 'base58btc');\n }\n /**\n * Exports the key into a password protected `format`\n */\n async export(password, format = 'libp2p-key') {\n if (format === 'libp2p-key') {\n return exporter(this.bytes, password);\n }\n else {\n throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');\n }\n }\n}\nexport function unmarshalSecp256k1PrivateKey(bytes) {\n return new Secp256k1PrivateKey(bytes);\n}\nexport function unmarshalSecp256k1PublicKey(bytes) {\n return new Secp256k1PublicKey(bytes);\n}\nexport async function generateKeyPair() {\n const privateKeyBytes = crypto.generateKey();\n return new Secp256k1PrivateKey(privateKeyBytes);\n}\n//# sourceMappingURL=secp256k1-class.js.map","/**\n * @packageDocumentation\n *\n * **Supported Key Types**\n *\n * The {@link generateKeyPair}, {@link marshalPublicKey}, and {@link marshalPrivateKey} functions accept a string `type` argument.\n *\n * Currently the `'RSA'`, `'ed25519'`, and `secp256k1` types are supported, although ed25519 and secp256k1 keys support only signing and verification of messages.\n *\n * For encryption / decryption support, RSA keys should be used.\n */\nimport 'node-forge/lib/asn1.js';\nimport 'node-forge/lib/pbe.js';\nimport { CodeError } from '@libp2p/interface/errors';\n// @ts-expect-error types are missing\nimport forge from 'node-forge/lib/forge.js';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport * as Ed25519 from './ed25519-class.js';\nimport generateEphemeralKeyPair from './ephemeral-keys.js';\nimport { importer } from './importer.js';\nimport { keyStretcher } from './key-stretcher.js';\nimport * as keysPBM from './keys.js';\nimport * as RSA from './rsa-class.js';\nimport * as Secp256k1 from './secp256k1-class.js';\nexport { keyStretcher };\nexport { generateEphemeralKeyPair };\nexport { keysPBM };\nexport const supportedKeys = {\n rsa: RSA,\n ed25519: Ed25519,\n secp256k1: Secp256k1\n};\nfunction unsupportedKey(type) {\n const supported = Object.keys(supportedKeys).join(' / ');\n return new CodeError(`invalid or unsupported key type ${type}. Must be ${supported}`, 'ERR_UNSUPPORTED_KEY_TYPE');\n}\nfunction typeToKey(type) {\n type = type.toLowerCase();\n if (type === 'rsa' || type === 'ed25519' || type === 'secp256k1') {\n return supportedKeys[type];\n }\n throw unsupportedKey(type);\n}\n/**\n * Generates a keypair of the given type and bitsize\n *\n * @param type\n * @param bits - Minimum of 1024\n */\nexport async function generateKeyPair(type, bits) {\n return typeToKey(type).generateKeyPair(bits ?? 2048);\n}\n/**\n * Generates a keypair of the given type and bitsize.\n *\n * Seed is a 32 byte uint8array\n */\nexport async function generateKeyPairFromSeed(type, seed, bits) {\n if (type.toLowerCase() !== 'ed25519') {\n throw new CodeError('Seed key derivation is unimplemented for RSA or secp256k1', 'ERR_UNSUPPORTED_KEY_DERIVATION_TYPE');\n }\n return Ed25519.generateKeyPairFromSeed(seed);\n}\n/**\n * Converts a protobuf serialized public key into its representative object\n */\nexport function unmarshalPublicKey(buf) {\n const decoded = keysPBM.PublicKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPublicKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PublicKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PublicKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'unknown');\n }\n}\n/**\n * Converts a public key object into a protobuf serialized public key\n */\nexport function marshalPublicKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts a protobuf serialized private key into its representative object\n */\nexport async function unmarshalPrivateKey(buf) {\n const decoded = keysPBM.PrivateKey.decode(buf);\n const data = decoded.Data ?? new Uint8Array();\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPrivateKey(data);\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PrivateKey(data);\n case keysPBM.KeyType.Secp256k1:\n return supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey(data);\n default:\n throw unsupportedKey(decoded.Type ?? 'RSA');\n }\n}\n/**\n * Converts a private key object into a protobuf serialized private key\n */\nexport function marshalPrivateKey(key, type) {\n type = (type ?? 'rsa').toLowerCase();\n typeToKey(type); // check type\n return key.bytes;\n}\n/**\n * Converts an exported private key into its representative object.\n *\n * Supported formats are 'pem' (RSA only) and 'libp2p-key'.\n */\nexport async function importKey(encryptedKey, password) {\n try {\n const key = await importer(encryptedKey, password);\n return await unmarshalPrivateKey(key);\n }\n catch (_) {\n // Ignore and try the old pem decrypt\n }\n // Only rsa supports pem right now\n const key = forge.pki.decryptRsaPrivateKey(encryptedKey, password);\n if (key === null) {\n throw new CodeError('Cannot read the key, most likely the password is wrong or not a RSA key', 'ERR_CANNOT_DECRYPT_PEM');\n }\n let der = forge.asn1.toDer(forge.pki.privateKeyToAsn1(key));\n der = uint8ArrayFromString(der.getBytes(), 'ascii');\n return supportedKeys.rsa.unmarshalRsaPrivateKey(der);\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * A logger for libp2p based on the venerable [debug](https://www.npmjs.com/package/debug)\n * module.\n *\n * @example\n *\n * ```JavaScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('libp2p:my:component:name')\n *\n * log('something happened: %s', 'it was ok')\n * log.error('something bad happened: %o', err)\n *\n * log('with this peer: %p', aPeerId)\n * log('and this base58btc: %b', aUint8Array)\n * log('and this base32: %t', aUint8Array)\n * ```\n * ```console\n * $ DEBUG=libp2p:* node index.js\n * something happened: it was ok\n * something bad happened: \n * with this peer: 12D3Foo\n * with this base58btc: Qmfoo\n * with this base32: bafyfoo\n * ```\n */\nimport debug from 'debug';\nimport { base32 } from 'multiformats/bases/base32';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { base64 } from 'multiformats/bases/base64';\nimport { truncatePeerId } from './utils.js';\n// Add a formatter for converting to a base58 string\ndebug.formatters.b = (v) => {\n return v == null ? 'undefined' : base58btc.baseEncode(v);\n};\n// Add a formatter for converting to a base32 string\ndebug.formatters.t = (v) => {\n return v == null ? 'undefined' : base32.baseEncode(v);\n};\n// Add a formatter for converting to a base64 string\ndebug.formatters.m = (v) => {\n return v == null ? 'undefined' : base64.baseEncode(v);\n};\n// Add a formatter for stringifying peer ids\ndebug.formatters.p = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying CIDs\ndebug.formatters.c = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Datastore keys\ndebug.formatters.k = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\n// Add a formatter for stringifying Multiaddrs\ndebug.formatters.a = (v) => {\n return v == null ? 'undefined' : v.toString();\n};\nfunction createDisabledLogger(namespace) {\n const logger = () => { };\n logger.enabled = false;\n logger.color = '';\n logger.diff = 0;\n logger.log = () => { };\n logger.namespace = namespace;\n logger.destroy = () => true;\n logger.extend = () => logger;\n return logger;\n}\n/**\n * Create a component logger that will prefix any log messages with a truncated\n * peer id.\n *\n * @example\n *\n * ```TypeScript\n * import { peerLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const peerId = peerIdFromString('12D3FooBar')\n * const logger = peerLogger(peerId)\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"12…oBar:my-component hello world\"\n * ```\n */\nexport function peerLogger(peerId, options = {}) {\n return prefixLogger(truncatePeerId(peerId, options));\n}\n/**\n * Create a component logger that will prefix any log messages with the passed\n * string.\n *\n * @example\n *\n * ```TypeScript\n * import { prefixLogger } from '@libp2p/logger'\n *\n * const logger = prefixLogger('my-node')\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-node:my-component hello world\"\n * ```\n */\nexport function prefixLogger(prefix) {\n return {\n forComponent(name) {\n return logger(`${prefix}:${name}`);\n }\n };\n}\n/**\n * Create a component logger\n *\n * @example\n *\n * ```TypeScript\n * import { defaultLogger } from '@libp2p/logger'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const logger = defaultLogger()\n *\n * const log = logger.forComponent('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function defaultLogger() {\n return {\n forComponent(name) {\n return logger(name);\n }\n };\n}\n/**\n * Creates a logger for the passed component name.\n *\n * @example\n *\n * ```TypeScript\n * import { logger } from '@libp2p/logger'\n *\n * const log = logger('my-component')\n * log.info('hello world')\n * // logs \"my-component hello world\"\n * ```\n */\nexport function logger(name) {\n // trace logging is a no-op by default\n let trace = createDisabledLogger(`${name}:trace`);\n // look at all the debug names and see if trace logging has explicitly been enabled\n if (debug.enabled(`${name}:trace`) && debug.names.map(r => r.toString()).find(n => n.includes(':trace')) != null) {\n trace = debug(`${name}:trace`);\n }\n return Object.assign(debug(name), {\n error: debug(`${name}:error`),\n trace\n });\n}\nexport function disable() {\n debug.disable();\n}\nexport function enable(namespaces) {\n debug.enable(namespaces);\n}\nexport function enabled(namespaces) {\n return debug.enabled(namespaces);\n}\n//# sourceMappingURL=index.js.map","var Timestamp=function(){\"undefined\"!=typeof module&&(module.exports=d);var l=86400,s=3200,T=146097*s/400,e=l*T,f=1e3*e,c=864e13,g=4294967296,h=1e6,u=\"000000000\",m=Math.trunc||function(n){var t=n-n%1;return 0==t&&(n<0||0===n&&1/n!=1/0)?-0:t},n=d.prototype,o=(d.fromDate=function(n){return new d(+n)},d.fromInt64BE=r(0,1,2,3,0,4),d.fromInt64LE=r(3,2,1,0,4,0),d.fromString=function(n){var e,r=new d,n=(n+=\"\").replace(/^\\s*[+\\-]?\\d+/,function(n){var n=+n,t=1970+(n-1970)%400;return r.year=n-t,t}).replace(/(?:Z|([+\\-]\\d{2}):?(\\d{2}))$/,function(n,t,r){return t<0&&(r*=-1),e=6e4*(60*+t+ +r),\"\"}).replace(/\\.\\d+$/,function(n){return r.nano=+(n+u).substr(1,9),\"\"}).split(/\\D+/);1>24&255,n[t+u]=r>>16&255,n[t+o]=r>>8&255,n[t+i]=255&r}}function r(r,e,u,o,i,a){return function(n,t){w(n,t|=0);var r=f(n,t+i);return y(f(n,t+a),r)};function f(n,t){return 16777216*n[t+r]+(n[t+e]<<16|n[t+u]<<8|n[t+o])}}function w(n,t){n=n&&n.length;if(null==n)throw new TypeError(\"Invalid Buffer\");if(n {\n return enumeration(__ValidityTypeValues);\n };\n })(ValidityType = IpnsEntry.ValidityType || (IpnsEntry.ValidityType = {}));\n let _codec;\n IpnsEntry.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.value != null) {\n w.uint32(10);\n w.bytes(obj.value);\n }\n if (obj.signatureV1 != null) {\n w.uint32(18);\n w.bytes(obj.signatureV1);\n }\n if (obj.validityType != null) {\n w.uint32(24);\n IpnsEntry.ValidityType.codec().encode(obj.validityType, w);\n }\n if (obj.validity != null) {\n w.uint32(34);\n w.bytes(obj.validity);\n }\n if (obj.sequence != null) {\n w.uint32(40);\n w.uint64(obj.sequence);\n }\n if (obj.ttl != null) {\n w.uint32(48);\n w.uint64(obj.ttl);\n }\n if (obj.pubKey != null) {\n w.uint32(58);\n w.bytes(obj.pubKey);\n }\n if (obj.signatureV2 != null) {\n w.uint32(66);\n w.bytes(obj.signatureV2);\n }\n if (obj.data != null) {\n w.uint32(74);\n w.bytes(obj.data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.value = reader.bytes();\n break;\n case 2:\n obj.signatureV1 = reader.bytes();\n break;\n case 3:\n obj.validityType = IpnsEntry.ValidityType.codec().decode(reader);\n break;\n case 4:\n obj.validity = reader.bytes();\n break;\n case 5:\n obj.sequence = reader.uint64();\n break;\n case 6:\n obj.ttl = reader.uint64();\n break;\n case 7:\n obj.pubKey = reader.bytes();\n break;\n case 8:\n obj.signatureV2 = reader.bytes();\n break;\n case 9:\n obj.data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n IpnsEntry.encode = (obj) => {\n return encodeMessage(obj, IpnsEntry.codec());\n };\n IpnsEntry.decode = (buf) => {\n return decodeMessage(buf, IpnsEntry.codec());\n };\n})(IpnsEntry || (IpnsEntry = {}));\n//# sourceMappingURL=ipns.js.map","export const symbol = Symbol.for('@libp2p/peer-id');\nexport function isPeerId(other) {\n return other != null && Boolean(other[symbol]);\n}\n//# sourceMappingURL=index.js.map","/**\n * Returns true if the two passed Uint8Arrays have the same content\n */\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=equals.js.map","/**\n * @packageDocumentation\n *\n * An implementation of a peer id\n *\n * @example\n *\n * ```JavaScript\n * import { peerIdFromString } from '@libp2p/peer-id'\n * const peer = peerIdFromString('k51qzi5uqu5dkwkqm42v9j9kqcam2jiuvloi16g72i4i4amoo2m8u3ol3mqu6s')\n *\n * console.log(peer.toCid()) // CID(bafzaa...)\n * console.log(peer.toString()) // \"12D3K...\"\n * ```\n */\nimport { CodeError } from '@libp2p/interface/errors';\nimport { symbol } from '@libp2p/interface/peer-id';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { bases } from 'multiformats/basics';\nimport { CID } from 'multiformats/cid';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { identity } from 'multiformats/hashes/identity';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nconst inspect = Symbol.for('nodejs.util.inspect.custom');\nconst baseDecoder = Object\n .values(bases)\n .map(codec => codec.decoder)\n // @ts-expect-error https://github.com/multiformats/js-multiformats/issues/141\n .reduce((acc, curr) => acc.or(curr), bases.identity.decoder);\n// these values are from https://github.com/multiformats/multicodec/blob/master/table.csv\nconst LIBP2P_KEY_CODE = 0x72;\nconst MARSHALLED_ED225519_PUBLIC_KEY_LENGTH = 36;\nconst MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH = 37;\nclass PeerIdImpl {\n type;\n multihash;\n privateKey;\n publicKey;\n string;\n constructor(init) {\n this.type = init.type;\n this.multihash = init.multihash;\n this.privateKey = init.privateKey;\n // mark string cache as non-enumerable\n Object.defineProperty(this, 'string', {\n enumerable: false,\n writable: true\n });\n }\n get [Symbol.toStringTag]() {\n return `PeerId(${this.toString()})`;\n }\n [symbol] = true;\n toString() {\n if (this.string == null) {\n this.string = base58btc.encode(this.multihash.bytes).slice(1);\n }\n return this.string;\n }\n // return self-describing String representation\n // in default format from RFC 0001: https://github.com/libp2p/specs/pull/209\n toCID() {\n return CID.createV1(LIBP2P_KEY_CODE, this.multihash);\n }\n toBytes() {\n return this.multihash.bytes;\n }\n /**\n * Returns Multiaddr as a JSON string\n */\n toJSON() {\n return this.toString();\n }\n /**\n * Checks the equality of `this` peer against a given PeerId\n */\n equals(id) {\n if (id instanceof Uint8Array) {\n return uint8ArrayEquals(this.multihash.bytes, id);\n }\n else if (typeof id === 'string') {\n return peerIdFromString(id).equals(this);\n }\n else if (id?.multihash?.bytes != null) {\n return uint8ArrayEquals(this.multihash.bytes, id.multihash.bytes);\n }\n else {\n throw new Error('not valid Id');\n }\n }\n /**\n * Returns PeerId as a human-readable string\n * https://nodejs.org/api/util.html#utilinspectcustom\n *\n * @example\n * ```js\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * console.info(peerIdFromString('QmFoo'))\n * // 'PeerId(QmFoo)'\n * ```\n */\n [inspect]() {\n return `PeerId(${this.toString()})`;\n }\n}\nclass RSAPeerIdImpl extends PeerIdImpl {\n type = 'RSA';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'RSA' });\n this.publicKey = init.publicKey;\n }\n}\nclass Ed25519PeerIdImpl extends PeerIdImpl {\n type = 'Ed25519';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'Ed25519' });\n this.publicKey = init.multihash.digest;\n }\n}\nclass Secp256k1PeerIdImpl extends PeerIdImpl {\n type = 'secp256k1';\n publicKey;\n constructor(init) {\n super({ ...init, type: 'secp256k1' });\n this.publicKey = init.multihash.digest;\n }\n}\nexport function createPeerId(init) {\n if (init.type === 'RSA') {\n return new RSAPeerIdImpl(init);\n }\n if (init.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(init);\n }\n if (init.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(init);\n }\n throw new CodeError('Type must be \"RSA\", \"Ed25519\" or \"secp256k1\"', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromPeerId(other) {\n if (other.type === 'RSA') {\n return new RSAPeerIdImpl(other);\n }\n if (other.type === 'Ed25519') {\n return new Ed25519PeerIdImpl(other);\n }\n if (other.type === 'secp256k1') {\n return new Secp256k1PeerIdImpl(other);\n }\n throw new CodeError('Not a PeerId', 'ERR_INVALID_PARAMETERS');\n}\nexport function peerIdFromString(str, decoder) {\n decoder = decoder ?? baseDecoder;\n if (str.charAt(0) === '1' || str.charAt(0) === 'Q') {\n // identity hash ed25519/secp256k1 key or sha2-256 hash of\n // rsa public key - base58btc encoded either way\n const multihash = Digest.decode(base58btc.decode(`z${str}`));\n if (str.startsWith('12D')) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (str.startsWith('16U')) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n else {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n return peerIdFromBytes(baseDecoder.decode(str));\n}\nexport function peerIdFromBytes(buf) {\n try {\n const multihash = Digest.decode(buf);\n if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash });\n }\n }\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash });\n }\n }\n catch {\n return peerIdFromCID(CID.decode(buf));\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\nexport function peerIdFromCID(cid) {\n if (cid == null || cid.multihash == null || cid.version == null || (cid.version === 1 && cid.code !== LIBP2P_KEY_CODE)) {\n throw new Error('Supplied PeerID CID is invalid');\n }\n const multihash = cid.multihash;\n if (multihash.code === sha256.code) {\n return new RSAPeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.code === identity.code) {\n if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: cid.multihash });\n }\n else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: cid.multihash });\n }\n }\n throw new Error('Supplied PeerID CID is invalid');\n}\n/**\n * @param publicKey - A marshalled public key\n * @param privateKey - A marshalled private key\n */\nexport async function peerIdFromKeys(publicKey, privateKey) {\n if (publicKey.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {\n return new Ed25519PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n if (publicKey.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {\n return new Secp256k1PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });\n }\n return new RSAPeerIdImpl({ multihash: await sha256.digest(publicKey), publicKey, privateKey });\n}\n//# sourceMappingURL=index.js.map","import { unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { isPeerId } from '@libp2p/interface/peer-id';\nimport { logger } from '@libp2p/logger';\nimport { peerIdFromBytes, peerIdFromKeys } from '@libp2p/peer-id';\nimport * as cborg from 'cborg';\nimport errCode from 'err-code';\nimport { base36 } from 'multiformats/bases/base36';\nimport { CID } from 'multiformats/cid';\nimport NanoDate from 'timestamp-nano';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport * as ERRORS from './errors.js';\nimport { IpnsEntry } from './pb/ipns.js';\nconst log = logger('ipns:utils');\nconst IPNS_PREFIX = uint8ArrayFromString('/ipns/');\nconst LIBP2P_CID_CODEC = 114;\n/**\n * Convert a JavaScript date into an `RFC3339Nano` formatted\n * string\n */\nexport function toRFC3339(time) {\n const year = time.getUTCFullYear();\n const month = String(time.getUTCMonth() + 1).padStart(2, '0');\n const day = String(time.getUTCDate()).padStart(2, '0');\n const hour = String(time.getUTCHours()).padStart(2, '0');\n const minute = String(time.getUTCMinutes()).padStart(2, '0');\n const seconds = String(time.getUTCSeconds()).padStart(2, '0');\n const milliseconds = time.getUTCMilliseconds();\n const nanoseconds = milliseconds * 1000 * 1000;\n return `${year}-${month}-${day}T${hour}:${minute}:${seconds}.${nanoseconds}Z`;\n}\n/**\n * Parses a date string formatted as `RFC3339Nano` into a\n * JavaScript Date object\n */\nexport function parseRFC3339(time) {\n const rfc3339Matcher = new RegExp(\n // 2006-01-02T\n '(\\\\d{4})-(\\\\d{2})-(\\\\d{2})T' +\n // 15:04:05\n '(\\\\d{2}):(\\\\d{2}):(\\\\d{2})' +\n // .999999999Z\n '\\\\.(\\\\d+)Z');\n const m = String(time).trim().match(rfc3339Matcher);\n if (m == null) {\n throw new Error('Invalid format');\n }\n const year = parseInt(m[1], 10);\n const month = parseInt(m[2], 10) - 1;\n const date = parseInt(m[3], 10);\n const hour = parseInt(m[4], 10);\n const minute = parseInt(m[5], 10);\n const second = parseInt(m[6], 10);\n const millisecond = parseInt(m[7].padEnd(6, '0').slice(0, 3), 10);\n return new Date(Date.UTC(year, month, date, hour, minute, second, millisecond));\n}\n/**\n * Extracts a public key from the passed PeerId, falling\n * back to the pubKey embedded in the ipns record\n */\nexport const extractPublicKey = async (peerId, record) => {\n if (record == null || peerId == null) {\n const error = new Error('one or more of the provided parameters are not defined');\n log.error(error);\n throw errCode(error, ERRORS.ERR_UNDEFINED_PARAMETER);\n }\n let pubKey;\n if (record.pubKey != null) {\n try {\n pubKey = unmarshalPublicKey(record.pubKey);\n }\n catch (err) {\n log.error(err);\n throw err;\n }\n const otherId = await peerIdFromKeys(record.pubKey);\n if (!otherId.equals(peerId)) {\n throw errCode(new Error('Embedded public key did not match PeerID'), ERRORS.ERR_INVALID_EMBEDDED_KEY);\n }\n }\n else if (peerId.publicKey != null) {\n pubKey = unmarshalPublicKey(peerId.publicKey);\n }\n if (pubKey != null) {\n return pubKey;\n }\n throw errCode(new Error('no public key is available'), ERRORS.ERR_UNDEFINED_PARAMETER);\n};\n/**\n * Utility for creating the record data for being signed\n */\nexport const ipnsRecordDataForV1Sig = (value, validityType, validity) => {\n const validityTypeBuffer = uint8ArrayFromString(validityType);\n return uint8ArrayConcat([value, validity, validityTypeBuffer]);\n};\n/**\n * Utility for creating the record data for being signed\n */\nexport const ipnsRecordDataForV2Sig = (data) => {\n const entryData = uint8ArrayFromString('ipns-signature:');\n return uint8ArrayConcat([entryData, data]);\n};\nexport const marshal = (obj) => {\n if ('signatureV1' in obj) {\n return IpnsEntry.encode({\n value: uint8ArrayFromString(obj.value),\n signatureV1: obj.signatureV1,\n validityType: obj.validityType,\n validity: uint8ArrayFromString(obj.validity.toString()),\n sequence: obj.sequence,\n ttl: obj.ttl,\n pubKey: obj.pubKey,\n signatureV2: obj.signatureV2,\n data: obj.data\n });\n }\n else {\n return IpnsEntry.encode({\n pubKey: obj.pubKey,\n signatureV2: obj.signatureV2,\n data: obj.data\n });\n }\n};\nexport function unmarshal(buf) {\n const message = IpnsEntry.decode(buf);\n // protobufjs returns bigints as numbers\n if (message.sequence != null) {\n message.sequence = BigInt(message.sequence);\n }\n // protobufjs returns bigints as numbers\n if (message.ttl != null) {\n message.ttl = BigInt(message.ttl);\n }\n // Check if we have the data field. If we don't, we fail. We've been producing\n // V1+V2 records for quite a while and we don't support V1-only records during\n // validation any more\n if (message.signatureV2 == null || message.data == null) {\n throw errCode(new Error('missing data or signatureV2'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n const data = parseCborData(message.data);\n const value = normalizeValue(data.Value);\n let validity;\n try {\n validity = NanoDate.fromDate(parseRFC3339(uint8ArrayToString(data.Validity)));\n }\n catch (e) {\n log.error('unrecognized validity format (not an rfc3339 format)');\n throw errCode(new Error('unrecognized validity format (not an rfc3339 format)'), ERRORS.ERR_UNRECOGNIZED_FORMAT);\n }\n if (message.value != null && message.signatureV1 != null) {\n // V1+V2\n validateCborDataMatchesPbData(message);\n return {\n value,\n validityType: IpnsEntry.ValidityType.EOL,\n validity,\n sequence: data.Sequence,\n ttl: data.TTL,\n pubKey: message.pubKey,\n signatureV1: message.signatureV1,\n signatureV2: message.signatureV2,\n data: message.data\n };\n }\n else if (message.signatureV2 != null) {\n // V2-only\n return {\n value,\n validityType: IpnsEntry.ValidityType.EOL,\n validity,\n sequence: data.Sequence,\n ttl: data.TTL,\n pubKey: message.pubKey,\n signatureV2: message.signatureV2,\n data: message.data\n };\n }\n else {\n throw new Error('invalid record: does not include signatureV1 or signatureV2');\n }\n}\nexport const peerIdToRoutingKey = (peerId) => {\n return uint8ArrayConcat([\n IPNS_PREFIX,\n peerId.toBytes()\n ]);\n};\nexport const peerIdFromRoutingKey = (key) => {\n return peerIdFromBytes(key.slice(IPNS_PREFIX.length));\n};\nexport const createCborData = (value, validity, validityType, sequence, ttl) => {\n let ValidityType;\n if (validityType === IpnsEntry.ValidityType.EOL) {\n ValidityType = 0;\n }\n else {\n throw errCode(new Error('Unknown validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n const data = {\n Value: value,\n Validity: validity,\n ValidityType,\n Sequence: sequence,\n TTL: ttl\n };\n return cborg.encode(data);\n};\nexport const parseCborData = (buf) => {\n const data = cborg.decode(buf);\n if (data.ValidityType === 0) {\n data.ValidityType = IpnsEntry.ValidityType.EOL;\n }\n else {\n throw errCode(new Error('Unknown validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n if (Number.isInteger(data.Sequence)) {\n // sequence must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range\n data.Sequence = BigInt(data.Sequence);\n }\n if (Number.isInteger(data.TTL)) {\n // ttl must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range\n data.TTL = BigInt(data.TTL);\n }\n return data;\n};\n/**\n * Normalizes the given record value. It ensures it is a PeerID, a CID or a\n * string starting with '/'. PeerIDs become `/ipns/${cidV1Libp2pKey}`,\n * CIDs become `/ipfs/${cidAsV1}`.\n */\nexport const normalizeValue = (value) => {\n if (value != null) {\n // if we have a PeerId, turn it into an ipns path\n if (isPeerId(value)) {\n return `/ipns/${value.toCID().toString(base36)}`;\n }\n // if the value is bytes, stringify it and see if we have a path\n if (value instanceof Uint8Array) {\n const string = uint8ArrayToString(value);\n if (string.startsWith('/')) {\n value = string;\n }\n }\n // if we have a path, check it is a valid path\n const string = value.toString().trim();\n if (string.startsWith('/') && string.length > 1) {\n return string;\n }\n // if we have a CID, turn it into an ipfs path\n const cid = CID.asCID(value);\n if (cid != null) {\n // PeerID encoded as a CID\n if (cid.code === LIBP2P_CID_CODEC) {\n return `/ipns/${cid.toString(base36)}`;\n }\n return `/ipfs/${cid.toV1().toString()}`;\n }\n // try parsing what we have as CID bytes or a CID string\n try {\n if (value instanceof Uint8Array) {\n return `/ipfs/${CID.decode(value).toV1().toString()}`;\n }\n return `/ipfs/${CID.parse(string).toV1().toString()}`;\n }\n catch {\n // fall through\n }\n }\n throw errCode(new Error('Value must be a valid content path starting with /'), ERRORS.ERR_INVALID_VALUE);\n};\nconst validateCborDataMatchesPbData = (entry) => {\n if (entry.data == null) {\n throw errCode(new Error('Record data is missing'), ERRORS.ERR_INVALID_RECORD_DATA);\n }\n const data = parseCborData(entry.data);\n if (!uint8ArrayEquals(data.Value, entry.value ?? new Uint8Array(0))) {\n throw errCode(new Error('Field \"value\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (!uint8ArrayEquals(data.Validity, entry.validity ?? new Uint8Array(0))) {\n throw errCode(new Error('Field \"validity\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.ValidityType !== entry.validityType) {\n throw errCode(new Error('Field \"validityType\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.Sequence !== entry.sequence) {\n throw errCode(new Error('Field \"sequence\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.TTL !== entry.ttl) {\n throw errCode(new Error('Field \"ttl\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n};\n//# sourceMappingURL=utils.js.map","import { unmarshalPrivateKey } from '@libp2p/crypto/keys';\nimport { logger } from '@libp2p/logger';\nimport errCode from 'err-code';\nimport { Key } from 'interface-datastore/key';\nimport { base32upper } from 'multiformats/bases/base32';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { identity } from 'multiformats/hashes/identity';\nimport NanoDate from 'timestamp-nano';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport * as ERRORS from './errors.js';\nimport { IpnsEntry } from './pb/ipns.js';\nimport { createCborData, ipnsRecordDataForV1Sig, ipnsRecordDataForV2Sig, normalizeValue } from './utils.js';\nconst log = logger('ipns');\nconst ID_MULTIHASH_CODE = identity.code;\nexport const namespace = '/ipns/';\nexport const namespaceLength = namespace.length;\nconst defaultCreateOptions = {\n v1Compatible: true\n};\nexport async function create(peerId, value, seq, lifetime, options = defaultCreateOptions) {\n // Validity in ISOString with nanoseconds precision and validity type EOL\n const expirationDate = new NanoDate(Date.now() + Number(lifetime));\n const validityType = IpnsEntry.ValidityType.EOL;\n const [ms, ns] = lifetime.toString().split('.');\n const lifetimeNs = (BigInt(ms) * BigInt(100000)) + BigInt(ns ?? '0');\n return _create(peerId, value, seq, validityType, expirationDate, lifetimeNs, options);\n}\nexport async function createWithExpiration(peerId, value, seq, expiration, options = defaultCreateOptions) {\n const expirationDate = NanoDate.fromString(expiration);\n const validityType = IpnsEntry.ValidityType.EOL;\n const ttlMs = expirationDate.toDate().getTime() - Date.now();\n const ttlNs = (BigInt(ttlMs) * BigInt(100000)) + BigInt(expirationDate.getNano());\n return _create(peerId, value, seq, validityType, expirationDate, ttlNs, options);\n}\nconst _create = async (peerId, value, seq, validityType, expirationDate, ttl, options = defaultCreateOptions) => {\n seq = BigInt(seq);\n const isoValidity = uint8ArrayFromString(expirationDate.toString());\n const normalizedValue = normalizeValue(value);\n const encodedValue = uint8ArrayFromString(normalizedValue);\n if (peerId.privateKey == null) {\n throw errCode(new Error('Missing private key'), ERRORS.ERR_MISSING_PRIVATE_KEY);\n }\n const privateKey = await unmarshalPrivateKey(peerId.privateKey);\n const data = createCborData(encodedValue, isoValidity, validityType, seq, ttl);\n const sigData = ipnsRecordDataForV2Sig(data);\n const signatureV2 = await privateKey.sign(sigData);\n let pubKey;\n // if we cannot derive the public key from the PeerId (e.g. RSA PeerIDs),\n // we have to embed it in the IPNS record\n if (peerId.publicKey != null) {\n const digest = Digest.decode(peerId.toBytes());\n if (digest.code !== ID_MULTIHASH_CODE || !uint8ArrayEquals(peerId.publicKey, digest.digest)) {\n pubKey = peerId.publicKey;\n }\n }\n if (options.v1Compatible === true) {\n const signatureV1 = await signLegacyV1(privateKey, encodedValue, validityType, isoValidity);\n const record = {\n value: normalizedValue,\n signatureV1,\n validity: expirationDate,\n validityType,\n sequence: seq,\n ttl,\n signatureV2,\n data\n };\n if (pubKey != null) {\n record.pubKey = pubKey;\n }\n return record;\n }\n else {\n const record = {\n value: normalizedValue,\n validity: expirationDate,\n validityType,\n sequence: seq,\n ttl,\n signatureV2,\n data\n };\n if (pubKey != null) {\n record.pubKey = pubKey;\n }\n return record;\n }\n};\n/**\n * rawStdEncoding with RFC4648\n */\nconst rawStdEncoding = (key) => base32upper.encode(key).slice(1);\n/**\n * Get key for storing the record locally.\n * Format: /ipns/${base32()}\n *\n * @param {Uint8Array} key - peer identifier object.\n */\nexport const getLocalKey = (key) => new Key(`/ipns/${rawStdEncoding(key)}`);\nexport { unmarshal } from './utils.js';\nexport { marshal } from './utils.js';\nexport { peerIdToRoutingKey } from './utils.js';\nexport { peerIdFromRoutingKey } from './utils.js';\nexport { extractPublicKey } from './utils.js';\n/**\n * Sign ipns record data using the legacy V1 signature scheme\n */\nconst signLegacyV1 = async (privateKey, value, validityType, validity) => {\n try {\n const dataForSignature = ipnsRecordDataForV1Sig(value, validityType, validity);\n return await privateKey.sign(dataForSignature);\n }\n catch (error) {\n log.error('record signature creation failed', error);\n throw errCode(new Error('record signature creation failed'), ERRORS.ERR_SIGNATURE_CREATION);\n }\n};\n//# sourceMappingURL=index.js.map","import { logger } from '@libp2p/logger';\nimport errCode from 'err-code';\nimport * as ERRORS from './errors.js';\nimport { IpnsEntry } from './pb/ipns.js';\nimport { extractPublicKey, ipnsRecordDataForV2Sig, unmarshal, peerIdFromRoutingKey } from './utils.js';\nconst log = logger('ipns:validator');\n/**\n * Limit valid IPNS record sizes to 10kb\n */\nconst MAX_RECORD_SIZE = 1024 * 10;\n/**\n * Validates the given IPNS Record against the given public key. We need a \"raw\"\n * record in order to be able to access to all of its fields.\n */\nexport const validate = async (publicKey, buf) => {\n // unmarshal ensures that (1) SignatureV2 and Data are present, (2) that ValidityType\n // and Validity are of valid types and have a value, (3) that CBOR data matches protobuf\n // if it's a V1+V2 record.\n const record = unmarshal(buf);\n // Validate Signature V2\n let isValid;\n try {\n const dataForSignature = ipnsRecordDataForV2Sig(record.data);\n isValid = await publicKey.verify(dataForSignature, record.signatureV2);\n }\n catch (err) {\n isValid = false;\n }\n if (!isValid) {\n log.error('record signature verification failed');\n throw errCode(new Error('record signature verification failed'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n // Validate according to the validity type\n if (record.validityType === IpnsEntry.ValidityType.EOL) {\n if (record.validity.toDate().getTime() < Date.now()) {\n log.error('record has expired');\n throw errCode(new Error('record has expired'), ERRORS.ERR_IPNS_EXPIRED_RECORD);\n }\n }\n else if (record.validityType != null) {\n log.error('unrecognized validity type');\n throw errCode(new Error('unrecognized validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n log('ipns record for %b is valid', record.value);\n};\nexport async function ipnsValidator(key, marshalledData) {\n if (marshalledData.byteLength > MAX_RECORD_SIZE) {\n throw errCode(new Error('record too large'), ERRORS.ERR_RECORD_TOO_LARGE);\n }\n const peerId = peerIdFromRoutingKey(key);\n const receivedRecord = unmarshal(marshalledData);\n // extract public key\n const pubKey = await extractPublicKey(peerId, receivedRecord);\n // Record validation\n await validate(pubKey, marshalledData);\n}\n//# sourceMappingURL=validator.js.map","export default async function* parse(source) {\n const matcher = /\\r?\\n/;\n const decoder = new TextDecoder('utf8');\n let buffer = '';\n for await (let chunk of source) {\n if (typeof chunk === 'string') {\n chunk = new TextEncoder().encode(chunk);\n }\n buffer += decoder.decode(chunk, { stream: true });\n const parts = buffer.split(matcher);\n buffer = parts.pop() ?? '';\n for (let i = 0; i < parts.length; i++) {\n yield JSON.parse(parts[i]);\n }\n }\n buffer += decoder.decode();\n if (buffer !== '') {\n yield JSON.parse(buffer);\n }\n}\n//# sourceMappingURL=parse.js.map","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined ?\n\tnew AbortError(errorMessage) :\n\tnew DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined ?\n\t\tgetDOMException('This operation was aborted.') :\n\t\tsignal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, milliseconds, fallback, options) {\n\tlet timer;\n\n\tconst cancelablePromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tresolve(promise);\n\t\t\treturn;\n\t\t}\n\n\t\toptions = {\n\t\t\tcustomTimers: {setTimeout, clearTimeout},\n\t\t\t...options\n\t\t};\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t});\n\t\t}\n\n\t\ttimer = options.customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (typeof fallback === 'function') {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst message = typeof fallback === 'string' ? fallback : `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\tconst timeoutError = fallback instanceof Error ? fallback : new TimeoutError(message);\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\treject(timeoutError);\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t} finally {\n\t\t\t\toptions.customTimers.clearTimeout.call(undefined, timer);\n\t\t\t}\n\t\t})();\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tclearTimeout(timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PriorityQueue_queue;\nimport lowerBound from './lower-bound.js';\nclass PriorityQueue {\n constructor() {\n _PriorityQueue_queue.set(this, []);\n }\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n run,\n };\n if (this.size && __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\")[this.size - 1].priority >= options.priority) {\n __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").push(element);\n return;\n }\n const index = lowerBound(__classPrivateFieldGet(this, _PriorityQueue_queue, \"f\"), element, (a, b) => b.priority - a.priority);\n __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").splice(index, 0, element);\n }\n dequeue() {\n const item = __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").shift();\n return item === null || item === void 0 ? void 0 : item.run;\n }\n filter(options) {\n return __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").length;\n }\n}\n_PriorityQueue_queue = new WeakMap();\nexport default PriorityQueue;\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PQueue_instances, _PQueue_carryoverConcurrencyCount, _PQueue_isIntervalIgnored, _PQueue_intervalCount, _PQueue_intervalCap, _PQueue_interval, _PQueue_intervalEnd, _PQueue_intervalId, _PQueue_timeoutId, _PQueue_queue, _PQueue_queueClass, _PQueue_pending, _PQueue_concurrency, _PQueue_isPaused, _PQueue_throwOnTimeout, _PQueue_doesIntervalAllowAnother_get, _PQueue_doesConcurrentAllowAnother_get, _PQueue_next, _PQueue_onResumeInterval, _PQueue_isIntervalPaused_get, _PQueue_tryToStartAnother, _PQueue_initializeIntervalIfNeeded, _PQueue_onInterval, _PQueue_processQueue, _PQueue_throwOnAbort, _PQueue_onEvent;\nimport { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nThe error thrown by `queue.add()` when a job is aborted before it is run. See `signal`.\n*/\nexport class AbortError extends Error {\n}\n/**\nPromise queue with concurrency control.\n*/\nclass PQueue extends EventEmitter {\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n var _a, _b, _c, _d;\n super();\n _PQueue_instances.add(this);\n _PQueue_carryoverConcurrencyCount.set(this, void 0);\n _PQueue_isIntervalIgnored.set(this, void 0);\n _PQueue_intervalCount.set(this, 0);\n _PQueue_intervalCap.set(this, void 0);\n _PQueue_interval.set(this, void 0);\n _PQueue_intervalEnd.set(this, 0);\n _PQueue_intervalId.set(this, void 0);\n _PQueue_timeoutId.set(this, void 0);\n _PQueue_queue.set(this, void 0);\n _PQueue_queueClass.set(this, void 0);\n _PQueue_pending.set(this, 0);\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n _PQueue_concurrency.set(this, void 0);\n _PQueue_isPaused.set(this, void 0);\n _PQueue_throwOnTimeout.set(this, void 0);\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n \n Applies to each future operation.\n */\n Object.defineProperty(this, \"timeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${(_b = (_a = options.intervalCap) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${(_d = (_c = options.interval) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : ''}\\` (${typeof options.interval})`);\n }\n __classPrivateFieldSet(this, _PQueue_carryoverConcurrencyCount, options.carryoverConcurrencyCount, \"f\");\n __classPrivateFieldSet(this, _PQueue_isIntervalIgnored, options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0, \"f\");\n __classPrivateFieldSet(this, _PQueue_intervalCap, options.intervalCap, \"f\");\n __classPrivateFieldSet(this, _PQueue_interval, options.interval, \"f\");\n __classPrivateFieldSet(this, _PQueue_queue, new options.queueClass(), \"f\");\n __classPrivateFieldSet(this, _PQueue_queueClass, options.queueClass, \"f\");\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n __classPrivateFieldSet(this, _PQueue_throwOnTimeout, options.throwOnTimeout === true, \"f\");\n __classPrivateFieldSet(this, _PQueue_isPaused, options.autoStart === false, \"f\");\n }\n get concurrency() {\n return __classPrivateFieldGet(this, _PQueue_concurrency, \"f\");\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n __classPrivateFieldSet(this, _PQueue_concurrency, newConcurrency, \"f\");\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n }\n async add(function_, options = {}) {\n options = {\n timeout: this.timeout,\n throwOnTimeout: __classPrivateFieldGet(this, _PQueue_throwOnTimeout, \"f\"),\n ...options,\n };\n return new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _PQueue_queue, \"f\").enqueue(async () => {\n var _a;\n var _b, _c;\n __classPrivateFieldSet(this, _PQueue_pending, (_b = __classPrivateFieldGet(this, _PQueue_pending, \"f\"), _b++, _b), \"f\");\n __classPrivateFieldSet(this, _PQueue_intervalCount, (_c = __classPrivateFieldGet(this, _PQueue_intervalCount, \"f\"), _c++, _c), \"f\");\n try {\n // TODO: Use options.signal?.throwIfAborted() when targeting Node.js 18\n if ((_a = options.signal) === null || _a === void 0 ? void 0 : _a.aborted) {\n // TODO: Use ABORT_ERR code when targeting Node.js 16 (https://nodejs.org/docs/latest-v16.x/api/errors.html#abort_err)\n throw new AbortError('The task was aborted.');\n }\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), options.timeout);\n }\n if (options.signal) {\n operation = Promise.race([operation, __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_throwOnAbort).call(this, options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_next).call(this);\n }\n }, options);\n this.emit('add');\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this);\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!__classPrivateFieldGet(this, _PQueue_isPaused, \"f\")) {\n return this;\n }\n __classPrivateFieldSet(this, _PQueue_isPaused, false, \"f\");\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n __classPrivateFieldSet(this, _PQueue_isPaused, true, \"f\");\n }\n /**\n Clear the queue.\n */\n clear() {\n __classPrivateFieldSet(this, _PQueue_queue, new (__classPrivateFieldGet(this, _PQueue_queueClass, \"f\"))(), \"f\");\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n return;\n }\n await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size < limit) {\n return;\n }\n await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'next', () => __classPrivateFieldGet(this, _PQueue_queue, \"f\").size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (__classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n return;\n }\n await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'idle');\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return __classPrivateFieldGet(this, _PQueue_queue, \"f\").size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return __classPrivateFieldGet(this, _PQueue_queue, \"f\").filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return __classPrivateFieldGet(this, _PQueue_pending, \"f\");\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return __classPrivateFieldGet(this, _PQueue_isPaused, \"f\");\n }\n}\n_PQueue_carryoverConcurrencyCount = new WeakMap(), _PQueue_isIntervalIgnored = new WeakMap(), _PQueue_intervalCount = new WeakMap(), _PQueue_intervalCap = new WeakMap(), _PQueue_interval = new WeakMap(), _PQueue_intervalEnd = new WeakMap(), _PQueue_intervalId = new WeakMap(), _PQueue_timeoutId = new WeakMap(), _PQueue_queue = new WeakMap(), _PQueue_queueClass = new WeakMap(), _PQueue_pending = new WeakMap(), _PQueue_concurrency = new WeakMap(), _PQueue_isPaused = new WeakMap(), _PQueue_throwOnTimeout = new WeakMap(), _PQueue_instances = new WeakSet(), _PQueue_doesIntervalAllowAnother_get = function _PQueue_doesIntervalAllowAnother_get() {\n return __classPrivateFieldGet(this, _PQueue_isIntervalIgnored, \"f\") || __classPrivateFieldGet(this, _PQueue_intervalCount, \"f\") < __classPrivateFieldGet(this, _PQueue_intervalCap, \"f\");\n}, _PQueue_doesConcurrentAllowAnother_get = function _PQueue_doesConcurrentAllowAnother_get() {\n return __classPrivateFieldGet(this, _PQueue_pending, \"f\") < __classPrivateFieldGet(this, _PQueue_concurrency, \"f\");\n}, _PQueue_next = function _PQueue_next() {\n var _a;\n __classPrivateFieldSet(this, _PQueue_pending, (_a = __classPrivateFieldGet(this, _PQueue_pending, \"f\"), _a--, _a), \"f\");\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this);\n this.emit('next');\n}, _PQueue_onResumeInterval = function _PQueue_onResumeInterval() {\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onInterval).call(this);\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_initializeIntervalIfNeeded).call(this);\n __classPrivateFieldSet(this, _PQueue_timeoutId, undefined, \"f\");\n}, _PQueue_isIntervalPaused_get = function _PQueue_isIntervalPaused_get() {\n const now = Date.now();\n if (__classPrivateFieldGet(this, _PQueue_intervalId, \"f\") === undefined) {\n const delay = __classPrivateFieldGet(this, _PQueue_intervalEnd, \"f\") - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n __classPrivateFieldSet(this, _PQueue_intervalCount, (__classPrivateFieldGet(this, _PQueue_carryoverConcurrencyCount, \"f\")) ? __classPrivateFieldGet(this, _PQueue_pending, \"f\") : 0, \"f\");\n }\n else {\n // Act as the interval is pending\n if (__classPrivateFieldGet(this, _PQueue_timeoutId, \"f\") === undefined) {\n __classPrivateFieldSet(this, _PQueue_timeoutId, setTimeout(() => {\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onResumeInterval).call(this);\n }, delay), \"f\");\n }\n return true;\n }\n }\n return false;\n}, _PQueue_tryToStartAnother = function _PQueue_tryToStartAnother() {\n if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (__classPrivateFieldGet(this, _PQueue_intervalId, \"f\")) {\n clearInterval(__classPrivateFieldGet(this, _PQueue_intervalId, \"f\"));\n }\n __classPrivateFieldSet(this, _PQueue_intervalId, undefined, \"f\");\n this.emit('empty');\n if (__classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!__classPrivateFieldGet(this, _PQueue_isPaused, \"f\")) {\n const canInitializeInterval = !__classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_isIntervalPaused_get);\n if (__classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_doesIntervalAllowAnother_get) && __classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_doesConcurrentAllowAnother_get)) {\n const job = __classPrivateFieldGet(this, _PQueue_queue, \"f\").dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_initializeIntervalIfNeeded).call(this);\n }\n return true;\n }\n }\n return false;\n}, _PQueue_initializeIntervalIfNeeded = function _PQueue_initializeIntervalIfNeeded() {\n if (__classPrivateFieldGet(this, _PQueue_isIntervalIgnored, \"f\") || __classPrivateFieldGet(this, _PQueue_intervalId, \"f\") !== undefined) {\n return;\n }\n __classPrivateFieldSet(this, _PQueue_intervalId, setInterval(() => {\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onInterval).call(this);\n }, __classPrivateFieldGet(this, _PQueue_interval, \"f\")), \"f\");\n __classPrivateFieldSet(this, _PQueue_intervalEnd, Date.now() + __classPrivateFieldGet(this, _PQueue_interval, \"f\"), \"f\");\n}, _PQueue_onInterval = function _PQueue_onInterval() {\n if (__classPrivateFieldGet(this, _PQueue_intervalCount, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_intervalId, \"f\")) {\n clearInterval(__classPrivateFieldGet(this, _PQueue_intervalId, \"f\"));\n __classPrivateFieldSet(this, _PQueue_intervalId, undefined, \"f\");\n }\n __classPrivateFieldSet(this, _PQueue_intervalCount, __classPrivateFieldGet(this, _PQueue_carryoverConcurrencyCount, \"f\") ? __classPrivateFieldGet(this, _PQueue_pending, \"f\") : 0, \"f\");\n __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n}, _PQueue_processQueue = function _PQueue_processQueue() {\n // eslint-disable-next-line no-empty\n while (__classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this)) { }\n}, _PQueue_throwOnAbort = async function _PQueue_throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n // TODO: Reject with signal.throwIfAborted() when targeting Node.js 18\n // TODO: Use ABORT_ERR code when targeting Node.js 16 (https://nodejs.org/docs/latest-v16.x/api/errors.html#abort_err)\n reject(new AbortError('The task was aborted.'));\n }, { once: true });\n });\n}, _PQueue_onEvent = async function _PQueue_onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n};\nexport default PQueue;\n","/**\n * To guarantee Uint8Array semantics, convert nodejs Buffers\n * into vanilla Uint8Arrays\n */\nexport function asUint8Array(buf) {\n if (globalThis.Buffer != null) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n return buf;\n}\n//# sourceMappingURL=as-uint8array.js.map","import { asUint8Array } from './util/as-uint8array.js';\n/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc(size = 0) {\n if (globalThis.Buffer?.alloc != null) {\n return asUint8Array(globalThis.Buffer.alloc(size));\n }\n return new Uint8Array(size);\n}\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer?.allocUnsafe != null) {\n return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n }\n return new Uint8Array(size);\n}\n//# sourceMappingURL=alloc.js.map","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: {\n decode\n }\n };\n}\nconst string = createCodec('utf8', 'u', (buf) => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, (str) => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', (buf) => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, (str) => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;\n//# sourceMappingURL=bases.js.map","import { asUint8Array } from './util/as-uint8array.js';\nimport bases, {} from './util/bases.js';\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (base == null) {\n throw new Error(`Unsupported encoding \"${encoding}\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n }\n // add multibase prefix\n return base.decoder.decode(`${base.prefix}${string}`); // eslint-disable-line @typescript-eslint/restrict-template-expressions\n}\n//# sourceMappingURL=from-string.js.map","import {} from '@libp2p/interface/content-routing';\nimport { CodeError } from '@libp2p/interface/errors';\nimport {} from '@libp2p/interface/peer-routing';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport { marshal, unmarshal } from 'ipns';\nimport first from 'it-first';\nimport map from 'it-map';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nconst IPNS_PREFIX = uint8ArrayFromString('/ipns/');\nfunction isIPNSKey(key) {\n return uint8ArrayEquals(key.subarray(0, IPNS_PREFIX.byteLength), IPNS_PREFIX);\n}\nconst peerIdFromRoutingKey = (key) => {\n return peerIdFromBytes(key.slice(IPNS_PREFIX.length));\n};\n/**\n * Wrapper class to convert [http-routing-v1 content events](https://specs.ipfs.tech/routing/http-routing-v1/#response-body) into returned values\n */\nexport class DelegatedRoutingV1HttpApiClientContentRouting {\n client;\n constructor(client) {\n this.client = client;\n }\n async *findProviders(cid, options = {}) {\n yield* map(this.client.getProviders(cid, options), (record) => {\n return {\n id: record.ID,\n multiaddrs: record.Addrs ?? [],\n protocols: []\n };\n });\n }\n async provide() {\n // noop\n }\n async put(key, value, options) {\n if (!isIPNSKey(key)) {\n return;\n }\n const peerId = peerIdFromRoutingKey(key);\n const record = unmarshal(value);\n await this.client.putIPNS(peerId, record, options);\n }\n async get(key, options) {\n if (!isIPNSKey(key)) {\n throw new CodeError('Not found', 'ERR_NOT_FOUND');\n }\n const peerId = peerIdFromRoutingKey(key);\n try {\n const record = await this.client.getIPNS(peerId, options);\n return marshal(record);\n }\n catch (err) {\n // ERR_BAD_RESPONSE is thrown when the response had no body, which means\n // the record couldn't be found\n if (err.code === 'ERR_BAD_RESPONSE') {\n throw new CodeError('Not found', 'ERR_NOT_FOUND');\n }\n throw err;\n }\n }\n}\n/**\n * Wrapper class to convert [http-routing-v1](https://specs.ipfs.tech/routing/http-routing-v1/#response-body-0) events into expected libp2p values\n */\nexport class DelegatedRoutingV1HttpApiClientPeerRouting {\n client;\n constructor(client) {\n this.client = client;\n }\n async findPeer(peerId, options = {}) {\n const peer = await first(this.client.getPeers(peerId, options));\n if (peer != null) {\n return {\n id: peer.ID,\n multiaddrs: peer.Addrs,\n protocols: []\n };\n }\n throw new CodeError('Not found', 'ERR_NOT_FOUND');\n }\n async *getClosestPeers(key, options = {}) {\n // noop\n }\n}\n//# sourceMappingURL=routings.js.map","import { contentRouting } from '@libp2p/interface/content-routing';\nimport { CodeError } from '@libp2p/interface/errors';\nimport { setMaxListeners } from '@libp2p/interface/events';\nimport { peerRouting } from '@libp2p/interface/peer-routing';\nimport { logger } from '@libp2p/logger';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { anySignal } from 'any-signal';\nimport toIt from 'browser-readablestream-to-it';\nimport { unmarshal, marshal, peerIdToRoutingKey } from 'ipns';\nimport { ipnsValidator } from 'ipns/validator';\nimport { parse as ndjson } from 'it-ndjson';\nimport defer from 'p-defer';\nimport PQueue from 'p-queue';\nimport { DelegatedRoutingV1HttpApiClientContentRouting, DelegatedRoutingV1HttpApiClientPeerRouting } from './routings.js';\nconst log = logger('delegated-routing-v1-http-api-client');\nconst defaultValues = {\n concurrentRequests: 4,\n timeout: 30e3\n};\nexport class DefaultDelegatedRoutingV1HttpApiClient {\n started;\n httpQueue;\n shutDownController;\n clientUrl;\n timeout;\n contentRouting;\n peerRouting;\n /**\n * Create a new DelegatedContentRouting instance\n */\n constructor(url, init = {}) {\n this.started = false;\n this.shutDownController = new AbortController();\n setMaxListeners(Infinity, this.shutDownController.signal);\n this.httpQueue = new PQueue({\n concurrency: init.concurrentRequests ?? defaultValues.concurrentRequests\n });\n this.clientUrl = url instanceof URL ? url : new URL(url);\n this.timeout = init.timeout ?? defaultValues.timeout;\n this.contentRouting = new DelegatedRoutingV1HttpApiClientContentRouting(this);\n this.peerRouting = new DelegatedRoutingV1HttpApiClientPeerRouting(this);\n }\n get [contentRouting]() {\n return this.contentRouting;\n }\n get [peerRouting]() {\n return this.peerRouting;\n }\n isStarted() {\n return this.started;\n }\n start() {\n this.started = true;\n }\n stop() {\n this.httpQueue.clear();\n this.shutDownController.abort();\n this.started = false;\n }\n async *getProviders(cid, options = {}) {\n log('getProviders starts: %c', cid);\n const signal = anySignal([this.shutDownController.signal, options.signal, AbortSignal.timeout(this.timeout)]);\n const onStart = defer();\n const onFinish = defer();\n void this.httpQueue.add(async () => {\n onStart.resolve();\n return onFinish.promise;\n });\n try {\n await onStart.promise;\n // https://specs.ipfs.tech/routing/http-routing-v1/\n const resource = `${this.clientUrl}routing/v1/providers/${cid.toString()}`;\n const getOptions = { headers: { Accept: 'application/x-ndjson' }, signal };\n const res = await fetch(resource, getOptions);\n if (res.body == null) {\n throw new CodeError('Routing response had no body', 'ERR_BAD_RESPONSE');\n }\n const contentType = res.headers.get('Content-Type');\n if (contentType === 'application/json') {\n const body = await res.json();\n for (const provider of body.Providers) {\n const record = this.#handleProviderRecords(provider);\n if (record != null) {\n yield record;\n }\n }\n }\n else {\n for await (const provider of ndjson(toIt(res.body))) {\n const record = this.#handleProviderRecords(provider);\n if (record != null) {\n yield record;\n }\n }\n }\n }\n catch (err) {\n log.error('getProviders errored:', err);\n }\n finally {\n signal.clear();\n onFinish.resolve();\n log('getProviders finished: %c', cid);\n }\n }\n async *getPeers(peerId, options = {}) {\n log('getPeers starts: %c', peerId);\n const signal = anySignal([this.shutDownController.signal, options.signal, AbortSignal.timeout(this.timeout)]);\n const onStart = defer();\n const onFinish = defer();\n void this.httpQueue.add(async () => {\n onStart.resolve();\n return onFinish.promise;\n });\n try {\n await onStart.promise;\n // https://specs.ipfs.tech/routing/http-routing-v1/\n const resource = `${this.clientUrl}routing/v1/peers/${peerId.toCID().toString()}`;\n const getOptions = { headers: { Accept: 'application/x-ndjson' }, signal };\n const res = await fetch(resource, getOptions);\n if (res.body == null) {\n throw new CodeError('Routing response had no body', 'ERR_BAD_RESPONSE');\n }\n const contentType = res.headers.get('Content-Type');\n if (contentType === 'application/json') {\n const body = await res.json();\n for (const peer of body.Peers) {\n const record = this.#handlePeerRecords(peerId, peer);\n if (record != null) {\n yield record;\n }\n }\n }\n else {\n for await (const peer of ndjson(toIt(res.body))) {\n const record = this.#handlePeerRecords(peerId, peer);\n if (record != null) {\n yield record;\n }\n }\n }\n }\n catch (err) {\n log.error('getPeers errored:', err);\n }\n finally {\n signal.clear();\n onFinish.resolve();\n log('getPeers finished: %c', peerId);\n }\n }\n async getIPNS(peerId, options = {}) {\n log('getIPNS starts: %c', peerId);\n const signal = anySignal([this.shutDownController.signal, options.signal, AbortSignal.timeout(this.timeout)]);\n const onStart = defer();\n const onFinish = defer();\n void this.httpQueue.add(async () => {\n onStart.resolve();\n return onFinish.promise;\n });\n try {\n await onStart.promise;\n // https://specs.ipfs.tech/routing/http-routing-v1/\n const resource = `${this.clientUrl}routing/v1/ipns/${peerId.toCID().toString()}`;\n const getOptions = { headers: { Accept: 'application/vnd.ipfs.ipns-record' }, signal };\n const res = await fetch(resource, getOptions);\n if (res.body == null) {\n throw new CodeError('GET ipns response had no body', 'ERR_BAD_RESPONSE');\n }\n const body = new Uint8Array(await res.arrayBuffer());\n await ipnsValidator(peerIdToRoutingKey(peerId), body);\n return unmarshal(body);\n }\n finally {\n signal.clear();\n onFinish.resolve();\n log('getIPNS finished: %c', peerId);\n }\n }\n async putIPNS(peerId, record, options = {}) {\n log('getIPNS starts: %c', peerId);\n const signal = anySignal([this.shutDownController.signal, options.signal, AbortSignal.timeout(this.timeout)]);\n const onStart = defer();\n const onFinish = defer();\n void this.httpQueue.add(async () => {\n onStart.resolve();\n return onFinish.promise;\n });\n try {\n await onStart.promise;\n const body = marshal(record);\n // https://specs.ipfs.tech/routing/http-routing-v1/\n const resource = `${this.clientUrl}routing/v1/ipns/${peerId.toCID().toString()}`;\n const getOptions = { method: 'PUT', headers: { 'Content-Type': 'application/vnd.ipfs.ipns-record' }, body, signal };\n const res = await fetch(resource, getOptions);\n if (res.status !== 200) {\n throw new CodeError('PUT ipns response had status other than 200', 'ERR_BAD_RESPONSE');\n }\n }\n finally {\n signal.clear();\n onFinish.resolve();\n log('getIPNS finished: %c', peerId);\n }\n }\n #handleProviderRecords(record) {\n if (record.Schema === 'peer') {\n // Peer schema can have additional, user-defined, fields.\n record.ID = peerIdFromString(record.ID);\n record.Addrs = record.Addrs.map(multiaddr);\n record.Protocols = record.Protocols ?? [];\n return record;\n }\n if (record.Schema === 'bitswap') {\n // Bitswap schema is deprecated, was incorrectly used when server had no\n // information about actual protocols, so we convert it to peer result\n // without protocol information\n return {\n Schema: 'peer',\n ID: peerIdFromString(record.ID),\n Addrs: record.Addrs.map(multiaddr),\n Protocols: record.Protocol != null ? [record.Protocol] : []\n };\n }\n if (record.ID != null && Array.isArray(record.Addrs)) {\n return {\n Schema: 'peer',\n ID: peerIdFromString(record.ID),\n Addrs: record.Addrs.map(multiaddr),\n Protocols: Array.isArray(record.Protocols) ? record.Protocols : []\n };\n }\n }\n #handlePeerRecords(peerId, record) {\n if (record.Schema === 'peer') {\n // Peer schema can have additional, user-defined, fields.\n record.ID = peerIdFromString(record.ID);\n record.Addrs = record.Addrs.map(multiaddr);\n if (peerId.equals(record.ID)) {\n return record;\n }\n }\n }\n}\n//# sourceMappingURL=client.js.map","/**\n * @packageDocumentation\n *\n * A client implementation of the IPFS [Delegated Routing V1 HTTP API](https://specs.ipfs.tech/routing/http-routing-v1/) that can be used to interact with any compliant server implementation.\n *\n * @example\n *\n * ```typescript\n * import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client'\n * import { CID } from 'multiformats/cid'\n *\n * const client = createDelegatedRoutingV1HttpApiClient('https://example.org')\n *\n * for await (const prov of getProviders(CID.parse('QmFoo'))) {\n * // ...\n * }\n * ```\n *\n * ### How to use with libp2p\n *\n * The client can be configured as a libp2p service, this will enable it as both a {@link https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.content_routing.ContentRouting.html | ContentRouting} and a {@link https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_routing.PeerRouting.html | PeerRouting} implementation\n *\n * @example\n *\n * ```typescript\n * import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client'\n * import { createLibp2p } from 'libp2p'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const client = createDelegatedRoutingV1HttpApiClient('https://example.org')\n * const libp2p = await createLibp2p({\n * // other config here\n * services: {\n * delegatedRouting: client\n * }\n * })\n *\n * // later this will use the configured HTTP gateway\n * await libp2p.peerRouting.findPeer(peerIdFromString('QmFoo'))\n * ```\n */\nimport { DefaultDelegatedRoutingV1HttpApiClient } from './client.js';\n/**\n * Create and return a client to use with a Routing V1 HTTP API server\n */\nexport function createDelegatedRoutingV1HttpApiClient(url, init = {}) {\n return new DefaultDelegatedRoutingV1HttpApiClient(new URL(url), init);\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Generate, import, and export PeerIDs.\n *\n * A Peer ID is the SHA-256 [multihash](https://github.com/multiformats/multihash) of a public key.\n *\n * The public key is a base64 encoded string of a protobuf containing an RSA DER buffer. This uses a node buffer to pass the base64 encoded public key protobuf to the multihash for ID generation.\n *\n * @example\n *\n * ```TypeScript\n * import { createEd25519PeerId } from '@libp2p/peer-id-factory'\n *\n * const peerId = await createEd25519PeerId()\n * console.log(peerId.toString())\n * ```\n *\n * ```bash\n * 12D3KooWRm8J3iL796zPFi2EtGGtUJn58AG67gcqzMFHZnnsTzqD\n * ```\n */\nimport { generateKeyPair, marshalPrivateKey, unmarshalPrivateKey, marshalPublicKey, unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { peerIdFromKeys, peerIdFromBytes } from '@libp2p/peer-id';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { PeerIdProto } from './proto.js';\nexport const createEd25519PeerId = async () => {\n const key = await generateKeyPair('Ed25519');\n const id = await createFromPrivKey(key);\n if (id.type === 'Ed25519') {\n return id;\n }\n throw new Error(`Generated unexpected PeerId type \"${id.type}\"`);\n};\nexport const createSecp256k1PeerId = async () => {\n const key = await generateKeyPair('secp256k1');\n const id = await createFromPrivKey(key);\n if (id.type === 'secp256k1') {\n return id;\n }\n throw new Error(`Generated unexpected PeerId type \"${id.type}\"`);\n};\nexport const createRSAPeerId = async (opts) => {\n const key = await generateKeyPair('RSA', opts?.bits ?? 2048);\n const id = await createFromPrivKey(key);\n if (id.type === 'RSA') {\n return id;\n }\n throw new Error(`Generated unexpected PeerId type \"${id.type}\"`);\n};\nexport async function createFromPubKey(publicKey) {\n return peerIdFromKeys(marshalPublicKey(publicKey));\n}\nexport async function createFromPrivKey(privateKey) {\n return peerIdFromKeys(marshalPublicKey(privateKey.public), marshalPrivateKey(privateKey));\n}\nexport function exportToProtobuf(peerId, excludePrivateKey) {\n return PeerIdProto.encode({\n id: peerId.multihash.bytes,\n pubKey: peerId.publicKey,\n privKey: excludePrivateKey === true || peerId.privateKey == null ? undefined : peerId.privateKey\n });\n}\nexport async function createFromProtobuf(buf) {\n const { id, privKey, pubKey } = PeerIdProto.decode(buf);\n return createFromParts(id ?? new Uint8Array(0), privKey, pubKey);\n}\nexport async function createFromJSON(obj) {\n return createFromParts(uint8ArrayFromString(obj.id, 'base58btc'), obj.privKey != null ? uint8ArrayFromString(obj.privKey, 'base64pad') : undefined, obj.pubKey != null ? uint8ArrayFromString(obj.pubKey, 'base64pad') : undefined);\n}\nasync function createFromParts(multihash, privKey, pubKey) {\n if (privKey != null) {\n const key = await unmarshalPrivateKey(privKey);\n return createFromPrivKey(key);\n }\n else if (pubKey != null) {\n const key = unmarshalPublicKey(pubKey);\n return createFromPubKey(key);\n }\n const peerId = peerIdFromBytes(multihash);\n if (peerId.type !== 'Ed25519' && peerId.type !== 'secp256k1' && peerId.type !== 'RSA') {\n // should not be possible since `multihash` is derived from keys and these\n // are the cryptographic peer id types\n throw new Error('Supplied PeerID is invalid');\n }\n return peerId;\n}\n//# sourceMappingURL=index.js.map","// Generated by CoffeeScript 1.12.7\n(function() {\n var Netmask, atob, chr, chr0, chrA, chra, ip2long, long2ip;\n\n long2ip = function(long) {\n var a, b, c, d;\n a = (long & (0xff << 24)) >>> 24;\n b = (long & (0xff << 16)) >>> 16;\n c = (long & (0xff << 8)) >>> 8;\n d = long & 0xff;\n return [a, b, c, d].join('.');\n };\n\n ip2long = function(ip) {\n var b, c, i, j, n, ref;\n b = [];\n for (i = j = 0; j <= 3; i = ++j) {\n if (ip.length === 0) {\n break;\n }\n if (i > 0) {\n if (ip[0] !== '.') {\n throw new Error('Invalid IP');\n }\n ip = ip.substring(1);\n }\n ref = atob(ip), n = ref[0], c = ref[1];\n ip = ip.substring(c);\n b.push(n);\n }\n if (ip.length !== 0) {\n throw new Error('Invalid IP');\n }\n switch (b.length) {\n case 1:\n if (b[0] > 0xFFFFFFFF) {\n throw new Error('Invalid IP');\n }\n return b[0] >>> 0;\n case 2:\n if (b[0] > 0xFF || b[1] > 0xFFFFFF) {\n throw new Error('Invalid IP');\n }\n return (b[0] << 24 | b[1]) >>> 0;\n case 3:\n if (b[0] > 0xFF || b[1] > 0xFF || b[2] > 0xFFFF) {\n throw new Error('Invalid IP');\n }\n return (b[0] << 24 | b[1] << 16 | b[2]) >>> 0;\n case 4:\n if (b[0] > 0xFF || b[1] > 0xFF || b[2] > 0xFF || b[3] > 0xFF) {\n throw new Error('Invalid IP');\n }\n return (b[0] << 24 | b[1] << 16 | b[2] << 8 | b[3]) >>> 0;\n default:\n throw new Error('Invalid IP');\n }\n };\n\n chr = function(b) {\n return b.charCodeAt(0);\n };\n\n chr0 = chr('0');\n\n chra = chr('a');\n\n chrA = chr('A');\n\n atob = function(s) {\n var base, dmax, i, n, start;\n n = 0;\n base = 10;\n dmax = '9';\n i = 0;\n if (s.length > 1 && s[i] === '0') {\n if (s[i + 1] === 'x' || s[i + 1] === 'X') {\n i += 2;\n base = 16;\n } else if ('0' <= s[i + 1] && s[i + 1] <= '9') {\n i++;\n base = 8;\n dmax = '7';\n }\n }\n start = i;\n while (i < s.length) {\n if ('0' <= s[i] && s[i] <= dmax) {\n n = (n * base + (chr(s[i]) - chr0)) >>> 0;\n } else if (base === 16) {\n if ('a' <= s[i] && s[i] <= 'f') {\n n = (n * base + (10 + chr(s[i]) - chra)) >>> 0;\n } else if ('A' <= s[i] && s[i] <= 'F') {\n n = (n * base + (10 + chr(s[i]) - chrA)) >>> 0;\n } else {\n break;\n }\n } else {\n break;\n }\n if (n > 0xFFFFFFFF) {\n throw new Error('too large');\n }\n i++;\n }\n if (i === start) {\n throw new Error('empty octet');\n }\n return [n, i];\n };\n\n Netmask = (function() {\n function Netmask(net, mask) {\n var error, i, j, ref;\n if (typeof net !== 'string') {\n throw new Error(\"Missing `net' parameter\");\n }\n if (!mask) {\n ref = net.split('/', 2), net = ref[0], mask = ref[1];\n }\n if (!mask) {\n mask = 32;\n }\n if (typeof mask === 'string' && mask.indexOf('.') > -1) {\n try {\n this.maskLong = ip2long(mask);\n } catch (error1) {\n error = error1;\n throw new Error(\"Invalid mask: \" + mask);\n }\n for (i = j = 32; j >= 0; i = --j) {\n if (this.maskLong === (0xffffffff << (32 - i)) >>> 0) {\n this.bitmask = i;\n break;\n }\n }\n } else if (mask || mask === 0) {\n this.bitmask = parseInt(mask, 10);\n this.maskLong = 0;\n if (this.bitmask > 0) {\n this.maskLong = (0xffffffff << (32 - this.bitmask)) >>> 0;\n }\n } else {\n throw new Error(\"Invalid mask: empty\");\n }\n try {\n this.netLong = (ip2long(net) & this.maskLong) >>> 0;\n } catch (error1) {\n error = error1;\n throw new Error(\"Invalid net address: \" + net);\n }\n if (!(this.bitmask <= 32)) {\n throw new Error(\"Invalid mask for ip4: \" + mask);\n }\n this.size = Math.pow(2, 32 - this.bitmask);\n this.base = long2ip(this.netLong);\n this.mask = long2ip(this.maskLong);\n this.hostmask = long2ip(~this.maskLong);\n this.first = this.bitmask <= 30 ? long2ip(this.netLong + 1) : this.base;\n this.last = this.bitmask <= 30 ? long2ip(this.netLong + this.size - 2) : long2ip(this.netLong + this.size - 1);\n this.broadcast = this.bitmask <= 30 ? long2ip(this.netLong + this.size - 1) : void 0;\n }\n\n Netmask.prototype.contains = function(ip) {\n if (typeof ip === 'string' && (ip.indexOf('/') > 0 || ip.split('.').length !== 4)) {\n ip = new Netmask(ip);\n }\n if (ip instanceof Netmask) {\n return this.contains(ip.base) && this.contains(ip.broadcast || ip.last);\n } else {\n return (ip2long(ip) & this.maskLong) >>> 0 === (this.netLong & this.maskLong) >>> 0;\n }\n };\n\n Netmask.prototype.next = function(count) {\n if (count == null) {\n count = 1;\n }\n return new Netmask(long2ip(this.netLong + (this.size * count)), this.mask);\n };\n\n Netmask.prototype.forEach = function(fn) {\n var index, lastLong, long;\n long = ip2long(this.first);\n lastLong = ip2long(this.last);\n index = 0;\n while (long <= lastLong) {\n fn(long2ip(long), long, index);\n index++;\n long++;\n }\n };\n\n Netmask.prototype.toString = function() {\n return this.base + \"/\" + this.bitmask;\n };\n\n return Netmask;\n\n })();\n\n exports.ip2long = ip2long;\n\n exports.long2ip = long2ip;\n\n exports.Netmask = Netmask;\n\n}).call(this);\n","import { isIPv4, isIPv6 } from '@chainsafe/is-ip';\nimport { Netmask } from 'netmask';\nconst PRIVATE_IP_RANGES = [\n '0.0.0.0/8',\n '10.0.0.0/8',\n '100.64.0.0/10',\n '127.0.0.0/8',\n '169.254.0.0/16',\n '172.16.0.0/12',\n '192.0.0.0/24',\n '192.0.0.0/29',\n '192.0.0.8/32',\n '192.0.0.9/32',\n '192.0.0.10/32',\n '192.0.0.170/32',\n '192.0.0.171/32',\n '192.0.2.0/24',\n '192.31.196.0/24',\n '192.52.193.0/24',\n '192.88.99.0/24',\n '192.168.0.0/16',\n '192.175.48.0/24',\n '198.18.0.0/15',\n '198.51.100.0/24',\n '203.0.113.0/24',\n '240.0.0.0/4',\n '255.255.255.255/32'\n];\nconst NETMASK_RANGES = PRIVATE_IP_RANGES.map(ipRange => new Netmask(ipRange));\nfunction ipv4Check(ipAddr) {\n for (const r of NETMASK_RANGES) {\n if (r.contains(ipAddr))\n return true;\n }\n return false;\n}\nfunction isIpv4MappedIpv6(ipAddr) {\n return /^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(ipAddr);\n}\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc4291#section-2.5.5.2\n */\nfunction ipv4MappedIpv6Check(ipAddr) {\n const parts = ipAddr.split(':');\n if (parts.length < 2) {\n return false;\n }\n const octet34 = parts[parts.length - 1].padStart(4, '0');\n const octet12 = parts[parts.length - 2].padStart(4, '0');\n const ip4 = `${parseInt(octet12.substring(0, 2), 16)}.${parseInt(octet12.substring(2), 16)}.${parseInt(octet34.substring(0, 2), 16)}.${parseInt(octet34.substring(2), 16)}`;\n return ipv4Check(ip4);\n}\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc4291#section-2.2 example 3\n */\nfunction isIpv4EmbeddedIpv6(ipAddr) {\n return /^::ffff:([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$/.test(ipAddr);\n}\nfunction ipv4EmbeddedIpv6Check(ipAddr) {\n const parts = ipAddr.split(':');\n const ip4 = parts[parts.length - 1];\n return ipv4Check(ip4);\n}\nfunction ipv6Check(ipAddr) {\n return /^::$/.test(ipAddr) ||\n /^::1$/.test(ipAddr) ||\n /^64:ff9b::([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$/.test(ipAddr) ||\n /^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(ipAddr) ||\n /^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(ipAddr) ||\n /^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(ipAddr) ||\n /^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(ipAddr) ||\n /^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(ipAddr) ||\n /^f[c-d]([0-9a-fA-F]{2,2}):/i.test(ipAddr) ||\n /^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(ipAddr) ||\n /^ff([0-9a-fA-F]{2,2}):/i.test(ipAddr);\n}\nexport function isPrivateIp(ip) {\n if (isIPv4(ip))\n return ipv4Check(ip);\n else if (isIpv4MappedIpv6(ip))\n return ipv4MappedIpv6Check(ip);\n else if (isIpv4EmbeddedIpv6(ip))\n return ipv4EmbeddedIpv6Check(ip);\n else if (isIPv6(ip))\n return ipv6Check(ip);\n else\n return undefined;\n}\n//# sourceMappingURL=private-ip.js.map","/**\n * The prefix to use in the protocol\n */\nexport const PROTOCOL_PREFIX = 'libp2p';\n/**\n * The name to use in the protocol\n */\nexport const PROTOCOL_NAME = 'autonat';\n/**\n * The version to use in the protocol\n */\nexport const PROTOCOL_VERSION = '1.0.0';\nexport const TIMEOUT = 30000;\nexport const STARTUP_DELAY = 5000;\nexport const REFRESH_INTERVAL = 60000;\nexport const MAX_INBOUND_STREAMS = 1;\nexport const MAX_OUTBOUND_STREAMS = 1;\n//# sourceMappingURL=constants.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Message;\n(function (Message) {\n let MessageType;\n (function (MessageType) {\n MessageType[\"DIAL\"] = \"DIAL\";\n MessageType[\"DIAL_RESPONSE\"] = \"DIAL_RESPONSE\";\n })(MessageType = Message.MessageType || (Message.MessageType = {}));\n let __MessageTypeValues;\n (function (__MessageTypeValues) {\n __MessageTypeValues[__MessageTypeValues[\"DIAL\"] = 0] = \"DIAL\";\n __MessageTypeValues[__MessageTypeValues[\"DIAL_RESPONSE\"] = 1] = \"DIAL_RESPONSE\";\n })(__MessageTypeValues || (__MessageTypeValues = {}));\n (function (MessageType) {\n MessageType.codec = () => {\n return enumeration(__MessageTypeValues);\n };\n })(MessageType = Message.MessageType || (Message.MessageType = {}));\n let ResponseStatus;\n (function (ResponseStatus) {\n ResponseStatus[\"OK\"] = \"OK\";\n ResponseStatus[\"E_DIAL_ERROR\"] = \"E_DIAL_ERROR\";\n ResponseStatus[\"E_DIAL_REFUSED\"] = \"E_DIAL_REFUSED\";\n ResponseStatus[\"E_BAD_REQUEST\"] = \"E_BAD_REQUEST\";\n ResponseStatus[\"E_INTERNAL_ERROR\"] = \"E_INTERNAL_ERROR\";\n })(ResponseStatus = Message.ResponseStatus || (Message.ResponseStatus = {}));\n let __ResponseStatusValues;\n (function (__ResponseStatusValues) {\n __ResponseStatusValues[__ResponseStatusValues[\"OK\"] = 0] = \"OK\";\n __ResponseStatusValues[__ResponseStatusValues[\"E_DIAL_ERROR\"] = 100] = \"E_DIAL_ERROR\";\n __ResponseStatusValues[__ResponseStatusValues[\"E_DIAL_REFUSED\"] = 101] = \"E_DIAL_REFUSED\";\n __ResponseStatusValues[__ResponseStatusValues[\"E_BAD_REQUEST\"] = 200] = \"E_BAD_REQUEST\";\n __ResponseStatusValues[__ResponseStatusValues[\"E_INTERNAL_ERROR\"] = 300] = \"E_INTERNAL_ERROR\";\n })(__ResponseStatusValues || (__ResponseStatusValues = {}));\n (function (ResponseStatus) {\n ResponseStatus.codec = () => {\n return enumeration(__ResponseStatusValues);\n };\n })(ResponseStatus = Message.ResponseStatus || (Message.ResponseStatus = {}));\n let PeerInfo;\n (function (PeerInfo) {\n let _codec;\n PeerInfo.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.id != null) {\n w.uint32(10);\n w.bytes(obj.id);\n }\n if (obj.addrs != null) {\n for (const value of obj.addrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n addrs: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.id = reader.bytes();\n break;\n case 2:\n obj.addrs.push(reader.bytes());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PeerInfo.encode = (obj) => {\n return encodeMessage(obj, PeerInfo.codec());\n };\n PeerInfo.decode = (buf) => {\n return decodeMessage(buf, PeerInfo.codec());\n };\n })(PeerInfo = Message.PeerInfo || (Message.PeerInfo = {}));\n let Dial;\n (function (Dial) {\n let _codec;\n Dial.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.peer != null) {\n w.uint32(10);\n Message.PeerInfo.codec().encode(obj.peer, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.peer = Message.PeerInfo.codec().decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Dial.encode = (obj) => {\n return encodeMessage(obj, Dial.codec());\n };\n Dial.decode = (buf) => {\n return decodeMessage(buf, Dial.codec());\n };\n })(Dial = Message.Dial || (Message.Dial = {}));\n let DialResponse;\n (function (DialResponse) {\n let _codec;\n DialResponse.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.status != null) {\n w.uint32(8);\n Message.ResponseStatus.codec().encode(obj.status, w);\n }\n if (obj.statusText != null) {\n w.uint32(18);\n w.string(obj.statusText);\n }\n if (obj.addr != null) {\n w.uint32(26);\n w.bytes(obj.addr);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.status = Message.ResponseStatus.codec().decode(reader);\n break;\n case 2:\n obj.statusText = reader.string();\n break;\n case 3:\n obj.addr = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n DialResponse.encode = (obj) => {\n return encodeMessage(obj, DialResponse.codec());\n };\n DialResponse.decode = (buf) => {\n return decodeMessage(buf, DialResponse.codec());\n };\n })(DialResponse = Message.DialResponse || (Message.DialResponse = {}));\n let _codec;\n Message.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null) {\n w.uint32(8);\n Message.MessageType.codec().encode(obj.type, w);\n }\n if (obj.dial != null) {\n w.uint32(18);\n Message.Dial.codec().encode(obj.dial, w);\n }\n if (obj.dialResponse != null) {\n w.uint32(26);\n Message.DialResponse.codec().encode(obj.dialResponse, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.type = Message.MessageType.codec().decode(reader);\n break;\n case 2:\n obj.dial = Message.Dial.codec().decode(reader, reader.uint32());\n break;\n case 3:\n obj.dialResponse = Message.DialResponse.codec().decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Message.encode = (obj) => {\n return encodeMessage(obj, Message.codec());\n };\n Message.decode = (buf) => {\n return decodeMessage(buf, Message.codec());\n };\n})(Message || (Message = {}));\n//# sourceMappingURL=index.js.map","import { CodeError, ERR_TIMEOUT, setMaxListeners } from '@libp2p/interface';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport { createEd25519PeerId } from '@libp2p/peer-id-factory';\nimport { isPrivateIp } from '@libp2p/utils/private-ip';\nimport { multiaddr, protocols } from '@multiformats/multiaddr';\nimport first from 'it-first';\nimport * as lp from 'it-length-prefixed';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { MAX_INBOUND_STREAMS, MAX_OUTBOUND_STREAMS, PROTOCOL_NAME, PROTOCOL_PREFIX, PROTOCOL_VERSION, REFRESH_INTERVAL, STARTUP_DELAY, TIMEOUT } from './constants.js';\nimport { Message } from './pb/index.js';\n// if more than 3 peers manage to dial us on what we believe to be our external\n// IP then we are convinced that it is, in fact, our external IP\n// https://github.com/libp2p/specs/blob/master/autonat/README.md#autonat-protocol\nconst REQUIRED_SUCCESSFUL_DIALS = 4;\nexport class AutoNATService {\n components;\n startupDelay;\n refreshInterval;\n protocol;\n timeout;\n maxInboundStreams;\n maxOutboundStreams;\n verifyAddressTimeout;\n started;\n log;\n constructor(components, init) {\n this.components = components;\n this.log = components.logger.forComponent('libp2p:autonat');\n this.started = false;\n this.protocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;\n this.timeout = init.timeout ?? TIMEOUT;\n this.maxInboundStreams = init.maxInboundStreams ?? MAX_INBOUND_STREAMS;\n this.maxOutboundStreams = init.maxOutboundStreams ?? MAX_OUTBOUND_STREAMS;\n this.startupDelay = init.startupDelay ?? STARTUP_DELAY;\n this.refreshInterval = init.refreshInterval ?? REFRESH_INTERVAL;\n this._verifyExternalAddresses = this._verifyExternalAddresses.bind(this);\n }\n isStarted() {\n return this.started;\n }\n async start() {\n if (this.started) {\n return;\n }\n await this.components.registrar.handle(this.protocol, (data) => {\n void this.handleIncomingAutonatStream(data)\n .catch(err => {\n this.log.error('error handling incoming autonat stream', err);\n });\n }, {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams\n });\n this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.startupDelay);\n this.started = true;\n }\n async stop() {\n await this.components.registrar.unhandle(this.protocol);\n clearTimeout(this.verifyAddressTimeout);\n this.started = false;\n }\n /**\n * Handle an incoming AutoNAT request\n */\n async handleIncomingAutonatStream(data) {\n const signal = AbortSignal.timeout(this.timeout);\n const onAbort = () => {\n data.stream.abort(new CodeError('handleIncomingAutonatStream timeout', ERR_TIMEOUT));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n // this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning\n // appearing in the console\n setMaxListeners(Infinity, signal);\n const ourHosts = this.components.addressManager.getAddresses()\n .map(ma => ma.toOptions().host);\n try {\n const self = this;\n await pipe(data.stream, (source) => lp.decode(source), async function* (stream) {\n const buf = await first(stream);\n if (buf == null) {\n self.log('no message received');\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'No message was sent'\n }\n });\n return;\n }\n let request;\n try {\n request = Message.decode(buf);\n }\n catch (err) {\n self.log.error('could not decode message', err);\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'Could not decode message'\n }\n });\n return;\n }\n const dialRequest = request.dial;\n if (dialRequest == null) {\n self.log.error('dial was missing from message');\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'No Dial message found in message'\n }\n });\n return;\n }\n let peerId;\n const peer = dialRequest.peer;\n if (peer == null || peer.id == null) {\n self.log.error('PeerId missing from message');\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'missing peer info'\n }\n });\n return;\n }\n try {\n peerId = peerIdFromBytes(peer.id);\n }\n catch (err) {\n self.log.error('invalid PeerId', err);\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'bad peer id'\n }\n });\n return;\n }\n self.log('incoming request from %p', peerId);\n // reject any dial requests that arrive via relays\n if (!data.connection.remotePeer.equals(peerId)) {\n self.log('target peer %p did not equal sending peer %p', peerId, data.connection.remotePeer);\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_BAD_REQUEST,\n statusText: 'peer id mismatch'\n }\n });\n return;\n }\n // get a list of multiaddrs to dial\n const multiaddrs = peer.addrs\n .map(buf => multiaddr(buf))\n .filter(ma => {\n const isFromSameHost = ma.toOptions().host === data.connection.remoteAddr.toOptions().host;\n self.log.trace('request to dial %a was sent from %a is same host %s', ma, data.connection.remoteAddr, isFromSameHost);\n // skip any Multiaddrs where the target node's IP does not match the sending node's IP\n return isFromSameHost;\n })\n .filter(ma => {\n const host = ma.toOptions().host;\n const isPublicIp = !(isPrivateIp(host) ?? false);\n self.log.trace('host %s was public %s', host, isPublicIp);\n // don't try to dial private addresses\n return isPublicIp;\n })\n .filter(ma => {\n const host = ma.toOptions().host;\n const isNotOurHost = !ourHosts.includes(host);\n self.log.trace('host %s was not our host %s', host, isNotOurHost);\n // don't try to dial nodes on the same host as us\n return isNotOurHost;\n })\n .filter(ma => {\n const isSupportedTransport = Boolean(self.components.transportManager.dialTransportForMultiaddr(ma));\n self.log.trace('transport for %a is supported %s', ma, isSupportedTransport);\n // skip any Multiaddrs that have transports we do not support\n return isSupportedTransport;\n })\n .map(ma => {\n if (ma.getPeerId() == null) {\n // make sure we have the PeerId as part of the Multiaddr\n ma = ma.encapsulate(`/p2p/${peerId.toString()}`);\n }\n return ma;\n });\n // make sure we have something to dial\n if (multiaddrs.length === 0) {\n self.log('no valid multiaddrs for %p in message', peerId);\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_DIAL_REFUSED,\n statusText: 'no dialable addresses'\n }\n });\n return;\n }\n self.log('dial multiaddrs %s for peer %p', multiaddrs.map(ma => ma.toString()).join(', '), peerId);\n let errorMessage = '';\n let lastMultiaddr = multiaddrs[0];\n for await (const multiaddr of multiaddrs) {\n let connection;\n lastMultiaddr = multiaddr;\n try {\n connection = await self.components.connectionManager.openConnection(multiaddr, {\n signal\n });\n if (!connection.remoteAddr.equals(multiaddr)) {\n self.log.error('tried to dial %a but dialed %a', multiaddr, connection.remoteAddr);\n throw new Error('Unexpected remote address');\n }\n self.log('Success %p', peerId);\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.OK,\n addr: connection.remoteAddr.decapsulateCode(protocols('p2p').code).bytes\n }\n });\n return;\n }\n catch (err) {\n self.log('could not dial %p', peerId, err);\n errorMessage = err.message;\n }\n finally {\n if (connection != null) {\n await connection.close();\n }\n }\n }\n yield Message.encode({\n type: Message.MessageType.DIAL_RESPONSE,\n dialResponse: {\n status: Message.ResponseStatus.E_DIAL_ERROR,\n statusText: errorMessage,\n addr: lastMultiaddr.bytes\n }\n });\n }, (source) => lp.encode(source), data.stream);\n }\n catch (err) {\n this.log.error('error handling incoming autonat stream', err);\n }\n finally {\n signal.removeEventListener('abort', onAbort);\n }\n }\n _verifyExternalAddresses() {\n void this.verifyExternalAddresses()\n .catch(err => {\n this.log.error('error verifying external address', err);\n });\n }\n /**\n * Our multicodec topology noticed a new peer that supports autonat\n */\n async verifyExternalAddresses() {\n clearTimeout(this.verifyAddressTimeout);\n // Do not try to push if we are not running\n if (!this.isStarted()) {\n return;\n }\n const addressManager = this.components.addressManager;\n const multiaddrs = addressManager.getObservedAddrs()\n .filter(ma => {\n const options = ma.toOptions();\n return !(isPrivateIp(options.host) ?? false);\n });\n if (multiaddrs.length === 0) {\n this.log('no public addresses found, not requesting verification');\n this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.refreshInterval);\n return;\n }\n const signal = AbortSignal.timeout(this.timeout);\n // this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning\n // appearing in the console\n setMaxListeners(Infinity, signal);\n const self = this;\n try {\n this.log('verify multiaddrs %s', multiaddrs.map(ma => ma.toString()).join(', '));\n const request = Message.encode({\n type: Message.MessageType.DIAL,\n dial: {\n peer: {\n id: this.components.peerId.toBytes(),\n addrs: multiaddrs.map(map => map.bytes)\n }\n }\n });\n // find some random peers\n const randomPeer = await createEd25519PeerId();\n const randomCid = randomPeer.toBytes();\n const results = {};\n const networkSegments = [];\n const verifyAddress = async (peer) => {\n let onAbort = () => { };\n try {\n this.log('asking %p to verify multiaddr', peer.id);\n const connection = await self.components.connectionManager.openConnection(peer.id, {\n signal\n });\n const stream = await connection.newStream(this.protocol, {\n signal\n });\n onAbort = () => { stream.abort(new CodeError('verifyAddress timeout', ERR_TIMEOUT)); };\n signal.addEventListener('abort', onAbort, { once: true });\n const buf = await pipe([request], (source) => lp.encode(source), stream, (source) => lp.decode(source), async (stream) => first(stream));\n if (buf == null) {\n this.log('no response received from %p', connection.remotePeer);\n return undefined;\n }\n const response = Message.decode(buf);\n if (response.type !== Message.MessageType.DIAL_RESPONSE || response.dialResponse == null) {\n this.log('invalid autonat response from %p', connection.remotePeer);\n return undefined;\n }\n if (response.dialResponse.status === Message.ResponseStatus.OK) {\n // make sure we use different network segments\n const options = connection.remoteAddr.toOptions();\n let segment;\n if (options.family === 4) {\n const octets = options.host.split('.');\n segment = octets[0];\n }\n else if (options.family === 6) {\n const octets = options.host.split(':');\n segment = octets[0];\n }\n else {\n this.log('remote address \"%s\" was not IP4 or IP6?', options.host);\n return undefined;\n }\n if (networkSegments.includes(segment)) {\n this.log('already have response from network segment %d - %s', segment, options.host);\n return undefined;\n }\n networkSegments.push(segment);\n }\n return response.dialResponse;\n }\n catch (err) {\n this.log.error('error asking remote to verify multiaddr', err);\n }\n finally {\n signal.removeEventListener('abort', onAbort);\n }\n };\n for await (const dialResponse of parallel(map(this.components.peerRouting.getClosestPeers(randomCid, {\n signal\n }), (peer) => async () => verifyAddress(peer)), {\n concurrency: REQUIRED_SUCCESSFUL_DIALS\n })) {\n try {\n if (dialResponse == null) {\n continue;\n }\n // they either told us which address worked/didn't work, or we only sent them one address\n const addr = dialResponse.addr == null ? multiaddrs[0] : multiaddr(dialResponse.addr);\n this.log('autonat response for %a is %s', addr, dialResponse.status);\n if (dialResponse.status === Message.ResponseStatus.E_BAD_REQUEST) {\n // the remote could not parse our request\n continue;\n }\n if (dialResponse.status === Message.ResponseStatus.E_DIAL_REFUSED) {\n // the remote could not honour our request\n continue;\n }\n if (dialResponse.addr == null && multiaddrs.length > 1) {\n // we sent the remote multiple addrs but they didn't tell us which ones worked/didn't work\n continue;\n }\n if (!multiaddrs.some(ma => ma.equals(addr))) {\n this.log('peer reported %a as %s but it was not in our observed address list', addr, dialResponse.status);\n continue;\n }\n const addrStr = addr.toString();\n if (results[addrStr] == null) {\n results[addrStr] = { success: 0, failure: 0 };\n }\n if (dialResponse.status === Message.ResponseStatus.OK) {\n results[addrStr].success++;\n }\n else if (dialResponse.status === Message.ResponseStatus.E_DIAL_ERROR) {\n results[addrStr].failure++;\n }\n if (results[addrStr].success === REQUIRED_SUCCESSFUL_DIALS) {\n // we are now convinced\n this.log('%a is externally dialable', addr);\n addressManager.confirmObservedAddr(addr);\n return;\n }\n if (results[addrStr].failure === REQUIRED_SUCCESSFUL_DIALS) {\n // we are now unconvinced\n this.log('%a is not externally dialable', addr);\n addressManager.removeObservedAddr(addr);\n return;\n }\n }\n catch (err) {\n this.log.error('could not verify external address', err);\n }\n }\n }\n finally {\n this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.refreshInterval);\n }\n }\n}\n//# sourceMappingURL=autonat.js.map","/**\n * @packageDocumentation\n *\n * The AutoNAT service uses the [AutoNAT protocol](https://docs.libp2p.io/concepts/nat/autonat/).\n * The service confirms addresses are dialable by remote peers, and updates the list it advertises.\n *\n * The service dials randomly selected peers with a request to verify it's external addresses.\n * The request includes a list of public multiaddrs (addressManager.getObservedAddrs()).\n * The remote peers dial that list and respond with the results.\n *\n * The AutoNAT service uses those responses to either:\n * - addressManager.confirmObservedAddr(addr)\n * - addressManager.removeObservedAddr(addr)\n *\n * The result list of candidates and confirmed addresses can be found\n * at addressManager.getObservedAddrs()\n *\n * @example\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { autoNAT } from '@libp2p/autonat'\n *\n * const node = await createLibp2p({\n * // ...other options\n * services: {\n * autoNAT: autoNAT()\n * }\n * })\n * ```\n */\nimport { AutoNATService } from './autonat.js';\nexport function autoNAT(init = {}) {\n return (components) => {\n return new AutoNATService(components, init);\n };\n}\n//# sourceMappingURL=index.js.map","import { multiaddr } from '@multiformats/multiaddr';\n/*\n * Valid combinations\n */\nexport const DNS4 = base('dns4');\nexport const DNS6 = base('dns6');\nexport const DNSADDR = base('dnsaddr');\nexport const DNS = or(base('dns'), DNSADDR, DNS4, DNS6);\nexport const IP = or(base('ip4'), base('ip6'));\nexport const TCP = or(and(IP, base('tcp')), and(DNS, base('tcp')));\nexport const UDP = and(IP, base('udp'));\nexport const UTP = and(UDP, base('utp'));\nexport const QUIC = and(UDP, base('quic'));\nexport const QUICV1 = and(UDP, base('quic-v1'));\nconst _WebSockets = or(and(TCP, base('ws')), and(DNS, base('ws')));\nexport const WebSockets = or(and(_WebSockets, base('p2p')), _WebSockets);\nconst _WebSocketsSecure = or(and(TCP, base('wss')), and(DNS, base('wss')), and(TCP, base('tls'), base('ws')), and(DNS, base('tls'), base('ws')));\nexport const WebSocketsSecure = or(and(_WebSocketsSecure, base('p2p')), _WebSocketsSecure);\nexport const HTTP = or(and(TCP, base('http')), and(IP, base('http')), and(DNS, base('http')));\nexport const HTTPS = or(and(TCP, base('https')), and(IP, base('https')), and(DNS, base('https')));\nconst _WebRTCDirect = and(UDP, base('webrtc-direct'), base('certhash'));\nexport const WebRTCDirect = or(and(_WebRTCDirect, base('p2p')), _WebRTCDirect);\nconst _WebTransport = and(QUICV1, base('webtransport'), base('certhash'), base('certhash'));\nexport const WebTransport = or(and(_WebTransport, base('p2p')), _WebTransport);\n/**\n * @deprecated\n */\nexport const P2PWebRTCStar = or(and(WebSockets, base('p2p-webrtc-star'), base('p2p')), and(WebSocketsSecure, base('p2p-webrtc-star'), base('p2p')), and(WebSockets, base('p2p-webrtc-star')), and(WebSocketsSecure, base('p2p-webrtc-star')));\nexport const WebSocketStar = or(and(WebSockets, base('p2p-websocket-star'), base('p2p')), and(WebSocketsSecure, base('p2p-websocket-star'), base('p2p')), and(WebSockets, base('p2p-websocket-star')), and(WebSocketsSecure, base('p2p-websocket-star')));\n/**\n * @deprecated\n */\nexport const P2PWebRTCDirect = or(and(HTTP, base('p2p-webrtc-direct'), base('p2p')), and(HTTPS, base('p2p-webrtc-direct'), base('p2p')), and(HTTP, base('p2p-webrtc-direct')), and(HTTPS, base('p2p-webrtc-direct')));\nexport const Reliable = or(_WebSockets, _WebSocketsSecure, HTTP, HTTPS, P2PWebRTCStar, P2PWebRTCDirect, TCP, UTP, QUIC, DNS, WebRTCDirect, WebTransport);\n// Unlike ws-star, stardust can run over any transport thus removing the requirement for websockets (but don't even think about running a stardust server over webrtc-star ;) )\nexport const Stardust = or(and(Reliable, base('p2p-stardust'), base('p2p')), and(Reliable, base('p2p-stardust')));\nconst _P2P = or(and(Reliable, base('p2p')), P2PWebRTCStar, P2PWebRTCDirect, WebRTCDirect, WebTransport, base('p2p'));\nconst _Circuit = or(and(_P2P, base('p2p-circuit'), _P2P), and(_P2P, base('p2p-circuit')), and(base('p2p-circuit'), _P2P), and(Reliable, base('p2p-circuit')), and(base('p2p-circuit'), Reliable), base('p2p-circuit'));\nconst CircuitRecursive = () => or(and(_Circuit, CircuitRecursive), _Circuit);\nexport const Circuit = CircuitRecursive();\nexport const P2P = or(and(Circuit, _P2P, Circuit), and(_P2P, Circuit), and(Circuit, _P2P), Circuit, _P2P);\nexport const IPFS = P2P;\nexport const WebRTC = or(and(Circuit, base('webrtc'), base('p2p')), and(Circuit, base('webrtc')), and(Reliable, base('webrtc'), base('p2p')), and(Reliable, base('webrtc')), base('webrtc'));\n/*\n * Validation funcs\n */\nfunction makeMatchesFunction(partialMatch) {\n function matches(a) {\n let ma;\n try {\n ma = multiaddr(a);\n }\n catch (err) { // catch error\n return false; // also if it's invalid it's probably not matching as well so return false\n }\n const out = partialMatch(ma.protoNames());\n if (out === null) {\n return false;\n }\n if (out === true || out === false) {\n return out;\n }\n return out.length === 0;\n }\n return matches;\n}\nfunction and(...args) {\n function partialMatch(a) {\n if (a.length < args.length) {\n return null;\n }\n let out = a;\n args.some((arg) => {\n out = typeof arg === 'function'\n ? arg().partialMatch(a)\n : arg.partialMatch(a);\n if (Array.isArray(out)) {\n a = out;\n }\n if (out === null) {\n return true;\n }\n return false;\n });\n return out;\n }\n return {\n toString: function () { return '{ ' + args.join(' ') + ' }'; },\n input: args,\n matches: makeMatchesFunction(partialMatch),\n partialMatch\n };\n}\nfunction or(...args) {\n function partialMatch(a) {\n let out = null;\n args.some((arg) => {\n const res = typeof arg === 'function'\n ? arg().partialMatch(a)\n : arg.partialMatch(a);\n if (res != null) {\n out = res;\n return true;\n }\n return false;\n });\n return out;\n }\n const result = {\n toString: function () { return '{ ' + args.join(' ') + ' }'; },\n input: args,\n matches: makeMatchesFunction(partialMatch),\n partialMatch\n };\n return result;\n}\nfunction base(n) {\n const name = n;\n function matches(a) {\n let ma;\n try {\n ma = multiaddr(a);\n }\n catch (err) { // catch error\n return false; // also if it's invalid it's probably not matching as well so return false\n }\n const pnames = ma.protoNames();\n if (pnames.length === 1 && pnames[0] === name) {\n return true;\n }\n return false;\n }\n function partialMatch(protos) {\n if (protos.length === 0) {\n return null;\n }\n if (protos[0] === name) {\n return protos.slice(1);\n }\n return null;\n }\n return {\n toString: function () { return name; },\n matches,\n partialMatch\n };\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * The configured bootstrap peers will be discovered after the configured timeout. This will ensure there are some peers in the peer store for the node to use to discover other peers.\n *\n * They will be tagged with a tag with the name `'bootstrap'` tag, the value `50` and it will expire after two minutes which means the nodes connections may be closed if the maximum number of connections is reached.\n *\n * Clients that need constant connections to bootstrap nodes (e.g. browsers) can set the TTL to `Infinity`.\n *\n * @example Configuring a list of bootstrap nodes\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { bootstrap } from '@libp2p/bootstrap'\n *\n * const libp2p = await createLibp2p({\n * peerDiscovery: [\n * bootstrap({\n * list: [\n * // a list of bootstrap peer multiaddrs to connect to on node startup\n * '/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ',\n * '/dnsaddr/bootstrap.libp2p.io/ipfs/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN',\n * '/dnsaddr/bootstrap.libp2p.io/ipfs/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa'\n * ]\n * })\n * ]\n * })\n *\n * libp2p.addEventListener('peer:discovery', (evt) => {\n * console.log('found peer: ', evt.detail.toString())\n * })\n * ```\n */\nimport { TypedEventEmitter, peerDiscoverySymbol, serviceCapabilities } from '@libp2p/interface';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { P2P } from '@multiformats/mafmt';\nimport { multiaddr } from '@multiformats/multiaddr';\nconst DEFAULT_BOOTSTRAP_TAG_NAME = 'bootstrap';\nconst DEFAULT_BOOTSTRAP_TAG_VALUE = 50;\nconst DEFAULT_BOOTSTRAP_TAG_TTL = 120000;\nconst DEFAULT_BOOTSTRAP_DISCOVERY_TIMEOUT = 1000;\n/**\n * Emits 'peer' events on a regular interval for each peer in the provided list.\n */\nclass Bootstrap extends TypedEventEmitter {\n static tag = 'bootstrap';\n log;\n timer;\n list;\n timeout;\n components;\n _init;\n constructor(components, options = { list: [] }) {\n if (options.list == null || options.list.length === 0) {\n throw new Error('Bootstrap requires a list of peer addresses');\n }\n super();\n this.components = components;\n this.log = components.logger.forComponent('libp2p:bootstrap');\n this.timeout = options.timeout ?? DEFAULT_BOOTSTRAP_DISCOVERY_TIMEOUT;\n this.list = [];\n for (const candidate of options.list) {\n if (!P2P.matches(candidate)) {\n this.log.error('Invalid multiaddr');\n continue;\n }\n const ma = multiaddr(candidate);\n const peerIdStr = ma.getPeerId();\n if (peerIdStr == null) {\n this.log.error('Invalid bootstrap multiaddr without peer id');\n continue;\n }\n const peerData = {\n id: peerIdFromString(peerIdStr),\n multiaddrs: [ma]\n };\n this.list.push(peerData);\n }\n this._init = options;\n }\n [peerDiscoverySymbol] = this;\n [Symbol.toStringTag] = '@libp2p/bootstrap';\n [serviceCapabilities] = [\n '@libp2p/peer-discovery'\n ];\n isStarted() {\n return Boolean(this.timer);\n }\n /**\n * Start emitting events\n */\n start() {\n if (this.isStarted()) {\n return;\n }\n this.log('Starting bootstrap node discovery, discovering peers after %s ms', this.timeout);\n this.timer = setTimeout(() => {\n void this._discoverBootstrapPeers()\n .catch(err => {\n this.log.error(err);\n });\n }, this.timeout);\n }\n /**\n * Emit each address in the list as a PeerInfo\n */\n async _discoverBootstrapPeers() {\n if (this.timer == null) {\n return;\n }\n for (const peerData of this.list) {\n await this.components.peerStore.merge(peerData.id, {\n tags: {\n [this._init.tagName ?? DEFAULT_BOOTSTRAP_TAG_NAME]: {\n value: this._init.tagValue ?? DEFAULT_BOOTSTRAP_TAG_VALUE,\n ttl: this._init.tagTTL ?? DEFAULT_BOOTSTRAP_TAG_TTL\n }\n }\n });\n // check we are still running\n if (this.timer == null) {\n return;\n }\n this.safeDispatchEvent('peer', { detail: peerData });\n }\n }\n /**\n * Stop emitting events\n */\n stop() {\n if (this.timer != null) {\n clearTimeout(this.timer);\n }\n this.timer = undefined;\n }\n}\nexport function bootstrap(init) {\n return (components) => new Bootstrap(components, init);\n}\n//# sourceMappingURL=index.js.map","export const codes = {\n ERR_SIGNATURE_NOT_VALID: 'ERR_SIGNATURE_NOT_VALID'\n};\n//# sourceMappingURL=errors.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Envelope;\n(function (Envelope) {\n let _codec;\n Envelope.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.publicKey != null && obj.publicKey.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.publicKey);\n }\n if ((obj.payloadType != null && obj.payloadType.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.payloadType);\n }\n if ((obj.payload != null && obj.payload.byteLength > 0)) {\n w.uint32(26);\n w.bytes(obj.payload);\n }\n if ((obj.signature != null && obj.signature.byteLength > 0)) {\n w.uint32(42);\n w.bytes(obj.signature);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n publicKey: new Uint8Array(0),\n payloadType: new Uint8Array(0),\n payload: new Uint8Array(0),\n signature: new Uint8Array(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.publicKey = reader.bytes();\n break;\n case 2:\n obj.payloadType = reader.bytes();\n break;\n case 3:\n obj.payload = reader.bytes();\n break;\n case 5:\n obj.signature = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Envelope.encode = (obj) => {\n return encodeMessage(obj, Envelope.codec());\n };\n Envelope.decode = (buf) => {\n return decodeMessage(buf, Envelope.codec());\n };\n})(Envelope || (Envelope = {}));\n//# sourceMappingURL=envelope.js.map","import { unmarshalPrivateKey, unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { CodeError } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8arraysFromString } from 'uint8arrays/from-string';\nimport { codes } from '../errors.js';\nimport { Envelope as Protobuf } from './envelope.js';\nexport class RecordEnvelope {\n /**\n * Unmarshal a serialized Envelope protobuf message\n */\n static createFromProtobuf = async (data) => {\n const envelopeData = Protobuf.decode(data);\n const peerId = await peerIdFromKeys(envelopeData.publicKey);\n return new RecordEnvelope({\n peerId,\n payloadType: envelopeData.payloadType,\n payload: envelopeData.payload,\n signature: envelopeData.signature\n });\n };\n /**\n * Seal marshals the given Record, places the marshaled bytes inside an Envelope\n * and signs it with the given peerId's private key\n */\n static seal = async (record, peerId) => {\n if (peerId.privateKey == null) {\n throw new Error('Missing private key');\n }\n const domain = record.domain;\n const payloadType = record.codec;\n const payload = record.marshal();\n const signData = formatSignaturePayload(domain, payloadType, payload);\n const key = await unmarshalPrivateKey(peerId.privateKey);\n const signature = await key.sign(signData.subarray());\n return new RecordEnvelope({\n peerId,\n payloadType,\n payload,\n signature\n });\n };\n /**\n * Open and certify a given marshalled envelope.\n * Data is unmarshalled and the signature validated for the given domain.\n */\n static openAndCertify = async (data, domain) => {\n const envelope = await RecordEnvelope.createFromProtobuf(data);\n const valid = await envelope.validate(domain);\n if (!valid) {\n throw new CodeError('envelope signature is not valid for the given domain', codes.ERR_SIGNATURE_NOT_VALID);\n }\n return envelope;\n };\n peerId;\n payloadType;\n payload;\n signature;\n marshaled;\n /**\n * The Envelope is responsible for keeping an arbitrary signed record\n * by a libp2p peer.\n */\n constructor(init) {\n const { peerId, payloadType, payload, signature } = init;\n this.peerId = peerId;\n this.payloadType = payloadType;\n this.payload = payload;\n this.signature = signature;\n }\n /**\n * Marshal the envelope content\n */\n marshal() {\n if (this.peerId.publicKey == null) {\n throw new Error('Missing public key');\n }\n if (this.marshaled == null) {\n this.marshaled = Protobuf.encode({\n publicKey: this.peerId.publicKey,\n payloadType: this.payloadType,\n payload: this.payload.subarray(),\n signature: this.signature\n });\n }\n return this.marshaled;\n }\n /**\n * Verifies if the other Envelope is identical to this one\n */\n equals(other) {\n return uint8ArrayEquals(this.marshal(), other.marshal());\n }\n /**\n * Validate envelope data signature for the given domain\n */\n async validate(domain) {\n const signData = formatSignaturePayload(domain, this.payloadType, this.payload);\n if (this.peerId.publicKey == null) {\n throw new Error('Missing public key');\n }\n const key = unmarshalPublicKey(this.peerId.publicKey);\n return key.verify(signData.subarray(), this.signature);\n }\n}\n/**\n * Helper function that prepares a Uint8Array to sign or verify a signature\n */\nconst formatSignaturePayload = (domain, payloadType, payload) => {\n // When signing, a peer will prepare a Uint8Array by concatenating the following:\n // - The length of the domain separation string string in bytes\n // - The domain separation string, encoded as UTF-8\n // - The length of the payload_type field in bytes\n // - The value of the payload_type field\n // - The length of the payload field in bytes\n // - The value of the payload field\n const domainUint8Array = uint8arraysFromString(domain);\n const domainLength = varint.encode(domainUint8Array.byteLength);\n const payloadTypeLength = varint.encode(payloadType.length);\n const payloadLength = varint.encode(payload.length);\n return new Uint8ArrayList(domainLength, domainUint8Array, payloadTypeLength, payloadType, payloadLength, payload);\n};\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * Provides strategies ensure arrays are equivalent.\n *\n * @example\n *\n * ```typescript\n * import { arrayEquals } from '@libp2p/utils/array-equals'\n * import { multiaddr } from '@multformats/multiaddr'\n *\n * const ma1 = multiaddr('/ip4/127.0.0.1/tcp/9000'),\n * const ma2 = multiaddr('/ip4/82.41.53.1/tcp/9000')\n *\n * console.info(arrayEquals([ma1], [ma1])) // true\n * console.info(arrayEquals([ma1], [ma2])) // false\n * ```\n */\n/**\n * Verify if two arrays of non primitive types with the \"equals\" function are equal.\n * Compatible with multiaddr, peer-id and others.\n */\nexport function arrayEquals(a, b) {\n const sort = (a, b) => a.toString().localeCompare(b.toString());\n if (a.length !== b.length) {\n return false;\n }\n b.sort(sort);\n return a.sort(sort).every((item, index) => b[index].equals(item));\n}\n//# sourceMappingURL=array-equals.js.map","// The domain string used for peer records contained in a Envelope.\nexport const ENVELOPE_DOMAIN_PEER_RECORD = 'libp2p-peer-record';\n// The type hint used to identify peer records in a Envelope.\n// Defined in https://github.com/multiformats/multicodec/blob/master/table.csv\n// with name \"libp2p-peer-record\"\nexport const ENVELOPE_PAYLOAD_TYPE_PEER_RECORD = Uint8Array.from([3, 1]);\n//# sourceMappingURL=consts.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var PeerRecord;\n(function (PeerRecord) {\n let AddressInfo;\n (function (AddressInfo) {\n let _codec;\n AddressInfo.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.multiaddr != null && obj.multiaddr.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.multiaddr);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n multiaddr: new Uint8Array(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.multiaddr = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n AddressInfo.encode = (obj) => {\n return encodeMessage(obj, AddressInfo.codec());\n };\n AddressInfo.decode = (buf) => {\n return decodeMessage(buf, AddressInfo.codec());\n };\n })(AddressInfo = PeerRecord.AddressInfo || (PeerRecord.AddressInfo = {}));\n let _codec;\n PeerRecord.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.peerId != null && obj.peerId.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.peerId);\n }\n if ((obj.seq != null && obj.seq !== 0n)) {\n w.uint32(16);\n w.uint64(obj.seq);\n }\n if (obj.addresses != null) {\n for (const value of obj.addresses) {\n w.uint32(26);\n PeerRecord.AddressInfo.codec().encode(value, w);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n peerId: new Uint8Array(0),\n seq: 0n,\n addresses: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.peerId = reader.bytes();\n break;\n case 2:\n obj.seq = reader.uint64();\n break;\n case 3:\n obj.addresses.push(PeerRecord.AddressInfo.codec().decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PeerRecord.encode = (obj) => {\n return encodeMessage(obj, PeerRecord.codec());\n };\n PeerRecord.decode = (buf) => {\n return decodeMessage(buf, PeerRecord.codec());\n };\n})(PeerRecord || (PeerRecord = {}));\n//# sourceMappingURL=peer-record.js.map","import { peerIdFromBytes } from '@libp2p/peer-id';\nimport { arrayEquals } from '@libp2p/utils/array-equals';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { ENVELOPE_DOMAIN_PEER_RECORD, ENVELOPE_PAYLOAD_TYPE_PEER_RECORD } from './consts.js';\nimport { PeerRecord as Protobuf } from './peer-record.js';\n/**\n * The PeerRecord is used for distributing peer routing records across the network.\n * It contains the peer's reachable listen addresses.\n */\nexport class PeerRecord {\n /**\n * Unmarshal Peer Record Protobuf\n */\n static createFromProtobuf = (buf) => {\n const peerRecord = Protobuf.decode(buf);\n const peerId = peerIdFromBytes(peerRecord.peerId);\n const multiaddrs = (peerRecord.addresses ?? []).map((a) => multiaddr(a.multiaddr));\n const seqNumber = peerRecord.seq;\n return new PeerRecord({ peerId, multiaddrs, seqNumber });\n };\n static DOMAIN = ENVELOPE_DOMAIN_PEER_RECORD;\n static CODEC = ENVELOPE_PAYLOAD_TYPE_PEER_RECORD;\n peerId;\n multiaddrs;\n seqNumber;\n domain = PeerRecord.DOMAIN;\n codec = PeerRecord.CODEC;\n marshaled;\n constructor(init) {\n const { peerId, multiaddrs, seqNumber } = init;\n this.peerId = peerId;\n this.multiaddrs = multiaddrs ?? [];\n this.seqNumber = seqNumber ?? BigInt(Date.now());\n }\n /**\n * Marshal a record to be used in an envelope\n */\n marshal() {\n if (this.marshaled == null) {\n this.marshaled = Protobuf.encode({\n peerId: this.peerId.toBytes(),\n seq: BigInt(this.seqNumber),\n addresses: this.multiaddrs.map((m) => ({\n multiaddr: m.bytes\n }))\n });\n }\n return this.marshaled;\n }\n /**\n * Returns true if `this` record equals the `other`\n */\n equals(other) {\n if (!(other instanceof PeerRecord)) {\n return false;\n }\n // Validate PeerId\n if (!this.peerId.equals(other.peerId)) {\n return false;\n }\n // Validate seqNumber\n if (this.seqNumber !== other.seqNumber) {\n return false;\n }\n // Validate multiaddrs\n if (!arrayEquals(this.multiaddrs, other.multiaddrs)) {\n return false;\n }\n return true;\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * This module makes it easy to send and receive length-prefixed Protobuf encoded\n * messages over streams.\n *\n * @example\n *\n * ```typescript\n * import { pbStream } from 'it-protobuf-stream'\n * import { MessageType } from './src/my-message-type.js'\n *\n * // RequestType and ResponseType have been generate from `.proto` files and have\n * // `.encode` and `.decode` methods for serialization/deserialization\n *\n * const stream = pbStream(duplex)\n *\n * // write a message to the stream\n * stream.write({\n * foo: 'bar'\n * }, MessageType)\n *\n * // read a message from the stream\n * const res = await stream.read(MessageType)\n * ```\n */\nimport { lpStream } from 'it-length-prefixed-stream';\nexport function pbStream(duplex, opts) {\n const lp = lpStream(duplex, opts);\n const W = {\n read: async (proto, options) => {\n // readLP, decode\n const value = await lp.read(options);\n return proto.decode(value);\n },\n write: async (message, proto, options) => {\n // encode, writeLP\n await lp.write(proto.encode(message), options);\n },\n writeV: async (messages, proto, options) => {\n // encode, writeLP\n await lp.writeV(messages.map(message => proto.encode(message)), options);\n },\n pb: (proto) => {\n return {\n read: async (options) => W.read(proto, options),\n write: async (d, options) => W.write(d, proto, options),\n writeV: async (d, options) => W.writeV(d, proto, options),\n unwrap: () => W\n };\n },\n unwrap: () => {\n return lp.unwrap();\n }\n };\n return W;\n}\n//# sourceMappingURL=index.js.map","const second = 1000;\nconst minute = 60 * second;\n/**\n * Multicodec code\n */\nexport const CIRCUIT_PROTO_CODE = 290;\n/**\n * The maximum number of relay reservations the relay server will accept\n */\nexport const DEFAULT_MAX_RESERVATION_STORE_SIZE = 15;\n/**\n * How often to check for reservation expiry\n */\nexport const DEFAULT_MAX_RESERVATION_CLEAR_INTERVAL = 300 * second;\n/**\n * How often to check for reservation expiry\n */\nexport const DEFAULT_MAX_RESERVATION_TTL = 2 * 60 * minute;\n/**\n * How many reservation attempts to make in parallel\n */\nexport const DEFAULT_RESERVATION_CONCURRENCY = 1;\n/**\n * How long to wait for a reservation attempt to finsih\n */\nexport const DEFAULT_RESERVATION_COMPLETION_TIMEOUT = 1000;\n/**\n * How long to let the reservation attempt queue to grow\n */\nexport const DEFAULT_MAX_RESERVATION_QUEUE_LENGTH = 100;\nexport const RELAY_SOURCE_TAG = 'circuit-relay-source';\nexport const RELAY_TAG = 'circuit-relay-relay';\n// circuit v2 connection limits\n// https://github.com/libp2p/go-libp2p/blob/master/p2p/protocol/circuitv2/relay/resources.go#L61-L66\n// 2 min is the default connection duration\nexport const DEFAULT_DURATION_LIMIT = 2 * minute;\n// 128k is the default data limit\nexport const DEFAULT_DATA_LIMIT = BigInt(1 << 17);\n/**\n * The hop protocol\n */\nexport const RELAY_V2_HOP_CODEC = '/libp2p/circuit/relay/0.2.0/hop';\n/**\n * the stop protocol\n */\nexport const RELAY_V2_STOP_CODEC = '/libp2p/circuit/relay/0.2.0/stop';\n/**\n * Hop messages must be exchanged inside this timeout\n */\nexport const DEFAULT_HOP_TIMEOUT = 30 * second;\n/**\n * How long to wait before starting to advertise the relay service\n */\nexport const DEFAULT_ADVERT_BOOT_DELAY = 30 * second;\nexport const MAX_CONNECTIONS = 300;\nexport const ERR_NO_ROUTERS_AVAILABLE = 'ERR_NO_ROUTERS_AVAILABLE';\nexport const ERR_RELAYED_DIAL = 'ERR_RELAYED_DIAL';\nexport const ERR_HOP_REQUEST_FAILED = 'ERR_HOP_REQUEST_FAILED';\nexport const ERR_TRANSFER_LIMIT_EXCEEDED = 'ERR_TRANSFER_LIMIT_EXCEEDED';\nexport const DEFAULT_DISCOVERY_FILTER_SIZE = 4096;\nexport const DEFAULT_DISCOVERY_FILTER_ERROR_RATE = 0.001;\n//# sourceMappingURL=constants.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { CodeError, decodeMessage, encodeMessage, enumeration, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var HopMessage;\n(function (HopMessage) {\n let Type;\n (function (Type) {\n Type[\"RESERVE\"] = \"RESERVE\";\n Type[\"CONNECT\"] = \"CONNECT\";\n Type[\"STATUS\"] = \"STATUS\";\n })(Type = HopMessage.Type || (HopMessage.Type = {}));\n let __TypeValues;\n (function (__TypeValues) {\n __TypeValues[__TypeValues[\"RESERVE\"] = 0] = \"RESERVE\";\n __TypeValues[__TypeValues[\"CONNECT\"] = 1] = \"CONNECT\";\n __TypeValues[__TypeValues[\"STATUS\"] = 2] = \"STATUS\";\n })(__TypeValues || (__TypeValues = {}));\n (function (Type) {\n Type.codec = () => {\n return enumeration(__TypeValues);\n };\n })(Type = HopMessage.Type || (HopMessage.Type = {}));\n let _codec;\n HopMessage.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null) {\n w.uint32(8);\n HopMessage.Type.codec().encode(obj.type, w);\n }\n if (obj.peer != null) {\n w.uint32(18);\n Peer.codec().encode(obj.peer, w);\n }\n if (obj.reservation != null) {\n w.uint32(26);\n Reservation.codec().encode(obj.reservation, w);\n }\n if (obj.limit != null) {\n w.uint32(34);\n Limit.codec().encode(obj.limit, w);\n }\n if (obj.status != null) {\n w.uint32(40);\n Status.codec().encode(obj.status, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.type = HopMessage.Type.codec().decode(reader);\n break;\n }\n case 2: {\n obj.peer = Peer.codec().decode(reader, reader.uint32(), {\n limits: opts.limits?.peer\n });\n break;\n }\n case 3: {\n obj.reservation = Reservation.codec().decode(reader, reader.uint32(), {\n limits: opts.limits?.reservation\n });\n break;\n }\n case 4: {\n obj.limit = Limit.codec().decode(reader, reader.uint32(), {\n limits: opts.limits?.limit\n });\n break;\n }\n case 5: {\n obj.status = Status.codec().decode(reader);\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n HopMessage.encode = (obj) => {\n return encodeMessage(obj, HopMessage.codec());\n };\n HopMessage.decode = (buf, opts) => {\n return decodeMessage(buf, HopMessage.codec(), opts);\n };\n})(HopMessage || (HopMessage = {}));\nexport var StopMessage;\n(function (StopMessage) {\n let Type;\n (function (Type) {\n Type[\"CONNECT\"] = \"CONNECT\";\n Type[\"STATUS\"] = \"STATUS\";\n })(Type = StopMessage.Type || (StopMessage.Type = {}));\n let __TypeValues;\n (function (__TypeValues) {\n __TypeValues[__TypeValues[\"CONNECT\"] = 0] = \"CONNECT\";\n __TypeValues[__TypeValues[\"STATUS\"] = 1] = \"STATUS\";\n })(__TypeValues || (__TypeValues = {}));\n (function (Type) {\n Type.codec = () => {\n return enumeration(__TypeValues);\n };\n })(Type = StopMessage.Type || (StopMessage.Type = {}));\n let _codec;\n StopMessage.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null) {\n w.uint32(8);\n StopMessage.Type.codec().encode(obj.type, w);\n }\n if (obj.peer != null) {\n w.uint32(18);\n Peer.codec().encode(obj.peer, w);\n }\n if (obj.limit != null) {\n w.uint32(26);\n Limit.codec().encode(obj.limit, w);\n }\n if (obj.status != null) {\n w.uint32(32);\n Status.codec().encode(obj.status, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.type = StopMessage.Type.codec().decode(reader);\n break;\n }\n case 2: {\n obj.peer = Peer.codec().decode(reader, reader.uint32(), {\n limits: opts.limits?.peer\n });\n break;\n }\n case 3: {\n obj.limit = Limit.codec().decode(reader, reader.uint32(), {\n limits: opts.limits?.limit\n });\n break;\n }\n case 4: {\n obj.status = Status.codec().decode(reader);\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n StopMessage.encode = (obj) => {\n return encodeMessage(obj, StopMessage.codec());\n };\n StopMessage.decode = (buf, opts) => {\n return decodeMessage(buf, StopMessage.codec(), opts);\n };\n})(StopMessage || (StopMessage = {}));\nexport var Peer;\n(function (Peer) {\n let _codec;\n Peer.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.id != null && obj.id.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.id);\n }\n if (obj.addrs != null) {\n for (const value of obj.addrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {\n id: uint8ArrayAlloc(0),\n addrs: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.id = reader.bytes();\n break;\n }\n case 2: {\n if (opts.limits?.addrs != null && obj.addrs.length === opts.limits.addrs) {\n throw new CodeError('decode error - map field \"addrs\" had too many elements', 'ERR_MAX_LENGTH');\n }\n obj.addrs.push(reader.bytes());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Peer.encode = (obj) => {\n return encodeMessage(obj, Peer.codec());\n };\n Peer.decode = (buf, opts) => {\n return decodeMessage(buf, Peer.codec(), opts);\n };\n})(Peer || (Peer = {}));\nexport var Reservation;\n(function (Reservation) {\n let _codec;\n Reservation.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.expire != null && obj.expire !== 0n)) {\n w.uint32(8);\n w.uint64(obj.expire);\n }\n if (obj.addrs != null) {\n for (const value of obj.addrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (obj.voucher != null) {\n w.uint32(26);\n w.bytes(obj.voucher);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {\n expire: 0n,\n addrs: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.expire = reader.uint64();\n break;\n }\n case 2: {\n if (opts.limits?.addrs != null && obj.addrs.length === opts.limits.addrs) {\n throw new CodeError('decode error - map field \"addrs\" had too many elements', 'ERR_MAX_LENGTH');\n }\n obj.addrs.push(reader.bytes());\n break;\n }\n case 3: {\n obj.voucher = reader.bytes();\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Reservation.encode = (obj) => {\n return encodeMessage(obj, Reservation.codec());\n };\n Reservation.decode = (buf, opts) => {\n return decodeMessage(buf, Reservation.codec(), opts);\n };\n})(Reservation || (Reservation = {}));\nexport var Limit;\n(function (Limit) {\n let _codec;\n Limit.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.duration != null) {\n w.uint32(8);\n w.uint32(obj.duration);\n }\n if (obj.data != null) {\n w.uint32(16);\n w.uint64(obj.data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.duration = reader.uint32();\n break;\n }\n case 2: {\n obj.data = reader.uint64();\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Limit.encode = (obj) => {\n return encodeMessage(obj, Limit.codec());\n };\n Limit.decode = (buf, opts) => {\n return decodeMessage(buf, Limit.codec(), opts);\n };\n})(Limit || (Limit = {}));\nexport var Status;\n(function (Status) {\n Status[\"UNUSED\"] = \"UNUSED\";\n Status[\"OK\"] = \"OK\";\n Status[\"RESERVATION_REFUSED\"] = \"RESERVATION_REFUSED\";\n Status[\"RESOURCE_LIMIT_EXCEEDED\"] = \"RESOURCE_LIMIT_EXCEEDED\";\n Status[\"PERMISSION_DENIED\"] = \"PERMISSION_DENIED\";\n Status[\"CONNECTION_FAILED\"] = \"CONNECTION_FAILED\";\n Status[\"NO_RESERVATION\"] = \"NO_RESERVATION\";\n Status[\"MALFORMED_MESSAGE\"] = \"MALFORMED_MESSAGE\";\n Status[\"UNEXPECTED_MESSAGE\"] = \"UNEXPECTED_MESSAGE\";\n})(Status || (Status = {}));\nvar __StatusValues;\n(function (__StatusValues) {\n __StatusValues[__StatusValues[\"UNUSED\"] = 0] = \"UNUSED\";\n __StatusValues[__StatusValues[\"OK\"] = 100] = \"OK\";\n __StatusValues[__StatusValues[\"RESERVATION_REFUSED\"] = 200] = \"RESERVATION_REFUSED\";\n __StatusValues[__StatusValues[\"RESOURCE_LIMIT_EXCEEDED\"] = 201] = \"RESOURCE_LIMIT_EXCEEDED\";\n __StatusValues[__StatusValues[\"PERMISSION_DENIED\"] = 202] = \"PERMISSION_DENIED\";\n __StatusValues[__StatusValues[\"CONNECTION_FAILED\"] = 203] = \"CONNECTION_FAILED\";\n __StatusValues[__StatusValues[\"NO_RESERVATION\"] = 204] = \"NO_RESERVATION\";\n __StatusValues[__StatusValues[\"MALFORMED_MESSAGE\"] = 400] = \"MALFORMED_MESSAGE\";\n __StatusValues[__StatusValues[\"UNEXPECTED_MESSAGE\"] = 401] = \"UNEXPECTED_MESSAGE\";\n})(__StatusValues || (__StatusValues = {}));\n(function (Status) {\n Status.codec = () => {\n return enumeration(__StatusValues);\n };\n})(Status || (Status = {}));\nexport var ReservationVoucher;\n(function (ReservationVoucher) {\n let _codec;\n ReservationVoucher.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.relay != null && obj.relay.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.relay);\n }\n if ((obj.peer != null && obj.peer.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.peer);\n }\n if ((obj.expiration != null && obj.expiration !== 0n)) {\n w.uint32(24);\n w.uint64(obj.expiration);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {\n relay: uint8ArrayAlloc(0),\n peer: uint8ArrayAlloc(0),\n expiration: 0n\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.relay = reader.bytes();\n break;\n }\n case 2: {\n obj.peer = reader.bytes();\n break;\n }\n case 3: {\n obj.expiration = reader.uint64();\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n ReservationVoucher.encode = (obj) => {\n return encodeMessage(obj, ReservationVoucher.codec());\n };\n ReservationVoucher.decode = (buf, opts) => {\n return decodeMessage(buf, ReservationVoucher.codec(), opts);\n };\n})(ReservationVoucher || (ReservationVoucher = {}));\n//# sourceMappingURL=index.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { CodeError } from '@libp2p/interface';\nimport { anySignal } from 'any-signal';\nimport { CID } from 'multiformats/cid';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { ERR_TRANSFER_LIMIT_EXCEEDED } from './constants.js';\nasync function* countStreamBytes(source, limit, options) {\n const limitBytes = limit.remaining;\n for await (const buf of source) {\n const len = BigInt(buf.byteLength);\n if ((limit.remaining - len) < 0) {\n // this is a safe downcast since len is guarantee to be in the range for a number\n const remaining = Number(limit.remaining);\n limit.remaining = 0n;\n try {\n if (remaining !== 0) {\n yield buf.subarray(0, remaining);\n }\n }\n catch (err) {\n options.log.error(err);\n }\n throw new CodeError(`data limit of ${limitBytes} bytes exceeded`, ERR_TRANSFER_LIMIT_EXCEEDED);\n }\n limit.remaining -= len;\n yield buf;\n }\n}\nexport function createLimitedRelay(src, dst, abortSignal, limit, options) {\n function abortStreams(err) {\n src.abort(err);\n dst.abort(err);\n }\n const signals = [abortSignal];\n if (limit?.duration != null) {\n signals.push(AbortSignal.timeout(limit.duration));\n }\n const signal = anySignal(signals);\n let srcDstFinished = false;\n let dstSrcFinished = false;\n let dataLimit;\n if (limit?.data != null) {\n dataLimit = {\n remaining: limit.data\n };\n }\n queueMicrotask(() => {\n const onAbort = () => {\n dst.abort(new CodeError(`duration limit of ${limit?.duration} ms exceeded`, ERR_TRANSFER_LIMIT_EXCEEDED));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n void dst.sink(dataLimit == null ? src.source : countStreamBytes(src.source, dataLimit, options))\n .catch(err => {\n options.log.error('error while relaying streams src -> dst', err);\n abortStreams(err);\n })\n .finally(() => {\n srcDstFinished = true;\n if (dstSrcFinished) {\n signal.removeEventListener('abort', onAbort);\n signal.clear();\n }\n });\n });\n queueMicrotask(() => {\n const onAbort = () => {\n src.abort(new CodeError(`duration limit of ${limit?.duration} ms exceeded`, ERR_TRANSFER_LIMIT_EXCEEDED));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n void src.sink(dataLimit == null ? dst.source : countStreamBytes(dst.source, dataLimit, options))\n .catch(err => {\n options.log.error('error while relaying streams dst -> src', err);\n abortStreams(err);\n })\n .finally(() => {\n dstSrcFinished = true;\n if (srcDstFinished) {\n signal.removeEventListener('abort', onAbort);\n signal.clear();\n }\n });\n });\n}\n/**\n * Convert a namespace string into a cid\n */\nexport async function namespaceToCid(namespace) {\n const bytes = new TextEncoder().encode(namespace);\n const hash = await sha256.digest(bytes);\n return CID.createV0(hash);\n}\n/**\n * returns number of ms between now and expiration time\n */\nexport function getExpirationMilliseconds(expireTimeSeconds) {\n const expireTimeMillis = expireTimeSeconds * BigInt(1000);\n const currentTime = new Date().getTime();\n // downcast to number to use with setTimeout\n return Number(expireTimeMillis - BigInt(currentTime));\n}\n//# sourceMappingURL=utils.js.map","/**\n * Calls the passed map function on every entry of the passed iterable iterator\n */\nexport function mapIterable(iter, map) {\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n const next = iter.next();\n const val = next.value;\n if (next.done === true || val == null) {\n const result = {\n done: true,\n value: undefined\n };\n return result;\n }\n return {\n done: false,\n value: map(val)\n };\n }\n };\n return iterator;\n}\n//# sourceMappingURL=util.js.map","import { peerIdFromString } from '@libp2p/peer-id';\nimport { mapIterable } from './util.js';\n/**\n * We can't use PeerIds as map keys because map keys are\n * compared using same-value-zero equality, so this is just\n * a map that stringifies the PeerIds before storing them.\n *\n * PeerIds cache stringified versions of themselves so this\n * should be a cheap operation.\n *\n * @example\n *\n * ```TypeScript\n * import { peerMap } from '@libp2p/peer-collections'\n *\n * const map = peerMap()\n * map.set(peerId, 'value')\n * ```\n */\nexport class PeerMap {\n map;\n constructor(map) {\n this.map = new Map();\n if (map != null) {\n for (const [key, value] of map.entries()) {\n this.map.set(key.toString(), value);\n }\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n clear() {\n this.map.clear();\n }\n delete(peer) {\n return this.map.delete(peer.toString());\n }\n entries() {\n return mapIterable(this.map.entries(), (val) => {\n return [peerIdFromString(val[0]), val[1]];\n });\n }\n forEach(fn) {\n this.map.forEach((value, key) => {\n fn(value, peerIdFromString(key), this);\n });\n }\n get(peer) {\n return this.map.get(peer.toString());\n }\n has(peer) {\n return this.map.has(peer.toString());\n }\n set(peer, value) {\n this.map.set(peer.toString(), value);\n }\n keys() {\n return mapIterable(this.map.keys(), (val) => {\n return peerIdFromString(val);\n });\n }\n values() {\n return this.map.values();\n }\n get size() {\n return this.map.size;\n }\n}\nexport function peerMap() {\n return new PeerMap();\n}\n//# sourceMappingURL=map.js.map","import { peerIdFromString } from '@libp2p/peer-id';\nimport { mapIterable } from './util.js';\n/**\n * We can't use PeerIds as set entries because set entries are\n * compared using same-value-zero equality, so this is just\n * a map that stringifies the PeerIds before storing them.\n *\n * PeerIds cache stringified versions of themselves so this\n * should be a cheap operation.\n *\n * @example\n *\n * ```TypeScript\n * import { peerSet } from '@libp2p/peer-collections'\n *\n * const set = peerSet()\n * set.add(peerId)\n * ```\n */\nexport class PeerSet {\n set;\n constructor(set) {\n this.set = new Set();\n if (set != null) {\n for (const key of set) {\n this.set.add(key.toString());\n }\n }\n }\n get size() {\n return this.set.size;\n }\n [Symbol.iterator]() {\n return this.values();\n }\n add(peer) {\n this.set.add(peer.toString());\n }\n clear() {\n this.set.clear();\n }\n delete(peer) {\n this.set.delete(peer.toString());\n }\n entries() {\n return mapIterable(this.set.entries(), (val) => {\n const peerId = peerIdFromString(val[0]);\n return [peerId, peerId];\n });\n }\n forEach(predicate) {\n this.set.forEach((str) => {\n const id = peerIdFromString(str);\n predicate(id, id, this);\n });\n }\n has(peer) {\n return this.set.has(peer.toString());\n }\n values() {\n return mapIterable(this.set.values(), (val) => {\n return peerIdFromString(val);\n });\n }\n intersection(other) {\n const output = new PeerSet();\n for (const peerId of other) {\n if (this.has(peerId)) {\n output.add(peerId);\n }\n }\n return output;\n }\n difference(other) {\n const output = new PeerSet();\n for (const peerId of this) {\n if (!other.has(peerId)) {\n output.add(peerId);\n }\n }\n return output;\n }\n union(other) {\n const output = new PeerSet();\n for (const peerId of other) {\n output.add(peerId);\n }\n for (const peerId of this) {\n output.add(peerId);\n }\n return output;\n }\n}\nexport function peerSet() {\n return new PeerSet();\n}\n//# sourceMappingURL=set.js.map","// ported from xxbloom - https://github.com/ceejbot/xxbloom/blob/master/LICENSE\nimport { randomBytes } from '@libp2p/crypto';\nimport mur from 'murmurhash3js-revisited';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { alloc } from 'uint8arrays/alloc';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nconst LN2_SQUARED = Math.LN2 * Math.LN2;\nexport class BloomFilter {\n seeds;\n bits;\n buffer;\n constructor(options = {}) {\n if (options.seeds != null) {\n this.seeds = options.seeds;\n }\n else {\n this.seeds = generateSeeds(options.hashes ?? 8);\n }\n this.bits = options.bits ?? 1024;\n this.buffer = alloc(Math.ceil(this.bits / 8));\n }\n /**\n * Add an item to the filter\n */\n add(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n for (let i = 0; i < this.seeds.length; i++) {\n const hash = mur.x86.hash32(item, this.seeds[i]);\n const bit = hash % this.bits;\n this.setbit(bit);\n }\n }\n /**\n * Test if the filter has an item. If it returns false it definitely does not\n * have the item. If it returns true, it probably has the item but there's\n * an `errorRate` chance it doesn't.\n */\n has(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n for (let i = 0; i < this.seeds.length; i++) {\n const hash = mur.x86.hash32(item, this.seeds[i]);\n const bit = hash % this.bits;\n const isSet = this.getbit(bit);\n if (!isSet) {\n return false;\n }\n }\n return true;\n }\n /**\n * Reset the filter\n */\n clear() {\n this.buffer.fill(0);\n }\n setbit(bit) {\n let pos = 0;\n let shift = bit;\n while (shift > 7) {\n pos++;\n shift -= 8;\n }\n let bitfield = this.buffer[pos];\n bitfield |= (0x1 << shift);\n this.buffer[pos] = bitfield;\n }\n getbit(bit) {\n let pos = 0;\n let shift = bit;\n while (shift > 7) {\n pos++;\n shift -= 8;\n }\n const bitfield = this.buffer[pos];\n return (bitfield & (0x1 << shift)) !== 0;\n }\n}\n/**\n * Create a `BloomFilter` with the smallest `bits` and `hashes` value for the\n * specified item count and error rate.\n */\nexport function createBloomFilter(itemcount, errorRate = 0.005) {\n const opts = optimize(itemcount, errorRate);\n return new BloomFilter(opts);\n}\nfunction optimize(itemCount, errorRate = 0.005) {\n const bits = Math.round(-1 * itemCount * Math.log(errorRate) / LN2_SQUARED);\n const hashes = Math.round((bits / itemCount) * Math.LN2);\n return { bits, hashes };\n}\nfunction generateSeeds(count) {\n let buf;\n let j;\n const seeds = [];\n for (let i = 0; i < count; i++) {\n buf = new Uint8ArrayList(randomBytes(4));\n seeds[i] = buf.getUint32(0, true);\n // Make sure we don't end up with two identical seeds,\n // which is unlikely but possible.\n for (j = 0; j < i; j++) {\n if (seeds[i] === seeds[j]) {\n i--;\n break;\n }\n }\n }\n return seeds;\n}\n//# sourceMappingURL=bloom-filter.js.map","import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nexport const MAX_FINGERPRINT_SIZE = 64;\nexport class Fingerprint {\n fp;\n h;\n seed;\n constructor(buf, hash, seed, fingerprintSize = 2) {\n if (fingerprintSize > MAX_FINGERPRINT_SIZE) {\n throw new TypeError('Invalid Fingerprint Size');\n }\n const fnv = hash.hashV(buf, seed);\n const fp = uint8ArrayAlloc(fingerprintSize);\n for (let i = 0; i < fp.length; i++) {\n fp[i] = fnv[i];\n }\n if (fp.length === 0) {\n fp[0] = 7;\n }\n this.fp = fp;\n this.h = hash;\n this.seed = seed;\n }\n hash() {\n return this.h.hash(this.fp, this.seed);\n }\n equals(other) {\n if (!(other?.fp instanceof Uint8Array)) {\n return false;\n }\n return uint8ArrayEquals(this.fp, other.fp);\n }\n}\n//# sourceMappingURL=fingerprint.js.map","export function getRandomInt(min, max) {\n return Math.floor(Math.random() * (max - min)) + min;\n}\n//# sourceMappingURL=utils.js.map","import { Fingerprint } from './fingerprint.js';\nimport { getRandomInt } from './utils.js';\nexport class Bucket {\n contents;\n constructor(size) {\n this.contents = new Array(size).fill(null);\n }\n has(fingerprint) {\n if (!(fingerprint instanceof Fingerprint)) {\n throw new TypeError('Invalid Fingerprint');\n }\n return this.contents.some((fp) => {\n return fingerprint.equals(fp);\n });\n }\n add(fingerprint) {\n if (!(fingerprint instanceof Fingerprint)) {\n throw new TypeError('Invalid Fingerprint');\n }\n for (let i = 0; i < this.contents.length; i++) {\n if (this.contents[i] == null) {\n this.contents[i] = fingerprint;\n return true;\n }\n }\n return true;\n }\n swap(fingerprint) {\n if (!(fingerprint instanceof Fingerprint)) {\n throw new TypeError('Invalid Fingerprint');\n }\n const i = getRandomInt(0, this.contents.length - 1);\n const current = this.contents[i];\n this.contents[i] = fingerprint;\n return current;\n }\n remove(fingerprint) {\n if (!(fingerprint instanceof Fingerprint)) {\n throw new TypeError('Invalid Fingerprint');\n }\n const found = this.contents.findIndex((fp) => {\n return fingerprint.equals(fp);\n });\n if (found > -1) {\n this.contents[found] = null;\n return true;\n }\n else {\n return false;\n }\n }\n}\n//# sourceMappingURL=bucket.js.map","// FNV_PRIMES and FNV_OFFSETS from\n// http://www.isthe.com/chongo/tech/comp/fnv/index.html#FNV-param\n\nconst FNV_PRIMES = {\n\t32: 16_777_619n,\n\t64: 1_099_511_628_211n,\n\t128: 309_485_009_821_345_068_724_781_371n,\n\t256: 374_144_419_156_711_147_060_143_317_175_368_453_031_918_731_002_211n,\n\t512: 35_835_915_874_844_867_368_919_076_489_095_108_449_946_327_955_754_392_558_399_825_615_420_669_938_882_575_126_094_039_892_345_713_852_759n,\n\t1024: 5_016_456_510_113_118_655_434_598_811_035_278_955_030_765_345_404_790_744_303_017_523_831_112_055_108_147_451_509_157_692_220_295_382_716_162_651_878_526_895_249_385_292_291_816_524_375_083_746_691_371_804_094_271_873_160_484_737_966_720_260_389_217_684_476_157_468_082_573n,\n};\n\nconst FNV_OFFSETS = {\n\t32: 2_166_136_261n,\n\t64: 14_695_981_039_346_656_037n,\n\t128: 144_066_263_297_769_815_596_495_629_667_062_367_629n,\n\t256: 100_029_257_958_052_580_907_070_968_620_625_704_837_092_796_014_241_193_945_225_284_501_741_471_925_557n,\n\t512: 9_659_303_129_496_669_498_009_435_400_716_310_466_090_418_745_672_637_896_108_374_329_434_462_657_994_582_932_197_716_438_449_813_051_892_206_539_805_784_495_328_239_340_083_876_191_928_701_583_869_517_785n,\n\t1024: 14_197_795_064_947_621_068_722_070_641_403_218_320_880_622_795_441_933_960_878_474_914_617_582_723_252_296_732_303_717_722_150_864_096_521_202_355_549_365_628_174_669_108_571_814_760_471_015_076_148_029_755_969_804_077_320_157_692_458_563_003_215_304_957_150_157_403_644_460_363_550_505_412_711_285_966_361_610_267_868_082_893_823_963_790_439_336_411_086_884_584_107_735_010_676_915n,\n};\n\nconst cachedEncoder = new globalThis.TextEncoder();\n\nfunction fnv1aUint8Array(uint8Array, size) {\n\tconst fnvPrime = FNV_PRIMES[size];\n\tlet hash = FNV_OFFSETS[size];\n\n\t// eslint-disable-next-line unicorn/no-for-loop -- This is a performance-sensitive loop\n\tfor (let index = 0; index < uint8Array.length; index++) {\n\t\thash ^= BigInt(uint8Array[index]);\n\t\thash = BigInt.asUintN(size, hash * fnvPrime);\n\t}\n\n\treturn hash;\n}\n\nfunction fnv1aEncodeInto(string, size, utf8Buffer) {\n\tif (utf8Buffer.length === 0) {\n\t\tthrow new Error('The `utf8Buffer` option must have a length greater than zero');\n\t}\n\n\tconst fnvPrime = FNV_PRIMES[size];\n\tlet hash = FNV_OFFSETS[size];\n\tlet remaining = string;\n\n\twhile (remaining.length > 0) {\n\t\tconst result = cachedEncoder.encodeInto(remaining, utf8Buffer);\n\t\tremaining = remaining.slice(result.read);\n\t\tfor (let index = 0; index < result.written; index++) {\n\t\t\thash ^= BigInt(utf8Buffer[index]);\n\t\t\thash = BigInt.asUintN(size, hash * fnvPrime);\n\t\t}\n\t}\n\n\treturn hash;\n}\n\nexport default function fnv1a(value, {size = 32, utf8Buffer} = {}) {\n\tif (!FNV_PRIMES[size]) {\n\t\tthrow new Error('The `size` option must be one of 32, 64, 128, 256, 512, or 1024');\n\t}\n\n\tif (typeof value === 'string') {\n\t\tif (utf8Buffer) {\n\t\t\treturn fnv1aEncodeInto(value, size, utf8Buffer);\n\t\t}\n\n\t\tvalue = cachedEncoder.encode(value);\n\t}\n\n\treturn fnv1aUint8Array(value, size);\n}\n","import fnv1aHash from '@sindresorhus/fnv1a';\nimport mur from 'murmurhash3js-revisited';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nexport const murmur3 = {\n hash: (input, seed) => {\n return mur.x86.hash32(input, seed);\n },\n hashV: (input, seed) => {\n return numberToBuffer(murmur3.hash(input, seed));\n }\n};\nexport const fnv1a = {\n hash: (input) => {\n return Number(fnv1aHash(input, {\n size: 32\n }));\n },\n hashV: (input, seed) => {\n return numberToBuffer(fnv1a.hash(input, seed));\n }\n};\nexport function numberToBuffer(num) {\n let hex = num.toString(16);\n if (hex.length % 2 === 1) {\n hex = `0${hex}`;\n }\n return uint8ArrayFromString(hex, 'base16');\n}\n//# sourceMappingURL=hashes.js.map","import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { Bucket } from './bucket.js';\nimport { Fingerprint, MAX_FINGERPRINT_SIZE } from './fingerprint.js';\nimport { fnv1a } from './hashes.js';\nimport { getRandomInt } from './utils.js';\nconst maxCuckooCount = 500;\nexport class CuckooFilter {\n bucketSize;\n filterSize;\n fingerprintSize;\n buckets;\n count;\n hash;\n seed;\n constructor(init) {\n this.filterSize = init.filterSize;\n this.bucketSize = init.bucketSize ?? 4;\n this.fingerprintSize = init.fingerprintSize ?? 2;\n this.count = 0;\n this.buckets = [];\n this.hash = init.hash ?? fnv1a;\n this.seed = init.seed ?? getRandomInt(0, Math.pow(2, 10));\n }\n add(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n const fingerprint = new Fingerprint(item, this.hash, this.seed, this.fingerprintSize);\n const j = this.hash.hash(item, this.seed) % this.filterSize;\n const k = (j ^ fingerprint.hash()) % this.filterSize;\n if (this.buckets[j] == null) {\n this.buckets[j] = new Bucket(this.bucketSize);\n }\n if (this.buckets[k] == null) {\n this.buckets[k] = new Bucket(this.bucketSize);\n }\n if (this.buckets[j].add(fingerprint) || this.buckets[k].add(fingerprint)) {\n this.count++;\n return true;\n }\n const rand = [j, k];\n let i = rand[getRandomInt(0, rand.length - 1)];\n if (this.buckets[i] == null) {\n this.buckets[i] = new Bucket(this.bucketSize);\n }\n for (let n = 0; n < maxCuckooCount; n++) {\n const swapped = this.buckets[i].swap(fingerprint);\n if (swapped == null) {\n continue;\n }\n i = (i ^ swapped.hash()) % this.filterSize;\n if (this.buckets[i] == null) {\n this.buckets[i] = new Bucket(this.bucketSize);\n }\n if (this.buckets[i].add(swapped)) {\n this.count++;\n return true;\n }\n else {\n continue;\n }\n }\n return false;\n }\n has(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n const fingerprint = new Fingerprint(item, this.hash, this.seed, this.fingerprintSize);\n const j = this.hash.hash(item, this.seed) % this.filterSize;\n const inJ = this.buckets[j]?.has(fingerprint) ?? false;\n if (inJ) {\n return inJ;\n }\n const k = (j ^ fingerprint.hash()) % this.filterSize;\n return this.buckets[k]?.has(fingerprint) ?? false;\n }\n remove(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n const fingerprint = new Fingerprint(item, this.hash, this.seed, this.fingerprintSize);\n const j = this.hash.hash(item, this.seed) % this.filterSize;\n const inJ = this.buckets[j]?.remove(fingerprint) ?? false;\n if (inJ) {\n this.count--;\n return inJ;\n }\n const k = (j ^ fingerprint.hash()) % this.filterSize;\n const inK = this.buckets[k]?.remove(fingerprint) ?? false;\n if (inK) {\n this.count--;\n }\n return inK;\n }\n get reliable() {\n return Math.floor(100 * (this.count / this.filterSize)) <= 90;\n }\n}\n// max load constants, defined in the cuckoo paper\nconst MAX_LOAD = {\n 1: 0.5,\n 2: 0.84,\n 4: 0.95,\n 8: 0.98\n};\nfunction calculateBucketSize(errorRate = 0.001) {\n if (errorRate > 0.002) {\n return 2;\n }\n if (errorRate > 0.00001) {\n return 4;\n }\n return 8;\n}\nexport function optimize(maxItems, errorRate = 0.001) {\n // https://www.eecs.harvard.edu/~michaelm/postscripts/cuckoo-conext2014.pdf\n // Section 5.1 Optimal Bucket Size\n const bucketSize = calculateBucketSize(errorRate);\n const load = MAX_LOAD[bucketSize];\n // https://stackoverflow.com/questions/57555236/how-to-size-a-cuckoo-filter/57617208#57617208\n const filterSize = Math.round(maxItems / load);\n const fingerprintSize = Math.min(Math.ceil(Math.log2(1 / errorRate) + Math.log2(2 * bucketSize)), MAX_FINGERPRINT_SIZE);\n return {\n filterSize,\n bucketSize,\n fingerprintSize\n };\n}\nexport function createCuckooFilter(maxItems, errorRate = 0.005) {\n const opts = optimize(maxItems, errorRate);\n return new CuckooFilter(opts);\n}\n//# sourceMappingURL=cuckoo-filter.js.map","import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { CuckooFilter, optimize } from './cuckoo-filter.js';\nimport { fnv1a } from './hashes.js';\nimport { getRandomInt } from './utils.js';\nexport class ScalableCuckooFilter {\n filterSize;\n bucketSize;\n fingerprintSize;\n scale;\n filterSeries;\n hash;\n seed;\n constructor(init) {\n this.bucketSize = init.bucketSize ?? 4;\n this.filterSize = init.filterSize ?? (1 << 18) / this.bucketSize;\n this.fingerprintSize = init.fingerprintSize ?? 2;\n this.scale = init.scale ?? 2;\n this.hash = init.hash ?? fnv1a;\n this.seed = init.seed ?? getRandomInt(0, Math.pow(2, 10));\n this.filterSeries = [\n new CuckooFilter({\n filterSize: this.filterSize,\n bucketSize: this.bucketSize,\n fingerprintSize: this.fingerprintSize,\n hash: this.hash,\n seed: this.seed\n })\n ];\n }\n add(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n if (this.has(item)) {\n return true;\n }\n let current = this.filterSeries.find((cuckoo) => {\n return cuckoo.reliable;\n });\n if (current == null) {\n const curSize = this.filterSize * Math.pow(this.scale, this.filterSeries.length);\n current = new CuckooFilter({\n filterSize: curSize,\n bucketSize: this.bucketSize,\n fingerprintSize: this.fingerprintSize,\n hash: this.hash,\n seed: this.seed\n });\n this.filterSeries.push(current);\n }\n return current.add(item);\n }\n has(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n for (let i = 0; i < this.filterSeries.length; i++) {\n if (this.filterSeries[i].has(item)) {\n return true;\n }\n }\n return false;\n }\n remove(item) {\n if (typeof item === 'string') {\n item = uint8ArrayFromString(item);\n }\n for (let i = 0; i < this.filterSeries.length; i++) {\n if (this.filterSeries[i].remove(item)) {\n return true;\n }\n }\n return false;\n }\n get count() {\n return this.filterSeries.reduce((acc, curr) => {\n return acc + curr.count;\n }, 0);\n }\n}\nexport function createScalableCuckooFilter(maxItems, errorRate = 0.001, options) {\n return new ScalableCuckooFilter({\n ...optimize(maxItems, errorRate),\n ...(options ?? {})\n });\n}\n//# sourceMappingURL=scalable-cuckoo-filter.js.map","import { createScalableCuckooFilter } from '@libp2p/utils/filters';\n/**\n * Uses a Cuckoo filter to implement a mechanism for deduplicating PeerIds in a\n * way that uses a smaller amount of memory than a PeerSet.\n */\nexport class PeerFilter {\n filter;\n constructor(size, errorRate) {\n this.filter = createScalableCuckooFilter(size, errorRate);\n }\n has(peerId) {\n return this.filter.has(peerId.toBytes());\n }\n add(peerId) {\n this.filter.add(peerId.toBytes());\n }\n remove(peerId) {\n this.filter.remove?.(peerId.toBytes());\n }\n}\n/**\n * Create and return a PeerFilter\n *\n * @param size - The maximum number of peers expected to be added to the filter\n * @param errorRate - The acceptable error rate\n */\nexport function peerFilter(size, errorRate = 0.001) {\n return new PeerFilter(size, errorRate);\n}\n//# sourceMappingURL=filter.js.map","/**\n * Convert a duplex iterable into a MultiaddrConnection.\n * https://github.com/libp2p/interface-transport#multiaddrconnection\n */\nexport function streamToMaConnection(props) {\n const { stream, remoteAddr, logger } = props;\n const log = logger.forComponent('libp2p:stream:converter');\n let closedRead = false;\n let closedWrite = false;\n // piggyback on `stream.close` invocations to close maconn\n const streamClose = stream.close.bind(stream);\n stream.close = async (options) => {\n await streamClose(options);\n close(true);\n };\n // piggyback on `stream.abort` invocations to close maconn\n const streamAbort = stream.abort.bind(stream);\n stream.abort = (err) => {\n streamAbort(err);\n close(true);\n };\n // piggyback on `stream.sink` invocations to close maconn\n const streamSink = stream.sink.bind(stream);\n stream.sink = async (source) => {\n try {\n await streamSink(source);\n }\n catch (err) {\n // If aborted we can safely ignore\n if (err.type !== 'aborted') {\n // If the source errored the socket will already have been destroyed by\n // toIterable.duplex(). If the socket errored it will already be\n // destroyed. There's nothing to do here except log the error & return.\n log.error('%s error in sink', remoteAddr, err);\n }\n }\n finally {\n closedWrite = true;\n close();\n }\n };\n const maConn = {\n log,\n sink: stream.sink,\n source: (async function* () {\n try {\n for await (const list of stream.source) {\n if (list instanceof Uint8Array) {\n yield list;\n }\n else {\n yield* list;\n }\n }\n }\n finally {\n closedRead = true;\n close();\n }\n }()),\n remoteAddr,\n timeline: { open: Date.now(), close: undefined },\n close: stream.close,\n abort: stream.abort\n };\n function close(force) {\n if (force === true) {\n closedRead = true;\n closedWrite = true;\n }\n if (closedRead && closedWrite && maConn.timeline.close == null) {\n maConn.timeline.close = Date.now();\n }\n }\n return maConn;\n}\n//# sourceMappingURL=stream-to-ma-conn.js.map","import { Queue } from './queue/index.js';\n/**\n * Extends Queue to add support for querying queued jobs by peer id\n */\nexport class PeerQueue extends Queue {\n has(peerId) {\n return this.find(peerId) != null;\n }\n find(peerId) {\n return this.queue.find(job => {\n return peerId.equals(job.options.peerId);\n });\n }\n}\n//# sourceMappingURL=peer-queue.js.map","import { TypedEventEmitter, setMaxListeners } from '@libp2p/interface';\nimport { PeerQueue } from '@libp2p/utils/peer-queue';\nimport { anySignal } from 'any-signal';\nimport { raceSignal } from 'race-signal';\nimport { RELAY_V2_HOP_CODEC } from '../constants.js';\n/**\n * ReservationManager automatically makes a circuit v2 reservation on any connected\n * peers that support the circuit v2 HOP protocol.\n */\nexport class RelayDiscovery extends TypedEventEmitter {\n peerStore;\n registrar;\n connectionManager;\n randomWalk;\n started;\n running;\n topologyId;\n log;\n discoveryController;\n filter;\n constructor(components, init = {}) {\n super();\n this.log = components.logger.forComponent('libp2p:circuit-relay:discover-relays');\n this.started = false;\n this.running = false;\n this.peerStore = components.peerStore;\n this.registrar = components.registrar;\n this.connectionManager = components.connectionManager;\n this.randomWalk = components.randomWalk;\n this.filter = init.filter;\n this.discoveryController = new AbortController();\n setMaxListeners(Infinity, this.discoveryController.signal);\n }\n isStarted() {\n return this.started;\n }\n async start() {\n // register a topology listener for when new peers are encountered\n // that support the hop protocol\n this.topologyId = await this.registrar.register(RELAY_V2_HOP_CODEC, {\n filter: this.filter,\n onConnect: (peerId) => {\n this.log('discovered relay %p', peerId);\n this.safeDispatchEvent('relay:discover', { detail: peerId });\n }\n });\n this.started = true;\n }\n stop() {\n if (this.topologyId != null) {\n this.registrar.unregister(this.topologyId);\n }\n this.discoveryController?.abort();\n this.started = false;\n }\n /**\n * Try to listen on available hop relay connections.\n * The following order will happen while we do not have enough relays:\n *\n * 1. Check the metadata store for known relays, try to listen on the ones we are already connected to\n * 2. Dial and try to listen on the peers we know that support hop but are not connected\n * 3. Search the network\n */\n startDiscovery() {\n if (this.running) {\n return;\n }\n this.log('start discovery');\n this.running = true;\n this.discoveryController = new AbortController();\n setMaxListeners(Infinity, this.discoveryController.signal);\n Promise.resolve()\n .then(async () => {\n this.log('searching peer store for relays');\n const peers = (await this.peerStore.all({\n filters: [\n // filter by a list of peers supporting RELAY_V2_HOP and ones we are not listening on\n (peer) => {\n return peer.protocols.includes(RELAY_V2_HOP_CODEC);\n }\n ],\n orders: [\n () => Math.random() < 0.5 ? 1 : -1\n ]\n }));\n for (const peer of peers) {\n this.log.trace('found relay peer %p in peer store', peer.id);\n this.safeDispatchEvent('relay:discover', { detail: peer.id });\n }\n this.log('found %d relay peers in peer store', peers.length);\n // perform random walk and dial peers - after identify has run, the network\n // topology will be notified of new relays\n const queue = new PeerQueue({\n concurrency: 5\n });\n this.log('start random walk');\n for await (const peer of this.randomWalk.walk({ signal: this.discoveryController.signal })) {\n this.log.trace('found random peer %p', peer.id);\n if (queue.has(peer.id)) {\n this.log.trace('random peer %p was already in queue', peer.id);\n // skip peers already in the queue\n continue;\n }\n if (this.connectionManager.getConnections(peer.id)?.length > 0) {\n this.log.trace('random peer %p was already connected', peer.id);\n // skip peers we are already connected to\n continue;\n }\n if (!(await this.connectionManager.isDialable(peer.multiaddrs))) {\n this.log.trace('random peer %p was not dialable', peer.id, peer.multiaddrs.map(ma => ma.toString()));\n // skip peers we can't dial\n continue;\n }\n this.log.trace('wait for space in queue for %p', peer.id);\n // pause the random walk until there is space in the queue\n await raceSignal(queue.onSizeLessThan(10), this.discoveryController.signal);\n this.log('adding random peer %p to dial queue (length: %d)', peer.id, queue.size);\n // dial the peer - this will cause identify to run and our topology to\n // be notified and we'll attempt to create reservations\n queue.add(async () => {\n const signal = anySignal([this.discoveryController.signal, AbortSignal.timeout(5000)]);\n setMaxListeners(Infinity, signal);\n try {\n await this.connectionManager.openConnection(peer.id, { signal });\n }\n finally {\n signal.clear();\n }\n }, {\n peerId: peer.id,\n signal: this.discoveryController.signal\n })\n .catch(err => {\n this.log.error('error opening connection to random peer %p', peer.id, err);\n });\n }\n await queue.onIdle();\n })\n .catch(err => {\n if (!this.discoveryController.signal.aborted) {\n this.log.error('failed when finding relays on the network', err);\n }\n });\n }\n stopDiscovery() {\n this.log('stop discovery');\n this.running = false;\n this.discoveryController?.abort();\n }\n}\n//# sourceMappingURL=discovery.js.map","import { CodeError, TypedEventEmitter } from '@libp2p/interface';\nimport { PeerMap } from '@libp2p/peer-collections';\nimport { multiaddr } from '@multiformats/multiaddr';\nclass CircuitRelayTransportListener extends TypedEventEmitter {\n connectionManager;\n relayStore;\n listeningAddrs;\n log;\n constructor(components) {\n super();\n this.log = components.logger.forComponent('libp2p:circuit-relay:transport:listener');\n this.connectionManager = components.connectionManager;\n this.relayStore = components.relayStore;\n this.listeningAddrs = new PeerMap();\n // remove listening addrs when a relay is removed\n this.relayStore.addEventListener('relay:removed', this._onRemoveRelayPeer);\n }\n _onRemoveRelayPeer = (evt) => {\n this.#removeRelayPeer(evt.detail);\n };\n async listen(addr) {\n this.log('listen on %a', addr);\n // remove the circuit part to get the peer id of the relay\n const relayAddr = addr.decapsulate('/p2p-circuit');\n const relayConn = await this.connectionManager.openConnection(relayAddr);\n if (!this.relayStore.hasReservation(relayConn.remotePeer)) {\n this.log('making reservation on peer %p', relayConn.remotePeer);\n // addRelay calls transportManager.listen which calls this listen method\n await this.relayStore.addRelay(relayConn.remotePeer, 'configured');\n return;\n }\n const reservation = this.relayStore.getReservation(relayConn.remotePeer);\n if (reservation == null) {\n throw new CodeError('Did not have reservation after making reservation', 'ERR_NO_RESERVATION');\n }\n if (this.listeningAddrs.has(relayConn.remotePeer)) {\n this.log('already listening on relay %p', relayConn.remotePeer);\n return;\n }\n // add all addresses from the relay reservation\n this.listeningAddrs.set(relayConn.remotePeer, reservation.addrs.map(buf => {\n return multiaddr(buf).encapsulate('/p2p-circuit');\n }));\n this.safeDispatchEvent('listening', {});\n }\n getAddrs() {\n return [...this.listeningAddrs.values()].flat();\n }\n async close() {\n }\n #removeRelayPeer(peerId) {\n const had = this.listeningAddrs.has(peerId);\n this.log('relay peer removed %p - had reservation', peerId, had);\n this.listeningAddrs.delete(peerId);\n if (had) {\n this.log.trace('removing relay event listener for peer %p', peerId);\n this.relayStore.removeEventListener('relay:removed', this._onRemoveRelayPeer);\n // Announce listen addresses change\n this.safeDispatchEvent('close', {});\n }\n }\n}\nexport function createListener(options) {\n return new CircuitRelayTransportListener(options);\n}\n//# sourceMappingURL=listener.js.map","import { TypedEventEmitter, setMaxListeners } from '@libp2p/interface';\nimport { PeerMap } from '@libp2p/peer-collections';\nimport { createBloomFilter } from '@libp2p/utils/filters';\nimport { PeerQueue } from '@libp2p/utils/peer-queue';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { pbStream } from 'it-protobuf-stream';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { DEFAULT_MAX_RESERVATION_QUEUE_LENGTH, DEFAULT_RESERVATION_COMPLETION_TIMEOUT, DEFAULT_RESERVATION_CONCURRENCY, RELAY_TAG, RELAY_V2_HOP_CODEC } from '../constants.js';\nimport { HopMessage, Status } from '../pb/index.js';\nimport { getExpirationMilliseconds } from '../utils.js';\n// allow refreshing a relay reservation if it will expire in the next 10 minutes\nconst REFRESH_WINDOW = (60 * 1000) * 10;\n// try to refresh relay reservations 5 minutes before expiry\nconst REFRESH_TIMEOUT = (60 * 1000) * 5;\n// minimum duration before which a reservation must not be refreshed\nconst REFRESH_TIMEOUT_MIN = 30 * 1000;\nexport class ReservationStore extends TypedEventEmitter {\n peerId;\n connectionManager;\n transportManager;\n peerStore;\n events;\n reserveQueue;\n reservations;\n maxDiscoveredRelays;\n maxReservationQueueLength;\n reservationCompletionTimeout;\n started;\n log;\n relayFilter;\n constructor(components, init) {\n super();\n this.log = components.logger.forComponent('libp2p:circuit-relay:transport:reservation-store');\n this.peerId = components.peerId;\n this.connectionManager = components.connectionManager;\n this.transportManager = components.transportManager;\n this.peerStore = components.peerStore;\n this.events = components.events;\n this.reservations = new PeerMap();\n this.maxDiscoveredRelays = init?.discoverRelays ?? 0;\n this.maxReservationQueueLength = init?.maxReservationQueueLength ?? DEFAULT_MAX_RESERVATION_QUEUE_LENGTH;\n this.reservationCompletionTimeout = init?.reservationCompletionTimeout ?? DEFAULT_RESERVATION_COMPLETION_TIMEOUT;\n this.started = false;\n this.relayFilter = createBloomFilter(100);\n // ensure we don't listen on multiple relays simultaneously\n this.reserveQueue = new PeerQueue({\n concurrency: init?.reservationConcurrency ?? DEFAULT_RESERVATION_CONCURRENCY,\n metricName: 'libp2p_relay_reservation_queue',\n metrics: components.metrics\n });\n // When a peer disconnects, if we had a reservation on that peer\n // remove the reservation and multiaddr and maybe trigger search\n // for new relays\n this.events.addEventListener('peer:disconnect', (evt) => {\n this.#removeRelay(evt.detail);\n });\n }\n isStarted() {\n return this.started;\n }\n start() {\n this.started = true;\n }\n afterStart() {\n if (this.reservations.size < this.maxDiscoveredRelays) {\n this.log('not enough relays %d/%d', this.reservations.size, this.maxDiscoveredRelays);\n this.safeDispatchEvent('relay:not-enough-relays', {});\n }\n }\n stop() {\n this.reserveQueue.clear();\n this.reservations.forEach(({ timeout }) => {\n clearTimeout(timeout);\n });\n this.reservations.clear();\n this.started = false;\n }\n /**\n * If the number of current relays is beneath the configured `maxReservations`\n * value, and the passed peer id is not our own, and we have a non-relayed\n * connection to the remote, and the remote peer speaks the hop protocol, try\n * to reserve a slot on the remote peer\n */\n async addRelay(peerId, type) {\n if (this.peerId.equals(peerId)) {\n this.log('not trying to use self as relay');\n return;\n }\n if (this.reserveQueue.size > this.maxReservationQueueLength) {\n this.log('not adding potential relay peer %p as the queue is full', peerId);\n return;\n }\n if (this.reserveQueue.has(peerId)) {\n this.log('potential relay peer %p is already in the reservation queue', peerId);\n return;\n }\n if (this.relayFilter.has(peerId.toBytes())) {\n this.log('potential relay peer %p has failed previously, not trying again', peerId);\n return;\n }\n this.log('try to reserve relay slot with %p', peerId);\n await this.reserveQueue.add(async () => {\n const start = Date.now();\n try {\n // allow refresh of an existing reservation if it is about to expire\n const existingReservation = this.reservations.get(peerId);\n if (existingReservation != null) {\n if (getExpirationMilliseconds(existingReservation.reservation.expire) > REFRESH_WINDOW) {\n this.log('already have reservation on relay peer %p and it expires in more than 10 minutes', peerId);\n return;\n }\n clearTimeout(existingReservation.timeout);\n this.reservations.delete(peerId);\n }\n if (type === 'discovered' && [...this.reservations.values()].reduce((acc, curr) => {\n if (curr.type === 'discovered') {\n acc++;\n }\n return acc;\n }, 0) >= this.maxDiscoveredRelays) {\n this.log('already have enough discovered relays');\n return;\n }\n const signal = AbortSignal.timeout(this.reservationCompletionTimeout);\n setMaxListeners(Infinity, signal);\n const connection = await this.connectionManager.openConnection(peerId, {\n signal\n });\n if (connection.remoteAddr.protoNames().includes('p2p-circuit')) {\n this.log('not creating reservation over relayed connection');\n return;\n }\n const reservation = await this.#createReservation(connection, {\n signal\n });\n this.log('created reservation on relay peer %p', peerId);\n const expiration = getExpirationMilliseconds(reservation.expire);\n // sets a lower bound on the timeout, and also don't let it go over\n // 2^31 - 1 (setTimeout will only accept signed 32 bit integers)\n const timeoutDuration = Math.min(Math.max(expiration - REFRESH_TIMEOUT, REFRESH_TIMEOUT_MIN), Math.pow(2, 31) - 1);\n const timeout = setTimeout(() => {\n this.addRelay(peerId, type).catch(err => {\n this.log.error('could not refresh reservation to relay %p', peerId, err);\n });\n }, timeoutDuration);\n // we've managed to create a reservation successfully\n this.reservations.set(peerId, {\n timeout,\n reservation,\n type\n });\n // ensure we don't close the connection to the relay\n await this.peerStore.merge(peerId, {\n tags: {\n [RELAY_TAG]: {\n value: 1,\n ttl: expiration\n }\n }\n });\n // listen on multiaddr that only the circuit transport is listening for\n await this.transportManager.listen([multiaddr(`/p2p/${peerId.toString()}/p2p-circuit`)]);\n this.safeDispatchEvent('relay:created-reservation', {\n detail: peerId\n });\n }\n catch (err) {\n this.log.error('could not reserve slot on %p after %dms', peerId, Date.now() - start, err);\n // cancel the renewal timeout if it's been set\n const reservation = this.reservations.get(peerId);\n if (reservation != null) {\n clearTimeout(reservation.timeout);\n }\n // if listening failed, remove the reservation\n this.reservations.delete(peerId);\n // don't try this peer again\n this.relayFilter.add(peerId.toBytes());\n }\n }, {\n peerId\n });\n }\n hasReservation(peerId) {\n return this.reservations.has(peerId);\n }\n getReservation(peerId) {\n return this.reservations.get(peerId)?.reservation;\n }\n reservationCount() {\n return this.reservations.size;\n }\n async #createReservation(connection, options) {\n options.signal?.throwIfAborted();\n this.log('requesting reservation from %p', connection.remotePeer);\n const stream = await connection.newStream(RELAY_V2_HOP_CODEC, options);\n const pbstr = pbStream(stream);\n const hopstr = pbstr.pb(HopMessage);\n await hopstr.write({ type: HopMessage.Type.RESERVE }, options);\n let response;\n try {\n response = await hopstr.read(options);\n }\n catch (err) {\n stream.abort(err);\n throw err;\n }\n finally {\n if (stream.status !== 'closed') {\n await stream.close(options);\n }\n }\n if (response.status === Status.OK && (response.reservation != null)) {\n // check that the returned relay has the relay address - this can be\n // omitted when requesting a reservation from a go-libp2p relay we\n // already have a reservation on\n let hasRelayAddress = false;\n const relayAddressBytes = connection.remoteAddr.bytes;\n for (const buf of response.reservation.addrs) {\n if (uint8ArrayEquals(relayAddressBytes, buf)) {\n hasRelayAddress = true;\n break;\n }\n }\n if (!hasRelayAddress) {\n response.reservation.addrs.push(relayAddressBytes);\n }\n return response.reservation;\n }\n const errMsg = `reservation failed with status ${response.status ?? 'undefined'}`;\n this.log.error(errMsg);\n throw new Error(errMsg);\n }\n /**\n * Remove listen relay\n */\n #removeRelay(peerId) {\n const existingReservation = this.reservations.get(peerId);\n if (existingReservation == null) {\n return;\n }\n this.log('connection to relay %p closed, removing reservation from local store', peerId);\n clearTimeout(existingReservation.timeout);\n this.reservations.delete(peerId);\n this.safeDispatchEvent('relay:removed', { detail: peerId });\n if (this.reservations.size < this.maxDiscoveredRelays) {\n this.log('not enough relays %d/%d', this.reservations.size, this.maxDiscoveredRelays);\n this.safeDispatchEvent('relay:not-enough-relays', {});\n }\n }\n}\n//# sourceMappingURL=reservation-store.js.map","import { CodeError, serviceCapabilities, serviceDependencies, start, stop, transportSymbol } from '@libp2p/interface';\nimport { peerFilter } from '@libp2p/peer-collections';\nimport { peerIdFromBytes, peerIdFromString } from '@libp2p/peer-id';\nimport { streamToMaConnection } from '@libp2p/utils/stream-to-ma-conn';\nimport * as mafmt from '@multiformats/mafmt';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { pbStream } from 'it-protobuf-stream';\nimport { CustomProgressEvent } from 'progress-events';\nimport { CIRCUIT_PROTO_CODE, DEFAULT_DISCOVERY_FILTER_ERROR_RATE, DEFAULT_DISCOVERY_FILTER_SIZE, ERR_HOP_REQUEST_FAILED, ERR_RELAYED_DIAL, MAX_CONNECTIONS, RELAY_V2_HOP_CODEC, RELAY_V2_STOP_CODEC } from '../constants.js';\nimport { StopMessage, HopMessage, Status } from '../pb/index.js';\nimport { RelayDiscovery } from './discovery.js';\nimport { createListener } from './listener.js';\nimport { ReservationStore } from './reservation-store.js';\nconst isValidStop = (request) => {\n if (request.peer == null) {\n return false;\n }\n try {\n request.peer.addrs.forEach(multiaddr);\n }\n catch {\n return false;\n }\n return true;\n};\nconst defaults = {\n maxInboundStopStreams: MAX_CONNECTIONS,\n maxOutboundStopStreams: MAX_CONNECTIONS,\n stopTimeout: 30000\n};\nexport class CircuitRelayTransport {\n discovery;\n registrar;\n peerStore;\n connectionManager;\n transportManager;\n peerId;\n upgrader;\n addressManager;\n connectionGater;\n reservationStore;\n logger;\n maxInboundStopStreams;\n maxOutboundStopStreams;\n stopTimeout;\n started;\n log;\n constructor(components, init) {\n this.log = components.logger.forComponent('libp2p:circuit-relay:transport');\n this.registrar = components.registrar;\n this.peerStore = components.peerStore;\n this.connectionManager = components.connectionManager;\n this.transportManager = components.transportManager;\n this.logger = components.logger;\n this.peerId = components.peerId;\n this.upgrader = components.upgrader;\n this.addressManager = components.addressManager;\n this.connectionGater = components.connectionGater;\n this.maxInboundStopStreams = init.maxInboundStopStreams ?? defaults.maxInboundStopStreams;\n this.maxOutboundStopStreams = init.maxOutboundStopStreams ?? defaults.maxOutboundStopStreams;\n this.stopTimeout = init.stopTimeout ?? defaults.stopTimeout;\n const discoverRelays = init.discoverRelays ?? 0;\n if (discoverRelays > 0) {\n this.discovery = new RelayDiscovery(components, {\n filter: init.discoveryFilter ?? peerFilter(DEFAULT_DISCOVERY_FILTER_SIZE, DEFAULT_DISCOVERY_FILTER_ERROR_RATE)\n });\n this.discovery.addEventListener('relay:discover', (evt) => {\n this.reservationStore.addRelay(evt.detail, 'discovered')\n .catch(err => {\n this.log.error('could not add discovered relay %p', evt.detail, err);\n });\n });\n }\n this.reservationStore = new ReservationStore(components, init);\n this.reservationStore.addEventListener('relay:not-enough-relays', () => {\n this.discovery?.startDiscovery();\n });\n this.reservationStore.addEventListener('relay:created-reservation', () => {\n if (this.reservationStore.reservationCount() >= discoverRelays) {\n this.discovery?.stopDiscovery();\n }\n });\n this.started = false;\n }\n [Symbol.toStringTag] = '@libp2p/circuit-relay-v2-transport';\n [serviceCapabilities] = [\n '@libp2p/transport',\n '@libp2p/circuit-relay-v2-transport'\n ];\n get [serviceDependencies]() {\n // we only need identify if discovery is enabled\n if (this.discovery != null) {\n return [\n '@libp2p/identify'\n ];\n }\n return [];\n }\n [transportSymbol] = true;\n isStarted() {\n return this.started;\n }\n async start() {\n await this.registrar.handle(RELAY_V2_STOP_CODEC, (data) => {\n void this.onStop(data).catch(err => {\n this.log.error('error while handling STOP protocol', err);\n data.stream.abort(err);\n });\n }, {\n maxInboundStreams: this.maxInboundStopStreams,\n maxOutboundStreams: this.maxOutboundStopStreams,\n runOnTransientConnection: true\n });\n await start(this.discovery, this.reservationStore);\n this.started = true;\n }\n async stop() {\n await stop(this.discovery, this.reservationStore);\n await this.registrar.unhandle(RELAY_V2_STOP_CODEC);\n this.started = false;\n }\n /**\n * Dial a peer over a relay\n */\n async dial(ma, options) {\n if (ma.protoCodes().filter(code => code === CIRCUIT_PROTO_CODE).length !== 1) {\n const errMsg = 'Invalid circuit relay address';\n this.log.error(errMsg, ma);\n throw new CodeError(errMsg, ERR_RELAYED_DIAL);\n }\n // Check the multiaddr to see if it contains a relay and a destination peer\n const addrs = ma.toString().split('/p2p-circuit');\n const relayAddr = multiaddr(addrs[0]);\n const destinationAddr = multiaddr(addrs[addrs.length - 1]);\n const relayId = relayAddr.getPeerId();\n const destinationId = destinationAddr.getPeerId();\n if (relayId == null || destinationId == null) {\n const errMsg = `Circuit relay dial to ${ma.toString()} failed as address did not have peer ids`;\n this.log.error(errMsg);\n throw new CodeError(errMsg, ERR_RELAYED_DIAL);\n }\n const relayPeer = peerIdFromString(relayId);\n const destinationPeer = peerIdFromString(destinationId);\n let disconnectOnFailure = false;\n const relayConnections = this.connectionManager.getConnections(relayPeer);\n let relayConnection = relayConnections[0];\n if (relayConnection == null) {\n await this.peerStore.merge(relayPeer, {\n multiaddrs: [relayAddr]\n });\n options.onProgress?.(new CustomProgressEvent('circuit-relay:open-connection'));\n relayConnection = await this.connectionManager.openConnection(relayPeer, options);\n disconnectOnFailure = true;\n }\n else {\n options.onProgress?.(new CustomProgressEvent('circuit-relay:reuse-connection'));\n }\n let stream;\n try {\n options.onProgress?.(new CustomProgressEvent('circuit-relay:open-hop-stream'));\n stream = await relayConnection.newStream(RELAY_V2_HOP_CODEC);\n return await this.connectV2({\n stream,\n connection: relayConnection,\n destinationPeer,\n destinationAddr,\n relayAddr,\n ma,\n disconnectOnFailure,\n onProgress: options.onProgress\n });\n }\n catch (err) {\n this.log.error('circuit relay dial to destination %p via relay %p failed', destinationPeer, relayPeer, err);\n if (stream != null) {\n stream.abort(err);\n }\n disconnectOnFailure && await relayConnection.close();\n throw err;\n }\n }\n async connectV2({ stream, connection, destinationPeer, destinationAddr, relayAddr, ma, disconnectOnFailure, onProgress }) {\n try {\n const pbstr = pbStream(stream);\n const hopstr = pbstr.pb(HopMessage);\n onProgress?.(new CustomProgressEvent('circuit-relay:write-connect-message'));\n await hopstr.write({\n type: HopMessage.Type.CONNECT,\n peer: {\n id: destinationPeer.toBytes(),\n addrs: [multiaddr(destinationAddr).bytes]\n }\n });\n onProgress?.(new CustomProgressEvent('circuit-relay:read-connect-response'));\n const status = await hopstr.read();\n if (status.status !== Status.OK) {\n throw new CodeError(`failed to connect via relay with status ${status?.status?.toString() ?? 'undefined'}`, ERR_HOP_REQUEST_FAILED);\n }\n const maConn = streamToMaConnection({\n stream: pbstr.unwrap(),\n remoteAddr: ma,\n localAddr: relayAddr.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),\n logger: this.logger\n });\n this.log('new outbound relayed connection %a', maConn.remoteAddr);\n return await this.upgrader.upgradeOutbound(maConn, {\n transient: status.limit != null,\n onProgress\n });\n }\n catch (err) {\n this.log.error(`Circuit relay dial to destination ${destinationPeer.toString()} via relay ${connection.remotePeer.toString()} failed`, err);\n disconnectOnFailure && await connection.close();\n throw err;\n }\n }\n /**\n * Create a listener\n */\n createListener(options) {\n return createListener({\n connectionManager: this.connectionManager,\n relayStore: this.reservationStore,\n logger: this.logger\n });\n }\n /**\n * Filter check for all Multiaddrs that this transport can listen on\n */\n listenFilter(multiaddrs) {\n multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs];\n return multiaddrs.filter((ma) => {\n return mafmt.Circuit.matches(ma);\n });\n }\n /**\n * Filter check for all Multiaddrs that this transport can dial\n */\n dialFilter(multiaddrs) {\n return this.listenFilter(multiaddrs);\n }\n /**\n * An incoming STOP request means a remote peer wants to dial us via a relay\n */\n async onStop({ connection, stream }) {\n if (!this.reservationStore.hasReservation(connection.remotePeer)) {\n try {\n this.log('dialed via relay we did not have a reservation on, start listening on that relay address');\n await this.transportManager.listen([connection.remoteAddr.encapsulate('/p2p-circuit')]);\n }\n catch (err) {\n // failed to refresh our hitherto unknown relay reservation but allow the connection attempt anyway\n this.log.error('failed to listen on a relay peer we were dialed via but did not have a reservation on', err);\n }\n }\n const signal = AbortSignal.timeout(this.stopTimeout);\n const pbstr = pbStream(stream).pb(StopMessage);\n const request = await pbstr.read({\n signal\n });\n this.log('new circuit relay v2 stop stream from %p with type %s', connection.remotePeer, request.type);\n if (request?.type === undefined) {\n this.log.error('type was missing from circuit v2 stop protocol request from %s', connection.remotePeer);\n await pbstr.write({ type: StopMessage.Type.STATUS, status: Status.MALFORMED_MESSAGE }, {\n signal\n });\n await stream.close();\n return;\n }\n // Validate the STOP request has the required input\n if (request.type !== StopMessage.Type.CONNECT) {\n this.log.error('invalid stop connect request via peer %p', connection.remotePeer);\n await pbstr.write({ type: StopMessage.Type.STATUS, status: Status.UNEXPECTED_MESSAGE }, {\n signal\n });\n await stream.close();\n return;\n }\n if (!isValidStop(request)) {\n this.log.error('invalid stop connect request via peer %p', connection.remotePeer);\n await pbstr.write({ type: StopMessage.Type.STATUS, status: Status.MALFORMED_MESSAGE }, {\n signal\n });\n await stream.close();\n return;\n }\n const remotePeerId = peerIdFromBytes(request.peer.id);\n if ((await this.connectionGater.denyInboundRelayedConnection?.(connection.remotePeer, remotePeerId)) === true) {\n this.log.error('connection gater denied inbound relayed connection from %p', connection.remotePeer);\n await pbstr.write({ type: StopMessage.Type.STATUS, status: Status.PERMISSION_DENIED }, {\n signal\n });\n await stream.close();\n return;\n }\n this.log.trace('sending success response to %p', connection.remotePeer);\n await pbstr.write({ type: StopMessage.Type.STATUS, status: Status.OK }, {\n signal\n });\n const remoteAddr = connection.remoteAddr.encapsulate(`/p2p-circuit/p2p/${remotePeerId.toString()}`);\n const localAddr = this.addressManager.getAddresses()[0];\n const maConn = streamToMaConnection({\n stream: pbstr.unwrap().unwrap(),\n remoteAddr,\n localAddr,\n logger: this.logger\n });\n this.log('new inbound relayed connection %a', maConn.remoteAddr);\n await this.upgrader.upgradeInbound(maConn, {\n transient: request.limit != null\n });\n this.log('%s connection %a upgraded', 'inbound', maConn.remoteAddr);\n }\n}\n//# sourceMappingURL=transport.js.map","import { CircuitRelayTransport } from './transport.js';\nexport function circuitRelayTransport(init = {}) {\n return (components) => {\n return new CircuitRelayTransport(components, init);\n };\n}\n//# sourceMappingURL=index.js.map","// From https://github.com/sindresorhus/random-int/blob/c37741b56f76b9160b0b63dae4e9c64875128146/index.js#L13-L15\nconst randomInteger = (minimum, maximum) => Math.floor((Math.random() * (maximum - minimum + 1)) + minimum);\n\nconst createAbortError = () => {\n\tconst error = new Error('Delay aborted');\n\terror.name = 'AbortError';\n\treturn error;\n};\n\nconst clearMethods = new WeakMap();\n\nexport function createDelay({clearTimeout: defaultClear, setTimeout: defaultSet} = {}) {\n\t// We cannot use `async` here as we need the promise identity.\n\treturn (milliseconds, {value, signal} = {}) => {\n\t\t// TODO: Use `signal?.throwIfAborted()` when targeting Node.js 18.\n\t\tif (signal?.aborted) {\n\t\t\treturn Promise.reject(createAbortError());\n\t\t}\n\n\t\tlet timeoutId;\n\t\tlet settle;\n\t\tlet rejectFunction;\n\t\tconst clear = defaultClear ?? clearTimeout;\n\n\t\tconst signalListener = () => {\n\t\t\tclear(timeoutId);\n\t\t\trejectFunction(createAbortError());\n\t\t};\n\n\t\tconst cleanup = () => {\n\t\t\tif (signal) {\n\t\t\t\tsignal.removeEventListener('abort', signalListener);\n\t\t\t}\n\t\t};\n\n\t\tconst delayPromise = new Promise((resolve, reject) => {\n\t\t\tsettle = () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(value);\n\t\t\t};\n\n\t\t\trejectFunction = reject;\n\t\t\ttimeoutId = (defaultSet ?? setTimeout)(settle, milliseconds);\n\t\t});\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', signalListener, {once: true});\n\t\t}\n\n\t\tclearMethods.set(delayPromise, () => {\n\t\t\tclear(timeoutId);\n\t\t\ttimeoutId = null;\n\t\t\tsettle();\n\t\t});\n\n\t\treturn delayPromise;\n\t};\n}\n\nconst delay = createDelay();\n\nexport default delay;\n\nexport async function rangeDelay(minimum, maximum, options = {}) {\n\treturn delay(randomInteger(minimum, maximum), options);\n}\n\nexport function clearDelay(promise) {\n\tclearMethods.get(promise)?.();\n}\n","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var HolePunch;\n(function (HolePunch) {\n let Type;\n (function (Type) {\n Type[\"UNUSED\"] = \"UNUSED\";\n Type[\"CONNECT\"] = \"CONNECT\";\n Type[\"SYNC\"] = \"SYNC\";\n })(Type = HolePunch.Type || (HolePunch.Type = {}));\n let __TypeValues;\n (function (__TypeValues) {\n __TypeValues[__TypeValues[\"UNUSED\"] = 0] = \"UNUSED\";\n __TypeValues[__TypeValues[\"CONNECT\"] = 100] = \"CONNECT\";\n __TypeValues[__TypeValues[\"SYNC\"] = 300] = \"SYNC\";\n })(__TypeValues || (__TypeValues = {}));\n (function (Type) {\n Type.codec = () => {\n return enumeration(__TypeValues);\n };\n })(Type = HolePunch.Type || (HolePunch.Type = {}));\n let _codec;\n HolePunch.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null) {\n w.uint32(8);\n HolePunch.Type.codec().encode(obj.type, w);\n }\n if (obj.observedAddresses != null) {\n for (const value of obj.observedAddresses) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n observedAddresses: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.type = HolePunch.Type.codec().decode(reader);\n break;\n case 2:\n obj.observedAddresses.push(reader.bytes());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n HolePunch.encode = (obj) => {\n return encodeMessage(obj, HolePunch.codec());\n };\n HolePunch.decode = (buf) => {\n return decodeMessage(buf, HolePunch.codec());\n };\n})(HolePunch || (HolePunch = {}));\n//# sourceMappingURL=message.js.map","/**\n * @packageDocumentation\n *\n * This module exports various matchers that can be used to infer the type of a\n * passed multiaddr.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNS } from '@multiformats/multiaddr-matcher'\n *\n * const ma = multiaddr('/dnsaddr/example.org')\n *\n * DNS.matches(ma) // true - this is a multiaddr with a DNS address at the start\n * ```\n *\n * @example\n *\n * The default matching behaviour ignores any subsequent tuples in the multiaddr.\n * If you want stricter matching you can use `.exactMatch`:\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNS, Circuit } from '@multiformats/multiaddr-matcher'\n *\n * const ma = multiaddr('/dnsaddr/example.org/p2p/QmFoo/p2p-circuit/p2p/QmBar')\n *\n * DNS.exactMatch(ma) // false - this address has extra tuples after the DNS component\n * Circuit.matches(ma) // true\n * Circuit.exactMatch(ma) // true - the extra tuples are circuit relay related\n * ```\n */\nimport { isIPv4, isIPv6 } from '@chainsafe/is-ip';\nimport {} from '@multiformats/multiaddr';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { base64url } from 'multiformats/bases/base64';\n/**\n * Split a multiaddr into path components\n */\nconst toParts = (ma) => {\n return ma.toString().split('/').slice(1);\n};\nconst func = (fn) => {\n return {\n match: (vals) => {\n if (vals.length < 1) {\n return false;\n }\n if (fn(vals[0])) {\n return vals.slice(1);\n }\n return false;\n },\n pattern: 'fn'\n };\n};\nconst literal = (str) => {\n return {\n match: (vals) => func((val) => val === str).match(vals),\n pattern: str\n };\n};\nconst string = () => {\n return {\n match: (vals) => func((val) => typeof val === 'string').match(vals),\n pattern: '{string}'\n };\n};\nconst number = () => {\n return {\n match: (vals) => func((val) => !isNaN(parseInt(val))).match(vals),\n pattern: '{number}'\n };\n};\nconst peerId = () => {\n return {\n match: (vals) => {\n if (vals.length < 2) {\n return false;\n }\n if (vals[0] !== 'p2p' && vals[0] !== 'ipfs') {\n return false;\n }\n // Q is RSA, 1 is Ed25519 or Secp256k1\n if (vals[1].startsWith('Q') || vals[1].startsWith('1')) {\n try {\n base58btc.decode(`z${vals[1]}`);\n }\n catch (err) {\n return false;\n }\n }\n else {\n return false;\n }\n return vals.slice(2);\n },\n pattern: '/p2p/{peerid}'\n };\n};\nconst certhash = () => {\n return {\n match: (vals) => {\n if (vals.length < 2) {\n return false;\n }\n if (vals[0] !== 'certhash') {\n return false;\n }\n try {\n base64url.decode(vals[1]);\n }\n catch {\n return false;\n }\n return vals.slice(2);\n },\n pattern: '/certhash/{certhash}'\n };\n};\nconst optional = (matcher) => {\n return {\n match: (vals) => {\n const result = matcher.match(vals);\n if (result === false) {\n return vals;\n }\n return result;\n },\n pattern: `optional(${matcher.pattern})`\n };\n};\nconst or = (...matchers) => {\n return {\n match: (vals) => {\n let matches;\n for (const matcher of matchers) {\n const result = matcher.match(vals);\n // no match\n if (result === false) {\n continue;\n }\n // choose greediest matcher\n if (matches == null || result.length < matches.length) {\n matches = result;\n }\n }\n if (matches == null) {\n return false;\n }\n return matches;\n },\n pattern: `or(${matchers.map(m => m.pattern).join(', ')})`\n };\n};\nconst and = (...matchers) => {\n return {\n match: (vals) => {\n for (const matcher of matchers) {\n // pass what's left of the array\n const result = matcher.match(vals);\n // no match\n if (result === false) {\n return false;\n }\n vals = result;\n }\n return vals;\n },\n pattern: `and(${matchers.map(m => m.pattern).join(', ')})`\n };\n};\nfunction fmt(...matchers) {\n function match(ma) {\n let parts = toParts(ma);\n for (const matcher of matchers) {\n const result = matcher.match(parts);\n if (result === false) {\n return false;\n }\n parts = result;\n }\n return parts;\n }\n function matches(ma) {\n const result = match(ma);\n return result !== false;\n }\n function exactMatch(ma) {\n const result = match(ma);\n if (result === false) {\n return false;\n }\n return result.length === 0;\n }\n return {\n matches,\n exactMatch\n };\n}\n/**\n * DNS matchers\n */\nconst _DNS4 = and(literal('dns4'), string());\nconst _DNS6 = and(literal('dns6'), string());\nconst _DNSADDR = and(literal('dnsaddr'), string());\nconst _DNS = and(literal('dns'), string());\n/**\n * Matches dns4 addresses.\n *\n * Use {@link DNS DNS} instead to match any type of DNS address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNS4 } from '@multiformats/multiaddr-matcher'\n *\n * DNS4.matches(multiaddr('/dns4/example.org')) // true\n * ```\n */\nexport const DNS4 = fmt(_DNS4, optional(peerId()));\n/**\n * Matches dns6 addresses.\n *\n * Use {@link DNS DNS} instead to match any type of DNS address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNS6 } from '@multiformats/multiaddr-matcher'\n *\n * DNS6.matches(multiaddr('/dns6/example.org')) // true\n * ```\n */\nexport const DNS6 = fmt(_DNS6, optional(peerId()));\n/**\n * Matches dnsaddr addresses.\n *\n * Use {@link DNS DNS} instead to match any type of DNS address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNSADDR } from '@multiformats/multiaddr-matcher'\n *\n * DNSADDR.matches(multiaddr('/dnsaddr/example.org')) // true\n * DNSADDR.matches(multiaddr('/dnsaddr/example.org/p2p/Qmfoo')) // true\n * ```\n */\nexport const DNSADDR = fmt(_DNSADDR, optional(peerId()));\n/**\n * Matches any dns address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { DNS } from '@multiformats/multiaddr-matcher'\n *\n * DNS.matches(multiaddr('/dnsaddr/example.org')) // true\n * DNS.matches(multiaddr('/dns4/example.org')) // true\n * DNS.matches(multiaddr('/dns6/example.org')) // true\n * DNS.matches(multiaddr('/dns6/example.org/p2p/Qmfoo')) // true\n * ```\n */\nexport const DNS = fmt(or(_DNS, _DNSADDR, _DNS4, _DNS6), optional(peerId()));\nconst _IP4 = and(literal('ip4'), func(isIPv4));\nconst _IP6 = and(literal('ip6'), func(isIPv6));\nconst _IP = or(_IP4, _IP6);\nconst _IP_OR_DOMAIN = or(_IP, _DNS, _DNS4, _DNS6, _DNSADDR);\n/**\n * A matcher for addresses that start with IP or DNS tuples.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { IP_OR_DOMAIN } from '@multiformats/multiaddr-matcher'\n *\n * IP_OR_DOMAIN.matches(multiaddr('/ip4/123.123.123.123')) // true\n * IP_OR_DOMAIN.matches(multiaddr('/ip4/123.123.123.123/p2p/QmFoo')) // true\n * IP_OR_DOMAIN.matches(multiaddr('/dns/example.com/p2p/QmFoo')) // true\n * IP_OR_DOMAIN.matches(multiaddr('/p2p/QmFoo')) // false\n * ```\n */\nexport const IP_OR_DOMAIN = fmt(or(_IP, and(or(_DNS, _DNSADDR, _DNS4, _DNS6), optional(peerId()))));\n/**\n * Matches ip4 addresses.\n *\n * Use {@link IP IP} instead to match any ip4/ip6 address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { IP4 } from '@multiformats/multiaddr-matcher'\n *\n * const ma = multiaddr('/ip4/123.123.123.123')\n *\n * IP4.matches(ma) // true\n * ```\n */\nexport const IP4 = fmt(_IP4);\n/**\n * Matches ip6 addresses.\n *\n * Use {@link IP IP} instead to match any ip4/ip6 address.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { IP6 } from '@multiformats/multiaddr-matcher'\n *\n * const ma = multiaddr('/ip6/fe80::1cc1:a3b8:322f:cf22')\n *\n * IP6.matches(ma) // true\n * ```\n */\nexport const IP6 = fmt(_IP6);\n/**\n * Matches ip4 or ip6 addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { IP } from '@multiformats/multiaddr-matcher'\n *\n * IP.matches(multiaddr('/ip4/123.123.123.123')) // true\n * IP.matches(multiaddr('/ip6/fe80::1cc1:a3b8:322f:cf22')) // true\n * ```\n */\nexport const IP = fmt(_IP);\nconst _TCP = and(_IP_OR_DOMAIN, literal('tcp'), number());\nconst _UDP = and(_IP_OR_DOMAIN, literal('udp'), number());\n/**\n * Matches TCP addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { TCP } from '@multiformats/multiaddr-matcher'\n *\n * TCP.matches(multiaddr('/ip4/123.123.123.123/tcp/1234')) // true\n * ```\n */\nexport const TCP = fmt(and(_TCP, optional(peerId())));\n/**\n * Matches UDP addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { UDP } from '@multiformats/multiaddr-matcher'\n *\n * UDP.matches(multiaddr('/ip4/123.123.123.123/udp/1234')) // true\n * ```\n */\nexport const UDP = fmt(_UDP);\nconst _QUIC = and(_UDP, literal('quic'));\nconst _QUICV1 = and(_UDP, literal('quic-v1'));\nconst QUIC_V0_OR_V1 = or(_QUIC, _QUICV1);\n/**\n * Matches QUIC addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { QUIC } from '@multiformats/multiaddr-matcher'\n *\n * QUIC.matches(multiaddr('/ip4/123.123.123.123/udp/1234/quic')) // true\n * ```\n */\nexport const QUIC = fmt(_QUIC);\n/**\n * Matches QUICv1 addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { QUICV1 } from '@multiformats/multiaddr-matcher'\n *\n * QUICV1.matches(multiaddr('/ip4/123.123.123.123/udp/1234/quic-v1')) // true\n * ```\n */\nexport const QUICV1 = fmt(_QUICV1);\nconst _WEB = or(_IP_OR_DOMAIN, _TCP, _UDP, _QUIC, _QUICV1);\nconst _WebSockets = or(and(_WEB, literal('ws'), optional(peerId())));\n/**\n * Matches WebSocket addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { WebSockets } from '@multiformats/multiaddr-matcher'\n *\n * WebSockets.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/ws')) // true\n * ```\n */\nexport const WebSockets = fmt(_WebSockets);\nconst _WebSocketsSecure = or(and(_WEB, literal('wss'), optional(peerId())), and(_WEB, literal('tls'), literal('ws'), optional(peerId())));\n/**\n * Matches secure WebSocket addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { WebSocketsSecure } from '@multiformats/multiaddr-matcher'\n *\n * WebSocketsSecure.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/wss')) // true\n * ```\n */\nexport const WebSocketsSecure = fmt(_WebSocketsSecure);\nconst _WebRTCDirect = and(_UDP, literal('webrtc-direct'), optional(certhash()), optional(certhash()), optional(peerId()));\n/**\n * Matches WebRTC-direct addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { WebRTCDirect } from '@multiformats/multiaddr-matcher'\n *\n * WebRTCDirect.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmFoo/webrtc-direct/certhash/u....')) // true\n * ```\n */\nexport const WebRTCDirect = fmt(_WebRTCDirect);\nconst _WebTransport = and(_QUICV1, literal('webtransport'), optional(certhash()), optional(certhash()), optional(peerId()));\n/**\n * Matches WebTransport addresses.\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { WebRTCDirect } from '@multiformats/multiaddr-matcher'\n *\n * WebRTCDirect.matches(multiaddr('/ip4/123.123.123.123/udp/1234/quic-v1/webtransport/certhash/u..../certhash/u..../p2p/QmFoo')) // true\n * ```\n */\nexport const WebTransport = fmt(_WebTransport);\nconst _P2P = or(_WebSockets, _WebSocketsSecure, and(_TCP, optional(peerId())), and(QUIC_V0_OR_V1, optional(peerId())), and(_IP_OR_DOMAIN, optional(peerId())), _WebRTCDirect, _WebTransport, peerId());\n/**\n * Matches peer addresses\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { P2P } from '@multiformats/multiaddr-matcher'\n *\n * P2P.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmFoo')) // true\n * ```\n */\nexport const P2P = fmt(_P2P);\nconst _Circuit = and(_P2P, literal('p2p-circuit'), peerId());\n/**\n * Matches circuit relay addresses\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { Circuit } from '@multiformats/multiaddr-matcher'\n *\n * Circuit.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmRelay/p2p-circuit/p2p/QmTarget')) // true\n * ```\n */\nexport const Circuit = fmt(_Circuit);\nconst _WebRTC = or(and(_P2P, literal('p2p-circuit'), literal('webrtc'), optional(peerId())), and(_P2P, literal('webrtc'), optional(peerId())), literal('webrtc'));\n/**\n * Matches WebRTC addresses\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { WebRTC } from '@multiformats/multiaddr-matcher'\n *\n * WebRTC.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmRelay/p2p-circuit/webrtc/p2p/QmTarget')) // true\n * ```\n */\nexport const WebRTC = fmt(_WebRTC);\nconst _HTTP = or(and(_IP_OR_DOMAIN, literal('tcp'), number(), literal('http'), optional(peerId())), and(_IP_OR_DOMAIN, literal('http'), optional(peerId())));\n/**\n * Matches HTTP addresses\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { HTTP } from '@multiformats/multiaddr-matcher'\n *\n * HTTP.matches(multiaddr('/dns/example.org/http')) // true\n * ```\n */\nexport const HTTP = fmt(_HTTP);\nconst _HTTPS = or(and(_IP_OR_DOMAIN, literal('tcp'), or(and(literal('443'), literal('http')), and(number(), literal('https'))), optional(peerId())), and(_IP_OR_DOMAIN, literal('tls'), literal('http'), optional(peerId())), and(_IP_OR_DOMAIN, literal('https'), optional(peerId())));\n/**\n * Matches HTTPS addresses\n *\n * @example\n *\n * ```ts\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { HTTP } from '@multiformats/multiaddr-matcher'\n *\n * HTTP.matches(multiaddr('/dns/example.org/tls/http')) // true\n * ```\n */\nexport const HTTPS = fmt(_HTTPS);\n//# sourceMappingURL=index.js.map","import { isPrivateIp } from '@libp2p/utils/private-ip';\nimport {} from '@multiformats/multiaddr';\nimport { Circuit, IP, DNS } from '@multiformats/multiaddr-matcher';\n/**\n * Returns true if the passed multiaddr is public, not relayed and we have a\n * transport that can dial it\n */\nexport function isPublicAndDialable(ma, transportManager) {\n // ignore circuit relay\n if (Circuit.matches(ma)) {\n return false;\n }\n const transport = transportManager.dialTransportForMultiaddr(ma);\n if (transport == null) {\n return false;\n }\n // dns addresses are probably public?\n if (DNS.matches(ma)) {\n return true;\n }\n // ensure we have only IPv4/IPv6 addresses\n if (!IP.matches(ma)) {\n return false;\n }\n return isPrivateIp(ma.toOptions().host) === false;\n}\n//# sourceMappingURL=utils.js.map","import { CodeError, ERR_INVALID_MESSAGE, serviceDependencies } from '@libp2p/interface';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport delay from 'delay';\nimport { pbStream } from 'it-protobuf-stream';\nimport { HolePunch } from './pb/message.js';\nimport { isPublicAndDialable } from './utils.js';\nimport { multicodec } from './index.js';\n// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#rpc-messages\nconst MAX_DCUTR_MESSAGE_SIZE = 1024 * 4;\n// ensure the dial has a high priority to jump to the head of the dial queue\nconst DCUTR_DIAL_PRIORITY = 100;\nconst defaultValues = {\n // https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/holepunch/holepuncher.go#L27\n timeout: 5000,\n // https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/holepunch/holepuncher.go#L28\n retries: 3,\n maxInboundStreams: 1,\n maxOutboundStreams: 1\n};\nexport class DefaultDCUtRService {\n started;\n timeout;\n retries;\n maxInboundStreams;\n maxOutboundStreams;\n peerStore;\n registrar;\n connectionManager;\n addressManager;\n transportManager;\n topologyId;\n log;\n constructor(components, init) {\n this.log = components.logger.forComponent('libp2p:dcutr');\n this.started = false;\n this.peerStore = components.peerStore;\n this.registrar = components.registrar;\n this.addressManager = components.addressManager;\n this.connectionManager = components.connectionManager;\n this.transportManager = components.transportManager;\n this.timeout = init.timeout ?? defaultValues.timeout;\n this.retries = init.retries ?? defaultValues.retries;\n this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams;\n this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams;\n }\n [Symbol.toStringTag] = '@libp2p/dcutr';\n [serviceDependencies] = [\n '@libp2p/identify'\n ];\n isStarted() {\n return this.started;\n }\n async start() {\n if (this.started) {\n return;\n }\n // register for notifications of when peers that support DCUtR connect\n // nb. requires the identify service to be enabled\n this.topologyId = await this.registrar.register(multicodec, {\n notifyOnTransient: true,\n onConnect: (peerId, connection) => {\n if (!connection.transient) {\n // the connection is already direct, no upgrade is required\n return;\n }\n // the inbound peer starts the connection upgrade\n if (connection.direction !== 'inbound') {\n return;\n }\n this.upgradeInbound(connection)\n .catch(err => {\n this.log.error('error during outgoing DCUtR attempt', err);\n });\n }\n });\n await this.registrar.handle(multicodec, (data) => {\n void this.handleIncomingUpgrade(data.stream, data.connection).catch(err => {\n this.log.error('error during incoming DCUtR attempt', err);\n data.stream.abort(err);\n });\n }, {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams,\n runOnTransientConnection: true\n });\n this.started = true;\n }\n async stop() {\n await this.registrar.unhandle(multicodec);\n if (this.topologyId != null) {\n this.registrar.unregister(this.topologyId);\n }\n this.started = false;\n }\n /**\n * Perform the inbound connection upgrade as B\n *\n * @see https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol\n */\n async upgradeInbound(relayedConnection) {\n // Upon observing the new connection, the inbound peer (here B) checks the\n // addresses advertised by A via identify.\n //\n // If that set includes public addresses, then A may be reachable by a direct\n // connection, in which case B attempts a unilateral connection upgrade by\n // initiating a direct connection to A.\n if (await this.attemptUnilateralConnectionUpgrade(relayedConnection)) {\n return;\n }\n let stream;\n for (let i = 0; i < this.retries; i++) {\n const options = {\n signal: AbortSignal.timeout(this.timeout)\n };\n try {\n // 1. B opens a stream to A using the /libp2p/dcutr protocol.\n stream = await relayedConnection.newStream([multicodec], {\n signal: options.signal,\n runOnTransientConnection: true\n });\n const pb = pbStream(stream, {\n maxDataLength: MAX_DCUTR_MESSAGE_SIZE\n }).pb(HolePunch);\n // 2. B sends to A a Connect message containing its observed (and\n // possibly predicted) addresses from identify and starts a timer\n // to measure RTT of the relay connection.\n this.log('B sending connect to %p', relayedConnection.remotePeer);\n const connectTimer = Date.now();\n await pb.write({\n type: HolePunch.Type.CONNECT,\n observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)\n }, options);\n this.log('B receiving connect from %p', relayedConnection.remotePeer);\n // 4. Upon receiving the Connect, B sends a Sync message\n const connect = await pb.read(options);\n if (connect.type !== HolePunch.Type.CONNECT) {\n this.log('A sent wrong message type');\n throw new CodeError('DCUtR message type was incorrect', ERR_INVALID_MESSAGE);\n }\n const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses);\n if (multiaddrs.length === 0) {\n this.log('A did not have any dialable multiaddrs');\n throw new CodeError('DCUtR connect message had no multiaddrs', ERR_INVALID_MESSAGE);\n }\n const rtt = Date.now() - connectTimer;\n this.log('A sending sync, rtt %dms', rtt);\n await pb.write({\n type: HolePunch.Type.SYNC,\n observedAddresses: []\n }, options);\n this.log('A waiting for half RTT');\n // ..and starts a timer for half the RTT measured from the time between\n // sending the initial Connect and receiving the response\n await delay(rtt / 2);\n // TODO: when we have a QUIC transport, the dial step is different - for\n // now we only have tcp support\n // https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol\n this.log('B dialing', multiaddrs);\n // Upon expiry of the timer, B dials the address to A.\n const conn = await this.connectionManager.openConnection(multiaddrs, {\n signal: options.signal,\n priority: DCUTR_DIAL_PRIORITY\n });\n this.log('DCUtR to %p succeeded to address %a, closing relayed connection', relayedConnection.remotePeer, conn.remoteAddr);\n await relayedConnection.close(options);\n break;\n }\n catch (err) {\n this.log.error('error while attempting DCUtR on attempt %d of %d', i + 1, this.retries, err);\n stream?.abort(err);\n if (i === this.retries) {\n throw err;\n }\n }\n finally {\n if (stream != null) {\n await stream.close(options);\n }\n }\n }\n }\n /**\n * This is performed when A has dialed B via a relay but A also has a public\n * address that B can dial directly\n */\n async attemptUnilateralConnectionUpgrade(relayedConnection) {\n // Upon observing the new connection, the inbound peer (here B) checks the\n // addresses advertised by A via identify.\n const peerInfo = await this.peerStore.get(relayedConnection.remotePeer);\n // If that set includes public addresses, then A may be reachable by a direct\n // connection, in which case B attempts a unilateral connection upgrade by\n // initiating a direct connection to A.\n const publicAddresses = peerInfo.addresses\n .map(address => {\n const ma = address.multiaddr;\n // ensure all multiaddrs have the peer id\n if (ma.getPeerId() == null) {\n return ma.encapsulate(`/p2p/${relayedConnection.remotePeer}`);\n }\n return ma;\n })\n .filter(ma => {\n return isPublicAndDialable(ma, this.transportManager);\n });\n if (publicAddresses.length > 0) {\n const signal = AbortSignal.timeout(this.timeout);\n try {\n this.log('attempting unilateral connection upgrade to %a', publicAddresses);\n // force-dial the multiaddr(s), otherwise `connectionManager.openConnection`\n // will return the existing relayed connection\n const connection = await this.connectionManager.openConnection(publicAddresses, {\n signal,\n force: true\n });\n if (connection.transient) {\n throw new Error('Could not open a new, non-transient, connection');\n }\n this.log('unilateral connection upgrade to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);\n await relayedConnection.close({\n signal\n });\n return true;\n }\n catch (err) {\n this.log.error('unilateral connection upgrade to %p on addresses %a failed', relayedConnection.remotePeer, publicAddresses, err);\n }\n }\n else {\n this.log('peer %p has no public addresses, not attempting unilateral connection upgrade', relayedConnection.remotePeer);\n }\n // no public addresses or failed to dial public addresses\n return false;\n }\n /**\n * Perform the connection upgrade as A\n *\n * @see https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol\n */\n async handleIncomingUpgrade(stream, relayedConnection) {\n const options = {\n signal: AbortSignal.timeout(this.timeout)\n };\n try {\n const pb = pbStream(stream, {\n maxDataLength: MAX_DCUTR_MESSAGE_SIZE\n }).pb(HolePunch);\n this.log('A receiving connect');\n // 3. Upon receiving the Connect, A responds back with a Connect message\n // containing its observed (and possibly predicted) addresses.\n const connect = await pb.read(options);\n if (connect.type !== HolePunch.Type.CONNECT) {\n this.log('B sent wrong message type');\n throw new CodeError('DCUtR message type was incorrect', ERR_INVALID_MESSAGE);\n }\n if (connect.observedAddresses.length === 0) {\n this.log('B sent no multiaddrs');\n throw new CodeError('DCUtR connect message had no multiaddrs', ERR_INVALID_MESSAGE);\n }\n const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses);\n if (multiaddrs.length === 0) {\n this.log('B had no dialable multiaddrs');\n throw new CodeError('DCUtR connect message had no dialable multiaddrs', ERR_INVALID_MESSAGE);\n }\n this.log('A sending connect');\n await pb.write({\n type: HolePunch.Type.CONNECT,\n observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)\n });\n this.log('A receiving sync');\n const sync = await pb.read(options);\n if (sync.type !== HolePunch.Type.SYNC) {\n throw new CodeError('DCUtR message type was incorrect', ERR_INVALID_MESSAGE);\n }\n // TODO: when we have a QUIC transport, the dial step is different - for\n // now we only have tcp support\n // https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol\n // Upon receiving the Sync, A immediately dials the address to B\n this.log('A dialing', multiaddrs);\n const connection = await this.connectionManager.openConnection(multiaddrs, {\n signal: options.signal,\n priority: DCUTR_DIAL_PRIORITY,\n force: true\n });\n this.log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);\n await relayedConnection.close(options);\n }\n catch (err) {\n this.log.error('incoming DCUtR from %p failed', relayedConnection.remotePeer, err);\n stream.abort(err);\n }\n finally {\n await stream.close(options);\n }\n }\n /**\n * Takes the `addr` and converts it to a Multiaddr if possible\n */\n getDialableMultiaddrs(addrs) {\n const output = [];\n for (const addr of addrs) {\n if (addr == null || addr.length === 0) {\n continue;\n }\n try {\n const ma = multiaddr(addr);\n if (!isPublicAndDialable(ma, this.transportManager)) {\n continue;\n }\n output.push(ma);\n }\n catch { }\n }\n return output;\n }\n}\n//# sourceMappingURL=dcutr.js.map","/**\n * @packageDocumentation\n *\n * Direct Connection Upgrade through Relay (DCUtR) is a protocol that allows two\n * nodes to connect to each other who would otherwise be prevented doing so due\n * to being behind NATed connections or firewalls.\n *\n * The protocol involves making a relayed connection between the two peers and\n * using the relay to synchronise connection timings so that they dial each other\n * at precisely the same moment.\n *\n * @example\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { circuitRelayTransport } from '@libp2p/circuit-relay-v2'\n * import { tcp } from '@libp2p/tcp'\n * import { identify } from '@libp2p/identify'\n * import { dcutr } from '@libp2p/dcutr'\n * import { multiaddr } from '@multiformats/multiaddr'\n *\n * const node = await createLibp2p({\n * transports: [\n * circuitRelayTransport(),\n * tcp()\n * ],\n * services: {\n * identify: identify(),\n * dcutr: dcutr()\n * }\n * })\n *\n * // QmTarget is a peer that is behind a NAT, supports TCP and has a relay\n * // reservation\n * const ma = multiaddr('/ip4/.../p2p/QmRelay/p2p-circuit/p2p/QmTarget')\n * await node.dial(ma)\n *\n * // after a while the connection should automatically get upgraded to a\n * // direct connection (e.g. non-transient)\n * while (true) {\n * const connections = node.getConnections()\n *\n * if (connections.find(conn => conn.transient === false)) {\n * console.info('have direct connection')\n * break\n * } else {\n * console.info('have relayed connection')\n *\n * // wait a few seconds to see if it's succeeded yet\n * await new Promise((resolve) => {\n * setTimeout(() => resolve(), 5000)\n * })\n * }\n * }\n * ```\n */\nimport { DefaultDCUtRService } from './dcutr.js';\n/**\n * The DCUtR protocol\n */\nexport const multicodec = '/libp2p/dcutr';\nexport function dcutr(init = {}) {\n return (components) => new DefaultDCUtRService(components, init);\n}\n//# sourceMappingURL=index.js.map","export const PROTOCOL_VERSION = 'ipfs/0.1.0'; // deprecated\nexport const MULTICODEC_IDENTIFY = '/ipfs/id/1.0.0'; // deprecated\nexport const MULTICODEC_IDENTIFY_PUSH = '/ipfs/id/push/1.0.0'; // deprecated\nexport const IDENTIFY_PROTOCOL_VERSION = '0.1.0';\nexport const MULTICODEC_IDENTIFY_PROTOCOL_NAME = 'id';\nexport const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME = 'id/push';\nexport const MULTICODEC_IDENTIFY_PROTOCOL_VERSION = '1.0.0';\nexport const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION = '1.0.0';\n//# sourceMappingURL=consts.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Identify;\n(function (Identify) {\n let _codec;\n Identify.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.protocolVersion != null) {\n w.uint32(42);\n w.string(obj.protocolVersion);\n }\n if (obj.agentVersion != null) {\n w.uint32(50);\n w.string(obj.agentVersion);\n }\n if (obj.publicKey != null) {\n w.uint32(10);\n w.bytes(obj.publicKey);\n }\n if (obj.listenAddrs != null) {\n for (const value of obj.listenAddrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (obj.observedAddr != null) {\n w.uint32(34);\n w.bytes(obj.observedAddr);\n }\n if (obj.protocols != null) {\n for (const value of obj.protocols) {\n w.uint32(26);\n w.string(value);\n }\n }\n if (obj.signedPeerRecord != null) {\n w.uint32(66);\n w.bytes(obj.signedPeerRecord);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n listenAddrs: [],\n protocols: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 5:\n obj.protocolVersion = reader.string();\n break;\n case 6:\n obj.agentVersion = reader.string();\n break;\n case 1:\n obj.publicKey = reader.bytes();\n break;\n case 2:\n obj.listenAddrs.push(reader.bytes());\n break;\n case 4:\n obj.observedAddr = reader.bytes();\n break;\n case 3:\n obj.protocols.push(reader.string());\n break;\n case 8:\n obj.signedPeerRecord = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Identify.encode = (obj) => {\n return encodeMessage(obj, Identify.codec());\n };\n Identify.decode = (buf) => {\n return decodeMessage(buf, Identify.codec());\n };\n})(Identify || (Identify = {}));\n//# sourceMappingURL=message.js.map","/* eslint-disable complexity */\nimport { CodeError, ERR_NOT_FOUND, setMaxListeners } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';\nimport { multiaddr, protocols } from '@multiformats/multiaddr';\nimport { IP_OR_DOMAIN } from '@multiformats/multiaddr-matcher';\nimport { pbStream } from 'it-protobuf-stream';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { isNode, isBrowser, isWebWorker, isElectronMain, isElectronRenderer, isReactNative } from 'wherearewe';\nimport { IDENTIFY_PROTOCOL_VERSION, MULTICODEC_IDENTIFY_PROTOCOL_NAME, MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME, MULTICODEC_IDENTIFY_PROTOCOL_VERSION, MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION } from './consts.js';\nimport { Identify as IdentifyMessage } from './pb/message.js';\n// https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/identify/id.go#L52\nconst MAX_IDENTIFY_MESSAGE_SIZE = 1024 * 8;\nconst defaultValues = {\n protocolPrefix: 'ipfs',\n // https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/identify/id.go#L48\n timeout: 60000,\n maxInboundStreams: 1,\n maxOutboundStreams: 1,\n maxPushIncomingStreams: 1,\n maxPushOutgoingStreams: 1,\n maxObservedAddresses: 10,\n maxIdentifyMessageSize: 8192,\n runOnConnectionOpen: true,\n runOnTransientConnection: true\n};\nexport class Identify {\n identifyProtocolStr;\n identifyPushProtocolStr;\n host;\n started;\n timeout;\n peerId;\n peerStore;\n registrar;\n connectionManager;\n addressManager;\n maxInboundStreams;\n maxOutboundStreams;\n maxPushIncomingStreams;\n maxPushOutgoingStreams;\n maxIdentifyMessageSize;\n maxObservedAddresses;\n events;\n runOnTransientConnection;\n log;\n constructor(components, init = {}) {\n this.started = false;\n this.peerId = components.peerId;\n this.peerStore = components.peerStore;\n this.registrar = components.registrar;\n this.addressManager = components.addressManager;\n this.connectionManager = components.connectionManager;\n this.events = components.events;\n this.log = components.logger.forComponent('libp2p:identify');\n this.identifyProtocolStr = `/${init.protocolPrefix ?? defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PROTOCOL_VERSION}`;\n this.identifyPushProtocolStr = `/${init.protocolPrefix ?? defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION}`;\n this.timeout = init.timeout ?? defaultValues.timeout;\n this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams;\n this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams;\n this.maxPushIncomingStreams = init.maxPushIncomingStreams ?? defaultValues.maxPushIncomingStreams;\n this.maxPushOutgoingStreams = init.maxPushOutgoingStreams ?? defaultValues.maxPushOutgoingStreams;\n this.maxIdentifyMessageSize = init.maxIdentifyMessageSize ?? defaultValues.maxIdentifyMessageSize;\n this.maxObservedAddresses = init.maxObservedAddresses ?? defaultValues.maxObservedAddresses;\n this.runOnTransientConnection = init.runOnTransientConnection ?? defaultValues.runOnTransientConnection;\n // Store self host metadata\n this.host = {\n protocolVersion: `${init.protocolPrefix ?? defaultValues.protocolPrefix}/${IDENTIFY_PROTOCOL_VERSION}`,\n agentVersion: init.agentVersion ?? `${components.nodeInfo.name}/${components.nodeInfo.version}`\n };\n if (init.runOnConnectionOpen ?? defaultValues.runOnConnectionOpen) {\n // When a new connection happens, trigger identify\n components.events.addEventListener('connection:open', (evt) => {\n const connection = evt.detail;\n this.identify(connection).catch(err => { this.log.error('error during identify trigged by connection:open', err); });\n });\n }\n // When self peer record changes, trigger identify-push\n components.events.addEventListener('self:peer:update', (evt) => {\n void this.push().catch(err => { this.log.error(err); });\n });\n // Append user agent version to default AGENT_VERSION depending on the environment\n if (this.host.agentVersion === `${components.nodeInfo.name}/${components.nodeInfo.version}`) {\n if (isNode || isElectronMain) {\n this.host.agentVersion += ` UserAgent=${globalThis.process.version}`;\n }\n else if (isBrowser || isWebWorker || isElectronRenderer || isReactNative) {\n this.host.agentVersion += ` UserAgent=${globalThis.navigator.userAgent}`;\n }\n }\n }\n isStarted() {\n return this.started;\n }\n async start() {\n if (this.started) {\n return;\n }\n await this.peerStore.merge(this.peerId, {\n metadata: {\n AgentVersion: uint8ArrayFromString(this.host.agentVersion),\n ProtocolVersion: uint8ArrayFromString(this.host.protocolVersion)\n }\n });\n await this.registrar.handle(this.identifyProtocolStr, (data) => {\n void this._handleIdentify(data).catch(err => {\n this.log.error(err);\n });\n }, {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams,\n runOnTransientConnection: this.runOnTransientConnection\n });\n await this.registrar.handle(this.identifyPushProtocolStr, (data) => {\n void this._handlePush(data).catch(err => {\n this.log.error(err);\n });\n }, {\n maxInboundStreams: this.maxPushIncomingStreams,\n maxOutboundStreams: this.maxPushOutgoingStreams,\n runOnTransientConnection: this.runOnTransientConnection\n });\n this.started = true;\n }\n async stop() {\n await this.registrar.unhandle(this.identifyProtocolStr);\n await this.registrar.unhandle(this.identifyPushProtocolStr);\n this.started = false;\n }\n /**\n * Send an Identify Push update to the list of connections\n */\n async pushToConnections(connections) {\n const listenAddresses = this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code));\n const peerRecord = new PeerRecord({\n peerId: this.peerId,\n multiaddrs: listenAddresses\n });\n const signedPeerRecord = await RecordEnvelope.seal(peerRecord, this.peerId);\n const supportedProtocols = this.registrar.getProtocols();\n const peer = await this.peerStore.get(this.peerId);\n const agentVersion = uint8ArrayToString(peer.metadata.get('AgentVersion') ?? uint8ArrayFromString(this.host.agentVersion));\n const protocolVersion = uint8ArrayToString(peer.metadata.get('ProtocolVersion') ?? uint8ArrayFromString(this.host.protocolVersion));\n const pushes = connections.map(async (connection) => {\n let stream;\n const signal = AbortSignal.timeout(this.timeout);\n setMaxListeners(Infinity, signal);\n try {\n stream = await connection.newStream(this.identifyPushProtocolStr, {\n signal,\n runOnTransientConnection: this.runOnTransientConnection\n });\n const pb = pbStream(stream, {\n maxDataLength: this.maxIdentifyMessageSize ?? MAX_IDENTIFY_MESSAGE_SIZE\n }).pb(IdentifyMessage);\n await pb.write({\n listenAddrs: listenAddresses.map(ma => ma.bytes),\n signedPeerRecord: signedPeerRecord.marshal(),\n protocols: supportedProtocols,\n agentVersion,\n protocolVersion\n }, {\n signal\n });\n await stream.close({\n signal\n });\n }\n catch (err) {\n // Just log errors\n this.log.error('could not push identify update to peer', err);\n stream?.abort(err);\n }\n });\n await Promise.all(pushes);\n }\n /**\n * Calls `push` on all peer connections\n */\n async push() {\n // Do not try to push if we are not running\n if (!this.isStarted()) {\n return;\n }\n const connections = [];\n await Promise.all(this.connectionManager.getConnections().map(async (conn) => {\n try {\n const peer = await this.peerStore.get(conn.remotePeer);\n if (!peer.protocols.includes(this.identifyPushProtocolStr)) {\n return;\n }\n connections.push(conn);\n }\n catch (err) {\n if (err.code !== ERR_NOT_FOUND) {\n throw err;\n }\n }\n }));\n await this.pushToConnections(connections);\n }\n async _identify(connection, options = {}) {\n let stream;\n if (options.signal == null) {\n const signal = AbortSignal.timeout(this.timeout);\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n try {\n stream = await connection.newStream(this.identifyProtocolStr, {\n ...options,\n runOnTransientConnection: this.runOnTransientConnection\n });\n const pb = pbStream(stream, {\n maxDataLength: this.maxIdentifyMessageSize ?? MAX_IDENTIFY_MESSAGE_SIZE\n }).pb(IdentifyMessage);\n const message = await pb.read(options);\n await stream.close(options);\n return message;\n }\n catch (err) {\n this.log.error('error while reading identify message', err);\n stream?.abort(err);\n throw err;\n }\n }\n async identify(connection, options = {}) {\n const message = await this._identify(connection, options);\n const { publicKey, protocols, observedAddr } = message;\n if (publicKey == null) {\n throw new CodeError('public key was missing from identify message', 'ERR_MISSING_PUBLIC_KEY');\n }\n const id = await peerIdFromKeys(publicKey);\n if (!connection.remotePeer.equals(id)) {\n throw new CodeError('identified peer does not match the expected peer', 'ERR_INVALID_PEER');\n }\n if (this.peerId.equals(id)) {\n throw new CodeError('identified peer is our own peer id?', 'ERR_INVALID_PEER');\n }\n // Get the observedAddr if there is one\n const cleanObservedAddr = getCleanMultiaddr(observedAddr);\n this.log('identify completed for peer %p and protocols %o', id, protocols);\n this.log('our observed address is %a', cleanObservedAddr);\n if (cleanObservedAddr != null &&\n this.addressManager.getObservedAddrs().length < (this.maxObservedAddresses ?? Infinity)) {\n this.log('storing our observed address %a', cleanObservedAddr);\n this.addressManager.addObservedAddr(cleanObservedAddr);\n }\n return this.#consumeIdentifyMessage(connection, message);\n }\n /**\n * Sends the `Identify` response with the Signed Peer Record\n * to the requesting peer over the given `connection`\n */\n async _handleIdentify(data) {\n const { connection, stream } = data;\n const signal = AbortSignal.timeout(this.timeout);\n setMaxListeners(Infinity, signal);\n try {\n const publicKey = this.peerId.publicKey ?? new Uint8Array(0);\n const peerData = await this.peerStore.get(this.peerId);\n const multiaddrs = this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code));\n let signedPeerRecord = peerData.peerRecordEnvelope;\n if (multiaddrs.length > 0 && signedPeerRecord == null) {\n const peerRecord = new PeerRecord({\n peerId: this.peerId,\n multiaddrs\n });\n const envelope = await RecordEnvelope.seal(peerRecord, this.peerId);\n signedPeerRecord = envelope.marshal().subarray();\n }\n let observedAddr = connection.remoteAddr.bytes;\n if (!IP_OR_DOMAIN.matches(connection.remoteAddr)) {\n observedAddr = undefined;\n }\n const pb = pbStream(stream).pb(IdentifyMessage);\n await pb.write({\n protocolVersion: this.host.protocolVersion,\n agentVersion: this.host.agentVersion,\n publicKey,\n listenAddrs: multiaddrs.map(addr => addr.bytes),\n signedPeerRecord,\n observedAddr,\n protocols: peerData.protocols\n }, {\n signal\n });\n await stream.close({\n signal\n });\n }\n catch (err) {\n this.log.error('could not respond to identify request', err);\n stream.abort(err);\n }\n }\n /**\n * Reads the Identify Push message from the given `connection`\n */\n async _handlePush(data) {\n const { connection, stream } = data;\n try {\n if (this.peerId.equals(connection.remotePeer)) {\n throw new Error('received push from ourselves?');\n }\n const options = {\n signal: AbortSignal.timeout(this.timeout)\n };\n const pb = pbStream(stream, {\n maxDataLength: this.maxIdentifyMessageSize ?? MAX_IDENTIFY_MESSAGE_SIZE\n }).pb(IdentifyMessage);\n const message = await pb.read(options);\n await stream.close(options);\n await this.#consumeIdentifyMessage(connection, message);\n }\n catch (err) {\n this.log.error('received invalid message', err);\n stream.abort(err);\n return;\n }\n this.log('handled push from %p', connection.remotePeer);\n }\n async #consumeIdentifyMessage(connection, message) {\n this.log('received identify from %p', connection.remotePeer);\n if (message == null) {\n throw new CodeError('message was null or undefined', 'ERR_INVALID_MESSAGE');\n }\n const peer = {};\n if (message.listenAddrs.length > 0) {\n peer.addresses = message.listenAddrs.map(buf => ({\n isCertified: false,\n multiaddr: multiaddr(buf)\n }));\n }\n if (message.protocols.length > 0) {\n peer.protocols = message.protocols;\n }\n if (message.publicKey != null) {\n peer.publicKey = message.publicKey;\n const peerId = await peerIdFromKeys(message.publicKey);\n if (!peerId.equals(connection.remotePeer)) {\n throw new CodeError('public key did not match remote PeerId', 'ERR_INVALID_PUBLIC_KEY');\n }\n }\n let output;\n // if the peer record has been sent, prefer the addresses in the record as they are signed by the remote peer\n if (message.signedPeerRecord != null) {\n this.log('received signedPeerRecord from %p', connection.remotePeer);\n let peerRecordEnvelope = message.signedPeerRecord;\n const envelope = await RecordEnvelope.openAndCertify(peerRecordEnvelope, PeerRecord.DOMAIN);\n let peerRecord = PeerRecord.createFromProtobuf(envelope.payload);\n // Verify peerId\n if (!peerRecord.peerId.equals(envelope.peerId)) {\n throw new CodeError('signing key does not match PeerId in the PeerRecord', 'ERR_INVALID_SIGNING_KEY');\n }\n // Make sure remote peer is the one sending the record\n if (!connection.remotePeer.equals(peerRecord.peerId)) {\n throw new CodeError('signing key does not match remote PeerId', 'ERR_INVALID_PEER_RECORD_KEY');\n }\n let existingPeer;\n try {\n existingPeer = await this.peerStore.get(peerRecord.peerId);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n if (existingPeer != null) {\n // don't lose any existing metadata\n peer.metadata = existingPeer.metadata;\n // if we have previously received a signed record for this peer, compare it to the incoming one\n if (existingPeer.peerRecordEnvelope != null) {\n const storedEnvelope = await RecordEnvelope.createFromProtobuf(existingPeer.peerRecordEnvelope);\n const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);\n // ensure seq is greater than, or equal to, the last received\n if (storedRecord.seqNumber >= peerRecord.seqNumber) {\n this.log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);\n peerRecord = storedRecord;\n peerRecordEnvelope = existingPeer.peerRecordEnvelope;\n }\n }\n }\n // store the signed record for next time\n peer.peerRecordEnvelope = peerRecordEnvelope;\n // override the stored addresses with the signed multiaddrs\n peer.addresses = peerRecord.multiaddrs.map(multiaddr => ({\n isCertified: true,\n multiaddr\n }));\n output = {\n seq: peerRecord.seqNumber,\n addresses: peerRecord.multiaddrs\n };\n }\n else {\n this.log('%p did not send a signed peer record', connection.remotePeer);\n }\n this.log('patching %p with', connection.remotePeer, peer);\n await this.peerStore.patch(connection.remotePeer, peer);\n if (message.agentVersion != null || message.protocolVersion != null) {\n const metadata = {};\n if (message.agentVersion != null) {\n metadata.AgentVersion = uint8ArrayFromString(message.agentVersion);\n }\n if (message.protocolVersion != null) {\n metadata.ProtocolVersion = uint8ArrayFromString(message.protocolVersion);\n }\n this.log('merging %p metadata', connection.remotePeer, metadata);\n await this.peerStore.merge(connection.remotePeer, {\n metadata\n });\n }\n const result = {\n peerId: connection.remotePeer,\n protocolVersion: message.protocolVersion,\n agentVersion: message.agentVersion,\n publicKey: message.publicKey,\n listenAddrs: message.listenAddrs.map(buf => multiaddr(buf)),\n observedAddr: message.observedAddr == null ? undefined : multiaddr(message.observedAddr),\n protocols: message.protocols,\n signedPeerRecord: output,\n connection\n };\n this.events.safeDispatchEvent('peer:identify', { detail: result });\n return result;\n }\n}\n/**\n * Takes the `addr` and converts it to a Multiaddr if possible\n */\nfunction getCleanMultiaddr(addr) {\n if (addr != null && addr.length > 0) {\n try {\n return multiaddr(addr);\n }\n catch {\n }\n }\n}\n//# sourceMappingURL=identify.js.map","/**\n * @packageDocumentation\n *\n * Use the `identify` function to add support for the [Identify protocol](https://github.com/libp2p/specs/blob/master/identify/README.md) to libp2p.\n *\n * @example\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { identify } from '@libp2p/identify'\n *\n * const node = await createLibp2p({\n * // ...other options\n * services: {\n * identify: identify()\n * }\n * })\n * ```\n */\nimport { MULTICODEC_IDENTIFY, MULTICODEC_IDENTIFY_PUSH } from './consts.js';\nimport { Identify as IdentifyClass } from './identify.js';\n/**\n * The protocols the Identify service supports\n */\nexport const multicodecs = {\n IDENTIFY: MULTICODEC_IDENTIFY,\n IDENTIFY_PUSH: MULTICODEC_IDENTIFY_PUSH\n};\nexport function identify(init = {}) {\n return (components) => new IdentifyClass(components, init);\n}\n//# sourceMappingURL=index.js.map","// MaxRecordAge specifies the maximum time that any node will hold onto a record\n// from the time its received. This does not apply to any other forms of validity that\n// the record may contain.\n// For example, a record may contain an ipns entry with an EOL saying its valid\n// until the year 2020 (a great time in the future). For that record to stick around\n// it must be rebroadcasted more frequently than once every 'MaxRecordAge'\nexport const second = 1000;\nexport const minute = 60 * second;\nexport const hour = 60 * minute;\nexport const MAX_RECORD_AGE = 36 * hour;\nexport const PROTOCOL = '/ipfs/kad/1.0.0';\nexport const RECORD_KEY_PREFIX = '/dht/record';\nexport const PROVIDER_KEY_PREFIX = '/dht/provider';\nexport const PROVIDERS_LRU_CACHE_SIZE = 256;\nexport const PROVIDERS_VALIDITY = 24 * hour;\nexport const PROVIDERS_CLEANUP_INTERVAL = hour;\nexport const READ_MESSAGE_TIMEOUT = 10 * second;\n// The number of records that will be retrieved on a call to getMany()\nexport const GET_MANY_RECORD_COUNT = 16;\n// K is the maximum number of requests to perform before returning failure\nexport const K = 20;\n// Alpha is the concurrency for asynchronous requests\nexport const ALPHA = 3;\n// How often we look for our closest DHT neighbours\nexport const QUERY_SELF_INTERVAL = 5 * minute;\n// How often we look for the first set of our closest DHT neighbours\nexport const QUERY_SELF_INITIAL_INTERVAL = second;\n// How long to look for our closest DHT neighbours for\nexport const QUERY_SELF_TIMEOUT = 5 * second;\n// How often we try to find new peers\nexport const TABLE_REFRESH_INTERVAL = 5 * minute;\n// How how long to look for new peers for\nexport const TABLE_REFRESH_QUERY_TIMEOUT = 30 * second;\n// When a timeout is not specified, run a query for this long\nexport const DEFAULT_QUERY_TIMEOUT = 180 * second;\n//# sourceMappingURL=constants.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { decodeMessage, encodeMessage, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var Record;\n(function (Record) {\n let _codec;\n Record.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.key != null && obj.key.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.key);\n }\n if ((obj.value != null && obj.value.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.value);\n }\n if ((obj.timeReceived != null && obj.timeReceived !== '')) {\n w.uint32(42);\n w.string(obj.timeReceived);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length, opts = {}) => {\n const obj = {\n key: uint8ArrayAlloc(0),\n value: uint8ArrayAlloc(0),\n timeReceived: ''\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.key = reader.bytes();\n break;\n }\n case 2: {\n obj.value = reader.bytes();\n break;\n }\n case 5: {\n obj.timeReceived = reader.string();\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Record.encode = (obj) => {\n return encodeMessage(obj, Record.codec());\n };\n Record.decode = (buf, opts) => {\n return decodeMessage(buf, Record.codec(), opts);\n };\n})(Record || (Record = {}));\n//# sourceMappingURL=record.js.map","/**\n * Convert a JavaScript date into an `RFC3339Nano` formatted\n * string\n */\nexport function toRFC3339(time) {\n const year = time.getUTCFullYear();\n const month = String(time.getUTCMonth() + 1).padStart(2, '0');\n const day = String(time.getUTCDate()).padStart(2, '0');\n const hour = String(time.getUTCHours()).padStart(2, '0');\n const minute = String(time.getUTCMinutes()).padStart(2, '0');\n const seconds = String(time.getUTCSeconds()).padStart(2, '0');\n const milliseconds = time.getUTCMilliseconds();\n const nanoseconds = String(milliseconds * 1000 * 1000).padStart(9, '0');\n return `${year}-${month}-${day}T${hour}:${minute}:${seconds}.${nanoseconds}Z`;\n}\n/**\n * Parses a date string formatted as `RFC3339Nano` into a\n * JavaScript Date object\n */\nexport function parseRFC3339(time) {\n const rfc3339Matcher = new RegExp(\n // 2006-01-02T\n '(\\\\d{4})-(\\\\d{2})-(\\\\d{2})T' +\n // 15:04:05\n '(\\\\d{2}):(\\\\d{2}):(\\\\d{2})' +\n // .999999999Z\n '\\\\.(\\\\d+)Z');\n const m = String(time).trim().match(rfc3339Matcher);\n if (m == null) {\n throw new Error('Invalid format');\n }\n const year = parseInt(m[1], 10);\n const month = parseInt(m[2], 10) - 1;\n const date = parseInt(m[3], 10);\n const hour = parseInt(m[4], 10);\n const minute = parseInt(m[5], 10);\n const second = parseInt(m[6], 10);\n const millisecond = parseInt(m[7].slice(0, -6), 10);\n return new Date(Date.UTC(year, month, date, hour, minute, second, millisecond));\n}\n//# sourceMappingURL=utils.js.map","/**\n * @packageDocumentation\n *\n * This is an implementation of the [routing record format](https://github.com/libp2p/specs/blob/b9efe152c29f93f7a87931c14d78ae11e7924d5a/kad-dht/README.md?plain=1#L408-L425) used by libp2p to store data in the datastore passed to the libp2p constructor.\n *\n * @example Deserialization\n *\n * ```TypeScript\n * import { Libp2pRecord } from '@libp2p/record'\n *\n * const buf = Uint8Array.from([0, 1, 2, 3])\n * const record = Libp2pRecord.deserialize(buf)\n * ```\n *\n * @example Serialization\n *\n * ```TypeScript\n * import { Libp2pRecord } from '@libp2p/record'\n *\n * const key = Uint8Array.from([0, 1, 2, 3])\n * const value = Uint8Array.from([0, 1, 2, 3])\n * const timeReceived = new Date()\n *\n * const record = new Libp2pRecord(key, value, timeReceived)\n * const buf = record.serialize()\n * ```\n */\nimport { Record } from './record.js';\nimport * as utils from './utils.js';\nexport class Libp2pRecord {\n key;\n value;\n timeReceived;\n constructor(key, value, timeReceived) {\n if (!(key instanceof Uint8Array)) {\n throw new Error('key must be a Uint8Array');\n }\n if (!(value instanceof Uint8Array)) {\n throw new Error('value must be a Uint8Array');\n }\n this.key = key;\n this.value = value;\n this.timeReceived = timeReceived;\n }\n serialize() {\n return Record.encode(this.prepareSerialize());\n }\n /**\n * Return the object format ready to be given to the protobuf library.\n */\n prepareSerialize() {\n return {\n key: this.key,\n value: this.value,\n timeReceived: utils.toRFC3339(this.timeReceived)\n };\n }\n /**\n * Decode a protobuf encoded record\n */\n static deserialize(raw) {\n const rec = Record.decode(raw);\n return new Libp2pRecord(rec.key, rec.value, new Date(rec.timeReceived));\n }\n /**\n * Create a record from the raw object returned from the protobuf library\n */\n static fromDeserialized(obj) {\n const recvtime = utils.parseRFC3339(obj.timeReceived);\n if (obj.key == null) {\n throw new Error('key missing from deserialized object');\n }\n if (obj.value == null) {\n throw new Error('value missing from deserialized object');\n }\n const rec = new Libp2pRecord(obj.key, obj.value, recvtime);\n return rec;\n }\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { decodeMessage, encodeMessage, enumeration, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var Record;\n(function (Record) {\n let _codec;\n Record.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.key != null) {\n w.uint32(10);\n w.bytes(obj.key);\n }\n if (obj.value != null) {\n w.uint32(18);\n w.bytes(obj.value);\n }\n if (obj.author != null) {\n w.uint32(26);\n w.bytes(obj.author);\n }\n if (obj.signature != null) {\n w.uint32(34);\n w.bytes(obj.signature);\n }\n if (obj.timeReceived != null) {\n w.uint32(42);\n w.string(obj.timeReceived);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.key = reader.bytes();\n break;\n }\n case 2: {\n obj.value = reader.bytes();\n break;\n }\n case 3: {\n obj.author = reader.bytes();\n break;\n }\n case 4: {\n obj.signature = reader.bytes();\n break;\n }\n case 5: {\n obj.timeReceived = reader.string();\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Record.encode = (obj) => {\n return encodeMessage(obj, Record.codec());\n };\n Record.decode = (buf) => {\n return decodeMessage(buf, Record.codec());\n };\n})(Record || (Record = {}));\nexport var MessageType;\n(function (MessageType) {\n MessageType[\"PUT_VALUE\"] = \"PUT_VALUE\";\n MessageType[\"GET_VALUE\"] = \"GET_VALUE\";\n MessageType[\"ADD_PROVIDER\"] = \"ADD_PROVIDER\";\n MessageType[\"GET_PROVIDERS\"] = \"GET_PROVIDERS\";\n MessageType[\"FIND_NODE\"] = \"FIND_NODE\";\n MessageType[\"PING\"] = \"PING\";\n})(MessageType || (MessageType = {}));\nvar __MessageTypeValues;\n(function (__MessageTypeValues) {\n __MessageTypeValues[__MessageTypeValues[\"PUT_VALUE\"] = 0] = \"PUT_VALUE\";\n __MessageTypeValues[__MessageTypeValues[\"GET_VALUE\"] = 1] = \"GET_VALUE\";\n __MessageTypeValues[__MessageTypeValues[\"ADD_PROVIDER\"] = 2] = \"ADD_PROVIDER\";\n __MessageTypeValues[__MessageTypeValues[\"GET_PROVIDERS\"] = 3] = \"GET_PROVIDERS\";\n __MessageTypeValues[__MessageTypeValues[\"FIND_NODE\"] = 4] = \"FIND_NODE\";\n __MessageTypeValues[__MessageTypeValues[\"PING\"] = 5] = \"PING\";\n})(__MessageTypeValues || (__MessageTypeValues = {}));\n(function (MessageType) {\n MessageType.codec = () => {\n return enumeration(__MessageTypeValues);\n };\n})(MessageType || (MessageType = {}));\nexport var ConnectionType;\n(function (ConnectionType) {\n ConnectionType[\"NOT_CONNECTED\"] = \"NOT_CONNECTED\";\n ConnectionType[\"CONNECTED\"] = \"CONNECTED\";\n ConnectionType[\"CAN_CONNECT\"] = \"CAN_CONNECT\";\n ConnectionType[\"CANNOT_CONNECT\"] = \"CANNOT_CONNECT\";\n})(ConnectionType || (ConnectionType = {}));\nvar __ConnectionTypeValues;\n(function (__ConnectionTypeValues) {\n __ConnectionTypeValues[__ConnectionTypeValues[\"NOT_CONNECTED\"] = 0] = \"NOT_CONNECTED\";\n __ConnectionTypeValues[__ConnectionTypeValues[\"CONNECTED\"] = 1] = \"CONNECTED\";\n __ConnectionTypeValues[__ConnectionTypeValues[\"CAN_CONNECT\"] = 2] = \"CAN_CONNECT\";\n __ConnectionTypeValues[__ConnectionTypeValues[\"CANNOT_CONNECT\"] = 3] = \"CANNOT_CONNECT\";\n})(__ConnectionTypeValues || (__ConnectionTypeValues = {}));\n(function (ConnectionType) {\n ConnectionType.codec = () => {\n return enumeration(__ConnectionTypeValues);\n };\n})(ConnectionType || (ConnectionType = {}));\nexport var PeerInfo;\n(function (PeerInfo) {\n let _codec;\n PeerInfo.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.id != null && obj.id.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.id);\n }\n if (obj.multiaddrs != null) {\n for (const value of obj.multiaddrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (obj.connection != null) {\n w.uint32(24);\n ConnectionType.codec().encode(obj.connection, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n id: uint8ArrayAlloc(0),\n multiaddrs: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.id = reader.bytes();\n break;\n }\n case 2: {\n obj.multiaddrs.push(reader.bytes());\n break;\n }\n case 3: {\n obj.connection = ConnectionType.codec().decode(reader);\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n PeerInfo.encode = (obj) => {\n return encodeMessage(obj, PeerInfo.codec());\n };\n PeerInfo.decode = (buf) => {\n return decodeMessage(buf, PeerInfo.codec());\n };\n})(PeerInfo || (PeerInfo = {}));\nexport var Message;\n(function (Message) {\n let _codec;\n Message.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null && __MessageTypeValues[obj.type] !== 0) {\n w.uint32(8);\n MessageType.codec().encode(obj.type, w);\n }\n if (obj.clusterLevel != null) {\n w.uint32(80);\n w.int32(obj.clusterLevel);\n }\n if (obj.key != null) {\n w.uint32(18);\n w.bytes(obj.key);\n }\n if (obj.record != null) {\n w.uint32(26);\n w.bytes(obj.record);\n }\n if (obj.closer != null) {\n for (const value of obj.closer) {\n w.uint32(66);\n PeerInfo.codec().encode(value, w);\n }\n }\n if (obj.providers != null) {\n for (const value of obj.providers) {\n w.uint32(74);\n PeerInfo.codec().encode(value, w);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n type: MessageType.PUT_VALUE,\n closer: [],\n providers: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.type = MessageType.codec().decode(reader);\n break;\n }\n case 10: {\n obj.clusterLevel = reader.int32();\n break;\n }\n case 2: {\n obj.key = reader.bytes();\n break;\n }\n case 3: {\n obj.record = reader.bytes();\n break;\n }\n case 8: {\n obj.closer.push(PeerInfo.codec().decode(reader, reader.uint32()));\n break;\n }\n case 9: {\n obj.providers.push(PeerInfo.codec().decode(reader, reader.uint32()));\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Message.encode = (obj) => {\n return encodeMessage(obj, Message.codec());\n };\n Message.decode = (buf) => {\n return decodeMessage(buf, Message.codec());\n };\n})(Message || (Message = {}));\n//# sourceMappingURL=dht.js.map","import { CustomEvent } from '@libp2p/interface';\nexport function sendQueryEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'SEND_QUERY',\n type: 0,\n messageName: fields.type,\n messageType: fields.type\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:send-query', { detail: event }));\n return event;\n}\nexport function peerResponseEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'PEER_RESPONSE',\n type: 1,\n messageName: fields.messageType,\n closer: fields.closer ?? [],\n providers: fields.providers ?? []\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:peer-response', { detail: event }));\n return event;\n}\nexport function finalPeerEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'FINAL_PEER',\n type: 2\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:final-peer', { detail: event }));\n return event;\n}\nexport function queryErrorEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'QUERY_ERROR',\n type: 3\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:query-error', { detail: event }));\n return event;\n}\nexport function providerEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'PROVIDER',\n type: 4\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:provider', { detail: event }));\n return event;\n}\nexport function valueEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'VALUE',\n type: 5\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:value', { detail: event }));\n return event;\n}\nexport function addPeerEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'ADD_PEER',\n type: 6\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:add-peer', { detail: event }));\n return event;\n}\nexport function dialPeerEvent(fields, options = {}) {\n const event = {\n ...fields,\n name: 'DIAL_PEER',\n type: 7\n };\n options.onProgress?.(new CustomEvent('kad-dht:query:dial-peer', { detail: event }));\n return event;\n}\n//# sourceMappingURL=events.js.map","import { CodeError } from '@libp2p/interface';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\n/**\n * Select the best record out of the given records\n */\nexport function bestRecord(selectors, k, records) {\n if (records.length === 0) {\n const errMsg = 'No records given';\n throw new CodeError(errMsg, 'ERR_NO_RECORDS_RECEIVED');\n }\n const kStr = uint8ArrayToString(k);\n const parts = kStr.split('/');\n if (parts.length < 3) {\n const errMsg = 'Record key does not have a selector function';\n throw new CodeError(errMsg, 'ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY');\n }\n const selector = selectors[parts[1].toString()];\n if (selector == null) {\n const errMsg = `No selector function configured for key type \"${parts[1]}\"`;\n throw new CodeError(errMsg, 'ERR_UNRECOGNIZED_KEY_PREFIX');\n }\n if (records.length === 1) {\n return 0;\n }\n return selector(k, records);\n}\n/**\n * Best record selector, for public key records.\n * Simply returns the first record, as all valid public key\n * records are equal\n */\nfunction publickKey(k, records) {\n return 0;\n}\nexport const selectors = {\n pk: publickKey\n};\n//# sourceMappingURL=selectors.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest));\n }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\n/**\n * Checks a record and ensures it is still valid.\n * It runs the needed validators.\n * If verification fails the returned Promise will reject with the error.\n */\nexport async function verifyRecord(validators, record) {\n const key = record.key;\n const keyString = uint8ArrayToString(key);\n const parts = keyString.split('/');\n if (parts.length < 3) {\n // No validator available\n return;\n }\n const validator = validators[parts[1].toString()];\n if (validator == null) {\n const errMsg = `No validator available for key type \"${parts[1]}\"`;\n throw new CodeError(errMsg, 'ERR_INVALID_RECORD_KEY_TYPE');\n }\n await validator(key, record.value);\n}\n/**\n * Validator for public key records.\n * Verifies that the passed in record value is the PublicKey\n * that matches the passed in key.\n * If validation fails the returned Promise will reject with the error.\n *\n * @param {Uint8Array} key - A valid key is of the form `'/pk/'`\n * @param {Uint8Array} publicKey - The public key to validate against (protobuf encoded).\n */\nconst validatePublicKeyRecord = async (key, publicKey) => {\n if (!(key instanceof Uint8Array)) {\n throw new CodeError('\"key\" must be a Uint8Array', 'ERR_INVALID_RECORD_KEY_NOT_BUFFER');\n }\n if (key.byteLength < 5) {\n throw new CodeError('invalid public key record', 'ERR_INVALID_RECORD_KEY_TOO_SHORT');\n }\n const prefix = uint8ArrayToString(key.subarray(0, 4));\n if (prefix !== '/pk/') {\n throw new CodeError('key was not prefixed with /pk/', 'ERR_INVALID_RECORD_KEY_BAD_PREFIX');\n }\n const keyhash = key.slice(4);\n const publicKeyHash = await sha256.digest(publicKey);\n if (!uint8ArrayEquals(keyhash, publicKeyHash.bytes)) {\n throw new CodeError('public key does not match passed in key', 'ERR_INVALID_RECORD_HASH_MISMATCH');\n }\n};\nexport const validators = {\n pk: validatePublicKeyRecord\n};\n//# sourceMappingURL=validators.js.map","import { peerIdFromBytes } from '@libp2p/peer-id';\nimport { Libp2pRecord } from '@libp2p/record';\nimport { isPrivateIp } from '@libp2p/utils/private-ip';\nimport { Key } from 'interface-datastore/key';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { RECORD_KEY_PREFIX } from './constants.js';\n// const IPNS_PREFIX = uint8ArrayFromString('/ipns/')\nconst PK_PREFIX = uint8ArrayFromString('/pk/');\nexport function removePrivateAddressesMapper(peer) {\n return {\n ...peer,\n multiaddrs: peer.multiaddrs.filter(multiaddr => {\n const [[type, addr]] = multiaddr.stringTuples();\n // treat /dns, /dns4, and /dns6 addrs as public\n if (type === 53 || type === 54 || type === 55) {\n // localhost can be a dns address but it's private\n if (addr === 'localhost') {\n return false;\n }\n return true;\n }\n if (type !== 4 && type !== 6) {\n return false;\n }\n if (addr == null) {\n return false;\n }\n const isPrivate = isPrivateIp(addr);\n if (isPrivate == null) {\n // not an ip address\n return true;\n }\n return !isPrivate;\n })\n };\n}\nexport function removePublicAddressesMapper(peer) {\n return {\n ...peer,\n multiaddrs: peer.multiaddrs.filter(multiaddr => {\n const [[type, addr]] = multiaddr.stringTuples();\n if (addr === 'localhost') {\n return true;\n }\n if (type !== 4 && type !== 6) {\n return false;\n }\n if (addr == null) {\n return false;\n }\n const isPrivate = isPrivateIp(addr);\n if (isPrivate == null) {\n // not an ip address\n return false;\n }\n return isPrivate;\n })\n };\n}\nexport function passthroughMapper(info) {\n return info;\n}\n/**\n * Creates a DHT ID by hashing a given Uint8Array\n */\nexport async function convertBuffer(buf) {\n const multihash = await sha256.digest(buf);\n return multihash.digest;\n}\n/**\n * Creates a DHT ID by hashing a Peer ID\n */\nexport async function convertPeerId(peerId) {\n return convertBuffer(peerId.toBytes());\n}\n/**\n * Convert a Uint8Array to their SHA2-256 hash\n */\nexport function bufferToKey(buf) {\n return new Key('/' + uint8ArrayToString(buf, 'base32'), false);\n}\n/**\n * Convert a Uint8Array to their SHA2-256 hash\n */\nexport function bufferToRecordKey(buf) {\n return new Key(`${RECORD_KEY_PREFIX}/${uint8ArrayToString(buf, 'base32')}`, false);\n}\n/**\n * Generate the key for a public key.\n */\nexport function keyForPublicKey(peer) {\n return uint8ArrayConcat([\n PK_PREFIX,\n peer.toBytes()\n ]);\n}\nexport function isPublicKeyKey(key) {\n return uint8ArrayToString(key.subarray(0, 4)) === '/pk/';\n}\nexport function isIPNSKey(key) {\n return uint8ArrayToString(key.subarray(0, 4)) === '/ipns/';\n}\nexport function fromPublicKeyKey(key) {\n return peerIdFromBytes(key.subarray(4));\n}\n/**\n * Create a new put record, encodes and signs it if enabled\n */\nexport function createPutRecord(key, value) {\n const timeReceived = new Date();\n const rec = new Libp2pRecord(key, value, timeReceived);\n return rec.serialize();\n}\nexport function debounce(callback, wait = 100) {\n let timeout;\n return () => {\n clearTimeout(timeout);\n timeout = setTimeout(() => { callback(); }, wait);\n };\n}\n// see https://github.com/multiformats/multiaddr/blob/master/protocols.csv\nconst P2P_CIRCUIT_CODE = 290;\nconst DNS4_CODE = 54;\nconst DNS6_CODE = 55;\nconst DNSADDR_CODE = 56;\nconst IP4_CODE = 4;\nconst IP6_CODE = 41;\nexport function multiaddrIsPublic(multiaddr) {\n const tuples = multiaddr.stringTuples();\n // p2p-circuit should not enable server mode\n for (const tuple of tuples) {\n if (tuple[0] === P2P_CIRCUIT_CODE) {\n return false;\n }\n }\n // dns4 or dns6 or dnsaddr\n if (tuples[0][0] === DNS4_CODE || tuples[0][0] === DNS6_CODE || tuples[0][0] === DNSADDR_CODE) {\n return true;\n }\n // ip4 or ip6\n if (tuples[0][0] === IP4_CODE || tuples[0][0] === IP6_CODE) {\n const result = isPrivateIp(`${tuples[0][1]}`);\n const isPublic = result == null || !result;\n return isPublic;\n }\n return false;\n}\n//# sourceMappingURL=utils.js.map","import { CodeError } from '@libp2p/interface';\nimport { Libp2pRecord } from '@libp2p/record';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { ALPHA } from '../constants.js';\nimport { MessageType } from '../message/dht.js';\nimport { valueEvent, queryErrorEvent } from '../query/events.js';\nimport { bestRecord } from '../record/selectors.js';\nimport { verifyRecord } from '../record/validators.js';\nimport { createPutRecord, bufferToRecordKey } from '../utils.js';\nexport class ContentFetching {\n log;\n components;\n validators;\n selectors;\n peerRouting;\n queryManager;\n network;\n constructor(components, init) {\n const { validators, selectors, peerRouting, queryManager, network, logPrefix } = init;\n this.components = components;\n this.log = components.logger.forComponent(`${logPrefix}:content-fetching`);\n this.validators = validators;\n this.selectors = selectors;\n this.peerRouting = peerRouting;\n this.queryManager = queryManager;\n this.network = network;\n }\n /**\n * Attempt to retrieve the value for the given key from\n * the local datastore\n */\n async getLocal(key) {\n this.log('getLocal %b', key);\n const dsKey = bufferToRecordKey(key);\n this.log('fetching record for key %k', dsKey);\n const raw = await this.components.datastore.get(dsKey);\n this.log('found %k in local datastore', dsKey);\n const rec = Libp2pRecord.deserialize(raw);\n await verifyRecord(this.validators, rec);\n return rec;\n }\n /**\n * Send the best record found to any peers that have an out of date record\n */\n async *sendCorrectionRecord(key, vals, best, options = {}) {\n this.log('sendCorrection for %b', key);\n const fixupRec = createPutRecord(key, best);\n for (const { value, from } of vals) {\n // no need to do anything\n if (uint8ArrayEquals(value, best)) {\n this.log('record was ok');\n continue;\n }\n // correct ourself\n if (this.components.peerId.equals(from)) {\n try {\n const dsKey = bufferToRecordKey(key);\n this.log(`Storing corrected record for key ${dsKey.toString()}`);\n await this.components.datastore.put(dsKey, fixupRec.subarray());\n }\n catch (err) {\n this.log.error('Failed error correcting self', err);\n }\n continue;\n }\n // send correction\n let sentCorrection = false;\n const request = {\n type: MessageType.PUT_VALUE,\n key,\n record: fixupRec\n };\n for await (const event of this.network.sendRequest(from, request, options)) {\n if (event.name === 'PEER_RESPONSE' && (event.record != null) && uint8ArrayEquals(event.record.value, Libp2pRecord.deserialize(fixupRec).value)) {\n sentCorrection = true;\n }\n yield event;\n }\n if (!sentCorrection) {\n yield queryErrorEvent({ from, error: new CodeError('value not put correctly', 'ERR_PUT_VALUE_INVALID') }, options);\n }\n this.log.error('Failed error correcting entry');\n }\n }\n /**\n * Store the given key/value pair in the DHT\n */\n async *put(key, value, options = {}) {\n this.log('put key %b value %b', key, value);\n // create record in the dht format\n const record = createPutRecord(key, value);\n // store the record locally\n const dsKey = bufferToRecordKey(key);\n this.log(`storing record for key ${dsKey.toString()}`);\n await this.components.datastore.put(dsKey, record.subarray());\n // put record to the closest peers\n yield* pipe(this.peerRouting.getClosestPeers(key, { signal: options.signal }), (source) => map(source, (event) => {\n return async () => {\n if (event.name !== 'FINAL_PEER') {\n return [event];\n }\n const events = [];\n const msg = {\n type: MessageType.PUT_VALUE,\n key,\n record\n };\n this.log('send put to %p', event.peer.id);\n for await (const putEvent of this.network.sendRequest(event.peer.id, msg, options)) {\n events.push(putEvent);\n if (putEvent.name !== 'PEER_RESPONSE') {\n continue;\n }\n if (!(putEvent.record != null && uint8ArrayEquals(putEvent.record.value, Libp2pRecord.deserialize(record).value))) {\n events.push(queryErrorEvent({ from: event.peer.id, error: new CodeError('value not put correctly', 'ERR_PUT_VALUE_INVALID') }, options));\n }\n }\n return events;\n };\n }), (source) => parallel(source, {\n ordered: false,\n concurrency: ALPHA\n }), async function* (source) {\n for await (const events of source) {\n yield* events;\n }\n });\n }\n /**\n * Get the value to the given key\n */\n async *get(key, options = {}) {\n this.log('get %b', key);\n const vals = [];\n for await (const event of this.getMany(key, options)) {\n if (event.name === 'VALUE') {\n vals.push(event);\n }\n yield event;\n }\n if (vals.length === 0) {\n return;\n }\n const records = vals.map((v) => v.value);\n let i = 0;\n try {\n i = bestRecord(this.selectors, key, records);\n }\n catch (err) {\n // Assume the first record if no selector available\n if (err.code !== 'ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY') {\n throw err;\n }\n }\n const best = records[i];\n this.log('GetValue %b %b', key, best);\n if (best == null) {\n throw new CodeError('best value was not found', 'ERR_NOT_FOUND');\n }\n yield* this.sendCorrectionRecord(key, vals, best, options);\n yield vals[i];\n }\n /**\n * Get the `n` values to the given key without sorting\n */\n async *getMany(key, options = {}) {\n this.log('getMany values for %b', key);\n try {\n const localRec = await this.getLocal(key);\n yield valueEvent({\n value: localRec.value,\n from: this.components.peerId\n }, options);\n }\n catch (err) {\n this.log('error getting local value for %b', key, err);\n }\n const self = this; // eslint-disable-line @typescript-eslint/no-this-alias\n const getValueQuery = async function* ({ peer, signal }) {\n for await (const event of self.peerRouting.getValueOrPeers(peer, key, { signal })) {\n yield event;\n if (event.name === 'PEER_RESPONSE' && (event.record != null)) {\n yield valueEvent({ from: peer, value: event.record.value }, options);\n }\n }\n };\n // we have peers, lets send the actual query to them\n yield* this.queryManager.run(key, getValueQuery, options);\n }\n}\n//# sourceMappingURL=index.js.map","import { peerIdFromBytes } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nexport function toPbPeerInfo(peer, connection) {\n const output = {\n id: peer.id.toBytes(),\n multiaddrs: (peer.multiaddrs ?? []).map((m) => m.bytes),\n connection\n };\n return output;\n}\nexport function fromPbPeerInfo(peer) {\n if (peer.id == null) {\n throw new Error('Invalid peer in message');\n }\n return {\n id: peerIdFromBytes(peer.id),\n multiaddrs: (peer.multiaddrs ?? []).map((a) => multiaddr(a))\n };\n}\n//# sourceMappingURL=utils.js.map","import { PeerSet } from '@libp2p/peer-collections';\nimport map from 'it-map';\nimport parallel from 'it-parallel';\nimport { pipe } from 'it-pipe';\nimport { ALPHA } from '../constants.js';\nimport { MessageType } from '../message/dht.js';\nimport { toPbPeerInfo } from '../message/utils.js';\nimport { queryErrorEvent, peerResponseEvent, providerEvent } from '../query/events.js';\nexport class ContentRouting {\n log;\n components;\n network;\n peerRouting;\n queryManager;\n routingTable;\n providers;\n constructor(components, init) {\n const { network, peerRouting, queryManager, routingTable, providers, logPrefix } = init;\n this.components = components;\n this.log = components.logger.forComponent(`${logPrefix}:content-routing`);\n this.network = network;\n this.peerRouting = peerRouting;\n this.queryManager = queryManager;\n this.routingTable = routingTable;\n this.providers = providers;\n }\n /**\n * Announce to the network that we can provide the value for a given key and\n * are contactable on the given multiaddrs\n */\n async *provide(key, multiaddrs, options = {}) {\n this.log('provide %s', key);\n const target = key.multihash.bytes;\n // Add peer as provider\n await this.providers.addProvider(key, this.components.peerId);\n const msg = {\n type: MessageType.ADD_PROVIDER,\n key: target,\n providers: [\n toPbPeerInfo({\n id: this.components.peerId,\n multiaddrs\n })\n ]\n };\n let sent = 0;\n const maybeNotifyPeer = (event) => {\n return async () => {\n if (event.name !== 'FINAL_PEER') {\n return [event];\n }\n const events = [];\n this.log('putProvider %s to %p', key, event.peer.id);\n try {\n this.log('sending provider record for %s to %p', key, event.peer.id);\n for await (const sendEvent of this.network.sendMessage(event.peer.id, msg, options)) {\n if (sendEvent.name === 'PEER_RESPONSE') {\n this.log('sent provider record for %s to %p', key, event.peer.id);\n sent++;\n }\n events.push(sendEvent);\n }\n }\n catch (err) {\n this.log.error('error sending provide record to peer %p', event.peer.id, err);\n events.push(queryErrorEvent({ from: event.peer.id, error: err }, options));\n }\n return events;\n };\n };\n // Notify closest peers\n yield* pipe(this.peerRouting.getClosestPeers(target, options), (source) => map(source, (event) => maybeNotifyPeer(event)), (source) => parallel(source, {\n ordered: false,\n concurrency: ALPHA\n }), async function* (source) {\n for await (const events of source) {\n yield* events;\n }\n });\n this.log('sent provider records to %d peers', sent);\n }\n /**\n * Search the dht for up to `K` providers of the given CID.\n */\n async *findProviders(key, options) {\n const toFind = this.routingTable.kBucketSize;\n let found = 0;\n const target = key.multihash.bytes;\n const self = this; // eslint-disable-line @typescript-eslint/no-this-alias\n this.log('findProviders %c', key);\n const provs = await this.providers.getProviders(key);\n // yield values if we have some, also slice because maybe we got lucky and already have too many?\n if (provs.length > 0) {\n const providers = [];\n for (const peerId of provs.slice(0, toFind)) {\n try {\n const peer = await this.components.peerStore.get(peerId);\n providers.push({\n id: peerId,\n multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)\n });\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n this.log('no peer store entry for %p', peerId);\n }\n }\n yield peerResponseEvent({ from: this.components.peerId, messageType: MessageType.GET_PROVIDERS, providers }, options);\n yield providerEvent({ from: this.components.peerId, providers }, options);\n found += providers.length;\n if (found >= toFind) {\n return;\n }\n }\n /**\n * The query function to use on this particular disjoint path\n */\n const findProvidersQuery = async function* ({ peer, signal }) {\n const request = {\n type: MessageType.GET_PROVIDERS,\n key: target\n };\n yield* self.network.sendRequest(peer, request, {\n ...options,\n signal\n });\n };\n const providers = new PeerSet(provs);\n for await (const event of this.queryManager.run(target, findProvidersQuery, options)) {\n yield event;\n if (event.name === 'PEER_RESPONSE') {\n this.log('Found %d provider entries for %c and %d closer peers', event.providers.length, key, event.closer.length);\n const newProviders = [];\n for (const peer of event.providers) {\n if (providers.has(peer.id)) {\n continue;\n }\n providers.add(peer.id);\n newProviders.push(peer);\n }\n if (newProviders.length > 0) {\n yield providerEvent({ from: event.from, providers: newProviders }, options);\n found += newProviders.length;\n if (found >= toFind) {\n return;\n }\n }\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * Implements exponential moving average. Ported from `moving-average`.\n *\n * @see https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average\n * @see https://www.npmjs.com/package/moving-average\n */\nexport class MovingAverage {\n movingAverage;\n variance;\n deviation;\n forecast;\n timespan;\n previousTime;\n constructor(timespan) {\n this.timespan = timespan;\n this.movingAverage = 0;\n this.variance = 0;\n this.deviation = 0;\n this.forecast = 0;\n }\n alpha(t, pt) {\n return 1 - (Math.exp(-(t - pt) / this.timespan));\n }\n push(value, time = Date.now()) {\n if (this.previousTime != null) {\n // calculate moving average\n const a = this.alpha(time, this.previousTime);\n const diff = value - this.movingAverage;\n const incr = a * diff;\n this.movingAverage = a * value + (1 - a) * this.movingAverage;\n // calculate variance & deviation\n this.variance = (1 - a) * (this.variance + diff * incr);\n this.deviation = Math.sqrt(this.variance);\n // calculate forecast\n this.forecast = this.movingAverage + a * diff;\n }\n else {\n this.movingAverage = value;\n }\n this.previousTime = time;\n }\n}\n//# sourceMappingURL=moving-average.js.map","import { setMaxListeners } from '@libp2p/interface';\nimport { anySignal } from 'any-signal';\nimport { MovingAverage } from './moving-average.js';\nexport const DEFAULT_TIMEOUT_MULTIPLIER = 1.2;\nexport const DEFAULT_FAILURE_MULTIPLIER = 2;\nexport const DEFAULT_MIN_TIMEOUT = 2000;\nexport class AdaptiveTimeout {\n success;\n failure;\n next;\n metric;\n timeoutMultiplier;\n failureMultiplier;\n minTimeout;\n constructor(init = {}) {\n this.success = new MovingAverage(init.interval ?? 5000);\n this.failure = new MovingAverage(init.interval ?? 5000);\n this.next = new MovingAverage(init.interval ?? 5000);\n this.failureMultiplier = init.failureMultiplier ?? DEFAULT_FAILURE_MULTIPLIER;\n this.timeoutMultiplier = init.timeoutMultiplier ?? DEFAULT_TIMEOUT_MULTIPLIER;\n this.minTimeout = init.minTimeout ?? DEFAULT_MIN_TIMEOUT;\n if (init.metricName != null) {\n this.metric = init.metrics?.registerMetricGroup(init.metricName);\n }\n }\n getTimeoutSignal(options = {}) {\n // calculate timeout for individual peers based on moving average of\n // previous successful requests\n const timeout = Math.max(Math.round(this.next.movingAverage * (options.timeoutFactor ?? this.timeoutMultiplier)), this.minTimeout);\n const sendTimeout = AbortSignal.timeout(timeout);\n const timeoutSignal = anySignal([options.signal, sendTimeout]);\n setMaxListeners(Infinity, timeoutSignal, sendTimeout);\n timeoutSignal.start = Date.now();\n timeoutSignal.timeout = timeout;\n return timeoutSignal;\n }\n cleanUp(signal) {\n const time = Date.now() - signal.start;\n if (signal.aborted) {\n this.failure.push(time);\n this.next.push(time * this.failureMultiplier);\n this.metric?.update({\n failureMovingAverage: this.failure.movingAverage,\n failureDeviation: this.failure.deviation,\n failureForecast: this.failure.forecast,\n failureVariance: this.failure.variance,\n failure: time\n });\n }\n else {\n this.success.push(time);\n this.next.push(time);\n this.metric?.update({\n successMovingAverage: this.success.movingAverage,\n successDeviation: this.success.deviation,\n successForecast: this.success.forecast,\n successVariance: this.success.variance,\n success: time\n });\n }\n }\n}\n//# sourceMappingURL=adaptive-timeout.js.map","import { TypedEventEmitter } from '@libp2p/interface';\nimport { Libp2pRecord } from '@libp2p/record';\nimport { AdaptiveTimeout } from '@libp2p/utils/adaptive-timeout';\nimport { pbStream } from 'it-protobuf-stream';\nimport { CodeError } from 'protons-runtime';\nimport { Message } from './message/dht.js';\nimport { fromPbPeerInfo } from './message/utils.js';\nimport { dialPeerEvent, sendQueryEvent, peerResponseEvent, queryErrorEvent } from './query/events.js';\n/**\n * Handle network operations for the dht\n */\nexport class Network extends TypedEventEmitter {\n log;\n protocol;\n running;\n components;\n timeout;\n /**\n * Create a new network\n */\n constructor(components, init) {\n super();\n const { protocol } = init;\n this.components = components;\n this.log = components.logger.forComponent(`${init.logPrefix}:network`);\n this.running = false;\n this.protocol = protocol;\n this.timeout = new AdaptiveTimeout({\n ...(init.timeout ?? {}),\n metrics: components.metrics,\n metricName: `${init.logPrefix.replaceAll(':', '_')}_network_message_send_times_milliseconds`\n });\n }\n /**\n * Start the network\n */\n async start() {\n if (this.running) {\n return;\n }\n this.running = true;\n }\n /**\n * Stop all network activity\n */\n async stop() {\n this.running = false;\n }\n /**\n * Is the network online?\n */\n isStarted() {\n return this.running;\n }\n /**\n * Send a request and record RTT for latency measurements\n */\n async *sendRequest(to, msg, options = {}) {\n if (!this.running) {\n return;\n }\n const type = msg.type;\n if (type == null) {\n throw new CodeError('Message type was missing', 'ERR_INVALID_PARAMETERS');\n }\n this.log('sending %s to %p', msg.type, to);\n yield dialPeerEvent({ peer: to }, options);\n yield sendQueryEvent({ to, type }, options);\n let stream;\n const signal = this.timeout.getTimeoutSignal(options);\n options = {\n ...options,\n signal\n };\n try {\n const connection = await this.components.connectionManager.openConnection(to, options);\n stream = await connection.newStream(this.protocol, options);\n const response = await this._writeReadMessage(stream, msg, options);\n stream.close(options)\n .catch(err => {\n this.log.error('error closing stream to %p', to, err);\n stream?.abort(err);\n });\n yield peerResponseEvent({\n from: to,\n messageType: response.type,\n closer: response.closer.map(fromPbPeerInfo),\n providers: response.providers.map(fromPbPeerInfo),\n record: response.record == null ? undefined : Libp2pRecord.deserialize(response.record)\n }, options);\n }\n catch (err) {\n stream?.abort(err);\n this.log.error('could not send %s to %p', msg.type, to, err);\n yield queryErrorEvent({ from: to, error: err }, options);\n }\n finally {\n this.timeout.cleanUp(signal);\n }\n }\n /**\n * Sends a message without expecting an answer\n */\n async *sendMessage(to, msg, options = {}) {\n if (!this.running) {\n return;\n }\n const type = msg.type;\n if (type == null) {\n throw new CodeError('Message type was missing', 'ERR_INVALID_PARAMETERS');\n }\n this.log('sending %s to %p', msg.type, to);\n yield dialPeerEvent({ peer: to }, options);\n yield sendQueryEvent({ to, type }, options);\n let stream;\n const signal = this.timeout.getTimeoutSignal(options);\n options = {\n ...options,\n signal\n };\n try {\n const connection = await this.components.connectionManager.openConnection(to, options);\n stream = await connection.newStream(this.protocol, options);\n await this._writeMessage(stream, msg, options);\n stream.close(options)\n .catch(err => {\n this.log.error('error closing stream to %p', to, err);\n stream?.abort(err);\n });\n yield peerResponseEvent({ from: to, messageType: type }, options);\n }\n catch (err) {\n stream?.abort(err);\n yield queryErrorEvent({ from: to, error: err }, options);\n }\n finally {\n this.timeout.cleanUp(signal);\n }\n }\n /**\n * Write a message to the given stream\n */\n async _writeMessage(stream, msg, options) {\n const pb = pbStream(stream);\n await pb.write(msg, Message, options);\n await pb.unwrap().close(options);\n }\n /**\n * Write a message and read its response.\n * If no response is received after the specified timeout\n * this will error out.\n */\n async _writeReadMessage(stream, msg, options) {\n const pb = pbStream(stream);\n await pb.write(msg, Message, options);\n const message = await pb.read(Message, options);\n await pb.unwrap().close(options);\n // tell any listeners about new peers we've seen\n message.closer.forEach(peerData => {\n this.safeDispatchEvent('peer', {\n detail: fromPbPeerInfo(peerData)\n });\n });\n message.providers.forEach(peerData => {\n this.safeDispatchEvent('peer', {\n detail: fromPbPeerInfo(peerData)\n });\n });\n return message;\n }\n}\n//# sourceMappingURL=network.js.map","/**\n * Compares two Uint8Arrays representing two xor distances. Returns `-1` if `a`\n * is a lower distance, `1` if `b` is a lower distance or `0` if the distances\n * are equal.\n */\nexport function xorCompare(a, b) {\n if (a.byteLength !== b.byteLength) {\n throw new Error('Inputs should have the same length');\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] === b[i]) {\n continue;\n }\n return a[i] < b[i] ? -1 : 1;\n }\n return 0;\n}\n//# sourceMappingURL=xor-compare.js.map","import { xor as uint8ArrayXor } from 'uint8arrays/xor';\nimport { xorCompare as uint8ArrayXorCompare } from 'uint8arrays/xor-compare';\nimport { convertPeerId } from '../utils.js';\n/**\n * Maintains a list of peerIds sorted by distance from a DHT key.\n */\nexport class PeerDistanceList {\n /**\n * The DHT key from which distance is calculated\n */\n originDhtKey;\n /**\n * The maximum size of the list\n */\n capacity;\n peerDistances;\n constructor(originDhtKey, capacity) {\n this.originDhtKey = originDhtKey;\n this.capacity = capacity;\n this.peerDistances = [];\n }\n /**\n * The length of the list\n */\n get length() {\n return this.peerDistances.length;\n }\n /**\n * The peers in the list, in order of distance from the origin key\n */\n get peers() {\n return this.peerDistances.map(pd => pd.peer);\n }\n /**\n * Add a peerId to the list.\n */\n async add(peer) {\n const dhtKey = await convertPeerId(peer.id);\n this.addWitKadId(peer, dhtKey);\n }\n /**\n * Add a peerId to the list.\n */\n addWitKadId(peer, kadId) {\n if (this.peerDistances.find(pd => pd.peer.id.equals(peer.id)) != null) {\n return;\n }\n const el = {\n peer,\n distance: uint8ArrayXor(this.originDhtKey, kadId)\n };\n this.peerDistances.push(el);\n this.peerDistances.sort((a, b) => uint8ArrayXorCompare(a.distance, b.distance));\n this.peerDistances = this.peerDistances.slice(0, this.capacity);\n }\n /**\n * Indicates whether any of the peerIds passed as a parameter are closer\n * to the origin key than the furthest peerId in the PeerDistanceList.\n */\n async isCloser(peerId) {\n if (this.length === 0) {\n return true;\n }\n const dhtKey = await convertPeerId(peerId);\n const dhtKeyXor = uint8ArrayXor(dhtKey, this.originDhtKey);\n const furthestDistance = this.peerDistances[this.peerDistances.length - 1].distance;\n return uint8ArrayXorCompare(dhtKeyXor, furthestDistance) === -1;\n }\n /**\n * Indicates whether any of the peerIds passed as a parameter are closer\n * to the origin key than the furthest peerId in the PeerDistanceList.\n */\n async anyCloser(peerIds) {\n if (peerIds.length === 0) {\n return false;\n }\n return Promise.any(peerIds.map(async (peerId) => this.isCloser(peerId)));\n }\n}\n//# sourceMappingURL=peer-distance-list.js.map","import { keys } from '@libp2p/crypto';\nimport { CodeError } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { Libp2pRecord } from '@libp2p/record';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { MessageType } from '../message/dht.js';\nimport { PeerDistanceList } from '../peer-list/peer-distance-list.js';\nimport { queryErrorEvent, finalPeerEvent, valueEvent } from '../query/events.js';\nimport { verifyRecord } from '../record/validators.js';\nimport * as utils from '../utils.js';\nexport class PeerRouting {\n log;\n routingTable;\n network;\n validators;\n queryManager;\n peerStore;\n peerId;\n constructor(components, init) {\n const { routingTable, network, validators, queryManager, logPrefix } = init;\n this.routingTable = routingTable;\n this.network = network;\n this.validators = validators;\n this.queryManager = queryManager;\n this.peerStore = components.peerStore;\n this.peerId = components.peerId;\n this.log = components.logger.forComponent(`${logPrefix}:peer-routing`);\n }\n /**\n * Look if we are connected to a peer with the given id.\n * Returns its id and addresses, if found, otherwise `undefined`.\n */\n async findPeerLocal(peer) {\n let peerData;\n const p = await this.routingTable.find(peer);\n if (p != null) {\n this.log('findPeerLocal found %p in routing table', peer);\n try {\n peerData = await this.peerStore.get(p);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n }\n if (peerData == null) {\n try {\n peerData = await this.peerStore.get(peer);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n }\n if (peerData != null) {\n this.log('findPeerLocal found %p in peer store', peer);\n return {\n id: peerData.id,\n multiaddrs: peerData.addresses.map((address) => address.multiaddr)\n };\n }\n return undefined;\n }\n /**\n * Get a value via rpc call for the given parameters\n */\n async *_getValueSingle(peer, key, options = {}) {\n const msg = {\n type: MessageType.GET_VALUE,\n key\n };\n yield* this.network.sendRequest(peer, msg, options);\n }\n /**\n * Get the public key directly from a node\n */\n async *getPublicKeyFromNode(peer, options = {}) {\n const pkKey = utils.keyForPublicKey(peer);\n for await (const event of this._getValueSingle(peer, pkKey, options)) {\n yield event;\n if (event.name === 'PEER_RESPONSE' && event.record != null) {\n const recPeer = await peerIdFromKeys(keys.marshalPublicKey({ bytes: event.record.value }));\n // compare hashes of the pub key\n if (!recPeer.equals(peer)) {\n throw new CodeError('public key does not match id', 'ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID');\n }\n if (recPeer.publicKey == null) {\n throw new CodeError('public key missing', 'ERR_PUBLIC_KEY_MISSING');\n }\n yield valueEvent({ from: peer, value: recPeer.publicKey }, options);\n }\n }\n throw new CodeError(`Node not responding with its public key: ${peer.toString()}`, 'ERR_INVALID_RECORD');\n }\n /**\n * Search for a peer with the given ID\n */\n async *findPeer(id, options = {}) {\n this.log('findPeer %p', id);\n if (options.useCache !== false) {\n // Try to find locally\n const pi = await this.findPeerLocal(id);\n // already got it\n if (pi != null) {\n this.log('found local');\n yield finalPeerEvent({\n from: this.peerId,\n peer: pi\n }, options);\n return;\n }\n }\n let foundPeer = false;\n if (options.useNetwork !== false) {\n const self = this; // eslint-disable-line @typescript-eslint/no-this-alias\n const findPeerQuery = async function* ({ peer, signal }) {\n const request = {\n type: MessageType.FIND_NODE,\n key: id.toBytes()\n };\n for await (const event of self.network.sendRequest(peer, request, {\n ...options,\n signal\n })) {\n yield event;\n if (event.name === 'PEER_RESPONSE') {\n const match = event.closer.find((p) => p.id.equals(id));\n // found the peer\n if (match != null) {\n yield finalPeerEvent({ from: event.from, peer: match }, options);\n }\n }\n }\n };\n for await (const event of this.queryManager.run(id.toBytes(), findPeerQuery, options)) {\n if (event.name === 'FINAL_PEER') {\n foundPeer = true;\n }\n yield event;\n }\n }\n if (!foundPeer) {\n yield queryErrorEvent({ from: this.peerId, error: new CodeError('Not found', 'ERR_NOT_FOUND') }, options);\n }\n }\n /**\n * Kademlia 'FIND_NODE' operation on a key, which could be the bytes from\n * a multihash or a peer ID\n */\n async *getClosestPeers(key, options = {}) {\n this.log('getClosestPeers to %b', key);\n const kadId = await utils.convertBuffer(key);\n const tablePeers = this.routingTable.closestPeers(kadId);\n const self = this; // eslint-disable-line @typescript-eslint/no-this-alias\n const peers = new PeerDistanceList(kadId, this.routingTable.kBucketSize);\n await Promise.all(tablePeers.map(async (peer) => { await peers.add({ id: peer, multiaddrs: [] }); }));\n const getCloserPeersQuery = async function* ({ peer, signal }) {\n self.log('closerPeersSingle %s from %p', uint8ArrayToString(key, 'base32'), peer);\n const request = {\n type: MessageType.FIND_NODE,\n key\n };\n yield* self.network.sendRequest(peer, request, {\n ...options,\n signal\n });\n };\n for await (const event of this.queryManager.run(key, getCloserPeersQuery, options)) {\n if (event.name === 'PEER_RESPONSE') {\n await Promise.all(event.closer.map(async (peerData) => {\n await peers.add(peerData);\n }));\n }\n yield event;\n }\n this.log('found %d peers close to %b', peers.length, key);\n for (const peer of peers.peers) {\n yield finalPeerEvent({\n from: this.peerId,\n peer\n }, options);\n }\n }\n /**\n * Query a particular peer for the value for the given key.\n * It will either return the value or a list of closer peers.\n *\n * Note: The peerStore is updated with new addresses found for the given peer.\n */\n async *getValueOrPeers(peer, key, options = {}) {\n for await (const event of this._getValueSingle(peer, key, options)) {\n if (event.name === 'PEER_RESPONSE') {\n if (event.record != null) {\n // We have a record\n try {\n await this._verifyRecordOnline(event.record);\n }\n catch (err) {\n const errMsg = 'invalid record received, discarded';\n this.log(errMsg);\n yield queryErrorEvent({ from: event.from, error: new CodeError(errMsg, 'ERR_INVALID_RECORD') }, options);\n continue;\n }\n }\n }\n yield event;\n }\n }\n /**\n * Verify a record, fetching missing public keys from the network.\n * Throws an error if the record is invalid.\n */\n async _verifyRecordOnline(record) {\n if (record.timeReceived == null) {\n throw new CodeError('invalid record received', 'ERR_INVALID_RECORD');\n }\n await verifyRecord(this.validators, new Libp2pRecord(record.key, record.value, record.timeReceived));\n }\n /**\n * Get the nearest peers to the given query, but if closer\n * than self\n */\n async getCloserPeersOffline(key, closerThan) {\n const id = await utils.convertBuffer(key);\n const ids = this.routingTable.closestPeers(id);\n const output = [];\n for (const peerId of ids) {\n if (peerId.equals(closerThan)) {\n continue;\n }\n try {\n const peer = await this.peerStore.get(peerId);\n output.push({\n id: peerId,\n multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)\n });\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n }\n if (output.length > 0) {\n this.log('getCloserPeersOffline found %d peer(s) closer to %b than %p', output.length, key, closerThan);\n }\n else {\n this.log('getCloserPeersOffline could not find peer closer to %b than %p with %d peers in the routing table', key, closerThan, this.routingTable.size);\n }\n return output;\n }\n}\n//# sourceMappingURL=index.js.map","module.exports = function (max) {\n\n if (!max) throw Error('hashlru must have a max value, of type number, greater than 0')\n\n var size = 0, cache = Object.create(null), _cache = Object.create(null)\n\n function update (key, value) {\n cache[key] = value\n size ++\n if(size >= max) {\n size = 0\n _cache = cache\n cache = Object.create(null)\n }\n }\n\n return {\n has: function (key) {\n return cache[key] !== undefined || _cache[key] !== undefined\n },\n remove: function (key) {\n if(cache[key] !== undefined)\n cache[key] = undefined\n if(_cache[key] !== undefined)\n _cache[key] = undefined\n },\n get: function (key) {\n var v = cache[key]\n if(v !== undefined) return v\n if((v = _cache[key]) !== undefined) {\n update(key, v)\n return v\n }\n },\n set: function (key, value) {\n if(cache[key] !== undefined) cache[key] = value\n else update(key, value)\n },\n clear: function () {\n cache = Object.create(null)\n _cache = Object.create(null)\n }\n }\n}\n\n\n\n\n\n\n\n","import { peerIdFromString } from '@libp2p/peer-id';\nimport cache from 'hashlru';\nimport { Key } from 'interface-datastore/key';\nimport Queue from 'p-queue';\nimport * as varint from 'uint8-varint';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { PROVIDERS_CLEANUP_INTERVAL, PROVIDERS_VALIDITY, PROVIDERS_LRU_CACHE_SIZE, PROVIDER_KEY_PREFIX } from './constants.js';\n/**\n * This class manages known providers.\n * A provider is a peer that we know to have the content for a given CID.\n *\n * Every `cleanupInterval` providers are checked if they\n * are still valid, i.e. younger than the `provideValidity`.\n * If they are not, they are deleted.\n *\n * To ensure the list survives restarts of the daemon,\n * providers are stored in the datastore, but to ensure\n * access is fast there is an LRU cache in front of that.\n */\nexport class Providers {\n log;\n datastore;\n cache;\n cleanupInterval;\n provideValidity;\n syncQueue;\n started;\n cleaner;\n constructor(components, init = {}) {\n const { cacheSize, cleanupInterval, provideValidity } = init;\n this.log = components.logger.forComponent('libp2p:kad-dht:providers');\n this.datastore = components.datastore;\n this.cleanupInterval = cleanupInterval ?? PROVIDERS_CLEANUP_INTERVAL;\n this.provideValidity = provideValidity ?? PROVIDERS_VALIDITY;\n this.cache = cache(cacheSize ?? PROVIDERS_LRU_CACHE_SIZE);\n this.syncQueue = new Queue({ concurrency: 1 });\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n /**\n * Start the provider cleanup service\n */\n async start() {\n if (this.started) {\n return;\n }\n this.started = true;\n this.cleaner = setInterval(() => {\n this._cleanup().catch(err => {\n this.log.error(err);\n });\n }, this.cleanupInterval);\n }\n /**\n * Release any resources.\n */\n async stop() {\n this.started = false;\n if (this.cleaner != null) {\n clearInterval(this.cleaner);\n this.cleaner = undefined;\n }\n }\n /**\n * Check all providers if they are still valid, and if not delete them\n */\n async _cleanup() {\n await this.syncQueue.add(async () => {\n const start = Date.now();\n let count = 0;\n let deleteCount = 0;\n const deleted = new Map();\n const batch = this.datastore.batch();\n // Get all provider entries from the datastore\n const query = this.datastore.query({ prefix: PROVIDER_KEY_PREFIX });\n for await (const entry of query) {\n try {\n // Add a delete to the batch for each expired entry\n const { cid, peerId } = parseProviderKey(entry.key);\n const time = readTime(entry.value).getTime();\n const now = Date.now();\n const delta = now - time;\n const expired = delta > this.provideValidity;\n this.log('comparing: %d - %d = %d > %d %s', now, time, delta, this.provideValidity, expired ? '(expired)' : '');\n if (expired) {\n deleteCount++;\n batch.delete(entry.key);\n const peers = deleted.get(cid) ?? new Set();\n peers.add(peerId);\n deleted.set(cid, peers);\n }\n count++;\n }\n catch (err) {\n this.log.error(err.message);\n }\n }\n // Commit the deletes to the datastore\n if (deleted.size > 0) {\n this.log('deleting %d / %d entries', deleteCount, count);\n await batch.commit();\n }\n else {\n this.log('nothing to delete');\n }\n // Clear expired entries from the cache\n for (const [cid, peers] of deleted) {\n const key = makeProviderKey(cid);\n const provs = this.cache.get(key);\n if (provs != null) {\n for (const peerId of peers) {\n provs.delete(peerId);\n }\n if (provs.size === 0) {\n this.cache.remove(key);\n }\n else {\n this.cache.set(key, provs);\n }\n }\n }\n this.log('Cleanup successful (%dms)', Date.now() - start);\n });\n }\n /**\n * Get the currently known provider peer ids for a given CID\n */\n async _getProvidersMap(cid) {\n const cacheKey = makeProviderKey(cid);\n let provs = this.cache.get(cacheKey);\n if (provs == null) {\n provs = await loadProviders(this.datastore, cid);\n this.cache.set(cacheKey, provs);\n }\n return provs;\n }\n /**\n * Add a new provider for the given CID\n */\n async addProvider(cid, provider) {\n await this.syncQueue.add(async () => {\n this.log('%p provides %s', provider, cid);\n const provs = await this._getProvidersMap(cid);\n this.log('loaded %s provs', provs.size);\n const now = new Date();\n provs.set(provider.toString(), now);\n const dsKey = makeProviderKey(cid);\n this.cache.set(dsKey, provs);\n await writeProviderEntry(this.datastore, cid, provider, now);\n });\n }\n /**\n * Get a list of providers for the given CID\n */\n async getProviders(cid) {\n return this.syncQueue.add(async () => {\n this.log('get providers for %s', cid);\n const provs = await this._getProvidersMap(cid);\n return [...provs.keys()].map(peerIdStr => {\n return peerIdFromString(peerIdStr);\n });\n }, {\n // no timeout is specified for this queue so it will not\n // throw, but this is required to get the right return\n // type since p-queue@7.3.4\n throwOnTimeout: true\n });\n }\n}\n/**\n * Encode the given key its matching datastore key\n */\nfunction makeProviderKey(cid) {\n const cidStr = typeof cid === 'string' ? cid : uint8ArrayToString(cid.multihash.bytes, 'base32');\n return `${PROVIDER_KEY_PREFIX}/${cidStr}`;\n}\n/**\n * Write a provider into the given store\n */\nasync function writeProviderEntry(store, cid, peer, time) {\n const dsKey = [\n makeProviderKey(cid),\n '/',\n peer.toString()\n ].join('');\n const key = new Key(dsKey);\n const buffer = varint.encode(time.getTime());\n await store.put(key, buffer);\n}\n/**\n * Parse the CID and provider peer id from the key\n */\nfunction parseProviderKey(key) {\n const parts = key.toString().split('/');\n if (parts.length !== 5) {\n throw new Error(`incorrectly formatted provider entry key in datastore: ${key.toString()}`);\n }\n return {\n cid: parts[3],\n peerId: parts[4]\n };\n}\n/**\n * Load providers for the given CID from the store\n */\nasync function loadProviders(store, cid) {\n const providers = new Map();\n const query = store.query({ prefix: makeProviderKey(cid) });\n for await (const entry of query) {\n const { peerId } = parseProviderKey(entry.key);\n providers.set(peerId, readTime(entry.value));\n }\n return providers;\n}\nfunction readTime(buf) {\n return new Date(varint.decode(buf));\n}\n//# sourceMappingURL=providers.js.map","import { CodeError, setMaxListeners } from '@libp2p/interface';\nimport { Queue } from '@libp2p/utils/queue';\nimport { anySignal } from 'any-signal';\nimport { xor as uint8ArrayXor } from 'uint8arrays/xor';\nimport { xorCompare as uint8ArrayXorCompare } from 'uint8arrays/xor-compare';\nimport { convertPeerId, convertBuffer } from '../utils.js';\nimport { queryErrorEvent } from './events.js';\n/**\n * Walks a path through the DHT, calling the passed query function for\n * every peer encountered that we have not seen before\n */\nexport async function* queryPath(options) {\n const { key, startingPeer, ourPeerId, signal, query, alpha, pathIndex, numPaths, queryFuncTimeout, log, peersSeen, connectionManager } = options;\n // Only ALPHA node/value lookups are allowed at any given time for each process\n // https://github.com/libp2p/specs/tree/master/kad-dht#alpha-concurrency-parameter-%CE%B1\n const queue = new Queue({\n concurrency: alpha,\n sort: (a, b) => uint8ArrayXorCompare(a.options.distance, b.options.distance)\n });\n // perform lookups on kadId, not the actual value\n const kadId = await convertBuffer(key);\n /**\n * Adds the passed peer to the query queue if it's not us and no\n * other path has passed through this peer\n */\n function queryPeer(peer, peerKadId) {\n if (peer == null) {\n return;\n }\n peersSeen.add(peer);\n const peerXor = uint8ArrayXor(peerKadId, kadId);\n queue.add(async () => {\n const signals = [signal];\n if (queryFuncTimeout != null) {\n signals.push(AbortSignal.timeout(queryFuncTimeout));\n }\n const compoundSignal = anySignal(signals);\n // this signal can get listened to a lot\n setMaxListeners(Infinity, compoundSignal);\n try {\n for await (const event of query({\n key,\n peer,\n signal: compoundSignal,\n pathIndex,\n numPaths\n })) {\n if (compoundSignal.aborted) {\n return;\n }\n // if there are closer peers and the query has not completed, continue the query\n if (event.name === 'PEER_RESPONSE') {\n for (const closerPeer of event.closer) {\n if (peersSeen.has(closerPeer.id)) { // eslint-disable-line max-depth\n log('already seen %p in query', closerPeer.id);\n continue;\n }\n if (ourPeerId.equals(closerPeer.id)) { // eslint-disable-line max-depth\n log('not querying ourselves');\n continue;\n }\n if (!(await connectionManager.isDialable(closerPeer.multiaddrs))) { // eslint-disable-line max-depth\n log('not querying undialable peer');\n continue;\n }\n const closerPeerKadId = await convertPeerId(closerPeer.id);\n const closerPeerXor = uint8ArrayXor(closerPeerKadId, kadId);\n // only continue query if closer peer is actually closer\n if (uint8ArrayXorCompare(closerPeerXor, peerXor) !== -1) { // eslint-disable-line max-depth\n log('skipping %p as they are not closer to %b than %p', closerPeer.id, key, peer);\n continue;\n }\n log('querying closer peer %p', closerPeer.id);\n queryPeer(closerPeer.id, closerPeerKadId);\n }\n }\n queue.safeDispatchEvent('completed', {\n detail: event\n });\n }\n }\n catch (err) {\n if (!signal.aborted) {\n return queryErrorEvent({\n from: peer,\n error: err\n }, options);\n }\n }\n finally {\n compoundSignal.clear();\n }\n }, {\n distance: peerXor\n }).catch(err => {\n log.error(err);\n });\n }\n // begin the query with the starting peer\n queryPeer(startingPeer, await convertPeerId(startingPeer));\n try {\n // yield results as they come in\n for await (const event of queue.toGenerator({ signal })) {\n if (event != null) {\n yield event;\n }\n }\n }\n catch (err) {\n if (signal.aborted) {\n throw new CodeError('Query aborted', 'ERR_QUERY_ABORTED');\n }\n throw err;\n }\n}\n//# sourceMappingURL=query-path.js.map","import { setMaxListeners } from '@libp2p/interface';\nimport { PeerSet } from '@libp2p/peer-collections';\nimport { anySignal } from 'any-signal';\nimport merge from 'it-merge';\nimport { raceSignal } from 'race-signal';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { ALPHA, K, DEFAULT_QUERY_TIMEOUT } from '../constants.js';\nimport { convertBuffer } from '../utils.js';\nimport { queryPath } from './query-path.js';\n/**\n * Keeps track of all running queries\n */\nexport class QueryManager {\n disjointPaths;\n alpha;\n shutDownController;\n running;\n queries;\n logger;\n peerId;\n connectionManager;\n routingTable;\n initialQuerySelfHasRun;\n logPrefix;\n metrics;\n constructor(components, init) {\n const { disjointPaths = K, alpha = ALPHA, logPrefix } = init;\n this.logPrefix = logPrefix;\n this.disjointPaths = disjointPaths ?? K;\n this.running = false;\n this.alpha = alpha ?? ALPHA;\n this.queries = 0;\n this.initialQuerySelfHasRun = init.initialQuerySelfHasRun;\n this.routingTable = init.routingTable;\n this.logger = components.logger;\n this.peerId = components.peerId;\n this.connectionManager = components.connectionManager;\n if (components.metrics != null) {\n this.metrics = {\n runningQueries: components.metrics.registerMetric(`${logPrefix.replaceAll(':', '_')}_running_queries`),\n queryTime: components.metrics.registerMetric(`${logPrefix.replaceAll(':', '_')}_query_time_seconds`)\n };\n }\n // allow us to stop queries on shut down\n this.shutDownController = new AbortController();\n // make sure we don't make a lot of noise in the logs\n setMaxListeners(Infinity, this.shutDownController.signal);\n }\n isStarted() {\n return this.running;\n }\n /**\n * Starts the query manager\n */\n async start() {\n this.running = true;\n // allow us to stop queries on shut down\n this.shutDownController = new AbortController();\n // make sure we don't make a lot of noise in the logs\n setMaxListeners(Infinity, this.shutDownController.signal);\n }\n /**\n * Stops all queries\n */\n async stop() {\n this.running = false;\n this.shutDownController.abort();\n }\n async *run(key, queryFunc, options = {}) {\n if (!this.running) {\n throw new Error('QueryManager not started');\n }\n const stopQueryTimer = this.metrics?.queryTime.timer();\n if (options.signal == null) {\n // don't let queries run forever\n const signal = AbortSignal.timeout(DEFAULT_QUERY_TIMEOUT);\n // this signal will get listened to for network requests, etc\n // so make sure we don't make a lot of noise in the logs\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n // if the user breaks out of a for..await of loop iterating over query\n // results we need to cancel any in-flight network requests\n const queryEarlyExitController = new AbortController();\n const signal = anySignal([\n this.shutDownController.signal,\n queryEarlyExitController.signal,\n options.signal\n ]);\n // this signal will get listened to for every invocation of queryFunc\n // so make sure we don't make a lot of noise in the logs\n setMaxListeners(Infinity, signal, queryEarlyExitController.signal);\n const log = this.logger.forComponent(`${this.logPrefix}:query:` + uint8ArrayToString(key, 'base58btc'));\n // query a subset of peers up to `kBucketSize / 2` in length\n const startTime = Date.now();\n let queryFinished = false;\n try {\n if (options.isSelfQuery !== true && this.initialQuerySelfHasRun != null) {\n log('waiting for initial query-self query before continuing');\n await raceSignal(this.initialQuerySelfHasRun.promise, signal);\n this.initialQuerySelfHasRun = undefined;\n }\n log('query:start');\n this.queries++;\n this.metrics?.runningQueries.update(this.queries);\n const id = await convertBuffer(key);\n const peers = this.routingTable.closestPeers(id);\n const peersToQuery = peers.slice(0, Math.min(this.disjointPaths, peers.length));\n if (peers.length === 0) {\n log.error('Running query with no peers');\n return;\n }\n // make sure we don't get trapped in a loop\n const peersSeen = new PeerSet();\n // Create query paths from the starting peers\n const paths = peersToQuery.map((peer, index) => {\n return queryPath({\n key,\n startingPeer: peer,\n ourPeerId: this.peerId,\n signal,\n query: queryFunc,\n pathIndex: index,\n numPaths: peersToQuery.length,\n alpha: this.alpha,\n queryFuncTimeout: options.queryFuncTimeout,\n log,\n peersSeen,\n onProgress: options.onProgress,\n connectionManager: this.connectionManager\n });\n });\n // Execute the query along each disjoint path and yield their results as they become available\n for await (const event of merge(...paths)) {\n if (event.name === 'QUERY_ERROR') {\n log.error('query error', event.error);\n }\n if (event.name === 'PEER_RESPONSE') {\n for (const peer of [...event.closer, ...event.providers]) {\n // eslint-disable-next-line max-depth\n if (!(await this.connectionManager.isDialable(peer.multiaddrs))) {\n continue;\n }\n await this.routingTable.add(peer.id);\n }\n }\n yield event;\n }\n queryFinished = true;\n }\n catch (err) {\n if (!this.running && err.code === 'ERR_QUERY_ABORTED') {\n // ignore query aborted errors that were thrown during query manager shutdown\n }\n else {\n throw err;\n }\n }\n finally {\n if (!queryFinished) {\n log('query exited early');\n queryEarlyExitController.abort();\n }\n signal.clear();\n this.queries--;\n this.metrics?.runningQueries.update(this.queries);\n if (stopQueryTimer != null) {\n stopQueryTimer();\n }\n log('query:done in %dms', Date.now() - startTime);\n }\n }\n}\n//# sourceMappingURL=manager.js.map","/**\n * @packageDocumentation\n *\n * Counts the number of items in an (async)iterable.\n *\n * N.b. will consume the iterable\n *\n * @example\n *\n * ```javascript\n * import length from 'it-length'\n *\n * // This can also be an iterator, generator, etc\n * const values = [0, 1, 2, 3, 4]\n *\n * const res = length(values)\n *\n * console.info(res) // 5\n * ```\n *\n * Async sources must be awaited:\n *\n * ```javascript\n * import length from 'it-length'\n *\n * const values = async function * () {\n * yield * [0, 1, 2, 3, 4]\n * }\n *\n * const res = await length(values())\n *\n * console.info(res) // 5\n * ```\n */\nfunction isAsyncIterable(thing) {\n return thing[Symbol.asyncIterator] != null;\n}\nfunction length(source) {\n if (isAsyncIterable(source)) {\n return (async () => {\n let count = 0;\n for await (const _ of source) { // eslint-disable-line no-unused-vars,@typescript-eslint/no-unused-vars\n count++;\n }\n return count;\n })();\n }\n else {\n let count = 0;\n for (const _ of source) { // eslint-disable-line no-unused-vars,@typescript-eslint/no-unused-vars\n count++;\n }\n return count;\n }\n}\nexport default length;\n//# sourceMappingURL=index.js.map","import pTimeout from 'p-timeout';\n\nconst normalizeEmitter = emitter => {\n\tconst addListener = emitter.addEventListener || emitter.on || emitter.addListener;\n\tconst removeListener = emitter.removeEventListener || emitter.off || emitter.removeListener;\n\n\tif (!addListener || !removeListener) {\n\t\tthrow new TypeError('Emitter is not compatible');\n\t}\n\n\treturn {\n\t\taddListener: addListener.bind(emitter),\n\t\tremoveListener: removeListener.bind(emitter),\n\t};\n};\n\nexport function pEventMultiple(emitter, event, options) {\n\tlet cancel;\n\tconst returnValue = new Promise((resolve, reject) => {\n\t\toptions = {\n\t\t\trejectionEvents: ['error'],\n\t\t\tmultiArgs: false,\n\t\t\tresolveImmediately: false,\n\t\t\t...options,\n\t\t};\n\n\t\tif (!(options.count >= 0 && (options.count === Number.POSITIVE_INFINITY || Number.isInteger(options.count)))) {\n\t\t\tthrow new TypeError('The `count` option should be at least 0 or more');\n\t\t}\n\n\t\toptions.signal?.throwIfAborted();\n\n\t\t// Allow multiple events\n\t\tconst events = [event].flat();\n\n\t\tconst items = [];\n\t\tconst {addListener, removeListener} = normalizeEmitter(emitter);\n\n\t\tconst onItem = (...arguments_) => {\n\t\t\tconst value = options.multiArgs ? arguments_ : arguments_[0];\n\n\t\t\t// eslint-disable-next-line unicorn/no-array-callback-reference\n\t\t\tif (options.filter && !options.filter(value)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titems.push(value);\n\n\t\t\tif (options.count === items.length) {\n\t\t\t\tcancel();\n\t\t\t\tresolve(items);\n\t\t\t}\n\t\t};\n\n\t\tconst rejectHandler = error => {\n\t\t\tcancel();\n\t\t\treject(error);\n\t\t};\n\n\t\tcancel = () => {\n\t\t\tfor (const event of events) {\n\t\t\t\tremoveListener(event, onItem);\n\t\t\t}\n\n\t\t\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\t\t\tremoveListener(rejectionEvent, rejectHandler);\n\t\t\t}\n\t\t};\n\n\t\tfor (const event of events) {\n\t\t\taddListener(event, onItem);\n\t\t}\n\n\t\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\t\taddListener(rejectionEvent, rejectHandler);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\toptions.signal.addEventListener('abort', () => {\n\t\t\t\trejectHandler(options.signal.reason);\n\t\t\t}, {once: true});\n\t\t}\n\n\t\tif (options.resolveImmediately) {\n\t\t\tresolve(items);\n\t\t}\n\t});\n\n\treturnValue.cancel = cancel;\n\n\tif (typeof options.timeout === 'number') {\n\t\tconst timeout = pTimeout(returnValue, {milliseconds: options.timeout});\n\t\ttimeout.cancel = cancel;\n\t\treturn timeout;\n\t}\n\n\treturn returnValue;\n}\n\nexport function pEvent(emitter, event, options) {\n\tif (typeof options === 'function') {\n\t\toptions = {filter: options};\n\t}\n\n\toptions = {\n\t\t...options,\n\t\tcount: 1,\n\t\tresolveImmediately: false,\n\t};\n\n\tconst arrayPromise = pEventMultiple(emitter, event, options);\n\tconst promise = arrayPromise.then(array => array[0]);\n\tpromise.cancel = arrayPromise.cancel;\n\n\treturn promise;\n}\n\nexport function pEventIterator(emitter, event, options) {\n\tif (typeof options === 'function') {\n\t\toptions = {filter: options};\n\t}\n\n\t// Allow multiple events\n\tconst events = [event].flat();\n\n\toptions = {\n\t\trejectionEvents: ['error'],\n\t\tresolutionEvents: [],\n\t\tlimit: Number.POSITIVE_INFINITY,\n\t\tmultiArgs: false,\n\t\t...options,\n\t};\n\n\tconst {limit} = options;\n\tconst isValidLimit = limit >= 0 && (limit === Number.POSITIVE_INFINITY || Number.isInteger(limit));\n\tif (!isValidLimit) {\n\t\tthrow new TypeError('The `limit` option should be a non-negative integer or Infinity');\n\t}\n\n\toptions.signal?.throwIfAborted();\n\n\tif (limit === 0) {\n\t\t// Return an empty async iterator to avoid any further cost\n\t\treturn {\n\t\t\t[Symbol.asyncIterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tasync next() {\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: undefined,\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t}\n\n\tconst {addListener, removeListener} = normalizeEmitter(emitter);\n\n\tlet isDone = false;\n\tlet error;\n\tlet hasPendingError = false;\n\tconst nextQueue = [];\n\tconst valueQueue = [];\n\tlet eventCount = 0;\n\tlet isLimitReached = false;\n\n\tconst valueHandler = (...arguments_) => {\n\t\teventCount++;\n\t\tisLimitReached = eventCount === limit;\n\n\t\tconst value = options.multiArgs ? arguments_ : arguments_[0];\n\n\t\tif (nextQueue.length > 0) {\n\t\t\tconst {resolve} = nextQueue.shift();\n\n\t\t\tresolve({done: false, value});\n\n\t\t\tif (isLimitReached) {\n\t\t\t\tcancel();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueQueue.push(value);\n\n\t\tif (isLimitReached) {\n\t\t\tcancel();\n\t\t}\n\t};\n\n\tconst cancel = () => {\n\t\tisDone = true;\n\n\t\tfor (const event of events) {\n\t\t\tremoveListener(event, valueHandler);\n\t\t}\n\n\t\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\t\tremoveListener(rejectionEvent, rejectHandler);\n\t\t}\n\n\t\tfor (const resolutionEvent of options.resolutionEvents) {\n\t\t\tremoveListener(resolutionEvent, resolveHandler);\n\t\t}\n\n\t\twhile (nextQueue.length > 0) {\n\t\t\tconst {resolve} = nextQueue.shift();\n\t\t\tresolve({done: true, value: undefined});\n\t\t}\n\t};\n\n\tconst rejectHandler = (...arguments_) => {\n\t\terror = options.multiArgs ? arguments_ : arguments_[0];\n\n\t\tif (nextQueue.length > 0) {\n\t\t\tconst {reject} = nextQueue.shift();\n\t\t\treject(error);\n\t\t} else {\n\t\t\thasPendingError = true;\n\t\t}\n\n\t\tcancel();\n\t};\n\n\tconst resolveHandler = (...arguments_) => {\n\t\tconst value = options.multiArgs ? arguments_ : arguments_[0];\n\n\t\t// eslint-disable-next-line unicorn/no-array-callback-reference\n\t\tif (options.filter && !options.filter(value)) {\n\t\t\tcancel();\n\t\t\treturn;\n\t\t}\n\n\t\tif (nextQueue.length > 0) {\n\t\t\tconst {resolve} = nextQueue.shift();\n\t\t\tresolve({done: true, value});\n\t\t} else {\n\t\t\tvalueQueue.push(value);\n\t\t}\n\n\t\tcancel();\n\t};\n\n\tfor (const event of events) {\n\t\taddListener(event, valueHandler);\n\t}\n\n\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\taddListener(rejectionEvent, rejectHandler);\n\t}\n\n\tfor (const resolutionEvent of options.resolutionEvents) {\n\t\taddListener(resolutionEvent, resolveHandler);\n\t}\n\n\tif (options.signal) {\n\t\toptions.signal.addEventListener('abort', () => {\n\t\t\trejectHandler(options.signal.reason);\n\t\t}, {once: true});\n\t}\n\n\treturn {\n\t\t[Symbol.asyncIterator]() {\n\t\t\treturn this;\n\t\t},\n\t\tasync next() {\n\t\t\tif (valueQueue.length > 0) {\n\t\t\t\tconst value = valueQueue.shift();\n\t\t\t\treturn {\n\t\t\t\t\tdone: isDone && valueQueue.length === 0 && !isLimitReached,\n\t\t\t\t\tvalue,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (hasPendingError) {\n\t\t\t\thasPendingError = false;\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (isDone) {\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: undefined,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tnextQueue.push({resolve, reject});\n\t\t\t});\n\t\t},\n\t\tasync return(value) {\n\t\t\tcancel();\n\t\t\treturn {\n\t\t\t\tdone: isDone,\n\t\t\t\tvalue,\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport {TimeoutError} from 'p-timeout';\n","import { setMaxListeners } from '@libp2p/interface';\nimport { anySignal } from 'any-signal';\nimport length from 'it-length';\nimport { pipe } from 'it-pipe';\nimport take from 'it-take';\nimport pDefer from 'p-defer';\nimport { pEvent } from 'p-event';\nimport { QUERY_SELF_INTERVAL, QUERY_SELF_TIMEOUT, K, QUERY_SELF_INITIAL_INTERVAL } from './constants.js';\n/**\n * Receives notifications of new peers joining the network that support the DHT protocol\n */\nexport class QuerySelf {\n log;\n peerId;\n peerRouting;\n routingTable;\n count;\n interval;\n initialInterval;\n queryTimeout;\n started;\n timeoutId;\n controller;\n initialQuerySelfHasRun;\n querySelfPromise;\n constructor(components, init) {\n const { peerRouting, logPrefix, count, interval, queryTimeout, routingTable } = init;\n this.peerId = components.peerId;\n this.log = components.logger.forComponent(`${logPrefix}:query-self`);\n this.started = false;\n this.peerRouting = peerRouting;\n this.routingTable = routingTable;\n this.count = count ?? K;\n this.interval = interval ?? QUERY_SELF_INTERVAL;\n this.initialInterval = init.initialInterval ?? QUERY_SELF_INITIAL_INTERVAL;\n this.queryTimeout = queryTimeout ?? QUERY_SELF_TIMEOUT;\n this.initialQuerySelfHasRun = init.initialQuerySelfHasRun;\n }\n isStarted() {\n return this.started;\n }\n start() {\n if (this.started) {\n return;\n }\n this.started = true;\n clearTimeout(this.timeoutId);\n this.timeoutId = setTimeout(() => {\n this.querySelf()\n .catch(err => {\n this.log.error('error running self-query', err);\n });\n }, this.initialInterval);\n }\n stop() {\n this.started = false;\n if (this.timeoutId != null) {\n clearTimeout(this.timeoutId);\n }\n if (this.controller != null) {\n this.controller.abort();\n }\n }\n async querySelf() {\n if (!this.started) {\n this.log('skip self-query because we are not started');\n return;\n }\n if (this.querySelfPromise != null) {\n this.log('joining existing self query');\n return this.querySelfPromise.promise;\n }\n this.querySelfPromise = pDefer();\n if (this.started) {\n this.controller = new AbortController();\n const timeoutSignal = AbortSignal.timeout(this.queryTimeout);\n const signal = anySignal([this.controller.signal, timeoutSignal]);\n // this controller will get used for lots of dial attempts so make sure we don't cause warnings to be logged\n setMaxListeners(Infinity, signal, this.controller.signal, timeoutSignal);\n try {\n if (this.routingTable.size === 0) {\n this.log('routing table was empty, waiting for some peers before running query');\n // wait to discover at least one DHT peer\n await pEvent(this.routingTable, 'peer:add', {\n signal\n });\n }\n this.log('run self-query, look for %d peers timing out after %dms', this.count, this.queryTimeout);\n const start = Date.now();\n const found = await pipe(this.peerRouting.getClosestPeers(this.peerId.toBytes(), {\n signal,\n isSelfQuery: true\n }), (source) => take(source, this.count), async (source) => length(source));\n this.log('self-query found %d peers in %dms', found, Date.now() - start);\n }\n catch (err) {\n this.log.error('self-query error', err);\n }\n finally {\n signal.clear();\n if (this.initialQuerySelfHasRun != null) {\n this.initialQuerySelfHasRun.resolve();\n this.initialQuerySelfHasRun = undefined;\n }\n }\n }\n this.querySelfPromise.resolve();\n this.querySelfPromise = undefined;\n if (!this.started) {\n return;\n }\n this.timeoutId = setTimeout(() => {\n this.querySelf()\n .catch(err => {\n this.log.error('error running self-query', err);\n });\n }, this.interval);\n }\n}\n//# sourceMappingURL=query-self.js.map","import { TypedEventEmitter } from '@libp2p/interface';\nimport map from 'it-map';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { xor as uint8ArrayXor } from 'uint8arrays/xor';\nimport { PeerDistanceList } from '../peer-list/peer-distance-list.js';\nimport { KBUCKET_SIZE } from './index.js';\nfunction arrayEquals(array1, array2) {\n if (array1 === array2) {\n return true;\n }\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0, length = array1.length; i < length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction ensureInt8(name, val) {\n if (!(val instanceof Uint8Array)) {\n throw new TypeError(name + ' is not a Uint8Array');\n }\n if (val.byteLength !== 32) {\n throw new TypeError(name + ' had incorrect length');\n }\n}\nexport function isLeafBucket(obj) {\n return Array.isArray(obj?.peers);\n}\n/**\n * Implementation of a Kademlia DHT routing table as a prefix binary trie with\n * configurable prefix length, bucket split threshold and size.\n */\nexport class KBucket extends TypedEventEmitter {\n root;\n localPeer;\n prefixLength;\n splitThreshold;\n kBucketSize;\n numberOfNodesToPing;\n constructor(options) {\n super();\n this.localPeer = options.localPeer;\n this.prefixLength = options.prefixLength;\n this.kBucketSize = options.kBucketSize ?? KBUCKET_SIZE;\n this.splitThreshold = options.splitThreshold ?? this.kBucketSize;\n this.numberOfNodesToPing = options.numberOfNodesToPing ?? 3;\n ensureInt8('options.localPeer.kadId', options.localPeer.kadId);\n this.root = {\n prefix: '',\n depth: 0,\n peers: []\n };\n }\n /**\n * Adds a contact to the k-bucket.\n *\n * @param {Peer} peer - the contact object to add\n */\n add(peer) {\n ensureInt8('peer.kadId', peer?.kadId);\n const bucket = this._determineBucket(peer.kadId);\n // check if the contact already exists\n if (this._indexOf(bucket, peer.kadId) > -1) {\n return;\n }\n // are there too many peers in the bucket and can we make the trie deeper?\n if (bucket.peers.length === this.splitThreshold && bucket.depth < this.prefixLength) {\n // split the bucket\n this._split(bucket);\n // try again\n this.add(peer);\n return;\n }\n // is there space in the bucket?\n if (bucket.peers.length < this.kBucketSize) {\n bucket.peers.push(peer);\n this.safeDispatchEvent('added', { detail: peer });\n return;\n }\n // we are at the bottom of the trie and the bucket is full so we can't add\n // any more peers.\n //\n // instead ping the first this.numberOfNodesToPing in order to determine\n // if they are still online.\n //\n // only add the new peer if one of the pinged nodes does not respond, this\n // prevents DoS flooding with new invalid contacts.\n this.safeDispatchEvent('ping', {\n detail: {\n oldContacts: bucket.peers.slice(0, this.numberOfNodesToPing),\n newContact: peer\n }\n });\n }\n /**\n * Get 0-n closest contacts to the provided node id. \"Closest\" here means:\n * closest according to the XOR metric of the contact node id.\n *\n * @param {Uint8Array} id - Contact node id\n * @returns {Generator} Array Maximum of n closest contacts to the node id\n */\n *closest(id, n = this.kBucketSize) {\n const list = new PeerDistanceList(id, n);\n for (const peer of this.toIterable()) {\n list.addWitKadId({ id: peer.peerId, multiaddrs: [] }, peer.kadId);\n }\n yield* map(list.peers, info => info.id);\n }\n /**\n * Counts the total number of contacts in the tree.\n *\n * @returns {number} The number of contacts held in the tree\n */\n count() {\n function countBucket(bucket) {\n if (isLeafBucket(bucket)) {\n return bucket.peers.length;\n }\n let count = 0;\n if (bucket.left != null) {\n count += countBucket(bucket.left);\n }\n if (bucket.right != null) {\n count += countBucket(bucket.right);\n }\n return count;\n }\n return countBucket(this.root);\n }\n /**\n * Get a contact by its exact ID.\n * If this is a leaf, loop through the bucket contents and return the correct\n * contact if we have it or null if not. If this is an inner node, determine\n * which branch of the tree to traverse and repeat.\n *\n * @param {Uint8Array} kadId - The ID of the contact to fetch.\n * @returns {object | undefined} The contact if available, otherwise null\n */\n get(kadId) {\n const bucket = this._determineBucket(kadId);\n const index = this._indexOf(bucket, kadId);\n return bucket.peers[index];\n }\n /**\n * Removes contact with the provided id.\n *\n * @param {Uint8Array} kadId - The ID of the contact to remove\n */\n remove(kadId) {\n const bucket = this._determineBucket(kadId);\n const index = this._indexOf(bucket, kadId);\n if (index > -1) {\n const peer = bucket.peers.splice(index, 1)[0];\n this.safeDispatchEvent('removed', {\n detail: peer\n });\n }\n }\n /**\n * Similar to `toArray()` but instead of buffering everything up into an\n * array before returning it, yields contacts as they are encountered while\n * walking the tree.\n *\n * @returns {Iterable} All of the contacts in the tree, as an iterable\n */\n *toIterable() {\n function* iterate(bucket) {\n if (isLeafBucket(bucket)) {\n yield* bucket.peers;\n return;\n }\n yield* iterate(bucket.left);\n yield* iterate(bucket.right);\n }\n yield* iterate(this.root);\n }\n /**\n * Default distance function. Finds the XOR distance between firstId and\n * secondId.\n *\n * @param {Uint8Array} firstId - Uint8Array containing first id.\n * @param {Uint8Array} secondId - Uint8Array containing second id.\n * @returns {number} Integer The XOR distance between firstId and secondId.\n */\n distance(firstId, secondId) {\n return BigInt('0x' + uint8ArrayToString(uint8ArrayXor(firstId, secondId), 'base16'));\n }\n /**\n * Determines whether the id at the bitIndex is 0 or 1\n * Return left leaf if `id` at `bitIndex` is 0, right leaf otherwise\n *\n * @param {Uint8Array} kadId - Id to compare localNodeId with\n * @returns {LeafBucket} left leaf if id at bitIndex is 0, right leaf otherwise.\n */\n _determineBucket(kadId) {\n const bitString = uint8ArrayToString(kadId, 'base2');\n const prefix = bitString.substring(0, this.prefixLength);\n function findBucket(bucket, bitIndex = 0) {\n if (isLeafBucket(bucket)) {\n return bucket;\n }\n const bit = prefix[bitIndex];\n if (bit === '0') {\n return findBucket(bucket.left, bitIndex + 1);\n }\n return findBucket(bucket.right, bitIndex + 1);\n }\n return findBucket(this.root);\n }\n /**\n * Returns the index of the contact with provided\n * id if it exists, returns -1 otherwise.\n *\n * @param {object} bucket - internal object that has 2 leafs: left and right\n * @param {Uint8Array} kadId - KadId of peer\n * @returns {number} Integer Index of contact with provided id if it exists, -1 otherwise.\n */\n _indexOf(bucket, kadId) {\n return bucket.peers.findIndex(peer => arrayEquals(peer.kadId, kadId));\n }\n /**\n * Modify the bucket, turn it from a leaf bucket to an internal bucket\n *\n * @param {any} bucket - bucket for splitting\n */\n _split(bucket) {\n const depth = bucket.depth + 1;\n // create child buckets\n const left = {\n prefix: '0',\n depth,\n peers: []\n };\n const right = {\n prefix: '1',\n depth,\n peers: []\n };\n // redistribute peers\n for (const peer of bucket.peers) {\n const bitString = uint8ArrayToString(peer.kadId, 'base2');\n if (bitString[depth] === '0') {\n left.peers.push(peer);\n }\n else {\n right.peers.push(peer);\n }\n }\n // convert leaf bucket to internal bucket\n // @ts-expect-error peers is not a property of LeafBucket\n delete bucket.peers;\n // @ts-expect-error left is not a property of LeafBucket\n bucket.left = left;\n // @ts-expect-error right is not a property of LeafBucket\n bucket.right = right;\n }\n}\n//# sourceMappingURL=k-bucket.js.map","import { CodeError, TypedEventEmitter } from '@libp2p/interface';\nimport { PeerSet } from '@libp2p/peer-collections';\nimport { PeerQueue } from '@libp2p/utils/peer-queue';\nimport { pbStream } from 'it-protobuf-stream';\nimport { Message, MessageType } from '../message/dht.js';\nimport * as utils from '../utils.js';\nimport { KBucket, isLeafBucket } from './k-bucket.js';\nexport const KAD_CLOSE_TAG_NAME = 'kad-close';\nexport const KAD_CLOSE_TAG_VALUE = 50;\nexport const KBUCKET_SIZE = 20;\nexport const PREFIX_LENGTH = 32;\nexport const PING_TIMEOUT = 10000;\nexport const PING_CONCURRENCY = 10;\n/**\n * A wrapper around `k-bucket`, to provide easy store and\n * retrieval for peers.\n */\nexport class RoutingTable extends TypedEventEmitter {\n kBucketSize;\n kb;\n pingQueue;\n log;\n components;\n prefixLength;\n splitThreshold;\n pingTimeout;\n pingConcurrency;\n running;\n protocol;\n tagName;\n tagValue;\n metrics;\n constructor(components, init) {\n super();\n this.components = components;\n this.log = components.logger.forComponent(`${init.logPrefix}:routing-table`);\n this.kBucketSize = init.kBucketSize ?? KBUCKET_SIZE;\n this.pingTimeout = init.pingTimeout ?? PING_TIMEOUT;\n this.pingConcurrency = init.pingConcurrency ?? PING_CONCURRENCY;\n this.running = false;\n this.protocol = init.protocol;\n this.tagName = init.tagName ?? KAD_CLOSE_TAG_NAME;\n this.tagValue = init.tagValue ?? KAD_CLOSE_TAG_VALUE;\n this.prefixLength = init.prefixLength ?? PREFIX_LENGTH;\n this.splitThreshold = init.splitThreshold ?? KBUCKET_SIZE;\n this.pingQueue = new PeerQueue({\n concurrency: this.pingConcurrency,\n metricName: `${init.logPrefix.replaceAll(':', '_')}_ping_queue`,\n metrics: this.components.metrics\n });\n this.pingQueue.addEventListener('error', evt => {\n this.log.error('error pinging peer', evt.detail);\n });\n if (this.components.metrics != null) {\n this.metrics = {\n routingTableSize: this.components.metrics.registerMetric(`${init.logPrefix.replaceAll(':', '_')}_routing_table_size`),\n routingTableKadBucketTotal: this.components.metrics.registerMetric(`${init.logPrefix.replaceAll(':', '_')}_routing_table_kad_bucket_total`),\n routingTableKadBucketAverageOccupancy: this.components.metrics.registerMetric(`${init.logPrefix.replaceAll(':', '_')}_routing_table_kad_bucket_average_occupancy`),\n routingTableKadBucketMaxDepth: this.components.metrics.registerMetric(`${init.logPrefix.replaceAll(':', '_')}_routing_table_kad_bucket_max_depth`)\n };\n }\n }\n isStarted() {\n return this.running;\n }\n async start() {\n this.running = true;\n const kBuck = new KBucket({\n localPeer: {\n kadId: await utils.convertPeerId(this.components.peerId),\n peerId: this.components.peerId\n },\n kBucketSize: this.kBucketSize,\n prefixLength: this.prefixLength,\n splitThreshold: this.splitThreshold,\n numberOfNodesToPing: 1\n });\n this.kb = kBuck;\n // test whether to evict peers\n kBuck.addEventListener('ping', (evt) => {\n this._onPing(evt).catch(err => {\n this.log.error('could not process k-bucket ping event', err);\n });\n });\n let peerStorePeers = 0;\n // add existing peers from the peer store to routing table\n for (const peer of await this.components.peerStore.all()) {\n if (peer.protocols.includes(this.protocol)) {\n const id = await utils.convertPeerId(peer.id);\n this.kb.add({ kadId: id, peerId: peer.id });\n peerStorePeers++;\n }\n }\n this.log('added %d peer store peers to the routing table', peerStorePeers);\n // tag kad-close peers\n this._tagPeers(kBuck);\n }\n async stop() {\n this.running = false;\n this.pingQueue.clear();\n this.kb = undefined;\n }\n /**\n * Keep track of our k-closest peers and tag them in the peer store as such\n * - this will lower the chances that connections to them get closed when\n * we reach connection limits\n */\n _tagPeers(kBuck) {\n let kClosest = new PeerSet();\n const updatePeerTags = utils.debounce(() => {\n const newClosest = new PeerSet(kBuck.closest(kBuck.localPeer.kadId, KBUCKET_SIZE));\n const addedPeers = newClosest.difference(kClosest);\n const removedPeers = kClosest.difference(newClosest);\n Promise.resolve()\n .then(async () => {\n for (const peer of addedPeers) {\n await this.components.peerStore.merge(peer, {\n tags: {\n [this.tagName]: {\n value: this.tagValue\n }\n }\n });\n }\n for (const peer of removedPeers) {\n await this.components.peerStore.merge(peer, {\n tags: {\n [this.tagName]: undefined\n }\n });\n }\n })\n .catch(err => {\n this.log.error('Could not update peer tags', err);\n });\n kClosest = newClosest;\n });\n kBuck.addEventListener('added', (evt) => {\n updatePeerTags();\n this.safeDispatchEvent('peer:add', { detail: evt.detail.peerId });\n });\n kBuck.addEventListener('removed', (evt) => {\n updatePeerTags();\n this.safeDispatchEvent('peer:remove', { detail: evt.detail.peerId });\n });\n }\n /**\n * Called on the `ping` event from `k-bucket` when a bucket is full\n * and cannot split.\n *\n * `oldContacts.length` is defined by the `numberOfNodesToPing` param\n * passed to the `k-bucket` constructor.\n *\n * `oldContacts` will not be empty and is the list of contacts that\n * have not been contacted for the longest.\n */\n async _onPing(evt) {\n if (!this.running) {\n return;\n }\n const { oldContacts, newContact } = evt.detail;\n const results = await Promise.all(oldContacts.map(async (oldContact) => {\n // if a previous ping wants us to ping this contact, re-use the result\n const pingJob = this.pingQueue.find(oldContact.peerId);\n if (pingJob != null) {\n return pingJob.join();\n }\n return this.pingQueue.add(async () => {\n let stream;\n try {\n const options = {\n signal: AbortSignal.timeout(this.pingTimeout)\n };\n this.log('pinging old contact %p', oldContact.peerId);\n const connection = await this.components.connectionManager.openConnection(oldContact.peerId, options);\n stream = await connection.newStream(this.protocol, options);\n const pb = pbStream(stream);\n await pb.write({\n type: MessageType.PING\n }, Message, options);\n const response = await pb.read(Message, options);\n await pb.unwrap().close();\n if (response.type !== MessageType.PING) {\n throw new CodeError(`Incorrect message type received, expected PING got ${response.type}`, 'ERR_BAD_PING_RESPONSE');\n }\n return true;\n }\n catch (err) {\n if (this.running && this.kb != null) {\n // only evict peers if we are still running, otherwise we evict\n // when dialing is cancelled due to shutdown in progress\n this.log.error('could not ping peer %p', oldContact.peerId, err);\n this.log('evicting old contact after ping failed %p', oldContact.peerId);\n this.kb.remove(oldContact.kadId);\n }\n stream?.abort(err);\n return false;\n }\n finally {\n this.metrics?.routingTableSize.update(this.size);\n }\n }, {\n peerId: oldContact.peerId\n });\n }));\n const responded = results\n .filter(res => res)\n .length;\n if (this.running && responded < oldContacts.length && this.kb != null) {\n this.log('adding new contact %p', newContact.peerId);\n this.kb.add(newContact);\n }\n }\n // -- Public Interface\n /**\n * Amount of currently stored peers\n */\n get size() {\n if (this.kb == null) {\n return 0;\n }\n return this.kb.count();\n }\n /**\n * Find a specific peer by id\n */\n async find(peer) {\n const key = await utils.convertPeerId(peer);\n return this.kb?.get(key)?.peerId;\n }\n /**\n * Retrieve the closest peers to the given kadId\n */\n closestPeer(kadId) {\n const res = this.closestPeers(kadId, 1);\n if (res.length > 0) {\n return res[0];\n }\n return undefined;\n }\n /**\n * Retrieve the `count`-closest peers to the given kadId\n */\n closestPeers(kadId, count = this.kBucketSize) {\n if (this.kb == null) {\n return [];\n }\n return [...this.kb.closest(kadId, count)];\n }\n /**\n * Add or update the routing table with the given peer\n */\n async add(peerId) {\n if (this.kb == null) {\n throw new Error('RoutingTable is not started');\n }\n const kadId = await utils.convertPeerId(peerId);\n this.kb.add({ kadId, peerId });\n this.log('added %p with kad id %b', peerId, kadId);\n this.updateMetrics();\n }\n /**\n * Remove a given peer from the table\n */\n async remove(peer) {\n if (this.kb == null) {\n throw new Error('RoutingTable is not started');\n }\n const id = await utils.convertPeerId(peer);\n this.kb.remove(id);\n this.updateMetrics();\n }\n updateMetrics() {\n if (this.metrics == null || this.kb == null) {\n return;\n }\n let size = 0;\n let buckets = 0;\n let maxDepth = 0;\n function count(bucket) {\n if (isLeafBucket(bucket)) {\n if (bucket.depth > maxDepth) {\n maxDepth = bucket.depth;\n }\n buckets++;\n size += bucket.peers.length;\n return;\n }\n count(bucket.left);\n count(bucket.right);\n }\n count(this.kb.root);\n this.metrics.routingTableSize.update(size);\n this.metrics.routingTableKadBucketTotal.update(buckets);\n this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(size / buckets));\n this.metrics.routingTableKadBucketMaxDepth.update(maxDepth);\n }\n}\n//# sourceMappingURL=index.js.map","export default [\n 77591, 22417, 43971, 28421, 740, 29829, 71467, 228973, 196661, 78537, 27689, 36431, 44415, 14362, 19456, 106025,\n 96308, 2882, 49509, 21149, 87173, 131409, 75844, 23676, 121838, 30291, 17492, 2953, 7564, 110620, 129477, 127283,\n 53113, 72417, 165166, 109690, 21200, 102125, 24049, 71504, 90342, 25307, 72039, 26812, 26715, 32264, 133800, 71161,\n 88956, 171987, 51779, 24425, 16671, 30251, 186294, 247761, 14202, 2121, 8465, 35024, 4876, 85917, 169730, 3638,\n 256836, 96184, 943, 18678, 6583, 52907, 35807, 112254, 214097, 18796, 11595, 9243, 23554, 887, 268203, 382004,\n 24590, 111335, 11625, 16619, 29039, 102425, 69006, 97976, 92362, 32552, 63717, 41433, 128974, 137630, 59943, 10019,\n 13986, 35430, 33665, 108037, 43799, 43280, 38195, 29078, 58629, 18265, 14425, 46832, 235538, 40830, 77881, 110717,\n 58937, 3463, 325358, 51300, 47623, 117252, 19007, 10170, 20540, 91237, 294813, 4951, 79841, 56232, 36270, 128547,\n 69209, 66275, 100156, 32063, 73531, 34439, 80937, 28892, 44466, 88595, 216307, 32583, 49620, 16605, 82127, 45807,\n 21630, 78726, 20235, 40163, 111007, 96926, 5567, 72083, 21665, 58844, 39419, 179767, 48328, 42662, 51550, 5251,\n 37811, 49608, 81056, 50854, 55513, 20922, 18891, 197409, 164656, 32593, 71449, 220474, 58919, 85682, 67854, 13758,\n 35066, 3565, 61905, 214793, 119572, 141419, 21504, 10302, 27354, 67003, 46131, 32668, 15165, 64871, 34450, 17821,\n 2757, 11452, 34189, 5160, 12257, 85523, 560, 53385, 65887, 119549, 135620, 312353, 115979, 122356, 10867, 193231,\n 124537, 54783, 90675, 120791, 4715, 142253, 50943, 17271, 43358, 25331, 4917, 120566, 34580, 12878, 33786, 160528,\n 32523, 4869, 301307, 104817, 81491, 23276, 8832, 97911, 31265, 52065, 7998, 49622, 9715, 43998, 34091, 84587,\n 20664, 69041, 29419, 53205, 10838, 58288, 116145, 6185, 5154, 141795, 35924, 21307, 144738, 43730, 12085, 8279,\n 10002, 119, 133779, 199668, 72938, 31768, 39176, 67875, 38453, 9700, 44144, 4121, 116048, 41733, 12868, 82669,\n 92308, 128, 34262, 11332, 7712, 90764, 36141, 13553, 71312, 77470, 117314, 96549, 49135, 23602, 54468, 28605,\n 6327, 62308, 17171, 67531, 21319, 14105, 894, 107722, 46157, 8503, 51069, 100472, 45138, 15246, 14577, 35609,\n 191464, 1757, 13364, 161349, 32067, 91705, 81144, 52339, 5408, 91066, 21983, 14157, 100545, 4372, 26630, 129112,\n 1423, 29676, 213626, 4397, 88436, 99190, 6877, 49958, 26122, 114348, 60661, 29818, 293118, 50042, 179738, 16400,\n 163423, 89627, 31040, 43973, 36638, 45952, 5153, 1894, 109322, 1898, 134021, 12402, 112077, 68309, 190269, 69866,\n 31938, 107383, 11522, 105232, 11248, 14868, 39852, 71707, 186525, 16530, 38162, 106212, 11700, 5130, 16608, 26998,\n 59586, 108399, 230033, 43683, 48135, 82179, 2073, 5015, 196684, 189293, 16378, 23452, 8301, 35640, 11632, 214551,\n 29240, 57644, 33137, 91949, 55157, 52384, 117313, 5090, 17717, 89668, 49363, 82238, 241035, 66216, 29066, 184088,\n 97206, 62820, 26595, 4241, 135635, 173672, 8202, 459, 71355, 146294, 29587, 3008, 135385, 141203, 14803, 6634,\n 45094, 69362, 50925, 546, 51884, 62011, 83296, 234584, 44515, 56050, 89476, 87751, 19373, 12691, 149923, 19794,\n 13833, 35846, 87557, 58339, 2884, 19145, 25647, 12224, 11024, 77338, 64608, 122297, 53025, 7205, 36189, 36294,\n 170779, 21750, 7739, 173883, 75192, 35664, 224240, 113121, 30181, 26267, 27036, 117827, 92015, 106516, 55628, 203549,\n 67949, 60462, 60844, 35911, 20457, 1820, 920, 19773, 8738, 73173, 181993, 38521, 98254, 76257, 46008, 92796,\n 5384, 26868, 151566, 22124, 2411, 15919, 186872, 180021, 28099, 152961, 78811, 80237, 62352, 102653, 74259, 184890,\n 16792, 123702, 224945, 29940, 19512, 75283, 14059, 112691, 92811, 233329, 20411, 138569, 53341, 109802, 50600, 134528,\n 66747, 5529, 166531, 31578, 64732, 67189, 1596, 126357, 967, 167999, 206598, 109752, 119431, 207825, 78791, 91938,\n 10301, 27311, 24233, 252343, 28831, 32812, 66002, 112267, 90895, 8786, 8095, 16824, 22866, 21813, 60507, 174833,\n 19549, 130985, 117051, 52110, 6938, 81923, 123864, 38061, 919, 18680, 53534, 46739, 112893, 161529, 85429, 26761,\n 11900, 81121, 91968, 15390, 217947, 56524, 1713, 6654, 37089, 85630, 138866, 61850, 16491, 75577, 16884, 98296,\n 73523, 6140, 44645, 6062, 36366, 29844, 57946, 37932, 42472, 5266, 20834, 19309, 33753, 127182, 134259, 35810,\n 41805, 45878, 312001, 14881, 47757, 49251, 120050, 44252, 3708, 25856, 107864, 120347, 1228, 36550, 41682, 34496,\n 47025, 8393, 173365, 246526, 12894, 161607, 35670, 90785, 126572, 2095, 124731, 157033, 58694, 554, 12786, 9642,\n 4817, 16136, 47864, 174698, 66992, 4639, 69284, 10625, 40710, 27763, 51738, 30404, 264105, 137904, 109882, 52487,\n 42824, 57514, 2740, 10479, 146799, 107390, 16586, 88038, 174951, 9410, 16185, 44158, 5568, 40658, 46108, 12763,\n 97385, 26175, 108859, 664, 230732, 67470, 46663, 14395, 50750, 141320, 93140, 15361, 47997, 55784, 6791, 307840,\n 118569, 107326, 18056, 58281, 260415, 54691, 8790, 73332, 45633, 7511, 45674, 143373, 14031, 11799, 94491, 35646,\n 96544, 14560, 26049, 32983, 25791, 83814, 42094, 231370, 63955, 139212, 2359, 169908, 3108, 183486, 105867, 28197,\n 32941, 124968, 26402, 88267, 149768, 23053, 3078, 19091, 52924, 25383, 19209, 111548, 97361, 3959, 24880, 235061,\n 9099, 24921, 161254, 151405, 20508, 7159, 34381, 20133, 11434, 74036, 19974, 34769, 36585, 1076, 22454, 17354,\n 38727, 235160, 111547, 96454, 117448, 156940, 91330, 37299, 7310, 26915, 117060, 51369, 22620, 61861, 322264, 106850,\n 111694, 15091, 2624, 40345, 300446, 177064, 1707, 27389, 54792, 327783, 132669, 183543, 59003, 17744, 20603, 151134,\n 106923, 53084, 71803, 279424, 319816, 11579, 21946, 16728, 38274, 72711, 5085, 83391, 88646, 40159, 25027, 34680,\n 10752, 12988, 54126, 30365, 18338, 100445, 230674, 44874, 84974, 143877, 123253, 139372, 28082, 91477, 144002, 13096,\n 219729, 46016, 50029, 42377, 14601, 6660, 58244, 58978, 23918, 88206, 113611, 64452, 17541, 41032, 10942, 12021,\n 49189, 10978, 40175, 37156, 10947, 71709, 106894, 112538, 57007, 137486, 150608, 152719, 40615, 7746, 279716, 13101,\n 19524, 28708, 40578, 72320, 1096, 182051, 94527, 51275, 22833, 45164, 81917, 77519, 48508, 5421, 140302, 37845,\n 149830, 5587, 27579, 5357, 428725, 248187, 6326, 206760, 39814, 32585, 89923, 44341, 288753, 284443, 96368, 31201,\n 94189, 119504, 20359, 52073, 103216, 179, 27934, 32801, 96035, 34111, 34309, 101326, 18198, 20704, 210266, 37643,\n 27880, 141873, 106000, 19414, 56614, 167714, 66483, 107885, 86602, 4379, 20796, 75467, 4987, 5017, 118857, 26003,\n 34308, 114428, 29198, 6686, 29697, 73632, 3739, 69795, 16798, 41504, 7207, 30722, 21436, 36735, 28067, 28545,\n 3239, 11221, 36031, 41889, 100010, 19247, 317673, 29495, 174554, 6424, 129725, 53845, 94986, 7955, 59676, 2604,\n 191497, 19735, 102214, 62954, 23844, 11872, 179525, 261436, 34492, 428, 78404, 142035, 16747, 17246, 27578, 37021,\n 33672, 57944, 26056, 135760, 2369, 61674, 122066, 31327, 19374, 157065, 40553, 130982, 69619, 71290, 38855, 72100,\n 92903, 95940, 51422, 165999, 65713, 57873, 50726, 7288, 20272, 2081, 42326, 22624, 81120, 57914, 79352, 19447,\n 1684, 72302, 11774, 302559, 161481, 96396, 13692, 414988, 3721, 79066, 56627, 46883, 21150, 11747, 12184, 5856,\n 113458, 176117, 84416, 52079, 27933, 3354, 59765, 141359, 2212, 216309, 2555, 23458, 196722, 142463, 45701, 44548,\n 28798, 19418, 215, 29916, 9396, 10574, 114226, 84475, 13520, 18694, 34056, 4524, 90302, 62930, 13539, 19407,\n 77209, 7728, 38088, 9535, 2263, 23875, 183945, 17750, 26274, 67172, 10585, 28042, 22199, 7478, 51331, 66030,\n 26774, 192929, 31434, 25850, 50197, 52926, 178158, 4679, 181256, 70184, 229600, 9959, 105594, 72158, 73974, 2726,\n 35085, 78087, 23284, 35568, 51713, 155676, 5401, 27254, 11966, 17569, 223253, 71993, 103357, 111477, 55722, 30504,\n 26034, 46774, 35392, 36285, 214814, 41143, 163465, 1051, 16094, 81044, 6636, 76489, 179102, 20712, 39178, 35683,\n 125177, 54219, 30617, 52994, 25324, 50123, 2543, 87529, 58995, 10688, 125199, 12388, 60158, 125481, 131646, 7642,\n 133350, 65874, 3438, 97277, 101450, 10075, 56344, 116821, 50778, 60547, 98016, 106135, 13859, 14255, 16300, 77373,\n 173521, 8285, 45932, 37426, 4054, 114295, 55947, 7703, 39114, 52, 51119, 128135, 19714, 60715, 9554, 50492,\n 88180, 2823, 118271, 52993, 122625, 97919, 23859, 37895, 25040, 33614, 32102, 20431, 3577, 9275, 15686, 43031,\n 157741, 110358, 1884, 40291, 125391, 13736, 5008, 64881, 87336, 77381, 70711, 43032, 49155, 118587, 70494, 4318,\n 10168, 30126, 12580, 10524, 280104, 104001, 145413, 2862, 84140, 6603, 106005, 13566, 12780, 11251, 42830, 571,\n 179910, 82443, 13146, 469, 42714, 32591, 265217, 424024, 92553, 54721, 134100, 6007, 15242, 114681, 59030, 16718,\n 85465, 200214, 85982, 55174, 165013, 23493, 56964, 82529, 109150, 32706, 27568, 82442, 5350, 14976, 13165, 44890,\n 60021, 21343, 33978, 17264, 4655, 22328, 27819, 75730, 16567, 55483, 14510, 17926, 45827, 150609, 3704, 7385,\n 272531, 161543, 76904, 122163, 52405, 2039, 19165, 41623, 14423, 228354, 3369, 176360, 85491, 7122, 35789, 303724,\n 4465, 13628, 2233, 55311, 118771, 20713, 10006, 221519, 45115, 71021, 35650, 29775, 7337, 10864, 20665, 21142,\n 1746, 15080, 1624, 32449, 10905, 105743, 229797, 7701, 3940, 22997, 178467, 57208, 389057, 39683, 59403, 63344,\n 63125, 54847, 69691, 18336, 56448, 3362, 37202, 18282, 29648, 138224, 35867, 10495, 5911, 28814, 26653, 31514,\n 176702, 26550, 45621, 11734, 4525, 40543, 73944, 121080, 27858, 155561, 14887, 44670, 30742, 8796, 107455, 113472,\n 56369, 75581, 183777, 240095, 133699, 153299, 8768, 160464, 26058, 49078, 103971, 21875, 71486, 44888, 17156, 9678,\n 89541, 123019, 102337, 3972, 83930, 21245, 87852, 109660, 287918, 183019, 686, 10100, 39177, 283941, 11274, 24736,\n 26793, 26214, 25995, 77011, 141580, 4070, 23742, 46285, 46632, 30700, 26669, 19056, 35951, 115575, 174034, 56097,\n 35463, 87425, 24575, 44245, 38701, 82317, 85922, 281616, 100333, 147697, 61503, 7730, 84330, 8530, 59917, 61597,\n 17173, 9092, 32658, 90288, 193136, 39023, 20381, 56654, 31132, 7779, 1919, 1375, 117128, 30819, 11169, 40938,\n 23935, 115201, 101155, 151034, 4835, 11231, 74550, 89388, 59951, 91704, 107312, 167882, 115062, 12732, 72738, 88703,\n 464019, 158267, 57995, 60496, 737, 14371, 123867, 4174, 243339, 159946, 7568, 16025, 134556, 110916, 38103, 191,\n 80226, 88794, 29688, 27230, 10454, 76308, 57647, 77409, 113483, 66864, 14745, 19808, 12023, 46583, 84805, 16015,\n 17102, 2231, 20611, 3547, 95740, 250131, 34559, 108894, 8498, 15853, 159169, 148920, 20942, 2813, 93160, 45188,\n 210613, 45531, 52587, 149062, 39782, 28194, 57849, 60965, 84954, 89766, 84453, 100927, 16501, 27658, 165311, 103841,\n 54192, 207341, 19558, 20084, 319622, 5672, 205467, 98462, 61849, 36279, 13609, 147177, 24726, 165015, 209489, 59591,\n 31157, 6551, 117580, 75060, 141146, 277310, 21072, 22023, 106474, 63041, 137443, 122965, 68371, 5383, 42146, 98961,\n 113467, 30863, 23794, 4843, 99630, 30392, 82679, 13699, 241612, 33601, 93146, 24319, 18643, 32155, 95669, 40440,\n 15333, 34089, 67799, 142144, 58245, 38633, 114531, 117400, 77861, 188726, 5507, 2568, 8853, 10987, 107222, 2663,\n 2421, 11530, 13345, 30075, 41785, 118661, 104786, 17459, 12490, 16281, 71936, 193555, 17431, 5944, 71758, 26485,\n 77317, 20803, 367167, 158, 7362, 93430, 11735, 172445, 46002, 11532, 54482, 930, 62911, 2235, 23004, 179236,\n 4764, 101859, 208113, 22477, 55163, 95579, 14098, 67320, 162556, 90709, 156949, 3826, 57492, 4025, 34092, 87442,\n 104565, 6718, 186015, 28214, 14209, 10039, 107186, 233912, 58877, 81637, 55265, 39828, 6194, 145813, 50831, 105849,\n 4974, 88319, 122296, 10272, 197216, 95714, 51540, 72418, 23324, 91555, 8743, 140452, 250249, 51666, 34124, 7229,\n 38592, 129641, 78169, 174242, 22464, 149964, 51450, 14034, 10026, 95376, 26190, 120062, 14401, 8700, 265, 31386,\n 143573, 7203, 229889, 61567, 4227, 140981, 2466, 72052, 10787, 10062, 30958, 6099, 38471, 30103, 23202, 208101,\n 70847, 467, 58934, 32271, 32984, 36637, 24107, 30771, 17109, 73353, 13650, 2098, 157040, 67366, 66904, 106018,\n 265380, 107238, 18535, 44025, 32681, 144983, 62505, 91295, 56120, 3082, 77508, 10322, 63023, 36700, 81885, 224127,\n 16721, 45023, 239261, 111272, 13852, 7866, 149243, 204199, 32309, 22084, 42029, 38316, 126644, 104973, 14406, 43454,\n 67322, 61310, 15789, 40285, 24026, 181047, 6301, 70927, 23319, 115823, 27248, 66693, 115875, 278566, 63007, 146844,\n 56841, 59007, 87368, 180001, 22370, 42114, 80605, 12022, 10374, 308, 25079, 14689, 12618, 63368, 7936, 264973,\n 212291, 136713, 95999, 105801, 18965, 32075, 48700, 52230, 35119, 96912, 32992, 8586, 16606, 101333, 101812, 14969,\n 39930, 759, 193090, 27387, 42914, 12937, 5058, 62646, 64528, 38624, 25743, 37502, 3716, 4435, 30352, 178687,\n 26461, 132611, 42002, 138442, 35833, 59582, 16345, 8048, 60319, 49349, 309, 47800, 49739, 90482, 26405, 34470,\n 63786, 32479, 85028, 39866, 47846, 11649, 23934, 29466, 2816, 42864, 31828, 7410, 74885, 49632, 47629, 111801,\n 90749, 19536, 18767, 105764, 59606, 21223, 10746, 76298, 22220, 39408, 7190, 79654, 64856, 11602, 82156, 272765,\n 17079, 70089, 245473, 51813, 184407, 384678, 1576, 122249, 5064, 27481, 6188, 25790, 74361, 27541, 318284, 45430,\n 31488, 620, 93579, 45723, 192118, 22670, 51913, 4162, 70244, 35966, 26397, 16199, 50899, 209613, 121702, 287507,\n 2993, 36101, 132229, 67345, 33062, 76295, 118628, 78705, 52316, 34375, 107083, 107454, 44863, 127561, 33964, 3073,\n 154010, 190914, 55967, 39074, 6272, 31047, 5550, 41123, 26154, 98638, 47110, 19998, 148091, 50229, 31329, 59900,\n 195442, 19106, 61347, 73497, 70015, 682, 45850, 25776, 38022, 148951, 6288, 37411, 232526, 109277, 27286, 32342,\n 9262, 5220, 16651, 23175, 46740, 129438, 78614, 121925, 66914, 88710, 127952, 5563, 21500, 34521, 10739, 14863,\n 191006, 62956, 17359, 16749, 67027, 56284, 69134, 43301, 35039, 58883, 54466, 60823, 404451, 75743, 59856, 86979,\n 7923, 34273, 83785, 32142, 7693, 268986, 197428, 282681, 17049, 22346, 22990, 92245, 107180, 3357, 37104, 96724,\n 49153, 7683, 31197, 43267, 82231, 164276, 23696, 20848, 188364, 22309, 24821, 158707, 1018, 22514, 70922, 27792,\n 45589, 59709, 10765, 736, 35218, 63479, 51987, 24275, 63588, 55361, 92929, 81964, 4658, 20122, 12330, 44058,\n 13065, 311456, 72224, 8337, 211229, 38979, 22590, 138478, 52757, 32595, 133600, 8838, 31549, 94412, 43391, 90056,\n 1585, 94802, 127271, 6223, 31889, 137038, 132910, 2165, 57616, 230152, 6080, 10748, 36737, 74579, 134062, 50525,\n 180532, 119270, 34556, 76155, 82394, 52595, 29258, 31435, 87820, 67996, 26943, 183878, 38007, 2410, 13526, 180297,\n 69856, 3503, 187396, 167700, 7838, 16701, 9199, 56267, 3661, 37407, 65994, 23767, 5708, 62508, 221700, 67088,\n 86978, 46776, 84434, 32088, 5612, 9149, 88244, 21685, 95151, 46750, 189612, 2979, 506311, 2594, 3628, 40074,\n 105039, 78243, 28523, 6651, 38058, 71999, 30992, 12764, 68261, 108991, 6165, 26450, 61961, 13400, 22426, 7490,\n 60890, 109623, 2070, 12958, 50355, 67979, 257096, 7213, 42578, 52121, 35716, 65461, 7516, 124758, 39268, 302,\n 64712, 14977, 1467, 219452, 2840, 34229, 11121, 21602, 19270, 63574, 8024, 1532, 17331, 79839, 78885, 52029,\n 180767, 57957, 6069, 91265, 61380, 55767, 8927, 32881, 287603, 22149, 35029, 68876, 6428, 199567, 46926, 13412,\n 104132, 21434, 366616, 45060, 110046, 81924, 128910, 45886, 52821, 130416, 29416, 77342, 21762, 67329, 121432, 79924,\n 11724, 38625, 81006, 102033, 28338, 13326, 3250, 82056, 82526, 38212, 21112, 12382, 111495, 3263, 7414, 86274,\n 93490, 40844, 30224, 45212, 24019, 48411, 71367, 24941, 76729, 57776, 3769, 38114, 202019, 197745, 31953, 237533,\n 33270, 201580, 255648, 100798, 44741, 32241, 98468, 106931, 10085, 15090, 170358, 33154, 66787, 18819, 69760, 25061,\n 234005, 82660, 6295, 131975, 16874, 9076, 4094, 25005, 17740, 40908, 19533, 220019, 44330, 99792, 50040, 19619,\n 13950, 55228, 24423, 31253, 95308, 103177, 184795, 28590, 82285, 5059, 3210, 75525, 49894, 70007, 56178, 10580,\n 36051, 139681, 21617, 98736, 3555, 106306, 164189, 37352, 63915, 47824, 24883, 145530, 61904, 28444, 11483, 19837,\n 145446, 30420, 112972, 85939, 11835, 191233, 2262, 20705, 58630, 1753, 148334, 1197, 144714, 6887, 11223, 107667,\n 60879, 77914, 4151, 57417, 81594, 96681, 169430, 1784, 20444, 95138, 254041, 27038, 596, 7117, 72808, 13759,\n 3353, 126776, 21074, 55322, 27081, 36942, 39547, 139830, 179275, 4453, 713, 8722, 71399, 19204, 25785, 22794,\n 23923, 104114, 11291, 25458, 102309, 88396, 75288, 230440, 206396, 104551, 58447, 130857, 37247, 94734, 31548, 176529,\n 226077, 65159, 20104, 10096, 66881, 94191, 237909, 27109, 37404, 1520, 27421, 25220, 113003, 23423, 24884, 50585,\n 6286, 231877, 150800, 11789, 3226, 90004, 60642, 5053, 202400, 61442, 132531, 175329, 57138, 30116, 103847, 9973,\n 75367, 16452, 32360, 59119, 21246, 10191, 164804, 23305, 61051, 37348, 154530, 13214, 5468, 50403, 66754, 130976,\n 50559, 80515, 14436, 155492, 84017, 5472, 43107, 41240, 2890, 90431, 70188, 382, 76234, 48040, 50211, 281038,\n 237007, 32115, 142178, 1536, 22761, 96429, 1811, 31243, 1679, 49143, 55209, 17402, 235054, 61494, 7462, 77030,\n 34925, 87609, 78002, 9499, 9027, 73289, 201078, 101379, 63544, 27666, 5469, 10642, 30029, 49816, 132979, 95620,\n 58086, 351930, 116300, 2110, 2043, 30845, 6154, 11279, 16727, 4122, 2277, 27281, 4971, 3650, 39060, 61970,\n 65951, 39674, 75686, 38151, 11370, 130809, 177895, 32665, 63725, 122267, 7857, 39618, 118483, 44792, 157755, 178624,\n 136994, 24260, 41308, 22471, 12404, 21707, 12486, 30473, 52781, 50246, 20247, 39065, 909, 56825, 103158, 128603,\n 31542, 1089, 41935, 32744, 12428, 37963, 84420, 33134, 72921, 208449, 42622, 168151, 127335, 147107, 46699, 38216,\n 12591, 94342, 85814, 31423, 24944, 2605, 87542, 67473, 192551, 4496, 56321, 91819, 17630, 6300, 256183, 114569,\n 202090, 33209, 35289, 34897, 24967, 40520, 43470, 5344, 10199, 34810, 14283, 10381, 10017, 62923, 49924, 23233,\n 64539, 13051, 35686, 19698, 11570, 135555, 120868, 44924, 87065, 52318, 52335, 47586, 140906, 245885, 109834, 78668,\n 9065, 46990, 25258, 72022, 61243, 40838, 4545, 146387, 10537, 11557, 17470, 36930, 68104, 46711, 24264, 79401,\n 81043, 18225, 120488, 24746, 84338, 81652, 28266, 13776, 21878, 46973, 1047, 230465, 73357, 95777, 24973, 210160,\n 62210, 58404, 110633, 169651, 6937, 41870, 9909, 26822, 191062, 76553, 27519, 96256, 239070, 2478, 205678, 67955,\n 58532, 20601, 50120, 19148, 78501, 195724, 110740, 8249, 109665, 27446, 30568, 57631, 31425, 49752, 32820, 65504,\n 50079, 3663, 102256, 219898, 23849, 211315, 14645, 4359, 91767, 9528, 12449, 49366, 7941, 49763, 107848, 8930,\n 27086, 50686, 9744, 10447, 81935, 39513, 46514, 1670, 29229, 6172, 22312, 137280, 97759, 9806, 14445, 22976,\n 56458, 73391, 34983, 93760, 174219, 52573, 33149, 59747, 2429, 136277, 75123, 165263, 91040, 7446, 57632, 48633,\n 97140, 246081, 84766, 151684, 79918, 93268, 120346, 54059, 54875, 77858, 32996, 103590, 45276, 11968, 19600, 25849,\n 17159, 132907, 42828, 16817, 4913, 99462, 103303, 27395, 5737, 74184, 20749, 21160, 14377, 77062, 131403, 158735,\n 10999, 27799, 77785, 9320, 34366, 51593, 61070, 33746, 47048, 29268, 36675, 30262, 53297, 9832, 82000, 20188,\n 122292, 39917, 7331, 18160, 68301, 185935, 134830, 15031, 4935, 10004, 165845, 185534, 46923, 30109, 44134, 122631,\n 18874, 22903, 112790, 26561, 18549, 348902, 82871, 140345, 255565, 135390, 63556, 103747, 145055, 179600, 145662, 296111,\n 61661, 211987, 23952, 52342, 126343, 48450, 32919, 44277, 82185, 9591, 62139, 205363, 376969, 394874, 108461, 18040,\n 120885, 14798, 39863, 16571, 16794, 58271, 81025, 55206, 14640, 118656, 6361, 44092, 85970, 6262, 153863, 108244,\n 180200, 72264, 79947, 38044, 10050, 5735, 61221, 80712, 5471, 115689, 11391, 11661, 184257, 20010, 60116, 30320,\n 19327, 134598, 45455, 27542, 18004, 125092, 452272, 1549, 91523, 46567, 180063, 156026, 2608, 11174, 58848, 37788,\n 65907, 80194, 30490, 5786, 40775, 119519, 106241, 11323, 156297, 8425, 61495, 2617, 29675, 2425, 59886, 112582,\n 49142, 59618, 4863, 50597, 86710, 50650, 168632, 27693, 85641, 83643, 18993, 25768, 84284, 28090, 93592, 36627,\n 312804, 43381, 9887, 9402, 100931, 97165, 3311, 173330, 66805, 28935, 4963, 184460, 3201, 78102, 19126, 21607,\n 37496, 24938, 22615, 16153, 32862, 134792, 153318, 61120, 6067, 2812, 12826, 12792, 23825, 37559, 64662, 202250,\n 102694, 155488, 85881, 149193, 46233, 65383, 15521, 106982, 11358, 176786, 25752, 39717, 34208, 24510, 32464, 77742,\n 39371, 72028, 138229, 60688, 71386, 102834, 132477, 2208, 11548, 63670, 271279, 28351, 30338, 38620, 32491, 99845,\n 143885, 152266, 13252, 2825, 178663, 108097, 1775, 78201, 14897, 113573, 163346, 62292, 171129, 22183, 96598, 38733,\n 64971, 166776, 117445, 9968, 146393, 44677, 74867, 20908, 97328, 12761, 25656, 26785, 9148, 112344, 26115, 99176,\n 110121, 22437, 49547, 6180, 79320, 5835, 31392, 43328, 33377, 75870, 119860, 69497, 80273, 7325, 155219, 43167,\n 111173, 28347, 20222, 3763, 71752, 55041, 47252, 14618, 28088, 15012, 97805, 194698, 54636, 2036, 41349, 6173,\n 96604, 61530, 51859, 43782, 13361, 24334, 22668, 24792, 7070, 23441, 16789, 3209, 36211, 208475, 26242, 32880,\n 122181, 182407, 21444, 31060, 88459, 29929, 77907, 12716, 10934, 97005, 20599, 31690, 8403, 58445, 30303, 22700,\n 10336, 86731, 103115, 337709, 72556, 46788, 112566, 47684, 67089, 53548, 36874, 56487, 41387, 125985, 26893, 40071,\n 106683, 73712, 18787, 40105, 72992, 67246, 137276, 50802, 36790, 70328, 138827, 22466, 39263, 183295, 29858, 50975,\n 9322, 57397, 10654, 24364, 30383, 55799, 41600, 23584, 127295, 296610, 129078, 143558, 244131, 86397, 36049, 1085,\n 80677, 3820, 108139, 5476, 34767, 24683, 7758, 13060, 7239, 131671, 250593, 59556, 103392, 29810, 4188, 252323,\n 39404, 116877, 7651, 43600, 40338, 13554, 157253, 39196, 25978, 144387, 61211, 234, 50104, 6129, 10449, 93777,\n 9240, 356378, 274148, 4439, 72970, 3724, 147770, 78680, 62570, 115877, 40027, 40547, 36817, 224392, 64609, 34795,\n 165027, 67440, 2477, 37206, 23431, 50754, 164797, 46018, 94995, 170982, 27051, 7957, 22767, 3674, 27900, 56419,\n 18930, 60701, 41302, 2692, 84749, 339721, 61996, 111094, 80221, 50129, 1045, 8153, 62945, 19202, 8250, 37208,\n 37418, 32560, 79477, 41106, 88569, 33963, 36693, 5892, 30570, 1581, 66471, 49647, 11922, 160717, 29442, 5643,\n 114865, 82962, 95982, 132098, 22633, 22838, 94726, 54556, 28566, 205039, 162340, 33216, 16849, 35847, 221339, 94851,\n 26533, 71469, 1805, 3804, 12935, 45483, 71020, 36310, 65381, 192960, 34240, 35165, 59773, 1248, 46954, 155332,\n 96864, 4246, 388800, 16129, 57133, 74592, 44807, 442014, 38203, 42574, 80818, 91592, 26377, 36424, 65760, 977,\n 77387, 22628, 147610, 28018, 30561, 98454, 6969, 119628, 63648, 18170, 36854, 26601, 64018, 22027, 37279, 51395,\n 152934, 21153, 9430, 58760, 194742, 5330, 55115, 34158, 28917, 174111, 13171, 122326, 1526, 43896, 66094, 25325,\n 4234, 148354, 11450, 275, 18999, 112191, 44365, 22723, 68409, 8733, 57746, 96565, 75007, 14196, 108844, 29475,\n 88599, 177563, 100792, 106156, 86323, 93726, 14248, 135341, 194131, 40126, 47099, 14779, 8272, 39597, 95983, 171398,\n 65882, 28052, 10393, 47213, 40689, 22120, 72212, 106829, 34964, 109146, 753, 648, 21660, 30047, 17527, 181025,\n 5619, 145357, 4085, 216883, 9359, 186951, 24779, 53931, 24545, 36197, 223296, 62628, 168101, 4243, 107313, 30321,\n 26642, 13049, 51059, 31027, 107912, 807, 73550, 26551, 84369, 122422, 165872, 49754, 74213, 234264, 33151, 52014,\n 33100, 87183, 22365, 52500, 40013, 23302, 5652, 72723, 21404, 26107, 48434, 587, 94049, 168493, 96418, 32871,\n 70860, 31709, 25128, 443, 71597, 166253, 15670, 70994, 26341, 133675, 28280, 75491, 54756, 47955, 56028, 26182,\n 11952, 113272, 472197, 64640, 110753, 17919, 337, 50642, 22576, 142, 87371, 53391, 93210, 126694, 15285, 19642,\n 85667, 14148, 1506, 42092, 52962, 33243, 11970, 20734, 135843, 57044, 58880, 13002, 219134, 22876, 64754, 232519,\n 4257, 43120, 321573, 24799, 64526, 124728, 52579, 81472, 70831, 276848, 17403, 74359, 23021, 182101, 74597, 23744,\n 148267, 12055, 7976, 5349, 11772, 67540, 167347, 65318, 18720, 127832, 108238, 22828, 90233, 9987, 259080, 118185,\n 73209, 79270, 13775, 90100, 137742, 90799, 70569, 15699, 19961, 9087, 67475, 57872, 39731, 8810, 134897, 131868,\n 146849, 19898, 3334, 2281, 167061, 91073, 60356, 467742, 74712, 188, 53179, 137679, 92769, 29241, 9537, 132595,\n 80119, 1041, 88962, 5976, 40171, 44911, 102859, 139059, 104558, 98987, 47761, 19272, 71472, 113864, 175377, 73338,\n 10857, 23402, 23758, 1591, 139864, 5644, 4076, 118760, 16427, 134198, 18853, 20291, 100849, 37423, 22038, 36677,\n 19071, 195521, 57445, 11069, 31869, 55718, 66882, 148490, 44, 41296, 75242, 49704, 166810, 9906, 20943, 122258,\n 49112, 105667, 15969, 10344, 6408, 187694, 21399, 72742, 58970, 14867, 14376, 81889, 41856, 23225, 15042, 56993,\n 16074, 131389, 74276, 72407, 53875, 383108, 53597, 37363, 68993, 44854, 122548, 430927, 198279, 38430, 80409, 12245,\n 2981, 628, 2818, 17760, 37437, 238229, 7968, 46892, 2200, 3730, 34190, 65983, 37959, 112291, 87850, 70827,\n 6522, 20750, 73913, 111621, 41652, 19587, 2780, 58668, 25916, 85259, 18200, 168962, 95781, 42445, 102050, 7776,\n 57662, 103313, 47742, 96358, 41964, 66174, 100396, 29069, 204735, 19679, 27978, 7479, 40264, 22534, 61183, 36081,\n 107436, 58223, 14680, 23002, 101311, 24716, 124108, 12908, 5646, 31750, 40380, 14215, 232799, 102772, 14122, 96775,\n 61398, 50917, 12096, 149880, 67833, 598749, 124194, 155871, 49216, 790, 14677, 65319, 56917, 7440, 145744, 95701,\n 12206, 49405, 129269, 76199, 45732, 9767, 11058, 9047, 210885, 11051, 7392, 26307, 2130, 8132, 147526, 20802,\n 232698, 115660, 50060, 59789, 57344, 107623, 80343, 112676, 23291, 9866, 160971, 34032, 118291, 15719, 59730, 164911,\n 28975, 2659, 58046, 78480, 21854, 66209, 53863, 109085, 116045, 29021, 46481, 107552, 22130, 18764, 70254, 31272,\n 11300, 52460, 43933, 84738, 20721, 53869, 190840, 79673, 105300, 7561, 321817, 66924, 13940, 33281, 101046, 183181,\n 32176, 71878, 5678, 62924, 79535, 56646, 40303, 19559, 27703, 93042, 73368, 42187, 3670, 37376, 46440, 7023,\n 36816, 109628, 20680, 5940, 276440, 275233, 170848, 112093, 136996, 14984, 20226, 111441, 77693, 112960, 48577, 39370,\n 55707, 50314, 123404, 26570, 54281, 61372, 123391, 4857, 35928, 246740, 132507, 106646, 44241, 7196, 92258, 9825,\n 37688, 51197, 303141, 5590, 15476, 132986, 10955, 85782, 34486, 26696, 7991, 28813, 18858, 39546, 11703, 11365,\n 38185, 5716, 93555, 11925, 40121, 60002, 6985, 10976, 171384, 3887, 43394, 13337, 56346, 6381, 252336, 39573,\n 75042, 53711, 1028, 31781, 44295, 95925, 131713, 7214, 68125, 43571, 70954, 213234, 1628, 8760, 13391, 65485,\n 17320, 56038, 1710, 25248, 60803, 57399, 19839, 3870, 326, 281556, 50945, 72400, 21460, 316244, 75619, 56246,\n 98775, 481, 13513, 55765, 50427, 7388, 123519, 32929, 57908, 27124, 61316, 101097, 57467, 30228, 48792, 10788,\n 20402, 37318, 50526, 155730, 34456, 158065, 145305, 17832, 43733, 64052, 4506, 35072, 205355, 177028, 184004, 187081,\n 68616, 35938, 83703, 10367, 36892, 93186, 260137, 51934, 89970, 4985, 23445, 26755, 21558, 7948, 78741, 23376,\n 124405, 85594, 68596, 57536, 49351, 12619, 56593, 132668, 99924, 109728, 71844, 71935, 196018, 65464, 17617, 14987,\n 89701, 143773, 33997, 8687, 22701, 33258, 2914, 4436, 72108, 85610, 9671, 49067, 2327, 82988, 1361, 1672,\n 44033, 35777, 30269, 24057, 10605, 82236, 616, 15793, 13919, 47249, 112086, 116698, 9484, 80207, 90574, 33304,\n 68624, 93127, 56101, 42210, 160929, 4827, 38995, 38095, 4701, 125119, 5027, 33680, 9236, 231236, 14135, 87837,\n 23318, 70261, 78893, 30151, 81482, 14332, 1084, 74256, 27532, 46644, 79185, 3148, 62615, 6981, 55672, 31668,\n 36825, 1849, 14536, 37446, 14738, 23779, 43058, 162749, 72199, 1168, 21346, 5592, 85932, 85302, 9668, 18351,\n 57135, 150360, 2080, 228015, 77953, 34670, 119302, 151751, 31009, 106725, 84265, 45214, 59289, 74178, 113071, 263206,\n 111009, 4021, 44449, 188119, 192629, 123592, 392506, 292847, 114487, 12831, 205858, 9852, 20780, 79648, 75767, 357014,\n 97721, 18166, 21005, 67950, 33226, 204009, 16536, 2987, 11335, 66717, 144910, 47950, 17262, 55060, 15063, 2934,\n 51038, 26775, 178497, 66008, 3427, 49433, 128592, 20036, 157553, 63861, 3089, 23015, 51210, 28696, 35933, 49942,\n 71135, 231518, 99620, 17248, 21835, 176536, 20676, 16944, 38700, 165831, 233253, 295625, 36723, 13023, 52745, 10907,\n 19423, 67972, 125868, 95473, 82875, 1183, 108455, 52685, 33417, 64095, 21433, 52438, 33191, 127809, 44505, 211823,\n 7810, 2752, 95548, 162031, 7185, 91196, 47563, 61721, 33359, 17897, 23682, 42806, 178101, 22874, 49707, 199897,\n 75419, 82456, 8618, 11171, 79712, 116847, 18783, 44190, 46564, 5346, 59046, 95032, 7893, 14916, 3214, 26800,\n 24172, 121453, 34362, 10250, 17408, 18888, 4840, 68696, 22831, 13162, 36005, 32512, 14800, 62357, 41723, 45046,\n 27247, 37486, 5372, 2564, 34261, 298500, 66509, 133920, 89138, 31305, 117697, 19097, 108304, 81386, 84106, 23802,\n 46411, 63304, 946, 51417, 41777, 41041, 19501, 115864, 60743, 294354, 37955, 94165, 18116, 1156, 17937, 20645,\n 57114, 90804, 58042, 48643, 92288, 9861, 2557, 88546, 61333, 101008, 12853, 5148, 87856, 4152, 144503, 73841,\n 18718, 9789, 147565, 10846, 42085, 12789, 30223, 8993, 56352, 67203, 2448, 28215, 6052, 23540, 126319, 75933,\n 36689, 80235, 23231, 23561, 21383, 38800, 77548, 102798, 21234, 31468, 158608, 46188, 63960, 191679, 8051, 67014,\n 11185, 170078, 42186, 28827, 34777, 41930, 212079, 12421, 34750, 24111, 110344, 73918, 45171, 70826, 141949, 40063,\n 23979, 24254, 37309, 26724, 27179, 24718, 83648, 54938, 14591, 17425, 29525, 102675, 48975, 48654, 12316, 8929,\n 60640, 41709, 50168, 63264, 89812, 50716, 48632, 38755, 138583, 160123, 55579, 71829, 24230, 233277, 46322, 39650,\n 166388, 34718, 24108, 98252, 7031, 106695, 62498, 18258, 35062, 217827, 78731, 34824, 33354, 19520, 60852, 2432,\n 60224, 8587, 2836, 62955, 702, 20227, 42285, 40560, 95592, 62486, 11094, 53035, 143291, 18842, 46177, 77994,\n 1770, 9657, 107422, 172915, 32655, 128716, 25886, 25164, 156740, 119928, 165875, 85817, 11007, 89110, 33956, 12652,\n 65156, 180266, 8494, 36889, 19958, 20955, 96, 1264, 118288, 135769, 44754, 86671, 5632, 19026, 168220, 289120,\n 33569, 93821, 66144, 70635, 7687, 5642, 2714, 55445, 56636, 71545, 184182, 93133, 7332, 37389, 12643, 52315,\n 22729, 11014, 158742, 17050, 152889, 50178, 34601, 41945, 52136, 9948, 26914, 63548, 95721, 115951, 40759, 8960,\n 158258, 38938, 49232, 48325, 42234, 81523, 253019, 66128, 40978, 20048, 238048, 38760, 62928, 122560, 118532, 43687,\n 137472, 163689, 26680, 9878, 17448, 51035, 16211, 60834, 36749, 29178, 14241, 59868, 150086, 2305, 26477, 42422,\n 34342, 165341, 83279, 33894, 14257, 29928, 12743, 13957, 125571, 89134, 66712, 10952, 16507, 147839, 30146, 7249,\n 16565, 45399, 39874, 114565, 215780, 31990, 230881, 171477, 102, 196546, 44538, 10880, 84948, 281705, 86651, 10617,\n 31395, 2342, 453658, 43569, 60561, 132901, 21845, 17727, 58556, 258242, 22262, 58728, 4008, 77997, 11806, 37431,\n 30599, 81375, 109137, 185787, 114085, 217292, 97453, 169085, 30593, 60212, 11544, 102056, 65580, 2384, 91655, 4855,\n 95725, 7295, 157994, 16228, 20669, 53276, 141590, 105246, 17334, 25440, 76067, 17967, 39321, 38911, 11362, 28559,\n 63807, 21627, 26468, 85816, 40120, 1025, 15234, 58319, 69516, 66512, 124548, 75845, 78873, 22137, 46681, 51242,\n 85683, 32909, 76747, 35555, 43396, 101465, 1765, 73094, 1077, 2962, 39028, 66777, 57831, 42048, 15828, 13962,\n 36041, 63657, 52412, 5242, 58846, 2141, 5506, 219012, 134451, 3936, 182230, 17558, 17153, 152237, 22621, 49377,\n 170216, 35257, 68233, 65374, 6510, 11126, 212151, 7184, 2480, 22517, 3437, 33073, 30156, 16557, 3768, 55067,\n 86829, 91000, 12350, 148650, 66017, 79424, 70885, 49066, 28250, 21369, 51213, 34533, 11510, 3258, 18176, 18465,\n 84413, 6315, 36411, 163765, 4346, 356, 107618, 598, 13727, 285026, 162695, 8749, 14583, 7132, 63521, 184253,\n 32378, 25991, 5604, 30961, 53675, 4874, 84693, 5086, 34811, 26978, 56564, 7904, 33519, 51221, 113942, 69253,\n 6664, 125563, 22055, 220680, 102008, 742, 51930, 19494, 176108, 44424, 35123, 13025, 75685, 11759, 74335, 22250,\n 181453, 131147, 16984, 132115, 154311, 11991, 76452, 52609, 85351, 196, 30969, 9198, 74919, 2529, 56838, 71779,\n 29187, 116304, 3504, 62330, 41190, 86153, 28393, 254926, 104228, 105189, 13264, 84359, 3574, 12415, 8534, 57147,\n 10175, 188174, 59504, 60932, 66318, 16407, 107921, 17638, 99103, 49278, 28403, 39786, 145865, 8462, 3558, 43406,\n 142271, 29139, 21989, 36552, 93955, 72365, 7176, 13556, 106185, 37957, 321774, 17782, 129017, 51154, 27938, 24952,\n 1935, 39366, 2791, 33489, 41582, 56078, 24558, 9311, 5449, 218786, 27808, 190429, 68013, 36020, 86003, 29735,\n 3404, 87348, 119357, 115714, 2324, 86796, 81973, 40992, 43376, 93621, 28784, 16808, 36367, 2517, 2909, 191926,\n 24978, 55303, 53308, 205724, 60068, 3098, 21375, 64784, 23949, 26579, 63121, 12319, 80145, 39967, 97861, 6757,\n 70143, 67642, 37082, 34698, 69140, 122883, 46151, 62187, 80934, 429, 19437, 135071, 137885, 222647, 13331, 154065,\n 327, 61778, 74257, 40116, 37493, 14855, 85079, 237641, 42342, 102164, 199965, 71204, 4662, 29368, 5042, 113914,\n 122214, 8955, 13149, 102503, 43173, 5659, 163787, 69003, 307084, 63392, 171080, 21390, 81918, 86666, 36622, 24126,\n 28887, 5736, 28054, 207170, 163428, 79891, 346467, 95363, 38980, 111806, 80828, 9200, 19288, 294896, 114468, 87405,\n 111715, 141705, 7015, 72754, 68463, 48738, 243147, 33397, 101210, 37051, 98801, 82847, 20397, 4940, 185559, 18716,\n 54718, 83491, 11725, 40803, 1128, 12128, 23060, 5174, 7745, 67007, 46701, 1571, 27807, 180186, 256996, 18975,\n 16837, 7877, 212758, 250379, 15440, 87954, 57755, 24719, 124057, 83461, 258, 50864, 8874, 29038, 71289, 31627,\n 15429, 9005, 4061, 113851, 107716, 82819, 13651, 79656, 117851, 17539, 111446, 12938, 39724, 190787, 4352, 15402,\n 21070, 62708, 8539, 23777, 73853, 13552, 38810, 86117, 16285, 56400, 1718, 75342, 142863, 29033, 378, 110113,\n 180321, 32586, 23606, 26393, 160984, 207987, 23783, 8406, 16904, 24596, 47274, 11693, 46539, 60524, 78595, 48423,\n 31718, 20170, 9009, 146268, 15183, 191060, 172765, 1349, 138436, 37365, 10970, 40509, 225817, 20021, 70394, 152138,\n 21541, 66559, 66544, 89352, 2725, 17258, 91345, 7313, 3815, 115868, 8660, 40362, 4071, 103524, 39388, 118275,\n 21950, 6549, 38226, 32754, 209574, 29201, 43495, 18028, 20296, 40597, 18370, 47520, 202450, 24134, 2219, 8195,\n 69545, 38041, 136934, 46374, 19041, 159811, 84865, 58620, 846, 98749, 13569, 30714, 97246, 32186, 4479, 27355,\n 92973, 35214, 151491, 75963, 37631, 1561, 27200, 238083, 23182, 60756, 12291, 25766, 39355, 102333, 87362, 65741,\n 59906, 19538, 201575, 48772, 102938, 24438, 292580, 39964, 66366, 9004, 61379, 50548, 37622, 38732, 28379, 68180,\n 76622, 17488, 69849, 5963, 7219, 48143, 43413, 55358, 540, 58691, 29506, 19245, 52193, 48621, 5518, 13048,\n 118625, 44755, 191081, 42061, 89197, 2259, 60665, 66994, 71210, 51232, 3585, 142096, 55024, 7892, 8345, 58653,\n 463307, 65658, 64319, 137941, 136323, 53499, 12746, 43492, 6978, 95163, 29925, 60175, 5128, 7352, 41463, 184756,\n 121146, 20473, 18426, 4598, 5309, 54580, 14277, 121151, 10691, 56711, 43880, 63409, 76682, 11830, 172218, 264898,\n 32632, 66536, 81062, 31649, 25788, 92774, 60222, 11100, 63159, 9432, 224657, 25240, 53613, 152, 138620, 163829,\n 2397, 85345, 12501, 37507, 64932, 38575, 43522, 65789, 80198, 78796, 35226, 3851, 108891, 73311, 3060, 28391,\n 93671, 39663, 46142, 30982, 66041, 37281, 68157, 26553, 71872, 81142, 211527, 39747, 118119, 22695, 2859, 11066,\n 20232, 168911, 7933, 197005, 17066, 111071, 44434, 133994, 120798, 12766, 227798, 45756, 132852, 29917, 36076, 55352,\n 65281, 129800, 41958, 18944, 84678, 18580, 168093, 132621, 39997, 54092, 27740, 32354, 3770, 114118, 103242, 43918,\n 15899, 18574, 145944, 3190, 123469, 219903, 24169, 100571, 62403, 16776, 92779, 14535, 17168, 16475, 14304, 37231,\n 1712, 28218, 242754, 61688, 28980, 1318, 51359, 222657, 99200, 67989, 31772, 23932, 35351, 201251, 49041, 27306,\n 19128, 40135, 3986, 77333, 19649, 120683, 151927, 21081, 7076, 78375, 77501, 101599, 8011, 89585, 96715, 58179,\n 5378, 102138, 106793, 26051, 217276, 4197, 16297, 27014, 46721, 13322, 22806, 5278, 29629, 70632, 9647, 71519,\n 58818, 40603, 128530, 8903, 36770, 56900, 31483, 26935, 43845, 34265, 34920, 87658, 6114, 84767, 64250, 47318,\n 50720, 19264, 162514, 33357, 13117, 6705, 46696, 75032, 71054, 87004, 42035, 69138, 11903, 99854, 102328, 19611,\n 34525, 69312, 6431, 49842, 101600, 133178, 108751, 41829, 89939, 225664, 48916, 99556, 9195, 130387, 5960, 36857,\n 116724, 53518, 94002, 39077, 53996, 6945, 22261, 64291, 8314, 152785, 57588, 16522, 9091, 5048, 87671, 35441,\n 39509, 1945, 12423, 158923, 178413, 37549, 14095, 1475, 73188, 62878, 4819, 24012, 68534, 42606, 4010, 120809,\n 57497, 59564, 101758, 103718, 32701, 80116, 12345, 95834, 46918, 21468, 53213, 15665, 31200, 3867, 5140, 96013,\n 250744, 21016, 10069, 13968, 35449, 180829, 27683, 39704, 59956, 22893, 3115, 26293, 32785, 75934, 62445, 141162,\n 62720, 2018, 83638, 19949, 114012, 95006, 3330, 99829, 130935, 309272, 9565, 55874, 121727, 37017, 23586, 319858,\n 40970, 27602, 8625, 112329, 61060, 100088, 118525, 25922, 16232, 1907, 60671, 51583, 44553, 80993, 5262, 94679,\n 8676, 940, 20736, 11823, 3020, 16476, 12340, 152600, 97416, 3703, 25744, 66826, 16245, 16876, 46446, 84798,\n 74227, 176020, 45192, 61955, 75496, 23946, 23626, 40372, 26036, 6149, 11822, 30582, 16541, 41914, 82385, 232823,\n 40921, 80773, 14930, 3631, 7517, 39619, 4348, 36180, 126106, 138939, 62611, 1477, 113512, 47321, 25052, 14546,\n 118881, 29060, 23589, 128322, 36795, 18401, 137921, 104699, 267929, 36194, 172791, 18113, 4766, 188215, 30083, 332586,\n 94089, 5805, 77909, 22194, 68234, 154976, 43220, 40660, 70001, 184893, 138095, 11128, 103010, 22663, 5108, 212615,\n 8485, 5565, 49222, 54614, 26530, 42639, 16319, 55062, 152662, 105595, 21114, 22216, 10294, 68158, 10436, 86950,\n 7206, 62115, 3977, 3657, 59874, 456, 118617, 18156, 106663, 112229, 80992, 17442, 8217, 55551, 5133, 34344,\n 251927, 51153, 39364, 201321, 7816, 66803, 23057, 156724, 145664, 14276, 95705, 979, 2796, 6875, 13429, 212525,\n 50602, 26276, 28284, 3424, 19465, 52397, 46963, 31420, 51399, 206476, 92317, 48851, 637, 100820, 83349, 10317,\n 60227, 21972, 6908, 282439, 32857, 224767, 95629, 83882, 42106, 87338, 69757, 29840, 68709, 37665, 45244, 114577,\n 49188, 175943, 54009, 186746, 106158, 70168, 3358, 234002, 50555, 9221, 129338, 9562, 20118, 32923, 78479, 118280,\n 65752, 4977, 10474, 102174, 60947, 129006, 10570, 83451, 8598, 8078, 159367, 123785, 80438, 16742, 5905, 5281,\n 181513, 42402, 6977, 163136, 93179, 42191, 14968, 50421, 112401, 105440, 33456, 57347, 121611, 4221, 94954, 36517,\n 24046, 27796, 6255, 33394, 72990, 135408, 116627, 1233, 57874, 25654, 95419, 68156, 401399, 313338, 55208, 45573,\n 93124, 119251, 47200, 38196, 11909, 130667, 45391, 73904, 64964, 167846, 4137, 115606, 52036, 62214, 7969, 160925,\n 7187, 1132, 134835, 40309, 73195, 64494, 80472, 444841, 61111, 26500, 45323, 40743, 53625, 52797, 22659, 15631,\n 29739, 36706, 28841, 39147, 102836, 26794, 10536, 14845, 87305, 45874, 12241, 127587, 83833, 57183, 79722, 30844,\n 41304, 84655, 20825, 92500, 3722, 25655, 27811, 10157, 81634, 31362, 34088, 92487, 70123, 22190, 185100, 72658,\n 139035, 192523, 88241, 2078, 230490, 44528, 85638, 100198, 22088, 29982, 291233, 241062, 13865, 4445, 137791, 37835,\n 107218, 31726, 19718, 38234, 72528, 23046, 19177, 66695, 5109, 17251, 28077, 5617, 21554, 47839, 72425, 133825,\n 1486, 73065, 181275, 141508, 21768, 62971, 63082, 2512, 34200, 9904, 120309, 6392, 91243, 68416, 268253, 41199,\n 116757, 138551, 185526, 41246, 28986, 4093, 19057, 17295, 4148, 245766, 122360, 35356, 112075, 20301, 75441, 10998,\n 7977, 19769, 62922, 937, 63547, 100196, 26427, 157820, 20983, 236696, 22935, 8140, 90315, 156004, 47204, 140973,\n 7726, 45097, 52725, 22636, 23436, 257282, 105247, 522, 88389, 216031, 202204, 46812, 211666, 19693, 68828, 81691,\n 45925, 11256, 30292, 372, 5236, 167826, 88328, 232776, 151611, 5360, 82104, 18841, 80393, 25465, 18285, 20320,\n 72377, 31730, 33160, 45803, 38715, 27705, 37379, 24163, 18360, 103586, 4015, 32305, 269494, 91252, 20080, 36567,\n 54650, 7797, 57073, 12650, 31164, 42209, 6375, 261663, 105528, 81661, 106002, 2800, 5375, 17247, 43151, 4442,\n 15727, 194619, 100855, 144898, 62320, 78465, 39929, 16454, 1967, 28311, 61363, 17219, 9395, 8745, 121445, 76939,\n 80385, 162380, 22009, 54191, 44248, 16299, 122830, 48151, 74429, 78291, 64755, 14238, 44966, 2511, 17712, 67954,\n 93583, 829, 105899, 49935, 84750, 11591, 33185, 85447, 42717, 27409, 208542, 28965, 62052, 52525, 5597, 25694,\n 65594, 16343, 63224, 276188, 12475, 9331, 127507, 38522, 57287, 24128, 133161, 79723, 105548, 133695, 48917, 27558,\n 43278, 46520, 13778, 141954, 110785, 83366, 17715, 46317, 105763, 66298, 147013, 41086, 94180, 16478, 220447, 44611,\n 730, 19722, 78975, 117889, 125643, 26254, 16574, 18480, 65006, 15806, 38549, 246418, 46052, 36056, 8440, 34984,\n 30170, 3163, 59800, 4458, 115442, 4283, 41970, 33507, 104078, 1653, 22, 121158, 276486, 3655, 6338, 24048,\n 133421, 23641, 2161, 24422, 36006, 8086, 10675, 181474, 12307, 29514, 59143, 14729, 52509, 87128, 122470, 19446,\n 80852, 33314, 24573, 119864, 14237, 9652, 57779, 6612, 51851, 15284, 98871, 90581, 124466, 156831, 21190, 22015,\n 71380, 161906, 87247, 69201, 18392, 17908, 108470, 72962, 40719, 14338, 17911, 95260, 43339, 20610, 78916, 20710,\n 72451, 11315, 31448, 17263, 58853, 178878, 48111, 116002, 45497, 80506, 82605, 85880, 36300, 121755, 25215, 36118,\n 301929, 88728, 405223, 276136, 553, 34704, 212438, 49970, 78329, 922, 20711, 25036, 257130, 38295, 145369, 18128,\n 15385, 30829, 55656, 48345, 8012, 3561, 28004, 122041, 192900, 58338, 112508, 41085, 29976, 87040, 47117, 23905,\n 4336, 92061, 138880, 97407, 42083, 172121, 6256, 25192, 172671, 5, 93568, 1420, 12677, 31605, 56743, 40620,\n 6015, 78415, 231077, 31298, 80026, 13902, 19048, 24924, 170586, 32955, 176119, 87859, 36731, 6773, 27711, 24658,\n 26475, 115216, 133207, 93250, 95820, 88522, 8317, 5714, 124047, 55219, 86860, 19677, 23961, 22928, 162209, 8904,\n 225992, 359835, 56084, 96201, 29392, 96558, 86071, 93643, 55114, 13347, 8183, 95129, 82012, 2017, 123336, 34219,\n 115554, 157159, 47747, 101684, 41008, 18735, 193781, 104151, 226906, 7552, 179874, 124113, 31159, 21162, 44010, 14771,\n 51268, 166128, 31382, 73124, 77438, 92830, 205709, 12113, 1292, 38937, 13114, 1334, 2118, 15597, 69581, 14449,\n 21934, 76618, 48728, 67038, 14967, 51495, 24243, 87736, 147249, 26720, 11119, 46063, 43749, 5843, 44147, 152629,\n 133428, 65703, 14269, 45604, 57982, 28672, 55616, 45957, 8438, 95433, 37698, 220862, 132034, 39456, 61870, 4161,\n 26501, 73560, 56418, 9845, 4654, 20916, 10456, 88920, 119358, 9015, 65931, 96507, 48029, 38534, 21676, 109081,\n 43078, 34943, 25089, 6131, 28766, 23665, 5477, 10255, 16695, 67, 45778, 42443, 42770, 29534, 23733, 100513,\n 62617, 42630, 48746, 14191, 43753, 50295, 26007, 8792, 57243, 43119, 54725, 164253, 58250, 112304, 131796, 25165,\n 4651, 3188, 24831, 47748, 3705, 19540, 13211, 102095, 5593, 18699, 23666, 32005, 117571, 33541, 60584, 74573,\n 86311, 99443, 25172, 27222, 168938, 7143, 11853, 53560, 18834, 19960, 86522, 28217, 53266, 117700, 72989, 34323,\n 18721, 66450, 34346, 74056, 47217, 202002, 46269, 9429, 68582, 75458, 37823, 82843, 96652, 32549, 145144, 27958,\n 19820, 158086, 31955, 201406, 135379, 31207, 192545, 12950, 51704, 9094, 248263, 76147, 64028, 110009, 79407, 89345,\n 99284, 223492, 47966, 26848, 15359, 201137, 2861, 110507, 71231, 72297, 31851, 118777, 71039, 151051, 240855, 16333,\n 50766, 14727, 7939, 4149, 80908, 418780, 88378, 59276, 1327, 7284, 38576, 79814, 65820, 42199, 84860, 49574,\n 62596, 12396, 70598, 40117, 8648, 7994, 16836, 7630, 14047, 359699, 106878, 525, 29037, 28064, 13380, 11675,\n 50669, 74216, 103539, 180314, 27449, 56299, 172344, 19274, 7301, 246099, 32043, 19422, 36506, 129317, 6806, 30140,\n 4614, 46639, 66926, 932, 86600, 6322, 27847, 233103, 10541, 39025, 34887, 3517, 12972, 26220, 2031, 66561,\n 115015, 48658, 47596, 12714, 33845, 3893, 16165, 35237, 89983, 14769, 11962, 147224, 47018, 29977, 27979, 5552,\n 82338, 86023, 131368, 1218, 24853, 237840, 132193, 15455, 40873, 3668, 65351, 53388, 15229, 59889, 272245, 47934,\n 11858, 34347, 18038, 90853, 86981, 300602, 19343, 114181, 29362, 84921, 6095, 106059, 79472, 38015, 1206, 48741,\n 6208, 80000, 21916, 17423, 6002, 108083, 24479, 34931, 56661, 9511, 26995, 100694, 163853, 35997, 81254, 58321,\n 18919, 171890, 86877, 91341, 74503, 70477, 53412, 7027, 59281, 39892, 131302, 5864, 15947, 61301, 67466, 162369,\n 47956, 27874, 35624, 282324, 21270, 111847, 102548, 41482, 30955, 116737, 28264, 8592, 55458, 22301, 75090, 29821,\n 30697, 51709, 3041, 19208, 8038, 24634, 30467, 87509, 126428, 19389, 18814, 152686, 20701, 83474, 45832, 80891,\n 105808, 11378, 153223, 120770, 98186, 150633, 49838, 9141, 12755, 30962, 5260, 74490, 21256, 31678, 65062, 33326,\n 289838, 187831, 20595, 89768, 2805, 58535, 10844, 70085, 12090, 2451, 138068, 98544, 24461, 4511, 6754, 41684,\n 28203, 3383, 65355, 82833, 30161, 83924, 234361, 128424, 28921, 222594, 33975, 125491, 34069, 11508, 67464, 144226,\n 41850, 98703, 34371, 7901, 21254, 38398, 65651, 23549, 53883, 213340, 123269, 12028, 71764, 177701, 28758, 2623,\n 68395, 11549, 15232, 68603, 9660, 63116, 36079, 57093, 31198, 20475, 48467, 89984, 35619, 186847, 107469, 31389,\n 43631, 73867, 41949, 68841, 114250, 1605, 30564, 63403, 17588, 27680, 99533, 12641, 70325, 50428, 73426, 78379,\n 11855, 91651, 72081, 91720, 60198, 15743, 12065, 83398, 140046, 6761, 46598, 45900, 5068, 886, 62448, 148968,\n 37347, 19405, 9680, 15819, 43496, 63370, 75667, 163700, 37639, 3633, 22774, 34341, 183131, 134335, 37200, 23915,\n 7054, 14194, 12970, 26438, 13350, 285521, 25594, 8219, 104410, 91039, 168804, 138480, 149734, 15907, 33818, 61132,\n 60082, 4622, 110187, 56736, 13551, 73571, 3945, 73463, 65498, 17758, 263266, 17593, 2710, 27585, 54469, 38200,\n 45367, 63754, 28881, 3473, 12791, 98287, 31895, 65787, 4463, 94536, 24951, 36332, 59901, 28803, 52130, 86403,\n 7668, 181822, 74831, 18977, 9850, 177206, 145485, 109798, 7292, 31421, 26280, 77211, 58511, 12507, 127004, 11113,\n 147, 8729, 56208, 43066, 79926, 129937, 31345, 83947, 39915, 46146, 98763, 42566, 1337, 13192, 18323, 105163,\n 80570, 117753, 16555, 72883, 11077, 159438, 40764, 70933, 83329, 26066, 12276, 72059, 21655, 173836, 126713, 69454,\n 153482, 91585, 70644, 102558, 110483, 6764, 127864, 190133, 3961, 101798, 20945, 71138, 82402, 90884, 69669, 44753,\n 923, 16939, 59700, 164258, 25969, 27082, 31399, 43846, 6306, 246093, 51342, 6153, 151581, 202801, 182731, 56475,\n 162188, 89426, 141356, 14355, 121815, 27536, 28023, 65257, 77523, 106668, 127314, 24947, 12790, 38796, 169698, 23555,\n 10725, 44573, 183083, 42088, 62716, 43265, 105958, 32050, 44067, 50118, 1668, 3874, 6243, 318411, 16599, 1691,\n 94999, 52378, 28671, 216728, 123258, 2059, 34969, 69225, 5913, 136280, 171443, 141515, 91662, 22175, 135282, 80020,\n 92270, 1663, 4808, 4482, 3495, 34691, 5226, 109830, 108512, 17342, 107488, 11606, 123190, 100247, 29666, 146527,\n 113014, 15794, 30894, 13224, 39585, 243192, 22351, 9903, 7836, 47699, 11078, 25468, 122291, 48821, 26780, 122679,\n 75521, 81450, 630, 4895, 92900, 55074, 74293, 17441, 3563, 111657, 103102, 51613, 12318, 52370, 36191, 68245,\n 34269, 40445, 41354, 122901, 168604, 182500, 62012, 42557, 11259, 24428, 115113, 86345, 12362, 3909, 78430, 86852,\n 134602, 20459, 47853, 93879, 22577, 7659, 3688, 38555, 13349, 17381, 56715, 91639, 12493, 10895, 92438, 3142,\n 37057, 28928, 2004, 36427, 32268, 34222, 209974, 10432, 67436, 41989, 173518, 107930, 27079, 62729, 30908, 55558,\n 5828, 45031, 14902, 53546, 8204, 144263, 60255, 14520, 88212, 86582, 109589, 69356, 8064, 47449, 8505, 66558,\n 16886, 4844, 52817, 111260, 215129, 12941, 91118, 650, 20770, 6273, 73089, 40618, 62790, 2873, 35002, 14023,\n 97208, 19386, 102646, 36993, 143736, 135457, 35385, 113601, 17893, 32627, 84439, 100619, 56016, 6581, 57264, 172160,\n 45452, 111710, 203627, 70131, 24100, 322787, 1996, 35665, 70078, 22358, 90922, 83658, 4097, 63200, 58499, 14542,\n 99153, 52159, 6615, 12414, 63415, 31986, 16823, 1579, 65405, 137809, 8841, 16898, 48082, 259, 33014, 42375,\n 12260, 179850, 73667, 91389, 98882, 29532, 17311, 326251, 41092, 5928, 20742, 44964, 48019, 43505, 9317, 49265,\n 6643, 192712, 48424, 163487, 19861, 20113, 70848, 31928, 105333, 23685, 78563, 14638, 54755, 7158, 24142, 44018,\n 20774, 125255, 20331, 24280, 10163, 1285, 2336, 39851, 4299, 117269, 46714, 63816, 87779, 159624, 11731, 9971,\n 990, 137317, 108831, 50994, 74554, 162680, 23640, 131597, 146962, 170620, 34829, 91205, 21184, 1913, 63616, 18427,\n 93136, 156592, 17519, 67565, 115882, 138220, 78622, 88535, 18115, 2711, 33554, 109492, 54298, 971, 24914, 25863,\n 36363, 45715, 27099, 194995, 14299, 178181, 111488, 72395, 322385, 157719, 130787, 11897, 81843, 83999, 11369, 49280,\n 118604, 40922, 61332, 110343, 53407, 75639, 40582, 300440, 54722, 25637, 13694, 48248, 48278, 194521, 56203, 52779,\n 48783, 72627, 10953, 376, 16733, 280238, 26351, 230789, 15132, 25168, 137270, 3588, 63704, 73376, 94031, 74284,\n 19443, 159557, 9697, 39901, 13351, 119050, 15406, 146455, 3460, 29556, 75195, 37673, 102524, 92329, 47289, 98413,\n 15311, 100684, 56345, 7116, 95480, 11590, 7200, 167, 23610, 58426, 17730, 136656, 27944, 53151, 2701, 8824,\n 103124, 3017, 90744, 113588, 53216, 79736, 65940, 26931, 498, 29568, 80540, 143543, 21292, 1740, 59268, 16561,\n 180816, 42323, 50174, 40890, 52866, 10703, 57169, 4700, 17191, 4424, 93511, 49698, 166650, 26972, 48631, 165169,\n 82879, 69326, 202970, 4007, 2376, 231325, 139592, 22119, 62851, 37504, 68816, 58345, 67398, 186643, 43331, 277416,\n 53749, 15746, 23102, 17432, 4793, 151138, 48822, 54265, 48203, 198688, 14305, 54287, 2291, 18018, 113378, 123260,\n 7180, 97549, 87027, 120085, 2920, 76080, 8190, 102005, 5641, 64580, 14955, 59802, 54028, 58884, 19367, 81779,\n 412567, 85957, 97053, 103637, 78871, 29364, 27637, 141728, 4767, 30686, 112738, 130146, 42745, 12730, 105040, 14844,\n 232, 210944, 36581, 152317, 135543, 29744, 3129, 55647, 58149, 46319, 27265, 17499, 28005, 59948, 7170, 34138,\n 5702, 293047, 110892, 408, 91760, 218674, 18469, 46095, 81403, 14389, 4610, 35672, 73060, 11006, 74848, 104820,\n 118143, 190357, 20043, 105358, 141735, 5115, 27093, 45924, 123073, 52599, 29433, 9616, 238350, 78610, 24851, 58858,\n 26769, 31969, 24613, 18294, 4982, 32735, 39639, 143563, 112073, 202205, 12567, 4873, 88601, 44897, 81503, 101648,\n 81362, 34662, 85277, 17574, 48173, 21435, 221188, 40215, 39576, 80786, 26544, 64668, 81841, 10731, 37733, 247986,\n 149188, 127703, 495, 18382, 54388, 72446, 43071, 30974, 198723, 89608, 41360, 190, 33045, 8386, 31658, 19992,\n 237838, 119015, 137622, 50890, 100913, 6460, 116233, 267230, 26621, 104129, 65114, 14190, 41542, 14888, 85962, 23342,\n 23041, 26453, 43725, 71809, 45186, 4770, 46452, 53894, 56616, 221286, 18973, 9038, 109299, 55365, 19366, 26863,\n 18808, 60909, 69353, 41738, 83463, 12100, 68561, 72860, 3980, 13796, 49340, 12332, 31311, 27418, 4255, 53430,\n 18976, 45523, 510, 14224, 30477, 26581, 4530, 3651, 101663, 139840, 22709, 150861, 31996, 63923, 120623, 262522,\n 3076, 10528, 2929, 14672, 130238, 18087, 9816, 121894, 100308, 25085, 55111, 14565, 18952, 53293, 2042, 369988,\n 23674, 61789, 133529, 28783, 108293, 35477, 47119, 36448, 71049, 40015, 33055, 78598, 198442, 1833, 159937, 40654,\n 77444, 189245, 113153, 8621, 18599, 38553, 35223, 166072, 2375, 11659, 21786, 89523, 6032, 12116, 63046, 159398,\n 18454, 3678, 32521, 47626, 11411, 103527, 38896, 42946, 15696, 26370, 10185, 8413, 37080, 165583, 4331, 63555,\n 14907, 72220, 50056, 6623, 62236, 36565, 49783, 10049, 17503, 100581, 55951, 146244, 24724, 9626, 17969, 25524,\n 109300, 173965, 99994, 101056, 46459, 43647, 53737, 277968, 8347, 123521, 74858, 33829, 44762, 77574, 877, 81377,\n 222525, 123532, 30602, 43881, 53145, 2973, 16284, 81940, 61281, 127044, 63620, 9875, 14756, 114829, 19032, 9202,\n 52759, 119141, 23928, 120551, 19607, 3599, 33401, 76821, 73233, 117430, 39968, 36539, 7071, 5446, 121735, 194059,\n 15206, 45283, 6706, 15603, 65615, 1207, 165723, 92275, 34773, 104447, 8396, 32353, 205240, 164323, 13600, 60555,\n 79205, 25532, 22907, 33410, 57480, 107111, 69630, 32137, 47832, 70913, 33161, 20321, 2371, 117348, 10714, 86246,\n 1625, 11763, 17900, 268, 78457, 99175, 97940, 101092, 86660, 32221, 14041, 128504, 125080, 53744, 124263, 31017,\n 13897, 403, 31859, 21964, 5633, 111630, 5547, 77329, 17961, 18241, 84995, 25984, 12983, 67491, 62168, 47262,\n 5241, 297, 51191, 7351, 8967, 147212, 82060, 16821, 782, 11033, 82431, 62957, 5026, 43459, 77963, 203477,\n 53528, 6247, 191852, 87774, 74164, 215654, 13467, 1522, 219964, 28589, 244104, 16242, 117821, 67725, 72570, 156792,\n 17186, 15979, 26990, 44128, 193014, 35276, 57125, 16212, 166451, 68017, 6905, 77608, 16364, 53777, 75921, 76426,\n 37975, 26203, 269296, 64099, 84122, 12077, 38533, 830, 4407, 20139, 963, 43028, 38902, 42911, 37503, 83343,\n 85045, 16979, 1165, 60835, 137387, 58380, 86990, 110066, 134540, 56331, 193845, 81238, 17922, 163093, 38744, 110641,\n 12502, 56404, 34862, 26865, 125964, 12965, 111648, 25547, 7771, 27196, 136980, 9555, 29551, 107158, 57885, 18831,\n 37705, 35505, 101742, 13970, 102109, 62548, 124657, 23328, 11124, 89592, 146376, 248050, 6241, 22033, 18337, 80685,\n 29898, 11908, 216623, 67721, 106162, 146610, 21377, 15085, 91552, 42041, 62560, 122532, 125336, 102365, 121537, 142559,\n 29693, 223919, 11515, 110495, 18776, 22494, 5895, 185059, 103592, 229351, 51220, 100102, 37027, 257855, 29359, 54123,\n 36066, 106493, 12244, 79258, 32002, 432, 56205, 94836, 90182, 6726, 14762, 29391, 48938, 26864, 38083, 60364,\n 3310, 60192, 14766, 205567, 57504, 110760, 22649, 24666, 46333, 21517, 3430, 13135, 28873, 27052, 158809, 11597,\n 20529, 6695, 23138, 22960, 37137, 45574, 6545, 305877, 43423, 26153, 24769, 59844, 14501, 10430, 134352, 56169,\n 13213, 103432, 49523, 35181, 13435, 12408, 129475, 64620, 230854, 77390, 51990, 15653, 83248, 33466, 44571, 117828,\n 51481, 2187, 10559, 68019, 18021, 54895, 48247, 18354, 33737, 4554, 108595, 37288, 39767, 116707, 9175, 3726,\n 108877, 21616, 83684, 49862, 1938, 8543, 276466, 20134, 108498, 48770, 102254, 31914, 131520, 185291, 100559, 51890,\n 209, 19526, 76471, 50544, 71814, 99351, 8172, 198526, 28816, 20419, 9109, 98389, 136777, 76479, 75596, 30635,\n 165417, 48216, 120220, 25955, 211071, 39314, 24308, 32164, 2559, 146280, 43403, 9233, 17947, 90585, 1786, 86920,\n 125662, 2457, 64741, 32152, 32918, 122882, 78538, 44001, 31723, 56426, 23375, 103172, 88177, 145697, 52506, 49319,\n 68016, 31664, 41488, 18486, 110400, 7030, 28241, 986, 109199, 19900, 42147, 56864, 65287, 49183, 7858, 24000,\n 30453, 840, 16673, 25907, 68916, 89927, 6309, 158335, 36407, 199737, 130464, 13137, 59603, 201778, 195292, 21015,\n 42466, 179062, 172561, 89492, 11075, 180407, 31868, 72493, 20998, 60217, 9865, 19530, 39274, 130266, 54539, 21623,\n 12535, 13505, 40641, 73375, 4087, 85633, 2153, 3117, 70680, 55788, 92096, 47509, 98493, 37490, 271936, 151475,\n 3032, 16171, 96642, 34106, 78425, 125761, 19591, 3366, 19316, 54508, 24183, 50786, 194248, 91528, 33253, 34622,\n 108355, 41741, 705, 3814, 3883, 108929, 13203, 67831, 10142, 59754, 68208, 29128, 84820, 56880, 38794, 24972,\n 48571, 40821, 40476, 18137, 164254, 24064, 236309, 79181, 11282, 395, 39169, 2013, 51587, 28551, 9645, 701,\n 109513, 115899, 113566, 12762, 62045, 58322, 103726, 41343, 40866, 244102, 143816, 2490, 70346, 40973, 52618, 15412,\n 30720, 104315, 38917, 42027, 93676, 17513, 107418, 20706, 123890, 13399, 97727, 24044, 87962, 65606, 44250, 98044,\n 65276, 74790, 101473, 19350, 91570, 1326, 87790, 172042, 7577, 100813, 86896, 85891, 41512, 108130, 27794, 14875,\n 71431, 12835, 156250, 58135, 3759, 22476, 42176, 115873, 34686, 56523, 73643, 108505, 51491, 20838, 12721, 32863,\n 45700, 29496, 13700, 34294, 55360, 29206, 155942, 123812, 7706, 163234, 203, 132720, 49358, 144431, 8130, 175788,\n 35818, 3270, 76832, 25710, 54095, 97274, 28779, 94621, 74396, 19092, 128242, 58067, 20885, 14670, 93255, 15107,\n 63291, 23654, 126900, 129421, 59294, 262659, 9798, 3251, 67344, 28600, 44629, 50672, 29072, 26999, 31526, 23183,\n 49175, 165843, 175455, 17282, 175411, 32022, 45989, 30298, 90690, 78118, 83156, 23749, 35636, 31317, 7069, 80381,\n 94561, 133756, 14960, 97404, 6138, 41065, 78041, 32843, 16601, 34123, 9559, 146529, 123377, 96395, 54441, 42012,\n 84257, 123541, 10745, 22139, 106459, 11720, 150883, 172651, 154996, 110538, 4728, 53447, 25704, 2009, 71152, 119354,\n 21166, 66604, 1429, 216162, 8637, 122250, 63520, 27180, 29172, 36124, 276428, 107787, 77184, 4680, 14952, 104903,\n 24418, 14793, 51561, 52931, 8371, 26342, 48526, 7118, 92066, 67280, 40653, 8847, 34597, 105438, 14198, 50163,\n 61188, 146286, 50315, 41205, 170829, 161496, 585, 197359, 95056, 1687, 365794, 91349, 48507, 5804, 49263, 5146,\n 104902, 96365, 117343, 132222, 46084, 96919, 16875, 8073, 262381, 79982, 52663, 13928, 16056, 153908, 15145, 109256,\n 132308, 18763, 24904, 167644, 13618, 40750, 18686, 147124, 114709, 150038, 52849, 2938, 12568, 48617, 8778, 5459,\n 44202, 44591, 74914, 17183, 248689, 13878, 7822, 80060, 23116, 194037, 18487, 2067, 7798, 43077, 33678, 244028,\n 31320, 74273, 2794, 19466, 8218, 36280, 183997, 48124, 19416, 29656, 19280, 98734, 7715, 18311, 30701, 133602,\n 150307, 126956, 7378, 2933, 79903, 13178, 12593, 86571, 26604, 92446, 13574, 44205, 65699, 427599, 21118, 8245,\n 14407, 27877, 47936, 33542, 7916, 26460, 117762, 21596, 37818, 2249, 127359, 209394, 60044, 47677, 308089, 36791,\n 154971, 31417, 6998, 150042, 174360, 12255, 43009, 29335, 48739, 3912, 101398, 53340, 2580, 146939, 151295, 45360,\n 125275, 15273, 45383, 27456, 48761, 23314, 8750, 60801, 85823, 104759, 27894, 123685, 66968, 39480, 26917, 55290,\n 83305, 2696, 98390, 57569, 145853, 340733, 4919, 20024, 52268, 30884, 7413, 203685, 70989, 112855, 4129, 50536,\n 349518, 68205, 332641, 159581, 135361, 236026, 37563, 176404, 64899, 6578, 122033, 63871, 1850, 85234, 82089, 66124,\n 74145, 121098, 107351, 12687, 36881, 117334, 13136, 14698, 85933, 93866, 18047, 32620, 310, 15094, 46000, 88451,\n 23632, 36645, 27940, 87618, 80520, 58892, 20976, 27702, 140090, 96075, 67841, 103292, 238964, 87778, 107338, 17019,\n 83427, 67522, 7302, 8261, 47570, 116787, 8730, 80484, 61772, 174422, 56005, 131193, 52875, 14588, 28471, 59817,\n 9586, 15720, 158155, 51307, 109734, 15196, 11025, 59331, 3884, 52626, 102602, 84797, 25158, 27314, 4437, 20488,\n 76214, 189248, 35023, 114952, 157376, 2827, 62439, 102878, 129749, 36405, 10329, 109339, 108633, 36662, 1254, 13267,\n 5470, 87105, 58004, 15397, 10434, 159667, 21864, 52022, 179464, 3013, 32147, 31496, 116832, 18494, 105502, 129227,\n 107267, 50033, 13481, 9954, 24267, 22141, 16257, 116154, 36185, 950, 115685, 11305, 176708, 2048, 178671, 112573,\n 287867, 162328, 497663, 95170, 50979, 193861, 50987, 30368, 136257, 31830, 46549, 15119, 169876, 23788, 17462, 249887,\n 57377, 1949, 35448, 14791, 43769, 210091, 3783, 34612, 282103, 88380, 245190, 5457, 20491, 98908, 11402, 86899,\n 117916, 16028, 162584, 60644, 320177, 156096, 31065, 55876, 22000, 77655, 9992, 23397, 13757, 317623, 63978, 215255,\n 2443, 17648, 93231, 27388, 104529, 93807, 55505, 140477, 12046, 112040, 70887, 40152, 94365, 112353, 25063, 114679,\n 266061, 71248, 119555, 15589, 2244, 617, 14129, 211431, 70110, 100652, 7777, 4383, 85911, 89221, 21010, 120615,\n 58357, 86405, 37554, 41647, 18, 15143, 69662, 60491, 14714, 186134, 148344, 42347, 5410, 168175, 44535, 42449,\n 343894, 129417, 99682, 20659, 27272, 140483, 63455, 222159, 17536, 13722, 42637, 62324, 11976, 114691, 148109, 2283,\n 32057, 182393, 4295, 147364, 33705, 2075, 44303, 30274, 28331, 63740, 69740, 29148, 10346, 44862, 33716, 73937,\n 153333, 12930, 38784, 247159, 2515, 41053, 20256, 83368, 256189, 54639, 115240, 5096, 24661, 175419, 153552, 26516,\n 141, 138176, 63885, 34115, 47222, 55709, 2765, 28479, 38875, 236608, 12229, 22921, 77291, 54426, 45388, 2860,\n 57787, 114579, 295139, 105782, 17826, 71066, 19119, 54364, 69385, 16568, 12323, 28057, 33346, 34919, 124763, 155533,\n 101386, 31644, 8627, 49001, 303600, 29868, 63213, 9103, 77280, 71333, 9696, 138789, 37059, 24823, 5057, 21352,\n 32368, 114208, 56803, 19424, 10445, 58514, 8661, 209508, 26187, 171838, 10460, 63454, 14016, 122504, 41328, 21329,\n 46618, 32493, 38225, 7855, 31763, 7945, 29876, 8734, 6438, 24205, 97490, 139977, 130740, 47323, 33195, 85390,\n 57194, 13813, 60600, 21313, 96251, 7699, 27584, 170521, 139271, 1363, 4402, 336738, 129223, 84983, 69150, 13147,\n 3590, 163929, 207225, 155260, 55916, 20288, 4503, 8398, 98490, 11773, 27512, 37113, 84976, 86558, 28365, 11756,\n 116005, 182148, 13733, 115313, 47644, 67208, 85069, 9347, 14995, 226141, 14704, 101835, 41159, 35314, 13113, 63526,\n 214039, 29978, 50446, 83339, 17440, 129441, 72522, 118641, 97816, 24907, 73844, 15717, 118884, 167255, 96509, 162793,\n 30847, 36849, 51297, 78974, 77793, 10427, 1873, 2972, 9999, 35074, 28190, 64297, 146836, 46298, 60038, 163007,\n 108919, 61219, 2403, 75022, 127339, 4233, 110389, 69022, 9833, 128097, 88016, 79390, 222936, 22570, 94657, 28462,\n 56956, 38803, 81536, 30474, 152794, 19566, 16481, 147408, 74574, 81895, 20731, 1918, 1366, 76367, 187321, 54494,\n 24366, 21690, 61696, 33283, 107477, 77499, 31112, 414383, 74362, 18463, 218441, 120929, 59848, 258629, 201924, 69269,\n 454, 19989, 13054, 59894, 3623, 58908, 20681, 35723, 78523, 102680, 38988, 184112, 108087, 50944, 132704, 52966,\n 21699, 18860, 96349, 201411, 82697, 85395, 95658, 5093, 6427, 177894, 44191, 32755, 26961, 155739, 6249, 31310,\n 81030, 26574, 84311, 120155, 86730, 113535, 7424, 48888, 13516, 45747, 98098, 20077, 183995, 81945, 43210, 26704,\n 40420, 75831, 45648, 11180, 6855, 57927, 65528, 124096, 34851, 2598, 156633, 107572, 127352, 38169, 123845, 60142,\n 62722, 105584, 232364, 23211, 68120, 1601, 22169, 89299, 747, 258039, 80572, 7258, 152249, 11862, 101204, 8834,\n 121434, 33761, 19175, 133142, 46343, 40178, 48723, 3589, 41977, 30210, 38868, 62257, 10087, 82658, 87827, 90646,\n 16415, 47552, 351723, 28298, 72225, 91146, 272760, 1701, 11295, 1652, 109651, 300747, 51863, 198800, 29446, 11794,\n 32345, 37538, 22356, 33102, 37590, 113544, 37970, 11478, 179743, 25454, 103417, 59905, 221970, 105196, 145604, 7817,\n 164809, 102360, 16974, 75840, 255333, 56902, 6659, 1954, 645, 59400, 67769, 7689, 18675, 5215, 13793, 20536,\n 27852, 3387, 29523, 259718, 16860, 94625, 43143, 29245, 15848, 233581, 22685, 63631, 78557, 22836, 133302, 84513,\n 1348, 51826, 47129, 98836, 58284, 1830, 1749, 94642, 10933, 6145, 12506, 10975, 13879, 103781, 144434, 10268,\n 28409, 32346, 52968, 121567, 107374, 77268, 23686, 35097, 10501, 155275, 15303, 47136, 21102, 168741, 55332, 90385,\n 15996, 84817, 681, 137803, 25054, 142275, 6163, 38175, 8056, 124296, 240642, 65621, 4934, 178205, 16101, 62803,\n 60964, 18230, 100622, 76465, 44689, 14545, 9543, 47514, 16852, 93380, 28048, 12047, 107106, 37575, 101485, 77047,\n 57326, 34819, 96137, 76916, 6469, 46264, 115983, 75768, 87668, 69942, 13027, 165, 8373, 114231, 26434, 52844,\n 42799, 182044, 23580, 146254, 38081, 43236, 33883, 146220, 382894, 14606, 46035, 36481, 166621, 35417, 95382, 2957,\n 59384, 60428, 36358, 66343, 75378, 22267, 22950, 83528, 17577, 56474, 25285, 4619, 179691, 75355, 95836, 53295,\n 34588, 171410, 4487, 14679, 84208, 44015, 18562, 109133, 54101, 11531, 86052, 174479, 303157, 28095, 9953, 35642,\n 14564, 39802, 16145, 77606, 117406, 53038, 121117, 53624, 22062, 1212, 7632, 127157, 237292, 189087, 10478, 127345,\n 102515, 181997, 86752, 87623, 10966, 121602, 68783, 68681, 83042, 114380, 138349, 191305, 67176, 50085, 39016, 1427,\n 42384, 1412, 67118, 122616, 72389, 25260, 2237, 13576, 137346, 19938, 20304, 2191, 68759, 5373, 61364, 238507,\n 75814, 23931, 69565, 38993, 131741, 38364, 12528, 87762, 5679, 129853, 5310, 186831, 32653, 90338, 260176, 389531,\n 108118, 26843, 43985, 50175, 30563, 25106, 56965, 18130, 140428, 4542, 165503, 117991, 24219, 229605, 1819, 129663,\n 1240, 3797, 76093, 18398, 71339, 51919, 93043, 27175, 47060, 216257, 6483, 35051, 1217, 16512, 80798, 129064,\n 13225, 69339, 8548, 237079, 72298, 2575, 34280, 51379, 117910, 55671, 53345, 247552, 29486, 39328, 140821, 34681,\n 57045, 60177, 5004, 90269, 78522, 2479, 322607, 48474, 61296, 13057, 31558, 4678, 59271, 6699, 27044, 31988,\n 35944, 12503, 83480, 4389, 136508, 3781, 114121, 70279, 4488, 155829, 42214, 2898, 68191, 75695, 305850, 45041,\n 74344, 106509, 30087, 17429, 93292, 12477, 290, 23080, 114802, 35714, 18751, 26554, 105424, 17775, 2144, 2412,\n 100610, 65192, 113975, 52975, 180272, 135050, 129815, 76238, 106483, 21440, 63186, 4260, 46189, 9711, 28249, 4169,\n 23429, 23390, 8324, 141585, 63809, 67668, 38457, 38063, 39226, 59972, 1189, 203916, 62368, 14403, 16949, 61767,\n 85801, 1739, 40147, 35049, 76757, 33124, 62102, 15780, 103593, 103009, 53484, 22952, 67973, 114645, 6566, 5245,\n 50462, 7601, 8288, 3513, 194571, 80276, 1908, 54592, 5124, 58571, 2513, 6800, 273997, 193904, 1119, 17991,\n 117245, 2508, 129156, 82366, 26278, 71465, 63341, 56943, 39662, 106116, 94966, 156875, 9736, 2204, 122308, 94418,\n 27134, 1280, 24539, 49022, 45314, 3764, 50904, 46424, 30699, 28087, 293839, 9400, 33646, 40165, 822, 147499,\n 50263, 116179, 29085, 11863, 31314, 5578, 17797, 5104, 12454, 1604, 15342, 219206, 10232, 67800, 94261, 25872,\n 13565, 90339, 78971, 75377, 26649, 41184, 47695, 11514, 35369, 20767, 14227, 41953, 309396, 148270, 147938, 33074,\n 14453, 27499, 109019, 39018, 25738, 240196, 158931, 52820, 8612, 95853, 21524, 137010, 84901, 70869, 70021, 116794,\n 48404, 38771, 6732, 1070, 70990, 187297, 49140, 5238, 576, 3564, 253975, 16027, 16483, 2811, 37775, 19034,\n 25259, 4053, 2000, 70083, 95774, 19713, 33431, 92703, 91314, 42381, 288770, 48194, 95985, 3991, 77418, 13406,\n 241328, 245086, 56533, 35275, 62725, 9246, 51924, 70181, 95331, 16163, 31410, 79016, 39312, 120878, 119371, 275987,\n 80124, 27712, 9186, 220, 23598, 146167, 85209, 68238, 282190, 57048, 31273, 30555, 80913, 17594, 75779, 59160,\n 135002, 101219, 189377, 29225, 96735, 60126, 62522, 104000, 27620, 86814, 17240, 147533, 11001, 5425, 43682, 410,\n 49460, 87270, 69480, 46315, 59448, 1816, 76201, 9431, 11788, 87960, 29063, 65539, 47347, 11678, 33846, 7008,\n 196704, 9895, 6753, 8633, 120892, 59970, 572824, 115934, 6646, 202559, 892, 48351, 37611, 251282, 57823, 67263,\n 57750, 26527, 34485, 90747, 7685, 88370, 6144, 64182, 1709, 41969, 21458, 62327, 181657, 49247, 225330, 122600,\n 114574, 107124, 85361, 111833, 63243, 71420, 15655, 191178, 72430, 18063, 51425, 54002, 12364, 53225, 86557, 18193,\n 97580, 41232, 138398, 67821, 128724, 8944, 233212, 101353, 52099, 42127, 14006, 120107, 32789, 32132, 3498, 18123,\n 33758, 56058, 5779, 128760, 59888, 98869, 18445, 84702, 51911, 13234, 218379, 20093, 39031, 8074, 70195, 20708,\n 23462, 24355, 131384, 60189, 26390, 10403, 41060, 7140, 10781, 49410, 42261, 87202, 82566, 41663, 43105, 60276,\n 2768, 5733, 74176, 28329, 2297, 145430, 131632, 83615, 122915, 105441, 655, 224102, 5284, 136426, 67763, 16294,\n 188511, 32538, 61049, 27893, 3394, 13951, 159099, 28542, 17930, 145360, 9492, 190122, 32285, 78855, 26440, 13570,\n 58648, 73908, 4239, 124561, 2444, 74172, 53131, 11468, 10794, 73566, 11623, 35343, 64710, 30481, 4163, 10328,\n 38309, 29901, 10538, 154377, 76132, 92405, 24839, 11679, 3465, 13449, 11637, 7824, 2337, 57754, 1260, 14458,\n 41118, 19878, 38661, 13416, 159180, 37074, 163164, 54137, 28627, 52134, 184900, 8520, 40385, 29546, 30502, 22386,\n 66527, 107458, 6850, 24022, 47983, 30603, 35083, 8934, 304066, 39500, 9, 28261, 33026, 77251, 9374, 44833,\n 116312, 34990, 29236, 63563, 125639, 135405, 165398, 159055, 55690, 88141, 69643, 236964, 31983, 25572, 20436, 36746,\n 60896, 31850, 16179, 11828, 5888, 3043, 66368, 9750, 31167, 7915, 53111, 36430, 1333, 64344, 93659, 20061,\n 60596, 180191, 51630, 6792, 30244, 43509, 101058, 22409, 420, 44210, 109783, 43223, 27030, 72477, 72831, 32679,\n 29235, 7675, 47556, 12258, 39907, 149412, 84926, 118247, 24692, 71717, 105038, 86009, 45941, 41189, 89453, 29856,\n 52543, 30627, 226798, 67303, 59230, 67415, 34408, 1367, 99685, 16867, 128419, 52147, 4111, 125381, 117881, 16173,\n 44093, 102224, 31575, 23234, 24870, 83790, 127407, 239098, 3200, 994, 1255, 100903, 242275, 117266, 55116, 38205,\n 16140, 29662, 11307, 40414, 208793, 123355, 56470, 4862, 75600, 30119, 58218, 70828, 24075, 26974, 7802, 192353,\n 4851, 5475, 78720, 66596, 3409, 28573, 64396, 30381, 30690, 59859, 88256, 5406, 99945, 103064, 34463, 37727,\n 24238, 86643, 60088, 4057, 23741, 5967, 162904, 38240, 28356, 93858, 25510, 122879, 6897, 3278, 7057, 11971,\n 4400, 35461, 211413, 21395, 59615, 39471, 87233, 55795, 128426, 3051, 22470, 41950, 14705, 3974, 180108, 80476,\n 78442, 204996, 91987, 15634, 67610, 139015, 142373, 35611, 51134, 10387, 4353, 153456, 57749, 181039, 14183, 68447,\n 151532, 21107, 36452, 20551, 3186, 46247, 46383, 129666, 88736, 140662, 146243, 2066, 8360, 7978, 64818, 106963,\n 17896, 47801, 10723, 114821, 223295, 74192, 3293, 3393, 16987, 74064, 11277, 91622, 4270, 29828, 27951, 387869,\n 103235, 1374, 61988, 120083, 477, 145892, 128378, 11779, 211263, 61354, 18221, 17869, 46530, 83061, 108538, 157981,\n 90608, 67199, 95080, 49064, 195814, 12302, 66307, 10348, 231346, 160732, 112859, 63633, 146558, 21271, 31037, 198802,\n 47622, 12862, 95710, 3910, 77850, 73961, 85585, 34752, 61000, 4082, 24595, 103679, 71107, 8208, 79568, 150019,\n 16615, 24961, 139857, 32664, 197366, 4559, 54735, 32696, 4126, 162019, 75698, 13916, 70108, 159638, 19834, 9349,\n 24675, 175560, 49643, 18206, 52459, 27992, 10809, 88865, 401975, 133172, 29000, 34558, 30915, 3658, 25834, 42430,\n 36562, 125265, 18182, 10155, 40149, 97082, 208980, 19575, 60853, 90529, 66545, 9600, 789, 46420, 2317, 88593,\n 55595, 98980, 115302, 5742, 169155, 1073, 177901, 3472, 11189, 63711, 78643, 65472, 50459, 127979, 93, 42202,\n 67053, 21720, 157650, 11145, 141378, 42033, 22824, 85705, 79114, 35584, 15974, 1510, 54172, 28562, 12451, 104226,\n 19190, 97151, 73024, 20948, 5151, 81741, 21499, 29006, 84183, 198074, 54003, 45120, 170125, 26240, 35177, 28389,\n 64863, 79974, 60778, 176915, 232183, 45342, 2038, 80253, 41564, 40703, 32689, 5430, 100689, 5366, 23007, 134279,\n 14266, 26712, 73993, 24934, 64242, 52113, 102887, 61801, 46415, 201049, 54251, 62133, 122757, 164883, 30815, 139966,\n 2319, 30842, 766, 13362, 10287, 134518, 86111, 81665, 82440, 28333, 43019, 18963, 8804, 161944, 23439, 102144,\n 101145, 80029, 39052, 248708, 30350, 117340, 11878, 128467, 974, 138625, 63961, 5237, 74778, 61834, 67040, 43814,\n 13690, 65947, 33809, 232476, 115258, 181745, 28824, 94013, 9510, 10246, 93722, 81976, 7217, 114383, 3493, 16014,\n 69045, 72692, 12145, 80981, 9507, 6692, 1620, 60820, 330444, 35474, 33962, 4797, 7053, 295463, 46445, 27026,\n 12491, 77988, 49524, 35675, 90947, 29114, 166705, 101385, 133782, 32704, 6186, 84595, 176031, 185623, 45966, 151302,\n 63069, 1699, 107491, 947, 15458, 74452, 196212, 6046, 10498, 12163, 10239, 35191, 243951, 9277, 9090, 29539,\n 54460, 22820, 26514, 112549, 60372, 51753, 48756, 21812, 70861, 260326, 41, 44222, 10441, 16961, 48148, 138771,\n 216194, 5914, 52153, 53400, 212036, 56519, 26245, 10117, 45888, 15294, 138019, 90913, 26368, 43842, 42111, 23348,\n 6082, 194845, 161089, 156206, 51546, 11647, 30759, 302912, 262094, 8635, 78876, 26535, 35283, 54183, 31183, 85484,\n 147873, 12989, 5197, 6356, 72894, 65347, 20150, 27370, 73787, 1493, 45918, 12366, 190217, 20724, 13858, 10981,\n 67449, 81213, 7553, 14115, 72242, 271517, 11842, 48310, 88743, 143726, 22177, 3290, 243231, 58452, 62937, 12592,\n 1654, 40066, 33477, 13751, 9921, 128442, 15868, 7106, 75236, 83773, 10775, 36938, 10482, 170465, 17368, 17469,\n 161508, 32752, 98340, 800, 19824, 264456, 3901, 87319, 2867, 26782, 9630, 113102, 185815, 24197, 44584, 86366,\n 40224, 3636, 140916, 31731, 267731, 9567, 53678, 72984, 29389, 27963, 17106, 50282, 284911, 60170, 8322, 12608,\n 23374, 89652, 5268, 39044, 229766, 8869, 151350, 31436, 177342, 12269, 183212, 120418, 116270, 2843, 78888, 69192,\n 7865, 184099, 1086, 129897, 18383, 70508, 20242, 18508, 229924, 124569, 35749, 50589, 55626, 9884, 83115, 40971,\n 30671, 18135, 14452, 38861, 17844, 201826, 5549, 26413, 17189, 13561, 38539, 10679, 143331, 3314, 36785, 171194,\n 49685, 187713, 67506, 4618, 104039, 17060, 195080, 50648, 33159, 19238, 67559, 134840, 28599, 157523, 17130, 38064,\n 117398, 94355, 31918, 13575, 34538, 40326, 13997, 3494, 348283, 62481, 26862, 3603, 104426, 244363, 153709, 112487,\n 304612, 199674, 41239, 35545, 54869, 293005, 28223, 26277, 26899, 4533, 18518, 15492, 38587, 80488, 70485, 160395,\n 263, 60162, 11382, 222152, 4696, 250751, 51921, 182609, 10707, 48463, 46243, 1227, 49111, 111564, 46502, 33342,\n 56846, 68541, 63559, 858, 139927, 16654, 229375, 76759, 26478, 33205, 95828, 23399, 92945, 2637, 35630, 28470,\n 143992, 50214, 14174, 21456, 166191, 65665, 1711, 21594, 78019, 97599, 111701, 36, 147151, 110246, 189022, 43021,\n 30397, 40757, 131935, 42065, 73335, 48039, 26596, 28984, 15102, 2361, 7421, 202167, 69744, 43766, 52826, 3642,\n 83304, 33873, 75140, 63169, 192389, 36551, 92748, 13039, 123959, 233220, 21738, 84447, 77230, 20228, 187852, 19095,\n 25799, 92136, 108774, 29237, 53947, 2299, 118106, 2687, 8830, 42331, 202924, 33667, 2023, 73763, 30704, 19363,\n 19779, 16737, 35629, 48081, 24068, 101013, 162338, 291912, 13749, 24745, 328289, 167679, 70086, 48299, 23306, 16732,\n 17801, 43322, 54589, 3586, 63653, 43624, 53474, 925, 109177, 251316, 43805, 13082, 19511, 86565, 142182, 92461,\n 17117, 101033, 103319, 64589, 4022, 4351, 235897, 5352, 82705, 107142, 46391, 156084, 5860, 61365, 10558, 13045,\n 7717, 18357, 33922, 12590, 33065, 6928, 46993, 783, 46937, 67846, 8952, 26295, 6107, 119656, 18799, 17458,\n 50747, 4229, 179559, 112727, 118080, 20683, 41464, 125468, 51560, 49749, 44231, 7359, 35339, 62988, 136487, 67015,\n 5208, 29150, 24956, 105186, 48858, 6143, 18097, 6972, 16404, 73489, 58742, 97196, 36357, 164616, 5834, 32267,\n 13746, 147733, 15113, 132091, 34127, 106298, 39729, 106426, 22294, 9780, 15602, 36213, 71502, 42808, 66802, 599,\n 60755, 5851, 39120, 67363, 108623, 126368, 72770, 91263, 32486, 30596, 151717, 7951, 52002, 43103, 11768, 68942,\n 40901, 39344, 24037, 127500, 116890, 48403, 16926, 86750, 17745, 48648, 159545, 34460, 58419, 5634, 114317, 67865,\n 31462, 23352, 24010, 98185, 125708, 69686, 68337, 13610, 26271, 70691, 2980, 4768, 27225, 102402, 75453, 28106,\n 8104, 6931, 1176, 6274, 6475, 112635, 22498, 6176, 238686, 26832, 28893, 90319, 14441, 15682, 15087, 39517,\n 45270, 109134, 104440, 45965, 47645, 81772, 7876, 52683, 87720, 12898, 4505, 185665, 2769, 113401, 15664, 57592,\n 105229, 137381, 97059, 119268, 6876, 43309, 33886, 128363, 35476, 144249, 67013, 143587, 83367, 25703, 91436, 59347,\n 53236, 2289, 16519, 19844, 46309, 58558, 99834, 23313, 218816, 231303, 36388, 51333, 183535, 109792, 139277, 54306,\n 90139, 18235, 8275, 32710, 37677, 82464, 86025, 92204, 88842, 117723, 37570, 128723, 234242, 76350, 73795, 34896,\n 148247, 58424, 11105, 11744, 45746, 63372, 17118, 49772, 199520, 81902, 38004, 22911, 33752, 3125, 1995, 53792,\n 4689, 26909, 108150, 146062, 69674, 41811, 161444, 84855, 8999, 28561, 16731, 93937, 3189, 21967, 24890, 22943,\n 1356, 145300, 51569, 28802, 517, 118679, 31703, 40607, 48098, 108854, 25003, 10233, 73969, 177495, 5248, 24516,\n 215347, 146192, 48712, 60626, 69188, 40735, 5866, 586, 101541, 6509, 47590, 52129, 5969, 222045, 110933, 25733,\n 24223, 65339, 62812, 2414, 155418, 35819, 16022, 78423, 43138, 20995, 128255, 240673, 46745, 236093, 72176, 57085,\n 97841, 61248, 107, 36068, 193177, 105427, 55726, 215229, 20446, 47228, 100420, 87091, 14429, 121708, 23605, 21157,\n 187721, 21880, 2997, 203976, 99166, 95068, 25877, 7724, 98925, 83401, 4829, 13182, 18229, 13718, 239662, 38653,\n 116505, 153497, 30589, 89029, 38962, 181302, 43853, 78872, 180301, 4786, 248240, 7401, 106136, 112590, 77745, 19731,\n 60880, 77789, 125748, 135487, 5975, 48627, 34084, 12419, 215770, 47557, 254582, 10364, 106495, 21856, 67539, 88981,\n 38805, 21428, 48732, 42316, 12149, 16078, 52808, 25327, 51322, 33850, 51147, 12253, 122354, 46077, 56483, 254553,\n 115417, 81834, 150991, 94662, 86668, 7381, 12841, 100650, 18218, 15741, 22372, 68294, 50705, 15535, 84660, 61887,\n 22553, 72299, 31361, 24824, 17743, 46820, 64288, 31582, 77006, 111674, 116384, 30760, 80920, 86149, 77192, 51979,\n 79691, 60342, 122805, 103800, 240873, 160744, 233114, 78962, 54920, 8608, 3484, 316104, 72548, 24337, 5088, 230040,\n 21926, 10172, 36838, 26, 86221, 83458, 102176, 12062, 17571, 41929, 41170, 28428, 68239, 41750, 103930, 2634,\n 18313, 53019, 34825, 97837, 63115, 24606, 73157, 152474, 14715, 91439, 37033, 109806, 140259, 30668, 174760, 380,\n 135597, 95673, 136073, 65073, 134249, 13829, 17279, 122305, 4420, 46444, 10237, 64848, 203623, 70728, 10349, 182885,\n 65075, 24519, 25783, 40318, 34139, 22222, 63394, 55266, 102764, 41422, 20126, 65100, 90408, 53640, 35128, 48932,\n 11192, 38935, 96839, 34782, 39492, 19396, 41332, 6250, 5511, 19492, 51304, 25936, 104466, 54099, 73771, 86115,\n 5080, 7669, 30891, 111700, 13931, 25276, 72289, 135447, 14820, 258641, 25265, 31005, 281179, 75286, 393, 95359,\n 14623, 13584, 6680, 101227, 80173, 44933, 76666, 54542, 13244, 39348, 458, 25379, 109451, 134348, 81143, 6959,\n 65554, 12027, 51311, 8716, 57589, 140731, 28467, 23316, 17272, 30458, 25980, 55229, 77197, 83798, 28302, 114784,\n 7428, 34548, 26241, 14712, 39336, 103304, 18928, 54080, 12870, 334, 87722, 15208, 16895, 142098, 114262, 39820,\n 83913, 57817, 28682, 7721, 14900, 108672, 11250, 62246, 42849, 415188, 1724, 26555, 24549, 25505, 26443, 107450,\n 145899, 61035, 43528, 6901, 60726, 65906, 267741, 21338, 147590, 42079, 18924, 73017, 135236, 15393, 5206, 4026,\n 84185, 1531, 5988, 113890, 82647, 303391, 7386, 69844, 71611, 189865, 76523, 31877, 13315, 19314, 198575, 32821,\n 1928, 67641, 25913, 104475, 103489, 3297, 70391, 18406, 15446, 113347, 19295, 93790, 27856, 1792, 167471, 116449,\n 8541, 4408, 41757, 63233, 25765, 86680, 64501, 27034, 24816, 34975, 6079, 4486, 49693, 36229, 16917, 21581,\n 62426, 27862, 11612, 54284, 35702, 194034, 355, 24277, 48262, 87411, 70504, 310164, 118018, 12516, 47559, 43502,\n 57433, 107139, 9290, 66533, 80863, 14634, 34312, 91725, 28606, 21342, 67241, 72355, 43244, 375789, 37402, 174015,\n 105070, 8342, 44167, 67494, 1890, 16365, 11723, 271002, 1865, 47918, 8350, 45564, 27742, 25110, 125803, 8553,\n 49504, 81925, 62211, 4534, 15491, 19011, 80373, 206920, 667, 102405, 128623, 245524, 5553, 113309, 192739, 65766,\n 19567, 22832, 261958, 29679, 21293, 71134, 20962, 105123, 24721, 860, 21752, 33448, 18372, 157167, 94822, 35770,\n 173224, 232737, 75729, 28937, 46828, 28062, 25453, 5207, 140366, 36665, 30652, 6169, 67920, 150458, 92040, 23186,\n 184604, 92330, 20891, 176492, 49427, 27828, 38305, 42495, 143982, 49560, 25503, 90043, 29747, 65328, 47830, 12932,\n 11068, 77721, 9003, 25213, 94205, 140426, 46090, 89945, 138173, 192691, 33329, 112232, 129905, 35709, 27514, 1841,\n 19957, 31411, 127476, 53572, 17497, 173549, 55063, 175135, 19841, 69314, 5192, 237921, 117660, 150697, 4060, 273045,\n 50414, 98940, 65348, 153665, 164423, 58804, 156695, 48994, 213928, 86036, 28608, 8355, 39574, 34540, 16927, 135680,\n 18374, 151587, 10830, 53805, 16878, 16623, 4282, 48030, 8537, 14986, 46102, 13062, 72897, 72, 33050, 108227,\n 39451, 45935, 651, 113320, 40535, 95176, 57450, 48843, 5003, 19019, 10407, 211163, 3848, 1068, 4988, 32091,\n 30095, 41692, 15099, 43602, 107434, 50744, 7627, 171349, 16313, 150832, 352665, 207750, 33937, 38256, 51091, 156000,\n 87889, 90663, 84175, 24908, 114900, 50365, 31494, 83829, 5398, 169342, 47521, 54818, 18935, 8356, 43094, 41212,\n 174536, 10082, 92550, 6678, 60614, 23355, 69721, 14796, 34149, 128830, 58187, 3179, 208, 40325, 28399, 225029,\n 401412, 51150, 31580, 207268, 6657, 10993, 69818, 64282, 289845, 23308, 12961, 38447, 6681, 52944, 31855, 2572,\n 47646, 120728, 179148, 37240, 45196, 218274, 4816, 3695, 21961, 50084, 35209, 18073, 51452, 27004, 6100, 33941,\n 1377, 84831, 171214, 85, 141510, 9078, 99227, 32610, 6417, 11718, 49868, 65579, 87902, 73018, 49062, 46280,\n 61742, 21512, 40862, 107733, 15941, 29168, 157765, 144919, 14487, 5767, 158014, 140070, 7241, 573, 71584, 16921,\n 223566, 40331, 179473, 35081, 47926, 140885, 41508, 52104, 59180, 42310, 32811, 29048, 123517, 102413, 80208, 10104,\n 14746, 12649, 153641, 126022, 37965, 113017, 4171, 83, 142592, 2809, 6362, 50416, 71323, 116894, 260776, 16204,\n 1524, 5760, 30351, 12658, 20703, 54403, 36083, 45408, 74772, 4946, 14485, 50759, 111222, 10890, 2195, 167147,\n 92962, 130534, 16283, 177256, 35016, 15472, 210156, 151187, 73922, 117691, 43250, 52051, 37392, 24811, 24358, 30830,\n 5775, 818, 21969, 1476, 127322, 151783, 58392, 31021, 106913, 65215, 89407, 90802, 28531, 11690, 20234, 95249,\n 44602, 37256, 18707, 11928, 5161, 4410, 26571, 51903, 49768, 22008, 25252, 65780, 209499, 68769, 203726, 13249,\n 137363, 48845, 86823, 6658, 5674, 31881, 1083, 1823, 108676, 34518, 166752, 13791, 14287, 91576, 91429, 8665,\n 11529, 26401, 16191, 91972, 30964, 5254, 28486, 54697, 79613, 66520, 18447, 22870, 45203, 194466, 22822, 51703,\n 12278, 76716, 44595, 73455, 33546, 12235, 144843, 36154, 51247, 11116, 33040, 3180, 225753, 60864, 1972, 28469,\n 12891, 28879, 10338, 144157, 56294, 353058, 38302, 41447, 87532, 110616, 27065, 168438, 6557, 1213, 50804, 144643,\n 24817, 2390, 136531, 38174, 247513, 16190, 4059, 122791, 131994, 137430, 39506, 57650, 16305, 5188, 54309, 106128,\n 20628, 88071, 67394, 395446, 250285, 66176, 91254, 1399, 114196, 43915, 60230, 44853, 27206, 106353, 43013, 18733,\n 345105, 226453, 51202, 16607, 57106, 117175, 35492, 10476, 89598, 127439, 15187, 39624, 13688, 61570, 10615, 31111,\n 59370, 6238, 175252, 32143, 224492, 41388, 95408, 34384, 148238, 78307, 38959, 9340, 160091, 61443, 15737, 11216,\n 41244, 170, 38299, 102443, 113097, 26382, 14027, 33707, 3957, 76300, 66160, 19431, 18900, 6952, 1717, 108656,\n 82206, 188021, 257335, 27295, 43999, 41210, 31777, 46956, 57457, 12657, 11489, 15697, 48060, 204748, 53583, 82422,\n 284790, 30503, 137341, 8120, 19615, 220311, 15991, 10217, 63424, 9808, 67431, 70976, 98221, 4491, 15177, 28535,\n 144789, 751, 13230, 2394, 1504, 33977, 132104, 30316, 22230, 931, 97193, 185240, 24826, 22687, 174322, 15307,\n 22988, 1390, 188745, 180325, 29580, 59068, 74903, 18994, 29195, 79, 15436, 7622, 38462, 11566, 138710, 44828,\n 45774, 37768, 99236, 68137, 84083, 19282, 22698, 17134, 74807, 126662, 173497, 46248, 16938, 119735, 3212, 28292,\n 213652, 49013, 9975, 32180, 45660, 86250, 4801, 68788, 95490, 77482, 113751, 11994, 44624, 94452, 46839, 128497,\n 100316, 5798, 58588, 73184, 202987, 65417, 37790, 88524, 1606, 43156, 97964, 105717, 34947, 11203, 100060, 37742,\n 130074, 93653, 107799, 94311, 196106, 41347, 8035, 10780, 16390, 27883, 118236, 167395, 1979, 25006, 19375, 31628,\n 18916, 144723, 78502, 114047, 103107, 86492, 107686, 5844, 20934, 206963, 23556, 22591, 16562, 146333, 20167, 10471,\n 117434, 33085, 2863, 9740, 36669, 41849, 37271, 22790, 18209, 28979, 8231, 12952, 54408, 21731, 25130, 45208,\n 55748, 138120, 75826, 414, 29593, 9925, 292865, 25999, 683, 123149, 7036, 92159, 86055, 61827, 103680, 23176,\n 54918, 58466, 57578, 13305, 5709, 86479, 16697, 31064, 17660, 200919, 10770, 49793, 33423, 32370, 52047, 16488,\n 62555, 6459, 8426, 83493, 7763, 59725, 82812, 18628, 67760, 79405, 68557, 9612, 7673, 28102, 56517, 69620,\n 171797, 32458, 29541, 15870, 81109, 32080, 207644, 71495, 21202, 11039, 91036, 61230, 2810, 130800, 32260, 4613,\n 60590, 37112, 75214, 33979, 126402, 155062, 30642, 63875, 12810, 194463, 82799, 47664, 16725, 36685, 43367, 61099,\n 449, 172150, 102867, 21691, 301838, 36745, 7130, 18671, 57316, 34852, 38034, 54182, 35578, 65900, 99486, 19771,\n 3456, 2658, 16914, 99866, 28390, 28109, 8262, 21147, 34353, 20006, 4228, 137085, 1675, 203023, 283196, 198286,\n 214375, 163329, 290603, 152574, 40471, 83506, 30068, 14730, 23177, 131539, 34759, 27668, 32178, 71896, 104799, 116305,\n 85430, 119262, 42860, 25160, 8911, 23428, 49437, 105322, 6519, 16203, 6349, 74711, 1230, 38045, 8540, 75165,\n 44736, 25909, 51026, 317034, 4984, 32281, 91312, 27060, 44431, 17817, 45363, 155937, 239085, 35697, 59784, 91993,\n 29531, 126740, 213757, 76560, 167776, 285273, 24262, 8237, 65030, 41160, 74437, 48804, 118916, 13159, 37842, 1031,\n 75349, 1478, 11655, 108777, 23435, 277425, 101734, 67469, 70231, 124711, 43532, 28514, 65526, 54956, 1000, 21882,\n 17728, 25302, 40952, 52214, 149632, 1999, 2111, 3259, 63362, 89961, 220561, 39777, 26335, 9063, 10572, 12416,\n 34551, 34623, 38604, 24723, 5947, 15588, 69927, 66252, 119177, 69173, 46629, 28714, 70715, 212408, 20521, 406913,\n 74380, 11716, 50659, 50862, 37009, 88460, 130101, 7210, 53853, 538, 65120, 151950, 55806, 163748, 52837, 13153,\n 21100, 16674, 64536, 6091, 138201, 44837, 58547, 3723, 163, 2177, 32288, 85454, 34033, 8497, 14282, 25742,\n 10535, 10741, 79559, 117493, 243787, 49337, 100718, 79495, 40139, 42956, 7551, 55433, 15421, 31509, 23034, 45081,\n 547, 61176, 53434, 328001, 8470, 36263, 30145, 4519, 74173, 53935, 11845, 73774, 60211, 78025, 3, 4102,\n 73782, 109293, 315332, 48412, 26683, 13714, 6865, 20128, 18490, 104141, 325, 39470, 171970, 115860, 15707, 7268,\n 73301, 74336, 31370, 2368, 111827, 107757, 136231, 142844, 97138, 96638, 84053, 38691, 23801, 1588, 10573, 122098,\n 77039, 240, 186135, 146101, 11996, 18143, 112963, 46171, 155836, 348769, 47795, 121213, 116266, 132515, 3344, 144804,\n 31286, 99187, 255838, 129694, 35894, 48779, 55235, 148582, 71967, 65282, 15174, 13920, 47080, 6147, 108242, 157593,\n 125025, 7136, 1286, 28957, 127956, 28402, 98813, 20805, 7532, 109417, 40610, 5041, 32958, 15142, 18408, 108596,\n 33543, 50517, 27748, 80114, 233434, 91447, 487, 37094, 100048, 30541, 43477, 10639, 89862, 155868, 37667, 8726,\n 60684, 237903, 73408, 99589, 12190, 38739, 97348, 3914, 13594, 2680, 149016, 13907, 30171, 28343, 23530, 115225,\n 61104, 35821, 147679, 14337, 4297, 244282, 24085, 326976, 56428, 7851, 21303, 131620, 71446, 83253, 68692, 111870,\n 5224, 15813, 38197, 49026, 45057, 13660, 3306, 76345, 40671, 27905, 91072, 996, 68527, 62085, 91351, 122634,\n 55109, 168209, 2024, 27560, 112707, 17352, 8306, 167115, 169921, 166958, 5031, 46020, 11844, 67284, 19130, 76185,\n 6920, 32849, 5450, 14610, 22451, 21002, 17392, 31872, 66682, 84796, 13709, 40210, 59898, 12029, 8719, 53564,\n 21462, 91884, 21647, 88379, 194428, 12754, 37797, 132826, 160016, 22567, 54383, 53186, 77611, 31107, 8339, 4694,\n 19185, 90355, 23597, 17222, 140675, 28442, 23668, 55977, 9128, 61555, 28774, 155229, 17658, 9390, 24379, 69357,\n 15752, 127381, 239631, 62460, 93181, 55913, 45133, 140155, 18676, 25249, 33164, 29581, 82837, 67223, 22362, 29975,\n 7317, 52813, 1943, 29613, 20012, 207130, 49617, 49651, 5636, 15334, 36313, 29226, 28084, 95247, 72072, 19000,\n 224932, 15811, 114, 32127, 38097, 37508, 88507, 37225, 27359, 91626, 12193, 69279, 20608, 11055, 88156, 92808,\n 2152, 57259, 55275, 72789, 24475, 104414, 1708, 9882, 3818, 48661, 66897, 1631, 34806, 227930, 85815, 87753,\n 18321, 250664, 72733, 25107, 206797, 50891, 8082, 196411, 92596, 96764, 152823, 65514, 22819, 387277, 62176, 51225,\n 40329, 15563, 189, 3659, 73670, 64357, 51793, 275136, 33482, 86653, 74615, 67058, 11318, 125720, 15388, 22388,\n 8267, 1730, 102663, 170910, 40784, 7144, 85373, 13040, 7088, 94309, 583, 44224, 140424, 77439, 18496, 164026,\n 36578, 4722, 9151, 5824, 63365, 26510, 35199, 40500, 79277, 32495, 44614, 35233, 9566, 203293, 152144, 7097,\n 2330, 183480, 98629, 13423, 330887, 44130, 68600, 30939, 97829, 31012, 345465, 56747, 94879, 4939, 160027, 149761,\n 99423, 46099, 32251, 15332, 8761, 96094, 128555, 5763, 235318, 222223, 55729, 30241, 55420, 201746, 3987, 81382,\n 8259, 49325, 23287, 7719, 24633, 251100, 92311, 18591, 110533, 64759, 170260, 393860, 7175, 21144, 132887, 3593,\n 75346, 101277, 91109, 16387, 259187, 11627, 57459, 173829, 44694, 55780, 49797, 89192, 120443, 62622, 3904, 14814,\n 23887, 1027, 112258, 64955, 99800, 11132, 66353, 36202, 48624, 18158, 88481, 96882, 43059, 11040, 2455, 7077,\n 21651, 181159, 99126, 100434, 61388, 68186, 19161, 110468, 120052, 8819, 55324, 41494, 7014, 37689, 3618, 87729,\n 92615, 207943, 9823, 128657, 12587, 15857, 6379, 67628, 51216, 71775, 157617, 63244, 1503, 3864, 218754, 110864,\n 5769, 21492, 7243, 1192, 87921, 85529, 31512, 18537, 42698, 35350, 73510, 84474, 34301, 8991, 21013, 35034,\n 566, 38832, 19838, 35586, 37216, 39413, 55006, 12178, 59742, 856, 84563, 6900, 25632, 17437, 49786, 30723,\n 13847, 70845, 4044, 7843, 23944, 235976, 55530, 48942, 6518, 20939, 73769, 192653, 52936, 95207, 23895, 132542,\n 142982, 22632, 87452, 48042, 54018, 178468, 10728, 26230, 23559, 363, 81269, 142012, 5718, 346258, 31456, 84333,\n 246476, 51018, 66692, 101804, 120570, 39962, 30373, 70593, 2864, 60541, 19425, 54209, 104092, 7201, 31545, 48018,\n 25865, 15442, 46257, 40443, 8328, 6451, 111782, 47527, 97754, 33046, 470, 245116, 31095, 39, 91934, 87208,\n 73470, 36708, 36521, 12801, 70624, 36272, 8892, 79768, 12427, 55454, 103756, 5908, 52390, 62962, 22720, 141138,\n 94634, 41689, 128402, 126390, 6628, 106394, 35527, 134394, 82727, 254651, 194502, 148064, 89549, 3202, 28359, 957,\n 21954, 27906, 49840, 142747, 8307, 24206, 48978, 1186, 71728, 133038, 71474, 91306, 6333, 110959, 74600, 70387,\n 18983, 62609, 56057, 22970, 1147, 135850, 1321, 28834, 3578, 59715, 102227, 32827, 81415, 99952, 55636, 257598,\n 390, 22702, 35701, 85872, 402916, 39216, 189795, 14929, 19467, 10112, 144422, 61514, 5279, 63421, 134686, 41436,\n 8424, 51925, 10598, 132295, 124416, 4604, 194739, 210929, 57866, 31829, 51626, 50007, 9976, 91878, 61906, 56168,\n 81906, 60918, 61859, 40017, 23059, 16887, 40927, 62064, 12785, 32893, 32913, 21782, 93965, 20169, 44387, 79084,\n 38463, 11457, 93950, 27127, 157050, 2697, 337088, 5116, 54128, 48255, 33279, 8821, 27352, 25515, 124022, 65710,\n 28906, 38557, 33390, 1722, 104435, 72215, 38551, 12094, 30978, 25113, 6671, 37355, 175109, 42862, 98024, 65406,\n 221276, 59624, 118012, 64637, 78760, 86697, 21426, 1639, 40350, 12584, 67193, 84144, 31396, 7863, 143011, 69629,\n 63112, 9454, 28666, 65798, 46372, 134721, 6314, 51402, 30837, 151922, 2847, 38676, 38008, 92823, 136245, 17540,\n 5504, 109295, 205242, 37606, 5211, 214892, 1586, 20670, 208711, 137743, 19328, 40652, 16995, 20023, 14657, 154919,\n 34422, 12996, 13918, 38221, 47690, 16398, 2959, 37680, 89122, 6721, 198469, 91876, 172043, 83898, 101992, 26084,\n 94570, 3635, 76958, 22853, 76497, 38266, 176590, 168403, 44464, 142840, 79180, 184594, 1984, 41806, 83147, 11985,\n 6546, 366068, 59732, 24533, 271505, 8736, 39084, 222992, 93429, 28962, 58985, 86665, 8432, 30028, 14548, 32439,\n 54424, 165029, 55175, 27458, 69046, 121277, 46168, 33732, 20661, 24581, 135574, 123110, 37556, 79260, 72611, 16957,\n 12939, 46162, 58238, 44907, 72936, 253758, 41324, 32518, 96480, 11949, 124438, 65280, 43256, 34107, 53533, 43531,\n 37037, 28366, 45970, 32741, 173438, 6121, 194202, 62969, 26355, 30314, 58370, 28455, 1848, 50519, 82830, 90393,\n 21761, 295490, 10936, 256940, 133568, 44050, 20269, 4089, 27457, 21610, 219460, 36743, 14821, 101388, 52005, 13124,\n 30979, 140816, 167362, 26054, 18458, 60789, 34917, 40447, 26606, 33422, 9066, 3452, 83614, 5761, 20263, 137238,\n 25038, 91310, 101, 52322, 74548, 42572, 38084, 214054, 186568, 31802, 17665, 30620, 141936, 37730, 14420, 4265,\n 187218, 49640, 188208, 51441, 55388, 96452, 66659, 40869, 42039, 60967, 221027, 19234, 178581, 29105, 96050, 9165,\n 196118, 157335, 3738, 40354, 117436, 2965, 34136, 59659, 15570, 50843, 230035, 31444, 71260, 43886, 18316, 5387,\n 38500, 168508, 17406, 32174, 8828, 103373, 143806, 90367, 3560, 18719, 122310, 16508, 26719, 2541, 105429, 6645,\n 37998, 73190, 10591, 235916, 49737, 87112, 233941, 53188, 32193, 79154, 4544, 52905, 126477, 7580, 63501, 57314,\n 3216, 31337, 6541, 103083, 60846, 49, 9756, 15481, 1355, 43840, 14319, 13743, 27486, 10222, 73114, 230718,\n 418644, 16706, 6674, 279748, 23058, 45273, 295831, 86306, 2743, 5535, 88773, 21829, 35253, 120938, 31153, 3169,\n 16839, 42847, 8751, 80974, 33942, 36867, 35514, 16485, 26474, 77775, 56877, 5391, 48346, 3882, 108713, 31403,\n 27804, 55248, 26235, 43821, 136104, 40118, 175507, 28034, 203908, 18732, 1788, 34030, 106427, 36958, 54359, 7251,\n 44936, 15356, 69139, 455, 157915, 22173, 140291, 50348, 43275, 82066, 49621, 54952, 15216, 36226, 96695, 66855,\n 6936, 1987, 8227, 196087, 4631, 68827, 99004, 47541, 110265, 17953, 147605, 110242, 58520, 31312, 38724, 329975,\n 642, 3155, 34497, 75937, 6207, 73843, 6120, 17249, 51429, 117746, 3218, 910, 68961, 319671, 14938, 29555,\n 34700, 1649, 66673, 72268, 9655, 76800, 153087, 6941, 210168, 27130, 35398, 1780, 73242, 3135, 56689, 19556,\n 165307, 8765, 35967, 121458, 13333, 70453, 17350, 117253, 22265, 13340, 44265, 39869, 441, 3742, 135025, 23581,\n 33309, 16543, 17731, 13291, 157637, 283005, 21408, 101360, 63887, 52312, 83873, 5338, 233779, 23759, 186949, 34531,\n 177320, 38069, 156465, 91004, 19353, 59852, 68160, 14891, 1338, 1072, 29823, 1950, 28901, 81407, 313445, 73038,\n 84807, 162348, 240257, 37162, 138934, 16111, 58013, 41253, 102951, 16457, 96056, 19541, 56402, 67217, 41638, 94381,\n 89674, 29481, 37456, 80815, 151579, 13937, 13683, 132537, 19699, 134545, 67020, 29816, 222341, 141235, 427578, 48868,\n 129557, 233342, 23077, 87871, 16213, 18728, 16184, 9469, 37913, 19680, 2798, 171356, 178328, 13216, 50049, 72690,\n 71904, 124644, 55455, 7504, 29052, 41036, 266546, 19899, 30391, 188755, 8659, 59469, 16, 104298, 112943, 53865,\n 76203, 138226, 68857, 139953, 14125, 107625, 119795, 173133, 4398, 50273, 48808, 54390, 16466, 122086, 31835, 67035,\n 50971, 48859, 7508, 46427, 66477, 73021, 84615, 39985, 83076, 46779, 201569, 53336, 36443, 60865, 168164, 143810,\n 51393, 25548, 169307, 32896, 24485, 38424, 21837, 29087, 275813, 51674, 6714, 64883, 46169, 187369, 55186, 76192,\n 12852, 12018, 62134, 31067, 118303, 16542, 12125, 10579, 4928, 26291, 43854, 7091, 10946, 253716, 109062, 39283,\n 17261, 113012, 258512, 47764, 125126, 32646, 55892, 80279, 201623, 149872, 3192, 385, 1208, 48750, 5376, 58738,\n 22335, 5427, 82416, 47811, 32435, 143086, 38930, 94128, 59975, 156037, 37977, 38224, 62485, 7698, 50405, 71027,\n 16462, 21559, 136153, 34131, 107506, 162069, 63703, 3101, 215029, 40407, 4178, 3774, 9187, 80019, 17880, 97926,\n 67579, 2600, 18405, 8351, 47924, 86638, 70820, 92206, 86453, 29610, 42241, 119200, 3198, 15466, 67813, 57863,\n 35454, 4779, 99518, 4649, 104641, 144269, 33730, 38073, 65864, 6838, 109456, 193298, 154007, 5623, 45741, 30846,\n 182578, 25573, 157224, 1543, 58575, 138703, 146140, 44971, 49356, 18275, 59064, 20300, 13122, 11848, 24453, 11973,\n 9797, 86843, 2919, 25530, 49210, 1130, 161220, 76788, 75373, 85604, 34926, 36014, 17777, 17255, 51533, 11676,\n 92226, 51845, 119859, 21525, 5936, 18507, 28050, 1140, 31418, 14857, 34207, 47859, 10750, 36382, 32079, 106909,\n 59426, 87757, 38393, 110042, 15965, 97104, 33757, 35344, 97993, 53979, 33651, 45407, 41884, 82515, 173089, 7177,\n 58371, 35365, 47543, 51927, 35587, 10670, 23544, 29306, 84233, 39976, 76076, 62097, 9007, 8668, 28119, 78281,\n 120790, 19835, 143020, 54968, 18670, 64959, 20649, 34469, 42570, 33001, 136570, 87796, 120044, 1106, 58700, 63951,\n 127623, 12805, 83057, 40212, 31773, 49850, 7361, 54336, 347524, 101314, 23751, 19569, 48791, 29174, 49369, 20467,\n 7465, 75842, 38281, 623, 112457, 60210, 28849, 51003, 94720, 6426, 90047, 85560, 43761, 3579, 85105, 34607,\n 90410, 118528, 7224, 42907, 111163, 18168, 6960, 161135, 191298, 5247, 100584, 127552, 171568, 20121, 91173, 12636,\n 54615, 20199, 63730, 98105, 2396, 40387, 14438, 125012, 4765, 33235, 12865, 45299, 37728, 82098, 77872, 114037,\n 59253, 19675, 24838, 398016, 102561, 11446, 17069, 57508, 178277, 65836, 99941, 26114, 2585, 271882, 136866, 50126,\n 11027, 155648, 118367, 14585, 8910, 123015, 335383, 40434, 41016, 53021, 14439, 87098, 176860, 201543, 121888, 2358,\n 9286, 5739, 22666, 54270, 37884, 169381, 33984, 93859, 16124, 89364, 72207, 51639, 76366, 99029, 65812, 2198,\n 12147, 174891, 194289, 6986, 30252, 88822, 21284, 11445, 288337, 160821, 33034, 100869, 43852, 25761, 52882, 1144,\n 103809, 1924, 84458, 86079, 43411, 13542, 139276, 18141, 34978, 41298, 7276, 26481, 173800, 33210, 17951, 142652,\n 33616, 33677, 2210, 19941, 98568, 2486, 192414, 80136, 12058, 235883, 50963, 249638, 29572, 27221, 47034, 6124,\n 72107, 63346, 97620, 158513, 299699, 40388, 23235, 37176, 224244, 198386, 121323, 67992, 23827, 63170, 17838, 106622,\n 158590, 26807, 5345, 23489, 91891, 55474, 74834, 37981, 13058, 5977, 72552, 34706, 26828, 145172, 19904, 21367,\n 34043, 960, 77092, 91381, 4733, 47446, 7680, 41697, 5170, 16960, 14741, 46101, 13656, 473, 51842, 37433,\n 11103, 11551, 121951, 13191, 97536, 165932, 50397, 51628, 129028, 9069, 44885, 6590, 59195, 47045, 32940, 225472,\n 90345, 21833, 13303, 29407, 96615, 141951, 5198, 6028, 18395, 7181, 3861, 14966, 156358, 167182, 36529, 55253,\n 25942, 173153, 30959, 27261, 50691, 150176, 162201, 38467, 48462, 80602, 42163, 118482, 168, 108756, 26011, 17166,\n 54149, 456538, 22512, 91374, 13816, 90358, 131615, 18132, 226707, 1824, 28139, 26860, 42253, 93877, 77351, 65575,\n 8980, 80574, 22020, 27948, 40422, 91324, 76376, 13528, 39281, 91685, 82215, 122541, 144066, 1983, 193851, 17283,\n 26320, 2739, 194978, 4790, 26845, 42627, 61300, 65815, 174612, 55133, 4200, 191130, 79771, 158321, 52280, 166796,\n 221620, 62461, 11278, 4067, 88152, 83409, 31717, 121367, 13522, 47325, 37945, 10406, 174348, 249321, 154101, 64912,\n 29938, 51775, 17220, 15776, 166138, 78890, 84425, 54121, 42861, 16368, 24572, 291647, 10197, 32073, 22651, 11677,\n 97509, 26952, 35787, 18424, 41910, 71614, 94977, 72318, 41594, 70024, 275419, 37702, 60199, 7335, 39107, 61315,\n 18271, 18394, 33768, 87884, 104277, 123724, 7277, 56288, 71981, 189803, 49320, 3352, 6798, 14240, 8954, 69220,\n 94433, 57372, 28620, 68863, 193727, 85575, 42309, 41667, 67689, 42081, 22543, 44824, 12719, 28540, 114236, 101553,\n 27638, 27296, 4300, 5353, 4663, 19379, 94098, 3758, 95888, 95144, 80344, 87320, 28447, 259518, 12718, 71391,\n 152731, 37063, 24132, 31911, 104896, 15672, 103782, 1521, 4945, 72541, 23717, 122632, 15619, 87175, 206120, 29428,\n 189780, 61416, 28350, 44457, 972, 1175, 47233, 198738, 95789, 41907, 21953, 97034, 59341, 22864, 53713, 16873,\n 32971, 20693, 20954, 31336, 21477, 16169, 38370, 16412, 9019, 3841, 24599, 21938, 17085, 6484, 81198, 76413,\n 5849, 72514, 12320, 65247, 276175, 37234, 59796, 52642, 16312, 57349, 198507, 94148, 46134, 18958, 125552, 1747,\n 18725, 151873, 14901, 5490, 68287, 29470, 3689, 64794, 40814, 26018, 25692, 54450, 2703, 88278, 124886, 173087,\n 174000, 24159, 179477, 24276, 46004, 201876, 209202, 445, 52876, 31948, 30206, 157610, 39180, 18439, 44124, 50469,\n 5774, 96278, 222758, 200216, 50290, 45486, 20435, 46986, 46276, 140133, 142326, 15569, 13363, 47522, 92583, 2182,\n 7135, 16853, 22998, 30272, 4952, 63263, 35623, 39096, 53789, 44864, 20053, 110392, 124213, 4630, 16087, 28221,\n 127787, 25839, 77481, 44693, 13464, 113146, 6983, 27069, 55717, 50102, 4760, 7107, 26186, 66507, 59145, 36032,\n 104182, 71328, 29425, 64317, 50781, 47465, 94298, 69706, 74899, 22754, 120756, 25108, 93077, 56834, 73286, 39928,\n 16218, 41699, 176763, 7555, 70819, 50083, 26895, 23315, 26014, 16773, 123079, 41712, 5719, 31516, 90427, 158540,\n 85051, 183128, 40864, 27505, 55392, 9058, 45224, 96857, 30901, 136622, 96557, 56304, 120061, 11501, 151448, 5773,\n 89743, 7769, 86069, 2935, 18471, 41628, 10114, 33660, 110170, 49479, 26745, 92846, 33221, 26731, 18795, 87076,\n 8550, 2100, 29972, 120289, 3077, 72490, 33784, 2630, 208722, 50861, 63483, 79029, 6419, 39467, 14302, 45286,\n 64207, 9686, 67513, 44170, 1050, 77246, 59266, 17055, 53801, 7150, 11111, 42432, 4278, 94579, 362117, 36175,\n 42902, 41933, 39002, 98489, 22913, 74161, 84773, 57036, 17556, 162288, 74485, 178760, 93867, 73635, 128860, 50362,\n 261, 67455, 80001, 46080, 35662, 4368, 25247, 19230, 74393, 22588, 1822, 27682, 235324, 13798, 85998, 13194,\n 235067, 23514, 71669, 147632, 23191, 134748, 214683, 105101, 1518, 25489, 247114, 7380, 54842, 26922, 3971, 26361,\n 20844, 68642, 170517, 77339, 123255, 8963, 77818, 150998, 48466, 36806, 2732, 23261, 11741, 236162, 18243, 126216,\n 28690, 50546, 16385, 92760, 197383, 246558, 201295, 88255, 67588, 71687, 176076, 172653, 169058, 33906, 63747, 24835,\n 157621, 43338, 30050, 46152, 132741, 2770, 51371, 94835, 6614, 15112, 11749, 56936, 1250, 19027, 399017, 58036,\n 100215, 23388, 55815, 308768, 124152, 94803, 9521, 64186, 8971, 28, 30427, 62163, 7616, 103838, 35079, 29203,\n 131235, 7743, 17389, 10882, 37420, 61460, 228512, 85363, 41581, 131077, 62822, 119647, 10130, 54445, 26925, 19968,\n 29016, 24446, 74028, 24176, 61448, 67185, 9254, 8563, 119129, 9771, 99184, 37716, 39514, 10532, 221512, 258753,\n 218630, 55980, 23394, 32141, 61924, 66749, 32411, 3741, 36475, 26678, 77010, 44946, 91203, 128749, 116953, 20476,\n 49625, 53116, 13735, 102335, 29376, 51946, 83407, 67892, 59212, 34685, 21083, 1546, 112982, 32972, 74397, 1078,\n 190545, 16082, 86140, 58591, 89611, 101531, 10061, 105104, 76319, 20035, 17551, 52611, 169061, 190842, 100780, 23907,\n 90413, 115619, 9675, 34710, 193435, 49443, 129734, 11183, 258877, 16318, 136182, 126808, 44635, 27304, 192375, 2599,\n 125648, 47051, 12091, 23814, 721, 58800, 40137, 66726, 97930, 60877, 74487, 7942, 54326, 9841, 41428, 13762,\n 8211, 85383, 6950, 99177, 79806, 201786, 296464, 124087, 13144, 29741, 41721, 47634, 55088, 254286, 106408, 17041,\n 99064, 12942, 64086, 45233, 14005, 2612, 55827, 255, 7984, 13980, 38574, 12776, 46654, 73499, 249951, 2101,\n 26676, 25996, 132326, 116415, 119062, 50449, 31033, 23038, 11589, 179252, 20007, 14860, 129270, 21143, 17796, 144715,\n 60106, 70758, 69842, 34674, 282133, 44014, 16774, 57268, 38528, 24053, 46373, 201667, 28327, 471023, 51889, 102667,\n 21193, 114909, 84132, 69317, 96723, 67969, 16134, 68145, 15058, 28765, 32035, 2524, 101089, 98664, 25045, 76571,\n 14957, 86040, 118506, 262428, 154764, 81573, 39681, 283900, 73287, 127825, 544, 80448, 52347, 38512, 175971, 15180,\n 45467, 33086, 46552, 48894, 81107, 43213, 36672, 54025, 76703, 8053, 7608, 13299, 56619, 20752, 238099, 54164,\n 105133, 1444, 32942, 953, 37564, 8000, 66316, 119463, 106817, 404, 13667, 149108, 128597, 31267, 10269, 49836,\n 106150, 1484, 52330, 76965, 160486, 171648, 38456, 31263, 22424, 37738, 66245, 67467, 143369, 60471, 75610, 20895,\n 115528, 86070, 60854, 40796, 49347, 18989, 15030, 11371, 37578, 15779, 79867, 10187, 86462, 46402, 155626, 93200,\n 40229, 7090, 57547, 108053, 99598, 11088, 47505, 41218, 206017, 2173, 20988, 30219, 22919, 80563, 57566, 42369,\n 93141, 41675, 2407, 182519, 120495, 27154, 16702, 29456, 14349, 7958, 16688, 117177, 140375, 42467, 261919, 74916,\n 153569, 10836, 34742, 49526, 7621, 105997, 12212, 2270, 392377, 7755, 17959, 25086, 232152, 138791, 33847, 13860,\n 35316, 5811, 1344, 71259, 50452, 207539, 92635, 50359, 5821, 33674, 30255, 2086, 2587, 96264, 17543, 42,\n 6029, 9580, 43007, 139248, 82831, 12917, 29607, 25786, 51467, 42137, 85161, 100698, 31561, 88989, 121990, 278500,\n 3602, 109344, 37982, 15279, 116442, 28936, 30880, 87894, 58079, 128661, 126731, 67392, 28051, 146885, 4861, 16216,\n 97344, 42827, 147561, 153948, 22684, 21335, 47685, 1853, 43349, 15185, 59642, 10229, 25520, 187921, 108972, 5579,\n 98037, 24945, 6697, 19193, 63734, 137934, 75056, 89740, 19767, 224268, 56138, 63643, 151661, 39313, 70618, 84031,\n 89723, 84074, 13703, 85626, 35460, 8867, 64845, 3439, 57906, 99776, 63968, 49270, 81130, 34356, 16210, 23547,\n 36446, 34090, 140028, 72439, 2221, 22163, 57058, 363492, 113754, 18913, 95451, 48663, 54464, 54037, 176097, 68425,\n 3023, 34906, 29482, 117389, 341780, 80431, 58330, 16753, 92616, 60907, 94846, 147486, 4498, 48646, 7773, 46801,\n 7778, 18946, 464978, 47558, 33223, 177444, 7328, 15626, 63337, 94700, 11743, 9351, 255024, 39098, 16447, 42647,\n 96230, 39769, 58840, 10068, 63439, 35800, 65843, 58823, 413844, 9156, 51258, 7434, 61791, 85018, 6872, 3692,\n 28096, 7121, 33024, 6009, 75532, 31997, 192535, 9661, 3304, 9547, 14753, 31987, 25314, 55689, 15896, 20430,\n 39472, 31340, 99744, 25398, 115569, 54883, 28719, 205423, 23071, 57855, 64638, 149867, 25671, 82403, 37616, 20668,\n 39989, 77996, 74948, 140555, 175248, 64810, 36515, 46595, 4958, 248773, 24045, 28728, 136673, 168704, 20804, 114833,\n 100325, 27135, 21205, 96151, 153134, 45992, 7093, 13992, 76047, 1980, 19432, 145001, 75159, 87462, 17710, 1013,\n 45556, 34297, 144882, 20648, 26061, 11319, 129567, 108555, 18872, 464580, 33386, 22717, 65948, 167189, 5603, 135042,\n 79542, 8801, 202632, 18114, 91882, 5973, 5239, 67315, 4431, 60916, 47819, 71693, 32597, 32606, 18183, 45072,\n 80329, 76385, 24749, 51305, 40314, 156514, 14693, 130345, 13168, 66214, 18029, 12858, 34801, 27628, 14544, 10823,\n 40522, 40185, 33739, 148694, 23548, 9923, 61012, 28859, 17933, 19442, 34364, 99849, 164107, 141167, 30629, 21054,\n 6744, 36491, 8096, 42474, 41706, 155060, 30650, 10600, 163442, 1143, 96655, 61390, 52359, 7559, 51568, 64256,\n 203854, 4467, 22453, 14504, 436398, 7878, 6980, 8293, 63610, 293747, 16167, 35763, 19627, 147603, 15419, 18032,\n 110744, 51346, 33681, 54571, 40472, 48615, 39073, 21604, 13754, 173027, 92560, 11083, 47299, 63062, 11813, 52007,\n 29883, 9734, 139722, 15953, 1550, 20651, 13616, 49306, 16113, 90089, 92326, 7584, 30712, 72424, 164858, 6831,\n 152871, 55746, 197721, 34167, 196442, 6022, 112107, 55215, 7538, 123381, 4920, 43539, 77165, 8939, 50392, 34192,\n 20225, 79762, 22505, 58667, 40770, 29788, 97180, 82835, 4568, 8579, 13273, 363569, 35898, 49983, 436, 36598,\n 3237, 131691, 62418, 35591, 8101, 4073, 379438, 65218, 76072, 33887, 2968, 27573, 212619, 288680, 68278, 72851,\n 150504, 217896, 6913, 121339, 22017, 35340, 51072, 43616, 75043, 31437, 10833, 81487, 4364, 22968, 41454, 106687,\n 85446, 19863, 109625, 149241, 524, 141850, 214404, 54376, 657, 237023, 9401, 108137, 53800, 32474, 49712, 53334,\n 126876, 27337, 45552, 177696, 8269, 15036, 12097, 42240, 2328, 125374, 119295, 99715, 2500, 19624, 39441, 27220,\n 102691, 60957, 94543, 39101, 18566, 67362, 13975, 78230, 25017, 34017, 239007, 90027, 39351, 41681, 35354, 43822,\n 1043, 916, 58587, 141983, 94818, 38799, 75459, 41114, 67432, 16195, 36606, 59568, 22272, 126769, 31424, 68659,\n 12287, 134302, 257977, 5756, 207285, 95637, 47248, 117689, 19583, 77451, 22373, 12200, 54993, 117118, 34244, 29386,\n 34562, 53819, 71267, 64172, 77665, 49368, 7716, 59301, 25749, 45426, 194789, 17297, 2650, 1766, 32501, 45198,\n 20403, 20984, 6600, 14171, 94604, 19037, 5402, 29896, 9938, 59935, 109708, 88081, 145182, 44844, 39167, 352626,\n 164173, 35374, 45982, 6122, 154, 73419, 220487, 53834, 53601, 17992, 8609, 229321, 5610, 68098, 66815, 71012,\n 95069, 140968, 27396, 8957, 134489, 24656, 86659, 56598, 134852, 17316, 123838, 255436, 6613, 41610, 138033, 81452,\n 32023, 32396, 123687, 63398, 8693, 29712, 30407, 19296, 121188, 3551, 36099, 20032, 111948, 56624, 16547, 27453,\n 35916, 15378, 52039, 56849, 13489, 22214, 73177, 53097, 277349, 2157, 14029, 187886, 10260, 141743, 246460, 91880,\n 50869, 3788, 49486, 133566, 54950, 33120, 129337, 53768, 18333, 9525, 26902, 312251, 10297, 9020, 70759, 16647,\n 112432, 59260, 84609, 9818, 82766, 73569, 468, 46001, 75780, 55028, 52106, 11498, 43645, 108069, 17150, 17753,\n 29417, 16705, 31799, 9606, 289, 122254, 115975, 8620, 6133, 255357, 56908, 14456, 133464, 43554, 79224, 11247,\n 29630, 160, 12756, 25464, 65960, 350428, 62521, 321796, 100359, 67358, 35169, 46172, 113128, 48988, 88868, 31094,\n 33266, 6847, 60887, 98188, 49659, 69117, 92977, 220228, 13947, 80181, 35103, 62170, 97351, 13475, 2440, 199768,\n 19498, 36597, 46971, 25234, 67806, 62881, 84717, 73648, 181966, 10488, 94149, 21550, 26655, 63436, 48375, 14405,\n 165650, 9621, 24439, 28043, 42735, 4490, 29963, 56674, 45373, 1934, 262446, 50855, 67098, 26898, 5261, 52696,\n 40644, 33900, 9440, 180286, 87162, 22940, 19704, 26936, 69769, 10254, 101759, 27406, 12243, 48000, 73926, 113215,\n 54935, 5726, 192787, 4312, 106216, 9366, 11550, 52949, 23457, 212271, 277152, 133895, 108374, 6191, 96477, 29980,\n 218916, 58024, 54696, 40853, 91124, 65894, 91170, 65908, 252552, 6793, 29212, 15389, 44516, 122515, 52617, 35058,\n 9017, 103536, 39510, 49136, 19242, 130652, 662077, 74699, 47024, 31422, 8517, 73351, 24399, 13867, 128360, 4810,\n 4434, 61779, 111983, 61036, 17798, 110240, 59722, 102960, 39688, 10001, 23803, 23039, 176498, 56659, 44814, 134295,\n 17188, 77577, 74466, 226175, 102472, 154333, 63900, 111747, 18062, 41171, 79669, 32773, 408933, 42562, 28931, 30907,\n 107388, 43487, 2946, 240310, 23938, 24354, 319, 184983, 7927, 6488, 1422, 10790, 68809, 68209, 64775, 4361,\n 202, 17123, 59634, 51200, 44391, 18188, 17843, 2619, 74278, 3230, 9540, 47187, 21702, 36274, 56894, 43907,\n 16310, 34790, 16866, 6150, 5561, 13587, 107545, 108873, 126867, 86986, 28640, 33427, 19017, 5762, 80637, 17430,\n 46903, 2047, 131055, 25958, 13558, 5444, 47152, 13900, 44563, 122857, 45348, 70863, 39593, 54332, 38068, 33637,\n 318, 40310, 143467, 18502, 24520, 11377, 62013, 28942, 27246, 28269, 83545, 17999, 59015, 90707, 30065, 15161,\n 34720, 1263, 37008, 2012, 6060, 98575, 92933, 5721, 299, 199555, 24578, 29223, 2985, 743, 115825, 109523,\n 136657, 47454, 26378, 53586, 3733, 174945, 93340, 244456, 5693, 37386, 28782, 89767, 27545, 23573, 18798, 136425,\n 34320, 84778, 20041, 48453, 38215, 7477, 71958, 40621, 8773, 5874, 187927, 105965, 51100, 43533, 18083, 8443,\n 10180, 43597, 2003, 183999, 69689, 12216, 129696, 146188, 62389, 34044, 68410, 12765, 43273, 26949, 266807, 3345,\n 34477, 79197, 5688, 47539, 213110, 21634, 22257, 50092, 32222, 42346, 39530, 63668, 98, 134978, 74022, 5152,\n 59088, 174145, 37220, 9934, 9545, 118937, 5724, 87240, 19875, 15784, 40143, 23263, 87513, 181654, 285152, 37881,\n 263241, 4966, 43934, 10433, 186657, 6470, 74416, 225854, 25908, 142677, 246262, 32280, 6192, 75890, 45546, 143264,\n 135305, 29742, 47013, 77787, 11732, 126658, 8763, 37950, 21806, 57557, 113464, 89465, 108995, 164574, 23894, 22996,\n 23169, 15369, 23117, 17642, 130607, 40503, 36239, 280990, 44666, 9981, 40427, 147487, 26869, 168452, 32886, 32991,\n 46798, 240839, 15111, 70502, 65697, 88548, 44145, 28701, 48767, 31139, 206777, 35659, 181164, 166262, 14554, 171445,\n 31786, 66523, 76607, 17956, 6507, 31279, 90476, 116611, 167918, 6560, 1243, 115324, 80128, 41867, 55897, 187323,\n 37069, 32596, 189444, 145931, 13390, 105530, 65709, 26805, 6999, 55714, 41300, 22915, 68951, 22138, 21120, 22264,\n 10058, 19945, 33635, 56123, 99085, 10032, 5818, 6016, 46649, 57476, 35264, 94413, 112522, 262288, 93686, 83038,\n 14341, 23204, 28807, 66084, 77987, 6101, 126673, 7133, 38126, 5923, 122091, 170240, 97772, 46874, 215746, 43948,\n 41622, 3272, 55596, 8332, 146411, 251315, 13533, 8561, 81521, 115449, 48616, 175175, 2063, 186556, 3036, 134537,\n 75772, 29728, 82360, 22973, 186559, 86348, 89100, 38388, 82297, 45610, 2613, 87082, 9986, 177812, 57884, 23591,\n 47485, 42543, 33582, 44713, 74439, 257444, 252451, 31825, 35631, 38540, 33066, 5147, 13973, 4343, 51830, 70378,\n 22827, 26448, 95560, 36896, 241741, 48067, 203953, 298860, 61620, 20450, 3220, 67272, 6586, 107662, 100160, 108684,\n 6929, 57226, 4762, 7457, 1320, 40404, 77204, 99309, 62750, 208653, 59977, 44000, 74315, 34332, 5819, 172217,\n 64904, 114077, 18147, 84012, 1791, 98456, 90930, 21446, 116669, 103938, 7422, 85140, 59713, 5768, 326211, 16239,\n 75411, 13229, 29398, 10758, 236107, 1539, 112472, 95979, 152154, 151294, 306, 21196, 38146, 10700, 6891, 84282,\n 109646, 56492, 40539, 6589, 119491, 51354, 30685, 140209, 136906, 29622, 73617, 49553, 70525, 51671, 166869, 139616,\n 74395, 37439, 49595, 45678, 11959, 33211, 86560, 52434, 9282, 62690, 112155, 130810, 5243, 108261, 99970, 265613,\n 72551, 80049, 6391, 33365, 90721, 66737, 69872, 87011, 1860, 9032, 112544, 60905, 37371, 89015, 140351, 19076,\n 850, 373531, 2802, 36725, 218795, 72062, 28990, 16550, 24614, 7815, 6187, 26336, 33373, 32162, 42791, 73555,\n 32062, 23386, 10244, 56392, 49442, 27076, 136262, 12412, 14883, 1134, 33675, 97153, 199281, 15608, 100152, 74072,\n 47942, 254301, 36451, 16026, 10687, 65067, 56708, 254030, 30290, 50490, 13864, 57941, 259331, 35588, 23485, 43486,\n 24869, 21620, 92971, 22072, 88645, 1048, 182050, 13343, 32452, 14825, 19509, 3325, 216938, 45740, 99716, 189082,\n 53740, 78245, 25609, 24311, 176777, 47340, 308354, 40669, 66085, 14102, 125339, 9225, 128709, 97207, 1271, 200933,\n 78439, 113451, 88975, 18324, 46521, 11819, 18570, 141756, 72512, 170020, 52754, 63550, 118515, 103073, 93330, 32736,\n 50499, 14722, 31600, 68452, 398867, 29316, 172786, 18417, 104924, 2606, 5670, 84818, 16288, 67106, 59580, 82929,\n 607401, 291, 85829, 359, 15897, 35830, 50696, 65630, 52672, 22115, 356968, 29895, 40837, 231192, 34024, 38957,\n 26722, 406, 23335, 124952, 72068, 68804, 13268, 147101, 164740, 276569, 162596, 66943, 11569, 26654, 66358, 4777,\n 23229, 102127, 5848, 978, 2921, 59666, 5371, 28212, 90108, 42938, 39320, 2499, 4271, 108792, 33510, 125072,\n 71653, 65239, 38250, 66357, 38577, 13964, 86251, 35708, 50755, 36010, 29448, 12209, 3844, 38222, 206337, 100876,\n 67827, 137088, 14167, 252225, 84163, 195270, 1306, 5703, 54198, 779, 46802, 22028, 51124, 86759, 70560, 113164,\n 35685, 162145, 45471, 34561, 422, 2611, 6464, 47486, 19223, 38246, 9191, 18331, 89942, 243642, 212364, 15893,\n 17518, 22617, 6409, 30046, 126182, 59716, 36560, 104428, 18846, 26592, 19458, 50793, 147333, 30826, 1388, 27647,\n 10922, 14495, 33545, 19269, 135828, 39727, 41601, 46931, 233379, 49169, 131130, 182112, 16276, 82381, 118209, 142445,\n 128310, 19672, 28740, 82907, 33436, 3118, 102206, 28723, 24819, 41937, 38854, 5157, 3881, 111491, 1142, 9776,\n 421673, 152241, 29309, 14961, 87854, 6054, 15424, 3796, 82656, 54996, 2108, 55367, 239450, 154525, 9643, 118103,\n 106041, 64601, 68549, 48707, 30266, 25772, 18740, 9462, 229669, 91798, 112152, 191327, 14493, 72828, 8175, 66636,\n 236474, 25817, 87351, 129027, 76653, 20422, 22983, 71240, 27846, 44661, 12399, 46158, 77704, 53101, 35032, 11072,\n 17300, 109294, 33638, 24408, 1895, 11241, 760, 17584, 82479, 125877, 63150, 141075, 34259, 23274, 81698, 15732,\n 43577, 48340, 91584, 14688, 16379, 24481, 150280, 96420, 262050, 48635, 43727, 61819, 56268, 72003, 88178, 17281,\n 79912, 13218, 122519, 125295, 166396, 11811, 2171, 118930, 67746, 17636, 178278, 174656, 95661, 173039, 83845, 79689,\n 17473, 98555, 127696, 203415, 54730, 22925, 232239, 9309, 12136, 175026, 20740, 180188, 10747, 39816, 314017, 266131,\n 10040, 175732, 112550, 220651, 31974, 37393, 888, 23008, 86799, 4303, 64905, 148467, 75337, 251, 3284, 370102,\n 50264, 9835, 5438, 23655, 4481, 29851, 329, 12855, 7162, 64931, 78141, 12804, 42372, 296771, 83547, 18624,\n 34874, 86271, 3360, 48665, 77735, 88767, 11463, 63527, 28889, 22258, 29140, 194315, 113924, 25499, 6406, 31334,\n 1845, 4802, 49184, 43455, 35469, 127594, 92970, 61038, 115005, 38840, 87761, 106838, 8811, 20572, 55637, 11162,\n 96721, 132425, 108925, 2948, 125457, 36356, 3502, 75270, 27622, 127192, 2561, 123095, 49394, 61155, 16897, 110064,\n 9699, 89448, 53356, 19628, 220310, 21622, 83036, 9885, 112214, 6087, 26713, 17901, 161912, 91492, 3440, 68594,\n 9266, 92238, 8087, 6866, 150194, 72175, 80701, 13459, 31836, 43243, 239700, 95846, 44749, 50647, 21945, 230538,\n 120612, 132371, 244604, 5193, 105637, 34661, 41341, 68775, 85393, 1874, 8771, 33718, 49672, 77403, 595452, 99507,\n 6490, 58895, 128742, 7704, 39239, 73217, 43816, 62824, 37804, 199976, 22361, 80005, 87514, 94832, 14089, 4574,\n 139975, 59142, 75523, 100268, 43906, 53442, 15152, 2547, 186002, 17011, 19513, 204282, 3343, 60568, 128318, 119250,\n 4298, 51871, 41336, 71759, 21921, 45074, 98169, 145889, 99427, 11350, 1237, 5520, 28799, 7803, 53702, 21026,\n 136352, 38293, 128690, 12158, 90132, 44600, 10184, 26957, 39459, 126025, 78904, 82999, 59373, 39301, 150198, 120529,\n 153042, 20177, 50089, 14764, 271571, 30530, 123161, 38975, 101562, 22941, 5648, 124654, 109243, 69817, 71675, 49162,\n 106884, 21241, 107795, 30258, 16572, 188262, 141456, 7688, 60718, 8271, 11044, 32440, 104608, 103419, 236109, 93156,\n 43293, 128929, 42107, 67180, 25201, 115254, 185488, 130954, 72813, 167547, 20537, 39969, 38432, 22582, 184022, 1139,\n 27199, 5655, 17767, 97412, 122606, 209377, 27070, 35871, 326617, 188954, 42680, 73512, 80911, 22629, 3011, 95021,\n 315242, 157737, 383, 41821, 41808, 19335, 27950, 15674, 25677, 110950, 35375, 76835, 59108, 57370, 35262, 16569,\n 160415, 37706, 78086, 32041, 49691, 137143, 9782, 172080, 50148, 77917, 6323, 10110, 69172, 17711, 21795, 59511,\n 76184, 135114, 31046, 132319, 59105, 157578, 20549, 80778, 57649, 158421, 65143, 4575, 72235, 21899, 10797, 92745,\n 34035, 106079, 80159, 4508, 78304, 25350, 75457, 46458, 32937, 25623, 47, 8531, 104751, 84953, 8138, 36508,\n 187199, 66310, 115274, 13253, 32461, 38536, 1916, 42007, 187160, 35055, 26325, 84394, 35963, 94216, 45590, 97782\n];\n//# sourceMappingURL=generated-prefix-list-browser.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { setMaxListeners } from '@libp2p/interface';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport length from 'it-length';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { xor as uint8ArrayXor } from 'uint8arrays/xor';\nimport { TABLE_REFRESH_INTERVAL, TABLE_REFRESH_QUERY_TIMEOUT } from '../constants.js';\nimport GENERATED_PREFIXES from './generated-prefix-list.js';\n/**\n * Cannot generate random KadIds longer than this + 1\n */\nconst MAX_COMMON_PREFIX_LENGTH = 15;\n/**\n * A wrapper around `k-bucket`, to provide easy store and\n * retrieval for peers.\n */\nexport class RoutingTableRefresh {\n log;\n peerRouting;\n routingTable;\n refreshInterval;\n refreshQueryTimeout;\n commonPrefixLengthRefreshedAt;\n refreshTimeoutId;\n constructor(components, init) {\n const { peerRouting, routingTable, refreshInterval, refreshQueryTimeout, logPrefix } = init;\n this.log = components.logger.forComponent(`${logPrefix}:routing-table:refresh`);\n this.peerRouting = peerRouting;\n this.routingTable = routingTable;\n this.refreshInterval = refreshInterval ?? TABLE_REFRESH_INTERVAL;\n this.refreshQueryTimeout = refreshQueryTimeout ?? TABLE_REFRESH_QUERY_TIMEOUT;\n this.commonPrefixLengthRefreshedAt = [];\n this.refreshTable = this.refreshTable.bind(this);\n }\n async afterStart() {\n this.log(`refreshing routing table every ${this.refreshInterval}ms`);\n this.refreshTable(true);\n }\n async stop() {\n if (this.refreshTimeoutId != null) {\n clearTimeout(this.refreshTimeoutId);\n }\n }\n /**\n * To speed lookups, we seed the table with random PeerIds. This means\n * when we are asked to locate a peer on the network, we can find a KadId\n * that is close to the requested peer ID and query that, then network\n * peers will tell us who they know who is close to the fake ID\n */\n refreshTable(force = false) {\n this.log('refreshing routing table');\n const prefixLength = this._maxCommonPrefix();\n const refreshCpls = this._getTrackedCommonPrefixLengthsForRefresh(prefixLength);\n this.log(`max common prefix length ${prefixLength}`);\n this.log(`tracked CPLs [ ${refreshCpls.map(date => date.toISOString()).join(', ')} ]`);\n /**\n * If we see a gap at a common prefix length in the Routing table, we ONLY refresh up until\n * the maximum cpl we have in the Routing Table OR (2 * (Cpl+ 1) with the gap), whichever\n * is smaller.\n *\n * This is to prevent refreshes for Cpls that have no peers in the network but happen to be\n * before a very high max Cpl for which we do have peers in the network.\n *\n * The number of 2 * (Cpl + 1) can be proved and a proof would have been written here if\n * the programmer had paid more attention in the Math classes at university.\n *\n * So, please be patient and a doc explaining it will be published soon.\n *\n * https://github.com/libp2p/go-libp2p-kad-dht/commit/2851c88acb0a3f86bcfe3cfd0f4604a03db801d8#diff-ad45f4ba97ffbc4083c2eb87a4420c1157057b233f048030d67c6b551855ccf6R219\n */\n Promise.all(refreshCpls.map(async (lastRefresh, index) => {\n try {\n await this._refreshCommonPrefixLength(index, lastRefresh, force);\n if (this._numPeersForCpl(prefixLength) === 0) {\n const lastCpl = Math.min(2 * (index + 1), refreshCpls.length - 1);\n for (let n = index + 1; n < lastCpl + 1; n++) {\n try {\n await this._refreshCommonPrefixLength(n, lastRefresh, force);\n }\n catch (err) {\n this.log.error(err);\n }\n }\n }\n }\n catch (err) {\n this.log.error(err);\n }\n })).catch(err => {\n this.log.error(err);\n }).then(() => {\n this.refreshTimeoutId = setTimeout(this.refreshTable, this.refreshInterval);\n if (this.refreshTimeoutId.unref != null) {\n this.refreshTimeoutId.unref();\n }\n }).catch(err => {\n this.log.error(err);\n });\n }\n async _refreshCommonPrefixLength(cpl, lastRefresh, force) {\n if (!force && lastRefresh.getTime() > (Date.now() - this.refreshInterval)) {\n this.log('not running refresh for cpl %s as time since last refresh not above interval', cpl);\n return;\n }\n // gen a key for the query to refresh the cpl\n const peerId = await this._generateRandomPeerId(cpl);\n this.log('starting refreshing cpl %s with key %p (routing table size was %s)', cpl, peerId, this.routingTable.size);\n const signal = AbortSignal.timeout(this.refreshQueryTimeout);\n setMaxListeners(Infinity, signal);\n const peers = await length(this.peerRouting.getClosestPeers(peerId.toBytes(), {\n signal\n }));\n this.log(`found ${peers} peers that were close to imaginary peer %p`, peerId);\n this.log('finished refreshing cpl %s with key %p (routing table size is now %s)', cpl, peerId, this.routingTable.size);\n }\n _getTrackedCommonPrefixLengthsForRefresh(maxCommonPrefix) {\n if (maxCommonPrefix > MAX_COMMON_PREFIX_LENGTH) {\n maxCommonPrefix = MAX_COMMON_PREFIX_LENGTH;\n }\n const dates = [];\n for (let i = 0; i <= maxCommonPrefix; i++) {\n // defaults to the zero value if we haven't refreshed it yet.\n dates[i] = this.commonPrefixLengthRefreshedAt[i] ?? new Date();\n }\n return dates;\n }\n async _generateRandomPeerId(targetCommonPrefixLength) {\n if (this.routingTable.kb == null) {\n throw new Error('Routing table not started');\n }\n const randomData = randomBytes(2);\n const randomUint16 = (randomData[1] << 8) + randomData[0];\n const key = await this._makePeerId(this.routingTable.kb.localPeer.kadId, randomUint16, targetCommonPrefixLength);\n return peerIdFromBytes(key);\n }\n async _makePeerId(localKadId, randomPrefix, targetCommonPrefixLength) {\n if (targetCommonPrefixLength > MAX_COMMON_PREFIX_LENGTH) {\n throw new Error(`Cannot generate peer ID for common prefix length greater than ${MAX_COMMON_PREFIX_LENGTH}`);\n }\n const view = new DataView(localKadId.buffer, localKadId.byteOffset, localKadId.byteLength);\n const localPrefix = view.getUint16(0, false);\n // For host with ID `L`, an ID `K` belongs to a bucket with ID `B` ONLY IF CommonPrefixLen(L,K) is EXACTLY B.\n // Hence, to achieve a targetPrefix `T`, we must toggle the (T+1)th bit in L & then copy (T+1) bits from L\n // to our randomly generated prefix.\n const toggledLocalPrefix = localPrefix ^ (0x8000 >> targetCommonPrefixLength);\n // Combine the toggled local prefix and the random bits at the correct offset\n // such that ONLY the first `targetCommonPrefixLength` bits match the local ID.\n const mask = 65535 << (16 - (targetCommonPrefixLength + 1));\n const targetPrefix = (toggledLocalPrefix & mask) | (randomPrefix & ~mask);\n // Convert to a known peer ID.\n const keyPrefix = GENERATED_PREFIXES[targetPrefix];\n const keyBuffer = new ArrayBuffer(34);\n const keyView = new DataView(keyBuffer, 0, keyBuffer.byteLength);\n keyView.setUint8(0, sha256.code);\n keyView.setUint8(1, 32);\n keyView.setUint32(2, keyPrefix, false);\n return new Uint8Array(keyView.buffer, keyView.byteOffset, keyView.byteLength);\n }\n /**\n * returns the maximum common prefix length between any peer in the table\n * and the current peer\n */\n _maxCommonPrefix() {\n // xor our KadId with every KadId in the k-bucket tree,\n // return the longest id prefix that is the same\n let prefixLength = 0;\n for (const length of this._prefixLengths()) {\n if (length > prefixLength) {\n prefixLength = length;\n }\n }\n return prefixLength;\n }\n /**\n * Returns the number of peers in the table with a given prefix length\n */\n _numPeersForCpl(prefixLength) {\n let count = 0;\n for (const length of this._prefixLengths()) {\n if (length === prefixLength) {\n count++;\n }\n }\n return count;\n }\n /**\n * Yields the common prefix length of every peer in the table\n */\n *_prefixLengths() {\n if (this.routingTable.kb == null) {\n return;\n }\n for (const { kadId } of this.routingTable.kb.toIterable()) {\n const distance = uint8ArrayXor(this.routingTable.kb.localPeer.kadId, kadId);\n let leadingZeros = 0;\n for (const byte of distance) {\n if (byte === 0) {\n leadingZeros++;\n }\n else {\n break;\n }\n }\n yield leadingZeros;\n }\n }\n}\n//# sourceMappingURL=refresh.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction baseCache(cid) {\n const baseCache = cache.get(cid);\n if (baseCache == null) {\n const baseCache = new Map();\n cache.set(cid, baseCache);\n return baseCache;\n }\n return baseCache;\n}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\n }\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID() {\n return this;\n }\n // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash;\n const multihash = Digest.create(code, digest);\n return (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\n }\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\n else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value;\n return new CID(version, code, multihash, bytes ?? encodeCID(version, code, multihash.bytes));\n }\n else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\n else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null;\n }\n }\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n }\n else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\n }\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\n }\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction toStringV0(bytes, cache, base) {\n const { prefix } = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nfunction toStringV1(bytes, cache, base) {\n const { prefix } = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction encodeCID(version, code, multihash) {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","import { CodeError } from '@libp2p/interface';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { CID } from 'multiformats/cid';\nexport class AddProviderHandler {\n providers;\n log;\n constructor(components, init) {\n this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:add-provider`);\n this.providers = init.providers;\n }\n async handle(peerId, msg) {\n this.log('start');\n if (msg.key == null || msg.key.length === 0) {\n throw new CodeError('Missing key', 'ERR_MISSING_KEY');\n }\n let cid;\n try {\n // this is actually just the multihash, not the whole CID\n cid = CID.decode(msg.key);\n }\n catch (err) {\n throw new CodeError('Invalid CID', 'ERR_INVALID_CID');\n }\n if (msg.providers == null || msg.providers.length === 0) {\n this.log.error('no providers found in message');\n }\n await Promise.all(msg.providers.map(async (pi) => {\n // Ignore providers not from the originator\n if (!peerId.equals(pi.id)) {\n this.log('invalid provider peer %p from %p', pi.id, peerId);\n return;\n }\n if (pi.multiaddrs.length < 1) {\n this.log('no valid addresses for provider %p. Ignore', peerId);\n return;\n }\n this.log('received provider %p for %s (addrs %s)', peerId, cid, pi.multiaddrs.map((m) => multiaddr(m).toString()));\n await this.providers.addProvider(cid, peerIdFromBytes(pi.id));\n }));\n return undefined;\n }\n}\n//# sourceMappingURL=add-provider.js.map","import { CodeError } from '@libp2p/interface';\nimport { protocols } from '@multiformats/multiaddr';\nimport { equals as uint8ArrayEquals } from 'uint8arrays';\nimport { MessageType } from '../../message/dht.js';\nexport class FindNodeHandler {\n peerRouting;\n peerInfoMapper;\n peerId;\n addressManager;\n log;\n constructor(components, init) {\n const { peerRouting, logPrefix } = init;\n this.log = components.logger.forComponent(`${logPrefix}:rpc:handlers:find-node`);\n this.peerId = components.peerId;\n this.addressManager = components.addressManager;\n this.peerRouting = peerRouting;\n this.peerInfoMapper = init.peerInfoMapper;\n }\n /**\n * Process `FindNode` DHT messages\n */\n async handle(peerId, msg) {\n this.log('incoming request from %p for peers closer to %b', peerId, msg.key);\n if (msg.key == null) {\n throw new CodeError('Invalid FIND_NODE message received - key was missing', 'ERR_INVALID_MESSAGE');\n }\n const closer = await this.peerRouting.getCloserPeersOffline(msg.key, peerId);\n if (uint8ArrayEquals(this.peerId.toBytes(), msg.key)) {\n closer.push({\n id: this.peerId,\n multiaddrs: this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code))\n });\n }\n const response = {\n type: MessageType.FIND_NODE,\n clusterLevel: msg.clusterLevel,\n closer: closer\n .map(this.peerInfoMapper)\n .filter(({ multiaddrs }) => multiaddrs.length)\n .map(peerInfo => ({\n id: peerInfo.id.toBytes(),\n multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)\n })),\n providers: []\n };\n if (response.closer.length === 0) {\n this.log('could not find any peers closer to %b than %p', msg.key, peerId);\n }\n return response;\n }\n}\n//# sourceMappingURL=find-node.js.map","import { CodeError } from '@libp2p/interface';\nimport { CID } from 'multiformats/cid';\nimport { MessageType } from '../../message/dht.js';\nexport class GetProvidersHandler {\n peerRouting;\n providers;\n peerStore;\n peerInfoMapper;\n log;\n constructor(components, init) {\n const { peerRouting, providers, logPrefix } = init;\n this.log = components.logger.forComponent(`${logPrefix}:rpc:handlers:get-providers`);\n this.peerStore = components.peerStore;\n this.peerRouting = peerRouting;\n this.providers = providers;\n this.peerInfoMapper = init.peerInfoMapper;\n }\n async handle(peerId, msg) {\n if (msg.key == null) {\n throw new CodeError('Invalid GET_PROVIDERS message received - key was missing', 'ERR_INVALID_MESSAGE');\n }\n let cid;\n try {\n cid = CID.decode(msg.key);\n }\n catch (err) {\n throw new CodeError('Invalid CID', 'ERR_INVALID_CID');\n }\n this.log('%p asking for providers for %s', peerId, cid);\n const [peers, closer] = await Promise.all([\n this.providers.getProviders(cid),\n this.peerRouting.getCloserPeersOffline(msg.key, peerId)\n ]);\n const providerPeers = await this._getPeers(peers);\n const closerPeers = await this._getPeers(closer.map(({ id }) => id));\n const response = {\n type: MessageType.GET_PROVIDERS,\n key: msg.key,\n clusterLevel: msg.clusterLevel,\n closer: closerPeers\n .map(this.peerInfoMapper)\n .filter(({ multiaddrs }) => multiaddrs.length)\n .map(peerInfo => ({\n id: peerInfo.id.toBytes(),\n multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)\n })),\n providers: providerPeers\n .map(this.peerInfoMapper)\n .filter(({ multiaddrs }) => multiaddrs.length)\n .map(peerInfo => ({\n id: peerInfo.id.toBytes(),\n multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)\n }))\n };\n this.log('got %s providers %s closerPeers', response.providers.length, response.closer.length);\n return response;\n }\n async _getAddresses(peerId) {\n return [];\n }\n async _getPeers(peerIds) {\n const output = [];\n for (const peerId of peerIds) {\n try {\n const peer = await this.peerStore.get(peerId);\n const peerAfterFilter = this.peerInfoMapper({\n id: peerId,\n multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)\n });\n if (peerAfterFilter.multiaddrs.length > 0) {\n output.push(peerAfterFilter);\n }\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n }\n return output;\n }\n}\n//# sourceMappingURL=get-providers.js.map","import { CodeError } from '@libp2p/interface';\nimport { Libp2pRecord } from '@libp2p/record';\nimport { MAX_RECORD_AGE } from '../../constants.js';\nimport { MessageType } from '../../message/dht.js';\nimport { bufferToRecordKey, isPublicKeyKey, fromPublicKeyKey } from '../../utils.js';\nexport class GetValueHandler {\n peerStore;\n datastore;\n peerRouting;\n log;\n constructor(components, init) {\n this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:get-value`);\n this.peerStore = components.peerStore;\n this.datastore = components.datastore;\n this.peerRouting = init.peerRouting;\n }\n async handle(peerId, msg) {\n const key = msg.key;\n this.log('%p asked for key %b', peerId, key);\n if (key == null || key.length === 0) {\n throw new CodeError('Invalid key', 'ERR_INVALID_KEY');\n }\n const response = {\n type: MessageType.GET_VALUE,\n key,\n clusterLevel: msg.clusterLevel,\n closer: [],\n providers: []\n };\n if (isPublicKeyKey(key)) {\n this.log('is public key');\n const idFromKey = fromPublicKeyKey(key);\n let pubKey;\n try {\n const peer = await this.peerStore.get(idFromKey);\n if (peer.id.publicKey == null) {\n throw new CodeError('No public key found in key book', 'ERR_NOT_FOUND');\n }\n pubKey = peer.id.publicKey;\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n if (pubKey != null) {\n this.log('returning found public key');\n response.record = new Libp2pRecord(key, pubKey, new Date()).serialize();\n return response;\n }\n }\n const [record, closer] = await Promise.all([\n this._checkLocalDatastore(key),\n this.peerRouting.getCloserPeersOffline(key, peerId)\n ]);\n if (record != null) {\n this.log('had record for %b in local datastore', key);\n response.record = record.serialize();\n }\n if (closer.length > 0) {\n this.log('had %s closer peers in routing table', closer.length);\n response.closer = closer.map(peerInfo => ({\n id: peerInfo.id.toBytes(),\n multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)\n }));\n }\n return response;\n }\n /**\n * Try to fetch a given record by from the local datastore.\n * Returns the record if it is still valid, meaning\n * - it was either authored by this node, or\n * - it was received less than `MAX_RECORD_AGE` ago.\n */\n async _checkLocalDatastore(key) {\n this.log('checkLocalDatastore looking for %b', key);\n const dsKey = bufferToRecordKey(key);\n // Fetch value from ds\n let rawRecord;\n try {\n rawRecord = await this.datastore.get(dsKey);\n }\n catch (err) {\n if (err.code === 'ERR_NOT_FOUND') {\n return undefined;\n }\n throw err;\n }\n // Create record from the returned bytes\n const record = Libp2pRecord.deserialize(rawRecord);\n if (record == null) {\n throw new CodeError('Invalid record', 'ERR_INVALID_RECORD');\n }\n // Check validity: compare time received with max record age\n if (record.timeReceived == null ||\n Date.now() - record.timeReceived.getTime() > MAX_RECORD_AGE) {\n // If record is bad delete it and return\n await this.datastore.delete(dsKey);\n return undefined;\n }\n // Record is valid\n return record;\n }\n}\n//# sourceMappingURL=get-value.js.map","export class PingHandler {\n log;\n constructor(components, init) {\n this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:ping`);\n }\n async handle(peerId, msg) {\n this.log('ping from %p', peerId);\n return msg;\n }\n}\n//# sourceMappingURL=ping.js.map","import { CodeError } from '@libp2p/interface';\nimport { Libp2pRecord } from '@libp2p/record';\nimport { verifyRecord } from '../../record/validators.js';\nimport { bufferToRecordKey } from '../../utils.js';\nexport class PutValueHandler {\n components;\n validators;\n log;\n constructor(components, init) {\n const { validators } = init;\n this.components = components;\n this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:put-value`);\n this.validators = validators;\n }\n async handle(peerId, msg) {\n const key = msg.key;\n this.log('%p asked us to store value for key %b', peerId, key);\n if (msg.record == null) {\n const errMsg = `Empty record from: ${peerId.toString()}`;\n this.log.error(errMsg);\n throw new CodeError(errMsg, 'ERR_EMPTY_RECORD');\n }\n try {\n const deserializedRecord = Libp2pRecord.deserialize(msg.record);\n await verifyRecord(this.validators, deserializedRecord);\n deserializedRecord.timeReceived = new Date();\n const recordKey = bufferToRecordKey(deserializedRecord.key);\n await this.components.datastore.put(recordKey, deserializedRecord.serialize().subarray());\n this.log('put record for %b into datastore under key %k', key, recordKey);\n }\n catch (err) {\n this.log('did not put record for key %b into datastore %o', key, err);\n }\n return msg;\n }\n}\n//# sourceMappingURL=put-value.js.map","import * as lp from 'it-length-prefixed';\nimport { pipe } from 'it-pipe';\nimport { Message, MessageType } from '../message/dht.js';\nimport { AddProviderHandler } from './handlers/add-provider.js';\nimport { FindNodeHandler } from './handlers/find-node.js';\nimport { GetProvidersHandler } from './handlers/get-providers.js';\nimport { GetValueHandler } from './handlers/get-value.js';\nimport { PingHandler } from './handlers/ping.js';\nimport { PutValueHandler } from './handlers/put-value.js';\nexport class RPC {\n handlers;\n routingTable;\n log;\n constructor(components, init) {\n const { providers, peerRouting, validators, logPrefix, peerInfoMapper } = init;\n this.log = components.logger.forComponent(`${logPrefix}:rpc`);\n this.routingTable = init.routingTable;\n this.handlers = {\n [MessageType.GET_VALUE.toString()]: new GetValueHandler(components, { peerRouting, logPrefix }),\n [MessageType.PUT_VALUE.toString()]: new PutValueHandler(components, { validators, logPrefix }),\n [MessageType.FIND_NODE.toString()]: new FindNodeHandler(components, { peerRouting, logPrefix, peerInfoMapper }),\n [MessageType.ADD_PROVIDER.toString()]: new AddProviderHandler(components, { providers, logPrefix }),\n [MessageType.GET_PROVIDERS.toString()]: new GetProvidersHandler(components, { peerRouting, providers, logPrefix, peerInfoMapper }),\n [MessageType.PING.toString()]: new PingHandler(components, { logPrefix })\n };\n }\n /**\n * Process incoming DHT messages\n */\n async handleMessage(peerId, msg) {\n try {\n await this.routingTable.add(peerId);\n }\n catch (err) {\n this.log.error('Failed to update the kbucket store', err);\n }\n // get handler & execute it\n const handler = this.handlers[msg.type];\n if (handler == null) {\n this.log.error(`no handler found for message type: ${msg.type}`);\n return;\n }\n return handler.handle(peerId, msg);\n }\n /**\n * Handle incoming streams on the dht protocol\n */\n onIncomingStream(data) {\n Promise.resolve().then(async () => {\n const { stream, connection } = data;\n const peerId = connection.remotePeer;\n try {\n await this.routingTable.add(peerId);\n }\n catch (err) {\n this.log.error(err);\n }\n const self = this; // eslint-disable-line @typescript-eslint/no-this-alias\n await pipe(stream, (source) => lp.decode(source), async function* (source) {\n for await (const msg of source) {\n // handle the message\n const desMessage = Message.decode(msg);\n self.log('incoming %s from %p', desMessage.type, peerId);\n const res = await self.handleMessage(peerId, desMessage);\n // Not all handlers will return a response\n if (res != null) {\n yield Message.encode(res);\n }\n }\n }, (source) => lp.encode(source), stream);\n })\n .catch(err => {\n this.log.error(err);\n });\n }\n}\n//# sourceMappingURL=index.js.map","import { CustomEvent, TypedEventEmitter } from '@libp2p/interface';\n/**\n * Receives notifications of new peers joining the network that support the DHT protocol\n */\nexport class TopologyListener extends TypedEventEmitter {\n log;\n components;\n protocol;\n running;\n registrarId;\n constructor(components, init) {\n super();\n const { protocol, logPrefix } = init;\n this.components = components;\n this.log = components.logger.forComponent(`${logPrefix}:topology-listener`);\n this.running = false;\n this.protocol = protocol;\n }\n isStarted() {\n return this.running;\n }\n /**\n * Start the network\n */\n async start() {\n if (this.running) {\n return;\n }\n this.running = true;\n // register protocol with topology\n this.registrarId = await this.components.registrar.register(this.protocol, {\n onConnect: (peerId) => {\n this.log('observed peer %p with protocol %s', peerId, this.protocol);\n this.dispatchEvent(new CustomEvent('peer', {\n detail: peerId\n }));\n }\n });\n }\n /**\n * Stop all network activity\n */\n async stop() {\n this.running = false;\n // unregister protocol and handlers\n if (this.registrarId != null) {\n this.components.registrar.unregister(this.registrarId);\n this.registrarId = undefined;\n }\n }\n}\n//# sourceMappingURL=topology-listener.js.map","import { CodeError, CustomEvent, TypedEventEmitter, contentRoutingSymbol, peerDiscoverySymbol, peerRoutingSymbol, serviceCapabilities, serviceDependencies, start, stop } from '@libp2p/interface';\nimport drain from 'it-drain';\nimport pDefer from 'p-defer';\nimport { PROTOCOL } from './constants.js';\nimport { ContentFetching } from './content-fetching/index.js';\nimport { ContentRouting as KADDHTContentRouting } from './content-routing/index.js';\nimport { Network } from './network.js';\nimport { PeerRouting as KADDHTPeerRouting } from './peer-routing/index.js';\nimport { Providers } from './providers.js';\nimport { QueryManager } from './query/manager.js';\nimport { QuerySelf } from './query-self.js';\nimport { selectors as recordSelectors } from './record/selectors.js';\nimport { validators as recordValidators } from './record/validators.js';\nimport { RoutingTable } from './routing-table/index.js';\nimport { RoutingTableRefresh } from './routing-table/refresh.js';\nimport { RPC } from './rpc/index.js';\nimport { TopologyListener } from './topology-listener.js';\nimport { multiaddrIsPublic, removePrivateAddressesMapper } from './utils.js';\n/**\n * Wrapper class to convert events into returned values\n */\nclass DHTContentRouting {\n dht;\n constructor(dht) {\n this.dht = dht;\n }\n async provide(cid, options = {}) {\n await drain(this.dht.provide(cid, options));\n }\n async *findProviders(cid, options = {}) {\n for await (const event of this.dht.findProviders(cid, options)) {\n if (event.name === 'PROVIDER') {\n yield* event.providers;\n }\n }\n }\n async put(key, value, options) {\n await drain(this.dht.put(key, value, options));\n }\n async get(key, options) {\n for await (const event of this.dht.get(key, options)) {\n if (event.name === 'VALUE') {\n return event.value;\n }\n }\n throw new CodeError('Not found', 'ERR_NOT_FOUND');\n }\n}\n/**\n * Wrapper class to convert events into returned values\n */\nclass DHTPeerRouting {\n dht;\n constructor(dht) {\n this.dht = dht;\n }\n async findPeer(peerId, options = {}) {\n for await (const event of this.dht.findPeer(peerId, options)) {\n if (event.name === 'FINAL_PEER') {\n return event.peer;\n }\n }\n throw new CodeError('Not found', 'ERR_NOT_FOUND');\n }\n async *getClosestPeers(key, options = {}) {\n for await (const event of this.dht.getClosestPeers(key, options)) {\n if (event.name === 'FINAL_PEER') {\n yield event.peer;\n }\n }\n }\n}\nexport const DEFAULT_MAX_INBOUND_STREAMS = 32;\nexport const DEFAULT_MAX_OUTBOUND_STREAMS = 64;\n/**\n * A DHT implementation modelled after Kademlia with S/Kademlia modifications.\n * Original implementation in go: https://github.com/libp2p/go-libp2p-kad-dht.\n */\nexport class KadDHT extends TypedEventEmitter {\n protocol;\n routingTable;\n providers;\n network;\n peerRouting;\n components;\n log;\n running;\n kBucketSize;\n clientMode;\n validators;\n selectors;\n queryManager;\n contentFetching;\n contentRouting;\n routingTableRefresh;\n rpc;\n topologyListener;\n querySelf;\n maxInboundStreams;\n maxOutboundStreams;\n dhtContentRouting;\n dhtPeerRouting;\n peerInfoMapper;\n /**\n * Create a new KadDHT\n */\n constructor(components, init = {}) {\n super();\n const { kBucketSize, clientMode, validators, selectors, querySelfInterval, protocol, logPrefix, pingTimeout, pingConcurrency, maxInboundStreams, maxOutboundStreams, providers: providersInit } = init;\n const loggingPrefix = logPrefix ?? 'libp2p:kad-dht';\n this.running = false;\n this.components = components;\n this.log = components.logger.forComponent(loggingPrefix);\n this.protocol = protocol ?? PROTOCOL;\n this.kBucketSize = kBucketSize ?? 20;\n this.clientMode = clientMode ?? true;\n this.maxInboundStreams = maxInboundStreams ?? DEFAULT_MAX_INBOUND_STREAMS;\n this.maxOutboundStreams = maxOutboundStreams ?? DEFAULT_MAX_OUTBOUND_STREAMS;\n this.peerInfoMapper = init.peerInfoMapper ?? removePrivateAddressesMapper;\n this.routingTable = new RoutingTable(components, {\n kBucketSize,\n pingTimeout,\n pingConcurrency,\n protocol: this.protocol,\n logPrefix: loggingPrefix\n });\n this.providers = new Providers(components, providersInit ?? {});\n this.validators = {\n ...recordValidators,\n ...validators\n };\n this.selectors = {\n ...recordSelectors,\n ...selectors\n };\n this.network = new Network(components, {\n protocol: this.protocol,\n logPrefix: loggingPrefix\n });\n // all queries should wait for the initial query-self query to run so we have\n // some peers and don't force consumers to use arbitrary timeouts\n const initialQuerySelfHasRun = pDefer();\n // if the user doesn't want to wait for query peers, resolve the initial\n // self-query promise immediately\n if (init.allowQueryWithZeroPeers === true) {\n initialQuerySelfHasRun.resolve();\n }\n this.queryManager = new QueryManager(components, {\n // Number of disjoint query paths to use - This is set to `kBucketSize/2` per the S/Kademlia paper\n disjointPaths: Math.ceil(this.kBucketSize / 2),\n logPrefix: loggingPrefix,\n initialQuerySelfHasRun,\n routingTable: this.routingTable\n });\n // DHT components\n this.peerRouting = new KADDHTPeerRouting(components, {\n routingTable: this.routingTable,\n network: this.network,\n validators: this.validators,\n queryManager: this.queryManager,\n logPrefix: loggingPrefix\n });\n this.contentFetching = new ContentFetching(components, {\n validators: this.validators,\n selectors: this.selectors,\n peerRouting: this.peerRouting,\n queryManager: this.queryManager,\n network: this.network,\n logPrefix: loggingPrefix\n });\n this.contentRouting = new KADDHTContentRouting(components, {\n network: this.network,\n peerRouting: this.peerRouting,\n queryManager: this.queryManager,\n routingTable: this.routingTable,\n providers: this.providers,\n logPrefix: loggingPrefix\n });\n this.routingTableRefresh = new RoutingTableRefresh(components, {\n peerRouting: this.peerRouting,\n routingTable: this.routingTable,\n logPrefix: loggingPrefix\n });\n this.rpc = new RPC(components, {\n routingTable: this.routingTable,\n providers: this.providers,\n peerRouting: this.peerRouting,\n validators: this.validators,\n logPrefix: loggingPrefix,\n peerInfoMapper: this.peerInfoMapper\n });\n this.topologyListener = new TopologyListener(components, {\n protocol: this.protocol,\n logPrefix: loggingPrefix\n });\n this.querySelf = new QuerySelf(components, {\n peerRouting: this.peerRouting,\n interval: querySelfInterval,\n initialInterval: init.initialQuerySelfInterval,\n logPrefix: loggingPrefix,\n initialQuerySelfHasRun,\n routingTable: this.routingTable\n });\n // handle peers being discovered during processing of DHT messages\n this.network.addEventListener('peer', (evt) => {\n const peerData = evt.detail;\n this.onPeerConnect(peerData).catch(err => {\n this.log.error('could not add %p to routing table', peerData.id, err);\n });\n this.dispatchEvent(new CustomEvent('peer', {\n detail: peerData\n }));\n });\n // handle peers being discovered via other peer discovery mechanisms\n this.topologyListener.addEventListener('peer', (evt) => {\n const peerId = evt.detail;\n Promise.resolve().then(async () => {\n const peer = await this.components.peerStore.get(peerId);\n const peerData = {\n id: peerId,\n multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr),\n protocols: peer.protocols\n };\n await this.onPeerConnect(peerData);\n }).catch(err => {\n this.log.error('could not add %p to routing table', peerId, err);\n });\n });\n this.dhtPeerRouting = new DHTPeerRouting(this);\n this.dhtContentRouting = new DHTContentRouting(this);\n // if client mode has not been explicitly specified, auto-switch to server\n // mode when the node's peer data is updated with publicly dialable\n // addresses\n if (init.clientMode == null) {\n components.events.addEventListener('self:peer:update', (evt) => {\n this.log('received update of self-peer info');\n void Promise.resolve().then(async () => {\n const hasPublicAddress = evt.detail.peer.addresses\n .some(({ multiaddr }) => multiaddrIsPublic(multiaddr));\n const mode = this.getMode();\n if (hasPublicAddress && mode === 'client') {\n await this.setMode('server');\n }\n else if (mode === 'server' && !hasPublicAddress) {\n await this.setMode('client');\n }\n })\n .catch(err => {\n this.log.error('error setting dht server mode', err);\n });\n });\n }\n }\n [Symbol.toStringTag] = '@libp2p/kad-dht';\n [serviceCapabilities] = [\n '@libp2p/content-routing',\n '@libp2p/peer-routing',\n '@libp2p/peer-discovery'\n ];\n [serviceDependencies] = [\n '@libp2p/identify'\n ];\n get [contentRoutingSymbol]() {\n return this.dhtContentRouting;\n }\n get [peerRoutingSymbol]() {\n return this.dhtPeerRouting;\n }\n get [peerDiscoverySymbol]() {\n return this;\n }\n async onPeerConnect(peerData) {\n this.log('peer %p connected', peerData.id);\n peerData = this.peerInfoMapper(peerData);\n if (peerData.multiaddrs.length === 0) {\n this.log('ignoring %p as there were no valid addresses in %s after filtering', peerData.id, peerData.multiaddrs.map(addr => addr.toString()));\n return;\n }\n try {\n await this.routingTable.add(peerData.id);\n }\n catch (err) {\n this.log.error('could not add %p to routing table', peerData.id, err);\n }\n }\n /**\n * Is this DHT running.\n */\n isStarted() {\n return this.running;\n }\n /**\n * If 'server' this node will respond to DHT queries, if 'client' this node will not\n */\n getMode() {\n return this.clientMode ? 'client' : 'server';\n }\n /**\n * If 'server' this node will respond to DHT queries, if 'client' this node will not\n */\n async setMode(mode) {\n await this.components.registrar.unhandle(this.protocol);\n if (mode === 'client') {\n this.log('enabling client mode');\n this.clientMode = true;\n }\n else {\n this.log('enabling server mode');\n this.clientMode = false;\n await this.components.registrar.handle(this.protocol, this.rpc.onIncomingStream.bind(this.rpc), {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams\n });\n }\n }\n /**\n * Start listening to incoming connections.\n */\n async start() {\n this.running = true;\n // Only respond to queries when not in client mode\n await this.setMode(this.clientMode ? 'client' : 'server');\n await start(this.querySelf, this.providers, this.queryManager, this.network, this.routingTable, this.topologyListener, this.routingTableRefresh);\n }\n /**\n * Stop accepting incoming connections and sending outgoing\n * messages.\n */\n async stop() {\n this.running = false;\n await stop(this.querySelf, this.providers, this.queryManager, this.network, this.routingTable, this.routingTableRefresh, this.topologyListener);\n }\n /**\n * Store the given key/value pair in the DHT\n */\n async *put(key, value, options = {}) {\n yield* this.contentFetching.put(key, value, options);\n }\n /**\n * Get the value that corresponds to the passed key\n */\n async *get(key, options = {}) {\n yield* this.contentFetching.get(key, options);\n }\n // ----------- Content Routing\n /**\n * Announce to the network that we can provide given key's value\n */\n async *provide(key, options = {}) {\n yield* this.contentRouting.provide(key, this.components.addressManager.getAddresses(), options);\n }\n /**\n * Search the dht for providers of the given CID\n */\n async *findProviders(key, options = {}) {\n yield* this.contentRouting.findProviders(key, options);\n }\n // ----------- Peer Routing -----------\n /**\n * Search for a peer with the given ID\n */\n async *findPeer(id, options = {}) {\n yield* this.peerRouting.findPeer(id, options);\n }\n /**\n * Kademlia 'node lookup' operation\n */\n async *getClosestPeers(key, options = {}) {\n yield* this.peerRouting.getClosestPeers(key, options);\n }\n async refreshRoutingTable() {\n this.routingTableRefresh.refreshTable(true);\n }\n}\n//# sourceMappingURL=kad-dht.js.map","/**\n * @packageDocumentation\n *\n * This module implements the [libp2p Kademlia spec](https://github.com/libp2p/specs/blob/master/kad-dht/README.md) in TypeScript.\n *\n * The Kademlia DHT allow for several operations such as finding peers, searching for providers of DHT records, etc.\n *\n * @example Using with libp2p\n *\n * ```TypeScript\n * import { kadDHT } from '@libp2p/kad-dht'\n * import { createLibp2p } from 'libp2p'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const node = await createLibp2p({\n * services: {\n * dht: kadDHT({\n * // DHT options\n * })\n * }\n * })\n *\n * const peerId = peerIdFromString('QmFoo')\n * const peerInfo = await node.peerRouting.findPeer(peerId)\n *\n * console.info(peerInfo) // peer id, multiaddrs\n * ```\n *\n * @example Connecting to the IPFS Amino DHT\n *\n * The [Amino DHT](https://blog.ipfs.tech/2023-09-amino-refactoring/) is a public-good DHT used by IPFS to fetch content, find peers, etc.\n *\n * If you are trying to access content on the public internet, this is the implementation you want.\n *\n * ```TypeScript\n * import { kadDHT, removePrivateAddressesMapper } from '@libp2p/kad-dht'\n * import { createLibp2p } from 'libp2p'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const node = await createLibp2p({\n * services: {\n * aminoDHT: kadDHT({\n * protocol: '/ipfs/kad/1.0.0',\n * peerInfoMapper: removePrivateAddressesMapper\n * })\n * }\n * })\n *\n * const peerId = peerIdFromString('QmFoo')\n * const peerInfo = await node.peerRouting.findPeer(peerId)\n *\n * console.info(peerInfo) // peer id, multiaddrs\n * ```\n *\n * @example Connecting to a LAN-only DHT\n *\n * This DHT only works with privately dialable peers.\n *\n * This is for use when peers are on the local area network.\n *\n * ```TypeScript\n * import { kadDHT, removePublicAddressesMapper } from '@libp2p/kad-dht'\n * import { createLibp2p } from 'libp2p'\n * import { peerIdFromString } from '@libp2p/peer-id'\n *\n * const node = await createLibp2p({\n * services: {\n * lanDHT: kadDHT({\n * protocol: '/ipfs/lan/kad/1.0.0',\n * peerInfoMapper: removePublicAddressesMapper,\n * clientMode: false\n * })\n * }\n * })\n *\n * const peerId = peerIdFromString('QmFoo')\n * const peerInfo = await node.peerRouting.findPeer(peerId)\n *\n * console.info(peerInfo) // peer id, multiaddrs\n * ```\n */\nimport { KadDHT as KadDHTClass } from './kad-dht.js';\nimport { MessageType } from './message/dht.js';\nimport { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper } from './utils.js';\nexport { Libp2pRecord as Record } from '@libp2p/record';\nexport { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper };\n/**\n * The types of events emitted during DHT queries\n */\nexport var EventTypes;\n(function (EventTypes) {\n EventTypes[EventTypes[\"SEND_QUERY\"] = 0] = \"SEND_QUERY\";\n EventTypes[EventTypes[\"PEER_RESPONSE\"] = 1] = \"PEER_RESPONSE\";\n EventTypes[EventTypes[\"FINAL_PEER\"] = 2] = \"FINAL_PEER\";\n EventTypes[EventTypes[\"QUERY_ERROR\"] = 3] = \"QUERY_ERROR\";\n EventTypes[EventTypes[\"PROVIDER\"] = 4] = \"PROVIDER\";\n EventTypes[EventTypes[\"VALUE\"] = 5] = \"VALUE\";\n EventTypes[EventTypes[\"ADD_PEER\"] = 6] = \"ADD_PEER\";\n EventTypes[EventTypes[\"DIAL_PEER\"] = 7] = \"DIAL_PEER\";\n})(EventTypes || (EventTypes = {}));\n/**\n * The types of messages sent to peers during DHT queries\n */\nexport { MessageType };\n/**\n * Creates a custom DHT implementation, please ensure you pass a `protocol`\n * string as an option.\n */\nexport function kadDHT(init = {}) {\n return (components) => new KadDHTClass(components, init);\n}\n//# sourceMappingURL=index.js.map","'use strict';\n\nfunction isHighSurrogate(codePoint) {\n return codePoint >= 0xd800 && codePoint <= 0xdbff;\n}\n\nfunction isLowSurrogate(codePoint) {\n return codePoint >= 0xdc00 && codePoint <= 0xdfff;\n}\n\n// Truncate string by size in bytes\nmodule.exports = function truncate(getLength, string, byteLength) {\n if (typeof string !== \"string\") {\n throw new Error(\"Input must be string\");\n }\n\n var charLength = string.length;\n var curByteLength = 0;\n var codePoint;\n var segment;\n\n for (var i = 0; i < charLength; i += 1) {\n codePoint = string.charCodeAt(i);\n segment = string[i];\n\n if (isHighSurrogate(codePoint) && isLowSurrogate(string.charCodeAt(i + 1))) {\n i += 1;\n segment += string[i];\n }\n\n curByteLength += getLength(segment);\n\n if (curByteLength === byteLength) {\n return string.slice(0, i + 1);\n }\n else if (curByteLength > byteLength) {\n return string.slice(0, i - segment.length + 1);\n }\n }\n\n return string;\n};\n\n","'use strict';\n\nfunction isHighSurrogate(codePoint) {\n return codePoint >= 0xd800 && codePoint <= 0xdbff;\n}\n\nfunction isLowSurrogate(codePoint) {\n return codePoint >= 0xdc00 && codePoint <= 0xdfff;\n}\n\n// Truncate string by size in bytes\nmodule.exports = function getByteLength(string) {\n if (typeof string !== \"string\") {\n throw new Error(\"Input must be string\");\n }\n\n var charLength = string.length;\n var byteLength = 0;\n var codePoint = null;\n var prevCodePoint = null;\n for (var i = 0; i < charLength; i++) {\n codePoint = string.charCodeAt(i);\n // handle 4-byte non-BMP chars\n // low surrogate\n if (isLowSurrogate(codePoint)) {\n // when parsing previous hi-surrogate, 3 is added to byteLength\n if (prevCodePoint != null && isHighSurrogate(prevCodePoint)) {\n byteLength += 1;\n }\n else {\n byteLength += 3;\n }\n }\n else if (codePoint <= 0x7f ) {\n byteLength += 1;\n }\n else if (codePoint >= 0x80 && codePoint <= 0x7ff) {\n byteLength += 2;\n }\n else if (codePoint >= 0x800 && codePoint <= 0xffff) {\n byteLength += 3;\n }\n prevCodePoint = codePoint;\n }\n\n return byteLength;\n};\n","'use strict';\n\nvar truncate = require(\"./lib/truncate\");\nvar getLength = require(\"utf8-byte-length/browser\");\nmodule.exports = truncate.bind(null, getLength);\n","/*jshint node:true*/\n'use strict';\n\n/**\n * Replaces characters in strings that are illegal/unsafe for filenames.\n * Unsafe characters are either removed or replaced by a substitute set\n * in the optional `options` object.\n *\n * Illegal Characters on Various Operating Systems\n * / ? < > \\ : * | \"\n * https://kb.acronis.com/content/39790\n *\n * Unicode Control codes\n * C0 0x00-0x1f & C1 (0x80-0x9f)\n * http://en.wikipedia.org/wiki/C0_and_C1_control_codes\n *\n * Reserved filenames on Unix-based systems (\".\", \"..\")\n * Reserved filenames in Windows (\"CON\", \"PRN\", \"AUX\", \"NUL\", \"COM1\",\n * \"COM2\", \"COM3\", \"COM4\", \"COM5\", \"COM6\", \"COM7\", \"COM8\", \"COM9\",\n * \"LPT1\", \"LPT2\", \"LPT3\", \"LPT4\", \"LPT5\", \"LPT6\", \"LPT7\", \"LPT8\", and\n * \"LPT9\") case-insesitively and with or without filename extensions.\n *\n * Capped at 255 characters in length.\n * http://unix.stackexchange.com/questions/32795/what-is-the-maximum-allowed-filename-and-folder-size-with-ecryptfs\n *\n * @param {String} input Original filename\n * @param {Object} options {replacement: String | Function }\n * @return {String} Sanitized filename\n */\n\nvar truncate = require(\"truncate-utf8-bytes\");\n\nvar illegalRe = /[\\/\\?<>\\\\:\\*\\|\"]/g;\nvar controlRe = /[\\x00-\\x1f\\x80-\\x9f]/g;\nvar reservedRe = /^\\.+$/;\nvar windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\\..*)?$/i;\nvar windowsTrailingRe = /[\\. ]+$/;\n\nfunction sanitize(input, replacement) {\n if (typeof input !== 'string') {\n throw new Error('Input must be string');\n }\n var sanitized = input\n .replace(illegalRe, replacement)\n .replace(controlRe, replacement)\n .replace(reservedRe, replacement)\n .replace(windowsReservedRe, replacement)\n .replace(windowsTrailingRe, replacement);\n return truncate(sanitized, 255);\n}\n\nmodule.exports = function (input, options) {\n var replacement = (options && options.replacement) || '';\n var output = sanitize(input, replacement);\n if (replacement === '') {\n return output;\n }\n return sanitize(output, '');\n};\n","export var codes;\n(function (codes) {\n codes[\"ERR_INVALID_PARAMETERS\"] = \"ERR_INVALID_PARAMETERS\";\n codes[\"ERR_INVALID_KEY_NAME\"] = \"ERR_INVALID_KEY_NAME\";\n codes[\"ERR_INVALID_KEY_TYPE\"] = \"ERR_INVALID_KEY_TYPE\";\n codes[\"ERR_KEY_ALREADY_EXISTS\"] = \"ERR_KEY_ALREADY_EXISTS\";\n codes[\"ERR_INVALID_KEY_SIZE\"] = \"ERR_INVALID_KEY_SIZE\";\n codes[\"ERR_KEY_NOT_FOUND\"] = \"ERR_KEY_NOT_FOUND\";\n codes[\"ERR_OLD_KEY_NAME_INVALID\"] = \"ERR_OLD_KEY_NAME_INVALID\";\n codes[\"ERR_NEW_KEY_NAME_INVALID\"] = \"ERR_NEW_KEY_NAME_INVALID\";\n codes[\"ERR_PASSWORD_REQUIRED\"] = \"ERR_PASSWORD_REQUIRED\";\n codes[\"ERR_PEM_REQUIRED\"] = \"ERR_PEM_REQUIRED\";\n codes[\"ERR_CANNOT_READ_KEY\"] = \"ERR_CANNOT_READ_KEY\";\n codes[\"ERR_MISSING_PRIVATE_KEY\"] = \"ERR_MISSING_PRIVATE_KEY\";\n codes[\"ERR_INVALID_OLD_PASS_TYPE\"] = \"ERR_INVALID_OLD_PASS_TYPE\";\n codes[\"ERR_INVALID_NEW_PASS_TYPE\"] = \"ERR_INVALID_NEW_PASS_TYPE\";\n codes[\"ERR_INVALID_PASS_LENGTH\"] = \"ERR_INVALID_PASS_LENGTH\";\n})(codes || (codes = {}));\n//# sourceMappingURL=errors.js.map","/* eslint max-nested-callbacks: [\"error\", 5] */\nimport { pbkdf2, randomBytes } from '@libp2p/crypto';\nimport { generateKeyPair, importKey, unmarshalPrivateKey } from '@libp2p/crypto/keys';\nimport { CodeError, serviceCapabilities } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { Key } from 'interface-datastore/key';\nimport mergeOptions from 'merge-options';\nimport sanitize from 'sanitize-filename';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { codes } from './errors.js';\nconst keyPrefix = '/pkcs8/';\nconst infoPrefix = '/info/';\nconst privates = new WeakMap();\n// NIST SP 800-132\nconst NIST = {\n minKeyLength: 112 / 8,\n minSaltLength: 128 / 8,\n minIterationCount: 1000\n};\nconst defaultOptions = {\n // See https://cryptosense.com/parametesr-choice-for-pbkdf2/\n dek: {\n keyLength: 512 / 8,\n iterationCount: 10000,\n salt: 'you should override this value with a crypto secure random number',\n hash: 'sha2-512'\n }\n};\nfunction validateKeyName(name) {\n if (name == null) {\n return false;\n }\n if (typeof name !== 'string') {\n return false;\n }\n return name === sanitize(name.trim()) && name.length > 0;\n}\n/**\n * Throws an error after a delay\n *\n * This assumes than an error indicates that the keychain is under attack. Delay returning an\n * error to make brute force attacks harder.\n */\nasync function randomDelay() {\n const min = 200;\n const max = 1000;\n const delay = Math.random() * (max - min) + min;\n await new Promise(resolve => setTimeout(resolve, delay));\n}\n/**\n * Converts a key name into a datastore name\n */\nfunction DsName(name) {\n return new Key(keyPrefix + name);\n}\n/**\n * Converts a key name into a datastore info name\n */\nfunction DsInfoName(name) {\n return new Key(infoPrefix + name);\n}\n/**\n * Manages the lifecycle of a key. Keys are encrypted at rest using PKCS #8.\n *\n * A key in the store has two entries\n * - '/info/*key-name*', contains the KeyInfo for the key\n * - '/pkcs8/*key-name*', contains the PKCS #8 for the key\n *\n */\nexport class DefaultKeychain {\n components;\n init;\n log;\n /**\n * Creates a new instance of a key chain\n */\n constructor(components, init) {\n this.components = components;\n this.log = components.logger.forComponent('libp2p:keychain');\n this.init = mergeOptions(defaultOptions, init);\n // Enforce NIST SP 800-132\n if (this.init.pass != null && this.init.pass?.length < 20) {\n throw new Error('pass must be least 20 characters');\n }\n if (this.init.dek?.keyLength != null && this.init.dek.keyLength < NIST.minKeyLength) {\n throw new Error(`dek.keyLength must be least ${NIST.minKeyLength} bytes`);\n }\n if (this.init.dek?.salt?.length != null && this.init.dek.salt.length < NIST.minSaltLength) {\n throw new Error(`dek.saltLength must be least ${NIST.minSaltLength} bytes`);\n }\n if (this.init.dek?.iterationCount != null && this.init.dek.iterationCount < NIST.minIterationCount) {\n throw new Error(`dek.iterationCount must be least ${NIST.minIterationCount}`);\n }\n const dek = this.init.pass != null && this.init.dek?.salt != null\n ? pbkdf2(this.init.pass, this.init.dek?.salt, this.init.dek?.iterationCount, this.init.dek?.keyLength, this.init.dek?.hash)\n : '';\n privates.set(this, { dek });\n }\n [Symbol.toStringTag] = '@libp2p/keychain';\n [serviceCapabilities] = [\n '@libp2p/keychain'\n ];\n /**\n * Generates the options for a keychain. A random salt is produced.\n *\n * @returns {object}\n */\n static generateOptions() {\n const options = Object.assign({}, defaultOptions);\n const saltLength = Math.ceil(NIST.minSaltLength / 3) * 3; // no base64 padding\n options.dek.salt = uint8ArrayToString(randomBytes(saltLength), 'base64');\n return options;\n }\n /**\n * Gets an object that can encrypt/decrypt protected data.\n * The default options for a keychain.\n *\n * @returns {object}\n */\n static get options() {\n return defaultOptions;\n }\n /**\n * Create a new key.\n *\n * @param {string} name - The local key name; cannot already exist.\n * @param {string} type - One of the key types; 'rsa'.\n * @param {number} [size = 2048] - The key size in bits. Used for rsa keys only\n */\n async createKey(name, type, size = 2048) {\n if (!validateKeyName(name) || name === 'self') {\n await randomDelay();\n throw new CodeError('Invalid key name', codes.ERR_INVALID_KEY_NAME);\n }\n if (typeof type !== 'string') {\n await randomDelay();\n throw new CodeError('Invalid key type', codes.ERR_INVALID_KEY_TYPE);\n }\n const dsname = DsName(name);\n const exists = await this.components.datastore.has(dsname);\n if (exists) {\n await randomDelay();\n throw new CodeError('Key name already exists', codes.ERR_KEY_ALREADY_EXISTS);\n }\n switch (type.toLowerCase()) {\n case 'rsa':\n if (!Number.isSafeInteger(size) || size < 2048) {\n await randomDelay();\n throw new CodeError('Invalid RSA key size', codes.ERR_INVALID_KEY_SIZE);\n }\n break;\n default:\n break;\n }\n let keyInfo;\n try {\n const keypair = await generateKeyPair(type, size);\n const kid = await keypair.id();\n const cached = privates.get(this);\n if (cached == null) {\n throw new CodeError('dek missing', codes.ERR_INVALID_PARAMETERS);\n }\n const dek = cached.dek;\n const pem = await keypair.export(dek);\n keyInfo = {\n name,\n id: kid\n };\n const batch = this.components.datastore.batch();\n batch.put(dsname, uint8ArrayFromString(pem));\n batch.put(DsInfoName(name), uint8ArrayFromString(JSON.stringify(keyInfo)));\n await batch.commit();\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n return keyInfo;\n }\n /**\n * List all the keys.\n *\n * @returns {Promise}\n */\n async listKeys() {\n const query = {\n prefix: infoPrefix\n };\n const info = [];\n for await (const value of this.components.datastore.query(query)) {\n info.push(JSON.parse(uint8ArrayToString(value.value)));\n }\n return info;\n }\n /**\n * Find a key by it's id\n */\n async findKeyById(id) {\n try {\n const keys = await this.listKeys();\n const key = keys.find((k) => k.id === id);\n if (key == null) {\n throw new CodeError(`Key with id '${id}' does not exist.`, codes.ERR_KEY_NOT_FOUND);\n }\n return key;\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n }\n /**\n * Find a key by it's name.\n *\n * @param {string} name - The local key name.\n * @returns {Promise}\n */\n async findKeyByName(name) {\n if (!validateKeyName(name)) {\n await randomDelay();\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n const dsname = DsInfoName(name);\n try {\n const res = await this.components.datastore.get(dsname);\n return JSON.parse(uint8ArrayToString(res));\n }\n catch (err) {\n await randomDelay();\n this.log.error(err);\n throw new CodeError(`Key '${name}' does not exist.`, codes.ERR_KEY_NOT_FOUND);\n }\n }\n /**\n * Remove an existing key.\n *\n * @param {string} name - The local key name; must already exist.\n * @returns {Promise}\n */\n async removeKey(name) {\n if (!validateKeyName(name) || name === 'self') {\n await randomDelay();\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n const dsname = DsName(name);\n const keyInfo = await this.findKeyByName(name);\n const batch = this.components.datastore.batch();\n batch.delete(dsname);\n batch.delete(DsInfoName(name));\n await batch.commit();\n return keyInfo;\n }\n /**\n * Rename a key\n *\n * @param {string} oldName - The old local key name; must already exist.\n * @param {string} newName - The new local key name; must not already exist.\n * @returns {Promise}\n */\n async renameKey(oldName, newName) {\n if (!validateKeyName(oldName) || oldName === 'self') {\n await randomDelay();\n throw new CodeError(`Invalid old key name '${oldName}'`, codes.ERR_OLD_KEY_NAME_INVALID);\n }\n if (!validateKeyName(newName) || newName === 'self') {\n await randomDelay();\n throw new CodeError(`Invalid new key name '${newName}'`, codes.ERR_NEW_KEY_NAME_INVALID);\n }\n const oldDsname = DsName(oldName);\n const newDsname = DsName(newName);\n const oldInfoName = DsInfoName(oldName);\n const newInfoName = DsInfoName(newName);\n const exists = await this.components.datastore.has(newDsname);\n if (exists) {\n await randomDelay();\n throw new CodeError(`Key '${newName}' already exists`, codes.ERR_KEY_ALREADY_EXISTS);\n }\n try {\n const pem = await this.components.datastore.get(oldDsname);\n const res = await this.components.datastore.get(oldInfoName);\n const keyInfo = JSON.parse(uint8ArrayToString(res));\n keyInfo.name = newName;\n const batch = this.components.datastore.batch();\n batch.put(newDsname, pem);\n batch.put(newInfoName, uint8ArrayFromString(JSON.stringify(keyInfo)));\n batch.delete(oldDsname);\n batch.delete(oldInfoName);\n await batch.commit();\n return keyInfo;\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n }\n /**\n * Export an existing key as a PEM encrypted PKCS #8 string\n */\n async exportKey(name, password) {\n if (!validateKeyName(name)) {\n await randomDelay();\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n if (password == null) {\n await randomDelay();\n throw new CodeError('Password is required', codes.ERR_PASSWORD_REQUIRED);\n }\n const dsname = DsName(name);\n try {\n const res = await this.components.datastore.get(dsname);\n const pem = uint8ArrayToString(res);\n const cached = privates.get(this);\n if (cached == null) {\n throw new CodeError('dek missing', codes.ERR_INVALID_PARAMETERS);\n }\n const dek = cached.dek;\n const privateKey = await importKey(pem, dek);\n const keyString = await privateKey.export(password);\n return keyString;\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n }\n /**\n * Export an existing key as a PeerId\n */\n async exportPeerId(name) {\n const password = 'temporary-password';\n const pem = await this.exportKey(name, password);\n const privateKey = await importKey(pem, password);\n return peerIdFromKeys(privateKey.public.bytes, privateKey.bytes);\n }\n /**\n * Import a new key from a PEM encoded PKCS #8 string\n *\n * @param {string} name - The local key name; must not already exist.\n * @param {string} pem - The PEM encoded PKCS #8 string\n * @param {string} password - The password.\n * @returns {Promise}\n */\n async importKey(name, pem, password) {\n if (!validateKeyName(name) || name === 'self') {\n await randomDelay();\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n if (pem == null) {\n await randomDelay();\n throw new CodeError('PEM encoded key is required', codes.ERR_PEM_REQUIRED);\n }\n const dsname = DsName(name);\n const exists = await this.components.datastore.has(dsname);\n if (exists) {\n await randomDelay();\n throw new CodeError(`Key '${name}' already exists`, codes.ERR_KEY_ALREADY_EXISTS);\n }\n let privateKey;\n try {\n privateKey = await importKey(pem, password);\n }\n catch (err) {\n await randomDelay();\n throw new CodeError('Cannot read the key, most likely the password is wrong', codes.ERR_CANNOT_READ_KEY);\n }\n let kid;\n try {\n kid = await privateKey.id();\n const cached = privates.get(this);\n if (cached == null) {\n throw new CodeError('dek missing', codes.ERR_INVALID_PARAMETERS);\n }\n const dek = cached.dek;\n pem = await privateKey.export(dek);\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n const keyInfo = {\n name,\n id: kid\n };\n const batch = this.components.datastore.batch();\n batch.put(dsname, uint8ArrayFromString(pem));\n batch.put(DsInfoName(name), uint8ArrayFromString(JSON.stringify(keyInfo)));\n await batch.commit();\n return keyInfo;\n }\n /**\n * Import a peer key\n */\n async importPeer(name, peer) {\n try {\n if (!validateKeyName(name)) {\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n if (peer == null) {\n throw new CodeError('PeerId is required', codes.ERR_MISSING_PRIVATE_KEY);\n }\n if (peer.privateKey == null) {\n throw new CodeError('PeerId.privKey is required', codes.ERR_MISSING_PRIVATE_KEY);\n }\n const privateKey = await unmarshalPrivateKey(peer.privateKey);\n const dsname = DsName(name);\n const exists = await this.components.datastore.has(dsname);\n if (exists) {\n await randomDelay();\n throw new CodeError(`Key '${name}' already exists`, codes.ERR_KEY_ALREADY_EXISTS);\n }\n const cached = privates.get(this);\n if (cached == null) {\n throw new CodeError('dek missing', codes.ERR_INVALID_PARAMETERS);\n }\n const dek = cached.dek;\n const pem = await privateKey.export(dek);\n const keyInfo = {\n name,\n id: peer.toString()\n };\n const batch = this.components.datastore.batch();\n batch.put(dsname, uint8ArrayFromString(pem));\n batch.put(DsInfoName(name), uint8ArrayFromString(JSON.stringify(keyInfo)));\n await batch.commit();\n return keyInfo;\n }\n catch (err) {\n await randomDelay();\n throw err;\n }\n }\n /**\n * Gets the private key as PEM encoded PKCS #8 string\n */\n async getPrivateKey(name) {\n if (!validateKeyName(name)) {\n await randomDelay();\n throw new CodeError(`Invalid key name '${name}'`, codes.ERR_INVALID_KEY_NAME);\n }\n try {\n const dsname = DsName(name);\n const res = await this.components.datastore.get(dsname);\n return uint8ArrayToString(res);\n }\n catch (err) {\n await randomDelay();\n this.log.error(err);\n throw new CodeError(`Key '${name}' does not exist.`, codes.ERR_KEY_NOT_FOUND);\n }\n }\n /**\n * Rotate keychain password and re-encrypt all associated keys\n */\n async rotateKeychainPass(oldPass, newPass) {\n if (typeof oldPass !== 'string') {\n await randomDelay();\n throw new CodeError(`Invalid old pass type '${typeof oldPass}'`, codes.ERR_INVALID_OLD_PASS_TYPE);\n }\n if (typeof newPass !== 'string') {\n await randomDelay();\n throw new CodeError(`Invalid new pass type '${typeof newPass}'`, codes.ERR_INVALID_NEW_PASS_TYPE);\n }\n if (newPass.length < 20) {\n await randomDelay();\n throw new CodeError(`Invalid pass length ${newPass.length}`, codes.ERR_INVALID_PASS_LENGTH);\n }\n this.log('recreating keychain');\n const cached = privates.get(this);\n if (cached == null) {\n throw new CodeError('dek missing', codes.ERR_INVALID_PARAMETERS);\n }\n const oldDek = cached.dek;\n this.init.pass = newPass;\n const newDek = newPass != null && this.init.dek?.salt != null\n ? pbkdf2(newPass, this.init.dek.salt, this.init.dek?.iterationCount, this.init.dek?.keyLength, this.init.dek?.hash)\n : '';\n privates.set(this, { dek: newDek });\n const keys = await this.listKeys();\n for (const key of keys) {\n const res = await this.components.datastore.get(DsName(key.name));\n const pem = uint8ArrayToString(res);\n const privateKey = await importKey(pem, oldDek);\n const password = newDek.toString();\n const keyAsPEM = await privateKey.export(password);\n // Update stored key\n const batch = this.components.datastore.batch();\n const keyInfo = {\n name: key.name,\n id: key.id\n };\n batch.put(DsName(key.name), uint8ArrayFromString(keyAsPEM));\n batch.put(DsInfoName(key.name), uint8ArrayFromString(JSON.stringify(keyInfo)));\n await batch.commit();\n }\n this.log('keychain reconstructed');\n }\n}\n//# sourceMappingURL=keychain.js.map","/**\n * @packageDocumentation\n *\n * - Manages the lifecycle of a key\n * - Keys are encrypted at rest\n * - Enforces the use of safe key names\n * - Uses encrypted PKCS 8 for key storage\n * - Uses PBKDF2 for a \"stetched\" key encryption key\n * - Enforces NIST SP 800-131A and NIST SP 800-132\n * - Delays reporting errors to slow down brute force attacks\n *\n * ## KeyInfo\n *\n * The key management and naming service API all return a `KeyInfo` object. The `id` is a universally unique identifier for the key. The `name` is local to the key chain.\n *\n * ```JSON\n * {\n * \"name\": \"rsa-key\",\n * \"id\": \"QmYWYSUZ4PV6MRFYpdtEDJBiGs4UrmE6g8wmAWSePekXVW\"\n * }\n * ```\n *\n * The **key id** is the SHA-256 [multihash](https://github.com/multiformats/multihash) of its public key.\n *\n * The *public key* is a [protobuf encoding](https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/src/keys/keys.proto.js) containing a type and the [DER encoding](https://en.wikipedia.org/wiki/X.690) of the PKCS [SubjectPublicKeyInfo](https://www.ietf.org/rfc/rfc3279.txt).\n *\n * ## Private key storage\n *\n * A private key is stored as an encrypted PKCS 8 structure in the PEM format. It is protected by a key generated from the key chain's *passPhrase* using **PBKDF2**.\n *\n * The default options for generating the derived encryption key are in the `dek` object. This, along with the passPhrase, is the input to a `PBKDF2` function.\n *\n * ```TypeScript\n * const defaultOptions = {\n * // See https://cryptosense.com/parameter-choice-for-pbkdf2/\n * dek: {\n * keyLength: 512 / 8,\n * iterationCount: 1000,\n * salt: 'at least 16 characters long',\n * hash: 'sha2-512'\n * }\n * }\n * ```\n *\n * ![key storage](https://github.com/libp2p/js-libp2p/blob/main/doc/private-key.png?raw=true)\n *\n * ## Physical storage\n *\n * The actual physical storage of an encrypted key is left to implementations of [interface-datastore](https://github.com/ipfs/interface-datastore/).\n *\n * A key benefit is that now the key chain can be used in browser with the [js-datastore-level](https://github.com/ipfs/js-datastore-level) implementation.\n */\nimport { DefaultKeychain } from './keychain.js';\nexport function keychain(init = {}) {\n return (components) => {\n return new DefaultKeychain(components, init);\n };\n}\n//# sourceMappingURL=index.js.map","import { CodeError } from '@libp2p/interface';\nimport delay from 'delay';\nexport class RateLimiter {\n memoryStorage;\n points;\n duration;\n blockDuration;\n execEvenly;\n execEvenlyMinDelayMs;\n keyPrefix;\n constructor(opts = {}) {\n this.points = opts.points ?? 4;\n this.duration = opts.duration ?? 1;\n this.blockDuration = opts.blockDuration ?? 0;\n this.execEvenly = opts.execEvenly ?? false;\n this.execEvenlyMinDelayMs = opts.execEvenlyMinDelayMs ?? (this.duration * 1000 / this.points);\n this.keyPrefix = opts.keyPrefix ?? 'rlflx';\n this.memoryStorage = new MemoryStorage();\n }\n async consume(key, pointsToConsume = 1, options = {}) {\n const rlKey = this.getKey(key);\n const secDuration = this._getKeySecDuration(options);\n let res = this.memoryStorage.incrby(rlKey, pointsToConsume, secDuration);\n res.remainingPoints = Math.max(this.points - res.consumedPoints, 0);\n if (res.consumedPoints > this.points) {\n // Block only first time when consumed more than points\n if (this.blockDuration > 0 && res.consumedPoints <= (this.points + pointsToConsume)) {\n // Block key\n res = this.memoryStorage.set(rlKey, res.consumedPoints, this.blockDuration);\n }\n throw new CodeError('Rate limit exceeded', 'ERR_RATE_LIMIT_EXCEEDED', res);\n }\n else if (this.execEvenly && res.msBeforeNext > 0 && !res.isFirstInDuration) {\n // Execute evenly\n let delayMs = Math.ceil(res.msBeforeNext / (res.remainingPoints + 2));\n if (delayMs < this.execEvenlyMinDelayMs) {\n delayMs = res.consumedPoints * this.execEvenlyMinDelayMs;\n }\n await delay(delayMs);\n }\n return res;\n }\n penalty(key, points = 1, options = {}) {\n const rlKey = this.getKey(key);\n const secDuration = this._getKeySecDuration(options);\n const res = this.memoryStorage.incrby(rlKey, points, secDuration);\n res.remainingPoints = Math.max(this.points - res.consumedPoints, 0);\n return res;\n }\n reward(key, points = 1, options = {}) {\n const rlKey = this.getKey(key);\n const secDuration = this._getKeySecDuration(options);\n const res = this.memoryStorage.incrby(rlKey, -points, secDuration);\n res.remainingPoints = Math.max(this.points - res.consumedPoints, 0);\n return res;\n }\n /**\n * Block any key for secDuration seconds\n *\n * @param key\n * @param secDuration\n */\n block(key, secDuration) {\n const msDuration = secDuration * 1000;\n const initPoints = this.points + 1;\n this.memoryStorage.set(this.getKey(key), initPoints, secDuration);\n return {\n remainingPoints: 0,\n msBeforeNext: msDuration === 0 ? -1 : msDuration,\n consumedPoints: initPoints,\n isFirstInDuration: false\n };\n }\n set(key, points, secDuration = 0) {\n const msDuration = (secDuration >= 0 ? secDuration : this.duration) * 1000;\n this.memoryStorage.set(this.getKey(key), points, secDuration);\n return {\n remainingPoints: 0,\n msBeforeNext: msDuration === 0 ? -1 : msDuration,\n consumedPoints: points,\n isFirstInDuration: false\n };\n }\n get(key) {\n const res = this.memoryStorage.get(this.getKey(key));\n if (res != null) {\n res.remainingPoints = Math.max(this.points - res.consumedPoints, 0);\n }\n return res;\n }\n delete(key) {\n this.memoryStorage.delete(this.getKey(key));\n }\n _getKeySecDuration(options) {\n if (options?.customDuration != null && options.customDuration >= 0) {\n return options.customDuration;\n }\n return this.duration;\n }\n getKey(key) {\n return this.keyPrefix.length > 0 ? `${this.keyPrefix}:${key}` : key;\n }\n parseKey(rlKey) {\n return rlKey.substring(this.keyPrefix.length);\n }\n}\nclass MemoryStorage {\n storage;\n constructor() {\n this.storage = new Map();\n }\n incrby(key, value, durationSec) {\n const existing = this.storage.get(key);\n if (existing != null) {\n const msBeforeExpires = existing.expiresAt != null\n ? existing.expiresAt.getTime() - new Date().getTime()\n : -1;\n if (existing.expiresAt == null || msBeforeExpires > 0) {\n // Change value\n existing.value += value;\n return {\n remainingPoints: 0,\n msBeforeNext: msBeforeExpires,\n consumedPoints: existing.value,\n isFirstInDuration: false\n };\n }\n return this.set(key, value, durationSec);\n }\n return this.set(key, value, durationSec);\n }\n set(key, value, durationSec) {\n const durationMs = durationSec * 1000;\n const existing = this.storage.get(key);\n if (existing != null) {\n clearTimeout(existing.timeoutId);\n }\n const record = {\n value,\n expiresAt: durationMs > 0 ? new Date(Date.now() + durationMs) : undefined\n };\n this.storage.set(key, record);\n if (durationMs > 0) {\n record.timeoutId = setTimeout(() => {\n this.storage.delete(key);\n }, durationMs);\n if (record.timeoutId.unref != null) {\n record.timeoutId.unref();\n }\n }\n return {\n remainingPoints: 0,\n msBeforeNext: durationMs === 0 ? -1 : durationMs,\n consumedPoints: record.value,\n isFirstInDuration: true\n };\n }\n get(key) {\n const existing = this.storage.get(key);\n if (existing != null) {\n const msBeforeExpires = existing.expiresAt != null\n ? existing.expiresAt.getTime() - new Date().getTime()\n : -1;\n return {\n remainingPoints: 0,\n msBeforeNext: msBeforeExpires,\n consumedPoints: existing.value,\n isFirstInDuration: false\n };\n }\n }\n delete(key) {\n const record = this.storage.get(key);\n if (record != null) {\n if (record.timeoutId != null) {\n clearTimeout(record.timeoutId);\n }\n this.storage.delete(key);\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=rate-limiter.js.map","export var MessageTypes;\n(function (MessageTypes) {\n MessageTypes[MessageTypes[\"NEW_STREAM\"] = 0] = \"NEW_STREAM\";\n MessageTypes[MessageTypes[\"MESSAGE_RECEIVER\"] = 1] = \"MESSAGE_RECEIVER\";\n MessageTypes[MessageTypes[\"MESSAGE_INITIATOR\"] = 2] = \"MESSAGE_INITIATOR\";\n MessageTypes[MessageTypes[\"CLOSE_RECEIVER\"] = 3] = \"CLOSE_RECEIVER\";\n MessageTypes[MessageTypes[\"CLOSE_INITIATOR\"] = 4] = \"CLOSE_INITIATOR\";\n MessageTypes[MessageTypes[\"RESET_RECEIVER\"] = 5] = \"RESET_RECEIVER\";\n MessageTypes[MessageTypes[\"RESET_INITIATOR\"] = 6] = \"RESET_INITIATOR\";\n})(MessageTypes || (MessageTypes = {}));\nexport const MessageTypeNames = Object.freeze({\n 0: 'NEW_STREAM',\n 1: 'MESSAGE_RECEIVER',\n 2: 'MESSAGE_INITIATOR',\n 3: 'CLOSE_RECEIVER',\n 4: 'CLOSE_INITIATOR',\n 5: 'RESET_RECEIVER',\n 6: 'RESET_INITIATOR'\n});\nexport const InitiatorMessageTypes = Object.freeze({\n NEW_STREAM: MessageTypes.NEW_STREAM,\n MESSAGE: MessageTypes.MESSAGE_INITIATOR,\n CLOSE: MessageTypes.CLOSE_INITIATOR,\n RESET: MessageTypes.RESET_INITIATOR\n});\nexport const ReceiverMessageTypes = Object.freeze({\n MESSAGE: MessageTypes.MESSAGE_RECEIVER,\n CLOSE: MessageTypes.CLOSE_RECEIVER,\n RESET: MessageTypes.RESET_RECEIVER\n});\n//# sourceMappingURL=message-types.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { MessageTypeNames, MessageTypes } from './message-types.js';\nexport const MAX_MSG_SIZE = 1 << 20; // 1MB\nexport const MAX_MSG_QUEUE_SIZE = 4 << 20; // 4MB\nexport class Decoder {\n _buffer;\n _headerInfo;\n _maxMessageSize;\n _maxUnprocessedMessageQueueSize;\n constructor(maxMessageSize = MAX_MSG_SIZE, maxUnprocessedMessageQueueSize = MAX_MSG_QUEUE_SIZE) {\n this._buffer = new Uint8ArrayList();\n this._headerInfo = null;\n this._maxMessageSize = maxMessageSize;\n this._maxUnprocessedMessageQueueSize = maxUnprocessedMessageQueueSize;\n }\n write(chunk) {\n if (chunk == null || chunk.length === 0) {\n return [];\n }\n this._buffer.append(chunk);\n if (this._buffer.byteLength > this._maxUnprocessedMessageQueueSize) {\n throw Object.assign(new Error('unprocessed message queue size too large!'), { code: 'ERR_MSG_QUEUE_TOO_BIG' });\n }\n const msgs = [];\n while (this._buffer.length !== 0) {\n if (this._headerInfo == null) {\n try {\n this._headerInfo = this._decodeHeader(this._buffer);\n }\n catch (err) {\n if (err.code === 'ERR_MSG_TOO_BIG') {\n throw err;\n }\n break; // We haven't received enough data yet\n }\n }\n const { id, type, length, offset } = this._headerInfo;\n const bufferedDataLength = this._buffer.length - offset;\n if (bufferedDataLength < length) {\n break; // not enough data yet\n }\n const msg = {\n id,\n type\n };\n if (type === MessageTypes.NEW_STREAM || type === MessageTypes.MESSAGE_INITIATOR || type === MessageTypes.MESSAGE_RECEIVER) {\n msg.data = this._buffer.sublist(offset, offset + length);\n }\n msgs.push(msg);\n this._buffer.consume(offset + length);\n this._headerInfo = null;\n }\n return msgs;\n }\n /**\n * Attempts to decode the message header from the buffer\n */\n _decodeHeader(data) {\n const { value: h, offset } = readVarInt(data);\n const { value: length, offset: end } = readVarInt(data, offset);\n const type = h & 7;\n // @ts-expect-error h is a number not a CODE\n if (MessageTypeNames[type] == null) {\n throw new Error(`Invalid type received: ${type}`);\n }\n // test message type varint + data length\n if (length > this._maxMessageSize) {\n throw Object.assign(new Error('message size too large!'), { code: 'ERR_MSG_TOO_BIG' });\n }\n // @ts-expect-error h is a number not a CODE\n return { id: h >> 3, type, offset: offset + end, length };\n }\n}\nconst MSB = 0x80;\nconst REST = 0x7F;\nfunction readVarInt(buf, offset = 0) {\n let res = 0;\n let shift = 0;\n let counter = offset;\n let b;\n const l = buf.length;\n do {\n if (counter >= l || shift > 49) {\n offset = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf.get(counter++);\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB);\n offset = counter - offset;\n return {\n value: res,\n offset\n };\n}\n//# sourceMappingURL=decode.js.map","import * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { allocUnsafe } from 'uint8arrays/alloc';\nimport { MessageTypes } from './message-types.js';\nconst POOL_SIZE = 10 * 1024;\nclass Encoder {\n _pool;\n _poolOffset;\n constructor() {\n this._pool = allocUnsafe(POOL_SIZE);\n this._poolOffset = 0;\n }\n /**\n * Encodes the given message and adds it to the passed list\n */\n write(msg, list) {\n const pool = this._pool;\n let offset = this._poolOffset;\n varint.encode(msg.id << 3 | msg.type, pool, offset);\n offset += varint.encodingLength(msg.id << 3 | msg.type);\n if ((msg.type === MessageTypes.NEW_STREAM || msg.type === MessageTypes.MESSAGE_INITIATOR || msg.type === MessageTypes.MESSAGE_RECEIVER) && msg.data != null) {\n varint.encode(msg.data.length, pool, offset);\n offset += varint.encodingLength(msg.data.length);\n }\n else {\n varint.encode(0, pool, offset);\n offset += varint.encodingLength(0);\n }\n const header = pool.subarray(this._poolOffset, offset);\n if (POOL_SIZE - offset < 100) {\n this._pool = allocUnsafe(POOL_SIZE);\n this._poolOffset = 0;\n }\n else {\n this._poolOffset = offset;\n }\n list.append(header);\n if ((msg.type === MessageTypes.NEW_STREAM || msg.type === MessageTypes.MESSAGE_INITIATOR || msg.type === MessageTypes.MESSAGE_RECEIVER) && msg.data != null) {\n list.append(msg.data);\n }\n }\n}\nconst encoder = new Encoder();\n/**\n * Encode and yield one or more messages\n */\nexport async function* encode(source) {\n for await (const message of source) {\n const list = new Uint8ArrayList();\n encoder.write(message, list);\n yield list;\n }\n}\n//# sourceMappingURL=encode.js.map","import { AbstractStream } from '@libp2p/utils/abstract-stream';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { MAX_MSG_SIZE } from './decode.js';\nimport { InitiatorMessageTypes, ReceiverMessageTypes } from './message-types.js';\nexport class MplexStream extends AbstractStream {\n name;\n streamId;\n send;\n types;\n maxDataSize;\n constructor(init) {\n super(init);\n this.types = init.direction === 'outbound' ? InitiatorMessageTypes : ReceiverMessageTypes;\n this.send = init.send;\n this.name = init.name;\n this.streamId = init.streamId;\n this.maxDataSize = init.maxDataSize;\n }\n async sendNewStream() {\n await this.send({ id: this.streamId, type: InitiatorMessageTypes.NEW_STREAM, data: new Uint8ArrayList(uint8ArrayFromString(this.name)) });\n }\n async sendData(data) {\n data = data.sublist();\n while (data.byteLength > 0) {\n const toSend = Math.min(data.byteLength, this.maxDataSize);\n await this.send({\n id: this.streamId,\n type: this.types.MESSAGE,\n data: data.sublist(0, toSend)\n });\n data.consume(toSend);\n }\n }\n async sendReset() {\n await this.send({ id: this.streamId, type: this.types.RESET });\n }\n async sendCloseWrite() {\n await this.send({ id: this.streamId, type: this.types.CLOSE });\n }\n async sendCloseRead() {\n // mplex does not support close read, only close write\n }\n}\nexport function createStream(options) {\n const { id, name, send, onEnd, type = 'initiator', maxMsgSize = MAX_MSG_SIZE } = options;\n return new MplexStream({\n id: type === 'initiator' ? (`i${id}`) : `r${id}`,\n streamId: id,\n name: `${name ?? id}`,\n direction: type === 'initiator' ? 'outbound' : 'inbound',\n maxDataSize: maxMsgSize,\n onEnd,\n send,\n log: options.logger.forComponent(`libp2p:mplex:stream:${type}:${id}`)\n });\n}\n//# sourceMappingURL=stream.js.map","import { CodeError } from '@libp2p/interface';\nimport { closeSource } from '@libp2p/utils/close-source';\nimport { RateLimiter } from '@libp2p/utils/rate-limiter';\nimport { pipe } from 'it-pipe';\nimport { pushable } from 'it-pushable';\nimport { toString as uint8ArrayToString } from 'uint8arrays';\nimport { Decoder } from './decode.js';\nimport { encode } from './encode.js';\nimport { MessageTypes, MessageTypeNames } from './message-types.js';\nimport { createStream } from './stream.js';\nconst MAX_STREAMS_INBOUND_STREAMS_PER_CONNECTION = 1024;\nconst MAX_STREAMS_OUTBOUND_STREAMS_PER_CONNECTION = 1024;\nconst MAX_STREAM_BUFFER_SIZE = 1024 * 1024 * 4; // 4MB\nconst DISCONNECT_THRESHOLD = 5;\nconst CLOSE_TIMEOUT = 500;\nfunction printMessage(msg) {\n const output = {\n ...msg,\n type: `${MessageTypeNames[msg.type]} (${msg.type})`\n };\n if (msg.type === MessageTypes.NEW_STREAM) {\n output.data = uint8ArrayToString(msg.data instanceof Uint8Array ? msg.data : msg.data.subarray());\n }\n if (msg.type === MessageTypes.MESSAGE_INITIATOR || msg.type === MessageTypes.MESSAGE_RECEIVER) {\n output.data = uint8ArrayToString(msg.data instanceof Uint8Array ? msg.data : msg.data.subarray(), 'base16');\n }\n return output;\n}\nexport class MplexStreamMuxer {\n protocol = '/mplex/6.7.0';\n sink;\n source;\n log;\n _streamId;\n _streams;\n _init;\n _source;\n closeController;\n rateLimiter;\n closeTimeout;\n logger;\n constructor(components, init) {\n init = init ?? {};\n this.log = components.logger.forComponent('libp2p:mplex');\n this.logger = components.logger;\n this._streamId = 0;\n this._streams = {\n /**\n * Stream to ids map\n */\n initiators: new Map(),\n /**\n * Stream to ids map\n */\n receivers: new Map()\n };\n this._init = init;\n this.closeTimeout = init.closeTimeout ?? CLOSE_TIMEOUT;\n /**\n * An iterable sink\n */\n this.sink = this._createSink();\n /**\n * An iterable source\n */\n this._source = pushable({\n objectMode: true,\n onEnd: () => {\n // the source has ended, we can't write any more messages to gracefully\n // close streams so all we can do is destroy them\n for (const stream of this._streams.initiators.values()) {\n stream.destroy();\n }\n for (const stream of this._streams.receivers.values()) {\n stream.destroy();\n }\n }\n });\n this.source = pipe(this._source, source => encode(source));\n /**\n * Close controller\n */\n this.closeController = new AbortController();\n this.rateLimiter = new RateLimiter({\n points: init.disconnectThreshold ?? DISCONNECT_THRESHOLD,\n duration: 1\n });\n }\n /**\n * Returns a Map of streams and their ids\n */\n get streams() {\n // Inbound and Outbound streams may have the same ids, so we need to make those unique\n const streams = [];\n for (const stream of this._streams.initiators.values()) {\n streams.push(stream);\n }\n for (const stream of this._streams.receivers.values()) {\n streams.push(stream);\n }\n return streams;\n }\n /**\n * Initiate a new stream with the given name. If no name is\n * provided, the id of the stream will be used.\n */\n newStream(name) {\n if (this.closeController.signal.aborted) {\n throw new Error('Muxer already closed');\n }\n const id = this._streamId++;\n name = name == null ? id.toString() : name.toString();\n const registry = this._streams.initiators;\n return this._newStream({ id, name, type: 'initiator', registry });\n }\n /**\n * Close or abort all tracked streams and stop the muxer\n */\n async close(options) {\n if (this.closeController.signal.aborted) {\n return;\n }\n const signal = options?.signal ?? AbortSignal.timeout(this.closeTimeout);\n try {\n // try to gracefully close all streams\n await Promise.all(this.streams.map(async (s) => s.close({\n signal\n })));\n this._source.end();\n // try to gracefully close the muxer\n await this._source.onEmpty({\n signal\n });\n this.closeController.abort();\n }\n catch (err) {\n this.abort(err);\n }\n }\n abort(err) {\n if (this.closeController.signal.aborted) {\n return;\n }\n this.streams.forEach(s => { s.abort(err); });\n this.closeController.abort(err);\n }\n /**\n * Called whenever an inbound stream is created\n */\n _newReceiverStream(options) {\n const { id, name } = options;\n const registry = this._streams.receivers;\n return this._newStream({ id, name, type: 'receiver', registry });\n }\n _newStream(options) {\n const { id, name, type, registry } = options;\n this.log('new %s stream %s', type, id);\n if (type === 'initiator' && this._streams.initiators.size === (this._init.maxOutboundStreams ?? MAX_STREAMS_OUTBOUND_STREAMS_PER_CONNECTION)) {\n throw new CodeError('Too many outbound streams open', 'ERR_TOO_MANY_OUTBOUND_STREAMS');\n }\n if (registry.has(id)) {\n throw new Error(`${type} stream ${id} already exists!`);\n }\n const send = async (msg) => {\n if (this.log.enabled) {\n this.log.trace('%s stream %s send', type, id, printMessage(msg));\n }\n this._source.push(msg);\n };\n const onEnd = () => {\n this.log('%s stream with id %s and protocol %s ended', type, id, stream.protocol);\n registry.delete(id);\n if (this._init.onStreamEnd != null) {\n this._init.onStreamEnd(stream);\n }\n };\n const stream = createStream({ id, name, send, type, onEnd, maxMsgSize: this._init.maxMsgSize, logger: this.logger });\n registry.set(id, stream);\n return stream;\n }\n /**\n * Creates a sink with an abortable source. Incoming messages will\n * also have their size restricted. All messages will be varint decoded.\n */\n _createSink() {\n const sink = async (source) => {\n const abortListener = () => {\n closeSource(source, this.log);\n };\n this.closeController.signal.addEventListener('abort', abortListener);\n try {\n const decoder = new Decoder(this._init.maxMsgSize, this._init.maxUnprocessedMessageQueueSize);\n for await (const chunk of source) {\n for (const msg of decoder.write(chunk)) {\n await this._handleIncoming(msg);\n }\n }\n this._source.end();\n }\n catch (err) {\n this.log('error in sink', err);\n this._source.end(err); // End the source with an error\n }\n finally {\n this.closeController.signal.removeEventListener('abort', abortListener);\n }\n };\n return sink;\n }\n async _handleIncoming(message) {\n const { id, type } = message;\n if (this.log.enabled) {\n this.log.trace('incoming message', printMessage(message));\n }\n // Create a new stream?\n if (message.type === MessageTypes.NEW_STREAM) {\n if (this._streams.receivers.size === (this._init.maxInboundStreams ?? MAX_STREAMS_INBOUND_STREAMS_PER_CONNECTION)) {\n this.log('too many inbound streams open');\n // not going to allow this stream, send the reset message manually\n // instead of setting it up just to tear it down\n this._source.push({\n id,\n type: MessageTypes.RESET_RECEIVER\n });\n // if we've hit our stream limit, and the remote keeps trying to open\n // more new streams, if they are doing this very quickly maybe they\n // are attacking us and we should close the connection\n try {\n await this.rateLimiter.consume('new-stream', 1);\n }\n catch {\n this.log('rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection');\n // since there's no backpressure in mplex, the only thing we can really do to protect ourselves is close the connection\n this.abort(new Error('Too many open streams'));\n return;\n }\n return;\n }\n const stream = this._newReceiverStream({ id, name: uint8ArrayToString(message.data instanceof Uint8Array ? message.data : message.data.subarray()) });\n if (this._init.onIncomingStream != null) {\n this._init.onIncomingStream(stream);\n }\n return;\n }\n const list = (type & 1) === 1 ? this._streams.initiators : this._streams.receivers;\n const stream = list.get(id);\n if (stream == null) {\n this.log('missing stream %s for message type %s', id, MessageTypeNames[type]);\n // if the remote keeps sending us messages for streams that have been\n // closed or were never opened they may be attacking us so if they do\n // this very quickly all we can do is close the connection\n try {\n await this.rateLimiter.consume('missing-stream', 1);\n }\n catch {\n this.log('rate limit hit when receiving messages for streams that do not exist - closing remote connection');\n // since there's no backpressure in mplex, the only thing we can really do to protect ourselves is close the connection\n this.abort(new Error('Too many messages for missing streams'));\n return;\n }\n return;\n }\n const maxBufferSize = this._init.maxStreamBufferSize ?? MAX_STREAM_BUFFER_SIZE;\n try {\n switch (type) {\n case MessageTypes.MESSAGE_INITIATOR:\n case MessageTypes.MESSAGE_RECEIVER:\n if (stream.sourceReadableLength() > maxBufferSize) {\n // Stream buffer has got too large, reset the stream\n this._source.push({\n id: message.id,\n type: type === MessageTypes.MESSAGE_INITIATOR ? MessageTypes.RESET_RECEIVER : MessageTypes.RESET_INITIATOR\n });\n // Inform the stream consumer they are not fast enough\n throw new CodeError('Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers', 'ERR_STREAM_INPUT_BUFFER_FULL');\n }\n // We got data from the remote, push it into our local stream\n stream.sourcePush(message.data);\n break;\n case MessageTypes.CLOSE_INITIATOR:\n case MessageTypes.CLOSE_RECEIVER:\n // The remote has stopped writing, so we can stop reading\n stream.remoteCloseWrite();\n break;\n case MessageTypes.RESET_INITIATOR:\n case MessageTypes.RESET_RECEIVER:\n // The remote has errored, stop reading and writing to the stream immediately\n stream.reset();\n break;\n default:\n this.log('unknown message type %s', type);\n }\n }\n catch (err) {\n this.log.error('error while processing message', err);\n stream.abort(err);\n }\n }\n}\n//# sourceMappingURL=mplex.js.map","/**\n * @packageDocumentation\n *\n * This is a [simple stream multiplexer(https://docs.libp2p.io/concepts/multiplex/mplex/) that has been deprecated.\n *\n * Please use [@chainsafe/libp2p-yamux](https://www.npmjs.com/package/@chainsafe/libp2p-yamux) instead.\n *\n * @example\n *\n * ```TypeScript\n * import { mplex } from '@libp2p/mplex'\n * import { pipe } from 'it-pipe'\n *\n * const factory = mplex()\n *\n * const muxer = factory.createStreamMuxer(components, {\n * onStream: stream => { // Receive a duplex stream from the remote\n * // ...receive data from the remote and optionally send data back\n * },\n * onStreamEnd: stream => {\n * // ...handle any tracking you may need of stream closures\n * }\n * })\n *\n * pipe(conn, muxer, conn) // conn is duplex connection to another peer\n *\n * const stream = muxer.newStream() // Create a new duplex stream to the remote\n *\n * // Use the duplex stream to send some data to the remote...\n * pipe([1, 2, 3], stream)\n * ```\n */\nimport { serviceCapabilities } from '@libp2p/interface';\nimport { MplexStreamMuxer } from './mplex.js';\nclass Mplex {\n protocol = '/mplex/6.7.0';\n _init;\n components;\n constructor(components, init = {}) {\n this.components = components;\n this._init = init;\n }\n [Symbol.toStringTag] = '@libp2p/mplex';\n [serviceCapabilities] = [\n '@libp2p/stream-multiplexing'\n ];\n createStreamMuxer(init = {}) {\n return new MplexStreamMuxer(this.components, {\n ...init,\n ...this._init\n });\n }\n}\nexport function mplex(init = {}) {\n return (components) => new Mplex(components, init);\n}\n//# sourceMappingURL=index.js.map","export const PING_PROTOCOL = '/ipfs/ping/1.0.0';\nexport const PING_LENGTH = 32;\nexport const PROTOCOL_VERSION = '1.0.0';\nexport const PROTOCOL_NAME = 'ping';\nexport const PROTOCOL_PREFIX = 'ipfs';\nexport const TIMEOUT = 10000;\n// See https://github.com/libp2p/specs/blob/d4b5fb0152a6bb86cfd9ea/ping/ping.md?plain=1#L38-L43\n// The dialing peer MUST NOT keep more than one outbound stream for the ping protocol per peer.\n// The listening peer SHOULD accept at most two streams per peer since cross-stream behavior is\n// non-linear and stream writes occur asynchronously. The listening peer may perceive the\n// dialing peer closing and opening the wrong streams (for instance, closing stream B and\n// opening stream A even though the dialing peer is opening stream B and closing stream A).\nexport const MAX_INBOUND_STREAMS = 2;\nexport const MAX_OUTBOUND_STREAMS = 1;\nexport const ERR_WRONG_PING_ACK = 'ERR_WRONG_PING_ACK';\n//# sourceMappingURL=constants.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { CodeError, ERR_INVALID_MESSAGE, ERR_TIMEOUT } from '@libp2p/interface';\nimport first from 'it-first';\nimport { pipe } from 'it-pipe';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { PROTOCOL_PREFIX, PROTOCOL_NAME, PING_LENGTH, PROTOCOL_VERSION, TIMEOUT, MAX_INBOUND_STREAMS, MAX_OUTBOUND_STREAMS, ERR_WRONG_PING_ACK } from './constants.js';\nexport class PingService {\n protocol;\n components;\n started;\n timeout;\n maxInboundStreams;\n maxOutboundStreams;\n runOnTransientConnection;\n log;\n constructor(components, init = {}) {\n this.components = components;\n this.log = components.logger.forComponent('libp2p:ping');\n this.started = false;\n this.protocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;\n this.timeout = init.timeout ?? TIMEOUT;\n this.maxInboundStreams = init.maxInboundStreams ?? MAX_INBOUND_STREAMS;\n this.maxOutboundStreams = init.maxOutboundStreams ?? MAX_OUTBOUND_STREAMS;\n this.runOnTransientConnection = init.runOnTransientConnection ?? true;\n this.handleMessage = this.handleMessage.bind(this);\n }\n [Symbol.toStringTag] = '@libp2p/ping';\n async start() {\n await this.components.registrar.handle(this.protocol, this.handleMessage, {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams,\n runOnTransientConnection: this.runOnTransientConnection\n });\n this.started = true;\n }\n async stop() {\n await this.components.registrar.unhandle(this.protocol);\n this.started = false;\n }\n isStarted() {\n return this.started;\n }\n /**\n * A handler to register with Libp2p to process ping messages\n */\n handleMessage(data) {\n this.log('incoming ping from %p', data.connection.remotePeer);\n const { stream } = data;\n const start = Date.now();\n const signal = AbortSignal.timeout(this.timeout);\n signal.addEventListener('abort', () => {\n stream?.abort(new CodeError('ping timeout', ERR_TIMEOUT));\n });\n void pipe(stream, async function* (source) {\n let received = 0;\n for await (const buf of source) {\n received += buf.byteLength;\n if (received > PING_LENGTH) {\n stream?.abort(new CodeError('Too much data received', ERR_INVALID_MESSAGE));\n return;\n }\n yield buf;\n }\n }, stream)\n .catch(err => {\n this.log.error('incoming ping from %p failed with error', data.connection.remotePeer, err);\n stream?.abort(err);\n })\n .finally(() => {\n const ms = Date.now() - start;\n this.log('incoming ping from %p complete in %dms', data.connection.remotePeer, ms);\n });\n }\n /**\n * Ping a given peer and wait for its response, getting the operation latency.\n */\n async ping(peer, options = {}) {\n this.log('pinging %p', peer);\n const start = Date.now();\n const data = randomBytes(PING_LENGTH);\n const connection = await this.components.connectionManager.openConnection(peer, options);\n let stream;\n let onAbort = () => { };\n if (options.signal == null) {\n const signal = AbortSignal.timeout(this.timeout);\n options = {\n ...options,\n signal\n };\n }\n try {\n stream = await connection.newStream(this.protocol, {\n ...options,\n runOnTransientConnection: this.runOnTransientConnection\n });\n onAbort = () => {\n stream?.abort(new CodeError('ping timeout', ERR_TIMEOUT));\n };\n // make stream abortable\n options.signal?.addEventListener('abort', onAbort, { once: true });\n const result = await pipe([data], stream, async (source) => first(source));\n const ms = Date.now() - start;\n if (result == null) {\n throw new CodeError(`Did not receive a ping ack after ${ms}ms`, ERR_WRONG_PING_ACK);\n }\n if (!uint8ArrayEquals(data, result.subarray())) {\n throw new CodeError(`Received wrong ping ack after ${ms}ms`, ERR_WRONG_PING_ACK);\n }\n this.log('ping %p complete in %dms', connection.remotePeer, ms);\n return ms;\n }\n catch (err) {\n this.log.error('error while pinging %p', connection.remotePeer, err);\n stream?.abort(err);\n throw err;\n }\n finally {\n options.signal?.removeEventListener('abort', onAbort);\n if (stream != null) {\n await stream.close();\n }\n }\n }\n}\n//# sourceMappingURL=ping.js.map","/**\n * @packageDocumentation\n *\n * The ping service implements the [libp2p ping spec](https://github.com/libp2p/specs/blob/master/ping/ping.md) allowing you to make a latency measurement to a remote peer.\n *\n * @example\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { ping } from '@libp2p/ping'\n * import { multiaddr } from '@multiformats/multiaddr'\n *\n * const node = await createLibp2p({\n * services: {\n * ping: ping()\n * }\n * })\n *\n * const rtt = await node.services.ping.ping(multiaddr('/ip4/...'))\n *\n * console.info(rtt)\n * ```\n */\nimport { PingService as PingServiceClass } from './ping.js';\nexport function ping(init = {}) {\n return (components) => new PingServiceClass(components, init);\n}\nexport { PING_PROTOCOL } from './constants.js';\n//# sourceMappingURL=index.js.map","import { CodeError } from '@libp2p/interface';\nexport var codes;\n(function (codes) {\n codes[\"ERR_ALREADY_ABORTED\"] = \"ERR_ALREADY_ABORTED\";\n codes[\"ERR_DATA_CHANNEL\"] = \"ERR_DATA_CHANNEL\";\n codes[\"ERR_CONNECTION_CLOSED\"] = \"ERR_CONNECTION_CLOSED\";\n codes[\"ERR_HASH_NOT_SUPPORTED\"] = \"ERR_HASH_NOT_SUPPORTED\";\n codes[\"ERR_INVALID_MULTIADDR\"] = \"ERR_INVALID_MULTIADDR\";\n codes[\"ERR_INVALID_FINGERPRINT\"] = \"ERR_INVALID_FINGERPRINT\";\n codes[\"ERR_INVALID_PARAMETERS\"] = \"ERR_INVALID_PARAMETERS\";\n codes[\"ERR_NOT_IMPLEMENTED\"] = \"ERR_NOT_IMPLEMENTED\";\n codes[\"ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS\"] = \"ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS\";\n codes[\"ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS\"] = \"ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS\";\n})(codes || (codes = {}));\nexport class WebRTCTransportError extends CodeError {\n constructor(msg, code) {\n super(`WebRTC transport error: ${msg}`, code ?? '');\n this.name = 'WebRTCTransportError';\n }\n}\nexport class ConnectionClosedError extends WebRTCTransportError {\n constructor(state, msg) {\n super(`peerconnection moved to state: ${state}: ${msg}`, codes.ERR_CONNECTION_CLOSED);\n this.name = 'WebRTC/ConnectionClosed';\n }\n}\nexport function connectionClosedError(state, msg) {\n return new ConnectionClosedError(state, msg);\n}\nexport class DataChannelError extends WebRTCTransportError {\n constructor(streamLabel, msg) {\n super(`[stream: ${streamLabel}] data channel error: ${msg}`, codes.ERR_DATA_CHANNEL);\n this.name = 'WebRTC/DataChannelError';\n }\n}\nexport function dataChannelError(streamLabel, msg) {\n return new DataChannelError(streamLabel, msg);\n}\nexport class InappropriateMultiaddrError extends WebRTCTransportError {\n constructor(msg) {\n super(`There was a problem with the Multiaddr which was passed in: ${msg}`, codes.ERR_INVALID_MULTIADDR);\n this.name = 'WebRTC/InappropriateMultiaddrError';\n }\n}\nexport function inappropriateMultiaddr(msg) {\n return new InappropriateMultiaddrError(msg);\n}\nexport class InvalidArgumentError extends WebRTCTransportError {\n constructor(msg) {\n super(`There was a problem with a provided argument: ${msg}`, codes.ERR_INVALID_PARAMETERS);\n this.name = 'WebRTC/InvalidArgumentError';\n }\n}\nexport function invalidArgument(msg) {\n return new InvalidArgumentError(msg);\n}\nexport class InvalidFingerprintError extends WebRTCTransportError {\n constructor(fingerprint, source) {\n super(`Invalid fingerprint \"${fingerprint}\" within ${source}`, codes.ERR_INVALID_FINGERPRINT);\n this.name = 'WebRTC/InvalidFingerprintError';\n }\n}\nexport function invalidFingerprint(fingerprint, source) {\n return new InvalidFingerprintError(fingerprint, source);\n}\nexport class OperationAbortedError extends WebRTCTransportError {\n constructor(context, abortReason) {\n super(`Signalled to abort because (${abortReason}}) ${context}`, codes.ERR_ALREADY_ABORTED);\n this.name = 'WebRTC/OperationAbortedError';\n }\n}\nexport function operationAborted(context, reason) {\n return new OperationAbortedError(context, reason);\n}\nexport class OverStreamLimitError extends WebRTCTransportError {\n constructor(msg) {\n const code = msg.startsWith('inbound') ? codes.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS : codes.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS;\n super(msg, code);\n this.name = 'WebRTC/OverStreamLimitError';\n }\n}\nexport function overStreamLimit(dir, proto) {\n return new OverStreamLimitError(`${dir} stream limit reached for protocol - ${proto}`);\n}\nexport class UnimplementedError extends WebRTCTransportError {\n constructor(methodName) {\n super(`A method (${methodName}) was called though it has been intentionally left unimplemented.`, codes.ERR_NOT_IMPLEMENTED);\n this.name = 'WebRTC/UnimplementedError';\n }\n}\nexport function unimplemented(methodName) {\n return new UnimplementedError(methodName);\n}\nexport class UnsupportedHashAlgorithmError extends WebRTCTransportError {\n constructor(algo) {\n super(`unsupported hash algorithm code: ${algo} please see the codes at https://github.com/multiformats/multicodec/blob/master/table.csv `, codes.ERR_HASH_NOT_SUPPORTED);\n this.name = 'WebRTC/UnsupportedHashAlgorithmError';\n }\n}\nexport function unsupportedHashAlgorithmCode(code) {\n return new UnsupportedHashAlgorithmError(code);\n}\n//# sourceMappingURL=error.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","/**\n * STUN servers help clients discover their own public IPs.\n *\n * Using five or more servers causes warnings to be printed so\n * ensure we limit it to max x4\n *\n * @see https://gist.github.com/mondain/b0ec1cf5f60ae726202e\n */\nexport const DEFAULT_ICE_SERVERS = [\n 'stun:stun.l.google.com:19302',\n 'stun:global.stun.twilio.com:3478',\n 'stun:stun.cloudflare.com:3478',\n 'stun:stun.services.mozilla.com:3478'\n];\n//# sourceMappingURL=constants.js.map","import { detect } from 'detect-browser';\nimport pDefer from 'p-defer';\nimport pTimeout from 'p-timeout';\nimport { DEFAULT_ICE_SERVERS } from './constants.js';\nconst browser = detect();\nexport const isFirefox = ((browser != null) && browser.name === 'firefox');\nexport const nopSource = async function* nop() { };\nexport const nopSink = async (_) => { };\nexport const DATA_CHANNEL_DRAIN_TIMEOUT = 30 * 1000;\nexport function drainAndClose(channel, direction, drainTimeout = DATA_CHANNEL_DRAIN_TIMEOUT, options) {\n if (channel.readyState !== 'open') {\n return;\n }\n void Promise.resolve()\n .then(async () => {\n // wait for bufferedAmount to become zero\n if (channel.bufferedAmount > 0) {\n options.log('%s drain channel with %d buffered bytes', direction, channel.bufferedAmount);\n const deferred = pDefer();\n let drained = false;\n channel.bufferedAmountLowThreshold = 0;\n const closeListener = () => {\n if (!drained) {\n options.log('%s drain channel closed before drain', direction);\n deferred.resolve();\n }\n };\n channel.addEventListener('close', closeListener, {\n once: true\n });\n channel.addEventListener('bufferedamountlow', () => {\n drained = true;\n channel.removeEventListener('close', closeListener);\n deferred.resolve();\n });\n await pTimeout(deferred.promise, {\n milliseconds: drainTimeout\n });\n }\n })\n .then(async () => {\n // only close if the channel is still open\n if (channel.readyState === 'open') {\n channel.close();\n }\n })\n .catch(err => {\n options.log.error('error closing outbound stream', err);\n });\n}\nexport async function getRtcConfiguration(config) {\n config = config ?? {};\n if (typeof config === 'function') {\n config = await config();\n }\n config.iceServers = config.iceServers ?? DEFAULT_ICE_SERVERS.map(url => ({\n urls: [\n url\n ]\n }));\n return config;\n}\n//# sourceMappingURL=util.js.map","import { nopSink, nopSource } from './util.js';\nexport class WebRTCMultiaddrConnection {\n log;\n /**\n * WebRTC Peer Connection\n */\n peerConnection;\n /**\n * The multiaddr address used to communicate with the remote peer\n */\n remoteAddr;\n /**\n * Holds the lifecycle times of the connection\n */\n timeline;\n /**\n * Optional metrics counter group for this connection\n */\n metrics;\n /**\n * The stream source, a no-op as the transport natively supports multiplexing\n */\n source = nopSource();\n /**\n * The stream destination, a no-op as the transport natively supports multiplexing\n */\n sink = nopSink;\n constructor(components, init) {\n this.log = components.logger.forComponent('libp2p:webrtc:maconn');\n this.remoteAddr = init.remoteAddr;\n this.timeline = init.timeline;\n this.peerConnection = init.peerConnection;\n const initialState = this.peerConnection.connectionState;\n this.peerConnection.onconnectionstatechange = () => {\n this.log.trace('peer connection state change', this.peerConnection.connectionState, 'initial state', initialState);\n if (this.peerConnection.connectionState === 'disconnected' || this.peerConnection.connectionState === 'failed' || this.peerConnection.connectionState === 'closed') {\n // nothing else to do but close the connection\n this.timeline.close = Date.now();\n }\n };\n }\n async close(options) {\n this.log.trace('closing connection');\n this.peerConnection.close();\n this.timeline.close = Date.now();\n this.metrics?.increment({ close: true });\n }\n abort(err) {\n this.log.error('closing connection due to error', err);\n this.peerConnection.close();\n this.timeline.close = Date.now();\n this.metrics?.increment({ abort: true });\n }\n}\n//# sourceMappingURL=maconn.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Message;\n(function (Message) {\n let Flag;\n (function (Flag) {\n Flag[\"FIN\"] = \"FIN\";\n Flag[\"STOP_SENDING\"] = \"STOP_SENDING\";\n Flag[\"RESET\"] = \"RESET\";\n Flag[\"FIN_ACK\"] = \"FIN_ACK\";\n })(Flag = Message.Flag || (Message.Flag = {}));\n let __FlagValues;\n (function (__FlagValues) {\n __FlagValues[__FlagValues[\"FIN\"] = 0] = \"FIN\";\n __FlagValues[__FlagValues[\"STOP_SENDING\"] = 1] = \"STOP_SENDING\";\n __FlagValues[__FlagValues[\"RESET\"] = 2] = \"RESET\";\n __FlagValues[__FlagValues[\"FIN_ACK\"] = 3] = \"FIN_ACK\";\n })(__FlagValues || (__FlagValues = {}));\n (function (Flag) {\n Flag.codec = () => {\n return enumeration(__FlagValues);\n };\n })(Flag = Message.Flag || (Message.Flag = {}));\n let _codec;\n Message.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.flag != null) {\n w.uint32(8);\n Message.Flag.codec().encode(obj.flag, w);\n }\n if (obj.message != null) {\n w.uint32(18);\n w.bytes(obj.message);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.flag = Message.Flag.codec().decode(reader);\n break;\n case 2:\n obj.message = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Message.encode = (obj) => {\n return encodeMessage(obj, Message.codec());\n };\n Message.decode = (buf) => {\n return decodeMessage(buf, Message.codec());\n };\n})(Message || (Message = {}));\n//# sourceMappingURL=message.js.map","import { CodeError } from '@libp2p/interface';\nimport { AbstractStream } from '@libp2p/utils/abstract-stream';\nimport * as lengthPrefixed from 'it-length-prefixed';\nimport { pushable } from 'it-pushable';\nimport pDefer from 'p-defer';\nimport { pEvent, TimeoutError } from 'p-event';\nimport pTimeout from 'p-timeout';\nimport { raceSignal } from 'race-signal';\nimport { encodingLength } from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { Message } from './pb/message.js';\n/**\n * How much can be buffered to the DataChannel at once\n */\nexport const MAX_BUFFERED_AMOUNT = 2 * 1024 * 1024;\n/**\n * How long time we wait for the 'bufferedamountlow' event to be emitted\n */\nexport const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000;\n/**\n * Max message size that can be sent to the DataChannel. In browsers this is\n * 256KiB but go-libp2p and rust-libp2p only support 16KiB at the time of\n * writing.\n *\n * @see https://blog.mozilla.org/webrtc/large-data-channel-messages/\n * @see https://issues.webrtc.org/issues/40644524\n */\nexport const MAX_MESSAGE_SIZE = 16 * 1024;\n/**\n * max protobuf overhead:\n *\n * ```\n * [message-length][flag-field-id+type][flag-field-length][flag-field][message-field-id+type][message-field-length][message-field]\n * ```\n */\nfunction calculateProtobufOverhead(maxMessageSize = MAX_MESSAGE_SIZE) {\n // these have a fixed size\n const messageLength = encodingLength(maxMessageSize - encodingLength(maxMessageSize));\n const flagField = 1 + encodingLength(Object.keys(Message.Flag).length - 1); // id+type/value\n const messageFieldIdType = 1; // id+type\n const available = maxMessageSize - messageLength - flagField - messageFieldIdType;\n // let message-length/message-data fill the rest of the message\n const messageFieldLengthLength = encodingLength(available);\n return messageLength + flagField + messageFieldIdType + messageFieldLengthLength;\n}\n/**\n * The protobuf message overhead includes the maximum amount of all bytes in the\n * protobuf that aren't message field bytes\n */\nexport const PROTOBUF_OVERHEAD = calculateProtobufOverhead();\n/**\n * When closing streams we send a FIN then wait for the remote to\n * reply with a FIN_ACK. If that does not happen within this timeout\n * we close the stream anyway.\n */\nexport const FIN_ACK_TIMEOUT = 5000;\n/**\n * When sending data messages, if the channel is not in the \"open\" state, wait\n * this long for the \"open\" event to fire.\n */\nexport const OPEN_TIMEOUT = 5000;\nexport class WebRTCStream extends AbstractStream {\n /**\n * The data channel used to send and receive data\n */\n channel;\n /**\n * push data from the underlying datachannel to the length prefix decoder\n * and then the protobuf decoder.\n */\n incomingData;\n maxBufferedAmount;\n bufferedAmountLowEventTimeout;\n /**\n * The maximum size of a message in bytes\n */\n maxMessageSize;\n /**\n * When this promise is resolved, the remote has sent us a FIN flag\n */\n receiveFinAck;\n finAckTimeout;\n openTimeout;\n constructor(init) {\n // override onEnd to send/receive FIN_ACK before closing the stream\n const originalOnEnd = init.onEnd;\n init.onEnd = (err) => {\n this.log.trace('readable and writeable ends closed', this.status);\n void Promise.resolve(async () => {\n if (this.timeline.abort != null || this.timeline.reset !== null) {\n return;\n }\n // wait for FIN_ACK if we haven't received it already\n try {\n await pTimeout(this.receiveFinAck.promise, {\n milliseconds: this.finAckTimeout\n });\n }\n catch (err) {\n this.log.error('error receiving FIN_ACK', err);\n }\n })\n .then(() => {\n // stop processing incoming messages\n this.incomingData.end();\n // final cleanup\n originalOnEnd?.(err);\n })\n .catch(err => {\n this.log.error('error ending stream', err);\n });\n };\n super(init);\n this.channel = init.channel;\n this.channel.binaryType = 'arraybuffer';\n this.incomingData = pushable();\n this.bufferedAmountLowEventTimeout = init.bufferedAmountLowEventTimeout ?? BUFFERED_AMOUNT_LOW_TIMEOUT;\n this.maxBufferedAmount = init.maxBufferedAmount ?? MAX_BUFFERED_AMOUNT;\n this.maxMessageSize = (init.maxMessageSize ?? MAX_MESSAGE_SIZE) - PROTOBUF_OVERHEAD;\n this.receiveFinAck = pDefer();\n this.finAckTimeout = init.closeTimeout ?? FIN_ACK_TIMEOUT;\n this.openTimeout = init.openTimeout ?? OPEN_TIMEOUT;\n // set up initial state\n switch (this.channel.readyState) {\n case 'open':\n this.timeline.open = new Date().getTime();\n break;\n case 'closed':\n case 'closing':\n if (this.timeline.close === undefined || this.timeline.close === 0) {\n this.timeline.close = Date.now();\n }\n break;\n case 'connecting':\n // noop\n break;\n default:\n this.log.error('unknown datachannel state %s', this.channel.readyState);\n throw new CodeError('Unknown datachannel state', 'ERR_INVALID_STATE');\n }\n // handle RTCDataChannel events\n this.channel.onopen = (_evt) => {\n this.timeline.open = new Date().getTime();\n };\n this.channel.onclose = (_evt) => {\n // if the channel has closed we'll never receive a FIN_ACK so resolve the\n // promise so we don't try to wait later\n this.receiveFinAck.resolve();\n void this.close().catch(err => {\n this.log.error('error closing stream after channel closed', err);\n });\n };\n this.channel.onerror = (evt) => {\n const err = evt.error;\n this.abort(err);\n };\n this.channel.onmessage = async (event) => {\n const { data } = event;\n if (data === null || data.byteLength === 0) {\n return;\n }\n this.incomingData.push(new Uint8Array(data, 0, data.byteLength));\n };\n const self = this;\n // pipe framed protobuf messages through a length prefixed decoder, and\n // surface data from the `Message.message` field through a source.\n Promise.resolve().then(async () => {\n for await (const buf of lengthPrefixed.decode(this.incomingData)) {\n const message = self.processIncomingProtobuf(buf);\n if (message != null) {\n self.sourcePush(new Uint8ArrayList(message));\n }\n }\n })\n .catch(err => {\n this.log.error('error processing incoming data channel messages', err);\n });\n }\n sendNewStream() {\n // opening new streams is handled by WebRTC so this is a noop\n }\n async _sendMessage(data, checkBuffer = true) {\n if (checkBuffer && this.channel.bufferedAmount > this.maxBufferedAmount) {\n try {\n this.log('channel buffer is %d, wait for \"bufferedamountlow\" event', this.channel.bufferedAmount);\n await pEvent(this.channel, 'bufferedamountlow', { timeout: this.bufferedAmountLowEventTimeout });\n }\n catch (err) {\n if (err instanceof TimeoutError) {\n throw new CodeError(`Timed out waiting for DataChannel buffer to clear after ${this.bufferedAmountLowEventTimeout}ms`, 'ERR_BUFFER_CLEAR_TIMEOUT');\n }\n throw err;\n }\n }\n if (this.channel.readyState === 'closed' || this.channel.readyState === 'closing') {\n throw new CodeError(`Invalid datachannel state - ${this.channel.readyState}`, 'ERR_INVALID_STATE');\n }\n if (this.channel.readyState !== 'open') {\n this.log('channel state is \"%s\" and not \"open\", waiting for \"open\" event before sending data', this.channel.readyState);\n await pEvent(this.channel, 'open', { timeout: this.openTimeout });\n this.log('channel state is now \"%s\", sending data', this.channel.readyState);\n }\n // send message without copying data\n this.channel.send(data.subarray());\n }\n async sendData(data) {\n // sending messages is an async operation so use a copy of the list as it\n // may be changed beneath us\n data = data.sublist();\n while (data.byteLength > 0) {\n const toSend = Math.min(data.byteLength, this.maxMessageSize);\n const buf = data.subarray(0, toSend);\n const msgbuf = Message.encode({ message: buf });\n const sendbuf = lengthPrefixed.encode.single(msgbuf);\n await this._sendMessage(sendbuf);\n data.consume(toSend);\n }\n }\n async sendReset() {\n await this._sendFlag(Message.Flag.RESET);\n }\n async sendCloseWrite(options) {\n const sent = await this._sendFlag(Message.Flag.FIN);\n if (sent) {\n this.log.trace('awaiting FIN_ACK');\n try {\n await raceSignal(this.receiveFinAck.promise, options?.signal, {\n errorMessage: 'sending close-write was aborted before FIN_ACK was received',\n errorCode: 'ERR_FIN_ACK_NOT_RECEIVED'\n });\n }\n catch (err) {\n this.log.error('failed to await FIN_ACK', err);\n }\n }\n else {\n this.log.trace('sending FIN failed, not awaiting FIN_ACK');\n }\n // if we've attempted to receive a FIN_ACK, do not try again\n this.receiveFinAck.resolve();\n }\n async sendCloseRead() {\n await this._sendFlag(Message.Flag.STOP_SENDING);\n }\n /**\n * Handle incoming\n */\n processIncomingProtobuf(buffer) {\n const message = Message.decode(buffer);\n if (message.flag !== undefined) {\n this.log.trace('incoming flag %s, write status \"%s\", read status \"%s\"', message.flag, this.writeStatus, this.readStatus);\n if (message.flag === Message.Flag.FIN) {\n // We should expect no more data from the remote, stop reading\n this.remoteCloseWrite();\n this.log.trace('sending FIN_ACK');\n void this._sendFlag(Message.Flag.FIN_ACK)\n .catch(err => {\n this.log.error('error sending FIN_ACK immediately', err);\n });\n }\n if (message.flag === Message.Flag.RESET) {\n // Stop reading and writing to the stream immediately\n this.reset();\n }\n if (message.flag === Message.Flag.STOP_SENDING) {\n // The remote has stopped reading\n this.remoteCloseRead();\n }\n if (message.flag === Message.Flag.FIN_ACK) {\n this.log.trace('received FIN_ACK');\n this.receiveFinAck.resolve();\n }\n }\n // ignore data messages if we've closed the readable end already\n if (this.readStatus === 'ready') {\n return message.message;\n }\n }\n async _sendFlag(flag) {\n if (this.channel.readyState !== 'open') {\n // flags can be sent while we or the remote are closing the datachannel so\n // if the channel isn't open, don't try to send it but return false to let\n // the caller know and act if they need to\n this.log.trace('not sending flag %s because channel is \"%s\" and not \"open\"', this.channel.readyState, flag.toString());\n return false;\n }\n this.log.trace('sending flag %s', flag.toString());\n const msgbuf = Message.encode({ flag });\n const prefixedBuf = lengthPrefixed.encode.single(msgbuf);\n try {\n await this._sendMessage(prefixedBuf, false);\n return true;\n }\n catch (err) {\n this.log.error('could not send flag %s', flag.toString(), err);\n }\n return false;\n }\n}\nexport function createStream(options) {\n const { channel, direction } = options;\n return new WebRTCStream({\n id: direction === 'inbound' ? (`i${channel.id}`) : `r${channel.id}`,\n log: options.logger.forComponent(`libp2p:webrtc:stream:${direction}:${channel.id}`),\n ...options\n });\n}\n//# sourceMappingURL=stream.js.map","import { createStream } from './stream.js';\nimport { drainAndClose, nopSink, nopSource } from './util.js';\nconst PROTOCOL = '/webrtc';\nexport class DataChannelMuxerFactory {\n protocol;\n /**\n * WebRTC Peer Connection\n */\n peerConnection;\n bufferedStreams = [];\n metrics;\n dataChannelOptions;\n components;\n log;\n constructor(components, init) {\n this.components = components;\n this.peerConnection = init.peerConnection;\n this.metrics = init.metrics;\n this.protocol = init.protocol ?? PROTOCOL;\n this.dataChannelOptions = init.dataChannelOptions ?? {};\n this.log = components.logger.forComponent('libp2p:webrtc:datachannelmuxerfactory');\n // store any datachannels opened before upgrade has been completed\n this.peerConnection.ondatachannel = ({ channel }) => {\n this.log.trace('incoming early datachannel with channel id %d and label \"%s\"', channel.id);\n // 'init' channel is only used during connection establishment\n if (channel.label === 'init') {\n this.log.trace('closing early init channel');\n channel.close();\n return;\n }\n // @ts-expect-error fields are set below\n const bufferedStream = {};\n const stream = createStream({\n channel,\n direction: 'inbound',\n onEnd: (err) => {\n bufferedStream.onEnd(err);\n },\n logger: components.logger,\n ...this.dataChannelOptions\n });\n bufferedStream.stream = stream;\n bufferedStream.channel = channel;\n bufferedStream.onEnd = () => {\n this.bufferedStreams = this.bufferedStreams.filter(s => s.stream.id !== stream.id);\n };\n this.bufferedStreams.push(bufferedStream);\n };\n }\n createStreamMuxer(init) {\n return new DataChannelMuxer(this.components, {\n ...init,\n peerConnection: this.peerConnection,\n dataChannelOptions: this.dataChannelOptions,\n metrics: this.metrics,\n streams: this.bufferedStreams,\n protocol: this.protocol\n });\n }\n}\n/**\n * A libp2p data channel stream muxer\n */\nexport class DataChannelMuxer {\n init;\n /**\n * Array of streams in the data channel\n */\n streams;\n protocol;\n log;\n peerConnection;\n dataChannelOptions;\n metrics;\n logger;\n constructor(components, init) {\n this.init = init;\n this.log = components.logger.forComponent('libp2p:webrtc:muxer');\n this.logger = components.logger;\n this.streams = init.streams.map(s => s.stream);\n this.peerConnection = init.peerConnection;\n this.protocol = init.protocol ?? PROTOCOL;\n this.metrics = init.metrics;\n this.dataChannelOptions = init.dataChannelOptions ?? {};\n /**\n * Fired when a data channel has been added to the connection has been\n * added by the remote peer.\n *\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/datachannel_event}\n */\n this.peerConnection.ondatachannel = ({ channel }) => {\n this.log.trace('incoming datachannel with channel id %d', channel.id);\n // 'init' channel is only used during connection establishment\n if (channel.label === 'init') {\n this.log.trace('closing init channel');\n channel.close();\n return;\n }\n const stream = createStream({\n channel,\n direction: 'inbound',\n onEnd: () => {\n this.log('incoming channel %s ended with state %s', channel.id, channel.readyState);\n this.#onStreamEnd(stream, channel);\n },\n logger: this.logger,\n ...this.dataChannelOptions\n });\n this.streams.push(stream);\n this.metrics?.increment({ incoming_stream: true });\n init?.onIncomingStream?.(stream);\n };\n // the DataChannelMuxer constructor is called during set up of the\n // connection by the upgrader.\n //\n // If we invoke `init.onIncomingStream` immediately, the connection object\n // will not be set up yet so add a tiny delay before letting the\n // connection know about early streams\n if (this.init.streams.length > 0) {\n queueMicrotask(() => {\n this.init.streams.forEach(bufferedStream => {\n bufferedStream.onEnd = () => {\n this.log('incoming early channel %s ended with state %s', bufferedStream.channel.id, bufferedStream.channel.readyState);\n this.#onStreamEnd(bufferedStream.stream, bufferedStream.channel);\n };\n this.metrics?.increment({ incoming_stream: true });\n this.init?.onIncomingStream?.(bufferedStream.stream);\n });\n });\n }\n }\n #onStreamEnd(stream, channel) {\n this.log.trace('stream %s %s %s onEnd', stream.direction, stream.id, stream.protocol);\n drainAndClose(channel, `${stream.direction} ${stream.id} ${stream.protocol}`, this.dataChannelOptions.drainTimeout, {\n log: this.log\n });\n this.streams = this.streams.filter(s => s.id !== stream.id);\n this.metrics?.increment({ stream_end: true });\n this.init?.onStreamEnd?.(stream);\n }\n /**\n * Gracefully close all tracked streams and stop the muxer\n */\n async close(options) {\n try {\n await Promise.all(this.streams.map(async (stream) => stream.close(options)));\n }\n catch (err) {\n this.abort(err);\n }\n }\n /**\n * Abort all tracked streams and stop the muxer\n */\n abort(err) {\n for (const stream of this.streams) {\n stream.abort(err);\n }\n }\n /**\n * The stream source, a no-op as the transport natively supports multiplexing\n */\n source = nopSource();\n /**\n * The stream destination, a no-op as the transport natively supports multiplexing\n */\n sink = nopSink;\n newStream() {\n // The spec says the label SHOULD be an empty string: https://github.com/libp2p/specs/blob/master/webrtc/README.md#rtcdatachannel-label\n const channel = this.peerConnection.createDataChannel('');\n this.log.trace('opened outgoing datachannel with channel id %s', channel.id);\n const stream = createStream({\n channel,\n direction: 'outbound',\n onEnd: () => {\n this.log('outgoing channel %s ended with state %s', channel.id, channel.readyState);\n this.#onStreamEnd(stream, channel);\n },\n logger: this.logger,\n ...this.dataChannelOptions\n });\n this.streams.push(stream);\n this.metrics?.increment({ outgoing_stream: true });\n return stream;\n }\n}\n//# sourceMappingURL=muxer.js.map","export const RTCPeerConnection = globalThis.RTCPeerConnection;\nexport const RTCSessionDescription = globalThis.RTCSessionDescription;\nexport const RTCIceCandidate = globalThis.RTCIceCandidate;\n//# sourceMappingURL=index.browser.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Message;\n(function (Message) {\n let Type;\n (function (Type) {\n Type[\"SDP_OFFER\"] = \"SDP_OFFER\";\n Type[\"SDP_ANSWER\"] = \"SDP_ANSWER\";\n Type[\"ICE_CANDIDATE\"] = \"ICE_CANDIDATE\";\n })(Type = Message.Type || (Message.Type = {}));\n let __TypeValues;\n (function (__TypeValues) {\n __TypeValues[__TypeValues[\"SDP_OFFER\"] = 0] = \"SDP_OFFER\";\n __TypeValues[__TypeValues[\"SDP_ANSWER\"] = 1] = \"SDP_ANSWER\";\n __TypeValues[__TypeValues[\"ICE_CANDIDATE\"] = 2] = \"ICE_CANDIDATE\";\n })(__TypeValues || (__TypeValues = {}));\n (function (Type) {\n Type.codec = () => {\n return enumeration(__TypeValues);\n };\n })(Type = Message.Type || (Message.Type = {}));\n let _codec;\n Message.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.type != null) {\n w.uint32(8);\n Message.Type.codec().encode(obj.type, w);\n }\n if (obj.data != null) {\n w.uint32(18);\n w.string(obj.data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.type = Message.Type.codec().decode(reader);\n break;\n case 2:\n obj.data = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Message.encode = (obj) => {\n return encodeMessage(obj, Message.codec());\n };\n Message.decode = (buf) => {\n return decodeMessage(buf, Message.codec());\n };\n})(Message || (Message = {}));\n//# sourceMappingURL=message.js.map","import { CodeError } from '@libp2p/interface';\nimport pDefer from 'p-defer';\nimport { CustomProgressEvent } from 'progress-events';\nimport { isFirefox } from '../util.js';\nimport { RTCIceCandidate } from '../webrtc/index.js';\nimport { Message } from './pb/message.js';\nexport const readCandidatesUntilConnected = async (pc, stream, options) => {\n try {\n const connectedPromise = pDefer();\n resolveOnConnected(pc, connectedPromise);\n // read candidates until we are connected or we reach the end of the stream\n while (true) {\n // if we connect, stop trying to read from the stream\n const message = await Promise.race([\n connectedPromise.promise,\n stream.read({\n signal: options.signal\n }).catch(() => { })\n ]);\n // stream ended or we became connected\n if (message == null) {\n // throw if we timed out\n options.signal?.throwIfAborted();\n break;\n }\n if (message.type !== Message.Type.ICE_CANDIDATE) {\n throw new CodeError('ICE candidate message expected', 'ERR_NOT_ICE_CANDIDATE');\n }\n const candidateInit = JSON.parse(message.data ?? 'null');\n // an empty string means this generation of candidates is complete, a null\n // candidate means candidate gathering has finished\n // see - https://www.w3.org/TR/webrtc/#rtcpeerconnectioniceevent\n if (candidateInit === '' || candidateInit === null) {\n options.onProgress?.(new CustomProgressEvent('webrtc:end-of-ice-candidates'));\n options.log.trace('end-of-candidates received');\n continue;\n }\n const candidate = new RTCIceCandidate(candidateInit);\n options.log.trace('%s received new ICE candidate %o', options.direction, candidateInit);\n try {\n options.onProgress?.(new CustomProgressEvent('webrtc:add-ice-candidate', candidate.candidate));\n await pc.addIceCandidate(candidate);\n }\n catch (err) {\n options.log.error('%s bad candidate received', options.direction, candidateInit, err);\n }\n }\n }\n catch (err) {\n options.log.error('%s error parsing ICE candidate', options.direction, err);\n if (options.signal?.aborted === true) {\n throw err;\n }\n }\n};\nfunction getConnectionState(pc) {\n return isFirefox ? pc.iceConnectionState : pc.connectionState;\n}\nfunction resolveOnConnected(pc, promise) {\n pc[isFirefox ? 'oniceconnectionstatechange' : 'onconnectionstatechange'] = (_) => {\n switch (getConnectionState(pc)) {\n case 'connected':\n promise.resolve();\n break;\n case 'failed':\n case 'disconnected':\n case 'closed':\n promise.reject(new CodeError('RTCPeerConnection was closed', 'ERR_CONNECTION_CLOSED_BEFORE_CONNECTED'));\n break;\n default:\n break;\n }\n };\n}\n//# sourceMappingURL=util.js.map","import { CodeError } from '@libp2p/interface';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { pbStream } from 'it-protobuf-stream';\nimport { CustomProgressEvent } from 'progress-events';\nimport { DataChannelMuxerFactory } from '../muxer.js';\nimport { RTCPeerConnection, RTCSessionDescription } from '../webrtc/index.js';\nimport { Message } from './pb/message.js';\nimport { SIGNALING_PROTO_ID, splitAddr } from './transport.js';\nimport { readCandidatesUntilConnected } from './util.js';\nexport async function initiateConnection({ rtcConfiguration, dataChannel, signal, metrics, multiaddr: ma, connectionManager, transportManager, log, logger, onProgress }) {\n const { baseAddr } = splitAddr(ma);\n metrics?.dialerEvents.increment({ open: true });\n log.trace('dialing base address: %a', baseAddr);\n const relayPeer = baseAddr.getPeerId();\n if (relayPeer == null) {\n throw new CodeError('Relay peer was missing', 'ERR_INVALID_ADDRESS');\n }\n const connections = connectionManager.getConnections(peerIdFromString(relayPeer));\n let connection;\n let shouldCloseConnection = false;\n if (connections.length === 0) {\n onProgress?.(new CustomProgressEvent('webrtc:dial-relay'));\n // use the transport manager to open a connection. Initiating a WebRTC\n // connection takes place in the context of a dial - if we use the\n // connection manager instead we can end up joining our own dial context\n connection = await transportManager.dial(baseAddr, {\n signal,\n onProgress\n });\n // this connection is unmanaged by the connection manager so we should\n // close it when we are done\n shouldCloseConnection = true;\n }\n else {\n onProgress?.(new CustomProgressEvent('webrtc:reuse-relay-connection'));\n connection = connections[0];\n }\n try {\n onProgress?.(new CustomProgressEvent('webrtc:open-signaling-stream'));\n const stream = await connection.newStream(SIGNALING_PROTO_ID, {\n signal,\n runOnTransientConnection: true\n });\n const messageStream = pbStream(stream).pb(Message);\n const peerConnection = new RTCPeerConnection(rtcConfiguration);\n const muxerFactory = new DataChannelMuxerFactory({\n logger\n }, {\n peerConnection,\n dataChannelOptions: dataChannel\n });\n try {\n // we create the channel so that the RTCPeerConnection has a component for\n // which to collect candidates. The label is not relevant to connection\n // initiation but can be useful for debugging\n const channel = peerConnection.createDataChannel('init');\n // setup callback to write ICE candidates to the remote peer\n peerConnection.onicecandidate = ({ candidate }) => {\n // a null candidate means end-of-candidates, an empty string candidate\n // means end-of-candidates for this generation, otherwise this should\n // be a valid candidate object\n // see - https://www.w3.org/TR/webrtc/#rtcpeerconnectioniceevent\n const data = JSON.stringify(candidate?.toJSON() ?? null);\n log.trace('initiator sending ICE candidate %o', candidate);\n void messageStream.write({\n type: Message.Type.ICE_CANDIDATE,\n data\n }, {\n signal\n })\n .catch(err => {\n log.error('error sending ICE candidate', err);\n });\n };\n peerConnection.onicecandidateerror = (event) => {\n log.error('initiator ICE candidate error', event);\n };\n // create an offer\n const offerSdp = await peerConnection.createOffer().catch(err => {\n log.error('could not execute createOffer', err);\n throw new CodeError('Failed to set createOffer', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n log.trace('initiator send SDP offer %s', offerSdp.sdp);\n onProgress?.(new CustomProgressEvent('webrtc:send-sdp-offer'));\n // write the offer to the stream\n await messageStream.write({ type: Message.Type.SDP_OFFER, data: offerSdp.sdp }, {\n signal\n });\n // set offer as local description\n await peerConnection.setLocalDescription(offerSdp).catch(err => {\n log.error('could not execute setLocalDescription', err);\n throw new CodeError('Failed to set localDescription', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n onProgress?.(new CustomProgressEvent('webrtc:read-sdp-answer'));\n // read answer\n const answerMessage = await messageStream.read({\n signal\n });\n if (answerMessage.type !== Message.Type.SDP_ANSWER) {\n throw new CodeError('Remote should send an SDP answer', 'ERR_SDP_HANDSHAKE_FAILED');\n }\n log.trace('initiator receive SDP answer %s', answerMessage.data);\n const answerSdp = new RTCSessionDescription({ type: 'answer', sdp: answerMessage.data });\n await peerConnection.setRemoteDescription(answerSdp).catch(err => {\n log.error('could not execute setRemoteDescription', err);\n throw new CodeError('Failed to set remoteDescription', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n log.trace('initiator read candidates until connected');\n onProgress?.(new CustomProgressEvent('webrtc:read-ice-candidates'));\n await readCandidatesUntilConnected(peerConnection, messageStream, {\n direction: 'initiator',\n signal,\n log,\n onProgress\n });\n log.trace('initiator connected, closing init channel');\n channel.close();\n onProgress?.(new CustomProgressEvent('webrtc:close-signaling-stream'));\n log.trace('closing signaling channel');\n await stream.close({\n signal\n });\n log.trace('initiator connected to remote address %s', ma);\n return {\n remoteAddress: ma,\n peerConnection,\n muxerFactory\n };\n }\n catch (err) {\n log.error('outgoing signaling error', err);\n peerConnection.close();\n stream.abort(err);\n throw err;\n }\n finally {\n peerConnection.onicecandidate = null;\n peerConnection.onicecandidateerror = null;\n }\n }\n finally {\n // if we had to open a connection to perform the SDP handshake\n // close it because it's not tracked by the connection manager\n if (shouldCloseConnection) {\n try {\n await connection.close({\n signal\n });\n }\n catch (err) {\n connection.abort(err);\n }\n }\n }\n}\n//# sourceMappingURL=initiate-connection.js.map","import { TypedEventEmitter } from '@libp2p/interface';\nimport { Circuit } from '@multiformats/mafmt';\nexport class WebRTCPeerListener extends TypedEventEmitter {\n peerId;\n transportManager;\n shutdownController;\n constructor(components, init) {\n super();\n this.peerId = components.peerId;\n this.transportManager = components.transportManager;\n this.shutdownController = init.shutdownController;\n }\n async listen() {\n this.safeDispatchEvent('listening', {});\n }\n getAddrs() {\n return this.transportManager\n .getListeners()\n .filter(l => l !== this)\n .map(l => l.getAddrs()\n .filter(ma => Circuit.matches(ma))\n .map(ma => {\n return ma.encapsulate(`/webrtc/p2p/${this.peerId}`);\n }))\n .flat();\n }\n async close() {\n this.shutdownController.abort();\n this.safeDispatchEvent('close', {});\n }\n}\n//# sourceMappingURL=listener.js.map","import { CodeError } from '@libp2p/interface';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { pbStream } from 'it-protobuf-stream';\nimport { RTCSessionDescription } from '../webrtc/index.js';\nimport { Message } from './pb/message.js';\nimport { readCandidatesUntilConnected } from './util.js';\nexport async function handleIncomingStream({ peerConnection, stream, signal, connection, log }) {\n log.trace('new inbound signaling stream');\n const messageStream = pbStream(stream).pb(Message);\n try {\n // candidate callbacks\n peerConnection.onicecandidate = ({ candidate }) => {\n // a null candidate means end-of-candidates, an empty string candidate\n // means end-of-candidates for this generation, otherwise this should\n // be a valid candidate object\n // see - https://www.w3.org/TR/webrtc/#rtcpeerconnectioniceevent\n const data = JSON.stringify(candidate?.toJSON() ?? null);\n log.trace('recipient sending ICE candidate %s', data);\n messageStream.write({\n type: Message.Type.ICE_CANDIDATE,\n data\n }, {\n signal\n })\n .catch(err => {\n log.error('error sending ICE candidate', err);\n });\n };\n // read an SDP offer\n const pbOffer = await messageStream.read({\n signal\n });\n if (pbOffer.type !== Message.Type.SDP_OFFER) {\n throw new CodeError(`expected message type SDP_OFFER, received: ${pbOffer.type ?? 'undefined'} `, 'ERR_SDP_HANDSHAKE_FAILED');\n }\n log.trace('recipient receive SDP offer %s', pbOffer.data);\n const offer = new RTCSessionDescription({\n type: 'offer',\n sdp: pbOffer.data\n });\n await peerConnection.setRemoteDescription(offer).catch(err => {\n log.error('could not execute setRemoteDescription', err);\n throw new CodeError('Failed to set remoteDescription', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n // create and write an SDP answer\n const answer = await peerConnection.createAnswer().catch(err => {\n log.error('could not execute createAnswer', err);\n throw new CodeError('Failed to create answer', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n log.trace('recipient send SDP answer %s', answer.sdp);\n // write the answer to the remote\n await messageStream.write({ type: Message.Type.SDP_ANSWER, data: answer.sdp }, {\n signal\n });\n await peerConnection.setLocalDescription(answer).catch(err => {\n log.error('could not execute setLocalDescription', err);\n throw new CodeError('Failed to set localDescription', 'ERR_SDP_HANDSHAKE_FAILED');\n });\n log.trace('recipient read candidates until connected');\n // wait until candidates are connected\n await readCandidatesUntilConnected(peerConnection, messageStream, {\n direction: 'recipient',\n signal,\n log\n });\n }\n catch (err) {\n if (peerConnection.connectionState !== 'connected') {\n log.error('error while handling signaling stream from peer %a', connection.remoteAddr, err);\n peerConnection.close();\n throw err;\n }\n else {\n log('error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected', connection.remoteAddr, err);\n }\n }\n const remoteAddress = multiaddr(`/webrtc/p2p/${connection.remoteAddr.getPeerId()}`);\n log.trace('recipient connected to remote address %s', remoteAddress);\n return { remoteAddress };\n}\n//# sourceMappingURL=signaling-stream-handler.js.map","import { CodeError, serviceCapabilities, serviceDependencies, setMaxListeners, transportSymbol } from '@libp2p/interface';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { WebRTC } from '@multiformats/multiaddr-matcher';\nimport { codes } from '../error.js';\nimport { WebRTCMultiaddrConnection } from '../maconn.js';\nimport { DataChannelMuxerFactory } from '../muxer.js';\nimport { getRtcConfiguration } from '../util.js';\nimport { RTCPeerConnection } from '../webrtc/index.js';\nimport { initiateConnection } from './initiate-connection.js';\nimport { WebRTCPeerListener } from './listener.js';\nimport { handleIncomingStream } from './signaling-stream-handler.js';\nconst WEBRTC_TRANSPORT = '/webrtc';\nconst CIRCUIT_RELAY_TRANSPORT = '/p2p-circuit';\nexport const SIGNALING_PROTO_ID = '/webrtc-signaling/0.0.1';\nconst INBOUND_CONNECTION_TIMEOUT = 30 * 1000;\nexport class WebRTCTransport {\n components;\n init;\n log;\n _started = false;\n metrics;\n shutdownController;\n constructor(components, init = {}) {\n this.components = components;\n this.init = init;\n this.log = components.logger.forComponent('libp2p:webrtc');\n this.shutdownController = new AbortController();\n setMaxListeners(Infinity, this.shutdownController.signal);\n if (components.metrics != null) {\n this.metrics = {\n dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_dialer_events_total', {\n label: 'event',\n help: 'Total count of WebRTC dialer events by type'\n }),\n listenerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_listener_events_total', {\n label: 'event',\n help: 'Total count of WebRTC listener events by type'\n })\n };\n }\n }\n [transportSymbol] = true;\n [Symbol.toStringTag] = '@libp2p/webrtc';\n [serviceCapabilities] = [\n '@libp2p/transport'\n ];\n [serviceDependencies] = [\n '@libp2p/identify',\n '@libp2p/circuit-relay-v2-transport'\n ];\n isStarted() {\n return this._started;\n }\n async start() {\n await this.components.registrar.handle(SIGNALING_PROTO_ID, (data) => {\n this._onProtocol(data).catch(err => { this.log.error('failed to handle incoming connect from %p', data.connection.remotePeer, err); });\n }, {\n runOnTransientConnection: true\n });\n this._started = true;\n }\n async stop() {\n await this.components.registrar.unhandle(SIGNALING_PROTO_ID);\n this._started = false;\n }\n createListener(options) {\n return new WebRTCPeerListener(this.components, {\n shutdownController: this.shutdownController\n });\n }\n /**\n * Filter check for all Multiaddrs that this transport can listen on\n */\n listenFilter(multiaddrs) {\n return multiaddrs.filter(WebRTC.exactMatch);\n }\n /**\n * Filter check for all Multiaddrs that this transport can dial\n */\n dialFilter(multiaddrs) {\n return this.listenFilter(multiaddrs);\n }\n /*\n * dial connects to a remote via the circuit relay or any other protocol\n * and proceeds to upgrade to a webrtc connection.\n * multiaddr of the form: /webrtc/p2p/\n * For a circuit relay, this will be of the form\n * /p2p//p2p-circuit/webrtc/p2p/\n */\n async dial(ma, options) {\n this.log.trace('dialing address: %a', ma);\n const { remoteAddress, peerConnection, muxerFactory } = await initiateConnection({\n rtcConfiguration: await getRtcConfiguration(this.init.rtcConfiguration),\n dataChannel: this.init.dataChannel,\n multiaddr: ma,\n dataChannelOptions: this.init.dataChannel,\n signal: options.signal,\n connectionManager: this.components.connectionManager,\n transportManager: this.components.transportManager,\n log: this.log,\n logger: this.components.logger,\n onProgress: options.onProgress\n });\n const webRTCConn = new WebRTCMultiaddrConnection(this.components, {\n peerConnection,\n timeline: { open: Date.now() },\n remoteAddr: remoteAddress,\n metrics: this.metrics?.dialerEvents\n });\n const connection = await options.upgrader.upgradeOutbound(webRTCConn, {\n skipProtection: true,\n skipEncryption: true,\n muxerFactory,\n onProgress: options.onProgress\n });\n // close the connection on shut down\n this._closeOnShutdown(peerConnection, webRTCConn);\n return connection;\n }\n async _onProtocol({ connection, stream }) {\n const signal = AbortSignal.timeout(this.init.inboundConnectionTimeout ?? INBOUND_CONNECTION_TIMEOUT);\n const peerConnection = new RTCPeerConnection(await getRtcConfiguration(this.init.rtcConfiguration));\n const muxerFactory = new DataChannelMuxerFactory(this.components, {\n peerConnection,\n dataChannelOptions: this.init.dataChannel\n });\n try {\n const { remoteAddress } = await handleIncomingStream({\n peerConnection,\n connection,\n stream,\n signal,\n log: this.log\n });\n // close the stream if SDP messages have been exchanged successfully\n await stream.close({\n signal\n });\n const webRTCConn = new WebRTCMultiaddrConnection(this.components, {\n peerConnection,\n timeline: { open: (new Date()).getTime() },\n remoteAddr: remoteAddress,\n metrics: this.metrics?.listenerEvents\n });\n await this.components.upgrader.upgradeInbound(webRTCConn, {\n skipEncryption: true,\n skipProtection: true,\n muxerFactory\n });\n // close the connection on shut down\n this._closeOnShutdown(peerConnection, webRTCConn);\n }\n catch (err) {\n this.log.error('incoming signaling error', err);\n peerConnection.close();\n stream.abort(err);\n throw err;\n }\n }\n _closeOnShutdown(pc, webRTCConn) {\n // close the connection on shut down\n const shutDownListener = () => {\n webRTCConn.close()\n .catch(err => {\n this.log.error('could not close WebRTCMultiaddrConnection', err);\n });\n };\n this.shutdownController.signal.addEventListener('abort', shutDownListener);\n pc.addEventListener('close', () => {\n this.shutdownController.signal.removeEventListener('abort', shutDownListener);\n });\n }\n}\nexport function splitAddr(ma) {\n const addrs = ma.toString().split(WEBRTC_TRANSPORT + '/');\n if (addrs.length !== 2) {\n throw new CodeError('webrtc protocol was not present in multiaddr', codes.ERR_INVALID_MULTIADDR);\n }\n if (!addrs[0].includes(CIRCUIT_RELAY_TRANSPORT)) {\n throw new CodeError('p2p-circuit protocol was not present in multiaddr', codes.ERR_INVALID_MULTIADDR);\n }\n // look for remote peerId\n let remoteAddr = multiaddr(addrs[0]);\n const destination = multiaddr('/' + addrs[1]);\n const destinationIdString = destination.getPeerId();\n if (destinationIdString == null) {\n throw new CodeError('destination peer id was missing', codes.ERR_INVALID_MULTIADDR);\n }\n const lastProtoInRemote = remoteAddr.protos().pop();\n if (lastProtoInRemote === undefined) {\n throw new CodeError('invalid multiaddr', codes.ERR_INVALID_MULTIADDR);\n }\n if (lastProtoInRemote.name !== 'p2p') {\n remoteAddr = remoteAddr.encapsulate(`/p2p/${destinationIdString}`);\n }\n return { baseAddr: remoteAddr, peerId: peerIdFromString(destinationIdString) };\n}\n//# sourceMappingURL=transport.js.map","export const NOISE_MSG_MAX_LENGTH_BYTES = 65535;\nexport const NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG = NOISE_MSG_MAX_LENGTH_BYTES - 16;\nexport const DUMP_SESSION_KEYS = Boolean(globalThis.process?.env?.DUMP_SESSION_KEYS);\n//# sourceMappingURL=constants.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`positive integer expected, not ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`boolean expected, not ${b}`);\n}\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nfunction bytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('hash must be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */\nimport { bytes as abytes, isBytes } from './_assert.js';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u16 = (arr) => new Uint16Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 2));\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// big-endian hardware is rare. Just in case someone still decides to run ciphers:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`string expected, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * @example bytesToUtf8(new Uint8Array([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n else if (isBytes(data))\n data = copyBytes(data);\n else\n throw new Error(`Uint8Array expected, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\nexport function checkOpts(defaults, opts) {\n if (opts == null || typeof opts !== 'object')\n throw new Error('options must be defined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n// For runtime check if class implements interface\nexport class Hash {\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nexport const wrapCipher = (params, c) => {\n Object.assign(c, params);\n return c;\n};\n// Polyfill for Safari 14\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\nexport function u64Lengths(ciphertext, AAD) {\n const num = new Uint8Array(16);\n const view = createView(num);\n setBigUint64(view, 0, BigInt(AAD ? AAD.length : 0), true);\n setBigUint64(view, 8, BigInt(ciphertext.length), true);\n return num;\n}\n// Is byte array aligned to 4 byte offset (u32)?\nexport function isAligned32(bytes) {\n return bytes.byteOffset % 4 === 0;\n}\n// copy bytes to new u8a (aligned). Because Buffer.slice is broken.\nexport function copyBytes(bytes) {\n return Uint8Array.from(bytes);\n}\nexport function clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n//# sourceMappingURL=utils.js.map","// Basic utils for ARX (add-rotate-xor) salsa and chacha ciphers.\nimport { bool as abool, bytes as abytes, number as anumber } from './_assert.js';\nimport { checkOpts, clean, copyBytes, u32 } from './utils.js';\n/*\nRFC8439 requires multi-step cipher stream, where\nauthKey starts with counter: 0, actual msg with counter: 1.\n\nFor this, we need a way to re-use nonce / counter:\n\n const counter = new Uint8Array(4);\n chacha(..., counter, ...); // counter is now 1\n chacha(..., counter, ...); // counter is now 2\n\nThis is complicated:\n\n- 32-bit counters are enough, no need for 64-bit: max ArrayBuffer size in JS is 4GB\n- Original papers don't allow mutating counters\n- Counter overflow is undefined [^1]\n- Idea A: allow providing (nonce | counter) instead of just nonce, re-use it\n- Caveat: Cannot be re-used through all cases:\n- * chacha has (counter | nonce)\n- * xchacha has (nonce16 | counter | nonce16)\n- Idea B: separate nonce / counter and provide separate API for counter re-use\n- Caveat: there are different counter sizes depending on an algorithm.\n- salsa & chacha also differ in structures of key & sigma:\n salsa20: s[0] | k(4) | s[1] | nonce(2) | ctr(2) | s[2] | k(4) | s[3]\n chacha: s(4) | k(8) | ctr(1) | nonce(3)\n chacha20orig: s(4) | k(8) | ctr(2) | nonce(2)\n- Idea C: helper method such as `setSalsaState(key, nonce, sigma, data)`\n- Caveat: we can't re-use counter array\n\nxchacha [^2] uses the subkey and remaining 8 byte nonce with ChaCha20 as normal\n(prefixed by 4 NUL bytes, since [RFC8439] specifies a 12-byte nonce).\n\n[^1]: https://mailarchive.ietf.org/arch/msg/cfrg/gsOnTJzcbgG6OqD8Sc0GO5aR_tU/\n[^2]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha#appendix-A.2\n*/\n// We can't make top-level var depend on utils.utf8ToBytes\n// because it's not present in all envs. Creating a similar fn here\nconst _utf8ToBytes = (str) => Uint8Array.from(str.split('').map((c) => c.charCodeAt(0)));\nconst sigma16 = _utf8ToBytes('expand 16-byte k');\nconst sigma32 = _utf8ToBytes('expand 32-byte k');\nconst sigma16_32 = u32(sigma16);\nconst sigma32_32 = u32(sigma32);\nexport const sigma = sigma32_32.slice();\nexport function rotl(a, b) {\n return (a << b) | (a >>> (32 - b));\n}\n// Is byte array aligned to 4 byte offset (u32)?\nfunction isAligned32(b) {\n return b.byteOffset % 4 === 0;\n}\n// Salsa and Chacha block length is always 512-bit\nconst BLOCK_LEN = 64;\nconst BLOCK_LEN32 = 16;\n// new Uint32Array([2**32]) // => Uint32Array(1) [ 0 ]\n// new Uint32Array([2**32-1]) // => Uint32Array(1) [ 4294967295 ]\nconst MAX_COUNTER = 2 ** 32 - 1;\nconst U32_EMPTY = new Uint32Array();\nfunction runCipher(core, sigma, key, nonce, data, output, counter, rounds) {\n const len = data.length;\n const block = new Uint8Array(BLOCK_LEN);\n const b32 = u32(block);\n // Make sure that buffers aligned to 4 bytes\n const isAligned = isAligned32(data) && isAligned32(output);\n const d32 = isAligned ? u32(data) : U32_EMPTY;\n const o32 = isAligned ? u32(output) : U32_EMPTY;\n for (let pos = 0; pos < len; counter++) {\n core(sigma, key, nonce, b32, counter, rounds);\n if (counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n const take = Math.min(BLOCK_LEN, len - pos);\n // aligned to 4 bytes\n if (isAligned && take === BLOCK_LEN) {\n const pos32 = pos / 4;\n if (pos % 4 !== 0)\n throw new Error('arx: invalid block position');\n for (let j = 0, posj; j < BLOCK_LEN32; j++) {\n posj = pos32 + j;\n o32[posj] = d32[posj] ^ b32[j];\n }\n pos += BLOCK_LEN;\n continue;\n }\n for (let j = 0, posj; j < take; j++) {\n posj = pos + j;\n output[posj] = data[posj] ^ block[j];\n }\n pos += take;\n }\n}\nexport function createCipher(core, opts) {\n const { allowShortKeys, extendNonceFn, counterLength, counterRight, rounds } = checkOpts({ allowShortKeys: false, counterLength: 8, counterRight: false, rounds: 20 }, opts);\n if (typeof core !== 'function')\n throw new Error('core must be a function');\n anumber(counterLength);\n anumber(rounds);\n abool(counterRight);\n abool(allowShortKeys);\n return (key, nonce, data, output, counter = 0) => {\n abytes(key);\n abytes(nonce);\n abytes(data);\n const len = data.length;\n if (output === undefined)\n output = new Uint8Array(len);\n abytes(output);\n anumber(counter);\n if (counter < 0 || counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n if (output.length < len)\n throw new Error(`arx: output (${output.length}) is shorter than data (${len})`);\n const toClean = [];\n // Key & sigma\n // key=16 -> sigma16, k=key|key\n // key=32 -> sigma32, k=key\n let l = key.length, k, sigma;\n if (l === 32) {\n toClean.push((k = copyBytes(key)));\n sigma = sigma32_32;\n }\n else if (l === 16 && allowShortKeys) {\n k = new Uint8Array(32);\n k.set(key);\n k.set(key, 16);\n sigma = sigma16_32;\n toClean.push(k);\n }\n else {\n throw new Error(`arx: invalid 32-byte key, got length=${l}`);\n }\n // Nonce\n // salsa20: 8 (8-byte counter)\n // chacha20orig: 8 (8-byte counter)\n // chacha20: 12 (4-byte counter)\n // xsalsa20: 24 (16 -> hsalsa, 8 -> old nonce)\n // xchacha20: 24 (16 -> hchacha, 8 -> old nonce)\n // Align nonce to 4 bytes\n if (!isAligned32(nonce))\n toClean.push((nonce = copyBytes(nonce)));\n const k32 = u32(k);\n // hsalsa & hchacha: handle extended nonce\n if (extendNonceFn) {\n if (nonce.length !== 24)\n throw new Error(`arx: extended nonce must be 24 bytes`);\n extendNonceFn(sigma, k32, u32(nonce.subarray(0, 16)), k32);\n nonce = nonce.subarray(16);\n }\n // Handle nonce counter\n const nonceNcLen = 16 - counterLength;\n if (nonceNcLen !== nonce.length)\n throw new Error(`arx: nonce must be ${nonceNcLen} or 16 bytes`);\n // Pad counter when nonce is 64 bit\n if (nonceNcLen !== 12) {\n const nc = new Uint8Array(12);\n nc.set(nonce, counterRight ? 0 : 12 - nonce.length);\n nonce = nc;\n toClean.push(nonce);\n }\n const n32 = u32(nonce);\n runCipher(core, sigma, k32, n32, data, output, counter, rounds);\n clean(...toClean);\n return output;\n };\n}\n//# sourceMappingURL=_arx.js.map","import { bytes as abytes, exists as aexists, output as aoutput } from './_assert.js';\nimport { clean, toBytes } from './utils.js';\n// Poly1305 is a fast and parallel secret-key message-authentication code.\n// https://cr.yp.to/mac.html, https://cr.yp.to/mac/poly1305-20050329.pdf\n// https://datatracker.ietf.org/doc/html/rfc8439\n// Based on Public Domain poly1305-donna https://github.com/floodyberry/poly1305-donna\nconst u8to16 = (a, i) => (a[i++] & 0xff) | ((a[i++] & 0xff) << 8);\nclass Poly1305 {\n constructor(key) {\n this.blockLen = 16;\n this.outputLen = 16;\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.pos = 0;\n this.finished = false;\n key = toBytes(key);\n abytes(key, 32);\n const t0 = u8to16(key, 0);\n const t1 = u8to16(key, 2);\n const t2 = u8to16(key, 4);\n const t3 = u8to16(key, 6);\n const t4 = u8to16(key, 8);\n const t5 = u8to16(key, 10);\n const t6 = u8to16(key, 12);\n const t7 = u8to16(key, 14);\n // https://github.com/floodyberry/poly1305-donna/blob/e6ad6e091d30d7f4ec2d4f978be1fcfcbce72781/poly1305-donna-16.h#L47\n this.r[0] = t0 & 0x1fff;\n this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = (t4 >>> 1) & 0x1ffe;\n this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = (t7 >>> 5) & 0x007f;\n for (let i = 0; i < 8; i++)\n this.pad[i] = u8to16(key, 16 + 2 * i);\n }\n process(data, offset, isLast = false) {\n const hibit = isLast ? 0 : 1 << 11;\n const { h, r } = this;\n const r0 = r[0];\n const r1 = r[1];\n const r2 = r[2];\n const r3 = r[3];\n const r4 = r[4];\n const r5 = r[5];\n const r6 = r[6];\n const r7 = r[7];\n const r8 = r[8];\n const r9 = r[9];\n const t0 = u8to16(data, offset + 0);\n const t1 = u8to16(data, offset + 2);\n const t2 = u8to16(data, offset + 4);\n const t3 = u8to16(data, offset + 6);\n const t4 = u8to16(data, offset + 8);\n const t5 = u8to16(data, offset + 10);\n const t6 = u8to16(data, offset + 12);\n const t7 = u8to16(data, offset + 14);\n let h0 = h[0] + (t0 & 0x1fff);\n let h1 = h[1] + (((t0 >>> 13) | (t1 << 3)) & 0x1fff);\n let h2 = h[2] + (((t1 >>> 10) | (t2 << 6)) & 0x1fff);\n let h3 = h[3] + (((t2 >>> 7) | (t3 << 9)) & 0x1fff);\n let h4 = h[4] + (((t3 >>> 4) | (t4 << 12)) & 0x1fff);\n let h5 = h[5] + ((t4 >>> 1) & 0x1fff);\n let h6 = h[6] + (((t4 >>> 14) | (t5 << 2)) & 0x1fff);\n let h7 = h[7] + (((t5 >>> 11) | (t6 << 5)) & 0x1fff);\n let h8 = h[8] + (((t6 >>> 8) | (t7 << 8)) & 0x1fff);\n let h9 = h[9] + ((t7 >>> 5) | hibit);\n let c = 0;\n let d0 = c + h0 * r0 + h1 * (5 * r9) + h2 * (5 * r8) + h3 * (5 * r7) + h4 * (5 * r6);\n c = d0 >>> 13;\n d0 &= 0x1fff;\n d0 += h5 * (5 * r5) + h6 * (5 * r4) + h7 * (5 * r3) + h8 * (5 * r2) + h9 * (5 * r1);\n c += d0 >>> 13;\n d0 &= 0x1fff;\n let d1 = c + h0 * r1 + h1 * r0 + h2 * (5 * r9) + h3 * (5 * r8) + h4 * (5 * r7);\n c = d1 >>> 13;\n d1 &= 0x1fff;\n d1 += h5 * (5 * r6) + h6 * (5 * r5) + h7 * (5 * r4) + h8 * (5 * r3) + h9 * (5 * r2);\n c += d1 >>> 13;\n d1 &= 0x1fff;\n let d2 = c + h0 * r2 + h1 * r1 + h2 * r0 + h3 * (5 * r9) + h4 * (5 * r8);\n c = d2 >>> 13;\n d2 &= 0x1fff;\n d2 += h5 * (5 * r7) + h6 * (5 * r6) + h7 * (5 * r5) + h8 * (5 * r4) + h9 * (5 * r3);\n c += d2 >>> 13;\n d2 &= 0x1fff;\n let d3 = c + h0 * r3 + h1 * r2 + h2 * r1 + h3 * r0 + h4 * (5 * r9);\n c = d3 >>> 13;\n d3 &= 0x1fff;\n d3 += h5 * (5 * r8) + h6 * (5 * r7) + h7 * (5 * r6) + h8 * (5 * r5) + h9 * (5 * r4);\n c += d3 >>> 13;\n d3 &= 0x1fff;\n let d4 = c + h0 * r4 + h1 * r3 + h2 * r2 + h3 * r1 + h4 * r0;\n c = d4 >>> 13;\n d4 &= 0x1fff;\n d4 += h5 * (5 * r9) + h6 * (5 * r8) + h7 * (5 * r7) + h8 * (5 * r6) + h9 * (5 * r5);\n c += d4 >>> 13;\n d4 &= 0x1fff;\n let d5 = c + h0 * r5 + h1 * r4 + h2 * r3 + h3 * r2 + h4 * r1;\n c = d5 >>> 13;\n d5 &= 0x1fff;\n d5 += h5 * r0 + h6 * (5 * r9) + h7 * (5 * r8) + h8 * (5 * r7) + h9 * (5 * r6);\n c += d5 >>> 13;\n d5 &= 0x1fff;\n let d6 = c + h0 * r6 + h1 * r5 + h2 * r4 + h3 * r3 + h4 * r2;\n c = d6 >>> 13;\n d6 &= 0x1fff;\n d6 += h5 * r1 + h6 * r0 + h7 * (5 * r9) + h8 * (5 * r8) + h9 * (5 * r7);\n c += d6 >>> 13;\n d6 &= 0x1fff;\n let d7 = c + h0 * r7 + h1 * r6 + h2 * r5 + h3 * r4 + h4 * r3;\n c = d7 >>> 13;\n d7 &= 0x1fff;\n d7 += h5 * r2 + h6 * r1 + h7 * r0 + h8 * (5 * r9) + h9 * (5 * r8);\n c += d7 >>> 13;\n d7 &= 0x1fff;\n let d8 = c + h0 * r8 + h1 * r7 + h2 * r6 + h3 * r5 + h4 * r4;\n c = d8 >>> 13;\n d8 &= 0x1fff;\n d8 += h5 * r3 + h6 * r2 + h7 * r1 + h8 * r0 + h9 * (5 * r9);\n c += d8 >>> 13;\n d8 &= 0x1fff;\n let d9 = c + h0 * r9 + h1 * r8 + h2 * r7 + h3 * r6 + h4 * r5;\n c = d9 >>> 13;\n d9 &= 0x1fff;\n d9 += h5 * r4 + h6 * r3 + h7 * r2 + h8 * r1 + h9 * r0;\n c += d9 >>> 13;\n d9 &= 0x1fff;\n c = ((c << 2) + c) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = c >>> 13;\n d1 += c;\n h[0] = d0;\n h[1] = d1;\n h[2] = d2;\n h[3] = d3;\n h[4] = d4;\n h[5] = d5;\n h[6] = d6;\n h[7] = d7;\n h[8] = d8;\n h[9] = d9;\n }\n finalize() {\n const { h, pad } = this;\n const g = new Uint16Array(10);\n let c = h[1] >>> 13;\n h[1] &= 0x1fff;\n for (let i = 2; i < 10; i++) {\n h[i] += c;\n c = h[i] >>> 13;\n h[i] &= 0x1fff;\n }\n h[0] += c * 5;\n c = h[0] >>> 13;\n h[0] &= 0x1fff;\n h[1] += c;\n c = h[1] >>> 13;\n h[1] &= 0x1fff;\n h[2] += c;\n g[0] = h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (let i = 1; i < 10; i++) {\n g[i] = h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= 1 << 13;\n let mask = (c ^ 1) - 1;\n for (let i = 0; i < 10; i++)\n g[i] &= mask;\n mask = ~mask;\n for (let i = 0; i < 10; i++)\n h[i] = (h[i] & mask) | g[i];\n h[0] = (h[0] | (h[1] << 13)) & 0xffff;\n h[1] = ((h[1] >>> 3) | (h[2] << 10)) & 0xffff;\n h[2] = ((h[2] >>> 6) | (h[3] << 7)) & 0xffff;\n h[3] = ((h[3] >>> 9) | (h[4] << 4)) & 0xffff;\n h[4] = ((h[4] >>> 12) | (h[5] << 1) | (h[6] << 14)) & 0xffff;\n h[5] = ((h[6] >>> 2) | (h[7] << 11)) & 0xffff;\n h[6] = ((h[7] >>> 5) | (h[8] << 8)) & 0xffff;\n h[7] = ((h[8] >>> 8) | (h[9] << 5)) & 0xffff;\n let f = h[0] + pad[0];\n h[0] = f & 0xffff;\n for (let i = 1; i < 8; i++) {\n f = (((h[i] + pad[i]) | 0) + (f >>> 16)) | 0;\n h[i] = f & 0xffff;\n }\n clean(g);\n }\n update(data) {\n aexists(this);\n const { buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input\n if (take === blockLen) {\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(data, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(buffer, 0, false);\n this.pos = 0;\n }\n }\n return this;\n }\n destroy() {\n clean(this.h, this.r, this.buffer, this.pad);\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n const { buffer, h } = this;\n let { pos } = this;\n if (pos) {\n buffer[pos++] = 1;\n for (; pos < 16; pos++)\n buffer[pos] = 0;\n this.process(buffer, 0, true);\n }\n this.finalize();\n let opos = 0;\n for (let i = 0; i < 8; i++) {\n out[opos++] = h[i] >>> 0;\n out[opos++] = h[i] >>> 8;\n }\n return out;\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n}\nexport function wrapConstructorWithKey(hashCons) {\n const hashC = (msg, key) => hashCons(key).update(toBytes(msg)).digest();\n const tmp = hashCons(new Uint8Array(32));\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (key) => hashCons(key);\n return hashC;\n}\nexport const poly1305 = wrapConstructorWithKey((key) => new Poly1305(key));\n//# sourceMappingURL=_poly1305.js.map","// prettier-ignore\nimport { createCipher, rotl } from './_arx.js';\nimport { bytes as abytes } from './_assert.js';\nimport { poly1305 } from './_poly1305.js';\nimport { clean, createView, equalBytes, setBigUint64, wrapCipher, } from './utils.js';\n// ChaCha20 stream cipher was released in 2008. ChaCha aims to increase\n// the diffusion per round, but had slightly less cryptanalysis.\n// https://cr.yp.to/chacha.html, http://cr.yp.to/chacha/chacha-20080128.pdf\n/**\n * ChaCha core function.\n */\n// prettier-ignore\nfunction chachaCore(s, k, n, out, cnt, rounds = 20) {\n let y00 = s[0], y01 = s[1], y02 = s[2], y03 = s[3], // \"expa\" \"nd 3\" \"2-by\" \"te k\"\n y04 = k[0], y05 = k[1], y06 = k[2], y07 = k[3], // Key Key Key Key\n y08 = k[4], y09 = k[5], y10 = k[6], y11 = k[7], // Key Key Key Key\n y12 = cnt, y13 = n[0], y14 = n[1], y15 = n[2]; // Counter Counter\tNonce Nonce\n // Save state to temporary variables\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n for (let r = 0; r < rounds; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n // Write output\n let oi = 0;\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\n/**\n * hchacha helper method, used primarily in xchacha, to hash\n * key and nonce into key' and nonce'.\n * Same as chachaCore, but there doesn't seem to be a way to move the block\n * out without 25% performance hit.\n */\n// prettier-ignore\nexport function hchacha(s, k, i, o32) {\n let x00 = s[0], x01 = s[1], x02 = s[2], x03 = s[3], x04 = k[0], x05 = k[1], x06 = k[2], x07 = k[3], x08 = k[4], x09 = k[5], x10 = k[6], x11 = k[7], x12 = i[0], x13 = i[1], x14 = i[2], x15 = i[3];\n for (let r = 0; r < 20; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n let oi = 0;\n o32[oi++] = x00;\n o32[oi++] = x01;\n o32[oi++] = x02;\n o32[oi++] = x03;\n o32[oi++] = x12;\n o32[oi++] = x13;\n o32[oi++] = x14;\n o32[oi++] = x15;\n}\n/**\n * Original, non-RFC chacha20 from DJB. 8-byte nonce, 8-byte counter.\n */\nexport const chacha20orig = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n allowShortKeys: true,\n});\n/**\n * ChaCha stream cipher. Conforms to RFC 8439 (IETF, TLS). 12-byte nonce, 4-byte counter.\n * With 12-byte nonce, it's not safe to use fill it with random (CSPRNG), due to collision chance.\n */\nexport const chacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n allowShortKeys: false,\n});\n/**\n * XChaCha eXtended-nonce ChaCha. 24-byte nonce.\n * With 24-byte nonce, it's safe to use fill it with random (CSPRNG).\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha\n */\nexport const xchacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n extendNonceFn: hchacha,\n allowShortKeys: false,\n});\n/**\n * Reduced 8-round chacha, described in original paper.\n */\nexport const chacha8 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 8,\n});\n/**\n * Reduced 12-round chacha, described in original paper.\n */\nexport const chacha12 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 12,\n});\nconst ZEROS16 = /* @__PURE__ */ new Uint8Array(16);\n// Pad to digest size with zeros\nconst updatePadded = (h, msg) => {\n h.update(msg);\n const left = msg.length % 16;\n if (left)\n h.update(ZEROS16.subarray(left));\n};\nconst ZEROS32 = /* @__PURE__ */ new Uint8Array(32);\nfunction computeTag(fn, key, nonce, data, AAD) {\n const authKey = fn(key, nonce, ZEROS32);\n const h = poly1305.create(authKey);\n if (AAD)\n updatePadded(h, AAD);\n updatePadded(h, data);\n const num = new Uint8Array(16);\n const view = createView(num);\n setBigUint64(view, 0, BigInt(AAD ? AAD.length : 0), true);\n setBigUint64(view, 8, BigInt(data.length), true);\n h.update(num);\n const res = h.digest();\n clean(authKey, num);\n return res;\n}\n/**\n * AEAD algorithm from RFC 8439.\n * Salsa20 and chacha (RFC 8439) use poly1305 differently.\n * We could have composed them similar to:\n * https://github.com/paulmillr/scure-base/blob/b266c73dde977b1dd7ef40ef7a23cc15aab526b3/index.ts#L250\n * But it's hard because of authKey:\n * In salsa20, authKey changes position in salsa stream.\n * In chacha, authKey can't be computed inside computeTag, it modifies the counter.\n */\nexport const _poly1305_aead = (xorStream) => (key, nonce, AAD) => {\n const tagLength = 16;\n abytes(key, 32);\n abytes(nonce);\n return {\n encrypt(plaintext, output) {\n const plength = plaintext.length;\n const clength = plength + tagLength;\n if (output) {\n abytes(output, clength);\n }\n else {\n output = new Uint8Array(clength);\n }\n xorStream(key, nonce, plaintext, output, 1);\n const tag = computeTag(xorStream, key, nonce, output.subarray(0, -tagLength), AAD);\n output.set(tag, plength); // append tag\n clean(tag);\n return output;\n },\n decrypt(ciphertext, output) {\n const clength = ciphertext.length;\n const plength = clength - tagLength;\n if (clength < tagLength)\n throw new Error(`encrypted data must be at least ${tagLength} bytes`);\n if (output) {\n abytes(output, plength);\n }\n else {\n output = new Uint8Array(plength);\n }\n const data = ciphertext.subarray(0, -tagLength);\n const passedTag = ciphertext.subarray(-tagLength);\n const tag = computeTag(xorStream, key, nonce, data, AAD);\n if (!equalBytes(passedTag, tag))\n throw new Error('invalid tag');\n xorStream(key, nonce, data, output, 1);\n clean(tag);\n return output;\n },\n };\n};\n/**\n * ChaCha20-Poly1305 from RFC 8439.\n * With 12-byte nonce, it's not safe to use fill it with random (CSPRNG), due to collision chance.\n */\nexport const chacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 12, tagLength: 16 }, _poly1305_aead(chacha20));\n/**\n * XChaCha20-Poly1305 extended-nonce chacha.\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha\n * With 24-byte nonce, it's safe to use fill it with random (CSPRNG).\n */\nexport const xchacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 24, tagLength: 16 }, _poly1305_aead(xchacha20));\n//# sourceMappingURL=chacha.js.map","import { chacha20poly1305 } from '@noble/ciphers/chacha';\nimport { x25519 } from '@noble/curves/ed25519';\nimport { extract, expand } from '@noble/hashes/hkdf';\nimport { sha256 } from '@noble/hashes/sha256';\nexport const pureJsCrypto = {\n hashSHA256(data) {\n return sha256(data.subarray());\n },\n getHKDF(ck, ikm) {\n const prk = extract(sha256, ikm, ck);\n const okmU8Array = expand(sha256, prk, undefined, 96);\n const okm = okmU8Array;\n const k1 = okm.subarray(0, 32);\n const k2 = okm.subarray(32, 64);\n const k3 = okm.subarray(64, 96);\n return [k1, k2, k3];\n },\n generateX25519KeyPair() {\n const secretKey = x25519.utils.randomPrivateKey();\n const publicKey = x25519.getPublicKey(secretKey);\n return {\n publicKey,\n privateKey: secretKey\n };\n },\n generateX25519KeyPairFromSeed(seed) {\n const publicKey = x25519.getPublicKey(seed);\n return {\n publicKey,\n privateKey: seed\n };\n },\n generateX25519SharedKey(privateKey, publicKey) {\n return x25519.getSharedSecret(privateKey.subarray(), publicKey.subarray());\n },\n chaCha20Poly1305Encrypt(plaintext, nonce, ad, k) {\n return chacha20poly1305(k, nonce, ad).encrypt(plaintext.subarray());\n },\n chaCha20Poly1305Decrypt(ciphertext, nonce, ad, k, dst) {\n return chacha20poly1305(k, nonce, ad).decrypt(ciphertext.subarray(), dst);\n }\n};\n//# sourceMappingURL=js.js.map","import { pureJsCrypto } from './js.js';\nexport const defaultCrypto = pureJsCrypto;\n//# sourceMappingURL=index.browser.js.map","export function wrapCrypto(crypto) {\n return {\n generateKeypair: crypto.generateX25519KeyPair,\n dh: (keypair, publicKey) => crypto.generateX25519SharedKey(keypair.privateKey, publicKey).subarray(0, 32),\n encrypt: crypto.chaCha20Poly1305Encrypt,\n decrypt: crypto.chaCha20Poly1305Decrypt,\n hash: crypto.hashSHA256,\n hkdf: crypto.getHKDF\n };\n}\n//# sourceMappingURL=crypto.js.map","import {} from 'uint8arraylist';\nimport { allocUnsafe as uint8ArrayAllocUnsafe } from 'uint8arrays/alloc';\nexport const uint16BEEncode = (value) => {\n const target = uint8ArrayAllocUnsafe(2);\n target[0] = value >> 8;\n target[1] = value;\n return target;\n};\nuint16BEEncode.bytes = 2;\nexport const uint16BEDecode = (data) => {\n if (data.length < 2)\n throw RangeError('Could not decode int16BE');\n if (data instanceof Uint8Array) {\n let value = 0;\n value += data[0] << 8;\n value += data[1];\n return value;\n }\n return data.getUint16(0);\n};\nuint16BEDecode.bytes = 2;\n//# sourceMappingURL=encoder.js.map","export function registerMetrics(metrics) {\n return {\n xxHandshakeSuccesses: metrics.registerCounter('libp2p_noise_xxhandshake_successes_total', {\n help: 'Total count of noise xxHandshakes successes_'\n }),\n xxHandshakeErrors: metrics.registerCounter('libp2p_noise_xxhandshake_error_total', {\n help: 'Total count of noise xxHandshakes errors'\n }),\n encryptedPackets: metrics.registerCounter('libp2p_noise_encrypted_packets_total', {\n help: 'Total count of noise encrypted packets successfully'\n }),\n decryptedPackets: metrics.registerCounter('libp2p_noise_decrypted_packets_total', {\n help: 'Total count of noise decrypted packets'\n }),\n decryptErrors: metrics.registerCounter('libp2p_noise_decrypt_errors_total', {\n help: 'Total count of noise decrypt errors'\n })\n };\n}\n//# sourceMappingURL=metrics.js.map","import { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { DUMP_SESSION_KEYS } from './constants.js';\nexport function logLocalStaticKeys(s, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (s) {\n keyLogger(`LOCAL_STATIC_PUBLIC_KEY ${uint8ArrayToString(s.publicKey, 'hex')}`);\n keyLogger(`LOCAL_STATIC_PRIVATE_KEY ${uint8ArrayToString(s.privateKey, 'hex')}`);\n }\n else {\n keyLogger('Missing local static keys.');\n }\n}\nexport function logLocalEphemeralKeys(e, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (e) {\n keyLogger(`LOCAL_PUBLIC_EPHEMERAL_KEY ${uint8ArrayToString(e.publicKey, 'hex')}`);\n keyLogger(`LOCAL_PRIVATE_EPHEMERAL_KEY ${uint8ArrayToString(e.privateKey, 'hex')}`);\n }\n else {\n keyLogger('Missing local ephemeral keys.');\n }\n}\nexport function logRemoteStaticKey(rs, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (rs) {\n keyLogger(`REMOTE_STATIC_PUBLIC_KEY ${uint8ArrayToString(rs.subarray(), 'hex')}`);\n }\n else {\n keyLogger('Missing remote static public key.');\n }\n}\nexport function logRemoteEphemeralKey(re, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n if (re) {\n keyLogger(`REMOTE_EPHEMERAL_PUBLIC_KEY ${uint8ArrayToString(re.subarray(), 'hex')}`);\n }\n else {\n keyLogger('Missing remote ephemeral keys.');\n }\n}\nexport function logCipherState(cs1, cs2, keyLogger) {\n if (!keyLogger.enabled || !DUMP_SESSION_KEYS) {\n return;\n }\n keyLogger(`CIPHER_STATE_1 ${cs1.n.getUint64()} ${cs1.k && uint8ArrayToString(cs1.k, 'hex')}`);\n keyLogger(`CIPHER_STATE_2 ${cs2.n.getUint64()} ${cs2.k && uint8ArrayToString(cs2.k, 'hex')}`);\n}\n//# sourceMappingURL=logger.js.map","export class UnexpectedPeerError extends Error {\n code;\n constructor(message = 'Unexpected Peer') {\n super(message);\n this.code = UnexpectedPeerError.code;\n }\n static code = 'ERR_UNEXPECTED_PEER';\n}\nexport class InvalidCryptoExchangeError extends Error {\n code;\n constructor(message = 'Invalid crypto exchange') {\n super(message);\n this.code = InvalidCryptoExchangeError.code;\n }\n static code = 'ERR_INVALID_CRYPTO_EXCHANGE';\n}\n//# sourceMappingURL=errors.js.map","import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport const MIN_NONCE = 0;\n// For performance reasons, the nonce is represented as a JS `number`\n// Although JS `number` can safely represent integers up to 2 ** 53 - 1, we choose to only use\n// 4 bytes to store the data for performance reason.\n// This is a slight deviation from the noise spec, which describes the max nonce as 2 ** 64 - 2\n// The effect is that this implementation will need a new handshake to be performed after fewer messages are exchanged than other implementations with full uint64 nonces.\n// this MAX_NONCE is still a large number of messages, so the practical effect of this is negligible.\nexport const MAX_NONCE = 0xffffffff;\nconst ERR_MAX_NONCE = 'Cipherstate has reached maximum n, a new handshake must be performed';\n/**\n * The nonce is an uint that's increased over time.\n * Maintaining different representations help improve performance.\n */\nexport class Nonce {\n n;\n bytes;\n view;\n constructor(n = MIN_NONCE) {\n this.n = n;\n this.bytes = uint8ArrayAlloc(12);\n this.view = new DataView(this.bytes.buffer, this.bytes.byteOffset, this.bytes.byteLength);\n this.view.setUint32(4, n, true);\n }\n increment() {\n this.n++;\n // Even though we're treating the nonce as 8 bytes, RFC7539 specifies 12 bytes for a nonce.\n this.view.setUint32(4, this.n, true);\n }\n getBytes() {\n return this.bytes;\n }\n getUint64() {\n return this.n;\n }\n assertValue() {\n if (this.n > MAX_NONCE) {\n throw new Error(ERR_MAX_NONCE);\n }\n }\n}\n//# sourceMappingURL=nonce.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { InvalidCryptoExchangeError } from './errors.js';\nimport { Nonce } from './nonce.js';\n// Code in this file is a direct translation of a subset of the noise protocol https://noiseprotocol.org/noise.html,\n// agnostic to libp2p's usage of noise\nexport const ZEROLEN = uint8ArrayAlloc(0);\nexport class CipherState {\n k;\n n;\n crypto;\n constructor(crypto, k = undefined, n = 0) {\n this.crypto = crypto;\n this.k = k;\n this.n = new Nonce(n);\n }\n hasKey() {\n return Boolean(this.k);\n }\n encryptWithAd(ad, plaintext) {\n if (!this.hasKey()) {\n return plaintext;\n }\n this.n.assertValue();\n const e = this.crypto.encrypt(plaintext, this.n.getBytes(), ad, this.k);\n this.n.increment();\n return e;\n }\n decryptWithAd(ad, ciphertext, dst) {\n if (!this.hasKey()) {\n return ciphertext;\n }\n this.n.assertValue();\n const plaintext = this.crypto.decrypt(ciphertext, this.n.getBytes(), ad, this.k, dst);\n this.n.increment();\n return plaintext;\n }\n}\nexport class SymmetricState {\n cs;\n ck;\n h;\n crypto;\n constructor(crypto, protocolName) {\n this.crypto = crypto;\n const protocolNameBytes = uint8ArrayFromString(protocolName, 'utf-8');\n this.h = hashProtocolName(crypto, protocolNameBytes);\n this.ck = this.h;\n this.cs = new CipherState(crypto);\n }\n mixKey(ikm) {\n const [ck, tempK] = this.crypto.hkdf(this.ck, ikm);\n this.ck = ck;\n this.cs = new CipherState(this.crypto, tempK);\n }\n mixHash(data) {\n this.h = this.crypto.hash(new Uint8ArrayList(this.h, data));\n }\n encryptAndHash(plaintext) {\n const ciphertext = this.cs.encryptWithAd(this.h, plaintext);\n this.mixHash(ciphertext);\n return ciphertext;\n }\n decryptAndHash(ciphertext) {\n const plaintext = this.cs.decryptWithAd(this.h, ciphertext);\n this.mixHash(ciphertext);\n return plaintext;\n }\n split() {\n const [tempK1, tempK2] = this.crypto.hkdf(this.ck, ZEROLEN);\n return [new CipherState(this.crypto, tempK1), new CipherState(this.crypto, tempK2)];\n }\n}\nexport class AbstractHandshakeState {\n ss;\n s;\n e;\n rs;\n re;\n initiator;\n crypto;\n constructor(init) {\n const { crypto, protocolName, prologue, initiator, s, e, rs, re } = init;\n this.crypto = crypto;\n this.ss = new SymmetricState(crypto, protocolName);\n this.ss.mixHash(prologue);\n this.initiator = initiator;\n this.s = s;\n this.e = e;\n this.rs = rs;\n this.re = re;\n }\n writeE() {\n if (this.e) {\n throw new Error('ephemeral keypair is already set');\n }\n const e = this.crypto.generateKeypair();\n this.ss.mixHash(e.publicKey);\n this.e = e;\n return e.publicKey;\n }\n writeS() {\n if (!this.s) {\n throw new Error('static keypair is not set');\n }\n return this.ss.encryptAndHash(this.s.publicKey);\n }\n writeEE() {\n if (!this.e) {\n throw new Error('ephemeral keypair is not set');\n }\n if (!this.re) {\n throw new Error('remote ephemeral public key is not set');\n }\n this.ss.mixKey(this.crypto.dh(this.e, this.re));\n }\n writeES() {\n if (this.initiator) {\n if (!this.e) {\n throw new Error('ephemeral keypair is not set');\n }\n if (!this.rs) {\n throw new Error('remote static public key is not set');\n }\n this.ss.mixKey(this.crypto.dh(this.e, this.rs));\n }\n else {\n if (!this.s) {\n throw new Error('static keypair is not set');\n }\n if (!this.re) {\n throw new Error('remote ephemeral public key is not set');\n }\n this.ss.mixKey(this.crypto.dh(this.s, this.re));\n }\n }\n writeSE() {\n if (this.initiator) {\n if (!this.s) {\n throw new Error('static keypair is not set');\n }\n if (!this.re) {\n throw new Error('remote ephemeral public key is not set');\n }\n this.ss.mixKey(this.crypto.dh(this.s, this.re));\n }\n else {\n if (!this.e) {\n throw new Error('ephemeral keypair is not set');\n }\n if (!this.rs) {\n throw new Error('remote static public key is not set');\n }\n this.ss.mixKey(this.crypto.dh(this.e, this.rs));\n }\n }\n readE(message, offset = 0) {\n if (this.re) {\n throw new Error('remote ephemeral public key is already set');\n }\n if (message.byteLength < offset + 32) {\n throw new Error('message is not long enough');\n }\n this.re = message.sublist(offset, offset + 32);\n this.ss.mixHash(this.re);\n }\n readS(message, offset = 0) {\n if (this.rs) {\n throw new Error('remote static public key is already set');\n }\n const cipherLength = 32 + (this.ss.cs.hasKey() ? 16 : 0);\n if (message.byteLength < offset + cipherLength) {\n throw new Error('message is not long enough');\n }\n const temp = message.sublist(offset, offset + cipherLength);\n this.rs = this.ss.decryptAndHash(temp);\n return cipherLength;\n }\n readEE() {\n this.writeEE();\n }\n readES() {\n this.writeES();\n }\n readSE() {\n this.writeSE();\n }\n}\n/**\n * A IHandshakeState that's optimized for the XX pattern\n */\nexport class XXHandshakeState extends AbstractHandshakeState {\n // e\n writeMessageA(payload) {\n return new Uint8ArrayList(this.writeE(), this.ss.encryptAndHash(payload));\n }\n // e, ee, s, es\n writeMessageB(payload) {\n const e = this.writeE();\n this.writeEE();\n const encS = this.writeS();\n this.writeES();\n return new Uint8ArrayList(e, encS, this.ss.encryptAndHash(payload));\n }\n // s, se\n writeMessageC(payload) {\n const encS = this.writeS();\n this.writeSE();\n return new Uint8ArrayList(encS, this.ss.encryptAndHash(payload));\n }\n // e\n readMessageA(message) {\n try {\n this.readE(message);\n return this.ss.decryptAndHash(message.sublist(32));\n }\n catch (e) {\n throw new InvalidCryptoExchangeError(`handshake stage 0 validation fail: ${e.message}`);\n }\n }\n // e, ee, s, es\n readMessageB(message) {\n try {\n this.readE(message);\n this.readEE();\n const consumed = this.readS(message, 32);\n this.readES();\n return this.ss.decryptAndHash(message.sublist(32 + consumed));\n }\n catch (e) {\n throw new InvalidCryptoExchangeError(`handshake stage 1 validation fail: ${e.message}`);\n }\n }\n // s, se\n readMessageC(message) {\n try {\n const consumed = this.readS(message);\n this.readSE();\n return this.ss.decryptAndHash(message.sublist(consumed));\n }\n catch (e) {\n throw new InvalidCryptoExchangeError(`handshake stage 2 validation fail: ${e.message}`);\n }\n }\n}\nfunction hashProtocolName(crypto, protocolName) {\n if (protocolName.length <= 32) {\n const h = uint8ArrayAlloc(32);\n h.set(protocolName);\n return h;\n }\n else {\n return crypto.hash(protocolName);\n }\n}\n//# sourceMappingURL=protocol.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { decodeMessage, encodeMessage, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var NoiseExtensions;\n(function (NoiseExtensions) {\n let _codec;\n NoiseExtensions.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.webtransportCerthashes != null) {\n for (const value of obj.webtransportCerthashes) {\n w.uint32(10);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n webtransportCerthashes: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.webtransportCerthashes.push(reader.bytes());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n NoiseExtensions.encode = (obj) => {\n return encodeMessage(obj, NoiseExtensions.codec());\n };\n NoiseExtensions.decode = (buf) => {\n return decodeMessage(buf, NoiseExtensions.codec());\n };\n})(NoiseExtensions || (NoiseExtensions = {}));\nexport var NoiseHandshakePayload;\n(function (NoiseHandshakePayload) {\n let _codec;\n NoiseHandshakePayload.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.identityKey != null && obj.identityKey.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.identityKey);\n }\n if ((obj.identitySig != null && obj.identitySig.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.identitySig);\n }\n if (obj.extensions != null) {\n w.uint32(34);\n NoiseExtensions.codec().encode(obj.extensions, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n identityKey: uint8ArrayAlloc(0),\n identitySig: uint8ArrayAlloc(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.identityKey = reader.bytes();\n break;\n }\n case 2: {\n obj.identitySig = reader.bytes();\n break;\n }\n case 4: {\n obj.extensions = NoiseExtensions.codec().decode(reader, reader.uint32());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n NoiseHandshakePayload.encode = (obj) => {\n return encodeMessage(obj, NoiseHandshakePayload.codec());\n };\n NoiseHandshakePayload.decode = (buf) => {\n return decodeMessage(buf, NoiseHandshakePayload.codec());\n };\n})(NoiseHandshakePayload || (NoiseHandshakePayload = {}));\n//# sourceMappingURL=payload.js.map","import { unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport {} from 'uint8arraylist';\nimport { equals, toString } from 'uint8arrays';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { UnexpectedPeerError } from './errors.js';\nimport { NoiseHandshakePayload } from './proto/payload.js';\nexport async function createHandshakePayload(privateKey, staticPublicKey, extensions) {\n const identitySig = await privateKey.sign(getSignaturePayload(staticPublicKey));\n return NoiseHandshakePayload.encode({\n identityKey: privateKey.public.bytes,\n identitySig,\n extensions\n });\n}\nexport async function decodeHandshakePayload(payloadBytes, remoteStaticKey, remoteIdentityKey) {\n try {\n const payload = NoiseHandshakePayload.decode(payloadBytes);\n if (remoteIdentityKey) {\n const remoteIdentityKeyBytes = remoteIdentityKey.subarray();\n if (!equals(remoteIdentityKeyBytes, payload.identityKey)) {\n throw new Error(`Payload identity key ${toString(payload.identityKey, 'hex')} does not match expected remote identity key ${toString(remoteIdentityKeyBytes, 'hex')}`);\n }\n }\n if (!remoteStaticKey) {\n throw new Error('Remote static does not exist');\n }\n const signaturePayload = getSignaturePayload(remoteStaticKey);\n const publicKey = unmarshalPublicKey(payload.identityKey);\n if (!(await publicKey.verify(signaturePayload, payload.identitySig))) {\n throw new Error('Invalid payload signature');\n }\n return payload;\n }\n catch (e) {\n throw new UnexpectedPeerError(e.message);\n }\n}\nexport function getSignaturePayload(publicKey) {\n const prefix = uint8ArrayFromString('noise-libp2p-static-key:');\n if (publicKey instanceof Uint8Array) {\n return uint8ArrayConcat([prefix, publicKey], prefix.length + publicKey.length);\n }\n publicKey.prepend(prefix);\n return publicKey;\n}\n//# sourceMappingURL=utils.js.map","import { logLocalStaticKeys, logLocalEphemeralKeys, logRemoteEphemeralKey, logRemoteStaticKey, logCipherState } from './logger.js';\nimport { ZEROLEN, XXHandshakeState } from './protocol.js';\nimport { createHandshakePayload, decodeHandshakePayload } from './utils.js';\nexport async function performHandshakeInitiator(init, options) {\n const { log, connection, crypto, privateKey, prologue, s, remoteIdentityKey, extensions } = init;\n const payload = await createHandshakePayload(privateKey, s.publicKey, extensions);\n const xx = new XXHandshakeState({\n crypto,\n protocolName: 'Noise_XX_25519_ChaChaPoly_SHA256',\n initiator: true,\n prologue,\n s\n });\n logLocalStaticKeys(xx.s, log);\n log.trace('Stage 0 - Initiator starting to send first message.');\n await connection.write(xx.writeMessageA(ZEROLEN), options);\n log.trace('Stage 0 - Initiator finished sending first message.');\n logLocalEphemeralKeys(xx.e, log);\n log.trace('Stage 1 - Initiator waiting to receive first message from responder...');\n const plaintext = xx.readMessageB(await connection.read(options));\n log.trace('Stage 1 - Initiator received the message.');\n logRemoteEphemeralKey(xx.re, log);\n logRemoteStaticKey(xx.rs, log);\n log.trace(\"Initiator going to check remote's signature...\");\n const receivedPayload = await decodeHandshakePayload(plaintext, xx.rs, remoteIdentityKey);\n log.trace('All good with the signature!');\n log.trace('Stage 2 - Initiator sending third handshake message.');\n await connection.write(xx.writeMessageC(payload), options);\n log.trace('Stage 2 - Initiator sent message with signed payload.');\n const [cs1, cs2] = xx.ss.split();\n logCipherState(cs1, cs2, log);\n return {\n payload: receivedPayload,\n encrypt: (plaintext) => cs1.encryptWithAd(ZEROLEN, plaintext),\n decrypt: (ciphertext, dst) => cs2.decryptWithAd(ZEROLEN, ciphertext, dst)\n };\n}\nexport async function performHandshakeResponder(init, options) {\n const { log, connection, crypto, privateKey, prologue, s, remoteIdentityKey, extensions } = init;\n const payload = await createHandshakePayload(privateKey, s.publicKey, extensions);\n const xx = new XXHandshakeState({\n crypto,\n protocolName: 'Noise_XX_25519_ChaChaPoly_SHA256',\n initiator: false,\n prologue,\n s\n });\n logLocalStaticKeys(xx.s, log);\n log.trace('Stage 0 - Responder waiting to receive first message.');\n xx.readMessageA(await connection.read(options));\n log.trace('Stage 0 - Responder received first message.');\n logRemoteEphemeralKey(xx.re, log);\n log.trace('Stage 1 - Responder sending out first message with signed payload and static key.');\n await connection.write(xx.writeMessageB(payload), options);\n log.trace('Stage 1 - Responder sent the second handshake message with signed payload.');\n logLocalEphemeralKeys(xx.e, log);\n log.trace('Stage 2 - Responder waiting for third handshake message...');\n const plaintext = xx.readMessageC(await connection.read(options));\n log.trace('Stage 2 - Responder received the message, finished handshake.');\n const receivedPayload = await decodeHandshakePayload(plaintext, xx.rs, remoteIdentityKey);\n const [cs1, cs2] = xx.ss.split();\n logCipherState(cs1, cs2, log);\n return {\n payload: receivedPayload,\n encrypt: (plaintext) => cs2.encryptWithAd(ZEROLEN, plaintext),\n decrypt: (ciphertext, dst) => cs1.decryptWithAd(ZEROLEN, ciphertext, dst)\n };\n}\n//# sourceMappingURL=performHandshake.js.map","import { Uint8ArrayList } from 'uint8arraylist';\nimport { NOISE_MSG_MAX_LENGTH_BYTES, NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG } from './constants.js';\nimport { uint16BEEncode } from './encoder.js';\nconst CHACHA_TAG_LENGTH = 16;\n// Returns generator that encrypts payload from the user\nexport function encryptStream(handshake, metrics) {\n return async function* (source) {\n for await (const chunk of source) {\n for (let i = 0; i < chunk.length; i += NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG) {\n let end = i + NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG;\n if (end > chunk.length) {\n end = chunk.length;\n }\n let data;\n if (chunk instanceof Uint8Array) {\n data = handshake.encrypt(chunk.subarray(i, end));\n }\n else {\n data = handshake.encrypt(chunk.sublist(i, end));\n }\n metrics?.encryptedPackets.increment();\n yield new Uint8ArrayList(uint16BEEncode(data.byteLength), data);\n }\n }\n };\n}\n// Decrypt received payload to the user\nexport function decryptStream(handshake, metrics) {\n return async function* (source) {\n for await (const chunk of source) {\n for (let i = 0; i < chunk.length; i += NOISE_MSG_MAX_LENGTH_BYTES) {\n let end = i + NOISE_MSG_MAX_LENGTH_BYTES;\n if (end > chunk.length) {\n end = chunk.length;\n }\n if (end - CHACHA_TAG_LENGTH < i) {\n throw new Error('Invalid chunk');\n }\n const encrypted = chunk.sublist(i, end);\n // memory allocation is not cheap so reuse the encrypted Uint8Array\n // see https://github.com/ChainSafe/js-libp2p-noise/pull/242#issue-1422126164\n // this is ok because chacha20 reads bytes one by one and don't reread after that\n // it's also tested in https://github.com/ChainSafe/as-chacha20poly1305/pull/1/files#diff-25252846b58979dcaf4e41d47b3eadd7e4f335e7fb98da6c049b1f9cd011f381R48\n const dst = chunk.subarray(i, end - CHACHA_TAG_LENGTH);\n try {\n const plaintext = handshake.decrypt(encrypted, dst);\n metrics?.decryptedPackets.increment();\n yield plaintext;\n }\n catch (e) {\n metrics?.decryptErrors.increment();\n throw e;\n }\n }\n }\n };\n}\n//# sourceMappingURL=streaming.js.map","import { unmarshalPrivateKey } from '@libp2p/crypto/keys';\nimport { CodeError, serviceCapabilities, isPeerId } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { decode } from 'it-length-prefixed';\nimport { lpStream } from 'it-length-prefixed-stream';\nimport { duplexPair } from 'it-pair/duplex';\nimport { pipe } from 'it-pipe';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nimport { NOISE_MSG_MAX_LENGTH_BYTES } from './constants.js';\nimport { defaultCrypto } from './crypto/index.js';\nimport { wrapCrypto } from './crypto.js';\nimport { uint16BEDecode, uint16BEEncode } from './encoder.js';\nimport { registerMetrics } from './metrics.js';\nimport { performHandshakeInitiator, performHandshakeResponder } from './performHandshake.js';\nimport { decryptStream, encryptStream } from './streaming.js';\nexport class Noise {\n protocol = '/noise';\n crypto;\n prologue;\n staticKey;\n extensions;\n metrics;\n components;\n constructor(components, init = {}) {\n const { staticNoiseKey, extensions, crypto, prologueBytes } = init;\n const { metrics } = components;\n this.components = components;\n const _crypto = crypto ?? defaultCrypto;\n this.crypto = wrapCrypto(_crypto);\n this.extensions = extensions;\n this.metrics = metrics ? registerMetrics(metrics) : undefined;\n if (staticNoiseKey) {\n // accepts x25519 private key of length 32\n this.staticKey = _crypto.generateX25519KeyPairFromSeed(staticNoiseKey);\n }\n else {\n this.staticKey = _crypto.generateX25519KeyPair();\n }\n this.prologue = prologueBytes ?? uint8ArrayAlloc(0);\n }\n [Symbol.toStringTag] = '@chainsafe/libp2p-noise';\n [serviceCapabilities] = [\n '@libp2p/connection-encryption',\n '@chainsafe/libp2p-noise'\n ];\n async secureOutbound(...args) {\n const { localPeer, connection, remotePeer, signal } = this.parseArgs(args);\n const wrappedConnection = lpStream(connection, {\n lengthEncoder: uint16BEEncode,\n lengthDecoder: uint16BEDecode,\n maxDataLength: NOISE_MSG_MAX_LENGTH_BYTES\n });\n if (!localPeer.privateKey) {\n throw new CodeError('local peerId does not contain private key', 'ERR_NO_PRIVATE_KEY');\n }\n const privateKey = await unmarshalPrivateKey(localPeer.privateKey);\n const remoteIdentityKey = remotePeer?.publicKey;\n const handshake = await this.performHandshakeInitiator(wrappedConnection, privateKey, remoteIdentityKey, {\n signal\n });\n const conn = await this.createSecureConnection(wrappedConnection, handshake);\n connection.source = conn.source;\n connection.sink = conn.sink;\n return {\n conn: connection,\n remoteExtensions: handshake.payload.extensions,\n remotePeer: await peerIdFromKeys(handshake.payload.identityKey)\n };\n }\n async secureInbound(...args) {\n const { localPeer, connection, remotePeer, signal } = this.parseArgs(args);\n const wrappedConnection = lpStream(connection, {\n lengthEncoder: uint16BEEncode,\n lengthDecoder: uint16BEDecode,\n maxDataLength: NOISE_MSG_MAX_LENGTH_BYTES\n });\n if (!localPeer.privateKey) {\n throw new CodeError('local peerId does not contain private key', 'ERR_NO_PRIVATE_KEY');\n }\n const privateKey = await unmarshalPrivateKey(localPeer.privateKey);\n const remoteIdentityKey = remotePeer?.publicKey;\n const handshake = await this.performHandshakeResponder(wrappedConnection, privateKey, remoteIdentityKey, {\n signal\n });\n const conn = await this.createSecureConnection(wrappedConnection, handshake);\n connection.source = conn.source;\n connection.sink = conn.sink;\n return {\n conn: connection,\n remoteExtensions: handshake.payload.extensions,\n remotePeer: await peerIdFromKeys(handshake.payload.identityKey)\n };\n }\n /**\n * Perform XX handshake as initiator.\n */\n async performHandshakeInitiator(connection, \n // TODO: pass private key in noise constructor via Components\n privateKey, remoteIdentityKey, options) {\n let result;\n try {\n result = await performHandshakeInitiator({\n connection,\n privateKey,\n remoteIdentityKey,\n log: this.components.logger.forComponent('libp2p:noise:xxhandshake'),\n crypto: this.crypto,\n prologue: this.prologue,\n s: this.staticKey,\n extensions: this.extensions\n }, options);\n this.metrics?.xxHandshakeSuccesses.increment();\n }\n catch (e) {\n this.metrics?.xxHandshakeErrors.increment();\n throw e;\n }\n return result;\n }\n /**\n * Perform XX handshake as responder.\n */\n async performHandshakeResponder(connection, \n // TODO: pass private key in noise constructor via Components\n privateKey, remoteIdentityKey, options) {\n let result;\n try {\n result = await performHandshakeResponder({\n connection,\n privateKey,\n remoteIdentityKey,\n log: this.components.logger.forComponent('libp2p:noise:xxhandshake'),\n crypto: this.crypto,\n prologue: this.prologue,\n s: this.staticKey,\n extensions: this.extensions\n }, options);\n this.metrics?.xxHandshakeSuccesses.increment();\n }\n catch (e) {\n this.metrics?.xxHandshakeErrors.increment();\n throw e;\n }\n return result;\n }\n async createSecureConnection(connection, handshake) {\n // Create encryption box/unbox wrapper\n const [secure, user] = duplexPair();\n const network = connection.unwrap();\n await pipe(secure, // write to wrapper\n encryptStream(handshake, this.metrics), // encrypt data + prefix with message length\n network, // send to the remote peer\n (source) => decode(source, { lengthDecoder: uint16BEDecode }), // read message length prefix\n decryptStream(handshake, this.metrics), // decrypt the incoming data\n secure // pipe to the wrapper\n );\n return user;\n }\n /**\n * Detect call signature in `libp2p@1.x.x` or `libp2p@2.x.x` style.\n *\n * TODO: remove this after `libp2p@2.x.x` is released and only support the\n * newer style\n */\n parseArgs(args) {\n // if the first argument is a peer id, we're using the libp2p@1.x.x style\n if (isPeerId(args[0])) {\n return {\n localPeer: args[0],\n connection: args[1],\n remotePeer: args[2]\n };\n }\n else {\n // handle upcoming changes in libp2p@2.x.x where the first argument is the\n // connection and the second is optionally the remote peer\n // @see https://github.com/libp2p/js-libp2p/pull/2304\n return {\n localPeer: this.components.peerId,\n connection: args[0],\n remotePeer: args[1]?.remotePeer,\n signal: args[1]?.signal\n };\n }\n }\n}\n//# sourceMappingURL=noise.js.map","import { Noise } from './noise.js';\nexport { pureJsCrypto } from './crypto/js.js';\nexport function noise(init = {}) {\n return (components) => new Noise(components, init);\n}\n//# sourceMappingURL=index.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});\n//# sourceMappingURL=base10.js.map","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});\n//# sourceMappingURL=base16.js.map","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});\n//# sourceMappingURL=base2.js.map","import { from } from './base.js';\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂');\nconst alphabetBytesToChars = (alphabet.reduce((p, c, i) => { p[i] = c; return p; }, ([])));\nconst alphabetCharsToBytes = (alphabet.reduce((p, c, i) => { p[c.codePointAt(0)] = i; return p; }, ([])));\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${char}`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n});\n//# sourceMappingURL=base256emoji.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base36.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});\n//# sourceMappingURL=base8.js.map","import { fromString, toString } from '../bytes.js';\nimport { from } from './base.js';\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n});\n//# sourceMappingURL=identity.js.map","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 0x0200;\nexport function encode(node) {\n return textEncoder.encode(JSON.stringify(node));\n}\nexport function decode(data) {\n return JSON.parse(textDecoder.decode(data));\n}\n//# sourceMappingURL=json.js.map","import * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base2 from './bases/base2.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base8 from './bases/base8.js';\nimport * as identityBase from './bases/identity.js';\nimport * as json from './codecs/json.js';\nimport * as raw from './codecs/raw.js';\nimport * as identity from './hashes/identity.js';\nimport * as sha2 from './hashes/sha2.js';\nimport { CID, hasher, digest, varint, bytes } from './index.js';\nexport const bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji };\nexport const hashes = { ...sha2, ...identity };\nexport const codecs = { raw, json };\nexport { CID, hasher, digest, varint, bytes };\n//# sourceMappingURL=basics.js.map","import {} from '@multiformats/multiaddr';\nimport { bases, digest } from 'multiformats/basics';\nimport { inappropriateMultiaddr, invalidArgument, invalidFingerprint, unsupportedHashAlgorithmCode } from '../error.js';\nimport { MAX_MESSAGE_SIZE } from '../stream.js';\nimport { CERTHASH_CODE } from './transport.js';\n/**\n * Get base2 | identity decoders\n */\n// @ts-expect-error - Not easy to combine these types.\nexport const mbdecoder = Object.values(bases).map(b => b.decoder).reduce((d, b) => d.or(b));\nexport function getLocalFingerprint(pc, options) {\n // try to fetch fingerprint from local certificate\n const localCert = pc.getConfiguration().certificates?.at(0);\n if (localCert?.getFingerprints == null) {\n options.log.trace('fetching fingerprint from local SDP');\n const localDescription = pc.localDescription;\n if (localDescription == null) {\n return undefined;\n }\n return getFingerprintFromSdp(localDescription.sdp);\n }\n options.log.trace('fetching fingerprint from local certificate');\n if (localCert.getFingerprints().length === 0) {\n return undefined;\n }\n const fingerprint = localCert.getFingerprints()[0].value;\n if (fingerprint == null) {\n throw invalidFingerprint('', 'no fingerprint on local certificate');\n }\n return fingerprint;\n}\nconst fingerprintRegex = /^a=fingerprint:(?:\\w+-[0-9]+)\\s(?(:?[0-9a-fA-F]{2})+)$/m;\nexport function getFingerprintFromSdp(sdp) {\n const searchResult = sdp.match(fingerprintRegex);\n return searchResult?.groups?.fingerprint;\n}\n/**\n * Get base2 | identity decoders\n */\nfunction ipv(ma) {\n for (const proto of ma.protoNames()) {\n if (proto.startsWith('ip')) {\n return proto.toUpperCase();\n }\n }\n return 'IP6';\n}\n// Extract the certhash from a multiaddr\nexport function certhash(ma) {\n const tups = ma.stringTuples();\n const certhash = tups.filter((tup) => tup[0] === CERTHASH_CODE).map((tup) => tup[1])[0];\n if (certhash === undefined || certhash === '') {\n throw inappropriateMultiaddr(`Couldn't find a certhash component of multiaddr: ${ma.toString()}`);\n }\n return certhash;\n}\n/**\n * Convert a certhash into a multihash\n */\nexport function decodeCerthash(certhash) {\n return digest.decode(mbdecoder.decode(certhash));\n}\n/**\n * Extract the fingerprint from a multiaddr\n */\nexport function ma2Fingerprint(ma) {\n const mhdecoded = decodeCerthash(certhash(ma));\n const prefix = toSupportedHashFunction(mhdecoded.code);\n const fingerprint = mhdecoded.digest.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n const sdp = fingerprint.match(/.{1,2}/g);\n if (sdp == null) {\n throw invalidFingerprint(fingerprint, ma.toString());\n }\n return [`${prefix} ${sdp.join(':').toUpperCase()}`, fingerprint];\n}\n/**\n * Normalize the hash name from a given multihash has name\n */\nexport function toSupportedHashFunction(code) {\n switch (code) {\n case 0x11:\n return 'SHA-1';\n case 0x12:\n return 'SHA-256';\n case 0x13:\n return 'SHA-512';\n default:\n throw unsupportedHashAlgorithmCode(code);\n }\n}\n/**\n * Convert a multiaddr into a SDP\n */\nfunction ma2sdp(ma, ufrag) {\n const { host, port } = ma.toOptions();\n const ipVersion = ipv(ma);\n const [CERTFP] = ma2Fingerprint(ma);\n return `v=0\no=- 0 0 IN ${ipVersion} ${host}\ns=-\nc=IN ${ipVersion} ${host}\nt=0 0\na=ice-lite\nm=application ${port} UDP/DTLS/SCTP webrtc-datachannel\na=mid:0\na=setup:passive\na=ice-ufrag:${ufrag}\na=ice-pwd:${ufrag}\na=fingerprint:${CERTFP}\na=sctp-port:5000\na=max-message-size:${MAX_MESSAGE_SIZE}\na=candidate:1467250027 1 UDP 1467250027 ${host} ${port} typ host\\r\\n`;\n}\n/**\n * Create an answer SDP from a multiaddr\n */\nexport function fromMultiAddr(ma, ufrag) {\n return {\n type: 'answer',\n sdp: ma2sdp(ma, ufrag)\n };\n}\n/**\n * Replace (munge) the ufrag and password values in a SDP\n */\nexport function munge(desc, ufrag) {\n if (desc.sdp === undefined) {\n throw invalidArgument(\"Can't munge a missing SDP\");\n }\n desc.sdp = desc.sdp\n .replace(/\\na=ice-ufrag:[^\\n]*\\n/, '\\na=ice-ufrag:' + ufrag + '\\n')\n .replace(/\\na=ice-pwd:[^\\n]*\\n/, '\\na=ice-pwd:' + ufrag + '\\n');\n return desc;\n}\n//# sourceMappingURL=sdp.js.map","const charset = Array.from('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/');\nexport const genUfrag = (len) => [...Array(len)].map(() => charset.at(Math.floor(Math.random() * charset.length))).join('');\n//# sourceMappingURL=util.js.map","import { noise } from '@chainsafe/libp2p-noise';\nimport { transportSymbol, serviceCapabilities } from '@libp2p/interface';\nimport * as p from '@libp2p/peer-id';\nimport { protocols } from '@multiformats/multiaddr';\nimport { WebRTCDirect } from '@multiformats/multiaddr-matcher';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { concat } from 'uint8arrays/concat';\nimport { fromString as uint8arrayFromString } from 'uint8arrays/from-string';\nimport { dataChannelError, inappropriateMultiaddr, unimplemented, invalidArgument } from '../error.js';\nimport { WebRTCMultiaddrConnection } from '../maconn.js';\nimport { DataChannelMuxerFactory } from '../muxer.js';\nimport { createStream } from '../stream.js';\nimport { getRtcConfiguration, isFirefox } from '../util.js';\nimport { RTCPeerConnection } from '../webrtc/index.js';\nimport * as sdp from './sdp.js';\nimport { genUfrag } from './util.js';\n/**\n * The time to wait, in milliseconds, for the data channel handshake to complete\n */\nconst HANDSHAKE_TIMEOUT_MS = 10_000;\n/**\n * Created by converting the hexadecimal protocol code to an integer.\n *\n * {@link https://github.com/multiformats/multiaddr/blob/master/protocols.csv}\n */\nexport const WEBRTC_CODE = protocols('webrtc-direct').code;\n/**\n * Created by converting the hexadecimal protocol code to an integer.\n *\n * {@link https://github.com/multiformats/multiaddr/blob/master/protocols.csv}\n */\nexport const CERTHASH_CODE = protocols('certhash').code;\nexport class WebRTCDirectTransport {\n log;\n metrics;\n components;\n init;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('libp2p:webrtc-direct');\n this.components = components;\n this.init = init;\n if (components.metrics != null) {\n this.metrics = {\n dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc-direct_dialer_events_total', {\n label: 'event',\n help: 'Total count of WebRTC-direct dial events by type'\n })\n };\n }\n }\n [transportSymbol] = true;\n [Symbol.toStringTag] = '@libp2p/webrtc-direct';\n [serviceCapabilities] = [\n '@libp2p/transport'\n ];\n /**\n * Dial a given multiaddr\n */\n async dial(ma, options) {\n const rawConn = await this._connect(ma, options);\n this.log('dialing address: %a', ma);\n return rawConn;\n }\n /**\n * Create transport listeners no supported by browsers\n */\n createListener(options) {\n throw unimplemented('WebRTCTransport.createListener');\n }\n /**\n * Filter check for all Multiaddrs that this transport can listen on\n */\n listenFilter(multiaddrs) {\n return multiaddrs.filter(WebRTCDirect.exactMatch);\n }\n /**\n * Filter check for all Multiaddrs that this transport can dial\n */\n dialFilter(multiaddrs) {\n return this.listenFilter(multiaddrs);\n }\n /**\n * Connect to a peer using a multiaddr\n */\n async _connect(ma, options) {\n const controller = new AbortController();\n const signal = controller.signal;\n const remotePeerString = ma.getPeerId();\n if (remotePeerString === null) {\n throw inappropriateMultiaddr(\"we need to have the remote's PeerId\");\n }\n const theirPeerId = p.peerIdFromString(remotePeerString);\n const remoteCerthash = sdp.decodeCerthash(sdp.certhash(ma));\n // ECDSA is preferred over RSA here. From our testing we find that P-256 elliptic\n // curve is supported by Pion, webrtc-rs, as well as Chromium (P-228 and P-384\n // was not supported in Chromium). We use the same hash function as found in the\n // multiaddr if it is supported.\n const certificate = await RTCPeerConnection.generateCertificate({\n name: 'ECDSA',\n namedCurve: 'P-256',\n hash: sdp.toSupportedHashFunction(remoteCerthash.code)\n });\n const peerConnection = new RTCPeerConnection({\n ...(await getRtcConfiguration(this.init.rtcConfiguration)),\n certificates: [certificate]\n });\n try {\n // create data channel for running the noise handshake. Once the data channel is opened,\n // the remote will initiate the noise handshake. This is used to confirm the identity of\n // the peer.\n const dataChannelOpenPromise = new Promise((resolve, reject) => {\n const handshakeDataChannel = peerConnection.createDataChannel('', { negotiated: true, id: 0 });\n const handshakeTimeout = setTimeout(() => {\n const error = `Data channel was never opened: state: ${handshakeDataChannel.readyState}`;\n this.log.error(error);\n this.metrics?.dialerEvents.increment({ open_error: true });\n reject(dataChannelError('data', error));\n }, HANDSHAKE_TIMEOUT_MS);\n handshakeDataChannel.onopen = (_) => {\n clearTimeout(handshakeTimeout);\n resolve(handshakeDataChannel);\n };\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/error_event\n handshakeDataChannel.onerror = (event) => {\n clearTimeout(handshakeTimeout);\n const errorTarget = event.target?.toString() ?? 'not specified';\n const error = `Error opening a data channel for handshaking: ${errorTarget}`;\n this.log.error(error);\n // NOTE: We use unknown error here but this could potentially be considered a reset by some standards.\n this.metrics?.dialerEvents.increment({ unknown_error: true });\n reject(dataChannelError('data', error));\n };\n });\n const ufrag = 'libp2p+webrtc+v1/' + genUfrag(32);\n // Create offer and munge sdp with ufrag == pwd. This allows the remote to\n // respond to STUN messages without performing an actual SDP exchange.\n // This is because it can infer the passwd field by reading the USERNAME\n // attribute of the STUN message.\n const offerSdp = await peerConnection.createOffer();\n const mungedOfferSdp = sdp.munge(offerSdp, ufrag);\n await peerConnection.setLocalDescription(mungedOfferSdp);\n // construct answer sdp from multiaddr and ufrag\n const answerSdp = sdp.fromMultiAddr(ma, ufrag);\n await peerConnection.setRemoteDescription(answerSdp);\n // wait for peerconnection.onopen to fire, or for the datachannel to open\n const handshakeDataChannel = await dataChannelOpenPromise;\n const myPeerId = this.components.peerId;\n // Do noise handshake.\n // Set the Noise Prologue to libp2p-webrtc-noise: before starting the actual Noise handshake.\n // is the concatenation of the of the two TLS fingerprints of A and B in their multihash byte representation, sorted in ascending order.\n const fingerprintsPrologue = this.generateNoisePrologue(peerConnection, remoteCerthash.code, ma);\n // Since we use the default crypto interface and do not use a static key or early data,\n // we pass in undefined for these parameters.\n const connectionEncrypter = noise({ prologueBytes: fingerprintsPrologue })(this.components);\n const wrappedChannel = createStream({\n channel: handshakeDataChannel,\n direction: 'inbound',\n logger: this.components.logger,\n ...(this.init.dataChannel ?? {})\n });\n const wrappedDuplex = {\n ...wrappedChannel,\n sink: wrappedChannel.sink.bind(wrappedChannel),\n source: (async function* () {\n for await (const list of wrappedChannel.source) {\n for (const buf of list) {\n yield buf;\n }\n }\n }())\n };\n // Creating the connection before completion of the noise\n // handshake ensures that the stream opening callback is set up\n const maConn = new WebRTCMultiaddrConnection(this.components, {\n peerConnection,\n remoteAddr: ma,\n timeline: {\n open: Date.now()\n },\n metrics: this.metrics?.dialerEvents\n });\n const eventListeningName = isFirefox ? 'iceconnectionstatechange' : 'connectionstatechange';\n peerConnection.addEventListener(eventListeningName, () => {\n switch (peerConnection.connectionState) {\n case 'failed':\n case 'disconnected':\n case 'closed':\n maConn.close().catch((err) => {\n this.log.error('error closing connection', err);\n }).finally(() => {\n // Remove the event listener once the connection is closed\n controller.abort();\n });\n break;\n default:\n break;\n }\n }, { signal });\n // Track opened peer connection\n this.metrics?.dialerEvents.increment({ peer_connection: true });\n const muxerFactory = new DataChannelMuxerFactory(this.components, {\n peerConnection,\n metrics: this.metrics?.dialerEvents,\n dataChannelOptions: this.init.dataChannel\n });\n // For outbound connections, the remote is expected to start the noise handshake.\n // Therefore, we need to secure an inbound noise connection from the remote.\n await connectionEncrypter.secureInbound(myPeerId, wrappedDuplex, theirPeerId);\n return await options.upgrader.upgradeOutbound(maConn, { skipProtection: true, skipEncryption: true, muxerFactory });\n }\n catch (err) {\n peerConnection.close();\n throw err;\n }\n }\n /**\n * Generate a noise prologue from the peer connection's certificate.\n * noise prologue = bytes('libp2p-webrtc-noise:') + noise-responder fingerprint + noise-initiator fingerprint\n */\n generateNoisePrologue(pc, hashCode, ma) {\n if (pc.getConfiguration().certificates?.length === 0) {\n throw invalidArgument('no local certificate');\n }\n const localFingerprint = sdp.getLocalFingerprint(pc, {\n log: this.log\n });\n if (localFingerprint == null) {\n throw invalidArgument('no local fingerprint found');\n }\n const localFpString = localFingerprint.trim().toLowerCase().replaceAll(':', '');\n const localFpArray = uint8arrayFromString(localFpString, 'hex');\n const local = Digest.create(hashCode, localFpArray);\n const remote = sdp.mbdecoder.decode(sdp.certhash(ma));\n const prefix = uint8arrayFromString('libp2p-webrtc-noise:');\n return concat([prefix, local.bytes, remote]);\n }\n}\n//# sourceMappingURL=transport.js.map","/**\n * @packageDocumentation\n *\n * A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebRTC datachannels](https://webrtc.org/).\n *\n * [WebRTC](https://www.w3.org/TR/webrtc/) is a specification that allows real-time communication between nodes - it's commonly used in browser video conferencing applications but it also provides a reliable data transport mechanism called [data channels](https://www.w3.org/TR/webrtc/#peer-to-peer-data-api) which libp2p uses to facilitate [protocol streams](https://docs.libp2p.io/concepts/multiplex/overview/) between peers.\n *\n * There are two transports exposed by this module, [webRTC](https://github.com/libp2p/specs/blob/master/webrtc/webrtc.md) and [webRTCDirect](https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md).\n *\n * ## WebRTC vs WebRTC Direct\n *\n * The connection establishment phase of WebRTC involves a handshake using [SDP](https://en.wikipedia.org/wiki/Session_Description_Protocol) during which two peers will exchange information such as open ports, network addresses and required capabilities.\n *\n * A third party is usually necessary to carry out this handshake, forwarding messages between the two peers until they can make a direct connection between themselves.\n *\n * The WebRTC transport uses libp2p [Circuit Relay](https://docs.libp2p.io/concepts/nat/circuit-relay/)s to forward SDP messages. Once a direct connection is formed the relay plays no further part in the exchange.\n *\n * WebRTC Direct uses a technique known as [SDP munging](https://webrtchacks.com/not-a-guide-to-sdp-munging/) to skip the handshake step, instead encoding enough information in the connection request that the responder can derive what would have been in the handshake messages and so requires no third parties to establish a connection.\n *\n * A WebRTC Direct multiaddr also includes a certhash of the target peer - this is used to allow opening a connection to the remote, which would otherwise be denied due to use of a self-signed certificate.\n *\n * In both cases, once the connection is established a [Noise handshake](https://noiseprotocol.org/noise.html) is carried out to ensure that the remote peer has the private key that corresponds to the public key that makes up their PeerId, giving you both encryption and authentication.\n *\n * ## Support\n *\n * WebRTC is supported in both Node.js and browsers.\n *\n * At the time of writing, WebRTC Direct is dial-only in browsers and not supported in Node.js at all.\n *\n * Support in Node.js is possible but PRs will need to be opened to [libdatachannel](https://github.com/paullouisageneau/libdatachannel) and the appropriate APIs exposed in [node-datachannel](https://github.com/murat-dogan/node-datachannel).\n *\n * WebRTC Direct support is available in rust-libp2p and arriving soon in go-libp2p.\n *\n * See the WebRTC section of https://connectivity.libp2p.io for more information.\n *\n * @example WebRTC\n *\n * WebRTC requires use of a relay to connect two nodes. The listener first discovers a relay server and makes a reservation, then the dialer can connect via the relayed address.\n *\n * ```TypeScript\n * import { noise } from '@chainsafe/libp2p-noise'\n * import { yamux } from '@chainsafe/libp2p-yamux'\n * import { echo } from '@libp2p/echo'\n * import { circuitRelayTransport, circuitRelayServer } from '@libp2p/circuit-relay-v2'\n * import { identify } from '@libp2p/identify'\n * import { webRTC } from '@libp2p/webrtc'\n * import { webSockets } from '@libp2p/websockets'\n * import * as filters from '@libp2p/websockets/filters'\n * import { WebRTC } from '@multiformats/multiaddr-matcher'\n * import delay from 'delay'\n * import { pipe } from 'it-pipe'\n * import { createLibp2p } from 'libp2p'\n * import type { Multiaddr } from '@multiformats/multiaddr'\n *\n * // the relay server listens on a transport dialable by the listener and the\n * // dialer, and has a relay service configured\n * const relay = await createLibp2p({\n * addresses: {\n * listen: ['/ip4/127.0.0.1/tcp/0/ws']\n * },\n * transports: [\n * webSockets({filter: filters.all})\n * ],\n * connectionEncryption: [noise()],\n * streamMuxers: [yamux()],\n * services: {\n * identify: identify(),\n * relay: circuitRelayServer()\n * }\n * })\n *\n * // the listener has a WebSocket transport to dial the relay, a Circuit Relay\n * // transport to make a reservation, and a WebRTC transport to accept incoming\n * // WebRTC connections\n * const listener = await createLibp2p({\n * addresses: {\n * listen: ['/webrtc']\n * },\n * transports: [\n * webSockets({filter: filters.all}),\n * webRTC(),\n * circuitRelayTransport({\n * discoverRelays: 1\n * })\n * ],\n * connectionEncryption: [noise()],\n * streamMuxers: [yamux()],\n * services: {\n * identify: identify(),\n * echo: echo()\n * }\n * })\n *\n * // the listener dials the relay (or discovers a public relay via some other\n * // method)\n * await listener.dial(relay.getMultiaddrs(), {\n * signal: AbortSignal.timeout(5000)\n * })\n *\n * let webRTCMultiaddr: Multiaddr | undefined\n *\n * // wait for the listener to make a reservation on the relay\n * while (true) {\n * webRTCMultiaddr = listener.getMultiaddrs().find(ma => WebRTC.matches(ma))\n *\n * if (webRTCMultiaddr != null) {\n * break\n * }\n *\n * // try again later\n * await delay(1000)\n * }\n *\n * // the dialer has Circuit Relay, WebSocket and WebRTC transports to dial\n * // the listener via the relay, complete the SDP handshake and establish a\n * // direct WebRTC connection\n * const dialer = await createLibp2p({\n * transports: [\n * webSockets({filter: filters.all}),\n * webRTC(),\n * circuitRelayTransport()\n * ],\n * connectionEncryption: [noise()],\n * streamMuxers: [yamux()],\n * services: {\n * identify: identify(),\n * echo: echo()\n * }\n * })\n *\n * // dial the listener and open an echo protocol stream\n * const stream = await dialer.dialProtocol(webRTCMultiaddr, dialer.services.echo.protocol, {\n * signal: AbortSignal.timeout(5000)\n * })\n *\n * // we can now stop the relay\n * await relay.stop()\n *\n * // send/receive some data from the remote peer via a direct connection\n * await pipe(\n * [new TextEncoder().encode('hello world')],\n * stream,\n * async source => {\n * for await (const buf of source) {\n * console.info(new TextDecoder().decode(buf.subarray()))\n * }\n * }\n * )\n * ```\n *\n * @example WebRTC Direct\n *\n * At the time of writing WebRTC Direct is dial-only in browsers and unsupported in Node.js.\n *\n * The only implementation that supports a WebRTC Direct listener is go-libp2p and it's not yet enabled by default.\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { noise } from '@chainsafe/libp2p-noise'\n * import { multiaddr } from '@multiformats/multiaddr'\n * import { pipe } from 'it-pipe'\n * import { fromString, toString } from 'uint8arrays'\n * import { webRTCDirect } from '@libp2p/webrtc'\n *\n * const node = await createLibp2p({\n * transports: [\n * webRTCDirect()\n * ],\n * connectionEncryption: [\n * noise()\n * ]\n * })\n *\n * await node.start()\n *\n * // this multiaddr corresponds to a remote node running a WebRTC Direct listener\n * const ma = multiaddr('/ip4/0.0.0.0/udp/56093/webrtc-direct/certhash/uEiByaEfNSLBexWBNFZy_QB1vAKEj7JAXDizRs4_SnTflsQ')\n * const stream = await node.dialProtocol(ma, '/my-protocol/1.0.0', {\n * signal: AbortSignal.timeout(10_000)\n * })\n *\n * await pipe(\n * [fromString(`Hello js-libp2p-webrtc\\n`)],\n * stream,\n * async function (source) {\n * for await (const buf of source) {\n * console.info(toString(buf.subarray()))\n * }\n * }\n * )\n * ```\n */\nimport { WebRTCTransport } from './private-to-private/transport.js';\nimport { WebRTCDirectTransport } from './private-to-public/transport.js';\n/**\n * @param {WebRTCTransportDirectInit} init - WebRTC direct transport configuration\n * @param init.dataChannel - DataChannel configurations\n * @param {number} init.dataChannel.maxMessageSize - Max message size that can be sent through the DataChannel. Larger messages will be chunked into smaller messages below this size (default 16kb)\n * @param {number} init.dataChannel.maxBufferedAmount - Max buffered amount a DataChannel can have (default 16mb)\n * @param {number} init.dataChannel.bufferedAmountLowEventTimeout - If max buffered amount is reached, this is the max time that is waited before the buffer is cleared (default 30 seconds)\n * @returns\n */\nfunction webRTCDirect(init) {\n return (components) => new WebRTCDirectTransport(components, init);\n}\n/**\n * @param {WebRTCTransportInit} init - WebRTC transport configuration\n * @param {RTCConfiguration} init.rtcConfiguration - RTCConfiguration\n * @param init.dataChannel - DataChannel configurations\n * @param {number} init.dataChannel.maxMessageSize - Max message size that can be sent through the DataChannel. Larger messages will be chunked into smaller messages below this size (default 16kb)\n * @param {number} init.dataChannel.maxBufferedAmount - Max buffered amount a DataChannel can have (default 16mb)\n * @param {number} init.dataChannel.bufferedAmountLowEventTimeout - If max buffered amount is reached, this is the max time that is waited before the buffer is cleared (default 30 seconds)\n * @returns\n */\nfunction webRTC(init) {\n return (components) => new WebRTCTransport(components, init);\n}\nexport { webRTC, webRTCDirect };\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * This module allows easy conversion of Multiaddrs to string URIs.\n *\n * @example Converting multiaddrs to string URIs\n *\n * ```js\n * import { multiaddrToUri } from '@multiformats/multiaddr-to-uri'\n *\n * console.log(multiaddrToUri('/dnsaddr/protocol.ai/https'))\n * // -> https://protocol.ai\n *\n * console.log(multiaddrToUri('/ip4/127.0.0.1/tcp/8080'))\n * // -> http://127.0.0.1:8080\n *\n * console.log(multiaddrToUri('/ip4/127.0.0.1/tcp/8080', { assumeHttp: false }))\n * // -> tcp://127.0.0.1:8080\n * ```\n *\n * Note:\n *\n * - When `/tcp` is the last (terminating) protocol HTTP is assumed by default (implicit `assumeHttp: true`)\n * - this means produced URIs will start with `http://` instead of `tcp://`\n * - passing `{ assumeHttp: false }` disables this behavior\n * - Might be lossy - e.g. a DNSv6 multiaddr\n * - Can throw if the passed multiaddr:\n * - is not a valid multiaddr\n * - is not supported as a URI e.g. circuit\n */\nimport { multiaddr, protocols } from '@multiformats/multiaddr';\nconst ASSUME_HTTP_CODES = [\n protocols('tcp').code,\n protocols('dns').code,\n protocols('dnsaddr').code,\n protocols('dns4').code,\n protocols('dns6').code\n];\nfunction extractSNI(ma) {\n let sniProtoCode;\n try {\n sniProtoCode = protocols('sni').code;\n }\n catch (e) {\n // No SNI protocol in multiaddr\n return null;\n }\n for (const [proto, value] of ma) {\n if (proto === sniProtoCode && value !== undefined) {\n return value;\n }\n }\n return null;\n}\nfunction hasTLS(ma) {\n return ma.some(([proto, _]) => proto === protocols('tls').code);\n}\nfunction interpretNext(headProtoCode, headProtoVal, restMa) {\n const interpreter = interpreters[protocols(headProtoCode).name];\n if (interpreter === undefined) {\n throw new Error(`Can't interpret protocol ${protocols(headProtoCode).name}`);\n }\n const restVal = interpreter(headProtoVal, restMa);\n if (headProtoCode === protocols('ip6').code) {\n return `[${restVal}]`;\n }\n return restVal;\n}\nconst interpreters = {\n ip4: (value, restMa) => value,\n ip6: (value, restMa) => {\n if (restMa.length === 0) {\n return value;\n }\n return `[${value}]`;\n },\n tcp: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `tcp://${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}:${value}`;\n },\n udp: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `udp://${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}:${value}`;\n },\n dnsaddr: (value, restMa) => value,\n dns4: (value, restMa) => value,\n dns6: (value, restMa) => value,\n dns: (value, restMa) => value,\n ipfs: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}/ipfs/${value}`;\n },\n p2p: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}/p2p/${value}`;\n },\n http: (value, restMa) => {\n const maHasTLS = hasTLS(restMa);\n const sni = extractSNI(restMa);\n if (maHasTLS && sni !== null) {\n return `https://${sni}`;\n }\n const protocol = maHasTLS ? 'https://' : 'http://';\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n let baseVal = interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n // We are reinterpreting the base as http, so we need to remove the tcp:// if it's there\n baseVal = baseVal.replace('tcp://', '');\n return `${protocol}${baseVal}`;\n },\n 'http-path': (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n const baseVal = interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n const decodedValue = decodeURIComponent(value);\n return `${baseVal}/${decodedValue}`;\n },\n tls: (value, restMa) => {\n // Noop, the parent context knows that it's tls. We don't need to do\n // anything here\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n },\n sni: (value, restMa) => {\n // Noop, the parent context uses the sni information, we don't need to do\n // anything here\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n },\n https: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n let baseVal = interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n // We are reinterpreting the base as http, so we need to remove the tcp:// if it's there\n baseVal = baseVal.replace('tcp://', '');\n return `https://${baseVal}`;\n },\n ws: (value, restMa) => {\n const maHasTLS = hasTLS(restMa);\n const sni = extractSNI(restMa);\n if (maHasTLS && sni !== null) {\n return `wss://${sni}`;\n }\n const protocol = maHasTLS ? 'wss://' : 'ws://';\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n let baseVal = interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n // We are reinterpreting the base, so we need to remove the tcp:// if it's there\n baseVal = baseVal.replace('tcp://', '');\n return `${protocol}${baseVal}`;\n },\n wss: (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n let baseVal = interpretNext(tailProto[0], tailProto[1] ?? '', restMa);\n // We are reinterpreting the base as http, so we need to remove the tcp:// if it's there\n baseVal = baseVal.replace('tcp://', '');\n return `wss://${baseVal}`;\n },\n 'p2p-websocket-star': (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}/p2p-websocket-star`;\n },\n 'p2p-webrtc-star': (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}/p2p-webrtc-star`;\n },\n 'p2p-webrtc-direct': (value, restMa) => {\n const tailProto = restMa.pop();\n if (tailProto === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n return `${interpretNext(tailProto[0], tailProto[1] ?? '', restMa)}/p2p-webrtc-direct`;\n }\n};\nexport function multiaddrToUri(input, opts) {\n const ma = multiaddr(input);\n const parts = ma.stringTuples();\n const head = parts.pop();\n if (head === undefined) {\n throw new Error('Unexpected end of multiaddr');\n }\n const protocol = protocols(head[0]);\n const interpreter = interpreters[protocol.name];\n if (interpreter == null) {\n throw new Error(`No interpreter found for ${protocol.name}`);\n }\n let uri = interpreter(head[1] ?? '', parts);\n if (opts?.assumeHttp !== false && ASSUME_HTTP_CODES.includes(head[0])) {\n // strip any declared protocol\n uri = uri.replace(/^.*:\\/\\//, '');\n if (head[1] === '443') {\n uri = `https://${uri}`;\n }\n else {\n uri = `http://${uri}`;\n }\n }\n if (uri.startsWith('http://') || uri.startsWith('https://')) {\n // this will strip default ports while keeping paths intact\n uri = new URL(uri).toString();\n // strip trailing slash, e.g. http://127.0.0.1/ -> http://127.0.0.1\n if (uri.endsWith('/')) {\n uri = uri.substring(0, uri.length - 1);\n }\n }\n return uri;\n}\n//# sourceMappingURL=index.js.map","export default async (socket) => {\n // if the socket is closing or closed, return end\n if (socket.readyState >= 2) {\n throw new Error('socket closed');\n }\n // if open, return\n if (socket.readyState === 1) {\n return;\n }\n await new Promise((resolve, reject) => {\n function cleanup() {\n socket.removeEventListener('open', handleOpen);\n socket.removeEventListener('error', handleErr);\n }\n function handleOpen() {\n cleanup();\n resolve();\n }\n function handleErr(event) {\n cleanup();\n reject(event.error ?? new Error(`connect ECONNREFUSED ${socket.url}`));\n }\n socket.addEventListener('open', handleOpen);\n socket.addEventListener('error', handleErr);\n });\n};\n//# sourceMappingURL=ready.js.map","import ready from './ready.js';\nexport default (socket, options) => {\n options = options ?? {};\n options.closeOnEnd = options.closeOnEnd !== false;\n const sink = async (source) => {\n for await (const data of source) {\n try {\n await ready(socket);\n }\n catch (err) {\n if (err.message === 'socket closed')\n break;\n throw err;\n }\n // the ready promise resolved without error but the socket was closing so\n // exit the loop and don't send data\n if (socket.readyState === socket.CLOSING || socket.readyState === socket.CLOSED) {\n break;\n }\n socket.send(data);\n }\n if (options.closeOnEnd != null && socket.readyState <= 1) {\n await new Promise((resolve, reject) => {\n socket.addEventListener('close', event => {\n if (event.wasClean || event.code === 1006) {\n resolve();\n }\n else {\n const err = Object.assign(new Error('ws error'), { event });\n reject(err);\n }\n });\n setTimeout(() => { socket.close(); });\n });\n }\n };\n return sink;\n};\n//# sourceMappingURL=sink.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass EventQueue {\n constructor() {\n this.pullQueue = [];\n this.pushQueue = [];\n this.eventHandlers = {};\n this.isPaused = false;\n this.isStopped = false;\n }\n push(value) {\n if (this.isStopped)\n return;\n const resolution = { value, done: false };\n if (this.pullQueue.length) {\n const placeholder = this.pullQueue.shift();\n if (placeholder)\n placeholder.resolve(resolution);\n }\n else {\n this.pushQueue.push(Promise.resolve(resolution));\n if (this.highWaterMark !== undefined &&\n this.pushQueue.length >= this.highWaterMark &&\n !this.isPaused) {\n this.isPaused = true;\n if (this.eventHandlers.highWater) {\n this.eventHandlers.highWater();\n }\n else if (console) {\n console.warn(`EventIterator queue reached ${this.pushQueue.length} items`);\n }\n }\n }\n }\n stop() {\n if (this.isStopped)\n return;\n this.isStopped = true;\n this.remove();\n for (const placeholder of this.pullQueue) {\n placeholder.resolve({ value: undefined, done: true });\n }\n this.pullQueue.length = 0;\n }\n fail(error) {\n if (this.isStopped)\n return;\n this.isStopped = true;\n this.remove();\n if (this.pullQueue.length) {\n for (const placeholder of this.pullQueue) {\n placeholder.reject(error);\n }\n this.pullQueue.length = 0;\n }\n else {\n const rejection = Promise.reject(error);\n /* Attach error handler to avoid leaking an unhandled promise rejection. */\n rejection.catch(() => { });\n this.pushQueue.push(rejection);\n }\n }\n remove() {\n Promise.resolve().then(() => {\n if (this.removeCallback)\n this.removeCallback();\n });\n }\n [Symbol.asyncIterator]() {\n return {\n next: (value) => {\n const result = this.pushQueue.shift();\n if (result) {\n if (this.lowWaterMark !== undefined &&\n this.pushQueue.length <= this.lowWaterMark &&\n this.isPaused) {\n this.isPaused = false;\n if (this.eventHandlers.lowWater) {\n this.eventHandlers.lowWater();\n }\n }\n return result;\n }\n else if (this.isStopped) {\n return Promise.resolve({ value: undefined, done: true });\n }\n else {\n return new Promise((resolve, reject) => {\n this.pullQueue.push({ resolve, reject });\n });\n }\n },\n return: () => {\n this.isStopped = true;\n this.pushQueue.length = 0;\n this.remove();\n return Promise.resolve({ value: undefined, done: true });\n },\n };\n }\n}\nclass EventIterator {\n constructor(listen, { highWaterMark = 100, lowWaterMark = 1 } = {}) {\n const queue = new EventQueue();\n queue.highWaterMark = highWaterMark;\n queue.lowWaterMark = lowWaterMark;\n queue.removeCallback =\n listen({\n push: value => queue.push(value),\n stop: () => queue.stop(),\n fail: error => queue.fail(error),\n on: (event, fn) => {\n queue.eventHandlers[event] = fn;\n },\n }) || (() => { });\n this[Symbol.asyncIterator] = () => queue[Symbol.asyncIterator]();\n Object.freeze(this);\n }\n}\nexports.EventIterator = EventIterator;\nexports.default = EventIterator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst event_iterator_1 = require(\"./event-iterator\");\nexports.EventIterator = event_iterator_1.EventIterator;\nfunction subscribe(event, options, evOptions) {\n return new event_iterator_1.EventIterator(({ push }) => {\n this.addEventListener(event, push, options);\n return () => this.removeEventListener(event, push, options);\n }, evOptions);\n}\nexports.subscribe = subscribe;\nexports.default = event_iterator_1.EventIterator;\n","import { EventIterator } from 'event-iterator';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\n// copied from github.com/feross/buffer\n// Some ArrayBuffers are not passing the instanceof check, so we need to do a bit more work :(\nfunction isArrayBuffer(obj) {\n return (obj instanceof ArrayBuffer) ||\n (obj?.constructor?.name === 'ArrayBuffer' && typeof obj?.byteLength === 'number');\n}\nexport default (socket) => {\n socket.binaryType = 'arraybuffer';\n const connected = async () => {\n await new Promise((resolve, reject) => {\n if (isConnected) {\n resolve();\n return;\n }\n if (connError != null) {\n reject(connError);\n return;\n }\n const cleanUp = (cont) => {\n socket.removeEventListener('open', onOpen);\n socket.removeEventListener('error', onError);\n cont();\n };\n const onOpen = () => { cleanUp(resolve); };\n const onError = (event) => {\n cleanUp(() => { reject(event.error ?? new Error(`connect ECONNREFUSED ${socket.url}`)); });\n };\n socket.addEventListener('open', onOpen);\n socket.addEventListener('error', onError);\n });\n };\n const source = (async function* () {\n const messages = new EventIterator(({ push, stop, fail }) => {\n const onMessage = (event) => {\n let data = null;\n if (typeof event.data === 'string') {\n data = uint8ArrayFromString(event.data);\n }\n if (isArrayBuffer(event.data)) {\n data = new Uint8Array(event.data);\n }\n if (event.data instanceof Uint8Array) {\n data = event.data;\n }\n if (data == null) {\n return;\n }\n push(data);\n };\n const onError = (event) => { fail(event.error ?? new Error('Socket error')); };\n socket.addEventListener('message', onMessage);\n socket.addEventListener('error', onError);\n socket.addEventListener('close', stop);\n return () => {\n socket.removeEventListener('message', onMessage);\n socket.removeEventListener('error', onError);\n socket.removeEventListener('close', stop);\n };\n }, { highWaterMark: Infinity });\n await connected();\n for await (const chunk of messages) {\n yield isArrayBuffer(chunk) ? new Uint8Array(chunk) : chunk;\n }\n }());\n let isConnected = socket.readyState === 1;\n let connError;\n socket.addEventListener('open', () => {\n isConnected = true;\n connError = null;\n });\n socket.addEventListener('close', () => {\n isConnected = false;\n connError = null;\n });\n socket.addEventListener('error', event => {\n if (!isConnected) {\n connError = event.error ?? new Error(`connect ECONNREFUSED ${socket.url}`);\n }\n });\n return Object.assign(source, {\n connected\n });\n};\n//# sourceMappingURL=source.js.map","import sink from './sink.js';\nimport source from './source.js';\nexport default (socket, options) => {\n options = options ?? {};\n const connectedSource = source(socket);\n let remoteAddress = options.remoteAddress;\n let remotePort = options.remotePort;\n if (socket.url != null) {\n // only client->server sockets have urls, server->client connections do not\n try {\n const url = new URL(socket.url);\n remoteAddress = url.hostname;\n remotePort = parseInt(url.port, 10);\n }\n catch { }\n }\n if (remoteAddress == null || remotePort == null) {\n throw new Error('Remote connection did not have address and/or port');\n }\n const duplex = {\n sink: sink(socket, options),\n source: connectedSource,\n connected: async () => { await connectedSource.connected(); },\n close: async () => {\n if (socket.readyState === socket.CONNECTING || socket.readyState === socket.OPEN) {\n await new Promise((resolve) => {\n socket.addEventListener('close', () => {\n resolve();\n });\n socket.close();\n });\n }\n },\n destroy: () => {\n if (socket.terminate != null) {\n socket.terminate();\n }\n else {\n socket.close();\n }\n },\n remoteAddress,\n remotePort,\n socket\n };\n return duplex;\n};\n//# sourceMappingURL=duplex.js.map","/* eslint-env browser */\nexport default WebSocket;\n//# sourceMappingURL=web-socket.browser.js.map","const map = { 'http:': 'ws:', 'https:': 'wss:' };\nconst defaultProtocol = 'ws:';\nexport default (url, location) => {\n if (url.startsWith('//')) {\n url = `${location?.protocol ?? defaultProtocol}${url}`;\n }\n if (url.startsWith('/') && location != null) {\n const proto = location.protocol ?? defaultProtocol;\n const host = location.host;\n const port = location.port != null && host?.endsWith(`:${location.port}`) !== true ? `:${location.port}` : '';\n url = `${proto}//${host}${port}${url}`;\n }\n const wsUrl = new URL(url);\n for (const [httpProto, wsProto] of Object.entries(map)) {\n if (wsUrl.protocol === httpProto) {\n wsUrl.protocol = wsProto;\n }\n }\n return wsUrl;\n};\n//# sourceMappingURL=ws-url.js.map","// load websocket library if we are not in the browser\nimport duplex from './duplex.js';\nimport WebSocket from './web-socket.js';\nimport wsurl from './ws-url.js';\nexport function connect(addr, opts) {\n const location = typeof window === 'undefined' ? undefined : window.location;\n opts = opts ?? {};\n const url = wsurl(addr, location);\n // it's necessary to stringify the URL object otherwise react-native crashes\n const socket = new WebSocket(url.toString(), opts.websocket);\n return duplex(socket, opts);\n}\n//# sourceMappingURL=client.js.map","// p2p multi-address code\nexport const CODE_P2P = 421;\nexport const CODE_CIRCUIT = 290;\nexport const CODE_TCP = 6;\nexport const CODE_WS = 477;\nexport const CODE_WSS = 478;\n// Time to wait for a connection to close gracefully before destroying it manually\nexport const CLOSE_TIMEOUT = 500;\n//# sourceMappingURL=constants.js.map","import * as mafmt from '@multiformats/mafmt';\nimport { CODE_CIRCUIT, CODE_P2P, CODE_TCP, CODE_WS, CODE_WSS } from './constants.js';\nexport function all(multiaddrs) {\n return multiaddrs.filter((ma) => {\n if (ma.protoCodes().includes(CODE_CIRCUIT)) {\n return false;\n }\n const testMa = ma.decapsulateCode(CODE_P2P);\n return mafmt.WebSockets.matches(testMa) ||\n mafmt.WebSocketsSecure.matches(testMa);\n });\n}\nexport function wss(multiaddrs) {\n return multiaddrs.filter((ma) => {\n if (ma.protoCodes().includes(CODE_CIRCUIT)) {\n return false;\n }\n const testMa = ma.decapsulateCode(CODE_P2P);\n return mafmt.WebSocketsSecure.matches(testMa);\n });\n}\nexport function dnsWss(multiaddrs) {\n return multiaddrs.filter((ma) => {\n if (ma.protoCodes().includes(CODE_CIRCUIT)) {\n return false;\n }\n const testMa = ma.decapsulateCode(CODE_P2P);\n return mafmt.WebSocketsSecure.matches(testMa) &&\n mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WSS));\n });\n}\nexport function dnsWsOrWss(multiaddrs) {\n return multiaddrs.filter((ma) => {\n if (ma.protoCodes().includes(CODE_CIRCUIT)) {\n return false;\n }\n const testMa = ma.decapsulateCode(CODE_P2P);\n // WS\n if (mafmt.WebSockets.matches(testMa)) {\n return mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WS));\n }\n // WSS\n return mafmt.WebSocketsSecure.matches(testMa) &&\n mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WSS));\n });\n}\n//# sourceMappingURL=filters.js.map","export function createListener() {\n throw new Error('WebSocket Servers can not be created in the browser!');\n}\n//# sourceMappingURL=listener.browser.js.map","import { CodeError } from '@libp2p/interface';\nimport { CLOSE_TIMEOUT } from './constants.js';\n// Convert a stream into a MultiaddrConnection\n// https://github.com/libp2p/interface-transport#multiaddrconnection\nexport function socketToMaConn(stream, remoteAddr, options) {\n const log = options.logger.forComponent('libp2p:websockets:maconn');\n const metrics = options.metrics;\n const metricPrefix = options.metricPrefix ?? '';\n const maConn = {\n log,\n async sink(source) {\n try {\n await stream.sink((async function* () {\n for await (const buf of source) {\n if (buf instanceof Uint8Array) {\n yield buf;\n }\n else {\n yield buf.subarray();\n }\n }\n })());\n }\n catch (err) {\n if (err.type !== 'aborted') {\n log.error(err);\n }\n }\n },\n source: stream.source,\n remoteAddr,\n timeline: { open: Date.now() },\n async close(options = {}) {\n const start = Date.now();\n if (options.signal == null) {\n const signal = AbortSignal.timeout(CLOSE_TIMEOUT);\n options = {\n ...options,\n signal\n };\n }\n const listener = () => {\n const { host, port } = maConn.remoteAddr.toOptions();\n log('timeout closing stream to %s:%s after %dms, destroying it manually', host, port, Date.now() - start);\n this.abort(new CodeError('Socket close timeout', 'ERR_SOCKET_CLOSE_TIMEOUT'));\n };\n options.signal?.addEventListener('abort', listener);\n try {\n await stream.close();\n }\n catch (err) {\n log.error('error closing WebSocket gracefully', err);\n this.abort(err);\n }\n finally {\n options.signal?.removeEventListener('abort', listener);\n maConn.timeline.close = Date.now();\n }\n },\n abort(err) {\n const { host, port } = maConn.remoteAddr.toOptions();\n log('timeout closing stream to %s:%s due to error', host, port, err);\n stream.destroy();\n maConn.timeline.close = Date.now();\n // ws WebSocket.terminate does not accept an Error arg to emit an 'error'\n // event on destroy like other node streams so we can't update a metric\n // with an event listener\n // https://github.com/websockets/ws/issues/1752#issuecomment-622380981\n metrics?.increment({ [`${metricPrefix}error`]: true });\n }\n };\n stream.socket.addEventListener('close', () => {\n metrics?.increment({ [`${metricPrefix}close`]: true });\n // In instances where `close` was not explicitly called,\n // such as an iterable stream ending, ensure we have set the close\n // timeline\n if (maConn.timeline.close == null) {\n maConn.timeline.close = Date.now();\n }\n }, { once: true });\n return maConn;\n}\n//# sourceMappingURL=socket-to-conn.js.map","/**\n * @packageDocumentation\n *\n * A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API).\n *\n * @example\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { webSockets } from '@libp2p/websockets'\n * import { multiaddr } from '@multiformats/multiaddr'\n *\n * const node = await createLibp2p({\n * transports: [\n * webSockets()\n * ]\n * //... other config\n * })\n * await node.start()\n *\n * const ma = multiaddr('/ip4/127.0.0.1/tcp/9090/ws')\n * await node.dial(ma)\n * ```\n *\n * ## Filters\n *\n * When run in a browser by default this module will only connect to secure web socket addresses.\n *\n * To change this you should pass a filter to the factory function.\n *\n * You can create your own address filters for this transports, or rely in the filters [provided](./src/filters.js).\n *\n * The available filters are:\n *\n * - `filters.all`\n * - Returns all TCP and DNS based addresses, both with `ws` or `wss`.\n * - `filters.dnsWss`\n * - Returns all DNS based addresses with `wss`.\n * - `filters.dnsWsOrWss`\n * - Returns all DNS based addresses, both with `ws` or `wss`.\n *\n * @example Allow dialing insecure WebSockets\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { webSockets } from '@libp2p/websockets'\n * import * as filters from '@libp2p/websockets/filters'\n *\n * const node = await createLibp2p({\n * transports: [\n * webSockets({\n * // connect to all sockets, even insecure ones\n * filter: filters.all\n * })\n * ]\n * })\n * ```\n */\nimport { CodeError, transportSymbol, serviceCapabilities } from '@libp2p/interface';\nimport { multiaddrToUri as toUri } from '@multiformats/multiaddr-to-uri';\nimport { connect } from 'it-ws/client';\nimport pDefer from 'p-defer';\nimport { CustomProgressEvent } from 'progress-events';\nimport { raceSignal } from 'race-signal';\nimport { isBrowser, isWebWorker } from 'wherearewe';\nimport * as filters from './filters.js';\nimport { createListener } from './listener.js';\nimport { socketToMaConn } from './socket-to-conn.js';\nclass WebSockets {\n log;\n init;\n logger;\n metrics;\n components;\n constructor(components, init) {\n this.log = components.logger.forComponent('libp2p:websockets');\n this.logger = components.logger;\n this.components = components;\n this.init = init;\n if (components.metrics != null) {\n this.metrics = {\n dialerEvents: components.metrics.registerCounterGroup('libp2p_websockets_dialer_events_total', {\n label: 'event',\n help: 'Total count of WebSockets dialer events by type'\n })\n };\n }\n }\n [transportSymbol] = true;\n [Symbol.toStringTag] = '@libp2p/websockets';\n [serviceCapabilities] = [\n '@libp2p/transport'\n ];\n async dial(ma, options) {\n this.log('dialing %s', ma);\n options = options ?? {};\n const socket = await this._connect(ma, options);\n const maConn = socketToMaConn(socket, ma, {\n logger: this.logger,\n metrics: this.metrics?.dialerEvents\n });\n this.log('new outbound connection %s', maConn.remoteAddr);\n const conn = await options.upgrader.upgradeOutbound(maConn, options);\n this.log('outbound connection %s upgraded', maConn.remoteAddr);\n return conn;\n }\n async _connect(ma, options) {\n options?.signal?.throwIfAborted();\n const cOpts = ma.toOptions();\n this.log('dialing %s:%s', cOpts.host, cOpts.port);\n const errorPromise = pDefer();\n const rawSocket = connect(toUri(ma), this.init);\n rawSocket.socket.addEventListener('error', () => {\n // the WebSocket.ErrorEvent type doesn't actually give us any useful\n // information about what happened\n // https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/error_event\n const err = new CodeError(`Could not connect to ${ma.toString()}`, 'ERR_CONNECTION_FAILED');\n this.log.error('connection error:', err);\n this.metrics?.dialerEvents.increment({ error: true });\n errorPromise.reject(err);\n });\n try {\n options.onProgress?.(new CustomProgressEvent('websockets:open-connection'));\n await raceSignal(Promise.race([rawSocket.connected(), errorPromise.promise]), options.signal);\n }\n catch (err) {\n if (options.signal?.aborted === true) {\n this.metrics?.dialerEvents.increment({ abort: true });\n }\n rawSocket.close()\n .catch(err => {\n this.log.error('error closing raw socket', err);\n });\n throw err;\n }\n this.log('connected %s', ma);\n this.metrics?.dialerEvents.increment({ connect: true });\n return rawSocket;\n }\n /**\n * Creates a Websockets listener. The provided `handler` function will be called\n * anytime a new incoming Connection has been successfully upgraded via\n * `upgrader.upgradeInbound`\n */\n createListener(options) {\n return createListener({\n logger: this.logger,\n metrics: this.components.metrics\n }, {\n ...this.init,\n ...options\n });\n }\n /**\n * Takes a list of `Multiaddr`s and returns only valid Websockets addresses.\n * By default, in a browser environment only DNS+WSS multiaddr is accepted,\n * while in a Node.js environment DNS+{WS, WSS} multiaddrs are accepted.\n */\n listenFilter(multiaddrs) {\n multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs];\n if (this.init?.filter != null) {\n return this.init?.filter(multiaddrs);\n }\n // Browser\n if (isBrowser || isWebWorker) {\n return filters.wss(multiaddrs);\n }\n return filters.all(multiaddrs);\n }\n /**\n * Filter check for all Multiaddrs that this transport can dial\n */\n dialFilter(multiaddrs) {\n return this.listenFilter(multiaddrs);\n }\n}\nexport function webSockets(init = {}) {\n return (components) => {\n return new WebSockets(components, init);\n };\n}\n//# sourceMappingURL=index.js.map","export default function createListener(options) {\n throw new Error('Not implemented');\n}\n//# sourceMappingURL=listener.browser.js.map","import { AbstractStream } from '@libp2p/utils/abstract-stream';\nimport { raceSignal } from 'race-signal';\nimport { Uint8ArrayList } from 'uint8arraylist';\nclass WebTransportStream extends AbstractStream {\n writer;\n reader;\n constructor(init) {\n super(init);\n this.writer = init.bidiStream.writable.getWriter();\n this.reader = init.bidiStream.readable.getReader();\n Promise.resolve()\n .then(async () => {\n while (true) {\n const result = await this.reader.read();\n if (result.done) {\n init.log('remote closed write');\n return;\n }\n if (result.value != null) {\n this.sourcePush(new Uint8ArrayList(result.value));\n }\n }\n })\n .catch(err => {\n init.log.error('error reading from stream', err);\n this.abort(err);\n })\n .finally(() => {\n this.remoteCloseWrite();\n });\n void this.writer.closed\n .then(() => {\n init.log('writer closed');\n })\n .catch((err) => {\n init.log('writer close promise rejected', err);\n })\n .finally(() => {\n this.remoteCloseRead();\n });\n }\n sendNewStream(options) {\n // this is a no-op\n }\n async sendData(buf, options) {\n for await (const chunk of buf) {\n this.log('sendData waiting for writer to be ready');\n await raceSignal(this.writer.ready, options?.signal);\n // the streams spec recommends not waiting for data to be sent\n // https://streams.spec.whatwg.org/#example-manual-write-dont-await\n this.writer.write(chunk)\n .catch(err => {\n this.log.error('error sending stream data', err);\n });\n }\n }\n async sendReset(options) {\n this.log('sendReset aborting writer');\n await raceSignal(this.writer.abort(), options?.signal);\n this.log('sendReset aborted writer');\n }\n async sendCloseWrite(options) {\n this.log('sendCloseWrite closing writer');\n await raceSignal(this.writer.close(), options?.signal);\n this.log('sendCloseWrite closed writer');\n }\n async sendCloseRead(options) {\n this.log('sendCloseRead cancelling reader');\n await raceSignal(this.reader.cancel(), options?.signal);\n this.log('sendCloseRead cancelled reader');\n }\n}\nexport async function webtransportBiDiStreamToStream(bidiStream, streamId, direction, activeStreams, onStreamEnd, logger) {\n const log = logger.forComponent(`libp2p:webtransport:stream:${direction}:${streamId}`);\n const stream = new WebTransportStream({\n bidiStream,\n id: streamId,\n direction,\n log,\n onEnd: () => {\n const index = activeStreams.findIndex(s => s === stream);\n if (index !== -1) {\n activeStreams.splice(index, 1);\n }\n onStreamEnd?.(stream);\n }\n });\n return stream;\n}\n//# sourceMappingURL=stream.js.map","// Duplex that does nothing. Needed to fulfill the interface\nexport function inertDuplex() {\n return {\n source: {\n [Symbol.asyncIterator]() {\n return {\n async next() {\n // This will never resolve\n return new Promise(() => { });\n }\n };\n }\n },\n sink: async (source) => {\n // This will never resolve\n return new Promise(() => { });\n }\n };\n}\n//# sourceMappingURL=inert-duplex.js.map","import { webtransportBiDiStreamToStream } from './stream.js';\nimport { inertDuplex } from './utils/inert-duplex.js';\nexport function webtransportMuxer(wt, reader, logger, config) {\n let streamIDCounter = 0;\n const log = logger.forComponent('libp2p:webtransport:muxer');\n return {\n protocol: 'webtransport',\n createStreamMuxer: (init) => {\n // !TODO handle abort signal when WebTransport supports this.\n if (typeof init === 'function') {\n // The api docs say that init may be a function\n init = { onIncomingStream: init };\n }\n const activeStreams = [];\n Promise.resolve()\n .then(async () => {\n //! TODO unclear how to add backpressure here?\n while (true) {\n const { done, value: wtStream } = await reader.read();\n if (done) {\n break;\n }\n if (activeStreams.length >= config.maxInboundStreams) {\n log(`too many inbound streams open - ${activeStreams.length}/${config.maxInboundStreams}, closing new incoming stream`);\n // We've reached our limit, close this stream.\n wtStream.writable.close().catch((err) => {\n log.error(`failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`);\n });\n wtStream.readable.cancel().catch((err) => {\n log.error(`failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`);\n });\n }\n else {\n const stream = await webtransportBiDiStreamToStream(wtStream, String(streamIDCounter++), 'inbound', activeStreams, init?.onStreamEnd, logger);\n activeStreams.push(stream);\n init?.onIncomingStream?.(stream);\n }\n }\n })\n .catch(err => {\n log.error('could not create a new stream', err);\n });\n const muxer = {\n protocol: 'webtransport',\n streams: activeStreams,\n newStream: async (name) => {\n log('new outgoing stream', name);\n const wtStream = await wt.createBidirectionalStream();\n const stream = await webtransportBiDiStreamToStream(wtStream, String(streamIDCounter++), init?.direction ?? 'outbound', activeStreams, init?.onStreamEnd, logger);\n activeStreams.push(stream);\n return stream;\n },\n /**\n * Close all tracked streams and stop the muxer\n */\n close: async () => {\n log('closing webtransport muxer gracefully');\n try {\n wt.close();\n }\n catch (err) {\n muxer.abort(err);\n }\n },\n /**\n * Abort all tracked streams and stop the muxer\n */\n abort: (err) => {\n log('closing webtransport muxer with err:', err);\n try {\n wt.close();\n }\n catch (err) {\n log.error('webtransport session threw error during close', err);\n }\n },\n // This stream muxer is webtransport native. Therefore it doesn't plug in with any other duplex.\n ...inertDuplex()\n };\n return muxer;\n }\n };\n}\n//# sourceMappingURL=muxer.js.map","import { equals as uint8ArrayEquals } from 'uint8arrays/equals';\n/**\n * Determines if `maybeSubset` is a subset of `set`. This means that all byte\n * arrays in `maybeSubset` are present in `set`.\n */\nexport function isSubset(set, maybeSubset) {\n const intersection = maybeSubset.filter(byteArray => {\n return Boolean(set.find((otherByteArray) => uint8ArrayEquals(byteArray, otherByteArray)));\n });\n return (intersection.length === maybeSubset.length);\n}\n//# sourceMappingURL=is-subset.js.map","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\n else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n }\n }\n}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\n // Parse the data:\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n let written = 0; // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`);\n }\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 0xff & (buffer >> bits);\n }\n }\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0; // Number of bits currently in the buffer\n let buffer = 0; // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i];\n bits += 8;\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function rfc4648({ name, prefix, bitsPerChar, alphabet }) {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n}\n//# sourceMappingURL=base.js.map","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});\n//# sourceMappingURL=base10.js.map","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});\n//# sourceMappingURL=base16.js.map","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});\n//# sourceMappingURL=base2.js.map","import { from } from './base.js';\nconst alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂');\nconst alphabetBytesToChars = (alphabet.reduce((p, c, i) => { p[i] = c; return p; }, ([])));\nconst alphabetCharsToBytes = (alphabet.reduce((p, c, i) => { p[c.codePointAt(0)] = i; return p; }, ([])));\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${char}`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '🚀',\n name: 'base256emoji',\n encode,\n decode\n});\n//# sourceMappingURL=base256emoji.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base36.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});\n//# sourceMappingURL=base64.js.map","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});\n//# sourceMappingURL=base8.js.map","import { fromString, toString } from '../bytes.js';\nimport { from } from './base.js';\nexport const identity = from({\n prefix: '\\x00',\n name: 'identity',\n encode: (buf) => toString(buf),\n decode: (str) => fromString(str)\n});\n//# sourceMappingURL=identity.js.map","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 0x0200;\nexport function encode(node) {\n return textEncoder.encode(JSON.stringify(node));\n}\nexport function decode(data) {\n return JSON.parse(textDecoder.decode(data));\n}\n//# sourceMappingURL=json.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n // @ts-ignore\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (/** @type {number} */ value) {\n return (value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10);\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode(multihash) {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\n */\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}\n//# sourceMappingURL=digest.js.map","import * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base2 from './bases/base2.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base8 from './bases/base8.js';\nimport * as identityBase from './bases/identity.js';\nimport * as json from './codecs/json.js';\nimport * as raw from './codecs/raw.js';\nimport * as identity from './hashes/identity.js';\nimport * as sha2 from './hashes/sha2.js';\nimport { CID, hasher, digest, varint, bytes } from './index.js';\nexport const bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji };\nexport const hashes = { ...sha2, ...identity };\nexport const codecs = { raw, json };\nexport { CID, hasher, digest, varint, bytes };\n//# sourceMappingURL=basics.js.map","import { CodeError } from '@libp2p/interface';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { protocols } from '@multiformats/multiaddr';\nimport { WebTransport } from '@multiformats/multiaddr-matcher';\nimport { bases, digest } from 'multiformats/basics';\n// @ts-expect-error - Not easy to combine these types.\nconst multibaseDecoder = Object.values(bases).map(b => b.decoder).reduce((d, b) => d.or(b));\nfunction decodeCerthashStr(s) {\n return digest.decode(multibaseDecoder.decode(s));\n}\nexport function parseMultiaddr(ma) {\n if (!WebTransport.matches(ma)) {\n throw new CodeError('Invalid multiaddr, was not a WebTransport address', 'ERR_INVALID_MULTIADDR');\n }\n const parts = ma.stringTuples();\n const certhashes = parts\n .filter(([name, _]) => name === protocols('certhash').code)\n .map(([_, value]) => decodeCerthashStr(value ?? ''));\n // only take the first peer id in the multiaddr as it may be a relay\n const remotePeer = parts\n .filter(([name, _]) => name === protocols('p2p').code)\n .map(([_, value]) => peerIdFromString(value ?? ''))[0];\n const opts = ma.toOptions();\n let host = opts.host;\n if (opts.family === 6 && host?.includes(':')) {\n /**\n * This resolves cases where `new WebTransport()` fails to construct because of an invalid URL being passed.\n *\n * `new URL('https://::1:4001/blah')` will throw a `TypeError: Failed to construct 'URL': Invalid URL`\n * `new URL('https://[::1]:4001/blah')` is valid and will not.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.2\n */\n host = `[${host}]`;\n }\n return {\n // All webtransport urls are https\n url: `https://${host}:${opts.port}`,\n certhashes,\n remotePeer\n };\n}\n//# sourceMappingURL=parse-multiaddr.js.map","// exporting property of globalThis allows us to fail gracefully in browsers\n// without WebTransport support\nexport default globalThis.WebTransport;\n//# sourceMappingURL=webtransport.browser.js.map","/**\n * @packageDocumentation\n *\n * A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebTransport](https://www.w3.org/TR/webtransport/).\n *\n * >\n * > ⚠️ **Note**\n * >\n * > This WebTransport implementation currently only allows dialing to other nodes. It does not yet allow listening for incoming dials. This feature requires QUIC support to land in Node JS first.\n * >\n * > QUIC support in Node JS is actively being worked on. You can keep an eye on the progress by watching the [related issues on the Node JS issue tracker](https://github.com/nodejs/node/labels/quic)\n * >\n *\n * @example\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { webTransport } from '@libp2p/webtransport'\n * import { noise } from '@chainsafe/libp2p-noise'\n *\n * const node = await createLibp2p({\n * transports: [\n * webTransport()\n * ],\n * connectionEncryption: [\n * noise()\n * ]\n * })\n * ```\n */\nimport { noise } from '@chainsafe/libp2p-noise';\nimport { AbortError, CodeError, serviceCapabilities, transportSymbol } from '@libp2p/interface';\nimport { WebTransport as WebTransportMatcher } from '@multiformats/multiaddr-matcher';\nimport { CustomProgressEvent } from 'progress-events';\nimport { raceSignal } from 'race-signal';\nimport createListener from './listener.js';\nimport { webtransportMuxer } from './muxer.js';\nimport { inertDuplex } from './utils/inert-duplex.js';\nimport { isSubset } from './utils/is-subset.js';\nimport { parseMultiaddr } from './utils/parse-multiaddr.js';\nimport WebTransport from './webtransport.js';\nclass WebTransportTransport {\n log;\n components;\n config;\n metrics;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('libp2p:webtransport');\n this.components = components;\n this.config = {\n ...init,\n maxInboundStreams: init.maxInboundStreams ?? 1000,\n certificates: init.certificates ?? []\n };\n if (components.metrics != null) {\n this.metrics = {\n dialerEvents: components.metrics.registerCounterGroup('libp2p_webtransport_dialer_events_total', {\n label: 'event',\n help: 'Total count of WebTransport dialer events by type'\n })\n };\n }\n }\n [Symbol.toStringTag] = '@libp2p/webtransport';\n [transportSymbol] = true;\n [serviceCapabilities] = [\n '@libp2p/transport'\n ];\n async dial(ma, options) {\n if (options?.signal?.aborted === true) {\n throw new AbortError();\n }\n this.log('dialing %s', ma);\n const localPeer = this.components.peerId;\n if (localPeer === undefined) {\n throw new CodeError('Need a local peerid', 'ERR_INVALID_PARAMETERS');\n }\n options = options ?? {};\n const { url, certhashes, remotePeer } = parseMultiaddr(ma);\n let abortListener;\n let maConn;\n let cleanUpWTSession = () => { };\n let closed = false;\n let ready = false;\n let authenticated = false;\n try {\n this.metrics?.dialerEvents.increment({ pending: true });\n const wt = new WebTransport(`${url}/.well-known/libp2p-webtransport?type=noise`, {\n serverCertificateHashes: certhashes.map(certhash => ({\n algorithm: 'sha-256',\n value: certhash.digest\n }))\n });\n cleanUpWTSession = (metric) => {\n if (closed) {\n // already closed session\n return;\n }\n try {\n this.metrics?.dialerEvents.increment({ [metric]: true });\n wt.close();\n }\n catch (err) {\n this.log.error('error closing wt session', err);\n }\n finally {\n // This is how we specify the connection is closed and shouldn't be used.\n if (maConn != null) {\n maConn.timeline.close = Date.now();\n }\n closed = true;\n }\n };\n // if the dial is aborted before we are ready, close the WebTransport session\n abortListener = () => {\n if (ready) {\n cleanUpWTSession('noise_timeout');\n }\n else {\n cleanUpWTSession('ready_timeout');\n }\n };\n options.signal?.addEventListener('abort', abortListener, {\n once: true\n });\n this.log('wait for session to be ready');\n options.onProgress?.(new CustomProgressEvent('webtransport:wait-for-session'));\n await Promise.race([\n wt.closed,\n wt.ready\n ]);\n this.log('session became ready');\n ready = true;\n this.metrics?.dialerEvents.increment({ ready: true });\n // this promise resolves/throws when the session is closed\n wt.closed.catch((err) => {\n this.log.error('error on remote wt session close', err);\n })\n .finally(() => {\n cleanUpWTSession('remote_close');\n });\n authenticated = await raceSignal(this.authenticateWebTransport({ wt, localPeer, remotePeer, certhashes, ...options }), options.signal);\n if (!authenticated) {\n throw new CodeError('Failed to authenticate webtransport', 'ERR_AUTHENTICATION_FAILED');\n }\n this.metrics?.dialerEvents.increment({ open: true });\n maConn = {\n close: async () => {\n this.log('closing webtransport');\n cleanUpWTSession('close');\n },\n abort: (err) => {\n this.log('aborting webtransport due to passed err', err);\n cleanUpWTSession('abort');\n },\n remoteAddr: ma,\n timeline: {\n open: Date.now()\n },\n log: this.components.logger.forComponent('libp2p:webtransport:maconn'),\n // This connection is never used directly since webtransport supports native streams.\n ...inertDuplex()\n };\n return await options.upgrader.upgradeOutbound(maConn, {\n skipEncryption: true,\n muxerFactory: webtransportMuxer(wt, wt.incomingBidirectionalStreams.getReader(), this.components.logger, this.config),\n skipProtection: true,\n onProgress: options.onProgress\n });\n }\n catch (err) {\n this.log.error('caught wt session err', err);\n if (authenticated) {\n cleanUpWTSession('upgrade_error');\n }\n else if (ready) {\n cleanUpWTSession('noise_error');\n }\n else {\n cleanUpWTSession('ready_error');\n }\n throw err;\n }\n finally {\n if (abortListener != null) {\n options.signal?.removeEventListener('abort', abortListener);\n }\n }\n }\n async authenticateWebTransport({ wt, localPeer, remotePeer, certhashes, onProgress, signal }) {\n signal?.throwIfAborted();\n onProgress?.(new CustomProgressEvent('webtransport:open-authentication-stream'));\n const stream = await wt.createBidirectionalStream();\n const writer = stream.writable.getWriter();\n const reader = stream.readable.getReader();\n const duplex = {\n source: (async function* () {\n while (true) {\n const val = await reader.read();\n if (val.value != null) {\n yield val.value;\n }\n if (val.done) {\n break;\n }\n }\n })(),\n sink: async (source) => {\n for await (const chunk of source) {\n await raceSignal(writer.ready, signal);\n const buf = chunk instanceof Uint8Array ? chunk : chunk.subarray();\n writer.write(buf).catch(err => {\n this.log.error('could not write chunk during authentication of WebTransport stream', err);\n });\n }\n }\n };\n const n = noise()(this.components);\n onProgress?.(new CustomProgressEvent('webtransport:secure-outbound-connection'));\n const { remoteExtensions } = await n.secureOutbound(localPeer, duplex, remotePeer);\n onProgress?.(new CustomProgressEvent('webtransport:close-authentication-stream'));\n // We're done with this authentication stream\n writer.close().catch((err) => {\n this.log.error(`Failed to close authentication stream writer: ${err.message}`);\n });\n reader.cancel().catch((err) => {\n this.log.error(`Failed to close authentication stream reader: ${err.message}`);\n });\n // Verify the certhashes we used when dialing are a subset of the certhashes relayed by the remote peer\n if (!isSubset(remoteExtensions?.webtransportCerthashes ?? [], certhashes.map(ch => ch.bytes))) {\n throw new Error(\"Our certhashes are not a subset of the remote's reported certhashes\");\n }\n return true;\n }\n createListener(options) {\n return createListener(this.components, {\n ...options,\n certificates: this.config.certificates,\n maxInboundStreams: this.config.maxInboundStreams\n });\n }\n /**\n * Filter check for all Multiaddrs that this transport can listen on\n */\n listenFilter() {\n return [];\n }\n /**\n * Filter check for all Multiaddrs that this transport can dial\n */\n dialFilter(multiaddrs) {\n // test for WebTransport support\n if (globalThis.WebTransport == null) {\n return [];\n }\n return multiaddrs.filter(ma => {\n if (!WebTransportMatcher.exactMatch(ma)) {\n return false;\n }\n const { url, certhashes } = parseMultiaddr(ma);\n return url != null && certhashes.length > 0;\n });\n }\n}\nexport function webTransport(init = {}) {\n return (components) => new WebTransportTransport(components, init);\n}\n//# sourceMappingURL=index.js.map","export const ERR_IPNS_EXPIRED_RECORD = 'ERR_IPNS_EXPIRED_RECORD';\nexport const ERR_UNRECOGNIZED_VALIDITY = 'ERR_UNRECOGNIZED_VALIDITY';\nexport const ERR_SIGNATURE_CREATION = 'ERR_SIGNATURE_CREATION';\nexport const ERR_SIGNATURE_VERIFICATION = 'ERR_SIGNATURE_VERIFICATION';\nexport const ERR_UNRECOGNIZED_FORMAT = 'ERR_UNRECOGNIZED_FORMAT';\nexport const ERR_PEER_ID_FROM_PUBLIC_KEY = 'ERR_PEER_ID_FROM_PUBLIC_KEY';\nexport const ERR_PUBLIC_KEY_FROM_ID = 'ERR_PUBLIC_KEY_FROM_ID';\nexport const ERR_UNDEFINED_PARAMETER = 'ERR_UNDEFINED_PARAMETER';\nexport const ERR_INVALID_RECORD_DATA = 'ERR_INVALID_RECORD_DATA';\nexport const ERR_INVALID_VALUE = 'ERR_INVALID_VALUE';\nexport const ERR_INVALID_EMBEDDED_KEY = 'ERR_INVALID_EMBEDDED_KEY';\nexport const ERR_MISSING_PRIVATE_KEY = 'ERR_MISSING_PRIVATE_KEY';\nexport const ERR_RECORD_TOO_LARGE = 'ERR_RECORD_TOO_LARGE';\n//# sourceMappingURL=errors.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var IpnsEntry;\n(function (IpnsEntry) {\n let ValidityType;\n (function (ValidityType) {\n ValidityType[\"EOL\"] = \"EOL\";\n })(ValidityType = IpnsEntry.ValidityType || (IpnsEntry.ValidityType = {}));\n let __ValidityTypeValues;\n (function (__ValidityTypeValues) {\n __ValidityTypeValues[__ValidityTypeValues[\"EOL\"] = 0] = \"EOL\";\n })(__ValidityTypeValues || (__ValidityTypeValues = {}));\n (function (ValidityType) {\n ValidityType.codec = () => {\n return enumeration(__ValidityTypeValues);\n };\n })(ValidityType = IpnsEntry.ValidityType || (IpnsEntry.ValidityType = {}));\n let _codec;\n IpnsEntry.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.value != null) {\n w.uint32(10);\n w.bytes(obj.value);\n }\n if (obj.signatureV1 != null) {\n w.uint32(18);\n w.bytes(obj.signatureV1);\n }\n if (obj.validityType != null) {\n w.uint32(24);\n IpnsEntry.ValidityType.codec().encode(obj.validityType, w);\n }\n if (obj.validity != null) {\n w.uint32(34);\n w.bytes(obj.validity);\n }\n if (obj.sequence != null) {\n w.uint32(40);\n w.uint64(obj.sequence);\n }\n if (obj.ttl != null) {\n w.uint32(48);\n w.uint64(obj.ttl);\n }\n if (obj.pubKey != null) {\n w.uint32(58);\n w.bytes(obj.pubKey);\n }\n if (obj.signatureV2 != null) {\n w.uint32(66);\n w.bytes(obj.signatureV2);\n }\n if (obj.data != null) {\n w.uint32(74);\n w.bytes(obj.data);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {};\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.value = reader.bytes();\n break;\n case 2:\n obj.signatureV1 = reader.bytes();\n break;\n case 3:\n obj.validityType = IpnsEntry.ValidityType.codec().decode(reader);\n break;\n case 4:\n obj.validity = reader.bytes();\n break;\n case 5:\n obj.sequence = reader.uint64();\n break;\n case 6:\n obj.ttl = reader.uint64();\n break;\n case 7:\n obj.pubKey = reader.bytes();\n break;\n case 8:\n obj.signatureV2 = reader.bytes();\n break;\n case 9:\n obj.data = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n IpnsEntry.encode = (obj) => {\n return encodeMessage(obj, IpnsEntry.codec());\n };\n IpnsEntry.decode = (buf) => {\n return decodeMessage(buf, IpnsEntry.codec());\n };\n})(IpnsEntry || (IpnsEntry = {}));\n//# sourceMappingURL=ipns.js.map","import { unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { isPeerId } from '@libp2p/interface';\nimport { logger } from '@libp2p/logger';\nimport { peerIdFromBytes, peerIdFromKeys } from '@libp2p/peer-id';\nimport * as cborg from 'cborg';\nimport errCode from 'err-code';\nimport { base36 } from 'multiformats/bases/base36';\nimport { CID } from 'multiformats/cid';\nimport NanoDate from 'timestamp-nano';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport * as ERRORS from './errors.js';\nimport { IpnsEntry } from './pb/ipns.js';\nconst log = logger('ipns:utils');\nconst IPNS_PREFIX = uint8ArrayFromString('/ipns/');\nconst LIBP2P_CID_CODEC = 114;\n/**\n * Convert a JavaScript date into an `RFC3339Nano` formatted\n * string\n */\nexport function toRFC3339(time) {\n const year = time.getUTCFullYear();\n const month = String(time.getUTCMonth() + 1).padStart(2, '0');\n const day = String(time.getUTCDate()).padStart(2, '0');\n const hour = String(time.getUTCHours()).padStart(2, '0');\n const minute = String(time.getUTCMinutes()).padStart(2, '0');\n const seconds = String(time.getUTCSeconds()).padStart(2, '0');\n const milliseconds = time.getUTCMilliseconds();\n const nanoseconds = milliseconds * 1000 * 1000;\n return `${year}-${month}-${day}T${hour}:${minute}:${seconds}.${nanoseconds}Z`;\n}\n/**\n * Parses a date string formatted as `RFC3339Nano` into a\n * JavaScript Date object\n */\nexport function parseRFC3339(time) {\n const rfc3339Matcher = new RegExp(\n // 2006-01-02T\n '(\\\\d{4})-(\\\\d{2})-(\\\\d{2})T' +\n // 15:04:05\n '(\\\\d{2}):(\\\\d{2}):(\\\\d{2})' +\n // .999999999Z\n '\\\\.(\\\\d+)Z');\n const m = String(time).trim().match(rfc3339Matcher);\n if (m == null) {\n throw new Error('Invalid format');\n }\n const year = parseInt(m[1], 10);\n const month = parseInt(m[2], 10) - 1;\n const date = parseInt(m[3], 10);\n const hour = parseInt(m[4], 10);\n const minute = parseInt(m[5], 10);\n const second = parseInt(m[6], 10);\n const millisecond = parseInt(m[7].padEnd(6, '0').slice(0, 3), 10);\n return new Date(Date.UTC(year, month, date, hour, minute, second, millisecond));\n}\n/**\n * Extracts a public key from the passed PeerId, falling\n * back to the pubKey embedded in the ipns record\n */\nexport const extractPublicKey = async (peerId, record) => {\n if (record == null || peerId == null) {\n const error = new Error('one or more of the provided parameters are not defined');\n log.error(error);\n throw errCode(error, ERRORS.ERR_UNDEFINED_PARAMETER);\n }\n let pubKey;\n if (record.pubKey != null) {\n try {\n pubKey = unmarshalPublicKey(record.pubKey);\n }\n catch (err) {\n log.error(err);\n throw err;\n }\n const otherId = await peerIdFromKeys(record.pubKey);\n if (!otherId.equals(peerId)) {\n throw errCode(new Error('Embedded public key did not match PeerID'), ERRORS.ERR_INVALID_EMBEDDED_KEY);\n }\n }\n else if (peerId.publicKey != null) {\n pubKey = unmarshalPublicKey(peerId.publicKey);\n }\n if (pubKey != null) {\n return pubKey;\n }\n throw errCode(new Error('no public key is available'), ERRORS.ERR_UNDEFINED_PARAMETER);\n};\n/**\n * Utility for creating the record data for being signed\n */\nexport const ipnsRecordDataForV1Sig = (value, validityType, validity) => {\n const validityTypeBuffer = uint8ArrayFromString(validityType);\n return uint8ArrayConcat([value, validity, validityTypeBuffer]);\n};\n/**\n * Utility for creating the record data for being signed\n */\nexport const ipnsRecordDataForV2Sig = (data) => {\n const entryData = uint8ArrayFromString('ipns-signature:');\n return uint8ArrayConcat([entryData, data]);\n};\nexport const marshal = (obj) => {\n if ('signatureV1' in obj) {\n return IpnsEntry.encode({\n value: uint8ArrayFromString(obj.value),\n signatureV1: obj.signatureV1,\n validityType: obj.validityType,\n validity: uint8ArrayFromString(obj.validity.toString()),\n sequence: obj.sequence,\n ttl: obj.ttl,\n pubKey: obj.pubKey,\n signatureV2: obj.signatureV2,\n data: obj.data\n });\n }\n else {\n return IpnsEntry.encode({\n pubKey: obj.pubKey,\n signatureV2: obj.signatureV2,\n data: obj.data\n });\n }\n};\nexport function unmarshal(buf) {\n const message = IpnsEntry.decode(buf);\n // protobufjs returns bigints as numbers\n if (message.sequence != null) {\n message.sequence = BigInt(message.sequence);\n }\n // protobufjs returns bigints as numbers\n if (message.ttl != null) {\n message.ttl = BigInt(message.ttl);\n }\n // Check if we have the data field. If we don't, we fail. We've been producing\n // V1+V2 records for quite a while and we don't support V1-only records during\n // validation any more\n if (message.signatureV2 == null || message.data == null) {\n throw errCode(new Error('missing data or signatureV2'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n const data = parseCborData(message.data);\n const value = normalizeValue(data.Value);\n let validity;\n try {\n validity = NanoDate.fromDate(parseRFC3339(uint8ArrayToString(data.Validity)));\n }\n catch (e) {\n log.error('unrecognized validity format (not an rfc3339 format)');\n throw errCode(new Error('unrecognized validity format (not an rfc3339 format)'), ERRORS.ERR_UNRECOGNIZED_FORMAT);\n }\n if (message.value != null && message.signatureV1 != null) {\n // V1+V2\n validateCborDataMatchesPbData(message);\n return {\n value,\n validityType: IpnsEntry.ValidityType.EOL,\n validity,\n sequence: data.Sequence,\n ttl: data.TTL,\n pubKey: message.pubKey,\n signatureV1: message.signatureV1,\n signatureV2: message.signatureV2,\n data: message.data\n };\n }\n else if (message.signatureV2 != null) {\n // V2-only\n return {\n value,\n validityType: IpnsEntry.ValidityType.EOL,\n validity,\n sequence: data.Sequence,\n ttl: data.TTL,\n pubKey: message.pubKey,\n signatureV2: message.signatureV2,\n data: message.data\n };\n }\n else {\n throw new Error('invalid record: does not include signatureV1 or signatureV2');\n }\n}\nexport const peerIdToRoutingKey = (peerId) => {\n return uint8ArrayConcat([\n IPNS_PREFIX,\n peerId.toBytes()\n ]);\n};\nexport const peerIdFromRoutingKey = (key) => {\n return peerIdFromBytes(key.slice(IPNS_PREFIX.length));\n};\nexport const createCborData = (value, validity, validityType, sequence, ttl) => {\n let ValidityType;\n if (validityType === IpnsEntry.ValidityType.EOL) {\n ValidityType = 0;\n }\n else {\n throw errCode(new Error('Unknown validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n const data = {\n Value: value,\n Validity: validity,\n ValidityType,\n Sequence: sequence,\n TTL: ttl\n };\n return cborg.encode(data);\n};\nexport const parseCborData = (buf) => {\n const data = cborg.decode(buf);\n if (data.ValidityType === 0) {\n data.ValidityType = IpnsEntry.ValidityType.EOL;\n }\n else {\n throw errCode(new Error('Unknown validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n if (Number.isInteger(data.Sequence)) {\n // sequence must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range\n data.Sequence = BigInt(data.Sequence);\n }\n if (Number.isInteger(data.TTL)) {\n // ttl must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range\n data.TTL = BigInt(data.TTL);\n }\n return data;\n};\n/**\n * Normalizes the given record value. It ensures it is a PeerID, a CID or a\n * string starting with '/'. PeerIDs become `/ipns/${cidV1Libp2pKey}`,\n * CIDs become `/ipfs/${cidAsV1}`.\n */\nexport const normalizeValue = (value) => {\n if (value != null) {\n // if we have a PeerId, turn it into an ipns path\n if (isPeerId(value)) {\n return `/ipns/${value.toCID().toString(base36)}`;\n }\n // if the value is bytes, stringify it and see if we have a path\n if (value instanceof Uint8Array) {\n const string = uint8ArrayToString(value);\n if (string.startsWith('/')) {\n value = string;\n }\n }\n // if we have a path, check it is a valid path\n const string = value.toString().trim();\n if (string.startsWith('/') && string.length > 1) {\n return string;\n }\n // if we have a CID, turn it into an ipfs path\n const cid = CID.asCID(value);\n if (cid != null) {\n // PeerID encoded as a CID\n if (cid.code === LIBP2P_CID_CODEC) {\n return `/ipns/${cid.toString(base36)}`;\n }\n return `/ipfs/${cid.toV1().toString()}`;\n }\n // try parsing what we have as CID bytes or a CID string\n try {\n if (value instanceof Uint8Array) {\n return `/ipfs/${CID.decode(value).toV1().toString()}`;\n }\n return `/ipfs/${CID.parse(string).toV1().toString()}`;\n }\n catch {\n // fall through\n }\n }\n throw errCode(new Error('Value must be a valid content path starting with /'), ERRORS.ERR_INVALID_VALUE);\n};\nconst validateCborDataMatchesPbData = (entry) => {\n if (entry.data == null) {\n throw errCode(new Error('Record data is missing'), ERRORS.ERR_INVALID_RECORD_DATA);\n }\n const data = parseCborData(entry.data);\n if (!uint8ArrayEquals(data.Value, entry.value ?? new Uint8Array(0))) {\n throw errCode(new Error('Field \"value\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (!uint8ArrayEquals(data.Validity, entry.validity ?? new Uint8Array(0))) {\n throw errCode(new Error('Field \"validity\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.ValidityType !== entry.validityType) {\n throw errCode(new Error('Field \"validityType\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.Sequence !== entry.sequence) {\n throw errCode(new Error('Field \"sequence\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n if (data.TTL !== entry.ttl) {\n throw errCode(new Error('Field \"ttl\" did not match between protobuf and CBOR'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n};\n//# sourceMappingURL=utils.js.map","import { unmarshal } from './utils.js';\nexport function ipnsSelector(key, data) {\n const entries = data.map((buf, index) => ({\n record: unmarshal(buf),\n index\n }));\n entries.sort((a, b) => {\n // Before we'd sort based on the signature version. Unmarshal now fails if\n // a record does not have SignatureV2, so that is no longer needed. V1-only\n // records haven't been issues in a long time.\n const aSeq = a.record.sequence;\n const bSeq = b.record.sequence;\n // choose later sequence number\n if (aSeq > bSeq) {\n return -1;\n }\n else if (aSeq < bSeq) {\n return 1;\n }\n // choose longer lived record if sequence numbers the same\n const recordAValidityDate = a.record.validity.toDate();\n const recordBValidityDate = b.record.validity.toDate();\n if (recordAValidityDate.getTime() > recordBValidityDate.getTime()) {\n return -1;\n }\n if (recordAValidityDate.getTime() < recordBValidityDate.getTime()) {\n return 1;\n }\n return 0;\n });\n return entries[0].index;\n}\n//# sourceMappingURL=selector.js.map","import { logger } from '@libp2p/logger';\nimport errCode from 'err-code';\nimport * as ERRORS from './errors.js';\nimport { IpnsEntry } from './pb/ipns.js';\nimport { extractPublicKey, ipnsRecordDataForV2Sig, unmarshal, peerIdFromRoutingKey } from './utils.js';\nconst log = logger('ipns:validator');\n/**\n * Limit valid IPNS record sizes to 10kb\n */\nconst MAX_RECORD_SIZE = 1024 * 10;\n/**\n * Validates the given IPNS Record against the given public key. We need a \"raw\"\n * record in order to be able to access to all of its fields.\n */\nexport const validate = async (publicKey, buf) => {\n // unmarshal ensures that (1) SignatureV2 and Data are present, (2) that ValidityType\n // and Validity are of valid types and have a value, (3) that CBOR data matches protobuf\n // if it's a V1+V2 record.\n const record = unmarshal(buf);\n // Validate Signature V2\n let isValid;\n try {\n const dataForSignature = ipnsRecordDataForV2Sig(record.data);\n isValid = await publicKey.verify(dataForSignature, record.signatureV2);\n }\n catch (err) {\n isValid = false;\n }\n if (!isValid) {\n log.error('record signature verification failed');\n throw errCode(new Error('record signature verification failed'), ERRORS.ERR_SIGNATURE_VERIFICATION);\n }\n // Validate according to the validity type\n if (record.validityType === IpnsEntry.ValidityType.EOL) {\n if (record.validity.toDate().getTime() < Date.now()) {\n log.error('record has expired');\n throw errCode(new Error('record has expired'), ERRORS.ERR_IPNS_EXPIRED_RECORD);\n }\n }\n else if (record.validityType != null) {\n log.error('unrecognized validity type');\n throw errCode(new Error('unrecognized validity type'), ERRORS.ERR_UNRECOGNIZED_VALIDITY);\n }\n log('ipns record for %s is valid', record.value);\n};\nexport async function ipnsValidator(key, marshalledData) {\n if (marshalledData.byteLength > MAX_RECORD_SIZE) {\n throw errCode(new Error('record too large'), ERRORS.ERR_RECORD_TOO_LARGE);\n }\n const peerId = peerIdFromRoutingKey(key);\n const receivedRecord = unmarshal(marshalledData);\n // extract public key\n const pubKey = await extractPublicKey(peerId, receivedRecord);\n // Record validation\n await validate(pubKey, marshalledData);\n}\n//# sourceMappingURL=validator.js.map","export const version = '1.9.4';\nexport const name = 'libp2p';\n//# sourceMappingURL=version.js.map","export const version = '3.0.1';\nexport const name = 'helia';\n//# sourceMappingURL=version.js.map","// this list comes from https://github.com/ipfs/kubo/blob/da28fbc65a2e0f1ce59f9923823326ae2bc4f713/config/bootstrap_peers.go#L17\nexport const bootstrapConfig = {\n list: [\n '/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN',\n '/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa',\n '/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb',\n '/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt',\n '/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ'\n ]\n};\n//# sourceMappingURL=bootstrappers.js.map","import { gossipsub } from '@chainsafe/libp2p-gossipsub';\nimport { noise } from '@chainsafe/libp2p-noise';\nimport { yamux } from '@chainsafe/libp2p-yamux';\nimport { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client';\nimport { autoNAT } from '@libp2p/autonat';\nimport { bootstrap } from '@libp2p/bootstrap';\nimport { circuitRelayTransport } from '@libp2p/circuit-relay-v2';\nimport { dcutr } from '@libp2p/dcutr';\nimport { identify } from '@libp2p/identify';\nimport { kadDHT } from '@libp2p/kad-dht';\nimport { keychain } from '@libp2p/keychain';\nimport { mplex } from '@libp2p/mplex';\nimport { ping } from '@libp2p/ping';\nimport { webRTC, webRTCDirect } from '@libp2p/webrtc';\nimport { webSockets } from '@libp2p/websockets';\nimport { webTransport } from '@libp2p/webtransport';\nimport { ipnsSelector } from 'ipns/selector';\nimport { ipnsValidator } from 'ipns/validator';\nimport * as libp2pInfo from 'libp2p/version';\nimport { name, version } from '../version.js';\nimport { bootstrapConfig } from './bootstrappers.js';\nexport function libp2pDefaults(options = {}) {\n return {\n peerId: options.peerId,\n addresses: {\n listen: [\n '/webrtc'\n ]\n },\n transports: [\n circuitRelayTransport({\n discoverRelays: 1\n }),\n webRTC(),\n webRTCDirect(),\n webTransport(),\n webSockets()\n ],\n connectionEncryption: [\n noise()\n ],\n streamMuxers: [\n yamux(),\n mplex()\n ],\n peerDiscovery: [\n bootstrap(bootstrapConfig)\n ],\n services: {\n autoNAT: autoNAT(),\n dcutr: dcutr(),\n delegatedRouting: () => createDelegatedRoutingV1HttpApiClient('https://delegated-ipfs.dev'),\n dht: kadDHT({\n clientMode: true,\n validators: {\n ipns: ipnsValidator\n },\n selectors: {\n ipns: ipnsSelector\n }\n }),\n identify: identify({\n agentVersion: `${name}/${version} ${libp2pInfo.name}/${libp2pInfo.version} UserAgent=${globalThis.navigator.userAgent}`\n }),\n keychain: keychain(options.keychain),\n ping: ping(),\n pubsub: gossipsub()\n }\n };\n}\n//# sourceMappingURL=libp2p-defaults.browser.js.map","export const codes = {\n ERR_INVALID_PARAMETERS: 'ERR_INVALID_PARAMETERS'\n};\n//# sourceMappingURL=errors.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Peer;\n(function (Peer) {\n let Peer$metadataEntry;\n (function (Peer$metadataEntry) {\n let _codec;\n Peer$metadataEntry.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.key != null && obj.key !== '')) {\n w.uint32(10);\n w.string(obj.key);\n }\n if ((obj.value != null && obj.value.byteLength > 0)) {\n w.uint32(18);\n w.bytes(obj.value);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n key: '',\n value: new Uint8Array(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.key = reader.string();\n break;\n case 2:\n obj.value = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Peer$metadataEntry.encode = (obj) => {\n return encodeMessage(obj, Peer$metadataEntry.codec());\n };\n Peer$metadataEntry.decode = (buf) => {\n return decodeMessage(buf, Peer$metadataEntry.codec());\n };\n })(Peer$metadataEntry = Peer.Peer$metadataEntry || (Peer.Peer$metadataEntry = {}));\n let Peer$tagsEntry;\n (function (Peer$tagsEntry) {\n let _codec;\n Peer$tagsEntry.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.key != null && obj.key !== '')) {\n w.uint32(10);\n w.string(obj.key);\n }\n if (obj.value != null) {\n w.uint32(18);\n Tag.codec().encode(obj.value, w);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n key: ''\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.key = reader.string();\n break;\n case 2:\n obj.value = Tag.codec().decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Peer$tagsEntry.encode = (obj) => {\n return encodeMessage(obj, Peer$tagsEntry.codec());\n };\n Peer$tagsEntry.decode = (buf) => {\n return decodeMessage(buf, Peer$tagsEntry.codec());\n };\n })(Peer$tagsEntry = Peer.Peer$tagsEntry || (Peer.Peer$tagsEntry = {}));\n let _codec;\n Peer.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.addresses != null) {\n for (const value of obj.addresses) {\n w.uint32(10);\n Address.codec().encode(value, w);\n }\n }\n if (obj.protocols != null) {\n for (const value of obj.protocols) {\n w.uint32(18);\n w.string(value);\n }\n }\n if (obj.publicKey != null) {\n w.uint32(34);\n w.bytes(obj.publicKey);\n }\n if (obj.peerRecordEnvelope != null) {\n w.uint32(42);\n w.bytes(obj.peerRecordEnvelope);\n }\n if (obj.metadata != null && obj.metadata.size !== 0) {\n for (const [key, value] of obj.metadata.entries()) {\n w.uint32(50);\n Peer.Peer$metadataEntry.codec().encode({ key, value }, w);\n }\n }\n if (obj.tags != null && obj.tags.size !== 0) {\n for (const [key, value] of obj.tags.entries()) {\n w.uint32(58);\n Peer.Peer$tagsEntry.codec().encode({ key, value }, w);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n addresses: [],\n protocols: [],\n metadata: new Map(),\n tags: new Map()\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.addresses.push(Address.codec().decode(reader, reader.uint32()));\n break;\n case 2:\n obj.protocols.push(reader.string());\n break;\n case 4:\n obj.publicKey = reader.bytes();\n break;\n case 5:\n obj.peerRecordEnvelope = reader.bytes();\n break;\n case 6: {\n const entry = Peer.Peer$metadataEntry.codec().decode(reader, reader.uint32());\n obj.metadata.set(entry.key, entry.value);\n break;\n }\n case 7: {\n const entry = Peer.Peer$tagsEntry.codec().decode(reader, reader.uint32());\n obj.tags.set(entry.key, entry.value);\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Peer.encode = (obj) => {\n return encodeMessage(obj, Peer.codec());\n };\n Peer.decode = (buf) => {\n return decodeMessage(buf, Peer.codec());\n };\n})(Peer || (Peer = {}));\nexport var Address;\n(function (Address) {\n let _codec;\n Address.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.multiaddr != null && obj.multiaddr.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.multiaddr);\n }\n if (obj.isCertified != null) {\n w.uint32(16);\n w.bool(obj.isCertified);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n multiaddr: new Uint8Array(0)\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.multiaddr = reader.bytes();\n break;\n case 2:\n obj.isCertified = reader.bool();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Address.encode = (obj) => {\n return encodeMessage(obj, Address.codec());\n };\n Address.decode = (buf) => {\n return decodeMessage(buf, Address.codec());\n };\n})(Address || (Address = {}));\nexport var Tag;\n(function (Tag) {\n let _codec;\n Tag.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.value != null && obj.value !== 0)) {\n w.uint32(8);\n w.uint32(obj.value);\n }\n if (obj.expiry != null) {\n w.uint32(16);\n w.uint64(obj.expiry);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n value: 0\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n obj.value = reader.uint32();\n break;\n case 2:\n obj.expiry = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Tag.encode = (obj) => {\n return encodeMessage(obj, Tag.codec());\n };\n Tag.decode = (buf) => {\n return decodeMessage(buf, Tag.codec());\n };\n})(Tag || (Tag = {}));\n//# sourceMappingURL=peer.js.map","import { peerIdFromPeerId } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { Peer as PeerPB } from '../pb/peer.js';\nexport function bytesToPeer(peerId, buf) {\n const peer = PeerPB.decode(buf);\n if (peer.publicKey != null && peerId.publicKey == null) {\n peerId = peerIdFromPeerId({\n ...peerId,\n publicKey: peerId.publicKey\n });\n }\n const tags = new Map();\n // remove any expired tags\n const now = BigInt(Date.now());\n for (const [key, tag] of peer.tags.entries()) {\n if (tag.expiry != null && tag.expiry < now) {\n continue;\n }\n tags.set(key, tag);\n }\n return {\n ...peer,\n id: peerId,\n addresses: peer.addresses.map(({ multiaddr: ma, isCertified }) => {\n return {\n multiaddr: multiaddr(ma),\n isCertified: isCertified ?? false\n };\n }),\n metadata: peer.metadata,\n peerRecordEnvelope: peer.peerRecordEnvelope ?? undefined,\n tags\n };\n}\n//# sourceMappingURL=bytes-to-peer.js.map","import { CodeError } from '@libp2p/interface';\nimport { isPeerId } from '@libp2p/interface';\nimport { Key } from 'interface-datastore/key';\nimport { codes } from '../errors.js';\nexport const NAMESPACE_COMMON = '/peers/';\nexport function peerIdToDatastoreKey(peerId) {\n if (!isPeerId(peerId) || peerId.type == null) {\n throw new CodeError('Invalid PeerId', codes.ERR_INVALID_PARAMETERS);\n }\n const b32key = peerId.toCID().toString();\n return new Key(`${NAMESPACE_COMMON}${b32key}`);\n}\n//# sourceMappingURL=peer-id-to-datastore-key.js.map","import { CodeError } from '@libp2p/interface';\nimport { isMultiaddr, multiaddr } from '@multiformats/multiaddr';\nimport { codes } from '../errors.js';\nexport async function dedupeFilterAndSortAddresses(peerId, filter, addresses) {\n const addressMap = new Map();\n for (const addr of addresses) {\n if (addr == null) {\n continue;\n }\n if (addr.multiaddr instanceof Uint8Array) {\n addr.multiaddr = multiaddr(addr.multiaddr);\n }\n if (!isMultiaddr(addr.multiaddr)) {\n throw new CodeError('Multiaddr was invalid', codes.ERR_INVALID_PARAMETERS);\n }\n if (!(await filter(peerId, addr.multiaddr))) {\n continue;\n }\n const isCertified = addr.isCertified ?? false;\n const maStr = addr.multiaddr.toString();\n const existingAddr = addressMap.get(maStr);\n if (existingAddr != null) {\n addr.isCertified = existingAddr.isCertified || isCertified;\n }\n else {\n addressMap.set(maStr, {\n multiaddr: addr.multiaddr,\n isCertified\n });\n }\n }\n return [...addressMap.values()]\n .sort((a, b) => {\n return a.multiaddr.toString().localeCompare(b.multiaddr.toString());\n })\n .map(({ isCertified, multiaddr }) => ({\n isCertified,\n multiaddr: multiaddr.bytes\n }));\n}\n//# sourceMappingURL=dedupe-addresses.js.map","import { CodeError } from '@libp2p/interface';\nimport { equals as uint8arrayEquals } from 'uint8arrays/equals';\nimport { codes } from '../errors.js';\nimport { dedupeFilterAndSortAddresses } from './dedupe-addresses.js';\nexport async function toPeerPB(peerId, data, strategy, options) {\n if (data == null) {\n throw new CodeError('Invalid PeerData', codes.ERR_INVALID_PARAMETERS);\n }\n if (data.publicKey != null && peerId.publicKey != null && !uint8arrayEquals(data.publicKey, peerId.publicKey)) {\n throw new CodeError('publicKey bytes do not match peer id publicKey bytes', codes.ERR_INVALID_PARAMETERS);\n }\n const existingPeer = options.existingPeer;\n if (existingPeer != null && !peerId.equals(existingPeer.id)) {\n throw new CodeError('peer id did not match existing peer id', codes.ERR_INVALID_PARAMETERS);\n }\n let addresses = existingPeer?.addresses ?? [];\n let protocols = new Set(existingPeer?.protocols ?? []);\n let metadata = existingPeer?.metadata ?? new Map();\n let tags = existingPeer?.tags ?? new Map();\n let peerRecordEnvelope = existingPeer?.peerRecordEnvelope;\n // when patching, we replace the original fields with passed values\n if (strategy === 'patch') {\n if (data.multiaddrs != null || data.addresses != null) {\n addresses = [];\n if (data.multiaddrs != null) {\n addresses.push(...data.multiaddrs.map(multiaddr => ({\n isCertified: false,\n multiaddr\n })));\n }\n if (data.addresses != null) {\n addresses.push(...data.addresses);\n }\n }\n if (data.protocols != null) {\n protocols = new Set(data.protocols);\n }\n if (data.metadata != null) {\n const metadataEntries = data.metadata instanceof Map ? [...data.metadata.entries()] : Object.entries(data.metadata);\n metadata = createSortedMap(metadataEntries, {\n validate: validateMetadata\n });\n }\n if (data.tags != null) {\n const tagsEntries = data.tags instanceof Map ? [...data.tags.entries()] : Object.entries(data.tags);\n tags = createSortedMap(tagsEntries, {\n validate: validateTag,\n map: mapTag\n });\n }\n if (data.peerRecordEnvelope != null) {\n peerRecordEnvelope = data.peerRecordEnvelope;\n }\n }\n // when merging, we join the original fields with passed values\n if (strategy === 'merge') {\n if (data.multiaddrs != null) {\n addresses.push(...data.multiaddrs.map(multiaddr => ({\n isCertified: false,\n multiaddr\n })));\n }\n if (data.addresses != null) {\n addresses.push(...data.addresses);\n }\n if (data.protocols != null) {\n protocols = new Set([...protocols, ...data.protocols]);\n }\n if (data.metadata != null) {\n const metadataEntries = data.metadata instanceof Map ? [...data.metadata.entries()] : Object.entries(data.metadata);\n for (const [key, value] of metadataEntries) {\n if (value == null) {\n metadata.delete(key);\n }\n else {\n metadata.set(key, value);\n }\n }\n metadata = createSortedMap([...metadata.entries()], {\n validate: validateMetadata\n });\n }\n if (data.tags != null) {\n const tagsEntries = data.tags instanceof Map ? [...data.tags.entries()] : Object.entries(data.tags);\n const mergedTags = new Map(tags);\n for (const [key, value] of tagsEntries) {\n if (value == null) {\n mergedTags.delete(key);\n }\n else {\n mergedTags.set(key, value);\n }\n }\n tags = createSortedMap([...mergedTags.entries()], {\n validate: validateTag,\n map: mapTag\n });\n }\n if (data.peerRecordEnvelope != null) {\n peerRecordEnvelope = data.peerRecordEnvelope;\n }\n }\n const output = {\n addresses: await dedupeFilterAndSortAddresses(peerId, options.addressFilter ?? (async () => true), addresses),\n protocols: [...protocols.values()].sort((a, b) => {\n return a.localeCompare(b);\n }),\n metadata,\n tags,\n publicKey: existingPeer?.id.publicKey ?? data.publicKey ?? peerId.publicKey,\n peerRecordEnvelope\n };\n // Ed25519 and secp256k1 have their public key embedded in them so no need to duplicate it\n if (peerId.type !== 'RSA') {\n delete output.publicKey;\n }\n return output;\n}\n/**\n * In JS maps are ordered by insertion order so create a new map with the\n * keys inserted in alphabetical order.\n */\nfunction createSortedMap(entries, options) {\n const output = new Map();\n for (const [key, value] of entries) {\n if (value == null) {\n continue;\n }\n options.validate(key, value);\n }\n for (const [key, value] of entries.sort(([a], [b]) => {\n return a.localeCompare(b);\n })) {\n if (value != null) {\n output.set(key, options.map?.(key, value) ?? value);\n }\n }\n return output;\n}\nfunction validateMetadata(key, value) {\n if (typeof key !== 'string') {\n throw new CodeError('Metadata key must be a string', codes.ERR_INVALID_PARAMETERS);\n }\n if (!(value instanceof Uint8Array)) {\n throw new CodeError('Metadata value must be a Uint8Array', codes.ERR_INVALID_PARAMETERS);\n }\n}\nfunction validateTag(key, tag) {\n if (typeof key !== 'string') {\n throw new CodeError('Tag name must be a string', codes.ERR_INVALID_PARAMETERS);\n }\n if (tag.value != null) {\n if (parseInt(`${tag.value}`, 10) !== tag.value) {\n throw new CodeError('Tag value must be an integer', codes.ERR_INVALID_PARAMETERS);\n }\n if (tag.value < 0 || tag.value > 100) {\n throw new CodeError('Tag value must be between 0-100', codes.ERR_INVALID_PARAMETERS);\n }\n }\n if (tag.ttl != null) {\n if (parseInt(`${tag.ttl}`, 10) !== tag.ttl) {\n throw new CodeError('Tag ttl must be an integer', codes.ERR_INVALID_PARAMETERS);\n }\n if (tag.ttl < 0) {\n throw new CodeError('Tag ttl must be between greater than 0', codes.ERR_INVALID_PARAMETERS);\n }\n }\n}\nfunction mapTag(key, tag) {\n let expiry;\n if (tag.expiry != null) {\n expiry = tag.expiry;\n }\n if (tag.ttl != null) {\n expiry = BigInt(Date.now() + Number(tag.ttl));\n }\n return {\n value: tag.value ?? 0,\n expiry\n };\n}\n//# sourceMappingURL=to-peer-pb.js.map","import { CodeError } from '@libp2p/interface';\nimport { PeerMap } from '@libp2p/peer-collections';\nimport { peerIdFromBytes } from '@libp2p/peer-id';\nimport mortice, {} from 'mortice';\nimport { base32 } from 'multiformats/bases/base32';\nimport { equals as uint8ArrayEquals } from 'uint8arrays/equals';\nimport { codes } from './errors.js';\nimport { Peer as PeerPB } from './pb/peer.js';\nimport { bytesToPeer } from './utils/bytes-to-peer.js';\nimport { NAMESPACE_COMMON, peerIdToDatastoreKey } from './utils/peer-id-to-datastore-key.js';\nimport { toPeerPB } from './utils/to-peer-pb.js';\nfunction decodePeer(key, value, cache) {\n // /peers/${peer-id-as-libp2p-key-cid-string-in-base-32}\n const base32Str = key.toString().split('/')[2];\n const buf = base32.decode(base32Str);\n const peerId = peerIdFromBytes(buf);\n const cached = cache.get(peerId);\n if (cached != null) {\n return cached;\n }\n const peer = bytesToPeer(peerId, value);\n cache.set(peerId, peer);\n return peer;\n}\nfunction mapQuery(query, cache) {\n if (query == null) {\n return {};\n }\n return {\n prefix: NAMESPACE_COMMON,\n filters: (query.filters ?? []).map(fn => ({ key, value }) => {\n return fn(decodePeer(key, value, cache));\n }),\n orders: (query.orders ?? []).map(fn => (a, b) => {\n return fn(decodePeer(a.key, a.value, cache), decodePeer(b.key, b.value, cache));\n })\n };\n}\nexport class PersistentStore {\n peerId;\n datastore;\n lock;\n addressFilter;\n constructor(components, init = {}) {\n this.peerId = components.peerId;\n this.datastore = components.datastore;\n this.addressFilter = init.addressFilter;\n this.lock = mortice({\n name: 'peer-store',\n singleProcess: true\n });\n }\n async has(peerId) {\n return this.datastore.has(peerIdToDatastoreKey(peerId));\n }\n async delete(peerId) {\n if (this.peerId.equals(peerId)) {\n throw new CodeError('Cannot delete self peer', codes.ERR_INVALID_PARAMETERS);\n }\n await this.datastore.delete(peerIdToDatastoreKey(peerId));\n }\n async load(peerId) {\n const buf = await this.datastore.get(peerIdToDatastoreKey(peerId));\n return bytesToPeer(peerId, buf);\n }\n async save(peerId, data) {\n const { existingBuf, existingPeer } = await this.#findExistingPeer(peerId);\n const peerPb = await toPeerPB(peerId, data, 'patch', {\n addressFilter: this.addressFilter\n });\n return this.#saveIfDifferent(peerId, peerPb, existingBuf, existingPeer);\n }\n async patch(peerId, data) {\n const { existingBuf, existingPeer } = await this.#findExistingPeer(peerId);\n const peerPb = await toPeerPB(peerId, data, 'patch', {\n addressFilter: this.addressFilter,\n existingPeer\n });\n return this.#saveIfDifferent(peerId, peerPb, existingBuf, existingPeer);\n }\n async merge(peerId, data) {\n const { existingBuf, existingPeer } = await this.#findExistingPeer(peerId);\n const peerPb = await toPeerPB(peerId, data, 'merge', {\n addressFilter: this.addressFilter,\n existingPeer\n });\n return this.#saveIfDifferent(peerId, peerPb, existingBuf, existingPeer);\n }\n async *all(query) {\n const peerCache = new PeerMap();\n for await (const { key, value } of this.datastore.query(mapQuery(query ?? {}, peerCache))) {\n const peer = decodePeer(key, value, peerCache);\n if (peer.id.equals(this.peerId)) {\n // Skip self peer if present\n continue;\n }\n yield peer;\n }\n }\n async #findExistingPeer(peerId) {\n try {\n const existingBuf = await this.datastore.get(peerIdToDatastoreKey(peerId));\n const existingPeer = bytesToPeer(peerId, existingBuf);\n return {\n existingBuf,\n existingPeer\n };\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n return {};\n }\n async #saveIfDifferent(peerId, peer, existingBuf, existingPeer) {\n const buf = PeerPB.encode(peer);\n if (existingBuf != null && uint8ArrayEquals(buf, existingBuf)) {\n return {\n peer: bytesToPeer(peerId, buf),\n previous: existingPeer,\n updated: false\n };\n }\n await this.datastore.put(peerIdToDatastoreKey(peerId), buf);\n return {\n peer: bytesToPeer(peerId, buf),\n previous: existingPeer,\n updated: true\n };\n }\n}\n//# sourceMappingURL=store.js.map","/**\n * @packageDocumentation\n *\n * The peer store is where libp2p stores data about the peers it has encountered on the network.\n */\nimport { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';\nimport all from 'it-all';\nimport { PersistentStore } from './store.js';\n/**\n * An implementation of PeerStore that stores data in a Datastore\n */\nexport class PersistentPeerStore {\n store;\n events;\n peerId;\n log;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('libp2p:peer-store');\n this.events = components.events;\n this.peerId = components.peerId;\n this.store = new PersistentStore(components, init);\n }\n [Symbol.toStringTag] = '@libp2p/peer-store';\n async forEach(fn, query) {\n this.log.trace('forEach await read lock');\n const release = await this.store.lock.readLock();\n this.log.trace('forEach got read lock');\n try {\n for await (const peer of this.store.all(query)) {\n fn(peer);\n }\n }\n finally {\n this.log.trace('forEach release read lock');\n release();\n }\n }\n async all(query) {\n this.log.trace('all await read lock');\n const release = await this.store.lock.readLock();\n this.log.trace('all got read lock');\n try {\n return await all(this.store.all(query));\n }\n finally {\n this.log.trace('all release read lock');\n release();\n }\n }\n async delete(peerId) {\n this.log.trace('delete await write lock');\n const release = await this.store.lock.writeLock();\n this.log.trace('delete got write lock');\n try {\n await this.store.delete(peerId);\n }\n finally {\n this.log.trace('delete release write lock');\n release();\n }\n }\n async has(peerId) {\n this.log.trace('has await read lock');\n const release = await this.store.lock.readLock();\n this.log.trace('has got read lock');\n try {\n return await this.store.has(peerId);\n }\n finally {\n this.log.trace('has release read lock');\n release();\n }\n }\n async get(peerId) {\n this.log.trace('get await read lock');\n const release = await this.store.lock.readLock();\n this.log.trace('get got read lock');\n try {\n return await this.store.load(peerId);\n }\n finally {\n this.log.trace('get release read lock');\n release();\n }\n }\n async save(id, data) {\n this.log.trace('save await write lock');\n const release = await this.store.lock.writeLock();\n this.log.trace('save got write lock');\n try {\n const result = await this.store.save(id, data);\n this.#emitIfUpdated(id, result);\n return result.peer;\n }\n finally {\n this.log.trace('save release write lock');\n release();\n }\n }\n async patch(id, data) {\n this.log.trace('patch await write lock');\n const release = await this.store.lock.writeLock();\n this.log.trace('patch got write lock');\n try {\n const result = await this.store.patch(id, data);\n this.#emitIfUpdated(id, result);\n return result.peer;\n }\n finally {\n this.log.trace('patch release write lock');\n release();\n }\n }\n async merge(id, data) {\n this.log.trace('merge await write lock');\n const release = await this.store.lock.writeLock();\n this.log.trace('merge got write lock');\n try {\n const result = await this.store.merge(id, data);\n this.#emitIfUpdated(id, result);\n return result.peer;\n }\n finally {\n this.log.trace('merge release write lock');\n release();\n }\n }\n async consumePeerRecord(buf, expectedPeer) {\n const envelope = await RecordEnvelope.openAndCertify(buf, PeerRecord.DOMAIN);\n if (expectedPeer?.equals(envelope.peerId) === false) {\n this.log('envelope peer id was not the expected peer id - expected: %p received: %p', expectedPeer, envelope.peerId);\n return false;\n }\n const peerRecord = PeerRecord.createFromProtobuf(envelope.payload);\n let peer;\n try {\n peer = await this.get(envelope.peerId);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n // ensure seq is greater than, or equal to, the last received\n if (peer?.peerRecordEnvelope != null) {\n const storedEnvelope = await RecordEnvelope.createFromProtobuf(peer.peerRecordEnvelope);\n const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);\n if (storedRecord.seqNumber >= peerRecord.seqNumber) {\n this.log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);\n return false;\n }\n }\n await this.patch(peerRecord.peerId, {\n peerRecordEnvelope: buf,\n addresses: peerRecord.multiaddrs.map(multiaddr => ({\n isCertified: true,\n multiaddr\n }))\n });\n return true;\n }\n #emitIfUpdated(id, result) {\n if (!result.updated) {\n return;\n }\n if (this.peerId.equals(id)) {\n this.events.safeDispatchEvent('self:peer:update', { detail: result });\n }\n else {\n this.events.safeDispatchEvent('peer:update', { detail: result });\n }\n }\n}\n//# sourceMappingURL=index.js.map","export function debounce(func, wait) {\n let timeout;\n return function () {\n const later = function () {\n timeout = undefined;\n func();\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n//# sourceMappingURL=utils.js.map","import { peerIdFromString } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { debounce } from './utils.js';\nconst defaultAddressFilter = (addrs) => addrs;\n/**\n * If the passed multiaddr contains the passed peer id, remove it\n */\nfunction stripPeerId(ma, peerId) {\n const observedPeerIdStr = ma.getPeerId();\n // strip our peer id if it has been passed\n if (observedPeerIdStr != null) {\n const observedPeerId = peerIdFromString(observedPeerIdStr);\n // use same encoding for comparison\n if (observedPeerId.equals(peerId)) {\n ma = ma.decapsulate(multiaddr(`/p2p/${peerId.toString()}`));\n }\n }\n return ma;\n}\nexport class DefaultAddressManager {\n log;\n components;\n // this is an array to allow for duplicates, e.g. multiples of `/ip4/0.0.0.0/tcp/0`\n listen;\n announce;\n observed;\n announceFilter;\n /**\n * Responsible for managing the peer addresses.\n * Peers can specify their listen and announce addresses.\n * The listen addresses will be used by the libp2p transports to listen for new connections,\n * while the announce addresses will be used for the peer addresses' to other peers in the network.\n */\n constructor(components, init = {}) {\n const { listen = [], announce = [] } = init;\n this.components = components;\n this.log = components.logger.forComponent('libp2p:address-manager');\n this.listen = listen.map(ma => ma.toString());\n this.announce = new Set(announce.map(ma => ma.toString()));\n this.observed = new Map();\n this.announceFilter = init.announceFilter ?? defaultAddressFilter;\n // this method gets called repeatedly on startup when transports start listening so\n // debounce it so we don't cause multiple self:peer:update events to be emitted\n this._updatePeerStoreAddresses = debounce(this._updatePeerStoreAddresses.bind(this), 1000);\n // update our stored addresses when new transports listen\n components.events.addEventListener('transport:listening', () => {\n this._updatePeerStoreAddresses();\n });\n // update our stored addresses when existing transports stop listening\n components.events.addEventListener('transport:close', () => {\n this._updatePeerStoreAddresses();\n });\n }\n [Symbol.toStringTag] = '@libp2p/address-manager';\n _updatePeerStoreAddresses() {\n // if announce addresses have been configured, ensure they make it into our peer\n // record for things like identify\n const addrs = this.getAnnounceAddrs()\n .concat(this.components.transportManager.getAddrs())\n .concat([...this.observed.entries()]\n .filter(([_, metadata]) => metadata.confident)\n .map(([str]) => multiaddr(str))).map(ma => {\n // strip our peer id if it is present\n if (ma.getPeerId() === this.components.peerId.toString()) {\n return ma.decapsulate(`/p2p/${this.components.peerId.toString()}`);\n }\n return ma;\n });\n this.components.peerStore.patch(this.components.peerId, {\n multiaddrs: addrs\n })\n .catch(err => { this.log.error('error updating addresses', err); });\n }\n /**\n * Get peer listen multiaddrs\n */\n getListenAddrs() {\n return Array.from(this.listen).map((a) => multiaddr(a));\n }\n /**\n * Get peer announcing multiaddrs\n */\n getAnnounceAddrs() {\n return Array.from(this.announce).map((a) => multiaddr(a));\n }\n /**\n * Get observed multiaddrs\n */\n getObservedAddrs() {\n return Array.from(this.observed).map(([a]) => multiaddr(a));\n }\n /**\n * Add peer observed addresses\n */\n addObservedAddr(addr) {\n addr = stripPeerId(addr, this.components.peerId);\n const addrString = addr.toString();\n // do not trigger the change:addresses event if we already know about this address\n if (this.observed.has(addrString)) {\n return;\n }\n this.observed.set(addrString, {\n confident: false\n });\n }\n confirmObservedAddr(addr) {\n addr = stripPeerId(addr, this.components.peerId);\n const addrString = addr.toString();\n const metadata = this.observed.get(addrString) ?? {\n confident: false\n };\n const startingConfidence = metadata.confident;\n this.observed.set(addrString, {\n confident: true\n });\n // only trigger the 'self:peer:update' event if our confidence in an address has changed\n if (!startingConfidence) {\n this._updatePeerStoreAddresses();\n }\n }\n removeObservedAddr(addr) {\n addr = stripPeerId(addr, this.components.peerId);\n const addrString = addr.toString();\n this.observed.delete(addrString);\n }\n getAddresses() {\n let addrs = this.getAnnounceAddrs().map(ma => ma.toString());\n if (addrs.length === 0) {\n // no configured announce addrs, add configured listen addresses\n addrs = this.components.transportManager.getAddrs().map(ma => ma.toString());\n }\n // add observed addresses we are confident in\n addrs = addrs.concat(Array.from(this.observed)\n .filter(([ma, metadata]) => metadata.confident)\n .map(([ma]) => ma));\n // dedupe multiaddrs\n const addrSet = new Set(addrs);\n // Create advertising list\n return this.announceFilter(Array.from(addrSet)\n .map(str => multiaddr(str)))\n .map(ma => {\n // do not append our peer id to a path multiaddr as it will become invalid\n if (ma.protos().pop()?.path === true) {\n return ma;\n }\n if (ma.getPeerId() === this.components.peerId.toString()) {\n return ma;\n }\n return ma.encapsulate(`/p2p/${this.components.peerId.toString()}`);\n });\n }\n}\n//# sourceMappingURL=index.js.map","import { CodeError, serviceCapabilities, serviceDependencies } from '@libp2p/interface';\nimport { isStartable } from '@libp2p/interface';\nimport { defaultLogger } from '@libp2p/logger';\nclass DefaultComponents {\n components = {};\n _started = false;\n constructor(init = {}) {\n this.components = {};\n for (const [key, value] of Object.entries(init)) {\n this.components[key] = value;\n }\n if (this.components.logger == null) {\n this.components.logger = defaultLogger();\n }\n }\n isStarted() {\n return this._started;\n }\n async _invokeStartableMethod(methodName) {\n await Promise.all(Object.values(this.components)\n .filter(obj => isStartable(obj))\n .map(async (startable) => {\n await startable[methodName]?.();\n }));\n }\n async beforeStart() {\n await this._invokeStartableMethod('beforeStart');\n }\n async start() {\n await this._invokeStartableMethod('start');\n this._started = true;\n }\n async afterStart() {\n await this._invokeStartableMethod('afterStart');\n }\n async beforeStop() {\n await this._invokeStartableMethod('beforeStop');\n }\n async stop() {\n await this._invokeStartableMethod('stop');\n this._started = false;\n }\n async afterStop() {\n await this._invokeStartableMethod('afterStop');\n }\n}\nconst OPTIONAL_SERVICES = [\n 'metrics',\n 'connectionProtector',\n 'dns'\n];\nconst NON_SERVICE_PROPERTIES = [\n 'components',\n 'isStarted',\n 'beforeStart',\n 'start',\n 'afterStart',\n 'beforeStop',\n 'stop',\n 'afterStop',\n 'then',\n '_invokeStartableMethod'\n];\nexport function defaultComponents(init = {}) {\n const components = new DefaultComponents(init);\n const proxy = new Proxy(components, {\n get(target, prop, receiver) {\n if (typeof prop === 'string' && !NON_SERVICE_PROPERTIES.includes(prop)) {\n const service = components.components[prop];\n if (service == null && !OPTIONAL_SERVICES.includes(prop)) {\n throw new CodeError(`${prop} not set`, 'ERR_SERVICE_MISSING');\n }\n return service;\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value) {\n if (typeof prop === 'string') {\n components.components[prop] = value;\n }\n else {\n Reflect.set(target, prop, value);\n }\n return true;\n }\n });\n // @ts-expect-error component keys are proxied\n return proxy;\n}\nexport function checkServiceDependencies(components) {\n const serviceCapabilities = {};\n for (const service of Object.values(components.components)) {\n for (const capability of getServiceCapabilities(service)) {\n serviceCapabilities[capability] = true;\n }\n }\n for (const service of Object.values(components.components)) {\n for (const capability of getServiceDependencies(service)) {\n if (serviceCapabilities[capability] !== true) {\n throw new CodeError(`Service \"${getServiceName(service)}\" required capability \"${capability}\" but it was not provided by any component, you may need to add additional configuration when creating your node.`, 'ERR_UNMET_SERVICE_DEPENDENCIES');\n }\n }\n }\n}\nfunction getServiceCapabilities(service) {\n if (Array.isArray(service?.[serviceCapabilities])) {\n return service[serviceCapabilities];\n }\n return [];\n}\nfunction getServiceDependencies(service) {\n if (Array.isArray(service?.[serviceDependencies])) {\n return service[serviceDependencies];\n }\n return [];\n}\nfunction getServiceName(service) {\n return service?.[Symbol.toStringTag] ?? service?.toString() ?? 'unknown';\n}\n//# sourceMappingURL=components.js.map","import { isPrivateIp } from '@libp2p/utils/private-ip';\n/**\n * Returns a connection gater that disallows dialling private addresses by\n * default. Browsers are severely limited in their resource usage so don't\n * waste time trying to dial undiallable addresses.\n */\nexport function connectionGater(gater = {}) {\n return {\n denyDialPeer: async () => false,\n denyDialMultiaddr: async (multiaddr) => {\n const tuples = multiaddr.stringTuples();\n if (tuples[0][0] === 4 || tuples[0][0] === 41) {\n return Boolean(isPrivateIp(`${tuples[0][1]}`));\n }\n return false;\n },\n denyInboundConnection: async () => false,\n denyOutboundConnection: async () => false,\n denyInboundEncryptedConnection: async () => false,\n denyOutboundEncryptedConnection: async () => false,\n denyInboundUpgradedConnection: async () => false,\n denyOutboundUpgradedConnection: async () => false,\n filterMultiaddrForPeer: async () => true,\n ...gater\n };\n}\n//# sourceMappingURL=connection-gater.browser.js.map","import { isPrivateIp } from '../private-ip.js';\n/**\n * Check if a given multiaddr has a private address.\n */\nexport function isPrivate(ma) {\n try {\n const { address } = ma.nodeAddress();\n return Boolean(isPrivateIp(address));\n }\n catch {\n return true;\n }\n}\n//# sourceMappingURL=is-private.js.map","/**\n * @packageDocumentation\n *\n * Provides strategies to sort a list of multiaddrs.\n *\n * @example\n *\n * ```typescript\n * import { publicAddressesFirst } from '@libp2p/utils/address-sort'\n * import { multiaddr } from '@multformats/multiaddr'\n *\n *\n * const addresses = [\n * multiaddr('/ip4/127.0.0.1/tcp/9000'),\n * multiaddr('/ip4/82.41.53.1/tcp/9000')\n * ].sort(publicAddressesFirst)\n *\n * console.info(addresses)\n * // ['/ip4/82.41.53.1/tcp/9000', '/ip4/127.0.0.1/tcp/9000']\n * ```\n */\nimport { Circuit } from '@multiformats/multiaddr-matcher';\nimport { isPrivate } from './multiaddr/is-private.js';\n/**\n * Compare function for array.sort() that moves public addresses to the start\n * of the array.\n */\nexport function publicAddressesFirst(a, b) {\n const isAPrivate = isPrivate(a.multiaddr);\n const isBPrivate = isPrivate(b.multiaddr);\n if (isAPrivate && !isBPrivate) {\n return 1;\n }\n else if (!isAPrivate && isBPrivate) {\n return -1;\n }\n return 0;\n}\n/**\n * Compare function for array.sort() that moves certified addresses to the start\n * of the array.\n */\nexport function certifiedAddressesFirst(a, b) {\n if (a.isCertified && !b.isCertified) {\n return -1;\n }\n else if (!a.isCertified && b.isCertified) {\n return 1;\n }\n return 0;\n}\n/**\n * Compare function for array.sort() that moves circuit relay addresses to the\n * start of the array.\n */\nexport function circuitRelayAddressesLast(a, b) {\n const isACircuit = Circuit.exactMatch(a.multiaddr);\n const isBCircuit = Circuit.exactMatch(b.multiaddr);\n if (isACircuit && !isBCircuit) {\n return 1;\n }\n else if (!isACircuit && isBCircuit) {\n return -1;\n }\n return 0;\n}\nexport function defaultAddressSort(a, b) {\n const publicResult = publicAddressesFirst(a, b);\n if (publicResult !== 0) {\n return publicResult;\n }\n const relayResult = circuitRelayAddressesLast(a, b);\n if (relayResult !== 0) {\n return relayResult;\n }\n const certifiedResult = certifiedAddressesFirst(a, b);\n return certifiedResult;\n}\n//# sourceMappingURL=address-sort.js.map","import { RecordType } from '../index.js';\nexport function getTypes(types) {\n const DEFAULT_TYPES = [\n RecordType.A\n ];\n if (types == null) {\n return DEFAULT_TYPES;\n }\n if (Array.isArray(types)) {\n if (types.length === 0) {\n return DEFAULT_TYPES;\n }\n return types;\n }\n return [\n types\n ];\n}\n//# sourceMappingURL=get-types.js.map","import { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { RecordType } from '../index.js';\n/**\n * This TTL will be used if the remote service does not return one\n */\nexport const DEFAULT_TTL = 60;\nexport function toDNSResponse(obj) {\n return {\n Status: obj.Status ?? 0,\n TC: obj.TC ?? obj.flag_tc ?? false,\n RD: obj.RD ?? obj.flag_rd ?? false,\n RA: obj.RA ?? obj.flag_ra ?? false,\n AD: obj.AD ?? obj.flag_ad ?? false,\n CD: obj.CD ?? obj.flag_cd ?? false,\n Question: (obj.Question ?? obj.questions ?? []).map((question) => {\n return {\n name: question.name,\n type: RecordType[question.type]\n };\n }),\n Answer: (obj.Answer ?? obj.answers ?? []).map((answer) => {\n return {\n name: answer.name,\n type: RecordType[answer.type],\n TTL: (answer.TTL ?? answer.ttl ?? DEFAULT_TTL),\n data: answer.data instanceof Uint8Array ? uint8ArrayToString(answer.data) : answer.data\n };\n })\n };\n}\n//# sourceMappingURL=to-dns-response.js.map","/* eslint-env browser */\nimport PQueue from 'p-queue';\nimport { CustomProgressEvent } from 'progress-events';\nimport { RecordType } from '../index.js';\nimport { getTypes } from '../utils/get-types.js';\nimport { toDNSResponse } from '../utils/to-dns-response.js';\n/**\n * Browsers limit concurrent connections per host (~6), we don't want to exhaust\n * the limit so this value controls how many DNS queries can be in flight at\n * once.\n */\nexport const DEFAULT_QUERY_CONCURRENCY = 4;\n/**\n * Uses the RFC 8427 'application/dns-json' content-type to resolve DNS queries.\n *\n * Supports and server that uses the same schema as Google's DNS over HTTPS\n * resolver.\n *\n * This resolver needs fewer dependencies than the regular DNS-over-HTTPS\n * resolver so can result in a smaller bundle size and consequently is preferred\n * for browser use.\n *\n * @see https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https/make-api-requests/dns-json/\n * @see https://github.com/curl/curl/wiki/DNS-over-HTTPS#publicly-available-servers\n * @see https://dnsprivacy.org/public_resolvers/\n * @see https://datatracker.ietf.org/doc/html/rfc8427\n */\nexport function dnsJsonOverHttps(url, init = {}) {\n const httpQueue = new PQueue({\n concurrency: init.queryConcurrency ?? DEFAULT_QUERY_CONCURRENCY\n });\n return async (fqdn, options = {}) => {\n const searchParams = new URLSearchParams();\n searchParams.set('name', fqdn);\n getTypes(options.types).forEach(type => {\n // We pass record type as a string to the server because cloudflare DNS bug. see https://github.com/ipfs/helia/issues/474\n searchParams.append('type', RecordType[type]);\n });\n options.onProgress?.(new CustomProgressEvent('dns:query', { detail: fqdn }));\n // query DNS-JSON over HTTPS server\n const response = await httpQueue.add(async () => {\n const res = await fetch(`${url}?${searchParams}`, {\n headers: {\n accept: 'application/dns-json'\n },\n signal: options?.signal\n });\n if (res.status !== 200) {\n throw new Error(`Unexpected HTTP status: ${res.status} - ${res.statusText}`);\n }\n const response = toDNSResponse(await res.json());\n options.onProgress?.(new CustomProgressEvent('dns:response', { detail: response }));\n return response;\n }, {\n signal: options.signal\n });\n if (response == null) {\n throw new Error('No DNS response received');\n }\n return response;\n };\n}\n//# sourceMappingURL=dns-json-over-https.js.map","import { dnsJsonOverHttps } from './dns-json-over-https.js';\nexport function defaultResolver() {\n return [\n dnsJsonOverHttps('https://cloudflare-dns.com/dns-query'),\n dnsJsonOverHttps('https://dns.google/resolve')\n ];\n}\n//# sourceMappingURL=default.browser.js.map","import hashlru from 'hashlru';\nimport { RecordType } from '../index.js';\nimport { DEFAULT_TTL, toDNSResponse } from './to-dns-response.js';\n/**\n * Time Aware Least Recent Used Cache\n *\n * @see https://arxiv.org/pdf/1801.00390\n */\nclass CachedAnswers {\n lru;\n constructor(maxSize) {\n this.lru = hashlru(maxSize);\n }\n get(fqdn, types) {\n let foundAllAnswers = true;\n const answers = [];\n for (const type of types) {\n const cached = this.getAnswers(fqdn, type);\n if (cached.length === 0) {\n foundAllAnswers = false;\n break;\n }\n answers.push(...cached);\n }\n if (foundAllAnswers) {\n return toDNSResponse({ answers });\n }\n }\n getAnswers(domain, type) {\n const key = `${domain.toLowerCase()}-${type}`;\n const answers = this.lru.get(key);\n if (answers != null) {\n const cachedAnswers = answers\n .filter((entry) => {\n return entry.expires > Date.now();\n })\n .map(({ expires, value }) => ({\n ...value,\n TTL: Math.round((expires - Date.now()) / 1000),\n type: RecordType[value.type]\n }));\n if (cachedAnswers.length === 0) {\n this.lru.remove(key);\n }\n // @ts-expect-error hashlru stringifies stored types which turns enums\n // into strings, we convert back into enums above but tsc doesn't know\n return cachedAnswers;\n }\n return [];\n }\n add(domain, answer) {\n const key = `${domain.toLowerCase()}-${answer.type}`;\n const answers = this.lru.get(key) ?? [];\n answers.push({\n expires: Date.now() + ((answer.TTL ?? DEFAULT_TTL) * 1000),\n value: answer\n });\n this.lru.set(key, answers);\n }\n remove(domain, type) {\n const key = `${domain.toLowerCase()}-${type}`;\n this.lru.remove(key);\n }\n clear() {\n this.lru.clear();\n }\n}\n/**\n * Avoid sending multiple queries for the same hostname by caching results\n */\nexport function cache(size) {\n return new CachedAnswers(size);\n}\n//# sourceMappingURL=cache.js.map","import { CustomProgressEvent } from 'progress-events';\nimport { defaultResolver } from './resolvers/default.js';\nimport { cache } from './utils/cache.js';\nimport { getTypes } from './utils/get-types.js';\nconst DEFAULT_ANSWER_CACHE_SIZE = 1000;\nexport class DNS {\n resolvers;\n cache;\n constructor(init) {\n this.resolvers = {};\n this.cache = cache(init.cacheSize ?? DEFAULT_ANSWER_CACHE_SIZE);\n Object.entries(init.resolvers ?? {}).forEach(([tld, resolver]) => {\n if (!Array.isArray(resolver)) {\n resolver = [resolver];\n }\n // convert `com` -> `com.`\n if (!tld.endsWith('.')) {\n tld = `${tld}.`;\n }\n this.resolvers[tld] = resolver;\n });\n // configure default resolver if none specified\n if (this.resolvers['.'] == null) {\n this.resolvers['.'] = defaultResolver();\n }\n }\n /**\n * Queries DNS resolvers for the passed record types for the passed domain.\n *\n * If cached records exist for all desired types they will be returned\n * instead.\n *\n * Any new responses will be added to the cache for subsequent requests.\n */\n async query(domain, options = {}) {\n const types = getTypes(options.types);\n const cached = options.cached !== false ? this.cache.get(domain, types) : undefined;\n if (cached != null) {\n options.onProgress?.(new CustomProgressEvent('dns:cache', { detail: cached }));\n return cached;\n }\n const tld = `${domain.split('.').pop()}.`;\n const resolvers = (this.resolvers[tld] ?? this.resolvers['.']).sort(() => {\n return (Math.random() > 0.5) ? -1 : 1;\n });\n const errors = [];\n for (const resolver of resolvers) {\n // skip further resolutions if the user aborted the signal\n if (options.signal?.aborted === true) {\n break;\n }\n try {\n const result = await resolver(domain, {\n ...options,\n types\n });\n for (const answer of result.Answer) {\n this.cache.add(domain, answer);\n }\n return result;\n }\n catch (err) {\n errors.push(err);\n options.onProgress?.(new CustomProgressEvent('dns:error', { detail: err }));\n }\n }\n if (errors.length === 1) {\n throw errors[0];\n }\n throw new AggregateError(errors, `DNS lookup of ${domain} ${types} failed`);\n }\n}\n//# sourceMappingURL=dns.js.map","/**\n * @packageDocumentation\n *\n * Query DNS records using `node:dns`, DNS over HTTP and/or DNSJSON over HTTP.\n *\n * A list of publicly accessible servers can be found [here](https://github.com/curl/curl/wiki/DNS-over-HTTPS#publicly-available-servers).\n *\n * @example Using the default resolver\n *\n * ```TypeScript\n * import { dns } from '@multiformats/dns'\n *\n * const resolver = dns()\n *\n * // resolve A records with a 5s timeout\n * const result = await dns.query('google.com', {\n * signal: AbortSignal.timeout(5000)\n * })\n * ```\n *\n * @example Using per-TLD resolvers\n *\n * ```TypeScript\n * import { dns } from '@multiformats/dns'\n * import { dnsJsonOverHttps } from '@multiformats/dns/resolvers'\n *\n * const resolver = dns({\n * resolvers: {\n * // will only be used to resolve `.com` addresses\n * 'com.': dnsJsonOverHttps('https://cloudflare-dns.com/dns-query'),\n *\n * // this can also be an array, resolvers will be shuffled and tried in\n * // series\n * 'net.': [\n * dnsJsonOverHttps('https://dns.google/resolve'),\n * dnsJsonOverHttps('https://dns.pub/dns-query')\n * ],\n *\n * // will only be used to resolve all other addresses\n * '.': dnsJsonOverHttps('https://dnsforge.de/dns-query'),\n * }\n * })\n * ```\n *\n * @example Query for specific record types\n *\n * ```TypeScript\n * import { dns, RecordType } from '@multiformats/dns'\n *\n * const resolver = dns()\n *\n * // resolve only TXT records\n * const result = await dns.query('google.com', {\n * types: [\n * RecordType.TXT\n * ]\n * })\n * ```\n *\n * ## Caching\n *\n * Individual Aanswers are cached so. If you make a request, for which all\n * record types are cached, all values will be pulled from the cache.\n *\n * If any of the record types are not cached, a new request will be resolved as\n * if none of the records were cached, and the cache will be updated to include\n * the new results.\n *\n * @example Ignoring the cache\n *\n * ```TypeScript\n * import { dns, RecordType } from '@multiformats/dns'\n *\n * const resolver = dns()\n *\n * // do not used cached results, always resolve a new query\n * const result = await dns.query('google.com', {\n * cached: false\n * })\n * ```\n */\nimport { DNS as DNSClass } from './dns.js';\n/**\n * A subset of DNS Record Types\n *\n * @see https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-4.\n */\nexport var RecordType;\n(function (RecordType) {\n RecordType[RecordType[\"A\"] = 1] = \"A\";\n RecordType[RecordType[\"CNAME\"] = 5] = \"CNAME\";\n RecordType[RecordType[\"TXT\"] = 16] = \"TXT\";\n RecordType[RecordType[\"AAAA\"] = 28] = \"AAAA\";\n})(RecordType || (RecordType = {}));\n/**\n * The default maximum amount of recursion allowed during a query\n */\nexport const MAX_RECURSIVE_DEPTH = 32;\nexport function dns(init = {}) {\n return new DNSClass(init);\n}\n//# sourceMappingURL=index.js.map","import { dns, RecordType } from '@multiformats/dns';\nimport { multiaddr } from '../index.js';\nimport { getProtocol } from '../protocols-table.js';\nconst MAX_RECURSIVE_DEPTH = 32;\nconst { code: dnsaddrCode } = getProtocol('dnsaddr');\nclass RecursionLimitError extends Error {\n constructor(message = 'Max recursive depth reached') {\n super(message);\n this.name = 'RecursionLimitError';\n }\n}\nexport const dnsaddrResolver = async function dnsaddrResolver(ma, options = {}) {\n const recursionLimit = options.maxRecursiveDepth ?? MAX_RECURSIVE_DEPTH;\n if (recursionLimit === 0) {\n throw new RecursionLimitError('Max recursive depth reached');\n }\n const [, hostname] = ma.stringTuples().find(([proto]) => proto === dnsaddrCode) ?? [];\n const resolver = options?.dns ?? dns();\n const result = await resolver.query(`_dnsaddr.${hostname}`, {\n signal: options?.signal,\n types: [\n RecordType.TXT\n ]\n });\n const peerId = ma.getPeerId();\n const output = [];\n for (const answer of result.Answer) {\n const addr = answer.data\n .replace(/[\"']/g, '')\n .trim()\n .split('=')[1];\n if (addr == null) {\n continue;\n }\n if (peerId != null && !addr.includes(peerId)) {\n continue;\n }\n const ma = multiaddr(addr);\n if (addr.startsWith('/dnsaddr')) {\n const resolved = await ma.resolve({\n ...options,\n maxRecursiveDepth: recursionLimit - 1\n });\n output.push(...resolved.map(ma => ma.toString()));\n }\n else {\n output.push(ma.toString());\n }\n }\n return output;\n};\n//# sourceMappingURL=dnsaddr.js.map","export var messages;\n(function (messages) {\n messages[\"NOT_STARTED_YET\"] = \"The libp2p node is not started yet\";\n messages[\"ERR_PROTECTOR_REQUIRED\"] = \"Private network is enforced, but no protector was provided\";\n messages[\"NOT_FOUND\"] = \"Not found\";\n})(messages || (messages = {}));\nexport var codes;\n(function (codes) {\n codes[\"ERR_PROTECTOR_REQUIRED\"] = \"ERR_PROTECTOR_REQUIRED\";\n codes[\"ERR_PEER_DIAL_INTERCEPTED\"] = \"ERR_PEER_DIAL_INTERCEPTED\";\n codes[\"ERR_CONNECTION_INTERCEPTED\"] = \"ERR_CONNECTION_INTERCEPTED\";\n codes[\"ERR_INVALID_PROTOCOLS_FOR_STREAM\"] = \"ERR_INVALID_PROTOCOLS_FOR_STREAM\";\n codes[\"ERR_CONNECTION_ENDED\"] = \"ERR_CONNECTION_ENDED\";\n codes[\"ERR_CONNECTION_FAILED\"] = \"ERR_CONNECTION_FAILED\";\n codes[\"ERR_NODE_NOT_STARTED\"] = \"ERR_NODE_NOT_STARTED\";\n codes[\"ERR_ALREADY_ABORTED\"] = \"ERR_ALREADY_ABORTED\";\n codes[\"ERR_TOO_MANY_ADDRESSES\"] = \"ERR_TOO_MANY_ADDRESSES\";\n codes[\"ERR_NO_VALID_ADDRESSES\"] = \"ERR_NO_VALID_ADDRESSES\";\n codes[\"ERR_RELAYED_DIAL\"] = \"ERR_RELAYED_DIAL\";\n codes[\"ERR_DIALED_SELF\"] = \"ERR_DIALED_SELF\";\n codes[\"ERR_DISCOVERED_SELF\"] = \"ERR_DISCOVERED_SELF\";\n codes[\"ERR_DUPLICATE_TRANSPORT\"] = \"ERR_DUPLICATE_TRANSPORT\";\n codes[\"ERR_ENCRYPTION_FAILED\"] = \"ERR_ENCRYPTION_FAILED\";\n codes[\"ERR_HOP_REQUEST_FAILED\"] = \"ERR_HOP_REQUEST_FAILED\";\n codes[\"ERR_INVALID_KEY\"] = \"ERR_INVALID_KEY\";\n codes[\"ERR_INVALID_MESSAGE\"] = \"ERR_INVALID_MESSAGE\";\n codes[\"ERR_INVALID_PARAMETERS\"] = \"ERR_INVALID_PARAMETERS\";\n codes[\"ERR_INVALID_PEER\"] = \"ERR_INVALID_PEER\";\n codes[\"ERR_MUXER_UNAVAILABLE\"] = \"ERR_MUXER_UNAVAILABLE\";\n codes[\"ERR_NOT_FOUND\"] = \"ERR_NOT_FOUND\";\n codes[\"ERR_TRANSPORT_UNAVAILABLE\"] = \"ERR_TRANSPORT_UNAVAILABLE\";\n codes[\"ERR_TRANSPORT_DIAL_FAILED\"] = \"ERR_TRANSPORT_DIAL_FAILED\";\n codes[\"ERR_UNSUPPORTED_PROTOCOL\"] = \"ERR_UNSUPPORTED_PROTOCOL\";\n codes[\"ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED\"] = \"ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED\";\n codes[\"ERR_INVALID_MULTIADDR\"] = \"ERR_INVALID_MULTIADDR\";\n codes[\"ERR_SIGNATURE_NOT_VALID\"] = \"ERR_SIGNATURE_NOT_VALID\";\n codes[\"ERR_FIND_SELF\"] = \"ERR_FIND_SELF\";\n codes[\"ERR_NO_ROUTERS_AVAILABLE\"] = \"ERR_NO_ROUTERS_AVAILABLE\";\n codes[\"ERR_CONNECTION_NOT_MULTIPLEXED\"] = \"ERR_CONNECTION_NOT_MULTIPLEXED\";\n codes[\"ERR_NO_DIAL_TOKENS\"] = \"ERR_NO_DIAL_TOKENS\";\n codes[\"ERR_INVALID_CMS\"] = \"ERR_INVALID_CMS\";\n codes[\"ERR_MISSING_KEYS\"] = \"ERR_MISSING_KEYS\";\n codes[\"ERR_NO_KEY\"] = \"ERR_NO_KEY\";\n codes[\"ERR_INVALID_KEY_NAME\"] = \"ERR_INVALID_KEY_NAME\";\n codes[\"ERR_INVALID_KEY_TYPE\"] = \"ERR_INVALID_KEY_TYPE\";\n codes[\"ERR_KEY_ALREADY_EXISTS\"] = \"ERR_KEY_ALREADY_EXISTS\";\n codes[\"ERR_INVALID_KEY_SIZE\"] = \"ERR_INVALID_KEY_SIZE\";\n codes[\"ERR_KEY_NOT_FOUND\"] = \"ERR_KEY_NOT_FOUND\";\n codes[\"ERR_OLD_KEY_NAME_INVALID\"] = \"ERR_OLD_KEY_NAME_INVALID\";\n codes[\"ERR_NEW_KEY_NAME_INVALID\"] = \"ERR_NEW_KEY_NAME_INVALID\";\n codes[\"ERR_PASSWORD_REQUIRED\"] = \"ERR_PASSWORD_REQUIRED\";\n codes[\"ERR_PEM_REQUIRED\"] = \"ERR_PEM_REQUIRED\";\n codes[\"ERR_CANNOT_READ_KEY\"] = \"ERR_CANNOT_READ_KEY\";\n codes[\"ERR_MISSING_PRIVATE_KEY\"] = \"ERR_MISSING_PRIVATE_KEY\";\n codes[\"ERR_MISSING_PUBLIC_KEY\"] = \"ERR_MISSING_PUBLIC_KEY\";\n codes[\"ERR_INVALID_OLD_PASS_TYPE\"] = \"ERR_INVALID_OLD_PASS_TYPE\";\n codes[\"ERR_INVALID_NEW_PASS_TYPE\"] = \"ERR_INVALID_NEW_PASS_TYPE\";\n codes[\"ERR_INVALID_PASS_LENGTH\"] = \"ERR_INVALID_PASS_LENGTH\";\n codes[\"ERR_NOT_IMPLEMENTED\"] = \"ERR_NOT_IMPLEMENTED\";\n codes[\"ERR_WRONG_PING_ACK\"] = \"ERR_WRONG_PING_ACK\";\n codes[\"ERR_INVALID_RECORD\"] = \"ERR_INVALID_RECORD\";\n codes[\"ERR_ALREADY_SUCCEEDED\"] = \"ERR_ALREADY_SUCCEEDED\";\n codes[\"ERR_NO_HANDLER_FOR_PROTOCOL\"] = \"ERR_NO_HANDLER_FOR_PROTOCOL\";\n codes[\"ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS\"] = \"ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS\";\n codes[\"ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS\"] = \"ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS\";\n codes[\"ERR_CONNECTION_DENIED\"] = \"ERR_CONNECTION_DENIED\";\n codes[\"ERR_TRANSFER_LIMIT_EXCEEDED\"] = \"ERR_TRANSFER_LIMIT_EXCEEDED\";\n})(codes || (codes = {}));\n//# sourceMappingURL=errors.js.map","import { CodeError, FaultTolerance } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { defaultAddressSort } from '@libp2p/utils/address-sort';\nimport { dnsaddrResolver } from '@multiformats/multiaddr/resolvers';\nimport mergeOptions from 'merge-options';\nimport { codes, messages } from './errors.js';\nconst DefaultConfig = {\n addresses: {\n listen: [],\n announce: [],\n noAnnounce: [],\n announceFilter: (multiaddrs) => multiaddrs\n },\n connectionManager: {\n resolvers: {\n dnsaddr: dnsaddrResolver\n },\n addressSorter: defaultAddressSort\n },\n transportManager: {\n faultTolerance: FaultTolerance.FATAL_ALL\n }\n};\nexport async function validateConfig(opts) {\n const resultingOptions = mergeOptions(DefaultConfig, opts);\n if (resultingOptions.connectionProtector === null && globalThis.process?.env?.LIBP2P_FORCE_PNET != null) { // eslint-disable-line no-undef\n throw new CodeError(messages.ERR_PROTECTOR_REQUIRED, codes.ERR_PROTECTOR_REQUIRED);\n }\n if (resultingOptions.privateKey != null && !(await peerIdFromKeys(resultingOptions.privateKey.public.bytes, resultingOptions.privateKey.bytes)).equals(resultingOptions.peerId)) {\n throw new CodeError('Private key doesn\\'t match peer id', codes.ERR_INVALID_KEY);\n }\n return resultingOptions;\n}\n//# sourceMappingURL=config.js.map","import { CodeError, isPeerId } from '@libp2p/interface';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { isMultiaddr } from '@multiformats/multiaddr';\nimport { codes } from './errors.js';\n/**\n * Extracts a PeerId and/or multiaddr from the passed PeerId or Multiaddr or an array of Multiaddrs\n */\nexport function getPeerAddress(peer) {\n if (isPeerId(peer)) {\n return { peerId: peer, multiaddrs: [] };\n }\n if (!Array.isArray(peer)) {\n peer = [peer];\n }\n let peerId;\n if (peer.length > 0) {\n const peerIdStr = peer[0].getPeerId();\n peerId = peerIdStr == null ? undefined : peerIdFromString(peerIdStr);\n // ensure PeerId is either not set or is consistent\n peer.forEach(ma => {\n if (!isMultiaddr(ma)) {\n throw new CodeError('Invalid Multiaddr', codes.ERR_INVALID_MULTIADDR);\n }\n const maPeerIdStr = ma.getPeerId();\n if (maPeerIdStr == null) {\n if (peerId != null) {\n throw new CodeError('Multiaddrs must all have the same peer id or have no peer id', codes.ERR_INVALID_PARAMETERS);\n }\n }\n else {\n const maPeerId = peerIdFromString(maPeerIdStr);\n if (peerId?.equals(maPeerId) !== true) {\n throw new CodeError('Multiaddrs must all have the same peer id or have no peer id', codes.ERR_INVALID_PARAMETERS);\n }\n }\n });\n }\n return {\n peerId,\n multiaddrs: peer\n };\n}\n//# sourceMappingURL=get-peer.js.map","/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#dialTimeout\n */\nexport const DIAL_TIMEOUT = 5e3;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#inboundUpgradeTimeout\n */\nexport const INBOUND_UPGRADE_TIMEOUT = 2e3;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxPeerAddrsToDial\n */\nexport const MAX_PEER_ADDRS_TO_DIAL = 25;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#autoDialInterval\n */\nexport const AUTO_DIAL_INTERVAL = 5000;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#autoDialConcurrency\n */\nexport const AUTO_DIAL_CONCURRENCY = 25;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#autoDialPriority\n */\nexport const AUTO_DIAL_PRIORITY = 0;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#autoDialMaxQueueLength\n */\nexport const AUTO_DIAL_MAX_QUEUE_LENGTH = 100;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/libp2p.index.unknown.ConnectionManagerInit.html#autoDialDiscoveredPeersDebounce\n */\nexport const AUTO_DIAL_DISCOVERED_PEERS_DEBOUNCE = 10;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#inboundConnectionThreshold\n */\nexport const INBOUND_CONNECTION_THRESHOLD = 5;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxIncomingPendingConnections\n */\nexport const MAX_INCOMING_PENDING_CONNECTIONS = 10;\n/**\n * Store as part of the peer store metadata for a given peer, the value for this\n * key is a timestamp of the last time a dial attempted failed with the relevant\n * peer stored as a string.\n *\n * Used to insure we do not endlessly try to auto dial peers we have recently\n * failed to dial.\n */\nexport const LAST_DIAL_FAILURE_KEY = 'last-dial-failure';\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxDialQueueLength\n */\nexport const MAX_DIAL_QUEUE_LENGTH = 500;\n//# sourceMappingURL=constants.defaults.js.map","export * from './constants.defaults.js';\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#minConnections\n */\nexport const MIN_CONNECTIONS = 5;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxConnections\n */\nexport const MAX_CONNECTIONS = 100;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxParallelDials\n */\nexport const MAX_PARALLEL_DIALS = 50;\n/**\n * @see https://libp2p.github.io/js-libp2p/interfaces/libp2p.index.unknown.ConnectionManagerInit.html#autoDialPeerRetryThreshold\n */\nexport const AUTO_DIAL_PEER_RETRY_THRESHOLD = 1000 * 60 * 7;\n//# sourceMappingURL=constants.browser.js.map","import { PeerMap, PeerSet } from '@libp2p/peer-collections';\nimport { PeerQueue } from '@libp2p/utils/peer-queue';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nimport { AUTO_DIAL_CONCURRENCY, AUTO_DIAL_DISCOVERED_PEERS_DEBOUNCE, AUTO_DIAL_INTERVAL, AUTO_DIAL_MAX_QUEUE_LENGTH, AUTO_DIAL_PEER_RETRY_THRESHOLD, AUTO_DIAL_PRIORITY, LAST_DIAL_FAILURE_KEY, MIN_CONNECTIONS } from './constants.js';\nconst defaultOptions = {\n minConnections: MIN_CONNECTIONS,\n maxQueueLength: AUTO_DIAL_MAX_QUEUE_LENGTH,\n autoDialConcurrency: AUTO_DIAL_CONCURRENCY,\n autoDialPriority: AUTO_DIAL_PRIORITY,\n autoDialInterval: AUTO_DIAL_INTERVAL,\n autoDialPeerRetryThreshold: AUTO_DIAL_PEER_RETRY_THRESHOLD,\n autoDialDiscoveredPeersDebounce: AUTO_DIAL_DISCOVERED_PEERS_DEBOUNCE\n};\nexport class AutoDial {\n connectionManager;\n peerStore;\n queue;\n minConnections;\n autoDialPriority;\n autoDialIntervalMs;\n autoDialMaxQueueLength;\n autoDialPeerRetryThresholdMs;\n autoDialDiscoveredPeersDebounce;\n autoDialInterval;\n started;\n running;\n log;\n /**\n * Proactively tries to connect to known peers stored in the PeerStore.\n * It will keep the number of connections below the upper limit and sort\n * the peers to connect based on whether we know their keys and protocols.\n */\n constructor(components, init) {\n this.connectionManager = components.connectionManager;\n this.peerStore = components.peerStore;\n this.minConnections = init.minConnections ?? defaultOptions.minConnections;\n this.autoDialPriority = init.autoDialPriority ?? defaultOptions.autoDialPriority;\n this.autoDialIntervalMs = init.autoDialInterval ?? defaultOptions.autoDialInterval;\n this.autoDialMaxQueueLength = init.maxQueueLength ?? defaultOptions.maxQueueLength;\n this.autoDialPeerRetryThresholdMs = init.autoDialPeerRetryThreshold ?? defaultOptions.autoDialPeerRetryThreshold;\n this.autoDialDiscoveredPeersDebounce = init.autoDialDiscoveredPeersDebounce ?? defaultOptions.autoDialDiscoveredPeersDebounce;\n this.log = components.logger.forComponent('libp2p:connection-manager:auto-dial');\n this.started = false;\n this.running = false;\n this.queue = new PeerQueue({\n concurrency: init.autoDialConcurrency ?? defaultOptions.autoDialConcurrency,\n metricName: 'libp2p_autodial_queue',\n metrics: components.metrics\n });\n this.queue.addEventListener('error', (evt) => {\n this.log.error('error during auto-dial', evt.detail);\n });\n // check the min connection limit whenever a peer disconnects\n components.events.addEventListener('connection:close', () => {\n this.autoDial()\n .catch(err => {\n this.log.error(err);\n });\n });\n // sometimes peers are discovered in quick succession so add a small\n // debounce to ensure all eligible peers are autodialed\n let debounce;\n // when new peers are discovered, dial them if we don't have\n // enough connections\n components.events.addEventListener('peer:discovery', () => {\n clearTimeout(debounce);\n debounce = setTimeout(() => {\n this.autoDial()\n .catch(err => {\n this.log.error(err);\n });\n }, this.autoDialDiscoveredPeersDebounce);\n });\n }\n isStarted() {\n return this.started;\n }\n start() {\n this.started = true;\n }\n afterStart() {\n this.autoDial()\n .catch(err => {\n this.log.error('error while autodialing', err);\n });\n }\n stop() {\n // clear the queue\n this.queue.clear();\n clearTimeout(this.autoDialInterval);\n this.started = false;\n this.running = false;\n }\n async autoDial() {\n if (!this.started || this.running) {\n return;\n }\n const connections = this.connectionManager.getConnectionsMap();\n const numConnections = connections.size;\n // already have enough connections\n if (numConnections >= this.minConnections) {\n if (this.minConnections > 0) {\n this.log.trace('have enough connections %d/%d', numConnections, this.minConnections);\n }\n // no need to schedule next autodial as it will be run when on\n // connection:close event\n return;\n }\n if (this.queue.size > this.autoDialMaxQueueLength) {\n this.log('not enough connections %d/%d but auto dial queue is full', numConnections, this.minConnections);\n this.sheduleNextAutodial();\n return;\n }\n this.running = true;\n this.log('not enough connections %d/%d - will dial peers to increase the number of connections', numConnections, this.minConnections);\n const dialQueue = new PeerSet(\n // @ts-expect-error boolean filter removes falsy peer IDs\n this.connectionManager.getDialQueue()\n .map(queue => queue.peerId)\n .filter(Boolean));\n // sort peers on whether we know protocols or public keys for them\n const peers = await this.peerStore.all({\n filters: [\n // remove some peers\n (peer) => {\n // remove peers without addresses\n if (peer.addresses.length === 0) {\n this.log.trace('not autodialing %p because they have no addresses', peer.id);\n return false;\n }\n // remove peers we are already connected to\n if (connections.has(peer.id)) {\n this.log.trace('not autodialing %p because they are already connected', peer.id);\n return false;\n }\n // remove peers we are already dialling\n if (dialQueue.has(peer.id)) {\n this.log.trace('not autodialing %p because they are already being dialed', peer.id);\n return false;\n }\n // remove peers already in the autodial queue\n if (this.queue.has(peer.id)) {\n this.log.trace('not autodialing %p because they are already being autodialed', peer.id);\n return false;\n }\n return true;\n }\n ]\n });\n // shuffle the peers - this is so peers with the same tag values will be\n // dialled in a different order each time\n const shuffledPeers = peers.sort(() => Math.random() > 0.5 ? 1 : -1);\n // sort shuffled peers by tag value\n const peerValues = new PeerMap();\n for (const peer of shuffledPeers) {\n if (peerValues.has(peer.id)) {\n continue;\n }\n // sum all tag values\n peerValues.set(peer.id, [...peer.tags.values()].reduce((acc, curr) => {\n return acc + curr.value;\n }, 0));\n }\n // sort by value, highest to lowest\n const sortedPeers = shuffledPeers.sort((a, b) => {\n const peerAValue = peerValues.get(a.id) ?? 0;\n const peerBValue = peerValues.get(b.id) ?? 0;\n if (peerAValue > peerBValue) {\n return -1;\n }\n if (peerAValue < peerBValue) {\n return 1;\n }\n return 0;\n });\n const peersThatHaveNotFailed = sortedPeers.filter(peer => {\n const lastDialFailure = peer.metadata.get(LAST_DIAL_FAILURE_KEY);\n if (lastDialFailure == null) {\n return true;\n }\n const lastDialFailureTimestamp = parseInt(uint8ArrayToString(lastDialFailure));\n if (isNaN(lastDialFailureTimestamp)) {\n return true;\n }\n // only dial if the time since the last failure is above the retry threshold\n return Date.now() - lastDialFailureTimestamp > this.autoDialPeerRetryThresholdMs;\n });\n this.log('selected %d/%d peers to dial', peersThatHaveNotFailed.length, peers.length);\n for (const peer of peersThatHaveNotFailed) {\n this.queue.add(async () => {\n const numConnections = this.connectionManager.getConnectionsMap().size;\n // Check to see if we still need to auto dial\n if (numConnections >= this.minConnections) {\n this.log('got enough connections now %d/%d', numConnections, this.minConnections);\n this.queue.clear();\n return;\n }\n this.log('connecting to a peerStore stored peer %p', peer.id);\n await this.connectionManager.openConnection(peer.id, {\n priority: this.autoDialPriority\n });\n }, {\n peerId: peer.id\n }).catch(err => {\n this.log.error('could not connect to peerStore stored peer', err);\n });\n }\n this.running = false;\n this.sheduleNextAutodial();\n }\n sheduleNextAutodial() {\n if (!this.started) {\n return;\n }\n this.autoDialInterval = setTimeout(() => {\n this.autoDial()\n .catch(err => {\n this.log.error('error while autodialing', err);\n });\n }, this.autoDialIntervalMs);\n }\n}\n//# sourceMappingURL=auto-dial.js.map","/**\n * Close the passed stream, falling back to aborting the stream if closing\n * cleanly fails.\n */\nexport async function safelyCloseStream(stream, options) {\n try {\n await stream?.close(options);\n }\n catch (err) {\n stream?.abort(err);\n }\n}\n/**\n * These are speculative protocols that are run automatically on connection open\n * so are usually not the reason the connection was opened.\n *\n * Consequently when requested it should be safe to close connections that only\n * have these protocol streams open.\n */\nconst DEFAULT_CLOSABLE_PROTOCOLS = [\n // identify\n '/ipfs/id/1.0.0',\n // identify-push\n '/ipfs/id/push/1.0.0',\n // autonat\n '/libp2p/autonat/1.0.0',\n // dcutr\n '/libp2p/dcutr'\n];\n/**\n * Close the passed connection if it has no streams, or only closable protocol\n * streams, falling back to aborting the connection if closing it cleanly fails.\n */\nexport async function safelyCloseConnectionIfUnused(connection, options) {\n const streamProtocols = connection?.streams?.map(stream => stream.protocol) ?? [];\n const closableProtocols = options?.closableProtocols ?? DEFAULT_CLOSABLE_PROTOCOLS;\n // if the connection has protocols not in the closable protocols list, do not\n // close the connection\n if (streamProtocols.filter(proto => proto != null && !closableProtocols.includes(proto)).length > 0) {\n return;\n }\n try {\n await connection?.close(options);\n }\n catch (err) {\n connection?.abort(err);\n }\n}\n//# sourceMappingURL=close.js.map","import { PeerMap } from '@libp2p/peer-collections';\nimport { safelyCloseConnectionIfUnused } from '@libp2p/utils/close';\nimport { MAX_CONNECTIONS } from './constants.js';\nconst defaultOptions = {\n maxConnections: MAX_CONNECTIONS,\n allow: []\n};\n/**\n * If we go over the max connections limit, choose some connections to close\n */\nexport class ConnectionPruner {\n maxConnections;\n connectionManager;\n peerStore;\n allow;\n events;\n log;\n constructor(components, init = {}) {\n this.maxConnections = init.maxConnections ?? defaultOptions.maxConnections;\n this.allow = init.allow ?? defaultOptions.allow;\n this.connectionManager = components.connectionManager;\n this.peerStore = components.peerStore;\n this.events = components.events;\n this.log = components.logger.forComponent('libp2p:connection-manager:connection-pruner');\n // check the max connection limit whenever a peer connects\n components.events.addEventListener('connection:open', () => {\n this.maybePruneConnections()\n .catch(err => {\n this.log.error(err);\n });\n });\n }\n /**\n * If we have more connections than our maximum, select some excess connections\n * to prune based on peer value\n */\n async maybePruneConnections() {\n const connections = this.connectionManager.getConnections();\n const numConnections = connections.length;\n this.log('checking max connections limit %d/%d', numConnections, this.maxConnections);\n if (numConnections <= this.maxConnections) {\n return;\n }\n const peerValues = new PeerMap();\n // work out peer values\n for (const connection of connections) {\n const remotePeer = connection.remotePeer;\n if (peerValues.has(remotePeer)) {\n continue;\n }\n peerValues.set(remotePeer, 0);\n try {\n const peer = await this.peerStore.get(remotePeer);\n // sum all tag values\n peerValues.set(remotePeer, [...peer.tags.values()].reduce((acc, curr) => {\n return acc + curr.value;\n }, 0));\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n this.log.error('error loading peer tags', err);\n }\n }\n }\n const sortedConnections = this.sortConnections(connections, peerValues);\n // close some connections\n const toPrune = Math.max(numConnections - this.maxConnections, 0);\n const toClose = [];\n for (const connection of sortedConnections) {\n this.log('too many connections open - closing a connection to %p', connection.remotePeer);\n // check allow list\n const connectionInAllowList = this.allow.some((ma) => {\n return connection.remoteAddr.toString().startsWith(ma.toString());\n });\n // Connections in the allow list should be excluded from pruning\n if (!connectionInAllowList) {\n toClose.push(connection);\n }\n if (toClose.length === toPrune) {\n break;\n }\n }\n // close connections\n await Promise.all(toClose.map(async (connection) => {\n await safelyCloseConnectionIfUnused(connection, {\n signal: AbortSignal.timeout(1000)\n });\n }));\n // despatch prune event\n this.events.safeDispatchEvent('connection:prune', { detail: toClose });\n }\n sortConnections(connections, peerValues) {\n return connections\n // sort by connection age, newest to oldest\n .sort((a, b) => {\n const connectionALifespan = a.timeline.open;\n const connectionBLifespan = b.timeline.open;\n if (connectionALifespan < connectionBLifespan) {\n return 1;\n }\n if (connectionALifespan > connectionBLifespan) {\n return -1;\n }\n return 0;\n })\n // sort by direction, incoming first then outgoing\n .sort((a, b) => {\n if (a.direction === 'outbound' && b.direction === 'inbound') {\n return 1;\n }\n if (a.direction === 'inbound' && b.direction === 'outbound') {\n return -1;\n }\n return 0;\n })\n // sort by number of streams, lowest to highest\n .sort((a, b) => {\n if (a.streams.length > b.streams.length) {\n return 1;\n }\n if (a.streams.length < b.streams.length) {\n return -1;\n }\n return 0;\n })\n // sort by tag value, lowest to highest\n .sort((a, b) => {\n const peerAValue = peerValues.get(a.remotePeer) ?? 0;\n const peerBValue = peerValues.get(b.remotePeer) ?? 0;\n if (peerAValue > peerBValue) {\n return 1;\n }\n if (peerAValue < peerBValue) {\n return -1;\n }\n return 0;\n });\n }\n}\n//# sourceMappingURL=connection-pruner.js.map","import { Queue } from './queue/index.js';\nexport class PriorityQueue extends Queue {\n constructor(init = {}) {\n super({\n ...init,\n sort: (a, b) => {\n if (a.options.priority > b.options.priority) {\n return -1;\n }\n if (a.options.priority < b.options.priority) {\n return 1;\n }\n return 0;\n }\n });\n }\n}\n//# sourceMappingURL=priority-queue.js.map","import { resolvers } from '@multiformats/multiaddr';\n/**\n * Recursively resolve DNSADDR multiaddrs\n */\nexport async function resolveMultiaddrs(ma, options) {\n // check multiaddr resolvers\n let resolvable = false;\n for (const key of resolvers.keys()) {\n resolvable = ma.protoNames().includes(key);\n if (resolvable) {\n break;\n }\n }\n // return multiaddr if it is not resolvable\n if (!resolvable) {\n return [ma];\n }\n const output = await ma.resolve(options);\n options.log('resolved %s to', ma, output.map(ma => ma.toString()));\n return output;\n}\n//# sourceMappingURL=utils.js.map","/* eslint-disable max-depth */\nimport { CodeError, AggregateCodeError, ERR_TIMEOUT, setMaxListeners } from '@libp2p/interface';\nimport { PeerMap } from '@libp2p/peer-collections';\nimport { defaultAddressSort } from '@libp2p/utils/address-sort';\nimport { PriorityQueue } from '@libp2p/utils/priority-queue';\nimport { resolvers, multiaddr } from '@multiformats/multiaddr';\nimport { dnsaddrResolver } from '@multiformats/multiaddr/resolvers';\nimport { Circuit } from '@multiformats/multiaddr-matcher';\nimport { anySignal } from 'any-signal';\nimport { CustomProgressEvent } from 'progress-events';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { codes } from '../errors.js';\nimport { getPeerAddress } from '../get-peer.js';\nimport { DIAL_TIMEOUT, MAX_PARALLEL_DIALS, MAX_PEER_ADDRS_TO_DIAL, LAST_DIAL_FAILURE_KEY, MAX_DIAL_QUEUE_LENGTH } from './constants.js';\nimport { resolveMultiaddrs } from './utils.js';\nimport { DEFAULT_DIAL_PRIORITY } from './index.js';\nconst defaultOptions = {\n addressSorter: defaultAddressSort,\n maxParallelDials: MAX_PARALLEL_DIALS,\n maxDialQueueLength: MAX_DIAL_QUEUE_LENGTH,\n maxPeerAddrsToDial: MAX_PEER_ADDRS_TO_DIAL,\n dialTimeout: DIAL_TIMEOUT,\n resolvers: {\n dnsaddr: dnsaddrResolver\n }\n};\nexport class DialQueue {\n queue;\n components;\n addressSorter;\n maxPeerAddrsToDial;\n maxDialQueueLength;\n dialTimeout;\n shutDownController;\n connections;\n log;\n constructor(components, init = {}) {\n this.addressSorter = init.addressSorter ?? defaultOptions.addressSorter;\n this.maxPeerAddrsToDial = init.maxPeerAddrsToDial ?? defaultOptions.maxPeerAddrsToDial;\n this.maxDialQueueLength = init.maxDialQueueLength ?? defaultOptions.maxDialQueueLength;\n this.dialTimeout = init.dialTimeout ?? defaultOptions.dialTimeout;\n this.connections = init.connections ?? new PeerMap();\n this.log = components.logger.forComponent('libp2p:connection-manager:dial-queue');\n this.components = components;\n this.shutDownController = new AbortController();\n setMaxListeners(Infinity, this.shutDownController.signal);\n for (const [key, value] of Object.entries(init.resolvers ?? {})) {\n resolvers.set(key, value);\n }\n // controls dial concurrency\n this.queue = new PriorityQueue({\n concurrency: init.maxParallelDials ?? defaultOptions.maxParallelDials,\n metricName: 'libp2p_dial_queue',\n metrics: components.metrics\n });\n // a started job errored\n this.queue.addEventListener('error', (event) => {\n this.log.error('error in dial queue', event.detail);\n });\n }\n start() {\n this.shutDownController = new AbortController();\n setMaxListeners(Infinity, this.shutDownController.signal);\n }\n /**\n * Clears any pending dials\n */\n stop() {\n this.shutDownController.abort();\n this.queue.abort();\n }\n /**\n * Connects to a given peer, multiaddr or list of multiaddrs.\n *\n * If a peer is passed, all known multiaddrs will be tried. If a multiaddr or\n * multiaddrs are passed only those will be dialled.\n *\n * Where a list of multiaddrs is passed, if any contain a peer id then all\n * multiaddrs in the list must contain the same peer id.\n *\n * The dial to the first address that is successfully able to upgrade a\n * connection will be used, all other dials will be aborted when that happens.\n */\n async dial(peerIdOrMultiaddr, options = {}) {\n const { peerId, multiaddrs } = getPeerAddress(peerIdOrMultiaddr);\n // make sure we don't have an existing connection to any of the addresses we\n // are about to dial\n const existingConnection = Array.from(this.connections.values()).flat().find(conn => {\n if (options.force === true) {\n return false;\n }\n if (conn.remotePeer.equals(peerId)) {\n return true;\n }\n return multiaddrs.find(addr => {\n return addr.equals(conn.remoteAddr);\n });\n });\n if (existingConnection != null) {\n this.log('already connected to %a', existingConnection.remoteAddr);\n options.onProgress?.(new CustomProgressEvent('dial-queue:already-connected'));\n return existingConnection;\n }\n // ready to dial, all async work finished - make sure we don't have any\n // pending dials in progress for this peer or set of multiaddrs\n const existingDial = this.queue.queue.find(job => {\n if (peerId?.equals(job.options.peerId) === true) {\n return true;\n }\n // does the dial contain any of the target multiaddrs?\n const addresses = job.options.multiaddrs;\n if (addresses == null) {\n return false;\n }\n for (const multiaddr of multiaddrs) {\n if (addresses.has(multiaddr.toString())) {\n return true;\n }\n }\n return false;\n });\n if (existingDial != null) {\n this.log('joining existing dial target for %p', peerId);\n // add all multiaddrs to the dial target\n for (const multiaddr of multiaddrs) {\n existingDial.options.multiaddrs.add(multiaddr.toString());\n }\n options.onProgress?.(new CustomProgressEvent('dial-queue:already-in-dial-queue'));\n return existingDial.join(options);\n }\n if (this.queue.size >= this.maxDialQueueLength) {\n throw new CodeError('Dial queue is full', 'ERR_DIAL_QUEUE_FULL');\n }\n this.log('creating dial target for %p', peerId, multiaddrs.map(ma => ma.toString()));\n options.onProgress?.(new CustomProgressEvent('dial-queue:add-to-dial-queue'));\n return this.queue.add(async (options) => {\n options?.onProgress?.(new CustomProgressEvent('dial-queue:start-dial'));\n // create abort conditions - need to do this before `calculateMultiaddrs` as\n // we may be about to resolve a dns addr which can time out\n const signal = this.createDialAbortController(options?.signal);\n let addrsToDial;\n try {\n // load addresses from address book, resolve and dnsaddrs, filter\n // undiallables, add peer IDs, etc\n addrsToDial = await this.calculateMultiaddrs(peerId, options?.multiaddrs, {\n ...options,\n signal\n });\n options?.onProgress?.(new CustomProgressEvent('dial-queue:calculated-addresses', addrsToDial));\n addrsToDial.map(({ multiaddr }) => multiaddr.toString()).forEach(addr => {\n options?.multiaddrs.add(addr);\n });\n }\n catch (err) {\n signal.clear();\n throw err;\n }\n try {\n let dialed = 0;\n const errors = [];\n for (const address of addrsToDial) {\n if (dialed === this.maxPeerAddrsToDial) {\n this.log('dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others', dialed, peerId);\n throw new CodeError('Peer had more than maxPeerAddrsToDial', codes.ERR_TOO_MANY_ADDRESSES);\n }\n dialed++;\n try {\n const conn = await this.components.transportManager.dial(address.multiaddr, {\n ...options,\n signal\n });\n this.log('dial to %a succeeded', address.multiaddr);\n return conn;\n }\n catch (err) {\n this.log.error('dial failed to %a', address.multiaddr, err);\n if (peerId != null) {\n // record the failed dial\n try {\n await this.components.peerStore.patch(peerId, {\n metadata: {\n [LAST_DIAL_FAILURE_KEY]: uint8ArrayFromString(Date.now().toString())\n }\n });\n }\n catch (err) {\n this.log.error('could not update last dial failure key for %p', peerId, err);\n }\n }\n // the user/dial timeout/shutdown controller signal aborted\n if (signal.aborted) {\n throw new CodeError(err.message, ERR_TIMEOUT);\n }\n errors.push(err);\n }\n }\n if (errors.length === 1) {\n throw errors[0];\n }\n throw new AggregateCodeError(errors, 'All multiaddr dials failed', codes.ERR_TRANSPORT_DIAL_FAILED);\n }\n finally {\n // clean up abort signals/controllers\n signal.clear();\n }\n }, {\n peerId,\n priority: options.priority ?? DEFAULT_DIAL_PRIORITY,\n multiaddrs: new Set(multiaddrs.map(ma => ma.toString())),\n signal: options.signal,\n onProgress: options.onProgress\n });\n }\n createDialAbortController(userSignal) {\n // let any signal abort the dial\n const signal = anySignal([\n AbortSignal.timeout(this.dialTimeout),\n this.shutDownController.signal,\n userSignal\n ]);\n // This emitter gets listened to a lot\n setMaxListeners(Infinity, signal);\n return signal;\n }\n // eslint-disable-next-line complexity\n async calculateMultiaddrs(peerId, multiaddrs = new Set(), options = {}) {\n const addrs = [...multiaddrs].map(ma => ({\n multiaddr: multiaddr(ma),\n isCertified: false\n }));\n // if a peer id or multiaddr(s) with a peer id, make sure it isn't our peer id and that we are allowed to dial it\n if (peerId != null) {\n if (this.components.peerId.equals(peerId)) {\n throw new CodeError('Tried to dial self', codes.ERR_DIALED_SELF);\n }\n if ((await this.components.connectionGater.denyDialPeer?.(peerId)) === true) {\n throw new CodeError('The dial request is blocked by gater.allowDialPeer', codes.ERR_PEER_DIAL_INTERCEPTED);\n }\n // if just a peer id was passed, load available multiaddrs for this peer\n // from the peer store\n if (addrs.length === 0) {\n this.log('loading multiaddrs for %p', peerId);\n try {\n const peer = await this.components.peerStore.get(peerId);\n addrs.push(...peer.addresses);\n this.log('loaded multiaddrs for %p', peerId, addrs.map(({ multiaddr }) => multiaddr.toString()));\n }\n catch (err) {\n if (err.code !== codes.ERR_NOT_FOUND) {\n throw err;\n }\n }\n }\n // if we still don't have any addresses for this peer, try a lookup\n // using the peer routing\n if (addrs.length === 0) {\n this.log('looking up multiaddrs for %p in the peer routing', peerId);\n try {\n const peerInfo = await this.components.peerRouting.findPeer(peerId);\n this.log('found multiaddrs for %p in the peer routing', peerId, addrs.map(({ multiaddr }) => multiaddr.toString()));\n addrs.push(...peerInfo.multiaddrs.map(multiaddr => ({\n multiaddr,\n isCertified: false\n })));\n }\n catch (err) {\n if (err.code !== codes.ERR_NO_ROUTERS_AVAILABLE) {\n this.log.error('looking up multiaddrs for %p in the peer routing failed', peerId, err);\n }\n }\n }\n }\n // resolve addresses - this can result in a one-to-many translation when\n // dnsaddrs are resolved\n let resolvedAddresses = (await Promise.all(addrs.map(async (addr) => {\n const result = await resolveMultiaddrs(addr.multiaddr, {\n dns: this.components.dns,\n ...options,\n log: this.log\n });\n if (result.length === 1 && result[0].equals(addr.multiaddr)) {\n return addr;\n }\n return result.map(multiaddr => ({\n multiaddr,\n isCertified: false\n }));\n })))\n .flat();\n // ensure the peer id is appended to the multiaddr\n if (peerId != null) {\n const peerIdMultiaddr = `/p2p/${peerId.toString()}`;\n resolvedAddresses = resolvedAddresses.map(addr => {\n const lastProto = addr.multiaddr.protos().pop();\n // do not append peer id to path multiaddrs\n if (lastProto?.path === true) {\n return addr;\n }\n // append peer id to multiaddr if it is not already present\n if (addr.multiaddr.getPeerId() == null) {\n return {\n multiaddr: addr.multiaddr.encapsulate(peerIdMultiaddr),\n isCertified: addr.isCertified\n };\n }\n return addr;\n });\n }\n const filteredAddrs = resolvedAddresses.filter(addr => {\n // filter out any multiaddrs that we do not have transports for\n if (this.components.transportManager.dialTransportForMultiaddr(addr.multiaddr) == null) {\n return false;\n }\n // if the resolved multiaddr has a PeerID but it's the wrong one, ignore it\n // - this can happen with addresses like bootstrap.libp2p.io that resolve\n // to multiple different peers\n const addrPeerId = addr.multiaddr.getPeerId();\n if (peerId != null && addrPeerId != null) {\n return peerId.equals(addrPeerId);\n }\n return true;\n });\n // deduplicate addresses\n const dedupedAddrs = new Map();\n for (const addr of filteredAddrs) {\n const maStr = addr.multiaddr.toString();\n const existing = dedupedAddrs.get(maStr);\n if (existing != null) {\n existing.isCertified = existing.isCertified || addr.isCertified || false;\n continue;\n }\n dedupedAddrs.set(maStr, addr);\n }\n const dedupedMultiaddrs = [...dedupedAddrs.values()];\n // make sure we actually have some addresses to dial\n if (dedupedMultiaddrs.length === 0) {\n throw new CodeError('The dial request has no valid addresses', codes.ERR_NO_VALID_ADDRESSES);\n }\n const gatedAdrs = [];\n for (const addr of dedupedMultiaddrs) {\n if (this.components.connectionGater.denyDialMultiaddr != null && await this.components.connectionGater.denyDialMultiaddr(addr.multiaddr)) {\n continue;\n }\n gatedAdrs.push(addr);\n }\n const sortedGatedAddrs = gatedAdrs.sort(this.addressSorter);\n // make sure we actually have some addresses to dial\n if (sortedGatedAddrs.length === 0) {\n throw new CodeError('The connection gater denied all addresses in the dial request', codes.ERR_NO_VALID_ADDRESSES);\n }\n this.log.trace('addresses for %p before filtering', peerId ?? 'unknown peer', resolvedAddresses.map(({ multiaddr }) => multiaddr.toString()));\n this.log.trace('addresses for %p after filtering', peerId ?? 'unknown peer', sortedGatedAddrs.map(({ multiaddr }) => multiaddr.toString()));\n return sortedGatedAddrs;\n }\n async isDialable(multiaddr, options = {}) {\n if (!Array.isArray(multiaddr)) {\n multiaddr = [multiaddr];\n }\n try {\n const addresses = await this.calculateMultiaddrs(undefined, new Set(multiaddr.map(ma => ma.toString())), options);\n if (options.runOnTransientConnection === false) {\n // return true if any resolved multiaddrs are not relay addresses\n return addresses.find(addr => {\n return !Circuit.matches(addr.multiaddr);\n }) != null;\n }\n return true;\n }\n catch (err) {\n this.log.trace('error calculating if multiaddr(s) were dialable', err);\n }\n return false;\n }\n}\n//# sourceMappingURL=dial-queue.js.map","import { CodeError, KEEP_ALIVE } from '@libp2p/interface';\nimport { PeerMap } from '@libp2p/peer-collections';\nimport { defaultAddressSort } from '@libp2p/utils/address-sort';\nimport { RateLimiter } from '@libp2p/utils/rate-limiter';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { dnsaddrResolver } from '@multiformats/multiaddr/resolvers';\nimport { CustomProgressEvent } from 'progress-events';\nimport { codes } from '../errors.js';\nimport { getPeerAddress } from '../get-peer.js';\nimport { AutoDial } from './auto-dial.js';\nimport { ConnectionPruner } from './connection-pruner.js';\nimport { AUTO_DIAL_CONCURRENCY, AUTO_DIAL_DISCOVERED_PEERS_DEBOUNCE, AUTO_DIAL_MAX_QUEUE_LENGTH, AUTO_DIAL_PEER_RETRY_THRESHOLD, AUTO_DIAL_PRIORITY, DIAL_TIMEOUT, INBOUND_CONNECTION_THRESHOLD, MAX_CONNECTIONS, MAX_DIAL_QUEUE_LENGTH, MAX_INCOMING_PENDING_CONNECTIONS, MAX_PARALLEL_DIALS, MAX_PEER_ADDRS_TO_DIAL, MIN_CONNECTIONS } from './constants.js';\nimport { DialQueue } from './dial-queue.js';\nexport const DEFAULT_DIAL_PRIORITY = 50;\nconst defaultOptions = {\n minConnections: MIN_CONNECTIONS,\n maxConnections: MAX_CONNECTIONS,\n inboundConnectionThreshold: INBOUND_CONNECTION_THRESHOLD,\n maxIncomingPendingConnections: MAX_INCOMING_PENDING_CONNECTIONS,\n autoDialConcurrency: AUTO_DIAL_CONCURRENCY,\n autoDialPriority: AUTO_DIAL_PRIORITY,\n autoDialMaxQueueLength: AUTO_DIAL_MAX_QUEUE_LENGTH,\n autoDialPeerRetryThreshold: AUTO_DIAL_PEER_RETRY_THRESHOLD,\n autoDialDiscoveredPeersDebounce: AUTO_DIAL_DISCOVERED_PEERS_DEBOUNCE\n};\n/**\n * Responsible for managing known connections.\n */\nexport class DefaultConnectionManager {\n started;\n connections;\n allow;\n deny;\n maxIncomingPendingConnections;\n incomingPendingConnections;\n maxConnections;\n dialQueue;\n autoDial;\n connectionPruner;\n inboundConnectionRateLimiter;\n peerStore;\n metrics;\n events;\n log;\n constructor(components, init = {}) {\n this.maxConnections = init.maxConnections ?? defaultOptions.maxConnections;\n const minConnections = init.minConnections ?? defaultOptions.minConnections;\n if (this.maxConnections < minConnections) {\n throw new CodeError('Connection Manager maxConnections must be greater than minConnections', codes.ERR_INVALID_PARAMETERS);\n }\n /**\n * Map of connections per peer\n */\n this.connections = new PeerMap();\n this.started = false;\n this.peerStore = components.peerStore;\n this.metrics = components.metrics;\n this.events = components.events;\n this.log = components.logger.forComponent('libp2p:connection-manager');\n this.onConnect = this.onConnect.bind(this);\n this.onDisconnect = this.onDisconnect.bind(this);\n this.events.addEventListener('connection:open', this.onConnect);\n this.events.addEventListener('connection:close', this.onDisconnect);\n // allow/deny lists\n this.allow = (init.allow ?? []).map(ma => multiaddr(ma));\n this.deny = (init.deny ?? []).map(ma => multiaddr(ma));\n this.incomingPendingConnections = 0;\n this.maxIncomingPendingConnections = init.maxIncomingPendingConnections ?? defaultOptions.maxIncomingPendingConnections;\n // controls individual peers trying to dial us too quickly\n this.inboundConnectionRateLimiter = new RateLimiter({\n points: init.inboundConnectionThreshold ?? defaultOptions.inboundConnectionThreshold,\n duration: 1\n });\n // controls what happens when we don't have enough connections\n this.autoDial = new AutoDial({\n connectionManager: this,\n peerStore: components.peerStore,\n events: components.events,\n logger: components.logger\n }, {\n minConnections,\n autoDialConcurrency: init.autoDialConcurrency ?? defaultOptions.autoDialConcurrency,\n autoDialPriority: init.autoDialPriority ?? defaultOptions.autoDialPriority,\n autoDialPeerRetryThreshold: init.autoDialPeerRetryThreshold ?? defaultOptions.autoDialPeerRetryThreshold,\n autoDialDiscoveredPeersDebounce: init.autoDialDiscoveredPeersDebounce ?? defaultOptions.autoDialDiscoveredPeersDebounce,\n maxQueueLength: init.autoDialMaxQueueLength ?? defaultOptions.autoDialMaxQueueLength\n });\n // controls what happens when we have too many connections\n this.connectionPruner = new ConnectionPruner({\n connectionManager: this,\n peerStore: components.peerStore,\n events: components.events,\n logger: components.logger\n }, {\n maxConnections: this.maxConnections,\n allow: this.allow\n });\n this.dialQueue = new DialQueue(components, {\n addressSorter: init.addressSorter ?? defaultAddressSort,\n maxParallelDials: init.maxParallelDials ?? MAX_PARALLEL_DIALS,\n maxDialQueueLength: init.maxDialQueueLength ?? MAX_DIAL_QUEUE_LENGTH,\n maxPeerAddrsToDial: init.maxPeerAddrsToDial ?? MAX_PEER_ADDRS_TO_DIAL,\n dialTimeout: init.dialTimeout ?? DIAL_TIMEOUT,\n resolvers: init.resolvers ?? {\n dnsaddr: dnsaddrResolver\n },\n connections: this.connections\n });\n }\n [Symbol.toStringTag] = '@libp2p/connection-manager';\n isStarted() {\n return this.started;\n }\n /**\n * Starts the Connection Manager. If Metrics are not enabled on libp2p\n * only event loop and connection limits will be monitored.\n */\n async start() {\n // track inbound/outbound connections\n this.metrics?.registerMetricGroup('libp2p_connection_manager_connections', {\n calculate: () => {\n const metric = {\n inbound: 0,\n outbound: 0\n };\n for (const conns of this.connections.values()) {\n for (const conn of conns) {\n if (conn.direction === 'inbound') {\n metric.inbound++;\n }\n else {\n metric.outbound++;\n }\n }\n }\n return metric;\n }\n });\n // track total number of streams per protocol\n this.metrics?.registerMetricGroup('libp2p_protocol_streams_total', {\n label: 'protocol',\n calculate: () => {\n const metric = {};\n for (const conns of this.connections.values()) {\n for (const conn of conns) {\n for (const stream of conn.streams) {\n const key = `${stream.direction} ${stream.protocol ?? 'unnegotiated'}`;\n metric[key] = (metric[key] ?? 0) + 1;\n }\n }\n }\n return metric;\n }\n });\n // track 90th percentile of streams per protocol\n this.metrics?.registerMetricGroup('libp2p_connection_manager_protocol_streams_per_connection_90th_percentile', {\n label: 'protocol',\n calculate: () => {\n const allStreams = {};\n for (const conns of this.connections.values()) {\n for (const conn of conns) {\n const streams = {};\n for (const stream of conn.streams) {\n const key = `${stream.direction} ${stream.protocol ?? 'unnegotiated'}`;\n streams[key] = (streams[key] ?? 0) + 1;\n }\n for (const [protocol, count] of Object.entries(streams)) {\n allStreams[protocol] = allStreams[protocol] ?? [];\n allStreams[protocol].push(count);\n }\n }\n }\n const metric = {};\n for (let [protocol, counts] of Object.entries(allStreams)) {\n counts = counts.sort((a, b) => a - b);\n const index = Math.floor(counts.length * 0.9);\n metric[protocol] = counts[index];\n }\n return metric;\n }\n });\n this.dialQueue.start();\n this.autoDial.start();\n this.started = true;\n this.log('started');\n }\n async afterStart() {\n // re-connect to any peers with the KEEP_ALIVE tag\n void Promise.resolve()\n .then(async () => {\n const keepAlivePeers = await this.peerStore.all({\n filters: [(peer) => {\n return peer.tags.has(KEEP_ALIVE);\n }]\n });\n await Promise.all(keepAlivePeers.map(async (peer) => {\n await this.openConnection(peer.id)\n .catch(err => {\n this.log.error(err);\n });\n }));\n })\n .catch(err => {\n this.log.error(err);\n });\n this.autoDial.afterStart();\n }\n /**\n * Stops the Connection Manager\n */\n async stop() {\n this.dialQueue.stop();\n this.autoDial.stop();\n // Close all connections we're tracking\n const tasks = [];\n for (const connectionList of this.connections.values()) {\n for (const connection of connectionList) {\n tasks.push((async () => {\n try {\n await connection.close();\n }\n catch (err) {\n this.log.error(err);\n }\n })());\n }\n }\n this.log('closing %d connections', tasks.length);\n await Promise.all(tasks);\n this.connections.clear();\n this.log('stopped');\n }\n onConnect(evt) {\n void this._onConnect(evt).catch(err => {\n this.log.error(err);\n });\n }\n /**\n * Tracks the incoming connection and check the connection limit\n */\n async _onConnect(evt) {\n const { detail: connection } = evt;\n if (!this.started) {\n // This can happen when we are in the process of shutting down the node\n await connection.close();\n return;\n }\n const peerId = connection.remotePeer;\n const storedConns = this.connections.get(peerId);\n let isNewPeer = false;\n if (storedConns != null) {\n storedConns.push(connection);\n }\n else {\n isNewPeer = true;\n this.connections.set(peerId, [connection]);\n }\n // only need to store RSA public keys, all other types are embedded in the peer id\n if (peerId.publicKey != null && peerId.type === 'RSA') {\n await this.peerStore.patch(peerId, {\n publicKey: peerId.publicKey\n });\n }\n if (isNewPeer) {\n this.events.safeDispatchEvent('peer:connect', { detail: connection.remotePeer });\n }\n }\n /**\n * Removes the connection from tracking\n */\n onDisconnect(evt) {\n const { detail: connection } = evt;\n if (!this.started) {\n // This can happen when we are in the process of shutting down the node\n return;\n }\n const peerId = connection.remotePeer;\n let storedConn = this.connections.get(peerId);\n if (storedConn != null && storedConn.length > 1) {\n storedConn = storedConn.filter((conn) => conn.id !== connection.id);\n this.connections.set(peerId, storedConn);\n }\n else if (storedConn != null) {\n this.connections.delete(peerId);\n this.events.safeDispatchEvent('peer:disconnect', { detail: connection.remotePeer });\n }\n }\n getConnections(peerId) {\n if (peerId != null) {\n return this.connections.get(peerId) ?? [];\n }\n let conns = [];\n for (const c of this.connections.values()) {\n conns = conns.concat(c);\n }\n return conns;\n }\n getConnectionsMap() {\n return this.connections;\n }\n async openConnection(peerIdOrMultiaddr, options = {}) {\n if (!this.isStarted()) {\n throw new CodeError('Not started', codes.ERR_NODE_NOT_STARTED);\n }\n options.signal?.throwIfAborted();\n const { peerId } = getPeerAddress(peerIdOrMultiaddr);\n if (peerId != null && options.force !== true) {\n this.log('dial %p', peerId);\n const existingConnection = this.getConnections(peerId)\n .find(conn => !conn.transient);\n if (existingConnection != null) {\n this.log('had an existing non-transient connection to %p', peerId);\n options.onProgress?.(new CustomProgressEvent('dial-queue:already-connected'));\n return existingConnection;\n }\n }\n const connection = await this.dialQueue.dial(peerIdOrMultiaddr, {\n ...options,\n priority: options.priority ?? DEFAULT_DIAL_PRIORITY\n });\n let peerConnections = this.connections.get(connection.remotePeer);\n if (peerConnections == null) {\n peerConnections = [];\n this.connections.set(connection.remotePeer, peerConnections);\n }\n // we get notified of connections via the Upgrader emitting \"connection\"\n // events, double check we aren't already tracking this connection before\n // storing it\n let trackedConnection = false;\n for (const conn of peerConnections) {\n if (conn.id === connection.id) {\n trackedConnection = true;\n }\n }\n if (!trackedConnection) {\n peerConnections.push(connection);\n }\n return connection;\n }\n async closeConnections(peerId, options = {}) {\n const connections = this.connections.get(peerId) ?? [];\n await Promise.all(connections.map(async (connection) => {\n try {\n await connection.close(options);\n }\n catch (err) {\n connection.abort(err);\n }\n }));\n }\n async acceptIncomingConnection(maConn) {\n // check deny list\n const denyConnection = this.deny.some(ma => {\n return maConn.remoteAddr.toString().startsWith(ma.toString());\n });\n if (denyConnection) {\n this.log('connection from %a refused - connection remote address was in deny list', maConn.remoteAddr);\n return false;\n }\n // check allow list\n const allowConnection = this.allow.some(ma => {\n return maConn.remoteAddr.toString().startsWith(ma.toString());\n });\n if (allowConnection) {\n this.incomingPendingConnections++;\n return true;\n }\n // check pending connections\n if (this.incomingPendingConnections === this.maxIncomingPendingConnections) {\n this.log('connection from %a refused - incomingPendingConnections exceeded by host', maConn.remoteAddr);\n return false;\n }\n if (maConn.remoteAddr.isThinWaistAddress()) {\n const host = maConn.remoteAddr.nodeAddress().address;\n try {\n await this.inboundConnectionRateLimiter.consume(host, 1);\n }\n catch {\n this.log('connection from %a refused - inboundConnectionThreshold exceeded by host %s', maConn.remoteAddr, host);\n return false;\n }\n }\n if (this.getConnections().length < this.maxConnections) {\n this.incomingPendingConnections++;\n return true;\n }\n this.log('connection from %a refused - maxConnections exceeded', maConn.remoteAddr);\n return false;\n }\n afterUpgradeInbound() {\n this.incomingPendingConnections--;\n }\n getDialQueue() {\n const statusMap = {\n queued: 'queued',\n running: 'active',\n errored: 'error',\n complete: 'success'\n };\n return this.dialQueue.queue.queue.map(job => {\n return {\n id: job.id,\n status: statusMap[job.status],\n peerId: job.options.peerId,\n multiaddrs: [...job.options.multiaddrs].map(ma => multiaddr(ma))\n };\n });\n }\n async isDialable(multiaddr, options = {}) {\n return this.dialQueue.isDialable(multiaddr, options);\n }\n}\n//# sourceMappingURL=index.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { serviceCapabilities } from '@libp2p/interface';\nimport { AdaptiveTimeout } from '@libp2p/utils/adaptive-timeout';\nimport { byteStream } from 'it-byte-stream';\nconst DEFAULT_PING_INTERVAL_MS = 10000;\nconst PROTOCOL_VERSION = '1.0.0';\nconst PROTOCOL_NAME = 'ping';\nconst PROTOCOL_PREFIX = 'ipfs';\nconst PING_LENGTH = 32;\nexport class ConnectionMonitor {\n protocol;\n components;\n log;\n heartbeatInterval;\n pingIntervalMs;\n abortController;\n timeout;\n constructor(components, init = {}) {\n this.components = components;\n this.protocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;\n this.log = components.logger.forComponent('libp2p:connection-monitor');\n this.pingIntervalMs = init.pingInterval ?? DEFAULT_PING_INTERVAL_MS;\n this.timeout = new AdaptiveTimeout({\n ...(init.pingTimeout ?? {}),\n metrics: components.metrics,\n metricName: 'libp2p_connection_monitor_ping_time_milliseconds'\n });\n }\n [Symbol.toStringTag] = '@libp2p/connection-monitor';\n [serviceCapabilities] = [\n '@libp2p/connection-monitor'\n ];\n start() {\n this.abortController = new AbortController();\n this.heartbeatInterval = setInterval(() => {\n this.components.connectionManager.getConnections().forEach(conn => {\n Promise.resolve().then(async () => {\n let start = Date.now();\n try {\n const signal = this.timeout.getTimeoutSignal({\n signal: this.abortController?.signal\n });\n const stream = await conn.newStream(this.protocol, {\n signal,\n runOnTransientConnection: true\n });\n const bs = byteStream(stream);\n start = Date.now();\n await Promise.all([\n bs.write(randomBytes(PING_LENGTH), {\n signal\n }),\n bs.read(PING_LENGTH, {\n signal\n })\n ]);\n conn.rtt = Date.now() - start;\n await bs.unwrap().close({\n signal\n });\n }\n catch (err) {\n if (err.code !== 'ERR_UNSUPPORTED_PROTOCOL') {\n throw err;\n }\n // protocol was unsupported, but that's ok as it means the remote\n // peer was still alive. We ran multistream-select which means two\n // round trips (e.g. 1x for the mss header, then another for the\n // protocol) so divide the time it took by two\n conn.rtt = (Date.now() - start) / 2;\n }\n })\n .catch(err => {\n this.log.error('error during heartbeat, aborting connection', err);\n conn.abort(err);\n });\n });\n }, this.pingIntervalMs);\n }\n stop() {\n this.abortController?.abort();\n if (this.heartbeatInterval != null) {\n clearInterval(this.heartbeatInterval);\n }\n }\n}\n//# sourceMappingURL=connection-monitor.js.map","import { CodeError } from '@libp2p/interface';\nimport { PeerSet } from '@libp2p/peer-collections';\nimport merge from 'it-merge';\nimport { codes, messages } from './errors.js';\nexport class CompoundContentRouting {\n routers;\n started;\n components;\n constructor(components, init) {\n this.routers = init.routers ?? [];\n this.started = false;\n this.components = components;\n }\n [Symbol.toStringTag] = '@libp2p/content-routing';\n isStarted() {\n return this.started;\n }\n async start() {\n this.started = true;\n }\n async stop() {\n this.started = false;\n }\n /**\n * Iterates over all content routers in parallel to find providers of the given key\n */\n async *findProviders(key, options = {}) {\n if (this.routers.length === 0) {\n throw new CodeError('No content routers available', codes.ERR_NO_ROUTERS_AVAILABLE);\n }\n const self = this;\n const seen = new PeerSet();\n for await (const peer of merge(...self.routers.map(router => router.findProviders(key, options)))) {\n // the peer was yielded by a content router without multiaddrs and we\n // failed to load them\n if (peer == null) {\n continue;\n }\n // store the addresses for the peer if found\n if (peer.multiaddrs.length > 0) {\n await this.components.peerStore.merge(peer.id, {\n multiaddrs: peer.multiaddrs\n });\n }\n // deduplicate peers\n if (seen.has(peer.id)) {\n continue;\n }\n seen.add(peer.id);\n yield peer;\n }\n }\n /**\n * Iterates over all content routers in parallel to notify it is\n * a provider of the given key\n */\n async provide(key, options = {}) {\n if (this.routers.length === 0) {\n throw new CodeError('No content routers available', codes.ERR_NO_ROUTERS_AVAILABLE);\n }\n await Promise.all(this.routers.map(async (router) => {\n await router.provide(key, options);\n }));\n }\n /**\n * Store the given key/value pair in the available content routings\n */\n async put(key, value, options) {\n if (!this.isStarted()) {\n throw new CodeError(messages.NOT_STARTED_YET, codes.ERR_NODE_NOT_STARTED);\n }\n await Promise.all(this.routers.map(async (router) => {\n await router.put(key, value, options);\n }));\n }\n /**\n * Get the value to the given key.\n * Times out after 1 minute by default.\n */\n async get(key, options) {\n if (!this.isStarted()) {\n throw new CodeError(messages.NOT_STARTED_YET, codes.ERR_NODE_NOT_STARTED);\n }\n return Promise.any(this.routers.map(async (router) => {\n return router.get(key, options);\n }));\n }\n}\n//# sourceMappingURL=content-routing.js.map","import { CodeError } from '@libp2p/interface';\nimport { createScalableCuckooFilter } from '@libp2p/utils/filters';\nimport merge from 'it-merge';\nimport parallel from 'it-parallel';\nimport { codes, messages } from './errors.js';\nexport class DefaultPeerRouting {\n log;\n peerId;\n peerStore;\n routers;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('libp2p:peer-routing');\n this.peerId = components.peerId;\n this.peerStore = components.peerStore;\n this.routers = init.routers ?? [];\n }\n [Symbol.toStringTag] = '@libp2p/peer-routing';\n /**\n * Iterates over all peer routers in parallel to find the given peer\n */\n async findPeer(id, options) {\n if (this.routers.length === 0) {\n throw new CodeError('No peer routers available', codes.ERR_NO_ROUTERS_AVAILABLE);\n }\n if (id.toString() === this.peerId.toString()) {\n throw new CodeError('Should not try to find self', codes.ERR_FIND_SELF);\n }\n const self = this;\n const source = merge(...this.routers.map(router => (async function* () {\n try {\n yield await router.findPeer(id, options);\n }\n catch (err) {\n self.log.error(err);\n }\n })()));\n for await (const peer of source) {\n if (peer == null) {\n continue;\n }\n // store the addresses for the peer if found\n if (peer.multiaddrs.length > 0) {\n await this.peerStore.merge(peer.id, {\n multiaddrs: peer.multiaddrs\n });\n }\n return peer;\n }\n throw new CodeError(messages.NOT_FOUND, codes.ERR_NOT_FOUND);\n }\n /**\n * Attempt to find the closest peers on the network to the given key\n */\n async *getClosestPeers(key, options = {}) {\n if (this.routers.length === 0) {\n throw new CodeError('No peer routers available', codes.ERR_NO_ROUTERS_AVAILABLE);\n }\n const self = this;\n const seen = createScalableCuckooFilter(1024);\n for await (const peer of parallel(async function* () {\n const source = merge(...self.routers.map(router => router.getClosestPeers(key, options)));\n for await (let peer of source) {\n yield async () => {\n // find multiaddrs if they are missing\n if (peer.multiaddrs.length === 0) {\n try {\n peer = await self.findPeer(peer.id, {\n ...options,\n useCache: false\n });\n }\n catch (err) {\n self.log.error('could not find peer multiaddrs', err);\n return;\n }\n }\n return peer;\n };\n }\n }())) {\n if (peer == null) {\n continue;\n }\n // store the addresses for the peer if found\n if (peer.multiaddrs.length > 0) {\n await this.peerStore.merge(peer.id, {\n multiaddrs: peer.multiaddrs\n });\n }\n // deduplicate peers\n if (seen.has(peer.id.toBytes())) {\n continue;\n }\n seen.add(peer.id.toBytes());\n yield peer;\n }\n }\n}\n//# sourceMappingURL=peer-routing.js.map","import { randomBytes } from '@libp2p/crypto';\nimport { TypedEventEmitter, setMaxListeners } from '@libp2p/interface';\nimport { anySignal } from 'any-signal';\nimport pDefer, {} from 'p-defer';\nimport { raceEvent } from 'race-event';\nimport { raceSignal } from 'race-signal';\nexport class RandomWalk extends TypedEventEmitter {\n peerRouting;\n log;\n walking;\n walkers;\n shutdownController;\n walkController;\n needNext;\n constructor(components) {\n super();\n this.log = components.logger.forComponent('libp2p:random-walk');\n this.peerRouting = components.peerRouting;\n this.walkers = 0;\n this.walking = false;\n // stops any in-progress walks when the node is shut down\n this.shutdownController = new AbortController();\n setMaxListeners(Infinity, this.shutdownController.signal);\n }\n [Symbol.toStringTag] = '@libp2p/random-walk';\n start() {\n this.shutdownController = new AbortController();\n setMaxListeners(Infinity, this.shutdownController.signal);\n }\n stop() {\n this.shutdownController.abort();\n }\n async *walk(options) {\n if (!this.walking) {\n // start the query that causes walk:peer events to be emitted\n this.startWalk();\n }\n this.walkers++;\n const signal = anySignal([this.shutdownController.signal, options?.signal]);\n setMaxListeners(Infinity, signal);\n try {\n while (true) {\n // if another consumer has paused the query, start it again\n this.needNext?.resolve();\n this.needNext = pDefer();\n // wait for a walk:peer or walk:error event\n const event = await raceEvent(this, 'walk:peer', signal, {\n errorEvent: 'walk:error'\n });\n yield event.detail;\n }\n }\n finally {\n signal.clear();\n this.walkers--;\n // stop the walk if no more consumers are interested\n if (this.walkers === 0) {\n this.walkController?.abort();\n this.walkController = undefined;\n }\n }\n }\n startWalk() {\n this.walking = true;\n // the signal for this controller will be aborted if no more random peers\n // are required\n this.walkController = new AbortController();\n setMaxListeners(Infinity, this.walkController.signal);\n const signal = anySignal([this.walkController.signal, this.shutdownController.signal]);\n setMaxListeners(Infinity, signal);\n const start = Date.now();\n let found = 0;\n Promise.resolve().then(async () => {\n this.log('start walk');\n // find peers until no more consumers are interested\n while (this.walkers > 0) {\n try {\n const data = randomBytes(32);\n let s = Date.now();\n for await (const peer of this.peerRouting.getClosestPeers(data, { signal })) {\n if (signal.aborted) {\n this.log('aborting walk');\n }\n signal.throwIfAborted();\n this.log('found peer %p after %dms for %d walkers', peer.id, Date.now() - s, this.walkers);\n found++;\n this.safeDispatchEvent('walk:peer', {\n detail: peer\n });\n // if we only have one consumer, pause the query until they request\n // another random peer or they signal they are no longer interested\n if (this.walkers === 1 && this.needNext != null) {\n this.log('wait for need next');\n await raceSignal(this.needNext.promise, signal);\n }\n s = Date.now();\n }\n this.log('walk iteration for %b and %d walkers finished, found %d peers', data, this.walkers, found);\n }\n catch (err) {\n this.log.error('randomwalk errored', err);\n this.safeDispatchEvent('walk:error', {\n detail: err\n });\n }\n }\n this.log('no walkers left, ended walk');\n })\n .catch(err => {\n this.log.error('randomwalk errored', err);\n })\n .finally(() => {\n this.log('finished walk, found %d peers after %dms', found, Date.now() - start);\n this.walking = false;\n });\n }\n}\n//# sourceMappingURL=random-walk.js.map","import { CodeError } from '@libp2p/interface';\nimport merge from 'merge-options';\nimport { codes } from './errors.js';\nexport const DEFAULT_MAX_INBOUND_STREAMS = 32;\nexport const DEFAULT_MAX_OUTBOUND_STREAMS = 64;\n/**\n * Responsible for notifying registered protocols of events in the network.\n */\nexport class DefaultRegistrar {\n log;\n topologies;\n handlers;\n components;\n constructor(components) {\n this.log = components.logger.forComponent('libp2p:registrar');\n this.topologies = new Map();\n this.handlers = new Map();\n this.components = components;\n this._onDisconnect = this._onDisconnect.bind(this);\n this._onPeerUpdate = this._onPeerUpdate.bind(this);\n this._onPeerIdentify = this._onPeerIdentify.bind(this);\n this.components.events.addEventListener('peer:disconnect', this._onDisconnect);\n this.components.events.addEventListener('peer:update', this._onPeerUpdate);\n this.components.events.addEventListener('peer:identify', this._onPeerIdentify);\n }\n [Symbol.toStringTag] = '@libp2p/registrar';\n getProtocols() {\n return Array.from(new Set([\n ...this.handlers.keys()\n ])).sort();\n }\n getHandler(protocol) {\n const handler = this.handlers.get(protocol);\n if (handler == null) {\n throw new CodeError(`No handler registered for protocol ${protocol}`, codes.ERR_NO_HANDLER_FOR_PROTOCOL);\n }\n return handler;\n }\n getTopologies(protocol) {\n const topologies = this.topologies.get(protocol);\n if (topologies == null) {\n return [];\n }\n return [\n ...topologies.values()\n ];\n }\n /**\n * Registers the `handler` for each protocol\n */\n async handle(protocol, handler, opts) {\n if (this.handlers.has(protocol)) {\n throw new CodeError(`Handler already registered for protocol ${protocol}`, codes.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED);\n }\n const options = merge.bind({ ignoreUndefined: true })({\n maxInboundStreams: DEFAULT_MAX_INBOUND_STREAMS,\n maxOutboundStreams: DEFAULT_MAX_OUTBOUND_STREAMS\n }, opts);\n this.handlers.set(protocol, {\n handler,\n options\n });\n // Add new protocol to self protocols in the peer store\n await this.components.peerStore.merge(this.components.peerId, {\n protocols: [protocol]\n });\n }\n /**\n * Removes the handler for each protocol. The protocol\n * will no longer be supported on streams.\n */\n async unhandle(protocols) {\n const protocolList = Array.isArray(protocols) ? protocols : [protocols];\n protocolList.forEach(protocol => {\n this.handlers.delete(protocol);\n });\n // Update self protocols in the peer store\n await this.components.peerStore.patch(this.components.peerId, {\n protocols: this.getProtocols()\n });\n }\n /**\n * Register handlers for a set of multicodecs given\n */\n async register(protocol, topology) {\n if (topology == null) {\n throw new CodeError('invalid topology', codes.ERR_INVALID_PARAMETERS);\n }\n // Create topology\n const id = `${(Math.random() * 1e9).toString(36)}${Date.now()}`;\n let topologies = this.topologies.get(protocol);\n if (topologies == null) {\n topologies = new Map();\n this.topologies.set(protocol, topologies);\n }\n topologies.set(id, topology);\n return id;\n }\n /**\n * Unregister topology\n */\n unregister(id) {\n for (const [protocol, topologies] of this.topologies.entries()) {\n if (topologies.has(id)) {\n topologies.delete(id);\n if (topologies.size === 0) {\n this.topologies.delete(protocol);\n }\n }\n }\n }\n /**\n * Remove a disconnected peer from the record\n */\n _onDisconnect(evt) {\n const remotePeer = evt.detail;\n void this.components.peerStore.get(remotePeer)\n .then(peer => {\n for (const protocol of peer.protocols) {\n const topologies = this.topologies.get(protocol);\n if (topologies == null) {\n // no topologies are interested in this protocol\n continue;\n }\n for (const topology of topologies.values()) {\n if (topology.filter?.has(remotePeer) === false) {\n continue;\n }\n topology.filter?.remove(remotePeer);\n topology.onDisconnect?.(remotePeer);\n }\n }\n })\n .catch(err => {\n if (err.code === codes.ERR_NOT_FOUND) {\n // peer has not completed identify so they are not in the peer store\n return;\n }\n this.log.error('could not inform topologies of disconnecting peer %p', remotePeer, err);\n });\n }\n /**\n * When a peer is updated, if they have removed supported protocols notify any\n * topologies interested in the removed protocols.\n */\n _onPeerUpdate(evt) {\n const { peer, previous } = evt.detail;\n const removed = (previous?.protocols ?? []).filter(protocol => !peer.protocols.includes(protocol));\n for (const protocol of removed) {\n const topologies = this.topologies.get(protocol);\n if (topologies == null) {\n // no topologies are interested in this protocol\n continue;\n }\n for (const topology of topologies.values()) {\n if (topology.filter?.has(peer.id) === false) {\n continue;\n }\n topology.filter?.remove(peer.id);\n topology.onDisconnect?.(peer.id);\n }\n }\n }\n /**\n * After identify has completed and we have received the list of supported\n * protocols, notify any topologies interested in those protocols.\n */\n _onPeerIdentify(evt) {\n const protocols = evt.detail.protocols;\n const connection = evt.detail.connection;\n const peerId = evt.detail.peerId;\n for (const protocol of protocols) {\n const topologies = this.topologies.get(protocol);\n if (topologies == null) {\n // no topologies are interested in this protocol\n continue;\n }\n for (const topology of topologies.values()) {\n if (connection.transient && topology.notifyOnTransient !== true) {\n continue;\n }\n if (topology.filter?.has(peerId) === true) {\n continue;\n }\n topology.filter?.add(peerId);\n topology.onConnect?.(peerId, connection);\n }\n }\n }\n}\n//# sourceMappingURL=registrar.js.map","import { CodeError, FaultTolerance } from '@libp2p/interface';\nimport { trackedMap } from '@libp2p/utils/tracked-map';\nimport { CustomProgressEvent } from 'progress-events';\nimport { codes } from './errors.js';\nexport class DefaultTransportManager {\n log;\n components;\n transports;\n listeners;\n faultTolerance;\n started;\n constructor(components, init = {}) {\n this.log = components.logger.forComponent('libp2p:transports');\n this.components = components;\n this.started = false;\n this.transports = new Map();\n this.listeners = trackedMap({\n name: 'libp2p_transport_manager_listeners',\n metrics: this.components.metrics\n });\n this.faultTolerance = init.faultTolerance ?? FaultTolerance.FATAL_ALL;\n }\n [Symbol.toStringTag] = '@libp2p/transport-manager';\n /**\n * Adds a `Transport` to the manager\n */\n add(transport) {\n const tag = transport[Symbol.toStringTag];\n if (tag == null) {\n throw new CodeError('Transport must have a valid tag', codes.ERR_INVALID_KEY);\n }\n if (this.transports.has(tag)) {\n throw new CodeError(`There is already a transport with the tag ${tag}`, codes.ERR_DUPLICATE_TRANSPORT);\n }\n this.log('adding transport %s', tag);\n this.transports.set(tag, transport);\n if (!this.listeners.has(tag)) {\n this.listeners.set(tag, []);\n }\n }\n isStarted() {\n return this.started;\n }\n start() {\n this.started = true;\n }\n async afterStart() {\n // Listen on the provided transports for the provided addresses\n const addrs = this.components.addressManager.getListenAddrs();\n await this.listen(addrs);\n }\n /**\n * Stops all listeners\n */\n async stop() {\n const tasks = [];\n for (const [key, listeners] of this.listeners) {\n this.log('closing listeners for %s', key);\n while (listeners.length > 0) {\n const listener = listeners.pop();\n if (listener == null) {\n continue;\n }\n tasks.push(listener.close());\n }\n }\n await Promise.all(tasks);\n this.log('all listeners closed');\n for (const key of this.listeners.keys()) {\n this.listeners.set(key, []);\n }\n this.started = false;\n }\n /**\n * Dials the given Multiaddr over it's supported transport\n */\n async dial(ma, options) {\n const transport = this.dialTransportForMultiaddr(ma);\n if (transport == null) {\n throw new CodeError(`No transport available for address ${String(ma)}`, codes.ERR_TRANSPORT_UNAVAILABLE);\n }\n options?.onProgress?.(new CustomProgressEvent('transport-manager:selected-transport', transport[Symbol.toStringTag]));\n try {\n // @ts-expect-error the transport has a typed onProgress option but we\n // can't predict what transport implementation we selected so all we can\n // do is pass the onProgress handler in and hope for the best\n return await transport.dial(ma, {\n ...options,\n upgrader: this.components.upgrader\n });\n }\n catch (err) {\n if (err.code == null) {\n err.code = codes.ERR_TRANSPORT_DIAL_FAILED;\n }\n throw err;\n }\n }\n /**\n * Returns all Multiaddr's the listeners are using\n */\n getAddrs() {\n let addrs = [];\n for (const listeners of this.listeners.values()) {\n for (const listener of listeners) {\n addrs = [...addrs, ...listener.getAddrs()];\n }\n }\n return addrs;\n }\n /**\n * Returns all the transports instances\n */\n getTransports() {\n return Array.of(...this.transports.values());\n }\n /**\n * Returns all the listener instances\n */\n getListeners() {\n return Array.of(...this.listeners.values()).flat();\n }\n /**\n * Finds a transport that matches the given Multiaddr\n */\n dialTransportForMultiaddr(ma) {\n for (const transport of this.transports.values()) {\n const addrs = transport.dialFilter([ma]);\n if (addrs.length > 0) {\n return transport;\n }\n }\n }\n /**\n * Finds a transport that matches the given Multiaddr\n */\n listenTransportForMultiaddr(ma) {\n for (const transport of this.transports.values()) {\n const addrs = transport.listenFilter([ma]);\n if (addrs.length > 0) {\n return transport;\n }\n }\n }\n /**\n * Starts listeners for each listen Multiaddr\n */\n async listen(addrs) {\n if (!this.isStarted()) {\n throw new CodeError('Not started', codes.ERR_NODE_NOT_STARTED);\n }\n if (addrs == null || addrs.length === 0) {\n this.log('no addresses were provided for listening, this node is dial only');\n return;\n }\n const couldNotListen = [];\n for (const [key, transport] of this.transports.entries()) {\n const supportedAddrs = transport.listenFilter(addrs);\n const tasks = [];\n // For each supported multiaddr, create a listener\n for (const addr of supportedAddrs) {\n this.log('creating listener for %s on %a', key, addr);\n const listener = transport.createListener({\n upgrader: this.components.upgrader\n });\n let listeners = this.listeners.get(key) ?? [];\n if (listeners == null) {\n listeners = [];\n this.listeners.set(key, listeners);\n }\n listeners.push(listener);\n // Track listen/close events\n listener.addEventListener('listening', () => {\n this.components.events.safeDispatchEvent('transport:listening', {\n detail: listener\n });\n });\n listener.addEventListener('close', () => {\n const index = listeners.findIndex(l => l === listener);\n // remove the listener\n listeners.splice(index, 1);\n this.components.events.safeDispatchEvent('transport:close', {\n detail: listener\n });\n });\n // We need to attempt to listen on everything\n tasks.push(listener.listen(addr));\n }\n // Keep track of transports we had no addresses for\n if (tasks.length === 0) {\n couldNotListen.push(key);\n continue;\n }\n const results = await Promise.allSettled(tasks);\n // If we are listening on at least 1 address, succeed.\n // TODO: we should look at adding a retry (`p-retry`) here to better support\n // listening on remote addresses as they may be offline. We could then potentially\n // just wait for any (`p-any`) listener to succeed on each transport before returning\n const isListening = results.find(r => r.status === 'fulfilled');\n if ((isListening == null) && this.faultTolerance !== FaultTolerance.NO_FATAL) {\n throw new CodeError(`Transport (${key}) could not listen on any available address`, codes.ERR_NO_VALID_ADDRESSES);\n }\n }\n // If no transports were able to listen, throw an error. This likely\n // means we were given addresses we do not have transports for\n if (couldNotListen.length === this.transports.size) {\n const message = `no valid addresses were provided for transports [${couldNotListen.join(', ')}]`;\n if (this.faultTolerance === FaultTolerance.FATAL_ALL) {\n throw new CodeError(message, codes.ERR_NO_VALID_ADDRESSES);\n }\n this.log(`libp2p in dial mode only: ${message}`);\n }\n }\n /**\n * Removes the given transport from the manager.\n * If a transport has any running listeners, they will be closed.\n */\n async remove(key) {\n const listeners = this.listeners.get(key) ?? [];\n this.log.trace('removing transport %s', key);\n // Close any running listeners\n const tasks = [];\n this.log.trace('closing listeners for %s', key);\n while (listeners.length > 0) {\n const listener = listeners.pop();\n if (listener == null) {\n continue;\n }\n tasks.push(listener.close());\n }\n await Promise.all(tasks);\n this.transports.delete(key);\n this.listeners.delete(key);\n }\n /**\n * Removes all transports from the manager.\n * If any listeners are running, they will be closed.\n *\n * @async\n */\n async removeAll() {\n const tasks = [];\n for (const key of this.transports.keys()) {\n tasks.push(this.remove(key));\n }\n await Promise.all(tasks);\n }\n}\n//# sourceMappingURL=transport-manager.js.map","export const PROTOCOL_ID = '/multistream/1.0.0';\n// Conforming to go-libp2p\n// See https://github.com/multiformats/go-multistream/blob/master/multistream.go#L297\nexport const MAX_PROTOCOL_LENGTH = 1024;\n//# sourceMappingURL=constants.js.map","import { CodeError } from '@libp2p/interface';\nimport {} from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nconst NewLine = uint8ArrayFromString('\\n');\n/**\n * `write` encodes and writes a single buffer\n */\nexport async function write(writer, buffer, options) {\n await writer.write(buffer, options);\n}\n/**\n * `writeAll` behaves like `write`, except it encodes an array of items as a single write\n */\nexport async function writeAll(writer, buffers, options) {\n await writer.writeV(buffers, options);\n}\n/**\n * Read a length-prefixed buffer from the passed stream, stripping the final newline character\n */\nexport async function read(reader, options) {\n const buf = await reader.read(options);\n if (buf.byteLength === 0 || buf.get(buf.byteLength - 1) !== NewLine[0]) {\n options.log.error('Invalid mss message - missing newline', buf);\n throw new CodeError('missing newline', 'ERR_INVALID_MULTISTREAM_SELECT_MESSAGE');\n }\n return buf.sublist(0, -1); // Remove newline\n}\n/**\n * Read a length-prefixed string from the passed stream, stripping the final newline character\n */\nexport async function readString(reader, options) {\n const buf = await read(reader, options);\n return uint8ArrayToString(buf.subarray());\n}\n//# sourceMappingURL=multistream.js.map","import { CodeError } from '@libp2p/interface';\nimport { lpStream } from 'it-length-prefixed-stream';\nimport pDefer from 'p-defer';\nimport { raceSignal } from 'race-signal';\nimport * as varint from 'uint8-varint';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { MAX_PROTOCOL_LENGTH } from './constants.js';\nimport * as multistream from './multistream.js';\nimport { PROTOCOL_ID } from './index.js';\n/**\n * Negotiate a protocol to use from a list of protocols.\n *\n * @param stream - A duplex iterable stream to dial on\n * @param protocols - A list of protocols (or single protocol) to negotiate with. Protocols are attempted in order until a match is made.\n * @param options - An options object containing an AbortSignal and an optional boolean `writeBytes` - if this is true, `Uint8Array`s will be written into `duplex`, otherwise `Uint8ArrayList`s will\n * @returns A stream for the selected protocol and the protocol that was selected from the list of protocols provided to `select`.\n * @example\n *\n * ```TypeScript\n * import { pipe } from 'it-pipe'\n * import * as mss from '@libp2p/multistream-select'\n * import { Mplex } from '@libp2p/mplex'\n *\n * const muxer = new Mplex()\n * const muxedStream = muxer.newStream()\n *\n * // mss.select(protocol(s))\n * // Select from one of the passed protocols (in priority order)\n * // Returns selected stream and protocol\n * const { stream: dhtStream, protocol } = await mss.select(muxedStream, [\n * // This might just be different versions of DHT, but could be different impls\n * '/ipfs-dht/2.0.0', // Most of the time this will probably just be one item.\n * '/ipfs-dht/1.0.0'\n * ])\n *\n * // Typically this stream will be passed back to the caller of libp2p.dialProtocol\n * //\n * // ...it might then do something like this:\n * // try {\n * // await pipe(\n * // [uint8ArrayFromString('Some DHT data')]\n * // dhtStream,\n * // async source => {\n * // for await (const chunk of source)\n * // // DHT response data\n * // }\n * // )\n * // } catch (err) {\n * // // Error in stream\n * // }\n * ```\n */\nexport async function select(stream, protocols, options) {\n protocols = Array.isArray(protocols) ? [...protocols] : [protocols];\n if (protocols.length === 1 && options.negotiateFully === false) {\n return optimisticSelect(stream, protocols[0], options);\n }\n const lp = lpStream(stream, {\n ...options,\n maxDataLength: MAX_PROTOCOL_LENGTH\n });\n const protocol = protocols.shift();\n if (protocol == null) {\n throw new Error('At least one protocol must be specified');\n }\n options.log.trace('select: write [\"%s\", \"%s\"]', PROTOCOL_ID, protocol);\n const p1 = uint8ArrayFromString(`${PROTOCOL_ID}\\n`);\n const p2 = uint8ArrayFromString(`${protocol}\\n`);\n await multistream.writeAll(lp, [p1, p2], options);\n options.log.trace('select: reading multistream-select header');\n let response = await multistream.readString(lp, options);\n options.log.trace('select: read \"%s\"', response);\n // Read the protocol response if we got the protocolId in return\n if (response === PROTOCOL_ID) {\n options.log.trace('select: reading protocol response');\n response = await multistream.readString(lp, options);\n options.log.trace('select: read \"%s\"', response);\n }\n // We're done\n if (response === protocol) {\n return { stream: lp.unwrap(), protocol };\n }\n // We haven't gotten a valid ack, try the other protocols\n for (const protocol of protocols) {\n options.log.trace('select: write \"%s\"', protocol);\n await multistream.write(lp, uint8ArrayFromString(`${protocol}\\n`), options);\n options.log.trace('select: reading protocol response');\n const response = await multistream.readString(lp, options);\n options.log.trace('select: read \"%s\" for \"%s\"', response, protocol);\n if (response === protocol) {\n return { stream: lp.unwrap(), protocol };\n }\n }\n throw new CodeError('protocol selection failed', 'ERR_UNSUPPORTED_PROTOCOL');\n}\n/**\n * Optimistically negotiates a protocol.\n *\n * It *does not* block writes waiting for the other end to respond. Instead, it\n * simply assumes the negotiation went successfully and starts writing data.\n *\n * Use when it is known that the receiver supports the desired protocol.\n */\nfunction optimisticSelect(stream, protocol, options) {\n const originalSink = stream.sink.bind(stream);\n const originalSource = stream.source;\n let negotiated = false;\n let negotiating = false;\n const doneNegotiating = pDefer();\n let sentProtocol = false;\n let sendingProtocol = false;\n const doneSendingProtocol = pDefer();\n let readProtocol = false;\n let readingProtocol = false;\n const doneReadingProtocol = pDefer();\n const lp = lpStream({\n sink: originalSink,\n source: originalSource\n }, {\n ...options,\n maxDataLength: MAX_PROTOCOL_LENGTH\n });\n stream.sink = async (source) => {\n const { sink } = lp.unwrap();\n await sink(async function* () {\n let sentData = false;\n for await (const buf of source) {\n // started reading before the source yielded, wait for protocol send\n if (sendingProtocol) {\n await doneSendingProtocol.promise;\n }\n // writing before reading, send the protocol and the first chunk of data\n if (!sentProtocol) {\n sendingProtocol = true;\n options.log.trace('optimistic: write [\"%s\", \"%s\", data(%d)] in sink', PROTOCOL_ID, protocol, buf.byteLength);\n const protocolString = `${protocol}\\n`;\n // send protocols in first chunk of data written to transport\n yield new Uint8ArrayList(Uint8Array.from([19]), // length of PROTOCOL_ID plus newline\n uint8ArrayFromString(`${PROTOCOL_ID}\\n`), varint.encode(protocolString.length), uint8ArrayFromString(protocolString), buf).subarray();\n options.log.trace('optimistic: wrote [\"%s\", \"%s\", data(%d)] in sink', PROTOCOL_ID, protocol, buf.byteLength);\n sentProtocol = true;\n sendingProtocol = false;\n doneSendingProtocol.resolve();\n // read the negotiation response but don't block more sending\n negotiate()\n .catch(err => {\n options.log.error('could not finish optimistic protocol negotiation of %s', protocol, err);\n });\n }\n else {\n yield buf;\n }\n sentData = true;\n }\n // special case - the source passed to the sink has ended but we didn't\n // negotiated the protocol yet so do it now\n if (!sentData) {\n await negotiate();\n }\n }());\n };\n async function negotiate() {\n if (negotiating) {\n options.log.trace('optimistic: already negotiating %s stream', protocol);\n await doneNegotiating.promise;\n return;\n }\n negotiating = true;\n try {\n // we haven't sent the protocol yet, send it now\n if (!sentProtocol) {\n options.log.trace('optimistic: doing send protocol for %s stream', protocol);\n await doSendProtocol();\n }\n // if we haven't read the protocol response yet, do it now\n if (!readProtocol) {\n options.log.trace('optimistic: doing read protocol for %s stream', protocol);\n await doReadProtocol();\n }\n }\n finally {\n negotiating = false;\n negotiated = true;\n doneNegotiating.resolve();\n }\n }\n async function doSendProtocol() {\n if (sendingProtocol) {\n await doneSendingProtocol.promise;\n return;\n }\n sendingProtocol = true;\n try {\n options.log.trace('optimistic: write [\"%s\", \"%s\", data] in source', PROTOCOL_ID, protocol);\n await lp.writeV([\n uint8ArrayFromString(`${PROTOCOL_ID}\\n`),\n uint8ArrayFromString(`${protocol}\\n`)\n ]);\n options.log.trace('optimistic: wrote [\"%s\", \"%s\", data] in source', PROTOCOL_ID, protocol);\n }\n finally {\n sentProtocol = true;\n sendingProtocol = false;\n doneSendingProtocol.resolve();\n }\n }\n async function doReadProtocol() {\n if (readingProtocol) {\n await doneReadingProtocol.promise;\n return;\n }\n readingProtocol = true;\n try {\n options.log.trace('optimistic: reading multistream select header');\n let response = await multistream.readString(lp, options);\n options.log.trace('optimistic: read multistream select header \"%s\"', response);\n if (response === PROTOCOL_ID) {\n response = await multistream.readString(lp, options);\n }\n options.log.trace('optimistic: read protocol \"%s\", expecting \"%s\"', response, protocol);\n if (response !== protocol) {\n throw new CodeError('protocol selection failed', 'ERR_UNSUPPORTED_PROTOCOL');\n }\n }\n finally {\n readProtocol = true;\n readingProtocol = false;\n doneReadingProtocol.resolve();\n }\n }\n stream.source = (async function* () {\n // make sure we've done protocol negotiation before we read stream data\n await negotiate();\n options.log.trace('optimistic: reading data from \"%s\" stream', protocol);\n yield* lp.unwrap().source;\n })();\n if (stream.closeRead != null) {\n const originalCloseRead = stream.closeRead.bind(stream);\n stream.closeRead = async (opts) => {\n // we need to read & write to negotiate the protocol so ensure we've done\n // this before closing the readable end of the stream\n if (!negotiated) {\n await negotiate().catch(err => {\n options.log.error('could not negotiate protocol before close read', err);\n });\n }\n // protocol has been negotiated, ok to close the readable end\n await originalCloseRead(opts);\n };\n }\n if (stream.closeWrite != null) {\n const originalCloseWrite = stream.closeWrite.bind(stream);\n stream.closeWrite = async (opts) => {\n // we need to read & write to negotiate the protocol so ensure we've done\n // this before closing the writable end of the stream\n if (!negotiated) {\n await negotiate().catch(err => {\n options.log.error('could not negotiate protocol before close write', err);\n });\n }\n // protocol has been negotiated, ok to close the writable end\n await originalCloseWrite(opts);\n };\n }\n if (stream.close != null) {\n const originalClose = stream.close.bind(stream);\n stream.close = async (opts) => {\n // if we are in the process of negotiation, let it finish before closing\n // because we may have unsent early data\n const tasks = [];\n if (sendingProtocol) {\n tasks.push(doneSendingProtocol.promise);\n }\n if (readingProtocol) {\n tasks.push(doneReadingProtocol.promise);\n }\n if (tasks.length > 0) {\n // let the in-flight protocol negotiation finish gracefully\n await raceSignal(Promise.all(tasks), opts?.signal);\n }\n else {\n // no protocol negotiation attempt has occurred so don't start one\n negotiated = true;\n negotiating = false;\n doneNegotiating.resolve();\n }\n // protocol has been negotiated, ok to close the writable end\n await originalClose(opts);\n };\n }\n return {\n stream,\n protocol\n };\n}\n//# sourceMappingURL=select.js.map","import { encode } from 'it-length-prefixed';\nimport { lpStream } from 'it-length-prefixed-stream';\nimport { Uint8ArrayList } from 'uint8arraylist';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { MAX_PROTOCOL_LENGTH, PROTOCOL_ID } from './constants.js';\nimport * as multistream from './multistream.js';\n/**\n * Handle multistream protocol selections for the given list of protocols.\n *\n * Note that after a protocol is handled `listener` can no longer be used.\n *\n * @param stream - A duplex iterable stream to listen on\n * @param protocols - A list of protocols (or single protocol) that this listener is able to speak.\n * @param options - an options object containing an AbortSignal and an optional boolean `writeBytes` - if this is true, `Uint8Array`s will be written into `duplex`, otherwise `Uint8ArrayList`s will\n * @returns A stream for the selected protocol and the protocol that was selected from the list of protocols provided to `select`\n * @example\n *\n * ```TypeScript\n * import { pipe } from 'it-pipe'\n * import * as mss from '@libp2p/multistream-select'\n * import { Mplex } from '@libp2p/mplex'\n *\n * const muxer = new Mplex({\n * async onStream (muxedStream) {\n * // mss.handle(handledProtocols)\n * // Returns selected stream and protocol\n * const { stream, protocol } = await mss.handle(muxedStream, [\n * '/ipfs-dht/1.0.0',\n * '/ipfs-bitswap/1.0.0'\n * ])\n *\n * // Typically here we'd call the handler function that was registered in\n * // libp2p for the given protocol:\n * // e.g. handlers[protocol].handler(stream)\n * //\n * // If protocol was /ipfs-dht/1.0.0 it might do something like this:\n * // try {\n * // await pipe(\n * // dhtStream,\n * // source => (async function * () {\n * // for await (const chunk of source)\n * // // Incoming DHT data -> process and yield to respond\n * // })(),\n * // dhtStream\n * // )\n * // } catch (err) {\n * // // Error in stream\n * // }\n * }\n * })\n * ```\n */\nexport async function handle(stream, protocols, options) {\n protocols = Array.isArray(protocols) ? protocols : [protocols];\n options.log.trace('handle: available protocols %s', protocols);\n const lp = lpStream(stream, {\n ...options,\n maxDataLength: MAX_PROTOCOL_LENGTH,\n maxLengthLength: 2 // 2 bytes is enough to length-prefix MAX_PROTOCOL_LENGTH\n });\n while (true) {\n options.log.trace('handle: reading incoming string');\n const protocol = await multistream.readString(lp, options);\n options.log.trace('handle: read \"%s\"', protocol);\n if (protocol === PROTOCOL_ID) {\n options.log.trace('handle: respond with \"%s\" for \"%s\"', PROTOCOL_ID, protocol);\n await multistream.write(lp, uint8ArrayFromString(`${PROTOCOL_ID}\\n`), options);\n options.log.trace('handle: responded with \"%s\" for \"%s\"', PROTOCOL_ID, protocol);\n continue;\n }\n if (protocols.includes(protocol)) {\n options.log.trace('handle: respond with \"%s\" for \"%s\"', protocol, protocol);\n await multistream.write(lp, uint8ArrayFromString(`${protocol}\\n`), options);\n options.log.trace('handle: responded with \"%s\" for \"%s\"', protocol, protocol);\n return { stream: lp.unwrap(), protocol };\n }\n if (protocol === 'ls') {\n // \\n\\n\\n\n const protos = new Uint8ArrayList(...protocols.map(p => encode.single(uint8ArrayFromString(`${p}\\n`))), uint8ArrayFromString('\\n'));\n options.log.trace('handle: respond with \"%s\" for %s', protocols, protocol);\n await multistream.write(lp, protos, options);\n options.log.trace('handle: responded with \"%s\" for %s', protocols, protocol);\n continue;\n }\n options.log('handle: respond with \"na\" for \"%s\"', protocol);\n await multistream.write(lp, uint8ArrayFromString('na\\n'), options);\n options.log('handle: responded with \"na\" for \"%s\"', protocol);\n }\n}\n//# sourceMappingURL=handle.js.map","import { connectionSymbol, CodeError, setMaxListeners } from '@libp2p/interface';\nconst CLOSE_TIMEOUT = 500;\n/**\n * An implementation of the js-libp2p connection.\n * Any libp2p transport should use an upgrader to return this connection.\n */\nexport class ConnectionImpl {\n /**\n * Connection identifier.\n */\n id;\n /**\n * Observed multiaddr of the remote peer\n */\n remoteAddr;\n /**\n * Remote peer id\n */\n remotePeer;\n direction;\n timeline;\n multiplexer;\n encryption;\n status;\n transient;\n log;\n /**\n * User provided tags\n *\n */\n tags;\n /**\n * Reference to the new stream function of the multiplexer\n */\n _newStream;\n /**\n * Reference to the close function of the raw connection\n */\n _close;\n _abort;\n /**\n * Reference to the getStreams function of the muxer\n */\n _getStreams;\n /**\n * An implementation of the js-libp2p connection.\n * Any libp2p transport should use an upgrader to return this connection.\n */\n constructor(init) {\n const { remoteAddr, remotePeer, newStream, close, abort, getStreams } = init;\n this.id = `${(parseInt(String(Math.random() * 1e9))).toString(36)}${Date.now()}`;\n this.remoteAddr = remoteAddr;\n this.remotePeer = remotePeer;\n this.direction = init.direction;\n this.status = 'open';\n this.timeline = init.timeline;\n this.multiplexer = init.multiplexer;\n this.encryption = init.encryption;\n this.transient = init.transient ?? false;\n this.log = init.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`);\n if (this.remoteAddr.getPeerId() == null) {\n this.remoteAddr = this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`);\n }\n this._newStream = newStream;\n this._close = close;\n this._abort = abort;\n this._getStreams = getStreams;\n this.tags = [];\n }\n [Symbol.toStringTag] = 'Connection';\n [connectionSymbol] = true;\n /**\n * Get all the streams of the muxer\n */\n get streams() {\n return this._getStreams();\n }\n /**\n * Create a new stream from this connection\n */\n async newStream(protocols, options) {\n if (this.status === 'closing') {\n throw new CodeError('the connection is being closed', 'ERR_CONNECTION_BEING_CLOSED');\n }\n if (this.status === 'closed') {\n throw new CodeError('the connection is closed', 'ERR_CONNECTION_CLOSED');\n }\n if (!Array.isArray(protocols)) {\n protocols = [protocols];\n }\n if (this.transient && options?.runOnTransientConnection !== true) {\n throw new CodeError('Cannot open protocol stream on transient connection', 'ERR_TRANSIENT_CONNECTION');\n }\n const stream = await this._newStream(protocols, options);\n stream.direction = 'outbound';\n return stream;\n }\n /**\n * Close the connection\n */\n async close(options = {}) {\n if (this.status === 'closed' || this.status === 'closing') {\n return;\n }\n this.log('closing connection to %a', this.remoteAddr);\n this.status = 'closing';\n if (options.signal == null) {\n const signal = AbortSignal.timeout(CLOSE_TIMEOUT);\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n try {\n this.log.trace('closing all streams');\n // close all streams gracefully - this can throw if we're not multiplexed\n await Promise.all(this.streams.map(async (s) => s.close(options)));\n this.log.trace('closing underlying transport');\n // close raw connection\n await this._close(options);\n this.log.trace('updating timeline with close time');\n this.status = 'closed';\n this.timeline.close = Date.now();\n }\n catch (err) {\n this.log.error('error encountered during graceful close of connection to %a', this.remoteAddr, err);\n this.abort(err);\n }\n }\n abort(err) {\n this.log.error('aborting connection to %a due to error', this.remoteAddr, err);\n this.status = 'closing';\n this.streams.forEach(s => { s.abort(err); });\n this.log.error('all streams aborted', this.streams.length);\n // Abort raw connection\n this._abort(err);\n this.timeline.close = Date.now();\n this.status = 'closed';\n }\n}\nexport function createConnection(init) {\n return new ConnectionImpl(init);\n}\n//# sourceMappingURL=index.js.map","import { CodeError, ERR_TIMEOUT, setMaxListeners } from '@libp2p/interface';\nimport * as mss from '@libp2p/multistream-select';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { CustomProgressEvent } from 'progress-events';\nimport { createConnection } from './connection/index.js';\nimport { INBOUND_UPGRADE_TIMEOUT } from './connection-manager/constants.js';\nimport { codes } from './errors.js';\nimport { DEFAULT_MAX_INBOUND_STREAMS, DEFAULT_MAX_OUTBOUND_STREAMS } from './registrar.js';\nconst DEFAULT_PROTOCOL_SELECT_TIMEOUT = 30000;\nfunction findIncomingStreamLimit(protocol, registrar) {\n try {\n const { options } = registrar.getHandler(protocol);\n return options.maxInboundStreams;\n }\n catch (err) {\n if (err.code !== codes.ERR_NO_HANDLER_FOR_PROTOCOL) {\n throw err;\n }\n }\n return DEFAULT_MAX_INBOUND_STREAMS;\n}\nfunction findOutgoingStreamLimit(protocol, registrar, options = {}) {\n try {\n const { options } = registrar.getHandler(protocol);\n if (options.maxOutboundStreams != null) {\n return options.maxOutboundStreams;\n }\n }\n catch (err) {\n if (err.code !== codes.ERR_NO_HANDLER_FOR_PROTOCOL) {\n throw err;\n }\n }\n return options.maxOutboundStreams ?? DEFAULT_MAX_OUTBOUND_STREAMS;\n}\nfunction countStreams(protocol, direction, connection) {\n let streamCount = 0;\n connection.streams.forEach(stream => {\n if (stream.direction === direction && stream.protocol === protocol) {\n streamCount++;\n }\n });\n return streamCount;\n}\nexport class DefaultUpgrader {\n components;\n connectionEncryption;\n muxers;\n inboundUpgradeTimeout;\n events;\n constructor(components, init) {\n this.components = components;\n this.connectionEncryption = new Map();\n init.connectionEncryption.forEach(encrypter => {\n this.connectionEncryption.set(encrypter.protocol, encrypter);\n });\n this.muxers = new Map();\n init.muxers.forEach(muxer => {\n this.muxers.set(muxer.protocol, muxer);\n });\n this.inboundUpgradeTimeout = init.inboundUpgradeTimeout ?? INBOUND_UPGRADE_TIMEOUT;\n this.events = components.events;\n }\n [Symbol.toStringTag] = '@libp2p/upgrader';\n async shouldBlockConnection(remotePeer, maConn, connectionType) {\n const connectionGater = this.components.connectionGater[connectionType];\n if (connectionGater !== undefined) {\n if (await connectionGater(remotePeer, maConn)) {\n throw new CodeError(`The multiaddr connection is blocked by gater.${connectionType}`, codes.ERR_CONNECTION_INTERCEPTED);\n }\n }\n }\n /**\n * Upgrades an inbound connection\n */\n async upgradeInbound(maConn, opts) {\n const accept = await this.components.connectionManager.acceptIncomingConnection(maConn);\n if (!accept) {\n throw new CodeError('connection denied', codes.ERR_CONNECTION_DENIED);\n }\n let encryptedConn;\n let remotePeer;\n let upgradedConn;\n let muxerFactory;\n let cryptoProtocol;\n const signal = AbortSignal.timeout(this.inboundUpgradeTimeout);\n const onAbort = () => {\n maConn.abort(new CodeError('inbound upgrade timeout', ERR_TIMEOUT));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n setMaxListeners(Infinity, signal);\n try {\n if ((await this.components.connectionGater.denyInboundConnection?.(maConn)) === true) {\n throw new CodeError('The multiaddr connection is blocked by gater.acceptConnection', codes.ERR_CONNECTION_INTERCEPTED);\n }\n this.components.metrics?.trackMultiaddrConnection(maConn);\n maConn.log('starting the inbound connection upgrade');\n // Protect\n let protectedConn = maConn;\n if (opts?.skipProtection !== true) {\n const protector = this.components.connectionProtector;\n if (protector != null) {\n maConn.log('protecting the inbound connection');\n protectedConn = await protector.protect(maConn);\n }\n }\n try {\n // Encrypt the connection\n encryptedConn = protectedConn;\n if (opts?.skipEncryption !== true) {\n opts?.onProgress?.(new CustomProgressEvent('upgrader:encrypt-inbound-connection'));\n ({\n conn: encryptedConn,\n remotePeer,\n protocol: cryptoProtocol\n } = await this._encryptInbound(protectedConn));\n const maConn = {\n ...protectedConn,\n ...encryptedConn\n };\n await this.shouldBlockConnection(remotePeer, maConn, 'denyInboundEncryptedConnection');\n }\n else {\n const idStr = maConn.remoteAddr.getPeerId();\n if (idStr == null) {\n throw new CodeError('inbound connection that skipped encryption must have a peer id', codes.ERR_INVALID_MULTIADDR);\n }\n const remotePeerId = peerIdFromString(idStr);\n cryptoProtocol = 'native';\n remotePeer = remotePeerId;\n }\n upgradedConn = encryptedConn;\n if (opts?.muxerFactory != null) {\n muxerFactory = opts.muxerFactory;\n }\n else if (this.muxers.size > 0) {\n opts?.onProgress?.(new CustomProgressEvent('upgrader:multiplex-inbound-connection'));\n // Multiplex the connection\n const multiplexed = await this._multiplexInbound({\n ...protectedConn,\n ...encryptedConn\n }, this.muxers);\n muxerFactory = multiplexed.muxerFactory;\n upgradedConn = multiplexed.stream;\n }\n }\n catch (err) {\n maConn.log.error('failed to upgrade inbound connection', err);\n throw err;\n }\n await this.shouldBlockConnection(remotePeer, maConn, 'denyInboundUpgradedConnection');\n maConn.log('successfully upgraded inbound connection');\n return this._createConnection({\n cryptoProtocol,\n direction: 'inbound',\n maConn,\n upgradedConn,\n muxerFactory,\n remotePeer,\n transient: opts?.transient\n });\n }\n finally {\n signal.removeEventListener('abort', onAbort);\n this.components.connectionManager.afterUpgradeInbound();\n }\n }\n /**\n * Upgrades an outbound connection\n */\n async upgradeOutbound(maConn, opts) {\n const idStr = maConn.remoteAddr.getPeerId();\n let remotePeerId;\n if (idStr != null) {\n remotePeerId = peerIdFromString(idStr);\n await this.shouldBlockConnection(remotePeerId, maConn, 'denyOutboundConnection');\n }\n let encryptedConn;\n let remotePeer;\n let upgradedConn;\n let cryptoProtocol;\n let muxerFactory;\n this.components.metrics?.trackMultiaddrConnection(maConn);\n maConn.log('starting the outbound connection upgrade');\n // If the transport natively supports encryption, skip connection\n // protector and encryption\n // Protect\n let protectedConn = maConn;\n if (opts?.skipProtection !== true) {\n const protector = this.components.connectionProtector;\n if (protector != null) {\n protectedConn = await protector.protect(maConn);\n }\n }\n try {\n // Encrypt the connection\n encryptedConn = protectedConn;\n if (opts?.skipEncryption !== true) {\n ({\n conn: encryptedConn,\n remotePeer,\n protocol: cryptoProtocol\n } = await this._encryptOutbound(protectedConn, remotePeerId));\n const maConn = {\n ...protectedConn,\n ...encryptedConn\n };\n await this.shouldBlockConnection(remotePeer, maConn, 'denyOutboundEncryptedConnection');\n }\n else {\n if (remotePeerId == null) {\n throw new CodeError('Encryption was skipped but no peer id was passed', codes.ERR_INVALID_PEER);\n }\n cryptoProtocol = 'native';\n remotePeer = remotePeerId;\n }\n upgradedConn = encryptedConn;\n if (opts?.muxerFactory != null) {\n muxerFactory = opts.muxerFactory;\n }\n else if (this.muxers.size > 0) {\n // Multiplex the connection\n const multiplexed = await this._multiplexOutbound({\n ...protectedConn,\n ...encryptedConn\n }, this.muxers);\n muxerFactory = multiplexed.muxerFactory;\n upgradedConn = multiplexed.stream;\n }\n }\n catch (err) {\n maConn.log.error('failed to upgrade outbound connection', err);\n await maConn.close(err);\n throw err;\n }\n await this.shouldBlockConnection(remotePeer, maConn, 'denyOutboundUpgradedConnection');\n maConn.log('successfully upgraded outbound connection');\n return this._createConnection({\n cryptoProtocol,\n direction: 'outbound',\n maConn,\n upgradedConn,\n muxerFactory,\n remotePeer,\n transient: opts?.transient\n });\n }\n /**\n * A convenience method for generating a new `Connection`\n */\n _createConnection(opts) {\n const { cryptoProtocol, direction, maConn, upgradedConn, remotePeer, muxerFactory, transient } = opts;\n let muxer;\n let newStream;\n let connection; // eslint-disable-line prefer-const\n if (muxerFactory != null) {\n // Create the muxer\n muxer = muxerFactory.createStreamMuxer({\n direction,\n // Run anytime a remote stream is created\n onIncomingStream: muxedStream => {\n if (connection == null) {\n return;\n }\n void Promise.resolve()\n .then(async () => {\n const protocols = this.components.registrar.getProtocols();\n const { stream, protocol } = await mss.handle(muxedStream, protocols, {\n log: muxedStream.log,\n yieldBytes: false\n });\n if (connection == null) {\n return;\n }\n connection.log('incoming stream opened on %s', protocol);\n const incomingLimit = findIncomingStreamLimit(protocol, this.components.registrar);\n const streamCount = countStreams(protocol, 'inbound', connection);\n if (streamCount === incomingLimit) {\n const err = new CodeError(`Too many inbound protocol streams for protocol \"${protocol}\" - limit ${incomingLimit}`, codes.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);\n muxedStream.abort(err);\n throw err;\n }\n // after the handshake the returned stream can have early data so override\n // the souce/sink\n muxedStream.source = stream.source;\n muxedStream.sink = stream.sink;\n muxedStream.protocol = protocol;\n // allow closing the write end of a not-yet-negotiated stream\n if (stream.closeWrite != null) {\n muxedStream.closeWrite = stream.closeWrite;\n }\n // allow closing the read end of a not-yet-negotiated stream\n if (stream.closeRead != null) {\n muxedStream.closeRead = stream.closeRead;\n }\n // make sure we don't try to negotiate a stream we are closing\n if (stream.close != null) {\n muxedStream.close = stream.close;\n }\n // If a protocol stream has been successfully negotiated and is to be passed to the application,\n // the peerstore should ensure that the peer is registered with that protocol\n await this.components.peerStore.merge(remotePeer, {\n protocols: [protocol]\n });\n this.components.metrics?.trackProtocolStream(muxedStream, connection);\n this._onStream({ connection, stream: muxedStream, protocol });\n })\n .catch(async (err) => {\n connection.log.error('error handling incoming stream id %s', muxedStream.id, err.message, err.code, err.stack);\n if (muxedStream.timeline.close == null) {\n await muxedStream.close();\n }\n });\n }\n });\n newStream = async (protocols, options = {}) => {\n if (muxer == null) {\n throw new CodeError('Stream is not multiplexed', codes.ERR_MUXER_UNAVAILABLE);\n }\n connection.log('starting new stream for protocols %s', protocols);\n const muxedStream = await muxer.newStream();\n connection.log.trace('started new stream %s for protocols %s', muxedStream.id, protocols);\n try {\n if (options.signal == null) {\n muxedStream.log('no abort signal was passed while trying to negotiate protocols %s falling back to default timeout', protocols);\n const signal = AbortSignal.timeout(DEFAULT_PROTOCOL_SELECT_TIMEOUT);\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n muxedStream.log.trace('selecting protocol from protocols %s', protocols);\n const { stream, protocol } = await mss.select(muxedStream, protocols, {\n ...options,\n log: muxedStream.log,\n yieldBytes: true\n });\n muxedStream.log('selected protocol %s', protocol);\n const outgoingLimit = findOutgoingStreamLimit(protocol, this.components.registrar, options);\n const streamCount = countStreams(protocol, 'outbound', connection);\n if (streamCount >= outgoingLimit) {\n const err = new CodeError(`Too many outbound protocol streams for protocol \"${protocol}\" - ${streamCount}/${outgoingLimit}`, codes.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);\n muxedStream.abort(err);\n throw err;\n }\n // If a protocol stream has been successfully negotiated and is to be passed to the application,\n // the peerstore should ensure that the peer is registered with that protocol\n await this.components.peerStore.merge(remotePeer, {\n protocols: [protocol]\n });\n // after the handshake the returned stream can have early data so override\n // the souce/sink\n muxedStream.source = stream.source;\n muxedStream.sink = stream.sink;\n muxedStream.protocol = protocol;\n // allow closing the write end of a not-yet-negotiated stream\n if (stream.closeWrite != null) {\n muxedStream.closeWrite = stream.closeWrite;\n }\n // allow closing the read end of a not-yet-negotiated stream\n if (stream.closeRead != null) {\n muxedStream.closeRead = stream.closeRead;\n }\n // make sure we don't try to negotiate a stream we are closing\n if (stream.close != null) {\n muxedStream.close = stream.close;\n }\n this.components.metrics?.trackProtocolStream(muxedStream, connection);\n return muxedStream;\n }\n catch (err) {\n connection.log.error('could not create new stream for protocols %s', protocols, err);\n if (muxedStream.timeline.close == null) {\n muxedStream.abort(err);\n }\n if (err.code != null) {\n throw err;\n }\n throw new CodeError(String(err), codes.ERR_UNSUPPORTED_PROTOCOL);\n }\n };\n // Pipe all data through the muxer\n void Promise.all([\n muxer.sink(upgradedConn.source),\n upgradedConn.sink(muxer.source)\n ]).catch(err => {\n connection.log.error('error piping data through muxer', err);\n });\n }\n const _timeline = maConn.timeline;\n maConn.timeline = new Proxy(_timeline, {\n set: (...args) => {\n if (connection != null && args[1] === 'close' && args[2] != null && _timeline.close == null) {\n // Wait for close to finish before notifying of the closure\n (async () => {\n try {\n if (connection.status === 'open') {\n await connection.close();\n }\n }\n catch (err) {\n connection.log.error('error closing connection after timeline close', err);\n }\n finally {\n this.events.safeDispatchEvent('connection:close', {\n detail: connection\n });\n }\n })().catch(err => {\n connection.log.error('error thrown while dispatching connection:close event', err);\n });\n }\n return Reflect.set(...args);\n }\n });\n maConn.timeline.upgraded = Date.now();\n const errConnectionNotMultiplexed = () => {\n throw new CodeError('connection is not multiplexed', codes.ERR_CONNECTION_NOT_MULTIPLEXED);\n };\n // Create the connection\n connection = createConnection({\n remoteAddr: maConn.remoteAddr,\n remotePeer,\n status: 'open',\n direction,\n timeline: maConn.timeline,\n multiplexer: muxer?.protocol,\n encryption: cryptoProtocol,\n transient,\n logger: this.components.logger,\n newStream: newStream ?? errConnectionNotMultiplexed,\n getStreams: () => { if (muxer != null) {\n return muxer.streams;\n }\n else {\n return [];\n } },\n close: async (options) => {\n // Ensure remaining streams are closed gracefully\n if (muxer != null) {\n connection.log.trace('close muxer');\n await muxer.close(options);\n }\n connection.log.trace('close maconn');\n // close the underlying transport\n await maConn.close(options);\n connection.log.trace('closed maconn');\n },\n abort: (err) => {\n maConn.abort(err);\n // Ensure remaining streams are aborted\n if (muxer != null) {\n muxer.abort(err);\n }\n }\n });\n this.events.safeDispatchEvent('connection:open', {\n detail: connection\n });\n return connection;\n }\n /**\n * Routes incoming streams to the correct handler\n */\n _onStream(opts) {\n const { connection, stream, protocol } = opts;\n const { handler, options } = this.components.registrar.getHandler(protocol);\n if (connection.transient && options.runOnTransientConnection !== true) {\n throw new CodeError('Cannot open protocol stream on transient connection', 'ERR_TRANSIENT_CONNECTION');\n }\n handler({ connection, stream });\n }\n /**\n * Attempts to encrypt the incoming `connection` with the provided `cryptos`\n */\n async _encryptInbound(connection) {\n const protocols = Array.from(this.connectionEncryption.keys());\n connection.log('handling inbound crypto protocol selection', protocols);\n try {\n const { stream, protocol } = await mss.handle(connection, protocols, {\n log: connection.log\n });\n const encrypter = this.connectionEncryption.get(protocol);\n if (encrypter == null) {\n throw new Error(`no crypto module found for ${protocol}`);\n }\n connection.log('encrypting inbound connection using', protocol);\n return {\n ...await encrypter.secureInbound(this.components.peerId, stream),\n protocol\n };\n }\n catch (err) {\n connection.log.error('encrypting inbound connection failed', err);\n throw new CodeError(err.message, codes.ERR_ENCRYPTION_FAILED);\n }\n }\n /**\n * Attempts to encrypt the given `connection` with the provided connection encrypters.\n * The first `ConnectionEncrypter` module to succeed will be used\n */\n async _encryptOutbound(connection, remotePeerId) {\n const protocols = Array.from(this.connectionEncryption.keys());\n connection.log('selecting outbound crypto protocol', protocols);\n try {\n connection.log.trace('selecting encrypter from %s', protocols);\n const { stream, protocol } = await mss.select(connection, protocols, {\n log: connection.log,\n yieldBytes: true\n });\n const encrypter = this.connectionEncryption.get(protocol);\n if (encrypter == null) {\n throw new Error(`no crypto module found for ${protocol}`);\n }\n connection.log('encrypting outbound connection to %p using %s', remotePeerId, encrypter);\n return {\n ...await encrypter.secureOutbound(this.components.peerId, stream, remotePeerId),\n protocol\n };\n }\n catch (err) {\n connection.log.error('encrypting outbound connection to %p failed', remotePeerId, err);\n throw new CodeError(err.message, codes.ERR_ENCRYPTION_FAILED);\n }\n }\n /**\n * Selects one of the given muxers via multistream-select. That\n * muxer will be used for all future streams on the connection.\n */\n async _multiplexOutbound(connection, muxers) {\n const protocols = Array.from(muxers.keys());\n connection.log('outbound selecting muxer %s', protocols);\n try {\n connection.log.trace('selecting stream muxer from %s', protocols);\n const { stream, protocol } = await mss.select(connection, protocols, {\n log: connection.log,\n yieldBytes: true\n });\n connection.log('selected %s as muxer protocol', protocol);\n const muxerFactory = muxers.get(protocol);\n return { stream, muxerFactory };\n }\n catch (err) {\n connection.log.error('error multiplexing outbound connection', err);\n throw new CodeError(String(err), codes.ERR_MUXER_UNAVAILABLE);\n }\n }\n /**\n * Registers support for one of the given muxers via multistream-select. The\n * selected muxer will be used for all future streams on the connection.\n */\n async _multiplexInbound(connection, muxers) {\n const protocols = Array.from(muxers.keys());\n connection.log('inbound handling muxers %s', protocols);\n try {\n const { stream, protocol } = await mss.handle(connection, protocols, {\n log: connection.log\n });\n const muxerFactory = muxers.get(protocol);\n return { stream, muxerFactory };\n }\n catch (err) {\n connection.log.error('error multiplexing inbound connection', err);\n throw new CodeError(String(err), codes.ERR_MUXER_UNAVAILABLE);\n }\n }\n}\n//# sourceMappingURL=upgrader.js.map","import { unmarshalPrivateKey, unmarshalPublicKey } from '@libp2p/crypto/keys';\nimport { contentRoutingSymbol, CodeError, TypedEventEmitter, CustomEvent, setMaxListeners, peerDiscoverySymbol, peerRoutingSymbol } from '@libp2p/interface';\nimport { defaultLogger } from '@libp2p/logger';\nimport { PeerSet } from '@libp2p/peer-collections';\nimport { peerIdFromString } from '@libp2p/peer-id';\nimport { createEd25519PeerId } from '@libp2p/peer-id-factory';\nimport { PersistentPeerStore } from '@libp2p/peer-store';\nimport { isMultiaddr } from '@multiformats/multiaddr';\nimport { MemoryDatastore } from 'datastore-core/memory';\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { DefaultAddressManager } from './address-manager/index.js';\nimport { checkServiceDependencies, defaultComponents } from './components.js';\nimport { connectionGater } from './config/connection-gater.js';\nimport { validateConfig } from './config.js';\nimport { DefaultConnectionManager } from './connection-manager/index.js';\nimport { ConnectionMonitor } from './connection-monitor.js';\nimport { CompoundContentRouting } from './content-routing.js';\nimport { codes } from './errors.js';\nimport { DefaultPeerRouting } from './peer-routing.js';\nimport { RandomWalk } from './random-walk.js';\nimport { DefaultRegistrar } from './registrar.js';\nimport { DefaultTransportManager } from './transport-manager.js';\nimport { DefaultUpgrader } from './upgrader.js';\nimport * as pkg from './version.js';\nexport class Libp2pNode extends TypedEventEmitter {\n peerId;\n peerStore;\n contentRouting;\n peerRouting;\n metrics;\n services;\n logger;\n status;\n components;\n log;\n constructor(init) {\n super();\n this.status = 'stopped';\n // event bus - components can listen to this emitter to be notified of system events\n // and also cause them to be emitted\n const events = new TypedEventEmitter();\n const originalDispatch = events.dispatchEvent.bind(events);\n events.dispatchEvent = (evt) => {\n const internalResult = originalDispatch(evt);\n const externalResult = this.dispatchEvent(new CustomEvent(evt.type, { detail: evt.detail }));\n return internalResult || externalResult;\n };\n // This emitter gets listened to a lot\n setMaxListeners(Infinity, events);\n this.peerId = init.peerId;\n this.logger = init.logger ?? defaultLogger();\n this.log = this.logger.forComponent('libp2p');\n // @ts-expect-error {} may not be of type T\n this.services = {};\n // @ts-expect-error defaultComponents is missing component types added later\n const components = this.components = defaultComponents({\n peerId: init.peerId,\n privateKey: init.privateKey,\n nodeInfo: init.nodeInfo ?? {\n name: pkg.name,\n version: pkg.version\n },\n logger: this.logger,\n events,\n datastore: init.datastore ?? new MemoryDatastore(),\n connectionGater: connectionGater(init.connectionGater),\n dns: init.dns\n });\n this.peerStore = this.configureComponent('peerStore', new PersistentPeerStore(components, {\n addressFilter: this.components.connectionGater.filterMultiaddrForPeer,\n ...init.peerStore\n }));\n // Create Metrics\n if (init.metrics != null) {\n this.metrics = this.configureComponent('metrics', init.metrics(this.components));\n }\n components.events.addEventListener('peer:update', evt => {\n // if there was no peer previously in the peer store this is a new peer\n if (evt.detail.previous == null) {\n const peerInfo = {\n id: evt.detail.peer.id,\n multiaddrs: evt.detail.peer.addresses.map(a => a.multiaddr)\n };\n components.events.safeDispatchEvent('peer:discovery', { detail: peerInfo });\n }\n });\n // Set up connection protector if configured\n if (init.connectionProtector != null) {\n this.configureComponent('connectionProtector', init.connectionProtector(components));\n }\n // Set up the Upgrader\n this.components.upgrader = new DefaultUpgrader(this.components, {\n connectionEncryption: (init.connectionEncryption ?? []).map((fn, index) => this.configureComponent(`connection-encryption-${index}`, fn(this.components))),\n muxers: (init.streamMuxers ?? []).map((fn, index) => this.configureComponent(`stream-muxers-${index}`, fn(this.components))),\n inboundUpgradeTimeout: init.connectionManager?.inboundUpgradeTimeout\n });\n // Setup the transport manager\n this.configureComponent('transportManager', new DefaultTransportManager(this.components, init.transportManager));\n // Create the Connection Manager\n this.configureComponent('connectionManager', new DefaultConnectionManager(this.components, init.connectionManager));\n if (init.connectionMonitor?.enabled !== false) {\n // Create the Connection Monitor if not disabled\n this.configureComponent('connectionMonitor', new ConnectionMonitor(this.components, init.connectionMonitor));\n }\n // Create the Registrar\n this.configureComponent('registrar', new DefaultRegistrar(this.components));\n // Addresses {listen, announce, noAnnounce}\n this.configureComponent('addressManager', new DefaultAddressManager(this.components, init.addresses));\n // Peer routers\n const peerRouters = (init.peerRouters ?? []).map((fn, index) => this.configureComponent(`peer-router-${index}`, fn(this.components)));\n this.peerRouting = this.components.peerRouting = this.configureComponent('peerRouting', new DefaultPeerRouting(this.components, {\n routers: peerRouters\n }));\n // Content routers\n const contentRouters = (init.contentRouters ?? []).map((fn, index) => this.configureComponent(`content-router-${index}`, fn(this.components)));\n this.contentRouting = this.components.contentRouting = this.configureComponent('contentRouting', new CompoundContentRouting(this.components, {\n routers: contentRouters\n }));\n // Random walk\n this.configureComponent('randomWalk', new RandomWalk(this.components));\n (init.peerDiscovery ?? []).forEach((fn, index) => {\n const service = this.configureComponent(`peer-discovery-${index}`, fn(this.components));\n service.addEventListener('peer', (evt) => {\n this.#onDiscoveryPeer(evt);\n });\n });\n // Transport modules\n init.transports?.forEach((fn, index) => {\n this.components.transportManager.add(this.configureComponent(`transport-${index}`, fn(this.components)));\n });\n // User defined modules\n if (init.services != null) {\n for (const name of Object.keys(init.services)) {\n const createService = init.services[name];\n const service = createService(this.components);\n if (service == null) {\n this.log.error('service factory %s returned null or undefined instance', name);\n continue;\n }\n this.services[name] = service;\n this.configureComponent(name, service);\n if (service[contentRoutingSymbol] != null) {\n this.log('registering service %s for content routing', name);\n contentRouters.push(service[contentRoutingSymbol]);\n }\n if (service[peerRoutingSymbol] != null) {\n this.log('registering service %s for peer routing', name);\n peerRouters.push(service[peerRoutingSymbol]);\n }\n if (service[peerDiscoverySymbol] != null) {\n this.log('registering service %s for peer discovery', name);\n service[peerDiscoverySymbol].addEventListener?.('peer', (evt) => {\n this.#onDiscoveryPeer(evt);\n });\n }\n }\n }\n // Ensure all services have their required dependencies\n checkServiceDependencies(components);\n }\n configureComponent(name, component) {\n if (component == null) {\n this.log.error('component %s was null or undefined', name);\n }\n // @ts-expect-error cannot assign props\n this.components[name] = component;\n return component;\n }\n /**\n * Starts the libp2p node and all its subsystems\n */\n async start() {\n if (this.status !== 'stopped') {\n return;\n }\n this.status = 'starting';\n this.log('libp2p is starting');\n try {\n await this.components.beforeStart?.();\n await this.components.start();\n await this.components.afterStart?.();\n this.status = 'started';\n this.safeDispatchEvent('start', { detail: this });\n this.log('libp2p has started');\n }\n catch (err) {\n this.log.error('An error occurred starting libp2p', err);\n // set status to 'started' so this.stop() will stop any running components\n this.status = 'started';\n await this.stop();\n throw err;\n }\n }\n /**\n * Stop the libp2p node by closing its listeners and open connections\n */\n async stop() {\n if (this.status !== 'started') {\n return;\n }\n this.log('libp2p is stopping');\n this.status = 'stopping';\n await this.components.beforeStop?.();\n await this.components.stop();\n await this.components.afterStop?.();\n this.status = 'stopped';\n this.safeDispatchEvent('stop', { detail: this });\n this.log('libp2p has stopped');\n }\n getConnections(peerId) {\n return this.components.connectionManager.getConnections(peerId);\n }\n getDialQueue() {\n return this.components.connectionManager.getDialQueue();\n }\n getPeers() {\n const peerSet = new PeerSet();\n for (const conn of this.components.connectionManager.getConnections()) {\n peerSet.add(conn.remotePeer);\n }\n return Array.from(peerSet);\n }\n async dial(peer, options = {}) {\n return this.components.connectionManager.openConnection(peer, {\n // ensure any userland dials take top priority in the queue\n priority: 75,\n ...options\n });\n }\n async dialProtocol(peer, protocols, options = {}) {\n if (protocols == null) {\n throw new CodeError('no protocols were provided to open a stream', codes.ERR_INVALID_PROTOCOLS_FOR_STREAM);\n }\n protocols = Array.isArray(protocols) ? protocols : [protocols];\n if (protocols.length === 0) {\n throw new CodeError('no protocols were provided to open a stream', codes.ERR_INVALID_PROTOCOLS_FOR_STREAM);\n }\n const connection = await this.dial(peer, options);\n return connection.newStream(protocols, options);\n }\n getMultiaddrs() {\n return this.components.addressManager.getAddresses();\n }\n getProtocols() {\n return this.components.registrar.getProtocols();\n }\n async hangUp(peer, options = {}) {\n if (isMultiaddr(peer)) {\n peer = peerIdFromString(peer.getPeerId() ?? '');\n }\n await this.components.connectionManager.closeConnections(peer, options);\n }\n /**\n * Get the public key for the given peer id\n */\n async getPublicKey(peer, options = {}) {\n this.log('getPublicKey %p', peer);\n if (peer.publicKey != null) {\n return peer.publicKey;\n }\n try {\n const peerInfo = await this.peerStore.get(peer);\n if (peerInfo.id.publicKey != null) {\n return peerInfo.id.publicKey;\n }\n }\n catch (err) {\n if (err.code !== codes.ERR_NOT_FOUND) {\n throw err;\n }\n }\n const peerKey = uint8ArrayConcat([\n uint8ArrayFromString('/pk/'),\n peer.multihash.digest\n ]);\n // search any available content routing methods\n const bytes = await this.contentRouting.get(peerKey, options);\n // ensure the returned key is valid\n unmarshalPublicKey(bytes);\n await this.peerStore.patch(peer, {\n publicKey: bytes\n });\n return bytes;\n }\n async handle(protocols, handler, options) {\n if (!Array.isArray(protocols)) {\n protocols = [protocols];\n }\n await Promise.all(protocols.map(async (protocol) => {\n await this.components.registrar.handle(protocol, handler, options);\n }));\n }\n async unhandle(protocols) {\n if (!Array.isArray(protocols)) {\n protocols = [protocols];\n }\n await Promise.all(protocols.map(async (protocol) => {\n await this.components.registrar.unhandle(protocol);\n }));\n }\n async register(protocol, topology) {\n return this.components.registrar.register(protocol, topology);\n }\n unregister(id) {\n this.components.registrar.unregister(id);\n }\n async isDialable(multiaddr, options = {}) {\n return this.components.connectionManager.isDialable(multiaddr, options);\n }\n /**\n * Called whenever peer discovery services emit `peer` events and adds peers\n * to the peer store.\n */\n #onDiscoveryPeer(evt) {\n const { detail: peer } = evt;\n if (peer.id.toString() === this.peerId.toString()) {\n this.log.error(new Error(codes.ERR_DISCOVERED_SELF));\n return;\n }\n void this.components.peerStore.merge(peer.id, {\n multiaddrs: peer.multiaddrs\n })\n .catch(err => { this.log.error(err); });\n }\n}\n/**\n * Returns a new Libp2pNode instance - this exposes more of the internals than the\n * libp2p interface and is useful for testing and debugging.\n */\nexport async function createLibp2pNode(options = {}) {\n const peerId = options.peerId ??= await createEd25519PeerId();\n if (peerId.privateKey == null) {\n throw new CodeError('peer id was missing private key', 'ERR_MISSING_PRIVATE_KEY');\n }\n options.privateKey ??= await unmarshalPrivateKey(peerId.privateKey);\n return new Libp2pNode(await validateConfig(options));\n}\n//# sourceMappingURL=libp2p.js.map","/**\n * @packageDocumentation\n *\n * Use the `createLibp2p` function to create a libp2p node.\n *\n * @example\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n *\n * const node = await createLibp2p({\n * // ...other options\n * })\n * ```\n */\nimport { createLibp2pNode } from './libp2p.js';\n/**\n * Returns a new instance of the Libp2p interface, generating a new PeerId\n * if one is not passed as part of the options.\n *\n * The node will be started unless `start: false` is passed as an option.\n *\n * @example\n *\n * ```TypeScript\n * import { createLibp2p } from 'libp2p'\n * import { tcp } from '@libp2p/tcp'\n * import { mplex } from '@libp2p/mplex'\n * import { noise } from '@chainsafe/libp2p-noise'\n * import { yamux } from '@chainsafe/libp2p-yamux'\n *\n * // specify options\n * const options = {\n * transports: [tcp()],\n * streamMuxers: [yamux(), mplex()],\n * connectionEncryption: [noise()]\n * }\n *\n * // create libp2p\n * const libp2p = await createLibp2p(options)\n * ```\n */\nexport async function createLibp2p(options = {}) {\n const node = await createLibp2pNode(options);\n if (options.start !== false) {\n await node.start();\n }\n return node;\n}\n//# sourceMappingURL=index.js.map","import { keychain } from '@libp2p/keychain';\nimport { defaultLogger } from '@libp2p/logger';\nimport { Key } from 'interface-datastore';\nimport { createLibp2p as create } from 'libp2p';\nimport { libp2pDefaults } from './libp2p-defaults.js';\nexport async function createLibp2p(options) {\n let peerId = options.libp2p?.peerId;\n const logger = options.logger ?? defaultLogger();\n // if no peer id was passed, try to load it from the keychain\n if (peerId == null) {\n const chain = keychain(options.keychain)({\n datastore: options.datastore,\n logger\n });\n const selfKey = new Key('/pkcs8/self');\n if (await options.datastore.has(selfKey)) {\n // load the peer id from the keychain\n peerId = await chain.exportPeerId('self');\n }\n }\n const defaults = libp2pDefaults(options);\n options = options ?? {};\n // @ts-expect-error derived ServiceMap is not compatible with ServiceFactoryMap\n return create({\n ...defaults,\n ...options.libp2p,\n start: false\n });\n}\n//# sourceMappingURL=libp2p.js.map","/**\n * @packageDocumentation\n *\n * Exports a `createHelia` function that returns an object that implements the {@link Helia} API.\n *\n * Pass it to other modules like {@link https://www.npmjs.com/package/@helia/unixfs | @helia/unixfs} to make files available on the distributed web.\n *\n * @example\n *\n * ```typescript\n * import { createHelia } from 'helia'\n * import { unixfs } from '@helia/unixfs'\n * import { CID } from 'multiformats/cid'\n *\n * const helia = await createHelia()\n *\n * const fs = unixfs(helia)\n * fs.cat(CID.parse('bafyFoo'))\n * ```\n */\nimport { MemoryBlockstore } from 'blockstore-core';\nimport { MemoryDatastore } from 'datastore-core';\nimport { HeliaImpl } from './helia.js';\nimport { libp2pDefaults } from './utils/libp2p-defaults.js';\nimport { createLibp2p } from './utils/libp2p.js';\n// re-export interface types so people don't have to depend on @helia/interface\n// if they don't want to\nexport * from '@helia/interface';\nexport * from '@helia/interface/blocks';\nexport * from '@helia/interface/pins';\nexport { libp2pDefaults };\nexport async function createHelia(init = {}) {\n const datastore = init.datastore ?? new MemoryDatastore();\n const blockstore = init.blockstore ?? new MemoryBlockstore();\n let libp2p;\n if (isLibp2p(init.libp2p)) {\n libp2p = init.libp2p;\n }\n else {\n libp2p = await createLibp2p({\n ...init,\n libp2p: init.libp2p,\n datastore\n });\n }\n const helia = new HeliaImpl({\n ...init,\n libp2p,\n datastore,\n blockstore\n });\n if (init.start !== false) {\n await helia.start();\n }\n return helia;\n}\nfunction isLibp2p(obj) {\n if (obj == null) {\n return false;\n }\n // a non-exhaustive list of methods found on the libp2p object\n const funcs = ['dial', 'dialProtocol', 'hangUp', 'handle', 'unhandle', 'getMultiaddrs', 'getProtocols'];\n // if these are all functions it's probably a libp2p object\n return funcs.every(m => typeof obj[m] === 'function');\n}\n//# sourceMappingURL=index.js.map","/**\n * @packageDocumentation\n *\n * A Blockstore implementation that uses a flavour of [Level](https://leveljs.org/) as a backend.\n *\n * N.b. this is here largely for the sake of completeness, in node you should probably use FSDatastore, in browsers you should probably use IDBDatastore.\n *\n * @example\n *\n * ```js\n * import { LevelBlockstore } from 'blockstore-level'\n *\n * const store = new LevelBlockstore('path/to/store')\n * ```\n */\nimport { BaseBlockstore, Errors } from 'blockstore-core';\nimport { Level } from 'level';\nimport { base32upper } from 'multiformats/bases/base32';\nimport { CID } from 'multiformats/cid';\nimport * as raw from 'multiformats/codecs/raw';\nimport * as Digest from 'multiformats/hashes/digest';\n/**\n * A blockstore backed by leveldb\n */\nexport class LevelBlockstore extends BaseBlockstore {\n db;\n opts;\n base;\n constructor(path, init = {}) {\n super();\n this.db = typeof path === 'string'\n ? new Level(path, {\n ...init,\n keyEncoding: 'utf8',\n valueEncoding: 'view'\n })\n : path;\n this.opts = {\n createIfMissing: true,\n compression: false, // same default as go\n ...init\n };\n this.base = init.base ?? base32upper;\n }\n #encode(cid) {\n return `/${this.base.encoder.encode(cid.multihash.bytes)}`;\n }\n #decode(key) {\n return CID.createV1(raw.code, Digest.decode(this.base.decoder.decode(key.substring(1))));\n }\n async open() {\n try {\n await this.db.open(this.opts);\n }\n catch (err) {\n throw Errors.openFailedError(err);\n }\n }\n async put(key, value) {\n try {\n await this.db.put(this.#encode(key), value);\n return key;\n }\n catch (err) {\n throw Errors.putFailedError(err);\n }\n }\n async get(key) {\n let data;\n try {\n data = await this.db.get(this.#encode(key));\n }\n catch (err) {\n if (err.notFound != null) {\n throw Errors.notFoundError(err);\n }\n throw Errors.getFailedError(err);\n }\n return data;\n }\n async has(key) {\n try {\n await this.db.get(this.#encode(key));\n }\n catch (err) {\n if (err.notFound != null) {\n return false;\n }\n throw err;\n }\n return true;\n }\n async delete(key) {\n try {\n await this.db.del(this.#encode(key));\n }\n catch (err) {\n throw Errors.deleteFailedError(err);\n }\n }\n async close() {\n await this.db.close();\n }\n async *getAll(options) {\n for await (const { key, value } of this.#query({ values: true })) {\n yield { cid: this.#decode(key), block: value };\n }\n }\n async *#query(opts) {\n const iteratorOpts = {\n keys: true,\n keyEncoding: 'buffer',\n values: opts.values\n };\n // Let the db do the prefix matching\n if (opts.prefix != null) {\n const prefix = opts.prefix.toString();\n // Match keys greater than or equal to `prefix` and\n iteratorOpts.gte = prefix;\n // less than `prefix` + \\xFF (hex escape sequence)\n iteratorOpts.lt = prefix + '\\xFF';\n }\n const li = this.db.iterator(iteratorOpts);\n try {\n for await (const [key, value] of li) {\n // @ts-expect-error key is a buffer because keyEncoding is \"buffer\"\n yield { key: new TextDecoder().decode(key), value };\n }\n }\n finally {\n await li.close();\n }\n }\n}\n//# sourceMappingURL=index.js.map","export const PROTOCOL_VERSION = 'ipfs/0.1.0'; // deprecated\nexport const MULTICODEC_IDENTIFY = '/ipfs/id/1.0.0'; // deprecated\nexport const MULTICODEC_IDENTIFY_PUSH = '/ipfs/id/push/1.0.0'; // deprecated\nexport const IDENTIFY_PROTOCOL_VERSION = '0.1.0';\nexport const MULTICODEC_IDENTIFY_PROTOCOL_NAME = 'id';\nexport const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME = 'id/push';\nexport const MULTICODEC_IDENTIFY_PROTOCOL_VERSION = '1.0.0';\nexport const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION = '1.0.0';\n// https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/identify/id.go#L52\nexport const MAX_IDENTIFY_MESSAGE_SIZE = 1024 * 8;\n// https://github.com/libp2p/go-libp2p/blob/0385ec924bad172f74a74db09939e97c079b1420/p2p/protocol/identify/id.go#L47C7-L47C25\nexport const MAX_PUSH_CONCURRENCY = 32;\n//# sourceMappingURL=consts.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { encodeMessage, decodeMessage, message } from 'protons-runtime';\nexport var Identify;\n(function (Identify) {\n let _codec;\n Identify.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if (obj.protocolVersion != null) {\n w.uint32(42);\n w.string(obj.protocolVersion);\n }\n if (obj.agentVersion != null) {\n w.uint32(50);\n w.string(obj.agentVersion);\n }\n if (obj.publicKey != null) {\n w.uint32(10);\n w.bytes(obj.publicKey);\n }\n if (obj.listenAddrs != null) {\n for (const value of obj.listenAddrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (obj.observedAddr != null) {\n w.uint32(34);\n w.bytes(obj.observedAddr);\n }\n if (obj.protocols != null) {\n for (const value of obj.protocols) {\n w.uint32(26);\n w.string(value);\n }\n }\n if (obj.signedPeerRecord != null) {\n w.uint32(66);\n w.bytes(obj.signedPeerRecord);\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n listenAddrs: [],\n protocols: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 5:\n obj.protocolVersion = reader.string();\n break;\n case 6:\n obj.agentVersion = reader.string();\n break;\n case 1:\n obj.publicKey = reader.bytes();\n break;\n case 2:\n obj.listenAddrs.push(reader.bytes());\n break;\n case 4:\n obj.observedAddr = reader.bytes();\n break;\n case 3:\n obj.protocols.push(reader.string());\n break;\n case 8:\n obj.signedPeerRecord = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Identify.encode = (obj) => {\n return encodeMessage(obj, Identify.codec());\n };\n Identify.decode = (buf) => {\n return decodeMessage(buf, Identify.codec());\n };\n})(Identify || (Identify = {}));\n//# sourceMappingURL=message.js.map","import { CodeError } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';\nimport { isNode, isBrowser, isWebWorker, isElectronMain, isElectronRenderer, isReactNative } from 'wherearewe';\nimport { IDENTIFY_PROTOCOL_VERSION, MAX_IDENTIFY_MESSAGE_SIZE, MAX_PUSH_CONCURRENCY } from './consts.js';\nexport const defaultValues = {\n protocolPrefix: 'ipfs',\n timeout: 5000,\n maxInboundStreams: 1,\n maxOutboundStreams: 1,\n maxObservedAddresses: 10,\n maxMessageSize: MAX_IDENTIFY_MESSAGE_SIZE,\n runOnConnectionOpen: true,\n runOnSelfUpdate: true,\n runOnTransientConnection: true,\n concurrency: MAX_PUSH_CONCURRENCY\n};\n/**\n * Takes the `addr` and converts it to a Multiaddr if possible\n */\nexport function getCleanMultiaddr(addr) {\n if (addr != null && addr.length > 0) {\n try {\n return multiaddr(addr);\n }\n catch {\n }\n }\n}\nexport function getAgentVersion(nodeInfo, agentVersion) {\n if (agentVersion != null) {\n return agentVersion;\n }\n agentVersion = `${nodeInfo.name}/${nodeInfo.version}`;\n // Append user agent version to default AGENT_VERSION depending on the environment\n if (isNode || isElectronMain) {\n agentVersion += ` UserAgent=${globalThis.process.version}`;\n }\n else if (isBrowser || isWebWorker || isElectronRenderer || isReactNative) {\n agentVersion += ` UserAgent=${globalThis.navigator.userAgent}`;\n }\n return agentVersion;\n}\nexport async function consumeIdentifyMessage(peerStore, events, log, connection, message) {\n log('received identify from %p', connection.remotePeer);\n if (message == null) {\n throw new CodeError('message was null or undefined', 'ERR_INVALID_MESSAGE');\n }\n const peer = {};\n if (message.listenAddrs.length > 0) {\n peer.addresses = message.listenAddrs.map(buf => ({\n isCertified: false,\n multiaddr: multiaddr(buf)\n }));\n }\n if (message.protocols.length > 0) {\n peer.protocols = message.protocols;\n }\n if (message.publicKey != null) {\n peer.publicKey = message.publicKey;\n const peerId = await peerIdFromKeys(message.publicKey);\n if (!peerId.equals(connection.remotePeer)) {\n throw new CodeError('public key did not match remote PeerId', 'ERR_INVALID_PUBLIC_KEY');\n }\n }\n let output;\n // if the peer record has been sent, prefer the addresses in the record as they are signed by the remote peer\n if (message.signedPeerRecord != null) {\n log('received signedPeerRecord from %p', connection.remotePeer);\n let peerRecordEnvelope = message.signedPeerRecord;\n const envelope = await RecordEnvelope.openAndCertify(peerRecordEnvelope, PeerRecord.DOMAIN);\n let peerRecord = PeerRecord.createFromProtobuf(envelope.payload);\n // Verify peerId\n if (!peerRecord.peerId.equals(envelope.peerId)) {\n throw new CodeError('signing key does not match PeerId in the PeerRecord', 'ERR_INVALID_SIGNING_KEY');\n }\n // Make sure remote peer is the one sending the record\n if (!connection.remotePeer.equals(peerRecord.peerId)) {\n throw new CodeError('signing key does not match remote PeerId', 'ERR_INVALID_PEER_RECORD_KEY');\n }\n let existingPeer;\n try {\n existingPeer = await peerStore.get(peerRecord.peerId);\n }\n catch (err) {\n if (err.code !== 'ERR_NOT_FOUND') {\n throw err;\n }\n }\n if (existingPeer != null) {\n // don't lose any existing metadata\n peer.metadata = existingPeer.metadata;\n // if we have previously received a signed record for this peer, compare it to the incoming one\n if (existingPeer.peerRecordEnvelope != null) {\n const storedEnvelope = await RecordEnvelope.createFromProtobuf(existingPeer.peerRecordEnvelope);\n const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);\n // ensure seq is greater than, or equal to, the last received\n if (storedRecord.seqNumber >= peerRecord.seqNumber) {\n log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);\n peerRecord = storedRecord;\n peerRecordEnvelope = existingPeer.peerRecordEnvelope;\n }\n }\n }\n // store the signed record for next time\n peer.peerRecordEnvelope = peerRecordEnvelope;\n // override the stored addresses with the signed multiaddrs\n peer.addresses = peerRecord.multiaddrs.map(multiaddr => ({\n isCertified: true,\n multiaddr\n }));\n output = {\n seq: peerRecord.seqNumber,\n addresses: peerRecord.multiaddrs\n };\n }\n else {\n log('%p did not send a signed peer record', connection.remotePeer);\n }\n log('patching %p with', connection.remotePeer, peer);\n await peerStore.patch(connection.remotePeer, peer);\n if (message.agentVersion != null || message.protocolVersion != null) {\n const metadata = {};\n if (message.agentVersion != null) {\n metadata.AgentVersion = uint8ArrayFromString(message.agentVersion);\n }\n if (message.protocolVersion != null) {\n metadata.ProtocolVersion = uint8ArrayFromString(message.protocolVersion);\n }\n log('merging %p metadata', connection.remotePeer, metadata);\n await peerStore.merge(connection.remotePeer, {\n metadata\n });\n }\n const result = {\n peerId: connection.remotePeer,\n protocolVersion: message.protocolVersion,\n agentVersion: message.agentVersion,\n publicKey: message.publicKey,\n listenAddrs: message.listenAddrs.map(buf => multiaddr(buf)),\n observedAddr: message.observedAddr == null ? undefined : multiaddr(message.observedAddr),\n protocols: message.protocols,\n signedPeerRecord: output,\n connection\n };\n events.safeDispatchEvent('peer:identify', { detail: result });\n return result;\n}\nexport class AbstractIdentify {\n host;\n protocol;\n started;\n timeout;\n peerId;\n peerStore;\n registrar;\n addressManager;\n maxInboundStreams;\n maxOutboundStreams;\n maxMessageSize;\n maxObservedAddresses;\n events;\n runOnTransientConnection;\n log;\n constructor(components, init) {\n this.protocol = init.protocol;\n this.started = false;\n this.peerId = components.peerId;\n this.peerStore = components.peerStore;\n this.registrar = components.registrar;\n this.addressManager = components.addressManager;\n this.events = components.events;\n this.log = init.log;\n this.timeout = init.timeout ?? defaultValues.timeout;\n this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams;\n this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams;\n this.maxMessageSize = init.maxMessageSize ?? defaultValues.maxMessageSize;\n this.maxObservedAddresses = init.maxObservedAddresses ?? defaultValues.maxObservedAddresses;\n this.runOnTransientConnection = init.runOnTransientConnection ?? defaultValues.runOnTransientConnection;\n // Store self host metadata\n this.host = {\n protocolVersion: `${init.protocolPrefix ?? defaultValues.protocolPrefix}/${IDENTIFY_PROTOCOL_VERSION}`,\n agentVersion: getAgentVersion(components.nodeInfo, init.agentVersion)\n };\n }\n isStarted() {\n return this.started;\n }\n async start() {\n if (this.started) {\n return;\n }\n await this.peerStore.merge(this.peerId, {\n metadata: {\n AgentVersion: uint8ArrayFromString(this.host.agentVersion),\n ProtocolVersion: uint8ArrayFromString(this.host.protocolVersion)\n }\n });\n await this.registrar.handle(this.protocol, (data) => {\n void this.handleProtocol(data).catch(err => {\n this.log.error(err);\n });\n }, {\n maxInboundStreams: this.maxInboundStreams,\n maxOutboundStreams: this.maxOutboundStreams,\n runOnTransientConnection: this.runOnTransientConnection\n });\n this.started = true;\n }\n async stop() {\n await this.registrar.unhandle(this.protocol);\n this.started = false;\n }\n}\n//# sourceMappingURL=utils.js.map","/* eslint-disable complexity */\nimport { CodeError, serviceCapabilities, setMaxListeners } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';\nimport { protocols } from '@multiformats/multiaddr';\nimport { IP_OR_DOMAIN } from '@multiformats/multiaddr-matcher';\nimport { pbStream } from 'it-protobuf-stream';\nimport { MULTICODEC_IDENTIFY_PROTOCOL_NAME, MULTICODEC_IDENTIFY_PROTOCOL_VERSION } from './consts.js';\nimport { Identify as IdentifyMessage } from './pb/message.js';\nimport { AbstractIdentify, consumeIdentifyMessage, defaultValues, getCleanMultiaddr } from './utils.js';\nexport class Identify extends AbstractIdentify {\n constructor(components, init = {}) {\n super(components, {\n ...init,\n protocol: `/${init.protocolPrefix ?? defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PROTOCOL_VERSION}`,\n log: components.logger.forComponent('libp2p:identify')\n });\n if (init.runOnConnectionOpen ?? defaultValues.runOnConnectionOpen) {\n // When a new connection happens, trigger identify\n components.events.addEventListener('connection:open', (evt) => {\n const connection = evt.detail;\n this.identify(connection).catch(err => { this.log.error('error during identify trigged by connection:open', err); });\n });\n }\n }\n [serviceCapabilities] = [\n '@libp2p/identify'\n ];\n async _identify(connection, options = {}) {\n let stream;\n if (options.signal == null) {\n const signal = AbortSignal.timeout(this.timeout);\n setMaxListeners(Infinity, signal);\n options = {\n ...options,\n signal\n };\n }\n try {\n stream = await connection.newStream(this.protocol, {\n ...options,\n runOnTransientConnection: this.runOnTransientConnection\n });\n const pb = pbStream(stream, {\n maxDataLength: this.maxMessageSize\n }).pb(IdentifyMessage);\n const message = await pb.read(options);\n await stream.close(options);\n return message;\n }\n catch (err) {\n this.log.error('error while reading identify message', err);\n stream?.abort(err);\n throw err;\n }\n }\n async identify(connection, options = {}) {\n const message = await this._identify(connection, options);\n const { publicKey, protocols, observedAddr } = message;\n if (publicKey == null) {\n throw new CodeError('public key was missing from identify message', 'ERR_MISSING_PUBLIC_KEY');\n }\n const id = await peerIdFromKeys(publicKey);\n if (!connection.remotePeer.equals(id)) {\n throw new CodeError('identified peer does not match the expected peer', 'ERR_INVALID_PEER');\n }\n if (this.peerId.equals(id)) {\n throw new CodeError('identified peer is our own peer id?', 'ERR_INVALID_PEER');\n }\n // Get the observedAddr if there is one\n const cleanObservedAddr = getCleanMultiaddr(observedAddr);\n this.log('identify completed for peer %p and protocols %o', id, protocols);\n this.log('our observed address is %a', cleanObservedAddr);\n if (cleanObservedAddr != null &&\n this.addressManager.getObservedAddrs().length < (this.maxObservedAddresses ?? Infinity)) {\n this.log('storing our observed address %a', cleanObservedAddr);\n this.addressManager.addObservedAddr(cleanObservedAddr);\n }\n return consumeIdentifyMessage(this.peerStore, this.events, this.log, connection, message);\n }\n /**\n * Sends the `Identify` response with the Signed Peer Record\n * to the requesting peer over the given `connection`\n */\n async handleProtocol(data) {\n const { connection, stream } = data;\n const signal = AbortSignal.timeout(this.timeout);\n setMaxListeners(Infinity, signal);\n try {\n const publicKey = this.peerId.publicKey ?? new Uint8Array(0);\n const peerData = await this.peerStore.get(this.peerId);\n const multiaddrs = this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code));\n let signedPeerRecord = peerData.peerRecordEnvelope;\n if (multiaddrs.length > 0 && signedPeerRecord == null) {\n const peerRecord = new PeerRecord({\n peerId: this.peerId,\n multiaddrs\n });\n const envelope = await RecordEnvelope.seal(peerRecord, this.peerId);\n signedPeerRecord = envelope.marshal().subarray();\n }\n let observedAddr = connection.remoteAddr.bytes;\n if (!IP_OR_DOMAIN.matches(connection.remoteAddr)) {\n observedAddr = undefined;\n }\n const pb = pbStream(stream).pb(IdentifyMessage);\n await pb.write({\n protocolVersion: this.host.protocolVersion,\n agentVersion: this.host.agentVersion,\n publicKey,\n listenAddrs: multiaddrs.map(addr => addr.bytes),\n signedPeerRecord,\n observedAddr,\n protocols: peerData.protocols\n }, {\n signal\n });\n await stream.close({\n signal\n });\n }\n catch (err) {\n this.log.error('could not respond to identify request', err);\n stream.abort(err);\n }\n }\n}\n//# sourceMappingURL=identify.js.map","/**\n * @packageDocumentation\n *\n * Use the `identify` function to add support for the [Identify protocol](https://github.com/libp2p/specs/blob/master/identify/README.md) to libp2p.\n *\n * This protocol allows network peers to discover the multiaddrs the current node listens on, and the protocols it supports.\n *\n * A second function, `identifyPush` is also exported to add support for [identify/push](https://github.com/libp2p/specs/blob/master/identify/README.md#identifypush).\n *\n * This protocol will send updates to all connected peers when the multiaddrs or protocols of the current node change.\n *\n * > [!TIP]\n * > For maximum network compatibility you should configure both protocols\n *\n * @example Enabling identify\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { identify } from '@libp2p/identify'\n *\n * const node = await createLibp2p({\n * // ...other options\n * services: {\n * identify: identify()\n * }\n * })\n * ```\n *\n * @example Enabling identify push\n *\n * ```typescript\n * import { createLibp2p } from 'libp2p'\n * import { identifyPush } from '@libp2p/identify'\n *\n * const node = await createLibp2p({\n * // ...other options\n * services: {\n * identifyPush: identifyPush()\n * }\n * })\n * ```\n */\nimport { IdentifyPush as IdentifyPushClass } from './identify-push.js';\nimport { Identify as IdentifyClass } from './identify.js';\nexport function identify(init = {}) {\n return (components) => new IdentifyClass(components, init);\n}\nexport function identifyPush(init = {}) {\n return (components) => new IdentifyPushClass(components, init);\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { decodeMessage, encodeMessage, message } from 'protons-runtime';\nimport { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';\nexport var Peer;\n(function (Peer) {\n let _codec;\n Peer.codec = () => {\n if (_codec == null) {\n _codec = message((obj, w, opts = {}) => {\n if (opts.lengthDelimited !== false) {\n w.fork();\n }\n if ((obj.publicKey != null && obj.publicKey.byteLength > 0)) {\n w.uint32(10);\n w.bytes(obj.publicKey);\n }\n if (obj.addrs != null) {\n for (const value of obj.addrs) {\n w.uint32(18);\n w.bytes(value);\n }\n }\n if (opts.lengthDelimited !== false) {\n w.ldelim();\n }\n }, (reader, length) => {\n const obj = {\n publicKey: uint8ArrayAlloc(0),\n addrs: []\n };\n const end = length == null ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n obj.publicKey = reader.bytes();\n break;\n }\n case 2: {\n obj.addrs.push(reader.bytes());\n break;\n }\n default: {\n reader.skipType(tag & 7);\n break;\n }\n }\n }\n return obj;\n });\n }\n return _codec;\n };\n Peer.encode = (obj) => {\n return encodeMessage(obj, Peer.codec());\n };\n Peer.decode = (buf) => {\n return decodeMessage(buf, Peer.codec());\n };\n})(Peer || (Peer = {}));\n//# sourceMappingURL=peer.js.map","/**\n * @packageDocumentation\n *\n * When the discovery module is started by libp2p it subscribes to the discovery pubsub topic(s)\n *\n * It will immediately broadcast your peer data via pubsub and repeat the broadcast on the configured `interval`\n *\n * ## Security Considerations\n *\n * It is worth noting that this module does not include any message signing for broadcasts. The reason for this is that libp2p-pubsub supports message signing and enables it by default, which means the message you received has been verified to be from the originator, so we can trust that the peer information we have received is indeed from the peer who owns it. This doesn't mean the peer can't falsify its own records, but this module isn't currently concerned with that scenario.\n *\n * ## Requirements\n *\n * This module *MUST* be used on a libp2p node that is running [Pubsub](https://github.com/libp2p/js-libp2p-pubsub). If Pubsub does not exist, or is not running, this module will not work.\n *\n * To run a PubSub service, include a `pubsub` implementation in your services map such as `@chainsafe/libp2p-gossipsub`.\n *\n * For more information see the [docs on customizing libp2p](https://github.com/libp2p/js-libp2p/blob/main/doc/CONFIGURATION.md#customizing-libp2p).\n *\n * @example Usage in js-libp2p\n *\n * See the [js-libp2p configuration docs](https://github.com/libp2p/js-libp2p/blob/main/doc/CONFIGURATION.md#customizing-peer-discovery) for how to include this module as a peer discovery module in js-libp2p.\n *\n * If you are only interested in listening to the global pubsub topic the minimal configuration for using this with libp2p is:\n *\n * ```js\n * import { createLibp2p } from 'libp2p'\n * import { websockets } from '@libp2p/websockets'\n * import { yamux } from '@chainsafe/libp2p-yamux'\n * import { noise } from '@chainsafe/libp2p-noise'\n * import { gossipsub } from '@chainsafe/libp2p-gossipsub'\n * import { pubsubPeerDiscovery } from '@libp2p/pubsub-peer-discovery'\n * import { identify } from 'libp2p/identify'\n *\n * const node = await createLibp2p({\n * transports: [\n * websockets()\n * ], // Any libp2p transport(s) can be used\n * streamMuxers: [\n * yamux()\n * ],\n * connectionEncryption: [\n * noise()\n * ],\n * peerDiscovery: [\n * pubsubPeerDiscovery()\n * ],\n * services: {\n * pubsub: gossipsub(),\n * identify: identify()\n * }\n * })\n * ```\n *\n * @example Customizing Pubsub Peer Discovery\n *\n * There are a few options you can use to customize `Pubsub Peer Discovery`. You can see the detailed [options](#options) below.\n *\n * ```js\n * // ... Other imports from above\n * import PubSubPeerDiscovery from '@libp2p/pubsub-peer-discovery'\n *\n * // Custom topics\n * const topics = [\n * `myApp._peer-discovery._p2p._pubsub`, // It's recommended but not required to extend the global space\n * '_peer-discovery._p2p._pubsub' // Include if you want to participate in the global space\n * ]\n *\n * const node = await createLibp2p({\n * // ...\n * peerDiscovery: [\n * pubsubPeerDiscovery({\n * interval: 10000,\n * topics: topics, // defaults to ['_peer-discovery._p2p._pubsub']\n * listenOnly: false\n * })\n * ]\n * })\n * ```\n *\n * ## Options\n *\n * | Name | Type | Description |\n * | ---------- | --------------- | -------------------------------------------------------------------------------------------------------------- |\n * | interval | `number` | How often (in `ms`), after initial broadcast, your node should broadcast your peer data. Default (`10000ms`) |\n * | topics | `Array` | An Array of topic strings. If set, the default topic will not be used and must be included explicitly here |\n * | listenOnly | `boolean` | If true it will not broadcast peer data. Dont set this unless you have a specific reason to. Default (`false`) |\n *\n * ## Default Topic\n *\n * The default pubsub topic the module subscribes to is `_peer-discovery._p2p._pubsub`, which is also set on `PubsubPeerDiscovery.TOPIC`.\n */\nimport { TypedEventEmitter, peerDiscoverySymbol } from '@libp2p/interface';\nimport { peerIdFromKeys } from '@libp2p/peer-id';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { Peer as PBPeer } from './peer.js';\nexport const TOPIC = '_peer-discovery._p2p._pubsub';\n/**\n * A Peer Discovery Service that leverages libp2p Pubsub to find peers.\n */\nexport class PubSubPeerDiscovery extends TypedEventEmitter {\n [peerDiscoverySymbol] = true;\n [Symbol.toStringTag] = '@libp2p/pubsub-peer-discovery';\n interval;\n listenOnly;\n topics;\n intervalId;\n components;\n log;\n constructor(components, init = {}) {\n super();\n const { interval, topics, listenOnly } = init;\n this.components = components;\n this.interval = interval ?? 10000;\n this.listenOnly = listenOnly ?? false;\n this.log = components.logger.forComponent('libp2p:discovery:pubsub');\n // Ensure we have topics\n if (Array.isArray(topics) && topics.length > 0) {\n this.topics = topics;\n }\n else {\n this.topics = [TOPIC];\n }\n this._onMessage = this._onMessage.bind(this);\n }\n isStarted() {\n return this.intervalId != null;\n }\n start() {\n }\n /**\n * Subscribes to the discovery topic on `libp2p.pubsub` and performs a broadcast\n * immediately, and every `this.interval`\n */\n afterStart() {\n if (this.intervalId != null) {\n return;\n }\n const pubsub = this.components.pubsub;\n if (pubsub == null) {\n throw new Error('PubSub not configured');\n }\n // Subscribe to pubsub\n for (const topic of this.topics) {\n pubsub.subscribe(topic);\n pubsub.addEventListener('message', this._onMessage);\n }\n // Don't broadcast if we are only listening\n if (this.listenOnly) {\n return;\n }\n // Broadcast immediately, and then run on interval\n this._broadcast();\n // Periodically publish our own information\n this.intervalId = setInterval(() => {\n this._broadcast();\n }, this.interval);\n }\n beforeStop() {\n const pubsub = this.components.pubsub;\n if (pubsub == null) {\n throw new Error('PubSub not configured');\n }\n for (const topic of this.topics) {\n pubsub.unsubscribe(topic);\n pubsub.removeEventListener('message', this._onMessage);\n }\n }\n /**\n * Unsubscribes from the discovery topic\n */\n stop() {\n if (this.intervalId != null) {\n clearInterval(this.intervalId);\n this.intervalId = undefined;\n }\n }\n /**\n * Performs a broadcast via Pubsub publish\n */\n _broadcast() {\n const peerId = this.components.peerId;\n if (peerId.publicKey == null) {\n throw new Error('PeerId was missing public key');\n }\n const peer = {\n publicKey: peerId.publicKey,\n addrs: this.components.addressManager.getAddresses().map(ma => ma.bytes)\n };\n const encodedPeer = PBPeer.encode(peer);\n const pubsub = this.components.pubsub;\n if (pubsub == null) {\n throw new Error('PubSub not configured');\n }\n for (const topic of this.topics) {\n if (pubsub.getSubscribers(topic).length === 0) {\n this.log('skipping broadcasting our peer data on topic %s because there are no peers present', topic);\n continue;\n }\n this.log('broadcasting our peer data on topic %s', topic);\n void pubsub.publish(topic, encodedPeer);\n }\n }\n /**\n * Handles incoming pubsub messages for our discovery topic\n */\n _onMessage(event) {\n if (!this.isStarted()) {\n return;\n }\n const message = event.detail;\n if (!this.topics.includes(message.topic)) {\n return;\n }\n const peer = PBPeer.decode(message.data);\n void peerIdFromKeys(peer.publicKey).then(peerId => {\n // Ignore if we received our own response\n if (peerId.equals(this.components.peerId)) {\n return;\n }\n this.log('discovered peer %p on %s', peerId, message.topic);\n this.safeDispatchEvent('peer', {\n detail: {\n id: peerId,\n multiaddrs: peer.addrs.map(b => multiaddr(b))\n }\n });\n }).catch(err => {\n this.log.error(err);\n });\n }\n}\nexport function pubsubPeerDiscovery(init = {}) {\n return (components) => new PubSubPeerDiscovery(components, init);\n}\n//# sourceMappingURL=index.js.map","// Voir https://github.com/alexeyvolkoff/orbitdb-example/blob/main/relay.js\n// https://github.com/libp2p/js-libp2p-example-circuit-relay\nexport const ADRESSES_NŒUDS_RELAI = [\n \"/ip4/164.90.222.145/udp/9090/webrtc-direct/certhash/uEiAJOkKT64u6jmXV5YxncCoER5WXSO2HYE23Xpap651xMw/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR\",\n \"/ip4/164.90.222.145/udp/9091/quic-v1/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR\",\n \"/ip4/164.90.222.145/tcp/9092/p2p/12D3KooWJ7P1yeoxB5mq3TwQh8YgmVhankjtT4rsVGZPUyf617aR\",\n];\nexport const ADRESSES_NŒUDS_RELAI_LOCAL = [\n \"/ip4/127.0.0.1/udp/9090/webrtc-direct/certhash/uEiAWCRG30KUzLUuWYZ9HZNcFBHt8uLjLRB2xlLW_L_8lQg/p2p/12D3KooWKeJNXytogRbQPvYrFxXAaDGaJUfysrPeGbbEBDM78iTu\",\n \"/ip4/127.0.0.1/udp/9091/quic-v1/p2p/12D3KooWKeJNXytogRbQPvYrFxXAaDGaJUfysrPeGbbEBDM78iTu\",\n \"/ip4/127.0.0.1/tcp/9092/p2p/12D3KooWKeJNXytogRbQPvYrFxXAaDGaJUfysrPeGbbEBDM78iTu\",\n];\n//# sourceMappingURL=const.js.map","import { identify } from \"@libp2p/identify\";\nimport { webSockets } from \"@libp2p/websockets\";\nimport { webTransport } from \"@libp2p/webtransport\";\nimport { webRTC, webRTCDirect } from \"@libp2p/webrtc\";\nimport { bootstrap } from \"@libp2p/bootstrap\";\nimport { all } from \"@libp2p/websockets/filters\";\nimport { noise } from \"@chainsafe/libp2p-noise\";\nimport { yamux } from \"@chainsafe/libp2p-yamux\";\nimport { autoNAT } from \"@libp2p/autonat\";\nimport { gossipsub } from \"@chainsafe/libp2p-gossipsub\";\nimport { dcutr } from \"@libp2p/dcutr\";\nimport { circuitRelayTransport } from \"@libp2p/circuit-relay-v2\";\nimport { pubsubPeerDiscovery } from \"@libp2p/pubsub-peer-discovery\";\nimport { kadDHT } from \"@libp2p/kad-dht\";\nimport { ADRESSES_NŒUDS_RELAI } from \"./const.js\";\nexport const obtOptionsLibp2pNode = async () => {\n // Ces librairies-ci ne peuvent pas être compilées pour l'environnement\n // navigateur. Nous devons donc les importer dynamiquement ici afin d'éviter\n // des problèmes de compilation pour le navigateur.\n const { tcp } = await import(\"@libp2p/tcp\");\n const { mdns } = await import(\"@libp2p/mdns\");\n return {\n addresses: {\n listen: [\n \"/ip4/0.0.0.0/tcp/0/ws\",\n \"/webrtc\",\n \"/webtransport\",\n \"/webrtc-direct\",\n ],\n },\n transports: [\n webSockets({\n filter: all,\n }),\n webRTC({\n rtcConfiguration: {\n iceServers: [\n {\n urls: [\n \"stun:stun.l.google.com:19302\",\n \"stun:global.stun.twilio.com:3478\",\n ],\n },\n ],\n },\n }),\n webTransport(),\n webRTCDirect(),\n tcp(),\n circuitRelayTransport({\n discoverRelays: 1,\n }),\n ],\n connectionEncryption: [noise()],\n streamMuxers: [yamux()],\n connectionGater: {\n denyDialMultiaddr: () => false,\n },\n peerDiscovery: [\n mdns(),\n bootstrap({\n list: ADRESSES_NŒUDS_RELAI,\n timeout: 0,\n }),\n pubsubPeerDiscovery({\n interval: 1000,\n topics: [\"constellation._peer-discovery._p2p._pubsub\"], // defaults to ['_peer-discovery._p2p._pubsub']\n listenOnly: false,\n }),\n ],\n services: {\n identify: identify(),\n autoNAT: autoNAT(),\n dcutr: dcutr(),\n pubsub: gossipsub({ allowPublishToZeroPeers: true }),\n dht: kadDHT({\n clientMode: false,\n }),\n },\n };\n};\n//# sourceMappingURL=configNode.js.map","import { identify } from \"@libp2p/identify\";\nimport { webSockets } from \"@libp2p/websockets\";\nimport { webRTC as libp2pWebRTC, webRTCDirect } from \"@libp2p/webrtc\";\nimport { webTransport } from \"@libp2p/webtransport\";\nimport { bootstrap } from \"@libp2p/bootstrap\";\nimport { all } from \"@libp2p/websockets/filters\";\nimport { noise } from \"@chainsafe/libp2p-noise\";\nimport { yamux } from \"@chainsafe/libp2p-yamux\";\nimport { gossipsub } from \"@chainsafe/libp2p-gossipsub\";\nimport { circuitRelayTransport } from \"@libp2p/circuit-relay-v2\";\nimport { ADRESSES_NŒUDS_RELAI } from \"./const.js\";\nimport { pubsubPeerDiscovery } from \"@libp2p/pubsub-peer-discovery\";\nimport { autoNAT } from \"@libp2p/autonat\";\nimport { dcutr } from \"@libp2p/dcutr\";\nimport { kadDHT } from \"@libp2p/kad-dht\";\nexport const obtOptionsLibp2pÉlectionPrincipal = async () => {\n const { tcp } = await import(\"@libp2p/tcp\");\n const { mdns } = await import(\"@libp2p/mdns\");\n return {\n addresses: {\n listen: [\"/ip4/0.0.0.0/tcp/0/ws\", \"/webrtc\", \"/webtransport\"],\n },\n transports: [\n webSockets({\n filter: all,\n }),\n libp2pWebRTC({\n rtcConfiguration: {\n iceServers: [\n {\n urls: [\n \"stun:stun.l.google.com:19302\",\n \"stun:global.stun.twilio.com:3478\",\n ],\n },\n ],\n },\n }),\n webTransport(),\n webRTCDirect(),\n tcp(),\n circuitRelayTransport({\n discoverRelays: 1,\n }),\n ],\n connectionEncryption: [noise()],\n streamMuxers: [yamux()],\n connectionGater: {\n denyDialMultiaddr: () => false,\n },\n peerDiscovery: [\n mdns(),\n bootstrap({\n list: ADRESSES_NŒUDS_RELAI,\n timeout: 0,\n }),\n pubsubPeerDiscovery({\n interval: 1000,\n topics: [\"constellation._peer-discovery._p2p._pubsub\"], // defaults to ['_peer-discovery._p2p._pubsub']\n listenOnly: false,\n }),\n ],\n services: {\n identify: identify(),\n autoNAT: autoNAT(),\n dcutr: dcutr(),\n pubsub: gossipsub({ allowPublishToZeroPeers: true }),\n dht: kadDHT({\n clientMode: false,\n }),\n },\n };\n};\n//# sourceMappingURL=config%C3%89lectronPrincipal.js.map","import { identify } from \"@libp2p/identify\";\nimport { webSockets } from \"@libp2p/websockets\";\nimport { webRTC, webRTCDirect } from \"@libp2p/webrtc\";\nimport { webTransport } from \"@libp2p/webtransport\";\nimport { bootstrap } from \"@libp2p/bootstrap\";\nimport { all } from \"@libp2p/websockets/filters\";\nimport { noise } from \"@chainsafe/libp2p-noise\";\nimport { yamux } from \"@chainsafe/libp2p-yamux\";\nimport { autoNAT } from \"@libp2p/autonat\";\nimport { gossipsub } from \"@chainsafe/libp2p-gossipsub\";\nimport { dcutr } from \"@libp2p/dcutr\";\nimport { kadDHT } from \"@libp2p/kad-dht\";\nimport { pubsubPeerDiscovery } from \"@libp2p/pubsub-peer-discovery\";\nimport { circuitRelayTransport } from \"@libp2p/circuit-relay-v2\";\nimport { ADRESSES_NŒUDS_RELAI } from \"./const.js\";\nexport const obtOptionsLibp2pNavigateur = async () => {\n return {\n addresses: {\n listen: [\"/webrtc\", \"/webtransport\"],\n },\n transports: [\n webSockets({\n filter: all,\n }),\n webRTC({\n rtcConfiguration: {\n iceServers: [\n {\n urls: [\n \"stun:stun.l.google.com:19302\",\n \"stun:global.stun.twilio.com:3478\",\n ],\n },\n ],\n },\n }),\n webRTCDirect(),\n webTransport(),\n circuitRelayTransport({\n discoverRelays: 1,\n }),\n ],\n connectionEncryption: [noise()],\n streamMuxers: [yamux()],\n connectionGater: {\n denyDialMultiaddr: () => false,\n },\n peerDiscovery: [\n bootstrap({\n list: ADRESSES_NŒUDS_RELAI,\n timeout: 0,\n }),\n pubsubPeerDiscovery({\n interval: 1000,\n topics: [\"constellation._peer-discovery._p2p._pubsub\"], // par défaut : ['_peer-discovery._p2p._pubsub']\n listenOnly: false,\n }),\n ],\n services: {\n identify: identify(),\n autoNAT: autoNAT(),\n dcutr: dcutr(),\n pubsub: gossipsub({ allowPublishToZeroPeers: true }),\n dht: kadDHT({\n clientMode: true,\n }),\n },\n };\n};\n//# sourceMappingURL=configNavigateur.js.map","import { identify } from \"@libp2p/identify\";\nimport { webSockets } from \"@libp2p/websockets\";\nimport { webTransport } from \"@libp2p/webtransport\";\nimport { bootstrap } from \"@libp2p/bootstrap\";\nimport { all } from \"@libp2p/websockets/filters\";\nimport { noise } from \"@chainsafe/libp2p-noise\";\nimport { yamux } from \"@chainsafe/libp2p-yamux\";\nimport { gossipsub } from \"@chainsafe/libp2p-gossipsub\";\nimport { circuitRelayTransport } from \"@libp2p/circuit-relay-v2\";\nimport { ADRESSES_NŒUDS_RELAI } from \"./const.js\";\nexport const obtOptionsLibp2pTravailleurWeb = async () => {\n return {\n addresses: {\n listen: [\"/webrtc\"],\n },\n transports: [\n webSockets({\n filter: all,\n }),\n webTransport(),\n circuitRelayTransport({\n discoverRelays: 1,\n }),\n ],\n connectionEncryption: [noise()],\n streamMuxers: [yamux()],\n connectionGater: {\n denyDialMultiaddr: () => false,\n },\n peerDiscovery: [\n bootstrap({\n list: ADRESSES_NŒUDS_RELAI,\n timeout: 0,\n }),\n ],\n services: {\n identify: identify(),\n pubsub: gossipsub({ allowPublishToZeroPeers: true }),\n },\n };\n};\n//# sourceMappingURL=configTravailleur.js.map","import { isBrowser, isElectronMain, isElectronRenderer, isNode, isWebWorker, } from \"wherearewe\";\nimport mergeOptions from \"merge-options\";\nimport { createHelia } from \"helia\";\nimport { LevelBlockstore } from \"blockstore-level\";\nimport { bitswap } from \"@helia/block-brokers\";\nimport { createLibp2p } from \"libp2p\";\nimport { obtOptionsLibp2pNode } from \"./configNode.js\";\nimport { obtOptionsLibp2pÉlectionPrincipal } from \"./configÉlectronPrincipal.js\";\nimport { obtOptionsLibp2pNavigateur } from \"./configNavigateur.js\";\nimport { obtOptionsLibp2pTravailleurWeb } from \"./configTravailleur.js\";\nconst obtConfigLibp2pPlateforme = async () => {\n let configPlateforme;\n if (isBrowser || isElectronRenderer) {\n // À faire - migrer vers travailleur ?\n configPlateforme = await obtOptionsLibp2pNavigateur();\n }\n else if (isWebWorker) {\n configPlateforme = await obtOptionsLibp2pTravailleurWeb();\n }\n else if (isElectronMain) {\n configPlateforme = await obtOptionsLibp2pÉlectionPrincipal();\n }\n else if (isNode) {\n configPlateforme = await obtOptionsLibp2pNode();\n }\n else {\n console.warn(\"Plateforme non reconnue. On utilisera la configuration navigateur.\");\n configPlateforme = await obtOptionsLibp2pNavigateur();\n }\n return configPlateforme;\n};\nexport async function initSFIP({ dossier, configLibp2p = {}, }) {\n const config = await obtConfigLibp2pPlateforme();\n const libp2p = (await createLibp2p(mergeOptions(configLibp2p, {\n ...config,\n })));\n const stockageBloques = new LevelBlockstore(`${dossier}/blocks`);\n const optionsHelia = {\n blockstore: stockageBloques,\n libp2p,\n blockBrokers: [bitswap()],\n };\n return createHelia({ ...optionsHelia });\n}\n//# sourceMappingURL=index.js.map","import { __decorate } from \"tslib\";\nimport deepEqual from \"deep-equal\";\nimport { எண்ணிக்கை } from \"ennikkai\";\nimport { isValidAddress, } from \"@orbitdb/core\";\nimport { unixfs } from \"@helia/unixfs\";\nimport { EventEmitter } from \"events\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport Semaphore from \"@chriscdn/promise-semaphore\";\nimport indexedDbStream from \"indexed-db-stream\";\nimport plateforme from \"platform\";\nimport { suivreBdDeFonction, suivreBdsDeFonctionListe, } from \"@constl/utils-ipa\";\nimport { Licences } from \"./licences.js\";\nimport { Épingles } from \"./epingles.js\";\nimport { Profil } from \"./profil.js\";\nimport { BDs } from \"./bds.js\";\nimport { Tableaux } from \"./tableaux.js\";\nimport { Variables } from \"./variables.js\";\nimport { Réseau } from \"./reseau.js\";\nimport { EncryptionLocalFirst } from \"./encryption.js\";\nimport { Favoris } from \"./favoris.js\";\nimport { Projets } from \"./projets.js\";\nimport { MotsClefs } from \"./motsClefs.js\";\nimport { Nuées } from \"./nu\\u00E9es.js\";\nimport { Recherche } from \"./recherche/index.js\";\nimport { Automatisations } from \"./automatisation.js\";\nimport { cacheSuivi } from \"./d\\u00E9corateursCache.js\";\nimport { faisRien, toBuffer, ignorerNonDéfinis, sauvegarderFichierZip, } from \"@constl/utils-ipa\";\nimport obtStockageLocal, { exporterStockageLocal } from \"./stockageLocal.js\";\nimport { ContrôleurConstellation as générerContrôleurConstellation, nomType as nomTypeContrôleurConstellation, } from \"./acc\\u00E8s/cntrlConstellation.js\";\nimport { MEMBRE, MODÉRATEUR } from \"./acc\\u00E8s/consts.js\";\nimport Base64 from \"crypto-js/enc-base64.js\";\nimport sha256 from \"crypto-js/sha256.js\";\nimport md5 from \"crypto-js/md5.js\";\nimport JSZip from \"jszip\";\nimport { isBrowser, isElectronMain, isNode } from \"wherearewe\";\nimport { gestionnaireOrbiteGénéral, } from \"./orbite.js\";\nimport { Protocoles } from \"./protocoles.js\";\nimport { CID } from \"multiformats\";\nimport { initSFIP } from \"./sfip/index.js\";\nimport { ERREUR_INIT_IPA_DÉJÀ_LANCÉ } from \"@constl/mandataire\";\nconst estOrbiteDB = (x) => {\n if (!x)\n return false;\n const xCommeOrbite = x;\n return (xCommeOrbite.id &&\n typeof xCommeOrbite.open === \"function\" &&\n typeof xCommeOrbite.stop === \"function\" &&\n xCommeOrbite.ipfs);\n};\nexport const schémaStructureBdCompte = {\n type: \"object\",\n properties: {\n protocoles: { type: \"string\", nullable: true },\n profil: { type: \"string\", nullable: true },\n motsClefs: { type: \"string\", nullable: true },\n variables: { type: \"string\", nullable: true },\n bds: { type: \"string\", nullable: true },\n projets: { type: \"string\", nullable: true },\n nuées: { type: \"string\", nullable: true },\n favoris: { type: \"string\", nullable: true },\n réseau: { type: \"string\", nullable: true },\n automatisations: { type: \"string\", nullable: true },\n },\n required: [],\n};\nexport const schémaStructureNomsDispositifs = {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n properties: {\n nom: { type: \"string\", nullable: true },\n type: { type: \"string\", nullable: true },\n },\n },\n required: [],\n};\nconst DÉLAI_EXPIRATION_INVITATIONS = 1000 * 60 * 5; // 5 minutes\nconst obtDossierConstellation = async (opts) => {\n if (opts.dossier && opts.dossier !== \"dév\") {\n if (isNode || isElectronMain) {\n const fs = await import(\"fs\");\n if (!fs.existsSync(opts.dossier))\n fs.mkdirSync(opts.dossier, { recursive: true });\n }\n return opts.dossier;\n }\n if (isNode || isElectronMain) {\n const fs = await import(\"fs\");\n // Utiliser l'application native\n const envPaths = (await import(\"env-paths\")).default;\n const chemins = envPaths(\"constl\", { suffix: \"\" });\n const dossier = await join(chemins.data, opts.dossier === \"dév\" ? \"constl-dév\" : \"constl\");\n if (!fs.existsSync(dossier))\n fs.mkdirSync(dossier, { recursive: true });\n return dossier;\n }\n else {\n // Pour navigateur\n return \"./constl\";\n }\n};\nconst join = async (...args) => {\n if (isNode || isElectronMain) {\n // Utiliser l'application native\n const { join } = await import(\"path\");\n return join(...args);\n }\n else {\n return args.join(\"/\");\n }\n};\nexport class Constellation {\n _opts;\n événements;\n orbite;\n sfip;\n épingles;\n profil;\n bds;\n tableaux;\n variables;\n réseau;\n favoris;\n projets;\n recherche;\n motsClefs;\n automatisations;\n nuées;\n licences;\n protocoles;\n _orbiteExterne;\n _sfipExterne;\n idCompte;\n encryption;\n sujet_réseau;\n motsDePasseRejoindreCompte;\n ennikkai;\n verrouObtIdBd;\n _intervaleVerrou;\n constructor(opts = {}) {\n this._opts = opts;\n this.événements = new EventEmitter();\n this.sujet_réseau = opts.sujetRéseau || \"réseau-constellation\";\n this.motsDePasseRejoindreCompte = {};\n this.verrouObtIdBd = new Semaphore();\n this._orbiteExterne = this._sfipExterne = false;\n this.encryption = new EncryptionLocalFirst();\n this.ennikkai = new எண்ணிக்கை({});\n this.épingles = new Épingles({ client: this });\n this.profil = new Profil({ client: this });\n this.motsClefs = new MotsClefs({ client: this });\n this.tableaux = new Tableaux({ client: this });\n this.variables = new Variables({ client: this });\n this.bds = new BDs({ client: this });\n this.projets = new Projets({ client: this });\n this.nuées = new Nuées({ client: this });\n this.favoris = new Favoris({ client: this });\n this.automatisations = new Automatisations({ client: this });\n this.recherche = new Recherche({ client: this });\n this.licences = new Licences({ client: this });\n this.réseau = new Réseau({ client: this });\n this.protocoles = new Protocoles({ client: this });\n this._initialiser();\n }\n async dossier() {\n return await obtDossierConstellation(this._opts);\n }\n async _initialiser() {\n await this.verrouillerDossier({ message: this._opts.messageVerrou });\n const { sfip, orbite } = await this._générerSFIPetOrbite();\n this.sfip = sfip;\n this.orbite = gestionnaireOrbiteGénéral.obtGestionnaireOrbite({ orbite });\n this.événements.emit(\"sfipEtOrbitePrêts\", { sfip, orbite: this.orbite });\n const optionsAccèsRacine = {\n type: nomTypeContrôleurConstellation,\n write: this.orbite.identity.id,\n nom: \"racine\",\n };\n this.idCompte =\n (await this.obtDeStockageLocal({\n clef: \"idCompte\",\n parCompte: false,\n })) || undefined;\n if (!this.idCompte) {\n this.idCompte = await this.créerBdIndépendante({\n type: \"keyvalue\",\n optionsAccès: optionsAccèsRacine,\n nom: \"racine\",\n });\n await this.nommerDispositif({\n type: this.détecterTypeDispositif(),\n });\n await this.sauvegarderAuStockageLocal({\n clef: \"idCompte\",\n val: this.idCompte,\n parCompte: false,\n });\n }\n await this.réseau.initialiser();\n await this.protocoles.établirProtocoles({\n protocoles: this._opts.protocoles,\n });\n await this.épingler();\n this.événements.emit(\"comptePrêt\", { idCompte: this.idCompte });\n }\n détecterTypeDispositif() {\n if (isElectronMain) {\n return \"ordinateur\";\n }\n else if (isNode) {\n return \"serveur\";\n }\n else if (isBrowser) {\n if ([\"Pad\", \"Kindle\", \"Nexus\", \"Nook\", \"PlayBook\"].find((x) => plateforme.product?.includes(x))) {\n return \"tablette\";\n }\n else if (plateforme.name?.includes(\"Mobile\") ||\n [\"Phone\", \"Android\", \"iOS\"].find((x) => plateforme.os?.family?.includes(x))) {\n return \"téléphone\";\n }\n return \"navigateur\";\n }\n return undefined;\n }\n async attendreSfipEtOrbite() {\n if (this.sfip && this.orbite) {\n return {\n sfip: this.sfip,\n orbite: this.orbite,\n };\n }\n return new Promise((résoudre) => {\n this.événements.once(\"sfipEtOrbitePrêts\", résoudre);\n });\n }\n async attendreInitialisée() {\n if (this.idCompte) {\n return {\n idCompte: this.idCompte,\n };\n }\n else {\n return new Promise((résoudre) => {\n this.événements.once(\"comptePrêt\", résoudre);\n });\n }\n }\n async verrouillerDossier({ message }) {\n const intervaleVerrou = 5000; // 5 millisecondes\n if (isElectronMain || isNode) {\n const fs = await import(\"fs\");\n const fichierVerrou = await join(await this.dossier(), \"VERROU\");\n const maintenant = new Date();\n if (!fs.existsSync(fichierVerrou)) {\n fs.writeFileSync(fichierVerrou, message || \"\");\n }\n else {\n const infoFichier = fs.statSync(fichierVerrou);\n const modifiéÀ = infoFichier.mtime;\n const verrifierSiVieux = () => {\n if (maintenant.getTime() - modifiéÀ.getTime() > intervaleVerrou) {\n fs.writeFileSync(fichierVerrou, message || \"\");\n }\n else {\n const contenuFichier = new TextDecoder().decode(fs.readFileSync(fichierVerrou));\n try {\n const messageJSON = JSON.parse(contenuFichier);\n if (messageJSON[\"port\"]) {\n const erreur = new Error(`Ce compte est déjà ouvert en Constellation, et le serveur local est disponible sur le port ${messageJSON[\"port\"]}. Vous pouvez soit vous connecter sur ce port, soit fermer les instances de Constellation qui ouvertes et puis vous ressayer.`);\n erreur.name = ERREUR_INIT_IPA_DÉJÀ_LANCÉ;\n throw erreur;\n }\n }\n catch {\n //\n }\n const erreur = new Error(\"Constellation est déjà lancée.\");\n erreur.name = ERREUR_INIT_IPA_DÉJÀ_LANCÉ;\n throw erreur;\n }\n };\n try {\n verrifierSiVieux();\n }\n catch {\n await new Promise((résoudre) => setTimeout(résoudre, intervaleVerrou));\n verrifierSiVieux();\n }\n }\n this._intervaleVerrou = setInterval(() => {\n try {\n fs.utimesSync(fichierVerrou, maintenant, maintenant);\n }\n catch {\n // On s'inquiète pas trop\n }\n }, intervaleVerrou);\n }\n }\n async effacerVerrou() {\n if (isElectronMain || isNode) {\n if (this._intervaleVerrou)\n clearInterval(this._intervaleVerrou);\n const fs = await import(\"fs\");\n fs.rmSync(await join(await this.dossier(), \"VERROU\"));\n }\n }\n async _générerSFIPetOrbite() {\n const dossier = await this.dossier();\n const { orbite } = this._opts;\n let sfipFinale;\n let orbiteFinale;\n if (orbite) {\n if (estOrbiteDB(orbite)) {\n this._sfipExterne = this._orbiteExterne = true;\n sfipFinale = orbite.ipfs;\n orbiteFinale = orbite;\n }\n else {\n // Éviter d'importer la configuration BD Orbite si pas nécessaire\n const { initOrbite } = await import(\"./orbite.js\");\n if (orbite.ipfs) {\n this._sfipExterne = true;\n sfipFinale = orbite.ipfs;\n }\n else {\n sfipFinale = await initSFIP({\n dossier: await join(dossier, \"sfip\"),\n });\n }\n orbiteFinale = await initOrbite({\n sfip: sfipFinale,\n dossierOrbite: orbite.directory || (await join(dossier, \"orbite\")),\n });\n sfipFinale = orbiteFinale.ipfs;\n }\n }\n else {\n const { initSFIP } = await import(\"./sfip/index.js\");\n sfipFinale = await initSFIP({\n dossier: await join(await this.dossier(), \"sfip\"),\n });\n const { initOrbite } = await import(\"./orbite.js\");\n orbiteFinale = await initOrbite({\n sfip: sfipFinale,\n dossierOrbite: await join(await this.dossier(), \"orbite\"),\n });\n }\n return { sfip: sfipFinale, orbite: orbiteFinale };\n }\n async obtOptionsAccès() {\n const idCompte = await this.obtIdCompte();\n return {\n write: idCompte,\n };\n }\n async épingler() {\n await this.épingles.épinglerBd({ id: await this.obtIdCompte() }); // Celle-ci doit être récursive et inclure les fichiers\n await Promise.all([\n this.profil,\n this.automatisations,\n this.bds,\n this.variables,\n this.projets,\n this.nuées,\n this.motsClefs,\n this.réseau,\n this.favoris,\n ].map(async (x) => x && (await x.épingler())));\n }\n async ouvrirBd({ id, type, options, }) {\n const { orbite } = await this.attendreSfipEtOrbite();\n return await orbite.ouvrirBd({\n id,\n type,\n options,\n });\n }\n async ouvrirBdTypée({ id, type, schéma, options, }) {\n const { orbite } = await this.attendreSfipEtOrbite();\n return await orbite.ouvrirBdTypée({\n id,\n // @ts-expect-error Va donc comprendre\n type,\n // @ts-expect-error Va donc comprendre\n schéma,\n options,\n });\n }\n async signer({ message }) {\n const { orbite } = await this.attendreSfipEtOrbite();\n const id = orbite.identity;\n const signature = await orbite.identity.sign(id, message);\n const clefPublique = orbite.identity.publicKey;\n return { signature, clefPublique };\n }\n async vérifierSignature({ signature, message, }) {\n if (!signature || !signature.clefPublique || !signature.signature) {\n return false;\n }\n const { orbite } = await this.attendreSfipEtOrbite();\n return await orbite.identity.verify(signature.signature, signature.clefPublique, message);\n }\n async suivreDispositifs({ f, idCompte, }) {\n const fSuivi = async ({ id, }) => {\n const { orbite } = await this.attendreSfipEtOrbite();\n const { bd, fOublier } = await orbite.ouvrirBdTypée({\n id,\n type: \"keyvalue\",\n schéma: schémaStructureBdCompte,\n });\n const accès = bd.access;\n const typeAccès = accès.type;\n if (typeAccès === \"ipfs\") {\n await f(accès.write);\n await fOublier();\n return faisRien;\n }\n else if (typeAccès === \"contrôleur-constellation\") {\n const contrôleurConstellation = accès;\n const fFinale = async () => {\n const mods = contrôleurConstellation.gestRôles._rôles[MODÉRATEUR];\n await f(mods);\n };\n contrôleurConstellation.gestRôles.on(\"misÀJour\", fFinale);\n fFinale();\n return async () => {\n contrôleurConstellation.gestRôles.off(\"misÀJour\", fFinale);\n await fOublier();\n };\n }\n else {\n await fOublier();\n return faisRien;\n }\n };\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine, }) => {\n if (idCompte) {\n await fSuivreRacine(idCompte);\n return faisRien;\n }\n else {\n return await this.suivreIdCompte({ f: fSuivreRacine });\n }\n },\n f: ignorerNonDéfinis(f),\n fSuivre: fSuivi,\n });\n }\n async nommerDispositif({ idDispositif, nom, type, }) {\n const idDispositifFinal = idDispositif || (await this.obtIdDispositif());\n const idBdNomsDispositifs = await this.obtIdBd({\n nom: \"nomsDispositifs\",\n racine: await this.obtIdCompte(),\n type: \"keyvalue\",\n });\n const { bd: bdNomsDispositifs, fOublier } = await this.ouvrirBdTypée({\n id: idBdNomsDispositifs,\n type: \"keyvalue\",\n schéma: schémaStructureNomsDispositifs,\n });\n if (nom || type) {\n const val = {};\n if (nom)\n val.nom = nom;\n if (type)\n val.type = type;\n await bdNomsDispositifs.set(idDispositifFinal, val);\n }\n else {\n await bdNomsDispositifs.del(idDispositifFinal);\n }\n await fOublier();\n }\n async suivreNomsDispositifs({ idCompte, f, }) {\n const idCompteFinal = idCompte || (await this.obtIdCompte());\n return await this.suivreBdDicDeClef({\n id: idCompteFinal,\n schéma: schémaStructureNomsDispositifs,\n clef: \"nomsDispositifs\",\n f,\n });\n }\n async suivreNomDispositif({ idCompte, idDispositif, f, }) {\n return await this.suivreNomsDispositifs({\n idCompte,\n f: async (noms) => {\n const nomsDispositif = noms[idDispositif];\n if (nomsDispositif) {\n return await f(nomsDispositif);\n }\n },\n });\n }\n async générerInvitationRejoindreCompte() {\n const idCompte = await this.obtIdCompte();\n const codeSecret = await this.encryption.clefAléatoire();\n this.motsDePasseRejoindreCompte[codeSecret] = Date.now();\n return { idCompte, codeSecret };\n }\n async révoquerInvitationRejoindreCompte({ codeSecret, }) {\n if (codeSecret) {\n delete this.motsDePasseRejoindreCompte[codeSecret];\n }\n else {\n this.motsDePasseRejoindreCompte = {};\n }\n }\n async considérerRequêteRejoindreCompte({ requête, }) {\n const { idDispositif, empreinteVérification } = requête;\n const maintenant = Date.now();\n for (const codeSecret of Object.keys(this.motsDePasseRejoindreCompte)) {\n const dateCodeSecret = this.motsDePasseRejoindreCompte[codeSecret];\n const dateValide = maintenant - dateCodeSecret < DÉLAI_EXPIRATION_INVITATIONS;\n if (dateValide) {\n const empreinteCorrespondante = this.empreinteInvitation({\n idDispositif,\n codeSecret,\n });\n if (empreinteCorrespondante === empreinteVérification) {\n // Empreinte code secret validé\n delete this.motsDePasseRejoindreCompte[codeSecret];\n await this.ajouterDispositif({ idDispositif });\n }\n }\n }\n }\n empreinteInvitation({ idDispositif, codeSecret, }) {\n return Base64.stringify(sha256(idDispositif + codeSecret));\n }\n async demanderEtPuisRejoindreCompte({ idCompte, codeSecret, }) {\n await this.réseau.envoyerDemandeRejoindreCompte({\n idCompte,\n codeSecret,\n });\n await this.rejoindreCompte({\n idCompte,\n });\n }\n async ajouterDispositif({ idDispositif, }) {\n const { idCompte } = await this.attendreInitialisée();\n const { bd: bdCompte, fOublier } = await this.ouvrirBd({ id: idCompte });\n const accès = bdCompte.access;\n accès.grant(MODÉRATEUR, idDispositif);\n await fOublier();\n }\n async enleverDispositif({ idDispositif, }) {\n const { idCompte } = await this.attendreInitialisée();\n const { bd: bdCompte, fOublier } = await this.ouvrirBd({ id: idCompte });\n const accès = bdCompte.access;\n await accès.revoke(MODÉRATEUR, idDispositif);\n await fOublier();\n }\n async rejoindreCompte({ idCompte }) {\n if (!isValidAddress(idCompte)) {\n throw new Error(`Adresse compte \"${idCompte}\" non valide`);\n }\n // Attendre de recevoir la permission d'écrire à idCompte\n let autorisé;\n const { bd, fOublier } = await this.ouvrirBdTypée({\n id: idCompte,\n type: \"keyvalue\",\n schéma: schémaStructureBdCompte,\n });\n const accès = bd.access;\n const moi = await this.obtIdDispositif();\n const oublierPermission = await accès.suivreIdsOrbiteAutoriséesÉcriture((autorisés) => (autorisé = autorisés.includes(moi)));\n await new Promise((résoudre) => {\n const vérifierSiAutorisé = async () => {\n if (autorisé) {\n clearInterval(intervale);\n await oublierPermission();\n await fOublier();\n résoudre();\n }\n };\n const intervale = setInterval(() => {\n vérifierSiAutorisé();\n }, 10);\n vérifierSiAutorisé();\n });\n // Là on peut y aller\n this.idCompte = idCompte;\n await this.sauvegarderAuStockageLocal({\n clef: \"idCompte\",\n val: idCompte,\n parCompte: false,\n });\n this.événements.emit(\"comptePrêt\", { idCompte });\n }\n async donnerAccès({ idBd, identité, rôle = MEMBRE, }) {\n if (!isValidAddress(identité)) {\n throw new Error(`Identité \"${identité}\" non valide.`);\n }\n const { bd, fOublier } = await this.ouvrirBd({ id: idBd });\n const accès = bd.access;\n const typeAccès = accès.type;\n if (typeAccès === nomTypeContrôleurConstellation) {\n accès.grant(rôle, identité);\n }\n await fOublier();\n }\n async suivreIdCompte({ f, }) {\n const fFinale = async ({ idCompte }) => {\n await f(idCompte);\n };\n this.événements.on(\"comptePrêt\", fFinale);\n if (this.idCompte)\n await fFinale({ idCompte: this.idCompte });\n return async () => {\n this.événements.off(\"comptePrêt\", fFinale);\n };\n }\n async obtIdSFIP() {\n const { sfip } = await this.attendreSfipEtOrbite();\n return sfip.libp2p.peerId;\n }\n async obtIdDispositif() {\n const { orbite } = await this.attendreSfipEtOrbite();\n return orbite.identity.id;\n }\n async obtIdentitéOrbite() {\n const { orbite } = await this.attendreSfipEtOrbite();\n return orbite.identity;\n }\n async obtIdCompte() {\n const { idCompte } = await this.attendreInitialisée();\n return idCompte;\n }\n async copierContenuBdDic({ bdBase, nouvelleBd, clef, schéma, }) {\n const idBdDicInit = await bdBase.get(clef);\n if (typeof idBdDicInit !== \"string\")\n return;\n const { bd: bdDicInit, fOublier: fOublierInit } = await this.ouvrirBdTypée({\n id: idBdDicInit,\n type: \"keyvalue\",\n schéma,\n });\n const idNouvelleBdDic = await nouvelleBd.get(clef);\n if (!idNouvelleBdDic)\n throw new Error(\"La nouvelle BD n'existait pas.\");\n if (typeof idNouvelleBdDic !== \"string\")\n throw new Error(`${idNouvelleBdDic} n'est pas une adresse Orbite.`);\n const { bd: nouvelleBdDic, fOublier: fOublierNouvelle } = await this.ouvrirBdTypée({\n id: idNouvelleBdDic,\n type: \"keyvalue\",\n schéma,\n });\n const données = await bdDicInit.all();\n await Promise.all(données.map(async (d) => {\n await nouvelleBdDic.put(d.key, d.value);\n }));\n fOublierInit();\n fOublierNouvelle();\n }\n async combinerBds({ idBdBase, idBd2, }) {\n // Extraire le type\n const { bd, fOublier } = await this.ouvrirBd({ id: idBdBase });\n const type = bd.type;\n await fOublier();\n // Un peu dupliqué, à cause de TypeScript\n switch (type) {\n case \"keyvalue\": {\n const { bd: bdBase, fOublier: fOublierBase } = await this.ouvrirBd({\n id: idBdBase,\n type: \"keyvalue\",\n });\n const { bd: bd2, fOublier: fOublier2 } = await this.ouvrirBd({\n id: idBd2,\n type: \"keyvalue\",\n });\n await this.combinerBdsDict({\n bdBase,\n bd2,\n });\n await fOublierBase();\n await fOublier2();\n break;\n }\n case \"set\": {\n const { bd: bdBase, fOublier: fOublierBase } = await this.ouvrirBd({\n id: idBdBase,\n type: \"set\",\n });\n const { bd: bd2, fOublier: fOublier2 } = await this.ouvrirBd({\n id: idBd2,\n type: \"set\",\n });\n await this.combinerBdsEnsemble({\n bdBase,\n bd2,\n });\n await fOublierBase();\n await fOublier2();\n break;\n }\n default:\n throw new Error(`Type de BD ${type} non supporté.`);\n }\n }\n async combinerBdsDict({ bdBase, bd2, }) {\n const contenuBd2 = Object.fromEntries((await bd2.all()).map((x) => [x.key, x.value]));\n for (const [c, v] of Object.entries(contenuBd2)) {\n const valBdBase = await bdBase.get(c);\n if (valBdBase === v) {\n continue;\n }\n else if (valBdBase === undefined) {\n await bdBase.put(c, v);\n }\n else if (isValidAddress(valBdBase) && isValidAddress(v)) {\n await this.combinerBds({\n idBdBase: valBdBase,\n idBd2: v,\n });\n }\n }\n }\n async combinerBdsEnsemble({ bdBase, bd2, index, }) {\n const contenuBdBase = await bdBase.all();\n const contenuBd2 = await bd2.all();\n for (const é of contenuBd2) {\n const valBd2 = é.value; // Note : peut-être existe-t-il une solution plus sécuritaire ?\n if (index) {\n if (typeof valBd2 !== \"object\")\n throw new Error(`Erreur combinaison ensembles : ${typeof valBd2}`);\n const existant = contenuBdBase.find((x) => typeof x.value === \"object\" &&\n index.every((i) => x.value[i] ===\n valBd2[i]));\n if (!existant) {\n // Si pas d'existant, ajouter le nouvel élément\n await bdBase.add(valBd2);\n }\n else {\n const valExistant = existant.value;\n // Si existant, combiner et mettre à jour seulement si différents\n if (!deepEqual(valExistant, valBd2)) {\n const combiné = Object.assign({}, valExistant);\n for (const [c, v] of Object.entries(valBd2)) {\n if (combiné[c] === undefined) {\n combiné[c] = v;\n }\n else if (!deepEqual(combiné[c], v)) {\n if (isValidAddress(combiné[c]) && isValidAddress(v)) {\n await this.combinerBds({\n idBdBase: combiné[c],\n idBd2: v,\n });\n }\n }\n }\n await bdBase.del(existant.value);\n await bdBase.add(combiné);\n }\n }\n }\n else {\n if (!contenuBdBase.some((x) => deepEqual(x.value, valBd2))) {\n await bdBase.add(valBd2);\n }\n }\n }\n }\n async suivreBd({ id, f, type, schéma, }) {\n if (!isValidAddress(id))\n throw new Error(`Adresse \"${id}\" non valide.`);\n const fsOublier = [];\n const promesses = {};\n let annulé = false;\n const lancerSuivi = () => {\n // Alambiqué, mais apparemment nécessaire pour TypeScript !\n const promesseBd = schéma\n ? type === \"set\"\n ? this.ouvrirBdTypée({\n id,\n type,\n schéma: schéma,\n })\n : type === \"keyvalue\"\n ? this.ouvrirBdTypée({\n id,\n type,\n schéma: schéma,\n })\n : type === \"ordered-keyvalue\"\n ? this.ouvrirBdTypée({\n id,\n type,\n schéma: schéma,\n })\n : this.ouvrirBd({\n id,\n type,\n })\n : this.ouvrirBd({\n id,\n });\n promesseBd\n .then(({ bd, fOublier }) => {\n fsOublier.push(fOublier);\n const fFinale = () => {\n const idSuivi = uuidv4();\n const promesse = f(bd);\n const estUnePromesse = (x) => {\n return !!x && !!x.then;\n };\n if (estUnePromesse(promesse)) {\n promesses[idSuivi] = promesse;\n promesse.then(() => {\n delete promesses[idSuivi];\n });\n }\n };\n bd.events.on(\"update\", fFinale);\n fsOublier.push(async () => {\n bd.events.off(\"update\", fFinale);\n });\n /* if (\n é === \"update\" &&\n bd.events.listenerCount(\"write\") > bd.events.getMaxListeners()\n ) {\n console.log({id: bd.id, type: bd.type, n: bd.events.listenerCount(\"write\")})\n console.log({f})\n } */\n fFinale();\n })\n .catch((e) => {\n // Ceci nous permet de ressayer d'obtenir le contenu de la BD en continue, tant que la requête n'a pas été annulée\n if (!annulé) {\n if (String(e).includes(\"ipfs unable to find\") ||\n String(e).includes(\"aborted\") ||\n String(e).includes(\"No Promise in Promise.any was resolved\")) {\n lancerSuivi();\n }\n else {\n console.error(e);\n throw new Error(e);\n }\n }\n });\n };\n lancerSuivi();\n const fOublier = async () => {\n annulé = true;\n await Promise.all(fsOublier.map((f) => f()));\n await Promise.all(Object.values(promesses));\n };\n return fOublier;\n }\n async suivreBdDeClef({ id, clef, f, fSuivre, }) {\n const fRacine = async ({ fSuivreRacine, }) => {\n const fSuivreBdRacine = async (bd) => {\n const nouvelIdBdCible = await bd.get(clef);\n return await fSuivreRacine(nouvelIdBdCible);\n };\n return await this.suivreBd({ id, f: fSuivreBdRacine, type: \"keyvalue\" });\n };\n return await suivreBdDeFonction({ fRacine, f, fSuivre });\n }\n async suivreBdDic({ id, schéma, f, }) {\n const fFinale = async (bd) => {\n const valeurs = (bd\n ? Object.fromEntries((await bd.all()).map((x) => [x.key, x.value]))\n : {});\n await f(valeurs);\n };\n // @ts-expect-error Je ne sais pas pourquoi\n return await this.suivreBd({ id, type: \"keyvalue\", schéma, f: fFinale });\n }\n async suivreBdDicOrdonnée({ id, schéma, f, }) {\n // À faire : différention entre schéma présent ou absent\n const fFinale = async (bd) => {\n const valeurs = (await bd.all());\n await f(valeurs);\n };\n return await this.suivreBd({\n id,\n type: \"ordered-keyvalue\",\n schéma,\n // @ts-expect-error Je ne sais pas pourquoi\n f: fFinale,\n });\n }\n async suivreBdDicDeClef({ id, clef, schéma, f, }) {\n const fFinale = async (valeurs) => {\n await f(valeurs || {});\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreBdDic({ id, schéma, f: fSuivreBd });\n };\n return await this.suivreBdDeClef({\n id,\n clef,\n f: fFinale,\n fSuivre,\n });\n }\n async suivreBdDicOrdonnéeDeClef({ id, clef, schéma, f, }) {\n const fFinale = async (valeurs) => {\n await f(valeurs || []);\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreBdDicOrdonnée({ id, schéma, f: fSuivreBd });\n };\n return await this.suivreBdDeClef({\n id,\n clef,\n f: fFinale,\n fSuivre,\n });\n }\n async suivreBdListeDeClef({ id, clef, f, schéma, renvoyerValeur = true, }) {\n // À faire : très laid en raison de contraintes Typescript...peut-être existe-il une meilleure façon ?\n if (renvoyerValeur) {\n const fFinale = async (valeurs) => {\n await f(valeurs || []);\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreBdListe({\n id,\n f: fSuivreBd,\n schéma,\n renvoyerValeur,\n });\n };\n return await this.suivreBdDeClef({\n id,\n clef,\n f: fFinale,\n fSuivre,\n });\n }\n else {\n const fFinale = async (valeurs) => {\n await f(valeurs || []);\n };\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await this.suivreBdListe({\n id,\n f: fSuivreBd,\n schéma,\n renvoyerValeur: false,\n });\n };\n return await this.suivreBdDeClef({\n id,\n clef,\n f: fFinale,\n fSuivre: fSuivre,\n });\n }\n }\n async suivreBdListe({ id, f, schéma, renvoyerValeur = true, }) {\n return await this.suivreBd({\n id,\n type: \"set\",\n schéma,\n f: async (bd) => {\n const éléments = renvoyerValeur\n ? (await bd.all()).map((x) => x.value)\n : await bd.all();\n await f(éléments);\n },\n });\n }\n async suivreTypeObjet({ idObjet, f, }) {\n const fFinale = async (vals) => {\n let typeFinal = undefined;\n const { type } = vals;\n if (type) {\n typeFinal = [\"motClef\", \"variable\", \"bd\", \"projet\", \"nuée\"].includes(type)\n ? type\n : undefined;\n }\n else {\n if (vals.bds)\n typeFinal = \"projet\";\n else if (vals.tableaux)\n typeFinal = \"bd\";\n else if (vals.catégorie)\n typeFinal = \"variable\";\n else if (vals.nom)\n typeFinal = \"motClef\";\n }\n await f(typeFinal);\n };\n const schémaObjet = {\n type: \"object\",\n properties: {\n type: { type: \"string\", nullable: true },\n },\n additionalProperties: true,\n };\n const fOublier = await this.suivreBdDic({\n id: idObjet,\n schéma: schémaObjet,\n f: fFinale,\n });\n return fOublier;\n }\n async suivreEmpreinteTêtesBdRécursive({ idBd, f, }) {\n const obtTêteBd = async (bd) => {\n const éléments = await bd.log.heads();\n const tête = éléments[éléments.length - 1]?.hash || \"\";\n return tête;\n };\n const calculerEmpreinte = (texte) => Base64.stringify(md5(texte));\n const fFinale = async (têtes) => {\n await f(calculerEmpreinte(têtes.sort().join()));\n };\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBdsRécursives({\n idBd,\n f: async (bds) => await fSuivreRacine(bds),\n });\n };\n const fBranche = async (id, fSuivreBranche) => {\n return await this.suivreBd({\n id,\n f: async (bd) => {\n const tête = await obtTêteBd(bd);\n await fSuivreBranche(tête);\n },\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async suivreBdsDeBdListe({ id, f, fBranche, fIdBdDeBranche = (b) => b, fRéduction = (branches) => [...new Set(branches.flat())], fCode = (é) => é, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBdListe({ id, f: fSuivreRacine });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f,\n fBranche,\n fIdBdDeBranche,\n fRéduction,\n fCode,\n });\n }\n async suivreBdsDeBdDic({ id, f, fBranche, fIdBdDeBranche = (b) => b, fRéduction = (branches) => [...new Set(branches.flat())], fCode = (é) => é, }) {\n const fListe = async (fSuivreRacine) => {\n return await this.suivreBd({\n id,\n f: async (bd) => {\n return await fSuivreRacine((await bd.all()).map((x) => x.value));\n },\n });\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f,\n fBranche,\n fIdBdDeBranche,\n fRéduction,\n fCode,\n });\n }\n async suivreBdsDeFonctionRecherche({ fListe, f, fBranche, fIdBdDeBranche = (b) => b, fRéduction = (branches) => [...new Set(branches.flat())], fCode = (é) => é, }) {\n let _fChangerProfondeur = undefined;\n const fChangerProfondeur = async (p) => {\n if (_fChangerProfondeur)\n await _fChangerProfondeur(p);\n };\n const fListeFinale = async (fSuivreRacine) => {\n const { fOublier: fOublierL, fChangerProfondeur: fChangerL } = await fListe(fSuivreRacine);\n _fChangerProfondeur = fChangerL;\n return fOublierL;\n };\n const fOublier = await suivreBdsDeFonctionListe({\n fListe: fListeFinale,\n f,\n fBranche,\n fIdBdDeBranche,\n fRéduction,\n fCode,\n });\n return { fOublier, fChangerProfondeur };\n }\n async suivreBdSelonCondition({ fRacine, fCondition, f, }) {\n const fSuivre = async ({ id, fSuivreBd, }) => {\n return await fCondition(id, async (condition) => {\n fSuivreBd(condition ? id : undefined);\n });\n };\n return await suivreBdDeFonction({\n fRacine: async ({ fSuivreRacine }) => await fRacine(fSuivreRacine),\n f: ignorerNonDéfinis(f),\n fSuivre,\n });\n }\n async suivreBdsSelonCondition({ fListe, fCondition, f, }) {\n const fFinale = async (éléments) => {\n const bdsRecherchées = éléments\n .filter((él) => él.état)\n .map((él) => él.id);\n return await f(bdsRecherchées);\n };\n const fBranche = async (id, fSuivreBranche) => {\n const fFinaleSuivreBranche = async (état) => {\n return await fSuivreBranche({ id, état });\n };\n return await fCondition(id, fFinaleSuivreBranche);\n };\n return await suivreBdsDeFonctionListe({\n fListe,\n f: fFinale,\n fBranche,\n });\n }\n async obtFichierSFIP({ id, max, }) {\n return await toBuffer(await this.obtItérableAsyncSFIP({ id }), max);\n }\n async obtItérableAsyncSFIP({ id, }) {\n const { sfip } = await this.attendreSfipEtOrbite();\n const fs = unixfs(sfip);\n const idc = id.split(\"/\")[0];\n return fs.cat(CID.parse(idc));\n }\n async ajouterÀSFIP({ contenu, nomFichier, }) {\n const { sfip } = await this.attendreSfipEtOrbite();\n const fs = unixfs(sfip);\n const idc = await fs.addFile({ content: contenu });\n return idc.toString() + \"/\" + nomFichier;\n }\n obtClefStockageClient({ clef, parCompte = true, }) {\n return parCompte\n ? `${this.idCompte.slice(this.idCompte.length - 23, this.idCompte.length - 8)} : ${clef}`\n : clef;\n }\n async obtDeStockageLocal({ clef, parCompte = true, }) {\n const clefClient = this.obtClefStockageClient({ clef, parCompte });\n return (await obtStockageLocal(await this.dossier())).getItem(clefClient);\n }\n async sauvegarderAuStockageLocal({ clef, val, parCompte = true, }) {\n const clefClient = this.obtClefStockageClient({ clef, parCompte });\n return (await obtStockageLocal(await this.dossier())).setItem(clefClient, val);\n }\n async effacerDeStockageLocal({ clef, parCompte = true, }) {\n const clefClient = this.obtClefStockageClient({ clef, parCompte });\n return (await obtStockageLocal(await this.dossier())).removeItem(clefClient);\n }\n async obtIdBd({ nom, racine, type, }) {\n const schémaBdRacine = {\n type: \"object\",\n properties: {\n [nom]: { type: \"string\" },\n },\n additionalProperties: true,\n required: [],\n };\n const { bd: bdRacine, fOublier } = typeof racine === \"string\"\n ? await this.ouvrirBdTypée({\n id: racine,\n type: \"keyvalue\",\n schéma: schémaBdRacine,\n })\n : { bd: racine, fOublier: faisRien };\n const clefRequête = bdRacine.address + \":\" + nom;\n await this.verrouObtIdBd.acquire(clefRequête);\n let idBd = (await bdRacine.get(nom));\n const idBdPrécédente = await this.obtDeStockageLocal({ clef: clefRequête });\n if (typeof idBd === \"string\" && idBdPrécédente && idBd !== idBdPrécédente) {\n try {\n await this.combinerBds({\n idBdBase: idBd,\n idBd2: idBdPrécédente,\n });\n await this.effacerBd({ id: idBdPrécédente });\n await this.sauvegarderAuStockageLocal({ clef: clefRequête, val: idBd });\n }\n catch {\n // Rien à faire ; on démissionne !\n }\n }\n // Nous devons confirmer que la base de données spécifiée était du bon genre\n if (typeof idBd === \"string\" && type) {\n try {\n const { fOublier: fOublierBd } = await this.ouvrirBd({\n id: idBd,\n type,\n });\n await fOublierBd();\n this.verrouObtIdBd.release(clefRequête);\n return idBd;\n }\n catch {\n this.verrouObtIdBd.release(clefRequête);\n throw new Error(\"Bd n'existe pas : \" + nom + \" \" + idBd);\n }\n }\n if (!idBd && type) {\n const accès = bdRacine.access;\n const { orbite } = await this.attendreSfipEtOrbite();\n const permission = await accès.estAutorisé(orbite.identity.id);\n if (permission) {\n const optionsAccès = await this.obtOpsAccès({\n idBd: bdRacine.address,\n });\n idBd = await this.créerBdIndépendante({ type, optionsAccès });\n if (!idBd)\n throw new Error(\"Bd non générée\");\n // @ts-expect-error Aucune idée pourquoi ça fonctionne pas\n await bdRacine.set(nom, idBd);\n }\n }\n if (typeof idBd === \"string\")\n await this.sauvegarderAuStockageLocal({ clef: clefRequête, val: idBd });\n if (fOublier)\n await fOublier();\n this.verrouObtIdBd.release(clefRequête);\n return typeof idBd === \"string\" ? idBd : undefined;\n }\n async créerBdIndépendante({ type, optionsAccès, nom, }) {\n const { orbite } = await this.attendreSfipEtOrbite();\n optionsAccès = optionsAccès || (await this.obtOptionsAccès());\n return await orbite.créerBdIndépendante({\n type,\n nom,\n options: {\n AccessController: générerContrôleurConstellation(optionsAccès),\n },\n });\n }\n async effacerBd({ id }) {\n return await this.orbite?.effacerBd({ id });\n }\n async obtOpsAccès({ idBd, }) {\n const { bd, fOublier } = await this.ouvrirBd({ id: idBd });\n const accès = bd.access;\n await fOublier();\n return {\n address: accès.bd.address,\n write: accès.write,\n };\n }\n async suivrePermission({ idObjet, f, }) {\n const { bd, fOublier } = await this.ouvrirBd({ id: idObjet });\n const accès = bd.access;\n const typeAccès = accès.type;\n if (typeAccès === \"ipfs\") {\n const moi = await this.obtIdDispositif();\n await f(accès.write.includes(moi)\n ? MEMBRE\n : undefined);\n await fOublier();\n return faisRien;\n }\n else if (typeAccès === nomTypeContrôleurConstellation) {\n const fFinale = async (utilisateurs) => {\n const mesRôles = utilisateurs\n .filter((u) => u.idCompte === this.idCompte)\n .map((u) => u.rôle);\n const rôlePlusPuissant = mesRôles.includes(MODÉRATEUR)\n ? MODÉRATEUR\n : mesRôles.includes(MEMBRE)\n ? MEMBRE\n : undefined;\n await f(rôlePlusPuissant);\n };\n const fOublierSuivreAccès = await accès.suivreUtilisateursAutorisés(fFinale);\n return async () => {\n await fOublierSuivreAccès();\n await fOublier();\n };\n }\n else {\n throw new Error(`Type d'accès ${typeAccès} non reconnu.`);\n }\n }\n async suivrePermissionÉcrire({ id, f, }) {\n const fFinale = async (rôle) => {\n await f(rôle !== undefined);\n };\n return await this.suivrePermission({ idObjet: id, f: fFinale });\n }\n async suivreAccèsBd({ id, f, }) {\n const fFinale = async (bd) => {\n const accès = bd.access;\n const typeAccès = accès.type;\n if (typeAccès === \"ipfs\") {\n const listeAccès = accès.write.map((id) => {\n return {\n idCompte: id,\n rôle: MODÉRATEUR,\n };\n });\n await f(listeAccès);\n }\n else if (typeAccès === nomTypeContrôleurConstellation) {\n const fOublierAutorisés = await accès.suivreUtilisateursAutorisés(f);\n return fOublierAutorisés;\n }\n return faisRien;\n };\n return await this.suivreBd({\n id,\n f: fFinale,\n });\n }\n async suivreBdsRécursives({ idBd, f, }) {\n const dicBds = {};\n const fFinale = async () => {\n await f(Object.keys(dicBds));\n };\n const verrou = new Semaphore();\n const enleverRequêtesDe = async (de) => {\n delete dicBds[de];\n await Promise.all(Object.keys(dicBds).map(async (id) => {\n if (!dicBds[id])\n return;\n dicBds[id].requêtes.delete(de);\n if (!dicBds[id].requêtes.size) {\n await dicBds[id].fOublier();\n }\n }));\n };\n // On ne suit pas automatiquement les BDs ou tableaux dont celui d'intérêt a été copié...ça pourait être très volumineu\n const clefsÀExclure = [\"copiéDe\"];\n const _suivreBdsRécursives = async (id, de) => {\n const extraireÉléments = (l_vals) => {\n return l_vals\n .map((v) => {\n if (typeof v === \"string\")\n return [v];\n if (Array.isArray(v))\n return v;\n if (typeof v === \"object\")\n return Object.values(v);\n return [];\n })\n .flat()\n .filter((v) => isValidAddress(v));\n };\n const fSuivreBd = async (vals) => {\n // Cette fonction détectera les éléments d'une liste ou d'un dictionnaire\n // (à un niveau de profondeur) qui représentent une adresse de BD Orbit.\n let idsOrbite = [];\n if (typeof vals === \"object\") {\n idsOrbite = extraireÉléments(Object.entries(vals)\n .filter((x) => !clefsÀExclure.includes(x[0]))\n .map((x) => x[1]));\n idsOrbite.push(...extraireÉléments(Object.keys(vals)));\n }\n else if (Array.isArray(vals)) {\n idsOrbite = extraireÉléments(vals);\n }\n else if (typeof vals === \"string\") {\n idsOrbite = [vals];\n }\n const nouvelles = idsOrbite.filter((id_) => !dicBds[id].sousBds.includes(id_));\n const obsolètes = dicBds[id].sousBds.filter((id_) => !idsOrbite.includes(id_));\n dicBds[id].sousBds = idsOrbite;\n await Promise.all(obsolètes.map(async (o) => {\n dicBds[o]?.requêtes.delete(id);\n if (!dicBds[o]?.requêtes.size)\n await dicBds[o]?.fOublier();\n }));\n await Promise.all(nouvelles.map(async (id_) => await _suivreBdsRécursives(id_, id)));\n fFinale();\n };\n await verrou.acquire(id);\n if (dicBds[id]) {\n dicBds[id].requêtes.add(de);\n return;\n }\n const { bd, fOublier } = await this.ouvrirBd({ id });\n const { type } = bd;\n await fOublier();\n dicBds[id] = {\n requêtes: new Set([de]),\n sousBds: [],\n fOublier: async () => {\n await fOublierSuiviBd();\n await enleverRequêtesDe(id);\n },\n };\n let fOublierSuiviBd;\n if (type === \"keyvalue\") {\n fOublierSuiviBd = await this.suivreBdDic({ id, f: fSuivreBd });\n }\n else if (type === \"ordered-keyvalue\") {\n fOublierSuiviBd = await this.suivreBdDicOrdonnée({ id, f: fSuivreBd });\n }\n else if (type === \"set\") {\n fOublierSuiviBd = await this.suivreBdListe({ id, f: fSuivreBd });\n }\n else {\n fOublierSuiviBd = faisRien; // Rien à suivre mais il faut l'inclure quand même !\n }\n verrou.release(id);\n fFinale();\n };\n await _suivreBdsRécursives(idBd, \"\");\n const fOublier = async () => {\n await Promise.all(Object.values(dicBds).map((v) => v.fOublier()));\n };\n return fOublier;\n }\n async fermerCompte() {\n if (this.réseau)\n await this.réseau.fermer();\n if (this.favoris)\n await this.favoris.fermer();\n if (this.automatisations)\n await this.automatisations.fermer();\n }\n async fermer() {\n await this.attendreInitialisée();\n const { orbite } = await this.attendreSfipEtOrbite();\n await (await obtStockageLocal(await this.dossier())).fermer?.();\n await this.fermerCompte();\n await this.épingles.fermer();\n await orbite.fermer({ arrêterOrbite: !this._orbiteExterne });\n if (this.sfip && !this._sfipExterne)\n await this.sfip.stop();\n // Effacer fichier verrour\n await this.effacerVerrou();\n }\n async effacerDispositif() {\n await this.fermer();\n if (indexedDB) {\n if (indexedDB.databases) {\n const indexedDbDatabases = await indexedDB.databases();\n await Promise.all(indexedDbDatabases.map((bd) => {\n if (bd.name)\n indexedDB.deleteDatabase(bd.name);\n }));\n }\n else {\n console.warn(\"On a pas pu tout effacer.\");\n }\n }\n else {\n const fs = await import(\"fs\");\n const stockageLocal = await obtStockageLocal(await this.dossier());\n stockageLocal.clear();\n fs.rmdirSync(await this.dossier());\n }\n }\n async exporterDispositif({ nomFichier, }) {\n if (isNode || isElectronMain) {\n const fs = await import(\"fs\");\n const path = await import(\"path\");\n const ajouterDossierÀZip = ({ dossier, zip, }) => {\n const dossiers = fs.readdirSync(dossier);\n dossiers.map((d) => {\n const stat = fs.statSync(d);\n if (stat?.isDirectory()) {\n ajouterDossierÀZip({\n dossier: path.join(dossier, d),\n zip: zip.folder(d),\n });\n }\n else {\n const fluxFichier = fs.createReadStream(path.join(dossier, d));\n zip.file(d, fluxFichier);\n }\n });\n };\n const zip = new JSZip();\n ajouterDossierÀZip({\n dossier: await this.dossier(),\n zip,\n });\n await sauvegarderFichierZip({ fichierZip: zip, nomFichier });\n }\n else if (indexedDB?.databases) {\n const sauvegarderBdIndexeÀZip = ({ bd, zip, }) => {\n const { name: nomBd } = bd;\n if (nomBd) {\n const dossierZipBd = zip.folder(nomBd);\n if (!dossierZipBd)\n throw new Error(nomBd);\n const bdOuverte = indexedDB.open(nomBd).result;\n const tableauxBdIndexe = bdOuverte.objectStoreNames;\n const listeTableaux = [...Array(tableauxBdIndexe.length).keys()]\n .map((i) => tableauxBdIndexe.item(i))\n .filter((x) => !!x);\n listeTableaux.map((tbl) => dossierZipBd.file(tbl, new indexedDbStream.IndexedDbReadStream({\n databaseName: nomBd,\n objectStoreName: tbl,\n })));\n }\n };\n const fichierZip = new JSZip();\n const indexedDbDatabases = await indexedDB.databases();\n const dossierZipIndexe = fichierZip.folder(\"bdIndexe\");\n if (!dossierZipIndexe)\n throw new Error(\"Erreur Bd Indexe...\");\n indexedDbDatabases.forEach((bd) => {\n sauvegarderBdIndexeÀZip({ bd, zip: dossierZipIndexe });\n });\n fichierZip.file(\"stockageLocal\", JSON.stringify(await exporterStockageLocal(await this.dossier())));\n await sauvegarderFichierZip({ fichierZip, nomFichier });\n }\n else {\n throw new Error(\"Sauvegarde non implémentée.\");\n }\n }\n async rétablirDispositif() {\n await this.effacerDispositif();\n if (isNode || isElectronMain) {\n throw new Error(\"Non implémenté\");\n }\n else {\n throw new Error(\"Non implémenté\");\n }\n }\n static async créer(opts = {}) {\n const client = new Constellation(opts);\n await client.attendreInitialisée();\n return client;\n }\n}\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivreDispositifs\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivreIdCompte\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivreEmpreinteT\\u00EAtesBdR\\u00E9cursive\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivrePermission\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivrePermission\\u00C9crire\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivreAcc\\u00E8sBd\", null);\n__decorate([\n cacheSuivi\n], Constellation.prototype, \"suivreBdsR\\u00E9cursives\", null);\n//# sourceMappingURL=client.js.map","import Semaphore from \"@chriscdn/promise-semaphore\";\nimport { Constellation } from \"../client.js\";\nimport { ERREUR_INIT_IPA, ERREUR_EXÉCUTION_IPA, ERREUR_FONCTION_MANQUANTE, ERREUR_PAS_UNE_FONCTION, } from \"@constl/mandataire\";\nimport { v4 as uuidv4 } from \"uuid\";\nexport class EnveloppeIpa {\n ipa;\n _messagesEnAttente;\n prêt;\n dicFRetourSuivi;\n opts;\n fsMessages;\n fsErreurs;\n _verrou;\n constructor(fMessage, fErreur, opts = {}) {\n this.fsMessages = {};\n this.fsErreurs = {};\n this.connecterÉcouteurs({\n fMessage,\n fErreur,\n });\n this.opts = opts instanceof Constellation ? {} : opts;\n if (opts instanceof Constellation)\n this.ipa = opts;\n this.dicFRetourSuivi = {};\n this.prêt = false;\n this._messagesEnAttente = [];\n this._verrou = new Semaphore();\n this.init();\n }\n fMessage(m) {\n Object.values(this.fsMessages).forEach((f) => f(m));\n }\n fErreur({ erreur, id, code }) {\n Object.values(this.fsErreurs).forEach((f) => f({ erreur, id, code }));\n }\n async init() {\n await this._verrou.acquire(\"init\");\n if (this.ipa) {\n this._verrou.release(\"init\");\n return this.ipa;\n } // Nécessaire si on a plus qu'un mandataire connecté à la même instance Constellation\n try {\n this.ipa = await Constellation.créer(this.opts);\n }\n catch (e) {\n this.fErreur({\n erreur: e.toString(),\n code: e.name === \"Error\" ? ERREUR_INIT_IPA : e.name,\n });\n throw e;\n }\n this._messagesEnAttente.forEach((m) => this._gérerMessage(m));\n this.prêt = true;\n this._verrou.release(\"init\");\n return this.ipa;\n }\n async gérerMessage(message) {\n if (this.prêt) {\n await this._gérerMessage(message);\n }\n else {\n this._messagesEnAttente.unshift(message);\n }\n }\n async _gérerMessage(message) {\n if (!this.ipa) {\n this.fErreur({\n erreur: \"IPA non initialisé\",\n id: message.id,\n code: ERREUR_INIT_IPA,\n });\n return;\n }\n const { type } = message;\n switch (type) {\n case \"suivre\": {\n const { id, fonction, args, nomArgFonction } = message;\n const fonctionIPA = this.extraireFonctionIPA(fonction, id);\n if (!fonctionIPA)\n return; // L'erreur est déjà envoyée par extraireFonctionIPA\n const fFinale = (données) => {\n const messageRetour = {\n type: \"suivre\",\n id,\n données,\n };\n this.fMessage(messageRetour);\n };\n args[nomArgFonction] = fFinale;\n try {\n const retour = (await fonctionIPA(args));\n const retourFinal = typeof retour === \"function\" ? { fOublier: retour } : retour;\n this.dicFRetourSuivi[id] = retourFinal;\n const messageRetour = {\n type: \"suivrePrêt\",\n id,\n };\n if (typeof retour !== \"function\")\n messageRetour.fonctions = Object.keys(retour);\n this.fMessage(messageRetour);\n }\n catch (e) {\n this.fErreur({\n erreur: e.toString() + e.stack.toString(),\n id,\n code: ERREUR_EXÉCUTION_IPA,\n });\n }\n break;\n }\n case \"action\": {\n const { id, fonction, args } = message;\n const fonctionIPA = this.extraireFonctionIPA(fonction, id);\n if (!fonctionIPA)\n return; // L'erreur est déjà envoyée par extraireFonctionIPA\n try {\n const résultat = await fonctionIPA(args);\n const messageRetour = {\n type: \"action\",\n id,\n résultat,\n };\n this.fMessage(messageRetour);\n }\n catch (e) {\n this.fErreur({\n erreur: e.toString() + e.stack.toString(),\n id,\n code: ERREUR_EXÉCUTION_IPA,\n });\n }\n break;\n }\n case \"retour\": {\n const { id, fonction, args } = message;\n const retour = this.dicFRetourSuivi[id];\n if (retour)\n await retour[fonction](args);\n if (fonction === \"fOublier\")\n delete this.dicFRetourSuivi[id];\n break;\n }\n default: {\n this.fErreur({\n erreur: `Type de requête ${type} non reconnu dans message ${message}`,\n id: message.id,\n code: ERREUR_EXÉCUTION_IPA,\n });\n break;\n }\n }\n }\n extraireFonctionIPA(adresseFonction, idMessage) {\n const erreur = `Fonction Constellation.${adresseFonction.join(\".\")} n'existe pas ou n'est pas une fonction.`;\n let fonctionIPA = this.ipa;\n for (const [i, attr] of adresseFonction.entries()) {\n if (typeof fonctionIPA === \"object\" &&\n attr in fonctionIPA &&\n fonctionIPA[attr]) {\n // Vive JavaScript et `this`!\n if (i === adresseFonction.length - 1) {\n // @ts-expect-error Ça, ça me dépasse\n fonctionIPA = fonctionIPA[attr].bind(fonctionIPA);\n }\n else {\n fonctionIPA = fonctionIPA[attr];\n }\n }\n else {\n this.fErreur({\n erreur,\n id: idMessage,\n code: ERREUR_FONCTION_MANQUANTE,\n });\n return undefined;\n }\n if (!fonctionIPA) {\n this.fErreur({\n erreur,\n id: idMessage,\n code: ERREUR_FONCTION_MANQUANTE,\n });\n return undefined;\n }\n }\n if (typeof fonctionIPA !== \"function\") {\n this.fErreur({ erreur, id: idMessage, code: ERREUR_PAS_UNE_FONCTION });\n return undefined;\n }\n return fonctionIPA;\n }\n connecterÉcouteurs({ fMessage, fErreur, }) {\n const idÉcouteurs = uuidv4();\n this.fsMessages[idÉcouteurs] = fMessage;\n this.fsErreurs[idÉcouteurs] = fErreur;\n return () => {\n delete this.fsMessages[idÉcouteurs];\n delete this.fsErreurs[idÉcouteurs];\n };\n }\n async fermer() {\n // Avant de fermer, il faut être sûr qu'on a bien initialisé !\n const ipa = await this.init();\n await ipa.fermer();\n }\n}\n//# sourceMappingURL=enveloppe.js.map","import { générerMandataire, Mandatairifiable, } from \"@constl/mandataire\";\nimport { EnveloppeIpa } from \"./enveloppe.js\";\nexport class MandataireProc extends Mandatairifiable {\n ipa;\n constructor(opts = {}) {\n super();\n this.ipa = new EnveloppeIpa((m) => this.recevoirMessageDIpa(m), ({ erreur, idRequête, code, }) => {\n const messageErreur = {\n type: \"erreur\",\n id: idRequête,\n erreur,\n codeErreur: code,\n };\n this.recevoirMessageDIpa(messageErreur);\n }, opts);\n }\n envoyerMessageÀIpa(message) {\n this.ipa.gérerMessage(message);\n }\n}\nexport const générerMandataireProc = (opts = {}) => {\n return générerMandataire(new MandataireProc(opts));\n};\n//# sourceMappingURL=ipaProc.js.map","export function downloadFile(filename: string, content: string | Uint8Array) {\n const element = document.createElement('a');\n\n let url: string;\n if (content instanceof Uint8Array) {\n url = URL.createObjectURL(new Blob([content.buffer]));\n } else {\n url = content;\n }\n element.setAttribute('href', url);\n element.setAttribute('download', filename);\n\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n}\n\nexport function selectTranslation(options?: {[language: string]: string}): string | undefined {\n // Constellation has a multilingual-centric structure, but for now the Riff.CC site is monolingual,\n // so we'll just use any name. Once Riff.CC has an internationalised interface, we can match displayed\n // usernames with the viewer's chosen site language here, and do fancy stuff looking up fallback languages.\n\n // Another idea: we could also set up community translations of the Riff.CC site interface itself with\n // Kilimukku, which is a Constellation-based community translation software.\n return options && Object.keys(options).length ? Object.values(options)[0] : undefined;\n}\n\nexport async function copyText(text: string | undefined) {\n if (!text) return;\n await navigator.clipboard.writeText(text);\n}\n\nexport const RIFFCC_PROTOCOL = 'Riff.CC';\n","import type {App} from 'vue';\n\nimport {mandataire} from '@constl/ipa';\nimport {RIFFCC_PROTOCOL} from '/@/utils';\n\nexport default {\n install: (app: App) => {\n const client = mandataire.générerMandataireProc({protocoles: [RIFFCC_PROTOCOL]});\n app.config.globalProperties.$constl = client;\n app.provide('constl', client);\n },\n};\n","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VAlertTitle = createSimpleFunctional('v-alert-title');\n//# sourceMappingURL=VAlertTitle.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VAlert.css\";\n\n// Components\nimport { VAlertTitle } from \"./VAlertTitle.mjs\";\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nconst allowedTypes = ['success', 'info', 'warning', 'error'];\nexport const makeVAlertProps = propsFactory({\n border: {\n type: [Boolean, String],\n validator: val => {\n return typeof val === 'boolean' || ['top', 'end', 'bottom', 'start'].includes(val);\n }\n },\n borderColor: String,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$close'\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close'\n },\n icon: {\n type: [Boolean, String, Function, Object],\n default: null\n },\n modelValue: {\n type: Boolean,\n default: true\n },\n prominent: Boolean,\n title: String,\n text: String,\n type: {\n type: String,\n validator: val => allowedTypes.includes(val)\n },\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'flat'\n })\n}, 'VAlert');\nexport const VAlert = genericComponent()({\n name: 'VAlert',\n props: makeVAlertProps(),\n emits: {\n 'click:close': e => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const icon = computed(() => {\n if (props.icon === false) return undefined;\n if (!props.type) return props.icon;\n return props.icon ?? `$${props.type}`;\n });\n const variantProps = computed(() => ({\n color: props.color ?? props.type,\n variant: props.variant\n }));\n const {\n themeClasses\n } = provideTheme(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(variantProps);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'borderColor'));\n const {\n t\n } = useLocale();\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick(e) {\n isActive.value = false;\n emit('click:close', e);\n }\n }));\n return () => {\n const hasPrepend = !!(slots.prepend || icon.value);\n const hasTitle = !!(slots.title || props.title);\n const hasClose = !!(slots.close || props.closable);\n return isActive.value && _createVNode(props.tag, {\n \"class\": ['v-alert', props.border && {\n 'v-alert--border': !!props.border,\n [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true\n }, {\n 'v-alert--prominent': props.prominent\n }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],\n \"role\": \"alert\"\n }, {\n default: () => [genOverlays(false, 'v-alert'), props.border && _createVNode(\"div\", {\n \"key\": \"border\",\n \"class\": ['v-alert__border', textColorClasses.value],\n \"style\": textColorStyles.value\n }, null), hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-alert__prepend\"\n }, [!slots.prepend ? _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"density\": props.density,\n \"icon\": icon.value,\n \"size\": props.prominent ? 44 : 28\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !icon.value,\n \"defaults\": {\n VIcon: {\n density: props.density,\n icon: icon.value,\n size: props.prominent ? 44 : 28\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-alert__content\"\n }, [hasTitle && _createVNode(VAlertTitle, {\n \"key\": \"title\"\n }, {\n default: () => [slots.title?.() ?? props.title]\n }), slots.text?.() ?? props.text, slots.default?.()]), slots.append && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-alert__append\"\n }, [slots.append()]), hasClose && _createVNode(\"div\", {\n \"key\": \"close\",\n \"class\": \"v-alert__close\"\n }, [!slots.close ? _createVNode(VBtn, _mergeProps({\n \"key\": \"close-btn\",\n \"icon\": props.closeIcon,\n \"size\": \"x-small\",\n \"variant\": \"text\"\n }, closeProps.value), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"close-defaults\",\n \"defaults\": {\n VBtn: {\n icon: props.closeIcon,\n size: 'x-small',\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.close?.({\n props: closeProps.value\n })]\n })])]\n });\n };\n }\n});\n//# sourceMappingURL=VAlert.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLabel.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeThemeProps } from \"../../composables/theme.mjs\"; // Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVLabelProps = propsFactory({\n text: String,\n onClick: EventProp(),\n ...makeComponentProps(),\n ...makeThemeProps()\n}, 'VLabel');\nexport const VLabel = genericComponent()({\n name: 'VLabel',\n props: makeVLabelProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(\"label\", {\n \"class\": ['v-label', {\n 'v-label--clickable': !!props.onClick\n }, props.class],\n \"style\": props.style,\n \"onClick\": props.onClick\n }, [props.text, slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VLabel.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSelectionControlGroup.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeThemeProps } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, onScopeDispose, provide, toRef } from 'vue';\nimport { deepEqual, genericComponent, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VSelectionControlGroupSymbol = Symbol.for('vuetify:selection-control-group');\nexport const makeSelectionControlGroupProps = propsFactory({\n color: String,\n disabled: {\n type: Boolean,\n default: null\n },\n defaultsTarget: String,\n error: Boolean,\n id: String,\n inline: Boolean,\n falseIcon: IconValue,\n trueIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n multiple: {\n type: Boolean,\n default: null\n },\n name: String,\n readonly: {\n type: Boolean,\n default: null\n },\n modelValue: null,\n type: String,\n valueComparator: {\n type: Function,\n default: deepEqual\n },\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeThemeProps()\n}, 'SelectionControlGroup');\nexport const makeVSelectionControlGroupProps = propsFactory({\n ...makeSelectionControlGroupProps({\n defaultsTarget: 'VSelectionControl'\n })\n}, 'VSelectionControlGroup');\nexport const VSelectionControlGroup = genericComponent()({\n name: 'VSelectionControlGroup',\n props: makeVSelectionControlGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const modelValue = useProxiedModel(props, 'modelValue');\n const uid = getUid();\n const id = computed(() => props.id || `v-selection-control-group-${uid}`);\n const name = computed(() => props.name || id.value);\n const updateHandlers = new Set();\n provide(VSelectionControlGroupSymbol, {\n modelValue,\n forceUpdate: () => {\n updateHandlers.forEach(fn => fn());\n },\n onForceUpdate: cb => {\n updateHandlers.add(cb);\n onScopeDispose(() => {\n updateHandlers.delete(cb);\n });\n }\n });\n provideDefaults({\n [props.defaultsTarget]: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n density: toRef(props, 'density'),\n error: toRef(props, 'error'),\n inline: toRef(props, 'inline'),\n modelValue,\n multiple: computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),\n name,\n falseIcon: toRef(props, 'falseIcon'),\n trueIcon: toRef(props, 'trueIcon'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n type: toRef(props, 'type'),\n valueComparator: toRef(props, 'valueComparator')\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-selection-control-group', {\n 'v-selection-control-group--inline': props.inline\n }, props.class],\n \"style\": props.style,\n \"role\": props.type === 'radio' ? 'radiogroup' : undefined\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VSelectionControlGroup.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VSelectionControl.css\";\n\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\";\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from \"../VSelectionControlGroup/VSelectionControlGroup.mjs\"; // Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useDensity } from \"../../composables/density.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, matchesSelector, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n baseColor: String,\n trueValue: null,\n falseValue: null,\n value: null,\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps()\n}, 'VSelectionControl');\nexport function useSelectionControl(props) {\n const group = inject(VSelectionControlGroupSymbol, undefined);\n const {\n densityClasses\n } = useDensity(props);\n const modelValue = useProxiedModel(props, 'modelValue');\n const trueValue = computed(() => props.trueValue !== undefined ? props.trueValue : props.value !== undefined ? props.value : true);\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false);\n const isMultiple = computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value));\n const model = computed({\n get() {\n const val = group ? group.modelValue.value : modelValue.value;\n return isMultiple.value ? wrapInArray(val).some(v => props.valueComparator(v, trueValue.value)) : props.valueComparator(val, trueValue.value);\n },\n set(val) {\n if (props.readonly) return;\n const currentValue = val ? trueValue.value : falseValue.value;\n let newVal = currentValue;\n if (isMultiple.value) {\n newVal = val ? [...wrapInArray(modelValue.value), currentValue] : wrapInArray(modelValue.value).filter(item => !props.valueComparator(item, trueValue.value));\n }\n if (group) {\n group.modelValue.value = newVal;\n } else {\n modelValue.value = newVal;\n }\n }\n });\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(computed(() => {\n if (props.error || props.disabled) return undefined;\n return model.value ? props.color : props.baseColor;\n }));\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(computed(() => {\n return model.value && !props.error && !props.disabled ? props.color : props.baseColor;\n }));\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon);\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n icon\n };\n}\nexport const VSelectionControl = genericComponent()({\n name: 'VSelectionControl',\n directives: {\n Ripple\n },\n inheritAttrs: false,\n props: makeVSelectionControlProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n trueValue\n } = useSelectionControl(props);\n const uid = getUid();\n const isFocused = shallowRef(false);\n const isFocusVisible = shallowRef(false);\n const input = ref();\n const id = computed(() => props.id || `input-${uid}`);\n const isInteractive = computed(() => !props.disabled && !props.readonly);\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value;\n }\n });\n function onFocus(e) {\n if (!isInteractive.value) return;\n isFocused.value = true;\n if (matchesSelector(e.target, ':focus-visible') !== false) {\n isFocusVisible.value = true;\n }\n }\n function onBlur() {\n isFocused.value = false;\n isFocusVisible.value = false;\n }\n function onClickLabel(e) {\n e.stopPropagation();\n }\n function onInput(e) {\n if (!isInteractive.value) {\n if (input.value) {\n // model value is not updated when input is not interactive\n // but the internal checked state of the input is still updated,\n // so here it's value is restored\n input.value.checked = model.value;\n }\n return;\n }\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate());\n }\n model.value = e.target.checked;\n }\n useRender(() => {\n const label = slots.label ? slots.label({\n label: props.label,\n props: {\n for: id.value\n }\n }) : props.label;\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const inputNode = _createVNode(\"input\", _mergeProps({\n \"ref\": input,\n \"checked\": model.value,\n \"disabled\": !!props.disabled,\n \"id\": id.value,\n \"onBlur\": onBlur,\n \"onFocus\": onFocus,\n \"onInput\": onInput,\n \"aria-disabled\": !!props.disabled,\n \"aria-label\": props.label,\n \"type\": props.type,\n \"value\": trueValue.value,\n \"name\": props.name,\n \"aria-checked\": props.type === 'checkbox' ? model.value : undefined\n }, inputAttrs), null);\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-selection-control', {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline\n }, densityClasses.value, props.class]\n }, rootAttrs, {\n \"style\": props.style\n }), [_createVNode(\"div\", {\n \"class\": ['v-selection-control__wrapper', textColorClasses.value],\n \"style\": textColorStyles.value\n }, [slots.default?.({\n backgroundColorClasses,\n backgroundColorStyles\n }), _withDirectives(_createVNode(\"div\", {\n \"class\": ['v-selection-control__input']\n }, [slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n inputNode,\n icon: icon.value,\n props: {\n onFocus,\n onBlur,\n id: id.value\n }\n }) ?? _createVNode(_Fragment, null, [icon.value && _createVNode(VIcon, {\n \"key\": \"icon\",\n \"icon\": icon.value\n }, null), inputNode])]), [[_resolveDirective(\"ripple\"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && _createVNode(VLabel, {\n \"for\": id.value,\n \"onClick\": onClickLabel\n }, {\n default: () => [label]\n })]);\n });\n return {\n isFocused,\n input\n };\n }\n});\n//# sourceMappingURL=VSelectionControl.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVSelectionControlProps, VSelectionControl } from \"../VSelectionControl/VSelectionControl.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCheckboxBtnProps = propsFactory({\n indeterminate: Boolean,\n indeterminateIcon: {\n type: IconValue,\n default: '$checkboxIndeterminate'\n },\n ...makeVSelectionControlProps({\n falseIcon: '$checkboxOff',\n trueIcon: '$checkboxOn'\n })\n}, 'VCheckboxBtn');\nexport const VCheckboxBtn = genericComponent()({\n name: 'VCheckboxBtn',\n props: makeVCheckboxBtnProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:indeterminate': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const indeterminate = useProxiedModel(props, 'indeterminate');\n const model = useProxiedModel(props, 'modelValue');\n function onChange(v) {\n if (indeterminate.value) {\n indeterminate.value = false;\n }\n }\n const falseIcon = computed(() => {\n return indeterminate.value ? props.indeterminateIcon : props.falseIcon;\n });\n const trueIcon = computed(() => {\n return indeterminate.value ? props.indeterminateIcon : props.trueIcon;\n });\n useRender(() => {\n const controlProps = omit(VSelectionControl.filterProps(props), ['modelValue']);\n return _createVNode(VSelectionControl, _mergeProps(controlProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": [$event => model.value = $event, onChange],\n \"class\": ['v-checkbox-btn', props.class],\n \"style\": props.style,\n \"type\": \"checkbox\",\n \"falseIcon\": falseIcon.value,\n \"trueIcon\": trueIcon.value,\n \"aria-checked\": indeterminate.value ? 'mixed' : undefined\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VCheckboxBtn.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useLocale } from \"../../composables/locale.mjs\"; // Types\nexport function useInputIcon(props) {\n const {\n t\n } = useLocale();\n function InputIcon(_ref) {\n let {\n name\n } = _ref;\n const localeKey = {\n prepend: 'prependAction',\n prependInner: 'prependAction',\n append: 'appendAction',\n appendInner: 'appendAction',\n clear: 'clear'\n }[name];\n const listener = props[`onClick:${name}`];\n const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? '') : undefined;\n return _createVNode(VIcon, {\n \"icon\": props[`${name}Icon`],\n \"aria-label\": label,\n \"onClick\": listener\n }, null);\n }\n return {\n InputIcon\n };\n}\n//# sourceMappingURL=InputIcon.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VMessages.css\";\n\n// Components\nimport { VSlideYTransition } from \"../transitions/index.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeVMessagesProps = propsFactory({\n active: Boolean,\n color: String,\n messages: {\n type: [Array, String],\n default: () => []\n },\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition,\n leaveAbsolute: true,\n group: true\n }\n })\n}, 'VMessages');\nexport const VMessages = genericComponent()({\n name: 'VMessages',\n props: makeVMessagesProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const messages = computed(() => wrapInArray(props.messages));\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(computed(() => props.color));\n useRender(() => _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"tag\": \"div\",\n \"class\": ['v-messages', textColorClasses.value, props.class],\n \"style\": [textColorStyles.value, props.style],\n \"role\": \"alert\",\n \"aria-live\": \"polite\"\n }, {\n default: () => [props.active && messages.value.map((message, i) => _createVNode(\"div\", {\n \"class\": \"v-messages__message\",\n \"key\": `${i}-${messages.value}`\n }, [slots.message ? slots.message({\n message\n }) : message]))]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VMessages.mjs.map","// Composables\nimport { useProxiedModel } from \"./proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { EventProp, getCurrentInstanceName, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeFocusProps = propsFactory({\n focused: Boolean,\n 'onUpdate:focused': EventProp()\n}, 'focus');\nexport function useFocus(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const isFocused = useProxiedModel(props, 'focused');\n const focusClasses = computed(() => {\n return {\n [`${name}--focused`]: isFocused.value\n };\n });\n function focus() {\n isFocused.value = true;\n }\n function blur() {\n isFocused.value = false;\n }\n return {\n focusClasses,\n isFocused,\n focus,\n blur\n };\n}\n//# sourceMappingURL=focus.mjs.map","// Composables\nimport { useProxiedModel } from \"./proxiedModel.mjs\"; // Utilities\nimport { computed, inject, markRaw, provide, ref, shallowRef, toRef, watch } from 'vue';\nimport { consoleWarn, propsFactory } from \"../util/index.mjs\"; // Types\nexport const FormKey = Symbol.for('vuetify:form');\nexport const makeFormProps = propsFactory({\n disabled: Boolean,\n fastFail: Boolean,\n readonly: Boolean,\n modelValue: {\n type: Boolean,\n default: null\n },\n validateOn: {\n type: String,\n default: 'input'\n }\n}, 'form');\nexport function createForm(props) {\n const model = useProxiedModel(props, 'modelValue');\n const isDisabled = computed(() => props.disabled);\n const isReadonly = computed(() => props.readonly);\n const isValidating = shallowRef(false);\n const items = ref([]);\n const errors = ref([]);\n async function validate() {\n const results = [];\n let valid = true;\n errors.value = [];\n isValidating.value = true;\n for (const item of items.value) {\n const itemErrorMessages = await item.validate();\n if (itemErrorMessages.length > 0) {\n valid = false;\n results.push({\n id: item.id,\n errorMessages: itemErrorMessages\n });\n }\n if (!valid && props.fastFail) break;\n }\n errors.value = results;\n isValidating.value = false;\n return {\n valid,\n errors: errors.value\n };\n }\n function reset() {\n items.value.forEach(item => item.reset());\n }\n function resetValidation() {\n items.value.forEach(item => item.resetValidation());\n }\n watch(items, () => {\n let valid = 0;\n let invalid = 0;\n const results = [];\n for (const item of items.value) {\n if (item.isValid === false) {\n invalid++;\n results.push({\n id: item.id,\n errorMessages: item.errorMessages\n });\n } else if (item.isValid === true) valid++;\n }\n errors.value = results;\n model.value = invalid > 0 ? false : valid === items.value.length ? true : null;\n }, {\n deep: true,\n flush: 'post'\n });\n provide(FormKey, {\n register: _ref => {\n let {\n id,\n vm,\n validate,\n reset,\n resetValidation\n } = _ref;\n if (items.value.some(item => item.id === id)) {\n consoleWarn(`Duplicate input name \"${id}\"`);\n }\n items.value.push({\n id,\n validate,\n reset,\n resetValidation,\n vm: markRaw(vm),\n isValid: null,\n errorMessages: []\n });\n },\n unregister: id => {\n items.value = items.value.filter(item => {\n return item.id !== id;\n });\n },\n update: (id, isValid, errorMessages) => {\n const found = items.value.find(item => item.id === id);\n if (!found) return;\n found.isValid = isValid;\n found.errorMessages = errorMessages;\n },\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validateOn: toRef(props, 'validateOn')\n });\n return {\n errors,\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validate,\n reset,\n resetValidation\n };\n}\nexport function useForm() {\n return inject(FormKey, null);\n}\n//# sourceMappingURL=form.mjs.map","// Composables\nimport { makeFocusProps } from \"./focus.mjs\";\nimport { useForm } from \"./form.mjs\";\nimport { useProxiedModel } from \"./proxiedModel.mjs\";\nimport { useToggleScope } from \"./toggleScope.mjs\"; // Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, shallowRef, unref, watch } from 'vue';\nimport { getCurrentInstance, getCurrentInstanceName, getUid, propsFactory, wrapInArray } from \"../util/index.mjs\"; // Types\nexport const makeValidationProps = propsFactory({\n disabled: {\n type: Boolean,\n default: null\n },\n error: Boolean,\n errorMessages: {\n type: [Array, String],\n default: () => []\n },\n maxErrors: {\n type: [Number, String],\n default: 1\n },\n name: String,\n label: String,\n readonly: {\n type: Boolean,\n default: null\n },\n rules: {\n type: Array,\n default: () => []\n },\n modelValue: null,\n validateOn: String,\n validationValue: null,\n ...makeFocusProps()\n}, 'validation');\nexport function useValidation(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getUid();\n const model = useProxiedModel(props, 'modelValue');\n const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);\n const form = useForm();\n const internalErrorMessages = ref([]);\n const isPristine = shallowRef(true);\n const isDirty = computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));\n const isDisabled = computed(() => !!(props.disabled ?? form?.isDisabled.value));\n const isReadonly = computed(() => !!(props.readonly ?? form?.isReadonly.value));\n const errorMessages = computed(() => {\n return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;\n });\n const validateOn = computed(() => {\n let value = (props.validateOn ?? form?.validateOn.value) || 'input';\n if (value === 'lazy') value = 'input lazy';\n if (value === 'eager') value = 'input eager';\n const set = new Set(value?.split(' ') ?? []);\n return {\n input: set.has('input'),\n blur: set.has('blur') || set.has('input') || set.has('invalid-input'),\n invalidInput: set.has('invalid-input'),\n lazy: set.has('lazy'),\n eager: set.has('eager')\n };\n });\n const isValid = computed(() => {\n if (props.error || props.errorMessages?.length) return false;\n if (!props.rules.length) return true;\n if (isPristine.value) {\n return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;\n } else {\n return !internalErrorMessages.value.length;\n }\n });\n const isValidating = shallowRef(false);\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: isValid.value === false,\n [`${name}--dirty`]: isDirty.value,\n [`${name}--disabled`]: isDisabled.value,\n [`${name}--readonly`]: isReadonly.value\n };\n });\n const vm = getCurrentInstance('validation');\n const uid = computed(() => props.name ?? unref(id));\n onBeforeMount(() => {\n form?.register({\n id: uid.value,\n vm,\n validate,\n reset,\n resetValidation\n });\n });\n onBeforeUnmount(() => {\n form?.unregister(uid.value);\n });\n onMounted(async () => {\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager);\n }\n form?.update(uid.value, isValid.value, errorMessages.value);\n });\n useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n validate();\n } else if (props.focused) {\n const unwatch = watch(() => props.focused, val => {\n if (!val) validate();\n unwatch();\n });\n }\n });\n });\n useToggleScope(() => validateOn.value.blur, () => {\n watch(() => props.focused, val => {\n if (!val) validate();\n });\n });\n watch([isValid, errorMessages], () => {\n form?.update(uid.value, isValid.value, errorMessages.value);\n });\n async function reset() {\n model.value = null;\n await nextTick();\n await resetValidation();\n }\n async function resetValidation() {\n isPristine.value = true;\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager);\n } else {\n internalErrorMessages.value = [];\n }\n }\n async function validate() {\n let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n const results = [];\n isValidating.value = true;\n for (const rule of props.rules) {\n if (results.length >= +(props.maxErrors ?? 1)) {\n break;\n }\n const handler = typeof rule === 'function' ? rule : () => rule;\n const result = await handler(validationModel.value);\n if (result === true) continue;\n if (result !== false && typeof result !== 'string') {\n // eslint-disable-next-line no-console\n console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`);\n continue;\n }\n results.push(result || '');\n }\n internalErrorMessages.value = results;\n isValidating.value = false;\n isPristine.value = silent;\n return internalErrorMessages.value;\n }\n return {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses\n };\n}\n//# sourceMappingURL=validation.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VInput.css\";\n\n// Components\nimport { useInputIcon } from \"./InputIcon.mjs\";\nimport { VMessages } from \"../VMessages/VMessages.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeValidationProps, useValidation } from \"../../composables/validation.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { EventProp, genericComponent, getUid, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVInputProps = propsFactory({\n id: String,\n appendIcon: IconValue,\n centerAffix: {\n type: Boolean,\n default: true\n },\n prependIcon: IconValue,\n hideDetails: [Boolean, String],\n hideSpinButtons: Boolean,\n hint: String,\n persistentHint: Boolean,\n messages: {\n type: [Array, String],\n default: () => []\n },\n direction: {\n type: String,\n default: 'horizontal',\n validator: v => ['horizontal', 'vertical'].includes(v)\n },\n 'onClick:prepend': EventProp(),\n 'onClick:append': EventProp(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...only(makeDimensionProps(), ['maxWidth', 'minWidth', 'width']),\n ...makeThemeProps(),\n ...makeValidationProps()\n}, 'VInput');\nexport const VInput = genericComponent()({\n name: 'VInput',\n props: {\n ...makeVInputProps()\n },\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots,\n emit\n } = _ref;\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n themeClasses\n } = provideTheme(props);\n const {\n rtlClasses\n } = useRtl();\n const {\n InputIcon\n } = useInputIcon(props);\n const uid = getUid();\n const id = computed(() => props.id || `input-${uid}`);\n const messagesId = computed(() => `${id.value}-messages`);\n const {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses\n } = useValidation(props, 'v-input', id);\n const slotProps = computed(() => ({\n id,\n messagesId,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate\n }));\n const messages = computed(() => {\n if (props.errorMessages?.length || !isPristine.value && errorMessages.value.length) {\n return errorMessages.value;\n } else if (props.hint && (props.persistentHint || props.focused)) {\n return props.hint;\n } else {\n return props.messages;\n }\n });\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.prependIcon);\n const hasAppend = !!(slots.append || props.appendIcon);\n const hasMessages = messages.value.length > 0;\n const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);\n return _createVNode(\"div\", {\n \"class\": ['v-input', `v-input--${props.direction}`, {\n 'v-input--center-affix': props.centerAffix,\n 'v-input--hide-spin-buttons': props.hideSpinButtons\n }, densityClasses.value, themeClasses.value, rtlClasses.value, validationClasses.value, props.class],\n \"style\": [dimensionStyles.value, props.style]\n }, [hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-input__prepend\"\n }, [slots.prepend?.(slotProps.value), props.prependIcon && _createVNode(InputIcon, {\n \"key\": \"prepend-icon\",\n \"name\": \"prepend\"\n }, null)]), slots.default && _createVNode(\"div\", {\n \"class\": \"v-input__control\"\n }, [slots.default?.(slotProps.value)]), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-input__append\"\n }, [props.appendIcon && _createVNode(InputIcon, {\n \"key\": \"append-icon\",\n \"name\": \"append\"\n }, null), slots.append?.(slotProps.value)]), hasDetails && _createVNode(\"div\", {\n \"class\": \"v-input__details\"\n }, [_createVNode(VMessages, {\n \"id\": messagesId.value,\n \"active\": hasMessages,\n \"messages\": messages.value\n }, {\n message: slots.message\n }), slots.details?.(slotProps.value)])]);\n });\n return {\n reset,\n resetValidation,\n validate,\n isValid,\n errorMessages\n };\n }\n});\n//# sourceMappingURL=VInput.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VCheckbox.css\";\n\n// Components\nimport { makeVCheckboxBtnProps, VCheckboxBtn } from \"./VCheckboxBtn.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCheckboxProps = propsFactory({\n ...makeVInputProps(),\n ...omit(makeVCheckboxBtnProps(), ['inline'])\n}, 'VCheckbox');\nexport const VCheckbox = genericComponent()({\n name: 'VCheckbox',\n inheritAttrs: false,\n props: makeVCheckboxProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:focused': focused => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const uid = getUid();\n const id = computed(() => props.id || `checkbox-${uid}`);\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const checkboxProps = VCheckboxBtn.filterProps(props);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-checkbox', props.class]\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": id.value,\n \"focused\": isFocused.value,\n \"style\": props.style\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid\n } = _ref2;\n return _createVNode(VCheckboxBtn, _mergeProps(checkboxProps, {\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value\n }, controlAttrs, {\n \"error\": isValid.value === false,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"onFocus\": focus,\n \"onBlur\": blur\n }), slots);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VCheckbox.mjs.map","// Utilities\nimport { computed, inject } from 'vue';\nimport { useRtl } from \"./locale.mjs\";\nimport { clamp, consoleWarn, mergeDeep, refElement } from \"../util/index.mjs\"; // Types\nexport const GoToSymbol = Symbol.for('vuetify:goto');\nfunction genDefaults() {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic',\n patterns: {\n linear: t => t,\n easeInQuad: t => t ** 2,\n easeOutQuad: t => t * (2 - t),\n easeInOutQuad: t => t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t,\n easeInCubic: t => t ** 3,\n easeOutCubic: t => --t ** 3 + 1,\n easeInOutCubic: t => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n easeInQuart: t => t ** 4,\n easeOutQuart: t => 1 - --t ** 4,\n easeInOutQuart: t => t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4,\n easeInQuint: t => t ** 5,\n easeOutQuint: t => 1 + --t ** 5,\n easeInOutQuint: t => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5\n }\n };\n}\nfunction getContainer(el) {\n return getTarget(el) ?? (document.scrollingElement || document.body);\n}\nfunction getTarget(el) {\n return typeof el === 'string' ? document.querySelector(el) : refElement(el);\n}\nfunction getOffset(target, horizontal, rtl) {\n if (typeof target === 'number') return horizontal && rtl ? -target : target;\n let el = getTarget(target);\n let totalOffset = 0;\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop;\n el = el.offsetParent;\n }\n return totalOffset;\n}\nexport function createGoTo(options, locale) {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options)\n };\n}\nexport async function scrollTo(_target, _options, horizontal, goTo) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop';\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options);\n const rtl = goTo?.rtl.value;\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0;\n const container = options.container === 'parent' && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);\n const ease = typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`);\n let targetLocation;\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl);\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl);\n if (options.layout) {\n const styles = window.getComputedStyle(target);\n const layoutOffset = styles.getPropertyValue('--v-layout-top');\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10);\n }\n }\n targetLocation += options.offset;\n targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal);\n const startLocation = container[property] ?? 0;\n if (targetLocation === startLocation) return Promise.resolve(targetLocation);\n const startTime = performance.now();\n return new Promise(resolve => requestAnimationFrame(function step(currentTime) {\n const timeElapsed = currentTime - startTime;\n const progress = timeElapsed / options.duration;\n const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(clamp(progress, 0, 1)));\n container[property] = location;\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation);\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable');\n return resolve(container[property]);\n }\n requestAnimationFrame(step);\n }));\n}\nexport function useGoTo() {\n let _options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const goToInstance = inject(GoToSymbol);\n const {\n isRtl\n } = useRtl();\n if (!goToInstance) throw new Error('[Vuetify] Could not find injected goto instance');\n const goTo = {\n ...goToInstance,\n // can be set via VLocaleProvider\n rtl: computed(() => goToInstance.rtl.value || isRtl.value)\n };\n async function go(target, options) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo);\n }\n go.horizontal = async (target, options) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo);\n };\n return go;\n}\n\n/**\n * Clamp target value to achieve a smooth scroll animation\n * when the value goes outside the scroll container size\n */\nfunction clampTarget(container, value, rtl, horizontal) {\n const {\n scrollWidth,\n scrollHeight\n } = container;\n const [containerWidth, containerHeight] = container === document.scrollingElement ? [window.innerWidth, window.innerHeight] : [container.offsetWidth, container.offsetHeight];\n let min;\n let max;\n if (horizontal) {\n if (rtl) {\n min = -(scrollWidth - containerWidth);\n max = 0;\n } else {\n min = 0;\n max = scrollWidth - containerWidth;\n }\n } else {\n min = 0;\n max = scrollHeight + -containerHeight;\n }\n return Math.max(Math.min(value, max), min);\n}\n//# sourceMappingURL=goto.mjs.map","export function calculateUpdatedTarget(_ref) {\n let {\n selectedElement,\n containerElement,\n isRtl,\n isHorizontal\n } = _ref;\n const containerSize = getOffsetSize(isHorizontal, containerElement);\n const scrollPosition = getScrollPosition(isHorizontal, isRtl, containerElement);\n const childrenSize = getOffsetSize(isHorizontal, selectedElement);\n const childrenStartPosition = getOffsetPosition(isHorizontal, selectedElement);\n const additionalOffset = childrenSize * 0.4;\n if (scrollPosition > childrenStartPosition) {\n return childrenStartPosition - additionalOffset;\n } else if (scrollPosition + containerSize < childrenStartPosition + childrenSize) {\n return childrenStartPosition - containerSize + childrenSize + additionalOffset;\n }\n return scrollPosition;\n}\nexport function calculateCenteredTarget(_ref2) {\n let {\n selectedElement,\n containerElement,\n isHorizontal\n } = _ref2;\n const containerOffsetSize = getOffsetSize(isHorizontal, containerElement);\n const childrenOffsetPosition = getOffsetPosition(isHorizontal, selectedElement);\n const childrenOffsetSize = getOffsetSize(isHorizontal, selectedElement);\n return childrenOffsetPosition - containerOffsetSize / 2 + childrenOffsetSize / 2;\n}\nexport function getScrollSize(isHorizontal, element) {\n const key = isHorizontal ? 'scrollWidth' : 'scrollHeight';\n return element?.[key] || 0;\n}\nexport function getClientSize(isHorizontal, element) {\n const key = isHorizontal ? 'clientWidth' : 'clientHeight';\n return element?.[key] || 0;\n}\nexport function getScrollPosition(isHorizontal, rtl, element) {\n if (!element) {\n return 0;\n }\n const {\n scrollLeft,\n offsetWidth,\n scrollWidth\n } = element;\n if (isHorizontal) {\n return rtl ? scrollWidth - offsetWidth + scrollLeft : scrollLeft;\n }\n return element.scrollTop;\n}\nexport function getOffsetSize(isHorizontal, element) {\n const key = isHorizontal ? 'offsetWidth' : 'offsetHeight';\n return element?.[key] || 0;\n}\nexport function getOffsetPosition(isHorizontal, element) {\n const key = isHorizontal ? 'offsetLeft' : 'offsetTop';\n return element?.[key] || 0;\n}\n//# sourceMappingURL=helpers.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSlideGroup.css\";\n\n// Components\nimport { VFadeTransition } from \"../transitions/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { useGoTo } from \"../../composables/goto.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, shallowRef, watch } from 'vue';\nimport { calculateCenteredTarget, calculateUpdatedTarget, getClientSize, getOffsetSize, getScrollPosition, getScrollSize } from \"./helpers.mjs\";\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n direction: {\n type: String,\n default: 'horizontal'\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)\n },\n ...makeComponentProps(),\n ...makeDisplayProps({\n mobile: null\n }),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active'\n })\n}, 'VSlideGroup');\nexport const VSlideGroup = genericComponent()({\n name: 'VSlideGroup',\n props: makeVSlideGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n isRtl\n } = useRtl();\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const group = useGroup(props, props.symbol);\n const isOverflowing = shallowRef(false);\n const scrollOffset = shallowRef(0);\n const containerSize = shallowRef(0);\n const contentSize = shallowRef(0);\n const isHorizontal = computed(() => props.direction === 'horizontal');\n const {\n resizeRef: containerRef,\n contentRect: containerRect\n } = useResizeObserver();\n const {\n resizeRef: contentRef,\n contentRect\n } = useResizeObserver();\n const goTo = useGoTo();\n const goToOptions = computed(() => {\n return {\n container: containerRef.el,\n duration: 200,\n easing: 'easeOutQuart'\n };\n });\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1;\n return group.items.value.findIndex(item => item.id === group.selected.value[0]);\n });\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1;\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1]);\n });\n if (IN_BROWSER) {\n let frame = -1;\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height';\n containerSize.value = containerRect.value[sizeProperty];\n contentSize.value = contentRect.value[sizeProperty];\n isOverflowing.value = containerSize.value + 1 < contentSize.value;\n }\n if (firstSelectedIndex.value >= 0 && contentRef.el) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.el.children[lastSelectedIndex.value];\n scrollToChildren(selectedElement, props.centerActive);\n }\n });\n });\n }\n const isFocused = shallowRef(false);\n function scrollToChildren(children, center) {\n let target = 0;\n if (center) {\n target = calculateCenteredTarget({\n containerElement: containerRef.el,\n isHorizontal: isHorizontal.value,\n selectedElement: children\n });\n } else {\n target = calculateUpdatedTarget({\n containerElement: containerRef.el,\n isHorizontal: isHorizontal.value,\n isRtl: isRtl.value,\n selectedElement: children\n });\n }\n scrollToPosition(target);\n }\n function scrollToPosition(newPosition) {\n if (!IN_BROWSER || !containerRef.el) return;\n const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el);\n const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el);\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);\n if (scrollSize <= offsetSize ||\n // Prevent scrolling by only a couple of pixels, which doesn't look smooth\n Math.abs(newPosition - scrollPosition) < 16) return;\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const {\n scrollWidth,\n offsetWidth: containerWidth\n } = containerRef.el;\n newPosition = scrollWidth - containerWidth - newPosition;\n }\n if (isHorizontal.value) {\n goTo.horizontal(newPosition, goToOptions.value);\n } else {\n goTo(newPosition, goToOptions.value);\n }\n }\n function onScroll(e) {\n const {\n scrollTop,\n scrollLeft\n } = e.target;\n scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop;\n }\n function onFocusin(e) {\n isFocused.value = true;\n if (!isOverflowing.value || !contentRef.el) return;\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.el.children) {\n if (item === el) {\n scrollToChildren(item);\n return;\n }\n }\n }\n }\n function onFocusout(e) {\n isFocused.value = false;\n }\n\n // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren\n let ignoreFocusEvent = false;\n function onFocus(e) {\n if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget))) focus();\n ignoreFocusEvent = false;\n }\n function onFocusAffixes() {\n ignoreFocusEvent = true;\n }\n function onKeydown(e) {\n if (!contentRef.el) return;\n function toFocus(location) {\n e.preventDefault();\n focus(location);\n }\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n toFocus(isRtl.value ? 'prev' : 'next');\n } else if (e.key === 'ArrowLeft') {\n toFocus(isRtl.value ? 'next' : 'prev');\n }\n } else {\n if (e.key === 'ArrowDown') {\n toFocus('next');\n } else if (e.key === 'ArrowUp') {\n toFocus('prev');\n }\n }\n if (e.key === 'Home') {\n toFocus('first');\n } else if (e.key === 'End') {\n toFocus('last');\n }\n }\n function focus(location) {\n if (!contentRef.el) return;\n let el;\n if (!location) {\n const focusable = focusableChildren(contentRef.el);\n el = focusable[0];\n } else if (location === 'next') {\n el = contentRef.el.querySelector(':focus')?.nextElementSibling;\n if (!el) return focus('first');\n } else if (location === 'prev') {\n el = contentRef.el.querySelector(':focus')?.previousElementSibling;\n if (!el) return focus('last');\n } else if (location === 'first') {\n el = contentRef.el.firstElementChild;\n } else if (location === 'last') {\n el = contentRef.el.lastElementChild;\n }\n if (el) {\n el.focus({\n preventScroll: true\n });\n }\n }\n function scrollTo(location) {\n const direction = isHorizontal.value && isRtl.value ? -1 : 1;\n const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value;\n let newPosition = scrollOffset.value + offsetStep;\n\n // TODO: improve it\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const {\n scrollWidth,\n offsetWidth: containerWidth\n } = containerRef.el;\n newPosition += scrollWidth - containerWidth;\n }\n scrollToPosition(newPosition);\n }\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected\n }));\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always':\n return true;\n\n // Always show arrows on desktop\n case 'desktop':\n return !mobile.value;\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true:\n return isOverflowing.value || Math.abs(scrollOffset.value) > 0;\n\n // Always show on mobile\n case 'mobile':\n return mobile.value || isOverflowing.value || Math.abs(scrollOffset.value) > 0;\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default:\n return !mobile.value && (isOverflowing.value || Math.abs(scrollOffset.value) > 0);\n }\n });\n const hasPrev = computed(() => {\n // 1 pixel in reserve, may be lost after rounding\n return Math.abs(scrollOffset.value) > 1;\n });\n const hasNext = computed(() => {\n if (!containerRef.value) return false;\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);\n const clientSize = getClientSize(isHorizontal.value, containerRef.el);\n const scrollSizeMax = scrollSize - clientSize;\n\n // 1 pixel in reserve, may be lost after rounding\n return scrollSizeMax - Math.abs(scrollOffset.value) > 1;\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-slide-group', {\n 'v-slide-group--vertical': !isHorizontal.value,\n 'v-slide-group--has-affixes': hasAffixes.value,\n 'v-slide-group--is-overflowing': isOverflowing.value\n }, displayClasses.value, props.class],\n \"style\": props.style,\n \"tabindex\": isFocused.value || group.selected.value.length ? -1 : 0,\n \"onFocus\": onFocus\n }, {\n default: () => [hasAffixes.value && _createVNode(\"div\", {\n \"key\": \"prev\",\n \"class\": ['v-slide-group__prev', {\n 'v-slide-group__prev--disabled': !hasPrev.value\n }],\n \"onMousedown\": onFocusAffixes,\n \"onClick\": () => hasPrev.value && scrollTo('prev')\n }, [slots.prev?.(slotProps.value) ?? _createVNode(VFadeTransition, null, {\n default: () => [_createVNode(VIcon, {\n \"icon\": isRtl.value ? props.nextIcon : props.prevIcon\n }, null)]\n })]), _createVNode(\"div\", {\n \"key\": \"container\",\n \"ref\": containerRef,\n \"class\": \"v-slide-group__container\",\n \"onScroll\": onScroll\n }, [_createVNode(\"div\", {\n \"ref\": contentRef,\n \"class\": \"v-slide-group__content\",\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"onKeydown\": onKeydown\n }, [slots.default?.(slotProps.value)])]), hasAffixes.value && _createVNode(\"div\", {\n \"key\": \"next\",\n \"class\": ['v-slide-group__next', {\n 'v-slide-group__next--disabled': !hasNext.value\n }],\n \"onMousedown\": onFocusAffixes,\n \"onClick\": () => hasNext.value && scrollTo('next')\n }, [slots.next?.(slotProps.value) ?? _createVNode(VFadeTransition, null, {\n default: () => [_createVNode(VIcon, {\n \"icon\": isRtl.value ? props.prevIcon : props.nextIcon\n }, null)]\n })])]\n }));\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n hasPrev,\n hasNext\n };\n }\n});\n//# sourceMappingURL=VSlideGroup.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VChipGroup.css\";\n\n// Components\nimport { makeVSlideGroupProps, VSlideGroup } from \"../VSlideGroup/VSlideGroup.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeVariantProps } from \"../../composables/variant.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { deepEqual, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VChipGroupSymbol = Symbol.for('vuetify:v-chip-group');\nexport const makeVChipGroupProps = propsFactory({\n column: Boolean,\n filter: Boolean,\n valueComparator: {\n type: Function,\n default: deepEqual\n },\n ...makeVSlideGroupProps(),\n ...makeComponentProps(),\n ...makeGroupProps({\n selectedClass: 'v-chip--selected'\n }),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'tonal'\n })\n}, 'VChipGroup');\nexport const VChipGroup = genericComponent()({\n name: 'VChipGroup',\n props: makeVChipGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n isSelected,\n select,\n next,\n prev,\n selected\n } = useGroup(props, VChipGroupSymbol);\n provideDefaults({\n VChip: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n filter: toRef(props, 'filter'),\n variant: toRef(props, 'variant')\n }\n });\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props);\n return _createVNode(VSlideGroup, _mergeProps(slideGroupProps, {\n \"class\": ['v-chip-group', {\n 'v-chip-group--column': props.column\n }, themeClasses.value, props.class],\n \"style\": props.style\n }), {\n default: () => [slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value\n })]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VChipGroup.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, withDirectives as _withDirectives, vShow as _vShow, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n/* eslint-disable complexity */\n// Styles\nimport \"./VChip.css\";\n\n// Components\nimport { VExpandXTransition } from \"../transitions/index.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VChipGroupSymbol } from \"../VChipGroup/VChipGroup.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeSizeProps, useSize } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { EventProp, genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVChipProps = propsFactory({\n activeClass: String,\n appendAvatar: String,\n appendIcon: IconValue,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$delete'\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close'\n },\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete'\n },\n label: Boolean,\n link: {\n type: Boolean,\n default: undefined\n },\n pill: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n text: String,\n modelValue: {\n type: Boolean,\n default: true\n },\n onClick: EventProp(),\n onClickOnce: EventProp(),\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'span'\n }),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'tonal'\n })\n}, 'VChip');\nexport const VChip = genericComponent()({\n name: 'VChip',\n directives: {\n Ripple\n },\n props: makeVChipProps(),\n emits: {\n 'click:close': e => true,\n 'update:modelValue': value => true,\n 'group:selected': val => true,\n click: e => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n borderClasses\n } = useBorder(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n sizeClasses\n } = useSize(props);\n const {\n themeClasses\n } = provideTheme(props);\n const isActive = useProxiedModel(props, 'modelValue');\n const group = useGroupItem(props, VChipGroupSymbol, false);\n const link = useLink(props, attrs);\n const isLink = computed(() => props.link !== false && link.isLink.value);\n const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n isActive.value = false;\n emit('click:close', e);\n }\n }));\n function onClick(e) {\n emit('click', e);\n if (!isClickable.value) return;\n link.navigate?.(e);\n group?.toggle();\n }\n function onKeyDown(e) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick(e);\n }\n }\n return () => {\n const Tag = link.isLink.value ? 'a' : props.tag;\n const hasAppendMedia = !!(props.appendIcon || props.appendAvatar);\n const hasAppend = !!(hasAppendMedia || slots.append);\n const hasClose = !!(slots.close || props.closable);\n const hasFilter = !!(slots.filter || props.filter) && group;\n const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n const hasColor = !group || group.isSelected.value;\n return isActive.value && _withDirectives(_createVNode(Tag, _mergeProps({\n \"class\": ['v-chip', {\n 'v-chip--disabled': props.disabled,\n 'v-chip--label': props.label,\n 'v-chip--link': isClickable.value,\n 'v-chip--filter': hasFilter,\n 'v-chip--pill': props.pill\n }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],\n \"style\": [hasColor ? colorStyles.value : undefined, props.style],\n \"disabled\": props.disabled || undefined,\n \"draggable\": props.draggable,\n \"tabindex\": isClickable.value ? 0 : undefined,\n \"onClick\": onClick,\n \"onKeydown\": isClickable.value && !isLink.value && onKeyDown\n }, link.linkProps), {\n default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && _createVNode(VExpandXTransition, {\n \"key\": \"filter\"\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": \"v-chip__filter\"\n }, [!slots.filter ? _createVNode(VIcon, {\n \"key\": \"filter-icon\",\n \"icon\": props.filterIcon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"filter-defaults\",\n \"disabled\": !props.filterIcon,\n \"defaults\": {\n VIcon: {\n icon: props.filterIcon\n }\n }\n }, slots.filter)]), [[_vShow, group.isSelected.value]])]\n }), hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-chip__prepend\"\n }, [!slots.prepend ? _createVNode(_Fragment, null, [props.prependIcon && _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"icon\": props.prependIcon,\n \"start\": true\n }, null), props.prependAvatar && _createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"image\": props.prependAvatar,\n \"start\": true\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n image: props.prependAvatar,\n start: true\n },\n VIcon: {\n icon: props.prependIcon,\n start: true\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-chip__content\",\n \"data-no-activator\": \"\"\n }, [slots.default?.({\n isSelected: group?.isSelected.value,\n selectedClass: group?.selectedClass.value,\n select: group?.select,\n toggle: group?.toggle,\n value: group?.value.value,\n disabled: props.disabled\n }) ?? props.text]), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-chip__append\"\n }, [!slots.append ? _createVNode(_Fragment, null, [props.appendIcon && _createVNode(VIcon, {\n \"key\": \"append-icon\",\n \"end\": true,\n \"icon\": props.appendIcon\n }, null), props.appendAvatar && _createVNode(VAvatar, {\n \"key\": \"append-avatar\",\n \"end\": true,\n \"image\": props.appendAvatar\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !hasAppendMedia,\n \"defaults\": {\n VAvatar: {\n end: true,\n image: props.appendAvatar\n },\n VIcon: {\n end: true,\n icon: props.appendIcon\n }\n }\n }, slots.append)]), hasClose && _createVNode(\"button\", _mergeProps({\n \"key\": \"close\",\n \"class\": \"v-chip__close\",\n \"type\": \"button\"\n }, closeProps.value), [!slots.close ? _createVNode(VIcon, {\n \"key\": \"close-icon\",\n \"icon\": props.closeIcon,\n \"size\": \"x-small\"\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"close-defaults\",\n \"defaults\": {\n VIcon: {\n icon: props.closeIcon,\n size: 'x-small'\n }\n }\n }, slots.close)])]\n }), [[_resolveDirective(\"ripple\"), isClickable.value && props.ripple, null]]);\n };\n }\n});\n//# sourceMappingURL=VChip.mjs.map","// Types\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport(point, offset) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y\n };\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement(point, offset) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y\n };\n}\n\n/** Get the difference between two points */\nexport function getOffset(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y\n };\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint(anchor, box) {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const {\n side,\n align\n } = anchor;\n const x = align === 'left' ? 0 : align === 'center' ? box.width / 2 : align === 'right' ? box.width : align;\n const y = side === 'top' ? 0 : side === 'bottom' ? box.height : side;\n return elementToViewport({\n x,\n y\n }, box);\n } else if (anchor.side === 'left' || anchor.side === 'right') {\n const {\n side,\n align\n } = anchor;\n const x = side === 'left' ? 0 : side === 'right' ? box.width : side;\n const y = align === 'top' ? 0 : align === 'center' ? box.height / 2 : align === 'bottom' ? box.height : align;\n return elementToViewport({\n x,\n y\n }, box);\n }\n return elementToViewport({\n x: box.width / 2,\n y: box.height / 2\n }, box);\n}\n//# sourceMappingURL=point.mjs.map","// Composables\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\"; // Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue';\nimport { anchorToPoint, getOffset } from \"./util/point.mjs\";\nimport { clamp, consoleError, convertToUnit, destructComputed, flipAlign, flipCorner, flipSide, getAxis, getScrollParents, IN_BROWSER, isFixedPosition, nullifyTransforms, parseAnchor, propsFactory } from \"../../util/index.mjs\";\nimport { Box, getOverflow, getTargetBox } from \"../../util/box.mjs\"; // Types\nconst locationStrategies = {\n static: staticLocationStrategy,\n // specific viewport position, usually centered\n connected: connectedLocationStrategy // connected to a certain element\n};\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function],\n default: 'static',\n validator: val => typeof val === 'function' || val in locationStrategies\n },\n location: {\n type: String,\n default: 'bottom'\n },\n origin: {\n type: String,\n default: 'auto'\n },\n offset: [Number, String, Array]\n}, 'VOverlay-location-strategies');\nexport function useLocationStrategies(props, data) {\n const contentStyles = ref({});\n const updateLocation = ref();\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset);\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize);\n updateLocation.value = undefined;\n });\n window.addEventListener('resize', onResize, {\n passive: true\n });\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation;\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation;\n }\n });\n }\n function onResize(e) {\n updateLocation.value?.(e);\n }\n return {\n contentStyles,\n updateLocation\n };\n}\nfunction staticLocationStrategy() {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize(el, isRtl) {\n // const scrollables = new Map()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el);\n if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0);\n } else {\n contentBox.x -= parseFloat(el.style.left || 0);\n }\n contentBox.y -= parseFloat(el.style.top || 0);\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox;\n}\nfunction connectedLocationStrategy(data, props, contentStyles) {\n const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.value);\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0\n });\n }\n const {\n preferredAnchor,\n preferredOrigin\n } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value);\n const parsedOrigin = props.origin === 'overlap' ? parsedAnchor : props.origin === 'auto' ? flipSide(parsedAnchor) : parseAnchor(props.origin, data.isRtl.value);\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin)\n };\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin\n };\n }\n });\n const [minWidth, minHeight, maxWidth, maxHeight] = ['minWidth', 'minHeight', 'maxWidth', 'maxHeight'].map(key => {\n return computed(() => {\n const val = parseFloat(props[key]);\n return isNaN(val) ? Infinity : val;\n });\n });\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset;\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat);\n if (offset.length < 2) offset.push(0);\n return offset;\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];\n });\n let observe = false;\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation();\n });\n watch([data.target, data.contentEl], (_ref, _ref2) => {\n let [newTarget, newContentEl] = _ref;\n let [oldTarget, oldContentEl] = _ref2;\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget);\n if (newTarget && !Array.isArray(newTarget)) observer.observe(newTarget);\n if (oldContentEl) observer.unobserve(oldContentEl);\n if (newContentEl) observer.observe(newContentEl);\n }, {\n immediate: true\n });\n onScopeDispose(() => {\n observer.disconnect();\n });\n\n // eslint-disable-next-line max-statements\n function updateLocation() {\n observe = false;\n requestAnimationFrame(() => observe = true);\n if (!data.target.value || !data.contentEl.value) return;\n const targetBox = getTargetBox(data.target.value);\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);\n const scrollParents = getScrollParents(data.contentEl.value);\n const viewportMargin = 12;\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement);\n if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {\n contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0);\n contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0);\n }\n }\n const viewport = scrollParents.reduce((box, el) => {\n const rect = el.getBoundingClientRect();\n const scrollBox = new Box({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight\n });\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top)\n });\n }\n return scrollBox;\n }, undefined);\n viewport.x += viewportMargin;\n viewport.y += viewportMargin;\n viewport.width -= viewportMargin * 2;\n viewport.height -= viewportMargin * 2;\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value\n };\n function checkOverflow(_placement) {\n const box = new Box(contentBox);\n const targetPoint = anchorToPoint(_placement.anchor, targetBox);\n const contentPoint = anchorToPoint(_placement.origin, box);\n let {\n x,\n y\n } = getOffset(targetPoint, contentPoint);\n switch (_placement.anchor.side) {\n case 'top':\n y -= offset.value[0];\n break;\n case 'bottom':\n y += offset.value[0];\n break;\n case 'left':\n x -= offset.value[0];\n break;\n case 'right':\n x += offset.value[0];\n break;\n }\n switch (_placement.anchor.align) {\n case 'top':\n y -= offset.value[1];\n break;\n case 'bottom':\n y += offset.value[1];\n break;\n case 'left':\n x -= offset.value[1];\n break;\n case 'right':\n x += offset.value[1];\n break;\n }\n box.x += x;\n box.y += y;\n box.width = Math.min(box.width, maxWidth.value);\n box.height = Math.min(box.height, maxHeight.value);\n const overflows = getOverflow(box, viewport);\n return {\n overflows,\n x,\n y\n };\n }\n let x = 0;\n let y = 0;\n const available = {\n x: 0,\n y: 0\n };\n const flipped = {\n x: false,\n y: false\n };\n let resets = -1;\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy');\n break;\n }\n const {\n x: _x,\n y: _y,\n overflows\n } = checkOverflow(placement);\n x += _x;\n y += _y;\n contentBox.x += _x;\n contentBox.y += _y;\n\n // flip\n {\n const axis = getAxis(placement.anchor);\n const hasOverflowX = overflows.x.before || overflows.x.after;\n const hasOverflowY = overflows.y.before || overflows.y.after;\n let reset = false;\n ['x', 'y'].forEach(key => {\n if (key === 'x' && hasOverflowX && !flipped.x || key === 'y' && hasOverflowY && !flipped.y) {\n const newPlacement = {\n anchor: {\n ...placement.anchor\n },\n origin: {\n ...placement.origin\n }\n };\n const flip = key === 'x' ? axis === 'y' ? flipAlign : flipSide : axis === 'y' ? flipSide : flipAlign;\n newPlacement.anchor = flip(newPlacement.anchor);\n newPlacement.origin = flip(newPlacement.origin);\n const {\n overflows: newOverflows\n } = checkOverflow(newPlacement);\n if (newOverflows[key].before <= overflows[key].before && newOverflows[key].after <= overflows[key].after || newOverflows[key].before + newOverflows[key].after < (overflows[key].before + overflows[key].after) / 2) {\n placement = newPlacement;\n reset = flipped[key] = true;\n }\n }\n });\n if (reset) continue;\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before;\n contentBox.x += overflows.x.before;\n }\n if (overflows.x.after) {\n x -= overflows.x.after;\n contentBox.x -= overflows.x.after;\n }\n if (overflows.y.before) {\n y += overflows.y.before;\n contentBox.y += overflows.y.before;\n }\n if (overflows.y.after) {\n y -= overflows.y.after;\n contentBox.y -= overflows.y.after;\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport);\n available.x = viewport.width - overflows.x.before - overflows.x.after;\n available.y = viewport.height - overflows.y.before - overflows.y.after;\n x += overflows.x.before;\n contentBox.x += overflows.x.before;\n y += overflows.y.before;\n contentBox.y += overflows.y.before;\n }\n break;\n }\n const axis = getAxis(placement.anchor);\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))\n });\n return {\n available,\n contentBox\n };\n }\n watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());\n nextTick(() => {\n const result = updateLocation();\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return;\n const {\n available,\n contentBox\n } = result;\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation();\n requestAnimationFrame(() => {\n updateLocation();\n });\n });\n }\n });\n return {\n updateLocation\n };\n}\nfunction pixelRound(val) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio;\n}\nfunction pixelCeil(val) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio;\n}\n//# sourceMappingURL=locationStrategies.mjs.map","let clean = true;\nconst frames = [];\n\n/**\n * Schedule a task to run in an animation frame on its own\n * This is useful for heavy tasks that may cause jank if all ran together\n */\nexport function requestNewFrame(cb) {\n if (!clean || frames.length) {\n frames.push(cb);\n run();\n } else {\n clean = false;\n cb();\n run();\n }\n}\nlet raf = -1;\nfunction run() {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n const frame = frames.shift();\n if (frame) frame();\n if (frames.length) run();else clean = true;\n });\n}\n//# sourceMappingURL=requestNewFrame.mjs.map","// Utilities\nimport { effectScope, onScopeDispose, watchEffect } from 'vue';\nimport { requestNewFrame } from \"./requestNewFrame.mjs\";\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from \"../../util/index.mjs\"; // Types\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy\n};\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function],\n default: 'block',\n validator: val => typeof val === 'function' || val in scrollStrategies\n }\n}, 'VOverlay-scroll-strategies');\nexport function useScrollStrategies(props, data) {\n if (!IN_BROWSER) return;\n let scope;\n watchEffect(async () => {\n scope?.stop();\n if (!(data.isActive.value && props.scrollStrategy)) return;\n scope = effectScope();\n await new Promise(resolve => setTimeout(resolve));\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope);\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope);\n }\n });\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n}\nfunction closeScrollStrategy(data) {\n function onScroll(e) {\n data.isActive.value = false;\n }\n bindScroll(data.targetEl.value ?? data.contentEl.value, onScroll);\n}\nfunction blockScrollStrategy(data, props) {\n const offsetParent = data.root.value?.offsetParent;\n const scrollElements = [...new Set([...getScrollParents(data.targetEl.value, props.contained ? offsetParent : undefined), ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined)])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'));\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth;\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement);\n if (scrollableParent) {\n data.root.value.classList.add('v-overlay--scroll-blocked');\n }\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft));\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop));\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth));\n }\n el.classList.add('v-overlay-scroll-blocked');\n });\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'));\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'));\n const scrollBehavior = el.style.scrollBehavior;\n el.style.scrollBehavior = 'auto';\n el.style.removeProperty('--v-body-scroll-x');\n el.style.removeProperty('--v-body-scroll-y');\n el.style.removeProperty('--v-scrollbar-offset');\n el.classList.remove('v-overlay-scroll-blocked');\n el.scrollLeft = -x;\n el.scrollTop = -y;\n el.style.scrollBehavior = scrollBehavior;\n });\n if (scrollableParent) {\n data.root.value.classList.remove('v-overlay--scroll-blocked');\n }\n });\n}\nfunction repositionScrollStrategy(data, props, scope) {\n let slow = false;\n let raf = -1;\n let ric = -1;\n function update(e) {\n requestNewFrame(() => {\n const start = performance.now();\n data.updateLocation.value?.(e);\n const time = performance.now() - start;\n slow = time / (1000 / 60) > 2;\n });\n }\n ric = (typeof requestIdleCallback === 'undefined' ? cb => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.targetEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e);\n });\n });\n } else {\n update(e);\n }\n });\n });\n });\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);\n cancelAnimationFrame(raf);\n });\n}\n\n/** @private */\nfunction bindScroll(el, onScroll) {\n const scrollElements = [document, ...getScrollParents(el)];\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll);\n });\n });\n}\n//# sourceMappingURL=scrollStrategies.mjs.map","// Types\n\nexport const VMenuSymbol = Symbol.for('vuetify:v-menu');\n//# sourceMappingURL=shared.mjs.map","// Utilities\nimport { defer, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeDelayProps = propsFactory({\n closeDelay: [Number, String],\n openDelay: [Number, String]\n}, 'delay');\nexport function useDelay(props, cb) {\n let clearDelay = () => {};\n function runDelay(isOpening) {\n clearDelay?.();\n const delay = Number(isOpening ? props.openDelay : props.closeDelay);\n return new Promise(resolve => {\n clearDelay = defer(delay, () => {\n cb?.(isOpening);\n resolve(isOpening);\n });\n });\n }\n function runOpenDelay() {\n return runDelay(true);\n }\n function runCloseDelay() {\n return runDelay(false);\n }\n return {\n clearDelay,\n runOpenDelay,\n runCloseDelay\n };\n}\n//# sourceMappingURL=delay.mjs.map","// Components\nimport { VMenuSymbol } from \"../VMenu/shared.mjs\"; // Composables\nimport { makeDelayProps, useDelay } from \"../../composables/delay.mjs\"; // Utilities\nimport { computed, effectScope, inject, mergeProps, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue';\nimport { bindProps, getCurrentInstance, IN_BROWSER, matchesSelector, propsFactory, templateRef, unbindProps } from \"../../util/index.mjs\"; // Types\nexport const makeActivatorProps = propsFactory({\n target: [String, Object],\n activator: [String, Object],\n activatorProps: {\n type: Object,\n default: () => ({})\n },\n openOnClick: {\n type: Boolean,\n default: undefined\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined\n },\n closeOnContentClick: Boolean,\n ...makeDelayProps()\n}, 'VOverlay-activator');\nexport function useActivator(props, _ref) {\n let {\n isActive,\n isTop,\n contentEl\n } = _ref;\n const vm = getCurrentInstance('useActivator');\n const activatorEl = ref();\n let isHovered = false;\n let isFocused = false;\n let firstEnter = true;\n const openOnFocus = computed(() => props.openOnFocus || props.openOnFocus == null && props.openOnHover);\n const openOnClick = computed(() => props.openOnClick || props.openOnClick == null && !props.openOnHover && !openOnFocus.value);\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => {\n if (value === (props.openOnHover && isHovered || openOnFocus.value && isFocused) && !(props.openOnHover && isActive.value && !isTop.value)) {\n if (isActive.value !== value) {\n firstEnter = true;\n }\n isActive.value = value;\n }\n });\n const cursorTarget = ref();\n const availableEvents = {\n onClick: e => {\n e.stopPropagation();\n activatorEl.value = e.currentTarget || e.target;\n if (!isActive.value) {\n cursorTarget.value = [e.clientX, e.clientY];\n }\n isActive.value = !isActive.value;\n },\n onMouseenter: e => {\n if (e.sourceCapabilities?.firesTouchEvents) return;\n isHovered = true;\n activatorEl.value = e.currentTarget || e.target;\n runOpenDelay();\n },\n onMouseleave: e => {\n isHovered = false;\n runCloseDelay();\n },\n onFocus: e => {\n if (matchesSelector(e.target, ':focus-visible') === false) return;\n isFocused = true;\n e.stopPropagation();\n activatorEl.value = e.currentTarget || e.target;\n runOpenDelay();\n },\n onBlur: e => {\n isFocused = false;\n e.stopPropagation();\n runCloseDelay();\n }\n };\n const activatorEvents = computed(() => {\n const events = {};\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick;\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter;\n events.onMouseleave = availableEvents.onMouseleave;\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus;\n events.onBlur = availableEvents.onBlur;\n }\n return events;\n });\n const contentEvents = computed(() => {\n const events = {};\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true;\n runOpenDelay();\n };\n events.onMouseleave = () => {\n isHovered = false;\n runCloseDelay();\n };\n }\n if (openOnFocus.value) {\n events.onFocusin = () => {\n isFocused = true;\n runOpenDelay();\n };\n events.onFocusout = () => {\n isFocused = false;\n runCloseDelay();\n };\n }\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null);\n events.onClick = () => {\n isActive.value = false;\n menu?.closeParents();\n };\n }\n return events;\n });\n const scrimEvents = computed(() => {\n const events = {};\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true;\n firstEnter = false;\n runOpenDelay();\n }\n };\n events.onMouseleave = () => {\n isHovered = false;\n runCloseDelay();\n };\n }\n return events;\n });\n watch(isTop, val => {\n if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered)) && !contentEl.value?.contains(document.activeElement)) {\n isActive.value = false;\n }\n });\n watch(isActive, val => {\n if (!val) {\n setTimeout(() => {\n cursorTarget.value = undefined;\n });\n }\n }, {\n flush: 'post'\n });\n const activatorRef = templateRef();\n watchEffect(() => {\n if (!activatorRef.value) return;\n nextTick(() => {\n activatorEl.value = activatorRef.el;\n });\n });\n const targetRef = templateRef();\n const target = computed(() => {\n if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value;\n if (targetRef.value) return targetRef.el;\n return getTarget(props.target, vm) || activatorEl.value;\n });\n const targetEl = computed(() => {\n return Array.isArray(target.value) ? undefined : target.value;\n });\n let scope;\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope();\n scope.run(() => {\n _useActivator(props, vm, {\n activatorEl,\n activatorEvents\n });\n });\n } else if (scope) {\n scope.stop();\n }\n }, {\n flush: 'post',\n immediate: true\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n return {\n activatorEl,\n activatorRef,\n target,\n targetEl,\n targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents\n };\n}\nfunction _useActivator(props, vm, _ref2) {\n let {\n activatorEl,\n activatorEvents\n } = _ref2;\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal);\n activator && unbindActivatorProps(activator);\n }\n if (val) {\n nextTick(() => bindActivatorProps());\n }\n }, {\n immediate: true\n });\n watch(() => props.activatorProps, () => {\n bindActivatorProps();\n });\n onScopeDispose(() => {\n unbindActivatorProps();\n });\n function bindActivatorProps() {\n let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();\n let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;\n if (!el) return;\n bindProps(el, mergeProps(activatorEvents.value, _props));\n }\n function unbindActivatorProps() {\n let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();\n let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;\n if (!el) return;\n unbindProps(el, mergeProps(activatorEvents.value, _props));\n }\n function getActivator() {\n let selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : props.activator;\n const activator = getTarget(selector, vm);\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined;\n return activatorEl.value;\n }\n}\nfunction getTarget(selector, vm) {\n if (!selector) return;\n let target;\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode;\n while (el?.hasAttribute('data-no-activator')) {\n el = el.parentNode;\n }\n target = el;\n } else if (typeof selector === 'string') {\n // Selector\n target = document.querySelector(selector);\n } else if ('$el' in selector) {\n // Component (ref)\n target = selector.$el;\n } else {\n // HTMLElement | Element | [x, y]\n target = selector;\n }\n return target;\n}\n//# sourceMappingURL=useActivator.mjs.map","// Composables\nimport { useDisplay } from \"./display.mjs\"; // Utilities\nimport { onMounted, shallowRef } from 'vue';\nimport { IN_BROWSER } from \"../util/index.mjs\";\nexport function useHydration() {\n if (!IN_BROWSER) return shallowRef(false);\n const {\n ssr\n } = useDisplay();\n if (ssr) {\n const isMounted = shallowRef(false);\n onMounted(() => {\n isMounted.value = true;\n });\n return isMounted;\n } else {\n return shallowRef(true);\n }\n}\n//# sourceMappingURL=hydration.mjs.map","// Utilities\nimport { computed, shallowRef, watch } from 'vue';\nimport { propsFactory } from \"../util/index.mjs\"; // Types\nexport const makeLazyProps = propsFactory({\n eager: Boolean\n}, 'lazy');\nexport function useLazy(props, active) {\n const isBooted = shallowRef(false);\n const hasContent = computed(() => isBooted.value || props.eager || active.value);\n watch(active, () => isBooted.value = true);\n function onAfterLeave() {\n if (!props.eager) isBooted.value = false;\n }\n return {\n isBooted,\n hasContent,\n onAfterLeave\n };\n}\n//# sourceMappingURL=lazy.mjs.map","// Utilities\nimport { getCurrentInstance } from \"../util/index.mjs\";\nexport function useScopeId() {\n const vm = getCurrentInstance('useScopeId');\n const scopeId = vm.vnode.scopeId;\n return {\n scopeId: scopeId ? {\n [scopeId]: ''\n } : undefined\n };\n}\n//# sourceMappingURL=scopeId.mjs.map","// Composables\nimport { useToggleScope } from \"./toggleScope.mjs\"; // Utilities\nimport { computed, inject, onScopeDispose, provide, reactive, readonly, shallowRef, toRaw, watchEffect } from 'vue';\nimport { getCurrentInstance } from \"../util/index.mjs\"; // Types\nconst StackSymbol = Symbol.for('vuetify:stack');\nconst globalStack = reactive([]);\nexport function useStack(isActive, zIndex, disableGlobalStack) {\n const vm = getCurrentInstance('useStack');\n const createStackEntry = !disableGlobalStack;\n const parent = inject(StackSymbol, undefined);\n const stack = reactive({\n activeChildren: new Set()\n });\n provide(StackSymbol, stack);\n const _zIndex = shallowRef(+zIndex.value);\n useToggleScope(isActive, () => {\n const lastZIndex = globalStack.at(-1)?.[1];\n _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;\n if (createStackEntry) {\n globalStack.push([vm.uid, _zIndex.value]);\n }\n parent?.activeChildren.add(vm.uid);\n onScopeDispose(() => {\n if (createStackEntry) {\n const idx = toRaw(globalStack).findIndex(v => v[0] === vm.uid);\n globalStack.splice(idx, 1);\n }\n parent?.activeChildren.delete(vm.uid);\n });\n });\n const globalTop = shallowRef(true);\n if (createStackEntry) {\n watchEffect(() => {\n const _isTop = globalStack.at(-1)?.[0] === vm.uid;\n setTimeout(() => globalTop.value = _isTop);\n });\n }\n const localTop = computed(() => !stack.activeChildren.size);\n return {\n globalTop: readonly(globalTop),\n localTop,\n stackStyles: computed(() => ({\n zIndex: _zIndex.value\n }))\n };\n}\n//# sourceMappingURL=stack.mjs.map","// Utilities\nimport { computed, warn } from 'vue';\nimport { IN_BROWSER } from \"../util/index.mjs\";\nexport function useTeleport(target) {\n const teleportTarget = computed(() => {\n const _target = target();\n if (_target === true || !IN_BROWSER) return undefined;\n const targetElement = _target === false ? document.body : typeof _target === 'string' ? document.querySelector(_target) : _target;\n if (targetElement == null) {\n warn(`Unable to locate target ${_target}`);\n return undefined;\n }\n let container = [...targetElement.children].find(el => el.matches('.v-overlay-container'));\n if (!container) {\n container = document.createElement('div');\n container.className = 'v-overlay-container';\n targetElement.appendChild(container);\n }\n return container;\n });\n return {\n teleportTarget\n };\n}\n//# sourceMappingURL=teleport.mjs.map","// Utilities\nimport { attachedRoot } from \"../../util/index.mjs\"; // Types\nfunction defaultConditional() {\n return true;\n}\nfunction checkEvent(e, el, binding) {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false;\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el);\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot && root.host === e.target) return false;\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = (typeof binding.value === 'object' && binding.value.include || (() => []))();\n // Add the root element for the component this directive was defined on\n elements.push(el);\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el?.contains(e.target));\n}\nfunction checkIsActive(e, binding) {\n const isActive = typeof binding.value === 'object' && binding.value.closeConditional || defaultConditional;\n return isActive(e);\n}\nfunction directive(e, el, binding) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler;\n\n // Clicks in the Shadow DOM change their target while using setTimeout, so the original target is saved here\n e.shadowTarget = e.target;\n el._clickOutside.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e);\n }, 0);\n}\nfunction handleShadow(el, callback) {\n const root = attachedRoot(el);\n callback(document);\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root);\n }\n}\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted(el, binding) {\n const onClick = e => directive(e, el, binding);\n const onMousedown = e => {\n el._clickOutside.lastMousedownWasOutside = checkEvent(e, el, binding);\n };\n handleShadow(el, app => {\n app.addEventListener('click', onClick, true);\n app.addEventListener('mousedown', onMousedown, true);\n });\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: false\n };\n }\n el._clickOutside[binding.instance.$.uid] = {\n onClick,\n onMousedown\n };\n },\n beforeUnmount(el, binding) {\n if (!el._clickOutside) return;\n handleShadow(el, app => {\n if (!app || !el._clickOutside?.[binding.instance.$.uid]) return;\n const {\n onClick,\n onMousedown\n } = el._clickOutside[binding.instance.$.uid];\n app.removeEventListener('click', onClick, true);\n app.removeEventListener('mousedown', onMousedown, true);\n });\n delete el._clickOutside[binding.instance.$.uid];\n }\n};\nexport default ClickOutside;\n//# sourceMappingURL=index.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, vShow as _vShow, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VOverlay.css\";\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from \"./locationStrategies.mjs\";\nimport { makeScrollStrategyProps, useScrollStrategies } from \"./scrollStrategies.mjs\";\nimport { makeActivatorProps, useActivator } from \"./useActivator.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useHydration } from \"../../composables/hydration.mjs\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useBackButton, useRouter } from \"../../composables/router.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { useStack } from \"../../composables/stack.mjs\";\nimport { useTeleport } from \"../../composables/teleport.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Directives\nimport { ClickOutside } from \"../../directives/click-outside/index.mjs\"; // Utilities\nimport { computed, mergeProps, onBeforeUnmount, ref, Teleport, toRef, Transition, watch } from 'vue';\nimport { animate, convertToUnit, genericComponent, getCurrentInstance, getScrollParent, IN_BROWSER, propsFactory, standardEasing, useRender } from \"../../util/index.mjs\"; // Types\nfunction Scrim(props) {\n const {\n modelValue,\n color,\n ...rest\n } = props;\n return _createVNode(Transition, {\n \"name\": \"fade-transition\",\n \"appear\": true\n }, {\n default: () => [props.modelValue && _createVNode(\"div\", _mergeProps({\n \"class\": ['v-overlay__scrim', props.color.backgroundColorClasses.value],\n \"style\": props.color.backgroundColorStyles.value\n }, rest), null)]\n });\n}\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object],\n closeOnBack: {\n type: Boolean,\n default: true\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true\n },\n zIndex: {\n type: [Number, String],\n default: 2000\n },\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps()\n}, 'VOverlay');\nexport const VOverlay = genericComponent()({\n name: 'VOverlay',\n directives: {\n ClickOutside\n },\n inheritAttrs: false,\n props: {\n _disableGlobalStack: Boolean,\n ...makeVOverlayProps()\n },\n emits: {\n 'click:outside': e => true,\n 'update:modelValue': value => true,\n afterEnter: () => true,\n afterLeave: () => true\n },\n setup(props, _ref) {\n let {\n slots,\n attrs,\n emit\n } = _ref;\n const vm = getCurrentInstance('VOverlay');\n const root = ref();\n const scrimEl = ref();\n const contentEl = ref();\n const model = useProxiedModel(props, 'modelValue');\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v;\n }\n });\n const {\n themeClasses\n } = provideTheme(props);\n const {\n rtlClasses,\n isRtl\n } = useRtl();\n const {\n hasContent,\n onAfterLeave: _onAfterLeave\n } = useLazy(props, isActive);\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null;\n }));\n const {\n globalTop,\n localTop,\n stackStyles\n } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack);\n const {\n activatorEl,\n activatorRef,\n target,\n targetEl,\n targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents\n } = useActivator(props, {\n isActive,\n isTop: localTop,\n contentEl\n });\n const {\n teleportTarget\n } = useTeleport(() => {\n const target = props.attach || props.contained;\n if (target) return target;\n const rootNode = activatorEl?.value?.getRootNode() || vm.proxy?.$el?.getRootNode();\n if (rootNode instanceof ShadowRoot) return rootNode;\n return false;\n });\n const {\n dimensionStyles\n } = useDimension(props);\n const isMounted = useHydration();\n const {\n scopeId\n } = useScopeId();\n watch(() => props.disabled, v => {\n if (v) isActive.value = false;\n });\n const {\n contentStyles,\n updateLocation\n } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive\n });\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation\n });\n function onClickOutside(e) {\n emit('click:outside', e);\n if (!props.persistent) isActive.value = false;else animateClick();\n }\n function closeConditional(e) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value || e instanceof MouseEvent && e.shadowTarget === scrimEl.value);\n }\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown);\n } else {\n window.removeEventListener('keydown', onKeydown);\n }\n }, {\n immediate: true\n });\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return;\n window.removeEventListener('keydown', onKeydown);\n });\n function onKeydown(e) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false;\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus();\n }\n } else animateClick();\n }\n }\n const router = useRouter();\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false);\n if (!props.persistent) isActive.value = false;else animateClick();\n } else {\n next();\n }\n });\n });\n const top = ref();\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value);\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop;\n }\n }\n });\n\n // Add a quick \"bounce\" animation to the content\n function animateClick() {\n if (props.noClickAnimation) return;\n contentEl.value && animate(contentEl.value, [{\n transformOrigin: 'center'\n }, {\n transform: 'scale(1.03)'\n }, {\n transformOrigin: 'center'\n }], {\n duration: 150,\n easing: standardEasing\n });\n }\n function onAfterEnter() {\n emit('afterEnter');\n }\n function onAfterLeave() {\n _onAfterLeave();\n emit('afterLeave');\n }\n useRender(() => _createVNode(_Fragment, null, [slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef\n }, activatorEvents.value, props.activatorProps)\n }), isMounted.value && hasContent.value && _createVNode(Teleport, {\n \"disabled\": !teleportTarget.value,\n \"to\": teleportTarget.value\n }, {\n default: () => [_createVNode(\"div\", _mergeProps({\n \"class\": ['v-overlay', {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained\n }, themeClasses.value, rtlClasses.value, props.class],\n \"style\": [stackStyles.value, {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value)\n }, props.style],\n \"ref\": root\n }, scopeId, attrs), [_createVNode(Scrim, _mergeProps({\n \"color\": scrimColor,\n \"modelValue\": isActive.value && !!props.scrim,\n \"ref\": scrimEl\n }, scrimEvents.value), null), _createVNode(MaybeTransition, {\n \"appear\": true,\n \"persisted\": true,\n \"transition\": props.transition,\n \"target\": target.value,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", _mergeProps({\n \"ref\": contentEl,\n \"class\": ['v-overlay__content', props.contentClass],\n \"style\": [dimensionStyles.value, contentStyles.value]\n }, contentEvents.value, props.contentProps), [slots.default?.({\n isActive\n })]), [[_vShow, isActive.value], [_resolveDirective(\"click-outside\"), {\n handler: onClickOutside,\n closeConditional,\n include: () => [activatorEl.value]\n }]])]\n })])]\n })]));\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation\n };\n }\n});\n//# sourceMappingURL=VOverlay.mjs.map","// Types\n\nconst Refs = Symbol('Forwarded refs');\n\n/** Omit properties starting with P */\n\n/** Omit keyof $props from T */\n\nfunction getDescriptor(obj, key) {\n let currentObj = obj;\n while (currentObj) {\n const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key);\n if (descriptor) return descriptor;\n currentObj = Object.getPrototypeOf(currentObj);\n }\n return undefined;\n}\nexport function forwardRefs(target) {\n for (var _len = arguments.length, refs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n refs[_key - 1] = arguments[_key];\n }\n target[Refs] = refs;\n return new Proxy(target, {\n get(target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key);\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n const val = Reflect.get(ref.value, key);\n return typeof val === 'function' ? val.bind(ref.value) : val;\n }\n }\n },\n has(target, key) {\n if (Reflect.has(target, key)) {\n return true;\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return true;\n }\n }\n return false;\n },\n set(target, key, value) {\n if (Reflect.has(target, key)) {\n return Reflect.set(target, key, value);\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return Reflect.set(ref.value, key, value);\n }\n }\n return false;\n },\n getOwnPropertyDescriptor(target, key) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, key);\n if (descriptor) return descriptor;\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;\n\n // Check each ref's own properties\n for (const ref of refs) {\n if (!ref.value) continue;\n const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined);\n if (descriptor) return descriptor;\n }\n\n // Recursive search up each ref's prototype\n for (const ref of refs) {\n const childRefs = ref.value && ref.value[Refs];\n if (!childRefs) continue;\n const queue = childRefs.slice();\n while (queue.length) {\n const ref = queue.shift();\n const descriptor = getDescriptor(ref.value, key);\n if (descriptor) return descriptor;\n const childRefs = ref.value && ref.value[Refs];\n if (childRefs) queue.push(...childRefs);\n }\n }\n return undefined;\n }\n });\n}\n//# sourceMappingURL=forwardRefs.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VMenu.css\";\n\n// Components\nimport { VDialogTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\"; // Composables\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\"; // Utilities\nimport { computed, inject, mergeProps, nextTick, onBeforeUnmount, onDeactivated, provide, ref, shallowRef, watch } from 'vue';\nimport { VMenuSymbol } from \"./shared.mjs\";\nimport { focusableChildren, focusChild, genericComponent, getNextElement, getUid, isClickInsideElement, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n submenu: Boolean,\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected',\n location: undefined,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition',\n transition: {\n component: VDialogTransition\n }\n }), ['absolute'])\n}, 'VMenu');\nexport const VMenu = genericComponent()({\n name: 'VMenu',\n props: makeVMenuProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n scopeId\n } = useScopeId();\n const {\n isRtl\n } = useRtl();\n const uid = getUid();\n const id = computed(() => props.id || `v-menu-${uid}`);\n const overlay = ref();\n const parent = inject(VMenuSymbol, null);\n const openChildren = shallowRef(new Set());\n provide(VMenuSymbol, {\n register() {\n openChildren.value.add(uid);\n },\n unregister() {\n openChildren.value.delete(uid);\n },\n closeParents(e) {\n setTimeout(() => {\n if (!openChildren.value.size && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {\n isActive.value = false;\n parent?.closeParents();\n }\n }, 40);\n }\n });\n onBeforeUnmount(() => parent?.unregister());\n onDeactivated(() => isActive.value = false);\n async function onFocusIn(e) {\n const before = e.relatedTarget;\n const after = e.target;\n await nextTick();\n if (isActive.value && before !== after && overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)) {\n const focusable = focusableChildren(overlay.value.contentEl);\n focusable[0]?.focus();\n }\n }\n watch(isActive, val => {\n if (val) {\n parent?.register();\n document.addEventListener('focusin', onFocusIn, {\n once: true\n });\n } else {\n parent?.unregister();\n document.removeEventListener('focusin', onFocusIn);\n }\n });\n function onClickOutside(e) {\n parent?.closeParents(e);\n }\n function onKeydown(e) {\n if (props.disabled) return;\n if (e.key === 'Tab' || e.key === 'Enter' && !props.closeOnContentClick) {\n if (e.key === 'Enter' && (e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLInputElement && !!e.target.closest('form'))) return;\n if (e.key === 'Enter') e.preventDefault();\n const nextElement = getNextElement(focusableChildren(overlay.value?.contentEl, false), e.shiftKey ? 'prev' : 'next', el => el.tabIndex >= 0);\n if (!nextElement) {\n isActive.value = false;\n overlay.value?.activatorEl?.focus();\n }\n } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false;\n overlay.value?.activatorEl?.focus();\n }\n }\n function onActivatorKeydown(e) {\n if (props.disabled) return;\n const el = overlay.value?.contentEl;\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n e.stopImmediatePropagation();\n focusChild(el, 'next');\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n e.stopImmediatePropagation();\n focusChild(el, 'prev');\n } else if (props.submenu) {\n if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false;\n } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {\n e.preventDefault();\n focusChild(el, 'first');\n }\n }\n } else if (props.submenu ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight') : ['ArrowDown', 'ArrowUp'].includes(e.key)) {\n isActive.value = true;\n e.preventDefault();\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)));\n }\n }\n const activatorProps = computed(() => mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n onKeydown: onActivatorKeydown\n }, props.activatorProps));\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"id\": id.value,\n \"class\": ['v-menu', props.class],\n \"style\": props.style\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"absolute\": true,\n \"activatorProps\": activatorProps.value,\n \"location\": props.location ?? (props.submenu ? 'end' : 'bottom'),\n \"onClick:outside\": onClickOutside,\n \"onKeydown\": onKeydown\n }, scopeId), {\n activator: slots.activator,\n default: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(VDefaultsProvider, {\n \"root\": \"VMenu\"\n }, {\n default: () => [slots.default?.(...args)]\n });\n }\n });\n });\n return forwardRefs({\n id,\n ΨopenChildren: openChildren\n }, overlay);\n }\n});\n//# sourceMappingURL=VMenu.mjs.map","import { withDirectives as _withDirectives, createVNode as _createVNode, vShow as _vShow } from \"vue\";\n// Styles\nimport \"./VCounter.css\";\n\n// Components\nimport { VSlideYTransition } from \"../transitions/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCounterProps = propsFactory({\n active: Boolean,\n disabled: Boolean,\n max: [Number, String],\n value: {\n type: [Number, String],\n default: 0\n },\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition\n }\n })\n}, 'VCounter');\nexport const VCounter = genericComponent()({\n name: 'VCounter',\n functional: true,\n props: makeVCounterProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const counter = computed(() => {\n return props.max ? `${props.value} / ${props.max}` : String(props.value);\n });\n useRender(() => _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": ['v-counter', {\n 'text-error': props.max && !props.disabled && parseFloat(props.value) > parseFloat(props.max)\n }, props.class],\n \"style\": props.style\n }, [slots.default ? slots.default({\n counter: counter.value,\n max: props.max,\n value: props.value\n }) : counter.value]), [[_vShow, props.active]])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VCounter.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { VLabel } from \"../VLabel/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVFieldLabelProps = propsFactory({\n floating: Boolean,\n ...makeComponentProps()\n}, 'VFieldLabel');\nexport const VFieldLabel = genericComponent()({\n name: 'VFieldLabel',\n props: makeVFieldLabelProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(VLabel, {\n \"class\": ['v-field-label', {\n 'v-field-label--floating': props.floating\n }, props.class],\n \"style\": props.style,\n \"aria-hidden\": props.floating || undefined\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VFieldLabel.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, withDirectives as _withDirectives, vShow as _vShow, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VField.css\";\n\n// Components\nimport { VFieldLabel } from \"./VFieldLabel.mjs\";\nimport { VExpandXTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { useInputIcon } from \"../VInput/InputIcon.mjs\"; // Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { LoaderSlot, makeLoaderProps, useLoader } from \"../../composables/loader.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, ref, toRef, watch } from 'vue';\nimport { animate, convertToUnit, EventProp, genericComponent, getUid, isOn, nullifyTransforms, pick, propsFactory, standardEasing, useRender } from \"../../util/index.mjs\"; // Types\nconst allowedVariants = ['underlined', 'outlined', 'filled', 'solo', 'solo-inverted', 'solo-filled', 'plain'];\nexport const makeVFieldProps = propsFactory({\n appendInnerIcon: IconValue,\n bgColor: String,\n clearable: Boolean,\n clearIcon: {\n type: IconValue,\n default: '$clear'\n },\n active: Boolean,\n centerAffix: {\n type: Boolean,\n default: undefined\n },\n color: String,\n baseColor: String,\n dirty: Boolean,\n disabled: {\n type: Boolean,\n default: null\n },\n error: Boolean,\n flat: Boolean,\n label: String,\n persistentClear: Boolean,\n prependInnerIcon: IconValue,\n reverse: Boolean,\n singleLine: Boolean,\n variant: {\n type: String,\n default: 'filled',\n validator: v => allowedVariants.includes(v)\n },\n 'onClick:clear': EventProp(),\n 'onClick:appendInner': EventProp(),\n 'onClick:prependInner': EventProp(),\n ...makeComponentProps(),\n ...makeLoaderProps(),\n ...makeRoundedProps(),\n ...makeThemeProps()\n}, 'VField');\nexport const VField = genericComponent()({\n name: 'VField',\n inheritAttrs: false,\n props: {\n id: String,\n ...makeFocusProps(),\n ...makeVFieldProps()\n },\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n loaderClasses\n } = useLoader(props);\n const {\n focusClasses,\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const {\n InputIcon\n } = useInputIcon(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n rtlClasses\n } = useRtl();\n const isActive = computed(() => props.dirty || props.active);\n const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label));\n const uid = getUid();\n const id = computed(() => props.id || `input-${uid}`);\n const messagesId = computed(() => `${id.value}-messages`);\n const labelRef = ref();\n const floatingLabelRef = ref();\n const controlRef = ref();\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(computed(() => {\n return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;\n }));\n watch(isActive, val => {\n if (hasLabel.value) {\n const el = labelRef.value.$el;\n const targetEl = floatingLabelRef.value.$el;\n requestAnimationFrame(() => {\n const rect = nullifyTransforms(el);\n const targetRect = targetEl.getBoundingClientRect();\n const x = targetRect.x - rect.x;\n const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);\n const targetWidth = targetRect.width / 0.75;\n const width = Math.abs(targetWidth - rect.width) > 1 ? {\n maxWidth: convertToUnit(targetWidth)\n } : undefined;\n const style = getComputedStyle(el);\n const targetStyle = getComputedStyle(targetEl);\n const duration = parseFloat(style.transitionDuration) * 1000 || 150;\n const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'));\n const color = targetStyle.getPropertyValue('color');\n el.style.visibility = 'visible';\n targetEl.style.visibility = 'hidden';\n animate(el, {\n transform: `translate(${x}px, ${y}px) scale(${scale})`,\n color,\n ...width\n }, {\n duration,\n easing: standardEasing,\n direction: val ? 'normal' : 'reverse'\n }).finished.then(() => {\n el.style.removeProperty('visibility');\n targetEl.style.removeProperty('visibility');\n });\n });\n }\n }, {\n flush: 'post'\n });\n const slotProps = computed(() => ({\n isActive,\n isFocused,\n controlRef,\n blur,\n focus\n }));\n function onClick(e) {\n if (e.target !== document.activeElement) {\n e.preventDefault();\n }\n }\n function onKeydownClear(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n props['onClick:clear']?.(new MouseEvent('click'));\n }\n useRender(() => {\n const isOutlined = props.variant === 'outlined';\n const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon);\n const hasClear = !!(props.clearable || slots.clear);\n const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear);\n const label = () => slots.label ? slots.label({\n ...slotProps.value,\n label: props.label,\n props: {\n for: id.value\n }\n }) : props.label;\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-field', {\n 'v-field--active': isActive.value,\n 'v-field--appended': hasAppend,\n 'v-field--center-affix': props.centerAffix ?? !isPlainOrUnderlined.value,\n 'v-field--disabled': props.disabled,\n 'v-field--dirty': props.dirty,\n 'v-field--error': props.error,\n 'v-field--flat': props.flat,\n 'v-field--has-background': !!props.bgColor,\n 'v-field--persistent-clear': props.persistentClear,\n 'v-field--prepended': hasPrepend,\n 'v-field--reverse': props.reverse,\n 'v-field--single-line': props.singleLine,\n 'v-field--no-label': !label(),\n [`v-field--variant-${props.variant}`]: true\n }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, rtlClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, props.style],\n \"onClick\": onClick\n }, attrs), [_createVNode(\"div\", {\n \"class\": \"v-field__overlay\"\n }, null), _createVNode(LoaderSlot, {\n \"name\": \"v-field\",\n \"active\": !!props.loading,\n \"color\": props.error ? 'error' : typeof props.loading === 'string' ? props.loading : props.color\n }, {\n default: slots.loader\n }), hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-field__prepend-inner\"\n }, [props.prependInnerIcon && _createVNode(InputIcon, {\n \"key\": \"prepend-icon\",\n \"name\": \"prependInner\"\n }, null), slots['prepend-inner']?.(slotProps.value)]), _createVNode(\"div\", {\n \"class\": \"v-field__field\",\n \"data-no-activator\": \"\"\n }, [['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasLabel.value && _createVNode(VFieldLabel, {\n \"key\": \"floating-label\",\n \"ref\": floatingLabelRef,\n \"class\": [textColorClasses.value],\n \"floating\": true,\n \"for\": id.value,\n \"style\": textColorStyles.value\n }, {\n default: () => [label()]\n }), _createVNode(VFieldLabel, {\n \"ref\": labelRef,\n \"for\": id.value\n }, {\n default: () => [label()]\n }), slots.default?.({\n ...slotProps.value,\n props: {\n id: id.value,\n class: 'v-field__input',\n 'aria-describedby': messagesId.value\n },\n focus,\n blur\n })]), hasClear && _createVNode(VExpandXTransition, {\n \"key\": \"clear\"\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": \"v-field__clearable\",\n \"onMousedown\": e => {\n e.preventDefault();\n e.stopPropagation();\n }\n }, [_createVNode(VDefaultsProvider, {\n \"defaults\": {\n VIcon: {\n icon: props.clearIcon\n }\n }\n }, {\n default: () => [slots.clear ? slots.clear({\n ...slotProps.value,\n props: {\n onKeydown: onKeydownClear,\n onFocus: focus,\n onBlur: blur,\n onClick: props['onClick:clear']\n }\n }) : _createVNode(InputIcon, {\n \"name\": \"clear\",\n \"onKeydown\": onKeydownClear,\n \"onFocus\": focus,\n \"onBlur\": blur\n }, null)]\n })]), [[_vShow, props.dirty]])]\n }), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-field__append-inner\"\n }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && _createVNode(InputIcon, {\n \"key\": \"append-icon\",\n \"name\": \"appendInner\"\n }, null)]), _createVNode(\"div\", {\n \"class\": ['v-field__outline', textColorClasses.value],\n \"style\": textColorStyles.value\n }, [isOutlined && _createVNode(_Fragment, null, [_createVNode(\"div\", {\n \"class\": \"v-field__outline__start\"\n }, null), hasLabel.value && _createVNode(\"div\", {\n \"class\": \"v-field__outline__notch\"\n }, [_createVNode(VFieldLabel, {\n \"ref\": floatingLabelRef,\n \"floating\": true,\n \"for\": id.value\n }, {\n default: () => [label()]\n })]), _createVNode(\"div\", {\n \"class\": \"v-field__outline__end\"\n }, null)]), isPlainOrUnderlined.value && hasLabel.value && _createVNode(VFieldLabel, {\n \"ref\": floatingLabelRef,\n \"floating\": true,\n \"for\": id.value\n }, {\n default: () => [label()]\n })])]);\n });\n return {\n controlRef\n };\n }\n});\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps(attrs) {\n const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style');\n return pick(attrs, keys);\n}\n//# sourceMappingURL=VField.mjs.map","import { Fragment as _Fragment, withDirectives as _withDirectives, createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VTextField.css\";\n\n// Components\nimport { VCounter } from \"../VCounter/VCounter.mjs\";\nimport { filterFieldProps, makeVFieldProps, VField } from \"../VField/VField.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Directives\nimport Intersect from \"../../directives/intersect/index.mjs\"; // Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue';\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String],\n counterValue: [Number, Function],\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n role: String,\n type: {\n type: String,\n default: 'text'\n },\n modelModifiers: Object,\n ...makeVInputProps(),\n ...makeVFieldProps()\n}, 'VTextField');\nexport const VTextField = genericComponent()({\n name: 'VTextField',\n directives: {\n Intersect\n },\n inheritAttrs: false,\n props: makeVTextFieldProps(),\n emits: {\n 'click:control': e => true,\n 'mousedown:control': e => true,\n 'update:focused': focused => true,\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : (model.value ?? '').toString().length;\n });\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength;\n if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;\n return props.counter;\n });\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n function onIntersect(isIntersecting, entries) {\n if (!props.autofocus || !isIntersecting) return;\n entries[0].target?.focus?.();\n }\n const vInputRef = ref();\n const vFieldRef = ref();\n const inputRef = ref();\n const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);\n function onFocus() {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus();\n }\n if (!isFocused.value) focus();\n }\n function onControlMousedown(e) {\n emit('mousedown:control', e);\n if (e.target === inputRef.value) return;\n onFocus();\n e.preventDefault();\n }\n function onControlClick(e) {\n onFocus();\n emit('click:control', e);\n }\n function onClear(e) {\n e.stopPropagation();\n onFocus();\n nextTick(() => {\n model.value = null;\n callEvent(props['onClick:clear'], e);\n });\n }\n function onInput(e) {\n const el = e.target;\n model.value = el.value;\n if (props.modelModifiers?.trim && ['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {\n const caretPosition = [el.selectionStart, el.selectionEnd];\n nextTick(() => {\n el.selectionStart = caretPosition[0];\n el.selectionEnd = caretPosition[1];\n });\n }\n }\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter !== false && props.counter != null);\n const hasDetails = !!(hasCounter || slots.details);\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const {\n modelValue: _,\n ...inputProps\n } = VInput.filterProps(props);\n const fieldProps = filterFieldProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": vInputRef,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-text-field', {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-input--plain-underlined': isPlainOrUnderlined.value\n }, props.class],\n \"style\": props.style\n }, rootAttrs, inputProps, {\n \"centerAffix\": !isPlainOrUnderlined.value,\n \"focused\": isFocused.value\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid\n } = _ref2;\n return _createVNode(VField, _mergeProps({\n \"ref\": vFieldRef,\n \"onMousedown\": onControlMousedown,\n \"onClick\": onControlClick,\n \"onClick:clear\": onClear,\n \"onClick:prependInner\": props['onClick:prependInner'],\n \"onClick:appendInner\": props['onClick:appendInner'],\n \"role\": props.role\n }, fieldProps, {\n \"id\": id.value,\n \"active\": isActive.value || isDirty.value,\n \"dirty\": isDirty.value || props.dirty,\n \"disabled\": isDisabled.value,\n \"focused\": isFocused.value,\n \"error\": isValid.value === false\n }), {\n ...slots,\n default: _ref3 => {\n let {\n props: {\n class: fieldClass,\n ...slotProps\n }\n } = _ref3;\n const inputNode = _withDirectives(_createVNode(\"input\", _mergeProps({\n \"ref\": inputRef,\n \"value\": model.value,\n \"onInput\": onInput,\n \"autofocus\": props.autofocus,\n \"readonly\": isReadonly.value,\n \"disabled\": isDisabled.value,\n \"name\": props.name,\n \"placeholder\": props.placeholder,\n \"size\": 1,\n \"type\": props.type,\n \"onFocus\": onFocus,\n \"onBlur\": blur\n }, slotProps, inputAttrs), null), [[_resolveDirective(\"intersect\"), {\n handler: onIntersect\n }, null, {\n once: true\n }]]);\n return _createVNode(_Fragment, null, [props.prefix && _createVNode(\"span\", {\n \"class\": \"v-text-field__prefix\"\n }, [_createVNode(\"span\", {\n \"class\": \"v-text-field__prefix__text\"\n }, [props.prefix])]), slots.default ? _createVNode(\"div\", {\n \"class\": fieldClass,\n \"data-no-activator\": \"\"\n }, [slots.default(), inputNode]) : cloneVNode(inputNode, {\n class: fieldClass\n }), props.suffix && _createVNode(\"span\", {\n \"class\": \"v-text-field__suffix\"\n }, [_createVNode(\"span\", {\n \"class\": \"v-text-field__suffix__text\"\n }, [props.suffix])])]);\n }\n });\n },\n details: hasDetails ? slotProps => _createVNode(_Fragment, null, [slots.details?.(slotProps), hasCounter && _createVNode(_Fragment, null, [_createVNode(\"span\", null, null), _createVNode(VCounter, {\n \"active\": props.persistentCounter || isFocused.value,\n \"value\": counterValue.value,\n \"max\": max.value,\n \"disabled\": props.disabled\n }, slots.counter)])]) : undefined\n });\n });\n return forwardRefs({}, vInputRef, vFieldRef, inputRef);\n }\n});\n//# sourceMappingURL=VTextField.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\"; // Utilities\nimport { watch } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVVirtualScrollItemProps = propsFactory({\n renderless: Boolean,\n ...makeComponentProps()\n}, 'VVirtualScrollItem');\nexport const VVirtualScrollItem = genericComponent()({\n name: 'VVirtualScrollItem',\n inheritAttrs: false,\n props: makeVVirtualScrollItemProps(),\n emits: {\n 'update:height': height => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n resizeRef,\n contentRect\n } = useResizeObserver(undefined, 'border');\n watch(() => contentRect.value?.height, height => {\n if (height != null) emit('update:height', height);\n });\n useRender(() => props.renderless ? _createVNode(_Fragment, null, [slots.default?.({\n itemRef: resizeRef\n })]) : _createVNode(\"div\", _mergeProps({\n \"ref\": resizeRef,\n \"class\": ['v-virtual-scroll__item', props.class],\n \"style\": props.style\n }, attrs), [slots.default?.()]));\n }\n});\n//# sourceMappingURL=VVirtualScrollItem.mjs.map","// Composables\nimport { useDisplay } from \"./display.mjs\";\nimport { useResizeObserver } from \"./resizeObserver.mjs\"; // Utilities\nimport { computed, nextTick, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { clamp, debounce, IN_BROWSER, propsFactory } from \"../util/index.mjs\"; // Types\nconst UP = -1;\nconst DOWN = 1;\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100;\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null\n },\n height: [Number, String]\n}, 'virtual');\nexport function useVirtual(props, items) {\n const display = useDisplay();\n const itemHeight = shallowRef(0);\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0);\n });\n const first = shallowRef(0);\n const last = shallowRef(Math.ceil(\n // Assume 16px items filling the entire screen height if\n // not provided. This is probably incorrect but it minimises\n // the chance of ending up with empty space at the bottom.\n // The default value is set here to avoid poisoning getSize()\n (parseInt(props.height) || display.height.value) / (itemHeight.value || 16)) || 1);\n const paddingTop = shallowRef(0);\n const paddingBottom = shallowRef(0);\n\n /** The scrollable element */\n const containerRef = ref();\n /** An element marking the top of the scrollable area,\n * used to add an offset if there's padding or other elements above the virtual list */\n const markerRef = ref();\n /** markerRef's offsetTop, lazily evaluated */\n let markerOffset = 0;\n const {\n resizeRef,\n contentRect\n } = useResizeObserver();\n watchEffect(() => {\n resizeRef.value = containerRef.value;\n });\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement ? display.height.value : contentRect.value?.height || parseInt(props.height) || 0;\n });\n /** All static elements have been rendered and we have an assumed item height */\n const hasInitialRender = computed(() => {\n return !!(containerRef.value && markerRef.value && viewportHeight.value && itemHeight.value);\n });\n let sizes = Array.from({\n length: items.value.length\n });\n let offsets = Array.from({\n length: items.value.length\n });\n const updateTime = shallowRef(0);\n let targetScrollIndex = -1;\n function getSize(index) {\n return sizes[index] || itemHeight.value;\n }\n const updateOffsets = debounce(() => {\n const start = performance.now();\n offsets[0] = 0;\n const length = items.value.length;\n for (let i = 1; i <= length - 1; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1);\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start);\n }, updateTime);\n const unwatch = watch(hasInitialRender, v => {\n if (!v) return;\n // First render is complete, update offsets and visible\n // items in case our assumed item height was incorrect\n\n unwatch();\n markerOffset = markerRef.value.offsetTop;\n updateOffsets.immediate();\n calculateVisibleItems();\n if (!~targetScrollIndex) return;\n nextTick(() => {\n IN_BROWSER && window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex);\n targetScrollIndex = -1;\n });\n });\n });\n onScopeDispose(() => {\n updateOffsets.clear();\n });\n function handleItemResize(index, height) {\n const prevHeight = sizes[index];\n const prevMinHeight = itemHeight.value;\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height;\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height;\n updateOffsets();\n }\n }\n function calculateOffset(index) {\n index = clamp(index, 0, items.value.length - 1);\n return offsets[index] || 0;\n }\n function calculateIndex(scrollTop) {\n return binaryClosest(offsets, scrollTop);\n }\n let lastScrollTop = 0;\n let scrollVelocity = 0;\n let lastScrollTime = 0;\n watch(viewportHeight, (val, oldVal) => {\n if (oldVal) {\n calculateVisibleItems();\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0;\n calculateVisibleItems();\n });\n }\n }\n });\n function handleScroll() {\n if (!containerRef.value || !markerRef.value) return;\n const scrollTop = containerRef.value.scrollTop;\n const scrollTime = performance.now();\n const scrollDeltaT = scrollTime - lastScrollTime;\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop);\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop;\n } else {\n scrollVelocity = scrollTop - lastScrollTop;\n }\n lastScrollTop = scrollTop;\n lastScrollTime = scrollTime;\n calculateVisibleItems();\n }\n function handleScrollend() {\n if (!containerRef.value || !markerRef.value) return;\n scrollVelocity = 0;\n lastScrollTime = 0;\n calculateVisibleItems();\n }\n let raf = -1;\n function calculateVisibleItems() {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(_calculateVisibleItems);\n }\n function _calculateVisibleItems() {\n if (!containerRef.value || !viewportHeight.value) return;\n const scrollTop = lastScrollTop - markerOffset;\n const direction = Math.sign(scrollVelocity);\n const startPx = Math.max(0, scrollTop - BUFFER_PX);\n const start = clamp(calculateIndex(startPx), 0, items.value.length);\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX;\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length);\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) && (direction !== DOWN || end > last.value)) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start);\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value);\n const bufferOverflow = Math.max(topOverflow, bottomOverflow);\n if (bufferOverflow > BUFFER_PX) {\n first.value = start;\n last.value = end;\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start;\n if (end >= items.value.length) last.value = end;\n }\n }\n paddingTop.value = calculateOffset(first.value);\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value);\n }\n function scrollToIndex(index) {\n const offset = calculateOffset(index);\n if (!containerRef.value || index && !offset) {\n targetScrollIndex = index;\n } else {\n containerRef.value.scrollTop = offset;\n }\n }\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => ({\n raw: item,\n index: index + first.value\n }));\n });\n watch(items, () => {\n sizes = Array.from({\n length: items.value.length\n });\n offsets = Array.from({\n length: items.value.length\n });\n updateOffsets.immediate();\n calculateVisibleItems();\n }, {\n deep: true\n });\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize\n };\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest(arr, val) {\n let high = arr.length - 1;\n let low = 0;\n let mid = 0;\n let item = null;\n let target = -1;\n if (arr[high] < val) {\n return high;\n }\n while (low <= high) {\n mid = low + high >> 1;\n item = arr[mid];\n if (item > val) {\n high = mid - 1;\n } else if (item < val) {\n target = mid;\n low = mid + 1;\n } else if (item === val) {\n return mid;\n } else {\n return low;\n }\n }\n return target;\n}\n//# sourceMappingURL=virtual.mjs.map","import { Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VVirtualScroll.css\";\n\n// Components\nimport { VVirtualScrollItem } from \"./VVirtualScrollItem.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { makeVirtualProps, useVirtual } from \"../../composables/virtual.mjs\"; // Utilities\nimport { onMounted, onScopeDispose, toRef } from 'vue';\nimport { convertToUnit, genericComponent, getCurrentInstance, getScrollParent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVVirtualScrollProps = propsFactory({\n items: {\n type: Array,\n default: () => []\n },\n renderless: Boolean,\n ...makeVirtualProps(),\n ...makeComponentProps(),\n ...makeDimensionProps()\n}, 'VVirtualScroll');\nexport const VVirtualScroll = genericComponent()({\n name: 'VVirtualScroll',\n props: makeVVirtualScrollProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const vm = getCurrentInstance('VVirtualScroll');\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n calculateVisibleItems,\n containerRef,\n markerRef,\n handleScroll,\n handleScrollend,\n handleItemResize,\n scrollToIndex,\n paddingTop,\n paddingBottom,\n computedItems\n } = useVirtual(props, toRef(props, 'items'));\n useToggleScope(() => props.renderless, () => {\n function handleListeners() {\n let add = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n const method = add ? 'addEventListener' : 'removeEventListener';\n if (containerRef.value === document.documentElement) {\n document[method]('scroll', handleScroll, {\n passive: true\n });\n document[method]('scrollend', handleScrollend);\n } else {\n containerRef.value?.[method]('scroll', handleScroll, {\n passive: true\n });\n containerRef.value?.[method]('scrollend', handleScrollend);\n }\n }\n onMounted(() => {\n containerRef.value = getScrollParent(vm.vnode.el, true);\n handleListeners(true);\n });\n onScopeDispose(handleListeners);\n });\n useRender(() => {\n const children = computedItems.value.map(item => _createVNode(VVirtualScrollItem, {\n \"key\": item.index,\n \"renderless\": props.renderless,\n \"onUpdate:height\": height => handleItemResize(item.index, height)\n }, {\n default: slotProps => slots.default?.({\n item: item.raw,\n index: item.index,\n ...slotProps\n })\n }));\n return props.renderless ? _createVNode(_Fragment, null, [_createVNode(\"div\", {\n \"ref\": markerRef,\n \"class\": \"v-virtual-scroll__spacer\",\n \"style\": {\n paddingTop: convertToUnit(paddingTop.value)\n }\n }, null), children, _createVNode(\"div\", {\n \"class\": \"v-virtual-scroll__spacer\",\n \"style\": {\n paddingBottom: convertToUnit(paddingBottom.value)\n }\n }, null)]) : _createVNode(\"div\", {\n \"ref\": containerRef,\n \"class\": ['v-virtual-scroll', props.class],\n \"onScrollPassive\": handleScroll,\n \"onScrollend\": handleScrollend,\n \"style\": [dimensionStyles.value, props.style]\n }, [_createVNode(\"div\", {\n \"ref\": markerRef,\n \"class\": \"v-virtual-scroll__container\",\n \"style\": {\n paddingTop: convertToUnit(paddingTop.value),\n paddingBottom: convertToUnit(paddingBottom.value)\n }\n }, [children])]);\n });\n return {\n calculateVisibleItems,\n scrollToIndex\n };\n }\n});\n//# sourceMappingURL=VVirtualScroll.mjs.map","// Utilities\nimport { shallowRef, watch } from 'vue';\n\n// Types\n\nexport function useScrolling(listRef, textFieldRef) {\n const isScrolling = shallowRef(false);\n let scrollTimeout;\n function onListScroll(e) {\n cancelAnimationFrame(scrollTimeout);\n isScrolling.value = true;\n scrollTimeout = requestAnimationFrame(() => {\n scrollTimeout = requestAnimationFrame(() => {\n isScrolling.value = false;\n });\n });\n }\n async function finishScrolling() {\n await new Promise(resolve => requestAnimationFrame(resolve));\n await new Promise(resolve => requestAnimationFrame(resolve));\n await new Promise(resolve => requestAnimationFrame(resolve));\n await new Promise(resolve => {\n if (isScrolling.value) {\n const stop = watch(isScrolling, () => {\n stop();\n resolve();\n });\n } else resolve();\n });\n }\n async function onListKeydown(e) {\n if (e.key === 'Tab') {\n textFieldRef.value?.focus();\n }\n if (!['PageDown', 'PageUp', 'Home', 'End'].includes(e.key)) return;\n const el = listRef.value?.$el;\n if (!el) return;\n if (e.key === 'Home' || e.key === 'End') {\n el.scrollTo({\n top: e.key === 'Home' ? 0 : el.scrollHeight,\n behavior: 'smooth'\n });\n }\n await finishScrolling();\n const children = el.querySelectorAll(':scope > :not(.v-virtual-scroll__spacer)');\n if (e.key === 'PageDown' || e.key === 'Home') {\n const top = el.getBoundingClientRect().top;\n for (const child of children) {\n if (child.getBoundingClientRect().top >= top) {\n child.focus();\n break;\n }\n }\n } else {\n const bottom = el.getBoundingClientRect().bottom;\n for (const child of [...children].reverse()) {\n if (child.getBoundingClientRect().bottom <= bottom) {\n child.focus();\n break;\n }\n }\n }\n }\n return {\n onScrollPassive: onListScroll,\n onKeydown: onListKeydown\n }; // typescript doesn't know about vue's event merging\n}\n//# sourceMappingURL=useScrolling.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VSelect.css\";\n\n// Components\nimport { VDialogTransition } from \"../transitions/index.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VList, VListItem } from \"../VList/index.mjs\";\nimport { VMenu } from \"../VMenu/index.mjs\";\nimport { makeVTextFieldProps, VTextField } from \"../VTextField/VTextField.mjs\";\nimport { VVirtualScroll } from \"../VVirtualScroll/index.mjs\"; // Composables\nimport { useScrolling } from \"./useScrolling.mjs\";\nimport { useForm } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeItemsProps, useItems } from \"../../composables/list-items.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTransitionProps } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';\nimport { checkPrintable, ensureValidVNode, genericComponent, IN_BROWSER, matchesSelector, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n closeText: {\n type: String,\n default: '$vuetify.close'\n },\n openText: {\n type: String,\n default: '$vuetify.open'\n },\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n listProps: {\n type: Object\n },\n menu: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown'\n },\n menuProps: {\n type: Object\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText'\n },\n openOnClear: Boolean,\n itemColor: String,\n ...makeItemsProps({\n itemChildren: false\n })\n}, 'Select');\nexport const makeVSelectProps = propsFactory({\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox'\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({\n transition: {\n component: VDialogTransition\n }\n })\n}, 'VSelect');\nexport const VSelect = genericComponent()({\n name: 'VSelect',\n props: makeVSelectProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:menu': ue => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const vTextFieldRef = ref();\n const vMenuRef = ref();\n const vVirtualScrollRef = ref();\n const _menu = useProxiedModel(props, 'menu');\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;\n _menu.value = v;\n }\n });\n const {\n items,\n transformIn,\n transformOut\n } = useItems(props);\n const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {\n const transformed = transformOut(v);\n return props.multiple ? transformed : transformed[0] ?? null;\n });\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;\n });\n const form = useForm();\n const selectedValues = computed(() => model.value.map(selection => selection.value));\n const isFocused = shallowRef(false);\n const label = computed(() => menu.value ? props.closeText : props.openText);\n let keyboardLookupPrefix = '';\n let keyboardLookupLastTime;\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return items.value.filter(item => !model.value.some(s => props.valueComparator(s, item)));\n }\n return items.value;\n });\n const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);\n const computedMenuProps = computed(() => {\n return {\n ...props.menuProps,\n activatorProps: {\n ...(props.menuProps?.activatorProps || {}),\n 'aria-haspopup': 'listbox' // Set aria-haspopup to 'listbox'\n }\n };\n });\n const listRef = ref();\n const listEvents = useScrolling(listRef, vTextFieldRef);\n function onClear(e) {\n if (props.openOnClear) {\n menu.value = true;\n }\n }\n function onMousedownControl() {\n if (menuDisabled.value) return;\n menu.value = !menu.value;\n }\n function onListKeydown(e) {\n if (checkPrintable(e)) {\n onKeydown(e);\n }\n }\n function onKeydown(e) {\n if (!e.key || props.readonly || form?.isReadonly.value) return;\n if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault();\n }\n if (['Enter', 'ArrowDown', ' '].includes(e.key)) {\n menu.value = true;\n }\n if (['Escape', 'Tab'].includes(e.key)) {\n menu.value = false;\n }\n if (e.key === 'Home') {\n listRef.value?.focus('first');\n } else if (e.key === 'End') {\n listRef.value?.focus('last');\n }\n\n // html select hotkeys\n const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds\n\n if (props.multiple || !checkPrintable(e)) return;\n const now = performance.now();\n if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n keyboardLookupPrefix = '';\n }\n keyboardLookupPrefix += e.key.toLowerCase();\n keyboardLookupLastTime = now;\n const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));\n if (item !== undefined) {\n model.value = [item];\n const index = displayItems.value.indexOf(item);\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n }\n\n /** @param set - null means toggle */\n function select(item) {\n let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (item.props.disabled) return;\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));\n const add = set == null ? !~index : set;\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value];\n value.splice(index, 1);\n model.value = value;\n } else if (add) {\n model.value = [...model.value, item];\n }\n } else {\n const add = set !== false;\n model.value = add ? [item] : [];\n nextTick(() => {\n menu.value = false;\n });\n }\n }\n function onBlur(e) {\n if (!listRef.value?.$el.contains(e.relatedTarget)) {\n menu.value = false;\n }\n }\n function onAfterEnter() {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems();\n }\n }\n function onAfterLeave() {\n if (isFocused.value) {\n vTextFieldRef.value?.focus();\n }\n }\n function onFocusin(e) {\n isFocused.value = true;\n }\n function onModelUpdate(v) {\n if (v == null) model.value = [];else if (matchesSelector(vTextFieldRef.value, ':autofill') || matchesSelector(vTextFieldRef.value, ':-webkit-autofill')) {\n const item = items.value.find(item => item.title === v);\n if (item) {\n select(item);\n }\n } else if (vTextFieldRef.value) {\n vTextFieldRef.value.value = '';\n }\n }\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n });\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return;\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true;\n }\n });\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip);\n const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);\n const isDirty = model.value.length > 0;\n const textFieldProps = VTextField.filterProps(props);\n const placeholder = isDirty || !isFocused.value && props.label && !props.persistentPlaceholder ? undefined : props.placeholder;\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": model.value.map(v => v.props.value).join(', '),\n \"onUpdate:modelValue\": onModelUpdate,\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.externalValue,\n \"counterValue\": counterValue.value,\n \"dirty\": isDirty,\n \"class\": ['v-select', {\n 'v-select--active-menu': menu.value,\n 'v-select--chips': !!props.chips,\n [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-select--selected': model.value.length,\n 'v-select--selection-slot': !!slots.selection\n }, props.class],\n \"style\": props.style,\n \"inputmode\": \"none\",\n \"placeholder\": placeholder,\n \"onClick:clear\": onClear,\n \"onMousedown:control\": onMousedownControl,\n \"onBlur\": onBlur,\n \"onKeydown\": onKeydown,\n \"aria-label\": t(label.value),\n \"title\": t(label.value)\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({\n \"ref\": vMenuRef,\n \"modelValue\": menu.value,\n \"onUpdate:modelValue\": $event => menu.value = $event,\n \"activator\": \"parent\",\n \"contentClass\": \"v-select__content\",\n \"disabled\": menuDisabled.value,\n \"eager\": props.eager,\n \"maxHeight\": 310,\n \"openOnClick\": false,\n \"closeOnContentClick\": false,\n \"transition\": props.transition,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, computedMenuProps.value), {\n default: () => [hasList && _createVNode(VList, _mergeProps({\n \"ref\": listRef,\n \"selected\": selectedValues.value,\n \"selectStrategy\": props.multiple ? 'independent' : 'single-independent',\n \"onMousedown\": e => e.preventDefault(),\n \"onKeydown\": onListKeydown,\n \"onFocusin\": onFocusin,\n \"tabindex\": \"-1\",\n \"aria-live\": \"polite\",\n \"color\": props.itemColor ?? props.color\n }, listEvents, props.listProps), {\n default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {\n \"title\": t(props.noDataText)\n }, null)), _createVNode(VVirtualScroll, {\n \"ref\": vVirtualScrollRef,\n \"renderless\": true,\n \"items\": displayItems.value\n }, {\n default: _ref2 => {\n let {\n item,\n index,\n itemRef\n } = _ref2;\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n onClick: () => select(item, null)\n });\n return slots.item?.({\n item,\n index,\n props: itemProps\n }) ?? _createVNode(VListItem, _mergeProps(itemProps, {\n \"role\": \"option\"\n }), {\n prepend: _ref3 => {\n let {\n isSelected\n } = _ref3;\n return _createVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {\n \"key\": item.value,\n \"modelValue\": isSelected,\n \"ripple\": false,\n \"tabindex\": \"-1\"\n }, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {\n \"image\": item.props.prependAvatar\n }, null), item.props.prependIcon && _createVNode(VIcon, {\n \"icon\": item.props.prependIcon\n }, null)]);\n }\n });\n }\n }), slots['append-item']?.()]\n })]\n }), model.value.map((item, index) => {\n function onChipClose(e) {\n e.stopPropagation();\n e.preventDefault();\n select(item, false);\n }\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n onChipClose(e);\n },\n onMousedown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined\n };\n const hasSlot = hasChips ? !!slots.chip : !!slots.selection;\n const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({\n item,\n index,\n props: slotProps\n }) : slots.selection({\n item,\n index\n })) : undefined;\n if (hasSlot && !slotContent) return undefined;\n return _createVNode(\"div\", {\n \"key\": item.value,\n \"class\": \"v-select__selection\"\n }, [hasChips ? !slots.chip ? _createVNode(VChip, _mergeProps({\n \"key\": \"chip\",\n \"closable\": props.closableChips,\n \"size\": \"small\",\n \"text\": item.title,\n \"disabled\": item.props.disabled\n }, slotProps), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"chip-defaults\",\n \"defaults\": {\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title\n }\n }\n }, {\n default: () => [slotContent]\n }) : slotContent ?? _createVNode(\"span\", {\n \"class\": \"v-select__selection-text\"\n }, [item.title, props.multiple && index < model.value.length - 1 && _createVNode(\"span\", {\n \"class\": \"v-select__selection-comma\"\n }, [_createTextVNode(\",\")])])]);\n })]),\n 'append-inner': function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(_Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? _createVNode(VIcon, {\n \"class\": \"v-select__menu-icon\",\n \"icon\": props.menuIcon\n }, null) : undefined]);\n }\n });\n });\n return forwardRefs({\n isFocused,\n menu,\n select\n }, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VSelect.mjs.map","/* eslint-disable max-statements */\n/* eslint-disable no-labels */\n\n// Utilities\nimport { computed, ref, unref, watchEffect } from 'vue';\nimport { getPropertyFromItem, propsFactory, wrapInArray } from \"../util/index.mjs\"; // Types\n/**\n * - match without highlight\n * - single match (index), length already known\n * - single match (start, end)\n * - multiple matches (start, end), probably shouldn't overlap\n */\n// Composables\nexport const defaultFilter = (value, query, item) => {\n if (value == null || query == null) return -1;\n return value.toString().toLocaleLowerCase().indexOf(query.toString().toLocaleLowerCase());\n};\nexport const makeFilterProps = propsFactory({\n customFilter: Function,\n customKeyFilter: Object,\n filterKeys: [Array, String],\n filterMode: {\n type: String,\n default: 'intersection'\n },\n noFilter: Boolean\n}, 'filter');\nexport function filterItems(items, query, options) {\n const array = [];\n // always ensure we fall back to a functioning filter\n const filter = options?.default ?? defaultFilter;\n const keys = options?.filterKeys ? wrapInArray(options.filterKeys) : false;\n const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length;\n if (!items?.length) return array;\n loop: for (let i = 0; i < items.length; i++) {\n const [item, transformed = item] = wrapInArray(items[i]);\n const customMatches = {};\n const defaultMatches = {};\n let match = -1;\n if ((query || customFiltersLength > 0) && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(transformed);\n for (const key of filterKeys) {\n const value = getPropertyFromItem(transformed, key);\n const keyFilter = options?.customKeyFilter?.[key];\n match = keyFilter ? keyFilter(value, query, item) : filter(value, query, item);\n if (match !== -1 && match !== false) {\n if (keyFilter) customMatches[key] = match;else defaultMatches[key] = match;\n } else if (options?.filterMode === 'every') {\n continue loop;\n }\n }\n } else {\n match = filter(item, query, item);\n if (match !== -1 && match !== false) {\n defaultMatches.title = match;\n }\n }\n const defaultMatchesLength = Object.keys(defaultMatches).length;\n const customMatchesLength = Object.keys(customMatches).length;\n if (!defaultMatchesLength && !customMatchesLength) continue;\n if (options?.filterMode === 'union' && customMatchesLength !== customFiltersLength && !defaultMatchesLength) continue;\n if (options?.filterMode === 'intersection' && (customMatchesLength !== customFiltersLength || !defaultMatchesLength)) continue;\n }\n array.push({\n index: i,\n matches: {\n ...defaultMatches,\n ...customMatches\n }\n });\n }\n return array;\n}\nexport function useFilter(props, items, query, options) {\n const filteredItems = ref([]);\n const filteredMatches = ref(new Map());\n const transformedItems = computed(() => options?.transform ? unref(items).map(item => [item, options.transform(item)]) : unref(items));\n watchEffect(() => {\n const _query = typeof query === 'function' ? query() : unref(query);\n const strQuery = typeof _query !== 'string' && typeof _query !== 'number' ? '' : String(_query);\n const results = filterItems(transformedItems.value, strQuery, {\n customKeyFilter: {\n ...props.customKeyFilter,\n ...unref(options?.customKeyFilter)\n },\n default: props.customFilter,\n filterKeys: props.filterKeys,\n filterMode: props.filterMode,\n noFilter: props.noFilter\n });\n const originalItems = unref(items);\n const _filteredItems = [];\n const _filteredMatches = new Map();\n results.forEach(_ref => {\n let {\n index,\n matches\n } = _ref;\n const item = originalItems[index];\n _filteredItems.push(item);\n _filteredMatches.set(item.value, matches);\n });\n filteredItems.value = _filteredItems;\n filteredMatches.value = _filteredMatches;\n });\n function getMatches(item) {\n return filteredMatches.value.get(item.value);\n }\n return {\n filteredItems,\n filteredMatches,\n getMatches\n };\n}\n//# sourceMappingURL=filter.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VAutocomplete.css\";\n\n// Components\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VList, VListItem } from \"../VList/index.mjs\";\nimport { VMenu } from \"../VMenu/index.mjs\";\nimport { makeSelectProps } from \"../VSelect/VSelect.mjs\";\nimport { makeVTextFieldProps, VTextField } from \"../VTextField/VTextField.mjs\";\nimport { VVirtualScroll } from \"../VVirtualScroll/index.mjs\"; // Composables\nimport { useScrolling } from \"../VSelect/useScrolling.mjs\";\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { useForm } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useItems } from \"../../composables/list-items.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTransitionProps } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';\nimport { checkPrintable, ensureValidVNode, genericComponent, IN_BROWSER, matchesSelector, noop, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nfunction highlightResult(text, matches, length) {\n if (matches == null) return text;\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented');\n return typeof matches === 'number' && ~matches ? _createVNode(_Fragment, null, [_createVNode(\"span\", {\n \"class\": \"v-autocomplete__unmask\"\n }, [text.substr(0, matches)]), _createVNode(\"span\", {\n \"class\": \"v-autocomplete__mask\"\n }, [text.substr(matches, length)]), _createVNode(\"span\", {\n \"class\": \"v-autocomplete__unmask\"\n }, [text.substr(matches + length)])]) : text;\n}\nexport const makeVAutocompleteProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String]\n },\n clearOnSelect: Boolean,\n search: String,\n ...makeFilterProps({\n filterKeys: ['title']\n }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox'\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({\n transition: false\n })\n}, 'VAutocomplete');\nexport const VAutocomplete = genericComponent()({\n name: 'VAutocomplete',\n props: makeVAutocompleteProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:search': value => true,\n 'update:modelValue': value => true,\n 'update:menu': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const vTextFieldRef = ref();\n const isFocused = shallowRef(false);\n const isPristine = shallowRef(true);\n const listHasFocus = shallowRef(false);\n const vMenuRef = ref();\n const vVirtualScrollRef = ref();\n const _menu = useProxiedModel(props, 'menu');\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;\n _menu.value = v;\n }\n });\n const selectionIndex = shallowRef(-1);\n const color = computed(() => vTextFieldRef.value?.color);\n const label = computed(() => menu.value ? props.closeText : props.openText);\n const {\n items,\n transformIn,\n transformOut\n } = useItems(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(color);\n const search = useProxiedModel(props, 'search', '');\n const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {\n const transformed = transformOut(v);\n return props.multiple ? transformed : transformed[0] ?? null;\n });\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;\n });\n const form = useForm();\n const {\n filteredItems,\n getMatches\n } = useFilter(props, items, () => isPristine.value ? '' : search.value);\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));\n }\n return filteredItems.value;\n });\n const hasChips = computed(() => !!(props.chips || slots.chip));\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);\n const selectedValues = computed(() => model.value.map(selection => selection.props.value));\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;\n return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;\n });\n const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);\n const listRef = ref();\n const listEvents = useScrolling(listRef, vTextFieldRef);\n function onClear(e) {\n if (props.openOnClear) {\n menu.value = true;\n }\n search.value = '';\n }\n function onMousedownControl() {\n if (menuDisabled.value) return;\n menu.value = true;\n }\n function onMousedownMenuIcon(e) {\n if (menuDisabled.value) return;\n if (isFocused.value) {\n e.preventDefault();\n e.stopPropagation();\n }\n menu.value = !menu.value;\n }\n function onListKeydown(e) {\n if (checkPrintable(e)) {\n vTextFieldRef.value?.focus();\n }\n }\n function onKeydown(e) {\n if (props.readonly || form?.isReadonly.value) return;\n const selectionStart = vTextFieldRef.value.selectionStart;\n const length = model.value.length;\n if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n }\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true;\n }\n if (['Escape'].includes(e.key)) {\n menu.value = false;\n }\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key) && !model.value.some(_ref2 => {\n let {\n value\n } = _ref2;\n return value === displayItems.value[0].value;\n })) {\n select(displayItems.value[0]);\n }\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next');\n }\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);\n if (~selectionIndex.value) {\n const originalSelectionIndex = selectionIndex.value;\n select(model.value[selectionIndex.value], false);\n selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1;\n }\n }\n if (!props.multiple) return;\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return;\n const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;\n if (model.value[prev]) {\n selectionIndex.value = prev;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length);\n }\n }\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return;\n const next = selectionIndex.value + 1;\n if (model.value[next]) {\n selectionIndex.value = next;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(0, 0);\n }\n }\n }\n function onChange(e) {\n if (matchesSelector(vTextFieldRef.value, ':autofill') || matchesSelector(vTextFieldRef.value, ':-webkit-autofill')) {\n const item = items.value.find(item => item.title === e.target.value);\n if (item) {\n select(item);\n }\n }\n }\n function onAfterEnter() {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems();\n }\n }\n function onAfterLeave() {\n if (isFocused.value) {\n isPristine.value = true;\n vTextFieldRef.value?.focus();\n }\n }\n function onFocusin(e) {\n isFocused.value = true;\n setTimeout(() => {\n listHasFocus.value = true;\n });\n }\n function onFocusout(e) {\n listHasFocus.value = false;\n }\n function onUpdateModelValue(v) {\n if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];\n }\n const isSelecting = shallowRef(false);\n\n /** @param set - null means toggle */\n function select(item) {\n let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (!item || item.props.disabled) return;\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));\n const add = set == null ? !~index : set;\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value];\n value.splice(index, 1);\n model.value = value;\n } else if (add) {\n model.value = [...model.value, item];\n }\n if (props.clearOnSelect) {\n search.value = '';\n }\n } else {\n const add = set !== false;\n model.value = add ? [item] : [];\n search.value = add && !hasSelectionSlot.value ? item.title : '';\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false;\n isPristine.value = true;\n });\n }\n }\n watch(isFocused, (val, oldVal) => {\n if (val === oldVal) return;\n if (val) {\n isSelecting.value = true;\n search.value = props.multiple || hasSelectionSlot.value ? '' : String(model.value.at(-1)?.props.title ?? '');\n isPristine.value = true;\n nextTick(() => isSelecting.value = false);\n } else {\n if (!props.multiple && search.value == null) model.value = [];\n menu.value = false;\n if (!model.value.some(_ref3 => {\n let {\n title\n } = _ref3;\n return title === search.value;\n })) search.value = '';\n selectionIndex.value = -1;\n }\n });\n watch(search, val => {\n if (!isFocused.value || isSelecting.value) return;\n if (val) menu.value = true;\n isPristine.value = !val;\n });\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(item => model.value.some(s => item.value === s.value));\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n });\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return;\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true;\n }\n });\n useRender(() => {\n const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);\n const isDirty = model.value.length > 0;\n const textFieldProps = VTextField.filterProps(props);\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": search.value,\n \"onUpdate:modelValue\": [$event => search.value = $event, onUpdateModelValue],\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.externalValue,\n \"counterValue\": counterValue.value,\n \"dirty\": isDirty,\n \"onChange\": onChange,\n \"class\": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {\n 'v-autocomplete--active-menu': menu.value,\n 'v-autocomplete--chips': !!props.chips,\n 'v-autocomplete--selection-slot': !!hasSelectionSlot.value,\n 'v-autocomplete--selecting-index': selectionIndex.value > -1\n }, props.class],\n \"style\": props.style,\n \"readonly\": props.readonly,\n \"placeholder\": isDirty ? undefined : props.placeholder,\n \"onClick:clear\": onClear,\n \"onMousedown:control\": onMousedownControl,\n \"onKeydown\": onKeydown\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({\n \"ref\": vMenuRef,\n \"modelValue\": menu.value,\n \"onUpdate:modelValue\": $event => menu.value = $event,\n \"activator\": \"parent\",\n \"contentClass\": \"v-autocomplete__content\",\n \"disabled\": menuDisabled.value,\n \"eager\": props.eager,\n \"maxHeight\": 310,\n \"openOnClick\": false,\n \"closeOnContentClick\": false,\n \"transition\": props.transition,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, props.menuProps), {\n default: () => [hasList && _createVNode(VList, _mergeProps({\n \"ref\": listRef,\n \"selected\": selectedValues.value,\n \"selectStrategy\": props.multiple ? 'independent' : 'single-independent',\n \"onMousedown\": e => e.preventDefault(),\n \"onKeydown\": onListKeydown,\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"tabindex\": \"-1\",\n \"aria-live\": \"polite\",\n \"color\": props.itemColor ?? props.color\n }, listEvents, props.listProps), {\n default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {\n \"title\": t(props.noDataText)\n }, null)), _createVNode(VVirtualScroll, {\n \"ref\": vVirtualScrollRef,\n \"renderless\": true,\n \"items\": displayItems.value\n }, {\n default: _ref4 => {\n let {\n item,\n index,\n itemRef\n } = _ref4;\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n active: highlightFirst.value && index === 0 ? true : undefined,\n onClick: () => select(item, null)\n });\n return slots.item?.({\n item,\n index,\n props: itemProps\n }) ?? _createVNode(VListItem, _mergeProps(itemProps, {\n \"role\": \"option\"\n }), {\n prepend: _ref5 => {\n let {\n isSelected\n } = _ref5;\n return _createVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {\n \"key\": item.value,\n \"modelValue\": isSelected,\n \"ripple\": false,\n \"tabindex\": \"-1\"\n }, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {\n \"image\": item.props.prependAvatar\n }, null), item.props.prependIcon && _createVNode(VIcon, {\n \"icon\": item.props.prependIcon\n }, null)]);\n },\n title: () => {\n return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);\n }\n });\n }\n }), slots['append-item']?.()]\n })]\n }), model.value.map((item, index) => {\n function onChipClose(e) {\n e.stopPropagation();\n e.preventDefault();\n select(item, false);\n }\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n onChipClose(e);\n },\n onMousedown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined\n };\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;\n const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({\n item,\n index,\n props: slotProps\n }) : slots.selection({\n item,\n index\n })) : undefined;\n if (hasSlot && !slotContent) return undefined;\n return _createVNode(\"div\", {\n \"key\": item.value,\n \"class\": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],\n \"style\": index === selectionIndex.value ? textColorStyles.value : {}\n }, [hasChips.value ? !slots.chip ? _createVNode(VChip, _mergeProps({\n \"key\": \"chip\",\n \"closable\": props.closableChips,\n \"size\": \"small\",\n \"text\": item.title,\n \"disabled\": item.props.disabled\n }, slotProps), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"chip-defaults\",\n \"defaults\": {\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title\n }\n }\n }, {\n default: () => [slotContent]\n }) : slotContent ?? _createVNode(\"span\", {\n \"class\": \"v-autocomplete__selection-text\"\n }, [item.title, props.multiple && index < model.value.length - 1 && _createVNode(\"span\", {\n \"class\": \"v-autocomplete__selection-comma\"\n }, [_createTextVNode(\",\")])])]);\n })]),\n 'append-inner': function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(_Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? _createVNode(VIcon, {\n \"class\": \"v-autocomplete__menu-icon\",\n \"icon\": props.menuIcon,\n \"onMousedown\": onMousedownMenuIcon,\n \"onClick\": noop,\n \"aria-label\": t(label.value),\n \"title\": t(label.value),\n \"tabindex\": \"-1\"\n }, null) : undefined]);\n }\n });\n });\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n filteredItems,\n select\n }, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VAutocomplete.mjs.map","import { withDirectives as _withDirectives, mergeProps as _mergeProps, vShow as _vShow, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBadge.css\";\n\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, useTheme } from \"../../composables/theme.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, pickWithRest, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBadgeProps = propsFactory({\n bordered: Boolean,\n color: String,\n content: [Number, String],\n dot: Boolean,\n floating: Boolean,\n icon: IconValue,\n inline: Boolean,\n label: {\n type: String,\n default: '$vuetify.badge'\n },\n max: [Number, String],\n modelValue: {\n type: Boolean,\n default: true\n },\n offsetX: [Number, String],\n offsetY: [Number, String],\n textColor: String,\n ...makeComponentProps(),\n ...makeLocationProps({\n location: 'top end'\n }),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeTransitionProps({\n transition: 'scale-rotate-transition'\n })\n}, 'VBadge');\nexport const VBadge = genericComponent()({\n name: 'VBadge',\n inheritAttrs: false,\n props: makeVBadgeProps(),\n setup(props, ctx) {\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n roundedClasses\n } = useRounded(props);\n const {\n t\n } = useLocale();\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'textColor'));\n const {\n themeClasses\n } = useTheme();\n const {\n locationStyles\n } = useLocation(props, true, side => {\n const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;\n return base + (['top', 'bottom'].includes(side) ? +(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? +(props.offsetX ?? 0) : 0);\n });\n useRender(() => {\n const value = Number(props.content);\n const content = !props.max || isNaN(value) ? props.content : value <= +props.max ? value : `${props.max}+`;\n const [badgeAttrs, attrs] = pickWithRest(ctx.attrs, ['aria-atomic', 'aria-label', 'aria-live', 'role', 'title']);\n return _createVNode(props.tag, _mergeProps({\n \"class\": ['v-badge', {\n 'v-badge--bordered': props.bordered,\n 'v-badge--dot': props.dot,\n 'v-badge--floating': props.floating,\n 'v-badge--inline': props.inline\n }, props.class]\n }, attrs, {\n \"style\": props.style\n }), {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-badge__wrapper\"\n }, [ctx.slots.default?.(), _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [_withDirectives(_createVNode(\"span\", _mergeProps({\n \"class\": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],\n \"style\": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],\n \"aria-atomic\": \"true\",\n \"aria-label\": t(props.label, value),\n \"aria-live\": \"polite\",\n \"role\": \"status\"\n }, badgeAttrs), [props.dot ? undefined : ctx.slots.badge ? ctx.slots.badge?.() : props.icon ? _createVNode(VIcon, {\n \"icon\": props.icon\n }, null) : content]), [[_vShow, props.modelValue]])]\n })])]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBadge.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBannerActionsProps = propsFactory({\n color: String,\n density: String,\n ...makeComponentProps()\n}, 'VBannerActions');\nexport const VBannerActions = genericComponent()({\n name: 'VBannerActions',\n props: makeVBannerActionsProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n provideDefaults({\n VBtn: {\n color: props.color,\n density: props.density,\n slim: true,\n variant: 'text'\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-banner-actions', props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VBannerActions.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VBannerText = createSimpleFunctional('v-banner-text');\n//# sourceMappingURL=VBannerText.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBanner.css\";\n\n// Components\nimport { VBannerActions } from \"./VBannerActions.mjs\";\nimport { VBannerText } from \"./VBannerText.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBannerProps = propsFactory({\n avatar: String,\n bgColor: String,\n color: String,\n icon: IconValue,\n lines: String,\n stacked: Boolean,\n sticky: Boolean,\n text: String,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeDisplayProps({\n mobile: null\n }),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VBanner');\nexport const VBanner = genericComponent()({\n name: 'VBanner',\n props: makeVBannerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'bgColor');\n const {\n borderClasses\n } = useBorder(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n themeClasses\n } = provideTheme(props);\n const color = toRef(props, 'color');\n const density = toRef(props, 'density');\n provideDefaults({\n VBannerActions: {\n color,\n density\n }\n });\n useRender(() => {\n const hasText = !!(props.text || slots.text);\n const hasPrependMedia = !!(props.avatar || props.icon);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n return _createVNode(props.tag, {\n \"class\": ['v-banner', {\n 'v-banner--stacked': props.stacked || mobile.value,\n 'v-banner--sticky': props.sticky,\n [`v-banner--${props.lines}-line`]: !!props.lines\n }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, displayClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style],\n \"role\": \"banner\"\n }, {\n default: () => [hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-banner__prepend\"\n }, [!slots.prepend ? _createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"color\": color.value,\n \"density\": density.value,\n \"icon\": props.icon,\n \"image\": props.avatar\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n color: color.value,\n density: density.value,\n icon: props.icon,\n image: props.avatar\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-banner__content\"\n }, [hasText && _createVNode(VBannerText, {\n \"key\": \"text\"\n }, {\n default: () => [slots.text?.() ?? props.text]\n }), slots.default?.()]), slots.actions && _createVNode(VBannerActions, {\n \"key\": \"actions\"\n }, slots.actions)]\n });\n });\n }\n});\n//# sourceMappingURL=VBanner.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBottomNavigation.css\";\n\n// Components\nimport { VBtnToggleSymbol } from \"../VBtnToggle/VBtnToggle.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, useTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBottomNavigationProps = propsFactory({\n baseColor: String,\n bgColor: String,\n color: String,\n grow: Boolean,\n mode: {\n type: String,\n validator: v => !v || ['horizontal', 'shift'].includes(v)\n },\n height: {\n type: [Number, String],\n default: 56\n },\n active: {\n type: Boolean,\n default: true\n },\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeLayoutItemProps({\n name: 'bottom-navigation'\n }),\n ...makeTagProps({\n tag: 'header'\n }),\n ...makeGroupProps({\n selectedClass: 'v-btn--selected'\n }),\n ...makeThemeProps()\n}, 'VBottomNavigation');\nexport const VBottomNavigation = genericComponent()({\n name: 'VBottomNavigation',\n props: makeVBottomNavigationProps(),\n emits: {\n 'update:active': value => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = useTheme();\n const {\n borderClasses\n } = useBorder(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n densityClasses\n } = useDensity(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n ssrBootStyles\n } = useSsrBoot();\n const height = computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));\n const isActive = useProxiedModel(props, 'active', props.active);\n const {\n layoutItemStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: computed(() => 'bottom'),\n layoutSize: computed(() => isActive.value ? height.value : 0),\n elementSize: height,\n active: isActive,\n absolute: toRef(props, 'absolute')\n });\n useGroup(props, VBtnToggleSymbol);\n provideDefaults({\n VBtn: {\n baseColor: toRef(props, 'baseColor'),\n color: toRef(props, 'color'),\n density: toRef(props, 'density'),\n stacked: computed(() => props.mode !== 'horizontal'),\n variant: 'text'\n }\n }, {\n scoped: true\n });\n useRender(() => {\n return _createVNode(props.tag, {\n \"class\": ['v-bottom-navigation', {\n 'v-bottom-navigation--active': isActive.value,\n 'v-bottom-navigation--grow': props.grow,\n 'v-bottom-navigation--shift': props.mode === 'shift'\n }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, layoutItemStyles.value, {\n height: convertToUnit(height.value)\n }, ssrBootStyles.value, props.style]\n }, {\n default: () => [slots.default && _createVNode(\"div\", {\n \"class\": \"v-bottom-navigation__content\"\n }, [slots.default()])]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBottomNavigation.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDialog.css\";\n\n// Components\nimport { VDialogTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\"; // Composables\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\"; // Utilities\nimport { mergeProps, nextTick, ref, watch } from 'vue';\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDialogProps = propsFactory({\n fullscreen: Boolean,\n retainFocus: {\n type: Boolean,\n default: true\n },\n scrollable: Boolean,\n ...makeVOverlayProps({\n origin: 'center center',\n scrollStrategy: 'block',\n transition: {\n component: VDialogTransition\n },\n zIndex: 2400\n })\n}, 'VDialog');\nexport const VDialog = genericComponent()({\n name: 'VDialog',\n props: makeVDialogProps(),\n emits: {\n 'update:modelValue': value => true,\n afterEnter: () => true,\n afterLeave: () => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n scopeId\n } = useScopeId();\n const overlay = ref();\n function onFocusin(e) {\n const before = e.relatedTarget;\n const after = e.target;\n if (before !== after && overlay.value?.contentEl &&\n // We're the topmost dialog\n overlay.value?.globalTop &&\n // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)) {\n const focusable = focusableChildren(overlay.value.contentEl);\n if (!focusable.length) return;\n const firstElement = focusable[0];\n const lastElement = focusable[focusable.length - 1];\n if (before === firstElement) {\n lastElement.focus();\n } else {\n firstElement.focus();\n }\n }\n }\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n val ? document.addEventListener('focusin', onFocusin) : document.removeEventListener('focusin', onFocusin);\n }, {\n immediate: true\n });\n }\n function onAfterEnter() {\n emit('afterEnter');\n if (overlay.value?.contentEl && !overlay.value.contentEl.contains(document.activeElement)) {\n overlay.value.contentEl.focus({\n preventScroll: true\n });\n }\n }\n function onAfterLeave() {\n emit('afterLeave');\n }\n watch(isActive, async val => {\n if (!val) {\n await nextTick();\n overlay.value.activatorEl?.focus({\n preventScroll: true\n });\n }\n });\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n const activatorProps = mergeProps({\n 'aria-haspopup': 'dialog'\n }, props.activatorProps);\n const contentProps = mergeProps({\n tabindex: -1\n }, props.contentProps);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-dialog', {\n 'v-dialog--fullscreen': props.fullscreen,\n 'v-dialog--scrollable': props.scrollable\n }, props.class],\n \"style\": props.style\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"aria-modal\": \"true\",\n \"activatorProps\": activatorProps,\n \"contentProps\": contentProps,\n \"role\": \"dialog\",\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, scopeId), {\n activator: slots.activator,\n default: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(VDefaultsProvider, {\n \"root\": \"VDialog\"\n }, {\n default: () => [slots.default?.(...args)]\n });\n }\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VDialog.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VBottomSheet.css\";\n\n// Components\nimport { makeVDialogProps, VDialog } from \"../VDialog/VDialog.mjs\"; // Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBottomSheetProps = propsFactory({\n inset: Boolean,\n ...makeVDialogProps({\n transition: 'bottom-sheet-transition'\n })\n}, 'VBottomSheet');\nexport const VBottomSheet = genericComponent()({\n name: 'VBottomSheet',\n props: makeVBottomSheetProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n useRender(() => {\n const dialogProps = VDialog.filterProps(props);\n return _createVNode(VDialog, _mergeProps(dialogProps, {\n \"contentClass\": ['v-bottom-sheet__content', props.contentClass],\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"class\": ['v-bottom-sheet', {\n 'v-bottom-sheet--inset': props.inset\n }, props.class],\n \"style\": props.style\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VBottomSheet.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBreadcrumbsDividerProps = propsFactory({\n divider: [Number, String],\n ...makeComponentProps()\n}, 'VBreadcrumbsDivider');\nexport const VBreadcrumbsDivider = genericComponent()({\n name: 'VBreadcrumbsDivider',\n props: makeVBreadcrumbsDividerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(\"li\", {\n \"class\": ['v-breadcrumbs-divider', props.class],\n \"style\": props.style\n }, [slots?.default?.() ?? props.divider]));\n return {};\n }\n});\n//# sourceMappingURL=VBreadcrumbsDivider.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBreadcrumbsItemProps = propsFactory({\n active: Boolean,\n activeClass: String,\n activeColor: String,\n color: String,\n disabled: Boolean,\n title: String,\n ...makeComponentProps(),\n ...makeRouterProps(),\n ...makeTagProps({\n tag: 'li'\n })\n}, 'VBreadcrumbsItem');\nexport const VBreadcrumbsItem = genericComponent()({\n name: 'VBreadcrumbsItem',\n props: makeVBreadcrumbsItemProps(),\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n const link = useLink(props, attrs);\n const isActive = computed(() => props.active || link.isActive?.value);\n const color = computed(() => isActive.value ? props.activeColor : props.color);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(color);\n useRender(() => {\n return _createVNode(props.tag, {\n \"class\": ['v-breadcrumbs-item', {\n 'v-breadcrumbs-item--active': isActive.value,\n 'v-breadcrumbs-item--disabled': props.disabled,\n [`${props.activeClass}`]: isActive.value && props.activeClass\n }, textColorClasses.value, props.class],\n \"style\": [textColorStyles.value, props.style],\n \"aria-current\": isActive.value ? 'page' : undefined\n }, {\n default: () => [!link.isLink.value ? slots.default?.() ?? props.title : _createVNode(\"a\", _mergeProps({\n \"class\": \"v-breadcrumbs-item--link\",\n \"onClick\": link.navigate\n }, link.linkProps), [slots.default?.() ?? props.title])]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBreadcrumbsItem.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBreadcrumbs.css\";\n\n// Components\nimport { VBreadcrumbsDivider } from \"./VBreadcrumbsDivider.mjs\";\nimport { VBreadcrumbsItem } from \"./VBreadcrumbsItem.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBreadcrumbsProps = propsFactory({\n activeClass: String,\n activeColor: String,\n bgColor: String,\n color: String,\n disabled: Boolean,\n divider: {\n type: String,\n default: '/'\n },\n icon: IconValue,\n items: {\n type: Array,\n default: () => []\n },\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeRoundedProps(),\n ...makeTagProps({\n tag: 'ul'\n })\n}, 'VBreadcrumbs');\nexport const VBreadcrumbs = genericComponent()({\n name: 'VBreadcrumbs',\n props: makeVBreadcrumbsProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n densityClasses\n } = useDensity(props);\n const {\n roundedClasses\n } = useRounded(props);\n provideDefaults({\n VBreadcrumbsDivider: {\n divider: toRef(props, 'divider')\n },\n VBreadcrumbsItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor: toRef(props, 'activeColor'),\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled')\n }\n });\n const items = computed(() => props.items.map(item => {\n return typeof item === 'string' ? {\n item: {\n title: item\n },\n raw: item\n } : {\n item,\n raw: item\n };\n }));\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.icon);\n return _createVNode(props.tag, {\n \"class\": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, props.style]\n }, {\n default: () => [hasPrepend && _createVNode(\"li\", {\n \"key\": \"prepend\",\n \"class\": \"v-breadcrumbs__prepend\"\n }, [!slots.prepend ? _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"start\": true,\n \"icon\": props.icon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !props.icon,\n \"defaults\": {\n VIcon: {\n icon: props.icon,\n start: true\n }\n }\n }, slots.prepend)]), items.value.map((_ref2, index, array) => {\n let {\n item,\n raw\n } = _ref2;\n return _createVNode(_Fragment, null, [slots.item?.({\n item,\n index\n }) ?? _createVNode(VBreadcrumbsItem, _mergeProps({\n \"key\": index,\n \"disabled\": index >= array.length - 1\n }, typeof item === 'string' ? {\n title: item\n } : item), {\n default: slots.title ? () => slots.title?.({\n item,\n index\n }) : undefined\n }), index < array.length - 1 && _createVNode(VBreadcrumbsDivider, null, {\n default: slots.divider ? () => slots.divider?.({\n item: raw,\n index\n }) : undefined\n })]);\n }), slots.default?.()]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBreadcrumbs.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\"; // Utilities\nimport { genericComponent, useRender } from \"../../util/index.mjs\";\nexport const VCardActions = genericComponent()({\n name: 'VCardActions',\n props: makeComponentProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n provideDefaults({\n VBtn: {\n slim: true,\n variant: 'text'\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-card-actions', props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VCardActions.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVCardSubtitleProps = propsFactory({\n opacity: [Number, String],\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VCardSubtitle');\nexport const VCardSubtitle = genericComponent()({\n name: 'VCardSubtitle',\n props: makeVCardSubtitleProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-card-subtitle', props.class],\n \"style\": [{\n '--v-card-subtitle-opacity': props.opacity\n }, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VCardSubtitle.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VCardTitle = createSimpleFunctional('v-card-title');\n//# sourceMappingURL=VCardTitle.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Components\nimport { VCardSubtitle } from \"./VCardSubtitle.mjs\";\nimport { VCardTitle } from \"./VCardTitle.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeCardItemProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n prependAvatar: String,\n prependIcon: IconValue,\n subtitle: [String, Number],\n title: [String, Number],\n ...makeComponentProps(),\n ...makeDensityProps()\n}, 'VCardItem');\nexport const VCardItem = genericComponent()({\n name: 'VCardItem',\n props: makeCardItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);\n const hasAppend = !!(hasAppendMedia || slots.append);\n const hasTitle = !!(props.title != null || slots.title);\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle);\n return _createVNode(\"div\", {\n \"class\": ['v-card-item', props.class],\n \"style\": props.style\n }, [hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-card-item__prepend\"\n }, [!slots.prepend ? _createVNode(_Fragment, null, [props.prependAvatar && _createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"density\": props.density,\n \"image\": props.prependAvatar\n }, null), props.prependIcon && _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"density\": props.density,\n \"icon\": props.prependIcon\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.prependAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-card-item__content\"\n }, [hasTitle && _createVNode(VCardTitle, {\n \"key\": \"title\"\n }, {\n default: () => [slots.title?.() ?? props.title]\n }), hasSubtitle && _createVNode(VCardSubtitle, {\n \"key\": \"subtitle\"\n }, {\n default: () => [slots.subtitle?.() ?? props.subtitle]\n }), slots.default?.()]), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-card-item__append\"\n }, [!slots.append ? _createVNode(_Fragment, null, [props.appendIcon && _createVNode(VIcon, {\n \"key\": \"append-icon\",\n \"density\": props.density,\n \"icon\": props.appendIcon\n }, null), props.appendAvatar && _createVNode(VAvatar, {\n \"key\": \"append-avatar\",\n \"density\": props.density,\n \"image\": props.appendAvatar\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !hasAppendMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.appendAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon\n }\n }\n }, slots.append)])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VCardItem.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVCardTextProps = propsFactory({\n opacity: [Number, String],\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VCardText');\nexport const VCardText = genericComponent()({\n name: 'VCardText',\n props: makeVCardTextProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-card-text', props.class],\n \"style\": [{\n '--v-card-text-opacity': props.opacity\n }, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VCardText.mjs.map","import { withDirectives as _withDirectives, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n/* eslint-disable complexity */\n\n// Styles\nimport \"./VCard.css\";\n\n// Components\nimport { VCardActions } from \"./VCardActions.mjs\";\nimport { VCardItem } from \"./VCardItem.mjs\";\nimport { VCardText } from \"./VCardText.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { LoaderSlot, makeLoaderProps, useLoader } from \"../../composables/loader.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCardProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n image: String,\n link: {\n type: Boolean,\n default: undefined\n },\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n subtitle: [String, Number],\n text: [String, Number],\n title: [String, Number],\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'elevated'\n })\n}, 'VCard');\nexport const VCard = genericComponent()({\n name: 'VCard',\n directives: {\n Ripple\n },\n props: makeVCardProps(),\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n loaderClasses\n } = useLoader(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const link = useLink(props, attrs);\n const isLink = computed(() => props.link !== false && link.isLink.value);\n const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value));\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag;\n const hasTitle = !!(slots.title || props.title != null);\n const hasSubtitle = !!(slots.subtitle || props.subtitle != null);\n const hasHeader = hasTitle || hasSubtitle;\n const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);\n const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);\n const hasImage = !!(slots.image || props.image);\n const hasCardItem = hasHeader || hasPrepend || hasAppend;\n const hasText = !!(slots.text || props.text != null);\n return _withDirectives(_createVNode(Tag, _mergeProps({\n \"class\": ['v-card', {\n 'v-card--disabled': props.disabled,\n 'v-card--flat': props.flat,\n 'v-card--hover': props.hover && !(props.disabled || props.flat),\n 'v-card--link': isClickable.value\n }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],\n \"onClick\": isClickable.value && link.navigate,\n \"tabindex\": props.disabled ? -1 : undefined\n }, link.linkProps), {\n default: () => [hasImage && _createVNode(\"div\", {\n \"key\": \"image\",\n \"class\": \"v-card__image\"\n }, [!slots.image ? _createVNode(VImg, {\n \"key\": \"image-img\",\n \"cover\": true,\n \"src\": props.image\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"image-defaults\",\n \"disabled\": !props.image,\n \"defaults\": {\n VImg: {\n cover: true,\n src: props.image\n }\n }\n }, slots.image)]), _createVNode(LoaderSlot, {\n \"name\": \"v-card\",\n \"active\": !!props.loading,\n \"color\": typeof props.loading === 'boolean' ? undefined : props.loading\n }, {\n default: slots.loader\n }), hasCardItem && _createVNode(VCardItem, {\n \"key\": \"item\",\n \"prependAvatar\": props.prependAvatar,\n \"prependIcon\": props.prependIcon,\n \"title\": props.title,\n \"subtitle\": props.subtitle,\n \"appendAvatar\": props.appendAvatar,\n \"appendIcon\": props.appendIcon\n }, {\n default: slots.item,\n prepend: slots.prepend,\n title: slots.title,\n subtitle: slots.subtitle,\n append: slots.append\n }), hasText && _createVNode(VCardText, {\n \"key\": \"text\"\n }, {\n default: () => [slots.text?.() ?? props.text]\n }), slots.default?.(), slots.actions && _createVNode(VCardActions, null, {\n default: slots.actions\n }), genOverlays(isClickable.value, 'v-card')]\n }), [[_resolveDirective(\"ripple\"), isClickable.value && props.ripple]]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VCard.mjs.map","// Utilities\nimport { keys } from \"../../util/index.mjs\"; // Types\nconst handleGesture = wrapper => {\n const {\n touchstartX,\n touchendX,\n touchstartY,\n touchendY\n } = wrapper;\n const dirRatio = 0.5;\n const minDistance = 16;\n wrapper.offsetX = touchendX - touchstartX;\n wrapper.offsetY = touchendY - touchstartY;\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);\n wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);\n }\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);\n wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);\n }\n};\nfunction touchstart(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchstartX = touch.clientX;\n wrapper.touchstartY = touch.clientY;\n wrapper.start?.({\n originalEvent: event,\n ...wrapper\n });\n}\nfunction touchend(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchendX = touch.clientX;\n wrapper.touchendY = touch.clientY;\n wrapper.end?.({\n originalEvent: event,\n ...wrapper\n });\n handleGesture(wrapper);\n}\nfunction touchmove(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchmoveX = touch.clientX;\n wrapper.touchmoveY = touch.clientY;\n wrapper.move?.({\n originalEvent: event,\n ...wrapper\n });\n}\nfunction createHandlers() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end\n };\n return {\n touchstart: e => touchstart(e, wrapper),\n touchend: e => touchend(e, wrapper),\n touchmove: e => touchmove(e, wrapper)\n };\n}\nfunction mounted(el, binding) {\n const value = binding.value;\n const target = value?.parent ? el.parentElement : el;\n const options = value?.options ?? {\n passive: true\n };\n const uid = binding.instance?.$.uid; // TODO: use custom uid generator\n\n if (!target || !uid) return;\n const handlers = createHandlers(binding.value);\n target._touchHandlers = target._touchHandlers ?? Object.create(null);\n target._touchHandlers[uid] = handlers;\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName], options);\n });\n}\nfunction unmounted(el, binding) {\n const target = binding.value?.parent ? el.parentElement : el;\n const uid = binding.instance?.$.uid;\n if (!target?._touchHandlers || !uid) return;\n const handlers = target._touchHandlers[uid];\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName]);\n });\n delete target._touchHandlers[uid];\n}\nexport const Touch = {\n mounted,\n unmounted\n};\nexport default Touch;\n//# sourceMappingURL=index.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VWindow.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useGroup } from \"../../composables/group.mjs\";\nimport { useLocale, useRtl } from \"../../composables/locale.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Directives\nimport { Touch } from \"../../directives/touch/index.mjs\"; // Utilities\nimport { computed, provide, ref, shallowRef, watch } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VWindowSymbol = Symbol.for('vuetify:v-window');\nexport const VWindowGroupSymbol = Symbol.for('vuetify:v-window-group');\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object],\n default: '$next'\n },\n prevIcon: {\n type: [Boolean, String, Function, Object],\n default: '$prev'\n },\n reverse: Boolean,\n showArrows: {\n type: [Boolean, String],\n validator: v => typeof v === 'boolean' || v === 'hover'\n },\n touch: {\n type: [Object, Boolean],\n default: undefined\n },\n direction: {\n type: String,\n default: 'horizontal'\n },\n modelValue: null,\n disabled: Boolean,\n selectedClass: {\n type: String,\n default: 'v-window-item--active'\n },\n // TODO: mandatory should probably not be exposed but do this for now\n mandatory: {\n type: [Boolean, String],\n default: 'force'\n },\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VWindow');\nexport const VWindow = genericComponent()({\n name: 'VWindow',\n directives: {\n Touch\n },\n props: makeVWindowProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n isRtl\n } = useRtl();\n const {\n t\n } = useLocale();\n const group = useGroup(props, VWindowGroupSymbol);\n const rootRef = ref();\n const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse);\n const isReversed = shallowRef(false);\n const transition = computed(() => {\n const axis = props.direction === 'vertical' ? 'y' : 'x';\n const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value;\n const direction = reverse ? '-reverse' : '';\n return `v-window-${axis}${direction}-transition`;\n });\n const transitionCount = shallowRef(0);\n const transitionHeight = ref(undefined);\n const activeIndex = computed(() => {\n return group.items.value.findIndex(item => group.selected.value.includes(item.id));\n });\n watch(activeIndex, (newVal, oldVal) => {\n const itemsLength = group.items.value.length;\n const lastIndex = itemsLength - 1;\n if (itemsLength <= 2) {\n isReversed.value = newVal < oldVal;\n } else if (newVal === lastIndex && oldVal === 0) {\n isReversed.value = true;\n } else if (newVal === 0 && oldVal === lastIndex) {\n isReversed.value = false;\n } else {\n isReversed.value = newVal < oldVal;\n }\n });\n provide(VWindowSymbol, {\n transition,\n isReversed,\n transitionCount,\n transitionHeight,\n rootRef\n });\n const canMoveBack = computed(() => props.continuous || activeIndex.value !== 0);\n const canMoveForward = computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1);\n function prev() {\n canMoveBack.value && group.prev();\n }\n function next() {\n canMoveForward.value && group.next();\n }\n const arrows = computed(() => {\n const arrows = [];\n const prevProps = {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n class: `v-window__${isRtlReverse.value ? 'right' : 'left'}`,\n onClick: group.prev,\n 'aria-label': t('$vuetify.carousel.prev')\n };\n arrows.push(canMoveBack.value ? slots.prev ? slots.prev({\n props: prevProps\n }) : _createVNode(VBtn, prevProps, null) : _createVNode(\"div\", null, null));\n const nextProps = {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,\n onClick: group.next,\n 'aria-label': t('$vuetify.carousel.next')\n };\n arrows.push(canMoveForward.value ? slots.next ? slots.next({\n props: nextProps\n }) : _createVNode(VBtn, nextProps, null) : _createVNode(\"div\", null, null));\n return arrows;\n });\n const touchOptions = computed(() => {\n if (props.touch === false) return props.touch;\n const options = {\n left: () => {\n isRtlReverse.value ? prev() : next();\n },\n right: () => {\n isRtlReverse.value ? next() : prev();\n },\n start: _ref2 => {\n let {\n originalEvent\n } = _ref2;\n originalEvent.stopPropagation();\n }\n };\n return {\n ...options,\n ...(props.touch === true ? {} : props.touch)\n };\n });\n useRender(() => _withDirectives(_createVNode(props.tag, {\n \"ref\": rootRef,\n \"class\": ['v-window', {\n 'v-window--show-arrows-on-hover': props.showArrows === 'hover'\n }, themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-window__container\",\n \"style\": {\n height: transitionHeight.value\n }\n }, [slots.default?.({\n group\n }), props.showArrows !== false && _createVNode(\"div\", {\n \"class\": \"v-window__controls\"\n }, [arrows.value])]), slots.additional?.({\n group\n })]\n }), [[_resolveDirective(\"touch\"), touchOptions.value]]));\n return {\n group\n };\n }\n});\n//# sourceMappingURL=VWindow.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VCarousel.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VProgressLinear } from \"../VProgressLinear/index.mjs\";\nimport { makeVWindowProps, VWindow } from \"../VWindow/VWindow.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { onMounted, ref, watch } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCarouselProps = propsFactory({\n color: String,\n cycle: Boolean,\n delimiterIcon: {\n type: IconValue,\n default: '$delimiter'\n },\n height: {\n type: [Number, String],\n default: 500\n },\n hideDelimiters: Boolean,\n hideDelimiterBackground: Boolean,\n interval: {\n type: [Number, String],\n default: 6000,\n validator: value => Number(value) > 0\n },\n progress: [Boolean, String],\n verticalDelimiters: [Boolean, String],\n ...makeVWindowProps({\n continuous: true,\n mandatory: 'force',\n showArrows: true\n })\n}, 'VCarousel');\nexport const VCarousel = genericComponent()({\n name: 'VCarousel',\n props: makeVCarouselProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n t\n } = useLocale();\n const windowRef = ref();\n let slideTimeout = -1;\n watch(model, restartTimeout);\n watch(() => props.interval, restartTimeout);\n watch(() => props.cycle, val => {\n if (val) restartTimeout();else window.clearTimeout(slideTimeout);\n });\n onMounted(startTimeout);\n function startTimeout() {\n if (!props.cycle || !windowRef.value) return;\n slideTimeout = window.setTimeout(windowRef.value.group.next, +props.interval > 0 ? +props.interval : 6000);\n }\n function restartTimeout() {\n window.clearTimeout(slideTimeout);\n window.requestAnimationFrame(startTimeout);\n }\n useRender(() => {\n const windowProps = VWindow.filterProps(props);\n return _createVNode(VWindow, _mergeProps({\n \"ref\": windowRef\n }, windowProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-carousel', {\n 'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,\n 'v-carousel--vertical-delimiters': props.verticalDelimiters\n }, props.class],\n \"style\": [{\n height: convertToUnit(props.height)\n }, props.style]\n }), {\n default: slots.default,\n additional: _ref2 => {\n let {\n group\n } = _ref2;\n return _createVNode(_Fragment, null, [!props.hideDelimiters && _createVNode(\"div\", {\n \"class\": \"v-carousel__controls\",\n \"style\": {\n left: props.verticalDelimiters === 'left' && props.verticalDelimiters ? 0 : 'auto',\n right: props.verticalDelimiters === 'right' ? 0 : 'auto'\n }\n }, [group.items.value.length > 0 && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n color: props.color,\n icon: props.delimiterIcon,\n size: 'x-small',\n variant: 'text'\n }\n },\n \"scoped\": true\n }, {\n default: () => [group.items.value.map((item, index) => {\n const props = {\n id: `carousel-item-${item.id}`,\n 'aria-label': t('$vuetify.carousel.ariaLabel.delimiter', index + 1, group.items.value.length),\n class: ['v-carousel__controls__item', group.isSelected(item.id) && 'v-btn--active'],\n onClick: () => group.select(item.id, true)\n };\n return slots.item ? slots.item({\n props,\n item\n }) : _createVNode(VBtn, _mergeProps(item, props), null);\n })]\n })]), props.progress && _createVNode(VProgressLinear, {\n \"class\": \"v-carousel__progress\",\n \"color\": typeof props.progress === 'string' ? props.progress : undefined,\n \"modelValue\": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100\n }, null)]);\n },\n prev: slots.prev,\n next: slots.next\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VCarousel.mjs.map","import { withDirectives as _withDirectives, createVNode as _createVNode, vShow as _vShow } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Directives\nimport Touch from \"../../directives/touch/index.mjs\"; // Utilities\nimport { computed, inject, nextTick, shallowRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { VWindowGroupSymbol, VWindowSymbol } from \"./VWindow.mjs\";\nexport const makeVWindowItemProps = propsFactory({\n reverseTransition: {\n type: [Boolean, String],\n default: undefined\n },\n transition: {\n type: [Boolean, String],\n default: undefined\n },\n ...makeComponentProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps()\n}, 'VWindowItem');\nexport const VWindowItem = genericComponent()({\n name: 'VWindowItem',\n directives: {\n Touch\n },\n props: makeVWindowItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const window = inject(VWindowSymbol);\n const groupItem = useGroupItem(props, VWindowGroupSymbol);\n const {\n isBooted\n } = useSsrBoot();\n if (!window || !groupItem) throw new Error('[Vuetify] VWindowItem must be used inside VWindow');\n const isTransitioning = shallowRef(false);\n const hasTransition = computed(() => isBooted.value && (window.isReversed.value ? props.reverseTransition !== false : props.transition !== false));\n function onAfterTransition() {\n if (!isTransitioning.value || !window) {\n return;\n }\n\n // Finalize transition state.\n isTransitioning.value = false;\n if (window.transitionCount.value > 0) {\n window.transitionCount.value -= 1;\n\n // Remove container height if we are out of transition.\n if (window.transitionCount.value === 0) {\n window.transitionHeight.value = undefined;\n }\n }\n }\n function onBeforeTransition() {\n if (isTransitioning.value || !window) {\n return;\n }\n\n // Initialize transition state here.\n isTransitioning.value = true;\n if (window.transitionCount.value === 0) {\n // Set initial height for height transition.\n window.transitionHeight.value = convertToUnit(window.rootRef.value?.clientHeight);\n }\n window.transitionCount.value += 1;\n }\n function onTransitionCancelled() {\n onAfterTransition(); // This should have the same path as normal transition end.\n }\n function onEnterTransition(el) {\n if (!isTransitioning.value) {\n return;\n }\n nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!hasTransition.value || !isTransitioning.value || !window) {\n return;\n }\n\n // Set transition target height.\n window.transitionHeight.value = convertToUnit(el.clientHeight);\n });\n }\n const transition = computed(() => {\n const name = window.isReversed.value ? props.reverseTransition : props.transition;\n return !hasTransition.value ? false : {\n name: typeof name !== 'string' ? window.transition.value : name,\n onBeforeEnter: onBeforeTransition,\n onAfterEnter: onAfterTransition,\n onEnterCancelled: onTransitionCancelled,\n onBeforeLeave: onBeforeTransition,\n onAfterLeave: onAfterTransition,\n onLeaveCancelled: onTransitionCancelled,\n onEnter: onEnterTransition\n };\n });\n const {\n hasContent\n } = useLazy(props, groupItem.isSelected);\n useRender(() => _createVNode(MaybeTransition, {\n \"transition\": transition.value,\n \"disabled\": !isBooted.value\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": ['v-window-item', groupItem.selectedClass.value, props.class],\n \"style\": props.style\n }, [hasContent.value && slots.default?.()]), [[_vShow, groupItem.isSelected.value]])]\n }));\n return {\n groupItem\n };\n }\n});\n//# sourceMappingURL=VWindowItem.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVImgProps, VImg } from \"../VImg/VImg.mjs\";\nimport { makeVWindowItemProps, VWindowItem } from \"../VWindow/VWindowItem.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCarouselItemProps = propsFactory({\n ...makeVImgProps(),\n ...makeVWindowItemProps()\n}, 'VCarouselItem');\nexport const VCarouselItem = genericComponent()({\n name: 'VCarouselItem',\n inheritAttrs: false,\n props: makeVCarouselItemProps(),\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n useRender(() => {\n const imgProps = VImg.filterProps(props);\n const windowItemProps = VWindowItem.filterProps(props);\n return _createVNode(VWindowItem, _mergeProps({\n \"class\": ['v-carousel-item', props.class]\n }, windowItemProps), {\n default: () => [_createVNode(VImg, _mergeProps(attrs, imgProps), slots)]\n });\n });\n }\n});\n//# sourceMappingURL=VCarouselItem.mjs.map","// Styles\nimport \"./VCode.css\";\n\n// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VCode = createSimpleFunctional('v-code');\n//# sourceMappingURL=index.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerCanvas.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\"; // Utilities\nimport { computed, onMounted, ref, shallowRef, watch } from 'vue';\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVColorPickerCanvasProps = propsFactory({\n color: {\n type: Object\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10\n },\n height: {\n type: [Number, String],\n default: 150\n },\n width: {\n type: [Number, String],\n default: 300\n },\n ...makeComponentProps()\n}, 'VColorPickerCanvas');\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n props: makeVColorPickerCanvasProps(),\n emits: {\n 'update:color': color => true,\n 'update:position': hue => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const isInteracting = shallowRef(false);\n const canvasRef = ref();\n const canvasWidth = shallowRef(parseFloat(props.width));\n const canvasHeight = shallowRef(parseFloat(props.height));\n const _dotPosition = ref({\n x: 0,\n y: 0\n });\n const dotPosition = computed({\n get: () => _dotPosition.value,\n set(val) {\n if (!canvasRef.value) return;\n const {\n x,\n y\n } = val;\n _dotPosition.value = val;\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,\n v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,\n a: props.color?.a ?? 1\n });\n }\n });\n const dotStyles = computed(() => {\n const {\n x,\n y\n } = dotPosition.value;\n const radius = parseInt(props.dotSize, 10) / 2;\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`\n };\n });\n const {\n resizeRef\n } = useResizeObserver(entries => {\n if (!resizeRef.el?.offsetParent) return;\n const {\n width,\n height\n } = entries[0].contentRect;\n canvasWidth.value = width;\n canvasHeight.value = height;\n });\n function updateDotPosition(x, y, rect) {\n const {\n left,\n top,\n width,\n height\n } = rect;\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height)\n };\n }\n function handleMouseDown(e) {\n if (e.type === 'mousedown') {\n // Prevent text selection while dragging\n e.preventDefault();\n }\n if (props.disabled) return;\n handleMouseMove(e);\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n window.addEventListener('touchmove', handleMouseMove);\n window.addEventListener('touchend', handleMouseUp);\n }\n function handleMouseMove(e) {\n if (props.disabled || !canvasRef.value) return;\n isInteracting.value = true;\n const coords = getEventCoordinates(e);\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect());\n }\n function handleMouseUp() {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n window.removeEventListener('touchmove', handleMouseMove);\n window.removeEventListener('touchend', handleMouseUp);\n }\n function updateCanvas() {\n if (!canvasRef.value) return;\n const canvas = canvasRef.value;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0);\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)'); // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`);\n ctx.fillStyle = saturationGradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height);\n valueGradient.addColorStop(0, 'hsla(0, 0%, 0%, 0)'); // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)'); // black\n ctx.fillStyle = valueGradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n watch(() => props.color?.h, updateCanvas, {\n immediate: true\n });\n watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {\n updateCanvas();\n _dotPosition.value = {\n x: dotPosition.value.x * newVal[0] / oldVal[0],\n y: dotPosition.value.y * newVal[1] / oldVal[1]\n };\n }, {\n flush: 'post'\n });\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false;\n return;\n }\n _dotPosition.value = props.color ? {\n x: props.color.s * canvasWidth.value,\n y: (1 - props.color.v) * canvasHeight.value\n } : {\n x: 0,\n y: 0\n };\n }, {\n deep: true,\n immediate: true\n });\n onMounted(() => updateCanvas());\n useRender(() => _createVNode(\"div\", {\n \"ref\": resizeRef,\n \"class\": ['v-color-picker-canvas', props.class],\n \"style\": props.style,\n \"onMousedown\": handleMouseDown,\n \"onTouchstartPassive\": handleMouseDown\n }, [_createVNode(\"canvas\", {\n \"ref\": canvasRef,\n \"width\": canvasWidth.value,\n \"height\": canvasHeight.value\n }, null), props.color && _createVNode(\"div\", {\n \"class\": ['v-color-picker-canvas__dot', {\n 'v-color-picker-canvas__dot--disabled': props.disabled\n }],\n \"style\": dotStyles.value\n }, null)]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerCanvas.mjs.map","// Utilities\nimport { HexToHSV, HSLtoHSV, HSVtoHex, HSVtoHSL, HSVtoRGB, RGBtoHSV } from \"../../../util/colorUtils.mjs\";\nimport { has } from \"../../../util/helpers.mjs\"; // Types\nfunction stripAlpha(color, stripAlpha) {\n if (stripAlpha) {\n const {\n a,\n ...rest\n } = color;\n return rest;\n }\n return color;\n}\nexport function extractColor(color, input) {\n if (input == null || typeof input === 'string') {\n const hex = HSVtoHex(color);\n if (color.a === 1) return hex.slice(0, 7);else return hex;\n }\n if (typeof input === 'object') {\n let converted;\n if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color);else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color);else if (has(input, ['h', 's', 'v'])) converted = color;\n return stripAlpha(converted, !has(input, ['a']) && color.a === 1);\n }\n return color;\n}\nexport function hasAlpha(color) {\n if (!color) return false;\n if (typeof color === 'string') {\n return color.length > 7;\n }\n if (typeof color === 'object') {\n return has(color, ['a']) || has(color, ['alpha']);\n }\n return false;\n}\nexport const nullColor = {\n h: 0,\n s: 0,\n v: 0,\n a: 1\n};\nconst rgba = {\n inputProps: {\n type: 'number',\n min: 0\n },\n inputs: [{\n label: 'R',\n max: 255,\n step: 1,\n getValue: c => Math.round(c.r),\n getColor: (c, v) => ({\n ...c,\n r: Number(v)\n })\n }, {\n label: 'G',\n max: 255,\n step: 1,\n getValue: c => Math.round(c.g),\n getColor: (c, v) => ({\n ...c,\n g: Number(v)\n })\n }, {\n label: 'B',\n max: 255,\n step: 1,\n getValue: c => Math.round(c.b),\n getColor: (c, v) => ({\n ...c,\n b: Number(v)\n })\n }, {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: _ref => {\n let {\n a\n } = _ref;\n return a != null ? Math.round(a * 100) / 100 : 1;\n },\n getColor: (c, v) => ({\n ...c,\n a: Number(v)\n })\n }],\n to: HSVtoRGB,\n from: RGBtoHSV\n};\nconst rgb = {\n ...rgba,\n inputs: rgba.inputs?.slice(0, 3)\n};\nconst hsla = {\n inputProps: {\n type: 'number',\n min: 0\n },\n inputs: [{\n label: 'H',\n max: 360,\n step: 1,\n getValue: c => Math.round(c.h),\n getColor: (c, v) => ({\n ...c,\n h: Number(v)\n })\n }, {\n label: 'S',\n max: 1,\n step: 0.01,\n getValue: c => Math.round(c.s * 100) / 100,\n getColor: (c, v) => ({\n ...c,\n s: Number(v)\n })\n }, {\n label: 'L',\n max: 1,\n step: 0.01,\n getValue: c => Math.round(c.l * 100) / 100,\n getColor: (c, v) => ({\n ...c,\n l: Number(v)\n })\n }, {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: _ref2 => {\n let {\n a\n } = _ref2;\n return a != null ? Math.round(a * 100) / 100 : 1;\n },\n getColor: (c, v) => ({\n ...c,\n a: Number(v)\n })\n }],\n to: HSVtoHSL,\n from: HSLtoHSV\n};\nconst hsl = {\n ...hsla,\n inputs: hsla.inputs.slice(0, 3)\n};\nconst hexa = {\n inputProps: {\n type: 'text'\n },\n inputs: [{\n label: 'HEXA',\n getValue: c => c,\n getColor: (c, v) => v\n }],\n to: HSVtoHex,\n from: HexToHSV\n};\nconst hex = {\n ...hexa,\n inputs: [{\n label: 'HEX',\n getValue: c => c.slice(0, 7),\n getColor: (c, v) => v\n }]\n};\nexport const modes = {\n rgb,\n rgba,\n hsl,\n hsla,\n hex,\n hexa\n};\n//# sourceMappingURL=index.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerEdit.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { modes, nullColor } from \"./util/index.mjs\";\nimport { defineComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nconst VColorPickerInput = _ref => {\n let {\n label,\n ...rest\n } = _ref;\n return _createVNode(\"div\", {\n \"class\": \"v-color-picker-edit__input\"\n }, [_createVNode(\"input\", rest, null), _createVNode(\"span\", null, [label])]);\n};\nexport const makeVColorPickerEditProps = propsFactory({\n color: Object,\n disabled: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: v => Object.keys(modes).includes(v)\n },\n modes: {\n type: Array,\n default: () => Object.keys(modes),\n validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))\n },\n ...makeComponentProps()\n}, 'VColorPickerEdit');\nexport const VColorPickerEdit = defineComponent({\n name: 'VColorPickerEdit',\n props: makeVColorPickerEditProps(),\n emits: {\n 'update:color': color => true,\n 'update:mode': mode => true\n },\n setup(props, _ref2) {\n let {\n emit\n } = _ref2;\n const enabledModes = computed(() => {\n return props.modes.map(key => ({\n ...modes[key],\n name: key\n }));\n });\n const inputs = computed(() => {\n const mode = enabledModes.value.find(m => m.name === props.mode);\n if (!mode) return [];\n const color = props.color ? mode.to(props.color) : null;\n return mode.inputs?.map(_ref3 => {\n let {\n getValue,\n getColor,\n ...inputProps\n } = _ref3;\n return {\n ...mode.inputProps,\n ...inputProps,\n disabled: props.disabled,\n value: color && getValue(color),\n onChange: e => {\n const target = e.target;\n if (!target) return;\n emit('update:color', mode.from(getColor(color ?? mode.to(nullColor), target.value)));\n }\n };\n });\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-color-picker-edit', props.class],\n \"style\": props.style\n }, [inputs.value?.map(props => _createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && _createVNode(VBtn, {\n \"icon\": \"$unfold\",\n \"size\": \"x-small\",\n \"variant\": \"plain\",\n \"onClick\": () => {\n const mi = enabledModes.value.findIndex(m => m.name === props.mode);\n emit('update:mode', enabledModes.value[(mi + 1) % enabledModes.value.length].name);\n }\n }, null)]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerEdit.mjs.map","/* eslint-disable max-statements */\n// Composables\nimport { makeElevationProps } from \"../../composables/elevation.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeRoundedProps } from \"../../composables/rounded.mjs\"; // Utilities\nimport { computed, provide, ref, shallowRef, toRef } from 'vue';\nimport { clamp, createRange, getDecimals, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const VSliderSymbol = Symbol.for('vuetify:v-slider');\nexport function getOffset(e, el, direction) {\n const vertical = direction === 'vertical';\n const rect = el.getBoundingClientRect();\n const touch = 'touches' in e ? e.touches[0] : e;\n return vertical ? touch.clientY - (rect.top + rect.height / 2) : touch.clientX - (rect.left + rect.width / 2);\n}\nfunction getPosition(e, position) {\n if ('touches' in e && e.touches.length) return e.touches[0][position];else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position];else return e[position];\n}\nexport const makeSliderProps = propsFactory({\n disabled: {\n type: Boolean,\n default: null\n },\n error: Boolean,\n readonly: {\n type: Boolean,\n default: null\n },\n max: {\n type: [Number, String],\n default: 100\n },\n min: {\n type: [Number, String],\n default: 0\n },\n step: {\n type: [Number, String],\n default: 0\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String],\n default: undefined,\n validator: v => typeof v === 'boolean' || v === 'always'\n },\n thumbSize: {\n type: [Number, String],\n default: 20\n },\n showTicks: {\n type: [Boolean, String],\n default: false,\n validator: v => typeof v === 'boolean' || v === 'always'\n },\n ticks: {\n type: [Array, Object]\n },\n tickSize: {\n type: [Number, String],\n default: 2\n },\n color: String,\n trackColor: String,\n trackFillColor: String,\n trackSize: {\n type: [Number, String],\n default: 4\n },\n direction: {\n type: String,\n default: 'horizontal',\n validator: v => ['vertical', 'horizontal'].includes(v)\n },\n reverse: Boolean,\n ...makeRoundedProps(),\n ...makeElevationProps({\n elevation: 2\n }),\n ripple: {\n type: Boolean,\n default: true\n }\n}, 'Slider');\nexport const useSteps = props => {\n const min = computed(() => parseFloat(props.min));\n const max = computed(() => parseFloat(props.max));\n const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);\n const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));\n function roundValue(value) {\n value = parseFloat(value);\n if (step.value <= 0) return value;\n const clamped = clamp(value, min.value, max.value);\n const offset = min.value % step.value;\n const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;\n return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));\n }\n return {\n min,\n max,\n step,\n decimals,\n roundValue\n };\n};\nexport const useSlider = _ref => {\n let {\n props,\n steps,\n onSliderStart,\n onSliderMove,\n onSliderEnd,\n getActiveThumb\n } = _ref;\n const {\n isRtl\n } = useRtl();\n const isReversed = toRef(props, 'reverse');\n const vertical = computed(() => props.direction === 'vertical');\n const indexFromEnd = computed(() => vertical.value !== isReversed.value);\n const {\n min,\n max,\n step,\n decimals,\n roundValue\n } = steps;\n const thumbSize = computed(() => parseInt(props.thumbSize, 10));\n const tickSize = computed(() => parseInt(props.tickSize, 10));\n const trackSize = computed(() => parseInt(props.trackSize, 10));\n const numTicks = computed(() => (max.value - min.value) / step.value);\n const disabled = toRef(props, 'disabled');\n const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);\n const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);\n const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);\n const mousePressed = shallowRef(false);\n const startOffset = shallowRef(0);\n const trackContainerRef = ref();\n const activeThumbRef = ref();\n function parseMouseMove(e) {\n const vertical = props.direction === 'vertical';\n const start = vertical ? 'top' : 'left';\n const length = vertical ? 'height' : 'width';\n const position = vertical ? 'clientY' : 'clientX';\n const {\n [start]: trackStart,\n [length]: trackLength\n } = trackContainerRef.value?.$el.getBoundingClientRect();\n const clickOffset = getPosition(e, position);\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0;\n if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;\n return roundValue(min.value + clickPos * (max.value - min.value));\n }\n const handleStop = e => {\n onSliderEnd({\n value: parseMouseMove(e)\n });\n mousePressed.value = false;\n startOffset.value = 0;\n };\n const handleStart = e => {\n activeThumbRef.value = getActiveThumb(e);\n if (!activeThumbRef.value) return;\n activeThumbRef.value.focus();\n mousePressed.value = true;\n if (activeThumbRef.value.contains(e.target)) {\n startOffset.value = getOffset(e, activeThumbRef.value, props.direction);\n } else {\n startOffset.value = 0;\n onSliderMove({\n value: parseMouseMove(e)\n });\n }\n onSliderStart({\n value: parseMouseMove(e)\n });\n };\n const moveListenerOptions = {\n passive: true,\n capture: true\n };\n function onMouseMove(e) {\n onSliderMove({\n value: parseMouseMove(e)\n });\n }\n function onSliderMouseUp(e) {\n e.stopPropagation();\n e.preventDefault();\n handleStop(e);\n window.removeEventListener('mousemove', onMouseMove, moveListenerOptions);\n window.removeEventListener('mouseup', onSliderMouseUp);\n }\n function onSliderTouchend(e) {\n handleStop(e);\n window.removeEventListener('touchmove', onMouseMove, moveListenerOptions);\n e.target?.removeEventListener('touchend', onSliderTouchend);\n }\n function onSliderTouchstart(e) {\n handleStart(e);\n window.addEventListener('touchmove', onMouseMove, moveListenerOptions);\n e.target?.addEventListener('touchend', onSliderTouchend, {\n passive: false\n });\n }\n function onSliderMousedown(e) {\n e.preventDefault();\n handleStart(e);\n window.addEventListener('mousemove', onMouseMove, moveListenerOptions);\n window.addEventListener('mouseup', onSliderMouseUp, {\n passive: false\n });\n }\n const position = val => {\n const percentage = (val - min.value) / (max.value - min.value) * 100;\n return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);\n };\n const showTicks = toRef(props, 'showTicks');\n const parsedTicks = computed(() => {\n if (!showTicks.value) return [];\n if (!props.ticks) {\n return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {\n const value = min.value + t * step.value;\n return {\n value,\n position: position(value)\n };\n }) : [];\n }\n if (Array.isArray(props.ticks)) return props.ticks.map(t => ({\n value: t,\n position: position(t),\n label: t.toString()\n }));\n return Object.keys(props.ticks).map(key => ({\n value: parseFloat(key),\n position: position(parseFloat(key)),\n label: props.ticks[key]\n }));\n });\n const hasLabels = computed(() => parsedTicks.value.some(_ref2 => {\n let {\n label\n } = _ref2;\n return !!label;\n }));\n const data = {\n activeThumbRef,\n color: toRef(props, 'color'),\n decimals,\n disabled,\n direction: toRef(props, 'direction'),\n elevation: toRef(props, 'elevation'),\n hasLabels,\n isReversed,\n indexFromEnd,\n min,\n max,\n mousePressed,\n numTicks,\n onSliderMousedown,\n onSliderTouchstart,\n parsedTicks,\n parseMouseMove,\n position,\n readonly: toRef(props, 'readonly'),\n rounded: toRef(props, 'rounded'),\n roundValue,\n showTicks,\n startOffset,\n step,\n thumbSize,\n thumbColor,\n thumbLabel: toRef(props, 'thumbLabel'),\n ticks: toRef(props, 'ticks'),\n tickSize,\n trackColor,\n trackContainerRef,\n trackFillColor,\n trackSize,\n vertical\n };\n provide(VSliderSymbol, data);\n return data;\n};\n//# sourceMappingURL=slider.mjs.map","import { vShow as _vShow, withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSliderThumb.css\";\n\n// Components\nimport { VSliderSymbol } from \"./slider.mjs\";\nimport { VScaleTransition } from \"../transitions/index.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useElevation } from \"../../composables/elevation.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\"; // Directives\nimport Ripple from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { convertToUnit, genericComponent, keyValues, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSliderThumbProps = propsFactory({\n focused: Boolean,\n max: {\n type: Number,\n required: true\n },\n min: {\n type: Number,\n required: true\n },\n modelValue: {\n type: Number,\n required: true\n },\n position: {\n type: Number,\n required: true\n },\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n name: String,\n ...makeComponentProps()\n}, 'VSliderThumb');\nexport const VSliderThumb = genericComponent()({\n name: 'VSliderThumb',\n directives: {\n Ripple\n },\n props: makeVSliderThumbProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const slider = inject(VSliderSymbol);\n const {\n isRtl,\n rtlClasses\n } = useRtl();\n if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');\n const {\n thumbColor,\n step,\n disabled,\n thumbSize,\n thumbLabel,\n direction,\n isReversed,\n vertical,\n readonly,\n elevation,\n mousePressed,\n decimals,\n indexFromEnd\n } = slider;\n const elevationProps = computed(() => !disabled.value ? elevation.value : undefined);\n const {\n elevationClasses\n } = useElevation(elevationProps);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(thumbColor);\n const {\n pageup,\n pagedown,\n end,\n home,\n left,\n right,\n down,\n up\n } = keyValues;\n const relevantKeys = [pageup, pagedown, end, home, left, right, down, up];\n const multipliers = computed(() => {\n if (step.value) return [1, 2, 3];else return [1, 5, 10];\n });\n function parseKeydown(e, value) {\n if (!relevantKeys.includes(e.key)) return;\n e.preventDefault();\n const _step = step.value || 0.1;\n const steps = (props.max - props.min) / _step;\n if ([left, right, down, up].includes(e.key)) {\n const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];\n const direction = increase.includes(e.key) ? 1 : -1;\n const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;\n value = value + direction * _step * multipliers.value[multiplier];\n } else if (e.key === home) {\n value = props.min;\n } else if (e.key === end) {\n value = props.max;\n } else {\n const direction = e.key === pagedown ? 1 : -1;\n value = value - direction * _step * (steps > 100 ? steps / 10 : 10);\n }\n return Math.max(props.min, Math.min(props.max, value));\n }\n function onKeydown(e) {\n const newValue = parseKeydown(e, props.modelValue);\n newValue != null && emit('update:modelValue', newValue);\n }\n useRender(() => {\n const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%');\n return _createVNode(\"div\", {\n \"class\": ['v-slider-thumb', {\n 'v-slider-thumb--focused': props.focused,\n 'v-slider-thumb--pressed': props.focused && mousePressed.value\n }, props.class, rtlClasses.value],\n \"style\": [{\n '--v-slider-thumb-position': positionPercentage,\n '--v-slider-thumb-size': convertToUnit(thumbSize.value)\n }, props.style],\n \"role\": \"slider\",\n \"tabindex\": disabled.value ? -1 : 0,\n \"aria-label\": props.name,\n \"aria-valuemin\": props.min,\n \"aria-valuemax\": props.max,\n \"aria-valuenow\": props.modelValue,\n \"aria-readonly\": !!readonly.value,\n \"aria-orientation\": direction.value,\n \"onKeydown\": !readonly.value ? onKeydown : undefined\n }, [_createVNode(\"div\", {\n \"class\": ['v-slider-thumb__surface', textColorClasses.value, elevationClasses.value],\n \"style\": {\n ...textColorStyles.value\n }\n }, null), _withDirectives(_createVNode(\"div\", {\n \"class\": ['v-slider-thumb__ripple', textColorClasses.value],\n \"style\": textColorStyles.value\n }, null), [[_resolveDirective(\"ripple\"), props.ripple, null, {\n circle: true,\n center: true\n }]]), _createVNode(VScaleTransition, {\n \"origin\": \"bottom center\"\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": \"v-slider-thumb__label-container\"\n }, [_createVNode(\"div\", {\n \"class\": ['v-slider-thumb__label']\n }, [_createVNode(\"div\", null, [slots['thumb-label']?.({\n modelValue: props.modelValue\n }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[_vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VSliderThumb.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSliderTrack.css\";\n\n// Components\nimport { VSliderSymbol } from \"./slider.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useRounded } from \"../../composables/rounded.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSliderTrackProps = propsFactory({\n start: {\n type: Number,\n required: true\n },\n stop: {\n type: Number,\n required: true\n },\n ...makeComponentProps()\n}, 'VSliderTrack');\nexport const VSliderTrack = genericComponent()({\n name: 'VSliderTrack',\n props: makeVSliderTrackProps(),\n emits: {},\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const slider = inject(VSliderSymbol);\n if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider');\n const {\n color,\n parsedTicks,\n rounded,\n showTicks,\n tickSize,\n trackColor,\n trackFillColor,\n trackSize,\n vertical,\n min,\n max,\n indexFromEnd\n } = slider;\n const {\n roundedClasses\n } = useRounded(rounded);\n const {\n backgroundColorClasses: trackFillColorClasses,\n backgroundColorStyles: trackFillColorStyles\n } = useBackgroundColor(trackFillColor);\n const {\n backgroundColorClasses: trackColorClasses,\n backgroundColorStyles: trackColorStyles\n } = useBackgroundColor(trackColor);\n const startDir = computed(() => `inset-${vertical.value ? 'block' : 'inline'}-${indexFromEnd.value ? 'end' : 'start'}`);\n const endDir = computed(() => vertical.value ? 'height' : 'width');\n const backgroundStyles = computed(() => {\n return {\n [startDir.value]: '0%',\n [endDir.value]: '100%'\n };\n });\n const trackFillWidth = computed(() => props.stop - props.start);\n const trackFillStyles = computed(() => {\n return {\n [startDir.value]: convertToUnit(props.start, '%'),\n [endDir.value]: convertToUnit(trackFillWidth.value, '%')\n };\n });\n const computedTicks = computed(() => {\n if (!showTicks.value) return [];\n const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;\n return ticks.map((tick, index) => {\n const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined;\n return _createVNode(\"div\", {\n \"key\": tick.value,\n \"class\": ['v-slider-track__tick', {\n 'v-slider-track__tick--filled': tick.position >= props.start && tick.position <= props.stop,\n 'v-slider-track__tick--first': tick.value === min.value,\n 'v-slider-track__tick--last': tick.value === max.value\n }],\n \"style\": {\n [startDir.value]: directionValue\n }\n }, [(tick.label || slots['tick-label']) && _createVNode(\"div\", {\n \"class\": \"v-slider-track__tick-label\"\n }, [slots['tick-label']?.({\n tick,\n index\n }) ?? tick.label])]);\n });\n });\n useRender(() => {\n return _createVNode(\"div\", {\n \"class\": ['v-slider-track', roundedClasses.value, props.class],\n \"style\": [{\n '--v-slider-track-size': convertToUnit(trackSize.value),\n '--v-slider-tick-size': convertToUnit(tickSize.value)\n }, props.style]\n }, [_createVNode(\"div\", {\n \"class\": ['v-slider-track__background', trackColorClasses.value, {\n 'v-slider-track__background--opacity': !!color.value || !trackFillColor.value\n }],\n \"style\": {\n ...backgroundStyles.value,\n ...trackColorStyles.value\n }\n }, null), _createVNode(\"div\", {\n \"class\": ['v-slider-track__fill', trackFillColorClasses.value],\n \"style\": {\n ...trackFillStyles.value,\n ...trackFillColorStyles.value\n }\n }, null), showTicks.value && _createVNode(\"div\", {\n \"class\": ['v-slider-track__ticks', {\n 'v-slider-track__ticks--always-show': showTicks.value === 'always'\n }]\n }, [computedTicks.value])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VSliderTrack.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VSlider.css\";\n\n// Components\nimport { VSliderThumb } from \"./VSliderThumb.mjs\";\nimport { VSliderTrack } from \"./VSliderTrack.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\"; // Composables\nimport { makeSliderProps, useSlider, useSteps } from \"./slider.mjs\";\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeSliderProps(),\n ...makeVInputProps(),\n modelValue: {\n type: [Number, String],\n default: 0\n }\n}, 'VSlider');\nexport const VSlider = genericComponent()({\n name: 'VSlider',\n props: makeVSliderProps(),\n emits: {\n 'update:focused': value => true,\n 'update:modelValue': v => true,\n start: value => true,\n end: value => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const thumbContainerRef = ref();\n const {\n rtlClasses\n } = useRtl();\n const steps = useSteps(props);\n const model = useProxiedModel(props, 'modelValue', undefined, value => {\n return steps.roundValue(value == null ? steps.min.value : value);\n });\n const {\n min,\n max,\n mousePressed,\n roundValue,\n onSliderMousedown,\n onSliderTouchstart,\n trackContainerRef,\n position,\n hasLabels,\n readonly\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value);\n },\n onSliderEnd: _ref2 => {\n let {\n value\n } = _ref2;\n const roundedValue = roundValue(value);\n model.value = roundedValue;\n emit('end', roundedValue);\n },\n onSliderMove: _ref3 => {\n let {\n value\n } = _ref3;\n return model.value = roundValue(value);\n },\n getActiveThumb: () => thumbContainerRef.value?.$el\n });\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const trackStop = computed(() => position(model.value));\n useRender(() => {\n const inputProps = VInput.filterProps(props);\n const hasPrepend = !!(props.label || slots.label || slots.prepend);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-slider', {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled\n }, rtlClasses.value, props.class],\n \"style\": props.style\n }, inputProps, {\n \"focused\": isFocused.value\n }), {\n ...slots,\n prepend: hasPrepend ? slotProps => _createVNode(_Fragment, null, [slots.label?.(slotProps) ?? (props.label ? _createVNode(VLabel, {\n \"id\": slotProps.id.value,\n \"class\": \"v-slider__label\",\n \"text\": props.label\n }, null) : undefined), slots.prepend?.(slotProps)]) : undefined,\n default: _ref4 => {\n let {\n id,\n messagesId\n } = _ref4;\n return _createVNode(\"div\", {\n \"class\": \"v-slider__container\",\n \"onMousedown\": !readonly.value ? onSliderMousedown : undefined,\n \"onTouchstartPassive\": !readonly.value ? onSliderTouchstart : undefined\n }, [_createVNode(\"input\", {\n \"id\": id.value,\n \"name\": props.name || id.value,\n \"disabled\": !!props.disabled,\n \"readonly\": !!props.readonly,\n \"tabindex\": \"-1\",\n \"value\": model.value\n }, null), _createVNode(VSliderTrack, {\n \"ref\": trackContainerRef,\n \"start\": 0,\n \"stop\": trackStop.value\n }, {\n 'tick-label': slots['tick-label']\n }), _createVNode(VSliderThumb, {\n \"ref\": thumbContainerRef,\n \"aria-describedby\": messagesId.value,\n \"focused\": isFocused.value,\n \"min\": min.value,\n \"max\": max.value,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": v => model.value = v,\n \"position\": trackStop.value,\n \"elevation\": props.elevation,\n \"onFocus\": focus,\n \"onBlur\": blur,\n \"ripple\": props.ripple,\n \"name\": props.name\n }, {\n 'thumb-label': slots['thumb-label']\n })]);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VSlider.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerPreview.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VSlider } from \"../VSlider/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { onUnmounted } from 'vue';\nimport { nullColor } from \"./util/index.mjs\";\nimport { defineComponent, HexToHSV, HSVtoCSS, propsFactory, SUPPORTS_EYE_DROPPER, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVColorPickerPreviewProps = propsFactory({\n color: {\n type: Object\n },\n disabled: Boolean,\n hideAlpha: Boolean,\n ...makeComponentProps()\n}, 'VColorPickerPreview');\nexport const VColorPickerPreview = defineComponent({\n name: 'VColorPickerPreview',\n props: makeVColorPickerPreviewProps(),\n emits: {\n 'update:color': color => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const abortController = new AbortController();\n onUnmounted(() => abortController.abort());\n async function openEyeDropper() {\n if (!SUPPORTS_EYE_DROPPER) return;\n const eyeDropper = new window.EyeDropper();\n try {\n const result = await eyeDropper.open({\n signal: abortController.signal\n });\n const colorHexValue = HexToHSV(result.sRGBHex);\n emit('update:color', {\n ...(props.color ?? nullColor),\n ...colorHexValue\n });\n } catch (e) {}\n }\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-color-picker-preview', {\n 'v-color-picker-preview--hide-alpha': props.hideAlpha\n }, props.class],\n \"style\": props.style\n }, [SUPPORTS_EYE_DROPPER && _createVNode(\"div\", {\n \"class\": \"v-color-picker-preview__eye-dropper\",\n \"key\": \"eyeDropper\"\n }, [_createVNode(VBtn, {\n \"onClick\": openEyeDropper,\n \"icon\": \"$eyeDropper\",\n \"variant\": \"plain\",\n \"density\": \"comfortable\"\n }, null)]), _createVNode(\"div\", {\n \"class\": \"v-color-picker-preview__dot\"\n }, [_createVNode(\"div\", {\n \"style\": {\n background: HSVtoCSS(props.color ?? nullColor)\n }\n }, null)]), _createVNode(\"div\", {\n \"class\": \"v-color-picker-preview__sliders\"\n }, [_createVNode(VSlider, {\n \"class\": \"v-color-picker-preview__track v-color-picker-preview__hue\",\n \"modelValue\": props.color?.h,\n \"onUpdate:modelValue\": h => emit('update:color', {\n ...(props.color ?? nullColor),\n h\n }),\n \"step\": 0,\n \"min\": 0,\n \"max\": 360,\n \"disabled\": props.disabled,\n \"thumbSize\": 14,\n \"trackSize\": 8,\n \"trackFillColor\": \"white\",\n \"hideDetails\": true\n }, null), !props.hideAlpha && _createVNode(VSlider, {\n \"class\": \"v-color-picker-preview__track v-color-picker-preview__alpha\",\n \"modelValue\": props.color?.a ?? 1,\n \"onUpdate:modelValue\": a => emit('update:color', {\n ...(props.color ?? nullColor),\n a\n }),\n \"step\": 1 / 256,\n \"min\": 0,\n \"max\": 1,\n \"disabled\": props.disabled,\n \"thumbSize\": 14,\n \"trackSize\": 8,\n \"trackFillColor\": \"white\",\n \"hideDetails\": true\n }, null)])]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerPreview.mjs.map","export const red = {\n base: '#f44336',\n lighten5: '#ffebee',\n lighten4: '#ffcdd2',\n lighten3: '#ef9a9a',\n lighten2: '#e57373',\n lighten1: '#ef5350',\n darken1: '#e53935',\n darken2: '#d32f2f',\n darken3: '#c62828',\n darken4: '#b71c1c',\n accent1: '#ff8a80',\n accent2: '#ff5252',\n accent3: '#ff1744',\n accent4: '#d50000'\n};\nexport const pink = {\n base: '#e91e63',\n lighten5: '#fce4ec',\n lighten4: '#f8bbd0',\n lighten3: '#f48fb1',\n lighten2: '#f06292',\n lighten1: '#ec407a',\n darken1: '#d81b60',\n darken2: '#c2185b',\n darken3: '#ad1457',\n darken4: '#880e4f',\n accent1: '#ff80ab',\n accent2: '#ff4081',\n accent3: '#f50057',\n accent4: '#c51162'\n};\nexport const purple = {\n base: '#9c27b0',\n lighten5: '#f3e5f5',\n lighten4: '#e1bee7',\n lighten3: '#ce93d8',\n lighten2: '#ba68c8',\n lighten1: '#ab47bc',\n darken1: '#8e24aa',\n darken2: '#7b1fa2',\n darken3: '#6a1b9a',\n darken4: '#4a148c',\n accent1: '#ea80fc',\n accent2: '#e040fb',\n accent3: '#d500f9',\n accent4: '#aa00ff'\n};\nexport const deepPurple = {\n base: '#673ab7',\n lighten5: '#ede7f6',\n lighten4: '#d1c4e9',\n lighten3: '#b39ddb',\n lighten2: '#9575cd',\n lighten1: '#7e57c2',\n darken1: '#5e35b1',\n darken2: '#512da8',\n darken3: '#4527a0',\n darken4: '#311b92',\n accent1: '#b388ff',\n accent2: '#7c4dff',\n accent3: '#651fff',\n accent4: '#6200ea'\n};\nexport const indigo = {\n base: '#3f51b5',\n lighten5: '#e8eaf6',\n lighten4: '#c5cae9',\n lighten3: '#9fa8da',\n lighten2: '#7986cb',\n lighten1: '#5c6bc0',\n darken1: '#3949ab',\n darken2: '#303f9f',\n darken3: '#283593',\n darken4: '#1a237e',\n accent1: '#8c9eff',\n accent2: '#536dfe',\n accent3: '#3d5afe',\n accent4: '#304ffe'\n};\nexport const blue = {\n base: '#2196f3',\n lighten5: '#e3f2fd',\n lighten4: '#bbdefb',\n lighten3: '#90caf9',\n lighten2: '#64b5f6',\n lighten1: '#42a5f5',\n darken1: '#1e88e5',\n darken2: '#1976d2',\n darken3: '#1565c0',\n darken4: '#0d47a1',\n accent1: '#82b1ff',\n accent2: '#448aff',\n accent3: '#2979ff',\n accent4: '#2962ff'\n};\nexport const lightBlue = {\n base: '#03a9f4',\n lighten5: '#e1f5fe',\n lighten4: '#b3e5fc',\n lighten3: '#81d4fa',\n lighten2: '#4fc3f7',\n lighten1: '#29b6f6',\n darken1: '#039be5',\n darken2: '#0288d1',\n darken3: '#0277bd',\n darken4: '#01579b',\n accent1: '#80d8ff',\n accent2: '#40c4ff',\n accent3: '#00b0ff',\n accent4: '#0091ea'\n};\nexport const cyan = {\n base: '#00bcd4',\n lighten5: '#e0f7fa',\n lighten4: '#b2ebf2',\n lighten3: '#80deea',\n lighten2: '#4dd0e1',\n lighten1: '#26c6da',\n darken1: '#00acc1',\n darken2: '#0097a7',\n darken3: '#00838f',\n darken4: '#006064',\n accent1: '#84ffff',\n accent2: '#18ffff',\n accent3: '#00e5ff',\n accent4: '#00b8d4'\n};\nexport const teal = {\n base: '#009688',\n lighten5: '#e0f2f1',\n lighten4: '#b2dfdb',\n lighten3: '#80cbc4',\n lighten2: '#4db6ac',\n lighten1: '#26a69a',\n darken1: '#00897b',\n darken2: '#00796b',\n darken3: '#00695c',\n darken4: '#004d40',\n accent1: '#a7ffeb',\n accent2: '#64ffda',\n accent3: '#1de9b6',\n accent4: '#00bfa5'\n};\nexport const green = {\n base: '#4caf50',\n lighten5: '#e8f5e9',\n lighten4: '#c8e6c9',\n lighten3: '#a5d6a7',\n lighten2: '#81c784',\n lighten1: '#66bb6a',\n darken1: '#43a047',\n darken2: '#388e3c',\n darken3: '#2e7d32',\n darken4: '#1b5e20',\n accent1: '#b9f6ca',\n accent2: '#69f0ae',\n accent3: '#00e676',\n accent4: '#00c853'\n};\nexport const lightGreen = {\n base: '#8bc34a',\n lighten5: '#f1f8e9',\n lighten4: '#dcedc8',\n lighten3: '#c5e1a5',\n lighten2: '#aed581',\n lighten1: '#9ccc65',\n darken1: '#7cb342',\n darken2: '#689f38',\n darken3: '#558b2f',\n darken4: '#33691e',\n accent1: '#ccff90',\n accent2: '#b2ff59',\n accent3: '#76ff03',\n accent4: '#64dd17'\n};\nexport const lime = {\n base: '#cddc39',\n lighten5: '#f9fbe7',\n lighten4: '#f0f4c3',\n lighten3: '#e6ee9c',\n lighten2: '#dce775',\n lighten1: '#d4e157',\n darken1: '#c0ca33',\n darken2: '#afb42b',\n darken3: '#9e9d24',\n darken4: '#827717',\n accent1: '#f4ff81',\n accent2: '#eeff41',\n accent3: '#c6ff00',\n accent4: '#aeea00'\n};\nexport const yellow = {\n base: '#ffeb3b',\n lighten5: '#fffde7',\n lighten4: '#fff9c4',\n lighten3: '#fff59d',\n lighten2: '#fff176',\n lighten1: '#ffee58',\n darken1: '#fdd835',\n darken2: '#fbc02d',\n darken3: '#f9a825',\n darken4: '#f57f17',\n accent1: '#ffff8d',\n accent2: '#ffff00',\n accent3: '#ffea00',\n accent4: '#ffd600'\n};\nexport const amber = {\n base: '#ffc107',\n lighten5: '#fff8e1',\n lighten4: '#ffecb3',\n lighten3: '#ffe082',\n lighten2: '#ffd54f',\n lighten1: '#ffca28',\n darken1: '#ffb300',\n darken2: '#ffa000',\n darken3: '#ff8f00',\n darken4: '#ff6f00',\n accent1: '#ffe57f',\n accent2: '#ffd740',\n accent3: '#ffc400',\n accent4: '#ffab00'\n};\nexport const orange = {\n base: '#ff9800',\n lighten5: '#fff3e0',\n lighten4: '#ffe0b2',\n lighten3: '#ffcc80',\n lighten2: '#ffb74d',\n lighten1: '#ffa726',\n darken1: '#fb8c00',\n darken2: '#f57c00',\n darken3: '#ef6c00',\n darken4: '#e65100',\n accent1: '#ffd180',\n accent2: '#ffab40',\n accent3: '#ff9100',\n accent4: '#ff6d00'\n};\nexport const deepOrange = {\n base: '#ff5722',\n lighten5: '#fbe9e7',\n lighten4: '#ffccbc',\n lighten3: '#ffab91',\n lighten2: '#ff8a65',\n lighten1: '#ff7043',\n darken1: '#f4511e',\n darken2: '#e64a19',\n darken3: '#d84315',\n darken4: '#bf360c',\n accent1: '#ff9e80',\n accent2: '#ff6e40',\n accent3: '#ff3d00',\n accent4: '#dd2c00'\n};\nexport const brown = {\n base: '#795548',\n lighten5: '#efebe9',\n lighten4: '#d7ccc8',\n lighten3: '#bcaaa4',\n lighten2: '#a1887f',\n lighten1: '#8d6e63',\n darken1: '#6d4c41',\n darken2: '#5d4037',\n darken3: '#4e342e',\n darken4: '#3e2723'\n};\nexport const blueGrey = {\n base: '#607d8b',\n lighten5: '#eceff1',\n lighten4: '#cfd8dc',\n lighten3: '#b0bec5',\n lighten2: '#90a4ae',\n lighten1: '#78909c',\n darken1: '#546e7a',\n darken2: '#455a64',\n darken3: '#37474f',\n darken4: '#263238'\n};\nexport const grey = {\n base: '#9e9e9e',\n lighten5: '#fafafa',\n lighten4: '#f5f5f5',\n lighten3: '#eeeeee',\n lighten2: '#e0e0e0',\n lighten1: '#bdbdbd',\n darken1: '#757575',\n darken2: '#616161',\n darken3: '#424242',\n darken4: '#212121'\n};\nexport const shades = {\n black: '#000000',\n white: '#ffffff',\n transparent: '#ffffff00'\n};\nexport default {\n red,\n pink,\n purple,\n deepPurple,\n indigo,\n blue,\n lightBlue,\n cyan,\n teal,\n green,\n lightGreen,\n lime,\n yellow,\n amber,\n orange,\n deepOrange,\n brown,\n blueGrey,\n grey,\n shades\n};\n//# sourceMappingURL=colors.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerSwatches.css\";\n\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { convertToUnit, deepEqual, defineComponent, getContrast, parseColor, propsFactory, RGBtoCSS, RGBtoHSV, useRender } from \"../../util/index.mjs\";\nimport colors from \"../../util/colors.mjs\"; // Types\nexport const makeVColorPickerSwatchesProps = propsFactory({\n swatches: {\n type: Array,\n default: () => parseDefaultColors(colors)\n },\n disabled: Boolean,\n color: Object,\n maxHeight: [Number, String],\n ...makeComponentProps()\n}, 'VColorPickerSwatches');\nfunction parseDefaultColors(colors) {\n return Object.keys(colors).map(key => {\n const color = colors[key];\n return color.base ? [color.base, color.darken4, color.darken3, color.darken2, color.darken1, color.lighten1, color.lighten2, color.lighten3, color.lighten4, color.lighten5] : [color.black, color.white, color.transparent];\n });\n}\nexport const VColorPickerSwatches = defineComponent({\n name: 'VColorPickerSwatches',\n props: makeVColorPickerSwatchesProps(),\n emits: {\n 'update:color': color => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-color-picker-swatches', props.class],\n \"style\": [{\n maxHeight: convertToUnit(props.maxHeight)\n }, props.style]\n }, [_createVNode(\"div\", null, [props.swatches.map(swatch => _createVNode(\"div\", {\n \"class\": \"v-color-picker-swatches__swatch\"\n }, [swatch.map(color => {\n const rgba = parseColor(color);\n const hsva = RGBtoHSV(rgba);\n const background = RGBtoCSS(rgba);\n return _createVNode(\"div\", {\n \"class\": \"v-color-picker-swatches__color\",\n \"onClick\": () => hsva && emit('update:color', hsva)\n }, [_createVNode(\"div\", {\n \"style\": {\n background\n }\n }, [props.color && deepEqual(props.color, hsva) ? _createVNode(VIcon, {\n \"size\": \"x-small\",\n \"icon\": \"$success\",\n \"color\": getContrast(color, '#FFFFFF') > 2 ? 'white' : 'black'\n }, null) : undefined])]);\n })]))])]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerSwatches.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPicker.css\";\n\n// Components\nimport { VColorPickerCanvas } from \"./VColorPickerCanvas.mjs\";\nimport { VColorPickerEdit } from \"./VColorPickerEdit.mjs\";\nimport { VColorPickerPreview } from \"./VColorPickerPreview.mjs\";\nimport { VColorPickerSwatches } from \"./VColorPickerSwatches.mjs\";\nimport { makeVSheetProps, VSheet } from \"../VSheet/VSheet.mjs\"; // Composables\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { extractColor, modes, nullColor } from \"./util/index.mjs\";\nimport { consoleWarn, defineComponent, HSVtoCSS, omit, parseColor, propsFactory, RGBtoHSV, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVColorPickerProps = propsFactory({\n canvasHeight: {\n type: [String, Number],\n default: 150\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10\n },\n hideCanvas: Boolean,\n hideSliders: Boolean,\n hideInputs: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: v => Object.keys(modes).includes(v)\n },\n modes: {\n type: Array,\n default: () => Object.keys(modes),\n validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))\n },\n showSwatches: Boolean,\n swatches: Array,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150\n },\n modelValue: {\n type: [Object, String]\n },\n ...omit(makeVSheetProps({\n width: 300\n }), ['height', 'location', 'minHeight', 'maxHeight', 'minWidth', 'maxWidth'])\n}, 'VColorPicker');\nexport const VColorPicker = defineComponent({\n name: 'VColorPicker',\n props: makeVColorPickerProps(),\n emits: {\n 'update:modelValue': color => true,\n 'update:mode': mode => true\n },\n setup(props) {\n const mode = useProxiedModel(props, 'mode');\n const hue = ref(null);\n const model = useProxiedModel(props, 'modelValue', undefined, v => {\n if (v == null || v === '') return null;\n let c;\n try {\n c = RGBtoHSV(parseColor(v));\n } catch (err) {\n consoleWarn(err);\n return null;\n }\n return c;\n }, v => {\n if (!v) return null;\n return extractColor(v, props.modelValue);\n });\n const currentColor = computed(() => {\n return model.value ? {\n ...model.value,\n h: hue.value ?? model.value.h\n } : null;\n });\n const {\n rtlClasses\n } = useRtl();\n let externalChange = true;\n watch(model, v => {\n if (!externalChange) {\n // prevent hue shift from rgb conversion inaccuracy\n externalChange = true;\n return;\n }\n if (!v) return;\n hue.value = v.h;\n }, {\n immediate: true\n });\n const updateColor = hsva => {\n externalChange = false;\n hue.value = hsva.h;\n model.value = hsva;\n };\n onMounted(() => {\n if (!props.modes.includes(mode.value)) mode.value = props.modes[0];\n });\n provideDefaults({\n VSlider: {\n color: undefined,\n trackColor: undefined,\n trackFillColor: undefined\n }\n });\n useRender(() => {\n const sheetProps = VSheet.filterProps(props);\n return _createVNode(VSheet, _mergeProps({\n \"rounded\": props.rounded,\n \"elevation\": props.elevation,\n \"theme\": props.theme,\n \"class\": ['v-color-picker', rtlClasses.value, props.class],\n \"style\": [{\n '--v-color-picker-color-hsv': HSVtoCSS({\n ...(currentColor.value ?? nullColor),\n a: 1\n })\n }, props.style]\n }, sheetProps, {\n \"maxWidth\": props.width\n }), {\n default: () => [!props.hideCanvas && _createVNode(VColorPickerCanvas, {\n \"key\": \"canvas\",\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"disabled\": props.disabled,\n \"dotSize\": props.dotSize,\n \"width\": props.width,\n \"height\": props.canvasHeight\n }, null), (!props.hideSliders || !props.hideInputs) && _createVNode(\"div\", {\n \"key\": \"controls\",\n \"class\": \"v-color-picker__controls\"\n }, [!props.hideSliders && _createVNode(VColorPickerPreview, {\n \"key\": \"preview\",\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"hideAlpha\": !mode.value.endsWith('a'),\n \"disabled\": props.disabled\n }, null), !props.hideInputs && _createVNode(VColorPickerEdit, {\n \"key\": \"edit\",\n \"modes\": props.modes,\n \"mode\": mode.value,\n \"onUpdate:mode\": m => mode.value = m,\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"disabled\": props.disabled\n }, null)]), props.showSwatches && _createVNode(VColorPickerSwatches, {\n \"key\": \"swatches\",\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"maxHeight\": props.swatchesMaxHeight,\n \"swatches\": props.swatches,\n \"disabled\": props.disabled\n }, null)]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VColorPicker.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VCombobox.css\";\n\n// Components\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VList, VListItem } from \"../VList/index.mjs\";\nimport { VMenu } from \"../VMenu/index.mjs\";\nimport { makeSelectProps } from \"../VSelect/VSelect.mjs\";\nimport { VTextField } from \"../VTextField/index.mjs\";\nimport { makeVTextFieldProps } from \"../VTextField/VTextField.mjs\";\nimport { VVirtualScroll } from \"../VVirtualScroll/index.mjs\"; // Composables\nimport { useScrolling } from \"../VSelect/useScrolling.mjs\";\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { useForm } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { transformItem, useItems } from \"../../composables/list-items.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTransitionProps } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';\nimport { checkPrintable, ensureValidVNode, genericComponent, IN_BROWSER, isComposingIgnoreKey, noop, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nfunction highlightResult(text, matches, length) {\n if (matches == null) return text;\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented');\n return typeof matches === 'number' && ~matches ? _createVNode(_Fragment, null, [_createVNode(\"span\", {\n \"class\": \"v-combobox__unmask\"\n }, [text.substr(0, matches)]), _createVNode(\"span\", {\n \"class\": \"v-combobox__mask\"\n }, [text.substr(matches, length)]), _createVNode(\"span\", {\n \"class\": \"v-combobox__unmask\"\n }, [text.substr(matches + length)])]) : text;\n}\nexport const makeVComboboxProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String]\n },\n clearOnSelect: {\n type: Boolean,\n default: true\n },\n delimiters: Array,\n ...makeFilterProps({\n filterKeys: ['title']\n }),\n ...makeSelectProps({\n hideNoData: true,\n returnObject: true\n }),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox'\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({\n transition: false\n })\n}, 'VCombobox');\nexport const VCombobox = genericComponent()({\n name: 'VCombobox',\n props: makeVComboboxProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:search': value => true,\n 'update:menu': value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const vTextFieldRef = ref();\n const isFocused = shallowRef(false);\n const isPristine = shallowRef(true);\n const listHasFocus = shallowRef(false);\n const vMenuRef = ref();\n const vVirtualScrollRef = ref();\n const _menu = useProxiedModel(props, 'menu');\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;\n _menu.value = v;\n }\n });\n const selectionIndex = shallowRef(-1);\n let cleared = false;\n const color = computed(() => vTextFieldRef.value?.color);\n const label = computed(() => menu.value ? props.closeText : props.openText);\n const {\n items,\n transformIn,\n transformOut\n } = useItems(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(color);\n const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {\n const transformed = transformOut(v);\n return props.multiple ? transformed : transformed[0] ?? null;\n });\n const form = useForm();\n const hasChips = computed(() => !!(props.chips || slots.chip));\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);\n const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');\n const search = computed({\n get: () => {\n return _search.value;\n },\n set: val => {\n _search.value = val ?? '';\n if (!props.multiple && !hasSelectionSlot.value) {\n model.value = [transformItem(props, val)];\n }\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim();\n if (v) select(transformItem(props, v));\n });\n _search.value = '';\n }\n }\n if (!val) selectionIndex.value = -1;\n isPristine.value = !val;\n }\n });\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;\n });\n watch(_search, value => {\n if (cleared) {\n // wait for clear to finish, VTextField sets _search to null\n // then search computed triggers and updates _search to ''\n nextTick(() => cleared = false);\n } else if (isFocused.value && !menu.value) {\n menu.value = true;\n }\n emit('update:search', value);\n });\n watch(model, value => {\n if (!props.multiple && !hasSelectionSlot.value) {\n _search.value = value[0]?.title ?? '';\n }\n });\n const {\n filteredItems,\n getMatches\n } = useFilter(props, items, () => isPristine.value ? '' : search.value);\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));\n }\n return filteredItems.value;\n });\n const selectedValues = computed(() => model.value.map(selection => selection.value));\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;\n return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;\n });\n const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);\n const listRef = ref();\n const listEvents = useScrolling(listRef, vTextFieldRef);\n function onClear(e) {\n cleared = true;\n if (props.openOnClear) {\n menu.value = true;\n }\n }\n function onMousedownControl() {\n if (menuDisabled.value) return;\n menu.value = true;\n }\n function onMousedownMenuIcon(e) {\n if (menuDisabled.value) return;\n if (isFocused.value) {\n e.preventDefault();\n e.stopPropagation();\n }\n menu.value = !menu.value;\n }\n function onListKeydown(e) {\n if (checkPrintable(e)) {\n vTextFieldRef.value?.focus();\n }\n }\n // eslint-disable-next-line complexity\n function onKeydown(e) {\n if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;\n const selectionStart = vTextFieldRef.value.selectionStart;\n const length = model.value.length;\n if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n }\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true;\n }\n if (['Escape'].includes(e.key)) {\n menu.value = false;\n }\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key) && !model.value.some(_ref2 => {\n let {\n value\n } = _ref2;\n return value === displayItems.value[0].value;\n })) {\n select(filteredItems.value[0]);\n }\n isPristine.value = true;\n }\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next');\n }\n if (e.key === 'Enter' && search.value) {\n select(transformItem(props, search.value));\n if (hasSelectionSlot.value) _search.value = '';\n }\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);\n if (~selectionIndex.value) {\n const originalSelectionIndex = selectionIndex.value;\n select(model.value[selectionIndex.value], false);\n selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1;\n }\n }\n if (!props.multiple) return;\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return;\n const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;\n if (model.value[prev]) {\n selectionIndex.value = prev;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length);\n }\n }\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return;\n const next = selectionIndex.value + 1;\n if (model.value[next]) {\n selectionIndex.value = next;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(0, 0);\n }\n }\n }\n function onAfterEnter() {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems();\n }\n }\n function onAfterLeave() {\n if (isFocused.value) {\n isPristine.value = true;\n vTextFieldRef.value?.focus();\n }\n }\n /** @param set - null means toggle */\n function select(item) {\n let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (!item || item.props.disabled) return;\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));\n const add = set == null ? !~index : set;\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value];\n value.splice(index, 1);\n model.value = value;\n } else if (add) {\n model.value = [...model.value, item];\n }\n if (props.clearOnSelect) {\n search.value = '';\n }\n } else {\n const add = set !== false;\n model.value = add ? [item] : [];\n _search.value = add && !hasSelectionSlot.value ? item.title : '';\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false;\n isPristine.value = true;\n });\n }\n }\n function onFocusin(e) {\n isFocused.value = true;\n setTimeout(() => {\n listHasFocus.value = true;\n });\n }\n function onFocusout(e) {\n listHasFocus.value = false;\n }\n function onUpdateModelValue(v) {\n if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];\n }\n watch(isFocused, (val, oldVal) => {\n if (val || val === oldVal) return;\n selectionIndex.value = -1;\n menu.value = false;\n if (search.value) {\n if (props.multiple) {\n select(transformItem(props, search.value));\n return;\n }\n if (!hasSelectionSlot.value) return;\n if (model.value.some(_ref3 => {\n let {\n title\n } = _ref3;\n return title === search.value;\n })) {\n _search.value = '';\n } else {\n select(transformItem(props, search.value));\n }\n }\n });\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n });\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return;\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true;\n }\n });\n useRender(() => {\n const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);\n const isDirty = model.value.length > 0;\n const textFieldProps = VTextField.filterProps(props);\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": search.value,\n \"onUpdate:modelValue\": [$event => search.value = $event, onUpdateModelValue],\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.externalValue,\n \"counterValue\": counterValue.value,\n \"dirty\": isDirty,\n \"class\": ['v-combobox', {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selection-slot': !!hasSelectionSlot.value,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true\n }, props.class],\n \"style\": props.style,\n \"readonly\": props.readonly,\n \"placeholder\": isDirty ? undefined : props.placeholder,\n \"onClick:clear\": onClear,\n \"onMousedown:control\": onMousedownControl,\n \"onKeydown\": onKeydown\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({\n \"ref\": vMenuRef,\n \"modelValue\": menu.value,\n \"onUpdate:modelValue\": $event => menu.value = $event,\n \"activator\": \"parent\",\n \"contentClass\": \"v-combobox__content\",\n \"disabled\": menuDisabled.value,\n \"eager\": props.eager,\n \"maxHeight\": 310,\n \"openOnClick\": false,\n \"closeOnContentClick\": false,\n \"transition\": props.transition,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, props.menuProps), {\n default: () => [hasList && _createVNode(VList, _mergeProps({\n \"ref\": listRef,\n \"selected\": selectedValues.value,\n \"selectStrategy\": props.multiple ? 'independent' : 'single-independent',\n \"onMousedown\": e => e.preventDefault(),\n \"onKeydown\": onListKeydown,\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"tabindex\": \"-1\",\n \"aria-live\": \"polite\",\n \"color\": props.itemColor ?? props.color\n }, listEvents, props.listProps), {\n default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {\n \"title\": t(props.noDataText)\n }, null)), _createVNode(VVirtualScroll, {\n \"ref\": vVirtualScrollRef,\n \"renderless\": true,\n \"items\": displayItems.value\n }, {\n default: _ref4 => {\n let {\n item,\n index,\n itemRef\n } = _ref4;\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n active: highlightFirst.value && index === 0 ? true : undefined,\n onClick: () => select(item, null)\n });\n return slots.item?.({\n item,\n index,\n props: itemProps\n }) ?? _createVNode(VListItem, _mergeProps(itemProps, {\n \"role\": \"option\"\n }), {\n prepend: _ref5 => {\n let {\n isSelected\n } = _ref5;\n return _createVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {\n \"key\": item.value,\n \"modelValue\": isSelected,\n \"ripple\": false,\n \"tabindex\": \"-1\"\n }, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {\n \"image\": item.props.prependAvatar\n }, null), item.props.prependIcon && _createVNode(VIcon, {\n \"icon\": item.props.prependIcon\n }, null)]);\n },\n title: () => {\n return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);\n }\n });\n }\n }), slots['append-item']?.()]\n })]\n }), model.value.map((item, index) => {\n function onChipClose(e) {\n e.stopPropagation();\n e.preventDefault();\n select(item, false);\n }\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n onChipClose(e);\n },\n onMousedown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined\n };\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;\n const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({\n item,\n index,\n props: slotProps\n }) : slots.selection({\n item,\n index\n })) : undefined;\n if (hasSlot && !slotContent) return undefined;\n return _createVNode(\"div\", {\n \"key\": item.value,\n \"class\": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],\n \"style\": index === selectionIndex.value ? textColorStyles.value : {}\n }, [hasChips.value ? !slots.chip ? _createVNode(VChip, _mergeProps({\n \"key\": \"chip\",\n \"closable\": props.closableChips,\n \"size\": \"small\",\n \"text\": item.title,\n \"disabled\": item.props.disabled\n }, slotProps), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"chip-defaults\",\n \"defaults\": {\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title\n }\n }\n }, {\n default: () => [slotContent]\n }) : slotContent ?? _createVNode(\"span\", {\n \"class\": \"v-combobox__selection-text\"\n }, [item.title, props.multiple && index < model.value.length - 1 && _createVNode(\"span\", {\n \"class\": \"v-combobox__selection-comma\"\n }, [_createTextVNode(\",\")])])]);\n })]),\n 'append-inner': function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(_Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? _createVNode(VIcon, {\n \"class\": \"v-combobox__menu-icon\",\n \"icon\": props.menuIcon,\n \"onMousedown\": onMousedownMenuIcon,\n \"onClick\": noop,\n \"aria-label\": t(label.value),\n \"title\": t(label.value),\n \"tabindex\": \"-1\"\n }, null) : undefined]);\n }\n });\n });\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select\n }, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VCombobox.mjs.map","// Utilities\nimport { createRange, padStart } from \"../../../util/index.mjs\"; // Types\nconst firstDay = {\n '001': 1,\n AD: 1,\n AE: 6,\n AF: 6,\n AG: 0,\n AI: 1,\n AL: 1,\n AM: 1,\n AN: 1,\n AR: 1,\n AS: 0,\n AT: 1,\n AU: 1,\n AX: 1,\n AZ: 1,\n BA: 1,\n BD: 0,\n BE: 1,\n BG: 1,\n BH: 6,\n BM: 1,\n BN: 1,\n BR: 0,\n BS: 0,\n BT: 0,\n BW: 0,\n BY: 1,\n BZ: 0,\n CA: 0,\n CH: 1,\n CL: 1,\n CM: 1,\n CN: 1,\n CO: 0,\n CR: 1,\n CY: 1,\n CZ: 1,\n DE: 1,\n DJ: 6,\n DK: 1,\n DM: 0,\n DO: 0,\n DZ: 6,\n EC: 1,\n EE: 1,\n EG: 6,\n ES: 1,\n ET: 0,\n FI: 1,\n FJ: 1,\n FO: 1,\n FR: 1,\n GB: 1,\n 'GB-alt-variant': 0,\n GE: 1,\n GF: 1,\n GP: 1,\n GR: 1,\n GT: 0,\n GU: 0,\n HK: 0,\n HN: 0,\n HR: 1,\n HU: 1,\n ID: 0,\n IE: 1,\n IL: 0,\n IN: 0,\n IQ: 6,\n IR: 6,\n IS: 1,\n IT: 1,\n JM: 0,\n JO: 6,\n JP: 0,\n KE: 0,\n KG: 1,\n KH: 0,\n KR: 0,\n KW: 6,\n KZ: 1,\n LA: 0,\n LB: 1,\n LI: 1,\n LK: 1,\n LT: 1,\n LU: 1,\n LV: 1,\n LY: 6,\n MC: 1,\n MD: 1,\n ME: 1,\n MH: 0,\n MK: 1,\n MM: 0,\n MN: 1,\n MO: 0,\n MQ: 1,\n MT: 0,\n MV: 5,\n MX: 0,\n MY: 1,\n MZ: 0,\n NI: 0,\n NL: 1,\n NO: 1,\n NP: 0,\n NZ: 1,\n OM: 6,\n PA: 0,\n PE: 0,\n PH: 0,\n PK: 0,\n PL: 1,\n PR: 0,\n PT: 0,\n PY: 0,\n QA: 6,\n RE: 1,\n RO: 1,\n RS: 1,\n RU: 1,\n SA: 0,\n SD: 6,\n SE: 1,\n SG: 0,\n SI: 1,\n SK: 1,\n SM: 1,\n SV: 0,\n SY: 6,\n TH: 0,\n TJ: 1,\n TM: 1,\n TR: 1,\n TT: 0,\n TW: 0,\n UA: 1,\n UM: 0,\n US: 0,\n UY: 1,\n UZ: 1,\n VA: 1,\n VE: 0,\n VI: 0,\n VN: 1,\n WS: 0,\n XK: 1,\n YE: 0,\n ZA: 0,\n ZW: 0\n};\nfunction getWeekArray(date, locale, firstDayOfWeek) {\n const weeks = [];\n let currentWeek = [];\n const firstDayOfMonth = startOfMonth(date);\n const lastDayOfMonth = endOfMonth(date);\n const first = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;\n const firstDayWeekIndex = (firstDayOfMonth.getDay() - first + 7) % 7;\n const lastDayWeekIndex = (lastDayOfMonth.getDay() - first + 7) % 7;\n for (let i = 0; i < firstDayWeekIndex; i++) {\n const adjacentDay = new Date(firstDayOfMonth);\n adjacentDay.setDate(adjacentDay.getDate() - (firstDayWeekIndex - i));\n currentWeek.push(adjacentDay);\n }\n for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {\n const day = new Date(date.getFullYear(), date.getMonth(), i);\n\n // Add the day to the current week\n currentWeek.push(day);\n\n // If the current week has 7 days, add it to the weeks array and start a new week\n if (currentWeek.length === 7) {\n weeks.push(currentWeek);\n currentWeek = [];\n }\n }\n for (let i = 1; i < 7 - lastDayWeekIndex; i++) {\n const adjacentDay = new Date(lastDayOfMonth);\n adjacentDay.setDate(adjacentDay.getDate() + i);\n currentWeek.push(adjacentDay);\n }\n if (currentWeek.length > 0) {\n weeks.push(currentWeek);\n }\n return weeks;\n}\nfunction startOfWeek(date, locale, firstDayOfWeek) {\n const day = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;\n const d = new Date(date);\n while (d.getDay() !== day) {\n d.setDate(d.getDate() - 1);\n }\n return d;\n}\nfunction endOfWeek(date, locale) {\n const d = new Date(date);\n const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7;\n while (d.getDay() !== lastDay) {\n d.setDate(d.getDate() + 1);\n }\n return d;\n}\nfunction startOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\nfunction endOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\nfunction parseLocalDate(value) {\n const parts = value.split('-').map(Number);\n\n // new Date() uses local time zone when passing individual date component values\n return new Date(parts[0], parts[1] - 1, parts[2]);\n}\nconst _YYYMMDD = /^([12]\\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\\d|3[01]))$/;\nfunction date(value) {\n if (value == null) return new Date();\n if (value instanceof Date) return value;\n if (typeof value === 'string') {\n let parsed;\n if (_YYYMMDD.test(value)) {\n return parseLocalDate(value);\n } else {\n parsed = Date.parse(value);\n }\n if (!isNaN(parsed)) return new Date(parsed);\n }\n return null;\n}\nconst sundayJanuarySecond2000 = new Date(2000, 0, 2);\nfunction getWeekdays(locale, firstDayOfWeek) {\n const daysFromSunday = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;\n return createRange(7).map(i => {\n const weekday = new Date(sundayJanuarySecond2000);\n weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);\n return new Intl.DateTimeFormat(locale, {\n weekday: 'narrow'\n }).format(weekday);\n });\n}\nfunction format(value, formatString, locale, formats) {\n const newDate = date(value) ?? new Date();\n const customFormat = formats?.[formatString];\n if (typeof customFormat === 'function') {\n return customFormat(newDate, formatString, locale);\n }\n let options = {};\n switch (formatString) {\n case 'fullDate':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n break;\n case 'fullDateWithWeekday':\n options = {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n break;\n case 'normalDate':\n const day = newDate.getDate();\n const month = new Intl.DateTimeFormat(locale, {\n month: 'long'\n }).format(newDate);\n return `${day} ${month}`;\n case 'normalDateWithWeekday':\n options = {\n weekday: 'short',\n day: 'numeric',\n month: 'short'\n };\n break;\n case 'shortDate':\n options = {\n month: 'short',\n day: 'numeric'\n };\n break;\n case 'year':\n options = {\n year: 'numeric'\n };\n break;\n case 'month':\n options = {\n month: 'long'\n };\n break;\n case 'monthShort':\n options = {\n month: 'short'\n };\n break;\n case 'monthAndYear':\n options = {\n month: 'long',\n year: 'numeric'\n };\n break;\n case 'monthAndDate':\n options = {\n month: 'long',\n day: 'numeric'\n };\n break;\n case 'weekday':\n options = {\n weekday: 'long'\n };\n break;\n case 'weekdayShort':\n options = {\n weekday: 'short'\n };\n break;\n case 'dayOfMonth':\n return new Intl.NumberFormat(locale).format(newDate.getDate());\n case 'hours12h':\n options = {\n hour: 'numeric',\n hour12: true\n };\n break;\n case 'hours24h':\n options = {\n hour: 'numeric',\n hour12: false\n };\n break;\n case 'minutes':\n options = {\n minute: 'numeric'\n };\n break;\n case 'seconds':\n options = {\n second: 'numeric'\n };\n break;\n case 'fullTime':\n options = {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullTime12h':\n options = {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullTime24h':\n options = {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n case 'fullDateTime':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullDateTime12h':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullDateTime24h':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n case 'keyboardDate':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n };\n break;\n case 'keyboardDateTime':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n case 'keyboardDateTime12h':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'keyboardDateTime24h':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n default:\n options = customFormat ?? {\n timeZone: 'UTC',\n timeZoneName: 'short'\n };\n }\n return new Intl.DateTimeFormat(locale, options).format(newDate);\n}\nfunction toISO(adapter, value) {\n const date = adapter.toJsDate(value);\n const year = date.getFullYear();\n const month = padStart(String(date.getMonth() + 1), 2, '0');\n const day = padStart(String(date.getDate()), 2, '0');\n return `${year}-${month}-${day}`;\n}\nfunction parseISO(value) {\n const [year, month, day] = value.split('-').map(Number);\n return new Date(year, month - 1, day);\n}\nfunction addMinutes(date, amount) {\n const d = new Date(date);\n d.setMinutes(d.getMinutes() + amount);\n return d;\n}\nfunction addHours(date, amount) {\n const d = new Date(date);\n d.setHours(d.getHours() + amount);\n return d;\n}\nfunction addDays(date, amount) {\n const d = new Date(date);\n d.setDate(d.getDate() + amount);\n return d;\n}\nfunction addWeeks(date, amount) {\n const d = new Date(date);\n d.setDate(d.getDate() + amount * 7);\n return d;\n}\nfunction addMonths(date, amount) {\n const d = new Date(date);\n d.setDate(1);\n d.setMonth(d.getMonth() + amount);\n return d;\n}\nfunction getYear(date) {\n return date.getFullYear();\n}\nfunction getMonth(date) {\n return date.getMonth();\n}\nfunction getDate(date) {\n return date.getDate();\n}\nfunction getNextMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 1);\n}\nfunction getPreviousMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() - 1, 1);\n}\nfunction getHours(date) {\n return date.getHours();\n}\nfunction getMinutes(date) {\n return date.getMinutes();\n}\nfunction startOfYear(date) {\n return new Date(date.getFullYear(), 0, 1);\n}\nfunction endOfYear(date) {\n return new Date(date.getFullYear(), 11, 31);\n}\nfunction isWithinRange(date, range) {\n return isAfter(date, range[0]) && isBefore(date, range[1]);\n}\nfunction isValid(date) {\n const d = new Date(date);\n return d instanceof Date && !isNaN(d.getTime());\n}\nfunction isAfter(date, comparing) {\n return date.getTime() > comparing.getTime();\n}\nfunction isAfterDay(date, comparing) {\n return isAfter(startOfDay(date), startOfDay(comparing));\n}\nfunction isBefore(date, comparing) {\n return date.getTime() < comparing.getTime();\n}\nfunction isEqual(date, comparing) {\n return date.getTime() === comparing.getTime();\n}\nfunction isSameDay(date, comparing) {\n return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();\n}\nfunction isSameMonth(date, comparing) {\n return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();\n}\nfunction isSameYear(date, comparing) {\n return date.getFullYear() === comparing.getFullYear();\n}\nfunction getDiff(date, comparing, unit) {\n const d = new Date(date);\n const c = new Date(comparing);\n switch (unit) {\n case 'years':\n return d.getFullYear() - c.getFullYear();\n case 'quarters':\n return Math.floor((d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12) / 4);\n case 'months':\n return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;\n case 'weeks':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24 * 7));\n case 'days':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));\n case 'hours':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60));\n case 'minutes':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60));\n case 'seconds':\n return Math.floor((d.getTime() - c.getTime()) / 1000);\n default:\n {\n return d.getTime() - c.getTime();\n }\n }\n}\nfunction setHours(date, count) {\n const d = new Date(date);\n d.setHours(count);\n return d;\n}\nfunction setMinutes(date, count) {\n const d = new Date(date);\n d.setMinutes(count);\n return d;\n}\nfunction setMonth(date, count) {\n const d = new Date(date);\n d.setMonth(count);\n return d;\n}\nfunction setDate(date, day) {\n const d = new Date(date);\n d.setDate(day);\n return d;\n}\nfunction setYear(date, year) {\n const d = new Date(date);\n d.setFullYear(year);\n return d;\n}\nfunction startOfDay(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);\n}\nfunction endOfDay(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);\n}\nexport class VuetifyDateAdapter {\n constructor(options) {\n this.locale = options.locale;\n this.formats = options.formats;\n }\n date(value) {\n return date(value);\n }\n toJsDate(date) {\n return date;\n }\n toISO(date) {\n return toISO(this, date);\n }\n parseISO(date) {\n return parseISO(date);\n }\n addMinutes(date, amount) {\n return addMinutes(date, amount);\n }\n addHours(date, amount) {\n return addHours(date, amount);\n }\n addDays(date, amount) {\n return addDays(date, amount);\n }\n addWeeks(date, amount) {\n return addWeeks(date, amount);\n }\n addMonths(date, amount) {\n return addMonths(date, amount);\n }\n getWeekArray(date, firstDayOfWeek) {\n return getWeekArray(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);\n }\n startOfWeek(date, firstDayOfWeek) {\n return startOfWeek(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);\n }\n endOfWeek(date) {\n return endOfWeek(date, this.locale);\n }\n startOfMonth(date) {\n return startOfMonth(date);\n }\n endOfMonth(date) {\n return endOfMonth(date);\n }\n format(date, formatString) {\n return format(date, formatString, this.locale, this.formats);\n }\n isEqual(date, comparing) {\n return isEqual(date, comparing);\n }\n isValid(date) {\n return isValid(date);\n }\n isWithinRange(date, range) {\n return isWithinRange(date, range);\n }\n isAfter(date, comparing) {\n return isAfter(date, comparing);\n }\n isAfterDay(date, comparing) {\n return isAfterDay(date, comparing);\n }\n isBefore(date, comparing) {\n return !isAfter(date, comparing) && !isEqual(date, comparing);\n }\n isSameDay(date, comparing) {\n return isSameDay(date, comparing);\n }\n isSameMonth(date, comparing) {\n return isSameMonth(date, comparing);\n }\n isSameYear(date, comparing) {\n return isSameYear(date, comparing);\n }\n setMinutes(date, count) {\n return setMinutes(date, count);\n }\n setHours(date, count) {\n return setHours(date, count);\n }\n setMonth(date, count) {\n return setMonth(date, count);\n }\n setDate(date, day) {\n return setDate(date, day);\n }\n setYear(date, year) {\n return setYear(date, year);\n }\n getDiff(date, comparing, unit) {\n return getDiff(date, comparing, unit);\n }\n getWeekdays(firstDayOfWeek) {\n return getWeekdays(this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);\n }\n getYear(date) {\n return getYear(date);\n }\n getMonth(date) {\n return getMonth(date);\n }\n getDate(date) {\n return getDate(date);\n }\n getNextMonth(date) {\n return getNextMonth(date);\n }\n getPreviousMonth(date) {\n return getPreviousMonth(date);\n }\n getHours(date) {\n return getHours(date);\n }\n getMinutes(date) {\n return getMinutes(date);\n }\n startOfDay(date) {\n return startOfDay(date);\n }\n endOfDay(date) {\n return endOfDay(date);\n }\n startOfYear(date) {\n return startOfYear(date);\n }\n endOfYear(date) {\n return endOfYear(date);\n }\n}\n//# sourceMappingURL=vuetify.mjs.map","// Composables\nimport { useLocale } from \"../locale.mjs\"; // Utilities\nimport { inject, reactive, watch } from 'vue';\nimport { mergeDeep } from \"../../util/index.mjs\"; // Types\n// Adapters\nimport { VuetifyDateAdapter } from \"./adapters/vuetify.mjs\";\n/** Supports module augmentation to specify date adapter types */\nexport let DateModule;\nexport const DateOptionsSymbol = Symbol.for('vuetify:date-options');\nexport const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');\nexport function createDate(options, locale) {\n const _options = mergeDeep({\n adapter: VuetifyDateAdapter,\n locale: {\n af: 'af-ZA',\n // ar: '', # not the same value for all variants\n bg: 'bg-BG',\n ca: 'ca-ES',\n ckb: '',\n cs: 'cs-CZ',\n de: 'de-DE',\n el: 'el-GR',\n en: 'en-US',\n // es: '', # not the same value for all variants\n et: 'et-EE',\n fa: 'fa-IR',\n fi: 'fi-FI',\n // fr: '', #not the same value for all variants\n hr: 'hr-HR',\n hu: 'hu-HU',\n he: 'he-IL',\n id: 'id-ID',\n it: 'it-IT',\n ja: 'ja-JP',\n ko: 'ko-KR',\n lv: 'lv-LV',\n lt: 'lt-LT',\n nl: 'nl-NL',\n no: 'no-NO',\n pl: 'pl-PL',\n pt: 'pt-PT',\n ro: 'ro-RO',\n ru: 'ru-RU',\n sk: 'sk-SK',\n sl: 'sl-SI',\n srCyrl: 'sr-SP',\n srLatn: 'sr-SP',\n sv: 'sv-SE',\n th: 'th-TH',\n tr: 'tr-TR',\n az: 'az-AZ',\n uk: 'uk-UA',\n vi: 'vi-VN',\n zhHans: 'zh-CN',\n zhHant: 'zh-TW'\n }\n }, options);\n return {\n options: _options,\n instance: createInstance(_options, locale)\n };\n}\nfunction createInstance(options, locale) {\n const instance = reactive(typeof options.adapter === 'function'\n // eslint-disable-next-line new-cap\n ? new options.adapter({\n locale: options.locale[locale.current.value] ?? locale.current.value,\n formats: options.formats\n }) : options.adapter);\n watch(locale.current, value => {\n instance.locale = options.locale[value] ?? value ?? instance.locale;\n });\n return instance;\n}\nexport function useDate() {\n const options = inject(DateOptionsSymbol);\n if (!options) throw new Error('[Vuetify] Could not find injected date options');\n const locale = useLocale();\n return createInstance(options, locale);\n}\n\n// https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024\nexport function getWeek(adapter, value) {\n const date = adapter.toJsDate(value);\n let year = date.getFullYear();\n let d1w1 = new Date(year, 0, 1);\n if (date < d1w1) {\n year = year - 1;\n d1w1 = new Date(year, 0, 1);\n } else {\n const tv = new Date(year + 1, 0, 1);\n if (date >= tv) {\n year = year + 1;\n d1w1 = tv;\n }\n }\n const diffTime = Math.abs(date.getTime() - d1w1.getTime());\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n return Math.floor(diffDays / 7) + 1;\n}\n//# sourceMappingURL=date.mjs.map","import { createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useLocale } from \"../../composables/index.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref, toRaw, watchEffect } from 'vue';\nimport { deepEqual, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVConfirmEditProps = propsFactory({\n modelValue: null,\n color: String,\n cancelText: {\n type: String,\n default: '$vuetify.confirmEdit.cancel'\n },\n okText: {\n type: String,\n default: '$vuetify.confirmEdit.ok'\n }\n}, 'VConfirmEdit');\nexport const VConfirmEdit = genericComponent()({\n name: 'VConfirmEdit',\n props: makeVConfirmEditProps(),\n emits: {\n cancel: () => true,\n save: value => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const internalModel = ref();\n watchEffect(() => {\n internalModel.value = structuredClone(toRaw(model.value));\n });\n const {\n t\n } = useLocale();\n const isPristine = computed(() => {\n return deepEqual(model.value, internalModel.value);\n });\n function save() {\n model.value = internalModel.value;\n emit('save', internalModel.value);\n }\n function cancel() {\n internalModel.value = structuredClone(toRaw(model.value));\n emit('cancel');\n }\n let actionsUsed = false;\n useRender(() => {\n const actions = _createVNode(_Fragment, null, [_createVNode(VBtn, {\n \"disabled\": isPristine.value,\n \"variant\": \"text\",\n \"color\": props.color,\n \"onClick\": cancel,\n \"text\": t(props.cancelText)\n }, null), _createVNode(VBtn, {\n \"disabled\": isPristine.value,\n \"variant\": \"text\",\n \"color\": props.color,\n \"onClick\": save,\n \"text\": t(props.okText)\n }, null)]);\n return _createVNode(_Fragment, null, [slots.default?.({\n model: internalModel,\n save,\n cancel,\n isPristine: isPristine.value,\n get actions() {\n actionsUsed = true;\n return actions;\n }\n }), !actionsUsed && actions]);\n });\n return {\n save,\n cancel,\n isPristine\n };\n }\n});\n//# sourceMappingURL=VConfirmEdit.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { inject, provide, toRef } from 'vue';\nimport { propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableExpandProps = propsFactory({\n expandOnClick: Boolean,\n showExpand: Boolean,\n expanded: {\n type: Array,\n default: () => []\n }\n}, 'DataTable-expand');\nexport const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');\nexport function provideExpanded(props) {\n const expandOnClick = toRef(props, 'expandOnClick');\n const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {\n return new Set(v);\n }, v => {\n return [...v.values()];\n });\n function expand(item, value) {\n const newExpanded = new Set(expanded.value);\n if (!value) {\n newExpanded.delete(item.value);\n } else {\n newExpanded.add(item.value);\n }\n expanded.value = newExpanded;\n }\n function isExpanded(item) {\n return expanded.value.has(item.value);\n }\n function toggleExpand(item) {\n expand(item, !isExpanded(item));\n }\n const data = {\n expand,\n expanded,\n expandOnClick,\n isExpanded,\n toggleExpand\n };\n provide(VDataTableExpandedKey, data);\n return data;\n}\nexport function useExpanded() {\n const data = inject(VDataTableExpandedKey);\n if (!data) throw new Error('foo');\n return data;\n}\n//# sourceMappingURL=expand.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide, ref } from 'vue';\nimport { getObjectValueByPath, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array,\n default: () => []\n }\n}, 'DataTable-group');\nconst VDataTableGroupSymbol = Symbol.for('vuetify:data-table-group');\nexport function createGroupBy(props) {\n const groupBy = useProxiedModel(props, 'groupBy');\n return {\n groupBy\n };\n}\nexport function provideGroupBy(options) {\n const {\n disableSort,\n groupBy,\n sortBy\n } = options;\n const opened = ref(new Set());\n const sortByWithGroups = computed(() => {\n return groupBy.value.map(val => ({\n ...val,\n order: val.order ?? false\n })).concat(disableSort?.value ? [] : sortBy.value);\n });\n function isGroupOpen(group) {\n return opened.value.has(group.id);\n }\n function toggleGroup(group) {\n const newOpened = new Set(opened.value);\n if (!isGroupOpen(group)) newOpened.add(group.id);else newOpened.delete(group.id);\n opened.value = newOpened;\n }\n function extractRows(items) {\n function dive(group) {\n const arr = [];\n for (const item of group.items) {\n if ('type' in item && item.type === 'group') {\n arr.push(...dive(item));\n } else {\n arr.push(item);\n }\n }\n return arr;\n }\n return dive({\n type: 'group',\n items,\n id: 'dummy',\n key: 'dummy',\n value: 'dummy',\n depth: 0\n });\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = {\n sortByWithGroups,\n toggleGroup,\n opened,\n groupBy,\n extractRows,\n isGroupOpen\n };\n provide(VDataTableGroupSymbol, data);\n return data;\n}\nexport function useGroupBy() {\n const data = inject(VDataTableGroupSymbol);\n if (!data) throw new Error('Missing group!');\n return data;\n}\nfunction groupItemsByProperty(items, groupBy) {\n if (!items.length) return [];\n const groups = new Map();\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy);\n if (!groups.has(value)) {\n groups.set(value, []);\n }\n groups.get(value).push(item);\n }\n return groups;\n}\nfunction groupItems(items, groupBy) {\n let depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let prefix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'root';\n if (!groupBy.length) return [];\n const groupedItems = groupItemsByProperty(items, groupBy[0]);\n const groups = [];\n const rest = groupBy.slice(1);\n groupedItems.forEach((items, value) => {\n const key = groupBy[0];\n const id = `${prefix}_${key}_${value}`;\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group'\n });\n });\n return groups;\n}\nfunction flattenItems(items, opened) {\n const flatItems = [];\n for (const item of items) {\n // TODO: make this better\n if ('type' in item && item.type === 'group') {\n if (item.value != null) {\n flatItems.push(item);\n }\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened));\n }\n } else {\n flatItems.push(item);\n }\n }\n return flatItems;\n}\nexport function useGroupedItems(items, groupBy, opened) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value;\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key));\n return flattenItems(groupedItems, opened.value);\n });\n return {\n flatItems\n };\n}\n//# sourceMappingURL=group.mjs.map","// Utilities\nimport { computed, watch } from 'vue';\nimport { deepEqual, getCurrentInstance } from \"../../../util/index.mjs\"; // Types\nexport function useOptions(_ref) {\n let {\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search\n } = _ref;\n const vm = getCurrentInstance('VDataTable');\n const options = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n groupBy: groupBy.value,\n search: search.value\n }));\n let oldOptions = null;\n watch(options, () => {\n if (deepEqual(oldOptions, options.value)) return;\n\n // Reset page when searching\n if (oldOptions && oldOptions.search !== options.value.search) {\n page.value = 1;\n }\n vm.emit('update:options', options.value);\n oldOptions = options.value;\n }, {\n deep: true,\n immediate: true\n });\n}\n//# sourceMappingURL=options.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide, watch, watchEffect } from 'vue';\nimport { clamp, getCurrentInstance, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTablePaginateProps = propsFactory({\n page: {\n type: [Number, String],\n default: 1\n },\n itemsPerPage: {\n type: [Number, String],\n default: 10\n }\n}, 'DataTable-paginate');\nconst VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');\nexport function createPagination(props) {\n const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));\n const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10));\n return {\n page,\n itemsPerPage\n };\n}\nexport function providePagination(options) {\n const {\n page,\n itemsPerPage,\n itemsLength\n } = options;\n const startIndex = computed(() => {\n if (itemsPerPage.value === -1) return 0;\n return itemsPerPage.value * (page.value - 1);\n });\n const stopIndex = computed(() => {\n if (itemsPerPage.value === -1) return itemsLength.value;\n return Math.min(itemsLength.value, startIndex.value + itemsPerPage.value);\n });\n const pageCount = computed(() => {\n if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;\n return Math.ceil(itemsLength.value / itemsPerPage.value);\n });\n watchEffect(() => {\n if (page.value > pageCount.value) {\n page.value = pageCount.value;\n }\n });\n function setItemsPerPage(value) {\n itemsPerPage.value = value;\n page.value = 1;\n }\n function nextPage() {\n page.value = clamp(page.value + 1, 1, pageCount.value);\n }\n function prevPage() {\n page.value = clamp(page.value - 1, 1, pageCount.value);\n }\n function setPage(value) {\n page.value = clamp(value, 1, pageCount.value);\n }\n const data = {\n page,\n itemsPerPage,\n startIndex,\n stopIndex,\n pageCount,\n itemsLength,\n nextPage,\n prevPage,\n setPage,\n setItemsPerPage\n };\n provide(VDataTablePaginationSymbol, data);\n return data;\n}\nexport function usePagination() {\n const data = inject(VDataTablePaginationSymbol);\n if (!data) throw new Error('Missing pagination!');\n return data;\n}\nexport function usePaginatedItems(options) {\n const vm = getCurrentInstance('usePaginatedItems');\n const {\n items,\n startIndex,\n stopIndex,\n itemsPerPage\n } = options;\n const paginatedItems = computed(() => {\n if (itemsPerPage.value <= 0) return items.value;\n return items.value.slice(startIndex.value, stopIndex.value);\n });\n watch(paginatedItems, val => {\n vm.emit('update:currentItems', val);\n });\n return {\n paginatedItems\n };\n}\n//# sourceMappingURL=paginate.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide } from 'vue';\nimport { deepEqual, propsFactory, wrapInArray } from \"../../../util/index.mjs\"; // Types\nconst singleSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: _ref => {\n let {\n items,\n value\n } = _ref;\n return new Set(value ? [items[0]?.value] : []);\n },\n selectAll: _ref2 => {\n let {\n selected\n } = _ref2;\n return selected;\n }\n};\nconst pageSelectStrategy = {\n showSelectAll: true,\n allSelected: _ref3 => {\n let {\n currentPage\n } = _ref3;\n return currentPage;\n },\n select: _ref4 => {\n let {\n items,\n value,\n selected\n } = _ref4;\n for (const item of items) {\n if (value) selected.add(item.value);else selected.delete(item.value);\n }\n return selected;\n },\n selectAll: _ref5 => {\n let {\n value,\n currentPage,\n selected\n } = _ref5;\n return pageSelectStrategy.select({\n items: currentPage,\n value,\n selected\n });\n }\n};\nconst allSelectStrategy = {\n showSelectAll: true,\n allSelected: _ref6 => {\n let {\n allItems\n } = _ref6;\n return allItems;\n },\n select: _ref7 => {\n let {\n items,\n value,\n selected\n } = _ref7;\n for (const item of items) {\n if (value) selected.add(item.value);else selected.delete(item.value);\n }\n return selected;\n },\n selectAll: _ref8 => {\n let {\n value,\n allItems,\n selected\n } = _ref8;\n return allSelectStrategy.select({\n items: allItems,\n value,\n selected\n });\n }\n};\nexport const makeDataTableSelectProps = propsFactory({\n showSelect: Boolean,\n selectStrategy: {\n type: [String, Object],\n default: 'page'\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n valueComparator: {\n type: Function,\n default: deepEqual\n }\n}, 'DataTable-select');\nexport const VDataTableSelectionSymbol = Symbol.for('vuetify:data-table-selection');\nexport function provideSelection(props, _ref9) {\n let {\n allItems,\n currentPage\n } = _ref9;\n const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {\n return new Set(wrapInArray(v).map(v => {\n return allItems.value.find(item => props.valueComparator(v, item.value))?.value ?? v;\n }));\n }, v => {\n return [...v.values()];\n });\n const allSelectable = computed(() => allItems.value.filter(item => item.selectable));\n const currentPageSelectable = computed(() => currentPage.value.filter(item => item.selectable));\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy;\n switch (props.selectStrategy) {\n case 'single':\n return singleSelectStrategy;\n case 'all':\n return allSelectStrategy;\n case 'page':\n default:\n return pageSelectStrategy;\n }\n });\n function isSelected(items) {\n return wrapInArray(items).every(item => selected.value.has(item.value));\n }\n function isSomeSelected(items) {\n return wrapInArray(items).some(item => selected.value.has(item.value));\n }\n function select(items, value) {\n const newSelected = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value)\n });\n selected.value = newSelected;\n }\n function toggleSelect(item) {\n select([item], !isSelected([item]));\n }\n function selectAll(value) {\n const newSelected = selectStrategy.value.selectAll({\n value,\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n selected: new Set(selected.value)\n });\n selected.value = newSelected;\n }\n const someSelected = computed(() => selected.value.size > 0);\n const allSelected = computed(() => {\n const items = selectStrategy.value.allSelected({\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value\n });\n return !!items.length && isSelected(items);\n });\n const showSelectAll = computed(() => selectStrategy.value.showSelectAll);\n const data = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll\n };\n provide(VDataTableSelectionSymbol, data);\n return data;\n}\nexport function useSelection() {\n const data = inject(VDataTableSelectionSymbol);\n if (!data) throw new Error('Missing selection!');\n return data;\n}\n//# sourceMappingURL=select.mjs.map","// Composables\nimport { useLocale } from \"../../../composables/index.mjs\";\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide, toRef } from 'vue';\nimport { getObjectValueByPath, isEmpty, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array,\n default: () => []\n },\n customKeySort: Object,\n multiSort: Boolean,\n mustSort: Boolean\n}, 'DataTable-sort');\nconst VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');\nexport function createSort(props) {\n const sortBy = useProxiedModel(props, 'sortBy');\n const mustSort = toRef(props, 'mustSort');\n const multiSort = toRef(props, 'multiSort');\n return {\n sortBy,\n mustSort,\n multiSort\n };\n}\nexport function provideSort(options) {\n const {\n sortBy,\n mustSort,\n multiSort,\n page\n } = options;\n const toggleSort = column => {\n if (column.key == null) return;\n let newSortBy = sortBy.value.map(x => ({\n ...x\n })) ?? [];\n const item = newSortBy.find(x => x.key === column.key);\n if (!item) {\n if (multiSort.value) newSortBy = [...newSortBy, {\n key: column.key,\n order: 'asc'\n }];else newSortBy = [{\n key: column.key,\n order: 'asc'\n }];\n } else if (item.order === 'desc') {\n if (mustSort.value) {\n item.order = 'asc';\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key);\n }\n } else {\n item.order = 'desc';\n }\n sortBy.value = newSortBy;\n if (page) page.value = 1;\n };\n function isSorted(column) {\n return !!sortBy.value.find(item => item.key === column.key);\n }\n const data = {\n sortBy,\n toggleSort,\n isSorted\n };\n provide(VDataTableSortSymbol, data);\n return data;\n}\nexport function useSort() {\n const data = inject(VDataTableSortSymbol);\n if (!data) throw new Error('Missing sort!');\n return data;\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems(props, items, sortBy, options) {\n const locale = useLocale();\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value;\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value\n },\n sortRawFunctions: options?.sortRawFunctions?.value\n });\n });\n return {\n sortedItems\n };\n}\nexport function sortItems(items, sortByItems, locale, options) {\n const stringCollator = new Intl.Collator(locale, {\n sensitivity: 'accent',\n usage: 'sort'\n });\n const transformedItems = items.map(item => [item, options?.transform ? options.transform(item) : item]);\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false;\n const sortKey = sortByItems[i].key;\n const sortOrder = sortByItems[i].order ?? 'asc';\n if (sortOrder === false) continue;\n let sortA = getObjectValueByPath(a[1], sortKey);\n let sortB = getObjectValueByPath(b[1], sortKey);\n let sortARaw = a[0].raw;\n let sortBRaw = b[0].raw;\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA];\n [sortARaw, sortBRaw] = [sortBRaw, sortARaw];\n }\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw);\n if (customResult == null) continue;\n hasCustomResult = true;\n if (customResult) return customResult;\n }\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB);\n if (customResult == null) continue;\n hasCustomResult = true;\n if (customResult) return customResult;\n }\n if (hasCustomResult) continue;\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime();\n }\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s);\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0;\n if (isEmpty(sortA)) return -1;\n if (isEmpty(sortB)) return 1;\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB);\n return stringCollator.compare(sortA, sortB);\n }\n }\n return 0;\n }).map(_ref => {\n let [item] = _ref;\n return item;\n });\n}\n//# sourceMappingURL=sort.mjs.map","// Utilities\nimport { computed } from 'vue';\nimport { getPropertyFromItem, propsFactory } from \"../../../util/index.mjs\"; // Types\n// Composables\nexport const makeDataIteratorItemsProps = propsFactory({\n items: {\n type: Array,\n default: () => []\n },\n itemValue: {\n type: [String, Array, Function],\n default: 'id'\n },\n itemSelectable: {\n type: [String, Array, Function],\n default: null\n },\n returnObject: Boolean\n}, 'DataIterator-items');\nexport function transformItem(props, item) {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue);\n const selectable = getPropertyFromItem(item, props.itemSelectable, true);\n return {\n type: 'item',\n value,\n selectable,\n raw: item\n };\n}\nexport function transformItems(props, items) {\n const array = [];\n for (const item of items) {\n array.push(transformItem(props, item));\n }\n return array;\n}\nexport function useDataIteratorItems(props) {\n const items = computed(() => transformItems(props, props.items));\n return {\n items\n };\n}\n//# sourceMappingURL=items.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VFadeTransition } from \"../transitions/index.mjs\";\nimport { makeDataTableExpandProps, provideExpanded } from \"../VDataTable/composables/expand.mjs\";\nimport { makeDataTableGroupProps, provideGroupBy, useGroupedItems } from \"../VDataTable/composables/group.mjs\";\nimport { useOptions } from \"../VDataTable/composables/options.mjs\";\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from \"../VDataTable/composables/paginate.mjs\";\nimport { makeDataTableSelectProps, provideSelection } from \"../VDataTable/composables/select.mjs\";\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from \"../VDataTable/composables/sort.mjs\"; // Composables\nimport { makeDataIteratorItemsProps, useDataIteratorItems } from \"./composables/items.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { LoaderSlot } from \"../../composables/loader.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataIteratorProps = propsFactory({\n search: String,\n loading: Boolean,\n ...makeComponentProps(),\n ...makeDataIteratorItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps({\n itemsPerPage: 5\n }),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeFilterProps(),\n ...makeTagProps(),\n ...makeTransitionProps({\n transition: {\n component: VFadeTransition,\n hideOnLeave: true\n }\n })\n}, 'VDataIterator');\nexport const VDataIterator = genericComponent()({\n name: 'VDataIterator',\n props: makeVDataIteratorProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:groupBy': value => true,\n 'update:page': value => true,\n 'update:itemsPerPage': value => true,\n 'update:sortBy': value => true,\n 'update:options': value => true,\n 'update:expanded': value => true,\n 'update:currentItems': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const groupBy = useProxiedModel(props, 'groupBy');\n const search = toRef(props, 'search');\n const {\n items\n } = useDataIteratorItems(props);\n const {\n filteredItems\n } = useFilter(props, items, search, {\n transform: item => item.raw\n });\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n page,\n itemsPerPage\n } = createPagination(props);\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort,\n page\n });\n const {\n sortByWithGroups,\n opened,\n extractRows,\n isGroupOpen,\n toggleGroup\n } = provideGroupBy({\n groupBy,\n sortBy\n });\n const {\n sortedItems\n } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => item.raw\n });\n const {\n flatItems\n } = useGroupedItems(sortedItems, groupBy, opened);\n const itemsLength = computed(() => flatItems.value.length);\n const {\n startIndex,\n stopIndex,\n pageCount,\n prevPage,\n nextPage,\n setItemsPerPage,\n setPage\n } = providePagination({\n page,\n itemsPerPage,\n itemsLength\n });\n const {\n paginatedItems\n } = usePaginatedItems({\n items: flatItems,\n startIndex,\n stopIndex,\n itemsPerPage\n });\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value));\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect\n } = provideSelection(props, {\n allItems: items,\n currentPage: paginatedItemsWithoutGroups\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search\n });\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n prevPage,\n nextPage,\n setPage,\n setItemsPerPage,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value,\n groupedItems: paginatedItems.value\n }));\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-data-iterator', {\n 'v-data-iterator--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.header?.(slotProps.value), _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [props.loading ? _createVNode(LoaderSlot, {\n \"key\": \"loader\",\n \"name\": \"v-data-iterator\",\n \"active\": true\n }, {\n default: slotProps => slots.loader?.(slotProps)\n }) : _createVNode(\"div\", {\n \"key\": \"items\"\n }, [!paginatedItems.value.length ? slots['no-data']?.() : slots.default?.(slotProps.value)])]\n }), slots.footer?.(slotProps.value)]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VDataIterator.mjs.map","// Utilities\nimport { onBeforeUpdate, ref } from 'vue';\n\n// Types\n\nexport function useRefs() {\n const refs = ref([]);\n onBeforeUpdate(() => refs.value = []);\n function updateRef(e, i) {\n refs.value[i] = e;\n }\n return {\n refs,\n updateRef\n };\n}\n//# sourceMappingURL=refs.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VPagination.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useDisplay } from \"../../composables/index.mjs\";\nimport { makeBorderProps } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { makeElevationProps } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale, useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useRefs } from \"../../composables/refs.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\";\nimport { makeRoundedProps } from \"../../composables/rounded.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeVariantProps } from \"../../composables/variant.mjs\"; // Utilities\nimport { computed, nextTick, shallowRef, toRef } from 'vue';\nimport { createRange, genericComponent, keyValues, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVPaginationProps = propsFactory({\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1\n },\n modelValue: {\n type: Number,\n default: props => props.start\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: val => val % 1 === 0\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first'\n },\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n lastIcon: {\n type: IconValue,\n default: '$last'\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root'\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page'\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage'\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first'\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous'\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next'\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last'\n },\n ellipsis: {\n type: String,\n default: '...'\n },\n showFirstLastPage: Boolean,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'nav'\n }),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'text'\n })\n}, 'VPagination');\nexport const VPagination = genericComponent()({\n name: 'VPagination',\n props: makeVPaginationProps(),\n emits: {\n 'update:modelValue': value => true,\n first: value => true,\n prev: value => true,\n next: value => true,\n last: value => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const page = useProxiedModel(props, 'modelValue');\n const {\n t,\n n\n } = useLocale();\n const {\n isRtl\n } = useRtl();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n width\n } = useDisplay();\n const maxButtons = shallowRef(-1);\n provideDefaults(undefined, {\n scoped: true\n });\n const {\n resizeRef\n } = useResizeObserver(entries => {\n if (!entries.length) return;\n const {\n target,\n contentRect\n } = entries[0];\n const firstItem = target.querySelector('.v-pagination__list > *');\n if (!firstItem) return;\n const totalWidth = contentRect.width;\n const itemWidth = firstItem.offsetWidth + parseFloat(getComputedStyle(firstItem).marginRight) * 2;\n maxButtons.value = getMax(totalWidth, itemWidth);\n });\n const length = computed(() => parseInt(props.length, 10));\n const start = computed(() => parseInt(props.start, 10));\n const totalVisible = computed(() => {\n if (props.totalVisible != null) return parseInt(props.totalVisible, 10);else if (maxButtons.value >= 0) return maxButtons.value;\n return getMax(width.value, 58);\n });\n function getMax(totalWidth, itemWidth) {\n const minButtons = props.showFirstLastPage ? 5 : 3;\n return Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)));\n }\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return [];\n if (totalVisible.value <= 0) return [];else if (totalVisible.value === 1) return [page.value];\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value);\n }\n const even = totalVisible.value % 2 === 0;\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2);\n const left = even ? middle : middle + 1;\n const right = length.value - middle;\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value];\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1;\n const rangeStart = length.value - rangeLength + start.value;\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)];\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3);\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value;\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value];\n }\n });\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue(e, value, event) {\n e.preventDefault();\n page.value = value;\n event && emit(event, value);\n }\n const {\n refs,\n updateRef\n } = useRefs();\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n rounded: toRef(props, 'rounded'),\n elevation: toRef(props, 'elevation')\n }\n });\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = e => updateRef(e, index);\n if (typeof item === 'string') {\n return {\n isActive: false,\n key: `ellipsis-${index}`,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true\n }\n };\n } else {\n const isActive = item === page.value;\n return {\n isActive,\n key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || +props.length < 2,\n color: isActive ? props.activeColor : props.color,\n 'aria-current': isActive,\n 'aria-label': t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),\n onClick: e => setValue(e, item)\n }\n };\n }\n });\n });\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value;\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1;\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: e => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n 'aria-label': t(props.firstAriaLabel),\n 'aria-disabled': prevDisabled\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: e => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n 'aria-label': t(props.previousAriaLabel),\n 'aria-disabled': prevDisabled\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: e => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n 'aria-label': t(props.nextAriaLabel),\n 'aria-disabled': nextDisabled\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: e => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n 'aria-label': t(props.lastAriaLabel),\n 'aria-disabled': nextDisabled\n } : undefined\n };\n });\n function updateFocus() {\n const currentIndex = page.value - start.value;\n refs.value[currentIndex]?.$el.focus();\n }\n function onKeydown(e) {\n if (e.key === keyValues.left && !props.disabled && page.value > +props.start) {\n page.value = page.value - 1;\n nextTick(updateFocus);\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1;\n nextTick(updateFocus);\n }\n }\n useRender(() => _createVNode(props.tag, {\n \"ref\": resizeRef,\n \"class\": ['v-pagination', themeClasses.value, props.class],\n \"style\": props.style,\n \"role\": \"navigation\",\n \"aria-label\": t(props.ariaLabel),\n \"onKeydown\": onKeydown,\n \"data-test\": \"v-pagination-root\"\n }, {\n default: () => [_createVNode(\"ul\", {\n \"class\": \"v-pagination__list\"\n }, [props.showFirstLastPage && _createVNode(\"li\", {\n \"key\": \"first\",\n \"class\": \"v-pagination__first\",\n \"data-test\": \"v-pagination-first\"\n }, [slots.first ? slots.first(controls.value.first) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.first), null)]), _createVNode(\"li\", {\n \"key\": \"prev\",\n \"class\": \"v-pagination__prev\",\n \"data-test\": \"v-pagination-prev\"\n }, [slots.prev ? slots.prev(controls.value.prev) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.prev), null)]), items.value.map((item, index) => _createVNode(\"li\", {\n \"key\": item.key,\n \"class\": ['v-pagination__item', {\n 'v-pagination__item--is-active': item.isActive\n }],\n \"data-test\": \"v-pagination-item\"\n }, [slots.item ? slots.item(item) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, item.props), {\n default: () => [item.page]\n })])), _createVNode(\"li\", {\n \"key\": \"next\",\n \"class\": \"v-pagination__next\",\n \"data-test\": \"v-pagination-next\"\n }, [slots.next ? slots.next(controls.value.next) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.next), null)]), props.showFirstLastPage && _createVNode(\"li\", {\n \"key\": \"last\",\n \"class\": \"v-pagination__last\",\n \"data-test\": \"v-pagination-last\"\n }, [slots.last ? slots.last(controls.value.last) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.last), null)])])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VPagination.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDataTableFooter.css\";\n\n// Components\nimport { VPagination } from \"../VPagination/index.mjs\";\nimport { VSelect } from \"../VSelect/index.mjs\"; // Composables\nimport { usePagination } from \"./composables/paginate.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableFooterProps = propsFactory({\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n firstIcon: {\n type: IconValue,\n default: '$first'\n },\n lastIcon: {\n type: IconValue,\n default: '$last'\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText'\n },\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText'\n },\n firstPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.firstPage'\n },\n prevPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.prevPage'\n },\n nextPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.nextPage'\n },\n lastPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.lastPage'\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => [{\n value: 10,\n title: '10'\n }, {\n value: 25,\n title: '25'\n }, {\n value: 50,\n title: '50'\n }, {\n value: 100,\n title: '100'\n }, {\n value: -1,\n title: '$vuetify.dataFooter.itemsPerPageAll'\n }]\n },\n showCurrentPage: Boolean\n}, 'VDataTableFooter');\nexport const VDataTableFooter = genericComponent()({\n name: 'VDataTableFooter',\n props: makeVDataTableFooterProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n page,\n pageCount,\n startIndex,\n stopIndex,\n itemsLength,\n itemsPerPage,\n setItemsPerPage\n } = usePagination();\n const itemsPerPageOptions = computed(() => props.itemsPerPageOptions.map(option => {\n if (typeof option === 'number') {\n return {\n value: option,\n title: option === -1 ? t('$vuetify.dataFooter.itemsPerPageAll') : String(option)\n };\n }\n return {\n ...option,\n title: !isNaN(Number(option.title)) ? option.title : t(option.title)\n };\n }));\n useRender(() => {\n const paginationProps = VPagination.filterProps(props);\n return _createVNode(\"div\", {\n \"class\": \"v-data-table-footer\"\n }, [slots.prepend?.(), _createVNode(\"div\", {\n \"class\": \"v-data-table-footer__items-per-page\"\n }, [_createVNode(\"span\", null, [t(props.itemsPerPageText)]), _createVNode(VSelect, {\n \"items\": itemsPerPageOptions.value,\n \"modelValue\": itemsPerPage.value,\n \"onUpdate:modelValue\": v => setItemsPerPage(Number(v)),\n \"density\": \"compact\",\n \"variant\": \"outlined\",\n \"hide-details\": true\n }, null)]), _createVNode(\"div\", {\n \"class\": \"v-data-table-footer__info\"\n }, [_createVNode(\"div\", null, [t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value)])]), _createVNode(\"div\", {\n \"class\": \"v-data-table-footer__pagination\"\n }, [_createVNode(VPagination, _mergeProps({\n \"modelValue\": page.value,\n \"onUpdate:modelValue\": $event => page.value = $event,\n \"density\": \"comfortable\",\n \"first-aria-label\": props.firstPageLabel,\n \"last-aria-label\": props.lastPageLabel,\n \"length\": pageCount.value,\n \"next-aria-label\": props.nextPageLabel,\n \"previous-aria-label\": props.prevPageLabel,\n \"rounded\": true,\n \"show-first-last-page\": true,\n \"total-visible\": props.showCurrentPage ? 1 : 0,\n \"variant\": \"plain\"\n }, paginationProps), null)])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDataTableFooter.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Utilities\nimport { convertToUnit, defineFunctionalComponent } from \"../../util/index.mjs\"; // Types\nexport const VDataTableColumn = defineFunctionalComponent({\n align: {\n type: String,\n default: 'start'\n },\n fixed: Boolean,\n fixedOffset: [Number, String],\n height: [Number, String],\n lastFixed: Boolean,\n noPadding: Boolean,\n tag: String,\n width: [Number, String],\n maxWidth: [Number, String],\n nowrap: Boolean\n}, (props, _ref) => {\n let {\n slots\n } = _ref;\n const Tag = props.tag ?? 'td';\n return _createVNode(Tag, {\n \"class\": ['v-data-table__td', {\n 'v-data-table-column--fixed': props.fixed,\n 'v-data-table-column--last-fixed': props.lastFixed,\n 'v-data-table-column--no-padding': props.noPadding,\n 'v-data-table-column--nowrap': props.nowrap\n }, `v-data-table-column--align-${props.align}`],\n \"style\": {\n height: convertToUnit(props.height),\n width: convertToUnit(props.width),\n maxWidth: convertToUnit(props.maxWidth),\n left: convertToUnit(props.fixedOffset || null)\n }\n }, {\n default: () => [slots.default?.()]\n });\n});\n//# sourceMappingURL=VDataTableColumn.mjs.map","// Utilities\nimport { capitalize, inject, provide, ref, watchEffect } from 'vue';\nimport { consoleError, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableHeaderProps = propsFactory({\n headers: Array\n}, 'DataTable-header');\nexport const VDataTableHeadersSymbol = Symbol.for('vuetify:data-table-headers');\nconst defaultHeader = {\n title: '',\n sortable: false\n};\nconst defaultActionHeader = {\n ...defaultHeader,\n width: 48\n};\nfunction priorityQueue() {\n let arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n const queue = arr.map(element => ({\n element,\n priority: 0\n }));\n return {\n enqueue: (element, priority) => {\n let added = false;\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n if (item.priority > priority) {\n queue.splice(i, 0, {\n element,\n priority\n });\n added = true;\n break;\n }\n }\n if (!added) queue.push({\n element,\n priority\n });\n },\n size: () => queue.length,\n count: () => {\n let count = 0;\n if (!queue.length) return 0;\n const whole = Math.floor(queue[0].priority);\n for (let i = 0; i < queue.length; i++) {\n if (Math.floor(queue[i].priority) === whole) count += 1;\n }\n return count;\n },\n dequeue: () => {\n return queue.shift();\n }\n };\n}\nfunction extractLeaves(item) {\n let columns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n if (!item.children) {\n columns.push(item);\n } else {\n for (const child of item.children) {\n extractLeaves(child, columns);\n }\n }\n return columns;\n}\nfunction extractKeys(headers) {\n let keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();\n for (const item of headers) {\n if (item.key) keys.add(item.key);\n if (item.children) {\n extractKeys(item.children, keys);\n }\n }\n return keys;\n}\nfunction getDefaultItem(item) {\n if (!item.key) return undefined;\n if (item.key === 'data-table-group') return defaultHeader;\n if (['data-table-expand', 'data-table-select'].includes(item.key)) return defaultActionHeader;\n return undefined;\n}\nfunction getDepth(item) {\n let depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (!item.children) return depth;\n return Math.max(depth, ...item.children.map(child => getDepth(child, depth + 1)));\n}\nfunction parseFixedColumns(items) {\n let seenFixed = false;\n function setFixed(item) {\n let parentFixed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!item) return;\n if (parentFixed) {\n item.fixed = true;\n }\n if (item.fixed) {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i], true);\n }\n } else {\n if (!seenFixed) {\n item.lastFixed = true;\n } else if (isNaN(+item.width)) {\n consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);\n }\n seenFixed = true;\n }\n } else {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i]);\n }\n } else {\n seenFixed = false;\n }\n }\n }\n for (let i = items.length - 1; i >= 0; i--) {\n setFixed(items[i]);\n }\n function setFixedOffset(item) {\n let fixedOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (!item) return fixedOffset;\n if (item.children) {\n item.fixedOffset = fixedOffset;\n for (const child of item.children) {\n fixedOffset = setFixedOffset(child, fixedOffset);\n }\n } else if (item.fixed) {\n item.fixedOffset = fixedOffset;\n fixedOffset += parseFloat(item.width || '0') || 0;\n }\n return fixedOffset;\n }\n let fixedOffset = 0;\n for (const item of items) {\n fixedOffset = setFixedOffset(item, fixedOffset);\n }\n}\nfunction parse(items, maxDepth) {\n const headers = [];\n let currentDepth = 0;\n const queue = priorityQueue(items);\n while (queue.size() > 0) {\n let rowSize = queue.count();\n const row = [];\n let fraction = 1;\n while (rowSize > 0) {\n const {\n element: item,\n priority\n } = queue.dequeue();\n const diff = maxDepth - currentDepth - getDepth(item);\n row.push({\n ...item,\n rowspan: diff ?? 1,\n colspan: item.children ? extractLeaves(item).length : 1\n });\n if (item.children) {\n for (const child of item.children) {\n // This internally sorts items that are on the same priority \"row\"\n const sort = priority % 1 + fraction / Math.pow(10, currentDepth + 2);\n queue.enqueue(child, currentDepth + diff + sort);\n }\n }\n fraction += 1;\n rowSize -= 1;\n }\n currentDepth += 1;\n headers.push(row);\n }\n const columns = items.map(item => extractLeaves(item)).flat();\n return {\n columns,\n headers\n };\n}\nfunction convertToInternalHeaders(items) {\n const internalHeaders = [];\n for (const item of items) {\n const defaultItem = {\n ...getDefaultItem(item),\n ...item\n };\n const key = defaultItem.key ?? (typeof defaultItem.value === 'string' ? defaultItem.value : null);\n const value = defaultItem.value ?? key ?? null;\n const internalItem = {\n ...defaultItem,\n key,\n value,\n sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort),\n children: defaultItem.children ? convertToInternalHeaders(defaultItem.children) : undefined\n };\n internalHeaders.push(internalItem);\n }\n return internalHeaders;\n}\nexport function createHeaders(props, options) {\n const headers = ref([]);\n const columns = ref([]);\n const sortFunctions = ref({});\n const sortRawFunctions = ref({});\n const filterFunctions = ref({});\n watchEffect(() => {\n const _headers = props.headers || Object.keys(props.items[0] ?? {}).map(key => ({\n key,\n title: capitalize(key)\n }));\n const items = _headers.slice();\n const keys = extractKeys(items);\n if (options?.groupBy?.value.length && !keys.has('data-table-group')) {\n items.unshift({\n key: 'data-table-group',\n title: 'Group'\n });\n }\n if (options?.showSelect?.value && !keys.has('data-table-select')) {\n items.unshift({\n key: 'data-table-select'\n });\n }\n if (options?.showExpand?.value && !keys.has('data-table-expand')) {\n items.push({\n key: 'data-table-expand'\n });\n }\n const internalHeaders = convertToInternalHeaders(items);\n parseFixedColumns(internalHeaders);\n const maxDepth = Math.max(...internalHeaders.map(item => getDepth(item))) + 1;\n const parsed = parse(internalHeaders, maxDepth);\n headers.value = parsed.headers;\n columns.value = parsed.columns;\n const flatHeaders = parsed.headers.flat(1);\n for (const header of flatHeaders) {\n if (!header.key) continue;\n if (header.sortable) {\n if (header.sort) {\n sortFunctions.value[header.key] = header.sort;\n }\n if (header.sortRaw) {\n sortRawFunctions.value[header.key] = header.sortRaw;\n }\n }\n if (header.filter) {\n filterFunctions.value[header.key] = header.filter;\n }\n }\n });\n const data = {\n headers,\n columns,\n sortFunctions,\n sortRawFunctions,\n filterFunctions\n };\n provide(VDataTableHeadersSymbol, data);\n return data;\n}\nexport function useHeaders() {\n const data = inject(VDataTableHeadersSymbol);\n if (!data) throw new Error('Missing headers!');\n return data;\n}\n//# sourceMappingURL=headers.mjs.map","import { resolveDirective as _resolveDirective, Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableColumn } from \"./VDataTableColumn.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VSelect } from \"../VSelect/index.mjs\"; // Composables\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\";\nimport { useSort } from \"./composables/sort.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { LoaderSlot, makeLoaderProps, useLoader } from \"../../composables/loader.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { computed, mergeProps } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n sticky: Boolean,\n disableSort: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc'\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc'\n },\n headerProps: {\n type: Object\n },\n ...makeDisplayProps(),\n ...makeLoaderProps()\n}, 'VDataTableHeaders');\nexport const VDataTableHeaders = genericComponent()({\n name: 'VDataTableHeaders',\n props: makeVDataTableHeadersProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n toggleSort,\n sortBy,\n isSorted\n } = useSort();\n const {\n someSelected,\n allSelected,\n selectAll,\n showSelectAll\n } = useSelection();\n const {\n columns,\n headers\n } = useHeaders();\n const {\n loaderClasses\n } = useLoader(props);\n function getFixedStyles(column, y) {\n if (!props.sticky && !column.fixed) return undefined;\n return {\n position: 'sticky',\n left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,\n top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined\n };\n }\n function getSortIcon(column) {\n const item = sortBy.value.find(item => item.key === column.key);\n if (!item) return props.sortAscIcon;\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon;\n }\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'color');\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon\n }));\n const headerCellClasses = computed(() => ['v-data-table__th', {\n 'v-data-table__th--sticky': props.sticky\n }, displayClasses.value, loaderClasses.value]);\n const VDataTableHeaderCell = _ref2 => {\n let {\n column,\n x,\n y\n } = _ref2;\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';\n const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {});\n return _createVNode(VDataTableColumn, _mergeProps({\n \"tag\": \"th\",\n \"align\": column.align,\n \"class\": [{\n 'v-data-table__th--sortable': column.sortable && !props.disableSort,\n 'v-data-table__th--sorted': isSorted(column),\n 'v-data-table__th--fixed': column.fixed\n }, ...headerCellClasses.value],\n \"style\": {\n width: convertToUnit(column.width),\n minWidth: convertToUnit(column.minWidth),\n maxWidth: convertToUnit(column.maxWidth),\n ...getFixedStyles(column, y)\n },\n \"colspan\": column.colspan,\n \"rowspan\": column.rowspan,\n \"onClick\": column.sortable ? () => toggleSort(column) : undefined,\n \"fixed\": column.fixed,\n \"nowrap\": column.nowrap,\n \"lastFixed\": column.lastFixed,\n \"noPadding\": noPadding\n }, headerProps), {\n default: () => {\n const columnSlotName = `header.${column.key}`;\n const columnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon\n };\n if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);\n if (column.key === 'data-table-select') {\n return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && _createVNode(VCheckboxBtn, {\n \"modelValue\": allSelected.value,\n \"indeterminate\": someSelected.value && !allSelected.value,\n \"onUpdate:modelValue\": selectAll\n }, null));\n }\n return _createVNode(\"div\", {\n \"class\": \"v-data-table-header__content\"\n }, [_createVNode(\"span\", null, [column.title]), column.sortable && !props.disableSort && _createVNode(VIcon, {\n \"key\": \"icon\",\n \"class\": \"v-data-table-header__sort-icon\",\n \"icon\": getSortIcon(column)\n }, null), props.multiSort && isSorted(column) && _createVNode(\"div\", {\n \"key\": \"badge\",\n \"class\": ['v-data-table-header__sort-badge', ...backgroundColorClasses.value],\n \"style\": backgroundColorStyles.value\n }, [sortBy.value.findIndex(x => x.key === column.key) + 1])]);\n }\n });\n };\n const VDataTableMobileHeaderCell = () => {\n const headerProps = mergeProps(props.headerProps ?? {} ?? {});\n const displayItems = computed(() => {\n return columns.value.filter(column => column?.sortable && !props.disableSort);\n });\n const appendIcon = computed(() => {\n const showSelectColumn = columns.value.find(column => column.key === 'data-table-select');\n if (showSelectColumn == null) return;\n return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff';\n });\n return _createVNode(VDataTableColumn, _mergeProps({\n \"tag\": \"th\",\n \"class\": [...headerCellClasses.value],\n \"colspan\": headers.value.length + 1\n }, headerProps), {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-data-table-header__content\"\n }, [_createVNode(VSelect, {\n \"chips\": true,\n \"class\": \"v-data-table__td-sort-select\",\n \"clearable\": true,\n \"density\": \"default\",\n \"items\": displayItems.value,\n \"label\": t('$vuetify.dataTable.sortBy'),\n \"multiple\": props.multiSort,\n \"variant\": \"underlined\",\n \"onClick:clear\": () => sortBy.value = [],\n \"appendIcon\": appendIcon.value,\n \"onClick:append\": () => selectAll(!allSelected.value)\n }, {\n ...slots,\n chip: props => _createVNode(VChip, {\n \"onClick\": props.item.raw?.sortable ? () => toggleSort(props.item.raw) : undefined,\n \"onMousedown\": e => {\n e.preventDefault();\n e.stopPropagation();\n }\n }, {\n default: () => [props.item.title, _createVNode(VIcon, {\n \"class\": ['v-data-table__td-sort-icon', isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active'],\n \"icon\": getSortIcon(props.item.raw),\n \"size\": \"small\"\n }, null)]\n })\n })])]\n });\n };\n useRender(() => {\n return mobile.value ? _createVNode(\"tr\", null, [_createVNode(VDataTableMobileHeaderCell, null, null)]) : _createVNode(_Fragment, null, [slots.headers ? slots.headers(slotProps.value) : headers.value.map((row, y) => _createVNode(\"tr\", null, [row.map((column, x) => _createVNode(VDataTableHeaderCell, {\n \"column\": column,\n \"x\": x,\n \"y\": y\n }, null))])), props.loading && _createVNode(\"tr\", {\n \"class\": \"v-data-table-progress\"\n }, [_createVNode(\"th\", {\n \"colspan\": columns.value.length\n }, [_createVNode(LoaderSlot, {\n \"name\": \"v-data-table-progress\",\n \"absolute\": true,\n \"active\": true,\n \"color\": typeof props.loading === 'boolean' ? undefined : props.loading,\n \"indeterminate\": true\n }, {\n default: slots.loader\n })])])]);\n });\n }\n});\n//# sourceMappingURL=VDataTableHeaders.mjs.map","import { createTextVNode as _createTextVNode, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableColumn } from \"./VDataTableColumn.mjs\";\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\"; // Composables\nimport { useGroupBy } from \"./composables/group.mjs\";\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableGroupHeaderRowProps = propsFactory({\n item: {\n type: Object,\n required: true\n }\n}, 'VDataTableGroupHeaderRow');\nexport const VDataTableGroupHeaderRow = genericComponent()({\n name: 'VDataTableGroupHeaderRow',\n props: makeVDataTableGroupHeaderRowProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n isGroupOpen,\n toggleGroup,\n extractRows\n } = useGroupBy();\n const {\n isSelected,\n isSomeSelected,\n select\n } = useSelection();\n const {\n columns\n } = useHeaders();\n const rows = computed(() => {\n return extractRows([props.item]);\n });\n return () => _createVNode(\"tr\", {\n \"class\": \"v-data-table-group-header-row\",\n \"style\": {\n '--v-data-table-group-header-row-depth': props.item.depth\n }\n }, [columns.value.map(column => {\n if (column.key === 'data-table-group') {\n const icon = isGroupOpen(props.item) ? '$expand' : '$next';\n const onClick = () => toggleGroup(props.item);\n return slots['data-table-group']?.({\n item: props.item,\n count: rows.value.length,\n props: {\n icon,\n onClick\n }\n }) ?? _createVNode(VDataTableColumn, {\n \"class\": \"v-data-table-group-header-row__column\"\n }, {\n default: () => [_createVNode(VBtn, {\n \"size\": \"small\",\n \"variant\": \"text\",\n \"icon\": icon,\n \"onClick\": onClick\n }, null), _createVNode(\"span\", null, [props.item.value]), _createVNode(\"span\", null, [_createTextVNode(\"(\"), rows.value.length, _createTextVNode(\")\")])]\n });\n }\n if (column.key === 'data-table-select') {\n const modelValue = isSelected(rows.value);\n const indeterminate = isSomeSelected(rows.value) && !modelValue;\n const selectGroup = v => select(rows.value, v);\n return slots['data-table-select']?.({\n props: {\n modelValue,\n indeterminate,\n 'onUpdate:modelValue': selectGroup\n }\n }) ?? _createVNode(\"td\", null, [_createVNode(VCheckboxBtn, {\n \"modelValue\": modelValue,\n \"indeterminate\": indeterminate,\n \"onUpdate:modelValue\": selectGroup\n }, null)]);\n }\n return _createVNode(\"td\", null, null);\n })]);\n }\n});\n//# sourceMappingURL=VDataTableGroupHeaderRow.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableColumn } from \"./VDataTableColumn.mjs\";\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\"; // Composables\nimport { useExpanded } from \"./composables/expand.mjs\";\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\";\nimport { useSort } from \"./composables/sort.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\"; // Utilities\nimport { toDisplayString, withModifiers } from 'vue';\nimport { EventProp, genericComponent, getObjectValueByPath, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableRowProps = propsFactory({\n index: Number,\n item: Object,\n cellProps: [Object, Function],\n onClick: EventProp(),\n onContextmenu: EventProp(),\n onDblclick: EventProp(),\n ...makeDisplayProps()\n}, 'VDataTableRow');\nexport const VDataTableRow = genericComponent()({\n name: 'VDataTableRow',\n props: makeVDataTableRowProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n displayClasses,\n mobile\n } = useDisplay(props, 'v-data-table__tr');\n const {\n isSelected,\n toggleSelect,\n someSelected,\n allSelected,\n selectAll\n } = useSelection();\n const {\n isExpanded,\n toggleExpand\n } = useExpanded();\n const {\n toggleSort,\n sortBy,\n isSorted\n } = useSort();\n const {\n columns\n } = useHeaders();\n useRender(() => _createVNode(\"tr\", {\n \"class\": ['v-data-table__tr', {\n 'v-data-table__tr--clickable': !!(props.onClick || props.onContextmenu || props.onDblclick)\n }, displayClasses.value],\n \"onClick\": props.onClick,\n \"onContextmenu\": props.onContextmenu,\n \"onDblclick\": props.onDblclick\n }, [props.item && columns.value.map((column, i) => {\n const item = props.item;\n const slotName = `item.${column.key}`;\n const headerSlotName = `header.${column.key}`;\n const slotProps = {\n index: props.index,\n item: item.raw,\n internalItem: item,\n value: getObjectValueByPath(item.columns, column.key),\n column,\n isSelected,\n toggleSelect,\n isExpanded,\n toggleExpand\n };\n const columnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon: () => ''\n };\n const cellProps = typeof props.cellProps === 'function' ? props.cellProps({\n index: slotProps.index,\n item: slotProps.item,\n internalItem: slotProps.internalItem,\n value: slotProps.value,\n column\n }) : props.cellProps;\n const columnCellProps = typeof column.cellProps === 'function' ? column.cellProps({\n index: slotProps.index,\n item: slotProps.item,\n internalItem: slotProps.internalItem,\n value: slotProps.value\n }) : column.cellProps;\n return _createVNode(VDataTableColumn, _mergeProps({\n \"align\": column.align,\n \"class\": {\n 'v-data-table__td--expanded-row': column.key === 'data-table-expand',\n 'v-data-table__td--select-row': column.key === 'data-table-select'\n },\n \"fixed\": column.fixed,\n \"fixedOffset\": column.fixedOffset,\n \"lastFixed\": column.lastFixed,\n \"maxWidth\": !mobile.value ? column.maxWidth : undefined,\n \"noPadding\": column.key === 'data-table-select' || column.key === 'data-table-expand',\n \"nowrap\": column.nowrap,\n \"width\": !mobile.value ? column.width : undefined\n }, cellProps, columnCellProps), {\n default: () => {\n if (slots[slotName] && !mobile.value) return slots[slotName]?.(slotProps);\n if (column.key === 'data-table-select') {\n return slots['item.data-table-select']?.(slotProps) ?? _createVNode(VCheckboxBtn, {\n \"disabled\": !item.selectable,\n \"modelValue\": isSelected([item]),\n \"onClick\": withModifiers(() => toggleSelect(item), ['stop'])\n }, null);\n }\n if (column.key === 'data-table-expand') {\n return slots['item.data-table-expand']?.(slotProps) ?? _createVNode(VBtn, {\n \"icon\": isExpanded(item) ? '$collapse' : '$expand',\n \"size\": \"small\",\n \"variant\": \"text\",\n \"onClick\": withModifiers(() => toggleExpand(item), ['stop'])\n }, null);\n }\n const displayValue = toDisplayString(slotProps.value);\n return !mobile.value ? displayValue : _createVNode(_Fragment, null, [_createVNode(\"div\", {\n \"class\": \"v-data-table__td-title\"\n }, [slots[headerSlotName]?.(columnSlotProps) ?? column.title]), _createVNode(\"div\", {\n \"class\": \"v-data-table__td-value\"\n }, [slots[slotName]?.(slotProps) ?? displayValue])]);\n }\n });\n })]));\n }\n});\n//# sourceMappingURL=VDataTableRow.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableGroupHeaderRow } from \"./VDataTableGroupHeaderRow.mjs\";\nimport { VDataTableRow } from \"./VDataTableRow.mjs\"; // Composables\nimport { useExpanded } from \"./composables/expand.mjs\";\nimport { useGroupBy } from \"./composables/group.mjs\";\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { Fragment, mergeProps } from 'vue';\nimport { genericComponent, getPrefixedEventHandlers, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableRowsProps = propsFactory({\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText'\n },\n hideNoData: Boolean,\n items: {\n type: Array,\n default: () => []\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText'\n },\n rowProps: [Object, Function],\n cellProps: [Object, Function],\n ...makeDisplayProps()\n}, 'VDataTableRows');\nexport const VDataTableRows = genericComponent()({\n name: 'VDataTableRows',\n inheritAttrs: false,\n props: makeVDataTableRowsProps(),\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n columns\n } = useHeaders();\n const {\n expandOnClick,\n toggleExpand,\n isExpanded\n } = useExpanded();\n const {\n isSelected,\n toggleSelect\n } = useSelection();\n const {\n toggleGroup,\n isGroupOpen\n } = useGroupBy();\n const {\n t\n } = useLocale();\n const {\n mobile\n } = useDisplay(props);\n useRender(() => {\n if (props.loading && (!props.items.length || slots.loading)) {\n return _createVNode(\"tr\", {\n \"class\": \"v-data-table-rows-loading\",\n \"key\": \"loading\"\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length\n }, [slots.loading?.() ?? t(props.loadingText)])]);\n }\n if (!props.loading && !props.items.length && !props.hideNoData) {\n return _createVNode(\"tr\", {\n \"class\": \"v-data-table-rows-no-data\",\n \"key\": \"no-data\"\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length\n }, [slots['no-data']?.() ?? t(props.noDataText)])]);\n }\n return _createVNode(_Fragment, null, [props.items.map((item, index) => {\n if (item.type === 'group') {\n const slotProps = {\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n toggleGroup,\n isGroupOpen\n };\n return slots['group-header'] ? slots['group-header'](slotProps) : _createVNode(VDataTableGroupHeaderRow, _mergeProps({\n \"key\": `group-header_${item.id}`,\n \"item\": item\n }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps)), slots);\n }\n const slotProps = {\n index,\n item: item.raw,\n internalItem: item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect\n };\n const itemSlotProps = {\n ...slotProps,\n props: mergeProps({\n key: `item_${item.key ?? item.index}`,\n onClick: expandOnClick.value ? () => {\n toggleExpand(item);\n } : undefined,\n index,\n item,\n cellProps: props.cellProps,\n mobile: mobile.value\n }, getPrefixedEventHandlers(attrs, ':row', () => slotProps), typeof props.rowProps === 'function' ? props.rowProps({\n item: slotProps.item,\n index: slotProps.index,\n internalItem: slotProps.internalItem\n }) : props.rowProps)\n };\n return _createVNode(_Fragment, {\n \"key\": itemSlotProps.props.key\n }, [slots.item ? slots.item(itemSlotProps) : _createVNode(VDataTableRow, itemSlotProps.props, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDataTableRows.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VTable.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVTableProps = propsFactory({\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n hover: Boolean,\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VTable');\nexport const VTable = genericComponent()({\n name: 'VTable',\n props: makeVTableProps(),\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n densityClasses\n } = useDensity(props);\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-table', {\n 'v-table--fixed-height': !!props.height,\n 'v-table--fixed-header': props.fixedHeader,\n 'v-table--fixed-footer': props.fixedFooter,\n 'v-table--has-top': !!slots.top,\n 'v-table--has-bottom': !!slots.bottom,\n 'v-table--hover': props.hover\n }, themeClasses.value, densityClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.top?.(), slots.default ? _createVNode(\"div\", {\n \"class\": \"v-table__wrapper\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"table\", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VTable.mjs.map","// Utilities\nimport { computed } from 'vue';\nimport { getPropertyFromItem, propsFactory } from \"../../../util/index.mjs\"; // Types\n// Composables\nexport const makeDataTableItemsProps = propsFactory({\n items: {\n type: Array,\n default: () => []\n },\n itemValue: {\n type: [String, Array, Function],\n default: 'id'\n },\n itemSelectable: {\n type: [String, Array, Function],\n default: null\n },\n rowProps: [Object, Function],\n cellProps: [Object, Function],\n returnObject: Boolean\n}, 'DataTable-items');\nexport function transformItem(props, item, index, columns) {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue);\n const selectable = getPropertyFromItem(item, props.itemSelectable, true);\n const itemColumns = columns.reduce((obj, column) => {\n if (column.key != null) obj[column.key] = getPropertyFromItem(item, column.value);\n return obj;\n }, {});\n return {\n type: 'item',\n key: props.returnObject ? getPropertyFromItem(item, props.itemValue) : value,\n index,\n value,\n selectable,\n columns: itemColumns,\n raw: item\n };\n}\nexport function transformItems(props, items, columns) {\n return items.map((item, index) => transformItem(props, item, index, columns));\n}\nexport function useDataTableItems(props, columns) {\n const items = computed(() => transformItems(props, props.items, columns.value));\n return {\n items\n };\n}\n//# sourceMappingURL=items.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, resolveDirective as _resolveDirective, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VDataTable.css\";\n\n// Components\nimport { makeVDataTableFooterProps, VDataTableFooter } from \"./VDataTableFooter.mjs\";\nimport { makeVDataTableHeadersProps, VDataTableHeaders } from \"./VDataTableHeaders.mjs\";\nimport { makeVDataTableRowsProps, VDataTableRows } from \"./VDataTableRows.mjs\";\nimport { VDivider } from \"../VDivider/index.mjs\";\nimport { makeVTableProps, VTable } from \"../VTable/VTable.mjs\"; // Composables\nimport { makeDataTableExpandProps, provideExpanded } from \"./composables/expand.mjs\";\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from \"./composables/group.mjs\";\nimport { createHeaders, makeDataTableHeaderProps } from \"./composables/headers.mjs\";\nimport { makeDataTableItemsProps, useDataTableItems } from \"./composables/items.mjs\";\nimport { useOptions } from \"./composables/options.mjs\";\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from \"./composables/paginate.mjs\";\nimport { makeDataTableSelectProps, provideSelection } from \"./composables/select.mjs\";\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from \"./composables/sort.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\"; // Utilities\nimport { computed, toRef, toRefs } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeDataTableProps = propsFactory({\n ...makeVDataTableRowsProps(),\n hideDefaultBody: Boolean,\n hideDefaultFooter: Boolean,\n hideDefaultHeader: Boolean,\n width: [String, Number],\n search: String,\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeVDataTableHeadersProps(),\n ...makeVTableProps()\n}, 'DataTable');\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeFilterProps(),\n ...makeVDataTableFooterProps()\n}, 'VDataTable');\nexport const VDataTable = genericComponent()({\n name: 'VDataTable',\n props: makeVDataTableProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:page': value => true,\n 'update:itemsPerPage': value => true,\n 'update:sortBy': value => true,\n 'update:options': value => true,\n 'update:groupBy': value => true,\n 'update:expanded': value => true,\n 'update:currentItems': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n groupBy\n } = createGroupBy(props);\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n page,\n itemsPerPage\n } = createPagination(props);\n const {\n disableSort\n } = toRefs(props);\n const {\n columns,\n headers,\n sortFunctions,\n sortRawFunctions,\n filterFunctions\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand')\n });\n const {\n items\n } = useDataTableItems(props, columns);\n const search = toRef(props, 'search');\n const {\n filteredItems\n } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions\n });\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort,\n page\n });\n const {\n sortByWithGroups,\n opened,\n extractRows,\n isGroupOpen,\n toggleGroup\n } = provideGroupBy({\n groupBy,\n sortBy,\n disableSort\n });\n const {\n sortedItems\n } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => ({\n ...item.raw,\n ...item.columns\n }),\n sortFunctions,\n sortRawFunctions\n });\n const {\n flatItems\n } = useGroupedItems(sortedItems, groupBy, opened);\n const itemsLength = computed(() => flatItems.value.length);\n const {\n startIndex,\n stopIndex,\n pageCount,\n setItemsPerPage\n } = providePagination({\n page,\n itemsPerPage,\n itemsLength\n });\n const {\n paginatedItems\n } = usePaginatedItems({\n items: flatItems,\n startIndex,\n stopIndex,\n itemsPerPage\n });\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value));\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected\n } = provideSelection(props, {\n allItems: items,\n currentPage: paginatedItemsWithoutGroups\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search\n });\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText')\n }\n });\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value.map(item => item.raw),\n internalItems: paginatedItemsWithoutGroups.value,\n groupedItems: paginatedItems.value,\n columns: columns.value,\n headers: headers.value\n }));\n useRender(() => {\n const dataTableFooterProps = VDataTableFooter.filterProps(props);\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props);\n const dataTableRowsProps = VDataTableRows.filterProps(props);\n const tableProps = VTable.filterProps(props);\n return _createVNode(VTable, _mergeProps({\n \"class\": ['v-data-table', {\n 'v-data-table--show-select': props.showSelect,\n 'v-data-table--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, tableProps), {\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && _createVNode(\"thead\", {\n \"key\": \"thead\"\n }, [_createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && _createVNode(\"tbody\", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : _createVNode(VDataTableRows, _mergeProps(attrs, dataTableRowsProps, {\n \"items\": paginatedItems.value\n }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && _createVNode(_Fragment, null, [_createVNode(VDivider, null, null), _createVNode(VDataTableFooter, dataTableFooterProps, {\n prepend: slots['footer.prepend']\n })])\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VDataTable.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeDataTableProps } from \"./VDataTable.mjs\";\nimport { VDataTableHeaders } from \"./VDataTableHeaders.mjs\";\nimport { VDataTableRow } from \"./VDataTableRow.mjs\";\nimport { VDataTableRows } from \"./VDataTableRows.mjs\";\nimport { VTable } from \"../VTable/index.mjs\";\nimport { VVirtualScrollItem } from \"../VVirtualScroll/VVirtualScrollItem.mjs\"; // Composables\nimport { provideExpanded } from \"./composables/expand.mjs\";\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from \"./composables/group.mjs\";\nimport { createHeaders } from \"./composables/headers.mjs\";\nimport { useDataTableItems } from \"./composables/items.mjs\";\nimport { useOptions } from \"./composables/options.mjs\";\nimport { provideSelection } from \"./composables/select.mjs\";\nimport { createSort, provideSort, useSortedItems } from \"./composables/sort.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { makeVirtualProps, useVirtual } from \"../../composables/virtual.mjs\"; // Utilities\nimport { computed, shallowRef, toRef, toRefs } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeVirtualProps(),\n ...makeFilterProps()\n}, 'VDataTableVirtual');\nexport const VDataTableVirtual = genericComponent()({\n name: 'VDataTableVirtual',\n props: makeVDataTableVirtualProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:sortBy': value => true,\n 'update:options': value => true,\n 'update:groupBy': value => true,\n 'update:expanded': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n groupBy\n } = createGroupBy(props);\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n disableSort\n } = toRefs(props);\n const {\n columns,\n headers,\n filterFunctions,\n sortFunctions,\n sortRawFunctions\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand')\n });\n const {\n items\n } = useDataTableItems(props, columns);\n const search = toRef(props, 'search');\n const {\n filteredItems\n } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions\n });\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort\n });\n const {\n sortByWithGroups,\n opened,\n extractRows,\n isGroupOpen,\n toggleGroup\n } = provideGroupBy({\n groupBy,\n sortBy,\n disableSort\n });\n const {\n sortedItems\n } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => ({\n ...item.raw,\n ...item.columns\n }),\n sortFunctions,\n sortRawFunctions\n });\n const {\n flatItems\n } = useGroupedItems(sortedItems, groupBy, opened);\n const allItems = computed(() => extractRows(flatItems.value));\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected\n } = provideSelection(props, {\n allItems,\n currentPage: allItems\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n const {\n containerRef,\n markerRef,\n paddingTop,\n paddingBottom,\n computedItems,\n handleItemResize,\n handleScroll,\n handleScrollend\n } = useVirtual(props, flatItems);\n const displayItems = computed(() => computedItems.value.map(item => item.raw));\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search\n });\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText')\n }\n });\n const slotProps = computed(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value.map(item => item.raw),\n internalItems: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value\n }));\n useRender(() => {\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props);\n const dataTableRowsProps = VDataTableRows.filterProps(props);\n const tableProps = VTable.filterProps(props);\n return _createVNode(VTable, _mergeProps({\n \"class\": ['v-data-table', {\n 'v-data-table--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, tableProps), {\n top: () => slots.top?.(slotProps.value),\n wrapper: () => _createVNode(\"div\", {\n \"ref\": containerRef,\n \"onScrollPassive\": handleScroll,\n \"onScrollend\": handleScrollend,\n \"class\": \"v-table__wrapper\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"table\", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && _createVNode(\"thead\", {\n \"key\": \"thead\"\n }, [_createVNode(VDataTableHeaders, _mergeProps(dataTableHeadersProps, {\n \"sticky\": props.fixedHeader\n }), slots)]), !props.hideDefaultBody && _createVNode(\"tbody\", null, [_createVNode(\"tr\", {\n \"ref\": markerRef,\n \"style\": {\n height: convertToUnit(paddingTop.value),\n border: 0\n }\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length,\n \"style\": {\n height: 0,\n border: 0\n }\n }, null)]), slots['body.prepend']?.(slotProps.value), _createVNode(VDataTableRows, _mergeProps(attrs, dataTableRowsProps, {\n \"items\": displayItems.value\n }), {\n ...slots,\n item: itemSlotProps => _createVNode(VVirtualScrollItem, {\n \"key\": itemSlotProps.internalItem.index,\n \"renderless\": true,\n \"onUpdate:height\": height => handleItemResize(itemSlotProps.internalItem.index, height)\n }, {\n default: _ref2 => {\n let {\n itemRef\n } = _ref2;\n return slots.item?.({\n ...itemSlotProps,\n itemRef\n }) ?? _createVNode(VDataTableRow, _mergeProps(itemSlotProps.props, {\n \"ref\": itemRef,\n \"key\": itemSlotProps.internalItem.index,\n \"index\": itemSlotProps.internalItem.index\n }), slots);\n }\n })\n }), slots['body.append']?.(slotProps.value), _createVNode(\"tr\", {\n \"style\": {\n height: convertToUnit(paddingBottom.value),\n border: 0\n }\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length,\n \"style\": {\n height: 0,\n border: 0\n }\n }, null)])])])]),\n bottom: () => slots.bottom?.(slotProps.value)\n });\n });\n }\n});\n//# sourceMappingURL=VDataTableVirtual.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment } from \"vue\";\n// Components\nimport { makeDataTableProps } from \"./VDataTable.mjs\";\nimport { makeVDataTableFooterProps, VDataTableFooter } from \"./VDataTableFooter.mjs\";\nimport { VDataTableHeaders } from \"./VDataTableHeaders.mjs\";\nimport { VDataTableRows } from \"./VDataTableRows.mjs\";\nimport { VDivider } from \"../VDivider/index.mjs\";\nimport { VTable } from \"../VTable/index.mjs\"; // Composables\nimport { provideExpanded } from \"./composables/expand.mjs\";\nimport { createGroupBy, provideGroupBy, useGroupedItems } from \"./composables/group.mjs\";\nimport { createHeaders } from \"./composables/headers.mjs\";\nimport { useDataTableItems } from \"./composables/items.mjs\";\nimport { useOptions } from \"./composables/options.mjs\";\nimport { createPagination, makeDataTablePaginateProps, providePagination } from \"./composables/paginate.mjs\";\nimport { provideSelection } from \"./composables/select.mjs\";\nimport { createSort, provideSort } from \"./composables/sort.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\"; // Utilities\nimport { computed, provide, toRef, toRefs } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableServerProps = propsFactory({\n itemsLength: {\n type: [Number, String],\n required: true\n },\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeVDataTableFooterProps()\n}, 'VDataTableServer');\nexport const VDataTableServer = genericComponent()({\n name: 'VDataTableServer',\n props: makeVDataTableServerProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:page': page => true,\n 'update:itemsPerPage': page => true,\n 'update:sortBy': sortBy => true,\n 'update:options': options => true,\n 'update:expanded': options => true,\n 'update:groupBy': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n groupBy\n } = createGroupBy(props);\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n page,\n itemsPerPage\n } = createPagination(props);\n const {\n disableSort\n } = toRefs(props);\n const itemsLength = computed(() => parseInt(props.itemsLength, 10));\n const {\n columns,\n headers\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand')\n });\n const {\n items\n } = useDataTableItems(props, columns);\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort,\n page\n });\n const {\n opened,\n isGroupOpen,\n toggleGroup,\n extractRows\n } = provideGroupBy({\n groupBy,\n sortBy,\n disableSort\n });\n const {\n pageCount,\n setItemsPerPage\n } = providePagination({\n page,\n itemsPerPage,\n itemsLength\n });\n const {\n flatItems\n } = useGroupedItems(items, groupBy, opened);\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected\n } = provideSelection(props, {\n allItems: items,\n currentPage: items\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n const itemsWithoutGroups = computed(() => extractRows(items.value));\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search: toRef(props, 'search')\n });\n provide('v-data-table', {\n toggleSort,\n sortBy\n });\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText')\n }\n });\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: itemsWithoutGroups.value.map(item => item.raw),\n internalItems: itemsWithoutGroups.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value\n }));\n useRender(() => {\n const dataTableFooterProps = VDataTableFooter.filterProps(props);\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props);\n const dataTableRowsProps = VDataTableRows.filterProps(props);\n const tableProps = VTable.filterProps(props);\n return _createVNode(VTable, _mergeProps({\n \"class\": ['v-data-table', {\n 'v-data-table--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, tableProps), {\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && _createVNode(\"thead\", {\n \"key\": \"thead\",\n \"class\": \"v-data-table__thead\",\n \"role\": \"rowgroup\"\n }, [_createVNode(VDataTableHeaders, _mergeProps(dataTableHeadersProps, {\n \"sticky\": props.fixedHeader\n }), slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && _createVNode(\"tbody\", {\n \"class\": \"v-data-table__tbody\",\n \"role\": \"rowgroup\"\n }, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : _createVNode(VDataTableRows, _mergeProps(attrs, dataTableRowsProps, {\n \"items\": flatItems.value\n }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && _createVNode(_Fragment, null, [_createVNode(VDivider, null, null), _createVNode(VDataTableFooter, dataTableFooterProps, {\n prepend: slots['footer.prepend']\n })])\n });\n });\n }\n});\n//# sourceMappingURL=VDataTableServer.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDatePickerControls.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VSpacer } from \"../VGrid/index.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerControlsProps = propsFactory({\n active: {\n type: [String, Array],\n default: undefined\n },\n disabled: {\n type: [Boolean, String, Array],\n default: false\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n modeIcon: {\n type: IconValue,\n default: '$subgroup'\n },\n text: String,\n viewMode: {\n type: String,\n default: 'month'\n }\n}, 'VDatePickerControls');\nexport const VDatePickerControls = genericComponent()({\n name: 'VDatePickerControls',\n props: makeVDatePickerControlsProps(),\n emits: {\n 'click:year': () => true,\n 'click:month': () => true,\n 'click:prev': () => true,\n 'click:next': () => true,\n 'click:text': () => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const disableMonth = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('text') : !!props.disabled;\n });\n const disableYear = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('mode') : !!props.disabled;\n });\n const disablePrev = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('prev') : !!props.disabled;\n });\n const disableNext = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('next') : !!props.disabled;\n });\n function onClickPrev() {\n emit('click:prev');\n }\n function onClickNext() {\n emit('click:next');\n }\n function onClickYear() {\n emit('click:year');\n }\n function onClickMonth() {\n emit('click:month');\n }\n useRender(() => {\n // TODO: add slot support and scope defaults\n return _createVNode(\"div\", {\n \"class\": ['v-date-picker-controls']\n }, [_createVNode(VBtn, {\n \"class\": \"v-date-picker-controls__month-btn\",\n \"disabled\": disableMonth.value,\n \"text\": props.text,\n \"variant\": \"text\",\n \"rounded\": true,\n \"onClick\": onClickMonth\n }, null), _createVNode(VBtn, {\n \"key\": \"mode-btn\",\n \"class\": \"v-date-picker-controls__mode-btn\",\n \"disabled\": disableYear.value,\n \"density\": \"comfortable\",\n \"icon\": props.modeIcon,\n \"variant\": \"text\",\n \"onClick\": onClickYear\n }, null), _createVNode(VSpacer, {\n \"key\": \"mode-spacer\"\n }, null), _createVNode(\"div\", {\n \"key\": \"month-buttons\",\n \"class\": \"v-date-picker-controls__month\"\n }, [_createVNode(VBtn, {\n \"disabled\": disablePrev.value,\n \"icon\": props.prevIcon,\n \"variant\": \"text\",\n \"onClick\": onClickPrev\n }, null), _createVNode(VBtn, {\n \"disabled\": disableNext.value,\n \"icon\": props.nextIcon,\n \"variant\": \"text\",\n \"onClick\": onClickNext\n }, null)])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerControls.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDatePickerHeader.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerHeaderProps = propsFactory({\n appendIcon: String,\n color: String,\n header: String,\n transition: String,\n onClick: EventProp()\n}, 'VDatePickerHeader');\nexport const VDatePickerHeader = genericComponent()({\n name: 'VDatePickerHeader',\n props: makeVDatePickerHeaderProps(),\n emits: {\n click: () => true,\n 'click:append': () => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'color');\n function onClick() {\n emit('click');\n }\n function onClickAppend() {\n emit('click:append');\n }\n useRender(() => {\n const hasContent = !!(slots.default || props.header);\n const hasAppend = !!(slots.append || props.appendIcon);\n return _createVNode(\"div\", {\n \"class\": ['v-date-picker-header', {\n 'v-date-picker-header--clickable': !!props.onClick\n }, backgroundColorClasses.value],\n \"style\": backgroundColorStyles.value,\n \"onClick\": onClick\n }, [slots.prepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-date-picker-header__prepend\"\n }, [slots.prepend()]), hasContent && _createVNode(MaybeTransition, {\n \"key\": \"content\",\n \"name\": props.transition\n }, {\n default: () => [_createVNode(\"div\", {\n \"key\": props.header,\n \"class\": \"v-date-picker-header__content\"\n }, [slots.default?.() ?? props.header])]\n }), hasAppend && _createVNode(\"div\", {\n \"class\": \"v-date-picker-header__append\"\n }, [!slots.append ? _createVNode(VBtn, {\n \"key\": \"append-btn\",\n \"icon\": props.appendIcon,\n \"variant\": \"text\",\n \"onClick\": onClickAppend\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !props.appendIcon,\n \"defaults\": {\n VBtn: {\n icon: props.appendIcon,\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.append?.()]\n })])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerHeader.mjs.map","// Composables\nimport { getWeek, useDate } from \"./date/date.mjs\";\nimport { useProxiedModel } from \"./proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { propsFactory, wrapInArray } from \"../util/index.mjs\"; // Types\n// Types\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function],\n disabled: Boolean,\n displayValue: null,\n modelValue: Array,\n month: [Number, String],\n max: null,\n min: null,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array,\n default: () => [0, 1, 2, 3, 4, 5, 6]\n },\n weeksInMonth: {\n type: String,\n default: 'dynamic'\n },\n firstDayOfWeek: [Number, String]\n}, 'calendar');\nexport function useCalendar(props) {\n const adapter = useDate();\n const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v));\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue);\n if (model.value.length > 0) return adapter.date(model.value[0]);\n if (props.min) return adapter.date(props.min);\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0]);\n return adapter.date();\n });\n const year = useProxiedModel(props, 'year', undefined, v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value);\n return adapter.startOfYear(adapter.setYear(adapter.date(), value));\n }, v => adapter.getYear(v));\n const month = useProxiedModel(props, 'month', undefined, v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value);\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value));\n return adapter.setMonth(date, value);\n }, v => adapter.getMonth(v));\n const weekDays = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek ?? 0);\n return props.weekdays.map(day => (day + firstDayOfWeek) % 7);\n });\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);\n const days = weeks.flat();\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7;\n if (props.weeksInMonth === 'static' && days.length < daysInMonth) {\n const lastDay = days[days.length - 1];\n let week = [];\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day));\n if (day % 7 === 0) {\n weeks.push(week);\n week = [];\n }\n }\n }\n return weeks;\n });\n function genDays(days, today) {\n return days.filter(date => {\n return weekDays.value.includes(adapter.toJsDate(date).getDay());\n }).map((date, index) => {\n const isoDate = adapter.toISO(date);\n const isAdjacent = !adapter.isSameMonth(date, month.value);\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value));\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value));\n const isSame = adapter.isSameDay(date, month.value);\n return {\n date,\n isoDate,\n formatted: adapter.format(date, 'keyboardDate'),\n year: adapter.getYear(date),\n month: adapter.getMonth(date),\n isDisabled: isDisabled(date),\n isWeekStart: index % 7 === 0,\n isWeekEnd: index % 7 === 6,\n isToday: adapter.isSameDay(date, today),\n isAdjacent,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isStart,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isEnd,\n isSame,\n localized: adapter.format(date, 'dayOfMonth')\n };\n });\n }\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(displayValue.value, props.firstDayOfWeek);\n const week = [];\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day));\n }\n const today = adapter.date();\n return genDays(week, today);\n });\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat();\n const today = adapter.date();\n return genDays(days, today);\n });\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? getWeek(adapter, week[0]) : null;\n });\n });\n function isDisabled(value) {\n if (props.disabled) return true;\n const date = adapter.date(value);\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true;\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true;\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date));\n }\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date);\n }\n return false;\n }\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekDays,\n weekNumbers\n };\n}\n//# sourceMappingURL=calendar.mjs.map","import { createVNode as _createVNode, createTextVNode as _createTextVNode } from \"vue\";\n// Styles\nimport \"./VDatePickerMonth.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { makeCalendarProps, useCalendar } from \"../../composables/calendar.mjs\";\nimport { useDate } from \"../../composables/date/date.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, ref, shallowRef, watch } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String],\n showWeek: Boolean,\n transition: {\n type: String,\n default: 'picker-transition'\n },\n reverseTransition: {\n type: String,\n default: 'picker-reverse-transition'\n },\n ...makeCalendarProps()\n}, 'VDatePickerMonth');\nexport const VDatePickerMonth = genericComponent()({\n name: 'VDatePickerMonth',\n props: makeVDatePickerMonthProps(),\n emits: {\n 'update:modelValue': date => true,\n 'update:month': date => true,\n 'update:year': date => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const daysRef = ref();\n const {\n daysInMonth,\n model,\n weekNumbers\n } = useCalendar(props);\n const adapter = useDate();\n const rangeStart = shallowRef();\n const rangeStop = shallowRef();\n const isReverse = shallowRef(false);\n const transition = computed(() => {\n return !isReverse.value ? props.transition : props.reverseTransition;\n });\n if (props.multiple === 'range' && model.value.length > 0) {\n rangeStart.value = model.value[0];\n if (model.value.length > 1) {\n rangeStop.value = model.value[model.value.length - 1];\n }\n }\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity;\n return model.value.length >= max;\n });\n watch(daysInMonth, (val, oldVal) => {\n if (!oldVal) return;\n isReverse.value = adapter.isBefore(val[0].date, oldVal[0].date);\n });\n function onRangeClick(value) {\n const _value = adapter.startOfDay(value);\n if (model.value.length === 0) {\n rangeStart.value = undefined;\n } else if (model.value.length === 1) {\n rangeStart.value = model.value[0];\n rangeStop.value = undefined;\n }\n if (!rangeStart.value) {\n rangeStart.value = _value;\n model.value = [rangeStart.value];\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(_value, rangeStart.value)) {\n rangeStart.value = undefined;\n model.value = [];\n return;\n } else if (adapter.isBefore(_value, rangeStart.value)) {\n rangeStop.value = adapter.endOfDay(rangeStart.value);\n rangeStart.value = _value;\n } else {\n rangeStop.value = adapter.endOfDay(_value);\n }\n const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');\n const datesInRange = [rangeStart.value];\n for (let i = 1; i < diff; i++) {\n const nextDate = adapter.addDays(rangeStart.value, i);\n datesInRange.push(nextDate);\n }\n datesInRange.push(rangeStop.value);\n model.value = datesInRange;\n } else {\n rangeStart.value = value;\n rangeStop.value = undefined;\n model.value = [rangeStart.value];\n }\n }\n function onMultipleClick(value) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value));\n if (index === -1) {\n model.value = [...model.value, value];\n } else {\n const value = [...model.value];\n value.splice(index, 1);\n model.value = value;\n }\n }\n function onClick(value) {\n if (props.multiple === 'range') {\n onRangeClick(value);\n } else if (props.multiple) {\n onMultipleClick(value);\n } else {\n model.value = [value];\n }\n }\n return () => _createVNode(\"div\", {\n \"class\": \"v-date-picker-month\"\n }, [props.showWeek && _createVNode(\"div\", {\n \"key\": \"weeks\",\n \"class\": \"v-date-picker-month__weeks\"\n }, [!props.hideWeekdays && _createVNode(\"div\", {\n \"key\": \"hide-week-days\",\n \"class\": \"v-date-picker-month__day\"\n }, [_createTextVNode(\"\\xA0\")]), weekNumbers.value.map(week => _createVNode(\"div\", {\n \"class\": ['v-date-picker-month__day', 'v-date-picker-month__day--adjacent']\n }, [week]))]), _createVNode(MaybeTransition, {\n \"name\": transition.value\n }, {\n default: () => [_createVNode(\"div\", {\n \"ref\": daysRef,\n \"key\": daysInMonth.value[0].date?.toString(),\n \"class\": \"v-date-picker-month__days\"\n }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => _createVNode(\"div\", {\n \"class\": ['v-date-picker-month__day', 'v-date-picker-month__weekday']\n }, [weekDay])), daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date)\n },\n item,\n i\n };\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true;\n }\n return _createVNode(\"div\", {\n \"class\": ['v-date-picker-month__day', {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart\n }],\n \"data-v-date\": !item.isDisabled ? item.isoDate : undefined\n }, [(props.showAdjacentMonths || !item.isAdjacent) && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n class: 'v-date-picker-month__day-btn',\n color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date)\n }\n }\n }, {\n default: () => [slots.day?.(slotProps) ?? _createVNode(VBtn, slotProps.props, null)]\n })]);\n })])]\n })]);\n }\n});\n//# sourceMappingURL=VDatePickerMonth.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VDatePickerMonths.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useDate } from \"../../composables/date/index.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, watchEffect } from 'vue';\nimport { convertToUnit, createRange, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerMonthsProps = propsFactory({\n color: String,\n height: [String, Number],\n min: null,\n max: null,\n modelValue: Number,\n year: Number\n}, 'VDatePickerMonths');\nexport const VDatePickerMonths = genericComponent()({\n name: 'VDatePickerMonths',\n props: makeVDatePickerMonthsProps(),\n emits: {\n 'update:modelValue': date => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const adapter = useDate();\n const model = useProxiedModel(props, 'modelValue');\n const months = computed(() => {\n let date = adapter.startOfYear(adapter.date());\n if (props.year) {\n date = adapter.setYear(date, props.year);\n }\n return createRange(12).map(i => {\n const text = adapter.format(date, 'monthShort');\n const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));\n date = adapter.getNextMonth(date);\n return {\n isDisabled,\n text,\n value: i\n };\n });\n });\n watchEffect(() => {\n model.value = model.value ?? adapter.getMonth(adapter.date());\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": \"v-date-picker-months\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"div\", {\n \"class\": \"v-date-picker-months__content\"\n }, [months.value.map((month, i) => {\n const btnProps = {\n active: model.value === i,\n color: model.value === i ? props.color : undefined,\n disabled: month.isDisabled,\n rounded: true,\n text: month.text,\n variant: model.value === month.value ? 'flat' : 'text',\n onClick: () => onClick(i)\n };\n function onClick(i) {\n if (model.value === i) {\n emit('update:modelValue', model.value);\n return;\n }\n model.value = i;\n }\n return slots.month?.({\n month,\n i,\n props: btnProps\n }) ?? _createVNode(VBtn, _mergeProps({\n \"key\": \"month\"\n }, btnProps), null);\n })])]));\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerMonths.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VDatePickerYears.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useDate } from \"../../composables/date/index.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, nextTick, onMounted, watchEffect } from 'vue';\nimport { convertToUnit, createRange, genericComponent, propsFactory, templateRef, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVDatePickerYearsProps = propsFactory({\n color: String,\n height: [String, Number],\n min: null,\n max: null,\n modelValue: Number\n}, 'VDatePickerYears');\nexport const VDatePickerYears = genericComponent()({\n name: 'VDatePickerYears',\n props: makeVDatePickerYearsProps(),\n emits: {\n 'update:modelValue': year => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const adapter = useDate();\n const model = useProxiedModel(props, 'modelValue');\n const years = computed(() => {\n const year = adapter.getYear(adapter.date());\n let min = year - 100;\n let max = year + 52;\n if (props.min) {\n min = adapter.getYear(adapter.date(props.min));\n }\n if (props.max) {\n max = adapter.getYear(adapter.date(props.max));\n }\n let date = adapter.startOfYear(adapter.date());\n date = adapter.setYear(date, min);\n return createRange(max - min + 1, min).map(i => {\n const text = adapter.format(date, 'year');\n date = adapter.setYear(date, adapter.getYear(date) + 1);\n return {\n text,\n value: i\n };\n });\n });\n watchEffect(() => {\n model.value = model.value ?? adapter.getYear(adapter.date());\n });\n const yearRef = templateRef();\n onMounted(async () => {\n await nextTick();\n yearRef.el?.scrollIntoView({\n block: 'center'\n });\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": \"v-date-picker-years\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"div\", {\n \"class\": \"v-date-picker-years__content\"\n }, [years.value.map((year, i) => {\n const btnProps = {\n ref: model.value === year.value ? yearRef : undefined,\n active: model.value === year.value,\n color: model.value === year.value ? props.color : undefined,\n rounded: true,\n text: year.text,\n variant: model.value === year.value ? 'flat' : 'text',\n onClick: () => {\n if (model.value === year.value) {\n emit('update:modelValue', model.value);\n return;\n }\n model.value = year.value;\n }\n };\n return slots.year?.({\n year,\n i,\n props: btnProps\n }) ?? _createVNode(VBtn, _mergeProps({\n \"key\": \"month\"\n }, btnProps), null);\n })])]));\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerYears.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VPickerTitle = createSimpleFunctional('v-picker-title');\n//# sourceMappingURL=VPickerTitle.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VPicker.css\";\n\n// Components\nimport { VPickerTitle } from \"./VPickerTitle.mjs\";\nimport { VDefaultsProvider } from \"../../components/VDefaultsProvider/VDefaultsProvider.mjs\";\nimport { makeVSheetProps, VSheet } from \"../../components/VSheet/VSheet.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVPickerProps = propsFactory({\n bgColor: String,\n landscape: Boolean,\n title: String,\n hideHeader: Boolean,\n ...makeVSheetProps()\n}, 'VPicker');\nexport const VPicker = genericComponent()({\n name: 'VPicker',\n props: makeVPickerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n useRender(() => {\n const sheetProps = VSheet.filterProps(props);\n const hasTitle = !!(props.title || slots.title);\n return _createVNode(VSheet, _mergeProps(sheetProps, {\n \"color\": props.bgColor,\n \"class\": ['v-picker', {\n 'v-picker--landscape': props.landscape,\n 'v-picker--with-actions': !!slots.actions\n }, props.class],\n \"style\": props.style\n }), {\n default: () => [!props.hideHeader && _createVNode(\"div\", {\n \"key\": \"header\",\n \"class\": [backgroundColorClasses.value],\n \"style\": [backgroundColorStyles.value]\n }, [hasTitle && _createVNode(VPickerTitle, {\n \"key\": \"picker-title\"\n }, {\n default: () => [slots.title?.() ?? props.title]\n }), slots.header && _createVNode(\"div\", {\n \"class\": \"v-picker__header\"\n }, [slots.header()])]), _createVNode(\"div\", {\n \"class\": \"v-picker__body\"\n }, [slots.default?.()]), slots.actions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n slim: true,\n variant: 'text'\n }\n }\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-picker__actions\"\n }, [slots.actions()])]\n })]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VPicker.mjs.map","import { Fragment as _Fragment, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDatePicker.css\";\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from \"./VDatePickerControls.mjs\";\nimport { VDatePickerHeader } from \"./VDatePickerHeader.mjs\";\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from \"./VDatePickerMonth.mjs\";\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from \"./VDatePickerMonths.mjs\";\nimport { makeVDatePickerYearsProps, VDatePickerYears } from \"./VDatePickerYears.mjs\";\nimport { VFadeTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { makeVPickerProps, VPicker } from \"../../labs/VPicker/VPicker.mjs\"; // Composables\nimport { useDate } from \"../../composables/date/index.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref, shallowRef, watch } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVDatePickerProps = propsFactory({\n // TODO: implement in v3.5\n // calendarIcon: {\n // type: String,\n // default: '$calendar',\n // },\n // keyboardIcon: {\n // type: String,\n // default: '$edit',\n // },\n // inputMode: {\n // type: String as PropType<'calendar' | 'keyboard'>,\n // default: 'calendar',\n // },\n // inputText: {\n // type: String,\n // default: '$vuetify.datePicker.input.placeholder',\n // },\n // inputPlaceholder: {\n // type: String,\n // default: 'dd/mm/yyyy',\n // },\n header: {\n type: String,\n default: '$vuetify.datePicker.header'\n },\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps({\n weeksInMonth: 'static'\n }),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({\n title: '$vuetify.datePicker.title'\n }),\n modelValue: null\n}, 'VDatePicker');\nexport const VDatePicker = genericComponent()({\n name: 'VDatePicker',\n props: makeVDatePickerProps(),\n emits: {\n 'update:modelValue': date => true,\n 'update:month': date => true,\n 'update:year': date => true,\n // 'update:inputMode': (date: any) => true,\n 'update:viewMode': date => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const adapter = useDate();\n const {\n t\n } = useLocale();\n const model = useProxiedModel(props, 'modelValue', undefined, v => wrapInArray(v), v => props.multiple ? v : v[0]);\n const viewMode = useProxiedModel(props, 'viewMode');\n // const inputMode = useProxiedModel(props, 'inputMode')\n const internal = computed(() => {\n const value = adapter.date(model.value?.[0]);\n return value && adapter.isValid(value) ? value : adapter.date();\n });\n const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));\n const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));\n const isReversing = shallowRef(false);\n const header = computed(() => {\n if (props.multiple && model.value.length > 1) {\n return t('$vuetify.datePicker.itemsSelected', model.value.length);\n }\n return model.value[0] && adapter.isValid(model.value[0]) ? adapter.format(adapter.date(model.value[0]), 'normalDateWithWeekday') : t(props.header);\n });\n const text = computed(() => {\n let date = adapter.date();\n date = adapter.setDate(date, 1);\n date = adapter.setMonth(date, month.value);\n date = adapter.setYear(date, year.value);\n return adapter.format(date, 'monthAndYear');\n });\n // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);\n const minDate = computed(() => {\n const date = adapter.date(props.min);\n return props.min && adapter.isValid(date) ? date : null;\n });\n const maxDate = computed(() => {\n const date = adapter.date(props.max);\n return props.max && adapter.isValid(date) ? date : null;\n });\n const disabled = computed(() => {\n if (props.disabled) return true;\n const targets = [];\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next']);\n } else {\n let _date = adapter.date();\n _date = adapter.setYear(_date, year.value);\n _date = adapter.setMonth(_date, month.value);\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1);\n adapter.isAfter(minDate.value, date) && targets.push('prev');\n }\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1);\n adapter.isAfter(date, maxDate.value) && targets.push('next');\n }\n }\n return targets;\n });\n\n // function onClickAppend () {\n // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n // }\n\n function onClickNext() {\n if (month.value < 11) {\n month.value++;\n } else {\n year.value++;\n month.value = 0;\n onUpdateYear(year.value);\n }\n onUpdateMonth(month.value);\n }\n function onClickPrev() {\n if (month.value > 0) {\n month.value--;\n } else {\n year.value--;\n month.value = 11;\n onUpdateYear(year.value);\n }\n onUpdateMonth(month.value);\n }\n function onClickDate() {\n viewMode.value = 'month';\n }\n function onClickMonth() {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months';\n }\n function onClickYear() {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year';\n }\n function onUpdateMonth(value) {\n if (viewMode.value === 'months') onClickMonth();\n emit('update:month', value);\n }\n function onUpdateYear(value) {\n if (viewMode.value === 'year') onClickYear();\n emit('update:year', value);\n }\n watch(model, (val, oldVal) => {\n const arrBefore = wrapInArray(oldVal);\n const arrAfter = wrapInArray(val);\n if (!arrAfter.length) return;\n const before = adapter.date(arrBefore[arrBefore.length - 1]);\n const after = adapter.date(arrAfter[arrAfter.length - 1]);\n const newMonth = adapter.getMonth(after);\n const newYear = adapter.getYear(after);\n if (newMonth !== month.value) {\n month.value = newMonth;\n onUpdateMonth(month.value);\n }\n if (newYear !== year.value) {\n year.value = newYear;\n onUpdateYear(year.value);\n }\n isReversing.value = adapter.isBefore(before, after);\n });\n useRender(() => {\n const pickerProps = VPicker.filterProps(props);\n const datePickerControlsProps = VDatePickerControls.filterProps(props);\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props);\n const datePickerMonthProps = VDatePickerMonth.filterProps(props);\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue']);\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue']);\n const headerProps = {\n header: header.value,\n transition: headerTransition.value\n };\n return _createVNode(VPicker, _mergeProps(pickerProps, {\n \"class\": ['v-date-picker', `v-date-picker--${viewMode.value}`, {\n 'v-date-picker--show-week': props.showWeek\n }, props.class],\n \"style\": props.style\n }), {\n title: () => slots.title?.() ?? _createVNode(\"div\", {\n \"class\": \"v-date-picker__title\"\n }, [t(props.title)]),\n header: () => slots.header ? _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VDatePickerHeader: {\n ...headerProps\n }\n }\n }, {\n default: () => [slots.header?.(headerProps)]\n }) : _createVNode(VDatePickerHeader, _mergeProps({\n \"key\": \"header\"\n }, datePickerHeaderProps, headerProps, {\n \"onClick\": viewMode.value !== 'month' ? onClickDate : undefined\n }), {\n ...slots,\n default: undefined\n }),\n default: () => _createVNode(_Fragment, null, [_createVNode(VDatePickerControls, _mergeProps(datePickerControlsProps, {\n \"disabled\": disabled.value,\n \"text\": text.value,\n \"onClick:next\": onClickNext,\n \"onClick:prev\": onClickPrev,\n \"onClick:month\": onClickMonth,\n \"onClick:year\": onClickYear\n }), null), _createVNode(VFadeTransition, {\n \"hideOnLeave\": true\n }, {\n default: () => [viewMode.value === 'months' ? _createVNode(VDatePickerMonths, _mergeProps({\n \"key\": \"date-picker-months\"\n }, datePickerMonthsProps, {\n \"modelValue\": month.value,\n \"onUpdate:modelValue\": [$event => month.value = $event, onUpdateMonth],\n \"min\": minDate.value,\n \"max\": maxDate.value,\n \"year\": year.value\n }), null) : viewMode.value === 'year' ? _createVNode(VDatePickerYears, _mergeProps({\n \"key\": \"date-picker-years\"\n }, datePickerYearsProps, {\n \"modelValue\": year.value,\n \"onUpdate:modelValue\": [$event => year.value = $event, onUpdateYear],\n \"min\": minDate.value,\n \"max\": maxDate.value\n }), null) : _createVNode(VDatePickerMonth, _mergeProps({\n \"key\": \"date-picker-month\"\n }, datePickerMonthProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"month\": month.value,\n \"onUpdate:month\": [$event => month.value = $event, onUpdateMonth],\n \"year\": year.value,\n \"onUpdate:year\": [$event => year.value = $event, onUpdateYear],\n \"min\": minDate.value,\n \"max\": maxDate.value\n }), null)]\n })]),\n actions: slots.actions\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VDatePicker.mjs.map","import { createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VEmptyState.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useDisplay } from \"../../composables/display.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVEmptyStateProps = propsFactory({\n actionText: String,\n bgColor: String,\n color: String,\n icon: IconValue,\n image: String,\n justify: {\n type: String,\n default: 'center'\n },\n headline: String,\n title: String,\n text: String,\n textWidth: {\n type: [Number, String],\n default: 500\n },\n href: String,\n to: String,\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeSizeProps({\n size: undefined\n }),\n ...makeThemeProps()\n}, 'VEmptyState');\nexport const VEmptyState = genericComponent()({\n name: 'VEmptyState',\n props: makeVEmptyStateProps(),\n emits: {\n 'click:action': e => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n displayClasses\n } = useDisplay();\n function onClickAction(e) {\n emit('click:action', e);\n }\n useRender(() => {\n const hasActions = !!(slots.actions || props.actionText);\n const hasHeadline = !!(slots.headline || props.headline);\n const hasTitle = !!(slots.title || props.title);\n const hasText = !!(slots.text || props.text);\n const hasMedia = !!(slots.media || props.image || props.icon);\n const size = props.size || (props.image ? 200 : 96);\n return _createVNode(\"div\", {\n \"class\": ['v-empty-state', {\n [`v-empty-state--${props.justify}`]: true\n }, themeClasses.value, backgroundColorClasses.value, displayClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, props.style]\n }, [hasMedia && _createVNode(\"div\", {\n \"key\": \"media\",\n \"class\": \"v-empty-state__media\"\n }, [!slots.media ? _createVNode(_Fragment, null, [props.image ? _createVNode(VImg, {\n \"key\": \"image\",\n \"src\": props.image,\n \"height\": size\n }, null) : props.icon ? _createVNode(VIcon, {\n \"key\": \"icon\",\n \"color\": props.color,\n \"size\": size,\n \"icon\": props.icon\n }, null) : undefined]) : _createVNode(VDefaultsProvider, {\n \"key\": \"media-defaults\",\n \"defaults\": {\n VImg: {\n src: props.image,\n height: size\n },\n VIcon: {\n size,\n icon: props.icon\n }\n }\n }, {\n default: () => [slots.media()]\n })]), hasHeadline && _createVNode(\"div\", {\n \"key\": \"headline\",\n \"class\": \"v-empty-state__headline\"\n }, [slots.headline?.() ?? props.headline]), hasTitle && _createVNode(\"div\", {\n \"key\": \"title\",\n \"class\": \"v-empty-state__title\"\n }, [slots.title?.() ?? props.title]), hasText && _createVNode(\"div\", {\n \"key\": \"text\",\n \"class\": \"v-empty-state__text\",\n \"style\": {\n maxWidth: convertToUnit(props.textWidth)\n }\n }, [slots.text?.() ?? props.text]), slots.default && _createVNode(\"div\", {\n \"key\": \"content\",\n \"class\": \"v-empty-state__content\"\n }, [slots.default()]), hasActions && _createVNode(\"div\", {\n \"key\": \"actions\",\n \"class\": \"v-empty-state__actions\"\n }, [_createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n class: 'v-empty-state__action-btn',\n color: props.color ?? 'surface-variant',\n text: props.actionText\n }\n }\n }, {\n default: () => [slots.actions?.({\n props: {\n onClick: onClickAction\n }\n }) ?? _createVNode(VBtn, {\n \"onClick\": onClickAction\n }, null)]\n })])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VEmptyState.mjs.map","// Types\n\nexport const VExpansionPanelSymbol = Symbol.for('vuetify:v-expansion-panel');\n//# sourceMappingURL=shared.mjs.map","import { withDirectives as _withDirectives, vShow as _vShow, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { VExpandTransition } from \"../transitions/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.mjs\"; // Utilities\nimport { inject } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVExpansionPanelTextProps = propsFactory({\n ...makeComponentProps(),\n ...makeLazyProps()\n}, 'VExpansionPanelText');\nexport const VExpansionPanelText = genericComponent()({\n name: 'VExpansionPanelText',\n props: makeVExpansionPanelTextProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const expansionPanel = inject(VExpansionPanelSymbol);\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel');\n const {\n hasContent,\n onAfterLeave\n } = useLazy(props, expansionPanel.isSelected);\n useRender(() => _createVNode(VExpandTransition, {\n \"onAfterLeave\": onAfterLeave\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": ['v-expansion-panel-text', props.class],\n \"style\": props.style\n }, [slots.default && hasContent.value && _createVNode(\"div\", {\n \"class\": \"v-expansion-panel-text__wrapper\"\n }, [slots.default?.()])]), [[_vShow, expansionPanel.isSelected.value]])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VExpansionPanelText.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: IconValue,\n default: '$expand'\n },\n collapseIcon: {\n type: IconValue,\n default: '$collapse'\n },\n hideActions: Boolean,\n focusable: Boolean,\n static: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false\n },\n readonly: Boolean,\n ...makeComponentProps(),\n ...makeDimensionProps()\n}, 'VExpansionPanelTitle');\nexport const VExpansionPanelTitle = genericComponent()({\n name: 'VExpansionPanelTitle',\n directives: {\n Ripple\n },\n props: makeVExpansionPanelTitleProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const expansionPanel = inject(VExpansionPanelSymbol);\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel');\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'color');\n const {\n dimensionStyles\n } = useDimension(props);\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n readonly: props.readonly\n }));\n const icon = computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);\n useRender(() => _withDirectives(_createVNode(\"button\", {\n \"class\": ['v-expansion-panel-title', {\n 'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n 'v-expansion-panel-title--focusable': props.focusable,\n 'v-expansion-panel-title--static': props.static\n }, backgroundColorClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, props.style],\n \"type\": \"button\",\n \"tabindex\": expansionPanel.disabled.value ? -1 : undefined,\n \"disabled\": expansionPanel.disabled.value,\n \"aria-expanded\": expansionPanel.isSelected.value,\n \"onClick\": !props.readonly ? expansionPanel.toggle : undefined\n }, [_createVNode(\"span\", {\n \"class\": \"v-expansion-panel-title__overlay\"\n }, null), slots.default?.(slotProps.value), !props.hideActions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VIcon: {\n icon: icon.value\n }\n }\n }, {\n default: () => [_createVNode(\"span\", {\n \"class\": \"v-expansion-panel-title__icon\"\n }, [slots.actions?.(slotProps.value) ?? _createVNode(VIcon, null, null)])]\n })]), [[_resolveDirective(\"ripple\"), props.ripple]]));\n return {};\n }\n});\n//# sourceMappingURL=VExpansionPanelTitle.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { makeVExpansionPanelTextProps, VExpansionPanelText } from \"./VExpansionPanelText.mjs\";\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from \"./VExpansionPanelTitle.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, provide } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVExpansionPanelProps = propsFactory({\n title: String,\n text: String,\n bgColor: String,\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeVExpansionPanelTitleProps(),\n ...makeVExpansionPanelTextProps()\n}, 'VExpansionPanel');\nexport const VExpansionPanel = genericComponent()({\n name: 'VExpansionPanel',\n props: makeVExpansionPanelProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const groupItem = useGroupItem(props, VExpansionPanelSymbol);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'bgColor');\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const isDisabled = computed(() => groupItem?.disabled.value || props.disabled);\n const selectedIndices = computed(() => groupItem.group.items.value.reduce((arr, item, index) => {\n if (groupItem.group.selected.value.includes(item.id)) arr.push(index);\n return arr;\n }, []));\n const isBeforeSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);\n return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === 1);\n });\n const isAfterSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);\n return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === -1);\n });\n provide(VExpansionPanelSymbol, groupItem);\n useRender(() => {\n const hasText = !!(slots.text || props.text);\n const hasTitle = !!(slots.title || props.title);\n const expansionPanelTitleProps = VExpansionPanelTitle.filterProps(props);\n const expansionPanelTextProps = VExpansionPanelText.filterProps(props);\n return _createVNode(props.tag, {\n \"class\": ['v-expansion-panel', {\n 'v-expansion-panel--active': groupItem.isSelected.value,\n 'v-expansion-panel--before-active': isBeforeSelected.value,\n 'v-expansion-panel--after-active': isAfterSelected.value,\n 'v-expansion-panel--disabled': isDisabled.value\n }, roundedClasses.value, backgroundColorClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, props.style]\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": ['v-expansion-panel__shadow', ...elevationClasses.value]\n }, null), _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VExpansionPanelTitle: {\n ...expansionPanelTitleProps\n },\n VExpansionPanelText: {\n ...expansionPanelTextProps\n }\n }\n }, {\n default: () => [hasTitle && _createVNode(VExpansionPanelTitle, {\n \"key\": \"title\"\n }, {\n default: () => [slots.title ? slots.title() : props.title]\n }), hasText && _createVNode(VExpansionPanelText, {\n \"key\": \"text\"\n }, {\n default: () => [slots.text ? slots.text() : props.text]\n }), slots.default?.()]\n })]\n });\n });\n return {\n groupItem\n };\n }\n});\n//# sourceMappingURL=VExpansionPanel.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VExpansionPanel.css\";\n\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { makeVExpansionPanelProps } from \"./VExpansionPanel.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, pick, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'];\nexport const makeVExpansionPanelsProps = propsFactory({\n flat: Boolean,\n ...makeGroupProps(),\n ...pick(makeVExpansionPanelProps(), ['bgColor', 'collapseIcon', 'color', 'eager', 'elevation', 'expandIcon', 'focusable', 'hideActions', 'readonly', 'ripple', 'rounded', 'tile', 'static']),\n ...makeThemeProps(),\n ...makeComponentProps(),\n ...makeTagProps(),\n variant: {\n type: String,\n default: 'default',\n validator: v => allowedVariants.includes(v)\n }\n}, 'VExpansionPanels');\nexport const VExpansionPanels = genericComponent()({\n name: 'VExpansionPanels',\n props: makeVExpansionPanelsProps(),\n emits: {\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n next,\n prev\n } = useGroup(props, VExpansionPanelSymbol);\n const {\n themeClasses\n } = provideTheme(props);\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);\n provideDefaults({\n VExpansionPanel: {\n bgColor: toRef(props, 'bgColor'),\n collapseIcon: toRef(props, 'collapseIcon'),\n color: toRef(props, 'color'),\n eager: toRef(props, 'eager'),\n elevation: toRef(props, 'elevation'),\n expandIcon: toRef(props, 'expandIcon'),\n focusable: toRef(props, 'focusable'),\n hideActions: toRef(props, 'hideActions'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n rounded: toRef(props, 'rounded'),\n static: toRef(props, 'static')\n }\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-expansion-panels', {\n 'v-expansion-panels--flat': props.flat,\n 'v-expansion-panels--tile': props.tile\n }, themeClasses.value, variantClass.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.default?.({\n prev,\n next\n })]\n }));\n return {\n next,\n prev\n };\n }\n});\n//# sourceMappingURL=VExpansionPanels.mjs.map","import { withDirectives as _withDirectives, createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, vShow as _vShow } from \"vue\";\n// Styles\nimport \"./VFab.css\";\n\n// Components\nimport { makeVBtnProps, VBtn } from \"../VBtn/VBtn.mjs\"; // Composables\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { makeLocationProps } from \"../../composables/location.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVFabProps = propsFactory({\n app: Boolean,\n appear: Boolean,\n extended: Boolean,\n layout: Boolean,\n offset: Boolean,\n modelValue: {\n type: Boolean,\n default: true\n },\n ...omit(makeVBtnProps({\n active: true\n }), ['location']),\n ...makeLayoutItemProps(),\n ...makeLocationProps(),\n ...makeTransitionProps({\n transition: 'fab-transition'\n })\n}, 'VFab');\nexport const VFab = genericComponent()({\n name: 'VFab',\n props: makeVFabProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const height = shallowRef(56);\n const layoutItemStyles = ref();\n const {\n resizeRef\n } = useResizeObserver(entries => {\n if (!entries.length) return;\n height.value = entries[0].target.clientHeight;\n });\n const hasPosition = computed(() => props.app || props.absolute);\n const position = computed(() => {\n if (!hasPosition.value) return false;\n return props.location?.split(' ').shift() ?? 'bottom';\n });\n const orientation = computed(() => {\n if (!hasPosition.value) return false;\n return props.location?.split(' ')[1] ?? 'end';\n });\n useToggleScope(() => props.app, () => {\n const layout = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position,\n layoutSize: computed(() => props.layout ? height.value + 24 : 0),\n elementSize: computed(() => height.value + 24),\n active: computed(() => props.app && model.value),\n absolute: toRef(props, 'absolute')\n });\n watchEffect(() => {\n layoutItemStyles.value = layout.layoutItemStyles.value;\n });\n });\n const vFabRef = ref();\n useRender(() => {\n const btnProps = VBtn.filterProps(props);\n return _createVNode(\"div\", {\n \"ref\": vFabRef,\n \"class\": ['v-fab', {\n 'v-fab--absolute': props.absolute,\n 'v-fab--app': !!props.app,\n 'v-fab--extended': props.extended,\n 'v-fab--offset': props.offset,\n [`v-fab--${position.value}`]: hasPosition.value,\n [`v-fab--${orientation.value}`]: hasPosition.value\n }, props.class],\n \"style\": [props.app ? {\n ...layoutItemStyles.value\n } : {\n height: 'inherit',\n width: undefined\n }, props.style]\n }, [_createVNode(\"div\", {\n \"class\": \"v-fab__container\"\n }, [_createVNode(MaybeTransition, {\n \"appear\": props.appear,\n \"transition\": props.transition\n }, {\n default: () => [_withDirectives(_createVNode(VBtn, _mergeProps({\n \"ref\": resizeRef\n }, btnProps, {\n \"active\": undefined,\n \"location\": undefined\n }), slots), [[_vShow, props.active]])]\n })])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VFab.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode, mergeProps as _mergeProps, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VFileInput.css\";\n\n// Components\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VCounter } from \"../VCounter/index.mjs\";\nimport { VField } from \"../VField/index.mjs\";\nimport { filterFieldProps, makeVFieldProps } from \"../VField/VField.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { callEvent, filterInputAttrs, genericComponent, humanReadableFileSize, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize'\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter'\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String],\n default: false,\n validator: v => {\n return typeof v === 'boolean' || [1000, 1024].includes(Number(v));\n }\n },\n ...makeVInputProps({\n prependIcon: '$file'\n }),\n modelValue: {\n type: [Array, Object],\n default: props => props.multiple ? [] : null,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object');\n }\n },\n ...makeVFieldProps({\n clearable: true\n })\n}, 'VFileInput');\nexport const VFileInput = genericComponent()({\n name: 'VFileInput',\n inheritAttrs: false,\n props: makeVFileInputProps(),\n emits: {\n 'click:control': e => true,\n 'mousedown:control': e => true,\n 'update:focused': focused => true,\n 'update:modelValue': files => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => !props.multiple && Array.isArray(val) ? val[0] : val);\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined);\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, _ref2) => {\n let {\n size = 0\n } = _ref2;\n return bytes + size;\n }, 0));\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value));\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const {\n name = '',\n size = 0\n } = file;\n return !props.showSize ? name : `${name} (${humanReadableFileSize(size, base.value)})`;\n }));\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0;\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value);else return t(props.counterString, fileCount);\n });\n const vInputRef = ref();\n const vFieldRef = ref();\n const inputRef = ref();\n const isActive = computed(() => isFocused.value || props.active);\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n function onFocus() {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus();\n }\n if (!isFocused.value) focus();\n }\n function onClickPrepend(e) {\n inputRef.value?.click();\n }\n function onControlMousedown(e) {\n emit('mousedown:control', e);\n }\n function onControlClick(e) {\n inputRef.value?.click();\n emit('click:control', e);\n }\n function onClear(e) {\n e.stopPropagation();\n onFocus();\n nextTick(() => {\n model.value = [];\n callEvent(props['onClick:clear'], e);\n });\n }\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length;\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = '';\n }\n });\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter);\n const hasDetails = !!(hasCounter || slots.details);\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const {\n modelValue: _,\n ...inputProps\n } = VInput.filterProps(props);\n const fieldProps = filterFieldProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": vInputRef,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-file-input', {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value\n }, props.class],\n \"style\": props.style,\n \"onClick:prepend\": onClickPrepend\n }, rootAttrs, inputProps, {\n \"centerAffix\": !isPlainOrUnderlined.value,\n \"focused\": isFocused.value\n }), {\n ...slots,\n default: _ref3 => {\n let {\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid\n } = _ref3;\n return _createVNode(VField, _mergeProps({\n \"ref\": vFieldRef,\n \"prepend-icon\": props.prependIcon,\n \"onMousedown\": onControlMousedown,\n \"onClick\": onControlClick,\n \"onClick:clear\": onClear,\n \"onClick:prependInner\": props['onClick:prependInner'],\n \"onClick:appendInner\": props['onClick:appendInner']\n }, fieldProps, {\n \"id\": id.value,\n \"active\": isActive.value || isDirty.value,\n \"dirty\": isDirty.value || props.dirty,\n \"disabled\": isDisabled.value,\n \"focused\": isFocused.value,\n \"error\": isValid.value === false\n }), {\n ...slots,\n default: _ref4 => {\n let {\n props: {\n class: fieldClass,\n ...slotProps\n }\n } = _ref4;\n return _createVNode(_Fragment, null, [_createVNode(\"input\", _mergeProps({\n \"ref\": inputRef,\n \"type\": \"file\",\n \"readonly\": isReadonly.value,\n \"disabled\": isDisabled.value,\n \"multiple\": props.multiple,\n \"name\": props.name,\n \"onClick\": e => {\n e.stopPropagation();\n if (isReadonly.value) e.preventDefault();\n onFocus();\n },\n \"onChange\": e => {\n if (!e.target) return;\n const target = e.target;\n model.value = [...(target.files ?? [])];\n },\n \"onFocus\": onFocus,\n \"onBlur\": blur\n }, slotProps, inputAttrs), null), _createVNode(\"div\", {\n \"class\": fieldClass\n }, [!!model.value?.length && !props.hideInput && (slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value\n }) : props.chips ? fileNames.value.map(text => _createVNode(VChip, {\n \"key\": text,\n \"size\": \"small\",\n \"text\": text\n }, null)) : fileNames.value.join(', '))])]);\n }\n });\n },\n details: hasDetails ? slotProps => _createVNode(_Fragment, null, [slots.details?.(slotProps), hasCounter && _createVNode(_Fragment, null, [_createVNode(\"span\", null, null), _createVNode(VCounter, {\n \"active\": !!model.value?.length,\n \"value\": counterValue.value,\n \"disabled\": props.disabled\n }, slots.counter)])]) : undefined\n });\n });\n return forwardRefs({}, vInputRef, vFieldRef, inputRef);\n }\n});\n//# sourceMappingURL=VFileInput.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { createForm, makeFormProps } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\"; // Utilities\nimport { ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVFormProps = propsFactory({\n ...makeComponentProps(),\n ...makeFormProps()\n}, 'VForm');\nexport const VForm = genericComponent()({\n name: 'VForm',\n props: makeVFormProps(),\n emits: {\n 'update:modelValue': val => true,\n submit: e => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const form = createForm(props);\n const formRef = ref();\n function onReset(e) {\n e.preventDefault();\n form.reset();\n }\n function onSubmit(_e) {\n const e = _e;\n const ready = form.validate();\n e.then = ready.then.bind(ready);\n e.catch = ready.catch.bind(ready);\n e.finally = ready.finally.bind(ready);\n emit('submit', e);\n if (!e.defaultPrevented) {\n ready.then(_ref2 => {\n let {\n valid\n } = _ref2;\n if (valid) {\n formRef.value?.submit();\n }\n });\n }\n e.preventDefault();\n }\n useRender(() => _createVNode(\"form\", {\n \"ref\": formRef,\n \"class\": ['v-form', props.class],\n \"style\": props.style,\n \"novalidate\": true,\n \"onReset\": onReset,\n \"onSubmit\": onSubmit\n }, [slots.default?.(form)]));\n return forwardRefs(form, formRef);\n }\n});\n//# sourceMappingURL=VForm.mjs.map","// Composables\nimport { makeDelayProps, useDelay } from \"../../composables/delay.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\";\nexport const makeVHoverProps = propsFactory({\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: null\n },\n ...makeDelayProps()\n}, 'VHover');\nexport const VHover = genericComponent()({\n name: 'VHover',\n props: makeVHoverProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isHovering = useProxiedModel(props, 'modelValue');\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => !props.disabled && (isHovering.value = value));\n return () => slots.default?.({\n isHovering: isHovering.value,\n props: {\n onMouseenter: runOpenDelay,\n onMouseleave: runCloseDelay\n }\n });\n }\n});\n//# sourceMappingURL=VHover.mjs.map","import { createVNode as _createVNode, createTextVNode as _createTextVNode } from \"vue\";\n// Styles\nimport \"./VInfiniteScroll.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VProgressCircular } from \"../VProgressCircular/index.mjs\"; // Composables\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useIntersectionObserver } from \"../../composables/intersectionObserver.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, watch } from 'vue';\nimport { convertToUnit, defineComponent, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVInfiniteScrollProps = propsFactory({\n color: String,\n direction: {\n type: String,\n default: 'vertical',\n validator: v => ['vertical', 'horizontal'].includes(v)\n },\n side: {\n type: String,\n default: 'end',\n validator: v => ['start', 'end', 'both'].includes(v)\n },\n mode: {\n type: String,\n default: 'intersect',\n validator: v => ['intersect', 'manual'].includes(v)\n },\n margin: [Number, String],\n loadMoreText: {\n type: String,\n default: '$vuetify.infiniteScroll.loadMore'\n },\n emptyText: {\n type: String,\n default: '$vuetify.infiniteScroll.empty'\n },\n ...makeDimensionProps(),\n ...makeTagProps()\n}, 'VInfiniteScroll');\nexport const VInfiniteScrollIntersect = defineComponent({\n name: 'VInfiniteScrollIntersect',\n props: {\n side: {\n type: String,\n required: true\n },\n rootMargin: String\n },\n emits: {\n intersect: (side, isIntersecting) => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const {\n intersectionRef,\n isIntersecting\n } = useIntersectionObserver();\n watch(isIntersecting, async val => {\n emit('intersect', props.side, val);\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": \"v-infinite-scroll-intersect\",\n \"style\": {\n '--v-infinite-margin-size': props.rootMargin\n },\n \"ref\": intersectionRef\n }, [_createTextVNode(\"\\xA0\")]));\n return {};\n }\n});\nexport const VInfiniteScroll = genericComponent()({\n name: 'VInfiniteScroll',\n props: makeVInfiniteScrollProps(),\n emits: {\n load: options => true\n },\n setup(props, _ref2) {\n let {\n slots,\n emit\n } = _ref2;\n const rootEl = ref();\n const startStatus = shallowRef('ok');\n const endStatus = shallowRef('ok');\n const margin = computed(() => convertToUnit(props.margin));\n const isIntersecting = shallowRef(false);\n function setScrollAmount(amount) {\n if (!rootEl.value) return;\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n rootEl.value[property] = amount;\n }\n function getScrollAmount() {\n if (!rootEl.value) return 0;\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n return rootEl.value[property];\n }\n function getScrollSize() {\n if (!rootEl.value) return 0;\n const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';\n return rootEl.value[property];\n }\n function getContainerSize() {\n if (!rootEl.value) return 0;\n const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth';\n return rootEl.value[property];\n }\n onMounted(() => {\n if (!rootEl.value) return;\n if (props.side === 'start') {\n setScrollAmount(getScrollSize());\n } else if (props.side === 'both') {\n setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2);\n }\n });\n function setStatus(side, status) {\n if (side === 'start') {\n startStatus.value = status;\n } else if (side === 'end') {\n endStatus.value = status;\n }\n }\n function getStatus(side) {\n return side === 'start' ? startStatus.value : endStatus.value;\n }\n let previousScrollSize = 0;\n function handleIntersect(side, _isIntersecting) {\n isIntersecting.value = _isIntersecting;\n if (isIntersecting.value) {\n intersecting(side);\n }\n }\n function intersecting(side) {\n if (props.mode !== 'manual' && !isIntersecting.value) return;\n const status = getStatus(side);\n if (!rootEl.value || ['empty', 'loading'].includes(status)) return;\n previousScrollSize = getScrollSize();\n setStatus(side, 'loading');\n function done(status) {\n setStatus(side, status);\n nextTick(() => {\n if (status === 'empty' || status === 'error') return;\n if (status === 'ok' && side === 'start') {\n setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());\n }\n if (props.mode !== 'manual') {\n nextTick(() => {\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n intersecting(side);\n });\n });\n });\n });\n }\n });\n }\n emit('load', {\n side,\n done\n });\n }\n const {\n t\n } = useLocale();\n function renderSide(side, status) {\n if (props.side !== side && props.side !== 'both') return;\n const onClick = () => intersecting(side);\n const slotProps = {\n side,\n props: {\n onClick,\n color: props.color\n }\n };\n if (status === 'error') return slots.error?.(slotProps);\n if (status === 'empty') return slots.empty?.(slotProps) ?? _createVNode(\"div\", null, [t(props.emptyText)]);\n if (props.mode === 'manual') {\n if (status === 'loading') {\n return slots.loading?.(slotProps) ?? _createVNode(VProgressCircular, {\n \"indeterminate\": true,\n \"color\": props.color\n }, null);\n }\n return slots['load-more']?.(slotProps) ?? _createVNode(VBtn, {\n \"variant\": \"outlined\",\n \"color\": props.color,\n \"onClick\": onClick\n }, {\n default: () => [t(props.loadMoreText)]\n });\n }\n return slots.loading?.(slotProps) ?? _createVNode(VProgressCircular, {\n \"indeterminate\": true,\n \"color\": props.color\n }, null);\n }\n const {\n dimensionStyles\n } = useDimension(props);\n useRender(() => {\n const Tag = props.tag;\n const hasStartIntersect = props.side === 'start' || props.side === 'both';\n const hasEndIntersect = props.side === 'end' || props.side === 'both';\n const intersectMode = props.mode === 'intersect';\n return _createVNode(Tag, {\n \"ref\": rootEl,\n \"class\": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {\n 'v-infinite-scroll--start': hasStartIntersect,\n 'v-infinite-scroll--end': hasEndIntersect\n }],\n \"style\": dimensionStyles.value\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-infinite-scroll__side\"\n }, [renderSide('start', startStatus.value)]), hasStartIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {\n \"key\": \"start\",\n \"side\": \"start\",\n \"onIntersect\": handleIntersect,\n \"rootMargin\": margin.value\n }, null), slots.default?.(), hasEndIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {\n \"key\": \"end\",\n \"side\": \"end\",\n \"onIntersect\": handleIntersect,\n \"rootMargin\": margin.value\n }, null), _createVNode(\"div\", {\n \"class\": \"v-infinite-scroll__side\"\n }, [renderSide('end', endStatus.value)])]\n });\n });\n }\n});\n//# sourceMappingURL=VInfiniteScroll.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VItemGroup.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');\nexport const makeVItemGroupProps = propsFactory({\n ...makeComponentProps(),\n ...makeGroupProps({\n selectedClass: 'v-item--selected'\n }),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VItemGroup');\nexport const VItemGroup = genericComponent()({\n name: 'VItemGroup',\n props: makeVItemGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n isSelected,\n select,\n next,\n prev,\n selected\n } = useGroup(props, VItemGroupSymbol);\n return () => _createVNode(props.tag, {\n \"class\": ['v-item-group', themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value\n })]\n });\n }\n});\n//# sourceMappingURL=VItemGroup.mjs.map","// Composables\nimport { VItemGroupSymbol } from \"./VItemGroup.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\"; // Utilities\nimport { genericComponent } from \"../../util/index.mjs\";\nexport const VItem = genericComponent()({\n name: 'VItem',\n props: makeGroupItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n isSelected,\n select,\n toggle,\n selectedClass,\n value,\n disabled\n } = useGroupItem(props, VItemGroupSymbol);\n return () => slots.default?.({\n isSelected: isSelected.value,\n selectedClass: selectedClass.value,\n select,\n toggle,\n value: value.value,\n disabled: disabled.value\n });\n }\n});\n//# sourceMappingURL=VItem.mjs.map","// Styles\nimport \"./VKbd.css\";\n\n// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VKbd = createSimpleFunctional('v-kbd');\n//# sourceMappingURL=index.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLayout.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { createLayout, makeLayoutProps } from \"../../composables/layout.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVLayoutProps = propsFactory({\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLayoutProps()\n}, 'VLayout');\nexport const VLayout = genericComponent()({\n name: 'VLayout',\n props: makeVLayoutProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n layoutClasses,\n layoutStyles,\n getLayoutItem,\n items,\n layoutRef\n } = createLayout(props);\n const {\n dimensionStyles\n } = useDimension(props);\n useRender(() => _createVNode(\"div\", {\n \"ref\": layoutRef,\n \"class\": [layoutClasses.value, props.class],\n \"style\": [dimensionStyles.value, layoutStyles.value, props.style]\n }, [slots.default?.()]));\n return {\n getLayoutItem,\n items\n };\n }\n});\n//# sourceMappingURL=VLayout.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLayoutItem.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVLayoutItemProps = propsFactory({\n position: {\n type: String,\n required: true\n },\n size: {\n type: [Number, String],\n default: 300\n },\n modelValue: Boolean,\n ...makeComponentProps(),\n ...makeLayoutItemProps()\n}, 'VLayoutItem');\nexport const VLayoutItem = genericComponent()({\n name: 'VLayoutItem',\n props: makeVLayoutItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n layoutItemStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'position'),\n elementSize: toRef(props, 'size'),\n layoutSize: toRef(props, 'size'),\n active: toRef(props, 'modelValue'),\n absolute: toRef(props, 'absolute')\n });\n return () => _createVNode(\"div\", {\n \"class\": ['v-layout-item', props.class],\n \"style\": [layoutItemStyles.value, props.style]\n }, [slots.default?.()]);\n }\n});\n//# sourceMappingURL=VLayoutItem.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Directives\nimport intersect from \"../../directives/intersect/index.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVLazyProps = propsFactory({\n modelValue: Boolean,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined\n })\n },\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps(),\n ...makeTransitionProps({\n transition: 'fade-transition'\n })\n}, 'VLazy');\nexport const VLazy = genericComponent()({\n name: 'VLazy',\n directives: {\n intersect\n },\n props: makeVLazyProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const isActive = useProxiedModel(props, 'modelValue');\n function onIntersect(isIntersecting) {\n if (isActive.value) return;\n isActive.value = isIntersecting;\n }\n useRender(() => _withDirectives(_createVNode(props.tag, {\n \"class\": ['v-lazy', props.class],\n \"style\": [dimensionStyles.value, props.style]\n }, {\n default: () => [isActive.value && _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [slots.default?.()]\n })]\n }), [[_resolveDirective(\"intersect\"), {\n handler: onIntersect,\n options: props.options\n }, null]]));\n return {};\n }\n});\n//# sourceMappingURL=VLazy.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLocaleProvider.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVLocaleProviderProps = propsFactory({\n locale: String,\n fallbackLocale: String,\n messages: Object,\n rtl: {\n type: Boolean,\n default: undefined\n },\n ...makeComponentProps()\n}, 'VLocaleProvider');\nexport const VLocaleProvider = genericComponent()({\n name: 'VLocaleProvider',\n props: makeVLocaleProviderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n rtlClasses\n } = provideLocale(props);\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-locale-provider', rtlClasses.value, props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VLocaleProvider.mjs.map","// Utilities\nimport { computed, onBeforeUnmount, onMounted, shallowRef, watch } from 'vue';\nimport { convertToUnit } from \"../../util/index.mjs\"; // Types\nexport function useSticky(_ref) {\n let {\n rootEl,\n isSticky,\n layoutItemStyles\n } = _ref;\n const isStuck = shallowRef(false);\n const stuckPosition = shallowRef(0);\n const stickyStyles = computed(() => {\n const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;\n return [isSticky.value ? {\n top: 'auto',\n bottom: 'auto',\n height: undefined\n } : undefined, isStuck.value ? {\n [side]: convertToUnit(stuckPosition.value)\n } : {\n top: layoutItemStyles.value.top\n }];\n });\n onMounted(() => {\n watch(isSticky, val => {\n if (val) {\n window.addEventListener('scroll', onScroll, {\n passive: true\n });\n } else {\n window.removeEventListener('scroll', onScroll);\n }\n }, {\n immediate: true\n });\n });\n onBeforeUnmount(() => {\n window.removeEventListener('scroll', onScroll);\n });\n let lastScrollTop = 0;\n function onScroll() {\n const direction = lastScrollTop > window.scrollY ? 'up' : 'down';\n const rect = rootEl.value.getBoundingClientRect();\n const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);\n const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);\n const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;\n const bodyScroll = parseFloat(getComputedStyle(rootEl.value).getPropertyValue('--v-body-scroll-y')) || 0;\n if (rect.height < window.innerHeight - layoutTop) {\n isStuck.value = 'top';\n stuckPosition.value = layoutTop;\n } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {\n stuckPosition.value = window.scrollY + rect.top - bodyScroll;\n isStuck.value = true;\n } else if (direction === 'down' && bottom <= 0) {\n stuckPosition.value = 0;\n isStuck.value = 'bottom';\n } else if (direction === 'up' && top <= 0) {\n if (!bodyScroll) {\n stuckPosition.value = rect.top + top;\n isStuck.value = 'top';\n } else if (isStuck.value !== 'top') {\n stuckPosition.value = -top + bodyScroll + layoutTop;\n isStuck.value = 'top';\n }\n }\n lastScrollTop = window.scrollY;\n }\n return {\n isStuck,\n stickyStyles\n };\n}\n//# sourceMappingURL=sticky.mjs.map","// Utilities\nimport { CircularBuffer } from \"../util/index.mjs\";\nconst HORIZON = 100; // ms\nconst HISTORY = 20; // number of samples to keep\n\n/** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */\nfunction kineticEnergyToVelocity(work) {\n const sqrt2 = 1.41421356237;\n return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;\n}\n\n/**\n * Returns pointer velocity in px/s\n */\nexport function calculateImpulseVelocity(samples) {\n // The input should be in reversed time order (most recent sample at index i=0)\n if (samples.length < 2) {\n // if 0 or 1 points, velocity is zero\n return 0;\n }\n // if (samples[1].t > samples[0].t) {\n // // Algorithm will still work, but not perfectly\n // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')\n // }\n if (samples.length === 2) {\n // if 2 points, basic linear calculation\n if (samples[1].t === samples[0].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)\n return 0;\n }\n return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);\n }\n // Guaranteed to have at least 3 points here\n // start with the oldest sample and go forward in time\n let work = 0;\n for (let i = samples.length - 1; i > 0; i--) {\n if (samples[i].t === samples[i - 1].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)\n continue;\n }\n const vprev = kineticEnergyToVelocity(work); // v[i-1]\n const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t); // v[i]\n work += (vcurr - vprev) * Math.abs(vcurr);\n if (i === samples.length - 1) {\n work *= 0.5;\n }\n }\n return kineticEnergyToVelocity(work) * 1000;\n}\nexport function useVelocity() {\n const touches = {};\n function addMovement(e) {\n Array.from(e.changedTouches).forEach(touch => {\n const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY));\n samples.push([e.timeStamp, touch]);\n });\n }\n function endTouch(e) {\n Array.from(e.changedTouches).forEach(touch => {\n delete touches[touch.identifier];\n });\n }\n function getVelocity(id) {\n const samples = touches[id]?.values().reverse();\n if (!samples) {\n throw new Error(`No samples for touch id ${id}`);\n }\n const newest = samples[0];\n const x = [];\n const y = [];\n for (const val of samples) {\n if (newest[0] - val[0] > HORIZON) break;\n x.push({\n t: val[0],\n d: val[1].clientX\n });\n y.push({\n t: val[0],\n d: val[1].clientY\n });\n }\n return {\n x: calculateImpulseVelocity(x),\n y: calculateImpulseVelocity(y),\n get direction() {\n const {\n x,\n y\n } = this;\n const [absX, absY] = [Math.abs(x), Math.abs(y)];\n return absX > absY && x >= 0 ? 'right' : absX > absY && x <= 0 ? 'left' : absY > absX && y >= 0 ? 'down' : absY > absX && y <= 0 ? 'up' : oops();\n }\n };\n }\n return {\n addMovement,\n endTouch,\n getVelocity\n };\n}\nfunction oops() {\n throw new Error();\n}\n//# sourceMappingURL=touch.mjs.map","// Composables\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { useVelocity } from \"../../composables/touch.mjs\"; // Utilities\nimport { computed, onBeforeUnmount, onMounted, onScopeDispose, shallowRef, watchEffect } from 'vue';\n\n// Types\n\nexport function useTouch(_ref) {\n let {\n el,\n isActive,\n isTemporary,\n width,\n touchless,\n position\n } = _ref;\n onMounted(() => {\n window.addEventListener('touchstart', onTouchstart, {\n passive: true\n });\n window.addEventListener('touchmove', onTouchmove, {\n passive: false\n });\n window.addEventListener('touchend', onTouchend, {\n passive: true\n });\n });\n onBeforeUnmount(() => {\n window.removeEventListener('touchstart', onTouchstart);\n window.removeEventListener('touchmove', onTouchmove);\n window.removeEventListener('touchend', onTouchend);\n });\n const isHorizontal = computed(() => ['left', 'right'].includes(position.value));\n const {\n addMovement,\n endTouch,\n getVelocity\n } = useVelocity();\n let maybeDragging = false;\n const isDragging = shallowRef(false);\n const dragProgress = shallowRef(0);\n const offset = shallowRef(0);\n let start;\n function getOffset(pos, active) {\n return (position.value === 'left' ? pos : position.value === 'right' ? document.documentElement.clientWidth - pos : position.value === 'top' ? pos : position.value === 'bottom' ? document.documentElement.clientHeight - pos : oops()) - (active ? width.value : 0);\n }\n function getProgress(pos) {\n let limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const progress = position.value === 'left' ? (pos - offset.value) / width.value : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value : position.value === 'top' ? (pos - offset.value) / width.value : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value : oops();\n return limit ? Math.max(0, Math.min(1, progress)) : progress;\n }\n function onTouchstart(e) {\n if (touchless.value) return;\n const touchX = e.changedTouches[0].clientX;\n const touchY = e.changedTouches[0].clientY;\n const touchZone = 25;\n const inTouchZone = position.value === 'left' ? touchX < touchZone : position.value === 'right' ? touchX > document.documentElement.clientWidth - touchZone : position.value === 'top' ? touchY < touchZone : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - touchZone : oops();\n const inElement = isActive.value && (position.value === 'left' ? touchX < width.value : position.value === 'right' ? touchX > document.documentElement.clientWidth - width.value : position.value === 'top' ? touchY < width.value : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - width.value : oops());\n if (inTouchZone || inElement || isActive.value && isTemporary.value) {\n start = [touchX, touchY];\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value);\n dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY);\n maybeDragging = offset.value > -20 && offset.value < 80;\n endTouch(e);\n addMovement(e);\n }\n }\n function onTouchmove(e) {\n const touchX = e.changedTouches[0].clientX;\n const touchY = e.changedTouches[0].clientY;\n if (maybeDragging) {\n if (!e.cancelable) {\n maybeDragging = false;\n return;\n }\n const dx = Math.abs(touchX - start[0]);\n const dy = Math.abs(touchY - start[1]);\n const thresholdMet = isHorizontal.value ? dx > dy && dx > 3 : dy > dx && dy > 3;\n if (thresholdMet) {\n isDragging.value = true;\n maybeDragging = false;\n } else if ((isHorizontal.value ? dy : dx) > 3) {\n maybeDragging = false;\n }\n }\n if (!isDragging.value) return;\n e.preventDefault();\n addMovement(e);\n const progress = getProgress(isHorizontal.value ? touchX : touchY, false);\n dragProgress.value = Math.max(0, Math.min(1, progress));\n if (progress > 1) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, true);\n } else if (progress < 0) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, false);\n }\n }\n function onTouchend(e) {\n maybeDragging = false;\n if (!isDragging.value) return;\n addMovement(e);\n isDragging.value = false;\n const velocity = getVelocity(e.changedTouches[0].identifier);\n const vx = Math.abs(velocity.x);\n const vy = Math.abs(velocity.y);\n const thresholdMet = isHorizontal.value ? vx > vy && vx > 400 : vy > vx && vy > 3;\n if (thresholdMet) {\n isActive.value = velocity.direction === ({\n left: 'right',\n right: 'left',\n top: 'down',\n bottom: 'up'\n }[position.value] || oops());\n } else {\n isActive.value = dragProgress.value > 0.5;\n }\n }\n const dragStyles = computed(() => {\n return isDragging.value ? {\n transform: position.value === 'left' ? `translateX(calc(-100% + ${dragProgress.value * width.value}px))` : position.value === 'right' ? `translateX(calc(100% - ${dragProgress.value * width.value}px))` : position.value === 'top' ? `translateY(calc(-100% + ${dragProgress.value * width.value}px))` : position.value === 'bottom' ? `translateY(calc(100% - ${dragProgress.value * width.value}px))` : oops(),\n transition: 'none'\n } : undefined;\n });\n useToggleScope(isDragging, () => {\n const transform = el.value?.style.transform ?? null;\n const transition = el.value?.style.transition ?? null;\n watchEffect(() => {\n el.value?.style.setProperty('transform', dragStyles.value?.transform || 'none');\n el.value?.style.setProperty('transition', dragStyles.value?.transition || null);\n });\n onScopeDispose(() => {\n el.value?.style.setProperty('transform', transform);\n el.value?.style.setProperty('transition', transition);\n });\n });\n return {\n isDragging,\n dragProgress,\n dragStyles\n };\n}\nfunction oops() {\n throw new Error();\n}\n//# sourceMappingURL=touch.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VNavigationDrawer.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { useSticky } from \"./sticky.mjs\";\nimport { useTouch } from \"./touch.mjs\";\nimport { useRtl } from \"../../composables/index.mjs\";\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDelayProps, useDelay } from \"../../composables/delay.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useRouter } from \"../../composables/router.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\"; // Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, Transition, watch } from 'vue';\nimport { genericComponent, propsFactory, toPhysical, useRender } from \"../../util/index.mjs\"; // Types\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'];\nexport const makeVNavigationDrawerProps = propsFactory({\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean,\n default: null\n },\n permanent: Boolean,\n rail: {\n type: Boolean,\n default: null\n },\n railWidth: {\n type: [Number, String],\n default: 56\n },\n scrim: {\n type: [Boolean, String],\n default: true\n },\n image: String,\n temporary: Boolean,\n persistent: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256\n },\n location: {\n type: String,\n default: 'start',\n validator: value => locations.includes(value)\n },\n sticky: Boolean,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDelayProps(),\n ...makeDisplayProps({\n mobile: null\n }),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({\n tag: 'nav'\n }),\n ...makeThemeProps()\n}, 'VNavigationDrawer');\nexport const VNavigationDrawer = genericComponent()({\n name: 'VNavigationDrawer',\n props: makeVNavigationDrawerProps(),\n emits: {\n 'update:modelValue': val => true,\n 'update:rail': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n isRtl\n } = useRtl();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n elevationClasses\n } = useElevation(props);\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const {\n roundedClasses\n } = useRounded(props);\n const router = useRouter();\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v);\n const {\n ssrBootStyles\n } = useSsrBoot();\n const {\n scopeId\n } = useScopeId();\n const rootEl = ref();\n const isHovering = shallowRef(false);\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => {\n isHovering.value = value;\n });\n const width = computed(() => {\n return props.rail && props.expandOnHover && isHovering.value ? Number(props.width) : Number(props.rail ? props.railWidth : props.width);\n });\n const location = computed(() => {\n return toPhysical(props.location, isRtl.value);\n });\n const isPersistent = computed(() => props.persistent);\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary));\n const isSticky = computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');\n useToggleScope(() => props.expandOnHover && props.rail != null, () => {\n watch(isHovering, val => emit('update:rail', !val));\n });\n useToggleScope(() => !props.disableResizeWatcher, () => {\n watch(isTemporary, val => !props.permanent && nextTick(() => isActive.value = !val));\n });\n useToggleScope(() => !props.disableRouteWatcher && !!router, () => {\n watch(router.currentRoute, () => isTemporary.value && (isActive.value = false));\n });\n watch(() => props.permanent, val => {\n if (val) isActive.value = true;\n });\n if (props.modelValue == null && !isTemporary.value) {\n isActive.value = props.permanent || !mobile.value;\n }\n const {\n isDragging,\n dragProgress\n } = useTouch({\n el: rootEl,\n isActive,\n isTemporary,\n width,\n touchless: toRef(props, 'touchless'),\n position: location\n });\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0 : props.rail && props.expandOnHover ? Number(props.railWidth) : width.value;\n return isDragging.value ? size * dragProgress.value : size;\n });\n const elementSize = computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value);\n const {\n layoutItemStyles,\n layoutItemScrimStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize,\n active: computed(() => isActive.value || isDragging.value),\n disableTransitions: computed(() => isDragging.value),\n absolute: computed(() =>\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n props.absolute || isSticky.value && typeof isStuck.value !== 'string')\n });\n const {\n isStuck,\n stickyStyles\n } = useSticky({\n rootEl,\n isSticky,\n layoutItemStyles\n });\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null;\n }));\n const scrimStyles = computed(() => ({\n ...(isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none'\n } : undefined),\n ...layoutItemScrimStyles.value\n }));\n provideDefaults({\n VList: {\n bgColor: 'transparent'\n }\n });\n useRender(() => {\n const hasImage = slots.image || props.image;\n return _createVNode(_Fragment, null, [_createVNode(props.tag, _mergeProps({\n \"ref\": rootEl,\n \"onMouseenter\": runOpenDelay,\n \"onMouseleave\": runCloseDelay,\n \"class\": ['v-navigation-drawer', `v-navigation-drawer--${location.value}`, {\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--persistent': isPersistent.value,\n 'v-navigation-drawer--active': isActive.value,\n 'v-navigation-drawer--sticky': isSticky.value\n }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style, ['top', 'bottom'].includes(location.value) ? {\n height: 'auto'\n } : {}]\n }, scopeId, attrs), {\n default: () => [hasImage && _createVNode(\"div\", {\n \"key\": \"image\",\n \"class\": \"v-navigation-drawer__img\"\n }, [!slots.image ? _createVNode(VImg, {\n \"key\": \"image-img\",\n \"alt\": \"\",\n \"cover\": true,\n \"height\": \"inherit\",\n \"src\": props.image\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"image-defaults\",\n \"disabled\": !props.image,\n \"defaults\": {\n VImg: {\n alt: '',\n cover: true,\n height: 'inherit',\n src: props.image\n }\n }\n }, slots.image)]), slots.prepend && _createVNode(\"div\", {\n \"class\": \"v-navigation-drawer__prepend\"\n }, [slots.prepend?.()]), _createVNode(\"div\", {\n \"class\": \"v-navigation-drawer__content\"\n }, [slots.default?.()]), slots.append && _createVNode(\"div\", {\n \"class\": \"v-navigation-drawer__append\"\n }, [slots.append?.()])]\n }), _createVNode(Transition, {\n \"name\": \"fade-transition\"\n }, {\n default: () => [isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && _createVNode(\"div\", _mergeProps({\n \"class\": ['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value],\n \"style\": [scrimStyles.value, scrimColor.backgroundColorStyles.value],\n \"onClick\": () => {\n if (isPersistent.value) return;\n isActive.value = false;\n }\n }, scopeId), null)]\n })]);\n });\n return {\n isStuck\n };\n }\n});\n//# sourceMappingURL=VNavigationDrawer.mjs.map","// Composables\nimport { useHydration } from \"../../composables/hydration.mjs\"; // Utilities\nimport { defineComponent } from \"../../util/index.mjs\";\nexport const VNoSsr = defineComponent({\n name: 'VNoSsr',\n setup(_, _ref) {\n let {\n slots\n } = _ref;\n const show = useHydration();\n return () => show.value && slots.default?.();\n }\n});\n//# sourceMappingURL=VNoSsr.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VOtpInput.css\";\n\n// Components\nimport { makeVFieldProps, VField } from \"../VField/VField.mjs\";\nimport { VOverlay } from \"../VOverlay/VOverlay.mjs\";\nimport { VProgressCircular } from \"../VProgressCircular/VProgressCircular.mjs\"; // Composables\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { filterInputAttrs, focusChild, genericComponent, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp'\n },\n length: {\n type: [Number, String],\n default: 6\n },\n modelValue: {\n type: [Number, String],\n default: undefined\n },\n placeholder: String,\n type: {\n type: String,\n default: 'number'\n },\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...only(makeVFieldProps({\n variant: 'outlined'\n }), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'rounded', 'style', 'theme', 'variant'])\n}, 'VOtpInput');\nexport const VOtpInput = genericComponent()({\n name: 'VOtpInput',\n props: makeVOtpInputProps(),\n emits: {\n finish: val => true,\n 'update:focused': val => true,\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const model = useProxiedModel(props, 'modelValue', '', val => val == null ? [] : String(val).split(''), val => val.join(''));\n const {\n t\n } = useLocale();\n const length = computed(() => Number(props.length));\n const fields = computed(() => Array(length.value).fill(0));\n const focusIndex = ref(-1);\n const contentRef = ref();\n const inputRef = ref([]);\n const current = computed(() => inputRef.value[focusIndex.value]);\n function onInput() {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = '';\n return;\n }\n const array = model.value.slice();\n const value = current.value.value;\n array[focusIndex.value] = value;\n let target = null;\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1;\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next';\n }\n model.value = array;\n if (target) focusChild(contentRef.value, target);\n }\n function onKeydown(e) {\n const array = model.value.slice();\n const index = focusIndex.value;\n let target = null;\n if (!['ArrowLeft', 'ArrowRight', 'Backspace', 'Delete'].includes(e.key)) return;\n e.preventDefault();\n if (e.key === 'ArrowLeft') {\n target = 'prev';\n } else if (e.key === 'ArrowRight') {\n target = 'next';\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = '';\n model.value = array;\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev';\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select();\n });\n }\n }\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value, target);\n }\n });\n }\n function onPaste(index, e) {\n e.preventDefault();\n e.stopPropagation();\n const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';\n if (isValidNumber(clipboardText)) return;\n model.value = clipboardText.split('');\n inputRef.value?.[index].blur();\n }\n function reset() {\n model.value = [];\n }\n function onFocus(e, index) {\n focus();\n focusIndex.value = index;\n }\n function onBlur() {\n blur();\n focusIndex.value = -1;\n }\n function isValidNumber(value) {\n return props.type === 'number' && /[^0-9]/g.test(value);\n }\n provideDefaults({\n VField: {\n color: computed(() => props.color),\n bgColor: computed(() => props.color),\n baseColor: computed(() => props.baseColor),\n disabled: computed(() => props.disabled),\n error: computed(() => props.error),\n variant: computed(() => props.variant)\n }\n }, {\n scoped: true\n });\n watch(model, val => {\n if (val.length === length.value) emit('finish', val.join(''));\n }, {\n deep: true\n });\n watch(focusIndex, val => {\n if (val < 0) return;\n nextTick(() => {\n inputRef.value[val]?.select();\n });\n });\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-otp-input', {\n 'v-otp-input--divided': !!props.divider\n }, props.class],\n \"style\": [props.style]\n }, rootAttrs), [_createVNode(\"div\", {\n \"ref\": contentRef,\n \"class\": \"v-otp-input__content\",\n \"style\": [dimensionStyles.value]\n }, [fields.value.map((_, i) => _createVNode(_Fragment, null, [props.divider && i !== 0 && _createVNode(\"span\", {\n \"class\": \"v-otp-input__divider\"\n }, [props.divider]), _createVNode(VField, {\n \"focused\": isFocused.value && props.focusAll || focusIndex.value === i,\n \"key\": i\n }, {\n ...slots,\n loader: undefined,\n default: () => {\n return _createVNode(\"input\", {\n \"ref\": val => inputRef.value[i] = val,\n \"aria-label\": t(props.label, i + 1),\n \"autofocus\": i === 0 && props.autofocus,\n \"autocomplete\": \"one-time-code\",\n \"class\": ['v-otp-input__field'],\n \"disabled\": props.disabled,\n \"inputmode\": props.type === 'number' ? 'numeric' : 'text',\n \"min\": props.type === 'number' ? 0 : undefined,\n \"maxlength\": \"1\",\n \"placeholder\": props.placeholder,\n \"type\": props.type === 'number' ? 'text' : props.type,\n \"value\": model.value[i],\n \"onInput\": onInput,\n \"onFocus\": e => onFocus(e, i),\n \"onBlur\": onBlur,\n \"onKeydown\": onKeydown,\n \"onPaste\": event => onPaste(i, event)\n }, null);\n }\n })])), _createVNode(\"input\", _mergeProps({\n \"class\": \"v-otp-input-input\",\n \"type\": \"hidden\"\n }, inputAttrs, {\n \"value\": model.value.join('')\n }), null), _createVNode(VOverlay, {\n \"contained\": true,\n \"content-class\": \"v-otp-input__loader\",\n \"model-value\": !!props.loading,\n \"persistent\": true\n }, {\n default: () => [slots.loader?.() ?? _createVNode(VProgressCircular, {\n \"color\": typeof props.loading === 'boolean' ? undefined : props.loading,\n \"indeterminate\": true,\n \"size\": \"24\",\n \"width\": \"2\"\n }, null)]\n }), slots.default?.()])]);\n });\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur());\n },\n focus: () => {\n inputRef.value?.[0].focus();\n },\n reset,\n isFocused\n };\n }\n});\n//# sourceMappingURL=VOtpInput.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VParallax.css\";\n\n// Components\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { useDisplay } from \"../../composables/index.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useIntersectionObserver } from \"../../composables/intersectionObserver.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\"; // Utilities\nimport { computed, onBeforeUnmount, ref, watch, watchEffect } from 'vue';\nimport { clamp, genericComponent, getScrollParent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nfunction floor(val) {\n return Math.floor(Math.abs(val)) * Math.sign(val);\n}\nexport const makeVParallaxProps = propsFactory({\n scale: {\n type: [Number, String],\n default: 0.5\n },\n ...makeComponentProps()\n}, 'VParallax');\nexport const VParallax = genericComponent()({\n name: 'VParallax',\n props: makeVParallaxProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n intersectionRef,\n isIntersecting\n } = useIntersectionObserver();\n const {\n resizeRef,\n contentRect\n } = useResizeObserver();\n const {\n height: displayHeight\n } = useDisplay();\n const root = ref();\n watchEffect(() => {\n intersectionRef.value = resizeRef.value = root.value?.$el;\n });\n let scrollParent;\n watch(isIntersecting, val => {\n if (val) {\n scrollParent = getScrollParent(intersectionRef.value);\n scrollParent = scrollParent === document.scrollingElement ? document : scrollParent;\n scrollParent.addEventListener('scroll', onScroll, {\n passive: true\n });\n onScroll();\n } else {\n scrollParent.removeEventListener('scroll', onScroll);\n }\n });\n onBeforeUnmount(() => {\n scrollParent?.removeEventListener('scroll', onScroll);\n });\n watch(displayHeight, onScroll);\n watch(() => contentRect.value?.height, onScroll);\n const scale = computed(() => {\n return 1 - clamp(+props.scale);\n });\n let frame = -1;\n function onScroll() {\n if (!isIntersecting.value) return;\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(() => {\n const el = (root.value?.$el).querySelector('.v-img__img');\n if (!el) return;\n const scrollHeight = scrollParent instanceof Document ? document.documentElement.clientHeight : scrollParent.clientHeight;\n const scrollPos = scrollParent instanceof Document ? window.scrollY : scrollParent.scrollTop;\n const top = intersectionRef.value.getBoundingClientRect().top + scrollPos;\n const height = contentRect.value.height;\n const center = top + (height - scrollHeight) / 2;\n const translate = floor((scrollPos - center) * scale.value);\n const sizeScale = Math.max(1, (scale.value * (scrollHeight - height) + height) / height);\n el.style.setProperty('transform', `translateY(${translate}px) scale(${sizeScale})`);\n });\n }\n useRender(() => _createVNode(VImg, {\n \"class\": ['v-parallax', {\n 'v-parallax--active': isIntersecting.value\n }, props.class],\n \"style\": props.style,\n \"ref\": root,\n \"cover\": true,\n \"onLoadstart\": onScroll,\n \"onLoad\": onScroll\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VParallax.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVSelectionControlProps, VSelectionControl } from \"../VSelectionControl/VSelectionControl.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRadioProps = propsFactory({\n ...makeVSelectionControlProps({\n falseIcon: '$radioOff',\n trueIcon: '$radioOn'\n })\n}, 'VRadio');\nexport const VRadio = genericComponent()({\n name: 'VRadio',\n props: makeVRadioProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const controlProps = VSelectionControl.filterProps(props);\n return _createVNode(VSelectionControl, _mergeProps(controlProps, {\n \"class\": ['v-radio', props.class],\n \"style\": props.style,\n \"type\": \"radio\"\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VRadio.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VRadioGroup.css\";\n\n// Components\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\";\nimport { VSelectionControl } from \"../VSelectionControl/index.mjs\";\nimport { makeSelectionControlGroupProps, VSelectionControlGroup } from \"../VSelectionControlGroup/VSelectionControlGroup.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRadioGroupProps = propsFactory({\n height: {\n type: [Number, String],\n default: 'auto'\n },\n ...makeVInputProps(),\n ...omit(makeSelectionControlGroupProps(), ['multiple']),\n trueIcon: {\n type: IconValue,\n default: '$radioOn'\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff'\n },\n type: {\n type: String,\n default: 'radio'\n }\n}, 'VRadioGroup');\nexport const VRadioGroup = genericComponent()({\n name: 'VRadioGroup',\n inheritAttrs: false,\n props: makeVRadioGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const uid = getUid();\n const id = computed(() => props.id || `radio-group-${uid}`);\n const model = useProxiedModel(props, 'modelValue');\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const controlProps = VSelectionControl.filterProps(props);\n const label = slots.label ? slots.label({\n label: props.label,\n props: {\n for: id.value\n }\n }) : props.label;\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-radio-group', props.class],\n \"style\": props.style\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": id.value\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly\n } = _ref2;\n return _createVNode(_Fragment, null, [label && _createVNode(VLabel, {\n \"id\": id.value\n }, {\n default: () => [label]\n }), _createVNode(VSelectionControlGroup, _mergeProps(controlProps, {\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"defaultsTarget\": \"VRadio\",\n \"trueIcon\": props.trueIcon,\n \"falseIcon\": props.falseIcon,\n \"type\": props.type,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value,\n \"aria-labelledby\": label ? id.value : undefined,\n \"multiple\": false\n }, controlAttrs, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event\n }), slots)]);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VRadioGroup.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"../VSlider/VSlider.css\";\n\n// Components\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\";\nimport { getOffset, makeSliderProps, useSlider, useSteps } from \"../VSlider/slider.mjs\";\nimport { VSliderThumb } from \"../VSlider/VSliderThumb.mjs\";\nimport { VSliderTrack } from \"../VSlider/VSliderTrack.mjs\"; // Composables\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRangeSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n strict: Boolean,\n modelValue: {\n type: Array,\n default: () => [0, 0]\n }\n}, 'VRangeSlider');\nexport const VRangeSlider = genericComponent()({\n name: 'VRangeSlider',\n props: makeVRangeSliderProps(),\n emits: {\n 'update:focused': value => true,\n 'update:modelValue': value => true,\n end: value => true,\n start: value => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const startThumbRef = ref();\n const stopThumbRef = ref();\n const inputRef = ref();\n const {\n rtlClasses\n } = useRtl();\n function getActiveThumb(e) {\n if (!startThumbRef.value || !stopThumbRef.value) return;\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction);\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction);\n const a = Math.abs(startOffset);\n const b = Math.abs(stopOffset);\n return a < b || a === b && startOffset < 0 ? startThumbRef.value.$el : stopThumbRef.value.$el;\n }\n const steps = useSteps(props);\n const model = useProxiedModel(props, 'modelValue', undefined, arr => {\n if (!arr?.length) return [0, 0];\n return arr.map(value => steps.roundValue(value));\n });\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n trackContainerRef,\n readonly\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value);\n },\n onSliderEnd: _ref2 => {\n let {\n value\n } = _ref2;\n const newValue = activeThumbRef.value === startThumbRef.value?.$el ? [value, model.value[1]] : [model.value[0], value];\n if (!props.strict && newValue[0] < newValue[1]) {\n model.value = newValue;\n }\n emit('end', model.value);\n },\n onSliderMove: _ref3 => {\n let {\n value\n } = _ref3;\n const [start, stop] = model.value;\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el;\n activeThumbRef.value?.focus();\n }\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(value, stop), stop];\n } else {\n model.value = [start, Math.max(start, value)];\n }\n },\n getActiveThumb\n });\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const trackStart = computed(() => position(model.value[0]));\n const trackStop = computed(() => position(model.value[1]));\n useRender(() => {\n const inputProps = VInput.filterProps(props);\n const hasPrepend = !!(props.label || slots.label || slots.prepend);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-slider', 'v-range-slider', {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled\n }, rtlClasses.value, props.class],\n \"style\": props.style,\n \"ref\": inputRef\n }, inputProps, {\n \"focused\": isFocused.value\n }), {\n ...slots,\n prepend: hasPrepend ? slotProps => _createVNode(_Fragment, null, [slots.label?.(slotProps) ?? (props.label ? _createVNode(VLabel, {\n \"class\": \"v-slider__label\",\n \"text\": props.label\n }, null) : undefined), slots.prepend?.(slotProps)]) : undefined,\n default: _ref4 => {\n let {\n id,\n messagesId\n } = _ref4;\n return _createVNode(\"div\", {\n \"class\": \"v-slider__container\",\n \"onMousedown\": !readonly.value ? onSliderMousedown : undefined,\n \"onTouchstartPassive\": !readonly.value ? onSliderTouchstart : undefined\n }, [_createVNode(\"input\", {\n \"id\": `${id.value}_start`,\n \"name\": props.name || id.value,\n \"disabled\": !!props.disabled,\n \"readonly\": !!props.readonly,\n \"tabindex\": \"-1\",\n \"value\": model.value[0]\n }, null), _createVNode(\"input\", {\n \"id\": `${id.value}_stop`,\n \"name\": props.name || id.value,\n \"disabled\": !!props.disabled,\n \"readonly\": !!props.readonly,\n \"tabindex\": \"-1\",\n \"value\": model.value[1]\n }, null), _createVNode(VSliderTrack, {\n \"ref\": trackContainerRef,\n \"start\": trackStart.value,\n \"stop\": trackStop.value\n }, {\n 'tick-label': slots['tick-label']\n }), _createVNode(VSliderThumb, {\n \"ref\": startThumbRef,\n \"aria-describedby\": messagesId.value,\n \"focused\": isFocused && activeThumbRef.value === startThumbRef.value?.$el,\n \"modelValue\": model.value[0],\n \"onUpdate:modelValue\": v => model.value = [v, model.value[1]],\n \"onFocus\": e => {\n focus();\n activeThumbRef.value = startThumbRef.value?.$el;\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (model.value[0] === model.value[1] && model.value[1] === min.value && e.relatedTarget !== stopThumbRef.value?.$el) {\n startThumbRef.value?.$el.blur();\n stopThumbRef.value?.$el.focus();\n }\n },\n \"onBlur\": () => {\n blur();\n activeThumbRef.value = undefined;\n },\n \"min\": min.value,\n \"max\": model.value[1],\n \"position\": trackStart.value,\n \"ripple\": props.ripple\n }, {\n 'thumb-label': slots['thumb-label']\n }), _createVNode(VSliderThumb, {\n \"ref\": stopThumbRef,\n \"aria-describedby\": messagesId.value,\n \"focused\": isFocused && activeThumbRef.value === stopThumbRef.value?.$el,\n \"modelValue\": model.value[1],\n \"onUpdate:modelValue\": v => model.value = [model.value[0], v],\n \"onFocus\": e => {\n focus();\n activeThumbRef.value = stopThumbRef.value?.$el;\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (model.value[0] === model.value[1] && model.value[0] === max.value && e.relatedTarget !== startThumbRef.value?.$el) {\n stopThumbRef.value?.$el.blur();\n startThumbRef.value?.$el.focus();\n }\n },\n \"onBlur\": () => {\n blur();\n activeThumbRef.value = undefined;\n },\n \"min\": model.value[0],\n \"max\": max.value,\n \"position\": trackStop.value,\n \"ripple\": props.ripple\n }, {\n 'thumb-label': slots['thumb-label']\n })]);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VRangeSlider.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VRating.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, shallowRef } from 'vue';\nimport { clamp, createRange, genericComponent, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRatingProps = propsFactory({\n name: String,\n itemAriaLabel: {\n type: String,\n default: '$vuetify.rating.ariaLabel.item'\n },\n activeColor: String,\n color: String,\n clearable: Boolean,\n disabled: Boolean,\n emptyIcon: {\n type: IconValue,\n default: '$ratingEmpty'\n },\n fullIcon: {\n type: IconValue,\n default: '$ratingFull'\n },\n halfIncrements: Boolean,\n hover: Boolean,\n length: {\n type: [Number, String],\n default: 5\n },\n readonly: Boolean,\n modelValue: {\n type: [Number, String],\n default: 0\n },\n itemLabels: Array,\n itemLabelPosition: {\n type: String,\n default: 'top',\n validator: v => ['top', 'bottom'].includes(v)\n },\n ripple: Boolean,\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VRating');\nexport const VRating = genericComponent()({\n name: 'VRating',\n props: makeVRatingProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n themeClasses\n } = provideTheme(props);\n const rating = useProxiedModel(props, 'modelValue');\n const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, +props.length));\n const range = computed(() => createRange(Number(props.length), 1));\n const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));\n const hoverIndex = shallowRef(-1);\n const itemState = computed(() => increments.value.map(value => {\n const isHovering = props.hover && hoverIndex.value > -1;\n const isFilled = normalizedValue.value >= value;\n const isHovered = hoverIndex.value >= value;\n const isFullIcon = isHovering ? isHovered : isFilled;\n const icon = isFullIcon ? props.fullIcon : props.emptyIcon;\n const activeColor = props.activeColor ?? props.color;\n const color = isFilled || isHovered ? activeColor : props.color;\n return {\n isFilled,\n isHovered,\n icon,\n color\n };\n }));\n const eventState = computed(() => [0, ...increments.value].map(value => {\n function onMouseenter() {\n hoverIndex.value = value;\n }\n function onMouseleave() {\n hoverIndex.value = -1;\n }\n function onClick() {\n if (props.disabled || props.readonly) return;\n rating.value = normalizedValue.value === value && props.clearable ? 0 : value;\n }\n return {\n onMouseenter: props.hover ? onMouseenter : undefined,\n onMouseleave: props.hover ? onMouseleave : undefined,\n onClick\n };\n }));\n const name = computed(() => props.name ?? `v-rating-${getUid()}`);\n function VRatingItem(_ref2) {\n let {\n value,\n index,\n showStar = true\n } = _ref2;\n const {\n onMouseenter,\n onMouseleave,\n onClick\n } = eventState.value[index + 1];\n const id = `${name.value}-${String(value).replace('.', '-')}`;\n const btnProps = {\n color: itemState.value[index]?.color,\n density: props.density,\n disabled: props.disabled,\n icon: itemState.value[index]?.icon,\n ripple: props.ripple,\n size: props.size,\n variant: 'plain'\n };\n return _createVNode(_Fragment, null, [_createVNode(\"label\", {\n \"for\": id,\n \"class\": {\n 'v-rating__item--half': props.halfIncrements && value % 1 > 0,\n 'v-rating__item--full': props.halfIncrements && value % 1 === 0\n },\n \"onMouseenter\": onMouseenter,\n \"onMouseleave\": onMouseleave,\n \"onClick\": onClick\n }, [_createVNode(\"span\", {\n \"class\": \"v-rating__hidden\"\n }, [t(props.itemAriaLabel, value, props.length)]), !showStar ? undefined : slots.item ? slots.item({\n ...itemState.value[index],\n props: btnProps,\n value,\n index,\n rating: normalizedValue.value\n }) : _createVNode(VBtn, _mergeProps({\n \"aria-label\": t(props.itemAriaLabel, value, props.length)\n }, btnProps), null)]), _createVNode(\"input\", {\n \"class\": \"v-rating__hidden\",\n \"name\": name.value,\n \"id\": id,\n \"type\": \"radio\",\n \"value\": value,\n \"checked\": normalizedValue.value === value,\n \"tabindex\": -1,\n \"readonly\": props.readonly,\n \"disabled\": props.disabled\n }, null)]);\n }\n function createLabel(labelProps) {\n if (slots['item-label']) return slots['item-label'](labelProps);\n if (labelProps.label) return _createVNode(\"span\", null, [labelProps.label]);\n return _createVNode(\"span\", null, [_createTextVNode(\"\\xA0\")]);\n }\n useRender(() => {\n const hasLabels = !!props.itemLabels?.length || slots['item-label'];\n return _createVNode(props.tag, {\n \"class\": ['v-rating', {\n 'v-rating--hover': props.hover,\n 'v-rating--readonly': props.readonly\n }, themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [_createVNode(VRatingItem, {\n \"value\": 0,\n \"index\": -1,\n \"showStar\": false\n }, null), range.value.map((value, i) => _createVNode(\"div\", {\n \"class\": \"v-rating__wrapper\"\n }, [hasLabels && props.itemLabelPosition === 'top' ? createLabel({\n value,\n index: i,\n label: props.itemLabels?.[i]\n }) : undefined, _createVNode(\"div\", {\n \"class\": \"v-rating__item\"\n }, [props.halfIncrements ? _createVNode(_Fragment, null, [_createVNode(VRatingItem, {\n \"value\": value - 0.5,\n \"index\": i * 2\n }, null), _createVNode(VRatingItem, {\n \"value\": value,\n \"index\": i * 2 + 1\n }, null)]) : _createVNode(VRatingItem, {\n \"value\": value,\n \"index\": i\n }, null)]), hasLabels && props.itemLabelPosition === 'bottom' ? createLabel({\n value,\n index: i,\n label: props.itemLabels?.[i]\n }) : undefined]))]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VRating.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSkeletonLoader.css\";\n\n// Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const rootTypes = {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, heading',\n 'card-avatar': 'image, list-item-avatar',\n chip: 'chip',\n 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n divider: 'divider',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n ossein: 'ossein',\n paragraph: 'text@3',\n sentences: 'text@2',\n subtitle: 'text',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'chip, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'text@6',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text'\n};\nfunction genBone(type) {\n let children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return _createVNode(\"div\", {\n \"class\": ['v-skeleton-loader__bone', `v-skeleton-loader__${type}`]\n }, [children]);\n}\nfunction genBones(bone) {\n // e.g. 'text@3'\n const [type, length] = bone.split('@');\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({\n length\n }).map(() => genStructure(type));\n}\nfunction genStructure(type) {\n let children = [];\n if (!type) return children;\n\n // TODO: figure out a better way to type this\n const bone = rootTypes[type];\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.includes(',')) return mapBones(type);\n // Array of values - e.g. 'paragraph@4'\n else if (type.includes('@')) return genBones(type);\n // Array of values - e.g. 'card@2'\n else if (bone.includes(',')) children = mapBones(bone);\n // Array of values - e.g. 'list-item@2'\n else if (bone.includes('@')) children = genBones(bone);\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(genStructure(bone));\n return [genBone(type, children)];\n}\nfunction mapBones(bones) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(genStructure);\n}\nexport const makeVSkeletonLoaderProps = propsFactory({\n boilerplate: Boolean,\n color: String,\n loading: Boolean,\n loadingText: {\n type: String,\n default: '$vuetify.loading'\n },\n type: {\n type: [String, Array],\n default: 'ossein'\n },\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeThemeProps()\n}, 'VSkeletonLoader');\nexport const VSkeletonLoader = genericComponent()({\n name: 'VSkeletonLoader',\n props: makeVSkeletonLoaderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n themeClasses\n } = provideTheme(props);\n const {\n t\n } = useLocale();\n const items = computed(() => genStructure(wrapInArray(props.type).join(',')));\n useRender(() => {\n const isLoading = !slots.default || props.loading;\n const loadingProps = props.boilerplate || !isLoading ? {} : {\n ariaLive: 'polite',\n ariaLabel: t(props.loadingText),\n role: 'alert'\n };\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-skeleton-loader', {\n 'v-skeleton-loader--boilerplate': props.boilerplate\n }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],\n \"style\": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}]\n }, loadingProps), [isLoading ? items.value : slots.default?.()]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VSkeletonLoader.mjs.map","// Composables\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\"; // Utilities\nimport { VSlideGroupSymbol } from \"./VSlideGroup.mjs\";\nimport { genericComponent } from \"../../util/index.mjs\"; // Types\nexport const VSlideGroupItem = genericComponent()({\n name: 'VSlideGroupItem',\n props: makeGroupItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const slideGroupItem = useGroupItem(props, VSlideGroupSymbol);\n return () => slots.default?.({\n isSelected: slideGroupItem.isSelected.value,\n select: slideGroupItem.select,\n toggle: slideGroupItem.toggle,\n selectedClass: slideGroupItem.selectedClass.value\n });\n }\n});\n//# sourceMappingURL=VSlideGroupItem.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSnackbar.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\";\nimport { VProgressLinear } from \"../VProgressLinear/index.mjs\"; // Composables\nimport { useLayout } from \"../../composables/index.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { VuetifyLayoutKey } from \"../../composables/layout.mjs\";\nimport { makeLocationProps } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Utilities\nimport { computed, inject, mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { genericComponent, omit, propsFactory, refElement, useRender } from \"../../util/index.mjs\"; // Types\nfunction useCountdown(milliseconds) {\n const time = shallowRef(milliseconds());\n let timer = -1;\n function clear() {\n clearInterval(timer);\n }\n function reset() {\n clear();\n nextTick(() => time.value = milliseconds());\n }\n function start(el) {\n const style = el ? getComputedStyle(el) : {\n transitionDuration: 0.2\n };\n const interval = parseFloat(style.transitionDuration) * 1000 || 200;\n clear();\n if (time.value <= 0) return;\n const startTime = performance.now();\n timer = window.setInterval(() => {\n const elapsed = performance.now() - startTime + interval;\n time.value = Math.max(milliseconds() - elapsed, 0);\n if (time.value <= 0) clear();\n }, interval);\n }\n onScopeDispose(clear);\n return {\n clear,\n time,\n start,\n reset\n };\n}\nexport const makeVSnackbarProps = propsFactory({\n multiLine: Boolean,\n text: String,\n timer: [Boolean, String],\n timeout: {\n type: [Number, String],\n default: 5000\n },\n vertical: Boolean,\n ...makeLocationProps({\n location: 'bottom'\n }),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition'\n }), ['persistent', 'noClickAnimation', 'scrim', 'scrollStrategy'])\n}, 'VSnackbar');\nexport const VSnackbar = genericComponent()({\n name: 'VSnackbar',\n props: makeVSnackbarProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n positionClasses\n } = usePosition(props);\n const {\n scopeId\n } = useScopeId();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n roundedClasses\n } = useRounded(props);\n const countdown = useCountdown(() => Number(props.timeout));\n const overlay = ref();\n const timerRef = ref();\n const isHovering = shallowRef(false);\n const startY = shallowRef(0);\n const mainStyles = ref();\n const hasLayout = inject(VuetifyLayoutKey, undefined);\n useToggleScope(() => !!hasLayout, () => {\n const layout = useLayout();\n watchEffect(() => {\n mainStyles.value = layout.mainStyles.value;\n });\n });\n watch(isActive, startTimeout);\n watch(() => props.timeout, startTimeout);\n onMounted(() => {\n if (isActive.value) startTimeout();\n });\n let activeTimeout = -1;\n function startTimeout() {\n countdown.reset();\n window.clearTimeout(activeTimeout);\n const timeout = Number(props.timeout);\n if (!isActive.value || timeout === -1) return;\n const element = refElement(timerRef.value);\n countdown.start(element);\n activeTimeout = window.setTimeout(() => {\n isActive.value = false;\n }, timeout);\n }\n function clearTimeout() {\n countdown.reset();\n window.clearTimeout(activeTimeout);\n }\n function onPointerenter() {\n isHovering.value = true;\n clearTimeout();\n }\n function onPointerleave() {\n isHovering.value = false;\n startTimeout();\n }\n function onTouchstart(event) {\n startY.value = event.touches[0].clientY;\n }\n function onTouchend(event) {\n if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {\n isActive.value = false;\n }\n }\n function onAfterLeave() {\n if (isHovering.value) onPointerleave();\n }\n const locationClasses = computed(() => {\n return props.location.split(' ').reduce((acc, loc) => {\n acc[`v-snackbar--${loc}`] = true;\n return acc;\n }, {});\n });\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n const hasContent = !!(slots.default || slots.text || props.text);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-snackbar', {\n 'v-snackbar--active': isActive.value,\n 'v-snackbar--multi-line': props.multiLine && !props.vertical,\n 'v-snackbar--timer': !!props.timer,\n 'v-snackbar--vertical': props.vertical\n }, locationClasses.value, positionClasses.value, props.class],\n \"style\": [mainStyles.value, props.style]\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"contentProps\": mergeProps({\n class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],\n style: [colorStyles.value],\n onPointerenter,\n onPointerleave\n }, overlayProps.contentProps),\n \"persistent\": true,\n \"noClickAnimation\": true,\n \"scrim\": false,\n \"scrollStrategy\": \"none\",\n \"_disableGlobalStack\": true,\n \"onTouchstartPassive\": onTouchstart,\n \"onTouchend\": onTouchend,\n \"onAfterLeave\": onAfterLeave\n }, scopeId), {\n default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && _createVNode(\"div\", {\n \"key\": \"timer\",\n \"class\": \"v-snackbar__timer\"\n }, [_createVNode(VProgressLinear, {\n \"ref\": timerRef,\n \"color\": typeof props.timer === 'string' ? props.timer : 'info',\n \"max\": props.timeout,\n \"model-value\": countdown.time.value\n }, null)]), hasContent && _createVNode(\"div\", {\n \"key\": \"content\",\n \"class\": \"v-snackbar__content\",\n \"role\": \"status\",\n \"aria-live\": \"polite\"\n }, [slots.text?.() ?? props.text, slots.default?.()]), slots.actions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n variant: 'text',\n ripple: false,\n slim: true\n }\n }\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-snackbar__actions\"\n }, [slots.actions({\n isActive\n })])]\n })],\n activator: slots.activator\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VSnackbar.mjs.map","// Utilities\nimport { propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeLineProps = propsFactory({\n autoDraw: Boolean,\n autoDrawDuration: [Number, String],\n autoDrawEasing: {\n type: String,\n default: 'ease'\n },\n color: String,\n gradient: {\n type: Array,\n default: () => []\n },\n gradientDirection: {\n type: String,\n validator: val => ['top', 'bottom', 'left', 'right'].includes(val),\n default: 'top'\n },\n height: {\n type: [String, Number],\n default: 75\n },\n labels: {\n type: Array,\n default: () => []\n },\n labelSize: {\n type: [Number, String],\n default: 7\n },\n lineWidth: {\n type: [String, Number],\n default: 4\n },\n id: String,\n itemValue: {\n type: String,\n default: 'value'\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n min: [String, Number],\n max: [String, Number],\n padding: {\n type: [String, Number],\n default: 8\n },\n showLabels: Boolean,\n smooth: Boolean,\n width: {\n type: [Number, String],\n default: 300\n }\n}, 'Line');\n//# sourceMappingURL=line.mjs.map","import { Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Utilities\nimport { computed } from 'vue';\nimport { makeLineProps } from \"./util/line.mjs\";\nimport { genericComponent, getPropertyFromItem, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBarlineProps = propsFactory({\n autoLineWidth: Boolean,\n ...makeLineProps()\n}, 'VBarline');\nexport const VBarline = genericComponent()({\n name: 'VBarline',\n props: makeVBarlineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const uid = getUid();\n const id = computed(() => props.id || `barline-${uid}`);\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || 500);\n const hasLabels = computed(() => {\n return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);\n });\n const lineWidth = computed(() => parseFloat(props.lineWidth) || 4);\n const totalWidth = computed(() => Math.max(props.modelValue.length * lineWidth.value, Number(props.width)));\n const boundary = computed(() => {\n return {\n minX: 0,\n maxX: totalWidth.value,\n minY: 0,\n maxY: parseInt(props.height, 10)\n };\n });\n const items = computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)));\n function genBars(values, boundary) {\n const {\n minX,\n maxX,\n minY,\n maxY\n } = boundary;\n const totalValues = values.length;\n let maxValue = props.max != null ? Number(props.max) : Math.max(...values);\n let minValue = props.min != null ? Number(props.min) : Math.min(...values);\n if (minValue > 0 && props.min == null) minValue = 0;\n if (maxValue < 0 && props.max == null) maxValue = 0;\n const gridX = maxX / totalValues;\n const gridY = (maxY - minY) / (maxValue - minValue || 1);\n const horizonY = maxY - Math.abs(minValue * gridY);\n return values.map((value, index) => {\n const height = Math.abs(gridY * value);\n return {\n x: minX + index * gridX,\n y: horizonY - height + +(value < 0) * height,\n height,\n value\n };\n });\n }\n const parsedLabels = computed(() => {\n const labels = [];\n const points = genBars(items.value, boundary.value);\n const len = points.length;\n for (let i = 0; labels.length < len; i++) {\n const item = points[i];\n let value = props.labels[i];\n if (!value) {\n value = typeof item === 'object' ? item.value : item;\n }\n labels.push({\n x: item.x,\n value: String(value)\n });\n }\n return labels;\n });\n const bars = computed(() => genBars(items.value, boundary.value));\n const offsetX = computed(() => (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2);\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();\n return _createVNode(\"svg\", {\n \"display\": \"block\"\n }, [_createVNode(\"defs\", null, [_createVNode(\"linearGradient\", {\n \"id\": id.value,\n \"gradientUnits\": \"userSpaceOnUse\",\n \"x1\": props.gradientDirection === 'left' ? '100%' : '0',\n \"y1\": props.gradientDirection === 'top' ? '100%' : '0',\n \"x2\": props.gradientDirection === 'right' ? '100%' : '0',\n \"y2\": props.gradientDirection === 'bottom' ? '100%' : '0'\n }, [gradientData.map((color, index) => _createVNode(\"stop\", {\n \"offset\": index / Math.max(gradientData.length - 1, 1),\n \"stop-color\": color || 'currentColor'\n }, null))])]), _createVNode(\"clipPath\", {\n \"id\": `${id.value}-clip`\n }, [bars.value.map(item => _createVNode(\"rect\", {\n \"x\": item.x + offsetX.value,\n \"y\": item.y,\n \"width\": lineWidth.value,\n \"height\": item.height,\n \"rx\": typeof props.smooth === 'number' ? props.smooth : props.smooth ? 2 : 0,\n \"ry\": typeof props.smooth === 'number' ? props.smooth : props.smooth ? 2 : 0\n }, [props.autoDraw && _createVNode(_Fragment, null, [_createVNode(\"animate\", {\n \"attributeName\": \"y\",\n \"from\": item.y + item.height,\n \"to\": item.y,\n \"dur\": `${autoDrawDuration.value}ms`,\n \"fill\": \"freeze\"\n }, null), _createVNode(\"animate\", {\n \"attributeName\": \"height\",\n \"from\": \"0\",\n \"to\": item.height,\n \"dur\": `${autoDrawDuration.value}ms`,\n \"fill\": \"freeze\"\n }, null)])]))]), hasLabels.value && _createVNode(\"g\", {\n \"key\": \"labels\",\n \"style\": {\n textAnchor: 'middle',\n dominantBaseline: 'mathematical',\n fill: 'currentColor'\n }\n }, [parsedLabels.value.map((item, i) => _createVNode(\"text\", {\n \"x\": item.x + offsetX.value + lineWidth.value / 2,\n \"y\": parseInt(props.height, 10) - 2 + (parseInt(props.labelSize, 10) || 7 * 0.75),\n \"font-size\": Number(props.labelSize) || 7\n }, [slots.label?.({\n index: i,\n value: item.value\n }) ?? item.value]))]), _createVNode(\"g\", {\n \"clip-path\": `url(#${id.value}-clip)`,\n \"fill\": `url(#${id.value})`\n }, [_createVNode(\"rect\", {\n \"x\": 0,\n \"y\": 0,\n \"width\": Math.max(props.modelValue.length * lineWidth.value, Number(props.width)),\n \"height\": props.height\n }, null)])]);\n });\n }\n});\n//# sourceMappingURL=VBarline.mjs.map","// @ts-nocheck\n/* eslint-disable */\n\n// import { checkCollinear, getDistance, moveTo } from './math'\n\n/**\n * From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18\n */\nexport function genPath(points, radius) {\n let fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n let height = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 75;\n if (points.length === 0) return '';\n const start = points.shift();\n const end = points[points.length - 1];\n return (fill ? `M${start.x} ${height - start.x + 2} L${start.x} ${start.y}` : `M${start.x} ${start.y}`) + points.map((point, index) => {\n const next = points[index + 1];\n const prev = points[index - 1] || start;\n const isCollinear = next && checkCollinear(next, point, prev);\n if (!next || isCollinear) {\n return `L${point.x} ${point.y}`;\n }\n const threshold = Math.min(getDistance(prev, point), getDistance(next, point));\n const isTooCloseForRadius = threshold / 2 < radius;\n const radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius;\n const before = moveTo(prev, point, radiusForPoint);\n const after = moveTo(next, point, radiusForPoint);\n return `L${before.x} ${before.y}S${point.x} ${point.y} ${after.x} ${after.y}`;\n }).join('') + (fill ? `L${end.x} ${height - start.x + 2} Z` : '');\n}\nfunction int(value) {\n return parseInt(value, 10);\n}\n\n/**\n * https://en.wikipedia.org/wiki/Collinearity\n * x=(x1+x2)/2\n * y=(y1+y2)/2\n */\nexport function checkCollinear(p0, p1, p2) {\n return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y);\n}\nexport function getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\nexport function moveTo(to, from, radius) {\n const vector = {\n x: to.x - from.x,\n y: to.y - from.y\n };\n const length = Math.sqrt(vector.x * vector.x + vector.y * vector.y);\n const unitVector = {\n x: vector.x / length,\n y: vector.y / length\n };\n return {\n x: from.x + unitVector.x * radius,\n y: from.y + unitVector.y * radius\n };\n}\n//# sourceMappingURL=path.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { makeLineProps } from \"./util/line.mjs\";\nimport { genPath as _genPath } from \"./util/path.mjs\";\nimport { genericComponent, getPropertyFromItem, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTrendlineProps = propsFactory({\n fill: Boolean,\n ...makeLineProps()\n}, 'VTrendline');\nexport const VTrendline = genericComponent()({\n name: 'VTrendline',\n props: makeVTrendlineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const uid = getUid();\n const id = computed(() => props.id || `trendline-${uid}`);\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || (props.fill ? 500 : 2000));\n const lastLength = ref(0);\n const path = ref(null);\n function genPoints(values, boundary) {\n const {\n minX,\n maxX,\n minY,\n maxY\n } = boundary;\n const totalValues = values.length;\n const maxValue = props.max != null ? Number(props.max) : Math.max(...values);\n const minValue = props.min != null ? Number(props.min) : Math.min(...values);\n const gridX = (maxX - minX) / (totalValues - 1);\n const gridY = (maxY - minY) / (maxValue - minValue || 1);\n return values.map((value, index) => {\n return {\n x: minX + index * gridX,\n y: maxY - (value - minValue) * gridY,\n value\n };\n });\n }\n const hasLabels = computed(() => {\n return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);\n });\n const lineWidth = computed(() => {\n return parseFloat(props.lineWidth) || 4;\n });\n const totalWidth = computed(() => Number(props.width));\n const boundary = computed(() => {\n const padding = Number(props.padding);\n return {\n minX: padding,\n maxX: totalWidth.value - padding,\n minY: padding,\n maxY: parseInt(props.height, 10) - padding\n };\n });\n const items = computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)));\n const parsedLabels = computed(() => {\n const labels = [];\n const points = genPoints(items.value, boundary.value);\n const len = points.length;\n for (let i = 0; labels.length < len; i++) {\n const item = points[i];\n let value = props.labels[i];\n if (!value) {\n value = typeof item === 'object' ? item.value : item;\n }\n labels.push({\n x: item.x,\n value: String(value)\n });\n }\n return labels;\n });\n watch(() => props.modelValue, async () => {\n await nextTick();\n if (!props.autoDraw || !path.value) return;\n const pathRef = path.value;\n const length = pathRef.getTotalLength();\n if (!props.fill) {\n // Initial setup to \"hide\" the line by using the stroke dash array\n pathRef.style.strokeDasharray = `${length}`;\n pathRef.style.strokeDashoffset = `${length}`;\n\n // Force reflow to ensure the transition starts from this state\n pathRef.getBoundingClientRect();\n\n // Animate the stroke dash offset to \"draw\" the line\n pathRef.style.transition = `stroke-dashoffset ${autoDrawDuration.value}ms ${props.autoDrawEasing}`;\n pathRef.style.strokeDashoffset = '0';\n } else {\n // Your existing logic for filled paths remains the same\n pathRef.style.transformOrigin = 'bottom center';\n pathRef.style.transition = 'none';\n pathRef.style.transform = `scaleY(0)`;\n pathRef.getBoundingClientRect();\n pathRef.style.transition = `transform ${autoDrawDuration.value}ms ${props.autoDrawEasing}`;\n pathRef.style.transform = `scaleY(1)`;\n }\n lastLength.value = length;\n }, {\n immediate: true\n });\n function genPath(fill) {\n return _genPath(genPoints(items.value, boundary.value), props.smooth ? 8 : Number(props.smooth), fill, parseInt(props.height, 10));\n }\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();\n return _createVNode(\"svg\", {\n \"display\": \"block\",\n \"stroke-width\": parseFloat(props.lineWidth) ?? 4\n }, [_createVNode(\"defs\", null, [_createVNode(\"linearGradient\", {\n \"id\": id.value,\n \"gradientUnits\": \"userSpaceOnUse\",\n \"x1\": props.gradientDirection === 'left' ? '100%' : '0',\n \"y1\": props.gradientDirection === 'top' ? '100%' : '0',\n \"x2\": props.gradientDirection === 'right' ? '100%' : '0',\n \"y2\": props.gradientDirection === 'bottom' ? '100%' : '0'\n }, [gradientData.map((color, index) => _createVNode(\"stop\", {\n \"offset\": index / Math.max(gradientData.length - 1, 1),\n \"stop-color\": color || 'currentColor'\n }, null))])]), hasLabels.value && _createVNode(\"g\", {\n \"key\": \"labels\",\n \"style\": {\n textAnchor: 'middle',\n dominantBaseline: 'mathematical',\n fill: 'currentColor'\n }\n }, [parsedLabels.value.map((item, i) => _createVNode(\"text\", {\n \"x\": item.x + lineWidth.value / 2 + lineWidth.value / 2,\n \"y\": parseInt(props.height, 10) - 4 + (parseInt(props.labelSize, 10) || 7 * 0.75),\n \"font-size\": Number(props.labelSize) || 7\n }, [slots.label?.({\n index: i,\n value: item.value\n }) ?? item.value]))]), _createVNode(\"path\", {\n \"ref\": path,\n \"d\": genPath(props.fill),\n \"fill\": props.fill ? `url(#${id.value})` : 'none',\n \"stroke\": props.fill ? 'none' : `url(#${id.value})`\n }, null), props.fill && _createVNode(\"path\", {\n \"d\": genPath(false),\n \"fill\": \"none\",\n \"stroke\": props.color ?? props.gradient?.[0]\n }, null)]);\n });\n }\n});\n//# sourceMappingURL=VTrendline.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVBarlineProps, VBarline } from \"./VBarline.mjs\";\nimport { makeVTrendlineProps, VTrendline } from \"./VTrendline.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\n\nexport const makeVSparklineProps = propsFactory({\n type: {\n type: String,\n default: 'trend'\n },\n ...makeVBarlineProps(),\n ...makeVTrendlineProps()\n}, 'VSparkline');\nexport const VSparkline = genericComponent()({\n name: 'VSparkline',\n props: makeVSparklineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'color'));\n const hasLabels = computed(() => {\n return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);\n });\n const totalHeight = computed(() => {\n let height = parseInt(props.height, 10);\n if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5;\n return height;\n });\n useRender(() => {\n const Tag = props.type === 'trend' ? VTrendline : VBarline;\n const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props);\n return _createVNode(Tag, _mergeProps({\n \"key\": props.type,\n \"class\": textColorClasses.value,\n \"style\": textColorStyles.value,\n \"viewBox\": `0 0 ${props.width} ${parseInt(totalHeight.value, 10)}`\n }, lineProps), slots);\n });\n }\n});\n//# sourceMappingURL=VSparkline.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSpeedDial.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { makeVMenuProps, VMenu } from \"../VMenu/VMenu.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSpeedDialProps = propsFactory({\n ...makeComponentProps(),\n ...makeVMenuProps({\n offset: 8,\n minWidth: 0,\n openDelay: 0,\n closeDelay: 100,\n location: 'top center',\n transition: 'scale-transition'\n })\n}, 'VSpeedDial');\nexport const VSpeedDial = genericComponent()({\n name: 'VSpeedDial',\n props: makeVSpeedDialProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const menuRef = ref();\n const location = computed(() => {\n const [y, x = 'center'] = props.location?.split(' ') ?? [];\n return `${y} ${x}`;\n });\n const locationClasses = computed(() => ({\n [`v-speed-dial__content--${location.value.replace(' ', '-')}`]: true\n }));\n useRender(() => {\n const menuProps = VMenu.filterProps(props);\n return _createVNode(VMenu, _mergeProps(menuProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": props.class,\n \"style\": props.style,\n \"contentClass\": ['v-speed-dial__content', locationClasses.value, props.contentClass],\n \"location\": location.value,\n \"ref\": menuRef,\n \"transition\": \"fade-transition\"\n }), {\n ...slots,\n default: slotProps => _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n size: 'small'\n }\n }\n }, {\n default: () => [_createVNode(MaybeTransition, {\n \"appear\": true,\n \"group\": true,\n \"transition\": props.transition\n }, {\n default: () => [slots.default?.(slotProps)]\n })]\n })\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VSpeedDial.mjs.map","// Types\n\nexport const VStepperSymbol = Symbol.for('vuetify:v-stepper');\n//# sourceMappingURL=shared.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VBtn } from \"../VBtn/VBtn.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.mjs\"; // Composables\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVStepperActionsProps = propsFactory({\n color: String,\n disabled: {\n type: [Boolean, String],\n default: false\n },\n prevText: {\n type: String,\n default: '$vuetify.stepper.prev'\n },\n nextText: {\n type: String,\n default: '$vuetify.stepper.next'\n }\n}, 'VStepperActions');\nexport const VStepperActions = genericComponent()({\n name: 'VStepperActions',\n props: makeVStepperActionsProps(),\n emits: {\n 'click:prev': () => true,\n 'click:next': () => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n function onClickPrev() {\n emit('click:prev');\n }\n function onClickNext() {\n emit('click:next');\n }\n useRender(() => {\n const prevSlotProps = {\n onClick: onClickPrev\n };\n const nextSlotProps = {\n onClick: onClickNext\n };\n return _createVNode(\"div\", {\n \"class\": \"v-stepper-actions\"\n }, [_createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n disabled: ['prev', true].includes(props.disabled),\n text: t(props.prevText),\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.prev?.({\n props: prevSlotProps\n }) ?? _createVNode(VBtn, prevSlotProps, null)]\n }), _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n color: props.color,\n disabled: ['next', true].includes(props.disabled),\n text: t(props.nextText),\n variant: 'tonal'\n }\n }\n }, {\n default: () => [slots.next?.({\n props: nextSlotProps\n }) ?? _createVNode(VBtn, nextSlotProps, null)]\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperActions.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VStepperHeader = createSimpleFunctional('v-stepper-header');\n//# sourceMappingURL=VStepperHeader.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VStepperItem.css\";\n\n// Components\nimport { VAvatar } from \"../VAvatar/VAvatar.mjs\";\nimport { VIcon } from \"../VIcon/VIcon.mjs\"; // Composables\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { genOverlays } from \"../../composables/variant.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { VStepperSymbol } from \"./shared.mjs\";\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeStepperItemProps = propsFactory({\n color: String,\n title: String,\n subtitle: String,\n complete: Boolean,\n completeIcon: {\n type: String,\n default: '$complete'\n },\n editable: Boolean,\n editIcon: {\n type: String,\n default: '$edit'\n },\n error: Boolean,\n errorIcon: {\n type: String,\n default: '$error'\n },\n icon: String,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n rules: {\n type: Array,\n default: () => []\n }\n}, 'StepperItem');\nexport const makeVStepperItemProps = propsFactory({\n ...makeStepperItemProps(),\n ...makeGroupItemProps()\n}, 'VStepperItem');\nexport const VStepperItem = genericComponent()({\n name: 'VStepperItem',\n directives: {\n Ripple\n },\n props: makeVStepperItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const group = useGroupItem(props, VStepperSymbol, true);\n const step = computed(() => group?.value.value ?? props.value);\n const isValid = computed(() => props.rules.every(handler => handler() === true));\n const isClickable = computed(() => !props.disabled && props.editable);\n const canEdit = computed(() => !props.disabled && props.editable);\n const hasError = computed(() => props.error || !isValid.value);\n const hasCompleted = computed(() => props.complete || props.rules.length > 0 && isValid.value);\n const icon = computed(() => {\n if (hasError.value) return props.errorIcon;\n if (hasCompleted.value) return props.completeIcon;\n if (group.isSelected.value && props.editable) return props.editIcon;\n return props.icon;\n });\n const slotProps = computed(() => ({\n canEdit: canEdit.value,\n hasError: hasError.value,\n hasCompleted: hasCompleted.value,\n title: props.title,\n subtitle: props.subtitle,\n step: step.value,\n value: props.value\n }));\n useRender(() => {\n const hasColor = (!group || group.isSelected.value || hasCompleted.value || canEdit.value) && !hasError.value && !props.disabled;\n const hasTitle = !!(props.title != null || slots.title);\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle);\n function onClick() {\n group?.toggle();\n }\n return _withDirectives(_createVNode(\"button\", {\n \"class\": ['v-stepper-item', {\n 'v-stepper-item--complete': hasCompleted.value,\n 'v-stepper-item--disabled': props.disabled,\n 'v-stepper-item--error': hasError.value\n }, group?.selectedClass.value],\n \"disabled\": !props.editable,\n \"onClick\": onClick\n }, [isClickable.value && genOverlays(true, 'v-stepper-item'), _createVNode(VAvatar, {\n \"key\": \"stepper-avatar\",\n \"class\": \"v-stepper-item__avatar\",\n \"color\": hasColor ? props.color : undefined,\n \"size\": 24\n }, {\n default: () => [slots.icon?.(slotProps.value) ?? (icon.value ? _createVNode(VIcon, {\n \"icon\": icon.value\n }, null) : step.value)]\n }), _createVNode(\"div\", {\n \"class\": \"v-stepper-item__content\"\n }, [hasTitle && _createVNode(\"div\", {\n \"key\": \"title\",\n \"class\": \"v-stepper-item__title\"\n }, [slots.title?.(slotProps.value) ?? props.title]), hasSubtitle && _createVNode(\"div\", {\n \"key\": \"subtitle\",\n \"class\": \"v-stepper-item__subtitle\"\n }, [slots.subtitle?.(slotProps.value) ?? props.subtitle]), slots.default?.(slotProps.value)])]), [[_resolveDirective(\"ripple\"), props.ripple && props.editable, null]]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperItem.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { VStepperSymbol } from \"./shared.mjs\";\nimport { makeVWindowProps, VWindow } from \"../VWindow/VWindow.mjs\"; // Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVStepperWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory'])\n}, 'VStepperWindow');\nexport const VStepperWindow = genericComponent()({\n name: 'VStepperWindow',\n props: makeVStepperWindowProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const group = inject(VStepperSymbol, null);\n const _model = useProxiedModel(props, 'modelValue');\n const model = computed({\n get() {\n // Always return modelValue if defined\n // or if not within a VStepper group\n if (_model.value != null || !group) return _model.value;\n\n // If inside of a VStepper, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value;\n },\n set(val) {\n _model.value = val;\n }\n });\n useRender(() => {\n const windowProps = VWindow.filterProps(props);\n return _createVNode(VWindow, _mergeProps({\n \"_as\": \"VStepperWindow\"\n }, windowProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-stepper-window', props.class],\n \"style\": props.style,\n \"mandatory\": false,\n \"touch\": false\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperWindow.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVWindowItemProps, VWindowItem } from \"../VWindow/VWindowItem.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVStepperWindowItemProps = propsFactory({\n ...makeVWindowItemProps()\n}, 'VStepperWindowItem');\nexport const VStepperWindowItem = genericComponent()({\n name: 'VStepperWindowItem',\n props: makeVStepperWindowItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props);\n return _createVNode(VWindowItem, _mergeProps({\n \"_as\": \"VStepperWindowItem\"\n }, windowItemProps, {\n \"class\": ['v-stepper-window-item', props.class],\n \"style\": props.style\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperWindowItem.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VStepper.css\";\n\n// Components\nimport { VStepperSymbol } from \"./shared.mjs\";\nimport { makeVStepperActionsProps, VStepperActions } from \"./VStepperActions.mjs\";\nimport { VStepperHeader } from \"./VStepperHeader.mjs\";\nimport { VStepperItem } from \"./VStepperItem.mjs\";\nimport { VStepperWindow } from \"./VStepperWindow.mjs\";\nimport { VStepperWindowItem } from \"./VStepperWindowItem.mjs\";\nimport { VDivider } from \"../VDivider/index.mjs\";\nimport { makeVSheetProps, VSheet } from \"../VSheet/VSheet.mjs\"; // Composables\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\"; // Utilities\nimport { computed, toRefs } from 'vue';\nimport { genericComponent, getPropertyFromItem, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeStepperProps = propsFactory({\n altLabels: Boolean,\n bgColor: String,\n completeIcon: String,\n editIcon: String,\n editable: Boolean,\n errorIcon: String,\n hideActions: Boolean,\n items: {\n type: Array,\n default: () => []\n },\n itemTitle: {\n type: String,\n default: 'title'\n },\n itemValue: {\n type: String,\n default: 'value'\n },\n nonLinear: Boolean,\n flat: Boolean,\n ...makeDisplayProps()\n}, 'Stepper');\nexport const makeVStepperProps = propsFactory({\n ...makeStepperProps(),\n ...makeGroupProps({\n mandatory: 'force',\n selectedClass: 'v-stepper-item--selected'\n }),\n ...makeVSheetProps(),\n ...only(makeVStepperActionsProps(), ['prevText', 'nextText'])\n}, 'VStepper');\nexport const VStepper = genericComponent()({\n name: 'VStepper',\n props: makeVStepperProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n items: _items,\n next,\n prev,\n selected\n } = useGroup(props, VStepperSymbol);\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const {\n completeIcon,\n editIcon,\n errorIcon,\n color,\n editable,\n prevText,\n nextText\n } = toRefs(props);\n const items = computed(() => props.items.map((item, index) => {\n const title = getPropertyFromItem(item, props.itemTitle, item);\n const value = getPropertyFromItem(item, props.itemValue, index + 1);\n return {\n title,\n value,\n raw: item\n };\n }));\n const activeIndex = computed(() => {\n return _items.value.findIndex(item => selected.value.includes(item.id));\n });\n const disabled = computed(() => {\n if (props.disabled) return props.disabled;\n if (activeIndex.value === 0) return 'prev';\n if (activeIndex.value === _items.value.length - 1) return 'next';\n return false;\n });\n provideDefaults({\n VStepperItem: {\n editable,\n errorIcon,\n completeIcon,\n editIcon,\n prevText,\n nextText\n },\n VStepperActions: {\n color,\n disabled,\n prevText,\n nextText\n }\n });\n useRender(() => {\n const sheetProps = VSheet.filterProps(props);\n const hasHeader = !!(slots.header || props.items.length);\n const hasWindow = props.items.length > 0;\n const hasActions = !props.hideActions && !!(hasWindow || slots.actions);\n return _createVNode(VSheet, _mergeProps(sheetProps, {\n \"color\": props.bgColor,\n \"class\": ['v-stepper', {\n 'v-stepper--alt-labels': props.altLabels,\n 'v-stepper--flat': props.flat,\n 'v-stepper--non-linear': props.nonLinear,\n 'v-stepper--mobile': mobile.value\n }, displayClasses.value, props.class],\n \"style\": props.style\n }), {\n default: () => [hasHeader && _createVNode(VStepperHeader, {\n \"key\": \"stepper-header\"\n }, {\n default: () => [items.value.map((_ref2, index) => {\n let {\n raw,\n ...item\n } = _ref2;\n return _createVNode(_Fragment, null, [!!index && _createVNode(VDivider, null, null), _createVNode(VStepperItem, item, {\n default: slots[`header-item.${item.value}`] ?? slots.header,\n icon: slots.icon,\n title: slots.title,\n subtitle: slots.subtitle\n })]);\n })]\n }), hasWindow && _createVNode(VStepperWindow, {\n \"key\": \"stepper-window\"\n }, {\n default: () => [items.value.map(item => _createVNode(VStepperWindowItem, {\n \"value\": item.value\n }, {\n default: () => slots[`item.${item.value}`]?.(item) ?? slots.item?.(item)\n }))]\n }), slots.default?.({\n prev,\n next\n }), hasActions && (slots.actions?.({\n next,\n prev\n }) ?? _createVNode(VStepperActions, {\n \"key\": \"stepper-actions\",\n \"onClick:prev\": prev,\n \"onClick:next\": next\n }, slots))]\n });\n });\n return {\n prev,\n next\n };\n }\n});\n//# sourceMappingURL=VStepper.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSwitch.css\";\n\n// Components\nimport { VScaleTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VProgressCircular } from \"../VProgressCircular/index.mjs\";\nimport { makeVSelectionControlProps, VSelectionControl } from \"../VSelectionControl/VSelectionControl.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { LoaderSlot, useLoader } from \"../../composables/loader.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, IN_BROWSER, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSwitchProps = propsFactory({\n indeterminate: Boolean,\n inset: Boolean,\n flat: Boolean,\n loading: {\n type: [Boolean, String],\n default: false\n },\n ...makeVInputProps(),\n ...makeVSelectionControlProps()\n}, 'VSwitch');\nexport const VSwitch = genericComponent()({\n name: 'VSwitch',\n inheritAttrs: false,\n props: makeVSwitchProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:indeterminate': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const indeterminate = useProxiedModel(props, 'indeterminate');\n const model = useProxiedModel(props, 'modelValue');\n const {\n loaderClasses\n } = useLoader(props);\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const control = ref();\n const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;\n const loaderColor = computed(() => {\n return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;\n });\n const uid = getUid();\n const id = computed(() => props.id || `switch-${uid}`);\n function onChange() {\n if (indeterminate.value) {\n indeterminate.value = false;\n }\n }\n function onTrackClick(e) {\n e.stopPropagation();\n e.preventDefault();\n control.value?.input?.click();\n }\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const controlProps = VSelectionControl.filterProps(props);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-switch', {\n 'v-switch--flat': props.flat\n }, {\n 'v-switch--inset': props.inset\n }, {\n 'v-switch--indeterminate': indeterminate.value\n }, loaderClasses.value, props.class]\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": id.value,\n \"focused\": isFocused.value,\n \"style\": props.style\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid\n } = _ref2;\n const slotProps = {\n model,\n isValid\n };\n return _createVNode(VSelectionControl, _mergeProps({\n \"ref\": control\n }, controlProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": [$event => model.value = $event, onChange],\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"type\": \"checkbox\",\n \"aria-checked\": indeterminate.value ? 'mixed' : undefined,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value,\n \"onFocus\": focus,\n \"onBlur\": blur\n }, controlAttrs), {\n ...slots,\n default: _ref3 => {\n let {\n backgroundColorClasses,\n backgroundColorStyles\n } = _ref3;\n return _createVNode(\"div\", {\n \"class\": ['v-switch__track', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined],\n \"style\": backgroundColorStyles.value,\n \"onClick\": onTrackClick\n }, [slots['track-true'] && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-switch__track-true\"\n }, [slots['track-true'](slotProps)]), slots['track-false'] && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-switch__track-false\"\n }, [slots['track-false'](slotProps)])]);\n },\n input: _ref4 => {\n let {\n inputNode,\n icon,\n backgroundColorClasses,\n backgroundColorStyles\n } = _ref4;\n return _createVNode(_Fragment, null, [inputNode, _createVNode(\"div\", {\n \"class\": ['v-switch__thumb', {\n 'v-switch__thumb--filled': icon || props.loading\n }, props.inset || isForcedColorsModeActive ? undefined : backgroundColorClasses.value],\n \"style\": props.inset ? undefined : backgroundColorStyles.value\n }, [slots.thumb ? _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VIcon: {\n icon,\n size: 'x-small'\n }\n }\n }, {\n default: () => [slots.thumb({\n ...slotProps,\n icon\n })]\n }) : _createVNode(VScaleTransition, null, {\n default: () => [!props.loading ? icon && _createVNode(VIcon, {\n \"key\": String(icon),\n \"icon\": icon,\n \"size\": \"x-small\"\n }, null) : _createVNode(LoaderSlot, {\n \"name\": \"v-switch\",\n \"active\": true,\n \"color\": isValid.value === false ? undefined : loaderColor.value\n }, {\n default: slotProps => slots.loader ? slots.loader(slotProps) : _createVNode(VProgressCircular, {\n \"active\": slotProps.isActive,\n \"color\": slotProps.color,\n \"indeterminate\": true,\n \"size\": \"16\",\n \"width\": \"2\"\n }, null)\n })]\n })])]);\n }\n });\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VSwitch.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VSystemBar.css\";\n\n// Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, shallowRef, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVSystemBarProps = propsFactory({\n color: String,\n height: [Number, String],\n window: Boolean,\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VSystemBar');\nexport const VSystemBar = genericComponent()({\n name: 'VSystemBar',\n props: makeVSystemBarProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n ssrBootStyles\n } = useSsrBoot();\n const height = computed(() => props.height ?? (props.window ? 32 : 24));\n const {\n layoutItemStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: shallowRef('top'),\n layoutSize: height,\n elementSize: height,\n active: computed(() => true),\n absolute: toRef(props, 'absolute')\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-system-bar', {\n 'v-system-bar--window': props.window\n }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VSystemBar.mjs.map","// Types\n\nexport const VTabsSymbol = Symbol.for('vuetify:v-tabs');\n//# sourceMappingURL=shared.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VTab.css\";\n\n// Components\nimport { makeVBtnProps, VBtn } from \"../VBtn/VBtn.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { VTabsSymbol } from \"./shared.mjs\";\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n sliderColor: String,\n hideSlider: Boolean,\n direction: {\n type: String,\n default: 'horizontal'\n },\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text'\n }), ['active', 'block', 'flat', 'location', 'position', 'symbol'])\n}, 'VTab');\nexport const VTab = genericComponent()({\n name: 'VTab',\n props: makeVTabProps(),\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n const {\n textColorClasses: sliderColorClasses,\n textColorStyles: sliderColorStyles\n } = useTextColor(props, 'sliderColor');\n const rootEl = ref();\n const sliderEl = ref();\n const isHorizontal = computed(() => props.direction === 'horizontal');\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false);\n function updateSlider(_ref2) {\n let {\n value\n } = _ref2;\n if (value) {\n const prevEl = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider');\n const nextEl = sliderEl.value;\n if (!prevEl || !nextEl) return;\n const color = getComputedStyle(prevEl).color;\n const prevBox = prevEl.getBoundingClientRect();\n const nextBox = nextEl.getBoundingClientRect();\n const xy = isHorizontal.value ? 'x' : 'y';\n const XY = isHorizontal.value ? 'X' : 'Y';\n const rightBottom = isHorizontal.value ? 'right' : 'bottom';\n const widthHeight = isHorizontal.value ? 'width' : 'height';\n const prevPos = prevBox[xy];\n const nextPos = nextBox[xy];\n const delta = prevPos > nextPos ? prevBox[rightBottom] - nextBox[rightBottom] : prevBox[xy] - nextBox[xy];\n const origin = Math.sign(delta) > 0 ? isHorizontal.value ? 'right' : 'bottom' : Math.sign(delta) < 0 ? isHorizontal.value ? 'left' : 'top' : 'center';\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight]);\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0;\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0;\n const sigma = 1.5;\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n transform: [`translate${XY}(${delta}px) scale${XY}(${initialScale})`, `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`, 'none'],\n transformOrigin: Array(3).fill(origin)\n }, {\n duration: 225,\n easing: standardEasing\n });\n }\n }\n useRender(() => {\n const btnProps = VBtn.filterProps(props);\n return _createVNode(VBtn, _mergeProps({\n \"symbol\": VTabsSymbol,\n \"ref\": rootEl,\n \"class\": ['v-tab', props.class],\n \"style\": props.style,\n \"tabindex\": isSelected.value ? 0 : -1,\n \"role\": \"tab\",\n \"aria-selected\": String(isSelected.value),\n \"active\": false\n }, btnProps, attrs, {\n \"block\": props.fixed,\n \"maxWidth\": props.fixed ? 300 : undefined,\n \"onGroup:selected\": updateSlider\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [slots.default?.() ?? props.text, !props.hideSlider && _createVNode(\"div\", {\n \"ref\": sliderEl,\n \"class\": ['v-tab__slider', sliderColorClasses.value],\n \"style\": sliderColorStyles.value\n }, null)])\n });\n });\n return forwardRefs({}, rootEl);\n }\n});\n//# sourceMappingURL=VTab.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVWindowProps, VWindow } from \"../VWindow/VWindow.mjs\"; // Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { VTabsSymbol } from \"./shared.mjs\";\nexport const makeVTabsWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory'])\n}, 'VTabsWindow');\nexport const VTabsWindow = genericComponent()({\n name: 'VTabsWindow',\n props: makeVTabsWindowProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const group = inject(VTabsSymbol, null);\n const _model = useProxiedModel(props, 'modelValue');\n const model = computed({\n get() {\n // Always return modelValue if defined\n // or if not within a VTabs group\n if (_model.value != null || !group) return _model.value;\n\n // If inside of a VTabs, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value;\n },\n set(val) {\n _model.value = val;\n }\n });\n useRender(() => {\n const windowProps = VWindow.filterProps(props);\n return _createVNode(VWindow, _mergeProps({\n \"_as\": \"VTabsWindow\"\n }, windowProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-tabs-window', props.class],\n \"style\": props.style,\n \"mandatory\": false,\n \"touch\": false\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabsWindow.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVWindowItemProps, VWindowItem } from \"../VWindow/VWindowItem.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVTabsWindowItemProps = propsFactory({\n ...makeVWindowItemProps()\n}, 'VTabsWindowItem');\nexport const VTabsWindowItem = genericComponent()({\n name: 'VTabsWindowItem',\n props: makeVTabsWindowItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props);\n return _createVNode(VWindowItem, _mergeProps({\n \"_as\": \"VTabsWindowItem\"\n }, windowItemProps, {\n \"class\": ['v-tabs-window-item', props.class],\n \"style\": props.style\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabsWindowItem.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VTabs.css\";\n\n// Components\nimport { VTab } from \"./VTab.mjs\";\nimport { VTabsWindow } from \"./VTabsWindow.mjs\";\nimport { VTabsWindowItem } from \"./VTabsWindowItem.mjs\";\nimport { makeVSlideGroupProps, VSlideGroup } from \"../VSlideGroup/VSlideGroup.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { convertToUnit, genericComponent, isObject, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { VTabsSymbol } from \"./shared.mjs\";\nfunction parseItems(items) {\n if (!items) return [];\n return items.map(item => {\n if (!isObject(item)) return {\n text: item,\n value: item\n };\n return item;\n });\n}\nexport const makeVTabsProps = propsFactory({\n alignTabs: {\n type: String,\n default: 'start'\n },\n color: String,\n fixedTabs: Boolean,\n items: {\n type: Array,\n default: () => []\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined\n },\n hideSlider: Boolean,\n sliderColor: String,\n ...makeVSlideGroupProps({\n mandatory: 'force',\n selectedClass: 'v-tab-item--selected'\n }),\n ...makeDensityProps(),\n ...makeTagProps()\n}, 'VTabs');\nexport const VTabs = genericComponent()({\n name: 'VTabs',\n props: makeVTabsProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const items = computed(() => parseItems(props.items));\n const {\n densityClasses\n } = useDensity(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n scopeId\n } = useScopeId();\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider')\n }\n });\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props);\n const hasWindow = !!(slots.window || props.items.length > 0);\n return _createVNode(_Fragment, null, [_createVNode(VSlideGroup, _mergeProps(slideGroupProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-tabs', `v-tabs--${props.direction}`, `v-tabs--align-tabs-${props.alignTabs}`, {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked\n }, densityClasses.value, backgroundColorClasses.value, props.class],\n \"style\": [{\n '--v-tabs-height': convertToUnit(props.height)\n }, backgroundColorStyles.value, props.style],\n \"role\": \"tablist\",\n \"symbol\": VTabsSymbol\n }, scopeId, attrs), {\n default: () => [slots.default?.() ?? items.value.map(item => slots.tab?.({\n item\n }) ?? _createVNode(VTab, _mergeProps(item, {\n \"key\": item.text,\n \"value\": item.value\n }), {\n default: slots[`tab.${item.value}`] ? () => slots[`tab.${item.value}`]?.({\n item\n }) : undefined\n }))]\n }), hasWindow && _createVNode(VTabsWindow, _mergeProps({\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"key\": \"tabs-window\"\n }, scopeId), {\n default: () => [items.value.map(item => slots.item?.({\n item\n }) ?? _createVNode(VTabsWindowItem, {\n \"value\": item.value\n }, {\n default: () => slots[`item.${item.value}`]?.({\n item\n })\n })), slots.window?.()]\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabs.mjs.map","import { vModelText as _vModelText, withDirectives as _withDirectives, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VTextarea.css\";\nimport \"../VTextField/VTextField.css\";\n\n// Components\nimport { VCounter } from \"../VCounter/VCounter.mjs\";\nimport { VField } from \"../VField/index.mjs\";\nimport { filterFieldProps, makeVFieldProps } from \"../VField/VField.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Directives\nimport Intersect from \"../../directives/intersect/index.mjs\"; // Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTextareaProps = propsFactory({\n autoGrow: Boolean,\n autofocus: Boolean,\n counter: [Boolean, Number, String],\n counterValue: Function,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n noResize: Boolean,\n rows: {\n type: [Number, String],\n default: 5,\n validator: v => !isNaN(parseFloat(v))\n },\n maxRows: {\n type: [Number, String],\n validator: v => !isNaN(parseFloat(v))\n },\n suffix: String,\n modelModifiers: Object,\n ...makeVInputProps(),\n ...makeVFieldProps()\n}, 'VTextarea');\nexport const VTextarea = genericComponent()({\n name: 'VTextarea',\n directives: {\n Intersect\n },\n inheritAttrs: false,\n props: makeVTextareaProps(),\n emits: {\n 'click:control': e => true,\n 'mousedown:control': e => true,\n 'update:focused': focused => true,\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : (model.value || '').toString().length;\n });\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength;\n if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;\n return props.counter;\n });\n function onIntersect(isIntersecting, entries) {\n if (!props.autofocus || !isIntersecting) return;\n entries[0].target?.focus?.();\n }\n const vInputRef = ref();\n const vFieldRef = ref();\n const controlHeight = shallowRef('');\n const textareaRef = ref();\n const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);\n function onFocus() {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus();\n }\n if (!isFocused.value) focus();\n }\n function onControlClick(e) {\n onFocus();\n emit('click:control', e);\n }\n function onControlMousedown(e) {\n emit('mousedown:control', e);\n }\n function onClear(e) {\n e.stopPropagation();\n onFocus();\n nextTick(() => {\n model.value = '';\n callEvent(props['onClick:clear'], e);\n });\n }\n function onInput(e) {\n const el = e.target;\n model.value = el.value;\n if (props.modelModifiers?.trim) {\n const caretPosition = [el.selectionStart, el.selectionEnd];\n nextTick(() => {\n el.selectionStart = caretPosition[0];\n el.selectionEnd = caretPosition[1];\n });\n }\n }\n const sizerRef = ref();\n const rows = ref(+props.rows);\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n watchEffect(() => {\n if (!props.autoGrow) rows.value = +props.rows;\n });\n function calculateInputHeight() {\n if (!props.autoGrow) return;\n nextTick(() => {\n if (!sizerRef.value || !vFieldRef.value) return;\n const style = getComputedStyle(sizerRef.value);\n const fieldStyle = getComputedStyle(vFieldRef.value.$el);\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) + parseFloat(style.getPropertyValue('--v-input-padding-top')) + parseFloat(style.getPropertyValue('--v-field-padding-bottom'));\n const height = sizerRef.value.scrollHeight;\n const lineHeight = parseFloat(style.lineHeight);\n const minHeight = Math.max(parseFloat(props.rows) * lineHeight + padding, parseFloat(fieldStyle.getPropertyValue('--v-input-control-height')));\n const maxHeight = parseFloat(props.maxRows) * lineHeight + padding || Infinity;\n const newHeight = clamp(height ?? 0, minHeight, maxHeight);\n rows.value = Math.floor((newHeight - padding) / lineHeight);\n controlHeight.value = convertToUnit(newHeight);\n });\n }\n onMounted(calculateInputHeight);\n watch(model, calculateInputHeight);\n watch(() => props.rows, calculateInputHeight);\n watch(() => props.maxRows, calculateInputHeight);\n watch(() => props.density, calculateInputHeight);\n let observer;\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight);\n observer.observe(sizerRef.value);\n } else {\n observer?.disconnect();\n }\n });\n onBeforeUnmount(() => {\n observer?.disconnect();\n });\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue);\n const hasDetails = !!(hasCounter || slots.details);\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const {\n modelValue: _,\n ...inputProps\n } = VInput.filterProps(props);\n const fieldProps = filterFieldProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": vInputRef,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-textarea v-text-field', {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n 'v-input--plain-underlined': isPlainOrUnderlined.value\n }, props.class],\n \"style\": props.style\n }, rootAttrs, inputProps, {\n \"centerAffix\": rows.value === 1 && !isPlainOrUnderlined.value,\n \"focused\": isFocused.value\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid\n } = _ref2;\n return _createVNode(VField, _mergeProps({\n \"ref\": vFieldRef,\n \"style\": {\n '--v-textarea-control-height': controlHeight.value\n },\n \"onClick\": onControlClick,\n \"onMousedown\": onControlMousedown,\n \"onClick:clear\": onClear,\n \"onClick:prependInner\": props['onClick:prependInner'],\n \"onClick:appendInner\": props['onClick:appendInner']\n }, fieldProps, {\n \"id\": id.value,\n \"active\": isActive.value || isDirty.value,\n \"centerAffix\": rows.value === 1 && !isPlainOrUnderlined.value,\n \"dirty\": isDirty.value || props.dirty,\n \"disabled\": isDisabled.value,\n \"focused\": isFocused.value,\n \"error\": isValid.value === false\n }), {\n ...slots,\n default: _ref3 => {\n let {\n props: {\n class: fieldClass,\n ...slotProps\n }\n } = _ref3;\n return _createVNode(_Fragment, null, [props.prefix && _createVNode(\"span\", {\n \"class\": \"v-text-field__prefix\"\n }, [props.prefix]), _withDirectives(_createVNode(\"textarea\", _mergeProps({\n \"ref\": textareaRef,\n \"class\": fieldClass,\n \"value\": model.value,\n \"onInput\": onInput,\n \"autofocus\": props.autofocus,\n \"readonly\": isReadonly.value,\n \"disabled\": isDisabled.value,\n \"placeholder\": props.placeholder,\n \"rows\": props.rows,\n \"name\": props.name,\n \"onFocus\": onFocus,\n \"onBlur\": blur\n }, slotProps, inputAttrs), null), [[_resolveDirective(\"intersect\"), {\n handler: onIntersect\n }, null, {\n once: true\n }]]), props.autoGrow && _withDirectives(_createVNode(\"textarea\", {\n \"class\": [fieldClass, 'v-textarea__sizer'],\n \"id\": `${slotProps.id}-sizer`,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"ref\": sizerRef,\n \"readonly\": true,\n \"aria-hidden\": \"true\"\n }, null), [[_vModelText, model.value]]), props.suffix && _createVNode(\"span\", {\n \"class\": \"v-text-field__suffix\"\n }, [props.suffix])]);\n }\n });\n },\n details: hasDetails ? slotProps => _createVNode(_Fragment, null, [slots.details?.(slotProps), hasCounter && _createVNode(_Fragment, null, [_createVNode(\"span\", null, null), _createVNode(VCounter, {\n \"active\": props.persistentCounter || isFocused.value,\n \"value\": counterValue.value,\n \"max\": max.value,\n \"disabled\": props.disabled\n }, slots.counter)])]) : undefined\n });\n });\n return forwardRefs({}, vInputRef, vFieldRef, textareaRef);\n }\n});\n//# sourceMappingURL=VTextarea.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VThemeProvider.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\";\nexport const makeVThemeProviderProps = propsFactory({\n withBackground: Boolean,\n ...makeComponentProps(),\n ...makeThemeProps(),\n ...makeTagProps()\n}, 'VThemeProvider');\nexport const VThemeProvider = genericComponent()({\n name: 'VThemeProvider',\n props: makeVThemeProviderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n return () => {\n if (!props.withBackground) return slots.default?.();\n return _createVNode(props.tag, {\n \"class\": ['v-theme-provider', themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.default?.()]\n });\n };\n }\n});\n//# sourceMappingURL=VThemeProvider.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeSizeProps, useSize } from \"../../composables/size.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVTimelineDividerProps = propsFactory({\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n icon: IconValue,\n iconColor: String,\n lineColor: String,\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeElevationProps()\n}, 'VTimelineDivider');\nexport const VTimelineDivider = genericComponent()({\n name: 'VTimelineDivider',\n props: makeVTimelineDividerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n sizeClasses,\n sizeStyles\n } = useSize(props, 'v-timeline-divider__dot');\n const {\n backgroundColorStyles,\n backgroundColorClasses\n } = useBackgroundColor(toRef(props, 'dotColor'));\n const {\n roundedClasses\n } = useRounded(props, 'v-timeline-divider__dot');\n const {\n elevationClasses\n } = useElevation(props);\n const {\n backgroundColorClasses: lineColorClasses,\n backgroundColorStyles: lineColorStyles\n } = useBackgroundColor(toRef(props, 'lineColor'));\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-timeline-divider', {\n 'v-timeline-divider--fill-dot': props.fillDot\n }, props.class],\n \"style\": props.style\n }, [_createVNode(\"div\", {\n \"class\": ['v-timeline-divider__before', lineColorClasses.value],\n \"style\": lineColorStyles.value\n }, null), !props.hideDot && _createVNode(\"div\", {\n \"key\": \"dot\",\n \"class\": ['v-timeline-divider__dot', elevationClasses.value, roundedClasses.value, sizeClasses.value],\n \"style\": sizeStyles.value\n }, [_createVNode(\"div\", {\n \"class\": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],\n \"style\": backgroundColorStyles.value\n }, [!slots.default ? _createVNode(VIcon, {\n \"key\": \"icon\",\n \"color\": props.iconColor,\n \"icon\": props.icon,\n \"size\": props.size\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"icon-defaults\",\n \"disabled\": !props.icon,\n \"defaults\": {\n VIcon: {\n color: props.iconColor,\n icon: props.icon,\n size: props.size\n }\n }\n }, slots.default)])]), _createVNode(\"div\", {\n \"class\": ['v-timeline-divider__after', lineColorClasses.value],\n \"style\": lineColorStyles.value\n }, null)]));\n return {};\n }\n});\n//# sourceMappingURL=VTimelineDivider.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VTimelineDivider } from \"./VTimelineDivider.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeRoundedProps } from \"../../composables/rounded.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { ref, shallowRef, watch } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVTimelineItemProps = propsFactory({\n density: String,\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n hideOpposite: {\n type: Boolean,\n default: undefined\n },\n icon: IconValue,\n iconColor: String,\n lineInset: [Number, String],\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps()\n}, 'VTimelineItem');\nexport const VTimelineItem = genericComponent()({\n name: 'VTimelineItem',\n props: makeVTimelineItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const dotSize = shallowRef(0);\n const dotRef = ref();\n watch(dotRef, newValue => {\n if (!newValue) return;\n dotSize.value = newValue.$el.querySelector('.v-timeline-divider__dot')?.getBoundingClientRect().width ?? 0;\n }, {\n flush: 'post'\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-timeline-item', {\n 'v-timeline-item--fill-dot': props.fillDot\n }, props.class],\n \"style\": [{\n '--v-timeline-dot-size': convertToUnit(dotSize.value),\n '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)\n }, props.style]\n }, [_createVNode(\"div\", {\n \"class\": \"v-timeline-item__body\",\n \"style\": dimensionStyles.value\n }, [slots.default?.()]), _createVNode(VTimelineDivider, {\n \"ref\": dotRef,\n \"hideDot\": props.hideDot,\n \"icon\": props.icon,\n \"iconColor\": props.iconColor,\n \"size\": props.size,\n \"elevation\": props.elevation,\n \"dotColor\": props.dotColor,\n \"fillDot\": props.fillDot,\n \"rounded\": props.rounded\n }, {\n default: slots.icon\n }), props.density !== 'compact' && _createVNode(\"div\", {\n \"class\": \"v-timeline-item__opposite\"\n }, [!props.hideOpposite && slots.opposite?.()])]));\n return {};\n }\n});\n//# sourceMappingURL=VTimelineItem.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VTimeline.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { convertToUnit, genericComponent, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { makeVTimelineItemProps } from \"./VTimelineItem.mjs\";\nexport const makeVTimelineProps = propsFactory({\n align: {\n type: String,\n default: 'center',\n validator: v => ['center', 'start'].includes(v)\n },\n direction: {\n type: String,\n default: 'vertical',\n validator: v => ['vertical', 'horizontal'].includes(v)\n },\n justify: {\n type: String,\n default: 'auto',\n validator: v => ['auto', 'center'].includes(v)\n },\n side: {\n type: String,\n validator: v => v == null || ['start', 'end'].includes(v)\n },\n lineThickness: {\n type: [String, Number],\n default: 2\n },\n lineColor: String,\n truncateLine: {\n type: String,\n validator: v => ['start', 'end', 'both'].includes(v)\n },\n ...only(makeVTimelineItemProps({\n lineInset: 0\n }), ['dotColor', 'fillDot', 'hideOpposite', 'iconColor', 'lineInset', 'size']),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VTimeline');\nexport const VTimeline = genericComponent()({\n name: 'VTimeline',\n props: makeVTimelineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n rtlClasses\n } = useRtl();\n provideDefaults({\n VTimelineDivider: {\n lineColor: toRef(props, 'lineColor')\n },\n VTimelineItem: {\n density: toRef(props, 'density'),\n dotColor: toRef(props, 'dotColor'),\n fillDot: toRef(props, 'fillDot'),\n hideOpposite: toRef(props, 'hideOpposite'),\n iconColor: toRef(props, 'iconColor'),\n lineColor: toRef(props, 'lineColor'),\n lineInset: toRef(props, 'lineInset'),\n size: toRef(props, 'size')\n }\n });\n const sideClasses = computed(() => {\n const side = props.side ? props.side : props.density !== 'default' ? 'end' : null;\n return side && `v-timeline--side-${side}`;\n });\n const truncateClasses = computed(() => {\n const classes = ['v-timeline--truncate-line-start', 'v-timeline--truncate-line-end'];\n switch (props.truncateLine) {\n case 'both':\n return classes;\n case 'start':\n return classes[0];\n case 'end':\n return classes[1];\n default:\n return null;\n }\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {\n 'v-timeline--inset-line': !!props.lineInset\n }, themeClasses.value, densityClasses.value, sideClasses.value, rtlClasses.value, props.class],\n \"style\": [{\n '--v-timeline-line-thickness': convertToUnit(props.lineThickness)\n }, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VTimeline.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeVariantProps } from \"../../composables/variant.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVToolbarItemsProps = propsFactory({\n ...makeComponentProps(),\n ...makeVariantProps({\n variant: 'text'\n })\n}, 'VToolbarItems');\nexport const VToolbarItems = genericComponent()({\n name: 'VToolbarItems',\n props: makeVToolbarItemsProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n provideDefaults({\n VBtn: {\n color: toRef(props, 'color'),\n height: 'inherit',\n variant: toRef(props, 'variant')\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-toolbar-items', props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VToolbarItems.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VTooltip.css\";\n\n// Components\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\"; // Composables\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\"; // Utilities\nimport { computed, mergeProps, ref } from 'vue';\nimport { genericComponent, getUid, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTooltipProps = propsFactory({\n id: String,\n text: String,\n ...omit(makeVOverlayProps({\n closeOnBack: false,\n location: 'end',\n locationStrategy: 'connected',\n eager: true,\n minWidth: 0,\n offset: 10,\n openOnClick: false,\n openOnHover: true,\n origin: 'auto',\n scrim: false,\n scrollStrategy: 'reposition',\n transition: false\n }), ['absolute', 'persistent'])\n}, 'VTooltip');\nexport const VTooltip = genericComponent()({\n name: 'VTooltip',\n props: makeVTooltipProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n scopeId\n } = useScopeId();\n const uid = getUid();\n const id = computed(() => props.id || `v-tooltip-${uid}`);\n const overlay = ref();\n const location = computed(() => {\n return props.location.split(' ').length > 1 ? props.location : props.location + ' center';\n });\n const origin = computed(() => {\n return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';\n });\n const transition = computed(() => {\n if (props.transition) return props.transition;\n return isActive.value ? 'scale-transition' : 'fade-transition';\n });\n const activatorProps = computed(() => mergeProps({\n 'aria-describedby': id.value\n }, props.activatorProps));\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-tooltip', props.class],\n \"style\": props.style,\n \"id\": id.value\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"transition\": transition.value,\n \"absolute\": true,\n \"location\": location.value,\n \"origin\": origin.value,\n \"persistent\": true,\n \"role\": \"tooltip\",\n \"activatorProps\": activatorProps.value,\n \"_disableGlobalStack\": true\n }, scopeId), {\n activator: slots.activator,\n default: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return slots.default?.(...args) ?? props.text;\n }\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VTooltip.mjs.map","// Composables\nimport { makeValidationProps, useValidation } from \"../../composables/validation.mjs\"; // Utilities\nimport { genericComponent } from \"../../util/index.mjs\"; // Types\nexport const VValidation = genericComponent()({\n name: 'VValidation',\n props: makeValidationProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const validation = useValidation(props, 'validation');\n return () => slots.default?.(validation);\n }\n});\n//# sourceMappingURL=VValidation.mjs.map","// Types\n\nfunction mounted(el, binding) {\n const modifiers = binding.modifiers || {};\n const value = binding.value;\n const {\n once,\n immediate,\n ...modifierKeys\n } = modifiers;\n const defaultValue = !Object.keys(modifierKeys).length;\n const {\n handler,\n options\n } = typeof value === 'object' ? value : {\n handler: value,\n options: {\n attributes: modifierKeys?.attr ?? defaultValue,\n characterData: modifierKeys?.char ?? defaultValue,\n childList: modifierKeys?.child ?? defaultValue,\n subtree: modifierKeys?.sub ?? defaultValue\n }\n };\n const observer = new MutationObserver(function () {\n let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let observer = arguments.length > 1 ? arguments[1] : undefined;\n handler?.(mutations, observer);\n if (once) unmounted(el, binding);\n });\n if (immediate) handler?.([], observer);\n el._mutate = Object(el._mutate);\n el._mutate[binding.instance.$.uid] = {\n observer\n };\n observer.observe(el, options);\n}\nfunction unmounted(el, binding) {\n if (!el._mutate?.[binding.instance.$.uid]) return;\n el._mutate[binding.instance.$.uid].observer.disconnect();\n delete el._mutate[binding.instance.$.uid];\n}\nexport const Mutate = {\n mounted,\n unmounted\n};\nexport default Mutate;\n//# sourceMappingURL=index.mjs.map","// Types\n\nfunction mounted(el, binding) {\n const handler = binding.value;\n const options = {\n passive: !binding.modifiers?.active\n };\n window.addEventListener('resize', handler, options);\n el._onResize = Object(el._onResize);\n el._onResize[binding.instance.$.uid] = {\n handler,\n options\n };\n if (!binding.modifiers?.quiet) {\n handler();\n }\n}\nfunction unmounted(el, binding) {\n if (!el._onResize?.[binding.instance.$.uid]) return;\n const {\n handler,\n options\n } = el._onResize[binding.instance.$.uid];\n window.removeEventListener('resize', handler, options);\n delete el._onResize[binding.instance.$.uid];\n}\nexport const Resize = {\n mounted,\n unmounted\n};\nexport default Resize;\n//# sourceMappingURL=index.mjs.map","// Types\n\nfunction mounted(el, binding) {\n const {\n self = false\n } = binding.modifiers ?? {};\n const value = binding.value;\n const options = typeof value === 'object' && value.options || {\n passive: true\n };\n const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;\n const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;\n if (!target) return;\n target.addEventListener('scroll', handler, options);\n el._onScroll = Object(el._onScroll);\n el._onScroll[binding.instance.$.uid] = {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target\n };\n}\nfunction unmounted(el, binding) {\n if (!el._onScroll?.[binding.instance.$.uid]) return;\n const {\n handler,\n options,\n target = el\n } = el._onScroll[binding.instance.$.uid];\n target.removeEventListener('scroll', handler, options);\n delete el._onScroll[binding.instance.$.uid];\n}\nfunction updated(el, binding) {\n if (binding.value === binding.oldValue) return;\n unmounted(el, binding);\n mounted(el, binding);\n}\nexport const Scroll = {\n mounted,\n unmounted,\n updated\n};\nexport default Scroll;\n//# sourceMappingURL=index.mjs.map","// Utilities\nimport { h, mergeProps, render, resolveComponent } from 'vue';\nimport { isObject } from \"../util/index.mjs\"; // Types\nexport function useDirectiveComponent(component, props) {\n const concreteComponent = typeof component === 'string' ? resolveComponent(component) : component;\n const hook = mountComponent(concreteComponent, props);\n return {\n mounted: hook,\n updated: hook,\n unmounted(el) {\n render(null, el);\n }\n };\n}\nfunction mountComponent(component, props) {\n return function (el, binding, vnode) {\n const _props = typeof props === 'function' ? props(binding) : props;\n const text = binding.value?.text ?? binding.value ?? _props?.text;\n const value = isObject(binding.value) ? binding.value : {};\n\n // Get the children from the props or directive value, or the element's children\n const children = () => text ?? el.textContent;\n\n // If vnode.ctx is the same as the instance, then we're bound to a plain element\n // and need to find the nearest parent component instance to inherit provides from\n const provides = (vnode.ctx === binding.instance.$ ? findComponentParent(vnode, binding.instance.$)?.provides : vnode.ctx?.provides) ?? binding.instance.$.provides;\n const node = h(component, mergeProps(_props, value), children);\n node.appContext = Object.assign(Object.create(null), binding.instance.$.appContext, {\n provides\n });\n render(node, el);\n };\n}\nfunction findComponentParent(vnode, root) {\n // Walk the tree from root until we find the child vnode\n const stack = new Set();\n const walk = children => {\n for (const child of children) {\n if (!child) continue;\n if (child === vnode) {\n return true;\n }\n stack.add(child);\n let result;\n if (child.suspense) {\n result = walk([child.ssContent]);\n } else if (Array.isArray(child.children)) {\n result = walk(child.children);\n } else if (child.component?.vnode) {\n result = walk([child.component?.subTree]);\n }\n if (result) {\n return result;\n }\n stack.delete(child);\n }\n return false;\n };\n if (!walk([root.subTree])) {\n throw new Error('Could not find original vnode');\n }\n\n // Return the first component parent\n const result = Array.from(stack).reverse();\n for (const child of result) {\n if (child.component) {\n return child.component;\n }\n }\n return root;\n}\n//# sourceMappingURL=directiveComponent.mjs.map","// Components\nimport { VTooltip } from \"../../components/VTooltip/index.mjs\"; // Composables\nimport { useDirectiveComponent } from \"../../composables/directiveComponent.mjs\"; // Types\nexport const Tooltip = useDirectiveComponent(VTooltip, binding => {\n return {\n activator: 'parent',\n location: binding.arg?.replace('-', ' '),\n text: typeof binding.value === 'boolean' ? undefined : binding.value\n };\n});\nexport default Tooltip;\n//# sourceMappingURL=index.mjs.map","// Composables\nimport { createDate, DateAdapterSymbol, DateOptionsSymbol } from \"./composables/date/date.mjs\";\nimport { createDefaults, DefaultsSymbol } from \"./composables/defaults.mjs\";\nimport { createDisplay, DisplaySymbol } from \"./composables/display.mjs\";\nimport { createGoTo, GoToSymbol } from \"./composables/goto.mjs\";\nimport { createIcons, IconSymbol } from \"./composables/icons.mjs\";\nimport { createLocale, LocaleSymbol } from \"./composables/locale.mjs\";\nimport { createTheme, ThemeSymbol } from \"./composables/theme.mjs\"; // Utilities\nimport { nextTick, reactive } from 'vue';\nimport { defineComponent, getUid, IN_BROWSER, mergeDeep } from \"./util/index.mjs\"; // Types\nexport * from \"./composables/index.mjs\";\nexport function createVuetify() {\n let vuetify = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n blueprint,\n ...rest\n } = vuetify;\n const options = mergeDeep(blueprint, rest);\n const {\n aliases = {},\n components = {},\n directives = {}\n } = options;\n const defaults = createDefaults(options.defaults);\n const display = createDisplay(options.display, options.ssr);\n const theme = createTheme(options.theme);\n const icons = createIcons(options.icons);\n const locale = createLocale(options.locale);\n const date = createDate(options.date, locale);\n const goTo = createGoTo(options.goTo, locale);\n const install = app => {\n for (const key in directives) {\n app.directive(key, directives[key]);\n }\n for (const key in components) {\n app.component(key, components[key]);\n }\n for (const key in aliases) {\n app.component(key, defineComponent({\n ...aliases[key],\n name: key,\n aliasName: aliases[key].name\n }));\n }\n theme.install(app);\n app.provide(DefaultsSymbol, defaults);\n app.provide(DisplaySymbol, display);\n app.provide(ThemeSymbol, theme);\n app.provide(IconSymbol, icons);\n app.provide(LocaleSymbol, locale);\n app.provide(DateOptionsSymbol, date.options);\n app.provide(DateAdapterSymbol, date.instance);\n app.provide(GoToSymbol, goTo);\n if (IN_BROWSER && options.ssr) {\n if (app.$nuxt) {\n app.$nuxt.hook('app:suspense:resolve', () => {\n display.update();\n });\n } else {\n const {\n mount\n } = app;\n app.mount = function () {\n const vm = mount(...arguments);\n nextTick(() => display.update());\n app.mount = mount;\n return vm;\n };\n }\n }\n getUid.reset();\n if (typeof __VUE_OPTIONS_API__ !== 'boolean' || __VUE_OPTIONS_API__) {\n app.mixin({\n computed: {\n $vuetify() {\n return reactive({\n defaults: inject.call(this, DefaultsSymbol),\n display: inject.call(this, DisplaySymbol),\n theme: inject.call(this, ThemeSymbol),\n icons: inject.call(this, IconSymbol),\n locale: inject.call(this, LocaleSymbol),\n date: inject.call(this, DateAdapterSymbol)\n });\n }\n }\n });\n }\n };\n return {\n install,\n defaults,\n display,\n theme,\n icons,\n locale,\n date,\n goTo\n };\n}\nexport const version = \"3.7.2\";\ncreateVuetify.version = version;\n\n// Vue's inject() can only be used in setup\nfunction inject(key) {\n const vm = this.$;\n const provides = vm.parent?.provides ?? vm.vnode.appContext?.provides;\n if (provides && key in provides) {\n return provides[key];\n }\n}\n//# sourceMappingURL=framework.mjs.map","// Composables\nimport { VClassIcon } from \"../composables/icons.mjs\"; // Types\nconst aliases = {\n collapse: 'fas fa-chevron-up',\n complete: 'fas fa-check',\n cancel: 'fas fa-times-circle',\n close: 'fas fa-times',\n delete: 'fas fa-times-circle',\n // delete (e.g. v-chip close)\n clear: 'fas fa-times-circle',\n // delete (e.g. v-chip close)\n success: 'fas fa-check-circle',\n info: 'fas fa-info-circle',\n warning: 'fas fa-exclamation',\n error: 'fas fa-exclamation-triangle',\n prev: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n checkboxOn: 'fas fa-check-square',\n checkboxOff: 'far fa-square',\n // note 'far'\n checkboxIndeterminate: 'fas fa-minus-square',\n delimiter: 'fas fa-circle',\n // for carousel\n sortAsc: 'fas fa-arrow-up',\n sortDesc: 'fas fa-arrow-down',\n expand: 'fas fa-chevron-down',\n menu: 'fas fa-bars',\n subgroup: 'fas fa-caret-down',\n dropdown: 'fas fa-caret-down',\n radioOn: 'far fa-dot-circle',\n radioOff: 'far fa-circle',\n edit: 'fas fa-edit',\n ratingEmpty: 'far fa-star',\n ratingFull: 'fas fa-star',\n ratingHalf: 'fas fa-star-half',\n loading: 'fas fa-sync',\n first: 'fas fa-step-backward',\n last: 'fas fa-step-forward',\n unfold: 'fas fa-arrows-alt-v',\n file: 'fas fa-paperclip',\n plus: 'fas fa-plus',\n minus: 'fas fa-minus',\n calendar: 'fas fa-calendar',\n treeviewCollapse: 'fas fa-caret-down',\n treeviewExpand: 'fas fa-caret-right',\n eyeDropper: 'fas fa-eye-dropper'\n};\nconst fa = {\n component: VClassIcon\n};\nexport { aliases, fa };\n//# sourceMappingURL=fa.mjs.map","/**\n * plugins/vuetify.ts\n *\n * Framework documentation: https://vuetifyjs.com`\n */\n\n// Styles\nimport '@fortawesome/fontawesome-free/css/all.css';\nimport '/@/styles/main.scss';\nimport '/@/styles/settings.scss';\nimport * as components from 'vuetify/components';\nimport * as directives from 'vuetify/directives';\n\n// Composables\nimport {createVuetify} from 'vuetify';\n\n\nimport { aliases, fa } from 'vuetify/iconsets/fa';\n\n// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides\nconst vuetify = createVuetify({\n components,\n directives,\n icons: {\n defaultSet: 'fa',\n aliases,\n sets: {\n fa,\n },\n },\n defaults: {\n global: {\n elevation: 0,\n },\n VTextField: {\n variant: 'solo-filled',\n 'bg-color': 'background',\n },\n VFileInput: {\n variant: 'solo-filled',\n },\n VSelect: {\n variant: 'solo-filled',\n },\n VAutocomplete: {\n variant: 'solo-filled',\n },\n VTooltip: {\n location: 'start',\n },\n },\n theme: {\n defaultTheme: 'default',\n themes: {\n default: {\n dark: false,\n colors: {\n 'background': '#221F1F',\n 'background-lighten-1': '#141414',\n 'background-lighten-2': '#363B65',\n 'background-darken-1': '#191919',\n 'background-darken-2': '#191919',\n 'primary': '#A020F0',\n 'primary-lighten-1': '#BA52FB',\n 'primary-darken-1': '#7918B5',\n 'secondary': '#D027C1',\n 'secondary-lighten-1': '#392a37',\n 'secondary-darken-1': '#AD18A0',\n 'surface': '#191919',\n 'error': '#F44336',\n 'info': '#2986CC',\n 'success': '#51BF32',\n 'warning': '#F1C232',\n },\n variables: {\n 'border-color': '#A020F0',\n 'border-opacity': '0.5',\n 'high-emphasis-opacity': '0.87',\n 'medium-emphasis-opacity':' 0.6',\n 'disabled-opacity': '0.38',\n 'idle-opacity': '0.04',\n 'hover-opacity': '0.04',\n 'focus-opacity': '0.12',\n 'selected-opacity': '0.08',\n 'activated-opacity': '0.12',\n 'pressed-opacity': '0.12',\n 'dragged-opacity': '0.08',\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n },\n },\n});\n\nexport default vuetify;\n","/**\n * plugins/webfontloader.ts\n *\n * webfontloader documentation: https://github.com/typekit/webfontloader\n */\n\nexport async function loadFonts() {\n const webFontLoader = await import(/* webpackChunkName: \"webfontloader\" */ 'webfontloader');\n\n webFontLoader.load({\n google: {\n families: ['Josefin Sans:100,300,400,500,700,900&display=swap'],\n },\n });\n}\n","export const TRUSTED_SITES_TABLE_KEY = 'trustedSites';\nexport const TRUSTED_SITES_SITE_ID_COL = 'siteId';\nexport const TRUSTED_SITES_NAME_COL = 'siteName';\n\nexport const FEATURED_RELEASES_TABLE_KEY = 'featuredReleases';\nexport const FEATURED_RELEASES_RELEASE_ID_COLUMN = 'releaseId';\nexport const FEATURED_RELEASES_START_TIME_COLUMN = 'startTime';\nexport const FEATURED_RELEASES_END_TIME_COLUMN = 'endTime';\n\nexport const BLOCKED_RELEASES_TABLE_KEY = 'blockedReleases';\nexport const BLOCKED_RELEASES_RELEASE_ID_COLUMN = 'releaseId';\n\nexport const RELEASES_FILE_COLUMN = 'file';\nexport const RELEASES_AUTHOR_COLUMN = 'author';\nexport const RELEASES_NAME_COLUMN = 'contentName';\nexport const RELEASES_METADATA_COLUMN = 'metadata';\nexport const RELEASES_THUMBNAIL_COLUMN = 'thumbnail';\nexport const RELEASES_CATEGORY_COLUMN = 'category';\nexport const RELEASES_STATUS_COLUMN = 'status';\n\nexport const COLLECTIONS_RELEASES_COLUMN = 'releases';\nexport const COLLECTIONS_AUTHOR_COLUMN = 'author';\nexport const COLLECTIONS_NAME_COLUMN = 'contentName';\nexport const COLLECTIONS_METADATA_COLUMN = 'metadata';\nexport const COLLECTIONS_THUMBNAIL_COLUMN = 'thumbnail';\nexport const COLLECTIONS_CATEGORY_COLUMN = 'category';\nexport const COLLECTIONS_STATUS_COLUMN = 'status';\n\nexport const RELEASES_DB_TABLE_KEY = 'releases';\nexport const COLLECTIONS_DB_TABLE_KEY = 'collections';\n\n","import {\n RELEASES_AUTHOR_COLUMN,\n RELEASES_FILE_COLUMN,\n RELEASES_METADATA_COLUMN,\n RELEASES_NAME_COLUMN,\n RELEASES_THUMBNAIL_COLUMN,\n RELEASES_CATEGORY_COLUMN,\n RELEASES_STATUS_COLUMN,\n} from '../consts';\nimport type Orbiter from '../orbiter';\n\nconst clearData = async () => {\n localStorage.clear();\n if (indexedDB.databases) {\n const indexedDbDatabases = await indexedDB.databases();\n await Promise.all(\n indexedDbDatabases.map(db => {\n if (db.name) indexedDB.deleteDatabase(db.name);\n }),\n );\n }\n};\n\nexport const loadStubData = async (app: Orbiter) => {\n await clearData();\n\n await app.changeName({name: 'Me !', language: 'en'});\n\n const audioFile = (await import('../../../../../../tests/devData/06-yy_ch01_l01_d01.mp3'))\n .default;\n\n const audioCid = await app.constellation.ajouterÀSFIP({\n contenu: new Uint8Array(new TextEncoder().encode(audioFile)),\n nomFichier: '06-yy_ch01_l01_d01.mp3',\n });\n\n const thumbnailFile = (await import('../../../assets/logo.svg')).default;\n\n const thumbnailCid = await app.constellation.ajouterÀSFIP({\n contenu: new Uint8Array(new TextEncoder().encode(thumbnailFile)),\n nomFichier: 'logo.svg',\n });\n await app.addRelease({\n [RELEASES_NAME_COLUMN]: 'Famous song',\n [RELEASES_AUTHOR_COLUMN]: 'I. B. Astar',\n [RELEASES_THUMBNAIL_COLUMN]: thumbnailCid,\n [RELEASES_FILE_COLUMN]: audioCid,\n [RELEASES_METADATA_COLUMN]: 'With an open-access licence, of course.',\n [RELEASES_CATEGORY_COLUMN]: 'audio',\n [RELEASES_STATUS_COLUMN]: 'pending',\n });\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypedEmitter = require(\"events\").EventEmitter;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t;\n return { next: verb(0), \"throw\": verb(1), \"return\": verb(2) };\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nexports.__esModule = true;\n/** Class representing a semaphore\n * Semaphores are initialized with a number of permits that get aquired and released\n * over the lifecycle of the Semaphore. These permits limit the number of simultaneous\n * executions of the code that the Semaphore synchronizes. Functions can wait and stop\n * executing until a permit becomes available.\n *\n * Locks that only allow one execution of a critical section are a special case of\n * Semaphores. To construct a lock, initialize a Semaphore with a permit count of 1.\n *\n * This Semaphore class is implemented with the help of promises that get returned\n * by functions that wait for permits to become available. This makes it possible\n * to use async/await to synchronize your code.\n */\nvar Semaphore = (function () {\n /**\n * Creates a semaphore.\n * @param permits The number of permits, i.e. things being allowed to run in parallel.\n * To create a lock that only lets one thing run at a time, set this to 1.\n * This number can also be negative.\n */\n function Semaphore(permits) {\n this.promiseResolverQueue = [];\n this.permits = permits;\n }\n /**\n * Returns the number of available permits.\n * @returns The number of available permits.\n */\n Semaphore.prototype.getPermits = function () {\n return this.permits;\n };\n /**\n * Returns a promise used to wait for a permit to become available. This method should be awaited on.\n * @returns A promise that gets resolved when execution is allowed to proceed.\n */\n Semaphore.prototype.wait = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n if (this.permits > 0) {\n this.permits -= 1;\n return [2 /*return*/, Promise.resolve(true)];\n }\n // If there is no permit available, we return a promise that resolves once the semaphore gets\n // signaled enough times that permits is equal to one.\n return [2 /*return*/, new Promise(function (resolver) { return _this.promiseResolverQueue.push(resolver); })];\n });\n });\n };\n /**\n * Alias for {@linkcode Semaphore.wait}.\n * @returns A promise that gets resolved when execution is allowed to proceed.\n */\n Semaphore.prototype.acquire = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.wait()];\n });\n });\n };\n /**\n * Same as {@linkcode Semaphore.wait} except the promise returned gets resolved with false if no\n * permit becomes available in time.\n * @param milliseconds The time spent waiting before the wait is aborted. This is a lower bound,\n * don't rely on it being precise.\n * @returns A promise that gets resolved with true when execution is allowed to proceed or\n * false if the time given elapses before a permit becomes available.\n */\n Semaphore.prototype.waitFor = function (milliseconds) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n var resolver, promise;\n return __generator(this, function (_a) {\n if (this.permits > 0) {\n this.permits -= 1;\n return [2 /*return*/, Promise.resolve(true)];\n }\n resolver = function (b) { return void (0); };\n promise = new Promise(function (r) {\n resolver = r;\n });\n // The saved resolver gets added to our list of promise resolvers so that it gets a chance\n // to be resolved as a result of a call to signal().\n this.promiseResolverQueue.push(resolver);\n setTimeout(function () {\n // We have to remove the promise resolver from our list. Resolving it twice would not be\n // an issue but signal() always takes the next resolver from the queue and resolves it which\n // would swallow a permit if we didn't remove it.\n var index = _this.promiseResolverQueue.indexOf(resolver);\n if (index !== -1) {\n _this.promiseResolverQueue.splice(index, 1);\n }\n else {\n // This is weird... TODO Think about what the best course of action would be at this point.\n // Probably do nothing.\n }\n // false because the wait was unsuccessful.\n resolver(false);\n }, milliseconds);\n return [2 /*return*/, promise];\n });\n });\n };\n /**\n * Synchronous function that tries to acquire a permit and returns true if successful, false otherwise.\n * @returns Whether a permit could be acquired.\n */\n Semaphore.prototype.tryAcquire = function () {\n if (this.permits > 0) {\n this.permits -= 1;\n return true;\n }\n return false;\n };\n /**\n * Acquires all permits that are currently available and returns the number of acquired permits.\n * @returns Number of acquired permits.\n */\n Semaphore.prototype.drainPermits = function () {\n if (this.permits > 0) {\n var permitCount = this.permits;\n this.permits = 0;\n return permitCount;\n }\n return 0;\n };\n /**\n * Increases the number of permits by one. If there are other functions waiting, one of them will\n * continue to execute in a future iteration of the event loop.\n */\n Semaphore.prototype.signal = function () {\n this.permits += 1;\n if (this.permits > 1 && this.promiseResolverQueue.length > 0) {\n throw new Error('this.permits should never be > 0 when there is someone waiting.');\n }\n else if (this.permits === 1 && this.promiseResolverQueue.length > 0) {\n // If there is someone else waiting, immediately consume the permit that was released\n // at the beginning of this function and let the waiting function resume.\n this.permits -= 1;\n var nextResolver = this.promiseResolverQueue.shift();\n if (nextResolver) {\n nextResolver(true);\n }\n }\n };\n /**\n * Alias for {@linkcode Semaphore.signal}.\n */\n Semaphore.prototype.release = function () {\n this.signal();\n };\n /**\n * Schedules func to be called once a permit becomes available.\n * Returns a promise that resolves to the return value of func.\n * @typeparam T The return type of func.\n * @param func The function to be executed.\n * @return A promise that gets resolved with the return value of the function.\n */\n Semaphore.prototype.execute = function (func) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.wait()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, , 4, 5]);\n return [4 /*yield*/, func()];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n this.signal();\n return [7 /*endfinally*/];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n return Semaphore;\n}());\nexports[\"default\"] = Semaphore;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar Semaphore_1 = require(\"./Semaphore\");\n/**\n * A lock that can be used to synchronize critical sections in your code.\n * For more details on how to use this class, please view the documentation\n * of the Semaphore class from which Lock inherits.\n */\nvar Lock = (function (_super) {\n __extends(Lock, _super);\n /**\n * Creates a lock.\n */\n function Lock() {\n return _super.call(this, 1) || this;\n }\n return Lock;\n}(Semaphore_1[\"default\"]));\nexports.Lock = Lock;\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\nvar Semaphore_1 = require(\"./Semaphore\");\nexports[\"default\"] = Semaphore_1[\"default\"];\n__export(require(\"./Lock\"));\n","import type {\n COLLECTIONS_AUTHOR_COLUMN,\n COLLECTIONS_METADATA_COLUMN,\n COLLECTIONS_NAME_COLUMN,\n COLLECTIONS_RELEASES_COLUMN,\n COLLECTIONS_THUMBNAIL_COLUMN,\n COLLECTIONS_CATEGORY_COLUMN,\n COLLECTIONS_STATUS_COLUMN,\n RELEASES_AUTHOR_COLUMN,\n RELEASES_FILE_COLUMN,\n RELEASES_METADATA_COLUMN,\n RELEASES_NAME_COLUMN,\n RELEASES_THUMBNAIL_COLUMN,\n RELEASES_STATUS_COLUMN,\n RELEASES_CATEGORY_COLUMN,\n TRUSTED_SITES_NAME_COL,\n TRUSTED_SITES_SITE_ID_COL,\n FEATURED_RELEASES_END_TIME_COLUMN,\n FEATURED_RELEASES_RELEASE_ID_COLUMN,\n FEATURED_RELEASES_START_TIME_COLUMN,\n BLOCKED_RELEASES_RELEASE_ID_COLUMN,\n} from './consts';\n\nexport const variableIdKeys = [\n 'trustedSitesSiteIdVariableId',\n 'trustedSitesNameVariableId',\n 'releasesContentNameVar',\n 'releasesFileVar',\n 'releasesThumbnailVar',\n 'releasesAuthorVar',\n 'releasesMetadataVar',\n 'releasesCategoryVar',\n 'releasesStatusVar',\n 'collectionsNameVar',\n 'collectionsAuthorVar',\n 'collectionsThumbnailVar',\n 'collectionsMetadataVar',\n 'collectionsCategoryVar',\n 'collectionsReleasesVar',\n 'collectionsStatusVar',\n 'featuredReleasesReleaseIdVar',\n 'featuredReleasesStartTimeVar',\n 'featuredReleasesEndTimeVar',\n 'blockedReleasesReleaseIdVar',\n] as const;\n\nexport type VariableIds = Record<(typeof variableIdKeys)[number], string>;\n\nexport type possiblyIncompleteVariableIds = Partial;\n\nexport type Release = {\n [RELEASES_NAME_COLUMN]: string;\n [RELEASES_FILE_COLUMN]: string;\n [RELEASES_AUTHOR_COLUMN]: string;\n [RELEASES_THUMBNAIL_COLUMN]?: string;\n [RELEASES_METADATA_COLUMN]?: string;\n [RELEASES_CATEGORY_COLUMN]: string;\n [RELEASES_STATUS_COLUMN]: string;\n};\n\nexport type ReleaseWithId = {\n release: Release;\n id: string;\n};\n\nexport type Collection = {\n [COLLECTIONS_NAME_COLUMN]: string;\n [COLLECTIONS_AUTHOR_COLUMN]?: string;\n [COLLECTIONS_THUMBNAIL_COLUMN]?: string;\n [COLLECTIONS_METADATA_COLUMN]?: string;\n [COLLECTIONS_CATEGORY_COLUMN]: string;\n [COLLECTIONS_RELEASES_COLUMN]: string;\n [COLLECTIONS_STATUS_COLUMN]: string;\n};\n\nexport type FeaturedRelease = {\n [FEATURED_RELEASES_RELEASE_ID_COLUMN]: string;\n [FEATURED_RELEASES_START_TIME_COLUMN]: string;\n [FEATURED_RELEASES_END_TIME_COLUMN]: string;\n};\n\nexport type BlockedRelease = {\n [BLOCKED_RELEASES_RELEASE_ID_COLUMN]: string;\n}\n\nexport type CollectionWithId = {\n collection: Collection;\n id: string;\n};\n\nexport type TrustedSite = {\n [TRUSTED_SITES_SITE_ID_COL]: string;\n [TRUSTED_SITES_NAME_COL]: string;\n};\n\n\nexport interface ReleaseMetadata {\n description?: string;\n license?: string;\n}\n\nexport interface MusicReleaseMetadata {\n tags?: string;\n musicBrainzID?: string;\n albumTitle?: string;\n initialReleaseYear?: string;\n releaseType?: string;\n fileFormat?: string;\n bitrate?: string;\n mediaFormat?: string;\n}\n\nexport interface MovieReleaseMetadata {\n posterCID?: string;\n TMDBID?: string;\n IMDBID?: string;\n releaseType?: string;\n}\n","import {inject} from 'vue';\n\nimport type Orbiter from './orbiter';\n\nexport const useOrbiter = () => {\n const orbiter = inject('orbiter');\n if (orbiter) return {orbiter};\n throw new Error('Orbiter not found. Did you register the Orbiter plugin with Vue?');\n};\n\nexport const removeUndefined = (vals: T): T => {\n return Object.fromEntries(Object.entries(vals).filter(x => x[1] !== undefined)) as T; // Not exactly precise, but depends on [this problem](https://stackoverflow.com/questions/54489817/typescript-partialt-type-without-undefined) to be fixed.\n};\n","import {TypedEmitter} from 'tiny-typed-emitter';\n\nimport {Lock} from 'semaphore-async-await';\n\nimport type {Constellation, bds, tableaux, types} from '@constl/ipa';\nimport {ignorerNonDéfinis, suivreBdDeFonction, uneFois} from '@constl/utils-ipa';\n\nimport type {JSONSchemaType} from 'ajv';\n\nimport {\n COLLECTIONS_AUTHOR_COLUMN,\n COLLECTIONS_DB_TABLE_KEY,\n COLLECTIONS_METADATA_COLUMN,\n COLLECTIONS_NAME_COLUMN,\n COLLECTIONS_RELEASES_COLUMN,\n COLLECTIONS_THUMBNAIL_COLUMN,\n COLLECTIONS_CATEGORY_COLUMN,\n RELEASES_AUTHOR_COLUMN,\n RELEASES_DB_TABLE_KEY,\n RELEASES_FILE_COLUMN,\n RELEASES_METADATA_COLUMN,\n RELEASES_NAME_COLUMN,\n RELEASES_THUMBNAIL_COLUMN,\n RELEASES_CATEGORY_COLUMN,\n TRUSTED_SITES_NAME_COL,\n TRUSTED_SITES_SITE_ID_COL,\n TRUSTED_SITES_TABLE_KEY,\n RELEASES_STATUS_COLUMN,\n COLLECTIONS_STATUS_COLUMN,\n FEATURED_RELEASES_END_TIME_COLUMN,\n FEATURED_RELEASES_RELEASE_ID_COLUMN,\n FEATURED_RELEASES_START_TIME_COLUMN,\n FEATURED_RELEASES_TABLE_KEY,\n BLOCKED_RELEASES_TABLE_KEY,\n BLOCKED_RELEASES_RELEASE_ID_COLUMN,\n} from './consts.js';\nimport type {\n BlockedRelease,\n Collection,\n CollectionWithId,\n FeaturedRelease,\n Release,\n ReleaseWithId,\n TrustedSite,\n VariableIds,\n possiblyIncompleteVariableIds,\n} from './types.js';\nimport {variableIdKeys} from './types.js';\nimport {removeUndefined} from './utils.js';\n\ntype forgetFunction = () => Promise;\n\ninterface OrbiterEvents {\n 'site configured': (args: {siteId: string; variableIds: VariableIds}) => void;\n}\n\ntype RootDbSchema = {\n swarmId: string;\n modDb: string;\n};\nconst ROOT_DB_JSON_SCHEMA: JSONSchemaType> = {\n type: 'object',\n properties: {\n modDb: {type: 'string', nullable: true},\n swarmId: {type: 'string', nullable: true},\n },\n required: [],\n};\n\nconst OrbiterSiteDbSchema: JSONSchemaType<{modDb: string; swarmId: string}> = {\n type: 'object',\n properties: {\n modDb: {\n type: 'string',\n },\n swarmId: {\n type: 'string',\n },\n },\n required: ['modDb', 'swarmId'],\n};\n\nexport default class Orbiter {\n siteId?: string;\n swarmId?: string;\n\n initialVariableIds: possiblyIncompleteVariableIds;\n variableIds?: VariableIds;\n\n constellation: Constellation;\n events: TypedEmitter;\n\n statusType = ['approved', 'deleted', 'pending', 'rejected'];\n contentCategories = ['tvShow', 'movie', 'audiobook', 'game', 'book', 'music', 'video', 'other'];\n\n constructor({\n siteId,\n swarmId,\n variableIds,\n constellation,\n }: {\n siteId?: string;\n swarmId?: string;\n variableIds: possiblyIncompleteVariableIds;\n constellation: Constellation;\n }) {\n this.events = new TypedEmitter();\n\n this.siteId = siteId;\n this.swarmId = swarmId;\n this.initialVariableIds = variableIds;\n\n if (this.checkVariableIdsComplete(variableIds)) {\n this.variableIds = variableIds;\n }\n\n this.constellation = constellation;\n }\n\n // Site setup functions\n\n async setUpSite(): Promise<{\n siteId: string;\n variableIds: VariableIds;\n }> {\n console.log('ici');\n // Variables for moderation database\n const trustedSitesSiteIdVariableId =\n this.initialVariableIds.trustedSitesSiteIdVariableId ||\n (await this.constellation.variables.créerVariable({catégorie: 'chaîneNonTraductible'}));\n const trustedSitesNameVariableId =\n this.initialVariableIds.trustedSitesNameVariableId ||\n (await this.constellation.variables.créerVariable({catégorie: 'chaîneNonTraductible'}));\n const featuredReleasesReleaseIdVar =\n this.initialVariableIds.featuredReleasesReleaseIdVar ||\n (await this.constellation.variables.créerVariable({catégorie: 'chaîneNonTraductible'}));\n const featuredReleasesStartTimeVar =\n this.initialVariableIds.featuredReleasesStartTimeVar ||\n (await this.constellation.variables.créerVariable({catégorie: 'horoDatage'}));\n const featuredReleasesEndTimeVar =\n this.initialVariableIds.featuredReleasesEndTimeVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'horoDatage',\n }));\n const blockedReleasesReleaseIdVar =\n this.initialVariableIds.blockedReleasesReleaseIdVar ||\n (await this.constellation.variables.créerVariable({catégorie: 'chaîneNonTraductible'}));\n console.log('ici 1');\n // Variables for releases table\n const releasesFileVar =\n this.initialVariableIds.releasesFileVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'fichier',\n }));\n const releasesThumbnailVar =\n this.initialVariableIds.releasesThumbnailVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'fichier',\n }));\n const releasesAuthorVar =\n this.initialVariableIds.releasesAuthorVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const releasesMetadataVar =\n this.initialVariableIds.releasesMetadataVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const releasesContentNameVar =\n this.initialVariableIds.releasesContentNameVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n console.log('ici 2');\n // The release type variable is a bit more complicated, because we need to specify\n // allowed categories to enforce.\n let releasesCategoryVar: string;\n if (this.initialVariableIds.releasesCategoryVar) {\n releasesCategoryVar = this.initialVariableIds.releasesCategoryVar;\n } else {\n releasesCategoryVar = await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n });\n // Specify allowed categories\n await this.constellation.variables.ajouterRègleVariable({\n idVariable: releasesCategoryVar,\n règle: {\n typeRègle: 'valeurCatégorique',\n détails: {\n type: 'fixe',\n options: this.contentCategories,\n },\n },\n });\n }\n let releasesStatusVar: string;\n if (this.initialVariableIds.releasesStatusVar) {\n releasesStatusVar = this.initialVariableIds.releasesStatusVar;\n } else {\n releasesStatusVar = await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n });\n // Specify allowed categories\n await this.constellation.variables.ajouterRègleVariable({\n idVariable: releasesStatusVar,\n règle: {\n typeRègle: 'valeurCatégorique',\n détails: {\n type: 'fixe',\n options: this.statusType,\n },\n },\n });\n }\n console.log('ici 3');\n // Variables for collections table\n const collectionsNameVar =\n this.initialVariableIds.collectionsNameVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const collectionsAuthorVar =\n this.initialVariableIds.collectionsAuthorVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const collectionsMetadataVar =\n this.initialVariableIds.collectionsMetadataVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const collectionsReleasesVar =\n this.initialVariableIds.collectionsReleasesVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n }));\n const collectionsThumbnailVar =\n this.initialVariableIds.collectionsThumbnailVar ||\n (await this.constellation.variables.créerVariable({\n catégorie: 'fichier',\n }));\n console.log('ici 4');\n // Same thing for collections type variable.\n let collectionsCategoryVar: string;\n if (this.initialVariableIds.collectionsCategoryVar) {\n collectionsCategoryVar = this.initialVariableIds.collectionsCategoryVar;\n } else {\n collectionsCategoryVar = await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n });\n // Specify allowed categories\n await this.constellation.variables.ajouterRègleVariable({\n idVariable: collectionsCategoryVar,\n règle: {\n typeRègle: 'valeurCatégorique',\n détails: {\n type: 'fixe',\n options: this.contentCategories,\n },\n },\n });\n }\n let collectionsStatusVar: string;\n if (this.initialVariableIds.collectionsStatusVar) {\n collectionsStatusVar = this.initialVariableIds.collectionsStatusVar;\n } else {\n collectionsStatusVar = await this.constellation.variables.créerVariable({\n catégorie: 'chaîneNonTraductible',\n });\n // Specify allowed categories\n await this.constellation.variables.ajouterRègleVariable({\n idVariable: collectionsStatusVar,\n règle: {\n typeRègle: 'valeurCatégorique',\n détails: {\n type: 'fixe',\n options: this.statusType,\n },\n },\n });\n }\n console.log('ici 5');\n // Swarm ID for site\n let swarmId: string;\n if (this.swarmId) {\n swarmId = this.swarmId;\n } else {\n swarmId = await this.constellation.nuées.créerNuée({});\n // Now we can specify the format for individual release dbs and collections\n const releasesDbFormat = this.getSwarmDbSchema({\n releasesFileVar,\n releasesCategoryVar,\n releasesThumbnailVar,\n releasesAuthorVar,\n releasesContentNameVar,\n releasesMetadataVar,\n releasesStatusVar,\n collectionsAuthorVar,\n collectionsMetadataVar,\n collectionsNameVar,\n collectionsReleasesVar,\n collectionsThumbnailVar,\n collectionsCategoryVar,\n collectionsStatusVar,\n swarmId: swarmId,\n });\n for (const table of releasesDbFormat.tableaux) {\n const tableKey = table.clef;\n const idTableau = await this.constellation.nuées.ajouterTableauNuée({\n idNuée: swarmId,\n clefTableau: tableKey,\n });\n for (const col of table.cols) {\n await this.constellation.nuées.ajouterColonneTableauNuée({\n idTableau,\n idVariable: col.idVariable,\n idColonne: col.idColonne,\n });\n }\n }\n }\n console.log('ici 6');\n const modDbId = await this.constellation.bds.créerBdDeSchéma({\n schéma: {\n licence: 'ODbl-1_0',\n tableaux: [\n {\n cols: [\n {\n idVariable: trustedSitesSiteIdVariableId,\n idColonne: TRUSTED_SITES_SITE_ID_COL,\n },\n {\n idVariable: trustedSitesNameVariableId,\n idColonne: TRUSTED_SITES_NAME_COL,\n },\n ],\n clef: TRUSTED_SITES_TABLE_KEY,\n },\n {\n cols: [\n {\n idVariable: featuredReleasesReleaseIdVar,\n idColonne: FEATURED_RELEASES_RELEASE_ID_COLUMN,\n },\n {\n idVariable: featuredReleasesStartTimeVar,\n idColonne: FEATURED_RELEASES_START_TIME_COLUMN,\n },\n {\n idVariable: featuredReleasesEndTimeVar,\n idColonne: FEATURED_RELEASES_END_TIME_COLUMN,\n },\n ],\n clef: FEATURED_RELEASES_TABLE_KEY,\n },\n {\n cols: [\n {\n idVariable: blockedReleasesReleaseIdVar,\n idColonne: BLOCKED_RELEASES_RELEASE_ID_COLUMN,\n },\n ],\n clef: BLOCKED_RELEASES_TABLE_KEY,\n },\n ],\n },\n });\n console.log('ici 7');\n const variableIds: VariableIds = {\n // Federation stuff\n trustedSitesSiteIdVariableId,\n trustedSitesNameVariableId,\n\n // featured releases\n featuredReleasesReleaseIdVar,\n featuredReleasesStartTimeVar,\n featuredReleasesEndTimeVar,\n\n // blocked releases\n blockedReleasesReleaseIdVar,\n\n // releases\n releasesFileVar,\n releasesAuthorVar,\n releasesContentNameVar,\n releasesThumbnailVar,\n releasesMetadataVar,\n releasesCategoryVar,\n releasesStatusVar,\n\n // collections\n collectionsAuthorVar,\n collectionsMetadataVar,\n collectionsNameVar,\n collectionsThumbnailVar,\n collectionsReleasesVar,\n collectionsCategoryVar,\n collectionsStatusVar,\n };\n\n const siteId = await this.constellation.créerBdIndépendante({\n type: 'keyvalue',\n });\n console.log('ici 8', {modDbId});\n await this.constellation.orbite.appliquerFonctionBdOrbite({\n idBd: siteId,\n fonction: 'put',\n args: ['modDb', modDbId],\n });\n console.log('ici 9');\n await this.constellation.orbite.appliquerFonctionBdOrbite({\n idBd: siteId,\n fonction: 'put',\n args: ['swarmId', swarmId],\n });\n console.log('ici 10');\n\n this.events.emit('site configured', {\n siteId,\n variableIds,\n });\n console.log('ici 11');\n return {\n siteId,\n variableIds,\n };\n }\n\n checkVariableIdsComplete(ids?: possiblyIncompleteVariableIds): ids is VariableIds {\n return !!ids && variableIdKeys.every(k => Object.keys(ids).includes(k) && ids[k]);\n }\n\n getSwarmDbSchema({\n releasesFileVar,\n releasesCategoryVar,\n releasesThumbnailVar,\n releasesAuthorVar,\n releasesContentNameVar,\n releasesMetadataVar,\n releasesStatusVar,\n collectionsNameVar,\n collectionsCategoryVar,\n collectionsReleasesVar,\n collectionsAuthorVar,\n collectionsMetadataVar,\n collectionsThumbnailVar,\n collectionsStatusVar,\n swarmId,\n }: {\n releasesFileVar: string;\n releasesCategoryVar: string;\n releasesThumbnailVar: string;\n releasesAuthorVar: string;\n releasesContentNameVar: string;\n releasesMetadataVar: string;\n releasesStatusVar: string;\n collectionsNameVar: string;\n collectionsCategoryVar: string;\n collectionsReleasesVar: string;\n collectionsAuthorVar: string;\n collectionsMetadataVar: string;\n collectionsThumbnailVar: string;\n collectionsStatusVar: string;\n swarmId: string;\n }): bds.schémaSpécificationBd {\n return {\n licence: 'ODbl-1_0',\n nuées: [swarmId],\n tableaux: [\n {\n cols: [\n {\n idVariable: releasesFileVar,\n idColonne: RELEASES_FILE_COLUMN,\n },\n {\n idVariable: releasesCategoryVar,\n idColonne: RELEASES_CATEGORY_COLUMN,\n },\n {\n idVariable: releasesThumbnailVar,\n idColonne: RELEASES_THUMBNAIL_COLUMN,\n },\n {\n idVariable: releasesAuthorVar,\n idColonne: RELEASES_AUTHOR_COLUMN,\n },\n {\n idVariable: releasesContentNameVar,\n idColonne: RELEASES_NAME_COLUMN,\n },\n {\n idVariable: releasesMetadataVar,\n idColonne: RELEASES_METADATA_COLUMN,\n },\n {\n idVariable: releasesStatusVar,\n idColonne: RELEASES_STATUS_COLUMN,\n },\n ],\n clef: RELEASES_DB_TABLE_KEY,\n },\n {\n cols: [\n {\n idVariable: collectionsNameVar,\n idColonne: COLLECTIONS_NAME_COLUMN,\n },\n {\n idVariable: collectionsCategoryVar,\n idColonne: COLLECTIONS_CATEGORY_COLUMN,\n },\n {\n idVariable: collectionsReleasesVar,\n idColonne: COLLECTIONS_RELEASES_COLUMN,\n },\n {\n idVariable: collectionsAuthorVar,\n idColonne: COLLECTIONS_AUTHOR_COLUMN,\n },\n {\n idVariable: collectionsMetadataVar,\n idColonne: COLLECTIONS_METADATA_COLUMN,\n },\n {\n idVariable: collectionsThumbnailVar,\n idColonne: COLLECTIONS_THUMBNAIL_COLUMN,\n },\n {\n idVariable: collectionsStatusVar,\n idColonne: COLLECTIONS_STATUS_COLUMN,\n },\n ],\n clef: COLLECTIONS_DB_TABLE_KEY,\n },\n ],\n };\n }\n\n async listenForSiteConfigured({f}: {f: (x: boolean) => void}): Promise {\n const configured = () => {\n return !!(this.siteId && this.checkVariableIdsComplete(this.variableIds));\n };\n f(configured());\n const fFinal = () => f(configured());\n this.events.on('site configured', fFinal);\n return async () => {\n this.events.off('site configured', fFinal);\n };\n }\n\n async siteConfigured(): Promise<{siteId: string; variableIds: VariableIds}> {\n if (this.siteId && this.checkVariableIdsComplete(this.variableIds)) {\n return {siteId: this.siteId, variableIds: this.variableIds};\n }\n return new Promise(resolve => {\n this.events.once('site configured', resolve);\n });\n }\n\n async orbiterConfig(): Promise<{\n modDbId: string;\n swarmId: string;\n swarmSchema: bds.schémaSpécificationBd;\n }> {\n const {siteId, variableIds} = await this.siteConfigured();\n\n const modDbId = (await uneFois(\n async (fSuivi: types.schémaFonctionSuivi) => {\n return await this.constellation.suivreBd({\n id: siteId,\n type: 'keyvalue',\n f: async x => fSuivi(await x.get('modDb')),\n schéma: OrbiterSiteDbSchema,\n });\n },\n )) as string;\n\n const swarmId = (await uneFois(\n async (fSuivi: types.schémaFonctionSuivi) => {\n return await this.constellation.suivreBd({\n id: siteId,\n type: 'keyvalue',\n f: async x => fSuivi(await x.get('swarmId')),\n schéma: OrbiterSiteDbSchema,\n });\n },\n x => typeof x === 'string',\n )) as string;\n\n const swarmSchema = this.getSwarmDbSchema({\n ...variableIds,\n swarmId: swarmId,\n });\n\n return {\n modDbId,\n swarmId,\n swarmSchema,\n };\n }\n\n async followSiteSwarmId({\n f,\n siteId,\n }: {\n f: (x: string) => void;\n siteId?: string;\n }): Promise {\n // Use this site's id if none is given\n if (!siteId) ({siteId} = await this.siteConfigured());\n\n return await this.constellation.suivreBdDic({\n id: siteId,\n schéma: ROOT_DB_JSON_SCHEMA,\n f: x => {\n const swarmId = x['swarmId'];\n if (typeof swarmId === 'string') f(swarmId);\n },\n });\n }\n\n async followSiteModDbId({\n f,\n siteId,\n }: {\n f: (x: string) => void;\n siteId?: string;\n }): Promise {\n // Use this site's id if none is given\n if (!siteId) ({siteId} = await this.siteConfigured());\n\n return await this.constellation.suivreBdDic({\n id: siteId,\n schéma: ROOT_DB_JSON_SCHEMA,\n f: x => {\n const swarmId = x['modDb'];\n if (typeof swarmId === 'string') f(swarmId);\n },\n });\n }\n\n // Accessing network data\n async followTrustedSites({\n f,\n }: {\n f: (sites?: tableaux.élémentDonnées[]) => void;\n }): Promise {\n const {siteId} = await this.siteConfigured();\n\n return await suivreBdDeFonction({\n fRacine: async ({\n fSuivreRacine,\n }: {\n fSuivreRacine: (nouvelIdBdCible?: string | undefined) => Promise;\n }): Promise => {\n return await this.constellation.suivreBd({\n id: siteId,\n f: async x => await fSuivreRacine(await x.get('modDb')),\n type: 'keyvalue',\n schéma: OrbiterSiteDbSchema,\n });\n },\n f,\n fSuivre: async ({\n id,\n fSuivreBd,\n }: {\n id: string;\n fSuivreBd: types.schémaFonctionSuivi[] | undefined>;\n }) => {\n return this.constellation.bds.suivreDonnéesDeTableauParClef({\n idBd: id,\n clefTableau: TRUSTED_SITES_TABLE_KEY,\n f: fSuivreBd,\n });\n },\n });\n }\n\n async listenForSiteBlockedReleases({\n f,\n siteId,\n }: {\n f: (releases?: {cid: string; id: string}[]) => void;\n siteId?: string;\n }): Promise {\n return await suivreBdDeFonction({\n fRacine: async ({\n fSuivreRacine,\n }: {\n fSuivreRacine: (nouvelIdBdCible?: string) => Promise;\n }): Promise => {\n return await this.followSiteModDbId({\n f: fSuivreRacine,\n siteId,\n });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({\n id,\n fSuivreBd,\n }: {\n id: string;\n fSuivreBd: types.schémaFonctionSuivi<{cid: string; id: string}[] | undefined>;\n }): Promise => {\n return await this.constellation.bds.suivreDonnéesDeTableauParClef({\n idBd: id,\n clefTableau: BLOCKED_RELEASES_TABLE_KEY,\n f: async blocked => {\n if (blocked)\n await fSuivreBd(\n blocked.map(b => {\n return {\n cid: b.données[BLOCKED_RELEASES_RELEASE_ID_COLUMN],\n id: b.id,\n };\n }),\n );\n },\n });\n },\n });\n }\n\n async listenForSiteReleases({\n f,\n siteId,\n desiredNResults = 1000,\n }: {\n f: types.schémaFonctionSuivi<{release: ReleaseWithId; contributor: string}[]>;\n siteId?: string;\n desiredNResults?: number;\n }): Promise {\n return await suivreBdDeFonction({\n fRacine: async ({\n fSuivreRacine,\n }: {\n fSuivreRacine: (nouvelIdBdCible?: string) => Promise;\n }): Promise => {\n return await this.followSiteSwarmId({\n f: fSuivreRacine,\n siteId,\n });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({\n id,\n fSuivreBd,\n }: {\n id: string;\n fSuivreBd: types.schémaFonctionSuivi<{release: ReleaseWithId; contributor: string}[]>;\n }): Promise => {\n const {fOublier} = await this.constellation.nuées.suivreDonnéesTableauNuée({\n idNuée: id,\n clefTableau: RELEASES_DB_TABLE_KEY,\n f: releases =>\n fSuivreBd(\n releases.map(r => ({\n release: {\n release: r.élément.données,\n id: r.élément.id,\n },\n contributor: r.idCompte,\n })),\n ),\n nRésultatsDésirés: desiredNResults,\n clefsSelonVariables: false,\n });\n return fOublier;\n },\n });\n }\n\n async listenForSiteCollections({\n f,\n siteId,\n desiredNResults = 1000,\n }: {\n f: types.schémaFonctionSuivi<{collection: CollectionWithId; contributor: string}[]>;\n siteId?: string;\n desiredNResults?: number;\n }): Promise {\n return await suivreBdDeFonction({\n fRacine: async ({\n fSuivreRacine,\n }: {\n fSuivreRacine: (nouvelIdBdCible?: string) => Promise;\n }): Promise => {\n return await this.followSiteSwarmId({\n f: fSuivreRacine,\n siteId,\n });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({\n id,\n fSuivreBd,\n }: {\n id: string;\n fSuivreBd: types.schémaFonctionSuivi<{collection: CollectionWithId; contributor: string}[]>;\n }): Promise => {\n const {fOublier} = await this.constellation.nuées.suivreDonnéesTableauNuée({\n idNuée: id,\n clefTableau: COLLECTIONS_DB_TABLE_KEY,\n f: collections =>\n fSuivreBd(\n collections.map(c => ({\n collection: {\n collection: c.élément.données,\n id: c.élément.id,\n },\n contributor: c.idCompte,\n })),\n ),\n nRésultatsDésirés: desiredNResults,\n clefsSelonVariables: false,\n });\n return fOublier;\n },\n });\n }\n\n async listenForSiteFeaturedReleases({\n f,\n siteId,\n }: {\n f: types.schémaFonctionSuivi<{id: string, featured: FeaturedRelease}[]>;\n siteId?: string;\n }): Promise {\n return await suivreBdDeFonction({\n fRacine: async ({\n fSuivreRacine,\n }: {\n fSuivreRacine: (nouvelIdBdCible?: string) => Promise;\n }): Promise => {\n return await this.followSiteSwarmId({\n f: fSuivreRacine,\n siteId,\n });\n },\n f: ignorerNonDéfinis(f),\n fSuivre: async ({\n id,\n fSuivreBd,\n }: {\n id: string;\n fSuivreBd: types.schémaFonctionSuivi<{id: string, featured: FeaturedRelease}[]>;\n }): Promise => {\n const {fOublier} = await this.constellation.nuées.suivreDonnéesTableauNuée({\n idNuée: id,\n clefTableau: FEATURED_RELEASES_TABLE_KEY,\n f: featured =>\n fSuivreBd(\n featured.map(x =>({id: x.élément.id, featured: x.élément.données})),\n ),\n clefsSelonVariables: false,\n });\n return fOublier;\n },\n });\n }\n\n async listenForReleases({\n f,\n }: {\n f: types.schémaFonctionSuivi<{release: ReleaseWithId; contributor: string; site: string}[]>;\n }): Promise {\n const {siteId} = await this.siteConfigured();\n\n type SiteInfo = {\n blockedCids?: string[];\n entries?: {release: ReleaseWithId; contributor: string}[];\n fForget?: forgetFunction;\n };\n const siteInfos: {[site: string]: SiteInfo} = {};\n\n let cancelled = false;\n const lock = new Lock();\n\n const fFinal = async () => {\n const blockedCids = Object.values(siteInfos)\n .map(s => s.blockedCids || [])\n .flat();\n const releases = Object.entries(siteInfos)\n .map(s => (s[1].entries || []).map(r => ({...r, site: s[0]})))\n .flat()\n .filter(r => !blockedCids.includes(r.release.release.file));\n await f(releases);\n };\n\n const fFollowTrustedSites = async (sites?: tableaux.élémentDonnées[]) => {\n const sitesList = (sites || []).map(s => s.données);\n sitesList.push({\n [TRUSTED_SITES_SITE_ID_COL]: siteId,\n [TRUSTED_SITES_NAME_COL]: 'Me !',\n });\n\n await lock.acquire();\n if (cancelled) return;\n\n const newSites = sitesList.filter(s => !Object.keys(siteInfos).includes(s.siteName));\n const obsoleteSites = Object.keys(siteInfos).filter(\n s => !sitesList.some(x => x.siteName === s),\n );\n\n for (const site of newSites) {\n const fsForgetSite: types.schémaFonctionOublier[] = [];\n\n const {siteName} = site;\n siteInfos[siteName] = {};\n this.listenForSiteBlockedReleases({\n f: async cids => {\n siteInfos[siteName].blockedCids = cids?.map(c => c.cid);\n await fFinal();\n },\n siteId: site.siteId,\n }).then(fForget => fsForgetSite.push(fForget));\n\n this.listenForSiteReleases({\n f: async entries => {\n siteInfos[siteName].entries = entries;\n await fFinal();\n },\n siteId: site.siteId,\n }).then(fOublier => fsForgetSite.push(fOublier));\n\n siteInfos[siteName].fForget = async () => {\n await Promise.all(fsForgetSite.map(f => f()));\n };\n await fFinal();\n }\n for (const site of obsoleteSites) {\n const {fForget} = siteInfos[site];\n if (fForget) await fForget();\n delete siteInfos[site];\n }\n\n await fFinal();\n lock.release();\n };\n\n // Need to call once manually to get the user's own entries to show even if user is offline or\n // the site's master databases are unreachable.\n await fFollowTrustedSites();\n\n let forgetTrustedSites: types.schémaFonctionOublier;\n this.followTrustedSites({f: fFollowTrustedSites}).then(\n fForget => (forgetTrustedSites = fForget),\n );\n\n const fForget = async () => {\n cancelled = true;\n if (forgetTrustedSites) await forgetTrustedSites();\n await Promise.all(\n Object.values(siteInfos).map(s => (s.fForget ? s.fForget() : Promise.resolve())),\n );\n };\n\n return fForget;\n }\n\n // Todo: refactor listenForReleases, listenForCollections, and listenForFeaturedReleases to remove duplicated code\n async listenForCollections({\n f,\n }: {\n f: types.schémaFonctionSuivi<\n {collection: CollectionWithId; contributor: string; site: string}[]\n >;\n }): Promise {\n const {siteId} = await this.siteConfigured();\n\n type SiteInfo = {\n entries?: {collection: CollectionWithId; contributor: string}[];\n fForget?: forgetFunction;\n };\n const siteInfos: {[site: string]: SiteInfo} = {};\n\n let cancelled = false;\n const lock = new Lock();\n\n const fFinal = async () => {\n const collections = Object.entries(siteInfos)\n .map(s => (s[1].entries || []).map(r => ({...r, site: s[0]})))\n .flat();\n await f(collections);\n };\n\n const fFollowTrustedSites = async (sites?: tableaux.élémentDonnées[]) => {\n const sitesList = (sites || []).map(s => s.données);\n sitesList.push({\n [TRUSTED_SITES_SITE_ID_COL]: siteId,\n [TRUSTED_SITES_NAME_COL]: 'Me !',\n });\n\n await lock.acquire();\n if (cancelled) return;\n\n const newSites = sitesList.filter(s => !Object.keys(siteInfos).includes(s.siteName));\n const obsoleteSites = Object.keys(siteInfos).filter(\n s => !sitesList.some(x => x.siteName === s),\n );\n\n for (const site of newSites) {\n const fsForgetSite: types.schémaFonctionOublier[] = [];\n\n const {siteName} = site;\n siteInfos[siteName] = {};\n\n this.listenForSiteCollections({\n f: async entries => {\n siteInfos[siteName].entries = entries;\n await fFinal();\n },\n siteId: site.siteId,\n }).then(fOublier => fsForgetSite.push(fOublier));\n\n siteInfos[siteName].fForget = async () => {\n await Promise.all(fsForgetSite.map(f => f()));\n };\n await fFinal();\n }\n for (const site of obsoleteSites) {\n const {fForget} = siteInfos[site];\n if (fForget) await fForget();\n delete siteInfos[site];\n }\n\n await fFinal();\n lock.release();\n };\n\n // Need to call once manually to get the user's own entries to show even if user is offline or\n // the site's master databases are unreachable.\n await fFollowTrustedSites();\n\n let forgetTrustedSites: types.schémaFonctionOublier;\n this.followTrustedSites({f: fFollowTrustedSites}).then(\n fForget => (forgetTrustedSites = fForget),\n );\n\n const fForget = async () => {\n cancelled = true;\n if (forgetTrustedSites) await forgetTrustedSites();\n await Promise.all(\n Object.values(siteInfos).map(s => (s.fForget ? s.fForget() : Promise.resolve())),\n );\n };\n\n return fForget;\n }\n\n async listenForFeaturedReleases({\n f,\n }: {\n f: types.schémaFonctionSuivi;\n }): Promise {\n const {siteId} = await this.siteConfigured();\n\n // Todo: implement filtering of other sites' features according to our blocked CID list?\n type SiteInfo = {\n featuredReleases?: FeaturedRelease[];\n fForget?: forgetFunction;\n };\n const siteInfos: {[site: string]: SiteInfo} = {};\n\n let cancelled = false;\n const lock = new Lock();\n\n const fFinal = async () => {\n const releases = Object.entries(siteInfos)\n .map(s => (s[1].featuredReleases || []).map(r => ({...r, site: s[0]})))\n .flat();\n await f(releases);\n };\n\n const fFollowTrustedSites = async (sites?: tableaux.élémentDonnées[]) => {\n const sitesList = (sites || []).map(s => s.données);\n sitesList.push({\n [TRUSTED_SITES_SITE_ID_COL]: siteId,\n [TRUSTED_SITES_NAME_COL]: 'Me !',\n });\n\n await lock.acquire();\n if (cancelled) return;\n\n const newSites = sitesList.filter(s => !Object.keys(siteInfos).includes(s.siteName));\n const obsoleteSites = Object.keys(siteInfos).filter(\n s => !sitesList.some(x => x.siteName === s),\n );\n\n for (const site of newSites) {\n const fsForgetSite: types.schémaFonctionOublier[] = [];\n\n const {siteName} = site;\n siteInfos[siteName] = {};\n\n this.listenForSiteFeaturedReleases({\n f: async entries => {\n siteInfos[siteName].featuredReleases = entries.map(x=>x.featured);\n await fFinal();\n },\n siteId: site.siteId,\n }).then(fOublier => fsForgetSite.push(fOublier));\n\n siteInfos[siteName].fForget = async () => {\n await Promise.all(fsForgetSite.map(f => f()));\n };\n await fFinal();\n }\n for (const site of obsoleteSites) {\n const {fForget} = siteInfos[site];\n if (fForget) await fForget();\n delete siteInfos[site];\n }\n\n await fFinal();\n lock.release();\n };\n\n // Need to call once manually to get the user's own entries to show even if user is offline or\n // the site's master databases are unreachable.\n await fFollowTrustedSites();\n\n let forgetTrustedSites: types.schémaFonctionOublier;\n this.followTrustedSites({f: fFollowTrustedSites}).then(\n fForget => (forgetTrustedSites = fForget),\n );\n\n const fForget = async () => {\n cancelled = true;\n if (forgetTrustedSites) await forgetTrustedSites();\n await Promise.all(\n Object.values(siteInfos).map(s => (s.fForget ? s.fForget() : Promise.resolve())),\n );\n };\n\n return fForget;\n }\n\n // User functionalities - adding and editing content\n\n async addRelease(release: Release): Promise {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n await this.constellation.bds.ajouterÉlémentÀTableauUnique({\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: RELEASES_DB_TABLE_KEY,\n vals: removeUndefined(release),\n });\n }\n\n async removeRelease(releaseId: string) {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n await this.constellation.bds.effacerÉlémentDeTableauUnique({\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: RELEASES_DB_TABLE_KEY,\n idÉlément: releaseId,\n });\n }\n\n async editRelease({\n release,\n releaseId,\n }: {\n release: Partial;\n releaseId: string;\n }): Promise {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n return await this.constellation.bds.modifierÉlémentDeTableauUnique({\n vals: release,\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: RELEASES_DB_TABLE_KEY,\n idÉlément: releaseId,\n });\n }\n\n async addCollection(collection: Collection): Promise {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n await this.constellation.bds.ajouterÉlémentÀTableauUnique({\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: COLLECTIONS_DB_TABLE_KEY,\n vals: removeUndefined(collection),\n });\n }\n\n async removeCollection(collectionId: string) {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n await this.constellation.bds.effacerÉlémentDeTableauUnique({\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: COLLECTIONS_DB_TABLE_KEY,\n idÉlément: collectionId,\n });\n }\n\n async editCollection({\n collection,\n collectionId,\n }: {\n collection: Partial;\n collectionId: string;\n }): Promise {\n const {swarmId, swarmSchema} = await this.orbiterConfig();\n\n return await this.constellation.bds.modifierÉlémentDeTableauUnique({\n vals: collection,\n schémaBd: swarmSchema,\n idNuéeUnique: swarmId,\n clefTableau: COLLECTIONS_DB_TABLE_KEY,\n idÉlément: collectionId,\n });\n }\n\n async getCollectionReleasesSetId({collectionId}: {collectionId: string}): Promise {\n const collections = await uneFois(\n async (\n fSuivi: types.schémaFonctionSuivi,\n ): Promise => {\n return await this.listenForCollections({\n f: async collections => fSuivi(collections.map(c => c.collection)),\n });\n },\n );\n const collection = collections.find(c => c.id === collectionId);\n if (!collection) throw new Error('Collection not found.');\n return collection.collection[COLLECTIONS_RELEASES_COLUMN];\n }\n\n async addReleaseToCollection({\n releaseId,\n collectionId,\n }: {\n releaseId: string;\n collectionId: string;\n }): Promise {\n const collectionReleases = await this.getCollectionReleasesSetId({collectionId});\n await this.constellation.orbite.appliquerFonctionBdOrbite({\n idBd: collectionReleases,\n fonction: 'add',\n args: [releaseId],\n });\n }\n\n async removeReleaseFromCollection({\n releaseId,\n collectionId,\n }: {\n releaseId: string;\n collectionId: string;\n }): Promise {\n const collectionReleases = await this.getCollectionReleasesSetId({collectionId});\n await this.constellation.orbite.appliquerFonctionBdOrbite({\n idBd: collectionReleases,\n fonction: 'remove',\n args: [releaseId],\n });\n }\n\n // User profile functions\n async changeName({name, language}: {name?: string; language: string}): Promise {\n if (name) await this.constellation.profil.sauvegarderNom({langue: language, nom: name});\n else await this.constellation.profil.effacerNom({langue: language});\n }\n\n async changeProfilePhoto({\n image,\n }: {\n image?: {contenu: Uint8Array; nomFichier: string};\n }): Promise {\n if (image) return await this.constellation.profil.sauvegarderImage({image});\n else return await this.constellation.profil.effacerImage();\n }\n\n async addContactInfo({type, contact}: {type: string; contact: string}): Promise {\n return await this.constellation.profil.sauvegarderContact({type, contact});\n }\n\n async removeContactInfo({type, contact}: {type: string; contact?: string}): Promise {\n return await this.constellation.profil.effacerContact({type, contact});\n }\n\n async deleteAccount(): Promise {\n return await this.constellation.fermerCompte();\n }\n\n async listenForAccountId({f}: {f: (account?: string) => void}): Promise {\n return await this.constellation.suivreIdCompte({f});\n }\n\n async listenForAccountExists({f}: {f: (exists: boolean) => void}): Promise {\n return await this.constellation.profil.suivreInitialisé({f});\n }\n\n async listenForNameChange({\n f,\n accountId,\n }: {\n f: (name: {[language: string]: string}) => void;\n accountId?: string;\n }): Promise {\n return await this.constellation.profil.suivreNoms({\n f,\n idCompte: accountId,\n });\n }\n\n async listenForContactInfoChange({\n f,\n accountId,\n }: {\n f: types.schémaFonctionSuivi<{type: string; contact: string}[]>;\n accountId?: string;\n }): Promise {\n return await this.constellation.profil.suivreContacts({\n f,\n idCompte: accountId,\n });\n }\n\n async listenForProfilePhotoChange({\n f,\n accountId,\n }: {\n f: types.schémaFonctionSuivi;\n accountId?: string;\n }): Promise {\n return await this.constellation.profil.suivreImage({f, idCompte: accountId});\n }\n\n // Site moderator functions. Moderators can moderate content and exclude/invite other useres.\n // Admins can do all that and also invite other admins and moderators.\n\n async featureRelease({\n cid,\n startTime,\n endTime,\n }: {\n cid: string;\n startTime: number;\n endTime: number;\n }) {\n const {modDbId} = await this.orbiterConfig();\n\n return (\n await this.constellation.bds.ajouterÉlémentÀTableauParClef({\n idBd: modDbId,\n clefTableau: FEATURED_RELEASES_TABLE_KEY,\n vals: {\n [FEATURED_RELEASES_RELEASE_ID_COLUMN]: cid,\n [FEATURED_RELEASES_START_TIME_COLUMN]: startTime,\n [FEATURED_RELEASES_END_TIME_COLUMN]: endTime,\n },\n })\n )[0];\n }\n\n async listenToIsModerator({\n f,\n userId,\n }: {\n f: (isMod: 'ADMIN' | 'MODERATOR' | undefined) => void;\n userId?: string;\n }): Promise {\n // User current user if none is specified.\n userId = userId || (await this.constellation.obtIdCompte());\n const {siteId} = await this.siteConfigured();\n\n const resolveModType = (x?: 'MODÉRATEUR' | 'MEMBRE'): 'ADMIN' | 'MODERATOR' | undefined => {\n return x === 'MODÉRATEUR' ? 'ADMIN' : x === 'MEMBRE' ? 'MODERATOR' : undefined;\n };\n\n return await this.constellation.suivreAccèsBd({\n id: siteId,\n f: x => f(resolveModType(x.find(y => y.idCompte === userId)?.rôle)),\n });\n }\n\n async inviteModerator({userId, admin = false}: {userId: string; admin?: boolean}): Promise {\n // Invitations are not revocable ! They can, however, be upgraded (moderator => admin), though not downgraded.\n\n const {siteId} = await this.siteConfigured();\n const {modDbId, swarmId} = await this.orbiterConfig();\n\n await this.constellation.nuées.inviterAuteur({\n idNuée: swarmId,\n idCompteAuteur: userId,\n rôle: admin ? 'MODÉRATEUR' : 'MEMBRE',\n });\n await this.constellation.bds.inviterAuteur({\n idBd: modDbId,\n idCompteAuteur: userId,\n rôle: admin ? 'MODÉRATEUR' : 'MEMBRE',\n });\n if (admin) {\n await this.constellation.donnerAccès({idBd: siteId, identité: userId, rôle: 'MODÉRATEUR'});\n }\n }\n\n async blockRelease({cid}: {cid: string}): Promise {\n const {modDbId} = await this.orbiterConfig();\n\n return (\n await this.constellation.bds.ajouterÉlémentÀTableauParClef({\n idBd: modDbId,\n clefTableau: BLOCKED_RELEASES_TABLE_KEY,\n vals: {[BLOCKED_RELEASES_RELEASE_ID_COLUMN]: cid},\n })\n )[0];\n }\n\n async unblockRelease({id}: {id: string}): Promise {\n const {modDbId} = await this.orbiterConfig();\n\n await this.constellation.bds.effacerÉlémentDeTableauParClef({\n idBd: modDbId,\n clefTableau: BLOCKED_RELEASES_TABLE_KEY,\n idÉlément: id,\n });\n }\n\n async makeSitePrivate(): Promise {\n const {swarmId} = await this.orbiterConfig();\n\n // Both releases and collections swarms share the same swarm and authorisation rules, so changing one will update both\n const authId = await this.constellation.nuées.obtGestionnaireAutorisationsDeNuée({\n idNuée: swarmId,\n });\n await this.constellation.nuées.changerPhisolophieAutorisation({\n idAutorisation: authId,\n philosophie: 'CJPI',\n });\n }\n\n async makeSitePublic(): Promise {\n const {swarmId} = await this.orbiterConfig();\n\n // Both releases and collections swarms share the same swarm and authorisation rules, so changing one will update both\n const authId = await this.constellation.nuées.obtGestionnaireAutorisationsDeNuée({\n idNuée: swarmId,\n });\n await this.constellation.nuées.changerPhisolophieAutorisation({\n idAutorisation: authId,\n philosophie: 'IJPC',\n });\n }\n\n async inviteUser({userId}: {userId: string}): Promise {\n const {swarmId} = await this.orbiterConfig();\n\n // Both releases and collections swarms share the same swarm and authorisation rules, so changing one will update both\n await this.constellation.nuées.accepterMembreNuée({\n idNuée: swarmId,\n idCompte: userId,\n });\n }\n\n async blockUser({userId}: {userId: string}): Promise {\n const {swarmId} = await this.orbiterConfig();\n\n // Both releases and collections swarms share the same swarm and authorisation rules, so changing one will update both\n await this.constellation.nuées.exclureMembreDeNuée({\n idNuée: swarmId,\n idCompte: userId,\n });\n }\n\n async trustSite({siteId, siteName}: {siteName: string; siteId: string}): Promise {\n const {modDbId} = await this.orbiterConfig();\n\n const elementIds = await this.constellation.bds.ajouterÉlémentÀTableauParClef({\n idBd: modDbId,\n clefTableau: TRUSTED_SITES_TABLE_KEY,\n vals: {\n [TRUSTED_SITES_SITE_ID_COL]: siteId,\n [TRUSTED_SITES_NAME_COL]: siteName,\n },\n });\n return elementIds[0];\n }\n\n async editTrustedSite({elementId, site}: {elementId: string; site: Partial}) {\n const {modDbId} = await this.orbiterConfig();\n\n await this.constellation.bds.modifierÉlémentDeTableauParClef({\n idBd: modDbId,\n clefTableau: TRUSTED_SITES_TABLE_KEY,\n idÉlément: elementId,\n vals: site,\n });\n }\n\n async untrustSite({elementId}: {elementId: string}) {\n const {modDbId} = await this.orbiterConfig();\n await this.constellation.bds.effacerÉlémentDeTableauParClef({\n idBd: modDbId,\n clefTableau: TRUSTED_SITES_TABLE_KEY,\n idÉlément: elementId,\n });\n }\n}\n","import type {App} from 'vue';\nimport {loadStubData} from './dev/index.js';\nimport OrbiterApp from './orbiter';\nimport type {possiblyIncompleteVariableIds} from './types';\n\nexport default {\n install: (app: App) => {\n const variableIds = getVariableIds();\n const constellation = app.config.globalProperties.$constl;\n\n const orbiterApp = new OrbiterApp({\n constellation,\n siteId: variableIds ? import.meta.env.VITE_SITE_ID : undefined,\n swarmId: variableIds ? import.meta.env.VITE_SWARM_ID : undefined,\n variableIds,\n });\n app.config.globalProperties.$orbiter = orbiterApp;\n\n if (import.meta.env.VITE_STUB_DATA) {\n loadStubData(orbiterApp);\n }\n\n app.provide('orbiter', orbiterApp);\n },\n};\n\nconst getVariableIds = (): possiblyIncompleteVariableIds => {\n const {\n VITE_TRUSTED_SITES_SITE_ID_VAR_ID,\n VITE_TRUSTED_SITES_NAME_VAR_ID,\n VITE_RELEASES_FILE_VAR_ID,\n VITE_RELEASES_CATEGORY_VAR_ID,\n VITE_RELEASES_AUTHOR_VAR_ID,\n VITE_RELEASES_CONTENT_NAME_VAR_ID,\n VITE_RELEASES_METADATA_VAR_ID,\n VITE_RELEASES_THUMBNAIL_VAR_ID,\n VITE_RELEASES_STATUS_VAR_ID,\n VITE_COLLECTIONS_AUTHOR_VAR_ID,\n VITE_COLLECTIONS_METADATA_VAR_ID,\n VITE_COLLECTIONS_NAME_VAR_ID,\n VITE_COLLECTIONS_RELEASES_VAR_ID,\n VITE_COLLECTIONS_THUMBNAIL_VAR_ID,\n VITE_COLLECTIONS_CATEGORY_VAR_ID,\n VITE_COLLECTIONS_STATUS_VAR_ID,\n VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID,\n VITE_FEATURED_RELEASES_START_TIME_VAR_ID,\n VITE_FEATURED_RELEASES_END_TIME_VAR_ID,\n } = import.meta.env;\n\n const variableIds: possiblyIncompleteVariableIds = {\n trustedSitesSiteIdVariableId: VITE_TRUSTED_SITES_SITE_ID_VAR_ID,\n trustedSitesNameVariableId: VITE_TRUSTED_SITES_NAME_VAR_ID,\n\n releasesFileVar: VITE_RELEASES_FILE_VAR_ID,\n releasesCategoryVar: VITE_RELEASES_CATEGORY_VAR_ID,\n releasesAuthorVar: VITE_RELEASES_AUTHOR_VAR_ID,\n releasesContentNameVar: VITE_RELEASES_CONTENT_NAME_VAR_ID,\n releasesMetadataVar: VITE_RELEASES_METADATA_VAR_ID,\n releasesThumbnailVar: VITE_RELEASES_THUMBNAIL_VAR_ID,\n releasesStatusVar: VITE_RELEASES_STATUS_VAR_ID,\n\n collectionsAuthorVar: VITE_COLLECTIONS_AUTHOR_VAR_ID,\n collectionsMetadataVar: VITE_COLLECTIONS_METADATA_VAR_ID,\n collectionsNameVar: VITE_COLLECTIONS_NAME_VAR_ID,\n collectionsReleasesVar: VITE_COLLECTIONS_RELEASES_VAR_ID,\n collectionsThumbnailVar: VITE_COLLECTIONS_THUMBNAIL_VAR_ID,\n collectionsCategoryVar: VITE_COLLECTIONS_CATEGORY_VAR_ID,\n collectionsStatusVar: VITE_COLLECTIONS_STATUS_VAR_ID,\n\n featuredReleasesReleaseIdVar: VITE_FEATURED_RELEASES_RELEASE_ID_VAR_ID,\n featuredReleasesStartTimeVar: VITE_FEATURED_RELEASES_START_TIME_VAR_ID,\n featuredReleasesEndTimeVar: VITE_FEATURED_RELEASES_END_TIME_VAR_ID,\n };\n\n return variableIds;\n};\n","/**\n * plugins/index.ts\n *\n * Automatically included in `./src/main.ts`\n */\n\n// Plugins\nimport vuetify from '../vuetify';\nimport {loadFonts} from '../webfontloader';\n\nimport orbiter from '../orbiter';\n\n// Types\nimport type {App} from 'vue';\n\nexport function registerPlugins(app: App) {\n loadFonts();\n app.use(vuetify);\n app.use(orbiter);\n}\n","import constellationNavigateur from '../constellation/browser';\nimport {registerPlugins} from './common';\n\n// Types\nimport type {App} from 'vue';\n\nexport function inscrireExtentions(appli: App) {\n appli.use(constellationNavigateur);\n registerPlugins(appli);\n}\n","/*!\n * vue-router v4.4.5\n * (c) 2024 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, shallowReactive, nextTick } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst isBrowser = typeof document !== 'undefined';\n\n/**\n * Allows differentiating lazy components from functional components and vue-class-component\n * @internal\n *\n * @param component\n */\nfunction isRouteComponent(component) {\n return (typeof component === 'object' ||\n 'displayName' in component ||\n 'props' in component ||\n '__vccOpts' in component);\n}\nfunction isESModule(obj) {\n return (obj.__esModule ||\n obj[Symbol.toStringTag] === 'Module' ||\n // support CF with dynamic imports that do not\n // add the Module string tag\n (obj.default && isRouteComponent(obj.default)));\n}\nconst assign = Object.assign;\nfunction applyToParams(fn, params) {\n const newParams = {};\n for (const key in params) {\n const value = params[key];\n newParams[key] = isArray(value)\n ? value.map(fn)\n : fn(value);\n }\n return newParams;\n}\nconst noop = () => { };\n/**\n * Typesafe alternative to Array.isArray\n * https://github.com/microsoft/TypeScript/pull/48228\n */\nconst isArray = Array.isArray;\n\nfunction warn(msg) {\n // avoid using ...args as it breaks in older Edge builds\n const args = Array.from(arguments).slice(1);\n console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\n}\n\n/**\n * Encoding Rules (␣ = Space)\n * - Path: ␣ \" < > # ? { }\n * - Query: ␣ \" < > # & =\n * - Hash: ␣ \" < > `\n *\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\n * defines some extra characters to be encoded. Most browsers do not encode them\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\n * also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`)\n * plus `-._~`. This extra safety should be applied to query by patching the\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\n * encoded everywhere because some browsers like FF encode it when directly\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\n */\n// const EXTRA_RESERVED_RE = /[!'()*]/g\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\nconst HASH_RE = /#/g; // %23\nconst AMPERSAND_RE = /&/g; // %26\nconst SLASH_RE = /\\//g; // %2F\nconst EQUAL_RE = /=/g; // %3D\nconst IM_RE = /\\?/g; // %3F\nconst PLUS_RE = /\\+/g; // %2B\n/**\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\n * seems to be less flexible than not doing so and I can't find out the legacy\n * systems requiring this for regular requests like text/html. In the standard,\n * the encoding of the plus character is only mentioned for\n * application/x-www-form-urlencoded\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\n * leave the plus character as is in queries. To be more flexible, we allow the\n * plus character on the query, but it can also be manually encoded by the user.\n *\n * Resources:\n * - https://url.spec.whatwg.org/#urlencoded-parsing\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\n */\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\nconst ENC_CARET_RE = /%5E/g; // ^\nconst ENC_BACKTICK_RE = /%60/g; // `\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\nconst ENC_PIPE_RE = /%7C/g; // |\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\nconst ENC_SPACE_RE = /%20/g; // }\n/**\n * Encode characters that need to be encoded on the path, search and hash\n * sections of the URL.\n *\n * @internal\n * @param text - string to encode\n * @returns encoded string\n */\nfunction commonEncode(text) {\n return encodeURI('' + text)\n .replace(ENC_PIPE_RE, '|')\n .replace(ENC_BRACKET_OPEN_RE, '[')\n .replace(ENC_BRACKET_CLOSE_RE, ']');\n}\n/**\n * Encode characters that need to be encoded on the hash section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeHash(text) {\n return commonEncode(text)\n .replace(ENC_CURLY_OPEN_RE, '{')\n .replace(ENC_CURLY_CLOSE_RE, '}')\n .replace(ENC_CARET_RE, '^');\n}\n/**\n * Encode characters that need to be encoded query values on the query\n * section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeQueryValue(text) {\n return (commonEncode(text)\n // Encode the space as +, encode the + to differentiate it from the space\n .replace(PLUS_RE, '%2B')\n .replace(ENC_SPACE_RE, '+')\n .replace(HASH_RE, '%23')\n .replace(AMPERSAND_RE, '%26')\n .replace(ENC_BACKTICK_RE, '`')\n .replace(ENC_CURLY_OPEN_RE, '{')\n .replace(ENC_CURLY_CLOSE_RE, '}')\n .replace(ENC_CARET_RE, '^'));\n}\n/**\n * Like `encodeQueryValue` but also encodes the `=` character.\n *\n * @param text - string to encode\n */\nfunction encodeQueryKey(text) {\n return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodePath(text) {\n return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL as a\n * param. This function encodes everything {@link encodePath} does plus the\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\n * string instead.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeParam(text) {\n return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\n}\n/**\n * Decode text using `decodeURIComponent`. Returns the original text if it\n * fails.\n *\n * @param text - string to decode\n * @returns decoded string\n */\nfunction decode(text) {\n try {\n return decodeURIComponent('' + text);\n }\n catch (err) {\n (process.env.NODE_ENV !== 'production') && warn(`Error decoding \"${text}\". Using original value`);\n }\n return '' + text;\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\n/**\n * Transforms a URI into a normalized history location\n *\n * @param parseQuery\n * @param location - URI to normalize\n * @param currentLocation - current absolute location. Allows resolving relative\n * paths. Must start with `/`. Defaults to `/`\n * @returns a normalized history location\n */\nfunction parseURL(parseQuery, location, currentLocation = '/') {\n let path, query = {}, searchString = '', hash = '';\n // Could use URL and URLSearchParams but IE 11 doesn't support it\n // TODO: move to new URL()\n const hashPos = location.indexOf('#');\n let searchPos = location.indexOf('?');\n // the hash appears before the search, so it's not part of the search string\n if (hashPos < searchPos && hashPos >= 0) {\n searchPos = -1;\n }\n if (searchPos > -1) {\n path = location.slice(0, searchPos);\n searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\n query = parseQuery(searchString);\n }\n if (hashPos > -1) {\n path = path || location.slice(0, hashPos);\n // keep the # character\n hash = location.slice(hashPos, location.length);\n }\n // no search and no query\n path = resolveRelativePath(path != null ? path : location, currentLocation);\n // empty path means a relative query or hash `?foo=f`, `#thing`\n return {\n fullPath: path + (searchString && '?') + searchString + hash,\n path,\n query,\n hash: decode(hash),\n };\n}\n/**\n * Stringifies a URL object\n *\n * @param stringifyQuery\n * @param location\n */\nfunction stringifyURL(stringifyQuery, location) {\n const query = location.query ? stringifyQuery(location.query) : '';\n return location.path + (query && '?') + query + (location.hash || '');\n}\n/**\n * Strips off the base from the beginning of a location.pathname in a non-case-sensitive way.\n *\n * @param pathname - location.pathname\n * @param base - base to strip off\n */\nfunction stripBase(pathname, base) {\n // no base or base is not found at the beginning\n if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\n return pathname;\n return pathname.slice(base.length) || '/';\n}\n/**\n * Checks if two RouteLocation are equal. This means that both locations are\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\n * parameters and `hash` are the same\n *\n * @param stringifyQuery - A function that takes a query object of type LocationQueryRaw and returns a string representation of it.\n * @param a - first {@link RouteLocation}\n * @param b - second {@link RouteLocation}\n */\nfunction isSameRouteLocation(stringifyQuery, a, b) {\n const aLastIndex = a.matched.length - 1;\n const bLastIndex = b.matched.length - 1;\n return (aLastIndex > -1 &&\n aLastIndex === bLastIndex &&\n isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\n isSameRouteLocationParams(a.params, b.params) &&\n stringifyQuery(a.query) === stringifyQuery(b.query) &&\n a.hash === b.hash);\n}\n/**\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\n * considered equal to the `RouteRecord` they are aliasing.\n *\n * @param a - first {@link RouteRecord}\n * @param b - second {@link RouteRecord}\n */\nfunction isSameRouteRecord(a, b) {\n // since the original record has an undefined value for aliasOf\n // but all aliases point to the original record, this will always compare\n // the original record\n return (a.aliasOf || a) === (b.aliasOf || b);\n}\nfunction isSameRouteLocationParams(a, b) {\n if (Object.keys(a).length !== Object.keys(b).length)\n return false;\n for (const key in a) {\n if (!isSameRouteLocationParamsValue(a[key], b[key]))\n return false;\n }\n return true;\n}\nfunction isSameRouteLocationParamsValue(a, b) {\n return isArray(a)\n ? isEquivalentArray(a, b)\n : isArray(b)\n ? isEquivalentArray(b, a)\n : a === b;\n}\n/**\n * Check if two arrays are the same or if an array with one single entry is the\n * same as another primitive value. Used to check query and parameters\n *\n * @param a - array of values\n * @param b - array of values or a single value\n */\nfunction isEquivalentArray(a, b) {\n return isArray(b)\n ? a.length === b.length && a.every((value, i) => value === b[i])\n : a.length === 1 && a[0] === b;\n}\n/**\n * Resolves a relative path that starts with `.`.\n *\n * @param to - path location we are resolving\n * @param from - currentLocation.path, should start with `/`\n */\nfunction resolveRelativePath(to, from) {\n if (to.startsWith('/'))\n return to;\n if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) {\n warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\n return to;\n }\n if (!to)\n return from;\n const fromSegments = from.split('/');\n const toSegments = to.split('/');\n const lastToSegment = toSegments[toSegments.length - 1];\n // make . and ./ the same (../ === .., ../../ === ../..)\n // this is the same behavior as new URL()\n if (lastToSegment === '..' || lastToSegment === '.') {\n toSegments.push('');\n }\n let position = fromSegments.length - 1;\n let toPosition;\n let segment;\n for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\n segment = toSegments[toPosition];\n // we stay on the same position\n if (segment === '.')\n continue;\n // go up in the from array\n if (segment === '..') {\n // we can't go below zero, but we still need to increment toPosition\n if (position > 1)\n position--;\n // continue\n }\n // we reached a non-relative path, we stop here\n else\n break;\n }\n return (fromSegments.slice(0, position).join('/') +\n '/' +\n toSegments.slice(toPosition).join('/'));\n}\n/**\n * Initial route location where the router is. Can be used in navigation guards\n * to differentiate the initial navigation.\n *\n * @example\n * ```js\n * import { START_LOCATION } from 'vue-router'\n *\n * router.beforeEach((to, from) => {\n * if (from === START_LOCATION) {\n * // initial navigation\n * }\n * })\n * ```\n */\nconst START_LOCATION_NORMALIZED = {\n path: '/',\n // TODO: could we use a symbol in the future?\n name: undefined,\n params: {},\n query: {},\n hash: '',\n fullPath: '/',\n matched: [],\n meta: {},\n redirectedFrom: undefined,\n};\n\nvar NavigationType;\n(function (NavigationType) {\n NavigationType[\"pop\"] = \"pop\";\n NavigationType[\"push\"] = \"push\";\n})(NavigationType || (NavigationType = {}));\nvar NavigationDirection;\n(function (NavigationDirection) {\n NavigationDirection[\"back\"] = \"back\";\n NavigationDirection[\"forward\"] = \"forward\";\n NavigationDirection[\"unknown\"] = \"\";\n})(NavigationDirection || (NavigationDirection = {}));\n/**\n * Starting location for Histories\n */\nconst START = '';\n// Generic utils\n/**\n * Normalizes a base by removing any trailing slash and reading the base tag if\n * present.\n *\n * @param base - base to normalize\n */\nfunction normalizeBase(base) {\n if (!base) {\n if (isBrowser) {\n // respect tag\n const baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\n }\n else {\n base = '/';\n }\n }\n // ensure leading slash when it was removed by the regex above avoid leading\n // slash with hash because the file could be read from the disk like file://\n // and the leading slash would cause problems\n if (base[0] !== '/' && base[0] !== '#')\n base = '/' + base;\n // remove the trailing slash so all other method can just do `base + fullPath`\n // to build an href\n return removeTrailingSlash(base);\n}\n// remove any character before the hash\nconst BEFORE_HASH_RE = /^[^#]+#/;\nfunction createHref(base, location) {\n return base.replace(BEFORE_HASH_RE, '#') + location;\n}\n\nfunction getElementPosition(el, offset) {\n const docRect = document.documentElement.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n return {\n behavior: offset.behavior,\n left: elRect.left - docRect.left - (offset.left || 0),\n top: elRect.top - docRect.top - (offset.top || 0),\n };\n}\nconst computeScrollPosition = () => ({\n left: window.scrollX,\n top: window.scrollY,\n});\nfunction scrollToPosition(position) {\n let scrollToOptions;\n if ('el' in position) {\n const positionEl = position.el;\n const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\n /**\n * `id`s can accept pretty much any characters, including CSS combinators\n * like `>` or `~`. It's still possible to retrieve elements using\n * `document.getElementById('~')` but it needs to be escaped when using\n * `document.querySelector('#\\\\~')` for it to be valid. The only\n * requirements for `id`s are them to be unique on the page and to not be\n * empty (`id=\"\"`). Because of that, when passing an id selector, it should\n * be properly escaped for it to work with `querySelector`. We could check\n * for the id selector to be simple (no CSS combinators `+ >~`) but that\n * would make things inconsistent since they are valid characters for an\n * `id` but would need to be escaped when using `querySelector`, breaking\n * their usage and ending up in no selector returned. Selectors need to be\n * escaped:\n *\n * - `#1-thing` becomes `#\\31 -thing`\n * - `#with~symbols` becomes `#with\\\\~symbols`\n *\n * - More information about the topic can be found at\n * https://mathiasbynens.be/notes/html5-id-class.\n * - Practical example: https://mathiasbynens.be/demo/html5-id\n */\n if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') {\n if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\n try {\n const foundEl = document.querySelector(position.el);\n if (isIdSelector && foundEl) {\n warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\n // return to avoid other warnings\n return;\n }\n }\n catch (err) {\n warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\n // return to avoid other warnings\n return;\n }\n }\n }\n const el = typeof positionEl === 'string'\n ? isIdSelector\n ? document.getElementById(positionEl.slice(1))\n : document.querySelector(positionEl)\n : positionEl;\n if (!el) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\n return;\n }\n scrollToOptions = getElementPosition(el, position);\n }\n else {\n scrollToOptions = position;\n }\n if ('scrollBehavior' in document.documentElement.style)\n window.scrollTo(scrollToOptions);\n else {\n window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY);\n }\n}\nfunction getScrollKey(path, delta) {\n const position = history.state ? history.state.position - delta : -1;\n return position + path;\n}\nconst scrollPositions = new Map();\nfunction saveScrollPosition(key, scrollPosition) {\n scrollPositions.set(key, scrollPosition);\n}\nfunction getSavedScrollPosition(key) {\n const scroll = scrollPositions.get(key);\n // consume it so it's not used again\n scrollPositions.delete(key);\n return scroll;\n}\n// TODO: RFC about how to save scroll position\n/**\n * ScrollBehavior instance used by the router to compute and restore the scroll\n * position when navigating.\n */\n// export interface ScrollHandler {\n// // returns a scroll position that can be saved in history\n// compute(): ScrollPositionEntry\n// // can take an extended ScrollPositionEntry\n// scroll(position: ScrollPosition): void\n// }\n// export const scrollHandler: ScrollHandler = {\n// compute: computeScroll,\n// scroll: scrollToPosition,\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\n/**\n * Creates a normalized history location from a window.location object\n * @param base - The base path\n * @param location - The window.location object\n */\nfunction createCurrentLocation(base, location) {\n const { pathname, search, hash } = location;\n // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\n const hashPos = base.indexOf('#');\n if (hashPos > -1) {\n let slicePos = hash.includes(base.slice(hashPos))\n ? base.slice(hashPos).length\n : 1;\n let pathFromHash = hash.slice(slicePos);\n // prepend the starting slash to hash so the url starts with /#\n if (pathFromHash[0] !== '/')\n pathFromHash = '/' + pathFromHash;\n return stripBase(pathFromHash, '');\n }\n const path = stripBase(pathname, base);\n return path + search + hash;\n}\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\n let listeners = [];\n let teardowns = [];\n // TODO: should it be a stack? a Dict. Check if the popstate listener\n // can trigger twice\n let pauseState = null;\n const popStateHandler = ({ state, }) => {\n const to = createCurrentLocation(base, location);\n const from = currentLocation.value;\n const fromState = historyState.value;\n let delta = 0;\n if (state) {\n currentLocation.value = to;\n historyState.value = state;\n // ignore the popstate and reset the pauseState\n if (pauseState && pauseState === from) {\n pauseState = null;\n return;\n }\n delta = fromState ? state.position - fromState.position : 0;\n }\n else {\n replace(to);\n }\n // Here we could also revert the navigation by calling history.go(-delta)\n // this listener will have to be adapted to not trigger again and to wait for the url\n // to be updated before triggering the listeners. Some kind of validation function would also\n // need to be passed to the listeners so the navigation can be accepted\n // call all listeners\n listeners.forEach(listener => {\n listener(currentLocation.value, from, {\n delta,\n type: NavigationType.pop,\n direction: delta\n ? delta > 0\n ? NavigationDirection.forward\n : NavigationDirection.back\n : NavigationDirection.unknown,\n });\n });\n };\n function pauseListeners() {\n pauseState = currentLocation.value;\n }\n function listen(callback) {\n // set up the listener and prepare teardown callbacks\n listeners.push(callback);\n const teardown = () => {\n const index = listeners.indexOf(callback);\n if (index > -1)\n listeners.splice(index, 1);\n };\n teardowns.push(teardown);\n return teardown;\n }\n function beforeUnloadListener() {\n const { history } = window;\n if (!history.state)\n return;\n history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\n }\n function destroy() {\n for (const teardown of teardowns)\n teardown();\n teardowns = [];\n window.removeEventListener('popstate', popStateHandler);\n window.removeEventListener('beforeunload', beforeUnloadListener);\n }\n // set up the listeners and prepare teardown callbacks\n window.addEventListener('popstate', popStateHandler);\n // TODO: could we use 'pagehide' or 'visibilitychange' instead?\n // https://developer.chrome.com/blog/page-lifecycle-api/\n window.addEventListener('beforeunload', beforeUnloadListener, {\n passive: true,\n });\n return {\n pauseListeners,\n listen,\n destroy,\n };\n}\n/**\n * Creates a state object\n */\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\n return {\n back,\n current,\n forward,\n replaced,\n position: window.history.length,\n scroll: computeScroll ? computeScrollPosition() : null,\n };\n}\nfunction useHistoryStateNavigation(base) {\n const { history, location } = window;\n // private variables\n const currentLocation = {\n value: createCurrentLocation(base, location),\n };\n const historyState = { value: history.state };\n // build current history entry as this is a fresh navigation\n if (!historyState.value) {\n changeLocation(currentLocation.value, {\n back: null,\n current: currentLocation.value,\n forward: null,\n // the length is off by one, we need to decrease it\n position: history.length - 1,\n replaced: true,\n // don't add a scroll as the user may have an anchor, and we want\n // scrollBehavior to be triggered without a saved position\n scroll: null,\n }, true);\n }\n function changeLocation(to, state, replace) {\n /**\n * if a base tag is provided, and we are on a normal domain, we have to\n * respect the provided `base` attribute because pushState() will use it and\n * potentially erase anything before the `#` like at\n * https://github.com/vuejs/router/issues/685 where a base of\n * `/folder/#` but a base of `/` would erase the `/folder/` section. If\n * there is no host, the `` tag makes no sense and if there isn't a\n * base tag we can just use everything after the `#`.\n */\n const hashIndex = base.indexOf('#');\n const url = hashIndex > -1\n ? (location.host && document.querySelector('base')\n ? base\n : base.slice(hashIndex)) + to\n : createBaseLocation() + base + to;\n try {\n // BROWSER QUIRK\n // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\n history[replace ? 'replaceState' : 'pushState'](state, '', url);\n historyState.value = state;\n }\n catch (err) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn('Error with push/replace State', err);\n }\n else {\n console.error(err);\n }\n // Force the navigation, this also resets the call count\n location[replace ? 'replace' : 'assign'](url);\n }\n }\n function replace(to, data) {\n const state = assign({}, history.state, buildState(historyState.value.back, \n // keep back and forward entries but override current position\n to, historyState.value.forward, true), data, { position: historyState.value.position });\n changeLocation(to, state, true);\n currentLocation.value = to;\n }\n function push(to, data) {\n // Add to current entry the information of where we are going\n // as well as saving the current position\n const currentState = assign({}, \n // use current history state to gracefully handle a wrong call to\n // history.replaceState\n // https://github.com/vuejs/router/issues/366\n historyState.value, history.state, {\n forward: to,\n scroll: computeScrollPosition(),\n });\n if ((process.env.NODE_ENV !== 'production') && !history.state) {\n warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\n `history.replaceState(history.state, '', url)\\n\\n` +\n `You can find more information at https://router.vuejs.org/guide/migration/#Usage-of-history-state`);\n }\n changeLocation(currentState.current, currentState, true);\n const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\n changeLocation(to, state, false);\n currentLocation.value = to;\n }\n return {\n location: currentLocation,\n state: historyState,\n push,\n replace,\n };\n}\n/**\n * Creates an HTML5 history. Most common history for single page applications.\n *\n * @param base -\n */\nfunction createWebHistory(base) {\n base = normalizeBase(base);\n const historyNavigation = useHistoryStateNavigation(base);\n const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\n function go(delta, triggerListeners = true) {\n if (!triggerListeners)\n historyListeners.pauseListeners();\n history.go(delta);\n }\n const routerHistory = assign({\n // it's overridden right after\n location: '',\n base,\n go,\n createHref: createHref.bind(null, base),\n }, historyNavigation, historyListeners);\n Object.defineProperty(routerHistory, 'location', {\n enumerable: true,\n get: () => historyNavigation.location.value,\n });\n Object.defineProperty(routerHistory, 'state', {\n enumerable: true,\n get: () => historyNavigation.state.value,\n });\n return routerHistory;\n}\n\n/**\n * Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\n *\n * @param base - Base applied to all urls, defaults to '/'\n * @returns a history object that can be passed to the router constructor\n */\nfunction createMemoryHistory(base = '') {\n let listeners = [];\n let queue = [START];\n let position = 0;\n base = normalizeBase(base);\n function setLocation(location) {\n position++;\n if (position !== queue.length) {\n // we are in the middle, we remove everything from here in the queue\n queue.splice(position);\n }\n queue.push(location);\n }\n function triggerListeners(to, from, { direction, delta }) {\n const info = {\n direction,\n delta,\n type: NavigationType.pop,\n };\n for (const callback of listeners) {\n callback(to, from, info);\n }\n }\n const routerHistory = {\n // rewritten by Object.defineProperty\n location: START,\n // TODO: should be kept in queue\n state: {},\n base,\n createHref: createHref.bind(null, base),\n replace(to) {\n // remove current entry and decrement position\n queue.splice(position--, 1);\n setLocation(to);\n },\n push(to, data) {\n setLocation(to);\n },\n listen(callback) {\n listeners.push(callback);\n return () => {\n const index = listeners.indexOf(callback);\n if (index > -1)\n listeners.splice(index, 1);\n };\n },\n destroy() {\n listeners = [];\n queue = [START];\n position = 0;\n },\n go(delta, shouldTrigger = true) {\n const from = this.location;\n const direction = \n // we are considering delta === 0 going forward, but in abstract mode\n // using 0 for the delta doesn't make sense like it does in html5 where\n // it reloads the page\n delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\n position = Math.max(0, Math.min(position + delta, queue.length - 1));\n if (shouldTrigger) {\n triggerListeners(this.location, from, {\n direction,\n delta,\n });\n }\n },\n };\n Object.defineProperty(routerHistory, 'location', {\n enumerable: true,\n get: () => queue[position],\n });\n return routerHistory;\n}\n\n/**\n * Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to\n * handle any URL is not possible.\n *\n * @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `` tag\n * in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState()\n * calls**, meaning that if you use a `` tag, it's `href` value **has to match this parameter** (ignoring anything\n * after the `#`).\n *\n * @example\n * ```js\n * // at https://example.com/folder\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\n * // you should avoid doing this because it changes the original url and breaks copying urls\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\n *\n * // at file:///usr/etc/folder/index.html\n * // for locations with no `host`, the base is ignored\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\n * ```\n */\nfunction createWebHashHistory(base) {\n // Make sure this implementation is fine in terms of encoding, specially for IE11\n // for `file://`, directly use the pathname and ignore the base\n // location.pathname contains an initial `/` even at the root: `https://example.com`\n base = location.host ? base || location.pathname + location.search : '';\n // allow the user to provide a `#` in the middle: `/base/#/app`\n if (!base.includes('#'))\n base += '#';\n if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) {\n warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\n }\n return createWebHistory(base);\n}\n\nfunction isRouteLocation(route) {\n return typeof route === 'string' || (route && typeof route === 'object');\n}\nfunction isRouteName(name) {\n return typeof name === 'string' || typeof name === 'symbol';\n}\n\nconst NavigationFailureSymbol = Symbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : '');\n/**\n * Enumeration with all possible types for navigation failures. Can be passed to\n * {@link isNavigationFailure} to check for specific failures.\n */\nvar NavigationFailureType;\n(function (NavigationFailureType) {\n /**\n * An aborted navigation is a navigation that failed because a navigation\n * guard returned `false` or called `next(false)`\n */\n NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\n /**\n * A cancelled navigation is a navigation that failed because a more recent\n * navigation finished started (not necessarily finished).\n */\n NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\n /**\n * A duplicated navigation is a navigation that failed because it was\n * initiated while already being at the exact same location.\n */\n NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\n})(NavigationFailureType || (NavigationFailureType = {}));\n// DEV only debug messages\nconst ErrorTypeMessages = {\n [1 /* ErrorTypes.MATCHER_NOT_FOUND */]({ location, currentLocation }) {\n return `No match for\\n ${JSON.stringify(location)}${currentLocation\n ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\n : ''}`;\n },\n [2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\n return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\n },\n [4 /* ErrorTypes.NAVIGATION_ABORTED */]({ from, to }) {\n return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\n },\n [8 /* ErrorTypes.NAVIGATION_CANCELLED */]({ from, to }) {\n return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\n },\n [16 /* ErrorTypes.NAVIGATION_DUPLICATED */]({ from, to }) {\n return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\n },\n};\n/**\n * Creates a typed NavigationFailure object.\n * @internal\n * @param type - NavigationFailureType\n * @param params - { from, to }\n */\nfunction createRouterError(type, params) {\n // keep full error messages in cjs versions\n if ((process.env.NODE_ENV !== 'production') || !true) {\n return assign(new Error(ErrorTypeMessages[type](params)), {\n type,\n [NavigationFailureSymbol]: true,\n }, params);\n }\n else {\n return assign(new Error(), {\n type,\n [NavigationFailureSymbol]: true,\n }, params);\n }\n}\nfunction isNavigationFailure(error, type) {\n return (error instanceof Error &&\n NavigationFailureSymbol in error &&\n (type == null || !!(error.type & type)));\n}\nconst propertiesToLog = ['params', 'query', 'hash'];\nfunction stringifyRoute(to) {\n if (typeof to === 'string')\n return to;\n if (to.path != null)\n return to.path;\n const location = {};\n for (const key of propertiesToLog) {\n if (key in to)\n location[key] = to[key];\n }\n return JSON.stringify(location, null, 2);\n}\n\n// default pattern for a param: non-greedy everything but /\nconst BASE_PARAM_PATTERN = '[^/]+?';\nconst BASE_PATH_PARSER_OPTIONS = {\n sensitive: false,\n strict: false,\n start: true,\n end: true,\n};\n// Special Regex characters that must be escaped in static tokens\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\n/**\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\n *\n * @param segments - array of segments returned by tokenizePath\n * @param extraOptions - optional options for the regexp\n * @returns a PathParser\n */\nfunction tokensToParser(segments, extraOptions) {\n const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\n // the amount of scores is the same as the length of segments except for the root segment \"/\"\n const score = [];\n // the regexp as a string\n let pattern = options.start ? '^' : '';\n // extracted keys\n const keys = [];\n for (const segment of segments) {\n // the root segment needs special treatment\n const segmentScores = segment.length ? [] : [90 /* PathScore.Root */];\n // allow trailing slash\n if (options.strict && !segment.length)\n pattern += '/';\n for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\n const token = segment[tokenIndex];\n // resets the score if we are inside a sub-segment /:a-other-:b\n let subSegmentScore = 40 /* PathScore.Segment */ +\n (options.sensitive ? 0.25 /* PathScore.BonusCaseSensitive */ : 0);\n if (token.type === 0 /* TokenType.Static */) {\n // prepend the slash if we are starting a new segment\n if (!tokenIndex)\n pattern += '/';\n pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\n subSegmentScore += 40 /* PathScore.Static */;\n }\n else if (token.type === 1 /* TokenType.Param */) {\n const { value, repeatable, optional, regexp } = token;\n keys.push({\n name: value,\n repeatable,\n optional,\n });\n const re = regexp ? regexp : BASE_PARAM_PATTERN;\n // the user provided a custom regexp /:id(\\\\d+)\n if (re !== BASE_PARAM_PATTERN) {\n subSegmentScore += 10 /* PathScore.BonusCustomRegExp */;\n // make sure the regexp is valid before using it\n try {\n new RegExp(`(${re})`);\n }\n catch (err) {\n throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\n err.message);\n }\n }\n // when we repeat we must take care of the repeating leading slash\n let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\n // prepend the slash if we are starting a new segment\n if (!tokenIndex)\n subPattern =\n // avoid an optional / if there are more segments e.g. /:p?-static\n // or /:p?-:p2\n optional && segment.length < 2\n ? `(?:/${subPattern})`\n : '/' + subPattern;\n if (optional)\n subPattern += '?';\n pattern += subPattern;\n subSegmentScore += 20 /* PathScore.Dynamic */;\n if (optional)\n subSegmentScore += -8 /* PathScore.BonusOptional */;\n if (repeatable)\n subSegmentScore += -20 /* PathScore.BonusRepeatable */;\n if (re === '.*')\n subSegmentScore += -50 /* PathScore.BonusWildcard */;\n }\n segmentScores.push(subSegmentScore);\n }\n // an empty array like /home/ -> [[{home}], []]\n // if (!segment.length) pattern += '/'\n score.push(segmentScores);\n }\n // only apply the strict bonus to the last score\n if (options.strict && options.end) {\n const i = score.length - 1;\n score[i][score[i].length - 1] += 0.7000000000000001 /* PathScore.BonusStrict */;\n }\n // TODO: dev only warn double trailing slash\n if (!options.strict)\n pattern += '/?';\n if (options.end)\n pattern += '$';\n // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\n else if (options.strict)\n pattern += '(?:/|$)';\n const re = new RegExp(pattern, options.sensitive ? '' : 'i');\n function parse(path) {\n const match = path.match(re);\n const params = {};\n if (!match)\n return null;\n for (let i = 1; i < match.length; i++) {\n const value = match[i] || '';\n const key = keys[i - 1];\n params[key.name] = value && key.repeatable ? value.split('/') : value;\n }\n return params;\n }\n function stringify(params) {\n let path = '';\n // for optional parameters to allow to be empty\n let avoidDuplicatedSlash = false;\n for (const segment of segments) {\n if (!avoidDuplicatedSlash || !path.endsWith('/'))\n path += '/';\n avoidDuplicatedSlash = false;\n for (const token of segment) {\n if (token.type === 0 /* TokenType.Static */) {\n path += token.value;\n }\n else if (token.type === 1 /* TokenType.Param */) {\n const { value, repeatable, optional } = token;\n const param = value in params ? params[value] : '';\n if (isArray(param) && !repeatable) {\n throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\n }\n const text = isArray(param)\n ? param.join('/')\n : param;\n if (!text) {\n if (optional) {\n // if we have more than one optional param like /:a?-static we don't need to care about the optional param\n if (segment.length < 2) {\n // remove the last slash as we could be at the end\n if (path.endsWith('/'))\n path = path.slice(0, -1);\n // do not append a slash on the next iteration\n else\n avoidDuplicatedSlash = true;\n }\n }\n else\n throw new Error(`Missing required param \"${value}\"`);\n }\n path += text;\n }\n }\n }\n // avoid empty path when we have multiple optional params\n return path || '/';\n }\n return {\n re,\n score,\n keys,\n parse,\n stringify,\n };\n}\n/**\n * Compares an array of numbers as used in PathParser.score and returns a\n * number. This function can be used to `sort` an array\n *\n * @param a - first array of numbers\n * @param b - second array of numbers\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n * should be sorted first\n */\nfunction compareScoreArray(a, b) {\n let i = 0;\n while (i < a.length && i < b.length) {\n const diff = b[i] - a[i];\n // only keep going if diff === 0\n if (diff)\n return diff;\n i++;\n }\n // if the last subsegment was Static, the shorter segments should be sorted first\n // otherwise sort the longest segment first\n if (a.length < b.length) {\n return a.length === 1 && a[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n ? -1\n : 1;\n }\n else if (a.length > b.length) {\n return b.length === 1 && b[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n ? 1\n : -1;\n }\n return 0;\n}\n/**\n * Compare function that can be used with `sort` to sort an array of PathParser\n *\n * @param a - first PathParser\n * @param b - second PathParser\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n */\nfunction comparePathParserScore(a, b) {\n let i = 0;\n const aScore = a.score;\n const bScore = b.score;\n while (i < aScore.length && i < bScore.length) {\n const comp = compareScoreArray(aScore[i], bScore[i]);\n // do not return if both are equal\n if (comp)\n return comp;\n i++;\n }\n if (Math.abs(bScore.length - aScore.length) === 1) {\n if (isLastScoreNegative(aScore))\n return 1;\n if (isLastScoreNegative(bScore))\n return -1;\n }\n // if a and b share the same score entries but b has more, sort b first\n return bScore.length - aScore.length;\n // this is the ternary version\n // return aScore.length < bScore.length\n // ? 1\n // : aScore.length > bScore.length\n // ? -1\n // : 0\n}\n/**\n * This allows detecting splats at the end of a path: /home/:id(.*)*\n *\n * @param score - score to check\n * @returns true if the last entry is negative\n */\nfunction isLastScoreNegative(score) {\n const last = score[score.length - 1];\n return score.length > 0 && last[last.length - 1] < 0;\n}\n\nconst ROOT_TOKEN = {\n type: 0 /* TokenType.Static */,\n value: '',\n};\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\n// After some profiling, the cache seems to be unnecessary because tokenizePath\n// (the slowest part of adding a route) is very fast\n// const tokenCache = new Map()\nfunction tokenizePath(path) {\n if (!path)\n return [[]];\n if (path === '/')\n return [[ROOT_TOKEN]];\n if (!path.startsWith('/')) {\n throw new Error((process.env.NODE_ENV !== 'production')\n ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\n : `Invalid path \"${path}\"`);\n }\n // if (tokenCache.has(path)) return tokenCache.get(path)!\n function crash(message) {\n throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\n }\n let state = 0 /* TokenizerState.Static */;\n let previousState = state;\n const tokens = [];\n // the segment will always be valid because we get into the initial state\n // with the leading /\n let segment;\n function finalizeSegment() {\n if (segment)\n tokens.push(segment);\n segment = [];\n }\n // index on the path\n let i = 0;\n // char at index\n let char;\n // buffer of the value read\n let buffer = '';\n // custom regexp for a param\n let customRe = '';\n function consumeBuffer() {\n if (!buffer)\n return;\n if (state === 0 /* TokenizerState.Static */) {\n segment.push({\n type: 0 /* TokenType.Static */,\n value: buffer,\n });\n }\n else if (state === 1 /* TokenizerState.Param */ ||\n state === 2 /* TokenizerState.ParamRegExp */ ||\n state === 3 /* TokenizerState.ParamRegExpEnd */) {\n if (segment.length > 1 && (char === '*' || char === '+'))\n crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\n segment.push({\n type: 1 /* TokenType.Param */,\n value: buffer,\n regexp: customRe,\n repeatable: char === '*' || char === '+',\n optional: char === '*' || char === '?',\n });\n }\n else {\n crash('Invalid state to consume buffer');\n }\n buffer = '';\n }\n function addCharToBuffer() {\n buffer += char;\n }\n while (i < path.length) {\n char = path[i++];\n if (char === '\\\\' && state !== 2 /* TokenizerState.ParamRegExp */) {\n previousState = state;\n state = 4 /* TokenizerState.EscapeNext */;\n continue;\n }\n switch (state) {\n case 0 /* TokenizerState.Static */:\n if (char === '/') {\n if (buffer) {\n consumeBuffer();\n }\n finalizeSegment();\n }\n else if (char === ':') {\n consumeBuffer();\n state = 1 /* TokenizerState.Param */;\n }\n else {\n addCharToBuffer();\n }\n break;\n case 4 /* TokenizerState.EscapeNext */:\n addCharToBuffer();\n state = previousState;\n break;\n case 1 /* TokenizerState.Param */:\n if (char === '(') {\n state = 2 /* TokenizerState.ParamRegExp */;\n }\n else if (VALID_PARAM_RE.test(char)) {\n addCharToBuffer();\n }\n else {\n consumeBuffer();\n state = 0 /* TokenizerState.Static */;\n // go back one character if we were not modifying\n if (char !== '*' && char !== '?' && char !== '+')\n i--;\n }\n break;\n case 2 /* TokenizerState.ParamRegExp */:\n // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\n // it already works by escaping the closing )\n // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\n // is this really something people need since you can also write\n // /prefix_:p()_suffix\n if (char === ')') {\n // handle the escaped )\n if (customRe[customRe.length - 1] == '\\\\')\n customRe = customRe.slice(0, -1) + char;\n else\n state = 3 /* TokenizerState.ParamRegExpEnd */;\n }\n else {\n customRe += char;\n }\n break;\n case 3 /* TokenizerState.ParamRegExpEnd */:\n // same as finalizing a param\n consumeBuffer();\n state = 0 /* TokenizerState.Static */;\n // go back one character if we were not modifying\n if (char !== '*' && char !== '?' && char !== '+')\n i--;\n customRe = '';\n break;\n default:\n crash('Unknown state');\n break;\n }\n }\n if (state === 2 /* TokenizerState.ParamRegExp */)\n crash(`Unfinished custom RegExp for param \"${buffer}\"`);\n consumeBuffer();\n finalizeSegment();\n // tokenCache.set(path, tokens)\n return tokens;\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\n const parser = tokensToParser(tokenizePath(record.path), options);\n // warn against params with the same name\n if ((process.env.NODE_ENV !== 'production')) {\n const existingKeys = new Set();\n for (const key of parser.keys) {\n if (existingKeys.has(key.name))\n warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\n existingKeys.add(key.name);\n }\n }\n const matcher = assign(parser, {\n record,\n parent,\n // these needs to be populated by the parent\n children: [],\n alias: [],\n });\n if (parent) {\n // both are aliases or both are not aliases\n // we don't want to mix them because the order is used when\n // passing originalRecord in Matcher.addRoute\n if (!matcher.record.aliasOf === !parent.record.aliasOf)\n parent.children.push(matcher);\n }\n return matcher;\n}\n\n/**\n * Creates a Router Matcher.\n *\n * @internal\n * @param routes - array of initial routes\n * @param globalOptions - global route options\n */\nfunction createRouterMatcher(routes, globalOptions) {\n // normalized ordered array of matchers\n const matchers = [];\n const matcherMap = new Map();\n globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\n function getRecordMatcher(name) {\n return matcherMap.get(name);\n }\n function addRoute(record, parent, originalRecord) {\n // used later on to remove by name\n const isRootAdd = !originalRecord;\n const mainNormalizedRecord = normalizeRouteRecord(record);\n if ((process.env.NODE_ENV !== 'production')) {\n checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent);\n }\n // we might be the child of an alias\n mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\n const options = mergeOptions(globalOptions, record);\n // generate an array of records to correctly handle aliases\n const normalizedRecords = [mainNormalizedRecord];\n if ('alias' in record) {\n const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\n for (const alias of aliases) {\n normalizedRecords.push(\n // we need to normalize again to ensure the `mods` property\n // being non enumerable\n normalizeRouteRecord(assign({}, mainNormalizedRecord, {\n // this allows us to hold a copy of the `components` option\n // so that async components cache is hold on the original record\n components: originalRecord\n ? originalRecord.record.components\n : mainNormalizedRecord.components,\n path: alias,\n // we might be the child of an alias\n aliasOf: originalRecord\n ? originalRecord.record\n : mainNormalizedRecord,\n // the aliases are always of the same kind as the original since they\n // are defined on the same record\n })));\n }\n }\n let matcher;\n let originalMatcher;\n for (const normalizedRecord of normalizedRecords) {\n const { path } = normalizedRecord;\n // Build up the path for nested routes if the child isn't an absolute\n // route. Only add the / delimiter if the child path isn't empty and if the\n // parent path doesn't have a trailing slash\n if (parent && path[0] !== '/') {\n const parentPath = parent.record.path;\n const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\n normalizedRecord.path =\n parent.record.path + (path && connectingSlash + path);\n }\n if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') {\n throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\n 'See more at https://router.vuejs.org/guide/migration/#Removed-star-or-catch-all-routes.');\n }\n // create the object beforehand, so it can be passed to children\n matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\n if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/')\n checkMissingParamsInAbsolutePath(matcher, parent);\n // if we are an alias we must tell the original record that we exist,\n // so we can be removed\n if (originalRecord) {\n originalRecord.alias.push(matcher);\n if ((process.env.NODE_ENV !== 'production')) {\n checkSameParams(originalRecord, matcher);\n }\n }\n else {\n // otherwise, the first record is the original and others are aliases\n originalMatcher = originalMatcher || matcher;\n if (originalMatcher !== matcher)\n originalMatcher.alias.push(matcher);\n // remove the route if named and only for the top record (avoid in nested calls)\n // this works because the original record is the first one\n if (isRootAdd && record.name && !isAliasRecord(matcher))\n removeRoute(record.name);\n }\n // Avoid adding a record that doesn't display anything. This allows passing through records without a component to\n // not be reached and pass through the catch all route\n if (isMatchable(matcher)) {\n insertMatcher(matcher);\n }\n if (mainNormalizedRecord.children) {\n const children = mainNormalizedRecord.children;\n for (let i = 0; i < children.length; i++) {\n addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\n }\n }\n // if there was no original record, then the first one was not an alias and all\n // other aliases (if any) need to reference this record when adding children\n originalRecord = originalRecord || matcher;\n // TODO: add normalized records for more flexibility\n // if (parent && isAliasRecord(originalRecord)) {\n // parent.children.push(originalRecord)\n // }\n }\n return originalMatcher\n ? () => {\n // since other matchers are aliases, they should be removed by the original matcher\n removeRoute(originalMatcher);\n }\n : noop;\n }\n function removeRoute(matcherRef) {\n if (isRouteName(matcherRef)) {\n const matcher = matcherMap.get(matcherRef);\n if (matcher) {\n matcherMap.delete(matcherRef);\n matchers.splice(matchers.indexOf(matcher), 1);\n matcher.children.forEach(removeRoute);\n matcher.alias.forEach(removeRoute);\n }\n }\n else {\n const index = matchers.indexOf(matcherRef);\n if (index > -1) {\n matchers.splice(index, 1);\n if (matcherRef.record.name)\n matcherMap.delete(matcherRef.record.name);\n matcherRef.children.forEach(removeRoute);\n matcherRef.alias.forEach(removeRoute);\n }\n }\n }\n function getRoutes() {\n return matchers;\n }\n function insertMatcher(matcher) {\n const index = findInsertionIndex(matcher, matchers);\n matchers.splice(index, 0, matcher);\n // only add the original record to the name map\n if (matcher.record.name && !isAliasRecord(matcher))\n matcherMap.set(matcher.record.name, matcher);\n }\n function resolve(location, currentLocation) {\n let matcher;\n let params = {};\n let path;\n let name;\n if ('name' in location && location.name) {\n matcher = matcherMap.get(location.name);\n if (!matcher)\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n location,\n });\n // warn if the user is passing invalid params so they can debug it better when they get removed\n if ((process.env.NODE_ENV !== 'production')) {\n const invalidParams = Object.keys(location.params || {}).filter(paramName => !matcher.keys.find(k => k.name === paramName));\n if (invalidParams.length) {\n warn(`Discarded invalid param(s) \"${invalidParams.join('\", \"')}\" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`);\n }\n }\n name = matcher.record.name;\n params = assign(\n // paramsFromLocation is a new object\n paramsFromLocation(currentLocation.params, \n // only keep params that exist in the resolved location\n // only keep optional params coming from a parent record\n matcher.keys\n .filter(k => !k.optional)\n .concat(matcher.parent ? matcher.parent.keys.filter(k => k.optional) : [])\n .map(k => k.name)), \n // discard any existing params in the current location that do not exist here\n // #1497 this ensures better active/exact matching\n location.params &&\n paramsFromLocation(location.params, matcher.keys.map(k => k.name)));\n // throws if cannot be stringified\n path = matcher.stringify(params);\n }\n else if (location.path != null) {\n // no need to resolve the path with the matcher as it was provided\n // this also allows the user to control the encoding\n path = location.path;\n if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) {\n warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`);\n }\n matcher = matchers.find(m => m.re.test(path));\n // matcher should have a value after the loop\n if (matcher) {\n // we know the matcher works because we tested the regexp\n params = matcher.parse(path);\n name = matcher.record.name;\n }\n // location is a relative path\n }\n else {\n // match by name or path of current route\n matcher = currentLocation.name\n ? matcherMap.get(currentLocation.name)\n : matchers.find(m => m.re.test(currentLocation.path));\n if (!matcher)\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n location,\n currentLocation,\n });\n name = matcher.record.name;\n // since we are navigating to the same location, we don't need to pick the\n // params like when `name` is provided\n params = assign({}, currentLocation.params, location.params);\n path = matcher.stringify(params);\n }\n const matched = [];\n let parentMatcher = matcher;\n while (parentMatcher) {\n // reversed order so parents are at the beginning\n matched.unshift(parentMatcher.record);\n parentMatcher = parentMatcher.parent;\n }\n return {\n name,\n path,\n params,\n matched,\n meta: mergeMetaFields(matched),\n };\n }\n // add initial routes\n routes.forEach(route => addRoute(route));\n function clearRoutes() {\n matchers.length = 0;\n matcherMap.clear();\n }\n return {\n addRoute,\n resolve,\n removeRoute,\n clearRoutes,\n getRoutes,\n getRecordMatcher,\n };\n}\nfunction paramsFromLocation(params, keys) {\n const newParams = {};\n for (const key of keys) {\n if (key in params)\n newParams[key] = params[key];\n }\n return newParams;\n}\n/**\n * Normalizes a RouteRecordRaw. Creates a copy\n *\n * @param record\n * @returns the normalized version\n */\nfunction normalizeRouteRecord(record) {\n const normalized = {\n path: record.path,\n redirect: record.redirect,\n name: record.name,\n meta: record.meta || {},\n aliasOf: record.aliasOf,\n beforeEnter: record.beforeEnter,\n props: normalizeRecordProps(record),\n children: record.children || [],\n instances: {},\n leaveGuards: new Set(),\n updateGuards: new Set(),\n enterCallbacks: {},\n // must be declared afterwards\n // mods: {},\n components: 'components' in record\n ? record.components || null\n : record.component && { default: record.component },\n };\n // mods contain modules and shouldn't be copied,\n // logged or anything. It's just used for internal\n // advanced use cases like data loaders\n Object.defineProperty(normalized, 'mods', {\n value: {},\n });\n return normalized;\n}\n/**\n * Normalize the optional `props` in a record to always be an object similar to\n * components. Also accept a boolean for components.\n * @param record\n */\nfunction normalizeRecordProps(record) {\n const propsObject = {};\n // props does not exist on redirect records, but we can set false directly\n const props = record.props || false;\n if ('component' in record) {\n propsObject.default = props;\n }\n else {\n // NOTE: we could also allow a function to be applied to every component.\n // Would need user feedback for use cases\n for (const name in record.components)\n propsObject[name] = typeof props === 'object' ? props[name] : props;\n }\n return propsObject;\n}\n/**\n * Checks if a record or any of its parent is an alias\n * @param record\n */\nfunction isAliasRecord(record) {\n while (record) {\n if (record.record.aliasOf)\n return true;\n record = record.parent;\n }\n return false;\n}\n/**\n * Merge meta fields of an array of records\n *\n * @param matched - array of matched records\n */\nfunction mergeMetaFields(matched) {\n return matched.reduce((meta, record) => assign(meta, record.meta), {});\n}\nfunction mergeOptions(defaults, partialOptions) {\n const options = {};\n for (const key in defaults) {\n options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\n }\n return options;\n}\nfunction isSameParam(a, b) {\n return (a.name === b.name &&\n a.optional === b.optional &&\n a.repeatable === b.repeatable);\n}\n/**\n * Check if a path and its alias have the same required params\n *\n * @param a - original record\n * @param b - alias record\n */\nfunction checkSameParams(a, b) {\n for (const key of a.keys) {\n if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n }\n for (const key of b.keys) {\n if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n }\n}\n/**\n * A route with a name and a child with an empty path without a name should warn when adding the route\n *\n * @param mainNormalizedRecord - RouteRecordNormalized\n * @param parent - RouteRecordMatcher\n */\nfunction checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) {\n if (parent &&\n parent.record.name &&\n !mainNormalizedRecord.name &&\n !mainNormalizedRecord.path) {\n warn(`The route named \"${String(parent.record.name)}\" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`);\n }\n}\nfunction checkMissingParamsInAbsolutePath(record, parent) {\n for (const key of parent.keys) {\n if (!record.keys.find(isSameParam.bind(null, key)))\n return warn(`Absolute path \"${record.record.path}\" must have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\n }\n}\n/**\n * Performs a binary search to find the correct insertion index for a new matcher.\n *\n * Matchers are primarily sorted by their score. If scores are tied then we also consider parent/child relationships,\n * with descendants coming before ancestors. If there's still a tie, new routes are inserted after existing routes.\n *\n * @param matcher - new matcher to be inserted\n * @param matchers - existing matchers\n */\nfunction findInsertionIndex(matcher, matchers) {\n // First phase: binary search based on score\n let lower = 0;\n let upper = matchers.length;\n while (lower !== upper) {\n const mid = (lower + upper) >> 1;\n const sortOrder = comparePathParserScore(matcher, matchers[mid]);\n if (sortOrder < 0) {\n upper = mid;\n }\n else {\n lower = mid + 1;\n }\n }\n // Second phase: check for an ancestor with the same score\n const insertionAncestor = getInsertionAncestor(matcher);\n if (insertionAncestor) {\n upper = matchers.lastIndexOf(insertionAncestor, upper - 1);\n if ((process.env.NODE_ENV !== 'production') && upper < 0) {\n // This should never happen\n warn(`Finding ancestor route \"${insertionAncestor.record.path}\" failed for \"${matcher.record.path}\"`);\n }\n }\n return upper;\n}\nfunction getInsertionAncestor(matcher) {\n let ancestor = matcher;\n while ((ancestor = ancestor.parent)) {\n if (isMatchable(ancestor) &&\n comparePathParserScore(matcher, ancestor) === 0) {\n return ancestor;\n }\n }\n return;\n}\n/**\n * Checks if a matcher can be reachable. This means if it's possible to reach it as a route. For example, routes without\n * a component, or name, or redirect, are just used to group other routes.\n * @param matcher\n * @param matcher.record record of the matcher\n * @returns\n */\nfunction isMatchable({ record }) {\n return !!(record.name ||\n (record.components && Object.keys(record.components).length) ||\n record.redirect);\n}\n\n/**\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\n * version with the leading `?` and without Should work as URLSearchParams\n\n * @internal\n *\n * @param search - search string to parse\n * @returns a query object\n */\nfunction parseQuery(search) {\n const query = {};\n // avoid creating an object with an empty key and empty value\n // because of split('&')\n if (search === '' || search === '?')\n return query;\n const hasLeadingIM = search[0] === '?';\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\n for (let i = 0; i < searchParams.length; ++i) {\n // pre decode the + into space\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\n // allow the = character\n const eqPos = searchParam.indexOf('=');\n const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\n const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\n if (key in query) {\n // an extra variable for ts types\n let currentValue = query[key];\n if (!isArray(currentValue)) {\n currentValue = query[key] = [currentValue];\n }\n currentValue.push(value);\n }\n else {\n query[key] = value;\n }\n }\n return query;\n}\n/**\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\n * doesn't prepend a `?`\n *\n * @internal\n *\n * @param query - query object to stringify\n * @returns string version of the query without the leading `?`\n */\nfunction stringifyQuery(query) {\n let search = '';\n for (let key in query) {\n const value = query[key];\n key = encodeQueryKey(key);\n if (value == null) {\n // only null adds the value\n if (value !== undefined) {\n search += (search.length ? '&' : '') + key;\n }\n continue;\n }\n // keep null values\n const values = isArray(value)\n ? value.map(v => v && encodeQueryValue(v))\n : [value && encodeQueryValue(value)];\n values.forEach(value => {\n // skip undefined values in arrays as if they were not present\n // smaller code than using filter\n if (value !== undefined) {\n // only append & with non-empty search\n search += (search.length ? '&' : '') + key;\n if (value != null)\n search += '=' + value;\n }\n });\n }\n return search;\n}\n/**\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\n * numbers into strings, removing keys with an undefined value and replacing\n * undefined with null in arrays\n *\n * @param query - query object to normalize\n * @returns a normalized query object\n */\nfunction normalizeQuery(query) {\n const normalizedQuery = {};\n for (const key in query) {\n const value = query[key];\n if (value !== undefined) {\n normalizedQuery[key] = isArray(value)\n ? value.map(v => (v == null ? null : '' + v))\n : value == null\n ? value\n : '' + value;\n }\n }\n return normalizedQuery;\n}\n\n/**\n * RouteRecord being rendered by the closest ancestor Router View. Used for\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\n * Location Matched\n *\n * @internal\n */\nconst matchedRouteKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : '');\n/**\n * Allows overriding the router view depth to control which component in\n * `matched` is rendered. rvd stands for Router View Depth\n *\n * @internal\n */\nconst viewDepthKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : '');\n/**\n * Allows overriding the router instance returned by `useRouter` in tests. r\n * stands for router\n *\n * @internal\n */\nconst routerKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router' : '');\n/**\n * Allows overriding the current route returned by `useRoute` in tests. rl\n * stands for route location\n *\n * @internal\n */\nconst routeLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'route location' : '');\n/**\n * Allows overriding the current route used by router-view. Internally this is\n * used when the `route` prop is passed.\n *\n * @internal\n */\nconst routerViewLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location' : '');\n\n/**\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\n */\nfunction useCallbacks() {\n let handlers = [];\n function add(handler) {\n handlers.push(handler);\n return () => {\n const i = handlers.indexOf(handler);\n if (i > -1)\n handlers.splice(i, 1);\n };\n }\n function reset() {\n handlers = [];\n }\n return {\n add,\n list: () => handlers.slice(),\n reset,\n };\n}\n\nfunction registerGuard(record, name, guard) {\n const removeFromList = () => {\n record[name].delete(guard);\n };\n onUnmounted(removeFromList);\n onDeactivated(removeFromList);\n onActivated(() => {\n record[name].add(guard);\n });\n record[name].add(guard);\n}\n/**\n * Add a navigation guard that triggers whenever the component for the current\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\n * used in any component. The guard is removed when the component is unmounted.\n *\n * @param leaveGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteLeave(leaveGuard) {\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\n return;\n }\n const activeRecord = inject(matchedRouteKey, \n // to avoid warning\n {}).value;\n if (!activeRecord) {\n (process.env.NODE_ENV !== 'production') &&\n warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside a component child of . Maybe you called it inside of App.vue?');\n return;\n }\n registerGuard(activeRecord, 'leaveGuards', leaveGuard);\n}\n/**\n * Add a navigation guard that triggers whenever the current location is about\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\n * component. The guard is removed when the component is unmounted.\n *\n * @param updateGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteUpdate(updateGuard) {\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\n return;\n }\n const activeRecord = inject(matchedRouteKey, \n // to avoid warning\n {}).value;\n if (!activeRecord) {\n (process.env.NODE_ENV !== 'production') &&\n warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside a component child of . Maybe you called it inside of App.vue?');\n return;\n }\n registerGuard(activeRecord, 'updateGuards', updateGuard);\n}\nfunction guardToPromiseFn(guard, to, from, record, name, runWithContext = fn => fn()) {\n // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\n const enterCallbackArray = record &&\n // name is defined if record is because of the function overload\n (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\n return () => new Promise((resolve, reject) => {\n const next = (valid) => {\n if (valid === false) {\n reject(createRouterError(4 /* ErrorTypes.NAVIGATION_ABORTED */, {\n from,\n to,\n }));\n }\n else if (valid instanceof Error) {\n reject(valid);\n }\n else if (isRouteLocation(valid)) {\n reject(createRouterError(2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */, {\n from: to,\n to: valid,\n }));\n }\n else {\n if (enterCallbackArray &&\n // since enterCallbackArray is truthy, both record and name also are\n record.enterCallbacks[name] === enterCallbackArray &&\n typeof valid === 'function') {\n enterCallbackArray.push(valid);\n }\n resolve();\n }\n };\n // wrapping with Promise.resolve allows it to work with both async and sync guards\n const guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next));\n let guardCall = Promise.resolve(guardReturn);\n if (guard.length < 3)\n guardCall = guardCall.then(next);\n if ((process.env.NODE_ENV !== 'production') && guard.length > 2) {\n const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\n if (typeof guardReturn === 'object' && 'then' in guardReturn) {\n guardCall = guardCall.then(resolvedValue => {\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n if (!next._called) {\n warn(message);\n return Promise.reject(new Error('Invalid navigation guard'));\n }\n return resolvedValue;\n });\n }\n else if (guardReturn !== undefined) {\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n if (!next._called) {\n warn(message);\n reject(new Error('Invalid navigation guard'));\n return;\n }\n }\n }\n guardCall.catch(err => reject(err));\n });\n}\nfunction canOnlyBeCalledOnce(next, to, from) {\n let called = 0;\n return function () {\n if (called++ === 1)\n warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\n // @ts-expect-error: we put it in the original one because it's easier to check\n next._called = true;\n if (called === 1)\n next.apply(null, arguments);\n };\n}\nfunction extractComponentsGuards(matched, guardType, to, from, runWithContext = fn => fn()) {\n const guards = [];\n for (const record of matched) {\n if ((process.env.NODE_ENV !== 'production') && !record.components && !record.children.length) {\n warn(`Record with path \"${record.path}\" is either missing a \"component(s)\"` +\n ` or \"children\" property.`);\n }\n for (const name in record.components) {\n let rawComponent = record.components[name];\n if ((process.env.NODE_ENV !== 'production')) {\n if (!rawComponent ||\n (typeof rawComponent !== 'object' &&\n typeof rawComponent !== 'function')) {\n warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\n ` a valid component. Received \"${String(rawComponent)}\".`);\n // throw to ensure we stop here but warn to ensure the message isn't\n // missed by the user\n throw new Error('Invalid route component');\n }\n else if ('then' in rawComponent) {\n // warn if user wrote import('/component.vue') instead of () =>\n // import('./component.vue')\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\n `Promise instead of a function that returns a Promise. Did you ` +\n `write \"import('./MyPage.vue')\" instead of ` +\n `\"() => import('./MyPage.vue')\" ? This will break in ` +\n `production if not fixed.`);\n const promise = rawComponent;\n rawComponent = () => promise;\n }\n else if (rawComponent.__asyncLoader &&\n // warn only once per component\n !rawComponent.__warnedDefineAsync) {\n rawComponent.__warnedDefineAsync = true;\n warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\n `using \"defineAsyncComponent()\". ` +\n `Write \"() => import('./MyPage.vue')\" instead of ` +\n `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\n }\n }\n // skip update and leave guards if the route component is not mounted\n if (guardType !== 'beforeRouteEnter' && !record.instances[name])\n continue;\n if (isRouteComponent(rawComponent)) {\n // __vccOpts is added by vue-class-component and contain the regular options\n const options = rawComponent.__vccOpts || rawComponent;\n const guard = options[guardType];\n guard &&\n guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext));\n }\n else {\n // start requesting the chunk already\n let componentPromise = rawComponent();\n if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) {\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\n componentPromise = Promise.resolve(componentPromise);\n }\n guards.push(() => componentPromise.then(resolved => {\n if (!resolved)\n throw new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`);\n const resolvedComponent = isESModule(resolved)\n ? resolved.default\n : resolved;\n // keep the resolved module for plugins like data loaders\n record.mods[name] = resolved;\n // replace the function with the resolved component\n // cannot be null or undefined because we went into the for loop\n record.components[name] = resolvedComponent;\n // __vccOpts is added by vue-class-component and contain the regular options\n const options = resolvedComponent.__vccOpts || resolvedComponent;\n const guard = options[guardType];\n return (guard &&\n guardToPromiseFn(guard, to, from, record, name, runWithContext)());\n }));\n }\n }\n }\n return guards;\n}\n/**\n * Ensures a route is loaded, so it can be passed as o prop to ``.\n *\n * @param route - resolved route to load\n */\nfunction loadRouteLocation(route) {\n return route.matched.every(record => record.redirect)\n ? Promise.reject(new Error('Cannot load a route that redirects.'))\n : Promise.all(route.matched.map(record => record.components &&\n Promise.all(Object.keys(record.components).reduce((promises, name) => {\n const rawComponent = record.components[name];\n if (typeof rawComponent === 'function' &&\n !('displayName' in rawComponent)) {\n promises.push(rawComponent().then(resolved => {\n if (!resolved)\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\". Ensure you passed a function that returns a promise.`));\n const resolvedComponent = isESModule(resolved)\n ? resolved.default\n : resolved;\n // keep the resolved module for plugins like data loaders\n record.mods[name] = resolved;\n // replace the function with the resolved component\n // cannot be null or undefined because we went into the for loop\n record.components[name] = resolvedComponent;\n return;\n }));\n }\n return promises;\n }, [])))).then(() => route);\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\n// `isExactActive` behavior should go through an RFC\n/**\n * Returns the internal behavior of a {@link RouterLink} without the rendering part.\n *\n * @param props - a `to` location and an optional `replace` flag\n */\nfunction useLink(props) {\n const router = inject(routerKey);\n const currentRoute = inject(routeLocationKey);\n let hasPrevious = false;\n let previousTo = null;\n const route = computed(() => {\n const to = unref(props.to);\n if ((process.env.NODE_ENV !== 'production') && (!hasPrevious || to !== previousTo)) {\n if (!isRouteLocation(to)) {\n if (hasPrevious) {\n warn(`Invalid value for prop \"to\" in useLink()\\n- to:`, to, `\\n- previous to:`, previousTo, `\\n- props:`, props);\n }\n else {\n warn(`Invalid value for prop \"to\" in useLink()\\n- to:`, to, `\\n- props:`, props);\n }\n }\n previousTo = to;\n hasPrevious = true;\n }\n return router.resolve(to);\n });\n const activeRecordIndex = computed(() => {\n const { matched } = route.value;\n const { length } = matched;\n const routeMatched = matched[length - 1];\n const currentMatched = currentRoute.matched;\n if (!routeMatched || !currentMatched.length)\n return -1;\n const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\n if (index > -1)\n return index;\n // possible parent record\n const parentRecordPath = getOriginalPath(matched[length - 2]);\n return (\n // we are dealing with nested routes\n length > 1 &&\n // if the parent and matched route have the same path, this link is\n // referring to the empty child. Or we currently are on a different\n // child of the same parent\n getOriginalPath(routeMatched) === parentRecordPath &&\n // avoid comparing the child with its parent\n currentMatched[currentMatched.length - 1].path !== parentRecordPath\n ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\n : index);\n });\n const isActive = computed(() => activeRecordIndex.value > -1 &&\n includesParams(currentRoute.params, route.value.params));\n const isExactActive = computed(() => activeRecordIndex.value > -1 &&\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\n isSameRouteLocationParams(currentRoute.params, route.value.params));\n function navigate(e = {}) {\n if (guardEvent(e)) {\n return router[unref(props.replace) ? 'replace' : 'push'](unref(props.to)\n // avoid uncaught errors are they are logged anyway\n ).catch(noop);\n }\n return Promise.resolve();\n }\n // devtools only\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n const instance = getCurrentInstance();\n if (instance) {\n const linkContextDevtools = {\n route: route.value,\n isActive: isActive.value,\n isExactActive: isExactActive.value,\n error: null,\n };\n // @ts-expect-error: this is internal\n instance.__vrl_devtools = instance.__vrl_devtools || [];\n // @ts-expect-error: this is internal\n instance.__vrl_devtools.push(linkContextDevtools);\n watchEffect(() => {\n linkContextDevtools.route = route.value;\n linkContextDevtools.isActive = isActive.value;\n linkContextDevtools.isExactActive = isExactActive.value;\n linkContextDevtools.error = isRouteLocation(unref(props.to))\n ? null\n : 'Invalid \"to\" value';\n }, { flush: 'post' });\n }\n }\n /**\n * NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this\n */\n return {\n route,\n href: computed(() => route.value.href),\n isActive,\n isExactActive,\n navigate,\n };\n}\nconst RouterLinkImpl = /*#__PURE__*/ defineComponent({\n name: 'RouterLink',\n compatConfig: { MODE: 3 },\n props: {\n to: {\n type: [String, Object],\n required: true,\n },\n replace: Boolean,\n activeClass: String,\n // inactiveClass: String,\n exactActiveClass: String,\n custom: Boolean,\n ariaCurrentValue: {\n type: String,\n default: 'page',\n },\n },\n useLink,\n setup(props, { slots }) {\n const link = reactive(useLink(props));\n const { options } = inject(routerKey);\n const elClass = computed(() => ({\n [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\n // [getLinkClass(\n // props.inactiveClass,\n // options.linkInactiveClass,\n // 'router-link-inactive'\n // )]: !link.isExactActive,\n [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\n }));\n return () => {\n const children = slots.default && slots.default(link);\n return props.custom\n ? children\n : h('a', {\n 'aria-current': link.isExactActive\n ? props.ariaCurrentValue\n : null,\n href: link.href,\n // this would override user added attrs but Vue will still add\n // the listener, so we end up triggering both\n onClick: link.navigate,\n class: elClass.value,\n }, children);\n };\n },\n});\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to render a link that triggers a navigation on click.\n */\nconst RouterLink = RouterLinkImpl;\nfunction guardEvent(e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n return;\n // don't redirect when preventDefault called\n if (e.defaultPrevented)\n return;\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0)\n return;\n // don't redirect if `target=\"_blank\"`\n // @ts-expect-error getAttribute does exist\n if (e.currentTarget && e.currentTarget.getAttribute) {\n // @ts-expect-error getAttribute exists\n const target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target))\n return;\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault)\n e.preventDefault();\n return true;\n}\nfunction includesParams(outer, inner) {\n for (const key in inner) {\n const innerValue = inner[key];\n const outerValue = outer[key];\n if (typeof innerValue === 'string') {\n if (innerValue !== outerValue)\n return false;\n }\n else {\n if (!isArray(outerValue) ||\n outerValue.length !== innerValue.length ||\n innerValue.some((value, i) => value !== outerValue[i]))\n return false;\n }\n }\n return true;\n}\n/**\n * Get the original path value of a record by following its aliasOf\n * @param record\n */\nfunction getOriginalPath(record) {\n return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\n}\n/**\n * Utility class to get the active class based on defaults.\n * @param propClass\n * @param globalClass\n * @param defaultClass\n */\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\n ? propClass\n : globalClass != null\n ? globalClass\n : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\n name: 'RouterView',\n // #674 we manually inherit them\n inheritAttrs: false,\n props: {\n name: {\n type: String,\n default: 'default',\n },\n route: Object,\n },\n // Better compat for @vue/compat users\n // https://github.com/vuejs/router/issues/1315\n compatConfig: { MODE: 3 },\n setup(props, { attrs, slots }) {\n (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage();\n const injectedRoute = inject(routerViewLocationKey);\n const routeToDisplay = computed(() => props.route || injectedRoute.value);\n const injectedDepth = inject(viewDepthKey, 0);\n // The depth changes based on empty components option, which allows passthrough routes e.g. routes with children\n // that are used to reuse the `path` property\n const depth = computed(() => {\n let initialDepth = unref(injectedDepth);\n const { matched } = routeToDisplay.value;\n let matchedRoute;\n while ((matchedRoute = matched[initialDepth]) &&\n !matchedRoute.components) {\n initialDepth++;\n }\n return initialDepth;\n });\n const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);\n provide(viewDepthKey, computed(() => depth.value + 1));\n provide(matchedRouteKey, matchedRouteRef);\n provide(routerViewLocationKey, routeToDisplay);\n const viewRef = ref();\n // watch at the same time the component instance, the route record we are\n // rendering, and the name\n watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\n // copy reused instances\n if (to) {\n // this will update the instance for new instances as well as reused\n // instances when navigating to a new route\n to.instances[name] = instance;\n // the component instance is reused for a different route or name, so\n // we copy any saved update or leave guards. With async setup, the\n // mounting component will mount before the matchedRoute changes,\n // making instance === oldInstance, so we check if guards have been\n // added before. This works because we remove guards when\n // unmounting/deactivating components\n if (from && from !== to && instance && instance === oldInstance) {\n if (!to.leaveGuards.size) {\n to.leaveGuards = from.leaveGuards;\n }\n if (!to.updateGuards.size) {\n to.updateGuards = from.updateGuards;\n }\n }\n }\n // trigger beforeRouteEnter next callbacks\n if (instance &&\n to &&\n // if there is no instance but to and from are the same this might be\n // the first visit\n (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\n (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\n }\n }, { flush: 'post' });\n return () => {\n const route = routeToDisplay.value;\n // we need the value at the time we render because when we unmount, we\n // navigated to a different location so the value is different\n const currentName = props.name;\n const matchedRoute = matchedRouteRef.value;\n const ViewComponent = matchedRoute && matchedRoute.components[currentName];\n if (!ViewComponent) {\n return normalizeSlot(slots.default, { Component: ViewComponent, route });\n }\n // props from route configuration\n const routePropsOption = matchedRoute.props[currentName];\n const routeProps = routePropsOption\n ? routePropsOption === true\n ? route.params\n : typeof routePropsOption === 'function'\n ? routePropsOption(route)\n : routePropsOption\n : null;\n const onVnodeUnmounted = vnode => {\n // remove the instance reference to prevent leak\n if (vnode.component.isUnmounted) {\n matchedRoute.instances[currentName] = null;\n }\n };\n const component = h(ViewComponent, assign({}, routeProps, attrs, {\n onVnodeUnmounted,\n ref: viewRef,\n }));\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n isBrowser &&\n component.ref) {\n // TODO: can display if it's an alias, its props\n const info = {\n depth: depth.value,\n name: matchedRoute.name,\n path: matchedRoute.path,\n meta: matchedRoute.meta,\n };\n const internalInstances = isArray(component.ref)\n ? component.ref.map(r => r.i)\n : [component.ref.i];\n internalInstances.forEach(instance => {\n // @ts-expect-error\n instance.__vrv_devtools = info;\n });\n }\n return (\n // pass the vnode to the slot as a prop.\n // h and both accept vnodes\n normalizeSlot(slots.default, { Component: component, route }) ||\n component);\n };\n },\n});\nfunction normalizeSlot(slot, data) {\n if (!slot)\n return null;\n const slotContent = slot(data);\n return slotContent.length === 1 ? slotContent[0] : slotContent;\n}\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to display the current route the user is at.\n */\nconst RouterView = RouterViewImpl;\n// warn against deprecated usage with & \n// due to functional component being no longer eager in Vue 3\nfunction warnDeprecatedUsage() {\n const instance = getCurrentInstance();\n const parentName = instance.parent && instance.parent.type.name;\n const parentSubTreeType = instance.parent && instance.parent.subTree && instance.parent.subTree.type;\n if (parentName &&\n (parentName === 'KeepAlive' || parentName.includes('Transition')) &&\n typeof parentSubTreeType === 'object' &&\n parentSubTreeType.name === 'RouterView') {\n const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\n warn(` can no longer be used directly inside or .\\n` +\n `Use slot props instead:\\n\\n` +\n `\\n` +\n ` <${comp}>\\n` +\n ` \\n` +\n ` \\n` +\n ``);\n }\n}\n\n/**\n * Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances).\n *\n * @param routeLocation - routeLocation to format\n * @param tooltip - optional tooltip\n * @returns a copy of the routeLocation\n */\nfunction formatRouteLocation(routeLocation, tooltip) {\n const copy = assign({}, routeLocation, {\n // remove variables that can contain vue instances\n matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\n });\n return {\n _custom: {\n type: null,\n readOnly: true,\n display: routeLocation.fullPath,\n tooltip,\n value: copy,\n },\n };\n}\nfunction formatDisplay(display) {\n return {\n _custom: {\n display,\n },\n };\n}\n// to support multiple router instances\nlet routerId = 0;\nfunction addDevtools(app, router, matcher) {\n // Take over router.beforeEach and afterEach\n // make sure we are not registering the devtool twice\n if (router.__hasDevtools)\n return;\n router.__hasDevtools = true;\n // increment to support multiple router instances\n const id = routerId++;\n setupDevtoolsPlugin({\n id: 'org.vuejs.router' + (id ? '.' + id : ''),\n label: 'Vue Router',\n packageName: 'vue-router',\n homepage: 'https://router.vuejs.org',\n logo: 'https://router.vuejs.org/logo.png',\n componentStateTypes: ['Routing'],\n app,\n }, api => {\n if (typeof api.now !== 'function') {\n console.warn('[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n }\n // display state added by the router\n api.on.inspectComponent((payload, ctx) => {\n if (payload.instanceData) {\n payload.instanceData.state.push({\n type: 'Routing',\n key: '$route',\n editable: false,\n value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\n });\n }\n });\n // mark router-link as active and display tags on router views\n api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\n if (componentInstance.__vrv_devtools) {\n const info = componentInstance.__vrv_devtools;\n node.tags.push({\n label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\n textColor: 0,\n tooltip: 'This component is rendered by <router-view>',\n backgroundColor: PINK_500,\n });\n }\n // if multiple useLink are used\n if (isArray(componentInstance.__vrl_devtools)) {\n componentInstance.__devtoolsApi = api;\n componentInstance.__vrl_devtools.forEach(devtoolsData => {\n let label = devtoolsData.route.path;\n let backgroundColor = ORANGE_400;\n let tooltip = '';\n let textColor = 0;\n if (devtoolsData.error) {\n label = devtoolsData.error;\n backgroundColor = RED_100;\n textColor = RED_700;\n }\n else if (devtoolsData.isExactActive) {\n backgroundColor = LIME_500;\n tooltip = 'This is exactly active';\n }\n else if (devtoolsData.isActive) {\n backgroundColor = BLUE_600;\n tooltip = 'This link is active';\n }\n node.tags.push({\n label,\n textColor,\n tooltip,\n backgroundColor,\n });\n });\n }\n });\n watch(router.currentRoute, () => {\n // refresh active state\n refreshRoutesView();\n api.notifyComponentUpdate();\n api.sendInspectorTree(routerInspectorId);\n api.sendInspectorState(routerInspectorId);\n });\n const navigationsLayerId = 'router:navigations:' + id;\n api.addTimelineLayer({\n id: navigationsLayerId,\n label: `Router${id ? ' ' + id : ''} Navigations`,\n color: 0x40a8c4,\n });\n // const errorsLayerId = 'router:errors'\n // api.addTimelineLayer({\n // id: errorsLayerId,\n // label: 'Router Errors',\n // color: 0xea5455,\n // })\n router.onError((error, to) => {\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n title: 'Error during Navigation',\n subtitle: to.fullPath,\n logType: 'error',\n time: api.now(),\n data: { error },\n groupId: to.meta.__navigationId,\n },\n });\n });\n // attached to `meta` and used to group events\n let navigationId = 0;\n router.beforeEach((to, from) => {\n const data = {\n guard: formatDisplay('beforeEach'),\n from: formatRouteLocation(from, 'Current Location during this navigation'),\n to: formatRouteLocation(to, 'Target location'),\n };\n // Used to group navigations together, hide from devtools\n Object.defineProperty(to.meta, '__navigationId', {\n value: navigationId++,\n });\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n time: api.now(),\n title: 'Start of navigation',\n subtitle: to.fullPath,\n data,\n groupId: to.meta.__navigationId,\n },\n });\n });\n router.afterEach((to, from, failure) => {\n const data = {\n guard: formatDisplay('afterEach'),\n };\n if (failure) {\n data.failure = {\n _custom: {\n type: Error,\n readOnly: true,\n display: failure ? failure.message : '',\n tooltip: 'Navigation Failure',\n value: failure,\n },\n };\n data.status = formatDisplay('❌');\n }\n else {\n data.status = formatDisplay('✅');\n }\n // we set here to have the right order\n data.from = formatRouteLocation(from, 'Current Location during this navigation');\n data.to = formatRouteLocation(to, 'Target location');\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n title: 'End of navigation',\n subtitle: to.fullPath,\n time: api.now(),\n data,\n logType: failure ? 'warning' : 'default',\n groupId: to.meta.__navigationId,\n },\n });\n });\n /**\n * Inspector of Existing routes\n */\n const routerInspectorId = 'router-inspector:' + id;\n api.addInspector({\n id: routerInspectorId,\n label: 'Routes' + (id ? ' ' + id : ''),\n icon: 'book',\n treeFilterPlaceholder: 'Search routes',\n });\n function refreshRoutesView() {\n // the routes view isn't active\n if (!activeRoutesPayload)\n return;\n const payload = activeRoutesPayload;\n // children routes will appear as nested\n let routes = matcher.getRoutes().filter(route => !route.parent ||\n // these routes have a parent with no component which will not appear in the view\n // therefore we still need to include them\n !route.parent.record.components);\n // reset match state to false\n routes.forEach(resetMatchStateOnRouteRecord);\n // apply a match state if there is a payload\n if (payload.filter) {\n routes = routes.filter(route => \n // save matches state based on the payload\n isRouteMatching(route, payload.filter.toLowerCase()));\n }\n // mark active routes\n routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\n payload.rootNodes = routes.map(formatRouteRecordForInspector);\n }\n let activeRoutesPayload;\n api.on.getInspectorTree(payload => {\n activeRoutesPayload = payload;\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\n refreshRoutesView();\n }\n });\n /**\n * Display information about the currently selected route record\n */\n api.on.getInspectorState(payload => {\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\n const routes = matcher.getRoutes();\n const route = routes.find(route => route.record.__vd_id === payload.nodeId);\n if (route) {\n payload.state = {\n options: formatRouteRecordMatcherForStateInspector(route),\n };\n }\n }\n });\n api.sendInspectorTree(routerInspectorId);\n api.sendInspectorState(routerInspectorId);\n });\n}\nfunction modifierForKey(key) {\n if (key.optional) {\n return key.repeatable ? '*' : '?';\n }\n else {\n return key.repeatable ? '+' : '';\n }\n}\nfunction formatRouteRecordMatcherForStateInspector(route) {\n const { record } = route;\n const fields = [\n { editable: false, key: 'path', value: record.path },\n ];\n if (record.name != null) {\n fields.push({\n editable: false,\n key: 'name',\n value: record.name,\n });\n }\n fields.push({ editable: false, key: 'regexp', value: route.re });\n if (route.keys.length) {\n fields.push({\n editable: false,\n key: 'keys',\n value: {\n _custom: {\n type: null,\n readOnly: true,\n display: route.keys\n .map(key => `${key.name}${modifierForKey(key)}`)\n .join(' '),\n tooltip: 'Param keys',\n value: route.keys,\n },\n },\n });\n }\n if (record.redirect != null) {\n fields.push({\n editable: false,\n key: 'redirect',\n value: record.redirect,\n });\n }\n if (route.alias.length) {\n fields.push({\n editable: false,\n key: 'aliases',\n value: route.alias.map(alias => alias.record.path),\n });\n }\n if (Object.keys(route.record.meta).length) {\n fields.push({\n editable: false,\n key: 'meta',\n value: route.record.meta,\n });\n }\n fields.push({\n key: 'score',\n editable: false,\n value: {\n _custom: {\n type: null,\n readOnly: true,\n display: route.score.map(score => score.join(', ')).join(' | '),\n tooltip: 'Score used to sort routes',\n value: route.score,\n },\n },\n });\n return fields;\n}\n/**\n * Extracted from tailwind palette\n */\nconst PINK_500 = 0xec4899;\nconst BLUE_600 = 0x2563eb;\nconst LIME_500 = 0x84cc16;\nconst CYAN_400 = 0x22d3ee;\nconst ORANGE_400 = 0xfb923c;\n// const GRAY_100 = 0xf4f4f5\nconst DARK = 0x666666;\nconst RED_100 = 0xfee2e2;\nconst RED_700 = 0xb91c1c;\nfunction formatRouteRecordForInspector(route) {\n const tags = [];\n const { record } = route;\n if (record.name != null) {\n tags.push({\n label: String(record.name),\n textColor: 0,\n backgroundColor: CYAN_400,\n });\n }\n if (record.aliasOf) {\n tags.push({\n label: 'alias',\n textColor: 0,\n backgroundColor: ORANGE_400,\n });\n }\n if (route.__vd_match) {\n tags.push({\n label: 'matches',\n textColor: 0,\n backgroundColor: PINK_500,\n });\n }\n if (route.__vd_exactActive) {\n tags.push({\n label: 'exact',\n textColor: 0,\n backgroundColor: LIME_500,\n });\n }\n if (route.__vd_active) {\n tags.push({\n label: 'active',\n textColor: 0,\n backgroundColor: BLUE_600,\n });\n }\n if (record.redirect) {\n tags.push({\n label: typeof record.redirect === 'string'\n ? `redirect: ${record.redirect}`\n : 'redirects',\n textColor: 0xffffff,\n backgroundColor: DARK,\n });\n }\n // add an id to be able to select it. Using the `path` is not possible because\n // empty path children would collide with their parents\n let id = record.__vd_id;\n if (id == null) {\n id = String(routeRecordId++);\n record.__vd_id = id;\n }\n return {\n id,\n label: record.path,\n tags,\n children: route.children.map(formatRouteRecordForInspector),\n };\n}\n// incremental id for route records and inspector state\nlet routeRecordId = 0;\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\nfunction markRouteRecordActive(route, currentRoute) {\n // no route will be active if matched is empty\n // reset the matching state\n const isExactActive = currentRoute.matched.length &&\n isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\n route.__vd_exactActive = route.__vd_active = isExactActive;\n if (!isExactActive) {\n route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\n }\n route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\n}\nfunction resetMatchStateOnRouteRecord(route) {\n route.__vd_match = false;\n route.children.forEach(resetMatchStateOnRouteRecord);\n}\nfunction isRouteMatching(route, filter) {\n const found = String(route.re).match(EXTRACT_REGEXP_RE);\n route.__vd_match = false;\n if (!found || found.length < 3) {\n return false;\n }\n // use a regexp without $ at the end to match nested routes better\n const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\n if (nonEndingRE.test(filter)) {\n // mark children as matches\n route.children.forEach(child => isRouteMatching(child, filter));\n // exception case: `/`\n if (route.record.path !== '/' || filter === '/') {\n route.__vd_match = route.re.test(filter);\n return true;\n }\n // hide the / route\n return false;\n }\n const path = route.record.path.toLowerCase();\n const decodedPath = decode(path);\n // also allow partial matching on the path\n if (!filter.startsWith('/') &&\n (decodedPath.includes(filter) || path.includes(filter)))\n return true;\n if (decodedPath.startsWith(filter) || path.startsWith(filter))\n return true;\n if (route.record.name && String(route.record.name).includes(filter))\n return true;\n return route.children.some(child => isRouteMatching(child, filter));\n}\nfunction omit(obj, keys) {\n const ret = {};\n for (const key in obj) {\n if (!keys.includes(key)) {\n // @ts-expect-error\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n\n/**\n * Creates a Router instance that can be used by a Vue app.\n *\n * @param options - {@link RouterOptions}\n */\nfunction createRouter(options) {\n const matcher = createRouterMatcher(options.routes, options);\n const parseQuery$1 = options.parseQuery || parseQuery;\n const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\n const routerHistory = options.history;\n if ((process.env.NODE_ENV !== 'production') && !routerHistory)\n throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\n ' https://router.vuejs.org/api/interfaces/RouterOptions.html#history');\n const beforeGuards = useCallbacks();\n const beforeResolveGuards = useCallbacks();\n const afterGuards = useCallbacks();\n const currentRoute = shallowRef(START_LOCATION_NORMALIZED);\n let pendingLocation = START_LOCATION_NORMALIZED;\n // leave the scrollRestoration if no scrollBehavior is provided\n if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\n const encodeParams = applyToParams.bind(null, encodeParam);\n const decodeParams = \n // @ts-expect-error: intentionally avoid the type check\n applyToParams.bind(null, decode);\n function addRoute(parentOrRoute, route) {\n let parent;\n let record;\n if (isRouteName(parentOrRoute)) {\n parent = matcher.getRecordMatcher(parentOrRoute);\n if ((process.env.NODE_ENV !== 'production') && !parent) {\n warn(`Parent route \"${String(parentOrRoute)}\" not found when adding child route`, route);\n }\n record = route;\n }\n else {\n record = parentOrRoute;\n }\n return matcher.addRoute(record, parent);\n }\n function removeRoute(name) {\n const recordMatcher = matcher.getRecordMatcher(name);\n if (recordMatcher) {\n matcher.removeRoute(recordMatcher);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Cannot remove non-existent route \"${String(name)}\"`);\n }\n }\n function getRoutes() {\n return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\n }\n function hasRoute(name) {\n return !!matcher.getRecordMatcher(name);\n }\n function resolve(rawLocation, currentLocation) {\n // const resolve: Router['resolve'] = (rawLocation: RouteLocationRaw, currentLocation) => {\n // const objectLocation = routerLocationAsObject(rawLocation)\n // we create a copy to modify it later\n currentLocation = assign({}, currentLocation || currentRoute.value);\n if (typeof rawLocation === 'string') {\n const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\n const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\n const href = routerHistory.createHref(locationNormalized.fullPath);\n if ((process.env.NODE_ENV !== 'production')) {\n if (href.startsWith('//'))\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n else if (!matchedRoute.matched.length) {\n warn(`No match found for location with path \"${rawLocation}\"`);\n }\n }\n // locationNormalized is always a new object\n return assign(locationNormalized, matchedRoute, {\n params: decodeParams(matchedRoute.params),\n hash: decode(locationNormalized.hash),\n redirectedFrom: undefined,\n href,\n });\n }\n if ((process.env.NODE_ENV !== 'production') && !isRouteLocation(rawLocation)) {\n warn(`router.resolve() was passed an invalid location. This will fail in production.\\n- Location:`, rawLocation);\n return resolve({});\n }\n let matcherLocation;\n // path could be relative in object as well\n if (rawLocation.path != null) {\n if ((process.env.NODE_ENV !== 'production') &&\n 'params' in rawLocation &&\n !('name' in rawLocation) &&\n // @ts-expect-error: the type is never\n Object.keys(rawLocation.params).length) {\n warn(`Path \"${rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\n }\n matcherLocation = assign({}, rawLocation, {\n path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\n });\n }\n else {\n // remove any nullish param\n const targetParams = assign({}, rawLocation.params);\n for (const key in targetParams) {\n if (targetParams[key] == null) {\n delete targetParams[key];\n }\n }\n // pass encoded values to the matcher, so it can produce encoded path and fullPath\n matcherLocation = assign({}, rawLocation, {\n params: encodeParams(targetParams),\n });\n // current location params are decoded, we need to encode them in case the\n // matcher merges the params\n currentLocation.params = encodeParams(currentLocation.params);\n }\n const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\n const hash = rawLocation.hash || '';\n if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) {\n warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\n }\n // the matcher might have merged current location params, so\n // we need to run the decoding again\n matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\n const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\n hash: encodeHash(hash),\n path: matchedRoute.path,\n }));\n const href = routerHistory.createHref(fullPath);\n if ((process.env.NODE_ENV !== 'production')) {\n if (href.startsWith('//')) {\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n }\n else if (!matchedRoute.matched.length) {\n warn(`No match found for location with path \"${rawLocation.path != null ? rawLocation.path : rawLocation}\"`);\n }\n }\n return assign({\n fullPath,\n // keep the hash encoded so fullPath is effectively path + encodedQuery +\n // hash\n hash,\n query: \n // if the user is using a custom query lib like qs, we might have\n // nested objects, so we keep the query as is, meaning it can contain\n // numbers at `$route.query`, but at the point, the user will have to\n // use their own type anyway.\n // https://github.com/vuejs/router/issues/328#issuecomment-649481567\n stringifyQuery$1 === stringifyQuery\n ? normalizeQuery(rawLocation.query)\n : (rawLocation.query || {}),\n }, matchedRoute, {\n redirectedFrom: undefined,\n href,\n });\n }\n function locationAsObject(to) {\n return typeof to === 'string'\n ? parseURL(parseQuery$1, to, currentRoute.value.path)\n : assign({}, to);\n }\n function checkCanceledNavigation(to, from) {\n if (pendingLocation !== to) {\n return createRouterError(8 /* ErrorTypes.NAVIGATION_CANCELLED */, {\n from,\n to,\n });\n }\n }\n function push(to) {\n return pushWithRedirect(to);\n }\n function replace(to) {\n return push(assign(locationAsObject(to), { replace: true }));\n }\n function handleRedirectRecord(to) {\n const lastMatched = to.matched[to.matched.length - 1];\n if (lastMatched && lastMatched.redirect) {\n const { redirect } = lastMatched;\n let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\n if (typeof newTargetLocation === 'string') {\n newTargetLocation =\n newTargetLocation.includes('?') || newTargetLocation.includes('#')\n ? (newTargetLocation = locationAsObject(newTargetLocation))\n : // force empty params\n { path: newTargetLocation };\n // @ts-expect-error: force empty params when a string is passed to let\n // the router parse them again\n newTargetLocation.params = {};\n }\n if ((process.env.NODE_ENV !== 'production') &&\n newTargetLocation.path == null &&\n !('name' in newTargetLocation)) {\n warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\n throw new Error('Invalid redirect');\n }\n return assign({\n query: to.query,\n hash: to.hash,\n // avoid transferring params if the redirect has a path\n params: newTargetLocation.path != null ? {} : to.params,\n }, newTargetLocation);\n }\n }\n function pushWithRedirect(to, redirectedFrom) {\n const targetLocation = (pendingLocation = resolve(to));\n const from = currentRoute.value;\n const data = to.state;\n const force = to.force;\n // to could be a string where `replace` is a function\n const replace = to.replace === true;\n const shouldRedirect = handleRedirectRecord(targetLocation);\n if (shouldRedirect)\n return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\n state: typeof shouldRedirect === 'object'\n ? assign({}, data, shouldRedirect.state)\n : data,\n force,\n replace,\n }), \n // keep original redirectedFrom if it exists\n redirectedFrom || targetLocation);\n // if it was a redirect we already called `pushWithRedirect` above\n const toLocation = targetLocation;\n toLocation.redirectedFrom = redirectedFrom;\n let failure;\n if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\n failure = createRouterError(16 /* ErrorTypes.NAVIGATION_DUPLICATED */, { to: toLocation, from });\n // trigger scroll to allow scrolling to the same anchor\n handleScroll(from, from, \n // this is a push, the only way for it to be triggered from a\n // history.listen is with a redirect, which makes it become a push\n true, \n // This cannot be the first navigation because the initial location\n // cannot be manually navigated to\n false);\n }\n return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\n .catch((error) => isNavigationFailure(error)\n ? // navigation redirects still mark the router as ready\n isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)\n ? error\n : markAsReady(error) // also returns the error\n : // reject any unknown error\n triggerError(error, toLocation, from))\n .then((failure) => {\n if (failure) {\n if (isNavigationFailure(failure, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n if ((process.env.NODE_ENV !== 'production') &&\n // we are redirecting to the same location we were already at\n isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\n // and we have done it a couple of times\n redirectedFrom &&\n // @ts-expect-error: added only in dev\n (redirectedFrom._count = redirectedFrom._count\n ? // @ts-expect-error\n redirectedFrom._count + 1\n : 1) > 30) {\n warn(`Detected a possibly infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow.\\n Are you always returning a new location within a navigation guard? That would lead to this error. Only return when redirecting or aborting, that should fix this. This might break in production if not fixed.`);\n return Promise.reject(new Error('Infinite redirect in navigation guard'));\n }\n return pushWithRedirect(\n // keep options\n assign({\n // preserve an existing replacement but allow the redirect to override it\n replace,\n }, locationAsObject(failure.to), {\n state: typeof failure.to === 'object'\n ? assign({}, data, failure.to.state)\n : data,\n force,\n }), \n // preserve the original redirectedFrom if any\n redirectedFrom || toLocation);\n }\n }\n else {\n // if we fail we don't finalize the navigation\n failure = finalizeNavigation(toLocation, from, true, replace, data);\n }\n triggerAfterEach(toLocation, from, failure);\n return failure;\n });\n }\n /**\n * Helper to reject and skip all navigation guards if a new navigation happened\n * @param to\n * @param from\n */\n function checkCanceledNavigationAndReject(to, from) {\n const error = checkCanceledNavigation(to, from);\n return error ? Promise.reject(error) : Promise.resolve();\n }\n function runWithContext(fn) {\n const app = installedApps.values().next().value;\n // support Vue < 3.3\n return app && typeof app.runWithContext === 'function'\n ? app.runWithContext(fn)\n : fn();\n }\n // TODO: refactor the whole before guards by internally using router.beforeEach\n function navigate(to, from) {\n let guards;\n const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\n // all components here have been resolved once because we are leaving\n guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\n // leavingRecords is already reversed\n for (const record of leavingRecords) {\n record.leaveGuards.forEach(guard => {\n guards.push(guardToPromiseFn(guard, to, from));\n });\n }\n const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeRouteLeave guards\n return (runGuardQueue(guards)\n .then(() => {\n // check global guards beforeEach\n guards = [];\n for (const guard of beforeGuards.list()) {\n guards.push(guardToPromiseFn(guard, to, from));\n }\n guards.push(canceledNavigationCheck);\n return runGuardQueue(guards);\n })\n .then(() => {\n // check in components beforeRouteUpdate\n guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\n for (const record of updatingRecords) {\n record.updateGuards.forEach(guard => {\n guards.push(guardToPromiseFn(guard, to, from));\n });\n }\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // check the route beforeEnter\n guards = [];\n for (const record of enteringRecords) {\n // do not trigger beforeEnter on reused views\n if (record.beforeEnter) {\n if (isArray(record.beforeEnter)) {\n for (const beforeEnter of record.beforeEnter)\n guards.push(guardToPromiseFn(beforeEnter, to, from));\n }\n else {\n guards.push(guardToPromiseFn(record.beforeEnter, to, from));\n }\n }\n }\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // NOTE: at this point to.matched is normalized and does not contain any () => Promise\n // clear existing enterCallbacks, these are added by extractComponentsGuards\n to.matched.forEach(record => (record.enterCallbacks = {}));\n // check in-component beforeRouteEnter\n guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from, runWithContext);\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // check global guards beforeResolve\n guards = [];\n for (const guard of beforeResolveGuards.list()) {\n guards.push(guardToPromiseFn(guard, to, from));\n }\n guards.push(canceledNavigationCheck);\n return runGuardQueue(guards);\n })\n // catch any navigation canceled\n .catch(err => isNavigationFailure(err, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)\n ? err\n : Promise.reject(err)));\n }\n function triggerAfterEach(to, from, failure) {\n // navigation is confirmed, call afterGuards\n // TODO: wrap with error handlers\n afterGuards\n .list()\n .forEach(guard => runWithContext(() => guard(to, from, failure)));\n }\n /**\n * - Cleans up any navigation guards\n * - Changes the url if necessary\n * - Calls the scrollBehavior\n */\n function finalizeNavigation(toLocation, from, isPush, replace, data) {\n // a more recent navigation took place\n const error = checkCanceledNavigation(toLocation, from);\n if (error)\n return error;\n // only consider as push if it's not the first navigation\n const isFirstNavigation = from === START_LOCATION_NORMALIZED;\n const state = !isBrowser ? {} : history.state;\n // change URL only if the user did a push/replace and if it's not the initial navigation because\n // it's just reflecting the url\n if (isPush) {\n // on the initial navigation, we want to reuse the scroll position from\n // history state if it exists\n if (replace || isFirstNavigation)\n routerHistory.replace(toLocation.fullPath, assign({\n scroll: isFirstNavigation && state && state.scroll,\n }, data));\n else\n routerHistory.push(toLocation.fullPath, data);\n }\n // accept current navigation\n currentRoute.value = toLocation;\n handleScroll(toLocation, from, isPush, isFirstNavigation);\n markAsReady();\n }\n let removeHistoryListener;\n // attach listener to history to trigger navigations\n function setupListeners() {\n // avoid setting up listeners twice due to an invalid first navigation\n if (removeHistoryListener)\n return;\n removeHistoryListener = routerHistory.listen((to, _from, info) => {\n if (!router.listening)\n return;\n // cannot be a redirect route because it was in history\n const toLocation = resolve(to);\n // due to dynamic routing, and to hash history with manual navigation\n // (manually changing the url or calling history.hash = '#/somewhere'),\n // there could be a redirect record in history\n const shouldRedirect = handleRedirectRecord(toLocation);\n if (shouldRedirect) {\n pushWithRedirect(assign(shouldRedirect, { replace: true }), toLocation).catch(noop);\n return;\n }\n pendingLocation = toLocation;\n const from = currentRoute.value;\n // TODO: should be moved to web history?\n if (isBrowser) {\n saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\n }\n navigate(toLocation, from)\n .catch((error) => {\n if (isNavigationFailure(error, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n return error;\n }\n if (isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n // Here we could call if (info.delta) routerHistory.go(-info.delta,\n // false) but this is bug prone as we have no way to wait the\n // navigation to be finished before calling pushWithRedirect. Using\n // a setTimeout of 16ms seems to work but there is no guarantee for\n // it to work on every browser. So instead we do not restore the\n // history entry and trigger a new navigation as requested by the\n // navigation guard.\n // the error is already handled by router.push we just want to avoid\n // logging the error\n pushWithRedirect(error.to, toLocation\n // avoid an uncaught rejection, let push call triggerError\n )\n .then(failure => {\n // manual change in hash history #916 ending up in the URL not\n // changing, but it was changed by the manual url change, so we\n // need to manually change it ourselves\n if (isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ |\n 16 /* ErrorTypes.NAVIGATION_DUPLICATED */) &&\n !info.delta &&\n info.type === NavigationType.pop) {\n routerHistory.go(-1, false);\n }\n })\n .catch(noop);\n // avoid the then branch\n return Promise.reject();\n }\n // do not restore history on unknown direction\n if (info.delta) {\n routerHistory.go(-info.delta, false);\n }\n // unrecognized error, transfer to the global handler\n return triggerError(error, toLocation, from);\n })\n .then((failure) => {\n failure =\n failure ||\n finalizeNavigation(\n // after navigation, all matched components are resolved\n toLocation, from, false);\n // revert the navigation\n if (failure) {\n if (info.delta &&\n // a new navigation has been triggered, so we do not want to revert, that will change the current history\n // entry while a different route is displayed\n !isNavigationFailure(failure, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n routerHistory.go(-info.delta, false);\n }\n else if (info.type === NavigationType.pop &&\n isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 16 /* ErrorTypes.NAVIGATION_DUPLICATED */)) {\n // manual change in hash history #916\n // it's like a push but lacks the information of the direction\n routerHistory.go(-1, false);\n }\n }\n triggerAfterEach(toLocation, from, failure);\n })\n // avoid warnings in the console about uncaught rejections, they are logged by triggerErrors\n .catch(noop);\n });\n }\n // Initialization and Errors\n let readyHandlers = useCallbacks();\n let errorListeners = useCallbacks();\n let ready;\n /**\n * Trigger errorListeners added via onError and throws the error as well\n *\n * @param error - error to throw\n * @param to - location we were navigating to when the error happened\n * @param from - location we were navigating from when the error happened\n * @returns the error as a rejected promise\n */\n function triggerError(error, to, from) {\n markAsReady(error);\n const list = errorListeners.list();\n if (list.length) {\n list.forEach(handler => handler(error, to, from));\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n warn('uncaught error during route navigation:');\n }\n console.error(error);\n }\n // reject the error no matter there were error listeners or not\n return Promise.reject(error);\n }\n function isReady() {\n if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\n return Promise.resolve();\n return new Promise((resolve, reject) => {\n readyHandlers.add([resolve, reject]);\n });\n }\n function markAsReady(err) {\n if (!ready) {\n // still not ready if an error happened\n ready = !err;\n setupListeners();\n readyHandlers\n .list()\n .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\n readyHandlers.reset();\n }\n return err;\n }\n // Scroll behavior\n function handleScroll(to, from, isPush, isFirstNavigation) {\n const { scrollBehavior } = options;\n if (!isBrowser || !scrollBehavior)\n return Promise.resolve();\n const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\n ((isFirstNavigation || !isPush) &&\n history.state &&\n history.state.scroll) ||\n null;\n return nextTick()\n .then(() => scrollBehavior(to, from, scrollPosition))\n .then(position => position && scrollToPosition(position))\n .catch(err => triggerError(err, to, from));\n }\n const go = (delta) => routerHistory.go(delta);\n let started;\n const installedApps = new Set();\n const router = {\n currentRoute,\n listening: true,\n addRoute,\n removeRoute,\n clearRoutes: matcher.clearRoutes,\n hasRoute,\n getRoutes,\n resolve,\n options,\n push,\n replace,\n go,\n back: () => go(-1),\n forward: () => go(1),\n beforeEach: beforeGuards.add,\n beforeResolve: beforeResolveGuards.add,\n afterEach: afterGuards.add,\n onError: errorListeners.add,\n isReady,\n install(app) {\n const router = this;\n app.component('RouterLink', RouterLink);\n app.component('RouterView', RouterView);\n app.config.globalProperties.$router = router;\n Object.defineProperty(app.config.globalProperties, '$route', {\n enumerable: true,\n get: () => unref(currentRoute),\n });\n // this initial navigation is only necessary on client, on server it doesn't\n // make sense because it will create an extra unnecessary navigation and could\n // lead to problems\n if (isBrowser &&\n // used for the initial navigation client side to avoid pushing\n // multiple times when the router is used in multiple apps\n !started &&\n currentRoute.value === START_LOCATION_NORMALIZED) {\n // see above\n started = true;\n push(routerHistory.location).catch(err => {\n if ((process.env.NODE_ENV !== 'production'))\n warn('Unexpected error when starting the router:', err);\n });\n }\n const reactiveRoute = {};\n for (const key in START_LOCATION_NORMALIZED) {\n Object.defineProperty(reactiveRoute, key, {\n get: () => currentRoute.value[key],\n enumerable: true,\n });\n }\n app.provide(routerKey, router);\n app.provide(routeLocationKey, shallowReactive(reactiveRoute));\n app.provide(routerViewLocationKey, currentRoute);\n const unmountApp = app.unmount;\n installedApps.add(app);\n app.unmount = function () {\n installedApps.delete(app);\n // the router is not attached to an app anymore\n if (installedApps.size < 1) {\n // invalidate the current navigation\n pendingLocation = START_LOCATION_NORMALIZED;\n removeHistoryListener && removeHistoryListener();\n removeHistoryListener = null;\n currentRoute.value = START_LOCATION_NORMALIZED;\n started = false;\n ready = false;\n }\n unmountApp();\n };\n // TODO: this probably needs to be updated so it can be used by vue-termui\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n addDevtools(app, router, matcher);\n }\n },\n };\n // TODO: type this as NavigationGuardReturn or similar instead of any\n function runGuardQueue(guards) {\n return guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve());\n }\n return router;\n}\nfunction extractChangingRecords(to, from) {\n const leavingRecords = [];\n const updatingRecords = [];\n const enteringRecords = [];\n const len = Math.max(from.matched.length, to.matched.length);\n for (let i = 0; i < len; i++) {\n const recordFrom = from.matched[i];\n if (recordFrom) {\n if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\n updatingRecords.push(recordFrom);\n else\n leavingRecords.push(recordFrom);\n }\n const recordTo = to.matched[i];\n if (recordTo) {\n // the type doesn't matter because we are comparing per reference\n if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\n enteringRecords.push(recordTo);\n }\n }\n }\n return [leavingRecords, updatingRecords, enteringRecords];\n}\n\n/**\n * Returns the router instance. Equivalent to using `$router` inside\n * templates.\n */\nfunction useRouter() {\n return inject(routerKey);\n}\n/**\n * Returns the current route location. Equivalent to using `$route` inside\n * templates.\n */\nfunction useRoute(_name) {\n return inject(routeLocationKey);\n}\n\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","\n\n\n","import deepEqual from \"deep-equal\";\nimport { unref } from \"vue\";\nexport class Stabilisateur {\n n;\n valeurAntérieure;\n constructor(n = 1000) {\n this.n = n;\n }\n async stabiliser(args) {\n // Arrêter tout de suite si ces valeurs ont déjà été soumises\n if (deepEqual(args, this.valeurAntérieure))\n return false;\n this.valeurAntérieure = args;\n return new Promise((résoudre) => {\n setTimeout(() => résoudre(deepEqual(args, this.valeurAntérieure)), this.n);\n });\n }\n}\nexport const débalerRéfsArgs = (args) => {\n return Object.fromEntries(Object.entries(args).map(([clef, val]) => [clef, unref(val)]));\n};\n//# sourceMappingURL=utils.js.map","import { computed, isRef, onUnmounted, ref, watchEffect, } from \"vue\";\nimport { Stabilisateur, débalerRéfsArgs } from \"./utils.js\";\nexport const suivre = (fonc, args = {}, défaut) => {\n const val = ref(défaut);\n const stab = new Stabilisateur();\n let fOublier = undefined;\n const dynamique = Object.values(args).some((x) => isRef(x));\n const définis = computed(() => {\n const argsFinaux = débalerRéfsArgs(args);\n if (Object.values(argsFinaux).every((x) => x !== undefined)) {\n return argsFinaux;\n }\n else {\n return undefined;\n }\n });\n watchEffect(async () => {\n if (fOublier) {\n fOublier(); // Très bizare... `await` ici détruit la réactivité\n fOublier = undefined;\n }\n if (définis.value) {\n // Si les intrants sont dynamiques, stabiliser suite à la première exécution\n if (dynamique && fOublier) {\n const stable = await stab.stabiliser(définis.value);\n if (!stable)\n return;\n }\n fOublier = await fonc({\n ...définis.value,\n f: (x) => (val.value = x),\n });\n }\n else {\n val.value = undefined;\n }\n });\n onUnmounted(async () => {\n if (fOublier)\n await fOublier();\n });\n return computed(() => val.value);\n};\n//# sourceMappingURL=suivi.js.map","import {computed, ref, type ComputedRef, type MaybeRef} from 'vue';\n\nimport {suivre as follow} from '@constl/vue';\nimport {onMounted} from 'vue';\nimport {useOrbiter} from '/@/plugins/orbiter/utils';\n\nexport const useUserProfilePhoto = (\n accountId?: MaybeRef,\n): ComputedRef => {\n const {orbiter} = useOrbiter();\n\n const profilePic = follow(orbiter.listenForProfilePhotoChange, {accountId});\n const defaultAvatar = ref();\n onMounted(async () => {\n const svg = await [\n import('/@/assets/undraw/undraw_pic_profile_re_7g2h.svg'),\n import('/@/assets/undraw/undraw_profile_pic_re_iwgo.svg'),\n ][Math.floor(Math.random() * 2)]; // Let's keep it fair and random :)\n defaultAvatar.value = svg.default;\n });\n\n const profilePicSrc = computed(() => {\n if (profilePic.value) {\n return URL.createObjectURL(new Blob([profilePic.value], {type: 'image'}));\n } else {\n return defaultAvatar.value;\n }\n });\n return profilePicSrc;\n};\n","\n\n","\n\n\n","\n\n\n\n\n","\n\n\n","\n\n\n","/**\n * @packageDocumentation\n *\n * A suite of util methods that provides efficient validation.\n *\n * Detection of IPFS Paths and identifiers in URLs is a two-stage process:\n *\n * 1. `pathPattern`/`pathGatewayPattern`/`subdomainGatewayPattern` regex is applied to quickly identify potential candidates\n * 2. proper CID validation is applied to remove false-positives\n *\n * @example\n *\n * ```TypeScript\n * import * as isIPFS from 'is-ipfs'\n *\n * isIPFS.multihash('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.multihash('noop') // false\n *\n * isIPFS.cid('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true (CIDv0)\n * isIPFS.cid('bafybeiasb5vpmaounyilfuxbd3lryvosl4yefqrfahsb2esg46q6tu6y5q') // true (CIDv1 in Base32)\n * isIPFS.cid('zdj7WWeQ43G6JJvLWQWZpyHuAMq6uYWRjkBXFad11vE2LHhQ7') // true (CIDv1 in Base58btc)\n * isIPFS.cid('noop') // false\n *\n * isIPFS.base32cid('bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va') // true\n * isIPFS.base32cid('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // false\n *\n * isIPFS.url('https://ipfs.io/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.url('https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR?filename=guardian.jpg') // true\n * isIPFS.url('https://ipfs.io/ipns/github.com') // true\n * isIPFS.url('https://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.ipfs.dweb.link') // true\n * isIPFS.url('http://en.wikipedia-on-ipfs.org.ipfs.localhost:8080') // true\n * isIPFS.url('https://github.com/ipfs/js-ipfs/blob/master/README.md') // false\n * isIPFS.url('https://google.com') // false\n *\n * isIPFS.path('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.path('/ipfs/QmbcBPAwCDxRMB1Qe7CRQmxdrTSkxKwM9y6rZw2FjGtbsb/?weird-filename=test.jpg') // true\n * isIPFS.path('/ipns/github.com') // true\n * isIPFS.path('/ipfs/js-ipfs/blob/master/README.md') // false\n *\n * isIPFS.urlOrPath('https://ipfs.io/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.urlOrPath('https://ipfs.io/ipns/github.com') // true\n * isIPFS.urlOrPath('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.urlOrPath('/ipns/github.com') // true\n * isIPFS.urlOrPath('https://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.ipfs.dweb.link') // true\n * isIPFS.urlOrPath('https://google.com') // false\n *\n * isIPFS.ipfsUrl('https://ipfs.io/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.ipfsUrl('https://ipfs.io/ipfs/invalid-hash') // false\n *\n * isIPFS.ipnsUrl('https://ipfs.io/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // false\n * isIPFS.ipnsUrl('https://ipfs.io/ipns/github.com') // true\n *\n * isIPFS.ipfsPath('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true\n * isIPFS.ipfsPath('/ipfs/invalid-hash') // false\n *\n * isIPFS.ipnsPath('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // false\n * isIPFS.ipnsPath('/ipns/github.com') // true\n *\n * isIPFS.cidPath('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o/path/to/file') // true\n * isIPFS.cidPath('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o/') // true\n * isIPFS.cidPath('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // false\n * isIPFS.cidPath('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // false\n * isIPFS.cidPath('/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o/file') // false\n *\n * isIPFS.subdomain('http://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.ipfs.dweb.link') // true\n * isIPFS.subdomain('http://bafybeiabc2xofh6tdi6vutusorpumwcikw3hf3st4ecjugo6j52f6xwc6q.ipns.dweb.link') // true\n * isIPFS.subdomain('http://www.bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.ipfs.dweb.link') // false\n * isIPFS.subdomain('http://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.dweb.link') // false\n *\n * isIPFS.ipfsSubdomain('http://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.ipfs.dweb.link') // true\n * isIPFS.ipfsSubdomain('http://bafybeie5gq4jxvzmsym6hjlwxej4rwdoxt7wadqvmmwbqi7r27fclha2va.dweb.link') // false\n *\n * isIPFS.ipnsSubdomain('http://bafybeiabc2xofh6tdi6vutusorpumwcikw3hf3st4ecjugo6j52f6xwc6q.ipns.dweb.link') // true\n * isIPFS.ipnsSubdomain('http://bafybeiabc2xofh6tdi6vutusorpumwcikw3hf3st4ecjugo6j52f6xwc6q.dweb.link') // false\n * isIPFS.ipnsSubdomain('http://QmcNioXSC1bfJj1dcFErhUfyjFzoX2HodkRccsFFVJJvg8.ipns.dweb.link') // false\n * isIPFS.ipnsSubdomain('http://en.wikipedia-on-ipfs.org.ipns.localhost:8080') // true (assuming DNSLink)\n * isIPFS.ipnsSubdomain('http://en-wikipedia--on--ipfs-org.ipns.localhost:8080') // true (assuming inlined DNSLink)\n * isIPFS.ipnsSubdomain('http://hostname-without-tld-.ipns.dweb.link') // false (not a CID, invalid DNS label)\n *\n * isIPFS.multiaddr('/ip4/127.0.0.1/udp/1234') // true\n * isIPFS.multiaddr('/ip4/127.0.0.1/udp/1234/http') // true\n * isIPFS.multiaddr('/ip6/::1/udp/1234') // true\n * isIPFS.multiaddr('ip6/::1/udp/1234') // false\n * isIPFS.multiaddr('/yoloinvalid/::1/udp/1234') // false\n *\n * isIPFS.peerMultiaddr('/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4') // true\n * isIPFS.peerMultiaddr('/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4') // true (legacy notation)\n * isIPFS.peerMultiaddr('/ip4/127.0.0.1/tcp/1234/ws/p2p/QmUjNmr8TgJCn1Ao7DvMy4cjoZU15b9bwSCBLE3vwXiwgj') // true\n * isIPFS.peerMultiaddr('/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4/p2p-circuit/p2p/QmUjNmr8TgJCn1Ao7DvMy4cjoZU15b9bwSCBLE3vwXiwgj') // true\n * isIPFS.peerMultiaddr('/dnsaddr/bootstrap.libp2p.io') // false (key missing, needs additional DNS lookup to tell if this is valid)\n * isIPFS.peerMultiaddr('/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN') // true (key present, ip and port can be resolved later)\n * isIPFS.peerMultiaddr('/ip4/127.0.0.1/udp/1234') // false (key missing)\n * ```\n */\nimport * as mafmt from '@multiformats/mafmt';\nimport { multiaddr } from '@multiformats/multiaddr';\nimport { URL } from 'iso-url';\nimport { base32 } from 'multiformats/bases/base32';\nimport { base58btc } from 'multiformats/bases/base58';\nimport { CID } from 'multiformats/cid';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { toString as uint8ArrayToString } from 'uint8arrays/to-string';\nexport const pathGatewayPattern = /^https?:\\/\\/[^/]+\\/(ip[fn]s)\\/([^/?#]+)/;\nexport const pathPattern = /^\\/(ip[fn]s)\\/([^/?#]+)/;\nconst defaultProtocolMatch = 1;\nconst defaultHashMath = 2;\n// CID, libp2p-key or DNSLink\nexport const subdomainGatewayPattern = /^https?:\\/\\/([^/]+)\\.(ip[fn]s)\\.[^/?]+/;\nconst subdomainIdMatch = 1;\nconst subdomainProtocolMatch = 2;\n// Fully qualified domain name (FQDN) that has an explicit .tld suffix\nconst fqdnWithTld = /^(([a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9])\\.)+([a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9])$/;\nfunction isMultihash(hash) {\n const formatted = convertToString(hash);\n if (formatted === false) {\n return false;\n }\n try {\n Digest.decode(base58btc.decode(`z${formatted}`));\n }\n catch {\n return false;\n }\n return true;\n}\nfunction isMultiaddr(input) {\n try {\n return Boolean(multiaddr(input));\n }\n catch {\n return false;\n }\n}\nfunction isBase32EncodedMultibase(hash) {\n try {\n let cid;\n if (isString(hash)) {\n cid = CID.parse(hash);\n }\n else {\n cid = CID.asCID(hash);\n }\n if (cid == null) {\n return false;\n }\n base32.decode(cid.toString());\n }\n catch {\n return false;\n }\n return true;\n}\nfunction isCID(hash) {\n try {\n if (isString(hash)) {\n return Boolean(CID.parse(hash));\n }\n if (hash instanceof Uint8Array) {\n return Boolean(CID.decode(hash));\n }\n return Boolean(CID.asCID(hash)); // eslint-disable-line no-new\n }\n catch {\n return false;\n }\n}\n/**\n * @param {string | Uint8Array | Multiaddr} input\n */\nfunction isPeerMultiaddr(input) {\n return isMultiaddr(input) && mafmt.P2P.matches(input);\n}\n/**\n * @param {string | Uint8Array} input\n * @param {RegExp | string} pattern\n * @param {number} [protocolMatch=1]\n * @param {number} [hashMatch=2]\n */\nfunction isIpfs(input, pattern, protocolMatch = defaultProtocolMatch, hashMatch = defaultHashMath) {\n const formatted = convertToString(input);\n if (formatted === false) {\n return false;\n }\n const match = formatted.match(pattern);\n if (match == null) {\n return false;\n }\n if (match[protocolMatch] !== 'ipfs') {\n return false;\n }\n let hash = match[hashMatch];\n if (hash != null && pattern === subdomainGatewayPattern) {\n // when doing checks for subdomain context\n // ensure hash is case-insensitive\n // (browsers force-lowercase authority component anyway)\n hash = hash.toLowerCase();\n }\n return isCID(hash);\n}\n/**\n *\n * @param {string | Uint8Array} input\n * @param {string | RegExp} pattern\n * @param {number} [protocolMatch=1]\n * @param {number} [hashMatch=1]\n */\nfunction isIpns(input, pattern, protocolMatch = defaultProtocolMatch, hashMatch = defaultHashMath) {\n const formatted = convertToString(input);\n if (formatted === false) {\n return false;\n }\n const match = formatted.match(pattern);\n if (match == null) {\n return false;\n }\n if (match[protocolMatch] !== 'ipns') {\n return false;\n }\n let ipnsId = match[hashMatch];\n if (ipnsId != null && pattern === subdomainGatewayPattern) {\n // when doing checks for subdomain context\n // ensure ipnsId is case-insensitive\n // (browsers force-lowercase authority compotent anyway)\n ipnsId = ipnsId.toLowerCase();\n // Check if it is cidv1\n if (isCID(ipnsId))\n return true;\n // Check if it looks like FQDN\n try {\n if (!ipnsId.includes('.') && ipnsId.includes('-')) {\n // name without tld, assuming its inlined into a single DNS label\n // (https://github.com/ipfs/in-web-browsers/issues/169)\n // en-wikipedia--on--ipfs-org → en.wikipedia-on-ipfs.org\n ipnsId = ipnsId.replace(/--/g, '@').replace(/-/g, '.').replace(/@/g, '-');\n }\n // URL implementation in web browsers forces lowercase of the hostname\n const { hostname } = new URL(`http://${ipnsId}`); // eslint-disable-line no-new\n // Check if potential FQDN has an explicit TLD\n return fqdnWithTld.test(hostname);\n }\n catch (e) {\n return false;\n }\n }\n return true;\n}\n/**\n * @param {any} input\n */\nfunction isString(input) {\n return typeof input === 'string';\n}\n/**\n * @param {Uint8Array | string} input\n */\nfunction convertToString(input) {\n if (input instanceof Uint8Array) {\n return uint8ArrayToString(input, 'base58btc');\n }\n if (isString(input)) {\n return input;\n }\n return false;\n}\n/**\n * Returns `true` if the provided `url` string includes a valid IPFS subdomain\n * (case-insensitive CIDv1) or `false` otherwise.\n */\nexport const ipfsSubdomain = (url) => isIpfs(url, subdomainGatewayPattern, subdomainProtocolMatch, subdomainIdMatch);\n/**\n * Returns `true` if the provided `url` string looks like a valid IPNS subdomain\n * (CIDv1 with `libp2p-key` multicodec or something that looks like a FQDN, for\n * example `en.wikipedia-on-ipfs.org.ipns.localhost:8080`) or `false` otherwise.\n *\n * **Note:** `ipnsSubdomain` method works in offline mode: it does not perform\n * actual IPNS record lookup over DHT or other content routing method. It may\n * return false-positives:\n *\n * - To ensure IPNS record exists, make a call to `/api/v0/name/resolve?arg=`\n * - To ensure DNSLink exists, make a call to `/api/v0/dns?arg=`\n */\nexport const ipnsSubdomain = (url) => isIpns(url, subdomainGatewayPattern, subdomainProtocolMatch, subdomainIdMatch);\n/**\n * Returns `true` if the provided `url` string includes a valid IPFS, looks like\n * an IPNS/DNSLink subdomain or `false` otherwise.\n */\nexport const subdomain = (url) => ipfsSubdomain(url) || ipnsSubdomain(url);\n/**\n * Returns `true` if the provided string is a valid IPFS url or `false`\n * otherwise.\n */\nexport const ipfsUrl = (url) => isIpfs(url, pathGatewayPattern) || ipfsSubdomain(url);\n/**\n * Returns `true` if the provided string is a valid IPNS url or `false`\n * otherwise.\n */\nexport const ipnsUrl = (url) => isIpns(url, pathGatewayPattern) || ipnsSubdomain(url);\n/**\n * Returns `true` if the provided string is a valid IPFS or IPNS url or `false`\n * otherwise.\n */\nexport const url = (url) => ipfsUrl(url) || ipnsUrl(url) || subdomain(url);\nexport const path = (path) => isIpfs(path, pathPattern) || isIpns(path, pathPattern);\n/**\n * Returns `true` if the provided string or `Uint8Array` is a valid `multihash`\n * or `false` otherwise.\n */\nexport { isMultihash as multihash };\n/**\n * Returns `true` if the provided `string`, [`Multiaddr`](https://github.com/multiformats/js-multiaddr)\n * or `Uint8Array` represents a valid multiaddr or `false` otherwise.\n */\nexport { isMultiaddr as multiaddr };\n/**\n * Returns `true` if the provided `string`, [`Multiaddr`](https://github.com/multiformats/js-multiaddr)\n * or `Uint8Array` represents a valid libp2p peer multiaddr (matching [`P2P`\n * format from `mafmt`](https://github.com/multiformats/js-mafmt#api)) or\n * `false` otherwise.\n */\nexport { isPeerMultiaddr as peerMultiaddr };\n/**\n * Returns `true` if the provided string, `Uint8Array` or [`CID`](https://github.com/multiformats/js-multiformats/#readme)\n * object represents a valid [CID](https://docs.ipfs.io/guides/concepts/cid/) or\n * `false` otherwise.\n */\nexport { isCID as cid };\n/**\n * Returns `true` if the provided string is a valid `CID` in Base32 encoding or\n * `false` otherwise.\n */\nexport const base32cid = (cid) => (isCID(cid) && isBase32EncodedMultibase(cid));\n/**\n * Returns `true` if the provided string is a valid IPFS or IPNS path or `false`\n * otherwise.\n */\nexport const ipfsPath = (path) => isIpfs(path, pathPattern);\n/**\n * Returns `true` if the provided string is a valid IPNS path or `false`\n * otherwise.\n */\nexport const ipnsPath = (path) => isIpns(path, pathPattern);\n/**\n * Returns `true` if the provided string is a valid IPFS or IPNS url or path or\n * `false` otherwise.\n */\nexport const urlOrPath = (x) => url(x) || path(x);\n/**\n * Returns `true` if the provided string is a valid \"CID path\" (IPFS path\n * without `/ipfs/` prefix) or `false` otherwise.\n */\nexport const cidPath = (path) => isString(path) && !isCID(path) && isIpfs(`/ipfs/${path}`, pathPattern);\n//# sourceMappingURL=index.js.map","\n\n\n","\n\n\n","\n\n\n\n","import {createRouter, createWebHashHistory, type RouteRecordRaw} from 'vue-router';\n\nimport AboutPage from '/@/views/aboutPage.vue';\nimport AccountPage from '/@/views/accountPage.vue';\nimport BuildingPage from '/@/views/buildingPage.vue';\nimport HomePage from '/@/views/homePage.vue';\nimport InitPage from '/@/views/initPage.vue';\nimport UploadPage from '/@/views/uploadPage.vue';\nimport ReleasePage from '/@/views/releasePage.vue';\n\nconst routes: Array = [\n {\n path: '/',\n component: HomePage,\n },\n {\n path: '/account',\n name: 'Account',\n component: AccountPage,\n },\n {\n path: '/upload',\n name: 'Upload',\n component: UploadPage,\n },\n {\n path: '/init',\n name: 'Create Website',\n component: InitPage,\n },\n {\n path: '/admin',\n name: 'Admin Website',\n component: BuildingPage,\n },\n {\n path: '/music',\n component: BuildingPage,\n },\n {\n path: '/movies',\n component: BuildingPage,\n },\n {\n path: '/tv-shows',\n component: BuildingPage,\n },\n {\n path: '/about',\n component: AboutPage,\n },\n {\n path: '/release/:category/:contentCID',\n name: 'Release',\n component: ReleasePage,\n props: true,\n },\n];\n\nconst routeur = createRouter({\n history: createWebHashHistory(),\n routes,\n});\n\nexport default routeur;\n","import {createApp} from 'vue';\nimport App from './App.vue';\nimport {inscrireExtentions} from './plugins/inscription/browser.js';\nimport routeur from './plugins/router';\n\nconst app = createApp(App);\n\ninscrireExtentions(app);\napp.use(routeur);\n\napp.mount('#app');\n"],"file":"index-D8bkrfVo.js"} \ No newline at end of file diff --git a/index.html b/index.html index 568a375..7973a3f 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ Riff.CC - + diff --git a/webfontloader-CUhL5jdM.js b/webfontloader-DsQjSDUy.js similarity index 99% rename from webfontloader-CUhL5jdM.js rename to webfontloader-DsQjSDUy.js index 4c2edb4..ee5fbe6 100644 --- a/webfontloader-CUhL5jdM.js +++ b/webfontloader-DsQjSDUy.js @@ -1,2 +1,2 @@ -import{d as Ft}from"./index-CQYrZ5gL.js";function Pt(w,S){for(var _=0;_h[d]})}}}return Object.freeze(Object.defineProperty(w,Symbol.toStringTag,{value:"Module"}))}var at={exports:{}};(function(w){(function(){function S(t,n,e){return t.call.apply(t.bind,arguments)}function _(t,n,e){if(!t)throw Error();if(2=n.f?a():t.fonts.load(ht(n.a),n.h).then(function(c){1<=c.length?r():setTimeout(f,25)},function(){a()})}f()}),o=null,s=new Promise(function(r,a){o=setTimeout(a,n.f)});Promise.race([s,i]).then(function(){o&&(clearTimeout(o),o=null),n.g(n.a)},function(){n.j(n.a)})};function V(t,n,e,i,o,s,r){this.v=t,this.B=n,this.c=e,this.a=i,this.s=r||"BESbswy",this.f={},this.w=o||3e3,this.u=s||null,this.m=this.j=this.h=this.g=null,this.g=new A(this.c,this.s),this.h=new A(this.c,this.s),this.j=new A(this.c,this.s),this.m=new A(this.c,this.s),t=new g(this.a.c+",serif",p(this.a)),t=b(t),this.g.a.style.cssText=t,t=new g(this.a.c+",sans-serif",p(this.a)),t=b(t),this.h.a.style.cssText=t,t=new g("serif",p(this.a)),t=b(t),this.j.a.style.cssText=t,t=new g("sans-serif",p(this.a)),t=b(t),this.m.a.style.cssText=t,C(this.g),C(this.h),C(this.j),C(this.m)}var N={D:"serif",C:"sans-serif"},W=null;function X(){if(W===null){var t=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);W=!!t&&(536>parseInt(t[1],10)||parseInt(t[1],10)===536&&11>=parseInt(t[2],10))}return W}V.prototype.start=function(){this.f.serif=this.j.a.offsetWidth,this.f["sans-serif"]=this.m.a.offsetWidth,this.A=d(),Q(this)};function J(t,n,e){for(var i in N)if(N.hasOwnProperty(i)&&n===t.f[N[i]]&&e===t.f[N[i]])return!0;return!1}function Q(t){var n=t.g.a.offsetWidth,e=t.h.a.offsetWidth,i;(i=n===t.f.serif&&e===t.f["sans-serif"])||(i=X()&&J(t,n,e)),i?d()-t.A>=t.w?X()&&J(t,n,e)&&(t.u===null||t.u.hasOwnProperty(t.a.c))?I(t,t.v):I(t,t.B):mt(t):I(t,t.v)}function mt(t){setTimeout(h(function(){Q(this)},t),50)}function I(t,n){setTimeout(h(function(){E(this.g.a),E(this.h.a),E(this.j.a),E(this.m.a),n(this.a)},t),0)}function k(t,n,e){this.c=t,this.a=n,this.f=0,this.m=this.j=!1,this.s=e}var O=null;k.prototype.g=function(t){var n=this.a;n.g&&y(n.f,[n.a.c("wf",t.c,p(t).toString(),"active")],[n.a.c("wf",t.c,p(t).toString(),"loading"),n.a.c("wf",t.c,p(t).toString(),"inactive")]),j(n,"fontactive",t),this.m=!0,Y(this)},k.prototype.h=function(t){var n=this.a;if(n.g){var e=D(n.f,n.a.c("wf",t.c,p(t).toString(),"active")),i=[],o=[n.a.c("wf",t.c,p(t).toString(),"loading")];e||i.push(n.a.c("wf",t.c,p(t).toString(),"inactive")),y(n.f,i,o)}j(n,"fontinactive",t),Y(this)};function Y(t){--t.f==0&&t.j&&(t.m?(t=t.a,t.g&&y(t.f,[t.a.c("wf","active")],[t.a.c("wf","loading"),t.a.c("wf","inactive")]),j(t,"active")):R(t.a))}function Z(t){this.j=t,this.a=new vt,this.h=0,this.f=this.g=!0}Z.prototype.load=function(t){this.c=new T(this.j,t.context||this.j),this.g=t.events!==!1,this.f=t.classes!==!1,yt(this,new pt(this.c,t),t)};function wt(t,n,e,i,o){var s=--t.h==0;(t.f||t.g)&&setTimeout(function(){var r=o||null,a=i||null||{};if(e.length===0&&s)R(n.a);else{n.f+=e.length,s&&(n.j=s);var f,c=[];for(f=0;fh[d]})}}}return Object.freeze(Object.defineProperty(w,Symbol.toStringTag,{value:"Module"}))}var at={exports:{}};(function(w){(function(){function S(t,n,e){return t.call.apply(t.bind,arguments)}function _(t,n,e){if(!t)throw Error();if(2=n.f?a():t.fonts.load(ht(n.a),n.h).then(function(c){1<=c.length?r():setTimeout(f,25)},function(){a()})}f()}),o=null,s=new Promise(function(r,a){o=setTimeout(a,n.f)});Promise.race([s,i]).then(function(){o&&(clearTimeout(o),o=null),n.g(n.a)},function(){n.j(n.a)})};function V(t,n,e,i,o,s,r){this.v=t,this.B=n,this.c=e,this.a=i,this.s=r||"BESbswy",this.f={},this.w=o||3e3,this.u=s||null,this.m=this.j=this.h=this.g=null,this.g=new A(this.c,this.s),this.h=new A(this.c,this.s),this.j=new A(this.c,this.s),this.m=new A(this.c,this.s),t=new g(this.a.c+",serif",p(this.a)),t=b(t),this.g.a.style.cssText=t,t=new g(this.a.c+",sans-serif",p(this.a)),t=b(t),this.h.a.style.cssText=t,t=new g("serif",p(this.a)),t=b(t),this.j.a.style.cssText=t,t=new g("sans-serif",p(this.a)),t=b(t),this.m.a.style.cssText=t,C(this.g),C(this.h),C(this.j),C(this.m)}var N={D:"serif",C:"sans-serif"},W=null;function X(){if(W===null){var t=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);W=!!t&&(536>parseInt(t[1],10)||parseInt(t[1],10)===536&&11>=parseInt(t[2],10))}return W}V.prototype.start=function(){this.f.serif=this.j.a.offsetWidth,this.f["sans-serif"]=this.m.a.offsetWidth,this.A=d(),Q(this)};function J(t,n,e){for(var i in N)if(N.hasOwnProperty(i)&&n===t.f[N[i]]&&e===t.f[N[i]])return!0;return!1}function Q(t){var n=t.g.a.offsetWidth,e=t.h.a.offsetWidth,i;(i=n===t.f.serif&&e===t.f["sans-serif"])||(i=X()&&J(t,n,e)),i?d()-t.A>=t.w?X()&&J(t,n,e)&&(t.u===null||t.u.hasOwnProperty(t.a.c))?I(t,t.v):I(t,t.B):mt(t):I(t,t.v)}function mt(t){setTimeout(h(function(){Q(this)},t),50)}function I(t,n){setTimeout(h(function(){E(this.g.a),E(this.h.a),E(this.j.a),E(this.m.a),n(this.a)},t),0)}function k(t,n,e){this.c=t,this.a=n,this.f=0,this.m=this.j=!1,this.s=e}var O=null;k.prototype.g=function(t){var n=this.a;n.g&&y(n.f,[n.a.c("wf",t.c,p(t).toString(),"active")],[n.a.c("wf",t.c,p(t).toString(),"loading"),n.a.c("wf",t.c,p(t).toString(),"inactive")]),j(n,"fontactive",t),this.m=!0,Y(this)},k.prototype.h=function(t){var n=this.a;if(n.g){var e=D(n.f,n.a.c("wf",t.c,p(t).toString(),"active")),i=[],o=[n.a.c("wf",t.c,p(t).toString(),"loading")];e||i.push(n.a.c("wf",t.c,p(t).toString(),"inactive")),y(n.f,i,o)}j(n,"fontinactive",t),Y(this)};function Y(t){--t.f==0&&t.j&&(t.m?(t=t.a,t.g&&y(t.f,[t.a.c("wf","active")],[t.a.c("wf","loading"),t.a.c("wf","inactive")]),j(t,"active")):R(t.a))}function Z(t){this.j=t,this.a=new vt,this.h=0,this.f=this.g=!0}Z.prototype.load=function(t){this.c=new T(this.j,t.context||this.j),this.g=t.events!==!1,this.f=t.classes!==!1,yt(this,new pt(this.c,t),t)};function wt(t,n,e,i,o){var s=--t.h==0;(t.f||t.g)&&setTimeout(function(){var r=o||null,a=i||null||{};if(e.length===0&&s)R(n.a);else{n.f+=e.length,s&&(n.j=s);var f,c=[];for(f=0;f=b.f?e():a.fonts.load(fa(b.a),b.h).then(function(a){1<=a.length?d():setTimeout(f,25)},function(){e()})}f()}),e=null,f=new Promise(function(a,d){e=setTimeout(d,b.f)});Promise.race([f,d]).then(function(){e&&(clearTimeout(e),e=null);b.g(b.a)},function(){b.j(b.a)})};function Q(a,b,c,d,e,f,g){this.v=a;this.B=b;this.c=c;this.a=d;this.s=g||\"BESbswy\";this.f={};this.w=e||3E3;this.u=f||null;this.m=this.j=this.h=this.g=null;this.g=new M(this.c,this.s);this.h=new M(this.c,this.s);this.j=new M(this.c,this.s);this.m=new M(this.c,this.s);a=new G(this.a.c+\",serif\",J(this.a));a=O(a);this.g.a.style.cssText=a;a=new G(this.a.c+\",sans-serif\",J(this.a));a=O(a);this.h.a.style.cssText=a;a=new G(\"serif\",J(this.a));a=O(a);this.j.a.style.cssText=a;a=new G(\"sans-serif\",J(this.a));a=\nO(a);this.m.a.style.cssText=a;N(this.g);N(this.h);N(this.j);N(this.m)}var R={D:\"serif\",C:\"sans-serif\"},S=null;function T(){if(null===S){var a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent);S=!!a&&(536>parseInt(a[1],10)||536===parseInt(a[1],10)&&11>=parseInt(a[2],10))}return S}Q.prototype.start=function(){this.f.serif=this.j.a.offsetWidth;this.f[\"sans-serif\"]=this.m.a.offsetWidth;this.A=q();U(this)};\nfunction la(a,b,c){for(var d in R)if(R.hasOwnProperty(d)&&b===a.f[R[d]]&&c===a.f[R[d]])return!0;return!1}function U(a){var b=a.g.a.offsetWidth,c=a.h.a.offsetWidth,d;(d=b===a.f.serif&&c===a.f[\"sans-serif\"])||(d=T()&&la(a,b,c));d?q()-a.A>=a.w?T()&&la(a,b,c)&&(null===a.u||a.u.hasOwnProperty(a.a.c))?V(a,a.v):V(a,a.B):ma(a):V(a,a.v)}function ma(a){setTimeout(p(function(){U(this)},a),50)}function V(a,b){setTimeout(p(function(){v(this.g.a);v(this.h.a);v(this.j.a);v(this.m.a);b(this.a)},a),0)};function W(a,b,c){this.c=a;this.a=b;this.f=0;this.m=this.j=!1;this.s=c}var X=null;W.prototype.g=function(a){var b=this.a;b.g&&w(b.f,[b.a.c(\"wf\",a.c,J(a).toString(),\"active\")],[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\"),b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\")]);K(b,\"fontactive\",a);this.m=!0;na(this)};\nW.prototype.h=function(a){var b=this.a;if(b.g){var c=y(b.f,b.a.c(\"wf\",a.c,J(a).toString(),\"active\")),d=[],e=[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\")];c||d.push(b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\"));w(b.f,d,e)}K(b,\"fontinactive\",a);na(this)};function na(a){0==--a.f&&a.j&&(a.m?(a=a.a,a.g&&w(a.f,[a.a.c(\"wf\",\"active\")],[a.a.c(\"wf\",\"loading\"),a.a.c(\"wf\",\"inactive\")]),K(a,\"active\")):L(a.a))};function oa(a){this.j=a;this.a=new ja;this.h=0;this.f=this.g=!0}oa.prototype.load=function(a){this.c=new ca(this.j,a.context||this.j);this.g=!1!==a.events;this.f=!1!==a.classes;pa(this,new ha(this.c,a),a)};\nfunction qa(a,b,c,d,e){var f=0==--a.h;(a.f||a.g)&&setTimeout(function(){var a=e||null,m=d||null||{};if(0===c.length&&f)L(b.a);else{b.f+=c.length;f&&(b.j=f);var h,l=[];for(h=0;h=b.f?e():a.fonts.load(fa(b.a),b.h).then(function(a){1<=a.length?d():setTimeout(f,25)},function(){e()})}f()}),e=null,f=new Promise(function(a,d){e=setTimeout(d,b.f)});Promise.race([f,d]).then(function(){e&&(clearTimeout(e),e=null);b.g(b.a)},function(){b.j(b.a)})};function Q(a,b,c,d,e,f,g){this.v=a;this.B=b;this.c=c;this.a=d;this.s=g||\"BESbswy\";this.f={};this.w=e||3E3;this.u=f||null;this.m=this.j=this.h=this.g=null;this.g=new M(this.c,this.s);this.h=new M(this.c,this.s);this.j=new M(this.c,this.s);this.m=new M(this.c,this.s);a=new G(this.a.c+\",serif\",J(this.a));a=O(a);this.g.a.style.cssText=a;a=new G(this.a.c+\",sans-serif\",J(this.a));a=O(a);this.h.a.style.cssText=a;a=new G(\"serif\",J(this.a));a=O(a);this.j.a.style.cssText=a;a=new G(\"sans-serif\",J(this.a));a=\nO(a);this.m.a.style.cssText=a;N(this.g);N(this.h);N(this.j);N(this.m)}var R={D:\"serif\",C:\"sans-serif\"},S=null;function T(){if(null===S){var a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent);S=!!a&&(536>parseInt(a[1],10)||536===parseInt(a[1],10)&&11>=parseInt(a[2],10))}return S}Q.prototype.start=function(){this.f.serif=this.j.a.offsetWidth;this.f[\"sans-serif\"]=this.m.a.offsetWidth;this.A=q();U(this)};\nfunction la(a,b,c){for(var d in R)if(R.hasOwnProperty(d)&&b===a.f[R[d]]&&c===a.f[R[d]])return!0;return!1}function U(a){var b=a.g.a.offsetWidth,c=a.h.a.offsetWidth,d;(d=b===a.f.serif&&c===a.f[\"sans-serif\"])||(d=T()&&la(a,b,c));d?q()-a.A>=a.w?T()&&la(a,b,c)&&(null===a.u||a.u.hasOwnProperty(a.a.c))?V(a,a.v):V(a,a.B):ma(a):V(a,a.v)}function ma(a){setTimeout(p(function(){U(this)},a),50)}function V(a,b){setTimeout(p(function(){v(this.g.a);v(this.h.a);v(this.j.a);v(this.m.a);b(this.a)},a),0)};function W(a,b,c){this.c=a;this.a=b;this.f=0;this.m=this.j=!1;this.s=c}var X=null;W.prototype.g=function(a){var b=this.a;b.g&&w(b.f,[b.a.c(\"wf\",a.c,J(a).toString(),\"active\")],[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\"),b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\")]);K(b,\"fontactive\",a);this.m=!0;na(this)};\nW.prototype.h=function(a){var b=this.a;if(b.g){var c=y(b.f,b.a.c(\"wf\",a.c,J(a).toString(),\"active\")),d=[],e=[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\")];c||d.push(b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\"));w(b.f,d,e)}K(b,\"fontinactive\",a);na(this)};function na(a){0==--a.f&&a.j&&(a.m?(a=a.a,a.g&&w(a.f,[a.a.c(\"wf\",\"active\")],[a.a.c(\"wf\",\"loading\"),a.a.c(\"wf\",\"inactive\")]),K(a,\"active\")):L(a.a))};function oa(a){this.j=a;this.a=new ja;this.h=0;this.f=this.g=!0}oa.prototype.load=function(a){this.c=new ca(this.j,a.context||this.j);this.g=!1!==a.events;this.f=!1!==a.classes;pa(this,new ha(this.c,a),a)};\nfunction qa(a,b,c,d,e){var f=0==--a.h;(a.f||a.g)&&setTimeout(function(){var a=e||null,m=d||null||{};if(0===c.length&&f)L(b.a);else{b.f+=c.length;f&&(b.j=f);var h,l=[];for(h=0;h